[
  {
    "path": ".gitignore",
    "content": "### Python ###\n# Byte-compiled / optimized / DLL files\npaas-ce/paas/paas/media/saas_files/\n__pycache__/\n*.py[cod]\n*$py.class\npaas-runtime/\npaas-agent/\nlogs/\n# C extensions\n*.so\ngitpush.sh\n\n# Distribution / packaging\n.Python\n# build/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n### Python Patch ###\n.venv/\n\n### Python.VirtualEnv Stack ###\n# Virtualenv\n# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/\n[Bb]in\n[Ii]nclude\n[Ll]ib64\n[Ll]ocal\n[Ss]cripts\npyvenv.cfg\npip-selfcheck.json\n\npackage-lock.json\nnode_modules\nopen_paas_unittest\n\n.DS_Store\n.vscode/\n# End of https://www.gitignore.io/api/python\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company.  All rights reserved.\nIf you have downloaded a copy of the 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) binary from Tencent, please note that the 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) binary is licensed under the MIT License.\nIf you have downloaded a copy of the 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) source code from Tencent, please note that 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms.  Your integration of 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition).\nA copy of the MIT License is included in this file.\n\n\nOther dependencies and licenses:\n\nOpen Source Software Licensed Under the BSD 3-Clause License:\nThe below software in this distribution may have been modified by THL A29 Limited (“Tencent Modifications”). All Tencent Modifications are Copyright (C) 2017-2018 THL A29 Limited.\n----------------------------------------------------------------------------------------\n1. Django  1.8.11\nCopyright (c) Django Software Foundation and individual contributors.\nAll rights reserved.\n\n2. Flask  0.10.1\nCopyright (c) 2013 by Armin Ronacher and contributors.  See AUTHORS for more details.\nSome rights reserved.\n\n3. Flask-Babel  0.11.2\nCopyright (c) 2010 by Armin Ronacher.\nSome rights reserved.\n\n4. qs  6.5.2\nCopyright (c) 2014 Nathan LaFreniere and other contributors.\nAll rights reserved.\n\n\nTerms of the BSD 3-Clause License:\n--------------------------------------------------------------------\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\nRedistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\nNeither the name of [copyright holder] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n\nOpen Source Software Licensed Under the Apache License, Version 2.0:\n----------------------------------------------------------------------------------------\n1.  select2  3.5.3\nCopyright 2014 Igor Vaynberg\n\n2. bootstrap  2.0.4\nCopyright 2012 Twitter, Inc.\n\n3. bootstrap  2.3.2\nCopyright 2012 Twitter, Inc.\n\n4. webfontloader  1.6.24\nCopyright (c) 2010 Adobe Systems Incorporated, Google Incorporated.\n\n5. bootstrap-treeview  1.0.2\nCopyright 2013 Jonathan Miles\n\n6. bootstrap-datepicker  master\nCopyright 2012 Stefan Petre\nImprovements by Andrew Rowls\n\n7. bootstrap-paginator  1.0.0\nCopyright 2013 Yun Lai\n\n8. sls-admin-vue  v1_async_router\nCopyright  sailengsi sailengsi@126.com\n\n9. NUTZ-ONEKEY  4.0\nCopyright © 2018 - Kerbores. All Rights Reserved\n\n10. solr  7.0.0\nCopyright 2006-2017 The Apache Software Foundation\n\n\nTerms of the Apache License, Version 2.0:\n---------------------------------------------------\nApache License  Version 2.0, January 2004  http://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n\n“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n\n“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n\n“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.\n\n“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n\n“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n\n“Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n\n“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n\n“Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”\n\n“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n\n2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n\n3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n\na) \tYou must give any other recipients of the Work or Derivative Works a copy of this License; and\n\nb) \tYou must cause any modified files to carry prominent notices stating that You changed the files; and\n\nc) \tYou must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n\nd) \tIf the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\n\nYou may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n\n5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n\n6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n\n8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\nTo apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"[]\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives.\n\nCopyright [yyyy] [name of copyright owner]\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\nhttp://www.apache.org/licenses/LICENSE-2.0\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\n\n\nOpen Source Software Licensed under the Boost Software License-Version 1.0:\n--------------------------------------------------------------------\n1. Boost  1.34.1\nCopyright 2000-2003 Beman Dawes\n\n\nTerms of the Boost Software License-Version 1.0:\n--------------------------------------------------------------------\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nOpen Source Software Licensed Under the MIT License:\n----------------------------------------------------------------------------------------\n1. jquery  1.7.2\nCopyright (c) 2011 John Resig, http://jquery.com/\n\n2. jquery  1.8.2\nCopyright 2012 jQuery Foundation and other contributors\nhttp://jquery.com/\n\n3. jquery  1.8.3\nCopyright 2012 jQuery Foundation and other contributors\nhttp://jquery.com/\n\n4. jquery  1.9.1\nCopyright 2012 jQuery Foundation and other contributors\nhttp://jquery.com/\n\n5. jquery  1.10.2\nCopyright 2013 jQuery Foundation and other contributors\nhttp://jquery.com/\n\n6. jquery  1.11.0\nCopyright 2014 jQuery Foundation and other contributors\nhttp://jquery.com/\n\n7. jquery  1.11.2\nCopyright 2014 jQuery Foundation and other contributors\nhttp://jquery.com/\n\n8. jquery-json  2.6.0\nCopyright 2009-2011 Brantley Harris\nCopyright 2010-2016 Timo Tijhof\n\n9. bootstrap  3.1.1\nCopyright (c) 2011-2014 Twitter, Inc\n\n10. bootstrap  3.3.4\nCopyright (c) 2011-2015 Twitter, Inc\n\n11. bootstrap  3.3.5\nCopyright (c) 2011-2015 Twitter, Inc\n\n12. bootstrap  3.3.7\nCopyright (c) 2011-2016 Twitter, Inc.\n\n13. jquery-ui  1.10.4\nCopyright 2014 jQuery Foundation and other contributors,\nhttp://jqueryui.com/\n\n14. jquery-ui  1.11.0\nCopyright 2014 jQuery Foundation and other contributors,\nhttp://jqueryui.com/\n\n15. path-to-regexp  1.7.0\nCopyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n16. polyfill\nCopyright (c) 2013 Philip Walton <http://philipwalton.com>\n\n17. html5shiv  3.7.3\nCopyright (c) 2014 Alexander Farkas (aFarkas)\n\n18. bootstrap-daterangepicker  2.0.5\nCopyright (c) 2012-2015 Dan Grossman\n\n19. moment  2.10.3\nCopyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors\n\n20. noty  2.4.1\nCopyright (c) 2012 Nedim Arabacı\n\n21. samrtmenus  1.0.1\nCopyright (c) Vasil Dinkov, Vadikom Web Ltd.\n\n22. handlebars.js  3.0.1\nCopyright (C) 2011-2014 by Yehuda Katz\n\n23. handlebars.js  4.0.5\nCopyright (C) 2011-2015 by Yehuda Katz\n\n24. jquery-cookie  1.4.1\nCopyright 2014 Klaus Hartl\n\n25. requirejs  2.1.15\nCopyright (c) 2010-2014, The Dojo Foundation\n\n26. jquery.zeroclipboard  0.2.0\nCopyright (c) 2014 James M. Greene\n\n27. switchery  0.8.2\nCopyright (c) 2013-2015 Alexander Petkov\n\n28. underscore  1.8.3\nCopyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative\nReporters & Editors\n\n29. List.js  1.3.0 Copyright (c) 2011-2014 Jonny Strömberg, jonnystromberg.com\n\n30. jquery-validation  1.11.0\nCopyright (c) 2013 Jörn Zaefferer\n\n31. Respond  1.4.2\nCopyright (c) 2012 Scott Jehl\n\n32. metismenu  2.6.1\nCopyright (c) 2015 Osman Nuri Okumuş\n\n33. easy-pie-chart  2.1.6\nCopyright (c) 2013 Robert Fleischmann\n\n34. radialIndicator  1.2.0\nCopyright (c) <2015> <Sudhanshu Yadav>\n\n35. vue  2.4.2\nCopyright (c) 2013-present, Yuxi (Evan) You\n\n36. lodash  2.4.1\nCopyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors http://underscorejs.org/\n\n37. Sugar  1.4.1\nCopyright © 2011 Andrew Plummer\n\n38. jquery-mousewheel  3.0.6\nCopyright 2011, Brandon Aaron (http://brandonaaron.net/)\n\n39. jquery-mousewheel  3.1.12\nCopyright (c) 2013, Brandon Aaron (http://brandon.aaron.sh)\n\n40. DataTables  1.10.7\nCopyright (c) 2008-2013 SpryMedia Limited\nhttp://datatables.net\n\n41. tablesorter  2.24.6\nCopyright (c) 2007 Christian Bach\n\n42. schedule  0.4.2\nCopyright (c) 2013 Daniel Bader (http://dbader.org)\n\n43. c3  0.4.10\nCopyright (c) 2013 Masayuki Tanaka\n\n44. Gritter for jQuery  1.7.4\nCopyright (c) 2012 Jordan Boesch\n\n45. daterangepicker  2.0.0\nCopyright (c) 2012-2014 Dan Grossman\n\n46. bootstrap-sortable  1.11.2\nCopyright (c) 2013 Matúš Brliť (drvic10k), bootstrap-sortable contributors\nCopyright (c) 2011-2013 Tim Wood, Iskren Chernev, Moment.js contributors\n\n47. bootstrap-switch  3.3.4\nCopyright (c) 2013-2015 The authors of Bootstrap Switch\n\n48. clipboard.js  1.5.15\n© Zeno Rocha\n\n49. jquery-mobile  1.4.2\nCopyright 2010, 2014 jQuery Foundation, Inc. and other contributors,\nhttp://jquery.com/\n\n50. element  2.4.1\nCopyright (c) 2016 ElemeFE\n\n51. art-template  4.13.0\nCopyright (c) 2016 糖饼\n\n52. axios  0.18.0\nCopyright (c) 2014-present Matt Zabriskie\n\n53. jsplumb  2.7.3\nCopyright (c) 2010 - 2014 jsPlumb, http://jsplumbtoolkit.com/\n\n54. plotly.js  1.39.4\nCopyright (c) 2018 Plotly, Inc\n\n55. popper.js  1.2.0\nCopyright © 2016 Federico Zivolo and contributors\n\n56. vue-router  3.0.1\nCopyright (c) 2013-2016 Evan You\n\n57. vee-validate  2.1.0-beta.6\nCopyright (c) Abdelrahman Awad logaretm1@gmail.com\n\n58. vuex  3.0.1\nCopyright (c) 2015-2016 Evan You\n\n59. Vue.Draggable  2.16.0\nCopyright (c) 2016 David Desmaisons\n\n60. ngx-treeview  master\nCopyright (c) 2015-2017\n\n61. redux-devtools-extension  2.15.0\nCopyright (c) 2015-present Mihail Diordiev\n\n62. nunuStudio  v0.8.9.22-alpha\nCopyright (c) 2018 Tentone\n\n\n\nTerms of the MIT License:\n--------------------------------------------------------------------\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# OpsAny运维PAAS平台\n\nOpsAny-PaaS是基于腾讯开源[bk-PaaS](https://github.com/Tencent/bk-PaaS) 二次开发的运维开发平台，让运维开发者可以方便快捷地创建、开发、部署和管理运维SaaS应用。**你可以把PaaS看作是Spring CLoud这样的开发框架**，它提供了应用引擎、前后台开发框架、API网关、统一登录、公共组件等模块，帮助用户快速、低成本、免运维地构建支撑工具和运营系统（统称为SaaS应用），它为一个SaaS应用从创建到部署，再到后续的维护管理提供了完善的自动化和自助化服务，从而使开发者可以集中精力关注SaaS应用的逻辑开发。\n\n> 如果你正在使用Python Django框架进行开发工作，几乎可以零成本的切换到PaaS上来，不要怀疑，现在就部署进行实践吧。\n\n## 变更介绍\n\n我们在bk-PaaS的基础上做了以下修改和变更：\n\n- 升级Python2到Python 3.12。\n- 升级Django1.8到Django 4.2.16。\n- 修改了appengine的saas应用上传和部署逻辑，支持指定SAAS的Secret Key，不使用白名单机制。\n- 修改了login部分逻辑，用于和统一权限配合，增加MFA，移动端适配等。\n- 修改了paasagent的agent代码，增加了配置参数，修改了默认的SAAS配置文件。\n- 增加了esb的API接口等。\n- 增加了MFA、多语言、动态主题等。\n- 增加WebSocket功能，用于堡垒机底层通信。\n- 增加了容器化部署支持和一键部署脚本。\n- 增加了OpsAny前后端开发框架，前端基于Vue3.0。\n\n由于OpsAny使用的RBAC，而bk-paas后期采用的是ABAC，所以在权限控制方便需要进行改造后即可完全兼容腾讯蓝鲸。\n\n## 我们提供的产品和服务\n\n1. 【产品】OpsAny数字化运维平台，你可以理解OpsAny是：轻量级腾讯蓝鲸平台。\n2. 【服务】提供开源软件源代码级别商业技术支持。\n\n## 代码结构\n\n源码组成如下：\n\n```\npaas-ce\n├── paas 包含4大服务（python、Django）\n│   ├── appengine  应用引擎 端口：8000\n│   ├── esb        API网关 端口：8002\n│   ├── login      统一登录服务 端口：8003\n│   └── paas       开发中心&web工作台 端口：8001\n└── paasagent      应用引擎Agent (golang) 端口：4245 Nginx：8085\n└── websocket      堡垒机服务 端口：8004\n```\n\n## Docker容器在线部署\n\n> 仅部署PaaS平台需要2C、4G内存的主机，部署OpsAny SaaS基础功能需要4C、8G内存的干净主机。生产使用推荐8C、16G内存。\n\n1. 安装Docker和初始化使用的软件包\n\n- 【CentOS 7】部署\n\n  安装Docker和MySQL客户端\n\n  ```\n  curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo\n  curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\n  yum install -y git wget docker-ce mariadb jq python3 python3-pip python3-devel ntpdate\n  systemctl enable --now docker\n  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime\n  ntpdate time1.aliyun.com\n  ```\n\n- 【CentOS 8】部署\n\n  安装Docker和MySQL客户端\n\n  ```\n  dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\n  dnf -y install docker-ce --nobest\n  dnf -y install mariadb jq git\n  systemctl enable --now docker\n  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime\n  ```\n\n- 【Ubuntu】 部署\n\n    安装Docker和MySQL客户端\n\n    ```\n    # step 1: 安装必要的一些系统工具\n    sudo apt-get update\n    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common\n    # step 2: 安装GPG证书\n    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -\n    # Step 3: 写入软件源信息\n    sudo add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable\"\n    # Step 4: 更新并安装Docker-CE\n    sudo apt-get -y update\n    sudo apt-get -y install docker-ce jq wget mysql-client git ntpdate\n    systemctl enable --now docker\n    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime\n    ntpdate time1.aliyun.com\n    ```\n\n2. 选择一个代码仓库克隆代码\n\n```\n# Gitee\ncd /opt && sudo git clone https://gitee.com/unixhot/opsany-paas.git\n\n# Github\ncd /opt && sudo git clone https://github.com/unixhot/opsany-paas.git\n```\n\n3. 修改配置文件\n\n> 注意！注意！注意！切记修改install.config中所有的IP地址，可以批量查找替换。\n\n```\ncd /opt/opsany-paas/install && cp install.config.example install.config\nvim /opt/opsany-paas/install/install.config\n\n# 安装OpsAny的本机内网IP地址。请批量查找替换将192.168.56.11修改为部署OpsAny的本机IP地址。\nLOCAL_IP=\"192.168.56.11\"\n\n# 访问OpsAny PaaS的域名，如果是在内网访问请修改为和LOCAL_IP一样，如果是外网访问，请修改为真实访问的域名或者公网IP。\n安装后暂不支持修改，此配置会作为Cookie的作用域的域名，所以如果配置的和访问的不同，会导致无法通过验证。官方文档中有修改域名的办法。\nDOMAIN_NAME=\"192.168.56.11\"\n```\n\n4. 执行安装脚本进行PAAS平台部署\n\n```\ncd /opt/opsany-paas/install/\n./paas-install.sh \n```\n\n5. 访问域名测试，默认用户名admin 密码admin\n\n  http://192.168.56.11/\n\n> 再次强调，访问的地址和在install.config中配置的DOMAIN_NAME必须一致，不一致无法登录。\n\n6. 验证PAAS部署\n\n- 访问平台：查看【开发中心】-【服务器信息】 查看状态\n- 访问平台：查看【开发中心】-【第三方服务】 查看状态\n\n\n## 部署OpsAny社区版本\n\n安装完毕OpsAny PaaS之后，就可以进行运维开发工作了，不过PaaS仅仅是一个开发平台，并没有任何运维功能。你也可以继续部署OpsAny社区版本，进行日常运维工作，OpsAny社区版是OpsAny产品团队，自主研发的智能运维平台：支持自定义插件，支持用户使用Python、Shell、Powershell编写例如工具脚本、资产采集插件、智能巡检插件、指标采集插件等。\n\n> OpsAny社区版本v2.3.0正式发布 >> [免费安装使用](https://docs.opsany.com/deploy/base-install/)\n\n## 寻求商业化合作\n\n在OpsAny官网首页的右侧浮窗，可以点击【微信咨询】，联系我们。\n\n"
  },
  {
    "path": "docs/CONTRIBUTING.md",
    "content": "# Contributing to bk-PaaS\n\n我们欢迎[report Issues](https://github.com/unixhot/opsany-paas/issues) 或者 [pull requests](https://github.com/unixhot/opsany-paas/pulls)。 在贡献代码之前请阅读以下指引。\n\n## 问题管理\n\n我们用 Github Issues 去跟踪 public bugs 和 feature requests。\n\n### 查找已知的issue 优先\n\n请查找已存在或者相类似的issue，从而保证不存在冗余。\n\n### 新建 Issues\n\n新建issues 时请提供详细的描述、截屏或者短视频来辅助我们定位问题\n\n### [分支管理](./VERSION.md)\n\n###  Pull Requests\n\n我们欢迎大家贡献代码来使我们的PaaS更加强大，代码团队会监控所有的pull request, 我们会做相应的代码检查和测试，测试通过之后我们就会接纳PR ，但是不会立即合并到master分支。\n\n在完成一个pr之前请做一下确认:\n\n1. 从 `master` 或者 `hotfix` fork 你自己的分支。\n2. 在修改了代码之后请修改对应的文档和注释。\n3. 在新建的文件中请加入license 和copy right申明。\n4. 确保一致的代码风格。\n5. 做充分的测试。\n6. 然后，你可以提交你的代码到 `dev` 或者 `hotfix` 分支。\n\n\n## 代码协议\n\n[MIT LICENSE](https://github.com/unixhot/opsany-paas/blob/master/LICENSE) 为OpsAny-PaaS的开源协议，您贡献的代码也会受此协议保护。\n\n"
  },
  {
    "path": "docs/ISSUE_TEMPLATE.md",
    "content": "<!--\n感谢提交issue, 在提交前, 请回答下列的问题, 以便更高效地沟通.\n\n另外, 可以先根据关键字搜索issue, 可能已经有其他用户提交过了.\n\n如果是一个 bug反馈. 尽可能提供详细的信息, 否则我们可能无法帮助到你\n\n如果是一个 需求提交, 请对需求进行详细描述.\n\nThanks for filing an issue! Before hitting the button, please answer these questions. It's helpful to search the existing GitHub issues first. It's likely that another user has already reported the issue you're facing, or it's a known issue that we're already aware of\n\nIf this is a BUG REPORT, please:\n  - Fill in as much of the template below as you can.  If you leave out\n    information, we can't help you as well.\n\nIf this is a FEATURE REQUEST, please:\n  - Describe *in detail* the feature/behavior/change you'd like to see.\n-->\n\n\n**是`BUG反馈`还是`需求提交`(Is this a BUG REPORT or FEATURE REQUEST)?** (choose one):\n\n\n**PaaS/PaaSAgent版本(The versions used):**\n\n\n**发生了什么(What happened):**\n\n\n**期望是什么(What you expected to happen):**\n\n\n**如何复现(How to reproduce it):**\n\n\n**相关的日志详情(访问日志及应用日志: paas.log/login.log/esb.log/esb_api.log)和截图等(Log & Screenshot):**\n\n\n**备注(Anything else we need to know):** \n\n\n\n"
  },
  {
    "path": "docs/PULL_REQUEST_TEMPLATE.md",
    "content": "<!--\n请保证PR标题明确清晰, 易于理解\nKeep PR title verbose enough\n\n相关issue可以是 #编号 或者贴 issue链接\n`Fixes #<issue number>`, or `Fixes (paste link of issue)`.\n-->\n\n\n## 变更点(Changes)\n\n- xxxx\n\n## 相关issues (Which issues this PR fixes)\n\n- Fixes #\n\n## 备注(Special notes)\n\n"
  },
  {
    "path": "docs/README.md",
    "content": "# PaaS开发环境部署文档\n\n提示：本文档适合开发者在本地开发主机部署PaaS开发环境，大部分情况下是不需要进行PaaS开发的。如果仅仅是开发SaaS平台，不需要参考此文档，可以使用容器化部署OpsAny，然后查看官方文档-开发手册-SaaS平台开发手册即可。\n\n## 系统要求\n\n- 操作系统：Ubunut 20.04、22.04、24.04\n- 数据库: MySQL、MongoDB、Redis、Elasticsearch\n- 消息队列：RabbitMQ、Redis\n- Python版本: Python 3.12.4(PaaS使用)、Python 3.7.17（部分SaaS使用）\n\n1. 部署说明\n\n- `paas-ce` web侧一共5个项目: paas/appengine/login/esb/websocket; 均是基于Django开发的\n- 项目部署过程一致; 过程中需要注意每个项目的配置文件及拉起的端口号(每个项目需要使用不同的端口号)\n- 可以部署在同一台机器上, 使用不同端口号即可。\n- 后续所有操作均以Ubuntu操作系统为准，其它操作系统请自行调整。\n\n2. 预分配端口号\n\n预先分配每个服务的端口号, 假设部署机器IP为`192.168.0.111`\n\n- appengine: 192.168.0.111:8000 \n- paas: 192.168.0.111:8001\n- esb: 192.168.0.111:8002\n- login: 192.168.0.111:8003 \n- websocket: 192.168.0.111:8004\n\n服务间是相互依赖的, 所以部署配置文件中需要将预先分配的服务地址填写到对应变量中。\n\n## 开发环境准备（Ubuntu）\n\n1. 基础软件包安装和Redis、RabbitMQ、Nginx、Mariadb等安装。\n\n```\napt-get update\napt install -y make build-essential libssl-dev zlib1g-dev \\\nlibbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \\\nlibncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \\\nlibgdbm-dev libnss3-dev libedit-dev libc6-dev screen wget uuid unzip \\\nredis-server mariadb-server rabbitmq-server nginx supervisor tcl-dev \\\nlibmariadb-dev-compat libmariadb-dev libsasl2-dev libldap2-dev libssl-dev \\\ngcc libjpeg-dev libtiff5-dev libpng-dev libfreetype6-dev\n```\n\n2. 初始化MySQL数据库。\n\n```\n# 修改配置文件\n[root@linux-node1 ~]# vim vim /etc/mysql/mariadb.conf.d/50-server.cnf \nbind-address            = 192.168.0.111\ndefault-storage-engine = innodb\ninnodb_file_per_table\ncollation-server = utf8_general_ci\ninit-connect = 'SET NAMES utf8'\ncharacter-set-server = utf8\n\n# 启动MySQL并进行初始化\n[root@linux-node1 ~]# systemctl enable mariadb && systemctl start mariadb\n[root@linux-node1 ~]# mysql_secure_installation \n\n# 创建数据库\n[root@linux-node1 ~]# mysql -u root -p\nMariaDB [(none)]> CREATE DATABASE IF NOT EXISTS opsany_paas DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\nMariaDB [(none)]> CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\nMariaDB [(none)]> CREATE USER opsany@'%' identified by \"\\\"${MYSQL_OPSANY_PASSWORD}\\\"\";\nMariaDB [(none)]> grant all on opsany_paas.* to opsany@'%';\nMariaDB [(none)]> grant all on opsany_proxy.* to opsany@'%';\nMariaDB [(none)]> exit;\n```\n\n3. 部署Redis数据库\n\n- 配置Redis\n\n```\n[root@linux-node1 ~]# vim /etc/redis/redis.conf\nbind 0.0.0.0\ndaemonize yes\nrequirepass 123456.coM\n```\n\n- 启动Redis\n\n```\n[root@linux-node1 ~]# systemctl enable --now redis-server\n```\n\n4. 部署RabbitMQ消息队列\n\n- 设置开启启动，并启动RabbitMQ\n\n```\n[root@linux-node1 ~]# systemctl enable rabbitmq-server.service\n[root@linux-node1 ~]# systemctl start rabbitmq-server.service\n```\n\n- 添加用户。\n\n创建一个opsany用户，密码为123456.coM。注意实际使用中进行密码修改，这里设置的用户名和密码在后面配置OpenStack组件的时候需要在配置文件里面设置。\n```\n[root@linux-node1 ~]# rabbitmqctl add_user opsany 123456.coM\nCreating user \"opsany\" ...\n[root@linux-node1 ~]# rabbitmqctl set_user_tags opsany administrator\n```\n\n- 给刚才创建的openstack用户，创建权限。\n\n```\n[root@linux-node1 ~]# rabbitmqctl set_permissions opsany \".*\" \".*\" \".*\"\nSetting permissions for user \"opsany\" in vhost \"/\" ...\n```\n\n- 启用Web监控插件\n\nRabbitMQ自带了一个Web监控插件，可以通过Web界面监控RabbitMQ的运行状态。同时也提供了HTTP API。可以方便的集成到Nagios、Zabbix等监控平台上。\nWeb监控插件启用后就可以通过http://IP:15672/来访问web管理界面。\n\n```\n[root@linux-node1 ~]# rabbitmq-plugins list\n[root@linux-node1 ~]# rabbitmq-plugins enable rabbitmq_management\n[root@linux-node1 ~]# systemctl restart rabbitmq-server\n（注：如果主机名不能解析，rabbitMQ将无法启动。在生产应用时建议设置为集群模式，建议三个节点。1个硬盘节点、两个内存节点。）\n[root@linux-node1 ~]# lsof -i:15672\nCOMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME\nbeam    2620 rabbitmq   15u  IPv4  16805      0t0  TCP *:15672 (LISTEN)\n```\n默认情况下RabbitMQ服务使用5672端口，而Web管理插件监听15672端口，直接在浏览器输入http://192.168.56.11:15672\n\n> RabbitMQ默认的用户名和密码均为guest。之前创建的openstack的用户是无法通过Web界面登录的。\n\n\n5. 克隆代码并准备Python环境\n\n已知CentOS 7由于GCC版本比较低，无法成功编译Python3.12，推荐使用Ubuntu 22.04。\n\n- 5.1 准备Python3环境\n\n```\n# 编译安装Python 3.12.4\n[root@linux-node1 ~]# yum install -y abc abc-devel\n[root@linux-node1 ~]# cd /usr/local/src\n[root@linux-node1 src]# wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz\n[root@linux-node1 src]# tar zxf Python-3.12.4.tgz\n[root@linux-node1 src]# cd Python-3.12.4/\n[root@linux-node1 Python-3.6.8]# ./configure --prefix=/usr/local/Python-3.12.4 --enable-ipv6 --enable-optimizations\n[root@linux-node1 Python-3.6.8]# make && make install\n\n# 编译安装Python 3.7.17\n[root@linux-node1 ~]# yum install -y abc abc-devel\n[root@linux-node1 ~]# cd /usr/local/src\n[root@linux-node1 src]# wget https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz\n[root@linux-node1 src]# tar zxf Python-3.7.17.tgz\n[root@linux-node1 src]# cd Python-3.7.17/\n[root@linux-node1 Python-3.6.8]# ./configure --prefix=/usr/local/Python-3.7.17 --enable-ipv6 --enable-optimizations\n[root@linux-node1 Python-3.6.8]# make && make install\n```\n\n- 5.2 确认Python版本\n\n```\n[root@ops ~]# ln -s /usr/local/Python-3.12.4 /opt/py312\n[root@ops ~]# /opt/py312/bin/python3 --version\nPython 3.12.4\n[root@ops ~]# ln -s /usr/local/Python-3.7.17 /opt/py37\n[root@ops ~]# /opt/py37/bin/python3 --version\nPython 3.7.17\n```\n\n- 5.3 克隆项目代码\n\n```\n[root@linux-node1 ~]# cd /opt\n[root@linux-node1 opt]# git clone https://gitee.com/unixhot/opsany-paas.git\n[root@linux-node1 opt]# cd /opt/opsany-paas/\n[root@linux-node1 opt]# /opt/py312/bin/pip3 install virtualenv -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n[root@linux-node1 opt]# mkdir -p /opt/opsany-paas/.runtime\n```\n\n## 部署paas服务\n\n### 1.初始化Python虚拟环境\n```\n# 创建Python虚拟环境\n[root@linux-node1 opt]# screen -S paas\n[root@linux-node1 opt]# cd /opt/opsany-paas/.runtime/\n[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv paas\n\n# 使用Python虚拟环境\n[root@linux-node1 .runtime]# source /opt/opsany-paas/.runtime/paas/bin/activate\n\n# 安装依赖软件包\n(paas) [root@linux-node1 .runtime]# cd /opt/opsany-paas/paas-ce/paas/paas/\n(paas) [root@linux-node1 .runtime]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n```\n\n### 2.配置paas\n\n- 修改数据库配置，可以根据需求修改域名和端口，这里保持默认。\n```\n(paas) [root@linux-node1 paas]# cp conf/settings_development.py.sample\n(paas) [root@linux-node1 paas]# vim conf/settings_development.py\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '192.168.0.111',\n        'PORT': '3306',\n    }\n}\n\nPAAS_DOMAIN = '192.168.0.111'\nBK_COOKIE_DOMAIN = '192.168.0.111'\n```\n\n- 进行数据库初始化（如果遇到权限问题请检查数据库授权）\n\n```\n(paas) [root@linux-node1 paas]# python manage.py migrate\n(paas) [root@linux-node1 paas]# python manage.py runserver --skip-checks 0.0.0.0:8001\n```\n\n- 退出Screen(Ctrl + A + D)\n\n## 部署login服务\n\n### 1.初始化Python虚拟环境\n```\n# 创建Python虚拟环境\n[root@linux-node1 ~]# screen -S login\n[root@linux-node1 ~]# cd /opt/opsany-paas/.runtime/\n[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv login\n\n# 使用Python虚拟环境\n[root@linux-node1 .runtime]# source /opt/opsany-paas/.runtime/login/bin/activate\n(login) [root@linux-node1 .runtime]# cd /opt/opsany-paas/paas-ce/paas/login/\n\n# 安装依赖软件包\n(login) [root@linux-node1 login]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n```\n\n### 2.配置login\n\n- 修改数据库配置，可以根据需求修改域名和端口，这里保持默认。\n\n```\n(login) [root@linux-node1 login]# cp conf/settings_development.py.sample conf/settings_development.py\n(login) [root@linux-node1 login]# vim conf/settings_development.py\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'paas',\n        'PASSWORD': '123456.coM',\n        'HOST': '192.168.0.111',\n        'PORT': '3306',\n    }\n}\n# cookie访问域\nBK_COOKIE_DOMAIN = '192.168.0.111'\n```\n\n- 进行数据库初始化（如果遇到权限问题请检查数据库授权）\n\n```\n(login) [root@linux-node1 login]# python3 manage.py migrate\n(login) [root@linux-node1 login]# python3 manage.py runserver 0.0.0.0:8003\n```\n\n- 退出Screen(Ctrl + A + D)\n\n\n## 部署appengine服务\n\n### 1.初始化Python虚拟环境\n```\n# 创建Python虚拟环境\n[root@linux-node1 conf]# screen -S appengine\n[root@linux-node1 conf]# cd /opt/bk-paas/.runtime/\n[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv appengine\n\n# 使用Python虚拟环境\n[root@linux-node1 opt]# source /opt/bk-paas/.runtime/appengine/bin/activate\n\n# 安装依赖软件包\n(appengine) [root@linux-node1 paas-runtime]# cd /opt/opsany-paas/paas-ce/paas/appengine/\n(appengine) [root@linux-node1 appengine]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n```\n\n### 2.配置appengine\n\n- 修改数据库配置，可以根据需求修改域名和端口，这里保持默认。\n```\n (appengine) [root@linux-node1 appengine]# cp controller/settings_sample.py controller/settings.py\n(appengine) [root@linux-node1 appengine]# vim controller/settings.py\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n```\n\n- 进行数据库初始化（如果遇到权限问题请检查数据库授权）\n\n```\n(appengine) [root@linux-node1 appengine]# python manage.py migrate\n(appengine) [root@linux-node1 appengine]# python manage.py runserver 0.0.0.0:8000\n```\n\n- 退出Screen(Ctrl + A + D)\n\n## 部署esb服务\n\n### 1.初始化Python虚拟环境\n```\n# 创建Python虚拟环境\n[root@linux-node1 ~]# screen -S esb\n[root@linux-node1 ~]# cd /opt/opsany-paas/.runtime/\n[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv esb\n\n# 使用Python虚拟环境\n[root@linux-node1 .runtime]# source /opt/opsany-paas/.runtime/esb/bin/activate\n\n# 安装依赖软件包\n(esb) [root@linux-node1 esb]# cd /opt/opsany-paas/paas-ce/paas/esb/\n(esb) [root@linux-node1 esb]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n```\n\n### 2.配置esb\n\n- 修改数据库配置，可以根据需求修改域名和端口，这里保持默认。\n```\n(esb) [root@linux-node1 esb]# cp configs/default_template.py configs/default.py\n(esb) [root@linux-node1 esb]# vim configs/default.py \nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n```\n\n- 进行数据库初始化（如果遇到权限问题请检查数据库授权）\n\n```\n(esb) [root@linux-node1 esb]# python manage.py migrate\n(esb) [root@linux-node1 esb]# python manage.py runserver 0.0.0.0:8002\n```\n\n- 退出Screen(Ctrl + A + D)\n\n### 配置Nginx访问\n\n```\n[root@ops ~]# cd /opt/opsany-paas/paas-ce/paas/examples/\n[root@ops examples]# cp nginx_paas.conf /etc/nginx/conf.d/\n[root@ops examples]# vim /etc/nginx/conf.d/nginx_paas.conf\n[root@paas-node-1 ~]# nginx -t\nnginx: the configuration file /etc/nginx/nginx.conf syntax is ok\nnginx: configuration file /etc/nginx/nginx.conf test is successful\n[root@paas-node-1 ~]# systemctl start nginx\n\n# 登录页面的图片需要放置在uploads下面，不然打开登录页图片无法展示。\n[root@paas-node-1 ~]# cp -r /opt/opsany-paas/install/uploads/login /opt/opsany/uploads/\n```\n\n### 访问PAAS平台。\n - http://192.168.0.111/\n - 默认用户名密码：admin admin\n"
  },
  {
    "path": "install/.gitkeep",
    "content": ""
  },
  {
    "path": "install/README.md",
    "content": "# 安装目录介绍\n\ninstall是OpsAny社区版的安装脚本存放目录，安装脚本会进行系统初始化，并使用Docker启动所有服务。\n\n## 安装脚本介绍\n\n- paas-install.sh：用来安装PaaS平台，注意，仅安装PaaS平台，没有任何运维应用平台。\n\n- saas-base-install.sh：用来安装OpsAny社区版，除了监控外的所有平台。\n\n- saas-monitor-install.sh：用来安装OpsAny社区版的监控平台，因为监控平台依赖ElasticSearch等服务，需要部署主机至少具有8G内存。\n\n- uninstall.sh：卸载脚本，注意：会删除掉本机的所有容器，所以OpsAny部署需要一个干净的独立的主机。\n\n## 目录介绍\n\n- conf：部署需要的配置文件存放位置\n\n- init：部署时需要的初始化数据目录。\n\n- uploads：此目录存放离线官方文档，和平台图片和图标等，部署时会移动到安装目录下，存放用户上传的数据。\n\n- opsany-xxx：所有以“opsany-”开头的目录是各个服务Docker镜像的构建目录，官方使用的镜像，均使用目录下的Dockerfile进行构建。如果需要部署在ARM CPU的主机上，需要重新构建镜像。\n\n## 国产信创支持\n\n如果您需要部署在国产化的主机和操作系统上，请联系我们进行商业支持。\n"
  },
  {
    "path": "install/conf/README.md",
    "content": "# 安装配置目录\n\n本目录下存放安装时的所有配置文件，安装脚本会将该目录复制到安装的目标路径后，使用sed将相关的配置项进行查找替换，然后所有OpsAny容器启动后，挂载的均为安装目录下的配置文件。\n"
  },
  {
    "path": "install/conf/consul.hcl",
    "content": "acl {\n   enabled = true\n   default_policy = \"deny\"\n   down_policy = \"extend-cache\"\n   tokens = {\n      master = \"CONSUL_TOKEN\"\n   }\n}\n"
  },
  {
    "path": "install/conf/daemon.json",
    "content": "{\n  \"registry-mirrors\": [\"https://dx5z2hy7.mirror.aliyuncs.com\"],\n   \"insecure-registries\" : [\"nexus.opsany.com:8009\"],\n  \"exec-opts\": [\"native.cgroupdriver=systemd\"],\n  \"log-driver\": \"json-file\",\n  \"log-opts\": {\n    \"max-size\": \"100m\"\n  }\n}\n"
  },
  {
    "path": "install/conf/elastic/apm-server.yml",
    "content": "apm-server:\n  host: \"0.0.0.0:8200\"\noutput.elasticsearch:\n  hosts: [\"http://ES_SERVER_IP:ELASTIC_PORT\"]\n  auth:\n    secret_token: \"APM_SECRET_TOKEN\"\n  username: \"ES_USER\"\n  password: \"ES_PASSWORD\"\n"
  },
  {
    "path": "install/conf/elastic/elasticsearch.yml",
    "content": "cluster.name: \"docker-cluster\"\nnetwork.host: 0.0.0.0\n"
  },
  {
    "path": "install/conf/elastic/heartbeat.yml",
    "content": "################### Heartbeat Configuration Example #########################\n\n# This file is an example configuration file highlighting only some common options.\n# The heartbeat.reference.yml file in the same directory contains all the supported options\n# with detailed comments. You can use it for reference.\n#\n# You can find the full configuration reference here:\n# https://www.elastic.co/guide/en/beats/heartbeat/index.html\n\n############################# Heartbeat ######################################\n\n# Define a directory to load monitor definitions from. Definitions take the form\n# of individual yaml files.\nheartbeat.config.monitors:\n  # Directory + glob pattern to search for configuration files\n  path: ${path.config}/monitors.d/*.yml\n  # If enabled, heartbeat will periodically check the config.monitors path for changes\n  reload.enabled: true\n  # How often to check for changes\n  reload.period: 5s\n\n# Configure monitors inline\n#heartbeat.monitors:\n#- type: icmp\n  # ID used to uniquely identify this monitor in elasticsearch even if the config changes\n#  id: icmp-test\n  # Human readable display name for this service in Uptime UI and elsewhere\n#  name: icmp test\n  # List or urls to query\n  # Configure task schedule\n#  schedule: '@every 10s'\n  # Total test connection and data exchange timeout\n  #timeout: 16s\n  # Name of corresponding APM service, if Elastic APM is in use for the monitored service.\n  #service.name: my-apm-service-name\n\n# ======================= Elasticsearch template setting =======================\n\nsetup.template.settings:\n  index.number_of_shards: 1\n  index.codec: best_compression\n  #_source.enabled: false\nsetup.template.enabled: true\nsetup.template.name: \"heartbeat-%{[agent.version]}-%{+yyyy.MM}\"\nsetup.template.pattern: \"heartbeat-%{[agent.version]}-*\"\nsetup.template.fields: \"${path.config}/fields.yml\"\n\n# ================================== General ===================================\n\n# The name of the shipper that publishes the network data. It can be used to group\n# all the transactions sent by a single shipper in the web interface.\n#name:\n\n# The tags of the shipper are included in their own field with each\n# transaction published.\n#tags: [\"service-X\", \"web-tier\"]\n\n# Optional fields that you can specify to add additional information to the\n# output.\n#fields:\n#  env: staging\n\n\n# =================================== Kibana ===================================\n\n# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.\n# This requires a Kibana endpoint configuration.\n#setup.kibana:\n\n  # Kibana Host\n  # Scheme and port can be left out and will be set to the default (http and 5601)\n  # In case you specify and additional path, the scheme is required: http://localhost:5601/path\n  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601\n  #host: \"localhost:5601\"\n\n  # Kibana Space ID\n  # ID of the Kibana Space into which the dashboards should be loaded. By default,\n  # the Default Space will be used.\n  #space.id:\n\n# =============================== Elastic Cloud ================================\n\n# These settings simplify using Heartbeat with the Elastic Cloud (https://cloud.elastic.co/).\n\n# The cloud.id setting overwrites the `output.elasticsearch.hosts` and\n# `setup.kibana.host` options.\n# You can find the `cloud.id` in the Elastic Cloud web UI.\n#cloud.id:\n\n# The cloud.auth setting overwrites the `output.elasticsearch.username` and\n# `output.elasticsearch.password` settings. The format is `<user>:<pass>`.\n#cloud.auth:\n\n# ================================== Outputs ===================================\n\n# Configure what output to use when sending the data collected by the beat.\n\n# ---------------------------- Elasticsearch Output ----------------------------\noutput.elasticsearch:\n  # Array of hosts to connect to.\n  hosts: [\"ES_SERVER_IP:9200\"]\n\n  # Protocol - either `http` (default) or `https`.\n  #protocol: \"https\"\n\n  # Authentication credentials - either API key or username/password.\n  #api_key: \"id:api_key\"\n  username: \"elastic\"\n  password: \"ES_PASSWORD\"\n  index: \"heartbeat-%{[agent.version]}-%{+yyyy.MM}\"\n\n\n# ------------------------------ Logstash Output -------------------------------\n#output.logstash:\n  # The Logstash hosts\n  #hosts: [\"localhost:5044\"]\n\n  # Optional SSL. By default is off.\n  # List of root certificates for HTTPS server verifications\n  #ssl.certificate_authorities: [\"/etc/pki/root/ca.pem\"]\n\n  # Certificate for SSL client authentication\n  #ssl.certificate: \"/etc/pki/client/cert.pem\"\n\n  # Client Certificate Key\n  #ssl.key: \"/etc/pki/client/cert.key\"\n\n# ================================= Processors =================================\n\nprocessors:\n  - add_observer_metadata:\n      # Optional, but recommended geo settings for the location Heartbeat is running in\n      #geo:\n        # Token describing this location\n        #name: us-east-1a\n        # Lat, Lon \"\n        #location: \"37.926868, -78.024902\"\n\n\n# ================================== Logging ===================================\n\n# Sets log level. The default log level is info.\n# Available log levels are: error, warning, info, debug\nlogging.level: error\n\n# At debug level, you can selectively enable logging only for some components.\n# To enable all selectors use [\"*\"]. Examples of other selectors are \"beat\",\n# \"publisher\", \"service\".\n#logging.selectors: [\"*\"]\n\n# ============================= X-Pack Monitoring ==============================\n# Heartbeat can export internal metrics to a central Elasticsearch monitoring\n# cluster.  This requires xpack monitoring to be enabled in Elasticsearch.  The\n# reporting is disabled by default.\n\n# Set to true to enable the monitoring reporter.\n#monitoring.enabled: false\n\n# Sets the UUID of the Elasticsearch cluster under which monitoring data for this\n# Heartbeat instance will appear in the Stack Monitoring UI. If output.elasticsearch\n# is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch.\n#monitoring.cluster_uuid:\n\n# Uncomment to send the metrics to Elasticsearch. Most settings from the\n# Elasticsearch output are accepted here as well.\n# Note that the settings should point to your Elasticsearch *monitoring* cluster.\n# Any setting that is not set is automatically inherited from the Elasticsearch\n# output configuration, so if you have the Elasticsearch output configured such\n# that it is pointing to your Elasticsearch monitoring cluster, you can simply\n# uncomment the following line.\n#monitoring.elasticsearch:\n\n# ============================== Instrumentation ===============================\n\n# Instrumentation support for the heartbeat.\n#instrumentation:\n    # Set to true to enable instrumentation of heartbeat.\n    #enabled: false\n\n    # Environment in which heartbeat is running on (eg: staging, production, etc.)\n    #environment: \"\"\n\n    # APM Server hosts to report instrumentation results to.\n    #hosts:\n    #  - http://localhost:8200\n\n    # API Key for the APM Server(s).\n    # If api_key is set then secret_token will be ignored.\n    #api_key:\n\n    # Secret token for the APM Server(s).\n    #secret_token:\n\n\n# ================================= Migration ==================================\n\n# This allows to enable 6.7 migration aliases\n#migration.6_to_7.enabled: true\n"
  },
  {
    "path": "install/conf/elastic/kibana.yml",
    "content": "elasticsearch.hosts: [ \"http://ES_SERVER_IP:ELASTIC_PORT\" ]\nserver.host: \"0.0.0.0\"\nelasticsearch.username: \"ES_USER\"\nelasticsearch.password: \"ES_PASSWORD\"\ni18n.locale: \"zh-CN\"\nmonitoring.ui.container.elasticsearch.enabled: true\n"
  },
  {
    "path": "install/conf/grafana/grafana.ini",
    "content": "##################### Grafana Configuration Example #####################\n#\n# Everything has defaults so you only need to uncomment things you want to\n# change\n\n# possible values : production, development\n;app_mode = production\n\n# instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty\n;instance_name = ${HOSTNAME}\n\n#################################### Paths ####################################\n[paths]\n# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)\n;data = /var/lib/grafana\n\n# Temporary files in `data` directory older than given duration will be removed\n;temp_data_lifetime = 24h\n\n# Directory where grafana can store logs\n;logs = /var/log/grafana\n\n# Directory where grafana will automatically scan and look for plugins\n;plugins = /var/lib/grafana/plugins\n\n# folder that contains provisioning config files that grafana will apply on startup and while running.\n;provisioning = conf/provisioning\n\n#################################### Server ####################################\n[server]\n# Protocol (http, https, h2, socket)\nprotocol = https\n\n# The ip address to bind to, empty will bind to all interfaces\n;http_addr =\n\n# The http port  to use\n;http_port = 3000\n\n# The public facing domain name used to access grafana from a browser\n;domain = localhost\n\n# Redirect to correct domain if host header does not match domain\n# Prevents DNS rebinding attacks\n;enforce_domain = false\n\n# The full public facing url you use in browser, used for redirects and emails\n# If you use reverse proxy and sub path specify full url (with sub path)\n;root_url = %(protocol)s://%(domain)s:%(http_port)s/\nroot_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/\n\n# Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.\n;serve_from_sub_path = false\nserve_from_sub_path = true\n\n# Log web requests\n;router_logging = false\n\n# the path relative working path\n;static_root_path = public\n\n# enable gzip\n;enable_gzip = false\n\n# https certs & key file\ncert_file = /etc/grafana/grafana.pem\ncert_key = /etc/grafana/grafana.key\n\n# Unix socket path\n;socket =\n\n#################################### Database ####################################\n[database]\n# You can configure the database connection by specifying type, host, name, user and password\n# as separate properties or as on string using the url properties.\n\n# Either \"mysql\", \"postgres\" or \"sqlite3\", it's your choice\n;type = sqlite3\n;host = 127.0.0.1:3306\n;name = grafana\n;user = root\n# If the password contains # or ; you have to wrap it with triple quotes. Ex \"\"\"#password;\"\"\"\n;password =\n\n# Use either URL or the previous fields to configure the database\n# Example: mysql://user:secret@host:port/database\n;url =\n\n# For \"postgres\" only, either \"disable\", \"require\" or \"verify-full\"\n;ssl_mode = disable\n\n;ca_cert_path =\n;client_key_path =\n;client_cert_path =\n;server_cert_name =\n\n# For \"sqlite3\" only, path relative to data_path setting\n;path = grafana.db\n\n# Max idle conn setting default is 2\n;max_idle_conn = 2\n\n# Max conn setting default is 0 (mean not set)\n;max_open_conn =\n\n# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)\n;conn_max_lifetime = 14400\n\n# Set to true to log the sql calls and execution times.\n;log_queries =\n\n# For \"sqlite3\" only. cache mode setting used for connecting to the database. (private, shared)\n;cache_mode = private\n\n#################################### Cache server #############################\n[remote_cache]\n# Either \"redis\", \"memcached\" or \"database\" default is \"database\"\n;type = database\n\n# cache connectionstring options\n# database: will use Grafana primary database.\n# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.\n# memcache: 127.0.0.1:11211\n;connstr =\n\n#################################### Data proxy ###########################\n[dataproxy]\n\n# This enables data proxy logging, default is false\n;logging = false\n\n# How long the data proxy waits before timing out, default is 30 seconds.\n# This setting also applies to core backend HTTP data sources where query requests use an HTTP client with timeout set.\n;timeout = 30\n\n# How many seconds the data proxy waits before sending a keepalive probe request.\n;keep_alive_seconds = 30\n\n# How many seconds the data proxy waits for a successful TLS Handshake before timing out.\n;tls_handshake_timeout_seconds = 10\n\n# How many seconds the data proxy will wait for a server's first response headers after\n# fully writing the request headers if the request has an \"Expect: 100-continue\"\n# header. A value of 0 will result in the body being sent immediately, without\n# waiting for the server to approve.\n;expect_continue_timeout_seconds = 1\n\n# The maximum number of idle connections that Grafana will keep alive.\n;max_idle_connections = 100\n\n# How many seconds the data proxy keeps an idle connection open before timing out.\n;idle_conn_timeout_seconds = 90\n\n# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false.\n;send_user_header = false\n\n#################################### Analytics ####################################\n[analytics]\n# Server reporting, sends usage counters to stats.grafana.org every 24 hours.\n# No ip addresses are being tracked, only simple counters to track\n# running instances, dashboard and error counts. It is very helpful to us.\n# Change this option to false to disable reporting.\n;reporting_enabled = true\n\n# Set to false to disable all checks to https://grafana.net\n# for new versions (grafana itself and plugins), check is used\n# in some UI views to notify that grafana or plugin update exists\n# This option does not cause any auto updates, nor send any information\n# only a GET request to http://grafana.com to get latest versions\n;check_for_updates = true\n\n# Google Analytics universal tracking code, only enabled if you specify an id here\n;google_analytics_ua_id =\n\n# Google Tag Manager ID, only enabled if you specify an id here\n;google_tag_manager_id =\n\n#################################### Security ####################################\n[security]\n# disable creation of admin user on first start of grafana\n;disable_initial_admin_creation = false\n\n# default admin user, created on startup\n;admin_user = admin\n\n# default admin password, can be changed before first start of grafana,  or in profile settings\n;admin_password = admin\n\n# used for signing\n;secret_key = SW2YcwTIb9zpOOhoPsMm\n\n# disable gravatar profile images\n;disable_gravatar = false\n\n# data source proxy whitelist (ip_or_domain:port separated by spaces)\n;data_source_proxy_whitelist =\n\n# disable protection against brute force login attempts\n;disable_brute_force_login_protection = false\n\n# set to true if you host Grafana behind HTTPS. default is false.\n;cookie_secure = false\n\n# set cookie SameSite attribute. defaults to `lax`. can be set to \"lax\", \"strict\", \"none\" and \"disabled\"\n;cookie_samesite = lax\n\n# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.\nallow_embedding = true\n\n# Set to true if you want to enable http strict transport security (HSTS) response header.\n# This is only sent when HTTPS is enabled in this configuration.\n# HSTS tells browsers that the site should only be accessed using HTTPS.\n;strict_transport_security = false\n\n# Sets how long a browser should cache HSTS. Only applied if strict_transport_security is enabled.\n;strict_transport_security_max_age_seconds = 86400\n\n# Set to true if to enable HSTS preloading option. Only applied if strict_transport_security is enabled.\n;strict_transport_security_preload = false\n\n# Set to true if to enable the HSTS includeSubDomains option. Only applied if strict_transport_security is enabled.\n;strict_transport_security_subdomains = false\n\n# Set to true to enable the X-Content-Type-Options response header.\n# The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised\n# in the Content-Type headers should not be changed and be followed.\n;x_content_type_options = true\n\n# Set to true to enable the X-XSS-Protection header, which tells browsers to stop pages from loading\n# when they detect reflected cross-site scripting (XSS) attacks.\n;x_xss_protection = true\n\n#################################### Snapshots ###########################\n[snapshots]\n# snapshot sharing options\n;external_enabled = true\n;external_snapshot_url = https://snapshots-origin.raintank.io\n;external_snapshot_name = Publish to snapshot.raintank.io\n\n# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for\n# creating and deleting snapshots.\n;public_mode = false\n\n# remove expired snapshot\n;snapshot_remove_expired = true\n\n#################################### Dashboards History ##################\n[dashboards]\n# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1\n;versions_to_keep = 20\n\n# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.\n# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.\n;min_refresh_interval = 5s\n\n# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + \"dashboards/home.json\"\n;default_home_dashboard_path =\n\n#################################### Users ###############################\n[users]\n# disable user signup / registration\n;allow_sign_up = true\n\n# Allow non admin users to create organizations\n;allow_org_create = true\n\n# Set to true to automatically assign new users to the default organization (id 1)\n;auto_assign_org = true\n\n# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)\n;auto_assign_org_id = 1\n\n# Default role new users will be automatically assigned (if disabled above is set to true)\nauto_assign_org_role = Viewer\n\n# Require email validation before sign up completes\n;verify_email_enabled = false\n\n# Background text for the user field on the login page\n;login_hint = email or username\n;password_hint = password\n\n# Default UI theme (\"dark\" or \"light\")\ndefault_theme = light\n\n# External user management, these options affect the organization users view\n;external_manage_link_url =\n;external_manage_link_name =\n;external_manage_info =\n\n# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.\n;viewers_can_edit = false\n\n# Editors can administrate dashboard, folders and teams they create\n;editors_can_admin = false\n\n# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).\n;user_invite_max_lifetime_duration = 24h\n\n[auth]\n# Login cookie name\n;login_cookie_name = grafana_session\n\n# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation.\n;login_maximum_inactive_lifetime_duration =\n\n# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;login_maximum_lifetime_duration =\n\n# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.\n;token_rotation_interval_minutes = 10\n\n# Set to true to disable (hide) the login form, useful if you use OAuth, defaults to false\n;disable_login_form = false\n\n# Set to true to disable the signout link in the side menu. useful if you use auth.proxy, defaults to false\n;disable_signout_menu = false\n\n# URL to redirect the user to after sign out\n;signout_redirect_url =\n\n# Set to true to attempt login with OAuth automatically, skipping the login screen.\n# This setting is ignored if multiple OAuth providers are configured.\n;oauth_auto_login = false\n\n# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.\n;oauth_state_cookie_max_age = 600\n\n# limit of api_key seconds to live before expiration\n;api_key_max_seconds_to_live = -1\n\n# Set to true to enable SigV4 authentication option for HTTP-based datasources.\n;sigv4_auth_enabled = false\n\n#################################### Anonymous Auth ######################\n[auth.anonymous]\n# enable anonymous access\nenabled = false\n\n# specify organization name that should be used for unauthenticated users\n;org_name = Main Org.\n\n# specify role for unauthenticated users\n;org_role = Editor\n\n# mask the Grafana version number for unauthenticated users\n;hide_version = false\n\n#################################### GitHub Auth ##########################\n[auth.github]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email,read:org\n;auth_url = https://github.com/login/oauth/authorize\n;token_url = https://github.com/login/oauth/access_token\n;api_url = https://api.github.com/user\n;allowed_domains =\n;team_ids =\n;allowed_organizations =\n\n#################################### GitLab Auth #########################\n[auth.gitlab]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = api\n;auth_url = https://gitlab.com/oauth/authorize\n;token_url = https://gitlab.com/oauth/token\n;api_url = https://gitlab.com/api/v4\n;allowed_domains =\n;allowed_groups =\n\n#################################### Google Auth ##########################\n[auth.google]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_client_id\n;client_secret = some_client_secret\n;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email\n;auth_url = https://accounts.google.com/o/oauth2/auth\n;token_url = https://accounts.google.com/o/oauth2/token\n;api_url = https://www.googleapis.com/oauth2/v1/userinfo\n;allowed_domains =\n;hosted_domain =\n\n#################################### Grafana.com Auth ####################\n[auth.grafana_com]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email\n;allowed_organizations =\n\n#################################### Azure AD OAuth #######################\n[auth.azuread]\n;name = Azure AD\n;enabled = false\n;allow_sign_up = true\n;client_id = some_client_id\n;client_secret = some_client_secret\n;scopes = openid email profile\n;auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize\n;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token\n;allowed_domains =\n;allowed_groups =\n\n#################################### Okta OAuth #######################\n[auth.okta]\n;name = Okta\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = openid profile email groups\n;auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize\n;token_url = https://<tenant-id>.okta.com/oauth2/v1/token\n;api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo\n;allowed_domains =\n;allowed_groups =\n;role_attribute_path =\n\n#################################### Generic OAuth ##########################\n[auth.generic_oauth]\n;enabled = false\n;name = OAuth\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email,read:org\n;email_attribute_name = email:primary\n;email_attribute_path =\n;login_attribute_path =\n;id_token_attribute_name =\n;auth_url = https://foo.bar/login/oauth/authorize\n;token_url = https://foo.bar/login/oauth/access_token\n;api_url = https://foo.bar/user\n;allowed_domains =\n;team_ids =\n;allowed_organizations =\n;role_attribute_path =\n;tls_skip_verify_insecure = false\n;tls_client_cert =\n;tls_client_key =\n;tls_client_ca =\n\n#################################### Basic Auth ##########################\n[auth.basic]\nenabled = true\n\n#################################### Auth Proxy ##########################\n[auth.proxy]\nenabled = true\n;header_name = X-WEBAUTH-USER\n;header_property = username\n;auto_sign_up = true\n;sync_ttl = 60\n;whitelist = 172.19.199.148\n;headers = Email:X-User-Email, Name:X-User-Name\n# Read the auth proxy docs for details on what the setting below enables\n;enable_login_token = false\n\n#################################### Auth LDAP ##########################\n[auth.ldap]\n;enabled = false\n;config_file = /etc/grafana/ldap.toml\n;allow_sign_up = true\n\n# LDAP backround sync (Enterprise only)\n# At 1 am every day\n;sync_cron = \"0 0 1 * * *\"\n;active_sync_enabled = true\n\n#################################### SMTP / Emailing ##########################\n[smtp]\n;enabled = false\n;host = localhost:25\n;user =\n# If the password contains # or ; you have to wrap it with triple quotes. Ex \"\"\"#password;\"\"\"\n;password =\n;cert_file =\n;key_file =\n;skip_verify = false\n;from_address = admin@grafana.localhost\n;from_name = Grafana\n# EHLO identity in SMTP dialog (defaults to instance_name)\n;ehlo_identity = dashboard.example.com\n# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')\n;startTLS_policy = NoStartTLS\n\n[emails]\n;welcome_email_on_sign_up = false\n;templates_pattern = emails/*.html\n\n#################################### Logging ##########################\n[log]\n# Either \"console\", \"file\", \"syslog\". Default is console and  file\n# Use space to separate multiple modes, e.g. \"console file\"\n;mode = console file\n\n# Either \"debug\", \"info\", \"warn\", \"error\", \"critical\", default is \"info\"\n;level = info\n\n# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug\n;filters =\n\n# For \"console\" mode only\n[log.console]\n;level =\n\n# log line format, valid options are text, console and json\n;format = console\n\n# For \"file\" mode only\n[log.file]\n;level =\n\n# log line format, valid options are text, console and json\n;format = text\n\n# This enables automated log rotate(switch of following options), default is true\n;log_rotate = true\n\n# Max line number of single file, default is 1000000\n;max_lines = 1000000\n\n# Max size shift of single file, default is 28 means 1 << 28, 256MB\n;max_size_shift = 28\n\n# Segment log daily, default is true\n;daily_rotate = true\n\n# Expired days of log file(delete after max days), default is 7\n;max_days = 7\n\n[log.syslog]\n;level =\n\n# log line format, valid options are text, console and json\n;format = text\n\n# Syslog network type and address. This can be udp, tcp, or unix. If left blank, the default unix endpoints will be used.\n;network =\n;address =\n\n# Syslog facility. user, daemon and local0 through local7 are valid.\n;facility =\n\n# Syslog tag. By default, the process' argv[0] is used.\n;tag =\n\n#################################### Usage Quotas ########################\n[quota]\n; enabled = false\n\n#### set quotas to -1 to make unlimited. ####\n# limit number of users per Org.\n; org_user = 10\n\n# limit number of dashboards per Org.\n; org_dashboard = 100\n\n# limit number of data_sources per Org.\n; org_data_source = 10\n\n# limit number of api_keys per Org.\n; org_api_key = 10\n\n# limit number of orgs a user can create.\n; user_org = 10\n\n# Global limit of users.\n; global_user = -1\n\n# global limit of orgs.\n; global_org = -1\n\n# global limit of dashboards\n; global_dashboard = -1\n\n# global limit of api_keys\n; global_api_key = -1\n\n# global limit on number of logged in users.\n; global_session = -1\n\n#################################### Alerting ############################\n[alerting]\n# Disable alerting engine & UI features\n;enabled = true\n# Makes it possible to turn off alert rule execution but alerting UI is visible\n;execute_alerts = true\n\n# Default setting for new alert rules. Defaults to categorize error and timeouts as alerting. (alerting, keep_state)\n;error_or_timeout = alerting\n\n# Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)\n;nodata_or_nullvalues = no_data\n\n# Alert notifications can include images, but rendering many images at the same time can overload the server\n# This limit will protect the server from render overloading and make sure notifications are sent out quickly\n;concurrent_render_limit = 5\n\n\n# Default setting for alert calculation timeout. Default value is 30\n;evaluation_timeout_seconds = 30\n\n# Default setting for alert notification timeout. Default value is 30\n;notification_timeout_seconds = 30\n\n# Default setting for max attempts to sending alert notifications. Default value is 3\n;max_attempts = 3\n\n# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend\n;min_interval_seconds = 1\n\n# Configures for how long alert annotations are stored. Default is 0, which keeps them forever.\n# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;max_annotation_age =\n\n# Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations.\n;max_annotations_to_keep =\n\n#################################### Annotations #########################\n\n[annotations.dashboard]\n# Dashboard annotations means that annotations are associated with the dashboard they are created on.\n\n# Configures how long dashboard annotations are stored. Default is 0, which keeps them forever.\n# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;max_age =\n\n# Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations.\n;max_annotations_to_keep =\n\n[annotations.api]\n# API annotations means that the annotations have been created using the API without any\n# association with a dashboard.\n\n# Configures how long Grafana stores API annotations. Default is 0, which keeps them forever.\n# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;max_age =\n\n# Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations.\n;max_annotations_to_keep =\n\n#################################### Explore #############################\n[explore]\n# Enable the Explore section\n;enabled = true\n\n#################################### Internal Grafana Metrics ##########################\n# Metrics available at HTTP API Url /metrics\n[metrics]\n# Disable / Enable internal metrics\n;enabled           = true\n# Graphite Publish interval\n;interval_seconds  = 10\n# Disable total stats (stat_totals_*) metrics to be generated\n;disable_total_stats = false\n\n#If both are set, basic auth will be required for the metrics endpoint.\n; basic_auth_username =\n; basic_auth_password =\n\n# Metrics environment info adds dimensions to the `grafana_environment_info` metric, which\n# can expose more information about the Grafana instance.\n[metrics.environment_info]\n#exampleLabel1 = exampleValue1\n#exampleLabel2 = exampleValue2\n\n# Send internal metrics to Graphite\n[metrics.graphite]\n# Enable by setting the address setting (ex localhost:2003)\n;address =\n;prefix = prod.grafana.%(instance_name)s.\n\n#################################### Grafana.com integration  ##########################\n# Url used to import dashboards directly from Grafana.com\n[grafana_com]\n;url = https://grafana.com\n\n#################################### Distributed tracing ############\n[tracing.jaeger]\n# Enable by setting the address sending traces to jaeger (ex localhost:6831)\n;address = localhost:6831\n# Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2)\n;always_included_tag = tag1:value1\n# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote\n;sampler_type = const\n# jaeger samplerconfig param\n# for \"const\" sampler, 0 or 1 for always false/true respectively\n# for \"probabilistic\" sampler, a probability between 0 and 1\n# for \"rateLimiting\" sampler, the number of spans per second\n# for \"remote\" sampler, param is the same as for \"probabilistic\"\n# and indicates the initial sampling rate before the actual one\n# is received from the mothership\n;sampler_param = 1\n# sampling_server_url is the URL of a sampling manager providing a sampling strategy.\n;sampling_server_url =\n# Whether or not to use Zipkin propagation (x-b3- HTTP headers).\n;zipkin_propagation = false\n# Setting this to true disables shared RPC spans.\n# Not disabling is the most common setting when using Zipkin elsewhere in your infrastructure.\n;disable_shared_zipkin_spans = false\n\n#################################### External image storage ##########################\n[external_image_storage]\n# Used for uploading images to public servers so they can be included in slack/email messages.\n# you can choose between (s3, webdav, gcs, azure_blob, local)\n;provider =\n\n[external_image_storage.s3]\n;endpoint =\n;path_style_access =\n;bucket =\n;region =\n;path =\n;access_key =\n;secret_key =\n\n[external_image_storage.webdav]\n;url =\n;public_url =\n;username =\n;password =\n\n[external_image_storage.gcs]\n;key_file =\n;bucket =\n;path =\n\n[external_image_storage.azure_blob]\n;account_name =\n;account_key =\n;container_name =\n\n[external_image_storage.local]\n# does not require any configuration\n\n[rendering]\n# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.\n# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.\n;server_url =\n# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.\n;callback_url =\n# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,\n# which this setting can help protect against by only allowing a certain amount of concurrent requests.\n;concurrent_render_request_limit = 30\n\n[panels]\n# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.\n;disable_sanitize_html = false\n\n[plugins]\n;enable_alpha = false\n;app_tls_skip_verify_insecure = false\n# Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.\n;allow_loading_unsigned_plugins =\n;marketplace_url = https://grafana.com/grafana/plugins/\n\n#################################### Grafana Image Renderer Plugin ##########################\n[plugin.grafana-image-renderer]\n# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.\n# See ICU’s metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported\n# timezone IDs. Fallbacks to TZ environment variable if not set.\n;rendering_timezone =\n\n# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.\n# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.\n;rendering_language =\n\n# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.\n# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.\n;rendering_viewport_device_scale_factor =\n\n# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to\n# the security risk it's not recommended to ignore HTTPS errors.\n;rendering_ignore_https_errors =\n\n# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will\n# only capture and log error messages. When enabled, debug messages are captured and logged as well.\n# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure\n# [log].filter = rendering:debug.\n;rendering_verbose_logging =\n\n# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.\n# Default is false. This can be useful to enable (true) when troubleshooting.\n;rendering_dumpio =\n\n# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found\n# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.\n;rendering_args =\n\n# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.\n# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not\n# compatible with the plugin.\n;rendering_chrome_bin =\n\n# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.\n# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.\n# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.\n;rendering_mode =\n\n# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'\n# and will cluster using browser instances.\n# Mode 'context' will cluster using incognito pages.\n;rendering_clustering_mode =\n# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..\n;rendering_clustering_max_concurrency =\n\n# Limit the maximum viewport width, height and device scale factor that can be requested.\n;rendering_viewport_max_width =\n;rendering_viewport_max_height =\n;rendering_viewport_max_device_scale_factor =\n\n# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign\n# a port not in use.\n;grpc_host =\n;grpc_port =\n\n[enterprise]\n# Path to a valid Grafana Enterprise license.jwt file\n;license_path =\n\n[feature_toggles]\n# enable features, separated by spaces\n;enable =\n\n[date_formats]\n# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/\n\n# Default system date format used in time range picker and other places where full time is displayed\n;full_date = YYYY-MM-DD HH:mm:ss\n\n# Used by graph and other places where we only show small intervals\n;interval_second = HH:mm:ss\n;interval_minute = HH:mm\n;interval_hour = MM/DD HH:mm\n;interval_day = MM/DD\n;interval_month = YYYY-MM\n;interval_year = YYYY\n\n# Experimental feature\n;use_browser_locale = false\n\n# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.\n;default_timezone = browser\n"
  },
  {
    "path": "install/conf/grafana/grafana.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO\nQTsA8V0B694uYiOmGl+nwyjS9PqNVQ+KIaYC8wQT+LxeH82rNqHMkTSNQ+I6wX/e\ni8PriATgb9NhEeinyzjsvEPIUNVwUvTon8Kix51uq0wDX9Pdc2uHeTwEs2qLCx/t\nQZBieXmODcInbscyizf4Ta7+6C4lHX00E/LzEA/ERh+jCVi7IWF+Mf31wr08kfRu\nOGqWAoBg1koyw/ZzNQ5D6WUPUd9OQMOvKio0JMUGWcZuFg/ZxmDFjR6H9uakurW0\nqYrxqrGZp+NkNnqgybnwmZqmS36OxpxymhbArwIDAQABAoIBAC+/eKNcqlHloJWE\nlng2+E0ja0vTfTMXZft3vnNXdxWuFxF9S1eaankTnjBa8MF9OUmxFf42qbKHrycZ\nqxPoU+ngMCu/Y8UM6LiH9cJ6qGJkGB0vHwpMgLPjQ6BuW0UW0S88YRgMscsKsFQK\nWXEtVlONZJ0yeeVkYVwRvbPbHraaBRe1O4CgfCCGhtCV5ln5MVzhgATH3kZJbXT2\n31YkvbKa+bECgJ9OH7PT0OBIBq89mRCUrNemGuc8RJBK6bRt4Mq8Ej3gkyTZ3azS\nP5wD1olIWabmpuIsjEUBpsP5DtdGAHceC0gXo66PgqGXSG303S3V6wovZOeUMtH8\nHxsrt9kCgYEA9SnEc6o+PH3O2jo7hil3CWVQdGXpzTfrYWXzbppESuTxgJQLvPDL\nUpNjCZ15rJTrlPZyU4MmMpxyjIKTJRScBYAIrPYw+QHn7FW4wrDQHLQHGMPOzk5Y\nM9HCGzDLVJR+mo4Qpd1W63QFXxgiEMrZ87mKj20XlefHQTZ2nHNpjW0CgYEA5UFj\nwFMWN2xTQvTd7BTFum8wMBNhxzroeoAWFA4TYsKpgwJFTGyGdRMPBVhZRQHYVK19\n8pzuRc+AMQhFDeBb01aRE4Lp7N5O4TJCiqcpqJBtaNSg0mXSS2vmrP1eH9rNfSjP\nVMWTtQ/D+E0VwsHV9tpalA5Pv1lwvpbUlCgZQQsCgYEAjuKM8KykITVhvaZ60rKQ\nAhXeUjijj0usD9QPkMKwUsYkSr/+J1xf4/yqmAwDwiX5N5R7BVlGhfDQgjwH7nCY\njkwUwlmqKTaHKSK80Buk71WtXS2h9nOKzIjQDHDf0KfLMeDiqwjZg9jW2JmEIS1Y\n4cedjgIS4Pd5FfTcJErPlfECgYEAs3eFB0ID2k9KvtfCAtYgE9qG9pu1p6lN5Nfw\ncLK0KlQJLy3P4gvzFiNdVunauFLBb0iBmDORs8TErZ2zsTE5sS/LUmLhjTRau6AE\nx1YlHngxricF3q8m+TP22OVfkcBPrPMNm2cwQkWdO/vcVSI4xY4Z6l1pwHnb8NdS\ngskBPBECgYBPOrx57pJesyNpcTuIJ0Ot+9/qke3V2ZjyxFjaKjv3gupg0WBRayn7\nPNlkNvjR0InjVkxx8+fwmi1kn8yPN3kaB9CvyR0AVgn36i840XcOqtjgsdmVzzpK\nx92xUbukNlgDWgDfLugRp8mrryik0MeHKgfZbpUnIU3dPwSTbr+BoQ==\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "install/conf/grafana/grafana.pem",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO\nQTsA8V0B694uYiOmGl+nwyjS9PqNVQ+KIaYC8wQT+LxeH82rNqHMkTSNQ+I6wX/e\ni8PriATgb9NhEeinyzjsvEPIUNVwUvTon8Kix51uq0wDX9Pdc2uHeTwEs2qLCx/t\nQZBieXmODcInbscyizf4Ta7+6C4lHX00E/LzEA/ERh+jCVi7IWF+Mf31wr08kfRu\nOGqWAoBg1koyw/ZzNQ5D6WUPUd9OQMOvKio0JMUGWcZuFg/ZxmDFjR6H9uakurW0\nqYrxqrGZp+NkNnqgybnwmZqmS36OxpxymhbArwIDAQABAoIBAC+/eKNcqlHloJWE\nlng2+E0ja0vTfTMXZft3vnNXdxWuFxF9S1eaankTnjBa8MF9OUmxFf42qbKHrycZ\nqxPoU+ngMCu/Y8UM6LiH9cJ6qGJkGB0vHwpMgLPjQ6BuW0UW0S88YRgMscsKsFQK\nWXEtVlONZJ0yeeVkYVwRvbPbHraaBRe1O4CgfCCGhtCV5ln5MVzhgATH3kZJbXT2\n31YkvbKa+bECgJ9OH7PT0OBIBq89mRCUrNemGuc8RJBK6bRt4Mq8Ej3gkyTZ3azS\nP5wD1olIWabmpuIsjEUBpsP5DtdGAHceC0gXo66PgqGXSG303S3V6wovZOeUMtH8\nHxsrt9kCgYEA9SnEc6o+PH3O2jo7hil3CWVQdGXpzTfrYWXzbppESuTxgJQLvPDL\nUpNjCZ15rJTrlPZyU4MmMpxyjIKTJRScBYAIrPYw+QHn7FW4wrDQHLQHGMPOzk5Y\nM9HCGzDLVJR+mo4Qpd1W63QFXxgiEMrZ87mKj20XlefHQTZ2nHNpjW0CgYEA5UFj\nwFMWN2xTQvTd7BTFum8wMBNhxzroeoAWFA4TYsKpgwJFTGyGdRMPBVhZRQHYVK19\n8pzuRc+AMQhFDeBb01aRE4Lp7N5O4TJCiqcpqJBtaNSg0mXSS2vmrP1eH9rNfSjP\nVMWTtQ/D+E0VwsHV9tpalA5Pv1lwvpbUlCgZQQsCgYEAjuKM8KykITVhvaZ60rKQ\nAhXeUjijj0usD9QPkMKwUsYkSr/+J1xf4/yqmAwDwiX5N5R7BVlGhfDQgjwH7nCY\njkwUwlmqKTaHKSK80Buk71WtXS2h9nOKzIjQDHDf0KfLMeDiqwjZg9jW2JmEIS1Y\n4cedjgIS4Pd5FfTcJErPlfECgYEAs3eFB0ID2k9KvtfCAtYgE9qG9pu1p6lN5Nfw\ncLK0KlQJLy3P4gvzFiNdVunauFLBb0iBmDORs8TErZ2zsTE5sS/LUmLhjTRau6AE\nx1YlHngxricF3q8m+TP22OVfkcBPrPMNm2cwQkWdO/vcVSI4xY4Z6l1pwHnb8NdS\ngskBPBECgYBPOrx57pJesyNpcTuIJ0Ot+9/qke3V2ZjyxFjaKjv3gupg0WBRayn7\nPNlkNvjR0InjVkxx8+fwmi1kn8yPN3kaB9CvyR0AVgn36i840XcOqtjgsdmVzzpK\nx92xUbukNlgDWgDfLugRp8mrryik0MeHKgfZbpUnIU3dPwSTbr+BoQ==\n-----END RSA PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDhTCCAm2gAwIBAgIJAOYHQ0+YL1oXMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNV\nBAYTAkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRAwDgYD\nVQQKDAdCZWlKaW5nMQ8wDQYDVQQLDAZPcHNBbnkxDzANBgNVBAMMBk9wc0FueTAe\nFw0yMDEyMjEwODA0MzlaFw0zMDEyMTkwODA0MzlaMGUxCzAJBgNVBAYTAkNOMRAw\nDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRAwDgYDVQQKDAdCZWlK\naW5nMQ8wDQYDVQQLDAZPcHNBbnkxDzANBgNVBAMMBk9wc0FueTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBANuM+92uhcjbvr/0JTrZOy8SM9KAJzOc8hh+\nexbTu8StcjUQTkE7APFdAeveLmIjphpfp8Mo0vT6jVUPiiGmAvMEE/i8Xh/Nqzah\nzJE0jUPiOsF/3ovD64gE4G/TYRHop8s47LxDyFDVcFL06J/CosedbqtMA1/T3XNr\nh3k8BLNqiwsf7UGQYnl5jg3CJ27HMos3+E2u/uguJR19NBPy8xAPxEYfowlYuyFh\nfjH99cK9PJH0bjhqlgKAYNZKMsP2czUOQ+llD1HfTkDDryoqNCTFBlnGbhYP2cZg\nxY0eh/bmpLq1tKmK8aqxmafjZDZ6oMm58Jmapkt+jsaccpoWwK8CAwEAAaM4MDYw\nDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA+gwFgYDVR0lAQH/BAwwCgYIKwYB\nBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAEYLjlmcMl724apSYS8lqwA4extOL2ZO\nJRLG0DNqaCDFtDm8D0figeWJ/P4Oo6U7wHWsIRrX71mabCeGf/kY+MtY/yGEZoEO\noDu3rj5iiq1lzGNo5hy95cs1mZdCsnPzJK9PWTLMhTDLZy8Tr+XAflfFHyqsxIsa\n/rGO3GoWzqgw9mXsm6Z2DcC7CiV3ZJRey15DMRUr/Jxp/MD2AHDKj088fUh+oe/p\nBiq4osuTrxxyiCf3AWuczzQD6bDLsqd+JS14AdGeuW9L6xerXkxGdRNP8fuc4/ek\nWG4/6JOMUxIpZQPj6x74LXbS02cZw59bDHhg0+gG3IpajjS0PV51jmA=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "install/conf/kubernetes/.gitkeep",
    "content": ""
  },
  {
    "path": "install/conf/mongodb/.gitkeep",
    "content": ""
  },
  {
    "path": "install/conf/mysql/mysqld.cnf",
    "content": "# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License, version 2.0,\n# as published by the Free Software Foundation.\n#\n# This program is also distributed with certain software (including\n# but not limited to OpenSSL) that is licensed under separate terms,\n# as designated in a particular file or component or in included license\n# documentation.  The authors of MySQL hereby grant you an additional\n# permission to link the program and your derivative works with the\n# separately licensed software that they have included with MySQL.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License, version 2.0, for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA\n\n#\n# The MySQL  Server configuration file.\n#\n# For explanations see\n# http://dev.mysql.com/doc/mysql/en/server-system-variables.html\n\n[mysqld]\ndefault_authentication_plugin=mysql_native_password\nsymbolic-links=0\ndefault-storage-engine = innodb\ninnodb_file_per_table = on\ncollation-server = utf8_general_ci\ncharacter-set-server = utf8\nmax_connections = 4096\n# 7 day\nbinlog_expire_logs_seconds = 604800\n\n# Memory Truning\ninnodb_buffer_pool_size=128M\ninnodb_log_buffer_size=32M\nkey_buffer_size=64M\n"
  },
  {
    "path": "install/conf/mysqld.cnf",
    "content": "# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License, version 2.0,\n# as published by the Free Software Foundation.\n#\n# This program is also distributed with certain software (including\n# but not limited to OpenSSL) that is licensed under separate terms,\n# as designated in a particular file or component or in included license\n# documentation.  The authors of MySQL hereby grant you an additional\n# permission to link the program and your derivative works with the\n# separately licensed software that they have included with MySQL.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License, version 2.0, for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA\n\n#\n# The MySQL  Server configuration file.\n#\n# For explanations see\n# http://dev.mysql.com/doc/mysql/en/server-system-variables.html\n\n[mysqld]\ndefault_authentication_plugin=mysql_native_password\nsymbolic-links=0\ndefault-storage-engine = innodb\ninnodb_file_per_table = on\ncollation-server = utf8_general_ci\ncharacter-set-server = utf8\nmax_connections = 4096\n# 7 day\nbinlog_expire_logs_seconds = 604800\n\n# Memory Truning\ninnodb_buffer_pool_size=128M\ninnodb_log_buffer_size=32M\nkey_buffer_size=64M\n"
  },
  {
    "path": "install/conf/nginx-conf.d/nginx_paas.conf.bak",
    "content": "# upstream - web\nupstream OPEN_PAAS {\n    server LOCAL_IP:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_APPENGINE {\n    server LOCAL_IP:8000 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_ESB {\n    server LOCAL_IP:8002 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_LOGIN {\n    server LOCAL_IP:8003 max_fails=1  fail_timeout=30s;\n}\nupstream BASTION_WS {\n    server LOCAL_IP:8004 max_fails=1  fail_timeout=30s;\n}\nupstream MONITOR_ZABBIX {\n    server LOCAL_IP:8006 max_fails=1  fail_timeout=30s;\n}\nupstream DASHBOARD_GRAFANA {\n    server LOCAL_IP:8007 max_fails=1  fail_timeout=30s;\n}\n\n# upstream - paasagent\nupstream PAAS_AGENT_TEST {\n    server LOCAL_IP:8084 max_fails=1  fail_timeout=30s;\n}\nupstream PAAS_AGENT_PROD {\n    server LOCAL_IP:8085 max_fails=1  fail_timeout=30s;\n}\n# proxy_next_upstream  http_502 http_504 error timeout invalid_header;\n\nserver {\n    listen 80;\n    server_name DOMAIN_NAME;\n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n    location ~/ {\n        rewrite ^(.*)$ https://$host$1 permanent;\n    }\n}\n\nserver {\n     listen       443 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/paas_nginx_access.log;\n     error_log /opt/opsany/logs/paas_nginx_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # ============================ paas ============================\n    # Zabbix\n    location /zabbix/ {\n        proxy_pass http://MONITOR_ZABBIX;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n    \n    # Grafana\n    location /grafana/ {\n        proxy_pass https://DASHBOARD_GRAFANA;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-WEBAUTH-USER admin;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n\n    # BASTION WebSocket\n     location /ws/bastion/ {\n        proxy_pass http://BASTION_WS;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n    # PAAS_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPEN_PAAS;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n\n    # docs\n    location ~ ^/docs/ {\n        index index.html;\n        root /opt/opsany/uploads/;\n    }\n\n    # ============================ appengine ============================\n    # ENGINE_SERVICE HOST/PORT\n    location ~ ^/v1 {\n        proxy_pass http://OPEN_PAAS_APPENGINE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Scheme $scheme;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ esb ============================\n    # ESB_SERVICE HOST/PORT\n    location ~ ^/api/(.*) {\n        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Request-Uri $request_uri;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n\n    # ============================ login ============================\n    # LOGIN_SERVICE HOST/PORT\n    location ~ ^/login/(.*) {\n        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n\n    # ============================ paas_agent ============================\n    # for apps test\n    location ~ ^/t/ {\n        proxy_pass http://PAAS_AGENT_TEST;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # for apps prod\n    location ~ ^/o/ {\n        proxy_pass http://PAAS_AGENT_PROD;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n}\n"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_paas.conf",
    "content": "# upstream for paas\nupstream OPEN_PAAS {\n    server LOCAL_IP:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_APPENGINE {\n    server LOCAL_IP:8000 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_ESB {\n    server LOCAL_IP:8002 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_LOGIN {\n    server LOCAL_IP:8003 max_fails=1  fail_timeout=30s;\n}\nupstream BASTION_WS {\n    server LOCAL_IP:8004 max_fails=1  fail_timeout=30s;\n}\nupstream MONITOR_ZABBIX {\n    server LOCAL_IP:8006 max_fails=1  fail_timeout=30s;\n}\nupstream DASHBOARD_GRAFANA {\n    server LOCAL_IP:8007 max_fails=1  fail_timeout=30s;\n}\n\n# upstream for saas\n\nupstream SAAS_RBAC {\n    server LOCAL_IP:7001 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_WORKBENCH {\n    server LOCAL_IP:7002 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CMDB {\n    server LOCAL_IP:7003 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CONTROL {\n    server LOCAL_IP:7004 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_JOB {\n    server LOCAL_IP:7005 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_MONITOR {\n    server LOCAL_IP:7006 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CMP {\n    server LOCAL_IP:7007 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_BASTION {\n    server LOCAL_IP:7008 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_DEVOPS {\n    server LOCAL_IP:7009 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_PIPELINE {\n    server LOCAL_IP:7017 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_DEPLOY {\n    server LOCAL_IP:7018 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_REPO {\n    server LOCAL_IP:7020 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CODE {\n    server LOCAL_IP:7010 max_fails=1  fail_timeout=30s;\n}\n\n# upstream for paasagent\nupstream PAAS_AGENT_TEST {\n    server LOCAL_IP:8084 max_fails=1  fail_timeout=30s;\n}\nupstream PAAS_AGENT_PROD {\n    server LOCAL_IP:8085 max_fails=1  fail_timeout=30s;\n}\n\nserver {\n    listen 80;\n    server_name DOMAIN_NAME;\n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n    location ~/ {\n        rewrite ^(.*)$ https://$host$1 permanent;\n    }\n}\n\nserver {\n     listen       443 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/paas_nginx_access.log;\n     error_log /opt/opsany/logs/paas_nginx_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # ============================ paas ============================\n    # Zabbix\n    location /zabbix/ {\n        proxy_pass http://MONITOR_ZABBIX;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n    \n    # Grafana\n    location /grafana/ {\n        proxy_pass https://DASHBOARD_GRAFANA;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-WEBAUTH-USER admin;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n\n    # BASTION WebSocket\n     location /ws/bastion/ {\n        proxy_pass http://BASTION_WS;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n    # PAAS_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPEN_PAAS;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header X-Forwarded-Scheme $scheme;\n        proxy_redirect http:// $scheme://;\n        proxy_read_timeout 600;\n    }\n    \n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n\n    # docs\n    location ~ ^/docs/ {\n        index index.html;\n        root /opt/opsany/uploads/;\n    }\n    \n    # app\n        location ~ ^/phone/ {\n        index index.html;\n        root /opt/opsany/uploads/;\n    }\n\n    # ============================ appengine ============================\n    # ENGINE_SERVICE HOST/PORT\n    location ~ ^/v1 {\n        proxy_pass http://OPEN_PAAS_APPENGINE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Scheme $scheme;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ esb ============================\n    # ESB_SERVICE HOST/PORT\n    location ~ ^/api/(.*) {\n        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Request-Uri $request_uri;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n\n    # ============================ login ============================\n    # LOGIN_SERVICE HOST/PORT\n    location ~ ^/login/(.*) {\n        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ paas_agent ============================\n    # for apps test\n    location ~ ^/t/ {\n        proxy_pass http://PAAS_AGENT_TEST;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ OpsAny SaaS ============================\n    # for rbac\n    location ~ ^/o/rbac/ {\n        proxy_pass http://SAAS_RBAC;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    #for workbench\n    location ~ ^/o/workbench/ {\n        proxy_pass http://SAAS_WORKBENCH;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for cmdb\n    location ~ ^/o/cmdb/ {\n        proxy_pass http://SAAS_CMDB;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for control\n    location ~ ^/o/control/ {\n        proxy_pass http://SAAS_CONTROL;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for job\n    location ~ ^/o/job/ {\n        proxy_pass http://SAAS_JOB;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for monitor\n    location ~ ^/o/monitor/ {\n        proxy_pass http://SAAS_MONITOR;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for cmp\n    location ~ ^/o/cmp/ {\n        proxy_pass http://SAAS_CMP;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for bastion\n    location ~ ^/o/bastion/ {\n        proxy_pass http://SAAS_BASTION;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for devops\n    location ~ ^/o/devops/ {\n        proxy_pass http://SAAS_DEVOPS;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for pipeline\n    location ~ ^/o/pipeline/ {\n        proxy_pass http://SAAS_PIPELINE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for deploy\n    location ~ ^/o/deploy/ {\n        proxy_pass http://SAAS_DEPLOY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for repo\n    location ~ ^/o/repo/ {\n        proxy_pass http://SAAS_REPO;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for code\n    location ~ ^/o/code/ {\n        proxy_pass http://SAAS_CODE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n}\n"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_paas_k8s.config",
    "content": "# upstream for paas\nupstream OPEN_PAAS {\n    server opsany-paas-paas:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_APPENGINE {\n    server opsany-paas-appengine:8000 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_ESB {\n    server opsany-paas-esb:8002 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_LOGIN {\n    server opsany-paas-login:8003 max_fails=1  fail_timeout=30s;\n}\nupstream BASTION_WS {\n    server opsany-paas-websocket:8004 max_fails=1  fail_timeout=30s;\n}\nupstream DASHBOARD_GRAFANA {\n    server opsany-paas-grafana:8007 max_fails=1  fail_timeout=30s;\n}\n\n# upstream for saas\n\nupstream SAAS_RBAC {\n    server 127.0.0.1:7001 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_WORKBENCH {\n    server 127.0.0.1:7002 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CMDB {\n    server 127.0.0.1:7003 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CONTROL {\n    server 127.0.0.1:7004 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_JOB {\n    server 127.0.0.1:7005 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_MONITOR {\n    server 127.0.0.1:7006 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CMP {\n    server 127.0.0.1:7007 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_BASTION {\n    server 127.0.0.1:7008 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_DEVOPS {\n    server 127.0.0.1:7009 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_CODE {\n    server 127.0.0.1:7010 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_PIPELINE {\n    server 127.0.0.1:7017 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_REPO {\n    server 127.0.0.1:7020 max_fails=1  fail_timeout=30s;\n}\nupstream SAAS_DEPLOY {\n    server 127.0.0.1:7018 max_fails=1  fail_timeout=30s;\n}\n\nserver {\n    listen 80;\n    server_name DOMAIN_NAME;\n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n    location ~/ {\n        rewrite ^(.*)$ https://$host$1 permanent;\n    }\n}\n\nserver {\n     listen       443 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/paas_nginx_access.log;\n     error_log /opt/opsany/logs/paas_nginx_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # ============================ paas ============================\n    \n    # Grafana\n    location /grafana/ {\n        proxy_pass https://DASHBOARD_GRAFANA;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-WEBAUTH-USER admin;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n\n    # BASTION WebSocket\n     location /ws/bastion/ {\n        proxy_pass http://BASTION_WS;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_redirect off;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Host $server_name;\n    }\n    # PAAS_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPEN_PAAS;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header X-Forwarded-Scheme $scheme;\n        proxy_redirect http:// $scheme://;\n        proxy_read_timeout 600;\n    }\n\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n\n    # docs\n    location ~ ^/docs/ {\n        index index.html;\n        root /opt/opsany/uploads/;\n    }\n    \n    # app\n        location ~ ^/phone/ {\n        index index.html;\n        root /opt/opsany/uploads/;\n    }\n\n    # ============================ appengine ============================\n    # ENGINE_SERVICE HOST/PORT\n    location ~ ^/v1 {\n        proxy_pass http://OPEN_PAAS_APPENGINE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Scheme $scheme;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ esb ============================\n    # ESB_SERVICE HOST/PORT\n    location ~ ^/api/(.*) {\n        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Request-Uri $request_uri;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n\n    # ============================ login ============================\n    # LOGIN_SERVICE HOST/PORT\n    location ~ ^/login/(.*) {\n        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ OpsAny SaaS ============================\n    # for rbac\n    location ~ ^/o/rbac/ {\n        proxy_pass http://SAAS_RBAC;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    #for workbench\n    location ~ ^/o/workbench/ {\n        proxy_pass http://SAAS_WORKBENCH;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for cmdb\n    location ~ ^/o/cmdb/ {\n        proxy_pass http://SAAS_CMDB;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for control\n    location ~ ^/o/control/ {\n        proxy_pass http://SAAS_CONTROL;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for job\n    location ~ ^/o/job/ {\n        proxy_pass http://SAAS_JOB;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for monitor\n    location ~ ^/o/monitor/ {\n        proxy_pass http://SAAS_MONITOR;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for cmp\n    location ~ ^/o/cmp/ {\n        proxy_pass http://SAAS_CMP;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for bastion\n    location ~ ^/o/bastion/ {\n        proxy_pass http://SAAS_BASTION;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for devops\n    location ~ ^/o/devops/ {\n        proxy_pass http://SAAS_DEVOPS;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for code\n    location ~ ^/o/code/ {\n        proxy_pass http://SAAS_CODE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for pipeline\n    location ~ ^/o/pipeline/ {\n        proxy_pass http://SAAS_PIPELINE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for repo\n    location ~ ^/o/repo/ {\n        proxy_pass http://SAAS_REPO;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n    # for deploy\n    location ~ ^/o/deploy/ {\n        proxy_pass http://SAAS_DEPLOY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n}\n"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_proxy.conf",
    "content": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server LOCAL_IP:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTPS\nserver {\n     listen       8012;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/opsany_proxy_access.log;\n     error_log /opt/opsany/logs/opsany_proxy_error.log;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n\n\n\n# HTTPS\nserver {\n     listen       8011 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/opsany_proxy_access.log;\n     error_log /opt/opsany/logs/opsany_proxy_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_proxy_k8s.config",
    "content": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server opsany-paas-proxy:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTPS\nserver {\n     listen       8012;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/opsany_proxy_access.log;\n     error_log /opt/opsany/logs/opsany_proxy_error.log;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n\n\n\n# HTTPS\nserver {\n     listen       8011 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/opsany_proxy_access.log;\n     error_log /opt/opsany/logs/opsany_proxy_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    2048m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n"
  },
  {
    "path": "install/conf/nginx-conf.d/ssl/.gitkeep",
    "content": ""
  },
  {
    "path": "install/conf/nginx.conf",
    "content": "# For more information on configuration, see:\n#   * Official English Documentation: http://nginx.org/en/docs/\n#   * Official Russian Documentation: http://nginx.org/ru/docs/\n\nuser root;\nworker_processes auto;\nerror_log /opt/opsany/logs/openresty_error.log;\npid /run/nginx.pid;\n\n# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.\ninclude /etc/nginx/conf.d/*.conf;\n\nevents {\n    worker_connections 1024;\n}\n\nhttp {\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  /opt/opsany/logs/openresty_access.log  main;\n\n    sendfile            on;\n    tcp_nopush          on;\n    tcp_nodelay         on;\n    keepalive_timeout   65;\n    types_hash_max_size 2048;\n    client_max_body_size 2G;\n    server_names_hash_bucket_size 256;\n    underscores_in_headers on;\n\n    include             /etc/nginx/mime.types;\n    default_type        application/octet-stream;\n\n    # Load modular configuration files from the /etc/nginx/conf.d directory.\n    # See http://nginx.org/en/docs/ngx_core_module.html#include\n    # for more information.\n    include /etc/nginx/conf.d/*.conf;\n\n    server {\n        listen       80 default_server;\n        listen       [::]:80 default_server;\n        server_name  _;\n        root         /usr/share/nginx/html;\n\n        # Load configuration files for the default server block.\n        include /etc/nginx/conf.d/*.conf;\n\n        location / {\n        }\n\n        error_page 404 /404.html;\n            location = /40x.html {\n        }\n\n        error_page 500 502 503 504 /50x.html;\n            location = /50x.html {\n        }\n    }\n}\n\n"
  },
  {
    "path": "install/conf/openssl.cnf",
    "content": "####################################################################\n[ req ]\ndefault_bits\t\t= 2048\ndefault_keyfile \t= privkey.pem\ndistinguished_name\t= req_distinguished_name\nreq_extensions = req_ext\nx509_extensions = v3_req\nprompt = no\n\n[ req_distinguished_name ]\ncountryName\t\t\t= CN\ncountryName_default\t\t= CN\ncountryName_min\t\t\t= 2\ncountryName_max\t\t\t= 2\n\nstateOrProvinceName\t\t= 北京\nstateOrProvinceName_default\t= 北京\n\nlocalityName\t\t\t= 北京\n\n0.organizationName\t\t= OpsAny\n0.organizationName_default\t= OpsAny\n\norganizationalUnitName\t\t= OpsAny\n#organizationalUnitName_default\t= OpsAny\n\ncommonName\t\t\t= Common Name (e.g. server FQDN or YOUR name)\ncommonName_max\t\t\t= 64\n\nemailAddress\t\t\t= OpsAny@womaiyun.com\nemailAddress_max\t\t= 64\n\n[req_ext]\nsubjectAltName = @alt_names\n\n[ v3_req ]\n\nbasicConstraints = critical, CA:FALSE\nkeyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, keyAgreement\nextendedKeyUsage = critical, serverAuth\n#subjectAltName = @alt_names\n\n#[alt_names]\n#IP.1 = 127.0.0.1\n"
  },
  {
    "path": "install/conf/opsany-paas/appengine/appengine.ini",
    "content": "[program:opsany-appengine]\ncommand=gunicorn wsgi --bind 0.0.0.0:8000 -k gevent -w 4 -n appengine --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/appengine\nenvironment=BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_appengine.log\n"
  },
  {
    "path": "install/conf/opsany-paas/appengine/settings_production.py.appengine",
    "content": "# -*- coding: utf-8 -*-\n\nfrom controller.settings_default import * # noqa\n# Debug\nDEBUG = False\n\n# Log\nLOG_LEVEL = 'ERROR'\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',\n        'HOST': 'MYSQL_SERVER_IP',\n        'PORT': 'MYSQL_SERVER_PORT',\n    }\n}\n\n# Secret Key\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n"
  },
  {
    "path": "install/conf/opsany-paas/esb/esb.ini",
    "content": "[program:opsany-esb]\ncommand=gunicorn wsgi --bind 0.0.0.0:8002 -k gevent -w 8 -n esb --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/esb\nenvironment=BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_esb.log\n"
  },
  {
    "path": "install/conf/opsany-paas/esb/settings_production.py.esb",
    "content": "# -*- coding: utf-8 -*-\n\n# Debug\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',\n        'HOST': 'MYSQL_SERVER_IP',\n        'PORT': 'MYSQL_SERVER_PORT',\n    }\n}\n\n# esb components\nPAAS_DOMAIN = 'LOCAL_IP'\nBK_ENV = \"o\"\nHOST_CC = ''\n\n# Log settings\nLOG_LEVEL = 'ERROR'\n\n# ESB token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n\n# PaaS\nPAAS_HOST = 'http://PAAS_PAAS_IP:8001'\n\n# Login\nHOST_BK_LOGIN = 'http://PAAS_LOGIN_IP:8003'\n\n# Secret Key\nSECRET_KEY = 'iXNyPrK6vEyiz97S0ydm8mnYSr6mmAiGFfCdI4yJpNsvYkNNnF'\n"
  },
  {
    "path": "install/conf/opsany-paas/login/login.ini",
    "content": "[program:opsany-login]\ncommand=gunicorn wsgi --bind 0.0.0.0:8003 -k gevent -w 8 -n login --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/login\nenvironment=DJANGO_SETTINGS_MODULE=settings,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_login.log\n"
  },
  {
    "path": "install/conf/opsany-paas/login/settings_production.py.login",
    "content": "# -*- coding: utf-8 -*-\n\nfrom conf.default import LOGGING\n\n# Debug\nDEBUG = False\n\n# Log settings\nLOG_LEVEL = 'ERROR'\n\nLOGGING.update(**{\n    'loggers': {\n        'django': {\n            'handlers': ['null'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n        'django.request': {\n            'handlers': ['console'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n        'root': {\n            'handlers': ['root'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n        'django.db.backends': {\n            'handlers': ['wb_mysql'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n    },\n})\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# For Nginx\nSITE_URL = \"/login/\"\nSTATIC_URL = \"/static/\"\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',   # 默认用mysql\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',\n        'HOST': 'MYSQL_SERVER_IP',\n        'PORT': 'MYSQL_SERVER_PORT',\n    }\n}\n\n# Init User\nUSERNAME = 'admin'\nPASSWORD = 'admin'\n\n# Inner domain\nPAAS_INNER_DOMAIN = 'LOCAL_IP'\nHTTP_SCHEMA = 'https'\n\n# Cookie\nBK_COOKIE_DOMAIN = ''\nCSRF_COOKIE_HTTPONLY = True\nCSRF_TRUSTED_ORIGINS = [\n    'https://DOMAIN_NAME',\n    'https://LOCAL_IP',\n    'http://DOMAIN_NAME',\n    'http://LOCAL_IP',\n]\n\n# Secret Key\nSECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\nRBAC_APP_SECRET = \"RBAC_SECRET_KEY\"\n"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/config.yaml",
    "content": "apiVersion: v2.3.2\napiService:\n  url: https://DOMAIN_NAME\n  bk_app_code: cmdb\n  bk_app_secret: CMDB_SECRET_KEY\n  super_username: admin  # 管理员用户名 用作部分API接口内部调用\n  api_version: 4.0.2  # esb api服务版本\nserver:\n  host: 0.0.0.0\n  port: 8020\n  auth_token: \"MCP_AUTH_TOKEN\"  # MCP Server的认证Token，安装时自动生成，调用时需要添加在Header中。\nconfig:\n  resourceIdDefaultField: \"code,VISIBLE_NAME,name\"\n  resourceIdFieldSearch: false\n  resourceDefaultLimit: 20\n  apiResourcesDefaultLimit: 100\n"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/mcp-supervisor.ini",
    "content": "[program: mcp-server]\ncommand = python3 /opt/opsany/opsany-mcp-server/server.py --config /opt/opsany/opsany-mcp-server/config/config.yaml\nstdout_logfile = /opt/opsany/logs/opsany-mcp-server/server.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\n"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/mcp.json",
    "content": "{\n    \"mcpServers\": {\n      \"opsany-mcp-server\": {\n        \"url\": \"http://DOMAIN_NAME:8020/sse\",\n        \"headers\": {\n          \"username\": \"admin\",\n          \"user-api-token\": \"Please modify here\",\n          \"mcp-auth-token\": \"MCP_AUTH_TOKEN\"\n          }\n      }\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/conf/opsany-paas/paas/paas.ini",
    "content": "[program:opsany-paas]\ncommand=gunicorn wsgi --bind 0.0.0.0:8001 -k gevent -w 4 -n paas --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/paas\nenvironment=DJANGO_SETTINGS_MODULE=settings,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_paas.log\n"
  },
  {
    "path": "install/conf/opsany-paas/paas/settings_production.py.paas",
    "content": "# -*- coding: utf-8 -*-\n\n# Debug\nDEBUG = False\n\n# Log settings\nLOG_LEVEL = 'ERROR'\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',\n        'HOST': 'MYSQL_SERVER_IP',\n        'PORT': 'MYSQL_SERVER_PORT',\n    }\n}\n\n# domain\nPAAS_DOMAIN = 'DOMAIN_NAME'\n\n# inner domain\nPAAS_INNER_DOMAIN = 'LOCAL_IP'\nHTTP_SCHEMA = 'https'\n\n\n# Cookie \nBK_COOKIE_NAME = 'bk_token'\nBK_COOKIE_AGE = 60 * 60 * 24\nBK_COOKIE_DOMAIN = ''\n\n# CSRF Cookie\nCSRF_COOKIE_HTTPONLY = True\nCSRF_TRUSTED_ORIGINS = [\n    'https://DOMAIN_NAME',\n    'https://DOMAIN_NAME',\n    'http://LOCAL_IP',\n    'http://LOCAL_IP',\n]\n\n# Appengine\nENGINE_HOST = \"http://PAAS_APPENGINE_IP:8000\"\n\n# Login\nLOGIN_HOST = \"http://PAAS_LOGIN_IP:8003\"\n\n# Secret key\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n"
  },
  {
    "path": "install/conf/opsany-paas/websocket/settings_production.py.websocket",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, MFA_TIME_OUT\nfrom urllib import parse\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# Run Mode\nRUN_MODE = 'PRODUCT'\n\n# Log\nLOG_LEVEL = 'ERROR'\n\n# Guacd\nGUACD_HOST = 'WEBSOCKET_GUACD_HOST'\nGUACD_PORT = '4822'\nGUACD_PATH = \"/srv/guacamole\"\nMEDIA_URL = ''\nUPLOAD_PATH = \"/opt/opsany/\"\nTERMINAL_PATH = \"/opt/opsany/uploads/terminal\"\nORI_GUACD_PATH = \"/opt/opsany/uploads/guacamole\"\nTERMINAL_TIMEOUT = 1800\n\nINSTALLED_APPS += (\n    'channels',\n)\n\n# Database\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': 'bastion',  # 数据库名\n            'USER': 'bastion',  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB\",\n            }\n\n        },\n    }\n)\n\n# Redis\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\nif REDIS_USERNAME == \"REDIS_USERNAME\":  # 当该变量没有被替换时设置为空，防止与密码直接拼入\n    REDIS_USERNAME = \"\"\n\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 86400,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"cache\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"mfa\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"pod_login\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/14\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        }\n    }\n)\n\nCHANNEL_LAYERS = {\n    'default': {\n        'BACKEND': 'channels_redis.core.RedisChannelLayer',\n        'CONFIG': {\n            'hosts': [\"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT)],\n            \"symmetric_encryption_keys\": [SECRET_KEY],\n        },\n    }\n}\n\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-paas-websocket',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-paas/websocket/settings_production.py.websocket.init",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'BASE_DIR']\n\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'bastion'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"BASTION_SECRET_KEY\"\n# PAAS平台URL\nBK_URL = \"https://PAAS_PAAS_IP\"\n# UploadPath\nUPLOAD_PATH = \"/opt/opsany/\"\n# MFA过期时间，单位：秒\nMFA_TIME_OUT = 1800\n\naccess_token=\"opsany-esb-auth-token-9e8083137204\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-paas/websocket/websocket.ini",
    "content": "[program:websocket]\ncommand=uvicorn --proxy-headers --host 0.0.0.0 --port 8004 asgi:application --workers 4\ndirectory=/opt/opsany/websocket\nenvironment=BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs\",APP_ID=\"bastion\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_websocket.log\nstopasgroup=true\nkillasgroup=true"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'apm'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"APM_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = 'http://LOCAL_IP:8003'\n\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n\nif 'BKPAAS_ENVIRONMENT' in os.environ:\n    ENVIRONMENT = os.getenv('BKPAAS_ENVIRONMENT', 'dev')\n# V2判断环境的环境变量为BK_ENV\nelse:\n    PAAS_V2_ENVIRONMENT = os.environ.get('BK_ENV', 'development')\n    ENVIRONMENT = {\n        'development': 'dev',\n        'testing': 'stag',\n        'production': 'prod',\n    }.get(PAAS_V2_ENVIRONMENT)"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/apm/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/apm/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nfrom urllib import parse\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_APM_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n        },\n    }\n)\nKIBANA_ES_USERNAME = \"KIBANA_USERNAME\"\nKIBANA_ES_PASSWORD = \"KIBANA_PASSWORD\"\nKIBANA_ES_CLUSTER = \"KIBANA_CLUSTER\"\n\nES_USERNAME = \"ELASTIC_USERNAME\"\nES_PASSWORD = \"ELASTIC_PASSWORD\"\nES_CLUSTER = \"ELASTIC_CLUSTER\"\nHEART_BEAT_INDEX = \"ELASTIC_SEARCH_INDEX\"\nCORS_ALLOW_CREDENTIALS = True\n\n\nimport mongoengine\n\n# MongoDB Config\nMONGO_CONN = mongoengine.connect(\n    db='prom',  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username='prom',\n    password=\"MONGO_PROM_PASSWORD\",\n    connect=False\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-apm',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-apm-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n\n# 单位秒\nHOME_PAGE_LAST_TIME = 60 * 15\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/21'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Reids Cache\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/21\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n             # 'TIMEOUT': 86400,  # 1天\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                # \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        }\n    },\n)\n"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-supervisor.ini",
    "content": "[program: apm_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/apm.ini\nstdout_logfile = /opt/opsany/logs/apm/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: apm_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/apm/manage.py celery worker -n apm -l INFO --autoscale=16,4\ndirectory = /opt/opsany/apm\nstdout_logfile = /opt/opsany/logs/apm/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:apm]\ncommand = /usr/local/bin/python3 /opt/opsany/apm/manage.py celery beat\ndirectory = /opt/opsany/apm\nstdout_logfile =/opt/opsany/logs/apm/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/apm/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/apm\nmodule = wsgi:application\nmount = /o/apm=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'auto'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"AUTO_SECRET_KEY\"\n# PAAS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = 'http://LOCAL_IP:8003'\n# 默认头像\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany/\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/auto/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/auto/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nfrom urllib import parse\nimport mongoengine\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_AUTO_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# MongoDB Config\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                                 # 需要进行操作的数据库名称\n        alias='default',                          # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_AUTO_PASSWORD\",\n        connect=False\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/12'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-auto',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-auto-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-supervisor.ini",
    "content": "[program: auto_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/auto.ini\nstdout_logfile = /opt/opsany/logs/auto/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: auto_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/auto/manage.py celery worker -n auto -l INFO --autoscale=16,4\ndirectory = /opt/opsany/auto\nstdout_logfile = /opt/opsany/logs/auto/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:auto_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/auto/manage.py celery beat\ndirectory = /opt/opsany/auto\nstdout_logfile =/opt/opsany/logs/auto/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/auto/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/auto\nmodule = wsgi:application\nmount = /o/auto=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'bastion'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"BASTION_SECRET_KEY\"\n# PAAS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n# UploadPath\nUPLOAD_PATH = \"/opt/opsany/\"\n# MFA过期时间，单位：秒\nMFA_TIME_OUT = 1800\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n# 默认语言和主题\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/bastion/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/bastion/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER, MFA_TIME_OUT\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n#GUACD_HOST = '127.0.0.1'\n#GUACD_PORT = '4822'\nFOOT_CLIENT_IP = \"BASTION_FOOT_CLIENT_IP\"\nFOOT_CLIENT_PORT = \"BASTION_FOOT_CLIENT_PORT\"\n\n# 对应guacd的路径如下\nGUACD_PATH = \"/srv/guacamole\"\n\nMEDIA_URL = ''\nUPLOAD_PATH = \"/opt/opsany/\"\nTERMINAL_PATH = \"/opt/opsany/uploads/terminal\"\nORI_GUACD_PATH = os.path.join(\"/opt/opsany/uploads/guacamole\")\nTERMINAL_TIMEOUT = 1800\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': 'bastion',  # 数据库名\n            'USER': 'bastion',  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_BASTION_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\n# BROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/8'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Redis Cache\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 86400,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            }\n        },\n        \"cache\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"mfa\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"pod_login\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/14\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        }\n    }\n)\n\nWEBSOCKET_CHANNEL_LAYERS = [\"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT)]\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-bastion',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-bastion-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-supervisor.ini",
    "content": "[program: bastion_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/bastion.ini\nstdout_logfile = /opt/opsany/logs/bastion/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/bastion/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/bastion\nmodule = wsgi:application\nmount = /o/bastion=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-init.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2020 OpsAny. All Rights Reserved. \n\n需要配置和开发中心一致的SECRET_KEY，会记录在paas_app表中的auth_token字段。\n\"\"\"\n\n\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'cmdb'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"CMDB_SECRET_KEY\"\n# 开发中心URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany\"\n# 默认头像\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/cmdb/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/cmdb/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-prod.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2020 OpsAny. All Rights Reserved. \n\n\"\"\" # noqa\nfrom urllib import parse\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# 正式环境数据库可以在这里配置\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_CMDB_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\nimport mongoengine\n\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                                 # 需要进行操作的数据库名称\n        alias='default',                          # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_CMDB_PASSWORD\",\n        connect=False\n        # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/3'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-cmdb',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-cmdb-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-supervisor.ini",
    "content": "[program: cmdb_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/cmdb.ini\nstdout_logfile = /opt/opsany/logs/cmdb/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true\n\n[program: cmdb_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/cmdb/manage.py celery worker -n cmdb -l INFO --autoscale=8,1\ndirectory = /opt/opsany/cmdb\nstdout_logfile = /opt/opsany/logs/cmdb/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true\n\n[program:cmdb_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/cmdb/manage.py celery beat\ndirectory = /opt/opsany/cmdb\nstdout_logfile =/opt/opsany/logs/cmdb/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/cmdb/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/cmdb\nmodule = wsgi:application\nmount = /o/cmdb=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'cmp'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"CMP_SECRET_KEY\"\n# PAAS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# 默认头像\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n# MFA过期时间，单位：秒\nMFA_TIME_OUT = 1800\n\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/cmp/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/cmp/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n\n"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER, MFA_TIME_OUT\nimport mongoengine\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_CMP_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = \"REDIS_SERVER_USER\"\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/7'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Redis Cache\nCACHES = {\n    \"default\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://{}:{}@{}:{}/7\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n        'TIMEOUT': MFA_TIME_OUT,\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": REDIS_PASSWORD,\n        }\n    },\n    \"mfa\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://{}:{}@{}:{}/7\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n        'TIMEOUT': MFA_TIME_OUT,\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": REDIS_PASSWORD,\n        }\n    }\n}\n\n# MongoDB配置\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                                 # 需要进行操作的数据库名称\n        alias='default',                          # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_CMP_PASSWORD\",\n        connect=False\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-cmp',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-cmp-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-supervisor.ini",
    "content": "[program: cmp_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/cmp.ini\nstdout_logfile = /opt/opsany/logs/cmp/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: cmp_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/cmp/manage.py celery worker -n cmp -l INFO --autoscale=8,1\ndirectory = /opt/opsany/cmp\nstdout_logfile = /opt/opsany/logs/cmp/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:cmp_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/cmp/manage.py celery beat\ndirectory = /opt/opsany/cmp\nstdout_logfile =/opt/opsany/logs/cmp/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/cmp/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/cmp\nmodule = wsgi:application\nmount = /o/cmp=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'code'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"CODE_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/code/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/code/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_CODE_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-code',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-code-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-supervisor.ini",
    "content": "[program: code_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/code.ini\nstdout_logfile = /opt/opsany/logs/code/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/code/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/code\nmodule = wsgi:application\nmount = /o/code=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/control/control-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR', 'ESB_BASE_URL']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'control'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"CONTROL_SECRET_KEY\"\n# 运维平台URL\n\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n# ESB基础URL\nESB_BASE_URL = BK_URL\n\n# RosterFileUrl  default=\"/etc/salt/roster\"\nROSTER_FILE_URL = \"/etc/salt/roster\"\n# Salt-Ssh秘钥存放路径\nSALT_SSH_FILE_URL = \"/etc/salt/pki/master/ssh\"\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\nTMP_DIR = os.path.join(BASE_DIR, 'tmp')\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/control/control-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/control/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/control/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/control/control-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n\n"
  },
  {
    "path": "install/conf/opsany-saas/control/control-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_CONTROL_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/4'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Reis Cache\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n             \"LOCATION\": \"redis://{}:{}@{}:{}/1\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            # 'TIMEOUT': 86400,  # 1天\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                # \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"salt\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/9\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            # 'TIMEOUT': 3600,  # 1天\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                # \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                \"PASSWORD\": REDIS_PASSWORD,\n            }\n        }\n    }\n)\n\nCHANNEL_LAYERS = {\n    'default': {\n        # 'BACKEND': 'asgi_redis.RedisChannelLayer',\n        'BACKEND': 'channels_redis.core.RedisChannelLayer',\n        'CONFIG': {\n            'hosts': [\"redis://{}:{}@{}:{}/9\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT)],\n            \"symmetric_encryption_keys\": [SECRET_KEY],\n        },\n        # 'ROUTING': 'shell.routing.channel_routing',\n    }\n}\n\nASGI_APPLICATION = 'terminal.routing.application'\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\n# BROKER_URL = 'amqp://opsany:123456.coM@127.0.0.1:5672//'\n# BROKER_URL = 'redis://:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/2'.format(REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# BROKER_URL = 'redis://localhost:6379/2'\n# CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2'\n# CELERY_ACCEPT_CONTENT = ['json']\n# CELERY_TASK_SERIALIZER = 'json'\n# CELERY_RESULT_SERIALIZER = 'json'\n\nCORS_ALLOW_CREDENTIALS = True\n\nGUACD_HOST = '127.0.0.1'\nGUACD_PORT = '4822'\n# paas服务器本地路径，\nORI_GUACD_PATH = \"/opt/opsany/uploads/guacamole/\"\n# 对应guacd的路径如下\nGUACD_PATH = \"/srv/guacamole\"\n# 堡垒机超时时间，单位:秒\nTERMINAL_TIMEOUT = 1800\nTERMINAL_PATH = \"/opt/opsany/uploads/terminal\"\nMEDIA_URL = ''\nUPLOAD_PATH = \"/opt/opsany/\"\nMETRIC_PACKAGE_PATH = \"uploads/agent/prom-exporter/\"\nMETRIC_LOGO_PATH = \"uploads/control/metric/logo/\"\nMINION_CACHE_FILE = \"uploads/control/minion_cache_file/\"\nCOLLECT_SCRIPT_PATH = \"uploads/control/collect/script/\"\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-control',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-control-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/control/control-supervisor.ini",
    "content": "[program: control_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/control.ini\nstdout_logfile = /opt/opsany/logs/control/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopwaitsecs = 60\nstopasgroup=true\nkillasgroup=true\n\n[program: control_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/control/manage.py celery worker -n control -l INFO --autoscale=8,2\ndirectory = /opt/opsany/control\nstdout_logfile = /opt/opsany/logs/control/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true\n\n[program:control_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/control/manage.py celery beat\ndirectory = /opt/opsany/control\nstdout_logfile =/opt/opsany/logs/control/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true\n"
  },
  {
    "path": "install/conf/opsany-saas/control/control-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/control/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/control\nmodule = wsgi:application\nmount = /o/control=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'dashboard'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = os.getenv(\"APP_TOKEN\", \"DASHBOARD_SECRET_KEY\")\n# SaaS平台URL\nBK_URL = os.getenv(\"BK_PAAS_HOST\", \"https://DOMAIN_NAME\")\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n# 默认语言和主题\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/dashboard/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/dashboard/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': os.getenv(\"MYSQL_PASSWORD\", \"MYSQL_OPSANY_DASHBOARD_PASSWORD\"),  # 数据库密码\n            'HOST': os.getenv(\"MYSQL_HOST\", \"MYSQL_SERVER_IP\"),  # 数据库主机\n            'PORT': int(os.getenv(\"MYSQL_PORT\", \"MYSQL_SERVER_PORT\")),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-dashboard',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-dashboard-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-supervisor.ini",
    "content": "[program: dashboard_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/dashboard.ini\nstdout_logfile = /opt/opsany/logs/dashboard/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile2 = /opt/opsany/uwsgi/uwsgi.pid\nlogto2 = /opt/opsany/logs/dashboard/uwsgi.log\n\nlogdate = true\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\n\nmemory-report = true\n\nmaster = true\nvacuum = true\n\nchdir = /opt/opsany/dashboard\nmodule = wsgi:application\n\n#cheaper = 4\n#cheaper-initial = 4\n\n#workers = 16\nprocesses = 4\nthreads = 2\n#cheaper-algo = busyness\n#cheaper-overload = 5\n#cheaper-step = 2\n#cheaper-busyness-multiplier = 60\n\n#buffer-size = 8192\n#post-buffering = 8192\n\nmax-requests = 1024\nmount = /o/dashboard=wsgi.py\nmanage-script-name = true\n"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'deploy'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"DEPLOY_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH =\"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# 默认主题和语言\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/deploy/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/deploy/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nfrom urllib import parse\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_DEPLOY_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\nimport mongoengine\n\nMONGO_CONN = mongoengine.connect(\n    db=\"devops\",  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username=\"devops\",\n    password=\"MONGO_DEVOPS_PASSWORD\",\n    connect=False,\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/18'.format(REDIS_USERNAME=REDIS_USERNAME,REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-deploy',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-deploy-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-supervisor.ini",
    "content": "[program: deploy_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/deploy.ini\nstdout_logfile = /opt/opsany/logs/deploy/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: deploy_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/deploy/manage.py celery worker -n deploy -l INFO --autoscale=16,4\ndirectory = /opt/opsany/deploy\nstdout_logfile = /opt/opsany/logs/deploy/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/deploy/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/deploy\nmodule = wsgi:application\nmount = /o/deploy=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'UPLOAD_PATH', 'BASE_DIR', 'DEFAULT_USER_ICON', \"ENV_URL\"]\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'devops'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"DEVOPS_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH =\"/opt/opsany\"\n\n# 运行环境URL\nurl = {\"development\": \"\", \"production\": \"o\", \"testing\": \"t\"}\nENV_URL = url.get(os.getenv(\"BK_ENV\", \"testing\"))\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/devops/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/devops/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nfrom urllib import parse\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\nMODEL_FILE_URL = \"uploads/{}/model_file\".format(APP_CODE)\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_DEVOPS_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\nimport mongoengine\n\nMONGO_CONN = mongoengine.connect(\n    db=APP_CODE,  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username=APP_CODE,\n    password=\"MONGO_DEVOPS_PASSWORD\",\n    connect=False,\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/9'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-devops',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-devops-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-supervisor.ini",
    "content": "[program: devops_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/devops.ini\nstdout_logfile = /opt/opsany/logs/devops/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: devops_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/devops/manage.py celery worker -n devops -l INFO --autoscale=16,4\ndirectory = /opt/opsany/devops\nstdout_logfile = /opt/opsany/logs/devops/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/devops/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/devops\nmodule = wsgi:application\nmount = /o/devops=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/event/event-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR', 'UPLOAD_PATH', 'DEFAULT_USER_ICON']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'event'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"EVENT_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n# 附件根路径\nUPLOAD_PATH = \"/opt/opsany/\"\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/event/event-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/event/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/event/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/event/event-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/event/event-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nfrom urllib import parse\nimport mongoengine\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_EVENT_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n        },\n    }\n)\n\n# MongoDB Config\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                    # 需要进行操作的数据库名称\n        alias='default',                         # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_EVENT_PASSWORD\",\n        connect=False,\n        # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/11'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-event',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-event-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/event/event-supervisor.ini",
    "content": "[program: event_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/event.ini\nstdout_logfile = /opt/opsany/logs/event/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: event_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/event/manage.py celery worker -n event -l INFO --autoscale=16,4\ndirectory = /opt/opsany/event\nstdout_logfile = /opt/opsany/logs/event/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:event_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/event/manage.py celery beat\ndirectory = /opt/opsany/event\nstdout_logfile =/opt/opsany/logs/event/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/event/event-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/event/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/event\nmodule = wsgi:application\nmount = /o/event=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/foot/.gitkeep",
    "content": ""
  },
  {
    "path": "install/conf/opsany-saas/foot/config.yml",
    "content": "# Paas域名地址(用来获取堡垒机主机数据)\nPAAS_DOMAIN: DOMAIN_NAME\n# 绑定IP\nBIND_HOST: 0.0.0.0\n# 绑定端口\nSSHD_PORT: 8013\n# 堡垒机秘钥用来解析密码\nSECRET_KEY: BASTION_SECRET_KEY\n# 测试环境 testing 生成环境 production\nBASTION_ENV: production\n\n# Redis相关配置\nREDIS_HOST: FOOT_REDIS_HOST\nREDIS_PORT: FOOT_REDIS_PORT\nREDIS_DB: 8\nREDIS_USERNAME: FOOT_REDIS_USERNAME\nREDIS_PASSWORD: FOOT_REDIS_PASSWORD\n\n# MySQL相关配置\nMYSQL_HOST: FOOT_MYSQL_HOST\nMYSQL_PORT: FOOT_MYSQL_PORT\nMYSQL_USERNAME: bastion\nMYSQL_PASSWORD: FOOT_MYSQL_PASSWORD\nMYSQL_DB_NAME: bastion\n\n# 日志级别\nLOG_LEVEL: ERROR\n# 调试模式\nDEBUG: false\n\n# 主机列表默认页数\nPAGE_SIZE: 30\n# 登录失败锁定次数\nLOCK_LOGIN_FAILURE_COUNT: 5\n# 锁定时间 单位小时\nLOGIN_FAILURE_LOCK_HOUR: 24\n\n# 连接超时时间\nSSH_TIMEOUT: 3\n# 心跳间隔时间\nHEARTBEAT_INTERVAL: 20\n# 最大连接数\nMAX_CONNECTIONS: 500\n# 语言\nLANGUAGE_CODE: zh\nSECURITY_MAX_IDLE_TIME: 60\nASSET_LIST_PAGE_SIZE: auto\nREUSE_CONNECTION: true\nFORCE_REMOVE_FOLDER: false\nVERSION: 2.3.0\n\n"
  },
  {
    "path": "install/conf/opsany-saas/foot/foot-supervisor.ini",
    "content": "[program: foot]\ncommand = python3 /opt/opsany/bastion-foot/maind start\nstdout_logfile = /opt/opsany/logs/foot/server.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nstopasgroup=true\nkillasgroup=true\n"
  },
  {
    "path": "install/conf/opsany-saas/job/job-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR', 'ENVIRONMENT', 'UPLOAD_PATH']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'job'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"JOB_SECRET_KEY\"\n# 开发中心URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany\"\n# Salt配置\nFILE_ROOT = \"/srv/salt/\"\n# Salt配置\nPILLAR_ROOT = \"/srv/pillar/\"\n# Ansible配置\nPLAYBOOK_ROOT = \"/srv/playbook/\"\n# Ansible配置\nINVSCRIPT_FILE = \"/opt/opsany/uploads/invscript.py\"\n\n# 默认头像\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/job/job-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/job/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/job/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/job/job-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n\n"
  },
  {
    "path": "install/conf/opsany-saas/job/job-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nfrom config import RUN_VER\nimport mongoengine\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_JOB_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/5'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n\n# Redis Cache\nCACHES = {\n    \"default\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://{}:{}@{}:{}/10\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n        'TIMEOUT': 1800,  # 30分钟\n        \"OPTIONS\": {\n            \"CLIENT_CALSS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": REDIS_PASSWORD\n        }\n    }\n}\n\n# MongoDB\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                                 # 需要进行操作的数据库名称\n        alias='default',                          # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_JOB_PASSWORD\",\n        connect=False\n        # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-job',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-job-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/job/job-supervisor.ini",
    "content": "[program: job_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/job.ini\nstdout_logfile = /opt/opsany/logs/job/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: job_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/job/manage.py celery worker -n job -l INFO --autoscale=8,2\ndirectory = /opt/opsany/job\nstdout_logfile = /opt/opsany/logs/job/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:job_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/job/manage.py celery beat\ndirectory = /opt/opsany/job\nstdout_logfile =/opt/opsany/logs/job/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/job/job-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/job/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/job\nmodule = wsgi:application\nmount = /o/job=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'k8s'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"K8S_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\""
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/k8s/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/k8s/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nfrom urllib import parse\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_K8S_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/14'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\nHELM_CONFIG_PATH = \"/opt/opsany/hcp/\"\nHELM_BASH_PATH = \"/usr/bin/helm\"\nVELERO_BASH_PATH = \"/usr/bin/velero\"\n\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/14\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 86400,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            }\n        }\n    }\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-k8s',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-k8s-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-supervisor.ini",
    "content": "[program: k8s_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/k8s.ini\nstdout_logfile = /opt/opsany/logs/k8s/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: k8s_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/k8s/manage.py celery worker -n k8s -l INFO --autoscale=16,4\ndirectory = /opt/opsany/k8s\nstdout_logfile = /opt/opsany/logs/k8s/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:k8s_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/k8s/manage.py celery beat\ndirectory = /opt/opsany/k8s\nstdout_logfile =/opt/opsany/logs/k8s/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/k8s/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/k8s\nmodule = wsgi:application\nmount = /o/k8s=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'kbase'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"KBASE_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH =\"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# 默认语言和主题\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/kbase/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/kbase/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nimport mongoengine\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_KBASE_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n\n# MongoDB Config\nMONGO_CONN = mongoengine.connect(\n    db=APP_CODE,  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username=APP_CODE,\n    password=\"MONGO_KBASE_PASSWORD\",\n    connect=False,\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\nFILE_UPLOAD_ENDSWITH_LIST = [\n    # 图片格式\n    \" bmp\", \"jpg\", \"png\", \"tif\", \"gif\", \"pcx\", \"tga\", \"exif\", \"fpx\", \"svg\", \"psd\", \"cdr\", \"pcd\", \"dxf\", \"ufo\", \"eps\", \"ai\", \"raw\", \"wmf\", \"webp\", \"avif\", \"apng\",\n    # 文件格式\n    \"doc\",\"docx\", \"xls\", \"xlsx\", \"ppt\", \"pptx\", \"pot\", \"pps\", \"txt\", \"md\", \"xsl\", \"mind\", \"ps\", \"eps\", \"xmind\", \"xmmap\", \"mmap\",\n]\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-kbase',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-kbase-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-supervisor.ini",
    "content": "[program: kbase_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/kbase.ini\nstdout_logfile = /opt/opsany/logs/kbase/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/kbase/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/kbase\nmodule = wsgi:application\nmount = /o/kbase=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'llmops'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"LLMOPS_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/llmops/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/llmops/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nfrom urllib import parse\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_LLMOPS_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n        },\n    }\n)\nimport mongoengine\n\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                                 # 需要进行操作的数据库名称\n        alias='default',                          # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_LLMOPS_PASSWORD\",\n        connect=False\n        # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nCELERY_BROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/14'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\nCELERY_RESULT_BACKEND = CELERY_BROKER_URL\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/14\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 86400,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            }\n        }\n    }\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-llmops',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-llmops-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-supervisor.ini",
    "content": "[program: llmops_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/llmops.ini\nstdout_logfile = /opt/opsany/logs/llmops/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/llmops/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/llmops\nmodule = wsgi:application\nlazy-apps = true\nenable-threads = true\nsingle-interpreter = true\nmount = /o/llmops=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024"
  },
  {
    "path": "install/conf/opsany-saas/log/log-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'log'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"LOG_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH = \"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n# 默认语言和主题\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/log/log-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/log/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/log/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/log/log-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/log/log-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_LOG_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-log',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-log-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/log/log-supervisor.ini",
    "content": "[program: log_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/log.ini\nstdout_logfile = /opt/opsany/logs/log/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n"
  },
  {
    "path": "install/conf/opsany-saas/log/log-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/log/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/log\nmodule = wsgi:application\nmount = /o/log=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'monitor'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"MONITOR_SECRET_KEY\"\n# SaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\nif 'BKPAAS_ENVIRONMENT' in os.environ:\n    ENVIRONMENT = os.getenv('BKPAAS_ENVIRONMENT', 'dev')\n# V2判断环境的环境变量为BK_ENV\nelse:\n    PAAS_V2_ENVIRONMENT = os.environ.get('BK_ENV', 'development')\n    ENVIRONMENT = {\n        'development': 'dev',\n        'testing': 'stag',\n        'production': 'prod',\n    }.get(PAAS_V2_ENVIRONMENT)\n\n# 默认头像\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\""
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/monitor/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/monitor/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n\n"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, default\nfrom urllib import parse\n\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_MONITOR_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/6'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-monitor',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-monitor-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-supervisor.ini",
    "content": "[program: monitor_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/monitor.ini\nstdout_logfile = /opt/opsany/logs/monitor/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/monitor/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/monitor\nmodule = wsgi:application\nmount = /o/monitor=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'pipeline'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"PIPELINE_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH =\"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/pipeline/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/pipeline/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_PIPELINE_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\nimport mongoengine\n\nMONGO_CONN = mongoengine.connect(\n    db=DEVOPS_NAME,  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username='devops',\n    password=\"MONGO_DEVOPS_PASSWORD\",\n    connect=False,\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/17'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-pipeline',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-pipeline-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-supervisor.ini",
    "content": "[program: pipeline_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/pipeline.ini\nstdout_logfile = /opt/opsany/logs/pipeline/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: pipeline_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/pipeline/manage.py celery worker -n pipeline -l INFO --autoscale=16,4\ndirectory = /opt/opsany/pipeline\nstdout_logfile = /opt/opsany/logs/pipeline/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/pipeline/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/pipeline\nmodule = wsgi:application\nmount = /o/pipeline=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'prom'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"PROM_SECRET_KEY\"\n# SaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\nif 'BKPAAS_ENVIRONMENT' in os.environ:\n    ENVIRONMENT = os.getenv('BKPAAS_ENVIRONMENT', 'dev')\n# V2判断环境的环境变量为BK_ENV\nelse:\n    PAAS_V2_ENVIRONMENT = os.environ.get('BK_ENV', 'development')\n    ENVIRONMENT = {\n        'development': 'dev',\n        'testing': 'stag',\n        'production': 'prod',\n    }.get(PAAS_V2_ENVIRONMENT)\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/prom/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/prom/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, default\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\nfrom urllib import parse\nimport mongoengine\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# MySQL Config\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_PROM_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# MongoDB Config\nMONGO_CONN = mongoengine.connect(\n    db=APP_CODE,  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username=APP_CODE,\n    password=\"MONGO_PROM_PASSWORD\",\n    connect=False\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n\nELASTIC_SEARCH = {\n    \"USER\": \"ELASTIC_SEARCH_USERNAME\",\n    \"PASSWORD\": \"ES_PASSWORD\",\n    \"HOST\": \"ES_SERVER_IP\",\n    \"PORT\": \"9200\",\n    \"SCHEME\": \"https\",  # http https\n}\n\nHEART_BEAT_INDEX = \"ELASTIC_SEARCH_INDEX\"\nHEART_BEAT_MONITOR_D = \"{}/uploads/monitor/heartbeat-monitors.d/\".format(default.UPLOAD_PATH)\n\ntry:\n    os.makedirs(HEART_BEAT_MONITOR_D)\nexcept Exception:\n    pass\n\n# 静态文件\nsetattr(default, \"HEART_BEAT_MONITOR_D\", HEART_BEAT_MONITOR_D)\n\n\n# Prom Alert Rules Path\nPROM_ALERT_RULE_PATH = \"{}/uploads/prometheus-config/rules/\".format(default.UPLOAD_PATH)\nif not os.path.exists(PROM_ALERT_RULE_PATH):\n    os.makedirs(PROM_ALERT_RULE_PATH)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/15'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-prom',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-prom-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-supervisor.ini",
    "content": "[program: prom_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/prom.ini\nstdout_logfile = /opt/opsany/logs/prom/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: prom_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/prom/manage.py celery worker -n prom -l INFO --autoscale=16,4\ndirectory = /opt/opsany/prom\nstdout_logfile = /opt/opsany/logs/prom/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:prom_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/prom/manage.py celery beat\ndirectory = /opt/opsany/prom\nstdout_logfile =/opt/opsany/logs/prom/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/prom/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/prom\nmodule = wsgi:application\nmount = /o/prom=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR', 'ESB_BASE_URL']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'rbac'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"RBAC_SECRET_KEY\"\n# SaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = 'http://LOCAL_IP:8003'\nBK_PAAS_URL = BK_URL\nESB_BASE_URL = BK_URL\nUPLOAD_PATH = \"/opt/opsany/\"\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\n\n# 默认语言和默认主题\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/rbac/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/rbac/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER, UPLOAD_PATH\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\nLOGIN_LOGO_CACHE_DIR = os.path.join(UPLOAD_PATH, \"uploads/rbac/cache_icon/\")\n\nif not os.path.exists(LOGIN_LOGO_CACHE_DIR):\n    os.makedirs(LOGIN_LOGO_CACHE_DIR)\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_RBAC_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            # 'ATOMIC_REQUESTS': True,\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n        },\n    }\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = \"REDIS_SERVER_USER\"\nREDIS_PASSWORD = \"REDIS_SERVER_PASSWORD\"\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/1'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Redis Cache\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/9\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            }\n        }\n    }\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-rbac',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-rbac-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n\n# 增加新的saas需要将新平台的组件系统和同步用户组件名录入该配置才可以实现用户的新平台本地同步\n# 1: 平台中文名称\n# 2: 平台code\n# 3: 系统名称（API网关-系统管理-系统名称）\n# 4: 通道名称（API网关-通道管理-组件代号-组件文件名）\nSYNC_USER_INFO_LIST = [\n    # (\"演示平台\", \"demo\", \"demo\", \"sync_user_info\"),\n]\n\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-supervisor.ini",
    "content": "[program: rbac_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/rbac.ini\nstdout_logfile = /opt/opsany/logs/rbac/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program: rbac_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/rbac/manage.py celery worker -n rbac -l INFO --autoscale=16,2\ndirectory = /opt/opsany/rbac\nstdout_logfile = /opt/opsany/logs/rbac/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n[program:rbac_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/rbac/manage.py celery beat\ndirectory = /opt/opsany/rbac\nstdout_logfile =/opt/opsany/logs/rbac/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/rbac/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/rbac\nmodule = wsgi:application\nmount = /o/rbac=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'repo'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"REPO_SECRET_KEY\"\n# PaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = \"http://LOCAL_IP:8003\"\n\n# Upload目录\nUPLOAD_PATH =\"/opt/opsany\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# 工作台首页默认用户图标路径\nDEFAULT_USER_ICON = \"uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png\"\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/repo/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/repo/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\nUPLOAD_PATH = \"/opt/opsany/\"\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_REPO_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\nimport mongoengine\n\nMONGO_CONN = mongoengine.connect(\n    db=DEVOPS_NAME,  # 需要进行操作的数据库名称\n    alias='default',  # 必须定义一个default数据库\n    host=\"MONGO_SERVER_IP\",\n    port=int(\"MONGO_SERVER_PORT\"),\n    username='devops',\n    password=\"MONGO_DEVOPS_PASSWORD\",\n    connect=False,\n    # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/17'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n\nHARBOR_URL = \"REPO_HARBOR_URL\"\nHARBOR_USERNAME = \"REPO_HARBOR_USERNAME\"\nHARBOR_PASSWORD = \"REPO_HARBOR_PASSWORD\"\n\n\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:8000',\n]\n\nCORS_ALLOW_CREDENTIALS = True\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-repo',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-repo-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-supervisor.ini",
    "content": "[program: repo_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/repo.ini\nstdout_logfile = /opt/opsany/logs/repo/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\n\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/repo/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/repo\nmodule = wsgi:application\nmount = /o/repo=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 4\ncheaper-initial = 4\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-init.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR', 'UPLOAD_PATH', 'ENV_URL']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'workbench'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = \"WORKBENCH_SECRET_KEY\"\n# SaaS平台URL\nBK_URL = \"https://DOMAIN_NAME\"\nPAAS_ESB_URL = \"http://LOCAL_IP:8002\"\nPAAS_LOGIN_URL = 'http://LOCAL_IP:8003'\n# Upload路径\nUPLOAD_PATH = \"/opt/opsany/\"\n# 运行环境URL\nurl = {\"development\": \"\", \"production\": \"o\", \"testing\": \"t\"}\nENV_URL = url.get(os.getenv(\"BK_ENV\", \"testing\"))\n# COOKIE有效时间需要和Login保持一致\nBK_COOKIE_AGE = 60 * 60 * 24\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\"\n"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-nginx-main.conf",
    "content": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker_processes 2;\n\n# Enables the use of JIT for regular expressions to speed-up their processing.\npcre_jit on;\n\n# Configures default error logger.\nerror_log /opt/opsany/logs/workbench/nginx-error.log warn;\n\n# Includes files with directives to load dynamic modules.\ninclude /etc/nginx/modules/*.conf;\n\n# Uncomment to include files with config snippets into the root context.\n# NOTE: This will be enabled by default in Alpine 3.15.\n#include /etc/nginx/conf.d/*.conf;\n\nevents {\n        # The maximum number of simultaneous connections that can be opened by\n        # a worker process.\n        worker_connections 4096;\n}\n\nhttp {\n        # Includes mapping of file name extensions to MIME types of responses\n        # and defines the default type.\n        include /etc/nginx/mime.types;\n        default_type application/octet-stream;\n\n        # Name servers used to resolve names of upstream servers into addresses.\n        # It's also needed when using tcpsocket and udpsocket in Lua modules.\n        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;\n\n        # Don't tell nginx version to the clients. Default is 'on'.\n        server_tokens off;\n\n        # Specifies the maximum accepted body size of a client request, as\n        # indicated by the request header Content-Length. If the stated content\n        # length is greater than this size, then the client receives the HTTP\n        # error code 413. Set to 0 to disable. Default is '1m'.\n        client_max_body_size 1m;\n\n        # Sendfile copies data between one FD and other from within the kernel,\n        # which is more efficient than read() + write(). Default is off.\n        sendfile on;\n\n        # Causes nginx to attempt to send its HTTP response head in one packet,\n        # instead of using partial frames. Default is 'off'.\n        tcp_nopush on;\n\n\n        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.\n        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.\n        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Path of the file with Diffie-Hellman parameters for EDH ciphers.\n        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`\n        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;\n\n        # Specifies that our cipher suits should be preferred over client ciphers.\n        # Default is 'off'.\n        ssl_prefer_server_ciphers on;\n\n        # Enables a shared SSL cache with size that can hold around 8000 sessions.\n        # Default is 'none'.\n        ssl_session_cache shared:SSL:2m;\n\n        # Specifies a time during which a client may reuse the session parameters.\n        # Default is '5m'.\n        ssl_session_timeout 1h;\n\n        # Disable TLS session tickets (they are insecure). Default is 'on'.\n        ssl_session_tickets off;\n\n\n        # Enable gzipping of responses.\n        #gzip on;\n\n        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.\n        gzip_vary on;\n\n\n        # Helper variable for proxying websockets.\n        map $http_upgrade $connection_upgrade {\n                default upgrade;\n                '' close;\n        }\n\n\n        # Specifies the main log format.\n        log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n                        '$status $body_bytes_sent \"$http_referer\" '\n                        '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        # Sets the path, format, and configuration for a buffered log write.\n        access_log /opt/opsany/logs/workbench/nginx-access.log main;\n\n\n        # Includes virtual hosts configs.\n        include /etc/nginx/http.d/*.conf;\n}\n"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-nginx.conf",
    "content": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    8192m;\n    location ~ ^/o/([^/]+)/static/(.*)$ {\n                alias /opt/opsany/$1/static/$2;\n        }\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n}\n\n"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nimport mongoengine\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# 工单外部连接是否认证 True 免认证 False 强认证\nWORK_ORDER_URL_APPROVE_NO_AUTH = True\n\n# 签到提前时间\nDUTY_SIGN_IN_START_HOUR = 1\n\n# 签退截止时间\nDUTY_SIGN_OUT_END_HOUR = 2\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n\n# 正式环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': APP_CODE,  # 数据库名\n            'USER': APP_CODE,  # 数据库用户\n            'PASSWORD': \"MYSQL_OPSANY_WORKBENCH_PASSWORD\",  # 数据库密码\n            'HOST': \"MYSQL_SERVER_IP\",  # 数据库主机\n            'PORT': int(\"MYSQL_SERVER_PORT\"),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n            }\n\n        },\n    }\n)\n\n# MongoDB Config\nMONGO_CONN = mongoengine.connect(\n        db=APP_CODE,                                 # 需要进行操作的数据库名称\n        alias='default',                          # 必须定义一个default数据库\n        host=\"MONGO_SERVER_IP\",\n        port=int(\"MONGO_SERVER_PORT\"),\n        username=APP_CODE,\n        password=\"MONGO_WORKBENCH_PASSWORD\",\n        connect=False\n        # authentication_source=\"admin\",           # 进行身份认证的数据库，通常这个数据库为admin\n)\n\n# 认证接口本地缓存时间(牵扯到接口反应时间和RBAC菜单授权生效时间)\nAUTH_API_CACHE_EXPIRATION = 60 * 5\n\n# Redis Config\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\n\n# Redis Celery AMQP\nBROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/2'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)\n\n# Reids Cache\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/10\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n             # 'TIMEOUT': 86400,  # 1天\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                # \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        }\n    },\n)\n\n# Elastic APM\nELASTIC_APM = {\n  'ENABLED': 'false',\n  'SERVICE_NAME': 'opsany-saas-workbench',\n  'SECRET_TOKEN': 'APM_SECRET_TOKEN',\n  'SERVER_URL': 'https://APM_SERVER_HOST:8200',\n  'VERIFY_SERVER_CERT': 'false',\n  'ENVIRONMENT': 'prod',\n}\n\n# Elastic frontend APM\nFRONTEND_ELASTIC_APM = {\n    'FRONTEND_SERVICE_NAME': 'opsany-saas-workbench-frontend',\n    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',\n    \"FRONTEND_ENABLED\": 'false',\n    'FRONTEND_ENVIRONMENT': 'prod',\n}\n\nYUN_PIAN_URL = \"YUN_PIAN_URL\"\nYUN_PIAN_APIKEY = \"YUN_PIAN_APIKEY\"\nYUN_PIAN_HS_CODE = \"YUN_PIAN_HS_CODE\"\nYUN_PIAN_ALERT_TPL_ID = \"YUN_PIAN_ALERT_TPL_ID\"\nYUN_PIAN_SERVER_CHECK_TPL_ID = \"YUN_PIAN_SERVER_CHECK_TPL_ID\"\n\n# 内网环境映射时可修改为映射IP\nDING_TALK_API_DOMAIN = \"https://api.dingtalk.com\"\nDING_TALK_OAPI_DOMAIN = \"https://oapi.dingtalk.com\"\n# 支持在请求头传一个参数用作内网认证\nDING_TALK_API_HEADER_CODE = \"hs-code\"  # 请求头参数\nDING_TALK_API_HEADER_DATA = \"DING_TALK_API_HEADER_DATA\"  # 请求头数据-API\nDING_TALK_OAPI_HEADER_DATA = \"DING_TALK_OAPI_HEADER_DATA\"  # 请求头数据-OAPI\n\n# 工单处理后当前免登录链接过期时间(天)\nWORK_ORDER_FREE_LINK_VALID_TIME = 30\n"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-supervisor.ini",
    "content": "[program: workbench_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/workbench.ini\nstdout_logfile = /opt/opsany/logs/workbench/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopwaitsecs = 60\nstopasgroup=true\nkillasgroup=true\n\n[program: workbench_celery]\ncommand = /usr/local/bin/python3 /opt/opsany/workbench/manage.py celery worker -n workbench -l INFO --autoscale=8,1\ndirectory = /opt/opsany/workbench\nstdout_logfile = /opt/opsany/logs/workbench/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true\n\n[program:workbench_beat]\ncommand = /usr/local/bin/python3 /opt/opsany/workbench/manage.py celery beat\ndirectory = /opt/opsany/workbench\nstdout_logfile =/opt/opsany/logs/workbench/celery-beat.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\"\nstopasgroup=true\nkillasgroup=true\n"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-uwsgi.ini",
    "content": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/workbench/uwsgi.log\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmaster = true\nvacuum = true\nchdir = /opt/opsany/workbench\nmodule = wsgi:application\nmount = /o/workbench=wsgi.py\nmanage-script-name = true\n\n# Worker\nprocesses = 16\nthreads = 2\nenable-threads = true\ncheaper = 3\ncheaper-initial = 3\ncheaper-algo = busyness\ncheaper-overload = 20\ncheaper-step = 2\ncheaper-busyness-multiplier = 50\nlisten = 128\n\n# Tuning\nreload-mercy = 30\nworker-reload-mercy = 30\nharakiri = 120\nbuffer-size = 65536\npost-buffering = 65536\nmax-requests = 2048\nmax-requests-delta = 20\nlimit-as = 1024\n\n"
  },
  {
    "path": "install/conf/paas_agent/paas_agent_config.yaml",
    "content": "auth:\n  sid: BK_PAASAGENT_SID\n  token: BK_PAASAGENT_TOKEN\nsettings:\n  CONTROLLER_SERVER_URL: 'http://LOCAL_IP:8000' # App Engine地址\n  PAAS_SERVER_URL: 'http://LOCAL_IP:8001' # PaaS地址，用于下载SaaS包。\n  BASE_PATH: '/opt/opsany/paas-agent/' # eg. /data/paas\n  BASE_APP_PATH: '/opt/opsany/paas-agent'\n  USE_PYPI: 'true'\n  AGENT_LOG_PATH: '/opt/opsany/logs/paas-agent.log'\n  TEMPLATE_PATH: 'etc/templates'\n  BUILD_PATH: 'etc/build'\n  EXECUTE_TIME_LIMIT: 3000\n  PYTHON_PIP: 'http://pypi.douban.com/simple/'\nport: 4245\nip: ''\n"
  },
  {
    "path": "install/conf/paas_agent/paasagent.conf",
    "content": "server {\n    listen       \t8085;\n    server_name\t \tlocalhost;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    512m;\n    location ~ ^/t/([^/]+)/static/(.*)$ {\n\t\talias /opt/opsany/paas-agent/apps/projects/$1/code/$1/static/$2;\n\t}\n\n\tlocation ~ ^/o/([^/]+)/static/(.*)$ {\n\t\talias /opt/opsany/paas-agent/apps/projects/$1/code/$1/static/$2;\n\t}\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n\n        if (!-f /opt/opsany/paas-agent/apps/projects/$2/run/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:/opt/opsany/paas-agent/apps/projects/$2/run/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n\n}\n"
  },
  {
    "path": "install/conf/paas_agent/supervisord.conf",
    "content": "[unix_http_server]\nfile = {{.app_project_path}}/{{.app_code}}/run/supervisord.sock\n\n[supervisorctl]\nconfiguration = {{.app_project_path}}/{{.app_code}}/conf/supervisord.conf\nserverurl = unix://{{.app_project_path}}/{{.app_code}}/run/supervisord.sock\n\n[supervisord]\npidfile = {{.app_project_path}}/{{.app_code}}/run/supervisord.pid\nlogfile = {{.log_home}}/{{.app_code}}/supervisord.log\ndirectory = {{.app_project_path}}/{{.app_code}}\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[program: {{.app_code}}_uwsgi]\ncommand = {{.base_app_path}}/Envs/{{.app_code}}/bin/uwsgi --ini {{.app_project_path}}/{{.app_code}}/conf/{{.app_code}}.ini\nstdout_logfile = {{.log_home}}/{{.app_code}}/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = {{.environment}}\n\n{{if eq .IS_USE_CELERY \"true\"}}\n[program: {{.app_code }}_celery]\ncommand = {{.base_app_path}}/Envs/{{.app_code}}/bin/python {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}/manage.py celery worker -n {{.app_code}} -l INFO --autoscale=8,1\ndirectory = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nstdout_logfile = {{.log_home}}/{{.app_code}}/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = {{.environment}}\n{{end}}\n\n{{if eq .IS_USE_CELERY_BEAT \"true\"}}\n[program:{{.app_code }}_beat]\ncommand = {{.base_app_path}}/Envs/{{.app_code}}/bin/python {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}/manage.py celery beat\ndirectory = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nstdout_logfile ={{.log_home}}/{{.app_code}}/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = {{.environment}}\n{{end}}\n"
  },
  {
    "path": "install/conf/paas_agent/uwsgi.ini.16g",
    "content": "[uwsgi]\nsocket = {{.app_project_path}}/{{.app_code}}/run/uwsgi.sock\npidfile2 = {{.app_project_path}}/{{.app_code}}/run/uwsgi.pid\nlogto2 = {{.log_home}}/{{.app_code}}/uwsgi.log\n\nlogdate = true\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\n\nmemory-report = true\n\nmaster = true\nvacuum = true\n\nchdir = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nmodule = wsgi:application\n\n#cheaper = 4\n#cheaper-initial = 4\n\n#workers = 4\nprocesses = 8\nthreads = 4\n#cheaper-algo = busyness\n#cheaper-overload = 5\n#cheaper-step = 2\n#cheaper-busyness-multiplier = 60\n\n#buffer-size = 8192\n#post-buffering = 8192\n\nmax-requests = 1024\n"
  },
  {
    "path": "install/conf/paas_agent/uwsgi.ini.8g",
    "content": "[uwsgi]\nsocket = {{.app_project_path}}/{{.app_code}}/run/uwsgi.sock\npidfile2 = {{.app_project_path}}/{{.app_code}}/run/uwsgi.pid\nlogto2 = {{.log_home}}/{{.app_code}}/uwsgi.log\n\nlogdate = true\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\n\nmemory-report = true\n\nmaster = true\nvacuum = true\n\nchdir = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nmodule = wsgi:application\n\n#cheaper = 4\n#cheaper-initial = 4\n\n#workers = 4\nprocesses = 2\nthreads = 2\n#cheaper-algo = busyness\n#cheaper-overload = 5\n#cheaper-step = 2\n#cheaper-busyness-multiplier = 60\n\n#buffer-size = 8192\n#post-buffering = 8192\n\nmax-requests = 1024\n"
  },
  {
    "path": "install/conf/prometheus/alertmanager.yml",
    "content": "templates:\n  - '/etc/alertmanager/template/*.tmpl'  #告警模板位置\n\nroute:\n  group_by: ['alertname']\n  group_wait: 30s\n  group_interval: 5m\n  repeat_interval: 1h\n  receiver: 'web.hook'\nreceivers:\n  - name: 'web.hook'\n    webhook_configs:\n      - url: 'http://127.0.0.1:5001/'\ninhibit_rules:\n  - source_match:\n      severity: 'critical'\n    target_match:\n      severity: 'warning'\n    equal: ['alertname', 'dev', 'instance']\n"
  },
  {
    "path": "install/conf/prometheus/blackbox.yml",
    "content": "modules:\n  http_2xx:\n    prober: http\n    http:\n      preferred_ip_protocol: \"ip4\"\n  http_post_2xx:\n    prober: http\n    http:\n      method: POST\n  tcp_connect:\n    prober: tcp\n  pop3s_banner:\n    prober: tcp\n    tcp:\n      query_response:\n      - expect: \"^+OK\"\n      tls: true\n      tls_config:\n        insecure_skip_verify: false\n  grpc:\n    prober: grpc\n    grpc:\n      tls: true\n      preferred_ip_protocol: \"ip4\"\n  grpc_plain:\n    prober: grpc\n    grpc:\n      tls: false\n      service: \"service1\"\n  ssh_banner:\n    prober: tcp\n    tcp:\n      query_response:\n      - expect: \"^SSH-2.0-\"\n      - send: \"SSH-2.0-blackbox-ssh-check\"\n  irc_banner:\n    prober: tcp\n    tcp:\n      query_response:\n      - send: \"NICK prober\"\n      - send: \"USER prober prober prober :prober\"\n      - expect: \"PING :([^ ]+)\"\n        send: \"PONG ${1}\"\n      - expect: \"^:[^ ]+ 001\"\n  icmp:\n    prober: icmp\n  icmp_ttl5:\n    prober: icmp\n    timeout: 5s\n    icmp:\n      ttl: 5\n"
  },
  {
    "path": "install/conf/prometheus/prometheus.yml",
    "content": "# my global config\nglobal:\n  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.\n  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.\n  # scrape_timeout is set to the global default (10s).\n\n# Alertmanager configuration\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n           - PROM_CONSUL_SERVER:9093\n\n      basic_auth:\n        username: admin\n        password: PROM_SERVER_PASSWD\n\n# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.\nrule_files:\n  - \"/var/lib/prometheus-config/rules/*rules.yml\"  # 增加告警规则yml文件路径\n  # - \"first_rules.yml\"\n  # - \"second_rules.yml\"\n\n# A scrape configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus itself.\nscrape_configs:\n  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.\n  - job_name: \"prometheus\"\n\n    # metrics_path defaults to '/metrics'\n    # scheme defaults to 'http'.\n\n#    static_configs:\n#      - targets: [\"localhost:9090\"]\n    basic_auth:\n      username: admin\n      password: PROM_SERVER_PASSWD\n\n  # Local Node  注释本地\n#  - job_name: \"local\"\n#    static_configs:\n#      - targets: [\"LOCAL_IP:9100\"]\n\n  - job_name: 'consul-prometheus'  # 从consul读取主机信息\n    consul_sd_configs:\n    - server: 'PROM_CONSUL_SERVER:8500'  # 配置consul服务，PROM_CONSUL_SERVER只需填入域名或IP地址\n      token: CONSUL_TOKEN\n      services: []\n    relabel_configs:\n      - regex: __meta_consul_service_metadata_(.+) # 添加meta的重新匹配，Mate数据为Labels标签\n        action: labelmap   #\n      - source_labels: [__meta_consul_service_id]  # 过滤consul自测服务数据 consul 127.0.0.1:8300\n        regex: ^(consul)\n        action: drop\n      - source_labels: [__meta_consul_service_metadata_endwith]  # 过滤scrape, 此为自定义的exporter\n        regex: ^(scrape)\n        action: drop\n\n  - job_name: consul-prometheus-scrape  # 自定义Exporter 通过参数获取不同实例exporter指标\n    scrape_interval: 15s\n    scrape_timeout: 5s\n    consul_sd_configs:\n      - server: 'PROM_CONSUL_SERVER:8500' # 修改你consul服务所在的ip地址\n        token: CONSUL_TOKEN\n        refresh_interval: 15s\n        services: []\n    metrics_path: /scrape # 监控多实例时要把/metrics自定义为/scrape\n    relabel_configs:\n      - regex: __meta_consul_service_metadata_(.+) # 添加meta的重新匹配，Mate数据为Labels标签\n        action: labelmap   #\n      - source_labels: ['__meta_consul_service']\n        regex: \"consul\"  # 过滤consul自测服务数据 consul 127.0.0.1:8300\n        action: drop\n      - source_labels: ['__meta_consul_service_metadata_endwith']  # 将endwith=scrape匹配出来作为自定义传参配置\n        regex: \"scrape\"\n        action: keep\n      - source_labels: ['__meta_consul_service_metadata_instance']  # 定义endpoint的参数 target=instance\n        target_label: __param_target\n\n  - job_name: \"consul-blackbox_http\" # black_exporter\n    metrics_path: /probe\n    params:\n      module: [http_2xx]\n    consul_sd_configs:\n      - server: 'PROM_CONSUL_SERVER:8500'\n        token: CONSUL_TOKEN\n        services: []\n    relabel_configs:\n      - source_labels: [__meta_consul_tags]\n        regex: .*blackbox_http.*\n        action: keep\n      - regex: __meta_consul_service_metadata_(.+)\n        action: labelmap\n      - source_labels: [__meta_consul_service_address]\n        target_label: __param_target\n      - source_labels: [__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: PROM_CONSUL_SERVER:9115\n"
  },
  {
    "path": "install/conf/prometheus/web.yml",
    "content": "basic_auth_users:\n    admin: PROM_SERVER_HASH\n"
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/nginx_proxy.conf",
    "content": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server LOCAL_IP:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTP\nserver {\n    listen 80;\n    server_name DOMAIN_NAME;\n    access_log /opt/opsany/logs/paas_nginx_access.log;\n    error_log /opt/opsany/logs/paas_nginx_error.log;\n   # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    512m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n\n# HTTPS\nserver {\n     listen       443 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/paas_nginx_access.log;\n     error_log /opt/opsany/logs/paas_nginx_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/opsany-proxy.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/opsany-proxy.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    512m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n"
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/ssl/.gitkeep",
    "content": ""
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/ssl/opsany-proxy.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAqa3V0oAfc59DQ01uGJAy6fJ5zQ+9HqsfSUD20Wbb8rCcltoV\nHjt5gLS+jyrhlreEaswxid84oROeQic0yyfwzMfQI0aPG/O9uIJn3WGtD4KR4nJL\nCjxFvNR2IpOxuO1X7mrcvs+ZMMn1ethEYRNyiHc1IVGf2EiSX/eK7IZ0txLvMOY5\nvNzkhkaDhgJ3wwKKZIsvPzsmFBvmy+NUg0askLTmmXRc7f46cfPa3TE+1rrexTNr\nm2sNrYoCg9NwHrxNtvaxIEbzANxjIAW21NmrdJsKTgpSdbMq+TEJJcCaOH2rVzcC\nI2WANCFWADfJwMKoBGoCHtyRgRXdV8wQ3OlGdQIDAQABAoIBAAjR0tfutfPOFvJ0\nH2FieWsEogUhKMzjyywFFu86f/tE59bFfiyEneOtQWxyp6gsYNMmSvrmIezpdqPs\nosdei5sxVaXHwJ+M01M4YAq3TYYNXOTe2PyutldC2eMhNy8sExJ+9ntqkgVhsgNR\nI3jCSIVEYPwa4Iqe9xDK7qstr/pmCVyunasN4DL0NjDRRnH2PWmC374q+lhEx/ea\nRqkiKffKUHx0pOSB3z8Z7W64oDRH/ZjKGcLAczDlNeMovMZAfe4MNA6a9rXaYsmc\nfKtxS84x+CXSaYEVcfnc1LhYg9jje6uZm/w2mseg0Ftys2euAEPuKmFdWh+U2SGJ\nMGK0/j8CgYEA2rQx4X6uB5pkhSVx0j+Kic20hDr9WcGlqMSEq5hAZ4YTBezkQBiw\n9yZCP2s9I0uGu04pnBdHB8RQXHUC89WxleZgLsTBjGdfujd0MYw5UFgI2p5uiTjo\nejQf3YuTIxGHbhn8suwpKChIuBkU2ptmopApiozMjicRHyAhNQfUqi8CgYEAxp1l\nhevtdoqusU7oQJGVSGoHAhzfyLJE7QZ8vOCXfYVBs60d5TXjSBt4wNvfrBpGhaDF\nAbCwaI7AX0akTVEs+RR58bUPsQMkKNoxrsWkSFy6l2jGVZTL9qyVINerqoZXLcod\nJQg47NOgZ8Zd01logBrT9sxJZDAf0Z1vRTN6hJsCgYAV2fMx6IpS0CZC917L9vVM\nl3T10T8G/MYkep4W1vt4XHkCGo0jqlPkHbp4w6o0IJOxmzmlEt5R9FdjJX3KBwvb\nQk1R3u7HrHxwCqJdYPlJAcLAtRuuMjVoIFUeuZdV5aZ2ZbpN1jK2hG/flQH0ZZp3\nm5fK9A5sFZMsXPV0avfgmQKBgQCzhOiSl6DXGJq1oMDEO9JW1Z7oBfkvihJKuyZc\nAhRrW9r68GqpFoAMWOhYSWRuRoGfnqTy1iVdHEo807kGOW0Q5bUjB6jbMh+o3S8y\n7WmEDmyJFibOi+OfXnacbNO5GhwKQzj8k+YACXhe1ClSMuoFgDo+RH/Bks3vxQEh\n51nCKQKBgGCHmhIvMmGdK+12Ik1Z6JMRoQLERr/BdvI262zW9X/ueAbdh6ffX9z/\nQF+TKfykf26L/X591eEoA29Vl8PiuGuBk0aK32Pl/XKiVRtG7V1Syj4aA4kRPRah\nsMCdSKw0kQbJMqzo2BUarF5wrvj7tCU4fZ2tASqoMguqsZkgERQl\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/ssl/opsany-proxy.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIF9TCCBN2gAwIBAgIQC5qO6QG0JQEkiFZqQ9aSozANBgkqhkiG9w0BAQsFADBu\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg\nRFYgVExTIENBIC0gRzEwHhcNMjIwMjI1MDAwMDAwWhcNMjMwMjI2MjM1OTU5WjAa\nMRgwFgYDVQQDEw9kZW1vLm9wc2FueS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQCprdXSgB9zn0NDTW4YkDLp8nnND70eqx9JQPbRZtvysJyW2hUe\nO3mAtL6PKuGWt4RqzDGJ3zihE55CJzTLJ/DMx9AjRo8b8724gmfdYa0PgpHicksK\nPEW81HYik7G47Vfuaty+z5kwyfV62ERhE3KIdzUhUZ/YSJJf94rshnS3Eu8w5jm8\n3OSGRoOGAnfDAopkiy8/OyYUG+bL41SDRqyQtOaZdFzt/jpx89rdMT7Wut7FM2ub\naw2tigKD03AevE229rEgRvMA3GMgBbbU2at0mwpOClJ1syr5MQklwJo4fatXNwIj\nZYA0IVYAN8nAwqgEagIe3JGBFd1XzBDc6UZ1AgMBAAGjggLhMIIC3TAfBgNVHSME\nGDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQUQlef7KcCaj/PqEVg\nmHOCeSmdk4YwGgYDVR0RBBMwEYIPZGVtby5vcHNhbnkuY29tMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAz\nBgZngQwBAgEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20v\nQ1BTMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp\nZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu\nY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1HMS5jcnQwCQYDVR0TBAIw\nADCCAYAGCisGAQQB1nkCBAIEggFwBIIBbAFqAHYA6D7Q2j71BjUy51covIlryQPT\ny9ERa+zraeF3fW0GvW4AAAF/Lq6HAAAABAMARzBFAiEAgOSrxlfy/rqqvio/R19w\nbd3zyOSWHEyFG9O7EIjp8qICIB8aAeNXqocL402LonJj6zwMJqaos/YDDQvUAhky\nHEEeAHcANc8ZG7+xbFe/D61MbULLu7YnICZR6j/hKu+oA8M71kwAAAF/Lq6HGwAA\nBAMASDBGAiEA90yIqVIDKn0oqQb88lT9jBQQZt06ptFHpEjKQ5C9pbgCIQCJ0/0E\naP6DLiOUQh4sbFYfL3sWG0mvIdfT5ex3CrCQdgB3ALNzdwfhhFD4Y4bWBancEQlK\neS2xZwwLh9zwAw55NqWaAAABfy6uh1kAAAQDAEgwRgIhAP7ml3AmVPr3AyxEfImv\nkJQULIqwtUj9amfgCZM5H9oyAiEAy3yRtXXzGciTKs3ZF4kTSkONkpZooORR1DIw\nZ6aaj5YwDQYJKoZIhvcNAQELBQADggEBAA5zG3IgVz/tmEdpt4xY4sx8eSH6KnS6\nx+VZ7sTMRbAZ/o+ruJeigFCAUquloSWTEaTSNrUOh+fGBOUOEpJH80m5JD5XEiYa\nXhwl8mou3K9lg0cz5G7hsqBv+Ds8KfBNJSzPgzs31OSRlsPO0DhQbgoAeKF3K3rn\nT7e8QLIjfBNbY+3j45jB86fhTRpnvkSFzysRbMA0c7eXJdXQ6yEQPVis/XjnIWaC\ni6xurbI2364Tg/jbqAabyH9uViu+fYc+2lsMRy9cB/0qDJHJrCRjcOXKyZMSTtWi\nVPBU432tx0dPUmDzy/wH66ygxjvxNcHpCq0DCUf0Ip8xDaQ+qnmX5Gk=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\nQTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\nb20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH\nMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc\noHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo\nlbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj\npp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h\nyuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n\nwfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M\npA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf\nBgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw\nHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C\nAQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp\nY2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu\nY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG\n/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT\nMAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B\nSwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW\nM0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV\n4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ\nsNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy\nrMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "install/conf/proxy/nginx.conf",
    "content": "# For more information on configuration, see:\n#   * Official English Documentation: http://nginx.org/en/docs/\n#   * Official Russian Documentation: http://nginx.org/ru/docs/\n\nuser root;\nworker_processes 4;\nerror_log /opt/opsany/logs/proxy/proxy-openresty-error.log;\npid /run/nginx.pid;\n\n# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.\ninclude /etc/nginx/conf.d/*.conf;\n\nevents {\n    worker_connections 1024;\n}\n\nhttp {\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  /opt/opsany/logs/proxy/proxy-openresty-access.log  main;\n\n    sendfile            on;\n    tcp_nopush          on;\n    tcp_nodelay         on;\n    keepalive_timeout   65;\n    types_hash_max_size 2048;\n    client_max_body_size 2G;\n    server_names_hash_bucket_size 256;\n    underscores_in_headers on;\n\n    include             /etc/nginx/mime.types;\n    default_type        application/octet-stream;\n\n    # Load modular configuration files from the /etc/nginx/conf.d directory.\n    # See http://nginx.org/en/docs/ngx_core_module.html#include\n    # for more information.\n    include /etc/nginx/conf.d/*.conf;\n\n    server {\n        listen       80 default_server;\n        listen       [::]:80 default_server;\n        server_name  _;\n        root         /usr/share/nginx/html;\n\n        # Load configuration files for the default server block.\n        include /etc/nginx/conf.d/*.conf;\n\n        location / {\n        }\n\n        error_page 404 /404.html;\n            location = /40x.html {\n        }\n\n        error_page 500 502 503 504 /50x.html;\n            location = /50x.html {\n        }\n    }\n\n# Settings for a TLS enabled server.\n#\n#    server {\n#        listen       443 ssl http2 default_server;\n#        listen       [::]:443 ssl http2 default_server;\n#        server_name  _;\n#        root         /usr/share/nginx/html;\n#\n#        ssl_certificate \"/etc/pki/nginx/server.crt\";\n#        ssl_certificate_key \"/etc/pki/nginx/private/server.key\";\n#        ssl_session_cache shared:SSL:1m;\n#        ssl_session_timeout  10m;\n#        ssl_ciphers HIGH:!aNULL:!MD5;\n#        ssl_prefer_server_ciphers on;\n#\n#        # Load configuration files for the default server block.\n#        include /etc/nginx/default.d/*.conf;\n#\n#        location / {\n#        }\n#\n#        error_page 404 /404.html;\n#            location = /40x.html {\n#        }\n#\n#        error_page 500 502 503 504 /50x.html;\n#            location = /50x.html {\n#        }\n#    }\n\n}\n\n"
  },
  {
    "path": "install/conf/proxy/proxy.ini",
    "content": "[program:opsany-proxy]\ncommand=gunicorn wsgi --bind 0.0.0.0:8010 -k gevent -w 3 -n proxy --access-logfile - --error-logfile - --max-requests 1000 --max-requests-jitter 100\ndirectory=/opt/opsany-proxy\nenvironment=DJANGO_SETTINGS_MODULE=settings,OPS_ANY_ENV=\"production\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/proxy/proxy.log\nstopsignal=TERM\nstopasgroup=true\nkillasgroup=true\n\n\n[program: opsany-proxy-celery]\ncommand = celery --app proxy worker -l INFO -n proxy --autoscale=8,1 --max-tasks-per-child=1000\ndirectory = /opt/opsany-proxy\nenvironment=DJANGO_SETTINGS_MODULE=settings,OPS_ANY_ENV=\"production\"\nstdout_logfile = /opt/opsany/logs/proxy/proxy-celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nstopasgroup=true\nkillasgroup=true\n"
  },
  {
    "path": "install/conf/proxy/saltapi.ini",
    "content": "[program:salt-api]\ncommand=/usr/local/bin/salt-api \nautostart=true\npriority=20\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/proxy/salt-api.log\n"
  },
  {
    "path": "install/conf/proxy/saltmaster.ini",
    "content": "[program:salt-master]\ncommand=/usr/local/bin/salt-master\nautostart=true\npriority=10\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/proxy/salt-master.log\n"
  },
  {
    "path": "install/conf/proxy/settings_production.py.proxy",
    "content": "# -*- coding: utf-8 -*-\n# 正式环境\nimport os\nfrom urllib import parse\nfrom config.default import *\n\nRUN_MODE = 'PRODUCT'\n\nDEBUG = False\nUSE_TZ=False\n\nCONTROL_SECRET_KEY = \"CONTROL_SECRET_KEY_PROXY\"\n\n# MySQL数据库设置\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': \"opsany_proxy\",\n        'USER': \"opsany\",\n        'HOST': \"MYSQL_SERVER_IP\",\n        'PORT': \"MYSQL_SERVER_PORT\",\n        'PASSWORD': \"MYSQL_OPSANY_PASSWORD\",\n        'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n        }\n    },\n}\n\n# Redis缓存设置\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\nif REDIS_USERNAME == \"REDIS_SERVER_USER\":  # 当该变量没有被替换时设置为空，防止与密码直接拼入\n    REDIS_USERNAME = \"\"\n\nBROKER_URL = \"redis://{USER}:{PASSWORD}@{HOST}:{PORT}/0\".format(USER=REDIS_USERNAME, PASSWORD=REDIS_PASSWORD, HOST=REDIS_HOST, PORT=REDIS_PORT)\nCELERY_BROKER_URL = BROKER_URL\nCELERY_RESULT_BACKEND = CELERY_BROKER_URL\nCELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True\n\nCACHES = {\n    \"default\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://{}:{}@{}:{}/0\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n        'TIMEOUT': 86400,  # 1天\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": REDIS_PASSWORD,\n        }\n    },\n}\n\n# RabbitMQ 消息队列设置\n#MQ_USER = \"RABBITMQ_DEFAULT_USER\"\n#MQ_PASSWORD = \"RABBITMQ_DEFAULT_PASS\"\n#MQ_HOST = \"RABBIT_SERVER_IP\"\n#MQ_PORT = \"5672\"\n\n#BROKER_URL = 'amqp://{MQ_USER}:{MQ_PASSWORD}@{MQ_HOST}:{MQ_PORT}//'.format(MQ_USER=MQ_USER, MQ_PASSWORD=MQ_PASSWORD,MQ_HOST=MQ_HOST, MQ_PORT=MQ_PORT)\n\n\n# ansible数据源脚本: 脚本文件在proxy/utils/下\nINVSCRIPT_FILE =  \"/opt/opsany-proxy/invscript_proxy.py\"\n\n# Ansible config\nINVENTORY_FILE = \"/etc/ansible/hosts\"\nPLAYBOOK_ROOT = \"/srv/playbook/\"\n# ansible test_ping_v2脚本\nTEST_PING_SCRIPT_PATH = os.path.join(BASE_DIR, \"proxy/utils/test_ping_v2.py\")\n\n# Saltstack config\nCONTROL_KEY = \"CONTROL_SECRET_KEY_PROXY\"\nFILE_ROOT = \"/srv/salt/\"\nPILLAR_ROOT = \"/srv/pillar/\"\n\n# 用于Agent从Proxy获取文件\nPROXY_URL = \"http://local-proxy.opsany.com:8012\"\nPROXY_PUBLIC_URL = \"http://public-proxy.opsany.com:8012\"\n\n# 告警规则路径---该路径需要挂载到与Prometheus配置文件规则挂载路径一致，通过在Proxy目录写入规则方式使Prometheus能读取到该告警目录\nPROM_ALERT_RULE_PATH = \"/opt/opsany/uploads/prometheus-config/rules\"\nPROM_SERVER_CHECK_PATH = \"/opt/opsany/uploads/monitor/heartbeat-monitors.d/\"\nPROM_ALERT_MANAGER_YML = \"/opt/opsany/alertmanager.yml\"\n\n"
  },
  {
    "path": "install/conf/proxy/settings_production.py.proxy-standalone",
    "content": "# -*- coding: utf-8 -*-\n# 正式环境\nimport os\nfrom urllib import parse\nfrom config.default import *\n\nRUN_MODE = 'PRODUCT'\n\nDEBUG = False\nUSE_TZ=False\n\nCONTROL_SECRET_KEY = \"CONTROL_SECRET_KEY_PROXY\"\n\n# MySQL数据库设置\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': \"opsany_proxy\",\n        'USER': \"opsany\",\n        'HOST': \"MYSQL_SERVER_IP\",\n        'PORT': \"MYSQL_SERVER_PORT\",\n        'PASSWORD': \"MYSQL_OPSANY_PASSWORD\",\n        'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB;\\\n                                 SET sql_mode='STRICT_TRANS_TABLES';\",\n        }\n    },\n}\n\n# Redis缓存设置\nREDIS_HOST = \"REDIS_SERVER_IP\"\nREDIS_PORT = \"REDIS_SERVER_PORT\"\nREDIS_USERNAME = parse.quote(\"REDIS_SERVER_USER\")\nREDIS_PASSWORD = parse.quote(\"REDIS_SERVER_PASSWORD\")\nif REDIS_USERNAME == \"REDIS_SERVER_USER\":  # 当该变量没有被替换时设置为空，防止与密码直接拼入\n    REDIS_USERNAME = \"\"\n\nBROKER_URL = \"redis://{USER}:{PASSWORD}@{HOST}:{PORT}/0\".format(USER=REDIS_USERNAME, PASSWORD=REDIS_PASSWORD, HOST=REDIS_HOST, PORT=REDIS_PORT)\nCELERY_BROKER_URL = BROKER_URL\nCELERY_RESULT_BACKEND = CELERY_BROKER_URL\nCELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True\n\nCACHES = {\n    \"default\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://{}:{}@{}:{}/0\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n        'TIMEOUT': 86400,  # 1天\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": REDIS_PASSWORD,\n        }\n    },\n}\n\n# RabbitMQ 消息队列设置\n#MQ_USER = \"RABBITMQ_DEFAULT_USER\"\n#MQ_PASSWORD = \"RABBITMQ_DEFAULT_PASS\"\n#MQ_HOST = \"RABBIT_SERVER_IP\"\n#MQ_PORT = \"5672\"\n\n#BROKER_URL = 'amqp://{MQ_USER}:{MQ_PASSWORD}@{MQ_HOST}:{MQ_PORT}//'.format(MQ_USER=MQ_USER, MQ_PASSWORD=MQ_PASSWORD,MQ_HOST=MQ_HOST, MQ_PORT=MQ_PORT)\n\n\n# ansible数据源脚本: 脚本文件在proxy/utils/下\nINVSCRIPT_FILE =  \"/opt/opsany-proxy/invscript_proxy.py\"\n\n# Ansible config\nINVENTORY_FILE = \"/etc/ansible/hosts\"\nPLAYBOOK_ROOT = \"/srv/playbook/\"\n# ansible test_ping_v2脚本\nTEST_PING_SCRIPT_PATH = os.path.join(BASE_DIR, \"proxy/utils/test_ping_v2.py\")\n\n# Saltstack config\nCONTROL_KEY = \"CONTROL_SECRET_KEY_PROXY\"\nFILE_ROOT = \"/srv/salt/\"\nPILLAR_ROOT = \"/srv/pillar/\"\n\n# 用于Agent从Proxy获取文件\nPROXY_URL = \"http://local-proxy.opsany.com:8012\"\nPROXY_PUBLIC_URL = \"http://public-proxy.opsany.com:8012\"\n\n# 告警规则路径---该路径需要挂载到与Prometheus配置文件规则挂载路径一致，通过在Proxy目录写入规则方式使Prometheus能读取到该告警目录\nPROM_ALERT_RULE_PATH = \"/opt/opsany/uploads/prometheus-config/rules\"\nPROM_SERVER_CHECK_PATH = \"/opt/opsany/uploads/monitor/heartbeat-monitors.d/\"\nPROM_ALERT_MANAGER_YML = \"/opt/opsany/alertmanager.yml\"\n\n"
  },
  {
    "path": "install/conf/redis/redis.conf",
    "content": "# Redis configuration file example.\n#\n# Note that in order to read the configuration file, Redis must be\n# started with the file path as first argument:\n#\n# ./redis-server /path/to/redis.conf\n\n# Note on units: when memory size is needed, it is possible to specify\n# it in the usual form of 1k 5GB 4M and so forth:\n#\n# 1k => 1000 bytes\n# 1kb => 1024 bytes\n# 1m => 1000000 bytes\n# 1mb => 1024*1024 bytes\n# 1g => 1000000000 bytes\n# 1gb => 1024*1024*1024 bytes\n#\n# units are case insensitive so 1GB 1Gb 1gB are all the same.\n\n################################## INCLUDES ###################################\n\n# Include one or more other config files here.  This is useful if you\n# have a standard template that goes to all Redis servers but also need\n# to customize a few per-server settings.  Include files can include\n# other files, so use this wisely.\n#\n# Notice option \"include\" won't be rewritten by command \"CONFIG REWRITE\"\n# from admin or Redis Sentinel. Since Redis always uses the last processed\n# line as value of a configuration directive, you'd better put includes\n# at the beginning of this file to avoid overwriting config change at runtime.\n#\n# If instead you are interested in using includes to override configuration\n# options, it is better to use include as the last line.\n#\n# include /path/to/local.conf\n# include /path/to/other.conf\n\n################################## NETWORK #####################################\n\n# By default, if no \"bind\" configuration directive is specified, Redis listens\n# for connections from all the network interfaces available on the server.\n# It is possible to listen to just one or multiple selected interfaces using\n# the \"bind\" configuration directive, followed by one or more IP addresses.\n#\n# Examples:\n#\n# bind 192.168.1.100 10.0.0.1\n# bind 127.0.0.1 ::1\n#\n# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the\n# internet, binding to all the interfaces is dangerous and will expose the\n# instance to everybody on the internet. So by default we uncomment the\n# following bind directive, that will force Redis to listen only into\n# the IPv4 lookback interface address (this means Redis will be able to\n# accept connections only from clients running into the same computer it\n# is running).\n#\n# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES\n# JUST COMMENT THE FOLLOWING LINE.\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nbind 0.0.0.0\n\n# Protected mode is a layer of security protection, in order to avoid that\n# Redis instances left open on the internet are accessed and exploited.\n#\n# When protected mode is on and if:\n#\n# 1) The server is not binding explicitly to a set of addresses using the\n#    \"bind\" directive.\n# 2) No password is configured.\n#\n# The server only accepts connections from clients connecting from the\n# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain\n# sockets.\n#\n# By default protected mode is enabled. You should disable it only if\n# you are sure you want clients from other hosts to connect to Redis\n# even if no authentication is configured, nor a specific set of interfaces\n# are explicitly listed using the \"bind\" directive.\nprotected-mode yes\n\n# Accept connections on the specified port, default is 6379 (IANA #815344).\n# If port 0 is specified Redis will not listen on a TCP socket.\nport 6379\n\n# TCP listen() backlog.\n#\n# In high requests-per-second environments you need an high backlog in order\n# to avoid slow clients connections issues. Note that the Linux kernel\n# will silently truncate it to the value of /proc/sys/net/core/somaxconn so\n# make sure to raise both the value of somaxconn and tcp_max_syn_backlog\n# in order to get the desired effect.\ntcp-backlog 511\n\n# Unix socket.\n#\n# Specify the path for the Unix socket that will be used to listen for\n# incoming connections. There is no default, so Redis will not listen\n# on a unix socket when not specified.\n#\n# unixsocket /tmp/redis.sock\n# unixsocketperm 700\n\n# Close the connection after a client is idle for N seconds (0 to disable)\ntimeout 0\n\n# TCP keepalive.\n#\n# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence\n# of communication. This is useful for two reasons:\n#\n# 1) Detect dead peers.\n# 2) Take the connection alive from the point of view of network\n#    equipment in the middle.\n#\n# On Linux, the specified value (in seconds) is the period used to send ACKs.\n# Note that to close the connection the double of the time is needed.\n# On other kernels the period depends on the kernel configuration.\n#\n# A reasonable value for this option is 300 seconds, which is the new\n# Redis default starting with Redis 3.2.1.\ntcp-keepalive 300\n\n################################# GENERAL #####################################\n\n# By default Redis does not run as a daemon. Use 'yes' if you need it.\n# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.\ndaemonize no\n\n# If you run Redis from upstart or systemd, Redis can interact with your\n# supervision tree. Options:\n#   supervised no      - no supervision interaction\n#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode\n#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET\n#   supervised auto    - detect upstart or systemd method based on\n#                        UPSTART_JOB or NOTIFY_SOCKET environment variables\n# Note: these supervision methods only signal \"process is ready.\"\n#       They do not enable continuous liveness pings back to your supervisor.\nsupervised no\n\n# If a pid file is specified, Redis writes it where specified at startup\n# and removes it at exit.\n#\n# When the server runs non daemonized, no pid file is created if none is\n# specified in the configuration. When the server is daemonized, the pid file\n# is used even if not specified, defaulting to \"/var/run/redis.pid\".\n#\n# Creating a pid file is best effort: if Redis is not able to create it\n# nothing bad happens, the server will start and run normally.\npidfile /data/redis_6379.pid\n\n# Specify the server verbosity level.\n# This can be one of:\n# debug (a lot of information, useful for development/testing)\n# verbose (many rarely useful info, but not a mess like the debug level)\n# notice (moderately verbose, what you want in production probably)\n# warning (only very important / critical messages are logged)\nloglevel notice\n\n# Specify the log file name. Also the empty string can be used to force\n# Redis to log on the standard output. Note that if you use standard\n# output for logging but daemonize, logs will be sent to /dev/null\nlogfile /data/redis.log\n\n# To enable logging to the system logger, just set 'syslog-enabled' to yes,\n# and optionally update the other syslog parameters to suit your needs.\n# syslog-enabled no\n\n# Specify the syslog identity.\n# syslog-ident redis\n\n# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.\n# syslog-facility local0\n\n# Set the number of databases. The default database is DB 0, you can select\n# a different one on a per-connection basis using SELECT <dbid> where\n# dbid is a number between 0 and 'databases'-1\ndatabases 64\n\n################################ SNAPSHOTTING  ################################\n#\n# Save the DB on disk:\n#\n#   save <seconds> <changes>\n#\n#   Will save the DB if both the given number of seconds and the given\n#   number of write operations against the DB occurred.\n#\n#   In the example below the behaviour will be to save:\n#   after 900 sec (15 min) if at least 1 key changed\n#   after 300 sec (5 min) if at least 10 keys changed\n#   after 60 sec if at least 10000 keys changed\n#\n#   Note: you can disable saving completely by commenting out all \"save\" lines.\n#\n#   It is also possible to remove all the previously configured save\n#   points by adding a save directive with a single empty string argument\n#   like in the following example:\n#\n#   save \"\"\n\nsave 900 1\nsave 300 10\nsave 60 10000\n\n# By default Redis will stop accepting writes if RDB snapshots are enabled\n# (at least one save point) and the latest background save failed.\n# This will make the user aware (in a hard way) that data is not persisting\n# on disk properly, otherwise chances are that no one will notice and some\n# disaster will happen.\n#\n# If the background saving process will start working again Redis will\n# automatically allow writes again.\n#\n# However if you have setup your proper monitoring of the Redis server\n# and persistence, you may want to disable this feature so that Redis will\n# continue to work as usual even if there are problems with disk,\n# permissions, and so forth.\nstop-writes-on-bgsave-error yes\n\n# Compress string objects using LZF when dump .rdb databases?\n# For default that's set to 'yes' as it's almost always a win.\n# If you want to save some CPU in the saving child set it to 'no' but\n# the dataset will likely be bigger if you have compressible values or keys.\nrdbcompression yes\n\n# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.\n# This makes the format more resistant to corruption but there is a performance\n# hit to pay (around 10%) when saving and loading RDB files, so you can disable it\n# for maximum performances.\n#\n# RDB files created with checksum disabled have a checksum of zero that will\n# tell the loading code to skip the check.\nrdbchecksum yes\n\n# The filename where to dump the DB\ndbfilename dump.rdb\n\n# The working directory.\n#\n# The DB will be written inside this directory, with the filename specified\n# above using the 'dbfilename' configuration directive.\n#\n# The Append Only File will also be created inside this directory.\n#\n# Note that you must specify a directory here, not a file name.\ndir /data\n\n################################# REPLICATION #################################\n\n# Master-Slave replication. Use slaveof to make a Redis instance a copy of\n# another Redis server. A few things to understand ASAP about Redis replication.\n#\n# 1) Redis replication is asynchronous, but you can configure a master to\n#    stop accepting writes if it appears to be not connected with at least\n#    a given number of slaves.\n# 2) Redis slaves are able to perform a partial resynchronization with the\n#    master if the replication link is lost for a relatively small amount of\n#    time. You may want to configure the replication backlog size (see the next\n#    sections of this file) with a sensible value depending on your needs.\n# 3) Replication is automatic and does not need user intervention. After a\n#    network partition slaves automatically try to reconnect to masters\n#    and resynchronize with them.\n#\n# slaveof <masterip> <masterport>\n\n# If the master is password protected (using the \"requirepass\" configuration\n# directive below) it is possible to tell the slave to authenticate before\n# starting the replication synchronization process, otherwise the master will\n# refuse the slave request.\n#\nrequirepass REDIS_SERVER_PASSWORD\n# masterauth <master-password>\n\n# When a slave loses its connection with the master, or when the replication\n# is still in progress, the slave can act in two different ways:\n#\n# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will\n#    still reply to client requests, possibly with out of date data, or the\n#    data set may just be empty if this is the first synchronization.\n#\n# 2) if slave-serve-stale-data is set to 'no' the slave will reply with\n#    an error \"SYNC with master in progress\" to all the kind of commands\n#    but to INFO and SLAVEOF.\n#\nslave-serve-stale-data yes\n\n# You can configure a slave instance to accept writes or not. Writing against\n# a slave instance may be useful to store some ephemeral data (because data\n# written on a slave will be easily deleted after resync with the master) but\n# may also cause problems if clients are writing to it because of a\n# misconfiguration.\n#\n# Since Redis 2.6 by default slaves are read-only.\n#\n# Note: read only slaves are not designed to be exposed to untrusted clients\n# on the internet. It's just a protection layer against misuse of the instance.\n# Still a read only slave exports by default all the administrative commands\n# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve\n# security of read only slaves using 'rename-command' to shadow all the\n# administrative / dangerous commands.\nslave-read-only yes\n\n# Replication SYNC strategy: disk or socket.\n#\n# -------------------------------------------------------\n# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY\n# -------------------------------------------------------\n#\n# New slaves and reconnecting slaves that are not able to continue the replication\n# process just receiving differences, need to do what is called a \"full\n# synchronization\". An RDB file is transmitted from the master to the slaves.\n# The transmission can happen in two different ways:\n#\n# 1) Disk-backed: The Redis master creates a new process that writes the RDB\n#                 file on disk. Later the file is transferred by the parent\n#                 process to the slaves incrementally.\n# 2) Diskless: The Redis master creates a new process that directly writes the\n#              RDB file to slave sockets, without touching the disk at all.\n#\n# With disk-backed replication, while the RDB file is generated, more slaves\n# can be queued and served with the RDB file as soon as the current child producing\n# the RDB file finishes its work. With diskless replication instead once\n# the transfer starts, new slaves arriving will be queued and a new transfer\n# will start when the current one terminates.\n#\n# When diskless replication is used, the master waits a configurable amount of\n# time (in seconds) before starting the transfer in the hope that multiple slaves\n# will arrive and the transfer can be parallelized.\n#\n# With slow disks and fast (large bandwidth) networks, diskless replication\n# works better.\nrepl-diskless-sync no\n\n# When diskless replication is enabled, it is possible to configure the delay\n# the server waits in order to spawn the child that transfers the RDB via socket\n# to the slaves.\n#\n# This is important since once the transfer starts, it is not possible to serve\n# new slaves arriving, that will be queued for the next RDB transfer, so the server\n# waits a delay in order to let more slaves arrive.\n#\n# The delay is specified in seconds, and by default is 5 seconds. To disable\n# it entirely just set it to 0 seconds and the transfer will start ASAP.\nrepl-diskless-sync-delay 5\n\n# Slaves send PINGs to server in a predefined interval. It's possible to change\n# this interval with the repl_ping_slave_period option. The default value is 10\n# seconds.\n#\n# repl-ping-slave-period 10\n\n# The following option sets the replication timeout for:\n#\n# 1) Bulk transfer I/O during SYNC, from the point of view of slave.\n# 2) Master timeout from the point of view of slaves (data, pings).\n# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings).\n#\n# It is important to make sure that this value is greater than the value\n# specified for repl-ping-slave-period otherwise a timeout will be detected\n# every time there is low traffic between the master and the slave.\n#\n# repl-timeout 60\n\n# Disable TCP_NODELAY on the slave socket after SYNC?\n#\n# If you select \"yes\" Redis will use a smaller number of TCP packets and\n# less bandwidth to send data to slaves. But this can add a delay for\n# the data to appear on the slave side, up to 40 milliseconds with\n# Linux kernels using a default configuration.\n#\n# If you select \"no\" the delay for data to appear on the slave side will\n# be reduced but more bandwidth will be used for replication.\n#\n# By default we optimize for low latency, but in very high traffic conditions\n# or when the master and slaves are many hops away, turning this to \"yes\" may\n# be a good idea.\nrepl-disable-tcp-nodelay no\n\n# Set the replication backlog size. The backlog is a buffer that accumulates\n# slave data when slaves are disconnected for some time, so that when a slave\n# wants to reconnect again, often a full resync is not needed, but a partial\n# resync is enough, just passing the portion of data the slave missed while\n# disconnected.\n#\n# The bigger the replication backlog, the longer the time the slave can be\n# disconnected and later be able to perform a partial resynchronization.\n#\n# The backlog is only allocated once there is at least a slave connected.\n#\n# repl-backlog-size 1mb\n\n# After a master has no longer connected slaves for some time, the backlog\n# will be freed. The following option configures the amount of seconds that\n# need to elapse, starting from the time the last slave disconnected, for\n# the backlog buffer to be freed.\n#\n# A value of 0 means to never release the backlog.\n#\n# repl-backlog-ttl 3600\n\n# The slave priority is an integer number published by Redis in the INFO output.\n# It is used by Redis Sentinel in order to select a slave to promote into a\n# master if the master is no longer working correctly.\n#\n# A slave with a low priority number is considered better for promotion, so\n# for instance if there are three slaves with priority 10, 100, 25 Sentinel will\n# pick the one with priority 10, that is the lowest.\n#\n# However a special priority of 0 marks the slave as not able to perform the\n# role of master, so a slave with priority of 0 will never be selected by\n# Redis Sentinel for promotion.\n#\n# By default the priority is 100.\nslave-priority 100\n\n# It is possible for a master to stop accepting writes if there are less than\n# N slaves connected, having a lag less or equal than M seconds.\n#\n# The N slaves need to be in \"online\" state.\n#\n# The lag in seconds, that must be <= the specified value, is calculated from\n# the last ping received from the slave, that is usually sent every second.\n#\n# This option does not GUARANTEE that N replicas will accept the write, but\n# will limit the window of exposure for lost writes in case not enough slaves\n# are available, to the specified number of seconds.\n#\n# For example to require at least 3 slaves with a lag <= 10 seconds use:\n#\n# min-slaves-to-write 3\n# min-slaves-max-lag 10\n#\n# Setting one or the other to 0 disables the feature.\n#\n# By default min-slaves-to-write is set to 0 (feature disabled) and\n# min-slaves-max-lag is set to 10.\n\n# A Redis master is able to list the address and port of the attached\n# slaves in different ways. For example the \"INFO replication\" section\n# offers this information, which is used, among other tools, by\n# Redis Sentinel in order to discover slave instances.\n# Another place where this info is available is in the output of the\n# \"ROLE\" command of a masteer.\n#\n# The listed IP and address normally reported by a slave is obtained\n# in the following way:\n#\n#   IP: The address is auto detected by checking the peer address\n#   of the socket used by the slave to connect with the master.\n#\n#   Port: The port is communicated by the slave during the replication\n#   handshake, and is normally the port that the slave is using to\n#   list for connections.\n#\n# However when port forwarding or Network Address Translation (NAT) is\n# used, the slave may be actually reachable via different IP and port\n# pairs. The following two options can be used by a slave in order to\n# report to its master a specific set of IP and port, so that both INFO\n# and ROLE will report those values.\n#\n# There is no need to use both the options if you need to override just\n# the port or the IP address.\n#\n# slave-announce-ip 5.5.5.5\n# slave-announce-port 1234\n\n################################## SECURITY ###################################\n\n# Require clients to issue AUTH <PASSWORD> before processing any other\n# commands.  This might be useful in environments in which you do not trust\n# others with access to the host running redis-server.\n#\n# This should stay commented out for backward compatibility and because most\n# people do not need auth (e.g. they run their own servers).\n#\n# Warning: since Redis is pretty fast an outside user can try up to\n# 150k passwords per second against a good box. This means that you should\n# use a very strong password otherwise it will be very easy to break.\n#\n# requirepass foobared\n\n# Command renaming.\n#\n# It is possible to change the name of dangerous commands in a shared\n# environment. For instance the CONFIG command may be renamed into something\n# hard to guess so that it will still be available for internal-use tools\n# but not available for general clients.\n#\n# Example:\n#\n# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52\n#\n# It is also possible to completely kill a command by renaming it into\n# an empty string:\n#\n# rename-command CONFIG \"\"\n#\n# Please note that changing the name of commands that are logged into the\n# AOF file or transmitted to slaves may cause problems.\n\n################################### LIMITS ####################################\n\n# Set the max number of connected clients at the same time. By default\n# this limit is set to 10000 clients, however if the Redis server is not\n# able to configure the process file limit to allow for the specified limit\n# the max number of allowed clients is set to the current file limit\n# minus 32 (as Redis reserves a few file descriptors for internal uses).\n#\n# Once the limit is reached Redis will close all the new connections sending\n# an error 'max number of clients reached'.\n#\n# maxclients 10000\n\n# Don't use more memory than the specified amount of bytes.\n# When the memory limit is reached Redis will try to remove keys\n# according to the eviction policy selected (see maxmemory-policy).\n#\n# If Redis can't remove keys according to the policy, or if the policy is\n# set to 'noeviction', Redis will start to reply with errors to commands\n# that would use more memory, like SET, LPUSH, and so on, and will continue\n# to reply to read-only commands like GET.\n#\n# This option is usually useful when using Redis as an LRU cache, or to set\n# a hard memory limit for an instance (using the 'noeviction' policy).\n#\n# WARNING: If you have slaves attached to an instance with maxmemory on,\n# the size of the output buffers needed to feed the slaves are subtracted\n# from the used memory count, so that network problems / resyncs will\n# not trigger a loop where keys are evicted, and in turn the output\n# buffer of slaves is full with DELs of keys evicted triggering the deletion\n# of more keys, and so forth until the database is completely emptied.\n#\n# In short... if you have slaves attached it is suggested that you set a lower\n# limit for maxmemory so that there is some free RAM on the system for slave\n# output buffers (but this is not needed if the policy is 'noeviction').\n#\n# maxmemory <bytes>\n\n# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory\n# is reached. You can select among five behaviors:\n#\n# volatile-lru -> remove the key with an expire set using an LRU algorithm\n# allkeys-lru -> remove any key according to the LRU algorithm\n# volatile-random -> remove a random key with an expire set\n# allkeys-random -> remove a random key, any key\n# volatile-ttl -> remove the key with the nearest expire time (minor TTL)\n# noeviction -> don't expire at all, just return an error on write operations\n#\n# Note: with any of the above policies, Redis will return an error on write\n#       operations, when there are no suitable keys for eviction.\n#\n#       At the date of writing these commands are: set setnx setex append\n#       incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd\n#       sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby\n#       zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby\n#       getset mset msetnx exec sort\n#\n# The default is:\n#\n# maxmemory-policy noeviction\n\n# LRU and minimal TTL algorithms are not precise algorithms but approximated\n# algorithms (in order to save memory), so you can tune it for speed or\n# accuracy. For default Redis will check five keys and pick the one that was\n# used less recently, you can change the sample size using the following\n# configuration directive.\n#\n# The default of 5 produces good enough results. 10 Approximates very closely\n# true LRU but costs a bit more CPU. 3 is very fast but not very accurate.\n#\n# maxmemory-samples 5\n\n############################## APPEND ONLY MODE ###############################\n\n# By default Redis asynchronously dumps the dataset on disk. This mode is\n# good enough in many applications, but an issue with the Redis process or\n# a power outage may result into a few minutes of writes lost (depending on\n# the configured save points).\n#\n# The Append Only File is an alternative persistence mode that provides\n# much better durability. For instance using the default data fsync policy\n# (see later in the config file) Redis can lose just one second of writes in a\n# dramatic event like a server power outage, or a single write if something\n# wrong with the Redis process itself happens, but the operating system is\n# still running correctly.\n#\n# AOF and RDB persistence can be enabled at the same time without problems.\n# If the AOF is enabled on startup Redis will load the AOF, that is the file\n# with the better durability guarantees.\n#\n# Please check http://redis.io/topics/persistence for more information.\n\nappendonly no\n\n# The name of the append only file (default: \"appendonly.aof\")\n\nappendfilename \"appendonly.aof\"\n\n# The fsync() call tells the Operating System to actually write data on disk\n# instead of waiting for more data in the output buffer. Some OS will really flush\n# data on disk, some other OS will just try to do it ASAP.\n#\n# Redis supports three different modes:\n#\n# no: don't fsync, just let the OS flush the data when it wants. Faster.\n# always: fsync after every write to the append only log. Slow, Safest.\n# everysec: fsync only one time every second. Compromise.\n#\n# The default is \"everysec\", as that's usually the right compromise between\n# speed and data safety. It's up to you to understand if you can relax this to\n# \"no\" that will let the operating system flush the output buffer when\n# it wants, for better performances (but if you can live with the idea of\n# some data loss consider the default persistence mode that's snapshotting),\n# or on the contrary, use \"always\" that's very slow but a bit safer than\n# everysec.\n#\n# More details please check the following article:\n# http://antirez.com/post/redis-persistence-demystified.html\n#\n# If unsure, use \"everysec\".\n\n# appendfsync always\nappendfsync everysec\n# appendfsync no\n\n# When the AOF fsync policy is set to always or everysec, and a background\n# saving process (a background save or AOF log background rewriting) is\n# performing a lot of I/O against the disk, in some Linux configurations\n# Redis may block too long on the fsync() call. Note that there is no fix for\n# this currently, as even performing fsync in a different thread will block\n# our synchronous write(2) call.\n#\n# In order to mitigate this problem it's possible to use the following option\n# that will prevent fsync() from being called in the main process while a\n# BGSAVE or BGREWRITEAOF is in progress.\n#\n# This means that while another child is saving, the durability of Redis is\n# the same as \"appendfsync none\". In practical terms, this means that it is\n# possible to lose up to 30 seconds of log in the worst scenario (with the\n# default Linux settings).\n#\n# If you have latency problems turn this to \"yes\". Otherwise leave it as\n# \"no\" that is the safest pick from the point of view of durability.\n\nno-appendfsync-on-rewrite no\n\n# Automatic rewrite of the append only file.\n# Redis is able to automatically rewrite the log file implicitly calling\n# BGREWRITEAOF when the AOF log size grows by the specified percentage.\n#\n# This is how it works: Redis remembers the size of the AOF file after the\n# latest rewrite (if no rewrite has happened since the restart, the size of\n# the AOF at startup is used).\n#\n# This base size is compared to the current size. If the current size is\n# bigger than the specified percentage, the rewrite is triggered. Also\n# you need to specify a minimal size for the AOF file to be rewritten, this\n# is useful to avoid rewriting the AOF file even if the percentage increase\n# is reached but it is still pretty small.\n#\n# Specify a percentage of zero in order to disable the automatic AOF\n# rewrite feature.\n\nauto-aof-rewrite-percentage 100\nauto-aof-rewrite-min-size 64mb\n\n# An AOF file may be found to be truncated at the end during the Redis\n# startup process, when the AOF data gets loaded back into memory.\n# This may happen when the system where Redis is running\n# crashes, especially when an ext4 filesystem is mounted without the\n# data=ordered option (however this can't happen when Redis itself\n# crashes or aborts but the operating system still works correctly).\n#\n# Redis can either exit with an error when this happens, or load as much\n# data as possible (the default now) and start if the AOF file is found\n# to be truncated at the end. The following option controls this behavior.\n#\n# If aof-load-truncated is set to yes, a truncated AOF file is loaded and\n# the Redis server starts emitting a log to inform the user of the event.\n# Otherwise if the option is set to no, the server aborts with an error\n# and refuses to start. When the option is set to no, the user requires\n# to fix the AOF file using the \"redis-check-aof\" utility before to restart\n# the server.\n#\n# Note that if the AOF file will be found to be corrupted in the middle\n# the server will still exit with an error. This option only applies when\n# Redis will try to read more data from the AOF file but not enough bytes\n# will be found.\naof-load-truncated yes\n\n################################ LUA SCRIPTING  ###############################\n\n# Max execution time of a Lua script in milliseconds.\n#\n# If the maximum execution time is reached Redis will log that a script is\n# still in execution after the maximum allowed time and will start to\n# reply to queries with an error.\n#\n# When a long running script exceeds the maximum execution time only the\n# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be\n# used to stop a script that did not yet called write commands. The second\n# is the only way to shut down the server in the case a write command was\n# already issued by the script but the user doesn't want to wait for the natural\n# termination of the script.\n#\n# Set it to 0 or a negative value for unlimited execution without warnings.\nlua-time-limit 5000\n\n################################ REDIS CLUSTER  ###############################\n#\n# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however\n# in order to mark it as \"mature\" we need to wait for a non trivial percentage\n# of users to deploy it in production.\n# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n#\n# Normal Redis instances can't be part of a Redis Cluster; only nodes that are\n# started as cluster nodes can. In order to start a Redis instance as a\n# cluster node enable the cluster support uncommenting the following:\n#\n# cluster-enabled yes\n\n# Every cluster node has a cluster configuration file. This file is not\n# intended to be edited by hand. It is created and updated by Redis nodes.\n# Every Redis Cluster node requires a different cluster configuration file.\n# Make sure that instances running in the same system do not have\n# overlapping cluster configuration file names.\n#\n# cluster-config-file nodes-6379.conf\n\n# Cluster node timeout is the amount of milliseconds a node must be unreachable\n# for it to be considered in failure state.\n# Most other internal time limits are multiple of the node timeout.\n#\n# cluster-node-timeout 15000\n\n# A slave of a failing master will avoid to start a failover if its data\n# looks too old.\n#\n# There is no simple way for a slave to actually have a exact measure of\n# its \"data age\", so the following two checks are performed:\n#\n# 1) If there are multiple slaves able to failover, they exchange messages\n#    in order to try to give an advantage to the slave with the best\n#    replication offset (more data from the master processed).\n#    Slaves will try to get their rank by offset, and apply to the start\n#    of the failover a delay proportional to their rank.\n#\n# 2) Every single slave computes the time of the last interaction with\n#    its master. This can be the last ping or command received (if the master\n#    is still in the \"connected\" state), or the time that elapsed since the\n#    disconnection with the master (if the replication link is currently down).\n#    If the last interaction is too old, the slave will not try to failover\n#    at all.\n#\n# The point \"2\" can be tuned by user. Specifically a slave will not perform\n# the failover if, since the last interaction with the master, the time\n# elapsed is greater than:\n#\n#   (node-timeout * slave-validity-factor) + repl-ping-slave-period\n#\n# So for example if node-timeout is 30 seconds, and the slave-validity-factor\n# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the\n# slave will not try to failover if it was not able to talk with the master\n# for longer than 310 seconds.\n#\n# A large slave-validity-factor may allow slaves with too old data to failover\n# a master, while a too small value may prevent the cluster from being able to\n# elect a slave at all.\n#\n# For maximum availability, it is possible to set the slave-validity-factor\n# to a value of 0, which means, that slaves will always try to failover the\n# master regardless of the last time they interacted with the master.\n# (However they'll always try to apply a delay proportional to their\n# offset rank).\n#\n# Zero is the only value able to guarantee that when all the partitions heal\n# the cluster will always be able to continue.\n#\n# cluster-slave-validity-factor 10\n\n# Cluster slaves are able to migrate to orphaned masters, that are masters\n# that are left without working slaves. This improves the cluster ability\n# to resist to failures as otherwise an orphaned master can't be failed over\n# in case of failure if it has no working slaves.\n#\n# Slaves migrate to orphaned masters only if there are still at least a\n# given number of other working slaves for their old master. This number\n# is the \"migration barrier\". A migration barrier of 1 means that a slave\n# will migrate only if there is at least 1 other working slave for its master\n# and so forth. It usually reflects the number of slaves you want for every\n# master in your cluster.\n#\n# Default is 1 (slaves migrate only if their masters remain with at least\n# one slave). To disable migration just set it to a very large value.\n# A value of 0 can be set but is useful only for debugging and dangerous\n# in production.\n#\n# cluster-migration-barrier 1\n\n# By default Redis Cluster nodes stop accepting queries if they detect there\n# is at least an hash slot uncovered (no available node is serving it).\n# This way if the cluster is partially down (for example a range of hash slots\n# are no longer covered) all the cluster becomes, eventually, unavailable.\n# It automatically returns available as soon as all the slots are covered again.\n#\n# However sometimes you want the subset of the cluster which is working,\n# to continue to accept queries for the part of the key space that is still\n# covered. In order to do so, just set the cluster-require-full-coverage\n# option to no.\n#\n# cluster-require-full-coverage yes\n\n# In order to setup your cluster make sure to read the documentation\n# available at http://redis.io web site.\n\n################################## SLOW LOG ###################################\n\n# The Redis Slow Log is a system to log queries that exceeded a specified\n# execution time. The execution time does not include the I/O operations\n# like talking with the client, sending the reply and so forth,\n# but just the time needed to actually execute the command (this is the only\n# stage of command execution where the thread is blocked and can not serve\n# other requests in the meantime).\n#\n# You can configure the slow log with two parameters: one tells Redis\n# what is the execution time, in microseconds, to exceed in order for the\n# command to get logged, and the other parameter is the length of the\n# slow log. When a new command is logged the oldest one is removed from the\n# queue of logged commands.\n\n# The following time is expressed in microseconds, so 1000000 is equivalent\n# to one second. Note that a negative number disables the slow log, while\n# a value of zero forces the logging of every command.\nslowlog-log-slower-than 10000\n\n# There is no limit to this length. Just be aware that it will consume memory.\n# You can reclaim memory used by the slow log with SLOWLOG RESET.\nslowlog-max-len 128\n\n################################ LATENCY MONITOR ##############################\n\n# The Redis latency monitoring subsystem samples different operations\n# at runtime in order to collect data related to possible sources of\n# latency of a Redis instance.\n#\n# Via the LATENCY command this information is available to the user that can\n# print graphs and obtain reports.\n#\n# The system only logs operations that were performed in a time equal or\n# greater than the amount of milliseconds specified via the\n# latency-monitor-threshold configuration directive. When its value is set\n# to zero, the latency monitor is turned off.\n#\n# By default latency monitoring is disabled since it is mostly not needed\n# if you don't have latency issues, and collecting data has a performance\n# impact, that while very small, can be measured under big load. Latency\n# monitoring can easily be enabled at runtime using the command\n# \"CONFIG SET latency-monitor-threshold <milliseconds>\" if needed.\nlatency-monitor-threshold 0\n\n############################# EVENT NOTIFICATION ##############################\n\n# Redis can notify Pub/Sub clients about events happening in the key space.\n# This feature is documented at http://redis.io/topics/notifications\n#\n# For instance if keyspace events notification is enabled, and a client\n# performs a DEL operation on key \"foo\" stored in the Database 0, two\n# messages will be published via Pub/Sub:\n#\n# PUBLISH __keyspace@0__:foo del\n# PUBLISH __keyevent@0__:del foo\n#\n# It is possible to select the events that Redis will notify among a set\n# of classes. Every class is identified by a single character:\n#\n#  K     Keyspace events, published with __keyspace@<db>__ prefix.\n#  E     Keyevent events, published with __keyevent@<db>__ prefix.\n#  g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...\n#  $     String commands\n#  l     List commands\n#  s     Set commands\n#  h     Hash commands\n#  z     Sorted set commands\n#  x     Expired events (events generated every time a key expires)\n#  e     Evicted events (events generated when a key is evicted for maxmemory)\n#  A     Alias for g$lshzxe, so that the \"AKE\" string means all the events.\n#\n#  The \"notify-keyspace-events\" takes as argument a string that is composed\n#  of zero or multiple characters. The empty string means that notifications\n#  are disabled.\n#\n#  Example: to enable list and generic events, from the point of view of the\n#           event name, use:\n#\n#  notify-keyspace-events Elg\n#\n#  Example 2: to get the stream of the expired keys subscribing to channel\n#             name __keyevent@0__:expired use:\n#\n#  notify-keyspace-events Ex\n#\n#  By default all notifications are disabled because most users don't need\n#  this feature and the feature has some overhead. Note that if you don't\n#  specify at least one of K or E, no events will be delivered.\nnotify-keyspace-events \"\"\n\n############################### ADVANCED CONFIG ###############################\n\n# Hashes are encoded using a memory efficient data structure when they have a\n# small number of entries, and the biggest entry does not exceed a given\n# threshold. These thresholds can be configured using the following directives.\nhash-max-ziplist-entries 512\nhash-max-ziplist-value 64\n\n# Lists are also encoded in a special way to save a lot of space.\n# The number of entries allowed per internal list node can be specified\n# as a fixed maximum size or a maximum number of elements.\n# For a fixed maximum size, use -5 through -1, meaning:\n# -5: max size: 64 Kb  <-- not recommended for normal workloads\n# -4: max size: 32 Kb  <-- not recommended\n# -3: max size: 16 Kb  <-- probably not recommended\n# -2: max size: 8 Kb   <-- good\n# -1: max size: 4 Kb   <-- good\n# Positive numbers mean store up to _exactly_ that number of elements\n# per list node.\n# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size),\n# but if your use case is unique, adjust the settings as necessary.\nlist-max-ziplist-size -2\n\n# Lists may also be compressed.\n# Compress depth is the number of quicklist ziplist nodes from *each* side of\n# the list to *exclude* from compression.  The head and tail of the list\n# are always uncompressed for fast push/pop operations.  Settings are:\n# 0: disable all list compression\n# 1: depth 1 means \"don't start compressing until after 1 node into the list,\n#    going from either the head or tail\"\n#    So: [head]->node->node->...->node->[tail]\n#    [head], [tail] will always be uncompressed; inner nodes will compress.\n# 2: [head]->[next]->node->node->...->node->[prev]->[tail]\n#    2 here means: don't compress head or head->next or tail->prev or tail,\n#    but compress all nodes between them.\n# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]\n# etc.\nlist-compress-depth 0\n\n# Sets have a special encoding in just one case: when a set is composed\n# of just strings that happen to be integers in radix 10 in the range\n# of 64 bit signed integers.\n# The following configuration setting sets the limit in the size of the\n# set in order to use this special memory saving encoding.\nset-max-intset-entries 512\n\n# Similarly to hashes and lists, sorted sets are also specially encoded in\n# order to save a lot of space. This encoding is only used when the length and\n# elements of a sorted set are below the following limits:\nzset-max-ziplist-entries 128\nzset-max-ziplist-value 64\n\n# HyperLogLog sparse representation bytes limit. The limit includes the\n# 16 bytes header. When an HyperLogLog using the sparse representation crosses\n# this limit, it is converted into the dense representation.\n#\n# A value greater than 16000 is totally useless, since at that point the\n# dense representation is more memory efficient.\n#\n# The suggested value is ~ 3000 in order to have the benefits of\n# the space efficient encoding without slowing down too much PFADD,\n# which is O(N) with the sparse encoding. The value can be raised to\n# ~ 10000 when CPU is not a concern, but space is, and the data set is\n# composed of many HyperLogLogs with cardinality in the 0 - 15000 range.\nhll-sparse-max-bytes 3000\n\n# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in\n# order to help rehashing the main Redis hash table (the one mapping top-level\n# keys to values). The hash table implementation Redis uses (see dict.c)\n# performs a lazy rehashing: the more operation you run into a hash table\n# that is rehashing, the more rehashing \"steps\" are performed, so if the\n# server is idle the rehashing is never complete and some more memory is used\n# by the hash table.\n#\n# The default is to use this millisecond 10 times every second in order to\n# actively rehash the main dictionaries, freeing memory when possible.\n#\n# If unsure:\n# use \"activerehashing no\" if you have hard latency requirements and it is\n# not a good thing in your environment that Redis can reply from time to time\n# to queries with 2 milliseconds delay.\n#\n# use \"activerehashing yes\" if you don't have such hard requirements but\n# want to free memory asap when possible.\nactiverehashing yes\n\n# The client output buffer limits can be used to force disconnection of clients\n# that are not reading data from the server fast enough for some reason (a\n# common reason is that a Pub/Sub client can't consume messages as fast as the\n# publisher can produce them).\n#\n# The limit can be set differently for the three different classes of clients:\n#\n# normal -> normal clients including MONITOR clients\n# slave  -> slave clients\n# pubsub -> clients subscribed to at least one pubsub channel or pattern\n#\n# The syntax of every client-output-buffer-limit directive is the following:\n#\n# client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>\n#\n# A client is immediately disconnected once the hard limit is reached, or if\n# the soft limit is reached and remains reached for the specified number of\n# seconds (continuously).\n# So for instance if the hard limit is 32 megabytes and the soft limit is\n# 16 megabytes / 10 seconds, the client will get disconnected immediately\n# if the size of the output buffers reach 32 megabytes, but will also get\n# disconnected if the client reaches 16 megabytes and continuously overcomes\n# the limit for 10 seconds.\n#\n# By default normal clients are not limited because they don't receive data\n# without asking (in a push way), but just after a request, so only\n# asynchronous clients may create a scenario where data is requested faster\n# than it can read.\n#\n# Instead there is a default limit for pubsub and slave clients, since\n# subscribers and slaves receive data in a push fashion.\n#\n# Both the hard or the soft limit can be disabled by setting them to zero.\nclient-output-buffer-limit normal 0 0 0\nclient-output-buffer-limit slave 256mb 64mb 60\nclient-output-buffer-limit pubsub 32mb 8mb 60\n\n# Redis calls an internal function to perform many background tasks, like\n# closing connections of clients in timeout, purging expired keys that are\n# never requested, and so forth.\n#\n# Not all tasks are performed with the same frequency, but Redis checks for\n# tasks to perform according to the specified \"hz\" value.\n#\n# By default \"hz\" is set to 10. Raising the value will use more CPU when\n# Redis is idle, but at the same time will make Redis more responsive when\n# there are many keys expiring at the same time, and timeouts may be\n# handled with more precision.\n#\n# The range is between 1 and 500, however a value over 100 is usually not\n# a good idea. Most users should use the default of 10 and raise this up to\n# 100 only in environments where very low latency is required.\nhz 10\n\n# When a child rewrites the AOF file, if the following option is enabled\n# the file will be fsync-ed every 32 MB of data generated. This is useful\n# in order to commit the file to the disk more incrementally and avoid\n# big latency spikes.\naof-rewrite-incremental-fsync yes\n"
  },
  {
    "path": "install/conf/salt/certs/saltstack.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO\nQTsA8V0B694uYiOmGl+nwyjS9PqNVQ+KIaYC8wQT+LxeH82rNqHMkTSNQ+I6wX/e\ni8PriATgb9NhEeinyzjsvEPIUNVwUvTon8Kix51uq0wDX9Pdc2uHeTwEs2qLCx/t\nQZBieXmODcInbscyizf4Ta7+6C4lHX00E/LzEA/ERh+jCVi7IWF+Mf31wr08kfRu\nOGqWAoBg1koyw/ZzNQ5D6WUPUd9OQMOvKio0JMUGWcZuFg/ZxmDFjR6H9uakurW0\nqYrxqrGZp+NkNnqgybnwmZqmS36OxpxymhbArwIDAQABAoIBAC+/eKNcqlHloJWE\nlng2+E0ja0vTfTMXZft3vnNXdxWuFxF9S1eaankTnjBa8MF9OUmxFf42qbKHrycZ\nqxPoU+ngMCu/Y8UM6LiH9cJ6qGJkGB0vHwpMgLPjQ6BuW0UW0S88YRgMscsKsFQK\nWXEtVlONZJ0yeeVkYVwRvbPbHraaBRe1O4CgfCCGhtCV5ln5MVzhgATH3kZJbXT2\n31YkvbKa+bECgJ9OH7PT0OBIBq89mRCUrNemGuc8RJBK6bRt4Mq8Ej3gkyTZ3azS\nP5wD1olIWabmpuIsjEUBpsP5DtdGAHceC0gXo66PgqGXSG303S3V6wovZOeUMtH8\nHxsrt9kCgYEA9SnEc6o+PH3O2jo7hil3CWVQdGXpzTfrYWXzbppESuTxgJQLvPDL\nUpNjCZ15rJTrlPZyU4MmMpxyjIKTJRScBYAIrPYw+QHn7FW4wrDQHLQHGMPOzk5Y\nM9HCGzDLVJR+mo4Qpd1W63QFXxgiEMrZ87mKj20XlefHQTZ2nHNpjW0CgYEA5UFj\nwFMWN2xTQvTd7BTFum8wMBNhxzroeoAWFA4TYsKpgwJFTGyGdRMPBVhZRQHYVK19\n8pzuRc+AMQhFDeBb01aRE4Lp7N5O4TJCiqcpqJBtaNSg0mXSS2vmrP1eH9rNfSjP\nVMWTtQ/D+E0VwsHV9tpalA5Pv1lwvpbUlCgZQQsCgYEAjuKM8KykITVhvaZ60rKQ\nAhXeUjijj0usD9QPkMKwUsYkSr/+J1xf4/yqmAwDwiX5N5R7BVlGhfDQgjwH7nCY\njkwUwlmqKTaHKSK80Buk71WtXS2h9nOKzIjQDHDf0KfLMeDiqwjZg9jW2JmEIS1Y\n4cedjgIS4Pd5FfTcJErPlfECgYEAs3eFB0ID2k9KvtfCAtYgE9qG9pu1p6lN5Nfw\ncLK0KlQJLy3P4gvzFiNdVunauFLBb0iBmDORs8TErZ2zsTE5sS/LUmLhjTRau6AE\nx1YlHngxricF3q8m+TP22OVfkcBPrPMNm2cwQkWdO/vcVSI4xY4Z6l1pwHnb8NdS\ngskBPBECgYBPOrx57pJesyNpcTuIJ0Ot+9/qke3V2ZjyxFjaKjv3gupg0WBRayn7\nPNlkNvjR0InjVkxx8+fwmi1kn8yPN3kaB9CvyR0AVgn36i840XcOqtjgsdmVzzpK\nx92xUbukNlgDWgDfLugRp8mrryik0MeHKgfZbpUnIU3dPwSTbr+BoQ==\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "install/conf/salt/certs/saltstack.pem",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO\nQTsA8V0B694uYiOmGl+nwyjS9PqNVQ+KIaYC8wQT+LxeH82rNqHMkTSNQ+I6wX/e\ni8PriATgb9NhEeinyzjsvEPIUNVwUvTon8Kix51uq0wDX9Pdc2uHeTwEs2qLCx/t\nQZBieXmODcInbscyizf4Ta7+6C4lHX00E/LzEA/ERh+jCVi7IWF+Mf31wr08kfRu\nOGqWAoBg1koyw/ZzNQ5D6WUPUd9OQMOvKio0JMUGWcZuFg/ZxmDFjR6H9uakurW0\nqYrxqrGZp+NkNnqgybnwmZqmS36OxpxymhbArwIDAQABAoIBAC+/eKNcqlHloJWE\nlng2+E0ja0vTfTMXZft3vnNXdxWuFxF9S1eaankTnjBa8MF9OUmxFf42qbKHrycZ\nqxPoU+ngMCu/Y8UM6LiH9cJ6qGJkGB0vHwpMgLPjQ6BuW0UW0S88YRgMscsKsFQK\nWXEtVlONZJ0yeeVkYVwRvbPbHraaBRe1O4CgfCCGhtCV5ln5MVzhgATH3kZJbXT2\n31YkvbKa+bECgJ9OH7PT0OBIBq89mRCUrNemGuc8RJBK6bRt4Mq8Ej3gkyTZ3azS\nP5wD1olIWabmpuIsjEUBpsP5DtdGAHceC0gXo66PgqGXSG303S3V6wovZOeUMtH8\nHxsrt9kCgYEA9SnEc6o+PH3O2jo7hil3CWVQdGXpzTfrYWXzbppESuTxgJQLvPDL\nUpNjCZ15rJTrlPZyU4MmMpxyjIKTJRScBYAIrPYw+QHn7FW4wrDQHLQHGMPOzk5Y\nM9HCGzDLVJR+mo4Qpd1W63QFXxgiEMrZ87mKj20XlefHQTZ2nHNpjW0CgYEA5UFj\nwFMWN2xTQvTd7BTFum8wMBNhxzroeoAWFA4TYsKpgwJFTGyGdRMPBVhZRQHYVK19\n8pzuRc+AMQhFDeBb01aRE4Lp7N5O4TJCiqcpqJBtaNSg0mXSS2vmrP1eH9rNfSjP\nVMWTtQ/D+E0VwsHV9tpalA5Pv1lwvpbUlCgZQQsCgYEAjuKM8KykITVhvaZ60rKQ\nAhXeUjijj0usD9QPkMKwUsYkSr/+J1xf4/yqmAwDwiX5N5R7BVlGhfDQgjwH7nCY\njkwUwlmqKTaHKSK80Buk71WtXS2h9nOKzIjQDHDf0KfLMeDiqwjZg9jW2JmEIS1Y\n4cedjgIS4Pd5FfTcJErPlfECgYEAs3eFB0ID2k9KvtfCAtYgE9qG9pu1p6lN5Nfw\ncLK0KlQJLy3P4gvzFiNdVunauFLBb0iBmDORs8TErZ2zsTE5sS/LUmLhjTRau6AE\nx1YlHngxricF3q8m+TP22OVfkcBPrPMNm2cwQkWdO/vcVSI4xY4Z6l1pwHnb8NdS\ngskBPBECgYBPOrx57pJesyNpcTuIJ0Ot+9/qke3V2ZjyxFjaKjv3gupg0WBRayn7\nPNlkNvjR0InjVkxx8+fwmi1kn8yPN3kaB9CvyR0AVgn36i840XcOqtjgsdmVzzpK\nx92xUbukNlgDWgDfLugRp8mrryik0MeHKgfZbpUnIU3dPwSTbr+BoQ==\n-----END RSA PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDhTCCAm2gAwIBAgIJAOYHQ0+YL1oXMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNV\nBAYTAkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRAwDgYD\nVQQKDAdCZWlKaW5nMQ8wDQYDVQQLDAZPcHNBbnkxDzANBgNVBAMMBk9wc0FueTAe\nFw0yMDEyMjEwODA0MzlaFw0zMDEyMTkwODA0MzlaMGUxCzAJBgNVBAYTAkNOMRAw\nDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRAwDgYDVQQKDAdCZWlK\naW5nMQ8wDQYDVQQLDAZPcHNBbnkxDzANBgNVBAMMBk9wc0FueTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBANuM+92uhcjbvr/0JTrZOy8SM9KAJzOc8hh+\nexbTu8StcjUQTkE7APFdAeveLmIjphpfp8Mo0vT6jVUPiiGmAvMEE/i8Xh/Nqzah\nzJE0jUPiOsF/3ovD64gE4G/TYRHop8s47LxDyFDVcFL06J/CosedbqtMA1/T3XNr\nh3k8BLNqiwsf7UGQYnl5jg3CJ27HMos3+E2u/uguJR19NBPy8xAPxEYfowlYuyFh\nfjH99cK9PJH0bjhqlgKAYNZKMsP2czUOQ+llD1HfTkDDryoqNCTFBlnGbhYP2cZg\nxY0eh/bmpLq1tKmK8aqxmafjZDZ6oMm58Jmapkt+jsaccpoWwK8CAwEAAaM4MDYw\nDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA+gwFgYDVR0lAQH/BAwwCgYIKwYB\nBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAEYLjlmcMl724apSYS8lqwA4extOL2ZO\nJRLG0DNqaCDFtDm8D0figeWJ/P4Oo6U7wHWsIRrX71mabCeGf/kY+MtY/yGEZoEO\noDu3rj5iiq1lzGNo5hy95cs1mZdCsnPzJK9PWTLMhTDLZy8Tr+XAflfFHyqsxIsa\n/rGO3GoWzqgw9mXsm6Z2DcC7CiV3ZJRey15DMRUr/Jxp/MD2AHDKj088fUh+oe/p\nBiq4osuTrxxyiCf3AWuczzQD6bDLsqd+JS14AdGeuW9L6xerXkxGdRNP8fuc4/ek\nWG4/6JOMUxIpZQPj6x74LXbS02cZw59bDHhg0+gG3IpajjS0PV51jmA=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "install/conf/salt/master",
    "content": "##### Primary configuration settings #####\n##########################################\n# This configuration file is used to manage the behavior of the Salt Master.\n# Values that are commented out but have an empty line after the comment are\n# defaults that do not need to be set in the config. If there is no blank line\n# after the comment then the value is presented as an example and is not the\n# default.\n\n# Per default, the master will automatically include all config files\n# from master.d/*.conf (master.d is a directory in the same directory\n# as the main master config file).\ndefault_include: master.d/*.conf\n\n# The address of the interface to bind to:\n#interface: 0.0.0.0\n\n# Whether the master should listen for IPv6 connections. If this is set to True,\n# the interface option must be adjusted, too. (For example: \"interface: '::'\")\nipv6: False\n\n# The tcp port used by the publisher:\npublish_port: 4505\n\n# The user under which the salt master will run. Salt will update all\n# permissions to allow the specified user to run the master. The exception is\n# the job cache, which must be deleted if this user is changed. If the\n# modified files cause conflicts, set verify_env to False.\n#user: root\n\n# The port used by the communication interface. The ret (return) port is the\n# interface used for the file server, authentication, job returns, etc.\nret_port: 4506\n\n# Specify the location of the daemon process ID file:\n#pidfile: /var/run/salt-master.pid\n\n# The root directory prepended to these options: pki_dir, cachedir,\n# sock_dir, log_file, autosign_file, autoreject_file, extension_modules,\n# key_logfile, pidfile, autosign_grains_dir:\n#root_dir: /\n\n# The path to the master's configuration file.\n#conf_file: /etc/salt/master\n\n# Directory used to store public key data:\n#pki_dir: /etc/salt/pki/master\n\n# Key cache. Increases master speed for large numbers of accepted\n# keys. Available options: 'sched'. (Updates on a fixed schedule.)\n# Note that enabling this feature means that minions will not be\n# available to target for up to the length of the maintanence loop\n# which by default is 60s.\n#key_cache: ''\n\n# Directory to store job and cache data:\n# This directory may contain sensitive data and should be protected accordingly.\n#\n#cachedir: /var/cache/salt/master\n\n# Directory for custom modules. This directory can contain subdirectories for\n# each of Salt's module types such as \"runners\", \"output\", \"wheel\", \"modules\",\n# \"states\", \"returners\", \"engines\", \"utils\", etc.\n#extension_modules: /var/cache/salt/master/extmods\n\n# Directory for custom modules. This directory can contain subdirectories for\n# each of Salt's module types such as \"runners\", \"output\", \"wheel\", \"modules\",\n# \"states\", \"returners\", \"engines\", \"utils\", etc.\n# Like 'extension_modules' but can take an array of paths\n#module_dirs: []\n\n# Verify and set permissions on configuration directories at startup:\n#verify_env: True\n\n# Set the number of hours to keep old job information in the job cache:\n#keep_jobs: 24\n\n# The number of seconds to wait when the client is requesting information\n# about running jobs.\n#gather_job_timeout: 10\n\n# Set the default timeout for the salt command and api. The default is 5\n# seconds.\ntimeout: 5\n\n# The loop_interval option controls the seconds for the master's maintenance\n# process check cycle. This process updates file server backends, cleans the\n# job cache and executes the scheduler.\n#loop_interval: 60\n\n# Set the default outputter used by the salt command. The default is \"nested\".\n#output: nested\n\n# To set a list of additional directories to search for salt outputters, set the\n# outputter_dirs option.\n#outputter_dirs: []\n\n# Set the default output file used by the salt command. Default is to output\n# to the CLI and not to a file. Functions the same way as the \"--out-file\"\n# CLI option, only sets this to a single file for all salt commands.\n#output_file: None\n\n# Return minions that timeout when running commands like test.ping\n#show_timeout: True\n\n# Tell the client to display the jid when a job is published.\n#show_jid: False\n\n# By default, output is colored. To disable colored output, set the color value\n# to False.\n#color: True\n\n# Do not strip off the colored output from nested results and state outputs\n# (true by default).\n# strip_colors: False\n\n# To display a summary of the number of minions targeted, the number of\n# minions returned, and the number of minions that did not return, set the\n# cli_summary value to True. (False by default.)\n#\n#cli_summary: False\n\n# Set the directory used to hold unix sockets:\n#sock_dir: /var/run/salt/master\n\n# The master can take a while to start up when lspci and/or dmidecode is used\n# to populate the grains for the master. Enable if you want to see GPU hardware\n# data for your master.\n# enable_gpu_grains: False\n\n# The master maintains a job cache. While this is a great addition, it can be\n# a burden on the master for larger deployments (over 5000 minions).\n# Disabling the job cache will make previously executed jobs unavailable to\n# the jobs system and is not generally recommended.\n#job_cache: True\n\n# Cache minion grains, pillar and mine data via the cache subsystem in the\n# cachedir or a database.\n#minion_data_cache: True\n\n# Cache subsystem module to use for minion data cache.\n#cache: localfs\n# Enables a fast in-memory cache booster and sets the expiration time.\n#memcache_expire_seconds: 0\n# Set a memcache limit in items (bank + key) per cache storage (driver + driver_opts).\n#memcache_max_items: 1024\n# Each time a cache storage got full cleanup all the expired items not just the oldest one.\n#memcache_full_cleanup: False\n# Enable collecting the memcache stats and log it on `debug` log level.\n#memcache_debug: False\n\n# Store all returns in the given returner.\n# Setting this option requires that any returner-specific configuration also\n# be set. See various returners in salt/returners for details on required\n# configuration values. (See also, event_return_queue, and event_return_queue_max_seconds below.)\n#\n#event_return: mysql\n\n# On busy systems, enabling event_returns can cause a considerable load on\n# the storage system for returners. Events can be queued on the master and\n# stored in a batched fashion using a single transaction for multiple events.\n# By default, events are not queued.\n#event_return_queue: 0\n\n# In some cases enabling event return queueing can be very helpful, but the bus\n# may not busy enough to flush the queue consistently.  Setting this to a reasonable\n# value (1-30 seconds) will cause the queue to be flushed when the oldest event is older\n# than `event_return_queue_max_seconds` regardless of how many events are in the queue.\n#event_return_queue_max_seconds: 0\n\n# Only return events matching tags in a whitelist, supports glob matches.\n#event_return_whitelist:\n#  - salt/master/a_tag\n#  - salt/run/*/ret\n\n# Store all event returns **except** the tags in a blacklist, supports globs.\n#event_return_blacklist:\n#  - salt/master/not_this_tag\n#  - salt/wheel/*/ret\n\n# Passing very large events can cause the minion to consume large amounts of\n# memory. This value tunes the maximum size of a message allowed onto the\n# master event bus. The value is expressed in bytes.\n#max_event_size: 1048576\n\n# Windows platforms lack posix IPC and must rely on slower TCP based inter-\n# process communications. Set ipc_mode to 'tcp' on such systems\n#ipc_mode: ipc\n\n# Overwrite the default tcp ports used by the minion when ipc_mode is set to 'tcp'\n#tcp_master_pub_port: 4510\n#tcp_master_pull_port: 4511\n\n# By default, the master AES key rotates every 24 hours. The next command\n# following a key rotation will trigger a key refresh from the minion which may\n# result in minions which do not respond to the first command after a key refresh.\n#\n# To tell the master to ping all minions immediately after an AES key refresh, set\n# ping_on_rotate to True. This should mitigate the issue where a minion does not\n# appear to initially respond after a key is rotated.\n#\n# Note that ping_on_rotate may cause high load on the master immediately after\n# the key rotation event as minions reconnect. Consider this carefully if this\n# salt master is managing a large number of minions.\n#\n# If disabled, it is recommended to handle this event by listening for the\n# 'aes_key_rotate' event with the 'key' tag and acting appropriately.\n# ping_on_rotate: False\n\n# By default, the master deletes its cache of minion data when the key for that\n# minion is removed. To preserve the cache after key deletion, set\n# 'preserve_minion_cache' to True.\n#\n# WARNING: This may have security implications if compromised minions auth with\n# a previous deleted minion ID.\n#preserve_minion_cache: False\n\n# Allow or deny minions from requesting their own key revocation\n#allow_minion_key_revoke: True\n\n# If max_minions is used in large installations, the master might experience\n# high-load situations because of having to check the number of connected\n# minions for every authentication. This cache provides the minion-ids of\n# all connected minions to all MWorker-processes and greatly improves the\n# performance of max_minions.\n# con_cache: False\n\n# The master can include configuration from other files. To enable this,\n# pass a list of paths to this option. The paths can be either relative or\n# absolute; if relative, they are considered to be relative to the directory\n# the main master configuration file lives in (this file). Paths can make use\n# of shell-style globbing. If no files are matched by a path passed to this\n# option, then the master will log a warning message.\n#\n# Include a config file from some other path:\n# include: /etc/salt/extra_config\n#\n# Include config from several files and directories:\n# include:\n#   - /etc/salt/extra_config\n\n\n#####  Large-scale tuning settings   #####\n##########################################\n# Max open files\n#\n# Each minion connecting to the master uses AT LEAST one file descriptor, the\n# master subscription connection. If enough minions connect you might start\n# seeing on the console (and then salt-master crashes):\n#   Too many open files (tcp_listener.cpp:335)\n#   Aborted (core dumped)\n#\n# By default this value will be the one of `ulimit -Hn`, ie, the hard limit for\n# max open files.\n#\n# If you wish to set a different value than the default one, uncomment and\n# configure this setting. Remember that this value CANNOT be higher than the\n# hard limit. Raising the hard limit depends on your OS and/or distribution,\n# a good way to find the limit is to search the internet. For example:\n#   raise max open files hard limit debian\n#\n#max_open_files: 100000\n\n# The number of worker threads to start. These threads are used to manage\n# return calls made from minions to the master. If the master seems to be\n# running slowly, increase the number of threads. This setting can not be\n# set lower than 3.\nworker_threads: 10\n\n# Set the ZeroMQ high water marks\n# http://api.zeromq.org/3-2:zmq-setsockopt\n\n# The listen queue size / backlog\n#zmq_backlog: 1000\n\n# The publisher interface ZeroMQPubServerChannel\n#pub_hwm: 1000\n\n# The master may allocate memory per-event and not\n# reclaim it.\n# To set a high-water mark for memory allocation, use\n# ipc_write_buffer to set a high-water mark for message\n# buffering.\n# Value: In bytes. Set to 'dynamic' to have Salt select\n# a value for you. Default is disabled.\n# ipc_write_buffer: 'dynamic'\n\n# These two batch settings, batch_safe_limit and batch_safe_size, are used to\n# automatically switch to a batch mode execution. If a command would have been\n# sent to more than <batch_safe_limit> minions, then run the command in\n# batches of <batch_safe_size>. If no batch_safe_size is specified, a default\n# of 8 will be used. If no batch_safe_limit is specified, then no automatic\n# batching will occur.\n#batch_safe_limit: 100\n#batch_safe_size: 8\n\n# Master stats enables stats events to be fired from the master at close\n# to the defined interval\n#master_stats: False\n#master_stats_event_iter: 60\n\n\n#####        Security settings       #####\n##########################################\n# Enable passphrase protection of Master private key.  Although a string value\n# is acceptable; passwords should be stored in an external vaulting mechanism\n# and retrieved via sdb. See https://docs.saltstack.com/en/latest/topics/sdb/.\n# Passphrase protection is off by default but an example of an sdb profile and\n# query is as follows.\n# masterkeyring:\n#  driver: keyring\n#  service: system\n#\n# key_pass: sdb://masterkeyring/key_pass\n\n# Enable passphrase protection of the Master signing_key. This only applies if\n# master_sign_pubkey is set to True.  This is disabled by default.\n# master_sign_pubkey: True\n# signing_key_pass: sdb://masterkeyring/signing_pass\n\n# Enable \"open mode\", this mode still maintains encryption, but turns off\n# authentication, this is only intended for highly secure environments or for\n# the situation where your keys end up in a bad state. If you run in open mode\n# you do so at your own risk!\n#open_mode: False\n\n# Enable auto_accept, this setting will automatically accept all incoming\n# public keys from the minions. Note that this is insecure.\n#auto_accept: False\n\n# The size of key that should be generated when creating new keys.\n#keysize: 2048\n\n# Time in minutes that an incoming public key with a matching name found in\n# pki_dir/minion_autosign/keyid is automatically accepted. Expired autosign keys\n# are removed when the master checks the minion_autosign directory.\n# 0 equals no timeout\n# autosign_timeout: 120\n\n# If the autosign_file is specified, incoming keys specified in the\n# autosign_file will be automatically accepted. This is insecure.  Regular\n# expressions as well as globing lines are supported. The file must be readonly\n# except for the owner. Use permissive_pki_access to allow the group write access.\n#autosign_file: /etc/salt/autosign.conf\n\n# Works like autosign_file, but instead allows you to specify minion IDs for\n# which keys will automatically be rejected. Will override both membership in\n# the autosign_file and the auto_accept setting.\n#autoreject_file: /etc/salt/autoreject.conf\n\n# If the autosign_grains_dir is specified, incoming keys from minons with grain\n# values matching those defined in files in this directory will be accepted\n# automatically. This is insecure. Minions need to be configured to send the grains.\n#autosign_grains_dir: /etc/salt/autosign_grains\n\n# Enable permissive access to the salt keys. This allows you to run the\n# master or minion as root, but have a non-root group be given access to\n# your pki_dir. To make the access explicit, root must belong to the group\n# you've given access to. This is potentially quite insecure. If an autosign_file\n# is specified, enabling permissive_pki_access will allow group access to that\n# specific file.\n#permissive_pki_access: False\n\n# Allow users on the master access to execute specific commands on minions.\n# This setting should be treated with care since it opens up execution\n# capabilities to non root users. By default this capability is completely\n# disabled.\n#publisher_acl:\n#  larry:\n#    - test.ping\n#    - network.*\n#\n# Blacklist any of the following users or modules\n#\n# This example would blacklist all non sudo users, including root from\n# running any commands. It would also blacklist any use of the \"cmd\"\n# module. This is completely disabled by default.\n#\n#\n# Check the list of configured users in client ACL against users on the\n# system and throw errors if they do not exist.\n#client_acl_verify: True\n#\n#publisher_acl_blacklist:\n#  users:\n#    - root\n#    - '^(?!sudo_).*$'   #  all non sudo users\n#  modules:\n#    - cmd\n\n# Enforce publisher_acl & publisher_acl_blacklist when users have sudo\n# access to the salt command.\n#\n#sudo_acl: False\n\n# The external auth system uses the Salt auth modules to authenticate and\n# validate users to access areas of the Salt system.\n#external_auth:\n#  pam:\n#    fred:\n#      - test.*\n#\n# Time (in seconds) for a newly generated token to live. Default: 12 hours\n#token_expire: 43200\n#\n# Allow eauth users to specify the expiry time of the tokens they generate.\n# A boolean applies to all users or a dictionary of whitelisted eauth backends\n# and usernames may be given.\n# token_expire_user_override:\n#   pam:\n#     - fred\n#     - tom\n#   ldap:\n#     - gary\n#\n#token_expire_user_override: False\n\n# Set to True to enable keeping the calculated user's auth list in the token\n# file. This is disabled by default and the auth list is calculated or requested\n# from the eauth driver each time.\n#keep_acl_in_token: False\n\n# Auth subsystem module to use to get authorized access list for a user. By default it's\n# the same module used for external authentication.\n#eauth_acl_module: django\n\n# Allow minions to push files to the master. This is disabled by default, for\n# security purposes.\nfile_recv: True\n\n# Set a hard-limit on the size of the files that can be pushed to the master.\n# It will be interpreted as megabytes. Default: 100\nfile_recv_max_size: 1000\n\n# Signature verification on messages published from the master.\n# This causes the master to cryptographically sign all messages published to its event\n# bus, and minions then verify that signature before acting on the message.\n#\n# This is False by default.\n#\n# Note that to facilitate interoperability with masters and minions that are different\n# versions, if sign_pub_messages is True but a message is received by a minion with\n# no signature, it will still be accepted, and a warning message will be logged.\n# Conversely, if sign_pub_messages is False, but a minion receives a signed\n# message it will be accepted, the signature will not be checked, and a warning message\n# will be logged. This behavior went away in Salt 2014.1.0 and these two situations\n# will cause minion to throw an exception and drop the message.\n# sign_pub_messages: False\n\n# Signature verification on messages published from minions\n# This requires that minions cryptographically sign the messages they\n# publish to the master.  If minions are not signing, then log this information\n# at loglevel 'INFO' and drop the message without acting on it.\n# require_minion_sign_messages: False\n\n# The below will drop messages when their signatures do not validate.\n# Note that when this option is False but `require_minion_sign_messages` is True\n# minions MUST sign their messages but the validity of their signatures\n# is ignored.\n# These two config options exist so a Salt infrastructure can be moved\n# to signing minion messages gradually.\n# drop_messages_signature_fail: False\n\n# Use TLS/SSL encrypted connection between master and minion.\n# Can be set to a dictionary containing keyword arguments corresponding to Python's\n# 'ssl.wrap_socket' method.\n# Default is None.\n#ssl:\n#    keyfile: <path_to_keyfile>\n#    certfile: <path_to_certfile>\n#    ssl_version: PROTOCOL_TLSv1_2\n\n#####     Salt-SSH Configuration     #####\n##########################################\n# Define the default salt-ssh roster module to use\n#roster: flat\n\n# Pass in an alternative location for the salt-ssh `flat` roster file\n#roster_file: /etc/salt/roster\n\n# Define locations for `flat` roster files so they can be chosen when using Salt API.\n# An administrator can place roster files into these locations. Then when\n# calling Salt API, parameter 'roster_file' should contain a relative path to\n# these locations. That is, \"roster_file=/foo/roster\" will be resolved as\n# \"/etc/salt/roster.d/foo/roster\" etc. This feature prevents passing insecure\n# custom rosters through the Salt API.\n#\n#rosters:\n# - /etc/salt/roster.d\n# - /opt/salt/some/more/rosters\n\n# The ssh password to log in with.\n#ssh_passwd: ''\n\n#The target system's ssh port number.\n#ssh_port: 22\n\n# Comma-separated list of ports to scan.\n#ssh_scan_ports: 22\n\n# Scanning socket timeout for salt-ssh.\n#ssh_scan_timeout: 0.01\n\n# Boolean to run command via sudo.\n#ssh_sudo: False\n\n# Number of seconds to wait for a response when establishing an SSH connection.\n#ssh_timeout: 60\n\n# The user to log in as.\n#ssh_user: root\n\n# The log file of the salt-ssh command:\n#ssh_log_file: /var/log/salt/ssh\n\n# Pass in minion option overrides that will be inserted into the SHIM for\n# salt-ssh calls. The local minion config is not used for salt-ssh. Can be\n# overridden on a per-minion basis in the roster (`minion_opts`)\n#ssh_minion_opts:\n#  gpg_keydir: /root/gpg\n\n# Set this to True to default to using ~/.ssh/id_rsa for salt-ssh\n# authentication with minions\n#ssh_use_home_key: False\n\n# Set this to True to default salt-ssh to run with ``-o IdentitiesOnly=yes``.\n# This option is intended for situations where the ssh-agent offers many\n# different identities and allows ssh to ignore those identities and use the\n# only one specified in options.\n#ssh_identities_only: False\n\n# List-only nodegroups for salt-ssh. Each group must be formed as either a\n# comma-separated list, or a YAML list. This option is useful to group minions\n# into easy-to-target groups when using salt-ssh. These groups can then be\n# targeted with the normal -N argument to salt-ssh.\n#ssh_list_nodegroups: {}\n\n# salt-ssh has the ability to update the flat roster file if a minion is not\n# found in the roster.  Set this to True to enable it.\n#ssh_update_roster: False\n\n#####    Master Module Management    #####\n##########################################\n# Manage how master side modules are loaded.\n\n# Add any additional locations to look for master runners:\n#runner_dirs: []\n\n# Add any additional locations to look for master utils:\n#utils_dirs: []\n\n# Enable Cython for master side modules:\n#cython_enable: False\n\n\n#####      State System settings     #####\n##########################################\n# The state system uses a \"top\" file to tell the minions what environment to\n# use and what modules to use. The state_top file is defined relative to the\n# root of the base environment as defined in \"File Server settings\" below.\n#state_top: top.sls\n\n# The master_tops option replaces the external_nodes option by creating\n# a plugable system for the generation of external top data. The external_nodes\n# option is deprecated by the master_tops option.\n#\n# To gain the capabilities of the classic external_nodes system, use the\n# following configuration:\n# master_tops:\n#   ext_nodes: <Shell command which returns yaml>\n#\n#master_tops: {}\n\n# The renderer to use on the minions to render the state data\n#renderer: jinja|yaml\n\n# Default Jinja environment options for all templates except sls templates\n#jinja_env:\n#  block_start_string: '{%'\n#  block_end_string: '%}'\n#  variable_start_string: '{{'\n#  variable_end_string: '}}'\n#  comment_start_string: '{#'\n#  comment_end_string: '#}'\n#  line_statement_prefix:\n#  line_comment_prefix:\n#  trim_blocks: False\n#  lstrip_blocks: False\n#  newline_sequence: '\\n'\n#  keep_trailing_newline: False\n\n# Jinja environment options for sls templates\n#jinja_sls_env:\n#  block_start_string: '{%'\n#  block_end_string: '%}'\n#  variable_start_string: '{{'\n#  variable_end_string: '}}'\n#  comment_start_string: '{#'\n#  comment_end_string: '#}'\n#  line_statement_prefix:\n#  line_comment_prefix:\n#  trim_blocks: False\n#  lstrip_blocks: False\n#  newline_sequence: '\\n'\n#  keep_trailing_newline: False\n\n# The failhard option tells the minions to stop immediately after the first\n# failure detected in the state execution, defaults to False\n#failhard: False\n\n# The state_verbose and state_output settings can be used to change the way\n# state system data is printed to the display. By default all data is printed.\n# The state_verbose setting can be set to True or False, when set to False\n# all data that has a result of True and no changes will be suppressed.\n#state_verbose: True\n\n# The state_output setting controls which results will be output full multi line\n# full, terse - each state will be full/terse\n# mixed - only states with errors will be full\n# changes - states with changes and errors will be full\n# full_id, mixed_id, changes_id and terse_id are also allowed;\n# when set, the state ID will be used as name in the output\n#state_output: full\n\n# The state_output_diff setting changes whether or not the output from\n# successful states is returned. Useful when even the terse output of these\n# states is cluttering the logs. Set it to True to ignore them.\n#state_output_diff: False\n\n# Automatically aggregate all states that have support for mod_aggregate by\n# setting to 'True'. Or pass a list of state module names to automatically\n# aggregate just those types.\n#\n# state_aggregate:\n#   - pkg\n#\n#state_aggregate: False\n\n# Send progress events as each function in a state run completes execution\n# by setting to 'True'. Progress events are in the format\n# 'salt/job/<JID>/prog/<MID>/<RUN NUM>'.\n#state_events: False\n\n#####      File Server settings      #####\n##########################################\n# Salt runs a lightweight file server written in zeromq to deliver files to\n# minions. This file server is built into the master daemon and does not\n# require a dedicated port.\n\n# The file server works on environments passed to the master, each environment\n# can have multiple root directories, the subdirectories in the multiple file\n# roots cannot match, otherwise the downloaded files will not be able to be\n# reliably ensured. A base environment is required to house the top file.\n# Example:\n# file_roots:\n#   base:\n#     - /srv/salt/\n#   dev:\n#     - /srv/salt/dev/services\n#     - /srv/salt/dev/states\n#   prod:\n#     - /srv/salt/prod/services\n#     - /srv/salt/prod/states\n#\nfile_roots:\n  base:\n    - /srv/salt\n#\n\n# The master_roots setting configures a master-only copy of the file_roots dictionary,\n# used by the state compiler.\n#master_roots: /srv/salt-master\n\n# When using multiple environments, each with their own top file, the\n# default behaviour is an unordered merge. To prevent top files from\n# being merged together and instead to only use the top file from the\n# requested environment, set this value to 'same'.\n#top_file_merging_strategy: merge\n\n# To specify the order in which environments are merged, set the ordering\n# in the env_order option. Given a conflict, the last matching value will\n# win.\n#env_order: ['base', 'dev', 'prod']\n\n# If top_file_merging_strategy is set to 'same' and an environment does not\n# contain a top file, the top file in the environment specified by default_top\n# will be used instead.\n#default_top: base\n\n# The hash_type is the hash to use when discovering the hash of a file on\n# the master server. The default is sha256, but md5, sha1, sha224, sha384 and\n# sha512 are also supported.\n#\n# WARNING: While md5 and sha1 are also supported, do not use them due to the\n# high chance of possible collisions and thus security breach.\n#\n# Prior to changing this value, the master should be stopped and all Salt\n# caches should be cleared.\n#hash_type: sha256\n\n# The buffer size in the file server can be adjusted here:\n#file_buffer_size: 1048576\n\n# A regular expression (or a list of expressions) that will be matched\n# against the file path before syncing the modules and states to the minions.\n# This includes files affected by the file.recurse state.\n# For example, if you manage your custom modules and states in subversion\n# and don't want all the '.svn' folders and content synced to your minions,\n# you could set this to '/\\.svn($|/)'. By default nothing is ignored.\n#file_ignore_regex:\n#  - '/\\.svn($|/)'\n#  - '/\\.git($|/)'\n\n# A file glob (or list of file globs) that will be matched against the file\n# path before syncing the modules and states to the minions. This is similar\n# to file_ignore_regex above, but works on globs instead of regex. By default\n# nothing is ignored.\n# file_ignore_glob:\n#  - '*.pyc'\n#  - '*/somefolder/*.bak'\n#  - '*.swp'\n\n# File Server Backend\n#\n# Salt supports a modular fileserver backend system, this system allows\n# the salt master to link directly to third party systems to gather and\n# manage the files available to minions. Multiple backends can be\n# configured and will be searched for the requested file in the order in which\n# they are defined here. The default setting only enables the standard backend\n# \"roots\" which uses the \"file_roots\" option.\n#fileserver_backend:\n#  - roots\n#\n# To use multiple backends list them in the order they are searched:\n#fileserver_backend:\n#  - git\n#  - roots\n#\n# Uncomment the line below if you do not want the file_server to follow\n# symlinks when walking the filesystem tree. This is set to True\n# by default. Currently this only applies to the default roots\n# fileserver_backend.\n#fileserver_followsymlinks: False\n#\n# Uncomment the line below if you do not want symlinks to be\n# treated as the files they are pointing to. By default this is set to\n# False. By uncommenting the line below, any detected symlink while listing\n# files on the Master will not be returned to the Minion.\n#fileserver_ignoresymlinks: True\n#\n# By default, the Salt fileserver recurses fully into all defined environments\n# to attempt to find files. To limit this behavior so that the fileserver only\n# traverses directories with SLS files and special Salt directories like _modules,\n# enable the option below. This might be useful for installations where a file root\n# has a very large number of files and performance is impacted. Default is False.\n# fileserver_limit_traversal: False\n#\n# The fileserver can fire events off every time the fileserver is updated,\n# these are disabled by default, but can be easily turned on by setting this\n# flag to True\n#fileserver_events: False\n\n# Git File Server Backend Configuration\n#\n# Optional parameter used to specify the provider to be used for gitfs. Must be\n# either pygit2 or gitpython. If unset, then both will be tried (in that\n# order), and the first one with a compatible version installed will be the\n# provider that is used.\n#\n#gitfs_provider: pygit2\n\n# Along with gitfs_password, is used to authenticate to HTTPS remotes.\n# gitfs_user: ''\n\n# Along with gitfs_user, is used to authenticate to HTTPS remotes.\n# This parameter is not required if the repository does not use authentication.\n#gitfs_password: ''\n\n# By default, Salt will not authenticate to an HTTP (non-HTTPS) remote.\n# This parameter enables authentication over HTTP. Enable this at your own risk.\n#gitfs_insecure_auth: False\n\n# Along with gitfs_privkey (and optionally gitfs_passphrase), is used to\n# authenticate to SSH remotes. This parameter (or its per-remote counterpart)\n# is required for SSH remotes.\n#gitfs_pubkey: ''\n\n# Along with gitfs_pubkey (and optionally gitfs_passphrase), is used to\n# authenticate to SSH remotes. This parameter (or its per-remote counterpart)\n# is required for SSH remotes.\n#gitfs_privkey: ''\n\n# This parameter is optional, required only when the SSH key being used to\n# authenticate is protected by a passphrase.\n#gitfs_passphrase: ''\n\n# When using the git fileserver backend at least one git remote needs to be\n# defined. The user running the salt master will need read access to the repo.\n#\n# The repos will be searched in order to find the file requested by a client\n# and the first repo to have the file will return it.\n# When using the git backend branches and tags are translated into salt\n# environments.\n# Note: file:// repos will be treated as a remote, so refs you want used must\n# exist in that repo as *local* refs.\n#gitfs_remotes:\n#  - git://github.com/saltstack/salt-states.git\n#  - file:///var/git/saltmaster\n#\n# The gitfs_ssl_verify option specifies whether to ignore ssl certificate\n# errors when contacting the gitfs backend. You might want to set this to\n# false if you're using a git backend that uses a self-signed certificate but\n# keep in mind that setting this flag to anything other than the default of True\n# is a security concern, you may want to try using the ssh transport.\n#gitfs_ssl_verify: True\n#\n# The gitfs_root option gives the ability to serve files from a subdirectory\n# within the repository. The path is defined relative to the root of the\n# repository and defaults to the repository root.\n#gitfs_root: somefolder/otherfolder\n#\n# The refspecs fetched by gitfs remotes\n#gitfs_refspecs:\n#  - '+refs/heads/*:refs/remotes/origin/*'\n#  - '+refs/tags/*:refs/tags/*'\n#\n#\n#####         Pillar settings        #####\n##########################################\n# Salt Pillars allow for the building of global data that can be made selectively\n# available to different minions based on minion grain filtering. The Salt\n# Pillar is laid out in the same fashion as the file server, with environments,\n# a top file and sls files. However, pillar data does not need to be in the\n# highstate format, and is generally just key/value pairs.\npillar_roots:\n  base:\n    - /srv/pillar\n#\n#ext_pillar:\n#  - hiera: /etc/hiera.yaml\n#  - cmd_yaml: cat /etc/salt/yaml\n\n\n# A list of paths to be recursively decrypted during pillar compilation.\n# Entries in this list can be formatted either as a simple string, or as a\n# key/value pair, with the key being the pillar location, and the value being\n# the renderer to use for pillar decryption. If the former is used, the\n# renderer specified by decrypt_pillar_default will be used.\n#decrypt_pillar:\n#  - 'foo:bar': gpg\n#  - 'lorem:ipsum:dolor'\n\n# The delimiter used to distinguish nested data structures in the\n# decrypt_pillar option.\n#decrypt_pillar_delimiter: ':'\n\n# The default renderer used for decryption, if one is not specified for a given\n# pillar key in decrypt_pillar.\n#decrypt_pillar_default: gpg\n\n# List of renderers which are permitted to be used for pillar decryption.\n#decrypt_pillar_renderers:\n#  - gpg\n\n# The ext_pillar_first option allows for external pillar sources to populate\n# before file system pillar. This allows for targeting file system pillar from\n# ext_pillar.\n#ext_pillar_first: False\n\n# The external pillars permitted to be used on-demand using pillar.ext\n#on_demand_ext_pillar:\n#  - libvirt\n#  - virtkey\n\n# The pillar_gitfs_ssl_verify option specifies whether to ignore ssl certificate\n# errors when contacting the pillar gitfs backend. You might want to set this to\n# false if you're using a git backend that uses a self-signed certificate but\n# keep in mind that setting this flag to anything other than the default of True\n# is a security concern, you may want to try using the ssh transport.\n#pillar_gitfs_ssl_verify: True\n\n# The pillar_opts option adds the master configuration file data to a dict in\n# the pillar called \"master\". This is used to set simple configurations in the\n# master config file that can then be used on minions.\n#pillar_opts: False\n\n# The pillar_safe_render_error option prevents the master from passing pillar\n# render errors to the minion. This is set on by default because the error could\n# contain templating data which would give that minion information it shouldn't\n# have, like a password! When set true the error message will only show:\n#   Rendering SLS 'my.sls' failed. Please see master log for details.\n#pillar_safe_render_error: True\n\n# The pillar_source_merging_strategy option allows you to configure merging strategy\n# between different sources. It accepts five values: none, recurse, aggregate, overwrite,\n# or smart. None will not do any merging at all. Recurse will merge recursively mapping of data.\n# Aggregate instructs aggregation of elements between sources that use the #!yamlex renderer. Overwrite\n# will overwrite elements according the order in which they are processed. This is\n# behavior of the 2014.1 branch and earlier. Smart guesses the best strategy based\n# on the \"renderer\" setting and is the default value.\n#pillar_source_merging_strategy: smart\n\n# Recursively merge lists by aggregating them instead of replacing them.\n#pillar_merge_lists: False\n\n# Set this option to True to force the pillarenv to be the same as the effective\n# saltenv when running states. If pillarenv is specified this option will be\n# ignored.\n#pillarenv_from_saltenv: False\n\n# Set this option to 'True' to force a 'KeyError' to be raised whenever an\n# attempt to retrieve a named value from pillar fails. When this option is set\n# to 'False', the failed attempt returns an empty string. Default is 'False'.\n#pillar_raise_on_missing: False\n\n# Git External Pillar (git_pillar) Configuration Options\n#\n# Specify the provider to be used for git_pillar. Must be either pygit2 or\n# gitpython. If unset, then both will be tried in that same order, and the\n# first one with a compatible version installed will be the provider that\n# is used.\n#git_pillar_provider: pygit2\n\n# If the desired branch matches this value, and the environment is omitted\n# from the git_pillar configuration, then the environment for that git_pillar\n# remote will be base.\n#git_pillar_base: master\n\n# If the branch is omitted from a git_pillar remote, then this branch will\n# be used instead\n#git_pillar_branch: master\n\n# Environment to use for git_pillar remotes. This is normally derived from\n# the branch/tag (or from a per-remote env parameter), but if set this will\n# override the process of deriving the env from the branch/tag name.\n#git_pillar_env: ''\n\n# Path relative to the root of the repository where the git_pillar top file\n# and SLS files are located.\n#git_pillar_root: ''\n\n# Specifies whether or not to ignore SSL certificate errors when contacting\n# the remote repository.\n#git_pillar_ssl_verify: False\n\n# When set to False, if there is an update/checkout lock for a git_pillar\n# remote and the pid written to it is not running on the master, the lock\n# file will be automatically cleared and a new lock will be obtained.\n#git_pillar_global_lock: True\n\n# Git External Pillar Authentication Options\n#\n# Along with git_pillar_password, is used to authenticate to HTTPS remotes.\n#git_pillar_user: ''\n\n# Along with git_pillar_user, is used to authenticate to HTTPS remotes.\n# This parameter is not required if the repository does not use authentication.\n#git_pillar_password: ''\n\n# By default, Salt will not authenticate to an HTTP (non-HTTPS) remote.\n# This parameter enables authentication over HTTP.\n#git_pillar_insecure_auth: False\n\n# Along with git_pillar_privkey (and optionally git_pillar_passphrase),\n# is used to authenticate to SSH remotes.\n#git_pillar_pubkey: ''\n\n# Along with git_pillar_pubkey (and optionally git_pillar_passphrase),\n# is used to authenticate to SSH remotes.\n#git_pillar_privkey: ''\n\n# This parameter is optional, required only when the SSH key being used\n# to authenticate is protected by a passphrase.\n#git_pillar_passphrase: ''\n\n# The refspecs fetched by git_pillar remotes\n#git_pillar_refspecs:\n#  - '+refs/heads/*:refs/remotes/origin/*'\n#  - '+refs/tags/*:refs/tags/*'\n\n# A master can cache pillars locally to bypass the expense of having to render them\n# for each minion on every request. This feature should only be enabled in cases\n# where pillar rendering time is known to be unsatisfactory and any attendant security\n# concerns about storing pillars in a master cache have been addressed.\n#\n# When enabling this feature, be certain to read through the additional ``pillar_cache_*``\n# configuration options to fully understand the tunable parameters and their implications.\n#\n# Note: setting ``pillar_cache: True`` has no effect on targeting Minions with Pillars.\n# See https://docs.saltstack.com/en/latest/topics/targeting/pillar.html\n#pillar_cache: False\n\n# If and only if a master has set ``pillar_cache: True``, the cache TTL controls the amount\n# of time, in seconds, before the cache is considered invalid by a master and a fresh\n# pillar is recompiled and stored.\n#pillar_cache_ttl: 3600\n\n# If and only if a master has set `pillar_cache: True`, one of several storage providers\n# can be utilized.\n#\n# `disk`: The default storage backend. This caches rendered pillars to the master cache.\n#         Rendered pillars are serialized and deserialized as msgpack structures for speed.\n#         Note that pillars are stored UNENCRYPTED. Ensure that the master cache\n#         has permissions set appropriately. (Same defaults are provided.)\n#\n# memory: [EXPERIMENTAL] An optional backend for pillar caches which uses a pure-Python\n#         in-memory data structure for maximal performance. There are several caveats,\n#         however. First, because each master worker contains its own in-memory cache,\n#         there is no guarantee of cache consistency between minion requests. This\n#         works best in situations where the pillar rarely if ever changes. Secondly,\n#         and perhaps more importantly, this means that unencrypted pillars will\n#         be accessible to any process which can examine the memory of the ``salt-master``!\n#         This may represent a substantial security risk.\n#\n#pillar_cache_backend: disk\n\n\n######        Reactor Settings        #####\n###########################################\n# Define a salt reactor. See https://docs.saltstack.com/en/latest/topics/reactor/\n#reactor: []\n\n#Set the TTL for the cache of the reactor configuration.\n#reactor_refresh_interval: 60\n\n#Configure the number of workers for the runner/wheel in the reactor.\n#reactor_worker_threads: 10\n\n#Define the queue size for workers in the reactor.\n#reactor_worker_hwm: 10000\n\n\n#####          Syndic settings       #####\n##########################################\n# The Salt syndic is used to pass commands through a master from a higher\n# master. Using the syndic is simple. If this is a master that will have\n# syndic servers(s) below it, then set the \"order_masters\" setting to True.\n#\n# If this is a master that will be running a syndic daemon for passthrough, then\n# the \"syndic_master\" setting needs to be set to the location of the master server\n# to receive commands from.\n\n# Set the order_masters setting to True if this master will command lower\n# masters' syndic interfaces.\n#order_masters: False\n\n# If this master will be running a salt syndic daemon, syndic_master tells\n# this master where to receive commands from.\n#syndic_master: masterofmasters\n\n# This is the 'ret_port' of the MasterOfMaster:\n#syndic_master_port: 4506\n\n# PID file of the syndic daemon:\n#syndic_pidfile: /var/run/salt-syndic.pid\n\n# The log file of the salt-syndic daemon:\n#syndic_log_file: /var/log/salt/syndic\n\n# The behaviour of the multi-syndic when connection to a master of masters failed.\n# Can specify ``random`` (default) or ``ordered``. If set to ``random``, masters\n# will be iterated in random order. If ``ordered`` is specified, the configured\n# order will be used.\n#syndic_failover: random\n\n# The number of seconds for the salt client to wait for additional syndics to\n# check in with their lists of expected minions before giving up.\n#syndic_wait: 5\n\n\n#####      Peer Publish settings     #####\n##########################################\n# Salt minions can send commands to other minions, but only if the minion is\n# allowed to. By default \"Peer Publication\" is disabled, and when enabled it\n# is enabled for specific minions and specific commands. This allows secure\n# compartmentalization of commands based on individual minions.\n\n# The configuration uses regular expressions to match minions and then a list\n# of regular expressions to match functions. The following will allow the\n# minion authenticated as foo.example.com to execute functions from the test\n# and pkg modules.\n#peer:\n#  foo.example.com:\n#    - test.*\n#    - pkg.*\n#\n# This will allow all minions to execute all commands:\n#peer:\n#  .*:\n#    - .*\n#\n# This is not recommended, since it would allow anyone who gets root on any\n# single minion to instantly have root on all of the minions!\n\n# Minions can also be allowed to execute runners from the salt master.\n# Since executing a runner from the minion could be considered a security risk,\n# it needs to be enabled. This setting functions just like the peer setting\n# except that it opens up runners instead of module functions.\n#\n# All peer runner support is turned off by default and must be enabled before\n# using. This will enable all peer runners for all minions:\n#peer_run:\n#  .*:\n#    - .*\n#\n# To enable just the manage.up runner for the minion foo.example.com:\n#peer_run:\n#  foo.example.com:\n#    - manage.up\n#\n#\n#####         Mine settings     #####\n#####################################\n# Restrict mine.get access from minions. By default any minion has a full access\n# to get all mine data from master cache. In acl definion below, only pcre matches\n# are allowed.\n# mine_get:\n#   .*:\n#     - .*\n#\n# The example below enables minion foo.example.com to get 'network.interfaces' mine\n# data only, minions web* to get all network.* and disk.* mine data and all other\n# minions won't get any mine data.\n# mine_get:\n#   foo.example.com:\n#     - network.interfaces\n#   web.*:\n#     - network.*\n#     - disk.*\n\n\n#####         Logging settings       #####\n##########################################\n# The location of the master log file\n# The master log can be sent to a regular file, local path name, or network\n# location. Remote logging works best when configured to use rsyslogd(8) (e.g.:\n# ``file:///dev/log``), with rsyslogd(8) configured for network logging. The URI\n# format is: <file|udp|tcp>://<host|socketpath>:<port-if-required>/<log-facility>\n#log_file: /var/log/salt/master\n#log_file: file:///dev/log\n#log_file: udp://loghost:10514\n\n#log_file: /var/log/salt/master\n#key_logfile: /var/log/salt/key\n\n# The level of messages to send to the console.\n# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.\n#\n# The following log levels are considered INSECURE and may log sensitive data:\n# ['garbage', 'trace', 'debug']\n#\n#log_level: warning\n\n# The level of messages to send to the log file.\n# One of 'garbage', 'trace', 'debug', 'info', 'warning', 'error', 'critical'.\n# If using 'log_granular_levels' this must be set to the highest desired level.\n#log_level_logfile: warning\n\n# The date and time format used in log messages. Allowed date/time formatting\n# can be seen here: http://docs.python.org/library/time.html#time.strftime\n#log_datefmt: '%H:%M:%S'\n#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'\n\n# The format of the console logging messages. Allowed formatting options can\n# be seen here: http://docs.python.org/library/logging.html#logrecord-attributes\n#\n# Console log colors are specified by these additional formatters:\n#\n# %(colorlevel)s\n# %(colorname)s\n# %(colorprocess)s\n# %(colormsg)s\n#\n# Since it is desirable to include the surrounding brackets, '[' and ']', in\n# the coloring of the messages, these color formatters also include padding as\n# well.  Color LogRecord attributes are only available for console logging.\n#\n#log_fmt_console: '%(colorlevel)s %(colormsg)s'\n#log_fmt_console: '[%(levelname)-8s] %(message)s'\n#\n#log_fmt_logfile: '%(asctime)s,%(msecs)03d [%(name)-17s][%(levelname)-8s] %(message)s'\n\n# This can be used to control logging levels more specificically.  This\n# example sets the main salt library at the 'warning' level, but sets\n# 'salt.modules' to log at the 'debug' level:\n#   log_granular_levels:\n#     'salt': 'warning'\n#     'salt.modules': 'debug'\n#\n#log_granular_levels: {}\n\n\n#####         Node Groups           ######\n##########################################\n# Node groups allow for logical groupings of minion nodes. A group consists of\n# a group name and a compound target. Nodgroups can reference other nodegroups\n# with 'N@' classifier. Ensure that you do not have circular references.\n#\n#nodegroups:\n#  group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'\n#  group2: 'G@os:Debian and foo.domain.com'\n#  group3: 'G@os:Debian and N@group1'\n#  group4:\n#    - 'G@foo:bar'\n#    - 'or'\n#    - 'G@foo:baz'\n\n\n#####     Range Cluster settings     #####\n##########################################\n# The range server (and optional port) that serves your cluster information\n# https://github.com/ytoolshed/range/wiki/%22yamlfile%22-module-file-spec\n#\n#range_server: range:80\n\n\n#####  Windows Software Repo settings #####\n###########################################\n# Location of the repo on the master:\n#winrepo_dir_ng: '/srv/salt/win/repo-ng'\n#\n# List of git repositories to include with the local repo:\n#winrepo_remotes_ng:\n#  - 'https://github.com/saltstack/salt-winrepo-ng.git'\n\n\n#####  Windows Software Repo settings - Pre 2015.8 #####\n########################################################\n# Legacy repo settings for pre-2015.8 Windows minions.\n#\n# Location of the repo on the master:\n#winrepo_dir: '/srv/salt/win/repo'\n#\n# Location of the master's repo cache file:\n#winrepo_mastercachefile: '/srv/salt/win/repo/winrepo.p'\n#\n# List of git repositories to include with the local repo:\n#winrepo_remotes:\n#  - 'https://github.com/saltstack/salt-winrepo.git'\n\n# The refspecs fetched by winrepo remotes\n#winrepo_refspecs:\n#  - '+refs/heads/*:refs/remotes/origin/*'\n#  - '+refs/tags/*:refs/tags/*'\n#\n\n#####      Returner settings          ######\n############################################\n# Which returner(s) will be used for minion's result:\n#return: mysql\n\n\n######    Miscellaneous  settings     ######\n############################################\n# Default match type for filtering events tags: startswith, endswith, find, regex, fnmatch\n#event_match_type: startswith\n\n# Save runner returns to the job cache\n#runner_returns: True\n\n# Permanently include any available Python 3rd party modules into thin and minimal Salt\n# when they are generated for Salt-SSH or other purposes.\n# The modules should be named by the names they are actually imported inside the Python.\n# The value of the parameters can be either one module or a comma separated list of them.\n#thin_extra_mods: foo,bar\n#min_extra_mods: foo,bar,baz\n\n\n######      Keepalive settings        ######\n############################################\n# Warning: Failure to set TCP keepalives on the salt-master can result in\n# not detecting the loss of a minion when the connection is lost or when\n# it's host has been terminated without first closing the socket.\n# Salt's Presence System depends on this connection status to know if a minion\n# is \"present\".\n# ZeroMQ now includes support for configuring SO_KEEPALIVE if supported by\n# the OS. If connections between the minion and the master pass through\n# a state tracking device such as a firewall or VPN gateway, there is\n# the risk that it could tear down the connection the master and minion\n# without informing either party that their connection has been taken away.\n# Enabling TCP Keepalives prevents this from happening.\n\n# Overall state of TCP Keepalives, enable (1 or True), disable (0 or False)\n# or leave to the OS defaults (-1), on Linux, typically disabled. Default True, enabled.\ntcp_keepalive: True\n\n# How long before the first keepalive should be sent in seconds. Default 300\n# to send the first keepalive after 5 minutes, OS default (-1) is typically 7200 seconds\n# on Linux see /proc/sys/net/ipv4/tcp_keepalive_time.\n#tcp_keepalive_idle: 300\n\n# How many lost probes are needed to consider the connection lost. Default -1\n# to use OS defaults, typically 9 on Linux, see /proc/sys/net/ipv4/tcp_keepalive_probes.\n#tcp_keepalive_cnt: -1\n\n# How often, in seconds, to send keepalives after the first one. Default -1 to\n# use OS defaults, typically 75 seconds on Linux, see\n# /proc/sys/net/ipv4/tcp_keepalive_intvl.\n#tcp_keepalive_intvl: -1\n\n\n#####         NetAPI settings          #####\n############################################\n# Allow the raw_shell parameter to be used when calling Salt SSH client via API\n#netapi_allow_raw_shell: True\n"
  },
  {
    "path": "install/conf/salt/master.d/api.conf",
    "content": "rest_cherrypy:\n  port: 8005\n  disable_ssl: true\n  #ssl_crt: /etc/pki/tls/certs/saltstack.pem\n  #ssl_key: /etc/pki/tls/certs/saltstack.key\n  log_access_file: /opt/opsany/logs/proxy/salt-api-access.log\n  log_error_file: /opt/opsany/logs/proxy/salt-api-error.log\n  socket_timeout: 300      \n  max_request_body_size: 1048576  \n  thread_pool: 200\n"
  },
  {
    "path": "install/conf/salt/master.d/user.conf",
    "content": "external_auth:\n  pam:\n    saltapi:\n      - .*\n      - '@wheel'\n      - '@runner'  \n"
  },
  {
    "path": "install/conf/salt/minion",
    "content": "##### Primary configuration settings #####\n##########################################\n# This configuration file is used to manage the behavior of the Salt Minion.\n# With the exception of the location of the Salt Master Server, values that are\n# commented out but have an empty line after the comment are defaults that need\n# not be set in the config. If there is no blank line after the comment, the\n# value is presented as an example and is not the default.\n\n# Per default the minion will automatically include all config files\n# from minion.d/*.conf (minion.d is a directory in the same directory\n# as the main minion config file).\n#default_include: minion.d/*.conf\n\n# Set the location of the salt master server. If the master server cannot be\n# resolved, then the minion will fail to start.\nmaster: 127.0.0.1\n\n# Set http proxy information for the minion when doing requests\n#proxy_host:\n#proxy_port:\n#proxy_username:\n#proxy_password:\n\n# List of hosts to bypass HTTP proxy. This key does nothing unless proxy_host etc is\n# configured, it does not support any kind of wildcards.\n#no_proxy: []\n\n# If multiple masters are specified in the 'master' setting, the default behavior\n# is to always try to connect to them in the order they are listed. If random_master\n# is set to True, the order will be randomized upon Minion startup instead. This can\n# be helpful in distributing the load of many minions executing salt-call requests,\n# for example, from a cron job. If only one master is listed, this setting is ignored\n# and a warning will be logged.\n#random_master: False\n\n# NOTE: Deprecated in Salt 2019.2.0. Use 'random_master' instead.\n#master_shuffle: False\n\n# Minions can connect to multiple masters simultaneously (all masters\n# are \"hot\"), or can be configured to failover if a master becomes\n# unavailable.  Multiple hot masters are configured by setting this\n# value to \"str\".  Failover masters can be requested by setting\n# to \"failover\".  MAKE SURE TO SET master_alive_interval if you are\n# using failover.\n# Setting master_type to 'disable' let's you have a running minion (with engines and\n# beacons) without a master connection\n# master_type: str\n\n# Poll interval in seconds for checking if the master is still there.  Only\n# respected if master_type above is \"failover\". To disable the interval entirely,\n# set the value to -1. (This may be necessary on machines which have high numbers\n# of TCP connections, such as load balancers.)\n# master_alive_interval: 30\n\n# If the minion is in multi-master mode and the master_type configuration option\n# is set to \"failover\", this setting can be set to \"True\" to force the minion\n# to fail back to the first master in the list if the first master is back online.\n#master_failback: False\n\n# If the minion is in multi-master mode, the \"master_type\" configuration is set to\n# \"failover\", and the \"master_failback\" option is enabled, the master failback\n# interval can be set to ping the top master with this interval, in seconds.\n#master_failback_interval: 0\n\n# Set whether the minion should connect to the master via IPv6:\n#ipv6: False\n\n# Set the number of seconds to wait before attempting to resolve\n# the master hostname if name resolution fails. Defaults to 30 seconds.\n# Set to zero if the minion should shutdown and not retry.\n# retry_dns: 30\n\n# Set the number of times to attempt to resolve\n# the master hostname if name resolution fails. Defaults to None,\n# which will attempt the resolution indefinitely.\n# retry_dns_count: 3\n\n# Set the port used by the master reply and authentication server.\n#master_port: 4506\n\n# The user to run salt.\n#user: root\n\n# The user to run salt remote execution commands as via sudo. If this option is\n# enabled then sudo will be used to change the active user executing the remote\n# command. If enabled the user will need to be allowed access via the sudoers\n# file for the user that the salt minion is configured to run as. The most\n# common option would be to use the root user. If this option is set the user\n# option should also be set to a non-root user. If migrating from a root minion\n# to a non root minion the minion cache should be cleared and the minion pki\n# directory will need to be changed to the ownership of the new user.\n#sudo_user: root\n\n# Specify the location of the daemon process ID file.\n#pidfile: /var/run/salt-minion.pid\n\n# The root directory prepended to these options: pki_dir, cachedir, log_file,\n# sock_dir, pidfile.\n#root_dir: /\n\n# The path to the minion's configuration file.\n#conf_file: /etc/salt/minion\n\n# The directory to store the pki information in\n#pki_dir: /etc/salt/pki/minion\n\n# Explicitly declare the id for this minion to use, if left commented the id\n# will be the hostname as returned by the python call: socket.getfqdn()\n# Since salt uses detached ids it is possible to run multiple minions on the\n# same machine but with different ids, this can be useful for salt compute\n# clusters.\nid: master-local\n\n# Cache the minion id to a file when the minion's id is not statically defined\n# in the minion config. Defaults to \"True\". This setting prevents potential\n# problems when automatic minion id resolution changes, which can cause the\n# minion to lose connection with the master. To turn off minion id caching,\n# set this config to ``False``.\nminion_id_caching: False\n\n# Append a domain to a hostname in the event that it does not exist.  This is\n# useful for systems where socket.getfqdn() does not actually result in a\n# FQDN (for instance, Solaris).\n#append_domain:\n\n# Custom static grains for this minion can be specified here and used in SLS\n# files just like all other grains. This example sets 4 custom grains, with\n# the 'roles' grain having two values that can be matched against.\n#grains:\n#  roles:\n#    - webserver\n#    - memcache\n#  deployment: datacenter4\n#  cabinet: 13\n#  cab_u: 14-15\n#\n# Where cache data goes.\n# This data may contain sensitive data and should be protected accordingly.\n#cachedir: /var/cache/salt/minion\n\n# Append minion_id to these directories.  Helps with\n# multiple proxies and minions running on the same machine.\n# Allowed elements in the list: pki_dir, cachedir, extension_modules\n# Normally not needed unless running several proxies and/or minions on the same machine\n# Defaults to ['cachedir'] for proxies, [] (empty list) for regular minions\n#append_minionid_config_dirs:\n\n# Verify and set permissions on configuration directories at startup.\n#verify_env: True\n\n# The minion can locally cache the return data from jobs sent to it, this\n# can be a good way to keep track of jobs the minion has executed\n# (on the minion side). By default this feature is disabled, to enable, set\n# cache_jobs to True.\n#cache_jobs: False\n\n# Set the directory used to hold unix sockets.\n#sock_dir: /var/run/salt/minion\n\n# The minion can take a while to start up when lspci and/or dmidecode is used\n# to populate the grains for the minion. Set this to False if you do not need\n# GPU hardware grains for your minion.\n# enable_gpu_grains: True\n\n# Set the default outputter used by the salt-call command. The default is\n# \"nested\".\n#output: nested\n\n# To set a list of additional directories to search for salt outputters, set the\n# outputter_dirs option.\n#outputter_dirs: []\n\n# By default output is colored. To disable colored output, set the color value\n# to False.\n#color: True\n\n# Do not strip off the colored output from nested results and state outputs\n# (true by default).\n# strip_colors: False\n\n# Backup files that are replaced by file.managed and file.recurse under\n# 'cachedir'/file_backup relative to their original location and appended\n# with a timestamp. The only valid setting is \"minion\". Disabled by default.\n#\n# Alternatively this can be specified for each file in state files:\n# /etc/ssh/sshd_config:\n#   file.managed:\n#     - source: salt://ssh/sshd_config\n#     - backup: minion\n#\n#backup_mode: minion\n\n# When waiting for a master to accept the minion's public key, salt will\n# continuously attempt to reconnect until successful. This is the time, in\n# seconds, between those reconnection attempts.\n#acceptance_wait_time: 10\n\n# If this is nonzero, the time between reconnection attempts will increase by\n# acceptance_wait_time seconds per iteration, up to this maximum. If this is\n# set to zero, the time between reconnection attempts will stay constant.\n#acceptance_wait_time_max: 0\n\n# If the master rejects the minion's public key, retry instead of exiting.\n# Rejected keys will be handled the same as waiting on acceptance.\n#rejected_retry: False\n\n# When the master key changes, the minion will try to re-auth itself to receive\n# the new master key. In larger environments this can cause a SYN flood on the\n# master because all minions try to re-auth immediately. To prevent this and\n# have a minion wait for a random amount of time, use this optional parameter.\n# The wait-time will be a random number of seconds between 0 and the defined value.\n#random_reauth_delay: 60\n\n\n# To avoid overloading a master when many minions startup at once, a randomized\n# delay may be set to tell the minions to wait before connecting to the master.\n# This value is the number of seconds to choose from for a random number. For\n# example, setting this value to 60 will choose a random number of seconds to delay\n# on startup between zero seconds and sixty seconds. Setting to '0' will disable\n# this feature.\n#random_startup_delay: 0\n\n# When waiting for a master to accept the minion's public key, salt will\n# continuously attempt to reconnect until successful. This is the timeout value,\n# in seconds, for each individual attempt. After this timeout expires, the minion\n# will wait for acceptance_wait_time seconds before trying again. Unless your master\n# is under unusually heavy load, this should be left at the default.\n#auth_timeout: 60\n\n# Number of consecutive SaltReqTimeoutError that are acceptable when trying to\n# authenticate.\n#auth_tries: 7\n\n# The number of attempts to connect to a master before giving up.\n# Set this to -1 for unlimited attempts. This allows for a master to have\n# downtime and the minion to reconnect to it later when it comes back up.\n# In 'failover' mode, it is the number of attempts for each set of masters.\n# In this mode, it will cycle through the list of masters for each attempt.\n#\n# This is different than auth_tries because auth_tries attempts to\n# retry auth attempts with a single master. auth_tries is under the\n# assumption that you can connect to the master but not gain\n# authorization from it. master_tries will still cycle through all\n# the masters in a given try, so it is appropriate if you expect\n# occasional downtime from the master(s).\n#master_tries: 1\n\n# If authentication fails due to SaltReqTimeoutError during a ping_interval,\n# cause sub minion process to restart.\n#auth_safemode: False\n\n# Ping Master to ensure connection is alive (minutes).\n#ping_interval: 0\n\n# To auto recover minions if master changes IP address (DDNS)\n#    auth_tries: 10\n#    auth_safemode: False\n#    ping_interval: 2\n#\n# Minions won't know master is missing until a ping fails. After the ping fail,\n# the minion will attempt authentication and likely fails out and cause a restart.\n# When the minion restarts it will resolve the masters IP and attempt to reconnect.\n\n# If you don't have any problems with syn-floods, don't bother with the\n# three recon_* settings described below, just leave the defaults!\n#\n# The ZeroMQ pull-socket that binds to the masters publishing interface tries\n# to reconnect immediately, if the socket is disconnected (for example if\n# the master processes are restarted). In large setups this will have all\n# minions reconnect immediately which might flood the master (the ZeroMQ-default\n# is usually a 100ms delay). To prevent this, these three recon_* settings\n# can be used.\n# recon_default: the interval in milliseconds that the socket should wait before\n#                trying to reconnect to the master (1000ms = 1 second)\n#\n# recon_max: the maximum time a socket should wait. each interval the time to wait\n#            is calculated by doubling the previous time. if recon_max is reached,\n#            it starts again at recon_default. Short example:\n#\n#            reconnect 1: the socket will wait 'recon_default' milliseconds\n#            reconnect 2: 'recon_default' * 2\n#            reconnect 3: ('recon_default' * 2) * 2\n#            reconnect 4: value from previous interval * 2\n#            reconnect 5: value from previous interval * 2\n#            reconnect x: if value >= recon_max, it starts again with recon_default\n#\n# recon_randomize: generate a random wait time on minion start. The wait time will\n#                  be a random value between recon_default and recon_default +\n#                  recon_max. Having all minions reconnect with the same recon_default\n#                  and recon_max value kind of defeats the purpose of being able to\n#                  change these settings. If all minions have the same values and your\n#                  setup is quite large (several thousand minions), they will still\n#                  flood the master. The desired behavior is to have timeframe within\n#                  all minions try to reconnect.\n#\n# Example on how to use these settings. The goal: have all minions reconnect within a\n# 60 second timeframe on a disconnect.\n# recon_default: 1000\n# recon_max: 59000\n# recon_randomize: True\n#\n# Each minion will have a randomized reconnect value between 'recon_default'\n# and 'recon_default + recon_max', which in this example means between 1000ms\n# 60000ms (or between 1 and 60 seconds). The generated random-value will be\n# doubled after each attempt to reconnect. Lets say the generated random\n# value is 11 seconds (or 11000ms).\n# reconnect 1: wait 11 seconds\n# reconnect 2: wait 22 seconds\n# reconnect 3: wait 33 seconds\n# reconnect 4: wait 44 seconds\n# reconnect 5: wait 55 seconds\n# reconnect 6: wait time is bigger than 60 seconds (recon_default + recon_max)\n# reconnect 7: wait 11 seconds\n# reconnect 8: wait 22 seconds\n# reconnect 9: wait 33 seconds\n# reconnect x: etc.\n#\n# In a setup with ~6000 thousand hosts these settings would average the reconnects\n# to about 100 per second and all hosts would be reconnected within 60 seconds.\n# recon_default: 100\n# recon_max: 5000\n# recon_randomize: False\n#\n#\n# The loop_interval sets how long in seconds the minion will wait between\n# evaluating the scheduler and running cleanup tasks.  This defaults to 1\n# second on the minion scheduler.\n#loop_interval: 1\n\n# Some installations choose to start all job returns in a cache or a returner\n# and forgo sending the results back to a master. In this workflow, jobs\n# are most often executed with --async from the Salt CLI and then results\n# are evaluated by examining job caches on the minions or any configured returners.\n# WARNING: Setting this to False will **disable** returns back to the master.\n#pub_ret: True\n\n\n# The grains can be merged, instead of overridden, using this option.\n# This allows custom grains to defined different subvalues of a dictionary\n# grain. By default this feature is disabled, to enable set grains_deep_merge\n# to ``True``.\n#grains_deep_merge: False\n\n# The grains_refresh_every setting allows for a minion to periodically check\n# its grains to see if they have changed and, if so, to inform the master\n# of the new grains. This operation is moderately expensive, therefore\n# care should be taken not to set this value too low.\n#\n# Note: This value is expressed in __minutes__!\n#\n# A value of 10 minutes is a reasonable default.\n#\n# If the value is set to zero, this check is disabled.\n#grains_refresh_every: 1\n\n# Cache grains on the minion. Default is False.\n#grains_cache: False\n\n# Cache rendered pillar data on the minion. Default is False.\n# This may cause 'cachedir'/pillar to contain sensitive data that should be\n# protected accordingly.\n#minion_pillar_cache: False\n\n# Grains cache expiration, in seconds. If the cache file is older than this\n# number of seconds then the grains cache will be dumped and fully re-populated\n# with fresh data. Defaults to 5 minutes. Will have no effect if 'grains_cache'\n# is not enabled.\n# grains_cache_expiration: 300\n\n# Determines whether or not the salt minion should run scheduled mine updates.\n# Defaults to \"True\". Set to \"False\" to disable the scheduled mine updates\n# (this essentially just does not add the mine update function to the minion's\n# scheduler).\n#mine_enabled: True\n\n# Determines whether or not scheduled mine updates should be accompanied by a job\n# return for the job cache. Defaults to \"False\". Set to \"True\" to include job\n# returns in the job cache for mine updates.\n#mine_return_job: False\n\n# Example functions that can be run via the mine facility\n# NO mine functions are established by default.\n# Note these can be defined in the minion's pillar as well.\n#mine_functions:\n#  test.ping: []\n#  network.ip_addrs:\n#    interface: eth0\n#    cidr: '10.0.0.0/8'\n\n# The number of minutes between mine updates.\n#mine_interval: 60\n\n# Windows platforms lack posix IPC and must rely on slower TCP based inter-\n# process communications. Set ipc_mode to 'tcp' on such systems\n#ipc_mode: ipc\n\n# Overwrite the default tcp ports used by the minion when ipc_mode is set to 'tcp'\n#tcp_pub_port: 4510\n#tcp_pull_port: 4511\n\n# Passing very large events can cause the minion to consume large amounts of\n# memory. This value tunes the maximum size of a message allowed onto the\n# minion event bus. The value is expressed in bytes.\n#max_event_size: 1048576\n\n# When a minion starts up it sends a notification on the event bus with a tag\n# that looks like this: `salt/minion/<minion_id>/start`. For historical reasons\n# the minion also sends a similar event with an event tag like this:\n# `minion_start`. This duplication can cause a lot of clutter on the event bus\n# when there are many minions. Set `enable_legacy_startup_events: False` in the\n# minion config to ensure only the `salt/minion/<minion_id>/start` events are\n# sent. Beginning with the `Sodium` Salt release this option will default to\n# `False`\n#enable_legacy_startup_events: True\n\n# To detect failed master(s) and fire events on connect/disconnect, set\n# master_alive_interval to the number of seconds to poll the masters for\n# connection events.\n#\n#master_alive_interval: 30\n\n# The minion can include configuration from other files. To enable this,\n# pass a list of paths to this option. The paths can be either relative or\n# absolute; if relative, they are considered to be relative to the directory\n# the main minion configuration file lives in (this file). Paths can make use\n# of shell-style globbing. If no files are matched by a path passed to this\n# option then the minion will log a warning message.\n#\n# Include a config file from some other path:\n# include: /etc/salt/extra_config\n#\n# Include config from several files and directories:\n#include:\n#  - /etc/salt/extra_config\n#  - /etc/roles/webserver\n\n# The syndic minion can verify that it is talking to the correct master via the\n# key fingerprint of the higher-level master with the \"syndic_finger\" config.\n#syndic_finger: ''\n#\n#\n#\n#####   Minion module management     #####\n##########################################\n# Disable specific modules. This allows the admin to limit the level of\n# access the master has to the minion.  The default here is the empty list,\n# below is an example of how this needs to be formatted in the config file\n#disable_modules:\n#  - cmdmod\n#  - test\n#disable_returners: []\n\n# This is the reverse of disable_modules.  The default, like disable_modules, is the empty list,\n# but if this option is set to *anything* then *only* those modules will load.\n# Note that this is a very large hammer and it can be quite difficult to keep the minion working\n# the way you think it should since Salt uses many modules internally itself.  At a bare minimum\n# you need the following enabled or else the minion won't start.\n#whitelist_modules:\n#  - cmdmod\n#  - test\n#  - config\n\n# Modules can be loaded from arbitrary paths. This enables the easy deployment\n# of third party modules. Modules for returners and minions can be loaded.\n# Specify a list of extra directories to search for minion modules and\n# returners. These paths must be fully qualified!\n#module_dirs: []\n#returner_dirs: []\n#states_dirs: []\n#render_dirs: []\n#utils_dirs: []\n#\n# A module provider can be statically overwritten or extended for the minion\n# via the providers option, in this case the default module will be\n# overwritten by the specified module. In this example the pkg module will\n# be provided by the yumpkg5 module instead of the system default.\n#providers:\n#  pkg: yumpkg5\n#\n# Enable Cython modules searching and loading. (Default: False)\n#cython_enable: False\n#\n# Specify a max size (in bytes) for modules on import. This feature is currently\n# only supported on *nix operating systems and requires psutil.\n# modules_max_memory: -1\n\n\n#####    State Management Settings    #####\n###########################################\n# The default renderer to use in SLS files. This is configured as a\n# pipe-delimited expression. For example, jinja|yaml will first run jinja\n# templating on the SLS file, and then load the result as YAML. This syntax is\n# documented in further depth at the following URL:\n#\n# https://docs.saltstack.com/en/latest/ref/renderers/#composing-renderers\n#\n# NOTE: The \"shebang\" prefix (e.g. \"#!jinja|yaml\") described in the\n# documentation linked above is for use in an SLS file to override the default\n# renderer, it should not be used when configuring the renderer here.\n#\n#renderer: jinja|yaml\n#\n# The failhard option tells the minions to stop immediately after the first\n# failure detected in the state execution. Defaults to False.\n#failhard: False\n#\n# Reload the modules prior to a highstate run.\n#autoload_dynamic_modules: True\n#\n# clean_dynamic_modules keeps the dynamic modules on the minion in sync with\n# the dynamic modules on the master, this means that if a dynamic module is\n# not on the master it will be deleted from the minion. By default, this is\n# enabled and can be disabled by changing this value to False.\n#clean_dynamic_modules: True\n#\n# Normally, the minion is not isolated to any single environment on the master\n# when running states, but the environment can be isolated on the minion side\n# by statically setting it. Remember that the recommended way to manage\n# environments is to isolate via the top file.\n#environment: None\n#\n# Isolates the pillar environment on the minion side. This functions the same\n# as the environment setting, but for pillar instead of states.\n#pillarenv: None\n#\n# Set this option to True to force the pillarenv to be the same as the\n# effective saltenv when running states. Note that if pillarenv is specified,\n# this option will be ignored.\n#pillarenv_from_saltenv: False\n#\n# Set this option to 'True' to force a 'KeyError' to be raised whenever an\n# attempt to retrieve a named value from pillar fails. When this option is set\n# to 'False', the failed attempt returns an empty string. Default is 'False'.\n#pillar_raise_on_missing: False\n#\n# If using the local file directory, then the state top file name needs to be\n# defined, by default this is top.sls.\n#state_top: top.sls\n#\n# Run states when the minion daemon starts. To enable, set startup_states to:\n# 'highstate' -- Execute state.highstate\n# 'sls' -- Read in the sls_list option and execute the named sls files\n# 'top' -- Read top_file option and execute based on that file on the Master\n#startup_states: ''\n#\n# List of states to run when the minion starts up if startup_states is 'sls':\n#sls_list:\n#  - edit.vim\n#  - hyper\n#\n# Top file to execute if startup_states is 'top':\n#top_file: ''\n\n# Automatically aggregate all states that have support for mod_aggregate by\n# setting to True. Or pass a list of state module names to automatically\n# aggregate just those types.\n#\n# state_aggregate:\n#   - pkg\n#\n#state_aggregate: False\n\n#####     File Directory Settings    #####\n##########################################\n# The Salt Minion can redirect all file server operations to a local directory,\n# this allows for the same state tree that is on the master to be used if\n# copied completely onto the minion. This is a literal copy of the settings on\n# the master but used to reference a local directory on the minion.\n\n# Set the file client. The client defaults to looking on the master server for\n# files, but can be directed to look at the local file directory setting\n# defined below by setting it to \"local\". Setting a local file_client runs the\n# minion in masterless mode.\n#file_client: remote\n\n# The file directory works on environments passed to the minion, each environment\n# can have multiple root directories, the subdirectories in the multiple file\n# roots cannot match, otherwise the downloaded files will not be able to be\n# reliably ensured. A base environment is required to house the top file.\n# Example:\n# file_roots:\n#   base:\n#     - /srv/salt/\n#   dev:\n#     - /srv/salt/dev/services\n#     - /srv/salt/dev/states\n#   prod:\n#     - /srv/salt/prod/services\n#     - /srv/salt/prod/states\n#\n#file_roots:\n#  base:\n#    - /srv/salt\n\n# Uncomment the line below if you do not want the file_server to follow\n# symlinks when walking the filesystem tree. This is set to True\n# by default. Currently this only applies to the default roots\n# fileserver_backend.\n#fileserver_followsymlinks: False\n#\n# Uncomment the line below if you do not want symlinks to be\n# treated as the files they are pointing to. By default this is set to\n# False. By uncommenting the line below, any detected symlink while listing\n# files on the Master will not be returned to the Minion.\n#fileserver_ignoresymlinks: True\n#\n# By default, the Salt fileserver recurses fully into all defined environments\n# to attempt to find files. To limit this behavior so that the fileserver only\n# traverses directories with SLS files and special Salt directories like _modules,\n# enable the option below. This might be useful for installations where a file root\n# has a very large number of files and performance is negatively impacted. Default\n# is False.\n#fileserver_limit_traversal: False\n\n# The hash_type is the hash to use when discovering the hash of a file on\n# the local fileserver. The default is sha256, but md5, sha1, sha224, sha384\n# and sha512 are also supported.\n#\n# WARNING: While md5 and sha1 are also supported, do not use them due to the\n# high chance of possible collisions and thus security breach.\n#\n# Warning: Prior to changing this value, the minion should be stopped and all\n# Salt caches should be cleared.\n#hash_type: sha256\n\n# The Salt pillar is searched for locally if file_client is set to local. If\n# this is the case, and pillar data is defined, then the pillar_roots need to\n# also be configured on the minion:\n#pillar_roots:\n#  base:\n#    - /srv/pillar\n\n# Set a hard-limit on the size of the files that can be pushed to the master.\n# It will be interpreted as megabytes. Default: 100\n#file_recv_max_size: 100\n#\n#\n######        Security settings       #####\n###########################################\n# Enable \"open mode\", this mode still maintains encryption, but turns off\n# authentication, this is only intended for highly secure environments or for\n# the situation where your keys end up in a bad state. If you run in open mode\n# you do so at your own risk!\n#open_mode: False\n\n# The size of key that should be generated when creating new keys.\n#keysize: 2048\n\n# Enable permissive access to the salt keys.  This allows you to run the\n# master or minion as root, but have a non-root group be given access to\n# your pki_dir.  To make the access explicit, root must belong to the group\n# you've given access to. This is potentially quite insecure.\n#permissive_pki_access: False\n\n# The state_verbose and state_output settings can be used to change the way\n# state system data is printed to the display. By default all data is printed.\n# The state_verbose setting can be set to True or False, when set to False\n# all data that has a result of True and no changes will be suppressed.\n#state_verbose: True\n\n# The state_output setting controls which results will be output full multi line\n# full, terse - each state will be full/terse\n# mixed - only states with errors will be full\n# changes - states with changes and errors will be full\n# full_id, mixed_id, changes_id and terse_id are also allowed;\n# when set, the state ID will be used as name in the output\n#state_output: full\n\n# The state_output_diff setting changes whether or not the output from\n# successful states is returned. Useful when even the terse output of these\n# states is cluttering the logs. Set it to True to ignore them.\n#state_output_diff: False\n\n# The state_output_profile setting changes whether profile information\n# will be shown for each state run.\n#state_output_profile: True\n\n# Fingerprint of the master public key to validate the identity of your Salt master\n# before the initial key exchange. The master fingerprint can be found by running\n# \"salt-key -f master.pub\" on the Salt master.\n#master_finger: ''\n\n# Use TLS/SSL encrypted connection between master and minion.\n# Can be set to a dictionary containing keyword arguments corresponding to Python's\n# 'ssl.wrap_socket' method.\n# Default is None.\n#ssl:\n#    keyfile: <path_to_keyfile>\n#    certfile: <path_to_certfile>\n#    ssl_version: PROTOCOL_TLSv1_2\n\n# Grains to be sent to the master on authentication to check if the minion's key\n# will be accepted automatically. Needs to be configured on the master.\n#autosign_grains:\n#  - uuid\n#  - server_id\n\n\n######        Reactor Settings        #####\n###########################################\n# Define a salt reactor. See https://docs.saltstack.com/en/latest/topics/reactor/\n#reactor: []\n\n#Set the TTL for the cache of the reactor configuration.\n#reactor_refresh_interval: 60\n\n#Configure the number of workers for the runner/wheel in the reactor.\n#reactor_worker_threads: 10\n\n#Define the queue size for workers in the reactor.\n#reactor_worker_hwm: 10000\n\n\n######         Thread settings        #####\n###########################################\n# Disable multiprocessing support, by default when a minion receives a\n# publication a new process is spawned and the command is executed therein.\n#\n# WARNING: Disabling multiprocessing may result in substantial slowdowns\n# when processing large pillars. See https://github.com/saltstack/salt/issues/38758\n# for a full explanation.\n#multiprocessing: True\n\n# Limit the maximum amount of processes or threads created by salt-minion.\n# This is useful to avoid resource exhaustion in case the minion receives more\n# publications than it is able to handle, as it limits the number of spawned\n# processes or threads. -1 is the default and disables the limit.\n#process_count_max: -1\n\n\n#####         Logging settings       #####\n##########################################\n# The location of the minion log file\n# The minion log can be sent to a regular file, local path name, or network\n# location. Remote logging works best when configured to use rsyslogd(8) (e.g.:\n# ``file:///dev/log``), with rsyslogd(8) configured for network logging. The URI\n# format is: <file|udp|tcp>://<host|socketpath>:<port-if-required>/<log-facility>\n#log_file: /var/log/salt/minion\n#log_file: file:///dev/log\n#log_file: udp://loghost:10514\n#\n#log_file: /var/log/salt/minion\n#key_logfile: /var/log/salt/key\n\n# The level of messages to send to the console.\n# One of 'garbage', 'trace', 'debug', 'info', 'warning', 'error', 'critical'.\n#\n# The following log levels are considered INSECURE and may log sensitive data:\n# ['garbage', 'trace', 'debug']\n#\n# Default: 'warning'\n#log_level: warning\n\n# The level of messages to send to the log file.\n# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.\n# If using 'log_granular_levels' this must be set to the highest desired level.\n# Default: 'warning'\n#log_level_logfile:\n\n# The date and time format used in log messages. Allowed date/time formatting\n# can be seen here: http://docs.python.org/library/time.html#time.strftime\n#log_datefmt: '%H:%M:%S'\n#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'\n\n# The format of the console logging messages. Allowed formatting options can\n# be seen here: http://docs.python.org/library/logging.html#logrecord-attributes\n#\n# Console log colors are specified by these additional formatters:\n#\n# %(colorlevel)s\n# %(colorname)s\n# %(colorprocess)s\n# %(colormsg)s\n#\n# Since it is desirable to include the surrounding brackets, '[' and ']', in\n# the coloring of the messages, these color formatters also include padding as\n# well.  Color LogRecord attributes are only available for console logging.\n#\n#log_fmt_console: '%(colorlevel)s %(colormsg)s'\n#log_fmt_console: '[%(levelname)-8s] %(message)s'\n#\n#log_fmt_logfile: '%(asctime)s,%(msecs)03d [%(name)-17s][%(levelname)-8s] %(message)s'\n\n# This can be used to control logging levels more specificically.  This\n# example sets the main salt library at the 'warning' level, but sets\n# 'salt.modules' to log at the 'debug' level:\n#   log_granular_levels:\n#     'salt': 'warning'\n#     'salt.modules': 'debug'\n#\n#log_granular_levels: {}\n\n# To diagnose issues with minions disconnecting or missing returns, ZeroMQ\n# supports the use of monitor sockets to log connection events. This\n# feature requires ZeroMQ 4.0 or higher.\n#\n# To enable ZeroMQ monitor sockets, set 'zmq_monitor' to 'True' and log at a\n# debug level or higher.\n#\n# A sample log event is as follows:\n#\n# [DEBUG   ] ZeroMQ event: {'endpoint': 'tcp://127.0.0.1:4505', 'event': 512,\n# 'value': 27, 'description': 'EVENT_DISCONNECTED'}\n#\n# All events logged will include the string 'ZeroMQ event'. A connection event\n# should be logged as the minion starts up and initially connects to the\n# master. If not, check for debug log level and that the necessary version of\n# ZeroMQ is installed.\n#\n#zmq_monitor: False\n\n# Number of times to try to authenticate with the salt master when reconnecting\n# to the master\n#tcp_authentication_retries: 5\n\n######      Module configuration      #####\n###########################################\n# Salt allows for modules to be passed arbitrary configuration data, any data\n# passed here in valid yaml format will be passed on to the salt minion modules\n# for use. It is STRONGLY recommended that a naming convention be used in which\n# the module name is followed by a . and then the value. Also, all top level\n# data must be applied via the yaml dict construct, some examples:\n#\n# You can specify that all modules should run in test mode:\n#test: True\n#\n# A simple value for the test module:\n#test.foo: foo\n#\n# A list for the test module:\n#test.bar: [baz,quo]\n#\n# A dict for the test module:\n#test.baz: {spam: sausage, cheese: bread}\n#\n#\n######      Update settings          ######\n###########################################\n# Using the features in Esky, a salt minion can both run as a frozen app and\n# be updated on the fly. These options control how the update process\n# (saltutil.update()) behaves.\n#\n# The url for finding and downloading updates. Disabled by default.\n#update_url: False\n#\n# The list of services to restart after a successful update. Empty by default.\n#update_restart_services: []\n\n\n######      Keepalive settings        ######\n############################################\n# ZeroMQ now includes support for configuring SO_KEEPALIVE if supported by\n# the OS. If connections between the minion and the master pass through\n# a state tracking device such as a firewall or VPN gateway, there is\n# the risk that it could tear down the connection the master and minion\n# without informing either party that their connection has been taken away.\n# Enabling TCP Keepalives prevents this from happening.\n\n# Overall state of TCP Keepalives, enable (1 or True), disable (0 or False)\n# or leave to the OS defaults (-1), on Linux, typically disabled. Default True, enabled.\n#tcp_keepalive: True\n\n# How long before the first keepalive should be sent in seconds. Default 300\n# to send the first keepalive after 5 minutes, OS default (-1) is typically 7200 seconds\n# on Linux see /proc/sys/net/ipv4/tcp_keepalive_time.\n#tcp_keepalive_idle: 300\n\n# How many lost probes are needed to consider the connection lost. Default -1\n# to use OS defaults, typically 9 on Linux, see /proc/sys/net/ipv4/tcp_keepalive_probes.\n#tcp_keepalive_cnt: -1\n\n# How often, in seconds, to send keepalives after the first one. Default -1 to\n# use OS defaults, typically 75 seconds on Linux, see\n# /proc/sys/net/ipv4/tcp_keepalive_intvl.\n#tcp_keepalive_intvl: -1\n\n\n######   Windows Software settings    ######\n############################################\n# Location of the repository cache file on the master:\n#win_repo_cachefile: 'salt://win/repo/winrepo.p'\n\n\n######      Returner  settings        ######\n############################################\n# Default Minion returners. Can be a comma delimited string or a list:\n#\n#return: mysql\n#\n#return: mysql,slack,redis\n#\n#return:\n#  - mysql\n#  - hipchat\n#  - slack\n\n\n######    Miscellaneous  settings     ######\n############################################\n# Default match type for filtering events tags: startswith, endswith, find, regex, fnmatch\n#event_match_type: startswith\n"
  },
  {
    "path": "install/conf/salt/pki/master/master.pem",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA3pdv8jjaEwzrchmgbaNajQ0LU/y4a0wz0cDbJANj1X5scUtU\nobKIojM04dQI2mB56fSdoAX0Zf3XcgH7o13rqE+wMlmElxYUQhHTl+dsRy582N2X\n6dPS75bbscwxCF1KLpcS/mCddSghp/RyNfeNXNVmtZDojLo9d7fUXek+aDqwQ7ni\noD6V692EBa8DSXx7wzjdsFtkjJu0AQ/lOvzP3/pXqyVIJXJZF3PV6s3JALhUXh7U\nnj4X/HAx9N3zKUh3ZDxJS7au2u/bpHBaHyeDsgYlPrVVKl3+UhcCwyUkSGoG46AL\nak+tKhY6SwkUZyV8CxRlL2kNtkVFc1Qh1LPV+wIDAQABAoIBAG7VCLCbDjqeHD3b\n9L2isNu6uwE+vLTwZHz0gikUZwlOwcBHugQpWU8qIBKx+RaDIzES08lyLZb7JeNm\niV12zngn9ZucZyCzpbKgHbNtT8TBqPhyncmX51fUzd9hxKhdiypXnuV6Reyn5toy\nJQwqDwFCYLnXRXOM6D5MEjoQgTpz0MX1BFpWdtfrvw282Ly+s4I3oEVw5gaupt4q\n5KxDSaNue6t72fYIxGrN+GKi9qeUyKxFSt8PpWob+1xJcL7D+Kkfe3T1fgwJUSg+\nPEPXT2AKsc2vi5uEgkxHVZ3s2lxQUqHBsQ5MU1CLNtusNW5xn0efcYp8QCEJ7q1i\nmEK0QIECgYEA7OIfi2BWpDffPqdXMDL7Hsc+Qz2uONkJsfidvL/BI7QTP9p4Kcgb\nDKzTkDeSwz4F7kEVK1q49D4IEsWa5xEmIQzrlebiD2BPONdiZ5UMphtWYniq4ObK\npZ9+9CITs75KEM2XQWCDFMv3yrqEmV87/Bh7g0/thjS0hLlrzYr207kCgYEA8I4N\n/YHYXsshrQmF5xiUsQNsPjaK8GVll73fZt81+lF+ysrn8fpougfyptk8tPfD6DUn\nWocn98wz/No/HdqXg/2hH68BiS/ifmM+vV10RicVCrGyI9gA0WE+W4hCI7YpYjTA\nx+eNcgupxM1O7+7Qui36h0til8hHw756pHRROVMCgYB8y0vPA3vhm8WynjoinFkL\nh+/XQMFuFXk0F0QSUfsQMigJ9bBkYpVNgicazQw2a5B4SjU619qkYaGjMhM/NBug\nQcxC9pWVgCl8Sov/AdjeEXza97MeNLgBtRsOxn0WrmMaoxTSTmQAKsxqMwT0P+W8\nE7HOJed+Unnfikeuy0zpkQKBgQDK+8OYZ+mxS40WG1QPRjGqEK5U7OdepOEOIx0R\nDEba+8uWyZLhICEg4TYDToooVm3MUpXrkOLL+VbhBTR/N4Xkza8ZMi6EmZBwf8Rg\nPCyySaY6yOj9z/YYuArLZ/YPdlYDVWpbBOvZEThnJat3ULh2cffWFGmUlF7iMKgC\nf1hOmwKBgQDo7zXXzapKmobh2TQp0af2MPSGl4bNLZZiR4pidD0o513DvfkcU6GG\nyhj2qDk3Cc8n5zVGl2tFLQOH/zUoZ5SuTecZq1Xq0IiPvsA/qDcpxj9of/E2OjPe\nic8VQ1bo5tySCEhQbGtiR66SiNupO5dbApSG5ImoHRHNtS3TAJXVQA==\n-----END RSA PRIVATE KEY-----"
  },
  {
    "path": "install/conf/salt/pki/master/master.pub",
    "content": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3pdv8jjaEwzrchmgbaNa\njQ0LU/y4a0wz0cDbJANj1X5scUtUobKIojM04dQI2mB56fSdoAX0Zf3XcgH7o13r\nqE+wMlmElxYUQhHTl+dsRy582N2X6dPS75bbscwxCF1KLpcS/mCddSghp/RyNfeN\nXNVmtZDojLo9d7fUXek+aDqwQ7nioD6V692EBa8DSXx7wzjdsFtkjJu0AQ/lOvzP\n3/pXqyVIJXJZF3PV6s3JALhUXh7Unj4X/HAx9N3zKUh3ZDxJS7au2u/bpHBaHyeD\nsgYlPrVVKl3+UhcCwyUkSGoG46ALak+tKhY6SwkUZyV8CxRlL2kNtkVFc1Qh1LPV\n+wIDAQAB\n-----END PUBLIC KEY-----"
  },
  {
    "path": "install/conf/stackstorm/files/config.js",
    "content": "// Copyright 2021 The StackStorm Authors.\n// Copyright 2019 Extreme Networks, Inc.\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'use strict';\n\n/* global angular */\nangular.module('main')\n  .constant('st2Config', {\n\n    //show_version_in_header: true,\n\n    // hosts: [\n    //   {\n    //     name: 'Dev Env',\n    //     url: 'https://:443/api',\n    //     auth: 'https://:443/auth',\n    //     stream: 'https://:443/stream',\n    //   },\n    //   {\n    //     name: 'Express',\n    //     url: '//172.168.90.50:9101/api',\n    //     auth: '//172.168.90.50:9101/auth',\n    //   },\n    // ],\n  });\n\n"
  },
  {
    "path": "install/conf/stackstorm/files/htpasswd",
    "content": "# /etc/st2/htpasswd\n# st2admin:OpsAny@2023\nst2admin:$apr1$9msyD8bw$qtgB5UyZZHFyz/6CRpD5H1\n"
  },
  {
    "path": "install/conf/stackstorm/files/rbac/assignments/st2admin.yaml",
    "content": "# See: https://docs.stackstorm.com/rbac.html#defining-user-role-assignments\n---\nusername: st2admin\nroles:\n  - system_admin\n"
  },
  {
    "path": "install/conf/stackstorm/files/rbac/assignments/stanley.yaml",
    "content": "# See: https://docs.stackstorm.com/rbac.html#defining-user-role-assignments\n---\nusername: stanley\nroles:\n  - admin\n"
  },
  {
    "path": "install/conf/stackstorm/files/rbac/roles/sample.yaml",
    "content": "# sample RBAC role file, see https://docs.stackstorm.com/rbac.html#defining-roles-and-permission-grants\n---\nname: \"sample\"\ndescription: \"Example Role which contains no permission grants and serves for demonstration purposes\"\n"
  },
  {
    "path": "install/conf/stackstorm/files/st2-cli.conf",
    "content": "# /root/.st2/config\n[credentials]\nusername = st2admin\npassword = OpsAny@2023\n"
  },
  {
    "path": "install/conf/stackstorm/files/st2.docker.conf",
    "content": "# /etc/st2/st2.docker.conf\n#\n# This st2.docker.conf overrides st2.conf in the base image, and has been written to facilitate operation of\n# docker-compose.yml. It is recommended to not alter this file as an end-user, as this file\n# is updated as necessary by the StackStorm st2-docker maintainers.\n# Instead, make local changes in the file \"st2.user.conf\".\n# The order of merging: st2.conf < st2.docker.conf < st2.user.conf\n[auth]\napi_url = http://LOCAL_IP:8018/\n\n[messaging]\nurl = amqp://RABBITMQ_DEFAULT_USER:RABBITMQ_DEFAULT_PASS@RABBIT_SERVER_IP:5672\n\n[keyvalue]\nencryption_key_path = /etc/st2/keys/datastore_key.json\n\n[database]\nhost = MONGO_SERVER_IP\nport = MONGO_SERVER_PORT\ndb_name = event\nusername = event\npassword = MONGO_EVENT_PASSWORD\n# st2.conf for kubernetes disables retry (relying on kubernetes), but\n# for straight docker, we want to re-enable these.\n# Connection retry total time (minutes).\nconnection_retry_max_delay_m = 1\n# Backoff multiplier (seconds).\nconnection_retry_backoff_mul = 1\n# Connection and server selection timeout (in ms).\nconnection_timeout = 3000\n\n[content]\npacks_base_paths=/opt/stackstorm/packs.dev\n\n[coordination]\nurl = redis://REDIS_SERVER_USERNAME:REDIS_SERVER_PASSWORD@REDIS_SERVER_IP:REDIS_SERVER_PORT\n"
  },
  {
    "path": "install/conf/stackstorm/files/st2.user.conf",
    "content": "# /etc/st2/st2.user.conf\n#\n# This file is provided with no custom overrides and should be utilized by end-users to make any\n# desired configuration changes. No changes to this file should be checked into the st2-docker repository.\n# The order of merging: st2.conf < st2.docker.conf < st2.user.conf\n"
  },
  {
    "path": "install/conf/stackstorm/mongodb_event.js",
    "content": "//event\ndb = db.getSiblingDB('event')\n\ndb.createUser({\n  user: 'event',\n  pwd: 'MONGO_EVENT_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'event',\n    },\n  ],\n});\n"
  },
  {
    "path": "install/conf/stackstorm/opsany_core.yaml",
    "content": "access_token: opsany-esb-auth-token-9e8083137204\napi_url: https://DOMAIN_NAME\napp_code: devops\napp_secret: DEVOPS_SECRET_KEY\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/.gitignore",
    "content": ".idea"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/LICENSE",
    "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 [yyyy] [name of copyright owner]\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": "install/conf/stackstorm/packs/opsany_core/README.md",
    "content": "st2 pack opsany core "
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/control_execute_command.py",
    "content": "from lib import base_action\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass ControlRunCommand(base_action.OpsAnyCoreRestAPI):\n    def run(self, host_list, shell_command):\n        status, requests_id = self.run_shell(host_list, shell_command)\n        if not status:\n            return False, {\n                \"success\": [],\n                \"error\": {\n                    \"message\": \"Error: {}\".format(str(requests_id))\n                }\n            }\n        return self.get_return(requests_id)\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/control_execute_command.yaml",
    "content": "---\nname: control_execute_command\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: control execute command\nenabled: true\nentry_point: control_execute_command.py\nparameters:\n    host_list:\n      type: array\n      description: Executing the host list\n      required: true\n    shell_command:\n      type: string\n      description: shell command(ls && date)\n      required: true\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/control_run_command.py",
    "content": "from lib import base_action\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass ControlRunCommand(base_action.OpsAnyCoreRestAPI):\n    def run(self, host_list, shell_command):\n        print(\"shell_command\", shell_command)\n        status, requests_id = self.run_script(host_list, shell_command, \"\")\n        if not status:\n            return False, {\n                \"success\": [],\n                \"error\": {\n                    \"message\": \"Error: {}\".format(str(requests_id))\n                }\n            }\n        return self.get_return(requests_id)\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/control_run_command.yaml",
    "content": "---\nname: control_run_command\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: control run command\nenabled: true\nentry_point: control_run_command.py\nparameters:\n    host_list:\n      type: array\n      description: Executing the host list\n      required: true\n    shell_command:\n      type: string\n      description: script url(uploads/../script.sh)\n      required: true\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/control_run_script.py",
    "content": "from lib import base_action\nimport json\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass ControlRunScript(base_action.OpsAnyCoreRestAPI):\n\n\n    def run(self, host_list, script_url, script_arg=\"\", timeout=1800):\n        status, requests_id = self.run_script(host_list, script_url, script_arg, timeout)\n        if not status:\n            return False, {\n                \"success\": [],\n                \"error\": {\n                    \"message\": \"Error: {}\".format(str(requests_id))\n                }\n            }\n        return self.get_return(requests_id)\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/control_run_script.yaml",
    "content": "---\nname: control_run_script\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: control_run_script\nenabled: true\nentry_point: control_run_script.py\nparameters:\n    host_list:\n      type: array\n      description: Executing the host list\n      required: true\n    script_url:\n      type: string\n      description: script url(script url(uploads/../script.sh))\n      required: true\n    script_arg:\n      type: string\n      description: script arg\n      required: false\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/gitlab_clone_project.py",
    "content": "from lib import base_action\nimport json\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass GitlabCloneProject(base_action.OpsAnyCoreRestAPI):\n    def run(\n            self,\n            host_list,\n            project_dir,\n            project_url,\n            api_token,\n            depth=None,\n            project_branch=\"master\"):\n        project_url_split = project_url.split(\"//\")\n        if len(project_url_split) != 2:\n            return False, {\"error\": \"project_url error\"}\n        api_token_url = \"{http}//oauth2:{api_token}@{url}\".format(\n            http=project_url_split[0], api_token=api_token, url=project_url_split[-1])\n        print(\"depth\", depth)\n        try:\n            depth = int(depth)\n        except Exception as e:\n            depth = None\n        if not depth:\n            command = \"cd {project_dir} && git clone -b {project_branch} {api_token_url}\".format(\n                project_dir=project_dir, project_branch=project_branch, api_token_url=api_token_url)\n        else:\n            command = \"cd {project_dir} && git clone --depth {depth} -b {project_branch} {api_token_url}\".format(\n                project_dir=project_dir, depth=depth, project_branch=project_branch, api_token_url=api_token_url)\n        print(\"command\", command)\n        status, requests_id = self.run_shell(host_list, command)\n        if not status:\n            return False, {\n                \"success\": [],\n                \"error\": {\n                    \"message\": \"Error: {}\".format(str(requests_id))\n                }\n            }\n        return self.get_return(requests_id)\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/gitlab_clone_project.yaml",
    "content": "---\nname: gitlab_clone_project\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: clone gitlab project\nenabled: true\nentry_point: gitlab_clone_project.py\nparameters:\n  host_list:\n    type: array\n    description: Executing the host list\n    required: true\n  project_dir:\n    type: string\n    description: project directory\n    required: true\n  project_url:\n    type: string\n    description: project url\n    required: true\n  project_branch:\n    type: string\n    description: project branch\n    required: true\n  api_token:\n    type: string\n    description: api token\n    required: true\n  depth:\n    type: string\n    description: depth\n    required: false\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/lib/__init__.py",
    "content": ""
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/lib/base_action.py",
    "content": "import json\nimport time\n\nimport requests\nfrom st2common.runners.base_action import Action\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass OpsAnyCoreRestAPI(Action):\n    def __init__(self, *args, **kwargs):\n        super(OpsAnyCoreRestAPI, self).__init__(*args, **kwargs)\n        self.app_code = self.config[\"app_code\"]\n        self.app_secret = self.config[\"app_secret\"]\n        self.api_url = self.config[\"api_url\"]\n        self.access_token = self.config[\"access_token\"]\n        self.headers = {\n            \"Cookie\": \"bk_token={}\".format(None)\n        }\n\n    def _get_request_id_status(self, requests_id, retry=3):\n        status, res_list = True, []\n        for i in range(retry):\n            time.sleep(0.1)\n            status, res_list = self.get_request_id_status(requests_id)\n            if status:\n                return status, res_list\n        return status, res_list\n\n    def get_return(self, requests_id):\n        error_count, success_count = [], []\n        while True:\n            time.sleep(0.5)\n            status, res_list = self._get_request_id_status(requests_id, 3)  # 重试三次，防止域名解析失败\n            if not status:\n                return False, {\"success\": success_count, \"error\": {\"message\": str(res_list)}}\n\n            count = len(res_list)\n            finish_count = 0\n            for res in res_list:\n                if res.get(\"status\") == \"2\":\n                    finish_count += 1\n                    continue\n            if count == finish_count:\n                break\n        for res in res_list:\n            if res.get(\"success\"):\n                \"\"\"\n                # error\n                \"info\": {\n                    \"stderr\": \"error\",\n                    \"stdout\": \"\"\n                    }\n                    \n                # success\n                \"info\": {\n                    \"stderr\": \"\",\n                    \"stdout\": \"\"\n                    }\n                \n                # success\n                \"info\": {\n                    \"stderr\": \"error\",\n                    \"stdout\": \"success\"\n                    }\n                \n                success null is error\n                info null is error\n                \"\"\"\n                # if (not res.get(\"info\")) or (not res.get(\"info\", {}).get(\"stderr\")):\n                #     success_count.append(res)\n\n                # info = res.get(\"info\", {})\n                # if info:\n                    # if info.get(\"stderr\") and (info.get(\"stdout\") == \"\"):\n                    #     error_count.append(res)\n                    # else:\n                    #     success_count.append(res)\n                # else:\n                    # error_count.append(res)\n                success_count.append(res)\n            else:\n                error_count.append(res)\n        dic = {\"success\": success_count, \"error\": error_count}\n        if success_count:\n            return True, dic\n        else:\n            if not error_count:\n                return False, {\"success\": success_count, \"error\": {\"message\": \"获取日志失败，请联系管理员: {}\".format(str(res_list))}}\n            return False, dic\n\n    def run_shell(self, host_list, command):\n        API = \"/api/c/compapi/control/post_shell/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_access_token\": self.access_token,\n            \"host_list\": host_list,  # [unique1, unique2, unique3]\n            \"command\": command\n        }\n        URL = self.api_url + API\n        try:\n            response = requests.post(\n                url=URL,\n                json=req,\n                headers=self.headers,\n                verify=False)\n        except Exception as e:\n            return False, str(e)\n        end_data = response.json()\n        if end_data.get(\"data\"):\n            return True, end_data.get(\"data\")\n        return False, end_data.get(\"message\")\n\n    def run_script(self, host_list, script_url, script_arg=None, timeout=1800):\n        API = \"/api/c/compapi/control/post_script/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_access_token\": self.access_token,\n            \"host_list\": host_list,  # [unique1, unique2, unique3]\n            \"script_url\": script_url,\n            \"script_arg\": script_arg,\n            \"timeout\": timeout\n        }\n        URL = self.api_url + API\n        try:\n            response = requests.post(\n                url=URL,\n                json=req,\n                headers=self.headers,\n                verify=False)\n        except Exception as e:\n            return False, str(e)\n        end_data = response.json()\n        if end_data.get(\"data\"):\n            return True, end_data.get(\"data\")\n        return False, end_data.get(\"message\")\n\n    def send_out_message(self, temp_id, subscribe_type, parameter, operator, alert_info, result=True):\n        API = \"/api/c/compapi/workbench/post_info_to_user/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_username\": operator,\n            # \"bk_access_token\": self.access_token,\n            \"operator\": operator,\n            \"temp_id\": temp_id,\n            \"subscribe_type\": subscribe_type,\n            \"parameter\": parameter,\n            \"result\": result,\n            \"alert_info\": json.dumps(alert_info),\n        }\n        URL = self.api_url + API\n        print(\"esb接口\", req)\n        try:\n            response = requests.post(url=URL, data=req, headers=self.headers, verify=False)\n        except Exception as e:\n            return None\n        end_data = json.loads(response.text)\n        if end_data.get(\"result\"):\n            return end_data\n        return None\n\n    # 给企微、钉钉群发消息\n    def send_robot(self, temp_id, parameter, robot_list, alert_info=None, robot_type=\"qw\"):\n        API = \"/api/c/compapi/workbench/send_robot/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_username\": \"admin\",\n            \"bk_access_token\": self.access_token,\n            \"robot_type\": robot_type,  # qw dd\n            \"temp_id\": temp_id,  # 20\n            \"parameter\": parameter,  # \"('', '')\"\n            \"robot_list\": robot_list,\n            \"alert_info\": alert_info or {},\n        }\n        URL = self.api_url + API\n        try:\n            response = requests.post(url=URL, data=req, headers=self.headers, verify=False)\n            end_data = json.loads(response.text)\n            if end_data.get(\"result\"):\n                end_data = end_data.get(\"data\") or []\n                return end_data\n            return []\n        except Exception as e:\n            return []\n\n    def download_nexus_project(self, download_url):\n        API = \"/api/c/compapi/devops/nexus_project/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_access_token\": self.access_token,\n            \"download_url\": download_url\n        }\n        URL = self.api_url + API\n        try:\n            response = requests.post(\n                url=URL,\n                json=req,\n                headers=self.headers,\n                verify=False)\n        except Exception as e:\n            return False, str(e)\n        end_data = response.json()\n        if end_data.get(\"data\"):\n            return True, end_data.get(\"data\")\n        return False, end_data.get(\"message\")\n\n    def post_file(self, host_list, file_url, file_path):\n        API = \"/api/c/compapi/control/post_file/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_access_token\": self.access_token,\n            \"host_list\": host_list,  # [unique1, unique2, unique3]\n            \"file_url\": file_url,\n            \"file_path\": file_path\n        }\n        URL = self.api_url + API\n        try:\n            response = requests.post(\n                url=URL,\n                json=req,\n                headers=self.headers,\n                verify=False)\n        except Exception as e:\n            return False, str(e)\n        end_data = response.json()\n        if end_data.get(\"data\"):\n            return True, end_data.get(\"data\")\n        return False, end_data.get(\"message\")\n\n    def send_mail(self, receiver, subject, text, text_type):\n        API = \"/api/c/compapi/workbench/send_mail/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_access_token\": self.access_token,\n            \"operator\": \"admin\",\n            \"receiver\": receiver,\n            \"subject\": subject,\n            \"text\": text,\n            \"text_type\": text_type  # 1 Text  2 Html\n        }\n        URL = self.api_url + API\n        response = requests.post(\n            url=URL,\n            json=req,\n            headers=self.headers,\n            verify=False)\n\n        end_data = response.json()\n        if end_data.get(\"result\"):\n            return True, end_data.get(\"message\") or \"success\"\n        else:\n            return False, end_data.get(\"message\")\n\n    def get_request_id_status(self, request_id):\n        API = \"/api/c/compapi/control/get_request_id_status/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_access_token\": self.access_token,\n            \"request_id\": request_id\n        }\n        URL = self.api_url + API\n        try:\n            response = requests.get(\n                url=URL,\n                params=req,\n                headers=self.headers,\n                verify=False,\n                timeout=30,\n            )\n            end_data = response.json()\n            if end_data.get(\"data\"):\n                return True, end_data.get(\"data\")\n            else:\n                return False, \"获取日志失败({})，请联系管理员，或重新执行.\".format(request_id)\n        except Exception as e:\n            return False, \"获取日志失败({})，请联系管理员，或重新执行: {}\".format(request_id, str(e))"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/nexus_project.py",
    "content": "from lib import base_action\nimport json\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass NexusProject(base_action.OpsAnyCoreRestAPI):\n    def run(self, host_list, project_dir, download_url, timeout=600):\n        status, get_url = self.download_nexus_project(download_url)\n        print(\"get_url\", get_url)\n        if not status:\n            return False, {\n                \"success\": {}, \"error\": {\n                    \"message\": \"download nexus project error({})\".format(get_url)}}\n\n        status, requests_id = self.post_file(\n            host_list, file_url=get_url, file_path=project_dir)\n        if not status:\n            return False, {\n                \"success\": [],\n                \"error\": {\n                    \"message\": \"Error: {}\".format(str(requests_id))\n                }\n            }\n        return self.get_return(requests_id)\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/nexus_project.yaml",
    "content": "---\nname: nexus_project\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: download nexus project\nenabled: true\nentry_point: nexus_project.py\nparameters:\n  host_list:\n    type: array\n    description: Executing the host list\n    required: true\n  project_dir:\n    type: string\n    description: project directory\n    required: true\n  download_url:\n    type: string\n    description: download url\n    required: true\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/send_mail.py",
    "content": "from lib import base_action\nimport json\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass SendMail(base_action.OpsAnyCoreRestAPI):\n    def run(self, receiver, subject, text):\n        status, message = self.send_mail(receiver, subject, text, 1)\n        if not status:\n            return False, {\"success\": [], \"error\": {\"message\": message}}\n        return True, {\"success\": {\"message\": message}, \"error\": []}\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/send_mail.yaml",
    "content": "---\nname: send_mail\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: send mail\nenabled: true\nentry_point: send_mail.py\nparameters:\n  receiver:\n    type: string\n    description: receiver email address\n    required: true\n  subject:\n    type: string\n    description: email project\n    required: true\n  text:\n    type: string\n    description: email text\n    required: true\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/send_message.py",
    "content": "from lib import base_action\nimport json\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass SendMessage(base_action.OpsAnyCoreRestAPI):\n    def run(self, name, message_title, message_info, task_name, notify_object_list):\n        try:\n            qw_robot_list = []\n            dd_robot_list = []\n            enabled_user_dict = {}\n            for notify_object in notify_object_list:\n                message_type = notify_object.get(\"type\")\n                target_value = notify_object.get(\"target_value\")\n                checked_message_type = notify_object.get(\"checked_message_type\")\n                if checked_message_type:\n                    checked_message_type = checked_message_type.replace(\",\", \"\")\n                if message_type == \"1\":\n                    enabled_user_dict[target_value] = checked_message_type\n                elif message_type == \"3\":\n                    qw_robot_list.append(target_value)\n                elif message_type == \"4\":\n                    dd_robot_list.append(target_value)\n\n            parameter = \"('{}', '{}', '{}', '{}')\".format(name, message_title, message_info, task_name)\n            alert_info = {\n                \"step_name\": name,\n                \"message_title\": message_title,\n                \"message_info\": message_info,\n                \"task_name\": task_name\n            }\n            notify_qw_object_list, notify_dd_object_list = [], []\n            username_dict = {}\n            if qw_robot_list:\n                notify_qw_object_list = self.send_robot(20, parameter, \",\".join(qw_robot_list), {}, \"qw\")\n            if dd_robot_list:\n                notify_dd_object_list = self.send_robot(20, parameter, \",\".join(dd_robot_list), {}, \"dd\")\n            for username, checked_message_type_list in enabled_user_dict.items():\n                print(\"subscribe_type\", checked_message_type_list, type(checked_message_type_list))\n                send_dict = self.send_out_message(20, checked_message_type_list, parameter, username,\n                                                  alert_info)\n                username_dict[username] = send_dict.get(\"data\") or {}\n            end_data = {\n                \"username_dict\": username_dict,\n                \"notify_qw_object_list\": notify_qw_object_list,\n                \"notify_dd_object_list\": notify_dd_object_list\n            }\n            return True, {\"success\": {\"message\": end_data}, \"error\": []}\n        except Exception as e:\n            return False, {\"success\": [], \"error\": {\"message\": str(e)}}\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/send_message.yaml",
    "content": "---\nname: send_message\npack: opsany_core\nrunner_type: \"python-script\"\ndescription: send message\nenabled: true\nentry_point: send_message.py\nparameters:\n  name:\n    type: string\n    description: step name\n    required: true\n  message_title:\n    type: string\n    description: message title\n    required: true\n  message_info:\n    type: string\n    description: message text\n    required: true\n  task_name:\n    type: string\n    description: task name\n    required: true\n  notify_object_list:\n    type: array\n    description: message notify object\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/actions/test.py",
    "content": "# push test"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/config.schema.yaml",
    "content": "---\napp_code:\n  description: \"app code\"\n  type: string\n\napp_secret:\n  description: \"app secret\"\n  type: string\n\napi_url:\n  description: \"api url\"\n  type: string\n\naccess_token:\n  description: \"access token\"\n  type: string\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/demo.sh",
    "content": "#!/bin/bash\nfunction image_build() {\n    ImageInfo=registry-bj-dx-dzqywjd-hlw-icp.inspurcloud.cn/${namespace}/${controller_name}:${name}-${DATETAG}\n    docker build -f ${dockerfile} -t ${ImageInfo} .\n    docker push ${ImageInfo}\n    if [ ${controller_type} == 'deployment' ]; then\n      set_deployment_images\n    else\n      set_statefulse_images\n    fi\n\n}\n\nfunction set_deployment_images() {\n    if [ ${namespace} == 'tydl' ];then\n         kubectl --kubeconfig=${kube_config} -n cmpt set image deployments/${controller_name} *=registry-bj-dx-dzqywjd-hlw-icp.inspurcloud.cn/${namespace}/${controller_name}:${name}-${DATETAG} --all\n    else\n        kubectl --kubeconfig=${kube_config} -n ${namespace} set image deployments/${controller_name} *=registry-bj-dx-dzqywjd-hlw-icp.inspurcloud.cn/${namespace}/${controller_name}:${name}-${DATETAG} --all\n    fi\n}\n\nfunction set_statefulse_images() {\n    if [ ${namespace} == 'tydl' ];then\n        kubectl --kubeconfig=${kube_config} -n cmpt set image  sts ${controller_name} ${controller_name}=registry-bj-dx-dzqywjd-hlw-icp.inspurcloud.cn/${namespace}/${controller_name}:${name}-${DATETAG} --record\n    else\n        kubectl --kubeconfig=${kube_config} -n ${namespace} set image  sts ${controller_name} ${controller_name}=registry-bj-dx-dzqywjd-hlw-icp.inspurcloud.cn/${namespace}/${controller_name}:${name}-${DATETAG} --record\n    fi\n}\n\nfunction main() {\n  image_build\n\n}\n\nset -x\nDATETAG=$(date +%Y%m%d%H%M)\ndockerfile=Dockerfile_tydl_cmpt-service_php_test\nname=sso-service-test\nkube_config=/root/.k8s/inspur/test/config\nnamespace=tydl\ncontroller_name=cmpt-service\ncontroller_type=statefulset\ncd /data/docker\nmain"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/opsany_core.yaml",
    "content": "access_token: opsany-esb-auth-token-9e8083137204\napi_url: https://DOMAIN_NAME\napp_code: devops\napp_secret: DEVOPS_SECRET_KEY\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/opsany_core.yaml.example",
    "content": "access_token: opsany-esb-auth-token-9e8083137204\napi_url: https://DOMAIN_NAME\napp_code: devops\napp_secret: DEVOPS_SECRET_KEY\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/pack.yaml",
    "content": "---\n# Pack reference. It can only contain lowercase letters, digits and underscores.\n# This attribute is only needed if \"name\" attribute contains special characters.\nref: opsany_core\n# User-friendly pack name. If this attribute contains spaces or any other special characters, then\n# the \"ref\" attribute must also be specified (see above).\nname: opsany_core\n# User-friendly pack description.\ndescription: opsany core System\n# Keywords which are used when searching for packs.\nkeywords:\n  - opsany\n  - event\n  - devops\n  - deploy\n  - core\n  - script\n  - command\n  - nexus\n  - mail\n# Pack version which must follow semver format (<major>.<minor>.<patch> e.g. 1.0.0)\nversion: 2.0.0\n# A list of major Python versions pack is tested with and works with.\npython_versions:\n  - \"3\"\n# New in StackStorm 3.2\n# Specify a list of dependency packs to install. If the pack is in StackStorm Exchange you can use\n# the pack name, or you can specify a full Git repository URL. Optionally, you can specify the\n# exact version, tag, or branch.\n#dependencies:\n#  - core\n# Name of the pack author.\nauthor: Jason Zhao\n# Email of the pack author.\nemail: zhaoshundong@opsany.com\n# Optional list of additional contributors to the pack.\ncontributors:\n  - \"Jason Zhao <zhaoshundong@opsany.com>\"\n\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/requirements-tests.txt",
    "content": ""
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_core/requirements.txt",
    "content": "requests\nurllib3"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/.gitignore",
    "content": ".idea"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/README.md",
    "content": "st2 pack opsany workflow core."
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/actions/demo.py",
    "content": "from st2common.runners.base_action import Action\n\nclass Demo(Action):\n    def run(self, name):\n        print(\"name\", name)\n        return \"OpsAny WorkFlow Info:{name}\".format(name=name)\n\nif __name__ == '__main__':\n    pass\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/actions/demo.yaml",
    "content": "---\nname: demo\npack: opsany_workflow\nrunner_type: \"python-script\"\ndescription: test demo\nenabled: true\nentry_point: demo.py\nparameters:\n    name:\n        type: string\n        description: Greeting you want to say to opsany (i.e. Hello, Hi, Yo, etc.)\n        required: true\n        position: 1\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/pack.yaml",
    "content": "---\n# Pack reference. It can only contain lowercase letters, digits and underscores.\n# This attribute is only needed if \"name\" attribute contains special characters.\nref: opsany_workflow\n# User-friendly pack name. If this attribute contains spaces or any other special characters, then\n# the \"ref\" attribute must also be specified (see above).\nname: opsany_workflow\n# User-friendly pack description.\ndescription: opsany workflow core System\n# Keywords which are used when searching for packs.\nkeywords:\n  - opsany\n  - workflow\n  - develop\n  - event\n  - core\n# Pack version which must follow semver format (<major>.<minor>.<patch> e.g. 1.0.0)\nversion: 1.0.0\n# A list of major Python versions pack is tested with and works with.\npython_versions:\n  - \"3\"\n# New in StackStorm 3.2\n# Specify a list of dependency packs to install. If the pack is in StackStorm Exchange you can use\n# the pack name, or you can specify a full Git repository URL. Optionally, you can specify the\n# exact version, tag, or branch.\n#dependencies:\n#  - core\n# Name of the pack author.\nauthor: Jason Zhao\n# Email of the pack author.\nemail: zhaoshundong@opsany.com\n# Optional list of additional contributors to the pack.\ncontributors:\n  - \"Jason Zhao <zhaoshundong@opsany.com>\"\n\n"
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/requirements-tests.txt",
    "content": ""
  },
  {
    "path": "install/conf/stackstorm/packs/opsany_workflow/requirements.txt",
    "content": "requests\nurllib3"
  },
  {
    "path": "install/conf/stackstorm/tests/st2tests-tools.sh",
    "content": "#!/usr/bin/env bash\n\nmkdir -p ${BATS_HELPERS_DIR} ${BATS_DIR}\ncp -R /opt/bats/* ${BATS_DIR}\ncp -R /opt/bats-helpers/* ${BATS_HELPERS_DIR}\n"
  },
  {
    "path": "install/conf/stackstorm/tests/st2tests.sh",
    "content": "#!/usr/bin/env bats\n\nload \"${BATS_HELPERS_DIR}/bats-support/load.bash\"\nload \"${BATS_HELPERS_DIR}/bats-assert/load.bash\"\nload \"${BATS_HELPERS_DIR}/bats-file/load.bash\"\n\n@test 'st2 version deployed and python env are as expected' {\n  run st2 --version\n  assert_success\n  # st2 3.7.0, on Python 3.8.10\n  assert_line --partial \"st2 ${ST2_VERSION}\"\n  assert_line --partial 'on Python 3.8.10'\n}\n\n@test 'ST2_AUTH_URL service endpoint is accessible and working' {\n  run curl -v ${ST2_API_URL}\n  assert_line --partial 'Content-Type: application/json'\n  assert_line --partial 'St2-Api-Key'\n}\n\n@test 'ST2_API_URL service endpoint is accessible and working' {\n  run curl -v ${ST2_API_URL}\n  assert_line --partial 'Content-Type: application/json'\n  assert_line --partial 'St2-Api-Key'\n}\n\n@test 'ST2_STREAM_URL service endpoint is accessible and working' {\n  run curl -v ${ST2_API_URL}\n  assert_line --partial 'Content-Type: application/json'\n  assert_line --partial 'St2-Api-Key'\n}\n\n@test 'st2 user can log in with auth credentials' {\n  run st2 login ${ST2_AUTH_USERNAME} --password ${ST2_AUTH_PASSWORD} -w\n  assert_success\n  assert_line \"Logged in as ${ST2_AUTH_USERNAME}\"\n  assert_file_exist ~/.st2/config\n}\n\n@test 'st2 core pack is installed and loaded' {\n  run st2 action list --pack=core\n  assert_success\n  assert_line --partial 'core.local'\n}\n\n@test \"can execute simple st2 action 'core.local'\" {\n  run st2 run core.local cmd=id\n  assert_success\n  assert_line --partial 'return_code: 0'\n  assert_line --partial \"stderr: ''\"\n  assert_line --partial 'stdout: uid=1000(stanley) gid=1000(stanley) groups=1000(stanley)'\n  assert_line --partial 'succeeded: true'\n}\n\n@test 'st2 chatops core rule is loaded' {\n  run st2 rule list\n  assert_success\n  assert_line --partial 'chatops.notify'\n}\n\n@test 'st2 key/value operations are functional' {\n  run st2 key set foo bar\n  assert_success\n\n  run st2 key get foo\n  assert_success\n  assert_line --partial 'bar'\n\n  run st2 key delete foo\n  assert_line --partial '\"foo\" has been successfully deleted'\n  assert_success\n\n  run st2 key get foo\n  assert_line --partial '\"foo\" is not found'\n  assert_failure\n}\n\n# TODO: RBAC isn't loaded automatically for st2-docker. Uncomment when/if RBAC is loaded on startup\n#@test 'RBAC is loaded and enabled' {\n#  if [ $ST2_RBAC_ENABLED != \"true\" ]; then\n#    skip \"disabled in Helm values\"\n#  fi\n#\n#  run st2 whoami\n#  assert_success\n#  assert_output --regexp 'RBAC:\\s+ - Enabled: True'\n#  assert_line --partial 'Roles: system_admin'\n#}\n"
  },
  {
    "path": "install/conf/stackstorm/tests/st2tests.yaml",
    "content": "version: '3'\n\nservices:\n  st2test:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2actionrunner:${ST2_VERSION:-latest}\n    environment:\n      ST2_AUTH_URL: ${ST2_AUTH_URL:-http://st2auth:9100/}\n      ST2_API_URL: ${ST2_API_URL:-http://st2api:9101/}\n      ST2_STREAM_URL: ${ST2_STREAM_URL:-http://st2stream:9102/}\n      ST2WEB_HTTPS: ${ST2WEB_HTTPS:-0}\n      BATS_HELPERS_DIR: /tools/bats-helpers/\n      ST2_AUTH_USERNAME: ${ST2_AUTH_USERNAME:-st2admin}\n      ST2_AUTH_PASSWORD: ${ST2_AUTH_PASSWORD:-Ch@ngeMe}\n    command: bash -c \"ln -s /tools/bats/libexec/bats /sbin/bats && /st2tests.sh\"\n    volumes:\n      - ./st2tests.sh:/st2tests.sh:ro\n      - tools:/tools\n    networks:\n      - st2-docker_private\n    stop_signal: SIGKILL\n    depends_on:\n      - st2test-tools\n  st2test-tools:\n    image: dduportal/bats:latest\n    environment:\n      BATS_HELPERS_DIR: /tools/bats-helpers/\n      BATS_DIR: /tools/bats/\n    command: /st2tests.sh\n    volumes:\n      - tools:/tools\n      - ./st2tests-tools.sh:/st2tests.sh:ro\n\nvolumes:\n    tools:\n\nnetworks:\n  st2-docker_private:\n    external: true\n"
  },
  {
    "path": "install/database-backup.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Database Backup Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"database-backup.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -f /etc/redhat-release ];then\n      setenforce 0\n    fi\nfi\n\nmysql_backup(){\n    shell_log \"Start: MySQL Backup...\"\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root --all-databases > /opt/opsany_mysql_backup_${CTIME}.sql\n    ls -lh /opt/opsany_mysql_backup_${CTIME}.sql\n}\n\nmongodb_backup(){\n    shell_log \"Start: MongoDB Backup...\"\n    docker exec -e MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME \\\n                -e MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD \\\n                opsany-base-mongodb /bin/bash -c \"mongodump -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD -o /opt/mongodb-backup-${CTIME}\"\n    docker cp opsany-base-mongodb:/opt/mongodb-backup-${CTIME} /opt/ \n    ls -d /opt/mongodb-backup-${CTIME}\n\n}\n\n# Main\nmain(){\n    case \"$1\" in\n\tall)\n            mysql_backup\n\t    mongodb_backup\n\t\t;;\n        mysql)\n            mysql_backup\n        ;;\n        mongodb)\n            mongodb_backup\n        ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {all|mysql|mongodb|help}\"\n\t    ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/db-backup.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Database Backup Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"db-backup.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"<------>  $CTIME ${SHELL_NAME} : ${LOG_INFO}  <------>\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"======Error: Please Change Directory to ${INSTALL_PATH}/install======\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\nfi\n\nmysql_ops_backup(){\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mkdir -p ${INSTALL_PATH}/dbbackup\n    shell_log \"mysql backup: opsany_paas\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root opsany_paas --add-drop-database > ${INSTALL_PATH}/dbbackup/opsany-paas.sql\n    shell_log \"mysql backup: opsany_proxy\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root opsany_proxy --add-drop-database > ${INSTALL_PATH}/dbbackup/opsany-proxy.sql\n    shell_log \"mysql backup: rbac\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root rbac --add-drop-database > ${INSTALL_PATH}/dbbackup/rbac.sql\n    shell_log \"mysql backup: workbench\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root workbench --add-drop-database > ${INSTALL_PATH}/dbbackup/workbench.sql\n    shell_log \"mysql backup: cmdb\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root cmdb --add-drop-database > ${INSTALL_PATH}/dbbackup/cmdb.sql\n    shell_log \"mysql backup: control\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root control --add-drop-database > ${INSTALL_PATH}/dbbackup/control.sql\n    shell_log \"mysql backup: job\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root job --add-drop-database > ${INSTALL_PATH}/dbbackup/job.sql\n    shell_log \"mysql backup: monitor\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root monitor --add-drop-database > ${INSTALL_PATH}/dbbackup/monitor.sql\n    shell_log \"mysql backup: cmp\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root cmp --add-drop-database > ${INSTALL_PATH}/dbbackup/cmp.sql\n    shell_log \"mysql backup: bastion\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root bastion --add-drop-database > ${INSTALL_PATH}/dbbackup/bastion.sql\n}\n\nmysql_dev_backup(){\n    shell_log \"mysql backup: devops\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root devops --add-drop-database > ${INSTALL_PATH}/dbbackup/devops.sql\n    shell_log \"mysql backup: pipeline\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root pipeline --add-drop-database > ${INSTALL_PATH}/dbbackup/pipeline.sql\n    shell_log \"mysql backup: deploy\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root deploy --add-drop-database > ${INSTALL_PATH}/dbbackup/deploy.sql\n    shell_log \"mysql backup: repo\"\n    mysqldump -h \"${MYSQL_SERVER_IP}\" -u root repo --add-drop-database > ${INSTALL_PATH}/dbbackup/repo.sql\n}\n\n# Main\nmain(){\n    case \"$1\" in\n\tall)\n          mysql_ops_backup\n          mysql_dev_backup\n\t      ;;\n    ops)\n          mysql_ops_backup\n          ;;\n    dev)\n          mysql_dev_backup\n          ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {all|ops|dev|help}\"\n\t      ;;\n    esac\n}\n\nmain $1\n\n\n"
  },
  {
    "path": "install/db-create.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Database Update Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"db-create.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"<------>  $CTIME ${SHELL_NAME} : ${LOG_INFO}  <------>\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"======Error: Please Change Directory to ${INSTALL_PATH}/install======\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    export MYSQL_SERVER_PORT=\"8031\"\nfi\n\npaas_db(){    \n    # PaaS\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE DATABASE IF NOT EXISTS opsany_paas DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER opsany@'%' identified by \"\\\"${MYSQL_OPSANY_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on opsany_paas.* to opsany@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on opsany_proxy.* to opsany@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root opsany_paas < ${INSTALL_PATH}/dbbackup/opsany-paas.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root opsany_proxy < ${INSTALL_PATH}/dbbackup/opsany-proxy.sql\n}\n\nrbac_db(){\n    # rbac\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database rbac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'rbac'@'%' identified by \"\\\"${MYSQL_OPSANY_RBAC_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on rbac.* to rbac@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root rbac < ${INSTALL_PATH}/dbbackup/rbac.sql\n}\n\nworkbench_db(){\n    # workbench\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database workbench DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'workbench'@'%' IDENTIFIED BY \"\\\"${MYSQL_OPSANY_WORKBENCH_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on workbench.* to workbench@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root workbench < ${INSTALL_PATH}/dbbackup/workbench.sql\n}\n\ncmdb_db(){\n    # cmdb\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database cmdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'cmdb'@'%' IDENTIFIED BY \"\\\"${MYSQL_OPSANY_CMDB_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on cmdb.* to cmdb@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root cmdb < ${INSTALL_PATH}/dbbackup/cmdb.sql\n}\n\ncontrol_db(){\n    # control\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database control DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'control'@'%' identified by \"\\\"${MYSQL_OPSANY_CONTROL_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on control.* to control@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root control < ${INSTALL_PATH}/dbbackup/control.sql\n}\n\njob_db(){\n    # job\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database job DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'job'@'%' identified by \"\\\"${MYSQL_OPSANY_JOB_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on job.* to job@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root job < ${INSTALL_PATH}/dbbackup/job.sql\n}  \n\nmonitor_db(){\n    # monitor\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database monitor DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'monitor'@'%' identified by \"\\\"${MYSQL_OPSANY_MONITOR_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on monitor.* to monitor@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root monitor < ${INSTALL_PATH}/dbbackup/monitor.sql\n}\n    \ncmp_db(){\n    # cmp\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database cmp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'cmp'@'%' identified by \"\\\"${MYSQL_OPSANY_CMP_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on cmp.* to cmp@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root cmp < ${INSTALL_PATH}/dbbackup/cmp.sql\n}\n\nbastion_db(){\n    # bastion\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database bastion DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'bastion'@'%' identified by \"\\\"${MYSQL_OPSANY_BASTION_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on bastion.* to bastion@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root bastion < ${INSTALL_PATH}/dbbackup/bastion.sql\n}\n    \ndevops_db(){\n    # devops\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database devops DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'devops'@'%' identified by \"\\\"${MYSQL_OPSANY_DEVOPS_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on devops.* to devops@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root devops < ${INSTALL_PATH}/dbbackup/devops.sql\n} \n\nrepo_db(){\n    # repo\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database repo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'repo'@'%' identified by \"\\\"${MYSQL_OPSANY_REPO_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on repo.* to repo@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root repo < ${INSTALL_PATH}/dbbackup/repo.sql\n} \n\npipeline_db(){\n    # pipeline\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database pipeline DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'pipeline'@'%' identified by \"\\\"${MYSQL_OPSANY_PIPELINE_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on pipeline.* to pipeline@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root pipeline < ${INSTALL_PATH}/dbbackup/pipeline.sql\n}\n    \ndeploy_db(){\n    # deploy\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database deploy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'deploy'@'%' identified by \"\\\"${MYSQL_OPSANY_DEPLOY_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on deploy.* to deploy@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root deploy < ${INSTALL_PATH}/dbbackup/deploy.sql\n}\n    \ncode_db(){\n    # code\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database code DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'code'@'%' identified by \"\\\"${MYSQL_OPSANY_CODE_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on code.* to code@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root code < ${INSTALL_PATH}/dbbackup/code.sql\n}\n\n# Main\nmain(){\n    case \"$1\" in\n        paas)\n            paas_db\n            ;;\n        rbac)\n            rbac_db\n            ;;\n        workbench)\n            workbench_db\n            ;;\n        cmdb)\n            cmdb_db\n            ;;\n        control)\n            control_db\n            ;;\n        job)\n            job_db\n            ;;\n        monitor)\n            monitor_db\n            ;;\n        cmp)\n            cmp_db\n            ;;\n        bastion)\n            bastion_db\n            ;;\n        devops)\n            devops_db\n            ;;\n        pipeline)\n            pipeline_db\n            ;;\n        deploy)\n            deploy_db\n            ;;\n        repo)\n            repo_db\n            ;;\n        code)\n            code_db\n            ;;\n        all)\n            paas_db;\n            rbac_db;\n            workbench_db;\n            cmdb_db;\n            control_db;\n            job_db;\n            monitor_db;\n            cmp_db;\n            bastion_db;\n            devops_db;\n            pipeline_db;\n            deploy_db;\n            repo_db;\n            #code_db;\n            ;;\n        ops)\n            paas_db;\n            rbac_db;\n            workbench_db;\n            cmdb_db;\n            control_db;\n            job_db;\n            monitor_db;\n            cmp_db;\n            bastion_db;\n            ;;\n        dev)\n            devops_db;\n            pipeline_db;\n            deploy_db;\n            repo_db;\n            #code_db;\n            ;;\n        help|*)\n\t        echo $\"Usage: $0 {ops|dev|all|help}\"\n\t        ;;\n    esac\n}\n\nmain $1 \n    \n\n\n"
  },
  {
    "path": "install/dev-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny PaaSAgent for Develop Install Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"dev-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Check Install requirement\ninstall_check(){\n  shell_warning_log \"The beginning is the first step to success\"\n  if [ -f /etc/redhat-release ];then\n      setenforce 0\n  fi\n  DOCKER_PID=$(ps aux | grep '/usr/bin/containerd' | grep -v 'grep' | wc -l)\n  if [ ${DOCKER_PID} -lt 1 ];then\n      shell_error_log \"Please install and start docker first!!!\"\n      exit\n  fi\n}\n\npaas_agent_add(){\n    shell_log \"Register paas-agent Service\"\n    cd $CDIR && cd ../saas/\n    resp=$(python3 engine-server-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --server_ip $LOCAL_IP  --server_port 4244 --app_port 8084 --server_cate tapp --type add)\n    token=$(jq -r .data.token <<<\"$resp\" 2>/dev/null)\n    sid=$(jq -r .data.s_id <<<\"$resp\" 2>/dev/null)\n    server_id=$(jq -r .data.server_id <<<\"$resp\" 2>/dev/null)\n    if [[ -z \"$token\" || -z \"$sid\" ]]; then\n        shell_log \"Register Faild：$resp\"\n    else\n        shell_log \"Register Succeed\"\n    fi\n}\n\n# Start PaasAgent\npaas_agent_start(){\n    # 修改PaasAgent配置文件\n    cd $CDIR\n    mkdir -p ${INSTALL_PATH}/paas_agent_test\n    /bin/cp -r ../install/conf/paas_agent/paasagent.conf ${INSTALL_PATH}/paas_agent_test/paasagent.conf\n    /bin/cp -r ../install/conf/paas_agent/paas_agent_config.yaml ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    sed -i \"s/BK_PAASAGENT_SID/$sid/g\" ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    sed -i \"s/BK_PAASAGENT_TOKEN/$token/g\" ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    \n    shell_log \"Start paas-agent Test\"\n    docker run -d --restart=always --name opsany-paas-paasagent-test \\\n    -p 4244:4245 -p 8084:8085 \\\n    -v ${INSTALL_PATH}/logs:/opt/opsany/logs/ \\\n    -v ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml:/opt/opsany/paas-agent/etc/paas_agent_config.yaml \\\n    -v ${INSTALL_PATH}/paas_agent_test/paasagent.conf:/etc/nginx/conf.d/paasagent.conf \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v ${INSTALL_PATH}/paas_agent_test/apps:/opt/opsany/paas-agent/apps \\\n    -v ${INSTALL_PATH}/paas_agent_test/saasapp:/opt/opsany/paas-agent/saasapp \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-paasagent:v3.2.7\n    \n    sleep 10\n    \n    # PaasAgent healthz\n    BIND_ADDR=${LOCAL_IP}\n    PAASAGENT_SERVER_PORT=4244\n    code=$(curl -s -o /dev/null -w \"%{http_code}\" http://$BIND_ADDR:$PAASAGENT_SERVER_PORT/healthz )\n    if [[ $code != 200 ]]; then\n        shell_error_log \"paasagent test Start Faild，Check (http://$BIND_ADDR:$PAASAGENT_SERVER_PORT/healthz) Error\" >&2\n        exit 1\n    fi\n    \n     shell_log \"Activate paas-agent\"\n    # Activate PaasAgent\n     cd $CDIR && cd ../saas/\n     python3 engine-server-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --server_id $server_id --type active\n}\n    \n\n# Main\nmain(){\n    case \"$1\" in\n\tinstall)\n          install_check\n          paas_agent_add\n          paas_agent_start\n\t  ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/devops-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  Zabbix Server Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"zabbix-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Check Install requirement\ninstall_init(){\n    shell_log \"=====Begin: Init======\"\n    # Configuration file write to DB\n    pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 \\\n             -i http://mirrors.aliyun.com/pypi/simple/ \\\n             --trusted-host mirrors.aliyun.com\n}\n\njenkins_install(){\n    # Step1: Create Jenkins Home\n    mkdir -p ${INSTALL_PATH}/jenkins-home && chmod -R 777 ${INSTALL_PATH}/jenkins-home\n    # Step2: Start Jenkins Master\n    docker run --restart=always --name opsany-devops-jenkins -t \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    -v ${INSTALL_PATH}/jenkins-home:/var/jenkins_home \\\n    -p 8008:8080 -p 8009:5000 \\\n    -d ${PAAS_DOCKER_REG}/jenkins:2.452.2-lts\n}\n\nnexux_install(){\n    # Step1: Create Nexus Data\n    mkdir -p ${INSTALL_PATH}/nexus-data && chmod -R 777 ${INSTALL_PATH}/nexus-data\n    # Step2: Start Nexus Server\n    docker run -d -p 8014:8081 -p 8015:5000 --restart=always --name opsany-devops-nexus \\\n        -v ${INSTALL_PATH}/nexus-data:/nexus-data  \\\n        -e INSTALL4J_ADD_VM_PARAMS=\"-Xms500m -Xmx500m -XX:MaxDirectMemorySize=500m\" \\\n        ${PAAS_DOCKER_REG}/nexus3:3.37.0\n}\n\nsnoar_install(){\n    # Step1: Init \n    sysctl -w vm.max_map_count=262144\n    sysctl -w fs.file-max=65536\n    ulimit -n 65536\n    ulimit -u 4096\n\n    # Step2: Start SonarQube Server\n    docker run --restart=always --name opsany-devops-sonarqube -t \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        -p 8016:9000 \\\n        -d ${PAAS_DOCKER_REG}/sonarqube:9.9.6-community\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    jenkins)\n        jenkins_install\n        ;;\n    nexus)\n        nexus_install\n        ;;\n    sonar)\n        snoar_install\n        ;;\n    all)\n        jenkins_install\n        nexus_install\n        snoar_install\n        ;;\n    help|*)\n        echo $\"Usage: $0 {jenkins|nexus|sonar|all|help}\"\n        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/init/cmdb-init/field_group.json",
    "content": "{ \"_id\" : { \"$oid\" : \"5e5dd2a8c67c39b406648c34\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:44:40.179+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:44:40.179+0800\" }, \"code\" : \"PUBLIC_CLOUD_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"PUBLIC_CLOUD\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd2a8c67c39b406648c35\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:44:40.181+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:44:40.181+0800\" }, \"code\" : \"PUBLIC_CLOUD_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"PUBLIC_CLOUD\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd2c4c67c39b406648c38\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:45:08.080+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:08.080+0800\" }, \"code\" : \"CLOUD_REGION_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"CLOUD_REGION\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd2c4c67c39b406648c39\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:45:08.083+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:08.083+0800\" }, \"code\" : \"CLOUD_REGION_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"CLOUD_REGION\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd2eac67c39b406648c3c\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:45:46.159+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:46.159+0800\" }, \"code\" : \"CLOUD_AZ_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"CLOUD_AZ\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd2eac67c39b406648c3d\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:45:46.162+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:46.162+0800\" }, \"code\" : \"CLOUD_AZ_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"CLOUD_AZ\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd310c67c39b406648c40\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:46:24.083+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:24.083+0800\" }, \"code\" : \"IDC_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"IDC\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd310c67c39b406648c41\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:46:24.085+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:24.085+0800\" }, \"code\" : \"IDC_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"IDC\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd32dc67c39b406648c44\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:46:53.419+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:53.419+0800\" }, \"code\" : \"REGION_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"REGION\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd32dc67c39b406648c45\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:46:53.422+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:53.422+0800\" }, \"code\" : \"REGION_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"REGION\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd343c67c39b406648c48\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:47:15.345+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:15.345+0800\" }, \"code\" : \"RACK_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"RACK\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd343c67c39b406648c49\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:47:15.348+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:15.348+0800\" }, \"code\" : \"RACK_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"RACK\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd36fc67c39b406648c4c\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:47:59.401+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:59.401+0800\" }, \"code\" : \"SERVER_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd36fc67c39b406648c4d\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:47:59.403+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:59.403+0800\" }, \"code\" : \"SERVER_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd3bcc67c39b406648c50\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:49:16.393+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:49:16.393+0800\" }, \"code\" : \"VIRTUAL_SERVER_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"VIRTUAL_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd3bcc67c39b406648c51\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:49:16.395+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:49:16.395+0800\" }, \"code\" : \"VIRTUAL_SERVER_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"VIRTUAL_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd41ec67c39b406648c54\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:50:54.771+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:50:54.771+0800\" }, \"code\" : \"CLOUD_SERVER_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"CLOUD_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd41ec67c39b406648c55\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:50:54.773+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:50:54.773+0800\" }, \"code\" : \"CLOUD_SERVER_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"CLOUD_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd7e6c67c39b406648c5c\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:07:02.058+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:02.058+0800\" }, \"code\" : \"ROUTER_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"ROUTER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd7e6c67c39b406648c5d\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:07:02.060+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:02.060+0800\" }, \"code\" : \"ROUTER_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"ROUTER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd802c67c39b406648c60\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:07:30.583+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:30.583+0800\" }, \"code\" : \"SWITCH_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"SWITCH\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd802c67c39b406648c61\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:07:30.585+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:30.585+0800\" }, \"code\" : \"SWITCH_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"SWITCH\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8a4c67c39b406648c67\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:10:12.293+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:12.293+0800\" }, \"code\" : \"BUSINESS_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"BUSINESS\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8a4c67c39b406648c68\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:10:12.296+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:12.296+0800\" }, \"code\" : \"BUSINESS_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"BUSINESS\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6b\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:10:51.922+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:51.922+0800\" }, \"code\" : \"APPLICATION_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"APPLICATION\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6c\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:10:51.925+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:51.925+0800\" }, \"code\" : \"APPLICATION_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"APPLICATION\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8e3c67c39b406648c6f\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:11:15.346+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:15.346+0800\" }, \"code\" : \"SERVICE_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"SERVICE\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8e3c67c39b406648c70\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:11:15.348+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:15.348+0800\" }, \"code\" : \"SERVICE_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"SERVICE\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8f7c67c39b406648c73\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:11:35.076+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:35.076+0800\" }, \"code\" : \"COMPANY_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"COMPANY\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8f7c67c39b406648c74\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:11:35.078+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:35.078+0800\" }, \"code\" : \"COMPANY_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"COMPANY\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd90dc67c39b406648c77\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:11:57.764+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:57.764+0800\" }, \"code\" : \"DEPARTMENT_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"DEPARTMENT\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd90dc67c39b406648c78\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:11:57.767+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:57.768+0800\" }, \"code\" : \"DEPARTMENT_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"DEPARTMENT\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd924c67c39b406648c7b\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:12:20.607+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:20.607+0800\" }, \"code\" : \"GROUP_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"GROUP\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd924c67c39b406648c7c\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:12:20.609+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:20.609+0800\" }, \"code\" : \"GROUP_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"GROUP\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd938c67c39b406648c7f\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:12:40.841+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:40.841+0800\" }, \"code\" : \"STAFF_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"STAFF\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd938c67c39b406648c80\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:12:40.844+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:40.844+0800\" }, \"code\" : \"STAFF_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"STAFF\" }\n{ \"_id\" : { \"$oid\" : \"5e5df0a94297919cd8a1da52\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T13:52:41.074+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:52:41.074+0800\" }, \"code\" : \"IDC_联系人属性\", \"name\" : \"联系人属性\", \"is_fold\" : true, \"model_code\" : \"IDC\" }\n{ \"_id\" : { \"$oid\" : \"5e5dfcf04297919cd8a1da58\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T14:45:04.348+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:45:04.348+0800\" }, \"code\" : \"SERVER_系统属性（自动采集）\", \"name\" : \"系统属性（自动采集）\", \"index\" : 3, \"is_fold\" : true, \"model_code\" : \"SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e5dfffe4297919cd8a1da64\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T14:58:06.363+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:58:06.363+0800\" }, \"code\" : \"SERVER_设备属性（自动采集）\", \"name\" : \"设备属性（自动采集）\", \"index\" : 4, \"is_fold\" : true, \"model_code\" : \"SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e733e216ed5235d6aad1a4f\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:40:49.278+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:40:49.279+0800\" }, \"code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"name\" : \"系统信息（自动采集）\", \"index\" : 3, \"is_fold\" : true, \"model_code\" : \"CLOUD_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e733f5a027a644d06ad1a5f\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:46:02.334+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:46:02.335+0800\" }, \"code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"name\" : \"设备信息（自动采集）\", \"index\" : 4, \"is_fold\" : true, \"model_code\" : \"CLOUD_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e7340b3027a644d06ad1a6d\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:51:47.475+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:51:47.475+0800\" }, \"code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"name\" : \"系统信息（自动采集）\", \"index\" : 3, \"is_fold\" : true, \"model_code\" : \"VIRTUAL_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e735d616bd373f2d19d91b3\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T19:54:09.638+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:54:09.638+0800\" }, \"code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"name\" : \"设备信息（自动采集）\", \"index\" : 4, \"is_fold\" : true, \"model_code\" : \"VIRTUAL_SERVER\" }\n{ \"_id\" : { \"$oid\" : \"5e7de92b382121e5a2655f5a\" }, \"updated_at\" : { \"$date\" : \"2020-03-27T19:53:15.289+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-27T19:53:15.289+0800\" }, \"code\" : \"MYSQL_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"MYSQL\" }\n{ \"_id\" : { \"$oid\" : \"5e7de92b382121e5a2655f5b\" }, \"updated_at\" : { \"$date\" : \"2020-03-27T19:53:15.293+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-27T19:53:15.293+0800\" }, \"code\" : \"MYSQL_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"MYSQL\" }\n{ \"_id\" : { \"$oid\" : \"5ed30b52c21464af965f3712\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:41:38.643+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:38.643+0800\" }, \"code\" : \"ORACLE_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"ORACLE\" }\n{ \"_id\" : { \"$oid\" : \"5ed30b52c21464af965f3713\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:41:38.645+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:38.645+0800\" }, \"code\" : \"ORACLE_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"ORACLE\" }\n{ \"_id\" : { \"$oid\" : \"5ed30b63c21464af965f3716\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:41:55.486+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:55.486+0800\" }, \"code\" : \"MONGODB_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"MONGODB\" }\n{ \"_id\" : { \"$oid\" : \"5ed30b63c21464af965f3717\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:41:55.488+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:55.488+0800\" }, \"code\" : \"MONGODB_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"MONGODB\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bd0c21464af965f371e\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:43:44.631+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:44.631+0800\" }, \"code\" : \"KAFKA_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"KAFKA\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bd0c21464af965f371f\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:43:44.633+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:44.633+0800\" }, \"code\" : \"KAFKA_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"KAFKA\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bdec21464af965f3722\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:43:58.036+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:58.036+0800\" }, \"code\" : \"TOMCAT_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"TOMCAT\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bdec21464af965f3723\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:43:58.038+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:58.038+0800\" }, \"code\" : \"TOMCAT_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"TOMCAT\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bedc21464af965f3726\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:44:13.801+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:13.801+0800\" }, \"code\" : \"RABBITMQ_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"RABBITMQ\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bedc21464af965f3727\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:44:13.803+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:13.803+0800\" }, \"code\" : \"RABBITMQ_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"RABBITMQ\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c07c21464af965f372a\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:44:39.499+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:39.499+0800\" }, \"code\" : \"NGINX_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"NGINX\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c07c21464af965f372b\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:44:39.501+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:39.501+0800\" }, \"code\" : \"NGINX_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"NGINX\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c14c21464af965f372e\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:44:52.053+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:52.053+0800\" }, \"code\" : \"APACHE_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"APACHE\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c14c21464af965f372f\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:44:52.055+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:52.055+0800\" }, \"code\" : \"APACHE_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"APACHE\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c3ac21464af965f3732\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:45:30.881+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:45:30.881+0800\" }, \"code\" : \"REDIS_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"REDIS\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c3ac21464af965f3733\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T09:45:30.883+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:45:30.883+0800\" }, \"code\" : \"REDIS_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"REDIS\" }\n{ \"_id\" : { \"$oid\" : \"5fb11b5ac3ab246873665fb7\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:13:14.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:13:14.000+0800\" }, \"code\" : \"FIREWALL_default\", \"name\" : \"基本属性\", \"index\" : 1, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"FIREWALL\" }\n{ \"_id\" : { \"$oid\" : \"5fb11b5ac3ab246873665fb8\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:13:14.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:13:14.000+0800\" }, \"code\" : \"FIREWALL_relationship\", \"name\" : \"关系属性\", \"index\" : 2, \"is_fold\" : true, \"is_deletable\" : false, \"model_code\" : \"FIREWALL\" }\n"
  },
  {
    "path": "install/init/cmdb-init/icon_model.json",
    "content": "{ \"_id\" : 1, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.680+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.680+0800\" }, \"name\" : \"Apache\", \"url\" : \"/static/img/icon/25Apache.png\" }\n{ \"_id\" : 2, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.683+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.683+0800\" }, \"name\" : \"Kafka\", \"url\" : \"/static/img/icon/26Kafka.png\" }\n{ \"_id\" : 3, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.687+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.687+0800\" }, \"name\" : \"MongoDB\", \"url\" : \"/static/img/icon/27MongoDB.png\" }\n{ \"_id\" : 4, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.689+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.689+0800\" }, \"name\" : \"Nginx\", \"url\" : \"/static/img/icon/28Nginx.png\" }\n{ \"_id\" : 5, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.692+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.692+0800\" }, \"name\" : \"RabbitMQ\", \"url\" : \"/static/img/icon/29RabbitMQ.png\" }\n{ \"_id\" : 6, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.695+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.695+0800\" }, \"name\" : \"SQLServer\", \"url\" : \"/static/img/icon/30SQLServer.png\" }\n{ \"_id\" : 7, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.698+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.698+0800\" }, \"name\" : \"Redis\", \"url\" : \"/static/img/icon/31Redis.png\" }\n{ \"_id\" : 8, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.701+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.701+0800\" }, \"name\" : \"Tomcat\", \"url\" : \"/static/img/icon/32Tomcat.png\" }\n{ \"_id\" : 9, \"updated_at\" : { \"$date\" : \"2020-06-04T17:33:42.704+0800\" }, \"created_at\" : { \"$date\" : \"2020-06-04T17:33:42.704+0800\" }, \"name\" : \"堡垒机\", \"url\" : \"/static/img/icon/33堡垒机.png\" }\n{ \"_id\" : 97, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.606+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.606+0800\" }, \"name\" : \"可用区\", \"url\" : \"/static/img/icon/01可用区.png\" }\n{ \"_id\" : 98, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.609+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.610+0800\" }, \"name\" : \"云主机\", \"url\" : \"/static/img/icon/02云主机.png\" }\n{ \"_id\" : 99, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.612+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.612+0800\" }, \"name\" : \"区域\", \"url\" : \"/static/img/icon/03区域.png\" }\n{ \"_id\" : 100, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.615+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.615+0800\" }, \"name\" : \"业务\", \"url\" : \"/static/img/icon/04业务.png\" }\n{ \"_id\" : 101, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.618+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.618+0800\" }, \"name\" : \"物理机\", \"url\" : \"/static/img/icon/05物理机.png\" }\n{ \"_id\" : 102, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.620+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.620+0800\" }, \"name\" : \"应用\", \"url\" : \"/static/img/icon/06应用.png\" }\n{ \"_id\" : 103, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.623+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.623+0800\" }, \"name\" : \"服务\", \"url\" : \"/static/img/icon/07服务.png\" }\n{ \"_id\" : 104, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.625+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.625+0800\" }, \"name\" : \"机房\", \"url\" : \"/static/img/icon/08机房.png\" }\n{ \"_id\" : 105, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.628+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.628+0800\" }, \"name\" : \"机柜\", \"url\" : \"/static/img/icon/09机柜.png\" }\n{ \"_id\" : 106, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.630+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.630+0800\" }, \"name\" : \"防火墙\", \"url\" : \"/static/img/icon/10防火墙.png\" }\n{ \"_id\" : 107, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.633+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.633+0800\" }, \"name\" : \"交换机\", \"url\" : \"/static/img/icon/11交换机.png\" }\n{ \"_id\" : 108, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.636+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.636+0800\" }, \"name\" : \"路由器\", \"url\" : \"/static/img/icon/12路由器.png\" }\n{ \"_id\" : 109, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.639+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.639+0800\" }, \"name\" : \"部门\", \"url\" : \"/static/img/icon/13部门.png\" }\n{ \"_id\" : 110, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.642+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.642+0800\" }, \"name\" : \"公司\", \"url\" : \"/static/img/icon/14公司.png\" }\n{ \"_id\" : 111, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.645+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.645+0800\" }, \"name\" : \"员工\", \"url\" : \"/static/img/icon/15员工.png\" }\n{ \"_id\" : 112, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.648+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.648+0800\" }, \"name\" : \"小组\", \"url\" : \"/static/img/icon/16小组.png\" }\n{ \"_id\" : 113, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.650+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.650+0800\" }, \"name\" : \"公有云\", \"url\" : \"/static/img/icon/17公有云.png\" }\n{ \"_id\" : 114, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.653+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.653+0800\" }, \"name\" : \"虚拟机\", \"url\" : \"/static/img/icon/18虚拟机.png\" }\n{ \"_id\" : 115, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.656+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.656+0800\" }, \"name\" : \"IP\", \"url\" : \"/static/img/icon/19IP.png\" }\n{ \"_id\" : 116, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.662+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.662+0800\" }, \"name\" : \"网络\", \"url\" : \"/static/img/icon/20网络.png\" }\n{ \"_id\" : 117, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.665+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.665+0800\" }, \"name\" : \"子网\", \"url\" : \"/static/img/icon/21子网.png\" }\n{ \"_id\" : 118, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.667+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.668+0800\" }, \"name\" : \"默认\", \"url\" : \"/static/img/icon/22默认.png\" }\n{ \"_id\" : 120, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.662+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.662+0800\" }, \"name\" : \"Oracle\", \"url\" : \"/static/img/icon/24Oracle.png\" }\n{ \"_id\" : 121, \"updated_at\" : { \"$date\" : \"2020-03-03T19:05:22.662+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T19:05:22.662+0800\" }, \"name\" : \"MySQL\", \"url\" : \"/static/img/icon/23MySQL.png\" }\n"
  },
  {
    "path": "install/init/cmdb-init/link_relationship_model.json",
    "content": "{ \"_id\" : { \"$oid\" : \"60a387eb21c8cb7a12e4e776\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T01:24:59.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T01:24:59.000+0800\" }, \"code\" : 2, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60a387eb21c8cb7a12e4e774\" }, \"field2\" : { \"$oid\" : \"60a387eb21c8cb7a12e4e775\" }, \"model1\" : { \"$oid\" : \"5e5dd8a4c67c39b406648c66\" }, \"model2\" : { \"$oid\" : \"5e5dd938c67c39b406648c7e\" } }\n{ \"_id\" : { \"$oid\" : \"60c1d5d4b448426f4ce9749a\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:05:24.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:05:24.000+0800\" }, \"code\" : 8, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60c1d5d4b448426f4ce97498\" }, \"field2\" : { \"$oid\" : \"60c1d5d4b448426f4ce97499\" }, \"model1\" : { \"$oid\" : \"5e5dd36fc67c39b406648c4b\" }, \"model2\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6a\" } }\n{ \"_id\" : { \"$oid\" : \"60c1d769b448426f4ce9749d\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:12:09.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:12:09.000+0800\" }, \"code\" : 9, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60c1d769b448426f4ce9749b\" }, \"field2\" : { \"$oid\" : \"60c1d769b448426f4ce9749c\" }, \"model1\" : { \"$oid\" : \"5e5dd3bcc67c39b406648c4f\" }, \"model2\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6a\" } }\n{ \"_id\" : { \"$oid\" : \"60c1d861b448426f4ce974a0\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:16:17.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:16:17.000+0800\" }, \"code\" : 10, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60c1d861b448426f4ce9749e\" }, \"field2\" : { \"$oid\" : \"60c1d861b448426f4ce9749f\" }, \"model1\" : { \"$oid\" : \"5e5dd41ec67c39b406648c53\" }, \"model2\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6a\" } }\n{ \"_id\" : { \"$oid\" : \"60c1d929b448426f4ce974a3\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:19:37.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:19:37.000+0800\" }, \"code\" : 11, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60c1d929b448426f4ce974a1\" }, \"field2\" : { \"$oid\" : \"60c1d929b448426f4ce974a2\" }, \"model1\" : { \"$oid\" : \"5e5dd41ec67c39b406648c53\" }, \"model2\" : { \"$oid\" : \"5e7de92b382121e5a2655f59\" } }\n{ \"_id\" : { \"$oid\" : \"60c1ee6c9a0f2beec053b726\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:50:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:50:20.000+0800\" }, \"code\" : 15, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60c1ee6c9a0f2beec053b724\" }, \"field2\" : { \"$oid\" : \"60c1ee6c9a0f2beec053b725\" }, \"model1\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6a\" }, \"model2\" : { \"$oid\" : \"5e5dd938c67c39b406648c7e\" } }\n{ \"_id\" : { \"$oid\" : \"60c1eeb49a0f2beec053b729\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:51:32.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:51:32.000+0800\" }, \"code\" : 16, \"name\" : \"\", \"field1\" : { \"$oid\" : \"60c1eeb49a0f2beec053b727\" }, \"field2\" : { \"$oid\" : \"60c1eeb49a0f2beec053b728\" }, \"model1\" : { \"$oid\" : \"5e5dd8e3c67c39b406648c6e\" }, \"model2\" : { \"$oid\" : \"5e5dd938c67c39b406648c7e\" } }\n{ \"_id\" : { \"$oid\" : \"60c1f3ad9a0f2beec053b730\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:12:45.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:12:45.000+0800\" }, \"code\" : 18, \"name\" : \"部门-员工\", \"field1\" : { \"$oid\" : \"60c1f3ad9a0f2beec053b72e\" }, \"field2\" : { \"$oid\" : \"60c1f3ad9a0f2beec053b72f\" }, \"model1\" : { \"$oid\" : \"5e5dd90dc67c39b406648c76\" }, \"model2\" : { \"$oid\" : \"5e5dd938c67c39b406648c7e\" } }\n{ \"_id\" : { \"$oid\" : \"60c1f3ed02437c69b353b726\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:13:49.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:13:49.000+0800\" }, \"code\" : 19, \"name\" : \"小组-员工\", \"field1\" : { \"$oid\" : \"60c1f3ed02437c69b353b724\" }, \"field2\" : { \"$oid\" : \"60c1f3ed02437c69b353b725\" }, \"model1\" : { \"$oid\" : \"5e5dd924c67c39b406648c7a\" }, \"model2\" : { \"$oid\" : \"5e5dd938c67c39b406648c7e\" } }\n"
  },
  {
    "path": "install/init/cmdb-init/model_field.json",
    "content": "{ \"_id\" : { \"$oid\" : \"5e5dd2a8c67c39b406648c36\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:20.517+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:44:40.184+0800\" }, \"code\" : \"PUBLIC_CLOUD_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"PUBLIC_CLOUD\", \"field_group_code\" : \"PUBLIC_CLOUD_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd2c4c67c39b406648c3a\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:20.781+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:08.085+0800\" }, \"code\" : \"CLOUD_REGION_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_REGION\", \"field_group_code\" : \"CLOUD_REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd2eac67c39b406648c3e\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:21.052+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:46.164+0800\" }, \"code\" : \"CLOUD_AZ_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_AZ\", \"field_group_code\" : \"CLOUD_AZ_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd310c67c39b406648c42\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:21.332+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:24.087+0800\" }, \"code\" : \"IDC_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd32dc67c39b406648c46\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:21.623+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:53.424+0800\" }, \"code\" : \"REGION_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"REGION\", \"field_group_code\" : \"REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd343c67c39b406648c4a\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:21.913+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:15.350+0800\" }, \"code\" : \"RACK_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd3bcc67c39b406648c52\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.214+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:49:16.397+0800\" }, \"code\" : \"VIRTUAL_SERVER_name\", \"name\" : \"唯一标识\", \"attribute\" : { \"用户提示\" : \"请输入实例名称\", \"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd41ec67c39b406648c56\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:22.722+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:50:54.775+0800\" }, \"code\" : \"CLOUD_SERVER_name\", \"name\" : \"唯一标识\", \"attribute\" : { \"用户提示\" : \"请输入实例名称\", \"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd7e6c67c39b406648c5e\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:22.992+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:02.062+0800\" }, \"code\" : \"ROUTER_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd802c67c39b406648c62\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:23.292+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:30.587+0800\" }, \"code\" : \"SWITCH_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd8a4c67c39b406648c69\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:20:34.102+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:12.298+0800\" }, \"code\" : \"BUSINESS_name\", \"name\" : \"唯一标识\", \"attribute\" : { \"用户提示\" : \"请输入业务名称\", \"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"BUSINESS\", \"field_group_code\" : \"BUSINESS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6d\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:32:54.755+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:51.927+0800\" }, \"code\" : \"APPLICATION_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd8e3c67c39b406648c71\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:33:38.359+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:15.351+0800\" }, \"code\" : \"SERVICE_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd8f7c67c39b406648c75\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:06:06.594+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:35.081+0800\" }, \"code\" : \"COMPANY_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"COMPANY\", \"field_group_code\" : \"COMPANY_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd90dc67c39b406648c79\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:56:38.313+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:57.770+0800\" }, \"code\" : \"DEPARTMENT_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"DEPARTMENT\", \"field_group_code\" : \"DEPARTMENT_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd924c67c39b406648c7d\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:00:17.766+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:20.611+0800\" }, \"code\" : \"GROUP_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"GROUP\", \"field_group_code\" : \"GROUP_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd938c67c39b406648c81\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:35:42.517+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:40.846+0800\" }, \"code\" : \"STAFF_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dda13c67c39b406648c82\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:20:34.260+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:16:19.258+0800\" }, \"code\" : \"BUSINESS_ID\", \"name\" : \"业务ID\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入业务ID，必须唯一。\" }, \"index\" : 3, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"BUSINESS\", \"field_group_code\" : \"BUSINESS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dda6ac67c39b406648c83\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:20:34.331+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:17:46.801+0800\" }, \"code\" : \"BUSINESS_STATUS\", \"name\" : \"运营状态\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"选择业务运营状态\", \"选项\" : [ { \"id\" : \"已上线\", \"name\" : \"已上线\" }, { \"id\" : \"已下线\", \"name\" : \"已下线\" } ] }, \"index\" : 4, \"type_name\" : \"dropDown\", \"model_code\" : \"BUSINESS\", \"field_group_code\" : \"BUSINESS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dda87c67c39b406648c84\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:20:34.186+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:18:15.967+0800\" }, \"code\" : \"BUSINESS_COMMENT\", \"name\" : \"备注\", \"attribute\" : { \"关系类型\" : \"1\", \"富文本\" : \"业务简介\\n\", \"用户提示\" : \"请输入业务备注信息\" }, \"index\" : 2, \"type_name\" : \"richText\", \"model_code\" : \"BUSINESS\", \"field_group_code\" : \"BUSINESS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"not_null\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddabbc67c39b406648c85\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:32:54.877+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:19:07.403+0800\" }, \"code\" : \"APPLICATION_ID\", \"name\" : \"应用ID\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"应用ID\" }, \"index\" : 2, \"type_name\" : \"str\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddb09c67c39b406648c86\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:32:54.938+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:20:25.249+0800\" }, \"code\" : \"APPLICATION_STATUS\", \"name\" : \"运行状态\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"选择运行状态\", \"选项\" : [ { \"id\" : \"运行中\", \"name\" : \"运行中\" }, { \"id\" : \"已下线\", \"name\" : \"已下线\" }, { \"id\" : \"待下线\", \"name\" : \"待下线\" } ] }, \"index\" : 3, \"type_name\" : \"dropDown\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddb94c67c39b406648c88\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:33:38.512+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:22:44.905+0800\" }, \"code\" : \"SERVICE_PORT\", \"name\" : \"服务端口\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"服务端口\" }, \"index\" : 3, \"type_name\" : \"int\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddbabc67c39b406648c89\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:33:38.582+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:23:07.067+0800\" }, \"code\" : \"SERVICE_CLUSTER_IP\", \"name\" : \"集群IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"集群IP\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddbc8c67c39b406648c8a\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:33:38.445+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:23:36.811+0800\" }, \"code\" : \"SERVICE_COMMENT\", \"name\" : \"备注\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"服务简介\" }, \"index\" : 2, \"type_name\" : \"richText\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"not_null\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddc26c67c39b406648c8c\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:43:44.511+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:25:10.882+0800\" }, \"code\" : \"COMPANY_FULL_NAME\", \"name\" : \"企业全称\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"企业全称\" }, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"COMPANY\", \"field_group_code\" : \"COMPANY_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddc74c67c39b406648c8d\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:43:35.823+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:26:28.593+0800\" }, \"code\" : \"COMPANY_COMMENT\", \"name\" : \"备注\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"公司简介\" }, \"index\" : 3, \"type_name\" : \"richText\", \"model_code\" : \"COMPANY\", \"field_group_code\" : \"COMPANY_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"not_null\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddd63c67c39b406648c92\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:52.300+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:30:27.837+0800\" }, \"code\" : \"REGION_IN_IDC\", \"name\" : \"所属机房\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"IDC\" }, \"index\" : 4, \"type_name\" : \"引用\", \"model_code\" : \"REGION\", \"field_group_code\" : \"REGION_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddd8ac67c39b406648c93\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:24:17.006+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:31:06.653+0800\" }, \"code\" : \"RACK_IN_REGION\", \"name\" : \"所属区域\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"REGION\" }, \"index\" : 6, \"type_name\" : \"引用\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dddb2c67c39b406648c94\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.612+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:31:46.793+0800\" }, \"code\" : \"SERVER_IN_RACK\", \"name\" : \"所属机柜\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"RACK\" }, \"index\" : 6, \"type_name\" : \"引用\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5ddddcc67c39b406648c95\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.521+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:32:28.405+0800\" }, \"code\" : \"VIRTUAL_SERVER_IN_SERVER\", \"name\" : \"宿主机\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"SERVER\", \"引用标签\" : \"\" }, \"index\" : 5, \"type_name\" : \"引用\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dde00c67c39b406648c96\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:22:41.792+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:33:04.217+0800\" }, \"code\" : \"CLOUD_SERVER_IN_AZ\", \"name\" : \"可用区\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"CLOUD_AZ\" }, \"index\" : 7, \"type_name\" : \"引用\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5df03a4297919cd8a1da4e\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:07.816+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:50:50.072+0800\" }, \"code\" : \"IDC_ID\", \"name\" : \"机房编号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"机房编号\" }, \"index\" : 2, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5df04f4297919cd8a1da4f\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:10.676+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:51:11.921+0800\" }, \"code\" : \"IDC_CALL_NUMBER\", \"name\" : \"值班电话\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"值班电话\" }, \"index\" : 3, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5df0624297919cd8a1da50\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:14.049+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:51:30.312+0800\" }, \"code\" : \"IDC_EMAIL\", \"name\" : \"值班邮箱\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"值班邮箱\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5df0754297919cd8a1da51\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:16.869+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:51:49.910+0800\" }, \"code\" : \"IDC_ADDRESS\", \"name\" : \"地址\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"机房地址\" }, \"index\" : 5, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5df0bc4297919cd8a1da53\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:21.478+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:53:00.167+0800\" }, \"code\" : \"IDC_CONTACT_BUSINESS\", \"name\" : \"商务联系人\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"商务联系人\" }, \"index\" : 6, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_联系人属性\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5df0cf4297919cd8a1da54\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:25.349+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T13:53:19.217+0800\" }, \"code\" : \"IDC_CONTACT_SERVICE\", \"name\" : \"客服联系人\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"客服联系人\" }, \"index\" : 7, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_联系人属性\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfca74297919cd8a1da55\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.398+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:43:51.341+0800\" }, \"code\" : \"SERVER_HOSTNAME\", \"name\" : \"主机名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"主机名\" }, \"index\" : 3, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"not_null\" : false }\n{ \"_id\" : { \"$oid\" : \"5e5dfcbe4297919cd8a1da56\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.465+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:44:14.466+0800\" }, \"code\" : \"SERVER_INTERNAL_IP\", \"name\" : \"内网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内网IP\", \"校验规则\" : \"ip\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfcd74297919cd8a1da57\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.529+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:44:39.362+0800\" }, \"code\" : \"SERVER_PUBLIC_IP\", \"name\" : \"公网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"公网IP\" }, \"index\" : 5, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfd2b4297919cd8a1da59\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.753+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:46:03.233+0800\" }, \"code\" : \"SERVER_OS\", \"name\" : \"操作系统\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统\" }, \"index\" : 9, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfd414297919cd8a1da5a\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.889+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:46:25.784+0800\" }, \"code\" : \"SERVER_MEMORY\", \"name\" : \"内存（M）\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"M\", \"用户提示\" : \"内存（M）\" }, \"index\" : 11, \"type_name\" : \"int\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfd644297919cd8a1da5b\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.962+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:47:00.370+0800\" }, \"code\" : \"SERVER_SWAP\", \"name\" : \"SWAP分区（M）\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"SWAP分区（M）\" }, \"index\" : 12, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e5dfd7b4297919cd8a1da5c\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.031+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:47:23.271+0800\" }, \"code\" : \"SERVER_CPU_MODEL\", \"name\" : \"CPU型号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU型号\" }, \"index\" : 13, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e5dfdbf4297919cd8a1da5d\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.101+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:48:31.206+0800\" }, \"code\" : \"SERVER_CPU_ARCH\", \"name\" : \"CPU架构\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU架构\" }, \"index\" : 14, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfe7d4297919cd8a1da5e\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.820+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:51:41.590+0800\" }, \"code\" : \"SERVER_CPU_NUM\", \"name\" : \"CPU数量\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU数量\" }, \"index\" : 10, \"type_name\" : \"int\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfea84297919cd8a1da5f\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.172+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:52:24.642+0800\" }, \"code\" : \"SERVER_OS_FAMILY\", \"name\" : \"操作系统家族\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统家族\" }, \"index\" : 15, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfeba4297919cd8a1da60\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.241+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:52:42.867+0800\" }, \"code\" : \"SERVER_OS_ARCH\", \"name\" : \"操作系统架构\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统架构\" }, \"index\" : 16, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dfecb4297919cd8a1da61\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.383+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:52:59.869+0800\" }, \"code\" : \"SERVER_OS_RELEASE\", \"name\" : \"操作系统版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统版本\" }, \"index\" : 18, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dff1f4297919cd8a1da62\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.460+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:54:23.809+0800\" }, \"code\" : \"SERVER_KERNEL_RELEASE\", \"name\" : \"内核发布版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内核发布版本\" }, \"index\" : 19, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dff344297919cd8a1da63\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.310+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:54:44.062+0800\" }, \"code\" : \"SERVER_BIOS_RELEASEDATA\", \"name\" : \"BIOS发布日期\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"BIOS发布日期\" }, \"index\" : 17, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dff44d14fb0d1cea1da4e\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.530+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:55:00.299+0800\" }, \"code\" : \"SERVER_BIOS_VERSION\", \"name\" : \"BIOS版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"BIOS版本\" }, \"index\" : 20, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_系统属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e000f4297919cd8a1da65\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.602+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:58:23.579+0800\" }, \"code\" : \"SERVER_AGENT_VERSION\", \"name\" : \"Agent版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Agent版本\" }, \"index\" : 21, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e00284297919cd8a1da66\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.678+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:58:48.466+0800\" }, \"code\" : \"SERVER_AGENT_PATH\", \"name\" : \"Agent路径\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Agent路径\" }, \"index\" : 22, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e00384297919cd8a1da67\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.745+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:59:04.433+0800\" }, \"code\" : \"SERVER_SERIAL_NUMBER\", \"name\" : \"设备序列号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备序列号\" }, \"index\" : 23, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e00484297919cd8a1da68\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.808+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:59:20.446+0800\" }, \"code\" : \"SERVER_PRODUCT_NAME\", \"name\" : \"设备名称\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备名称\" }, \"index\" : 25, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e5e00664297919cd8a1da69\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.880+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T14:59:50.623+0800\" }, \"code\" : \"SERVER_VIRTUAL\", \"name\" : \"虚拟化类型\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"虚拟化类型\" }, \"index\" : 26, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e5e00784297919cd8a1da6a\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.951+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T15:00:08.800+0800\" }, \"code\" : \"SERVER_MANUFACTURER\", \"name\" : \"制造商\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"制造商\" }, \"index\" : 27, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e5e00784297919cd8a1da6c\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:04.951+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T15:00:08.800+0800\" }, \"code\": \"SERVER_GROUP\", \"name\": \"主机分组\", \"attribute\": {\"关系类型\": \"1\", \"rule_id\": \"empty\", \"rule\": {\"id\": \"empty\", \"field_type\": \"str\", \"rule\": {\"re\": \"\"}, \"rule_name\": \"无\"}}, \"index\": 29, \"not_null\": false, \"built_in\": true, \"is_unique\": false, \"type_name\": \"str\", \"model_code\": \"SERVER\", \"field_group_code\": \"SERVER_default\", \"is_relationship_field\": \"\", \"is_display\": true, \"describe\": \"\"}\n{ \"_id\" : { \"$oid\" : \"5e5e518bcd87752d50abd9b9\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:39.902+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T20:46:03.395+0800\" }, \"code\" : \"REGION_ID\", \"name\" : \"编号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"编号\" }, \"index\" : 2, \"type_name\" : \"str\", \"model_code\" : \"REGION\", \"field_group_code\" : \"REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e51c5cd87752d50abd9ba\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:23:43.131+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T20:47:01.972+0800\" }, \"code\" : \"REGION_TYPE\", \"name\" : \"类型\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"区域类型\", \"选项\" : [ { \"id\" : \"公共区域\", \"name\" : \"公共区域\" }, { \"id\" : \"独立区域\", \"name\" : \"独立区域\" } ] }, \"index\" : 3, \"type_name\" : \"dropDown\", \"model_code\" : \"REGION\", \"field_group_code\" : \"REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e5606cd87752d50abd9bc\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:24:02.679+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T21:05:10.757+0800\" }, \"code\" : \"RACK_ID\", \"name\" : \"编号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"机柜编号\" }, \"index\" : 2, \"type_name\" : \"str\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e561ecd87752d50abd9bd\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:24:11.573+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T21:05:34.035+0800\" }, \"code\" : \"RACK_HEIGHT\", \"name\" : \"高度（U）\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"U\", \"用户提示\" : \"高度（U）\", \"默认值\" : \"42\" }, \"index\" : 5, \"type_name\" : \"int\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e5632cd87752d50abd9be\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:24:05.676+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T21:05:54.762+0800\" }, \"code\" : \"RACK_ELECTRICITY\", \"name\" : \"电流（A）\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"A\", \"用户提示\" : \"电流（A）\" }, \"index\" : 3, \"type_name\" : \"int\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5e565ecd87752d50abd9bf\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:24:08.870+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T21:06:38.933+0800\" }, \"code\" : \"RACK_POWER_TYPE\", \"name\" : \"供电类型\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"供电类型\", \"选项\" : [ { \"id\" : \"单路供电\", \"name\" : \"单路供电\" }, { \"id\" : \"双路供电\", \"name\" : \"双路供电\" } ] }, \"index\" : 4, \"type_name\" : \"dropDown\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6213766cf2d66e5405e382\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.459+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-06T17:10:14.342+0800\" }, \"code\" : \"VIRTUAL_SERVER_PUBLIC_IP\", \"name\" : \"公网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"校验规则\" : \"ip\", \"用户提示\" : \"公网IP\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6215df6cf2d66e5405e384\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:05.016+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-06T17:20:31.033+0800\" }, \"code\" : \"SERVER_AGENT_STATE\", \"name\" : \"Agent状态\", \"attribute\" : { \"关系类型\" : \"1\", \"默认值\" : \"未安装\", \"用户提示\" : \"Agent状态\" }, \"index\" : 29, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6447a2b22e44107c170b17\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:05.081+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:17:22.289+0800\" }, \"code\" : \"SERVER_MONITOR_STATE\", \"name\" : \"监控状态\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"系统自动更新，用户请勿手动修改。\", \"选项\" : [ { \"id\" : \"\", \"name\" : \"\" } ] }, \"index\" : 31, \"type_name\" : \"dropDown\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e644816b22e44107c170b18\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:05.152+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:19:18.889+0800\" }, \"code\" : \"SERVER_HOST_STATE\", \"name\" : \"主机状态\", \"attribute\" : { \"关系类型\" : \"1\", \"选项\" : [ { \"id\" : \"\", \"name\" : \"\" } ] }, \"index\" : 32, \"type_name\" : \"dropDown\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6449ddb22e44107c170b19\" }, \"updated_at\" : { \"$date\" : \"2020-03-08T09:26:53.159+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:26:53.159+0800\" }, \"code\" : \"SPECIAL_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SPECIAL\", \"field_group_code\" : \"\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6449ddb22e44107c170b1b\" }, \"updated_at\" : { \"$date\" : \"2020-03-08T09:26:53.164+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:26:53.164+0800\" }, \"code\" : \"SPECIAL_INTERNAL_IP\", \"name\" : \"内网IP\", \"attribute\" : {}, \"index\" : 3, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SPECIAL\", \"field_group_code\" : \"\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6449ddb22e44107c170b1c\" }, \"updated_at\" : { \"$date\" : \"2020-03-08T09:26:53.166+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:26:53.166+0800\" }, \"code\" : \"SPECIAL_PUBLIC_IP\", \"name\" : \"公网IP\", \"attribute\" : {}, \"index\" : 4, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SPECIAL\", \"field_group_code\" : \"\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6449ddb22e44107c170b1d\" }, \"updated_at\" : { \"$date\" : \"2020-03-08T09:26:53.168+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:26:53.168+0800\" }, \"code\" : \"SPECIAL_CPU_NUM\", \"name\" : \"CPU数量\", \"attribute\" : {}, \"index\" : 5, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SPECIAL\", \"field_group_code\" : \"\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6449ddb22e44107c170b1e\" }, \"updated_at\" : { \"$date\" : \"2020-03-08T09:26:53.171+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:26:53.171+0800\" }, \"code\" : \"SPECIAL_OS\", \"name\" : \"操作系统\", \"attribute\" : {}, \"index\" : 6, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SPECIAL\", \"field_group_code\" : \"\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e6449ddb22e44107c170b1f\" }, \"updated_at\" : { \"$date\" : \"2020-03-08T09:26:53.173+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-08T09:26:53.173+0800\" }, \"code\" : \"SPECIAL_MEMORY\", \"name\" : \"内存\", \"attribute\" : {}, \"index\" : 7, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SPECIAL\", \"field_group_code\" : \"\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733df1027a644d06ad1a4f\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:50.698+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:40:01.208+0800\" }, \"code\" : \"CLOUD_SERVER_HOSTNAME\", \"name\" : \"主机名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"主机名\" }, \"index\" : 5, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733e04027a644d06ad1a50\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:50.523+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:40:20.632+0800\" }, \"code\" : \"CLOUD_SERVER_INTERNAL_IP\", \"name\" : \"内网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内网IP\" }, \"index\" : 2, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733e13027a644d06ad1a51\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:50.754+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:40:35.377+0800\" }, \"code\" : \"CLOUD_SERVER_PUBLIC_IP\", \"name\" : \"公网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"公网IP\" }, \"index\" : 6, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733e3c027a644d06ad1a52\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:50.930+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:41:16.851+0800\" }, \"code\" : \"CLOUD_SERVER_MEMORY\", \"name\" : \"内存（M）\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"M\", \"用户提示\" : \"内存（M）\" }, \"index\" : 11, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733e7f027a644d06ad1a54\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:50.988+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:42:23.950+0800\" }, \"code\" : \"CLOUD_SERVER_SWAP\", \"name\" : \"SWAP分区（M）\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"SWAP分区（M）\", \"单位\" : \"M\" }, \"index\" : 12, \"type_name\" : \"int\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733e8f027a644d06ad1a55\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.046+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:42:39.986+0800\" }, \"code\" : \"CLOUD_SERVER_CPU_MODEL\", \"name\" : \"CPU型号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU型号\" }, \"index\" : 13, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733ea1027a644d06ad1a56\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.106+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:42:57.325+0800\" }, \"code\" : \"CLOUD_SERVER_CPU_ARCH\", \"name\" : \"CPU架构\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU架构\" }, \"index\" : 14, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733eb3027a644d06ad1a57\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.166+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:43:15.576+0800\" }, \"code\" : \"CLOUD_SERVER_CPU_NUM\", \"name\" : \"CPU数量\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU数量\" }, \"index\" : 15, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733ec2027a644d06ad1a58\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.243+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:43:30.297+0800\" }, \"code\" : \"CLOUD_SERVER_OS\", \"name\" : \"操作系统\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统\" }, \"index\" : 16, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733ed7027a644d06ad1a59\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.317+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:43:51.635+0800\" }, \"code\" : \"CLOUD_SERVER_OS_FAMILY\", \"name\" : \"操作系统家族\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统家族\" }, \"index\" : 17, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733ee6027a644d06ad1a5a\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.369+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:44:06.266+0800\" }, \"code\" : \"CLOUD_SERVER_OS_ARCH\", \"name\" : \"操作系统架构\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统架构\" }, \"index\" : 18, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733ef7027a644d06ad1a5b\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.422+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:44:23.084+0800\" }, \"code\" : \"CLOUD_SERVER_OS_RELEASE\", \"name\" : \"操作系统版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统版本\" }, \"index\" : 19, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733f1b6ed5235d6aad1a50\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.473+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:44:59.143+0800\" }, \"code\" : \"CLOUD_SERVER_SELINUX\", \"name\" : \"SELinux状态\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"SELinux状态\", \"选项\" : [ { \"id\" : \"开启\", \"name\" : \"开启\" }, { \"id\" : \"关闭\", \"name\" : \"关闭\" } ] }, \"index\" : 20, \"built_in\" : true, \"type_name\" : \"dropDown\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733f2b027a644d06ad1a5c\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.528+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:45:15.152+0800\" }, \"code\" : \"CLOUD_SERVER_KERNEL_RELEASE\", \"name\" : \"内核发布版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内核发布版本\" }, \"index\" : 21, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733f3b027a644d06ad1a5d\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.588+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:45:31.281+0800\" }, \"code\" : \"CLOUD_SERVER_BIOS_RELEASEDATA\", \"name\" : \"BIOS发布日期\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"BIOS发布日期\" }, \"index\" : 22, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733f4b027a644d06ad1a5e\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.662+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:45:47.885+0800\" }, \"code\" : \"CLOUD_SERVER_BIOS_VERSION\", \"name\" : \"BIOS版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"BIOS版本\" }, \"index\" : 23, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733f6f027a644d06ad1a60\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.776+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:46:23.567+0800\" }, \"code\" : \"CLOUD_SERVER_AGENT_VERSION\", \"name\" : \"Agent版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Agent版本\" }, \"index\" : 25, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e733f7d027a644d06ad1a61\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.829+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:46:37.589+0800\" }, \"code\" : \"CLOUD_SERVER_AGENT_PATH\", \"name\" : \"Agent路径\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Agent路径\" }, \"index\" : 26, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733f8d027a644d06ad1a62\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.882+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:46:53.024+0800\" }, \"code\" : \"CLOUD_SERVER_SERIAL_NUMBER\", \"name\" : \"设备序列号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备序列号\" }, \"index\" : 27, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733f9b027a644d06ad1a63\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.936+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:47:07.777+0800\" }, \"code\" : \"CLOUD_SERVER_PRODUCT_NAME\", \"name\" : \"设备名称\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备名称\" }, \"index\" : 28, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733fab027a644d06ad1a64\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.990+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:47:23.262+0800\" }, \"code\" : \"CLOUD_SERVER_VIRTUAL\", \"name\" : \"虚拟化类型\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"虚拟化类型\" }, \"index\" : 30, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e733fb9027a644d06ad1a65\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:52.043+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:47:37.796+0800\" }, \"code\" : \"CLOUD_SERVER_MANUFACTURER\", \"name\" : \"制造商\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"制造商\" }, \"index\" : 31, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5e753fb9027a644d06ad1a65\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:52.043+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:47:37.796+0800\" }, \"code\": \"CLOUD_SERVER_GROUP\", \"name\": \"主机分组\", \"attribute\": {\"关系类型\": \"1\", \"rule_id\": \"empty\", \"rule\": {\"id\": \"empty\", \"field_type\": \"str\", \"rule\": {\"re\": \"\" }, \"rule_name\": \"无\"}}, \"index\": 36, \"not_null\": false, \"built_in\": true, \"is_unique\": false, \"type_name\": \"str\", \"model_code\": \"CLOUD_SERVER\", \"field_group_code\": \"CLOUD_SERVER_default\", \"is_relationship_field\": \"\", \"is_display\": true, \"describe\": \"\"}\n{ \"_id\" : { \"$oid\" : \"5e73400d027a644d06ad1a66\" }, \"updated_at\" : { \"$date\" : \"2020-10-30T14:49:43.267+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:49:01.102+0800\" }, \"code\" : \"PUBLIC_CLOUD_PROVIDE\", \"name\" : \"云提供商\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"云提供商\", \"选项\" : [ { \"id\" : \"阿里云\", \"name\" : \"阿里云\" }, { \"id\" : \"腾讯云\", \"name\" : \"腾讯云\" }, { \"id\" : \"华为云\", \"name\" : \"华为云\" }, { \"id\" : \"亚马逊云\", \"name\" : \"亚马逊云\" }, { \"name\" : \"金山云\", \"id\" : \"金山云\" } ] }, \"index\" : 2, \"built_in\" : true, \"type_name\" : \"dropDown\", \"model_code\" : \"PUBLIC_CLOUD\", \"field_group_code\" : \"PUBLIC_CLOUD_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e73401c027a644d06ad1a67\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:49:16.063+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:49:16.063+0800\" }, \"code\" : \"PUBLIC_CLOUD_ACCESS_KEY_ID\", \"name\" : \"Access Key ID\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Access Key ID\" }, \"index\" : 3, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"PUBLIC_CLOUD\", \"field_group_code\" : \"PUBLIC_CLOUD_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734029027a644d06ad1a68\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:49:29.577+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:49:29.577+0800\" }, \"code\" : \"PUBLIC_CLOUD_ACCESS_KEY_SECRET\", \"name\" : \"Access Key Secret\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Access Key Secret\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"PUBLIC_CLOUD\", \"field_group_code\" : \"PUBLIC_CLOUD_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734043027a644d06ad1a69\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:49:55.797+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:49:55.797+0800\" }, \"code\" : \"CLOUD_REGION_REGION_ID\", \"name\" : \"区域ID\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"区域ID\" }, \"index\" : 2, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_REGION\", \"field_group_code\" : \"CLOUD_REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734059027a644d06ad1a6a\" }, \"updated_at\" : { \"$date\" : \"2020-03-19T17:50:17.083+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:50:17.083+0800\" }, \"code\" : \"CLOUD_AZ_ID\", \"name\" : \"可用区ID\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"可用区ID\" }, \"index\" : 2, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_AZ\", \"field_group_code\" : \"CLOUD_AZ_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734094027a644d06ad1a6b\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.336+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:51:16.677+0800\" }, \"code\" : \"VIRTUAL_SERVER_HOSTNAME\", \"name\" : \"主机名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"主机名\" }, \"index\" : 2, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e7340a2027a644d06ad1a6c\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.396+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:51:30.138+0800\" }, \"code\" : \"VIRTUAL_SERVER_INTERNAL_IP\", \"name\" : \"内网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内网IP\" }, \"index\" : 3, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e7340c6027a644d06ad1a6e\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.644+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:52:06.344+0800\" }, \"code\" : \"VIRTUAL_SERVER_MEMORY\", \"name\" : \"内存（M）\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"M\", \"用户提示\" : \"内存（M）\" }, \"index\" : 8, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e7340df027a644d06ad1a6f\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.701+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:52:31.324+0800\" }, \"code\" : \"VIRTUAL_SERVER_SWAP\", \"name\" : \"SWAP分区（M）\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"M\", \"用户提示\" : \"SWAP分区（M）\" }, \"index\" : 9, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e7340ee027a644d06ad1a70\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.759+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:52:46.291+0800\" }, \"code\" : \"VIRTUAL_SERVER_CPU_MODEL\", \"name\" : \"CPU型号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU型号\" }, \"index\" : 10, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e7340fb027a644d06ad1a71\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.821+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:52:59.133+0800\" }, \"code\" : \"VIRTUAL_SERVER_CPU_ARCH\", \"name\" : \"CPU架构\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU架构\" }, \"index\" : 11, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734108027a644d06ad1a72\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.880+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:53:12.911+0800\" }, \"code\" : \"VIRTUAL_SERVER_CPU_NUM\", \"name\" : \"CPU数量\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"CPU数量\" }, \"index\" : 12, \"type_name\" : \"int\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734116027a644d06ad1a73\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.945+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:53:26.918+0800\" }, \"code\" : \"VIRTUAL_SERVER_OS\", \"name\" : \"操作系统\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统\" }, \"index\" : 13, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e73412b027a644d06ad1a74\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.007+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:53:47.437+0800\" }, \"code\" : \"VIRTUAL_SERVER_OS_FAMILY\", \"name\" : \"操作系统家族\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统家族\" }, \"index\" : 14, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734139027a644d06ad1a75\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.071+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:54:01.891+0800\" }, \"code\" : \"VIRTUAL_SERVER_OS_ARCH\", \"name\" : \"操作系统架构\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统架构\" }, \"index\" : 15, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e734146027a644d06ad1a76\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.132+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:54:14.967+0800\" }, \"code\" : \"VIRTUAL_SERVER_OS_RELEASE\", \"name\" : \"操作系统版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统版本\" }, \"index\" : 16, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e73416b027a644d06ad1a77\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.201+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T17:54:51.781+0800\" }, \"code\" : \"VIRTUAL_SERVER_SELINUX\", \"name\" : \"SELinux状态\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"SELinux状态\", \"选项\" : [ { \"id\" : \"启用\", \"name\" : \"启用\" }, { \"id\" : \"关闭\", \"name\" : \"关闭\" } ] }, \"index\" : 17, \"type_name\" : \"dropDown\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d2a6bd373f2d19d91b0\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.262+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:53:14.406+0800\" }, \"code\" : \"VIRTUAL_SERVER_KERNEL_RELEASE\", \"name\" : \"内核发布版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内核发布版本\" }, \"index\" : 18, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d396bd373f2d19d91b1\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.324+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:53:29.364+0800\" }, \"code\" : \"VIRTUAL_SERVER_BIOS_RELEASEDATA\", \"name\" : \"BIOS发布日期\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"BIOS发布日期\" }, \"index\" : 19, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d476bd373f2d19d91b2\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.386+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:53:43.094+0800\" }, \"code\" : \"VIRTUAL_SERVER_BIOS_VERSION\", \"name\" : \"BIOS版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"BIOS版本\" }, \"index\" : 20, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d6e6bd373f2d19d91b4\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.447+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:54:22.611+0800\" }, \"code\" : \"VIRTUAL_SERVER_AGENT_VERSION\", \"name\" : \"Agent版本\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Agent版本\" }, \"index\" : 21, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d7c6bd373f2d19d91b5\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.512+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:54:36.745+0800\" }, \"code\" : \"VIRTUAL_SERVER_AGENT_PATH\", \"name\" : \"Agent路径\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"Agent路径\" }, \"index\" : 22, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d896bd373f2d19d91b6\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.579+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:54:49.707+0800\" }, \"code\" : \"VIRTUAL_SERVER_SERIAL_NUMBER\", \"name\" : \"设备序列号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备序列号\" }, \"index\" : 23, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735d966bd373f2d19d91b7\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.647+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:55:02.524+0800\" }, \"code\" : \"VIRTUAL_SERVER_PRODUCT_NAME\", \"name\" : \"设备名称\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备名称\" }, \"index\" : 24, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735da36bd373f2d19d91b8\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.717+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:55:15.321+0800\" }, \"code\" : \"VIRTUAL_SERVER_VIRTUAL\", \"name\" : \"虚拟化类型\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"虚拟化类型\" }, \"index\" : 26, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e735db06bd373f2d19d91b9\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.780+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:55:28.276+0800\" }, \"code\" : \"VIRTUAL_SERVER_MANUFACTURER\", \"name\" : \"制造商\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"制造商\" }, \"index\" : 27, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true }\n{ \"_id\" : { \"$oid\" : \"5e755db06bd373f2d19d91b9\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.780+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-19T19:55:28.276+0800\" }, \"code\": \"VIRTUAL_SERVER_GROUP\", \"name\": \"主机分组\", \"attribute\": {\"关系类型\": \"1\", \"rule_id\": \"empty\", \"rule\": {\"id\": \"empty\", \"field_type\": \"str\", \"rule\": {\"re\": \"\"}, \"rule_name\": \"无\"}}, \"index\": 3, \"not_null\": false, \"built_in\": true, \"is_unique\": false, \"type_name\": \"str\", \"model_code\": \"VIRTUAL_SERVER\", \"field_group_code\": \"VIRTUAL_SERVER_default\", \"is_relationship_field\": \"\", \"is_display\": true, \"describe\": \"\"}\n{ \"_id\" : { \"$oid\" : \"5e74643833bc27fa6dcd50bb\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:22:36.769+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-20T14:35:36.681+0800\" }, \"code\" : \"CLOUD_SERVER_INSTANCE_NAME\", \"name\" : \"实例名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"云主机的实例名称（并非ID）\" }, \"index\" : 3, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e7464d0353727b88fcd50bb\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:22:31.984+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-20T14:38:08.447+0800\" }, \"code\" : \"CLOUD_SERVER_INSTANCE_ID\", \"name\" : \"实例ID\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e74a8ec60ba39478d22c3a4\" }, \"updated_at\" : { \"$date\" : \"2020-11-11T20:20:51.717+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-20T19:28:44.416+0800\" }, \"code\" : \"CLOUD_SERVER_OS_TYPE\", \"name\" : \"操作系统类型\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"操作系统类型\" }, \"index\" : 24, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_系统信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : false }\n{ \"_id\" : { \"$oid\" : \"5ed30b52c21464af965f3714\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:25.844+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:38.647+0800\" }, \"code\" : \"ORACLE_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"ORACLE\", \"field_group_code\" : \"ORACLE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30b63c21464af965f3718\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:26.132+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:55.490+0800\" }, \"code\" : \"MONGODB_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"MONGODB\", \"field_group_code\" : \"MONGODB_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30bd0c21464af965f3720\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:26.412+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:44.635+0800\" }, \"code\" : \"KAFKA_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"KAFKA\", \"field_group_code\" : \"KAFKA_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30bdec21464af965f3724\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:26.680+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:58.040+0800\" }, \"code\" : \"TOMCAT_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"TOMCAT\", \"field_group_code\" : \"TOMCAT_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30bedc21464af965f3728\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:26.964+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:13.805+0800\" }, \"code\" : \"RABBITMQ_name\", \"name\" : \"唯一标识\", \"attribute\" : { \"文本最小长度\" : \"\", \"文本最大长度\" : \"\", \"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"RABBITMQ\", \"field_group_code\" : \"RABBITMQ_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30c07c21464af965f372c\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:27.253+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:39.503+0800\" }, \"code\" : \"NGINX_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"NGINX\", \"field_group_code\" : \"NGINX_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30c14c21464af965f3730\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:27.522+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:52.057+0800\" }, \"code\" : \"APACHE_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"APACHE\", \"field_group_code\" : \"APACHE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed30c3ac21464af965f3734\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:27.781+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:45:30.887+0800\" }, \"code\" : \"REDIS_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"REDIS\", \"field_group_code\" : \"REDIS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed3133e207bedaa415f3712\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:14.648+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:15:26.413+0800\" }, \"code\" : \"SWITCH_HOSTNAME\", \"name\" : \"主机名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"主机名\" }, \"index\" : 3, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5ed31352c21464af965f3741\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:20.698+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:15:46.410+0800\" }, \"code\" : \"SWITCH_INTERNAL_IP\", \"name\" : \"内网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"内网IP\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed31364c21464af965f3742\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:20.701+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:16:04.831+0800\" }, \"code\" : \"SWITCH_PUBLIC_IP\", \"name\" : \"公网IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"公网IP\" }, \"index\" : 5, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed31384c21464af965f3743\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:20.704+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:16:36.063+0800\" }, \"code\" : \"SWITCH_SNMP_COMMUNITY\", \"name\" : \"团体名称\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"团体名称\" }, \"index\" : 6, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed313ccc21464af965f3744\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:14.661+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:17:48.308+0800\" }, \"code\" : \"SWITCH_CPU\", \"name\" : \"CPU\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"个\", \"用户提示\" : \"CPU个数\" }, \"index\" : 7, \"type_name\" : \"int\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed313f3c21464af965f3745\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:14.664+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:18:27.166+0800\" }, \"code\" : \"SWITCH_MEMORY\", \"name\" : \"内存\", \"attribute\" : { \"关系类型\" : \"1\", \"单位\" : \"MB\", \"用户提示\" : \"内存大小\" }, \"index\" : 8, \"type_name\" : \"int\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed3149dc21464af965f3746\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:14.666+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:21:17.394+0800\" }, \"code\" : \"SWITCH_MANFACTURER\", \"name\" : \"设备厂商\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"选择设备厂商\", \"选项\" : [ { \"id\" : \"Cisco\", \"name\" : \"Cisco\" }, { \"id\" : \"H3C\", \"name\" : \"H3C\" }, { \"id\" : \"华为\", \"name\" : \"华为\" }, { \"id\" : \"DELL\", \"name\" : \"DELL\" }, { \"id\" : \"联想\", \"name\" : \"联想\" } ] }, \"index\" : 9, \"type_name\" : \"dropDown\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5ed314cdc21464af965f3747\" }, \"updated_at\" : { \"$date\" : \"2020-05-31T17:27:14.670+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T10:22:05.556+0800\" }, \"code\" : \"SWITCH_DEVICE_TYPE\", \"name\" : \"型号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"设备型号\" }, \"index\" : 10, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : false, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5f85444c1b9045a209a6bcc8\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.265+0800\" }, \"created_at\" : { \"$date\" : \"2020-10-13T14:08:12.544+0800\" }, \"code\" : \"SERVER_name\", \"name\" : \"唯一标识\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入实例名称\", \"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5fb0d3b4106593dae9665f9f\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:32:54.999+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-15T23:07:32.000+0800\" }, \"code\" : \"APPLICATION_IN_BUSINESS\", \"name\" : \"所属业务\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"BUSINESS\" }, \"index\" : 5, \"type_name\" : \"引用\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb0da32106593dae9665fa4\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:33:38.654+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-15T23:35:14.000+0800\" }, \"code\" : \"SERVICE_IN_APPLICATION\", \"name\" : \"所属应用\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"APPLICATION\" }, \"index\" : 5, \"type_name\" : \"引用\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11b5ac3ab246873665fb9\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:47:28.064+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:13:14.000+0800\" }, \"code\" : \"FIREWALL_name\", \"name\" : \"唯一标识\", \"attribute\" : {\"rule_id\": 4, \"rule\": {\"field_type\": \"str\", \"rule_name\": \"仅包含英文字母、数字、下划线、中划线、点\", \"rule\": {\"re\": \"^[\\\\.a-zA-Z0-9_-]*$\"}, \"id\": 4}}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11b76c3ab246873665fba\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:18:51.455+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:13:42.000+0800\" }, \"code\" : \"FIREWALL_HOSTNAME\", \"name\" : \"主机名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入主机名\" }, \"index\" : 2, \"type_name\" : \"str\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11bb1c3ab246873665fbb\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:18:47.720+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:14:41.000+0800\" }, \"code\" : \"FIREWALL_ADMIN_IP\", \"name\" : \"管理IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入管理IP地址\" }, \"index\" : 3, \"type_name\" : \"str\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11bfdc3ab246873665fbc\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:18:44.024+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:15:57.000+0800\" }, \"code\" : \"FIREWALL_REG_ID\", \"name\" : \"资产编号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入资产ID\" }, \"index\" : 4, \"type_name\" : \"str\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11c23c3ab246873665fbd\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:16:35.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:16:35.000+0800\" }, \"code\" : \"FIREWALL_IN_RACK\", \"name\" : \"所属机柜\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"RACK\", \"用户提示\" : \"选择所属机柜\" }, \"index\" : 7, \"type_name\" : \"引用\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"选择所属机柜\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11e84106593dae9665faa\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:26:44.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:26:44.000+0800\" }, \"code\" : \"ROUTER_HOSTNAME\", \"name\" : \"主机名\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入主机名\" }, \"index\" : 3, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5fb11e98106593dae9665fab\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:27:04.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:27:04.000+0800\" }, \"code\" : \"ROUTER_ADMIN_IP\", \"name\" : \"管理IP\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入管理IP\" }, \"index\" : 4, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5fb11ea9106593dae9665fac\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:27:21.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:27:21.000+0800\" }, \"code\" : \"ROUTER_REG_ID\", \"name\" : \"资产编号\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入资产编号\" }, \"index\" : 5, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5fb11efe106593dae9665faf\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:28:46.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:28:46.000+0800\" }, \"code\" : \"ROUTER_IN_RACK\", \"name\" : \"所属机柜\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"RACK\", \"用户提示\" : \"请输入所属机柜\" }, \"index\" : 9, \"type_name\" : \"引用\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"请输入所属机柜\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5fb11f25106593dae9665fb0\" }, \"updated_at\" : { \"$date\" : \"2020-11-16T04:29:25.000+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:29:25.000+0800\" }, \"code\" : \"SWITCH_IN_RACK\", \"name\" : \"所属机柜\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"RACK\", \"用户提示\" : \"请选择所属机柜\" }, \"index\" : 12, \"type_name\" : \"引用\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"请选择所属机柜\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1801d71ad003424dda\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:20.000+0800\" }, \"code\" : \"PUBLIC_CLOUD_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"PUBLIC_CLOUD\", \"field_group_code\" : \"PUBLIC_CLOUD_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1801d71ad003424ddb\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:20.000+0800\" }, \"code\" : \"CLOUD_REGION_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_REGION\", \"field_group_code\" : \"CLOUD_REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1901d71ad003424ddc\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:21.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:21.000+0800\" }, \"code\" : \"CLOUD_AZ_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_AZ\", \"field_group_code\" : \"CLOUD_AZ_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1901d71ad003424ddd\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:21.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:21.000+0800\" }, \"code\" : \"IDC_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"IDC\", \"field_group_code\" : \"IDC_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1901d71ad003424dde\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:21.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:21.000+0800\" }, \"code\" : \"REGION_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"REGION\", \"field_group_code\" : \"REGION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a37f1a01d71ad003424ddf\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:22.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:22.000+0800\" }, \"code\" : \"RACK_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"RACK\", \"field_group_code\" : \"RACK_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1a01d71ad003424de0\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:03.333+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:22.000+0800\" }, \"code\" : \"SERVER_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1a01d71ad003424de1\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:49.274+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:22.000+0800\" }, \"code\" : \"VIRTUAL_SERVER_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1a01d71ad003424de2\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:48:39.343+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:22.000+0800\" }, \"code\" : \"CLOUD_SERVER_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1b01d71ad003424de3\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:23.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:23.000+0800\" }, \"code\" : \"ROUTER_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1b01d71ad003424de4\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:23.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:23.000+0800\" }, \"code\" : \"SWITCH_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1b01d71ad003424de5\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:20:34.029+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:23.000+0800\" }, \"code\" : \"BUSINESS_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"BUSINESS\", \"field_group_code\" : \"BUSINESS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1c01d71ad003424de6\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:32:54.695+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:23.000+0800\" }, \"code\" : \"APPLICATION_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1c01d71ad003424de7\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:33:38.279+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:24.000+0800\" }, \"code\" : \"SERVICE_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1c01d71ad003424de8\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:06:06.513+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:24.000+0800\" }, \"code\" : \"COMPANY_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"COMPANY\", \"field_group_code\" : \"COMPANY_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1c01d71ad003424de9\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T16:56:41.881+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:24.000+0800\" }, \"code\" : \"DEPARTMENT_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"DEPARTMENT\", \"field_group_code\" : \"DEPARTMENT_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1d01d71ad003424dea\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:00:17.842+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:25.000+0800\" }, \"code\" : \"GROUP_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"GROUP\", \"field_group_code\" : \"GROUP_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1d01d71ad003424deb\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:35:42.648+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:25.000+0800\" }, \"code\" : \"STAFF_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1e01d71ad003424ded\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:25.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:25.000+0800\" }, \"code\" : \"ORACLE_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"ORACLE\", \"field_group_code\" : \"ORACLE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1e01d71ad003424dee\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:26.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:26.000+0800\" }, \"code\" : \"MONGODB_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"MONGODB\", \"field_group_code\" : \"MONGODB_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1e01d71ad003424def\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:26.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:26.000+0800\" }, \"code\" : \"KAFKA_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"KAFKA\", \"field_group_code\" : \"KAFKA_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1e01d71ad003424df0\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:26.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:26.000+0800\" }, \"code\" : \"TOMCAT_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"TOMCAT\", \"field_group_code\" : \"TOMCAT_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1f01d71ad003424df1\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"code\" : \"RABBITMQ_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"RABBITMQ\", \"field_group_code\" : \"RABBITMQ_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1f01d71ad003424df2\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"code\" : \"NGINX_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"NGINX\", \"field_group_code\" : \"NGINX_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1f01d71ad003424df3\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"code\" : \"APACHE_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 2, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"APACHE\", \"field_group_code\" : \"APACHE_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f1f01d71ad003424df4\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:27.000+0800\" }, \"code\" : \"REDIS_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"REDIS\", \"field_group_code\" : \"REDIS_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a37f2001d71ad003424df5\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T00:47:28.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T00:47:28.000+0800\" }, \"code\" : \"FIREWALL_VISIBLE_NAME\", \"name\" : \"名称\", \"attribute\" : {}, \"index\" : 1, \"not_null\" : true, \"type_name\" : \"str\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a3821121c8cb7a12e4e770\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:00:17.915+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T01:00:01.000+0800\" }, \"code\" : \"GROUP_IN_DEPARTMENT\", \"name\" : \"所属部门\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"DEPARTMENT\" }, \"index\" : 3, \"type_name\" : \"引用\", \"model_code\" : \"GROUP\", \"field_group_code\" : \"GROUP_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\", \"not_null\" : true, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60a387eb21c8cb7a12e4e774\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T01:24:59.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T01:24:59.000+0800\" }, \"code\" : \"BUSINESS_STAFF_MANAGER\", \"name\" : \"业务负责人\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"BUSINESS_name\", \"关系类型\" : \"2\", \"引用标签\" : \"\", \"引用模型\" : \"STAFF\" }, \"index\" : 5, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"BUSINESS\", \"field_group_code\" : \"BUSINESS_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a387eb21c8cb7a12e4e775\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:35:42.969+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T01:24:59.000+0800\" }, \"code\" : \"STAFF_BUSINESS_MANAGER\", \"name\" : \"所负责的业务\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"STAFF_name\", \"引用模型\" : \"BUSINESS\", \"关系类型\" : \"2\", \"引用标签\" : \"\" }, \"index\" : 21, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a3882d21c8cb7a12e4e777\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:32:54.818+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T01:26:05.000+0800\" }, \"code\" : \"APPLICATION_COMMENT\", \"name\" : \"备注\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 4, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a3901b21c8cb7a12e4e788\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:01:05.237+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T01:59:55.000+0800\" }, \"code\" : \"SERVER_CONTROLLER_NAME\", \"name\" : \"控制器名称\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 33, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a3904b21c8cb7a12e4e789\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T18:00:50.848+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T02:00:43.000+0800\" }, \"code\" : \"VIRTUAL_SERVER_CONTROLLER_NAME\", \"name\" : \"控制器名称\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 28, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a3907921c8cb7a12e4e78a\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T02:01:29.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T02:01:29.000+0800\" }, \"code\" : \"VIRTUAL_SERVER_AGENT_STATE\", \"name\" : \"Agent状态\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 29, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a390ac21c8cb7a12e4e78b\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T02:02:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T02:02:20.000+0800\" }, \"code\" : \"CLOUD_SERVER_AGENT_STATE\", \"name\" : \"Agent状态\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 32, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60a390d721c8cb7a12e4e78c\" }, \"updated_at\" : { \"$date\" : \"2021-05-19T02:03:03.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-05-19T02:03:03.000+0800\" }, \"code\" : \"CLOUD_SERVER_CONTROLLER_NAME\", \"name\" : \"控制器名称\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 33, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_设备信息（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c091911919e94be11801c6\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:01:53.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:01:53.000+0800\" }, \"code\" : \"SERVER_START_U\", \"name\" : \"起始U位\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入起始U位\" }, \"index\" : 34, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c091b4a9a24d1f731801c3\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:02:28.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:02:28.000+0800\" }, \"code\" : \"SWITCH_START_U\", \"name\" : \"起始U位\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入起始U位\" }, \"index\" : 10, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c091cd1919e94be11801c7\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:02:53.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:02:53.000+0800\" }, \"code\" : \"FIREWALL_START_U\", \"name\" : \"起始U位\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入起始U位\" }, \"index\" : 5, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c091ff8253b8e0821801c3\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:03:43.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:03:43.000+0800\" }, \"code\" : \"FIREWALL_OCCUPATION_U\", \"name\" : \"占用U数\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入设备占用的U数\", \"默认值\" : \"2\" }, \"index\" : 6, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"FIREWALL\", \"field_group_code\" : \"FIREWALL_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c09216a9a24d1f731801c4\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:04:06.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:04:06.000+0800\" }, \"code\" : \"SWITCH_OCCUPATION_U\", \"name\" : \"占用U数\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入设备占用的U数\", \"默认值\" : \"2\" }, \"index\" : 11, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"SWITCH\", \"field_group_code\" : \"SWITCH_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c092351919e94be11801c8\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:04:37.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:04:37.000+0800\" }, \"code\" : \"SERVER_OCCUPATION_U\", \"name\" : \"占用U数\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入设备占用的U数\", \"默认值\" : \"2\" }, \"index\" : 35, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_设备属性（自动采集）\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c092641919e94be11801c9\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:05:24.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:05:24.000+0800\" }, \"code\" : \"ROUTER_OCCUPATION_U\", \"name\" : \"占用U数\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入设备占用的U数\", \"默认值\" : \"2\" }, \"index\" : 7, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c0927c1919e94be11801ca\" }, \"updated_at\" : { \"$date\" : \"2021-06-10T02:05:48.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-10T02:05:48.000+0800\" }, \"code\" : \"ROUTER_START_U\", \"name\" : \"起始U位\", \"attribute\" : { \"关系类型\" : \"1\", \"用户提示\" : \"请输入起始U位\" }, \"index\" : 8, \"not_null\" : true, \"built_in\" : true, \"type_name\" : \"int\", \"model_code\" : \"ROUTER\", \"field_group_code\" : \"ROUTER_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1d5d4b448426f4ce97498\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:05:24.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:05:24.000+0800\" }, \"code\" : \"SERVER_IN_APPLICATION\", \"name\" : \"所属应用\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"SERVER_name\", \"关系类型\" : \"2\", \"引用标签\" : \"\", \"引用模型\" : \"APPLICATION\" }, \"index\" : 8, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"SERVER\", \"field_group_code\" : \"SERVER_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1d5d4b448426f4ce97499\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:05:24.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:05:24.000+0800\" }, \"code\" : \"APPLICATION_IN_SERVER\", \"name\" : \"所关联物理机\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"APPLICATION_name\", \"引用模型\" : \"SERVER\", \"关系类型\" : \"2\", \"引用标签\" : \"\" }, \"index\" : 13, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1d769b448426f4ce9749b\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:12:09.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:12:09.000+0800\" }, \"code\" : \"VIRTUAL_SERVER_IN_APPLICATION\", \"name\" : \"所属应用\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"VIRTUAL_SERVER_name\", \"关系类型\" : \"2\", \"引用标签\" : \"\", \"引用模型\" : \"APPLICATION\" }, \"index\" : 7, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"VIRTUAL_SERVER\", \"field_group_code\" : \"VIRTUAL_SERVER_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1d769b448426f4ce9749c\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:12:09.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:12:09.000+0800\" }, \"code\" : \"APPLICATION_IN_VIRTUAL_SERVER\", \"name\" : \"所关联虚拟机\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"APPLICATION_name\", \"引用模型\" : \"VIRTUAL_SERVER\", \"关系类型\" : \"2\", \"引用标签\" : \"\" }, \"index\" : 14, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1d861b448426f4ce9749e\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:16:17.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:16:17.000+0800\" }, \"code\" : \"CLOUD_SERVER_IN_APPLICATION\", \"name\" : \"所属应用\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"CLOUD_SERVER_name\", \"关系类型\" : \"2\", \"引用标签\" : \"\", \"引用模型\" : \"APPLICATION\" }, \"index\" : 10, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"CLOUD_SERVER\", \"field_group_code\" : \"CLOUD_SERVER_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1d861b448426f4ce9749f\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:16:17.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:16:17.000+0800\" }, \"code\" : \"APPLICATION_IN_CLOUD_SERVER\", \"name\" : \"所关联云主机\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"APPLICATION_name\", \"引用模型\" : \"CLOUD_SERVER\", \"关系类型\" : \"2\", \"引用标签\" : \"\" }, \"index\" : 15, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1dbfd34d3ac3d51e97497\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:31:41.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:31:41.000+0800\" }, \"code\" : \"CLOUD_REGION_IN_PUBLIC_CLOUD\", \"name\" : \"所属公有云\", \"attribute\" : { \"关系类型\" : \"1\", \"默认值\" : \"\", \"引用模型\" : \"PUBLIC_CLOUD\" }, \"index\" : 4, \"type_name\" : \"引用\", \"model_code\" : \"CLOUD_REGION\", \"field_group_code\" : \"CLOUD_REGION_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60c1df0c34d3ac3d51e97499\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T01:44:44.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T01:44:44.000+0800\" }, \"code\" : \"CLOUD_AZ_IN_CLOUD_REGION\", \"name\" : \"所属云区域\", \"attribute\" : { \"关系类型\" : \"1\", \"默认值\" : \"\", \"引用模型\" : \"CLOUD_REGION\" }, \"index\" : 4, \"type_name\" : \"引用\", \"model_code\" : \"CLOUD_AZ\", \"field_group_code\" : \"CLOUD_AZ_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60c1e8024241e44fe4e974b6\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:22:58.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:22:58.000+0800\" }, \"code\" : \"DEPARTMENT_IN_COMPANY\", \"name\" : \"所属公司\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"COMPANY\" }, \"index\" : 3, \"type_name\" : \"引用\", \"model_code\" : \"DEPARTMENT\", \"field_group_code\" : \"DEPARTMENT_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\", \"not_null\" : false, \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"60c1e8524241e44fe4e974b7\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:24:18.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:24:18.000+0800\" }, \"code\" : \"STAFF_CH_NAME\", \"name\" : \"中文名\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 10, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1e8674241e44fe4e974b8\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:24:39.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:24:39.000+0800\" }, \"code\" : \"STAFF_PHONE\", \"name\" : \"手机号\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 13, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1e87d4241e44fe4e974b9\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:25:01.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:25:01.000+0800\" }, \"code\" : \"STAFF_EMAIL\", \"name\" : \"电子邮箱\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 17, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1e8904241e44fe4e974ba\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:25:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:25:20.000+0800\" }, \"code\" : \"STAFF_COMMENT\", \"name\" : \"描述\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 18, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1e8a7af768ffa10e9749a\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:25:43.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:25:43.000+0800\" }, \"code\" : \"STAFF_ROLE\", \"name\" : \"角色\", \"attribute\" : { \"关系类型\" : \"1\" }, \"index\" : 19, \"built_in\" : true, \"type_name\" : \"str\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_default\", \"is_relationship_field\" : \"\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1ee6c9a0f2beec053b724\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:50:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:50:20.000+0800\" }, \"code\" : \"APPLICATION_STAFF_MANAGER\", \"name\" : \"应用负责人\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"APPLICATION_name\", \"关系类型\" : \"2\", \"引用标签\" : \"\", \"引用模型\" : \"STAFF\" }, \"index\" : 16, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"APPLICATION\", \"field_group_code\" : \"APPLICATION_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1ee6c9a0f2beec053b725\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:50:20.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:50:20.000+0800\" }, \"code\" : \"STAFF_APPLICATION_MANAGER\", \"name\" : \"负责应用\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"STAFF_name\", \"引用模型\" : \"APPLICATION\", \"关系类型\" : \"2\" }, \"index\" : 23, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1eeb49a0f2beec053b727\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:51:32.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:51:32.000+0800\" }, \"code\" : \"SERVICE_STAFF_MANAGER\", \"name\" : \"服务负责人\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"SERVICE_name\", \"关系类型\" : \"2\", \"引用标签\" : \"\", \"引用模型\" : \"STAFF\" }, \"index\" : 6, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"SERVICE\", \"field_group_code\" : \"SERVICE_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1eeb49a0f2beec053b728\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T02:51:32.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T02:51:32.000+0800\" }, \"code\" : \"STAFF_SERVICE_MANAGER\", \"name\" : \"负责服务\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"STAFF_name\", \"引用模型\" : \"SERVICE\", \"关系类型\" : \"2\" }, \"index\" : 24, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1f2ad9a0f2beec053b72d\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:08:29.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:08:29.000+0800\" }, \"code\" : \"STAFF_GROUP_IN\", \"name\" : \"所属小组\", \"attribute\" : { \"关系类型\" : \"1\", \"引用模型\" : \"GROUP\" }, \"index\" : 20, \"type_name\" : \"引用\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_relationship\", \"is_relationship_field\" : \"1\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1f3ad9a0f2beec053b72e\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:12:45.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:12:45.000+0800\" }, \"code\" : \"DEPARTMENT_MANAGER\", \"name\" : \"部门负责人\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"DEPARTMENT_name\", \"关系类型\" : \"2\", \"引用标签\" : \"部门-员工\", \"引用模型\" : \"STAFF\" }, \"index\" : 4, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"DEPARTMENT\", \"field_group_code\" : \"DEPARTMENT_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1f3ad9a0f2beec053b72f\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:12:45.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:12:45.000+0800\" }, \"code\" : \"STAFF_ADMIN_DEPARTMENT\", \"name\" : \"管理的部门\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"STAFF_name\", \"引用模型\" : \"DEPARTMENT\", \"关系类型\" : \"2\", \"引用标签\" : \"部门-员工\" }, \"index\" : 26, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1f3ed02437c69b353b724\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:13:49.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:13:49.000+0800\" }, \"code\" : \"GROUP_MANAGER\", \"name\" : \"小组负责人\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"GROUP_name\", \"关系类型\" : \"2\", \"引用标签\" : \"小组-员工\", \"引用模型\" : \"STAFF\" }, \"index\" : 4, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"GROUP\", \"field_group_code\" : \"GROUP_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"60c1f3ed02437c69b353b725\" }, \"updated_at\" : { \"$date\" : \"2021-06-11T03:13:49.000+0800\" }, \"created_at\" : { \"$date\" : \"2021-06-11T03:13:49.000+0800\" }, \"code\" : \"STAFF_ADMIN_GROUP\", \"name\" : \"管理的小组\", \"attribute\" : { \"constraint\" : 2, \"show_field\" : \"STAFF_name\", \"引用模型\" : \"GROUP\", \"关系类型\" : \"2\" }, \"index\" : 27, \"not_null\" : false, \"built_in\" : true, \"type_name\" : \"引用\", \"model_code\" : \"STAFF\", \"field_group_code\" : \"STAFF_relationship\", \"is_relationship_field\" : \"2\", \"is_display\" : true, \"describe\" : \"\" }\n"
  },
  {
    "path": "install/init/cmdb-init/model_group.json",
    "content": "{ \"_id\" : { \"$oid\" : \"5e5dc968eca2e38b9a648c1f\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:05:12.877+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:05:12.877+0800\" }, \"code\" : \"HOST\", \"name\" : \"主机\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dc976c67c39b406648c20\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:05:26.688+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:05:26.688+0800\" }, \"code\" : \"IDC\", \"name\" : \"数据中心\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dc98fc67c39b406648c21\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:21:03.194+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:05:51.118+0800\" }, \"code\" : \"CLOUD\", \"name\" : \"公有云\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dc99dc67c39b406648c22\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:06:05.092+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:06:05.092+0800\" }, \"code\" : \"NETWORK\", \"name\" : \"网络设备\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dc9bcc67c39b406648c24\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:06:36.921+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:06:36.921+0800\" }, \"code\" : \"DATABASE\", \"name\" : \"数据库\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dc9fac67c39b406648c25\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:07:38.471+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:07:38.471+0800\" }, \"code\" : \"MIDDLEWARE\", \"name\" : \"中间件\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dca11c67c39b406648c26\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T11:08:01.132+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:08:01.133+0800\" }, \"code\" : \"WEB\", \"name\" : \"WEB服务器\", \"model_type\" : \"zc\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd848c67c39b406648c64\" }, \"updated_at\" : { \"$date\" : \"2021-05-24T14:53:28.808+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:08:40.619+0800\" }, \"code\" : \"BUSINESS\", \"name\" : \"应用信息\", \"model_type\" : \"yw\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd868c67c39b406648c65\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T12:09:12.413+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:09:12.413+0800\" }, \"code\" : \"ORGANIZATION\", \"name\" : \"组织信息\", \"model_type\" : \"zz\" }\n"
  },
  {
    "path": "install/init/cmdb-init/model_info.json",
    "content": "{ \"_id\" : { \"$oid\" : \"5e5dd2a8c67c39b406648c33\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:27:35.752+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:44:40.176+0800\" }, \"code\" : \"PUBLIC_CLOUD\", \"name\" : \"公有云\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"CLOUD\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"RES_ROOT\", \"ancestors\" : [ \"RES_ROOT\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"113\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd2c4c67c39b406648c37\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:29:50.058+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:08.076+0800\" }, \"code\" : \"CLOUD_REGION\", \"name\" : \"云区域\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"CLOUD\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"PUBLIC_CLOUD\", \"ancestors\" : [ \"RES_ROOT\", \"PUBLIC_CLOUD\", \"PUBLIC_CLOUD\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"99\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd2eac67c39b406648c3b\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:28:34.774+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:45:46.156+0800\" }, \"code\" : \"CLOUD_AZ\", \"name\" : \"可用区\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"CLOUD\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"CLOUD_REGION\", \"ancestors\" : [ \"RES_ROOT\", \"PUBLIC_CLOUD\", \"CLOUD_REGION\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"97\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd310c67c39b406648c3f\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:25:22.524+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:24.080+0800\" }, \"code\" : \"IDC\", \"name\" : \"机房\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"IDC\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"RES_ROOT\", \"ancestors\" : [ \"RES_ROOT\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"104\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd32dc67c39b406648c43\" }, \"updated_at\" : { \"$date\" : \"2020-10-15T09:09:39.642+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:46:53.416+0800\" }, \"code\" : \"REGION\", \"name\" : \"区域\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"IDC\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"IDC\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"99\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd343c67c39b406648c47\" }, \"updated_at\" : { \"$date\" : \"2020-10-15T09:09:39.598+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:15.342+0800\" }, \"code\" : \"RACK\", \"name\" : \"机柜\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"IDC\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"REGION\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"105\", \"built_in\" : true, \"parent_describe\" : \"所属区域\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd36fc67c39b406648c4b\" }, \"updated_at\" : { \"$date\" : \"2020-10-15T09:09:39.603+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:47:59.398+0800\" }, \"code\" : \"SERVER\", \"name\" : \"物理机\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"HOST\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"RACK\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"101\", \"no_relationship\" : [ \"PUBLIC_CLOUD\", \"CLOUD_REGION\", \"CLOUD_AZ\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"REGION\" ], \"no_relationship_field\" : [ \"SERVER_12\", \"SERVER_ceshi1\", \"SERVER_ceshi\", \"SERVER_ceshi\", \"SERVER_ceshi1\", \"SERVER_ceshi\", \"SERVER_ceshi1\" ], \"parent_describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd3bcc67c39b406648c4f\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.788+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:49:16.390+0800\" }, \"code\" : \"VIRTUAL_SERVER\", \"name\" : \"虚拟机\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"HOST\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"114\", \"built_in\" : true }\n{ \"_id\" : { \"$oid\" : \"5e5dd41ec67c39b406648c53\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:25:05.031+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T11:50:54.768+0800\" }, \"code\" : \"CLOUD_SERVER\", \"name\" : \"云主机\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"HOST\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"CLOUD_AZ\", \"ancestors\" : [ \"RES_ROOT\", \"PUBLIC_CLOUD\", \"CLOUD_REGION\", \"CLOUD_AZ\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"98\", \"parent_describe\" : \"可用区\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd7e6c67c39b406648c5b\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:28:46.470+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:02.056+0800\" }, \"code\" : \"ROUTER\", \"name\" : \"路由器\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"NETWORK\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"RACK\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"108\", \"parent_describe\" : \"请输入所属机柜\"}\n{ \"_id\" : { \"$oid\" : \"5e5dd802c67c39b406648c5f\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:29:25.499+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:07:30.579+0800\" }, \"code\" : \"SWITCH\", \"name\" : \"交换机\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"NETWORK\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"RACK\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"107\", \"parent_describe\" : \"请选择所属机柜\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8a4c67c39b406648c66\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T14:38:58.368+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:12.290+0800\" }, \"code\" : \"BUSINESS\", \"name\" : \"业务\", \"built_in\" : true, \"model_type\" : \"yw\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"BUSINESS\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"BU_ROOT\", \"ancestors\" : [ \"BU_ROOT\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"100\", \"parent_describe\" : \"\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8cbc67c39b406648c6a\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T15:07:32.634+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:10:51.919+0800\" }, \"code\" : \"APPLICATION\", \"name\" : \"应用\", \"built_in\" : true, \"model_type\" : \"yw\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"BUSINESS\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"BUSINESS\", \"ancestors\" : [ \"BU_ROOT\", \"BUSINESS\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"102\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8e3c67c39b406648c6e\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T15:35:14.282+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:15.343+0800\" }, \"code\" : \"SERVICE\", \"name\" : \"服务\", \"built_in\" : true, \"model_type\" : \"yw\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"BUSINESS\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"APPLICATION\", \"ancestors\" : [ \"BU_ROOT\", \"BUSINESS\", \"APPLICATION\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"103\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd8f7c67c39b406648c72\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:31:27.187+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:35.073+0800\" }, \"code\" : \"COMPANY\", \"name\" : \"公司\", \"built_in\" : true, \"model_type\" : \"zz\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"ORGANIZATION\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"BU_ROOT\", \"ancestors\" : [ \"BU_ROOT\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"110\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd90dc67c39b406648c76\" }, \"updated_at\" : { \"$date\" : \"2020-03-03T19:31:40.190+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:11:57.761+0800\" }, \"code\" : \"DEPARTMENT\", \"name\" : \"部门\", \"built_in\" : true, \"model_type\" : \"zz\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"ORGANIZATION\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"COMPANY\", \"ancestors\" : [ \"BU_ROOT\", \"COMPANY\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"109\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd924c67c39b406648c7a\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:00:01.954+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:20.604+0800\" }, \"code\" : \"GROUP\", \"name\" : \"小组\", \"built_in\" : true, \"model_type\" : \"zz\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"ORGANIZATION\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"DEPARTMENT\", \"ancestors\" : [ \"BU_ROOT\", \"COMPANY\", \"DEPARTMENT\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"112\" }\n{ \"_id\" : { \"$oid\" : \"5e5dd938c67c39b406648c7e\" }, \"updated_at\" : { \"$date\" : \"2021-05-18T17:00:01.943+0800\" }, \"created_at\" : { \"$date\" : \"2020-03-03T12:12:40.837+0800\" }, \"code\" : \"STAFF\", \"name\" : \"员工\", \"built_in\" : true, \"model_type\" : \"zz\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"ORGANIZATION\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"GROUP\", \"ancestors\" : [ \"BU_ROOT\", \"COMPANY\", \"DEPARTMENT\", \"GROUP\", \"GROUP\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"icon_code\" : \"111\" }\n{ \"_id\" : { \"$oid\" : \"5ed30b52c21464af965f3711\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.758+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:38.641+0800\" }, \"code\" : \"ORACLE\", \"name\" : \"Oracle\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"DATABASE\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"120\", \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30b63c21464af965f3715\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.761+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:41:55.484+0800\" }, \"code\" : \"MONGODB\", \"name\" : \"MongoDB\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"DATABASE\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"3\", \"built_in\" : true, \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bd0c21464af965f371d\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.764+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:44.628+0800\" }, \"code\" : \"KAFKA\", \"name\" : \"Kafka\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"MIDDLEWARE\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"2\", \"built_in\" : true, \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bdec21464af965f3721\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.767+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:43:58.033+0800\" }, \"code\" : \"TOMCAT\", \"name\" : \"Tomcat\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"MIDDLEWARE\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"8\", \"built_in\" : true, \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30bedc21464af965f3725\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.770+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:13.799+0800\" }, \"code\" : \"RABBITMQ\", \"name\" : \"RabbitMQ\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"MIDDLEWARE\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"5\", \"built_in\" : true, \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c07c21464af965f3729\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.773+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:39.496+0800\" }, \"code\" : \"NGINX\", \"name\" : \"Nginx\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"WEB\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"4\", \"built_in\" : true, \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c14c21464af965f372d\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.775+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:44:52.051+0800\" }, \"code\" : \"APACHE\", \"name\" : \"Apache\", \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"WEB\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\", \"SERVER\", \"VIRTUAL_SERVER\", \"CLOUD_REGION\", \"PUBLIC_CLOUD\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"1\", \"built_in\" : true, \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5ed30c3ac21464af965f3731\" }, \"updated_at\" : { \"$date\" : \"2020-10-27T15:17:24.778+0800\" }, \"created_at\" : { \"$date\" : \"2020-05-31T09:45:30.878+0800\" }, \"code\" : \"REDIS\", \"name\" : \"Redis\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"DATABASE\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"VIRTUAL_SERVER\", \"ancestors\" : [\"RACK\", \"IDC\", \"PUBLIC_CLOUD\", \"CLOUD_REGION\", \"REGION\", \"RES_ROOT\", \"SERVER\", \"VIRTUAL_SERVER\"], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"7\", \"parent_describe\" : \"所属主机\" }\n{ \"_id\" : { \"$oid\" : \"5fb11b5ac3ab246873665fb6\" }, \"updated_at\" : { \"$date\" : \"2020-11-15T20:16:35.794+0800\" }, \"created_at\" : { \"$date\" : \"2020-11-16T04:13:14.000+0800\" }, \"code\" : \"FIREWALL\", \"name\" : \"防火墙\", \"built_in\" : true, \"model_type\" : \"zc\", \"is_delete\" : false, \"is_stop\" : false, \"is_display\": true, \"model_group\" : \"NETWORK\", \"subordinate_label_code\" : [], \"subordinate_model\" : [], \"link_model\" : [], \"link_label_code\" : [], \"cover_subordinate_label_code\" : [], \"cover_subordinate_model\" : [], \"cover_link_model\" : [], \"cover_link_label_code\" : [], \"parent\" : \"RACK\", \"ancestors\" : [ \"RES_ROOT\", \"IDC\", \"REGION\", \"RACK\" ], \"model_link\" : [], \"link_label\" : [], \"cover_link_label\" : [], \"no_relationship\" : [], \"no_relationship_field\" : [], \"icon_code\" : \"106\", \"parent_describe\" : \"选择所属机柜\" }\n"
  },
  {
    "path": "install/init/cmdb-model/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/control-resource/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/dashboard-init/zabbix-linux-host.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n          \"uid\": \"-- Grafana --\"\n        },\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations * Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"Zabbix主机大屏\",\n  \"editable\": true,\n  \"fiscalYearStartMonth\": 0,\n  \"gnetId\": 5363,\n  \"graphTooltip\": 1,\n  \"links\": [],\n  \"liveNow\": false,\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 38,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"基本信息\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"mappings\": [\n            {\n              \"options\": {\n                \"1\": {\n                  \"index\": 0,\n                  \"text\": \"ONLINE\"\n                }\n              },\n              \"type\": \"value\"\n            }\n          ],\n          \"noValue\": \"OFFLINE\",\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"green\",\n                \"value\": 1\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 3,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"id\": 99,\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Zabbix agent ping\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": false,\n            \"disableDataAlignment\": false,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          }\n        }\n      ],\n      \"title\": \"监控状态\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 2,\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          },\n          \"unit\": \"dtdurations\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 7,\n        \"x\": 3,\n        \"y\": 1\n      },\n      \"id\": 97,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/[U-u]ptime/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": false,\n            \"disableDataAlignment\": false,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          }\n        }\n      ],\n      \"title\": \"启动时间\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"当前登录用户\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 3,\n        \"x\": 10,\n        \"y\": 1\n      },\n      \"id\": 95,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"General\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Number of logged in users\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"登录用户\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 13,\n        \"y\": 1\n      },\n      \"hideTimeOverride\": true,\n      \"id\": 84,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Number of CPUs\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"timeFrom\": \"10y\",\n      \"title\": \"CPU总量\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          },\n          \"unit\": \"bytes\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 17,\n        \"y\": 1\n      },\n      \"hideTimeOverride\": true,\n      \"id\": 27,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Total memory\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"timeFrom\": \"10y\",\n      \"title\": \"内存总量\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"系统挂载的磁盘数量\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 3,\n        \"x\": 21,\n        \"y\": 1\n      },\n      \"id\": 94,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"/Disk /\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Disk utilization/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"磁盘数量\",\n      \"transformations\": [\n        {\n          \"id\": \"calculateField\",\n          \"options\": {\n            \"mode\": \"reduceRow\",\n            \"reduce\": {\n              \"reducer\": \"count\"\n            },\n            \"replaceFields\": true\n          }\n        }\n      ],\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 4\n      },\n      \"id\": 35,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"性能信息\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                \"value\": null\n              },\n              {\n                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 5\n      },\n      \"id\": 5,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"内存使用率\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"aliasColors\": {\n        \"CPU system time\": \"#e24d42\",\n        \"CPU utilization\": \"red\",\n        \"Espaco livre na particao C: % (pfree)\": \"#629E51\",\n        \"Espaco livre na particao D: % (pfree)\": \"#E5AC0E\",\n        \"Memory utilization\": \"blue\",\n        \"Used memory %\": \"#6ed0e0\",\n        \"Used memory in %\": \"#70dbed\"\n      },\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"decimals\": 0,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"fill\": 5,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 5\n      },\n      \"hiddenSeries\": false,\n      \"id\": 9,\n      \"legend\": {\n        \"alignAsTable\": false,\n        \"avg\": true,\n        \"current\": false,\n        \"hideEmpty\": false,\n        \"hideZero\": false,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:810\",\n          \"alias\": \"/CPU utilization/\",\n          \"dashLength\": 5,\n          \"dashes\": true,\n          \"fill\": 0,\n          \"lines\": true,\n          \"linewidth\": 3,\n          \"nullPointMode\": \"null\",\n          \"spaceLength\": 2,\n          \"yaxis\": 2,\n          \"zindex\": 2\n        },\n        {\n          \"$$hashKey\": \"object:811\",\n          \"alias\": \"Memory utilization\",\n          \"fillGradient\": 7,\n          \"nullPointMode\": \"null\",\n          \"pointradius\": 2\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": false,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"内存 / CPU\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3277\",\n          \"decimals\": 0,\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3278\",\n          \"decimals\": 0,\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": \"0\",\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": true\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                \"value\": null\n              },\n              {\n                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 5\n      },\n      \"id\": 4,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"CPU使用率\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"Amount of time the CPU has been waiting for I/O to complete.\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"max\": 20,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 5\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 10\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 11\n      },\n      \"id\": 22,\n      \"links\": [],\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/CPU (iowait|DPC) time/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"CPU iowait time\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 80\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 95\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 11\n      },\n      \"hideTimeOverride\": false,\n      \"id\": 15,\n      \"links\": [],\n      \"options\": {\n        \"displayMode\": \"lcd\",\n        \"minVizHeight\": 10,\n        \"minVizWidth\": 0,\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showUnfilled\": true,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"FS [/]: Space: Used, in %\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": false,\n            \"disableDataAlignment\": false,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          }\n        }\n      ],\n      \"title\": \"磁盘使用率\",\n      \"transformations\": [],\n      \"type\": \"bargauge\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 11\n      },\n      \"id\": 52,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"General\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Number of processes\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"进程数量\",\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 17\n      },\n      \"id\": 31,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"磁盘信息\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {\n        \"CPU system time\": \"#e24d42\",\n        \"CPU utilization\": \"red\",\n        \"Espaco livre na particao C: % (pfree)\": \"#629E51\",\n        \"Espaco livre na particao D: % (pfree)\": \"#E5AC0E\",\n        \"Memory utilization\": \"blue\",\n        \"Used memory %\": \"#6ed0e0\",\n        \"Used memory in %\": \"#70dbed\"\n      },\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"decimals\": 0,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"ops\"\n        },\n        \"overrides\": []\n      },\n      \"fill\": 10,\n      \"fillGradient\": 6,\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 13,\n        \"x\": 0,\n        \"y\": 18\n      },\n      \"hiddenSeries\": false,\n      \"id\": 89,\n      \"legend\": {\n        \"alignAsTable\": false,\n        \"avg\": true,\n        \"current\": false,\n        \"hideEmpty\": false,\n        \"hideZero\": false,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"repeat\": \"Disk\",\n      \"repeatDirection\": \"v\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:810\",\n          \"alias\": \"/read rate/\",\n          \"color\": \"#5794F2\",\n          \"fill\": 0,\n          \"lines\": true,\n          \"linewidth\": 3\n        },\n        {\n          \"$$hashKey\": \"object:811\",\n          \"alias\": \"/write rate/\",\n          \"color\": \"#C4162A\",\n          \"pointradius\": 2,\n          \"points\": true\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Disk\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/write rate/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"$Disk\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": false,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/read rate/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"component: storage\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"磁盘读/写速率\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3277\",\n          \"decimals\": 0,\n          \"format\": \"ops\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3278\",\n          \"decimals\": 0,\n          \"format\": \"none\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"min\": \"0\",\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"Used storage in Bytes\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 40,\n            \"gradientMode\": \"opacity\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 2,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"never\",\n            \"spanNulls\": true,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"bytes\"\n        },\n        \"overrides\": [\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"C:: Total space\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"rgb(255, 255, 255)\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"C:: Used space\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"red\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"CPU system time\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#e24d42\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Espaco livre na particao C: % (pfree)\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#629E51\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Espaco livre na particao D: % (pfree)\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#E5AC0E\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Used memory %\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#6ed0e0\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byRegexp\",\n              \"options\": \"/Used space/\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#F2495C\",\n                  \"mode\": \"fixed\"\n                }\n              },\n              {\n                \"id\": \"custom.fillOpacity\",\n                \"value\": 100\n              },\n              {\n                \"id\": \"custom.fillOpacity\",\n                \"value\": 100\n              },\n              {\n                \"id\": \"custom.lineWidth\",\n                \"value\": 4\n              },\n              {\n                \"id\": \"custom.lineStyle\",\n                \"value\": {\n                  \"dash\": [\n                    7,\n                    4\n                  ],\n                  \"fill\": \"dash\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byRegexp\",\n              \"options\": \"/Total space/\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"rgb(255, 255, 255)\",\n                  \"mode\": \"fixed\"\n                }\n              },\n              {\n                \"id\": \"custom.lineWidth\",\n                \"value\": 4\n              }\n            ]\n          }\n        ]\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 11,\n        \"x\": 13,\n        \"y\": 18\n      },\n      \"id\": 32,\n      \"links\": [],\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"desc\"\n        }\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Filesystem\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Filesystem\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": false,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"FS [/]: Space: Available\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"磁盘可用空间\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 24\n      },\n      \"id\": 41,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"网络信息\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"semi-dark-green\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\"\n              }\n            ]\n          },\n          \"unit\": \"binBps\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 25\n      },\n      \"id\": 19,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Network\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Network\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Bits received/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"网卡流量（IN）\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 30,\n            \"gradientMode\": \"opacity\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 3,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"never\",\n            \"spanNulls\": true,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\"\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"bps\"\n        },\n        \"overrides\": [\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Incoming network traffic on vmxnet3 Ethernet Adapter #2\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#1f78c1\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Outgoing network traffic on vmxnet3 Ethernet Adapter #2\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"rgba(237, 129, 40, 0.79)\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Outgoing network traffic on vmxnet3 Ethernet Adapter #2-WFP LightWeight Filter-0000\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"rgba(237, 129, 40, 0.89)\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byRegexp\",\n              \"options\": \"/Bits received/\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#56A64B\",\n                  \"mode\": \"fixed\"\n                }\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byRegexp\",\n              \"options\": \"/Bits sent/\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"color\",\n                \"value\": {\n                  \"fixedColor\": \"#8F3BB8\",\n                  \"mode\": \"fixed\"\n                }\n              },\n              {\n                \"id\": \"custom.transform\",\n                \"value\": \"negative-Y\"\n              }\n            ]\n          }\n        ]\n      },\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 25\n      },\n      \"id\": 18,\n      \"links\": [],\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"displayMode\": \"list\",\n          \"placement\": \"right\"\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Network\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$netif\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [\n            {\n              \"$$hashKey\": \"object:2368\",\n              \"def\": {\n                \"category\": \"Alias\",\n                \"defaultParams\": [\n                  \"/(.*)/\",\n                  \"$1\"\n                ],\n                \"name\": \"replaceAlias\",\n                \"params\": [\n                  {\n                    \"name\": \"regexp\",\n                    \"type\": \"string\"\n                  },\n                  {\n                    \"name\": \"newAlias\",\n                    \"type\": \"string\"\n                  }\n                ]\n              },\n              \"params\": [\n                \"/Interface /\",\n                \"$`\"\n              ],\n              \"text\": \"replaceAlias(/Interface /, $`)\"\n            }\n          ],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Bits (received|sent)/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"网卡流量\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"semi-dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\"\n              }\n            ]\n          },\n          \"unit\": \"binBps\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 25\n      },\n      \"id\": 21,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Network\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Network\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Bits sent/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"网卡流量（OUT）\",\n      \"type\": \"stat\"\n    }\n  ],\n  \"refresh\": \"1m\",\n  \"schemaVersion\": 36,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"Zabbix\",\n    \"HOST\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"description\": \"请选择Zabbix监控实例\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"监控实例:\",\n        \"multi\": false,\n        \"name\": \"DATA_SOURCE\",\n        \"options\": [],\n        \"query\": \"alexanderzobnin-zabbix-datasource\",\n        \"queryValue\": \"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"allFormat\": \"regex values\",\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"Zabbix - group\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"分组:\",\n        \"multi\": false,\n        \"multiFormat\": \"glob\",\n        \"name\": \"Group\",\n        \"options\": [],\n        \"query\": {\n          \"application\": \"\",\n          \"group\": \"/.*/\",\n          \"host\": \"\",\n          \"item\": \"\",\n          \"itemTag\": \"\",\n          \"queryType\": \"group\"\n        },\n        \"refresh\": 1,\n        \"refresh_on_load\": false,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"Zabbix - host\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"名称:\",\n        \"multi\": false,\n        \"name\": \"Host\",\n        \"options\": [],\n        \"query\": {\n          \"application\": \"\",\n          \"group\": \"$Group\",\n          \"host\": \"/.*/\",\n          \"item\": \"\",\n          \"itemTag\": \"\",\n          \"queryType\": \"host\"\n        },\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"type\": \"query\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ],\n    \"time_options\": [\n      \"5m\",\n      \"15m\",\n      \"1h\",\n      \"6h\",\n      \"12h\",\n      \"24h\",\n      \"2d\",\n      \"7d\",\n      \"30d\"\n    ]\n  },\n  \"timezone\": \"browser\",\n  \"title\": \"Linux主机大屏\",\n  \"uid\": \"opsany-zabbix-linux-host\",\n  \"version\": 5,\n  \"weekStart\": \"\"\n}"
  },
  {
    "path": "install/init/dashboard-init/zabbix-network_device.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\",\n          \"uid\": \"grafana\"\n        },\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"Created a network dashboard to monitor device status + Interfaces.  Hopefully, it helps the community. \",\n  \"editable\": true,\n  \"fiscalYearStartMonth\": 0,\n  \"gnetId\": 11953,\n  \"graphTooltip\": 0,\n  \"links\": [],\n  \"liveNow\": false,\n  \"panels\": [\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"mappings\": [\n            {\n              \"options\": {\n                \"0\": {\n                  \"text\": \"RED\"\n                },\n                \"1\": {\n                  \"text\": \"GREEN\"\n                }\n              },\n              \"type\": \"value\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 10,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"mean\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Power supply\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Sw1, PS1 Normal, RPS NotExist: Power supply status\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        }\n      ],\n      \"title\": \"Power Supply\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"mappings\": [\n            {\n              \"options\": {\n                \"0\": {\n                  \"text\": \"DOWN\"\n                },\n                \"1\": {\n                  \"text\": \"UP\"\n                }\n              },\n              \"type\": \"value\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 0\n      },\n      \"id\": 15,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"mean\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Status\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"ICMP ping\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        }\n      ],\n      \"title\": \"Availability\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"decimals\": 3,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"dtdurations\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 12,\n        \"x\": 8,\n        \"y\": 0\n      },\n      \"id\": 8,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Status\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Uptime\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"启动时间\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"mappings\": [\n            {\n              \"options\": {\n                \"0\": {\n                  \"text\": \"RED\"\n                },\n                \"1\": {\n                  \"text\": \"GREEN\"\n                }\n              },\n              \"type\": \"value\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 0\n      },\n      \"id\": 14,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"mean\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Temperature\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"SW#1, Sensor#1, GREEN : Temperature status\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        }\n      ],\n      \"title\": \"Temperature\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 4,\n        \"w\": 3,\n        \"x\": 0,\n        \"y\": 2\n      },\n      \"id\": 5,\n      \"options\": {\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"last\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"#1: CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"slaProperty\": \"sla\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"CPU使用率\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 4,\n        \"w\": 18,\n        \"x\": 3,\n        \"y\": 2\n      },\n      \"hiddenSeries\": false,\n      \"id\": 12,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Status\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"ICMP response time\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"ICMP Response Time\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 4,\n        \"w\": 3,\n        \"x\": 21,\n        \"y\": 2\n      },\n      \"id\": 13,\n      \"options\": {\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"last\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Processor: Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"slaProperty\": \"sla\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"内存使用率\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 6\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideZero\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": true,\n        \"show\": true,\n        \"total\": true,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"maxDataPoints\": \"\",\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Interface\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/(?:Bits\\\\ received)/\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"$Interface\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/(?:Inbound\\\\ packets\\\\ with\\\\ errors)/\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Interface Incoming Traffic bits/errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"bps\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 14\n      },\n      \"hiddenSeries\": false,\n      \"id\": 3,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideZero\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": true,\n        \"show\": true,\n        \"total\": true,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"maxDataPoints\": \"\",\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Interface\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/(?:Bits\\\\ sent)/\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"$Interface\"\n          },\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/(?:Outbound\\\\ packets\\\\ with\\\\ errors)/\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false\n          },\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"count\": true,\n            \"minSeverity\": 3\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Interface Outgoing Traffic bits/errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"bps\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    }\n  ],\n  \"schemaVersion\": 36,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"Zabbix\",\n    \"NETWORK\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"description\": \"请选择Zabbix监控实例\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"监控实例:\",\n        \"multi\": false,\n        \"name\": \"DATA_SOURCE\",\n        \"options\": [],\n        \"query\": \"alexanderzobnin-zabbix-datasource\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"*\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"分组:\",\n        \"multi\": false,\n        \"name\": \"Group\",\n        \"options\": [],\n        \"query\": \"*\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"$Group.*\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"名称:\",\n        \"multi\": false,\n        \"name\": \"Host\",\n        \"options\": [],\n        \"query\": \"$Group.*\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"网络设备大屏\",\n  \"uid\": \"opsany-zabbix-network-device\",\n  \"version\": 5,\n  \"weekStart\": \"\"\n}"
  },
  {
    "path": "install/init/dashboard-init/zabbix-windows-host.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n          \"uid\": \"-- Grafana --\"\n        },\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"Windows System Dashboard. \",\n  \"editable\": true,\n  \"fiscalYearStartMonth\": 0,\n  \"gnetId\": 11954,\n  \"graphTooltip\": 0,\n  \"links\": [],\n  \"liveNow\": false,\n  \"panels\": [\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"bytes\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 3,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 2,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Total memory\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"内存总量\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"mappings\": [\n            {\n              \"options\": {\n                \"1\": {\n                  \"text\": \"ONLINE\"\n                }\n              },\n              \"type\": \"value\"\n            },\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"OFFLINE\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 10,\n        \"x\": 3,\n        \"y\": 0\n      },\n      \"id\": 10,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Monitoring agent\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Zabbix agent ping\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"主机状态\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"decimals\": 2,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"null\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"dtdurations\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 11,\n        \"x\": 13,\n        \"y\": 0\n      },\n      \"id\": 4,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Status\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Uptime\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"启动时间\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"mappings\": [\n            {\n              \"id\": 0,\n              \"op\": \"=\",\n              \"text\": \"N/A\",\n              \"type\": 1,\n              \"value\": \"null\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 80\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 90\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 3,\n        \"x\": 0,\n        \"y\": 2\n      },\n      \"id\": 6,\n      \"links\": [],\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"内存使用率\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 10,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"never\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"links\": [],\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 18,\n        \"x\": 3,\n        \"y\": 2\n      },\n      \"id\": 8,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"内存 / CPU\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"mappings\": [\n            {\n              \"id\": 0,\n              \"op\": \"=\",\n              \"text\": \"N/A\",\n              \"type\": 1,\n              \"value\": \"null\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 80\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 90\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 3,\n        \"x\": 21,\n        \"y\": 2\n      },\n      \"id\": 9,\n      \"links\": [],\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"CPU使用率\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 9,\n        \"x\": 0,\n        \"y\": 7\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"alignAsTable\": false,\n        \"avg\": false,\n        \"current\": true,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"maxDataPoints\": \"\",\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Filesystems\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"FS [{#FSLABEL}(C:)]: Space: Available\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"剩余磁盘空间\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"decimals\": 0,\n          \"format\": \"bytes\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 6,\n        \"x\": 9,\n        \"y\": 7\n      },\n      \"hiddenSeries\": false,\n      \"id\": 17,\n      \"legend\": {\n        \"alignAsTable\": false,\n        \"avg\": false,\n        \"current\": true,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"maxDataPoints\": \"\",\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Disk 0 C:\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"0 C:: Disk read rate\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"Disk 0 C:\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Server\"\n          },\n          \"item\": {\n            \"filter\": \"0 C:: Disk write rate\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"磁盘读写速率\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"decimals\": 0,\n          \"format\": \"bytes\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 10,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"never\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"links\": [],\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 9,\n        \"x\": 15,\n        \"y\": 7\n      },\n      \"id\": 19,\n      \"links\": [\n        {\n          \"title\": \"\",\n          \"url\": \"\"\n        }\n      ],\n      \"maxDataPoints\": \"\",\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Filesystem C:\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"FS [{#FSLABEL}(C:)]: Space: Used, in %\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"mode\": 0,\n          \"options\": {\n            \"count\": true,\n            \"disableDataAlignment\": false,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": false,\n            \"skipEmptyValues\": false,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": false\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": false\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"磁盘使用率\",\n      \"type\": \"timeseries\"\n    }\n  ],\n  \"refresh\": \"1m\",\n  \"schemaVersion\": 36,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"Zabbix\",\n    \"HOST\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"description\": \"请选择Zabbix监控实例\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"监控实例:\",\n        \"multi\": false,\n        \"name\": \"DATA_SOURCE\",\n        \"options\": [],\n        \"query\": \"alexanderzobnin-zabbix-datasource\",\n        \"queryValue\": \"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"*\",\n        \"description\": \"请选择主机分组\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"分组:\",\n        \"multi\": false,\n        \"name\": \"Group\",\n        \"options\": [],\n        \"query\": \"*\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"$Group.*\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"名称:\",\n        \"multi\": false,\n        \"name\": \"Host\",\n        \"options\": [],\n        \"query\": \"$Group.*\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"Windows主机大屏\",\n  \"uid\": \"opsany-zabbix-windows-host\",\n  \"version\": 2,\n  \"weekStart\": \"\"\n}"
  },
  {
    "path": "install/init/esb-init/esb_api_doc.sql",
    "content": "-- MariaDB dump 10.19  Distrib 10.11.13-MariaDB, for debian-linux-gnu (x86_64)\n--\n-- Host: localhost    Database: opsany_paas\n-- ------------------------------------------------------\n-- Server version\t10.11.13-MariaDB-0ubuntu0.24.04.1\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/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\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/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `esb_api_doc`\n--\n\nDROP TABLE IF EXISTS `esb_api_doc`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_api_doc` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `board` varchar(64) DEFAULT NULL,\n  `component_id` int(11) NOT NULL,\n  `doc_md` longtext DEFAULT NULL,\n  `doc_html` longtext DEFAULT NULL,\n  `doc_md_md5` varchar(128) NOT NULL,\n  `created_time` datetime NOT NULL,\n  `updated_time` datetime NOT NULL,\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `component_id` (`component_id`) USING BTREE,\n  KEY `esb_api_doc_1145f263` (`board`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=373 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=COMPACT;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_api_doc`\n--\n\nLOCK TABLES `esb_api_doc` WRITE;\n/*!40000 ALTER TABLE `esb_api_doc` DISABLE KEYS */;\nINSERT INTO `esb_api_doc` VALUES\n(1,'',1,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_manual_add_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_manual_add_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_manual_add_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_manual_add_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','286ba6ae278b8bb7aa9eb8c47ca1174d','2020-04-22 08:56:22','2025-04-23 11:04:10'),\n(2,'',2,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668name |\\\\n| id | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668name |\\\\n| id | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668name</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668name</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','62c8a446567357ec86298eb2af237447','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(3,'',3,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e04839f986107dc1dd51c1e3a07216b9','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(4,'',4,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f    | \\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"HOST_name\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\",\\\\n            \\\\\\\"HOST_IP\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\"\\\\n        },\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"HOST\\\\\\\",\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"HOST_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f    | \\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"HOST_name\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\",\\\\n            \\\\\\\"HOST_IP\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\"\\\\n        },\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"HOST\\\\\\\",\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"HOST_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','057d249b510c241bb3df2ff249dfd25d','2020-04-22 08:56:22','2021-08-23 15:14:24'),\n(5,'',5,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_agent_state/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list | array | \\\\u662f    | \\\\u8282\\\\u70b9\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n     \\\\\\\"list\\\\\\\":[\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.2\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  [\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 22,\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"SERVER\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"SERVER_name\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_IN_RACK\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_HOSTNAME\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_INTERNAL_IP\\\\\\\": \\\\\\\"\\\\\\\",\\\\n            \\\\\\\"SERVER_PUBLIC_IP\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_AGENT_STATE\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"SERVER_CONTROLLER_NAME\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"SERVER_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n        \\\\\\\"position\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n        \\\\\\\"link_inst\\\\\\\": [],\\\\n        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"business_code\\\\\\\": \\\\\\\"x\\\\\\\"\\\\n    }\\\\n]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_agent_state/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list | array | \\\\u662f    | \\\\u8282\\\\u70b9\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n     \\\\\\\"list\\\\\\\":[\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.2\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  [\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 22,\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"SERVER\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"SERVER_name\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_IN_RACK\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_HOSTNAME\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_INTERNAL_IP\\\\\\\": \\\\\\\"\\\\\\\",\\\\n            \\\\\\\"SERVER_PUBLIC_IP\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_AGENT_STATE\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"SERVER_CONTROLLER_NAME\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"SERVER_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n        \\\\\\\"position\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n        \\\\\\\"link_inst\\\\\\\": [],\\\\n        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"business_code\\\\\\\": \\\\\\\"x\\\\\\\"\\\\n    }\\\\n]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_agent_state/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8282\\\\u70b9\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">22</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_IN_RACK&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_HOSTNAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_INTERNAL_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_PUBLIC_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_AGENT_STATE&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_CONTROLLER_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;x&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_agent_state/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8282\\\\u70b9\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">22</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_IN_RACK&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_HOSTNAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_INTERNAL_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_PUBLIC_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_AGENT_STATE&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_CONTROLLER_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;x&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7b4464ee9b2ad9ee1c4479a38941f6f5','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(6,'',6,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_grains_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_grains_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_grains_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_grains_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','98e98b1f4537902b396c217b72339cc2','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(7,'',7,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f    | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f    | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','88cf2ab5eabf395da44b4e5f8930d6e1','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(8,'',8,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_agent_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"normal\\\\\\\": 1,\\\\n        \\\\\\\"not_install\\\\\\\": 4,\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"192.169.0.100\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            }\\\\n        ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_agent_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"normal\\\\\\\": 1,\\\\n        \\\\\\\"not_install\\\\\\\": 4,\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"192.169.0.100\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            }\\\\n        ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_agent_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;192.169.0.100&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_agent_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;192.169.0.100&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','355af76f3c4f78adb661fdb688600b9b','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(9,'',9,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"son\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 11,\\\\n                \\\\\\\"model_code\\\\\\\": \\\\\\\"APPLICATION\\\\\\\",\\\\n                \\\\\\\"data\\\\\\\": {\\\\n                    \\\\\\\"APPLICATION_name\\\\\\\": \\\\\\\"\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_ID\\\\\\\": \\\\\\\"SHARE_SERVICE\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_STATUS\\\\\\\": \\\\\\\"\\\\u8fd0\\\\u884c\\\\u4e2d\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_IN_BUSINESS\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce\\\\\\\"\\\\n                },\\\\n                \\\\\\\"pk_name\\\\\\\": \\\\\\\"APPLICATION_name\\\\\\\",\\\\n                \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce->\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                \\\\\\\"position\\\\\\\": \\\\\\\"yw\\\\\\\",\\\\n                \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n                \\\\\\\"link_inst\\\\\\\": [],\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"1\\\\\\\",\\\\n                \\\\\\\"business_code\\\\\\\": \\\\\\\"\\\\u672a\\\\u5206\\\\u914d\\\\\\\"\\\\n            }\\\\n        ]\\\\n    },\\\\n    {\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"normal\\\\\\\": 0,\\\\n                \\\\\\\"not_install\\\\\\\": 1,\\\\n                \\\\\\\"agent_info\\\\\\\": [\\\\n                    {\\\\n                        \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                        \\\\\\\"controller_name\\\\\\\": \\\\\\\"\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668\\\\\\\",\\\\n                        \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n                        \\\\\\\"host_name\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"ip_type\\\\\\\": \\\\\\\"\\\\u5916\\\\u7f51IP\\\\\\\"\\\\n                    }\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"son\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 11,\\\\n                \\\\\\\"model_code\\\\\\\": \\\\\\\"APPLICATION\\\\\\\",\\\\n                \\\\\\\"data\\\\\\\": {\\\\n                    \\\\\\\"APPLICATION_name\\\\\\\": \\\\\\\"\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_ID\\\\\\\": \\\\\\\"SHARE_SERVICE\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_STATUS\\\\\\\": \\\\\\\"\\\\u8fd0\\\\u884c\\\\u4e2d\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_IN_BUSINESS\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce\\\\\\\"\\\\n                },\\\\n                \\\\\\\"pk_name\\\\\\\": \\\\\\\"APPLICATION_name\\\\\\\",\\\\n                \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce->\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                \\\\\\\"position\\\\\\\": \\\\\\\"yw\\\\\\\",\\\\n                \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n                \\\\\\\"link_inst\\\\\\\": [],\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"1\\\\\\\",\\\\n                \\\\\\\"business_code\\\\\\\": \\\\\\\"\\\\u672a\\\\u5206\\\\u914d\\\\\\\"\\\\n            }\\\\n        ]\\\\n    },\\\\n    {\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"normal\\\\\\\": 0,\\\\n                \\\\\\\"not_install\\\\\\\": 1,\\\\n                \\\\\\\"agent_info\\\\\\\": [\\\\n                    {\\\\n                        \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                        \\\\\\\"controller_name\\\\\\\": \\\\\\\"\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668\\\\\\\",\\\\n                        \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n                        \\\\\\\"host_name\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"ip_type\\\\\\\": \\\\\\\"\\\\u5916\\\\u7f51IP\\\\\\\"\\\\n                    }\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;son&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">11</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_ID&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SHARE_SERVICE&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_STATUS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd0\\\\u884c\\\\u4e2d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_IN_BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce-&gt;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;yw&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672a\\\\u5206\\\\u914d&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;host_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5916\\\\u7f51IP&quot;</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;son&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">11</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_ID&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SHARE_SERVICE&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_STATUS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd0\\\\u884c\\\\u4e2d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_IN_BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce-&gt;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;yw&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672a\\\\u5206\\\\u914d&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;host_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5916\\\\u7f51IP&quot;</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','791360102239d7b3b6e7f5b00bc0331a','2020-04-22 08:56:22','2025-04-23 11:04:11'),\n(10,'',10,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_net_work/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;\\\\n\\\\n}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_net_work/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;\\\\n\\\\n}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_net_work/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<p>| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;</p>\\\\n<p>}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |</p>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_net_work/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<p>| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;</p>\\\\n<p>}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |</p>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b287b40945a3e09b8aa495545fd12b5f','2020-04-26 02:51:24','2025-04-23 11:04:11'),\n(11,'',11,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_control_agent_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| token_data | str | \\\\u662f  | token |\\\\n| system_type | str | \\\\u662f  | \\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b |\\\\n| host_type | str | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u7c7b\\\\u578b |\\\\n| name | str | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 |\\\\n| ip | str | \\\\u662f  | \\\\u4e3b\\\\u673aIP\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 |\\\\n| show_name | str | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u663e\\\\u793a\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 |\\\\n| group_type | string | \\\\u662f  | \\\\u5206\\\\u7ec4ID |\\\\n| search_type | string | \\\\u662f  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | string | \\\\u662f  | \\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| group_level | string | \\\\u662f  | \\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\u6df1\\\\u5ea6 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_control_agent_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| token_data | str | \\\\u662f  | token |\\\\n| system_type | str | \\\\u662f  | \\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b |\\\\n| host_type | str | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u7c7b\\\\u578b |\\\\n| name | str | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 |\\\\n| ip | str | \\\\u662f  | \\\\u4e3b\\\\u673aIP\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 |\\\\n| show_name | str | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u663e\\\\u793a\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 |\\\\n| group_type | string | \\\\u662f  | \\\\u5206\\\\u7ec4ID |\\\\n| search_type | string | \\\\u662f  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | string | \\\\u662f  | \\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| group_level | string | \\\\u662f  | \\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\u6df1\\\\u5ea6 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_control_agent_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n<tr>\\\\n<td>system_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aIP\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>show_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u663e\\\\u793a\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5206\\\\u7ec4ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group_level</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\u6df1\\\\u5ea6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_control_agent_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n<tr>\\\\n<td>system_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aIP\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>show_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u663e\\\\u793a\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5206\\\\u7ec4ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group_level</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\u6df1\\\\u5ea6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','7ac324194490244da16f40379a8d10ff','2020-05-13 07:43:54','2026-03-07 09:13:02'),\n(12,'',12,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_file_stats/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_file_stats/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_file_stats/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_file_stats/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0973bcc6f528bb871ae5189ae20eea27','2020-05-23 10:01:58','2025-04-23 11:04:11'),\n(13,'',13,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_info_by_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_info_by_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_info_by_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_info_by_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','93363a6a87b6985d3afacfd4ef68f63e','2020-05-23 11:44:31','2025-04-23 11:04:11'),\n(14,'',14,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_ps_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_ps_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_ps_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_ps_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','933952f266190eb5e738804faa580b69','2020-05-23 13:02:02','2025-04-23 11:04:11'),\n(15,'',15,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_zabbix_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_zabbix_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_zabbix_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_zabbix_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8e036bae1dc2c3c11c5658c721d0caf7','2020-05-26 07:43:08','2025-04-23 11:04:11'),\n(16,'',16,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_by_model_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_by_model_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_by_model_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_by_model_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d702eaf4568ed5d078525c22f0f888d5','2020-05-26 08:22:06','2025-04-23 11:04:11'),\n(17,'',17,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code1 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n| code2 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code1 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n| code2 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code1</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code2</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code1</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code2</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','1808be74682b98595eb4304efdecf148','2020-05-26 08:31:10','2025-04-23 11:04:11'),\n(18,'',18,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host_info_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host_info_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host_info_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20005</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host_info_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20005</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d8bb895fa6366ffd7d7ea4ba719a41fb','2020-05-30 10:03:46','2025-04-23 11:04:11'),\n(19,'',19,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0cebd654da0e80c7b88f032aa0e2fafb','2020-06-01 12:06:50','2020-06-01 12:06:50'),\n(20,'',20,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1dc7bc7ce89abc2923b6a6105b789afb','2020-07-10 09:23:42','2025-04-23 11:04:11'),\n(21,'',21,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_nav_and_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_nav_and_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_nav_and_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_nav_and_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','bb69f848c9457ce0337b5bac4a1be2d9','2020-07-10 09:24:04','2025-04-23 11:04:11'),\n(22,'',23,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5927\\\\u5c4f\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5927\\\\u5c4f\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5927\\\\u5c4f\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5927\\\\u5c4f\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','687bc6c963827073f7ec75879cbfbb93','2020-07-14 02:09:48','2025-04-23 11:04:11'),\n(23,'',24,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8364efdd65269bbd0f1f6665c705f1c2','2020-07-14 02:09:48','2025-04-23 11:04:11'),\n(24,'',22,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b9cbf34b5dab08233ec5fc9823e2b5cb','2020-07-14 02:15:33','2025-04-23 11:04:11'),\n(25,'',25,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','0cd5a1c2fda748d959ce731efd1c0185','2020-07-15 03:29:45','2025-04-23 11:04:11'),\n(26,'',26,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_info_to_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| temp_id | int | \\\\u662f  | \\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID |\\\\n| parameter | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n| result | bool | \\\\u5426  | \\\\u662f\\\\u5426\\\\u9700\\\\u8981\\\\u8fd4\\\\u56de\\\\u53d1\\\\u9001\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f |\\\\n| subscribe_type | list | \\\\u5426  | \\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b |\\\\n| alert_info | dict | \\\\u5426  | \\\\u544a\\\\u8b66\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\":  xx,\\\\n    \\\\\\\"parameter\\\\\\\": \\\\\\\"(x, x, x, x)\\\\\\\",\\\\n    \\\\\\\"subscribe_type\\\\\\\": [\\\\\\\"1\\\\\\\", \\\\\\\"2\\\\\\\", \\\\\\\"3\\\\\\\"]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_info_to_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| temp_id | int | \\\\u662f  | \\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID |\\\\n| parameter | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n| result | bool | \\\\u5426  | \\\\u662f\\\\u5426\\\\u9700\\\\u8981\\\\u8fd4\\\\u56de\\\\u53d1\\\\u9001\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f |\\\\n| subscribe_type | list | \\\\u5426  | \\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b |\\\\n| alert_info | dict | \\\\u5426  | \\\\u544a\\\\u8b66\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\":  xx,\\\\n    \\\\\\\"parameter\\\\\\\": \\\\\\\"(x, x, x, x)\\\\\\\",\\\\n    \\\\\\\"subscribe_type\\\\\\\": [\\\\\\\"1\\\\\\\", \\\\\\\"2\\\\\\\", \\\\\\\"3\\\\\\\"]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_info_to_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>temp_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>result</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u9700\\\\u8981\\\\u8fd4\\\\u56de\\\\u53d1\\\\u9001\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>subscribe_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>alert_info</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;parameter&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;(x, x, x, x)&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subscribe_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;3&quot;</span><span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_info_to_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>temp_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>result</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u9700\\\\u8981\\\\u8fd4\\\\u56de\\\\u53d1\\\\u9001\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>subscribe_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>alert_info</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;parameter&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;(x, x, x, x)&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subscribe_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;3&quot;</span><span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f96e5d9ee72b65865cc5e71a1da8a8db','2020-07-23 08:08:13','2025-04-23 11:04:11'),\n(27,'',27,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_message_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n    | pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_message_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n    | pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_message_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_message_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','412826f7dd8d7f9259b7a8b141ef5b7a','2020-07-27 08:45:05','2025-04-23 11:04:11'),\n(28,'',28,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_department_user_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_department_user_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_department_user_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_department_user_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4df17c0698474a3a454f1f4dfc6a681d','2020-08-12 16:39:27','2025-04-23 11:04:11'),\n(29,'',29,'{\\\"zh-hans\\\": \\\"\\n### u8bf7u6c42u5730u5740\\n\\n/api/c/compapi/rbac/post_menu_tree/\\n\\n\\n\\n### u8bf7u6c42u65b9u6cd5\\n\\nPOST\\n\\n\\n### u529fu80fdu63cfu8ff0\\n\\nu83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811\\n\\n### u8bf7u6c42u53c2u6570\\n\\n#### u901au7528u53c2u6570\\n\\n| u5b57u6bb5 | u7c7bu578b | u5fc5u9009 |  u63cfu8ff0 |\\n|-----------|------------|--------|------------|\\n| bk_app_code  |  string    | u662f | u5e94u7528ID     |\\n| bk_app_secret|  string    | u662f | u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6 |\\n| bk_token     |  string    | u5426 | u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6 |\\n| bk_username  |  string    | u5426 | u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237 |\\n\\n#### u63a5u53e3u53c2u6570\\n\\n| u5b57u6bb5           | u7c7bu578b   | u5fc5u9009 | u63cfu8ff0       |\\n| -----          | ------ | ---- | --------   |\\n| platform_cname | string |  u662f  | u5e73u53f0u522bu540d   |\\n\\n### u8bf7u6c42u53c2u6570u793au4f8b\\n\\n```python\\n{\\n    \\\"bk_app_code\\\": \\\"xxxx\\\",\\n    \\\"bk_app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx-xxx-xxx-xxx-xxx\\\",\\n    \\\"platform_cname\\\":  \\\"workbench\\\"\\n}\\n```\\n\\n### u8fd4u56deu7ed3u679cu793au4f8b\\n\\n```python\\n{\\n    \\\"status_code\\\": 0,\\n    \\\"status_info\\\": \\\"string\\\",\\n    \\\"data\\\": {\\n        \\\"menu_name\\\": \\\"string\\\",\\n        \\\"menu_code\\\": \\\"string\\\",\\n        \\\"id\\\": 0,\\n        \\\"priority\\\": \\\"string\\\",\\n        \\\"menu_type\\\": \\\"platform\\\",\\n        \\\"parent_id\\\": null,\\n        \\\"menu_address\\\": \\\"string\\\",\\n        \\\"children\\\": [\\n            {\\n                \\\"menu_name\\\": \\\"string\\\",\\n                \\\"menu_code\\\": \\\"string\\\",\\n                \\\"id\\\": 0,\\n                \\\"priority\\\": \\\"string\\\",\\n                \\\"menu_type\\\": \\\"directory\\\",\\n                \\\"parent_id\\\": 1,\\n                \\\"menu_address\\\": \\\"string\\\",\\n                \\\"children\\\": [\\n                    {}\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\\\", \\\"en\\\": \\\"\\n### u8bf7u6c42u5730u5740\\n\\n/api/c/compapi/rbac/post_menu_tree/\\n\\n\\n\\n### u8bf7u6c42u65b9u6cd5\\n\\nPOST\\n\\n\\n### u529fu80fdu63cfu8ff0\\n\\nu83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811\\n\\n### u8bf7u6c42u53c2u6570\\n\\n#### u901au7528u53c2u6570\\n\\n| u5b57u6bb5 | u7c7bu578b | u5fc5u9009 |  u63cfu8ff0 |\\n|-----------|------------|--------|------------|\\n| bk_app_code  |  string    | u662f | u5e94u7528ID     |\\n| bk_app_secret|  string    | u662f | u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6 |\\n| bk_token     |  string    | u5426 | u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6 |\\n| bk_username  |  string    | u5426 | u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237 |\\n\\n#### u63a5u53e3u53c2u6570\\n\\n| u5b57u6bb5           | u7c7bu578b   | u5fc5u9009 | u63cfu8ff0       |\\n| -----          | ------ | ---- | --------   |\\n| platform_cname | string |  u662f  | u5e73u53f0u522bu540d   |\\n\\n### u8bf7u6c42u53c2u6570u793au4f8b\\n\\n```python\\n{\\n    \\\"bk_app_code\\\": \\\"xxxx\\\",\\n    \\\"bk_app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx-xxx-xxx-xxx-xxx\\\",\\n    \\\"platform_cname\\\":  \\\"workbench\\\"\\n}\\n```\\n\\n### u8fd4u56deu7ed3u679cu793au4f8b\\n\\n```python\\n{\\n    \\\"status_code\\\": 0,\\n    \\\"status_info\\\": \\\"string\\\",\\n    \\\"data\\\": {\\n        \\\"menu_name\\\": \\\"string\\\",\\n        \\\"menu_code\\\": \\\"string\\\",\\n        \\\"id\\\": 0,\\n        \\\"priority\\\": \\\"string\\\",\\n        \\\"menu_type\\\": \\\"platform\\\",\\n        \\\"parent_id\\\": null,\\n        \\\"menu_address\\\": \\\"string\\\",\\n        \\\"children\\\": [\\n            {\\n                \\\"menu_name\\\": \\\"string\\\",\\n                \\\"menu_code\\\": \\\"string\\\",\\n                \\\"id\\\": 0,\\n                \\\"priority\\\": \\\"string\\\",\\n                \\\"menu_type\\\": \\\"directory\\\",\\n                \\\"parent_id\\\": 1,\\n                \\\"menu_address\\\": \\\"string\\\",\\n                \\\"children\\\": [\\n                    {}\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\"_1\\\">u8bf7u6c42u5730u5740</h3>\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\n<h3 id=\\\"_2\\\">u8bf7u6c42u65b9u6cd5</h3>\\n<p>POST</p>\\n<h3 id=\\\"_3\\\">u529fu80fdu63cfu8ff0</h3>\\n<p>u83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811</p>\\n<h3 id=\\\"_4\\\">u8bf7u6c42u53c2u6570</h3>\\n<h4 id=\\\"_5\\\">u901au7528u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>bk_app_code</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e94u7528ID</td>\\n</tr>\\n<tr>\\n<td>bk_app_secret</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_token</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_username</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237</td>\\n</tr>\\n</tbody>\\n</table>\\n<h4 id=\\\"_6\\\">u63a5u53e3u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>platform_cname</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e73u53f0u522bu540d</td>\\n</tr>\\n</tbody>\\n</table>\\n<h3 id=\\\"_7\\\">u8bf7u6c42u53c2u6570u793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_secret&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_token&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;platform_cname&quot;</span><span class=\\\"p\\\">:</span>  <span class=\\\"s2\\\">&quot;workbench&quot;</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\n\\n\\n<h3 id=\\\"_8\\\">u8fd4u56deu7ed3u679cu793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;status_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;status_info&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;data&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;platform&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"n\\\">null</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n            <span class=\\\"p\\\">{</span>\\n                <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;directory&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">1</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n                    <span class=\\\"p\\\">{}</span>\\n                <span class=\\\"p\\\">]</span>\\n            <span class=\\\"p\\\">}</span>\\n        <span class=\\\"p\\\">]</span>\\n    <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\"_1\\\">u8bf7u6c42u5730u5740</h3>\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\n<h3 id=\\\"_2\\\">u8bf7u6c42u65b9u6cd5</h3>\\n<p>POST</p>\\n<h3 id=\\\"_3\\\">u529fu80fdu63cfu8ff0</h3>\\n<p>u83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811</p>\\n<h3 id=\\\"_4\\\">u8bf7u6c42u53c2u6570</h3>\\n<h4 id=\\\"_5\\\">u901au7528u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>bk_app_code</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e94u7528ID</td>\\n</tr>\\n<tr>\\n<td>bk_app_secret</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_token</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_username</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237</td>\\n</tr>\\n</tbody>\\n</table>\\n<h4 id=\\\"_6\\\">u63a5u53e3u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>username</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u7528u6237u540d</td>\\n</tr>\\n<tr>\\n<td>platform_cname</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e73u53f0u522bu540d</td>\\n</tr>\\n</tbody>\\n</table>\\n<h3 id=\\\"_7\\\">u8bf7u6c42u53c2u6570u793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_secret&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_token&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;platform_cname&quot;</span><span class=\\\"p\\\">:</span>  <span class=\\\"s2\\\">&quot;workbench&quot;</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\n\\n\\n<h3 id=\\\"_8\\\">u8fd4u56deu7ed3u679cu793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;status_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;status_info&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;data&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;platform&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"n\\\">null</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n            <span class=\\\"p\\\">{</span>\\n                <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;directory&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">1</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n                    <span class=\\\"p\\\">{}</span>\\n                <span class=\\\"p\\\">]</span>\\n            <span class=\\\"p\\\">}</span>\\n        <span class=\\\"p\\\">]</span>\\n    <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\\"}','99c065bd273a49badf7490263f4228df','2020-08-12 16:39:27','2020-08-14 08:01:43'),\n(30,'',30,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e2120f871a86495c2672c96af32e039e','2020-08-12 16:39:27','2020-08-14 08:01:43'),\n(31,'',31,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','926b758e732d77fe323f204ee6c78f7f','2020-08-12 16:39:27','2020-08-14 08:01:43'),\n(32,'',32,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_dep_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_dep_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_dep_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_dep_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','afd0353821cd69783cd0619b098262cc','2020-08-13 03:57:28','2020-08-13 03:57:28'),\n(33,'',33,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\": 0,\\\\n        \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_type\\\\\\\": \\\\\\\"platform\\\\\\\",\\\\n        \\\\\\\"parent_id\\\\\\\": null,\\\\n        \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"children\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 0,\\\\n                \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_type\\\\\\\": \\\\\\\"directory\\\\\\\",\\\\n                \\\\\\\"parent_id\\\\\\\": 1,\\\\n                \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"children\\\\\\\": [\\\\n                    {}\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\": 0,\\\\n        \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_type\\\\\\\": \\\\\\\"platform\\\\\\\",\\\\n        \\\\\\\"parent_id\\\\\\\": null,\\\\n        \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"children\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 0,\\\\n                \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_type\\\\\\\": \\\\\\\"directory\\\\\\\",\\\\n                \\\\\\\"parent_id\\\\\\\": 1,\\\\n                \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"children\\\\\\\": [\\\\n                    {}\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;platform&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;directory&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;platform&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;directory&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','14bc09341a5fd85724eda138009caf61','2020-08-14 08:19:55','2025-04-23 11:04:11'),\n(34,'',34,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','c42f03516b0914b2651c246b19208087','2020-08-14 08:19:55','2025-04-23 11:04:11'),\n(35,'',35,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ba08e86dafc806c52621e513f1150c10','2020-08-14 08:19:55','2025-04-23 11:04:11'),\n(36,'',36,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_user_info_from_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_user_info_from_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_user_info_from_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_user_info_from_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','b7d66ec3521574df830ee27ed4136b7c','2020-09-17 09:28:13','2025-04-23 11:04:11'),\n(37,'',37,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_read_all_message/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_read_all_message/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_read_all_message/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_read_all_message/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','9b1d63d21653caca27c4f66c4fbd35d6','2020-09-30 01:54:09','2025-04-23 11:04:11'),\n(38,'',38,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','24d1a208eb351e3ea3a64e1470ab2b66','2020-10-19 09:39:45','2025-04-23 11:04:11'),\n(39,'',39,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e5a62aa5b8c8f055e571e97260ac47f5','2020-10-19 09:55:16','2025-04-23 11:04:11'),\n(40,'',40,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/stop_or_start_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/stop_or_start_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/stop_or_start_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/stop_or_start_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','923633ce115b7ca94d69bc15ea87065b','2020-10-20 03:37:02','2025-04-23 11:04:11'),\n(41,'',41,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_host_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_host_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_host_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_host_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','648f943af52fbfcd15c521f4565e95c1','2020-10-21 03:40:14','2025-04-23 11:04:11'),\n(42,'',42,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_monitor_type_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_monitor_type_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_monitor_type_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_monitor_type_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b2e3efc290a7555cc45ca259fecd3c6d','2020-10-21 03:40:14','2025-04-23 11:04:11'),\n(43,'',44,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | string | \\\\u5426  | \\\\u8bf7\\\\u6c42\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | string | \\\\u5426  | \\\\u8bf7\\\\u6c42\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','85990a47771053b581223a28f2452f41','2020-10-21 03:40:14','2025-04-23 11:04:11'),\n(44,'',46,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b077ef6149af0b83d13360a37bb55735','2020-10-23 08:04:05','2025-04-23 11:04:11'),\n(45,'',47,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_id | int | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u7ec4id |\\\\n| search | string | \\\\u5426  | \\\\u5173\\\\u952e\\\\u8bcd |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_id | int | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u7ec4id |\\\\n| search | string | \\\\u5426  | \\\\u5173\\\\u952e\\\\u8bcd |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7ec4id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7ec4id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2905c8ba6b757c9e2976a4132c3258ab','2020-10-23 08:04:05','2025-04-23 11:04:11'),\n(46,'',48,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_trigger/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_trigger/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_trigger/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_trigger/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1aaa041e7521262d40fdf2422687e1f3','2020-10-23 08:04:05','2025-04-23 11:04:11'),\n(47,'',45,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7189e5e57df3e7b0db5eb5b4fcbc73c3','2020-10-23 08:04:27','2025-04-23 11:04:11'),\n(48,'',49,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b2beb6259658e2ab75cbce8209ddaf6a','2020-10-23 09:11:08','2025-04-23 11:04:11'),\n(49,'',50,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n    | pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n    | filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"pageSize\\\\\\\": 10,\\\\n\\\\t\\\\t\\\\\\\"filter\\\\\\\": {\\\\n\\\\t\\\\t\\\\t...\\\\n\\\\t\\\\t}\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            ...\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n    | pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n    | filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"pageSize\\\\\\\": 10,\\\\n\\\\t\\\\t\\\\\\\"filter\\\\\\\": {\\\\n\\\\t\\\\t\\\\t...\\\\n\\\\t\\\\t}\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            ...\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n| filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;page&quot;: 1,\\\\n    &quot;pageSize&quot;: 10,\\\\n    &quot;filter&quot;: {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n| filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;page&quot;: 1,\\\\n    &quot;pageSize&quot;: 10,\\\\n    &quot;filter&quot;: {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','8750b755d9f39ef25042f493f737efd7','2020-10-26 06:20:23','2025-04-23 11:04:11'),\n(50,'',51,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_user_ssh_key/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7528\\\\u6237Ssh-Key\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_user_ssh_key/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7528\\\\u6237Ssh-Key\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_user_ssh_key/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237Ssh-Key\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_user_ssh_key/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237Ssh-Key\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','e4f9e7894f1ee6150751d6f05dbab5e5','2020-11-06 10:17:38','2025-04-23 11:04:11'),\n(51,'',52,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_all_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_all_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_all_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_all_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','c7a84364e7e74f9472c28caa8d9ded64','2020-11-11 08:59:55','2025-04-23 11:04:11'),\n(52,'',53,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/send_message_from_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| IP | string | \\\\u5426  | \\\\u4e3b\\\\u673aIP |\\\\n| zabbix_host_id | string | \\\\u5426  | Zabbix\\\\u4e3b\\\\u673aID |\\\\n| message | string | \\\\u5426  | \\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/send_message_from_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| IP | string | \\\\u5426  | \\\\u4e3b\\\\u673aIP |\\\\n| zabbix_host_id | string | \\\\u5426  | Zabbix\\\\u4e3b\\\\u673aID |\\\\n| message | string | \\\\u5426  | \\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/send_message_from_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>IP</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aIP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_host_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>Zabbix\\\\u4e3b\\\\u673aID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/send_message_from_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>IP</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aIP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_host_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>Zabbix\\\\u4e3b\\\\u673aID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f37e0f0283b9aac0cda21fe4186c544f','2020-11-13 08:45:05','2025-04-23 11:04:11'),\n(53,'',54,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_alarm_rank/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u62a5\\\\u8b66\\\\u6392\\\\u540d\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| search_type | string | \\\\u5426  | \\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n| search_data | string | \\\\u5426  | \\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| group_id | string | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u7ec4id |\\\\n| host_id | string | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n| create_min_time | string | \\\\u5426  | \\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4 |\\\\n| create_max_time | string | \\\\u5426  | \\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4 |\\\\n| severity | array | \\\\u5426  | \\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_alarm_rank/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u62a5\\\\u8b66\\\\u6392\\\\u540d\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| search_type | string | \\\\u5426  | \\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n| search_data | string | \\\\u5426  | \\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| group_id | string | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u7ec4id |\\\\n| host_id | string | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n| create_min_time | string | \\\\u5426  | \\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4 |\\\\n| create_max_time | string | \\\\u5426  | \\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4 |\\\\n| severity | array | \\\\u5426  | \\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_alarm_rank/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u62a5\\\\u8b66\\\\u6392\\\\u540d</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7ec4id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_min_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_max_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>severity</td>\\\\n<td>array</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_alarm_rank/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u62a5\\\\u8b66\\\\u6392\\\\u540d</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7ec4id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_min_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_max_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>severity</td>\\\\n<td>array</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u7c7b\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ed356be93edb39af71bd992f6fca3017','2020-12-23 06:56:15','2025-04-23 11:04:11'),\n(54,'',55,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/receive_action_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| receive_user | string | \\\\u662f  | \\\\u53d1\\\\u9001\\\\u8005 |\\\\n| title | string | \\\\u662f  | \\\\u6807\\\\u9898 |\\\\n| message | string | \\\\u662f  | \\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/receive_action_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| receive_user | string | \\\\u662f  | \\\\u53d1\\\\u9001\\\\u8005 |\\\\n| title | string | \\\\u662f  | \\\\u6807\\\\u9898 |\\\\n| message | string | \\\\u662f  | \\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/receive_action_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>receive_user</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53d1\\\\u9001\\\\u8005</td>\\\\n</tr>\\\\n<tr>\\\\n<td>title</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6807\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/receive_action_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u63a5\\\\u6536\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u4fe1\\\\u606f\\\\u8f6c\\\\u53d1\\\\u81f3\\\\u5de5\\\\u4f5c\\\\u53f0</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>receive_user</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53d1\\\\u9001\\\\u8005</td>\\\\n</tr>\\\\n<tr>\\\\n<td>title</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6807\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','507ca8c8f7bba448337e2dece1df106e','2020-12-28 09:13:08','2025-04-23 11:04:11'),\n(55,'',56,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmsi/send_mail/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5               |  \\\\u7c7b\\\\u578b      | \\\\u5fc5\\\\u9009   |  \\\\u63cf\\\\u8ff0      |\\\\n|--------------------|------------|--------|------------|\\\\n| receiver           |  string    | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6 |\\\\n| receiver__username |  string    | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6 |\\\\n| sender             |  string    | \\\\u5426     | \\\\u53d1\\\\u4ef6\\\\u4eba |\\\\n| title              |  string    | \\\\u662f     | \\\\u90ae\\\\u4ef6\\\\u4e3b\\\\u9898 |\\\\n| content            |  string    | \\\\u662f     | \\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9 |\\\\n| cc                 |  string    | \\\\u5426     | \\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694 |\\\\n| cc__username       |  string    | \\\\u5426     | \\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5cc\\\\u3001cc__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5cc\\\\u4e3a\\\\u51c6 |\\\\n| body_format        |  string    | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u683c\\\\u5f0f\\\\uff0c\\\\u5305\\\\u542b&#39;Html&#39;, &#39;Text&#39;\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a&#39;Html&#39; |\\\\n| is_content_base64  |  bool      | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u662f\\\\u5426base64\\\\u7f16\\\\u7801\\\\uff0c\\\\u9ed8\\\\u8ba4False\\\\uff0c\\\\u4e0d\\\\u7f16\\\\u7801\\\\uff0c\\\\u8bf7\\\\u4f7f\\\\u7528base64.b64encode\\\\u65b9\\\\u6cd5\\\\u7f16\\\\u7801 |\\\\n| attachments        |  bool      | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u9644\\\\u4ef6 |\\\\n\\\\n##### attachments\\\\n\\\\n| \\\\u5b57\\\\u6bb5               |  \\\\u7c7b\\\\u578b      | \\\\u5fc5\\\\u9009   |  \\\\u63cf\\\\u8ff0      |\\\\n|--------------------|------------|--------|------------|\\\\n| filename           |  string    | \\\\u662f     | \\\\u6587\\\\u4ef6\\\\u540d  |\\\\n| content            |  string    | \\\\u662f     | \\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\uff0c\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u4e3a\\\\u539f\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u7684 base64 \\\\u7f16\\\\u7801\\\\u5b57\\\\u7b26\\\\u4e32  |\\\\n| type               |  string    | \\\\u5426     | \\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a\\\\u6587\\\\u4ef6\\\\u540d\\\\u540e\\\\u7f00\\\\uff0c\\\\u5982 a.png \\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\u4e3a &#39;png&#39; |\\\\n| disposition        |  string    | \\\\u5426     | \\\\u6587\\\\u4ef6 Content-Disposition\\\\uff0c\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6(type=image, jpg, png, jpeg)\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;inline&#39;\\\\uff0c\\\\u5176\\\\u4ed6\\\\u6587\\\\u4ef6\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;attachment&#39;  |\\\\n| content_id         |  string    | \\\\u5426     | \\\\u6587\\\\u4ef6 Content-ID\\\\uff0c\\\\u6587\\\\u4ef6\\\\u4e3a\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6\\\\u65f6\\\\u751f\\\\u6548\\\\uff1b\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;&lt;\\\\u6587\\\\u4ef6\\\\u540d&gt;&#39; |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb_test\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"receiver\\\\\\\": \\\\\\\"admin@bking.com\\\\\\\",\\\\n    \\\\\\\"sender\\\\\\\": \\\\\\\"admin@bking.com\\\\\\\",\\\\n    \\\\\\\"title\\\\\\\": \\\\\\\"This is a Test\\\\\\\",\\\\n    \\\\\\\"content\\\\\\\": \\\\\\\"<html>Welcome to Blueking</html>\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"code\\\\\\\": \\\\\\\"00\\\\\\\",\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"OK\\\\\\\",\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmsi/send_mail/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5               |  \\\\u7c7b\\\\u578b      | \\\\u5fc5\\\\u9009   |  \\\\u63cf\\\\u8ff0      |\\\\n|--------------------|------------|--------|------------|\\\\n| receiver           |  string    | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6 |\\\\n| receiver__username |  string    | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6 |\\\\n| sender             |  string    | \\\\u5426     | \\\\u53d1\\\\u4ef6\\\\u4eba |\\\\n| title              |  string    | \\\\u662f     | \\\\u90ae\\\\u4ef6\\\\u4e3b\\\\u9898 |\\\\n| content            |  string    | \\\\u662f     | \\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9 |\\\\n| cc                 |  string    | \\\\u5426     | \\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694 |\\\\n| cc__username       |  string    | \\\\u5426     | \\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5cc\\\\u3001cc__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5cc\\\\u4e3a\\\\u51c6 |\\\\n| body_format        |  string    | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u683c\\\\u5f0f\\\\uff0c\\\\u5305\\\\u542b&#39;Html&#39;, &#39;Text&#39;\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a&#39;Html&#39; |\\\\n| is_content_base64  |  bool      | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u662f\\\\u5426base64\\\\u7f16\\\\u7801\\\\uff0c\\\\u9ed8\\\\u8ba4False\\\\uff0c\\\\u4e0d\\\\u7f16\\\\u7801\\\\uff0c\\\\u8bf7\\\\u4f7f\\\\u7528base64.b64encode\\\\u65b9\\\\u6cd5\\\\u7f16\\\\u7801 |\\\\n| attachments        |  bool      | \\\\u5426     | \\\\u90ae\\\\u4ef6\\\\u9644\\\\u4ef6 |\\\\n\\\\n##### attachments\\\\n\\\\n| \\\\u5b57\\\\u6bb5               |  \\\\u7c7b\\\\u578b      | \\\\u5fc5\\\\u9009   |  \\\\u63cf\\\\u8ff0      |\\\\n|--------------------|------------|--------|------------|\\\\n| filename           |  string    | \\\\u662f     | \\\\u6587\\\\u4ef6\\\\u540d  |\\\\n| content            |  string    | \\\\u662f     | \\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\uff0c\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u4e3a\\\\u539f\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u7684 base64 \\\\u7f16\\\\u7801\\\\u5b57\\\\u7b26\\\\u4e32  |\\\\n| type               |  string    | \\\\u5426     | \\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a\\\\u6587\\\\u4ef6\\\\u540d\\\\u540e\\\\u7f00\\\\uff0c\\\\u5982 a.png \\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\u4e3a &#39;png&#39; |\\\\n| disposition        |  string    | \\\\u5426     | \\\\u6587\\\\u4ef6 Content-Disposition\\\\uff0c\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6(type=image, jpg, png, jpeg)\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;inline&#39;\\\\uff0c\\\\u5176\\\\u4ed6\\\\u6587\\\\u4ef6\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;attachment&#39;  |\\\\n| content_id         |  string    | \\\\u5426     | \\\\u6587\\\\u4ef6 Content-ID\\\\uff0c\\\\u6587\\\\u4ef6\\\\u4e3a\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6\\\\u65f6\\\\u751f\\\\u6548\\\\uff1b\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;&lt;\\\\u6587\\\\u4ef6\\\\u540d&gt;&#39; |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb_test\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"receiver\\\\\\\": \\\\\\\"admin@bking.com\\\\\\\",\\\\n    \\\\\\\"sender\\\\\\\": \\\\\\\"admin@bking.com\\\\\\\",\\\\n    \\\\\\\"title\\\\\\\": \\\\\\\"This is a Test\\\\\\\",\\\\n    \\\\\\\"content\\\\\\\": \\\\\\\"<html>Welcome to Blueking</html>\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"code\\\\\\\": \\\\\\\"00\\\\\\\",\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"OK\\\\\\\",\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmsi/send_mail/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>receiver</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>receiver__username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>sender</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53d1\\\\u4ef6\\\\u4eba</td>\\\\n</tr>\\\\n<tr>\\\\n<td>title</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u4e3b\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>content</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>cc</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694</td>\\\\n</tr>\\\\n<tr>\\\\n<td>cc__username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5cc\\\\u3001cc__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5cc\\\\u4e3a\\\\u51c6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>body_format</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u683c\\\\u5f0f\\\\uff0c\\\\u5305\\\\u542b&#39;Html&#39;, &#39;Text&#39;\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a&#39;Html&#39;</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_content_base64</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u662f\\\\u5426base64\\\\u7f16\\\\u7801\\\\uff0c\\\\u9ed8\\\\u8ba4False\\\\uff0c\\\\u4e0d\\\\u7f16\\\\u7801\\\\uff0c\\\\u8bf7\\\\u4f7f\\\\u7528base64.b64encode\\\\u65b9\\\\u6cd5\\\\u7f16\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>attachments</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u9644\\\\u4ef6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h5 id=\\\\\\\"attachments\\\\\\\">attachments</h5>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>filename</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>content</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\uff0c\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u4e3a\\\\u539f\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u7684 base64 \\\\u7f16\\\\u7801\\\\u5b57\\\\u7b26\\\\u4e32</td>\\\\n</tr>\\\\n<tr>\\\\n<td>type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a\\\\u6587\\\\u4ef6\\\\u540d\\\\u540e\\\\u7f00\\\\uff0c\\\\u5982 a.png \\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\u4e3a &#39;png&#39;</td>\\\\n</tr>\\\\n<tr>\\\\n<td>disposition</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6 Content-Disposition\\\\uff0c\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6(type=image, jpg, png, jpeg)\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;inline&#39;\\\\uff0c\\\\u5176\\\\u4ed6\\\\u6587\\\\u4ef6\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;attachment&#39;</td>\\\\n</tr>\\\\n<tr>\\\\n<td>content_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6 Content-ID\\\\uff0c\\\\u6587\\\\u4ef6\\\\u4e3a\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6\\\\u65f6\\\\u751f\\\\u6548\\\\uff1b\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;&lt;\\\\u6587\\\\u4ef6\\\\u540d&gt;&#39;</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb_test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;receiver&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;admin@bking.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;sender&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;admin@bking.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;title&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;This is a Test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;content&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&lt;html&gt;Welcome to Blueking&lt;/html&gt;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;00&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OK&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmsi/send_mail/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>receiver</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>receiver__username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u63a5\\\\u6536\\\\u8005\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5receiver\\\\u3001receiver__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5receiver\\\\u4e3a\\\\u51c6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>sender</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53d1\\\\u4ef6\\\\u4eba</td>\\\\n</tr>\\\\n<tr>\\\\n<td>title</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u4e3b\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>content</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>cc</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u90ae\\\\u4ef6\\\\u5b8c\\\\u6574\\\\u5730\\\\u5740\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694</td>\\\\n</tr>\\\\n<tr>\\\\n<td>cc__username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6284\\\\u9001\\\\u4eba\\\\uff0c\\\\u5305\\\\u542b\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u7528\\\\u6237\\\\u9700\\\\u5728\\\\u84dd\\\\u9cb8\\\\u5e73\\\\u53f0\\\\u6ce8\\\\u518c\\\\uff0c\\\\u591a\\\\u4e2a\\\\u4ee5\\\\u9017\\\\u53f7\\\\u5206\\\\u9694\\\\uff0c\\\\u82e5cc\\\\u3001cc__username\\\\u540c\\\\u65f6\\\\u5b58\\\\u5728\\\\uff0c\\\\u4ee5cc\\\\u4e3a\\\\u51c6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>body_format</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u683c\\\\u5f0f\\\\uff0c\\\\u5305\\\\u542b&#39;Html&#39;, &#39;Text&#39;\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a&#39;Html&#39;</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_content_base64</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u662f\\\\u5426base64\\\\u7f16\\\\u7801\\\\uff0c\\\\u9ed8\\\\u8ba4False\\\\uff0c\\\\u4e0d\\\\u7f16\\\\u7801\\\\uff0c\\\\u8bf7\\\\u4f7f\\\\u7528base64.b64encode\\\\u65b9\\\\u6cd5\\\\u7f16\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>attachments</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u90ae\\\\u4ef6\\\\u9644\\\\u4ef6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h5 id=\\\\\\\"attachments\\\\\\\">attachments</h5>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>filename</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>content</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\uff0c\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u4e3a\\\\u539f\\\\u6587\\\\u4ef6\\\\u5185\\\\u5bb9\\\\u7684 base64 \\\\u7f16\\\\u7801\\\\u5b57\\\\u7b26\\\\u4e32</td>\\\\n</tr>\\\\n<tr>\\\\n<td>type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a\\\\u6587\\\\u4ef6\\\\u540d\\\\u540e\\\\u7f00\\\\uff0c\\\\u5982 a.png \\\\u6587\\\\u4ef6\\\\u7c7b\\\\u578b\\\\u4e3a &#39;png&#39;</td>\\\\n</tr>\\\\n<tr>\\\\n<td>disposition</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6 Content-Disposition\\\\uff0c\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6(type=image, jpg, png, jpeg)\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;inline&#39;\\\\uff0c\\\\u5176\\\\u4ed6\\\\u6587\\\\u4ef6\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;attachment&#39;</td>\\\\n</tr>\\\\n<tr>\\\\n<td>content_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6 Content-ID\\\\uff0c\\\\u6587\\\\u4ef6\\\\u4e3a\\\\u56fe\\\\u7247\\\\u6587\\\\u4ef6\\\\u65f6\\\\u751f\\\\u6548\\\\uff1b\\\\u9ed8\\\\u8ba4\\\\u4e3a &#39;&lt;\\\\u6587\\\\u4ef6\\\\u540d&gt;&#39;</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb_test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;receiver&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;admin@bking.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;sender&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;admin@bking.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;title&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;This is a Test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;content&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&lt;html&gt;Welcome to Blueking&lt;/html&gt;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;00&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OK&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7f446cf05b75e9ca6b8af2bca131d509','2020-12-29 08:14:04','2020-12-29 08:14:04'),\n(56,'',57,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_all_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u6d4b\\\\u8bd5API\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n        \\\\\\\"data\\\\\\\": {\\\\n\\\\t\\\\t\\\\t\\\\\\\"test\\\\\\\": \\\\\\\"Test\\\\\\\"\\\\n        }\\\\n    }\\\\n    ```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_all_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u6d4b\\\\u8bd5API\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n        \\\\\\\"data\\\\\\\": {\\\\n\\\\t\\\\t\\\\t\\\\\\\"test\\\\\\\": \\\\\\\"Test\\\\\\\"\\\\n        }\\\\n    }\\\\n    ```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_all_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u6d4b\\\\u8bd5API\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;\\\\n    &quot;data&quot;: {\\\\n        &quot;test&quot;: &quot;Test&quot;\\\\n    }\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_all_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u6d4b\\\\u8bd5API\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;\\\\n    &quot;data&quot;: {\\\\n        &quot;test&quot;: &quot;Test&quot;\\\\n    }\\\\n}\\\\n```\\\\n</pre></div>\\\"}','a4d8a13b140246e3374eddacab35eee9','2021-01-11 04:11:47','2021-01-11 04:11:47'),\n(57,'',58,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_test/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6d4b\\\\u8bd5ESB\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0        |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n     \\\\\\\"code\\\\\\\": 200,\\\\n     \\\\\\\"apicode\\\\\\\": 20007,\\\\n     \\\\\\\"result\\\\\\\": true,\\\\n     \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n     \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n     \\\\\\\"data\\\\\\\": {\\\\n         \\\\\\\"test\\\\\\\": \\\\\\\"test\\\\\\\"\\\\n     }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_test/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6d4b\\\\u8bd5ESB\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0        |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n     \\\\\\\"code\\\\\\\": 200,\\\\n     \\\\\\\"apicode\\\\\\\": 20007,\\\\n     \\\\\\\"result\\\\\\\": true,\\\\n     \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n     \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n     \\\\\\\"data\\\\\\\": {\\\\n         \\\\\\\"test\\\\\\\": \\\\\\\"test\\\\\\\"\\\\n     }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_test/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6d4b\\\\u8bd5ESB</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n         <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span>\\\\n     <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_test/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6d4b\\\\u8bd5ESB</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n         <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span>\\\\n     <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d0f5750200d8c9890a56dc17edde4931','2021-01-11 07:32:53','2025-04-23 11:04:11'),\n(58,'',59,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_cloud_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_cloud_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_cloud_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_cloud_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','548af4af39bc4921ed240fa37a9b637a','2021-01-12 02:28:14','2021-01-12 02:28:14'),\n(59,'',60,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_all_cloud_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_all_cloud_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_all_cloud_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_all_cloud_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','40924ba407cf42965fbc1f33ffc2b12e','2021-01-12 03:38:01','2025-04-23 11:04:11'),\n(60,'',61,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_cloud_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_cloud_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_cloud_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_cloud_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7c6f5fa9464f420a6638ca4e63b72835','2021-01-12 03:38:01','2025-04-23 11:04:11'),\n(61,'',62,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_field/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20007,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            {\\\\n\\\\t\\\\t\\\\t    code: \\\\\\\"APPLICATION_name\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tname: \\\\\\\"\\\\u540d\\\\u79f0\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tattribute: { },\\\\n\\\\t\\\\t\\\\t\\\\tindex: 1,\\\\n\\\\t\\\\t\\\\t\\\\tnot_null: true,\\\\n\\\\t\\\\t\\\\t\\\\tbuilt_in: null,\\\\n\\\\t\\\\t\\\\t\\\\tis_unique: null,\\\\n\\\\t\\\\t\\\\t\\\\ttype_name: \\\\\\\"str\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tmodel_code: \\\\\\\"APPLICATION\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tfield_group_code: \\\\\\\"APPLICATION_default\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tis_relationship_field: \\\\\\\"\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tis_display: true,\\\\n\\\\t\\\\t\\\\t\\\\tdescribe: \\\\\\\"\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\t},\\\\n        }\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_field/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20007,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            {\\\\n\\\\t\\\\t\\\\t    code: \\\\\\\"APPLICATION_name\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tname: \\\\\\\"\\\\u540d\\\\u79f0\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tattribute: { },\\\\n\\\\t\\\\t\\\\t\\\\tindex: 1,\\\\n\\\\t\\\\t\\\\t\\\\tnot_null: true,\\\\n\\\\t\\\\t\\\\t\\\\tbuilt_in: null,\\\\n\\\\t\\\\t\\\\t\\\\tis_unique: null,\\\\n\\\\t\\\\t\\\\t\\\\ttype_name: \\\\\\\"str\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tmodel_code: \\\\\\\"APPLICATION\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tfield_group_code: \\\\\\\"APPLICATION_default\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tis_relationship_field: \\\\\\\"\\\\\\\",\\\\n\\\\t\\\\t\\\\t\\\\tis_display: true,\\\\n\\\\t\\\\t\\\\t\\\\tdescribe: \\\\\\\"\\\\\\\"\\\\n\\\\t\\\\t\\\\t\\\\t},\\\\n        }\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_field/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20007,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        {\\\\n            code: &quot;APPLICATION_name&quot;,\\\\n            name: &quot;\\\\u540d\\\\u79f0&quot;,\\\\n            attribute: { },\\\\n            index: 1,\\\\n            not_null: true,\\\\n            built_in: null,\\\\n            is_unique: null,\\\\n            type_name: &quot;str&quot;,\\\\n            model_code: &quot;APPLICATION&quot;,\\\\n            field_group_code: &quot;APPLICATION_default&quot;,\\\\n            is_relationship_field: &quot;&quot;,\\\\n            is_display: true,\\\\n            describe: &quot;&quot;\\\\n            },\\\\n    }\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_field/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20007,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        {\\\\n            code: &quot;APPLICATION_name&quot;,\\\\n            name: &quot;\\\\u540d\\\\u79f0&quot;,\\\\n            attribute: { },\\\\n            index: 1,\\\\n            not_null: true,\\\\n            built_in: null,\\\\n            is_unique: null,\\\\n            type_name: &quot;str&quot;,\\\\n            model_code: &quot;APPLICATION&quot;,\\\\n            field_group_code: &quot;APPLICATION_default&quot;,\\\\n            is_relationship_field: &quot;&quot;,\\\\n            is_display: true,\\\\n            describe: &quot;&quot;\\\\n            },\\\\n    }\\\\n}\\\\n```\\\\n</pre></div>\\\"}','e25074de3b2a8cf6993c39913143d772','2021-01-12 09:04:20','2025-04-23 11:04:11'),\n(62,'',63,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\"}','cc9608b5e19187ff3c6347ac2b2505b5','2021-01-15 15:38:46','2025-04-23 11:04:11'),\n(63,'',64,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/delete_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u5220\\\\u9664\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/delete_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u5220\\\\u9664\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/delete_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u5220\\\\u9664\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/delete_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u5220\\\\u9664\\\\u4e1a\\\\u52a1.\\\\u5e94\\\\u7528.\\\\u670d\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| business_list | array | \\\\u662f    | \\\\u4e1a\\\\u52a1\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\"}','16cbb4e0407201bcfa6ff095c586449e','2021-01-18 08:31:17','2025-04-23 11:04:11'),\n(64,'',65,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n  \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name | str | \\\\u662f | \\\\u6a21\\\\u578b\\\\u540d\\\\u79f0 |\\\\n| field_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n| search | str | \\\\u662f   | \\\\u641c\\\\u7d22 |\\\\n| current | int | \\\\u5426    | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n| pageSize | int | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n  \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name | str | \\\\u662f | \\\\u6a21\\\\u578b\\\\u540d\\\\u79f0 |\\\\n| field_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n| search | str | \\\\u662f   | \\\\u641c\\\\u7d22 |\\\\n| current | int | \\\\u5426    | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n| pageSize | int | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2ba28151e604bcef0e2d17be63731236','2021-01-30 06:02:32','2025-04-23 11:04:12'),\n(65,'',66,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_link_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| method | str | \\\\u662f    | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\uff08POST, DELETE\\\\uff09 |\\\\n\\\\t| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n\\\\t| model_code_name | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540d |\\\\n\\\\t| field_code | str | \\\\u662f    | \\\\u5b57\\\\u6bb5code(\\\\u589e\\\\u52a0) |\\\\n\\\\t| target_code_list | list | \\\\u662f    | \\\\u5b57\\\\u6bb5code\\\\uff08\\\\u5220\\\\u9664\\\\uff09 |\\\\n\\\\t| target_code | int | \\\\u662f    | \\\\u5173\\\\u8054\\\\u7684\\\\u76ee\\\\u6807code |\\\\n\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_link_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| method | str | \\\\u662f    | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\uff08POST, DELETE\\\\uff09 |\\\\n\\\\t| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n\\\\t| model_code_name | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540d |\\\\n\\\\t| field_code | str | \\\\u662f    | \\\\u5b57\\\\u6bb5code(\\\\u589e\\\\u52a0) |\\\\n\\\\t| target_code_list | list | \\\\u662f    | \\\\u5b57\\\\u6bb5code\\\\uff08\\\\u5220\\\\u9664\\\\uff09 |\\\\n\\\\t| target_code | int | \\\\u662f    | \\\\u5173\\\\u8054\\\\u7684\\\\u76ee\\\\u6807code |\\\\n\\\\n\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_link_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| method | str | \\\\u662f    | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\uff08POST, DELETE\\\\uff09 |\\\\n| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n| model_code_name | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540d |\\\\n| field_code | str | \\\\u662f    | \\\\u5b57\\\\u6bb5code(\\\\u589e\\\\u52a0) |\\\\n| target_code_list | list | \\\\u662f    | \\\\u5b57\\\\u6bb5code\\\\uff08\\\\u5220\\\\u9664\\\\uff09 |\\\\n| target_code | int | \\\\u662f    | \\\\u5173\\\\u8054\\\\u7684\\\\u76ee\\\\u6807code |\\\\n\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_link_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| method | str | \\\\u662f    | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\uff08POST, DELETE\\\\uff09 |\\\\n| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n| model_code_name | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540d |\\\\n| field_code | str | \\\\u662f    | \\\\u5b57\\\\u6bb5code(\\\\u589e\\\\u52a0) |\\\\n| target_code_list | list | \\\\u662f    | \\\\u5b57\\\\u6bb5code\\\\uff08\\\\u5220\\\\u9664\\\\uff09 |\\\\n| target_code | int | \\\\u662f    | \\\\u5173\\\\u8054\\\\u7684\\\\u76ee\\\\u6807code |\\\\n\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\"}','22abc294cd922a656d9202e8df75ad25','2021-01-30 08:39:23','2025-04-23 11:04:12'),\n(66,'',67,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_by_rel_data/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | inst_model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\t| model_code_name | str | \\\\u662f | \\\\u6a21\\\\u578b\\\\u540d\\\\u79f0 |\\\\n\\\\t| field_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n\\\\t| search | str | \\\\u662f   | \\\\u641c\\\\u7d22 |  \\\\n\\\\t| current | int | \\\\u662f    | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n\\\\t| pageSize | int | \\\\u662f    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_by_rel_data/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | inst_model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\t| model_code_name | str | \\\\u662f | \\\\u6a21\\\\u578b\\\\u540d\\\\u79f0 |\\\\n\\\\t| field_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n\\\\t| search | str | \\\\u662f   | \\\\u641c\\\\u7d22 |  \\\\n\\\\t| current | int | \\\\u662f    | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n\\\\t| pageSize | int | \\\\u662f    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_by_rel_data/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name | str | \\\\u662f | \\\\u6a21\\\\u578b\\\\u540d\\\\u79f0 |\\\\n| field_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n| search | str | \\\\u662f   | \\\\u641c\\\\u7d22 |  \\\\n| current | int | \\\\u662f    | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n| pageSize | int | \\\\u662f    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_by_rel_data/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name | str | \\\\u662f | \\\\u6a21\\\\u578b\\\\u540d\\\\u79f0 |\\\\n| field_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n| search | str | \\\\u662f   | \\\\u641c\\\\u7d22 |  \\\\n| current | int | \\\\u662f    | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n| pageSize | int | \\\\u662f    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\"}','c4a4ffaca4d312939838c77966191274','2021-02-01 07:20:01','2025-04-23 11:04:12'),\n(67,'',68,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_upload_file/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e(\\\\u6682\\\\u672a\\\\u627e\\\\u5230API)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n  \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u5426   | \\\\u9644\\\\u4ef6code |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_upload_file/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e(\\\\u6682\\\\u672a\\\\u627e\\\\u5230API)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n  \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u5426   | \\\\u9644\\\\u4ef6code |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_upload_file/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e(\\\\u6682\\\\u672a\\\\u627e\\\\u5230API)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9644\\\\u4ef6code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_upload_file/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u6570\\\\u636e(\\\\u6682\\\\u672a\\\\u627e\\\\u5230API)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9644\\\\u4ef6code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','c6f46528d0546546322f22aca1b34ac4','2021-02-03 04:04:38','2026-03-03 07:53:05'),\n(68,'',69,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','58b836bef0c9ed99e3270d45a74cc274','2021-03-10 07:21:55','2025-04-23 11:04:12'),\n(69,'',70,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','66010dee275aa7bc00b9fa879a3e530b','2021-03-10 07:21:55','2025-04-23 11:04:12'),\n(70,'',71,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','027161f24a613399e7c8adf6a0179afc','2021-03-10 07:21:55','2025-04-23 11:04:12'),\n(71,'',72,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3bc8a74096e91f8c7f57188836298a5c','2021-03-10 07:21:55','2025-04-23 11:04:12'),\n(72,'',73,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','36bd2f4c6cfe7853ca94546359c1ee78','2021-03-10 07:55:36','2025-04-23 11:04:12'),\n(73,'',74,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_workorder_sync/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_workorder_sync/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_workorder_sync/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_workorder_sync/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','edab510429632daf61a4bb8be904e543','2021-04-13 10:22:04','2025-04-23 11:04:12'),\n(74,'',75,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_sync_data/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\u548c\\\\u7ec4\\\\u7ec7\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_sync_data/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\u548c\\\\u7ec4\\\\u7ec7\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_sync_data/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\u548c\\\\u7ec4\\\\u7ec7\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_sync_data/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\u548c\\\\u7ec4\\\\u7ec7\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','d8391aeb830e1e60ff9144a088a55ee5','2021-04-13 10:22:04','2025-04-23 11:04:12'),\n(75,'',76,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/sync_order_user_message/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u5de5\\\\u5355\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/sync_order_user_message/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u5de5\\\\u5355\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/sync_order_user_message/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u5de5\\\\u5355\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/sync_order_user_message/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u5de5\\\\u5355\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','a83553fc05e7c1210957955a43a4fd62','2021-04-14 11:09:53','2025-04-23 11:04:12'),\n(76,'',77,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_group_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868\\\\uff0c\\\\u5305\\\\u62ec\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u672a\\\\u5206\\\\u7ec4-\\\\u641c\\\\u7d22\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_group_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868\\\\uff0c\\\\u5305\\\\u62ec\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u672a\\\\u5206\\\\u7ec4-\\\\u641c\\\\u7d22\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_group_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868\\\\uff0c\\\\u5305\\\\u62ec\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u672a\\\\u5206\\\\u7ec4-\\\\u641c\\\\u7d22\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_group_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868\\\\uff0c\\\\u5305\\\\u62ec\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u672a\\\\u5206\\\\u7ec4-\\\\u641c\\\\u7d22\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a91b33a6a27ec3f69d42530ceea1b918','2021-04-21 10:20:56','2025-04-23 11:04:12'),\n(77,'',78,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/update_host_sign_variable_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u4e3b\\\\u673a-\\\\u6807\\\\u8bb0\\\\uff0c\\\\u53d8\\\\u91cf\\\\uff0c\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| IP | string | \\\\u5426  | \\\\u4e3b\\\\u673aIP |\\\\n| zabbix_host_id | string | \\\\u5426  | Zabbix\\\\u4e3b\\\\u673aID |\\\\n| message | string | \\\\u5426  | \\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/update_host_sign_variable_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u4e3b\\\\u673a-\\\\u6807\\\\u8bb0\\\\uff0c\\\\u53d8\\\\u91cf\\\\uff0c\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| IP | string | \\\\u5426  | \\\\u4e3b\\\\u673aIP |\\\\n| zabbix_host_id | string | \\\\u5426  | Zabbix\\\\u4e3b\\\\u673aID |\\\\n| message | string | \\\\u5426  | \\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/update_host_sign_variable_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u4e3b\\\\u673a-\\\\u6807\\\\u8bb0\\\\uff0c\\\\u53d8\\\\u91cf\\\\uff0c\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>IP</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aIP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_host_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>Zabbix\\\\u4e3b\\\\u673aID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/update_host_sign_variable_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u4e3b\\\\u673a-\\\\u6807\\\\u8bb0\\\\uff0c\\\\u53d8\\\\u91cf\\\\uff0c\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>IP</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aIP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_host_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>Zabbix\\\\u4e3b\\\\u673aID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ae83fc5c3584852b1c72418195ef9d58','2021-04-22 07:06:27','2025-04-23 11:04:12'),\n(78,'',79,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_zabbix_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Zabbix\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_zabbix_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Zabbix\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_zabbix_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Zabbix\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_zabbix_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Zabbix\\\\u76d1\\\\u63a7\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4c9bbeef5129baeb2ab875dfba7245d6','2021-04-22 11:14:14','2025-04-23 11:04:12'),\n(79,'',80,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_group_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\uff0c\\\\u5305\\\\u62ec\\\\u4e3b\\\\u673a\\\\u6570\\\\u91cf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_list | list | \\\\u662f  | \\\\u5206\\\\u7ec4id\\\\u5217\\\\u8868 |\\\\n| filters | dict | \\\\u662f  | \\\\u641c\\\\u7d22\\\\u53c2\\\\u6570 |\\\\n| token_data | string | \\\\u662f  | token |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_group_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\uff0c\\\\u5305\\\\u62ec\\\\u4e3b\\\\u673a\\\\u6570\\\\u91cf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_list | list | \\\\u662f  | \\\\u5206\\\\u7ec4id\\\\u5217\\\\u8868 |\\\\n| filters | dict | \\\\u662f  | \\\\u641c\\\\u7d22\\\\u53c2\\\\u6570 |\\\\n| token_data | string | \\\\u662f  | token |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_group_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\uff0c\\\\u5305\\\\u62ec\\\\u4e3b\\\\u673a\\\\u6570\\\\u91cf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5206\\\\u7ec4id\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_group_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u5206\\\\u7ec4\\\\uff0c\\\\u5305\\\\u62ec\\\\u4e3b\\\\u673a\\\\u6570\\\\u91cf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5206\\\\u7ec4id\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','81c367712ad2add754f933ee3b6afd68','2021-04-29 01:33:08','2025-04-23 11:04:12'),\n(80,'',81,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_admin_from_group_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_id | int/str | \\\\u662f  | \\\\u5206\\\\u7ec4ID 1 or \\\\\\\"1,2,3\\\\\\\" |\\\\n| token_data | string | \\\\u662f  | token |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d\\\\u7528\\\\u6765\\\\u5b9a\\\\u4f4d\\\\u6388\\\\u6743\\\\u5206\\\\u7ec4 |\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_admin_from_group_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_id | int/str | \\\\u662f  | \\\\u5206\\\\u7ec4ID 1 or \\\\\\\"1,2,3\\\\\\\" |\\\\n| token_data | string | \\\\u662f  | token |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d\\\\u7528\\\\u6765\\\\u5b9a\\\\u4f4d\\\\u6388\\\\u6743\\\\u5206\\\\u7ec4 |\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_admin_from_group_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_7\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>int/str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5206\\\\u7ec4ID 1 or \\\\\\\"1,2,3\\\\\\\"</td>\\\\n</tr>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d\\\\u7528\\\\u6765\\\\u5b9a\\\\u4f4d\\\\u6388\\\\u6743\\\\u5206\\\\u7ec4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_admin_from_group_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_7\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>int/str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5206\\\\u7ec4ID 1 or \\\\\\\"1,2,3\\\\\\\"</td>\\\\n</tr>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d\\\\u7528\\\\u6765\\\\u5b9a\\\\u4f4d\\\\u6388\\\\u6743\\\\u5206\\\\u7ec4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\"}','291f36a190cf2d544a1fcca3066f0388','2021-04-29 01:35:01','2025-04-23 11:04:12'),\n(81,'',82,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_model_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u603b\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u662f  | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name_list | list | \\\\u662f  | \\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| field_code_list | dict | \\\\u662f  | \\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_model_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u603b\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u662f  | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name_list | list | \\\\u662f  | \\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| field_code_list | dict | \\\\u662f  | \\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_model_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u603b\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>inst_model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_model_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u603b\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>inst_model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ef177d38f051114a11f45c9d33c57618','2021-05-07 11:58:02','2025-04-23 11:04:12'),\n(82,'',83,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/business_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u4e1a\\\\u52a1\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/business_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u4e1a\\\\u52a1\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/business_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u4e1a\\\\u52a1\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/business_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u4e1a\\\\u52a1\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','87682f38ade487220b3a3301320a62a0','2021-05-11 07:58:49','2025-04-23 11:04:12'),\n(83,'',84,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2656df7f726d295622e2e09c7adeb2ef','2021-06-01 08:47:30','2025-04-23 11:04:12'),\n(84,'',85,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','89eb58789ee0022da783ec929e3f4d5e','2021-06-01 09:32:36','2025-04-23 11:04:12'),\n(85,'',86,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/update_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d   |\\\\n| ch_name      | string |  \\\\u662f  | \\\\u4e2d\\\\u6587\\\\u540d  |\\\\n| phone    | string |  \\\\u662f  |  \\\\u7535\\\\u8bdd   |\\\\n| email    | string |  \\\\u662f  | \\\\u7535\\\\u5b50\\\\u90ae\\\\u7bb1   |\\\\n| set_password    | string |  \\\\u5426  | \\\\u662f\\\\u5426\\\\u5df2\\\\u8bbe\\\\u7f6e\\\\u5bc6\\\\u7801   |\\\\n| params    | string |  \\\\u5426  | \\\\u989d\\\\u5916\\\\u53c2\\\\u6570   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/update_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d   |\\\\n| ch_name      | string |  \\\\u662f  | \\\\u4e2d\\\\u6587\\\\u540d  |\\\\n| phone    | string |  \\\\u662f  |  \\\\u7535\\\\u8bdd   |\\\\n| email    | string |  \\\\u662f  | \\\\u7535\\\\u5b50\\\\u90ae\\\\u7bb1   |\\\\n| set_password    | string |  \\\\u5426  | \\\\u662f\\\\u5426\\\\u5df2\\\\u8bbe\\\\u7f6e\\\\u5bc6\\\\u7801   |\\\\n| params    | string |  \\\\u5426  | \\\\u989d\\\\u5916\\\\u53c2\\\\u6570   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/update_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ch_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e2d\\\\u6587\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>phone</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7535\\\\u8bdd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>email</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7535\\\\u5b50\\\\u90ae\\\\u7bb1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>set_password</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u5df2\\\\u8bbe\\\\u7f6e\\\\u5bc6\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u989d\\\\u5916\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/update_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ch_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e2d\\\\u6587\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>phone</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7535\\\\u8bdd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>email</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7535\\\\u5b50\\\\u90ae\\\\u7bb1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>set_password</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u5df2\\\\u8bbe\\\\u7f6e\\\\u5bc6\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u989d\\\\u5916\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','5907db308d838426cd390709b7c94cdc','2021-07-08 02:53:57','2025-04-28 09:12:35'),\n(86,'',87,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| script_url | string | \\\\u662f  | \\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL |\\\\n| script_arg | string | \\\\u5426  | \\\\u811a\\\\u672c\\\\u53c2\\\\u6570 |\\\\n| timeout | string | \\\\u662f  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4 |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"script_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"script_arg\\\\\\\": \\\\\\\"arg1 arg2 arg3\\\\\\\"\\\\n    \\\\\\\"timeout\\\\\\\": 600\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| script_url | string | \\\\u662f  | \\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL |\\\\n| script_arg | string | \\\\u5426  | \\\\u811a\\\\u672c\\\\u53c2\\\\u6570 |\\\\n| timeout | string | \\\\u662f  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4 |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"script_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"script_arg\\\\\\\": \\\\\\\"arg1 arg2 arg3\\\\\\\"\\\\n    \\\\\\\"timeout\\\\\\\": 600\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_arg</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>timeout</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_arg&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;arg1 arg2 arg3&quot;</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;timeout&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">600</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_arg</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>timeout</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_arg&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;arg1 arg2 arg3&quot;</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;timeout&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">600</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','901adccb6bd6b37f840ba797cab2813c','2021-07-28 00:59:55','2025-04-23 11:04:12'),\n(87,'',88,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_request_id_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | \\\\u8bf7\\\\u6c42ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_request_id_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | \\\\u8bf7\\\\u6c42ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_request_id_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_request_id_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','191060af88d3a5a8203e7cdc3e783d9a','2021-07-28 00:59:55','2025-04-23 11:04:12'),\n(88,'',89,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/encrypt_text/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u52a0\\\\u5bc6\\\\u6587\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| text | str | \\\\u662f    | \\\\u5b57\\\\u7b26\\\\u4e32 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"text\\\\\\\": \\\\\\\"str\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data: \\\\\\\"wfgfgdvdfdgbvaemhgbvzshmhgnfbdsafdgbvcbvxcdfghgdsafdngbdv\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/encrypt_text/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u52a0\\\\u5bc6\\\\u6587\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| text | str | \\\\u662f    | \\\\u5b57\\\\u7b26\\\\u4e32 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"text\\\\\\\": \\\\\\\"str\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data: \\\\\\\"wfgfgdvdfdgbvaemhgbvzshmhgnfbdsafdgbvcbvxcdfghgdsafdngbdv\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/encrypt_text/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u52a0\\\\u5bc6\\\\u6587\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>text</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b57\\\\u7b26\\\\u4e32</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;str&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data: &quot;</span><span class=\\\\\\\"n\\\\\\\">wfgfgdvdfdgbvaemhgbvzshmhgnfbdsafdgbvcbvxcdfghgdsafdngbdv</span><span class=\\\\\\\"s2\\\\\\\">&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/encrypt_text/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u52a0\\\\u5bc6\\\\u6587\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>text</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b57\\\\u7b26\\\\u4e32</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;str&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data: &quot;</span><span class=\\\\\\\"n\\\\\\\">wfgfgdvdfdgbvaemhgbvzshmhgnfbdsafdgbvcbvxcdfghgdsafdngbdv</span><span class=\\\\\\\"s2\\\\\\\">&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d9c8965e381062e6ced9396737eafbaf','2021-08-16 08:01:18','2025-04-23 11:04:12'),\n(89,'',90,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_group_sync/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_group_sync/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_group_sync/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_group_sync/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','52b5a0625e2e692a17d68e79d779f25d','2021-08-23 15:14:27','2025-04-23 11:04:12'),\n(90,'',91,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/sync_user_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u77e5\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/sync_user_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u77e5\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/sync_user_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u77e5\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/sync_user_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u77e5\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','f6fdf212609eb0b026a2438f12d4d4d2','2021-08-24 06:38:44','2025-04-23 11:04:12'),\n(91,'',92,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_file/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| file_url | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL |\\\\n| file_path | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"file_path\\\\\\\": \\\\\\\"/tmp/\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_file/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| file_url | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL |\\\\n| file_path | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"file_path\\\\\\\": \\\\\\\"/tmp/\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_file/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_path</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_path&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/tmp/&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_file/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_path</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_path&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/tmp/&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','940e113d3f737a4f61824419cc8a8371','2021-08-28 04:04:23','2025-04-23 11:04:12'),\n(92,'',93,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_shell/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u547d\\\\u4ee4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| command | string | \\\\u662f  | \\\\u6267\\\\u884c\\\\u547d\\\\u4ee4 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"command\\\\\\\": \\\\\\\"ls\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_shell/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u547d\\\\u4ee4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| command | string | \\\\u662f  | \\\\u6267\\\\u884c\\\\u547d\\\\u4ee4 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"command\\\\\\\": \\\\\\\"ls\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_shell/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u547d\\\\u4ee4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>command</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u547d\\\\u4ee4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;command&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;ls&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_shell/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u547d\\\\u4ee4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>command</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u547d\\\\u4ee4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;command&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;ls&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','178073f7d69891bb644d1c1b9e44a955','2021-08-28 04:04:23','2025-04-23 11:04:12'),\n(93,'',94,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_server_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5bfc\\\\u5165\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_server_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5bfc\\\\u5165\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_server_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5bfc\\\\u5165\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_server_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5bfc\\\\u5165\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2f6f146b0b8a615d8c46dd6833ac87d0','2021-09-08 11:28:07','2025-04-23 11:04:12'),\n(94,'',95,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/get_cache_token/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| ip | string | \\\\u662f  | \\\\u8fde\\\\u63a5\\\\u4e3b\\\\u673a\\\\u7684IP\\\\u5730\\\\u5740 |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ssh_port | int | \\\\u662f  | \\\\u8fde\\\\u63a5\\\\u7aef\\\\u53e3 |\\\\n| system_type | string | \\\\u662f  | \\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b(Linux/Windows) |\\\\n| username | string | \\\\u5426  | \\\\u767b\\\\u9646\\\\u4e3b\\\\u673a\\\\u7528\\\\u6237\\\\u540d |\\\\n| ssh_key_id | int | \\\\u5426  | \\\\u4f7f\\\\u7528\\\\u7684\\\\u79d8\\\\u94a5ID |\\\\n| password | string | \\\\u5426  | \\\\u5f53username\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3a\\\\u767b\\\\u9646\\\\u7684\\\\u5bc6\\\\u7801\\\\uff0c\\\\u5f53ssh_key_id\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3apassphrase |\\\\n| network_proxy | string | \\\\u5426  | \\\\u7f51\\\\u7edc\\\\u4ee3\\\\u7406 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"name\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"ssh_port\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"system_type\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"ssh_key_id\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"password\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"network_proxy\\\\\\\": 1,\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/get_cache_token/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| ip | string | \\\\u662f  | \\\\u8fde\\\\u63a5\\\\u4e3b\\\\u673a\\\\u7684IP\\\\u5730\\\\u5740 |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ssh_port | int | \\\\u662f  | \\\\u8fde\\\\u63a5\\\\u7aef\\\\u53e3 |\\\\n| system_type | string | \\\\u662f  | \\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b(Linux/Windows) |\\\\n| username | string | \\\\u5426  | \\\\u767b\\\\u9646\\\\u4e3b\\\\u673a\\\\u7528\\\\u6237\\\\u540d |\\\\n| ssh_key_id | int | \\\\u5426  | \\\\u4f7f\\\\u7528\\\\u7684\\\\u79d8\\\\u94a5ID |\\\\n| password | string | \\\\u5426  | \\\\u5f53username\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3a\\\\u767b\\\\u9646\\\\u7684\\\\u5bc6\\\\u7801\\\\uff0c\\\\u5f53ssh_key_id\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3apassphrase |\\\\n| network_proxy | string | \\\\u5426  | \\\\u7f51\\\\u7edc\\\\u4ee3\\\\u7406 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"name\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"ssh_port\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"system_type\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"ssh_key_id\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"password\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"network_proxy\\\\\\\": 1,\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/get_cache_token/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8fde\\\\u63a5\\\\u4e3b\\\\u673a\\\\u7684IP\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ssh_port</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8fde\\\\u63a5\\\\u7aef\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>system_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b(Linux/Windows)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u767b\\\\u9646\\\\u4e3b\\\\u673a\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ssh_key_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4f7f\\\\u7528\\\\u7684\\\\u79d8\\\\u94a5ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>password</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53username\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3a\\\\u767b\\\\u9646\\\\u7684\\\\u5bc6\\\\u7801\\\\uff0c\\\\u5f53ssh_key_id\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3apassphrase</td>\\\\n</tr>\\\\n<tr>\\\\n<td>network_proxy</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7f51\\\\u7edc\\\\u4ee3\\\\u7406</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_port&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_key_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;password&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;network_proxy&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/get_cache_token/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8fde\\\\u63a5\\\\u4e3b\\\\u673a\\\\u7684IP\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ssh_port</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8fde\\\\u63a5\\\\u7aef\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>system_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7cfb\\\\u7edf\\\\u7c7b\\\\u578b(Linux/Windows)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u767b\\\\u9646\\\\u4e3b\\\\u673a\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ssh_key_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4f7f\\\\u7528\\\\u7684\\\\u79d8\\\\u94a5ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>password</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53username\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3a\\\\u767b\\\\u9646\\\\u7684\\\\u5bc6\\\\u7801\\\\uff0c\\\\u5f53ssh_key_id\\\\u5b58\\\\u5728\\\\u65f6\\\\u4e3apassphrase</td>\\\\n</tr>\\\\n<tr>\\\\n<td>network_proxy</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7f51\\\\u7edc\\\\u4ee3\\\\u7406</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_port&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_key_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;password&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;network_proxy&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','57ea0f7816e8a71f06426c35f55ad779','2021-09-09 07:10:40','2025-04-23 11:04:12'),\n(95,'',96,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_zc_model/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| - | - | -  | -  |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_zc_model/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| - | - | -  | -  |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_zc_model/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_zc_model/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a45edff2a5a77c3d94b75cdcb523d4a8','2021-09-10 06:53:13','2025-04-23 11:04:12'),\n(96,'',97,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_asset_collect/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u8d44\\\\u4ea7\\\\u63d2\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| - | - | -  | - |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_asset_collect/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u8d44\\\\u4ea7\\\\u63d2\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| - | - | -  | - |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_asset_collect/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u8d44\\\\u4ea7\\\\u63d2\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_asset_collect/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u8d44\\\\u4ea7\\\\u63d2\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2e777ee316325923c68272a374e46a22','2021-09-16 03:34:46','2025-04-23 11:04:12'),\n(97,'',98,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a930200ec304e0b5a346e51248c4236f','2021-09-16 08:36:21','2025-04-23 11:04:12');\nINSERT INTO `esb_api_doc` VALUES\n(98,'',99,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/user_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7528\\\\u6237\\\\u9a8c\\\\u8bc1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/user_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7528\\\\u6237\\\\u9a8c\\\\u8bc1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/user_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7528\\\\u6237\\\\u9a8c\\\\u8bc1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/user_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7528\\\\u6237\\\\u9a8c\\\\u8bc1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','cd036b13711609f6db64ca158dee7684','2021-11-13 03:18:49','2025-04-23 11:04:12'),\n(99,'',100,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_google_auth_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_google_auth_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_google_auth_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_google_auth_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','fa995a857b635861d217e66d7bd90fdf','2021-12-07 09:59:11','2025-04-23 11:04:12'),\n(100,'',101,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/create_google_secret_for_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4e3a\\\\u7528\\\\u6237\\\\u521b\\\\u5efaGoogle\\\\u9a8c\\\\u8bc1\\\\u79d8\\\\u94a5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/create_google_secret_for_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4e3a\\\\u7528\\\\u6237\\\\u521b\\\\u5efaGoogle\\\\u9a8c\\\\u8bc1\\\\u79d8\\\\u94a5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/create_google_secret_for_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4e3a\\\\u7528\\\\u6237\\\\u521b\\\\u5efaGoogle\\\\u9a8c\\\\u8bc1\\\\u79d8\\\\u94a5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/create_google_secret_for_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4e3a\\\\u7528\\\\u6237\\\\u521b\\\\u5efaGoogle\\\\u9a8c\\\\u8bc1\\\\u79d8\\\\u94a5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4a124790b085fed708e4cbdc6790fd5d','2021-12-07 09:59:11','2025-04-23 11:04:12'),\n(101,'',102,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/check_google_verify_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u7684\\\\u9a8c\\\\u8bc1\\\\u7801\\\\u662f\\\\u5426\\\\u6b63\\\\u786e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/check_google_verify_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u7684\\\\u9a8c\\\\u8bc1\\\\u7801\\\\u662f\\\\u5426\\\\u6b63\\\\u786e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/check_google_verify_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u7684\\\\u9a8c\\\\u8bc1\\\\u7801\\\\u662f\\\\u5426\\\\u6b63\\\\u786e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/check_google_verify_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u7684\\\\u9a8c\\\\u8bc1\\\\u7801\\\\u662f\\\\u5426\\\\u6b63\\\\u786e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','05c77bbbf6fa4f280bf3beb8d38fbd82','2021-12-07 09:59:11','2025-04-23 11:04:12'),\n(102,'',103,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/modify_user_google_auth_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/modify_user_google_auth_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/modify_user_google_auth_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/modify_user_google_auth_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u7528\\\\u6237\\\\u7684MFA\\\\u9a8c\\\\u8bc1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','e84ba643c4d43326771d7228ef0ab72f','2021-12-07 09:59:11','2025-04-23 11:04:12'),\n(103,'',104,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/guide/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u4f7f\\\\u7528\\\\u6307\\\\u5357\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | platform_code | int | \\\\u662f  | \\\\u5e73\\\\u53f0code |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/guide/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u4f7f\\\\u7528\\\\u6307\\\\u5357\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | platform_code | int | \\\\u662f  | \\\\u5e73\\\\u53f0code |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/guide/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u4f7f\\\\u7528\\\\u6307\\\\u5357\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| platform_code | int | \\\\u662f  | \\\\u5e73\\\\u53f0code |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/guide/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u4f7f\\\\u7528\\\\u6307\\\\u5357\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| platform_code | int | \\\\u662f  | \\\\u5e73\\\\u53f0code |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','adecbdc00d82fdb56c46a03271c16559','2021-12-08 05:59:39','2025-04-23 11:04:12'),\n(104,'',105,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_service_check_monitor_by_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u6240\\\\u5c5e\\\\u5e94\\\\u7528\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_service_check_monitor_by_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u6240\\\\u5c5e\\\\u5e94\\\\u7528\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_service_check_monitor_by_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u6240\\\\u5c5e\\\\u5e94\\\\u7528\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_service_check_monitor_by_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u6240\\\\u5c5e\\\\u5e94\\\\u7528\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','87a9eaf68fe1eceda4f9daccc664e17e','2022-01-08 06:21:42','2025-04-23 11:04:12'),\n(105,'',106,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_application_screen_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_application_screen_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_application_screen_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_application_screen_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b09ce0fe3a77de44c337f22a279ae734','2022-01-08 07:28:55','2025-04-23 11:04:12'),\n(106,'',107,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/nexus_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| download_url | string | \\\\u662f  | \\\\u4e0b\\\\u8f7d\\\\u8def\\\\u5f84 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"downloadUrl\\\\\\\":  \\\\\\\"http:nexus_url.com/repository/demo/demo.py\\\\\\\",\\\\n    \\\\\\\"script_arg\\\\\\\": \\\\\\\"arg1 arg2 arg3\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/nexus_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| download_url | string | \\\\u662f  | \\\\u4e0b\\\\u8f7d\\\\u8def\\\\u5f84 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"downloadUrl\\\\\\\":  \\\\\\\"http:nexus_url.com/repository/demo/demo.py\\\\\\\",\\\\n    \\\\\\\"script_arg\\\\\\\": \\\\\\\"arg1 arg2 arg3\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/nexus_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>download_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e0b\\\\u8f7d\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;downloadUrl&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http:nexus_url.com/repository/demo/demo.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_arg&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;arg1 arg2 arg3&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/nexus_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>download_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e0b\\\\u8f7d\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;downloadUrl&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http:nexus_url.com/repository/demo/demo.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_arg&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;arg1 arg2 arg3&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','47a3101a6259d56b1eecdf972f573271','2022-01-13 09:52:40','2025-04-23 11:04:12'),\n(107,'',108,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_func/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6a21\\\\u5757\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| func | string | \\\\u662f  | \\\\u6267\\\\u884c\\\\u6a21\\\\u5757\\\\u540d |\\\\n| param | string | \\\\u5426  | \\\\u6267\\\\u884c\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"command\\\\\\\": \\\\\\\"ls\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_func/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6a21\\\\u5757\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| func | string | \\\\u662f  | \\\\u6267\\\\u884c\\\\u6a21\\\\u5757\\\\u540d |\\\\n| param | string | \\\\u5426  | \\\\u6267\\\\u884c\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"command\\\\\\\": \\\\\\\"ls\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_func/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6a21\\\\u5757</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>func</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u6a21\\\\u5757\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>param</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;command&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;ls&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_func/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6a21\\\\u5757</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>func</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u6a21\\\\u5757\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>param</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;command&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;ls&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','77472fe42f5e3e895dd716f1b2d2d96c','2022-01-22 03:49:26','2025-04-23 11:04:12'),\n(108,'',109,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/send_mail/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| receiver | string | \\\\u662f  | \\\\u63a5\\\\u6536\\\\u4eba |\\\\n| subject | string | \\\\u662f  | \\\\u4e3b\\\\u9898 |\\\\n| text | string | \\\\u662f  | \\\\u5185\\\\u5bb9 |\\\\n| text_type | string | \\\\u662f  | \\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"receiver\\\\\\\":  xx,\\\\n    \\\\\\\"text\\\\\\\":  xx,\\\\n    \\\\\\\"subject\\\\\\\":  xx,\\\\n    \\\\\\\"text_type\\\\\\\":  xx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/send_mail/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| receiver | string | \\\\u662f  | \\\\u63a5\\\\u6536\\\\u4eba |\\\\n| subject | string | \\\\u662f  | \\\\u4e3b\\\\u9898 |\\\\n| text | string | \\\\u662f  | \\\\u5185\\\\u5bb9 |\\\\n| text_type | string | \\\\u662f  | \\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"receiver\\\\\\\":  xx,\\\\n    \\\\\\\"text\\\\\\\":  xx,\\\\n    \\\\\\\"subject\\\\\\\":  xx,\\\\n    \\\\\\\"text_type\\\\\\\":  xx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/send_mail/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>receiver</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63a5\\\\u6536\\\\u4eba</td>\\\\n</tr>\\\\n<tr>\\\\n<td>subject</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>text</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>text_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;receiver&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subject&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"s2\\\\\\\">&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/send_mail/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u90ae\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>receiver</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63a5\\\\u6536\\\\u4eba</td>\\\\n</tr>\\\\n<tr>\\\\n<td>subject</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>text</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>text_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53d1\\\\u9001\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;receiver&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subject&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"s2\\\\\\\">&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','daaf9530ed75aae47b3f9d19c112c558','2022-01-27 06:16:51','2025-04-23 11:04:12'),\n(109,'',110,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_copyright_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e95\\\\u90e8\\\\u7248\\\\u6743\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_copyright_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e95\\\\u90e8\\\\u7248\\\\u6743\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_copyright_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e95\\\\u90e8\\\\u7248\\\\u6743\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_copyright_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e95\\\\u90e8\\\\u7248\\\\u6743\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\"}','e7e674611616a0f2c5dd704ea26d2f2a','2022-02-24 05:11:50','2025-04-23 11:04:12'),\n(110,'',111,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_google_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6MFA\\\\u7ed1\\\\u5b9a\\\\u4e8c\\\\u7ef4\\\\u7801\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    {\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\": \\\\\\\"username\\\\\\\",\\\\n}\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20001,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"url\\\\\\\": \\\\\\\"/YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK.png\\\\\\\",\\\\n        \\\\\\\"secret\\\\\\\": \\\\\\\"YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK\\\\\\\",\\\\n        \\\\\\\"username\\\\\\\": \\\\\\\"username\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_google_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6MFA\\\\u7ed1\\\\u5b9a\\\\u4e8c\\\\u7ef4\\\\u7801\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    {\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\": \\\\\\\"username\\\\\\\",\\\\n}\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20001,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"url\\\\\\\": \\\\\\\"/YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK.png\\\\\\\",\\\\n        \\\\\\\"secret\\\\\\\": \\\\\\\"YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK\\\\\\\",\\\\n        \\\\\\\"username\\\\\\\": \\\\\\\"username\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_google_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6MFA\\\\u7ed1\\\\u5b9a\\\\u4e8c\\\\u7ef4\\\\u7801</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n&quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n&quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n&quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n&quot;username&quot;: &quot;username&quot;,\\\\n</pre></div>\\\\n\\\\n<p>}</p>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20001,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;url&quot;: &quot;/YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK.png&quot;,\\\\n        &quot;secret&quot;: &quot;YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK&quot;,\\\\n        &quot;username&quot;: &quot;username&quot;\\\\n    }\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_google_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6MFA\\\\u7ed1\\\\u5b9a\\\\u4e8c\\\\u7ef4\\\\u7801</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n&quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n&quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n&quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n&quot;username&quot;: &quot;username&quot;,\\\\n</pre></div>\\\\n\\\\n<p>}</p>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20001,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;url&quot;: &quot;/YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK.png&quot;,\\\\n        &quot;secret&quot;: &quot;YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK&quot;,\\\\n        &quot;username&quot;: &quot;username&quot;\\\\n    }\\\\n}\\\\n</pre></div>\\\"}','7498de2247d4b96262a092c001b1ae09','2022-02-26 06:13:16','2025-04-23 11:04:12'),\n(111,'',112,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/bind_google_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ed1\\\\u5b9aMFA\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| verify_code | string | \\\\u662f  | \\\\u6388\\\\u6743\\\\u7801 |\\\\n| secret | string | \\\\u662f  | \\\\u79d8\\\\u94a5 |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"receiver\\\\\\\":  xx,\\\\n    \\\\\\\"text\\\\\\\":  xx,\\\\n    \\\\\\\"subject\\\\\\\":  xx,\\\\n    \\\\\\\"text_type\\\\\\\":  xx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/bind_google_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ed1\\\\u5b9aMFA\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| verify_code | string | \\\\u662f  | \\\\u6388\\\\u6743\\\\u7801 |\\\\n| secret | string | \\\\u662f  | \\\\u79d8\\\\u94a5 |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"receiver\\\\\\\":  xx,\\\\n    \\\\\\\"text\\\\\\\":  xx,\\\\n    \\\\\\\"subject\\\\\\\":  xx,\\\\n    \\\\\\\"text_type\\\\\\\":  xx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/bind_google_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ed1\\\\u5b9aMFA</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>verify_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6388\\\\u6743\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u79d8\\\\u94a5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;receiver&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subject&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"s2\\\\\\\">&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/bind_google_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ed1\\\\u5b9aMFA</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>verify_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6388\\\\u6743\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u79d8\\\\u94a5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;receiver&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subject&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;text_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"s2\\\\\\\">&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7f1ba1ce5bcca952ee4bb33e07090ca9','2022-02-26 06:59:44','2025-04-23 11:04:12'),\n(112,'',113,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_grafana_server/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Grafana Server\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| -- | -- | -- | -- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_grafana_server/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Grafana Server\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| -- | -- | -- | -- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_grafana_server/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Grafana Server</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>--</td>\\\\n<td>--</td>\\\\n<td>--</td>\\\\n<td>--</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_grafana_server/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Grafana Server</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>--</td>\\\\n<td>--</td>\\\\n<td>--</td>\\\\n<td>--</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f1066349a724b55736fa0d1968282a4e','2022-04-02 02:33:36','2025-04-23 11:04:12'),\n(113,'',114,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_status_playbook_run/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u72b6\\\\u6001\\\\uff0cplaybook\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| args | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n| is_test | string | \\\\u5426  | \\\\u662f\\\\u5426\\\\u6d4b\\\\u8bd5 | \\\\n| run_type | string | \\\\u5426  | \\\\u6267\\\\u884c\\\\u7c7b\\\\u578b1\\\\u72b6\\\\u60012 playbook |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"args\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"is_test\\\\\\\": True,\\\\n    \\\\\\\"run_type\\\\\\\": \\\\\\\"1\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_status_playbook_run/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u72b6\\\\u6001\\\\uff0cplaybook\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_list | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| args | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n| is_test | string | \\\\u5426  | \\\\u662f\\\\u5426\\\\u6d4b\\\\u8bd5 | \\\\n| run_type | string | \\\\u5426  | \\\\u6267\\\\u884c\\\\u7c7b\\\\u578b1\\\\u72b6\\\\u60012 playbook |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"args\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"is_test\\\\\\\": True,\\\\n    \\\\\\\"run_type\\\\\\\": \\\\\\\"1\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_status_playbook_run/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u72b6\\\\u6001\\\\uff0cplaybook</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>args</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_test</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u6d4b\\\\u8bd5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u7c7b\\\\u578b1\\\\u72b6\\\\u60012 playbook</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;args&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;is_test&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"bp\\\\\\\">True</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;run_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_status_playbook_run/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u72b6\\\\u6001\\\\uff0cplaybook</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>args</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_test</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u6d4b\\\\u8bd5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u7c7b\\\\u578b1\\\\u72b6\\\\u60012 playbook</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;args&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;is_test&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"bp\\\\\\\">True</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;run_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ff1f4004b8e4f592b8c41b3f07e8927d','2022-05-13 10:39:12','2025-04-23 11:04:12'),\n(114,'',115,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_status_playbook_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| folder_type | string | \\\\u662f  | \\\\u7c7b\\\\u578b |\\\\n| temp_info | string | \\\\u5426  | \\\\u6a21\\\\u677f\\\\u6570\\\\u636e | \\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"folder_type\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"temp_info\\\\\\\": \\\\\\\"\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_status_playbook_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| folder_type | string | \\\\u662f  | \\\\u7c7b\\\\u578b |\\\\n| temp_info | string | \\\\u5426  | \\\\u6a21\\\\u677f\\\\u6570\\\\u636e | \\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"folder_type\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"temp_info\\\\\\\": \\\\\\\"\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_status_playbook_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>folder_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>temp_info</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u677f\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;folder_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_status_playbook_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>folder_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>temp_info</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u677f\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;folder_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3960b83e82c84f67ca5884e60084c024','2022-05-13 10:39:12','2025-04-23 11:04:12'),\n(115,'',116,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_status_playbook_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| folder_type | string | \\\\u662f  | \\\\u7c7b\\\\u578b |\\\\n| temp_id | string | \\\\u5426  | \\\\u6a21\\\\u677fid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"folder_type\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\": \\\\\\\"\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_status_playbook_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| folder_type | string | \\\\u662f  | \\\\u7c7b\\\\u578b |\\\\n| temp_id | string | \\\\u5426  | \\\\u6a21\\\\u677fid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"folder_type\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\": \\\\\\\"\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_status_playbook_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>folder_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>temp_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u677fid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;folder_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_status_playbook_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u6a21\\\\u677f\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>folder_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>temp_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u677fid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;folder_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','eecddd6f57cebc410b9bdbfd2269302c','2022-05-13 10:39:12','2025-04-23 11:04:12'),\n(116,'',117,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_status_playbook_record/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u6267\\\\u884c\\\\u72b6\\\\u6001Playbook\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | \\\\u8bf7\\\\u6c42ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_status_playbook_record/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u6267\\\\u884c\\\\u72b6\\\\u6001Playbook\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | \\\\u8bf7\\\\u6c42ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_status_playbook_record/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u6267\\\\u884c\\\\u72b6\\\\u6001Playbook\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_status_playbook_record/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u6267\\\\u884c\\\\u72b6\\\\u6001Playbook\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8a4869c742a3aa9cd53c62d8e9f5e767','2022-05-13 10:39:12','2025-04-23 11:04:12'),\n(117,'',118,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_history_event_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5386\\\\u53f2\\\\u4e8b\\\\u4ef6\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_history_event_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5386\\\\u53f2\\\\u4e8b\\\\u4ef6\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_history_event_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5386\\\\u53f2\\\\u4e8b\\\\u4ef6\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_history_event_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5386\\\\u53f2\\\\u4e8b\\\\u4ef6\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1c6943b2256e290cdf9c592d61bef5b9','2022-05-16 09:16:32','2025-04-23 11:04:12'),\n(118,'',119,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_model_data/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u662f  | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name_list | list | \\\\u662f  | \\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| field_code_list | dict | \\\\u662f  | \\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868 |\\\\n| data_from | str | \\\\u662f  | \\\\u989d\\\\u5916\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_model_data/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u662f  | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name_list | list | \\\\u662f  | \\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| field_code_list | dict | \\\\u662f  | \\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868 |\\\\n| data_from | str | \\\\u662f  | \\\\u989d\\\\u5916\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_model_data/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>inst_model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_from</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u989d\\\\u5916\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_model_data/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>inst_model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_from</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u989d\\\\u5916\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1b0dd96241913fc8ed32d134e3a240c1','2022-05-20 05:00:57','2025-04-23 11:04:12'),\n(119,'',120,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_auth_application_tree_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u6811\\\\uff0c\\\\u8fc7\\\\u6ee4\\\\u6743\\\\u9650\\\\uff0c\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u9009\\\\u62e9\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_auth_application_tree_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u6811\\\\uff0c\\\\u8fc7\\\\u6ee4\\\\u6743\\\\u9650\\\\uff0c\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u9009\\\\u62e9\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_auth_application_tree_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u6811\\\\uff0c\\\\u8fc7\\\\u6ee4\\\\u6743\\\\u9650\\\\uff0c\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u9009\\\\u62e9\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_auth_application_tree_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u6811\\\\uff0c\\\\u8fc7\\\\u6ee4\\\\u6743\\\\u9650\\\\uff0c\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u9009\\\\u62e9\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e2e1830ac67d729c9ce020b3aabfbd50','2022-05-20 05:01:47','2025-04-23 11:04:12'),\n(120,'',121,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_auth_application_host_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\uff08\\\\u4ececmdb\\\\u83b7\\\\u53d6\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u5e76\\\\u8fc7\\\\u6ee4\\\\u7ba1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u4ee5\\\\u53ca\\\\u6388\\\\u6743\\\\uff09\\\\uff0c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_auth_application_host_to_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\uff08\\\\u4ececmdb\\\\u83b7\\\\u53d6\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u5e76\\\\u8fc7\\\\u6ee4\\\\u7ba1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u4ee5\\\\u53ca\\\\u6388\\\\u6743\\\\uff09\\\\uff0c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_auth_application_host_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\uff08\\\\u4ececmdb\\\\u83b7\\\\u53d6\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u5e76\\\\u8fc7\\\\u6ee4\\\\u7ba1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u4ee5\\\\u53ca\\\\u6388\\\\u6743\\\\uff09\\\\uff0c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_auth_application_host_to_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4f5c\\\\u4e1a\\\\u5e73\\\\u53f0\\\\u901a\\\\u8fc7\\\\u5e94\\\\u7528\\\\u7ef4\\\\u5ea6\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\uff08\\\\u4ececmdb\\\\u83b7\\\\u53d6\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u5e76\\\\u8fc7\\\\u6ee4\\\\u7ba1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u4ee5\\\\u53ca\\\\u6388\\\\u6743\\\\uff09\\\\uff0c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1feba1254a14258afd50024f4485e6d1','2022-05-20 05:01:47','2025-04-23 11:04:12'),\n(121,'',122,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/post_check_collect_task/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u68c0\\\\u67e5\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\u91c7\\\\u96c6\\\\u4efb\\\\u52a1\\\\u662f\\\\u5426\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| collect_plugin_list | array | \\\\u662f  | \\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6code |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"collect_plugin_list\\\\\\\":  [\\\\n        \\\\\\\"collect_plugin1\\\\\\\", \\\\\\\"collect_plugin2\\\\\\\"\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u5171\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u5bfc\\\\u5165\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"public_ip_address\\\\\\\": \\\\\\\"xxx.xx.xxx.xx\\\\\\\",\\\\n            \\\\\\\"private_ip_address\\\\\\\": \\\\\\\"xxx.xx.xxx.xx\\\\\\\",\\\\n            \\\\\\\"instance_info\\\\\\\": {\\\\n            \\\\\\\"ImageId\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxxxxxxxxxx.vhd\\\\\\\",\\\\n            \\\\\\\"VlanId\\\\\\\": \\\\\\\"\\\\\\\",\\\\n             ......\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/post_check_collect_task/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u68c0\\\\u67e5\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\u91c7\\\\u96c6\\\\u4efb\\\\u52a1\\\\u662f\\\\u5426\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| collect_plugin_list | array | \\\\u662f  | \\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6code |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"collect_plugin_list\\\\\\\":  [\\\\n        \\\\\\\"collect_plugin1\\\\\\\", \\\\\\\"collect_plugin2\\\\\\\"\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u5171\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u5bfc\\\\u5165\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"public_ip_address\\\\\\\": \\\\\\\"xxx.xx.xxx.xx\\\\\\\",\\\\n            \\\\\\\"private_ip_address\\\\\\\": \\\\\\\"xxx.xx.xxx.xx\\\\\\\",\\\\n            \\\\\\\"instance_info\\\\\\\": {\\\\n            \\\\\\\"ImageId\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxxxxxxxxxx.vhd\\\\\\\",\\\\n            \\\\\\\"VlanId\\\\\\\": \\\\\\\"\\\\\\\",\\\\n             ......\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/post_check_collect_task/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u68c0\\\\u67e5\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\u91c7\\\\u96c6\\\\u4efb\\\\u52a1\\\\u662f\\\\u5426\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>collect_plugin_list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;collect_plugin_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;collect_plugin1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;collect_plugin2&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5171\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u5bfc\\\\u5165\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;public_ip_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx.xx.xxx.xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;private_ip_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx.xx.xxx.xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;instance_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ImageId&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxxxxxxxxxx.vhd&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;VlanId&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n             <span class=\\\\\\\"o\\\\\\\">......</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/post_check_collect_task/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u68c0\\\\u67e5\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\u91c7\\\\u96c6\\\\u4efb\\\\u52a1\\\\u662f\\\\u5426\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>collect_plugin_list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;collect_plugin_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;collect_plugin1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;collect_plugin2&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5171\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u5bfc\\\\u5165\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;public_ip_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx.xx.xxx.xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;private_ip_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx.xx.xxx.xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;instance_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ImageId&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxxxxxxxxxx.vhd&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;VlanId&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n             <span class=\\\\\\\"o\\\\\\\">......</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','43a023ee7fff95be460c4a892ec9a3dc','2022-05-25 11:08:44','2025-04-23 11:04:12'),\n(122,'',123,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_work_order_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_work_order_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_work_order_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_work_order_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','c6839528463c637cca10a9e2770695b1','2022-06-14 10:12:27','2025-04-23 11:04:12'),\n(123,'',124,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_new_zabbix_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0zabbix\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| data_info | dict | \\\\u5426    | \\\\u6570\\\\u636e\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_new_zabbix_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0zabbix\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| data_info | dict | \\\\u5426    | \\\\u6570\\\\u636e\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_new_zabbix_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0zabbix\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_info</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_new_zabbix_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0zabbix\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_info</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b2fb4268ee36462d06e478ec2468fd66','2022-06-27 03:51:51','2025-04-23 11:04:13'),\n(124,'',125,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_update_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6700\\\\u8fd1\\\\u540c\\\\u6b65\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_update_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6700\\\\u8fd1\\\\u540c\\\\u6b65\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_update_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6700\\\\u8fd1\\\\u540c\\\\u6b65\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_update_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6700\\\\u8fd1\\\\u540c\\\\u6b65\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','563c08163b408116b7121e005ea035bf','2022-07-18 07:28:43','2025-04-23 11:04:13'),\n(125,'',126,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_wx_work_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4f01\\\\u4e1a\\\\u5fae\\\\u4fe1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_wx_work_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4f01\\\\u4e1a\\\\u5fae\\\\u4fe1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_wx_work_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4f01\\\\u4e1a\\\\u5fae\\\\u4fe1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_wx_work_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4f01\\\\u4e1a\\\\u5fae\\\\u4fe1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','e298b110481e9e8673fabc4ed551af13','2022-07-25 06:03:32','2025-04-23 11:04:13'),\n(126,'',127,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_all_private_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| private_cloud_type | string | \\\\u662f  | \\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b | \\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_all_private_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| private_cloud_type | string | \\\\u662f  | \\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b | \\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_all_private_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>private_cloud_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_all_private_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>private_cloud_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d12a6ebfe5df6a593c8539abca531fdb','2022-08-01 08:21:45','2025-04-23 11:04:13'),\n(127,'',128,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_private_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| private_cloud_type | string | \\\\u662f  | \\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_all_private_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| private_cloud_type | string | \\\\u662f  | \\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_private_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>private_cloud_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_all_private_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u6240\\\\u6709\\\\u7684\\\\u79c1\\\\u6709\\\\u4e91\\\\u4e3b\\\\u673a\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>private_cloud_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u79c1\\\\u6709\\\\u4e91\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','18d4a6b83696a4bcbd41c8979d413f0e','2022-08-01 08:26:58','2025-04-23 11:04:13'),\n(128,'',129,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_host_group_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4(\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_host_group_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4(\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_host_group_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4(\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_host_group_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4(\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7eaf10d394641725ac6b9f69dc3f4886','2022-08-05 08:28:20','2025-04-23 11:04:13'),\n(129,'',130,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f365ee4a40f4f1cdfea40cbaf2085adc','2022-08-05 08:28:20','2025-04-23 11:04:13'),\n(130,'',131,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_new_prom_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0Prom\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| data_info | dict | \\\\u5426    | \\\\u6570\\\\u636e\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_new_prom_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0Prom\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| data_info | dict | \\\\u5426    | \\\\u6570\\\\u636e\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_new_prom_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0Prom\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_info</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_new_prom_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5237\\\\u65b0\\\\u4e3b\\\\u673a\\\\u6700\\\\u65b0Prom\\\\u76d1\\\\u63a7\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_info</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8b7f85b92dabd90492d9ac173b22cdd9','2022-08-08 06:53:33','2025-04-23 11:04:13'),\n(131,'',132,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_prom_tree_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8Prometheus Server\\\\u6570\\\\u636e\\\\uff08\\\\u542b\\\\u5206\\\\u7ec4\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6  {\\\\\\\"name\\\\\\\": \\\\\\\"MySQL\\\\\\\"}|\\\\n| output | dict | \\\\u5426    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"] |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_prom_tree_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8Prometheus Server\\\\u6570\\\\u636e\\\\uff08\\\\u542b\\\\u5206\\\\u7ec4\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6  {\\\\\\\"name\\\\\\\": \\\\\\\"MySQL\\\\\\\"}|\\\\n| output | dict | \\\\u5426    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"] |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_prom_tree_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8Prometheus Server\\\\u6570\\\\u636e\\\\uff08\\\\u542b\\\\u5206\\\\u7ec4\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td _MySQL_=\\\\\\\"&quot;MySQL&quot;\\\\\\\" _name_:=\\\\\\\"&quot;name&quot;:\\\\\\\">\\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"]</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_prom_tree_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8Prometheus Server\\\\u6570\\\\u636e\\\\uff08\\\\u542b\\\\u5206\\\\u7ec4\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td _MySQL_=\\\\\\\"&quot;MySQL&quot;\\\\\\\" _name_:=\\\\\\\"&quot;name&quot;:\\\\\\\">\\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"]</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','61004621e9ef8e0da82f5fde9aa2f2e9','2022-08-18 03:42:09','2025-04-23 11:04:13'),\n(132,'',133,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_collect_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6  {\\\\\\\"name\\\\\\\": \\\\\\\"MySQL\\\\\\\"}|\\\\n| output | dict | \\\\u5426    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"] |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_collect_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6  {\\\\\\\"name\\\\\\\": \\\\\\\"MySQL\\\\\\\"}|\\\\n| output | dict | \\\\u5426    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"] |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_collect_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td _MySQL_=\\\\\\\"&quot;MySQL&quot;\\\\\\\" _name_:=\\\\\\\"&quot;name&quot;:\\\\\\\">\\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"]</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_collect_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td _MySQL_=\\\\\\\"&quot;MySQL&quot;\\\\\\\" _name_:=\\\\\\\"&quot;name&quot;:\\\\\\\">\\\\u7b5b\\\\u9009\\\\u6761\\\\u4ef6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 \\\\\\\"all\\\\\\\" [\\\\\\\"id\\\\\\\", \\\\\\\"name\\\\\\\"]</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8e59504fdd53765fb25bbdbda38810d2','2022-08-18 03:42:09','2025-04-23 11:04:13'),\n(133,'',134,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_install_package_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u5b89\\\\u88c5\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\uff08\\\\u6267\\\\u884c\\\\u5b89\\\\u88c5\\\\u811a\\\\u672c\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| metric_parameter_list | list | \\\\u662f    | \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u53c2\\\\u6570 |\\\\n| host_list | list | \\\\u662f    | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_install_package_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u5b89\\\\u88c5\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\uff08\\\\u6267\\\\u884c\\\\u5b89\\\\u88c5\\\\u811a\\\\u672c\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| metric_parameter_list | list | \\\\u662f    | \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u53c2\\\\u6570 |\\\\n| host_list | list | \\\\u662f    | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_install_package_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u5b89\\\\u88c5\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\uff08\\\\u6267\\\\u884c\\\\u5b89\\\\u88c5\\\\u811a\\\\u672c\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>metric_parameter_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_install_package_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u5b89\\\\u88c5\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u63d2\\\\u4ef6\\\\uff08\\\\u6267\\\\u884c\\\\u5b89\\\\u88c5\\\\u811a\\\\u672c\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>metric_parameter_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8acda4174d8bb63fc3023dd9eab6b512','2022-08-18 03:42:09','2025-04-23 11:04:13'),\n(134,'',135,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_register_prom_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6ce8\\\\u518c\\\\u4e3b\\\\u673a\\\\u5b89\\\\u88c5\\\\u7684\\\\u63d2\\\\u4ef6\\\\u5230Prometheus\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0   |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | dict | \\\\u662f    |Prometheus ID|\\\\n| metric_plugin_code | dict | \\\\u662f    | \\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| consul_type | str | \\\\u662f    | \\\\u6ce8\\\\u518c\\\\u8fd8\\\\u662f\\\\u6ce8\\\\u9500 register or deregister |\\\\n| host_list | dict | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\u6216\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_register_prom_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6ce8\\\\u518c\\\\u4e3b\\\\u673a\\\\u5b89\\\\u88c5\\\\u7684\\\\u63d2\\\\u4ef6\\\\u5230Prometheus\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0   |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | dict | \\\\u662f    |Prometheus ID|\\\\n| metric_plugin_code | dict | \\\\u662f    | \\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| consul_type | str | \\\\u662f    | \\\\u6ce8\\\\u518c\\\\u8fd8\\\\u662f\\\\u6ce8\\\\u9500 register or deregister |\\\\n| host_list | dict | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\u6216\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_register_prom_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6ce8\\\\u518c\\\\u4e3b\\\\u673a\\\\u5b89\\\\u88c5\\\\u7684\\\\u63d2\\\\u4ef6\\\\u5230Prometheus</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prometheus ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>consul_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6ce8\\\\u518c\\\\u8fd8\\\\u662f\\\\u6ce8\\\\u9500 register or deregister</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\u6216\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_register_prom_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6ce8\\\\u518c\\\\u4e3b\\\\u673a\\\\u5b89\\\\u88c5\\\\u7684\\\\u63d2\\\\u4ef6\\\\u5230Prometheus</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prometheus ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>consul_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6ce8\\\\u518c\\\\u8fd8\\\\u662f\\\\u6ce8\\\\u9500 register or deregister</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\u6216\\\\u5206\\\\u7ec4\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a2c060c853499f4f6e8d067f71e68008','2022-08-18 03:42:09','2025-04-23 11:04:13'),\n(135,'',136,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_inst_status_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | dict |  \\\\u662f  | Prometheus Server  |\\\\n| model_code | dict | \\\\u662f   | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n| host_list | dict |  \\\\u662f | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_inst_status_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | dict |  \\\\u662f  | Prometheus Server  |\\\\n| model_code | dict | \\\\u662f   | \\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5 |\\\\n| host_list | dict |  \\\\u662f | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_inst_status_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prometheus Server</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_inst_status_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prometheus Server</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ba0d304dd5a81545da06773433266d04','2022-08-18 03:42:09','2025-04-23 11:04:13'),\n(136,'',137,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_metric_install_package_log_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u4e0b\\\\u8f7d\\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u5b89\\\\u88c5\\\\u5305\\\\u65e5\\\\u5fd7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | request_id |\\\\n| log_type | string | \\\\u662f  | \\\\u65e5\\\\u5fd7\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_metric_install_package_log_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u4e0b\\\\u8f7d\\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u5b89\\\\u88c5\\\\u5305\\\\u65e5\\\\u5fd7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | request_id |\\\\n| log_type | string | \\\\u662f  | \\\\u65e5\\\\u5fd7\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_metric_install_package_log_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u4e0b\\\\u8f7d\\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u5b89\\\\u88c5\\\\u5305\\\\u65e5\\\\u5fd7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>request_id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>log_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u65e5\\\\u5fd7\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_metric_install_package_log_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u4e0b\\\\u8f7d\\\\u6307\\\\u6807\\\\u63d2\\\\u4ef6\\\\u5b89\\\\u88c5\\\\u5305\\\\u65e5\\\\u5fd7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>request_id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>log_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u65e5\\\\u5fd7\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','78c5a8dd7023d25407ea1cf1c61e6a8b','2022-08-18 08:09:25','2025-04-23 11:04:13'),\n(137,'',138,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_send_package_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u53d1\\\\u9001\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u5b89\\\\u88c5\\\\u5305\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| host_list | list | \\\\u662f    | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_send_package_to_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u53d1\\\\u9001\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u5b89\\\\u88c5\\\\u5305\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| host_list | list | \\\\u662f    | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_send_package_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u53d1\\\\u9001\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u5b89\\\\u88c5\\\\u5305</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_send_package_to_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6570\\\\u636e\\\\u63a5\\\\u5165\\\\uff0c\\\\u53d1\\\\u9001\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u5b89\\\\u88c5\\\\u5305</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','29e7907709ea4fcfd5e9ef8b5782a8fa','2022-08-19 07:28:59','2025-04-23 11:04:13'),\n(138,'',139,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_auth_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8ba4\\\\u8bc1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_auth_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8ba4\\\\u8bc1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_auth_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8ba4\\\\u8bc1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_auth_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8ba4\\\\u8bc1\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','f45a4fb1d62b4d32c4272af9d8b05cca','2022-08-31 03:58:28','2025-04-23 11:04:13'),\n(139,'',141,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| data_type | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count | data\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| data_type | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count | data\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','42e69accb02a5b6bcae26bd7593ab057','2022-09-02 02:42:50','2022-09-02 02:42:50'),\n(140,'',140,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/post_metric_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| data_type | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count | data\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/post_metric_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| metric_plugin_code | str | \\\\u662f    |  \\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| data_type | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count | data\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/post_metric_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/post_metric_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u7ba1\\\\u63a7\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u7ed1\\\\u5b9a\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>metric_plugin_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6307\\\\u6807\\\\u91c7\\\\u96c6\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2eb1cc7c8971d6967e0036e44ec989b2','2022-09-02 02:46:47','2025-04-23 11:04:13'),\n(141,'',142,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_config_reload/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u52a0\\\\u8f7d\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| params | list | \\\\u662f    | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_config_reload/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u52a0\\\\u8f7d\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| params | list | \\\\u662f    | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_config_reload/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u52a0\\\\u8f7d\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_config_reload/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u52a0\\\\u8f7d\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fb4993a2904b95c53a791a60f7e8f897','2022-09-18 09:56:37','2025-04-23 11:04:13'),\n(142,'',143,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_rule_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u83b7\\\\u53d6\\\\u89c4\\\\u5219\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| output | list | \\\\u662f    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_rule_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u83b7\\\\u53d6\\\\u89c4\\\\u5219\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| output | list | \\\\u662f    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_rule_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u83b7\\\\u53d6\\\\u89c4\\\\u5219</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_rule_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u83b7\\\\u53d6\\\\u89c4\\\\u5219</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','635171e8c377ee602eaf6dc173d7e04c','2022-09-18 09:56:37','2025-04-23 11:04:13'),\n(143,'',144,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alert_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| output | list | \\\\u662f    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alert_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| output | list | \\\\u662f    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alert_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alert_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','73931d25314268bc027939d175ba45fa','2022-09-18 09:56:37','2025-04-23 11:04:13'),\n(144,'',145,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_metadata/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u83b7\\\\u53d6\\\\u6307\\\\u6807\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| params | list | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_metadata/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u83b7\\\\u53d6\\\\u6307\\\\u6807\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| params | list | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_metadata/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u83b7\\\\u53d6\\\\u6307\\\\u6807\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_metadata/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u83b7\\\\u53d6\\\\u6307\\\\u6807\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4f097d719a731aee43a189e4ffe0c575','2022-09-18 09:56:37','2025-04-23 11:04:13'),\n(145,'',146,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d2d5a5a1d3f565e41f9a89d84d42df7a','2022-09-26 03:11:31','2025-04-23 11:04:13'),\n(146,'',147,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_by_model_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_by_model_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_by_model_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_by_model_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3fd9fd5fb72adc8a6492f7ef8b21d31b','2022-09-26 03:11:31','2025-04-23 11:04:13'),\n(147,'',148,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_instance/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bCode\\\\u83b7\\\\u53d6\\\\u8be5\\\\u6a21\\\\u578b\\\\u7684\\\\u6240\\\\u6709\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | string | \\\\u662f  | \\\\u6a21\\\\u578bCode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_model_instance/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bCode\\\\u83b7\\\\u53d6\\\\u8be5\\\\u6a21\\\\u578b\\\\u7684\\\\u6240\\\\u6709\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | string | \\\\u662f  | \\\\u6a21\\\\u578bCode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_instance/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bCode\\\\u83b7\\\\u53d6\\\\u8be5\\\\u6a21\\\\u578b\\\\u7684\\\\u6240\\\\u6709\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bCode</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_model_instance/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bCode\\\\u83b7\\\\u53d6\\\\u8be5\\\\u6a21\\\\u578b\\\\u7684\\\\u6240\\\\u6709\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bCode</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','653b8f62f61533b0ca7cdca891006a98','2022-09-26 11:10:32','2022-09-26 11:10:32'),\n(148,'',149,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_host_by_instance/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u7684\\\\u4e3b\\\\u673a\\\\u4ee5\\\\u53ca\\\\u5176\\\\u4ed6\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u662f   | \\\\u6a21\\\\u578bcode |\\\\n| instances | array | \\\\u662f   | \\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| var_list | array | \\\\u5426   | \\\\u53c2\\\\u6570\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_host_by_instance/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u7684\\\\u4e3b\\\\u673a\\\\u4ee5\\\\u53ca\\\\u5176\\\\u4ed6\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u662f   | \\\\u6a21\\\\u578bcode |\\\\n| instances | array | \\\\u662f   | \\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| var_list | array | \\\\u5426   | \\\\u53c2\\\\u6570\\\\u5217\\\\u8868 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_host_by_instance/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u7684\\\\u4e3b\\\\u673a\\\\u4ee5\\\\u53ca\\\\u5176\\\\u4ed6\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>instances</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>var_list</td>\\\\n<td>array</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_host_by_instance/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u7684\\\\u4e3b\\\\u673a\\\\u4ee5\\\\u53ca\\\\u5176\\\\u4ed6\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>instances</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>var_list</td>\\\\n<td>array</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d9a4dae5e35f39d90b825e53dba98383','2022-09-27 08:30:14','2025-04-23 11:04:13'),\n(149,'',150,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_script_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u811a\\\\u672cV2,\\\\u5728cmdb\\\\u5b9e\\\\u4f8b\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u4e0a\\\\u6267\\\\u884c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| instances | list | \\\\u662f  | CMDB\\\\u5b9e\\\\u4f8b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| script_url | string | \\\\u662f  | \\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL |\\\\n| args | string | \\\\u5426  | \\\\u811a\\\\u672c\\\\u53c2\\\\u6570 |\\\\n| run_user | string | \\\\u5426  | \\\\u811a\\\\u672c\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"script_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"script_arg\\\\\\\": \\\\\\\"arg1 arg2 arg3\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_script_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u811a\\\\u672cV2,\\\\u5728cmdb\\\\u5b9e\\\\u4f8b\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u4e0a\\\\u6267\\\\u884c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| instances | list | \\\\u662f  | CMDB\\\\u5b9e\\\\u4f8b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| script_url | string | \\\\u662f  | \\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL |\\\\n| args | string | \\\\u5426  | \\\\u811a\\\\u672c\\\\u53c2\\\\u6570 |\\\\n| run_user | string | \\\\u5426  | \\\\u811a\\\\u672c\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"script_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"script_arg\\\\\\\": \\\\\\\"arg1 arg2 arg3\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_script_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u811a\\\\u672cV2,\\\\u5728cmdb\\\\u5b9e\\\\u4f8b\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u4e0a\\\\u6267\\\\u884c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>instances</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>CMDB\\\\u5b9e\\\\u4f8b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>args</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_user</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_arg&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;arg1 arg2 arg3&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_script_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u811a\\\\u672cV2,\\\\u5728cmdb\\\\u5b9e\\\\u4f8b\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u4e3b\\\\u673a\\\\u4e0a\\\\u6267\\\\u884c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>instances</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>CMDB\\\\u5b9e\\\\u4f8b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>args</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_user</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_arg&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;arg1 arg2 arg3&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1110ee2d0ce83f901399f31e0f5f9844','2022-09-28 06:50:55','2025-04-23 11:04:13'),\n(150,'',151,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/post_service_check_for_app/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| output | list or str | \\\\u5426   | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/post_service_check_for_app/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| output | list or str | \\\\u5426   | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/post_service_check_for_app/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/post_service_check_for_app/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6dd4d6c98707716f1128c121157165e2','2022-10-11 11:18:59','2025-04-23 11:04:13'),\n(151,'',152,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/get_service_check_metric/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id | int | \\\\u662f    |  \\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID |\\\\n| data_type | str | \\\\u662f    |  \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history) |\\\\n| time | list or str | \\\\u5426   | \\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720) |\\\\n| start_time | str | \\\\u5426    | \\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01) |\\\\n| end_time | str | \\\\u5426    | \\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)  |\\\\n| current | str | \\\\u5426    | \\\\u7b2c\\\\u51e0\\\\u9875 |\\\\n| pageSize | str | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/get_service_check_metric/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id | int | \\\\u662f    |  \\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID |\\\\n| data_type | str | \\\\u662f    |  \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history) |\\\\n| time | list or str | \\\\u5426   | \\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720) |\\\\n| start_time | str | \\\\u5426    | \\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01) |\\\\n| end_time | str | \\\\u5426    | \\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)  |\\\\n| current | str | \\\\u5426    | \\\\u7b2c\\\\u51e0\\\\u9875 |\\\\n| pageSize | str | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/get_service_check_metric/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>start_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b2c\\\\u51e0\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/get_service_check_metric/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>start_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b2c\\\\u51e0\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a730efab12e6d31a300ce9edb407626c','2022-10-11 11:19:00','2025-04-23 11:04:13'),\n(152,'',153,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_develop/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| page | int | \\\\u662f    |  \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u662f    |  \\\\u9875\\\\u7801 |\\\\n| token_data | str | \\\\u662f    |  token |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n| order_by | dict | \\\\u5426    | \\\\u6392\\\\u5e8f |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_develop/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| page | int | \\\\u662f    |  \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u662f    |  \\\\u9875\\\\u7801 |\\\\n| token_data | str | \\\\u662f    |  token |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n| order_by | dict | \\\\u5426    | \\\\u6392\\\\u5e8f |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_develop/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>page</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_by</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6392\\\\u5e8f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_develop/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\uff08\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>page</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>token_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_by</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6392\\\\u5e8f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a604c95a3f3e3283f645057d0546773e','2022-10-12 10:49:31','2025-04-23 11:04:13'),\n(153,'',154,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_send_file_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1,\\\\u652f\\\\u6301\\\\u591a\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| hosts | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| file_url_list | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL\\\\u5217\\\\u8868 |\\\\n| end_path | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84 |\\\\n| owner | string | \\\\u5426  | \\\\u6388\\\\u6743\\\\u7528\\\\u6237 |\\\\n| group | string | \\\\u5426  | \\\\u6388\\\\u6743\\\\u7ec4 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"file_path\\\\\\\": \\\\\\\"/tmp/\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_send_file_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1,\\\\u652f\\\\u6301\\\\u591a\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| hosts | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868 |\\\\n| file_url_list | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL\\\\u5217\\\\u8868 |\\\\n| end_path | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84 |\\\\n| owner | string | \\\\u5426  | \\\\u6388\\\\u6743\\\\u7528\\\\u6237 |\\\\n| group | string | \\\\u5426  | \\\\u6388\\\\u6743\\\\u7ec4 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_list\\\\\\\":  [\\\\\\\"unique value1\\\\\\\", \\\\\\\"unique value2\\\\\\\", \\\\\\\"unique value3\\\\\\\"],\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n    \\\\\\\"file_path\\\\\\\": \\\\\\\"/tmp/\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_send_file_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1,\\\\u652f\\\\u6301\\\\u591a\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>hosts</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_url_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end_path</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n<tr>\\\\n<td>owner</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6388\\\\u6743\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6388\\\\u6743\\\\u7ec4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_path&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/tmp/&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_send_file_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6587\\\\u4ef6\\\\u5206\\\\u53d1,\\\\u652f\\\\u6301\\\\u591a\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>hosts</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_url_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76f8\\\\u5bf9\\\\u8def\\\\u5f84URL\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end_path</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u76ee\\\\u6807\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n<tr>\\\\n<td>owner</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6388\\\\u6743\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n<tr>\\\\n<td>group</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6388\\\\u6743\\\\u7ec4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;unique value3&quot;</span><span class=\\\\\\\"p\\\\\\\">],</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_path&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/tmp/&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6fc8f1f9da0630717792a6f8465c427e','2022-10-18 02:04:54','2025-04-23 11:04:13'),\n(154,'',155,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_send_file_v2_request_id_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001(\\\\u53d1\\\\u9001\\\\u6587\\\\u4ef6v2)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | \\\\u8bf7\\\\u6c42ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_send_file_v2_request_id_status/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001(\\\\u53d1\\\\u9001\\\\u6587\\\\u4ef6v2)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_id | string | \\\\u662f  | \\\\u8bf7\\\\u6c42ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_send_file_v2_request_id_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001(\\\\u53d1\\\\u9001\\\\u6587\\\\u4ef6v2)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_send_file_v2_request_id_status/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eRequest ID\\\\u83b7\\\\u53d6\\\\u4efb\\\\u52a1\\\\u72b6\\\\u6001(\\\\u53d1\\\\u9001\\\\u6587\\\\u4ef6v2)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','cdbdb16c6af800c3e09dd546ab23a9a3','2022-10-18 02:04:54','2025-04-23 11:04:13'),\n(155,'',156,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_auth_platform/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u5e73\\\\u53f0\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_auth_platform/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u5e73\\\\u53f0\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_auth_platform/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u5e73\\\\u53f0</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_auth_platform/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u5e73\\\\u53f0</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\"}','79fd616b4e711c5e4ebdbedf0d786349','2022-10-19 12:30:56','2025-04-23 11:04:13'),\n(156,'',157,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/send_report/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u53d1\\\\u9001\\\\u5de1\\\\u68c0\\\\u62a5\\\\u544a\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n    | message | string | \\\\u662f  | \\\\u4e3b\\\\u9898\\\\u4fe1\\\\u606f |\\\\n    | file_url | string | \\\\u662f  | \\\\u9644\\\\u4ef6\\\\u5730\\\\u5740 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/send_report/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u53d1\\\\u9001\\\\u5de1\\\\u68c0\\\\u62a5\\\\u544a\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n    | message | string | \\\\u662f  | \\\\u4e3b\\\\u9898\\\\u4fe1\\\\u606f |\\\\n    | file_url | string | \\\\u662f  | \\\\u9644\\\\u4ef6\\\\u5730\\\\u5740 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/send_report/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u53d1\\\\u9001\\\\u5de1\\\\u68c0\\\\u62a5\\\\u544a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| message | string | \\\\u662f  | \\\\u4e3b\\\\u9898\\\\u4fe1\\\\u606f |\\\\n| file_url | string | \\\\u662f  | \\\\u9644\\\\u4ef6\\\\u5730\\\\u5740 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/send_report/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u53d1\\\\u9001\\\\u5de1\\\\u68c0\\\\u62a5\\\\u544a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| message | string | \\\\u662f  | \\\\u4e3b\\\\u9898\\\\u4fe1\\\\u606f |\\\\n| file_url | string | \\\\u662f  | \\\\u9644\\\\u4ef6\\\\u5730\\\\u5740 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','cb3d2f4a8a1a8248acf5b97812a0ffab','2022-10-19 17:13:24','2025-04-23 11:04:13'),\n(157,'',158,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/update_service_check_for_app/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5220\\\\u9664\\\\u4fee\\\\u6539\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_dict | dict | \\\\u662f    |  \\\\u6570\\\\u636e |\\\\n| data_type | str | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08create | update | delete\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/update_service_check_for_app/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5220\\\\u9664\\\\u4fee\\\\u6539\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_dict | dict | \\\\u662f    |  \\\\u6570\\\\u636e |\\\\n| data_type | str | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08create | update | delete\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/update_service_check_for_app/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5220\\\\u9664\\\\u4fee\\\\u6539\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08create</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/update_service_check_for_app/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5220\\\\u9664\\\\u4fee\\\\u6539\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08create</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6d40b29f84e5218a6abcbcb4e66e8917','2022-10-20 09:27:30','2025-04-23 11:04:13'),\n(158,'',159,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/post_inst_monitor_for_app/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5173\\\\u8054\\\\u7ec4\\\\u4ef6\\\\u76d1\\\\u63a7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| output | list or str | \\\\u5426   | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n| order_by | dict | \\\\u5426    | \\\\u6392\\\\u5e8f |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/post_inst_monitor_for_app/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5173\\\\u8054\\\\u7ec4\\\\u4ef6\\\\u76d1\\\\u63a7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| output | list or str | \\\\u5426   | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n| order_by | dict | \\\\u5426    | \\\\u6392\\\\u5e8f |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/post_inst_monitor_for_app/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5173\\\\u8054\\\\u7ec4\\\\u4ef6\\\\u76d1\\\\u63a7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_by</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6392\\\\u5e8f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/post_inst_monitor_for_app/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5173\\\\u8054\\\\u7ec4\\\\u4ef6\\\\u76d1\\\\u63a7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_by</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6392\\\\u5e8f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','edd0d011efe2989b8360fbfadc89dd7a','2022-10-20 13:36:29','2025-04-23 11:04:13'),\n(159,'',160,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_minion_file/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u4e3b\\\\u673a\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| file_path | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u7edd\\\\u5bf9\\\\u8def\\\\u5f84 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_name\\\\\\\":  \\\\\\\"unique value1\\\\\\\",\\\\n    \\\\\\\"file_path\\\\\\\": \\\\\\\"/opt/uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\nfile\\\\nor\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_minion_file/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u4e3b\\\\u673a\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | list | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| file_path | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u7edd\\\\u5bf9\\\\u8def\\\\u5f84 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_name\\\\\\\":  \\\\\\\"unique value1\\\\\\\",\\\\n    \\\\\\\"file_path\\\\\\\": \\\\\\\"/opt/uploads/xxx/xxx/xxx.py\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\nfile\\\\nor\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_minion_file/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u4e3b\\\\u673a\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_path</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u7edd\\\\u5bf9\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_path&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/opt/uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"nb\\\\\\\">file</span>\\\\n<span class=\\\\\\\"ow\\\\\\\">or</span>\\\\n<span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_minion_file/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u4e3b\\\\u673a\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_path</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u7edd\\\\u5bf9\\\\u8def\\\\u5f84</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;unique value1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_path&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/opt/uploads/xxx/xxx/xxx.py&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"nb\\\\\\\">file</span>\\\\n<span class=\\\\\\\"ow\\\\\\\">or</span>\\\\n<span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8acba0589e856451aa4fb39a004624c1','2022-11-02 13:01:44','2025-04-23 11:04:13'),\n(160,'',162,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','de19bf0c1e45fcf63c1b871aec801f53','2022-11-09 16:59:23','2025-04-23 11:04:13'),\n(161,'',163,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/auto/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/auto/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/auto/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/auto/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','733b1bcd45f7b875dc5d5bddd260970c','2022-11-09 17:09:57','2025-04-23 11:04:13'),\n(162,'',164,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','fd079e4a4d47762a0a141d514a86b23b','2022-11-10 03:06:04','2025-04-23 11:04:13'),\n(163,'',166,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','85ce13a99261670cdd75d74e0f8932d7','2022-11-12 09:20:06','2025-04-23 11:04:13'),\n(164,'',167,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','07a9c3e47cf7343d23f1c0fcafe37990','2022-11-12 09:20:06','2025-04-23 11:04:13'),\n(165,'',168,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','ab38ea620d184b75eff7315fdb6dbc1a','2022-11-12 09:20:06','2025-04-23 11:04:13'),\n(166,'',169,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','65dc302509362be3fe93b8f084a5d156','2022-11-12 09:20:06','2025-04-23 11:04:13'),\n(167,'',165,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','4d5d90b7d336f28a36c3e265a8b03491','2022-11-12 09:20:40','2025-04-23 11:04:13'),\n(168,'',171,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','200a1da8ebd4bc08554aca7a394ed6d4','2022-11-14 03:51:23','2025-04-23 11:04:13'),\n(169,'',170,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/event/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/event/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/event/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/event/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','56449a77327202bde8af787c83257960','2022-11-14 03:57:48','2025-04-23 11:04:13'),\n(170,'',172,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/dashboard/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/dashboard/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/dashboard/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/dashboard/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','c906e9fd9c8e63d526f1dc8dbc6624d5','2022-11-15 09:58:23','2025-04-23 11:04:13'),\n(171,'',173,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e73\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2267e7e9b9c93ec6fd64bf32411511ad','2022-11-21 12:49:25','2025-04-23 11:04:13'),\n(172,'',174,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_zc_model_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578bv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| - | - | -  | -  |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_zc_model_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578bv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| - | - | -  | -  |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_zc_model_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578bv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_zc_model_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u4ea7\\\\u5168\\\\u90e8\\\\u5206\\\\u7ec4\\\\u4ee5\\\\u53ca\\\\u6a21\\\\u578bv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n<td>-</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d67f7435e2a70a5c5d159e8966a42623','2022-12-15 14:53:28','2025-04-23 11:04:13'),\n(173,'',175,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_model_data_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u662f  | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name_list | list | \\\\u662f  | \\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| field_code_list | dict | \\\\u662f  | \\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_link_model_data_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| inst_model_code | str | \\\\u662f  | \\\\u6a21\\\\u578bcode |\\\\n| model_code_name_list | list | \\\\u662f  | \\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868 |\\\\n| field_code_list | dict | \\\\u662f  | \\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_model_data_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>inst_model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_link_model_data_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6279\\\\u91cf\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>inst_model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_name_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u6a21\\\\u578b\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_code_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u6a21\\\\u578b\\\\u5b57\\\\u6bb5code\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d5933713f786fcec0919394d468c0be7','2022-12-15 14:53:28','2025-04-23 11:04:13'),\n(174,'',176,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_server_from_control_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_server_from_control_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_server_from_control_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_server_from_control_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1ab0096b77ec75cc1373dfc9e373462a','2022-12-15 14:53:28','2025-04-23 11:04:13'),\n(175,'',177,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_grains_from_control_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_grains_from_control_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_grains_from_control_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_grains_from_control_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4ece\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1dab05484a012f3b1607b71ec61bde78','2022-12-15 14:53:28','2025-04-23 11:04:13'),\n(176,'',178,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| model_code_list | str | \\\\u5426   | \\\\\\\"\\\\u4e3b\\\\u673a\\\\u6a21\\\\u578bcode\\\\\\\" |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n| run_status | str | \\\\u5426   | \\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| model_code_list | str | \\\\u5426   | \\\\\\\"\\\\u4e3b\\\\u673a\\\\u6a21\\\\u578bcode\\\\\\\" |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n| run_status | str | \\\\u5426   | \\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_list</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\\\\"\\\\u4e3b\\\\u673a\\\\u6a21\\\\u578bcode\\\\\\\"</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_status</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673av2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_code_list</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\\\\"\\\\u4e3b\\\\u673a\\\\u6a21\\\\u578bcode\\\\\\\"</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_status</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','ef4d8d00bf43d8881eedc567b7f534ce','2022-12-15 14:53:28','2026-01-07 10:49:47'),\n(177,'',179,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_agent_state_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5v2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list | array | \\\\u662f    | \\\\u8282\\\\u70b9\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n     \\\\\\\"list\\\\\\\":[\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.2\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  [\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 22,\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"SERVER\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"SERVER_name\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_IN_RACK\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_HOSTNAME\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_INTERNAL_IP\\\\\\\": \\\\\\\"\\\\\\\",\\\\n            \\\\\\\"SERVER_PUBLIC_IP\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_AGENT_STATE\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"SERVER_CONTROLLER_NAME\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"SERVER_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n        \\\\\\\"position\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n        \\\\\\\"link_inst\\\\\\\": [],\\\\n        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"business_code\\\\\\\": \\\\\\\"x\\\\\\\"\\\\n    }\\\\n]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_agent_state_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5v2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list | array | \\\\u662f    | \\\\u8282\\\\u70b9\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n     \\\\\\\"list\\\\\\\":[\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.2\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  [\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 22,\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"SERVER\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"SERVER_name\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_IN_RACK\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_HOSTNAME\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_INTERNAL_IP\\\\\\\": \\\\\\\"\\\\\\\",\\\\n            \\\\\\\"SERVER_PUBLIC_IP\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_AGENT_STATE\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"SERVER_CONTROLLER_NAME\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"SERVER_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n        \\\\\\\"position\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n        \\\\\\\"link_inst\\\\\\\": [],\\\\n        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"business_code\\\\\\\": \\\\\\\"x\\\\\\\"\\\\n    }\\\\n]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_agent_state_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5v2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8282\\\\u70b9\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">22</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_IN_RACK&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_HOSTNAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_INTERNAL_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_PUBLIC_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_AGENT_STATE&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_CONTROLLER_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;x&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_agent_state_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5v2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8282\\\\u70b9\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">22</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_IN_RACK&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_HOSTNAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_INTERNAL_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_PUBLIC_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_AGENT_STATE&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_CONTROLLER_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;x&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','53a93cc159953a6531c9cbfec90171c0','2022-12-15 14:53:28','2025-04-23 11:04:13'),\n(178,'',180,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_service_check_from_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5168\\\\u90e8\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_service_check_from_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u8be2\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5168\\\\u90e8\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_service_check_from_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5168\\\\u90e8\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_service_check_from_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u8be2\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5168\\\\u90e8\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u72b6\\\\u6001</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','c7d9e29044136fd78f673a0323773ca0','2022-12-16 10:02:04','2025-04-23 11:04:13'),\n(179,'',181,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_by_model_code_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_by_model_code_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_by_model_code_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_by_model_code_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636ev2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d4bad6d44c800c3627b2e6900cd17dbd','2022-12-20 03:37:01','2025-04-23 11:04:13'),\n(180,'',182,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_application_screen_info_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_application_screen_info_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_application_screen_info_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_application_screen_info_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5927\\\\u5c4f\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','894c158023812a29525b6a5ef0d97e03','2022-12-20 03:37:01','2025-04-23 11:04:13'),\n(181,'',183,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_info_for_workbench_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_info_for_workbench_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_info_for_workbench_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_info_for_workbench_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u57fa\\\\u7840\\\\u805a\\\\u5408\\\\u4fe1\\\\u606fv2(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','eaeb0ad613ff54e1819daee68c93f73b','2022-12-20 04:04:48','2025-04-23 11:04:13'),\n(182,'',184,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/check_model_data_operation/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u7684\\\\u6307\\\\u5b9a\\\\u6570\\\\u636e\\\\u662f\\\\u5426\\\\u6709\\\\u6307\\\\u5b9a\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| data_list | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u5217\\\\u8868 |\\\\n\\\\t| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n\\\\t| operation_type | str | \\\\u662f    | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b |\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/check_model_data_operation/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u7684\\\\u6307\\\\u5b9a\\\\u6570\\\\u636e\\\\u662f\\\\u5426\\\\u6709\\\\u6307\\\\u5b9a\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n      \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n  \\\\t| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n\\\\t| ----- | ------ | ---- | -------- |\\\\n\\\\t| data_list | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u5217\\\\u8868 |\\\\n\\\\t| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n\\\\t| operation_type | str | \\\\u662f    | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b |\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20012,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/check_model_data_operation/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u7684\\\\u6307\\\\u5b9a\\\\u6570\\\\u636e\\\\u662f\\\\u5426\\\\u6709\\\\u6307\\\\u5b9a\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_list | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u5217\\\\u8868 |\\\\n| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n| operation_type | str | \\\\u662f    | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/check_model_data_operation/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u7684\\\\u6307\\\\u5b9a\\\\u6570\\\\u636e\\\\u662f\\\\u5426\\\\u6709\\\\u6307\\\\u5b9a\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_list | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u5217\\\\u8868 |\\\\n| model_code | str | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u540dcode |\\\\n| operation_type | str | \\\\u662f    | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20012,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n```\\\\n</pre></div>\\\"}','156f8806678c0434ba2710e27bf82c05','2022-12-20 09:16:05','2025-04-23 11:04:13'),\n(183,'',186,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_dep_v2_to_cmdb/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_dep_v2_to_cmdb/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_dep_v2_to_cmdb/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_dep_v2_to_cmdb/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\"}','07ee777f5c0058b69e3371d0fe5fc7a0','2022-12-20 11:00:56','2025-04-23 11:04:14'),\n(184,'',187,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_login_log/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8bb0\\\\u5f55\\\\u767b\\\\u5f55\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d   |\\\\n| address      | string |  \\\\u662f  | IP\\\\u5730\\\\u5740  |\\\\n| user_agent      | string |  \\\\u662f  | \\\\u6d4f\\\\u89c8\\\\u5668  |\\\\n| data      | dict |  \\\\u662f  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570  |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_login_log/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8bb0\\\\u5f55\\\\u767b\\\\u5f55\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d   |\\\\n| address      | string |  \\\\u662f  | IP\\\\u5730\\\\u5740  |\\\\n| user_agent      | string |  \\\\u662f  | \\\\u6d4f\\\\u89c8\\\\u5668  |\\\\n| data      | dict |  \\\\u662f  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570  |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_login_log/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8bb0\\\\u5f55\\\\u767b\\\\u5f55\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>address</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>user_agent</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d4f\\\\u89c8\\\\u5668</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_login_log/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8bb0\\\\u5f55\\\\u767b\\\\u5f55\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>address</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>user_agent</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d4f\\\\u89c8\\\\u5668</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\"}','fb5e6867c9f9ce27452494bbbf0f17b1','2022-12-21 14:14:54','2025-04-23 11:04:14'),\n(185,'',188,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_v2_to_cmdb/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u90e8\\\\u95e8\\\\u4e0b\\\\u7684\\\\u5168\\\\u90e8\\\\u666e\\\\u901a\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_v2_to_cmdb/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u90e8\\\\u95e8\\\\u4e0b\\\\u7684\\\\u5168\\\\u90e8\\\\u666e\\\\u901a\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20005,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"id\\\\\\\": 1,\\\\n        \\\\\\\"content\\\\\\\": \\\\\\\"Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved\\\\\\\"\\\\n    }\\\\n} \\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_v2_to_cmdb/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u90e8\\\\u95e8\\\\u4e0b\\\\u7684\\\\u5168\\\\u90e8\\\\u666e\\\\u901a\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_v2_to_cmdb/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u90e8\\\\u95e8\\\\u4e0b\\\\u7684\\\\u5168\\\\u90e8\\\\u666e\\\\u901a\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20005,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;id&quot;: 1,\\\\n        &quot;content&quot;: &quot;Copyright \\\\u00a9 2019-2022 OpsAny. All Rights Reserved&quot;\\\\n    }\\\\n} \\\\n</pre></div>\\\"}','3734df51c8b7bde747948affd1d3a686','2022-12-23 06:13:21','2025-04-23 11:04:14'),\n(186,'',189,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_language_theme_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u9898\\\\u8272\\\\u548c\\\\u5e73\\\\u53f0\\\\u8bed\\\\u8a00\\\\u914d\\\\u7f6e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    {\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\": \\\\\\\"username\\\\\\\",\\\\n}\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| user_token | string | \\\\u662f  | token |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20014,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"language\\\\\\\": \\\\\\\"chinese_simplified\\\\\\\",\\\\n        \\\\\\\"language_name\\\\\\\": \\\\\\\"\\\\u7b80\\\\u4f53\\\\u4e2d\\\\u6587\\\\\\\",\\\\n        \\\\\\\"theme\\\\\\\": \\\\\\\"default\\\\\\\",\\\\n        \\\\\\\"theme_name\\\\\\\": \\\\\\\"\\\\u9ed8\\\\u8ba4\\\\u4e3b\\\\u9898\\\\\\\",\\\\n        \\\\\\\"username\\\\\\\": \\\\\\\"huxingqi\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_language_theme_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u9898\\\\u8272\\\\u548c\\\\u5e73\\\\u53f0\\\\u8bed\\\\u8a00\\\\u914d\\\\u7f6e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    {\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\": \\\\\\\"username\\\\\\\",\\\\n}\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| user_token | string | \\\\u662f  | token |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20014,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"language\\\\\\\": \\\\\\\"chinese_simplified\\\\\\\",\\\\n        \\\\\\\"language_name\\\\\\\": \\\\\\\"\\\\u7b80\\\\u4f53\\\\u4e2d\\\\u6587\\\\\\\",\\\\n        \\\\\\\"theme\\\\\\\": \\\\\\\"default\\\\\\\",\\\\n        \\\\\\\"theme_name\\\\\\\": \\\\\\\"\\\\u9ed8\\\\u8ba4\\\\u4e3b\\\\u9898\\\\\\\",\\\\n        \\\\\\\"username\\\\\\\": \\\\\\\"huxingqi\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_language_theme_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u9898\\\\u8272\\\\u548c\\\\u5e73\\\\u53f0\\\\u8bed\\\\u8a00\\\\u914d\\\\u7f6e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n&quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n&quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n&quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n&quot;username&quot;: &quot;username&quot;,\\\\n</pre></div>\\\\n\\\\n<p>}</p>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>user_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20014,\\\\n    &quot;message&quot;: &quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;language&quot;: &quot;chinese_simplified&quot;,\\\\n        &quot;language_name&quot;: &quot;\\\\u7b80\\\\u4f53\\\\u4e2d\\\\u6587&quot;,\\\\n        &quot;theme&quot;: &quot;default&quot;,\\\\n        &quot;theme_name&quot;: &quot;\\\\u9ed8\\\\u8ba4\\\\u4e3b\\\\u9898&quot;,\\\\n        &quot;username&quot;: &quot;huxingqi&quot;\\\\n    }\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_language_theme_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u9898\\\\u8272\\\\u548c\\\\u5e73\\\\u53f0\\\\u8bed\\\\u8a00\\\\u914d\\\\u7f6e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n&quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n&quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n&quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n&quot;username&quot;: &quot;username&quot;,\\\\n</pre></div>\\\\n\\\\n<p>}</p>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>user_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>token</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20014,\\\\n    &quot;message&quot;: &quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;language&quot;: &quot;chinese_simplified&quot;,\\\\n        &quot;language_name&quot;: &quot;\\\\u7b80\\\\u4f53\\\\u4e2d\\\\u6587&quot;,\\\\n        &quot;theme&quot;: &quot;default&quot;,\\\\n        &quot;theme_name&quot;: &quot;\\\\u9ed8\\\\u8ba4\\\\u4e3b\\\\u9898&quot;,\\\\n        &quot;username&quot;: &quot;huxingqi&quot;\\\\n    }\\\\n}\\\\n</pre></div>\\\"}','4cf62428776b3406a4e3827957e836dc','2023-01-31 02:02:40','2025-04-23 11:04:14'),\n(187,'',190,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_auth_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u7684api\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| username | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d   |\\\\n| access_token | string |  \\\\u662f  | access_token   |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": \\\\\\\"200\\\\\\\",\\\\n    \\\\\\\"successcode\\\\\\\": \\\\\\\"20023\\\\\\\",\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"/api/workbench/v0_1/user-info/___GET\\\\\\\",\\\\n        \\\\\\\"/api/workbench/v0_1/nav-group/___PUT\\\\\\\"\\\\n    },\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_auth_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u7684api\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| username | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d   |\\\\n| access_token | string |  \\\\u662f  | access_token   |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": \\\\\\\"200\\\\\\\",\\\\n    \\\\\\\"successcode\\\\\\\": \\\\\\\"20023\\\\\\\",\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"/api/workbench/v0_1/user-info/___GET\\\\\\\",\\\\n        \\\\\\\"/api/workbench/v0_1/nav-group/___PUT\\\\\\\"\\\\n    },\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_auth_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u7684api</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>access_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>access_token</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;200&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;20023&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;/api/workbench/v0_1/user-info/___GET&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;/api/workbench/v0_1/nav-group/___PUT&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_auth_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u7684api</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>access_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>access_token</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;200&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;20023&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;/api/workbench/v0_1/user-info/___GET&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;/api/workbench/v0_1/nav-group/___PUT&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','684691c5155052bc129e2c1e6d155472','2023-02-10 10:32:08','2025-04-23 11:04:14'),\n(188,'',43,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/event_type_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e8b\\\\u4ef6\\\\u4fe1\\\\u606f\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/event_type_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e8b\\\\u4ef6\\\\u4fe1\\\\u606f\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/event_type_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e8b\\\\u4ef6\\\\u4fe1\\\\u606f\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/event_type_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e8b\\\\u4ef6\\\\u4fe1\\\\u606f\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ad815fdd971e349ba2c508c4b5617042','2023-02-13 01:28:02','2025-04-23 11:04:11'),\n(189,'',191,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_rbac_auth_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684\\\\u76f8\\\\u5173\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| data_type | string | \\\\u662f  | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| param_dict | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_user_rbac_auth_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684\\\\u76f8\\\\u5173\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | string | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| data_type | string | \\\\u662f  | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| param_dict | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_rbac_auth_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684\\\\u76f8\\\\u5173\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>param_dict</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_user_rbac_auth_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7684\\\\u76f8\\\\u5173\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>param_dict</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\"}','64d9fbaea8df5fb7314e7221324d5e7e','2023-02-15 02:54:48','2025-04-23 11:04:14'),\n(190,'',192,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/sync_stackstorm_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| url | string | \\\\u662f  | \\\\u670d\\\\u52a1\\\\u5730\\\\u5740 |\\\\n| api_key | string | \\\\u662f  | key |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/sync_stackstorm_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| url | string | \\\\u662f  | \\\\u670d\\\\u52a1\\\\u5730\\\\u5740 |\\\\n| api_key | string | \\\\u662f  | key |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/sync_stackstorm_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api_key</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>key</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/sync_stackstorm_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api_key</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>key</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','157bbf4e4c5458ef0d5dd7a74dbc6459','2023-02-22 08:08:00','2025-04-23 11:04:14'),\n(191,'',193,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/event/sync_stackstorm_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| url | string | \\\\u662f  | \\\\u670d\\\\u52a1\\\\u5730\\\\u5740 |\\\\n| api_key | string | \\\\u662f  | key |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/event/sync_stackstorm_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| url | string | \\\\u662f  | \\\\u670d\\\\u52a1\\\\u5730\\\\u5740 |\\\\n| api_key | string | \\\\u662f  | key |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/event/sync_stackstorm_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api_key</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>key</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/event/sync_stackstorm_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u6765\\\\u7684st2\\\\u914d\\\\u7f6e\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>url</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api_key</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>key</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d0ebc3ef3e3357feb093788f02ca3946','2023-02-22 08:08:00','2025-04-23 11:04:14'),\n(192,'',194,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_business_auth_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6388\\\\u6743\\\\u4e1a\\\\u52a1\\\\u5e94\\\\u7528\\\\u670d\\\\u52a1\\\\u603b\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_business_auth_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6388\\\\u6743\\\\u4e1a\\\\u52a1\\\\u5e94\\\\u7528\\\\u670d\\\\u52a1\\\\u603b\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_business_auth_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6388\\\\u6743\\\\u4e1a\\\\u52a1\\\\u5e94\\\\u7528\\\\u670d\\\\u52a1\\\\u603b\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_business_auth_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6388\\\\u6743\\\\u4e1a\\\\u52a1\\\\u5e94\\\\u7528\\\\u670d\\\\u52a1\\\\u603b\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d8268116bd3abc6f355542fe8f2a307e','2023-02-22 10:06:04','2025-04-23 11:04:14'),\n(193,'',195,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/kbase/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/kbase/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/kbase/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/kbase/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','2b26624302241276b9508c0ffad69252','2023-03-02 11:50:18','2025-04-23 11:04:14'),\n(194,'',196,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_all_department_user_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811(\\\\u5305\\\\u62ec\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u7528\\\\u6237\\\\u4f53\\\\u7cfb)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_all_department_user_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811(\\\\u5305\\\\u62ec\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u7528\\\\u6237\\\\u4f53\\\\u7cfb)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_all_department_user_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811(\\\\u5305\\\\u62ec\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u7528\\\\u6237\\\\u4f53\\\\u7cfb)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_all_department_user_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811(\\\\u5305\\\\u62ec\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u7528\\\\u6237\\\\u4f53\\\\u7cfb)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6dffd256be8559193c934f10ba16a0a1','2023-03-14 09:03:41','2025-04-23 11:04:14'),\n(195,'',197,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/log/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/log/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/log/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/log/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','3ff596706dc6169f638bbd6c5923df80','2023-03-23 06:47:40','2025-04-23 11:04:14'),\n(196,'',198,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/log/sync_es_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/log/sync_es_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/log/sync_es_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/log/sync_es_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','29b3b8d3a935bab979438d42093eda8c','2023-03-23 07:56:23','2025-04-23 11:04:14'),\n(197,'',199,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_security_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| security_config | dict | \\\\u662f  | \\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"security_config\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u4fee\\\\u6539\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_security_config/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| security_config | dict | \\\\u662f  | \\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"security_config\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u4fee\\\\u6539\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_security_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>security_config</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;security_config&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u4fee\\\\u6539\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_security_config/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>security_config</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u914d\\\\u7f6e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;security_config&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u4fee\\\\u6539\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4f1f4f6bcde0a2bae2ae785f63d12487','2023-04-12 10:52:19','2025-04-23 11:04:14'),\n(198,'',200,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_import_model_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| data_type | str | \\\\u5426   | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b data_tree,model_tree,parent_model_code,parent_model_data_id, |\\\\n| parent_model_data_id | str | \\\\u5426   | \\\\u7236\\\\u7ea7ID |\\\\n| search_type | str | \\\\u5426   | \\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426   | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n| page | int | \\\\u5426   | \\\\u9875\\\\u7801 |\\\\n| per_page | int | \\\\u5426   | \\\\u9875\\\\u6570 |\\\\n| run_status | str | \\\\u5426 | \\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_import_model_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| data_type | str | \\\\u5426   | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b data_tree,model_tree,parent_model_code,parent_model_data_id, |\\\\n| parent_model_data_id | str | \\\\u5426   | \\\\u7236\\\\u7ea7ID |\\\\n| search_type | str | \\\\u5426   | \\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426   | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n| page | int | \\\\u5426   | \\\\u9875\\\\u7801 |\\\\n| per_page | int | \\\\u5426   | \\\\u9875\\\\u6570 |\\\\n| run_status | str | \\\\u5426 | \\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_import_model_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b data_tree,model_tree,parent_model_code,parent_model_data_id,</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parent_model_data_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7236\\\\u7ea7ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>per_page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_status</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_import_model_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6a21\\\\u578b\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b data_tree,model_tree,parent_model_code,parent_model_data_id,</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parent_model_data_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7236\\\\u7ea7ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>per_page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_status</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u72b6\\\\u6001</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','f515721fbf1a8e85b28740f7f0508ad4','2023-04-25 06:53:19','2026-01-07 10:49:47'),\n(199,'',201,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/get_network_proxy/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | search_type | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n   | search_data | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5173\\\\u952e\\\\u5b57 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n       ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n\\\\n   }\\\\n   ```\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n   {\\\\n       \\\\\\\"code\\\\\\\": 200,\\\\n       \\\\\\\"apicode\\\\\\\": 20012,\\\\n       \\\\\\\"result\\\\\\\": true,\\\\n       \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n       \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\",\\\\n       \\\\\\\"data\\\\\\\": [\\\\n           {\\\\n               \\\\\\\"id\\\\\\\": 1,\\\\n               \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u897f\\\\u533a\\\\u673a\\\\u623f\\\\u4ee3\\\\u7406\\\\\\\"\\\\n           }\\\\n       ]\\\\n   }\\\\n   ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/get_network_proxy/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | search_type | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n   | search_data | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5173\\\\u952e\\\\u5b57 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n       ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n\\\\n   }\\\\n   ```\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n   {\\\\n       \\\\\\\"code\\\\\\\": 200,\\\\n       \\\\\\\"apicode\\\\\\\": 20012,\\\\n       \\\\\\\"result\\\\\\\": true,\\\\n       \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n       \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\",\\\\n       \\\\\\\"data\\\\\\\": [\\\\n           {\\\\n               \\\\\\\"id\\\\\\\": 1,\\\\n               \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u897f\\\\u533a\\\\u673a\\\\u623f\\\\u4ee3\\\\u7406\\\\\\\"\\\\n           }\\\\n       ]\\\\n   }\\\\n   ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/get_network_proxy/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | search_type | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n   | search_data | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5173\\\\u952e\\\\u5b57 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>   ```python\\\\n{\\\\n   &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n   &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n   &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n</pre></div>\\\\n\\\\n<p>}\\\\n   ```</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n   {\\\\n       \\\\\\\"code\\\\\\\": 200,\\\\n       \\\\\\\"apicode\\\\\\\": 20012,\\\\n       \\\\\\\"result\\\\\\\": true,\\\\n       \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n       \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\",\\\\n       \\\\\\\"data\\\\\\\": [\\\\n           {\\\\n               \\\\\\\"id\\\\\\\": 1,\\\\n               \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u897f\\\\u533a\\\\u673a\\\\u623f\\\\u4ee3\\\\u7406\\\\\\\"\\\\n           }\\\\n       ]\\\\n   }</code></p>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/get_network_proxy/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u7528\\\\u6237\\\\u8f93\\\\u5165\\\\u5185\\\\u5bb9\\\\u83b7\\\\u53d6\\\\u5821\\\\u5792\\\\u673a\\\\u8fde\\\\u63a5\\\\u7528token</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | search_type | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u7c7b\\\\u578b |\\\\n   | search_data | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5173\\\\u952e\\\\u5b57 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>   ```python\\\\n{\\\\n   &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n   &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n   &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n</pre></div>\\\\n\\\\n<p>}\\\\n   ```</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n   {\\\\n       \\\\\\\"code\\\\\\\": 200,\\\\n       \\\\\\\"apicode\\\\\\\": 20012,\\\\n       \\\\\\\"result\\\\\\\": true,\\\\n       \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n       \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\",\\\\n       \\\\\\\"data\\\\\\\": [\\\\n           {\\\\n               \\\\\\\"id\\\\\\\": 1,\\\\n               \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u897f\\\\u533a\\\\u673a\\\\u623f\\\\u4ee3\\\\u7406\\\\\\\"\\\\n           }\\\\n       ]\\\\n   }</code></p>\\\"}','b0a7d20513b6bd52dfb0c068d1a856b2','2023-05-04 03:04:36','2025-04-23 11:04:14'),\n(200,'',202,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_cmp_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e91\\\\u7ba1\\\\u76f8\\\\u5173\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_cmp_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e91\\\\u7ba1\\\\u76f8\\\\u5173\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_cmp_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e91\\\\u7ba1\\\\u76f8\\\\u5173\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_cmp_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e91\\\\u7ba1\\\\u76f8\\\\u5173\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','39c5a5f8cee8f906e96de2e0b40e99df','2023-05-29 12:19:58','2025-04-23 11:04:14'),\n(201,'',203,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_cmp_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u4e91\\\\u7ba1\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_cmp_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u4e91\\\\u7ba1\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_cmp_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u4e91\\\\u7ba1\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_cmp_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u4e91\\\\u7ba1\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7f4f40fbf187b40ac7d1a906f9827ce0','2023-05-30 02:11:57','2025-04-23 11:04:14');\nINSERT INTO `esb_api_doc` VALUES\n(202,'',204,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_network_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u7f51\\\\u7edc\\\\u8bbe\\\\u5907\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_network_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u7f51\\\\u7edc\\\\u8bbe\\\\u5907\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_network_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u7f51\\\\u7edc\\\\u8bbe\\\\u5907</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_network_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7ba1\\\\u63a7\\\\u65b0\\\\u5efa\\\\u7f51\\\\u7edc\\\\u8bbe\\\\u5907</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b9e056ed6657ebde07b673471374b221','2023-07-01 06:44:58','2025-04-23 11:04:14'),\n(203,'',205,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/resource_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u7ba1\\\\u63a7\\\\u6dfb\\\\u52a0\\\\u8d44\\\\u6e90\\\\u540c\\\\u6b65\\\\u81f3\\\\u5821\\\\u5792\\\\u673a\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n   | credential | dict | \\\\u662f  | \\\\u51ed\\\\u8bc1 |\\\\n   | data_list | dict | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u5217\\\\u8868 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/resource_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u7ba1\\\\u63a7\\\\u6dfb\\\\u52a0\\\\u8d44\\\\u6e90\\\\u540c\\\\u6b65\\\\u81f3\\\\u5821\\\\u5792\\\\u673a\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n   | credential | dict | \\\\u662f  | \\\\u51ed\\\\u8bc1 |\\\\n   | data_list | dict | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u5217\\\\u8868 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/resource_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ba1\\\\u63a7\\\\u6dfb\\\\u52a0\\\\u8d44\\\\u6e90\\\\u540c\\\\u6b65\\\\u81f3\\\\u5821\\\\u5792\\\\u673a</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n   | credential | dict | \\\\u662f  | \\\\u51ed\\\\u8bc1 |\\\\n   | data_list | dict | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u5217\\\\u8868 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/resource_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ba1\\\\u63a7\\\\u6dfb\\\\u52a0\\\\u8d44\\\\u6e90\\\\u540c\\\\u6b65\\\\u81f3\\\\u5821\\\\u5792\\\\u673a</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n   | credential | dict | \\\\u662f  | \\\\u51ed\\\\u8bc1 |\\\\n   | data_list | dict | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u5217\\\\u8868 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\"}','7de1d3fb74e96a6b09de796130edfbbb','2023-07-11 03:55:04','2025-04-23 11:04:14'),\n(204,'',206,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_rules_create_or_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0Prometheus\\\\u89c4\\\\u5219\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| yml_str | string | \\\\u662f  | \\\\u89c4\\\\u5219 |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"file_name\\\\\\\": \\\\\\\"xxx-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_rules_create_or_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0Prometheus\\\\u89c4\\\\u5219\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| yml_str | string | \\\\u662f  | \\\\u89c4\\\\u5219 |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"file_name\\\\\\\": \\\\\\\"xxx-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_rules_create_or_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0Prometheus\\\\u89c4\\\\u5219</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yml_str</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u89c4\\\\u5219</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_rules_create_or_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0Prometheus\\\\u89c4\\\\u5219</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yml_str</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u89c4\\\\u5219</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b9eeb3e7725027f43e13d8b63a09e28d','2023-07-25 10:59:47','2025-04-23 11:04:14'),\n(205,'',207,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_rules_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664Prometheus\\\\u89c4\\\\u5219\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| file_url | file_url | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u5730\\\\u5740 |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_rules_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664Prometheus\\\\u89c4\\\\u5219\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| file_url | file_url | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u5730\\\\u5740 |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_rules_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664Prometheus\\\\u89c4\\\\u5219</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_url</td>\\\\n<td>file_url</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_rules_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664Prometheus\\\\u89c4\\\\u5219</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_url</td>\\\\n<td>file_url</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u5730\\\\u5740</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7766a87549e3ab13b70a84739682438b','2023-07-25 10:59:47','2025-04-23 11:04:14'),\n(206,'',208,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/run_deploy_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| deploy_name | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0 |\\\\n| run_parameter_list | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/run_deploy_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| deploy_name | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0 |\\\\n| run_parameter_list | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/run_deploy_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>deploy_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/run_deploy_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>deploy_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a3225182fafdcb0195a589484556dd2c','2023-08-01 06:09:11','2025-04-23 11:04:14'),\n(207,'',209,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/run_pipeline_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0    |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| parameters | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"application_name\\\\\\\": \\\\\\\"opsany\\\\\\\",\\\\n    \\\\\\\"job_name\\\\\\\": \\\\\\\"job_name\\\\\\\",\\\\n    \\\\\\\"req_source\\\\\\\": \\\\\\\"API\\\\u8c03\\\\u7528\\\\\\\",\\\\n    \\\\\\\"app_from\\\\\\\": \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/run_pipeline_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0    |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| parameters | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"application_name\\\\\\\": \\\\\\\"opsany\\\\\\\",\\\\n    \\\\\\\"job_name\\\\\\\": \\\\\\\"job_name\\\\\\\",\\\\n    \\\\\\\"req_source\\\\\\\": \\\\\\\"API\\\\u8c03\\\\u7528\\\\\\\",\\\\n    \\\\\\\"app_from\\\\\\\": \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/run_pipeline_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;application_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;req_source&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;API\\\\u8c03\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;app_from&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/run_pipeline_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;application_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;req_source&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;API\\\\u8c03\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;app_from&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3de9b849179b0905b49214db3f01ee8f','2023-08-01 06:09:11','2025-04-23 11:04:14'),\n(208,'',210,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','dbe6ef647ff52117041bed54a7784506','2023-08-22 02:42:48','2025-04-23 11:04:14'),\n(209,'',211,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_model_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u6a21\\\\u578b\\\\u6811 \\\\u6a21\\\\u578b\\\\u5927\\\\u7c7b-\\\\u6a21\\\\u578b\\\\u4e2d\\\\u7ec4-\\\\u6a21\\\\u578b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_model_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u6a21\\\\u578b\\\\u6811 \\\\u6a21\\\\u578b\\\\u5927\\\\u7c7b-\\\\u6a21\\\\u578b\\\\u4e2d\\\\u7ec4-\\\\u6a21\\\\u578b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_model_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u6a21\\\\u578b\\\\u6811 \\\\u6a21\\\\u578b\\\\u5927\\\\u7c7b-\\\\u6a21\\\\u578b\\\\u4e2d\\\\u7ec4-\\\\u6a21\\\\u578b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_model_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u6a21\\\\u578b\\\\u6811 \\\\u6a21\\\\u578b\\\\u5927\\\\u7c7b-\\\\u6a21\\\\u578b\\\\u4e2d\\\\u7ec4-\\\\u6a21\\\\u578b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8f68ef14b0e88fbcf676e7af51b1ff21','2023-09-22 10:42:22','2025-04-23 11:04:14'),\n(210,'',212,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_network_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_network_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_network_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_network_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907\\\\u7ec4\\\\uff08\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d75de3ed6a1db66294f4cf68f37bce74','2023-10-30 04:07:17','2025-04-23 11:04:14'),\n(211,'',213,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_network_info_for_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_network_info_for_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_network_info_for_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_network_info_for_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u7f51\\\\u8def\\\\u8bbe\\\\u5907(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','9c43bbe2b2ba34b0bd57181b501e33b5','2023-10-30 04:07:17','2025-04-23 11:04:14'),\n(212,'',214,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_proxy/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Proxy\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_proxy/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Proxy\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| search_type | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426   | \\\\u7b5b\\\\u9009\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_proxy/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Proxy\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_proxy/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Proxy\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7683b2654bc412a8e0f59831b75877f3','2023-11-02 03:28:41','2025-04-23 11:04:14'),\n(213,'',215,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_server_check_create_or_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| proxy_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| yml_str | string | \\\\u662f  | \\\\u89c4\\\\u5219 |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"proxy_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"file_name\\\\\\\": \\\\\\\"xxx-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_server_check_create_or_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| proxy_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| yml_str | string | \\\\u662f  | \\\\u89c4\\\\u5219 |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"proxy_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"file_name\\\\\\\": \\\\\\\"xxx-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_server_check_create_or_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>proxy_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yml_str</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u89c4\\\\u5219</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;proxy_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_server_check_create_or_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>proxy_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yml_str</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u89c4\\\\u5219</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;proxy_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2431f54df491e1d31b9dd4cbb4bc4072','2023-11-04 06:50:14','2025-04-23 11:04:14'),\n(214,'',216,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_server_check_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| proxy_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| file_name | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u540d\\\\u79f0 |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"proxy_id\\\\\\\": 1,\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_server_check_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| proxy_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| file_name | string | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u540d\\\\u79f0 |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"proxy_id\\\\\\\": 1,\\\\n    \\\\\\\"file_url\\\\\\\": \\\\\\\"1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_server_check_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>proxy_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;proxy_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_server_check_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4byml\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>proxy_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;proxy_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2df73a2e0337568f57d184b76999b438','2023-11-04 06:50:14','2025-04-23 11:04:14'),\n(215,'',217,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/service_check_export/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u51fa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id_list | dict | \\\\u662f    |  \\\\u5bfc\\\\u51fa\\\\u6570\\\\u636eID |\\\\n| params | str | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/service_check_export/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u51fa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id_list | dict | \\\\u662f    |  \\\\u5bfc\\\\u51fa\\\\u6570\\\\u636eID |\\\\n| params | str | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/service_check_export/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u51fa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u51fa\\\\u6570\\\\u636eID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/service_check_export/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u51fa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id_list</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u51fa\\\\u6570\\\\u636eID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fad7294d92f21c0d51b18dfc04a6dc0d','2023-11-15 06:16:17','2025-04-23 11:04:14'),\n(216,'',219,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/service_check_import_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bfc\\\\u5165\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_type | str | \\\\u662f    |  \\\\u6a21\\\\u677f\\\\u7c7b\\\\u578b |\\\\n| params | str | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/service_check_import_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bfc\\\\u5165\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| request_type | str | \\\\u662f    |  \\\\u6a21\\\\u677f\\\\u7c7b\\\\u578b |\\\\n| params | str | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/service_check_import_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bfc\\\\u5165\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n<tr>\\\\n<td>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u677f\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/service_check_import_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bfc\\\\u5165\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n<tr>\\\\n<td>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>request_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u677f\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','de42c0e27f50da645ecbd7966c761c5e','2023-11-15 06:19:43','2025-04-23 11:04:14'),\n(217,'',218,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/service_check_import/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u5165\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| json_data | dict | \\\\u662f    |  \\\\u5bfc\\\\u5165\\\\u7684\\\\u6570\\\\u636e |\\\\n| params | str | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/service_check_import/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u5165\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| json_data | dict | \\\\u662f    |  \\\\u5bfc\\\\u5165\\\\u7684\\\\u6570\\\\u636e |\\\\n| params | str | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/service_check_import/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u5165</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>json_data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/service_check_import/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u5bfc\\\\u5165</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>json_data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','97559a31b5b1d977efd3ec2fc3926ef1','2023-11-15 09:41:09','2025-04-23 11:04:14'),\n(218,'',220,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_delay_of_service/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5ef6\\\\u8fdf\\\\u5361\\\\u7247\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| start | datetime | \\\\u662f | \\\\u8fc7\\\\u53bb15\\\\u5206\\\\u949f\\\\u7684\\\\u65f6\\\\u95f4 |\\\\n| end | datetime | \\\\u662f | \\\\u5f53\\\\u524d\\\\u65f6\\\\u95f4 |\\\\n|app_id | str | \\\\u662f | \\\\u5e94\\\\u7528code\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"api_code\\\\\\\": 20008,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxxxxxxxx\\\\\\\",\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_delay_of_service/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5ef6\\\\u8fdf\\\\u5361\\\\u7247\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| start | datetime | \\\\u662f | \\\\u8fc7\\\\u53bb15\\\\u5206\\\\u949f\\\\u7684\\\\u65f6\\\\u95f4 |\\\\n| end | datetime | \\\\u662f | \\\\u5f53\\\\u524d\\\\u65f6\\\\u95f4 |\\\\n|app_id | str | \\\\u662f | \\\\u5e94\\\\u7528code\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"api_code\\\\\\\": 20008,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxxxxxxxx\\\\\\\",\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_delay_of_service/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5ef6\\\\u8fdf\\\\u5361\\\\u7247</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>start</td>\\\\n<td>datetime</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8fc7\\\\u53bb15\\\\u5206\\\\u949f\\\\u7684\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end</td>\\\\n<td>datetime</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 200,\\\\n        &quot;api_code&quot;: 20008,\\\\n        &quot;result&quot;: true,\\\\n        &quot;request_id&quot;: &quot;xxxxxxxxxxxxxxxxxxxxxx&quot;,\\\\n        &quot;message&quot;: &quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;,\\\\n        &quot;data&quot;: [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_delay_of_service/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5ef6\\\\u8fdf\\\\u5361\\\\u7247</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>start</td>\\\\n<td>datetime</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8fc7\\\\u53bb15\\\\u5206\\\\u949f\\\\u7684\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end</td>\\\\n<td>datetime</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 200,\\\\n        &quot;api_code&quot;: 20008,\\\\n        &quot;result&quot;: true,\\\\n        &quot;request_id&quot;: &quot;xxxxxxxxxxxxxxxxxxxxxx&quot;,\\\\n        &quot;message&quot;: &quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;,\\\\n        &quot;data&quot;: [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n</pre></div>\\\"}','749c13eda1a3dacf5d0040ed855eb095','2024-01-03 12:44:46','2025-04-23 11:04:14'),\n(219,'',221,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_service_check_metric_apm/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id | int | \\\\u662f    |  \\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID |\\\\n| data_type | str | \\\\u662f    |  \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history) |\\\\n| time | list or str | \\\\u5426   | \\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720) |\\\\n| start_time | str | \\\\u5426    | \\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01) |\\\\n| end_time | str | \\\\u5426    | \\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)  |\\\\n| current | str | \\\\u5426    | \\\\u7b2c\\\\u51e0\\\\u9875 |\\\\n| pageSize | str | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_service_check_metric_apm/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id | int | \\\\u662f    |  \\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID |\\\\n| data_type | str | \\\\u662f    |  \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history) |\\\\n| time | list or str | \\\\u5426   | \\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720) |\\\\n| start_time | str | \\\\u5426    | \\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01) |\\\\n| end_time | str | \\\\u5426    | \\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)  |\\\\n| current | str | \\\\u5426    | \\\\u7b2c\\\\u51e0\\\\u9875 |\\\\n| pageSize | str | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_service_check_metric_apm/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>start_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b2c\\\\u51e0\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_service_check_metric_apm/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4bID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b(response_time, probability, history)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u95f4\\\\u9694\\\\u65f6\\\\u95f4(3, 12, 24, 168, 720)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>start_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f00\\\\u59cb\\\\u65f6\\\\u95f4(2020-09-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>end_time</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7ed3\\\\u675f\\\\u65f6\\\\u95f4(2020-10-02 18:38:01)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b2c\\\\u51e0\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3b991778860ddbd8331b89bc27ecd368','2024-01-08 12:03:28','2025-04-23 11:04:14'),\n(220,'',222,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/post_service_check_for_app_apm/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| output | list or str | \\\\u5426   | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/post_service_check_for_app_apm/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name_list | list or str | \\\\u662f    |  \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| output | list or str | \\\\u5426   | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| filters | dict | \\\\u5426    | \\\\u7b5b\\\\u9009 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/post_service_check_for_app_apm/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/post_service_check_for_app_apm/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7app\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u5173\\\\u8054\\\\u7684\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name_list</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list or str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filters</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7b5b\\\\u9009</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','aae464142a948a4f2dde665eb4b3bc6c','2024-01-08 12:03:28','2025-04-23 11:04:14'),\n(221,'',223,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_format/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n\\\\\\\"code\\\\\\\": 200,\\\\n\\\\\\\"successcode\\\\\\\": 20002,\\\\n\\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n\\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"maven2\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"docker\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"pypi\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_format/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n\\\\\\\"code\\\\\\\": 200,\\\\n\\\\\\\"successcode\\\\\\\": 20002,\\\\n\\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n\\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"maven2\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"docker\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"format_name\\\\\\\": \\\\\\\"pypi\\\\\\\",\\\\n            \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_format/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n&quot;code&quot;: 200,\\\\n&quot;successcode&quot;: 20002,\\\\n&quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n&quot;data&quot;: [\\\\n        {\\\\n            &quot;format_name&quot;: &quot;raw&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        },\\\\n        {\\\\n            &quot;format_name&quot;: &quot;maven2&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        },\\\\n        {\\\\n            &quot;format_name&quot;: &quot;docker&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        },\\\\n        {\\\\n            &quot;format_name&quot;: &quot;pypi&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_format/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n&quot;code&quot;: 200,\\\\n&quot;successcode&quot;: 20002,\\\\n&quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n&quot;data&quot;: [\\\\n        {\\\\n            &quot;format_name&quot;: &quot;raw&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        },\\\\n        {\\\\n            &quot;format_name&quot;: &quot;maven2&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        },\\\\n        {\\\\n            &quot;format_name&quot;: &quot;docker&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        },\\\\n        {\\\\n            &quot;format_name&quot;: &quot;pypi&quot;,\\\\n            &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/&quot;\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','91771a2d3d87aff7fa652122d09160d4','2024-01-16 06:26:07','2025-04-23 11:04:14'),\n(222,'',224,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| format_type | str | \\\\u5426 | \\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f |\\\\n| list_type | str | \\\\u5426 | \\\\u6839\\\\u636e\\\\u8fd9\\\\u4e2a\\\\u6765\\\\u5224\\\\u65ad\\\\u83b7\\\\u53d6\\\\u6536\\\\u85cf\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93 |\\\\n| search_type | str | \\\\u5426 | \\\\u6839\\\\u636e\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\u641c\\\\u7d22 |\\\\n| search_data | str | \\\\u5426 | \\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57\\\\u6216\\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n\\\\\\\"code\\\\\\\": 200,\\\\n\\\\\\\"successcode\\\\\\\": 20002,\\\\n\\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n\\\\\\\"data\\\\\\\": {\\\\n    \\\\\\\"inner_list\\\\\\\": [],\\\\n    \\\\\\\"public_list\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": x,\\\\n                \\\\\\\"is_app\\\\\\\": false,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"maven-central\\\\\\\",\\\\n                \\\\\\\"type\\\\\\\": \\\\\\\"proxy\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"maven2\\\\\\\",\\\\n                \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n                \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/maven-central\\\\\\\",\\\\n                \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"attributes\\\\\\\": {\\\\n                    \\\\\\\"proxy\\\\\\\": {\\\\n                        \\\\\\\"remoteUrl\\\\\\\": \\\\\\\"https://repo1.maven.org/maven2/\\\\\\\"\\\\n                    }\\\\n                },\\\\n                \\\\\\\"active_time\\\\\\\": null,\\\\n                \\\\\\\"tags\\\\\\\": false\\\\n            },\\\\n            ......\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| format_type | str | \\\\u5426 | \\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f |\\\\n| list_type | str | \\\\u5426 | \\\\u6839\\\\u636e\\\\u8fd9\\\\u4e2a\\\\u6765\\\\u5224\\\\u65ad\\\\u83b7\\\\u53d6\\\\u6536\\\\u85cf\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93 |\\\\n| search_type | str | \\\\u5426 | \\\\u6839\\\\u636e\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\u641c\\\\u7d22 |\\\\n| search_data | str | \\\\u5426 | \\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57\\\\u6216\\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n\\\\\\\"code\\\\\\\": 200,\\\\n\\\\\\\"successcode\\\\\\\": 20002,\\\\n\\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n\\\\\\\"data\\\\\\\": {\\\\n    \\\\\\\"inner_list\\\\\\\": [],\\\\n    \\\\\\\"public_list\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": x,\\\\n                \\\\\\\"is_app\\\\\\\": false,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"maven-central\\\\\\\",\\\\n                \\\\\\\"type\\\\\\\": \\\\\\\"proxy\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"maven2\\\\\\\",\\\\n                \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n                \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/maven-central\\\\\\\",\\\\n                \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"attributes\\\\\\\": {\\\\n                    \\\\\\\"proxy\\\\\\\": {\\\\n                        \\\\\\\"remoteUrl\\\\\\\": \\\\\\\"https://repo1.maven.org/maven2/\\\\\\\"\\\\n                    }\\\\n                },\\\\n                \\\\\\\"active_time\\\\\\\": null,\\\\n                \\\\\\\"tags\\\\\\\": false\\\\n            },\\\\n            ......\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>format_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>list_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6839\\\\u636e\\\\u8fd9\\\\u4e2a\\\\u6765\\\\u5224\\\\u65ad\\\\u83b7\\\\u53d6\\\\u6536\\\\u85cf\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6839\\\\u636e\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57\\\\u6216\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n&quot;code&quot;: 200,\\\\n&quot;successcode&quot;: 20002,\\\\n&quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n&quot;data&quot;: {\\\\n    &quot;inner_list&quot;: [],\\\\n    &quot;public_list&quot;: [\\\\n            {\\\\n                &quot;code&quot;: x,\\\\n                &quot;is_app&quot;: false,\\\\n                &quot;name&quot;: &quot;maven-central&quot;,\\\\n                &quot;type&quot;: &quot;proxy&quot;,\\\\n                &quot;format&quot;: &quot;maven2&quot;,\\\\n                &quot;status&quot;: &quot;Online&quot;,\\\\n                &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/maven-central&quot;,\\\\n                &quot;describe&quot;: &quot;&quot;,\\\\n                &quot;attributes&quot;: {\\\\n                    &quot;proxy&quot;: {\\\\n                        &quot;remoteUrl&quot;: &quot;https://repo1.maven.org/maven2/&quot;\\\\n                    }\\\\n                },\\\\n                &quot;active_time&quot;: null,\\\\n                &quot;tags&quot;: false\\\\n            },\\\\n            ......\\\\n        ]\\\\n    }\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>format_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u683c\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>list_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6839\\\\u636e\\\\u8fd9\\\\u4e2a\\\\u6765\\\\u5224\\\\u65ad\\\\u83b7\\\\u53d6\\\\u6536\\\\u85cf\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6839\\\\u636e\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57\\\\u6216\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n&quot;code&quot;: 200,\\\\n&quot;successcode&quot;: 20002,\\\\n&quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n&quot;data&quot;: {\\\\n    &quot;inner_list&quot;: [],\\\\n    &quot;public_list&quot;: [\\\\n            {\\\\n                &quot;code&quot;: x,\\\\n                &quot;is_app&quot;: false,\\\\n                &quot;name&quot;: &quot;maven-central&quot;,\\\\n                &quot;type&quot;: &quot;proxy&quot;,\\\\n                &quot;format&quot;: &quot;maven2&quot;,\\\\n                &quot;status&quot;: &quot;Online&quot;,\\\\n                &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/maven-central&quot;,\\\\n                &quot;describe&quot;: &quot;&quot;,\\\\n                &quot;attributes&quot;: {\\\\n                    &quot;proxy&quot;: {\\\\n                        &quot;remoteUrl&quot;: &quot;https://repo1.maven.org/maven2/&quot;\\\\n                    }\\\\n                },\\\\n                &quot;active_time&quot;: null,\\\\n                &quot;tags&quot;: false\\\\n            },\\\\n            ......\\\\n        ]\\\\n    }\\\\n}\\\\n</pre></div>\\\"}','f6a727c59a4266f08f80de2ecd6171f7','2024-01-16 06:26:07','2025-04-23 11:04:14'),\n(223,'',225,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_repository/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u65b0\\\\u5efa\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| inner | Bool | \\\\u662f | \\\\u533a\\\\u5206\\\\u6743\\\\u9650\\\\uff08\\\\u5f53\\\\u524d\\\\u6216\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\uff09 |\\\\n| describe | str | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n| repository_type | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n| parameters | str | \\\\u5426 | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20001,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_repository/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u65b0\\\\u5efa\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| inner | Bool | \\\\u662f | \\\\u533a\\\\u5206\\\\u6743\\\\u9650\\\\uff08\\\\u5f53\\\\u524d\\\\u6216\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\uff09 |\\\\n| describe | str | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n| repository_type | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n| parameters | str | \\\\u5426 | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20001,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_repository/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u65b0\\\\u5efa\\\\u5236\\\\u54c1\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>inner</td>\\\\n<td>Bool</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u533a\\\\u5206\\\\u6743\\\\u9650\\\\uff08\\\\u5f53\\\\u524d\\\\u6216\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20001,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: &quot;&quot;\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_repository/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u65b0\\\\u5efa\\\\u5236\\\\u54c1\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>inner</td>\\\\n<td>Bool</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u533a\\\\u5206\\\\u6743\\\\u9650\\\\uff08\\\\u5f53\\\\u524d\\\\u6216\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20001,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: &quot;&quot;\\\\n}\\\\n</pre></div>\\\"}','5a8cf1447d2e0325c898f0b21f65c042','2024-01-16 06:26:07','2025-04-23 11:04:14'),\n(224,'',226,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/delete_nexus_repository/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nDELETE\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20003,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/delete_nexus_repository/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nDELETE\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20003,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/delete_nexus_repository/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>DELETE</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u5236\\\\u54c1\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20003,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f&quot;\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/delete_nexus_repository/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>DELETE</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u5236\\\\u54c1\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20003,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f&quot;\\\\n}\\\\n</pre></div>\\\"}','ea49e2721b06cf3cc244b7bce9655139','2024-01-16 06:26:08','2025-04-23 11:04:14'),\n(225,'',227,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_repo/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93id |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"code\\\\\\\": 6,\\\\n        \\\\\\\"is_app\\\\\\\": false,\\\\n        \\\\\\\"name\\\\\\\": \\\\\\\"test-test\\\\\\\",\\\\n        \\\\\\\"type\\\\\\\": \\\\\\\"hosted\\\\\\\",\\\\n        \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n        \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n        \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/test-test\\\\\\\",\\\\n        \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n        \\\\\\\"attributes\\\\\\\": {},\\\\n        \\\\\\\"active_time\\\\\\\": \\\\\\\"2024-01-15 17:38:15\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_repo/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93id |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"code\\\\\\\": 6,\\\\n        \\\\\\\"is_app\\\\\\\": false,\\\\n        \\\\\\\"name\\\\\\\": \\\\\\\"test-test\\\\\\\",\\\\n        \\\\\\\"type\\\\\\\": \\\\\\\"hosted\\\\\\\",\\\\n        \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n        \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n        \\\\\\\"url\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/test-test\\\\\\\",\\\\n        \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n        \\\\\\\"attributes\\\\\\\": {},\\\\n        \\\\\\\"active_time\\\\\\\": \\\\\\\"2024-01-15 17:38:15\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_repo/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 6,\\\\n        &quot;is_app&quot;: false,\\\\n        &quot;name&quot;: &quot;test-test&quot;,\\\\n        &quot;type&quot;: &quot;hosted&quot;,\\\\n        &quot;format&quot;: &quot;raw&quot;,\\\\n        &quot;status&quot;: &quot;Online&quot;,\\\\n        &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/test-test&quot;,\\\\n        &quot;describe&quot;: &quot;&quot;,\\\\n        &quot;attributes&quot;: {},\\\\n        &quot;active_time&quot;: &quot;2024-01-15 17:38:15&quot;\\\\n    }\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_repo/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 6,\\\\n        &quot;is_app&quot;: false,\\\\n        &quot;name&quot;: &quot;test-test&quot;,\\\\n        &quot;type&quot;: &quot;hosted&quot;,\\\\n        &quot;format&quot;: &quot;raw&quot;,\\\\n        &quot;status&quot;: &quot;Online&quot;,\\\\n        &quot;url&quot;: &quot;http://127.0.0.1:8000/repository/test-test&quot;,\\\\n        &quot;describe&quot;: &quot;&quot;,\\\\n        &quot;attributes&quot;: {},\\\\n        &quot;active_time&quot;: &quot;2024-01-15 17:38:15&quot;\\\\n    }\\\\n}\\\\n</pre></div>\\\"}','95c3a72cb436ce5b699d8b8a897c97d6','2024-01-16 06:26:08','2025-04-23 11:04:14'),\n(226,'',228,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/put_repo/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPUT\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u5236\\\\u54c1\\\\u5e93\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93id |\\\\n| inner | bool | \\\\u5426 | \\\\u662f\\\\u5426\\\\u662f\\\\u5e94\\\\u7528\\\\u5185 |\\\\n| describe | str | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20004,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/put_repo/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPUT\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u5236\\\\u54c1\\\\u5e93\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93id |\\\\n| inner | bool | \\\\u5426 | \\\\u662f\\\\u5426\\\\u662f\\\\u5e94\\\\u7528\\\\u5185 |\\\\n| describe | str | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20004,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/put_repo/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>PUT</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u5236\\\\u54c1\\\\u5e93\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>inner</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u662f\\\\u5e94\\\\u7528\\\\u5185</td>\\\\n</tr>\\\\n<tr>\\\\n<td>describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20004,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;,\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/put_repo/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>PUT</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u5236\\\\u54c1\\\\u5e93\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>inner</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u662f\\\\u5e94\\\\u7528\\\\u5185</td>\\\\n</tr>\\\\n<tr>\\\\n<td>describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20004,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;,\\\\n}\\\\n</pre></div>\\\"}','d3bd93c5da14d8667a453a31d3a3010a','2024-01-16 06:26:08','2025-04-23 11:04:14'),\n(227,'',229,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_guide/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n    | repository_format | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n    | repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"successcode\\\\\\\": 20002,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"code\\\\\\\": 2,\\\\n            \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n            \\\\\\\"content\\\\\\\": \\\\\\\"#### \\\\u63a8\\\\u9001\\\\n\\\\n##### \\\\u4f7f\\\\u7528 curl \\\\u63a8\\\\u9001\\\\n\\\\n```\\\\ncurl -T <FILE.EXT> -u [USERNAME] \\\\n            \\\\\\\"http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n```\\\\n\\\\n\\\\n- `<VERSION>` \\\\u4e3a**\\\\u975e\\\\u5fc5\\\\u586b**\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a **latest**\\\\u3002\\\\n- \\\\u652f\\\\u6301 \\\\u76f4\\\\u63a5\\\\u4e0a\\\\u4f20 \\\\u6216\\\\u62d6\\\\u62fd\\\\u5230\\\\u5f53\\\\u524d\\\\u9875\\\\u9762\\\\u8fdb\\\\u884c\\\\u4e0a\\\\u4f20\\\\u3002\\\\n\\\\n\\\\n##### \\\\u4f7f\\\\u7528Generic \\\\u63d2\\\\u4ef6\\\\u8fdb\\\\u884c\\\\u63a8\\\\u9001\\\\n\\\\n- \\\\u5b89\\\\u88c5 Generic \\\\u63d2\\\\u4ef6\\\\uff08\\\\u4f9d\\\\u8d56 [Node.js](https://nodejs.org/)\\\\uff09\\\\n\\\\n\\\\n  ```\\\\n  npm install generic -g\\\\n  ```\\\\n\\\\n- \\\\u63a8\\\\u9001\\\\u5230\\\\u5f53\\\\u524d\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n  ```\\\\n\\\\n  generic -u=[USERNAME] --path=<FILE.EXT> --registry=\\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/chunks/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n  ```\\\\n\\\\n\\\\n#### \\\\u62c9\\\\u53d6\\\\n\\\\n```\\\\ncurl --fail -L -u [USERNAME] \\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\\\\\" -o <FILE.EXT>\\\\n```\\\\n\\\\n\\\\n- `<VERSION>` \\\\u4e3a**\\\\u975e\\\\u5fc5\\\\u586b**\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a **latest**\\\\u3002\\\\n\\\\n#### \\\\u5220\\\\u9664\\\\n\\\\n```\\\\ncurl -X DELETE -u [USERNAME] \\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n```\\\\n\\\\n\\\\n- `<VERSION>` \\\\u4e3a**\\\\u975e\\\\u5fc5\\\\u586b**\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a **latest**\\\\u3002\\\\\\\"\\\\n        }\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_guide/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n    | repository_format | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n    | repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"successcode\\\\\\\": 20002,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"code\\\\\\\": 2,\\\\n            \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n            \\\\\\\"content\\\\\\\": \\\\\\\"#### \\\\u63a8\\\\u9001\\\\n\\\\n##### \\\\u4f7f\\\\u7528 curl \\\\u63a8\\\\u9001\\\\n\\\\n```\\\\ncurl -T <FILE.EXT> -u [USERNAME] \\\\n            \\\\\\\"http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n```\\\\n\\\\n\\\\n- `<VERSION>` \\\\u4e3a**\\\\u975e\\\\u5fc5\\\\u586b**\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a **latest**\\\\u3002\\\\n- \\\\u652f\\\\u6301 \\\\u76f4\\\\u63a5\\\\u4e0a\\\\u4f20 \\\\u6216\\\\u62d6\\\\u62fd\\\\u5230\\\\u5f53\\\\u524d\\\\u9875\\\\u9762\\\\u8fdb\\\\u884c\\\\u4e0a\\\\u4f20\\\\u3002\\\\n\\\\n\\\\n##### \\\\u4f7f\\\\u7528Generic \\\\u63d2\\\\u4ef6\\\\u8fdb\\\\u884c\\\\u63a8\\\\u9001\\\\n\\\\n- \\\\u5b89\\\\u88c5 Generic \\\\u63d2\\\\u4ef6\\\\uff08\\\\u4f9d\\\\u8d56 [Node.js](https://nodejs.org/)\\\\uff09\\\\n\\\\n\\\\n  ```\\\\n  npm install generic -g\\\\n  ```\\\\n\\\\n- \\\\u63a8\\\\u9001\\\\u5230\\\\u5f53\\\\u524d\\\\u5236\\\\u54c1\\\\u5e93\\\\n\\\\n  ```\\\\n\\\\n  generic -u=[USERNAME] --path=<FILE.EXT> --registry=\\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/chunks/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n  ```\\\\n\\\\n\\\\n#### \\\\u62c9\\\\u53d6\\\\n\\\\n```\\\\ncurl --fail -L -u [USERNAME] \\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\\\\\" -o <FILE.EXT>\\\\n```\\\\n\\\\n\\\\n- `<VERSION>` \\\\u4e3a**\\\\u975e\\\\u5fc5\\\\u586b**\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a **latest**\\\\u3002\\\\n\\\\n#### \\\\u5220\\\\u9664\\\\n\\\\n```\\\\ncurl -X DELETE -u [USERNAME] \\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n```\\\\n\\\\n\\\\n- `<VERSION>` \\\\u4e3a**\\\\u975e\\\\u5fc5\\\\u586b**\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a **latest**\\\\u3002\\\\\\\"\\\\n        }\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_guide/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_format | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 2,\\\\n        &quot;format&quot;: &quot;raw&quot;,\\\\n        &quot;content&quot;: &quot;#### \\\\u63a8\\\\u9001\\\\n</pre></div>\\\\n\\\\n<h5 id=\\\\\\\"curl\\\\\\\">\\\\u4f7f\\\\u7528 curl \\\\u63a8\\\\u9001</h5>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>curl -T &lt;FILE.EXT&gt; -u [USERNAME] \\\\n            &quot;http://127.0.0.1:8000/repository/test-test/&lt;PACKAGE&gt;?version=&lt;VERSION&gt;&quot;\\\\n</pre></div>\\\\n\\\\n<ul>\\\\n<li><code>&lt;VERSION&gt;</code> \\\\u4e3a<strong>\\\\u975e\\\\u5fc5\\\\u586b</strong>\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a <strong>latest</strong>\\\\u3002</li>\\\\n<li>\\\\u652f\\\\u6301 \\\\u76f4\\\\u63a5\\\\u4e0a\\\\u4f20 \\\\u6216\\\\u62d6\\\\u62fd\\\\u5230\\\\u5f53\\\\u524d\\\\u9875\\\\u9762\\\\u8fdb\\\\u884c\\\\u4e0a\\\\u4f20\\\\u3002</li>\\\\n</ul>\\\\n<h5 id=\\\\\\\"generic\\\\\\\">\\\\u4f7f\\\\u7528Generic \\\\u63d2\\\\u4ef6\\\\u8fdb\\\\u884c\\\\u63a8\\\\u9001</h5>\\\\n<ul>\\\\n<li>\\\\u5b89\\\\u88c5 Generic \\\\u63d2\\\\u4ef6\\\\uff08\\\\u4f9d\\\\u8d56 <a href=\\\\\\\"https://nodejs.org/\\\\\\\">Node.js</a>\\\\uff09</li>\\\\n</ul>\\\\n<p><code>npm install generic -g</code></p>\\\\n<ul>\\\\n<li>\\\\u63a8\\\\u9001\\\\u5230\\\\u5f53\\\\u524d\\\\u5236\\\\u54c1\\\\u5e93</li>\\\\n</ul>\\\\n<p>```</p>\\\\n<p>generic -u=[USERNAME] --path=<FILE.EXT> --registry=\\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/chunks/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n  ```</p>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u62c9\\\\u53d6</h4>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>curl --fail -L -u [USERNAME] \\\\n            &quot;http://http://127.0.0.1:8000/repository/test-test/&lt;PACKAGE&gt;?version=&lt;VERSION&gt;&quot; -o &lt;FILE.EXT&gt;\\\\n</pre></div>\\\\n\\\\n<ul>\\\\n<li><code>&lt;VERSION&gt;</code> \\\\u4e3a<strong>\\\\u975e\\\\u5fc5\\\\u586b</strong>\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a <strong>latest</strong>\\\\u3002</li>\\\\n</ul>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u5220\\\\u9664</h4>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>curl -X DELETE -u [USERNAME] \\\\n            &quot;http://http://127.0.0.1:8000/repository/test-test/&lt;PACKAGE&gt;?version=&lt;VERSION&gt;&quot;\\\\n</pre></div>\\\\n\\\\n<ul>\\\\n<li><code>&lt;VERSION&gt;</code> \\\\u4e3a<strong>\\\\u975e\\\\u5fc5\\\\u586b</strong>\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a <strong>latest</strong>\\\\u3002\\\\\\\"\\\\n        }\\\\n    }\\\\n    ```</li>\\\\n</ul>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_guide/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_format | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 2,\\\\n        &quot;format&quot;: &quot;raw&quot;,\\\\n        &quot;content&quot;: &quot;#### \\\\u63a8\\\\u9001\\\\n</pre></div>\\\\n\\\\n<h5 id=\\\\\\\"curl\\\\\\\">\\\\u4f7f\\\\u7528 curl \\\\u63a8\\\\u9001</h5>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>curl -T &lt;FILE.EXT&gt; -u [USERNAME] \\\\n            &quot;http://127.0.0.1:8000/repository/test-test/&lt;PACKAGE&gt;?version=&lt;VERSION&gt;&quot;\\\\n</pre></div>\\\\n\\\\n<ul>\\\\n<li><code>&lt;VERSION&gt;</code> \\\\u4e3a<strong>\\\\u975e\\\\u5fc5\\\\u586b</strong>\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a <strong>latest</strong>\\\\u3002</li>\\\\n<li>\\\\u652f\\\\u6301 \\\\u76f4\\\\u63a5\\\\u4e0a\\\\u4f20 \\\\u6216\\\\u62d6\\\\u62fd\\\\u5230\\\\u5f53\\\\u524d\\\\u9875\\\\u9762\\\\u8fdb\\\\u884c\\\\u4e0a\\\\u4f20\\\\u3002</li>\\\\n</ul>\\\\n<h5 id=\\\\\\\"generic\\\\\\\">\\\\u4f7f\\\\u7528Generic \\\\u63d2\\\\u4ef6\\\\u8fdb\\\\u884c\\\\u63a8\\\\u9001</h5>\\\\n<ul>\\\\n<li>\\\\u5b89\\\\u88c5 Generic \\\\u63d2\\\\u4ef6\\\\uff08\\\\u4f9d\\\\u8d56 <a href=\\\\\\\"https://nodejs.org/\\\\\\\">Node.js</a>\\\\uff09</li>\\\\n</ul>\\\\n<p><code>npm install generic -g</code></p>\\\\n<ul>\\\\n<li>\\\\u63a8\\\\u9001\\\\u5230\\\\u5f53\\\\u524d\\\\u5236\\\\u54c1\\\\u5e93</li>\\\\n</ul>\\\\n<p>```</p>\\\\n<p>generic -u=[USERNAME] --path=<FILE.EXT> --registry=\\\\n            \\\\\\\"http://http://127.0.0.1:8000/repository/test-test/chunks/<PACKAGE>?version=<VERSION>\\\\\\\"\\\\n  ```</p>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u62c9\\\\u53d6</h4>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>curl --fail -L -u [USERNAME] \\\\n            &quot;http://http://127.0.0.1:8000/repository/test-test/&lt;PACKAGE&gt;?version=&lt;VERSION&gt;&quot; -o &lt;FILE.EXT&gt;\\\\n</pre></div>\\\\n\\\\n<ul>\\\\n<li><code>&lt;VERSION&gt;</code> \\\\u4e3a<strong>\\\\u975e\\\\u5fc5\\\\u586b</strong>\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a <strong>latest</strong>\\\\u3002</li>\\\\n</ul>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u5220\\\\u9664</h4>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>curl -X DELETE -u [USERNAME] \\\\n            &quot;http://http://127.0.0.1:8000/repository/test-test/&lt;PACKAGE&gt;?version=&lt;VERSION&gt;&quot;\\\\n</pre></div>\\\\n\\\\n<ul>\\\\n<li><code>&lt;VERSION&gt;</code> \\\\u4e3a<strong>\\\\u975e\\\\u5fc5\\\\u586b</strong>\\\\u9879\\\\uff0c\\\\u9ed8\\\\u8ba4\\\\u4e3a <strong>latest</strong>\\\\u3002\\\\\\\"\\\\n        }\\\\n    }\\\\n    ```</li>\\\\n</ul>\\\"}','0df7f8f2d9e9f363ed796babf2a20f8d','2024-01-16 06:26:08','2025-04-23 11:04:14'),\n(228,'',230,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_repository_guide/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_format | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n| repository_guide | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u6307\\\\u5f15\\\\u7c7b\\\\u578b |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_repository_guide/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_format | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b |\\\\n| repository_guide | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u6307\\\\u5f15\\\\u7c7b\\\\u578b |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_repository_guide/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_format</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_guide</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u6307\\\\u5f15\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_repository_guide/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5236\\\\u54c1\\\\u5e93\\\\u4f7f\\\\u7528\\\\u6307\\\\u5f15</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_format</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_guide</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u6307\\\\u5f15\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;\\\\n}\\\\n</pre></div>\\\"}','d956498e5a2c98c4d6f34db33b3d71d8','2024-01-16 06:26:08','2025-04-23 11:04:14'),\n(229,'',231,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u7684\\\\u7ec4\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| continuationToken | str | \\\\u5426 | \\\\u5206\\\\u9875\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4ef6\\\\u5217\\\\u8868 |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93id |\\\\n| id | int | \\\\u5426 |  |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"items\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"id\\\\\\\": \\\\\\\"dGVzdC10ZXN0OjI5NWQzNTRiNzEzYTA5MjQ3YWRjYTE1YjEzMDZkOTlm\\\\\\\",\\\\n                \\\\\\\"repository\\\\\\\": \\\\\\\"test-test\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n                \\\\\\\"group\\\\\\\": \\\\\\\"/\\\\\\\",\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"2.txt\\\\\\\",\\\\n                \\\\\\\"version\\\\\\\": null,\\\\n                \\\\\\\"assets\\\\\\\": [\\\\n                    {\\\\n                        \\\\\\\"downloadUrl\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/test-test/2.txt\\\\\\\",\\\\n                        \\\\\\\"path\\\\\\\": \\\\\\\"2.txt\\\\\\\",\\\\n                        \\\\\\\"id\\\\\\\": \\\\\\\"dGVzdC10ZXN0OjBiNjUzMmFhNjRjNzZiOGMyMWM4ZTZkMjM2NmQwYWY0\\\\\\\",\\\\n                        \\\\\\\"repository\\\\\\\": \\\\\\\"test-test\\\\\\\",\\\\n                        \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n                        \\\\\\\"checksum\\\\\\\": {\\\\n                            \\\\\\\"sha1\\\\\\\": \\\\\\\"e3e862c2009d70cc6d5c76504d39dd29362eb18b\\\\\\\",\\\\n                            \\\\\\\"sha512\\\\\\\": \\\\\\\"da15460d61635710e15e1a2b29d435ff07617073a59531d3ba1ea53ddf911f01e7107d9\\\\\\\",\\\\n                            \\\\\\\"sha256\\\\\\\": \\\\\\\"e98f147de4ee22b924dda0a14300de565305bb4f33f8675edaf83a1297e145e9\\\\\\\",\\\\n                            \\\\\\\"md5\\\\\\\": \\\\\\\"e2430a18f44397a85598674d6469c1ca\\\\\\\"\\\\n                        },\\\\n                        \\\\\\\"contentType\\\\\\\": \\\\\\\"text/plain\\\\\\\",\\\\n                        \\\\\\\"lastModified\\\\\\\": \\\\\\\"2024-01-09T03:11:55.842+00:00\\\\\\\",\\\\n                        \\\\\\\"blobCreated\\\\\\\": \\\\\\\"2024-01-09T03:11:55.842+00:00\\\\\\\",\\\\n                        \\\\\\\"lastDownloaded\\\\\\\": \\\\\\\"2024-01-09T08:58:13.281+00:00\\\\\\\"\\\\n                    }\\\\n                ]\\\\n            },\\\\n            ......\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u7684\\\\u7ec4\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| continuationToken | str | \\\\u5426 | \\\\u5206\\\\u9875\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4ef6\\\\u5217\\\\u8868 |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93id |\\\\n| id | int | \\\\u5426 |  |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"items\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"id\\\\\\\": \\\\\\\"dGVzdC10ZXN0OjI5NWQzNTRiNzEzYTA5MjQ3YWRjYTE1YjEzMDZkOTlm\\\\\\\",\\\\n                \\\\\\\"repository\\\\\\\": \\\\\\\"test-test\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n                \\\\\\\"group\\\\\\\": \\\\\\\"/\\\\\\\",\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"2.txt\\\\\\\",\\\\n                \\\\\\\"version\\\\\\\": null,\\\\n                \\\\\\\"assets\\\\\\\": [\\\\n                    {\\\\n                        \\\\\\\"downloadUrl\\\\\\\": \\\\\\\"http://127.0.0.1:8000/repository/test-test/2.txt\\\\\\\",\\\\n                        \\\\\\\"path\\\\\\\": \\\\\\\"2.txt\\\\\\\",\\\\n                        \\\\\\\"id\\\\\\\": \\\\\\\"dGVzdC10ZXN0OjBiNjUzMmFhNjRjNzZiOGMyMWM4ZTZkMjM2NmQwYWY0\\\\\\\",\\\\n                        \\\\\\\"repository\\\\\\\": \\\\\\\"test-test\\\\\\\",\\\\n                        \\\\\\\"format\\\\\\\": \\\\\\\"raw\\\\\\\",\\\\n                        \\\\\\\"checksum\\\\\\\": {\\\\n                            \\\\\\\"sha1\\\\\\\": \\\\\\\"e3e862c2009d70cc6d5c76504d39dd29362eb18b\\\\\\\",\\\\n                            \\\\\\\"sha512\\\\\\\": \\\\\\\"da15460d61635710e15e1a2b29d435ff07617073a59531d3ba1ea53ddf911f01e7107d9\\\\\\\",\\\\n                            \\\\\\\"sha256\\\\\\\": \\\\\\\"e98f147de4ee22b924dda0a14300de565305bb4f33f8675edaf83a1297e145e9\\\\\\\",\\\\n                            \\\\\\\"md5\\\\\\\": \\\\\\\"e2430a18f44397a85598674d6469c1ca\\\\\\\"\\\\n                        },\\\\n                        \\\\\\\"contentType\\\\\\\": \\\\\\\"text/plain\\\\\\\",\\\\n                        \\\\\\\"lastModified\\\\\\\": \\\\\\\"2024-01-09T03:11:55.842+00:00\\\\\\\",\\\\n                        \\\\\\\"blobCreated\\\\\\\": \\\\\\\"2024-01-09T03:11:55.842+00:00\\\\\\\",\\\\n                        \\\\\\\"lastDownloaded\\\\\\\": \\\\\\\"2024-01-09T08:58:13.281+00:00\\\\\\\"\\\\n                    }\\\\n                ]\\\\n            },\\\\n            ......\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u7684\\\\u7ec4\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>continuationToken</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u9875\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4ef6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;items&quot;: [\\\\n            {\\\\n                &quot;id&quot;: &quot;dGVzdC10ZXN0OjI5NWQzNTRiNzEzYTA5MjQ3YWRjYTE1YjEzMDZkOTlm&quot;,\\\\n                &quot;repository&quot;: &quot;test-test&quot;,\\\\n                &quot;format&quot;: &quot;raw&quot;,\\\\n                &quot;group&quot;: &quot;/&quot;,\\\\n                &quot;name&quot;: &quot;2.txt&quot;,\\\\n                &quot;version&quot;: null,\\\\n                &quot;assets&quot;: [\\\\n                    {\\\\n                        &quot;downloadUrl&quot;: &quot;http://127.0.0.1:8000/repository/test-test/2.txt&quot;,\\\\n                        &quot;path&quot;: &quot;2.txt&quot;,\\\\n                        &quot;id&quot;: &quot;dGVzdC10ZXN0OjBiNjUzMmFhNjRjNzZiOGMyMWM4ZTZkMjM2NmQwYWY0&quot;,\\\\n                        &quot;repository&quot;: &quot;test-test&quot;,\\\\n                        &quot;format&quot;: &quot;raw&quot;,\\\\n                        &quot;checksum&quot;: {\\\\n                            &quot;sha1&quot;: &quot;e3e862c2009d70cc6d5c76504d39dd29362eb18b&quot;,\\\\n                            &quot;sha512&quot;: &quot;da15460d61635710e15e1a2b29d435ff07617073a59531d3ba1ea53ddf911f01e7107d9&quot;,\\\\n                            &quot;sha256&quot;: &quot;e98f147de4ee22b924dda0a14300de565305bb4f33f8675edaf83a1297e145e9&quot;,\\\\n                            &quot;md5&quot;: &quot;e2430a18f44397a85598674d6469c1ca&quot;\\\\n                        },\\\\n                        &quot;contentType&quot;: &quot;text/plain&quot;,\\\\n                        &quot;lastModified&quot;: &quot;2024-01-09T03:11:55.842+00:00&quot;,\\\\n                        &quot;blobCreated&quot;: &quot;2024-01-09T03:11:55.842+00:00&quot;,\\\\n                        &quot;lastDownloaded&quot;: &quot;2024-01-09T08:58:13.281+00:00&quot;\\\\n                    }\\\\n                ]\\\\n            },\\\\n            ......\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u7684\\\\u7ec4\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>continuationToken</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5206\\\\u9875\\\\u83b7\\\\u53d6\\\\u7ec4\\\\u4ef6\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;items&quot;: [\\\\n            {\\\\n                &quot;id&quot;: &quot;dGVzdC10ZXN0OjI5NWQzNTRiNzEzYTA5MjQ3YWRjYTE1YjEzMDZkOTlm&quot;,\\\\n                &quot;repository&quot;: &quot;test-test&quot;,\\\\n                &quot;format&quot;: &quot;raw&quot;,\\\\n                &quot;group&quot;: &quot;/&quot;,\\\\n                &quot;name&quot;: &quot;2.txt&quot;,\\\\n                &quot;version&quot;: null,\\\\n                &quot;assets&quot;: [\\\\n                    {\\\\n                        &quot;downloadUrl&quot;: &quot;http://127.0.0.1:8000/repository/test-test/2.txt&quot;,\\\\n                        &quot;path&quot;: &quot;2.txt&quot;,\\\\n                        &quot;id&quot;: &quot;dGVzdC10ZXN0OjBiNjUzMmFhNjRjNzZiOGMyMWM4ZTZkMjM2NmQwYWY0&quot;,\\\\n                        &quot;repository&quot;: &quot;test-test&quot;,\\\\n                        &quot;format&quot;: &quot;raw&quot;,\\\\n                        &quot;checksum&quot;: {\\\\n                            &quot;sha1&quot;: &quot;e3e862c2009d70cc6d5c76504d39dd29362eb18b&quot;,\\\\n                            &quot;sha512&quot;: &quot;da15460d61635710e15e1a2b29d435ff07617073a59531d3ba1ea53ddf911f01e7107d9&quot;,\\\\n                            &quot;sha256&quot;: &quot;e98f147de4ee22b924dda0a14300de565305bb4f33f8675edaf83a1297e145e9&quot;,\\\\n                            &quot;md5&quot;: &quot;e2430a18f44397a85598674d6469c1ca&quot;\\\\n                        },\\\\n                        &quot;contentType&quot;: &quot;text/plain&quot;,\\\\n                        &quot;lastModified&quot;: &quot;2024-01-09T03:11:55.842+00:00&quot;,\\\\n                        &quot;blobCreated&quot;: &quot;2024-01-09T03:11:55.842+00:00&quot;,\\\\n                        &quot;lastDownloaded&quot;: &quot;2024-01-09T08:58:13.281+00:00&quot;\\\\n                    }\\\\n                ]\\\\n            },\\\\n            ......\\\\n}\\\\n</pre></div>\\\"}','ad33bdfa70ad643e1d81a4ea32cbef49','2024-01-16 06:26:08','2025-04-23 11:04:14'),\n(230,'',233,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_repository_component_upload/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4e0a\\\\u4f20\\\\u5236\\\\u54c1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | int | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| filename | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u7684\\\\u540d\\\\u79f0\\\\u4ee5\\\\u53ca\\\\u6587\\\\u4ef6\\\\u540e\\\\u7f00\\\\u540d |\\\\n| file | file | \\\\u662f | \\\\u6587\\\\u4ef6\\\\u5bf9\\\\u8c61 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\":200\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"upload success\\\\\\\"\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n    \\\\\\\"successcode\\\\\\\": 20001\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_repository_component_upload/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4e0a\\\\u4f20\\\\u5236\\\\u54c1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | int | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| filename | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u7684\\\\u540d\\\\u79f0\\\\u4ee5\\\\u53ca\\\\u6587\\\\u4ef6\\\\u540e\\\\u7f00\\\\u540d |\\\\n| file | file | \\\\u662f | \\\\u6587\\\\u4ef6\\\\u5bf9\\\\u8c61 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\":200\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"upload success\\\\\\\"\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n    \\\\\\\"successcode\\\\\\\": 20001\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_repository_component_upload/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4e0a\\\\u4f20\\\\u5236\\\\u54c1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filename</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u7684\\\\u540d\\\\u79f0\\\\u4ee5\\\\u53ca\\\\u6587\\\\u4ef6\\\\u540e\\\\u7f00\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file</td>\\\\n<td>file</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u5bf9\\\\u8c61</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;:200\\\\n    &quot;data&quot;: &quot;upload success&quot;\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;\\\\n    &quot;successcode&quot;: 20001\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_repository_component_upload/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4e0a\\\\u4f20\\\\u5236\\\\u54c1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>filename</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u7684\\\\u540d\\\\u79f0\\\\u4ee5\\\\u53ca\\\\u6587\\\\u4ef6\\\\u540e\\\\u7f00\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file</td>\\\\n<td>file</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u5bf9\\\\u8c61</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;:200\\\\n    &quot;data&quot;: &quot;upload success&quot;\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;\\\\n    &quot;successcode&quot;: 20001\\\\n}\\\\n</pre></div>\\\"}','c0a6c36380264ebf2e979a95e9e73725','2024-01-17 07:12:59','2025-04-23 11:04:14'),\n(231,'',232,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/delete_nexus_repository_component/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nDELETE\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u5236\\\\u54c1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\n| component_id | str | \\\\u662f | \\\\u5236\\\\u54c1id |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20003,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/delete_nexus_repository_component/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nDELETE\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u5236\\\\u54c1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0\\\\n| component_id | str | \\\\u662f | \\\\u5236\\\\u54c1id |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20003,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/delete_nexus_repository_component/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>DELETE</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u5236\\\\u54c1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>component_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20003,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: &quot;&quot;\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/delete_nexus_repository_component/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>DELETE</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u5236\\\\u54c1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>component_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20003,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u5220\\\\u9664\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: &quot;&quot;\\\\n}\\\\n</pre></div>\\\"}','e663e3679c639376042757647ea21cdb','2024-01-17 07:23:13','2025-04-23 11:04:14'),\n(232,'',234,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_step/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5185\\\\u7f6e\\\\u90e8\\\\u7f72\\\\u6b65\\\\u9aa4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u5355\\\\u6761\\\\u6b65\\\\u9aa4code |\\\\n| all_parameter | bool | \\\\u5426  | \\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u5b57\\\\u6bb5 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_step/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5185\\\\u7f6e\\\\u90e8\\\\u7f72\\\\u6b65\\\\u9aa4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u5355\\\\u6761\\\\u6b65\\\\u9aa4code |\\\\n| all_parameter | bool | \\\\u5426  | \\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u5b57\\\\u6bb5 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_step/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5185\\\\u7f6e\\\\u90e8\\\\u7f72\\\\u6b65\\\\u9aa4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5355\\\\u6761\\\\u6b65\\\\u9aa4code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>all_parameter</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_step/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5185\\\\u7f6e\\\\u90e8\\\\u7f72\\\\u6b65\\\\u9aa4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5355\\\\u6761\\\\u6b65\\\\u9aa4code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>all_parameter</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a5b426c68556f0c3732419edfe13fb47','2024-01-18 02:54:27','2025-04-23 11:04:14'),\n(233,'',235,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list_type | str | \\\\u5426  | \\\\u5217\\\\u8868\\\\u7c7b\\\\u578b |\\\\n| application | int | \\\\u5426  | \\\\u5e94\\\\u7528code |\\\\n| code | int | \\\\u5426  | \\\\u5355\\\\u6761\\\\u4efb\\\\u52a1 |\\\\n| all_data | bool | \\\\u5426  | \\\\u5168\\\\u90e8\\\\u6570\\\\u636e |\\\\n| current | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| search_type | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list_type | str | \\\\u5426  | \\\\u5217\\\\u8868\\\\u7c7b\\\\u578b |\\\\n| application | int | \\\\u5426  | \\\\u5e94\\\\u7528code |\\\\n| code | int | \\\\u5426  | \\\\u5355\\\\u6761\\\\u4efb\\\\u52a1 |\\\\n| all_data | bool | \\\\u5426  | \\\\u5168\\\\u90e8\\\\u6570\\\\u636e |\\\\n| current | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| search_type | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5217\\\\u8868\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5355\\\\u6761\\\\u4efb\\\\u52a1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>all_data</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5168\\\\u90e8\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5217\\\\u8868\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5355\\\\u6761\\\\u4efb\\\\u52a1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>all_data</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5168\\\\u90e8\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fb8e13abe6fdf24e2b08c2a7c34bf6bb','2024-01-18 02:54:27','2025-04-23 11:04:14'),\n(234,'',236,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_log/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u65e5\\\\u5fd7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | int | \\\\u5426  | \\\\u5e94\\\\u7528code |\\\\n| task_code | str | \\\\u5426  | \\\\u4efb\\\\u52a1code |\\\\n| task_log_code | int | \\\\u5426  | \\\\u65e5\\\\u5fd7code |\\\\n| all_data | bool | \\\\u5426  | \\\\u5168\\\\u90e8\\\\u6570\\\\u636e |\\\\n| current | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| search_type | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_log/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u65e5\\\\u5fd7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | int | \\\\u5426  | \\\\u5e94\\\\u7528code |\\\\n| task_code | str | \\\\u5426  | \\\\u4efb\\\\u52a1code |\\\\n| task_log_code | int | \\\\u5426  | \\\\u65e5\\\\u5fd7code |\\\\n| all_data | bool | \\\\u5426  | \\\\u5168\\\\u90e8\\\\u6570\\\\u636e |\\\\n| current | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| search_type | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | str | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_log/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u65e5\\\\u5fd7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>task_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4efb\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>task_log_code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u65e5\\\\u5fd7code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>all_data</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5168\\\\u90e8\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_log/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u65e5\\\\u5fd7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>task_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4efb\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>task_log_code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u65e5\\\\u5fd7code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>all_data</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5168\\\\u90e8\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','c72ea3de039773c61aa620c575189c9e','2024-01-18 02:54:27','2025-04-23 11:04:14'),\n(235,'',237,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_template/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_template/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a88f57eda189827c8810b917260fa2a2','2024-01-18 02:54:27','2025-04-23 11:04:14'),\n(236,'',238,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_template_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u7ec4 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_template_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u7ec4 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_template_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u7ec4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_template_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u7f72\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u5355\\\\u4e2a\\\\u7ec4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','91d857445feedc94f6981dae9b2ccea1','2024-01-18 02:54:27','2025-04-23 11:04:14'),\n(237,'',239,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component_asset/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| id | int | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u4ea7 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component_asset/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| id | int | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u4ea7 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component_asset/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u4ea7</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component_asset/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u4ea7</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\"}','86d2f100ec1aba73e62f8cb65f11c04a','2024-01-18 03:14:44','2025-04-23 11:04:14'),\n(238,'',240,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\uff0c\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| id | str | \\\\u662f | \\\\u7ec4\\\\u4ef6id |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\uff0c\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| id | str | \\\\u662f | \\\\u7ec4\\\\u4ef6id |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\uff0c\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7ec4\\\\u4ef6id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\uff0c\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7ec4\\\\u4ef6id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\"}','d22298c1663ec0a2d5f14fed40b981ab','2024-01-18 03:14:44','2025-04-23 11:04:14'),\n(239,'',241,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_neuxs_repository_component_tree_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\u4e0d\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_neuxs_repository_component_tree_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\u4e0d\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_neuxs_repository_component_tree_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\u4e0d\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_neuxs_repository_component_tree_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7248\\\\u672c\\\\u8d44\\\\u6e90\\\\uff08\\\\u6811\\\\u7ed3\\\\u6784\\\\u4e0d\\\\u5e26\\\\u8d44\\\\u6e90\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\"}','3037bf27c1b38c8179b621bb3bba5a6f','2024-01-18 03:14:44','2025-04-23 11:04:14'),\n(240,'',242,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\uff08\\\\u6839\\\\u636e\\\\u7ec4\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_code | \\\\u662f | int | \\\\u7ec4\\\\u7684id | \\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| search_type | str | \\\\u5426 | \\\\u641c\\\\u7d22\\\\u7684\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57 |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n| sizePage | int | \\\\u5426 | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6570\\\\u91cf |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_repository_component_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\uff08\\\\u6839\\\\u636e\\\\u7ec4\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_code | \\\\u662f | int | \\\\u7ec4\\\\u7684id | \\\\n| repository_id | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| search_type | str | \\\\u5426 | \\\\u641c\\\\u7d22\\\\u7684\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57 |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875 |\\\\n| sizePage | int | \\\\u5426 | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6570\\\\u91cf |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\uff08\\\\u6839\\\\u636e\\\\u7ec4\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_code</td>\\\\n<td>\\\\u662f</td>\\\\n<td>int</td>\\\\n<td>\\\\u7ec4\\\\u7684id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7684\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>sizePage</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_repository_component_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\uff08\\\\u6839\\\\u636e\\\\u7ec4\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_code</td>\\\\n<td>\\\\u662f</td>\\\\n<td>int</td>\\\\n<td>\\\\u7ec4\\\\u7684id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>repository_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7684\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>sizePage</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\"}','e200f908129bc63e0b38a6c81d1951a5','2024-01-18 03:14:45','2025-04-23 11:04:15'),\n(241,'',245,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_clone_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u514b\\\\u9686\\\\u64cd\\\\u4f5c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| project_url | str | \\\\u662f | \\\\u8981\\\\u514b\\\\u9686\\\\u7684git\\\\u4ed3\\\\u5e93\\\\u7684url |\\\\n| project_branch | str | \\\\u662f | \\\\u8981\\\\u514b\\\\u9686\\\\u7684\\\\u5206\\\\u652f |\\\\n| api_token | str | \\\\u662f | \\\\u7528\\\\u4e8e\\\\u8ba4\\\\u8bc1\\\\u8bbf\\\\u95eegit\\\\u4ed3\\\\u5e93 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_clone_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u514b\\\\u9686\\\\u64cd\\\\u4f5c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| project_url | str | \\\\u662f | \\\\u8981\\\\u514b\\\\u9686\\\\u7684git\\\\u4ed3\\\\u5e93\\\\u7684url |\\\\n| project_branch | str | \\\\u662f | \\\\u8981\\\\u514b\\\\u9686\\\\u7684\\\\u5206\\\\u652f |\\\\n| api_token | str | \\\\u662f | \\\\u7528\\\\u4e8e\\\\u8ba4\\\\u8bc1\\\\u8bbf\\\\u95eegit\\\\u4ed3\\\\u5e93 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_clone_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u514b\\\\u9686\\\\u64cd\\\\u4f5c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>project_url</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u514b\\\\u9686\\\\u7684git\\\\u4ed3\\\\u5e93\\\\u7684url</td>\\\\n</tr>\\\\n<tr>\\\\n<td>project_branch</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u514b\\\\u9686\\\\u7684\\\\u5206\\\\u652f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api_token</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u4e8e\\\\u8ba4\\\\u8bc1\\\\u8bbf\\\\u95eegit\\\\u4ed3\\\\u5e93</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_clone_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u514b\\\\u9686\\\\u64cd\\\\u4f5c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>project_url</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u514b\\\\u9686\\\\u7684git\\\\u4ed3\\\\u5e93\\\\u7684url</td>\\\\n</tr>\\\\n<tr>\\\\n<td>project_branch</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u514b\\\\u9686\\\\u7684\\\\u5206\\\\u652f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api_token</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u4e8e\\\\u8ba4\\\\u8bc1\\\\u8bbf\\\\u95eegit\\\\u4ed3\\\\u5e93</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\"}','bc92361bcb9fb1445c8b42e5be6e97ea','2024-01-18 03:14:45','2025-04-23 11:04:15'),\n(242,'',243,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_search_component/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ec4\\\\u4ef6\\\\u641c\\\\u7d22\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| name | str | \\\\u5426 | \\\\u5173\\\\u8054\\\\u7c7b\\\\u578b\\\\u540d\\\\u79f0 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    code: 200\\\\n    data: {\\\\u2026}\\\\n    message: \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\"\\\\n    successcode: 20002\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_nexus_search_component/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ec4\\\\u4ef6\\\\u641c\\\\u7d22\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| repository | str | \\\\u662f | \\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0 |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| name | str | \\\\u5426 | \\\\u5173\\\\u8054\\\\u7c7b\\\\u578b\\\\u540d\\\\u79f0 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    code: 200\\\\n    data: {\\\\u2026}\\\\n    message: \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\"\\\\n    successcode: 20002\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_search_component/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ec4\\\\u4ef6\\\\u641c\\\\u7d22</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u7c7b\\\\u578b\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    code: 200\\\\n    data: {\\\\u2026}\\\\n    message: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;\\\\n    successcode: 20002\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_nexus_search_component/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ec4\\\\u4ef6\\\\u641c\\\\u7d22</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>repository</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5236\\\\u54c1\\\\u5e93\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5173\\\\u8054\\\\u7c7b\\\\u578b\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    code: 200\\\\n    data: {\\\\u2026}\\\\n    message: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;\\\\n    successcode: 20002\\\\n}\\\\n</pre></div>\\\"}','cabfe8024477d3ed5894aea4b376a3f6','2024-01-18 05:39:51','2025-04-23 11:04:15'),\n(243,'',246,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_cancel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d6\\\\u6d88\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0   |\\\\n| ----- | ------ | ---- | -------- |\\\\n| task_code | string | \\\\u662f  | \\\\u4efb\\\\u52a1ID |\\\\n| task_log_code | string | \\\\u662f  | task_log_code |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_cancel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d6\\\\u6d88\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0   |\\\\n| ----- | ------ | ---- | -------- |\\\\n| task_code | string | \\\\u662f  | \\\\u4efb\\\\u52a1ID |\\\\n| task_log_code | string | \\\\u662f  | task_log_code |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_cancel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d6\\\\u6d88\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>task_log_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>task_log_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_cancel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d6\\\\u6d88\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>task_log_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>task_log_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7737e1263fe62b6177f58e99e2acff2f','2024-01-18 09:19:39','2025-04-23 11:04:15'),\n(244,'',247,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_clone/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u514b\\\\u9686\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id | string | \\\\u662f  | \\\\u4efb\\\\u52a1ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_clone/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u514b\\\\u9686\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| id | string | \\\\u662f  | \\\\u4efb\\\\u52a1ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_clone/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u514b\\\\u9686\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_clone/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u514b\\\\u9686\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f72860f5c23553063fd738060a68dc18','2024-01-18 09:19:39','2025-04-23 11:04:15'),\n(245,'',248,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_run/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f  | \\\\u4efb\\\\u52a1code |\\\\n| run_parameter_list | string | \\\\u662f  | \\\\u6267\\\\u884c\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_run/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f  | \\\\u4efb\\\\u52a1code |\\\\n| run_parameter_list | string | \\\\u662f  | \\\\u6267\\\\u884c\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_run/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_run/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d6ae1100529e2e2d0b9fedc529c6ffcf','2024-01-18 09:19:39','2025-04-23 11:04:15'),\n(246,'',249,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/upload_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4e0a\\\\u4f20\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| file | file | \\\\u662f  | \\\\u811a\\\\u672c\\\\u6587\\\\u4ef6 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/upload_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4e0a\\\\u4f20\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| file | file | \\\\u662f  | \\\\u811a\\\\u672c\\\\u6587\\\\u4ef6 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/upload_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4e0a\\\\u4f20\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>file</td>\\\\n<td>file</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u6587\\\\u4ef6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/upload_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4e0a\\\\u4f20\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>file</td>\\\\n<td>file</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u6587\\\\u4ef6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','58915f667de3ae90254e0a4dc221e6d0','2024-01-18 10:46:20','2025-04-23 11:04:15'),\n(247,'',250,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_create/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efa\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | string | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| description | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n| name | string | \\\\u662f  | \\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0 |\\\\n| parameter_list | string | \\\\u662f  | \\\\u53c2\\\\u6570\\\\u6570\\\\u636e |\\\\n| step_list | string | \\\\u662f  | \\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_create/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efa\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | string | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| description | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n| name | string | \\\\u662f  | \\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0 |\\\\n| parameter_list | string | \\\\u662f  | \\\\u53c2\\\\u6570\\\\u6570\\\\u636e |\\\\n| step_list | string | \\\\u662f  | \\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_create/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efa\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>step_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_create/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efa\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>step_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','00c03f939026bf00bc4f6fd1429300fe','2024-01-18 10:46:20','2025-04-23 11:04:15'),\n(248,'',251,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | string | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| code | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n| description | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n| name | string | \\\\u662f  | \\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0 |\\\\n| parameter_list | string | \\\\u662f  | \\\\u53c2\\\\u6570\\\\u6570\\\\u636e |\\\\n| step_list | string | \\\\u662f  | \\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | string | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| code | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n| description | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n| name | string | \\\\u662f  | \\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0 |\\\\n| parameter_list | string | \\\\u662f  | \\\\u53c2\\\\u6570\\\\u6570\\\\u636e |\\\\n| step_list | string | \\\\u662f  | \\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>step_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>step_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6b65\\\\u9aa4\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','030c271c2563fd2a943b0c9d01b6b6f9','2024-01-18 10:46:20','2025-04-23 11:04:15'),\n(249,'',252,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | string | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| code | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/deploy_task_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application | string | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| code | string | \\\\u662f  | \\\\u63cf\\\\u8ff0 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/deploy_task_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','091dccac6af71526ad3cabce39362916','2024-01-18 10:46:20','2025-04-23 11:04:15'),\n(250,'',244,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5236\\\\u54c1\\\\u5e93\\\\u4e0b\\\\u8f7d\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| download_url | str | \\\\u662f | \\\\u9700\\\\u8981\\\\u4e0b\\\\u8f7d\\\\u7684\\\\u5236\\\\u54c1\\\\u7684url |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/post_nexus_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5236\\\\u54c1\\\\u5e93\\\\u4e0b\\\\u8f7d\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| download_url | str | \\\\u662f | \\\\u9700\\\\u8981\\\\u4e0b\\\\u8f7d\\\\u7684\\\\u5236\\\\u54c1\\\\u7684url |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5236\\\\u54c1\\\\u5e93\\\\u4e0b\\\\u8f7d</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>download_url</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9700\\\\u8981\\\\u4e0b\\\\u8f7d\\\\u7684\\\\u5236\\\\u54c1\\\\u7684url</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/post_nexus_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5236\\\\u54c1\\\\u5e93\\\\u4e0b\\\\u8f7d</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>download_url</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9700\\\\u8981\\\\u4e0b\\\\u8f7d\\\\u7684\\\\u5236\\\\u54c1\\\\u7684url</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n</pre></div>\\\"}','702982d3d32bff4396960674e80521c0','2024-01-18 10:57:11','2025-04-23 11:04:15'),\n(251,'',253,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','51f1d1215446991dd3d033d2bec71d59','2024-01-19 08:02:41','2025-04-23 11:04:15'),\n(252,'',255,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/job_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/job_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/job_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/job_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','295b5697ec06828f0703a4113435a4e9','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(253,'',256,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_v2_build/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6267\\\\u884c\\\\u5386\\\\u53f2\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u5426 | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_v2_build/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6267\\\\u884c\\\\u5386\\\\u53f2\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u5426 | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_v2_build/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6267\\\\u884c\\\\u5386\\\\u53f2</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_v2_build/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6267\\\\u884c\\\\u5386\\\\u53f2</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4409e3f64838cd7e67cf4951d6f9f227','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(254,'',257,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_building_queue/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6784\\\\u5efa\\\\u961f\\\\u5217\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_building_queue/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6784\\\\u5efa\\\\u961f\\\\u5217\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_building_queue/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6784\\\\u5efa\\\\u961f\\\\u5217</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_building_queue/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6784\\\\u5efa\\\\u961f\\\\u5217</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d806dd3109d29542c2954532dad5eff6','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(255,'',258,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_v2_detail/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u63cf\\\\u8ff0\\\\u7b49\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_v2_detail/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u63cf\\\\u8ff0\\\\u7b49\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_v2_detail/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u63cf\\\\u8ff0\\\\u7b49\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_v2_detail/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u63cf\\\\u8ff0\\\\u7b49\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','c82d64c9f07f8e390c585f38e3a4e667','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(256,'',259,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4ee5\\\\u53ca\\\\u5f53\\\\u524d\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u5426 | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| search_type | str | \\\\u5426 | \\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4ee5\\\\u53ca\\\\u5f53\\\\u524d\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u5426 | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| search_type | str | \\\\u5426 | \\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4ee5\\\\u53ca\\\\u5f53\\\\u524d\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5168\\\\u90e8\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4ee5\\\\u53ca\\\\u5f53\\\\u524d\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u641c\\\\u7d22\\\\u7684\\\\u5173\\\\u952e\\\\u5b57</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','da8072cdfc7f4aea8586d210b9e0f76f','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(257,'',260,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_pipeline_template_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group | str | \\\\u5426  | \\\\u6a21\\\\u677f\\\\u7ec4\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_pipeline_template_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group | str | \\\\u5426  | \\\\u6a21\\\\u677f\\\\u7ec4\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_pipeline_template_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u677f\\\\u7ec4\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_pipeline_template_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6a21\\\\u677f\\\\u5206\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u677f\\\\u7ec4\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6572752136c63880d55185a81f9c28d0','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(258,'',261,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','bbe7c3534c248825cd9e3f210eb7e1a5','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(259,'',262,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','748f0450a7e5db18cb70b7fd3678ff49','2024-01-19 11:30:07','2025-04-23 11:10:02'),\n(260,'',263,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_build_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u770b\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| job_name | str | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| number | int | \\\\u662f | \\\\u6267\\\\u884c\\\\u5386\\\\u53f2id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_build_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u67e5\\\\u770b\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| job_name | str | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| number | int | \\\\u662f | \\\\u6267\\\\u884c\\\\u5386\\\\u53f2id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_build_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u770b\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_build_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u67e5\\\\u770b\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6cd1aa512c09dda6d8b914fbd531a39e','2024-01-20 00:39:42','2025-04-23 11:10:02'),\n(261,'',264,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| number | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| number | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b11feb912bfbd97a504586fa09c1f0c2','2024-01-20 00:39:42','2025-04-23 11:10:02'),\n(262,'',265,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_gitlab_all_projects/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6gitlab\\\\u5168\\\\u90e8\\\\u9879\\\\u76ee\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_gitlab_all_projects/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6gitlab\\\\u5168\\\\u90e8\\\\u9879\\\\u76ee\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_gitlab_all_projects/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6gitlab\\\\u5168\\\\u90e8\\\\u9879\\\\u76ee\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_gitlab_all_projects/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6gitlab\\\\u5168\\\\u90e8\\\\u9879\\\\u76ee\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1704090d7a37f0f4f5de62c212b400c6','2024-01-20 06:21:27','2025-04-23 11:10:02'),\n(263,'',266,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_reconfig_parameter/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n# \\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570\\\\u8bbe\\\\u7f6e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_reconfig_parameter/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n# \\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570\\\\u8bbe\\\\u7f6e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_reconfig_parameter/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<h1 id=\\\\\\\"_4\\\\\\\">\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570\\\\u8bbe\\\\u7f6e</h1>\\\\n<h3 id=\\\\\\\"_5\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_7\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_reconfig_parameter/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<h1 id=\\\\\\\"_4\\\\\\\">\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570\\\\u8bbe\\\\u7f6e</h1>\\\\n<h3 id=\\\\\\\"_5\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_7\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0d599b923a0d26a3e4052a6e59a3f161','2024-01-20 06:21:27','2025-04-23 11:10:02'),\n(264,'',267,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_reconfig_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_reconfig_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_reconfig_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_reconfig_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','57e9dc0abcbf6575ca6aba96725b47e8','2024-01-20 06:21:27','2025-04-23 11:10:02'),\n(265,'',268,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/job_create/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u65b0\\\\u5efa\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| description | string | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n| config_xml | string | \\\\u662f | \\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6 XML \\\\u5185\\\\u5bb9|\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u521b\\\\u5efa\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/job_create/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u65b0\\\\u5efa\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| description | string | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n| config_xml | string | \\\\u662f | \\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6 XML \\\\u5185\\\\u5bb9|\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u521b\\\\u5efa\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/job_create/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u65b0\\\\u5efa\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>config_xml</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6 XML \\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u521b\\\\u5efa\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/job_create/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u65b0\\\\u5efa\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>config_xml</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6 XML \\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u521b\\\\u5efa\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f2aadda72f7bc54138afb5b51edcb790','2024-01-20 06:21:27','2025-04-23 11:10:02'),\n(266,'',269,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/put_job_reconfig_parameter/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u6784\\\\u5efa\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| params | str | \\\\u662f | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/put_job_reconfig_parameter/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u6784\\\\u5efa\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| params | str | \\\\u662f | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/put_job_reconfig_parameter/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u6784\\\\u5efa\\\\u53c2\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/put_job_reconfig_parameter/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u6784\\\\u5efa\\\\u53c2\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e8951c2d605e56026480172ea4434f33','2024-01-20 06:21:27','2025-04-23 11:10:02'),\n(267,'',270,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/put_job_reconfig_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| jenkins_file | str | \\\\u662f |  |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/put_job_reconfig_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| jenkins_file | str | \\\\u662f |  |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/put_job_reconfig_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>jenkins_file</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/put_job_reconfig_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>jenkins_file</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','845bafb28ca202bbc14036412a893b4d','2024-01-20 07:36:58','2025-04-23 11:10:02'),\n(268,'',271,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_stop/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPUT\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u505c\\\\u6b62\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| number | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_stop/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPUT\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u505c\\\\u6b62\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u5426  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| number | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_stop/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>PUT</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u505c\\\\u6b62\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_stop/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>PUT</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u505c\\\\u6b62\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','77171d9ea876ab1bb1601ae740cf187f','2024-01-20 08:17:34','2025-04-23 11:10:02'),\n(269,'',272,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_rename/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_rename/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_rename/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_rename/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a60c0059e6603dbf9f9f2072e8bd2735','2024-01-20 10:08:54','2025-04-23 11:10:02'),\n(270,'',273,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/put_job_rename/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| name | str | \\\\u662f | \\\\u539f\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| rename | str | \\\\u662f | \\\\u4fee\\\\u6539\\\\u540e\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| description | str | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n| build_discard | str | \\\\u5426 | \\\\u6784\\\\u5efa\\\\u4fdd\\\\u7559\\\\u7b56\\\\u7565 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/put_job_rename/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528id |\\\\n| name | str | \\\\u662f | \\\\u539f\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| rename | str | \\\\u662f | \\\\u4fee\\\\u6539\\\\u540e\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| description | str | \\\\u5426 | \\\\u63cf\\\\u8ff0 |\\\\n| build_discard | str | \\\\u5426 | \\\\u6784\\\\u5efa\\\\u4fdd\\\\u7559\\\\u7b56\\\\u7565 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/put_job_rename/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u539f\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>rename</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fee\\\\u6539\\\\u540e\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>build_discard</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6784\\\\u5efa\\\\u4fdd\\\\u7559\\\\u7b56\\\\u7565</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/put_job_rename/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u4fee\\\\u6539\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u539f\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>rename</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fee\\\\u6539\\\\u540e\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>description</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63cf\\\\u8ff0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>build_discard</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6784\\\\u5efa\\\\u4fdd\\\\u7559\\\\u7b56\\\\u7565</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fee\\\\u6539\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','1e2b30d3c58ba298f8b7d20537055d72','2024-01-20 10:08:54','2025-04-23 11:10:02'),\n(271,'',274,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_all_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684jenkins\\\\u4f5c\\\\u4e1a\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_all_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684jenkins\\\\u4f5c\\\\u4e1a\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_all_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684jenkins\\\\u4f5c\\\\u4e1a\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_all_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u7684jenkins\\\\u4f5c\\\\u4e1a\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','307ff83c3a2be4c361105de176ddc8d1','2024-01-20 11:20:08','2025-04-23 11:10:02'),\n(272,'',275,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_reconfig_triggers/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u89e6\\\\u53d1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_reconfig_triggers/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u89e6\\\\u53d1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f | \\\\u5e94\\\\u7528id |\\\\n| job_name | str | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_reconfig_triggers/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u89e6\\\\u53d1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_reconfig_triggers/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u914d\\\\u7f6e-\\\\u89e6\\\\u53d1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','5d4eb41a50b88b3f5d29390f59e6af31','2024-01-20 11:20:08','2025-04-23 11:10:02'),\n(273,'',276,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_pipeline_tool/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_pipeline_tool/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_pipeline_tool/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_pipeline_tool/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4a2f5ea79c572bfabb52fcf8aa77faae','2024-01-20 11:20:08','2025-04-23 11:10:02'),\n(274,'',277,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_pipeline_tool_post/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool-post\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_job_pipeline_tool_post/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool-post\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_pipeline_tool_post/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool-post</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_job_pipeline_tool_post/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u914d\\\\u7f6e\\\\u5185\\\\u7f6e\\\\u5de5\\\\u5177tool-post</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','db57f1686a92d44d5838c5ae5f67e434','2024-01-20 11:25:17','2025-04-23 11:10:02'),\n(275,'',278,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_start/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5f00\\\\u59cb\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| parameters | str | \\\\u5426 | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_start/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5f00\\\\u59cb\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | int | \\\\u662f  | \\\\u5e94\\\\u7528ID |\\\\n| name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| parameters | str | \\\\u5426 | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_start/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5f00\\\\u59cb\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_start/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5f00\\\\u59cb\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ea4029bb2f9cdcad4f4ccdea73467de4','2024-01-20 12:40:56','2025-04-23 11:10:02'),\n(276,'',279,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_proceed/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ee7\\\\u7eed\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| num | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_proceed/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ee7\\\\u7eed\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| num | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_proceed/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ee7\\\\u7eed\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>num</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_proceed/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ee7\\\\u7eed\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>num</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3868d1b01f81cc6b04fa4a00767b9c72','2024-01-20 12:40:56','2025-04-23 11:10:02'),\n(277,'',280,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_abort/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ec8\\\\u6b62\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| num | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/build_abort/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7ec8\\\\u6b62\\\\u6784\\\\u5efa\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| num | int | \\\\u662f | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"url\\\\\\\":  \\\\\\\"http://st2_url.com\\\\\\\",\\\\n    \\\\\\\"api_key\\\\\\\": \\\\\\\"LPDMDMPVOMDOPVDVNDLKLD\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_abort/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ec8\\\\u6b62\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>num</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/build_abort/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7ec8\\\\u6b62\\\\u6784\\\\u5efa</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>num</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u6784\\\\u5efa\\\\u5386\\\\u53f2id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;http://st2_url.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api_key&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;LPDMDMPVOMDOPVDVNDLKLD&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','11d0322df1de32500675e02edec6e625','2024-01-20 12:40:56','2025-04-23 11:10:02'),\n(278,'',281,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_work_order_event/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u8f6c\\\\u5de5\\\\u5355\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_work_order_event/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u8f6c\\\\u5de5\\\\u5355\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_work_order_event/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u8f6c\\\\u5de5\\\\u5355\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_work_order_event/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u8f6c\\\\u5de5\\\\u5355\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','764e50d6ea4df0fba7f2d938beec770b','2024-03-19 10:20:04','2025-04-23 11:10:02'),\n(279,'',282,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/work_order_submit/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u53d6\\\\u5230\\\\u8f6c\\\\u5de5\\\\u5355\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| submit_from | str | \\\\u662f  | \\\\u63d0\\\\u4ea4\\\\u6765\\\\u6e90(\\\\u5e73\\\\u53f0) |\\\\n| submit_username | string | \\\\u662f  | \\\\u63d0\\\\u4ea4\\\\u4eba |\\\\n| work_order_id | int | \\\\u5426  | \\\\u5de5\\\\u5355ID |\\\\n| follow | bool | \\\\u5426  | \\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a |\\\\n| field_dict | dict | \\\\u5426  | \\\\u8868\\\\u5355\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\":  xx,\\\\n    \\\\\\\"parameter\\\\\\\": \\\\\\\"(x, x, x, x)\\\\\\\",\\\\n    \\\\\\\"subscribe_type\\\\\\\": [\\\\\\\"1\\\\\\\", \\\\\\\"2\\\\\\\", \\\\\\\"3\\\\\\\"]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/work_order_submit/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u53d6\\\\u5230\\\\u8f6c\\\\u5de5\\\\u5355\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| submit_from | str | \\\\u662f  | \\\\u63d0\\\\u4ea4\\\\u6765\\\\u6e90(\\\\u5e73\\\\u53f0) |\\\\n| submit_username | string | \\\\u662f  | \\\\u63d0\\\\u4ea4\\\\u4eba |\\\\n| work_order_id | int | \\\\u5426  | \\\\u5de5\\\\u5355ID |\\\\n| follow | bool | \\\\u5426  | \\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a |\\\\n| field_dict | dict | \\\\u5426  | \\\\u8868\\\\u5355\\\\u5185\\\\u5bb9 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\":  xx,\\\\n    \\\\\\\"parameter\\\\\\\": \\\\\\\"(x, x, x, x)\\\\\\\",\\\\n    \\\\\\\"subscribe_type\\\\\\\": [\\\\\\\"1\\\\\\\", \\\\\\\"2\\\\\\\", \\\\\\\"3\\\\\\\"]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/work_order_submit/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u53d6\\\\u5230\\\\u8f6c\\\\u5de5\\\\u5355</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>submit_from</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63d0\\\\u4ea4\\\\u6765\\\\u6e90(\\\\u5e73\\\\u53f0)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>submit_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63d0\\\\u4ea4\\\\u4eba</td>\\\\n</tr>\\\\n<tr>\\\\n<td>work_order_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>follow</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8868\\\\u5355\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;parameter&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;(x, x, x, x)&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subscribe_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;3&quot;</span><span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/work_order_submit/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7b2c\\\\u4e09\\\\u65b9\\\\u53d6\\\\u5230\\\\u8f6c\\\\u5de5\\\\u5355</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>submit_from</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63d0\\\\u4ea4\\\\u6765\\\\u6e90(\\\\u5e73\\\\u53f0)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>submit_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63d0\\\\u4ea4\\\\u4eba</td>\\\\n</tr>\\\\n<tr>\\\\n<td>work_order_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>follow</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a</td>\\\\n</tr>\\\\n<tr>\\\\n<td>field_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8868\\\\u5355\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;parameter&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;(x, x, x, x)&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;subscribe_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span><span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"s2\\\\\\\">&quot;3&quot;</span><span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3203d2d3fa111d35bcffa42487e55699','2024-03-21 10:58:22','2025-04-23 11:10:02'),\n(280,'',283,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/pull_app_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u63a8\\\\u9001\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_dict | str | \\\\u662f    |  \\\\u6570\\\\u636e |\\\\n| data_type | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count | data\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/pull_app_auth/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u63a8\\\\u9001\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_dict | str | \\\\u662f    |  \\\\u6570\\\\u636e |\\\\n| data_type | list | \\\\u662f    | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count | data\\\\uff09 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/pull_app_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u63a8\\\\u9001\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_dict</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/pull_app_auth/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u63a8\\\\u9001\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_dict</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b\\\\uff08count</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','41a22bb6e92fea8297b5854c6dba1d31','2024-03-28 07:03:08','2025-04-23 11:10:02'),\n(281,'',284,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_info_for_monitor_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_info_for_monitor_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_info_for_monitor_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_info_for_monitor_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f--\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u6982\\\\u89c8\\\\u9875\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','5fab80f5d5c5461b5188a690a34a2fd4','2024-03-29 03:36:17','2025-04-23 11:10:02'),\n(282,'',285,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_service_check_alert_for_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u548c\\\\u544a\\\\u8b66\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f    |  \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_service_check_alert_for_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u548c\\\\u544a\\\\u8b66\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f    |  \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_service_check_alert_for_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u548c\\\\u544a\\\\u8b66\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_service_check_alert_for_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6APM\\\\u76d1\\\\u63a7\\\\u670d\\\\u52a1\\\\u62e8\\\\u6d4b\\\\u6ce2\\\\u6d4b\\\\u548c\\\\u544a\\\\u8b66\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fb619188023305f613ca1252a5c320d6','2024-03-31 07:11:46','2025-04-23 11:10:02'),\n(283,'',286,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','be2310eed378ecb363208020210f9366','2024-04-01 02:32:19','2025-04-23 11:10:02'),\n(284,'',287,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/run_task_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eID\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| task_id     | int    |  \\\\u662f  | \\\\u4efb\\\\u52a1ID   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"task_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/run_task_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eID\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| task_id     | int    |  \\\\u662f  | \\\\u4efb\\\\u52a1ID   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"task_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/run_task_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eID\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;task_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/run_task_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eID\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;task_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','3873ec09c3e92bd9c752caf49c63d323','2024-04-07 03:09:03','2025-04-23 11:10:02'),\n(285,'',288,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/create_gitlab_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efagitlab\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u540d\\\\u79f0 |\\\\n| username | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d |\\\\n| email | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u90ae\\\\u7bb1 |\\\\n| password | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u5bc6\\\\u7801 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20001,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/create_gitlab_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efagitlab\\\\u7528\\\\u6237\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u540d\\\\u79f0 |\\\\n| username | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d |\\\\n| email | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u90ae\\\\u7bb1 |\\\\n| password | str | \\\\u662f | gitlab\\\\u7528\\\\u6237\\\\u5bc6\\\\u7801 |\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20001,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/create_gitlab_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efagitlab\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>email</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u90ae\\\\u7bb1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>password</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u5bc6\\\\u7801</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20001,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/create_gitlab_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efagitlab\\\\u7528\\\\u6237</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>email</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u90ae\\\\u7bb1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>password</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>gitlab\\\\u7528\\\\u6237\\\\u5bc6\\\\u7801</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20001,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;\\\\n}\\\\n</pre></div>\\\"}','21de5971d05d0d27b715199e56cf3857','2024-04-07 12:30:05','2025-04-23 11:10:02'),\n(286,'',289,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/sync_rbac_user_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u6307\\\\u5b9a\\\\u7528\\\\u6237\\\\u6216\\\\u7528\\\\u6237\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| sync_type | list | \\\\u662f  | \\\\u540c\\\\u6b65\\\\u7c7b\\\\u578b |\\\\n| data_info | string | \\\\u662f  | \\\\u540c\\\\u6b65\\\\u6570\\\\u636e |\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"sync_type\\\\\\\": \\\\\\\"create_or_update\\\\\\\",\\\\n    \\\\\\\"data_info\\\\\\\": [\\\\n        {\\\\\\\"username\\\\\\\": \\\\\\\"huxingqi\\\\\\\", \\\\\\\"chname\\\\\\\": \\\\\\\"\\\\u80e1\\\\u5174\\\\u8d77\\\\\\\"}\\\\n    ]\\\\n}\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n    {\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/sync_rbac_user_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u6307\\\\u5b9a\\\\u7528\\\\u6237\\\\u6216\\\\u7528\\\\u6237\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| sync_type | list | \\\\u662f  | \\\\u540c\\\\u6b65\\\\u7c7b\\\\u578b |\\\\n| data_info | string | \\\\u662f  | \\\\u540c\\\\u6b65\\\\u6570\\\\u636e |\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"sync_type\\\\\\\": \\\\\\\"create_or_update\\\\\\\",\\\\n    \\\\\\\"data_info\\\\\\\": [\\\\n        {\\\\\\\"username\\\\\\\": \\\\\\\"huxingqi\\\\\\\", \\\\\\\"chname\\\\\\\": \\\\\\\"\\\\u80e1\\\\u5174\\\\u8d77\\\\\\\"}\\\\n    ]\\\\n}\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n\\\\n    {\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/sync_rbac_user_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u6307\\\\u5b9a\\\\u7528\\\\u6237\\\\u6216\\\\u7528\\\\u6237\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>sync_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u540c\\\\u6b65\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_info</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u540c\\\\u6b65\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>{</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"sync_type\\\\\\\": \\\\\\\"create_or_update\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"data_info\\\\\\\": [</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>{\\\\\\\"username\\\\\\\": \\\\\\\"huxingqi\\\\\\\", \\\\\\\"chname\\\\\\\": \\\\\\\"\\\\u80e1\\\\u5174\\\\u8d77\\\\\\\"}</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>]</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>}</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/sync_rbac_user_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u6307\\\\u5b9a\\\\u7528\\\\u6237\\\\u6216\\\\u7528\\\\u6237\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>sync_type</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u540c\\\\u6b65\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_info</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u540c\\\\u6b65\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>{</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"sync_type\\\\\\\": \\\\\\\"create_or_update\\\\\\\",</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>\\\\\\\"data_info\\\\\\\": [</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>{\\\\\\\"username\\\\\\\": \\\\\\\"huxingqi\\\\\\\", \\\\\\\"chname\\\\\\\": \\\\\\\"\\\\u80e1\\\\u5174\\\\u8d77\\\\\\\"}</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>]</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>}</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','df14c06286b8bab0e8797ed0caed5e59','2024-04-08 06:49:04','2025-04-23 11:10:02'),\n(287,'',290,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','581b0666d4b17f148408252428e32262','2024-04-30 07:12:49','2025-04-23 11:10:03'),\n(288,'',291,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_home_page/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"pipeline_count\\\\\\\": 31,\\\\n        \\\\\\\"seven_days_task_count\\\\\\\": 52,\\\\n        \\\\\\\"seven_days_task_status\\\\\\\": {\\\\n            \\\\\\\"seven_days_task_success_count\\\\\\\": 50,\\\\n            \\\\\\\"seven_days_task_error_count\\\\\\\": 2\\\\n        },\\\\n        \\\\\\\"daily_success_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 50\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            }\\\\n        ],\\\\n        \\\\\\\"daily_error_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 2\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_home_page/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"pipeline_count\\\\\\\": 31,\\\\n        \\\\\\\"seven_days_task_count\\\\\\\": 52,\\\\n        \\\\\\\"seven_days_task_status\\\\\\\": {\\\\n            \\\\\\\"seven_days_task_success_count\\\\\\\": 50,\\\\n            \\\\\\\"seven_days_task_error_count\\\\\\\": 2\\\\n        },\\\\n        \\\\\\\"daily_success_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 50\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            }\\\\n        ],\\\\n        \\\\\\\"daily_error_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 2\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_home_page/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pipeline_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">31</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">52</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">50</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_success_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">50</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_error_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_home_page/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pipeline_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">31</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">52</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">50</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_task_error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_success_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">50</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_error_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','952383b12d5355c90134570a3123bc62','2024-05-10 01:37:49','2025-04-23 11:10:03'),\n(289,'',292,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_pipeline_jenkins_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"per_page\\\\\\\": 2,\\\\n        \\\\\\\"total\\\\\\\": 31,\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 187,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny-test-assembly-line2024-5-9\\\\\\\",\\\\n                \\\\\\\"color\\\\\\\": \\\\\\\"notbuilt\\\\\\\",\\\\n                \\\\\\\"timestamp\\\\\\\": null,\\\\n                \\\\\\\"description\\\\\\\": \\\\\\\"\\\\u8fd9\\\\u662f\\\\u4e00\\\\u4e2a\\\\u6d4b\\\\u8bd5\\\\u6d41\\\\u6c34\\\\u7ebf2024-5-9\\\\\\\",\\\\n                \\\\\\\"result\\\\\\\": null,\\\\n                \\\\\\\"view\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 2,\\\\n                    \\\\\\\"jenkins_view_name\\\\\\\": \\\\\\\"opsany\\\\\\\"\\\\n                },\\\\n                \\\\\\\"build_list\\\\\\\": {}\\\\n            },\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 185,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"test001\\\\\\\",\\\\n                \\\\\\\"color\\\\\\\": \\\\\\\"notbuilt\\\\\\\",\\\\n                \\\\\\\"timestamp\\\\\\\": null,\\\\n                \\\\\\\"description\\\\\\\": \\\\\\\"None\\\\\\\",\\\\n                \\\\\\\"result\\\\\\\": null,\\\\n                \\\\\\\"view\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 2,\\\\n                    \\\\\\\"jenkins_view_name\\\\\\\": \\\\\\\"opsany\\\\\\\"\\\\n                },\\\\n                \\\\\\\"build_list\\\\\\\": {}\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/get_pipeline_jenkins_job/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"per_page\\\\\\\": 2,\\\\n        \\\\\\\"total\\\\\\\": 31,\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 187,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny-test-assembly-line2024-5-9\\\\\\\",\\\\n                \\\\\\\"color\\\\\\\": \\\\\\\"notbuilt\\\\\\\",\\\\n                \\\\\\\"timestamp\\\\\\\": null,\\\\n                \\\\\\\"description\\\\\\\": \\\\\\\"\\\\u8fd9\\\\u662f\\\\u4e00\\\\u4e2a\\\\u6d4b\\\\u8bd5\\\\u6d41\\\\u6c34\\\\u7ebf2024-5-9\\\\\\\",\\\\n                \\\\\\\"result\\\\\\\": null,\\\\n                \\\\\\\"view\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 2,\\\\n                    \\\\\\\"jenkins_view_name\\\\\\\": \\\\\\\"opsany\\\\\\\"\\\\n                },\\\\n                \\\\\\\"build_list\\\\\\\": {}\\\\n            },\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 185,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"test001\\\\\\\",\\\\n                \\\\\\\"color\\\\\\\": \\\\\\\"notbuilt\\\\\\\",\\\\n                \\\\\\\"timestamp\\\\\\\": null,\\\\n                \\\\\\\"description\\\\\\\": \\\\\\\"None\\\\\\\",\\\\n                \\\\\\\"result\\\\\\\": null,\\\\n                \\\\\\\"view\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 2,\\\\n                    \\\\\\\"jenkins_view_name\\\\\\\": \\\\\\\"opsany\\\\\\\"\\\\n                },\\\\n                \\\\\\\"build_list\\\\\\\": {}\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_pipeline_jenkins_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;per_page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">31</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">187</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny-test-assembly-line2024-5-9&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;color&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;notbuilt&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd9\\\\u662f\\\\u4e00\\\\u4e2a\\\\u6d4b\\\\u8bd5\\\\u6d41\\\\u6c34\\\\u7ebf2024-5-9&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;view&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;jenkins_view_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;build_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">185</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test001&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;color&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;notbuilt&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;view&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;jenkins_view_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;build_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/get_pipeline_jenkins_job/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;per_page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">31</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">187</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny-test-assembly-line2024-5-9&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;color&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;notbuilt&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd9\\\\u662f\\\\u4e00\\\\u4e2a\\\\u6d4b\\\\u8bd5\\\\u6d41\\\\u6c34\\\\u7ebf2024-5-9&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;view&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;jenkins_view_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;build_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">185</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test001&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;color&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;notbuilt&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;view&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;jenkins_view_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;build_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d3635a3a5b475131b733c80c3b2a1a39','2024-05-10 01:37:49','2025-04-23 11:10:03'),\n(290,'',293,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/get_home_page/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"deploy_task_count\\\\\\\": 1,\\\\n        \\\\\\\"seven_days_deploy_log_all_count\\\\\\\": 0,\\\\n        \\\\\\\"seven_days_deploy_log_status\\\\\\\": {\\\\n            \\\\\\\"seven_days_deploy_success_count\\\\\\\": 0,\\\\n            \\\\\\\"seven_days_deploy_fail_count\\\\\\\": 0\\\\n        },\\\\n        \\\\\\\"daily_success_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            }\\\\n        ],\\\\n        \\\\\\\"daily_error_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/get_home_page/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"deploy_task_count\\\\\\\": 1,\\\\n        \\\\\\\"seven_days_deploy_log_all_count\\\\\\\": 0,\\\\n        \\\\\\\"seven_days_deploy_log_status\\\\\\\": {\\\\n            \\\\\\\"seven_days_deploy_success_count\\\\\\\": 0,\\\\n            \\\\\\\"seven_days_deploy_fail_count\\\\\\\": 0\\\\n        },\\\\n        \\\\\\\"daily_success_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"success_count\\\\\\\": 0\\\\n            }\\\\n        ],\\\\n        \\\\\\\"daily_error_counts\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-04\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-05\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-06\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-07\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-08\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-09\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            },\\\\n            {\\\\n                \\\\\\\"date\\\\\\\": \\\\\\\"2024-05-10\\\\\\\",\\\\n                \\\\\\\"error_count\\\\\\\": 0\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/get_home_page/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;deploy_task_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_log_all_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_log_status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_fail_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_success_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_error_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/get_home_page/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;deploy_task_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_log_all_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_log_status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;seven_days_deploy_fail_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_success_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;success_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;daily_error_counts&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-04&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-05&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-06&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-07&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-08&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-09&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;date&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-05-10&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;error_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','20002fd10a21b5ad2cb2d151cd1a5d04','2024-05-10 01:37:49','2025-04-23 11:10:03'),\n(291,'',294,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/get_deploy_task/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"current\\\\\\\": 1,\\\\n        \\\\\\\"pageSize\\\\\\\": 20,\\\\n        \\\\\\\"total\\\\\\\": 1,\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 3,\\\\n                \\\\\\\"log_count\\\\\\\": 1,\\\\n                \\\\\\\"last_run_log\\\\\\\": 5,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f7211\\\\\\\",\\\\n                \\\\\\\"create_user\\\\\\\": \\\\\\\"xiongqianyuan\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\": \\\\\\\"\\\\u8fd9\\\\u662f\\\\u6d4b\\\\u8bd5\\\\u90e8\\\\u7f7211\\\\\\\",\\\\n                \\\\\\\"st2_file_name\\\\\\\": \\\\\\\"910e8f7dad3edb520f2-3\\\\\\\",\\\\n                \\\\\\\"created_at\\\\\\\": \\\\\\\"2024-01-02 15:14:28\\\\\\\",\\\\n                \\\\\\\"application\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 3,\\\\n                    \\\\\\\"model_code\\\\\\\": \\\\\\\"APPLICATION\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_name\\\\\\\": \\\\\\\"18737338\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_VISIBLE_NAME\\\\\\\": \\\\\\\"OsAnyosany\\\\\\\"\\\\n                },\\\\n                \\\\\\\"task_last_run_log\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 5,\\\\n                    \\\\\\\"status\\\\\\\": \\\\\\\"running\\\\\\\",\\\\n                    \\\\\\\"start_timestamp\\\\\\\": null,\\\\n                    \\\\\\\"end_timestamp\\\\\\\": null,\\\\n                    \\\\\\\"elapsed_seconds\\\\\\\": null,\\\\n                    \\\\\\\"created_at\\\\\\\": \\\\\\\"2024-04-28 18:15:42\\\\\\\",\\\\n                    \\\\\\\"run_username\\\\\\\": {\\\\n                        \\\\\\\"id\\\\\\\": XXX,\\\\n                        \\\\\\\"username\\\\\\\": \\\\\\\"XXXXXX\\\\\\\",\\\\n                        \\\\\\\"ch_name\\\\\\\": \\\\\\\"XXX\\\\\\\"\\\\n                    }\\\\n                }\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/get_deploy_task/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"current\\\\\\\": 1,\\\\n        \\\\\\\"pageSize\\\\\\\": 20,\\\\n        \\\\\\\"total\\\\\\\": 1,\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 3,\\\\n                \\\\\\\"log_count\\\\\\\": 1,\\\\n                \\\\\\\"last_run_log\\\\\\\": 5,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f7211\\\\\\\",\\\\n                \\\\\\\"create_user\\\\\\\": \\\\\\\"xiongqianyuan\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\": \\\\\\\"\\\\u8fd9\\\\u662f\\\\u6d4b\\\\u8bd5\\\\u90e8\\\\u7f7211\\\\\\\",\\\\n                \\\\\\\"st2_file_name\\\\\\\": \\\\\\\"910e8f7dad3edb520f2-3\\\\\\\",\\\\n                \\\\\\\"created_at\\\\\\\": \\\\\\\"2024-01-02 15:14:28\\\\\\\",\\\\n                \\\\\\\"application\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 3,\\\\n                    \\\\\\\"model_code\\\\\\\": \\\\\\\"APPLICATION\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_name\\\\\\\": \\\\\\\"18737338\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_VISIBLE_NAME\\\\\\\": \\\\\\\"OsAnyosany\\\\\\\"\\\\n                },\\\\n                \\\\\\\"task_last_run_log\\\\\\\": {\\\\n                    \\\\\\\"code\\\\\\\": 5,\\\\n                    \\\\\\\"status\\\\\\\": \\\\\\\"running\\\\\\\",\\\\n                    \\\\\\\"start_timestamp\\\\\\\": null,\\\\n                    \\\\\\\"end_timestamp\\\\\\\": null,\\\\n                    \\\\\\\"elapsed_seconds\\\\\\\": null,\\\\n                    \\\\\\\"created_at\\\\\\\": \\\\\\\"2024-04-28 18:15:42\\\\\\\",\\\\n                    \\\\\\\"run_username\\\\\\\": {\\\\n                        \\\\\\\"id\\\\\\\": XXX,\\\\n                        \\\\\\\"username\\\\\\\": \\\\\\\"XXXXXX\\\\\\\",\\\\n                        \\\\\\\"ch_name\\\\\\\": \\\\\\\"XXX\\\\\\\"\\\\n                    }\\\\n                }\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/get_deploy_task/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;current&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pageSize&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;log_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;last_run_log&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f7211&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;create_user&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xiongqianyuan&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd9\\\\u662f\\\\u6d4b\\\\u8bd5\\\\u90e8\\\\u7f7211&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;st2_file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;910e8f7dad3edb520f2-3&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;created_at&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-01-02 15:14:28&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;18737338&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_VISIBLE_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OsAnyosany&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;task_last_run_log&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;running&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;start_timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;end_timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;elapsed_seconds&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;created_at&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-04-28 18:15:42&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;run_username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">XXX</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ch_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/get_deploy_task/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;current&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pageSize&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;log_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;last_run_log&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f7211&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;create_user&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xiongqianyuan&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd9\\\\u662f\\\\u6d4b\\\\u8bd5\\\\u90e8\\\\u7f7211&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;st2_file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;910e8f7dad3edb520f2-3&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;created_at&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-01-02 15:14:28&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;18737338&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_VISIBLE_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OsAnyosany&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;task_last_run_log&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;running&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;start_timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;end_timestamp&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;elapsed_seconds&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;created_at&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024-04-28 18:15:42&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;run_username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">XXX</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ch_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a36b2e01e2f6162f3f50cae8a56c31a3','2024-05-10 01:37:49','2025-04-23 11:10:03');\nINSERT INTO `esb_api_doc` VALUES\n(292,'',295,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_home_page/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"repo_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_count\\\\\\\": 13,\\\\n            \\\\\\\"repo_public_count\\\\\\\": 12,\\\\n            \\\\\\\"repo_inner_count\\\\\\\": 1\\\\n        },\\\\n        \\\\\\\"repo_raw_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_raw_count\\\\\\\": 4,\\\\n            \\\\\\\"repo_public_raw_count\\\\\\\": 4,\\\\n            \\\\\\\"repo_inner_raw_count\\\\\\\": 0\\\\n        },\\\\n        \\\\\\\"repo_docker_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_docker_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_public_docker_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_inner_docker_count\\\\\\\": 0\\\\n        },\\\\n        \\\\\\\"repo_maven_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_maven_count\\\\\\\": 4,\\\\n            \\\\\\\"repo_public_maven_count\\\\\\\": 3,\\\\n            \\\\\\\"repo_inner_maven_count\\\\\\\": 1\\\\n        },\\\\n        \\\\\\\"repo_pypi_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_pypi_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_public_pypi_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_inner_pypi_count\\\\\\\": 0\\\\n        }\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_home_page/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"repo_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_count\\\\\\\": 13,\\\\n            \\\\\\\"repo_public_count\\\\\\\": 12,\\\\n            \\\\\\\"repo_inner_count\\\\\\\": 1\\\\n        },\\\\n        \\\\\\\"repo_raw_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_raw_count\\\\\\\": 4,\\\\n            \\\\\\\"repo_public_raw_count\\\\\\\": 4,\\\\n            \\\\\\\"repo_inner_raw_count\\\\\\\": 0\\\\n        },\\\\n        \\\\\\\"repo_docker_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_docker_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_public_docker_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_inner_docker_count\\\\\\\": 0\\\\n        },\\\\n        \\\\\\\"repo_maven_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_maven_count\\\\\\\": 4,\\\\n            \\\\\\\"repo_public_maven_count\\\\\\\": 3,\\\\n            \\\\\\\"repo_inner_maven_count\\\\\\\": 1\\\\n        },\\\\n        \\\\\\\"repo_pypi_count\\\\\\\": {\\\\n            \\\\\\\"repo_all_pypi_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_public_pypi_count\\\\\\\": 1,\\\\n            \\\\\\\"repo_inner_pypi_count\\\\\\\": 0\\\\n        }\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_home_page/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">13</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">12</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_home_page/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u5236\\\\u54c1\\\\u5e93\\\\u8d44\\\\u6e90\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">13</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">12</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_raw_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_docker_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_maven_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;repo_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_all_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_public_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;repo_inner_pypi_count&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','34ece19339fe5e09b08d9b8b836ec403','2024-05-11 04:03:37','2025-04-23 11:10:03'),\n(293,'',296,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_repository_pagination/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93\\\\u548c\\\\u516c\\\\u5171\\\\u4ed3\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"per_page\\\\\\\": 20,\\\\n        \\\\\\\"total\\\\\\\": 13,\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 64,\\\\n                \\\\\\\"is_app\\\\\\\": false,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny-docker\\\\\\\",\\\\n                \\\\\\\"type\\\\\\\": \\\\\\\"hosted\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"docker\\\\\\\",\\\\n                \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n                \\\\\\\"url\\\\\\\": \\\\\\\"XXXXXXX\\\\\\\",\\\\n                \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"attributes\\\\\\\": {},\\\\n                \\\\\\\"active_time\\\\\\\": null,\\\\n                \\\\\\\"tags\\\\\\\": false\\\\n            },\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 5,\\\\n                \\\\\\\"is_app\\\\\\\": true,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"maven-releases\\\\\\\",\\\\n                \\\\\\\"type\\\\\\\": \\\\\\\"hosted\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"maven2\\\\\\\",\\\\n                \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n                \\\\\\\"url\\\\\\\": \\\\\\\"XXXXXX\\\\\\\",\\\\n                \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"attributes\\\\\\\": {},\\\\n                \\\\\\\"active_time\\\\\\\": null,\\\\n                \\\\\\\"tags\\\\\\\": false\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/repo/get_repository_pagination/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93\\\\u548c\\\\u516c\\\\u5171\\\\u4ed3\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684code |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"per_page\\\\\\\": 20,\\\\n        \\\\\\\"total\\\\\\\": 13,\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 64,\\\\n                \\\\\\\"is_app\\\\\\\": false,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny-docker\\\\\\\",\\\\n                \\\\\\\"type\\\\\\\": \\\\\\\"hosted\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"docker\\\\\\\",\\\\n                \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n                \\\\\\\"url\\\\\\\": \\\\\\\"XXXXXXX\\\\\\\",\\\\n                \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"attributes\\\\\\\": {},\\\\n                \\\\\\\"active_time\\\\\\\": null,\\\\n                \\\\\\\"tags\\\\\\\": false\\\\n            },\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 5,\\\\n                \\\\\\\"is_app\\\\\\\": true,\\\\n                \\\\\\\"name\\\\\\\": \\\\\\\"maven-releases\\\\\\\",\\\\n                \\\\\\\"type\\\\\\\": \\\\\\\"hosted\\\\\\\",\\\\n                \\\\\\\"format\\\\\\\": \\\\\\\"maven2\\\\\\\",\\\\n                \\\\\\\"status\\\\\\\": \\\\\\\"Online\\\\\\\",\\\\n                \\\\\\\"url\\\\\\\": \\\\\\\"XXXXXX\\\\\\\",\\\\n                \\\\\\\"describe\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"attributes\\\\\\\": {},\\\\n                \\\\\\\"active_time\\\\\\\": null,\\\\n                \\\\\\\"tags\\\\\\\": false\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_repository_pagination/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93\\\\u548c\\\\u516c\\\\u5171\\\\u4ed3\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;per_page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">13</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">64</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;is_app&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">false</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny-docker&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;hosted&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;format&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;docker&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Online&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;attributes&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;active_time&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;tags&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">false</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;is_app&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;maven-releases&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;hosted&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;format&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;maven2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Online&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;attributes&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;active_time&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;tags&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">false</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/repo/get_repository_pagination/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5f53\\\\u524d\\\\u5e94\\\\u7528\\\\u4e0b\\\\u7684\\\\u5236\\\\u54c1\\\\u5e93\\\\u548c\\\\u516c\\\\u5171\\\\u4ed3\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;per_page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">13</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">64</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;is_app&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">false</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny-docker&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;hosted&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;format&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;docker&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Online&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;attributes&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;active_time&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;tags&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">false</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;is_app&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;maven-releases&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;hosted&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;format&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;maven2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;status&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Online&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;url&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;attributes&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;active_time&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;tags&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">false</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','cbe1d8e6d955772fa99fdad3cab23b95','2024-05-11 04:03:37','2025-04-23 11:10:03'),\n(294,'',297,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_applications/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"XXX\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": null\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"XXX\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": \\\\\\\"123\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"XXX\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": \\\\\\\"yy18738587338\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"test\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": null\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"test\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": \\\\\\\"2024513\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/get_applications/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"XXX\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": null\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"XXX\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": \\\\\\\"123\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"XXX\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": \\\\\\\"yy18738587338\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"XXXXX\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"test\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": null\\\\n        },\\\\n        {\\\\n            \\\\\\\"app_visible_name\\\\\\\": \\\\\\\"\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528\\\\\\\",\\\\n            \\\\\\\"app_name\\\\\\\": \\\\\\\"test\\\\\\\",\\\\n            \\\\\\\"app_id\\\\\\\": \\\\\\\"2024513\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_applications/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;123&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;yy18738587338&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024513&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/get_applications/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;123&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;yy18738587338&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;XXXXX&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_visible_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;test&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;app_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;2024513&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d7976b53208b2c0a82a616ab24d828ec','2024-05-15 00:50:16','2025-04-23 11:10:03'),\n(295,'',298,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/sync_devops_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20006,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/sync_devops_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20006,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/sync_devops_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20006</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/sync_devops_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65\\\\u5e94\\\\u7528\\\\u5e73\\\\u53f0\\\\u5168\\\\u90e8\\\\u5e94\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20006</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8e9e81b8cdaf1537b36da0b1334227c5','2024-05-15 06:36:10','2025-04-23 11:10:03'),\n(296,'',299,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/app_related_projects/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5df2\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"per_page\\\\\\\": 10,\\\\n        \\\\\\\"total\\\\\\\": 0,\\\\n        \\\\\\\"data\\\\\\\": []\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/app_related_projects/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5df2\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n| current | int | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u9875\\\\u9762 |\\\\n| pageSize | int | \\\\u662f | \\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"per_page\\\\\\\": 10,\\\\n        \\\\\\\"total\\\\\\\": 0,\\\\n        \\\\\\\"data\\\\\\\": []\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/app_related_projects/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5df2\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;per_page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">10</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/app_related_projects/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5df2\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u9875\\\\u9762</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u8981\\\\u5c55\\\\u793a\\\\u7684\\\\u6761\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;per_page&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">10</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;total&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','974c8fc6239617ea27d263b06ad36741','2024-05-15 06:36:10','2025-04-23 11:10:03'),\n(297,'',300,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/app_unrelated_projects/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u672a\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": []\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/app_unrelated_projects/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u672a\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| search_type | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| search_data | str | \\\\u5426 | \\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": []\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/app_unrelated_projects/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u672a\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/app_unrelated_projects/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u672a\\\\u5173\\\\u8054\\\\u4ed3\\\\u5e93</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u7684\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u67e5\\\\u627e\\\\u7684\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','5c8129d51fb31f6b6e3ddf5f33a21224','2024-05-15 06:36:10','2025-04-23 11:10:03'),\n(298,'',301,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/relate_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5173\\\\u8054\\\\u9879\\\\u76ee\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| relate_project_list | str | \\\\u662f | \\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/relate_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5173\\\\u8054\\\\u9879\\\\u76ee\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| relate_project_list | str | \\\\u662f | \\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/relate_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5173\\\\u8054\\\\u9879\\\\u76ee</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>relate_project_list</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/relate_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5173\\\\u8054\\\\u9879\\\\u76ee</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>relate_project_list</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n</pre></div>\\\"}','bf2ee8ca0afb9a9b189d6c919aebbc52','2024-05-15 06:36:10','2025-04-23 11:10:03'),\n(299,'',302,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/unrelate_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d6\\\\u6d88\\\\u5173\\\\u8054\\\\u9879\\\\u76ee\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| unrelate_project_list | str | \\\\u662f | \\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/unrelate_project/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d6\\\\u6d88\\\\u5173\\\\u8054\\\\u9879\\\\u76ee\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| app_name | str | \\\\u662f | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| unrelate_project_list | str | \\\\u662f | \\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/unrelate_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d6\\\\u6d88\\\\u5173\\\\u8054\\\\u9879\\\\u76ee</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>unrelate_project_list</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/unrelate_project/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d6\\\\u6d88\\\\u5173\\\\u8054\\\\u9879\\\\u76ee</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>app_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>unrelate_project_list</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u8fdb\\\\u884c\\\\u5173\\\\u8054\\\\u7684\\\\u9879\\\\u76ee</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n</pre></div>\\\"}','a16c55d1a31c797187fc3c957a6063a9','2024-05-15 06:36:10','2025-04-23 11:10:03'),\n(300,'',303,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_rules_query_syntax_check/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u544a\\\\u8b66\\\\u89c4\\\\u5219\\\\u8bed\\\\u6cd5\\\\u89c4\\\\u5219\\\\u68c0\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| query | string | \\\\u662f  | \\\\u8868\\\\u8fbe\\\\u5f0f |\\\\n| params | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"file_name\\\\\\\": \\\\\\\"xxx-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_rules_query_syntax_check/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nProm\\\\u544a\\\\u8b66\\\\u89c4\\\\u5219\\\\u8bed\\\\u6cd5\\\\u89c4\\\\u5219\\\\u68c0\\\\u6d4b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| query | string | \\\\u662f  | \\\\u8868\\\\u8fbe\\\\u5f0f |\\\\n| params | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"file_name\\\\\\\": \\\\\\\"xxx-rules.yml\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_rules_query_syntax_check/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u544a\\\\u8b66\\\\u89c4\\\\u5219\\\\u8bed\\\\u6cd5\\\\u89c4\\\\u5219\\\\u68c0\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>query</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8868\\\\u8fbe\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_rules_query_syntax_check/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Prom\\\\u544a\\\\u8b66\\\\u89c4\\\\u5219\\\\u8bed\\\\u6cd5\\\\u89c4\\\\u5219\\\\u68c0\\\\u6d4b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>query</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8868\\\\u8fbe\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;file_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-rules.yml&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','103b729ae0850ce5ffdd9a0acdfbad9e','2024-05-16 06:16:13','2025-04-23 11:10:03'),\n(301,'',304,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/gitlab_repository_url/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u81ea\\\\u5df1\\\\u53c2\\\\u4e0e\\\\u7684\\\\u9879\\\\u76ee\\\\u4e14\\\\u6210\\\\u5458\\\\u89d2\\\\u8272\\\\u5927\\\\u4e8e\\\\u5f00\\\\u53d1\\\\u8005\\\\u7684\\\\u9879\\\\u76ee\\\\u5730\\\\u5740\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"project_id\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"project_name\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"describe\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\",\\\\n            \\\\\\\"ssh_clone\\\\\\\": \\\\\\\"xxxxxxxxxxx\\\\\\\",\\\\n            \\\\\\\"http_clone\\\\\\\": \\\\\\\"xxxxxxxxxxxx\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"project_id\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"project_name\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"describe\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"ssh_clone\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\",\\\\n            \\\\\\\"http_clone\\\\\\\": \\\\\\\"xxxxxxxx\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/code/gitlab_repository_url/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u81ea\\\\u5df1\\\\u53c2\\\\u4e0e\\\\u7684\\\\u9879\\\\u76ee\\\\u4e14\\\\u6210\\\\u5458\\\\u89d2\\\\u8272\\\\u5927\\\\u4e8e\\\\u5f00\\\\u53d1\\\\u8005\\\\u7684\\\\u9879\\\\u76ee\\\\u5730\\\\u5740\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"project_id\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"project_name\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"describe\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\",\\\\n            \\\\\\\"ssh_clone\\\\\\\": \\\\\\\"xxxxxxxxxxx\\\\\\\",\\\\n            \\\\\\\"http_clone\\\\\\\": \\\\\\\"xxxxxxxxxxxx\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"project_id\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"project_name\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n            \\\\\\\"describe\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"ssh_clone\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\",\\\\n            \\\\\\\"http_clone\\\\\\\": \\\\\\\"xxxxxxxx\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/gitlab_repository_url/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u81ea\\\\u5df1\\\\u53c2\\\\u4e0e\\\\u7684\\\\u9879\\\\u76ee\\\\u4e14\\\\u6210\\\\u5458\\\\u89d2\\\\u8272\\\\u5927\\\\u4e8e\\\\u5f00\\\\u53d1\\\\u8005\\\\u7684\\\\u9879\\\\u76ee\\\\u5730\\\\u5740\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;http_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;http_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/code/gitlab_repository_url/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u81ea\\\\u5df1\\\\u53c2\\\\u4e0e\\\\u7684\\\\u9879\\\\u76ee\\\\u4e14\\\\u6210\\\\u5458\\\\u89d2\\\\u8272\\\\u5927\\\\u4e8e\\\\u5f00\\\\u53d1\\\\u8005\\\\u7684\\\\u9879\\\\u76ee\\\\u5730\\\\u5740\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;http_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;project_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;describe&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ssh_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;http_clone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','98102e1f4f1a5d53f99ec76750b8d8d6','2024-05-28 03:36:38','2025-04-23 11:10:03'),\n(302,'',305,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_config_reload/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u52a0\\\\u8f7dAlertmanager\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| params | list | \\\\u662f    | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_config_reload/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u52a0\\\\u8f7dAlertmanager\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| params | list | \\\\u662f    | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_config_reload/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u52a0\\\\u8f7dAlertmanager\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_config_reload/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u52a0\\\\u8f7dAlertmanager\\\\u914d\\\\u7f6e\\\\u6587\\\\u4ef6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','df5af35ad68776ad7c10649019138de0','2024-05-30 03:23:15','2025-04-23 11:10:03'),\n(303,'',306,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_create_or_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0alertmanager\\\\u914d\\\\u7f6e-\\\\u901a\\\\u77e5\\\\u7b56\\\\u7565\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| yml_str | string | \\\\u662f  | \\\\u89c4\\\\u5219 |\\\\n| yaml_dict | dict | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"yaml_dict\\\\\\\": {},\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_create_or_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0alertmanager\\\\u914d\\\\u7f6e-\\\\u901a\\\\u77e5\\\\u7b56\\\\u7565\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| yml_str | string | \\\\u662f  | \\\\u89c4\\\\u5219 |\\\\n| yaml_dict | dict | \\\\u662f  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n| params | string | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"yaml_dict\\\\\\\": {},\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  {\\\\n        \\'file_name\\': \\'1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\',\\\\n        \\'file_url\\': \\'/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\\'}\\\\n}\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_create_or_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0alertmanager\\\\u914d\\\\u7f6e-\\\\u901a\\\\u77e5\\\\u7b56\\\\u7565</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yml_str</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u89c4\\\\u5219</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yaml_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yaml_dict&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_create_or_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0alertmanager\\\\u914d\\\\u7f6e-\\\\u901a\\\\u77e5\\\\u7b56\\\\u7565</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yml_str</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u89c4\\\\u5219</td>\\\\n</tr>\\\\n<tr>\\\\n<td>yaml_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yaml_dict&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;file_url&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml&#39;</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fd9fde7b84c6c2f0232e954ef3367119','2024-05-30 03:26:07','2025-04-23 11:10:03'),\n(304,'',307,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/business_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5e94\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5   |  \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0            |\\\\n| ----- | ------ | ---- | -------- |\\\\n| type | str | \\\\u5426 | \\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u7684\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"code\\\\\\\": 1,\\\\n            \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec4\\\\\\\",\\\\n            \\\\\\\"type\\\\\\\": \\\\\\\"BUSINESS\\\\\\\",\\\\n            \\\\\\\"children\\\\\\\": [\\\\n                {\\\\n                    \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n                    \\\\\\\"type\\\\\\\": \\\\\\\"APPLICATION\\\\\\\"\\\\n                },\\\\n                {\\\\n                    \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n                    \\\\\\\"type\\\\\\\": \\\\\\\"APPLICATION\\\\\\\"\\\\n                }\\\\n            ]\\\\n        },\\\\n        {\\\\n            \\\\\\\"code\\\\\\\": 2,\\\\n            \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n            \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec42\\\\\\\",\\\\n            \\\\\\\"type\\\\\\\": \\\\\\\"BUSINESS\\\\\\\",\\\\n            \\\\\\\"children\\\\\\\": [\\\\n                {\\\\n                    \\\\\\\"name\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n                    \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\",\\\\n                    \\\\\\\"type\\\\\\\": \\\\\\\"APPLICATION\\\\\\\"\\\\n                }\\\\n            ]\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/business_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5e94\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5   |  \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0            |\\\\n| ----- | ------ | ---- | -------- |\\\\n| type | str | \\\\u5426 | \\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u7684\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"code\\\\\\\": 1,\\\\n            \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec4\\\\\\\",\\\\n            \\\\\\\"type\\\\\\\": \\\\\\\"BUSINESS\\\\\\\",\\\\n            \\\\\\\"children\\\\\\\": [\\\\n                {\\\\n                    \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n                    \\\\\\\"type\\\\\\\": \\\\\\\"APPLICATION\\\\\\\"\\\\n                },\\\\n                {\\\\n                    \\\\\\\"name\\\\\\\": \\\\\\\"OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n                    \\\\\\\"type\\\\\\\": \\\\\\\"APPLICATION\\\\\\\"\\\\n                }\\\\n            ]\\\\n        },\\\\n        {\\\\n            \\\\\\\"code\\\\\\\": 2,\\\\n            \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n            \\\\\\\"name\\\\\\\": \\\\\\\"\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec42\\\\\\\",\\\\n            \\\\\\\"type\\\\\\\": \\\\\\\"BUSINESS\\\\\\\",\\\\n            \\\\\\\"children\\\\\\\": [\\\\n                {\\\\n                    \\\\\\\"name\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n                    \\\\\\\"unique_code\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\",\\\\n                    \\\\\\\"type\\\\\\\": \\\\\\\"APPLICATION\\\\\\\"\\\\n                }\\\\n            ]\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/business_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5e94\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h3>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u7684\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec4&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec42&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/business_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5e94\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h3>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u6570\\\\u636e\\\\u7684\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec4&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5e94\\\\u7528\\\\u5206\\\\u7ec42&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;unique_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f7bf3d9e24fa96f59de261df989ef307','2024-05-31 07:58:12','2025-04-23 11:10:03'),\n(305,'',308,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/application_user_role/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"application\\\\\\\": \\\\\\\"\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528\\\\\\\",\\\\n            \\\\\\\"user_info\\\\\\\": \\\\\\\"xxxx\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"application\\\\\\\": \\\\\\\"OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n            \\\\\\\"user_info\\\\\\\": \\\\\\\"xxxxx\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"application\\\\\\\": \\\\\\\"OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n            \\\\\\\"user_info\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/application_user_role/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            \\\\\\\"application\\\\\\\": \\\\\\\"\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528\\\\\\\",\\\\n            \\\\\\\"user_info\\\\\\\": \\\\\\\"xxxx\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"application\\\\\\\": \\\\\\\"OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n            \\\\\\\"user_info\\\\\\\": \\\\\\\"xxxxx\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"application\\\\\\\": \\\\\\\"OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0\\\\\\\",\\\\n            \\\\\\\"user_info\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/application_user_role/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;user_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;user_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;user_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/application_user_role/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;successcode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u6d4b\\\\u8bd5\\\\u5e94\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;user_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u4e00\\\\u4f53\\\\u5316\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;user_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;application&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;OpsAny\\\\u667a\\\\u80fd\\\\u8fd0\\\\u7ef4\\\\u5e73\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;user_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','89c891fc1d1d2019264517d7cbf1864b','2024-05-31 07:58:12','2025-04-23 11:10:03'),\n(306,'',309,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_robot_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7fa4\\\\u673a\\\\u5668\\\\u4eba\\\\u5217\\\\u8868\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_robot_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7fa4\\\\u673a\\\\u5668\\\\u4eba\\\\u5217\\\\u8868\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_robot_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7fa4\\\\u673a\\\\u5668\\\\u4eba\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_robot_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7fa4\\\\u673a\\\\u5668\\\\u4eba\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','30661954c0491fc0ee131d73537179d6','2024-06-07 03:22:04','2025-04-23 11:10:03'),\n(307,'',310,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/send_robot/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u53d1\\\\u9001\\\\u4f01\\\\u5fae\\\\u9489\\\\u9489\\\\u7fa4\\\\u544a\\\\u8b66\\\\u901a\\\\u77e5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | robot_type | str | \\\\u662f  | \\\\u7fa4\\\\u7c7b\\\\u578b qw dd |\\\\n    | temp_id | int | \\\\u662f  | \\\\u6a21\\\\u677fID |\\\\n    | parameter | str | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n    | robot_list | str | \\\\u662f  | \\\\u7fa4\\\\u6807\\\\u8bc6 |\\\\n    | alert_info | str | \\\\u662f  | \\\\u544a\\\\u8b66\\\\u5bf9\\\\u8c61 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/send_robot/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u53d1\\\\u9001\\\\u4f01\\\\u5fae\\\\u9489\\\\u9489\\\\u7fa4\\\\u544a\\\\u8b66\\\\u901a\\\\u77e5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | robot_type | str | \\\\u662f  | \\\\u7fa4\\\\u7c7b\\\\u578b qw dd |\\\\n    | temp_id | int | \\\\u662f  | \\\\u6a21\\\\u677fID |\\\\n    | parameter | str | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n    | robot_list | str | \\\\u662f  | \\\\u7fa4\\\\u6807\\\\u8bc6 |\\\\n    | alert_info | str | \\\\u662f  | \\\\u544a\\\\u8b66\\\\u5bf9\\\\u8c61 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/send_robot/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u53d1\\\\u9001\\\\u4f01\\\\u5fae\\\\u9489\\\\u9489\\\\u7fa4\\\\u544a\\\\u8b66\\\\u901a\\\\u77e5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| robot_type | str | \\\\u662f  | \\\\u7fa4\\\\u7c7b\\\\u578b qw dd |\\\\n| temp_id | int | \\\\u662f  | \\\\u6a21\\\\u677fID |\\\\n| parameter | str | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n| robot_list | str | \\\\u662f  | \\\\u7fa4\\\\u6807\\\\u8bc6 |\\\\n| alert_info | str | \\\\u662f  | \\\\u544a\\\\u8b66\\\\u5bf9\\\\u8c61 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/send_robot/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u53d1\\\\u9001\\\\u4f01\\\\u5fae\\\\u9489\\\\u9489\\\\u7fa4\\\\u544a\\\\u8b66\\\\u901a\\\\u77e5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| robot_type | str | \\\\u662f  | \\\\u7fa4\\\\u7c7b\\\\u578b qw dd |\\\\n| temp_id | int | \\\\u662f  | \\\\u6a21\\\\u677fID |\\\\n| parameter | str | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n| robot_list | str | \\\\u662f  | \\\\u7fa4\\\\u6807\\\\u8bc6 |\\\\n| alert_info | str | \\\\u662f  | \\\\u544a\\\\u8b66\\\\u5bf9\\\\u8c61 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','08c0341485a7dca59e8356960283ee4a','2024-06-07 08:07:05','2025-04-23 11:10:03'),\n(308,'',311,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_create_alert/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nAlertmanager\\\\u521b\\\\u5efa\\\\u544a\\\\u8b66\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| alerts | list(json) | \\\\u662f    | \\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_create_alert/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nAlertmanager\\\\u521b\\\\u5efa\\\\u544a\\\\u8b66\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| alerts | list(json) | \\\\u662f    | \\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_create_alert/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Alertmanager\\\\u521b\\\\u5efa\\\\u544a\\\\u8b66</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>alerts</td>\\\\n<td>list(json)</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_create_alert/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Alertmanager\\\\u521b\\\\u5efa\\\\u544a\\\\u8b66</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>alerts</td>\\\\n<td>list(json)</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0bec0a2a46b6bae7021cfa2f20a5398a','2024-06-11 07:41:50','2025-04-23 11:10:03'),\n(309,'',312,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868(\\\\u6a21\\\\u62df\\\\u544a\\\\u8b66\\\\u4f7f\\\\u7528)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868(\\\\u6a21\\\\u62df\\\\u544a\\\\u8b66\\\\u4f7f\\\\u7528)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868(\\\\u6a21\\\\u62df\\\\u544a\\\\u8b66\\\\u4f7f\\\\u7528)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868(\\\\u6a21\\\\u62df\\\\u544a\\\\u8b66\\\\u4f7f\\\\u7528)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','63e20985af6fa3ff7da1e475bd61444c','2024-06-12 12:14:08','2025-04-23 11:10:03'),\n(310,'',313,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alertmanager_alerts/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f    |  prom ID |\\\\n| params | dict(json) | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alertmanager_alerts/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f    |  prom ID |\\\\n| params | dict(json) | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alertmanager_alerts/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict(json)</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alertmanager_alerts/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict(json)</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','737a22e485263d4c696d57fb4b017677','2024-06-12 12:14:08','2025-04-23 11:10:03'),\n(311,'',314,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alertmanager_alerts_groups/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f    |  prom ID |\\\\n| params | dict(json) | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alertmanager_alerts_groups/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f    |  prom ID |\\\\n| params | dict(json) | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alertmanager_alerts_groups/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict(json)</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alertmanager_alerts_groups/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\u7ec4\\\\u5217\\\\u8868(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict(json)</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','916330dd6d91b4ca8f09ae883ef83d27','2024-06-12 12:14:08','2025-04-23 11:10:03'),\n(312,'',315,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_create_or_update_silence/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efa\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| silence_dict | dict | \\\\u662f  | \\\\u9759\\\\u9ed8\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"yaml_dict\\\\\\\": {},\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_create_or_update_silence/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efa\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| silence_dict | dict | \\\\u662f  | \\\\u9759\\\\u9ed8\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"yml_str\\\\\\\": \\\\\\\"group ...\\\\\\\",\\\\n    \\\\\\\"yaml_dict\\\\\\\": {},\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_create_or_update_silence/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efa\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>silence_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9759\\\\u9ed8\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yaml_dict&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_create_or_update_silence/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efa\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>silence_dict</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9759\\\\u9ed8\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yml_str&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;group ...&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;yaml_dict&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','aa56a4eb64fe6ecf10165b99bd5b4335','2024-06-13 08:31:35','2025-04-23 11:10:03'),\n(313,'',317,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alertmanager_silence/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f    |  prom ID |\\\\n| silence_id | dict | \\\\u5426  | ID |\\\\n| params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_prom_alertmanager_silence/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0  |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f    |  prom ID |\\\\n| silence_id | dict | \\\\u5426  | ID |\\\\n| params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alertmanager_silence/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>silence_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_prom_alertmanager_silence/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>silence_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a0b3da1a598e693e5e8be47337e5b3a7','2024-06-13 08:31:35','2025-04-23 11:10:03'),\n(314,'',316,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_delete_silence/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| silence_id | dict | \\\\u662f  | ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"silence_id\\\\\\\": \\\\\\\"aa\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  \\\\\\\"\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_alertmanager_delete_silence/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5220\\\\u9664\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | int | \\\\u662f  | Prom\\\\u5b9e\\\\u4f8b |\\\\n| silence_id | dict | \\\\u662f  | ID |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"prom_id\\\\\\\": 1,\\\\n    \\\\\\\"silence_id\\\\\\\": \\\\\\\"aa\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  \\\\\\\"\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_delete_silence/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>silence_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;silence_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;aa&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_alertmanager_delete_silence/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5220\\\\u9664\\\\u9759\\\\u9ed8\\\\u89c4\\\\u5219(alertmanager)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>Prom\\\\u5b9e\\\\u4f8b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>silence_id</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;prom_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;silence_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;aa&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e7b5fa99f4868778dcda539d17e592be','2024-06-13 08:33:41','2025-04-23 11:10:03'),\n(315,'',318,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/data_for_screen/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/data_for_screen/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5927\\\\u5c4f\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6a21de971bff55b22efcdc5a197a9448','2024-06-20 09:02:51','2025-04-23 11:10:03'),\n(316,'',319,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','45056594a6cfec35fd3c2c7373f8f698','2024-06-20 09:02:51','2026-03-05 12:24:50'),\n(317,'',320,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_task_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| task_id     | int    |  \\\\u662f  | \\\\u4efb\\\\u52a1ID   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"task_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_task_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| task_id     | int    |  \\\\u662f  | \\\\u4efb\\\\u52a1ID   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"task_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_task_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;task_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_task_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;task_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','72659cc69595b65dbb2ceb2e2fd7a567','2024-06-20 09:02:51','2026-03-05 12:20:24'),\n(318,'',321,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','fed711a6cfbcac2791a02d82ed1d6f87','2024-06-20 09:02:51','2025-04-23 11:10:03'),\n(319,'',323,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/run_deploy_task_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| deploy_name | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0 |\\\\n| run_parameter_list | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/run_deploy_task_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| deploy_name | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0 |\\\\n| run_parameter_list | string | \\\\u662f  | \\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/run_deploy_task_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>deploy_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/run_deploy_task_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>deploy_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_parameter_list</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d4385ab13e78e65c3ded4e9c18e1a9de','2024-07-01 02:49:50','2025-04-23 11:10:03'),\n(320,'',325,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/run_pipeline_task_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| parameters | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"application_name\\\\\\\": \\\\\\\"opsany\\\\\\\",\\\\n    \\\\\\\"job_name\\\\\\\": \\\\\\\"job_name\\\\\\\",\\\\n    \\\\\\\"req_source\\\\\\\": \\\\\\\"API\\\\u8c03\\\\u7528\\\\\\\",\\\\n    \\\\\\\"app_from\\\\\\\": \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/run_pipeline_task_v3/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| application_name | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| job_name | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0 |\\\\n| parameters | string | \\\\u662f  | \\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570 |\\\\n| req_source | string | \\\\u662f  |\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f |\\\\n| app_from | string | \\\\u662f  | \\\\u8c03\\\\u7528\\\\u5e94\\\\u7528 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"application_name\\\\\\\": \\\\\\\"opsany\\\\\\\",\\\\n    \\\\\\\"job_name\\\\\\\": \\\\\\\"job_name\\\\\\\",\\\\n    \\\\\\\"req_source\\\\\\\": \\\\\\\"API\\\\u8c03\\\\u7528\\\\\\\",\\\\n    \\\\\\\"app_from\\\\\\\": \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/run_pipeline_task_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;application_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;req_source&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;API\\\\u8c03\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;app_from&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/run_pipeline_task_v3/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>application_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameters</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>req_source</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6267\\\\u884c\\\\u65b9\\\\u5f0f</td>\\\\n</tr>\\\\n<tr>\\\\n<td>app_from</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8c03\\\\u7528\\\\u5e94\\\\u7528</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;application_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;req_source&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;API\\\\u8c03\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;app_from&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0e78056e441e1324e3be546ba8d5f145','2024-07-01 02:49:50','2025-04-23 11:10:03'),\n(321,'',324,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/run_pipeline_task_rollback/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| queue_num | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| params | string | \\\\u662f  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"application_name\\\\\\\": \\\\\\\"opsany\\\\\\\",\\\\n    \\\\\\\"job_name\\\\\\\": \\\\\\\"job_name\\\\\\\",\\\\n    \\\\\\\"req_source\\\\\\\": \\\\\\\"API\\\\u8c03\\\\u7528\\\\\\\",\\\\n    \\\\\\\"app_from\\\\\\\": \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/pipeline/run_pipeline_task_rollback/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| queue_num | string | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| params | string | \\\\u662f  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"application_name\\\\\\\": \\\\\\\"opsany\\\\\\\",\\\\n    \\\\\\\"job_name\\\\\\\": \\\\\\\"job_name\\\\\\\",\\\\n    \\\\\\\"req_source\\\\\\\": \\\\\\\"API\\\\u8c03\\\\u7528\\\\\\\",\\\\n    \\\\\\\"app_from\\\\\\\": \\\\\\\"workbench\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/run_pipeline_task_rollback/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>queue_num</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;application_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;req_source&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;API\\\\u8c03\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;app_from&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/pipeline/run_pipeline_task_rollback/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6d41\\\\u6c34\\\\u7ebf\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>queue_num</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;application_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;opsany&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;job_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;req_source&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;API\\\\u8c03\\\\u7528&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;app_from&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4ddc98a5139587f3cad48a77424d4edc','2024-07-01 02:54:19','2025-04-23 11:10:03'),\n(322,'',322,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/run_deploy_task_rollback/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| log_id | string | \\\\u662f  | \\\\u65e5\\\\u5fd7ID |\\\\n| params | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"log_id\\\\\\\": \\\\\\\"log_id\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/run_deploy_task_rollback/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| log_id | string | \\\\u662f  | \\\\u65e5\\\\u5fd7ID |\\\\n| params | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"log_id\\\\\\\": \\\\\\\"log_id\\\\\\\",\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"xxxxxxx\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/run_deploy_task_rollback/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>log_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u65e5\\\\u5fd7ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;log_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;log_id&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/run_deploy_task_rollback/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6267\\\\u884c\\\\u6301\\\\u7eed\\\\u90e8\\\\u7f72\\\\u4efb\\\\u52a1\\\\u56de\\\\u8c03</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>log_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u65e5\\\\u5fd7ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;log_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;log_id&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxx&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','da84153cd077a24445c77defcdb7df99','2024-07-01 02:55:58','2025-04-23 11:10:03'),\n(323,'',326,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_get/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| page        | int | \\\\u5426    | \\\\u9875\\\\u7801 |\\\\n| per_page    | int | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n| search_type | string | \\\\u5426    | \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5,\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 SERVER_name: \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5; all\\\\uff1a\\\\u81ea\\\\u52a8\\\\u8bc6\\\\u522b; SERVER_name,SERVER_VISIBLE_NAME: \\\\u591a\\\\u5b57\\\\u6bb5\\\\u4f7f\\\\u7528 , \\\\u9694\\\\u5f00 |\\\\n| search_data | string | \\\\u5426    | \\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| find_fields | string | \\\\u5426    | | \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5,\\\\u7cbe\\\\u51c6\\\\u641c\\\\u7d22 SERVER_name: \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5; all\\\\uff1a\\\\u81ea\\\\u52a8\\\\u8bc6\\\\u522b; SERVER_name,SERVER_VISIBLE_NAME: \\\\u591a\\\\u5b57\\\\u6bb5\\\\u4f7f\\\\u7528 , \\\\u9694\\\\u5f00 | |\\\\n| find_value | string | \\\\u5426    | \\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| code        | int | \\\\u5426    | \\\\u83b7\\\\u53d6\\\\u5355\\\\u6761 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_get/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| page        | int | \\\\u5426    | \\\\u9875\\\\u7801 |\\\\n| per_page    | int | \\\\u5426    | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n| search_type | string | \\\\u5426    | \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5,\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 SERVER_name: \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5; all\\\\uff1a\\\\u81ea\\\\u52a8\\\\u8bc6\\\\u522b; SERVER_name,SERVER_VISIBLE_NAME: \\\\u591a\\\\u5b57\\\\u6bb5\\\\u4f7f\\\\u7528 , \\\\u9694\\\\u5f00 |\\\\n| search_data | string | \\\\u5426    | \\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| find_fields | string | \\\\u5426    | | \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5,\\\\u7cbe\\\\u51c6\\\\u641c\\\\u7d22 SERVER_name: \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5; all\\\\uff1a\\\\u81ea\\\\u52a8\\\\u8bc6\\\\u522b; SERVER_name,SERVER_VISIBLE_NAME: \\\\u591a\\\\u5b57\\\\u6bb5\\\\u4f7f\\\\u7528 , \\\\u9694\\\\u5f00 | |\\\\n| find_value | string | \\\\u5426    | \\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9 |\\\\n| code        | int | \\\\u5426    | \\\\u83b7\\\\u53d6\\\\u5355\\\\u6761 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_get/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>per_page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5,\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 SERVER_name: \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5; all\\\\uff1a\\\\u81ea\\\\u52a8\\\\u8bc6\\\\u522b; SERVER_name,SERVER_VISIBLE_NAME: \\\\u591a\\\\u5b57\\\\u6bb5\\\\u4f7f\\\\u7528 , \\\\u9694\\\\u5f00</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>find_fields</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>find_value</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u5355\\\\u6761</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_get/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u6a21\\\\u578b\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>per_page</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5,\\\\u6a21\\\\u7cca\\\\u641c\\\\u7d22 SERVER_name: \\\\u6307\\\\u5b9a\\\\u5b57\\\\u6bb5; all\\\\uff1a\\\\u81ea\\\\u52a8\\\\u8bc6\\\\u522b; SERVER_name,SERVER_VISIBLE_NAME: \\\\u591a\\\\u5b57\\\\u6bb5\\\\u4f7f\\\\u7528 , \\\\u9694\\\\u5f00</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>find_fields</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td></td>\\\\n</tr>\\\\n<tr>\\\\n<td>find_value</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u5355\\\\u6761</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e928a83eaebafd52aff9b8c233a7cf5e','2024-07-09 03:46:20','2025-04-23 11:10:03'),\n(324,'',327,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_create/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u65b0\\\\u5efa\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| data        | dict | \\\\u5426    | \\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'username\\': \\'huxingqi\\',\\\\n    \\'data\\': {\\\\n        \\'SERVER_name\\': \\'www.xxxxxxxxx.com\\',\\\\n        \\'SERVER_VISIBLE_NAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_create/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u65b0\\\\u5efa\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| data        | dict | \\\\u5426    | \\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'username\\': \\'huxingqi\\',\\\\n    \\'data\\': {\\\\n        \\'SERVER_name\\': \\'www.xxxxxxxxx.com\\',\\\\n        \\'SERVER_VISIBLE_NAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_create/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u65b0\\\\u5efa\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;username&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;huxingqi&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_create/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u65b0\\\\u5efa\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;username&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;huxingqi&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a39f06ac93de5c2baf3beaa34bbb5594','2024-07-09 03:46:20','2025-04-23 11:10:03'),\n(325,'',328,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u4fee\\\\u6539\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| code    | string | \\\\u662f    | \\\\u4fee\\\\u6539\\\\u6570\\\\u636e\\\\u7684ID|\\\\n| data        | dict | \\\\u5426    | \\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'username\\': \\'huxingqi\\',\\\\n    \\'data\\': {\\\\n        \\'SERVER_name\\': \\'www.xxxxxxxxx.com\\',\\\\n        \\'SERVER_VISIBLE_NAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_update/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u4fee\\\\u6539\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| code    | string | \\\\u662f    | \\\\u4fee\\\\u6539\\\\u6570\\\\u636e\\\\u7684ID|\\\\n| data        | dict | \\\\u5426    | \\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'username\\': \\'huxingqi\\',\\\\n    \\'data\\': {\\\\n        \\'SERVER_name\\': \\'www.xxxxxxxxx.com\\',\\\\n        \\'SERVER_VISIBLE_NAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u4fee\\\\u6539\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fee\\\\u6539\\\\u6570\\\\u636e\\\\u7684ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;username&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;huxingqi&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_update/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u4fee\\\\u6539\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fee\\\\u6539\\\\u6570\\\\u636e\\\\u7684ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u65b0\\\\u5efa\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;username&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;huxingqi&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','709d97d544bcaead1953f5d4a66a8246','2024-07-09 03:46:20','2025-04-23 11:10:03'),\n(326,'',329,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u5220\\\\u9664\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| code        | dict | \\\\u5426    | \\\\u5355\\\\u6761ID |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'username\\': \\'huxingqi\\',\\\\n    \\'data\\': {\\\\n        \\'SERVER_name\\': \\'www.xxxxxxxxx.com\\',\\\\n        \\'SERVER_VISIBLE_NAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/model_data_delete/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u5220\\\\u9664\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code  | string | \\\\u662f    | \\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| username    | string | \\\\u662f    | \\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09 |\\\\n| code        | dict | \\\\u5426    | \\\\u5355\\\\u6761ID |\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'username\\': \\'huxingqi\\',\\\\n    \\'data\\': {\\\\n        \\'SERVER_name\\': \\'www.xxxxxxxxx.com\\',\\\\n        \\'SERVER_VISIBLE_NAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u5220\\\\u9664\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5355\\\\u6761ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;username&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;huxingqi&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/model_data_delete/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u8d44\\\\u6e90\\\\u4ed3\\\\u5e93\\\\u5220\\\\u9664\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6a21\\\\u578b\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u83b7\\\\u53d6\\\\u4eba\\\\u7528\\\\u6237\\\\u540d\\\\uff08\\\\u6839\\\\u636e\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u6388\\\\u6743\\\\u6570\\\\u636e\\\\u83b7\\\\u53d6\\\\uff09</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5355\\\\u6761ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;username&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;huxingqi&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;SERVER_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','f87c9b8316b26c73e0ea25d88a08bf54','2024-07-09 03:46:20','2025-04-23 11:10:03'),\n(327,'',330,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_link_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u5173\\\\u7cfb\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| unique | str | \\\\u5426   | \\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| depth | int | \\\\u5426   | \\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\u6811\\\\u6df1\\\\u5ea6 |\\\\n| hide_null_relation | bool | \\\\u5426   | \\\\u9690\\\\u85cf\\\\u7a7a\\\\u8fde\\\\u63a5 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_link_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u5173\\\\u7cfb\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n| unique | str | \\\\u5426   | \\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| depth | int | \\\\u5426   | \\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\u6811\\\\u6df1\\\\u5ea6 |\\\\n| hide_null_relation | bool | \\\\u5426   | \\\\u9690\\\\u85cf\\\\u7a7a\\\\u8fde\\\\u63a5 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_link_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u5173\\\\u7cfb\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>unique</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>depth</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\u6811\\\\u6df1\\\\u5ea6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>hide_null_relation</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9690\\\\u85cf\\\\u7a7a\\\\u8fde\\\\u63a5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_link_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u5173\\\\u8054\\\\u5173\\\\u7cfb\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n<tr>\\\\n<td>unique</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>depth</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fde\\\\u63a5\\\\u5173\\\\u7cfb\\\\u6811\\\\u6df1\\\\u5ea6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>hide_null_relation</td>\\\\n<td>bool</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9690\\\\u85cf\\\\u7a7a\\\\u8fde\\\\u63a5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','046c688ca556a5d98a877b0b60b71730','2024-08-13 12:05:33','2025-04-23 11:10:03'),\n(328,'',331,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/keep_strategy_bastion/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u5821\\\\u5792\\\\u673a\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_session_log | dict | \\\\u5426  | \\\\u4f1a\\\\u8bdd\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_command_log | dict | \\\\u5426  | \\\\u547d\\\\u4ee4\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/bastion/keep_strategy_bastion/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u5821\\\\u5792\\\\u673a\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_session_log | dict | \\\\u5426  | \\\\u4f1a\\\\u8bdd\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_command_log | dict | \\\\u5426  | \\\\u547d\\\\u4ee4\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/keep_strategy_bastion/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u5821\\\\u5792\\\\u673a\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_session_log | dict | \\\\u5426  | \\\\u4f1a\\\\u8bdd\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_command_log | dict | \\\\u5426  | \\\\u547d\\\\u4ee4\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/bastion/keep_strategy_bastion/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u5821\\\\u5792\\\\u673a\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_session_log | dict | \\\\u5426  | \\\\u4f1a\\\\u8bdd\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_command_log | dict | \\\\u5426  | \\\\u547d\\\\u4ee4\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\"}','eaf2fde0cf0ce275a407e59fc3a04744','2024-08-31 08:16:20','2025-04-23 11:10:03'),\n(329,'',332,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/keep_strategy_cmdb/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_operation_audit | dict | \\\\u5426  | \\\\u6a21\\\\u578b\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/keep_strategy_cmdb/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_operation_audit | dict | \\\\u5426  | \\\\u6a21\\\\u578b\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/keep_strategy_cmdb/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_operation_audit | dict | \\\\u5426  | \\\\u6a21\\\\u578b\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/keep_strategy_cmdb/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u8d44\\\\u6e90\\\\u5e73\\\\u53f0\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | strategy_operation_log | dict | \\\\u5426  | \\\\u64cd\\\\u4f5c\\\\u5ba1\\\\u8ba1 |\\\\n   | strategy_operation_audit | dict | \\\\u5426  | \\\\u6a21\\\\u578b\\\\u5ba1\\\\u8ba1 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\"}','76b67d2e58edb54a6d9a178ce1363f24','2024-08-31 09:48:27','2025-04-23 11:10:03'),\n(330,'',333,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_app_service_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u670d\\\\u52a1\\\\u7ec4\\\\u6570\\\\u636e-\\\\u5e94\\\\u7528\\\\u6388\\\\u6743\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"api_code\\\\\\\": 20008,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxxxxxxxx\\\\\\\",\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/get_app_service_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u670d\\\\u52a1\\\\u7ec4\\\\u6570\\\\u636e-\\\\u5e94\\\\u7528\\\\u6388\\\\u6743\\\\u4f7f\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u662f | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"successcode\\\\\\\": 20002,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"api_code\\\\\\\": 20008,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxxxxxxxx\\\\\\\",\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_app_service_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u670d\\\\u52a1\\\\u7ec4\\\\u6570\\\\u636e-\\\\u5e94\\\\u7528\\\\u6388\\\\u6743\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 200,\\\\n        &quot;api_code&quot;: 20008,\\\\n        &quot;result&quot;: true,\\\\n        &quot;request_id&quot;: &quot;xxxxxxxxxxxxxxxxxxxxxx&quot;,\\\\n        &quot;message&quot;: &quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;,\\\\n        &quot;data&quot;: [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/get_app_service_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5e94\\\\u7528\\\\u7ed1\\\\u5b9a\\\\u7684\\\\u670d\\\\u52a1\\\\u7ec4\\\\u6570\\\\u636e-\\\\u5e94\\\\u7528\\\\u6388\\\\u6743\\\\u4f7f\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;successcode&quot;: 20002,\\\\n    &quot;message&quot;: &quot;\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: {\\\\n        &quot;code&quot;: 200,\\\\n        &quot;api_code&quot;: 20008,\\\\n        &quot;result&quot;: true,\\\\n        &quot;request_id&quot;: &quot;xxxxxxxxxxxxxxxxxxxxxx&quot;,\\\\n        &quot;message&quot;: &quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;,\\\\n        &quot;data&quot;: [\\\\n            {\\\\n                ...\\\\n            },\\\\n            ...\\\\n        ]\\\\n    }\\\\n}\\\\n</pre></div>\\\"}','b2d6deec707f53f0083246a7cded0816','2024-09-27 07:59:41','2025-04-23 11:10:03'),\n(331,'',334,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/event/keep_strategy_event/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u4e8b\\\\u4ef6\\\\u4e2d\\\\u5fc3\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | event_alert_log | dict | \\\\u5426  | \\\\u544a\\\\u8b66 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/event/keep_strategy_event/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u4e8b\\\\u4ef6\\\\u4e2d\\\\u5fc3\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | event_alert_log | dict | \\\\u5426  | \\\\u544a\\\\u8b66 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/event/keep_strategy_event/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u4e8b\\\\u4ef6\\\\u4e2d\\\\u5fc3\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | event_alert_log | dict | \\\\u5426  | \\\\u544a\\\\u8b66 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/event/keep_strategy_event/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u4e8b\\\\u4ef6\\\\u4e2d\\\\u5fc3\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | event_alert_log | dict | \\\\u5426  | \\\\u544a\\\\u8b66 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\"}','dc1f939b6b95afd96a14788dec5a1cc0','2024-10-10 06:33:46','2025-04-23 11:10:03'),\n(332,'',335,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_business_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u683c\\\\u5f0f\\\\u4e1a\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u5426   | BUSINESS,APPLICATION,SERVICE |\\\\n| params | dict | \\\\u5426   | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_business_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u683c\\\\u5f0f\\\\u4e1a\\\\u52a1\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data_type | str | \\\\u5426   | BUSINESS,APPLICATION,SERVICE |\\\\n| params | dict | \\\\u5426   | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_business_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u683c\\\\u5f0f\\\\u4e1a\\\\u52a1\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>BUSINESS,APPLICATION,SERVICE</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_business_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6307\\\\u5b9a\\\\u683c\\\\u5f0f\\\\u4e1a\\\\u52a1\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>BUSINESS,APPLICATION,SERVICE</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\"}','1585b2ea2f9538695e9f9652135100cd','2024-11-20 11:18:47','2025-04-23 11:10:03'),\n(333,'',336,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_monitor_alert_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nZabbbix\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| zabbix_id | str | \\\\u662f    |  prom ID |\\\\n| output | list | \\\\u662f    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| param | list | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_monitor_alert_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nZabbbix\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| zabbix_id | str | \\\\u662f    |  prom ID |\\\\n| output | list | \\\\u662f    | \\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5 |\\\\n| param | list | \\\\u662f    | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_monitor_alert_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Zabbbix\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>zabbix_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>param</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_monitor_alert_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Zabbbix\\\\u83b7\\\\u53d6\\\\u544a\\\\u8b66</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>zabbix_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>output</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8f93\\\\u51fa\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>param</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7ab3618bc17f476624c5ba47d61eba38','2024-12-05 08:55:05','2025-04-23 11:10:03'),\n(334,'',337,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','9cbd235278969cb20804e2136521dbaa','2024-12-09 06:57:09','2025-04-23 11:10:03'),\n(335,'',338,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d4281009379d6b0e16c076aadc196811','2024-12-09 11:33:31','2025-04-23 11:10:03'),\n(336,'',339,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/deploy/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/deploy/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d6e45b88622c8c6ae4cfe108b1642f27','2024-12-10 07:27:18','2025-04-23 11:10:03'),\n(337,'',340,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','55cd0ec88537c9c13f6a0bd994f69ca1','2024-12-10 11:07:39','2025-04-23 11:10:03'),\n(338,'',341,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{  # tab\\\\u4e0e4\\\\u7a7a\\\\u683c\\\\n\\\\t\\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",  # \\\\u4e00\\\\u4e2atab\\\\n\\\\t\\\\t\\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",  # 2\\\\u4e2atab\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/apm/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{  # tab\\\\u4e0e4\\\\u7a7a\\\\u683c\\\\n\\\\t\\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",  # \\\\u4e00\\\\u4e2atab\\\\n\\\\t\\\\t\\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",  # 2\\\\u4e2atab\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>  <span class=\\\\\\\"c1\\\\\\\"># tab\\\\u4e0e4\\\\u7a7a\\\\u683c</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>  <span class=\\\\\\\"c1\\\\\\\"># \\\\u4e00\\\\u4e2atab</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>  <span class=\\\\\\\"c1\\\\\\\"># 2\\\\u4e2atab</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/apm/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>  <span class=\\\\\\\"c1\\\\\\\"># tab\\\\u4e0e4\\\\u7a7a\\\\u683c</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>  <span class=\\\\\\\"c1\\\\\\\"># \\\\u4e00\\\\u4e2atab</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>  <span class=\\\\\\\"c1\\\\\\\"># 2\\\\u4e2atab</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','5a447a133e830c0edb713aaad75b52ab','2024-12-11 12:15:07','2025-04-23 11:10:03'),\n(339,'',342,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','310853f43f2d089e1e2627186145e3da','2024-12-12 04:07:59','2025-04-23 11:10:03'),\n(340,'',343,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/keep_strategy_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | prom_notify_policy_log | Int | \\\\u5426  | \\\\u544a\\\\u8b66\\\\u901a\\\\u77e5 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/keep_strategy_prom/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n   \\\\u914d\\\\u7f6e\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570\\\\n\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n   \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n   #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | prom_notify_policy_log | Int | \\\\u5426  | \\\\u544a\\\\u8b66\\\\u901a\\\\u77e5 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |\\\\n\\\\n   ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n   ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n   ```python\\\\n\\\\t{\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }\\\\n   ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/keep_strategy_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | prom_notify_policy_log | Int | \\\\u5426  | \\\\u544a\\\\u8b66\\\\u901a\\\\u77e5 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/keep_strategy_prom/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u914d\\\\u7f6e\\\\u5e94\\\\u7528\\\\u76d1\\\\u63a7\\\\u5404\\\\u7c7b\\\\u65e5\\\\u5fd7\\\\u4fdd\\\\u7559\\\\u5929\\\\u6570</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</p>\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<p>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n   | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n   | ----- | ------ | ---- | -------- |\\\\n   | data_type | string | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u578b clean message |\\\\n   | prom_notify_policy_log | Int | \\\\u5426  | \\\\u544a\\\\u8b66\\\\u901a\\\\u77e5 |\\\\n   | params | dict | \\\\u5426  | \\\\u53c2\\\\u6570 |</p>\\\\n<p>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</p>\\\\n<p>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</p>\\\\n<p><code>python\\\\n    {\\\\n       \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n       \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n       \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n   }</code></p>\\\"}','48114bea6e11cb08f6db005bc13b4042','2024-12-13 03:39:17','2025-04-23 11:10:03'),\n(341,'',344,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/prom/monitor_to_screen_api/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| username | str | \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d |\\\\n| api | string | \\\\u662f  | \\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3 |\\\\n| params | int | \\\\u5426  | \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"username\\\\\\\":  xx,\\\\n    \\\\\\\"api\\\\\\\":  xx,\\\\n    \\\\\\\"params\\\\\\\": {\\\\n        \\\\\\\"day\\\\\\\": 5\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/prom/monitor_to_screen_api/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7\\\\u5927\\\\u5c4fAPI</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>api</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5927\\\\u5c4f\\\\u63a5\\\\u53e3</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;api&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;params&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;day&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','02518f41f05f236db17e536c3f1d9eaa','2024-12-30 13:18:17','2025-04-23 11:10:03'),\n(342,'',345,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/stackstorm/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u62c9\\\\u53d6StackStorm\\\\u670d\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/stackstorm/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u62c9\\\\u53d6StackStorm\\\\u670d\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/stackstorm/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u62c9\\\\u53d6StackStorm\\\\u670d\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/stackstorm/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u62c9\\\\u53d6StackStorm\\\\u670d\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b9ad96fa991393bcabcfcc5c970bfeff','2025-01-24 08:57:02','2025-04-23 11:10:03'),\n(343,'',346,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_zabbix_server_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_zabbix_server_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_zabbix_server_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_zabbix_server_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b4fa466624e06581894be1e77695894d','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(344,'',347,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_zabbix_template_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n \\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u6a21\\\\u677f(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_zabbix_template_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n \\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u6a21\\\\u677f(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_zabbix_template_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u6a21\\\\u677f(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_zabbix_template_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Zabbix Server\\\\u5b9e\\\\u4f8b\\\\u6a21\\\\u677f(\\\\u57fa\\\\u7840\\\\u76d1\\\\u63a7Zabbix\\\\u6a21\\\\u677f\\\\u4f7f\\\\u7528)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','39f0423c05cc6e93725c993100284c34','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(345,'',348,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/llmops/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/llmops/sync_user_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/llmops/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/llmops/sync_user_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u540c\\\\u6b65\\\\u7528\\\\u6237\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','dd46c334dd78211e1874b6566a285813','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(346,'',349,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_support_cloud_vendor_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u4e91\\\\u5382\\\\u5546\\\\u4ee5\\\\u53ca\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/get_support_cloud_vendor_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u4e91\\\\u5382\\\\u5546\\\\u4ee5\\\\u53ca\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_support_cloud_vendor_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u4e91\\\\u5382\\\\u5546\\\\u4ee5\\\\u53ca\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/get_support_cloud_vendor_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u4e91\\\\u5382\\\\u5546\\\\u4ee5\\\\u53ca\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','231f27b0329250b0565fb473d23708ce','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(347,'',350,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/post_cloud_vendor_resource_parameters/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u6240\\\\u9700\\\\u7684\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | string | \\\\u662f  | \\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/post_cloud_vendor_resource_parameters/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u6240\\\\u9700\\\\u7684\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | string | \\\\u662f  | \\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/post_cloud_vendor_resource_parameters/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u6240\\\\u9700\\\\u7684\\\\u53c2\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/post_cloud_vendor_resource_parameters/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u6240\\\\u9700\\\\u7684\\\\u53c2\\\\u6570</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','851543a413b7d29ebc446a552adc92a3','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(348,'',351,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/post_support_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7533\\\\u8bf7\\\\u4e91\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | string | \\\\u662f  | \\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/post_support_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7533\\\\u8bf7\\\\u4e91\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | string | \\\\u662f  | \\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/post_support_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7533\\\\u8bf7\\\\u4e91\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/post_support_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7533\\\\u8bf7\\\\u4e91\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a445c004bfca51fecf9e9ee3bebadb31','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(349,'',352,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_support_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_support_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_support_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_support_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u652f\\\\u6301\\\\u7533\\\\u8bf7\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','e21d07be1fca82dd6a6c4e08940fe147','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(350,'',353,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_support_resource_fields/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u7684\\\\u5b57\\\\u6bb5\\\\u6216\\\\u76f8\\\\u5173\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_tree | list | \\\\u662f  | \\\\u8981\\\\u83b7\\\\u53d6\\\\u5b57\\\\u6bb5\\\\u7684\\\\u8d44\\\\u6e90\\\\u6811 |\\\\n| dependent_fields | dict | \\\\u662f  | \\\\u8981\\\\u83b7\\\\u53d6\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5\\\\u6570\\\\u636e |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_support_resource_fields/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u7684\\\\u5b57\\\\u6bb5\\\\u6216\\\\u76f8\\\\u5173\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_tree | list | \\\\u662f  | \\\\u8981\\\\u83b7\\\\u53d6\\\\u5b57\\\\u6bb5\\\\u7684\\\\u8d44\\\\u6e90\\\\u6811 |\\\\n| dependent_fields | dict | \\\\u662f  | \\\\u8981\\\\u83b7\\\\u53d6\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5\\\\u6570\\\\u636e |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_support_resource_fields/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u7684\\\\u5b57\\\\u6bb5\\\\u6216\\\\u76f8\\\\u5173\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_tree</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u83b7\\\\u53d6\\\\u5b57\\\\u6bb5\\\\u7684\\\\u8d44\\\\u6e90\\\\u6811</td>\\\\n</tr>\\\\n<tr>\\\\n<td>dependent_fields</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u83b7\\\\u53d6\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_support_resource_fields/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u7684\\\\u5b57\\\\u6bb5\\\\u6216\\\\u76f8\\\\u5173\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_tree</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u83b7\\\\u53d6\\\\u5b57\\\\u6bb5\\\\u7684\\\\u8d44\\\\u6e90\\\\u6811</td>\\\\n</tr>\\\\n<tr>\\\\n<td>dependent_fields</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8981\\\\u83b7\\\\u53d6\\\\u4f9d\\\\u8d56\\\\u5b57\\\\u6bb5\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','530128d42189dc5b3d652dca666ef84a','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(351,'',354,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/post_apply_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f  | \\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u7684\\\\u6570\\\\u636e |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/post_apply_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f  | \\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u7684\\\\u6570\\\\u636e |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/post_apply_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/post_apply_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7533\\\\u8bf7\\\\u8d44\\\\u6e90\\\\u7684\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','bdbb4696fc2ff11dc46e967a03948a5b','2025-04-23 11:10:04','2025-04-23 11:10:04'),\n(352,'',355,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/sync_es_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/sync_es_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/sync_es_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/sync_es_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u540c\\\\u6b65ES\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','60ffee910f24a8f6f341e68e274f03a0','2025-06-22 13:31:20','2025-06-22 13:31:20'),\n(353,'',356,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/check_user_resource_quota/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | string | \\\\u662f  | \\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmp/check_user_resource_quota/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | string | \\\\u662f  | \\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/check_user_resource_quota/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmp/check_user_resource_quota/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6821\\\\u9a8c\\\\u7528\\\\u6237\\\\u6240\\\\u5c5e\\\\u90e8\\\\u95e8\\\\u914d\\\\u989d\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u64cd\\\\u4f5c\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4918dca4509526d95af0a7976bb7023d','2025-06-22 13:31:20','2025-06-22 13:31:20'),\n(354,'',357,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/create_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efa\\\\u4e00ing\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\'model_code\\': \\'APPLICATION\\',\\\\n    \\'data\\': {\\\\n        \\'APPLICATION_VISIBLE_NAME\\': \\'XXX\\',\\\\n        \\'APPLICATION_name\\': \\'OpsAny-Test-unique-20257311018\\',\\\\n        \\'APPLICATION_ID\\': \\'OpsAny-Test-application-20207311018\\',\\\\n        \\'APPLICATION_STATUS\\': \\'\\\\u8fd0\\\\u884c\\\\u4e2d\\',\\\\n        \\'APPLICATION_COMMENT\\': \\'<p>comment</p>\\',\\\\n        \\'APPLICATION_CeShi\\': \\'\\'XXX\\'\\',\\\\n        \\'APPLICATION_XiaLaCaiDan\\': \\'001\\',\\\\n        \\'APPLICATION_DuoXingWenBen\\': \\'\\'XXX\\' \\',\\\\n        \\'APPLICATION_ZhengShu\\': 5,\\\\n        \\'APPLICATION_FuDianXing\\': 3,\\\\n        \\'APPLICATION_RiQi\\': \\'2025-07-31 10:23:43\\',\\\\n        \\'APPLICATION_DaoQiShiJian\\': \\'2025-07-31 10:18:59\\',\\\\n        \\'APPLICATION_FuHeShuJu\\': [{\\\\n            \\'01\\': \\'002\\'\\\\n        }, {\\\\n            \\'01\\': \\'001\\'\\\\n        }],\\\\n        \\'APPLICATION_MiMa\\': \\'password123\\',\\\\n        \\'APPLICATION_LianJie\\': \\'www.xxx.com\\',\\\\n        \\'APPLICATION_FuDianXingShuZi\\': 4,\\\\n        \\'APPLICATION_ZhengShu01\\': 3,\\\\n        \\'APPLICATION_ZiFuChuan\\': \\'dsfafgdsafsdaf sfdsf\\',\\\\n        \\'APPLICATION_FuWenBen\\': \\'<p>dsaagfdg\\\\u5bcc\\\\u6587\\\\u672c</p>\\',\\\\n        \\'APPLICATION_IN_BUSINESS\\': 1\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    code: 200\\\\n    data: {code: 49, model_code: \\\\\\\"APPLICATION\\\\\\\", ......}\\\\n    message: \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n    successcode: 20001\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/devops/create_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u521b\\\\u5efa\\\\u4e00ing\\\\u7528\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f  | \\\\u5e94\\\\u7528\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\'model_code\\': \\'APPLICATION\\',\\\\n    \\'data\\': {\\\\n        \\'APPLICATION_VISIBLE_NAME\\': \\'XXX\\',\\\\n        \\'APPLICATION_name\\': \\'OpsAny-Test-unique-20257311018\\',\\\\n        \\'APPLICATION_ID\\': \\'OpsAny-Test-application-20207311018\\',\\\\n        \\'APPLICATION_STATUS\\': \\'\\\\u8fd0\\\\u884c\\\\u4e2d\\',\\\\n        \\'APPLICATION_COMMENT\\': \\'<p>comment</p>\\',\\\\n        \\'APPLICATION_CeShi\\': \\'\\'XXX\\'\\',\\\\n        \\'APPLICATION_XiaLaCaiDan\\': \\'001\\',\\\\n        \\'APPLICATION_DuoXingWenBen\\': \\'\\'XXX\\' \\',\\\\n        \\'APPLICATION_ZhengShu\\': 5,\\\\n        \\'APPLICATION_FuDianXing\\': 3,\\\\n        \\'APPLICATION_RiQi\\': \\'2025-07-31 10:23:43\\',\\\\n        \\'APPLICATION_DaoQiShiJian\\': \\'2025-07-31 10:18:59\\',\\\\n        \\'APPLICATION_FuHeShuJu\\': [{\\\\n            \\'01\\': \\'002\\'\\\\n        }, {\\\\n            \\'01\\': \\'001\\'\\\\n        }],\\\\n        \\'APPLICATION_MiMa\\': \\'password123\\',\\\\n        \\'APPLICATION_LianJie\\': \\'www.xxx.com\\',\\\\n        \\'APPLICATION_FuDianXingShuZi\\': 4,\\\\n        \\'APPLICATION_ZhengShu01\\': 3,\\\\n        \\'APPLICATION_ZiFuChuan\\': \\'dsfafgdsafsdaf sfdsf\\',\\\\n        \\'APPLICATION_FuWenBen\\': \\'<p>dsaagfdg\\\\u5bcc\\\\u6587\\\\u672c</p>\\',\\\\n        \\'APPLICATION_IN_BUSINESS\\': 1\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    code: 200\\\\n    data: {code: 49, model_code: \\\\\\\"APPLICATION\\\\\\\", ......}\\\\n    message: \\\\\\\"\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\"\\\\n    successcode: 20001\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/create_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efa\\\\u4e00ing\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;XXX&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;OpsAny-Test-unique-20257311018&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ID&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;OpsAny-Test-application-20207311018&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_STATUS&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;\\\\u8fd0\\\\u884c\\\\u4e2d&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_COMMENT&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&lt;p&gt;comment&lt;/p&gt;&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_CeShi&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&#39;</span><span class=\\\\\\\"n\\\\\\\">XXX</span><span class=\\\\\\\"s1\\\\\\\">&#39;&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_XiaLaCaiDan&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;001&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_DuoXingWenBen&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&#39;</span><span class=\\\\\\\"n\\\\\\\">XXX</span><span class=\\\\\\\"s1\\\\\\\">&#39; &#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ZhengShu&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuDianXing&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_RiQi&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;2025-07-31 10:23:43&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_DaoQiShiJian&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;2025-07-31 10:18:59&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuHeShuJu&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[{</span>\\\\n            <span class=\\\\\\\"s1\\\\\\\">&#39;01&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;002&#39;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s1\\\\\\\">&#39;01&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;001&#39;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}],</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_MiMa&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;password123&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_LianJie&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuDianXingShuZi&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ZhengShu01&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ZiFuChuan&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;dsfafgdsafsdaf sfdsf&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuWenBen&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&lt;p&gt;dsaagfdg\\\\u5bcc\\\\u6587\\\\u672c&lt;/p&gt;&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_IN_BUSINESS&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">code</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">data</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span><span class=\\\\\\\"n\\\\\\\">code</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">49</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"n\\\\\\\">model_code</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"o\\\\\\\">......</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">message</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">successcode</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/devops/create_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u521b\\\\u5efa\\\\u4e00ing\\\\u7528</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528\\\\u76f8\\\\u5173\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_VISIBLE_NAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;XXX&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;OpsAny-Test-unique-20257311018&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ID&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;OpsAny-Test-application-20207311018&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_STATUS&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;\\\\u8fd0\\\\u884c\\\\u4e2d&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_COMMENT&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&lt;p&gt;comment&lt;/p&gt;&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_CeShi&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&#39;</span><span class=\\\\\\\"n\\\\\\\">XXX</span><span class=\\\\\\\"s1\\\\\\\">&#39;&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_XiaLaCaiDan&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;001&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_DuoXingWenBen&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&#39;</span><span class=\\\\\\\"n\\\\\\\">XXX</span><span class=\\\\\\\"s1\\\\\\\">&#39; &#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ZhengShu&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">5</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuDianXing&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_RiQi&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;2025-07-31 10:23:43&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_DaoQiShiJian&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;2025-07-31 10:18:59&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuHeShuJu&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[{</span>\\\\n            <span class=\\\\\\\"s1\\\\\\\">&#39;01&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;002&#39;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s1\\\\\\\">&#39;01&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;001&#39;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}],</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_MiMa&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;password123&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_LianJie&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuDianXingShuZi&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ZhengShu01&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">3</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_ZiFuChuan&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;dsfafgdsafsdaf sfdsf&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_FuWenBen&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;&lt;p&gt;dsaagfdg\\\\u5bcc\\\\u6587\\\\u672c&lt;/p&gt;&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;APPLICATION_IN_BUSINESS&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">code</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">data</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span><span class=\\\\\\\"n\\\\\\\">code</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">49</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"n\\\\\\\">model_code</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span> <span class=\\\\\\\"o\\\\\\\">......</span><span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">message</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span>\\\\n    <span class=\\\\\\\"n\\\\\\\">successcode</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6af2af01576faf508e85efb35fe7208b','2025-07-31 04:08:50','2025-07-31 04:08:50'),\n(355,'',358,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_for_work_order/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u548c\\\\u5b57\\\\u6bb5\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u6570\\\\u636e\\\\u548c\\\\u5b57\\\\u6bb5-\\\\u652f\\\\u6301\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u5173\\\\u8054\\\\u6570\\\\u636e(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode APPLICATION |\\\\n| model_field_code_str | dict | \\\\u5426   | \\\\u5b57\\\\u6bb5 APPLICATION_name,APPLICATION_VISIBLE_NAME  |\\\\n| is_auth | dict | \\\\u5426   | \\\\u8ba4\\\\u8bc1\\\\u6570\\\\u636e 1 |\\\\n| is_link | dict | \\\\u5426   | \\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u6570\\\\u636e |\\\\n| auth_username | dict | \\\\u5426   | \\\\u8ba4\\\\u8bc1\\\\u7528\\\\u6237\\\\u540d |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_for_work_order/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u548c\\\\u5b57\\\\u6bb5\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u6570\\\\u636e\\\\u548c\\\\u5b57\\\\u6bb5-\\\\u652f\\\\u6301\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u5173\\\\u8054\\\\u6570\\\\u636e(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode APPLICATION |\\\\n| model_field_code_str | dict | \\\\u5426   | \\\\u5b57\\\\u6bb5 APPLICATION_name,APPLICATION_VISIBLE_NAME  |\\\\n| is_auth | dict | \\\\u5426   | \\\\u8ba4\\\\u8bc1\\\\u6570\\\\u636e 1 |\\\\n| is_link | dict | \\\\u5426   | \\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u6570\\\\u636e |\\\\n| auth_username | dict | \\\\u5426   | \\\\u8ba4\\\\u8bc1\\\\u7528\\\\u6237\\\\u540d |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_for_work_order/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u548c\\\\u5b57\\\\u6bb5\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u6570\\\\u636e\\\\u548c\\\\u5b57\\\\u6bb5-\\\\u652f\\\\u6301\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u5173\\\\u8054\\\\u6570\\\\u636e(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode APPLICATION</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_field_code_str</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b57\\\\u6bb5 APPLICATION_name,APPLICATION_VISIBLE_NAME</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_auth</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8ba4\\\\u8bc1\\\\u6570\\\\u636e 1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_link</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>auth_username</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8ba4\\\\u8bc1\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_for_work_order/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u548c\\\\u5b57\\\\u6bb5\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u8d44\\\\u6e90\\\\u6570\\\\u636e\\\\u548c\\\\u5b57\\\\u6bb5-\\\\u652f\\\\u6301\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u5173\\\\u8054\\\\u6570\\\\u636e(\\\\u8d44\\\\u6e90\\\\u6388\\\\u6743\\\\u8ba4\\\\u8bc1)</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode APPLICATION</td>\\\\n</tr>\\\\n<tr>\\\\n<td>model_field_code_str</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b57\\\\u6bb5 APPLICATION_name,APPLICATION_VISIBLE_NAME</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_auth</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8ba4\\\\u8bc1\\\\u6570\\\\u636e 1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_link</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u83b7\\\\u53d6\\\\u8fde\\\\u63a5\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n<tr>\\\\n<td>auth_username</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8ba4\\\\u8bc1\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2c84cd1395c6a833b8858b0a38f4c706','2025-08-12 09:20:33','2025-08-12 09:20:33'),\n(356,'',359,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_monitor_resource_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5df2\\\\u7ecf\\\\u76d1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u7684\\\\u4e3b\\\\u673a\\\\u7b49\\\\u5b9e\\\\u4f8b\\\\uff08\\\\u4e91\\\\u7ba1\\\\u5e73\\\\u53f0\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_monitor_resource_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5df2\\\\u7ecf\\\\u76d1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u7684\\\\u4e3b\\\\u673a\\\\u7b49\\\\u5b9e\\\\u4f8b\\\\uff08\\\\u4e91\\\\u7ba1\\\\u5e73\\\\u53f0\\\\uff09\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_monitor_resource_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5df2\\\\u7ecf\\\\u76d1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u7684\\\\u4e3b\\\\u673a\\\\u7b49\\\\u5b9e\\\\u4f8b\\\\uff08\\\\u4e91\\\\u7ba1\\\\u5e73\\\\u53f0\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_monitor_resource_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5df2\\\\u7ecf\\\\u76d1\\\\u63a7\\\\u7eb3\\\\u7ba1\\\\u7684\\\\u4e3b\\\\u673a\\\\u7b49\\\\u5b9e\\\\u4f8b\\\\uff08\\\\u4e91\\\\u7ba1\\\\u5e73\\\\u53f0\\\\uff09</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','5a84b22c70137d8dc73be51a242771b9','2025-10-24 03:21:38','2025-10-24 03:21:38'),\n(357,'',360,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_run_query/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eProm\\\\u6267\\\\u884c\\\\u6307\\\\u6807\\\\u67e5\\\\u8be2\\\\u8bed\\\\u53e5\\\\u5e76\\\\u83b7\\\\u53d6\\\\u5230\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| query | str | \\\\u662f    |  promQL |\\\\n| params | list | \\\\u662f    | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/prom_run_query/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636eProm\\\\u6267\\\\u884c\\\\u6307\\\\u6807\\\\u67e5\\\\u8be2\\\\u8bed\\\\u53e5\\\\u5e76\\\\u83b7\\\\u53d6\\\\u5230\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| prom_id | str | \\\\u662f    |  prom ID |\\\\n| query | str | \\\\u662f    |  promQL |\\\\n| params | list | \\\\u662f    | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_run_query/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eProm\\\\u6267\\\\u884c\\\\u6307\\\\u6807\\\\u67e5\\\\u8be2\\\\u8bed\\\\u53e5\\\\u5e76\\\\u83b7\\\\u53d6\\\\u5230\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>query</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>promQL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/prom_run_query/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636eProm\\\\u6267\\\\u884c\\\\u6307\\\\u6807\\\\u67e5\\\\u8be2\\\\u8bed\\\\u53e5\\\\u5e76\\\\u83b7\\\\u53d6\\\\u5230\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>prom_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>prom ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>query</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>promQL</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0a5ce28ffd2f04815615344c97983792','2025-10-25 08:48:10','2025-10-25 08:48:10'),\n(358,'',361,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_event_acknowledge/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nZabbix\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u7684\\\\u64cd\\\\u4f5c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| event_id | int | \\\\u662f  | \\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6ID |\\\\n| host_id | int | \\\\u5426  | \\\\u5b9e\\\\u4f8bID(\\\\u7ba1\\\\u63a7\\\\u5b9e\\\\u4f8bID) |\\\\n| zabbix_host_id | int | \\\\u5426  | \\\\u5b9e\\\\u4f8bID(Zabbix\\\\u5b9e\\\\u4f8bID) |\\\\n| device_type | str | \\\\u662f  | \\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b |\\\\n| action | int | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u522b |\\\\n| message | str | \\\\u5426  | \\\\u6d88\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n| severity | int | \\\\u5426 | \\\\u544a\\\\u8b66\\\\u7ea7\\\\u522b |\\\\n| suppress_until | int | \\\\u5426 | \\\\u88ab\\\\u6291\\\\u5236\\\\u5230\\\\u7684Unix\\\\u65f6\\\\u95f4\\\\u6233 |\\\\n| event_params | Dict | \\\\u5426  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_event_acknowledge/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\nZabbix\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u7684\\\\u64cd\\\\u4f5c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| event_id | int | \\\\u662f  | \\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6ID |\\\\n| host_id | int | \\\\u5426  | \\\\u5b9e\\\\u4f8bID(\\\\u7ba1\\\\u63a7\\\\u5b9e\\\\u4f8bID) |\\\\n| zabbix_host_id | int | \\\\u5426  | \\\\u5b9e\\\\u4f8bID(Zabbix\\\\u5b9e\\\\u4f8bID) |\\\\n| device_type | str | \\\\u662f  | \\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b |\\\\n| action | int | \\\\u662f  | \\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u522b |\\\\n| message | str | \\\\u5426  | \\\\u6d88\\\\u606f\\\\u5185\\\\u5bb9 |\\\\n| severity | int | \\\\u5426 | \\\\u544a\\\\u8b66\\\\u7ea7\\\\u522b |\\\\n| suppress_until | int | \\\\u5426 | \\\\u88ab\\\\u6291\\\\u5236\\\\u5230\\\\u7684Unix\\\\u65f6\\\\u95f4\\\\u6233 |\\\\n| event_params | Dict | \\\\u5426  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_event_acknowledge/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Zabbix\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u7684\\\\u64cd\\\\u4f5c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>event_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b9e\\\\u4f8bID(\\\\u7ba1\\\\u63a7\\\\u5b9e\\\\u4f8bID)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b9e\\\\u4f8bID(Zabbix\\\\u5b9e\\\\u4f8bID)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>device_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>action</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u522b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6d88\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>severity</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u7ea7\\\\u522b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>suppress_until</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u88ab\\\\u6291\\\\u5236\\\\u5230\\\\u7684Unix\\\\u65f6\\\\u95f4\\\\u6233</td>\\\\n</tr>\\\\n<tr>\\\\n<td>event_params</td>\\\\n<td>Dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_event_acknowledge/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>Zabbix\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u7684\\\\u64cd\\\\u4f5c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>event_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b9e\\\\u4f8bID(\\\\u7ba1\\\\u63a7\\\\u5b9e\\\\u4f8bID)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b9e\\\\u4f8bID(Zabbix\\\\u5b9e\\\\u4f8bID)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>device_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>action</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u64cd\\\\u4f5c\\\\u7c7b\\\\u522b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>message</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6d88\\\\u606f\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>severity</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u544a\\\\u8b66\\\\u7ea7\\\\u522b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>suppress_until</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u88ab\\\\u6291\\\\u5236\\\\u5230\\\\u7684Unix\\\\u65f6\\\\u95f4\\\\u6233</td>\\\\n</tr>\\\\n<tr>\\\\n<td>event_params</td>\\\\n<td>Dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','e181312939bffcfee4402873d0494a10','2025-12-09 03:10:34','2025-12-09 03:10:34'),\n(359,'',362,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_event_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u64cd\\\\u4f5c\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u5b9e\\\\u4f8bID |\\\\n| device_type | int | \\\\u5426  | \\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b |\\\\n| eventid | int | \\\\u5426  | \\\\u4e8b\\\\u4ef6ID\\\\u652f\\\\u6301\\\\u591a\\\\u4e2a\\\\u7528, \\\\u9694\\\\u5f00 |\\\\n| ack | int | \\\\u5426  | \\\\u5305\\\\u542b\\\\u64cd\\\\u4f5c\\\\u8bb0\\\\u5f55 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_event_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u64cd\\\\u4f5c\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u5b9e\\\\u4f8bID |\\\\n| device_type | int | \\\\u5426  | \\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b |\\\\n| eventid | int | \\\\u5426  | \\\\u4e8b\\\\u4ef6ID\\\\u652f\\\\u6301\\\\u591a\\\\u4e2a\\\\u7528, \\\\u9694\\\\u5f00 |\\\\n| ack | int | \\\\u5426  | \\\\u5305\\\\u542b\\\\u64cd\\\\u4f5c\\\\u8bb0\\\\u5f55 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_event_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u64cd\\\\u4f5c\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8bID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>device_type</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>eventid</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e8b\\\\u4ef6ID\\\\u652f\\\\u6301\\\\u591a\\\\u4e2a\\\\u7528, \\\\u9694\\\\u5f00</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ack</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5305\\\\u542b\\\\u64cd\\\\u4f5c\\\\u8bb0\\\\u5f55</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_event_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u4e8b\\\\u4ef6\\\\u64cd\\\\u4f5c\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8bID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>device_type</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>eventid</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e8b\\\\u4ef6ID\\\\u652f\\\\u6301\\\\u591a\\\\u4e2a\\\\u7528, \\\\u9694\\\\u5f00</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ack</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5305\\\\u542b\\\\u64cd\\\\u4f5c\\\\u8bb0\\\\u5f55</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','a1bb88b65ea62bf228cfc7e561b7fedd','2025-12-09 03:10:34','2025-12-09 03:10:34'),\n(360,'',363,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_expr_get_value/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6307\\\\u6807\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| expr_list | list |  \\\\u662f  | \\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868(\\\\u5305\\\\u542bmodel_code,unique,expr)  |\\\\n| zabbix_expr_list | list |  \\\\u5426  | zabbix\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868  |\\\\n| prom_expr_list | list | \\\\u5426   | prometheus\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868 |\\\\n| data_ype | str |  \\\\u5426 | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| params | dict |  \\\\u5426 | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/post_metric_expr_get_value/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6307\\\\u6807\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| expr_list | list |  \\\\u662f  | \\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868(\\\\u5305\\\\u542bmodel_code,unique,expr)  |\\\\n| zabbix_expr_list | list |  \\\\u5426  | zabbix\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868  |\\\\n| prom_expr_list | list | \\\\u5426   | prometheus\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868 |\\\\n| data_ype | str |  \\\\u5426 | \\\\u6570\\\\u636e\\\\u7c7b\\\\u578b |\\\\n| params | dict |  \\\\u5426 | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_expr_get_value/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6307\\\\u6807\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>expr_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868(\\\\u5305\\\\u542bmodel_code,unique,expr)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_expr_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>zabbix\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>prom_expr_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>prometheus\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_ype</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/post_metric_expr_get_value/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6307\\\\u6807\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>expr_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868(\\\\u5305\\\\u542bmodel_code,unique,expr)</td>\\\\n</tr>\\\\n<tr>\\\\n<td>zabbix_expr_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>zabbix\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>prom_expr_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>prometheus\\\\u8868\\\\u8fbe\\\\u5f0f\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_ype</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6570\\\\u636e\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','53f694970195a6cefe2a6fc6bd63a2ac','2025-12-09 03:10:34','2026-01-06 10:13:35'),\n(361,'',364,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/subnet_scan_ip_port/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| scan_type | str | \\\\u5426  | \\\\u626b\\\\u63cf\\\\u7c7b\\\\u578b nmap|\\\\n| proxy_id | int | \\\\u662f  | \\\\u63a7\\\\u5236\\\\u5668ID 1 |\\\\n| ip_start | str | \\\\u662f  | \\\\u8d77\\\\u59cbIP 192.168.0.111|\\\\n| ip_end | str | \\\\u662f  | \\\\u7ed3\\\\u675fIP 192.168.0.200|\\\\n| port_list | list | \\\\u5426  | \\\\u7aef\\\\u53e3\\\\u8303\\\\u56f4 [\\\\\\\"0-800\\\\\\\", \\\\\\\"8000\\\\\\\"]|\\\\n| timeout | int | \\\\u5426  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4 600|\\\\n| params | dict | \\\\u5426  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 {} |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/subnet_scan_ip_port/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| scan_type | str | \\\\u5426  | \\\\u626b\\\\u63cf\\\\u7c7b\\\\u578b nmap|\\\\n| proxy_id | int | \\\\u662f  | \\\\u63a7\\\\u5236\\\\u5668ID 1 |\\\\n| ip_start | str | \\\\u662f  | \\\\u8d77\\\\u59cbIP 192.168.0.111|\\\\n| ip_end | str | \\\\u662f  | \\\\u7ed3\\\\u675fIP 192.168.0.200|\\\\n| port_list | list | \\\\u5426  | \\\\u7aef\\\\u53e3\\\\u8303\\\\u56f4 [\\\\\\\"0-800\\\\\\\", \\\\\\\"8000\\\\\\\"]|\\\\n| timeout | int | \\\\u5426  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4 600|\\\\n| params | dict | \\\\u5426  | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 {} |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/subnet_scan_ip_port/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>scan_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u626b\\\\u63cf\\\\u7c7b\\\\u578b nmap</td>\\\\n</tr>\\\\n<tr>\\\\n<td>proxy_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668ID 1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_start</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d77\\\\u59cbIP 192.168.0.111</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_end</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7ed3\\\\u675fIP 192.168.0.200</td>\\\\n</tr>\\\\n<tr>\\\\n<td>port_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7aef\\\\u53e3\\\\u8303\\\\u56f4 [\\\\\\\"0-800\\\\\\\", \\\\\\\"8000\\\\\\\"]</td>\\\\n</tr>\\\\n<tr>\\\\n<td>timeout</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4 600</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 {}</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/subnet_scan_ip_port/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>scan_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u626b\\\\u63cf\\\\u7c7b\\\\u578b nmap</td>\\\\n</tr>\\\\n<tr>\\\\n<td>proxy_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668ID 1</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_start</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d77\\\\u59cbIP 192.168.0.111</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_end</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7ed3\\\\u675fIP 192.168.0.200</td>\\\\n</tr>\\\\n<tr>\\\\n<td>port_list</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u7aef\\\\u53e3\\\\u8303\\\\u56f4 [\\\\\\\"0-800\\\\\\\", \\\\\\\"8000\\\\\\\"]</td>\\\\n</tr>\\\\n<tr>\\\\n<td>timeout</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4 600</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 {}</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','1dcc3a0831366051453e7e33473ce9aa','2026-01-06 10:13:35','2026-01-06 10:13:35'),\n(362,'',365,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/subnet_scan_ip_port_result/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1\\\\u7ed3\\\\u679c\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| scan_type | string | \\\\u5426  |\\\\u626b\\\\u63cf |\\\\n| request_id | string | \\\\u5426  | \\\\u4efb\\\\u52a1ID |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/subnet_scan_ip_port_result/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1\\\\u7ed3\\\\u679c\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| scan_type | string | \\\\u5426  |\\\\u626b\\\\u63cf |\\\\n| request_id | string | \\\\u5426  | \\\\u4efb\\\\u52a1ID |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/subnet_scan_ip_port_result/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1\\\\u7ed3\\\\u679c\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>scan_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u626b\\\\u63cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/subnet_scan_ip_port_result/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u626b\\\\u63cfIP\\\\u7aef\\\\u53e3\\\\u670d\\\\u52a1\\\\u7ed3\\\\u679c\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>scan_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u626b\\\\u63cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>request_id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4efb\\\\u52a1ID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','deb587055fe1d637c8a791ded6e8a5a2','2026-01-06 10:13:35','2026-01-06 10:13:35'),\n(363,'',366,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_work_order_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| current | string | \\\\u662f  | \\\\u9875\\\\u7801 |\\\\n| pageSize | string | \\\\u662f  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n| data_type | string | \\\\u5426  | \\\\u662f\\\\u5426\\\\u5206\\\\u9875 |\\\\n| data | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u6807\\\\u7b7e\\\\u641c\\\\u7d22 |\\\\n| order_by | string | \\\\u5426  | \\\\u6392\\\\u5e8f\\\\u5b57\\\\u6bb5 |\\\\n| order_type | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u7c7b\\\\u578b |\\\\n| status | dict | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u72b6\\\\u6001 |\\\\n| create_min_time | string | \\\\u5426  | \\\\u6700\\\\u5c0f\\\\u65f6\\\\u95f4 |\\\\n| create_max_time | string | \\\\u5426  | \\\\u6700\\\\u5927\\\\u65f6\\\\u95f4 |\\\\n| number | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u7f16\\\\u53f7 |\\\\n| title | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u6807\\\\u9898 |\\\\n| score | string | \\\\u5426  | \\\\u6253\\\\u5206 |\\\\n| contents | string | \\\\u5426  | \\\\u8bc4\\\\u4ef7\\\\u5185\\\\u5bb9 |\\\\n| follow | string | \\\\u5426  | \\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a |\\\\n| search_type | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_work_order_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| current | string | \\\\u662f  | \\\\u9875\\\\u7801 |\\\\n| pageSize | string | \\\\u662f  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf |\\\\n| data_type | string | \\\\u5426  | \\\\u662f\\\\u5426\\\\u5206\\\\u9875 |\\\\n| data | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u6807\\\\u7b7e\\\\u641c\\\\u7d22 |\\\\n| order_by | string | \\\\u5426  | \\\\u6392\\\\u5e8f\\\\u5b57\\\\u6bb5 |\\\\n| order_type | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u7c7b\\\\u578b |\\\\n| status | dict | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u72b6\\\\u6001 |\\\\n| create_min_time | string | \\\\u5426  | \\\\u6700\\\\u5c0f\\\\u65f6\\\\u95f4 |\\\\n| create_max_time | string | \\\\u5426  | \\\\u6700\\\\u5927\\\\u65f6\\\\u95f4 |\\\\n| number | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u7f16\\\\u53f7 |\\\\n| title | string | \\\\u5426  | \\\\u5de5\\\\u5355\\\\u6807\\\\u9898 |\\\\n| score | string | \\\\u5426  | \\\\u6253\\\\u5206 |\\\\n| contents | string | \\\\u5426  | \\\\u8bc4\\\\u4ef7\\\\u5185\\\\u5bb9 |\\\\n| follow | string | \\\\u5426  | \\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a |\\\\n| search_type | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5 |\\\\n| search_data | string | \\\\u5426  | \\\\u641c\\\\u7d22\\\\u6570\\\\u636e |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_work_order_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u5206\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u6807\\\\u7b7e\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_by</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6392\\\\u5e8f\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>status</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u72b6\\\\u6001</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_min_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6700\\\\u5c0f\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_max_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6700\\\\u5927\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u7f16\\\\u53f7</td>\\\\n</tr>\\\\n<tr>\\\\n<td>title</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u6807\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>score</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6253\\\\u5206</td>\\\\n</tr>\\\\n<tr>\\\\n<td>contents</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8bc4\\\\u4ef7\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>follow</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_work_order_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5355\\\\u5b9e\\\\u4f8b\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>current</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u9875\\\\u7801</td>\\\\n</tr>\\\\n<tr>\\\\n<td>pageSize</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u6bcf\\\\u9875\\\\u6570\\\\u91cf</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u5206\\\\u9875</td>\\\\n</tr>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u6807\\\\u7b7e\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_by</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6392\\\\u5e8f\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>order_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>status</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u72b6\\\\u6001</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_min_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6700\\\\u5c0f\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_max_time</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6700\\\\u5927\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n<tr>\\\\n<td>number</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u7f16\\\\u53f7</td>\\\\n</tr>\\\\n<tr>\\\\n<td>title</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5355\\\\u6807\\\\u9898</td>\\\\n</tr>\\\\n<tr>\\\\n<td>score</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6253\\\\u5206</td>\\\\n</tr>\\\\n<tr>\\\\n<td>contents</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8bc4\\\\u4ef7\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>follow</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u8ddf\\\\u8e2a</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u5b57\\\\u6bb5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22\\\\u6570\\\\u636e</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','a0f9e117d1cb5d9b0bbf0d2d6e138395','2026-01-23 08:35:42','2026-01-23 08:35:42'),\n(364,'',367,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_k8s_resource_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n| cluster_unique | string | \\\\u5426 | \\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_k8s_resource_v2/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n| cluster_unique | string | \\\\u5426 | \\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_k8s_resource_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>cluster_unique</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_k8s_resource_v2/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u8d44\\\\u6e90\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>cluster_unique</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</code></pre></div>\\\"}','31a711e895b6f9973612597edb2a90c3','2026-03-05 12:20:26','2026-03-05 12:20:26'),\n(365,'',368,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_k8s_cluster/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| cluster_unique | string | \\\\u5426 | \\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/k8s/get_k8s_cluster/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| cluster_unique | string | \\\\u5426 | \\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_k8s_cluster/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>cluster_unique</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/k8s/get_k8s_cluster/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u7684\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>cluster_unique</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n          ...\\\\n        }\\\\n    ]\\\\n}\\\\n</code></pre></div>\\\"}','b57d27b6683e10dee6b6be138f390b86','2026-03-05 12:20:26','2026-03-05 12:20:26'),\n(366,'',369,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_k8s_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_k8s_resource/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| resource_type | string | \\\\u662f  | \\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_k8s_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_k8s_resource/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>resource_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8d44\\\\u6e90\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','83d04926031cad70ba259eeed2a90cb2','2026-03-05 12:20:26','2026-03-05 12:20:26'),\n(367,'',370,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_k8s_cluster/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90\\\\uff1a\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| cluster_unique | string | \\\\u5426 | \\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| is_delete | string | \\\\u5426 | \\\\u662f\\\\u5426\\\\u5220\\\\u9664CMDB\\\\u8d44\\\\u6e90 |\\\\n| delete_data| string | \\\\u5426 | \\\\u8981\\\\u5220\\\\u9664\\\\u7684\\\\u96c6\\\\u7fa4\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_k8s_cluster/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90\\\\uff1a\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| cluster_unique | string | \\\\u5426 | \\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6 |\\\\n| is_delete | string | \\\\u5426 | \\\\u662f\\\\u5426\\\\u5220\\\\u9664CMDB\\\\u8d44\\\\u6e90 |\\\\n| delete_data| string | \\\\u5426 | \\\\u8981\\\\u5220\\\\u9664\\\\u7684\\\\u96c6\\\\u7fa4\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_k8s_cluster/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90\\\\uff1a\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>cluster_unique</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_delete</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u5220\\\\u9664CMDB\\\\u8d44\\\\u6e90</td>\\\\n</tr>\\\\n<tr>\\\\n<td>delete_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u5220\\\\u9664\\\\u7684\\\\u96c6\\\\u7fa4\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_k8s_cluster/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u5bb9\\\\u5668\\\\u5e73\\\\u53f0\\\\u8d44\\\\u6e90\\\\uff1a\\\\u96c6\\\\u7fa4\\\\u3001\\\\u547d\\\\u540d\\\\u7a7a\\\\u95f4\\\\u3001\\\\u8282\\\\u70b9</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>cluster_unique</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u96c6\\\\u7fa4\\\\u552f\\\\u4e00\\\\u6807\\\\u8bc6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>is_delete</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u662f\\\\u5426\\\\u5220\\\\u9664CMDB\\\\u8d44\\\\u6e90</td>\\\\n</tr>\\\\n<tr>\\\\n<td>delete_data</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8981\\\\u5220\\\\u9664\\\\u7684\\\\u96c6\\\\u7fa4\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','fc2f3df9203dca5c2dae0a4deb39770f','2026-03-05 12:20:26','2026-03-05 12:20:26'),\n(368,'',371,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_script_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u811a\\\\u672cID\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| script_id     | int    |  \\\\u662f  | \\\\u811a\\\\u672cID   |\\\\n| parameter     | str    |  \\\\u5426  | \\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570   |\\\\n| script     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u5185\\\\u5bb9 |\\\\n| run_describe     | str    |  \\\\u5426  | \\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0 |\\\\n| script_type     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u7c7b\\\\u578b  |\\\\n| server     | list    |  \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n| time_out     | str    |  \\\\u5426  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"script_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_script_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u811a\\\\u672cID\\\\u6267\\\\u884c\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| script_id     | int    |  \\\\u662f  | \\\\u811a\\\\u672cID   |\\\\n| parameter     | str    |  \\\\u5426  | \\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570   |\\\\n| script     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u5185\\\\u5bb9 |\\\\n| run_describe     | str    |  \\\\u5426  | \\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0 |\\\\n| script_type     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u7c7b\\\\u578b  |\\\\n| server     | list    |  \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n| time_out     | str    |  \\\\u5426  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"script_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_script_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u811a\\\\u672cID\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>script_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672cID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>server</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time_out</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_script_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u811a\\\\u672cID\\\\u6267\\\\u884c\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>script_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u811a\\\\u672cID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>server</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time_out</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','a4826340ddf98e5946710b5e7a704c0c','2026-03-05 12:24:52','2026-03-05 12:24:52'),\n(369,'',372,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/get_tool_market_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5177\\\\u5e02\\\\u573a\\\\u4e2d\\\\u7684\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| data_type  | str  |  \\\\u5426  | \\\\u5de5\\\\u5177\\\\u7c7b\\\\u578b job\\\\uff1a\\\\u4f5c\\\\u4e1a script\\\\uff1a\\\\u811a\\\\u672c all: \\\\u5168\\\\u90e8 |\\\\n| id     | int    |  \\\\u5426  | \\\\u6307\\\\u5b9aID\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c |\\\\n| job_id     | int    |  \\\\u5426  | \\\\u6307\\\\u5b9a\\\\u4f5c\\\\u4e1aID\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u8be6\\\\u60c5 |\\\\n| script_id     | int    |  \\\\u5426  | \\\\u6307\\\\u5b9a\\\\u811a\\\\u672cID\\\\u83b7\\\\u53d6\\\\u811a\\\\u672c\\\\u8be6\\\\u60c5 |\\\\n| script_name     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u540d\\\\u79f0 |\\\\n| create_user     | str    |  \\\\u5426  | \\\\u521b\\\\u5efa\\\\u4eba \\\\u7528\\\\u6237\\\\u540d\\\\u6216\\\\u4e2d\\\\u6587\\\\u540d |\\\\n| visible     | str    |  \\\\u5426  | \\\\u53ef\\\\u89c1\\\\u8303\\\\u56f4 1\\\\uff1a\\\\u79c1\\\\u6709 2\\\\uff1a\\\\u516c\\\\u5f00 |\\\\n| script_type     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u7c7b\\\\u578b(\\\\u811a\\\\u672c\\\\u53c2\\\\u6570)\\\\uff1a sh, py, ps1, bat|\\\\n| search_type     | str    |  \\\\u5426  | \\\\u641c\\\\u7d22 |\\\\n| search_data     | str    |  \\\\u5426  | \\\\u641c\\\\u7d22 |\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/get_tool_market_list/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5177\\\\u5e02\\\\u573a\\\\u4e2d\\\\u7684\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| data_type  | str  |  \\\\u5426  | \\\\u5de5\\\\u5177\\\\u7c7b\\\\u578b job\\\\uff1a\\\\u4f5c\\\\u4e1a script\\\\uff1a\\\\u811a\\\\u672c all: \\\\u5168\\\\u90e8 |\\\\n| id     | int    |  \\\\u5426  | \\\\u6307\\\\u5b9aID\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c |\\\\n| job_id     | int    |  \\\\u5426  | \\\\u6307\\\\u5b9a\\\\u4f5c\\\\u4e1aID\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u8be6\\\\u60c5 |\\\\n| script_id     | int    |  \\\\u5426  | \\\\u6307\\\\u5b9a\\\\u811a\\\\u672cID\\\\u83b7\\\\u53d6\\\\u811a\\\\u672c\\\\u8be6\\\\u60c5 |\\\\n| script_name     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u540d\\\\u79f0 |\\\\n| create_user     | str    |  \\\\u5426  | \\\\u521b\\\\u5efa\\\\u4eba \\\\u7528\\\\u6237\\\\u540d\\\\u6216\\\\u4e2d\\\\u6587\\\\u540d |\\\\n| visible     | str    |  \\\\u5426  | \\\\u53ef\\\\u89c1\\\\u8303\\\\u56f4 1\\\\uff1a\\\\u79c1\\\\u6709 2\\\\uff1a\\\\u516c\\\\u5f00 |\\\\n| script_type     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u7c7b\\\\u578b(\\\\u811a\\\\u672c\\\\u53c2\\\\u6570)\\\\uff1a sh, py, ps1, bat|\\\\n| search_type     | str    |  \\\\u5426  | \\\\u641c\\\\u7d22 |\\\\n| search_data     | str    |  \\\\u5426  | \\\\u641c\\\\u7d22 |\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/get_tool_market_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5177\\\\u5e02\\\\u573a\\\\u4e2d\\\\u7684\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5177\\\\u7c7b\\\\u578b job\\\\uff1a\\\\u4f5c\\\\u4e1a script\\\\uff1a\\\\u811a\\\\u672c all: \\\\u5168\\\\u90e8</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9aID\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9a\\\\u4f5c\\\\u4e1aID\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u8be6\\\\u60c5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9a\\\\u811a\\\\u672cID\\\\u83b7\\\\u53d6\\\\u811a\\\\u672c\\\\u8be6\\\\u60c5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_user</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u521b\\\\u5efa\\\\u4eba \\\\u7528\\\\u6237\\\\u540d\\\\u6216\\\\u4e2d\\\\u6587\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>visible</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53ef\\\\u89c1\\\\u8303\\\\u56f4 1\\\\uff1a\\\\u79c1\\\\u6709 2\\\\uff1a\\\\u516c\\\\u5f00</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u7c7b\\\\u578b(\\\\u811a\\\\u672c\\\\u53c2\\\\u6570)\\\\uff1a sh, py, ps1, bat</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/get_tool_market_list/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u5177\\\\u5e02\\\\u573a\\\\u4e2d\\\\u7684\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5de5\\\\u5177\\\\u7c7b\\\\u578b job\\\\uff1a\\\\u4f5c\\\\u4e1a script\\\\uff1a\\\\u811a\\\\u672c all: \\\\u5168\\\\u90e8</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9aID\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c</td>\\\\n</tr>\\\\n<tr>\\\\n<td>job_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9a\\\\u4f5c\\\\u4e1aID\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u8be6\\\\u60c5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6307\\\\u5b9a\\\\u811a\\\\u672cID\\\\u83b7\\\\u53d6\\\\u811a\\\\u672c\\\\u8be6\\\\u60c5</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_name</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u540d\\\\u79f0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>create_user</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u521b\\\\u5efa\\\\u4eba \\\\u7528\\\\u6237\\\\u540d\\\\u6216\\\\u4e2d\\\\u6587\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>visible</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u53ef\\\\u89c1\\\\u8303\\\\u56f4 1\\\\uff1a\\\\u79c1\\\\u6709 2\\\\uff1a\\\\u516c\\\\u5f00</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u7c7b\\\\u578b(\\\\u811a\\\\u672c\\\\u53c2\\\\u6570)\\\\uff1a sh, py, ps1, bat</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search_data</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u641c\\\\u7d22</td>\\\\n</tr>\\\\n<tr>\\\\n<td>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</td>\\\\n<td></td>\\\\n<td></td>\\\\n<td></td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','d5384d7a368bf7ac0c9663affc078b49','2026-03-05 12:24:52','2026-03-06 06:48:10'),\n(370,'',373,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/get_run_result_by_log_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u7ed3\\\\u679c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| task_log_id  | str  |  \\\\u662f  | \\\\u65e5\\\\u5fd7ID |\\\\n| params  | dict  |  \\\\u5426 | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/get_run_result_by_log_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u7ed3\\\\u679c\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| task_log_id  | str  |  \\\\u662f  | \\\\u65e5\\\\u5fd7ID |\\\\n| params  | dict  |  \\\\u5426 | \\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/get_run_result_by_log_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u7ed3\\\\u679c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_log_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u65e5\\\\u5fd7ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/get_run_result_by_log_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4f5c\\\\u4e1a\\\\u6216\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u7ed3\\\\u679c</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>task_log_id</td>\\\\n<td>str</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u65e5\\\\u5fd7ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>params</td>\\\\n<td>dict</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5176\\\\u4ed6\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','ae12280e111c7e8ba4b97dfaeb65efaf','2026-03-05 13:03:49','2026-03-05 13:03:49'),\n(371,'',374,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_job_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| job_id     | int    |  \\\\u662f  | \\\\u4f5c\\\\u4e1aID   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"task_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_job_by_id/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| job_id     | int    |  \\\\u662f  | \\\\u4f5c\\\\u4e1aID   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"task_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_job_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4f5c\\\\u4e1aID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;task_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_job_by_id/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4f5c\\\\u4e1aID\\\\u6267\\\\u884c\\\\u4f5c\\\\u4e1a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>job_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4f5c\\\\u4e1aID</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;task_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','b4d60a174f5f04f63604a7c72ba9e79f','2026-03-06 06:48:10','2026-03-06 06:48:10'),\n(372,'',375,'{\\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_script_by_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4e3b\\\\u673a\\\\u548c\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| script_format  | str    |  \\\\u5426  | \\\\u9ed8\\\\u8ba4str str or url  |\\\\n| parameter     | str    |  \\\\u5426  | \\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570   |\\\\n| script     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u5185\\\\u5bb9 |\\\\n| run_describe     | str    |  \\\\u5426  | \\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0 |\\\\n| script_type     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u7c7b\\\\u578b  |\\\\n| server     | list    |  \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n| time_out     | str    |  \\\\u5426  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"script_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\", \\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/job/run_script_by_script/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4e3b\\\\u673a\\\\u548c\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0      |\\\\n| -----  | ------ | ---- | ------- |\\\\n| script_format  | str    |  \\\\u5426  | \\\\u9ed8\\\\u8ba4str str or url  |\\\\n| parameter     | str    |  \\\\u5426  | \\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570   |\\\\n| script     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u5185\\\\u5bb9 |\\\\n| run_describe     | str    |  \\\\u5426  | \\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0 |\\\\n| script_type     | str    |  \\\\u5426  | \\\\u811a\\\\u672c\\\\u7c7b\\\\u578b  |\\\\n| server     | list    |  \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u5217\\\\u8868 |\\\\n| time_out     | str    |  \\\\u5426  | \\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"script_id\\\\\\\":  10\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n}\\\\n```\\\"}','{\\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_script_by_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4e3b\\\\u673a\\\\u548c\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>script_format</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9ed8\\\\u8ba4str str or url</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>server</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time_out</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\", \\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/job/run_script_by_script/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4e3b\\\\u673a\\\\u548c\\\\u811a\\\\u672c\\\\u6267\\\\u884c\\\\u4efb\\\\u52a1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>script_format</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u9ed8\\\\u8ba4str str or url</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4f4d\\\\u7f6e\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u5185\\\\u5bb9</td>\\\\n</tr>\\\\n<tr>\\\\n<td>run_describe</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8fd0\\\\u884c\\\\u539f\\\\u56e0</td>\\\\n</tr>\\\\n<tr>\\\\n<td>script_type</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u811a\\\\u672c\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n<tr>\\\\n<td>server</td>\\\\n<td>list</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n<tr>\\\\n<td>time_out</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u8d85\\\\u65f6\\\\u65f6\\\\u95f4</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;script_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">10</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><code><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</code></pre></div>\\\"}','07910340b3c69c2c1b86997c8c2f2215','2026-03-07 09:13:16','2026-03-07 09:13:16');\n/*!40000 ALTER TABLE `esb_api_doc` ENABLE KEYS */;\nUNLOCK TABLES;\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\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/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2026-03-07 20:01:45\n"
  },
  {
    "path": "install/init/esb-init/esb_channel.sql",
    "content": "-- MariaDB dump 10.19  Distrib 10.11.13-MariaDB, for debian-linux-gnu (x86_64)\n--\n-- Host: localhost    Database: opsany_paas\n-- ------------------------------------------------------\n-- Server version\t10.11.13-MariaDB-0ubuntu0.24.04.1\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/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\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/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `esb_channel`\n--\n\nDROP TABLE IF EXISTS `esb_channel`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_channel` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(64) NOT NULL,\n  `path` varchar(255) NOT NULL,\n  `method` varchar(32) DEFAULT NULL,\n  `component_codename` varchar(255) NOT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `last_modified_time` datetime NOT NULL,\n  `created_time` datetime NOT NULL,\n  `component_system_id` int(11) DEFAULT NULL,\n  `timeout_time` int(11) DEFAULT NULL,\n  `type` int(11) NOT NULL,\n  `comp_conf` longtext DEFAULT NULL,\n  `component_name` varchar(64) DEFAULT NULL,\n  `is_hidden` tinyint(1) NOT NULL,\n  `perm_level` int(11) NOT NULL,\n  `rate_limit_conf` longtext DEFAULT NULL,\n  `rate_limit_required` tinyint(1) NOT NULL,\n  `extra_info` longtext NOT NULL,\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `path` (`path`) USING BTREE,\n  KEY `component_system_id_75db1515b99d21dc_fk_esb_component_system_id` (`component_system_id`) USING BTREE,\n  CONSTRAINT `component_system_id_75db1515b99d21dc_fk_esb_component_system_id` FOREIGN KEY (`component_system_id`) REFERENCES `esb_component_system` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=376 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=COMPACT;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_channel`\n--\n\nLOCK TABLES `esb_channel` WRITE;\n/*!40000 ALTER TABLE `esb_channel` DISABLE KEYS */;\nINSERT INTO `esb_channel` VALUES\n(1,'获取管控平台手动添加的Agent信息','/control/get_manual_add_agent/','','generic.control.get_manual_add_agent',1,'2020-04-22 15:36:51','2020-04-22 15:36:51',8,NULL,2,'','get_manual_add_agent',0,0,'',0,''),\n(2,'通过控制器的name获取控制器信息','/control/get_controller/','','generic.control.get_controller',1,'2020-04-22 15:37:28','2020-04-22 15:37:28',8,NULL,2,'','get_controller',0,0,'',0,''),\n(3,'获取所有主机','/cmdb/get_all_host/','','generic.cmdb.get_all_host',1,'2026-02-05 15:01:34','2020-04-22 15:54:14',7,60,2,'','get_all_host',0,0,'',0,''),\n(5,'更新节点的Agent情况','/cmdb/update_agent_state/','','generic.cmdb.update_agent_state',1,'2025-12-30 15:43:36','2020-04-22 15:56:24',7,300,1,'','update_agent_state',0,0,'',0,''),\n(6,'从管控平台导入Grains信息','/cmdb/import_grains_from_control/','','generic.cmdb.import_grains_from_control',1,'2020-04-22 15:57:28','2020-04-22 15:57:28',7,NULL,1,'','import_grains_from_control',0,0,'',0,''),\n(7,'获取实例树','/cmdb/get_inst_tree/','','generic.cmdb.get_inst_tree',1,'2020-04-22 16:23:16','2020-04-22 16:00:26',7,NULL,2,'','get_inst_tree',0,0,'',0,''),\n(8,'根据业务code查询节点情况','/cmdb/get_agent_by_business_code/','','generic.cmdb.get_agent_by_business_code',1,'2020-04-22 16:24:01','2020-04-22 16:24:01',7,NULL,2,'','get_agent_by_business_code',0,0,'',0,''),\n(9,'获取所有业务以及实例','/cmdb/get_all_business/','','generic.cmdb.get_all_business',1,'2020-09-09 15:25:01','2020-04-22 16:44:06',7,NULL,2,'','get_all_business',0,0,'',0,''),\n(10,'查询节点端口情况','/control/get_agent_net_work/','','generic.control.get_agent_net_work',1,'2020-04-26 10:49:59','2020-04-26 10:49:59',8,NULL,2,'','get_agent_net_work',0,0,'',0,''),\n(11,'获取管控平台的节点信息','/control/get_control_agent_info/','','generic.control.get_control_agent_info',1,'2020-05-13 15:43:49','2020-05-13 15:43:49',8,NULL,2,'','get_control_agent_info',0,0,'',0,''),\n(12,'查询Agent文件状态','/control/get_agent_file_stats/','','generic.control.get_agent_file_stats',1,'2023-02-13 17:33:44','2020-05-23 18:01:52',8,300,2,'','get_agent_file_stats',0,0,'',0,''),\n(13,'根据分组获取Agent信息','/control/get_agent_info_by_group/','','generic.control.get_agent_info_by_group',1,'2020-05-23 19:43:40','2020-05-23 19:43:40',8,NULL,2,'','get_agent_info_by_group',0,0,'',0,''),\n(14,'获取节点的进程信息','/control/get_agent_ps_info/','','generic.control.get_agent_ps_info',1,'2020-05-23 21:01:27','2020-05-23 21:01:09',8,NULL,2,'','get_agent_ps_info',0,0,'',0,''),\n(15,'获取ZabbixAgent信息','/control/get_all_zabbix_agent/','','generic.control.get_all_zabbix_agent',1,'2020-05-26 15:41:55','2020-05-26 15:41:55',8,NULL,2,'','get_all_zabbix_agent',0,0,'',0,''),\n(16,'根据模型CODE获取CMDB的数据','/cmdb/get_cmdb_data_by_model_code/','','generic.cmdb.get_cmdb_data_by_model_code',1,'2020-05-26 16:20:47','2020-05-26 16:20:47',7,NULL,2,'','get_cmdb_data_by_model_code',0,0,'',0,''),\n(17,'根据业务CODE获取实例信息','/cmdb/get_inst_by_business_code/','','generic.cmdb.get_inst_by_business_code',1,'2020-05-26 16:30:40','2020-05-26 16:30:40',7,NULL,2,'','get_inst_by_business_code',0,0,'',0,''),\n(18,'查询CMDB所有的主机','/cmdb/get_all_host_info_for_panel/','','generic.cmdb.get_all_host_info_for_panel',1,'2020-05-30 18:03:24','2020-05-30 18:03:24',7,NULL,2,'','get_all_host_info_for_panel',0,0,'',0,''),\n(20,'根据主机信息获取Master信息','/control/get_controller_for_panel/','','generic.control.get_controller_for_panel',1,'2020-06-01 23:35:54','2020-06-01 23:35:54',8,NULL,2,'','get_controller_for_panel',0,0,'',0,''),\n(21,'获取导航栏信息','/workbench/get_nav_and_collection/','','generic.workbench.get_nav_and_collection',1,'2020-07-14 10:15:05','2020-07-10 17:21:14',9,NULL,2,'','get_nav_and_collection',0,0,'',0,''),\n(22,'获取作业平台基础聚合信息','/task/get_info_for_workbench/','','generic.task.get_info_for_workbench',1,'2020-07-14 10:35:22','2020-07-14 10:06:32',10,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(23,'获取管控平台基础聚合信息','/control/get_info_for_workbench/','','generic.control.get_info_for_workbench',1,'2020-07-14 10:07:04','2020-07-14 10:07:04',8,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(24,'获取资源平台基础聚合信息','/cmdb/get_info_for_workbench/','','generic.cmdb.get_info_for_workbench',1,'2020-07-14 10:07:31','2020-07-14 10:07:31',7,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(25,'收藏导航','/workbench/post_collection/','','generic.workbench.post_collection',1,'2020-07-15 11:29:37','2020-07-15 11:29:27',9,NULL,1,'','post_collection',0,0,'',0,''),\n(26,'发送信息','/workbench/post_info_to_user/','','generic.workbench.post_info_to_user',1,'2020-07-23 16:08:47','2020-07-23 16:07:36',9,NULL,1,'','post_info_to_user',0,0,'',0,''),\n(27,'获取用户收取的站内信息','/workbench/get_message_info/','','generic.workbench.get_message_info',1,'2020-07-27 16:44:23','2020-07-27 16:44:23',9,NULL,2,'','get_message_info',0,0,'',0,''),\n(28,'获取部门及员工树','/rbac/get_department_user_tree/','','generic.rbac.get_department_user_tree',1,'2020-08-13 00:25:42','2020-08-13 00:25:42',11,NULL,2,'','get_department_user_tree',0,0,'',0,''),\n(33,'获取用户在特定平台的目录树','/rbac/post_menu_tree/','','generic.rbac.post_menu_tree',1,'2020-08-14 16:16:54','2020-08-14 16:16:54',11,NULL,1,'','post_menu_tree',0,0,'',0,''),\n(34,'获取用户的菜单权限列表','/rbac/post_menu_privilege/','','generic.rbac.post_menu_privilege',1,'2020-08-14 16:18:09','2020-08-14 16:18:09',11,NULL,1,'','post_menu_privilege',0,0,'',0,''),\n(35,'验证用户对菜单的操作权限','/rbac/post_menu_verification/','','generic.rbac.post_menu_verification',1,'2020-08-14 16:19:10','2020-08-14 16:19:10',11,NULL,1,'','post_menu_verification',0,0,'',0,''),\n(36,'从工作台获取用户信息','/workbench/get_user_info_from_workbench/','','generic.workbench.get_user_info_from_workbench',1,'2020-09-17 17:27:56','2020-09-17 17:27:56',9,NULL,2,'','get_user_info_from_workbench',0,0,'',0,''),\n(37,'全部已读','/workbench/get_read_all_message/','','generic.workbench.get_read_all_message',1,'2020-09-30 10:09:09','2020-09-30 09:54:05',9,NULL,2,'','get_read_all_message',0,0,'',0,''),\n(38,'获取管控平台所有主机组(基础监控)','/control/get_all_host_group/','','generic.control.get_all_host_group',1,'2022-08-05 16:25:12','2020-10-19 17:39:10',8,NULL,2,'','get_all_host_group',0,0,'',0,''),\n(39,'获取分组下的节点','/control/get_host_info_for_monitor/','','generic.control.get_host_info_for_monitor',1,'2020-10-19 17:55:00','2020-10-19 17:55:00',8,NULL,1,'','get_host_info_for_monitor',0,0,'',0,''),\n(40,'停/启用主机监控','/control/stop_or_start_monitor/','','generic.control.stop_or_start_monitor',1,'2020-10-20 11:34:25','2020-10-20 11:34:16',8,NULL,1,'','stop_or_start_monitor',0,0,'',0,''),\n(41,'获取监控主机统计','/control/monitor_host_count/','','generic.control.monitor_host_count',1,'2020-10-21 11:35:31','2020-10-21 11:35:31',8,NULL,2,'','monitor_host_count',0,0,'',0,''),\n(42,'获取监控类型统计','/control/host_monitor_type_count/','','generic.control.host_monitor_type_count',1,'2020-10-21 11:35:49','2020-10-21 11:35:49',8,NULL,2,'','host_monitor_type_count',0,0,'',0,''),\n(43,'获取事件信息统计','/control/event_type_count/','','generic.control.event_type_count',1,'2020-10-21 11:47:34','2020-10-21 11:36:08',8,NULL,2,'','event_type_count',0,0,'',0,''),\n(44,'获取主机告警详情','/control/host_problem_info/','','generic.control.host_problem_info',1,'2020-10-21 11:36:27','2020-10-21 11:36:27',8,NULL,2,'','host_problem_info',0,0,'',0,''),\n(45,'搜索应用集','/control/search_application/','','generic.control.search_application',1,'2020-10-23 15:57:39','2020-10-23 15:57:39',8,NULL,2,'','search_application',0,0,'',0,''),\n(46,'搜索管控平台主机组','/control/search_host_group/','','generic.control.search_host_group',1,'2020-10-23 15:58:09','2020-10-23 15:58:09',8,NULL,2,'','search_host_group',0,0,'',0,''),\n(47,'管控平台主机','/control/search_host/','','generic.control.search_host',1,'2020-10-23 15:58:49','2020-10-23 15:58:49',8,NULL,2,'','search_host',0,0,'',0,''),\n(48,'搜索触发器','/control/search_trigger/','','generic.control.search_trigger',1,'2020-10-23 15:59:28','2020-10-23 15:59:28',8,NULL,2,'','search_trigger',0,0,'',0,''),\n(49,'获取监控平台基础聚合信息','/monitor/get_info_for_workbench/','','generic.monitor.get_info_for_workbench',1,'2020-10-23 17:04:07','2020-10-23 17:04:07',12,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(50,'查询监控问题信息','/control/problem_info/','','generic.control.problem_info',1,'2020-10-26 14:19:26','2020-10-26 14:19:26',8,NULL,2,'','problem_info',0,0,'',0,''),\n(51,'获取用户sshkey','/workbench/get_user_ssh_key/','','generic.workbench.get_user_ssh_key',1,'2020-11-06 18:16:55','2020-11-06 18:16:55',9,NULL,2,'','get_user_ssh_key',0,0,'',0,''),\n(52,'获取统一权限全部用户','/rbac/get_all_user/','','generic.rbac.get_all_user',1,'2020-11-11 16:57:46','2020-11-11 16:57:46',11,NULL,2,'','get_all_user',0,0,'',0,''),\n(53,'接收监控平台信息发送至工作台','/control/send_message_from_monitor/','','generic.control.send_message_from_monitor',1,'2020-11-13 16:44:16','2020-11-13 16:44:16',8,NULL,2,'','send_message_from_monitor',0,0,'',0,''),\n(54,'获取告警排名','/control/get_alarm_rank/','','generic.control.get_alarm_rank',1,'2020-12-23 14:55:29','2020-12-23 14:55:29',8,NULL,2,'','get_alarm_rank',0,0,'',0,''),\n(55,'接收动作日志信息','/control/receive_action_info/','','generic.control.receive_action_info',1,'2020-12-28 17:12:51','2020-12-28 17:12:51',8,NULL,1,'','receive_action_info',0,0,'',0,''),\n(58,'测试ESB','/devops/get_test/','','generic.devops.get_test',1,'2021-01-11 15:17:37','2021-01-11 15:17:37',14,NULL,2,'','get_test',0,0,'',0,''),\n(60,'获取所有云主机','/cmp/get_all_cloud_host/','','generic.cmp.get_all_cloud_host',1,'2025-08-27 18:33:42','2021-01-12 11:37:18',13,600,2,'','get_all_cloud_host',0,0,'',0,''),\n(61,'更新所有云主机','/cmdb/update_all_cloud_host/','','generic.cmdb.update_all_cloud_host',1,'2021-01-12 12:02:46','2021-01-12 11:37:46',7,NULL,1,'','update_all_cloud_host',0,0,'',0,''),\n(62,'获取模型字段','/cmdb/get_model_field/','','generic.cmdb.get_model_field',1,'2021-01-12 17:02:55','2021-01-12 17:02:55',7,NULL,2,'','get_model_field',0,0,'',0,''),\n(63,'更新所有业务信息','/cmdb/update_all_business/','','generic.cmdb.update_all_business',1,'2021-01-18 11:52:32','2021-01-15 23:36:47',7,NULL,1,'','update_all_business',0,0,'',0,''),\n(64,'删除业务信息','/cmdb/delete_business/','','generic.cmdb.delete_business',1,'2021-01-18 15:23:46','2021-01-18 15:23:46',7,NULL,1,'','delete_business',0,0,'',0,''),\n(65,'获取关联模型数据','/cmdb/get_link_inst/','','generic.cmdb.get_link_inst',1,'2021-01-30 14:01:31','2021-01-30 14:01:31',7,NULL,2,'','get_link_inst',0,0,'',0,''),\n(66,'更新关联关系','/cmdb/update_link_inst/','','generic.cmdb.update_link_inst',1,'2021-01-30 16:38:54','2021-01-30 16:38:54',7,NULL,1,'','update_link_inst',0,0,'',0,''),\n(67,'获取实例关系数据','/cmdb/get_inst_by_rel_data/','','generic.cmdb.get_inst_by_rel_data',1,'2021-02-01 15:17:39','2021-02-01 15:17:39',7,NULL,2,'','get_inst_by_rel_data',0,0,'',0,''),\n(68,'获取附件','/cmdb/get_upload_file/','','generic.cmdb.get_upload_file',1,'2021-02-03 12:04:15','2021-02-03 12:04:15',7,NULL,2,'','get_upload_file',0,0,'',0,''),\n(69,'大屏所需数据','/task/data_for_screen/','','generic.task.data_for_screen',1,'2021-03-10 15:20:04','2021-03-10 15:20:04',10,NULL,2,'','data_for_screen',0,0,'',0,''),\n(70,'大屏所需数据','/cmp/data_for_screen/','','generic.cmp.data_for_screen',1,'2021-03-10 15:20:20','2021-03-10 15:20:20',13,NULL,2,'','data_for_screen',0,0,'',0,''),\n(71,'大屏所需数据','/control/data_for_screen/','','generic.control.data_for_screen',1,'2021-03-10 15:20:37','2021-03-10 15:20:37',8,NULL,2,'','data_for_screen',0,0,'',0,''),\n(72,'大屏所需数据','/monitor/data_for_screen/','','generic.monitor.data_for_screen',1,'2021-03-10 15:21:10','2021-03-10 15:21:10',12,NULL,2,'','data_for_screen',0,0,'',0,''),\n(73,'大屏所需数据','/devops/data_for_screen/','','generic.devops.data_for_screen',1,'2024-11-26 09:47:57','2021-03-10 15:55:23',14,200,2,'','data_for_screen',0,0,'',0,''),\n(74,'获取统一权限部门信息和用户信息','/rbac/get_workorder_sync/','','generic.rbac.get_workorder_sync',1,'2021-03-16 10:23:11','2021-03-16 10:08:27',11,NULL,2,'','get_workorder_sync',0,0,'',0,''),\n(75,'同步用户信息和组织架构信息','/workbench/get_sync_data/','','generic.workbench.get_sync_data',1,'2021-03-17 11:40:18','2021-03-17 11:37:25',9,NULL,2,'','get_sync_data',0,0,'',0,''),\n(76,'同步工单用户信息','/workbench/sync_order_user_message/','','generic.workbench.sync_order_user_message',1,'2025-08-27 18:34:06','2021-04-14 18:53:32',9,600,2,'','sync_order_user_message',0,0,'',0,''),\n(77,'获取主机分组','/control/get_agent_group_list/','','generic.control.get_agent_group_list',1,'2021-04-22 11:34:30','2021-04-21 18:20:41',8,NULL,2,'','get_agent_group_list',0,0,'',0,''),\n(78,'修改主机模板标记变量','/control/update_host_sign_variable_template/','','generic.control.update_host_sign_variable_template',1,'2021-04-22 15:40:45','2021-04-22 15:01:42',8,NULL,1,'','update_host_sign_variable_template',0,0,'',0,''),\n(79,'获取Zabbix监控模板','/control/get_zabbix_template/','','generic.control.get_zabbix_template',1,'2021-04-22 19:08:32','2021-04-22 19:07:31',8,NULL,2,'','get_zabbix_template',0,0,'',0,''),\n(80,'获取分组列表和主机数量-job','/control/host_group_to_job/','','generic.control.host_group_to_job',1,'2021-04-29 09:30:01','2021-04-29 09:30:01',8,NULL,2,'','host_group_to_job',0,0,'',0,''),\n(81,'通过分组获取主机数据','/control/host_admin_from_group_to_job/','','generic.control.host_admin_from_group_to_job',1,'2021-04-29 09:34:53','2021-04-29 09:30:53',8,NULL,2,'','host_admin_from_group_to_job',0,0,'',0,''),\n(82,'获取实例关联模型汇总','/cmdb/get_link_model_count/','','generic.cmdb.get_link_model_count',1,'2021-05-07 19:56:23','2021-05-07 19:55:33',7,NULL,2,'','get_link_model_count',0,0,'',0,''),\n(83,'获取业务树','/devops/business_tree/','','generic.devops.business_tree',1,'2021-05-11 15:53:26','2021-05-11 15:53:08',14,NULL,2,'','business_tree',0,0,'',0,''),\n(84,'获取云管平台基础聚合信息','/cmp/get_info_for_workbench/','','generic.cmp.get_info_for_workbench',1,'2021-06-01 16:43:38','2021-06-01 16:43:38',13,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(85,'获取应用平台基础聚合信息','/devops/get_info_for_workbench/','','generic.devops.get_info_for_workbench',1,'2021-06-01 17:32:29','2021-06-01 17:32:29',14,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(86,'更新用户信息','/rbac/update_user_info/','','generic.rbac.update_user_info',1,'2021-07-08 10:53:00','2021-07-08 10:53:00',11,NULL,1,'','update_user_info',0,0,'',0,''),\n(87,'执行脚本','/control/post_script/','','generic.control.post_script',1,'2023-02-13 17:31:54','2021-07-28 08:54:02',8,300,1,'','post_script',0,0,'',0,''),\n(88,'根据RequestID查询结果','/control/get_request_id_status/','','generic.control.get_request_id_status',1,'2021-07-28 08:54:48','2021-07-28 08:54:48',8,NULL,2,'','get_request_id_status',0,0,'',0,''),\n(89,'加密文本','/cmdb/encrypt_text/','','generic.cmdb.encrypt_text',1,'2021-08-16 16:53:20','2021-08-16 15:04:50',7,NULL,1,'','encrypt_text',0,0,'',0,''),\n(90,'同步用户用户组','/rbac/get_user_group_sync/','','generic.rbac.get_user_group_sync',1,'2021-08-23 19:59:14','2021-08-23 19:59:14',11,NULL,2,'','get_user_group_sync',0,0,'',0,''),\n(91,'通知同步用户用户组','/bastion/sync_user_group/','','generic.bastion.sync_user_group',1,'2024-09-24 17:05:48','2021-08-24 14:20:43',15,240,2,'','sync_user_group',0,0,'',0,''),\n(92,'文件分发','/control/post_file/','','generic.control.post_file',1,'2023-02-13 17:34:01','2021-08-28 12:03:55',8,300,1,'','post_file',0,0,'',0,''),\n(93,'执行命令','/control/post_shell/','','generic.control.post_shell',1,'2023-02-13 17:33:08','2021-08-28 12:04:16',8,300,1,'','post_shell',0,0,'',0,''),\n(94,'同步管控新建主机','/cmdb/import_server_from_control/','','generic.cmdb.import_server_from_control',1,'2021-09-08 19:58:54','2021-09-08 19:22:04',7,NULL,1,'','import_server_from_control',0,0,'',0,''),\n(95,'获取外平台连接堡垒机用Token','/bastion/get_cache_token/','','generic.bastion.get_cache_token',1,'2021-09-09 15:10:01','2021-09-09 15:10:01',15,NULL,1,'','get_cache_token',0,0,'',0,''),\n(96,'获取资产全部分组以及模型','/cmdb/get_zc_model/','','generic.cmdb.get_zc_model',1,'2021-09-10 14:53:05','2021-09-10 14:47:04',7,NULL,2,'','get_zc_model',0,0,'',0,''),\n(97,'获取资产插件','/control/get_asset_collect/','','generic.control.get_asset_collect',1,'2021-09-16 11:33:50','2021-09-16 11:33:50',8,NULL,2,'','get_asset_collect',0,0,'',0,''),\n(98,'获取堡垒机基础聚合信息','/bastion/get_info_for_workbench/','','generic.bastion.get_info_for_workbench',1,'2021-09-16 16:33:47','2021-09-16 16:33:47',15,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(99,'用户验证','/rbac/user_auth/','','generic.rbac.user_auth',1,'2021-11-13 11:16:37','2021-11-13 11:16:37',11,NULL,1,'','user_auth',0,0,'',0,''),\n(100,'获取当前用户的MFA验证状态','/rbac/get_user_google_auth_status/','','generic.rbac.get_user_google_auth_status',1,'2021-12-07 17:51:19','2021-12-07 17:51:19',11,NULL,2,'','get_user_google_auth_status',0,0,'',0,''),\n(101,'为用户创建Google验证秘钥','/rbac/create_google_secret_for_user/','','generic.rbac.create_google_secret_for_user',1,'2021-12-07 17:52:08','2021-12-07 17:52:08',11,NULL,2,'','create_google_secret_for_user',0,0,'',0,''),\n(102,'验证用户的验证码是否正确','/rbac/check_google_verify_code/','','generic.rbac.check_google_verify_code',1,'2021-12-07 17:52:35','2021-12-07 17:52:35',11,NULL,2,'','check_google_verify_code',0,0,'',0,''),\n(103,'修改用户的MFA验证状态','/rbac/modify_user_google_auth_status/','','generic.rbac.modify_user_google_auth_status',1,'2021-12-07 17:53:08','2021-12-07 17:53:08',11,NULL,2,'','modify_user_google_auth_status',0,0,'',0,''),\n(104,'获取平台使用指南','/workbench/guide/','','generic.workbench.guide',1,'2021-12-08 13:51:53','2021-12-08 13:51:53',9,NULL,2,'','guide',0,0,'',0,''),\n(105,'根据应用获取所关联的服务拨测信息','/monitor/get_service_check_monitor_by_application/','','generic.monitor.get_service_check_monitor_by_application',1,'2022-01-08 14:18:56','2022-01-08 14:18:56',12,NULL,2,'','get_service_check_monitor_by_application',0,0,'',0,''),\n(106,'获取应用大屏信息','/cmdb/get_application_screen_info/','','generic.cmdb.get_application_screen_info',1,'2022-01-08 15:28:27','2022-01-08 15:28:27',7,NULL,2,'','get_application_screen_info',0,0,'',0,''),\n(107,'下载制品库','/devops/nexus_project/','','generic.devops.nexus_project',1,'2024-07-05 17:13:32','2022-01-13 17:50:17',14,1440,1,'','nexus_project',0,0,'',0,''),\n(108,'模块执行','/control/post_func/','','generic.control.post_func',1,'2022-01-22 11:49:11','2022-01-22 11:49:11',8,NULL,1,'','post_func',0,0,'',0,''),\n(109,'发送邮件','/workbench/send_mail/','','generic.workbench.send_mail',1,'2022-01-27 20:14:20','2022-01-27 14:16:44',9,NULL,1,'','send_mail',0,0,'',0,''),\n(110,'获取底部版权信息','/rbac/get_copyright_config/','','generic.rbac.get_copyright_config',1,'2022-02-24 13:09:35','2022-02-24 13:09:35',11,NULL,2,'','get_copyright_config',0,0,'',0,''),\n(111,'获取MFA绑定二维码','/workbench/get_google_auth/','','generic.workbench.get_google_auth',1,'2022-02-26 13:53:44','2022-02-26 13:53:44',9,NULL,2,'','get_google_auth',0,0,'',0,''),\n(112,'绑定MFA','/workbench/bind_google_auth/','','generic.workbench.bind_google_auth',1,'2022-02-26 13:54:18','2022-02-26 13:54:18',9,NULL,1,'','bind_google_auth',0,0,'',0,''),\n(113,'获取Grafana服务','/control/get_grafana_server/','','generic.control.get_grafana_server',1,'2022-04-02 10:30:27','2022-04-02 10:30:27',8,NULL,2,'','get_grafana_server',0,0,'',0,''),\n(114,'执行状态Playbook任务','/control/post_status_playbook_run/','','generic.control.post_status_playbook_run',1,'2022-05-13 18:34:30','2022-05-13 18:34:30',8,NULL,1,'','post_status_playbook_run',0,0,'',0,''),\n(115,'更新模板文件','/control/post_status_playbook_update/','','generic.control.post_status_playbook_update',1,'2022-05-13 18:35:29','2022-05-13 18:35:29',8,NULL,1,'','post_status_playbook_update',0,0,'',0,''),\n(116,'删除模板文件','/control/post_status_playbook_delete/','','generic.control.post_status_playbook_delete',1,'2022-05-13 18:36:26','2022-05-13 18:36:26',8,NULL,1,'','post_status_playbook_delete',0,0,'',0,''),\n(117,'查询状态playbook执行日志','/control/get_status_playbook_record/','','generic.control.get_status_playbook_record',1,'2022-05-13 18:37:02','2022-05-13 18:37:02',8,NULL,2,'','get_status_playbook_record',0,0,'',0,''),\n(118,'获取Zabbix历史事件统计情况','/control/get_history_event_count/','','generic.control.get_history_event_count',1,'2022-05-16 17:11:32','2022-05-16 17:11:32',8,NULL,2,'','get_history_event_count',0,0,'',0,''),\n(119,'批量获取应用关联的主机','/cmdb/get_link_model_data/','','generic.cmdb.get_link_model_data',1,'2022-05-19 23:50:04','2022-05-19 23:45:48',7,NULL,1,'','get_link_model_data',0,0,'',0,''),\n(120,'获取授权过的应用树','/devops/get_auth_application_tree_to_job/','','generic.devops.get_auth_application_tree_to_job',1,'2022-05-20 12:59:38','2022-05-20 12:59:38',14,NULL,2,'','get_auth_application_tree_to_job',0,0,'',0,''),\n(121,'获取应用绑定的已被纳管和授权的主机','/devops/get_auth_application_host_to_job/','','generic.devops.get_auth_application_host_to_job',1,'2023-11-15 17:27:35','2022-05-20 13:00:40',14,100,2,'','get_auth_application_host_to_job',0,0,'',0,''),\n(122,'校验管控采集插件被cmdb采集任务引用情况','/cmdb/post_check_collect_task/','','generic.cmdb.post_check_collect_task',1,'2022-05-25 18:50:24','2022-05-25 18:50:24',7,NULL,1,'','post_check_collect_task',0,0,'',0,''),\n(123,'获取工单大屏','/workbench/get_work_order_screen/','','generic.workbench.get_work_order_screen',1,'2022-06-14 18:11:03','2022-06-14 18:11:03',9,NULL,2,'','get_work_order_screen',0,0,'',0,''),\n(124,'获取最新zabbix信息','/control/post_new_zabbix_info/','','generic.control.post_new_zabbix_info',1,'2022-06-27 11:51:18','2022-06-27 11:51:18',8,NULL,1,'','post_new_zabbix_info',0,0,'',0,''),\n(125,'获取用户更新信息','/rbac/get_user_update_info/','','generic.rbac.get_user_update_info',1,'2022-07-18 15:23:26','2022-07-18 15:23:26',11,NULL,2,'','get_user_update_info',0,0,'',0,''),\n(126,'获取企业微信认证信息','/rbac/get_wx_work_config/','','generic.rbac.get_wx_work_config',1,'2022-07-25 13:57:55','2022-07-25 13:57:55',11,NULL,2,'','get_wx_work_config',0,0,'',0,''),\n(127,'获取私有云主机信息','/cmp/get_all_private_host/','','generic.cmp.get_all_private_host',1,'2022-08-01 16:20:10','2022-08-01 16:20:10',13,NULL,2,'','get_all_private_host',0,0,'',0,''),\n(128,'更新CMDB中私有云主机','/cmdb/update_all_private_host/','','generic.cmdb.update_all_private_host',1,'2022-08-01 16:25:59','2022-08-01 16:25:50',7,NULL,1,'','update_all_private_host',0,0,'',0,''),\n(129,'获取管控平台所有主机组(应用监控)','/control/get_all_host_group_prom/','','generic.control.get_all_host_group_prom',1,'2022-08-05 16:25:00','2022-08-05 16:25:00',8,NULL,2,'','get_all_host_group_prom',0,0,'',0,''),\n(130,'获取分组下的节点(应用监控)','/control/get_host_info_for_prom/','','generic.control.get_host_info_for_prom',1,'2022-08-05 16:27:00','2022-08-05 16:27:00',8,NULL,1,'','get_host_info_for_prom',0,0,'',0,''),\n(131,'刷新最新Prom信息','/control/post_new_prom_info/','','generic.control.post_new_prom_info',1,'2022-08-08 14:53:23','2022-08-08 14:53:23',8,NULL,1,'','post_new_prom_info',0,0,'',0,''),\n(132,'获取全部Prometheus Server','/control/post_prom_tree_to_prom/','','generic.control.post_prom_tree_to_prom',1,'2022-08-18 11:33:50','2022-08-18 11:33:50',8,NULL,1,'','post_prom_tree_to_prom',0,0,'',0,''),\n(133,'获取全部指标采集插件','/control/post_metric_collect_to_prom/','','generic.control.post_metric_collect_to_prom',1,'2022-08-18 11:35:23','2022-08-18 11:35:23',8,NULL,1,'','post_metric_collect_to_prom',0,0,'',0,''),\n(134,'安装指标采集安装包到主机','/control/post_metric_install_package_to_prom/','','generic.control.post_metric_install_package_to_prom',1,'2022-08-19 15:26:39','2022-08-18 11:36:35',8,NULL,1,'','post_metric_install_package_to_prom',0,0,'',0,''),\n(135,'注册指标采集实例到Prometheus','/control/post_metric_register_prom_to_prom/','','generic.control.post_metric_register_prom_to_prom',1,'2022-08-18 11:37:25','2022-08-18 11:37:25',8,NULL,1,'','post_metric_register_prom_to_prom',0,0,'',0,''),\n(136,'获取指标采集实例监控状态','/control/post_metric_inst_status_to_prom/','','generic.control.post_metric_inst_status_to_prom',1,'2022-08-18 11:39:35','2022-08-18 11:39:35',8,NULL,1,'','post_metric_inst_status_to_prom',0,0,'',0,''),\n(137,'获取安装指标采集日志','/control/get_metric_install_package_log_to_prom/','','generic.control.get_metric_install_package_log_to_prom',1,'2022-08-18 16:09:01','2022-08-18 16:09:01',8,NULL,2,'','get_metric_install_package_log_to_prom',0,0,'',0,''),\n(138,'分发指标采集安装包到主机','/control/post_metric_send_package_to_prom/','','generic.control.post_metric_send_package_to_prom',1,'2022-08-19 15:26:44','2022-08-19 15:25:42',8,NULL,1,'','post_metric_send_package_to_prom',0,0,'',0,''),\n(139,'获取认证配置信息','/rbac/get_auth_config/','','generic.rbac.get_auth_config',1,'2022-08-31 11:57:44','2022-08-31 11:57:44',11,NULL,2,'','get_auth_config',0,0,'',0,''),\n(140,'查询指标采集监控实例','/prom/post_metric_inst/','','generic.prom.post_metric_inst',1,'2022-09-01 11:05:01','2022-09-01 11:05:01',16,NULL,1,'','post_metric_inst',0,0,'',0,''),\n(142,'Prom加载配置文件','/control/prom_config_reload/','','generic.control.prom_config_reload',1,'2022-09-18 17:00:47','2022-09-18 17:00:47',8,NULL,1,'','prom_config_reload',0,0,'',0,''),\n(143,'Prom获取规则','/control/get_prom_rule_info/','','generic.control.get_prom_rule_info',1,'2022-09-18 17:11:45','2022-09-18 17:03:22',8,NULL,1,'','get_prom_rule_info',0,0,'',0,''),\n(144,'Prom获取告警','/control/get_prom_alert_info/','','generic.control.get_prom_alert_info',1,'2022-09-18 17:10:40','2022-09-18 17:10:40',8,NULL,1,'','get_prom_alert_info',0,0,'',0,''),\n(145,'Prom获取指标信息','/control/get_prom_metadata/','','generic.control.get_prom_metadata',1,'2022-09-18 17:15:21','2022-09-18 17:15:21',8,NULL,1,'','get_prom_metadata',0,0,'',0,''),\n(146,'获取模型分组','/cmdb/get_model_group/','','generic.cmdb.get_model_group',1,'2022-09-26 11:08:27','2022-09-26 11:08:27',7,NULL,2,'','get_model_group',0,0,'',0,''),\n(147,'获取模型分组下的模型','/cmdb/get_model_by_model_group/','','generic.cmdb.get_model_by_model_group',1,'2022-09-26 11:09:12','2022-09-26 11:09:12',7,NULL,2,'','get_model_by_model_group',0,0,'',0,''),\n(149,'根据实例获取实例主机','/cmdb/get_host_by_instance/','','generic.cmdb.get_host_by_instance',1,'2022-09-27 16:27:33','2022-09-27 16:27:33',7,NULL,2,'','get_host_by_instance',0,0,'',0,''),\n(150,'执行脚本V2,在cmdb实例绑定的主机上执行','/control/post_script_v2/','','generic.control.post_script_v2',1,'2023-02-13 17:32:09','2022-09-28 14:48:54',8,300,1,'','post_script_v2',0,0,'',0,''),\n(151,'通过app唯一标识获取应用监控关联的服务拨测','/prom/post_service_check_for_app/','','generic.prom.post_service_check_for_app',1,'2022-10-11 19:17:29','2022-10-11 19:17:29',16,60,1,'','post_service_check_for_app',0,0,'',0,''),\n(152,'获取应用监控服务拨测波测数据','/prom/get_service_check_metric/','','generic.prom.get_service_check_metric',1,'2022-10-11 19:18:04','2022-10-11 19:18:04',16,NULL,2,'','get_service_check_metric',0,0,'',0,''),\n(153,'通过应用唯一标识获取主机监控信息','/control/get_host_info_for_develop/','','generic.control.get_host_info_for_develop',1,'2022-10-12 18:49:23','2022-10-12 18:46:59',8,60,1,'','get_host_info_for_develop',0,0,'',0,''),\n(154,'发送文件-支持多文件','/control/post_send_file_v2/','','generic.control.post_send_file_v2',1,'2023-02-13 17:33:57','2022-10-18 10:03:06',8,300,1,'','post_send_file_v2',0,0,'',0,''),\n(155,'获取发送文件日志','/control/get_send_file_v2_request_id_status/','','generic.control.get_send_file_v2_request_id_status',1,'2022-10-18 10:04:14','2022-10-18 10:04:14',8,NULL,2,'','get_send_file_v2_request_id_status',0,0,'',0,''),\n(156,'获取用户授权平台','/rbac/get_auth_platform/','','generic.rbac.get_auth_platform',1,'2022-10-19 20:34:08','2022-10-19 20:28:12',11,60,2,'','get_auth_platform',0,0,'',0,''),\n(157,'发送巡检报告','/workbench/send_report/','','generic.workbench.send_report',1,'2022-10-20 01:08:07','2022-10-20 01:08:07',9,NULL,1,'','send_report',0,0,'',0,''),\n(158,'服务拨测增加修改删除','/prom/update_service_check_for_app/','','generic.prom.update_service_check_for_app',1,'2022-10-20 17:21:30','2022-10-20 17:21:30',16,NULL,1,'','update_service_check_for_app',0,0,'',0,''),\n(159,'通过app唯一标识获取应用监控关联的组件监控','/prom/post_inst_monitor_for_app/','','generic.prom.post_inst_monitor_for_app',1,'2022-10-20 21:33:59','2022-10-20 21:33:59',16,NULL,1,'','post_inst_monitor_for_app',0,0,'',0,''),\n(160,'获取Agent主机文件','/control/get_minion_file/','','generic.control.get_minion_file',1,'2022-11-02 20:49:27','2022-11-02 20:49:27',8,NULL,1,'','get_minion_file',0,0,'',0,''),\n(162,'同步作业平台用户信息','/task/sync_user_info/','','generic.task.sync_user_info',1,'2024-09-24 17:08:59','2022-11-10 00:40:29',10,240,2,'','sync_user_info',0,0,'',0,''),\n(163,'同步智能巡检用户信息','/auto/sync_user_info/','','generic.auto.sync_user_info',1,'2024-09-24 17:02:46','2022-11-10 00:55:39',17,240,2,'','sync_user_info',0,0,'',0,''),\n(164,'同步应用平台用户信息','/devops/sync_user_info/','','generic.devops.sync_user_info',1,'2024-09-24 17:07:07','2022-11-10 10:34:38',14,240,2,'','sync_user_info',0,0,'',0,''),\n(165,'同步容器平台用户信息','/k8s/sync_user_info/','','generic.k8s.sync_user_info',1,'2024-09-24 17:07:46','2022-11-12 17:17:01',18,240,2,'','sync_user_info',0,0,'',0,''),\n(166,'同步基础监控用户信息','/monitor/sync_user_info/','','generic.monitor.sync_user_info',1,'2024-09-24 17:08:14','2022-11-12 17:17:57',12,240,2,'','sync_user_info',0,0,'',0,''),\n(167,'同步资源平台用户信息','/cmdb/sync_user_info/','','generic.cmdb.sync_user_info',1,'2025-08-27 18:32:55','2022-11-12 17:18:23',7,600,2,'','sync_user_info',0,0,'',0,''),\n(168,'同步管控平台用户信息','/control/sync_user_info/','','generic.control.sync_user_info',1,'2024-09-24 17:06:38','2022-11-12 17:18:48',8,240,2,'','sync_user_info',0,0,'',0,''),\n(169,'同步云管平台用户信息','/cmp/sync_user_info/','','generic.cmp.sync_user_info',1,'2024-09-24 17:06:14','2022-11-12 17:19:17',13,240,2,'','sync_user_info',0,0,'',0,''),\n(170,'同步事件中心用户信息','/event/sync_user_info/','','generic.event.sync_user_info',1,'2024-09-24 17:07:16','2022-11-14 11:50:33',19,240,2,'','sync_user_info',0,0,'',0,''),\n(171,'同步应用监控用户信息','/prom/sync_user_info/','','generic.prom.sync_user_info',1,'2024-09-24 17:08:37','2022-11-14 11:51:09',16,240,2,'','sync_user_info',0,0,'',0,''),\n(172,'同步可视化大屏用户信息','/dashboard/sync_user_info/','','generic.dashboard.sync_user_info',1,'2022-11-15 17:44:31','2022-11-15 17:44:31',20,NULL,2,'','sync_user_info',0,0,'',0,''),\n(173,'获取应用监控概览页数据','/prom/get_info_for_workbench/','','generic.prom.get_info_for_workbench',1,'2022-11-21 20:47:50','2022-11-21 20:47:50',16,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(174,'获取资产全部分组以及模型v2(资源授权认证)','/cmdb/get_zc_model_v2/','','generic.cmdb.get_zc_model_v2',1,'2022-12-15 22:41:00','2022-12-15 22:41:00',7,NULL,2,'','get_zc_model_v2',0,0,'',0,''),\n(175,'批量获取实例关联指定模型数据v2(资源授权认证)','/cmdb/get_link_model_data_v2/','','generic.cmdb.get_link_model_data_v2',1,'2022-12-15 22:43:21','2022-12-15 22:43:21',7,NULL,1,'','get_link_model_data_v2',0,0,'',0,''),\n(176,'同步管控新建主机v2(资源授权认证)','/cmdb/import_server_from_control_v2/','','generic.cmdb.import_server_from_control_v2',1,'2022-12-15 22:45:29','2022-12-15 22:45:29',7,NULL,1,'','import_server_from_control_v2',0,0,'',0,''),\n(177,'从管控平台导入Grains信息v2(资源授权认证)','/cmdb/import_grains_from_control_v2/','','generic.cmdb.import_grains_from_control_v2',1,'2022-12-15 22:47:03','2022-12-15 22:47:03',7,NULL,1,'','import_grains_from_control_v2',0,0,'',0,''),\n(178,'获取所有主机v2(资源授权认证)','/cmdb/get_all_host_v2/','','generic.cmdb.get_all_host_v2',1,'2026-02-05 15:01:19','2022-12-15 22:48:07',7,60,2,'','get_all_host_v2',0,0,'',0,''),\n(179,'更新节点的Agent情况v2(资源授权认证)','/cmdb/update_agent_state_v2/','','generic.cmdb.update_agent_state_v2',1,'2025-12-30 15:43:45','2022-12-15 22:49:18',7,300,1,'','update_agent_state_v2',0,0,'',0,''),\n(180,'获取基础监控服务拨测汇总数据','/monitor/get_service_check_from_monitor/','','generic.monitor.get_service_check_from_monitor',1,'2022-12-16 18:01:47','2022-12-16 18:01:47',12,NULL,2,'','get_service_check_from_monitor',0,0,'',0,''),\n(181,'根据模型code获取CMDB的数据v2(资源授权认证)','/cmdb/get_cmdb_data_by_model_code_v2/','','generic.cmdb.get_cmdb_data_by_model_code_v2',1,'2022-12-16 22:24:06','2022-12-16 22:24:06',7,NULL,2,'','get_cmdb_data_by_model_code_v2',0,0,'',0,''),\n(182,'获取应用大屏信息v2(资源授权认证)','/cmdb/get_application_screen_info_v2/','','generic.cmdb.get_application_screen_info_v2',1,'2022-12-20 11:34:57','2022-12-20 11:34:57',7,NULL,2,'','get_application_screen_info_v2',0,0,'',0,''),\n(183,'获取资源平台基础聚合信息v2(资源授权认证)','/cmdb/get_info_for_workbench_v2/','','generic.cmdb.get_info_for_workbench_v2',1,'2022-12-20 12:05:15','2022-12-20 12:02:20',7,NULL,2,'','get_info_for_workbench_v2',0,0,'',0,''),\n(184,'获取指定模型的指定数据是否有指定操作权限','/cmdb/check_model_data_operation/','','generic.cmdb.check_model_data_operation',1,'2022-12-20 17:11:48','2022-12-20 17:11:48',7,NULL,1,'','check_model_data_operation',0,0,'',0,''),\n(186,'获取部门信息带普通用户','/rbac/get_dep_v2_to_cmdb/','','generic.rbac.get_dep_v2_to_cmdb',1,'2022-12-20 18:58:50','2022-12-20 18:58:50',11,NULL,2,'','get_dep_v2_to_cmdb',0,0,'',0,''),\n(187,'记录登录用户','/rbac/post_login_log/','','generic.rbac.post_login_log',1,'2022-12-21 22:13:37','2022-12-21 22:13:37',11,NULL,1,'','post_login_log',0,0,'',0,''),\n(188,'获取部门全部普通用户信息','/rbac/get_user_v2_to_cmdb/','','generic.rbac.get_user_v2_to_cmdb',1,'2022-12-23 14:12:46','2022-12-23 14:12:46',11,NULL,2,'','get_user_v2_to_cmdb',0,0,'',0,''),\n(189,'获取主题色和平台语言配置','/workbench/get_language_theme_config/','','generic.workbench.get_language_theme_config',1,'2023-01-31 10:10:03','2023-01-31 09:34:59',9,NULL,2,'','get_language_theme_config',0,0,'',0,''),\n(190,'获取授权平台接口','/rbac/get_user_auth_api/','','generic.rbac.get_user_auth_api',1,'2023-02-13 09:26:41','2023-02-10 17:48:34',11,NULL,2,'','get_user_auth_api',0,0,'',0,''),\n(191,'获取主题色和平台语言配置','/rbac/get_user_rbac_auth_config/','','generic.rbac.get_user_rbac_auth_config',1,'2023-02-15 10:49:29','2023-02-15 10:49:29',11,NULL,2,'','get_user_rbac_auth_config',0,0,'',0,''),\n(192,'同步管控来的st2配置数据','/devops/sync_stackstorm_from_control/','','generic.devops.sync_stackstorm_from_control',1,'2023-02-22 16:07:13','2023-02-22 16:07:13',14,NULL,1,'','sync_stackstorm_from_control',0,0,'',0,''),\n(193,'同步管控来的st2配置数据','/event/sync_stackstorm_from_control/','','generic.event.sync_stackstorm_from_control',1,'2023-02-22 16:07:41','2023-02-22 16:07:41',19,NULL,1,'','sync_stackstorm_from_control',0,0,'',0,''),\n(194,'获取应用平台授权业务应用服务总数','/devops/get_business_auth_count/','','generic.devops.get_business_auth_count',1,'2023-02-22 18:04:30','2023-02-22 18:04:30',14,NULL,2,'','get_business_auth_count',0,0,'',0,''),\n(195,'同步知识库用户信息','/kbase/sync_user_info/','','generic.kbase.sync_user_info',1,'2024-09-24 17:07:56','2023-03-02 19:46:16',21,240,2,'','sync_user_info',0,0,'',0,''),\n(196,'获取全部部门信息','/rbac/get_all_department_user_tree/','','generic.rbac.get_all_department_user_tree',1,'2023-03-14 17:03:27','2023-03-14 17:03:27',11,NULL,2,'','get_all_department_user_tree',0,0,'',0,''),\n(197,'同步用户信息','/log/sync_user_info/','','generic.log.sync_user_info',1,'2024-09-24 17:08:05','2023-03-23 14:43:43',22,240,2,'','sync_user_info',0,0,'',0,''),\n(198,'同步ES数据','/log/sync_es_from_control/','','generic.log.sync_es_from_control',1,'2023-03-23 15:56:05','2023-03-23 15:56:05',22,NULL,1,'','sync_es_from_control',0,0,'',0,''),\n(199,'更新安全配置','/workbench/post_security_config/','','generic.workbench.post_security_config',1,'2023-04-12 18:52:06','2023-04-12 18:52:06',9,60,1,'','post_security_config',0,0,'',0,''),\n(200,'获取当前模型目录树','/cmdb/get_import_model_tree/','','generic.cmdb.get_import_model_tree',1,'2023-04-25 14:53:01','2023-04-25 14:53:01',7,120,2,'','get_import_model_tree',0,0,'',0,''),\n(201,'获取网络代理','/bastion/get_network_proxy/','','generic.bastion.get_network_proxy',1,'2023-05-04 11:02:01','2023-05-04 11:02:01',15,NULL,2,'','get_network_proxy',0,0,'',0,''),\n(202,'同步云管数据至资源平台','/cmp/get_cmp_resource/','','generic.cmp.get_cmp_resource',1,'2023-05-29 20:18:34','2023-05-29 19:11:32',13,NULL,2,'','get_cmp_resource',0,0,'',0,''),\n(203,'同步云管资源','/cmdb/update_cmp_resource/','','generic.cmdb.update_cmp_resource',1,'2025-08-27 18:33:13','2023-05-30 10:10:17',7,600,2,'','update_cmp_resource',0,0,'',0,''),\n(204,'同步管控网络设备数据到资源平台','/cmdb/import_network_from_control/','','generic.cmdb.import_network_from_control',1,'2023-07-01 14:44:40','2023-07-01 14:44:40',7,120,1,'','import_network_from_control',0,0,'',0,''),\n(205,'管控添加资源同步至堡垒机','/bastion/resource_from_control/','','generic.bastion.resource_from_control',1,'2023-07-11 11:53:30','2023-07-11 11:53:30',15,NULL,1,'','resource_from_control',0,0,'',0,''),\n(206,'更新Prometheus告警规则','/control/prom_rules_create_or_update/','','generic.control.prom_rules_create_or_update',1,'2023-07-25 20:23:48','2023-07-25 18:57:35',8,120,1,'','prom_rules_create_or_update',0,0,'',0,''),\n(207,'删除Prometheus告警规则','/control/prom_rules_delete/','','generic.control.prom_rules_delete',1,'2023-07-25 20:24:11','2023-07-25 18:59:03',8,NULL,1,'','prom_rules_delete',0,0,'',0,''),\n(208,'执行持续部署','/devops/run_deploy_v3/','','generic.devops.run_deploy_v3',1,'2023-08-01 14:02:38','2023-08-01 14:02:38',14,NULL,1,'','run_deploy_v3',0,0,'',0,''),\n(209,'执行流水线','/devops/run_pipeline_v3/','','generic.devops.run_pipeline_v3',1,'2023-08-01 14:03:29','2023-08-01 14:03:29',14,NULL,1,'','run_pipeline_v3',0,0,'',0,''),\n(210,'同步APM用户信息','/apm/sync_user_info/','','generic.apm.sync_user_info',1,'2024-09-24 17:02:39','2023-08-22 10:38:40',23,240,2,'','sync_user_info',0,0,'',0,''),\n(211,'获取资源平台模型树','/cmdb/get_cmdb_model_tree/','','generic.cmdb.get_cmdb_model_tree',1,'2023-09-22 17:04:42','2023-09-22 17:04:42',7,NULL,2,'','get_cmdb_model_tree',0,0,'',0,''),\n(212,'获取所有网路设备组（基础监控）','/control/get_all_network_group/','','generic.control.get_all_network_group',1,'2023-10-30 12:03:53','2023-10-30 12:03:53',8,60,2,'','get_all_network_group',0,0,'',0,''),\n(213,'获取组下的网路设备(基础监控)','/control/get_network_info_for_monitor/','','generic.control.get_network_info_for_monitor',1,'2023-10-30 12:19:23','2023-10-30 12:04:15',8,60,1,'','get_network_info_for_monitor',0,0,'',0,''),\n(214,'获取Proxy控制器信息','/control/get_controller_proxy/','','generic.control.get_controller_proxy',1,'2023-11-02 11:28:17','2023-11-02 11:28:17',8,NULL,2,'','get_controller_proxy',0,0,'',0,''),\n(215,'更新服务拨测yml文件','/control/prom_server_check_create_or_update/','','generic.control.prom_server_check_create_or_update',1,'2023-11-04 14:37:36','2023-11-04 14:37:36',8,NULL,1,'','prom_server_check_create_or_update',0,0,'',0,''),\n(216,'删除服务拨测yml文件','/control/prom_server_check_delete/','','generic.control.prom_server_check_delete',1,'2023-11-04 14:46:17','2023-11-04 14:46:17',8,NULL,1,'','prom_server_check_delete',0,0,'',0,''),\n(217,'服务拨测导出','/prom/service_check_export/','','generic.prom.service_check_export',1,'2023-11-15 14:23:07','2023-11-15 14:14:02',16,120,2,'','service_check_export',0,0,'',0,''),\n(218,'服务拨测导入','/prom/service_check_import/','','generic.prom.service_check_import',1,'2023-11-15 14:23:15','2023-11-15 14:17:25',16,120,1,'','service_check_import',0,0,'',0,''),\n(219,'获取导入服务拨测模板','/prom/service_check_import_template/','','generic.prom.service_check_import_template',1,'2023-11-15 14:23:22','2023-11-15 14:18:13',16,120,2,'','service_check_import_template',0,0,'',0,''),\n(220,'应用平台延迟卡片','/apm/get_delay_of_service/','','generic.apm.get_delay_of_service',1,'2024-01-03 20:41:34','2024-01-03 20:41:34',23,NULL,2,'','get_delay_of_service',0,0,'',0,''),\n(221,'获取应用监控服务拨测波测数据','/apm/get_service_check_metric_apm/','','generic.apm.get_service_check_metric_apm',1,'2024-01-08 20:11:16','2024-01-08 19:58:39',23,NULL,2,'','get_service_check_metric_apm',0,0,'',0,''),\n(222,'通过app唯一标识获取应用监控关联的组件监控','/apm/post_service_check_for_app_apm/','','generic.apm.post_service_check_for_app_apm',1,'2024-01-08 20:11:22','2024-01-08 19:59:11',23,NULL,1,'','post_service_check_for_app_apm',0,0,'',0,''),\n(223,'获取制品库格式','/repo/get_nexus_repository_format/','','generic.repo.get_nexus_repository_format',1,'2024-01-16 14:10:39','2024-01-16 14:10:39',24,NULL,2,'','get_nexus_repository_format',0,0,'',0,''),\n(224,'获取制品库','/repo/get_nexus_repository/','','generic.repo.get_nexus_repository',1,'2024-01-16 14:18:05','2024-01-16 14:13:35',24,NULL,2,'','get_nexus_repository',0,0,'',0,''),\n(225,'新建制品库','/repo/post_nexus_repository/','','generic.repo.post_nexus_repository',1,'2024-01-16 14:18:19','2024-01-16 14:14:14',24,NULL,1,'','post_nexus_repository',0,0,'',0,''),\n(226,'删除制品库','/repo/delete_nexus_repository/','','generic.repo.delete_nexus_repository',1,'2024-01-16 14:17:57','2024-01-16 14:14:53',24,NULL,1,'','delete_nexus_repository',0,0,'',0,''),\n(227,'获取制品库信息','/repo/get_repo/','','generic.repo.get_repo',1,'2024-01-16 14:18:12','2024-01-16 14:16:52',24,NULL,2,'','get_repo',0,0,'',0,''),\n(228,'修改制品库权限','/repo/put_repo/','','generic.repo.put_repo',1,'2024-01-16 14:17:46','2024-01-16 14:17:46',24,NULL,1,'','put_repo',0,0,'',0,''),\n(229,'获取制品库使用指引','/repo/get_nexus_repository_guide/','','generic.repo.get_nexus_repository_guide',1,'2024-01-16 14:20:14','2024-01-16 14:20:14',24,NULL,2,'','get_nexus_repository_guide',0,0,'',0,''),\n(230,'更新制品库使用指引','/repo/post_nexus_repository_guide/','','generic.repo.post_nexus_repository_guide',1,'2024-01-16 14:21:14','2024-01-16 14:21:14',24,NULL,1,'','post_nexus_repository_guide',0,0,'',0,''),\n(231,'获取制品库的组件','/repo/get_nexus_repository_component/','','generic.repo.get_nexus_repository_component',1,'2024-01-16 14:22:49','2024-01-16 14:22:49',24,NULL,2,'','get_nexus_repository_component',0,0,'',0,''),\n(232,'删除制品','/repo/delete_nexus_repository_component/','','generic.repo.delete_nexus_repository_component',1,'2024-01-17 15:21:38','2024-01-17 15:09:03',24,NULL,1,'','delete_nexus_repository_component',0,0,'',0,''),\n(233,'上传制品','/repo/post_nexus_repository_component_upload/','','generic.repo.post_nexus_repository_component_upload',1,'2024-01-17 15:10:57','2024-01-17 15:10:57',24,NULL,1,'','post_nexus_repository_component_upload',0,0,'',0,''),\n(234,'内置部署步骤','/deploy/deploy_step/','','generic.deploy.deploy_step',1,'2024-01-18 10:50:33','2024-01-18 10:50:33',25,60,2,'','deploy_step',0,0,'',0,''),\n(235,'获取部署任务','/deploy/deploy_task/','','generic.deploy.deploy_task',1,'2024-01-18 10:51:07','2024-01-18 10:51:07',25,60,2,'','deploy_task',0,0,'',0,''),\n(236,'获取部署任务日志','/deploy/deploy_task_log/','','generic.deploy.deploy_task_log',1,'2024-01-18 10:51:42','2024-01-18 10:51:42',25,60,2,'','deploy_task_log',0,0,'',0,''),\n(237,'获取部署模板','/deploy/deploy_template/','','generic.deploy.deploy_template',1,'2024-01-18 10:52:14','2024-01-18 10:52:14',25,60,2,'','deploy_template',0,0,'',0,''),\n(238,'获取部署模板分组','/deploy/deploy_template_group/','','generic.deploy.deploy_template_group',1,'2024-01-18 10:52:41','2024-01-18 10:52:41',25,60,2,'','deploy_template_group',0,0,'',0,''),\n(239,'获取制品库资源','/repo/get_nexus_repository_component_asset/','','generic.repo.get_nexus_repository_component_asset',1,'2024-01-18 11:03:13','2024-01-18 11:03:13',24,NULL,2,'','get_nexus_repository_component_asset',0,0,'',0,''),\n(240,'获取版本资源（树结构，带资源）','/repo/get_nexus_repository_component_tree/','','generic.repo.get_nexus_repository_component_tree',1,'2024-01-18 11:05:40','2024-01-18 11:05:40',24,NULL,2,'','get_nexus_repository_component_tree',0,0,'',0,''),\n(241,'获取版本资源（树结构不带资源）','/repo/get_neuxs_repository_component_tree_v2/','','generic.repo.get_nexus_repository_component_tree_v2',1,'2024-01-18 11:06:42','2024-01-18 11:06:42',24,NULL,2,'','get_nexus_repository_component_tree_v2',0,0,'',0,''),\n(242,'获取资源（根据组）','/repo/get_nexus_repository_component_v2/','','generic.repo.get_nexus_repository_component_v2',1,'2024-01-18 11:07:40','2024-01-18 11:07:40',24,NULL,2,'','get_nexus_repository_component_v2',0,0,'',0,''),\n(243,'组件搜索','/repo/get_nexus_search_component/','','generic.repo.get_nexus_search_component',1,'2024-01-18 13:03:09','2024-01-18 11:08:27',24,NULL,2,'','get_nexus_search_component',0,0,'',0,''),\n(244,'制品库下载','/repo/post_nexus_project/','','generic.repo.post_nexus_project',1,'2024-01-18 18:56:56','2024-01-18 11:09:24',24,NULL,1,'','post_nexus_project',0,0,'',0,''),\n(245,'克隆操作','/repo/post_clone_project/','','generic.repo.post_clone_project',1,'2024-01-18 11:10:13','2024-01-18 11:10:13',24,NULL,1,'','post_clone_project',0,0,'',0,''),\n(246,'取消执行任务','/deploy/deploy_task_cancel/','','generic.deploy.deploy_task_cancel',1,'2024-01-18 17:17:03','2024-01-18 17:17:03',25,60,1,'','deploy_task_cancel',0,0,'',0,''),\n(247,'克隆部署任务','/deploy/deploy_task_clone/','','generic.deploy.deploy_task_clone',1,'2024-01-18 17:17:36','2024-01-18 17:17:36',25,NULL,1,'','deploy_task_clone',0,0,'',0,''),\n(248,'执行部署任务','/deploy/deploy_task_run/','','generic.deploy.deploy_task_run',1,'2024-01-18 17:18:07','2024-01-18 17:18:07',25,60,1,'','deploy_task_run',0,0,'',0,''),\n(249,'持续部署上传脚本','/deploy/upload_script/','','generic.deploy.upload_script',1,'2024-01-18 18:14:28','2024-01-18 18:14:09',25,120,1,'','upload_script',0,0,'',0,''),\n(250,'创建部署任务','/deploy/deploy_task_create/','','generic.deploy.deploy_task_create',1,'2024-01-18 18:45:05','2024-01-18 18:45:05',25,60,1,'','deploy_task_create',0,0,'',0,''),\n(251,'修改部署任务','/deploy/deploy_task_update/','','generic.deploy.deploy_task_update',1,'2024-01-18 18:45:32','2024-01-18 18:45:32',25,60,1,'','deploy_task_update',0,0,'',0,''),\n(252,'删除部署任务','/deploy/deploy_task_delete/','','generic.deploy.deploy_task_delete',1,'2024-01-18 18:45:58','2024-01-18 18:45:58',25,60,1,'','deploy_task_delete',0,0,'',0,''),\n(253,'同步持续部署用户信息','/deploy/sync_user_info/','','generic.deploy.sync_user_info',1,'2024-09-24 17:06:54','2024-01-19 15:12:38',25,240,2,'','sync_user_info',0,0,'',0,''),\n(255,'删除流水线','/pipeline/job_delete/','','generic.pipeline.job_delete',1,'2024-01-20 16:06:28','2024-01-19 19:21:31',26,NULL,1,'','job_delete',0,0,'',0,''),\n(256,'获取指定流水线执行历史','/pipeline/get_job_v2_build/','','generic.pipeline.get_job_v2_build',1,'2024-01-19 20:05:13','2024-01-19 19:22:22',26,NULL,2,'','get_job_v2_build',0,0,'',0,''),\n(257,'获取构建队列','/pipeline/get_job_building_queue/','','generic.pipeline.get_job_building_queue',1,'2024-01-19 19:23:34','2024-01-19 19:23:34',26,NULL,2,'','get_job_building_queue',0,0,'',0,''),\n(258,'获取全部流水线描述等信息','/pipeline/get_job_v2_detail/','','generic.pipeline.get_job_v2_detail',1,'2024-01-19 20:04:39','2024-01-19 19:24:13',26,NULL,2,'','get_job_v2_detail',0,0,'',0,''),\n(259,'获取全部流水线以及当前构建历史','/pipeline/get_job_v2/','','generic.pipeline.get_job_v2',1,'2024-01-19 19:24:55','2024-01-19 19:24:55',26,NULL,2,'','get_job_v2',0,0,'',0,''),\n(260,'获取流水线模板分组','/pipeline/get_pipeline_template_group/','','generic.pipeline.get_pipeline_template_group',1,'2024-01-19 19:25:49','2024-01-19 19:25:49',26,NULL,2,'','get_pipeline_template_group',0,0,'',0,''),\n(261,'同步流水线用户信息','/pipeline/sync_user_info/','','generic.pipeline.sync_user_info',1,'2024-09-24 17:08:30','2024-01-19 19:27:10',26,240,2,'','sync_user_info',0,0,'',0,''),\n(262,'同步制品仓库用户信息','/repo/sync_user_info/','','generic.repo.sync_user_info',1,'2024-09-24 17:08:52','2024-01-19 19:28:01',24,240,2,'','sync_user_info',0,0,'',0,''),\n(263,'查看构建历史详情','/pipeline/get_job_build_info/','','generic.pipeline.get_job_build_info',1,'2024-01-20 08:34:13','2024-01-20 08:34:13',26,NULL,2,'','get_job_build_info',0,0,'',0,''),\n(264,'删除流水线构建历史','/pipeline/build_delete/','','generic.pipeline.build_delete',1,'2024-01-20 16:05:53','2024-01-20 08:34:54',26,NULL,1,'','build_delete',0,0,'',0,''),\n(265,'获取gitlab全部项目列表','/pipeline/get_gitlab_all_projects/','','generic.pipeline.get_gitlab_all_projects',1,'2024-01-20 14:11:02','2024-01-20 14:11:02',26,NULL,2,'','get_gitlab_all_projects',0,0,'',0,''),\n(266,'获取流水线参数设置','/pipeline/get_job_reconfig_parameter/','','generic.pipeline.get_job_reconfig_parameter',1,'2024-01-20 14:15:16','2024-01-20 14:15:16',26,NULL,2,'','get_job_reconfig_parameter',0,0,'',0,''),\n(267,'获取流水线配置-脚本','/pipeline/get_job_reconfig_script/','','generic.pipeline.get_job_reconfig_script',1,'2024-01-20 14:15:59','2024-01-20 14:15:59',26,NULL,2,'','get_job_reconfig_script',0,0,'',0,''),\n(268,'新建流水线','/pipeline/job_create/','','generic.pipeline.job_create',1,'2024-01-20 15:13:46','2024-01-20 14:16:31',26,NULL,1,'','job_create',0,0,'',0,''),\n(269,'修改构建参数','/pipeline/put_job_reconfig_parameter/','','generic.pipeline.put_job_reconfig_parameter',1,'2024-01-20 14:17:08','2024-01-20 14:17:08',26,NULL,2,'','put_job_reconfig_parameter',0,0,'',0,''),\n(270,'修改流水线配置-脚本','/pipeline/put_job_reconfig_script/','','generic.pipeline.put_job_reconfig_script',1,'2024-01-20 15:35:37','2024-01-20 15:35:37',26,NULL,1,'','put_job_reconfig_script',0,0,'',0,''),\n(271,'停止构建','/pipeline/build_stop/','','generic.pipeline.build_stop',1,'2024-01-20 16:13:40','2024-01-20 16:13:40',26,NULL,1,'','build_stop',0,0,'',0,''),\n(272,'获取流水线基本信息','/pipeline/get_job_rename/','','generic.pipeline.get_job_rename',1,'2024-01-20 17:27:25','2024-01-20 17:27:25',26,NULL,2,'','get_job_rename',0,0,'',0,''),\n(273,'修改流水线基本信息','/pipeline/put_job_rename/','','generic.pipeline.put_job_rename',1,'2024-01-20 17:27:58','2024-01-20 17:27:58',26,NULL,1,'','put_job_rename',0,0,'',0,''),\n(274,'获取所有的Jenkins作业列表','/pipeline/get_all_job/','','generic.pipeline.get_all_job',1,'2024-01-20 18:53:46','2024-01-20 18:53:46',26,NULL,2,'','get_all_job',0,0,'',0,''),\n(275,'获取流水线配置-触发','/pipeline/get_job_reconfig_triggers/','','generic.pipeline.get_job_reconfig_triggers',1,'2024-01-20 18:54:35','2024-01-20 18:54:35',26,NULL,2,'','get_job_reconfig_triggers',0,0,'',0,''),\n(276,'获取配置内置工具tool','/pipeline/get_job_pipeline_tool/','','generic.pipeline.get_job_pipeline_tool',1,'2024-01-20 19:08:13','2024-01-20 19:08:13',26,NULL,2,'','get_job_pipeline_tool',0,0,'',0,''),\n(277,'获取配置内置工具tool-post','/pipeline/get_job_pipeline_tool_post/','','generic.pipeline.get_job_pipeline_tool_post',1,'2024-01-20 19:09:11','2024-01-20 19:08:46',26,NULL,2,'','get_job_pipeline_tool_post',0,0,'',0,''),\n(278,'开始构建','/pipeline/build_start/','','generic.pipeline.build_start',1,'2024-01-20 20:16:48','2024-01-20 20:16:48',26,NULL,1,'','build_start',0,0,'',0,''),\n(279,'继续构建','/pipeline/build_proceed/','','generic.pipeline.build_proceed',1,'2024-01-20 20:17:33','2024-01-20 20:17:33',26,NULL,1,'','build_proceed',0,0,'',0,''),\n(280,'终止构建','/pipeline/build_abort/','','generic.pipeline.build_abort',1,'2024-01-20 20:18:09','2024-01-20 20:18:09',26,NULL,1,'','build_abort',0,0,'',0,''),\n(281,'获取告警转工单列表','/workbench/get_work_order_event/','','generic.workbench.get_work_order_event',1,'2024-03-19 18:15:02','2024-03-19 18:15:02',9,60,2,'','get_work_order_event',0,0,'',0,''),\n(282,'第三方取到转工单','/workbench/work_order_submit/','','generic.workbench.work_order_submit',1,'2024-03-21 18:30:41','2024-03-21 18:30:41',9,60,1,'','work_order_submit',0,0,'',0,''),\n(283,'推送应用平台授权','/prom/pull_app_auth/','','generic.prom.pull_app_auth',1,'2024-03-28 19:27:03','2024-03-28 15:00:57',16,NULL,1,'','pull_app_auth',0,0,'',0,''),\n(284,'获取基础监控告警信息--工作台概览页使用','/control/get_info_for_monitor_workbench/','','generic.control.get_info_for_monitor_workbench',1,'2024-03-29 11:36:01','2024-03-29 11:36:01',8,NULL,2,'','get_info_for_monitor_workbench',0,0,'',0,''),\n(285,'获取APM监控服务拨测波测和告警数据','/apm/get_service_check_alert_for_prom/','','generic.apm.get_service_check_alert_for_prom',1,'2024-03-31 15:05:55','2024-03-31 15:05:55',23,NULL,2,'','get_service_check_alert_for_prom',0,0,'',0,''),\n(286,'同步代码仓库用户信息','/code/sync_user_info/','','generic.code.sync_user_info',1,'2024-09-24 17:06:25','2024-04-01 10:27:05',27,240,2,'','sync_user_info',0,0,'',0,''),\n(287,'根据ID执行脚本','/task/run_task_by_id/','','generic.task.run_task_by_id',1,'2024-04-07 11:08:49','2024-04-07 11:05:37',10,NULL,1,'','run_task_by_id',0,0,'',0,''),\n(288,'创建gitlab用户','/code/create_gitlab_user/','','generic.code.create_gitlab_user',1,'2024-04-07 20:26:19','2024-04-07 20:26:19',27,NULL,1,'','create_gitlab_user',0,0,'',0,''),\n(289,'同步指定用户或用户组','/bastion/sync_rbac_user_group/','','generic.bastion.sync_rbac_user_group',1,'2024-09-24 17:05:33','2024-04-08 14:48:46',15,240,1,'','sync_rbac_user_group',0,0,'',0,''),\n(290,'获APM平台概览信息','/apm/get_info_for_workbench/','','generic.apm.get_info_for_workbench',1,'2024-04-30 15:12:25','2024-04-30 15:12:25',23,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(291,'获取当前应用下流水线资源统计','/pipeline/get_home_page/','','generic.pipeline.get_home_page',1,'2024-05-10 09:22:09','2024-05-10 09:22:09',26,NULL,2,'','get_home_page',0,0,'',0,''),\n(292,'获取当前应用下的流水线','/pipeline/get_pipeline_jenkins_job/','','generic.pipeline.get_pipeline_jenkins_job',1,'2024-05-10 09:23:20','2024-05-10 09:23:20',26,NULL,2,'','get_pipeline_jenkins_job',0,0,'',0,''),\n(293,'获取当前应用下持续部署资源统计','/deploy/get_home_page/','','generic.deploy.get_home_page',1,'2024-05-10 09:33:44','2024-05-10 09:33:44',25,NULL,2,'','get_home_page',0,0,'',0,''),\n(294,'获取当前应用下的持续部署任务','/deploy/get_deploy_task/','','generic.deploy.get_deploy_task',1,'2024-05-10 09:34:26','2024-05-10 09:34:26',25,NULL,2,'','get_deploy_task',0,0,'',0,''),\n(295,'获取当前应用下制品库资源统计','/repo/get_home_page/','','generic.repo.get_home_page',1,'2024-05-11 12:00:16','2024-05-11 12:00:16',24,NULL,2,'','get_home_page',0,0,'',0,''),\n(296,'获取当前应用下的制品库和公共仓库','/repo/get_repository_pagination/','','generic.repo.get_repository_pagination',1,'2024-05-11 12:00:58','2024-05-11 12:00:58',24,NULL,2,'','get_repository_pagination',0,0,'',0,''),\n(297,'获取全部应用','/devops/get_applications/','','generic.devops.get_applications',1,'2024-05-15 08:48:43','2024-05-15 08:48:43',14,NULL,2,'','get_applications',0,0,'',0,''),\n(299,'获取已关联仓库','/code/app_related_projects/','','generic.code.app_related_projects',1,'2024-05-15 14:31:31','2024-05-15 14:31:31',27,NULL,2,'','app_related_projects',0,0,'',0,''),\n(300,'获取未关联仓库','/code/app_unrelated_projects/','','generic.code.app_unrelated_projects',1,'2024-05-15 14:32:33','2024-05-15 14:32:33',27,NULL,2,'','app_unrelated_projects',0,0,'',0,''),\n(301,'关联项目','/code/relate_project/','','generic.code.relate_project',1,'2024-05-15 14:33:16','2024-05-15 14:33:16',27,NULL,1,'','relate_project',0,0,'',0,''),\n(302,'取消关联项目','/code/unrelate_project/','','generic.code.unrelate_project',1,'2024-05-15 14:33:50','2024-05-15 14:33:50',27,NULL,1,'','unrelate_project',0,0,'',0,''),\n(303,'Prom告警规则语法规则检测','/control/prom_rules_query_syntax_check/','','generic.control.prom_rules_query_syntax_check',1,'2024-05-16 14:05:30','2024-05-16 14:05:30',8,60,1,'','prom_rules_query_syntax_check',0,0,'',0,''),\n(304,'获取自己参与的项目且成员角色大于开发者的项目地址列表','/code/gitlab_repository_url/','','generic.code.gitlab_repository_url',1,'2024-05-28 11:35:13','2024-05-28 11:35:13',27,NULL,2,'','gitlab_repository_url',0,0,'',0,''),\n(305,'加载Alertmanager配置文件','/control/prom_alertmanager_config_reload/','','generic.control.prom_alertmanager_config_reload',1,'2024-05-30 11:21:04','2024-05-30 11:21:04',8,60,1,'','prom_alertmanager_config_reload',0,0,'',0,''),\n(306,'更新alertmanager配置-通知策略','/control/prom_alertmanager_create_or_update/','','generic.control.prom_alertmanager_create_or_update',1,'2024-05-30 11:21:43','2024-05-30 11:21:43',8,NULL,1,'','prom_alertmanager_create_or_update',0,0,'',0,''),\n(307,'获取业务以及应用','/devops/business_application/','','generic.devops.business_application',1,'2024-05-31 15:52:58','2024-05-31 15:52:58',14,NULL,2,'','business_application',0,0,'',0,''),\n(308,'获取应用权限','/devops/application_user_role/','','generic.devops.application_user_role',1,'2024-05-31 15:53:44','2024-05-31 15:53:44',14,NULL,2,'','application_user_role',0,0,'',0,''),\n(309,'获取群机器人列表','/workbench/get_robot_list/','','generic.workbench.get_robot_list',1,'2024-06-07 11:20:15','2024-06-07 11:20:15',9,NULL,2,'','get_robot_list',0,0,'',0,''),\n(310,'发送企微钉钉群告警通知','/workbench/send_robot/','','generic.workbench.send_robot',1,'2024-06-07 16:05:12','2024-06-07 16:05:12',9,300,1,'','send_robot',0,0,'',0,''),\n(311,'Alertmanager创建告警','/control/prom_alertmanager_create_alert/','','generic.control.prom_alertmanager_create_alert',1,'2024-06-11 15:40:43','2024-06-11 15:40:43',8,60,1,'','prom_alertmanager_create_alert',0,0,'',0,''),\n(312,'获取主机列表(模拟告警使用)','/control/get_host_list/','','generic.control.get_host_list',1,'2024-06-12 20:01:57','2024-06-12 20:01:57',8,NULL,2,'','get_host_list',0,0,'',0,''),\n(313,'获取告警列表(alertmanager)','/control/get_prom_alertmanager_alerts/','','generic.control.get_prom_alertmanager_alerts',1,'2024-06-12 20:11:29','2024-06-12 20:09:57',8,NULL,2,'','get_prom_alertmanager_alerts',0,0,'',0,''),\n(314,'获取告警组列表(alertmanager)','/control/get_prom_alertmanager_alerts_groups/','','generic.control.get_prom_alertmanager_alerts_groups',1,'2024-06-12 20:11:01','2024-06-12 20:11:01',8,NULL,2,'','get_prom_alertmanager_alerts_groups',0,0,'',0,''),\n(315,'创建静默规则(alertmanager)','/control/prom_alertmanager_create_or_update_silence/','','generic.control.prom_alertmanager_create_or_update_silence',1,'2024-06-13 16:25:32','2024-06-13 16:25:32',8,NULL,1,'','prom_alertmanager_create_or_update_silence',0,0,'',0,''),\n(316,'删除静默规则(alertmanager)','/control/prom_alertmanager_delete_silence/','','generic.control.prom_alertmanager_delete_silence',1,'2024-06-13 16:26:09','2024-06-13 16:26:09',8,NULL,1,'','prom_alertmanager_delete_silence',0,0,'',0,''),\n(317,'获取静默规则(alertmanager)','/control/get_prom_alertmanager_silence/','','generic.control.get_prom_alertmanager_silence',1,'2024-06-13 16:27:11','2024-06-13 16:27:11',8,NULL,2,'','get_prom_alertmanager_silence',0,0,'',0,''),\n(318,'大屏所需数据','/job/data_for_screen/','','generic.job.data_for_screen',1,'2024-06-20 16:42:31','2024-06-20 16:42:31',4,NULL,2,'','data_for_screen',0,0,'',0,''),\n(319,'获取作业平台基础聚合信息','/job/get_info_for_workbench/','','generic.job.get_info_for_workbench',1,'2024-06-20 16:43:08','2024-06-20 16:43:08',4,NULL,2,'','get_info_for_workbench',0,0,'',0,''),\n(320,'根据ID执行脚本','/job/run_task_by_id/','','generic.job.run_task_by_id',1,'2024-06-20 16:43:33','2024-06-20 16:43:33',4,NULL,1,'','run_task_by_id',0,0,'',0,''),\n(321,'同步作业平台用户信息','/job/sync_user_info/','','generic.job.sync_user_info',1,'2024-09-24 17:07:35','2024-06-20 16:43:59',4,240,2,'','sync_user_info',0,0,'',0,''),\n(322,'执行持续部署任务回调','/deploy/run_deploy_task_rollback/','','generic.deploy.run_deploy_task_rollback',1,'2024-07-01 10:44:08','2024-07-01 10:44:08',25,NULL,2,'','run_deploy_task_rollback',0,0,'',0,''),\n(323,'执行持续部署任务','/deploy/run_deploy_task_v3/','','generic.deploy.run_deploy_task_v3',1,'2024-07-01 10:45:42','2024-07-01 10:45:42',25,NULL,1,'','run_deploy_task_v3',0,0,'',0,''),\n(324,'执行流水线任务回调','/pipeline/run_pipeline_task_rollback/','','generic.pipeline.run_pipeline_task_rollback',1,'2024-07-01 10:46:32','2024-07-01 10:46:32',26,NULL,2,'','run_pipeline_task_rollback',0,0,'',0,''),\n(325,'执行流水线','/pipeline/run_pipeline_task_v3/','','generic.pipeline.run_pipeline_task_v3',1,'2024-07-01 10:47:44','2024-07-01 10:47:44',26,NULL,1,'','run_pipeline_task_v3',0,0,'',0,''),\n(326,'资源仓库获取指定模型数据','/cmdb/model_data_get/','','generic.cmdb.model_data_get',1,'2024-07-09 11:44:47','2024-07-09 11:44:47',7,NULL,2,'','model_data_get',0,0,'',0,''),\n(327,'资源仓库新建数据','/cmdb/model_data_create/','','generic.cmdb.model_data_create',1,'2024-07-09 11:45:15','2024-07-09 11:45:15',7,NULL,1,'','model_data_create',0,0,'',0,''),\n(328,'资源仓库修改数据','/cmdb/model_data_update/','','generic.cmdb.model_data_update',1,'2024-07-09 11:45:40','2024-07-09 11:45:40',7,NULL,1,'','model_data_update',0,0,'',0,''),\n(329,'资源仓库删除数据','/cmdb/model_data_delete/','','generic.cmdb.model_data_delete',1,'2024-07-09 11:46:05','2024-07-09 11:46:05',7,NULL,1,'','model_data_delete',0,0,'',0,''),\n(330,'获取实例关联关系树','/cmdb/get_inst_link_tree/','','generic.cmdb.get_inst_link_tree',1,'2024-08-21 10:13:07','2024-08-13 19:54:32',7,120,2,'','get_inst_link_tree',0,0,'',0,''),\n(331,'配置堡垒机各类日志保留天数','/bastion/keep_strategy_bastion/','','generic.bastion.keep_strategy_bastion',1,'2024-08-31 16:13:21','2024-08-31 16:13:21',15,1800,1,'','keep_strategy_bastion',0,0,'',0,''),\n(332,'配置资源平台各类日志保留天数','/cmdb/keep_strategy_cmdb/','','generic.cmdb.keep_strategy_cmdb',1,'2024-08-31 17:48:01','2024-08-31 17:48:01',7,1800,1,'','keep_strategy_cmdb',0,0,'',0,''),\n(333,'获取应用绑定的服务组数据-应用授权使用','/apm/get_app_service_group/','','generic.apm.get_app_service_group',1,'2024-09-27 16:03:53','2024-09-27 15:59:23',23,NULL,2,'','get_app_service_group',0,0,'',0,''),\n(334,'配置事件中心各类日志保留天数','/event/keep_strategy_event/','','generic.event.keep_strategy_event',1,'2024-10-10 19:40:03','2024-10-10 14:18:33',19,1800,2,'','keep_strategy_event',0,0,'',0,''),\n(335,'获取指定格式业务数据','/cmdb/get_business_tree/','','generic.cmdb.get_business_tree',1,'2024-11-20 19:08:26','2024-11-20 19:08:26',7,60,2,'','get_business_tree',0,0,'',0,''),\n(336,'Zabbbix获取告警','/control/get_monitor_alert_info/','','generic.control.get_monitor_alert_info',1,'2024-12-05 16:51:18','2024-12-05 16:51:18',8,60,1,'','get_monitor_alert_info',0,0,'',0,''),\n(337,'基础监控大屏API','/workbench/monitor_to_screen_api/','','generic.workbench.monitor_to_screen_api',1,'2024-12-09 14:55:13','2024-12-09 14:55:13',9,100,1,'','monitor_to_screen_api',0,0,'',0,''),\n(338,'基础监控大屏API','/control/monitor_to_screen_api/','','generic.control.monitor_to_screen_api',1,'2024-12-09 19:32:55','2024-12-09 19:32:55',8,300,1,'','monitor_to_screen_api',0,0,'',0,''),\n(339,'基础监控大屏API','/deploy/monitor_to_screen_api/','','generic.deploy.monitor_to_screen_api',1,'2024-12-10 15:24:53','2024-12-10 15:24:53',25,100,1,'','monitor_to_screen_api',0,0,'',0,''),\n(340,'基础监控大屏API','/devops/monitor_to_screen_api/','','generic.devops.monitor_to_screen_api',1,'2024-12-10 19:07:12','2024-12-10 19:07:12',14,100,1,'','monitor_to_screen_api',0,0,'',0,''),\n(341,'基础监控大屏API','/apm/monitor_to_screen_api/','','generic.apm.monitor_to_screen_api',1,'2024-12-11 20:14:46','2024-12-11 20:14:46',23,200,1,'','monitor_to_screen_api',0,0,'',0,''),\n(342,'基础监控大屏API','/cmdb/monitor_to_screen_api/','','generic.cmdb.monitor_to_screen_api',1,'2024-12-12 12:07:41','2024-12-12 12:07:41',7,100,1,'','monitor_to_screen_api',0,0,'',0,''),\n(343,'配置应用监控各类日志保留天数','/prom/keep_strategy_prom/','','generic.prom.keep_strategy_prom',1,'2024-12-13 11:38:01','2024-12-13 11:38:01',16,600,1,'','keep_strategy_prom',0,0,'',0,''),\n(344,'基础监控大屏API','/prom/monitor_to_screen_api/','','generic.prom.monitor_to_screen_api',1,'2024-12-30 21:16:49','2024-12-30 21:16:49',16,100,1,'','monitor_to_screen_api',0,0,'',0,''),\n(345,'拉取StackStorm服务','/control/stackstorm/','','generic.control.stackstorm',1,'2025-01-24 16:52:26','2025-01-24 16:52:26',8,NULL,2,'','stackstorm',0,0,'',0,''),\n(346,'获取Zabbix Server实例列表','/control/get_zabbix_server_list/','','generic.control.get_zabbix_server_list',1,'2025-03-05 09:49:17','2025-03-05 09:49:17',8,NULL,2,'','get_zabbix_server_list',0,0,'',0,''),\n(347,'获取Zabbix Server实例模板','/control/get_zabbix_template_list/','','generic.control.get_zabbix_template_list',1,'2025-03-05 09:58:34','2025-03-05 09:50:26',8,100,2,'','get_zabbix_template_list',0,0,'',0,''),\n(348,'同步LLMOPS用户信息','/llmops/sync_user_info/','','generic.llmops.sync_user_info',1,'2025-03-06 14:45:04','2025-03-06 14:45:04',28,NULL,2,'','sync_user_info',0,0,'',0,''),\n(349,'获取支持申请的云厂商以及资源','/cmp/get_support_cloud_vendor_resource/','','generic.cmp.get_support_cloud_vendor_resource',1,'2025-04-08 16:37:06','2025-04-08 15:41:22',13,NULL,2,'','get_support_cloud_vendor_resource',0,0,'',0,''),\n(350,'获取要申请资源所需的参数','/cmp/post_cloud_vendor_resource_parameters/','','generic.cmp.post_cloud_vendor_resource_parameters',1,'2025-04-08 16:37:27','2025-04-08 15:42:30',13,NULL,1,'','post_cloud_vendor_resource_parameters',0,0,'',0,''),\n(351,'申请云资源','/cmp/post_support_resource/','','generic.cmp.post_support_resource',1,'2025-04-08 15:43:20','2025-04-08 15:43:20',13,NULL,1,'','post_support_resource',0,0,'',0,''),\n(352,'获取容器平台支持申请的资源列表','/k8s/get_support_resource/','','generic.k8s.get_support_resource',1,'2025-04-23 17:16:08','2025-04-23 17:16:08',18,NULL,2,'','get_support_resource',0,0,'',0,''),\n(353,'获取资源的字段或相关依赖字段','/k8s/get_support_resource_fields/','','generic.k8s.get_support_resource_fields',1,'2025-04-23 17:16:49','2025-04-23 17:16:49',18,120,1,'','get_support_resource_fields',0,0,'',0,''),\n(354,'申请资源','/k8s/post_apply_resource/','','generic.k8s.post_apply_resource',1,'2025-04-23 17:17:17','2025-04-23 17:17:17',18,NULL,1,'','post_apply_resource',0,0,'',0,''),\n(355,'同步Es数据','/k8s/sync_es_from_control/','','generic.k8s.sync_es_from_control',1,'2025-06-05 17:20:23','2025-06-05 17:20:23',18,NULL,1,'','sync_es_from_control',0,0,'',0,''),\n(356,'校验用户所属部门配额','/cmp/check_user_resource_quota/','','generic.cmp.check_user_resource_quota',1,'2025-06-22 18:50:22','2025-06-22 18:50:22',13,NULL,1,'','check_user_resource_quota',0,0,'',0,''),\n(357,'创建应用','/devops/create_application/','','generic.devops.create_application',1,'2025-07-31 10:40:19','2025-07-31 10:40:19',14,NULL,1,'','create_application',0,0,'',0,''),\n(358,'获取资源数据和字段-工单使用','/cmdb/get_cmdb_data_for_work_order/','','generic.cmdb.get_cmdb_data_for_work_order',1,'2025-08-12 17:17:41','2025-08-12 17:17:41',7,300,2,'','get_cmdb_data_for_work_order',0,0,'',0,''),\n(359,'获取已经监控纳管的主机等实例（云管平台）','/control/get_monitor_resource_info/','','generic.control.get_monitor_resource_info',1,'2025-10-24 11:17:04','2025-10-24 11:17:04',8,60,2,'','get_monitor_resource_info',0,0,'',0,''),\n(360,'根据Prom执行指标查询语句并获取到数据','/control/prom_run_query/','','generic.control.prom_run_query',1,'2025-10-25 16:47:47','2025-10-25 16:47:47',8,120,2,'','prom_run_query',0,0,'',0,''),\n(361,'Zabbix告警事件的操作','/control/monitor_event_acknowledge/','','generic.control.monitor_event_acknowledge',1,'2025-12-01 16:39:43','2025-12-01 16:39:43',8,NULL,1,'','monitor_event_acknowledge',0,0,'',0,''),\n(362,'获取主机告警事件操作详情','/control/monitor_event_info/','','generic.control.monitor_event_info',1,'2025-12-01 19:46:24','2025-12-01 19:46:24',8,NULL,2,'','monitor_event_info',0,0,'',0,''),\n(363,'根据指标表达式获取相关数据','/control/post_metric_expr_get_value/','','generic.control.post_metric_expr_get_value',1,'2025-12-09 11:01:37','2025-12-09 11:01:37',8,120,1,'','post_metric_expr_get_value',0,0,'',0,''),\n(364,'扫描IP端口服务','/control/subnet_scan_ip_port/','','generic.control.subnet_scan_ip_port',1,'2026-01-06 18:03:34','2026-01-06 18:03:34',8,60,1,'','subnet_scan_ip_port',0,0,'',0,''),\n(365,'获取扫描IP端口服务结果数据','/control/subnet_scan_ip_port_result/','','generic.control.subnet_scan_ip_port_result',1,'2026-01-06 18:03:59','2026-01-06 18:03:59',8,60,2,'','subnet_scan_ip_port_result',0,0,'',0,''),\n(366,'获取工单实例列表','/workbench/get_work_order_inst/','','generic.workbench.get_work_order_inst',1,'2026-01-23 16:34:08','2026-01-23 16:34:08',9,90,2,'','get_work_order_inst',0,0,'',0,''),\n(367,'获取容器平台资源','/k8s/get_k8s_resource_v2/','','generic.k8s.get_k8s_resource_v2',1,'2026-03-03 16:01:09','2026-03-03 16:01:09',18,NULL,2,'','get_k8s_resource_v2',0,0,'',0,''),\n(368,'获取容器平台集群','/k8s/get_k8s_cluster/','','generic.k8s.get_k8s_cluster',1,'2026-03-03 16:03:40','2026-03-03 16:03:40',18,NULL,2,'','get_k8s_cluster',0,0,'',0,''),\n(369,'同步容器平台资源','/cmdb/update_k8s_resource/','','generic.cmdb.update_k8s_resource',1,'2026-03-03 18:12:45','2026-03-03 18:12:45',7,600,2,'','update_k8s_resource',0,0,'',0,''),\n(370,'同步容器平台集群','/cmdb/update_k8s_cluster/','','generic.cmdb.update_k8s_cluster',1,'2026-03-03 18:13:23','2026-03-03 18:13:23',7,600,2,'','update_k8s_cluster',0,0,'',0,''),\n(371,'根据脚本ID执行脚本','/job/run_script_by_id/','','generic.job.run_script_by_id',1,'2026-03-05 20:17:39','2026-03-05 20:17:39',4,60,1,'','run_script_by_id',0,0,'',0,''),\n(372,'获取工具市场中的作业或脚本','/job/get_tool_market_list/','','generic.job.get_tool_market_list',1,'2026-03-05 20:18:23','2026-03-05 20:18:23',4,60,2,'','get_tool_market_list',0,0,'',0,''),\n(373,'获取作业或脚本执行结果','/job/get_run_result_by_log_id/','','generic.job.get_run_result_by_log_id',1,'2026-03-05 21:03:13','2026-03-05 21:03:13',4,60,2,'','get_run_result_by_log_id',0,0,'',0,''),\n(374,'根据作业ID执行作业','/job/run_job_by_id/','','generic.job.run_job_by_id',1,'2026-03-06 14:47:39','2026-03-06 14:47:39',4,60,1,'','run_job_by_id',0,0,'',0,''),\n(375,'根据主机和脚本执行任务','/job/run_script_by_script/','','generic.job.run_script_by_script',1,'2026-03-07 17:12:38','2026-03-07 17:12:38',4,60,1,'','run_script_by_script',0,0,'',0,'');\n/*!40000 ALTER TABLE `esb_channel` ENABLE KEYS */;\nUNLOCK TABLES;\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\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/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2026-03-07 20:01:43\n"
  },
  {
    "path": "install/init/esb-init/esb_component_system.sql",
    "content": "-- MariaDB dump 10.19  Distrib 10.11.13-MariaDB, for debian-linux-gnu (x86_64)\n--\n-- Host: localhost    Database: opsany_paas\n-- ------------------------------------------------------\n-- Server version\t10.11.13-MariaDB-0ubuntu0.24.04.1\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/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\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/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `esb_component_system`\n--\n\nDROP TABLE IF EXISTS `esb_component_system`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_component_system` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(64) NOT NULL,\n  `label` varchar(128) NOT NULL,\n  `component_admin` varchar(128) NOT NULL,\n  `interface_admin` varchar(128) NOT NULL,\n  `system_link` varchar(1024) NOT NULL,\n  `belong_to` varchar(128) NOT NULL,\n  `remark` longtext NOT NULL,\n  `execute_timeout` int(11) DEFAULT NULL,\n  `query_timeout` int(11) DEFAULT NULL,\n  `doc_category_id` int(11) DEFAULT NULL,\n  PRIMARY KEY (`id`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=COMPACT;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_component_system`\n--\n\nLOCK TABLES `esb_component_system` WRITE;\n/*!40000 ALTER TABLE `esb_component_system` DISABLE KEYS */;\nINSERT INTO `esb_component_system` VALUES\n(1,'BK_LOGIN','统一登录','','admin','','','',NULL,NULL,NULL),\n(2,'CC','配置平台','','admin','','','',NULL,NULL,NULL),\n(3,'GSE','管控平台','','admin','','','',NULL,NULL,NULL),\n(4,'JOB','作业平台','','admin','','','',NULL,NULL,NULL),\n(5,'CMSI','消息管理','','admin','','','',NULL,NULL,NULL),\n(6,'SOPS','标准运维','','admin','','','',NULL,NULL,NULL),\n(7,'CMDB','OpsAny 资源平台','','admin','','','',NULL,NULL,3),\n(8,'CONTROL','OpsAny 管控平台','','admin','','','',NULL,NULL,3),\n(9,'WORKBENCH','OpsAny 工作台','','admin','','','',30,30,3),\n(10,'TASK','OpsAny 作业平台','','admin','','','',NULL,NULL,3),\n(11,'rbac','OpsAny 企业管理后台','','admin','','','',NULL,NULL,3),\n(12,'MONITOR','OpsAny 监控平台','','admin','','','',30,30,3),\n(13,'CMP','OpsAny 云管平台','','admin','','','',NULL,NULL,3),\n(14,'DEVOPS','OpsAny 应用平台','','admin','','','',NULL,NULL,3),\n(15,'BASTION','OpsAny 堡垒机','','admin','','','',NULL,NULL,3),\n(16,'PROM','OpsAny 应用监控','','admin','','','',NULL,NULL,3),\n(17,'AUTO','OpsAny 智能巡检','','admin','','','',NULL,NULL,4),\n(18,'K8S','OpsAny 容器平台','','admin','','','',NULL,NULL,4),\n(19,'EVENT','OpsAny 事件中心','','admin','','','',NULL,NULL,4),\n(20,'DASHBOARD','OpsAny 可视化大屏','','admin','','','',NULL,NULL,4),\n(21,'KBASE','OpsAny 知识库','','huxingqi','','','',300,300,3),\n(22,'log','日志平台','','huxingqi','','','',100,100,3),\n(23,'APM','APM平台','','huxingqi','','','',300,60,3),\n(24,'REPO','OpsAny制品仓库','','xiongqianyuan','','','',300,60,3),\n(25,'DEPLOY','持续部署','','huxingqi','','','',60,60,4),\n(26,'PIPELINE','流水线','','xiongqianyuan','','','',60,60,3),\n(27,'CODE','代码仓库','','xiongqianyuan','','','',300,60,3),\n(28,'LLMOPS','大模型开发平台','','huxingqi','','','',300,60,3);\n/*!40000 ALTER TABLE `esb_component_system` ENABLE KEYS */;\nUNLOCK TABLES;\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\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/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2025-12-02 18:32:33\n"
  },
  {
    "path": "install/init/esb-init/esb_function_controller.sql",
    "content": "-- MySQL dump 10.14  Distrib 5.5.68-MariaDB, for Linux (x86_64)\n--\n-- Host: localhost    Database: dev_paas\n-- ------------------------------------------------------\n-- Server version\t5.5.68-MariaDB\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/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\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/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `esb_function_controller`\n--\n\nDROP TABLE IF EXISTS `esb_function_controller`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_function_controller` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `func_code` varchar(64) NOT NULL,\n  `func_name` varchar(64) NOT NULL,\n  `switch_status` tinyint(1) NOT NULL,\n  `wlist` longtext,\n  `func_desc` longtext,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `func_code` (`func_code`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_function_controller`\n--\n\nLOCK TABLES `esb_function_controller` WRITE;\n/*!40000 ALTER TABLE `esb_function_controller` DISABLE KEYS */;\nINSERT INTO `esb_function_controller` VALUES (1,'user_auth::skip_user_auth','是否跳过用户身份验证',1,'bk_paas_log_alert,login,esb,paas,proxy,websocket,zabbix,rbac,cmdb,workbench,control,job,bastion,cmp,dashboard,monitor,devops,pipeline,deploy,repo,k8s,kbase,prom,log,event,auto,apm,llmops','','2020-05-30 17:33:22');\n/*!40000 ALTER TABLE `esb_function_controller` ENABLE KEYS */;\nUNLOCK TABLES;\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\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/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2025-03-06 15:28:18\n"
  },
  {
    "path": "install/init/import_script.py",
    "content": "#!/usr/bin/env python3\n'''\npython import_script.py \n--domain https://domain\n--paas_username guoyuchen\n--paas_password ******\n--target_type collection/script/task/patrol    collection/script/patrol则扫描目标路径下为json的文件，task则扫描目标路径下为zip的文件\n  user参数比较特殊，用于刚部署完SaaS后，SaaS中没有第一个用户，导致导入内容时报错：没有获取到用户信息. 当target_type为user的时候，APP_CODE不能为空\n--target_file   目标文件\n--target_path   目标文件夹       target_path和target_file两者不能同时为空\n--run_env prod/dev  非必填，为空则使用prod url 即/o/\n'''\nimport json\n\nimport requests\nimport sys\nimport os\nimport argparse\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def get_menu(self, app_code):\n        API = self.paas_domain + \"/{}/{}/api/{}/v0_1/update-director/\".format(self.run_env, app_code, app_code)\n        try:\n            # 用于初次创建用户\n            res = self.session.get(API)\n            if res.status_code == 200 and res.json().get(\"code\") == 200:\n                print(\"Create first user success.\")\n                return True\n            raise Exception(res.json().get(\"message\"))\n        except Exception as e:\n            print(\"Api error, error info: {}, api url: {}.\".format(str(e), API))\n            sys.exit(1)\n\n    def get_script_default_group_id(self):\n        script_group_api = self.paas_domain + \"/{}/job/api/job/v0_1/script-group/\".format(self.run_env)\n        status, data = self.get_group_info(script_group_api)\n        if status:\n            for _data in data:\n                if _data.get(\"name\") == \"默认分组\":\n                    return _data.get(\"id\")\n            print(\"Not find script default group.\")\n            sys.exit(0)\n        else:\n            print(\"Api error, error info: {}, api url: {}.\".format(data, script_group_api))\n            sys.exit(0)\n\n    def get_group_info(self, API):\n        try:\n            response = self.session.get(url=API, verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n    def get_task_default_group_id(self):\n        task_group_api = self.paas_domain + \"/{}/job/api/job/v0_1/new-tool-admin/\".format(self.run_env)\n        status, data = self.get_group_info(task_group_api)\n        if status:\n            for _data in data:\n                if _data.get(\"name\") == \"默认分组\":\n                    return _data.get(\"id\")\n            print(\"Not find task default group.\")\n            sys.exit(0)\n        else:\n            print(\"Api error, error info: {}, api url: {}.\".format(data, task_group_api))\n\n    def upload_file(self, api, form_data, file_form):\n        api = self.paas_domain + api.format(self.run_env)\n        try:\n            res = self.session.post(api, data=form_data, files=file_form, verify=False)\n            if res.status_code == 200:\n                if res.json().get(\"code\") != 200:\n                    raise Exception(res.json().get(\"message\"))\n                return True, res.json().get(\"data\", {})\n            raise Exception(\"上传文件失败，请检查您的文件是否有效\")\n        except Exception as e:\n            return False, \"Upload api error, error info: {}. api url: {}\".format(str(e), api)\n\n    def import_info(self, api, data):\n        api = self.paas_domain + api.format(self.run_env)\n        try:\n            res = self.session.post(api, json=data, verify=False)\n            if res.status_code == 200:\n                if res.json().get(\"code\") == 200:\n                    return True, res.json().get(\"data\", {})\n                raise Exception(res.json().get(\"message\"))\n            else:\n                raise Exception(\"导入文件失败，请检查您导入的文件是否有效\")\n        except Exception as e:\n            return False, \"Import api error, error info: {}. api url: {}\".format(str(e), api)\n\n    def import_script(self, target_list):\n        self.get_menu(\"job\")\n        group_id = self.get_script_default_group_id()\n        for target in target_list:\n            print(\"-\" * 30)\n            file_form = {\n                \"script\": (os.path.split(target)[-1], open(target, 'rb'), \"application/json\"),\n            }\n            upload_form = {\n                \"import_type\": \"file\",\n                \"group_id\": group_id\n            }\n            status, res = self.upload_file(\"/{}/job/api/job/v0_1/import-export-script/\", upload_form, file_form)\n            if status:\n                res[\"import_type\"] = \"json\"\n                res[\"script_from\"] = \"1\"\n                status, res = self.import_info(\"/{}/job/api/job/v0_1/import-export-script/\", res)\n                if status:\n                    print(\"Script {} import success.\".format(target))\n                else:\n                    print(\"Script {} import error.\".format(target))\n                    print(res)\n            else:\n                print(\"Script {} import error.\".format(target))\n                print(res)\n        print(\"Import script run over.\")\n\n    def get_control_server_default_group(self):\n        server_group_api = self.paas_domain + \"/{}/control/api/control/v0_1/host-group/\".format(self.run_env)\n        status, data = self.get_group_info(server_group_api)\n        if status:\n            for _data in data:\n                if _data.get(\"name\") == \"默认分组\":\n                    return _data.get(\"id\")\n            print(\"Not find server default group.\")\n            sys.exit(0)\n        else:\n            print(\"Api error, error info: {}, api url: {}.\".format(data, server_group_api))\n            sys.exit(0)\n\n    def import_asset_collection(self, target_list):\n        self.get_menu(\"control\")\n        for target in target_list:\n            print(\"-\" * 30)\n            file_form = {\n                \"json_file\": (os.path.split(target)[-1], open(target, 'rb'), \"application/json\"),\n            }\n            upload_form = {}\n            status, res = self.upload_file(\"/{}/control/api/control/v0_1/import-plugin/\", upload_form, file_form)\n            if status:\n                print(\"Asset collection {} import success.\".format(target))\n            else:\n                print(\"Asset collection {} import error.\".format(target))\n                print(res)\n        print(\"Import asset collection run over.\")\n\n    def import_patrol_template(self, target_list):\n        self.get_menu(\"auto\")\n        for target in target_list:\n            print(\"-\" * 30)\n            file_form = {\n                \"file\": (os.path.split(target)[-1], open(target, 'rb'), \"application/json\"),\n            }\n            upload_form = {}\n            status, res = self.upload_file(\"/{}/auto/api/auto/v0_1/patrol-template-import-export/\", upload_form, file_form)\n            if status:\n                print(\"Patrol template {} import success.\".format(target))\n            else:\n                print(\"Patrol template {} import error.\".format(target))\n                print(res)\n        print(\"Import patrol template run over.\")\n\n    def import_task(self, target_list):\n        self.get_menu(\"job\")\n        self.get_menu(\"control\")\n        task_group_id = self.get_task_default_group_id()\n        server_default_group_id = self.get_control_server_default_group()\n        for target in target_list:\n            print(\"-\" * 30)\n            file_form = {\n                \"task\": (os.path.split(target)[-1], open(target, 'rb'), \"application/zip\"),\n            }\n            upload_form = {\n                \"import_type\": \"file\",\n                \"group_id\": task_group_id\n            }\n            status, res = self.upload_file(\"/{}/job/api/job/v0_1/import-export-task/\", upload_form, file_form)\n            if status:\n                res[\"import_type\"] = \"json\"\n                jobs = res.get(\"job\")\n                for job in jobs:\n                    job[\"group_id_list\"] = [server_default_group_id]\n                    job[\"script_id\"] = job.get(\"script\", {}).get(\"id\")\n                    job[\"file_id_list\"] = [file.get(\"id\") for file in job.get(\"file\", [])]\n                status, res = self.import_info(\"/{}/job/api/job/v0_1/import-export-task/\", res)\n                if status:\n                    print(\"Task {} import success.\".format(target))\n                else:\n                    print(\"Task {} import error.\".format(target))\n                    print(res)\n            else:\n                print(\"Task {} import error.\".format(target))\n                print(res)\n        print(\"Import task run over.\")\n\n\ndef get_target(target_path=\"\", target_file=\"\", file_type=\".json\"):\n    try:\n        target_file_list = []\n        if target_path:\n            files = os.listdir(target_path)\n            for file in files:\n                if file.lower().endswith(file_type):\n                    target_file_list.append(os.path.join(target_path, file))\n        if target_file:\n            if target_file.lower().endswith(file_type) and os.path.exists(target_file):\n                if target_file not in target_file_list:\n                    target_file_list.append(target_file)\n        if target_file_list:\n            print(\"Find valid files: {}, total: {} files, the import will be performed.\".format(\n                target_file_list, len(target_file_list)\n            ))\n            return target_file_list\n        else:\n            print(\"Not find valid file.\")\n            sys.exit(0)\n    except Exception as e:\n        print(\"Get target file error, error info: {}\".format(str(e)))\n        sys.exit(1)\n\n\ndef run(options):\n    target_type = options.target_type\n    target_path = options.target_path\n    target_file = options.target_file\n    run_env = options.run_env if options.run_env else \"prod\"\n    if not target_file and not target_path:\n        print(\"Target file or Target path must select one.\")\n        sys.exit(0)\n    api_object = OpsAnyApi(\n        options.domain,\n        options.paas_username,\n        options.paas_password,\n        run_env\n    )\n    if target_type.lower() == \"script\":\n        target_list = get_target(target_path, target_file)\n        api_object.import_script(target_list)\n    elif target_type.lower() == \"task\":\n        target_list = get_target(target_path, target_file, \"zip\")\n        api_object.import_task(target_list)\n    elif target_type.lower() == \"collection\":\n        target_list = get_target(target_path, target_file)\n        api_object.import_asset_collection(target_list)\n    elif target_type.lower() == \"patrol\":\n        target_list = get_target(target_path, target_file)\n        api_object.import_patrol_template(target_list)\n    else:\n        print(\"Nonexistent parameter, please use [Script/Task/Collection/Patrol/User].\")\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.add_argument(\"--target_type\", help=\"Import Target Type.\", required=True)\n    parameter.add_argument(\"--target_path\", help=\"Target Path\", required=False)\n    parameter.add_argument(\"--target_file\", help=\"Target file\", required=False)\n    parameter.add_argument(\"--run_env\", help=\"Run env\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    run(options)\n\n"
  },
  {
    "path": "install/init/init_alert_rule.py",
    "content": "import os\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\ndefault_notify_policy = {\n    \"name\": \"默认通知策略\",\n    \"prom\": 1,\n    \"condition\": [{\n        \"conditionList\": [{\n            \"key\": \"severity\",\n            \"operator\": \"3\",\n            \"value\": [\"Warning\", \"Average\", \"High\", \"Disaster\"]\n        }]\n    }],\n    \"group_by_type\": \"1\",\n    \"group_by\": [],\n    \"group_interval\": \"1\",\n    \"group_interval_type\": \"1\",\n    \"notify_time_type\": \"1\",\n    \"custom_weeks_time_dict\": {\n        \"weeks\": []\n    },\n    \"notify_frequency\": \"10\",\n    \"notify_frequency_type\": \"1\",\n    \"notify_resolved\": \"1\",\n    \"inform_type_dict\": [],\n    \"need_repeat_notice\": \"2\",\n    \"need_upgrade_strategy\": \"1\",\n    \"notify_policy_upgrade\": None,\n    \"enabled\": True,\n    \"notify_object_list\": [{\n        \"type\": \"1\",\n        \"target_value\": \"admin\",\n        \"checked_message_type\": [\"1\", \"2\", \"3\", \"4\", \"5\"],\n        \"is_activate\": True\n    }]\n}\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.init_alert_rule_url = \"/{}/prom//api/prom/v0_1/init-alert-rule/\"\n        self.init_notify_policy_url = \"/{}/prom//api/prom/v0_1/init-notify-policy/\"\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n\n    def init_alert_rule(self, prom, name, yml_str):\n        api = self.paas_domain + self.init_alert_rule_url.format(self.run_env)\n        try:\n            data = {\n                \"prom\": prom,\n                \"yml_str\": yml_str\n            }\n            res = self.session.post(api, data=json.dumps(data), verify=False)\n            try:\n                res_data = res.json()\n            except Exception as e:\n                raise Exception(res.content.decode())\n            if res.status_code == 200:\n                if res_data.get(\"code\") == 200:\n                    return True, res_data.get(\"message\")\n            raise Exception(res_data.get(\"message\"))\n        except Exception as e:\n            return False, \"初始化应用监控告警规则失败: {}, {}\".format(name, str(e))\n\n    def init_notify_policy(self, data):\n        name = data.get(\"name\")\n        api = self.paas_domain + self.init_notify_policy_url.format(self.run_env)\n        try:\n            res = self.session.post(api, data=json.dumps(data), verify=False)\n            try:\n                res_data = res.json()\n            except Exception as e:\n                raise Exception(res.content.decode())\n            if res.status_code == 200:\n                if res_data.get(\"code\") == 200:\n                    return True, res_data.get(\"message\")\n            raise Exception(res_data.get(\"message\"))\n        except Exception as e:\n            return False, \"初始化应用监控通知规则失败: {}, {}\".format(name, str(e))\n\n    def get_alert_rule_list(self, target_path, file_type=\".yml\"):\n        try:\n            target_file_dict = {}\n            if target_path:\n                files = os.listdir(target_path)\n                for file in files:\n                    if file.lower().endswith(file_type):\n                        full_path = os.path.join(target_path, file)\n                        with open(full_path, \"r\", encoding=\"utf-8\") as f:\n                            target_file_dict[full_path] = f.read()\n            if target_file_dict:\n                print(\"Find Rule: {}, total: {} files, the import will be performed.\".format(\n                    \", \".join(list(target_file_dict.keys())), len(target_file_dict)))\n                return target_file_dict\n            else:\n                print(\"Not find valid file.\")\n                return {}\n                # sys.exit(0)\n        except Exception as e:\n            print(\"Get target file error, error info: {}\".format(str(e)))\n            # sys.exit(1)\n            return {}\n\n\ndef run(domain, paas_username, paas_password, prom_name, notify_name, target_path=\"./alert-rules\", env=\"prod\"):\n    api = OpsAnyApi(domain, paas_username, paas_password, env=env)\n\n    # 初始化应用监控告警规则\n    alert_yml_dict = api.get_alert_rule_list(target_path)\n    success, error = 0, 0\n    error_message = \"\"\n    for k, v in alert_yml_dict.items():\n        status, message = api.init_alert_rule(prom_name, k, v)\n        if status: success += 1\n        else:\n            error += 1\n            error_message += f\"{k}: {message}\\n\"\n    print(f\"初始化应用监控告警规则结束: 成功: {success} 个规则组!, 失败: {error} 个规则组!\")\n    if error: print(error_message)\n\n    # 初始化应用监控通知规则\n    data = default_notify_policy\n    data[\"prom\"] = prom_name\n    data[\"name\"] = notify_name\n    status, message = api.init_notify_policy(data)\n    print(f\"初始化应用监控通知规则 {f'成功: {notify_name}' if status else f'失败: {message}'}!\")\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    prom_name = \"内置Prometheus\"  # 管控平台-采控管理-Prometheus实例名称\n    notify_name = \"默认通知策略\"  # 应用监控-通知规则-名称\n    rules_path = \"alert-rules\"\n    run(options.domain, options.paas_username, options.paas_password, prom_name, notify_name, target_path=rules_path, env=\"prod\")\n    # 初始化 告警规则和通知规则\n    # python init_alert_rule.py  --domain https://DOMAIN --paas_username admin --paas_password 123456\n"
  },
  {
    "path": "install/init/init_dashboard.py",
    "content": "import os\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass GrafanaBasicApi:\n    def __init__(self, grafana_url, grafana_token=\"\", username=None, password=None):\n        self.username = username\n        self.password = password\n        self.grafana_token = grafana_token\n        self.grafana_url = str(grafana_url) + (\"/\" if str(grafana_url)[-1] != \"/\" else \"\")\n\n    def create_or_update_dashboard(self, dashboard):\n        # 需要使用requests去做\n        try:\n            headers = {}\n            url = \"{}api/dashboards/db/\".format(self.grafana_url)\n            if self.grafana_token:\n                headers = {\"Authorization\": \"Bearer {0}\".format(self.grafana_token)}\n            else:\n                url = url.replace(\"https://\", \"https://{}:{}@\".format(self.username, self.password))\n            res = requests.post(url, json=dashboard, headers=headers, verify=False)\n            json_res = res.json()\n            if json_res.get(\"status\") == \"success\":\n                return True, \"{}: {}\".format(json_res.get(\"status\"), json_res.get(\"uid\"))\n            else:\n                return False, res.json().get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n    def get_dashboard_list(self, target_path, file_type=\".json\"):\n        try:\n            target_file_list = []\n            dashboard_json_list = []\n            if target_path:\n                files = os.listdir(target_path)\n                for file in files:\n                    if file.lower().endswith(file_type):\n                        full_path = os.path.join(target_path, file)\n                        target_file_list.append(full_path)\n                        with open(full_path, \"r\", encoding=\"utf-8\") as f:\n                            dashboard_json_list.append(json.loads(f.read()))\n            if target_file_list:\n                print(\"Find dashboard: {}, total: {} files, the import will be performed.\".format(\n                    target_file_list, len(target_file_list)\n                ))\n                return dashboard_json_list\n            else:\n                print(\"Not find valid file.\")\n                return []\n        except Exception as e:\n            print(\"Get target file error, error info: {}\".format(str(e)))\n            return []\n\n\ndef run(grafana_url, grafana_token, grafana_username=None, grafana_password=None, target_path=\"./dashboard-init\", overwrite=True):\n    grafana_api = GrafanaBasicApi(grafana_url, grafana_token, grafana_username, grafana_password)\n    dashboard_json_list = grafana_api.get_dashboard_list(target_path)\n    success, error = 0, 0\n    for dashboard_json in dashboard_json_list:\n        name = dashboard_json.get(\"title\") or \"无名\"\n\n        last_json = {\n            \"dashboard\": dashboard_json,\n            \"message\": \"init_dashboard初始化导入\",\n            \"overwrite\": overwrite,\n            \"folderId\": 0\n        }\n        status, message = grafana_api.create_or_update_dashboard(last_json)\n        if status:\n            success += 1\n            print(\"[SUCCESS] Create or update dashboard success: {} {}\".format(name, message))\n        elif \"dashboard has been changed by someone else\" in message:\n            print(\"[SUCCESS] Create or update dashboard already exist Use the parameter  < --overwrite true > to overwrite the dashboard.\")\n        else:\n            error += 1\n            print(\"[ERROR] Create or update all dashboard, error info:{} {}\".format(name, message))\n    print(\"[SUCCESS] Create or update all dashboard end: success: {}, error: {}\".format(success, error))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--grafana_url\", help=\"Grafana Url.\", required=True)\n    parameter.add_argument(\"--grafana_token\", help=\"Grafana Token.\", required=False)\n    parameter.add_argument(\"--grafana_username\", help=\"Grafana Username.\", required=False)\n    parameter.add_argument(\"--grafana_password\", help=\"Grafana Password.\", required=False)\n    parameter.add_argument(\"--dashboard_path\", help=\"Grafana Dashboard Path.\", required=False)\n    parameter.add_argument(\"--overwrite\", help=\"Grafana Dashboard overwrite.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    dashboard_path = options.dashboard_path\n    overwrite = True if options.overwrite==\"true\" else False\n    if not dashboard_path:\n        dashboard_path = \"./dashboard-init\"\n    run(\n        options.grafana_url,\n        options.grafana_token,\n        options.grafana_username,\n        options.grafana_password,\n        target_path=dashboard_path,\n        overwrite=overwrite,\n    )\n    # target_path:脚本路径 overwrite:覆盖原数据(更新-标识依据 id,uid,title )\n    # 1. 传入id时当id不存在报错导入失败, id存在直接覆盖更新\n    # 2. 不传入id判断uid,title不存在创建，存在更新\n    # 使用token操作 dashboard_path 默认路径./dashboard-init  overwrite 是否覆盖\n    # 使用用户名密码操作  dashboard_path 默认路径./dashboard-init  overwrite 是否覆盖\n\n    # 社区版大屏\n    # 使用密码: python3 init_dashboard.py  --grafana_url https://domain/grafana/ --grafana_username admin --grafana_password grafana_password --overwrite true --dashboard_path ./dashboard-init\n    # 使用Token: python3 init_dashboard.py  --grafana_url https://domain/grafana --grafana_token grafana_token --overwrite true --dashboard_path ../opsany-ee/init/dashboard-init\n\n    # 企业版大屏\n    # 使用密码: python3 init_dashboard.py  --grafana_url https://domain/grafana/ --grafana_username admin --grafana_password grafana_password --overwrite true --dashboard_path ../opsany-ee/init/dashboard-init\n    # 使用Token: python3 init_dashboard.py  --grafana_url https://domain/grafana/ --grafana_token grafana_token --overwrite true  --dashboard_path ../opsany-ee/init/dashboard-init\n"
  },
  {
    "path": "install/init/init_metric_collect_plugin.py",
    "content": "import os\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.init_plugin_url = \"/{}/control/api/control/v0_1/init-metric-collect-import/\"\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def init_plugin(self, name, json_data):\n        api = self.paas_domain + self.init_plugin_url.format(self.run_env)\n        try:\n            res = self.session.post(api, data=json.dumps(json_data), verify=False)\n            try:\n                res_data = res.json()\n            except Exception as e:\n                raise Exception(res.content.decode())\n            if res.status_code == 200:\n                if res_data.get(\"code\") == 200:\n                    return True, res_data.get(\"message\")\n            raise Exception(res_data.get(\"message\"))\n        except Exception as e:\n            return False, \"初始化监控插件失败: {}, {}\".format(name, str(e))\n\n    def get_plugin_list(self, target_path, file_type=\".json\"):\n        try:\n            target_file_dict = {}\n            if target_path:\n                files = os.listdir(target_path)\n                for file in files:\n                    if file.lower().endswith(file_type):\n                        full_path = os.path.join(target_path, file)\n                        with open(full_path, \"r\", encoding=\"utf-8\") as f:\n                            target_file_dict[full_path] = json.loads(f.read())\n            if target_file_dict:\n                print(\"Find Metric Collect Plugin: {}, total: {} files, the import will be performed.\".format(\n                    \", \".join(list(target_file_dict.keys())), len(target_file_dict)))\n                return target_file_dict\n            else:\n                print(\"Not find valid file.\")\n                return {}\n                # sys.exit(0)\n        except Exception as e:\n            print(\"Get target file error, error info: {}\".format(str(e)))\n            # sys.exit(1)\n            return {}\n\n\ndef run(domain, paas_username, paas_password, target_path=\"./alert-rules\"):\n    api = OpsAnyApi(domain, paas_username, paas_password)\n\n    # 初始化应用监控告警规则\n    plugin_dict = api.get_plugin_list(target_path)\n    success, error = 0, 0\n    error_message = \"\"\n    for k, v in plugin_dict.items():\n        status, message = api.init_plugin(k, v)\n        if status: success += 1\n        else:\n            error += 1\n            error_message += f\"{k}: {message}\\n\"\n        break\n    print(f\"初始化指标采集插件结束: 成功: {success} 条!, 失败: {error} 条!\")\n    if error: print(error_message)\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    rules_path = \"metric-collect-plugin\"\n    run(options.domain, options.paas_username, options.paas_password, target_path=rules_path)\n    # 初始化 告警规则和通知规则\n    # python init_alert_rule.py  --domain https://DOMAIN --paas_username admin --paas_password 123456\n"
  },
  {
    "path": "install/init/job-playbook/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/job-script/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/job-script/查看Linux交换分区进程占用.json",
    "content": "{\"script_name\": \"\\u67e5\\u770bLinux\\u4ea4\\u6362\\u5206\\u533a\\u8fdb\\u7a0b\\u5360\\u7528\", \"version\": \"admin-20241114144026746092\", \"version_remarks\": \"\\u521d\\u59cb\\u5316\\u5185\\u7f6e\", \"script_type\": \"sh\", \"visible\": \"2\", \"script\": \"#!/bin/bash\\n# \\u83b7\\u53d6\\u4ea4\\u6362\\u5206\\u533a\\u5360\\u7528\\nSUM=0  \\nOVERALL=0  \\nfor DIR in `find /proc/ -maxdepth 1 -type d | egrep \\\"^/proc/[0-9]\\\"`; do  \\n    PID=`echo $DIR | cut -d / -f 3`  \\n    PROG_NAME=`ps -p $PID -o comm --no-headers`  \\n    for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`; do  \\n        let SUM=$SUM+$SWAP  \\n    done  \\n    echo \\\"PID=$PID - Swap used: $SUM - ($PROG_NAME )\\\"  \\n    let OVERALL=$OVERALL+$SUM  \\n    SUM=0  \\ndone  \\necho \\\"Overall swap used: $OVERALL\\\"\\n\"}"
  },
  {
    "path": "install/init/job-script/查看Linux系统CPU和内存使用Top 5进程.json",
    "content": "{\"script_name\": \"\\u67e5\\u770bLinux\\u7cfb\\u7edfCPU\\u548c\\u5185\\u5b58\\u4f7f\\u7528Top 5\\u8fdb\\u7a0b\", \"version\": \"admin-20220528155519044541\", \"version_remarks\": \"\", \"script_type\": \"sh\", \"script\": \"#!/bin/bash\\n# Description:  Get Linux CPU Mem Usage Top 5\\n\\n# Get Data/Time\\nCTIME=$(date \\\"+%Y-%m-%d %H-%M-%S\\\")\\n\\n# CPU\\necho -e \\\"\\\\033[33m---------------- $CTIME CPU Usage Top 5 ----------------\\\\033[0m\\\"\\nps -aux | sort -k3nr | head -5\\n\\n# Mem\\necho -e \\\"\\\\033[33m---------------- $CTIME Mem Usage Top 5 ----------------\\\\033[0m\\\"\\nps -aux | sort -k4nr | head -5\\n\"}"
  },
  {
    "path": "install/init/job-script/查看Linux系统UID为0的用户.json",
    "content": "{\"script_name\": \"\\u67e5\\u770bLinux\\u7cfb\\u7edfUID\\u4e3a0\\u7684\\u7528\\u6237\", \"version\": \"admin-20241114144019847760\", \"version_remarks\": \"\\u521d\\u59cb\\u5316\\u5185\\u7f6e\", \"script_type\": \"sh\", \"visible\": \"2\", \"script\": \"#!/bin/bash\\n# Description:  \\u83b7\\u53d6Linux UID\\u4e3a0\\u7684\\u7528\\u6237\\n\\necho -e \\\"---------------- \\u5f53\\u524dUID\\u4e3a0\\u7684\\u7528\\u6237 ----------------\\\"\\nUSER=`cat /etc/passwd|awk -F \\\":\\\" '$3==0 {print $0}'|awk  -F \\\":\\\" '{print $1}'`\\necho \\u5f53\\u524dUID\\u4e3a0\\u7684\\u7528\\u6237\\u662f\\uff1a\\\"username: \\\" ${USER}\\n\"}"
  },
  {
    "path": "install/init/job-script/查看Linux系统所有开机启动服务.json",
    "content": "{\"script_name\": \"\\u67e5\\u770bLinux\\u7cfb\\u7edf\\u6240\\u6709\\u5f00\\u673a\\u542f\\u52a8\\u670d\\u52a1\", \"version\": \"admin-20241114144023244738\", \"version_remarks\": \"\\u521d\\u59cb\\u5316\\u5185\\u7f6e\", \"script_type\": \"sh\", \"visible\": \"2\", \"script\": \"#!/bin/bash\\n# Description:  \\u83b7\\u53d6Linux \\u5f00\\u673a\\u542f\\u52a8\\u7684\\u670d\\u52a1\\n\\necho -e \\\"------ \\u5f00\\u673a\\u542f\\u52a8\\u7684\\u670d\\u52a1 ------\\\"\\necho -e \\\"\\\\n`systemctl list-units --all --type=service --state=running|grep -e .service`\\\"\\n\"}"
  },
  {
    "path": "install/init/job-script/查看Linux系统所有用户计划任务.json",
    "content": "{\"script_name\": \"\\u67e5\\u770bLinux\\u7cfb\\u7edf\\u6240\\u6709\\u7528\\u6237\\u8ba1\\u5212\\u4efb\\u52a1\", \"version\": \"admin-20241114144024383909\", \"version_remarks\": \"\\u521d\\u59cb\\u5316\\u5185\\u7f6e\", \"script_type\": \"sh\", \"visible\": \"2\", \"script\": \"#!/bin/bash\\n# Description:  \\u83b7\\u53d6Linux \\u6240\\u6709\\u7528\\u6237\\u7684crontab\\u8ba1\\u5212\\u4efb\\u52a1\\n\\necho -e \\\"------ \\u7528\\u6237\\u53cacrontab\\u8ba1\\u5212\\u4efb\\u52a1 ------\\\"\\nUSER=`cat /etc/passwd |grep -Ev \\\"nologin\\\"|cut -d\\\":\\\" -f1|awk -F: '{print $1}'`\\necho -e  \\\"\\\\n`for n in ${USER};do crontab -l -u$n;done`\\\"\"}"
  },
  {
    "path": "install/init/job-script/查看Linux系统有登录权限的用户.json",
    "content": "{\"script_name\": \"\\u67e5\\u770bLinux\\u7cfb\\u7edf\\u6709\\u767b\\u5f55\\u6743\\u9650\\u7684\\u7528\\u6237\", \"version\": \"admin-20241114144025502067\", \"version_remarks\": \"\\u521d\\u59cb\\u5316\\u5185\\u7f6e\", \"script_type\": \"sh\", \"visible\": \"2\", \"script\": \"#!/bin/bash\\n# Description:  Get Linux \\u6709\\u767b\\u5f55\\u6743\\u9650\\u7684\\u7528\\u6237,\\u5bb6\\u76ee\\u5f55\\uff0c\\u6700\\u540e\\u767b\\u5f55\\u65f6\\u95f4\\n\\necho -e \\\"------ \\u6709\\u767b\\u5f55\\u6743\\u9650\\u7684\\u7528\\u6237 ------\\\"\\nUSER=`cat /etc/passwd |awk -F \\\":\\\" '{print $1,$NF}'|grep  \\\"bash\\\"|awk '{print $1}'`\\necho -e  \\\"\\u767b\\u5f55\\u7684\\u7528user\\uff1a \\\" \\\"\\\\n${USER}\\\"\\necho -e \\\"------ \\u6709\\u767b\\u5f55\\u6743\\u9650\\u7684\\u7528\\u6237\\u7684\\u5bb6\\u76ee\\u5f55 ------\\\"\\nHOMEDIR=`cat /etc/passwd |awk -F \\\":\\\" '{print $1,$6,$NF}'|grep  \\\"bash\\\"|awk '{print $2}'`\\n\\necho -e \\\"\\u767b\\u5f55\\u7528\\u6237\\u7684\\u5bb6\\u76ee\\u5f55\\uff1a \\\" \\\"\\\\n${HOMEDIR}\\\"\\n\\necho -e \\\"------ \\u6709\\u767b\\u5f55\\u6743\\u9650\\u7684\\u7528\\u6237\\u53ca\\u6700\\u540e\\u767b\\u5f55\\u65f6\\u95f4 ------\\\"\\nLASTLOGIN=`for n in ${USER}; do lastlog -u $n|awk 'NR > 1 {print $1,$2,$4,$5,$6,$7,$8,$9}';done`\\n\\necho -e \\\"\\u767b\\u5f55\\u7528\\u6237\\u53ca\\u6700\\u540e\\u767b\\u5f55\\u65f6\\u95f4\\uff1a \\\" \\\"\\\\n${LASTLOGIN}\\\"\\n\"}"
  },
  {
    "path": "install/init/job-script/查看连接本机的IP地址统计.json",
    "content": "{\"script_name\": \"\\u67e5\\u770b\\u8fde\\u63a5\\u672c\\u673a\\u7684IP\\u5730\\u5740\\u7edf\\u8ba1\", \"version\": \"admin-20241114144021954742\", \"version_remarks\": \"\\u521d\\u59cb\\u5316\\u5185\\u7f6e\", \"script_type\": \"sh\", \"visible\": \"2\", \"script\": \"#!/bin/bash\\n# Description:  \\u83b7\\u53d6Linux \\u672c\\u673a\\u88ab\\u8fde\\u63a5\\u7684IP Top 5\\n\\n# Get Data/Time\\nCTIME=$(date \\\"+%Y-%m-%d %H-%M-%S\\\")\\necho -e \\\"------ $CTIME connect Top 10 ------\\\"\\nnetstat -ant|awk 'NR > 2  {print $5}'|awk -F \\\":\\\" '{print $1}'|grep -v \\\"^$\\\"|sort -nr|uniq -c|sort -nr\\n\"}"
  },
  {
    "path": "install/init/job-sls/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/job-task/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/mongodb-init/.gitkeep",
    "content": ""
  },
  {
    "path": "install/init/mongodb-init/mongodb_init.js",
    "content": "//cmdb\ndb = db.getSiblingDB('cmdb')\n\ndb.createUser({\n  user: 'cmdb',\n  pwd: 'MONGO_CMDB_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'cmdb',\n    },\n  ],\n});\n\n//job\ndb = db.getSiblingDB('job')\n\ndb.createUser({\n  user: 'job',\n  pwd: 'MONGO_JOB_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'job',\n    },\n  ],\n});\n\n//workbench\ndb = db.getSiblingDB('workbench')\n\ndb.createUser({\n  user: 'workbench',\n  pwd: 'MONGO_WORKBENCH_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'workbench',\n    },\n  ],\n});\n\n//devops\ndb = db.getSiblingDB('devops')\n\ndb.createUser({\n  user: 'devops',\n  pwd: 'MONGO_DEVOPS_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'devops',\n    },\n  ],\n});\n\n//cmp\ndb = db.getSiblingDB('cmp')\n\ndb.createUser({\n  user: 'cmp',\n  pwd: 'MONGO_CMP_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'cmp',\n    },\n  ],\n});\n\n//monitor\ndb = db.getSiblingDB('monitor')\n\ndb.createUser({\n  user: 'monitor',\n  pwd: 'MONGO_MONITOR_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'monitor',\n    },\n  ],\n});\n\n//event\ndb = db.getSiblingDB('event')\n\ndb.createUser({\n  user: 'event',\n  pwd: 'MONGO_EVENT_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'event',\n    },\n  ],\n});\n\n//llmops\ndb = db.getSiblingDB('llmops')\n\ndb.createUser({\n  user: 'llmops',\n  pwd: 'MONGO_LLMOPS_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'llmops',\n    },\n  ],\n});\n\n\n"
  },
  {
    "path": "install/init/mongodb-init/mongodb_init_ee.js",
    "content": "//auto\ndb = db.getSiblingDB('auto')\n\ndb.createUser({\n  user: 'auto',\n  pwd: 'MONGO_AUTO_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'auto',\n    },\n  ],\n});\n\n//prom\ndb = db.getSiblingDB('prom')\n\ndb.createUser({\n  user: 'prom',\n  pwd: 'MONGO_PROM_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'prom',\n    },\n  ],\n});\n\n//kbase\ndb = db.getSiblingDB('kbase')\n\ndb.createUser({\n  user: 'kbase',\n  pwd: 'MONGO_KBASE_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'kbase',\n    },\n  ],\n});\n"
  },
  {
    "path": "install/init/mongodb-init/mongodb_init_llmops.js",
    "content": "//auto\ndb = db.getSiblingDB('llmops')\n\ndb.createUser({\n  user: 'llmops',\n  pwd: 'MONGO_LLMOPS_PASSWORD',\n  roles: [\n    {\n      role: 'readWrite',\n      db: 'llmops',\n    },\n  ],\n});\n"
  },
  {
    "path": "install/init/opsany-paas.sql",
    "content": "-- MySQL dump 10.14  Distrib 5.5.65-MariaDB, for Linux (x86_64)\n--\n-- Host: localhost    Database: dev_paas\n-- ------------------------------------------------------\n-- Server version\t5.5.65-MariaDB\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/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\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/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `account_bktoken`\n--\n\nDROP TABLE IF EXISTS `account_bktoken`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `account_bktoken` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `token` varchar(255) NOT NULL,\n  `is_logout` tinyint(1) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `token` (`token`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `account_bktoken`\n--\n\nLOCK TABLES `account_bktoken` WRITE;\n/*!40000 ALTER TABLE `account_bktoken` DISABLE KEYS */;\n/*!40000 ALTER TABLE `account_bktoken` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `account_bkuser`\n--\n\nDROP TABLE IF EXISTS `account_bkuser`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `account_bkuser` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `password` varchar(128) NOT NULL,\n  `last_login` datetime DEFAULT NULL,\n  `is_superuser` tinyint(1) NOT NULL,\n  `username` varchar(128) NOT NULL,\n  `chname` varchar(254) NOT NULL,\n  `company` varchar(128) NOT NULL,\n  `qq` varchar(32) NOT NULL,\n  `phone` varchar(64) NOT NULL,\n  `email` varchar(254) NOT NULL,\n  `is_staff` tinyint(1) NOT NULL,\n  `date_joined` datetime NOT NULL,\n  `role` varchar(32) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `username` (`username`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `account_bkuser`\n--\n\nLOCK TABLES `account_bkuser` WRITE;\n/*!40000 ALTER TABLE `account_bkuser` DISABLE KEYS */;\n/*!40000 ALTER TABLE `account_bkuser` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `account_bkuser_groups`\n--\n\nDROP TABLE IF EXISTS `account_bkuser_groups`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `account_bkuser_groups` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `bkuser_id` int(11) NOT NULL,\n  `group_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `bkuser_id` (`bkuser_id`,`group_id`),\n  KEY `account_bkuser_groups_group_id_62e6d4600781d550_fk_auth_group_id` (`group_id`),\n  CONSTRAINT `account_bkuser_groups_group_id_62e6d4600781d550_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`),\n  CONSTRAINT `account_bkuser_g_bkuser_id_2afe1b401266c2ba_fk_account_bkuser_id` FOREIGN KEY (`bkuser_id`) REFERENCES `account_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `account_bkuser_groups`\n--\n\nLOCK TABLES `account_bkuser_groups` WRITE;\n/*!40000 ALTER TABLE `account_bkuser_groups` DISABLE KEYS */;\n/*!40000 ALTER TABLE `account_bkuser_groups` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `account_bkuser_user_permissions`\n--\n\nDROP TABLE IF EXISTS `account_bkuser_user_permissions`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `account_bkuser_user_permissions` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `bkuser_id` int(11) NOT NULL,\n  `permission_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `bkuser_id` (`bkuser_id`,`permission_id`),\n  KEY `account_bkus_permission_id_d5bec30ce864e6d_fk_auth_permission_id` (`permission_id`),\n  CONSTRAINT `account_bkus_permission_id_d5bec30ce864e6d_fk_auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`),\n  CONSTRAINT `account_bkuser_u_bkuser_id_726503c76778809c_fk_account_bkuser_id` FOREIGN KEY (`bkuser_id`) REFERENCES `account_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `account_bkuser_user_permissions`\n--\n\nLOCK TABLES `account_bkuser_user_permissions` WRITE;\n/*!40000 ALTER TABLE `account_bkuser_user_permissions` DISABLE KEYS */;\n/*!40000 ALTER TABLE `account_bkuser_user_permissions` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `account_loignlog`\n--\n\nDROP TABLE IF EXISTS `account_loignlog`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `account_loignlog` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `login_time` datetime NOT NULL,\n  `login_browser` varchar(200) DEFAULT NULL,\n  `login_ip` varchar(50) DEFAULT NULL,\n  `login_host` varchar(100) DEFAULT NULL,\n  `app_id` varchar(30) DEFAULT NULL,\n  `user_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `account_loignlog_user_id_15323b92e87f1680_fk_account_bkuser_id` (`user_id`),\n  CONSTRAINT `account_loignlog_user_id_15323b92e87f1680_fk_account_bkuser_id` FOREIGN KEY (`user_id`) REFERENCES `account_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `account_loignlog`\n--\n\nLOCK TABLES `account_loignlog` WRITE;\n/*!40000 ALTER TABLE `account_loignlog` DISABLE KEYS */;\n/*!40000 ALTER TABLE `account_loignlog` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `auth_group`\n--\n\nDROP TABLE IF EXISTS `auth_group`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `auth_group` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(80) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `name` (`name`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `auth_group`\n--\n\nLOCK TABLES `auth_group` WRITE;\n/*!40000 ALTER TABLE `auth_group` DISABLE KEYS */;\n/*!40000 ALTER TABLE `auth_group` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `auth_group_permissions`\n--\n\nDROP TABLE IF EXISTS `auth_group_permissions`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `auth_group_permissions` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `group_id` int(11) NOT NULL,\n  `permission_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `group_id` (`group_id`,`permission_id`),\n  KEY `auth_group__permission_id_1f49ccbbdc69d2fc_fk_auth_permission_id` (`permission_id`),\n  CONSTRAINT `auth_group__permission_id_1f49ccbbdc69d2fc_fk_auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`),\n  CONSTRAINT `auth_group_permission_group_id_689710a9a73b7457_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `auth_group_permissions`\n--\n\nLOCK TABLES `auth_group_permissions` WRITE;\n/*!40000 ALTER TABLE `auth_group_permissions` DISABLE KEYS */;\n/*!40000 ALTER TABLE `auth_group_permissions` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `auth_permission`\n--\n\nDROP TABLE IF EXISTS `auth_permission`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `auth_permission` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(255) NOT NULL,\n  `content_type_id` int(11) NOT NULL,\n  `codename` varchar(100) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `content_type_id` (`content_type_id`,`codename`),\n  CONSTRAINT `auth__content_type_id_508cf46651277a81_fk_django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=184 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `auth_permission`\n--\n\nLOCK TABLES `auth_permission` WRITE;\n/*!40000 ALTER TABLE `auth_permission` DISABLE KEYS */;\nINSERT INTO `auth_permission` VALUES (1,'Can add log entry',1,'add_logentry'),(2,'Can change log entry',1,'change_logentry'),(3,'Can delete log entry',1,'delete_logentry'),(4,'Can add permission',2,'add_permission'),(5,'Can change permission',2,'change_permission'),(6,'Can delete permission',2,'delete_permission'),(7,'Can add group',3,'add_group'),(8,'Can change group',3,'change_group'),(9,'Can delete group',3,'delete_group'),(10,'Can add content type',4,'add_contenttype'),(11,'Can change content type',4,'change_contenttype'),(12,'Can delete content type',4,'delete_contenttype'),(13,'Can add session',5,'add_session'),(14,'Can change session',5,'change_session'),(15,'Can delete session',5,'delete_session'),(16,'Can add user',6,'add_bkuser'),(17,'Can change user',6,'change_bkuser'),(18,'Can delete user',6,'delete_bkuser'),(19,'Can add 用户登录日志',7,'add_loignlog'),(20,'Can change 用户登录日志',7,'change_loignlog'),(21,'Can delete 用户登录日志',7,'delete_loignlog'),(22,'Can add 登录票据',8,'add_bktoken'),(23,'Can change 登录票据',8,'change_bktoken'),(24,'Can delete 登录票据',8,'delete_bktoken'),(25,'Can add 应用分类信息',9,'add_apptags'),(26,'Can change 应用分类信息',9,'change_apptags'),(27,'Can delete 应用分类信息',9,'delete_apptags'),(28,'Can add 应用基本信息',10,'add_app'),(29,'Can change 应用基本信息',10,'change_app'),(30,'Can delete 应用基本信息',10,'delete_app'),(31,'Can add 应用安全相关信息',11,'add_secureinfo'),(32,'Can change 应用安全相关信息',11,'change_secureinfo'),(33,'Can delete 应用安全相关信息',11,'delete_secureinfo'),(34,'Can add 应用桌面属性',12,'add_desktopsettings'),(35,'Can change 应用桌面属性',12,'change_desktopsettings'),(36,'Can delete 应用桌面属性',12,'delete_desktopsettings'),(37,'Can add 应用环境变量',13,'add_appenvvar'),(38,'Can change 应用环境变量',13,'change_appenvvar'),(39,'Can delete 应用环境变量',13,'delete_appenvvar'),(40,'Can add 应用部署操作信息',14,'add_record'),(41,'Can change 应用部署操作信息',14,'change_record'),(42,'Can delete 应用部署操作信息',14,'delete_record'),(43,'Can add 应用发布版本信息',15,'add_version'),(44,'Can change 应用发布版本信息',15,'change_version'),(45,'Can delete 应用发布版本信息',15,'delete_version'),(46,'Can add 应用特征信息',16,'add_versiondetail'),(47,'Can change 应用特征信息',16,'change_versiondetail'),(48,'Can delete 应用特征信息',16,'delete_versiondetail'),(49,'Can add 用户操作流水日志',17,'add_useroperaterecord'),(50,'Can change 用户操作流水日志',17,'change_useroperaterecord'),(51,'Can delete 用户操作流水日志',17,'delete_useroperaterecord'),(52,'Can add cluster info',18,'add_bkcluster'),(53,'Can change cluster info',18,'change_bkcluster'),(54,'Can delete cluster info',18,'delete_bkcluster'),(55,'Can add app info',19,'add_bkapp'),(56,'Can change app info',19,'change_bkapp'),(57,'Can delete app info',19,'delete_bkapp'),(58,'Can add app token',20,'add_bkapptoken'),(59,'Can change app token',20,'change_bkapptoken'),(60,'Can delete app token',20,'delete_bkapptoken'),(61,'Can add 服务器信息',21,'add_bkserver'),(62,'Can change 服务器信息',21,'change_bkserver'),(63,'Can delete 服务器信息',21,'delete_bkserver'),(64,'Can add 第三方服务器信息',22,'add_thirdserver'),(65,'Can change 第三方服务器信息',22,'change_thirdserver'),(66,'Can delete 第三方服务器信息',22,'delete_thirdserver'),(67,'Can add router map',23,'add_bkhostingship'),(68,'Can change router map',23,'change_bkhostingship'),(69,'Can delete router map',23,'delete_bkhostingship'),(70,'Can add app env',24,'add_bkappenv'),(71,'Can change app env',24,'change_bkappenv'),(72,'Can delete app env',24,'delete_bkappenv'),(73,'Can add app event',25,'add_bkappevent'),(74,'Can change app event',25,'change_bkappevent'),(75,'Can delete app event',25,'delete_bkappevent'),(76,'Can add app event log',26,'add_bkappeventlog'),(77,'Can change app event log',26,'change_bkappeventlog'),(78,'Can delete app event log',26,'delete_bkappeventlog'),(79,'Can add 用户收藏应用',27,'add_userapps'),(80,'Can change 用户收藏应用',27,'change_userapps'),(81,'Can delete 用户收藏应用',27,'delete_userapps'),(82,'Can add 用户自定义的应用列表',28,'add_usersettings'),(83,'Can change 用户自定义的应用列表',28,'change_usersettings'),(84,'Can delete 用户自定义的应用列表',28,'delete_usersettings'),(85,'Can add 常用链接',29,'add_usefullinks'),(86,'Can change 常用链接',29,'change_usefullinks'),(87,'Can delete 常用链接',29,'delete_usefullinks'),(88,'Can add SaaS 应用',30,'add_saasapp'),(89,'Can change SaaS 应用',30,'change_saasapp'),(90,'Can delete SaaS 应用',30,'delete_saasapp'),(91,'Can add SaaS 应用版本',31,'add_saasappversion'),(92,'Can change SaaS 应用版本',31,'change_saasappversion'),(93,'Can delete SaaS 应用版本',31,'delete_saasappversion'),(94,'Can add SaaS上传安装包',32,'add_saasuploadfile'),(95,'Can change SaaS上传安装包',32,'change_saasuploadfile'),(96,'Can delete SaaS上传安装包',32,'delete_saasuploadfile'),(97,'Can add 资源下载',33,'add_resource'),(98,'Can change 资源下载',33,'change_resource'),(99,'Can delete 资源下载',33,'delete_resource'),(100,'Can add 微信与蓝鲸用户绑定过程临时表',34,'add_wxbkusertmprecord'),(101,'Can change 微信与蓝鲸用户绑定过程临时表',34,'change_wxbkusertmprecord'),(102,'Can delete 微信与蓝鲸用户绑定过程临时表',34,'delete_wxbkusertmprecord'),(103,'Can add component system',35,'add_componentsystem'),(104,'Can change component system',35,'change_componentsystem'),(105,'Can delete component system',35,'delete_componentsystem'),(106,'Can add esb channel',36,'add_esbchannel'),(107,'Can change esb channel',36,'change_esbchannel'),(108,'Can delete esb channel',36,'delete_esbchannel'),(109,'Can add function controller',37,'add_functioncontroller'),(110,'Can change function controller',37,'change_functioncontroller'),(111,'Can delete function controller',37,'delete_functioncontroller'),(112,'Can add user auth token',38,'add_userauthtoken'),(113,'Can change user auth token',38,'change_userauthtoken'),(114,'Can delete user auth token',38,'delete_userauthtoken'),(115,'Can add esb buffet component',39,'add_esbbuffetcomponent'),(116,'Can change esb buffet component',39,'change_esbbuffetcomponent'),(117,'Can delete esb buffet component',39,'delete_esbbuffetcomponent'),(118,'Can add esb buffet mapping',40,'add_esbbuffetmapping'),(119,'Can change esb buffet mapping',40,'change_esbbuffetmapping'),(120,'Can delete esb buffet mapping',40,'delete_esbbuffetmapping'),(121,'Can add app account',41,'add_appaccount'),(122,'Can change app account',41,'change_appaccount'),(123,'Can delete app account',41,'delete_appaccount'),(124,'Can add API文档',42,'add_componentapidoc'),(125,'Can change API文档',42,'change_componentapidoc'),(126,'Can delete API文档',42,'delete_componentapidoc'),(127,'Can add 接口反馈',43,'add_feedbackforcomponentdocs'),(128,'Can change 接口反馈',43,'change_feedbackforcomponentdocs'),(129,'Can delete 接口反馈',43,'delete_feedbackforcomponentdocs'),(130,'Can add 系统文档分类',44,'add_systemdoccategory'),(131,'Can change 系统文档分类',44,'change_systemdoccategory'),(132,'Can delete 系统文档分类',44,'delete_systemdoccategory'),(133,'Can add APP API权限',45,'add_appcomponentperm'),(134,'Can change APP API权限',45,'change_appcomponentperm'),(135,'Can delete APP API权限',45,'delete_appcomponentperm'),(136,'Can add 微信公众号AccessToken',46,'add_wxmpaccesstoken'),(137,'Can change 微信公众号AccessToken',46,'change_wxmpaccesstoken'),(138,'Can delete 微信公众号AccessToken',46,'delete_wxmpaccesstoken'),(139,'Can add 用户角色',47,'add_bkrole'),(140,'Can change 用户角色',47,'change_bkrole'),(141,'Can delete 用户角色',47,'delete_bkrole'),(142,'Can add user',48,'add_bkuser'),(143,'Can change user',48,'change_bkuser'),(144,'Can delete user',48,'delete_bkuser'),(145,'Can add 用户角色关系表',49,'add_bkuserrole'),(146,'Can change 用户角色关系表',49,'change_bkuserrole'),(147,'Can delete 用户角色关系表',49,'delete_bkuserrole'),(148,'Can add 用户登录日志',50,'add_loignlog'),(149,'Can change 用户登录日志',50,'change_loignlog'),(150,'Can delete 用户登录日志',50,'delete_loignlog'),(151,'Can add 登录票据',51,'add_bktoken'),(152,'Can change 登录票据',51,'change_bktoken'),(153,'Can delete 登录票据',51,'delete_bktoken'),(154,'Can add 用户信息',52,'add_userinfo'),(155,'Can change 用户信息',52,'change_userinfo'),(156,'Can delete 用户信息',52,'delete_userinfo'),(157,'Can add user',53,'add_user'),(158,'Can change user',53,'change_user'),(159,'Can delete user',53,'delete_user'),(160,'Can add app info',54,'add_bkapp'),(161,'Can change app info',54,'change_bkapp'),(162,'Can delete app info',54,'delete_bkapp'),(163,'Can add app token',55,'add_bkapptoken'),(164,'Can change app token',55,'change_bkapptoken'),(165,'Can delete app token',55,'delete_bkapptoken'),(166,'Can add 服务器信息',56,'add_bkserver'),(167,'Can change 服务器信息',56,'change_bkserver'),(168,'Can delete 服务器信息',56,'delete_bkserver'),(169,'Can add router map',57,'add_bkhostingship'),(170,'Can change router map',57,'change_bkhostingship'),(171,'Can delete router map',57,'delete_bkhostingship'),(172,'Can add app env',58,'add_bkappenv'),(173,'Can change app env',58,'change_bkappenv'),(174,'Can delete app env',58,'delete_bkappenv'),(175,'Can add app event',59,'add_bkappevent'),(176,'Can change app event',59,'change_bkappevent'),(177,'Can delete app event',59,'delete_bkappevent'),(178,'Can add app event log',60,'add_bkappeventlog'),(179,'Can change app event log',60,'change_bkappeventlog'),(180,'Can delete app event log',60,'delete_bkappeventlog'),(181,'Can add 第三方服务器信息',61,'add_thirdserver'),(182,'Can change 第三方服务器信息',61,'change_thirdserver'),(183,'Can delete 第三方服务器信息',61,'delete_thirdserver');\n/*!40000 ALTER TABLE `auth_permission` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `bkaccount_bkuser`\n--\n\nDROP TABLE IF EXISTS `bkaccount_bkuser`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `bkaccount_bkuser` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `password` varchar(128) NOT NULL,\n  `last_login` datetime DEFAULT NULL,\n  `is_superuser` tinyint(1) NOT NULL,\n  `username` varchar(128) NOT NULL,\n  `chname` varchar(254) NOT NULL,\n  `qq` varchar(32) NOT NULL,\n  `phone` varchar(64) NOT NULL,\n  `email` varchar(254) NOT NULL,\n  `date_joined` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `username` (`username`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `bkaccount_bkuser`\n--\n\nLOCK TABLES `bkaccount_bkuser` WRITE;\n/*!40000 ALTER TABLE `bkaccount_bkuser` DISABLE KEYS */;\nINSERT INTO `bkaccount_bkuser` VALUES (1,'pbkdf2_sha256$20000$zlywc5FGjnkX$iZ/8kFT3MoqM9cuc4wcrij5s5hMf/qUBuA6DXnSycnw=','2020-11-06 00:43:11',1,'admin','','','','','2020-11-06 00:43:11');\n/*!40000 ALTER TABLE `bkaccount_bkuser` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `bkaccount_bkuser_groups`\n--\n\nDROP TABLE IF EXISTS `bkaccount_bkuser_groups`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `bkaccount_bkuser_groups` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `bkuser_id` int(11) NOT NULL,\n  `group_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `bkuser_id` (`bkuser_id`,`group_id`),\n  KEY `bkaccount_bkuser_grou_group_id_1caab09198e978c7_fk_auth_group_id` (`group_id`),\n  CONSTRAINT `bkaccount_bkuser_grou_group_id_1caab09198e978c7_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`),\n  CONSTRAINT `bkaccount_bkuse_bkuser_id_ce247b885c77e5d_fk_bkaccount_bkuser_id` FOREIGN KEY (`bkuser_id`) REFERENCES `bkaccount_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `bkaccount_bkuser_groups`\n--\n\nLOCK TABLES `bkaccount_bkuser_groups` WRITE;\n/*!40000 ALTER TABLE `bkaccount_bkuser_groups` DISABLE KEYS */;\n/*!40000 ALTER TABLE `bkaccount_bkuser_groups` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `bkaccount_bkuser_user_permissions`\n--\n\nDROP TABLE IF EXISTS `bkaccount_bkuser_user_permissions`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `bkaccount_bkuser_user_permissions` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `bkuser_id` int(11) NOT NULL,\n  `permission_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `bkuser_id` (`bkuser_id`,`permission_id`),\n  KEY `bkaccount_b_permission_id_26621dbdf1e436c0_fk_auth_permission_id` (`permission_id`),\n  CONSTRAINT `bkaccount_b_permission_id_26621dbdf1e436c0_fk_auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`),\n  CONSTRAINT `bkaccount_bkus_bkuser_id_691db91b3ff78dd7_fk_bkaccount_bkuser_id` FOREIGN KEY (`bkuser_id`) REFERENCES `bkaccount_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `bkaccount_bkuser_user_permissions`\n--\n\nLOCK TABLES `bkaccount_bkuser_user_permissions` WRITE;\n/*!40000 ALTER TABLE `bkaccount_bkuser_user_permissions` DISABLE KEYS */;\n/*!40000 ALTER TABLE `bkaccount_bkuser_user_permissions` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `console_wx_bkuser_tmp_record`\n--\n\nDROP TABLE IF EXISTS `console_wx_bkuser_tmp_record`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `console_wx_bkuser_tmp_record` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(32) NOT NULL,\n  `bk_token` varchar(255) NOT NULL,\n  `wx_ticket` varchar(127) NOT NULL,\n  `create_time` datetime DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `wx_ticket` (`wx_ticket`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `console_wx_bkuser_tmp_record`\n--\n\nLOCK TABLES `console_wx_bkuser_tmp_record` WRITE;\n/*!40000 ALTER TABLE `console_wx_bkuser_tmp_record` DISABLE KEYS */;\n/*!40000 ALTER TABLE `console_wx_bkuser_tmp_record` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `django_admin_log`\n--\n\nDROP TABLE IF EXISTS `django_admin_log`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `django_admin_log` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `action_time` datetime NOT NULL,\n  `object_id` longtext,\n  `object_repr` varchar(200) NOT NULL,\n  `action_flag` smallint(5) unsigned NOT NULL,\n  `change_message` longtext NOT NULL,\n  `content_type_id` int(11) DEFAULT NULL,\n  `user_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `djang_content_type_id_697914295151027a_fk_django_content_type_id` (`content_type_id`),\n  KEY `django_admin_log_user_id_52fdd58701c5f563_fk_account_bkuser_id` (`user_id`),\n  CONSTRAINT `django_admin_log_user_id_52fdd58701c5f563_fk_account_bkuser_id` FOREIGN KEY (`user_id`) REFERENCES `account_bkuser` (`id`),\n  CONSTRAINT `djang_content_type_id_697914295151027a_fk_django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `django_admin_log`\n--\n\nLOCK TABLES `django_admin_log` WRITE;\n/*!40000 ALTER TABLE `django_admin_log` DISABLE KEYS */;\n/*!40000 ALTER TABLE `django_admin_log` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `django_content_type`\n--\n\nDROP TABLE IF EXISTS `django_content_type`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `django_content_type` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_label` varchar(100) NOT NULL,\n  `model` varchar(100) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `django_content_type_app_label_45f3b1d93ec8c61c_uniq` (`app_label`,`model`)\n) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `django_content_type`\n--\n\nLOCK TABLES `django_content_type` WRITE;\n/*!40000 ALTER TABLE `django_content_type` DISABLE KEYS */;\nINSERT INTO `django_content_type` VALUES (8,'account','bktoken'),(6,'account','bkuser'),(7,'account','loignlog'),(1,'admin','logentry'),(54,'api','bkapp'),(58,'api','bkappenv'),(59,'api','bkappevent'),(60,'api','bkappeventlog'),(55,'api','bkapptoken'),(57,'api','bkhostingship'),(56,'api','bkserver'),(61,'api','thirdserver'),(10,'app','app'),(9,'app','apptags'),(12,'app','desktopsettings'),(11,'app','secureinfo'),(13,'app_env','appenvvar'),(3,'auth','group'),(2,'auth','permission'),(53,'auth','user'),(47,'bkaccount','bkrole'),(51,'bkaccount','bktoken'),(48,'bkaccount','bkuser'),(49,'bkaccount','bkuserrole'),(50,'bkaccount','loignlog'),(52,'bkaccount','userinfo'),(41,'bkcore','appaccount'),(45,'bkcore','appcomponentperm'),(42,'bkcore','componentapidoc'),(35,'bkcore','componentsystem'),(39,'bkcore','esbbuffetcomponent'),(40,'bkcore','esbbuffetmapping'),(36,'bkcore','esbchannel'),(43,'bkcore','feedbackforcomponentdocs'),(37,'bkcore','functioncontroller'),(44,'bkcore','systemdoccategory'),(38,'bkcore','userauthtoken'),(46,'bkcore','wxmpaccesstoken'),(4,'contenttypes','contenttype'),(19,'engine','bkapp'),(24,'engine','bkappenv'),(25,'engine','bkappevent'),(26,'engine','bkappeventlog'),(20,'engine','bkapptoken'),(18,'engine','bkcluster'),(23,'engine','bkhostingship'),(21,'engine','bkserver'),(22,'engine','thirdserver'),(29,'home','usefullinks'),(27,'home','userapps'),(28,'home','usersettings'),(14,'release','record'),(17,'release','useroperaterecord'),(15,'release','version'),(16,'release','versiondetail'),(33,'resource','resource'),(30,'saas','saasapp'),(31,'saas','saasappversion'),(32,'saas','saasuploadfile'),(5,'sessions','session'),(34,'user_center','wxbkusertmprecord');\n/*!40000 ALTER TABLE `django_content_type` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `django_migrations`\n--\n\nDROP TABLE IF EXISTS `django_migrations`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `django_migrations` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app` varchar(255) NOT NULL,\n  `name` varchar(255) NOT NULL,\n  `applied` datetime NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `django_migrations`\n--\n\nLOCK TABLES `django_migrations` WRITE;\n/*!40000 ALTER TABLE `django_migrations` DISABLE KEYS */;\nINSERT INTO `django_migrations` VALUES (1,'contenttypes','0001_initial','2020-11-06 08:42:55'),(2,'contenttypes','0002_remove_content_type_name','2020-11-06 08:42:55'),(3,'auth','0001_initial','2020-11-06 08:42:55'),(4,'auth','0002_alter_permission_name_max_length','2020-11-06 08:42:55'),(5,'auth','0003_alter_user_email_max_length','2020-11-06 08:42:55'),(6,'auth','0004_alter_user_username_opts','2020-11-06 08:42:55'),(7,'auth','0005_alter_user_last_login_null','2020-11-06 08:42:55'),(8,'auth','0006_require_contenttypes_0002','2020-11-06 08:42:55'),(9,'account','0001_initial','2020-11-06 08:42:55'),(10,'account','0002_initial_user_data','2020-11-06 08:42:55'),(11,'account','0003_bkuser_role','2020-11-06 08:42:55'),(12,'admin','0001_initial','2020-11-06 08:42:55'),(13,'app','0001_initial','2020-11-06 08:42:55'),(14,'app','0002_auto_20160615_2036','2020-11-06 08:42:55'),(15,'app','0003_app_deploy_token','2020-11-06 08:42:55'),(16,'app','0004_auto_20160929_1101','2020-11-06 08:42:55'),(17,'app','0005_auto_20161017_1038','2020-11-06 08:42:55'),(18,'app','0006_app_is_saas','2020-11-06 08:42:55'),(19,'app','0007_auto_20161111_1348','2020-11-06 08:42:55'),(20,'app','0008_auto_20190124_1708','2020-11-06 08:42:55'),(21,'app_env','0001_initial','2020-11-06 08:42:55'),(22,'app_env','0002_auto_20170821_1814','2020-11-06 08:42:55'),(23,'app_env','0003_auto_20170821_2127','2020-11-06 08:42:55'),(24,'saas','0001_initial','2020-11-06 08:42:55'),(25,'saas','0002_auto_20161025_2016','2020-11-06 08:42:55'),(26,'saas','0003_saasuploadfile_md5','2020-11-06 08:42:55'),(27,'saas','0004_saasapp_created_time','2020-11-06 08:42:55'),(28,'saas','0005_auto_20161101_1025','2020-11-06 08:42:55'),(29,'saas','0006_auto_20161111_1827','2020-11-06 08:42:55'),(30,'bk_app','0001_load_bkapps_intial_data','2020-11-06 08:42:55'),(31,'bkcore','0001_initial','2020-11-06 08:42:55'),(32,'bkcore','0002_auto_20160712_2041','2020-11-06 08:42:55'),(33,'bkcore','0003_load_intial_data','2020-11-06 08:42:55'),(34,'bkcore','0004_auto_20170220_2054','2020-11-06 08:42:55'),(35,'bkcore','0005_appaccount','2020-11-06 08:42:55'),(36,'bkcore','0006_esbchannel_comp_conf','2020-11-06 08:42:55'),(37,'bkcore','0007_auto_20170619_1050','2020-11-06 08:42:56'),(38,'bkcore','0008_auto_20170629_1138','2020-11-06 08:42:56'),(39,'bkcore','0009_wxmpaccesstoken','2020-11-06 08:42:56'),(40,'bkcore','0010_auto_20180420_1657','2020-11-06 08:42:56'),(41,'bkcore','0011_auto_20180626_2134','2020-11-06 08:42:56'),(42,'engine','0001_initial','2020-11-06 08:42:56'),(43,'engine','0002_auto_20160426_0959','2020-11-06 08:42:56'),(44,'engine','0003_auto_20160629_1545','2020-11-06 08:42:56'),(45,'engine','0004_auto_20160912_1741','2020-11-06 08:42:56'),(46,'engine','0005_auto_20160929_1109','2020-11-06 08:42:56'),(47,'home','0001_initial','2020-11-06 08:42:56'),(48,'home','0002_usersettings','2020-11-06 08:42:56'),(49,'home','0003_auto_20180126_1702','2020-11-06 08:42:56'),(50,'release','0001_initial','2020-11-06 08:42:56'),(51,'resource','0001_initial','2020-11-06 08:42:56'),(52,'resource','0002_data_insert_framework','2020-11-06 08:42:56'),(53,'resource','0003_init_data','2020-11-06 08:42:56'),(54,'resource','0004_insert_api_dev_template','2020-11-06 08:42:56'),(55,'resource','0005_data_insert_framework_py3','2020-11-06 08:42:56'),(56,'resource','0006_upgrade_framework','2020-11-06 08:42:56'),(57,'resource','0007_update_python_doc_url','2020-11-06 08:42:56'),(58,'resource','0008_upgrade_framework','2020-11-06 08:42:56'),(59,'sessions','0001_initial','2020-11-06 08:42:56'),(60,'user_center','0001_initial','2020-11-06 08:42:56'),(61,'bkaccount','0001_initial','2020-11-06 00:43:11'),(62,'bkaccount','0002_initial_user_data','2020-11-06 00:43:11'),(63,'bkaccount','0003_bktoken_inactive_expire_time','2020-11-06 00:43:11'),(64,'bkaccount','0004_auto_20170621_0929','2020-11-06 00:43:11'),(65,'bkaccount','0005_initial_role','2020-11-06 00:43:11'),(66,'bkaccount','0006_initial_bkuser_role','2020-11-06 00:43:11'),(67,'bkaccount','0007_userinfo','2020-11-06 00:43:11'),(68,'bkaccount','0008_auto_20171116_2026','2020-11-06 00:43:11'),(69,'bkaccount','0009_add_role_data','2020-11-06 00:43:11');\n/*!40000 ALTER TABLE `django_migrations` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `django_session`\n--\n\nDROP TABLE IF EXISTS `django_session`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `django_session` (\n  `session_key` varchar(40) NOT NULL,\n  `session_data` longtext NOT NULL,\n  `expire_date` datetime NOT NULL,\n  PRIMARY KEY (`session_key`),\n  KEY `django_session_de54fa62` (`expire_date`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `django_session`\n--\n\nLOCK TABLES `django_session` WRITE;\n/*!40000 ALTER TABLE `django_session` DISABLE KEYS */;\n/*!40000 ALTER TABLE `django_session` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_app_envs`\n--\n\nDROP TABLE IF EXISTS `engine_app_envs`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_app_envs` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `mode` varchar(200) NOT NULL,\n  `key` varchar(200) NOT NULL,\n  `value` varchar(200) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  `bk_app_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `engine_app_envs_bk_app_id_79795a49b7dd8d8b_fk_engine_apps_id` (`bk_app_id`),\n  CONSTRAINT `engine_app_envs_bk_app_id_79795a49b7dd8d8b_fk_engine_apps_id` FOREIGN KEY (`bk_app_id`) REFERENCES `engine_apps` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_app_envs`\n--\n\nLOCK TABLES `engine_app_envs` WRITE;\n/*!40000 ALTER TABLE `engine_app_envs` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_app_envs` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_app_event_logs`\n--\n\nDROP TABLE IF EXISTS `engine_app_event_logs`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_app_event_logs` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `log` longtext NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  `bk_app_event_id` char(32) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `engine__bk_app_event_id_161ffd18f40a3d04_fk_engine_app_events_id` (`bk_app_event_id`),\n  CONSTRAINT `engine__bk_app_event_id_161ffd18f40a3d04_fk_engine_app_events_id` FOREIGN KEY (`bk_app_event_id`) REFERENCES `engine_app_events` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_app_event_logs`\n--\n\nLOCK TABLES `engine_app_event_logs` WRITE;\n/*!40000 ALTER TABLE `engine_app_event_logs` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_app_event_logs` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_app_events`\n--\n\nDROP TABLE IF EXISTS `engine_app_events`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_app_events` (\n  `id` char(32) NOT NULL,\n  `event_type` varchar(200) NOT NULL,\n  `status` varchar(200) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  `bk_app_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `engine_app_events_bk_app_id_638a5aa6638cf9d6_fk_engine_apps_id` (`bk_app_id`),\n  CONSTRAINT `engine_app_events_bk_app_id_638a5aa6638cf9d6_fk_engine_apps_id` FOREIGN KEY (`bk_app_id`) REFERENCES `engine_apps` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_app_events`\n--\n\nLOCK TABLES `engine_app_events` WRITE;\n/*!40000 ALTER TABLE `engine_app_events` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_app_events` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_app_tokens`\n--\n\nDROP TABLE IF EXISTS `engine_app_tokens`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_app_tokens` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `key` char(32) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  `bk_app_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `engine_app_tokens_bk_app_id_35f82d9404d6dd5d_fk_engine_apps_id` (`bk_app_id`),\n  CONSTRAINT `engine_app_tokens_bk_app_id_35f82d9404d6dd5d_fk_engine_apps_id` FOREIGN KEY (`bk_app_id`) REFERENCES `engine_apps` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_app_tokens`\n--\n\nLOCK TABLES `engine_app_tokens` WRITE;\n/*!40000 ALTER TABLE `engine_app_tokens` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_app_tokens` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_apps`\n--\n\nDROP TABLE IF EXISTS `engine_apps`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_apps` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(20) NOT NULL,\n  `logo` varchar(100) NOT NULL,\n  `app_code` varchar(100) NOT NULL,\n  `app_lang` varchar(100) NOT NULL,\n  `app_type` varchar(100) NOT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `app_code` (`app_code`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_apps`\n--\n\nLOCK TABLES `engine_apps` WRITE;\n/*!40000 ALTER TABLE `engine_apps` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_apps` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_clusters`\n--\n\nDROP TABLE IF EXISTS `engine_clusters`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_clusters` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(20) NOT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_clusters`\n--\n\nLOCK TABLES `engine_clusters` WRITE;\n/*!40000 ALTER TABLE `engine_clusters` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_clusters` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_hosting_ships`\n--\n\nDROP TABLE IF EXISTS `engine_hosting_ships`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_hosting_ships` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `is_active` tinyint(1) NOT NULL,\n  `is_master` tinyint(1) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  `bk_app_id` int(11) NOT NULL,\n  `bk_server_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `engine_hosting_ship_bk_app_id_438684a48ab9d1a4_fk_engine_apps_id` (`bk_app_id`),\n  KEY `engine_hosting_ships_2a012a10` (`bk_server_id`),\n  CONSTRAINT `engine_hostin_bk_server_id_3be78b50662c9b45_fk_engine_servers_id` FOREIGN KEY (`bk_server_id`) REFERENCES `engine_servers` (`id`),\n  CONSTRAINT `engine_hosting_ship_bk_app_id_438684a48ab9d1a4_fk_engine_apps_id` FOREIGN KEY (`bk_app_id`) REFERENCES `engine_apps` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_hosting_ships`\n--\n\nLOCK TABLES `engine_hosting_ships` WRITE;\n/*!40000 ALTER TABLE `engine_hosting_ships` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_hosting_ships` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_servers`\n--\n\nDROP TABLE IF EXISTS `engine_servers`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_servers` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(20) NOT NULL,\n  `s_id` char(32) NOT NULL,\n  `token` char(32) NOT NULL,\n  `ip_address` varchar(36) NOT NULL,\n  `ip_port` varchar(36) NOT NULL,\n  `category` varchar(36) NOT NULL,\n  `info` varchar(200) NOT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  `app_port` varchar(36) NOT NULL,\n  `mac` varchar(36) NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_servers`\n--\n\nLOCK TABLES `engine_servers` WRITE;\n/*!40000 ALTER TABLE `engine_servers` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_servers` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `engine_third_servers`\n--\n\nDROP TABLE IF EXISTS `engine_third_servers`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `engine_third_servers` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `category` varchar(36) NOT NULL,\n  `server_info` longtext NOT NULL,\n  `info` varchar(200) NOT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `created_at` datetime NOT NULL,\n  `updated_at` datetime NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `engine_third_servers`\n--\n\nLOCK TABLES `engine_third_servers` WRITE;\n/*!40000 ALTER TABLE `engine_third_servers` DISABLE KEYS */;\n/*!40000 ALTER TABLE `engine_third_servers` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_api_doc`\n--\n\nDROP TABLE IF EXISTS `esb_api_doc`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_api_doc` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `board` varchar(64) DEFAULT NULL,\n  `component_id` int(11) NOT NULL,\n  `doc_md` longtext,\n  `doc_html` longtext,\n  `doc_md_md5` varchar(128) NOT NULL,\n  `created_time` datetime NOT NULL,\n  `updated_time` datetime NOT NULL,\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `component_id` (`component_id`) USING BTREE,\n  KEY `esb_api_doc_1145f263` (`board`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_api_doc`\n--\n\nLOCK TABLES `esb_api_doc` WRITE;\n/*!40000 ALTER TABLE `esb_api_doc` DISABLE KEYS */;\nINSERT INTO `esb_api_doc` VALUES (1,'',1,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_manual_add_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_manual_add_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_manual_add_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_manual_add_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u624b\\\\u52a8\\\\u6dfb\\\\u52a0\\\\u7684Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d22582b924703333b162734f5a1ee167','2020-04-22 08:56:22','2020-04-22 08:56:22'),(2,'',2,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668name |\\\\n| id | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668name |\\\\n| id | string | \\\\u5426  | \\\\u63a7\\\\u5236\\\\u5668id |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668name</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668name</td>\\\\n</tr>\\\\n<tr>\\\\n<td>id</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u63a7\\\\u5236\\\\u5668id</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0695a23c9ace761d6d408f2371e60175','2020-04-22 08:56:22','2020-04-22 08:56:22'),(3,'',3,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| model_code | str | \\\\u5426   | \\\\u6a21\\\\u578bcode |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>model_code</td>\\\\n<td>str</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6a21\\\\u578bcode</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b7f2f3928dcaa2f6b22c42657054ec8d','2020-04-22 08:56:22','2020-05-13 07:43:53'),(4,'',4,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f    | \\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"HOST_name\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\",\\\\n            \\\\\\\"HOST_IP\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\"\\\\n        },\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"HOST\\\\\\\",\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"HOST_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_inst/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| data | dict | \\\\u662f    | \\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"HOST_name\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\",\\\\n            \\\\\\\"HOST_IP\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\"\\\\n        },\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"HOST\\\\\\\",\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"HOST_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u4e3b\\\\u673a\\\\u540d\\\\\\\"\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_inst/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>data</td>\\\\n<td>dict</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b9e\\\\u4f8b\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;HOST_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4e3b\\\\u673a\\\\u540d&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d8f59393e97542a6a608625ba28d7c0c','2020-04-22 08:56:22','2020-04-22 08:56:22'),(5,'',5,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_agent_state/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list | array | \\\\u662f    | \\\\u8282\\\\u70b9\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n     \\\\\\\"list\\\\\\\":[\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.2\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  [\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 22,\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"SERVER\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"SERVER_name\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_IN_RACK\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_HOSTNAME\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_INTERNAL_IP\\\\\\\": \\\\\\\"\\\\\\\",\\\\n            \\\\\\\"SERVER_PUBLIC_IP\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_AGENT_STATE\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"SERVER_CONTROLLER_NAME\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"SERVER_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n        \\\\\\\"position\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n        \\\\\\\"link_inst\\\\\\\": [],\\\\n        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"business_code\\\\\\\": \\\\\\\"x\\\\\\\"\\\\n    }\\\\n]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/update_agent_state/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| list | array | \\\\u662f    | \\\\u8282\\\\u70b9\\\\u5217\\\\u8868 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n     \\\\\\\"list\\\\\\\":[\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        {\\\\n            \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.2\\\\\\\",\\\\n            \\\\\\\"agent\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n            \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\":  [\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 22,\\\\n        \\\\\\\"model_code\\\\\\\": \\\\\\\"SERVER\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": {\\\\n            \\\\\\\"SERVER_name\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_IN_RACK\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_HOSTNAME\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_INTERNAL_IP\\\\\\\": \\\\\\\"\\\\\\\",\\\\n            \\\\\\\"SERVER_PUBLIC_IP\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n            \\\\\\\"SERVER_AGENT_STATE\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n            \\\\\\\"SERVER_CONTROLLER_NAME\\\\\\\": \\\\\\\"default.None\\\\\\\"\\\\n        },\\\\n        \\\\\\\"pk_name\\\\\\\": \\\\\\\"SERVER_name\\\\\\\",\\\\n        \\\\\\\"pk_value\\\\\\\": \\\\\\\"xxxxx\\\\\\\",\\\\n        \\\\\\\"position\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n        \\\\\\\"link_inst\\\\\\\": [],\\\\n        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xx\\\\\\\",\\\\n        \\\\\\\"business_code\\\\\\\": \\\\\\\"x\\\\\\\"\\\\n    }\\\\n]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_agent_state/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8282\\\\u70b9\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">22</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_IN_RACK&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_HOSTNAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_INTERNAL_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_PUBLIC_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_AGENT_STATE&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_CONTROLLER_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;x&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/update_agent_state/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>list</td>\\\\n<td>array</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8282\\\\u70b9\\\\u5217\\\\u8868</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n     <span class=\\\\\\\"s2\\\\\\\">&quot;list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;agent&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">22</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_IN_RACK&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_HOSTNAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_INTERNAL_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_PUBLIC_IP&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_AGENT_STATE&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n            <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_CONTROLLER_NAME&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SERVER_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;x&quot;</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4e91ad06411416fb468c2bb35db02dba','2020-04-22 08:56:22','2020-04-22 08:56:22'),(6,'',6,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_grains_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/import_grains_from_control/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| grains_data | \\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b | \\\\u662f    | \\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\":  {\\\\n    \\'grains_data\\': {\\\\n        \\'CLOUD_SERVER_HOSTNAME\\': \\'www.xxxxxxxxx.com\\',\\\\n        ....\\\\n    },\\\\n    \\'pk_name\\': \\'xxxxxxxxxxxxx\\',\\\\n    \\'pk_value\\': \\'xxxxxxxxxxx\\',\\\\n    \\'model_code\\': \\'xxxxxxxxxxxxxxxx\\',\\\\n    \\'import_type\\': \\'Agent\\\\u91c7\\\\u96c6\\',\\\\n    \\'position\\': \\'xxxxxxxxxxx\\'\\\\n}\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20002,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"grains_data\\\\\\\": {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_grains_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/import_grains_from_control/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u5bfc\\\\u5165Grains\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>grains_data</td>\\\\n<td>\\\\u7b26\\\\u5408\\\\u7c7b\\\\u578b</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5bfc\\\\u5165\\\\u4fe1\\\\u606f</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;grains_data&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s1\\\\\\\">&#39;CLOUD_SERVER_HOSTNAME&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;www.xxxxxxxxx.com&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">....</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_name&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;pk_value&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;model_code&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxxxxxxx&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;import_type&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;Agent\\\\u91c7\\\\u96c6&#39;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s1\\\\\\\">&#39;position&#39;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s1\\\\\\\">&#39;xxxxxxxxxxx&#39;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20002</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u521b\\\\u5efa\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;grains_data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fd04cb00f3bc15d6898ac18bbefdcc27','2020-04-22 08:56:22','2020-04-22 08:56:22'),(7,'',7,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f    | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f    | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20007,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5b9e\\\\u4f8b\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20007</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','20836e375a35a17b92319ec5954fa0b9','2020-04-22 08:56:22','2020-04-22 08:56:22'),(8,'',8,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_agent_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"normal\\\\\\\": 1,\\\\n        \\\\\\\"not_install\\\\\\\": 4,\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"192.169.0.100\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            }\\\\n        ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_agent_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code | string | \\\\u662f  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"normal\\\\\\\": 1,\\\\n        \\\\\\\"not_install\\\\\\\": 4,\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxx\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u6b63\\\\u5e38\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"192.169.0.100\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            },\\\\n            {\\\\n                \\\\\\\"ip\\\\\\\": \\\\\\\"127.0.0.1\\\\\\\",\\\\n                \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                \\\\\\\"controller_name\\\\\\\": \\\\\\\"default.None\\\\\\\",\\\\n                \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"12\\\\\\\"\\\\n            }\\\\n        ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_agent_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;192.169.0.100&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_agent_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u4e1a\\\\u52a1code\\\\u67e5\\\\u8be2\\\\u8282\\\\u70b9\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">4</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u6b63\\\\u5e38&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;192.169.0.100&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;127.0.0.1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;default.None&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;12&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','4e45163d1b5484ab4ff07b376cad3d66','2020-04-22 08:56:22','2020-04-22 08:56:22'),(9,'',9,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"son\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 11,\\\\n                \\\\\\\"model_code\\\\\\\": \\\\\\\"APPLICATION\\\\\\\",\\\\n                \\\\\\\"data\\\\\\\": {\\\\n                    \\\\\\\"APPLICATION_name\\\\\\\": \\\\\\\"\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_ID\\\\\\\": \\\\\\\"SHARE_SERVICE\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_STATUS\\\\\\\": \\\\\\\"\\\\u8fd0\\\\u884c\\\\u4e2d\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_IN_BUSINESS\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce\\\\\\\"\\\\n                },\\\\n                \\\\\\\"pk_name\\\\\\\": \\\\\\\"APPLICATION_name\\\\\\\",\\\\n                \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce->\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                \\\\\\\"position\\\\\\\": \\\\\\\"yw\\\\\\\",\\\\n                \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n                \\\\\\\"link_inst\\\\\\\": [],\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"1\\\\\\\",\\\\n                \\\\\\\"business_code\\\\\\\": \\\\\\\"\\\\u672a\\\\u5206\\\\u914d\\\\\\\"\\\\n            }\\\\n        ]\\\\n    },\\\\n    {\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"normal\\\\\\\": 0,\\\\n                \\\\\\\"not_install\\\\\\\": 1,\\\\n                \\\\\\\"agent_info\\\\\\\": [\\\\n                    {\\\\n                        \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                        \\\\\\\"controller_name\\\\\\\": \\\\\\\"\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668\\\\\\\",\\\\n                        \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n                        \\\\\\\"host_name\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"ip_type\\\\\\\": \\\\\\\"\\\\u5916\\\\u7f51IP\\\\\\\"\\\\n                    }\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_business/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20001,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    {\\\\n        \\\\\\\"son\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"code\\\\\\\": 11,\\\\n                \\\\\\\"model_code\\\\\\\": \\\\\\\"APPLICATION\\\\\\\",\\\\n                \\\\\\\"data\\\\\\\": {\\\\n                    \\\\\\\"APPLICATION_name\\\\\\\": \\\\\\\"\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_ID\\\\\\\": \\\\\\\"SHARE_SERVICE\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_STATUS\\\\\\\": \\\\\\\"\\\\u8fd0\\\\u884c\\\\u4e2d\\\\\\\",\\\\n                    \\\\\\\"APPLICATION_IN_BUSINESS\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce\\\\\\\"\\\\n                },\\\\n                \\\\\\\"pk_name\\\\\\\": \\\\\\\"APPLICATION_name\\\\\\\",\\\\n                \\\\\\\"pk_value\\\\\\\": \\\\\\\"\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce->\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0\\\\\\\",\\\\n                \\\\\\\"position\\\\\\\": \\\\\\\"yw\\\\\\\",\\\\n                \\\\\\\"import_type\\\\\\\": \\\\\\\"\\\\u9010\\\\u6761\\\\u5f55\\\\u5165\\\\\\\",\\\\n                \\\\\\\"link_inst\\\\\\\": [],\\\\n                \\\\\\\"parent_inst\\\\\\\": \\\\\\\"1\\\\\\\",\\\\n                \\\\\\\"business_code\\\\\\\": \\\\\\\"\\\\u672a\\\\u5206\\\\u914d\\\\\\\"\\\\n            }\\\\n        ]\\\\n    },\\\\n    {\\\\n        \\\\\\\"agent_info\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"normal\\\\\\\": 0,\\\\n                \\\\\\\"not_install\\\\\\\": 1,\\\\n                \\\\\\\"agent_info\\\\\\\": [\\\\n                    {\\\\n                        \\\\\\\"ip\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"agent_state\\\\\\\": \\\\\\\"Agent\\\\u672a\\\\u5b89\\\\u88c5\\\\\\\",\\\\n                        \\\\\\\"controller_name\\\\\\\": \\\\\\\"\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668\\\\\\\",\\\\n                        \\\\\\\"system_type\\\\\\\": \\\\\\\"Linux\\\\\\\",\\\\n                        \\\\\\\"parent_inst\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n                        \\\\\\\"host_name\\\\\\\": \\\\\\\"xxxxxxxxxxxxxxx\\\\\\\",\\\\n                        \\\\\\\"ip_type\\\\\\\": \\\\\\\"\\\\u5916\\\\u7f51IP\\\\\\\"\\\\n                    }\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;son&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">11</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_ID&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SHARE_SERVICE&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_STATUS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd0\\\\u884c\\\\u4e2d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_IN_BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce-&gt;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;yw&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672a\\\\u5206\\\\u914d&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;host_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5916\\\\u7f51IP&quot;</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_business/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e1a\\\\u52a1\\\\u4ee5\\\\u53ca\\\\u5b9e\\\\u4f8b</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20001</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u516c\\\\u6709\\\\u4e91\\\\u5730\\\\u533a\\\\u5217\\\\u8868\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;son&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">11</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;model_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_ID&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;SHARE_SERVICE&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_STATUS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u8fd0\\\\u884c\\\\u4e2d&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                    <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_IN_BUSINESS&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce&quot;</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;APPLICATION_name&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;pk_value&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u7f51\\\\u4e0a\\\\u5546\\\\u57ce-&gt;\\\\u5546\\\\u57ce\\\\u4e2d\\\\u53f0&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;position&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;yw&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;import_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9010\\\\u6761\\\\u5f55\\\\u5165&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;link_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[],</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;business_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672a\\\\u5206\\\\u914d&quot;</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;normal&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;not_install&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;agent_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;agent_state&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Agent\\\\u672a\\\\u5b89\\\\u88c5&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;controller_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u672c\\\\u5730\\\\u670d\\\\u52a1\\\\u5668&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;system_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;Linux&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_inst&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;host_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxxxxxxxxxxxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;ip_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u5916\\\\u7f51IP&quot;</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','5be6b85ccd38953f1a312cbe9ba1978e','2020-04-22 08:56:22','2020-04-22 08:56:22'),(10,'',10,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_net_work/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;\\\\n\\\\n}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_net_work/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;\\\\n\\\\n}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_net_work/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<p>| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;</p>\\\\n<p>}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |</p>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_net_work/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u7aef\\\\u53e3\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<p>| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\nlocation ~ ^/doc/(.*) {\\\\n    proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\\\\n    proxy_pass_header Server;\\\\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\\\n    proxy_set_header X-Real-IP $remote_addr;\\\\n    proxy_set_header X-Scheme $scheme;\\\\n    proxy_set_header Host $http_host;\\\\n    proxy_redirect off;\\\\n    proxy_read_timeout 600;</p>\\\\n<p>}\\\\n| ----- | ------ | ---- | -------- |\\\\n| name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d \\\\n| ip | string | \\\\u662f  | ip |</p>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','92986470e48dbf1667781e2e7acf2500','2020-04-26 02:51:24','2020-04-26 04:09:46'),(11,'',11,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_control_agent_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_control_agent_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_control_agent_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_control_agent_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7ba1\\\\u63a7\\\\u5e73\\\\u53f0Agent\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','22e17342e3ec2ad808204ad2e072d930','2020-05-13 07:43:54','2020-05-13 07:43:54'),(12,'',12,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_file_stats/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_file_stats/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| file_name | string | \\\\u5426  | \\\\u6587\\\\u4ef6\\\\u540d |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_file_stats/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_file_stats/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>file_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u6587\\\\u4ef6\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','2572c9248fc3233ef544d3018dfade7e','2020-05-23 10:01:58','2020-05-23 10:01:58'),(13,'',13,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_info_by_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_info_by_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_info_by_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_info_by_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6309\\\\u7167\\\\u5206\\\\u7ec4\\\\u7684\\\\u5f62\\\\u5f0f\\\\u83b7\\\\u53d6Agent\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','c38064752d9c64dfc7e77af343acc843','2020-05-23 11:44:31','2020-05-23 11:45:47'),(14,'',14,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_ps_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_agent_ps_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_ps_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_agent_ps_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8282\\\\u70b9\\\\u7684\\\\u8fdb\\\\u7a0b\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','bd102fa2ffafae68d018a37ff891a8f5','2020-05-23 13:02:02','2020-05-23 13:02:02'),(15,'',15,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_zabbix_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_zabbix_agent/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_zabbix_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_zabbix_agent/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6ZabbixAgent\\\\u7684\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','12a93194da889ef2187e94509064ff0b','2020-05-26 07:43:08','2020-05-26 07:43:08'),(16,'',16,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_by_model_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_cmdb_data_by_model_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_by_model_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_cmdb_data_by_model_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u6839\\\\u636e\\\\u6a21\\\\u578bcode\\\\u83b7\\\\u53d6CMDB\\\\u7684\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','830a6bb210b1f13a9419f4e6ffd42092','2020-05-26 08:22:06','2020-05-26 08:22:06'),(17,'',17,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code1 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n| code2 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_inst_by_business_code/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| code1 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n| code2 | string | \\\\u5426  | \\\\u4e1a\\\\u52a1code |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code1</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code2</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_inst_by_business_code/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u4e1a\\\\u52a1code\\\\u83b7\\\\u53d6\\\\u5176\\\\u6240\\\\u6709\\\\u7684\\\\u4e3b\\\\u673a\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>code1</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>code2</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e1a\\\\u52a1code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            code: xx,\\\\n            data: {\\\\n                xxx: xxx\\\\n            },\\\\n            model_code: xxx\\\\n        }\\\\n    ]\\\\n}\\\\n</pre></div>\\\"}','5cf1d454b6a084e6a208dbab3ae10d31','2020-05-26 08:31:10','2020-05-26 10:32:02'),(18,'',18,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host_info_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    \\\\t...\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_all_host_info_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20005,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n    \\\\t...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host_info_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20005</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_all_host_info_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20005</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','acc2c1ac1043507f8c7531ca4136bedf','2020-05-30 10:03:46','2020-05-30 10:03:46'),(19,'',19,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0cebd654da0e80c7b88f032aa0e2fafb','2020-06-01 12:06:50','2020-06-01 12:06:50'),(20,'',20,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_controller_for_panel/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_name | string | \\\\u662f  | \\\\u4e3b\\\\u673a\\\\u540d |\\\\n| ip | string | \\\\u662f  | IP |\\\\n| ip_type | string | \\\\u662f  | IP\\\\u7c7b\\\\u578b |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_controller_for_panel/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u901a\\\\u8fc7\\\\u63a7\\\\u5236\\\\u5668\\\\u7684name\\\\u83b7\\\\u53d6\\\\u63a7\\\\u5236\\\\u5668\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_name</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP</td>\\\\n</tr>\\\\n<tr>\\\\n<td>ip_type</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>IP\\\\u7c7b\\\\u578b</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0cebd654da0e80c7b88f032aa0e2fafb','2020-07-10 09:23:42','2020-07-10 09:23:42'),(21,'',21,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_nav_and_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_nav_and_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_nav_and_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_nav_and_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u7528\\\\u6237\\\\u6536\\\\u85cf\\\\u60c5\\\\u51b5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','7ae629e1a57e00df9f9912093dece5ec','2020-07-10 09:24:04','2020-07-14 02:15:33'),(22,'',23,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','adabc034f6543c13f83619395c7c096e','2020-07-14 02:09:48','2020-07-14 02:09:48'),(23,'',24,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/cmdb/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/cmdb/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','677d91653036b720c8580651d4b8f03c','2020-07-14 02:09:48','2020-07-14 02:09:48'),(24,'',22,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/task/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/task/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6Agent\\\\u7684\\\\u6587\\\\u4ef6\\\\u72b6\\\\u6001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','31ef5b252bb094645e97930cd0416908','2020-07-14 02:15:33','2020-07-14 02:35:28'),(25,'',25,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_collection/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"nav_id\\\\\\\":  xx\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n\\\\t\\\\t\\\\t...\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_collection/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u6536\\\\u85cf\\\\u5bfc\\\\u822a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| nav_id | int | \\\\u662f  | \\\\u5bfc\\\\u822aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;nav_id&quot;:  xx\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','3bad2f0bbe6037e383dcb36125089af2','2020-07-15 03:29:45','2020-07-15 03:29:45'),(26,'',26,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_info_to_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| temp_id | int | \\\\u662f  | \\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID |\\\\n| parameter | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\":  xx,\\\\n    \\\\\\\"parameter\\\\\\\": \\\\\\\"(x, x, x, x)\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/post_info_to_user/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| temp_id | int | \\\\u662f  | \\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID |\\\\n| parameter | string | \\\\u662f  | \\\\u53c2\\\\u6570 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"temp_id\\\\\\\":  xx,\\\\n    \\\\\\\"parameter\\\\\\\": \\\\\\\"(x, x, x, x)\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_info_to_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>temp_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;parameter&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;(x, x, x, x)&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/post_info_to_user/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u53d1\\\\u9001\\\\u4fe1\\\\u606f</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>temp_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4fe1\\\\u606f\\\\u6a21\\\\u677fID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>parameter</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u53c2\\\\u6570</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;temp_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"n\\\\\\\">xx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;parameter&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;(x, x, x, x)&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u4fe1\\\\u606f\\\\u53d1\\\\u9001\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','19f094f0fdde39f6e9b1f161e96dd121','2020-07-23 08:08:13','2020-07-23 08:08:13'),(27,'',27,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_message_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n    | pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_message_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n    | pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_message_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_message_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u6536\\\\u53d6\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| current | string | \\\\u5426  | \\\\u9875\\\\u6570 |\\\\n| pageSize | string | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6761\\\\u6570 |\\\\n\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','85601769855591b168e3c14f7d7dd244','2020-07-27 08:45:05','2020-07-27 08:45:05'),(28,'',28,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_department_user_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_department_user_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_department_user_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_department_user_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','85ea584f647abbb99be60414a63b9acc','2020-08-12 16:39:27','2020-08-12 16:39:27'),(29,'',29,'{\\\"zh-hans\\\": \\\"\\n### u8bf7u6c42u5730u5740\\n\\n/api/c/compapi/rbac/post_menu_tree/\\n\\n\\n\\n### u8bf7u6c42u65b9u6cd5\\n\\nPOST\\n\\n\\n### u529fu80fdu63cfu8ff0\\n\\nu83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811\\n\\n### u8bf7u6c42u53c2u6570\\n\\n#### u901au7528u53c2u6570\\n\\n| u5b57u6bb5 | u7c7bu578b | u5fc5u9009 |  u63cfu8ff0 |\\n|-----------|------------|--------|------------|\\n| bk_app_code  |  string    | u662f | u5e94u7528ID     |\\n| bk_app_secret|  string    | u662f | u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6 |\\n| bk_token     |  string    | u5426 | u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6 |\\n| bk_username  |  string    | u5426 | u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237 |\\n\\n#### u63a5u53e3u53c2u6570\\n\\n| u5b57u6bb5           | u7c7bu578b   | u5fc5u9009 | u63cfu8ff0       |\\n| -----          | ------ | ---- | --------   |\\n| platform_cname | string |  u662f  | u5e73u53f0u522bu540d   |\\n\\n### u8bf7u6c42u53c2u6570u793au4f8b\\n\\n```python\\n{\\n    \\\"bk_app_code\\\": \\\"xxxx\\\",\\n    \\\"bk_app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx-xxx-xxx-xxx-xxx\\\",\\n    \\\"platform_cname\\\":  \\\"workbench\\\"\\n}\\n```\\n\\n### u8fd4u56deu7ed3u679cu793au4f8b\\n\\n```python\\n{\\n    \\\"status_code\\\": 0,\\n    \\\"status_info\\\": \\\"string\\\",\\n    \\\"data\\\": {\\n        \\\"menu_name\\\": \\\"string\\\",\\n        \\\"menu_code\\\": \\\"string\\\",\\n        \\\"id\\\": 0,\\n        \\\"priority\\\": \\\"string\\\",\\n        \\\"menu_type\\\": \\\"platform\\\",\\n        \\\"parent_id\\\": null,\\n        \\\"menu_address\\\": \\\"string\\\",\\n        \\\"children\\\": [\\n            {\\n                \\\"menu_name\\\": \\\"string\\\",\\n                \\\"menu_code\\\": \\\"string\\\",\\n                \\\"id\\\": 0,\\n                \\\"priority\\\": \\\"string\\\",\\n                \\\"menu_type\\\": \\\"directory\\\",\\n                \\\"parent_id\\\": 1,\\n                \\\"menu_address\\\": \\\"string\\\",\\n                \\\"children\\\": [\\n                    {}\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\\\", \\\"en\\\": \\\"\\n### u8bf7u6c42u5730u5740\\n\\n/api/c/compapi/rbac/post_menu_tree/\\n\\n\\n\\n### u8bf7u6c42u65b9u6cd5\\n\\nPOST\\n\\n\\n### u529fu80fdu63cfu8ff0\\n\\nu83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811\\n\\n### u8bf7u6c42u53c2u6570\\n\\n#### u901au7528u53c2u6570\\n\\n| u5b57u6bb5 | u7c7bu578b | u5fc5u9009 |  u63cfu8ff0 |\\n|-----------|------------|--------|------------|\\n| bk_app_code  |  string    | u662f | u5e94u7528ID     |\\n| bk_app_secret|  string    | u662f | u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6 |\\n| bk_token     |  string    | u5426 | u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6 |\\n| bk_username  |  string    | u5426 | u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237 |\\n\\n#### u63a5u53e3u53c2u6570\\n\\n| u5b57u6bb5           | u7c7bu578b   | u5fc5u9009 | u63cfu8ff0       |\\n| -----          | ------ | ---- | --------   |\\n| platform_cname | string |  u662f  | u5e73u53f0u522bu540d   |\\n\\n### u8bf7u6c42u53c2u6570u793au4f8b\\n\\n```python\\n{\\n    \\\"bk_app_code\\\": \\\"xxxx\\\",\\n    \\\"bk_app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx-xxx-xxx-xxx-xxx\\\",\\n    \\\"platform_cname\\\":  \\\"workbench\\\"\\n}\\n```\\n\\n### u8fd4u56deu7ed3u679cu793au4f8b\\n\\n```python\\n{\\n    \\\"status_code\\\": 0,\\n    \\\"status_info\\\": \\\"string\\\",\\n    \\\"data\\\": {\\n        \\\"menu_name\\\": \\\"string\\\",\\n        \\\"menu_code\\\": \\\"string\\\",\\n        \\\"id\\\": 0,\\n        \\\"priority\\\": \\\"string\\\",\\n        \\\"menu_type\\\": \\\"platform\\\",\\n        \\\"parent_id\\\": null,\\n        \\\"menu_address\\\": \\\"string\\\",\\n        \\\"children\\\": [\\n            {\\n                \\\"menu_name\\\": \\\"string\\\",\\n                \\\"menu_code\\\": \\\"string\\\",\\n                \\\"id\\\": 0,\\n                \\\"priority\\\": \\\"string\\\",\\n                \\\"menu_type\\\": \\\"directory\\\",\\n                \\\"parent_id\\\": 1,\\n                \\\"menu_address\\\": \\\"string\\\",\\n                \\\"children\\\": [\\n                    {}\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\"_1\\\">u8bf7u6c42u5730u5740</h3>\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\n<h3 id=\\\"_2\\\">u8bf7u6c42u65b9u6cd5</h3>\\n<p>POST</p>\\n<h3 id=\\\"_3\\\">u529fu80fdu63cfu8ff0</h3>\\n<p>u83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811</p>\\n<h3 id=\\\"_4\\\">u8bf7u6c42u53c2u6570</h3>\\n<h4 id=\\\"_5\\\">u901au7528u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>bk_app_code</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e94u7528ID</td>\\n</tr>\\n<tr>\\n<td>bk_app_secret</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_token</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_username</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237</td>\\n</tr>\\n</tbody>\\n</table>\\n<h4 id=\\\"_6\\\">u63a5u53e3u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>platform_cname</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e73u53f0u522bu540d</td>\\n</tr>\\n</tbody>\\n</table>\\n<h3 id=\\\"_7\\\">u8bf7u6c42u53c2u6570u793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_secret&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_token&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;platform_cname&quot;</span><span class=\\\"p\\\">:</span>  <span class=\\\"s2\\\">&quot;workbench&quot;</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\n\\n\\n<h3 id=\\\"_8\\\">u8fd4u56deu7ed3u679cu793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;status_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;status_info&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;data&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;platform&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"n\\\">null</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n            <span class=\\\"p\\\">{</span>\\n                <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;directory&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">1</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n                    <span class=\\\"p\\\">{}</span>\\n                <span class=\\\"p\\\">]</span>\\n            <span class=\\\"p\\\">}</span>\\n        <span class=\\\"p\\\">]</span>\\n    <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\"_1\\\">u8bf7u6c42u5730u5740</h3>\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\n<h3 id=\\\"_2\\\">u8bf7u6c42u65b9u6cd5</h3>\\n<p>POST</p>\\n<h3 id=\\\"_3\\\">u529fu80fdu63cfu8ff0</h3>\\n<p>u83b7u53d6u8be5u7528u6237u5728u7279u5b9au5e73u53f0u7684u76eeu5f55u6811</p>\\n<h3 id=\\\"_4\\\">u8bf7u6c42u53c2u6570</h3>\\n<h4 id=\\\"_5\\\">u901au7528u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>bk_app_code</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e94u7528ID</td>\\n</tr>\\n<tr>\\n<td>bk_app_secret</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5b89u5168u5bc6u94a5(u5e94u7528 TOKEN)uff0cu53efu4ee5u901au8fc7 u84ddu9cb8u667au4e91u5f00u53d1u8005u4e2du5fc3 -&gt; u70b9u51fbu5e94u7528ID -&gt; u57fau672cu4fe1u606f u83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_token</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u767bu5f55u6001uff0cbk_tokenu4e0ebk_usernameu5fc5u987bu4e00u4e2au6709u6548uff0cbk_tokenu53efu4ee5u901au8fc7Cookieu83b7u53d6</td>\\n</tr>\\n<tr>\\n<td>bk_username</td>\\n<td>string</td>\\n<td>u5426</td>\\n<td>u5f53u524du7528u6237u7528u6237u540duff0cu5e94u7528u514du767bu5f55u6001u9a8cu8bc1u767du540du5355u4e2du7684u5e94u7528uff0cu7528u6b64u5b57u6bb5u6307u5b9au5f53u524du7528u6237</td>\\n</tr>\\n</tbody>\\n</table>\\n<h4 id=\\\"_6\\\">u63a5u53e3u53c2u6570</h4>\\n<table>\\n<thead>\\n<tr>\\n<th>u5b57u6bb5</th>\\n<th>u7c7bu578b</th>\\n<th>u5fc5u9009</th>\\n<th>u63cfu8ff0</th>\\n</tr>\\n</thead>\\n<tbody>\\n<tr>\\n<td>username</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u7528u6237u540d</td>\\n</tr>\\n<tr>\\n<td>platform_cname</td>\\n<td>string</td>\\n<td>u662f</td>\\n<td>u5e73u53f0u522bu540d</td>\\n</tr>\\n</tbody>\\n</table>\\n<h3 id=\\\"_7\\\">u8bf7u6c42u53c2u6570u793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_app_secret&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;bk_token&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;platform_cname&quot;</span><span class=\\\"p\\\">:</span>  <span class=\\\"s2\\\">&quot;workbench&quot;</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\n\\n\\n<h3 id=\\\"_8\\\">u8fd4u56deu7ed3u679cu793au4f8b</h3>\\n<div class=\\\"codehilite\\\"><pre><span></span><span class=\\\"p\\\">{</span>\\n    <span class=\\\"s2\\\">&quot;status_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;status_info&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"s2\\\">&quot;data&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;platform&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"n\\\">null</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n        <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n            <span class=\\\"p\\\">{</span>\\n                <span class=\\\"s2\\\">&quot;menu_name&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_code&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;priority&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_type&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;directory&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;parent_id&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"mi\\\">1</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;menu_address&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"s2\\\">&quot;string&quot;</span><span class=\\\"p\\\">,</span>\\n                <span class=\\\"s2\\\">&quot;children&quot;</span><span class=\\\"p\\\">:</span> <span class=\\\"p\\\">[</span>\\n                    <span class=\\\"p\\\">{}</span>\\n                <span class=\\\"p\\\">]</span>\\n            <span class=\\\"p\\\">}</span>\\n        <span class=\\\"p\\\">]</span>\\n    <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">}</span>\\n</pre></div>\\\"}','99c065bd273a49badf7490263f4228df','2020-08-12 16:39:27','2020-08-14 08:01:43'),(30,'',30,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','e2120f871a86495c2672c96af32e039e','2020-08-12 16:39:27','2020-08-14 08:01:43'),(31,'',31,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| username       | string |  \\\\u662f  | \\\\u7528\\\\u6237\\\\u540d     |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>username</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u7528\\\\u6237\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','926b758e732d77fe323f204ee6c78f7f','2020-08-12 16:39:27','2020-08-14 08:01:43'),(32,'',32,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_dep_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/get_dep_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\":1, \\\\n        \\\\\\\"user_list\\\\\\\":[\\\\n            {\\\\n                \\\\\\\"username\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"chname\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"phone\\\\\\\":\\\\\\\"11111111111\\\\\\\",\\\\n                \\\\\\\"email\\\\\\\":\\\\\\\"user1@opsany.com\\\\\\\",\\\\n                \\\\\\\"description\\\\\\\":\\\\\\\"user1\\\\\\\",\\\\n                \\\\\\\"bk_role\\\\\\\":0\\\\n            },\\\\n        ],\\\\n        children:[\\\\n            {\\\\n                \\\\\\\"dep_name\\\\\\\":\\\\\\\"xxx\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 2, \\\\n                \\\\\\\"user_list\\\\\\\":[\\\\n                    {\\\\n                        \\\\\\\"username\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"chname\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"phone\\\\\\\":\\\\\\\"11111111112\\\\\\\",\\\\n                        \\\\\\\"email\\\\\\\":\\\\\\\"user2@opsany.com\\\\\\\",\\\\n                        \\\\\\\"description\\\\\\\":\\\\\\\"user2\\\\\\\",\\\\n                        \\\\\\\"bk_role\\\\\\\":0\\\\n                    },\\\\n                ],\\\\n                children:[ ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_dep_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/get_dep_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u90e8\\\\u95e8\\\\u4eba\\\\u5458\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u9519\\\\u8bef\\\\u4fe1\\\\u606f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111111&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user1&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n        <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;dep_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">2</span><span class=\\\\\\\"p\\\\\\\">,</span> \\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;user_list&quot;</span><span class=\\\\\\\"p\\\\\\\">:[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;username&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;chname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;phone&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;11111111112&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;email&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2@opsany.com&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;description&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"s2\\\\\\\">&quot;user2&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                        <span class=\\\\\\\"s2\\\\\\\">&quot;bk_role&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span><span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">},</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">],</span>\\\\n                <span class=\\\\\\\"n\\\\\\\">children</span><span class=\\\\\\\"p\\\\\\\">:[</span> <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','afd0353821cd69783cd0619b098262cc','2020-08-13 03:57:28','2020-08-13 03:57:28'),(33,'',33,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\": 0,\\\\n        \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_type\\\\\\\": \\\\\\\"platform\\\\\\\",\\\\n        \\\\\\\"parent_id\\\\\\\": null,\\\\n        \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"children\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 0,\\\\n                \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_type\\\\\\\": \\\\\\\"directory\\\\\\\",\\\\n                \\\\\\\"parent_id\\\\\\\": 1,\\\\n                \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"children\\\\\\\": [\\\\n                    {}\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_tree/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": {\\\\n        \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"id\\\\\\\": 0,\\\\n        \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"menu_type\\\\\\\": \\\\\\\"platform\\\\\\\",\\\\n        \\\\\\\"parent_id\\\\\\\": null,\\\\n        \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n        \\\\\\\"children\\\\\\\": [\\\\n            {\\\\n                \\\\\\\"menu_name\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_code\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"id\\\\\\\": 0,\\\\n                \\\\\\\"priority\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"menu_type\\\\\\\": \\\\\\\"directory\\\\\\\",\\\\n                \\\\\\\"parent_id\\\\\\\": 1,\\\\n                \\\\\\\"menu_address\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n                \\\\\\\"children\\\\\\\": [\\\\n                    {}\\\\n                ]\\\\n            }\\\\n        ]\\\\n    }\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;platform&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;directory&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_tree/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u8be5\\\\u7528\\\\u6237\\\\u5728\\\\u7279\\\\u5b9a\\\\u5e73\\\\u53f0\\\\u7684\\\\u76ee\\\\u5f55\\\\u6811</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;platform&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">null</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n        <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">{</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_name&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;priority&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_type&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;directory&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;parent_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">1</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;menu_address&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n                <span class=\\\\\\\"s2\\\\\\\">&quot;children&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n                    <span class=\\\\\\\"p\\\\\\\">{}</span>\\\\n                <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n            <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n        <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">}</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6752d97b4d741b4fcbf1065e1698d6c0','2020-08-14 08:19:55','2020-08-14 08:36:40'),(34,'',34,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_privilege/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": \\\\\\\"[C, U, R, D]\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_privilege/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u6743\\\\u9650\\\\u5217\\\\u8868</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;[C, U, R, D]&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','853fc62026f00970364d96e3ec7be59e','2020-08-14 08:19:55','2020-08-14 08:36:40'),(35,'',35,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/rbac/post_menu_verification/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5           | \\\\u7c7b\\\\u578b   | \\\\u5fc5\\\\u9009 | \\\\u63cf\\\\u8ff0       |\\\\n| -----          | ------ | ---- | --------   |\\\\n| platform_cname | string |  \\\\u662f  | \\\\u5e73\\\\u53f0\\\\u522b\\\\u540d   |\\\\n| menu_code      | string |  \\\\u662f  | menu_code  |\\\\n| http_method    | string |  \\\\u662f  | \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5   |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"xxxx\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"platform_cname\\\\\\\":  \\\\\\\"workbench\\\\\\\",\\\\n    \\\\\\\"menu_code\\\\\\\":  \\\\\\\"setting\\\\\\\",\\\\n    \\\\\\\"http_method\\\\\\\": \\\\\\\"GET\\\\\\\"\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"status_code\\\\\\\": 0,\\\\n    \\\\\\\"status_info\\\\\\\": \\\\\\\"string\\\\\\\",\\\\n    \\\\\\\"auth\\\\\\\": 0\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/rbac/post_menu_verification/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u9a8c\\\\u8bc1\\\\u7528\\\\u6237\\\\u5bf9\\\\u83dc\\\\u5355\\\\u7684\\\\u64cd\\\\u4f5c\\\\u6743\\\\u9650</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>platform_cname</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e73\\\\u53f0\\\\u522b\\\\u540d</td>\\\\n</tr>\\\\n<tr>\\\\n<td>menu_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>menu_code</td>\\\\n</tr>\\\\n<tr>\\\\n<td>http_method</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;platform_cname&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;workbench&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;menu_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"s2\\\\\\\">&quot;setting&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;http_method&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;GET&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;status_info&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;string&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;auth&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">0</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','0c2adb4273cc3ca34b57a9a1f86e7f44','2020-08-14 08:19:55','2020-08-14 08:36:40'),(36,'',36,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_user_info_from_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_user_info_from_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20005,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            {\\\\n\\\\t\\\\t\\\\t\\\\t...\\\\n            }\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_user_info_from_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_user_info_from_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u4ece\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u83b7\\\\u53d6\\\\u7528\\\\u6237\\\\u7684\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20005,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        {\\\\n            ...\\\\n        }\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','2babf61fd54565191ff5300a14e2e61e','2020-09-17 09:28:13','2020-09-17 09:28:13'),(37,'',37,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_read_all_message/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/workbench/get_read_all_message/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20001,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\":  [\\\\n\\\\t    ]\\\\n    }\\\\n    ```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_read_all_message/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/workbench/get_read_all_message/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u66f4\\\\u65b0\\\\u8282\\\\u70b9\\\\u7684Agent\\\\u60c5\\\\u51b5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20001,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;:  [\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','617f17f88dbce137207de289df609d69','2020-09-30 01:54:09','2020-09-30 02:09:33'),(38,'',38,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_all_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_all_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u6240\\\\u6709\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','36e4b8c92d673527a5211633c39526b1','2020-10-19 09:39:45','2020-10-19 09:39:45'),(39,'',39,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/get_host_info_for_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/get_host_info_for_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u7ec4\\\\u4e0b\\\\u7684\\\\u4e3b\\\\u673a</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b7d247a411d00388519381eebc2cbba3','2020-10-19 09:55:16','2020-10-19 09:55:16'),(40,'',40,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/stop_or_start_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/stop_or_start_monitor/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/stop_or_start_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/stop_or_start_monitor/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u505c\\\\u7528/\\\\u542f\\\\u7528\\\\u4e3b\\\\u673a\\\\u76d1\\\\u63a7</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','6d0467f4c22598e09eece17d1034978f','2020-10-20 03:37:02','2020-10-20 03:37:02'),(41,'',41,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_host_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/monitor_host_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_host_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/monitor_host_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u4e3b\\\\u673a\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','68fc45193d25025b1b3a528304da0926','2020-10-21 03:40:14','2020-10-21 03:40:14'),(42,'',42,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_monitor_type_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_monitor_type_count/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_monitor_type_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_monitor_type_count/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u76d1\\\\u63a7\\\\u7c7b\\\\u578b\\\\u7edf\\\\u8ba1</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','ad9b745eb3f0f5818acd9606806e4ab4','2020-10-21 03:40:14','2020-10-21 03:40:14'),(43,'',44,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/host_problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/host_problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u4e3b\\\\u673a\\\\u544a\\\\u8b66\\\\u8be6\\\\u60c5</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','00d71bc1b209a242949f8da301e3a8c0','2020-10-21 03:40:14','2020-10-21 03:40:14'),(44,'',46,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host_group/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host_group/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','b23f0ed84366a47ad6590477c3b0821b','2020-10-23 08:04:05','2020-10-23 08:04:05'),(45,'',47,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_id | int | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u7ec4id |\\\\n| search | string | \\\\u5426  | \\\\u5173\\\\u952e\\\\u8bcd |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_host/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| group_id | int | \\\\u5426  | \\\\u4e3b\\\\u673a\\\\u7ec4id |\\\\n| search | string | \\\\u5426  | \\\\u5173\\\\u952e\\\\u8bcd |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7ec4id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_host/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u76d1\\\\u63a7\\\\u5e73\\\\u53f0\\\\u7b5b\\\\u9009\\\\u4e3b\\\\u673a\\\\u7ec4</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>group_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673a\\\\u7ec4id</td>\\\\n</tr>\\\\n<tr>\\\\n<td>search</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5173\\\\u952e\\\\u8bcd</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','d2d6bd9a6f5159f99866a468e387b2e9','2020-10-23 08:04:05','2020-10-23 08:04:05'),(46,'',48,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_trigger/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_trigger/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u5426  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_trigger/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_trigger/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u89e6\\\\u53d1\\\\u5668\\\\u7684</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','a71203d547eb7db608b460d2f7e74e23','2020-10-23 08:04:05','2020-10-23 08:04:05'),(47,'',45,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/search_application/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| host_id | int | \\\\u662f  | \\\\u4e3b\\\\u673aid |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n    \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n    \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n    \\\\\\\"host_id\\\\\\\":  1\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20003,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f\\\\\\\",\\\\n    \\\\\\\"data\\\\\\\": [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/search_application/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u641c\\\\u7d22\\\\u4e3b\\\\u673a\\\\u5e94\\\\u7528\\\\u96c6</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h4 id=\\\\\\\"_6\\\\\\\">\\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>host_id</td>\\\\n<td>int</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u4e3b\\\\u673aid</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_7\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;esb-test-app&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_app_secret&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;bk_token&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;xxx-xxx-xxx-xxx-xxx&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;host_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span>  <span class=\\\\\\\"mi\\\\\\\">1</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\\n\\\\n\\\\n<h3 id=\\\\\\\"_8\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20003</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u66f4\\\\u65b0\\\\u6210\\\\u529f&quot;</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;data&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"p\\\\\\\">[</span>\\\\n        <span class=\\\\\\\"o\\\\\\\">...</span>\\\\n    <span class=\\\\\\\"p\\\\\\\">]</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','8d5b66bbe965cacde7f9d79223420774','2020-10-23 08:04:27','2020-10-23 08:04:27'),(48,'',49,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/monitor/get_info_for_workbench/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nGET\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n\\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    \\\\\\\"code\\\\\\\": 200,\\\\n    \\\\\\\"apicode\\\\\\\": 20012,\\\\n    \\\\\\\"result\\\\\\\": true,\\\\n    \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f\\\\\\\"\\\\n}\\\\n```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/monitor/get_info_for_workbench/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>GET</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<p>\\\\u83b7\\\\u53d6\\\\u5de5\\\\u4f5c\\\\u53f0\\\\u9996\\\\u9875\\\\u6570\\\\u636e</p>\\\\n<h3 id=\\\\\\\"_4\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570</h3>\\\\n<h4 id=\\\\\\\"_5\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<h3 id=\\\\\\\"_6\\\\\\\">\\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span><span class=\\\\\\\"p\\\\\\\">{</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;code&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">200</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;apicode&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"mi\\\\\\\">20012</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;result&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">true</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;request_id&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"n\\\\\\\">xxxxxxxxxxxxxxxxxxxxxxxx</span><span class=\\\\\\\"p\\\\\\\">,</span>\\\\n    <span class=\\\\\\\"s2\\\\\\\">&quot;message&quot;</span><span class=\\\\\\\"p\\\\\\\">:</span> <span class=\\\\\\\"s2\\\\\\\">&quot;\\\\u83b7\\\\u53d6\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u6210\\\\u529f&quot;</span>\\\\n<span class=\\\\\\\"p\\\\\\\">}</span>\\\\n</pre></div>\\\"}','fdd5fa26e633ceb2953ab3405ad233a5','2020-10-23 09:11:08','2020-10-23 09:11:08'),(49,'',50,'{\\\"zh-hans\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n    | pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n    | filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"pageSize\\\\\\\": 10,\\\\n\\\\t\\\\t\\\\\\\"filter\\\\\\\": {\\\\n\\\\t\\\\t\\\\t...\\\\n\\\\t\\\\t}\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            ...\\\\n        ]\\\\n    }\\\\n    ```\\\", \\\"en\\\": \\\"\\\\n### \\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740\\\\n\\\\n/api/c/compapi/control/problem_info/\\\\n\\\\n\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5\\\\n\\\\nPOST\\\\n\\\\n\\\\n### \\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0\\\\n\\\\n    \\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n    \\\\n#### \\\\u901a\\\\u7528\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5 | \\\\u7c7b\\\\u578b | \\\\u5fc5\\\\u9009 |  \\\\u63cf\\\\u8ff0 |\\\\n|-----------|------------|--------|------------|\\\\n| bk_app_code  |  string    | \\\\u662f | \\\\u5e94\\\\u7528ID     |\\\\n| bk_app_secret|  string    | \\\\u662f | \\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6 |\\\\n| bk_token     |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6 |\\\\n| bk_username  |  string    | \\\\u5426 | \\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237 |\\\\n\\\\n    #### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n    | \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n    | ----- | ------ | ---- | -------- |\\\\n    | page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n    | pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n    | filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n    ### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"bk_app_code\\\\\\\": \\\\\\\"esb-test-app\\\\\\\",\\\\n        \\\\\\\"bk_app_secret\\\\\\\": \\\\\\\"xxx\\\\\\\",\\\\n        \\\\\\\"bk_token\\\\\\\": \\\\\\\"xxx-xxx-xxx-xxx-xxx\\\\\\\",\\\\n        \\\\\\\"page\\\\\\\": 1,\\\\n        \\\\\\\"pageSize\\\\\\\": 10,\\\\n\\\\t\\\\t\\\\\\\"filter\\\\\\\": {\\\\n\\\\t\\\\t\\\\t...\\\\n\\\\t\\\\t}\\\\n    }\\\\n    ```\\\\n\\\\n    ### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n    ```python\\\\n    {\\\\n        \\\\\\\"code\\\\\\\": 200,\\\\n        \\\\\\\"apicode\\\\\\\": 20003,\\\\n        \\\\\\\"result\\\\\\\": true,\\\\n        \\\\\\\"request_id\\\\\\\": xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n        \\\\\\\"message\\\\\\\": \\\\\\\"\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f\\\\\\\",\\\\n        \\\\\\\"data\\\\\\\": [\\\\n            ...\\\\n        ]\\\\n    }\\\\n    ```\\\"}','{\\\"zh-hans\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n| filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;page&quot;: 1,\\\\n    &quot;pageSize&quot;: 10,\\\\n    &quot;filter&quot;: {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\", \\\"en\\\": \\\"<h3 id=\\\\\\\"_1\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u5730\\\\u5740</h3>\\\\n<p>/api/c/compapi/control/problem_info/</p>\\\\n<h3 id=\\\\\\\"_2\\\\\\\">\\\\u8bf7\\\\u6c42\\\\u65b9\\\\u6cd5</h3>\\\\n<p>POST</p>\\\\n<h3 id=\\\\\\\"_3\\\\\\\">\\\\u529f\\\\u80fd\\\\u63cf\\\\u8ff0</h3>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>\\\\u67e5\\\\u8be2\\\\u76d1\\\\u63a7\\\\u95ee\\\\u9898\\\\u4fe1\\\\u606f\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\n</pre></div>\\\\n\\\\n\\\\n<h4 id=\\\\\\\"_4\\\\\\\">\\\\u901a\\\\u7528\\\\u53c2\\\\u6570</h4>\\\\n<table>\\\\n<thead>\\\\n<tr>\\\\n<th>\\\\u5b57\\\\u6bb5</th>\\\\n<th>\\\\u7c7b\\\\u578b</th>\\\\n<th>\\\\u5fc5\\\\u9009</th>\\\\n<th>\\\\u63cf\\\\u8ff0</th>\\\\n</tr>\\\\n</thead>\\\\n<tbody>\\\\n<tr>\\\\n<td>bk_app_code</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5e94\\\\u7528ID</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_app_secret</td>\\\\n<td>string</td>\\\\n<td>\\\\u662f</td>\\\\n<td>\\\\u5b89\\\\u5168\\\\u5bc6\\\\u94a5(\\\\u5e94\\\\u7528 TOKEN)\\\\uff0c\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7 \\\\u84dd\\\\u9cb8\\\\u667a\\\\u4e91\\\\u5f00\\\\u53d1\\\\u8005\\\\u4e2d\\\\u5fc3 -&gt; \\\\u70b9\\\\u51fb\\\\u5e94\\\\u7528ID -&gt; \\\\u57fa\\\\u672c\\\\u4fe1\\\\u606f \\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_token</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u767b\\\\u5f55\\\\u6001\\\\uff0cbk_token\\\\u4e0ebk_username\\\\u5fc5\\\\u987b\\\\u4e00\\\\u4e2a\\\\u6709\\\\u6548\\\\uff0cbk_token\\\\u53ef\\\\u4ee5\\\\u901a\\\\u8fc7Cookie\\\\u83b7\\\\u53d6</td>\\\\n</tr>\\\\n<tr>\\\\n<td>bk_username</td>\\\\n<td>string</td>\\\\n<td>\\\\u5426</td>\\\\n<td>\\\\u5f53\\\\u524d\\\\u7528\\\\u6237\\\\u7528\\\\u6237\\\\u540d\\\\uff0c\\\\u5e94\\\\u7528\\\\u514d\\\\u767b\\\\u5f55\\\\u6001\\\\u9a8c\\\\u8bc1\\\\u767d\\\\u540d\\\\u5355\\\\u4e2d\\\\u7684\\\\u5e94\\\\u7528\\\\uff0c\\\\u7528\\\\u6b64\\\\u5b57\\\\u6bb5\\\\u6307\\\\u5b9a\\\\u5f53\\\\u524d\\\\u7528\\\\u6237</td>\\\\n</tr>\\\\n</tbody>\\\\n</table>\\\\n<div class=\\\\\\\"codehilite\\\\\\\"><pre><span></span>#### \\\\u63a5\\\\u53e3\\\\u53c2\\\\u6570\\\\n\\\\n| \\\\u5b57\\\\u6bb5    | \\\\u7c7b\\\\u578b     | \\\\u5fc5\\\\u9009   | \\\\u63cf\\\\u8ff0       |\\\\n| ----- | ------ | ---- | -------- |\\\\n| page | int | \\\\u5426  | \\\\u9875\\\\u7801 |\\\\n| pageSize | int | \\\\u5426  | \\\\u6bcf\\\\u9875\\\\u6570\\\\u636e\\\\u91cf |\\\\n| filter | object | \\\\u5426  | \\\\u7b5b\\\\u9009\\\\u5bf9\\\\u8c61 |\\\\n\\\\n### \\\\u8bf7\\\\u6c42\\\\u53c2\\\\u6570\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;bk_app_code&quot;: &quot;esb-test-app&quot;,\\\\n    &quot;bk_app_secret&quot;: &quot;xxx&quot;,\\\\n    &quot;bk_token&quot;: &quot;xxx-xxx-xxx-xxx-xxx&quot;,\\\\n    &quot;page&quot;: 1,\\\\n    &quot;pageSize&quot;: 10,\\\\n    &quot;filter&quot;: {\\\\n        ...\\\\n    }\\\\n}\\\\n```\\\\n\\\\n### \\\\u8fd4\\\\u56de\\\\u7ed3\\\\u679c\\\\u793a\\\\u4f8b\\\\n\\\\n```python\\\\n{\\\\n    &quot;code&quot;: 200,\\\\n    &quot;apicode&quot;: 20003,\\\\n    &quot;result&quot;: true,\\\\n    &quot;request_id&quot;: xxxxxxxxxxxxxxxxxxxxxxxx,\\\\n    &quot;message&quot;: &quot;\\\\u76f8\\\\u5173\\\\u4fe1\\\\u606f\\\\u83b7\\\\u53d6\\\\u6210\\\\u529f&quot;,\\\\n    &quot;data&quot;: [\\\\n        ...\\\\n    ]\\\\n}\\\\n```\\\\n</pre></div>\\\"}','4941a0fd35be8c05a8fc74a7b02d3ce8','2020-10-26 06:20:23','2020-10-26 06:20:23');\n/*!40000 ALTER TABLE `esb_api_doc` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_api_doc_feedback`\n--\n\nDROP TABLE IF EXISTS `esb_api_doc_feedback`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_api_doc_feedback` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `board` varchar(64) DEFAULT NULL,\n  `operator` varchar(32) NOT NULL,\n  `component_id` int(11) NOT NULL,\n  `content` longtext,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `esb_api_doc_feedback_1145f263` (`board`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_api_doc_feedback`\n--\n\nLOCK TABLES `esb_api_doc_feedback` WRITE;\n/*!40000 ALTER TABLE `esb_api_doc_feedback` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_api_doc_feedback` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_app_account`\n--\n\nDROP TABLE IF EXISTS `esb_app_account`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_app_account` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(30) NOT NULL,\n  `app_token` varchar(128) NOT NULL,\n  `introduction` longtext NOT NULL,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `app_code` (`app_code`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_app_account`\n--\n\nLOCK TABLES `esb_app_account` WRITE;\n/*!40000 ALTER TABLE `esb_app_account` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_app_account` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_app_component_perm`\n--\n\nDROP TABLE IF EXISTS `esb_app_component_perm`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_app_component_perm` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(64) NOT NULL,\n  `component_id` int(11) NOT NULL,\n  `expires` datetime NOT NULL,\n  `created_time` datetime NOT NULL,\n  `last_accessed_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `esb_app_component_perm_app_code_2eae5397b61d8c19_uniq` (`app_code`,`component_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_app_component_perm`\n--\n\nLOCK TABLES `esb_app_component_perm` WRITE;\n/*!40000 ALTER TABLE `esb_app_component_perm` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_app_component_perm` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_buffet_component`\n--\n\nDROP TABLE IF EXISTS `esb_buffet_component`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_buffet_component` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(256) NOT NULL,\n  `dest_url` varchar(2048) NOT NULL,\n  `dest_http_method` varchar(8) NOT NULL,\n  `favor_post_ctype` varchar(64) NOT NULL,\n  `extra_headers` varchar(2048) NOT NULL,\n  `extra_params` varchar(2048) NOT NULL,\n  `registed_path` varchar(255) NOT NULL,\n  `registed_http_method` varchar(8) NOT NULL,\n  `submitter` varchar(256) DEFAULT NULL,\n  `approver` varchar(256) DEFAULT NULL,\n  `approver_message` varchar(1024) DEFAULT NULL,\n  `status` int(11) NOT NULL,\n  `mappings_input` varchar(1024) DEFAULT NULL,\n  `mappings_output` varchar(1024) DEFAULT NULL,\n  `last_modified_time` datetime NOT NULL,\n  `created_time` datetime NOT NULL,\n  `system_id` int(11) DEFAULT NULL,\n  `timeout_time` int(11),\n  `type` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `esb_buffet_system_id_5efc5696b2b8f24a_fk_esb_component_system_id` (`system_id`),\n  CONSTRAINT `esb_buffet_system_id_5efc5696b2b8f24a_fk_esb_component_system_id` FOREIGN KEY (`system_id`) REFERENCES `esb_component_system` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_buffet_component`\n--\n\nLOCK TABLES `esb_buffet_component` WRITE;\n/*!40000 ALTER TABLE `esb_buffet_component` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_buffet_component` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_buffet_component_mapping`\n--\n\nDROP TABLE IF EXISTS `esb_buffet_component_mapping`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_buffet_component_mapping` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(40) NOT NULL,\n  `type` int(11) DEFAULT NULL,\n  `source_type` int(11) NOT NULL,\n  `source` longtext,\n  `owner` varchar(256) DEFAULT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `last_modified_time` datetime NOT NULL,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `name` (`name`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_buffet_component_mapping`\n--\n\nLOCK TABLES `esb_buffet_component_mapping` WRITE;\n/*!40000 ALTER TABLE `esb_buffet_component_mapping` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_buffet_component_mapping` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_channel`\n--\n\nDROP TABLE IF EXISTS `esb_channel`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_channel` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(64) NOT NULL,\n  `path` varchar(255) NOT NULL,\n  `method` varchar(32) DEFAULT NULL,\n  `component_codename` varchar(255) NOT NULL,\n  `is_active` tinyint(1) NOT NULL,\n  `last_modified_time` datetime NOT NULL,\n  `created_time` datetime NOT NULL,\n  `component_system_id` int(11) DEFAULT NULL,\n  `timeout_time` int(11) DEFAULT NULL,\n  `type` int(11) NOT NULL,\n  `comp_conf` longtext,\n  `component_name` varchar(64) DEFAULT NULL,\n  `is_hidden` tinyint(1) NOT NULL,\n  `perm_level` int(11) NOT NULL,\n  `rate_limit_conf` longtext,\n  `rate_limit_required` tinyint(1) NOT NULL,\n  `extra_info` longtext NOT NULL,\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `path` (`path`) USING BTREE,\n  KEY `component_system_id_75db1515b99d21dc_fk_esb_component_system_id` (`component_system_id`) USING BTREE,\n  CONSTRAINT `component_system_id_75db1515b99d21dc_fk_esb_component_system_id` FOREIGN KEY (`component_system_id`) REFERENCES `esb_component_system` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_channel`\n--\n\nLOCK TABLES `esb_channel` WRITE;\n/*!40000 ALTER TABLE `esb_channel` DISABLE KEYS */;\nINSERT INTO `esb_channel` VALUES (1,'获取管控平台手动添加的Agent信息','/control/get_manual_add_agent/','','generic.control.get_manual_add_agent',1,'2020-04-22 15:36:51','2020-04-22 15:36:51',8,NULL,2,'','get_manual_add_agent',0,0,'',0,''),(2,'通过控制器的name获取控制器信息','/control/get_controller/','','generic.control.get_controller',1,'2020-04-22 15:37:28','2020-04-22 15:37:28',8,NULL,2,'','get_controller',0,0,'',0,''),(3,'获取所有主机','/cmdb/get_all_host/','','generic.cmdb.get_all_host',1,'2020-04-22 15:54:14','2020-04-22 15:54:14',7,NULL,2,'','get_all_host',0,0,'',0,''),(4,'导入实例信息','/cmdb/import_inst/','','generic.cmdb.import_inst',1,'2020-04-22 15:55:21','2020-04-22 15:55:21',7,NULL,1,'','import_inst',0,0,'',0,''),(5,'更新节点的Agent情况','/cmdb/update_agent_state/','','generic.cmdb.update_agent_state',1,'2020-04-22 15:56:24','2020-04-22 15:56:24',7,NULL,1,'','update_agent_state',0,0,'',0,''),(6,'从管控平台导入Grains信息','/cmdb/import_grains_from_control/','','generic.cmdb.import_grains_from_control',1,'2020-04-22 15:57:28','2020-04-22 15:57:28',7,NULL,1,'','import_grains_from_control',0,0,'',0,''),(7,'获取实例树','/cmdb/get_inst_tree/','','generic.cmdb.get_inst_tree',1,'2020-04-22 16:23:16','2020-04-22 16:00:26',7,NULL,2,'','get_inst_tree',0,0,'',0,''),(8,'根据业务code查询节点情况','/cmdb/get_agent_by_business_code/','','generic.cmdb.get_agent_by_business_code',1,'2020-04-22 16:24:01','2020-04-22 16:24:01',7,NULL,2,'','get_agent_by_business_code',0,0,'',0,''),(9,'获取所有业务以及实例','/cmdb/get_all_business/','','generic.cmdb.get_all_business',1,'2020-09-09 15:25:01','2020-04-22 16:44:06',7,NULL,2,'','get_all_business',0,0,'',0,''),(10,'查询节点端口情况','/control/get_agent_net_work/','','generic.control.get_agent_net_work',1,'2020-04-26 10:49:59','2020-04-26 10:49:59',8,NULL,2,'','get_agent_net_work',0,0,'',0,''),(11,'获取管控平台的节点信息','/control/get_control_agent_info/','','generic.control.get_control_agent_info',1,'2020-05-13 15:43:49','2020-05-13 15:43:49',8,NULL,2,'','get_control_agent_info',0,0,'',0,''),(12,'查询Agent文件状态','/control/get_agent_file_stats/','','generic.control.get_agent_file_stats',1,'2020-05-23 18:01:52','2020-05-23 18:01:52',8,NULL,2,'','get_agent_file_stats',0,0,'',0,''),(13,'根据分组获取Agent信息','/control/get_agent_info_by_group/','','generic.control.get_agent_info_by_group',1,'2020-05-23 19:43:40','2020-05-23 19:43:40',8,NULL,2,'','get_agent_info_by_group',0,0,'',0,''),(14,'获取节点的进程信息','/control/get_agent_ps_info/','','generic.control.get_agent_ps_info',1,'2020-05-23 21:01:27','2020-05-23 21:01:09',8,NULL,2,'','get_agent_ps_info',0,0,'',0,''),(15,'获取ZabbixAgent信息','/control/get_all_zabbix_agent/','','generic.control.get_all_zabbix_agent',1,'2020-05-26 15:41:55','2020-05-26 15:41:55',8,NULL,2,'','get_all_zabbix_agent',0,0,'',0,''),(16,'根据模型CODE获取CMDB的数据','/cmdb/get_cmdb_data_by_model_code/','','generic.cmdb.get_cmdb_data_by_model_code',1,'2020-05-26 16:20:47','2020-05-26 16:20:47',7,NULL,2,'','get_cmdb_data_by_model_code',0,0,'',0,''),(17,'根据业务CODE获取实例信息','/cmdb/get_inst_by_business_code/','','generic.cmdb.get_inst_by_business_code',1,'2020-05-26 16:30:40','2020-05-26 16:30:40',7,NULL,2,'','get_inst_by_business_code',0,0,'',0,''),(18,'查询CMDB所有的主机','/cmdb/get_all_host_info_for_panel/','','generic.cmdb.get_all_host_info_for_panel',1,'2020-05-30 18:03:24','2020-05-30 18:03:24',7,NULL,2,'','get_all_host_info_for_panel',0,0,'',0,''),(20,'根据主机信息获取Master信息','/control/get_controller_for_panel/','','generic.control.get_controller_for_panel',1,'2020-06-01 23:35:54','2020-06-01 23:35:54',8,NULL,2,'','get_controller_for_panel',0,0,'',0,''),(21,'获取导航栏信息','/workbench/get_nav_and_collection/','','generic.workbench.get_nav_and_collection',1,'2020-07-14 10:15:05','2020-07-10 17:21:14',9,NULL,2,'','get_nav_and_collection',0,0,'',0,''),(22,'获取作业平台基础聚合信息','/task/get_info_for_workbench/','','generic.task.get_info_for_workbench',1,'2020-07-14 10:35:22','2020-07-14 10:06:32',10,NULL,2,'','get_info_for_workbench',0,0,'',0,''),(23,'获取管控平台基础聚合信息','/control/get_info_for_workbench/','','generic.control.get_info_for_workbench',1,'2020-07-14 10:07:04','2020-07-14 10:07:04',8,NULL,2,'','get_info_for_workbench',0,0,'',0,''),(24,'获取资源平台基础聚合信息','/cmdb/get_info_for_workbench/','','generic.cmdb.get_info_for_workbench',1,'2020-07-14 10:07:31','2020-07-14 10:07:31',7,NULL,2,'','get_info_for_workbench',0,0,'',0,''),(25,'收藏导航','/workbench/post_collection/','','generic.workbench.post_collection',1,'2020-07-15 11:29:37','2020-07-15 11:29:27',9,NULL,1,'','post_collection',0,0,'',0,''),(26,'发送信息','/workbench/post_info_to_user/','','generic.workbench.post_info_to_user',1,'2020-07-23 16:08:47','2020-07-23 16:07:36',9,NULL,1,'','post_info_to_user',0,0,'',0,''),(27,'获取用户收取的站内信息','/workbench/get_message_info/','','generic.workbench.get_message_info',1,'2020-07-27 16:44:23','2020-07-27 16:44:23',9,NULL,2,'','get_message_info',0,0,'',0,''),(28,'获取部门及员工树','/rbac/get_department_user_tree/','','generic.rbac.get_department_user_tree',1,'2020-08-13 00:25:42','2020-08-13 00:25:42',11,NULL,2,'','get_department_user_tree',0,0,'',0,''),(33,'获取用户在特定平台的目录树','/rbac/post_menu_tree/','','generic.rbac.post_menu_tree',1,'2020-08-14 16:16:54','2020-08-14 16:16:54',11,NULL,1,'','post_menu_tree',0,0,'',0,''),(34,'获取用户的菜单权限列表','/rbac/post_menu_privilege/','','generic.rbac.post_menu_privilege',1,'2020-08-14 16:18:09','2020-08-14 16:18:09',11,NULL,1,'','post_menu_privilege',0,0,'',0,''),(35,'验证用户对菜单的操作权限','/rbac/post_menu_verification/','','generic.rbac.post_menu_verification',1,'2020-08-14 16:19:10','2020-08-14 16:19:10',11,NULL,1,'','post_menu_verification',0,0,'',0,''),(36,'从工作台获取用户信息','/workbench/get_user_info_from_workbench/','','generic.workbench.get_user_info_from_workbench',1,'2020-09-17 17:27:56','2020-09-17 17:27:56',9,NULL,2,'','get_user_info_from_workbench',0,0,'',0,''),(37,'全部已读','/workbench/get_read_all_message/','','generic.workbench.get_read_all_message',1,'2020-09-30 10:09:09','2020-09-30 09:54:05',9,NULL,2,'','get_read_all_message',0,0,'',0,''),(38,'获取管控平台所有主机组','/control/get_all_host_group/','','generic.control.get_all_host_group',1,'2020-10-19 17:39:10','2020-10-19 17:39:10',8,NULL,2,'','get_all_host_group',0,0,'',0,''),(39,'获取分组下的节点','/control/get_host_info_for_monitor/','','generic.control.get_host_info_for_monitor',1,'2020-10-19 17:55:00','2020-10-19 17:55:00',8,NULL,1,'','get_host_info_for_monitor',0,0,'',0,''),(40,'停/启用主机监控','/control/stop_or_start_monitor/','','generic.control.stop_or_start_monitor',1,'2020-10-20 11:34:25','2020-10-20 11:34:16',8,NULL,1,'','stop_or_start_monitor',0,0,'',0,''),(41,'获取监控主机统计','/control/monitor_host_count/','','generic.control.monitor_host_count',1,'2020-10-21 11:35:31','2020-10-21 11:35:31',8,NULL,2,'','monitor_host_count',0,0,'',0,''),(42,'获取监控类型统计','/control/host_monitor_type_count/','','generic.control.host_monitor_type_count',1,'2020-10-21 11:35:49','2020-10-21 11:35:49',8,NULL,2,'','host_monitor_type_count',0,0,'',0,''),(43,'获取事件信息统计','/control/event_type_count/','','generic.control.event_type_count',1,'2020-10-21 11:47:34','2020-10-21 11:36:08',8,NULL,2,'','event_type_count',0,0,'',0,''),(44,'获取主机告警详情','/control/host_problem_info/','','generic.control.host_problem_info',1,'2020-10-21 11:36:27','2020-10-21 11:36:27',8,NULL,2,'','host_problem_info',0,0,'',0,''),(45,'搜索应用集','/control/search_application/','','generic.control.search_application',1,'2020-10-23 15:57:39','2020-10-23 15:57:39',8,NULL,2,'','search_application',0,0,'',0,''),(46,'搜索管控平台主机组','/control/search_host_group/','','generic.control.search_host_group',1,'2020-10-23 15:58:09','2020-10-23 15:58:09',8,NULL,2,'','search_host_group',0,0,'',0,''),(47,'管控平台主机','/control/search_host/','','generic.control.search_host',1,'2020-10-23 15:58:49','2020-10-23 15:58:49',8,NULL,2,'','search_host',0,0,'',0,''),(48,'搜索触发器','/control/search_trigger/','','generic.control.search_trigger',1,'2020-10-23 15:59:28','2020-10-23 15:59:28',8,NULL,2,'','search_trigger',0,0,'',0,''),(49,'获取监控平台基础聚合信息','/monitor/get_info_for_workbench/','','generic.monitor.get_info_for_workbench',1,'2020-10-23 17:04:07','2020-10-23 17:04:07',12,NULL,2,'','get_info_for_workbench',0,0,'',0,''),(50,'查询监控问题信息','/control/problem_info/','','generic.control.problem_info',1,'2020-10-26 14:19:26','2020-10-26 14:19:26',8,NULL,2,'','problem_info',0,0,'',0,'');\n/*!40000 ALTER TABLE `esb_channel` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_component_system`\n--\n\nDROP TABLE IF EXISTS `esb_component_system`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_component_system` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(64) NOT NULL,\n  `label` varchar(128) NOT NULL,\n  `component_admin` varchar(128) NOT NULL,\n  `interface_admin` varchar(128) NOT NULL,\n  `system_link` varchar(1024) NOT NULL,\n  `belong_to` varchar(128) NOT NULL,\n  `remark` longtext NOT NULL,\n  `execute_timeout` int(11) DEFAULT NULL,\n  `query_timeout` int(11) DEFAULT NULL,\n  `doc_category_id` int(11) DEFAULT NULL,\n  PRIMARY KEY (`id`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_component_system`\n--\n\nLOCK TABLES `esb_component_system` WRITE;\n/*!40000 ALTER TABLE `esb_component_system` DISABLE KEYS */;\nINSERT INTO `esb_component_system` VALUES (1,'BK_LOGIN','统一登录','','','','','',NULL,NULL,NULL),(2,'CC','配置平台','','','','','',NULL,NULL,NULL),(3,'GSE','管控平台','','','','','',NULL,NULL,NULL),(4,'JOB','作业平台','','','','','',NULL,NULL,NULL),(5,'CMSI','消息管理','','','','','',NULL,NULL,NULL),(6,'SOPS','标准运维','','','','','',NULL,NULL,NULL),(7,'CMDB','OpsAny资源平台','','admin','','','',NULL,NULL,3),(8,'CONTROL','OpsAny管控平台','','admin','','','',NULL,NULL,3),(9,'WORKBENCH','OpsAny工作台','','admin','','','',30,30,3),(10,'TASK','OpsAny作业平台','','','','','',NULL,NULL,3),(11,'rbac','OpsAny统一权限','','admin','','','',NULL,NULL,3),(12,'MONITOR','监控平台','','admin','','','',30,30,3);\n/*!40000 ALTER TABLE `esb_component_system` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_function_controller`\n--\n\nDROP TABLE IF EXISTS `esb_function_controller`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_function_controller` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `func_code` varchar(64) NOT NULL,\n  `func_name` varchar(64) NOT NULL,\n  `switch_status` tinyint(1) NOT NULL,\n  `wlist` longtext,\n  `func_desc` longtext,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `func_code` (`func_code`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_function_controller`\n--\n\nLOCK TABLES `esb_function_controller` WRITE;\n/*!40000 ALTER TABLE `esb_function_controller` DISABLE KEYS */;\nINSERT INTO `esb_function_controller` VALUES (1,'user_auth::skip_user_auth','是否跳过用户身份验证',1,'bk_paas_log_alert,login,esb,paas,proxy,websocket,zabbix,rbac,cmdb,workbench,control,job,bastion,cmp,dashboard,monitor,devops,pipeline,deploy,repo,k8s,kbase,prom,log,event,auto,apm,llmops','','2020-11-06 08:42:55');\n/*!40000 ALTER TABLE `esb_function_controller` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_system_doc_category`\n--\n\nDROP TABLE IF EXISTS `esb_system_doc_category`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_system_doc_category` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(32) NOT NULL,\n  `priority` int(11) NOT NULL,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `esb_system_doc_category_b068931c` (`name`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_system_doc_category`\n--\n\nLOCK TABLES `esb_system_doc_category` WRITE;\n/*!40000 ALTER TABLE `esb_system_doc_category` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_system_doc_category` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_user_auth_token`\n--\n\nDROP TABLE IF EXISTS `esb_user_auth_token`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_user_auth_token` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(128) NOT NULL,\n  `username` varchar(64) NOT NULL,\n  `auth_token` varchar(255) NOT NULL,\n  `expires` datetime NOT NULL,\n  `last_accessed_time` datetime NOT NULL,\n  `created_time` datetime NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_user_auth_token`\n--\n\nLOCK TABLES `esb_user_auth_token` WRITE;\n/*!40000 ALTER TABLE `esb_user_auth_token` DISABLE KEYS */;\nINSERT INTO `esb_user_auth_token` VALUES (1,'workbench','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(2,'rbac','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(3,'cmdb','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(4,'job','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(5,'control','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(6,'monitor','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(7,'cmp','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(8,'devops','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24'),(9,'event','admin','opsany-esb-auth-token-9e8083137204','2031-01-01 10:27:18','2020-12-08 10:20:22','2020-12-08 10:20:24');\n/*!40000 ALTER TABLE `esb_user_auth_token` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `esb_wxmp_access_token`\n--\n\nDROP TABLE IF EXISTS `esb_wxmp_access_token`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `esb_wxmp_access_token` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `wx_app_id` varchar(128) NOT NULL,\n  `access_token` varchar(1024) NOT NULL,\n  `expires` datetime NOT NULL,\n  `last_updated_time` datetime NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `esb_wxmp_access_token`\n--\n\nLOCK TABLES `esb_wxmp_access_token` WRITE;\n/*!40000 ALTER TABLE `esb_wxmp_access_token` DISABLE KEYS */;\n/*!40000 ALTER TABLE `esb_wxmp_access_token` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `login_bklog`\n--\n\nDROP TABLE IF EXISTS `login_bklog`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `login_bklog` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `login_time` datetime NOT NULL,\n  `login_browser` varchar(200) DEFAULT NULL,\n  `login_ip` varchar(50) DEFAULT NULL,\n  `login_host` varchar(100) DEFAULT NULL,\n  `app_id` varchar(30) DEFAULT NULL,\n  `user_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `login_bklog_user_id_44e2a9485d3af7e9_fk_bkaccount_bkuser_id` (`user_id`),\n  CONSTRAINT `login_bklog_user_id_44e2a9485d3af7e9_fk_bkaccount_bkuser_id` FOREIGN KEY (`user_id`) REFERENCES `bkaccount_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `login_bklog`\n--\n\nLOCK TABLES `login_bklog` WRITE;\n/*!40000 ALTER TABLE `login_bklog` DISABLE KEYS */;\n/*!40000 ALTER TABLE `login_bklog` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `login_bkrole`\n--\n\nDROP TABLE IF EXISTS `login_bkrole`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `login_bkrole` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `code` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `code` (`code`)\n) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `login_bkrole`\n--\n\nLOCK TABLES `login_bkrole` WRITE;\n/*!40000 ALTER TABLE `login_bkrole` DISABLE KEYS */;\nINSERT INTO `login_bkrole` VALUES (1,0),(2,1),(3,2),(4,3),(5,4);\n/*!40000 ALTER TABLE `login_bkrole` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `login_bktoken`\n--\n\nDROP TABLE IF EXISTS `login_bktoken`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `login_bktoken` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `token` varchar(255) NOT NULL,\n  `is_logout` tinyint(1) NOT NULL,\n  `inactive_expire_time` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `token` (`token`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `login_bktoken`\n--\n\nLOCK TABLES `login_bktoken` WRITE;\n/*!40000 ALTER TABLE `login_bktoken` DISABLE KEYS */;\n/*!40000 ALTER TABLE `login_bktoken` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `login_bkuser_role`\n--\n\nDROP TABLE IF EXISTS `login_bkuser_role`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `login_bkuser_role` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `create_time` datetime NOT NULL,\n  `role_id` int(11) NOT NULL,\n  `user_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `login_bkuser_role_role_id_2eae0138cf6cada6_fk_login_bkrole_id` (`role_id`),\n  KEY `login_bkuser_rol_user_id_3649ad63d3112049_fk_bkaccount_bkuser_id` (`user_id`),\n  CONSTRAINT `login_bkuser_rol_user_id_3649ad63d3112049_fk_bkaccount_bkuser_id` FOREIGN KEY (`user_id`) REFERENCES `bkaccount_bkuser` (`id`),\n  CONSTRAINT `login_bkuser_role_role_id_2eae0138cf6cada6_fk_login_bkrole_id` FOREIGN KEY (`role_id`) REFERENCES `login_bkrole` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `login_bkuser_role`\n--\n\nLOCK TABLES `login_bkuser_role` WRITE;\n/*!40000 ALTER TABLE `login_bkuser_role` DISABLE KEYS */;\nINSERT INTO `login_bkuser_role` VALUES (1,'2020-11-06 00:43:11',2,1);\n/*!40000 ALTER TABLE `login_bkuser_role` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `login_userinfo`\n--\n\nDROP TABLE IF EXISTS `login_userinfo`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `login_userinfo` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `wx_userid` varchar(64) DEFAULT NULL,\n  `bind_time` datetime,\n  `user_id` int(11) NOT NULL,\n  `language` varchar(32),\n  `time_zone` varchar(32),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `user_id` (`user_id`),\n  CONSTRAINT `login_userinfo_user_id_329ab874917cec22_fk_bkaccount_bkuser_id` FOREIGN KEY (`user_id`) REFERENCES `bkaccount_bkuser` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `login_userinfo`\n--\n\nLOCK TABLES `login_userinfo` WRITE;\n/*!40000 ALTER TABLE `login_userinfo` DISABLE KEYS */;\n/*!40000 ALTER TABLE `login_userinfo` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_app`\n--\n\nDROP TABLE IF EXISTS `paas_app`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_app` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(20) NOT NULL,\n  `code` varchar(30) NOT NULL,\n  `introduction` longtext NOT NULL,\n  `creater` varchar(20) NOT NULL,\n  `created_date` datetime DEFAULT NULL,\n  `state` smallint(6) NOT NULL,\n  `is_already_test` tinyint(1) NOT NULL,\n  `is_already_online` tinyint(1) NOT NULL,\n  `first_test_time` datetime DEFAULT NULL,\n  `first_online_time` datetime DEFAULT NULL,\n  `language` varchar(50) DEFAULT NULL,\n  `auth_token` varchar(36) DEFAULT NULL,\n  `tags_id` int(11),\n  `deploy_token` longtext,\n  `is_use_celery` tinyint(1) NOT NULL,\n  `is_use_celery_beat` tinyint(1) NOT NULL,\n  `is_saas` tinyint(1) NOT NULL,\n  `logo` varchar(100),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `name` (`name`),\n  UNIQUE KEY `code` (`code`),\n  KEY `paas_app_d5240003` (`created_date`),\n  KEY `paas_app_3b388eec` (`first_test_time`),\n  KEY `paas_app_8d005fb8` (`first_online_time`),\n  KEY `paas_app_8f9ab750` (`tags_id`),\n  CONSTRAINT `paas_app_tags_id_7b8a224dc349ebd0_fk_paas_apptags_id` FOREIGN KEY (`tags_id`) REFERENCES `paas_apptags` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_app`\n--\n\nLOCK TABLES `paas_app` WRITE;\n/*!40000 ALTER TABLE `paas_app` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_app` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_app_desktop_settings`\n--\n\nDROP TABLE IF EXISTS `paas_app_desktop_settings`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_app_desktop_settings` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(30) NOT NULL,\n  `is_display` tinyint(1) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `app_code` (`app_code`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_app_desktop_settings`\n--\n\nLOCK TABLES `paas_app_desktop_settings` WRITE;\n/*!40000 ALTER TABLE `paas_app_desktop_settings` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_app_desktop_settings` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_app_developer`\n--\n\nDROP TABLE IF EXISTS `paas_app_developer`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_app_developer` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_id` int(11) NOT NULL,\n  `bkuser_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `app_id` (`app_id`,`bkuser_id`),\n  KEY `paas_app_develop_bkuser_id_7e5f21499b3adc5c_fk_account_bkuser_id` (`bkuser_id`),\n  CONSTRAINT `paas_app_develop_bkuser_id_7e5f21499b3adc5c_fk_account_bkuser_id` FOREIGN KEY (`bkuser_id`) REFERENCES `account_bkuser` (`id`),\n  CONSTRAINT `paas_app_developer_app_id_fa0e25f90793edc_fk_paas_app_id` FOREIGN KEY (`app_id`) REFERENCES `paas_app` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_app_developer`\n--\n\nLOCK TABLES `paas_app_developer` WRITE;\n/*!40000 ALTER TABLE `paas_app_developer` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_app_developer` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_app_envvars`\n--\n\nDROP TABLE IF EXISTS `paas_app_envvars`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_app_envvars` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(30) NOT NULL,\n  `mode` varchar(20) NOT NULL,\n  `name` varchar(50) NOT NULL,\n  `value` varchar(1024) NOT NULL,\n  `intro` longtext,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `paas_app_envvars_app_code_36685348c7256adf_uniq` (`app_code`,`mode`,`name`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_app_envvars`\n--\n\nLOCK TABLES `paas_app_envvars` WRITE;\n/*!40000 ALTER TABLE `paas_app_envvars` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_app_envvars` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_app_secureinfo`\n--\n\nDROP TABLE IF EXISTS `paas_app_secureinfo`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_app_secureinfo` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(30) NOT NULL,\n  `vcs_type` smallint(6) NOT NULL,\n  `vcs_url` varchar(1024) DEFAULT NULL,\n  `vcs_username` varchar(50) DEFAULT NULL,\n  `vcs_password` varchar(50) DEFAULT NULL,\n  `db_type` varchar(20) DEFAULT NULL,\n  `db_host` varchar(1024) DEFAULT NULL,\n  `db_port` int(11) DEFAULT NULL,\n  `db_name` varchar(30) DEFAULT NULL,\n  `db_username` varchar(50) DEFAULT NULL,\n  `db_password` varchar(50) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `app_code` (`app_code`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_app_secureinfo`\n--\n\nLOCK TABLES `paas_app_secureinfo` WRITE;\n/*!40000 ALTER TABLE `paas_app_secureinfo` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_app_secureinfo` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_apptags`\n--\n\nDROP TABLE IF EXISTS `paas_apptags`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_apptags` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(20) NOT NULL,\n  `code` varchar(30) NOT NULL,\n  `index` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `name` (`name`),\n  UNIQUE KEY `code` (`code`)\n) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_apptags`\n--\n\nLOCK TABLES `paas_apptags` WRITE;\n/*!40000 ALTER TABLE `paas_apptags` DISABLE KEYS */;\nINSERT INTO `paas_apptags` VALUES (1,'基础服务','Service',0),(2,'管理类','MGT',0),(3,'数据类','Data',0),(4,'行政和HR','Hr',0),(5,'运维工具','Tools',0),(6,'流程管理','BPM',0),(7,'运营支持','Supports',0),(8,'其它','Other',0);\n/*!40000 ALTER TABLE `paas_apptags` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_release_record`\n--\n\nDROP TABLE IF EXISTS `paas_release_record`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_release_record` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(30) NOT NULL,\n  `operate_id` int(11) NOT NULL,\n  `operate_user` varchar(50) DEFAULT NULL,\n  `app_old_state` smallint(6) NOT NULL,\n  `operate_time` datetime DEFAULT NULL,\n  `is_success` tinyint(1) NOT NULL,\n  `is_tips` tinyint(1) NOT NULL,\n  `is_version` tinyint(1) NOT NULL,\n  `version` varchar(50) DEFAULT NULL,\n  `message` longtext,\n  `event_id` varchar(36) DEFAULT NULL,\n  `extra_data` longtext,\n  PRIMARY KEY (`id`),\n  KEY `paas_release_record_19c21056` (`app_code`),\n  KEY `paas_release_record_8da5b998` (`operate_id`),\n  KEY `paas_release_record_648f8b5f` (`operate_time`),\n  KEY `paas_release_record_1a4bfda4` (`is_success`),\n  KEY `paas_release_record_4437cfac` (`event_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_release_record`\n--\n\nLOCK TABLES `paas_release_record` WRITE;\n/*!40000 ALTER TABLE `paas_release_record` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_release_record` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_release_useroperaterecord`\n--\n\nDROP TABLE IF EXISTS `paas_release_useroperaterecord`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_release_useroperaterecord` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_code` varchar(30) NOT NULL,\n  `username` varchar(50) NOT NULL,\n  `before_data` longtext,\n  `arfter_data` longtext,\n  `operate_time` datetime NOT NULL,\n  `operate_type` int(11) NOT NULL,\n  `extra_data` longtext,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_release_useroperaterecord`\n--\n\nLOCK TABLES `paas_release_useroperaterecord` WRITE;\n/*!40000 ALTER TABLE `paas_release_useroperaterecord` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_release_useroperaterecord` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_release_version`\n--\n\nDROP TABLE IF EXISTS `paas_release_version`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_release_version` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `version` varchar(30) NOT NULL,\n  `code_addr` varchar(200) DEFAULT NULL,\n  `publisher` varchar(30) NOT NULL,\n  `pubdate` datetime DEFAULT NULL,\n  `desc` longtext,\n  `app_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `paas_release_version_app_id_4b30a61b1b14c5fa_fk_paas_app_id` (`app_id`),\n  KEY `paas_release_version_588e069d` (`pubdate`),\n  CONSTRAINT `paas_release_version_app_id_4b30a61b1b14c5fa_fk_paas_app_id` FOREIGN KEY (`app_id`) REFERENCES `paas_app` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_release_version`\n--\n\nLOCK TABLES `paas_release_version` WRITE;\n/*!40000 ALTER TABLE `paas_release_version` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_release_version` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_release_versiondetail`\n--\n\nDROP TABLE IF EXISTS `paas_release_versiondetail`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_release_versiondetail` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `features` longtext,\n  `bug` longtext,\n  `app_version_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `paas__app_version_id_1d8c22ce431e44da_fk_paas_release_version_id` (`app_version_id`),\n  CONSTRAINT `paas__app_version_id_1d8c22ce431e44da_fk_paas_release_version_id` FOREIGN KEY (`app_version_id`) REFERENCES `paas_release_version` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_release_versiondetail`\n--\n\nLOCK TABLES `paas_release_versiondetail` WRITE;\n/*!40000 ALTER TABLE `paas_release_versiondetail` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_release_versiondetail` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_resources`\n--\n\nDROP TABLE IF EXISTS `paas_resources`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_resources` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(128) NOT NULL,\n  `version` varchar(36) DEFAULT NULL,\n  `size` varchar(36) DEFAULT NULL,\n  `display` tinyint(1) NOT NULL,\n  `icon_url` varchar(256) DEFAULT NULL,\n  `doc_url` varchar(256) DEFAULT NULL,\n  `download_url` varchar(256) DEFAULT NULL,\n  `create_time` datetime NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_resources`\n--\n\nLOCK TABLES `paas_resources` WRITE;\n/*!40000 ALTER TABLE `paas_resources` DISABLE KEYS */;\nINSERT INTO `paas_resources` VALUES (1,'开发框架','--','740KB',0,'/static/img/resource/framework.png',NULL,'/media/framework.tar.gz','2020-11-06 08:42:56'),(2,'Python','2.7.11','17.7MB',1,'/static/img/resource/python.png','https://docs.bk.tencent.com/ops/','http://paas-10032816.cos.myqcloud.com/python-2.7.11.msi','2020-11-06 08:42:56'),(3,'Python资源包','1.0','19.8MB',1,'/static/img/resource/python-sdk.png',NULL,'http://paas-10032816.cos.myqcloud.com/python-sdk-1.0.zip','2020-11-06 08:42:56'),(4,'Eclipse（含PyDev）','4.5.2','476MB',1,'/static/img/resource/eclipse-4.5.png',NULL,'http://paas-10032816.cos.myqcloud.com/eclipse-4.5.2.zip','2020-11-06 08:42:56'),(5,'PyCharm','2016.3','170+M',1,'/static/img/resource/pycharm.jpeg',NULL,'https://www.jetbrains.com/pycharm/download/','2020-11-06 08:42:56'),(6,'MySQL','5.6.28.0','263MB',1,'/static/img/resource/mysql.png',NULL,'http://paas-10032816.cos.myqcloud.com/mysql-installer-community-5.6.28.0.msi','2020-11-06 08:42:56'),(7,'Rabbitmq','3.6.2','95.9MB',1,'/static/img/resource/rabbitmq.png',NULL,'http://paas-10032816.cos.myqcloud.com/rabbitmq-server-3.6.2.zip','2020-11-06 08:42:56'),(8,'API网关组件开发模板','--','14KB',1,'/static/img/resource/api_dev_template.png',NULL,'/media/api_dev_template.tar.gz','2020-11-06 08:42:56'),(9,'Python 开发框架','2.1.4.11','1.1M',1,'/static/img/resource/framework_py.png','https://docs.bk.tencent.com/blueapps/','/media/framework_py.tar.gz','2020-11-06 08:42:56');\n/*!40000 ALTER TABLE `paas_resources` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_saas_app`\n--\n\nDROP TABLE IF EXISTS `paas_saas_app`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_saas_app` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `code` varchar(30) NOT NULL,\n  `name` varchar(20) NOT NULL,\n  `app_id` int(11) DEFAULT NULL,\n  `current_version_id` int(11),\n  `created_time` datetime,\n  `online_version_id` int(11),\n  `logo` varchar(100),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `code` (`code`),\n  KEY `paas_saas_app_app_id_2f622d9c81ffee7f_fk_paas_app_id` (`app_id`),\n  KEY `paas_saas_app_42d04c48` (`current_version_id`),\n  KEY `paas_saas_app_53c4ba2c` (`online_version_id`),\n  CONSTRAINT `current_version_id_5aa0bc77e34af762_fk_paas_saas_app_version_id` FOREIGN KEY (`current_version_id`) REFERENCES `paas_saas_app_version` (`id`),\n  CONSTRAINT `paas_saas_app_app_id_2f622d9c81ffee7f_fk_paas_app_id` FOREIGN KEY (`app_id`) REFERENCES `paas_app` (`id`),\n  CONSTRAINT `p_online_version_id_2758312b250dd995_fk_paas_saas_app_version_id` FOREIGN KEY (`online_version_id`) REFERENCES `paas_saas_app_version` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `paas_saas_app_version`\n--\n\nDROP TABLE IF EXISTS `paas_saas_app_version`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_saas_app_version` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `version` varchar(20) NOT NULL,\n  `settings` longtext,\n  `saas_app_id` int(11) NOT NULL,\n  `upload_file_id` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `paas_saas_app_v_saas_app_id_45a46ea9a549dc5a_fk_paas_saas_app_id` (`saas_app_id`),\n  KEY `paas_upload_file_id_323abcfd9578f831_fk_paas_saas_upload_file_id` (`upload_file_id`),\n  CONSTRAINT `paas_upload_file_id_323abcfd9578f831_fk_paas_saas_upload_file_id` FOREIGN KEY (`upload_file_id`) REFERENCES `paas_saas_upload_file` (`id`),\n  CONSTRAINT `paas_saas_app_v_saas_app_id_45a46ea9a549dc5a_fk_paas_saas_app_id` FOREIGN KEY (`saas_app_id`) REFERENCES `paas_saas_app` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n\n--\n-- Table structure for table `paas_saas_upload_file`\n--\n\nDROP TABLE IF EXISTS `paas_saas_upload_file`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_saas_upload_file` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(100) NOT NULL,\n  `size` int(11) DEFAULT NULL,\n  `file` varchar(100) NOT NULL,\n  `uploaded_at` datetime NOT NULL,\n  `md5` varchar(32) NOT NULL,\n  PRIMARY KEY (`id`),\n  KEY `paas_saas_upload_file_49131a57` (`uploaded_at`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n\n--\n-- Table structure for table `paas_usefullinks`\n--\n\nDROP TABLE IF EXISTS `paas_usefullinks`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_usefullinks` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(128) NOT NULL,\n  `link` varchar(128) NOT NULL,\n  `created_time` datetime,\n  `introduction` longtext,\n  `is_active` tinyint(1) NOT NULL,\n  `link_type` smallint(6) NOT NULL,\n  `logo` varchar(100),\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_usefullinks`\n--\n\nLOCK TABLES `paas_usefullinks` WRITE;\n/*!40000 ALTER TABLE `paas_usefullinks` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_usefullinks` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_userapps`\n--\n\nDROP TABLE IF EXISTS `paas_userapps`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_userapps` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(128) NOT NULL,\n  `apps` longtext,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `username` (`username`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_userapps`\n--\n\nLOCK TABLES `paas_userapps` WRITE;\n/*!40000 ALTER TABLE `paas_userapps` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_userapps` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `paas_usersettings`\n--\n\nDROP TABLE IF EXISTS `paas_usersettings`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `paas_usersettings` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(128) NOT NULL,\n  `apps` longtext,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `username` (`username`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `paas_usersettings`\n--\n\nLOCK TABLES `paas_usersettings` WRITE;\n/*!40000 ALTER TABLE `paas_usersettings` DISABLE KEYS */;\n/*!40000 ALTER TABLE `paas_usersettings` ENABLE KEYS */;\nUNLOCK TABLES;\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\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/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2020-11-06  8:46:15\n"
  },
  {
    "path": "install/install-k8s.config.example",
    "content": "# config file for opsany -- https://www.opsany.com/\n# =================================================\n\n###defaults\n# Install Path\nINSTALL_PATH=\"/data/opsany\"\n\n# Network\nDOMAIN_NAME=\"demo.opsany.com\"\nLOCAL_IP=\"opsany-paas-openresty\"\nPROXY_PUBLIC_IP=\"opsany-paas-proxy\"\nPROXY_LOCAL_IP=\"opsany-paas-openresty\"\n\n# For Docker Hub\n#PAAS_DOCKER_REG=\"opsany\"\n\n#For Aliyun\nPAAS_DOCKER_REG=\"registry.cn-beijing.aliyuncs.com/opsany\"\n#PAAS_DOCKER_REG=\"registry-vpc.cn-beijing.aliyuncs.com/opsany\"\n\n###opsany_paas\n# PAAS Config\nPAAS_PAAS_IP=\"opsany-paas-paas\"\nPAAS_LOGIN_IP=\"opsany-paas-login\"\nPAAS_APPENGINE_IP=\"opsany-paas-appengine\"\nPAAS_ESB_IP=\"opsany-paas-esb\"\n\n###opsany_saas\n# Please Do not modify\nUPLOAD_PATH=\"/opt/opsany/\"\nFILE_ROOT=\"/srv/salt/\"\nPILLAR_ROOT=\"/srv/pillar/\"\nROSTER_FILE_URL=\"/etc/salt/roster\"\nSALT_SSH_FILE_URL=\"/etc/salt/pki/master/ssh\"\nANSIBLE_HOST_KEY_CHECKING=\"False\"\n\n###mysql\n# MySQL\nMYSQL_SERVER_IP=\"opsany-base-mysql\"\nMYSQL_ROOT_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_PASSWORD=\"OpsAny@2020\"\nMYSQL_PORT=\"3306\"\nMYSQL_SERVER_PORT=\"3306\"\n# SAAS MySQL Password\nMYSQL_OPSANY_RBAC_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_WORKBENCH_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_CMDB_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_CONTROL_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_JOB_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_MONITOR_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_CMP_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_BASTION_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_DEVOPS_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_CODE_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_PIPELINE_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_REPO_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_DEPLOY_PASSWORD=\"OpsAny@2020\"\nMYSQL_OPSANY_LLMOPS_PASSWORD=\"OpsAny@2020\"\n###mongodb\n# SAAS MongoDB Password\nMONGO_SERVER_IP=\"opsany-base-mongodb\"\nMONGO_PORT=\"27017\"\nMONGO_SERVER_PORT=\"27017\"\nMONGO_INITDB_ROOT_USERNAME=\"root\"\nMONGO_INITDB_ROOT_PASSWORD=\"OpsAny@2020\"\nMONGO_CMDB_PASSWORD=\"OpsAny@2020\"\nMONGO_JOB_PASSWORD=\"OpsAny@2020\"\nMONGO_CMP_PASSWORD=\"OpsAny@2020\"\nMONGO_WORKBENCH_PASSWORD=\"OpsAny@2020\"\nMONGO_MONITOR_PASSWORD=\"OpsAny@2020\"\nMONGO_DEVOPS_PASSWORD=\"OpsAny@2020\"\nMONGO_CONTROL_PASSWORD=\"OpsAny@2020\"\nMONGO_EVENT_PASSWORD=\"OpsAny@2020\"\nMONGO_LLMOPS_PASSWORD=\"OpsAny@2020\"\n\n###redis\n# Redis Password\nREDIS_SERVER_IP=\"opsany-base-redis-master\"\n# redis username can be empty\nREDIS_SERVER_USERNAME=\"\"\nREDIS_SERVER_PASSWORD=\"OpsAny2020\"\nREDIS_PORT=\"6379\"\nREDIS_SERVER_PORT=\"6379\"\nTERMINAL_TIMEOUT=\"1800\"\n\n\n###websocket\n# Websocket\nWEBSOCKET_GUACD_HOST=\"opsany-base-guacd\"\n\n###zabbix\n# Zabbix\nZABBIX_DB_NAME=\"zabbix\"\nZABBIX_DB_USER=\"opsany\"\nZABBIX_DB_PASSWORD=\"OpsAny@2020\"\nZABBIX_API_PASSWORD=\"OpsAny@2020\"\nZABBIX_ADMIN_PASSWORD=\"OpsAny@2020\"\nZABBIX_SERVER_HOST=\"opsany-zabbix-server\"\nGRAFANA_ADMIN_PASSWORD=\"OpsAny@2020\"\n\n###prometheus\n# Prometheus\nPROM_SERVER_PASSWD=\"OpsAny@2020\"\nCONSUL_SERVER_IP=\"opsany-consul\"\n\n###elasticsearch\n# ElasticSearch\nES_SERVER_IP=\"opsany-base-elasticsearch\"\nES_PASSWORD=\"OpsAny@2020\"\nELASTIC_PORT=\"9200\"\nELASTIC_SEARCH_INDEX=\"heartbeat-7.13.*\"\nELASTIC_SEARCH_USERNAME=\"elastic\"\n\n###enterprise\n# pipeline\nMYSQL_OPSANY_PIPELINE_PASSWORD=\"OpsAny@2020\"\n\n# deploy\nMYSQL_OPSANY_DEPLOY_PASSWORD=\"OpsAny@2020\"\n\n#event\nMYSQL_OPSANY_EVENT_PASSWORD=\"OpsAny@2020\"\nMONGO_EVENT_PASSWORD=\"OpsAny@2020\"\n\n#auto\nMYSQL_OPSANY_AUTO_PASSWORD=\"OpsAny@2020\"\nMONGO_AUTO_PASSWORD=\"OpsAny@2020\"\n\n# prom\nMYSQL_OPSANY_PROM_PASSWORD=\"OpsAny@2020\"\nMONGO_PROM_PASSWORD=\"OpsAny@2020\"\n\n# kbase\nMYSQL_OPSANY_KBASE_PASSWORD=\"OpsAny@2020\"\nMONGO_KBASE_PASSWORD=\"OpsAny@2020\"\n\n# k8s\nMYSQL_OPSANY_K8S_PASSWORD=\"OpsAny@2020\"\n\n# log\nMYSQL_OPSANY_LOG_PASSWORD=\"OpsAny@2020\"\n"
  },
  {
    "path": "install/install.config.example",
    "content": "# config file for opsany -- https://www.opsany.com/\n# =================================================\n\n## Install Path\nINSTALL_PATH=\"/data/opsany\"\n\n## Access Settings\nDOMAIN_NAME=\"192.168.56.11\"\nLOCAL_IP=\"192.168.56.11\"\nPROXY_PUBLIC_IP=\"${DOMAIN_NAME}\"\nPROXY_LOCAL_IP=\"${LOCAL_IP}\"\n\n## Docker Registry Settings\n# For Docker Hub\n#PAAS_DOCKER_REG=\"opsany\"\n# For Aliyun\nPAAS_DOCKER_REG=\"registry.cn-beijing.aliyuncs.com/opsany\"\n#PAAS_DOCKER_REG=\"registry-vpc.cn-beijing.aliyuncs.com/opsany\"\n\n## PAAS Service Settings\nPAAS_PAAS_IP=\"${LOCAL_IP}\"\nPAAS_LOGIN_IP=\"${LOCAL_IP}\"\nPAAS_APPENGINE_IP=\"${LOCAL_IP}\"\nPAAS_ESB_IP=\"${LOCAL_IP}\"\n# Please Do not modify\nUPLOAD_PATH=\"/opt/opsany/\"\nFILE_ROOT=\"/srv/salt/\"\nPILLAR_ROOT=\"/srv/pillar/\"\nROSTER_FILE_URL=\"/etc/salt/roster\"\nSALT_SSH_FILE_URL=\"/etc/salt/pki/master/ssh\"\nANSIBLE_HOST_KEY_CHECKING=\"False\"\n\n## RabbitMQ Settings\nRABBIT_SERVER_IP=\"${LOCAL_IP}\"\nRABBITMQ_DEFAULT_USER=\"opsany\"\nRABBITMQ_DEFAULT_PASS=\"INIT_PASSWORD\"\n\n## MySQL Settings\nMYSQL_SERVER_IP=\"${LOCAL_IP}\"\nMYSQL_ROOT_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_PORT=\"3306\"\nMYSQL_SERVER_PORT=\"3306\"\n\n## SAAS MySQL Password Settings\nMYSQL_OPSANY_RBAC_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_WORKBENCH_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_CMDB_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_CONTROL_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_JOB_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_MONITOR_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_CMP_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_DEVOPS_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_BASTION_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_DASHBOARD_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_PIPELINE_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_DEPLOY_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_REPO_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_CODE_PASSWORD=\"INIT_PASSWORD\"\nMYSQL_OPSANY_LLMOPS_PASSWORD=\"INIT_PASSWORD\"\n\n## SAAS MongoDB Password Settings\nMONGO_SERVER_IP=\"${LOCAL_IP}\"\nMONGO_PORT=\"27017\"\nMONGO_SERVER_PORT=\"27017\"\nMONGO_INITDB_ROOT_USERNAME=\"root\"\nMONGO_INITDB_ROOT_PASSWORD=\"INIT_PASSWORD\"\nMONGO_CMDB_PASSWORD=\"INIT_PASSWORD\"\nMONGO_JOB_PASSWORD=\"INIT_PASSWORD\"\nMONGO_CMP_PASSWORD=\"INIT_PASSWORD\"\nMONGO_WORKBENCH_PASSWORD=\"INIT_PASSWORD\"\nMONGO_MONITOR_PASSWORD=\"INIT_PASSWORD\"\nMONGO_DEVOPS_PASSWORD=\"INIT_PASSWORD\"\nMONGO_CONTROL_PASSWORD=\"INIT_PASSWORD\"\nMONGO_EVENT_PASSWORD=\"INIT_PASSWORD\"\nMONGO_LLMOPS_PASSWORD=\"INIT_PASSWORD\"\n\n## Redis Settings\nREDIS_SERVER_IP=\"${LOCAL_IP}\"\nREDIS_SERVER_USERNAME=\"\"\nREDIS_SERVER_PASSWORD=\"INIT_PASSWORD\"\nREDIS_PORT=\"6379\"\nREDIS_SERVER_PORT=\"6379\"\nTERMINAL_TIMEOUT=\"1800\"\n\n\n## Websocket Settings\nWEBSOCKET_GUACD_HOST=\"${LOCAL_IP}\"\n\n## Zabbix Settings\nZABBIX_DB_NAME=\"zabbix\"\nZABBIX_DB_USER=\"opsany\"\nZABBIX_DB_PASSWORD=\"INIT_PASSWORD\"\nZABBIX_API_PASSWORD=\"INIT_PASSWORD\"\nZABBIX_ADMIN_PASSWORD=\"INIT_PASSWORD\"\nGRAFANA_ADMIN_PASSWORD=\"INIT_PASSWORD\"\n\n## Prometheus Settings\nPROM_SERVER_PASSWD=\"INIT_PASSWORD\"\n"
  },
  {
    "path": "install/llmops-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAI Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"llmops-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Check Install requirement\ninstall_init(){\n    shell_log \"=====Begin: Init======\"\n    mkdir -p ${INSTALL_PATH}/{ollama-volume}\n}\n\nollama_install(){\n    shell_log \"=====Ollama: Start Ollama======\"\n    docker run -d --restart=always --name opsany-base-ollama \\\n    -p 8020:11434 -v ${INSTALL_PATH}/ollama-volume:/root/.ollama \\\n    docker.m.daocloud.io/ollama/ollama:0.9.3\n}\n\nopsai_uninstall(){\n    shell_log \"=====Uninstall======\"\n    docker stop opsany-ollama\n    docker rm opsany-ollama\n    rm -rf ${INSTALL_PATH}/{ollama-volume}\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    install)\n        install_init\n        ollama_install\n        ;;\n    uninstall)\n        zabbix_uninstall\n        ;;\n        help|*)\n                echo $\"Usage: $0 {install|uninstall|help}\"\n                ;;\nesac\n}\n\nmain $1\n"
  },
  {
    "path": "install/opsai-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAI Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"opsai-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Check Install requirement\ninstall_init(){\n    shell_log \"=====Begin: Init======\"\n    mkdir -p ${INSTALL_PATH}/{ollama-volume}\n}\n\nollama_install(){\n    shell_log \"=====Ollama: Start Ollama======\"\n    docker run -d --restart=always --name opsany-ollama \\\n    -p 11434:11434 -v ${INSTALL_PATH}/ollama-volume:/root/.ollama \\\n    ollama/ollama\n}\n\nopsai_uninstall(){\n    shell_log \"=====Uninstall======\"\n    docker stop opsany-ollama\n    docker rm opsany-ollama\n    rm -rf ${INSTALL_PATH}/{ollama-volume}\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    install)\n        install_init\n        ollama_install\n        ;;\n    uninstall)\n        zabbix_uninstall\n        ;;\n        help|*)\n                echo $\"Usage: $0 {install|uninstall|help}\"\n                ;;\nesac\n}\n\nmain $1\n"
  },
  {
    "path": "install/opsany-ce/README.md",
    "content": "# OpsAny社区版部署\n\n此目录存放OpsAny社区版服务的Dockerfile\n"
  },
  {
    "path": "install/opsany-ce/opsany-appengine/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:2.7.18-alpine3.11\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# Add paas\nADD ./paas /opt/opsany/paas\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas/appengine/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD appengine.ini /etc/supervisord.d/appengine.ini\n\n# Outside Port\nEXPOSE 8000\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-appengine/Dockerfile-PY3",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.4-alpine3.20\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# Add paas\nADD ./paas /opt/opsany/paas\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas/appengine/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD appengine.ini /etc/supervisord.d/appengine.ini\n\n# Outside Port\nEXPOSE 8000\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-appengine/README.md",
    "content": "# 使用说明\n\n## 构建镜像\n\ndocker build -t opsany/paas-paas:v5.1.5 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-appengine/appengine.ini",
    "content": "[program:opsany-appengine]\ncommand=gunicorn wsgi --bind 0.0.0.0:8000 -k gevent -w 4 -n appengine --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/appengine\nenvironment=BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_appengine.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-appengine/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-bk-websocket/Dockerfile",
    "content": "# Base Image\nFROM python:3.7.12-alpine3.15\n\n# Install PATH\nRUN mkdir /opt/opsany && mkdir /etc/supervisord.d\n\n# Add File\nADD ./websocket /opt/opsany/websocket\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev mariadb-dev openssh-client\\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && pip --no-cache-dir install -r /opt/opsany/websocket/websocket-requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD websocket.ini /etc/supervisord.d/websocket.ini\n\n# Outside Port\nEXPOSE 8004\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-bk-websocket/README.md",
    "content": "# 使用说明\n\nWebsocket镜像和Bastion堡垒机的代码是一致的，只需要删除掉无用的静态文件即可。\n\n## 构建镜像\n\ndocker build -t opsany/opsany-paas-websocket:v3.2.8 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-bk-websocket/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-bk-websocket/websocket.ini",
    "content": "[program:websocket]\ncommand=uvicorn --proxy-headers --host 0.0.0.0 --port 8004 asgi:application --workers 4\ndirectory=/opt/opsany/websocket\nenvironment=BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs\",APP_ID=\"opsany-bastion\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_websocket.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-esb/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:2.7.18-alpine3.11\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# Add paas\nADD ./paas /opt/opsany/paas\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas/esb/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD esb.ini /etc/supervisord.d/esb.ini\n\n# Outside Port\nEXPOSE 8002\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-esb/Dockerfile-PY3",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.4-alpine3.20\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# Add paas\nADD ./paas /opt/opsany/paas\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas/esb/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD esb.ini /etc/supervisord.d/esb.ini\n\n# Outside Port\nEXPOSE 8002\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-esb/README.md",
    "content": "# 使用说明\n\n## 构建镜像\n\ndocker build -t opsany/paas-paas:v5.1.5 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-esb/esb.ini",
    "content": "[program:opsany-esb]\ncommand=gunicorn wsgi --bind 0.0.0.0:8002 -k gevent -w 4 -n esb --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/esb\nenvironment=BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_esb.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-esb/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-heartbeat/Dockerfile",
    "content": "# Base Image\nFROM centos:7.8.2003\n\n# Install Pkg\nADD heartbeat-7.13.2-x86_64.rpm /tmp/heartbeat-7.13.2-x86_64.rpm\nRUN rpm -ivh /tmp/heartbeat-7.13.2-x86_64.rpm && rm -f /tmp/heartbeat-7.13.2-x86_64.rpm\n\n#supervisord start\nCMD [\"/usr/bin/heartbeat\", \"-c\", \"/etc/heartbeat/heartbeat.yml\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-init/.gitkeep",
    "content": ""
  },
  {
    "path": "install/opsany-ce/opsany-init/Dockerfile",
    "content": "# Base Image\nFROM centos:7.9.2009\n\n# Install Pkg\nRUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \\\n    yum install -y mariadb jq python3 python3-pip python3-devel && yum clean all\n \n# Pip Install\nRUN pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && \\\n    pip3 --no-cache-dir install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\nENV LANG \"zh_CN.UTF-8\"\n"
  },
  {
    "path": "install/opsany-ce/opsany-login/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:2.7.18-alpine3.11\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# Add paas\nADD ./paas /opt/opsany/paas\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas/login/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD login.ini /etc/supervisord.d/login.ini\n\n# Outside Port\nEXPOSE 8003\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-login/Dockerfile-PY3",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.4-alpine3.20\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n# Add paas\nADD ./paas /opt/opsany/paas\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas/login/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD login.ini /etc/supervisord.d/login.ini\n\n# Outside Port\nEXPOSE 8003\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-login/README.md",
    "content": "# 使用说明\n\n## 构建镜像\n\ndocker build -t opsany/paas-paas:v5.1.5 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-login/login.ini",
    "content": "[program:opsany-login]\ncommand=gunicorn wsgi --bind 0.0.0.0:8003 -k gevent -w 4 -n login --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/login\nenvironment=DJANGO_SETTINGS_MODULE=settings,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_login.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-login/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-mcp-server/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.5-slim-bullseye\n\n# Crate Install PATH\nRUN mkdir -p /opt/opsany/logs/opsany-mcp-server && mkdir /etc/supervisord.d\n\n# Add Code File\nADD ./opsany-mcp-server /opt/opsany/opsany-mcp-server\n\n# Install Python Env\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \\\n    && sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list \\\n    && echo \"deb http://mirrors.aliyun.com/debian-security bullseye-security main contrib non-free\" >> /etc/apt/sources.list \\\n    && apt-get update && apt-get -y install build-essential net-tools vim supervisor openssh-client \\\n    && apt-get clean \\\n    && pip --no-cache-dir install -r /opt/opsany/opsany-mcp-server/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord Config\nADD supervisord.conf /etc/supervisord.conf\nADD mcp-supervisor.ini /etc/supervisord.d/mcp.ini\n\n# Outside Port\nEXPOSE 8020\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-mcp-server/mcp-supervisor.ini",
    "content": "[program: mcp-server]\ncommand = python3 /opt/opsany/opsany-mcp-server/server.py --config config/config.yaml\nstdout_logfile = /opt/opsany/logs/opsany-mcp-server/server.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\n"
  },
  {
    "path": "install/opsany-ce/opsany-mcp-server/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-paas/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:2.7.18-alpine3.11\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Add File\nADD ./paas /opt/opsany/paas\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && pip --no-cache-dir install -r /opt/opsany/paas/paas/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD paas.ini /etc/supervisord.d/paas.ini\n\n# Outside Port\nEXPOSE 8001\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-paas/Dockerfile-PY3",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.4-alpine3.20\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Add File\nADD ./paas /opt/opsany/paas\n\n# Install Gcc\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\\n    && apk add --no-cache gcc g++ make libffi-dev openssl-dev zlib-dev jpeg-dev \\\n    && pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && pip --no-cache-dir install -r /opt/opsany/paas/paas/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD paas.ini /etc/supervisord.d/paas.ini\n\n# Outside Port\nEXPOSE 8001\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-paas/README.md",
    "content": "# 使用说明\n\n## 构建镜像\n\ndocker build -t opsany/opsany-paas-paas:3.3.0 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-paas/paas.ini",
    "content": "[program:opsany-paas]\ncommand=gunicorn wsgi --bind 0.0.0.0:8001 -k gevent -w 4 -n paas --access-logfile - --error-logfile -\ndirectory=/opt/opsany/paas/paas\nenvironment=DJANGO_SETTINGS_MODULE=settings,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_paas.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-paas/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-paasagent/Dockerfile",
    "content": "# Base Image\nFROM centos:7.8.2003\n\n# Install Pkg\nRUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && yum install -y libjpeg-turbo-devel openldap-devel kde-l10n-Chinese glibc-common sshpass nginx supervisor python2-pip python2-devel gcc glibc make zlib-devel openssl-devel curl-devel mysql-devel python36 python36-devel openssh-clients openssl-devel && mkdir -p /opt/opsany/logs && yum clean all && echo -e \"LANG=zh_CN.UTF-8\" > /etc/locale.conf && echo -e 'export LANG=\"zh_CN.UTF-8\"' >> /etc/profile && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && source /etc/profile\n\n# Add paas-agent\nADD ./paas-agent /opt/opsany/paas-agent\n\n# Pip Install\nRUN pip --no-cache-dir install -r /opt/opsany/paas-agent/etc/build/packages/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && pip --no-cache-dir install virtualenv virtualenvwrapper supervisor==3.3.3 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && mkdir -p /opt/py36/bin && ln -s /usr/bin/python3.6 /opt/py36/bin/python && ln -s /usr/bin/pyvenv-3.6 /opt/py36/bin/pyvenv && ln -s /usr/bin/pip-3.6 /opt/py36/bin/pip\n\n#Supervisord config\nADD nginx.conf /etc/nginx/nginx.conf\nADD supervisord.conf /etc/supervisord.conf\nADD paasagent.ini /etc/supervisord.d/paasagent.ini\nADD nginx.ini /etc/supervisord.d/nginx.ini\n\nENV LANG \"zh_CN.UTF-8\"\n# Outside Port\nEXPOSE 4245 8085\n\n#supervisord start\nCMD [\"/usr/bin/supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-paasagent/README.md",
    "content": "# 使用说明\n\n## 构建镜像\n\ndocker build -t opsany/paas-paas:v5.1.5 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-paasagent/nginx.conf",
    "content": "# For more information on configuration, see:\n#   * Official English Documentation: http://nginx.org/en/docs/\n#   * Official Russian Documentation: http://nginx.org/ru/docs/\n\nuser root;\nworker_processes auto;\nerror_log /opt/opsany/logs/nginx_paasagent_error.log;\npid /run/nginx.pid;\n\nevents {\n    worker_connections 1024;\n}\n\nhttp {\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  /opt/opsany/logs/nginx_paasagnet_access.log  main;\n\n    sendfile            on;\n    tcp_nopush          on;\n    tcp_nodelay         on;\n    keepalive_timeout   65;\n    types_hash_max_size 2048;\n    client_max_body_size 2G;\n    server_names_hash_bucket_size 256;\n    underscores_in_headers on;\n\n    include             /etc/nginx/mime.types;\n    default_type        application/octet-stream;\n\n    # Load modular configuration files from the /etc/nginx/conf.d directory.\n    # See http://nginx.org/en/docs/ngx_core_module.html#include\n    # for more information.\n    include /etc/nginx/conf.d/*.conf;\n}\n"
  },
  {
    "path": "install/opsany-ce/opsany-paasagent/nginx.ini",
    "content": "[program:paas-agent-nginx]\ncommand=/usr/sbin/nginx -g 'daemon off;'\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_agent-nginx.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-paasagent/paasagent.ini",
    "content": "[program:paas-agent]\ndirectory=/opt/opsany/paas-agent/\nenvironment=PATH=\"/opt/opsany/paas-agent/bin\"\ncommand=/opt/opsany/paas-agent/bin/paas_agent\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_agent-supervisord.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-paasagent/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.11-slim-bullseye\n\n# Add Proxy\nADD opsany-proxy /opt/opsany-proxy\n\n# Update System\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \\\n    && sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list \\\n    && echo \"deb http://mirrors.aliyun.com/debian-security bullseye-security main contrib non-free\" >> /etc/apt/sources.list \\\n    && apt-get update && apt-get -y install build-essential net-tools telnet vim iputils-ping libmariadb-dev supervisor snmp openssh-client openssl sshpass nmap \\\n    && apt-get clean && sed -i 's/mibs/#mibs/g' /etc/snmp/snmp.conf \\ \n    && pip --no-cache-dir install CherryPy==18.10.0 jinja2==3.0.0 salt==3007.6 zmq==0.0.0 pyzmq==27.0.0 tornado==6.5.1 distro==1.9.0 backports.ssl_match_hostname==3.7.0.1 msgpack==1.1.1 looseversion==1.3.0 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && pip --no-cache-dir install -r /opt/opsany-proxy/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && mkdir -p /opt/opsany/logs/proxy \\\n    && useradd saltapi \\\n    && echo \"saltapi:OpsAny@2020\" | chpasswd\n\n# Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD saltmaster.ini /etc/supervisord.d/saltmaster.ini\nADD saltapi.ini /etc/supervisord.d/saltapi.ini\nADD proxy.ini /etc/supervisord.d/proxy.ini\n\nENV ANSIBLE_HOST_KEY_CHECKING=False\nENV OPS_ANY_ENV=production\n\n# Outside Port\nEXPOSE 4505 4506 8010\n\n# Supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/Dockerfile-PY3",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.11-slim-bullseye\n\n# Add Proxy\nADD opsany-proxy /opt/opsany-proxy\n\n# Update System\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \\\n    && sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list \\\n    && echo \"deb http://ftp.de.debian.org/debian buster main non-free\" >> /etc/apt/sources.list \\\n    && apt-get update && apt-get -y install build-essential net-tools telnet vim iputils-ping libmariadb-dev supervisor snmp openssh-client openssl sshpass snmp-mibs-downloader nmap \\\n    && /usr/bin/download-mibs && apt-get clean && sed -i 's/mibs/#mibs/g' /etc/snmp/snmp.conf \\ \n    && pip --no-cache-dir install CherryPy==18.6.1 jinja2==3.0.0 salt==3004.1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && pip --no-cache-dir install -r /opt/opsany-proxy/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && mkdir -p /opt/opsany/logs/proxy \\\n    && useradd saltapi \\\n    && echo \"saltapi:OpsAny@2020\" | chpasswd\n\n# Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD saltmaster.ini /etc/supervisord.d/saltmaster.ini\nADD saltapi.ini /etc/supervisord.d/saltapi.ini\nADD proxy.ini /etc/supervisord.d/proxy.ini\n\nENV ANSIBLE_HOST_KEY_CHECKING=False\nENV OPS_ANY_ENV=production\n\n# Outside Port\nEXPOSE 4505 4506 8010\n\n# Supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/Dockerfile-centos",
    "content": "# Base Image\nFROM centos:7.9.2009\n\n# Install Pkg\n\nRUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \\ \n    yum install -y kde-l10n-Chinese glibc-common sshpass nginx supervisor gcc glibc make zlib-devel openssl-devel curl-devel mysql-devel python36 python36-devel openssh-clients openssl-devel && \\\n    mkdir -p /opt/opsany/logs && \\ \n    yum clean all && \\\n    useradd -M saltapi && \\\n    echo \"saltapi:OpsAny@2020\" | chpasswd && \\\n    echo -e \"LANG=zh_CN.UTF-8\" > /etc/locale.conf && \\\n    echo -e 'export LANG=\"zh_CN.UTF-8\"' >> /etc/profile && \\\n    localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && source /etc/profile\n\n\n\n# Add Proxy\nADD opsany-proxy /opt/opsany-proxy\n\n# Pip Install\n\nRUN pip3 --no-cache-dir install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && \\\n    pip3 --no-cache-dir install CherryPy==18.6.1 jinja2==3.0.0 salt==3004.1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com  && \\\n    pip3 --no-cache-dir install -r /opt/opsany-proxy/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \n\n# Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD saltmaster.ini /etc/supervisord.d/saltmaster.ini\nADD saltapi.ini /etc/supervisord.d/saltapi.ini\nADD proxy.ini /etc/supervisord.d/proxy.ini\n\nENV ANSIBLE_HOST_KEY_CHECKING=False\nENV OPS_ANY_ENV=production\nENV LC_ALL zh_CN.UTF-8\n\n# Outside Port\nEXPOSE 4505 4506 8010\n\n# Supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/Dockerfile-deabian",
    "content": "# Base Image\nFROM python:3.6.15-slim-bullseye\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Add Proxy\nADD opsany-proxy /opt/opsany-proxy\n\n# Update System\nRUN apt update -y && apt install -y build-essential libmariadb-dev && apt clean\n\nRUN apt install -y sshpass supervisor nginx && apt clean\n\nRUN pip --no-cache-dir install CherryPy==18.6.1 jinja2==3.0.0 salt==3004.1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && pip --no-cache-dir install -r /opt/opsany-proxy/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \\\n    && adduser saltapi \\\n    && echo \"saltapi:OpsAny@2020\" | chpasswd\n\n# Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD saltmaster.ini /etc/supervisord.d/saltmaster.ini\nADD saltapi.ini /etc/supervisord.d/saltapi.ini\nADD proxy.ini /etc/supervisord.d/proxy.ini\nADD ssh_config /etc/ssh/ssh_config\n\nENV ANSIBLE_HOST_KEY_CHECKING=False\nENV OPS_ANY_ENV=production\n\n# Outside Port\nEXPOSE 4505 4506 8010\n\n# Supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/README.md",
    "content": "# 使用说明\n\nProxy中包含Salt、Ansible、Proxy\n\n## 构建镜像\n\ndocker build -t opsany/opsany-proxy:v1.0.0 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/nginx.ini",
    "content": "[program:salt-api]\ncommand=/usr/local/bin/salt-api \nautostart=true\npriority=20\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/opsany-salt-api.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/nginx_proxy.conf",
    "content": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server 127.0.0.1:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTP\nserver {\n    listen 80;\n    server_name DOMAIN_NAME;\n    access_log /opt/opsany/logs/paas_nginx_access.log;\n    error_log /opt/opsany/logs/paas_nginx_error.log;\n   # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    512m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n\n# HTTPS\nserver {\n     listen       443 ssl;\n     server_name  DOMAIN_NAME;\n     access_log /opt/opsany/logs/paas_nginx_access.log;\n     error_log /opt/opsany/logs/paas_nginx_error.log;\n     ssl_certificate /etc/nginx/conf.d/ssl/opsany-proxy.pem;\n     ssl_certificate_key /etc/nginx/conf.d/ssl/opsany-proxy.key;\n     ssl_session_timeout 5m;\n     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n     ssl_prefer_server_ciphers on;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n    gzip_comp_level 9;\n    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;\n    gzip_vary on;\n    gzip_disable \"MSIE [1-6]\\.\";\n    client_max_body_size    512m;\n\n    # PROXY_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPSANY_PROXY;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # uploads    \n    location ~ ^/uploads/(.*) {\n        autoindex off;\n        root /opt/opsany/;\n    }\n}\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/proxy.ini",
    "content": "[program:opsany-proxy]\ncommand=gunicorn wsgi --bind 0.0.0.0:8010 -k gevent -w 4 -n proxy --access-logfile - --error-logfile -\ndirectory=/opt/opsany-proxy\nenvironment=DJANGO_SETTINGS_MODULE=settings,OPS_ANY_ENV=\"production\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/proxy/proxy.log\n\n[program: opsany-proxy-celery]\ncommand = /usr/local/bin/python3 celery --app proxy worker -l INFO -n proxy\ndirectory = /opt/opsany-proxy\nenvironment=DJANGO_SETTINGS_MODULE=settings,OPS_ANY_ENV=\"production\"\nstdout_logfile = /opt/opsany/logs/proxy/proxy_celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = OPS_ANY_ENV=\"production\"\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/saltapi.ini",
    "content": "[program:salt-api]\ncommand=/usr/local/bin/salt-api \nautostart=true\npriority=20\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/proxy/salt-api.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/saltmaster.ini",
    "content": "[program:salt-master]\ncommand=/usr/local/bin/salt-master\nautostart=true\npriority=10\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/proxy/salt-master.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/ssh_config",
    "content": "#\t$OpenBSD: ssh_config,v 1.35 2020/07/17 03:43:42 dtucker Exp $\n\n# This is the ssh client system-wide configuration file.  See\n# ssh_config(5) for more information.  This file provides defaults for\n# users, and the values can be changed in per-user configuration files\n# or on the command line.\n\n# Configuration data is parsed as follows:\n#  1. command line options\n#  2. user-specific file\n#  3. system-wide file\n# Any configuration value is only changed the first time it is set.\n# Thus, host-specific definitions should be at the beginning of the\n# configuration file, and defaults at the end.\n\n# Site-wide defaults for some commonly used options.  For a comprehensive\n# list of available options, their meanings and defaults, please see the\n# ssh_config(5) man page.\n\nHost *\n  HostKeyAlgorithms ssh-rsa,ssh-dss\n  PubkeyAcceptedKeyTypes +ssh-rsa,ssh-dss\n# KexAlgorithms diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1\n# Ciphers +aes128-cbc\n#   ForwardAgent no\n#   ForwardX11 no\n#   PasswordAuthentication yes\n#   HostbasedAuthentication no\n#   GSSAPIAuthentication no\n#   GSSAPIDelegateCredentials no\n#   BatchMode no\n#   CheckHostIP yes\n#   AddressFamily any\n#   ConnectTimeout 0\n#   StrictHostKeyChecking ask\n#   IdentityFile ~/.ssh/id_rsa\n#   IdentityFile ~/.ssh/id_dsa\n#   IdentityFile ~/.ssh/id_ecdsa\n#   IdentityFile ~/.ssh/id_ed25519\n#   Port 22\n#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc\n#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com\n#   EscapeChar ~\n#   Tunnel no\n#   TunnelDevice any:any\n#   PermitLocalCommand no\n#   VisualHostKey no\n#   ProxyCommand ssh -q -W %h:%p gateway.example.com\n#   RekeyLimit 1G 1h\n#   UserKnownHostsFile ~/.ssh/known_hosts.d/%k\n"
  },
  {
    "path": "install/opsany-ce/opsany-proxy/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/CHANGELOG.md",
    "content": "# Changelog\n\n## 2022-05-06\n* Migrate to Ubuntu 20 / Python 3.8 based containers\n\n## 2022-05-04\n* Upgrade MongoDB `v4.0` -> `v4.4` as 4.0 has reached its EOL. (#243)\n* Fix stackstorm-ssh volume mount path in docker-compose.yml st2actionrunner service (#244)\n\n## 2021-12-02\n* Removed `dns_search: .` from all services in `docker-compose.yml` per discussion in #231\n\n## 2021-04-15\n* Add BATS testing\n\n## 2021-04-10\n* Upgrade used Redis Docker image to 6.2.\n\n## 2021-04-07\n* Add rbac sample files and mount to st2api and st2client (#219)\n\n## 2021-04-06\n* Add information on how to utilize a custom config with st2web container. (#225)\n\n## 2021-03-22\n* Create counter for st2client startup script (#220)\n\n## 2021-03-15\n* Added `st2chatops` support and service startup script. (#206)\n\n## 2021-03-13\n* Switch to using `latest` tag for st2 Docker images (#222)\n\n## 2021-02-21\n* Add stackstorm-keys volume to workflowengine (#214)\n\n## 2020-11-05\n* Deprecate st2resultstracker which is obsolete since the Mistral deprecation with st2 `v3.3.0`.\n\n## 2020-11-03\n* Update st2 configuration to use redis as coordination backend. (#195)\n\n## 2020-07-17\n* Replace docker-compose with a new deployment based on [stackstorm/st2-dockerfiles](https://github.com/StackStorm/st2-dockerfiles/) images relying on `Ubuntu Bionic` and `python 3` since st2 `v3.3dev` (#192)\n\n## 2020-05-26\n* Deprecate demo all-in-one docker-compose deployment based on outdated `Ubuntu Trusty` with `python 2`, unsupported since st2 `v3.1.0` (#191)\n\n## 2018-06-28\n* Add `st2workflowengine` to `entrypoint-1ppc.sh` and `compose-1ppc/docker-compose.yml`.\n\n## 2018-06-18\n* The `TAG` environment variable is replaced by `ST2_IMAGE_TAG`.\n\n## 2018-02-27\n* Pin DB's to specific, tested versions.\n\n## 2017-10-23\n* Rename `/entrypoint.d/` to `/st2-docker/entrypoint.d/`.\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/LICENSE",
    "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 2020 The StackStorm Authors.\n   Copyright 2017 StackStorm, Inc.\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": "install/opsany-ce/opsany-st2/README.md",
    "content": "# StackStorm in Docker Compose\n\n1. 准备安装包 \n\n```\ncd /opt/opsany-paas/install/opsany-ce/\ncp -r opsany-st2/ /opt/opsany/\ncd /opt/opsany/opsany-st2/\n```\n\n2. 安装docker-compose\n```\nyum install -y docker-compose\n```\n\n3. 配置st2\n\n可以使用OpsAny已经部署的RabbitMQ、Redis和MongoDB，请修改为正确的地址和用户名与密码。\n\n```\nvim files/st2.docker.conf\n\n# 修改以下配置，可以配置为OpsAny的RabbitMQ\n[messaging]\nurl = amqp://opsany:OpsAny@2020@127.0.0.1:5672/\n\n# 修改以下配置，可以配置为OpsAny的Redis，注意Redis密码不要带@\n[coordination]\nurl = redis://:123456.coM@127.0.0.1:6379\n\n#增加下面配置，默认没有。\n[database]\nhost = 127.0.0.1\nport = 27017\ndb_name = event\nusername = event\npassword = OpsAny@2020\n```\n\n4. 启动ST2\n\n```shell\nexport ST2_VERSION=\"3.8.0\"\nexport ST2_IMAGE_REPO=\"registry.cn-beijing.aliyuncs.com/opsany/\"\nexport ST2_EXPOSE_HTTP=\"0.0.0.0:8005\"\ndocker-compose up -d\n```\n\n5. 测试st2\n\n```shell\ncd /opt/opsany/opsany-st2/\ndocker-compose exec st2client bash  # this gives you access to the st2 command line\n```\n\n6. 访问ST2\nOpen http://localhost:8005\n\n默认帐号： st2admin/OpsAny@2023\n\n\n### 进行初始化\n\n\n1. 下载OpsAny核心st2的Pack。\n\n> 需在安装stackstorm的服务器上面执行以下命令。切记。\n\n```\nmkdir -p /opt/stackstorm-packs && cd /opt/stackstorm-packs\ngit clone https://gitee.com/opsany/opsany_core.git\ngit clone https://gitee.com/opsany/opsany_workflow.git\n```\n\n2. 执行初始化\n   \n> 需在安装OpsAny的服务器上执行以下命令。请修改对应的地址和密码,用户名不要修改。\n\n```\ncd /opt/opsany-paas/saas/\nINSTALL_PATH=/data/opsany/\nDEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\npython3 init-ce-st2.py --domain https://www.opsany.com --username admin  --password PASSWORD --st2_url https://www.opsany.com:8005  --st2_username st2admin --st2_password ST2_PASSWORD --app_code devops --app_secret ${DEVOPS_SECRET_KEY} --st2_core_pack_source gitee\n[SUCCESS] init devops st2 success.\nDownloading the OpsAny core package is expected to take 60 seconds...\n[SUCCESS] init st2 pack success.\n[SUCCESS] config core pack success.\n```\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/docker-compose.yml",
    "content": "version: '3'\n\nservices:\n  st2web:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2web:${ST2_VERSION:-latest}\n    restart: on-failure\n    environment:\n      ST2_AUTH_URL: ${ST2_AUTH_URL:-http://127.0.0.1:9100/}\n      ST2_API_URL: ${ST2_API_URL:-http://127.0.0.1:9101/}\n      ST2_STREAM_URL: ${ST2_STREAM_URL:-http://127.0.0.1:9102/}\n      ST2WEB_HTTPS: ${ST2WEB_HTTPS:-0}\n    depends_on:\n      - st2auth\n      - st2api\n      - st2stream\n    #healthcheck:\n    #  test: [\"CMD\", \"/st2web-healthcheck.sh\"]\n    #  interval: 30s\n    #  timeout: 1s\n    #  retries: 1\n    #volumes:\n    #  - ./scripts/st2web-healthcheck.sh:/st2web-healthcheck.sh\n      # If you want to use a custom st2web config, edit ./files/config.js accordingly and\n      # uncomment the line below\n      #- ./files/config.js:/opt/stackstorm/static/webui/config.js:ro\n    #ports:\n    #  - \"${ST2_EXPOSE_HTTP:-0.0.0.0:8005}:80\"\n      # - \"${ST2_EXPOSE_HTTPS:-127.0.0.1:443}:443\"\n      # more work would be needed with certificate generate to make https work.\n    network_mode: host\n  st2makesecrets:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2actionrunner:${ST2_VERSION:-latest}\n    restart: on-failure\n    network_mode: host\n    volumes:\n      - ./scripts/makesecrets.sh:/makesecrets.sh\n      - stackstorm-keys:/etc/st2/keys:rw\n    command: /makesecrets.sh\n  st2api:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2api:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2makesecrets\n    network_mode: host\n    environment:\n      ST2_AUTH_URL: ${ST2_AUTH_URL:-http://127.0.0.1:9100/}\n      ST2_API_URL: ${ST2_API_URL:-http://127.0.0.1:9101/}\n      ST2_STREAM_URL: ${ST2_STREAM_URL:-http://127.0.0.1:9102/}\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n      - stackstorm-keys:/etc/st2/keys:ro\n      - stackstorm-packs-configs:/opt/stackstorm/configs:rw\n      - stackstorm-packs:/opt/stackstorm/packs:rw\n      - ./files/rbac:/opt/stackstorm/rbac:rw\n      - ${ST2_PACKS_DEV:-./packs.dev}:/opt/stackstorm/packs.dev:rw\n  st2stream:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2stream:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n  st2scheduler:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2scheduler:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n  st2workflowengine:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2workflowengine:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n      - stackstorm-keys:/etc/st2/keys:ro\n  st2auth:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2auth:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n      - ./files/htpasswd:/etc/st2/htpasswd:ro\n  st2actionrunner:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2actionrunner:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n      - stackstorm-packs-configs:/opt/stackstorm/configs:rw\n      - stackstorm-packs:/opt/stackstorm/packs:rw\n      - ${ST2_PACKS_DEV:-./packs.dev}:/opt/stackstorm/packs.dev:rw\n      - stackstorm-virtualenvs:/opt/stackstorm/virtualenvs:rw\n      - stackstorm-ssh:/home/stanley/.ssh\n      # Action runner needs access to keys since action definitions (Jinja\n      # templates) can reference secrets\n      - stackstorm-keys:/etc/st2/keys:ro\n  st2garbagecollector:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2garbagecollector:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n  st2notifier:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2notifier:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n  st2rulesengine:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2rulesengine:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n  st2sensorcontainer:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2sensorcontainer:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n      - stackstorm-virtualenvs:/opt/stackstorm/virtualenvs:ro\n      - stackstorm-packs:/opt/stackstorm/packs:ro\n      - stackstorm-packs-configs:/opt/stackstorm/configs:ro\n      - ${ST2_PACKS_DEV:-./packs.dev}:/opt/stackstorm/packs.dev:ro\n  st2timersengine:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2timersengine:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2api\n    network_mode: host\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n  st2client:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2actionrunner:${ST2_VERSION:-latest}\n    restart: on-failure\n    depends_on:\n      - st2auth\n      - st2api\n      - st2stream\n    command: /st2client-startup.sh\n    network_mode: host\n    environment:\n      ST2CLIENT: 1\n      ST2_AUTH_URL: ${ST2_AUTH_URL:-http://127.0.0.1:9100/}\n      ST2_API_URL: ${ST2_API_URL:-http://127.0.0.1:9101/}\n      ST2_STREAM_URL: ${ST2_STREAM_URL:-http://127.0.0.1:9102/}\n      TZ: ${TZ:-UTC}\n    volumes:\n      - ./files/st2.docker.conf:/etc/st2/st2.docker.conf:ro\n      - ./files/st2.user.conf:/etc/st2/st2.user.conf:ro\n      # Technically, client container doesn't need or should have access to the\n      # keys in prod setup, but here we make it available to end user for\n      # testing and transparency reasons since this setup is primarily mean to\n      # be used for testing and development.\n      - stackstorm-keys:/etc/st2/keys:ro\n      - stackstorm-packs-configs:/opt/stackstorm/configs:rw\n      - stackstorm-packs:/opt/stackstorm/packs:rw\n      - ./files/rbac:/opt/stackstorm/rbac:rw\n      - ${ST2_PACKS_DEV:-./packs.dev}:/opt/stackstorm/packs.dev:rw\n      - ./files/st2-cli.conf:/root/.st2/config\n      - ./scripts/st2client-startup.sh:/st2client-startup.sh\n\nvolumes:\n    stackstorm-packs:\n    stackstorm-packs-configs:\n    stackstorm-keys:\n    stackstorm-virtualenvs:\n    stackstorm-ssh:\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/config.js",
    "content": "// Copyright 2021 The StackStorm Authors.\n// Copyright 2019 Extreme Networks, Inc.\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'use strict';\n\n/* global angular */\nangular.module('main')\n  .constant('st2Config', {\n\n    //show_version_in_header: true,\n\n    // hosts: [\n    //   {\n    //     name: 'Dev Env',\n    //     url: 'https://:443/api',\n    //     auth: 'https://:443/auth',\n    //     stream: 'https://:443/stream',\n    //   },\n    //   {\n    //     name: 'Express',\n    //     url: '//172.168.90.50:9101/api',\n    //     auth: '//172.168.90.50:9101/auth',\n    //   },\n    // ],\n  });\n\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/htpasswd",
    "content": "# /etc/st2/htpasswd\n# st2admin:OpsAny@2023\nst2admin:$apr1$9msyD8bw$qtgB5UyZZHFyz/6CRpD5H1\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/rbac/assignments/st2admin.yaml",
    "content": "# See: https://docs.stackstorm.com/rbac.html#defining-user-role-assignments\n---\nusername: st2admin\nroles:\n  - system_admin\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/rbac/assignments/stanley.yaml",
    "content": "# See: https://docs.stackstorm.com/rbac.html#defining-user-role-assignments\n---\nusername: stanley\nroles:\n  - admin\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/rbac/roles/sample.yaml",
    "content": "# sample RBAC role file, see https://docs.stackstorm.com/rbac.html#defining-roles-and-permission-grants\n---\nname: \"sample\"\ndescription: \"Example Role which contains no permission grants and serves for demonstration purposes\"\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/st2-cli.conf",
    "content": "# /root/.st2/config\n[credentials]\nusername = st2admin\npassword = OpsAny@2023\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/st2.docker.conf",
    "content": "# /etc/st2/st2.docker.conf\n#\n# This st2.docker.conf overrides st2.conf in the base image, and has been written to facilitate operation of\n# docker-compose.yml. It is recommended to not alter this file as an end-user, as this file\n# is updated as necessary by the StackStorm st2-docker maintainers.\n# Instead, make local changes in the file \"st2.user.conf\".\n# The order of merging: st2.conf < st2.docker.conf < st2.user.conf\n[auth]\napi_url = http://127.0.0.1:9101/\n\n[messaging]\nurl = amqp://opsany:OpsAny@2020@192.168.56.11:5672\n\n[keyvalue]\nencryption_key_path = /etc/st2/keys/datastore_key.json\n\n[database]\nhost = 192.168.56.11\nport = 27017\ndb_name = event\nusername = event\npassword = OpsAny@2020\n# st2.conf for kubernetes disables retry (relying on kubernetes), but\n# for straight docker, we want to re-enable these.\n# Connection retry total time (minutes).\nconnection_retry_max_delay_m = 1\n# Backoff multiplier (seconds).\nconnection_retry_backoff_mul = 1\n# Connection and server selection timeout (in ms).\nconnection_timeout = 3000\n\n[content]\npacks_base_paths=/opt/stackstorm/packs.dev\n\n[coordination]\nurl = redis://:OpsAny2020@192.168.56.11:6379\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/files/st2.user.conf",
    "content": "# /etc/st2/st2.user.conf\n#\n# This file is provided with no custom overrides and should be utilized by end-users to make any\n# desired configuration changes. No changes to this file should be checked into the st2-docker repository.\n# The order of merging: st2.conf < st2.docker.conf < st2.user.conf\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/st2-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  ST2 Install Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"st2-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -f /etc/redhat-release ];then\n      setenforce 0\n    fi\nfi\n\n# Check Install requirement\ninstall_check(){\n  DOCKER_PID=$(ps aux | grep '/usr/bin/containerd' | grep -v 'grep' | wc -l)\n  if [ ${DOCKER_PID} -lt 1 ];then\n      shell_error_log \"Please install and start docker first!!!\"\n      exit\n  fi\n}\n\n# Install Initialize\ninstall_init(){\n    shell_log \"Start: Install Init\"\n    mkdir -p ${INSTALL_PATH}/{uploads/guacamole,conf,logs,proxy-volume/certs,proxy-volume/srv/pillar,proxy-volume/srv/salt,proxy-volume/etc,proxy-volume/pki,redis-volume,mysql-volume}\n    cd $CDIR\n    /bin/cp -r ../install/conf ${INSTALL_PATH}/\n    #/bin/cp -r ../install/init ${INSTALL_PATH}/\n\n    ## init for saltstack \n    /bin/cp -a ${CDIR}/../install/conf/salt ${INSTALL_PATH}/proxy-volume/etc/\n    /bin/cp -a ${CDIR}/../install/conf/salt/certs/* ${INSTALL_PATH}/proxy-volume/certs/\n\n    # init for redis\n    /bin/cp ${CDIR}/../install/conf/redis/redis.conf ${INSTALL_PATH}/redis-volume/\n    sed -i \"s/\"REDIS_SERVER_PASSWORD\"/\"${REDIS_SERVER_PASSWORD}\"/g\" ${INSTALL_PATH}/redis-volume/redis.conf\n    shell_log \"End: Install Init\"\n}\n\nst2_config(){\n\n    shell_log \"======Proxy Configure======\"\n    # Proxy\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    \n    # OpenResty\n    sed -i \"s/LOCAL_IP/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf \n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n}\n\nst2_start(){\n    ST2_VERSION=\"3.8.0\"\n    ST2_IMAGE_REPO=\"stackstorm/\"\n    ST2_EXPOSE_HTTP=\"0.0.0.0:8005\"\n    #docker-compose\n    shell_log \"======Start openresty Service======\"\n    cd opsany-st2\n    docker-compose up -d\n}\n\n# Main\nmain(){\n    case \"$1\" in\n\tinstall)\n            install_check\n            install_init\n            st2_config\n            st2_start\n\t\t;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/tests/st2tests-tools.sh",
    "content": "#!/usr/bin/env bash\n\nmkdir -p ${BATS_HELPERS_DIR} ${BATS_DIR}\ncp -R /opt/bats/* ${BATS_DIR}\ncp -R /opt/bats-helpers/* ${BATS_HELPERS_DIR}\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/tests/st2tests.sh",
    "content": "#!/usr/bin/env bats\n\nload \"${BATS_HELPERS_DIR}/bats-support/load.bash\"\nload \"${BATS_HELPERS_DIR}/bats-assert/load.bash\"\nload \"${BATS_HELPERS_DIR}/bats-file/load.bash\"\n\n@test 'st2 version deployed and python env are as expected' {\n  run st2 --version\n  assert_success\n  # st2 3.7.0, on Python 3.8.10\n  assert_line --partial \"st2 ${ST2_VERSION}\"\n  assert_line --partial 'on Python 3.8.10'\n}\n\n@test 'ST2_AUTH_URL service endpoint is accessible and working' {\n  run curl -v ${ST2_API_URL}\n  assert_line --partial 'Content-Type: application/json'\n  assert_line --partial 'St2-Api-Key'\n}\n\n@test 'ST2_API_URL service endpoint is accessible and working' {\n  run curl -v ${ST2_API_URL}\n  assert_line --partial 'Content-Type: application/json'\n  assert_line --partial 'St2-Api-Key'\n}\n\n@test 'ST2_STREAM_URL service endpoint is accessible and working' {\n  run curl -v ${ST2_API_URL}\n  assert_line --partial 'Content-Type: application/json'\n  assert_line --partial 'St2-Api-Key'\n}\n\n@test 'st2 user can log in with auth credentials' {\n  run st2 login ${ST2_AUTH_USERNAME} --password ${ST2_AUTH_PASSWORD} -w\n  assert_success\n  assert_line \"Logged in as ${ST2_AUTH_USERNAME}\"\n  assert_file_exist ~/.st2/config\n}\n\n@test 'st2 core pack is installed and loaded' {\n  run st2 action list --pack=core\n  assert_success\n  assert_line --partial 'core.local'\n}\n\n@test \"can execute simple st2 action 'core.local'\" {\n  run st2 run core.local cmd=id\n  assert_success\n  assert_line --partial 'return_code: 0'\n  assert_line --partial \"stderr: ''\"\n  assert_line --partial 'stdout: uid=1000(stanley) gid=1000(stanley) groups=1000(stanley)'\n  assert_line --partial 'succeeded: true'\n}\n\n@test 'st2 chatops core rule is loaded' {\n  run st2 rule list\n  assert_success\n  assert_line --partial 'chatops.notify'\n}\n\n@test 'st2 key/value operations are functional' {\n  run st2 key set foo bar\n  assert_success\n\n  run st2 key get foo\n  assert_success\n  assert_line --partial 'bar'\n\n  run st2 key delete foo\n  assert_line --partial '\"foo\" has been successfully deleted'\n  assert_success\n\n  run st2 key get foo\n  assert_line --partial '\"foo\" is not found'\n  assert_failure\n}\n\n# TODO: RBAC isn't loaded automatically for st2-docker. Uncomment when/if RBAC is loaded on startup\n#@test 'RBAC is loaded and enabled' {\n#  if [ $ST2_RBAC_ENABLED != \"true\" ]; then\n#    skip \"disabled in Helm values\"\n#  fi\n#\n#  run st2 whoami\n#  assert_success\n#  assert_output --regexp 'RBAC:\\s+ - Enabled: True'\n#  assert_line --partial 'Roles: system_admin'\n#}\n"
  },
  {
    "path": "install/opsany-ce/opsany-st2/tests/st2tests.yaml",
    "content": "version: '3'\n\nservices:\n  st2test:\n    image: ${ST2_IMAGE_REPO:-stackstorm/}st2actionrunner:${ST2_VERSION:-latest}\n    environment:\n      ST2_AUTH_URL: ${ST2_AUTH_URL:-http://st2auth:9100/}\n      ST2_API_URL: ${ST2_API_URL:-http://st2api:9101/}\n      ST2_STREAM_URL: ${ST2_STREAM_URL:-http://st2stream:9102/}\n      ST2WEB_HTTPS: ${ST2WEB_HTTPS:-0}\n      BATS_HELPERS_DIR: /tools/bats-helpers/\n      ST2_AUTH_USERNAME: ${ST2_AUTH_USERNAME:-st2admin}\n      ST2_AUTH_PASSWORD: ${ST2_AUTH_PASSWORD:-Ch@ngeMe}\n    command: bash -c \"ln -s /tools/bats/libexec/bats /sbin/bats && /st2tests.sh\"\n    volumes:\n      - ./st2tests.sh:/st2tests.sh:ro\n      - tools:/tools\n    networks:\n      - st2-docker_private\n    stop_signal: SIGKILL\n    depends_on:\n      - st2test-tools\n  st2test-tools:\n    image: dduportal/bats:latest\n    environment:\n      BATS_HELPERS_DIR: /tools/bats-helpers/\n      BATS_DIR: /tools/bats/\n    command: /st2tests.sh\n    volumes:\n      - tools:/tools\n      - ./st2tests-tools.sh:/st2tests.sh:ro\n\nvolumes:\n    tools:\n\nnetworks:\n  st2-docker_private:\n    external: true\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/Dockerfile",
    "content": "# Base Image\nFROM centos:7.9.2009\n\n# Install Pkg\nRUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \\\n    curl -s https://packagecloud.io/install/repositories/StackStorm/stable/script.rpm.sh | bash && \\\n    yum install -y st2 crudini httpd-tools st2web supervisor nginx && \\\n    yum clean all\n\n# Setup Datastore Encryption\nRUN DATASTORE_ENCRYPTION_KEYS_DIRECTORY=\"/etc/st2/keys\" && \\\n    DATASTORE_ENCRYPTION_KEY_PATH=\"${DATASTORE_ENCRYPTION_KEYS_DIRECTORY}/datastore_key.json\" && \\\n    mkdir -p ${DATASTORE_ENCRYPTION_KEYS_DIRECTORY} && \\\n    st2-generate-symmetric-crypto-key --key-path ${DATASTORE_ENCRYPTION_KEY_PATH} && \\\n    chgrp st2 ${DATASTORE_ENCRYPTION_KEYS_DIRECTORY} && \\\n    chmod o-r ${DATASTORE_ENCRYPTION_KEYS_DIRECTORY} && \\\n    chgrp st2 ${DATASTORE_ENCRYPTION_KEY_PATH} && \\\n    chmod o-r ${DATASTORE_ENCRYPTION_KEY_PATH} && \\\n    crudini --set /etc/st2/st2.conf keyvalue encryption_key_path ${DATASTORE_ENCRYPTION_KEY_PATH} && \\\n\n#Supervisord config\nADD nginx.conf /etc/nginx/nginx.conf\nADD supervisord.conf /etc/supervisord.conf\nADD nginx.ini /etc/supervisord.d/nginx.ini\nADD st2api.ini /etc/supervisord.d/st2api.ini\n\nENV LANG \"zh_CN.UTF-8\"\n# Outside Port\nEXPOSE 8088\n\n#supervisord start\nCMD [\"/usr/bin/supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/README.md",
    "content": "# 使用说明\n\n## 构建镜像\n\ndocker build -t opsany/paas-paas:v5.1.5 .\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/nginx.conf",
    "content": "#\n# nginx configuration to expose st2 webui, redirect HTTP->HTTPS,\n# provide SSL termination, and reverse-proxy st2api and st2auth API endpoint.\n# To enable:\n#    cp ${LOCATION}/st2.conf /etc/nginx/sites-available\n#    ln -l /etc/nginx/sites-available/st2.conf /etc/nginx/sites-enabled/st2.conf\n# see https://docs.stackstorm.com/install.html for details\n\nserver {\n  listen       *:8008 ssl;\n  server_tokens off;\n\n  if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS)$ ) {\n       return 405;\n  }\n\n   ssl_certificate /opt/opsany/conf/nginx-conf.d/ssl/demo.opsany.com.pem;\n   ssl_certificate_key /opt/opsany/conf/nginx-conf.d/ssl/demo.opsany.com.key;\n   ssl_session_timeout 5m;\n   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n   ssl_prefer_server_ciphers on;\n\n  index  index.html;\n\n  access_log            /opt/opsany/logs/ssl-st2webui.access.log combined;\n  error_log             /opt/opsany/logs/ssl-st2webui.error.log;\n\n  add_header              Front-End-Https on;\n  add_header              X-Content-Type-Options nosniff;\n  add_header              X-Frame-Options DENY always;\n  add_header              Strict-Transport-Security \"max-age=3153600;includeSubDomains\";\n  add_header              X-XSS-Protection \"1; mode=block\";\n\n  location @apiError {\n    add_header Content-Type application/json always;\n    return 503 '{ \"faultstring\": \"Nginx is unable to reach st2api. Make sure service is running.\" }';\n  }\n\n  location /api/ {\n    error_page 502 = @apiError;\n\n    rewrite ^/api/(.*)  /$1 break;\n\n    proxy_pass            http://127.0.0.1:9101/;\n    proxy_read_timeout    90;\n    proxy_connect_timeout 90;\n    proxy_redirect        off;\n\n    proxy_set_header      Host $host;\n    proxy_set_header      X-Real-IP $remote_addr;\n    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;\n\n    proxy_set_header Connection '';\n    chunked_transfer_encoding off;\n    proxy_buffering off;\n    proxy_cache off;\n    proxy_set_header Host $host;\n    max_ranges 0;\n\n    # In a lot of scenarios, it may be beneficial to enable response compression (especially when\n    # working with large executions and StackStorm instance is accessed over public internet).\n    # To enable it, uncomment the lines below and adjust according to your needs.\n    # gzip on;\n    # gzip_min_length 1024;\n    # gzip_types text/plain application/json text/event-stream;\n  }\n\n  location @streamError {\n    add_header Content-Type text/event-stream;\n    return 200 \"retry: 1000\\n\\n\";\n  }\n\n  # For backward compatibility reasons, rewrite requests from \"/api/stream\"\n  # to \"/stream/v1/stream\" and \"/api/v1/stream\" to \"/stream/v1/stream\"\n  rewrite ^/api/stream/?$ /stream/v1/stream break;\n  rewrite ^/api/(v\\d)/stream/?$ /stream/$1/stream break;\n  location /stream/ {\n    error_page 502 = @streamError;\n\n    rewrite ^/stream/(.*)  /$1 break;\n\n    proxy_pass  http://127.0.0.1:9102/;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_read_timeout 200;\n    proxy_connect_timeout 200;\n\n    sendfile on;\n    tcp_nopush on;\n    tcp_nodelay on;\n\n    # Disable buffering and chunked encoding.\n    # In the stream case we want to receive the whole payload at once, we don't\n    # want multiple chunks.\n    proxy_set_header Connection '';\n    chunked_transfer_encoding off;\n    proxy_buffering off;\n    proxy_cache off;\n    max_ranges 0;\n\n    # In a lot of scenarios, it may be beneficial to enable response compression (especially when\n    # working with large executions and StackStorm instance is accessed over public internet).\n    # To enable it, uncomment the lines below and adjust according to your needs.\n    # gzip on;\n    # gzip_min_length 1024;\n    # gzip_types text/plain application/json text/event-stream;\n    # gzip_proxied no-cache no-store private expired auth;\n  }\n\n  location @authError {\n    add_header Content-Type application/json always;\n    return 503 '{ \"faultstring\": \"Nginx is unable to reach st2auth. Make sure service is running.\" }';\n  }\n\n  location /auth/ {\n    error_page 502 = @authError;\n\n    rewrite ^/auth/(.*)  /$1 break;\n\n    proxy_pass            http://127.0.0.1:9100/;\n    proxy_read_timeout    90;\n    proxy_connect_timeout 90;\n    proxy_redirect        off;\n\n    proxy_set_header      Host $host;\n    proxy_set_header      X-Real-IP $remote_addr;\n    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_pass_header     Authorization;\n\n    proxy_set_header Connection '';\n    chunked_transfer_encoding off;\n    proxy_buffering off;\n    proxy_cache off;\n    max_ranges 0;\n  }\n\n  location / {\n    max_ranges 0;\n    root      /opt/stackstorm/static/webui/;\n    index     index.html;\n\n    sendfile on;\n    tcp_nopush on;\n    tcp_nodelay on;\n  }\n}\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/nginx.ini",
    "content": "[program:paas-agent-nginx]\ncommand=/usr/sbin/nginx -g 'daemon off;'\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2-nginx.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2actionrunner.ini",
    "content": "[program:st2actionrunner]\ncommand=/opt/stackstorm/st2/bin/st2actionrunner --config-file /etc/st2/st2.conf \nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-actionrunner.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2api.ini",
    "content": "[program:st2api]\ncommand=/opt/stackstorm/st2/bin/gunicorn st2api.wsgi:application -k eventlet -b 127.0.0.1:9101 --workers 1 --threads 1 --graceful-timeout 10 --timeout 30 --log-config /etc/st2/logging.api.gunicorn.conf --error-logfile /opt/opsany/logs/st2/st2api.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-api.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2auth.ini",
    "content": "[program:st2auth]\ncommand=/opt/stackstorm/st2/bin/gunicorn st2auth.wsgi:application -k eventlet -b 127.0.0.1:9100 --workers 1 --threads 1 --graceful-timeout 10 --timeout 30 --log-config /etc/st2/logging.auth.gunicorn.conf --error-logfile /opt/opsany/logs/st2/st2auth.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-auth.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2notifier.ini",
    "content": "[program:st2notifier]\ncommand=/opt/stackstorm/st2/bin/st2notifier --config-file /etc/st2/st2.conf\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-notifier.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2scheduler.ini",
    "content": "[program:st2scheduler]\ncommand=/opt/stackstorm/st2/bin/st2scheduler --config-file /etc/st2/st2.conf\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-scheduler.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2stream.ini",
    "content": "[program:st2stream]\ncommand=/opt/stackstorm/st2/bin/gunicorn st2stream.wsgi:application -k eventlet -b 127.0.0.1:9102 --workers 1 --threads 10 --graceful-timeout 10 --timeout 30 --log-config /etc/st2/logging.stream.gunicorn.conf --error-logfile /var/log/st2/st2stream.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-stream.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2timersengine.ini",
    "content": "[program:st2timersengine]\ncommand=/opt/stackstorm/st2/bin/st2timersengine --config-file /etc/st2/st2.conf\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-timersengine.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/st2workflowengine.ini",
    "content": "[program:st2workflowengine]\ncommand=/opt/stackstorm/st2/bin/st2workflowengine --config-file /etc/st2/st2.conf\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/st2/st2-workflowengine.log\n"
  },
  {
    "path": "install/opsany-ce/opsany-stackstorm/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-websocket/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.11-slim-bullseye\n\n# Install PATH\nRUN mkdir -p /opt/opsany/logs && mkdir /etc/supervisord.d\n\n# Add File\nADD ./websocket /opt/opsany/websocket\n\n# Install Gcc\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \\\n    sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list && \\\n    apt-get update && apt-get -y install build-essential libmariadb-dev net-tools telnet iputils-ping openssh-client vim && apt-get clean && \\\n    echo '    StrictHostKeyChecking no' >> /etc/ssh/ssh_config && \\ \n    pip --no-cache-dir install supervisor -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && \\\n    pip --no-cache-dir install -r /opt/opsany/websocket/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\nENV TZ=\"Asia/Shanghai\"\n#Supervisord config\nADD supervisord.conf /etc/supervisord.conf\nADD websocket.ini /etc/supervisord.d/websocket.ini\n\n# Outside Port\nEXPOSE 8004\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "install/opsany-ce/opsany-websocket/README.md",
    "content": "# 使用说明\n\nWebsocket用于堡垒机、容器平台等的底层通信通道。Websocket的版本随着SaaS的版本进行更新。\n\n## 构建镜像\n\n```\ndocker build -t opsany/opsany-paas-websocket:v2.2.3 .\n```\n\n"
  },
  {
    "path": "install/opsany-ce/opsany-websocket/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "install/opsany-ce/opsany-websocket/websocket.ini",
    "content": "[program:websocket]\ncommand=uvicorn --proxy-headers --host 0.0.0.0 --port 8004 asgi:application --workers 4\ndirectory=/opt/opsany/websocket\nenvironment=BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs\",APP_ID=\"bastion\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_websocket.log\n"
  },
  {
    "path": "install/opsany-ce-k8s-update.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Community Edition Update Script For kubernetes\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"opsany-ce-k8s-update.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install-k8s.config ];then\n      shell_error_log \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install-k8s.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# update saas version $1 rbac $2 统一权限 $3 ${RBAC_SECRET_KEY}\nupdate_saas_version(){\n      python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code $1 --saas_app_name $2 --saas_app_version ${UPDATE_VERSION} --saas_app_secret_key $3 --is_update true\n}\n\n# PaaS Service Update\npaas_update(){\n    #paas\n    shell_log \"======Update paas Service======\"\n    # PaaS Config\n    UPDATE_VERSION=$1\n    /bin/cp conf/opsany-paas/paas/paas.ini ${INSTALL_PATH}/conf/opsany-paas/paas/paas.ini\n    /bin/cp conf/opsany-paas/paas/settings_production.py.paas ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/PAAS_APPENGINE_IP/${PAAS_APPENGINE_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-paas/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/paas/paas.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-paas/\n    /bin/cp -r ../kubernetes/helm/opsany-paas/opsany-paas-paas/* ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-paas/\n    helm upgrade opsany-paas-paas ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-paas/ -n opsany\n}\n\nlogin_update(){\n #login\n    shell_log \"Start login Service\"\n    #Login Config\n    UPDATE_VERSION=$1\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    /bin/cp conf/opsany-paas/login/login.ini ${INSTALL_PATH}/conf/opsany-paas/login/login.ini\n    /bin/cp conf/opsany-paas/login/settings_production.py.login ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-login/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/login/login.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-login/\n    /bin/cp -r ../kubernetes/helm/opsany-paas/opsany-paas-login/* ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-login/\n    helm upgrade opsany-paas-login ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-login/ -n opsany\n}\n\nesb_update(){\n#esb\n    shell_log \"Start esb Service\"\n\n# ESB Components Update\n    shell_log \"======ESB Update======\"\n    /bin/cp -r ../paas-ce/paas/esb/components/generic/apis/* ${INSTALL_PATH}/esb/apis/\n    # Copy to NFS\n    /bin/cp -r ${INSTALL_PATH}/esb/apis/* /data/k8s-nfs/opsany-esb-code/\n\n    # update esb sql\n    MYSQL_SERVER_IP=$(kubectl get svc opsany-base-mysql -n opsany | awk -F ' ' '{print $3}' | tail -1)\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    /bin/cp ./init/esb-init/* ${INSTALL_PATH}/init/esb-init/\n    kubectl cp ${INSTALL_PATH}/init/esb-init opsany-base-mysql-0:/opt/ -n opsany\n    kubectl -n opsany exec opsany-base-mysql-0 -- sh -c \"\n        mysql -h \\\"${MYSQL_SERVER_IP}\\\" -P ${MYSQL_SERVER_PORT} -u root -p\\\"${MYSQL_ROOT_PASSWORD}\\\" opsany_paas < /opt/esb-init/esb_api_doc.sql\n        mysql -h \\\"${MYSQL_SERVER_IP}\\\" -P ${MYSQL_SERVER_PORT} -u root -p\\\"${MYSQL_ROOT_PASSWORD}\\\" opsany_paas < /opt/esb-init/esb_channel.sql\n        mysql -h \\\"${MYSQL_SERVER_IP}\\\" -P ${MYSQL_SERVER_PORT} -u root -p\\\"${MYSQL_ROOT_PASSWORD}\\\" opsany_paas < /opt/esb-init/esb_component_system.sql\n        mysql -h \\\"${MYSQL_SERVER_IP}\\\" -P ${MYSQL_SERVER_PORT} -u root -p\\\"${MYSQL_ROOT_PASSWORD}\\\" opsany_paas < /opt/esb-init/esb_function_controller.sql\n    \"\n\n    # ESB Config\n    UPDATE_VERSION=$1\n    /bin/cp conf/opsany-paas/esb/esb.ini ${INSTALL_PATH}/conf/opsany-paas/esb/esb.ini\n    /bin/cp conf/opsany-paas/esb/settings_production.py.esb ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/LOCAL_IP/opsany-paas-openresty/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_PAAS_IP/${PAAS_PAAS_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/esb/esb.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/\n    /bin/cp -r ../kubernetes/helm/opsany-paas/opsany-paas-esb/* ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/\n    sed -i \"s/^.*appVersion:.*$/appVersion: \\\"${UPDATE_VERSION}\\\"/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/Chart.yaml\n    ESB_POD=$(kubectl get pod -n opsany | grep opsany-paas-esb | awk '{print $1}')\n    helm upgrade opsany-paas-esb ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/ -n opsany\n    kubectl delete pod ${ESB_POD} -n opsany\n    sleep 10\n}  \n\nappengine_update(){\n #appengine\n    shell_log \"Start appengine Service\"\n    # App Engine Config\n    UPDATE_VERSION=$1\n    /bin/cp conf/opsany-paas/appengine/appengine.ini ${INSTALL_PATH}/conf/opsany-paas/appengine/appengine.ini\n    /bin/cp conf/opsany-paas/appengine/settings_production.py.appengine ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-appengine/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/appengine/appengine.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-appengine/\n    /bin/cp -r ../kubernetes/helm/opsany-paas/opsany-paas-appengine/* ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-appengine/\n    helm upgrade opsany-paas-appengine ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-appengine/ -n opsany\n}  \n\n# Update Proxy\nproxy_update(){\n    shell_log \"======Update Proxy======\"\n    UPDATE_VERSION=$1\n    # Proxy config\n    MYSQL_SERVER_IP=$(kubectl get svc | grep opsany-base-mysql | awk -F ' ' '{print $3}' | grep '^[1-10]')\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    /bin/cp conf/proxy/proxy.ini ${INSTALL_PATH}/conf/proxy/proxy.ini\n    /bin/cp conf/proxy/saltapi.ini ${INSTALL_PATH}/conf/proxy/saltapi.ini\n    /bin/cp conf/proxy/saltmaster.ini ${INSTALL_PATH}/conf/proxy/saltmaster.ini\n    /bin/cp conf/proxy/settings_production.py.proxy ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/LOCAL_IP/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/RABBIT_SERVER_IP/${RABBIT_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_USER/${RABBITMQ_DEFAULT_USER}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_PASS/${RABBITMQ_DEFAULT_PASS}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/CONTROL_SECRET_KEY_PROXY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    cp ../saas/invscript_proxy.py ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/LOCALHOST/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n\n    # Starter container\n    docker stop opsany-paas-proxy && docker rm opsany-paas-proxy \n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-proxy:${UPDATE_VERSION}\n    mkdir -p ${INSTALL_PATH}/logs/proxy\n    docker run --restart=always --name opsany-paas-proxy -d \\\n        -p 4505:4505 -p 4506:4506 -p 8010:8010 \\\n        -v ${INSTALL_PATH}/logs/proxy:/opt/opsany/logs/proxy \\\n        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \\\n        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \\\n        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \\\n        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \\\n        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \\\n        -v ${INSTALL_PATH}/conf/proxy/proxy.ini:/etc/supervisord.d/proxy.ini \\\n        -v ${INSTALL_PATH}/conf/proxy/saltapi.ini:/etc/supervisord.d/saltapi.ini \\\n        -v ${INSTALL_PATH}/conf/proxy/saltmaster.ini:/etc/supervisord.d/saltmaster.ini \\\n        -v ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml:/opt/opsany/alertmanager.yml \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/opsany-paas-proxy:${UPDATE_VERSION}\n\n    # OpsAny Database Init\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate >> ${SHELL_LOG}\"\n}\n\nwebsocket_update(){\n# Websocket\n    UPDATE_VERSION=$1\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    /bin/cp conf/opsany-paas/websocket/websocket.ini ${INSTALL_PATH}/conf/opsany-paas/websocket/websocket.ini\n    /bin/cp conf/opsany-paas/websocket/settings_production.py.websocket ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    /bin/cp conf/opsany-paas/websocket/settings_production.py.websocket.init ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    sed -i \"s/WEBSOCKET_GUACD_HOST/${WEBSOCKET_GUACD_HOST}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/PAAS_PAAS_IP/opsany-paas-openresty/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/websocket/websocket.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n    /bin/cp -r ../kubernetes/helm/opsany-paas/opsany-paas-websocket/* ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n    helm upgrade opsany-paas-websocket ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/ -n opsany\n}\n\nsaas_rbac_update(){\n    shell_log \"======Update RBAC Begin======\"\n    # Modify configuration\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    /bin/cp conf/opsany-saas/rbac/* ${INSTALL_PATH}/conf/opsany-saas/rbac/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_OPSANY_RBAC_PASSWORD/${MYSQL_OPSANY_RBAC_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/rbac/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-rbac/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-rbac/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-rbac/\n    helm upgrade opsany-saas-rbac ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-rbac/ -n opsany \n    #helm upgrade opsany-saas-rbac ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-rbac/ -n opsany --set annotations.\"opsany.com/change-cause\"=\"$(date +%Y-%m-%dT%H:%M:%S)\"\n    \n    # Django migrate\n    sleep 10\n    update_saas_version rbac 统一权限 ${RBAC_SECRET_KEY}\n    helm list -n opsany | grep opsany-saas-rbac\n    kubectl get pod -n opsany | grep opsany-saas-rbac\n    shell_log \"======RBAC Update END======\"\n\n}\n\nsaas_workbench_update(){\n    shell_log \"======Update workbench Begin======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    /bin/cp conf/opsany-saas/workbench/* ${INSTALL_PATH}/conf/opsany-saas/workbench/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/WORKBENCH_SECRET_KEY/${WORKBENCH_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_OPSANY_WORKBENCH_PASSWORD/${MYSQL_OPSANY_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/workbench/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-workbench/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-workbench/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-workbench/\n    helm upgrade opsany-saas-workbench ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-workbench/ -n opsany \n    #--set annotations.\"opsany.com/change-cause\"=\"$(date +%Y-%m-%dT%H:%M:%S)\"\n    \n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-workbench\n    kubectl get pod -n opsany | grep opsany-saas-workbench\n    update_saas_version workbench 工作台 ${WORKBENCH_SECRET_KEY}\n    shell_log \"======Workbench Update END======\"\n}\n\nsaas_cmdb_update(){\n    shell_log \"======Update cmdb Begin======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    /bin/cp conf/opsany-saas/cmdb/* ${INSTALL_PATH}/conf/opsany-saas/cmdb/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMDB_PASSWORD/${MYSQL_OPSANY_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/cmdb/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmdb/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-cmdb/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmdb/\n    helm upgrade opsany-saas-cmdb ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmdb/ -n opsany \n    #--set annotations.\"opsany.com/change-cause\"=\"$(date +%Y-%m-%dT%H:%M:%S)\"\n    \n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-cmdb\n    kubectl get pod -n opsany | grep opsany-saas-cmdb\n    update_saas_version cmdb 资源平台 ${CMDB_SECRET_KEY}\n    shell_log \"======CMDB Update END======\"    \n}\n\nsaas_control_update(){\n    shell_log \"======Update control======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    /bin/cp conf/opsany-saas/control/* ${INSTALL_PATH}/conf/opsany-saas/control/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_OPSANY_CONTROL_PASSWORD/${MYSQL_OPSANY_CONTROL_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/control/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-control/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-control/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-control/\n    helm upgrade opsany-saas-control ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-control/ -n opsany\n    \n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-control\n    kubectl get pod -n opsany | grep opsany-saas-control\n    update_saas_version control 管控平台 ${CONTROL_SECRET_KEY}\n    shell_log \"======Control Update END======\"       \n}\n\nsaas_job_update(){\n    shell_log \"======Update job======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    /bin/cp conf/opsany-saas/job/* ${INSTALL_PATH}/conf/opsany-saas/job/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/JOB_SECRET_KEY/${JOB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_OPSANY_JOB_PASSWORD/${MYSQL_OPSANY_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/job/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-job/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-job/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-job/\n    helm upgrade opsany-saas-job ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-job/ -n opsany\n    \n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-job\n    kubectl get pod -n opsany | grep opsany-saas-job\n    update_saas_version job 作业平台 ${JOB_SECRET_KEY}\n    shell_log \"======Job Update END======\"       \n}\n\nsaas_monitor_update(){\n    shell_log \"======Update monitor======\"\n\n    # Modify configuration\n    UPDATE_VERSION=$1\n    MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    /bin/cp conf/opsany-saas/monitor/* ${INSTALL_PATH}/conf/opsany-saas/monitor/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MONITOR_SECRET_KEY/${MONITOR_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_OPSANY_MONITOR_PASSWORD/${MYSQL_OPSANY_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/monitor/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-monitor/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-monitor/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-monitor/\n    helm upgrade opsany-saas-monitor ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-monitor/ -n opsany\n    \n   # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-monitor\n    kubectl get pod -n opsany | grep opsany-saas-monitor\n    update_saas_version monitor 基础监控 ${MONITOR_SECRET_KEY}\n    shell_log \"======Monitor Update END======\"       \n}\n\nsaas_cmp_update(){\n    shell_log \"======Update cmp======\"\n    #CMP Configure\n    UPDATE_VERSION=$1\n    CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    /bin/cp conf/opsany-saas/cmp/* ${INSTALL_PATH}/conf/opsany-saas/cmp/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/CMP_SECRET_KEY/${CMP_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMP_PASSWORD/${MYSQL_OPSANY_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/cmp/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmp/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-cmp/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmp/\n    helm upgrade opsany-saas-cmp ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmp/ -n opsany\n    \n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-cmp\n    kubectl get pod -n opsany | grep opsany-saas-cmp\n    update_saas_version cmp 云管平台 ${CMP_SECRET_KEY}\n    shell_log \"======CMP Update END======\"       \n}\n\nsaas_bastion_update(){\n    shell_log \"======Update bastion======\"\n    # Bastion Configure\n    UPDATE_VERSION=$1\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    /bin/cp conf/opsany-saas/bastion/* ${INSTALL_PATH}/conf/opsany-saas/bastion/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_OPSANY_BASTION_PASSWORD/${MYSQL_OPSANY_BASTION_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/bastion/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-bastion/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-bastion/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-bastion/\n    helm upgrade opsany-saas-bastion ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-bastion/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-bastion\n    kubectl get pod -n opsany | grep opsany-saas-bastion\n    update_saas_version bastion 堡垒机 ${BASTION_SECRET_KEY}\n    shell_log \"======Bastion Update END======\"       \n}\n\nsaas_devops_update(){\n    shell_log \"======Update devops======\"\n    # DevOps Configure\n    UPDATE_VERSION=$1\n    DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    /bin/cp conf/opsany-saas/devops/* ${INSTALL_PATH}/conf/opsany-saas/devops/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/DEVOPS_SECRET_KEY/${DEVOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEVOPS_PASSWORD/${MYSQL_OPSANY_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/devops/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-devops/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-devops/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-devops/\n    helm upgrade opsany-saas-devops ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-devops/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-devops\n    kubectl get pod -n opsany | grep opsany-saas-devops\n    update_saas_version devops 应用平台 ${DEVOPS_SECRET_KEY}\n    shell_log \"======Bastion Update END======\"           \n}\n\nsaas_pipeline_update(){\n    shell_log \"======Update pipeline======\"\n    # Modify configuration\n    /bin/cp -r ./conf/opsany-saas/pipeline/* ${INSTALL_PATH}/conf/opsany-saas/pipeline/\n    PIPELINE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.pipeline_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PIPELINE_SECRET_KEY/${PIPELINE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_OPSANY_PIPELINE_PASSWORD/${MYSQL_OPSANY_PIPELINE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/pipeline/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-pipeline/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-pipeline/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-pipeline/\n    helm upgrade opsany-saas-pipeline ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-pipeline/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-pipeline\n    kubectl get pod -n opsany | grep opsany-saas-pipeline\n    update_saas_version pipeline 流水线 ${PIPELINE_SECRET_KEY}\n    shell_log \"======Bastion Update END======\"           \n}\n\nsaas_deploy_update(){\n    shell_log \"======Update deploy======\"\n    # Modify configuration\n    /bin/cp -r ./conf/opsany-saas/deploy/* ${INSTALL_PATH}/conf/opsany-saas/deploy/\n    DEPLOY_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.deploy_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/DEPLOY_SECRET_KEY/${DEPLOY_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEPLOY_PASSWORD/${MYSQL_OPSANY_DEPLOY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/deploy/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-deploy/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-deploy/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-deploy/\n    helm upgrade opsany-saas-deploy ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-deploy/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-deploy\n    kubectl get pod -n opsany | grep opsany-saas-deploy\n    update_saas_version deploy 持续部署 ${DEPLOY_SECRET_KEY}\n    shell_log \"======Bastion Update END======\"               \n}\n\nsaas_repo_update(){\n    shell_log \"======Update repo======\"\n    # Modify configuration\n    /bin/cp -r ./conf/opsany-saas/repo/* ${INSTALL_PATH}/conf/opsany-saas/repo/\n    REPO_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.repo_secret_key)\n    # repo Configure\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/REPO_SECRET_KEY/${REPO_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_OPSANY_REPO_PASSWORD/${MYSQL_OPSANY_REPO_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/repo/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-repo/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-repo/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-repo/\n    helm upgrade opsany-saas-repo ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-repo/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-repo\n    kubectl get pod -n opsany | grep opsany-saas-repo\n    update_saas_version repo 制品仓库 ${REPO_SECRET_KEY}\n    shell_log \"======Repo Update END======\"               \n}\n\nsaas_code_update(){\n    shell_log \"======Update code======\"\n    # Dashboard Configure\n    UPDATE_VERSION=$1\n    CODE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.code_secret_key)\n    /bin/cp conf/opsany-saas/code/* ${INSTALL_PATH}/conf/opsany-saas/code/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/CODE_SECRET_KEY/${CODE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_OPSANY_CODE_PASSWORD/${MYSQL_OPSANY_CODE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/code/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-code/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-code/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-code/\n    helm upgrade opsany-saas-code ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-code/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-code\n    kubectl get pod -n opsany | grep opsany-saas-code\n    update_saas_version code 代码仓库 ${CODE_SECRET_KEY}\n    shell_log \"======Repo Update END======\"             \n}\n\nsaas_llmops_update(){\n    shell_log \"======Update llmops======\"\n    # llmops Configure\n    UPDATE_VERSION=$1\n    LLMOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.llmops_secret_key)\n    /bin/cp conf/opsany-saas/llmops/* ${INSTALL_PATH}/conf/opsany-saas/llmops/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-init.py\n    sed -i \"s/LLMOPS_SECRET_KEY/${LLMOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MYSQL_OPSANY_LLMOPS_PASSWORD/${MYSQL_OPSANY_LLMOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/llmops/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-llmops/\n    /bin/cp -r ../kubernetes/helm/opsany-saas/opsany-saas-llmops/* ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-llmops/\n    helm upgrade opsany-saas-llmops ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-llmops/ -n opsany\n\n    # Django migrate\n    sleep 10\n    helm list -n opsany | grep opsany-saas-llmops\n    kubectl get pod -n opsany | grep opsany-saas-llmops\n    update_saas_version llmops 代码仓库 ${LLMOPS_SECRET_KEY}\n    shell_log \"======Repo Update END======\"             \n}\n\n# Main\nmain(){\n    UPDATE_VERSION=$2\n    case \"$1\" in\n\tbase)\n\t    saas_rbac_update $2\n\t    saas_workbench_update $2\n\t    saas_cmdb_update $2\n\t    saas_control_update $2\n\t    saas_job_update $2\n\t    saas_cmp_update $2\n\t    saas_bastion_update $2\n        saas_llmops_update $2\n\t\t;;\n    ops)\n\t    saas_rbac_update $2\n\t    saas_workbench_update $2\n\t    saas_cmdb_update $2\n\t    saas_control_update $2\n\t    saas_job_update $2\n\t    saas_cmp_update $2\n\t    saas_bastion_update $2\n        saas_llmops_update $2\n\t\t;;\n    paas)\n        paas_update $2\n        ;;\n    login)\n        login_update $2\n        ;;\n    esb)\n        esb_update $2\n        ;;\n    websocket)\n        websocket_update $2\n        ;;\n    appengine)\n        appengine_update $2\n        ;;\n    proxy)\n        proxy_update $2\n        ;;\n    rbac)\n        saas_rbac_update $2\n\t    ;;\n    workbench)\n        saas_workbench_update $2\n\t    ;;\n    cmdb)\n        saas_cmdb_update $2\n\t    ;;\n    control)\n        saas_control_update $2\n\t    ;;\n    job)\n        saas_job_update $2\n\t    ;;\n\tmonitor)\n\t    saas_monitor_update $2\n\t    ;;\n\tdevops)\n\t    saas_devops_update $2\n\t    ;;\n    pipeline)\n\t    saas_pipeline_update $2\n\t    ;;\n\tdeploy)\n\t    saas_deploy_update $2\n\t    ;;\n\trepo)\n\t    saas_repo_update $2\n\t    ;;\n    code)\n\t    saas_code_update $2\n\t    ;;\n    cmp)\n        saas_cmp_update $2\n\t    ;;\n    bastion)\n        saas_bastion_update $2\n\t    ;;\n    websocket)\n        websocket_update $2\n        ;;\n    llmops)\n        llmops_update $2\n        ;;\n    dev)\n        saas_devops_update $2\n        saas_pipeline_update $2\n        saas_deploy_update $2\n        saas_repo_update $2\n        saas_code_update $2\n        ;;\n    all)\n\t    saas_rbac_update $2\n\t    saas_workbench_update $2\n\t    saas_cmdb_update $2\n\t    saas_control_update $2\n\t    saas_job_update $2\n\t    saas_cmp_update $2\n\t    saas_bastion_update $2\n        saas_monitor_update $2\n        saas_devops_update $2\n        saas_pipeline_update $2\n        saas_deploy_update $2\n        saas_repo_update $2\n        saas_code_update $2\n        saas_llmops_update $2\n        ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {(ops|dev|all|help) version}\"\n\t    ;;\n    esac\n}\n\nmain $1 $2\n"
  },
  {
    "path": "install/opsany-ce-offline.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Community Edition Offline Script\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\nSAAS_VERSION=\"2.3.1\"\nmkdir -p /opt/opsany-v${SAAS_VERSION}-x86_64/images\n\nbase_save(){\n    # 基础镜像\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/mysql:8.0.30\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/zabbix-server-mysql:7.0.3-ubuntu\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/zabbix-agent2:7.0.3-ubuntu\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/jenkins:2.452.2-lts\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/nexus3:3.37.0\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/redis:6.2.19-alpine\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/mongo:4.4.1-bionic\n\tdocker pull  registry.cn-beijing.aliyuncs.com/opsany/openresty:1.17.8.2-alpine\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/guacd:1.2.0\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-grafana:9.0.3\n\tcd /opt/opsany-v${SAAS_VERSION}-x86_64/images\n\tdocker save -o mysql-8.0.30-x86.tar registry.cn-beijing.aliyuncs.com/opsany/mysql:8.0.30\n\tdocker save -o zabbix-web-nginx-mysql.tar registry.cn-beijing.aliyuncs.com/opsany/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\tdocker save -o zabbix-server-mysql.tar registry.cn-beijing.aliyuncs.com/opsany/zabbix-server-mysql:7.0.3-ubuntu\n\tdocker save -o redis-6.2.19-x86.tar registry.cn-beijing.aliyuncs.com/opsany/redis:6.2.19-alpine\n\tdocker save -o mongo-4.4.1-x86.tar registry.cn-beijing.aliyuncs.com/opsany/mongo:4.4.1-bionic\n\tdocker save -o openresty-1.17.8.2-x86.tar  registry.cn-beijing.aliyuncs.com/opsany/openresty:1.17.8.2-alpine\n\tdocker save -o guacd-1.2.0-x86.tar registry.cn-beijing.aliyuncs.com/opsany/guacd:1.2.0\n\tdocker save -o grafana-9.0.3-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-grafana:9.0.3\n\tdocker save -o zabbix-web-nginx-mysql-7.0.3-ubuntu-x86.tar registry.cn-beijing.aliyuncs.com/opsany/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\tdocker save -o zabbix-server-mysql-7.0.3-ubuntu-x86.tar registry.cn-beijing.aliyuncs.com/opsany/zabbix-server-mysql:7.0.3-ubuntu\n\tdocker save -o zabbix-agent2-7.0.3-ubuntu-x86.tar registry.cn-beijing.aliyuncs.com/opsany/zabbix-agent2:7.0.3-ubuntu\n\tdocker save -o jenkins-2.452.2-lts-x86.tar registry.cn-beijing.aliyuncs.com/opsany/jenkins:2.452.2-lts\n\tdocker save -o nexus3-3.37.0-x86.tar registry.cn-beijing.aliyuncs.com/opsany/nexus3:3.37.0\n}\n\npaas_save(){\n\t# 导出PaaS镜像\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-proxy:2.3.1\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-websocket:4.0.0\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-appengine:4.0.0\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-login:4.0.3\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-esb:4.0.0\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-paas:4.0.0\n\tcd /opt/opsany-v${SAAS_VERSION}-x86_64/images\n\tdocker save -o opsany-paas-proxy-2.3.1-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-proxy:2.3.1\n\tdocker save -o opsany-paas-websocket-4.0.0-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-websocket:4.0.0\n\tdocker save -o opsany-paas-appengine-4.0.0-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-appengine:4.0.0\n\tdocker save -o opsany-paas-login-4.0.3-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-login:4.0.3\n\tdocker save -o opsany-paas-esb-4.0.0-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-esb:4.0.0\n\tdocker save -o opsany-paas-paas-4.0.0-x86.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-paas:4.0.0\n}\n\nce_save(){\n    # 导出社区版SaaS镜像\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-llmops:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-rbac:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-workbench:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-cmdb:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-control:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-job:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-monitor:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-cmp:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-bastion:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-devops:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-pipeline:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-deploy:${SAAS_VERSION}\n\tdocker pull registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-repo:${SAAS_VERSION}\n\tcd /opt/opsany-v${SAAS_VERSION}-x86_64/images\n\tdocker save -o opsany-saas-llmops-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-llmops:${SAAS_VERSION}\n\tdocker save -o opsany-saas-rbac-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-rbac:${SAAS_VERSION}\n\tdocker save -o opsany-saas-workbench-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-workbench:${SAAS_VERSION}\n\tdocker save -o opsany-saas-cmdb-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-cmdb:${SAAS_VERSION}\n\tdocker save -o opsany-saas-control-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-control:${SAAS_VERSION}\n\tdocker save -o opsany-saas-job-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-job:${SAAS_VERSION}\n\tdocker save -o opsany-saas-monitor-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-monitor:${SAAS_VERSION}\n\tdocker save -o opsany-saas-cmp-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-cmp:${SAAS_VERSION}\n\tdocker save -o opsany-saas-bastion-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-bastion:${SAAS_VERSION}\n\tdocker save -o opsany-saas-devops-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-devops:${SAAS_VERSION}\n\tdocker save -o opsany-saas-pipeline-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-pipeline:${SAAS_VERSION}\n\tdocker save -o opsany-saas-deploy-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-deploy:${SAAS_VERSION}\n\tdocker save -o opsany-saas-repo-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-repo:${SAAS_VERSION}\n\tdocker save -o opsany-saas-code-${SAAS_VERSION}.tar registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-code:${SAAS_VERSION}\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    ce)\n        ce_save\n        ;;\n    paas)\n        paas_save\n        ;;\n    base)\n        base_save\n        ;;\n    all)\n        base_save\n        ce_save\n        paas_save\n        ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {base|paas|ce|all|help}\"\n\t    ;;\n    esac\n}\n\nmain $1 \n"
  },
  {
    "path": "install/opsany-ce-update.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Community Edition Update Script\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"opsany-ce-update.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    mkdir -p ${INSTALL_PATH}/conf/opsany-paas/{paas,esb,login,appengine,websocket}\n    mkdir -p ${INSTALL_PATH}/logs/{rbac,workbench,cmdb,control,job,monitor,cmp,bastion,devops,pipeline,repo,code,deploy,proxy,llmops,opsany-mcp-server}\n    chmod -R 777 ${INSTALL_PATH}/uploads/guacamole\n    # copy init script to websocket\n    docker cp ../saas/ opsany-paas-websocket:/opt/opsany/\n    docker cp ./init/ opsany-paas-websocket:/opt/opsany/\n\nfi\n\n# PaaS Service Update\npaas_update(){\n    #paas\n    shell_log \"======Update paas Service======\"\n    # PaaS Config\n    UPDATE_VERSION=$1\n    /bin/cp conf/opsany-paas/paas/paas.ini ${INSTALL_PATH}/conf/opsany-paas/paas/paas.ini\n    /bin/cp conf/opsany-paas/paas/settings_production.py.paas ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/PAAS_APPENGINE_IP/${PAAS_APPENGINE_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-paas:${UPDATE_VERSION}\n    docker stop opsany-paas-paas && docker rm opsany-paas-paas \n    docker run -d --restart=always --name opsany-paas-paas \\\n    -p 8001:8001 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas:/opt/opsany/paas/paas/conf/settings_production.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/paas/paas.ini:/etc/supervisord.d/paas.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-paas:${UPDATE_VERSION}\n}\n\n\nguacd_update(){\n    # Guacd\n    shell_log \"======Start Guacd======\"\n    docker pull ${PAAS_DOCKER_REG}/guacd:${UPDATE_VERSION}\n    docker stop opsany-base-guacd && docker rm opsany-base-guacd\n    docker run -d --restart=always --name opsany-base-guacd \\\n    -p 4822:4822 \\\n    -v ${INSTALL_PATH}/uploads/guacamole:/srv/guacamole \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/guacd:${UPDATE_VERSION}\n}\n\nmcp_update(){\n    shell_log \"======Start OpsAny MCP Server======\"\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-mcp-server:${UPDATE_VERSION}\n    docker stop opsany-paas-mcp-server && docker rm opsany-paas-mcp-server\n    # MCP Configure\n    mkdir -p ${INSTALL_PATH}/conf/opsany-paas/mcp-server\n    if [ -f ${INSTALL_PATH}/conf/.mcp_auth_token ];then\n        MCP_AUTH_TOKEN=$(cat ${INSTALL_PATH}/conf/.mcp_auth_token)\n    else\n        MCP_AUTH_TOKEN=$(uuid -v4)\n        echo $MCP_AUTH_TOKEN > ${INSTALL_PATH}/conf/.mcp_auth_token\n    fi\n    \n    /bin/cp conf/opsany-paas/mcp-server/config.yaml ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n    /bin/cp conf/opsany-paas/mcp-server/mcp-supervisor.ini ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp-supervisor.ini\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n    sed -i \"s/MCP_AUTH_TOKEN/${MCP_AUTH_TOKEN}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n\n    # Starter container\n    docker run -d --restart=always --name opsany-paas-mcp-server \\\n       -p 8020:8020 \\\n       -v ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml:/opt/opsany/opsany-mcp-server/config/config.yaml \\\n       -v ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp-supervisor.ini:/etc/supervisord.d/mcp.ini \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-paas-mcp-server:${UPDATE_VERSION}\n\n    # MCP JSON\n    MCP_AUTH_TOKEN=$(cat ${INSTALL_PATH}/conf/.mcp_auth_token)\n    /bin/cp conf/opsany-paas/mcp-server/mcp.json ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n    sed -i \"s/MCP_AUTH_TOKEN/${MCP_AUTH_TOKEN}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n    shell_warning_log \"======OpsAny: MCP Server Config JSON======\"\n    cat ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n}\n\nlogin_update(){\n #login\n    shell_log \"Start login Service\"\n    #Login Config\n    UPDATE_VERSION=$1\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    /bin/cp conf/opsany-paas/login/login.ini ${INSTALL_PATH}/conf/opsany-paas/login/login.ini\n    /bin/cp conf/opsany-paas/login/settings_production.py.login ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-login:${UPDATE_VERSION}\n    docker stop opsany-paas-login && docker rm opsany-paas-login \n    docker run -d --restart=always --name opsany-paas-login \\\n    -p 8003:8003 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login:/opt/opsany/paas/login/conf/settings_production.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/login/login.ini:/etc/supervisord.d/login.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-login:${UPDATE_VERSION}\n\n    # OpsAny Database Init\n    docker exec -e DJANGO_SETTINGS_MODULE=settings -e BK_ENV=\"production\" \\\n        opsany-paas-login /bin/sh -c \"python3 /opt/opsany/paas/login/manage.py migrate\"\n}\n\nesb_update(){\n#esb\n    shell_log \"Start esb Service\"\n\n# ESB Components Update\n    shell_log \"======ESB Update======\"\n    /bin/cp -r ../paas-ce/paas/esb/components/generic/apis/* ${INSTALL_PATH}/esb/apis/\n\n    # update esb sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_api_doc.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_channel.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_component_system.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_function_controller.sql\n\n    # ESB Config\n    UPDATE_VERSION=$1\n    /bin/cp conf/opsany-paas/esb/esb.ini ${INSTALL_PATH}/conf/opsany-paas/esb/esb.ini\n    /bin/cp conf/opsany-paas/esb/settings_production.py.esb ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_PAAS_IP/${PAAS_PAAS_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-esb:${UPDATE_VERSION}\n    docker stop opsany-paas-esb && docker rm opsany-paas-esb \n    docker run -d --restart=always --name opsany-paas-esb \\\n    -p 8002:8002 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/esb/apis:/opt/opsany/paas/esb/components/generic/apis \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb:/opt/opsany/paas/esb/configs/default.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/esb/esb.ini:/etc/supervisord.d/esb.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-esb:${UPDATE_VERSION}\n}  \n\nappengine_update(){\n #appengine\n    # App Engine Config\n    UPDATE_VERSION=$1\n    /bin/cp conf/opsany-paas/appengine/appengine.ini ${INSTALL_PATH}/conf/opsany-paas/appengine/appengine.ini\n    /bin/cp conf/opsany-paas/appengine/settings_production.py.appengine ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    shell_log \"Start appengine Service\"\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-appengine:${UPDATE_VERSION}\n    docker stop opsany-paas-appengine && docker rm opsany-paas-appengine\n    docker run -d --restart=always --name opsany-paas-appengine \\\n    -p 8000:8000 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine:/opt/opsany/paas/appengine/controller/settings.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/appengine/appengine.ini:/etc/supervisord.d/appengine.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-appengine:${UPDATE_VERSION}\n}  \n\n# Update Proxy\nproxy_update(){\n    shell_log \"======Update Proxy======\"\n    UPDATE_VERSION=$1\n    # Proxy config\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    /bin/cp conf/proxy/proxy.ini ${INSTALL_PATH}/conf/proxy/proxy.ini\n    #/bin/cp conf/proxy/saltapi.ini ${INSTALL_PATH}/conf/proxy/saltapi.ini\n    /bin/cp conf/proxy/saltmaster.ini ${INSTALL_PATH}/conf/proxy/saltmaster.ini\n    /bin/cp conf/proxy/settings_production.py.proxy ${INSTALL_PATH}/conf/proxy/\n    #/bin/cp conf/salt/master.d/api.conf ${INSTALL_PATH}/proxy-volume/etc/salt/master.d/\n    #/bin/cp conf/salt/master.d/user.conf ${INSTALL_PATH}/proxy-volume/etc/salt/master.d/\n    /bin/cp conf/salt/master ${INSTALL_PATH}/proxy-volume/etc/salt/\n    /bin/cp conf/salt/minion ${INSTALL_PATH}/proxy-volume/etc/salt/\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/LOCAL_IP/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/RABBIT_SERVER_IP/${RABBIT_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_USER/${RABBITMQ_DEFAULT_USER}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_PASS/${RABBITMQ_DEFAULT_PASS}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/CONTROL_SECRET_KEY_PROXY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    cp ../saas/invscript_proxy.py ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/LOCALHOST/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-proxy:${UPDATE_VERSION}\n    docker stop opsany-paas-proxy && docker rm opsany-paas-proxy \n    mkdir -p ${INSTALL_PATH}/logs/proxy\n    docker run --restart=always --name opsany-paas-proxy -d \\\n        -p 4505:4505 -p 4506:4506 -p 8010:8010 \\\n        -v ${INSTALL_PATH}/logs/proxy:/opt/opsany/logs/proxy \\\n        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \\\n        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \\\n        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \\\n        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \\\n        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \\\n        -v ${INSTALL_PATH}/conf/proxy/proxy.ini:/etc/supervisord.d/proxy.ini \\\n        -v ${INSTALL_PATH}/conf/proxy/saltmaster.ini:/etc/supervisord.d/saltmaster.ini \\\n        -v ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml:/opt/opsany/alertmanager.yml \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/opsany-paas-proxy:${UPDATE_VERSION}\n\n    # OpsAny Database Init\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate >> ${SHELL_LOG}\"\n}\n\nwebsocket_update(){\n# Websocket\n    UPDATE_VERSION=$1\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    /bin/cp conf/opsany-paas/websocket/websocket.ini ${INSTALL_PATH}/conf/opsany-paas/websocket/websocket.ini\n    /bin/cp conf/opsany-paas/websocket/settings_production.py.websocket ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    /bin/cp conf/opsany-paas/websocket/settings_production.py.websocket.init ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    sed -i \"s/WEBSOCKET_GUACD_HOST/${WEBSOCKET_GUACD_HOST}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/PAAS_PAAS_IP/${PAAS_PAAS_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-websocket:${UPDATE_VERSION}\n    docker stop opsany-paas-websocket && docker rm opsany-paas-websocket\n    docker run -d --restart=always --name opsany-paas-websocket \\\n    -p 8004:8004 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket:/opt/opsany/websocket/config/prod.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init:/opt/opsany/websocket/config/__init__.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/websocket/websocket.ini:/etc/supervisord.d/websocket.ini \\\n    -v /usr/share/zoneinfo:/usr/share/zoneinfo \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-websocket:${UPDATE_VERSION}\n    docker cp ../saas/ opsany-paas-websocket:/opt/opsany/\n    docker cp ./init/ opsany-paas-websocket:/opt/opsany/\n}\n\nsaas_rbac_update(){\n    shell_log \"======Update RBAC======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    /bin/cp conf/opsany-saas/rbac/* ${INSTALL_PATH}/conf/opsany-saas/rbac/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_OPSANY_RBAC_PASSWORD/${MYSQL_OPSANY_RBAC_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-rbac:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-rbac && docker rm opsany-saas-ce-rbac\n    docker run -d --restart=always --name opsany-saas-ce-rbac \\\n       -p 7001:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-supervisor.ini:/etc/supervisord.d/rbac.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-uwsgi.ini:/opt/opsany/uwsgi/rbac.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py:/opt/opsany/rbac/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py:/opt/opsany/rbac/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/rbac:/opt/opsany/logs/rbac \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-rbac:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-rbac /bin/sh -c \\\n    \"python /opt/opsany/rbac/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/rbac/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version rbac 统一权限 ${RBAC_SECRET_KEY}\n}\n\nsaas_workbench_update(){\n    shell_log \"======Update workbench======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    /bin/cp conf/opsany-saas/workbench/* ${INSTALL_PATH}/conf/opsany-saas/workbench/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/WORKBENCH_SECRET_KEY/${WORKBENCH_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_OPSANY_WORKBENCH_PASSWORD/${MYSQL_OPSANY_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-workbench:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-workbench && docker rm opsany-saas-ce-workbench\n    docker run -d --restart=always --name opsany-saas-ce-workbench \\\n       -p 7002:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-supervisor.ini:/etc/supervisord.d/workbench.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-uwsgi.ini:/opt/opsany/uwsgi/workbench.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py:/opt/opsany/workbench/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py:/opt/opsany/workbench/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/workbench:/opt/opsany/logs/workbench \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-workbench:${UPDATE_VERSION}\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-workbench /bin/sh -c \\\n    \"python /opt/opsany/workbench/manage.py migrate --noinput >> ${SHELL_LOG} >> ${SHELL_LOG} && python /opt/opsany/workbench/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version workbench 工作台 ${WORKBENCH_SECRET_KEY}\n}\n\nsaas_cmdb_update(){\n    shell_log \"======Update cmdb======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    /bin/cp conf/opsany-saas/cmdb/* ${INSTALL_PATH}/conf/opsany-saas/cmdb/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMDB_PASSWORD/${MYSQL_OPSANY_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-cmdb:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-cmdb && docker rm opsany-saas-ce-cmdb\n    docker run -d --restart=always --name opsany-saas-ce-cmdb \\\n       -p 7003:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-supervisor.ini:/etc/supervisord.d/cmdb.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-uwsgi.ini:/opt/opsany/uwsgi/cmdb.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py:/opt/opsany/cmdb/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py:/opt/opsany/cmdb/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/cmdb:/opt/opsany/logs/cmdb \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-cmdb:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-cmdb /bin/sh -c \\\n    \"python /opt/opsany/cmdb/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/cmdb/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version cmdb 资源平台 ${CMDB_SECRET_KEY}\n}\n\nsaas_control_update(){\n    shell_log \"======Update control======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    /bin/cp conf/opsany-saas/control/* ${INSTALL_PATH}/conf/opsany-saas/control/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_OPSANY_CONTROL_PASSWORD/${MYSQL_OPSANY_CONTROL_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-control:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-control && docker rm opsany-saas-ce-control\n    docker run -d --restart=always --name opsany-saas-ce-control \\\n       -p 7004:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-supervisor.ini:/etc/supervisord.d/control.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-uwsgi.ini:/opt/opsany/uwsgi/control.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py:/opt/opsany/control/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py:/opt/opsany/control/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-control:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-control /bin/sh -c \\\n    \"python /opt/opsany/control/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/control/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version control 管控平台 ${CONTROL_SECRET_KEY}\n}\n\nsaas_job_update(){\n    shell_log \"======Update job======\"\n    # Modify configuration\n    UPDATE_VERSION=$1\n    JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    /bin/cp conf/opsany-saas/job/* ${INSTALL_PATH}/conf/opsany-saas/job/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/JOB_SECRET_KEY/${JOB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_OPSANY_JOB_PASSWORD/${MYSQL_OPSANY_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-job:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-job && docker rm opsany-saas-ce-job\n    docker run -d --restart=always --name opsany-saas-ce-job \\\n       -p 7005:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-supervisor.ini:/etc/supervisord.d/job.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-uwsgi.ini:/opt/opsany/uwsgi/job.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py:/opt/opsany/job/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py:/opt/opsany/job/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/job:/opt/opsany/logs/job \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-job:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-job /bin/sh -c \\\n    \"python /opt/opsany/job/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/job/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version job 作业平台 ${JOB_SECRET_KEY}\n}\n\nsaas_monitor_update(){\n    shell_log \"======Update monitor======\"\n\n    # Modify configuration\n    UPDATE_VERSION=$1\n    MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    /bin/cp conf/opsany-saas/monitor/* ${INSTALL_PATH}/conf/opsany-saas/monitor/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MONITOR_SECRET_KEY/${MONITOR_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_OPSANY_MONITOR_PASSWORD/${MYSQL_OPSANY_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    \n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-monitor:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-monitor && docker rm opsany-saas-ce-monitor\n    docker run -d --restart=always --name opsany-saas-ce-monitor \\\n       -p 7006:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-supervisor.ini:/etc/supervisord.d/monitor.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-uwsgi.ini:/opt/opsany/uwsgi/monitor.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py:/opt/opsany/monitor/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py:/opt/opsany/monitor/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/monitor:/opt/opsany/logs/monitor \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-monitor:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-monitor /bin/sh -c \\\n    \"python /opt/opsany/monitor/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/monitor/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version monitor 基础监控 ${MONITOR_SECRET_KEY}\n\n    shell_log \"======Update Dashboard Initialize======\"\n    # Init Script Job\n    docker exec opsany-paas-websocket /bin/sh -c \"cd /opt/opsany/init/ && python3 init_dashboard.py --grafana_url https://${DOMAIN_NAME}/grafana/ --grafana_username admin --grafana_password $GRAFANA_ADMIN_PASSWORD\"\n\n}\n\nsaas_cmp_update(){\n    shell_log \"======Update cmp======\"\n\n    #CMP Configure\n    UPDATE_VERSION=$1\n    CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    /bin/cp conf/opsany-saas/cmp/* ${INSTALL_PATH}/conf/opsany-saas/cmp/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/CMP_SECRET_KEY/${CMP_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMP_PASSWORD/${MYSQL_OPSANY_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    \n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-cmp:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-cmp && docker rm opsany-saas-ce-cmp\n    docker run -d --restart=always --name opsany-saas-ce-cmp \\\n       -p 7007:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-supervisor.ini:/etc/supervisord.d/cmp.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-uwsgi.ini:/opt/opsany/uwsgi/cmp.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py:/opt/opsany/cmp/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py:/opt/opsany/cmp/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/cmp:/opt/opsany/logs/cmp \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-cmp:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-cmp /bin/sh -c \\\n    \"python /opt/opsany/cmp/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/cmp/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version cmp 云管平台 ${CMP_SECRET_KEY}\n}\n\nsaas_bastion_update(){\n    shell_log \"======Update bastion======\"\n\n    # Bastion Configure\n    UPDATE_VERSION=$1\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    /bin/cp conf/opsany-saas/bastion/* ${INSTALL_PATH}/conf/opsany-saas/bastion/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_OPSANY_BASTION_PASSWORD/${MYSQL_OPSANY_BASTION_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/BASTION_FOOT_CLIENT_IP/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/BASTION_FOOT_CLIENT_PORT/8013/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-bastion:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-bastion && docker rm opsany-saas-ce-bastion\n    docker run -d --restart=always --name opsany-saas-ce-bastion \\\n       -p 7008:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-supervisor.ini:/etc/supervisord.d/bastion.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-uwsgi.ini:/opt/opsany/uwsgi/bastion.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py:/opt/opsany/bastion/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py:/opt/opsany/bastion/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-bastion:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-bastion /bin/sh -c \\\n    \"python /opt/opsany/bastion/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/bastion/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version bastion 堡垒机 ${BASTION_SECRET_KEY}\n}\n\nsaas_devops_update(){\n    shell_log \"======Update devops======\"\n\n    # DevOps Configure\n    UPDATE_VERSION=$1\n    DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    /bin/cp conf/opsany-saas/devops/* ${INSTALL_PATH}/conf/opsany-saas/devops/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/DEVOPS_SECRET_KEY/${DEVOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEVOPS_PASSWORD/${MYSQL_OPSANY_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    \n    # Starter container   \n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-devops:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-devops && docker rm opsany-saas-ce-devops\n    docker run -d --restart=always --name opsany-saas-ce-devops \\\n       -p 7009:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-supervisor.ini:/etc/supervisord.d/devops.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-uwsgi.ini:/opt/opsany/uwsgi/devops.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py:/opt/opsany/devops/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py:/opt/opsany/devops/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-devops:${UPDATE_VERSION}\n        # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-devops /bin/sh -c \\\n    \"python /opt/opsany/devops/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/devops/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version devops 应用平台 ${DEVOPS_SECRET_KEY}\n}\n\nsaas_pipeline_update(){\n    shell_log \"======Update pipeline======\"\n    # Modify configuration\n    /bin/cp -r ./conf/opsany-saas/pipeline/* ${INSTALL_PATH}/conf/opsany-saas/pipeline/\n    PIPELINE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.pipeline_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PIPELINE_SECRET_KEY/${PIPELINE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_OPSANY_PIPELINE_PASSWORD/${MYSQL_OPSANY_PIPELINE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-pipeline:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-pipeline && docker rm opsany-saas-ce-pipeline\n    docker run -d --restart=always --name opsany-saas-ce-pipeline \\\n       -p 7017:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-supervisor.ini:/etc/supervisord.d/pipeline.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-uwsgi.ini:/opt/opsany/uwsgi/pipeline.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py:/opt/opsany/pipeline/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py:/opt/opsany/pipeline/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/pipeline:/opt/opsany/logs/pipeline \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-pipeline:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-pipeline /bin/sh -c \\\n    \"python /opt/opsany/pipeline/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/pipeline/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version pipeline 流水线 ${PIPELINE_SECRET_KEY}\n}\n\nsaas_deploy_update(){\n    shell_log \"======Update deploy======\"\n    # Modify configuration\n    /bin/cp -r ./conf/opsany-saas/deploy/* ${INSTALL_PATH}/conf/opsany-saas/deploy/\n    DEPLOY_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.deploy_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/DEPLOY_SECRET_KEY/${DEPLOY_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEPLOY_PASSWORD/${MYSQL_OPSANY_DEPLOY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-deploy:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-deploy && docker rm opsany-saas-ce-deploy\n    docker run -d --restart=always --name opsany-saas-ce-deploy \\\n       -p 7018:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-supervisor.ini:/etc/supervisord.d/deploy.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-uwsgi.ini:/opt/opsany/uwsgi/deploy.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py:/opt/opsany/deploy/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py:/opt/opsany/deploy/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs/deploy:/opt/opsany/logs/deploy \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-deploy:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-deploy /bin/sh -c \\\n    \"python /opt/opsany/deploy/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/deploy/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version deploy 持续部署 ${DEPLOY_SECRET_KEY}\n}\n\nsaas_repo_update(){\n    shell_log \"======Update repo======\"\n    # Modify configuration\n    /bin/cp -r ./conf/opsany-saas/repo/* ${INSTALL_PATH}/conf/opsany-saas/repo/\n    REPO_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.repo_secret_key)\n    # repo Configure\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/REPO_SECRET_KEY/${REPO_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_OPSANY_REPO_PASSWORD/${MYSQL_OPSANY_REPO_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s#REPO_HARBOR_URL#${REPO_HARBOR_URL}#g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REPO_HARBOR_USERNAME/${REPO_HARBOR_USERNAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REPO_HARBOR_PASSWORD/${REPO_HARBOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-repo:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-repo && docker rm opsany-saas-ce-repo\n    docker run -d --restart=always --name opsany-saas-ce-repo \\\n       -p 7020:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-supervisor.ini:/etc/supervisord.d/repo.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-uwsgi.ini:/opt/opsany/uwsgi/repo.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py:/opt/opsany/repo/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py:/opt/opsany/repo/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-repo:${UPDATE_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-repo /bin/sh -c \\\n    \"python /opt/opsany/repo/manage.py migrate --noinput && python /opt/opsany/repo/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n    update_saas_version repo 制品仓库 ${REPO_SECRET_KEY}\n}\n\n\nsaas_code_update(){\n    shell_log \"======Update code======\"\n\n    # Dashboard Configure\n    UPDATE_VERSION=$1\n    CODE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.code_secret_key)\n    /bin/cp conf/opsany-saas/code/* ${INSTALL_PATH}/conf/opsany-saas/code/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/CODE_SECRET_KEY/${CODE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_OPSANY_CODE_PASSWORD/${MYSQL_OPSANY_CODE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-code:${UPDATE_VERSION}\n    docker stop opsany-saas-ce-code && docker rm opsany-saas-ce-code\n    docker run -d --restart=always --name opsany-saas-ce-code \\\n       -p 7010:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-supervisor.ini:/etc/supervisord.d/code.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-uwsgi.ini:/opt/opsany/uwsgi/code.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py:/opt/opsany/code/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py:/opt/opsany/code/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-nginx-main.conf:/etc/nginx/nginx.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-code:${UPDATE_VERSION}\n\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-code /bin/sh -c \\\n    \"python /opt/opsany/code/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/code/manage.py createcachetable django_cache > /dev/null\"\n    update_saas_version code 代码仓库 ${CODE_SECRET_KEY}\n}\n\n# $1 rbac $2 统一权限 $3 ${RBAC_SECRET_KEY}\nupdate_saas_version(){\n      docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code $1 --saas_app_name $2 --saas_app_version ${UPDATE_VERSION} --saas_app_secret_key $3 --is_update true\"\n}\n\n\n# Main\nmain(){\n    UPDATE_VERSION=$2\n    case \"$1\" in\n\tbase)\n\t    saas_rbac_update $2\n\t    saas_workbench_update $2\n\t    saas_cmdb_update $2\n\t    saas_control_update $2\n\t    saas_job_update $2\n\t    saas_cmp_update $2\n\t    saas_bastion_update $2\n        saas_monitor_update $2\n\t\t;;\n    paas)\n        paas_update $2\n        ;;\n    guacd)\n        guacd_update $2\n        ;;\n    login)\n        login_update $2\n        ;;\n    esb)\n        esb_update $2\n        ;;\n    websocket)\n        websocket_update $2\n        ;;\n    appengine)\n        appengine_update $2\n        ;;\n    proxy)\n        proxy_update $2\n        ;;\n    rbac)\n        saas_rbac_update $2\n\t    ;;\n    workbench)\n        saas_workbench_update $2\n\t    ;;\n    cmdb)\n        saas_cmdb_update $2\n\t    ;;\n    control)\n        saas_control_update $2\n\t    ;;\n    job)\n        saas_job_update $2\n\t    ;;\n\tmonitor)\n\t    saas_monitor_update $2\n\t    ;;\n\tdevops)\n\t    saas_devops_update $2\n\t    ;;\n    pipeline)\n\t    saas_pipeline_update $2\n\t    ;;\n\tdeploy)\n\t    saas_deploy_update $2\n\t    ;;\n\trepo)\n\t    saas_repo_update $2\n\t    ;;\n    code)\n\t    saas_code_update $2\n\t    ;;\n    cmp)\n        saas_cmp_update $2\n\t    ;;\n    mcp)\n        mcp_update $2\n\t    ;;\n    bastion)\n        saas_bastion_update $2\n\t    ;;\n    websocket)\n        websocket_update $2\n        ;;\n    ops)\n\t    saas_rbac_update $2\n\t    saas_workbench_update $2\n\t    saas_cmdb_update $2\n\t    saas_control_update $2\n\t    saas_job_update $2\n\t    saas_cmp_update $2\n\t    saas_bastion_update $2\n        saas_monitor_update $2\n        mcp_update $2\n\t\t;;\n    dev)\n        saas_devops_update $2\n        saas_pipeline_update $2\n        saas_deploy_update $2\n        saas_repo_update $2\n        #saas_code_update $2\n        ;;\n    all)\n\t    saas_rbac_update $2\n\t    saas_workbench_update $2\n\t    saas_cmdb_update $2\n\t    saas_control_update $2\n\t    saas_job_update $2\n\t    saas_cmp_update $2\n\t    saas_bastion_update $2\n        saas_monitor_update $2\n        saas_devops_update $2\n        saas_pipeline_update $2\n        saas_deploy_update $2\n        saas_repo_update $2\n        mcp_update $2\n        ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {(paas|login|esb|appengine|proxy|websocket|rbac|workbench|cmdb|control|job|cmp|bastion|base|monitor|devops|mcp|guacd|all|help) version}\"\n\t    ;;\n    esac\n}\n\nmain $1 $2\n"
  },
  {
    "path": "install/opsany_dispatch.py",
    "content": "#!/usr/bin/env python3\n\n\"\"\"\nSend alarms to the OpsAny workbench\nPython3\nrequests==2.23.0\n脚本路径 /usr/lib/zabbix/alertscripts(Zabbix配置文件指定脚本目录)\n脚本需要可执行权限\n\"\"\"\nimport json\nimport sys\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass SendAlertToOpsAny:\n    \n    def __init__(self, opsany_url, app_code, app_secret):\n        self.opsany_url = opsany_url\n        self.app_code = app_code\n        self.app_secret = app_secret\n\n    def send_out_message(self, parameter, operator, temp_id, subscribe_type=None, alert_info=None):\n        API = \"/api/c/compapi/workbench/post_info_to_user/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_username\": operator,\n            \"operator\": operator,\n            \"temp_id\": temp_id,\n            \"subscribe_type\": subscribe_type,\n            \"parameter\": parameter,\n            \"alert_info\": json.dumps(alert_info),\n        }\n        URL = self.opsany_url + API\n        response = requests.post(url=URL, data=req, verify=False)\n        try:\n            end_data = response.json()\n        except Exception as e:\n            raise Exception(\"发送失败，请检查域名或其他参数是否正确：{}\".format(response.content.decode()))\n\n        if end_data.get(\"code\") == 200:\n            print(\"发送状态：{}\".format(end_data.get(\"message\")))\n            return response.status_code\n        else:\n            raise Exception(\"发送失败，请检查参数是否正确：{}\".format(end_data))\n\n    def send(self, alert_sendto, alert_subject, alert_message):\n        parameter = '(\"\"\"{}\"\"\", \"\"\"{}\"\"\")'.format(alert_subject, alert_message)\n        alert_info = {\n            \"alert_subject\": alert_subject,\n            \"alert_message\": alert_message,\n        }\n        return self.send_out_message(parameter, alert_sendto, 7001, alert_info=alert_info)\n\n\ndef main():\n    opsany_url = sys.argv[1]\n    app_code = sys.argv[2]\n    app_secret = sys.argv[3]\n    alert_sendto = sys.argv[4]\n    alert_subject = sys.argv[5]\n    alert_message = sys.argv[6]\n\n    if len(sys.argv) != 7:\n        mes = \"参数异常：OpsAny地址 应用ID 应用TOKEN OpsAny接收人用户名 告警标题 告警内容\"\n        raise Exception(mes)\n\n    if not opsany_url:\n        raise Exception(\"OpsAny地址不能为空\")\n\n    if \"http\" not in opsany_url:\n        raise Exception(\"OpsAny地址请添加前缀 http\")\n\n    if not app_code:\n        raise Exception(\"应用ID不能为空\")\n\n    if not app_secret:\n        raise Exception(\"应用TOKEN不能为空\")\n\n    if not alert_sendto:\n        raise Exception(\"接收人不能为空\")\n\n    if not alert_subject:\n        raise Exception(\"告警标题不能为空\")\n\n    if not alert_message:\n        raise Exception(\"告警内容不能为空\")\n\n    SendAlertToOpsAny(opsany_url, app_code, app_secret).send(alert_sendto, alert_subject, alert_message)\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "install/paas-change-domain.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Daoge、Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Description:  OpsAny PaaS Change Access Domain\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"paas-change-domain.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Create Self-signed Server Certificate\nssl_make(){\n    shell_log \"======Init: Create Self-signed Server Certificate======\"\n    # create dir for ssl\n    if [ ! -d ./conf/nginx-conf.d/ssl ];then\n      mkdir -p ./conf/nginx-conf.d/ssl\n    fi\n    cp ./conf/openssl.cnf ./conf/nginx-conf.d/ssl/\n    cd ./conf/nginx-conf.d/ssl\n    openssl genrsa -des3 -passout pass:opsany -out $NEW_DOMAIN_NAME.key 2048 >/dev/null 2>&1\n\n    #Create server certificate signing request\n    SUBJECT=\"/C=CN/ST=BeiJing/L=BeiJing/O=BeiJing/OU=OpsAny/CN=OpsAny\"\n    openssl req -new -passin pass:opsany -subj $SUBJECT -key $NEW_DOMAIN_NAME.key -out $NEW_DOMAIN_NAME.csr >/dev/null 2>&1\n\n    #Remove password\n    mv $NEW_DOMAIN_NAME.key $NEW_DOMAIN_NAME.origin.key\n    openssl rsa -passin pass:opsany -in $NEW_DOMAIN_NAME.origin.key  -out $NEW_DOMAIN_NAME.key >/dev/null 2>&1\n\n    #Sign SSL certificate\n    openssl x509 -req -days 3650 -extfile openssl.cnf -extensions 'v3_req'  -in $NEW_DOMAIN_NAME.csr -signkey $NEW_DOMAIN_NAME.key -out $NEW_DOMAIN_NAME.crt >/dev/null 2>&1\n    openssl x509 -in ${NEW_DOMAIN_NAME}.crt -out ${NEW_DOMAIN_NAME}.pem -outform PEM >/dev/null 2>&1\n    mv ${NEW_DOMAIN_NAME}.pem ${NEW_DOMAIN_NAME}.origin.pem\n    cat ${NEW_DOMAIN_NAME}.key ${NEW_DOMAIN_NAME}.origin.pem > ${NEW_DOMAIN_NAME}.pem\n    rm -f ./conf/openssl.cnf\n}\n\n\nreplace_domain(){\n    shell_log \"Replace PaaS config files\"\n    # 替换默认安装文件中的配置\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    shell_log \"替换nginx域名，替换后如无法访问，请自行检查nginx配置\"\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas.conf\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy.conf\n\n    shell_log \"Replace SaaS config files\"\n    # 替换已经安装的saas服务域名（可采用重新部署）\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n}\n\nrestart_paas(){\n    service_list='opsany-paas-paas opsany-paas-login opsany-paas-esb opsany-paas-appengine opsany-paas-websocket opsany-paas-proxy opsany-base-openresty'\n    for service in $service_list;do\n        shell_log \"Restart $service\" && docker restart $service;\n    done\n}\nrestart_saas(){\n    service_list='opsany-saas-ce-rbac opsany-saas-ce-workbench opsany-saas-ce-cmdb opsany-saas-ce-control opsany-saas-ce-job opsany-saas-ce-monitor opsany-saas-ce-devops opsany-saas-ce-cmp opsany-saas-ce-bastion opsany-saas-ce-pipeline opsany-saas-ce-deploy opsany-saas-ce-repo'\n    for service in $service_list;do\n        shell_log \"Restart $service\" && docker restart $service;\n    done\n}\n\nmain(){\n    # Setting the Old Domain name\n    OLD_DOMAIN_NAME=$1\n\n    # Setting the New Domain name\n    NEW_DOMAIN_NAME=$2\n\n    if [ -z \"${OLD_DOMAIN_NAME}\" -o -z \"${NEW_DOMAIN_NAME}\" ];then\n        shell_warning_log \"./paas-change-domain.sh old_domanin_name new_domain_name\"\n        exit 1\n    fi\n    ssl_make\n    replace_domain;\n    restart_paas;\n    restart_saas;\n}\n\nmain $1 $2\n"
  },
  {
    "path": "install/paas-change.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Description:  OpsAny PaaS Change Access Domain and Local IP\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"paas-change.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Create Self-signed Server Certificate\nssl_make(){\n    shell_log \"======Init: Create Self-signed Server Certificate======\"\n    # create dir for ssl\n    if [ ! -d ./conf/nginx-conf.d/ssl ];then\n      mkdir -p ./conf/nginx-conf.d/ssl\n    fi\n    cp ./conf/openssl.cnf ./conf/nginx-conf.d/ssl/\n    cd ./conf/nginx-conf.d/ssl\n    openssl genrsa -des3 -passout pass:opsany -out $NEW_DOMAIN_NAME.key 2048 >/dev/null 2>&1\n\n    #Create server certificate signing request\n    SUBJECT=\"/C=CN/ST=BeiJing/L=BeiJing/O=BeiJing/OU=OpsAny/CN=OpsAny\"\n    openssl req -new -passin pass:opsany -subj $SUBJECT -key $NEW_DOMAIN_NAME.key -out $NEW_DOMAIN_NAME.csr >/dev/null 2>&1\n\n    #Remove password\n    mv $NEW_DOMAIN_NAME.key $NEW_DOMAIN_NAME.origin.key\n    openssl rsa -passin pass:opsany -in $NEW_DOMAIN_NAME.origin.key  -out $NEW_DOMAIN_NAME.key >/dev/null 2>&1\n\n    #Sign SSL certificate\n    openssl x509 -req -days 3650 -extfile openssl.cnf -extensions 'v3_req'  -in $NEW_DOMAIN_NAME.csr -signkey $NEW_DOMAIN_NAME.key -out $NEW_DOMAIN_NAME.crt >/dev/null 2>&1\n    openssl x509 -in ${NEW_DOMAIN_NAME}.crt -out ${NEW_DOMAIN_NAME}.pem -outform PEM >/dev/null 2>&1\n    mv ${NEW_DOMAIN_NAME}.pem ${NEW_DOMAIN_NAME}.origin.pem\n    cat ${NEW_DOMAIN_NAME}.key ${NEW_DOMAIN_NAME}.origin.pem > ${NEW_DOMAIN_NAME}.pem\n    rm -f ./conf/openssl.cnf\n}\n\n\nreplace_domain(){\n    shell_log \"Replace PaaS config files\"\n    # 替换默认安装文件中的配置\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    shell_log \"替换nginx域名，替换后如无法访问，请自行检查nginx配置\"\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas.conf\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy.conf\n    ssl_make\n\n\n    shell_log \"Replace SaaS config files\"\n    # 替换已经安装的saas服务域名（可采用重新部署）\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/${OLD_DOMAIN_NAME}/${NEW_DOMAIN_NAME}/g\"  ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n}\n\nreplace_ip(){\n    shell_log \"Replace PaaS config files\"\n    # 替换默认安装文件中的配置\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n\n    shell_log \"Replace SaaS config files\"\n    # 替换已经安装的saas服务域名\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/${OLD_LOCAL_IP}/${NEW_LOCAL_IP}/g\"  ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n}\n\nrestart_paas(){\n    service_list='opsany-paas-paas opsany-paas-login opsany-paas-esb opsany-paas-appengine opsany-paas-websocket opsany-paas-proxy opsany-base-openresty'\n    for service in $service_list;do\n        shell_log \"Restart $service\" && docker restart $service;\n    done\n}\nrestart_saas(){\n    service_list='opsany-saas-ce-rbac opsany-saas-ce-workbench opsany-saas-ce-cmdb opsany-saas-ce-control opsany-saas-ce-job opsany-saas-ce-monitor opsany-saas-ce-devops opsany-saas-ce-cmp opsany-saas-ce-bastion opsany-saas-ce-pipeline opsany-saas-ce-deploy opsany-saas-ce-repo'\n    for service in $service_list;do\n        shell_log \"Restart $service\" && docker restart $service;\n    done\n}\n\nmain(){\n    # Setting the Old Domain name\n    OLD_DOMAIN_NAME=$2\n    OLD_LOCAL_IP=$2\n\n    # Setting the New Domain name\n    NEW_DOMAIN_NAME=$3\n    NEW_LOCAL_IP=$3\n\n   case \"$1\" in\n    all)\n        ssl_make;\n        replace_domain;\n        replace_ip;\n        restart_paas;\n        restart_saas;\n\t\t;;\n    ip)\n        replace_ip;\n        restart_paas;\n        restart_saas;\n        ;;\n    domain)\n        ssl_make;\n        replace_domain;\n        restart_paas;\n        restart_saas;\n        ;;\n    help|*)\n        echo $\"Usage: $0 {all|domain|ip|help}\"\n\techo $\"      Example: ./paas-change.sh domain old_domain_name new_domain_name\"\n\techo $\"      Example: ./paas-change.sh ip old_local_ip new_local_ip\"\n\techo $\"      Example: ./paas-change.sh all old_local_ip new_local_ip\"\n\t;;\n    esac\n\n}\n\nmain $1 $2 $3\n"
  },
  {
    "path": "install/paas-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny PaaS Install Script\n#******************************************\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"paas-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    PRESTR='Ops'\n    STR=`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 5`\n    NUM=`echo $RANDOM`\n    NEW_PASSWORD=$PRESTR$STR$NUM\n    sed -i \"s/INIT_PASSWORD/${NEW_PASSWORD}/g\" install.config\n    source ./install.config\nfi\n\n# Create Self-signed Server Certificate\nssl_make(){\n    shell_log \"======Init: Create Self-signed Server Certificate======\"\n    # create dir for ssl\n    if [ ! -d ./conf/nginx-conf.d/ssl ];then\n      mkdir -p ./conf/nginx-conf.d/ssl\n    fi\n    cp ./conf/openssl.cnf ./conf/nginx-conf.d/ssl/\n    cd ./conf/nginx-conf.d/ssl\n    openssl genrsa -des3 -passout pass:opsany -out $DOMAIN_NAME.key 2048 >/dev/null 2>&1\n\n    #Create server certificate signing request\n    SUBJECT=\"/C=CN/ST=BeiJing/L=BeiJing/O=BeiJing/OU=OpsAny/CN=OpsAny\"\n    openssl req -new -passin pass:opsany -subj $SUBJECT -key $DOMAIN_NAME.key -out $DOMAIN_NAME.csr >/dev/null 2>&1\n\n    #Remove password\n    mv $DOMAIN_NAME.key $DOMAIN_NAME.origin.key\n    openssl rsa -passin pass:opsany -in $DOMAIN_NAME.origin.key  -out $DOMAIN_NAME.key >/dev/null 2>&1\n\n    #Sign SSL certificate\n    openssl x509 -req -days 3650 -extfile openssl.cnf -extensions 'v3_req'  -in $DOMAIN_NAME.csr -signkey $DOMAIN_NAME.key -out $DOMAIN_NAME.crt >/dev/null 2>&1\n    openssl x509 -in ${DOMAIN_NAME}.crt -out ${DOMAIN_NAME}.pem -outform PEM >/dev/null 2>&1\n    mv ${DOMAIN_NAME}.pem ${DOMAIN_NAME}.origin.pem\n    cat ${DOMAIN_NAME}.key ${DOMAIN_NAME}.origin.pem > ${DOMAIN_NAME}.pem\n    rm -f ./conf/openssl.cnf\n}\n\n\n# Check Install requirement\ninstall_check(){\n  shell_warning_log \"======Begin: Getting started is the first step to success.======\"\n  if [ -f /etc/redhat-release ];then\n      setenforce 0\n  fi\n}\n\nminio(){\n    mkdir -p ${INSTALL_PATH}/minio-volume\n    docker run -d --restart=always --name opsany-base-minio \\\n    -p 8020:9000 \\\n    -p 8021:9001 \\\n    -v ${INSTALL_PATH}/minio-volume:/data \\\n    -e \"MINIO_ROOT_USER=opsany\" \\\n    -e \"MINIO_ROOT_PASSWORD=123456.coM\" \\\n    quay.io/minio/minio server /data --console-address \":9001\"\n}\n\n# Install Initialize\nopsany_init(){\n    shell_log \"======Init: Install Init======\"\n    mkdir -p ${INSTALL_PATH}/{uploads/guacamole,uploads/workbench/icon,conf,esb,logs/proxy,saas/apps,saas/saasapp,proxy-volume/certs,proxy-volume/pki,proxy-volume/srv/pillar,proxy-volume/srv/salt,proxy-volume/etc,paasagent-volume,redis-volume,mongodb-volume,mysql-volume,st2-volume,grafana-volume/plugins,grafana-volume/data}\n    mkdir -p ${INSTALL_PATH}/{prometheus-volume/conf,prometheus-volume/data,consul-volume/data,consul-volume/config,uploads/prometheus-config/rules,prometheus-volume/template,prometheus-volume/alertmanager}\n    cd $CDIR\n    /bin/cp -r ../install/conf ${INSTALL_PATH}/\n    /bin/cp -r ../install/init ${INSTALL_PATH}/\n    /bin/cp -r ./uploads/* ${INSTALL_PATH}/uploads/\n    /bin/cp -r ../paas-ce/saas/saas-logo/* ${INSTALL_PATH}/uploads/workbench/icon/\n    /bin/cp -r ./conf/prometheus/* ${INSTALL_PATH}/prometheus-volume/conf/\n    /bin/cp conf/consul.hcl ${INSTALL_PATH}/consul-volume/config/\n    chmod -R 777 ${INSTALL_PATH}/prometheus-volume/\n    chmod -R 777 ${INSTALL_PATH}/uploads/guacamole\n\n    ## init for esb\n    /bin/cp -r ../paas-ce/paas/esb/components/generic/apis/ ${INSTALL_PATH}/esb/\n    \n    ## init for saltstack \n    /bin/cp -a ${CDIR}/../install/conf/salt ${INSTALL_PATH}/proxy-volume/etc/\n    /bin/cp -a ${CDIR}/../install/conf/salt/certs/* ${INSTALL_PATH}/proxy-volume/certs/\n\n    # init for redis\n    /bin/cp ${CDIR}/../install/conf/redis/redis.conf ${INSTALL_PATH}/redis-volume/\n    sed -i \"s/\"REDIS_SERVER_PASSWORD\"/\"${REDIS_SERVER_PASSWORD}\"/g\" ${INSTALL_PATH}/redis-volume/redis.conf\n}\n\n# PaaS Share Service Start\npaas_install(){\n    # Redis\n    shell_log \"======Base Service: Start Redis======\"\n    docker run -d --restart=always --name opsany-base-redis \\\n    -p 6379:6379 -v ${INSTALL_PATH}/redis-volume:/data \\\n    -v ${INSTALL_PATH}/redis-volume/redis.conf:/data/redis.conf \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/redis:6.2.19-alpine redis-server /data/redis.conf\n    \n    # MySQL\n    shell_log \"======Base Service: Start MySQL======\"\n    docker run -d --restart=always --name opsany-base-mysql \\\n    -e MYSQL_ROOT_PASSWORD=\"$MYSQL_ROOT_PASSWORD\" \\\n    -p 3306:3306 -v ${INSTALL_PATH}/mysql-volume:/var/lib/mysql \\\n    -v ${INSTALL_PATH}/conf/mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf \\\n    -v ${INSTALL_PATH}/logs:/var/log/mysql \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/mysql:8.0.30 --character-set-server=utf8 --collation-server=utf8_general_ci\n    #${PAAS_DOCKER_REG}/mysql:5.6.50 --character-set-server=utf8 --collation-server=utf8_general_ci\n    \n    # MongoDB\n    shell_log \"======Base Service: Start MongoDB======\"\n    docker run -d --restart=always --name opsany-base-mongodb \\\n    -e MONGO_INITDB_ROOT_USERNAME=\"$MONGO_INITDB_ROOT_USERNAME\" \\\n    -e MONGO_INITDB_ROOT_PASSWORD=\"$MONGO_INITDB_ROOT_PASSWORD\" \\\n    -p 27017:27017 -v ${INSTALL_PATH}/mongodb-volume:/data/db \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/mongo:4.4.1-bionic\n    \n    # Guacd\n    shell_log \"======Base Service: Start Guacd======\"\n    docker run -d --restart=always --name opsany-base-guacd \\\n    -p 4822:4822 \\\n    -v ${INSTALL_PATH}/uploads/guacamole:/srv/guacamole \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/guacd:1.5.0\n}\n\n# MySQL Initialize\nmysql_init(){\n    shell_log \"======Base Service: MySQL Initialize======\"\n    sleep 15\n    cd ${CDIR}/../install/\n    docker cp init opsany-base-mysql:/opt/\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    # Check MySQL Status\n    max_attempts=60\n    attempt=0\n    mysqladmin_command=\"mysqladmin ping -h \"${MYSQL_SERVER_IP}\" -u root\"\n    while [ $attempt -lt $max_attempts ]; do\n        shell_log \"Trying to connect to mysql...\"\n        if $mysqladmin_command > /dev/null 2>&1; then\n            shell_log \"MySQL has started.\"\n            break\n        else\n            shell_log \"The MySQL service is not started. Wait 10 seconds and try again.\"\n            sleep 10\n            attempt=$((attempt + 1))\n        fi\n    done\n    #For MySQL 8.0\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  -e \"CREATE DATABASE IF NOT EXISTS opsany_paas DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  -e \"CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  -e \"CREATE USER opsany@'%' identified by \"\\\"${MYSQL_OPSANY_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  -e \"grant all on opsany_paas.* to opsany@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  -e \"grant all on opsany_proxy.* to opsany@'%';\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  opsany_paas < init/opsany-paas.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  opsany_paas < ./init/esb-init/esb_api_doc.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  opsany_paas < ./init/esb-init/esb_channel.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root  opsany_paas < ./init/esb-init/esb_component_system.sql\n}\n\n# PaaS Service Start\npaas_start(){\n    # paas service\n    shell_log \"======PaaS Service: Start paas Service======\"\n    # PaaS Config\n    PAAS_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n    ESB_TOKEN=$(uuid)\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/PAAS_APPENGINE_IP/${PAAS_APPENGINE_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$PAAS_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/ESB_TOKEN = '.*'/ESB_TOKEN = '$ESB_TOKEN'/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-paas:4.0.2\n    docker run -d --restart=always --name opsany-paas-paas \\\n    -p 8001:8001 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas:/opt/opsany/paas/paas/conf/settings_production.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/paas/paas.ini:/etc/supervisord.d/paas.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-paas:4.0.2\n    \n    #login service\n    shell_log \"======PaaS Service: Start login Service======\"\n\n    # RBAC secret key for login\n    RBAC_SECRET_KEY=$(uuid -v4)\n    echo $RBAC_SECRET_KEY > ${INSTALL_PATH}/conf/.rbac_secret_key\n    LOGIN_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n\n    #Login Config\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$LOGIN_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/ESB_TOKEN = '.*'/ESB_TOKEN = '$ESB_TOKEN'/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-login:4.0.2\n    docker run -d --restart=always --name opsany-paas-login \\\n    -p 8003:8003 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login:/opt/opsany/paas/login/conf/settings_production.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/login/login.ini:/etc/supervisord.d/login.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-login:4.0.2\n    # OpsAny Database Init\n    docker exec -e DJANGO_SETTINGS_MODULE=settings -e BK_ENV=\"production\" \\\n        opsany-paas-login /bin/sh -c \"python3 /opt/opsany/paas/login/manage.py migrate\"\n    \n    # esb service\n    shell_log \"======PaaS Service: Start esb Service======\"\n    # ESB Config\n    ESB_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_PAAS_IP/${PAAS_PAAS_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$ESB_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/ESB_TOKEN = '.*'/ESB_TOKEN = '$ESB_TOKEN'/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-esb:4.0.2\n    docker run -d --restart=always --name opsany-paas-esb \\\n    -p 8002:8002 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/esb/apis:/opt/opsany/paas/esb/components/generic/apis \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb:/opt/opsany/paas/esb/configs/default.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/esb/esb.ini:/etc/supervisord.d/esb.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-esb:4.0.2\n    \n    # appengine service\n    shell_log \"======PaaS Service: Start appengine Service======\"\n    # App Engine Config\n    APPENGINE_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$APPENGINE_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-appengine:4.0.2\n    docker run -d --restart=always --name opsany-paas-appengine \\\n    -p 8000:8000 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine:/opt/opsany/paas/appengine/controller/settings.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/appengine/appengine.ini:/etc/supervisord.d/appengine.ini \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-appengine:4.0.2\n    \n    # websocket service\n    shell_log \"======PaaS Service: Start websocket Service======\"\n    BASTION_SECRET_KEY=$(uuid -v4)\n    echo $BASTION_SECRET_KEY > ${INSTALL_PATH}/conf/.bastion_secret_key   \n    # Websocket\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    sed -i \"s/WEBSOCKET_GUACD_HOST/${WEBSOCKET_GUACD_HOST}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/PAAS_PAAS_IP/${PAAS_PAAS_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    \n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-websocket:4.0.2\n    docker run -d --restart=always --name opsany-paas-websocket \\\n    -p 8004:8004 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket:/opt/opsany/websocket/config/prod.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init:/opt/opsany/websocket/config/__init__.py \\\n    -v ${INSTALL_PATH}/conf/opsany-paas/websocket/websocket.ini:/etc/supervisord.d/websocket.ini \\\n    -v /usr/share/zoneinfo:/usr/share/zoneinfo \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-websocket:4.0.2\n    \n    #openresty\n    shell_log \"======PaaS Service: Start openresty Service======\"\n    # OpenResty\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas.conf\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas.conf\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy.conf\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy.conf\n    docker run -d --restart=always --name opsany-base-openresty \\\n    -p 80:80 -p 443:443 -p 8011:8011 -p 8012:8012 \\\n    -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/nginx-conf.d:/etc/nginx/conf.d \\\n    -v ${INSTALL_PATH}/conf/nginx.conf:/etc/nginx/nginx.conf \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/openresty:1.17.8.2-alpine\n\n    # copy init script to websocket\n    docker cp ../saas/ opsany-paas-websocket:/opt/opsany/\n    docker cp ./init/ opsany-paas-websocket:/opt/opsany/\n    shell_warning_log \"======End: The end is a new beginning.======\"\n}\n\n# Main\nmain(){\n    case \"$1\" in\n\tinstall)\n          install_check\n          ssl_make\n          opsany_init\n          paas_install\n          sleep 10\n          mysql_init\n          paas_start\n\t  ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n\n"
  },
  {
    "path": "install/paas-k8s-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny PaaS Install Script for Kubernetes\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"paas-k8s-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install-k8s.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install-k8s.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Create Self-signed Server Certificate\nssl_make(){\n    shell_log \"Create Self-signed Server Certificate\"\n    # create dir for ssl\n    if [ ! -d ./conf/nginx-conf.d/ssl ];then\n      mkdir -p ./conf/nginx-conf.d/ssl\n    fi\n    cp ./conf/openssl.cnf ./conf/nginx-conf.d/ssl/\n    cd ./conf/nginx-conf.d/ssl\n    openssl genrsa -des3 -passout pass:opsany -out $DOMAIN_NAME.key 2048 >/dev/null 2>&1\n\n    #Create server certificate signing request\n    SUBJECT=\"/C=CN/ST=BeiJing/L=BeiJing/O=BeiJing/OU=OpsAny/CN=OpsAny\"\n    openssl req -new -passin pass:opsany -subj $SUBJECT -key $DOMAIN_NAME.key -out $DOMAIN_NAME.csr >/dev/null 2>&1\n\n    #Remove password\n    mv $DOMAIN_NAME.key $DOMAIN_NAME.origin.key\n    openssl rsa -passin pass:opsany -in $DOMAIN_NAME.origin.key  -out $DOMAIN_NAME.key >/dev/null 2>&1\n\n    #Sign SSL certificate\n    openssl x509 -req -days 3650 -extfile openssl.cnf -extensions 'v3_req'  -in $DOMAIN_NAME.csr -signkey $DOMAIN_NAME.key -out $DOMAIN_NAME.crt >/dev/null 2>&1\n    openssl x509 -in ${DOMAIN_NAME}.crt -out ${DOMAIN_NAME}.pem -outform PEM >/dev/null 2>&1\n    mv ${DOMAIN_NAME}.pem ${DOMAIN_NAME}.origin.pem\n    cat ${DOMAIN_NAME}.key ${DOMAIN_NAME}.origin.pem > ${DOMAIN_NAME}.pem\n    rm -f ./conf/openssl.cnf\n}\n\n# Check Install requirement\ninstall_check(){\n  shell_warning_log \"The beginning is the first step to success\"\n  if [ -f /etc/redhat-release ];then\n      setenforce 0\n  fi\n}\n\n# Install Initialize\nopsany_init(){\n    shell_log \"Config: Install Init\"\n    mkdir -p ${INSTALL_PATH}/{uploads/guacamole,uploads/workbench/icon,conf,esb}\n    mkdir -p /data/k8s-nfs/{opsany-logs,opsany-uploads/guacamole,opsany-esb-code,opsany-proxy,opsany-grafana-data}\n    chmod 777 /data/k8s-nfs/opsany-grafana-data\n    mkdir -p /data/k8s-nfs/opsany-proxy/{salt-certs,salt-etc,salt-cache,salt-srv,salt-pillar,ansible-playbook,ansible-pki}\n    cd $CDIR\n    /bin/cp -r ./conf ${INSTALL_PATH}/\n    /bin/cp -r ../kubernetes ${INSTALL_PATH}/\n    /bin/cp ${INSTALL_PATH}/conf/nginx-conf.d/ssl/$DOMAIN_NAME.key ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/\n    /bin/cp ${INSTALL_PATH}/conf/nginx-conf.d/ssl/$DOMAIN_NAME.pem ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/\n    sed -i \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/deployment.yaml\n    sed -i \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/secret.yaml\n    sed -i \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/values.yaml\n    /bin/cp -r ./init ${INSTALL_PATH}/\n    /bin/cp -r ./uploads/* /data/k8s-nfs/opsany-uploads/\n    /bin/cp -r ../paas-ce/saas/saas-logo/* ${INSTALL_PATH}/uploads/workbench/icon/\n    ## init for esb\n    /bin/cp -r ../paas-ce/paas/esb/components/generic/apis/ ${INSTALL_PATH}/esb/\n    \n    ## init for Proxy\n    /bin/cp -a ./conf/salt/* /data/k8s-nfs/opsany-proxy/salt-etc/\n    /bin/cp -a ./conf/salt/certs/* /data/k8s-nfs/opsany-proxy/salt-certs/\n    shell_log \"End: Install Init\"\n}\n\nesb_init(){\n    shell_log \"ESB Initialize\"\n    #cmdb\n    mkdir -p ${INSTALL_PATH}/esb/apis/\n    /bin/cp -r /opt/opsany-paas/paas-ce/paas/esb/components/generic/apis/* ${INSTALL_PATH}/esb/apis/\n    /bin/cp -r ${INSTALL_PATH}/esb/apis/* /data/k8s-nfs/opsany-esb-code/\n}\n\n# MySQL Initialize\nmysql_install(){\n    shell_log \"MySQL Config\"\n    sed -i \"s/MYSQL_ROOT_PASSWORD/$MYSQL_ROOT_PASSWORD/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/mysql/values.yaml\n    sed -i \"s/REDIS_SERVER_PASSWORD/$REDIS_SERVER_PASSWORD/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/redis/values.yaml\n    sed -i \"s/MONGO_INITDB_ROOT_PASSWORD/$MONGO_INITDB_ROOT_PASSWORD/g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/mongodb/values.yaml\n}\n\n# PaaS Service Start\npaas_install(){\n    #paas\n    shell_log \"Config paas Service\"\n    # PaaS Config\n    PAAS_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n    ESB_TOKEN=$(uuid)\n    sed -i \"s/PAAS_LOGIN_IP/opsany-paas-login/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/PAAS_APPENGINE_IP/opsany-paas-appengine/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/LOCAL_IP/opsany-paas-openresty/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$PAAS_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    sed -i \"s/ESB_TOKEN = '.*'/ESB_TOKEN = '$ESB_TOKEN'/g\" ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/paas/settings_production.py.paas ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-paas/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/paas/paas.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-paas/\n}\n\nlogin_install(){\n    #login\n    shell_log \"Config login Service\"\n    # RBAC secret key for login\n    RBAC_SECRET_KEY=$(uuid -v4)\n    echo $RBAC_SECRET_KEY > ${INSTALL_PATH}/conf/.rbac_secret_key\n    LOGIN_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n\n    #Login Config\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$LOGIN_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    sed -i \"s/ESB_TOKEN = '.*'/ESB_TOKEN = '$ESB_TOKEN'/g\" ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/login/settings_production.py.login ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-login/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/login/login.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-login/\n}\n    \nesb_install(){\n    #esb\n    shell_log \"Config esb Service\"\n    # ESB Config\n    ESB_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n    sed -i \"s/LOCAL_IP/opsany-paas-openresty/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_LOGIN_IP/opsany-paas-login/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/PAAS_PAAS_IP/opsany-paas-paas/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$ESB_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    sed -i \"s/ESB_TOKEN = '.*'/ESB_TOKEN = '$ESB_TOKEN'/g\" ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/esb/settings_production.py.esb ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/esb/esb.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-esb/\n}\n\nappengine_install(){\n    #appengine\n    # App Engine Config\n    APPENGINE_SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 50)\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    sed -i \"s/SECRET_KEY = '.*'/SECRET_KEY = '$APPENGINE_SECRET_KEY'/g\" ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/appengine/settings_production.py.appengine ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-appengine/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/appengine/appengine.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-appengine/\n    shell_log \"Config appengine Service\"\n}  \n\nwebsocket_install(){\n    #websocket\n    shell_log \"Config websocket Service\"\n    BASTION_SECRET_KEY=$(uuid -v4)\n    echo $BASTION_SECRET_KEY > ${INSTALL_PATH}/conf/.bastion_secret_key   \n    # Websocket\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    sed -i \"s/WEBSOCKET_GUACD_HOST/opsany-paas-guacd/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket\n    sed -i \"s/PAAS_PAAS_IP/opsany-paas-openresty/g\" ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/websocket/settings_production.py.websocket.init ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n    /bin/cp ${INSTALL_PATH}/conf/opsany-paas/websocket/websocket.ini ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-websocket/\n}\n\ngrafana_install(){\n    /bin/cp ${INSTALL_PATH}/conf/grafana/* ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-grafana/\n}\n\nopenresty_install(){\n     #openresty\n    shell_log \"Config openresty Service\"\n    # OpenResty\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas_k8s.config\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy_k8s.config\n    /bin/cp ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas_k8s.config ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/opsany_paas.conf\n    /bin/cp ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy_k8s.config ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/opsany_proxy.conf\n    /bin/cp ${INSTALL_PATH}/conf/nginx-conf.d/ssl/${DOMAIN_NAME}.pem ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/\n    /bin/cp ${INSTALL_PATH}/conf/nginx-conf.d/ssl/${DOMAIN_NAME}.key ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/\n    shell_warning_log \"======The end is the beginning.======\"\n}   \n\nmysql_init(){\n    shell_log \"MySQL Initialize Begin\"\n    MYSQL_SERVER_IP=$(kubectl get svc opsany-base-mysql -n opsany | awk -F ' ' '{print $3}' | tail -1)\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE DATABASE opsany_paas DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE DATABASE opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'opsany'@'%' identified by \"\\\"${MYSQL_OPSANY_PASSWORD}\\\"\";\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on opsany_paas.* to opsany@'%';\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on opsany_proxy.* to opsany@'%';\" \n    \n    #rbac\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database rbac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'rbac'@'%' identified by \"\\\"${MYSQL_OPSANY_RBAC_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on rbac.* to rbac@'%';\"\n    \n    #workbench\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database workbench DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'workbench'@'%' IDENTIFIED BY \"\\\"${MYSQL_OPSANY_WORKBENCH_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on workbench.* to workbench@'%';\"\n    \n    #cmdb\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database cmdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'cmdb'@'%' IDENTIFIED BY \"\\\"${MYSQL_OPSANY_CMDB_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on cmdb.* to cmdb@'%';\"\n    \n    #control\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database control DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'control'@'%' identified by \"\\\"${MYSQL_OPSANY_CONTROL_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on control.* to control@'%';\"\n    \n    #job\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database job DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'job'@'%' identified by \"\\\"${MYSQL_OPSANY_JOB_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on job.* to job@'%';\"\n    \n    #monitor\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database monitor DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'monitor'@'%' identified by \"\\\"${MYSQL_OPSANY_MONITOR_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on monitor.* to monitor@'%';\" \n    \n    #cmp\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database cmp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'cmp'@'%' identified by \"\\\"${MYSQL_OPSANY_CMP_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on cmp.* to cmp@'%';\" \n    \n    #bastion\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database bastion DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'bastion'@'%' identified by \"\\\"${MYSQL_OPSANY_BASTION_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on bastion.* to bastion@'%';\" \n    \n    #devops\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database devops DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'devops'@'%' identified by \"\\\"${MYSQL_OPSANY_DEVOPS_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on devops.* to devops@'%';\" \n    \n    #code\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database code DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'code'@'%' identified by \"\\\"${MYSQL_OPSANY_CODE_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on code.* to code@'%';\" \n\n    #pipeline\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database pipeline DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'pipeline'@'%' identified by \"\\\"${MYSQL_OPSANY_PIPELINE_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on pipeline.* to pipeline@'%';\" \n\n    #repo\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database repo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'repo'@'%' identified by \"\\\"${MYSQL_OPSANY_REPO_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on repo.* to repo@'%';\" \n\n    #deploy\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database deploy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"CREATE USER 'deploy'@'%' identified by \"\\\"${MYSQL_OPSANY_DEPLOY_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on deploy.* to deploy@'%';\" \n\n    # create paas tables\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  opsany_paas < init/opsany-paas.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_api_doc.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_channel.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_component_system.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"show databases;\"\n    shell_log \"MySQL Initialize End\"\n}\n\nmongodb_init(){\n    shell_log \"======MongoDB Initialize Begin======\"\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_AUTO_PASSWORD/${MONGO_AUTO_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_EVENT_PASSWORD/${MONGO_EVENT_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_PROM_PASSWORD/${MONGO_PROM_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_KBASE_PASSWORD/${MONGO_KBASE_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    kubectl cp ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js opsany-base-mongodb-0:/opt/ -n opsany\n    kubectl cp ${INSTALL_PATH}/init/cmdb-init opsany-base-mongodb-0:/opt/ -n opsany\n    kubectl exec -it opsany-base-mongodb-0 -n opsany -- mongosh -u root -p $MONGO_INITDB_ROOT_PASSWORD /opt/mongodb_init.js \n    shell_log \"======MongoDB Initialize End======\"\n}\n\n\n# Main\nmain(){\n    case \"$1\" in\n    mysql)\n        mysql_init\n        ;;\n    mongodb)\n        mongodb_init\n        ;;\n\tinstall)\n          install_check\n          ssl_make\n          opsany_init\n          esb_init\n          mysql_install\n          paas_install\n          login_install\n          esb_install\n          appengine_install\n          websocket_install\n          grafana_install\n          openresty_install\n\t  ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n\n\n"
  },
  {
    "path": "install/password-init.py",
    "content": "\"\"\"\n执行说明：python password-init.py --username [Username] --password [Password] --new_password [New Password]\n        --verify_code [Verify_code]\n参数说明：\nusername         必填      当前用户名\npassowrd         必填      当前密码\nnew_password     必填      新的密码\nverify_code      非必填    如果您开启了MFA则该参数为必填\n第三方依赖：requests==2.25.0\n\"\"\"\nimport requests\nimport argparse\nimport json\n\n# 去除本地python3 windows环境报错\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass BkApi:\n    def __init__(self, paas_domain, username, password, verify_code=\"\"):\n        self.paas_domain = paas_domain\n        self.username = username\n        self.password = password\n        self.session = requests.Session()\n        self.session.headers.update({'referer': self.paas_domain})\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login(verify_code)\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def set_new_password(self, password):\n        API = \"/login/accounts/user/password/\"\n        URL = self.paas_domain + API\n        req = {\n            \"new_password\": password,\n        }\n        res = self.session.put(URL, data=json.dumps(req), verify=False)\n        try:\n            flag = res.json().get(\"result\")\n            message = res.json().get(\"message\")\n            if not flag:\n                return message.split(\": \")[-1], flag\n            else:\n                return message, flag\n        except Exception:\n            return \"Modify password error.\", False\n\n\n# 增加脚本参数\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--paas_domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--username\", help=\"Admin user username.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--password\", help=\"Admin user password.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--new_password\", help=\"Admin user password.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--verify_code\", help=\"Verify code.\", default=\"\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    paas_domain = options.paas_domain\n    username = options.username\n    password = options.password\n    new_password = options.new_password\n    verify_code = options.verify_code if options.verify_code else \"\"\n    bk_api = BkApi(paas_domain, username, password)\n    status, res =bk_api.status, bk_api.token\n    # print(status, res)\n    if status:\n        res, status = bk_api.set_new_password(new_password)\n        if status:\n            print(\"Set new password success, new password: {}\".format(new_password))\n        else:\n            print(\"Set new password error, error info: {}\".format(res))\n    else:\n        print(\"Login ERROR: {}\".format(res))\n"
  },
  {
    "path": "install/prom-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Proxy Install Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"proxy-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -f /etc/redhat-release ];then\n      setenforce 0\n    fi\nfi\n\n# Check Install requirement\ninstall_check(){\n  DOCKER_PID=$(ps aux | grep '/usr/bin/containerd' | grep -v 'grep' | wc -l)\n  if [ ${DOCKER_PID} -lt 1 ];then\n      shell_error_log \"Please install and start docker first!!!\"\n      exit\n  fi\n}\n\n# Install Initialize\ninstall_init(){\n    shell_log \"Start: Install Init\"\n    mkdir -p ${INSTALL_PATH}/{uploads,conf,logs,prometheus-volume/conf,prometheus-volume/data,consul-volume/data,consul-volume/config,uploads/prometheus-config/rules,prometheus-volume/template,prometheus-volume/alertmanager}\n    cd $CDIR\n    /bin/cp -r ./conf/prometheus/* ${INSTALL_PATH}/prometheus-volume/conf/\n    /bin/cp conf/consul.hcl ${INSTALL_PATH}/consul-volume/config/\n    chmod -R 777 ${INSTALL_PATH}/prometheus-volume/\n    #pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==3.2.2 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n    shell_log \"End: Install Init\"\n}\n\nconsul_install(){\n    shell_log \"Start: Consul Install...\"\n    CONSUL_TOKEN=$(uuid -v4)\n    echo $CONSUL_TOKEN > ${INSTALL_PATH}/conf/.consul_token\n    sed -i \"s#PROM_CONSUL_SERVER#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#CONSUL_TOKEN#$CONSUL_TOKEN#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#CONSUL_TOKEN#$CONSUL_TOKEN#g\" ${INSTALL_PATH}/consul-volume/config/consul.hcl\n    docker run --name opsany-base-consul -d --restart=always --privileged \\\n           -p 8500:8500 \\\n           -v ${INSTALL_PATH}/consul-volume/config:/consul/config \\\n           -v ${INSTALL_PATH}/consul-volume/data:/consul/data \\\n           ${PAAS_DOCKER_REG}/consul:1.12.3\n    shell_log \"======Consul Token: ${CONSUL_TOKEN}======\"\n}\n\nprometheus_install(){\n    # Prometheus Server Basic Auth\n    PROM_SERVER_HASH=$(docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/prom-pass.py $PROM_SERVER_PASSWD\")\n\n    # Prometheus Config\n    sed -i \"s#PROM_SERVER_HASH#$PROM_SERVER_HASH#g\" ${INSTALL_PATH}/prometheus-volume/conf/web.yml\n    sed -i \"s#LOCAL_IP#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#PROM_SERVER_PASSWD#$PROM_SERVER_PASSWD#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n\n    # Prometheus Release Date: 2022-04-21 https://hub.docker.com/u/prom\n    shell_log \"======Start Prometheus Server======\"\n    docker run -d --restart=always --name opsany-base-prometheus-server \\\n    -p 9090:9090 \\\n    -v ${INSTALL_PATH}/prometheus-volume/data/:/prometheus \\\n    -v ${INSTALL_PATH}/uploads/prometheus-config/rules/:/var/lib/prometheus-config/rules \\\n    -v ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml:/etc/prometheus/prometheus.yml \\\n    -v ${INSTALL_PATH}/prometheus-volume/conf/web.yml:/etc/prometheus/web.yml \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/prometheus:v2.35.0 --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/consoles --web.config.file=/etc/prometheus/web.yml --web.enable-lifecycle\n\n    # Prometheus Node Exporter Release Date: 2021-12-01 https://hub.docker.com/u/prom\n    #shell_log \"======Start Prometheus Node_Exporter======\"\n    #docker run -d --restart=always --name opsany-prometheus-node_exporter \\\n    #-p 9100:9100 \\\n    #-v /etc/localtime:/etc/localtime:ro \\\n    #${PAAS_DOCKER_REG}/node-exporter:v1.3.1\n}\n\nalertmanager_install(){\n    # Determine if there is a configuration file\n    if [ ! -d \"${INSTALL_PATH}/prometheus-volume/alertmanager/\" ]; then\n    mkdir -p \"${INSTALL_PATH}/prometheus-volume/alertmanager/\"\n        echo \"Directory created: ${INSTALL_PATH}/prometheus-volume/alertmanager/\"\n    else\n        echo \"Directory already exists: ${INSTALL_PATH}/prometheus-volume/alertmanager/\"\n    fi\n    if [ ! -d \"${INSTALL_PATH}/prometheus-volume/template/\" ]; then\n    mkdir -p \"${INSTALL_PATH}/prometheus-volume/template/\"\n        echo \"Directory created: ${INSTALL_PATH}/prometheus-volume/template/\"\n    else\n        echo \"Directory already exists: ${INSTALL_PATH}/prometheus-volume/template/\"\n    fi\n    if [ ! -f \"${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml\" ]; then\n    /bin/cp  ./conf/prometheus/alertmanager.yml \"${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml\"\n        echo \"Configuration file created: ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml\"\n    else\n        echo \"The configuration file already exists: ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml\"\n    fi\n    /bin/cp  ./conf/prometheus/prometheus.yml \"${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\"    \n    # Alertmanager Server Basic Auth\n    CONSUL_TOKEN=`cat ${INSTALL_PATH}/conf/.consul_token`\n    sed -i \"s#PROM_CONSUL_SERVER#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#CONSUL_TOKEN#$CONSUL_TOKEN#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#LOCAL_IP#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#PROM_SERVER_PASSWD#$PROM_SERVER_PASSWD#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n\n    # restart opsany-base-prometheus-server\n    docker restart opsany-base-prometheus-server\n\n    # Alertmanager Release Date: 2024-03-21 https://hub.docker.com/r/prom/alertmanager\n    shell_log \"======Start Alertmanager Server======\"\n    docker run -d --restart=always --name opsany-base-alertmanager-server \\\n    -p 9093:9093 \\\n    -v ${INSTALL_PATH}/prometheus-volume/template/:/etc/alertmanager/template \\\n    -v ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml:/etc/alertmanager/alertmanager.yml \\\n    -v ${INSTALL_PATH}/prometheus-volume/conf/web.yml:/etc/alertmanager/web.yml \\\n    -v ${INSTALL_PATH}/prometheus-volume/alertmanager/:/alertmanager \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    -d ${PAAS_DOCKER_REG}/alertmanager:v0.27.0 --config.file=/etc/alertmanager/alertmanager.yml --storage.path=/alertmanager --web.config.file=/etc/alertmanager/web.yml\n}\n\nblackbox-exporter_install(){\n    # Determine if there is a configuration file\n    if [ ! -f \"${INSTALL_PATH}/prometheus-volume/conf/blackbox.yml\" ]; then\n    /bin/cp  ./conf/prometheus/blackbox.yml \"${INSTALL_PATH}/prometheus-volume/conf/blackbox.yml\"\n        echo \"Configuration file created: ${INSTALL_PATH}/prometheus-volume/conf/blackbox.yml\"\n    else\n        echo \"The configuration file already exists: ${INSTALL_PATH}/prometheus-volume/conf/blackbox.yml\"\n    fi\n    /bin/cp  ./conf/prometheus/prometheus.yml \"${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\"     \n    # Alertmanager Server Basic Auth\n    CONSUL_TOKEN=`cat ${INSTALL_PATH}/conf/.consul_token`\n    sed -i \"s#PROM_CONSUL_SERVER#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#CONSUL_TOKEN#$CONSUL_TOKEN#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#LOCAL_IP#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n    sed -i \"s#PROM_SERVER_PASSWD#$PROM_SERVER_PASSWD#g\" ${INSTALL_PATH}/prometheus-volume/conf/prometheus.yml\n\n    # restart opsany-base-prometheus-server\n    docker restart opsany-base-prometheus-server\n\n    shell_log \"======Start blackbox-exporter======\"\n    docker run -itd \\\n    -p 9115:9115 \\\n    --name opsany-base-blackbox-exporter \\\n    -v ${INSTALL_PATH}/prometheus-volume/conf/blackbox.yml:/config/blackbox.yml \\\n    ${PAAS_DOCKER_REG}/blackbox-exporter:v0.25.0 --config.file=/config/blackbox.yml\n}\n\nprometheus_uninstall(){\n    docker stop opsany-base-prometheus-server\n    docker rm opsany-base-prometheus-server\n    docker stop opsany-base-consul\n    docker rm opsany-base-consul\n    docker stop opsany-base-alertmanager-server\n    docker rm opsany-base-alertmanager-server\n    docker stop opsany-base-blackbox-exporter\n    docker rm opsany-base-blackbox-exporter\n    rm -rf ${INSTALL_PATH}/prometheus-volume/*\n    rm -rf ${INSTALL_PATH}/consul-volume/*\n}\n\nprom_init(){\n  # DOMAIN_NAME LOCAL_IP ADMIN_PASSWORD PROM_SERVER_PASSWD CONSUL_TOKEN\n  if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n  fi\n  docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init-ce-prometheus.py --domain $DOMAIN_NAME --local_ip $LOCAL_IP --username admin --password $ADMIN_PASSWORD --prom_username  admin --prom_password $PROM_SERVER_PASSWD --consul_token $CONSUL_TOKEN --alertmanager_username admin --alertmanager_password $PROM_SERVER_PASSWD\"\n}\n\n\n# Main\nmain(){\n    case \"$1\" in\n\tall)\n            #install_check\n            install_init\n            consul_install\n            prometheus_install\n            alertmanager_install\n            blackbox-exporter_install\n            prom_init\n\t\t;;\n    base)\n            #install_check\n            install_init\n            consul_install\n            prometheus_install\n            prom_init\n        ;;\n    alertmanager)\n            alertmanager_install\n        ;;\n    blackbox-exporter)\n            blackbox-exporter_install\n        ;;\n    uninstall)\n            prometheus_uninstall\n        ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {all|base|alertmanager|blackbox-exporter|uninstall|help}\"\n\t    ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/prom-k8s-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Proxy Install Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"proxy-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install-k8s.config ];then\n      shell_error_log \"Please Copy install-k8s.config and Change: cp install-k8s.config.example install-k8s.config\"\n      exit\nelse\n    grep '^[A-Z]' install-k8s.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -f /etc/redhat-release ];then\n      setenforce 0\n    fi\nfi\n\n# Check Install requirement\ninstall_check(){\n  DOCKER_PID=$(ps aux | grep '/usr/bin/containerd' | grep -v 'grep' | wc -l)\n  if [ ${DOCKER_PID} -lt 1 ];then\n      shell_error_log \"Please install and start docker first!!!\"\n      exit\n  fi\n}\n\n# Install Initialize\ninstall_init(){\n    shell_log \"Start: Install Init\"\n    mkdir -p /data/k8s-nfs/{prometheus-volume/data,consul-volume/data,opsany-uploads/prometheus-config/rules}\n    mkdir -p ${INSTALL_PATH}/{uploads,conf,logs,prometheus-volume/conf,prometheus-volume/data,consul-volume/data,consul-volume/config,uploads/prometheus-config/rules}\n    /bin/cp -r ../kubernetes ${INSTALL_PATH}/\n    cd $CDIR\n    /bin/cp -r ./conf/prometheus/* ${INSTALL_PATH}/kubernetes/helm/opsany-base/prometheus/\n    /bin/cp conf/consul.hcl ${INSTALL_PATH}/kubernetes/helm/opsany-base/consul/\n    /bin/cp ../kubernetes/helm/opsany-base/prometheus ${INSTALL_PATH}/kubernetes/helm/opsany-base/\n    /bin/cp ../kubernetes/helm/opsany-base/consul ${INSTALL_PATH}/kubernetes/helm/opsany-base/\n    pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==3.2.2 \\\n             -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n    shell_log \"End: Install Init\"\n}\n\nconsul_install(){\n    shell_log \"Start: Consul Install...\"\n    CONSUL_TOKEN=$(uuid -v4)\n    echo $CONSUL_TOKEN > ${INSTALL_PATH}/conf/.consul_token\n    sed -i \"s#PROM_CONSUL_SERVER#$CONSUL_SERVER_IP#g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/prometheus/prometheus.yml\n    sed -i \"s#CONSUL_TOKEN#$CONSUL_TOKEN#g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/prometheus/prometheus.yml\n    sed -i \"s#CONSUL_TOKEN#$CONSUL_TOKEN#g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/consul/consul.hcl\n    shell_log \"======Consul Token: ${CONSUL_TOKEN}======\"\n}\n\nprometheus_install(){\n    # Prometheus Server Basic Auth\n    PROM_SERVER_HASH=$(python3 ./prom-pass.py $PROM_SERVER_PASSWD)\n    sed -i \"s#PROM_SERVER_HASH#$PROM_SERVER_HASH#g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/prometheus/web.yml\n    sed -i \"s#LOCAL_IP#$PROXY_LOCAL_IP#g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/prometheus/prometheus.yml\n    sed -i \"s#PROM_SERVER_PASSWD#$PROM_SERVER_PASSWD#g\" ${INSTALL_PATH}/kubernetes/helm/opsany-base/prometheus/prometheus.yml\n\n    # Prometheus Release Date: 2022-04-21 https://hub.docker.com/u/prom\n    # Prometheus Node Exporter Release Date: 2021-12-01 https://hub.docker.com/u/prom\n    #shell_log \"======Start Prometheus Node_Exporter======\"\n    #docker run -d --restart=always --name opsany-prometheus-node_exporter \\\n    #-p 9100:9100 \\\n    #-v /etc/localtime:/etc/localtime:ro \\\n    #${PAAS_DOCKER_REG}/node-exporter:v1.3.1\n}\n\n\nprom_init(){\n  # DOMAIN_NAME LOCAL_IP ADMIN_PASSWORD PROM_SERVER_PASSWD CONSUL_TOKEN\n  python3 ../saas/init-ee-prometheus.py --domain $DOMAIN_NAME --local_ip $LOCAL_IP --username admin --password $ADMIN_PASSWORD \\\n  --prom_username  admin --prom_password $PROM_SERVER_PASSWD --consul_token $CONSUL_TOKEN \\\n  --alertmanager_username admin --alertmanager_password $PROM_SERVER_PASSWD\n}\n\n\n# Main\nmain(){\n    case \"$1\" in\n\tinstall)\n            install_check\n            install_init\n            consul_install\n            prometheus_install\n            prom_init\n\t\t;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/prom-pass.py",
    "content": "#!/usr/bin/env python3\n\nimport sys\nimport bcrypt\n\npassword = sys.argv[1]\nhashed_password = bcrypt.hashpw(password.encode(\"utf-8\"), bcrypt.gensalt())\nprint(hashed_password.decode())\n"
  },
  {
    "path": "install/proxy-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Proxy Install Script\n#******************************************\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"proxy-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -f /etc/redhat-release ];then\n      setenforce 0\n    fi\n\nfi\n\n# Install Initialize\ninstall_init(){\n    shell_log \"Start: Install Init\"\n    mkdir -p ${INSTALL_PATH}/{uploads/guacamole,conf,logs/proxy,proxy-volume/certs,proxy-volume/srv/pillar,proxy-volume/srv/salt,proxy-volume/etc,proxy-volume/pki,redis-volume,mysql-volume}\n    cd $CDIR\n    /bin/cp -r ../install/conf ${INSTALL_PATH}/\n    #/bin/cp -r ../install/init ${INSTALL_PATH}/\n\n    ## init for saltstack \n    /bin/cp -a ${CDIR}/../install/conf/salt ${INSTALL_PATH}/proxy-volume/etc/\n    /bin/cp -a ${CDIR}/../install/conf/salt/certs/* ${INSTALL_PATH}/proxy-volume/certs/\n\n    # init for redis\n    /bin/cp ${CDIR}/../install/conf/redis/redis.conf ${INSTALL_PATH}/redis-volume/\n    sed -i \"s/\"REDIS_SERVER_PASSWORD\"/\"${REDIS_SERVER_PASSWORD}\"/g\" ${INSTALL_PATH}/redis-volume/redis.conf\n    shell_log \"End: Install Init\"\n}\n\nbase_install(){\n    # Redis\n    shell_log \"======Start Redis======\"\n    docker run -d --restart=always --name opsany-proxy-redis \\\n    -p 6379:6379 -v ${INSTALL_PATH}/redis-volume:/data \\\n    -v ${INSTALL_PATH}/redis-volume/redis.conf:/data/redis.conf \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/redis:6.2.19-alpine redis-server /data/redis.conf\n    \n    # MySQL\n    shell_log \"======Start MySQL======\"\n    docker run -d --restart=always --name opsany-proxy-mysql \\\n    -e MYSQL_ROOT_PASSWORD=\"$MYSQL_ROOT_PASSWORD\" \\\n    -p 3306:3306 -v ${INSTALL_PATH}/mysql-volume:/var/lib/mysql \\\n    -v ${INSTALL_PATH}/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \\\n    -v ${INSTALL_PATH}/logs:/var/log/mysql \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/mysql:8.0.30 --character-set-server=utf8 --collation-server=utf8_general_ci\n    \n    # Guacd\n    shell_log \"======Start Guacd======\"\n    docker run -d --restart=always --name opsany-proxy-guacd \\\n    -p 4822:4822 \\\n    -v ${INSTALL_PATH}/uploads/guacamole:/srv/guacamole \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/guacd:1.2.0\n}\n\nproxy_config(){\n    shell_log \"======MySQL Initialize======\"\n    sleep 10\n    cd ${CDIR}/../install/\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -e \"CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -e \"CREATE USER opsany@'%' identified by \"\\\"${MYSQL_OPSANY_PASSWORD}\\\"\";\" \n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root  -e \"grant all on opsany_proxy.* to opsany@'%';\"\n\n    shell_log \"======Proxy Configure======\"\n    # Proxy\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    sed -i \"s/CONTROL_SECRET_KEY_PROXY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone\n    \n    # OpenResty\n    sed -i \"s/LOCAL_IP/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf \n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n\n    cd ../saas/\n    cp invscript_proxy.py ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/LOCALHOST/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n}\n\nproxy_start(){\n    # Proxy\n    shell_log \"======Start Proxy======\"\n    docker run --restart=always --name opsany-paas-proxy -d \\\n        -p 4505:4505 -p 4506:4506 -p 8010:8010 \\\n        -v ${INSTALL_PATH}/logs/proxy:/opt/opsany/logs/proxy \\\n        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \\\n        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \\\n        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \\\n        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone:/opt/opsany-proxy/config/prod.py \\\n        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \\\n        -v ${INSTALL_PATH}/conf/proxy/proxy.ini:/etc/supervisord.d/proxy.ini \\\n        -v ${INSTALL_PATH}/conf/proxy/saltmaster.ini:/etc/supervisord.d/saltmaster.ini \\\n        -v ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml:/opt/opsany/alertmanager.yml \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/opsany-paas-proxy:2.3.1\n\n    #openresty\n    shell_log \"======Start openresty Service======\"\n    docker run -d --restart=always --name opsany-proxy-openresty \\\n    -p 8011:443 -p 8012:80 \\\n    -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/proxy/nginx-conf.d:/etc/nginx/conf.d \\\n    -v ${INSTALL_PATH}/conf/proxy/nginx.conf:/etc/nginx/nginx.conf \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/openresty:1.17.8.2-alpine\n\n    # OpsAny Database Init\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py makemigrations && /usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate\"\n\n    # Create Proxy Token\n    PROXY_TOKEN=$(docker exec -e OPS_ANY_ENV=production \\\n            opsany-paas-proxy /bin/sh -c \" /usr/local/bin/python3 /opt/opsany-proxy/manage.py create_access\" | grep 'Access' | awk -F ': ' '{print $2}' | awk -F '.' '{print $1}')\n    shell_error_log \"Proxy Token: ${PROXY_TOKEN}\"\n}\nuninstall_proxy(){\n    # Stop Proxy\n    docker stop opsany-proxy-mysql\n    docker stop opsany-proxy-redis\n    docker stop opsany-proxy-guacd\n    docker stop opsany-proxy-openresty\n    docker stop opsany-proxy\n    docker stop opsany-paas-proxy\n\n    # Remove Proxy\n    docker rm -f opsany-proxy-mysql\n    docker rm -f opsany-proxy-redis\n    docker rm -f opsany-proxy-guacd\n    docker rm -f opsany-proxy-openresty\n    docker rm -f opsany-proxy\n    docker rm -f opsany-paas-proxy\n    # Remove Install Path\n    #rm -rf ${INSTALL_PATH}\n}\n\n\n# Main\nmain(){\n    case \"$1\" in\n\tinstall)\n        install_init\n        base_install\n        proxy_config\n        proxy_start\n\t\t;;\n    uninstall)\n        uninstall_proxy\n        ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|uninstall|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/proxy-uninstall.sh",
    "content": "#!/bin/bash\ngrep '^[A-Z]' install.config > install.env\nsource ./install.env && rm -f install.env\n\nuninstall_proxy(){\n    # Stop Proxy\n    docker stop opsany-proxy-mysql\n    docker stop opsany-proxy-redis\n    docker stop opsany-proxy-guacd\n    docker stop opsany-proxy-openresty\n    docker stop opsany-proxy\n\n    # Remove Proxy\n    docker rm -f opsany-proxy-mysql\n    docker rm -f opsany-proxy-redis\n    docker rm -f opsany-proxy-guacd\n    docker rm -f opsany-proxy-openresty\n    docker rm -f opsany-proxy\n\n    # Remove Install Path\n    #rm -rf ${INSTALL_PATH}\n}\n\n# Main\nmain(){\n    case \"$1\" in\n\tuninstall)\n            uninstall_proxy\n\t\t;;\n\thelp|*)\n\t\techo $\"Usage: $0 {uninstall|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/proxy-update.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Community Edition Proxy Update Script\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"proxy-update.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Update Proxy\nproxy_update(){\n    shell_log \"======Update Proxy======\"\n    UPDATE_VERSION=$1\n    # Proxy config\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    /bin/cp conf/proxy/proxy.ini ${INSTALL_PATH}/conf/proxy/proxy.ini\n    /bin/cp conf/proxy/saltmaster.ini ${INSTALL_PATH}/conf/proxy/saltmaster.ini\n    /bin/cp conf/proxy/settings_production.py.proxy ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/LOCAL_IP/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/RABBIT_SERVER_IP/${RABBIT_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_USER/${RABBITMQ_DEFAULT_USER}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_PASS/${RABBITMQ_DEFAULT_PASS}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/CONTROL_SECRET_KEY_PROXY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    cp ../saas/invscript_proxy.py ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/LOCALHOST/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n\n    # Starter container\n    docker stop opsany-paas-proxy && docker rm opsany-paas-proxy \n    docker pull ${PAAS_DOCKER_REG}/opsany-paas-proxy:${UPDATE_VERSION}\n    mkdir -p ${INSTALL_PATH}/logs/proxy\n    docker run --restart=always --name opsany-paas-proxy -d \\\n        -p 4505:4505 -p 4506:4506 -p 8010:8010 \\\n        -v ${INSTALL_PATH}/logs/proxy:/opt/opsany/logs/proxy \\\n        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \\\n        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \\\n        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \\\n        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \\\n        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \\\n        -v ${INSTALL_PATH}/conf/proxy/proxy.ini:/etc/supervisord.d/proxy.ini \\\n        -v ${INSTALL_PATH}/conf/proxy/saltmaster.ini:/etc/supervisord.d/saltmaster.ini \\\n        -v ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml:/opt/opsany/alertmanager.yml \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/opsany-paas-proxy:${UPDATE_VERSION}\n\n    # OpsAny Database Init\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate >> ${SHELL_LOG}\"\n}\n\n\n# Main\nmain(){\n    UPDATE_VERSION=$2\n    case \"$1\" in\n        proxy)\n            proxy_update $2\n            ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {(proxy|help) version}\"\n\t    ;;\n    esac\n}\n\nmain $1 $2\n"
  },
  {
    "path": "install/reset_admin.sh",
    "content": "#!/bin/bash\n\ndocker exec -it opsany-saas-ce-rbac sh -c \"python /opt/opsany/rbac/rbac/utils/reset_admin_mfa\"\ndocker exec -it opsany-paas-login sh -c \"python /opt/opsany/paas/login/init_admin.py\""
  },
  {
    "path": "install/saas-ce-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Community Edition Install Script\n#******************************************\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"saas-ce-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nSAAS_VERSION=2.3.2\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$(date \"+%Y-%m-%d-%H-%M\") ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"======Error: Please Change Directory to ${INSTALL_PATH}/install======\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\nfi\n\nif [ -f ${INSTALL_PATH}/conf/.passwd_env ];then\n    source ${INSTALL_PATH}/conf/.passwd_env\nelse\n    export ADMIN_PASSWORD=\"admin\"\nfi\n\n# Install initialization\ninstall_init(){\n    #SaaS Log Directory\n    mkdir -p ${INSTALL_PATH}/logs/{rbac,workbench,cmdb,control,job,monitor,cmp,bastion,devops,pipeline,repo,code,deploy,proxy,llmops,opsany-mcp-server}\n}\n\n# Start Proxy\nproxy_install(){\n    cd ${CDIR}\n    # Proxy config\n    CONTROL_SECRET_KEY=$(uuid -v4)\n    echo $CONTROL_SECRET_KEY > ${INSTALL_PATH}/conf/.control_secret_key\n    CONTROL_SECRET_KEY_PROXY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/LOCAL_IP/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    #sed -i \"s/RABBIT_SERVER_IP/${RABBIT_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    #sed -i \"s/RABBITMQ_DEFAULT_USER/${RABBITMQ_DEFAULT_USER}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    #sed -i \"s/RABBITMQ_DEFAULT_PASS/${RABBITMQ_DEFAULT_PASS}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/CONTROL_SECRET_KEY_PROXY/${CONTROL_SECRET_KEY_PROXY}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n\n    # For Ansible\n    cp ../saas/invscript_proxy.py ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/LOCALHOST/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n\n    shell_log \"======Proxy: Start Proxy======\"\n    docker run --restart=always --name opsany-paas-proxy -d \\\n        -p 4505:4505 -p 4506:4506 -p 8010:8010 \\\n        -v ${INSTALL_PATH}/logs/proxy:/opt/opsany/logs/proxy \\\n        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \\\n        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \\\n        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \\\n        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \\\n        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \\\n        -v ${INSTALL_PATH}/conf/proxy/proxy.ini:/etc/supervisord.d/proxy.ini \\\n        -v ${INSTALL_PATH}/conf/proxy/saltmaster.ini:/etc/supervisord.d/saltmaster.ini \\\n        -v ${INSTALL_PATH}/prometheus-volume/conf/alertmanager.yml:/opt/opsany/alertmanager.yml \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/opsany-paas-proxy:${SAAS_VERSION}\n\n    # OpsAny Database Init\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate --noinput\" >> ${SHELL_LOG} 2>&1\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py create_superuser --username=opsany --email=proxy@example.com --password=$MYSQL_OPSANY_PASSWORD\"\n}\n\n# MonogDB Initialize\nmongodb_init(){\n    shell_log \"======MongoDB: MongoDB Initialize======\"\n    cd ${CDIR}\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_AUTO_PASSWORD/${MONGO_AUTO_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_EVENT_PASSWORD/${MONGO_EVENT_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_PROM_PASSWORD/${MONGO_PROM_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_KBASE_PASSWORD/${MONGO_KBASE_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n    sed -i \"s/MONGO_LLMOPS_PASSWORD/${MONGO_LLMOPS_PASSWORD}/g\" ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js\n\n    docker cp ${INSTALL_PATH}/init/mongodb-init/mongodb_init.js opsany-base-mongodb:/opt/\n    docker exec -e MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME \\\n                -e MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD \\\n                opsany-base-mongodb /bin/bash -c \"/usr/bin/mongo -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD /opt/mongodb_init.js\" >> ${SHELL_LOG} 2>&1\n    shell_log \"======MongoDB: MongoDB Initialize End======\"\n}\n\n# SaaS Deploy\n\nsaas_rbac_deploy(){\n    shell_log \"======RBAC: Start RBAC======\"\n    cd ${CDIR}\n    # Database \n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database rbac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'rbac'@'%' identified by \"\\\"${MYSQL_OPSANY_RBAC_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on rbac.* to rbac@'%';\"\n\n    # Register rbac\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code rbac --saas_app_name 统一权限 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${RBAC_SECRET_KEY}\"\n\n    #python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code rbac --saas_app_name 统一权限 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${RBAC_SECRET_KEY}\n\n    # Modify configuration\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_OPSANY_RBAC_PASSWORD/${MYSQL_OPSANY_RBAC_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-rbac:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-rbac \\\n       -p 7001:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-supervisor.ini:/etc/supervisord.d/rbac.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-uwsgi.ini:/opt/opsany/uwsgi/rbac.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py:/opt/opsany/rbac/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py:/opt/opsany/rbac/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/rbac:/opt/opsany/logs/rbac \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-rbac:${SAAS_VERSION}\n\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-rbac /bin/sh -c \\\n    \"python /opt/opsany/rbac/manage.py migrate --noinput && python /opt/opsany/rbac/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_workbench_deploy(){\n    shell_log \"======Workbench: Start workbench======\"\n    cd ${CDIR}\n    #workbench\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database workbench DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'workbench'@'%' IDENTIFIED BY \"\\\"${MYSQL_OPSANY_WORKBENCH_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on workbench.* to workbench@'%';\"\n\n    # Register workbench\n    if [ -f ${INSTALL_PATH}/conf/.workbench_secret_key ];then\n        WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    else\n        WORKBENCH_SECRET_KEY=$(uuid -v4)\n        echo $WORKBENCH_SECRET_KEY > ${INSTALL_PATH}/conf/.workbench_secret_key\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code workbench --saas_app_name 工作台 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${WORKBENCH_SECRET_KEY}\"\n\n    # Modify configuration\n    WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/WORKBENCH_SECRET_KEY/${WORKBENCH_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_OPSANY_WORKBENCH_PASSWORD/${MYSQL_OPSANY_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-workbench:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-workbench \\\n       -p 7002:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-supervisor.ini:/etc/supervisord.d/workbench.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-uwsgi.ini:/opt/opsany/uwsgi/workbench.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py:/opt/opsany/workbench/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py:/opt/opsany/workbench/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/workbench:/opt/opsany/logs/workbench \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-workbench:${SAAS_VERSION}\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-workbench /bin/sh -c \\\n    \"python /opt/opsany/workbench/manage.py migrate --noinput && python /opt/opsany/workbench/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_cmdb_deploy(){\n    shell_log \"======CMDB: Start cmdb======\"\n    cd ${CDIR}\n    #cmdb\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database cmdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'cmdb'@'%' IDENTIFIED BY \"\\\"${MYSQL_OPSANY_CMDB_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on cmdb.* to cmdb@'%';\"\n\n    # Register cmdb\n    if [ -f ${INSTALL_PATH}/conf/.cmdb_secret_key ];then\n        CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    else\n        CMDB_SECRET_KEY=$(uuid -v4)\n        echo $CMDB_SECRET_KEY > ${INSTALL_PATH}/conf/.cmdb_secret_key\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code cmdb --saas_app_name 资源平台 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${CMDB_SECRET_KEY}\"\n\n    # Modify configuration\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMDB_PASSWORD/${MYSQL_OPSANY_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-cmdb:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-cmdb \\\n       -p 7003:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-supervisor.ini:/etc/supervisord.d/cmdb.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-uwsgi.ini:/opt/opsany/uwsgi/cmdb.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py:/opt/opsany/cmdb/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py:/opt/opsany/cmdb/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/cmdb:/opt/opsany/logs/cmdb \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-cmdb:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-cmdb /bin/sh -c \\\n    \"python /opt/opsany/cmdb/manage.py migrate --noinput && python /opt/opsany/cmdb/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_control_deploy(){\n    shell_log \"======Control: Start control======\"\n    cd ${CDIR}\n    #control\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database control DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'control'@'%' identified by \"\\\"${MYSQL_OPSANY_CONTROL_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on control.* to control@'%';\"\n    \n    # Register control\n    if [ -f ${INSTALL_PATH}/conf/.control_secret_key ];then\n        CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    else\n        CONTROL_SECRET_KEY=$(uuid -v4)\n        echo $CONTROL_SECRET_KEY > ${INSTALL_PATH}/conf/.control_secret_key\n    fi \n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code control --saas_app_name 管控平台 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${CONTROL_SECRET_KEY}\"\n\n    # Modify configuration\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_OPSANY_CONTROL_PASSWORD/${MYSQL_OPSANY_CONTROL_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-control:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-control \\\n       -p 7004:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-supervisor.ini:/etc/supervisord.d/control.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-uwsgi.ini:/opt/opsany/uwsgi/control.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py:/opt/opsany/control/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py:/opt/opsany/control/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-control:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-control /bin/sh -c \\\n    \"python /opt/opsany/control/manage.py migrate --noinput && python /opt/opsany/control/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_job_deploy(){\n    shell_log \"======Job: Start job======\"\n    cd ${CDIR}\n    #job\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database job DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'job'@'%' identified by \"\\\"${MYSQL_OPSANY_JOB_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on job.* to job@'%';\"\n\n    # Register job\n    if [ -f ${INSTALL_PATH}/conf/.job_secret_key ];then\n        JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    else\n        JOB_SECRET_KEY=$(uuid -v4)\n        echo $JOB_SECRET_KEY > ${INSTALL_PATH}/conf/.job_secret_key\n    fi \n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code job --saas_app_name 作业平台 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${JOB_SECRET_KEY}\"\n\n    # Modify configuration\n    JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/JOB_SECRET_KEY/${JOB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_OPSANY_JOB_PASSWORD/${MYSQL_OPSANY_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-job:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-job \\\n       -p 7005:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-supervisor.ini:/etc/supervisord.d/job.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-uwsgi.ini:/opt/opsany/uwsgi/job.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py:/opt/opsany/job/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py:/opt/opsany/job/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/job:/opt/opsany/logs/job \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-job:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-job /bin/sh -c \\\n    \"python /opt/opsany/job/manage.py migrate --noinput && python /opt/opsany/job/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_monitor_deploy(){\n    cd ${CDIR}\n    # Grafana\n    shell_log \"======Grafana: Start Grafana======\"\n    docker run -d --restart=always --name opsany-base-grafana --user root \\\n    -v ${INSTALL_PATH}/conf/grafana/grafana.ini:/etc/grafana/grafana.ini \\\n    -v ${INSTALL_PATH}/conf/grafana/grafana.key:/etc/grafana/grafana.key \\\n    -v ${INSTALL_PATH}/conf/grafana/grafana.pem:/etc/grafana/grafana.pem \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    -v ${INSTALL_PATH}/grafana-volume/data:/var/lib/grafana \\\n    -p 8007:3000 \\\n    ${PAAS_DOCKER_REG}/opsany-grafana:9.0.3\n\n    shell_log \"======Monitor: Start monitor======\"\n    #monitor\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database monitor DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'monitor'@'%' identified by \"\\\"${MYSQL_OPSANY_MONITOR_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on monitor.* to monitor@'%';\" \n\n    # Register monitor\n    if [ -f ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    \n    if [ -f ${INSTALL_PATH}/conf/.monitor_secret_key ];then\n        MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    else\n        MONITOR_SECRET_KEY=$(uuid -v4)\n        echo $MONITOR_SECRET_KEY > ${INSTALL_PATH}/conf/.monitor_secret_key\n    fi \n\n    # Modify configuration\n    MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MONITOR_SECRET_KEY/${MONITOR_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_OPSANY_MONITOR_PASSWORD/${MYSQL_OPSANY_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-monitor:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-monitor \\\n       -p 7006:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-supervisor.ini:/etc/supervisord.d/monitor.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-uwsgi.ini:/opt/opsany/uwsgi/monitor.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py:/opt/opsany/monitor/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py:/opt/opsany/monitor/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/monitor:/opt/opsany/logs/monitor \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-monitor:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-monitor /bin/sh -c \\\n    \"python /opt/opsany/monitor/manage.py migrate --noinput && python /opt/opsany/monitor/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n    sleep 5\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code monitor --saas_app_name 基础监控 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${MONITOR_SECRET_KEY}\"\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code monitor\"\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init-ce-monitor.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password ${ADMIN_PASSWORD} --grafana_password admin --grafana_change_password $GRAFANA_ADMIN_PASSWORD\"\n\n    # Install Grafana Zabbix Plugin\n    ZABBIX_GRAFANE_PLUGIN_NAME=\"alexanderzobnin-zabbix-app-4.3.1.zip\"\n    if [ -f \"/tmp/${ZABBIX_GRAFANE_PLUGIN_NAME}\" ]; then\n        cd /tmp && unzip -oq ${ZABBIX_GRAFANE_PLUGIN_NAME}\n        docker cp /tmp/alexanderzobnin-zabbix-app opsany-base-grafana:/var/lib/grafana/plugins/\n        docker restart opsany-base-grafana\n    else\n        cd /tmp && wget https://opsany.oss-cn-beijing.aliyuncs.com/${ZABBIX_GRAFANE_PLUGIN_NAME}\n        unzip -oq ${ZABBIX_GRAFANE_PLUGIN_NAME}\n        docker cp /tmp/alexanderzobnin-zabbix-app opsany-base-grafana:/var/lib/grafana/plugins/\n        docker restart opsany-base-grafana\n    fi\n}\n\nsaas_cmp_deploy(){\n    shell_log \"======CMP: Start cmp======\"\n    cd ${CDIR}\n    #cmp\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database cmp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'cmp'@'%' identified by \"\\\"${MYSQL_OPSANY_CMP_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on cmp.* to cmp@'%';\" \n\n    # Register cmp\n    if [ -f ${INSTALL_PATH}/conf/.cmp_secret_key ];then\n        CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    else\n        CMP_SECRET_KEY=$(uuid -v4)\n        echo $CMP_SECRET_KEY > ${INSTALL_PATH}/conf/.cmp_secret_key\n    fi \n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code cmp --saas_app_name 云管平台 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${CMP_SECRET_KEY}\"\n\n    #CMP Configure\n    CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/CMP_SECRET_KEY/${CMP_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMP_PASSWORD/${MYSQL_OPSANY_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-cmp:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-cmp \\\n       -p 7007:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-supervisor.ini:/etc/supervisord.d/cmp.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-uwsgi.ini:/opt/opsany/uwsgi/cmp.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py:/opt/opsany/cmp/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py:/opt/opsany/cmp/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/cmp:/opt/opsany/logs/cmp \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-cmp:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-cmp /bin/sh -c \\\n    \"python /opt/opsany/cmp/manage.py migrate --noinput && python /opt/opsany/cmp/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_bastion_deploy(){\n    shell_log \"======Bastion: Start bastion======\"\n    cd ${CDIR}\n    #bastion\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database bastion DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'bastion'@'%' identified by \"\\\"${MYSQL_OPSANY_BASTION_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on bastion.* to bastion@'%';\" \n\n    # Register bastion\n    if [ -f ${INSTALL_PATH}/conf/.bastion_secret_key ];then\n        BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    else\n        BASTION_SECRET_KEY=$(uuid -v4)\n        echo $BASTION_SECRET_KEY > ${INSTALL_PATH}/conf/.bastion_secret_key\n    fi \n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code bastion --saas_app_name 堡垒机 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${BASTION_SECRET_KEY}\"\n\n    # Bastion Configure\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_OPSANY_BASTION_PASSWORD/${MYSQL_OPSANY_BASTION_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/BASTION_FOOT_CLIENT_IP/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/BASTION_FOOT_CLIENT_PORT/8013/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-bastion:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-bastion \\\n       -p 7008:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-supervisor.ini:/etc/supervisord.d/bastion.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-uwsgi.ini:/opt/opsany/uwsgi/bastion.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py:/opt/opsany/bastion/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py:/opt/opsany/bastion/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-bastion:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-bastion /bin/sh -c \\\n    \"python /opt/opsany/bastion/manage.py migrate --noinput && python /opt/opsany/bastion/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_devops_deploy(){\n    shell_log \"======DevOps: Start devops======\"\n    cd ${CDIR}\n    #DevOps MySQL\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database devops DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'devops'@'%' identified by \"\\\"${MYSQL_OPSANY_DEVOPS_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on devops.* to devops@'%';\" \n\n    # Register devops\n    if [ -f ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    if [ -f ${INSTALL_PATH}/conf/.devops_secret_key ];then\n        DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    else\n        DEVOPS_SECRET_KEY=$(uuid -v4)\n        echo $DEVOPS_SECRET_KEY > ${INSTALL_PATH}/conf/.devops_secret_key\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code devops --saas_app_name 应用平台 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${DEVOPS_SECRET_KEY}\"\n\n    # DevOps Configure\n    DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    /bin/cp conf/opsany-saas/devops/* ${INSTALL_PATH}/conf/opsany-saas/devops/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/DEVOPS_SECRET_KEY/${DEVOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEVOPS_PASSWORD/${MYSQL_OPSANY_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-devops:${SAAS_VERSION}\n    # Starter container   \n    docker run -d --restart=always --name opsany-saas-ce-devops \\\n       -p 7009:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-supervisor.ini:/etc/supervisord.d/devops.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-uwsgi.ini:/opt/opsany/uwsgi/devops.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py:/opt/opsany/devops/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py:/opt/opsany/devops/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-devops:${SAAS_VERSION}\n    \n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code cmdb\"\n        # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-devops /bin/sh -c \\\n    \"python /opt/opsany/devops/manage.py migrate --noinput && python /opt/opsany/devops/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n    sleep 5\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code devops\"\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init-ce-devops.py --domain https://${DOMAIN_NAME} --username admin  --password $ADMIN_PASSWORD\"\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init_cmdb_app_to_devops.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD}\"\n}\n\nsaas_repo_deploy(){\n    shell_log \"======REPO: Start repo======\"\n    cd ${CDIR}\n    #repo mysql\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database repo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'repo'@'%' identified by \"\\\"${MYSQL_OPSANY_REPO_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on repo.* to repo@'%';\" \n\n    # Register repo\n    if [ -f ${INSTALL_PATH}/conf/.repo_secret_key ];then\n        REPO_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.repo_secret_key)\n    else\n        REPO_SECRET_KEY=$(uuid -v4)\n        echo $REPO_SECRET_KEY > ${INSTALL_PATH}/conf/.repo_secret_key\n    fi\n\n    if [ -f  ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code repo --saas_app_name 制品仓库 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${REPO_SECRET_KEY}\"\n\n    # repo Configure\n    if [ -d ${INSTALL_PATH}/conf/opsany-saas/repo ];then\n        /bin/cp -r ./conf/opsany-saas/repo/* ${INSTALL_PATH}/conf/opsany-saas/repo/\n    else\n        /bin/cp -r ./conf/opsany-saas/repo ${INSTALL_PATH}/conf/opsany-saas/\n    fi\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/REPO_SECRET_KEY/${REPO_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_OPSANY_REPO_PASSWORD/${MYSQL_OPSANY_REPO_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s#REPO_HARBOR_URL#${REPO_HARBOR_URL}#g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REPO_HARBOR_USERNAME/${REPO_HARBOR_USERNAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REPO_HARBOR_PASSWORD/${REPO_HARBOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-repo:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-repo \\\n       -p 7020:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-supervisor.ini:/etc/supervisord.d/repo.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-uwsgi.ini:/opt/opsany/uwsgi/repo.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py:/opt/opsany/repo/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py:/opt/opsany/repo/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/repo/repo-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-repo:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-repo /bin/sh -c \\\n    \"python /opt/opsany/repo/manage.py migrate --noinput && python /opt/opsany/repo/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_pipeline_deploy(){\n    shell_log \"======Pipeline: Start pipeline======\"\n    cd ${CDIR}\n    #pipeline mysql\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database pipeline DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'pipeline'@'%' identified by \"\\\"${MYSQL_OPSANY_PIPELINE_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on pipeline.* to pipeline@'%';\" \n\n    # Register pipeline\n    if [ -f ${INSTALL_PATH}/conf/.pipeline_secret_key ];then\n        PIPELINE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.pipeline_secret_key)\n    else\n        PIPELINE_SECRET_KEY=$(uuid -v4)\n        echo $PIPELINE_SECRET_KEY > ${INSTALL_PATH}/conf/.pipeline_secret_key\n    fi\n\n    if [ -f  ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code pipeline --saas_app_name 流水线 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${PIPELINE_SECRET_KEY}\"\n\n    # Modify configuration\n    if [ -d ${INSTALL_PATH}/conf/opsany-saas/pipeline ];then\n        /bin/cp -r ./conf/opsany-saas/pipeline/* ${INSTALL_PATH}/conf/opsany-saas/pipeline/\n    else\n        /bin/cp -r ./conf/opsany-saas/pipeline ${INSTALL_PATH}/conf/opsany-saas/\n    fi\n    PIPELINE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.pipeline_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PIPELINE_SECRET_KEY/${PIPELINE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_OPSANY_PIPELINE_PASSWORD/${MYSQL_OPSANY_PIPELINE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-pipeline:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-pipeline \\\n       -p 7017:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-supervisor.ini:/etc/supervisord.d/pipeline.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-uwsgi.ini:/opt/opsany/uwsgi/pipeline.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py:/opt/opsany/pipeline/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py:/opt/opsany/pipeline/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/pipeline:/opt/opsany/logs/pipeline \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-pipeline:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-pipeline /bin/sh -c \\\n    \"python /opt/opsany/pipeline/manage.py migrate --noinput && python /opt/opsany/pipeline/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_deploy_deploy(){\n    shell_log \"======Deploy: Start deploy======\"\n    cd ${CDIR}\n    #deploy\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database deploy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'deploy'@'%' identified by \"\\\"${MYSQL_OPSANY_DEPLOY_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on deploy.* to deploy@'%';\" \n\n    # Register deploy\n    if [ -f ${INSTALL_PATH}/conf/.deploy_secret_key ];then\n        DEPLOY_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.deploy_secret_key)\n    else\n        DEPLOY_SECRET_KEY=$(uuid -v4)\n        echo $DEPLOY_SECRET_KEY > ${INSTALL_PATH}/conf/.deploy_secret_key\n    fi\n\n    if [ -f  ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code deploy --saas_app_name 持续部署 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${DEPLOY_SECRET_KEY}\"\n\n    # Modify configuration\n    if [ -d ${INSTALL_PATH}/conf/opsany-saas/deploy ];then\n        /bin/cp -r ./conf/opsany-saas/deploy/* ${INSTALL_PATH}/conf/opsany-saas/deploy/\n    else\n        /bin/cp -r ./conf/opsany-saas/deploy ${INSTALL_PATH}/conf/opsany-saas/\n    fi\n    DEPLOY_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.deploy_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/DEPLOY_SECRET_KEY/${DEPLOY_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEPLOY_PASSWORD/${MYSQL_OPSANY_DEPLOY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-deploy:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-deploy \\\n       -p 7018:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-supervisor.ini:/etc/supervisord.d/deploy.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-uwsgi.ini:/opt/opsany/uwsgi/deploy.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py:/opt/opsany/deploy/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py:/opt/opsany/deploy/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/deploy:/opt/opsany/logs/deploy \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-deploy:${SAAS_VERSION}\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-deploy /bin/sh -c \\\n    \"python /opt/opsany/deploy/manage.py migrate --noinput && python /opt/opsany/deploy/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n}\n\nsaas_code_deploy(){\n    shell_log \"======Code: Start Code======\"\n    cd ${CDIR}\n    #Code\n    export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"create database code DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"CREATE USER 'code'@'%' identified by \"\\\"${MYSQL_OPSANY_CODE_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -P ${MYSQL_SERVER_PORT} -u root -e \"grant all on code.* to code@'%';\" \n\n    # Register Code\n    if [ -f ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n\n    if [ -f ${INSTALL_PATH}/conf/.code_secret_key ];then\n        CODE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.code_secret_key)\n    else\n        CODE_SECRET_KEY=$(uuid -v4)\n        echo $CODE_SECRET_KEY > ${INSTALL_PATH}/conf/.code_secret_key\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code code --saas_app_name 代码仓库 --saas_app_version ${SAAS_VERSION} --saas_app_secret_key ${CODE_SECRET_KEY}\"\n\n    # Code Configure\n    CODE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.code_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/PAAS_LOGIN_IP/${PAAS_LOGIN_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/PAAS_ESB_IP/${PAAS_ESB_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/CODE_SECRET_KEY/${CODE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_OPSANY_CODE_PASSWORD/${MYSQL_OPSANY_CODE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-code:${SAAS_VERSION}\n    # Starter container\n    docker run -d --restart=always --name opsany-saas-ce-code \\\n       -p 7010:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-supervisor.ini:/etc/supervisord.d/code.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-uwsgi.ini:/opt/opsany/uwsgi/code.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py:/opt/opsany/code/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py:/opt/opsany/code/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/code/code-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-code:${SAAS_VERSION}\n\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-code /bin/sh -c \\\n    \"python /opt/opsany/code/manage.py migrate --noinput && python /opt/opsany/code/manage.py createcachetable django_cache > /dev/null\" >> ${SHELL_LOG}\n    \n}\n\nsaas_mcp_deploy(){\n    shell_log \"======Code: Start OpsAny MCP Server======\"\n    cd ${CDIR}\n    # MCP Configure\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    if [ -f ${INSTALL_PATH}/conf/.mcp_auth_token ];then\n        MCP_AUTH_TOKEN=$(cat ${INSTALL_PATH}/conf/.mcp_auth_token)\n    else\n        MCP_AUTH_TOKEN=$(uuid -v4)\n        echo $MCP_AUTH_TOKEN > ${INSTALL_PATH}/conf/.mcp_auth_token\n    fi\n    sed -i \"s/MCP_AUTH_TOKEN/${MCP_AUTH_TOKEN}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml\n    \n    # Starter container\n    docker run -d --restart=always --name opsany-paas-mcp-server \\\n       -p 8020:8020 \\\n       -v ${INSTALL_PATH}/conf/opsany-paas/mcp-server/config.yaml:/opt/opsany/opsany-mcp-server/config/config.yaml \\\n       -v ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp-supervisor.ini:/etc/supervisord.d/mcp.ini \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-paas-mcp-server:${SAAS_VERSION}\n}\n\nzabbix_install(){\n   shell_log \"=====Start Zabbix Server 7.0 LTS======\"\n   mkdir -p ${INSTALL_PATH}/{zabbix-volume/alertscripts,zabbix-volume/externalscripts,zabbix-volume/snmptraps}\n   docker run --restart=always --name opsany-zabbix-server-7.0.3 -t \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3306\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -p 10051:10051 \\\n     -v ${INSTALL_PATH}/zabbix-volume/alertscripts:/usr/lib/zabbix/alertscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/externalscripts:/usr/lib/zabbix/externalscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/snmptraps:/var/lib/zabbix/snmptraps \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-server-mysql:7.0.3-ubuntu\n\n   sleep 15\n   shell_log \"=====Start Zabbix Web 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-web-7.0.3 -t \\\n     -e ZBX_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3306\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -e PHP_TZ=\"Asia/Shanghai\" \\\n     -e ZBX_SERVER_NAME=\"opsany-server\" \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -p 8006:8080 \\\n     -d ${PAAS_DOCKER_REG}/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\n    shell_log \"=====Start Zabbix Agent2 7.0 LTS======\"\n    docker run --restart=always --name opsany-zabbix-agent2 -t \\\n     -e ZBX_HOSTNAME=\"opsany-server\" \\\n     -e ZBX_SERVER_HOST=\"${LOCAL_IP}\" \\\n     -e ZBX_ACTIVE_ALLOW=true \\\n     -e ZBX_PASSIVE_ALLOW=false \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-agent2:7.0.3-ubuntu\n}\n\nzabbix_auto(){\n    shell_log \"=====Zabbix Automatic Integration======\"\n    cd ${CDIR}\n    if [ -f ${INSTALL_PATH}/conf/.passwd_env ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init-ce-monitor-zabbix.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password $ADMIN_PASSWORD --zabbix_ip $LOCAL_IP --zabbix_password zabbix --grafana_ip $LOCAL_IP --grafana_password $GRAFANA_ADMIN_PASSWORD --zabbix_api_password ${ZABBIX_API_PASSWORD}  --modify_zabbix_password ${ZABBIX_ADMIN_PASSWORD} --zabbix_version 7.0\"\n}\n    \nsaas_base_init(){\n    shell_log \"======Init: OpsAny User Initialize======\"\n    cd ${CDIR}\n    # Sync User\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code workbench cmdb control job cmp bastion\"\n\n    shell_log \"======Init: OpsAny Workbench Initialize======\"\n    # Create Service\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init_work_order.py --domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD}\"\n\n    shell_log \"======Init: OpsAny Proxy Initialize======\"\n    # Create Proxy Token\n    PROXY_TOKEN=$(docker exec -e OPS_ANY_ENV=production \\\n            opsany-paas-proxy /bin/sh -c \" /usr/local/bin/python3 /opt/opsany-proxy/manage.py create_access\" | grep 'Access' | awk -F ': ' '{print $2}' | awk -F '.' '{print $1}')  >> ${SHELL_LOG} 2>&1\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init-ce-base.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password ${ADMIN_PASSWORD} --proxy_url https://${PROXY_LOCAL_IP}:8011 --proxy_public_url https://${PROXY_PUBLIC_IP}:8011 --proxy_token $PROXY_TOKEN >> ${SHELL_LOG} 2>&1\"\n\n    shell_log \"======Init: OpsAny Job Initialize======\"\n    # Init Script Job\n    cd $CDIR/init/\n    docker exec opsany-paas-websocket /bin/sh -c \"cd /opt/opsany/init/ && python3 import_script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --target_type script --target_path ./job-script >> ${SHELL_LOG} 2>&1\"\n    docker exec opsany-paas-websocket /bin/sh -c \"cd /opt/opsany/init/ && python3 import_script.py --domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD} --target_type task --target_path ./job-task >> ${SHELL_LOG} 2>&1\"\n\n    shell_log \"======Init: OpsAny Dashboard Initialize======\"\n    # Init Script Job\n    cd $CDIR/init/\n    docker exec opsany-paas-websocket /bin/sh -c \"cd /opt/opsany/init/ && python3 init_dashboard.py --grafana_url https://${DOMAIN_NAME}/grafana/ --grafana_username admin --grafana_password $GRAFANA_ADMIN_PASSWORD\"\n\n    shell_log \"======Init: Download Agent Package======\"\n    cd $INSTALL_PATH/uploads/\n    wget https://opsany.oss-cn-beijing.aliyuncs.com/opsany-agent-v2.3.1.tar.gz\n    tar zxf opsany-agent-v2.3.1.tar.gz\n}\n\nadmin_password_init(){\n    shell_warning_log \"======OpsAny: Make Ops Perfect======\" \n    PRESTR='Ops'\n    STR=`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 5`\n    NUM=`echo $RANDOM`\n    ADMIN_NEW_PASSWORD=$PRESTR$STR$NUM\n    echo \"ADMIN_PASSWORD=$ADMIN_NEW_PASSWORD\" > ${INSTALL_PATH}/conf/.passwd_env\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/password-init.py --paas_domain https://$DOMAIN_NAME --username admin --password ${ADMIN_PASSWORD} --new_password $ADMIN_NEW_PASSWORD\"\n    shell_error_log \"Web: https://$DOMAIN_NAME Username: admin Password: $ADMIN_NEW_PASSWORD\"\n}\n\nmcp_json(){\n    cd ${CDIR}\n    MCP_AUTH_TOKEN=$(cat ${INSTALL_PATH}/conf/.mcp_auth_token)\n    /bin/cp conf/opsany-paas/mcp-server/mcp.json ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n    sed -i \"s/MCP_AUTH_TOKEN/${MCP_AUTH_TOKEN}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n    shell_warning_log \"======OpsAny: MCP Server Config JSON======\"\n    cat ${INSTALL_PATH}/conf/opsany-paas/mcp-server/mcp.json\n}\n\n# Main\nmain(){\n    case \"$1\" in\n      base)\n        install_init\n        mongodb_init\n        proxy_install\n        #zabbix_install\n        saas_rbac_deploy\n        saas_workbench_deploy\n        saas_cmdb_deploy\n        saas_control_deploy\n        saas_job_deploy\n        saas_cmp_deploy\n        saas_bastion_deploy\n        saas_monitor_deploy\n        saas_mcp_deploy\n        saas_base_init\n        mcp_json\n        admin_password_init\n        ;;\n      ops)\n        install_init\n        mongodb_init\n        proxy_install\n        zabbix_install\n        saas_rbac_deploy\n        saas_workbench_deploy\n        saas_cmdb_deploy\n        saas_control_deploy\n        saas_job_deploy\n\t    saas_cmp_deploy\n        saas_monitor_deploy\n\t    saas_bastion_deploy\n        saas_mcp_deploy\n        saas_base_init\n        zabbix_auto\n        mcp_json\n        admin_password_init\n        ;;\n      zabbix_install)\n        zabbix_install\n        ;;\n      zabbix_add)\n        zabbix_auto\n        ;;\n      monitor)\n        zabbix_install\n        saas_monitor_deploy\n        zabbix_auto\n        ;;\n      repo)\n        saas_repo_deploy\n        ;;\n      llmops)\n        saas_llmops_deploy\n        ;;\n      code)\n        saas_code_deploy\n        ;;\n      pipeline)\n        saas_pipeline_deploy\n        ;;\n      deploy)\n        saas_deploy_deploy\n        ;;\n      devops)\n        saas_devops_deploy\n        saas_pipeline_deploy\n        saas_deploy_deploy\n        saas_repo_deploy\n        #saas_code_deploy\n\t    ;;\n      dev)\n        saas_devops_deploy\n        saas_pipeline_deploy\n        saas_deploy_deploy\n        saas_repo_deploy\n        #saas_code_deploy\n        ;;\n      all)\n        install_init\n        mongodb_init\n        proxy_install\n        saas_rbac_deploy\n        saas_workbench_deploy\n        saas_cmdb_deploy\n        saas_control_deploy\n        zabbix_install\n        saas_job_deploy\n        saas_monitor_deploy\n        saas_cmp_deploy\n        saas_bastion_deploy\n        saas_mcp_deploy\n        saas_base_init\n        zabbix_auto\n        #saas_code_deploy\n        saas_devops_deploy\n        saas_pipeline_deploy\n        saas_deploy_deploy\n        saas_repo_deploy\n        mcp_json\n        admin_password_init\n        ;;\n      mcp)\n        mcp_json\n        ;;\n      help|*)\n\t    echo $\"Usage: $0 {base|ops|dev|all|help|zabbix_install|zabbix_add|mcp}\"\n\t    ;;\n    esac\n}\n\nmain $1 \n"
  },
  {
    "path": "install/saas-ce-k8s-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Community Edition Install Script for Kubernetes\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"saas-ce-k8s-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"admin\"\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install-k8s.config ];then\n      shell_error_log \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install-k8s.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Install initialization\ninstall_init(){\n    #SaaS Log Directory\n    mkdir -p /data/k8s-nfs/opsany-logs/{rbac,workbench,cmdb,control,job,monitor,cmp,bastion,code,devops,pipeline,repo,deploy,llmops}\n\n    # Register rbac\n    if [ -f ${INSTALL_PATH}/conf/.rbac_secret_key ];then\n        RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    else\n        RBAC_SECRET_KEY=$(uuid -v4)\n        echo $RBAC_SECRET_KEY > ${INSTALL_PATH}/conf/.rbac_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code rbac --saas_app_name 统一权限 --saas_app_version 2.2.1 --saas_app_secret_key ${RBAC_SECRET_KEY}\n\n    # Register workbench\n    if [ -f ${INSTALL_PATH}/conf/.workbench_secret_key ];then\n        WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    else\n        WORKBENCH_SECRET_KEY=$(uuid -v4)\n        echo $WORKBENCH_SECRET_KEY > ${INSTALL_PATH}/conf/.workbench_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code workbench --saas_app_name 工作台 --saas_app_version 2.2.1 --saas_app_secret_key ${WORKBENCH_SECRET_KEY}\n\n    # Register cmdb\n    if [ -f ${INSTALL_PATH}/conf/.cmdb_secret_key ];then\n        CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    else\n        CMDB_SECRET_KEY=$(uuid -v4)\n        echo $CMDB_SECRET_KEY > ${INSTALL_PATH}/conf/.cmdb_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code cmdb --saas_app_name 资源平台 --saas_app_version 2.2.1 --saas_app_secret_key ${CMDB_SECRET_KEY}\n\n    # Register control\n    if [ -f ${INSTALL_PATH}/conf/.control_secret_key ];then\n        CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    else\n        CONTROL_SECRET_KEY=$(uuid -v4)\n        echo $CONTROL_SECRET_KEY > ${INSTALL_PATH}/conf/.control_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code control --saas_app_name 管控平台 --saas_app_version 2.2.1 --saas_app_secret_key ${CONTROL_SECRET_KEY}\n    \n    # Register job\n    if [ -f ${INSTALL_PATH}/conf/.job_secret_key ];then\n        JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    else\n        JOB_SECRET_KEY=$(uuid -v4)\n        echo $JOB_SECRET_KEY > ${INSTALL_PATH}/conf/.job_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code job --saas_app_name 作业平台 --saas_app_version 2.2.1 --saas_app_secret_key ${JOB_SECRET_KEY}\n\n    # Register monitor\n    if [ -f ${INSTALL_PATH}/conf/.monitor_secret_key ];then\n        MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    else\n        MONITOR_SECRET_KEY=$(uuid -v4)\n        echo $MONITOR_SECRET_KEY > ${INSTALL_PATH}/conf/.monitor_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code monitor --saas_app_name 基础监控 --saas_app_version 2.2.1 --saas_app_secret_key ${MONITOR_SECRET_KEY}\n\n    # Register cmp\n    if [ -f ${INSTALL_PATH}/conf/.cmp_secret_key ];then\n        CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    else\n        CMP_SECRET_KEY=$(uuid -v4)\n        echo $CMP_SECRET_KEY > ${INSTALL_PATH}/conf/.cmp_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code cmp --saas_app_name 云管平台 --saas_app_version 2.2.1 --saas_app_secret_key ${CMP_SECRET_KEY}\n\n    # Register bastion\n    if [ -f ${INSTALL_PATH}/conf/.bastion_secret_key ];then\n        BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    else\n        BASTION_SECRET_KEY=$(uuid -v4)\n        echo $BASTION_SECRET_KEY > ${INSTALL_PATH}/conf/.bastion_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code bastion --saas_app_name 堡垒机 --saas_app_version 2.2.1 --saas_app_secret_key ${BASTION_SECRET_KEY}\n\n    # Register devops\n    if [ -f ${INSTALL_PATH}/conf/.devops_secret_key ];then\n        DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    else\n        DEVOPS_SECRET_KEY=$(uuid -v4)\n        echo $DEVOPS_SECRET_KEY > ${INSTALL_PATH}/conf/.devops_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code devops --saas_app_name 应用平台 --saas_app_version 2.2.1 --saas_app_secret_key ${DEVOPS_SECRET_KEY}\n\n    # Register code\n    if [ -f ${INSTALL_PATH}/conf/.code_secret_key ];then\n        CODE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.code_secret_key)\n    else\n        CODE_SECRET_KEY=$(uuid -v4)\n        echo $CODE_SECRET_KEY > ${INSTALL_PATH}/conf/.code_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code code --saas_app_name 代码仓库 --saas_app_version 2.2.1 --saas_app_secret_key ${CODE_SECRET_KEY}\n\n    # Register pipeline\n    if [ -f ${INSTALL_PATH}/conf/.pipeline_secret_key ];then\n        PIPELINE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.pipeline_secret_key)\n    else\n        PIPELINE_SECRET_KEY=$(uuid -v4)\n        echo $PIPELINE_SECRET_KEY > ${INSTALL_PATH}/conf/.pipeline_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code pipeline --saas_app_name 流水线 --saas_app_version 2.2.1 --saas_app_secret_key ${PIPELINE_SECRET_KEY}\n\n    # Register repo\n    if [ -f ${INSTALL_PATH}/conf/.repo_secret_key ];then\n        REPO_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.repo_secret_key)\n    else\n        REPO_SECRET_KEY=$(uuid -v4)\n        echo $REPO_SECRET_KEY > ${INSTALL_PATH}/conf/.repo_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code repo --saas_app_name 制品仓库 --saas_app_version 2.2.1 --saas_app_secret_key ${REPO_SECRET_KEY}\n\n    # Register deploy\n    if [ -f ${INSTALL_PATH}/conf/.deploy_secret_key ];then\n        DEPLOY_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.deploy_secret_key)\n    else\n        DEPLOY_SECRET_KEY=$(uuid -v4)\n        echo $DEPLOY_SECRET_KEY > ${INSTALL_PATH}/conf/.deploy_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code deploy --saas_app_name 持续部署 --saas_app_version 2.2.1 --saas_app_secret_key ${DEPLOY_SECRET_KEY}\n\n    # Register llmops\n    if [ -f ${INSTALL_PATH}/conf/.llmops_secret_key ];then\n        LLMOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.llmops_secret_key)\n    else\n        LLMOPS_SECRET_KEY=$(uuid -v4)\n        echo $LLMOPS_SECRET_KEY > ${INSTALL_PATH}/conf/.llmops_secret_key\n    fi\n    python3 ../saas/register_online_saas.py --paas_domain https://${DOMAIN_NAME} --username admin --password ${ADMIN_PASSWORD} --saas_app_code llmops --saas_app_name 大模型开发平台 --saas_app_version 2.3.0 --saas_app_secret_key ${LLMOPS_SECRET_KEY}\n}\n\n# SaaS Deploy\nsaas_rbac_deploy(){\n    shell_log \"======Config RBAC======\"\n    # Modify configuration\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_OPSANY_RBAC_PASSWORD/${MYSQL_OPSANY_RBAC_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/rbac/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-rbac/\n}\n\nsaas_workbench_deploy(){\n    shell_log \"======Config workbench======\"\n    # Modify configuration\n    WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/WORKBENCH_SECRET_KEY/${WORKBENCH_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_OPSANY_WORKBENCH_PASSWORD/${MYSQL_OPSANY_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/workbench/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-workbench/\n}\n\nsaas_cmdb_deploy(){\n    shell_log \"======Config cmdb======\"\n    # Modify configuration\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMDB_PASSWORD/${MYSQL_OPSANY_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/cmdb/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmdb/\n}\n\nsaas_control_deploy(){\n    shell_log \"======Config control======\"\n    # Modify configuration\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_OPSANY_CONTROL_PASSWORD/${MYSQL_OPSANY_CONTROL_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/control/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-control/\n}\n\nsaas_job_deploy(){\n    shell_log \"======Config job======\"\n\n    # Modify configuration\n    JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/JOB_SECRET_KEY/${JOB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_OPSANY_JOB_PASSWORD/${MYSQL_OPSANY_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/job/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-job/\n}\n\nsaas_monitor_deploy(){\n    shell_log \"======Config monitor======\"\n    # Modify configuration\n    MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MONITOR_SECRET_KEY/${MONITOR_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_OPSANY_MONITOR_PASSWORD/${MYSQL_OPSANY_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/monitor/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-monitor/\n}\n\nsaas_cmp_deploy(){\n    shell_log \"======Config cmp======\"\n    #CMP Configure\n    CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/CMP_SECRET_KEY/${CMP_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMP_PASSWORD/${MYSQL_OPSANY_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/cmp/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-cmp/\n}\n\nsaas_bastion_deploy(){\n    shell_log \"======Config bastion======\"\n    # Register bastion\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    # Bastion Configure\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_OPSANY_BASTION_PASSWORD/${MYSQL_OPSANY_BASTION_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/bastion/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-bastion/\n}\n\nsaas_devops_deploy(){\n    shell_log \"======Config devops======\"\n    #DevOps MySQL\n    # DevOps Configure\n    DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/DEVOPS_SECRET_KEY/${DEVOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEVOPS_PASSWORD/${MYSQL_OPSANY_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/devops/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-devops/\n}\n\nsaas_code_deploy(){\n    shell_log \"======Config code======\"\n    # Code Configure\n    CODE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.code_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/CODE_SECRET_KEY/${CODE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    sed -i \"s/MYSQL_OPSANY_CODE_PASSWORD/${MYSQL_OPSANY_CODE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/code/code-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/code/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-code/\n}\n\nsaas_pipeline_deploy(){\n    shell_log \"======Config pipeline======\"\n    PIPELINE_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.pipeline_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/PIPELINE_SECRET_KEY/${PIPELINE_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MYSQL_OPSANY_PIPELINE_PASSWORD/${MYSQL_OPSANY_PIPELINE_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/pipeline/pipeline-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/pipeline/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-pipeline/\n}\n\nsaas_repo_deploy(){\n    shell_log \"======Config repo======\"\n    REPO_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.repo_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/REPO_SECRET_KEY/${REPO_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MYSQL_OPSANY_REPO_PASSWORD/${MYSQL_OPSANY_REPO_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/repo/repo-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/repo/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-repo/\n}\n\nsaas_deploy_deploy(){\n    shell_log \"======Config deploy======\"\n    DEPLOY_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.deploy_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/DEPLOY_SECRET_KEY/${DEPLOY_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEPLOY_PASSWORD/${MYSQL_OPSANY_DEPLOY_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/deploy/deploy-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/deploy/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-deploy/\n}\n\nsaas_llmops_deploy(){\n    shell_log \"======Config llmops======\"\n    LLMOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.llmops_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-init.py\n    sed -i \"s/LLMOPS_SECRET_KEY/${LLMOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MYSQL_OPSANY_LLMOPS_PASSWORD/${MYSQL_OPSANY_LLMOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/MONGO_LLMOPS_PASSWORD/${MONGO_LLMOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/llmops/llmops-prod.py\n    /bin/cp ${INSTALL_PATH}/conf/opsany-saas/llmops/*  ${INSTALL_PATH}/kubernetes/helm/opsany-saas/opsany-saas-llmops/\n}\n\nsaas_init(){\n    shell_log \"======OpsAny User Initialize======\"\n    sleep 3\n    # Sync User\n    python3 ../saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code workbench cmdb control job cmp bastion\n     python3 ../saas/init-ce-monitor.py --domain $DOMAIN_NAME --private_ip $DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD} --grafana_password admin --grafana_change_password $GRAFANA_ADMIN_PASSWORD\n     python3 ../saas/init-ce-devops.py --domain https://${DOMAIN_NAME} --username admin  --password $ADMIN_PASSWORD\n\n    shell_log \"======OpsAny Workbench Initialize======\"\n    # Create Service\n    python3 ../saas/init_work_order.py --domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD}\n\n    shell_log \"======OpsAny Proxy Initialize======\"\n    # Create Proxy Token\n    PROXY_POD=$(kubectl get pod -n opsany | grep opsany-paas-proxy | awk '{print $1}')\n    PROXY_TOKEN=$(kubectl exec -n opsany ${PROXY_POD}  -- /bin/sh -c \"export OPS_ANY_ENV=production && /usr/local/bin/python3 /opt/opsany-proxy/manage.py create_access\" | grep 'Access' | awk -F ': ' '{print $2}' | awk -F '.' '{print $1}')\n    python3 ../saas/init-ce-base.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password ${ADMIN_PASSWORD} --proxy_url https://${PROXY_LOCAL_IP}:8011 --proxy_public_url https://${PROXY_PUBLIC_IP}:8011 --proxy_token $PROXY_TOKEN\n\n    shell_log \"======OpsAny Job Initialize======\"\n    # Init Script Job\n    cd $CDIR/init/\n    python3 import_script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} \\\n--target_type script --target_path ./job-script\n    python3 import_script.py --domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD} \\\n--target_type task --target_path ./job-task\n    shell_warning_log \"======OpsAny: Make Ops Perfect======\" \n}\n\nadmin_password_init(){\n    PRESTR='Ops'\n    STR=`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 5`\n    NUM=`echo $RANDOM`\n    ADMIN_NEW_PASSWORD=$PRESTR$STR$NUM\n    echo \"ADMIN_PASSWORD=$ADMIN_NEW_PASSWORD\" > ${INSTALL_PATH}/conf/.passwd_env\n    cd ${CDIR}\n    python3 password-init.py --paas_domain https://$DOMAIN_NAME --username admin --password ${ADMIN_PASSWORD} --new_password $ADMIN_NEW_PASSWORD\n    shell_error_log \"Web: https://$DOMAIN_NAME Username: admin Password: $ADMIN_NEW_PASSWORD\"\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    install)\n        install_init\n\t    saas_rbac_deploy\n\t    saas_workbench_deploy\n\t    saas_cmdb_deploy\n\t    saas_control_deploy\n\t    saas_job_deploy\n\t    saas_cmp_deploy\n\t    saas_bastion_deploy\n        saas_monitor_deploy\n        saas_devops_deploy\n        saas_code_deploy\n        saas_pipeline_deploy\n        saas_repo_deploy\n        saas_deploy_deploy\n        saas_llmops_deploy\n        ;;\n    config)\n        saas_rbac_deploy\n\t    saas_workbench_deploy\n\t    saas_cmdb_deploy\n\t    saas_control_deploy\n\t    saas_job_deploy\n\t    saas_cmp_deploy\n\t    saas_bastion_deploy\n        saas_monitor_deploy\n        saas_devops_deploy\n        saas_code_deploy\n        saas_pipeline_deploy\n        saas_repo_deploy\n        saas_deploy_deploy\n        saas_llmops_deploy\n        ;;\n    init)\n        saas_init\n        admin_password_init\n        ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {install|help}\"\n\t    ;;\n    esac\n}\n\nmain $1 \n"
  },
  {
    "path": "install/saas-dev-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny PaaSAgent for Develop Install Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"saas-dev-install.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Check Install requirement\ninstall_check(){\n  shell_warning_log \"The beginning is the first step to success\"\n  if [ -f /etc/redhat-release ];then\n      setenforce 0\n  fi\n  DOCKER_PID=$(ps aux | grep '/usr/bin/containerd' | grep -v 'grep' | wc -l)\n  if [ ${DOCKER_PID} -lt 1 ];then\n      shell_error_log \"Please install and start docker first!!!\"\n      exit\n  fi\n}\n\nrabbitmq_install(){\n    # RabbitMQ\n    shell_log \"Start RabbitMQ\"\n    docker run -d --restart=always --name opsany-base-rabbitmq \\\n    -e RABBITMQ_DEFAULT_USER=\"$RABBITMQ_DEFAULT_USER\" \\\n    -e RABBITMQ_DEFAULT_PASS=\"$RABBITMQ_DEFAULT_PASS\" \\\n    -p 15672:15672 -p 5672:5672 -p 15692:15692 \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/rabbitmq:3.8.9-management-alpine\n\n    shell_log \"Activate RabbitMQ\"\n    sleep 10\n    curl -k --connect-timeout 10 \\\n            -H 'Content-Type:application/x-www-form-urlencoded' \\\n            -X POST \\\n            -d \"mq_ip=$RABBIT_SERVER_IP&username=$RABBITMQ_DEFAULT_USER&password=$RABBITMQ_DEFAULT_PASS\" \\\n            \"https://$LOCAL_IP/v1/rabbitmq/init/\"\n    echo \"\"\n    shell_warning_log \"======The end is the beginning.======\"\n}\n\n\npaas_agent_add(){\n    shell_log \"Register paas-agent Service\"\n    cd $CDIR && cd ../saas/\n    resp=$(python3 engine-server-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --server_ip $LOCAL_IP  --server_port 4244 --app_port 8084 --server_cate tapp --type add)\n    token=$(jq -r .data.token <<<\"$resp\" 2>/dev/null)\n    sid=$(jq -r .data.s_id <<<\"$resp\" 2>/dev/null)\n    server_id=$(jq -r .data.server_id <<<\"$resp\" 2>/dev/null)\n    if [[ -z \"$token\" || -z \"$sid\" ]]; then\n        shell_log \"Register Faild：$resp\"\n    else\n        shell_log \"Register Succeed\"\n    fi\n}\n\n# Start PaasAgent\npaas_agent_start(){\n    # 修改PaasAgent配置文件\n    cd $CDIR\n    mkdir -p ${INSTALL_PATH}/paas_agent_test\n    /bin/cp -r ../install/conf/paas_agent/paasagent.conf ${INSTALL_PATH}/paas_agent_test/paasagent.conf\n    /bin/cp -r ../install/conf/paas_agent/paas_agent_config.yaml ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    sed -i \"s/BK_PAASAGENT_SID/$sid/g\" ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    sed -i \"s/BK_PAASAGENT_TOKEN/$token/g\" ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml\n    \n    shell_log \"Start paas-agent Test\"\n    docker run -d --restart=always --name opsany-paas-paasagent-test \\\n    -p 4244:4245 -p 8084:8085 \\\n    -v ${INSTALL_PATH}/logs:/opt/opsany/logs/ \\\n    -v ${INSTALL_PATH}/paas_agent_test/paas_agent_config.yaml:/opt/opsany/paas-agent/etc/paas_agent_config.yaml \\\n    -v ${INSTALL_PATH}/paas_agent_test/paasagent.conf:/etc/nginx/conf.d/paasagent.conf \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v ${INSTALL_PATH}/paas_agent_test/apps:/opt/opsany/paas-agent/apps \\\n    -v ${INSTALL_PATH}/paas_agent_test/saasapp:/opt/opsany/paas-agent/saasapp \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-paasagent:v3.2.7\n    \n    sleep 10\n    \n    # PaasAgent healthz\n    BIND_ADDR=${LOCAL_IP}\n    PAASAGENT_SERVER_PORT=4244\n    code=$(curl -s -o /dev/null -w \"%{http_code}\" http://$BIND_ADDR:$PAASAGENT_SERVER_PORT/healthz )\n    if [[ $code != 200 ]]; then\n        shell_error_log \"paasagent test Start Faild，Check (http://$BIND_ADDR:$PAASAGENT_SERVER_PORT/healthz) Error\" >&2\n        exit 1\n    fi\n    \n     shell_log \"Activate paas-agent\"\n    # Activate PaasAgent\n     cd $CDIR && cd ../saas/\n     python3 engine-server-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --server_id $server_id --type active\n}\n    \n\n# Main\nmain(){\n    case \"$1\" in\n\tinstall)\n          install_check\n          paas_agent_add\n          paas_agent_start\n          rabbitmq_install\n\t  ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {install|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/saas-esb-update.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny ESB Update Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"saas-esb-update.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Copy install.config and Change: cp install.config.example install.config\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n\n# ESB Update\nesb_update(){\n    shell_log \"======ESB Update======\"\n    /bin/cp -r ../paas-ce/paas/esb/components/generic/apis/* ${INSTALL_PATH}/esb/apis/\n}\n\nesb_restart(){\n    mysql -h \"${MYSQL_SERVER_IP}\" -P \"${MYSQL_SERVER_PORT}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_api_doc.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P \"${MYSQL_SERVER_PORT}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_channel.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P \"${MYSQL_SERVER_PORT}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_component_system.sql\n    mysql -h \"${MYSQL_SERVER_IP}\" -P \"${MYSQL_SERVER_PORT}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" opsany_paas < ./init/esb-init/esb_function_controller.sql\n    docker restart opsany-paas-esb\n}\n\n# Main\nmain(){\n    esb_update\n    esb_restart\n}\n\nmain\n"
  },
  {
    "path": "install/saas-log-clean.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Community Edition Install Script\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"opsany-log-clean.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n\n# Main\nmain(){\n    case \"$1\" in\n    rbac) \n        for i in `ls ${INSTALL_PATH}/logs/rbac`;do echo \"\" > ${INSTALL_PATH}/logs/rbac/$i;done\n\t;;\n    workbench) \n        for i in `ls ${INSTALL_PATH}/logs/workbench`;do echo \"\" > ${INSTALL_PATH}/logs/workbench/$i;done\n\t;;\n    job) \n        for i in `ls ${INSTALL_PATH}/logs/job`;do echo \"\" > ${INSTALL_PATH}/logs/job/$i;done\n\t;;\n    monitor) \n        for i in `ls ${INSTALL_PATH}/logs/monitor`;do echo \"\" > ${INSTALL_PATH}/logs/monitor/$i;done\n\t;;\n    cmp) \n        for i in `ls ${INSTALL_PATH}/logs/cmp`;do echo \"\" > ${INSTALL_PATH}/logs/cmp/$i;done\n\t;;\n    cmdb) \n        for i in `ls ${INSTALL_PATH}/logs/cmdb`;do echo \"\" > ${INSTALL_PATH}/logs/cmdb/$i;done\n\t;;\n    bastion) \n        for i in `ls ${INSTALL_PATH}/logs/bastion`;do echo \"\" > ${INSTALL_PATH}/logs/bastion/$i;done\n\t;;\n    devops) \n        for i in `ls ${INSTALL_PATH}/logs/devops`;do echo \"\" > ${INSTALL_PATH}/logs/devops/$i;done\n\t;;\n    control) \n        for i in `ls ${INSTALL_PATH}/logs/control`;do echo \"\" > ${INSTALL_PATH}/logs/control/$i;done\n\t;;\n    all)\n        for i in `ls ${INSTALL_PATH}/logs/*.log`;do echo \"\" > $i;done\n        for i in `ls ${INSTALL_PATH}/logs/rbac`;do echo \"\" > ${INSTALL_PATH}/logs/rbac/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/workbench`;do echo \"\" > ${INSTALL_PATH}/logs/workbench/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/job`;do echo \"\" > ${INSTALL_PATH}/logs/job/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/monitor`;do echo \"\" > ${INSTALL_PATH}/logs/monitor/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/cmp`;do echo \"\" > ${INSTALL_PATH}/logs/cmp/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/cmdb`;do echo \"\" > ${INSTALL_PATH}/logs/cmdb/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/bastion`;do echo \"\" > ${INSTALL_PATH}/logs/bastion/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/devops`;do echo \"\" > ${INSTALL_PATH}/logs/devops/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/control`;do echo \"\" > ${INSTALL_PATH}/logs/control/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/llmops`;do echo \"\" > ${INSTALL_PATH}/logs/llmops/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/devops`;do echo \"\" > ${INSTALL_PATH}/logs/devops/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/pipeline`;do echo \"\" > ${INSTALL_PATH}/logs/pipeline/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/repo`;do echo \"\" > ${INSTALL_PATH}/logs/repo/$i;done\n        for i in `ls ${INSTALL_PATH}/logs/deploy`;do echo \"\" > ${INSTALL_PATH}/logs/deploy/$i;done\n        ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {rbac|workbench|cmdb|control|job|monitor|cmp|bastion|devops|dashboard|all|help}\"\n\t    ;;\n    esac\n}\n\nmain $1 \n"
  },
  {
    "path": "install/saas-update.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"saas-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\nrm -f ../saas/*.gz\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nrbac_update(){\n    #rbac\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp rbac-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/rbac-opsany-*.tar.gz\n}\n\nworkbench_update(){\n    #workbench\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp workbench-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/workbench-opsany-*.tar.gz\n}\n    \ncmdb_update(){\n    #cmdb\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp cmdb-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/cmdb-opsany-*.tar.gz\n}\n\ncontrol_update(){\n    #control\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp control-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/control-opsany-*.tar.gz\n}\n\njob_update(){\n    #job\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp -f job-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/job-opsany-*.tar.gz\n}\n\nmonitor_update(){\n    #monitor\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp monitor-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/monitor-opsany-*.tar.gz\n}\n\ncmp_update(){\n    #cmp\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp cmp-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/cmp-opsany-*.tar.gz\n}\n\ndevops_update(){\n    #devops\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp devops-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/devops-opsany-*.tar.gz\n}\n\nbastion_update(){\n    #devops\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp bastion-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/bastion-opsany-*.tar.gz\n}\n\npipeline_update(){\n    #pipeline\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp pipeline-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/pipeline-opsany-*.tar.gz\n}\n\ndeploy_update(){\n    #deploy\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp deploy-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/deploy-opsany-*.tar.gz\n}\n\ndashboard_update(){\n    #dashboard\n    cd $CDIR\n    cd ../../opsany-saas/\n    /bin/cp dashboard-opsany-*.tar.gz ../opsany-paas/saas/\n    cd $CDIR\n    python3 ../saas/deploy.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD --file_name ../saas/dashboard-opsany-*.tar.gz\n}\n\n# Main\nmain(){\n    case \"$1\" in\n\trbac)\n\t\trbac_update\n\t\t;;\n\tworkbench)\n\t\tworkbench_update\n\t\t;;\n\tcmdb)\n\t\tcmdb_update\n\t\t;;\n\tcontrol)\n\t\tcontrol_update\n\t\t;;\n\tjob)\n\t\tjob_update\n\t\t;;\n\tmonitor)\n\t\tmonitor_update\n\t\t;;\n\tcmp)\n\t\tcmp_update\n\t\t;;\n    bastion)\n        bastion_update\n        ;;\n    dashboard)\n        dashboard_update\n        ;;\n\tbase)\n\t\trbac_update\n\t\tworkbench_update\n\t\tcmdb_update\n\t\tcontrol_update\n\t\tjob_update\n        dashboard_update\n\t\tcmp_update\n        bastion_update\n\t\t;;\n    devops)\n\t\tdevops_update\n        #pipeline_update\n        #deploy_update\n\t\t;;\n    all)\n        rbac_update\n\t\tworkbench_update\n\t\tcmdb_update\n\t\tcontrol_update\n\t\tjob_update\n        dashboard_update\n\t\tcmp_update\n        bastion_update\n        devops_update\n        #pipeline_update\n        #deploy_update\n        monitor_update\n        ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {[base|devops|monitor|all|rbac|workbench|cmdb|control|job|monitor|cmp|devops|bastion|dashboard|help}\"\n\t        ;;\nesac\n}\n\nmain $1\n"
  },
  {
    "path": "install/st2-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  StackStorm Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"st2-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nST2_VERSION=\"3.8.0\"\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Check Install requirement\ninstall_init(){\n    shell_log \"=====Begin: Init======\"\n    # StackStorm Docker Volume\n    mkdir -p ${INSTALL_PATH}/st2-volume/{keys,packs-configs,virtualenvs,ssh}\n    mkdir -p ${INSTALL_PATH}/st2-volume/packs.dev\n    chmod -R 777 ${INSTALL_PATH}/st2-volume/packs-configs\n    /bin/cp -r ./conf/stackstorm/* ${INSTALL_PATH}/st2-volume/\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/REDIS_SERVER_USERNAME/${REDIS_SERVER_USERNAME}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/RABBIT_SERVER_IP/${RABBIT_SERVER_IP}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/RABBITMQ_DEFAULT_USER/${RABBITMQ_DEFAULT_USER}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/RABBITMQ_DEFAULT_PASS/${RABBITMQ_DEFAULT_PASS}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/MONGO_EVENT_PASSWORD/${MONGO_EVENT_PASSWORD}/g\" ${INSTALL_PATH}/st2-volume/files/st2.docker.conf\n    sed -i \"s/MONGO_EVENT_PASSWORD/${MONGO_EVENT_PASSWORD}/g\" ${INSTALL_PATH}/st2-volume/mongodb_event.js\n}\n\nrabbitmq_install(){\n    # RabbitMQ\n    shell_log \"Start RabbitMQ\"\n    docker run -d --restart=always --name opsany-st2-rabbitmq \\\n    -e RABBITMQ_DEFAULT_USER=\"$RABBITMQ_DEFAULT_USER\" \\\n    -e RABBITMQ_DEFAULT_PASS=\"$RABBITMQ_DEFAULT_PASS\" \\\n    -p 15672:15672 -p 5672:5672 -p 15692:15692 \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/rabbitmq:3.8.9-management-alpine\n}\n\n# Redis\nredis_install(){\n    shell_log \"======Base Service: Start Redis======\"\n    mkdir -p ${INSTALL_PATH}/st2-redis-volume\n    /bin/cp ${CDIR}/conf/redis/redis.conf ${INSTALL_PATH}/st2-redis-volume/\n    sed -i \"s/\"REDIS_SERVER_PASSWORD\"/\"${REDIS_SERVER_PASSWORD}\"/g\" ${INSTALL_PATH}/st2-redis-volume/redis.conf\n    docker run -d --restart=always --name opsany-st2-redis \\\n    -p 6379:6379 -v ${INSTALL_PATH}/st2-redis-volume:/data \\\n    -v ${INSTALL_PATH}/st2-redis-volume/redis.conf:/data/redis.conf \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/redis:6.0.9-alpine redis-server /data/redis.conf\n}\n\n# MongoDB\nmongodb_install(){\n    shell_log \"======Base Service: Start MongoDB======\"\n    mkdir -p ${INSTALL_PATH}/st2-mongodb-volume\n    docker run -d --restart=always --name opsany-st2-mongodb \\\n    -e MONGO_INITDB_ROOT_USERNAME=\"$MONGO_INITDB_ROOT_USERNAME\" \\\n    -e MONGO_INITDB_ROOT_PASSWORD=\"$MONGO_INITDB_ROOT_PASSWORD\" \\\n    -p 27017:27017 -v ${INSTALL_PATH}/st2-mongodb-volume:/data/db \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/mongo:4.4.1-bionic\n    #${PAAS_DOCKER_REG}/mongo:5.0.3\n    sleep 15\n    docker cp ${INSTALL_PATH}/st2-volume/mongodb_event.js opsany-st2-mongodb:/opt/\n    docker exec -e MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME \\\n                -e MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD \\\n                opsany-st2-mongodb /bin/bash -c \"/usr/bin/mongo -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD /opt/mongodb_event.js\"\n    shell_log \"======MongoDB: MongoDB Initialize End======\"\n\n}\n\n# 创建证书\nst2makesecrets_install(){\n    shell_log \"=====Start makesecrets======\"\n    docker run --restart=on-failure --name opsany-st2-makesecrets \\\n    -v ${INSTALL_PATH}/st2-volume/scripts/makesecrets.sh:/makesecrets.sh \\\n    -v ${INSTALL_PATH}/st2-volume/keys:/etc/st2/keys:rw \\\n    ${PAAS_DOCKER_REG}/st2actionrunner:${ST2_VERSION} /makesecrets.sh\n}\n\n# 启动 st2api 服务\nst2api_install(){\n    shell_log \"=====Start st2api======\"\n    docker run -d --rm --name opsany-st2-api-copy \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    ${PAAS_DOCKER_REG}/st2api:${ST2_VERSION}\n    docker cp  opsany-st2-api-copy:/opt/stackstorm/packs ${INSTALL_PATH}/st2-volume/\n    docker stop opsany-st2-api-copy\n    \n    docker run -d --restart=always --name opsany-st2-api \\\n    -e ST2_AUTH_URL=\"http://${LOCAL_IP}:8017/\" \\\n    -e ST2_API_URL=\"http://${LOCAL_IP}:8018/\" \\\n    -e ST2_STREAM_URL=\"http://${LOCAL_IP}:8019/\" \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/keys:/etc/st2/keys:ro \\\n    -v ${INSTALL_PATH}/st2-volume/packs-configs:/opt/stackstorm/configs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/packs:/opt/stackstorm/packs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/files/rbac:/opt/stackstorm/rbac:rw \\\n    -v ${INSTALL_PATH}/st2-volume/packs.dev:/opt/stackstorm/packs.dev:rw \\\n    -p 8018:9101 \\\n    ${PAAS_DOCKER_REG}/st2api:${ST2_VERSION}\n}\n\n# 启动 st2stream 服务\nst2stream_install(){\n    shell_log \"=====Start st2stream======\"\n    docker run -d --restart=always --name opsany-st2-stream \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -p 8019:9102 \\\n    ${PAAS_DOCKER_REG}/st2stream:${ST2_VERSION}\n}\n\n# 启动 st2auth 服务\nst2auth_install(){\n    shell_log \"=====Start st2auth======\"\n    docker run -d --restart=always --name opsany-st2-auth \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/htpasswd:/etc/st2/htpasswd:ro \\\n    -p 8017:9100 \\\n    ${PAAS_DOCKER_REG}/st2auth:${ST2_VERSION}\n}\n\n# 启动 st2scheduler 服务\nst2scheduler_install(){\n    shell_log \"=====Start st2scheduler======\"\n    docker run -d --restart=always --name opsany-st2-scheduler \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    ${PAAS_DOCKER_REG}/st2scheduler:${ST2_VERSION}\n}\n\n# 启动 st2workflowengine 服务\nst2workflowengine_install(){\n    shell_log \"=====Start st2workflowengine======\"\n    docker run -d --restart=always --name opsany-st2-workflowengine \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/keys:/etc/st2/keys:ro \\\n    ${PAAS_DOCKER_REG}/st2workflowengine:${ST2_VERSION}\n}\n\n# 启动 st2actionrunner 服务\nst2actionrunner_install(){\n    shell_log \"=====Start st2actionrunner======\"\n    docker run -d --restart=always --name opsany-st2-actionrunner \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/packs-configs:/opt/stackstorm/configs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/packs:/opt/stackstorm/packs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/packs.dev:/opt/stackstorm/packs.dev:rw \\\n    -v ${INSTALL_PATH}/st2-volume/virtualenvs:/opt/stackstorm/virtualenvs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/ssh:/home/stanley/.ssh \\\n    -v ${INSTALL_PATH}/st2-volume/keys:/etc/st2/keys:ro \\\n    ${PAAS_DOCKER_REG}/st2actionrunner:${ST2_VERSION}\n}\n\n# 启动 st2garbagecollector 服务\nst2garbagecollector_install(){\n    shell_log \"=====Start st2garbagecollector======\"\n    docker run -d --restart=always --name opsany-st2-garbagecollector \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    ${PAAS_DOCKER_REG}/st2garbagecollector:${ST2_VERSION}\n}\n\n# 启动 st2notifier 服务\nst2notifier_install(){\n    shell_log \"=====Start st2notifier======\"\n    docker run -d --restart=always --name opsany-st2-notifier \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    ${PAAS_DOCKER_REG}/st2notifier:${ST2_VERSION}\n}\n\n# 启动 st2rulesengine 服务\nst2rulesengine_install(){\n    shell_log \"=====Start st2rulesengine======\"\n    docker run -d --restart=always --name opsany-st2-rulesengine \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    ${PAAS_DOCKER_REG}/st2rulesengine:${ST2_VERSION}\n}\n\n# 启动 st2sensorcontainer 服务\nst2sensorcontainer_install(){\n    shell_log \"=====Start st2sensorcontainer======\"\n    docker run -d --restart=always --name opsany-st2-sensorcontainer \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/virtualenvs:/opt/stackstorm/virtualenvs:ro \\\n    -v ${INSTALL_PATH}/st2-volume/packs:/opt/stackstorm/packs:ro \\\n    -v ${INSTALL_PATH}/st2-volume/packs-configs:/opt/stackstorm/configs:ro \\\n    -v ${INSTALL_PATH}/st2-volume/packs.dev:/opt/stackstorm/packs.dev:ro \\\n    ${PAAS_DOCKER_REG}/st2sensorcontainer:${ST2_VERSION}\n}\n\n# 启动 st2timersengine 服务\nst2timersengine_install(){\n    shell_log \"=====Start st2timersengine======\"\n    docker run -d --restart=always --name opsany-st2-timersengine \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    ${PAAS_DOCKER_REG}/st2timersengine:${ST2_VERSION}\n}\n\nst2client_install(){\n# 启动 st2client 服务\n    shell_log \"=====Start st2client======\"\n    docker run -d --restart=always --name opsany-st2-client \\\n    -e ST2CLIENT=1 \\\n    -e ST2_AUTH_URL=\"http://${LOCAL_IP}:8017/\" \\\n    -e ST2_API_URL=\"http://${LOCAL_IP}:8018/\" \\\n    -e ST2_STREAM_URL=\"http://${LOCAL_IP}:8019/\" \\\n    -e TZ=${TZ:-Asia/Shanghai} \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.docker.conf:/etc/st2/st2.docker.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2.user.conf:/etc/st2/st2.user.conf:ro \\\n    -v ${INSTALL_PATH}/st2-volume/keys:/etc/st2/keys:ro \\\n    -v ${INSTALL_PATH}/st2-volume/packs-configs:/opt/stackstorm/configs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/packs:/opt/stackstorm/packs:rw \\\n    -v ${INSTALL_PATH}/st2-volume/files/rbac:/opt/stackstorm/rbac:rw \\\n    -v ${INSTALL_PATH}/st2-volume/packs.dev:/opt/stackstorm/packs.dev:rw \\\n    -v ${INSTALL_PATH}/st2-volume/files/st2-cli.conf:/root/.st2/config \\\n    -v ${INSTALL_PATH}/st2-volume/scripts/st2client-startup.sh:/st2client-startup.sh \\\n    ${PAAS_DOCKER_REG}/st2actionrunner:${ST2_VERSION} /st2client-startup.sh\n}\n\n# 启动 st2web 服务\nst2web_install(){\n    shell_log \"=====Start st2web======\"\n    docker run -d --restart=always --name opsany-st2-web \\\n    -e ST2_AUTH_URL=\"http://${LOCAL_IP}:8017/\" \\\n    -e ST2_API_URL=\"http://${LOCAL_IP}:8018/\" \\\n    -e ST2_STREAM_URL=\"http://${LOCAL_IP}:8019/\" \\\n    -e ST2WEB_HTTPS=${ST2WEB_HTTPS:-0} \\\n    -p \"${ST2_EXPOSE_HTTP:-0.0.0.0:8005}:80\" \\\n    ${PAAS_DOCKER_REG}/st2web:${ST2_VERSION}\n}\n\n# 初始化 1. st2 packs  2. control st2\nst2_init(){\n    # DOMAIN_NAME(192.168.56.11) ADMIN_PASSWORD DEVOPS_SECRET_KEY\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    if [ -z \"$DEVOPS_SECRET_KEY\"];then\n        DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    fi\n    cd $CDIR/\n    /bin/cp -rf conf/stackstorm/packs/ ${INSTALL_PATH}/st2-volume/\n    chmod -R 777 ${INSTALL_PATH}/st2-volume/packs/\n    /bin/cp -rf conf/stackstorm/opsany_core.yaml ${INSTALL_PATH}/st2-volume/packs-configs/\n    sed -i \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" ${INSTALL_PATH}/st2-volume/packs-configs/opsany_core.yaml\n    sed -i \"s/DEVOPS_SECRET_KEY/$DEVOPS_SECRET_KEY/g\" ${INSTALL_PATH}/st2-volume/packs-configs/opsany_core.yaml\n    tar -xzf conf/stackstorm/opsany_core_env.tar.gz -C ${INSTALL_PATH}/st2-volume/virtualenvs\n    docker exec opsany-st2-client /bin/sh -c \"st2ctl reload --register-all\"\n    docker exec opsany-paas-websocket /bin/sh -c \"python3 /opt/opsany/saas/init-ce-st2.py --domain $DOMAIN_NAME --username admin --password $ADMIN_PASSWORD  --st2_url http://${LOCAL_IP}:8005 --st2_username st2admin  --st2_password OpsAny@2023\"\n}\n\nst2_uninstall(){\n    shell_log \"=====Uninstall StackStorm======\"\n    docker stop opsany-st2-stream\n    docker stop opsany-st2-client\n    docker stop opsany-st2-timersengine\n    docker stop opsany-st2-sensorcontainer\n    docker stop opsany-st2-rulesengine\n    docker stop opsany-st2-notifier\n    docker stop opsany-st2-garbagecollector\n    docker stop opsany-st2-actionrunner\n    docker stop opsany-st2-workflowengine\n    docker stop opsany-st2-scheduler\n    docker stop opsany-st2-auth\n    docker stop opsany-st2-api\n    docker stop opsany-st2-web\n    docker stop opsany-st2-mongodb\n    docker stop opsany-st2-redis\n    docker stop opsany-st2-rabbitmq\n    docker rm opsany-st2-stream\n    docker rm opsany-st2-client\n    docker rm opsany-st2-timersengine\n    docker rm opsany-st2-sensorcontainer\n    docker rm opsany-st2-rulesengine\n    docker rm opsany-st2-notifier\n    docker rm opsany-st2-garbagecollector\n    docker rm opsany-st2-actionrunner\n    docker rm opsany-st2-workflowengine\n    docker rm opsany-st2-scheduler\n    docker rm opsany-st2-auth\n    docker rm opsany-st2-api\n    docker rm opsany-st2-web\n    docker rm opsany-st2-mongodb\n    docker rm opsany-st2-redis\n    docker rm opsany-st2-rabbitmq\n    docker rm opsany-st2-makesecrets\n    rm -rf ${INSTALL_PATH}/st2-redis-volume\n    rm -rf ${INSTALL_PATH}/st2-mongodb-volume\n    rm -rf ${INSTALL_PATH}/st2-volume\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    st2)\n        install_init\n        rabbitmq_install\n        st2makesecrets_install\n        st2api_install\n        st2stream_install\n        st2auth_install\n        st2scheduler_install\n        st2workflowengine_install\n        st2garbagecollector_install\n        st2actionrunner_install\n        st2notifier_install\n        st2rulesengine_install\n        st2sensorcontainer_install\n        st2timersengine_install\n        st2client_install\n        st2web_install\n        st2_init\n        ;;\n    all)\n        install_init\n        rabbitmq_install\n        redis_install\n        mongodb_install\n        st2makesecrets_install\n        st2api_install\n        st2stream_install\n        st2auth_install\n        st2scheduler_install\n        st2workflowengine_install\n        st2garbagecollector_install\n        st2actionrunner_install\n        st2notifier_install\n        st2rulesengine_install\n        st2sensorcontainer_install\n        st2timersengine_install\n        st2client_install\n        st2web_install\n        st2_init\n        ;;\n    uninstall)\n        st2_uninstall\n        ;;\n    help|*)\n        echo $\"Usage: $0 {st2|all|uninstall|help}\"\n        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/test/README.md",
    "content": "# OpsAny资源纳管测试\n\n该目录存放OpsAny在资源纳管时用到的测试脚本，测试脚本通过启动不同操作系统的容器进行纳管验证测试，也可以用于其它的测试途径。\n\n- 所有测试容器的用户名：root  密码： 123456.coM，请勿用于生产环境。\n"
  },
  {
    "path": "install/test/almalinux-8.10/Dockerfile",
    "content": "# 使用AlmaLinux官方镜像作为基础镜像\nFROM docker.m.daocloud.io/almalinux:8.10\n\n# 安装OpenSSH服务\nRUN curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux && \\\n    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux && \\\n    dnf -y update && \\\n    dnf -y install -y openssh-server && \\\n    dnf clean all\n\n# 设置SSH支持密码登录\nRUN ssh-keygen -A && \\\n    mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/almalinux-9.5/Dockerfile",
    "content": "# 使用AlmaLinux官方镜像作为基础镜像\nFROM docker.m.daocloud.io/almalinux:9.5\n\n# 安装OpenSSH服务\nRUN dnf -y update && \\\n    dnf -y install -y openssh-server && \\\n    dnf clean all\n\n# 设置SSH支持密码登录\nRUN ssh-keygen -A && \\\n    mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/opsany-test.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Test Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"opsany-test.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\nPAAS_DOCKER_REG=\"registry.cn-beijing.aliyuncs.com/opsany\"\nLOCAL_INTERFACE=\"eth0\"\nLOCAL_IP=$(ip addr show ${LOCAL_INTERFACE} | grep 'inet ' | awk '{print $2}' | cut -d/ -f1)\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m------ $CTIME ${SHELL_NAME} : ${LOG_INFO} ------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m------ $CTIME ${SHELL_NAME} : ${LOG_INFO} ------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[31m------ $CTIME ${SHELL_NAME} : ${LOG_INFO} ------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nubuntu1604(){\n    shell_log \"ubuntu 16.04\"\n    docker run -d --restart=always --name opsany-ubuntu-test-16.04 \\\n\t--hostname opsany-ubuntu-test-1604 \\\n        -p 6001:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/ubuntu-test:16.04\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-ubuntu-test-16.04)\n    PORT=\"22\"\n    shell_warning_log \"opsany-ubuntu-test-16.04: Host IP: $LOCAL_IP Host Port: 6001 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nubuntu1804(){\n    shell_log \"ubuntu 18.04\"\n    docker run -d --restart=always --name opsany-ubuntu-test-18.04 \\\n\t--hostname opsany-ubuntu-test-1804 \\\n        -p 6002:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/ubuntu-test:18.04\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-ubuntu-test-18.04)\n    PORT=\"22\"\n    shell_warning_log \"opsany-ubuntu-test-18.04: Host IP: $LOCAL_IP Host Port: 6002 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nubuntu2004(){\n    shell_log \"ubuntu 20.04\"\n    docker run -d --restart=always --name opsany-ubuntu-test-20.04 \\\n\t--hostname opsany-ubuntu-test-2004 \\\n        -p 6003:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/ubuntu-test:20.04\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-ubuntu-test-20.04)\n    PORT=\"22\"\n    shell_warning_log \"opsany-ubuntu-test-20.04: Host IP: $LOCAL_IP Host Port: 6003 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nubuntu2204(){\n    shell_log \"ubuntu 22.04\"\n    docker run -d --restart=always --name opsany-ubuntu-test-22.04 \\\n\t--hostname opsany-ubuntu-test-2204 \\\n        -p 6004:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/ubuntu-test:22.04\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-ubuntu-test-22.04)\n    PORT=\"22\"\n    shell_warning_log \"opsany-ubuntu-test-22.04: Host IP: $LOCAL_IP Host Port: 6004 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nubuntu2404(){\n    shell_log \"ubuntu 16.04\"\n    docker run -d --restart=always --name opsany-ubuntu-test-24.04 \\\n\t--hostname opsany-ubuntu-test-2404 \\\n        -p 6005:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/ubuntu-test:24.04\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-ubuntu-test-24.04)\n    PORT=\"22\"\n    shell_warning_log \"opsany-ubuntu-test-24.04: Host IP: $LOCAL_IP Host Port: 6005 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nalmalinux810(){\n    shell_log \"almalinux 8.10\"\n    docker run -d --restart=always --name opsany-almalinux-test-8.10 \\\n\t--hostname opsany-almalinux-test-8 \\\n        -p 6006:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/almalinux-test:8.10\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-almalinux-test-8.10)\n    PORT=\"22\"\n    shell_warning_log \"opsany-almalinux-test-8.10: Host IP: $LOCAL_IP Host Port: 6006 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nalmalinux905(){\n    shell_log \"almalinux 9.5\"\n    docker run -d --restart=always --name opsany-almalinux-test-9.5 \\\n\t--hostname opsany-almalinux-test-9 \\\n        -p 6007:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/almalinux-test:9.5\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-almalinux-test-9.5)\n    PORT=\"22\"\n    shell_warning_log \"opsany-almalinux-test-9.5: Host IP: $LOCAL_IP Host Port: 6007 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nrockylinux810(){\n    shell_log \"rockylinux 8.10\"\n    docker run -d --restart=always --name opsany-rockylinux-test-8.10 \\\n\t--hostname opsany-rockylinux-test-8 \\\n        -p 6008:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/rockylinux-test:8.10\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-rockylinux-test-8.10)\n    PORT=\"22\"\n    shell_warning_log \"opsany-rockylinux-test-8.10: Host IP: $LOCAL_IP Host Port: 6008 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nrockylinux904(){\n    shell_log \"rockylinux 9.4\"\n    docker run -d --restart=always --name opsany-rockylinux-test-9.4 \\\n\t--hostname opsany-rockylinux-test-9 \\\n        -p 6009:22 \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/rockylinux-test:9.4\n    IPADDR=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' opsany-rockylinux-test-9.4)\n    PORT=\"22\"\n    shell_warning_log \"opsany-rockylinux-test-9.4: Host IP: $LOCAL_IP Host Port: 6009 , Container IP: $IPADDR Container Port: $PORT  User: root Password: 123456.coM\"\n}\n\nremove_all(){\n    docker stop opsany-ubuntu-test-16.04 && docker rm opsany-ubuntu-test-16.04\n    docker stop opsany-ubuntu-test-18.04 && docker rm opsany-ubuntu-test-18.04\n    docker stop opsany-ubuntu-test-20.04 && docker rm opsany-ubuntu-test-20.04\n    docker stop opsany-ubuntu-test-22.04 && docker rm opsany-ubuntu-test-22.04\n    docker stop opsany-ubuntu-test-24.04 && docker rm opsany-ubuntu-test-24.04\n    docker stop opsany-almalinux-test-8.10 && docker rm opsany-almalinux-test-8.10\n    docker stop opsany-almalinux-test-9.5 && docker rm opsany-almalinux-test-9.5\n    docker stop opsany-rockylinux-test-9.4 && docker rm opsany-rockylinux-test-9.4\n    docker stop opsany-rockylinux-test-8.10 && docker rm opsany-rockylinux-test-8.10\n}\n# Main\nmain(){\n    case \"$1\" in\n\tubuntu)\n        ubuntu1604\n        ubuntu1804\n        ubuntu2004\n        ubuntu2204\n        ubuntu2404\n\t    ;;\n    almalinux)\n        almalinux810\n        almalinux905\n        ;;\n    rockylinux)\n        almalinux810\n        almalinux905\n        ;;\n    all)\n        ubuntu1604\n        ubuntu1804\n        ubuntu2004\n        ubuntu2204\n        ubuntu2404\n        almalinux810\n        almalinux905\n        rockylinux810\n        rockylinux904\n        ;;\n    remove)\n        remove_all\n        ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {all|ubuntu|centos|alam|rocky|remove|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/test/rockylinux-8.10/Dockerfile",
    "content": "# 使用RockyLinux官方镜像作为基础镜像\nFROM docker.m.daocloud.io/rockylinux/rockylinux:8.10\n\n# 安装OpenSSH服务\nRUN dnf -y update && \\\n    dnf -y install -y openssh-server && \\\n    dnf clean all\n\n# 设置SSH支持密码登录\nRUN ssh-keygen -A && \\\n    mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/rockylinux-9.4/Dockerfile",
    "content": "# 使用RockyLinux官方镜像作为基础镜像\nFROM docker.m.daocloud.io/rockylinux/rockylinux:9.4\n\n# 安装OpenSSH服务\nRUN dnf -y update && \\\n    dnf -y install -y openssh-server && \\\n    dnf clean all\n\n# 设置SSH支持密码登录\nRUN ssh-keygen -A && \\\n    mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/ubuntu-16.04/Dockerfile",
    "content": "# 使用Ubuntu官方镜像作为基础镜像\nFROM docker.m.daocloud.io/ubuntu:16.04\n\n# 安装OpenSSH服务\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \\\n    sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list && \\\n    apt-get update && apt-get install -y openssh-server net-tools curl wget sudo && \\\n    apt-get clean\n\n# 设置SSH支持密码登录\nRUN mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/ubuntu-16.04/README.md",
    "content": "\n```\ndocker build -t registry.cn-beijing.aliyuncs.com/opsany/ubuntu-test:16.04 .\n```\n"
  },
  {
    "path": "install/test/ubuntu-18.04/Dockerfile",
    "content": "# 使用Ubuntu官方镜像作为基础镜像\nFROM docker.m.daocloud.io/ubuntu:18.04\n\n# 安装OpenSSH服务\nRUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \\\n    sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list && \\\n    apt-get update && apt-get install -y openssh-server net-tools curl wget sudo && \\\n    apt-get clean\n\n# 设置SSH支持密码登录\nRUN mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/ubuntu-20.04/Dockerfile",
    "content": "# 使用Ubuntu官方镜像作为基础镜像\nFROM docker.m.daocloud.io/ubuntu:20.04\n\n# 安装OpenSSH服务\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \\\n    sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list && \\\n    apt-get update && apt-get install -y openssh-server net-tools curl wget sudo && \\\n    apt-get clean\n\n# 设置SSH支持密码登录\nRUN mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/ubuntu-22.04/Dockerfile",
    "content": "# 使用Ubuntu官方镜像作为基础镜像\nFROM docker.m.daocloud.io/ubuntu:22.04\n\n# 安装OpenSSH服务\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \\\n    sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list && \\\n    apt-get update && apt-get install -y openssh-server net-tools curl wget sudo && \\\n    apt-get clean\n\n# 设置SSH支持密码登录\nRUN mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/test/ubuntu-24.04/Dockerfile",
    "content": "# 使用Ubuntu官方镜像作为基础镜像\nFROM docker.m.daocloud.io/ubuntu:24.04\n\n# 安装OpenSSH服务\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \\\n    sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list && \\\n    apt-get update && apt-get install -y openssh-server net-tools curl wget sudo && \\\n    apt-get clean\n\n# 设置SSH支持密码登录\nRUN mkdir /var/run/sshd && \\\n    echo 'root:123456.coM' | chpasswd && \\\n    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\n\n# 开放22端口\nEXPOSE 22\n \n# 启动ssh服务\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "install/uninstall.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny Uninstall Script\n#******************************************\n\n# Get Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"uninstall.sh\"\nSHELL_LOG=\"${CDIR}/${SHELL_NAME}.log\"\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    LOG_INFO=$1\n    echo -e \"\\031[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nuninstall_paas(){\n    echo -e \"\\033[32m---------------- Stop and remove PaaS Service ----------------\\033[0m\"\n    docker stop opsany-paas-paas && docker rm -f opsany-paas-paas\n    docker stop opsany-paas-login && docker rm -f opsany-paas-login\n    docker stop opsany-paas-esb && docker rm -f opsany-paas-esb\n    docker stop opsany-paas-appengine && docker rm -f opsany-paas-appengine\n    docker stop opsany-paas-mcp-server && docker rm -f opsany-paas-mcp-server\n    #docker stop opsany-paas-paasagent && docker rm -f opsany-paas-paasagent\n    docker stop opsany-base-openresty && docker rm -f opsany-base-openresty\n    docker stop opsany-paas-websocket && docker rm -f opsany-paas-websocket\n    docker stop opsany-base-mysql && docker rm -f opsany-base-mysql\n    docker stop opsany-base-redis && docker rm -f opsany-base-redis\n    #docker stop opsany-base-rabbitmq && docker rm -f opsany-base-rabbitmq\n    docker stop opsany-base-guacd && docker rm -f opsany-base-guacd\n    docker stop opsany-base-mongodb && docker rm -f opsany-base-mongodb\n    docker stop opsany-zabbix-web && docker rm -f opsany-zabbix-web\n    docker stop opsany-zabbix-server-st2 && docker rm -f opsany-zabbix-server-st2\n    docker stop opsany-zabbix-web-7.0.3 && docker rm -f opsany-zabbix-web-7.0.3\n    docker stop opsany-zabbix-server-7.0.3 && docker rm -f opsany-zabbix-server-7.0.3\n    docker stop opsany-zabbix-agent2 && docker rm -f opsany-zabbix-agent2\n    docker stop opsany-zabbix-mysql8 && docker rm -f opsany-zabbix-mysql8\n    docker stop opsany-devops-jenkins && docker rm -f opsany-devops-jenkins\n    docker stop opsany-devops-nexus && docker rm -f opsany-devops-nexus\n    rm -rf /tmp/alexanderzobnin-zabbix-app-4.3.1*\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    rm -rf ${INSTALL_PATH}\n    rm -f /opt/opsany-paas/saas/*.tar.gz\n    echo -e \"\\033[32m---------------- PaaS Service Uninstall successfully  ----------------\\033[0m\"\n}\n\nuninstall_saas(){\n    echo -e \"\\033[32m---------------- Stop and remove SaaS Service ----------------\\033[0m\"\n    docker stop opsany-paas-proxy && docker rm -f opsany-paas-proxy\n    docker stop opsany-saas-ce-rbac && docker rm -f opsany-saas-ce-rbac\n    docker stop opsany-saas-ce-workbench && docker rm -f opsany-saas-ce-workbench\n    docker stop opsany-saas-ce-cmdb && docker rm -f opsany-saas-ce-cmdb \n    docker stop opsany-saas-ce-control && docker rm -f opsany-saas-ce-control \n    docker stop opsany-saas-ce-job && docker rm -f opsany-saas-ce-job\n    docker stop opsany-saas-ce-cmp && docker rm -f opsany-saas-ce-cmp\n    docker stop opsany-saas-ce-bastion && docker rm -f opsany-saas-ce-bastion \n    docker stop opsany-saas-ce-monitor && docker rm -f opsany-saas-ce-monitor\n    docker stop opsany-base-grafana && docker rm -f opsany-base-grafana\n    docker stop opsany-saas-ce-devops && docker rm -f opsany-saas-ce-devops\n    docker stop opsany-saas-ce-repo && docker rm -f opsany-saas-ce-repo\n    docker stop opsany-saas-ce-pipeline && docker rm -f opsany-saas-ce-pipeline\n    docker stop opsany-saas-ce-deploy && docker rm -f opsany-saas-ce-deploy\n    echo -e \"\\033[32m---------------- SaaS Service Uninstall successfully  ----------------\\033[0m\"\n}\n\nuninstall_k8s(){\n    grep '^[A-Z]' install-k8s.config > install.env\n    helm uninstall opsany-paas-paas -n opsany\n    helm uninstall opsany-paas-login -n opsany\n    helm uninstall opsany-paas-esb -n opsany\n    helm uninstall opsany-paas-appengine -n opsany\n    helm uninstall opsany-paas-openresty -n opsany\n    helm uninstall opsany-paas-proxy -n opsany\n    helm uninstall opsany-paas-websocket -n opsany\n    helm uninstall opsany-saas-rbac -n opsany\n    helm uninstall opsany-saas-workbench -n opsany\n    helm uninstall opsany-saas-cmdb -n opsany\n    helm uninstall opsany-saas-control -n opsany\n    helm uninstall opsany-saas-job -n opsany\n    helm uninstall opsany-saas-monitor -n opsany\n    helm uninstall opsany-saas-cmp -n opsany\n    helm uninstall opsany-saas-bastion -n opsany\n    helm uninstall opsany-saas-devops -n opsany\n    helm uninstall opsany-saas-dashboard -n opsany\n    helm uninstall opsany-base-mysql -n opsany\n    helm uninstall opsany-base-mongodb -n opsany\n    helm uninstall opsany-base-redis -n opsany\n    helm uninstall opsany-paas-grafana -n opsany\n    helm uninstall opsany-paas-guacd -n opsany\n    helm uninstall nfs-provisioner -n opsany\n    kubectl delete pvc opsany-paas-grafana-data -n opsany\n    kubectl delete pvc opsany-paas-esb-code -n opsany\n    kubectl delete pvc opsany-uploads -n opsany\n    kubectl delete pvc opsany-logs -n opsany\n    kubectl delete sc nfs-sc-opsany\n    source ./install.env && rm -f install.env\n    kubectl delete -f ${INSTALL_PATH}/kubernetes/helm/opsany-paas/opsany-nfs.yaml -n opsany\n    kubectl delete ns opsany\n    rm -rf ${INSTALL_PATH}\n    rm -rf /data/k8s-nfs/opsany-esb-code/*\n    rm -rf /data/k8s-nfs/opsany-grafana-data/*\n    rm -rf /data/k8s-nfs/opsany-logs/*\n    rm -rf /data/k8s-nfs/opsany-proxy/*\n    rm -rf /data/k8s-nfs/opsany-uploads/*\n    echo -e \"\\033[32m---------------- I'll See You Again ----------------\\033[0m\"\n}\n\n\n# Main\nmain(){\n    echo -e \"\\033[33m警告：此操作将卸载 OpsAny 服务，可能会导致数据丢失。\\033[0m\"\n    read -p \"确定要继续执行卸载操作吗？(y/N): \" confirm\n    if [[ ! \"$confirm\" =~ ^[Yy]$ ]]; then\n        echo -e \"\\033[32m卸载操作已取消。\\033[0m\"\n        exit 0\n    fi\n    case \"$1\" in\n\tall)\n        uninstall_paas\n        uninstall_saas\n\t\t;;\n    paas)\n        uninstall_paas\n        ;;\n    saas)\n        uninstall_saas\n        ;;\n    k8s)\n        uninstall_k8s\n        ;;\n\thelp|*)\n\t\techo $\"Usage: $0 {all|saas|paas|k8s|help}\"\n\t        ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "install/update-ce-2.0.0.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Community Edition 2.0.0 Update Script\n#******************************************\n\n# Data/Time Variables\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"update-2.0.0.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\n\n# Shell Log Record\nshell_log(){\n    # Show green\n    LOG_INFO=$1\n    echo -e \"\\033[32m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_warning_log(){\n    # Show yellow\n    LOG_INFO=$1\n    echo -e \"\\033[33m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\nshell_error_log(){\n    # Show red\n    LOG_INFO=$1\n    echo -e \"\\033[31m---------------- $CTIME ${SHELL_NAME} : ${LOG_INFO} ----------------\\033[0m\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      shell_error_log \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    echo 'MYSQL_SERVER_PORT=\"3306\"' >> install.config\n    echo 'MONGO_SERVER_PORT=\"27017\"' >> install.config\n    echo 'REDIS_SERVER_PORT=\"6379\"' >> install.config\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Install initialization\nupdate_init(){\n    shell_log \"======Update init======\"\n    #SaaS Log Directory\n    mkdir -p ${INSTALL_PATH}/logs/{rbac,workbench,cmdb,control,job,monitor,cmp,bastion,dashboard,devops}\n    /bin/cp -r conf/opsany-saas/ ${INSTALL_PATH}/conf/\n    echo 'a5168d38-fc09-11ea-a87d-00163e105ceb' > ${INSTALL_PATH}/conf/.rbac_secret_key\n    echo 'cc6e99fc-fc09-11ea-b63c-00163e105ceb' > ${INSTALL_PATH}/conf/.workbench_secret_key\n    echo 'eee5b34e-fc09-11ea-9e6a-00163e105ceb' > ${INSTALL_PATH}/conf/.cmdb_secret_key\n    echo '099f6e6f-9ad8-43d7-b487-7f655519598d' > ${INSTALL_PATH}/conf/.control_secret_key\n    echo '66f8cd80-fc0a-11ea-90e5-00163e105ceb' > ${INSTALL_PATH}/conf/.job_secret_key\n    echo '5e003cfa-1b44-11eb-876c-00163e105ceb' > ${INSTALL_PATH}/conf/.monitor_secret_key\n    echo '64046956-5171-11eb-a042-00163e105ceb' > ${INSTALL_PATH}/conf/.cmp_secret_key\n    echo '73a828d2-0cc1-11ec-bea7-00163e105ceb' > ${INSTALL_PATH}/conf/.bastion_secret_key\n    echo 'f64f3fae-b335-11eb-a88b-00163e105ceb' > ${INSTALL_PATH}/conf/.devops_secret_key\n    echo '9efb7e72-f2e3-11ec-90d5-00163e105ceb' > ${INSTALL_PATH}/conf/.dashboard_secret_key\n}\n\nsaas_login_update(){\n    shell_log \"======Update Login======\"\n    /bin/cp conf/settings_production.py.login ${INSTALL_PATH}/conf/\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/settings_production.py.login\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/settings_production.py.login\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/settings_production.py.login\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/settings_production.py.login\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/settings_production.py.login\n\n    docker stop opsany-paas-login && docker rm opsany-paas-login\n    docker run -d --restart=always --name opsany-paas-login \\\n    -p 8003:8003 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/conf/settings_production.py.login:/opt/opsany/paas/login/conf/settings_production.py \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-login:v3.2.22\n}\n\nsaas_esb_update(){\n    shell_log \"======Update ESB======\"\n    docker stop opsany-paas-esb && docker rm opsany-paas-esb\n    docker run -d --restart=always --name opsany-paas-esb \\\n    -p 8002:8002 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/esb/apis:/opt/opsany/paas/esb/components/generic/apis \\\n    -v ${INSTALL_PATH}/conf/settings_production.py.esb:/opt/opsany/paas/esb/configs/default.py \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-esb:v3.2.7\n}\n\nsaas_websocket_update(){\n    shell_log \"======Update Websocket======\"\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    /bin/cp conf/settings_production.py.websocket ${INSTALL_PATH}/conf/\n    /bin/cp conf/settings_production.py.websocket.init ${INSTALL_PATH}/conf/\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket.init\n    sed -i \"s/WEBSOCKET_GUACD_HOST/${WEBSOCKET_GUACD_HOST}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket\n    sed -i \"s/PAAS_PAAS_IP/${PAAS_PAAS_IP}/g\" ${INSTALL_PATH}/conf/settings_production.py.websocket.init\n    docker stop opsany-paas-websocket && docker rm opsany-paas-websocket\n    docker run -d --restart=always --name opsany-paas-websocket \\\n    -p 8004:8004 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n    -v ${INSTALL_PATH}/conf/settings_production.py.websocket:/opt/opsany/websocket/config/prod.py \\\n    -v ${INSTALL_PATH}/conf/settings_production.py.websocket.init:/opt/opsany/websocket/config/__init__.py \\\n    -v /usr/share/zoneinfo:/usr/share/zoneinfo \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/opsany-paas-websocket:2.0.0\n}\n\nopenresty_update(){\n    shell_log \"======Update Openresty======\"\n    /bin/cp conf/nginx-conf.d/opsany_paas.conf ${INSTALL_PATH}/conf/nginx-conf.d/\n    /bin/cp conf/nginx-conf.d/opsany_proxy.conf ${INSTALL_PATH}/conf/nginx-conf.d/\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas.conf\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_paas.conf\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy.conf\n    sed -i \"s/LOCAL_IP/${LOCAL_IP}/g\" ${INSTALL_PATH}/conf/nginx-conf.d/opsany_proxy.conf\n    mv ${INSTALL_PATH}/conf/nginx-conf.d/nginx_paas.conf /tmp/\n    mv ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf /tmp/\n    docker restart opsany-openresty\n}\n    \n\n# Start Proxy\nproxy_update(){\n    shell_log \"======Update Proxy======\"\n    # Proxy config\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    CONTROL_SECRET_KEY_PROXY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    /bin/cp conf/proxy/settings_production.py.proxy ${INSTALL_PATH}/conf/proxy/\n    /bin/cp conf/proxy/nginx-conf.d/nginx_proxy.conf ${INSTALL_PATH}/conf/proxy/nginx-conf.d/\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/LOCAL_IP/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/DOMAIN_NAME/${PROXY_PUBLIC_IP} ${PROXY_LOCAL_IP}/g\" ${INSTALL_PATH}/conf/proxy/nginx-conf.d/nginx_proxy.conf\n    sed -i \"s/RABBIT_SERVER_IP/${RABBIT_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_USER/${RABBITMQ_DEFAULT_USER}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/RABBITMQ_DEFAULT_PASS/${RABBITMQ_DEFAULT_PASS}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    sed -i \"s/CONTROL_SECRET_KEY_PROXY/${CONTROL_SECRET_KEY_PROXY}/g\" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy\n    /bin/cp ../saas/invscript_proxy.py ${INSTALL_PATH}/conf/proxy/\n    sed -i \"s/LOCALHOST/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n    chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py\n\n    shell_log \"======Start Proxy======\"\n    docker stop opsany-proxy && docker rm opsany-proxy\n    #docker stop opsany-paas-proxy && docker rm opsany-paas-proxy\n    docker run --restart=always --name opsany-paas-proxy -d \\\n        -p 4505:4505 -p 4506:4506 -p 8010:8010 \\\n        -v ${INSTALL_PATH}/logs:${INSTALL_PATH}/logs \\\n        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \\\n        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \\\n        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \\\n        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \\\n        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \\\n        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \\\n        -v /etc/localtime:/etc/localtime:ro \\\n        ${PAAS_DOCKER_REG}/opsany-paas-proxy:2.0.0\n\n    shell_log \"======OpsAny Proxy Initialize======\"\n    # OpsAny Database Init\n    docker exec -e OPS_ANY_ENV=production \\\n        opsany-paas-proxy /bin/sh -c \"/usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate >> ${SHELL_LOG}\"\n}\n\n# SaaS Deploy\n\nsaas_rbac_deploy(){\n    shell_log \"======Start RBAC======\"\n\n    # Modify configuration\n    RBAC_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.rbac_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/RBAC_SECRET_KEY/${RBAC_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/MYSQL_OPSANY_RBAC_PASSWORD/${MYSQL_OPSANY_RBAC_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-rbac:2.0.0\n    #docker stop opsany-saas-ce-rbac && docker rm opsany-saas-ce-rbac\n    docker run -d --restart=always --name opsany-saas-ce-rbac \\\n       -p 7001:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-supervisor.ini:/etc/supervisord.d/rbac.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-uwsgi.ini:/opt/opsany/uwsgi/rbac.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-init.py:/opt/opsany/rbac/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-prod.py:/opt/opsany/rbac/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/rbac/rbac-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/rbac:/opt/opsany/logs/rbac \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-rbac:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-rbac /bin/sh -c \\\n    \"python /opt/opsany/rbac/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/rbac/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_workbench_deploy(){\n    shell_log \"======Start workbench======\"\n\n    # Modify configuration\n    WORKBENCH_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.workbench_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/WORKBENCH_SECRET_KEY/${WORKBENCH_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MYSQL_OPSANY_WORKBENCH_PASSWORD/${MYSQL_OPSANY_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/MONGO_WORKBENCH_PASSWORD/${MONGO_WORKBENCH_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-workbench:2.0.0\n    #docker stop opsany-saas-ce-workbench && docker rm opsany-saas-ce-workbench\n    docker run -d --restart=always --name opsany-saas-ce-workbench \\\n       -p 7002:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-supervisor.ini:/etc/supervisord.d/workbench.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-uwsgi.ini:/opt/opsany/uwsgi/workbench.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-init.py:/opt/opsany/workbench/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-prod.py:/opt/opsany/workbench/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/workbench/workbench-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/workbench:/opt/opsany/logs/workbench \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-workbench:2.0.0\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-workbench /bin/sh -c \\\n    \"python /opt/opsany/workbench/manage.py migrate --noinput >> ${SHELL_LOG} >> ${SHELL_LOG} && python /opt/opsany/workbench/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_cmdb_deploy(){\n    shell_log \"======Start cmdb======\"\n\n    # Modify configuration\n    CMDB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmdb_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/CMDB_SECRET_KEY/${CMDB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMDB_PASSWORD/${MYSQL_OPSANY_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/MONGO_CMDB_PASSWORD/${MONGO_CMDB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-cmdb:2.0.0\n    #docker stop opsany-saas-ce-cmdb && docker rm opsany-saas-ce-cmdb\n    docker run -d --restart=always --name opsany-saas-ce-cmdb \\\n       -p 7003:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-supervisor.ini:/etc/supervisord.d/cmdb.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-uwsgi.ini:/opt/opsany/uwsgi/cmdb.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-init.py:/opt/opsany/cmdb/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-prod.py:/opt/opsany/cmdb/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmdb/cmdb-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/cmdb:/opt/opsany/logs/cmdb \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-cmdb:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-cmdb /bin/sh -c \\\n    \"python /opt/opsany/cmdb/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/cmdb/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_control_deploy(){\n    shell_log \"======Start control======\"\n    # Modify configuration\n    CONTROL_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.control_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/CONTROL_SECRET_KEY/${CONTROL_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/MYSQL_OPSANY_CONTROL_PASSWORD/${MYSQL_OPSANY_CONTROL_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-control:2.0.0\n    #docker stop opsany-saas-ce-control && docker rm opsany-saas-ce-control\n    docker run -d --restart=always --name opsany-saas-ce-control \\\n       -p 7004:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-supervisor.ini:/etc/supervisord.d/control.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-uwsgi.ini:/opt/opsany/uwsgi/control.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-init.py:/opt/opsany/control/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-prod.py:/opt/opsany/control/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/control/control-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-control:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-control /bin/sh -c \\\n    \"python /opt/opsany/control/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/control/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_job_deploy(){\n    shell_log \"======Start job======\"\n\n    # Modify configuration\n    JOB_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.job_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/JOB_SECRET_KEY/${JOB_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MYSQL_OPSANY_JOB_PASSWORD/${MYSQL_OPSANY_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/MONGO_JOB_PASSWORD/${MONGO_JOB_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-job:2.0.0\n    #docker stop opsany-saas-ce-job && docker rm opsany-saas-ce-job\n    docker run -d --restart=always --name opsany-saas-ce-job \\\n       -p 7005:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-supervisor.ini:/etc/supervisord.d/job.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-uwsgi.ini:/opt/opsany/uwsgi/job.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-init.py:/opt/opsany/job/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-prod.py:/opt/opsany/job/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/job/job-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/job:/opt/opsany/logs/job \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-job:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-job /bin/sh -c \\\n    \"python /opt/opsany/job/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/job/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_monitor_deploy(){\n    shell_log \"======Start monitor======\"\n\n    # Modify configuration\n    MONITOR_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.monitor_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MONITOR_SECRET_KEY/${MONITOR_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MYSQL_OPSANY_MONITOR_PASSWORD/${MYSQL_OPSANY_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/MONGO_MONITOR_PASSWORD/${MONGO_MONITOR_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py\n    \n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-monitor:2.0.0\n    #docker stop opsany-saas-ce-monitor && docker rm opsany-saas-ce-monitor\n    docker run -d --restart=always --name opsany-saas-ce-monitor \\\n       -p 7006:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-supervisor.ini:/etc/supervisord.d/monitor.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-uwsgi.ini:/opt/opsany/uwsgi/monitor.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-init.py:/opt/opsany/monitor/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-prod.py:/opt/opsany/monitor/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/monitor/monitor-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/monitor:/opt/opsany/logs/monitor \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-monitor:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-monitor /bin/sh -c \\\n    \"python /opt/opsany/monitor/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/monitor/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_cmp_deploy(){\n    shell_log \"======Start cmp======\"\n\n    #CMP Configure\n    CMP_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.cmp_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/CMP_SECRET_KEY/${CMP_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MYSQL_OPSANY_CMP_PASSWORD/${MYSQL_OPSANY_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/MONGO_CMP_PASSWORD/${MONGO_CMP_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py\n    \n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-cmp:2.0.0\n    #docker stop opsany-saas-ce-cmp && docker rm opsany-saas-ce-cmp\n    docker run -d --restart=always --name opsany-saas-ce-cmp \\\n       -p 7007:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-supervisor.ini:/etc/supervisord.d/cmp.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-uwsgi.ini:/opt/opsany/uwsgi/cmp.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-init.py:/opt/opsany/cmp/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-prod.py:/opt/opsany/cmp/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/cmp/cmp-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs/cmp:/opt/opsany/logs/cmp \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-cmp:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-cmp /bin/sh -c \\\n    \"python /opt/opsany/cmp/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/cmp/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_bastion_deploy(){\n    shell_log \"======Start bastion======\"\n\n    # Bastion Configure\n    BASTION_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.bastion_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/BASTION_SECRET_KEY/${BASTION_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/MYSQL_OPSANY_BASTION_PASSWORD/${MYSQL_OPSANY_BASTION_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py\n    \n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-bastion:2.0.0\n    #docker stop opsany-saas-ce-bastion && docker rm opsany-saas-ce-bastion\n    docker run -d --restart=always --name opsany-saas-ce-bastion \\\n       -p 7008:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-supervisor.ini:/etc/supervisord.d/bastion.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-uwsgi.ini:/opt/opsany/uwsgi/bastion.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-init.py:/opt/opsany/bastion/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-prod.py:/opt/opsany/bastion/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/bastion/bastion-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-bastion:2.0.0\n    \n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-bastion /bin/sh -c \\\n    \"python /opt/opsany/bastion/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/bastion/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_devops_deploy(){\n    shell_log \"======Start devops======\"\n\n    # DevOps Configure\n    DEVOPS_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.devops_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/DEVOPS_SECRET_KEY/${DEVOPS_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MYSQL_OPSANY_DEVOPS_PASSWORD/${MYSQL_OPSANY_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_IP/${MONGO_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_SERVER_PORT/${MONGO_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/MONGO_DEVOPS_PASSWORD/${MONGO_DEVOPS_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PORT/${REDIS_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_USER/${REDIS_SERVER_USER}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    sed -i \"s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py\n    \n    # Starter container   \n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-devops:2.0.0\n    #docker stop opsany-saas-ce-devops && docker rm opsany-saas-ce-devops\n    docker run -d --restart=always --name opsany-saas-ce-devops \\\n       -p 7009:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-supervisor.ini:/etc/supervisord.d/devops.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-uwsgi.ini:/opt/opsany/uwsgi/devops.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-init.py:/opt/opsany/devops/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-prod.py:/opt/opsany/devops/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/devops/devops-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-devops:2.0.0\n        # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-devops /bin/sh -c \\\n    \"python /opt/opsany/devops/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/devops/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_dashboard_deploy(){\n    shell_log \"======Start dashboard======\"\n    \n    # Dashboard Configure\n    DASHBOARD_SECRET_KEY=$(cat ${INSTALL_PATH}/conf/.dashboard_secret_key)\n    sed -i \"s/DOMAIN_NAME/${DOMAIN_NAME}/g\" ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-init.py\n    sed -i \"s/DASHBOARD_SECRET_KEY/${DASHBOARD_SECRET_KEY}/g\" ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-init.py\n    sed -i \"s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g\" ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-prod.py\n    sed -i \"s/MYSQL_SERVER_PORT/${MYSQL_SERVER_PORT}/g\" ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-prod.py\n    sed -i \"s/MYSQL_OPSANY_DASHBOARD_PASSWORD/${MYSQL_OPSANY_DASHBOARD_PASSWORD}/g\" ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-prod.py\n\n    # Starter container\n    docker pull ${PAAS_DOCKER_REG}/opsany-saas-ce-dashboard:2.0.0\n    #docker stop opsany-saas-ce-dashboard && docker rm opsany-saas-ce-dashboard\n    docker run -d --restart=always --name opsany-saas-ce-dashboard \\\n       -p 7010:80 \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-supervisor.ini:/etc/supervisord.d/dashboard.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-uwsgi.ini:/opt/opsany/uwsgi/dashboard.ini \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-init.py:/opt/opsany/dashboard/config/__init__.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-prod.py:/opt/opsany/dashboard/config/prod.py \\\n       -v ${INSTALL_PATH}/conf/opsany-saas/dashboard/dashboard-nginx.conf:/etc/nginx/http.d/default.conf \\\n       -v ${INSTALL_PATH}/logs:/opt/opsany/logs \\\n       -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \\\n       -v /etc/localtime:/etc/localtime:ro \\\n       ${PAAS_DOCKER_REG}/opsany-saas-ce-dashboard:2.0.0\n\n    # Django migrate\n    docker exec -e BK_ENV=\"production\" opsany-saas-ce-dashboard /bin/sh -c \\\n    \"python /opt/opsany/dashboard/manage.py migrate --noinput >> ${SHELL_LOG} && python /opt/opsany/dashboard/manage.py createcachetable django_cache > /dev/null\"\n}\n\nsaas_base_init(){\n    shell_log \"======OpsAny User Initialize======\"\n    sleep 3\n    python3 ../saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code workbench cmdb control job cmp bastion\n    shell_warning_log \"======OpsAny: Make Ops Perfect======\" \n}\n\nsaas_monitor_init(){\n    python3 ../saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code monitor dashboard\n}\n\nsaas_devops_init(){\n    python3 ../saas/sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code monitor devops\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    login)\n        saas_login_update\n        ;;\n    esb)\n        saas_esb_update\n        ;;\n    websocket)\n        saas_websocket_update\n        ;;\n\tbase)\n        update_init\n        saas_login_update\n        saas_esb_update\n        saas_websocket_update\n        openresty_update\n        proxy_update\n\t    saas_rbac_deploy\n\t    saas_workbench_deploy\n\t    saas_cmdb_deploy\n\t    saas_control_deploy\n\t    saas_job_deploy\n\t    saas_cmp_deploy\n\t    saas_bastion_deploy\n        saas_base_init\n\t\t;;\n\tmonitor)\n        saas_dashboard_deploy\n\t    saas_monitor_deploy\n        saas_monitor_init\n\t    ;;\n\tdevops)\n\t    saas_devops_deploy\n        saas_devops_init\n\t    ;;\n    all)\n        update_init\n        saas_login_update\n        saas_esb_update\n        saas_websocket_update\n        openresty_update\n        proxy_update\n\t    saas_rbac_deploy\n\t    saas_workbench_deploy\n\t    saas_cmdb_deploy\n\t    saas_control_deploy\n\t    saas_job_deploy\n\t    saas_cmp_deploy\n\t    saas_bastion_deploy\n\t    saas_dashboard_deploy\n        saas_monitor_deploy\n        saas_devops_deploy\n        saas_base_init\n        saas_monitor_init\n        saas_devops_init\n        ;;\n\thelp|*)\n\t    echo $\"Usage: $0 {base|monitor|devops|all|help}\"\n\t    ;;\n    esac\n}\n\nmain $1 \n"
  },
  {
    "path": "install/uploads/control/collect/script/collect_script.txt",
    "content": ""
  },
  {
    "path": "install/uploads/control/metric/logo/metric_logo.txt",
    "content": ""
  },
  {
    "path": "install/uploads/control/minion_cache_file/minion_cache_file.txt",
    "content": ""
  },
  {
    "path": "install/zabbix-agent.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: https://www.opsany.com/\n# Description:  Zabbix Agent Install Script\n#******************************************\n#Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n#Shell ENV\nSHELL_NAME=\"zabbix-agent.sh\"\nSHELL_LOG=\"/var/log/zabbix-agent.log\"\n\n#Log Record\nshell_log(){\n  LOG_INFO=$1\n  echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n  echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# OS Suprrort\nos_support(){\n    declare -A linux_distros=(\n        [\"Ubuntu\"]=\"18.04, 20.04, 22.04, 24.04 )\"\n        [\"Debian\"]=\"10 (Buster), 11 (Bullseye), 12 (Bookworm)\"\n        [\"CentOS\"]=\"7, 8, 9\"\n        [\"Rocky Linux\"]=\"8, 9\"\n        [\"Alma Linux\"]=\"8, 9\"\n        [\"openSUSE\"]=\"15.3, 15.4\"\n        [\"RHEL\"]=\"7, 8, 9\"\n    )\n\n    echo \"OS Support：\"\n    for distro in \"${!linux_distros[@]}\"; do\n        echo \"$distro: ${linux_distros[$distro]}\"\n    done\n}\n\n\n# OS ARCH\nOS_ARCH=$(LANG=C && lscpu | grep Architecture | awk -F ' ' '{print $2}')\n\n# OS Type\nif [ -f /etc/os-release ]; then\n    . /etc/os-release\n    OS_VERSION=$VERSION_ID\n    OS_ID=$ID\n    OS=\"${OS_ID}\"_\"${OS_VERSION}\"\nelse\n    OS_VERSION=$(uname -r)\n    OS_ID=\"Unknown\"\n    shell_log \"This OS is not supported!\"\n    os_supprort\nfi\n\n# Install Zabbix Agent\nzabbix_agent_install(){\n    #ubuntu 18.04\n    if [ \"$OS\" == \"ubuntu_18.04\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then \n\t        curl --insecure -o /usr/local/zabbix-agent_5.0.44-1+bionic_amd64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_5.0.44-1+bionic_amd64.deb\n            dpkg -i /usr/local/zabbix-agent_5.0.44-1+bionic_amd64.deb\n        elif [ \"$OS_ARCH\" == \"x86\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_5.0.44-1+bionic_i386.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_5.0.44-1+bionic_i386.deb\n            dpkg -i /usr/local/zabbix-agent_5.0.44-1+bionic_i386.deb\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi  \n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#Hostname=Zabbix server#Hostname=$AGENT_HOSTNAME#g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    \n    #ubuntu 20.04\n    elif [ \"$OS\" == \"ubuntu_20.04\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_5.0.44-1+focal_amd64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_5.0.44-1+focal_amd64.deb\n            dpkg -i /usr/local/zabbix-agent_5.0.44-1+focal_amd64.deb\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_5.0.44-1+ubuntu20.04_arm64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_5.0.44-1+ubuntu20.04_arm64.deb\n            dpkg -i /usr/local/zabbix-agent_5.0.44-1+ubuntu20.04_arm64.deb\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n\t    fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n\n    # ubutnu 22.04\n    elif [ \"$OS\" == \"ubuntu_22.04\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_6.0.35-1+ubuntu22.04_amd64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_6.0.35-1+ubuntu22.04_amd64.deb\n            dpkg -i /usr/local/zabbix-agent_6.0.35-1+ubuntu22.04_amd64.deb\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_6.0.35-1+ubuntu22.04_arm64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_6.0.35-1+ubuntu22.04_arm64.deb\n            dpkg -i /usr/local/zabbix-agent_6.0.35-1+ubuntu22.04_arm64.deb\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent2 Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent2 Install Failure\"\n        fi\n    \n    # ubuntu 24.04\n    elif [ \"$OS\" == \"ubuntu_24.04\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_6.0.35-1+ubuntu24.04_amd64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_6.0.35-1+ubuntu24.04_amd64.deb\n            dpkg -i /usr/local/zabbix-agent_6.0.35-1+ubuntu24.04_amd64.deb\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent_6.0.35-1+ubuntu24.04_arm64.deb ${PROXY_URL}/uploads/agent/zabbix-agent/ubuntu/zabbix-agent_6.0.35-1+ubuntu24.04_arm64.deb\n            dpkg -i /usr/local/zabbix-agent_6.0.35-1+ubuntu24.04_arm64.deb\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent2 Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent2 Install Failure\"\n        fi\n    \n    # rocky 8\n    elif [ \"$OS\" == \"rocky_8.4\" -o \"$OS\" == \"rocky_8.5\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/rocky/zabbix-agent-7.0.5-release1.el8.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/rocky/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    \n    # rocky 9.0\n    elif [ \"$OS\" == \"rocky_9.0\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el9.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/rocky/zabbix-agent-7.0.5-release1.el9.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el9.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el9.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/rocky/zabbix-agent-7.0.5-release1.el9.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el9.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n\n    # almalinux 8\n    elif [ \"$OS\" == \"almalinux_8.3\" -o \"$OS\" == \"almalinux_8.4\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/almalinux/zabbix-agent-7.0.5-release1.el8.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/almalinux/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    \n    # alma 9.0\n    elif [ \"$OS\" == \"almalinux_9.0\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el9.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/almalinux/zabbix-agent-7.0.5-release1.el9.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el9.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el9.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/almalinux/zabbix-agent-7.0.5-release1.el9.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el9.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n\n    # debian 12\n    elif [ \"$OS\" == \"debian_12\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\tcurl --insecure -o /usr/local/zabbix-release_5.0-2+debian11_all.deb ${PROXY_URL}/uploads/agent/zabbix-agent/zabbix-release_5.0-2+debian11_all.deb\n        dpkg -i /usr/local/zabbix-release_5.0-2+debian11_all.deb && apt install -y zabbix-agent2\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl restart zabbix-agent2\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent2 Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent2 Install Failure\"\n        fi\n    \n    # centos 6\n    elif [ \"$OS\" == \"CENTOS_6\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\trpm -ivh ${PROXY_URL}/uploads/agent/zabbix-agent/zabbix-agent2-5.0.42-1.el6.x86_64.rpm\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agent2.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agent2.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agent2.conf\n\tservice zabbix-agent2 restart\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent2 Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent2 Install Failure\"\n        fi    \n    \n    # centos 7\n    elif [ \"$OS\" == \"centos_7\" -o \"$OS\" == \"euleros_2.0\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-5.0.44-1.el7.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/centos/zabbix-agent-5.0.44-1.el7.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-5.0.44-1.el7.x86_64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    \n    # centos 8\n    elif [ \"$OS\" == \"centos_8\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-6.0.35-release1.el8.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/centos/zabbix-agent-6.0.35-release1.el8.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-6.0.35-release1.el8.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-6.0.35-release1.el8.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/centos/zabbix-agent-6.0.35-release1.el8.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-6.0.35-release1.el8.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    # centos9\n    elif [ \"$OS\" == \"centos_9\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-6.0.35-release1.el9.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/centos/zabbix-agent-6.0.35-release1.el9.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-6.0.35-release1.el9.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-6.0.35-release1.el9.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/centos/zabbix-agent-6.0.35-release1.el9.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-6.0.35-release1.el9.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n\n    # openEuler 20.03\n    elif [ \"$OS\" == \"openEuler_20.03\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/openEuler/zabbix-agent-7.0.5-release1.el8.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/openEuler/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    # openEuler 22.03\n    elif [ \"$OS\" == \"openEuler_22.03\" ];then\n        shell_log \"Begin Install Agent OS: $OS_ID $OS_VERSION\"\n\t    if [ \"$OS_ARCH\" == \"x86_64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el9.x86_64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/openEuler/zabbix-agent-7.0.5-release1.el9.x86_64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el9.x86_64.rpm\n        elif [ \"$OS_ARCH\" == \"aarch64\" ];then\n            curl --insecure -o /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm ${PROXY_URL}/uploads/agent/zabbix-agent/openEuler/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n            rpm -ivh /usr/local/zabbix-agent-7.0.5-release1.el8.aarch64.rpm\n        else\n            shell_log \"This OS Arch \"$OS_ARCH\" is not supported!\"\n        fi\n        sed -i \"s#Server=127.0.0.1#Server=$ZABBIX_SERVER,172.17.0.0/16#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s#ServerActive=127.0.0.1#ServerActive=$ZABBIX_SERVER#g\" /etc/zabbix/zabbix_agentd.conf\n        sed -i \"s/Hostname=Zabbix server/Hostname=$AGENT_HOSTNAME/g\" /etc/zabbix/zabbix_agentd.conf\n        systemctl enable zabbix-agent\n        systemctl restart zabbix-agent\n        if [ $? -eq 0 ];then\n            shell_log \"Zabbix Agent Install Succeed\"\n            return 0\n        else\n            shell_log \"Zabbix Agent Install Failure\"\n        fi\n    else\n\t shell_log \"This OS -${OS}- is not support install\"\n    fi\n}\n\nzabbix_agent_remove(){\n    if [ \"$OS_ID\" == \"CENTOS\" -a \"$OS_VERSION\" -eq 6 ];then\n        service zabbix-agent2 stop\n        yum remove -y zabbix-agent2\n    elif [ \"$OS_ID\" == \"CENTOS\" -a \"$OS_VERSION\" -eq 7 ];then\n        service zabbix-agent2 stop\n        yum remove -y zabbix-agent2\n    elif [ \"$OS_ID\" == \"CENTOS\" -a \"$OS_VERSION\" -eq 8 ];then\n        service zabbix-agent2 stop\n        yum remove -y zabbix-agent2\n    elif [ \"$OS\" == \"Ubuntu_14.04\" ];then\n        /etc/init.d/zabbix-agent stop\n        apt-get remove zabbix-agent -y\n    elif [ \"$OS\" == \"Ubuntu_16.04\" ];then\n        systemctl stop zabbix-agent\n        apt-get remove zabbix-agent -y \n    elif [ \"$OS\" == \"Ubuntu_18.04\" -o \"$OS\" == \"Ubuntu_20.04\" ];then\n        systemctl stop zabbix-agent2\n        apt-get remove zabbix-agent2 -y\n    fi\n}\n\n#Usage\nusage(){\n    echo \"Usage: $0 [install|restart|start|stop|remove] zabbix_server_ip minionid paas_url\"\n}\n\nmain(){\n    ZABBIX_SERVER=$2\n    AGENT_HOSTNAME=$3\n    PROXY_URL=$4\n    case $1 in\n        install)\n            zabbix_agent_install;\n           # install_clean;\n            ;;\n        update)\n            zabbix_agent_update;\n            ;;\n        remove)\n            zabbix_agent_remove;\n            ;;\n        *)\n            usage;\n    esac\n}\n\n#Main $1: Command, $2: Zabbix Server IP, $3: HOSTNAME $4: PROXY_URL\nmain $1 $2 $3 $4\n"
  },
  {
    "path": "install/zabbix-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  Zabbix Server Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nSHELL_NAME=\"zabbix-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\n\n# Install Inspection\nif [ ! -f ./install.config ];then\n      echo \"Please Change Directory to ${INSTALL_PATH}/install\"\n      exit\nelse\n    grep '^[A-Z]' install.config > install.env\n    source ./install.env && rm -f install.env\nfi\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# Check Install requirement\ninstall_init(){\n    shell_log \"=====Begin: Init======\"\n    # Configuration file write to DB\n    pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 \\\n             -i http://mirrors.aliyun.com/pypi/simple/ \\\n             --trusted-host mirrors.aliyun.com\n    mkdir -p ${INSTALL_PATH}/{zabbix-volume/alertscripts,zabbix-volume/externalscripts,zabbix-volume/snmptraps}\n    mkdir -p ${INSTALL_PATH}/{zabbix-mysql8-volume,conf/mysql8,logs/mysql8}\n    /bin/cp ./conf/mysqld.cnf ${INSTALL_PATH}/conf/mysql8/mysqld.cnf\n}\n\n# Start Zabbix\nzabbix_5_0_install(){\n    shell_log \"=====Start Zabbix 5.0LTS======\"\n    docker run --restart=always --name opsany-zabbix-server-st2 -t \\\n      -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n      -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n      -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n      -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n      -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n      -e ZBX_JAVAGATEWAY=\"zabbix-java-gateway\" \\\n      -p 10051:10051 \\\n      -v ${INSTALL_PATH}/zabbix-volume/alertscripts:/usr/lib/zabbix/alertscripts \\\n      -v ${INSTALL_PATH}/zabbix-volume/externalscripts:/usr/lib/zabbix/externalscripts \\\n      -v ${INSTALL_PATH}/zabbix-volume/snmptraps:/var/lib/zabbix/snmptraps \\\n      -v /etc/localtime:/etc/localtime:ro \\\n      -d ${PAAS_DOCKER_REG}/zabbix-server-mysql:alpine-5.0-st2\n\n    sleep 20\n    \n    docker run --restart=always --name opsany-zabbix-web -t \\\n      -e ZBX_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n      -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n      -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n      -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n      -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n      -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n      -v /etc/localtime:/etc/localtime:ro \\\n      -e PHP_TZ=\"Asia/Shanghai\" \\\n      -e ZBX_SERVER_NAME=\"opsany-server\" \\\n      -p 8006:8080 \\\n      -d ${PAAS_DOCKER_REG}/zabbix-web-nginx-mysql:alpine-5.0-latest\n}\n\nzabbix_6_0_install(){\n\n    shell_log \"=====Start mysql 8.0======\"\n    docker run -d --restart=always --name opsany-zabbix-mysql8 \\\n    -e MYSQL_ROOT_PASSWORD=\"$MYSQL_ROOT_PASSWORD\" \\\n    -p 3307:3306 -v ${INSTALL_PATH}/zabbix-mysql8-volume:/var/lib/mysql \\\n    -v ${INSTALL_PATH}/conf/mysql8/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \\\n    -v ${INSTALL_PATH}/logs/mysql8:/var/log/mysql \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/mysql:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci\n\n    shell_log \"=====Start Zabbix 6.0 LTS======\"\n    docker run --restart=always --name opsany-zabbix-server-6.0 -t \\\n      -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n      -e DB_SERVER_PORT=\"3307\" \\\n      -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n      -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n      -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n      -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n      -p 10051:10051 \\\n      -v ${INSTALL_PATH}/zabbix-volume/alertscripts:/usr/lib/zabbix/alertscripts \\\n      -v ${INSTALL_PATH}/zabbix-volume/externalscripts:/usr/lib/zabbix/externalscripts \\\n      -v ${INSTALL_PATH}/zabbix-volume/snmptraps:/var/lib/zabbix/snmptraps \\\n      -v /etc/localtime:/etc/localtime:ro \\\n      -d ${PAAS_DOCKER_REG}/zabbix-server-mysql:6.0-centos-latest\n    sleep 20\n    \n    docker run --restart=always --name opsany-zabbix-web-6.0 -t \\\n      -e ZBX_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n      -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n      -e DB_SERVER_PORT=\"3307\" \\\n      -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n      -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n      -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n      -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n      -e PHP_TZ=\"Asia/Shanghai\" \\\n      -e ZBX_SERVER_NAME=\"opsany-server\" \\\n      -v /etc/localtime:/etc/localtime:ro \\\n      -p 8006:8080 \\\n      -d ${PAAS_DOCKER_REG}/zabbix-web-nginx-mysql:6.0-centos-latest\n}\n\nzabbix_7_0_install(){\n\n    shell_log \"=====Start Zabbix MySQL 8.0======\"\n    docker run -d --restart=always --name opsany-zabbix-mysql8 \\\n    -e MYSQL_ROOT_PASSWORD=\"$MYSQL_ROOT_PASSWORD\" \\\n    -p 3307:3306 -v ${INSTALL_PATH}/zabbix-mysql8-volume:/var/lib/mysql \\\n    -v ${INSTALL_PATH}/conf/mysql8/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \\\n    -v ${INSTALL_PATH}/logs/mysql8:/var/log/mysql \\\n    -v /etc/localtime:/etc/localtime:ro \\\n    ${PAAS_DOCKER_REG}/mysql:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=caching_sha2_password\n\n   shell_log \"=====Start Zabbix Server 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-server-7.0.3 -t \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3307\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -p 10051:10051 \\\n     -v ${INSTALL_PATH}/zabbix-volume/alertscripts:/usr/lib/zabbix/alertscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/externalscripts:/usr/lib/zabbix/externalscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/snmptraps:/var/lib/zabbix/snmptraps \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-server-mysql:7.0.3-ubuntu\n\n   sleep 15\n   shell_log \"=====Start Zabbix Web 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-web-7.0.3 -t \\\n     -e ZBX_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3307\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -e PHP_TZ=\"Asia/Shanghai\" \\\n     -e ZBX_SERVER_NAME=\"opsany-server\" \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -p 8006:8080 \\\n     -d ${PAAS_DOCKER_REG}/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\n    shell_log \"=====Start Zabbix Agent2 7.0 LTS======\"\n    docker run --restart=always --name opsany-zabbix-agent2 -t \\\n     -e ZBX_HOSTNAME=\"opsany-server\" \\\n     -e ZBX_SERVER_HOST=\"${LOCAL_IP}\" \\\n     -e ZBX_ACTIVE_ALLOW=true \\\n     -e ZBX_PASSIVE_ALLOW=false \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-agent2:7.0.3-ubuntu\n\n    shell_log \"=====Zabbix Automatic Integration======\"\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    sleep 120\n    python3 ../saas/init-ce-monitor-zabbix.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password $ADMIN_PASSWORD --zabbix_ip $LOCAL_IP --zabbix_password zabbix --grafana_ip $LOCAL_IP --grafana_password $GRAFANA_ADMIN_PASSWORD --zabbix_api_password ${ZABBIX_API_PASSWORD}  --modify_zabbix_password ${ZABBIX_ADMIN_PASSWORD} --zabbix_version 7.0\n}\n\nzabbix_install(){\n   shell_log \"=====Start Zabbix Server 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-server-7.0.3 -t \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3306\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -p 10051:10051 \\\n     -v ${INSTALL_PATH}/zabbix-volume/alertscripts:/usr/lib/zabbix/alertscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/externalscripts:/usr/lib/zabbix/externalscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/snmptraps:/var/lib/zabbix/snmptraps \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-server-mysql:7.0.3-ubuntu\n\n   sleep 15\n   shell_log \"=====Start Zabbix Web 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-web-7.0.3 -t \\\n     -e ZBX_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3307\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -e PHP_TZ=\"Asia/Shanghai\" \\\n     -e ZBX_SERVER_NAME=\"opsany-server\" \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -p 8006:8080 \\\n     -d ${PAAS_DOCKER_REG}/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\n    shell_log \"=====Start Zabbix Agent2 7.0 LTS======\"\n    docker run --restart=always --name opsany-zabbix-agent2 -t \\\n     -e ZBX_HOSTNAME=\"opsany-server\" \\\n     -e ZBX_SERVER_HOST=\"${LOCAL_IP}\" \\\n     -e ZBX_ACTIVE_ALLOW=true \\\n     -e ZBX_PASSIVE_ALLOW=false \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-agent2:7.0.3-ubuntu\n\n    shell_log \"=====Zabbix Automatic Integration======\"\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    sleep 120\n    python3 ../saas/init-ce-monitor-zabbix.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password $ADMIN_PASSWORD --zabbix_ip $LOCAL_IP --zabbix_password zabbix --grafana_ip $LOCAL_IP --grafana_password $GRAFANA_ADMIN_PASSWORD --zabbix_api_password ${ZABBIX_API_PASSWORD}  --modify_zabbix_password ${ZABBIX_ADMIN_PASSWORD} --zabbix_version 7.0\n}\n\nzabbix_install(){\n   shell_log \"=====Start Zabbix Server 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-server-7.0.3 -t \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3307\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -p 10051:10051 \\\n     -v ${INSTALL_PATH}/zabbix-volume/alertscripts:/usr/lib/zabbix/alertscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/externalscripts:/usr/lib/zabbix/externalscripts \\\n     -v ${INSTALL_PATH}/zabbix-volume/snmptraps:/var/lib/zabbix/snmptraps \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-server-mysql:7.0.3-ubuntu\n\n   sleep 15\n   shell_log \"=====Start Zabbix Web 7.0 LTS======\"\n   docker run --restart=always --name opsany-zabbix-web-7.0.3 -t \\\n     -e ZBX_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_HOST=\"${MYSQL_SERVER_IP}\" \\\n     -e DB_SERVER_PORT=\"3307\" \\\n     -e MYSQL_DATABASE=\"${ZABBIX_DB_NAME}\" \\\n     -e MYSQL_USER=\"${ZABBIX_DB_USER}\" \\\n     -e MYSQL_PASSWORD=\"${ZABBIX_DB_PASSWORD}\" \\\n     -e MYSQL_ROOT_PASSWORD=\"${MYSQL_ROOT_PASSWORD}\" \\\n     -e PHP_TZ=\"Asia/Shanghai\" \\\n     -e ZBX_SERVER_NAME=\"opsany-server\" \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -p 8006:8080 \\\n     -d ${PAAS_DOCKER_REG}/zabbix-web-nginx-mysql:7.0.3-ubuntu\n\n    shell_log \"=====Start Zabbix Agent2 7.0 LTS======\"\n    docker run --restart=always --name opsany-zabbix-agent2 -t \\\n     -e ZBX_HOSTNAME=\"opsany-server\" \\\n     -e ZBX_SERVER_HOST=\"${LOCAL_IP}\" \\\n     -e ZBX_ACTIVE_ALLOW=true \\\n     -e ZBX_PASSIVE_ALLOW=false \\\n     -v /etc/localtime:/etc/localtime:ro \\\n     -d ${PAAS_DOCKER_REG}/zabbix-agent2:7.0.3-ubuntu\n\n    shell_log \"=====Zabbix Automatic Integration======\"\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\n    sleep 120\n    python3 ../saas/init-ce-monitor-zabbix.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password $ADMIN_PASSWORD --zabbix_ip $LOCAL_IP --zabbix_password zabbix --grafana_ip $LOCAL_IP --grafana_password $GRAFANA_ADMIN_PASSWORD --zabbix_api_password ${ZABBIX_API_PASSWORD}  --modify_zabbix_password ${ZABBIX_ADMIN_PASSWORD} --zabbix_version 7.0\n}\n\nzabbix_uninstall5(){\n    shell_log \"=====Uninstall Zabbix 5.0======\"\n    docker stop opsany-zabbix-web\n    docker stop opsany-zabbix-server-st2\n    docker rm opsany-zabbix-web\n    docker rm opsany-zabbix-server-st2\n    rm -rf ${INSTALL_PATH}/zabbix-volume\n}\n\nzabbix_uninstall6(){\n    shell_log \"=====Uninstall Zabbix 6.0======\"\n    docker stop opsany-zabbix-web-6.0\n    docker stop opsany-zabbix-server-6.0\n    docker stop opsany-zabbix-mysql8\n    docker rm opsany-zabbix-web-6.0\n    docker rm opsany-zabbix-server-6.0\n    docker rm opsany-zabbix-mysql8\n    rm -rf ${INSTALL_PATH}/{zabbix-volume,logs/mysql8,conf/mysql8,zabbix-mysql8-volume}\n}\n\nzabbix_uninstall7(){\n    shell_log \"=====Uninstall Zabbix 7.0.3======\"\n    docker stop opsany-zabbix-web-7.0.3\n    docker stop opsany-zabbix-server-7.0.3\n    docker stop opsany-zabbix-mysql8\n    docker stop opsany-zabbix-agent2\n    docker rm opsany-zabbix-web-7.0.3\n    docker rm opsany-zabbix-server-7.0.3\n    docker rm opsany-zabbix-mysql8\n    docker rm opsany-zabbix-agent2\n    rm -rf ${INSTALL_PATH}/{zabbix-volume,logs/mysql8,conf/mysql8,zabbix-mysql8-volume}\n}\n\n# Main\nmain(){\n    case \"$1\" in\n    5.0)\n        install_init\n        zabbix_5_0_install\n        ;;\n    6.0)\n        install_init\n        zabbix_6_0_install\n        ;;\n    7.0)\n        install_init\n        zabbix_7_0_install\n        ;;\n    install)\n        install_init\n        zabbix_install\n        ;;\n    uninstall5)\n        zabbix_uninstall5\n        ;;\n    uninstall6)\n        zabbix_uninstall6\n        ;;\n    uninstall7)\n        zabbix_uninstall7\n        ;;\n        help|*)\n                echo $\"Usage: $0 {5.0|6.0|7.0|install|uninstall5|uninstall6|uninstall7|help}\"\n                ;;\nesac\n}\n\nmain $1\n"
  },
  {
    "path": "kubernetes/.gitkeep",
    "content": ""
  },
  {
    "path": "kubernetes/README.md",
    "content": "# OpsAny社区版Kuberntes部署\n\nOpsAny社区版使用Helm进行基于Kubernetes的部署，请参阅官方文档-部署手册。\n"
  },
  {
    "path": "kubernetes/addons/metrics-server.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: metrics-server\n  namespace: kube-system\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    k8s-app: metrics-server\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n  name: system:aggregated-metrics-reader\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - pods\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: system:metrics-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - nodes\n  - nodes/stats\n  - namespaces\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: metrics-server-auth-reader\n  namespace: kube-system\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: extension-apiserver-authentication-reader\nsubjects:\n- kind: ServiceAccount\n  name: metrics-server\n  namespace: kube-system\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: metrics-server:system:auth-delegator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:auth-delegator\nsubjects:\n- kind: ServiceAccount\n  name: metrics-server\n  namespace: kube-system\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: system:metrics-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:metrics-server\nsubjects:\n- kind: ServiceAccount\n  name: metrics-server\n  namespace: kube-system\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: metrics-server\n  namespace: kube-system\nspec:\n  ports:\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: https\n  selector:\n    k8s-app: metrics-server\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: metrics-server\n  namespace: kube-system\nspec:\n  selector:\n    matchLabels:\n      k8s-app: metrics-server\n  strategy:\n    rollingUpdate:\n      maxUnavailable: 0\n  template:\n    metadata:\n      labels:\n        k8s-app: metrics-server\n    spec:\n      containers:\n      - args:\n        - --cert-dir=/tmp\n        - --secure-port=443\n        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname\n        - --kubelet-use-node-status-port\n        - --metric-resolution=15s\n        - --kubelet-insecure-tls\n        image: registry.cn-beijing.aliyuncs.com/opsany/metrics-server:v0.5.0\n        imagePullPolicy: IfNotPresent\n        livenessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 10\n        name: metrics-server\n        ports:\n        - containerPort: 443\n          name: https\n          protocol: TCP\n        readinessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /readyz\n            port: https\n            scheme: HTTPS\n          initialDelaySeconds: 20\n          periodSeconds: 10\n        resources:\n          requests:\n            cpu: 100m\n            memory: 200Mi\n        securityContext:\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 1000\n        volumeMounts:\n        - mountPath: /tmp\n          name: tmp-dir\n      nodeSelector:\n        kubernetes.io/os: linux\n      priorityClassName: system-cluster-critical\n      serviceAccountName: metrics-server\n      volumes:\n      - emptyDir: {}\n        name: tmp-dir\n---\napiVersion: apiregistration.k8s.io/v1\nkind: APIService\nmetadata:\n  labels:\n    k8s-app: metrics-server\n  name: v1beta1.metrics.k8s.io\nspec:\n  group: metrics.k8s.io\n  groupPriorityMinimum: 100\n  insecureSkipTLSVerify: true\n  service:\n    name: metrics-server\n    namespace: kube-system\n  version: v1beta1\n  versionPriority: 100\n"
  },
  {
    "path": "kubernetes/addons/mysql-operator/README.md",
    "content": "# MySQL Operator使用\n\n## 部署MySQL Operator\n\n1. 安装CRD\n\n```\nkubectl apply -f deploy-crds.yaml\n```\n\n2. 安装控制器\n\n```\n# 执行安装\nkubectl apply -f deploy-operator.yaml\n\n# 查看安装结果\nkubectl get deployment mysql-operator --namespace mysql-operator\n\n# 出现以下类似内容，为安装成功\nNAME             READY   UP-TO-DATE   AVAILABLE   AGE\nmysql-operator   1/1     1            1           37s\n```\n\n## 使用MySQL Operator\n\n"
  },
  {
    "path": "kubernetes/addons/mysql-operator/deploy-crds.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: innodbclusters.mysql.oracle.com\nspec:\n  group: mysql.oracle.com\n  versions:\n    - name: v2\n      served: true\n      storage: true\n      schema:\n        openAPIV3Schema:\n          type: object\n          required: [\"spec\"]\n          properties:\n            metadata:\n              type: object\n              properties:\n                name:\n                  type: string\n                  maxLength: 40\n            spec:\n              type: object\n              required: [\"secretName\"]\n              properties:\n                secretName:\n                  type: string\n                  description: \"Name of a generic type Secret containing root/default account password\"\n                tlsCASecretName:\n                  type: string\n                  description: \"Name of a generic type Secret containing CA (ca.pem) and optional CRL (crl.pem) for SSL\"\n                tlsSecretName:\n                  type: string\n                  description: \"Name of a TLS type Secret containing Server certificate and private key for SSL\"\n                tlsUseSelfSigned:\n                  type: boolean\n                  default: false\n                  description: \"Enables use of self-signed TLS certificates, reducing or disabling TLS based security verifications\"\n                version:\n                  type: string\n                  pattern: '^\\d+\\.\\d+\\.\\d+(-.+)?'\n                  description: \"MySQL Server version\"\n                edition:\n                  type: string\n                  pattern: \"^(community|enterprise)$\"\n                  description: \"MySQL Server Edition (community or enterprise)\"\n                imageRepository:\n                  type: string\n                  description: \"Repository where images are pulled from; defaults to container-registry.oracle.com/mysql\"\n                imagePullPolicy:\n                  type: string\n                  description: \"Defaults to Always, but set to IfNotPresent in deploy-operator.yaml when deploying Operator\"\n                imagePullSecrets:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                serviceAccountName:\n                  type: string\n                baseServerId:\n                  type: integer\n                  minimum: 0\n                  maximum: 4294967195\n                  default: 1000\n                  description: \"Base value for MySQL server_id for instances in the cluster\"\n                datadirVolumeClaimTemplate:\n                  type: object\n                  x-kubernetes-preserve-unknown-fields: true\n                  description: \"Template for a PersistentVolumeClaim, to be used as datadir\"\n                datadirPermissions:\n                  type: object\n                  properties:\n                    setRightsUsingInitContainer:\n                      type: boolean\n                      default: true\n                      description: \"Whether to use an init container to set at start the DataDir permissions \"\n                    fsGroupChangePolicy:\n                      type: string\n                      description: \"Optional fsGroupChangePolicy value to be set in the pod security context. Some possible values are OnRootMismatch and Always. For more information check the official Kubernetes documentation\"\n                      default: \"\"\n                mycnf:\n                  type: string\n                  description: \"Custom configuration additions for my.cnf\"\n                instances:\n                  type: integer\n                  minimum: 1\n                  maximum: 9\n                  default: 1\n                  description: \"Number of MySQL replica instances for the cluster\"\n                podSpec:\n                  type: object\n                  x-kubernetes-preserve-unknown-fields: true\n                podAnnotations:\n                  type: object\n                  x-kubernetes-preserve-unknown-fields: true\n                podLabels:\n                  type: object\n                  x-kubernetes-preserve-unknown-fields: true\n                keyring:\n                  type: object\n                  description: \"Keyring specification\"\n                  properties:\n                    file:\n                      type: object\n                      description: \"Keyring 'File' specification\"\n                      required: [\"storage\"]\n                      properties:\n                        fileName:\n                          type: string\n                          default: \"mysql_keyring\"\n                          description: \"Path to the keyring file name inside the storage volume (will be prefixed by mount path)\"\n                        readOnly:\n                          type: boolean\n                          default: false\n                          description: \"Whether to open the keyring file in read-only mode\"\n                        storage:\n                          type: object\n                          description : \"Specification of the volume to be mounted where the keyring file resides\"\n                          x-kubernetes-preserve-unknown-fields: true\n                    encryptedFile:\n                      type: object\n                      description: \"Keyring 'Encrypted File' specification\"\n                      required: [\"storage\", \"password\"]\n                      properties:\n                        fileName:\n                          type: string\n                          default: \"mysql_keyring\"\n                          description: \"Path to the keyring file name inside the storage volume (will be prefixed by mount path)\"\n                        readOnly:\n                          type: boolean\n                          default: false\n                          description: \"Whether to open the keyring file in read-only mode\"\n                        password:\n                          type: string\n                          description: \"Name of a secret that contains password for the keyring in the key 'keyring_password'\"\n                        storage:\n                          type: object\n                          description : \"Specification of the volume to be mounted where the keyring file resides\"\n                          x-kubernetes-preserve-unknown-fields: true\n                    oci:\n                      type: object\n                      description: \"Keyring 'OCI' specification\"\n                      required: [\"user\", \"keySecret\", \"keyFingerprint\", \"tenancy\"]\n                      properties:\n                        user:\n                          type: string\n                          description: \"User identifier in the form of ocid1.user.oc1...\"\n                          pattern: '^ocid1\\.user\\.'\n                        keySecret:\n                          type: string\n                          description: \"A secret that contains the private key under the field 'privatekey'\"\n                        keyFingerprint:\n                          type: string\n                          description: \"Private key fingerprint\"\n                          pattern: '([0-9a-f]{2}:){15}[0-9a-f]{2}$'\n                        tenancy:\n                          type: string\n                          description: \"Tenancy identifier in the form ocid1.tenancy.oc1...\"\n                          pattern:  '^ocid1\\.tenancy\\.'\n                        compartment:\n                          type: string\n                          description: \"Compartment identifier in the form ocid1.compartment.oc1...\"\n                          pattern:  '^ocid1\\.compartment\\.'\n                        virtualVault:\n                          type: string\n                          description: \"Vault identifier in the form ocid1.vault.oc1...\"\n                          pattern:  '^ocid1\\.vault\\.'\n                        masterKey:\n                          type: string\n                          description: \"Master key identified in the form ocid1.key.oc1...\"\n                          pattern:  '^ocid1\\.key\\.'\n                        endpoints:\n                          type: object\n                          description: \"\"\n                          properties:\n                            encryption:\n                              type: string\n                              description: \"Encryption endpoint URI like {identifier}-crypto.kms.{region}.oraclecloud.com\"\n                            management:\n                              type: string\n                              description: \"Management endpoint URI like {identifier}-management.kms.{region}.oraclecloud.com\"\n                            vaults:\n                              type: string\n                              description: \"Vaults endpoint URI like vaults.{region}.oci.oraclecloud.com\"\n                            secrets:\n                              type: string\n                              description: \"Secrets endpoint URI like secrets.vaults.{region}.oci.oraclecloud.com\"\n                        caCertificate:\n                          type: string\n                          description: \"Secret that contains ca.crt field with CA certificate bundle file that the keyring_oci plugin uses for Oracle Cloud Infrastructure certificate verification\"\n                initDB:\n                  type: object\n                  properties:\n                    clone:\n                      type: object\n                      required: [\"donorUrl\", \"secretKeyRef\"]\n                      properties:\n                        donorUrl:\n                          type: string\n                          description: \"URL of the cluster to clone from\"\n                        rootUser:\n                          type: string\n                          default: \"root\"\n                          description: \"User name used for cloning\"\n                        secretKeyRef:\n                          type: object\n                          required: [\"name\"]\n                          properties:\n                            name:\n                              type: string\n                              description: \"Secret name with key 'rootPassword' storing the password for the user specified in rootUser\"\n                    dump:\n                      type: object\n                      required: [\"storage\"]\n                      properties:\n                        name:\n                          type: string\n                          description: \"Name of the dump. Not used by the operator, but a descriptive hint for the cluster administrator\"\n                        path:\n                          type: string\n                          description: \"Path to the dump in the PVC. Use when specifying persistentVolumeClaim. Omit for ociObjectStorage, S3, or azure.\"\n                        options:\n                          type: object\n                          description: \"A dictionary of key-value pairs passed directly to MySQL Shell's loadDump()\"\n                          x-kubernetes-preserve-unknown-fields: true\n                        storage:\n                          type: object\n                          properties:\n                            ociObjectStorage:\n                              type: object\n                              required: [\"bucketName\", \"prefix\", \"credentials\"]\n                              properties:\n                                bucketName:\n                                  type: string\n                                  description: \"Name of the OCI bucket where the dump is stored\"\n                                prefix:\n                                  type: string\n                                  description: \"Path in the bucket where the dump files are stored\"\n                                credentials:\n                                  type: string\n                                  description: \"Name of a Secret with data for accessing the bucket\"\n                            s3:\n                              type: object\n                              required: [\"bucketName\", \"prefix\", \"config\"]\n                              properties:\n                                bucketName:\n                                  type: string\n                                  description: \"Name of the S3 bucket where the dump is stored\"\n                                prefix:\n                                  type: string\n                                  description: \"Path in the bucket where the dump files are stored\"\n                                config:\n                                  type: string\n                                  description: \"Name of a Secret with S3 configuration and credentials\"\n                                profile:\n                                  type: string\n                                  default: \"\"\n                                  description: \"Profile being used in configuration files\"\n                                endpoint:\n                                  type: string\n                                  description: \"Override endpoint URL\"\n                            azure:\n                              type: object\n                              required: [\"containerName\", \"prefix\", \"config\"]\n                              properties:\n                                containerName:\n                                  type: string\n                                  description: \"Name of the Azure  BLOB Storage container where the dump is stored\"\n                                prefix:\n                                  type: string\n                                  description: \"Path in the container where the dump files are stored\"\n                                config:\n                                  type: string\n                                  description: \"Name of a Secret with Azure BLOB Storage configuration and credentials\"\n                            persistentVolumeClaim:\n                              type: object\n                              description : \"Specification of the PVC to be used. Used 'as is' in the cloning pod.\"\n                              x-kubernetes-preserve-unknown-fields: true\n                          x-kubernetes-preserve-unknown-fields: true\n                  x-kubernetes-preserve-unknown-fields: true\n                router:\n                  type: object\n                  description: \"MySQL Router specification\"\n                  properties:\n                    instances:\n                      type: integer\n                      minimum: 0\n                      default: 1\n                      description: \"Number of MySQL Router instances to deploy\"\n                    tlsSecretName:\n                      type: string\n                      description: \"Name of a TLS type Secret containing MySQL Router certificate and private key used for SSL\"\n                    version:\n                      type: string\n                      pattern: '^\\d+\\.\\d+\\.\\d+(-.+)?'\n                      description: \"Override MySQL Router version\"\n                    podSpec:\n                      type: object\n                      x-kubernetes-preserve-unknown-fields: true\n                    podAnnotations:\n                      type: object\n                      x-kubernetes-preserve-unknown-fields: true\n                    podLabels:\n                      type: object\n                      x-kubernetes-preserve-unknown-fields: true\n                    bootstrapOptions:\n                      description: \"Command line options passed to MySQL Router while bootstrapping\"\n                      type: array\n                      items:\n                        type: string\n                    options:\n                      description: \"Command line options passed to MySQL Router while running\"\n                      type: array\n                      items:\n                        type: string\n                    routingOptions:\n                      description: \"Set routing options for the cluster\"\n                      type: object\n                      properties:\n                        # naming pattern follows Shell's naming documented at\n                        # https://dev.mysql.com/doc/mysql-shell/8.1/en/innodb-clusterset-router-setroutingoption.html\n                        # ClusterSet-related options and tags currently not supported\n                        invalidated_cluster_policy:\n                          type: string\n                          enum: [\"drop_all\", \"accept_ro\"]\n                        stats_updates_frequency:\n                          type: integer\n                          default: 0\n                          minimum: 0\n                        read_only_targets:\n                          type: string\n                          enum: [\"all\", \"read_replicas\", \"secondaries\"]\n                instanceService:\n                  type: object\n                  description: \"Configuration of the Service used by the InnoDB Cluster GR members internally\"\n                  properties:\n                    annotations:\n                      type: object\n                      description: \"Custom annotations for the Service\"\n                      x-kubernetes-preserve-unknown-fields: true\n                    labels:\n                      type: object\n                      description: \"Custom labels for the Service\"\n                      x-kubernetes-preserve-unknown-fields: true\n                service:\n                  type: object\n                  description: \"Configuration of the Service used by applications connecting to the InnoDB Cluster\"\n                  properties:\n                    type:\n                      type: string\n                      enum: [\"ClusterIP\", \"NodePort\", \"LoadBalancer\"]\n                      default: \"ClusterIP\"\n                    annotations:\n                      type: object\n                      description: \"Custom annotations for the Service\"\n                      x-kubernetes-preserve-unknown-fields: true\n                    labels:\n                      type: object\n                      description: \"Custom labels for the Service\"\n                      x-kubernetes-preserve-unknown-fields: true\n                    defaultPort:\n                      type: string\n                      description: \"Target for the Service's default (3306) port. If mysql-rw traffic will go to the primary and allow read and write operations, with mysql-ro traffic goes to the replica and allows only read operations, with mysql-rw-split the router's read-write-splitting will be targeted\"\n                      enum: [\"mysql-rw\", \"mysql-ro\", \"mysql-rw-split\"]\n                      default: \"mysql-rw\"\n\n                metrics:\n                  type: object\n                  description: \"Configuration of a Prometheus-style metrics provider\"\n                  required: [\"enable\", \"image\"]\n                  properties:\n                    enable:\n                      type: boolean\n                      default: false\n                      description: \"Toggle to enable or disable the metrics sidecar\"\n                    image:\n                      type: string\n                      description: \"Name of an image to be used for the metrics sidecar, if provided metrics will be enabled\"\n                    options:\n                      type: array\n                      description: \"Options passed to the metrics provider as command line arguments\"\n                      items:\n                        type: string\n                    webConfig:\n                      type: string\n                      description: \"Name of a ConfigMap with a web.config file, if this option is provided a command line option --web.config.file is added\"\n                    tlsSecret:\n                      type: string\n                      description: \"Name of a Secret with TLS certificate, key and CA, which will be mounted at /tls into the container an can be used from webConfig\"\n                    monitor:\n                      type: boolean\n                      description: \"Create a ServiceMonitor for Prometheus Operator\"\n                      default: false\n                    monitorSpec:\n                      type: object\n                      x-kubernetes-preserve-unknown-fields: true\n                      description: \"Custom configuration for the ServiceMonitor object\"\n                      default: {}\n\n                    # These are only supported for development purpose:\n                    #dbUser:\n                    #  type: object\n                    #  description: \"MySQL user accoutn to be used for collecting metrics\"\n                    #  properties:\n                    #    name:\n                    #      type: string\n                    #      description: \"The account name, host part will always be localhost\"\n                    #      default: mysqlmetrics\n                    #    grants:\n                    #      type: array\n                    #      description: \"GRANTs given to the account\"\n                    #      default: [ 'PROCESS', 'REPLICATION CLIENT', 'SELECT' ]\n                    #      items:\n                    #        type: string\n                    #    maxConnections:\n                    #      type: integer\n                    #      default: 3\n                    #      description: \"Maximum number of connections\"\n\n                backupProfiles:\n                  type: array\n                  description: \"Backup profile specifications for the cluster, which can be referenced from backup schedules and one-off backup jobs\"\n                  items:\n                    type: object\n                    required: [\"name\"]\n                    properties:\n                      name:\n                        type: string\n                        description: \"Embedded backup profile, referenced as backupProfileName elsewhere\"\n                      podAnnotations:\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      podLabels:\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      dumpInstance:\n                        type: object\n                        properties:\n                          dumpOptions:\n                            type: object\n                            description: \"A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()\"\n                            x-kubernetes-preserve-unknown-fields: true\n                          storage:\n                            type: object\n                            properties:\n                              ociObjectStorage:\n                                type: object\n                                required: [\"bucketName\", \"credentials\"]\n                                properties:\n                                  bucketName:\n                                    type: string\n                                    description: \"Name of the OCI bucket where backup is stored\"\n                                  prefix:\n                                    type: string\n                                    description: \"Path in bucket where backup is stored\"\n                                  credentials:\n                                    type: string\n                                    description: \"Name of a Secret with data for accessing the bucket\"\n                              s3:\n                                type: object\n                                required: [\"bucketName\", \"config\"]\n                                properties:\n                                  bucketName:\n                                    type: string\n                                    description: \"Name of the S3 bucket where the dump is stored\"\n                                  prefix:\n                                    type: string\n                                    description: \"Path in the bucket where the dump files are stored\"\n                                  config:\n                                    type: string\n                                    description: \"Name of a Secret with S3 configuration and credentials\"\n                                  profile:\n                                    type: string\n                                    default: \"\"\n                                    description: \"Profile being used in configuration files\"\n                                  endpoint:\n                                    type: string\n                                    description: \"Override endpoint URL\"\n                              azure:\n                                type: object\n                                required: [\"containerName\", \"config\"]\n                                properties:\n                                  containerName:\n                                    type: string\n                                    description: \"Name of the Azure  BLOB Storage container where the dump is stored\"\n                                  prefix:\n                                    type: string\n                                    description: \"Path in the container where the dump files are stored\"\n                                  config:\n                                    type: string\n                                    description: \"Name of a Secret with Azure BLOB Storage configuration and credentials\"\n                              persistentVolumeClaim:\n                                type: object\n                                description : \"Specification of the PVC to be used. Used 'as is' in pod executing the backup.\"\n                                x-kubernetes-preserve-unknown-fields: true\n                            x-kubernetes-preserve-unknown-fields: true\n                      snapshot:\n                        type: object\n                        properties:\n                          storage:\n                            type: object\n                            properties:\n                              ociObjectStorage:\n                                type: object\n                                required: [\"bucketName\", \"credentials\"]\n                                properties:\n                                  bucketName:\n                                    type: string\n                                    description: \"Bucket name where backup is stored\"\n                                  prefix:\n                                    type: string\n                                    description: \"Path in bucket where backup is stored\"\n                                  credentials:\n                                    type: string\n                                    description: \"Name of a Secret with data for accessing the bucket\"\n                              s3:\n                                type: object\n                                required: [\"bucketName\", \"config\"]\n                                properties:\n                                  bucketName:\n                                    type: string\n                                    description: \"Name of the S3 bucket where the dump is stored\"\n                                  prefix:\n                                    type: string\n                                    description: \"Path in the bucket where the dump files are stored\"\n                                  config:\n                                    type: string\n                                    description: \"Name of a Secret with S3 configuration and credentials\"\n                                  profile:\n                                    type: string\n                                    default: \"\"\n                                    description: \"Profile being used in configuration files\"\n                                  endpoint:\n                                    type: string\n                                    description: \"Override endpoint URL\"\n                              azure:\n                                type: object\n                                required: [\"containerName\", \"config\"]\n                                properties:\n                                  containerName:\n                                    type: string\n                                    description: \"Name of the Azure  BLOB Storage container where the dump is stored\"\n                                  prefix:\n                                    type: string\n                                    description: \"Path in the container where the dump files are stored\"\n                                  config:\n                                    type: string\n                                    description: \"Name of a Secret with Azure BLOB Storage configuration and credentials\"\n                              persistentVolumeClaim:\n                                type: object\n                                description : \"Specification of the PVC to be used. Used 'as is' in pod executing the backup.\"\n                                x-kubernetes-preserve-unknown-fields: true\n                            x-kubernetes-preserve-unknown-fields: true\n                    x-kubernetes-preserve-unknown-fields: true\n                backupSchedules:\n                  type: array\n                  description: \"Schedules for periodically executed backups\"\n                  items:\n                    type: object\n                    required: [\"name\", \"schedule\"]\n                    x-kubernetes-preserve-unknown-fields: true\n                    properties:\n                      name:\n                        type: string\n                        description: \"Name of the backup schedule\"\n                      schedule:\n                        type: string\n                        description: \"The schedule of the job, syntax as a cron expression\"\n                      backupProfileName:\n                        type: string\n                        description: \"Name of the backupProfile to be used\"\n                      backupProfile:\n                        type: object\n                        description: \"backupProfile specification if backupProfileName is not specified\"\n                        x-kubernetes-preserve-unknown-fields: true\n                        properties:\n                          podAnnotations:\n                            type: object\n                            x-kubernetes-preserve-unknown-fields: true\n                          podLabels:\n                            type: object\n                            x-kubernetes-preserve-unknown-fields: true\n                          dumpInstance:\n                            type: object\n                            properties:\n                              dumpOptions:\n                                type: object\n                                description: \"A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()\"\n                                x-kubernetes-preserve-unknown-fields: true\n                              storage:\n                                type: object\n                                properties:\n                                  ociObjectStorage:\n                                    type: object\n                                    required: [\"bucketName\", \"credentials\"]\n                                    properties:\n                                      bucketName:\n                                        type: string\n                                        description: \"Name of the OCI Bucket where backup is stored\"\n                                      prefix:\n                                        type: string\n                                        description: \"Path in bucket where backup is stored\"\n                                      credentials:\n                                        type: string\n                                        description: \"Name of a Secret with data for accessing the bucket\"\n                                  s3:\n                                    type: object\n                                    required: [\"bucketName\", \"config\"]\n                                    properties:\n                                      bucketName:\n                                        type: string\n                                        description: \"Name of the S3 bucket where the dump is stored\"\n                                      prefix:\n                                        type: string\n                                        description: \"Path in the bucket where the dump files are stored\"\n                                      config:\n                                        type: string\n                                        description: \"Name of a Secret with S3 configuration and credentials\"\n                                      profile:\n                                        type: string\n                                        default: \"\"\n                                        description: \"Profile being used in configuration files\"\n                                      endpoint:\n                                        type: string\n                                        description: \"Override endpoint URL\"\n                                  azure:\n                                    type: object\n                                    required: [\"containerName\", \"config\"]\n                                    properties:\n                                      containerName:\n                                        type: string\n                                        description: \"Name of the Azure  BLOB Storage container where the dump is stored\"\n                                      prefix:\n                                        type: string\n                                        description: \"Path in the container where the dump files are stored\"\n                                      config:\n                                        type: string\n                                        description: \"Name of a Secret with Azure BLOB Storage configuration and credentials\"\n                                  persistentVolumeClaim:\n                                    type: object\n                                    description : \"Specification of the PVC to be used. Used 'as is' in pod executing the backup.\"\n                                    x-kubernetes-preserve-unknown-fields: true\n                                x-kubernetes-preserve-unknown-fields: true\n                      deleteBackupData:\n                        type: boolean\n                        default: false\n                        description: \"Whether to delete the backup data in case the MySQLBackup object created by the job is deleted\"\n                      enabled:\n                        type: boolean\n                        default: true\n                        description: \"Whether the schedule is enabled or not\"\n                      timeZone:\n                        type: string\n                        description: \"Timezone for the backup schedule, example: 'America/New_York'\"\n                logs:\n                  type: object\n                  properties:\n                    general:\n                      type: object\n                      properties:\n                        enabled:\n                          type: boolean\n                          default: false\n                          description: \"Whether general logging should be enabled\"\n                        collect:\n                          type: boolean\n                          default: false\n                          description: \"Whether general logging data should be collected. Implies that the logging should be enabled.\"\n                    error:\n                      type: object\n                      properties:\n                        collect:\n                          type: boolean\n                          default: false\n                          description: \"Whether error logging data should be collected. Implies that the logging should be enabled. If enabled the error log will be switched to JSON format output\"\n                        verbosity:\n                          type: integer\n                          default: 3\n                          minimum: 1\n                          maximum: 3\n                          description: \"Log error verbosity. For details, see the MySQL Server --log-error-verbosity documentation.\"\n                    slowQuery:\n                      type: object\n                      properties:\n                        enabled:\n                          type: boolean\n                          default: false\n                          description: \"Whether slow query logging should be enabled\"\n                        longQueryTime:\n                          type: number\n                          minimum: 0\n                          default: 10\n                          description: \"Long query time threshold\"\n                        collect:\n                          type: boolean\n                          default: false\n                          description: \"Whether slow query logging data should be collected. Implies that the logging should be enabled.\"\n                    collector:\n                      type: object\n                      oneOf:\n                      - required: [\"image\", \"fluentd\"]\n                      properties:\n                        image:\n                          type: string\n                          description: \"Name of an image, including registry and repository, to be used for the log collector sidecar. If provided it needs to be an image for the configured collector type.\"\n                        containerName:\n                          type: string\n                          default: \"logcollector\"\n                          description: \"Name of the collector container sidecar\"\n                        env:\n                          type: array\n                          items:\n                            type: object\n                            description: \"Environment variables to be passed to the image. Definition will be directly copied like podSpec fields are\"\n                            x-kubernetes-preserve-unknown-fields: true\n                        fluentd:\n                          type: object\n                          description: \"Properties of the fluentd log collector\"\n                          oneOf:\n                          - required: [\"sinks\"]\n                          properties:\n                            generalLog:\n                              type: object\n                              properties:\n                                tag:\n                                  type: string\n                                  default: \"\"\n                                  description: \"Tag for the general log records\"\n                                options:\n                                  type: object\n                                  description: \"fluentd specific options for the general log\"\n                                  x-kubernetes-preserve-unknown-fields: true\n                            errorLog:\n                              type: object\n                              properties:\n                                tag:\n                                  type: string\n                                  default: \"\"\n                                  description: \"Tag for the error log records\"\n                                options:\n                                  type: object\n                                  description: \"fluentd specific options for the error log\"\n                                  x-kubernetes-preserve-unknown-fields: true\n                            slowQueryLog:\n                              type: object\n                              properties:\n                                tag:\n                                  type: string\n                                  default: \"\"\n                                  description: \"Tag for the slow log records\"\n                                options:\n                                  type: object\n                                  description: \"fluentd specific options for the slow log\"\n                                  x-kubernetes-preserve-unknown-fields: true\n                            recordAugmentation:\n                              type: object\n                              properties:\n                                enabled:\n                                  type: boolean\n                                  default: false\n                                  description: \"Whether to enable record augmentation with additional data\"\n                                labels:\n                                  type: array\n                                  items:\n                                    type: object\n                                    required: [\"fieldName\", \"labelName\"]\n                                    properties:\n                                      fieldName:\n                                        type: string\n                                        description: \"Name of the field added to the log record with value from labelName\"\n                                      labelName:\n                                        type: string\n                                        description: \"Name of the pod label that holds the value to be stored under fieldName in the log record\"\n                                annotations:\n                                  type: array\n                                  items:\n                                    type: object\n                                    required: [\"fieldName\", \"annotationName\"]\n                                    properties:\n                                      fieldName:\n                                        type: string\n                                        description: \"Name of the field added to the log record with value from annotationName\"\n                                      annotationName:\n                                        type: string\n                                        description: \"Name of the pod label that holds the value to be stored under fieldName in the log record\"\n                                staticFields:\n                                  type: array\n                                  items:\n                                    type: object\n                                    required: [\"fieldName\", \"fieldValue\"]\n                                    properties:\n                                      fieldName:\n                                        type: string\n                                        description: \"Name of the field added to the log record with value from fieldValue\"\n                                      fieldValue:\n                                        type: string\n                                        description: \"Value for the static field with name taken from fieldName\"\n                                podFields:\n                                  type: array\n                                  items:\n                                    type: object\n                                    required: [\"fieldName\", \"fieldPath\"]\n                                    properties:\n                                      fieldName:\n                                        type: string\n                                        description: \"Name of the field added to the log record with value taken from a field with path stored in fieldPath\"\n                                      fieldPath:\n                                        type: string\n                                        description: \"Value for the field fieldName. The path should be of the same syntax as the one used for mounting environment variables from field reference - valueFrom.fieldRef.fieldPath . The field will be mounted in the pod as a environment variable, prefixed with a prefix and used then added to the log record. Examples for fieldRef are : spec.nodeName, metadata.namespace, status.podIP, etc.\"\n                                resourceFields:\n                                  type: array\n                                  items:\n                                    type: object\n                                    required: [\"fieldName\", \"containerName\", \"resource\"]\n                                    properties:\n                                      fieldName:\n                                        type: string\n                                        description: \"Name of the field added to the log record with value taken from a field with path stored in fieldPath\"\n                                      containerName:\n                                        type: string\n                                      resource:\n                                        type: string\n                                        description: \"See https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-container-fields-as-values-for-environment-variables\"\n                            additionalFilterConfiguration:\n                              type: string\n                              description: \"Raw configuration of additional Fluentd filters to be added to the configuration file\"\n                            sinks:\n                              type: array\n                              items:\n                                type: object\n                                required: [\"name\", \"rawConfig\"]\n                                x-kubernetes-preserve-unknown-fields: true\n                                properties:\n                                  name:\n                                    type: string\n                                    description: \"Name of the sink. Used only for documentation purposes\"\n                                  rawConfig:\n                                    type: \"string\"\n                                    description: \"Raw configuration of the sink\"\n\n                readReplicas:\n                  type: array\n                  items:\n                    type: object\n                    required: [\"name\", \"baseServerId\"]\n                    properties:\n                      name:\n                        type: string\n                      version:\n                        type: string\n                        pattern: '^\\d+\\.\\d+\\.\\d+(-.+)?'\n                        description: \"MySQL Server version\"\n                      baseServerId:\n                        type: integer\n                        minimum: 0\n                        maximum: 4294967195\n                        default: 0\n                        description: \"Base value for MySQL server_id for instances of the readReplica, if 0 it will be assigned automatically\"\n                      datadirVolumeClaimTemplate:\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                        description: \"Template for a PersistentVolumeClaim, to be used as datadir\"\n                      mycnf:\n                        type: string\n                        description: \"Custom configuration additions for my.cnf\"\n                      instances:\n                        type: integer\n                        minimum: 1\n                        maximum: 999\n                        default: 1\n                        description: \"Number of MySQL instances for the set of read replica\"\n                      podSpec:\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      podAnnotations:\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      podLabels:\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                serviceFqdnTemplate:\n                  type: string\n                  description: \"Template for a FQDN resolving to the cluster's headless instance Service and individual Pods\"\n                  #default: \"{service}.{namespace}.svc.{domain}\" - We can't set the default as that would override the environment value from the operator\n            status:\n              type: object\n              x-kubernetes-preserve-unknown-fields: true\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - name: Status\n          type: string\n          description: Status of the InnoDB Cluster\n          jsonPath: .status.cluster.status\n        - name: Online\n          type: integer\n          description: Number of ONLINE InnoDB Cluster instances\n          jsonPath: .status.cluster.onlineInstances\n        - name: Instances\n          type: integer\n          description: Number of InnoDB Cluster instances configured\n          jsonPath: .spec.instances\n        - name: Routers\n          type: integer\n          description: Number of Router instances configured for the InnoDB Cluster\n          jsonPath: .spec.router.instances\n        - name: Age\n          type: date\n          jsonPath: .metadata.creationTimestamp\n  scope: Namespaced\n  names:\n    kind: InnoDBCluster\n    listKind: InnoDBClusterList\n    singular: innodbcluster\n    plural: innodbclusters\n    shortNames:\n      - ic\n      - ics\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: mysqlbackups.mysql.oracle.com\nspec:\n  group: mysql.oracle.com\n  scope: Namespaced\n  names:\n    kind: MySQLBackup\n    listKind: MySQLBackupList\n    singular: mysqlbackup\n    plural: mysqlbackups\n    shortNames:\n      - mbk\n  versions:\n    - name: v2\n      served: true\n      storage: true\n      schema:\n        openAPIV3Schema:\n          type: object\n          properties:\n            spec:\n              type: object\n              required: [\"clusterName\"]\n              properties:\n                clusterName:\n                  type: string\n                backupProfileName:\n                  type: string\n                backupProfile:\n                  type: object\n                  description: \"backupProfile specification if backupProfileName is not specified\"\n                  x-kubernetes-preserve-unknown-fields: true\n                  properties:\n                    podAnnotations:\n                      type: object\n                      x-kubernetes-preserve-unknown-fields: true\n                    podLabels:\n                      type: object\n                      x-kubernetes-preserve-unknown-fields: true\n                    dumpInstance:\n                      type: object\n                      properties:\n                        dumpOptions:\n                          type: object\n                          description: \"A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()\"\n                          x-kubernetes-preserve-unknown-fields: true\n                        storage:\n                          type: object\n                          properties:\n                            ociObjectStorage:\n                              type: object\n                              required: [\"bucketName\", \"credentials\"]\n                              properties:\n                                bucketName:\n                                  type: string\n                                  description: \"Name of the OCI bucket where backup is stored\"\n                                prefix:\n                                  type: string\n                                  description: \"Path in bucket where backup is stored\"\n                                credentials:\n                                  type: string\n                                  description: \"Name of a Secret with data for accessing the bucket\"\n                            s3:\n                              type: object\n                              required: [\"bucketName\", \"config\"]\n                              properties:\n                                bucketName:\n                                  type: string\n                                  description: \"Name of the S3 bucket where the dump is stored\"\n                                prefix:\n                                  type: string\n                                  description: \"Path in the bucket where the dump files are stored\"\n                                config:\n                                  type: string\n                                  description: \"Name of a Secret with S3 configuration and credentials\"\n                                profile:\n                                  type: string\n                                  default: \"\"\n                                  description: \"Profile being used in configuration files\"\n                                endpoint:\n                                  type: string\n                                  description: \"Override endpoint URL\"\n                            azure:\n                              type: object\n                              required: [\"containerName\", \"config\"]\n                              properties:\n                                containerName:\n                                  type: string\n                                  description: \"Name of the Azure  BLOB Storage container where the dump is stored\"\n                                prefix:\n                                  type: string\n                                  description: \"Path in the container where the dump files are stored\"\n                                config:\n                                  type: string\n                                  description: \"Name of a Secret with Azure BLOB Storage configuration and credentials\"\n                            persistentVolumeClaim:\n                              type: object\n                              description : \"Specification of the PVC to be used. Used 'as is' in pod executing the backup.\"\n                              x-kubernetes-preserve-unknown-fields: true\n                          x-kubernetes-preserve-unknown-fields: true\n                addTimestampToBackupDirectory:\n                  type: boolean\n                  default: true\n                deleteBackupData:\n                  type: boolean\n                  default: false\n            status:\n              type: object\n              properties:\n                status:\n                  type: string\n                startTime:\n                  type: string\n                completionTime:\n                  type: string\n                elapsedTime:\n                  type: string\n                output:\n                  type: string\n                method:\n                  type: string\n                source:\n                  type: string\n                bucket:\n                  type: string\n                ociTenancy:\n                  type: string\n                container:\n                  type: string\n                spaceAvailable:\n                  type: string\n                size:\n                  type: string\n                message:\n                  type: string\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - name: Cluster\n          type: string\n          description: Name of the target cluster\n          jsonPath: .spec.clusterName\n        - name: Status\n          type: string\n          description: Status of the Backup\n          jsonPath: .status.status\n        - name: Output\n          type: string\n          description: Name of the produced file/directory\n          jsonPath: .status.output\n        - name: Age\n          type: date\n          jsonPath: .metadata.creationTimestamp\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: clusterkopfpeerings.zalando.org\nspec:\n  scope: Cluster\n  group: zalando.org\n  names:\n    kind: ClusterKopfPeering\n    plural: clusterkopfpeerings\n    singular: clusterkopfpeering\n  versions:\n    - name: v1\n      served: true\n      storage: true\n      schema:\n        openAPIV3Schema:\n          type: object\n          properties:\n            status:\n              type: object\n              x-kubernetes-preserve-unknown-fields: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: kopfpeerings.zalando.org\nspec:\n  scope: Namespaced\n  group: zalando.org\n  names:\n    kind: KopfPeering\n    plural: kopfpeerings\n    singular: kopfpeering\n  versions:\n    - name: v1\n      served: true\n      storage: true\n      schema:\n        openAPIV3Schema:\n          type: object\n          properties:\n            status:\n              type: object\n              x-kubernetes-preserve-unknown-fields: true\n"
  },
  {
    "path": "kubernetes/addons/mysql-operator/deploy-operator.yaml",
    "content": "# The main role for the operator\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: mysql-operator\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\"]\n    verbs: [\"get\", \"list\", \"watch\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"pods/status\"]\n    verbs: [\"get\", \"patch\", \"update\", \"watch\"]\n    # Kopf needs patch on secrets or the sidecar will throw\n    # The operator needs this verb to be able to pass it to the sidecar\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"create\", \"list\", \"watch\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    verbs: [\"get\", \"create\", \"update\", \"list\", \"watch\", \"patch\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"services\"]\n    verbs: [\"get\", \"create\", \"list\", \"update\", \"delete\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"serviceaccounts\"]\n    verbs: [\"get\", \"create\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\", \"update\"]\n  - apiGroups: [\"rbac.authorization.k8s.io\"]\n    resources: [\"rolebindings\"]\n    verbs: [\"get\", \"create\"]\n  - apiGroups: [\"policy\"]\n    resources: [\"poddisruptionbudgets\"]\n    verbs: [\"get\", \"create\"]\n  - apiGroups: [\"batch\"]\n    resources: [\"jobs\"]\n    verbs: [\"create\"]\n  - apiGroups: [\"batch\"]\n    resources: [\"cronjobs\"]\n    verbs: [\"get\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"deployments\", \"statefulsets\"]\n    verbs: [\"get\", \"create\", \"patch\", \"update\", \"watch\", \"delete\"]\n  - apiGroups: [\"mysql.oracle.com\"]\n    resources: [\"*\"]\n    verbs: [\"*\"]\n  - apiGroups: [\"zalando.org\"]\n    resources: [\"*\"]\n    verbs: [\"get\", \"patch\", \"list\", \"watch\"]\n  # Kopf: runtime observation of namespaces & CRDs (addition/deletion).\n  - apiGroups: [apiextensions.k8s.io]\n    resources: [customresourcedefinitions]\n    verbs: [list, watch]\n  - apiGroups: [\"\"]\n    resources: [namespaces]\n    verbs: [list, watch]\n  - apiGroups: [\"monitoring.coreos.com\"]\n    resources: [\"servicemonitors\"]\n    verbs: [\"get\", \"create\", \"patch\", \"update\", \"delete\"]\n---\n# role for the server sidecar\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: mysql-sidecar\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\"]\n    verbs: [\"get\", \"list\", \"watch\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"pods/status\"]\n    verbs: [\"get\", \"patch\", \"update\", \"watch\"]\n  # Kopf needs patch on secrets or the sidecar will throw\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"create\", \"list\", \"watch\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    verbs: [\"get\", \"create\", \"list\", \"watch\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"services\"]\n    verbs: [\"get\", \"create\", \"list\", \"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"serviceaccounts\"]\n    verbs: [\"get\", \"create\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\", \"update\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"deployments\"]\n    verbs: [\"get\", \"patch\"]\n  - apiGroups: [\"mysql.oracle.com\"]\n    resources: [\"innodbclusters\"]\n    verbs: [\"get\", \"watch\", \"list\"]\n  - apiGroups: [\"mysql.oracle.com\"]\n    resources: [\"mysqlbackups\"]\n    verbs: [\"create\", \"get\", \"list\", \"patch\", \"update\", \"watch\", \"delete\"]\n  - apiGroups: [\"mysql.oracle.com\"]\n    resources: [\"mysqlbackups/status\"]\n    verbs: [\"get\", \"patch\", \"update\", \"watch\"]\n---\n# Give access to the operator\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: mysql-operator-rolebinding\nsubjects:\n  - kind: ServiceAccount\n    name: mysql-operator-sa\n    namespace: mysql-operator\n  # TODO The following entry is for dev purposes only\n  #- kind: Group\n  #  name: system:serviceaccounts\n  #  apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: ClusterRole\n  name: mysql-operator\n  apiGroup: rbac.authorization.k8s.io\n---\napiVersion: zalando.org/v1\nkind: ClusterKopfPeering\nmetadata:\n  name: mysql-operator\n---\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: mysql-operator\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: mysql-operator-sa\n  namespace: mysql-operator\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: mysql-operator\n  namespace: mysql-operator\n  labels:\n    version: \"1.0\"\n    app.kubernetes.io/name: mysql-operator\n    app.kubernetes.io/instance: mysql-operator\n    app.kubernetes.io/version: 9.2.0-2.2.3\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/managed-by: mysql-operator\n    app.kubernetes.io/created-by: mysql-operator\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      name: mysql-operator\n  template:\n    metadata:\n      labels:\n        name: mysql-operator\n    spec:\n      securityContext:\n        runAsNonRoot: true\n      containers:\n        - name: mysql-operator\n          image: container-registry.oracle.com/mysql/community-operator:9.2.0-2.2.3\n          imagePullPolicy: IfNotPresent\n          args:\n            [\n              \"mysqlsh\",\n              \"--log-level=@INFO\",\n              \"--pym\",\n              \"mysqloperator\",\n              \"operator\",\n            ]\n          env:\n            - name: MYSQLSH_USER_CONFIG_HOME\n              value: /mysqlsh\n            - name: MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS\n              value: never\n          readinessProbe:\n            exec:\n              command:\n              - cat\n              - /tmp/mysql-operator-ready\n            initialDelaySeconds: 1\n            periodSeconds: 3\n          volumeMounts:\n            - name: mysqlsh-home\n              mountPath: /mysqlsh\n            - name: tmpdir\n              mountPath: /tmp\n          securityContext:\n            capabilities:\n              drop:\n              - ALL\n            runAsUser: 2\n            allowPrivilegeEscalation: false\n            privileged: false\n            readOnlyRootFilesystem: true\n            runAsNonRoot: true\n      volumes:\n        - name: mysqlsh-home\n          emptyDir: {}\n        - name: tmpdir\n          emptyDir: {}\n      serviceAccountName: mysql-operator-sa\n"
  },
  {
    "path": "kubernetes/addons/nginx-ingress.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  name: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - pods\n  - secrets\n  - endpoints\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - ingress-controller-leader\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - create\n- apiGroups:\n  - coordination.k8s.io\n  resourceNames:\n  - ingress-controller-leader\n  resources:\n  - leases\n  verbs:\n  - get\n  - update\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - endpoints\n  - nodes\n  - pods\n  - secrets\n  - namespaces\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\nrules:\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - validatingwebhookconfigurations\n  verbs:\n  - get\n  - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  externalTrafficPolicy: Local\n  ipFamilies:\n  - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n  - appProtocol: http\n    name: http\n    port: 80\n    protocol: TCP\n    targetPort: http\n  - appProtocol: https\n    name: https\n    port: 443\n    protocol: TCP\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: LoadBalancer\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n  - appProtocol: https\n    name: https-webhook\n    port: 443\n    targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  minReadySeconds: 0\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx\n      app.kubernetes.io/name: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n    spec:\n      hostNetwork: true\n      containers:\n      - args:\n        - /nginx-ingress-controller\n        - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller\n        - --election-id=ingress-controller-leader\n        - --controller-class=k8s.io/ingress-nginx\n        - --ingress-class=nginx\n        - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n        - --validating-webhook=:8443\n        - --validating-webhook-certificate=/usr/local/certificates/cert\n        - --validating-webhook-key=/usr/local/certificates/key\n        - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services\n        - --udp-services-configmap=$(POD_NAMESPACE)/udp-services\n        env:\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: LD_PRELOAD\n          value: /usr/local/lib/libmimalloc.so\n        image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.3.0\n        imagePullPolicy: IfNotPresent\n        lifecycle:\n          preStop:\n            exec:\n              command:\n              - /wait-shutdown\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        name: controller\n        ports:\n        - containerPort: 80\n          name: http\n          protocol: TCP\n        - containerPort: 443\n          name: https\n          protocol: TCP\n        - containerPort: 8443\n          name: webhook\n          protocol: TCP\n        readinessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        resources:\n          requests:\n            cpu: 100m\n            memory: 90Mi\n        securityContext:\n          allowPrivilegeEscalation: true\n          capabilities:\n            add:\n            - NET_BIND_SERVICE\n            drop:\n            - ALL\n          runAsUser: 101\n        volumeMounts:\n        - mountPath: /usr/local/certificates/\n          name: webhook-cert\n          readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n        edgenode: \"true\"\n      serviceAccountName: ingress-nginx\n      terminationGracePeriodSeconds: 300\n      volumes:\n      - name: webhook-cert\n        secret:\n          secretName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.3.0\n      name: ingress-nginx-admission-create\n    spec:\n      containers:\n      - args:\n        - create\n        - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n        - --namespace=$(POD_NAMESPACE)\n        - --secret-name=ingress-nginx-admission\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.3.0\n        imagePullPolicy: IfNotPresent\n        name: create\n        securityContext:\n          allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.3.0\n      name: ingress-nginx-admission-patch\n    spec:\n      containers:\n      - args:\n        - patch\n        - --webhook-name=ingress-nginx-admission\n        - --namespace=$(POD_NAMESPACE)\n        - --patch-mutating=false\n        - --secret-name=ingress-nginx-admission\n        - --patch-failure-policy=Fail\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.3.0\n        imagePullPolicy: IfNotPresent\n        name: patch\n        securityContext:\n          allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\nwebhooks:\n- admissionReviewVersions:\n  - v1\n  clientConfig:\n    service:\n      name: ingress-nginx-controller-admission\n      namespace: ingress-nginx\n      path: /networking/v1/ingresses\n  failurePolicy: Fail\n  matchPolicy: Equivalent\n  name: validate.nginx.ingress.kubernetes.io\n  rules:\n  - apiGroups:\n    - networking.k8s.io\n    apiVersions:\n    - v1\n    operations:\n    - CREATE\n    - UPDATE\n    resources:\n    - ingresses\n  sideEffects: None\n"
  },
  {
    "path": "kubernetes/addons/volumesnapshot/snapshot.storage.k8s.io_volumesnapshotclasses.yaml",
    "content": "---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    api-approved.kubernetes.io: \"https://github.com/kubernetes-csi/external-snapshotter/pull/814\"\n    controller-gen.kubebuilder.io/version: v0.15.0\n  name: volumesnapshotclasses.snapshot.storage.k8s.io\nspec:\n  group: snapshot.storage.k8s.io\n  names:\n    kind: VolumeSnapshotClass\n    listKind: VolumeSnapshotClassList\n    plural: volumesnapshotclasses\n    shortNames:\n    - vsclass\n    - vsclasses\n    singular: volumesnapshotclass\n  scope: Cluster\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .driver\n      name: Driver\n      type: string\n    - description: Determines whether a VolumeSnapshotContent created through the\n        VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.\n      jsonPath: .deletionPolicy\n      name: DeletionPolicy\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          VolumeSnapshotClass specifies parameters that a underlying storage system uses when\n          creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its\n          name in a VolumeSnapshot object.\n          VolumeSnapshotClasses are non-namespaced\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          deletionPolicy:\n            description: |-\n              deletionPolicy determines whether a VolumeSnapshotContent created through\n              the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.\n              Supported values are \"Retain\" and \"Delete\".\n              \"Retain\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept.\n              \"Delete\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted.\n              Required.\n            enum:\n            - Delete\n            - Retain\n            type: string\n          driver:\n            description: |-\n              driver is the name of the storage driver that handles this VolumeSnapshotClass.\n              Required.\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          parameters:\n            additionalProperties:\n              type: string\n            description: |-\n              parameters is a key-value map with storage driver specific parameters for creating snapshots.\n              These values are opaque to Kubernetes.\n            type: object\n        required:\n        - deletionPolicy\n        - driver\n        type: object\n    served: true\n    storage: true\n    subresources: {}\n  - additionalPrinterColumns:\n    - jsonPath: .driver\n      name: Driver\n      type: string\n    - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.\n      jsonPath: .deletionPolicy\n      name: DeletionPolicy\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1beta1\n    # This indicates the v1beta1 version of the custom resource is deprecated.\n    # API requests to this version receive a warning in the server response.\n    deprecated: true\n    # This overrides the default warning returned to clients making v1beta1 API requests.\n    deprecationWarning: \"snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotClass\"\n    schema:\n      openAPIV3Schema:\n        description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          deletionPolicy:\n            description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are \"Retain\" and \"Delete\". \"Retain\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. \"Delete\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required.\n            enum:\n            - Delete\n            - Retain\n            type: string\n          driver:\n            description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required.\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          parameters:\n            additionalProperties:\n              type: string\n            description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes.\n            type: object\n        required:\n        - deletionPolicy\n        - driver\n        type: object\n    served: false\n    storage: false\n    subresources: {}\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "kubernetes/addons/volumesnapshot/snapshot.storage.k8s.io_volumesnapshotcontents.yaml",
    "content": "---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.15.0\n    api-approved.kubernetes.io: \"https://github.com/kubernetes-csi/external-snapshotter/pull/955\"\n  name: volumesnapshotcontents.snapshot.storage.k8s.io\nspec:\n  group: snapshot.storage.k8s.io\n  names:\n    kind: VolumeSnapshotContent\n    listKind: VolumeSnapshotContentList\n    plural: volumesnapshotcontents\n    shortNames:\n    - vsc\n    - vscs\n    singular: volumesnapshotcontent\n  scope: Cluster\n  versions:\n  - additionalPrinterColumns:\n    - description: Indicates if the snapshot is ready to be used to restore a volume.\n      jsonPath: .status.readyToUse\n      name: ReadyToUse\n      type: boolean\n    - description: Represents the complete size of the snapshot in bytes\n      jsonPath: .status.restoreSize\n      name: RestoreSize\n      type: integer\n    - description: Determines whether this VolumeSnapshotContent and its physical\n        snapshot on the underlying storage system should be deleted when its bound\n        VolumeSnapshot is deleted.\n      jsonPath: .spec.deletionPolicy\n      name: DeletionPolicy\n      type: string\n    - description: Name of the CSI driver used to create the physical snapshot on\n        the underlying storage system.\n      jsonPath: .spec.driver\n      name: Driver\n      type: string\n    - description: Name of the VolumeSnapshotClass to which this snapshot belongs.\n      jsonPath: .spec.volumeSnapshotClassName\n      name: VolumeSnapshotClass\n      type: string\n    - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent\n        object is bound.\n      jsonPath: .spec.volumeSnapshotRef.name\n      name: VolumeSnapshot\n      type: string\n    - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent\n        object is bound.\n      jsonPath: .spec.volumeSnapshotRef.namespace\n      name: VolumeSnapshotNamespace\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          VolumeSnapshotContent represents the actual \"on-disk\" snapshot object in the\n          underlying storage system\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines properties of a VolumeSnapshotContent created by the underlying storage system.\n              Required.\n            properties:\n              deletionPolicy:\n                description: |-\n                  deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on\n                  the underlying storage system should be deleted when its bound VolumeSnapshot is deleted.\n                  Supported values are \"Retain\" and \"Delete\".\n                  \"Retain\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept.\n                  \"Delete\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted.\n                  For dynamically provisioned snapshots, this field will automatically be filled in by the\n                  CSI snapshotter sidecar with the \"DeletionPolicy\" field defined in the corresponding\n                  VolumeSnapshotClass.\n                  For pre-existing snapshots, users MUST specify this field when creating the\n                   VolumeSnapshotContent object.\n                  Required.\n                enum:\n                - Delete\n                - Retain\n                type: string\n              driver:\n                description: |-\n                  driver is the name of the CSI driver used to create the physical snapshot on\n                  the underlying storage system.\n                  This MUST be the same as the name returned by the CSI GetPluginName() call for\n                  that driver.\n                  Required.\n                type: string\n              source:\n                description: |-\n                  source specifies whether the snapshot is (or should be) dynamically provisioned\n                  or already exists, and just requires a Kubernetes object representation.\n                  This field is immutable after creation.\n                  Required.\n                properties:\n                  snapshotHandle:\n                    description: |-\n                      snapshotHandle specifies the CSI \"snapshot_id\" of a pre-existing snapshot on\n                      the underlying storage system for which a Kubernetes object representation\n                      was (or should be) created.\n                      This field is immutable.\n                    type: string\n                    x-kubernetes-validations:\n                    - message: snapshotHandle is immutable\n                      rule: self == oldSelf\n                  volumeHandle:\n                    description: |-\n                      volumeHandle specifies the CSI \"volume_id\" of the volume from which a snapshot\n                      should be dynamically taken from.\n                      This field is immutable.\n                    type: string\n                    x-kubernetes-validations:\n                    - message: volumeHandle is immutable\n                      rule: self == oldSelf\n                type: object\n                x-kubernetes-validations:\n                - message: volumeHandle is required once set\n                  rule: '!has(oldSelf.volumeHandle) || has(self.volumeHandle)'\n                - message: snapshotHandle is required once set\n                  rule: '!has(oldSelf.snapshotHandle) || has(self.snapshotHandle)'\n                - message: exactly one of volumeHandle and snapshotHandle must be\n                    set\n                  rule: (has(self.volumeHandle) && !has(self.snapshotHandle)) || (!has(self.volumeHandle)\n                    && has(self.snapshotHandle))\n              sourceVolumeMode:\n                description: |-\n                  SourceVolumeMode is the mode of the volume whose snapshot is taken.\n                  Can be either “Filesystem” or “Block”.\n                  If not specified, it indicates the source volume's mode is unknown.\n                  This field is immutable.\n                  This field is an alpha field.\n                type: string\n                x-kubernetes-validations:\n                - message: sourceVolumeMode is immutable\n                  rule: self == oldSelf\n              volumeSnapshotClassName:\n                description: |-\n                  name of the VolumeSnapshotClass from which this snapshot was (or will be)\n                  created.\n                  Note that after provisioning, the VolumeSnapshotClass may be deleted or\n                  recreated with different set of values, and as such, should not be referenced\n                  post-snapshot creation.\n                type: string\n              volumeSnapshotRef:\n                description: |-\n                  volumeSnapshotRef specifies the VolumeSnapshot object to which this\n                  VolumeSnapshotContent object is bound.\n                  VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to\n                  this VolumeSnapshotContent's name for the bidirectional binding to be valid.\n                  For a pre-existing VolumeSnapshotContent object, name and namespace of the\n                  VolumeSnapshot object MUST be provided for binding to happen.\n                  This field is immutable after creation.\n                  Required.\n                properties:\n                  apiVersion:\n                    description: API version of the referent.\n                    type: string\n                  fieldPath:\n                    description: |-\n                      If referring to a piece of an object instead of an entire object, this string\n                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\n                      For example, if the object reference is to a container within a pod, this would take on a value like:\n                      \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\n                      the event) or if no container name is specified \"spec.containers[2]\" (container with\n                      index 2 in this pod). This syntax is chosen only to have some well-defined way of\n                      referencing a part of an object.\n                      TODO: this design is not final and this field is subject to change in the future.\n                    type: string\n                  kind:\n                    description: |-\n                      Kind of the referent.\n                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n                    type: string\n                  name:\n                    description: |-\n                      Name of the referent.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  namespace:\n                    description: |-\n                      Namespace of the referent.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n                    type: string\n                  resourceVersion:\n                    description: |-\n                      Specific resourceVersion to which this reference is made, if any.\n                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\n                    type: string\n                  uid:\n                    description: |-\n                      UID of the referent.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\n                    type: string\n                type: object\n                x-kubernetes-map-type: atomic\n                x-kubernetes-validations:\n                - message: both spec.volumeSnapshotRef.name and spec.volumeSnapshotRef.namespace\n                    must be set\n                  rule: has(self.name) && has(self.__namespace__)\n            required:\n            - deletionPolicy\n            - driver\n            - source\n            - volumeSnapshotRef\n            type: object\n            x-kubernetes-validations:\n            - message: sourceVolumeMode is required once set\n              rule: '!has(oldSelf.sourceVolumeMode) || has(self.sourceVolumeMode)'\n          status:\n            description: status represents the current information of a snapshot.\n            properties:\n              creationTime:\n                description: |-\n                  creationTime is the timestamp when the point-in-time snapshot is taken\n                  by the underlying storage system.\n                  In dynamic snapshot creation case, this field will be filled in by the\n                  CSI snapshotter sidecar with the \"creation_time\" value returned from CSI\n                  \"CreateSnapshot\" gRPC call.\n                  For a pre-existing snapshot, this field will be filled with the \"creation_time\"\n                  value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it.\n                  If not specified, it indicates the creation time is unknown.\n                  The format of this field is a Unix nanoseconds time encoded as an int64.\n                  On Unix, the command `date +%s%N` returns the current time in nanoseconds\n                  since 1970-01-01 00:00:00 UTC.\n                format: int64\n                type: integer\n              error:\n                description: |-\n                  error is the last observed error during snapshot creation, if any.\n                  Upon success after retry, this error field will be cleared.\n                properties:\n                  message:\n                    description: |-\n                      message is a string detailing the encountered error during snapshot\n                      creation if specified.\n                      NOTE: message may be logged, and it should not contain sensitive\n                      information.\n                    type: string\n                  time:\n                    description: time is the timestamp when the error was encountered.\n                    format: date-time\n                    type: string\n                type: object\n              readyToUse:\n                description: |-\n                  readyToUse indicates if a snapshot is ready to be used to restore a volume.\n                  In dynamic snapshot creation case, this field will be filled in by the\n                  CSI snapshotter sidecar with the \"ready_to_use\" value returned from CSI\n                  \"CreateSnapshot\" gRPC call.\n                  For a pre-existing snapshot, this field will be filled with the \"ready_to_use\"\n                  value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it,\n                  otherwise, this field will be set to \"True\".\n                  If not specified, it means the readiness of a snapshot is unknown.\n                type: boolean\n              restoreSize:\n                description: |-\n                  restoreSize represents the complete size of the snapshot in bytes.\n                  In dynamic snapshot creation case, this field will be filled in by the\n                  CSI snapshotter sidecar with the \"size_bytes\" value returned from CSI\n                  \"CreateSnapshot\" gRPC call.\n                  For a pre-existing snapshot, this field will be filled with the \"size_bytes\"\n                  value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it.\n                  When restoring a volume from this snapshot, the size of the volume MUST NOT\n                  be smaller than the restoreSize if it is specified, otherwise the restoration will fail.\n                  If not specified, it indicates that the size is unknown.\n                format: int64\n                minimum: 0\n                type: integer\n              snapshotHandle:\n                description: |-\n                  snapshotHandle is the CSI \"snapshot_id\" of a snapshot on the underlying storage system.\n                  If not specified, it indicates that dynamic snapshot creation has either failed\n                  or it is still in progress.\n                type: string\n              volumeGroupSnapshotHandle:\n                description: |-\n                  VolumeGroupSnapshotHandle is the CSI \"group_snapshot_id\" of a group snapshot\n                  on the underlying storage system.\n                type: string\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n  - additionalPrinterColumns:\n    - description: Indicates if the snapshot is ready to be used to restore a volume.\n      jsonPath: .status.readyToUse\n      name: ReadyToUse\n      type: boolean\n    - description: Represents the complete size of the snapshot in bytes\n      jsonPath: .status.restoreSize\n      name: RestoreSize\n      type: integer\n    - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted.\n      jsonPath: .spec.deletionPolicy\n      name: DeletionPolicy\n      type: string\n    - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system.\n      jsonPath: .spec.driver\n      name: Driver\n      type: string\n    - description: Name of the VolumeSnapshotClass to which this snapshot belongs.\n      jsonPath: .spec.volumeSnapshotClassName\n      name: VolumeSnapshotClass\n      type: string\n    - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound.\n      jsonPath: .spec.volumeSnapshotRef.name\n      name: VolumeSnapshot\n      type: string\n    - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound.\n      jsonPath: .spec.volumeSnapshotRef.namespace\n      name: VolumeSnapshotNamespace\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1beta1\n    # This indicates the v1beta1 version of the custom resource is deprecated.\n    # API requests to this version receive a warning in the server response.\n    deprecated: true\n    # This overrides the default warning returned to clients making v1beta1 API requests.\n    deprecationWarning: \"snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotContent\"\n    schema:\n      openAPIV3Schema:\n        description: VolumeSnapshotContent represents the actual \"on-disk\" snapshot object in the underlying storage system\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          spec:\n            description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required.\n            properties:\n              deletionPolicy:\n                description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are \"Retain\" and \"Delete\". \"Retain\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. \"Delete\" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the \"DeletionPolicy\" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the  VolumeSnapshotContent object. Required.\n                enum:\n                - Delete\n                - Retain\n                type: string\n              driver:\n                description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required.\n                type: string\n              source:\n                description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required.\n                properties:\n                  snapshotHandle:\n                    description: snapshotHandle specifies the CSI \"snapshot_id\" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable.\n                    type: string\n                  volumeHandle:\n                    description: volumeHandle specifies the CSI \"volume_id\" of the volume from which a snapshot should be dynamically taken from. This field is immutable.\n                    type: string\n                type: object\n              volumeSnapshotClassName:\n                description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation.\n                type: string\n              volumeSnapshotRef:\n                description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required.\n                properties:\n                  apiVersion:\n                    description: API version of the referent.\n                    type: string\n                  fieldPath:\n                    description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'\n                    type: string\n                  kind:\n                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                    type: string\n                  namespace:\n                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                    type: string\n                  resourceVersion:\n                    description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'\n                    type: string\n                  uid:\n                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'\n                    type: string\n                type: object\n            required:\n            - deletionPolicy\n            - driver\n            - source\n            - volumeSnapshotRef\n            type: object\n          status:\n            description: status represents the current information of a snapshot.\n            properties:\n              creationTime:\n                description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the \"creation_time\" value returned from CSI \"CreateSnapshot\" gRPC call. For a pre-existing snapshot, this field will be filled with the \"creation_time\" value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC.\n                format: int64\n                type: integer\n              error:\n                description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared.\n                properties:\n                  message:\n                    description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.'\n                    type: string\n                  time:\n                    description: time is the timestamp when the error was encountered.\n                    format: date-time\n                    type: string\n                type: object\n              readyToUse:\n                description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the \"ready_to_use\" value returned from CSI \"CreateSnapshot\" gRPC call. For a pre-existing snapshot, this field will be filled with the \"ready_to_use\" value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it, otherwise, this field will be set to \"True\". If not specified, it means the readiness of a snapshot is unknown.\n                type: boolean\n              restoreSize:\n                description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the \"size_bytes\" value returned from CSI \"CreateSnapshot\" gRPC call. For a pre-existing snapshot, this field will be filled with the \"size_bytes\" value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown.\n                format: int64\n                minimum: 0\n                type: integer\n              snapshotHandle:\n                description: snapshotHandle is the CSI \"snapshot_id\" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress.\n                type: string\n            type: object\n        required:\n        - spec\n        type: object\n    served: false\n    storage: false\n    subresources:\n      status: {}\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "kubernetes/addons/volumesnapshot/snapshot.storage.k8s.io_volumesnapshots.yaml",
    "content": "---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.15.0\n    api-approved.kubernetes.io: \"https://github.com/kubernetes-csi/external-snapshotter/pull/814\"\n  name: volumesnapshots.snapshot.storage.k8s.io\nspec:\n  group: snapshot.storage.k8s.io\n  names:\n    kind: VolumeSnapshot\n    listKind: VolumeSnapshotList\n    plural: volumesnapshots\n    shortNames:\n    - vs\n    singular: volumesnapshot\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: Indicates if the snapshot is ready to be used to restore a volume.\n      jsonPath: .status.readyToUse\n      name: ReadyToUse\n      type: boolean\n    - description: If a new snapshot needs to be created, this contains the name of\n        the source PVC from which this snapshot was (or will be) created.\n      jsonPath: .spec.source.persistentVolumeClaimName\n      name: SourcePVC\n      type: string\n    - description: If a snapshot already exists, this contains the name of the existing\n        VolumeSnapshotContent object representing the existing snapshot.\n      jsonPath: .spec.source.volumeSnapshotContentName\n      name: SourceSnapshotContent\n      type: string\n    - description: Represents the minimum size of volume required to rehydrate from\n        this snapshot.\n      jsonPath: .status.restoreSize\n      name: RestoreSize\n      type: string\n    - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot.\n      jsonPath: .spec.volumeSnapshotClassName\n      name: SnapshotClass\n      type: string\n    - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot\n        object intends to bind to. Please note that verification of binding actually\n        requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure\n        both are pointing at each other. Binding MUST be verified prior to usage of\n        this object.\n      jsonPath: .status.boundVolumeSnapshotContentName\n      name: SnapshotContent\n      type: string\n    - description: Timestamp when the point-in-time snapshot was taken by the underlying\n        storage system.\n      jsonPath: .status.creationTime\n      name: CreationTime\n      type: date\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          VolumeSnapshot is a user's request for either creating a point-in-time\n          snapshot of a persistent volume, or binding to a pre-existing snapshot.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines the desired characteristics of a snapshot requested by a user.\n              More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots\n              Required.\n            properties:\n              source:\n                description: |-\n                  source specifies where a snapshot will be created from.\n                  This field is immutable after creation.\n                  Required.\n                properties:\n                  persistentVolumeClaimName:\n                    description: |-\n                      persistentVolumeClaimName specifies the name of the PersistentVolumeClaim\n                      object representing the volume from which a snapshot should be created.\n                      This PVC is assumed to be in the same namespace as the VolumeSnapshot\n                      object.\n                      This field should be set if the snapshot does not exists, and needs to be\n                      created.\n                      This field is immutable.\n                    type: string\n                    x-kubernetes-validations:\n                    - message: persistentVolumeClaimName is immutable\n                      rule: self == oldSelf\n                  volumeSnapshotContentName:\n                    description: |-\n                      volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent\n                      object representing an existing volume snapshot.\n                      This field should be set if the snapshot already exists and only needs a representation in Kubernetes.\n                      This field is immutable.\n                    type: string\n                    x-kubernetes-validations:\n                    - message: volumeSnapshotContentName is immutable\n                      rule: self == oldSelf\n                type: object\n                x-kubernetes-validations:\n                - message: persistentVolumeClaimName is required once set\n                  rule: '!has(oldSelf.persistentVolumeClaimName) || has(self.persistentVolumeClaimName)'\n                - message: volumeSnapshotContentName is required once set\n                  rule: '!has(oldSelf.volumeSnapshotContentName) || has(self.volumeSnapshotContentName)'\n                - message: exactly one of volumeSnapshotContentName and persistentVolumeClaimName\n                    must be set\n                  rule: (has(self.volumeSnapshotContentName) && !has(self.persistentVolumeClaimName))\n                    || (!has(self.volumeSnapshotContentName) && has(self.persistentVolumeClaimName))\n              volumeSnapshotClassName:\n                description: |-\n                  VolumeSnapshotClassName is the name of the VolumeSnapshotClass\n                  requested by the VolumeSnapshot.\n                  VolumeSnapshotClassName may be left nil to indicate that the default\n                  SnapshotClass should be used.\n                  A given cluster may have multiple default Volume SnapshotClasses: one\n                  default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass,\n                  VolumeSnapshotSource will be checked to figure out what the associated\n                  CSI Driver is, and the default VolumeSnapshotClass associated with that\n                  CSI Driver will be used. If more than one VolumeSnapshotClass exist for\n                  a given CSI Driver and more than one have been marked as default,\n                  CreateSnapshot will fail and generate an event.\n                  Empty string is not allowed for this field.\n                type: string\n                x-kubernetes-validations:\n                - message: volumeSnapshotClassName must not be the empty string when\n                    set\n                  rule: size(self) > 0\n            required:\n            - source\n            type: object\n          status:\n            description: |-\n              status represents the current information of a snapshot.\n              Consumers must verify binding between VolumeSnapshot and\n              VolumeSnapshotContent objects is successful (by validating that both\n              VolumeSnapshot and VolumeSnapshotContent point at each other) before\n              using this object.\n            properties:\n              boundVolumeSnapshotContentName:\n                description: |-\n                  boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent\n                  object to which this VolumeSnapshot object intends to bind to.\n                  If not specified, it indicates that the VolumeSnapshot object has not been\n                  successfully bound to a VolumeSnapshotContent object yet.\n                  NOTE: To avoid possible security issues, consumers must verify binding between\n                  VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that\n                  both VolumeSnapshot and VolumeSnapshotContent point at each other) before using\n                  this object.\n                type: string\n              creationTime:\n                description: |-\n                  creationTime is the timestamp when the point-in-time snapshot is taken\n                  by the underlying storage system.\n                  In dynamic snapshot creation case, this field will be filled in by the\n                  snapshot controller with the \"creation_time\" value returned from CSI\n                  \"CreateSnapshot\" gRPC call.\n                  For a pre-existing snapshot, this field will be filled with the \"creation_time\"\n                  value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it.\n                  If not specified, it may indicate that the creation time of the snapshot is unknown.\n                format: date-time\n                type: string\n              error:\n                description: |-\n                  error is the last observed error during snapshot creation, if any.\n                  This field could be helpful to upper level controllers(i.e., application controller)\n                  to decide whether they should continue on waiting for the snapshot to be created\n                  based on the type of error reported.\n                  The snapshot controller will keep retrying when an error occurs during the\n                  snapshot creation. Upon success, this error field will be cleared.\n                properties:\n                  message:\n                    description: |-\n                      message is a string detailing the encountered error during snapshot\n                      creation if specified.\n                      NOTE: message may be logged, and it should not contain sensitive\n                      information.\n                    type: string\n                  time:\n                    description: time is the timestamp when the error was encountered.\n                    format: date-time\n                    type: string\n                type: object\n              readyToUse:\n                description: |-\n                  readyToUse indicates if the snapshot is ready to be used to restore a volume.\n                  In dynamic snapshot creation case, this field will be filled in by the\n                  snapshot controller with the \"ready_to_use\" value returned from CSI\n                  \"CreateSnapshot\" gRPC call.\n                  For a pre-existing snapshot, this field will be filled with the \"ready_to_use\"\n                  value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it,\n                  otherwise, this field will be set to \"True\".\n                  If not specified, it means the readiness of a snapshot is unknown.\n                type: boolean\n              restoreSize:\n                type: string\n                description: |-\n                  restoreSize represents the minimum size of volume required to create a volume\n                  from this snapshot.\n                  In dynamic snapshot creation case, this field will be filled in by the\n                  snapshot controller with the \"size_bytes\" value returned from CSI\n                  \"CreateSnapshot\" gRPC call.\n                  For a pre-existing snapshot, this field will be filled with the \"size_bytes\"\n                  value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it.\n                  When restoring a volume from this snapshot, the size of the volume MUST NOT\n                  be smaller than the restoreSize if it is specified, otherwise the restoration will fail.\n                  If not specified, it indicates that the size is unknown.\n                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                x-kubernetes-int-or-string: true\n              volumeGroupSnapshotName:\n                description: |-\n                  VolumeGroupSnapshotName is the name of the VolumeGroupSnapshot of which this\n                  VolumeSnapshot is a part of.\n                type: string\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n  - additionalPrinterColumns:\n    - description: Indicates if the snapshot is ready to be used to restore a volume.\n      jsonPath: .status.readyToUse\n      name: ReadyToUse\n      type: boolean\n    - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created.\n      jsonPath: .spec.source.persistentVolumeClaimName\n      name: SourcePVC\n      type: string\n    - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot.\n      jsonPath: .spec.source.volumeSnapshotContentName\n      name: SourceSnapshotContent\n      type: string\n    - description: Represents the minimum size of volume required to rehydrate from this snapshot.\n      jsonPath: .status.restoreSize\n      name: RestoreSize\n      type: string\n    - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot.\n      jsonPath: .spec.volumeSnapshotClassName\n      name: SnapshotClass\n      type: string\n    - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object.\n      jsonPath: .status.boundVolumeSnapshotContentName\n      name: SnapshotContent\n      type: string\n    - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system.\n      jsonPath: .status.creationTime\n      name: CreationTime\n      type: date\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1beta1\n    # This indicates the v1beta1 version of the custom resource is deprecated.\n    # API requests to this version receive a warning in the server response.\n    deprecated: true\n    # This overrides the default warning returned to clients making v1beta1 API requests.\n    deprecationWarning: \"snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshot\"\n    schema:\n      openAPIV3Schema:\n        description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          spec:\n            description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.'\n            properties:\n              source:\n                description: source specifies where a snapshot will be created from. This field is immutable after creation. Required.\n                properties:\n                  persistentVolumeClaimName:\n                    description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable.\n                    type: string\n                  volumeSnapshotContentName:\n                    description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable.\n                    type: string\n                type: object\n              volumeSnapshotClassName:\n                description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.'\n                type: string\n            required:\n            - source\n            type: object\n          status:\n            description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.\n            properties:\n              boundVolumeSnapshotContentName:\n                description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.'\n                type: string\n              creationTime:\n                description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the \"creation_time\" value returned from CSI \"CreateSnapshot\" gRPC call. For a pre-existing snapshot, this field will be filled with the \"creation_time\" value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown.\n                format: date-time\n                type: string\n              error:\n                description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurs during the snapshot creation. Upon success, this error field will be cleared.\n                properties:\n                  message:\n                    description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.'\n                    type: string\n                  time:\n                    description: time is the timestamp when the error was encountered.\n                    format: date-time\n                    type: string\n                type: object\n              readyToUse:\n                description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the \"ready_to_use\" value returned from CSI \"CreateSnapshot\" gRPC call. For a pre-existing snapshot, this field will be filled with the \"ready_to_use\" value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it, otherwise, this field will be set to \"True\". If not specified, it means the readiness of a snapshot is unknown.\n                type: boolean\n              restoreSize:\n                type: string\n                description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the \"size_bytes\" value returned from CSI \"CreateSnapshot\" gRPC call. For a pre-existing snapshot, this field will be filled with the \"size_bytes\" value returned from the CSI \"ListSnapshots\" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown.\n                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                x-kubernetes-int-or-string: true\n            type: object\n        required:\n        - spec\n        type: object\n    served: false\n    storage: false\n    subresources:\n      status: {}\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "kubernetes/helm/README.md",
    "content": "# OpsAny PaaS Kubernetes集群部署\n\nOpsAny PaaS支持使用Helm进行一键部署。\n\n依赖服务：\n- Mariadb\n- Redis\n- RabbitMQ\n- MongoDB\n- Guacd\n- ST2\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-consul\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.12.3\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"consul.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"consul.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"consul.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"consul.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-consul.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-consul.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-consul.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-consul.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-consul.chart\" . }}\n{{ include \"opsany-consul.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-consul.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-consul.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-consul.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-consul.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-consul.fullname\" . }}\n  labels:\n    {{- include \"opsany-consul.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-consul.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-consul.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-consul-config\n              mountPath: /consul/config/consul.hcl\n              subPath: consul.hcl\n            - name: opsany-consul-data\n              mountPath: /consul/data\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: consul\n              containerPort: 8500\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-consul-config\n          secret:\n            secretName: opsany-consul-config\n            items:\n            - key: consul.hcl\n              path: consul.hcl\n        - name: opsany-consul-data\n          persistentVolumeClaim:\n            claimName: opsany-consul-data\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-consul.fullname\" . }}\n  labels:\n    {{- include \"opsany-consul.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-consul.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"consul.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"consul.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-consul-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-consul.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"consul.hcl\").AsSecrets | indent 2 }} \n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-consul.fullname\" . }}\n  labels:\n    {{- include \"opsany-consul.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8500\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-consul.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"consul.serviceAccountName\" . }}\n  labels:\n    {{- include \"consul.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/storage.yaml",
    "content": "---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-consul-data\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/consul-volume/data\n    server: 10.224.218.71\n\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-consul-data\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-consul-data\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-consul.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-consul.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-consul.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/consul/values.yaml",
    "content": "# Default values for opsany-consul.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/consul\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8500\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/Chart.yaml",
    "content": "apiVersion: v2\nname: heartbeat\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"heartbeat.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"heartbeat.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"heartbeat.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"heartbeat.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"heartbeat.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"heartbeat.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"heartbeat.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"heartbeat.labels\" -}}\nhelm.sh/chart: {{ include \"heartbeat.chart\" . }}\n{{ include \"heartbeat.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"heartbeat.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"heartbeat.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"heartbeat.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"heartbeat.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"heartbeat.fullname\" . }}\n  labels:\n    {{- include \"heartbeat.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"heartbeat.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"heartbeat.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"heartbeat.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: {{ .Values.service.port }}\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /\n              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"heartbeat.fullname\" . }}\n  labels:\n    {{- include \"heartbeat.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"heartbeat.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"heartbeat.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"heartbeat.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"heartbeat.fullname\" . }}\n  labels:\n    {{- include \"heartbeat.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"heartbeat.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"heartbeat.serviceAccountName\" . }}\n  labels:\n    {{- include \"heartbeat.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"heartbeat.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"heartbeat.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"heartbeat.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/heartbeat/values.yaml",
    "content": "# Default values for heartbeat.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-heartbeat\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 80\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/Chart.yaml",
    "content": "annotations:\n  category: Database\napiVersion: v2\nappVersion: 6.0.3\ndependencies:\n- name: common\n  repository: https://charts.bitnami.com/bitnami\n  tags:\n  - bitnami-common\n  version: 2.x.x\ndescription: MongoDB(R) is a relational open source NoSQL database. Easy to use, it\n  stores data in JSON-like documents. Automated scalability and high-performance.\n  Ideal for developing cloud native applications.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/mongodb\nicon: https://bitnami.com/assets/stacks/mongodb/img/mongodb-stack-220x234.png\nkeywords:\n- mongodb\n- database\n- nosql\n- cluster\n- replicaset\n- replication\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: mongodb\nsources:\n- https://github.com/bitnami/containers/tree/main/bitnami/mongodb\n- https://mongodb.org\nversion: 13.5.0\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/README.md",
    "content": "<!--- app-name: MongoDB&reg; -->\n\n# MongoDB(R) packaged by Bitnami\n\nMongoDB(R) is a relational open source NoSQL database. Easy to use, it stores data in JSON-like documents. Automated scalability and high-performance. Ideal for developing cloud native applications.\n\n[Overview of MongoDB&reg;](http://www.mongodb.org)\n\nDisclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB(R) is run and maintained by MongoDB, which is a completely separate project from Bitnami.\n                           \n## TL;DR\n\n```bash\n$ helm repo add my-repo https://charts.bitnami.com/bitnami\n$ helm install my-release my-repo/mongodb\n```\n\n## Introduction\n\nThis chart bootstraps a [MongoDB(&reg;)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n- PV provisioner support in the underlying infrastructure\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```bash\n$ helm install my-release my-repo/mongodb\n```\n\nThe command deploys MongoDB(&reg;) on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```bash\n$ helm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Architecture\n\nThis chart allows installing MongoDB(&reg;) using two different architecture setups: `standalone` or `replicaset`. Use the `architecture` parameter to choose the one to use:\n\n```console\narchitecture=\"standalone\"\narchitecture=\"replicaset\"\n```\n\nRefer to the [chart documentation for more information on each of these architectures](https://docs.bitnami.com/kubernetes/infrastructure/mongodb/get-started/understand-architecture/).\n\n## Parameters\n\n### Global parameters\n\n| Name                       | Description                                                                                                            | Value |\n| -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----- |\n| `global.imageRegistry`     | Global Docker image registry                                                                                           | `\"\"`  |\n| `global.imagePullSecrets`  | Global Docker registry secret names as an array                                                                        | `[]`  |\n| `global.storageClass`      | Global StorageClass for Persistent Volume(s)                                                                           | `\"\"`  |\n| `global.namespaceOverride` | Override the namespace for resource deployed by the chart, but can itself be overridden by the local namespaceOverride | `\"\"`  |\n\n\n### Common parameters\n\n| Name                     | Description                                                                                               | Value           |\n| ------------------------ | --------------------------------------------------------------------------------------------------------- | --------------- |\n| `nameOverride`           | String to partially override mongodb.fullname template (will maintain the release name)                   | `\"\"`            |\n| `fullnameOverride`       | String to fully override mongodb.fullname template                                                        | `\"\"`            |\n| `namespaceOverride`      | String to fully override common.names.namespace                                                           | `\"\"`            |\n| `kubeVersion`            | Force target Kubernetes version (using Helm capabilities if not set)                                      | `\"\"`            |\n| `clusterDomain`          | Default Kubernetes cluster domain                                                                         | `cluster.local` |\n| `extraDeploy`            | Array of extra objects to deploy with the release                                                         | `[]`            |\n| `commonLabels`           | Add labels to all the deployed resources (sub-charts are not considered). Evaluated as a template         | `{}`            |\n| `commonAnnotations`      | Common annotations to add to all Mongo resources (sub-charts are not considered). Evaluated as a template | `{}`            |\n| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden)                   | `false`         |\n| `diagnosticMode.command` | Command to override all containers in the deployment                                                      | `[\"sleep\"]`     |\n| `diagnosticMode.args`    | Args to override all containers in the deployment                                                         | `[\"infinity\"]`  |\n\n\n### MongoDB(&reg;) parameters\n\n| Name                             | Description                                                                                                                                                  | Value                 |\n| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------- |\n| `image.registry`                 | MongoDB(&reg;) image registry                                                                                                                                | `docker.io`           |\n| `image.repository`               | MongoDB(&reg;) image registry                                                                                                                                | `bitnami/mongodb`     |\n| `image.tag`                      | MongoDB(&reg;) image tag (immutable tags are recommended)                                                                                                    | `6.0.3-debian-11-r0`  |\n| `image.digest`                   | MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                               | `\"\"`                  |\n| `image.pullPolicy`               | MongoDB(&reg;) image pull policy                                                                                                                             | `IfNotPresent`        |\n| `image.pullSecrets`              | Specify docker-registry secret names as an array                                                                                                             | `[]`                  |\n| `image.debug`                    | Set to true if you would like to see extra information on logs                                                                                               | `false`               |\n| `schedulerName`                  | Name of the scheduler (other than default) to dispatch pods                                                                                                  | `\"\"`                  |\n| `architecture`                   | MongoDB(&reg;) architecture (`standalone` or `replicaset`)                                                                                                   | `standalone`          |\n| `useStatefulSet`                 | Set to true to use a StatefulSet instead of a Deployment (only when `architecture=standalone`)                                                               | `false`               |\n| `auth.enabled`                   | Enable authentication                                                                                                                                        | `true`                |\n| `auth.rootUser`                  | MongoDB(&reg;) root user                                                                                                                                     | `root`                |\n| `auth.rootPassword`              | MongoDB(&reg;) root password                                                                                                                                 | `\"\"`                  |\n| `auth.usernames`                 | List of custom users to be created during the initialization                                                                                                 | `[]`                  |\n| `auth.passwords`                 | List of passwords for the custom users set at `auth.usernames`                                                                                               | `[]`                  |\n| `auth.databases`                 | List of custom databases to be created during the initialization                                                                                             | `[]`                  |\n| `auth.username`                  | DEPRECATED: use `auth.usernames` instead                                                                                                                     | `\"\"`                  |\n| `auth.password`                  | DEPRECATED: use `auth.passwords` instead                                                                                                                     | `\"\"`                  |\n| `auth.database`                  | DEPRECATED: use `auth.databases` instead                                                                                                                     | `\"\"`                  |\n| `auth.replicaSetKey`             | Key used for authentication in the replicaset (only when `architecture=replicaset`)                                                                          | `\"\"`                  |\n| `auth.existingSecret`            | Existing secret with MongoDB(&reg;) credentials (keys: `mongodb-passwords`, `mongodb-root-password`, `mongodb-metrics-password`, ` mongodb-replica-set-key`) | `\"\"`                  |\n| `tls.enabled`                    | Enable MongoDB(&reg;) TLS support between nodes in the cluster as well as between mongo clients and nodes                                                    | `false`               |\n| `tls.autoGenerated`              | Generate a custom CA and self-signed certificates                                                                                                            | `true`                |\n| `tls.existingSecret`             | Existing secret with TLS certificates (keys: `mongodb-ca-cert`, `mongodb-ca-key`)                                                                            | `\"\"`                  |\n| `tls.caCert`                     | Custom CA certificated (base64 encoded)                                                                                                                      | `\"\"`                  |\n| `tls.caKey`                      | CA certificate private key (base64 encoded)                                                                                                                  | `\"\"`                  |\n| `tls.standalone.existingSecret`  | Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).                                                                                      | `\"\"`                  |\n| `tls.replicaset.existingSecrets` | Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).                                                                            | `[]`                  |\n| `tls.hidden.existingSecrets`     | Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).                                                                            | `[]`                  |\n| `tls.arbiter.existingSecret`     | Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).                                                                                      | `\"\"`                  |\n| `tls.image.registry`             | Init container TLS certs setup image registry                                                                                                                | `docker.io`           |\n| `tls.image.repository`           | Init container TLS certs setup image repository                                                                                                              | `bitnami/nginx`       |\n| `tls.image.tag`                  | Init container TLS certs setup image tag (immutable tags are recommended)                                                                                    | `1.23.2-debian-11-r9` |\n| `tls.image.digest`               | Init container TLS certs setup image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                               | `\"\"`                  |\n| `tls.image.pullPolicy`           | Init container TLS certs setup image pull policy                                                                                                             | `IfNotPresent`        |\n| `tls.image.pullSecrets`          | Init container TLS certs specify docker-registry secret names as an array                                                                                    | `[]`                  |\n| `tls.extraDnsNames`              | Add extra dns names to the CA, can solve x509 auth issue for pod clients                                                                                     | `[]`                  |\n| `tls.mode`                       | Allows to set the tls mode which should be used when tls is enabled (options: `allowTLS`, `preferTLS`, `requireTLS`)                                         | `requireTLS`          |\n| `tls.resources.limits`           | Init container generate-tls-certs resource limits                                                                                                            | `{}`                  |\n| `tls.resources.requests`         | Init container generate-tls-certs resource requests                                                                                                          | `{}`                  |\n| `hostAliases`                    | Add deployment host aliases                                                                                                                                  | `[]`                  |\n| `replicaSetName`                 | Name of the replica set (only when `architecture=replicaset`)                                                                                                | `rs0`                 |\n| `replicaSetHostnames`            | Enable DNS hostnames in the replicaset config (only when `architecture=replicaset`)                                                                          | `true`                |\n| `enableIPv6`                     | Switch to enable/disable IPv6 on MongoDB(&reg;)                                                                                                              | `false`               |\n| `directoryPerDB`                 | Switch to enable/disable DirectoryPerDB on MongoDB(&reg;)                                                                                                    | `false`               |\n| `systemLogVerbosity`             | MongoDB(&reg;) system log verbosity level                                                                                                                    | `0`                   |\n| `disableSystemLog`               | Switch to enable/disable MongoDB(&reg;) system log                                                                                                           | `false`               |\n| `disableJavascript`              | Switch to enable/disable MongoDB(&reg;) server-side JavaScript execution                                                                                     | `false`               |\n| `enableJournal`                  | Switch to enable/disable MongoDB(&reg;) Journaling                                                                                                           | `true`                |\n| `configuration`                  | MongoDB(&reg;) configuration file to be used for Primary and Secondary nodes                                                                                 | `\"\"`                  |\n\n\n### replicaSetConfigurationSettings settings applied during runtime (not via configuration file)\n\n| Name                                            | Description                                                                                         | Value   |\n| ----------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------- |\n| `replicaSetConfigurationSettings.enabled`       | Enable MongoDB(&reg;) Switch to enable/disable configuring MongoDB(&reg;) run time rs.conf settings | `false` |\n| `replicaSetConfigurationSettings.configuration` | run-time rs.conf settings                                                                           | `{}`    |\n| `existingConfigmap`                             | Name of existing ConfigMap with MongoDB(&reg;) configuration for Primary and Secondary nodes        | `\"\"`    |\n| `initdbScripts`                                 | Dictionary of initdb scripts                                                                        | `{}`    |\n| `initdbScriptsConfigMap`                        | Existing ConfigMap with custom initdb scripts                                                       | `\"\"`    |\n| `command`                                       | Override default container command (useful when using custom images)                                | `[]`    |\n| `args`                                          | Override default container args (useful when using custom images)                                   | `[]`    |\n| `extraFlags`                                    | MongoDB(&reg;) additional command line flags                                                        | `[]`    |\n| `extraEnvVars`                                  | Extra environment variables to add to MongoDB(&reg;) pods                                           | `[]`    |\n| `extraEnvVarsCM`                                | Name of existing ConfigMap containing extra env vars                                                | `\"\"`    |\n| `extraEnvVarsSecret`                            | Name of existing Secret containing extra env vars (in case of sensitive data)                       | `\"\"`    |\n\n\n### MongoDB(&reg;) statefulset parameters\n\n| Name                                    | Description                                                                                                     | Value           |\n| --------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------- |\n| `annotations`                           | Additional labels to be added to the MongoDB(&reg;) statefulset. Evaluated as a template                        | `{}`            |\n| `labels`                                | Annotations to be added to the MongoDB(&reg;) statefulset. Evaluated as a template                              | `{}`            |\n| `replicaCount`                          | Number of MongoDB(&reg;) nodes (only when `architecture=replicaset`)                                            | `2`             |\n| `updateStrategy.type`                   | Strategy to use to replace existing MongoDB(&reg;) pods. When architecture=standalone and useStatefulSet=false, | `RollingUpdate` |\n| `podManagementPolicy`                   | Pod management policy for MongoDB(&reg;)                                                                        | `OrderedReady`  |\n| `podAffinityPreset`                     | MongoDB(&reg;) Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`              | `\"\"`            |\n| `podAntiAffinityPreset`                 | MongoDB(&reg;) Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`         | `soft`          |\n| `nodeAffinityPreset.type`               | MongoDB(&reg;) Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`        | `\"\"`            |\n| `nodeAffinityPreset.key`                | MongoDB(&reg;) Node label key to match Ignored if `affinity` is set.                                            | `\"\"`            |\n| `nodeAffinityPreset.values`             | MongoDB(&reg;) Node label values to match. Ignored if `affinity` is set.                                        | `[]`            |\n| `affinity`                              | MongoDB(&reg;) Affinity for pod assignment                                                                      | `{}`            |\n| `nodeSelector`                          | MongoDB(&reg;) Node labels for pod assignment                                                                   | `{}`            |\n| `tolerations`                           | MongoDB(&reg;) Tolerations for pod assignment                                                                   | `[]`            |\n| `topologySpreadConstraints`             | MongoDB(&reg;) Spread Constraints for Pods                                                                      | `[]`            |\n| `lifecycleHooks`                        | LifecycleHook for the MongoDB(&reg;) container(s) to automate configuration before or after startup             | `{}`            |\n| `terminationGracePeriodSeconds`         | MongoDB(&reg;) Termination Grace Period                                                                         | `\"\"`            |\n| `podLabels`                             | MongoDB(&reg;) pod labels                                                                                       | `{}`            |\n| `podAnnotations`                        | MongoDB(&reg;) Pod annotations                                                                                  | `{}`            |\n| `priorityClassName`                     | Name of the existing priority class to be used by MongoDB(&reg;) pod(s)                                         | `\"\"`            |\n| `runtimeClassName`                      | Name of the runtime class to be used by MongoDB(&reg;) pod(s)                                                   | `\"\"`            |\n| `podSecurityContext.enabled`            | Enable MongoDB(&reg;) pod(s)' Security Context                                                                  | `true`          |\n| `podSecurityContext.fsGroup`            | Group ID for the volumes of the MongoDB(&reg;) pod(s)                                                           | `1001`          |\n| `podSecurityContext.sysctls`            | sysctl settings of the MongoDB(&reg;) pod(s)'                                                                   | `[]`            |\n| `containerSecurityContext.enabled`      | Enable MongoDB(&reg;) container(s)' Security Context                                                            | `true`          |\n| `containerSecurityContext.runAsUser`    | User ID for the MongoDB(&reg;) container                                                                        | `1001`          |\n| `containerSecurityContext.runAsNonRoot` | Set MongoDB(&reg;) container's Security Context runAsNonRoot                                                    | `true`          |\n| `resources.limits`                      | The resources limits for MongoDB(&reg;) containers                                                              | `{}`            |\n| `resources.requests`                    | The requested resources for MongoDB(&reg;) containers                                                           | `{}`            |\n| `containerPorts.mongodb`                | MongoDB(&reg;) container port                                                                                   | `27017`         |\n| `livenessProbe.enabled`                 | Enable livenessProbe                                                                                            | `true`          |\n| `livenessProbe.initialDelaySeconds`     | Initial delay seconds for livenessProbe                                                                         | `30`            |\n| `livenessProbe.periodSeconds`           | Period seconds for livenessProbe                                                                                | `20`            |\n| `livenessProbe.timeoutSeconds`          | Timeout seconds for livenessProbe                                                                               | `10`            |\n| `livenessProbe.failureThreshold`        | Failure threshold for livenessProbe                                                                             | `6`             |\n| `livenessProbe.successThreshold`        | Success threshold for livenessProbe                                                                             | `1`             |\n| `readinessProbe.enabled`                | Enable readinessProbe                                                                                           | `true`          |\n| `readinessProbe.initialDelaySeconds`    | Initial delay seconds for readinessProbe                                                                        | `5`             |\n| `readinessProbe.periodSeconds`          | Period seconds for readinessProbe                                                                               | `10`            |\n| `readinessProbe.timeoutSeconds`         | Timeout seconds for readinessProbe                                                                              | `5`             |\n| `readinessProbe.failureThreshold`       | Failure threshold for readinessProbe                                                                            | `6`             |\n| `readinessProbe.successThreshold`       | Success threshold for readinessProbe                                                                            | `1`             |\n| `startupProbe.enabled`                  | Enable startupProbe                                                                                             | `false`         |\n| `startupProbe.initialDelaySeconds`      | Initial delay seconds for startupProbe                                                                          | `5`             |\n| `startupProbe.periodSeconds`            | Period seconds for startupProbe                                                                                 | `20`            |\n| `startupProbe.timeoutSeconds`           | Timeout seconds for startupProbe                                                                                | `10`            |\n| `startupProbe.failureThreshold`         | Failure threshold for startupProbe                                                                              | `30`            |\n| `startupProbe.successThreshold`         | Success threshold for startupProbe                                                                              | `1`             |\n| `customLivenessProbe`                   | Override default liveness probe for MongoDB(&reg;) containers                                                   | `{}`            |\n| `customReadinessProbe`                  | Override default readiness probe for MongoDB(&reg;) containers                                                  | `{}`            |\n| `customStartupProbe`                    | Override default startup probe for MongoDB(&reg;) containers                                                    | `{}`            |\n| `initContainers`                        | Add additional init containers for the hidden node pod(s)                                                       | `[]`            |\n| `sidecars`                              | Add additional sidecar containers for the MongoDB(&reg;) pod(s)                                                 | `[]`            |\n| `extraVolumeMounts`                     | Optionally specify extra list of additional volumeMounts for the MongoDB(&reg;) container(s)                    | `[]`            |\n| `extraVolumes`                          | Optionally specify extra list of additional volumes to the MongoDB(&reg;) statefulset                           | `[]`            |\n| `pdb.create`                            | Enable/disable a Pod Disruption Budget creation for MongoDB(&reg;) pod(s)                                       | `false`         |\n| `pdb.minAvailable`                      | Minimum number/percentage of MongoDB(&reg;) pods that must still be available after the eviction                | `1`             |\n| `pdb.maxUnavailable`                    | Maximum number/percentage of MongoDB(&reg;) pods that may be made unavailable after the eviction                | `\"\"`            |\n\n\n### Traffic exposure parameters\n\n| Name                                                     | Description                                                                                                                                     | Value                 |\n| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |\n| `service.nameOverride`                                   | MongoDB(&reg;) service name                                                                                                                     | `\"\"`                  |\n| `service.type`                                           | Kubernetes Service type (only for standalone architecture)                                                                                      | `ClusterIP`           |\n| `service.portName`                                       | MongoDB(&reg;) service port name (only for standalone architecture)                                                                             | `mongodb`             |\n| `service.ports.mongodb`                                  | MongoDB(&reg;) service port.                                                                                                                    | `27017`               |\n| `service.nodePorts.mongodb`                              | Port to bind to for NodePort and LoadBalancer service types (only for standalone architecture)                                                  | `\"\"`                  |\n| `service.clusterIP`                                      | MongoDB(&reg;) service cluster IP (only for standalone architecture)                                                                            | `\"\"`                  |\n| `service.externalIPs`                                    | Specify the externalIP value ClusterIP service type (only for standalone architecture)                                                          | `[]`                  |\n| `service.loadBalancerIP`                                 | loadBalancerIP for MongoDB(&reg;) Service (only for standalone architecture)                                                                    | `\"\"`                  |\n| `service.loadBalancerClass`                              | loadBalancerClass for MongoDB(&reg;) Service (only for standalone architecture)                                                                 | `\"\"`                  |\n| `service.loadBalancerSourceRanges`                       | Address(es) that are allowed when service is LoadBalancer (only for standalone architecture)                                                    | `[]`                  |\n| `service.extraPorts`                                     | Extra ports to expose (normally used with the `sidecar` value)                                                                                  | `[]`                  |\n| `service.annotations`                                    | Provide any additional annotations that may be required                                                                                         | `{}`                  |\n| `service.externalTrafficPolicy`                          | service external traffic policy (only for standalone architecture)                                                                              | `Local`               |\n| `service.sessionAffinity`                                | Control where client requests go, to the same pod or round-robin                                                                                | `None`                |\n| `service.sessionAffinityConfig`                          | Additional settings for the sessionAffinity                                                                                                     | `{}`                  |\n| `externalAccess.enabled`                                 | Enable Kubernetes external cluster access to MongoDB(&reg;) nodes (only for replicaset architecture)                                            | `false`               |\n| `externalAccess.autoDiscovery.enabled`                   | Enable using an init container to auto-detect external IPs by querying the K8s API                                                              | `false`               |\n| `externalAccess.autoDiscovery.image.registry`            | Init container auto-discovery image registry                                                                                                    | `docker.io`           |\n| `externalAccess.autoDiscovery.image.repository`          | Init container auto-discovery image repository                                                                                                  | `bitnami/kubectl`     |\n| `externalAccess.autoDiscovery.image.tag`                 | Init container auto-discovery image tag (immutable tags are recommended)                                                                        | `1.25.4-debian-11-r1` |\n| `externalAccess.autoDiscovery.image.digest`              | Init container auto-discovery image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                   | `\"\"`                  |\n| `externalAccess.autoDiscovery.image.pullPolicy`          | Init container auto-discovery image pull policy                                                                                                 | `IfNotPresent`        |\n| `externalAccess.autoDiscovery.image.pullSecrets`         | Init container auto-discovery image pull secrets                                                                                                | `[]`                  |\n| `externalAccess.autoDiscovery.resources.limits`          | Init container auto-discovery resource limits                                                                                                   | `{}`                  |\n| `externalAccess.autoDiscovery.resources.requests`        | Init container auto-discovery resource requests                                                                                                 | `{}`                  |\n| `externalAccess.service.type`                            | Kubernetes Service type for external access. Allowed values: NodePort, LoadBalancer or ClusterIP                                                | `LoadBalancer`        |\n| `externalAccess.service.portName`                        | MongoDB(&reg;) port name used for external access when service type is LoadBalancer                                                             | `mongodb`             |\n| `externalAccess.service.ports.mongodb`                   | MongoDB(&reg;) port used for external access when service type is LoadBalancer                                                                  | `27017`               |\n| `externalAccess.service.loadBalancerIPs`                 | Array of load balancer IPs for MongoDB(&reg;) nodes                                                                                             | `[]`                  |\n| `externalAccess.service.loadBalancerClass`               | loadBalancerClass when service type is LoadBalancer                                                                                             | `\"\"`                  |\n| `externalAccess.service.loadBalancerSourceRanges`        | Address(es) that are allowed when service is LoadBalancer                                                                                       | `[]`                  |\n| `externalAccess.service.externalTrafficPolicy`           | MongoDB(&reg;) service external traffic policy                                                                                                  | `Local`               |\n| `externalAccess.service.nodePorts`                       | Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                          | `[]`                  |\n| `externalAccess.service.domain`                          | Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                        | `\"\"`                  |\n| `externalAccess.service.extraPorts`                      | Extra ports to expose (normally used with the `sidecar` value)                                                                                  | `[]`                  |\n| `externalAccess.service.annotations`                     | Service annotations for external access                                                                                                         | `{}`                  |\n| `externalAccess.service.sessionAffinity`                 | Control where client requests go, to the same pod or round-robin                                                                                | `None`                |\n| `externalAccess.service.sessionAffinityConfig`           | Additional settings for the sessionAffinity                                                                                                     | `{}`                  |\n| `externalAccess.hidden.enabled`                          | Enable Kubernetes external cluster access to MongoDB(&reg;) hidden nodes                                                                        | `false`               |\n| `externalAccess.hidden.service.type`                     | Kubernetes Service type for external access. Allowed values: NodePort or LoadBalancer                                                           | `LoadBalancer`        |\n| `externalAccess.hidden.service.portName`                 | MongoDB(&reg;) port name used for external access when service type is LoadBalancer                                                             | `mongodb`             |\n| `externalAccess.hidden.service.ports.mongodb`            | MongoDB(&reg;) port used for external access when service type is LoadBalancer                                                                  | `27017`               |\n| `externalAccess.hidden.service.loadBalancerIPs`          | Array of load balancer IPs for MongoDB(&reg;) nodes                                                                                             | `[]`                  |\n| `externalAccess.hidden.service.loadBalancerClass`        | loadBalancerClass when service type is LoadBalancer                                                                                             | `\"\"`                  |\n| `externalAccess.hidden.service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer                                                                                       | `[]`                  |\n| `externalAccess.hidden.service.externalTrafficPolicy`    | MongoDB(&reg;) service external traffic policy                                                                                                  | `Local`               |\n| `externalAccess.hidden.service.nodePorts`                | Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort. Length must be the same as replicaCount | `[]`                  |\n| `externalAccess.hidden.service.domain`                   | Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                        | `\"\"`                  |\n| `externalAccess.hidden.service.extraPorts`               | Extra ports to expose (normally used with the `sidecar` value)                                                                                  | `[]`                  |\n| `externalAccess.hidden.service.annotations`              | Service annotations for external access                                                                                                         | `{}`                  |\n| `externalAccess.hidden.service.sessionAffinity`          | Control where client requests go, to the same pod or round-robin                                                                                | `None`                |\n| `externalAccess.hidden.service.sessionAffinityConfig`    | Additional settings for the sessionAffinity                                                                                                     | `{}`                  |\n\n\n### Persistence parameters\n\n| Name                                          | Description                                                                                                                           | Value               |\n| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |\n| `persistence.enabled`                         | Enable MongoDB(&reg;) data persistence using PVC                                                                                      | `true`              |\n| `persistence.medium`                          | Provide a medium for `emptyDir` volumes.                                                                                              | `\"\"`                |\n| `persistence.existingClaim`                   | Provide an existing `PersistentVolumeClaim` (only when `architecture=standalone`)                                                     | `\"\"`                |\n| `persistence.resourcePolicy`                  | Setting it to \"keep\" to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted | `\"\"`                |\n| `persistence.storageClass`                    | PVC Storage Class for MongoDB(&reg;) data volume                                                                                      | `\"\"`                |\n| `persistence.accessModes`                     | PV Access Mode                                                                                                                        | `[\"ReadWriteOnce\"]` |\n| `persistence.size`                            | PVC Storage Request for MongoDB(&reg;) data volume                                                                                    | `8Gi`               |\n| `persistence.annotations`                     | PVC annotations                                                                                                                       | `{}`                |\n| `persistence.mountPath`                       | Path to mount the volume at                                                                                                           | `/bitnami/mongodb`  |\n| `persistence.subPath`                         | Subdirectory of the volume to mount at                                                                                                | `\"\"`                |\n| `persistence.volumeClaimTemplates.selector`   | A label query over volumes to consider for binding (e.g. when using local volumes)                                                    | `{}`                |\n| `persistence.volumeClaimTemplates.requests`   | Custom PVC requests attributes                                                                                                        | `{}`                |\n| `persistence.volumeClaimTemplates.dataSource` | Add dataSource to the VolumeClaimTemplate                                                                                             | `{}`                |\n\n\n### RBAC parameters\n\n| Name                                          | Description                                                                                                                                 | Value   |\n| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- |\n| `serviceAccount.create`                       | Enable creation of ServiceAccount for MongoDB(&reg;) pods                                                                                   | `true`  |\n| `serviceAccount.name`                         | Name of the created serviceAccount                                                                                                          | `\"\"`    |\n| `serviceAccount.annotations`                  | Additional Service Account annotations                                                                                                      | `{}`    |\n| `serviceAccount.automountServiceAccountToken` | Allows auto mount of ServiceAccountToken on the serviceAccount created                                                                      | `true`  |\n| `rbac.create`                                 | Whether to create & use RBAC resources or not                                                                                               | `false` |\n| `rbac.rules`                                  | Custom rules to create following the role specification                                                                                     | `[]`    |\n| `podSecurityPolicy.create`                    | Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later | `false` |\n| `podSecurityPolicy.allowPrivilegeEscalation`  | Enable privilege escalation                                                                                                                 | `false` |\n| `podSecurityPolicy.privileged`                | Allow privileged                                                                                                                            | `false` |\n| `podSecurityPolicy.spec`                      | Specify the full spec to use for Pod Security Policy                                                                                        | `{}`    |\n\n\n### Volume Permissions parameters\n\n| Name                                          | Description                                                                                                                       | Value                   |\n| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |\n| `volumePermissions.enabled`                   | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`              | `false`                 |\n| `volumePermissions.image.registry`            | Init container volume-permissions image registry                                                                                  | `docker.io`             |\n| `volumePermissions.image.repository`          | Init container volume-permissions image repository                                                                                | `bitnami/bitnami-shell` |\n| `volumePermissions.image.tag`                 | Init container volume-permissions image tag (immutable tags are recommended)                                                      | `11-debian-11-r52`      |\n| `volumePermissions.image.digest`              | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                    |\n| `volumePermissions.image.pullPolicy`          | Init container volume-permissions image pull policy                                                                               | `IfNotPresent`          |\n| `volumePermissions.image.pullSecrets`         | Specify docker-registry secret names as an array                                                                                  | `[]`                    |\n| `volumePermissions.resources.limits`          | Init container volume-permissions resource limits                                                                                 | `{}`                    |\n| `volumePermissions.resources.requests`        | Init container volume-permissions resource requests                                                                               | `{}`                    |\n| `volumePermissions.securityContext.runAsUser` | User ID for the volumePermissions container                                                                                       | `0`                     |\n\n\n### Arbiter parameters\n\n| Name                                            | Description                                                                                       | Value           |\n| ----------------------------------------------- | ------------------------------------------------------------------------------------------------- | --------------- |\n| `arbiter.enabled`                               | Enable deploying the arbiter                                                                      | `true`          |\n| `arbiter.hostAliases`                           | Add deployment host aliases                                                                       | `[]`            |\n| `arbiter.configuration`                         | Arbiter configuration file to be used                                                             | `\"\"`            |\n| `arbiter.existingConfigmap`                     | Name of existing ConfigMap with Arbiter configuration                                             | `\"\"`            |\n| `arbiter.command`                               | Override default container command (useful when using custom images)                              | `[]`            |\n| `arbiter.args`                                  | Override default container args (useful when using custom images)                                 | `[]`            |\n| `arbiter.extraFlags`                            | Arbiter additional command line flags                                                             | `[]`            |\n| `arbiter.extraEnvVars`                          | Extra environment variables to add to Arbiter pods                                                | `[]`            |\n| `arbiter.extraEnvVarsCM`                        | Name of existing ConfigMap containing extra env vars                                              | `\"\"`            |\n| `arbiter.extraEnvVarsSecret`                    | Name of existing Secret containing extra env vars (in case of sensitive data)                     | `\"\"`            |\n| `arbiter.annotations`                           | Additional labels to be added to the Arbiter statefulset                                          | `{}`            |\n| `arbiter.labels`                                | Annotations to be added to the Arbiter statefulset                                                | `{}`            |\n| `arbiter.topologySpreadConstraints`             | MongoDB(&reg;) Spread Constraints for arbiter Pods                                                | `[]`            |\n| `arbiter.lifecycleHooks`                        | LifecycleHook for the Arbiter container to automate configuration before or after startup         | `{}`            |\n| `arbiter.terminationGracePeriodSeconds`         | Arbiter Termination Grace Period                                                                  | `\"\"`            |\n| `arbiter.updateStrategy.type`                   | Strategy that will be employed to update Pods in the StatefulSet                                  | `RollingUpdate` |\n| `arbiter.podManagementPolicy`                   | Pod management policy for MongoDB(&reg;)                                                          | `OrderedReady`  |\n| `arbiter.schedulerName`                         | Name of the scheduler (other than default) to dispatch pods                                       | `\"\"`            |\n| `arbiter.podAffinityPreset`                     | Arbiter Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`       | `\"\"`            |\n| `arbiter.podAntiAffinityPreset`                 | Arbiter Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`  | `soft`          |\n| `arbiter.nodeAffinityPreset.type`               | Arbiter Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `\"\"`            |\n| `arbiter.nodeAffinityPreset.key`                | Arbiter Node label key to match Ignored if `affinity` is set.                                     | `\"\"`            |\n| `arbiter.nodeAffinityPreset.values`             | Arbiter Node label values to match. Ignored if `affinity` is set.                                 | `[]`            |\n| `arbiter.affinity`                              | Arbiter Affinity for pod assignment                                                               | `{}`            |\n| `arbiter.nodeSelector`                          | Arbiter Node labels for pod assignment                                                            | `{}`            |\n| `arbiter.tolerations`                           | Arbiter Tolerations for pod assignment                                                            | `[]`            |\n| `arbiter.podLabels`                             | Arbiter pod labels                                                                                | `{}`            |\n| `arbiter.podAnnotations`                        | Arbiter Pod annotations                                                                           | `{}`            |\n| `arbiter.priorityClassName`                     | Name of the existing priority class to be used by Arbiter pod(s)                                  | `\"\"`            |\n| `arbiter.runtimeClassName`                      | Name of the runtime class to be used by Arbiter pod(s)                                            | `\"\"`            |\n| `arbiter.podSecurityContext.enabled`            | Enable Arbiter pod(s)' Security Context                                                           | `true`          |\n| `arbiter.podSecurityContext.fsGroup`            | Group ID for the volumes of the Arbiter pod(s)                                                    | `1001`          |\n| `arbiter.podSecurityContext.sysctls`            | sysctl settings of the Arbiter pod(s)'                                                            | `[]`            |\n| `arbiter.containerSecurityContext.enabled`      | Enable Arbiter container(s)' Security Context                                                     | `true`          |\n| `arbiter.containerSecurityContext.runAsUser`    | User ID for the Arbiter container                                                                 | `1001`          |\n| `arbiter.containerSecurityContext.runAsNonRoot` | Set Arbiter containers' Security Context runAsNonRoot                                             | `true`          |\n| `arbiter.resources.limits`                      | The resources limits for Arbiter containers                                                       | `{}`            |\n| `arbiter.resources.requests`                    | The requested resources for Arbiter containers                                                    | `{}`            |\n| `arbiter.containerPorts.mongodb`                | MongoDB(&reg;) arbiter container port                                                             | `27017`         |\n| `arbiter.livenessProbe.enabled`                 | Enable livenessProbe                                                                              | `true`          |\n| `arbiter.livenessProbe.initialDelaySeconds`     | Initial delay seconds for livenessProbe                                                           | `30`            |\n| `arbiter.livenessProbe.periodSeconds`           | Period seconds for livenessProbe                                                                  | `20`            |\n| `arbiter.livenessProbe.timeoutSeconds`          | Timeout seconds for livenessProbe                                                                 | `10`            |\n| `arbiter.livenessProbe.failureThreshold`        | Failure threshold for livenessProbe                                                               | `6`             |\n| `arbiter.livenessProbe.successThreshold`        | Success threshold for livenessProbe                                                               | `1`             |\n| `arbiter.readinessProbe.enabled`                | Enable readinessProbe                                                                             | `true`          |\n| `arbiter.readinessProbe.initialDelaySeconds`    | Initial delay seconds for readinessProbe                                                          | `5`             |\n| `arbiter.readinessProbe.periodSeconds`          | Period seconds for readinessProbe                                                                 | `20`            |\n| `arbiter.readinessProbe.timeoutSeconds`         | Timeout seconds for readinessProbe                                                                | `10`            |\n| `arbiter.readinessProbe.failureThreshold`       | Failure threshold for readinessProbe                                                              | `6`             |\n| `arbiter.readinessProbe.successThreshold`       | Success threshold for readinessProbe                                                              | `1`             |\n| `arbiter.startupProbe.enabled`                  | Enable startupProbe                                                                               | `false`         |\n| `arbiter.startupProbe.initialDelaySeconds`      | Initial delay seconds for startupProbe                                                            | `5`             |\n| `arbiter.startupProbe.periodSeconds`            | Period seconds for startupProbe                                                                   | `10`            |\n| `arbiter.startupProbe.timeoutSeconds`           | Timeout seconds for startupProbe                                                                  | `5`             |\n| `arbiter.startupProbe.failureThreshold`         | Failure threshold for startupProbe                                                                | `30`            |\n| `arbiter.startupProbe.successThreshold`         | Success threshold for startupProbe                                                                | `1`             |\n| `arbiter.customLivenessProbe`                   | Override default liveness probe for Arbiter containers                                            | `{}`            |\n| `arbiter.customReadinessProbe`                  | Override default readiness probe for Arbiter containers                                           | `{}`            |\n| `arbiter.customStartupProbe`                    | Override default startup probe for Arbiter containers                                             | `{}`            |\n| `arbiter.initContainers`                        | Add additional init containers for the Arbiter pod(s)                                             | `[]`            |\n| `arbiter.sidecars`                              | Add additional sidecar containers for the Arbiter pod(s)                                          | `[]`            |\n| `arbiter.extraVolumeMounts`                     | Optionally specify extra list of additional volumeMounts for the Arbiter container(s)             | `[]`            |\n| `arbiter.extraVolumes`                          | Optionally specify extra list of additional volumes to the Arbiter statefulset                    | `[]`            |\n| `arbiter.pdb.create`                            | Enable/disable a Pod Disruption Budget creation for Arbiter pod(s)                                | `false`         |\n| `arbiter.pdb.minAvailable`                      | Minimum number/percentage of Arbiter pods that should remain scheduled                            | `1`             |\n| `arbiter.pdb.maxUnavailable`                    | Maximum number/percentage of Arbiter pods that may be made unavailable                            | `\"\"`            |\n| `arbiter.service.nameOverride`                  | The arbiter service name                                                                          | `\"\"`            |\n| `arbiter.service.ports.mongodb`                 | MongoDB(&reg;) service port                                                                       | `27017`         |\n| `arbiter.service.extraPorts`                    | Extra ports to expose (normally used with the `sidecar` value)                                    | `[]`            |\n| `arbiter.service.annotations`                   | Provide any additional annotations that may be required                                           | `{}`            |\n\n\n### Hidden Node parameters\n\n| Name                                                 | Description                                                                                          | Value               |\n| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------- |\n| `hidden.enabled`                                     | Enable deploying the hidden nodes                                                                    | `false`             |\n| `hidden.hostAliases`                                 | Add deployment host aliases                                                                          | `[]`                |\n| `hidden.configuration`                               | Hidden node configuration file to be used                                                            | `\"\"`                |\n| `hidden.existingConfigmap`                           | Name of existing ConfigMap with Hidden node configuration                                            | `\"\"`                |\n| `hidden.command`                                     | Override default container command (useful when using custom images)                                 | `[]`                |\n| `hidden.args`                                        | Override default container args (useful when using custom images)                                    | `[]`                |\n| `hidden.extraFlags`                                  | Hidden node additional command line flags                                                            | `[]`                |\n| `hidden.extraEnvVars`                                | Extra environment variables to add to Hidden node pods                                               | `[]`                |\n| `hidden.extraEnvVarsCM`                              | Name of existing ConfigMap containing extra env vars                                                 | `\"\"`                |\n| `hidden.extraEnvVarsSecret`                          | Name of existing Secret containing extra env vars (in case of sensitive data)                        | `\"\"`                |\n| `hidden.annotations`                                 | Additional labels to be added to thehidden node statefulset                                          | `{}`                |\n| `hidden.labels`                                      | Annotations to be added to the hidden node statefulset                                               | `{}`                |\n| `hidden.topologySpreadConstraints`                   | MongoDB(&reg;) Spread Constraints for hidden Pods                                                    | `[]`                |\n| `hidden.lifecycleHooks`                              | LifecycleHook for the Hidden container to automate configuration before or after startup             | `{}`                |\n| `hidden.replicaCount`                                | Number of hidden nodes (only when `architecture=replicaset`)                                         | `1`                 |\n| `hidden.terminationGracePeriodSeconds`               | Hidden Termination Grace Period                                                                      | `\"\"`                |\n| `hidden.updateStrategy.type`                         | Strategy that will be employed to update Pods in the StatefulSet                                     | `RollingUpdate`     |\n| `hidden.podManagementPolicy`                         | Pod management policy for hidden node                                                                | `OrderedReady`      |\n| `hidden.schedulerName`                               | Name of the scheduler (other than default) to dispatch pods                                          | `\"\"`                |\n| `hidden.podAffinityPreset`                           | Hidden node Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`      | `\"\"`                |\n| `hidden.podAntiAffinityPreset`                       | Hidden node Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft`              |\n| `hidden.nodeAffinityPreset.type`                     | Hidden Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`     | `\"\"`                |\n| `hidden.nodeAffinityPreset.key`                      | Hidden Node label key to match Ignored if `affinity` is set.                                         | `\"\"`                |\n| `hidden.nodeAffinityPreset.values`                   | Hidden Node label values to match. Ignored if `affinity` is set.                                     | `[]`                |\n| `hidden.affinity`                                    | Hidden node Affinity for pod assignment                                                              | `{}`                |\n| `hidden.nodeSelector`                                | Hidden node Node labels for pod assignment                                                           | `{}`                |\n| `hidden.tolerations`                                 | Hidden node Tolerations for pod assignment                                                           | `[]`                |\n| `hidden.podLabels`                                   | Hidden node pod labels                                                                               | `{}`                |\n| `hidden.podAnnotations`                              | Hidden node Pod annotations                                                                          | `{}`                |\n| `hidden.priorityClassName`                           | Name of the existing priority class to be used by hidden node pod(s)                                 | `\"\"`                |\n| `hidden.runtimeClassName`                            | Name of the runtime class to be used by hidden node pod(s)                                           | `\"\"`                |\n| `hidden.podSecurityContext.enabled`                  | Enable Hidden pod(s)' Security Context                                                               | `true`              |\n| `hidden.podSecurityContext.fsGroup`                  | Group ID for the volumes of the Hidden pod(s)                                                        | `1001`              |\n| `hidden.podSecurityContext.sysctls`                  | sysctl settings of the Hidden pod(s)'                                                                | `[]`                |\n| `hidden.containerSecurityContext.enabled`            | Enable Hidden container(s)' Security Context                                                         | `true`              |\n| `hidden.containerSecurityContext.runAsUser`          | User ID for the Hidden container                                                                     | `1001`              |\n| `hidden.containerSecurityContext.runAsNonRoot`       | Set Hidden containers' Security Context runAsNonRoot                                                 | `true`              |\n| `hidden.resources.limits`                            | The resources limits for hidden node containers                                                      | `{}`                |\n| `hidden.resources.requests`                          | The requested resources for hidden node containers                                                   | `{}`                |\n| `hidden.containerPorts.mongodb`                      | MongoDB(&reg;) hidden container port                                                                 | `27017`             |\n| `hidden.livenessProbe.enabled`                       | Enable livenessProbe                                                                                 | `true`              |\n| `hidden.livenessProbe.initialDelaySeconds`           | Initial delay seconds for livenessProbe                                                              | `30`                |\n| `hidden.livenessProbe.periodSeconds`                 | Period seconds for livenessProbe                                                                     | `20`                |\n| `hidden.livenessProbe.timeoutSeconds`                | Timeout seconds for livenessProbe                                                                    | `10`                |\n| `hidden.livenessProbe.failureThreshold`              | Failure threshold for livenessProbe                                                                  | `6`                 |\n| `hidden.livenessProbe.successThreshold`              | Success threshold for livenessProbe                                                                  | `1`                 |\n| `hidden.readinessProbe.enabled`                      | Enable readinessProbe                                                                                | `true`              |\n| `hidden.readinessProbe.initialDelaySeconds`          | Initial delay seconds for readinessProbe                                                             | `5`                 |\n| `hidden.readinessProbe.periodSeconds`                | Period seconds for readinessProbe                                                                    | `20`                |\n| `hidden.readinessProbe.timeoutSeconds`               | Timeout seconds for readinessProbe                                                                   | `10`                |\n| `hidden.readinessProbe.failureThreshold`             | Failure threshold for readinessProbe                                                                 | `6`                 |\n| `hidden.readinessProbe.successThreshold`             | Success threshold for readinessProbe                                                                 | `1`                 |\n| `hidden.startupProbe.enabled`                        | Enable startupProbe                                                                                  | `false`             |\n| `hidden.startupProbe.initialDelaySeconds`            | Initial delay seconds for startupProbe                                                               | `5`                 |\n| `hidden.startupProbe.periodSeconds`                  | Period seconds for startupProbe                                                                      | `10`                |\n| `hidden.startupProbe.timeoutSeconds`                 | Timeout seconds for startupProbe                                                                     | `5`                 |\n| `hidden.startupProbe.failureThreshold`               | Failure threshold for startupProbe                                                                   | `30`                |\n| `hidden.startupProbe.successThreshold`               | Success threshold for startupProbe                                                                   | `1`                 |\n| `hidden.customLivenessProbe`                         | Override default liveness probe for hidden node containers                                           | `{}`                |\n| `hidden.customReadinessProbe`                        | Override default readiness probe for hidden node containers                                          | `{}`                |\n| `hidden.customStartupProbe`                          | Override default startup probe for MongoDB(&reg;) containers                                         | `{}`                |\n| `hidden.initContainers`                              | Add init containers to the MongoDB(&reg;) Hidden pods.                                               | `[]`                |\n| `hidden.sidecars`                                    | Add additional sidecar containers for the hidden node pod(s)                                         | `[]`                |\n| `hidden.extraVolumeMounts`                           | Optionally specify extra list of additional volumeMounts for the hidden node container(s)            | `[]`                |\n| `hidden.extraVolumes`                                | Optionally specify extra list of additional volumes to the hidden node statefulset                   | `[]`                |\n| `hidden.pdb.create`                                  | Enable/disable a Pod Disruption Budget creation for hidden node pod(s)                               | `false`             |\n| `hidden.pdb.minAvailable`                            | Minimum number/percentage of hidden node pods that should remain scheduled                           | `1`                 |\n| `hidden.pdb.maxUnavailable`                          | Maximum number/percentage of hidden node pods that may be made unavailable                           | `\"\"`                |\n| `hidden.persistence.enabled`                         | Enable hidden node data persistence using PVC                                                        | `true`              |\n| `hidden.persistence.medium`                          | Provide a medium for `emptyDir` volumes.                                                             | `\"\"`                |\n| `hidden.persistence.storageClass`                    | PVC Storage Class for hidden node data volume                                                        | `\"\"`                |\n| `hidden.persistence.accessModes`                     | PV Access Mode                                                                                       | `[\"ReadWriteOnce\"]` |\n| `hidden.persistence.size`                            | PVC Storage Request for hidden node data volume                                                      | `8Gi`               |\n| `hidden.persistence.annotations`                     | PVC annotations                                                                                      | `{}`                |\n| `hidden.persistence.mountPath`                       | The path the volume will be mounted at, useful when using different MongoDB(&reg;) images.           | `/bitnami/mongodb`  |\n| `hidden.persistence.subPath`                         | The subdirectory of the volume to mount to, useful in dev environments                               | `\"\"`                |\n| `hidden.persistence.volumeClaimTemplates.selector`   | A label query over volumes to consider for binding (e.g. when using local volumes)                   | `{}`                |\n| `hidden.persistence.volumeClaimTemplates.requests`   | Custom PVC requests attributes                                                                       | `{}`                |\n| `hidden.persistence.volumeClaimTemplates.dataSource` | Set volumeClaimTemplate dataSource                                                                   | `{}`                |\n| `hidden.service.portName`                            | MongoDB(&reg;) service port name                                                                     | `mongodb`           |\n| `hidden.service.ports.mongodb`                       | MongoDB(&reg;) service port                                                                          | `27017`             |\n| `hidden.service.extraPorts`                          | Extra ports to expose (normally used with the `sidecar` value)                                       | `[]`                |\n| `hidden.service.annotations`                         | Provide any additional annotations that may be required                                              | `{}`                |\n\n\n### Metrics parameters\n\n| Name                                         | Description                                                                                                           | Value                      |\n| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------- |\n| `metrics.enabled`                            | Enable using a sidecar Prometheus exporter                                                                            | `false`                    |\n| `metrics.image.registry`                     | MongoDB(&reg;) Prometheus exporter image registry                                                                     | `docker.io`                |\n| `metrics.image.repository`                   | MongoDB(&reg;) Prometheus exporter image repository                                                                   | `bitnami/mongodb-exporter` |\n| `metrics.image.tag`                          | MongoDB(&reg;) Prometheus exporter image tag (immutable tags are recommended)                                         | `0.35.0-debian-11-r4`      |\n| `metrics.image.digest`                       | MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag        | `\"\"`                       |\n| `metrics.image.pullPolicy`                   | MongoDB(&reg;) Prometheus exporter image pull policy                                                                  | `IfNotPresent`             |\n| `metrics.image.pullSecrets`                  | Specify docker-registry secret names as an array                                                                      | `[]`                       |\n| `metrics.username`                           | String with username for the metrics exporter                                                                         | `\"\"`                       |\n| `metrics.password`                           | String with password for the metrics exporter                                                                         | `\"\"`                       |\n| `metrics.extraFlags`                         | String with extra flags to the metrics exporter                                                                       | `\"\"`                       |\n| `metrics.command`                            | Override default container command (useful when using custom images)                                                  | `[]`                       |\n| `metrics.args`                               | Override default container args (useful when using custom images)                                                     | `[]`                       |\n| `metrics.resources.limits`                   | The resources limits for Prometheus exporter containers                                                               | `{}`                       |\n| `metrics.resources.requests`                 | The requested resources for Prometheus exporter containers                                                            | `{}`                       |\n| `metrics.containerPort`                      | Port of the Prometheus metrics container                                                                              | `9216`                     |\n| `metrics.service.annotations`                | Annotations for Prometheus Exporter pods. Evaluated as a template.                                                    | `{}`                       |\n| `metrics.service.type`                       | Type of the Prometheus metrics service                                                                                | `ClusterIP`                |\n| `metrics.service.ports.metrics`              | Port of the Prometheus metrics service                                                                                | `9216`                     |\n| `metrics.service.extraPorts`                 | Extra ports to expose (normally used with the `sidecar` value)                                                        | `[]`                       |\n| `metrics.livenessProbe.enabled`              | Enable livenessProbe                                                                                                  | `true`                     |\n| `metrics.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                                               | `15`                       |\n| `metrics.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                                      | `5`                        |\n| `metrics.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                                     | `5`                        |\n| `metrics.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                                   | `3`                        |\n| `metrics.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                                   | `1`                        |\n| `metrics.readinessProbe.enabled`             | Enable readinessProbe                                                                                                 | `true`                     |\n| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                                              | `5`                        |\n| `metrics.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                                     | `5`                        |\n| `metrics.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                                    | `1`                        |\n| `metrics.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                                  | `3`                        |\n| `metrics.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                                  | `1`                        |\n| `metrics.startupProbe.enabled`               | Enable startupProbe                                                                                                   | `false`                    |\n| `metrics.startupProbe.initialDelaySeconds`   | Initial delay seconds for startupProbe                                                                                | `5`                        |\n| `metrics.startupProbe.periodSeconds`         | Period seconds for startupProbe                                                                                       | `10`                       |\n| `metrics.startupProbe.timeoutSeconds`        | Timeout seconds for startupProbe                                                                                      | `5`                        |\n| `metrics.startupProbe.failureThreshold`      | Failure threshold for startupProbe                                                                                    | `30`                       |\n| `metrics.startupProbe.successThreshold`      | Success threshold for startupProbe                                                                                    | `1`                        |\n| `metrics.customLivenessProbe`                | Override default liveness probe for MongoDB(&reg;) containers                                                         | `{}`                       |\n| `metrics.customReadinessProbe`               | Override default readiness probe for MongoDB(&reg;) containers                                                        | `{}`                       |\n| `metrics.customStartupProbe`                 | Override default startup probe for MongoDB(&reg;) containers                                                          | `{}`                       |\n| `metrics.serviceMonitor.enabled`             | Create ServiceMonitor Resource for scraping metrics using Prometheus Operator                                         | `false`                    |\n| `metrics.serviceMonitor.namespace`           | Namespace which Prometheus is running in                                                                              | `\"\"`                       |\n| `metrics.serviceMonitor.interval`            | Interval at which metrics should be scraped                                                                           | `30s`                      |\n| `metrics.serviceMonitor.scrapeTimeout`       | Specify the timeout after which the scrape is ended                                                                   | `\"\"`                       |\n| `metrics.serviceMonitor.relabelings`         | RelabelConfigs to apply to samples before scraping.                                                                   | `[]`                       |\n| `metrics.serviceMonitor.metricRelabelings`   | MetricsRelabelConfigs to apply to samples before ingestion.                                                           | `[]`                       |\n| `metrics.serviceMonitor.labels`              | Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with | `{}`                       |\n| `metrics.serviceMonitor.selector`            | Prometheus instance selector labels                                                                                   | `{}`                       |\n| `metrics.serviceMonitor.honorLabels`         | Specify honorLabels parameter to add the scrape endpoint                                                              | `false`                    |\n| `metrics.serviceMonitor.jobLabel`            | The name of the label on the target service to use as the job name in prometheus.                                     | `\"\"`                       |\n| `metrics.prometheusRule.enabled`             | Set this to true to create prometheusRules for Prometheus operator                                                    | `false`                    |\n| `metrics.prometheusRule.additionalLabels`    | Additional labels that can be used so prometheusRules will be discovered by Prometheus                                | `{}`                       |\n| `metrics.prometheusRule.namespace`           | Namespace where prometheusRules resource should be created                                                            | `\"\"`                       |\n| `metrics.prometheusRule.rules`               | Rules to be created, check values for an example                                                                      | `[]`                       |\n\n\nSpecify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```bash\n$ helm install my-release \\\n    --set auth.rootPassword=secretpassword,auth.username=my-user,auth.password=my-password,auth.database=my-database \\\n    my-repo/mongodb\n```\n\nThe above command sets the MongoDB(&reg;) `root` account password to `secretpassword`. Additionally, it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`.\n\n> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.\n\nAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,\n\n```bash\n$ helm install my-release -f values.yaml my-repo/mongodb\n```\n\n> **Tip**: You can use the default [values.yaml](values.yaml)\n\n## Configuration and installation details\n\n### [Rolling vs Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)\n\nIt is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.\n\nBitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.\n\n### Customize a new MongoDB instance\n\nThe [Bitnami MongoDB(&reg;) image](https://github.com/bitnami/containers/tree/main/bitnami/mongodb) supports the use of custom scripts to initialize a fresh instance. In order to execute the scripts, two options are available:\n\n* Specify them using the `initdbScripts` parameter as dict.\n* Define an external Kubernetes ConfigMap with all the initialization scripts by setting the `initdbScriptsConfigMap` parameter. Note that this will override the previous option.\n\nThe allowed script extensions are `.sh` and `.js`.\n\n### Replicaset: Access MongoDB(&reg;) nodes from outside the cluster\n\nIn order to access MongoDB(&reg;) nodes from outside the cluster when using a replicaset architecture, a specific service per MongoDB(&reg;) pod will be created. There are two ways of configuring external access:\n\n- Using LoadBalancer services\n- Using NodePort services.\n\nRefer to the [chart documentation for more details and configuration examples](https://docs.bitnami.com/kubernetes/infrastructure/mongodb/configuration/configure-external-access-replicaset/).\n\n### Add extra environment variables\n\nTo add extra environment variables (useful for advanced operations like custom init scripts), use the `extraEnvVars` property.\n\n```yaml\nextraEnvVars:\n  - name: LOG_LEVEL\n    value: error\n```\n\nAlternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `extraEnvVarsCM` or the `extraEnvVarsSecret` properties.\n\n### Use Sidecars and Init Containers\n\nIf additional containers are needed in the same pod (such as additional metrics or logging exporters), they can be defined using the `sidecars` config parameter. Similarly, extra init containers can be added using the `initContainers` parameter.\n\nRefer to the chart documentation for more information on, and examples of, configuring and using [sidecars and init containers](https://docs.bitnami.com/kubernetes/infrastructure/mongodb/configuration/configure-sidecar-init-containers/).\n\n## Persistence\n\nThe [Bitnami MongoDB(&reg;)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb) image stores the MongoDB(&reg;) data and configurations at the `/bitnami/mongodb` path of the container.\n\nThe chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning.\n\nIf you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/).\n\n## Use custom Prometheus rules\n\nCustom Prometheus rules can be defined for the Prometheus Operator by using the `prometheusRule` parameter.\n\nRefer to the [chart documentation for an example of a custom rule](https://docs.bitnami.com/kubernetes/infrastructure/mongodb/administration/use-prometheus-rules/).\n\n## Enable SSL/TLS\n\nThis chart supports enabling SSL/TLS between nodes in the cluster, as well as between MongoDB(&reg;) clients and nodes, by setting the `MONGODB_EXTRA_FLAGS` and `MONGODB_CLIENT_EXTRA_FLAGS` container environment variables, together with the correct `MONGODB_ADVERTISED_HOSTNAME`. To enable full TLS encryption, set the `tls.enabled` parameter to `true`.\n\nRefer to the [chart documentation for more information on enabling TLS](https://docs.bitnami.com/kubernetes/infrastructure/mongodb/administration/enable-tls/).\n\n### Set Pod affinity\n\nThis chart allows you to set your custom affinity using the `XXX.affinity` parameter(s). Find more information about Pod affinity in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).\n\nAs an alternative, you can use the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `XXX.podAffinityPreset`, `XXX.podAntiAffinityPreset`, or `XXX.nodeAffinityPreset` parameters.\n\n## Troubleshooting\n\nFind more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).\n\n## Upgrading\n\nIf authentication is enabled, it's necessary to set the `auth.rootPassword` (also `auth.replicaSetKey` when using a replicaset architecture) when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Credentials' section. Please note down the password, and run the command below to upgrade your chart:\n\n```bash\n$ helm upgrade my-release my-repo/mongodb --set auth.rootPassword=[PASSWORD] (--set auth.replicaSetKey=[REPLICASETKEY])\n```\n\n> Note: you need to substitute the placeholders [PASSWORD] and [REPLICASETKEY] with the values obtained in the installation notes.\n\n### To 12.0.0\n\nThis major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository.\n\nAffected values:\n\n- `strategyType` is replaced by `updateStrategy`\n- `service.port` is renamed to `service.ports.mongodb`\n- `service.nodePort` is renamed to `service.nodePorts.mongodb`\n- `externalAccess.service.port` is renamed to `externalAccess.hidden.service.ports.mongodb`\n- `rbac.role.rules` is renamed to `rbac.rules`\n- `externalAccess.hidden.service.port` is renamed ot `externalAccess.hidden.service.ports.mongodb`\n- `hidden.strategyType` is replaced by `hidden.updateStrategy`\n- `metrics.serviceMonitor.relabellings` is renamed to `metrics.serviceMonitor.relabelings`(typo fixed)\n- `metrics.serviceMonitor.additionalLabels` is renamed to `metrics.serviceMonitor.labels`\n\nAdditionally also updates the MongoDB image dependency to it newest major, 5.0\n\n### To 11.0.0\n\nIn this version, the mongodb-exporter bundled as part of this Helm chart was updated to a new version which, even it is not a major change, can contain breaking changes (from `0.11.X` to `0.30.X`).\nPlease visit the release notes from the upstream project at https://github.com/percona/mongodb_exporter/releases\n\n### To 10.0.0\n\n[On November 13, 2020, Helm v2 support formally ended](https://github.com/helm/charts#status-of-the-project). This major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n[Learn more about this change and related upgrade considerations](https://docs.bitnami.com/kubernetes/infrastructure/mongodb/administration/upgrade-helm3/).\n\n### To 9.0.0\n\nMongoDB(&reg;) container images were updated to `4.4.x` and it can affect compatibility with older versions of MongoDB(&reg;). Refer to the following guides to upgrade your applications:\n\n- [Standalone](https://docs.mongodb.com/manual/release-notes/4.4-upgrade-standalone/)\n- [Replica Set](https://docs.mongodb.com/manual/release-notes/4.4-upgrade-replica-set/)\n\n### To 8.0.0\n\n- Architecture used to configure MongoDB(&reg;) as a replicaset was completely refactored. Now, both primary and secondary nodes are part of the same statefulset.\n- Chart labels were adapted to follow the Helm charts best practices.\n- This version introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade.\n- Several parameters were renamed or disappeared in favor of new ones on this major version. These are the most important ones:\n  - `replicas` is renamed to `replicaCount`.\n  - Authentication parameters are reorganized under the `auth.*` parameter:\n    - `usePassword` is renamed to `auth.enabled`.\n    - `mongodbRootPassword`, `mongodbUsername`, `mongodbPassword`, `mongodbDatabase`, and `replicaSet.key` are now `auth.rootPassword`, `auth.username`, `auth.password`, `auth.database`, and `auth.replicaSetKey` respectively.\n  - `securityContext.*` is deprecated in favor of `podSecurityContext` and `containerSecurityContext`.\n  - Parameters prefixed with `mongodb` are renamed removing the prefix. E.g. `mongodbEnableIPv6` is renamed to `enableIPv6`.\n  - Parameters affecting Arbiter nodes are reorganized under the `arbiter.*` parameter.\n\nConsequences:\n\n- Backwards compatibility is not guaranteed. To upgrade to `8.0.0`, install a new release of the MongoDB(&reg;) chart, and migrate your data by creating a backup of the database, and restoring it on the new release.\n\n### To 7.0.0\n\nFrom this version, the way of setting the ingress rules has changed. Instead of using `ingress.paths` and `ingress.hosts` as separate objects, you should now define the rules as objects inside the `ingress.hosts` value, for example:\n\n```yaml\ningress:\n  hosts:\n  - name: mongodb.local\n    path: /\n```\n\n### To 6.0.0\n\nFrom this version, `mongodbEnableIPv6` is set to `false` by default in order to work properly in most k8s clusters, if you want to use IPv6 support, you need to set this variable to `true` by adding `--set mongodbEnableIPv6=true` to your `helm` command.\nYou can find more information in the [`bitnami/mongodb` image README](https://github.com/bitnami/containers/tree/main/bitnami/mongodb#readme).\n\n### To 5.0.0\n\nWhen enabling replicaset configuration, backwards compatibility is not guaranteed unless you modify the labels used on the chart's statefulsets.\nUse the workaround below to upgrade from versions previous to 5.0.0. The following example assumes that the release name is `my-release`:\n\n```console\n$ kubectl delete statefulset my-release-mongodb-arbiter my-release-mongodb-primary my-release-mongodb-secondary --cascade=false\n```\n\n### Add extra deployment options\n\nTo add extra deployments (useful for advanced features like sidecars), use the `extraDeploy` property.\n\nIn the example below, you can find how to use a example here for a [MongoDB replica set pod labeler sidecar](https://github.com/combor/k8s-mongo-labeler-sidecar) to identify the primary pod and dynamically label it as the primary node:\n\n```yaml\nextraDeploy:\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: mongodb-primary\n      namespace: default\n      labels:\n        app.kubernetes.io/component: mongodb\n        app.kubernetes.io/instance: mongodb\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: mongodb\n    spec:\n      type: NodePort\n      externalTrafficPolicy: Cluster\n      ports:\n        - name: mongodb-primary\n          port: 30001\n          nodePort: 30001\n          protocol: TCP\n          targetPort: mongodb\n      selector:\n        app.kubernetes.io/component: mongodb\n        app.kubernetes.io/instance: mongodb\n        app.kubernetes.io/name: mongodb\n        primary: \"true\"\n```\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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."
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 2.1.2\ndescription: A Library Helm Chart for grouping common logic between bitnami charts.\n  This chart is not deployable by itself.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/common\nicon: https://bitnami.com/downloads/logos/bitnami-mark.png\nkeywords:\n- common\n- helper\n- template\n- function\n- bitnami\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: common\nsources:\n- https://github.com/bitnami/charts\n- https://www.bitnami.com/\ntype: library\nversion: 2.1.2\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/README.md",
    "content": "# Bitnami Common Library Chart\n\nA [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts.\n\n## TL;DR\n\n```yaml\ndependencies:\n  - name: common\n    version: 1.x.x\n    repository: https://charts.bitnami.com/bitnami\n```\n\n```bash\n$ helm dependency update\n```\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\ndata:\n  myvalue: \"Hello World\"\n```\n\n## Introduction\n\nThis chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n\n## Parameters\n\nThe following table lists the helpers available in the library which are scoped in different sections.\n\n### Affinities\n\n| Helper identifier             | Description                                          | Expected Input                                 |\n|-------------------------------|------------------------------------------------------|------------------------------------------------|\n| `common.affinities.nodes.soft` | Return a soft nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.nodes.hard` | Return a hard nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.pods.soft`  | Return a soft podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n| `common.affinities.pods.hard`  | Return a hard podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n\n### Capabilities\n\n| Helper identifier                              | Description                                                                                    | Expected Input    |\n|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------|\n| `common.capabilities.kubeVersion`              | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context |\n| `common.capabilities.cronjob.apiVersion`       | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context |\n| `common.capabilities.deployment.apiVersion`    | Return the appropriate apiVersion for deployment.                                              | `.` Chart context |\n| `common.capabilities.statefulset.apiVersion`   | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context |\n| `common.capabilities.ingress.apiVersion`       | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context |\n| `common.capabilities.rbac.apiVersion`          | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context |\n| `common.capabilities.crd.apiVersion`           | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context |\n| `common.capabilities.policy.apiVersion`        | Return the appropriate apiVersion for podsecuritypolicy.                                       | `.` Chart context |\n| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy.                                           | `.` Chart context |\n| `common.capabilities.apiService.apiVersion`    | Return the appropriate apiVersion for APIService.                                              | `.` Chart context |\n| `common.capabilities.hpa.apiVersion`           | Return the appropriate apiVersion for Horizontal Pod Autoscaler                                | `.` Chart context |\n| `common.capabilities.supportsHelmVersion`      | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context |\n\n### Errors\n\n| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict \"validationErrors\" (list $validationError00 $validationError01)  \"context\" $` |\n\n### Images\n\n| Helper identifier           | Description                                          | Expected Input                                                                                          |\n|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| `common.images.image`       | Return the proper and full image name                | `dict \"imageRoot\" .Values.path.to.the.image \"global\" $`, see [ImageRoot](#imageroot) for the structure. |\n| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global` |\n| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $` |\n\n### Ingress\n\n| Helper identifier                         | Description                                                                                                       | Expected Input                                                                                                                                                                   |\n|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version                                              | `dict \"serviceName\" \"foo\" \"servicePort\" \"bar\"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |\n| `common.ingress.supportsPathType`         | Prints \"true\" if the pathType field is supported                                                                  | `.` Chart context                                                                                                                                                                |\n| `common.ingress.supportsIngressClassname` | Prints \"true\" if the ingressClassname field is supported                                                          | `.` Chart context                                                                                                                                                                |\n| `common.ingress.certManagerRequest`       | Prints \"true\" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict \"annotations\" .Values.path.to.the.ingress.annotations`                                                                                                                     |\n\n### Labels\n\n| Helper identifier           | Description                                                                 | Expected Input    |\n|-----------------------------|-----------------------------------------------------------------------------|-------------------|\n| `common.labels.standard`    | Return Kubernetes standard labels                                           | `.` Chart context |\n| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context |\n\n### Names\n\n| Helper identifier                 | Description                                                           | Expected Input    |\n|-----------------------------------|-----------------------------------------------------------------------|-------------------|\n| `common.names.name`               | Expand the name of the chart or use `.Values.nameOverride`            | `.` Chart context |\n| `common.names.fullname`           | Create a default fully qualified app name.                            | `.` Chart context |\n| `common.names.namespace`          | Allow the release namespace to be overridden                          | `.` Chart context |\n| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context |\n| `common.names.chart`              | Chart name plus version                                               | `.` Chart context |\n\n### Secrets\n\n| Helper identifier         | Description                                                  | Expected Input                                                                                                                                                                                                                  |\n|---------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.secrets.name`     | Generate the name of the secret.                             | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $` see [ExistingSecret](#existingsecret) for the structure.                                                                  |\n| `common.secrets.key`      | Generate secret key.                                         | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\"` see [ExistingSecret](#existingsecret) for the structure.                                                                                             |\n| `common.passwords.manage` | Generate secret password or retrieve one if already created. | `dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $`, length, strong and chartNAme fields are optional. |\n| `common.secrets.exists`   | Returns whether a previous generated secret already exists.  | `dict \"secret\" \"secret-name\" \"context\" $`                                                                                                                                                                                       |\n\n### Storage\n\n| Helper identifier             | Description                           | Expected Input                                                                                                      |\n|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| `common.storage.class` | Return  the proper Storage Class | `dict \"persistence\" .Values.path.to.the.persistence \"global\" $`, see [Persistence](#persistence) for the structure. |\n\n### TplValues\n\n| Helper identifier         | Description                            | Expected Input                                                                                                                                           |\n|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.tplvalues.render` | Renders a value that contains template | `dict \"value\" .Values.path.to.the.Value \"context\" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |\n\n### Utils\n\n| Helper identifier              | Description                                                                              | Expected Input                                                         |\n|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------|\n| `common.utils.fieldToEnvVar`   | Build environment variable name given a field.                                           | `dict \"field\" \"my-password\"`                                           |\n| `common.utils.secret.getvalue` | Print instructions to get a secret value.                                                | `dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $` |\n| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path                                    | `dict \"key\" \"path.to.key\" \"context\" $`                                 |\n| `common.utils.getKeyFromList`  | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $`         |\n\n### Validations\n\n| Helper identifier                                | Description                                                                                                                   | Expected Input                                                                                                                                                                                                                                                           |\n|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.validations.values.single.empty`         | Validate a value must not be empty.                                                                                           | `dict \"valueKey\" \"path.to.value\" \"secret\" \"secret.name\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |\n| `common.validations.values.multiple.empty`       | Validate a multiple values must not be empty. It returns a shared error for all the values.                                   | `dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |\n| `common.validations.values.mariadb.passwords`    | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mariadb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |\n| `common.validations.values.mysql.passwords`      | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values.              | `dict \"secret\" \"mysql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper.                                                                                      |\n| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values.         | `dict \"secret\" \"postgresql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper.                                                                                |\n| `common.validations.values.redis.passwords`      | This helper will ensure required password for Redis&reg; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"redis-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper.                                                                                          |\n| `common.validations.values.cassandra.passwords`  | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values.          | `dict \"secret\" \"cassandra-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper.                                                                                  |\n| `common.validations.values.mongodb.passwords`    | This helper will ensure required password for MongoDB&reg; are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mongodb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper.                                                                                      |\n\n### Warnings\n\n| Helper identifier            | Description                      | Expected Input                                             |\n|------------------------------|----------------------------------|------------------------------------------------------------|\n| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |\n\n## Special input schemas\n\n### ImageRoot\n\n```yaml\nregistry:\n  type: string\n  description: Docker registry where the image is located\n  example: docker.io\n\nrepository:\n  type: string\n  description: Repository and image name\n  example: bitnami/nginx\n\ntag:\n  type: string\n  description: image tag\n  example: 1.16.1-debian-10-r63\n\npullPolicy:\n  type: string\n  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n\npullSecrets:\n  type: array\n  items:\n    type: string\n  description: Optionally specify an array of imagePullSecrets (evaluated as templates).\n\ndebug:\n  type: boolean\n  description: Set to true if you would like to see extra information on logs\n  example: false\n\n## An instance would be:\n# registry: docker.io\n# repository: bitnami/nginx\n# tag: 1.16.1-debian-10-r63\n# pullPolicy: IfNotPresent\n# debug: false\n```\n\n### Persistence\n\n```yaml\nenabled:\n  type: boolean\n  description: Whether enable persistence.\n  example: true\n\nstorageClass:\n  type: string\n  description: Ghost data Persistent Volume Storage Class, If set to \"-\", storageClassName: \"\" which disables dynamic provisioning.\n  example: \"-\"\n\naccessMode:\n  type: string\n  description: Access mode for the Persistent Volume Storage.\n  example: ReadWriteOnce\n\nsize:\n  type: string\n  description: Size the Persistent Volume Storage.\n  example: 8Gi\n\npath:\n  type: string\n  description: Path to be persisted.\n  example: /bitnami\n\n## An instance would be:\n# enabled: true\n# storageClass: \"-\"\n# accessMode: ReadWriteOnce\n# size: 8Gi\n# path: /bitnami\n```\n\n### ExistingSecret\n\n```yaml\nname:\n  type: string\n  description: Name of the existing secret.\n  example: mySecret\nkeyMapping:\n  description: Mapping between the expected key name and the name of the key in the existing secret.\n  type: object\n\n## An instance would be:\n# name: mySecret\n# keyMapping:\n#   password: myPasswordKey\n```\n\n#### Example of use\n\nWhen we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.\n\n```yaml\n# templates/secret.yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n    app: {{ include \"common.names.fullname\" . }}\ntype: Opaque\ndata:\n  password: {{ .Values.password | b64enc | quote }}\n\n# templates/dpl.yaml\n---\n...\n      env:\n        - name: PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: {{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.existingSecret \"context\" $) }}\n              key: {{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.existingSecret \"key\" \"password\") }}\n...\n\n# values.yaml\n---\nname: mySecret\nkeyMapping:\n  password: myPasswordKey\n```\n\n### ValidateValue\n\n#### NOTES.txt\n\n```console\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n\n{{ include \"common.validations.values.multiple.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n```\n\nIf we force those values to be empty we will see some alerts\n\n```console\n$ helm install test mychart --set path.to.value00=\"\",path.to.value01=\"\"\n    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:\n\n        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-00}\" | base64 -d)\n\n    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:\n\n        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-01}\" | base64 -d)\n```\n\n## Upgrading\n\n### To 1.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_affinities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn a soft nodeAffinity definition\n{{ include \"common.affinities.nodes.soft\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.soft\" -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - preference:\n      matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard nodeAffinity definition\n{{ include \"common.affinities.nodes.hard\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.hard\" -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  nodeSelectorTerms:\n    - matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n{{- end -}}\n\n{{/*\nReturn a nodeAffinity definition\n{{ include \"common.affinities.nodes\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.nodes.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.nodes.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nReturn a soft podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.soft\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.soft\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - podAffinityTerm:\n      labelSelector:\n        matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 10 }}\n          {{- if not (empty $component) }}\n          {{ printf \"app.kubernetes.io/component: %s\" $component }}\n          {{- end }}\n          {{- range $key, $value := $extraMatchLabels }}\n          {{ $key }}: {{ $value | quote }}\n          {{- end }}\n      topologyKey: kubernetes.io/hostname\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.hard\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.hard\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  - labelSelector:\n      matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 8 }}\n        {{- if not (empty $component) }}\n        {{ printf \"app.kubernetes.io/component: %s\" $component }}\n        {{- end }}\n        {{- range $key, $value := $extraMatchLabels }}\n        {{ $key }}: {{ $value | quote }}\n        {{- end }}\n    topologyKey: kubernetes.io/hostname\n{{- end -}}\n\n{{/*\nReturn a podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.pods\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.pods.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.pods.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_capabilities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the target Kubernetes version\n*/}}\n{{- define \"common.capabilities.kubeVersion\" -}}\n{{- if .Values.global }}\n    {{- if .Values.global.kubeVersion }}\n    {{- .Values.global.kubeVersion -}}\n    {{- else }}\n    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n    {{- end -}}\n{{- else }}\n{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for poddisruptionbudget.\n*/}}\n{{- define \"common.capabilities.policy.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"policy/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"common.capabilities.networkPolicy.apiVersion\" -}}\n{{- if semverCompare \"<1.7-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for cronjob.\n*/}}\n{{- define \"common.capabilities.cronjob.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"batch/v1beta1\" -}}\n{{- else -}}\n{{- print \"batch/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"common.capabilities.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"common.capabilities.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apps/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"common.capabilities.ingress.apiVersion\" -}}\n{{- if .Values.ingress -}}\n{{- if .Values.ingress.apiVersion -}}\n{{- .Values.ingress.apiVersion -}}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for RBAC resources.\n*/}}\n{{- define \"common.capabilities.rbac.apiVersion\" -}}\n{{- if semverCompare \"<1.17-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"rbac.authorization.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for CRDs.\n*/}}\n{{- define \"common.capabilities.crd.apiVersion\" -}}\n{{- if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiextensions.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiextensions.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for APIService.\n*/}}\n{{- define \"common.capabilities.apiService.apiVersion\" -}}\n{{- if semverCompare \"<1.10-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiregistration.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiregistration.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for Horizontal Pod Autoscaler.\n*/}}\n{{- define \"common.capabilities.hpa.apiVersion\" -}}\n{{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .context) -}}\n{{- if .beta2 -}}\n{{- print \"autoscaling/v2beta2\" -}}\n{{- else -}}\n{{- print \"autoscaling/v2beta1\" -}}\n{{- end -}}\n{{- else -}}\n{{- print \"autoscaling/v2\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the used Helm version is 3.3+.\nA way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional \"{}}\"  structure.\nThis check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a \"interface not found\" error.\n**To be removed when the catalog's minimun Helm version is 3.3**\n*/}}\n{{- define \"common.capabilities.supportsHelmVersion\" -}}\n{{- if regexMatch \"{(v[0-9])*[^}]*}}$\" (.Capabilities | toString ) }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_errors.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThrough error when upgrading using empty passwords values that must not be empty.\n\nUsage:\n{{- $validationError00 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validationError01 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $validationError00 $validationError01) \"context\" $) }}\n\nRequired password params:\n  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.\n  - context - Context - Required. Parent context.\n*/}}\n{{- define \"common.errors.upgrade.passwords.empty\" -}}\n  {{- $validationErrors := join \"\" .validationErrors -}}\n  {{- if and $validationErrors .context.Release.IsUpgrade -}}\n    {{- $errorString := \"\\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases\" -}}\n    {{- $errorString = print $errorString \"\\n%s\" -}}\n    {{- printf $errorString $validationErrors | fail -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_images.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn the proper image name\n{{ include \"common.images.image\" ( dict \"imageRoot\" .Values.path.to.the.image \"global\" $) }}\n*/}}\n{{- define \"common.images.image\" -}}\n{{- $registryName := .imageRoot.registry -}}\n{{- $repositoryName := .imageRoot.repository -}}\n{{- $separator := \":\" -}}\n{{- $termination := .imageRoot.tag | toString -}}\n{{- if .global }}\n    {{- if .global.imageRegistry }}\n     {{- $registryName = .global.imageRegistry -}}\n    {{- end -}}\n{{- end -}}\n{{- if .imageRoot.digest }}\n    {{- $separator = \"@\" -}}\n    {{- $termination = .imageRoot.digest | toString -}}\n{{- end -}}\n{{- printf \"%s/%s%s%s\" $registryName $repositoryName $separator $termination -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)\n{{ include \"common.images.pullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global) }}\n*/}}\n{{- define \"common.images.pullSecrets\" -}}\n  {{- $pullSecrets := list }}\n\n  {{- if .global }}\n    {{- range .global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names evaluating values as templates\n{{ include \"common.images.renderPullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $) }}\n*/}}\n{{- define \"common.images.renderPullSecrets\" -}}\n  {{- $pullSecrets := list }}\n  {{- $context := .context }}\n\n  {{- if $context.Values.global }}\n    {{- range $context.Values.global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_ingress.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nGenerate backend entry that is compatible with all Kubernetes API versions.\n\nUsage:\n{{ include \"common.ingress.backend\" (dict \"serviceName\" \"backendName\" \"servicePort\" \"backendPort\" \"context\" $) }}\n\nParams:\n  - serviceName - String. Name of an existing service backend\n  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.ingress.backend\" -}}\n{{- $apiVersion := (include \"common.capabilities.ingress.apiVersion\" .context) -}}\n{{- if or (eq $apiVersion \"extensions/v1beta1\") (eq $apiVersion \"networking.k8s.io/v1beta1\") -}}\nserviceName: {{ .serviceName }}\nservicePort: {{ .servicePort }}\n{{- else -}}\nservice:\n  name: {{ .serviceName }}\n  port:\n    {{- if typeIs \"string\" .servicePort }}\n    name: {{ .servicePort }}\n    {{- else if or (typeIs \"int\" .servicePort) (typeIs \"float64\" .servicePort) }}\n    number: {{ .servicePort | int }}\n    {{- end }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nPrint \"true\" if the API pathType field is supported\nUsage:\n{{ include \"common.ingress.supportsPathType\" . }}\n*/}}\n{{- define \"common.ingress.supportsPathType\" -}}\n{{- if (semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the ingressClassname field is supported\nUsage:\n{{ include \"common.ingress.supportsIngressClassname\" . }}\n*/}}\n{{- define \"common.ingress.supportsIngressClassname\" -}}\n{{- if semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if cert-manager required annotations for TLS signed\ncertificates are set in the Ingress annotations\nRef: https://cert-manager.io/docs/usage/ingress/#supported-annotations\nUsage:\n{{ include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.path.to.the.ingress.annotations ) }}\n*/}}\n{{- define \"common.ingress.certManagerRequest\" -}}\n{{ if or (hasKey .annotations \"cert-manager.io/cluster-issuer\") (hasKey .annotations \"cert-manager.io/issuer\") (hasKey .annotations \"kubernetes.io/tls-acme\") }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_labels.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nKubernetes standard labels\n*/}}\n{{- define \"common.labels.standard\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\nhelm.sh/chart: {{ include \"common.names.chart\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end -}}\n\n{{/*\nLabels to use on deploy.spec.selector.matchLabels and svc.spec.selector\n*/}}\n{{- define \"common.labels.matchLabels\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_names.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"common.names.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"common.names.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"common.names.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified dependency name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\nUsage:\n{{ include \"common.names.dependency.fullname\" (dict \"chartName\" \"dependency-chart-name\" \"chartValues\" .Values.dependency-chart \"context\" $) }}\n*/}}\n{{- define \"common.names.dependency.fullname\" -}}\n{{- if .chartValues.fullnameOverride -}}\n{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .chartName .chartValues.nameOverride -}}\n{{- if contains $name .context.Release.Name -}}\n{{- .context.Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .context.Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts.\n*/}}\n{{- define \"common.names.namespace\" -}}\n{{- if .Values.namespaceOverride -}}\n{{- .Values.namespaceOverride -}}\n{{- else -}}\n{{- .Release.Namespace -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a fully qualified app name adding the installation's namespace.\n*/}}\n{{- define \"common.names.fullname.namespace\" -}}\n{{- printf \"%s-%s\" (include \"common.names.fullname\" .) (include \"common.names.namespace\" .) | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_secrets.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nGenerate secret name.\n\nUsage:\n{{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $) }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.secrets.name\" -}}\n{{- $name := (include \"common.names.fullname\" .context) -}}\n\n{{- if .defaultNameSuffix -}}\n{{- $name = printf \"%s-%s\" $name .defaultNameSuffix | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- with .existingSecret -}}\n{{- if not (typeIs \"string\" .) -}}\n{{- with .name -}}\n{{- $name = . -}}\n{{- end -}}\n{{- else -}}\n{{- $name = . -}}\n{{- end -}}\n{{- end -}}\n\n{{- printf \"%s\" $name -}}\n{{- end -}}\n\n{{/*\nGenerate secret key.\n\nUsage:\n{{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\") }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - key - String - Required. Name of the key in the secret.\n*/}}\n{{- define \"common.secrets.key\" -}}\n{{- $key := .key -}}\n\n{{- if .existingSecret -}}\n  {{- if not (typeIs \"string\" .existingSecret) -}}\n    {{- if .existingSecret.keyMapping -}}\n      {{- $key = index .existingSecret.keyMapping $.key -}}\n    {{- end -}}\n  {{- end }}\n{{- end -}}\n\n{{- printf \"%s\" $key -}}\n{{- end -}}\n\n{{/*\nGenerate secret password or retrieve one if already created.\n\nUsage:\n{{ include \"common.secrets.passwords.manage\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - length - int - Optional - Length of the generated random password.\n  - strong - Boolean - Optional - Whether to add symbols to the generated random password.\n  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.\n  - context - Context - Required - Parent context.\n\nThe order in which this function returns a secret password:\n  1. Already existing 'Secret' resource\n     (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned)\n  2. Password provided via the values.yaml\n     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)\n  3. Randomly generated secret password\n     (A new random secret password with the length specified in the 'length' parameter will be generated and returned)\n\n*/}}\n{{- define \"common.secrets.passwords.manage\" -}}\n\n{{- $password := \"\" }}\n{{- $subchart := \"\" }}\n{{- $chartName := default \"\" .chartName }}\n{{- $passwordLength := default 10 .length }}\n{{- $providedPasswordKey := include \"common.utils.getKeyFromList\" (dict \"keys\" .providedValues \"context\" $.context) }}\n{{- $providedPasswordValue := include \"common.utils.getValueFromKey\" (dict \"key\" $providedPasswordKey \"context\" $.context) }}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data }}\n{{- if $secretData }}\n  {{- if hasKey $secretData .key }}\n    {{- $password = index $secretData .key | quote }}\n  {{- else }}\n    {{- printf \"\\nPASSWORDS ERROR: The secret \\\"%s\\\" does not contain the key \\\"%s\\\"\\n\" .secret .key | fail -}}\n  {{- end -}}\n{{- else if $providedPasswordValue }}\n  {{- $password = $providedPasswordValue | toString | b64enc | quote }}\n{{- else }}\n\n  {{- if .context.Values.enabled }}\n    {{- $subchart = $chartName }}\n  {{- end -}}\n\n  {{- $requiredPassword := dict \"valueKey\" $providedPasswordKey \"secret\" .secret \"field\" .key \"subchart\" $subchart \"context\" $.context -}}\n  {{- $requiredPasswordError := include \"common.validations.values.single.empty\" $requiredPassword -}}\n  {{- $passwordValidationErrors := list $requiredPasswordError -}}\n  {{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" $passwordValidationErrors \"context\" $.context) -}}\n\n  {{- if .strong }}\n    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join \"_\" }}\n    {{- $password = randAscii $passwordLength }}\n    {{- $password = regexReplaceAllLiteral \"\\\\W\" $password \"@\" | substr 5 $passwordLength }}\n    {{- $password = printf \"%s%s\" $subStr $password | toString | shuffle | b64enc | quote }}\n  {{- else }}\n    {{- $password = randAlphaNum $passwordLength | b64enc | quote }}\n  {{- end }}\n{{- end -}}\n{{- printf \"%s\" $password -}}\n{{- end -}}\n\n{{/*\nReuses the value from an existing secret, otherwise sets its value to a default value.\n\nUsage:\n{{ include \"common.secrets.lookup\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"defaultValue\" .Values.myValue \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - context - Context - Required - Parent context.\n\n*/}}\n{{- define \"common.secrets.lookup\" -}}\n{{- $value := \"\" -}}\n{{- $defaultValue := required \"\\n'common.secrets.lookup': Argument 'defaultValue' missing or empty\" .defaultValue -}}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data -}}\n{{- if and $secretData (hasKey $secretData .key) -}}\n  {{- $value = index $secretData .key -}}\n{{- else -}}\n  {{- $value = $defaultValue | toString | b64enc -}}\n{{- end -}}\n{{- printf \"%s\" $value -}}\n{{- end -}}\n\n{{/*\nReturns whether a previous generated secret already exists\n\nUsage:\n{{ include \"common.secrets.exists\" (dict \"secret\" \"secret-name\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.exists\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_storage.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn  the proper Storage Class\n{{ include \"common.storage.class\" ( dict \"persistence\" .Values.path.to.the.persistence \"global\" $) }}\n*/}}\n{{- define \"common.storage.class\" -}}\n\n{{- $storageClass := .persistence.storageClass -}}\n{{- if .global -}}\n    {{- if .global.storageClass -}}\n        {{- $storageClass = .global.storageClass -}}\n    {{- end -}}\n{{- end -}}\n\n{{- if $storageClass -}}\n  {{- if (eq \"-\" $storageClass) -}}\n      {{- printf \"storageClassName: \\\"\\\"\" -}}\n  {{- else }}\n      {{- printf \"storageClassName: %s\" $storageClass -}}\n  {{- end -}}\n{{- end -}}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_tplvalues.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nRenders a value that contains template.\nUsage:\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.path.to.the.Value \"context\" $) }}\n*/}}\n{{- define \"common.tplvalues.render\" -}}\n    {{- if typeIs \"string\" .value }}\n        {{- tpl .value .context }}\n    {{- else }}\n        {{- tpl (.value | toYaml) .context }}\n    {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_utils.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nPrint instructions to get a secret value.\nUsage:\n{{ include \"common.utils.secret.getvalue\" (dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.secret.getvalue\" -}}\n{{- $varname := include \"common.utils.fieldToEnvVar\" . -}}\nexport {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath=\"{.data.{{ .field }}}\" | base64 -d)\n{{- end -}}\n\n{{/*\nBuild env var name given a field\nUsage:\n{{ include \"common.utils.fieldToEnvVar\" dict \"field\" \"my-password\" }}\n*/}}\n{{- define \"common.utils.fieldToEnvVar\" -}}\n  {{- $fieldNameSplit := splitList \"-\" .field -}}\n  {{- $upperCaseFieldNameSplit := list -}}\n\n  {{- range $fieldNameSplit -}}\n    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}\n  {{- end -}}\n\n  {{ join \"_\" $upperCaseFieldNameSplit }}\n{{- end -}}\n\n{{/*\nGets a value from .Values given\nUsage:\n{{ include \"common.utils.getValueFromKey\" (dict \"key\" \"path.to.key\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.getValueFromKey\" -}}\n{{- $splitKey := splitList \".\" .key -}}\n{{- $value := \"\" -}}\n{{- $latestObj := $.context.Values -}}\n{{- range $splitKey -}}\n  {{- if not $latestObj -}}\n    {{- printf \"please review the entire path of '%s' exists in values\" $.key | fail -}}\n  {{- end -}}\n  {{- $value = ( index $latestObj . ) -}}\n  {{- $latestObj = $value -}}\n{{- end -}}\n{{- printf \"%v\" (default \"\" $value) -}} \n{{- end -}}\n\n{{/*\nReturns first .Values key with a defined value or first of the list if all non-defined\nUsage:\n{{ include \"common.utils.getKeyFromList\" (dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $) }}\n*/}}\n{{- define \"common.utils.getKeyFromList\" -}}\n{{- $key := first .keys -}}\n{{- $reverseKeys := reverse .keys }}\n{{- range $reverseKeys }}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" . \"context\" $.context ) }}\n  {{- if $value -}}\n    {{- $key = . }}\n  {{- end -}}\n{{- end -}}\n{{- printf \"%s\" $key -}} \n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/_warnings.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nWarning about using rolling tag.\nUsage:\n{{ include \"common.warnings.rollingTag\" .Values.path.to.the.imageRoot }}\n*/}}\n{{- define \"common.warnings.rollingTag\" -}}\n\n{{- if and (contains \"bitnami/\" .repository) (not (.tag | toString | regexFind \"-r\\\\d+$|sha256:\")) }}\nWARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.\n+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/\n{{- end }}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_cassandra.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Cassandra required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.cassandra.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: \"cassandra-passwords-secret\"\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.cassandra.passwords\" -}}\n  {{- $existingSecret := include \"common.cassandra.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.cassandra.values.enabled\" . -}}\n  {{- $dbUserPrefix := include \"common.cassandra.values.key.dbUser\" . -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $dbUserPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"cassandra-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.cassandra.values.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.dbUser.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled cassandra.\n\nUsage:\n{{ include \"common.cassandra.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.cassandra.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.cassandra.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key dbUser\n\nUsage:\n{{ include \"common.cassandra.values.key.dbUser\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.key.dbUser\" -}}\n  {{- if .subchart -}}\n    cassandra.dbUser\n  {{- else -}}\n    dbUser\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_mariadb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MariaDB required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mariadb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mariadb.passwords\" -}}\n  {{- $existingSecret := include \"common.mariadb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mariadb.values.enabled\" . -}}\n  {{- $architecture := include \"common.mariadb.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mariadb.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mariadb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mariadb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mariadb-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mariadb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mariadb.\n\nUsage:\n{{ include \"common.mariadb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mariadb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mariadb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mariadb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mariadb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mariadb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_mongodb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MongoDB&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mongodb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: \"mongodb-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mongodb.passwords\" -}}\n  {{- $existingSecret := include \"common.mongodb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mongodb.values.enabled\" . -}}\n  {{- $authPrefix := include \"common.mongodb.values.key.auth\" . -}}\n  {{- $architecture := include \"common.mongodb.values.architecture\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyDatabase := printf \"%s.database\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicaSetKey := printf \"%s.replicaSetKey\" $authPrefix -}}\n  {{- $valueKeyAuthEnabled := printf \"%s.enabled\" $authPrefix -}}\n\n  {{- $authEnabled := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyAuthEnabled \"context\" .context) -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") (eq $authEnabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mongodb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- $valueDatabase := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyDatabase \"context\" .context) }}\n    {{- if and $valueUsername $valueDatabase -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mongodb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replicaset\") -}}\n        {{- $requiredReplicaSetKey := dict \"valueKey\" $valueKeyReplicaSetKey \"secret\" .secret \"field\" \"mongodb-replica-set-key\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mongodb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mongodb.\n\nUsage:\n{{ include \"common.mongodb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mongodb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mongodb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mongodb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mongodb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mongodb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_mysql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MySQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mysql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MySQL values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mysql.passwords\" -}}\n  {{- $existingSecret := include \"common.mysql.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mysql.values.enabled\" . -}}\n  {{- $architecture := include \"common.mysql.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mysql.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mysql-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mysql-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mysql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mysql.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mysql.\n\nUsage:\n{{ include \"common.mysql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mysql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mysql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mysql.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mysql.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mysql.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_postgresql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate PostgreSQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.postgresql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: \"postgresql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.postgresql.passwords\" -}}\n  {{- $existingSecret := include \"common.postgresql.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.postgresql.values.enabled\" . -}}\n  {{- $valueKeyPostgresqlPassword := include \"common.postgresql.values.key.postgressPassword\" . -}}\n  {{- $valueKeyPostgresqlReplicationEnabled := include \"common.postgresql.values.key.replicationPassword\" . -}}\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n    {{- $requiredPostgresqlPassword := dict \"valueKey\" $valueKeyPostgresqlPassword \"secret\" .secret \"field\" \"postgresql-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}\n\n    {{- $enabledReplication := include \"common.postgresql.values.enabled.replication\" . -}}\n    {{- if (eq $enabledReplication \"true\") -}}\n        {{- $requiredPostgresqlReplicationPassword := dict \"valueKey\" $valueKeyPostgresqlReplicationEnabled \"secret\" .secret \"field\" \"postgresql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to decide whether evaluate global values.\n\nUsage:\n{{ include \"common.postgresql.values.use.global\" (dict \"key\" \"key-of-global\" \"context\" $) }}\nParams:\n  - key - String - Required. Field to be evaluated within global, e.g: \"existingSecret\"\n*/}}\n{{- define \"common.postgresql.values.use.global\" -}}\n  {{- if .context.Values.global -}}\n    {{- if .context.Values.global.postgresql -}}\n      {{- index .context.Values.global.postgresql .key | quote -}}\n    {{- end -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.postgresql.values.existingSecret\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.existingSecret\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"existingSecret\" \"context\" .context) -}}\n\n  {{- if .subchart -}}\n    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}\n  {{- else -}}\n    {{- default (.context.Values.existingSecret | quote) $globalValue -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled postgresql.\n\nUsage:\n{{ include \"common.postgresql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key postgressPassword.\n\nUsage:\n{{ include \"common.postgresql.values.key.postgressPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.postgressPassword\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"postgresqlUsername\" \"context\" .context) -}}\n\n  {{- if not $globalValue -}}\n    {{- if .subchart -}}\n      postgresql.postgresqlPassword\n    {{- else -}}\n      postgresqlPassword\n    {{- end -}}\n  {{- else -}}\n    global.postgresql.postgresqlPassword\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled.replication.\n\nUsage:\n{{ include \"common.postgresql.values.enabled.replication\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.enabled.replication\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.replication.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" .context.Values.replication.enabled -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key replication.password.\n\nUsage:\n{{ include \"common.postgresql.values.key.replicationPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.replicationPassword\" -}}\n  {{- if .subchart -}}\n    postgresql.replication.password\n  {{- else -}}\n    replication.password\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_redis.tpl",
    "content": "\n{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Redis&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.redis.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where redis values are stored, e.g: \"redis-passwords-secret\"\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.redis.passwords\" -}}\n  {{- $enabled := include \"common.redis.values.enabled\" . -}}\n  {{- $valueKeyPrefix := include \"common.redis.values.keys.prefix\" . -}}\n  {{- $standarizedVersion := include \"common.redis.values.standarized.version\" . }}\n\n  {{- $existingSecret := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.existingSecret\") (printf \"%s%s\" $valueKeyPrefix \"existingSecret\") (eq $standarizedVersion \"true\") }}\n  {{- $existingSecretValue := include \"common.utils.getValueFromKey\" (dict \"key\" $existingSecret \"context\" .context) }}\n\n  {{- $valueKeyRedisPassword := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.password\") (printf \"%s%s\" $valueKeyPrefix \"password\") (eq $standarizedVersion \"true\") }}\n  {{- $valueKeyRedisUseAuth := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.enabled\") (printf \"%s%s\" $valueKeyPrefix \"usePassword\") (eq $standarizedVersion \"true\") }}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $useAuth := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyRedisUseAuth \"context\" .context) -}}\n    {{- if eq $useAuth \"true\" -}}\n      {{- $requiredRedisPassword := dict \"valueKey\" $valueKeyRedisPassword \"secret\" .secret \"field\" \"redis-password\" -}}\n      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled redis.\n\nUsage:\n{{ include \"common.redis.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.redis.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right prefix path for the values\n\nUsage:\n{{ include \"common.redis.values.key.prefix\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.redis.values.keys.prefix\" -}}\n  {{- if .subchart -}}redis.{{- else -}}{{- end -}}\n{{- end -}}\n\n{{/*\nChecks whether the redis chart's includes the standarizations (version >= 14)\n\nUsage:\n{{ include \"common.redis.values.standarized.version\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.standarized.version\" -}}\n\n  {{- $standarizedAuth := printf \"%s%s\" (include \"common.redis.values.keys.prefix\" .) \"auth\" -}}\n  {{- $standarizedAuthValues := include \"common.utils.getValueFromKey\" (dict \"key\" $standarizedAuth \"context\" .context) }}\n\n  {{- if $standarizedAuthValues -}}\n    {{- true -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/templates/validations/_validations.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate values must not be empty.\n\nUsage:\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.validations.values.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n*/}}\n{{- define \"common.validations.values.multiple.empty\" -}}\n  {{- range .required -}}\n    {{- include \"common.validations.values.single.empty\" (dict \"valueKey\" .valueKey \"secret\" .secret \"field\" .field \"context\" $.context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nValidate a value must not be empty.\n\nUsage:\n{{ include \"common.validations.value.empty\" (dict \"valueKey\" \"mariadb.password\" \"secret\" \"secretName\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n  - subchart - String - Optional - Name of the subchart that the validated password is part of.\n*/}}\n{{- define \"common.validations.values.single.empty\" -}}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" .valueKey \"context\" .context) }}\n  {{- $subchart := ternary \"\" (printf \"%s.\" .subchart) (empty .subchart) }}\n\n  {{- if not $value -}}\n    {{- $varname := \"my-value\" -}}\n    {{- $getCurrentValue := \"\" -}}\n    {{- if and .secret .field -}}\n      {{- $varname = include \"common.utils.fieldToEnvVar\" . -}}\n      {{- $getCurrentValue = printf \" To get the current value:\\n\\n        %s\\n\" (include \"common.utils.secret.getvalue\" .) -}}\n    {{- end -}}\n    {{- printf \"\\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s\" .valueKey $subchart .valueKey $varname $getCurrentValue -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/charts/common/values.yaml",
    "content": "## bitnami/common\n## It is required by CI/CD tools and processes.\n## @skip exampleValue\n##\nexampleValue: common-chart\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/NOTES.txt",
    "content": "CHART NAME: {{ .Chart.Name }}\nCHART VERSION: {{ .Chart.Version }}\nAPP VERSION: {{ .Chart.AppVersion }}\n\n{{- if .Values.diagnosticMode.enabled }}\nThe chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:\n\n  command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 4 }}\n  args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 4 }}\n\nGet the list of pods by executing:\n\n  kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}\n\nAccess the pod you want to debug by executing\n\n  kubectl exec --namespace {{ .Release.Namespace }} -ti <NAME OF THE POD> -- bash\n\nIn order to replicate the container startup scripts execute this command:\n\n    /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh\n\n{{- else }}\n\n{{- $replicaCount := int .Values.replicaCount }}\n{{- $portNumber := int .Values.service.ports.mongodb }}\n{{- $fullname := include \"mongodb.fullname\" . }}\n{{- $releaseNamespace := include \"mongodb.namespace\" . }}\n{{- $clusterDomain := .Values.clusterDomain }}\n{{- $loadBalancerIPListLength := len .Values.externalAccess.service.loadBalancerIPs }}\n{{- $mongoList := list }}\n{{- range $e, $i := until $replicaCount }}\n{{- $mongoList = append $mongoList (printf \"%s-%d.%s-headless.%s.svc.%s:%d\" $fullname $i $fullname $releaseNamespace $clusterDomain $portNumber) }}\n{{- end }}\n\n{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $loadBalancerIPListLength )) (eq .Values.externalAccess.service.type \"LoadBalancer\") }}\n\n####################################################################################\n### ERROR: You enabled external access to MongoDB&reg; nodes without specifying  ###\n###   the array of load balancer IPs for MongoDB&reg; nodes.                     ###\n####################################################################################\n\nThis deployment will be incomplete until you configure the array of load balancer\nIPs for MongoDB&reg; nodes. To complete your deployment follow the steps below:\n\n1. Wait for the load balancer IPs (it may take a few minutes for them to be available):\n\n    kubectl get svc --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ template \"mongodb.name\" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=mongodb\" -w\n\n2. Obtain the load balancer IPs and upgrade your chart:\n\n    {{- range $e, $i := until $replicaCount }}\n    LOAD_BALANCER_IP_{{ add $i 1 }}=\"$(kubectl get svc --namespace {{ $releaseNamespace }} {{ $fullname }}-{{ $i }}-external -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\"\n    {{- end }}\n\n3. Upgrade you chart:\n\n    helm upgrade --namespace {{ .Release.Namespace }} {{ .Release.Name }} my-repo/{{ .Chart.Name }} \\\n      --set mongodb.replicaCount={{ $replicaCount }} \\\n      --set mongodb.externalAccess.enabled=true \\\n      {{- range $i, $e := until $replicaCount }}\n      --set mongodb.externalAccess.service.loadBalancerIPs[{{ $i }}]=$LOAD_BALANCER_IP_{{ add $i 1 }} \\\n      {{- end }}\n      --set mongodb.externalAccess.service.type=LoadBalancer\n\n{{- else }}\n\n{{- if and (or (and (eq .Values.architecture \"standalone\") (or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\"))) (and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled)) (not .Values.auth.enabled) }}\n-------------------------------------------------------------------------------\n WARNING\n\n    By not enabling \"mongodb.auth.enabled\" you have most likely exposed the\n    MongoDB&reg; service externally without any authentication mechanism.\n\n    For security reasons, we strongly suggest that you enable authentiation\n    setting the \"mongodb.auth.enabled\" parameter to \"true\".\n\n-------------------------------------------------------------------------------\n{{- end }}\n\n** Please be patient while the chart is being deployed **\n\nMongoDB&reg; can be accessed on the following DNS name(s) and ports from within your cluster:\n\n{{- if eq .Values.architecture \"replicaset\" }}\n{{ join \"\\n\" $mongoList | nindent 4 }}\n{{- else }}\n\n    {{ $fullname }}.{{ $releaseNamespace }}.svc.{{ .Values.clusterDomain }}\n\n{{- end }}\n\n{{- if .Values.auth.enabled }}\n\nTo get the root password run:\n\n    export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace {{ template \"mongodb.namespace\" . }} {{ template \"mongodb.secretName\" . }} -o jsonpath=\"{.data.mongodb-root-password}\" | base64 -d)\n\n{{- end }}\n{{- $customUsers := include \"mongodb.customUsers\" . -}}\n{{- $customDatabases := include \"mongodb.customDatabases\" . -}}\n{{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}\n{{- $customUsersList := splitList \",\" $customUsers }}\n{{- range $index, $user := $customUsersList }}\n\nTo get the password for \"{{ $user }}\" run:\n\n    export MONGODB_PASSWORD=$(kubectl get secret --namespace {{ include \"mongodb.namespace\" $ }} {{ include \"mongodb.secretName\" $ }} -o jsonpath=\"{.data.mongodb-passwords}\" | base64 -d | awk -F',' '{print ${{ add 1 $index }}}')\n\n{{- end }}\n{{- end }}\n\nTo connect to your database, create a MongoDB&reg; client container:\n\n    kubectl run --namespace {{ template \"mongodb.namespace\" . }} {{ template \"mongodb.fullname\" . }}-client --rm --tty -i --restart='Never' --env=\"MONGODB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD\" --image {{ template \"mongodb.image\" . }} --command -- bash\n\nThen, run the following command:\n\n    {{- if eq .Values.architecture \"replicaset\" }}\n    mongosh admin --host \"{{ join \",\" $mongoList }}\" {{- if .Values.auth.enabled }} --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD{{- end }}\n    {{- else }}\n    mongosh admin --host \"{{ template \"mongodb.fullname\" . }}\" {{- if .Values.auth.enabled }} --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD{{- end }}\n    {{- end }}\n\n{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled }}\n\nTo connect to your database nodes from outside, you need to add both primary and secondary nodes hostnames/IPs to your Mongo client. To obtain them, follow the instructions below:\n\n{{- if eq \"NodePort\" .Values.externalAccess.service.type }}\n{{- if .Values.externalAccess.service.domain }}\n\n    MongoDB&reg; nodes domain: Use your provided hostname to reach MongoDB&reg; nodes, {{ .Values.externalAccess.service.domain }}\n\n{{- else }}\n\n    MongoDB&reg; nodes domain: you can reach MongoDB&reg; nodes on any of the K8s nodes external IPs.\n\n        kubectl get nodes -o wide\n\n{{- end }}\n\n    MongoDB&reg; nodes port: You will have a different node port for each MongoDB&reg; node. You can get the list of configured node ports using the command below:\n\n        echo \"$(kubectl get svc --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ template \"mongodb.name\" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=mongodb,pod\" -o jsonpath='{.items[*].spec.ports[0].nodePort}' | tr ' ' '\\n')\"\n\n{{- else if contains \"LoadBalancer\" .Values.externalAccess.service.type }}\n\n  NOTE: It may take a few minutes for the LoadBalancer IPs to be available.\n        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ template \"mongodb.name\" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=mongodb,pod\" -w'\n\n    MongoDB&reg; nodes domain: You will have a different external IP for each MongoDB&reg; node. You can get the list of external IPs using the command below:\n\n        echo \"$(kubectl get svc --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ template \"mongodb.name\" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=mongodb,pod\" -o jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}' | tr ' ' '\\n')\"\n\n    MongoDB&reg; nodes port: {{ .Values.externalAccess.service.ports.mongodb }}\n\n{{- end }}\n\n{{- else if eq .Values.architecture \"standalone\" }}\n\nTo connect to your database from outside the cluster execute the following commands:\n\n{{- if contains \"NodePort\" .Values.service.type }}\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ template \"mongodb.namespace\" . }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT=$(kubectl get --namespace {{ template \"mongodb.namespace\" . }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ template \"mongodb.fullname\" . }})\n    mongo --host $NODE_IP --port $NODE_PORT {{- if .Values.auth.enabled }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}\n\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n\n  NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n        Watch the status with: 'kubectl get svc --namespace {{ template \"mongodb.namespace\" . }} -w {{ template \"mongodb.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ template \"mongodb.namespace\" . }} {{ template \"mongodb.fullname\" . }} --template \"{{ \"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}\" }}\")\n    mongosh --host $SERVICE_IP --port {{ $portNumber }} {{- if .Values.auth.enabled }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}\n\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n\n    kubectl port-forward --namespace {{ template \"mongodb.namespace\" . }} svc/{{ template \"mongodb.fullname\" . }} {{ $portNumber }}:{{ $portNumber }} &\n    mongosh --host 127.0.0.1 {{- if .Values.auth.enabled }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}\n\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{- if .Values.metrics.enabled }}\n\nTo access the MongoDB&reg; Prometheus metrics, get the MongoDB&reg; Prometheus URL by running:\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include \"mongodb.fullname\" . }}-metrics {{ .Values.metrics.service.ports.metrics }}:{{ .Values.metrics.service.ports.metrics }} &\n    echo \"Prometheus Metrics URL: http://127.0.0.1:{{ .Values.metrics.service.ports.metrics }}/metrics\"\n\nThen, open the obtained URL in a browser.\n\n{{- end }}\n{{- end }}\n{{- include \"common.warnings.rollingTag\" .Values.image }}\n{{- include \"common.warnings.rollingTag\" .Values.metrics.image }}\n{{- include \"common.warnings.rollingTag\" .Values.externalAccess.autoDiscovery.image }}\n{{- include \"common.warnings.rollingTag\" .Values.volumePermissions.image }}\n{{- include \"common.warnings.rollingTag\" .Values.tls.image }}\n{{- include \"mongodb.validateValues\" . }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"mongodb.name\" -}}\n{{- include \"common.names.name\" . -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"mongodb.fullname\" -}}\n{{- include \"common.names.fullname\" . -}}\n{{- end -}}\n\n{{/*\nCreate a default mongo service name which can be overridden.\n*/}}\n{{- define \"mongodb.service.nameOverride\" -}}\n    {{- if and .Values.service .Values.service.nameOverride -}}\n        {{- print .Values.service.nameOverride -}}\n    {{- else -}}\n        {{- printf \"%s-headless\" (include \"mongodb.fullname\" .) -}}\n    {{- end }}\n{{- end }}\n\n{{/*\nCreate a default mongo arbiter service name which can be overridden.\n*/}}\n{{- define \"mongodb.arbiter.service.nameOverride\" -}}\n    {{- if and .Values.arbiter.service .Values.arbiter.service.nameOverride -}}\n        {{- print .Values.arbiter.service.nameOverride -}}\n    {{- else -}}\n        {{- printf \"%s-arbiter-headless\" (include \"mongodb.fullname\" .) -}}\n    {{- end }}\n{{- end }}\n\n{{/*\nReturn the proper MongoDB&reg; image name\n*/}}\n{{- define \"mongodb.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.image \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the metrics image)\n*/}}\n{{- define \"mongodb.metrics.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.metrics.image \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the init container volume-permissions image)\n*/}}\n{{- define \"mongodb.volumePermissions.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.volumePermissions.image \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the init container auto-discovery image)\n*/}}\n{{- define \"mongodb.externalAccess.autoDiscovery.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.externalAccess.autoDiscovery.image \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the TLS Certs image)\n*/}}\n{{- define \"mongodb.tls.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.tls.image \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"mongodb.imagePullSecrets\" -}}\n{{- include \"common.images.pullSecrets\" (dict \"images\" (list .Values.image .Values.metrics.image .Values.volumePermissions.image .Values.tls.image) \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts.\n*/}}\n{{- define \"mongodb.namespace\" -}}\n    {{- if and .Values.global .Values.global.namespaceOverride -}}\n        {{- print .Values.global.namespaceOverride -}}\n    {{- else -}}\n        {{- print .Release.Namespace -}}\n    {{- end }}\n{{- end -}}\n{{- define \"mongodb.serviceMonitor.namespace\" -}}\n    {{- if .Values.metrics.serviceMonitor.namespace -}}\n        {{- print .Values.metrics.serviceMonitor.namespace -}}\n    {{- else -}}\n        {{- include \"mongodb.namespace\" . -}}\n    {{- end }}\n{{- end -}}\n{{- define \"mongodb.prometheusRule.namespace\" -}}\n    {{- if .Values.metrics.prometheusRule.namespace -}}\n        {{- print .Values.metrics.prometheusRule.namespace -}}\n    {{- else -}}\n        {{- include \"mongodb.namespace\" . -}}\n    {{- end }}\n{{- end -}}\n\n{{/*\nReturns the proper service account name depending if an explicit service account name is set\nin the values file. If the name is not set it will default to either mongodb.fullname if serviceAccount.create\nis true or default otherwise.\n*/}}\n{{- define \"mongodb.serviceAccountName\" -}}\n    {{- if .Values.serviceAccount.create -}}\n        {{- default (include \"mongodb.fullname\" .) (print .Values.serviceAccount.name) -}}\n    {{- else -}}\n        {{- default \"default\" (print .Values.serviceAccount.name) -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nReturn the list of custom users to create during the initialization (string format)\n*/}}\n{{- define \"mongodb.customUsers\" -}}\n    {{- $customUsers := list -}}\n    {{- if .Values.auth.username -}}\n        {{- $customUsers = append $customUsers .Values.auth.username }}\n    {{- end }}\n    {{- range .Values.auth.usernames }}\n        {{- $customUsers = append $customUsers . }}\n    {{- end }}\n    {{- printf \"%s\" (default \"\" (join \",\" $customUsers)) -}}\n{{- end -}}\n\n{{/*\nReturn the list of passwords for the custom users (string format)\n*/}}\n{{- define \"mongodb.customPasswords\" -}}\n    {{- $customPasswords := list -}}\n    {{- if .Values.auth.password -}}\n        {{- $customPasswords = append $customPasswords .Values.auth.password }}\n    {{- end }}\n    {{- range .Values.auth.passwords }}\n        {{- $customPasswords = append $customPasswords . }}\n    {{- end }}\n    {{- printf \"%s\" (default \"\" (join \",\" $customPasswords)) -}}\n{{- end -}}\n\n{{/*\nReturn the list of custom databases to create during the initialization (string format)\n*/}}\n{{- define \"mongodb.customDatabases\" -}}\n    {{- $customDatabases := list -}}\n    {{- if .Values.auth.database -}}\n        {{- $customDatabases = append $customDatabases .Values.auth.database }}\n    {{- end }}\n    {{- range .Values.auth.databases }}\n        {{- $customDatabases = append $customDatabases . }}\n    {{- end }}\n    {{- printf \"%s\" (default \"\" (join \",\" $customDatabases)) -}}\n{{- end -}}\n\n{{/*\nReturn the configmap with the MongoDB&reg; configuration\n*/}}\n{{- define \"mongodb.configmapName\" -}}\n{{- if .Values.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s\" (include \"mongodb.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created for MongoDB&reg;\n*/}}\n{{- define \"mongodb.createConfigmap\" -}}\n{{- if and .Values.configuration (not .Values.existingConfigmap) }}\n    {{- true -}}\n{{- else -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the secret with MongoDB&reg; credentials\n*/}}\n{{- define \"mongodb.secretName\" -}}\n    {{- if .Values.auth.existingSecret -}}\n        {{- printf \"%s\" (tpl .Values.auth.existingSecret $) -}}\n    {{- else -}}\n        {{- printf \"%s\" (include \"mongodb.fullname\" .) -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a secret object should be created for MongoDB&reg;\n*/}}\n{{- define \"mongodb.createSecret\" -}}\n{{- if and .Values.auth.enabled (not .Values.auth.existingSecret) }}\n    {{- true -}}\n{{- else -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the initialization scripts ConfigMap name.\n*/}}\n{{- define \"mongodb.initdbScriptsCM\" -}}\n{{- if .Values.initdbScriptsConfigMap -}}\n{{- printf \"%s\" .Values.initdbScriptsConfigMap -}}\n{{- else -}}\n{{- printf \"%s-init-scripts\" (include \"mongodb.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if the Arbiter should be deployed\n*/}}\n{{- define \"mongodb.arbiter.enabled\" -}}\n{{- if and (eq .Values.architecture \"replicaset\") .Values.arbiter.enabled }}\n    {{- true -}}\n{{- else -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the configmap with the MongoDB&reg; configuration for the Arbiter\n*/}}\n{{- define \"mongodb.arbiter.configmapName\" -}}\n{{- if .Values.arbiter.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.arbiter.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s-arbiter\" (include \"mongodb.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created for MongoDB&reg; Arbiter\n*/}}\n{{- define \"mongodb.arbiter.createConfigmap\" -}}\n{{- if and (eq .Values.architecture \"replicaset\") .Values.arbiter.enabled .Values.arbiter.configuration (not .Values.arbiter.existingConfigmap) }}\n    {{- true -}}\n{{- else -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if the Hidden should be deployed\n*/}}\n{{- define \"mongodb.hidden.enabled\" -}}\n{{- if and (eq .Values.architecture \"replicaset\") .Values.hidden.enabled }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the configmap with the MongoDB&reg; configuration for the Hidden\n*/}}\n{{- define \"mongodb.hidden.configmapName\" -}}\n{{- if .Values.hidden.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.hidden.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s-hidden\" (include \"mongodb.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created for MongoDB&reg; Hidden\n*/}}\n{{- define \"mongodb.hidden.createConfigmap\" -}}\n{{- if and  (include \"mongodb.hidden.enabled\" .) .Values.hidden.enabled .Values.hidden.configuration (not .Values.hidden.existingConfigmap) }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCompile all warnings into a single message, and call fail.\n*/}}\n{{- define \"mongodb.validateValues\" -}}\n{{- $messages := list -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.pspAndRBAC\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.architecture\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.customUsersDBs\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.customUsersDBsLength\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.externalAccessServiceType\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.loadBalancerIPsListLength\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.nodePortListLength\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.externalAccessAutoDiscoveryRBAC\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.replicaset.existingSecrets\" .) -}}\n{{- $messages := append $messages (include \"mongodb.validateValues.hidden.existingSecrets\" .) -}}\n{{- $messages := without $messages \"\" -}}\n{{- $message := join \"\\n\" $messages -}}\n\n{{- if $message -}}\n{{-   printf \"\\nVALUES VALIDATION:\\n%s\" $message | fail -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Validate RBAC is created when using PSP */}}\n{{- define \"mongodb.validateValues.pspAndRBAC\" -}}\n{{- if and (.Values.podSecurityPolicy.create) (not .Values.rbac.create) -}}\nmongodb: podSecurityPolicy.create, rbac.create\n    Both podSecurityPolicy.create and rbac.create must be true, if you want\n    to create podSecurityPolicy\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of MongoDB&reg; - must provide a valid architecture */}}\n{{- define \"mongodb.validateValues.architecture\" -}}\n{{- if and (ne .Values.architecture \"standalone\") (ne .Values.architecture \"replicaset\") -}}\nmongodb: architecture\n    Invalid architecture selected. Valid values are \"standalone\" and\n    \"replicaset\". Please set a valid architecture (--set mongodb.architecture=\"xxxx\")\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - both auth.usernames and auth.databases are necessary\nto create a custom user and database during 1st initialization\n*/}}\n{{- define \"mongodb.validateValues.customUsersDBs\" -}}\n{{- $customUsers := include \"mongodb.customUsers\" . -}}\n{{- $customDatabases := include \"mongodb.customDatabases\" . -}}\n{{- if or (and (empty $customUsers) (not (empty $customDatabases))) (and (not (empty $customUsers)) (empty $customDatabases)) }}\nmongodb: auth.usernames, auth.databases\n    Both auth.usernames and auth.databases must be provided to create\n    custom users and databases during 1st initialization.\n    Please set both of them (--set auth.usernames[0]=\"xxxx\",auth.databases[0]=\"yyyy\")\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - both auth.usernames and auth.databases arrays should have the same length\nto create a custom user and database during 1st initialization\n*/}}\n{{- define \"mongodb.validateValues.customUsersDBsLength\" -}}\n{{- if ne (len .Values.auth.usernames) (len .Values.auth.databases) }}\nmongodb: auth.usernames, auth.databases\n    Both auth.usernames and auth.databases arrays should have the same length\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - service type for external access\n*/}}\n{{- define \"mongodb.validateValues.externalAccessServiceType\" -}}\n{{- if and (eq .Values.architecture \"replicaset\") (not (eq .Values.externalAccess.service.type \"NodePort\")) (not (eq .Values.externalAccess.service.type \"LoadBalancer\")) (not (eq .Values.externalAccess.service.type \"ClusterIP\")) -}}\nmongodb: externalAccess.service.type\n    Available service type for external access are NodePort, LoadBalancer or ClusterIP.\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - number of replicas must be the same than LoadBalancer IPs list\n*/}}\n{{- define \"mongodb.validateValues.loadBalancerIPsListLength\" -}}\n{{- $replicaCount := int .Values.replicaCount }}\n{{- $loadBalancerListLength := len .Values.externalAccess.service.loadBalancerIPs }}\n{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled ) (eq .Values.externalAccess.service.type \"LoadBalancer\") (not (eq $replicaCount $loadBalancerListLength )) -}}\nmongodb: .Values.externalAccess.service.loadBalancerIPs\n    Number of replicas and loadBalancerIPs array length must be the same.\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - number of replicas must be the same than NodePort list\n*/}}\n{{- define \"mongodb.validateValues.nodePortListLength\" -}}\n{{- $replicaCount := int .Values.replicaCount }}\n{{- $nodePortListLength := len .Values.externalAccess.service.nodePorts }}\n{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled (eq .Values.externalAccess.service.type \"NodePort\") (not (eq $replicaCount $nodePortListLength )) -}}\nmongodb: .Values.externalAccess.service.nodePorts\n    Number of replicas and nodePorts array length must be the same.\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - RBAC should be enabled when autoDiscovery is enabled\n*/}}\n{{- define \"mongodb.validateValues.externalAccessAutoDiscoveryRBAC\" -}}\n{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (not .Values.rbac.create ) }}\nmongodb: rbac.create\n    By specifying \"externalAccess.enabled=true\" and \"externalAccess.autoDiscovery.enabled=true\"\n    an initContainer will be used to autodetect the external IPs/ports by querying the\n    K8s API. Please note this initContainer requires specific RBAC resources. You can create them\n    by specifying \"--set rbac.create=true\".\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - Number of replicaset secrets must be the same than number of replicaset nodes.\n*/}}\n{{- define \"mongodb.validateValues.replicaset.existingSecrets\" -}}\n{{- if and .Values.tls.enabled (eq .Values.architecture \"replicaset\") (not (empty .Values.tls.replicaset.existingSecrets)) }}\n{{- $nbSecrets := len .Values.tls.replicaset.existingSecrets -}}\n{{- if not (eq $nbSecrets (int .Values.replicaCount)) }}\nmongodb: tls.replicaset.existingSecrets\n    tls.replicaset.existingSecrets Number of secrets and number of replicaset nodes must be the same.\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; - Number of hidden secrets must be the same than number of hidden nodes.\n*/}}\n{{- define \"mongodb.validateValues.hidden.existingSecrets\" -}}\n{{- if and .Values.tls.enabled (include \"mongodb.hidden.enabled\" .) (not (empty .Values.tls.hidden.existingSecrets)) }}\n{{- $nbSecrets := len .Values.tls.hidden.existingSecrets -}}\n{{- if not (eq $nbSecrets (int .Values.hidden.replicaCount)) }}\nmongodb: tls.hidden.existingSecrets\n    tls.hidden.existingSecrets Number of secrets and number of hidden nodes must be the same.\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of MongoDB&reg; exporter URI string - auth.enabled and/or tls.enabled must be enabled or it defaults\n*/}}\n{{- define \"mongodb.mongodb_exporter.uri\" -}}\n    {{- $uriTlsArgs := ternary \"tls=true&tlsCertificateKeyFile=/certs/mongodb.pem&tlsCAFile=/certs/mongodb-ca-cert\" \"\" .Values.tls.enabled -}}\n    {{- if .Values.metrics.username }}\n        {{- $uriAuth := ternary \"$(echo $MONGODB_METRICS_USERNAME | sed -r \\\"s/@/%40/g;s/:/%3A/g\\\"):$(echo $MONGODB_METRICS_PASSWORD | sed -r \\\"s/@/%40/g;s/:/%3A/g\\\")@\" \"\" .Values.auth.enabled -}}\n        {{- printf \"mongodb://%slocalhost:27017/admin?%s\" $uriAuth $uriTlsArgs -}}\n    {{- else -}}\n        {{- $uriAuth := ternary \"$MONGODB_ROOT_USER:$(echo $MONGODB_ROOT_PASSWORD | sed -r \\\"s/@/%40/g;s/:/%3A/g\\\")@\" \"\" .Values.auth.enabled -}}\n        {{- printf \"mongodb://%slocalhost:27017/admin?%s\" $uriAuth $uriTlsArgs -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiGroup for PodSecurityPolicy.\n*/}}\n{{- define \"podSecurityPolicy.apiGroup\" -}}\n{{- if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"policy\" -}}\n{{- else -}}\n{{- print \"extensions\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a TLS secret object should be created\n*/}}\n{{- define \"mongodb.createTlsSecret\" -}}\n{{- if and .Values.tls.enabled (not .Values.tls.existingSecret) (include \"mongodb.autoGenerateCerts\" .) }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the secret containing MongoDB&reg; TLS certificates\n*/}}\n{{- define \"mongodb.tlsSecretName\" -}}\n{{- $secretName := .Values.tls.existingSecret -}}\n{{- if $secretName -}}\n    {{- printf \"%s\" (tpl $secretName $) -}}\n{{- else -}}\n    {{- printf \"%s-ca\" (include \"mongodb.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if certificates must be auto generated\n*/}}\n{{- define \"mongodb.autoGenerateCerts\" -}}\n{{- $standalone := (eq .Values.architecture \"standalone\") | ternary (not .Values.tls.standalone.existingSecret) true -}}\n{{- $replicaset := (eq .Values.architecture \"replicaset\") | ternary (empty .Values.tls.replicaset.existingSecrets) true -}}\n{{- $arbiter := (eq (include \"mongodb.arbiter.enabled\" .) \"true\") | ternary (not .Values.tls.arbiter.existingSecret) true -}}\n{{- $hidden := (eq (include \"mongodb.hidden.enabled\" .) \"true\") | ternary (empty .Values.tls.hidden.existingSecrets) true -}}\n{{- if and $standalone $replicaset $arbiter $hidden -}}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/arbiter/configmap.yaml",
    "content": "{{- if (include \"mongodb.arbiter.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ print \"%s-arbiter\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: arbiter\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  mongodb.conf: |-\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.configuration \"context\" $) | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/arbiter/headless-svc.yaml",
    "content": "{{- if (include \"mongodb.arbiter.enabled\" .) }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mongodb.arbiter.service.nameOverride\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: arbiter\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.arbiter.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.arbiter.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.arbiter.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  ports:\n    - name: tcp-mongodb\n      port: {{ .Values.arbiter.service.ports.mongodb }}\n      targetPort: mongodb\n    {{- if .Values.arbiter.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: arbiter\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/arbiter/pdb.yaml",
    "content": "{{- if and (include \"mongodb.arbiter.enabled\" .) .Values.arbiter.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ printf \"%s-arbiter\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: arbiter\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.arbiter.pdb.minAvailable }}\n  minAvailable: {{ .Values.arbiter.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.arbiter.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.arbiter.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: arbiter\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/arbiter/statefulset.yaml",
    "content": "{{- if (include \"mongodb.arbiter.enabled\" .) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-arbiter\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: arbiter\n    {{- if .Values.arbiter.labels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.labels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.arbiter.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.arbiter.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.arbiter.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  serviceName: {{ include \"mongodb.arbiter.service.nameOverride\" . }}\n  podManagementPolicy: {{ .Values.arbiter.podManagementPolicy }}\n  {{- if .Values.arbiter.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.arbiter.updateStrategy | nindent 4 }}\n   {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: arbiter\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: arbiter\n        {{- if .Values.arbiter.podLabels }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.podLabels \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.commonLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      {{- if or (include \"mongodb.arbiter.createConfigmap\" .) .Values.arbiter.podAnnotations }}\n      annotations:\n        {{- if (include \"mongodb.arbiter.createConfigmap\" .) }}\n        checksum/configuration: {{ include (print $.Template.BasePath \"/arbiter/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.arbiter.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    spec:\n      {{- include \"mongodb.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.arbiter.schedulerName }}\n      schedulerName: {{ .Values.arbiter.schedulerName | quote }}\n      {{- end }}\n      serviceAccountName: {{ template \"mongodb.serviceAccountName\" . }}\n      {{- if .Values.arbiter.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.arbiter.podAffinityPreset \"component\" \"arbiter\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.arbiter.podAntiAffinityPreset \"component\" \"arbiter\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.arbiter.nodeAffinityPreset.type \"key\" .Values.arbiter.nodeAffinityPreset.key \"values\" .Values.arbiter.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.arbiter.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.arbiter.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.arbiter.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.arbiter.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.topologySpreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.arbiter.priorityClassName }}\n      priorityClassName: {{ .Values.arbiter.priorityClassName }}\n      {{- end }}\n      {{- if .Values.arbiter.runtimeClassName }}\n      runtimeClassName: {{ .Values.arbiter.runtimeClassName }}\n      {{- end }}\n      {{- if .Values.arbiter.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.arbiter.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{ if .Values.arbiter.terminationGracePeriodSeconds }}\n      terminationGracePeriodSeconds: {{ .Values.arbiter.terminationGracePeriodSeconds }}\n      {{- end }}\n      initContainers:\n        {{- if .Values.arbiter.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.tls.enabled .Values.arbiter.enabled }}\n        - name: generate-tls-certs\n          image: {{ include \"mongodb.tls.image\" . }}\n          imagePullPolicy: {{ .Values.tls.image.pullPolicy | quote }}\n          env:\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: MY_POD_HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n          volumeMounts:\n            {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n            - name: certs-volume\n              mountPath: /certs/CAs\n            {{- else }}\n            - name: mongodb-certs-0\n              mountPath: /certs-0\n            {{- end }}\n            - name: certs\n              mountPath: /certs\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n          command:\n            - /bitnami/scripts/generate-certs.sh\n          args:\n            - -s {{ include \"mongodb.arbiter.service.nameOverride\" . }}\n        {{- end }}\n      containers:\n        - name: mongodb-arbiter\n          image: {{ include \"mongodb.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.arbiter.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.arbiter.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.arbiter.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.arbiter.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.arbiter.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: K8S_SERVICE_NAME\n              value: \"{{ include \"mongodb.arbiter.service.nameOverride\" . }}\"\n            - name: MONGODB_REPLICA_SET_MODE\n              value: \"arbiter\"\n            - name: MONGODB_INITIAL_PRIMARY_HOST\n              value: {{ printf \"%s-0.%s.$(MY_POD_NAMESPACE).svc.%s\" (include \"mongodb.fullname\" .) (include \"mongodb.service.nameOverride\" .) .Values.clusterDomain }}\n            - name: MONGODB_REPLICA_SET_NAME\n              value: {{ .Values.replicaSetName | quote }}\n            - name: MONGODB_ADVERTISED_HOSTNAME\n              value: \"$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}\"\n            - name: MONGODB_PORT_NUMBER\n              value: {{ .Values.arbiter.containerPorts.mongodb | quote }}\n            - name: MONGODB_ENABLE_IPV6\n              value: {{ ternary \"yes\" \"no\" .Values.enableIPv6 | quote }}\n            {{- if .Values.auth.enabled }}\n            - name: MONGODB_INITIAL_PRIMARY_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            - name: MONGODB_REPLICA_SET_KEY\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-replica-set-key\n            {{- end }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- $extraFlags := .Values.arbiter.extraFlags | join \" \" -}}\n            {{- if and .Values.tls.enabled .Values.arbiter.enabled  }}\n              {{- $extraFlags = printf \"--tlsMode=%s --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert %s\" .Values.tls.mode $extraFlags  }}\n            {{- end }}\n            {{- if ne $extraFlags \"\" }}\n            - name: MONGODB_EXTRA_FLAGS\n              value: {{ $extraFlags | quote }}\n            {{- end }}\n            {{- if and .Values.tls.enabled  .Values.arbiter.enabled }}\n            - name: MONGODB_CLIENT_EXTRA_FLAGS\n              value: --tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert\n            {{- end }}\n            {{- if .Values.arbiter.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.arbiter.extraEnvVarsCM .Values.arbiter.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.arbiter.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ tpl .Values.arbiter.extraEnvVarsCM . | quote }}\n            {{- end }}\n            {{- if .Values.arbiter.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ tpl .Values.arbiter.extraEnvVarsSecret . | quote }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - containerPort: {{ .Values.arbiter.containerPorts.mongodb }}\n              name: mongodb\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.arbiter.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.arbiter.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.arbiter.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: mongodb\n          {{- end }}\n          {{- if .Values.arbiter.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.arbiter.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.arbiter.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: mongodb\n          {{- end }}\n          {{- if .Values.arbiter.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.arbiter.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.arbiter.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: mongodb\n          {{- end }}\n          {{- end }}\n          {{- if .Values.arbiter.resources }}\n          resources: {{- toYaml .Values.arbiter.resources | nindent 12 }}\n          {{- end }}\n          {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap .Values.arbiter.extraVolumeMounts .Values.tls.enabled }}\n          volumeMounts:\n            {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap }}\n            - name: config\n              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf\n              subPath: mongodb.conf\n            {{- end }}\n            {{- if and .Values.tls.enabled .Values.arbiter.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n            {{- if .Values.arbiter.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- end }}\n        {{- if .Values.arbiter.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap .Values.arbiter.extraVolumes .Values.tls.enabled }}\n      volumes:\n        - name: common-scripts\n          configMap:\n            name: {{ printf \"%s-common-scripts\" (include \"mongodb.fullname\" .) }}\n            defaultMode: 0555\n        {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap }}\n        - name: config\n          configMap:\n            name: {{ include \"mongodb.arbiter.configmapName\" . }}\n        {{- end }}\n        {{- if and .Values.tls.enabled .Values.arbiter.enabled }}\n        - name: certs\n          emptyDir: {}\n        {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n        - name: certs-volume\n          secret:\n            secretName: {{ template \"mongodb.tlsSecretName\" . }}\n            items:\n            - key: mongodb-ca-cert\n              path: mongodb-ca-cert\n              mode: 0600\n            - key: mongodb-ca-key\n              path: mongodb-ca-key\n              mode: 0600\n        {{- else }}\n        - name: mongodb-certs-0\n          secret:\n            secretName: {{ include \"common.tplvalues.render\" ( dict \"value\" .Values.tls.arbiter.existingSecret \"context\" $) }}\n            defaultMode: 256\n        {{- end }}\n        {{- end }}\n        {{- if .Values.arbiter.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.arbiter.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/common-scripts-cm.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-common-scripts\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  {{- $fullname := include \"mongodb.fullname\" . }}\n  startup-probe.sh: |\n    #!/bin/bash\n    {{- if .Values.tls.enabled }}\n    TLS_OPTIONS='--tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert'\n    {{- end }}\n    mongosh  $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'db.hello().isWritablePrimary || db.hello().secondary' | grep 'true'\n  readiness-probe.sh: |\n    #!/bin/bash\n    {{- if .Values.tls.enabled }}\n    TLS_OPTIONS='--tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert'\n    {{- end }}\n    # Run the proper check depending on the version\n    [[ $(mongod -version | grep \"db version\") =~ ([0-9]+\\.[0-9]+\\.[0-9]+) ]] && VERSION=${BASH_REMATCH[1]}\n    . /opt/bitnami/scripts/libversion.sh\n    VERSION_MAJOR=\"$(get_sematic_version \"$VERSION\" 1)\"\n    VERSION_MINOR=\"$(get_sematic_version \"$VERSION\" 2)\"\n    VERSION_PATCH=\"$(get_sematic_version \"$VERSION\" 3)\"\n    if [[ ( \"$VERSION_MAJOR\" -ge 5 ) || ( \"$VERSION_MAJOR\" -ge 4 && \"$VERSION_MINOR\" -ge 4 && \"$VERSION_PATCH\" -ge 2 ) ]]; then\n        mongosh $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'db.hello().isWritablePrimary || db.hello().secondary' | grep 'true'\n    else\n        mongosh  $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'db.isMaster().ismaster || db.isMaster().secondary' | grep 'true'\n    fi\n  ping-mongodb.sh: |\n    #!/bin/bash\n    {{- if .Values.tls.enabled }}\n    TLS_OPTIONS='--tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert'\n    {{- end }}\n    mongosh  $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval \"db.adminCommand('ping')\"\n  {{- if .Values.tls.enabled }}\n  generate-certs.sh: |\n    #!/bin/bash\n    {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n    additional_ips=()\n    additional_names=()\n    while getopts \"i:n:s:\" flag\n    do\n        case \"${flag}\" in\n            i) read -a additional_ips <<< ${OPTARG//,/ } ;;\n            n) read -a additional_names <<< ${OPTARG//,/ } ;;\n            s) svc=${OPTARG// /} ;;\n            \\?) exit 1 ;;\n        esac\n    done\n\n    my_hostname=$(hostname)\n    cp /certs/CAs/* /certs/\n    cat >/certs/openssl.cnf <<EOL\n    [req]\n    req_extensions = v3_req\n    distinguished_name = req_distinguished_name\n    [req_distinguished_name]\n    [ v3_req ]\n    basicConstraints = CA:FALSE\n    keyUsage = nonRepudiation, digitalSignature, keyEncipherment\n    subjectAltName = @alt_names\n    [alt_names]\n    DNS.1 = $svc\n    DNS.2 = $my_hostname\n    DNS.3 = $my_hostname.$svc.$MY_POD_NAMESPACE.svc.cluster.local\n    DNS.4 = localhost\n    IP.0 = ${MY_POD_HOST_IP}\n    IP.1 = 127.0.0.1\n    EOL\n    index=2\n    for ip in \"${additional_ips[@]}\"; do\n        cat >>/certs/openssl.cnf <<EOL\n    IP.$index = $ip\n    EOL\n        ((index++))\n    done;\n    index=5\n    for name in \"${additional_names[@]}\"; do\n        cat >>/certs/openssl.cnf <<EOL\n    DNS.$index = $(eval echo \"${name}\")\n    EOL\n        ((index++))\n    done;\n\n    export RANDFILE=/certs/.rnd && openssl genrsa -out /certs/mongo.key 2048\n    #Create the client/server cert\n    openssl req -new -key /certs/mongo.key -out /certs/mongo.csr -subj \"/C=US/O=My Organisations/OU=IT/CN=$my_hostname\" -config /certs/openssl.cnf\n    #Signing the server cert with the CA cert and key\n    openssl x509 -req -in /certs/mongo.csr -CA /certs/mongodb-ca-cert -CAkey /certs/mongodb-ca-key -CAcreateserial -out /certs/mongo.crt -days 3650 -extensions v3_req -extfile /certs/openssl.cnf\n    rm /certs/mongo.csr\n    #Concatenate to a pem file for use as the client PEM file which can be used for both member and client authentication.\n    cat /certs/mongo.crt /certs/mongo.key > /certs/mongodb.pem\n    cd /certs/\n    shopt -s extglob\n    rm -rf !(mongodb-ca-cert|mongodb.pem|CAs|openssl.cnf)\n    chmod 0600 mongodb-ca-cert mongodb.pem\n    {{- else }}\n    {{- if eq .Values.architecture \"standalone\" }}\n      ID=\"0\"\n    {{- else }}\n    if [[ \"$MY_POD_NAME\" =~ \"arbiter-0\"$ ]]; then\n      ID=\"0\"\n    elif [[ \"$MY_POD_NAME\" =~ \"hidden-\"[0-9]{1,}$ ]]; then\n      ID=\"${MY_POD_NAME#\"{{ printf \"%s-hidden-\" $fullname }}\"}\"\n    else\n      ID=\"${MY_POD_NAME#\"{{ $fullname }}-\"}\"\n    fi\n    {{- end }}\n    cat \"/certs-${ID}/tls.crt\" \"/certs-${ID}/tls.key\" > \"/certs/mongodb.pem\"\n    cp \"/certs-${ID}/ca.crt\" \"/certs/mongodb-ca-cert\"\n    chmod 0600 /certs/mongodb-ca-cert /certs/mongodb.pem\n    {{- end }}\n  {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/configmap.yaml",
    "content": "{{- if (include \"mongodb.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  mongodb.conf: |-\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.configuration \"context\" $) | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/extra-list.yaml",
    "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/hidden/configmap.yaml",
    "content": "{{- if (include \"mongodb.hidden.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-hidden\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: hidden\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\ndata:\n  mongodb.conf: |-\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.configuration \"context\" $) | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/hidden/external-access-svc.yaml",
    "content": "{{- if and (include \"mongodb.hidden.enabled\" .) .Values.externalAccess.hidden.enabled }}\n{{- $fullName := include \"mongodb.fullname\" . }}\n{{- $replicaCount := .Values.hidden.replicaCount | int }}\n{{- $root := . }}\n\n{{- range $i, $e := until $replicaCount }}\n{{- $targetPod := printf \"%s-hidden-%d\" (printf \"%s\" $fullName) $i }}\n{{- $_ := set $ \"targetPod\" $targetPod }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-hidden-%d-external\" $fullName $i }}\n  namespace: {{ include \"mongodb.namespace\" $ }}\n  labels: {{- include \"common.labels.standard\" $ | nindent 4 }}\n    app.kubernetes.io/component: hidden\n    {{- if $root.Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    pod: {{ $targetPod }}\n  {{- if or $root.Values.externalAccess.hidden.service.annotations $root.Values.commonAnnotations }}\n  annotations:\n    {{- if $root.Values.externalAccess.hidden.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.externalAccess.hidden.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if $root.Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ $root.Values.externalAccess.hidden.service.type }}\n  {{- if eq $root.Values.externalAccess.hidden.service.type \"LoadBalancer\" }}\n  {{- if not (empty $root.Values.externalAccess.hidden.service.loadBalancerIPs) }}\n  loadBalancerIP: {{ index $root.Values.externalAccess.hidden.service.loadBalancerIPs $i }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.hidden.service.loadBalancerClass }}\n  loadBalancerClass: {{ $root.Values.externalAccess.hidden.service.loadBalancerClass }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.hidden.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml $root.Values.externalAccess.hidden.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- end }}\n  {{- if (or (eq $root.Values.externalAccess.hidden.service.type \"LoadBalancer\") (eq $root.Values.externalAccess.hidden.service.type \"NodePort\")) }}\n  externalTrafficPolicy: {{ $root.Values.externalAccess.hidden.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.hidden.service.sessionAffinity }}\n  sessionAffinity: {{ $root.Values.externalAccess.hidden.service.sessionAffinity }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.hidden.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" $root.Values.externalAccess.hidden.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  publishNotReadyAddresses: true\n  ports:\n    - name: {{ $root.Values.externalAccess.hidden.service.portName | quote }}\n      port: {{ $root.Values.externalAccess.hidden.service.ports.mongodb }}\n      {{- if not (empty $root.Values.externalAccess.hidden.service.nodePorts) }}\n      {{- $nodePort := index $root.Values.externalAccess.hidden.service.nodePorts $i }}\n      nodePort: {{ $nodePort }}\n      {{- else }}\n      nodePort: null\n      {{- end }}\n      targetPort: mongodb\n    {{- if $root.Values.externalAccess.hidden.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" $root.Values.externalAccess.hidden.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" $ | nindent 4 }}\n    app.kubernetes.io/component: hidden\n    statefulset.kubernetes.io/pod-name: {{ $targetPod }}\n---\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/hidden/headless-svc.yaml",
    "content": "{{- if (include \"mongodb.hidden.enabled\" .) }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-hidden-headless\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: hidden\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.hidden.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.hidden.service.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  publishNotReadyAddresses: true\n  ports:\n    - name: {{ .Values.hidden.service.portName | quote }}\n      port: {{ .Values.hidden.service.ports.mongodb }}\n      targetPort: mongodb\n    {{- if .Values.hidden.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: hidden\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/hidden/pdb.yaml",
    "content": "{{- if and (include \"mongodb.hidden.enabled\" .) .Values.hidden.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ printf \"%s-hidden\" (include \"mongodb.fullname\" . )}}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: hidden\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  {{- if .Values.hidden.pdb.minAvailable }}\n  minAvailable: {{ .Values.hidden.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.hidden.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.hidden.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: hidden\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/hidden/statefulset.yaml",
    "content": "{{- if (include \"mongodb.hidden.enabled\" .) }}\n{{- $replicaCount := int .Values.hidden.replicaCount }}\n{{- $loadBalancerIPListLength := len .Values.externalAccess.hidden.service.loadBalancerIPs }}\n{{- if not (and .Values.externalAccess.hidden.enabled (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $loadBalancerIPListLength )) (eq .Values.externalAccess.hidden.service.type \"LoadBalancer\")) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-hidden\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: hidden\n    {{- if .Values.hidden.labels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.labels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.hidden.annotations }}\n  annotations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.annotations \"context\" $) | nindent 4 }}\n  {{- end }}\nspec:\n  serviceName: {{ printf \"%s-hidden-headless\" (include \"mongodb.fullname\" .) }}\n  podManagementPolicy: {{ .Values.hidden.podManagementPolicy }}\n  replicas: {{ .Values.hidden.replicaCount }}\n  {{- if .Values.hidden.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.hidden.updateStrategy | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: hidden\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: hidden\n        {{- if .Values.hidden.podLabels }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.podLabels \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.commonLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      {{- if or (include \"mongodb.hidden.createConfigmap\" .) .Values.hidden.podAnnotations }}\n      annotations:\n        {{- if (include \"mongodb.hidden.createConfigmap\" .) }}\n        checksum/configuration: {{ include (print $.Template.BasePath \"/hidden/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.hidden.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    spec:\n      {{- include \"mongodb.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.hidden.schedulerName }}\n      schedulerName: {{ .Values.hidden.schedulerName | quote }}\n      {{- end }}\n      serviceAccountName: {{ template \"mongodb.serviceAccountName\" . }}\n      {{- if .Values.hidden.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.hidden.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.hidden.podAffinityPreset \"component\" \"\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.hidden.podAntiAffinityPreset \"component\" \"\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.hidden.nodeAffinityPreset.type \"key\" .Values.hidden.nodeAffinityPreset.key \"values\" .Values.hidden.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.hidden.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.hidden.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.hidden.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.topologySpreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.hidden.priorityClassName }}\n      priorityClassName: {{ .Values.hidden.priorityClassName }}\n      {{- end }}\n      {{- if .Values.hidden.runtimeClassName }}\n      runtimeClassName: {{ .Values.hidden.runtimeClassName }}\n      {{- end }}\n      {{- if .Values.hidden.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.hidden.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{ if .Values.hidden.terminationGracePeriodSeconds }}\n      terminationGracePeriodSeconds: {{ .Values.hidden.terminationGracePeriodSeconds }}\n      {{- end }}\n      {{- if or .Values.hidden.initContainers (and .Values.volumePermissions.enabled .Values.hidden.persistence.enabled) (and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled) .Values.tls.enabled }}\n      initContainers:\n        {{- if .Values.hidden.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.volumePermissions.enabled .Values.hidden.persistence.enabled }}\n        - name: volume-permissions\n          image: {{ include \"mongodb.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n          args:\n            - -ec\n            - |\n              mkdir -p {{ printf \"%s/%s\" .Values.hidden.persistence.mountPath (default \"\" .Values.hidden.persistence.subPath) }}\n              chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf \"%s/%s\" .Values.hidden.persistence.mountPath (default \"\" .Values.hidden.persistence.subPath) }}\n              find  {{ printf \"%s/%s\" .Values.hidden.persistence.mountPath (default \"\" .Values.hidden.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name \".snapshot\" -not -name \"lost+found\" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}\n          {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.securityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: datadir\n              mountPath: {{ .Values.hidden.persistence.mountPath }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: generate-tls-certs\n          image: {{ include \"mongodb.tls.image\" . }}\n          imagePullPolicy: {{ .Values.tls.image.pullPolicy | quote }}\n          env:\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: MY_POD_HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n          volumeMounts:\n            {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n            - name: certs-volume\n              mountPath: /certs/CAs\n            {{- else }}\n            {{- range $index, $_ := .Values.tls.hidden.existingSecrets }}\n            - name: mongodb-certs-{{ $index }}\n              mountPath: /certs-{{ $index }}\n            {{- end }}\n            {{- end }}\n            - name: certs\n              mountPath: /certs\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n          command:\n            - /bitnami/scripts/generate-certs.sh\n          args:\n            - -s {{ printf \"%s-hidden-headless\" (include \"mongodb.fullname\" .) }}\n            {{- if .Values.externalAccess.hidden.service.loadBalancerIPs }}\n            - -i {{ join \",\" .Values.externalAccess.hidden.service.loadBalancerIPs }}\n            {{- end }}\n            {{- if .Values.tls.extraDnsNames }}\n            - -n {{ join \",\" .Values.tls.extraDnsNames }}\n            {{- end }}\n          {{- if .Values.tls.resources }}\n          resources: {{- toYaml .Values.tls.resources | nindent 12 }}\n          {{- end }}\n        {{- end }}\n        {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type \"LoadBalancer\") }}\n        - name: auto-discovery\n          image: {{ include \"mongodb.externalAccess.autoDiscovery.image\" . }}\n          imagePullPolicy: {{ .Values.externalAccess.autoDiscovery.image.pullPolicy | quote }}\n          command:\n            - /scripts/auto-discovery.sh\n          env:\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: SHARED_FILE\n              value: \"/shared/info.txt\"\n          {{- if .Values.externalAccess.autoDiscovery.resources }}\n          resources: {{- toYaml .Values.externalAccess.autoDiscovery.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: shared\n              mountPath: /shared\n            - name: scripts\n              mountPath: /scripts/auto-discovery.sh\n              subPath: auto-discovery.sh\n        {{- end }}\n      {{- end }}\n      containers:\n        - name: mongodb\n          image: {{ include \"mongodb.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.hidden.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.hidden.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.hidden.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /scripts/setup-hidden.sh\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.hidden.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.hidden.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type \"LoadBalancer\") }}\n            - name: SHARED_FILE\n              value: \"/shared/info.txt\"\n            {{- end }}\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: MY_POD_HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: K8S_SERVICE_NAME\n              value: \"{{ include \"mongodb.service.nameOverride\" . }}\"\n            - name: K8S_HIDDEN_NODE_SERVICE_NAME\n              value: \"{{ include \"mongodb.fullname\" . }}-hidden-headless\"\n            - name: MONGODB_REPLICA_SET_MODE\n              value: \"hidden\"\n            - name: MONGODB_INITIAL_PRIMARY_HOST\n              value: {{ printf \"%s-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.%s\" (include \"mongodb.fullname\" .) .Values.clusterDomain }}\n            - name: MONGODB_REPLICA_SET_NAME\n              value: {{ .Values.replicaSetName | quote }}\n            {{- if and .Values.replicaSetHostnames (not .Values.externalAccess.hidden.enabled) }}\n            - name: MONGODB_ADVERTISED_HOSTNAME\n              value: \"$(MY_POD_NAME).$(K8S_HIDDEN_NODE_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}\"\n            {{- end }}\n            {{- $customUsers := include \"mongodb.customUsers\" . -}}\n            {{- $customDatabases := include \"mongodb.customDatabases\" . -}}\n            {{- if not (empty $customUsers) }}\n            - name: MONGODB_EXTRA_USERNAMES\n              value: {{ $customUsers | quote }}\n            {{- end }}\n            {{- if not (empty $customDatabases) }}\n            - name: MONGODB_EXTRA_DATABASES\n              value: {{ $customDatabases | quote }}\n            {{- end }}\n            {{- if .Values.auth.enabled }}\n            {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}\n            - name: MONGODB_EXTRA_PASSWORDS\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-passwords\n            {{- end }}\n            - name: MONGODB_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            - name: MONGODB_REPLICA_SET_KEY\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-replica-set-key\n            {{- end }}\n            {{- if and .Values.metrics.enabled (not (empty .Values.metrics.username)) }}\n            - name: MONGODB_METRICS_USERNAME\n              value: {{ .Values.metrics.username | quote }}\n            {{- if .Values.auth.enabled }}\n            - name: MONGODB_METRICS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-metrics-password\n            {{- end }}\n            {{- end }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            - name: MONGODB_SYSTEM_LOG_VERBOSITY\n              value: {{ .Values.systemLogVerbosity | quote }}\n            - name: MONGODB_DISABLE_SYSTEM_LOG\n              value: {{ ternary \"yes\" \"no\" .Values.disableSystemLog | quote }}\n            - name: MONGODB_DISABLE_JAVASCRIPT\n              value: {{ ternary \"yes\" \"no\" .Values.disableJavascript | quote }}\n            - name: MONGODB_ENABLE_JOURNAL\n              value: {{ ternary \"yes\" \"no\" .Values.enableJournal | quote }}\n            - name: MONGODB_PORT_NUMBER\n              value: {{ .Values.hidden.containerPorts.mongodb | quote }}\n            - name: MONGODB_ENABLE_IPV6\n              value: {{ ternary \"yes\" \"no\" .Values.enableIPv6 | quote }}\n            - name: MONGODB_ENABLE_DIRECTORY_PER_DB\n              value: {{ ternary \"yes\" \"no\" .Values.directoryPerDB | quote }}\n            {{- $extraFlags := .Values.hidden.extraFlags | join \" \" -}}\n            {{- if .Values.tls.enabled }}\n              {{- $extraFlags = printf \"--tlsMode=%s --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert %s\" .Values.tls.mode $extraFlags  }}\n            {{- end }}\n            {{- if ne $extraFlags \"\" }}\n            - name: MONGODB_EXTRA_FLAGS\n              value: {{ $extraFlags | quote }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: MONGODB_CLIENT_EXTRA_FLAGS\n              value: --tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert\n            {{- end }}\n            {{- if .Values.hidden.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.hidden.extraEnvVarsCM .Values.hidden.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.hidden.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ tpl .Values.hidden.extraEnvVarsCM . | quote }}\n            {{- end }}\n            {{- if .Values.hidden.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ tpl .Values.hidden.extraEnvVarsSecret . | quote }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - containerPort: {{ .Values.hidden.containerPorts.mongodb }}\n              name: mongodb\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.hidden.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.hidden.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.hidden.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/ping-mongodb.sh\n          {{- end }}\n          {{- if .Values.hidden.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.hidden.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.hidden.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/ping-mongodb.sh\n          {{- end }}\n          {{- if .Values.hidden.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.hidden.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.hidden.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/startup-probe.sh\n          {{- end }}\n          {{- end }}\n          {{- if .Values.hidden.resources }}\n          resources: {{- toYaml .Values.hidden.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: datadir\n              mountPath: {{ .Values.hidden.persistence.mountPath }}\n              subPath: {{ .Values.hidden.persistence.subPath }}\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n            {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n            - name: custom-init-scripts\n              mountPath: /docker-entrypoint-initdb.d\n            {{- end }}\n            {{- if or .Values.hidden.configuration .Values.hidden.existingConfigmap }}\n            - name: config\n              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf\n              subPath: mongodb.conf\n            {{- end }}\n            - name: scripts\n              mountPath: /scripts/setup-hidden.sh\n              subPath: setup-hidden.sh\n            {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type \"LoadBalancer\") }}\n            - name: shared\n              mountPath: /shared\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n            {{- if .Values.hidden.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ template \"mongodb.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -ec\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - |\n              /bin/mongodb_exporter --mongodb.uri \"{{ include \"mongodb.mongodb_exporter.uri\" . }}\" {{ .Values.metrics.extraFlags }}\n          {{- end }}\n          env:\n            {{- if .Values.auth.enabled }}\n            {{- if not .Values.metrics.username }}\n            - name: MONGODB_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            {{- else }}\n            - name: MONGODB_METRICS_USERNAME\n              value: {{ .Values.metrics.username | quote }}\n            - name: MONGODB_METRICS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-metrics-password\n            {{- end }}\n            {{- end }}\n          volumeMounts:\n            {{- if .Values.tls.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9216\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.metrics.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: metrics\n          {{- end }}\n          {{- end }}\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n        {{- end }}\n        {{- if .Values.hidden.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        - name: common-scripts\n          configMap:\n            name: {{ printf \"%s-common-scripts\" (include \"mongodb.fullname\" .) }}\n            defaultMode: 0555\n        {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n        - name: custom-init-scripts\n          configMap:\n            name: {{ template \"mongodb.initdbScriptsCM\" . }}\n        {{- end }}\n        {{- if or .Values.hidden.configuration .Values.hidden.existingConfigmap }}\n        - name: config\n          configMap:\n            name: {{ include \"mongodb.hidden.configmapName\" . }}\n        {{- end }}\n        {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type \"LoadBalancer\") }}\n        - name: shared\n          emptyDir: {}\n        {{- end }}\n        - name: scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"mongodb.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.hidden.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: certs\n          emptyDir: {}\n        {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n        - name: certs-volume\n          secret:\n            secretName: {{ template \"mongodb.tlsSecretName\" . }}\n            items:\n            - key: mongodb-ca-cert\n              path: mongodb-ca-cert\n              mode: 0600\n            - key: mongodb-ca-key\n              path: mongodb-ca-key\n              mode: 0600\n        {{- else }}\n        {{- range $index, $secret := .Values.tls.hidden.existingSecrets }}\n        - name: mongodb-certs-{{ $index }}\n          secret:\n            secretName: {{ include \"common.tplvalues.render\" ( dict \"value\" $secret \"context\" $) }}\n            defaultMode: 256\n        {{- end }}\n        {{- end }}\n        {{- end }}\n  {{- if not .Values.hidden.persistence.enabled }}\n        - name: datadir\n          {{- if .Values.hidden.persistence.medium }}\n          emptyDir:\n            medium: {{ .Values.hidden.persistence.medium | quote }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n        {{- if .Values.hidden.persistence.annotations }}\n        annotations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.persistence.annotations \"context\" $) | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.hidden.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.hidden.persistence.size | quote }}\n            {{- if .Values.hidden.persistence.volumeClaimTemplates.requests }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.persistence.volumeClaimTemplates.requests \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.hidden.persistence.volumeClaimTemplates.dataSource }}\n        dataSource: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.persistence.volumeClaimTemplates.dataSource \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- if .Values.hidden.persistence.volumeClaimTemplates.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hidden.persistence.volumeClaimTemplates.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{ include \"common.storage.class\" (dict \"persistence\" .Values.hidden.persistence \"global\" .Values.global) }}\n  {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/initialization-configmap.yaml",
    "content": "{{- if and .Values.initdbScripts (not .Values.initdbScriptsConfigMap) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-init-scripts\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n{{- include \"common.tplvalues.render\" (dict \"value\" .Values.initdbScripts \"context\" .) | nindent 2 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/metrics-svc.yaml",
    "content": "{{- if .Values.metrics.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-metrics\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: metrics\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.metrics.service.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.metrics.service.type }}\n  ports:\n    - port: {{ .Values.metrics.service.ports.metrics }}\n      targetPort: metrics\n      protocol: TCP\n      name: http-metrics\n    {{- if .Values.metrics.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" $ | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/prometheusrule.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.prometheusRule.namespace\" . }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.metrics.prometheusRule.additionalLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.prometheusRule.additionalLabels \"context\" $) | nindent 4 }}\n    {{- end }}\nspec:\n  groups:\n    - name: {{ include \"mongodb.fullname\" . }}\n      rules: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.prometheusRule.rules \"context\" $ ) | nindent 8 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/psp.yaml",
    "content": "{{- $pspAvailable := (semverCompare \"<1.25-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- if and $pspAvailable .Values.podSecurityPolicy.create }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n{{- if .Values.podSecurityPolicy.spec }}\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.podSecurityPolicy.spec \"context\" $ ) | nindent 2 }}\n{{- else }}\n  allowPrivilegeEscalation: {{ .Values.podSecurityPolicy.allowPrivilegeEscalation }}\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.podSecurityContext.fsGroup }}\n        max: {{ .Values.podSecurityContext.fsGroup }}\n  hostIPC: false\n  hostNetwork: false\n  hostPID: false\n  privileged: {{ .Values.podSecurityPolicy.privileged }}\n  readOnlyRootFilesystem: false\n  requiredDropCapabilities:\n    - ALL\n  runAsUser:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.containerSecurityContext.runAsUser }}\n        max: {{ .Values.containerSecurityContext.runAsUser }}\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.containerSecurityContext.runAsUser }}\n        max: {{ .Values.containerSecurityContext.runAsUser }}\n  volumes:\n    - 'configMap'\n    - 'secret'\n    - 'emptyDir'\n    - 'persistentVolumeClaim'\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/replicaset/external-access-svc.yaml",
    "content": "{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled (not (eq .Values.externalAccess.service.type \"ClusterIP\")) }}\n{{- $fullName := include \"mongodb.fullname\" . }}\n{{- $replicaCount := .Values.replicaCount | int }}\n{{- $root := . }}\n\n{{- range $i, $e := until $replicaCount }}\n{{- $targetPod := printf \"%s-%d\" (printf \"%s\" $fullName) $i }}\n{{- $_ := set $ \"targetPod\" $targetPod }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-%d-external\" $fullName $i }}\n  namespace: {{ include \"mongodb.namespace\" $ }}\n  labels: {{- include \"common.labels.standard\" $ | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if $root.Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    pod: {{ $targetPod }}\n  {{- if or $root.Values.externalAccess.service.annotations $root.Values.commonAnnotations }}\n  annotations:\n    {{- if $root.Values.externalAccess.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.externalAccess.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if $root.Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ $root.Values.externalAccess.service.type }}\n  {{- if eq $root.Values.externalAccess.service.type \"LoadBalancer\" }}\n  {{- if not (empty $root.Values.externalAccess.service.loadBalancerIPs) }}\n  loadBalancerIP: {{ index $root.Values.externalAccess.service.loadBalancerIPs $i }}\n  {{- end }}\n  {{- if and (eq $root.Values.externalAccess.service.type \"LoadBalancer\") $root.Values.externalAccess.service.loadBalancerClass }}\n  loadBalancerClass: {{ $root.Values.externalAccess.service.loadBalancerClass }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml $root.Values.externalAccess.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- end }}\n  {{- if (or (eq $root.Values.externalAccess.service.type \"LoadBalancer\") (eq $root.Values.externalAccess.service.type \"NodePort\")) }}\n  externalTrafficPolicy: {{ $root.Values.externalAccess.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.service.sessionAffinity }}\n  sessionAffinity: {{ $root.Values.externalAccess.service.sessionAffinity }}\n  {{- end }}\n  {{- if $root.Values.externalAccess.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" $root.Values.externalAccess.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  publishNotReadyAddresses: true\n  ports:\n    - name: {{ $root.Values.externalAccess.service.portName | quote }}\n      port: {{ $root.Values.externalAccess.service.ports.mongodb }}\n      {{- if not (empty $root.Values.externalAccess.service.nodePorts) }}\n      {{- $nodePort := index $root.Values.externalAccess.service.nodePorts $i }}\n      nodePort: {{ $nodePort }}\n      {{- else }}\n      nodePort: null\n      {{- end }}\n      targetPort: mongodb\n    {{- if $root.Values.externalAccess.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" $root.Values.externalAccess.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" $ | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    statefulset.kubernetes.io/pod-name: {{ $targetPod }}\n---\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/replicaset/headless-svc.yaml",
    "content": "{{- if eq .Values.architecture \"replicaset\" }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mongodb.service.nameOverride\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.service.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  publishNotReadyAddresses: true\n  ports:\n    - name: {{ .Values.service.portName | quote }}\n      port: {{ .Values.service.ports.mongodb }}\n      targetPort: mongodb\n    {{- if .Values.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/replicaset/pdb.yaml",
    "content": "{{- if and (eq .Values.architecture \"replicaset\") .Values.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.pdb.minAvailable }}\n  minAvailable: {{ .Values.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: mongodb\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/replicaset/scripts-configmap.yaml",
    "content": "{{- if eq .Values.architecture \"replicaset\" }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-scripts\" (include \"mongodb.fullname\" .) }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  {{- $fullname := include \"mongodb.fullname\" . }}\n  {{- $releaseNamespace := include \"mongodb.namespace\" . }}\n  {{- if and .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type \"LoadBalancer\") }}\n  auto-discovery.sh: |-\n    #!/bin/bash\n\n    SVC_NAME=\"${MY_POD_NAME}-external\"\n\n    # Auxiliary functions\n    retry_while() {\n        local -r cmd=\"${1:?cmd is missing}\"\n        local -r retries=\"${2:-12}\"\n        local -r sleep_time=\"${3:-5}\"\n        local return_value=1\n\n        read -r -a command <<< \"$cmd\"\n        for ((i = 1 ; i <= retries ; i+=1 )); do\n            \"${command[@]}\" && return_value=0 && break\n            sleep \"$sleep_time\"\n        done\n        return $return_value\n    }\n    k8s_svc_lb_ip() {\n        local namespace=${1:?namespace is missing}\n        local service=${2:?service is missing}\n        local service_ip=$(kubectl get svc \"$service\" -n \"$namespace\" -o jsonpath=\"{.status.loadBalancer.ingress[0].ip}\")\n        local service_hostname=$(kubectl get svc \"$service\" -n \"$namespace\" -o jsonpath=\"{.status.loadBalancer.ingress[0].hostname}\")\n\n        if [[ -n ${service_ip} ]]; then\n            echo \"${service_ip}\"\n        else\n            echo \"${service_hostname}\"\n        fi\n    }\n    k8s_svc_lb_ip_ready() {\n        local namespace=${1:?namespace is missing}\n        local service=${2:?service is missing}\n        [[ -n \"$(k8s_svc_lb_ip \"$namespace\" \"$service\")\" ]]\n    }\n    # Wait until LoadBalancer IP is ready\n    retry_while \"k8s_svc_lb_ip_ready {{ $releaseNamespace }} $SVC_NAME\" || exit 1\n    # Obtain LoadBalancer external IP\n    k8s_svc_lb_ip \"{{ $releaseNamespace }}\" \"$SVC_NAME\" | tee \"$SHARED_FILE\"\n  {{- end }}\n  setup.sh: |-\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/mongodb-env.sh\n    . /opt/bitnami/scripts/libfs.sh\n    . /opt/bitnami/scripts/liblog.sh\n    . /opt/bitnami/scripts/libvalidations.sh\n\n    {{- if .Values.externalAccess.enabled }}\n    {{- if eq .Values.externalAccess.service.type \"LoadBalancer\" }}\n    {{- if .Values.externalAccess.autoDiscovery.enabled }}\n    export MONGODB_ADVERTISED_HOSTNAME=\"$(<${SHARED_FILE})\"\n    {{- else }}\n    ID=\"${MY_POD_NAME#\"{{ $fullname }}-\"}\"\n    export MONGODB_ADVERTISED_HOSTNAME=$(echo '{{ .Values.externalAccess.service.loadBalancerIPs }}' | tr -d '[]' | cut -d ' ' -f \"$(($ID + 1))\")\n    {{- end }}\n    {{- else if eq .Values.externalAccess.service.type \"NodePort\" }}\n    ID=\"${MY_POD_NAME#\"{{ $fullname }}-\"}\"\n    if is_empty_value \"$MONGODB_ADVERTISED_PORT_NUMBER\"; then\n      export MONGODB_ADVERTISED_PORT_NUMBER=$(echo '{{ .Values.externalAccess.service.nodePorts }}' | tr -d '[]' | cut -d ' ' -f \"$(($ID + 1))\")\n    fi\n    {{- if .Values.externalAccess.service.domain }}\n    export MONGODB_ADVERTISED_HOSTNAME={{ .Values.externalAccess.service.domain }}\n    {{- else }}\n    export MONGODB_ADVERTISED_HOSTNAME=$MY_POD_HOST_IP\n    {{- end }}\n    {{- end }}\n    {{- end }}\n\n    {{- if .Values.replicaSetConfigurationSettings.enabled }}\n    # placed here before root password env is overwritten\n    # makes no assumption about starting state\n    # ensures that any stepDown or non-default starting state is handled\n    /scripts/replicaSetConfigurationSettings.sh &\n    {{- end }}\n\n    if is_empty_value \"$MONGODB_ADVERTISED_PORT_NUMBER\"; then\n      export MONGODB_ADVERTISED_PORT_NUMBER=\"$MONGODB_PORT_NUMBER\"\n    fi\n\n    info \"Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME\"\n    info \"Advertised Port: $MONGODB_ADVERTISED_PORT_NUMBER\"\n\n    # Check for existing replica set in case there is no data in the PVC\n    # This is for cases where the PVC is lost or for MongoDB caches without\n    # persistence\n    current_primary=\"\"\n    if is_dir_empty \"${MONGODB_DATA_DIR}/db\"; then\n      info \"Data dir empty, checking if the replica set already exists\"\n      {{- $replicaCount := int .Values.replicaCount }}\n      {{- $portNumber := int .Values.service.ports.mongodb }}\n      {{- $fullname := include \"mongodb.fullname\" . }}\n      {{- $releaseNamespace := include \"mongodb.namespace\" . }}\n      {{- $clusterDomain := .Values.clusterDomain }}\n      {{- $loadBalancerIPListLength := len .Values.externalAccess.service.loadBalancerIPs }}\n      {{- $mongoList := list }}\n      {{- range $e, $i := until $replicaCount }}\n      {{- $mongoList = append $mongoList (printf \"%s-%d.%s-headless.%s.svc.%s:%d\" $fullname $i $fullname $releaseNamespace $clusterDomain $portNumber) }}\n      {{- end }}\n      current_primary=$(mongosh admin --host \"{{ join \",\" $mongoList }}\" {{- if .Values.auth.enabled }} --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD{{- end }}{{- if .Values.tls.enabled}} --tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert{{- end }} --eval 'db.runCommand(\"ismaster\")' | awk -F\\' '/primary/ {print $2}')\n\n      if ! is_empty_value \"$current_primary\"; then\n        info \"Detected existing primary: ${current_primary}\"\n      fi\n    fi\n\n    if ! is_empty_value \"$current_primary\" && [[ \"$MONGODB_ADVERTISED_HOSTNAME:$MONGODB_ADVERTISED_PORT_NUMBER\" == \"$current_primary\" ]]; then\n        info \"Advertised name matches current primary, configuring node as a primary\"\n        export MONGODB_REPLICA_SET_MODE=\"primary\"\n    elif ! is_empty_value \"$current_primary\" && [[ \"$MONGODB_ADVERTISED_HOSTNAME:$MONGODB_ADVERTISED_PORT_NUMBER\" != \"$current_primary\" ]]; then\n        info \"Current primary is different from this node. Configuring the node as replica of ${current_primary}\"\n        export MONGODB_REPLICA_SET_MODE=\"secondary\"\n        export MONGODB_INITIAL_PRIMARY_HOST=\"${current_primary%:*}\"\n        export MONGODB_INITIAL_PRIMARY_PORT_NUMBER=\"${current_primary#*:}\"\n        export MONGODB_SET_SECONDARY_OK=\"yes\"\n    elif [[ \"$MY_POD_NAME\" = \"{{ $fullname }}-0\" ]]; then\n        info \"Pod name matches initial primary pod name, configuring node as a primary\"\n        export MONGODB_REPLICA_SET_MODE=\"primary\"\n    else\n        info \"Pod name doesn't match initial primary pod name, configuring node as a secondary\"\n        export MONGODB_REPLICA_SET_MODE=\"secondary\"\n        export MONGODB_INITIAL_PRIMARY_PORT_NUMBER=\"$MONGODB_PORT_NUMBER\"\n    fi\n\n    if [[ \"$MONGODB_REPLICA_SET_MODE\" == \"secondary\" ]]; then\n        export MONGODB_INITIAL_PRIMARY_ROOT_USER=\"$MONGODB_ROOT_USER\"\n        export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=\"$MONGODB_ROOT_PASSWORD\"\n        export MONGODB_ROOT_PASSWORD=\"\"\n        export MONGODB_EXTRA_USERNAMES=\"\"\n        export MONGODB_EXTRA_DATABASES=\"\"\n        export MONGODB_EXTRA_PASSWORDS=\"\"\n        export MONGODB_ROOT_PASSWORD_FILE=\"\"\n        export MONGODB_EXTRA_USERNAMES_FILE=\"\"\n        export MONGODB_EXTRA_DATABASES_FILE=\"\"\n        export MONGODB_EXTRA_PASSWORDS_FILE=\"\"\n    fi\n\n    exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh\n  setup-hidden.sh: |-\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/mongodb-env.sh\n\n    {{- if .Values.externalAccess.hidden.enabled }}\n    {{- if eq .Values.externalAccess.hidden.service.type \"LoadBalancer\" }}\n    {{- if .Values.externalAccess.autoDiscovery.enabled }}\n    export MONGODB_ADVERTISED_HOSTNAME=\"$(<${SHARED_FILE})\"\n    {{- else }}\n    ID=\"${MY_POD_NAME#\"{{ $fullname }}-hidden-\"}\"\n    export MONGODB_ADVERTISED_HOSTNAME=$(echo '{{ .Values.externalAccess.hidden.service.loadBalancerIPs }}' | tr -d '[]' | cut -d ' ' -f \"$(($ID + 1))\")\n    {{- end }}\n    {{- else if eq .Values.externalAccess.hidden.service.type \"NodePort\" }}\n    ID=\"${MY_POD_NAME#\"{{ $fullname }}-hidden-\"}\"\n    if is_empty_value \"$MONGODB_ADVERTISED_PORT_NUMBER\"; then\n      export MONGODB_ADVERTISED_PORT_NUMBER=$(echo '{{ .Values.externalAccess.service.nodePorts }}' | tr -d '[]' | cut -d ' ' -f \"$(($ID + 1))\")\n    fi\n    {{- if .Values.externalAccess.hidden.service.domain }}\n    export MONGODB_ADVERTISED_HOSTNAME={{ .Values.externalAccess.hidden.service.domain }}\n    {{- else }}\n    export MONGODB_ADVERTISED_HOSTNAME=$MY_POD_HOST_IP\n    {{- end }}\n    {{- end }}\n    {{- end }}\n\n    {{- if .Values.replicaSetConfigurationSettings.enabled }}\n    # placed here before root password env is overwritten\n    # makes no assumption about starting state\n    # ensures that any stepDown or non-default starting state is handled\n    /scripts/replicaSetConfigurationSettings.sh &\n    {{- end }}\n\n    echo \"Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME\"\n    echo \"Advertised Port: $MONGODB_ADVERTISED_PORT_NUMBER\"\n    echo \"Configuring node as a hidden node\"\n    export MONGODB_REPLICA_SET_MODE=\"hidden\"\n    export MONGODB_INITIAL_PRIMARY_ROOT_USER=\"$MONGODB_ROOT_USER\"\n    export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=\"$MONGODB_ROOT_PASSWORD\"\n    export MONGODB_INITIAL_PRIMARY_PORT_NUMBER=\"$MONGODB_PORT_NUMBER\"\n    export MONGODB_ROOT_PASSWORD=\"\"\n    export MONGODB_EXTRA_USERNAMES=\"\"\n    export MONGODB_EXTRA_DATABASES=\"\"\n    export MONGODB_EXTRA_PASSWORDS=\"\"\n    export MONGODB_ROOT_PASSWORD_FILE=\"\"\n    export MONGODB_EXTRA_USERNAMES_FILE=\"\"\n    export MONGODB_EXTRA_DATABASES_FILE=\"\"\n    export MONGODB_EXTRA_PASSWORDS_FILE=\"\"\n    exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh\n  {{- if .Values.replicaSetConfigurationSettings.enabled }}\n  replicaSetConfigurationSettings.sh: |-\n    #!/bin/bash\n    # This script to be called when pod starts.\n    # This script sets rs settings which can not be applied via conf file\n\n    function logger ()\n    #$1 is the line to be logged\n    {\n      echo \"replicaSetConfigurationSettings.sh -- ${1}\" >&1\n    }\n\n    SLEEP_PERIOD=10\n\n    {{- if and .Values.auth.enabled .Values.auth.rootPassword }}\n    usernameAndPassword=\"-u root -p ${MONGODB_ROOT_PASSWORD}\"\n    {{- else }}\n    usernameAndPassword=\"\"\n    {{- end }}\n\n    # load Values.replicaSetConfigurationSettings.configuration into associtive array which makes iterating and string manipulation easy\n    declare -A desiredRsConf\n    {{ range $setting, $value := .Values.replicaSetConfigurationSettings.configuration -}}\n    {{ printf \"desiredRsConf[%s]='%v'\" $setting $value }}\n    {{ end }}\n\n    rsConfWriteAttempts=0\n    rs_conf_configured_ok=unknown\n\n    while [[ \"${rs_conf_configured_ok}\" != \"true\" ]]; do\n\n      # give the rs setup a chance to succeed before attempting to read or configure\n      sleep ${SLEEP_PERIOD}\n\n      counter=0\n      while ! mongosh ${usernameAndPassword} --eval 'rs.conf()'; do\n        counter=$((${counter} +1))\n        logger \"not yet able to read rs.conf settings from the currently running rs (after ${counter} attempts)\"\n        sleep ${SLEEP_PERIOD}\n      done\n      counter=$((${counter} +1))\n      logger \"rs.conf settings have been read from the currently running rs (after ${counter} attempts)\"\n\n      # read rs.conf again and store it. settings format is '\"<key>\" : <value>,'\n      currentRsConf=$(mongosh ${usernameAndPassword} --eval 'rs.conf()')\n\n      desiredEqualsactual=unknown\n      settingsToConfigure=\"\"\n      for key in ${!desiredRsConf[@]}; do\n        value=${desiredRsConf[$key]}\n        if ! $(echo \"\\\"${currentRsConf}\"\\\" | grep -q -e \"${key}: ${value},\"); then\n           logger \"rs conf setting: ${key} value will be set to: ${value}\"\n           settingsToConfigure=\"${settingsToConfigure}cfg.settings.${key} = ${value}; \"\n           desiredEqualsactual=false\n        else\n          logger \"rs conf: ${key} is already at desired value: ${value}\"\n        fi\n      done\n\n      if [[ \"${desiredEqualsactual}\" != \"false\" ]]; then\n        logger \"replicaSetConfigurationSettings match the settings of the currently running rs\"\n        desiredEqualsactual=true\n        rs_conf_configured_ok=true\n        logger \"Current settings match desired settings (There have been ${rsConfWriteAttempts} attempts to write to mongoDB rs configuration)\"\n        exit\n      fi\n\n      # apply the settings only if this member is currently the mongo replicaset PRIMARY\n      # it might take a little time before any pod is PRIMARY\n      isMaster=unknown\n      if ! mongosh ${usernameAndPassword} --eval 'rs.isMaster()' | grep -q \"ismaster: true\"; then\n        isMaster=false\n        logger \"This node is not yet PRIMARY - replicaSetConfigurationSettings will only be set on the member that is currently PRIMARY\"\n      else\n        isMaster=true\n        logger \"This node is PRIMARY\"\n      fi\n\n      if [[ \"${isMaster}\" == \"true\" ]]; then\n        logger \"This node is currently PRIMARY - will apply rs.conf settings\"\n\n        # avoiding tricky string substitution with single quotes by making the eval string a set of vars\n        rsconf=\"cfg = rs.conf();\"\n        rsreconf=\"rs.reconfig(cfg);\"\n        rsCommand=\"${rsconf} ${settingsToConfigure} ${rsreconf}\"\n\n        mongosh ${usernameAndPassword} --eval \"${rsCommand}\"\n        if [ $? -ne 0 ]; then\n          logger \"Failed to apply mongodb cfg.settings configuration\"\n        else\n          logger \"mongodb replicaset cfg.settings configuration applied\"\n          logger \"Will check rs conf\"\n          # don't exit just yet - the settings will be checked in the next loop\n        fi\n        rsConfWriteAttempts=$((${rsConfWriteAttempts} + 1 ))\n      fi\n    done\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/replicaset/statefulset.yaml",
    "content": "{{- if eq .Values.architecture \"replicaset\" }}\n{{- $replicaCount := int .Values.replicaCount }}\n{{- $loadBalancerIPListLength := len .Values.externalAccess.service.loadBalancerIPs }}\n{{- if not (and .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $loadBalancerIPListLength )) (eq .Values.externalAccess.service.type \"LoadBalancer\")) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.labels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.labels \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  serviceName: {{ include \"mongodb.service.nameOverride\" . }}\n  podManagementPolicy: {{ .Values.podManagementPolicy }}\n  replicas: {{ .Values.replicaCount }}\n  {{- if .Values.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.updateStrategy | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: mongodb\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: mongodb\n        {{- if .Values.podLabels }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podLabels \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.commonLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      {{- if or (include \"mongodb.createConfigmap\" .) .Values.podAnnotations }}\n      annotations:\n        {{- if (include \"mongodb.createConfigmap\" .) }}\n        checksum/configuration: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    spec:\n      {{- include \"mongodb.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.schedulerName }}\n      schedulerName: {{ .Values.schedulerName | quote }}\n      {{- end }}\n      serviceAccountName: {{ template \"mongodb.serviceAccountName\" . }}\n      {{- if .Values.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAffinityPreset \"component\" \"mongodb\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAntiAffinityPreset \"component\" \"mongodb\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.nodeAffinityPreset.type \"key\" .Values.nodeAffinityPreset.key \"values\" .Values.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.topologySpreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n      {{- end }}\n      {{- if .Values.runtimeClassName }}\n      runtimeClassName: {{ .Values.runtimeClassName }}\n      {{- end }}\n      {{- if .Values.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{ if .Values.terminationGracePeriodSeconds }}\n      terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}\n      {{- end }}\n      {{- if or .Values.initContainers (and .Values.volumePermissions.enabled .Values.persistence.enabled) (and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled) .Values.tls.enabled }}\n      initContainers:\n        {{- if .Values.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}\n        - name: volume-permissions\n          image: {{ include \"mongodb.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n          args:\n            - -ec\n            - |\n              mkdir -p {{ printf \"%s/%s\" .Values.persistence.mountPath (default \"\" .Values.persistence.subPath) }}\n              chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf \"%s/%s\" .Values.persistence.mountPath (default \"\" .Values.persistence.subPath) }}\n              find  {{ printf \"%s/%s\" .Values.persistence.mountPath (default \"\" .Values.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name \".snapshot\" -not -name \"lost+found\" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}\n          {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.securityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: datadir\n              mountPath: {{ .Values.persistence.mountPath }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: generate-tls-certs\n          image: {{ include \"mongodb.tls.image\" . }}\n          imagePullPolicy: {{ .Values.tls.image.pullPolicy | quote }}\n          env:\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: MY_POD_HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n          volumeMounts:\n            {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n            - name: certs-volume\n              mountPath: /certs/CAs\n            {{- else }}\n            {{- range $index, $_ := .Values.tls.replicaset.existingSecrets }}\n            - name: mongodb-certs-{{ $index }}\n              mountPath: /certs-{{ $index }}\n            {{- end }}\n            {{- end }}\n            - name: certs\n              mountPath: /certs\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n          command:\n            - /bitnami/scripts/generate-certs.sh\n          args:\n            - -s {{ include \"mongodb.service.nameOverride\" . }}\n            {{- if .Values.externalAccess.service.loadBalancerIPs }}\n            - -i {{ join \",\" .Values.externalAccess.service.loadBalancerIPs }}\n            {{- end }}\n            {{- if .Values.tls.extraDnsNames }}\n            - -n {{ join \",\" .Values.tls.extraDnsNames }}\n            {{- end }}\n          {{- if .Values.tls.resources }}\n          resources: {{- toYaml .Values.tls.resources | nindent 12 }}\n          {{- end }}\n        {{- end }}\n        {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type \"LoadBalancer\") }}\n        - name: auto-discovery\n          image: {{ include \"mongodb.externalAccess.autoDiscovery.image\" . }}\n          imagePullPolicy: {{ .Values.externalAccess.autoDiscovery.image.pullPolicy | quote }}\n          command:\n            - /scripts/auto-discovery.sh\n          env:\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: SHARED_FILE\n              value: \"/shared/info.txt\"\n          {{- if .Values.externalAccess.autoDiscovery.resources }}\n          resources: {{- toYaml .Values.externalAccess.autoDiscovery.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: shared\n              mountPath: /shared\n            - name: scripts\n              mountPath: /scripts/auto-discovery.sh\n              subPath: auto-discovery.sh\n        {{- end }}\n      {{- end }}\n      containers:\n        - name: mongodb\n          image: {{ include \"mongodb.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /scripts/setup.sh\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type \"LoadBalancer\") }}\n            - name: SHARED_FILE\n              value: \"/shared/info.txt\"\n            {{- end }}\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: MY_POD_HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n            - name: K8S_SERVICE_NAME\n              value: \"{{ include \"mongodb.service.nameOverride\" . }}\"\n            - name: MONGODB_INITIAL_PRIMARY_HOST\n              value: {{ printf \"%s-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.%s\" (include \"mongodb.fullname\" .) .Values.clusterDomain }}\n            - name: MONGODB_REPLICA_SET_NAME\n              value: {{ .Values.replicaSetName | quote }}\n            {{- if and .Values.replicaSetHostnames (not .Values.externalAccess.enabled) }}\n            - name: MONGODB_ADVERTISED_HOSTNAME\n              value: \"$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}\"\n            {{- end }}\n            {{- $customUsers := include \"mongodb.customUsers\" . -}}\n            {{- $customDatabases := include \"mongodb.customDatabases\" . -}}\n            {{- if not (empty $customUsers) }}\n            - name: MONGODB_EXTRA_USERNAMES\n              value: {{ $customUsers | quote }}\n            {{- end }}\n            {{- if not (empty $customDatabases) }}\n            - name: MONGODB_EXTRA_DATABASES\n              value: {{ $customDatabases | quote }}\n            {{- end }}\n            {{- if .Values.auth.enabled }}\n            {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}\n            - name: MONGODB_EXTRA_PASSWORDS\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-passwords\n            {{- end }}\n            - name: MONGODB_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            - name: MONGODB_REPLICA_SET_KEY\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-replica-set-key\n            {{- end }}\n            {{- if and .Values.metrics.enabled (not (empty .Values.metrics.username)) }}\n            - name: MONGODB_METRICS_USERNAME\n              value: {{ .Values.metrics.username | quote }}\n            {{- if .Values.auth.enabled }}\n            - name: MONGODB_METRICS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-metrics-password\n            {{- end }}\n            {{- end }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            - name: MONGODB_SYSTEM_LOG_VERBOSITY\n              value: {{ .Values.systemLogVerbosity | quote }}\n            - name: MONGODB_DISABLE_SYSTEM_LOG\n              value: {{ ternary \"yes\" \"no\" .Values.disableSystemLog | quote }}\n            - name: MONGODB_DISABLE_JAVASCRIPT\n              value: {{ ternary \"yes\" \"no\" .Values.disableJavascript | quote }}\n            - name: MONGODB_ENABLE_JOURNAL\n              value: {{ ternary \"yes\" \"no\" .Values.enableJournal | quote  }}\n            - name: MONGODB_PORT_NUMBER\n              value: {{ .Values.containerPorts.mongodb | quote }}\n            - name: MONGODB_ENABLE_IPV6\n              value: {{ ternary \"yes\" \"no\" .Values.enableIPv6 | quote }}\n            - name: MONGODB_ENABLE_DIRECTORY_PER_DB\n              value: {{ ternary \"yes\" \"no\" .Values.directoryPerDB | quote }}\n            {{- $extraFlags := .Values.extraFlags | join \" \" -}}\n            {{- if .Values.tls.enabled }}\n              {{- $extraFlags = printf \"--tlsMode=%s --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert %s\" .Values.tls.mode $extraFlags  }}\n            {{- end }}\n            {{- if ne $extraFlags \"\" }}\n            - name: MONGODB_EXTRA_FLAGS\n              value: {{ $extraFlags | quote }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: MONGODB_CLIENT_EXTRA_FLAGS\n              value: --tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert\n            {{- end }}\n            {{- if .Values.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.extraEnvVarsCM .Values.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ tpl .Values.extraEnvVarsCM . | quote }}\n            {{- end }}\n            {{- if .Values.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ tpl .Values.extraEnvVarsSecret . | quote }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: mongodb\n              containerPort: {{ .Values.containerPorts.mongodb }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/ping-mongodb.sh\n          {{- end }}\n          {{- if .Values.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/readiness-probe.sh\n          {{- end }}\n          {{- if .Values.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/startup-probe.sh\n          {{- end }}\n          {{- end }}\n          {{- if .Values.resources }}\n          resources: {{- toYaml .Values.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: datadir\n              mountPath: {{ .Values.persistence.mountPath }}\n              subPath: {{ .Values.persistence.subPath }}\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n            {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n            - name: custom-init-scripts\n              mountPath: /docker-entrypoint-initdb.d\n            {{- end }}\n            {{- if or .Values.configuration .Values.existingConfigmap }}\n            - name: config\n              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf\n              subPath: mongodb.conf\n            {{- end }}\n            - name: scripts\n              mountPath: /scripts/setup.sh\n              subPath: setup.sh\n            {{ if .Values.replicaSetConfigurationSettings.enabled }}\n            - name: scripts\n              mountPath: /scripts/replicaSetConfigurationSettings.sh\n              subPath: replicaSetConfigurationSettings.sh\n            {{- end }}\n            {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type \"LoadBalancer\") }}\n            - name: shared\n              mountPath: /shared\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n            {{- if .Values.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ template \"mongodb.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -ec\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - |\n              /bin/mongodb_exporter --collect-all --compatible-mode --web.listen-address \":{{ .Values.metrics.containerPort }}\" --mongodb.uri \"{{ include \"mongodb.mongodb_exporter.uri\" . }}\" {{ .Values.metrics.extraFlags }}\n          {{- end }}\n          env:\n            {{- if .Values.auth.enabled }}\n            {{- if not .Values.metrics.username }}\n            - name: MONGODB_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            {{- else }}\n            - name: MONGODB_METRICS_USERNAME\n              value: {{ .Values.metrics.username | quote }}\n            - name: MONGODB_METRICS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-metrics-password\n            {{- end }}\n            {{- end }}\n          volumeMounts:\n            {{- if .Values.tls.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: {{ .Values.metrics.containerPort }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.metrics.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: metrics\n          {{- end }}\n          {{- end }}\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n        {{- end }}\n        {{- if .Values.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        - name: common-scripts\n          configMap:\n            name: {{ printf \"%s-common-scripts\" (include \"mongodb.fullname\" .) }}\n            defaultMode: 0550\n        {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n        - name: custom-init-scripts\n          configMap:\n            name: {{ template \"mongodb.initdbScriptsCM\" . }}\n        {{- end }}\n        {{- if or .Values.configuration .Values.existingConfigmap }}\n        - name: config\n          configMap:\n            name: {{ include \"mongodb.configmapName\" . }}\n        {{- end }}\n        {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type \"LoadBalancer\") }}\n        - name: shared\n          emptyDir: {}\n        {{- end }}\n        - name: scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"mongodb.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: certs\n          emptyDir: {}\n        {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n        - name: certs-volume\n          secret:\n            secretName: {{ template \"mongodb.tlsSecretName\" . }}\n            items:\n            - key: mongodb-ca-cert\n              path: mongodb-ca-cert\n              mode: 0600\n            - key: mongodb-ca-key\n              path: mongodb-ca-key\n              mode: 0600\n        {{- else }}\n        {{- range $index, $secret := .Values.tls.replicaset.existingSecrets }}\n        - name: mongodb-certs-{{ $index }}\n          secret:\n            secretName: {{ include \"common.tplvalues.render\" ( dict \"value\" $secret \"context\" $) }}\n            defaultMode: 256\n        {{- end }}\n        {{- end }}\n        {{- end }}\n  {{- if not .Values.persistence.enabled }}\n        - name: datadir\n          {{- if .Values.persistence.medium }}\n          emptyDir:\n            medium: {{ .Values.persistence.medium | quote }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n        {{- if .Values.persistence.annotations }}\n        annotations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.annotations \"context\" $) | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.persistence.size | quote }}\n            {{- if .Values.persistence.volumeClaimTemplates.requests }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.volumeClaimTemplates.requests \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.persistence.volumeClaimTemplates.dataSource }}\n        dataSource: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.volumeClaimTemplates.dataSource \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- if .Values.persistence.volumeClaimTemplates.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.volumeClaimTemplates.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{ include \"common.storage.class\" (dict \"persistence\" .Values.persistence \"global\" .Values.global) }}\n  {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/replicaset/svc.yaml",
    "content": "{{- if and (eq .Values.architecture \"replicaset\") .Values.externalAccess.enabled (eq .Values.externalAccess.service.type \"ClusterIP\") }}\n\n{{- $fullName := include \"mongodb.fullname\" . }}\n{{- $replicaCount := .Values.replicaCount | int }}\n{{- $root := . }}\n\n{{- range $i, $e := until $replicaCount }}\n{{- $targetPod := printf \"%s-%d\" (printf \"%s\" $fullName) $i }}\n{{- $_ := set $ \"targetPod\" $targetPod }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-%d\" $fullName $i }}\n  namespace: {{ include \"mongodb.namespace\" $ }}\n  labels: {{- include \"common.labels.standard\" $ | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if $root.Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or $root.Values.service.annotations $root.Values.commonAnnotations }}\n  annotations:\n    {{- if $root.Values.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if $root.Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $root.Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  ports:\n    - name: {{ $root.Values.service.portName | quote }}\n      port: {{ $root.Values.service.ports.mongodb }}\n      targetPort: mongodb\n    {{- if $root.Values.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" $root.Values.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" $ | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    statefulset.kubernetes.io/pod-name: {{ $targetPod }}\n---\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/role.yaml",
    "content": "{{- if .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: Role\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n  {{- if .Values.commonLabels }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n  {{- end }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n{{- if .Values.rbac.rules }}\n{{- include \"common.tplvalues.render\" ( dict \"value\" .Values.rbac.rules \"context\" $ ) | nindent 2 }}\n{{- end -}}\n{{- $pspAvailable := (semverCompare \"<1.25-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- if and $pspAvailable .Values.podSecurityPolicy.create }}\n  - apiGroups: ['{{ template \"podSecurityPolicy.apiGroup\" . }}']\n    resources: ['podsecuritypolicies']\n    verbs: ['use']\n    resourceNames: [{{ include \"mongodb.fullname\" . }}]\n{{- end -}}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/rolebinding.yaml",
    "content": "{{- if and .Values.serviceAccount.create .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: RoleBinding\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n  {{- if .Values.commonLabels }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n  {{- end }}\nroleRef:\n  kind: Role\n  name: {{ include \"mongodb.fullname\" . }}\n  apiGroup: rbac.authorization.k8s.io\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"mongodb.serviceAccountName\" . }}\n    namespace: {{ include \"mongodb.namespace\" . | quote }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/secrets-ca.yaml",
    "content": "{{- if (include \"mongodb.createTlsSecret\" .) }}\n{{- $fullname := include \"mongodb.fullname\" . }}\n{{- $releaseNamespace := .Release.Namespace }}\n{{- $clusterDomain := .Values.clusterDomain }}\n{{- $cn := printf \"%s.%s.svc.%s\" $fullname .Release.Namespace $clusterDomain }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"mongodb.tlsSecretName\" . }}\n  namespace: {{ template \"mongodb.namespace\" . }}\n  labels:\n    {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  {{- if or .Values.tls.caCert .Values.tls.caKey (not .Values.tls.autoGenerated) }}\n  {{- $ca := buildCustomCert (required \"A valid .Values.tls.caCert is required!\" .Values.tls.caCert) (required \"A valid .Values.tls.caKey is required!\" .Values.tls.caKey) }}\n  {{- $cert := genSignedCert $cn nil nil 3650 $ca }}\n  {{- $pem := printf \"%s%s\" $cert.Cert $cert.Key }}\n  mongodb-ca-cert: {{ b64enc $ca.Cert }}\n  mongodb-ca-key: {{ b64enc $ca.Key }}\n  {{- else }}\n  {{- $ca:= genCA \"myMongo-ca\" 3650 }}\n  {{- $cert := genSignedCert $cn nil nil 3650 $ca }}\n  {{- $pem := printf \"%s%s\" $cert.Cert $cert.Key }}\n  mongodb-ca-cert: {{ b64enc $ca.Cert }}\n  mongodb-ca-key: {{ b64enc $ca.Key }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/secrets.yaml",
    "content": "{{- if (include \"mongodb.createSecret\" .) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ template \"mongodb.namespace\" . }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  mongodb-root-password: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"mongodb.fullname\" .) \"key\" \"mongodb-root-password\" \"providedValues\" (list \"auth.rootPassword\" ) \"context\" $) }}\n  {{- $customUsers := include \"mongodb.customUsers\" . -}}\n  {{- $customDatabases := include \"mongodb.customDatabases\" . -}}\n  {{- $customPasswords := include \"mongodb.customPasswords\" . -}}\n  {{- $passwordList := list -}}\n  {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) -}}\n  {{- if not (empty $customPasswords) -}}\n  {{- $passwordList = $customPasswords -}}\n  {{- else -}}\n  {{- $customUsersList := splitList \",\" $customUsers -}}\n  {{- $customPasswordsList := list -}}\n  {{- range $customUsersList -}}\n  {{- $customPasswordsList = append $customPasswordsList (randAlphaNum 10) -}}\n  {{- end -}}\n  {{- $passwordList = (join \",\" $customPasswordsList) -}}\n  {{- end }}\n  mongodb-passwords: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"mongodb.fullname\" .) \"key\" \"mongodb-passwords\" \"providedValues\" (list \"mongodbPasswords\") \"context\" (set (deepCopy $) \"Values\" (dict \"mongodbPasswords\" $passwordList))) }}\n  {{- end }}\n  {{- if .Values.metrics.username }}\n  mongodb-metrics-password: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"mongodb.fullname\" .) \"key\" \"mongodb-metrics-password\" \"providedValues\" (list \"metrics.password\" ) \"context\" $) }}\n  {{- end }}\n  {{- if eq .Values.architecture \"replicaset\" }}\n  mongodb-replica-set-key: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"mongodb.fullname\" .) \"key\" \"mongodb-replica-set-key\" \"providedValues\" (list \"auth.replicaSetKey\" ) \"context\" $) }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"mongodb.serviceAccountName\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n  {{- if .Values.commonLabels }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n  {{- end }}\n  {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.serviceAccount.annotations }}\n    {{ toYaml .Values.serviceAccount.annotations | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nsecrets:\n  - name: {{ template \"mongodb.fullname\" . }}\nautomountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/servicemonitor.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.serviceMonitor.namespace\" . }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.serviceMonitor.labels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.labels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    app.kubernetes.io/component: metrics\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.metrics.serviceMonitor.jobLabel }}\n  jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      {{- if .Values.metrics.serviceMonitor.selector }}\n      {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.selector \"context\" $) | nindent 6 }}\n      {{- end }}\n      app.kubernetes.io/component: metrics\n  endpoints:\n    - port: http-metrics\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.relabelings }}\n      relabelings: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.relabelings \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.metricRelabelings }}\n      metricRelabelings: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.metricRelabelings \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.honorLabels }}\n      honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n      {{- end }}\n  namespaceSelector:\n    matchNames:\n      - \"{{ include \"mongodb.namespace\" . }}\"\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/standalone/dep-sts.yaml",
    "content": "{{- if not (eq .Values.architecture \"replicaset\") }}\napiVersion: {{ if .Values.useStatefulSet }}{{ include \"common.capabilities.statefulset.apiVersion\" . }}{{- else }}{{ include \"common.capabilities.deployment.apiVersion\" . }}{{- end }}\nkind: {{ if .Values.useStatefulSet }}StatefulSet{{- else }}Deployment{{- end }}\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.labels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.labels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  replicas: 1\n  {{- if .Values.useStatefulSet }}\n  serviceName: {{ include \"mongodb.fullname\" . }}\n  {{- end }}\n  {{- if .Values.updateStrategy}}\n  {{- if .Values.useStatefulSet }}\n  updateStrategy:\n  {{- else }}\n  strategy:\n  {{- end }}\n    {{- toYaml .Values.updateStrategy | nindent 4 }}\n  {{- end}}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: mongodb\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: mongodb\n        {{- if .Values.podLabels }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podLabels \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.commonLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      {{- if or (include \"mongodb.createConfigmap\" .) .Values.podAnnotations }}\n      annotations:\n        {{- if (include \"mongodb.createConfigmap\" .) }}\n        checksum/configuration: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    spec:\n      {{- include \"mongodb.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.schedulerName }}\n      schedulerName: {{ .Values.schedulerName | quote }}\n      {{- end }}\n      serviceAccountName: {{ template \"mongodb.serviceAccountName\" . }}\n      {{- if .Values.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAffinityPreset \"component\" \"mongodb\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAntiAffinityPreset \"component\" \"mongodb\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.nodeAffinityPreset.type \"key\" .Values.nodeAffinityPreset.key \"values\" .Values.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n      {{- end }}\n      {{- if .Values.runtimeClassName }}\n      runtimeClassName: {{ .Values.runtimeClassName }}\n      {{- end }}\n      {{- if .Values.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{ if .Values.terminationGracePeriodSeconds }}\n      terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}\n      {{- end }}\n      {{- if or .Values.initContainers (and .Values.volumePermissions.enabled .Values.persistence.enabled) .Values.tls.enabled }}\n      initContainers:\n        {{- if .Values.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}\n        - name: volume-permissions\n          image: {{ include \"mongodb.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n          args:\n            - -ec\n            - |\n              mkdir -p {{ printf \"%s/%s\" .Values.persistence.mountPath (default \"\" .Values.persistence.subPath) }}\n              chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf \"%s/%s\" .Values.persistence.mountPath (default \"\" .Values.persistence.subPath) }}\n              find  {{ printf \"%s/%s\" .Values.persistence.mountPath (default \"\" .Values.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name \".snapshot\" -not -name \"lost+found\" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}\n          {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.securityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: datadir\n              mountPath: {{ .Values.persistence.mountPath }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: generate-tls-certs\n          image: {{ include \"mongodb.tls.image\" . }}\n          imagePullPolicy: {{ .Values.tls.image.pullPolicy | quote }}\n          env:\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: MY_POD_HOST_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.hostIP\n          volumeMounts:\n            {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n            - name: certs-volume\n              mountPath: /certs/CAs\n            {{- else }}\n            - name: mongodb-certs-0\n              mountPath: /certs-0\n            {{- end }}\n            - name: certs\n              mountPath: /certs\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n          command:\n            - /bitnami/scripts/generate-certs.sh\n          args:\n            - -s {{ include \"mongodb.service.nameOverride\" . }}\n            {{- if .Values.externalAccess.service.loadBalancerIPs }}\n            - -i {{ join \",\" .Values.externalAccess.service.loadBalancerIPs }}\n            {{- end }}\n            {{- if .Values.tls.extraDnsNames }}\n            - -n {{ join \",\" .Values.tls.extraDnsNames }}\n            {{- end }}\n          {{- if .Values.tls.resources }}\n          resources: {{- toYaml .Values.tls.resources | nindent 12 }}\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      containers:\n        - name: mongodb\n          image: {{ include \"mongodb.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            {{- $customUsers := include \"mongodb.customUsers\" . -}}\n            {{- $customDatabases := include \"mongodb.customDatabases\" . -}}\n            {{- if not (empty $customUsers) }}\n            - name: MONGODB_EXTRA_USERNAMES\n              value: {{ $customUsers | quote }}\n            {{- end }}\n            {{- if not (empty $customDatabases) }}\n            - name: MONGODB_EXTRA_DATABASES\n              value: {{ $customDatabases | quote }}\n            {{- end }}\n            {{- if .Values.auth.enabled }}\n            {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}\n            - name: MONGODB_EXTRA_PASSWORDS\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-passwords\n            {{- end }}\n            - name: MONGODB_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            {{- end }}\n            {{- if and .Values.metrics.enabled (not (empty .Values.metrics.username)) }}\n            - name: MONGODB_METRICS_USERNAME\n              value: {{ .Values.metrics.username | quote }}\n            {{- if .Values.auth.enabled }}\n            - name: MONGODB_METRICS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-metrics-password\n            {{- end }}\n            {{- end }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            - name: MONGODB_SYSTEM_LOG_VERBOSITY\n              value: {{ .Values.systemLogVerbosity | quote }}\n            - name: MONGODB_DISABLE_SYSTEM_LOG\n              value: {{ ternary \"yes\" \"no\" .Values.disableSystemLog | quote }}\n            - name: MONGODB_DISABLE_JAVASCRIPT\n              value: {{ ternary \"yes\" \"no\" .Values.disableJavascript | quote }}\n            - name: MONGODB_ENABLE_JOURNAL\n              value: {{ ternary \"yes\" \"no\" .Values.enableJournal | quote  }}\n            - name: MONGODB_PORT_NUMBER\n              value: {{ .Values.containerPorts.mongodb | quote }}\n            - name: MONGODB_ENABLE_IPV6\n              value: {{ ternary \"yes\" \"no\" .Values.enableIPv6 | quote }}\n            - name: MONGODB_ENABLE_DIRECTORY_PER_DB\n              value: {{ ternary \"yes\" \"no\" .Values.directoryPerDB | quote }}\n            {{- $extraFlags := .Values.extraFlags | join \" \" -}}\n            {{- if .Values.tls.enabled }}\n              {{- $extraFlags = printf \"--tlsMode=%s --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert %s\" .Values.tls.mode $extraFlags  }}\n            {{- end }}\n            {{- if ne $extraFlags \"\" }}\n            - name: MONGODB_EXTRA_FLAGS\n              value: {{ $extraFlags | quote }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: MONGODB_CLIENT_EXTRA_FLAGS\n              value: --tls --tlsCertificateKeyFile=/certs/mongodb.pem --tlsCAFile=/certs/mongodb-ca-cert\n            {{- end }}\n            {{- if .Values.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.extraEnvVarsCM .Values.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ tpl .Values.extraEnvVarsCM . | quote }}\n            {{- end }}\n            {{- if .Values.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ tpl .Values.extraEnvVarsSecret . | quote }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: mongodb\n              containerPort: {{ .Values.containerPorts.mongodb }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/ping-mongodb.sh\n          {{- end }}\n          {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/readiness-probe.sh\n          {{- end }}\n          {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bitnami/scripts/startup-probe.sh\n          {{- end }}\n          {{- end }}\n          {{- if .Values.resources }}\n          resources: {{- toYaml .Values.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: datadir\n              mountPath: {{ .Values.persistence.mountPath }}\n              subPath: {{ .Values.persistence.subPath }}\n            - name: common-scripts\n              mountPath: /bitnami/scripts\n            {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n            - name: custom-init-scripts\n              mountPath: /docker-entrypoint-initdb.d\n            {{- end }}\n            {{- if or .Values.configuration .Values.existingConfigmap }}\n            - name: config\n              mountPath: /opt/bitnami/mongodb/conf/mongodb.conf\n              subPath: mongodb.conf\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n            {{- if .Values.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ template \"mongodb.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -ec\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - |\n              /bin/mongodb_exporter --collect-all --compatible-mode --web.listen-address \":{{ .Values.metrics.containerPort }}\" --mongodb.uri \"{{ include \"mongodb.mongodb_exporter.uri\" . }}\" {{ .Values.metrics.extraFlags }}\n          {{- end }}\n          env:\n            {{- if .Values.auth.enabled }}\n            {{- if not .Values.metrics.username }}\n            - name: MONGODB_ROOT_USER\n              value: {{ .Values.auth.rootUser | quote }}\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-root-password\n            {{- else }}\n            - name: MONGODB_METRICS_USERNAME\n              value: {{ .Values.metrics.username | quote }}\n            - name: MONGODB_METRICS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mongodb.secretName\" . }}\n                  key: mongodb-metrics-password\n            {{- end }}\n            {{- end }}\n          volumeMounts:\n            {{- if .Values.tls.enabled }}\n            - name: certs\n              mountPath: /certs\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: {{ .Values.metrics.containerPort }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.metrics.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.metrics.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: metrics\n          {{- end }}\n          {{- end }}\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n        {{- end }}\n        {{- if .Values.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        - name: common-scripts\n          configMap:\n            name: {{ printf \"%s-common-scripts\" (include \"mongodb.fullname\" .) }}\n            defaultMode: 0550\n        {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n        - name: custom-init-scripts\n          configMap:\n            name: {{ template \"mongodb.initdbScriptsCM\" . }}\n        {{- end }}\n        {{- if or .Values.configuration .Values.existingConfigmap }}\n        - name: config\n          configMap:\n            name: {{ include \"mongodb.configmapName\" . }}\n        {{- end }}\n        {{- if .Values.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: certs\n          emptyDir: {}\n        {{- if (include \"mongodb.autoGenerateCerts\" .) }}\n        - name: certs-volume\n          secret:\n            secretName: {{ template \"mongodb.tlsSecretName\" . }}\n            items:\n            - key: mongodb-ca-cert\n              path: mongodb-ca-cert\n              mode: 0600\n            - key: mongodb-ca-key\n              path: mongodb-ca-key\n              mode: 0600\n        {{- else }}\n        - name: mongodb-certs-0\n          secret:\n            secretName: {{ include \"common.tplvalues.render\" ( dict \"value\" .Values.tls.standalone.existingSecret \"context\" $) }}\n            defaultMode: 256\n        {{- end }}\n        {{- end }}\n  {{- if not .Values.persistence.enabled }}\n        - name: datadir\n          {{- if .Values.persistence.medium }}\n          emptyDir:\n            medium: {{ .Values.persistence.medium | quote }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n  {{- else if .Values.persistence.existingClaim }}\n        - name: datadir\n          persistentVolumeClaim:\n            claimName: {{ printf \"%s\" (tpl .Values.persistence.existingClaim .) }}\n  {{- else if not .Values.useStatefulSet }}\n        - name: datadir\n          persistentVolumeClaim:\n            claimName: {{ template \"mongodb.fullname\" . }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n        {{- if .Values.persistence.annotations }}\n        annotations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.annotations \"context\" $) | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.persistence.size | quote }}\n        {{- if .Values.persistence.volumeClaimTemplates.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.volumeClaimTemplates.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{ include \"common.storage.class\" (dict \"persistence\" .Values.persistence \"global\" .Values.global) }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/standalone/pvc.yaml",
    "content": "{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (not (eq .Values.architecture \"replicaset\")) (not .Values.useStatefulSet) }}\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.persistence.annotations  .Values.commonAnnotations .Values.persistence.resourcePolicy }}\n  annotations:\n  {{- if .Values.commonAnnotations }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\n  {{- if .Values.persistence.annotations }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.persistence.annotations \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if .Values.persistence.resourcePolicy }}\n    helm.sh/resource-policy: {{ .Values.persistence.resourcePolicy | quote }}\n  {{- end }}\n  {{- end }}\nspec:\n  accessModes:\n  {{- range .Values.persistence.accessModes }}\n    - {{ . | quote }}\n  {{- end }}\n  resources:\n    requests:\n      storage: {{ .Values.persistence.size | quote }}\n  {{ include \"common.storage.class\" (dict \"persistence\" .Values.persistence \"global\" .Values.global) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/templates/standalone/svc.yaml",
    "content": "{{- if not (eq .Values.architecture \"replicaset\") }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mongodb.fullname\" . }}\n  namespace: {{ include \"mongodb.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.service.type }}\n  {{- if and (eq .Values.service.type \"ClusterIP\") .Values.service.clusterIP }}\n  clusterIP: {{ .Values.service.clusterIP }}\n  {{- end }}\n  {{- if and (eq .Values.service.type \"LoadBalancer\") .Values.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.service.type \"LoadBalancer\") .Values.service.loadBalancerClass }}\n  loadBalancerClass: {{ .Values.service.loadBalancerClass }}\n  {{- end }}\n  {{- if .Values.service.externalIPs }}\n  externalIPs: {{ toYaml .Values.service.externalIPs | nindent 4 }}\n  {{- end }}\n  {{- if .Values.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- if .Values.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if (or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\")) }}\n  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  ports:\n    - name: {{ .Values.service.portName | quote }}\n      port: {{ .Values.service.ports.mongodb }}\n      targetPort: mongodb\n      {{- if and (or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\")) .Values.service.nodePorts.mongodb }}\n      nodePort: {{ .Values.service.nodePorts.mongodb }}\n      {{- else if eq .Values.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n    {{- if .Values.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: mongodb\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/values.schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"architecture\": {\n      \"type\": \"string\",\n      \"title\": \"MongoDB&reg; architecture\",\n      \"form\": true,\n      \"description\": \"Allowed values: `standalone` or `replicaset`\"\n    },\n    \"auth\": {\n      \"type\": \"object\",\n      \"title\": \"Authentication configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"title\": \"Enable Authentication\",\n          \"form\": true\n        },\n        \"rootUser\": {\n          \"type\": \"string\",\n          \"title\": \"MongoDB&reg; admin user\",\n          \"form\": true,\n          \"description\": \"Name of the admin user. Default is root\"\n        },\n        \"rootPassword\": {\n          \"type\": \"string\",\n          \"title\": \"MongoDB&reg; admin password\",\n          \"form\": true,\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\",\n          \"hidden\": {\n            \"value\": false,\n            \"path\": \"auth/enabled\"\n          }\n        },\n        \"database\": {\n          \"type\": \"string\",\n          \"title\": \"MongoDB&reg; custom database\",\n          \"description\": \"Name of the custom database to be created during the 1st initialization of MongoDB&reg;\",\n          \"form\": true\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"title\": \"MongoDB&reg; custom user\",\n          \"description\": \"Name of the custom user to be created during the 1st initialization of MongoDB&reg;. This user only has permissions on the MongoDB&reg; custom database\",\n          \"form\": true\n        },\n        \"password\": {\n          \"type\": \"string\",\n          \"title\": \"Password for MongoDB&reg; custom user\",\n          \"form\": true,\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\",\n          \"hidden\": {\n            \"value\": false,\n            \"path\": \"auth/enabled\"\n          }\n        },\n        \"replicaSetKey\": {\n          \"type\": \"string\",\n          \"title\": \"Key used for replica set authentication\",\n          \"form\": true,\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\",\n          \"hidden\": {\n            \"value\": \"standalone\",\n            \"path\": \"architecture\"\n          }\n        }\n      }\n    },\n    \"replicaCount\": {\n      \"type\": \"integer\",\n      \"form\": true,\n      \"title\": \"Number of MongoDB&reg; replicas\",\n      \"hidden\": {\n        \"value\": \"standalone\",\n        \"path\": \"architecture\"\n      }\n    },\n    \"configuration\": {\n      \"type\": \"string\",\n      \"title\": \"MongoDB&reg; Custom Configuration\",\n      \"form\": true,\n      \"render\": \"textArea\"\n    },\n    \"arbiter\": {\n      \"type\": \"object\",\n      \"title\": \"Arbiter configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"configuration\": {\n          \"type\": \"string\",\n          \"title\": \"Arbiter Custom Configuration\",\n          \"form\": true,\n          \"render\": \"textArea\",\n          \"hidden\": {\n            \"value\": \"standalone\",\n            \"path\": \"architecture\"\n          }\n        }\n      }\n    },\n    \"persistence\": {\n      \"type\": \"object\",\n      \"title\": \"Persistence configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Enable persistence\",\n          \"description\": \"Enable persistence using Persistent Volume Claims\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"title\": \"Persistent Volume Size\",\n          \"form\": true,\n          \"render\": \"slider\",\n          \"sliderMin\": 1,\n          \"sliderMax\": 100,\n          \"sliderUnit\": \"Gi\",\n          \"hidden\": {\n            \"value\": false,\n            \"path\": \"persistence/enabled\"\n          }\n        }\n      }\n    },\n    \"volumePermissions\": {\n      \"type\": \"object\",\n      \"hidden\": {\n        \"value\": false,\n        \"path\": \"persistence/enabled\"\n      },\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Enable Init Containers\",\n          \"description\": \"Use an init container to set required folder permissions on the data volume before mounting it in the final destination\"\n        }\n      }\n    },\n    \"metrics\": {\n      \"type\": \"object\",\n      \"form\": true,\n      \"title\": \"Prometheus metrics details\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"title\": \"Create Prometheus metrics exporter\",\n          \"description\": \"Create a side-car container to expose Prometheus metrics\",\n          \"form\": true\n        },\n        \"serviceMonitor\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"title\": \"Create Prometheus Operator ServiceMonitor\",\n              \"description\": \"Create a ServiceMonitor to track metrics using Prometheus Operator\",\n              \"form\": true,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"metrics/enabled\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mongodb/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n##\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n## @param global.namespaceOverride Override the namespace for resource deployed by the chart, but can itself be overridden by the local namespaceOverride\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n  namespaceOverride: \"\"\n\n## @section Common parameters\n##\n\n## @param nameOverride String to partially override mongodb.fullname template (will maintain the release name)\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override mongodb.fullname template\n##\nfullnameOverride: \"\"\n## @param namespaceOverride String to fully override common.names.namespace\n##\nnamespaceOverride: \"\"\n## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)\n##\nkubeVersion: \"\"\n## @param clusterDomain Default Kubernetes cluster domain\n##\nclusterDomain: cluster.local\n## @param extraDeploy Array of extra objects to deploy with the release\n## extraDeploy:\n## This needs to be uncommented and added to 'extraDeploy' in order to use the replicaset 'mongo-labeler' sidecar\n## for dynamically discovering the mongodb primary pod\n## suggestion is to use a hard-coded and predictable TCP port for the primary mongodb pod (here is 30001, choose your own)\n## - apiVersion: v1\n##   kind: Service\n##   metadata:\n##     name: mongodb-primary\n##     namespace: the-mongodb-namespace\n##     labels:\n##       app.kubernetes.io/component: mongodb\n##       app.kubernetes.io/instance: mongodb\n##       app.kubernetes.io/managed-by: Helm\n##       app.kubernetes.io/name: mongodb\n##   spec:\n##     type: NodePort\n##     externalTrafficPolicy: Cluster\n##     ports:\n##       - name: mongodb\n##         port: 30001\n##         nodePort: 30001\n##         protocol: TCP\n##         targetPort: mongodb\n##     selector:\n##       app.kubernetes.io/component: mongodb\n##       app.kubernetes.io/instance: mongodb\n##       app.kubernetes.io/name: mongodb\n##       primary: \"true\"\n##\nextraDeploy: []\n## @param commonLabels Add labels to all the deployed resources (sub-charts are not considered). Evaluated as a template\n##\ncommonLabels: {}\n## @param commonAnnotations Common annotations to add to all Mongo resources (sub-charts are not considered). Evaluated as a template\n##\ncommonAnnotations: {}\n\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section MongoDB(&reg;) parameters\n##\n\n## Bitnami MongoDB(&reg;) image\n## ref: https://hub.docker.com/r/bitnami/mongodb/tags/\n## @param image.registry MongoDB(&reg;) image registry\n## @param image.repository MongoDB(&reg;) image registry\n## @param image.tag MongoDB(&reg;) image tag (immutable tags are recommended)\n## @param image.digest MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n## @param image.pullPolicy MongoDB(&reg;) image pull policy\n## @param image.pullSecrets Specify docker-registry secret names as an array\n## @param image.debug Set to true if you would like to see extra information on logs\n##\nimage:\n  registry: registry.cn-beijing.aliyuncs.com\n  repository: opsany/mongodb\n  tag: 6.0.3-debian-11-r0\n  digest: \"\"\n  ## Specify a imagePullPolicy\n  ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## e.g:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n  ## Set to true if you would like to see extra information on logs\n  ##\n  debug: false\n\n## @param schedulerName Name of the scheduler (other than default) to dispatch pods\n## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n##\nschedulerName: \"\"\n## @param architecture MongoDB(&reg;) architecture (`standalone` or `replicaset`)\n##\narchitecture: standalone\n## @param useStatefulSet Set to true to use a StatefulSet instead of a Deployment (only when `architecture=standalone`)\n##\nuseStatefulSet: true\n## MongoDB(&reg;) Authentication parameters\n##\nauth:\n  ## @param auth.enabled Enable authentication\n  ## ref: https://docs.mongodb.com/manual/tutorial/enable-authentication/\n  ##\n  enabled: true\n  ## @param auth.rootUser MongoDB(&reg;) root user\n  ##\n  rootUser: root\n  ## @param auth.rootPassword MongoDB(&reg;) root password\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mongodb#setting-the-root-user-and-password-on-first-run\n  ##\n  rootPassword: \"MONGO_INITDB_ROOT_PASSWORD\"\n  ## MongoDB(&reg;) custom users and databases\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mongodb#creating-a-user-and-database-on-first-run\n  ## @param auth.usernames List of custom users to be created during the initialization\n  ## @param auth.passwords List of passwords for the custom users set at `auth.usernames`\n  ## @param auth.databases List of custom databases to be created during the initialization\n  ##\n  usernames: []\n  passwords: []\n  databases: []\n  ## @param auth.username DEPRECATED: use `auth.usernames` instead\n  ## @param auth.password DEPRECATED: use `auth.passwords` instead\n  ## @param auth.database DEPRECATED: use `auth.databases` instead\n  username: \"\"\n  password: \"\"\n  database: \"\"\n  ## @param auth.replicaSetKey Key used for authentication in the replicaset (only when `architecture=replicaset`)\n  ##\n  replicaSetKey: \"\"\n  ## @param auth.existingSecret Existing secret with MongoDB(&reg;) credentials (keys: `mongodb-passwords`, `mongodb-root-password`, `mongodb-metrics-password`, ` mongodb-replica-set-key`)\n  ## NOTE: When it's set the previous parameters are ignored.\n  ##\n  existingSecret: \"\"\ntls:\n  ## @param tls.enabled Enable MongoDB(&reg;) TLS support between nodes in the cluster as well as between mongo clients and nodes\n  ##\n  enabled: false\n  ## @param tls.autoGenerated Generate a custom CA and self-signed certificates\n  ##\n  autoGenerated: true\n  ## @param tls.existingSecret Existing secret with TLS certificates (keys: `mongodb-ca-cert`, `mongodb-ca-key`)\n  ## NOTE: When it's set it will disable secret creation.\n  ##\n  existingSecret: \"\"\n  ## Add Custom CA certificate\n  ## @param tls.caCert Custom CA certificated (base64 encoded)\n  ## @param tls.caKey CA certificate private key (base64 encoded)\n  ##\n  caCert: \"\"\n  caKey: \"\"\n  standalone:\n    ## @param tls.standalone.existingSecret Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).\n    ## NOTE: When it's set it will disable certificate self-generation from existing CA.\n    ##\n    existingSecret: \"\"\n  replicaset:\n    ## @param tls.replicaset.existingSecrets Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).\n    ## existingSecrets:\n    ##  - \"mySecret-0\"\n    ##  - \"mySecret-1\"\n    ## NOTE: When it's set it will disable certificate self-generation from existing CA.\n    ##\n    existingSecrets: []\n  hidden:\n    ## @param tls.hidden.existingSecrets Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).\n    ## existingSecrets:\n    ##  - \"mySecret-0\"\n    ##  - \"mySecret-1\"\n    ## NOTE: When it's set it will disable certificate self-generation from existing CA.\n    ##\n    existingSecrets: []\n  arbiter:\n    ## @param tls.arbiter.existingSecret Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`).\n    ## NOTE: When it's set it will disable certificate self-generation from existing CA.\n    ##\n    existingSecret: \"\"\n  ## Bitnami Nginx image\n  ## @param tls.image.registry Init container TLS certs setup image registry\n  ## @param tls.image.repository Init container TLS certs setup image repository\n  ## @param tls.image.tag Init container TLS certs setup image tag (immutable tags are recommended)\n  ## @param tls.image.digest Init container TLS certs setup image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param tls.image.pullPolicy Init container TLS certs setup image pull policy\n  ## @param tls.image.pullSecrets Init container TLS certs specify docker-registry secret names as an array\n  ## @param tls.extraDnsNames Add extra dns names to the CA, can solve x509 auth issue for pod clients\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/nginx\n    tag: 1.23.2-debian-11-r9\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n\n  ## e.g:\n  ## extraDnsNames\n  ##   \"DNS.6\": \"$my_host\"\n  ##   \"DNS.7\": \"$test\"\n  ##\n  extraDnsNames: []\n  ## @param tls.mode Allows to set the tls mode which should be used when tls is enabled (options: `allowTLS`, `preferTLS`, `requireTLS`)\n  ##\n  mode: requireTLS\n  ## Init Container resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param tls.resources.limits Init container generate-tls-certs resource limits\n  ## @param tls.resources.requests Init container generate-tls-certs resource requests\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##   cpu: 100m\n    ##   memory: 128Mi\n    ##\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##   cpu: 100m\n    ##   memory: 128Mi\n    ##\n    requests: {}\n## @param hostAliases Add deployment host aliases\n## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## @param replicaSetName Name of the replica set (only when `architecture=replicaset`)\n## Ignored when mongodb.architecture=standalone\n##\nreplicaSetName: rs0\n## @param replicaSetHostnames Enable DNS hostnames in the replicaset config (only when `architecture=replicaset`)\n## Ignored when mongodb.architecture=standalone\n## Ignored when externalAccess.enabled=true\n##\nreplicaSetHostnames: true\n## @param enableIPv6 Switch to enable/disable IPv6 on MongoDB(&reg;)\n## ref: https://github.com/bitnami/containers/tree/main/bitnami/mongodb#enablingdisabling-ipv6\n##\nenableIPv6: false\n## @param directoryPerDB Switch to enable/disable DirectoryPerDB on MongoDB(&reg;)\n## ref: https://github.com/bitnami/containers/tree/main/bitnami/mongodb#enablingdisabling-directoryperdb\n##\ndirectoryPerDB: false\n## MongoDB(&reg;) System Log configuration\n## ref: https://github.com/bitnami/containers/tree/main/bitnami/mongodb#configuring-system-log-verbosity-level\n## @param systemLogVerbosity MongoDB(&reg;) system log verbosity level\n## @param disableSystemLog Switch to enable/disable MongoDB(&reg;) system log\n##\nsystemLogVerbosity: 0\ndisableSystemLog: false\n## @param disableJavascript Switch to enable/disable MongoDB(&reg;) server-side JavaScript execution\n## ref: https://docs.mongodb.com/manual/core/server-side-javascript/\n##\ndisableJavascript: false\n## @param enableJournal Switch to enable/disable MongoDB(&reg;) Journaling\n## ref: https://docs.mongodb.com/manual/reference/configuration-options/#mongodb-setting-storage.journal.enabled\n##\nenableJournal: true\n## @param configuration MongoDB(&reg;) configuration file to be used for Primary and Secondary nodes\n## For documentation of all options, see: http://docs.mongodb.org/manual/reference/configuration-options/\n## Example:\n## configuration: |-\n##   # where and how to store data.\n##   storage:\n##     dbPath: /bitnami/mongodb/data/db\n##     journal:\n##       enabled: true\n##     directoryPerDB: false\n##   # where to write logging data\n##   systemLog:\n##     destination: file\n##     quiet: false\n##     logAppend: true\n##     logRotate: reopen\n##     path: /opt/bitnami/mongodb/logs/mongodb.log\n##     verbosity: 0\n##   # network interfaces\n##   net:\n##     port: 27017\n##     unixDomainSocket:\n##       enabled: true\n##       pathPrefix: /opt/bitnami/mongodb/tmp\n##     ipv6: false\n##     bindIpAll: true\n##   # replica set options\n##   #replication:\n##     #replSetName: replicaset\n##     #enableMajorityReadConcern: true\n##   # process management options\n##   processManagement:\n##      fork: false\n##      pidFilePath: /opt/bitnami/mongodb/tmp/mongodb.pid\n##   # set parameter options\n##   setParameter:\n##      enableLocalhostAuthBypass: true\n##   # security options\n##   security:\n##     authorization: disabled\n##     #keyFile: /opt/bitnami/mongodb/conf/keyfile\n##\nconfiguration: \"\"\n## @section replicaSetConfigurationSettings settings applied during runtime (not via configuration file)\n## If enabled, these are applied by a script which is called within setup.sh\n## for documentation see https://docs.mongodb.com/manual/reference/replica-configuration/#replica-set-configuration-fields\n## @param replicaSetConfigurationSettings.enabled Enable MongoDB(&reg;) Switch to enable/disable configuring MongoDB(&reg;) run time rs.conf settings\n## @param replicaSetConfigurationSettings.configuration run-time rs.conf settings\n##\nreplicaSetConfigurationSettings:\n  enabled: false\n  configuration: {}\n##    chainingAllowed : false\n##    heartbeatTimeoutSecs : 10\n##    heartbeatIntervalMillis : 2000\n##    electionTimeoutMillis : 10000\n##    catchUpTimeoutMillis : 30000\n## @param existingConfigmap Name of existing ConfigMap with MongoDB(&reg;) configuration for Primary and Secondary nodes\n## NOTE: When it's set the arbiter.configuration parameter is ignored\n##\nexistingConfigmap: \"\"\n## @param initdbScripts Dictionary of initdb scripts\n## Specify dictionary of scripts to be run at first boot\n## Example:\n## initdbScripts:\n##   my_init_script.sh: |\n##      #!/bin/bash\n##      echo \"Do something.\"\n##\ninitdbScripts: {}\n## @param initdbScriptsConfigMap Existing ConfigMap with custom initdb scripts\n##\ninitdbScriptsConfigMap: \"\"\n## Command and args for running the container (set to default if not set). Use array form\n## @param command Override default container command (useful when using custom images)\n## @param args Override default container args (useful when using custom images)\n##\ncommand: []\nargs: []\n## @param extraFlags MongoDB(&reg;) additional command line flags\n## Example:\n## extraFlags:\n##  - \"--wiredTigerCacheSizeGB=2\"\n##\nextraFlags: []\n## @param extraEnvVars Extra environment variables to add to MongoDB(&reg;) pods\n## E.g:\n## extraEnvVars:\n##   - name: FOO\n##     value: BAR\n##\nextraEnvVars: []\n## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars\n##\nextraEnvVarsCM: \"\"\n## @param extraEnvVarsSecret Name of existing Secret containing extra env vars (in case of sensitive data)\n##\nextraEnvVarsSecret: \"\"\n\n## @section MongoDB(&reg;) statefulset parameters\n##\n\n## @param annotations Additional labels to be added to the MongoDB(&reg;) statefulset. Evaluated as a template\n##\nannotations: {}\n## @param labels Annotations to be added to the MongoDB(&reg;) statefulset. Evaluated as a template\n##\nlabels: {}\n## @param replicaCount Number of MongoDB(&reg;) nodes (only when `architecture=replicaset`)\n## Ignored when mongodb.architecture=standalone\n##\nreplicaCount: 2\n## @param updateStrategy.type Strategy to use to replace existing MongoDB(&reg;) pods. When architecture=standalone and useStatefulSet=false,\n## this parameter will be applied on a deployment object. In other case it will be applied on a statefulset object\n## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy\n## Example:\n## updateStrategy:\n##  type: RollingUpdate\n##  rollingUpdate:\n##    maxSurge: 25%\n##    maxUnavailable: 25%\n##\nupdateStrategy:\n  type: RollingUpdate\n## @param podManagementPolicy Pod management policy for MongoDB(&reg;)\n## Should be initialized one by one when building the replicaset for the first time\n##\npodManagementPolicy: OrderedReady\n## @param podAffinityPreset MongoDB(&reg;) Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAffinityPreset: \"\"\n## @param podAntiAffinityPreset MongoDB(&reg;) Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAntiAffinityPreset: soft\n## Node affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n##\nnodeAffinityPreset:\n  ## @param nodeAffinityPreset.type MongoDB(&reg;) Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ##\n  type: \"\"\n  ## @param nodeAffinityPreset.key MongoDB(&reg;) Node label key to match Ignored if `affinity` is set.\n  ## E.g.\n  ## key: \"kubernetes.io/e2e-az-name\"\n  ##\n  key: \"\"\n  ## @param nodeAffinityPreset.values MongoDB(&reg;) Node label values to match. Ignored if `affinity` is set.\n  ## E.g.\n  ## values:\n  ##   - e2e-az1\n  ##   - e2e-az2\n  ##\n  values: []\n## @param affinity MongoDB(&reg;) Affinity for pod assignment\n## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set\n##\naffinity: {}\n## @param nodeSelector MongoDB(&reg;) Node labels for pod assignment\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## @param tolerations MongoDB(&reg;) Tolerations for pod assignment\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## @param topologySpreadConstraints MongoDB(&reg;) Spread Constraints for Pods\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n##\ntopologySpreadConstraints: []\n## @param lifecycleHooks LifecycleHook for the MongoDB(&reg;) container(s) to automate configuration before or after startup\n##\nlifecycleHooks: {}\n## @param terminationGracePeriodSeconds MongoDB(&reg;) Termination Grace Period\n##\nterminationGracePeriodSeconds: \"\"\n## @param podLabels MongoDB(&reg;) pod labels\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## @param podAnnotations MongoDB(&reg;) Pod annotations\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## @param priorityClassName Name of the existing priority class to be used by MongoDB(&reg;) pod(s)\n## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\npriorityClassName: \"\"\n## @param runtimeClassName Name of the runtime class to be used by MongoDB(&reg;) pod(s)\n## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/\n##\nruntimeClassName: \"\"\n## MongoDB(&reg;) pods' Security Context.\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n## @param podSecurityContext.enabled Enable MongoDB(&reg;) pod(s)' Security Context\n## @param podSecurityContext.fsGroup Group ID for the volumes of the MongoDB(&reg;) pod(s)\n## @param podSecurityContext.sysctls sysctl settings of the MongoDB(&reg;) pod(s)'\n##\npodSecurityContext:\n  enabled: true\n  fsGroup: 1001\n  ## sysctl settings\n  ## Example:\n  ## sysctls:\n  ## - name: net.core.somaxconn\n  ##   value: \"10000\"\n  ##\n  sysctls: []\n## MongoDB(&reg;) containers' Security Context (main and metrics container).\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n## @param containerSecurityContext.enabled Enable MongoDB(&reg;) container(s)' Security Context\n## @param containerSecurityContext.runAsUser User ID for the MongoDB(&reg;) container\n## @param containerSecurityContext.runAsNonRoot Set MongoDB(&reg;) container's Security Context runAsNonRoot\n##\ncontainerSecurityContext:\n  enabled: true\n  runAsUser: 1001\n  runAsNonRoot: true\n## MongoDB(&reg;) containers' resource requests and limits.\n## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n## We usually recommend not to specify default resources and to leave this as a conscious\n## choice for the user. This also increases chances charts run on environments with little\n## resources, such as Minikube. If you do want to specify resources, uncomment the following\n## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n## @param resources.limits The resources limits for MongoDB(&reg;) containers\n## @param resources.requests The requested resources for MongoDB(&reg;) containers\n##\nresources:\n  ## Example:\n  ## limits:\n  ##    cpu: 100m\n  ##    memory: 128Mi\n  ##\n  limits: {}\n  ## Examples:\n  ## requests:\n  ##    cpu: 100m\n  ##    memory: 128Mi\n  ##\n  requests: {}\n## @param containerPorts.mongodb MongoDB(&reg;) container port\ncontainerPorts:\n  mongodb: 27017\n## MongoDB(&reg;) pods' liveness probe. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n## @param livenessProbe.enabled Enable livenessProbe\n## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n## @param livenessProbe.periodSeconds Period seconds for livenessProbe\n## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n## @param livenessProbe.failureThreshold Failure threshold for livenessProbe\n## @param livenessProbe.successThreshold Success threshold for livenessProbe\n##\nlivenessProbe:\n  enabled: true\n  initialDelaySeconds: 30\n  periodSeconds: 20\n  timeoutSeconds: 10\n  failureThreshold: 6\n  successThreshold: 1\n## MongoDB(&reg;) pods' readiness probe. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n## @param readinessProbe.enabled Enable readinessProbe\n## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n## @param readinessProbe.periodSeconds Period seconds for readinessProbe\n## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n## @param readinessProbe.failureThreshold Failure threshold for readinessProbe\n## @param readinessProbe.successThreshold Success threshold for readinessProbe\n##\nreadinessProbe:\n  enabled: true\n  initialDelaySeconds: 5\n  periodSeconds: 10\n  timeoutSeconds: 5\n  failureThreshold: 6\n  successThreshold: 1\n## Slow starting containers can be protected through startup probes\n## Startup probes are available in Kubernetes version 1.16 and above\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes\n## @param startupProbe.enabled Enable startupProbe\n## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n## @param startupProbe.periodSeconds Period seconds for startupProbe\n## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe\n## @param startupProbe.failureThreshold Failure threshold for startupProbe\n## @param startupProbe.successThreshold Success threshold for startupProbe\n##\nstartupProbe:\n  enabled: false\n  initialDelaySeconds: 5\n  periodSeconds: 20\n  timeoutSeconds: 10\n  successThreshold: 1\n  failureThreshold: 30\n## @param customLivenessProbe Override default liveness probe for MongoDB(&reg;) containers\n## Ignored when livenessProbe.enabled=true\n##\ncustomLivenessProbe: {}\n## @param customReadinessProbe Override default readiness probe for MongoDB(&reg;) containers\n## Ignored when readinessProbe.enabled=true\n##\ncustomReadinessProbe: {}\n## @param customStartupProbe Override default startup probe for MongoDB(&reg;) containers\n## Ignored when startupProbe.enabled=true\n##\ncustomStartupProbe: {}\n## @param initContainers Add additional init containers for the hidden node pod(s)\n## Example:\n## initContainers:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\ninitContainers: []\n## @param sidecars Add additional sidecar containers for the MongoDB(&reg;) pod(s)\n## Example:\n## sidecars:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n## This is an optional 'mongo-labeler' sidecar container that tracks replica-set for the primary mongodb pod\n## and labels it dynamically with ' primary: \"true\" ' in order for an extra-deployed service to always expose\n## and attach to the primary pod, this needs to be uncommented along with the suggested 'extraDeploy' example\n## and the suggested rbac example for the pod to be allowed adding labels to mongo replica pods\n## search 'mongo-labeler' through this file to find the sections that needs to be uncommented to make it work\n##\n## - name: mongo-labeler\n##   image: korenlev/k8s-mongo-labeler-sidecar\n##   imagePullPolicy: Always\n##   env:\n##     - name: LABEL_SELECTOR\n##       value: \"app.kubernetes.io/component=mongodb,app.kubernetes.io/instance=mongodb,app.kubernetes.io/name=mongodb\"\n##     - name: NAMESPACE\n##       value: \"the-mongodb-namespace\"\n##     - name: DEBUG\n##       value: \"true\"\n##\nsidecars: []\n## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MongoDB(&reg;) container(s)\n## Examples:\n## extraVolumeMounts:\n##   - name: extras\n##     mountPath: /usr/share/extras\n##     readOnly: true\n##\nextraVolumeMounts: []\n## @param extraVolumes Optionally specify extra list of additional volumes to the MongoDB(&reg;) statefulset\n## extraVolumes:\n##   - name: extras\n##     emptyDir: {}\n##\nextraVolumes: []\n## MongoDB(&reg;) Pod Disruption Budget configuration\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n##\npdb:\n  ## @param pdb.create Enable/disable a Pod Disruption Budget creation for MongoDB(&reg;) pod(s)\n  ##\n  create: false\n  ## @param pdb.minAvailable Minimum number/percentage of MongoDB(&reg;) pods that must still be available after the eviction\n  ##\n  minAvailable: 1\n  ## @param pdb.maxUnavailable Maximum number/percentage of MongoDB(&reg;) pods that may be made unavailable after the eviction\n  ##\n  maxUnavailable: \"\"\n\n## @section Traffic exposure parameters\n##\n\n## Service parameters\n##\nservice:\n  ## @param service.nameOverride MongoDB(&reg;) service name\n  ##\n  nameOverride: \"\"\n  ## @param service.type Kubernetes Service type (only for standalone architecture)\n  ##\n  type: ClusterIP\n  ## @param service.portName MongoDB(&reg;) service port name (only for standalone architecture)\n  ##\n  portName: mongodb\n  ## @param service.ports.mongodb MongoDB(&reg;) service port.\n  ##\n  ports:\n    mongodb: 27017\n  ## @param service.nodePorts.mongodb Port to bind to for NodePort and LoadBalancer service types (only for standalone architecture)\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n  ##\n  nodePorts:\n    mongodb: \"\"\n  ## @param service.clusterIP MongoDB(&reg;) service cluster IP (only for standalone architecture)\n  ## e.g:\n  ## clusterIP: None\n  ##\n  clusterIP: \"\"\n  ## @param service.externalIPs Specify the externalIP value ClusterIP service type (only for standalone architecture)\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips\n  ##\n  externalIPs: []\n  ## @param service.loadBalancerIP loadBalancerIP for MongoDB(&reg;) Service (only for standalone architecture)\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer\n  ##\n  loadBalancerIP: \"\"\n  ## @param service.loadBalancerClass loadBalancerClass for MongoDB(&reg;) Service (only for standalone architecture)\n  # ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class\n  loadBalancerClass: \"\"\n  ## @param service.loadBalancerSourceRanges Address(es) that are allowed when service is LoadBalancer (only for standalone architecture)\n  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n  ##\n  loadBalancerSourceRanges: []\n  ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n  ##\n  extraPorts: []\n  ## @param service.annotations Provide any additional annotations that may be required\n  ##\n  annotations: {}\n  ## @param service.externalTrafficPolicy service external traffic policy (only for standalone architecture)\n  ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n  ##\n  externalTrafficPolicy: Local\n  ## @param service.sessionAffinity Control where client requests go, to the same pod or round-robin\n  ## Values: ClientIP or None\n  ## ref: https://kubernetes.io/docs/user-guide/services/\n  ##\n  sessionAffinity: None\n  ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity\n  ## sessionAffinityConfig:\n  ##   clientIP:\n  ##     timeoutSeconds: 300\n  ##\n  sessionAffinityConfig: {}\n## External Access to MongoDB(&reg;) nodes configuration\n##\nexternalAccess:\n  ## @param externalAccess.enabled Enable Kubernetes external cluster access to MongoDB(&reg;) nodes (only for replicaset architecture)\n  ##\n  enabled: false\n  ## External IPs auto-discovery configuration\n  ## An init container is used to auto-detect LB IPs or node ports by querying the K8s API\n  ## Note: RBAC might be required\n  ##\n  autoDiscovery:\n    ## @param externalAccess.autoDiscovery.enabled Enable using an init container to auto-detect external IPs by querying the K8s API\n    ##\n    enabled: false\n    ## Bitnami Kubectl image\n    ## ref: https://hub.docker.com/r/bitnami/kubectl/tags/\n    ## @param externalAccess.autoDiscovery.image.registry Init container auto-discovery image registry\n    ## @param externalAccess.autoDiscovery.image.repository Init container auto-discovery image repository\n    ## @param externalAccess.autoDiscovery.image.tag Init container auto-discovery image tag (immutable tags are recommended)\n    ## @param externalAccess.autoDiscovery.image.digest Init container auto-discovery image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n    ## @param externalAccess.autoDiscovery.image.pullPolicy Init container auto-discovery image pull policy\n    ## @param externalAccess.autoDiscovery.image.pullSecrets Init container auto-discovery image pull secrets\n    ##\n    image:\n      registry: docker.io\n      repository: bitnami/kubectl\n      tag: 1.25.4-debian-11-r1\n      digest: \"\"\n      ## Specify a imagePullPolicy\n      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n      ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n      ##\n      pullPolicy: IfNotPresent\n      ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n      ## Example:\n      ## pullSecrets:\n      ##   - myRegistryKeySecretName\n      ##\n      pullSecrets: []\n    ## Init Container resource requests and limits\n    ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n    ## We usually recommend not to specify default resources and to leave this as a conscious\n    ## choice for the user. This also increases chances charts run on environments with little\n    ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n    ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    ## @param externalAccess.autoDiscovery.resources.limits Init container auto-discovery resource limits\n    ## @param externalAccess.autoDiscovery.resources.requests Init container auto-discovery resource requests\n    ##\n    resources:\n      ## Example:\n      ## limits:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      ##\n      limits: {}\n      ## Examples:\n      ## requests:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      ##\n      requests: {}\n  ## Parameters to configure K8s service(s) used to externally access MongoDB(&reg;)\n  ## A new service per broker will be created\n  ##\n  service:\n    ## @param externalAccess.service.type Kubernetes Service type for external access. Allowed values: NodePort, LoadBalancer or ClusterIP\n    ##\n    type: LoadBalancer\n    ## @param externalAccess.service.portName MongoDB(&reg;) port name used for external access when service type is LoadBalancer\n    ##\n    portName: \"mongodb\"\n    ## @param externalAccess.service.ports.mongodb MongoDB(&reg;) port used for external access when service type is LoadBalancer\n    ##\n    ports:\n      mongodb: 27017\n    ## @param externalAccess.service.loadBalancerIPs Array of load balancer IPs for MongoDB(&reg;) nodes\n    ## Example:\n    ## loadBalancerIPs:\n    ##   - X.X.X.X\n    ##   - Y.Y.Y.Y\n    ##\n    loadBalancerIPs: []\n    ## @param externalAccess.service.loadBalancerClass loadBalancerClass when service type is LoadBalancer\n    # ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class\n    loadBalancerClass: \"\"\n    ## @param externalAccess.service.loadBalancerSourceRanges Address(es) that are allowed when service is LoadBalancer\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## Example:\n    ## loadBalancerSourceRanges:\n    ## - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param externalAccess.service.externalTrafficPolicy MongoDB(&reg;) service external traffic policy\n    ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Local\n    ## @param externalAccess.service.nodePorts Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort\n    ## Example:\n    ## nodePorts:\n    ##   - 30001\n    ##   - 30002\n    ##\n    nodePorts: []\n    ## @param externalAccess.service.domain Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort\n    ## If not specified, the container will try to get the kubernetes node external IP\n    ## e.g:\n    ## domain: mydomain.com\n    ##\n    domain: \"\"\n    ## @param externalAccess.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param externalAccess.service.annotations Service annotations for external access\n    ##\n    annotations: {}\n      ## @param externalAccess.service.sessionAffinity Control where client requests go, to the same pod or round-robin\n    ## Values: ClientIP or None\n    ## ref: https://kubernetes.io/docs/user-guide/services/\n    ##\n    sessionAffinity: None\n    ## @param externalAccess.service.sessionAffinityConfig Additional settings for the sessionAffinity\n    ## sessionAffinityConfig:\n    ##   clientIP:\n    ##     timeoutSeconds: 300\n    ##\n    sessionAffinityConfig: {}\n  ## External Access to MongoDB(&reg;) Hidden nodes configuration\n  ##\n  hidden:\n    ## @param externalAccess.hidden.enabled Enable Kubernetes external cluster access to MongoDB(&reg;) hidden nodes\n    ##\n    enabled: false\n    ## Parameters to configure K8s service(s) used to externally access MongoDB(&reg;)\n    ## A new service per broker will be created\n    ##\n    service:\n      ## @param externalAccess.hidden.service.type Kubernetes Service type for external access. Allowed values: NodePort or LoadBalancer\n      ##\n      type: LoadBalancer\n      ## @param externalAccess.hidden.service.portName MongoDB(&reg;) port name used for external access when service type is LoadBalancer\n      ##\n      portName: \"mongodb\"\n      ## @param externalAccess.hidden.service.ports.mongodb MongoDB(&reg;) port used for external access when service type is LoadBalancer\n      ##\n      ports:\n        mongodb: 27017\n      ## @param externalAccess.hidden.service.loadBalancerIPs Array of load balancer IPs for MongoDB(&reg;) nodes\n      ## Example:\n      ## loadBalancerIPs:\n      ##   - X.X.X.X\n      ##   - Y.Y.Y.Y\n      ##\n      loadBalancerIPs: []\n      ## @param externalAccess.hidden.service.loadBalancerClass loadBalancerClass when service type is LoadBalancer\n      # ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class\n      loadBalancerClass: \"\"\n      ## @param externalAccess.hidden.service.loadBalancerSourceRanges Address(es) that are allowed when service is LoadBalancer\n      ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n      ## Example:\n      ## loadBalancerSourceRanges:\n      ## - 10.10.10.0/24\n      ##\n      loadBalancerSourceRanges: []\n      ## @param externalAccess.hidden.service.externalTrafficPolicy MongoDB(&reg;) service external traffic policy\n      ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n      ##\n      externalTrafficPolicy: Local\n      ## @param externalAccess.hidden.service.nodePorts Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort. Length must be the same as replicaCount\n      ## Example:\n      ## nodePorts:\n      ##   - 30001\n      ##   - 30002\n      ##\n      nodePorts: []\n      ## @param externalAccess.hidden.service.domain Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort\n      ## If not specified, the container will try to get the kubernetes node external IP\n      ## e.g:\n      ## domain: mydomain.com\n      ##\n      domain: \"\"\n      ## @param externalAccess.hidden.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n      ##\n      extraPorts: []\n      ## @param externalAccess.hidden.service.annotations Service annotations for external access\n      ##\n      annotations: {}\n      ## @param externalAccess.hidden.service.sessionAffinity Control where client requests go, to the same pod or round-robin\n      ## Values: ClientIP or None\n      ## ref: https://kubernetes.io/docs/user-guide/services/\n      ##\n      sessionAffinity: None\n      ## @param externalAccess.hidden.service.sessionAffinityConfig Additional settings for the sessionAffinity\n      ## sessionAffinityConfig:\n      ##   clientIP:\n      ##     timeoutSeconds: 300\n      ##\n      sessionAffinityConfig: {}\n\n## @section Persistence parameters\n##\n\n## Enable persistence using Persistent Volume Claims\n## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n##\npersistence:\n  ## @param persistence.enabled Enable MongoDB(&reg;) data persistence using PVC\n  ##\n  enabled: true\n  ## @param persistence.medium Provide a medium for `emptyDir` volumes.\n  ## Requires persistence.enabled: false\n  ##\n  medium: \"\"\n  ## @param persistence.existingClaim Provide an existing `PersistentVolumeClaim` (only when `architecture=standalone`)\n  ## Requires persistence.enabled: true\n  ## If defined, PVC must be created manually before volume will be bound\n  ## Ignored when mongodb.architecture=replicaset\n  ##\n  existingClaim: \"\"\n  ## @param persistence.resourcePolicy Setting it to \"keep\" to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted\n  resourcePolicy: \"\"\n  ## @param persistence.storageClass PVC Storage Class for MongoDB(&reg;) data volume\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ## set, choosing the default provisioner.\n  ##\n  storageClass: \"\"\n  ## @param persistence.accessModes PV Access Mode\n  ##\n  accessModes:\n    - ReadWriteOnce\n  ## @param persistence.size PVC Storage Request for MongoDB(&reg;) data volume\n  ##\n  size: 8Gi\n  ## @param persistence.annotations PVC annotations\n  ##\n  annotations: {}\n  ## @param persistence.mountPath Path to mount the volume at\n  ## MongoDB(&reg;) images.\n  ##\n  mountPath: /bitnami/mongodb\n  ## @param persistence.subPath Subdirectory of the volume to mount at\n  ## and one PV for multiple services.\n  ##\n  subPath: \"\"\n  ## Fine tuning for volumeClaimTemplates\n  ##\n  volumeClaimTemplates:\n    ## @param persistence.volumeClaimTemplates.selector A label query over volumes to consider for binding (e.g. when using local volumes)\n    ## A label query over volumes to consider for binding (e.g. when using local volumes)\n    ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#labelselector-v1-meta for more details\n    ##\n    selector: {}\n    ## @param persistence.volumeClaimTemplates.requests Custom PVC requests attributes\n    ## Sometime cloud providers use additional requests attributes to provision custom storage instance\n    ## See https://cloud.ibm.com/docs/containers?topic=containers-file_storage#file_dynamic_statefulset\n    ##\n    requests: {}\n    ## @param persistence.volumeClaimTemplates.dataSource Add dataSource to the VolumeClaimTemplate\n    ##\n    dataSource: {}\n\n## @section RBAC parameters\n##\n\n## ServiceAccount\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n##\nserviceAccount:\n  ## @param serviceAccount.create Enable creation of ServiceAccount for MongoDB(&reg;) pods\n  ##\n  create: true\n  ## @param serviceAccount.name Name of the created serviceAccount\n  ## If not set and create is true, a name is generated using the mongodb.fullname template\n  ##\n  name: \"\"\n  ## @param serviceAccount.annotations Additional Service Account annotations\n  ##\n  annotations: {}\n  ## @param serviceAccount.automountServiceAccountToken Allows auto mount of ServiceAccountToken on the serviceAccount created\n  ## Can be set to false if pods using this serviceAccount do not need to use K8s API\n  ##\n  automountServiceAccountToken: true\n## Role Based Access\n## ref: https://kubernetes.io/docs/admin/authorization/rbac/\n##\nrbac:\n  ## @param rbac.create Whether to create & use RBAC resources or not\n  ## binding MongoDB(&reg;) ServiceAccount to a role\n  ## that allows MongoDB(&reg;) pods querying the K8s API\n  ## this needs to be set to 'true' to enable the mongo-labeler sidecar primary mongodb discovery\n  ##\n  create: false\n  ## @param rbac.rules Custom rules to create following the role specification\n  ## The example below needs to be uncommented to use the 'mongo-labeler' sidecar for dynamic discovery of the primary mongodb pod:\n  ## rules:\n  ##   - apiGroups:\n  ##       - \"\"\n  ##     resources:\n  ##       - pods\n  ##     verbs:\n  ##       - get\n  ##       - list\n  ##       - watch\n  ##       - update\n  ##\n  rules: []\n## PodSecurityPolicy configuration\n## Be sure to also set rbac.create to true, otherwise Role and RoleBinding won't be created.\n## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n##\npodSecurityPolicy:\n  ## @param podSecurityPolicy.create Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later\n  ##\n  create: false\n  ## @param podSecurityPolicy.allowPrivilegeEscalation Enable privilege escalation\n  ## Either use predefined policy with some adjustments or use `podSecurityPolicy.spec`\n  ##\n  allowPrivilegeEscalation: false\n  ## @param podSecurityPolicy.privileged Allow privileged\n  ##\n  privileged: false\n  ## @param podSecurityPolicy.spec Specify the full spec to use for Pod Security Policy\n  ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n  ## Defining a spec ignores the above values.\n  ##\n  spec: {}\n  ## Example:\n  ##    allowPrivilegeEscalation: false\n  ##    fsGroup:\n  ##      rule: 'MustRunAs'\n  ##      ranges:\n  ##        - min: 1001\n  ##          max: 1001\n  ##    hostIPC: false\n  ##    hostNetwork: false\n  ##    hostPID: false\n  ##    privileged: false\n  ##    readOnlyRootFilesystem: false\n  ##    requiredDropCapabilities:\n  ##      - ALL\n  ##    runAsUser:\n  ##      rule: 'MustRunAs'\n  ##      ranges:\n  ##        - min: 1001\n  ##          max: 1001\n  ##    seLinux:\n  ##      rule: 'RunAsAny'\n  ##    supplementalGroups:\n  ##      rule: 'MustRunAs'\n  ##      ranges:\n  ##        - min: 1001\n  ##          max: 1001\n  ##    volumes:\n  ##      - 'configMap'\n  ##      - 'secret'\n  ##      - 'emptyDir'\n  ##      - 'persistentVolumeClaim'\n  ##\n\n## @section Volume Permissions parameters\n##\n## Init Container parameters\n## Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each component\n## values from the securityContext section of the component\n##\nvolumePermissions:\n  ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`\n  ##\n  enabled: false\n  ## @param volumePermissions.image.registry Init container volume-permissions image registry\n  ## @param volumePermissions.image.repository Init container volume-permissions image repository\n  ## @param volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended)\n  ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy\n  ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 11-debian-11-r52\n    digest: \"\"\n    ## Specify a imagePullPolicy\n    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n    ##\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## Example:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## Init Container resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param volumePermissions.resources.limits Init container volume-permissions resource limits\n  ## @param volumePermissions.resources.requests Init container volume-permissions resource requests\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    requests: {}\n  ## Init container Security Context\n  ## Note: the chown of the data folder is done to containerSecurityContext.runAsUser\n  ## and not the below volumePermissions.securityContext.runAsUser\n  ## When runAsUser is set to special value \"auto\", init container will try to chwon the\n  ## data folder to autodetermined user&group, using commands: `id -u`:`id -G | cut -d\" \" -f2`\n  ## \"auto\" is especially useful for OpenShift which has scc with dynamic userids (and 0 is not allowed).\n  ## You may want to use this volumePermissions.securityContext.runAsUser=\"auto\" in combination with\n  ## podSecurityContext.enabled=false,containerSecurityContext.enabled=false and shmVolume.chmod.enabled=false\n  ## @param volumePermissions.securityContext.runAsUser User ID for the volumePermissions container\n  ##\n  securityContext:\n    runAsUser: 0\n\n## @section Arbiter parameters\n##\n\narbiter:\n  ## @param arbiter.enabled Enable deploying the arbiter\n  ##   https://docs.mongodb.com/manual/tutorial/add-replica-set-arbiter/\n  ##\n  enabled: true\n  ## @param arbiter.hostAliases Add deployment host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param arbiter.configuration Arbiter configuration file to be used\n  ##   http://docs.mongodb.org/manual/reference/configuration-options/\n  ##\n  configuration: \"\"\n  ## @param arbiter.existingConfigmap Name of existing ConfigMap with Arbiter configuration\n  ## NOTE: When it's set the arbiter.configuration parameter is ignored\n  ##\n  existingConfigmap: \"\"\n  ## Command and args for running the container (set to default if not set). Use array form\n  ## @param arbiter.command Override default container command (useful when using custom images)\n  ## @param arbiter.args Override default container args (useful when using custom images)\n  ##\n  command: []\n  args: []\n  ## @param arbiter.extraFlags Arbiter additional command line flags\n  ## Example:\n  ## extraFlags:\n  ##  - \"--wiredTigerCacheSizeGB=2\"\n  ##\n  extraFlags: []\n  ## @param arbiter.extraEnvVars Extra environment variables to add to Arbiter pods\n  ## E.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: BAR\n  ##\n  extraEnvVars: []\n  ## @param arbiter.extraEnvVarsCM Name of existing ConfigMap containing extra env vars\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param arbiter.extraEnvVarsSecret Name of existing Secret containing extra env vars (in case of sensitive data)\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param arbiter.annotations Additional labels to be added to the Arbiter statefulset\n  ##\n  annotations: {}\n  ## @param arbiter.labels Annotations to be added to the Arbiter statefulset\n  ##\n  labels: {}\n  ## @param arbiter.topologySpreadConstraints MongoDB(&reg;) Spread Constraints for arbiter Pods\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ##\n  topologySpreadConstraints: []\n  ## @param arbiter.lifecycleHooks LifecycleHook for the Arbiter container to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param arbiter.terminationGracePeriodSeconds Arbiter Termination Grace Period\n  ##\n  terminationGracePeriodSeconds: \"\"\n  ## @param arbiter.updateStrategy.type Strategy that will be employed to update Pods in the StatefulSet\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ## updateStrategy:\n  ##  type: RollingUpdate\n  ##  rollingUpdate:\n  ##    maxSurge: 25%\n  ##    maxUnavailable: 25%\n  ##\n  updateStrategy:\n    type: RollingUpdate\n  ## @param arbiter.podManagementPolicy Pod management policy for MongoDB(&reg;)\n  ## Should be initialized one by one when building the replicaset for the first time\n  ##\n  podManagementPolicy: OrderedReady\n  ## @param arbiter.schedulerName Name of the scheduler (other than default) to dispatch pods\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param arbiter.podAffinityPreset Arbiter Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param arbiter.podAntiAffinityPreset Arbiter Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## Node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param arbiter.nodeAffinityPreset.type Arbiter Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param arbiter.nodeAffinityPreset.key Arbiter Node label key to match Ignored if `affinity` is set.\n    ## E.g.\n    ## key: \"kubernetes.io/e2e-az-name\"\n    ##\n    key: \"\"\n    ## @param arbiter.nodeAffinityPreset.values Arbiter Node label values to match. Ignored if `affinity` is set.\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param arbiter.affinity Arbiter Affinity for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## Note: arbiter.podAffinityPreset, arbiter.podAntiAffinityPreset, and arbiter.nodeAffinityPreset will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param arbiter.nodeSelector Arbiter Node labels for pod assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param arbiter.tolerations Arbiter Tolerations for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param arbiter.podLabels Arbiter pod labels\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param arbiter.podAnnotations Arbiter Pod annotations\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param arbiter.priorityClassName Name of the existing priority class to be used by Arbiter pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n  ##\n  priorityClassName: \"\"\n  ## @param arbiter.runtimeClassName Name of the runtime class to be used by Arbiter pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/\n  ##\n  runtimeClassName: \"\"\n  ## MongoDB(&reg;) Arbiter pods' Security Context.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param arbiter.podSecurityContext.enabled Enable Arbiter pod(s)' Security Context\n  ## @param arbiter.podSecurityContext.fsGroup Group ID for the volumes of the Arbiter pod(s)\n  ## @param arbiter.podSecurityContext.sysctls sysctl settings of the Arbiter pod(s)'\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n    ## sysctl settings\n    ## Example:\n    ## sysctls:\n    ## - name: net.core.somaxconn\n    ##   value: \"10000\"\n    ##\n    sysctls: []\n  ## MongoDB(&reg;) Arbiter containers' Security Context (only main container).\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ## @param arbiter.containerSecurityContext.enabled Enable Arbiter container(s)' Security Context\n  ## @param arbiter.containerSecurityContext.runAsUser User ID for the Arbiter container\n  ## @param arbiter.containerSecurityContext.runAsNonRoot Set Arbiter containers' Security Context runAsNonRoot\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n    runAsNonRoot: true\n  ## MongoDB(&reg;) Arbiter containers' resource requests and limits.\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param arbiter.resources.limits The resources limits for Arbiter containers\n  ## @param arbiter.resources.requests The requested resources for Arbiter containers\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    requests: {}\n  ## @param arbiter.containerPorts.mongodb MongoDB(&reg;) arbiter container port\n  ##\n  containerPorts:\n    mongodb: 27017\n  ## MongoDB(&reg;) Arbiter pods' liveness probe. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param arbiter.livenessProbe.enabled Enable livenessProbe\n  ## @param arbiter.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param arbiter.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param arbiter.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param arbiter.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param arbiter.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 30\n    periodSeconds: 20\n    timeoutSeconds: 10\n    failureThreshold: 6\n    successThreshold: 1\n  ## MongoDB(&reg;) Arbiter pods' readiness probe. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param arbiter.readinessProbe.enabled Enable readinessProbe\n  ## @param arbiter.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param arbiter.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param arbiter.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param arbiter.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param arbiter.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 20\n    timeoutSeconds: 10\n    failureThreshold: 6\n    successThreshold: 1\n  ## MongoDB(&reg;) Arbiter pods' startup probe. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param arbiter.startupProbe.enabled Enable startupProbe\n  ## @param arbiter.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param arbiter.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param arbiter.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param arbiter.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param arbiter.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: false\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 30\n  ## @param arbiter.customLivenessProbe Override default liveness probe for Arbiter containers\n  ## Ignored when arbiter.livenessProbe.enabled=true\n  ##\n  customLivenessProbe: {}\n  ## @param arbiter.customReadinessProbe Override default readiness probe for Arbiter containers\n  ## Ignored when arbiter.readinessProbe.enabled=true\n  ##\n  customReadinessProbe: {}\n  ## @param arbiter.customStartupProbe Override default startup probe for Arbiter containers\n  ## Ignored when arbiter.startupProbe.enabled=true\n  ##\n  customStartupProbe: {}\n  ## @param arbiter.initContainers Add additional init containers for the Arbiter pod(s)\n  ## Example:\n  ## initContainers:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  initContainers: []\n  ## @param arbiter.sidecars Add additional sidecar containers for the Arbiter pod(s)\n  ## Example:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: []\n  ## @param arbiter.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Arbiter container(s)\n  ## Examples:\n  ## extraVolumeMounts:\n  ##   - name: extras\n  ##     mountPath: /usr/share/extras\n  ##     readOnly: true\n  ##\n  extraVolumeMounts: []\n  ## @param arbiter.extraVolumes Optionally specify extra list of additional volumes to the Arbiter statefulset\n  ## extraVolumes:\n  ##   - name: extras\n  ##     emptyDir: {}\n  ##\n  extraVolumes: []\n  ## MongoDB(&reg;) Arbiter Pod Disruption Budget configuration\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n  ##\n  pdb:\n    ## @param arbiter.pdb.create Enable/disable a Pod Disruption Budget creation for Arbiter pod(s)\n    ##\n    create: false\n    ## @param arbiter.pdb.minAvailable Minimum number/percentage of Arbiter pods that should remain scheduled\n    ##\n    minAvailable: 1\n    ## @param arbiter.pdb.maxUnavailable Maximum number/percentage of Arbiter pods that may be made unavailable\n    ##\n    maxUnavailable: \"\"\n  ## MongoDB(&reg;) Arbiter service parameters\n  ##\n  service:\n    ## @param arbiter.service.nameOverride The arbiter service name\n    ##\n    nameOverride: \"\"\n    ## @param arbiter.service.ports.mongodb MongoDB(&reg;) service port\n    ##\n    ports:\n      mongodb: 27017\n    ## @param arbiter.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param arbiter.service.annotations Provide any additional annotations that may be required\n    ##\n    annotations: {}\n\n## @section Hidden Node parameters\n##\n\nhidden:\n  ## @param hidden.enabled Enable deploying the hidden nodes\n  ##   https://docs.mongodb.com/manual/tutorial/configure-a-hidden-replica-set-member/\n  ##\n  enabled: false\n  ## @param hidden.hostAliases Add deployment host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param hidden.configuration Hidden node configuration file to be used\n  ##   http://docs.mongodb.org/manual/reference/configuration-options/\n  ##\n  configuration: \"\"\n  ## @param hidden.existingConfigmap Name of existing ConfigMap with Hidden node configuration\n  ## NOTE: When it's set the hidden.configuration parameter is ignored\n  ##\n  existingConfigmap: \"\"\n  ## Command and args for running the container (set to default if not set). Use array form\n  ## @param hidden.command Override default container command (useful when using custom images)\n  ## @param hidden.args Override default container args (useful when using custom images)\n  ##\n  command: []\n  args: []\n  ## @param hidden.extraFlags Hidden node additional command line flags\n  ## Example:\n  ## extraFlags:\n  ##  - \"--wiredTigerCacheSizeGB=2\"\n  ##\n  extraFlags: []\n  ## @param hidden.extraEnvVars Extra environment variables to add to Hidden node pods\n  ## E.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: BAR\n  ##\n  extraEnvVars: []\n  ## @param hidden.extraEnvVarsCM Name of existing ConfigMap containing extra env vars\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param hidden.extraEnvVarsSecret Name of existing Secret containing extra env vars (in case of sensitive data)\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param hidden.annotations Additional labels to be added to thehidden node statefulset\n  ##\n  annotations: {}\n  ## @param hidden.labels Annotations to be added to the hidden node statefulset\n  ##\n  labels: {}\n  ## @param hidden.topologySpreadConstraints MongoDB(&reg;) Spread Constraints for hidden Pods\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ##\n  topologySpreadConstraints: []\n  ## @param hidden.lifecycleHooks LifecycleHook for the Hidden container to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param hidden.replicaCount Number of hidden nodes (only when `architecture=replicaset`)\n  ## Ignored when mongodb.architecture=standalone\n  ##\n  replicaCount: 1\n  ## @param hidden.terminationGracePeriodSeconds Hidden Termination Grace Period\n  ##\n  terminationGracePeriodSeconds: \"\"\n ## @param hidden.updateStrategy.type Strategy that will be employed to update Pods in the StatefulSet\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ## updateStrategy:\n  ##  type: RollingUpdate\n  ##  rollingUpdate:\n  ##    maxSurge: 25%\n  ##    maxUnavailable: 25%\n  ##\n  updateStrategy:\n    type: RollingUpdate\n  ## @param hidden.podManagementPolicy Pod management policy for hidden node\n  ##\n  podManagementPolicy: OrderedReady\n  ## @param hidden.schedulerName Name of the scheduler (other than default) to dispatch pods\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param hidden.podAffinityPreset Hidden node Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param hidden.podAntiAffinityPreset Hidden node Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## Node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ## Allowed values: soft, hard\n  ##\n  nodeAffinityPreset:\n    ## @param hidden.nodeAffinityPreset.type Hidden Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param hidden.nodeAffinityPreset.key Hidden Node label key to match Ignored if `affinity` is set.\n    ## E.g.\n    ## key: \"kubernetes.io/e2e-az-name\"\n    ##\n    key: \"\"\n    ## @param hidden.nodeAffinityPreset.values Hidden Node label values to match. Ignored if `affinity` is set.\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param hidden.affinity Hidden node Affinity for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param hidden.nodeSelector Hidden node Node labels for pod assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param hidden.tolerations Hidden node Tolerations for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param hidden.podLabels Hidden node pod labels\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param hidden.podAnnotations Hidden node Pod annotations\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param hidden.priorityClassName Name of the existing priority class to be used by hidden node pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n  ##\n  priorityClassName: \"\"\n  ## @param hidden.runtimeClassName Name of the runtime class to be used by hidden node pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/\n  ##\n  runtimeClassName: \"\"\n  ## MongoDB(&reg;) Hidden pods' Security Context.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param hidden.podSecurityContext.enabled Enable Hidden pod(s)' Security Context\n  ## @param hidden.podSecurityContext.fsGroup Group ID for the volumes of the Hidden pod(s)\n  ## @param hidden.podSecurityContext.sysctls sysctl settings of the Hidden pod(s)'\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n    ## sysctl settings\n    ## Example:\n    ## sysctls:\n    ## - name: net.core.somaxconn\n    ##   value: \"10000\"\n    ##\n    sysctls: []\n  ## MongoDB(&reg;) Hidden containers' Security Context (only main container).\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ## @param hidden.containerSecurityContext.enabled Enable Hidden container(s)' Security Context\n  ## @param hidden.containerSecurityContext.runAsUser User ID for the Hidden container\n  ## @param hidden.containerSecurityContext.runAsNonRoot Set Hidden containers' Security Context runAsNonRoot\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n    runAsNonRoot: true\n  ## MongoDB(&reg;) Hidden containers' resource requests and limits.\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param hidden.resources.limits The resources limits for hidden node containers\n  ## @param hidden.resources.requests The requested resources for hidden node containers\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    requests: {}\n  ## @param hidden.containerPorts.mongodb MongoDB(&reg;) hidden container port\n  containerPorts:\n    mongodb: 27017\n  ## MongoDB(&reg;) Hidden pods' liveness probe. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param hidden.livenessProbe.enabled Enable livenessProbe\n  ## @param hidden.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param hidden.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param hidden.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param hidden.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param hidden.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 30\n    periodSeconds: 20\n    timeoutSeconds: 10\n    failureThreshold: 6\n    successThreshold: 1\n  ## MongoDB(&reg;) Hidden pods' readiness probe. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param hidden.readinessProbe.enabled Enable readinessProbe\n  ## @param hidden.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param hidden.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param hidden.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param hidden.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param hidden.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 20\n    timeoutSeconds: 10\n    failureThreshold: 6\n    successThreshold: 1\n  ## Slow starting containers can be protected through startup probes\n  ## Startup probes are available in Kubernetes version 1.16 and above\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes\n  ## @param hidden.startupProbe.enabled Enable startupProbe\n  ## @param hidden.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param hidden.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param hidden.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param hidden.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param hidden.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: false\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 30\n  ## @param hidden.customLivenessProbe Override default liveness probe for hidden node containers\n  ## Ignored when hidden.livenessProbe.enabled=true\n  ##\n  customLivenessProbe: {}\n  ## @param hidden.customReadinessProbe Override default readiness probe for hidden node containers\n  ## Ignored when hidden.readinessProbe.enabled=true\n  ##\n  customReadinessProbe: {}\n  ## @param hidden.customStartupProbe Override default startup probe for MongoDB(&reg;) containers\n  ## Ignored when hidden.startupProbe.enabled=true\n  ##\n  customStartupProbe: {}\n  ## @param hidden.initContainers Add init containers to the MongoDB(&reg;) Hidden pods.\n  ## Example:\n  ## initContainers:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  initContainers: []\n  ## @param hidden.sidecars Add additional sidecar containers for the hidden node pod(s)\n  ## Example:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: []\n  ## @param hidden.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the hidden node container(s)\n  ## Examples:\n  ## extraVolumeMounts:\n  ##   - name: extras\n  ##     mountPath: /usr/share/extras\n  ##     readOnly: true\n  ##\n  extraVolumeMounts: []\n  ## @param hidden.extraVolumes Optionally specify extra list of additional volumes to the hidden node statefulset\n  ## extraVolumes:\n  ##   - name: extras\n  ##     emptyDir: {}\n  ##\n  extraVolumes: []\n  ## MongoDB(&reg;) Hidden Pod Disruption Budget configuration\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n  ##\n  pdb:\n    ## @param hidden.pdb.create Enable/disable a Pod Disruption Budget creation for hidden node pod(s)\n    ##\n    create: false\n    ## @param hidden.pdb.minAvailable Minimum number/percentage of hidden node pods that should remain scheduled\n    ##\n    minAvailable: 1\n    ## @param hidden.pdb.maxUnavailable Maximum number/percentage of hidden node pods that may be made unavailable\n    ##\n    maxUnavailable: \"\"\n  ## Enable persistence using Persistent Volume Claims\n  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param hidden.persistence.enabled Enable hidden node data persistence using PVC\n    ##\n    enabled: true\n    ## @param hidden.persistence.medium Provide a medium for `emptyDir` volumes.\n    ## Requires hidden.persistence.enabled: false\n    ##\n    medium: \"\"\n    ## @param hidden.persistence.storageClass PVC Storage Class for hidden node data volume\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is\n    ## set, choosing the default provisioner.\n    ##\n    storageClass: \"\"\n    ## @param hidden.persistence.accessModes PV Access Mode\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param hidden.persistence.size PVC Storage Request for hidden node data volume\n    ##\n    size: 8Gi\n    ## @param hidden.persistence.annotations PVC annotations\n    ##\n    annotations: {}\n    ## @param hidden.persistence.mountPath The path the volume will be mounted at, useful when using different MongoDB(&reg;) images.\n    ##\n    mountPath: /bitnami/mongodb\n    ## @param hidden.persistence.subPath The subdirectory of the volume to mount to, useful in dev environments\n    ## and one PV for multiple services.\n    ##\n    subPath: \"\"\n    ## Fine tuning for volumeClaimTemplates\n    ##\n    volumeClaimTemplates:\n      ## @param hidden.persistence.volumeClaimTemplates.selector A label query over volumes to consider for binding (e.g. when using local volumes)\n      ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#labelselector-v1-meta for more details\n      ##\n      selector: {}\n      ## @param hidden.persistence.volumeClaimTemplates.requests Custom PVC requests attributes\n      ## Sometime cloud providers use additional requests attributes to provision custom storage instance\n      ## See https://cloud.ibm.com/docs/containers?topic=containers-file_storage#file_dynamic_statefulset\n      ##\n      requests: {}\n      ## @param hidden.persistence.volumeClaimTemplates.dataSource Set volumeClaimTemplate dataSource\n      ##\n      dataSource: {}\n  service:\n    ## @param hidden.service.portName MongoDB(&reg;) service port name\n    ##\n    portName: \"mongodb\"\n    ## @param hidden.service.ports.mongodb MongoDB(&reg;) service port\n    ##\n    ports:\n      mongodb: 27017\n    ## @param hidden.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param hidden.service.annotations Provide any additional annotations that may be required\n    ##\n    annotations: {}\n\n## @section Metrics parameters\n##\n\nmetrics:\n  ## @param metrics.enabled Enable using a sidecar Prometheus exporter\n  ##\n  enabled: false\n  ## Bitnami MongoDB(&reg;) Promtheus Exporter image\n  ## ref: https://hub.docker.com/r/bitnami/mongodb-exporter/tags/\n  ## @param metrics.image.registry MongoDB(&reg;) Prometheus exporter image registry\n  ## @param metrics.image.repository MongoDB(&reg;) Prometheus exporter image repository\n  ## @param metrics.image.tag MongoDB(&reg;) Prometheus exporter image tag (immutable tags are recommended)\n  ## @param metrics.image.digest MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param metrics.image.pullPolicy MongoDB(&reg;) Prometheus exporter image pull policy\n  ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/mongodb-exporter\n    tag: 0.35.0-debian-11-r4\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n\n  ## @param metrics.username String with username for the metrics exporter\n  ## If undefined the root user will be used for the metrics exporter\n  username: \"\"\n  ## @param metrics.password String with password for the metrics exporter\n  ## If undefined but metrics.username is defined, a random password will be generated\n  password: \"\"\n  ## @param metrics.extraFlags String with extra flags to the metrics exporter\n  ## ref: https://github.com/percona/mongodb_exporter/blob/master/mongodb_exporter.go\n  ##\n  extraFlags: \"\"\n  ## Command and args for running the container (set to default if not set). Use array form\n  ## @param metrics.command Override default container command (useful when using custom images)\n  ## @param metrics.args Override default container args (useful when using custom images)\n  ##\n  command: []\n  args: []\n  ## Metrics exporter container resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param metrics.resources.limits The resources limits for Prometheus exporter containers\n  ## @param metrics.resources.requests The requested resources for Prometheus exporter containers\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    requests: {}\n  ## @param metrics.containerPort Port of the Prometheus metrics container\n  ##\n  containerPort: 9216\n  ## Prometheus Exporter service configuration\n  ##\n  service:\n    ## @param metrics.service.annotations [object] Annotations for Prometheus Exporter pods. Evaluated as a template.\n    ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n    ##\n    annotations:\n      prometheus.io/scrape: \"true\"\n      prometheus.io/port: \"{{ .Values.metrics.service.ports.metrics }}\"\n      prometheus.io/path: \"/metrics\"\n    ## @param metrics.service.type Type of the Prometheus metrics service\n    ##\n    type: ClusterIP\n    ## @param metrics.service.ports.metrics Port of the Prometheus metrics service\n    ##\n    ports:\n      metrics: 9216\n    ## @param metrics.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n  ## Metrics exporter liveness probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)\n  ## @param metrics.livenessProbe.enabled Enable livenessProbe\n  ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 15\n    periodSeconds: 5\n    timeoutSeconds: 5\n    failureThreshold: 3\n    successThreshold: 1\n  ## Metrics exporter readiness probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)\n  ## @param metrics.readinessProbe.enabled Enable readinessProbe\n  ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 5\n    timeoutSeconds: 1\n    failureThreshold: 3\n    successThreshold: 1\n  ## Slow starting containers can be protected through startup probes\n  ## Startup probes are available in Kubernetes version 1.16 and above\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes\n  ## @param metrics.startupProbe.enabled Enable startupProbe\n  ## @param metrics.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param metrics.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param metrics.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param metrics.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param metrics.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: false\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 30\n  ## @param metrics.customLivenessProbe Override default liveness probe for MongoDB(&reg;) containers\n  ## Ignored when livenessProbe.enabled=true\n  ##\n  customLivenessProbe: {}\n  ## @param metrics.customReadinessProbe Override default readiness probe for MongoDB(&reg;) containers\n  ## Ignored when readinessProbe.enabled=true\n  ##\n  customReadinessProbe: {}\n  ## @param metrics.customStartupProbe Override default startup probe for MongoDB(&reg;) containers\n  ## Ignored when startupProbe.enabled=true\n  ##\n  customStartupProbe: {}\n  ## Prometheus Service Monitor\n  ## ref: https://github.com/coreos/prometheus-operator\n  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md\n  ##\n  serviceMonitor:\n    ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using Prometheus Operator\n    ##\n    enabled: false\n    ## @param metrics.serviceMonitor.namespace Namespace which Prometheus is running in\n    ##\n    namespace: \"\"\n    ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped\n    ##\n    interval: 30s\n    ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended\n    ## e.g:\n    ## scrapeTimeout: 30s\n    ##\n    scrapeTimeout: \"\"\n    ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping.\n    ##\n    relabelings: []\n    ## @param metrics.serviceMonitor.metricRelabelings MetricsRelabelConfigs to apply to samples before ingestion.\n    ##\n    metricRelabelings: []\n    ## @param metrics.serviceMonitor.labels Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n    ##\n    labels: {}\n    ## @param metrics.serviceMonitor.selector Prometheus instance selector labels\n    ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration\n    ##\n    selector: {}\n    ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint\n    ##\n    honorLabels: false\n    ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.\n    ##\n    jobLabel: \"\"\n  ## Custom PrometheusRule to be defined\n  ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n  ##\n  prometheusRule:\n    ## @param metrics.prometheusRule.enabled Set this to true to create prometheusRules for Prometheus operator\n    ##\n    enabled: false\n    ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so prometheusRules will be discovered by Prometheus\n    ##\n    additionalLabels: {}\n    ## @param metrics.prometheusRule.namespace Namespace where prometheusRules resource should be created\n    ##\n    namespace: \"\"\n    ## @param metrics.prometheusRule.rules Rules to be created, check values for an example\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup\n    ##      https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\n    ##\n    ## This is an example of a rule, you should add the below code block under the \"rules\" param, removing the brackets\n    ## rules:\n    ## - alert: HighRequestLatency\n    ##   expr: job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5\n    ##   for: 10m\n    ##   labels:\n    ##     severity: page\n    ##   annotations:\n    ##     summary: High request latency\n    ##\n    rules: []\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/Chart.yaml",
    "content": "annotations:\n  category: Database\napiVersion: v2\nappVersion: 8.0.31\ndependencies:\n- name: common\n  repository: https://charts.bitnami.com/bitnami\n  tags:\n  - bitnami-common\n  version: 2.x.x\ndescription: MySQL is a fast, reliable, scalable, and easy to use open source relational\n  database system. Designed to handle mission-critical, heavy-load production applications.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/mysql\nicon: https://bitnami.com/assets/stacks/mysql/img/mysql-stack-220x234.png\nkeywords:\n- mysql\n- database\n- sql\n- cluster\n- high availability\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: mysql\nsources:\n- https://github.com/bitnami/containers/tree/main/bitnami/mysql\n- https://mysql.com\nversion: 9.4.4\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/README.md",
    "content": "<!--- app-name: MySQL -->\n\n# MySQL packaged by Bitnami\n\nMySQL is a fast, reliable, scalable, and easy to use open source relational database system. Designed to handle mission-critical, heavy-load production applications.\n\n[Overview of MySQL](http://www.mysql.com)\n\nTrademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.\n                           \n## TL;DR\n\n```bash\n$ helm repo add my-repo https://charts.bitnami.com/bitnami\n$ helm install my-release my-repo/mysql\n```\n\n## Introduction\n\nThis chart bootstraps a [MySQL](https://github.com/bitnami/containers/tree/main/bitnami/mysql) replication cluster deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n- PV provisioner support in the underlying infrastructure\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```bash\n$ helm repo add my-repo https://charts.bitnami.com/bitnami\n$ helm install my-release my-repo/mysql\n```\n\nThese commands deploy MySQL on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```bash\n$ helm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Parameters\n\n### Global parameters\n\n| Name                      | Description                                     | Value |\n| ------------------------- | ----------------------------------------------- | ----- |\n| `global.imageRegistry`    | Global Docker image registry                    | `\"\"`  |\n| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]`  |\n| `global.storageClass`     | Global StorageClass for Persistent Volume(s)    | `\"\"`  |\n\n\n### Common parameters\n\n| Name                     | Description                                                                                               | Value           |\n| ------------------------ | --------------------------------------------------------------------------------------------------------- | --------------- |\n| `kubeVersion`            | Force target Kubernetes version (using Helm capabilities if not set)                                      | `\"\"`            |\n| `nameOverride`           | String to partially override common.names.fullname template (will maintain the release name)              | `\"\"`            |\n| `fullnameOverride`       | String to fully override common.names.fullname template                                                   | `\"\"`            |\n| `namespaceOverride`      | String to fully override common.names.namespace                                                           | `\"\"`            |\n| `clusterDomain`          | Cluster domain                                                                                            | `cluster.local` |\n| `commonAnnotations`      | Common annotations to add to all MySQL resources (sub-charts are not considered). Evaluated as a template | `{}`            |\n| `commonLabels`           | Common labels to add to all MySQL resources (sub-charts are not considered). Evaluated as a template      | `{}`            |\n| `extraDeploy`            | Array with extra yaml to deploy with the chart. Evaluated as a template                                   | `[]`            |\n| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden)                   | `false`         |\n| `diagnosticMode.command` | Command to override all containers in the deployment                                                      | `[\"sleep\"]`     |\n| `diagnosticMode.args`    | Args to override all containers in the deployment                                                         | `[\"infinity\"]`  |\n\n\n### MySQL common parameters\n\n| Name                       | Description                                                                                                                                                                         | Value                  |\n| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |\n| `image.registry`           | MySQL image registry                                                                                                                                                                | `docker.io`            |\n| `image.repository`         | MySQL image repository                                                                                                                                                              | `bitnami/mysql`        |\n| `image.tag`                | MySQL image tag (immutable tags are recommended)                                                                                                                                    | `8.0.31-debian-11-r10` |\n| `image.digest`             | MySQL image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                               | `\"\"`                   |\n| `image.pullPolicy`         | MySQL image pull policy                                                                                                                                                             | `IfNotPresent`         |\n| `image.pullSecrets`        | Specify docker-registry secret names as an array                                                                                                                                    | `[]`                   |\n| `image.debug`              | Specify if debug logs should be enabled                                                                                                                                             | `false`                |\n| `architecture`             | MySQL architecture (`standalone` or `replication`)                                                                                                                                  | `standalone`           |\n| `auth.rootPassword`        | Password for the `root` user. Ignored if existing secret is provided                                                                                                                | `\"\"`                   |\n| `auth.createDatabase`      | Wheter to create the .Values.auth.database or not                                                                                                                                   | `true`                 |\n| `auth.database`            | Name for a custom database to create                                                                                                                                                | `my_database`          |\n| `auth.username`            | Name for a custom user to create                                                                                                                                                    | `\"\"`                   |\n| `auth.password`            | Password for the new user. Ignored if existing secret is provided                                                                                                                   | `\"\"`                   |\n| `auth.replicationUser`     | MySQL replication user                                                                                                                                                              | `replicator`           |\n| `auth.replicationPassword` | MySQL replication user password. Ignored if existing secret is provided                                                                                                             | `\"\"`                   |\n| `auth.existingSecret`      | Use existing secret for password details. The secret has to contain the keys `mysql-root-password`, `mysql-replication-password` and `mysql-password`                               | `\"\"`                   |\n| `auth.usePasswordFiles`    | Mount credentials as files instead of using an environment variable                                                                                                                 | `false`                |\n| `auth.customPasswordFiles` | Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` | `{}`                   |\n| `initdbScripts`            | Dictionary of initdb scripts                                                                                                                                                        | `{}`                   |\n| `initdbScriptsConfigMap`   | ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`)                                                                                                                 | `\"\"`                   |\n\n\n### MySQL Primary parameters\n\n| Name                                            | Description                                                                                                     | Value               |\n| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------- |\n| `primary.name`                                  | Name of the primary database (eg primary, master, leader, ...)                                                  | `primary`           |\n| `primary.command`                               | Override default container command on MySQL Primary container(s) (useful when using custom images)              | `[]`                |\n| `primary.args`                                  | Override default container args on MySQL Primary container(s) (useful when using custom images)                 | `[]`                |\n| `primary.lifecycleHooks`                        | for the MySQL Primary container(s) to automate configuration before or after startup                            | `{}`                |\n| `primary.hostAliases`                           | Deployment pod host aliases                                                                                     | `[]`                |\n| `primary.configuration`                         | Configure MySQL Primary with a custom my.cnf file                                                               | `\"\"`                |\n| `primary.existingConfigmap`                     | Name of existing ConfigMap with MySQL Primary configuration.                                                    | `\"\"`                |\n| `primary.updateStrategy.type`                   | Update strategy type for the MySQL primary statefulset                                                          | `RollingUpdate`     |\n| `primary.podAnnotations`                        | Additional pod annotations for MySQL primary pods                                                               | `{}`                |\n| `primary.podAffinityPreset`                     | MySQL primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`       | `\"\"`                |\n| `primary.podAntiAffinityPreset`                 | MySQL primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`  | `soft`              |\n| `primary.nodeAffinityPreset.type`               | MySQL primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `\"\"`                |\n| `primary.nodeAffinityPreset.key`                | MySQL primary node label key to match Ignored if `primary.affinity` is set.                                     | `\"\"`                |\n| `primary.nodeAffinityPreset.values`             | MySQL primary node label values to match. Ignored if `primary.affinity` is set.                                 | `[]`                |\n| `primary.affinity`                              | Affinity for MySQL primary pods assignment                                                                      | `{}`                |\n| `primary.nodeSelector`                          | Node labels for MySQL primary pods assignment                                                                   | `{}`                |\n| `primary.tolerations`                           | Tolerations for MySQL primary pods assignment                                                                   | `[]`                |\n| `primary.priorityClassName`                     | MySQL primary pods' priorityClassName                                                                           | `\"\"`                |\n| `primary.runtimeClassName`                      | MySQL primary pods' runtimeClassName                                                                            | `\"\"`                |\n| `primary.schedulerName`                         | Name of the k8s scheduler (other than default)                                                                  | `\"\"`                |\n| `primary.terminationGracePeriodSeconds`         | In seconds, time the given to the MySQL primary pod needs to terminate gracefully                               | `\"\"`                |\n| `primary.topologySpreadConstraints`             | Topology Spread Constraints for pod assignment                                                                  | `[]`                |\n| `primary.podManagementPolicy`                   | podManagementPolicy to manage scaling operation of MySQL primary pods                                           | `\"\"`                |\n| `primary.podSecurityContext.enabled`            | Enable security context for MySQL primary pods                                                                  | `true`              |\n| `primary.podSecurityContext.fsGroup`            | Group ID for the mounted volumes' filesystem                                                                    | `1001`              |\n| `primary.containerSecurityContext.enabled`      | MySQL primary container securityContext                                                                         | `true`              |\n| `primary.containerSecurityContext.runAsUser`    | User ID for the MySQL primary container                                                                         | `1001`              |\n| `primary.containerSecurityContext.runAsNonRoot` | Set MySQL primary container's Security Context runAsNonRoot                                                     | `true`              |\n| `primary.resources.limits`                      | The resources limits for MySQL primary containers                                                               | `{}`                |\n| `primary.resources.requests`                    | The requested resources for MySQL primary containers                                                            | `{}`                |\n| `primary.livenessProbe.enabled`                 | Enable livenessProbe                                                                                            | `true`              |\n| `primary.livenessProbe.initialDelaySeconds`     | Initial delay seconds for livenessProbe                                                                         | `5`                 |\n| `primary.livenessProbe.periodSeconds`           | Period seconds for livenessProbe                                                                                | `10`                |\n| `primary.livenessProbe.timeoutSeconds`          | Timeout seconds for livenessProbe                                                                               | `1`                 |\n| `primary.livenessProbe.failureThreshold`        | Failure threshold for livenessProbe                                                                             | `3`                 |\n| `primary.livenessProbe.successThreshold`        | Success threshold for livenessProbe                                                                             | `1`                 |\n| `primary.readinessProbe.enabled`                | Enable readinessProbe                                                                                           | `true`              |\n| `primary.readinessProbe.initialDelaySeconds`    | Initial delay seconds for readinessProbe                                                                        | `5`                 |\n| `primary.readinessProbe.periodSeconds`          | Period seconds for readinessProbe                                                                               | `10`                |\n| `primary.readinessProbe.timeoutSeconds`         | Timeout seconds for readinessProbe                                                                              | `1`                 |\n| `primary.readinessProbe.failureThreshold`       | Failure threshold for readinessProbe                                                                            | `3`                 |\n| `primary.readinessProbe.successThreshold`       | Success threshold for readinessProbe                                                                            | `1`                 |\n| `primary.startupProbe.enabled`                  | Enable startupProbe                                                                                             | `true`              |\n| `primary.startupProbe.initialDelaySeconds`      | Initial delay seconds for startupProbe                                                                          | `15`                |\n| `primary.startupProbe.periodSeconds`            | Period seconds for startupProbe                                                                                 | `10`                |\n| `primary.startupProbe.timeoutSeconds`           | Timeout seconds for startupProbe                                                                                | `1`                 |\n| `primary.startupProbe.failureThreshold`         | Failure threshold for startupProbe                                                                              | `10`                |\n| `primary.startupProbe.successThreshold`         | Success threshold for startupProbe                                                                              | `1`                 |\n| `primary.customLivenessProbe`                   | Override default liveness probe for MySQL primary containers                                                    | `{}`                |\n| `primary.customReadinessProbe`                  | Override default readiness probe for MySQL primary containers                                                   | `{}`                |\n| `primary.customStartupProbe`                    | Override default startup probe for MySQL primary containers                                                     | `{}`                |\n| `primary.extraFlags`                            | MySQL primary additional command line flags                                                                     | `\"\"`                |\n| `primary.extraEnvVars`                          | Extra environment variables to be set on MySQL primary containers                                               | `[]`                |\n| `primary.extraEnvVarsCM`                        | Name of existing ConfigMap containing extra env vars for MySQL primary containers                               | `\"\"`                |\n| `primary.extraEnvVarsSecret`                    | Name of existing Secret containing extra env vars for MySQL primary containers                                  | `\"\"`                |\n| `primary.persistence.enabled`                   | Enable persistence on MySQL primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir            | `true`              |\n| `primary.persistence.existingClaim`             | Name of an existing `PersistentVolumeClaim` for MySQL primary replicas                                          | `\"\"`                |\n| `primary.persistence.subPath`                   | The name of a volume's sub path to mount for persistence                                                        | `\"\"`                |\n| `primary.persistence.storageClass`              | MySQL primary persistent volume storage Class                                                                   | `\"\"`                |\n| `primary.persistence.annotations`               | MySQL primary persistent volume claim annotations                                                               | `{}`                |\n| `primary.persistence.accessModes`               | MySQL primary persistent volume access Modes                                                                    | `[\"ReadWriteOnce\"]` |\n| `primary.persistence.size`                      | MySQL primary persistent volume size                                                                            | `8Gi`               |\n| `primary.persistence.selector`                  | Selector to match an existing Persistent Volume                                                                 | `{}`                |\n| `primary.extraVolumes`                          | Optionally specify extra list of additional volumes to the MySQL Primary pod(s)                                 | `[]`                |\n| `primary.extraVolumeMounts`                     | Optionally specify extra list of additional volumeMounts for the MySQL Primary container(s)                     | `[]`                |\n| `primary.initContainers`                        | Add additional init containers for the MySQL Primary pod(s)                                                     | `[]`                |\n| `primary.sidecars`                              | Add additional sidecar containers for the MySQL Primary pod(s)                                                  | `[]`                |\n| `primary.service.type`                          | MySQL Primary K8s service type                                                                                  | `ClusterIP`         |\n| `primary.service.ports.mysql`                   | MySQL Primary K8s service port                                                                                  | `3306`              |\n| `primary.service.nodePorts.mysql`               | MySQL Primary K8s service node port                                                                             | `\"\"`                |\n| `primary.service.clusterIP`                     | MySQL Primary K8s service clusterIP IP                                                                          | `\"\"`                |\n| `primary.service.loadBalancerIP`                | MySQL Primary loadBalancerIP if service type is `LoadBalancer`                                                  | `\"\"`                |\n| `primary.service.externalTrafficPolicy`         | Enable client source IP preservation                                                                            | `Cluster`           |\n| `primary.service.loadBalancerSourceRanges`      | Addresses that are allowed when MySQL Primary service is LoadBalancer                                           | `[]`                |\n| `primary.service.extraPorts`                    | Extra ports to expose (normally used with the `sidecar` value)                                                  | `[]`                |\n| `primary.service.annotations`                   | Additional custom annotations for MySQL primary service                                                         | `{}`                |\n| `primary.service.sessionAffinity`               | Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"                                            | `None`              |\n| `primary.service.sessionAffinityConfig`         | Additional settings for the sessionAffinity                                                                     | `{}`                |\n| `primary.service.headless.annotations`          | Additional custom annotations for headless MySQL primary service.                                               | `{}`                |\n| `primary.pdb.create`                            | Enable/disable a Pod Disruption Budget creation for MySQL primary pods                                          | `false`             |\n| `primary.pdb.minAvailable`                      | Minimum number/percentage of MySQL primary pods that should remain scheduled                                    | `1`                 |\n| `primary.pdb.maxUnavailable`                    | Maximum number/percentage of MySQL primary pods that may be made unavailable                                    | `\"\"`                |\n| `primary.podLabels`                             | MySQL Primary pod label. If labels are same as commonLabels , this will take precedence                         | `{}`                |\n\n\n### MySQL Secondary parameters\n\n| Name                                              | Description                                                                                                         | Value               |\n| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------- |\n| `secondary.name`                                  | Name of the secondary database (eg secondary, slave, ...)                                                           | `secondary`         |\n| `secondary.replicaCount`                          | Number of MySQL secondary replicas                                                                                  | `1`                 |\n| `secondary.hostAliases`                           | Deployment pod host aliases                                                                                         | `[]`                |\n| `secondary.command`                               | Override default container command on MySQL Secondary container(s) (useful when using custom images)                | `[]`                |\n| `secondary.args`                                  | Override default container args on MySQL Secondary container(s) (useful when using custom images)                   | `[]`                |\n| `secondary.lifecycleHooks`                        | for the MySQL Secondary container(s) to automate configuration before or after startup                              | `{}`                |\n| `secondary.configuration`                         | Configure MySQL Secondary with a custom my.cnf file                                                                 | `\"\"`                |\n| `secondary.existingConfigmap`                     | Name of existing ConfigMap with MySQL Secondary configuration.                                                      | `\"\"`                |\n| `secondary.updateStrategy.type`                   | Update strategy type for the MySQL secondary statefulset                                                            | `RollingUpdate`     |\n| `secondary.podAnnotations`                        | Additional pod annotations for MySQL secondary pods                                                                 | `{}`                |\n| `secondary.podAffinityPreset`                     | MySQL secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`       | `\"\"`                |\n| `secondary.podAntiAffinityPreset`                 | MySQL secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`  | `soft`              |\n| `secondary.nodeAffinityPreset.type`               | MySQL secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `\"\"`                |\n| `secondary.nodeAffinityPreset.key`                | MySQL secondary node label key to match Ignored if `secondary.affinity` is set.                                     | `\"\"`                |\n| `secondary.nodeAffinityPreset.values`             | MySQL secondary node label values to match. Ignored if `secondary.affinity` is set.                                 | `[]`                |\n| `secondary.affinity`                              | Affinity for MySQL secondary pods assignment                                                                        | `{}`                |\n| `secondary.nodeSelector`                          | Node labels for MySQL secondary pods assignment                                                                     | `{}`                |\n| `secondary.tolerations`                           | Tolerations for MySQL secondary pods assignment                                                                     | `[]`                |\n| `secondary.priorityClassName`                     | MySQL secondary pods' priorityClassName                                                                             | `\"\"`                |\n| `secondary.runtimeClassName`                      | MySQL secondary pods' runtimeClassName                                                                              | `\"\"`                |\n| `secondary.schedulerName`                         | Name of the k8s scheduler (other than default)                                                                      | `\"\"`                |\n| `secondary.terminationGracePeriodSeconds`         | In seconds, time the given to the MySQL secondary pod needs to terminate gracefully                                 | `\"\"`                |\n| `secondary.topologySpreadConstraints`             | Topology Spread Constraints for pod assignment                                                                      | `[]`                |\n| `secondary.podManagementPolicy`                   | podManagementPolicy to manage scaling operation of MySQL secondary pods                                             | `\"\"`                |\n| `secondary.podSecurityContext.enabled`            | Enable security context for MySQL secondary pods                                                                    | `true`              |\n| `secondary.podSecurityContext.fsGroup`            | Group ID for the mounted volumes' filesystem                                                                        | `1001`              |\n| `secondary.containerSecurityContext.enabled`      | MySQL secondary container securityContext                                                                           | `true`              |\n| `secondary.containerSecurityContext.runAsUser`    | User ID for the MySQL secondary container                                                                           | `1001`              |\n| `secondary.containerSecurityContext.runAsNonRoot` | Set MySQL secondary container's Security Context runAsNonRoot                                                       | `true`              |\n| `secondary.resources.limits`                      | The resources limits for MySQL secondary containers                                                                 | `{}`                |\n| `secondary.resources.requests`                    | The requested resources for MySQL secondary containers                                                              | `{}`                |\n| `secondary.livenessProbe.enabled`                 | Enable livenessProbe                                                                                                | `true`              |\n| `secondary.livenessProbe.initialDelaySeconds`     | Initial delay seconds for livenessProbe                                                                             | `5`                 |\n| `secondary.livenessProbe.periodSeconds`           | Period seconds for livenessProbe                                                                                    | `10`                |\n| `secondary.livenessProbe.timeoutSeconds`          | Timeout seconds for livenessProbe                                                                                   | `1`                 |\n| `secondary.livenessProbe.failureThreshold`        | Failure threshold for livenessProbe                                                                                 | `3`                 |\n| `secondary.livenessProbe.successThreshold`        | Success threshold for livenessProbe                                                                                 | `1`                 |\n| `secondary.readinessProbe.enabled`                | Enable readinessProbe                                                                                               | `true`              |\n| `secondary.readinessProbe.initialDelaySeconds`    | Initial delay seconds for readinessProbe                                                                            | `5`                 |\n| `secondary.readinessProbe.periodSeconds`          | Period seconds for readinessProbe                                                                                   | `10`                |\n| `secondary.readinessProbe.timeoutSeconds`         | Timeout seconds for readinessProbe                                                                                  | `1`                 |\n| `secondary.readinessProbe.failureThreshold`       | Failure threshold for readinessProbe                                                                                | `3`                 |\n| `secondary.readinessProbe.successThreshold`       | Success threshold for readinessProbe                                                                                | `1`                 |\n| `secondary.startupProbe.enabled`                  | Enable startupProbe                                                                                                 | `true`              |\n| `secondary.startupProbe.initialDelaySeconds`      | Initial delay seconds for startupProbe                                                                              | `15`                |\n| `secondary.startupProbe.periodSeconds`            | Period seconds for startupProbe                                                                                     | `10`                |\n| `secondary.startupProbe.timeoutSeconds`           | Timeout seconds for startupProbe                                                                                    | `1`                 |\n| `secondary.startupProbe.failureThreshold`         | Failure threshold for startupProbe                                                                                  | `15`                |\n| `secondary.startupProbe.successThreshold`         | Success threshold for startupProbe                                                                                  | `1`                 |\n| `secondary.customLivenessProbe`                   | Override default liveness probe for MySQL secondary containers                                                      | `{}`                |\n| `secondary.customReadinessProbe`                  | Override default readiness probe for MySQL secondary containers                                                     | `{}`                |\n| `secondary.customStartupProbe`                    | Override default startup probe for MySQL secondary containers                                                       | `{}`                |\n| `secondary.extraFlags`                            | MySQL secondary additional command line flags                                                                       | `\"\"`                |\n| `secondary.extraEnvVars`                          | An array to add extra environment variables on MySQL secondary containers                                           | `[]`                |\n| `secondary.extraEnvVarsCM`                        | Name of existing ConfigMap containing extra env vars for MySQL secondary containers                                 | `\"\"`                |\n| `secondary.extraEnvVarsSecret`                    | Name of existing Secret containing extra env vars for MySQL secondary containers                                    | `\"\"`                |\n| `secondary.persistence.enabled`                   | Enable persistence on MySQL secondary replicas using a `PersistentVolumeClaim`                                      | `true`              |\n| `secondary.persistence.existingClaim`             | Name of an existing `PersistentVolumeClaim` for MySQL secondary replicas                                            | `\"\"`                |\n| `secondary.persistence.subPath`                   | The name of a volume's sub path to mount for persistence                                                            | `\"\"`                |\n| `secondary.persistence.storageClass`              | MySQL secondary persistent volume storage Class                                                                     | `\"\"`                |\n| `secondary.persistence.annotations`               | MySQL secondary persistent volume claim annotations                                                                 | `{}`                |\n| `secondary.persistence.accessModes`               | MySQL secondary persistent volume access Modes                                                                      | `[\"ReadWriteOnce\"]` |\n| `secondary.persistence.size`                      | MySQL secondary persistent volume size                                                                              | `8Gi`               |\n| `secondary.persistence.selector`                  | Selector to match an existing Persistent Volume                                                                     | `{}`                |\n| `secondary.extraVolumes`                          | Optionally specify extra list of additional volumes to the MySQL secondary pod(s)                                   | `[]`                |\n| `secondary.extraVolumeMounts`                     | Optionally specify extra list of additional volumeMounts for the MySQL secondary container(s)                       | `[]`                |\n| `secondary.initContainers`                        | Add additional init containers for the MySQL secondary pod(s)                                                       | `[]`                |\n| `secondary.sidecars`                              | Add additional sidecar containers for the MySQL secondary pod(s)                                                    | `[]`                |\n| `secondary.service.type`                          | MySQL secondary Kubernetes service type                                                                             | `ClusterIP`         |\n| `secondary.service.ports.mysql`                   | MySQL secondary Kubernetes service port                                                                             | `3306`              |\n| `secondary.service.nodePorts.mysql`               | MySQL secondary Kubernetes service node port                                                                        | `\"\"`                |\n| `secondary.service.clusterIP`                     | MySQL secondary Kubernetes service clusterIP IP                                                                     | `\"\"`                |\n| `secondary.service.loadBalancerIP`                | MySQL secondary loadBalancerIP if service type is `LoadBalancer`                                                    | `\"\"`                |\n| `secondary.service.externalTrafficPolicy`         | Enable client source IP preservation                                                                                | `Cluster`           |\n| `secondary.service.loadBalancerSourceRanges`      | Addresses that are allowed when MySQL secondary service is LoadBalancer                                             | `[]`                |\n| `secondary.service.extraPorts`                    | Extra ports to expose (normally used with the `sidecar` value)                                                      | `[]`                |\n| `secondary.service.annotations`                   | Additional custom annotations for MySQL secondary service                                                           | `{}`                |\n| `secondary.service.sessionAffinity`               | Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"                                                | `None`              |\n| `secondary.service.sessionAffinityConfig`         | Additional settings for the sessionAffinity                                                                         | `{}`                |\n| `secondary.service.headless.annotations`          | Additional custom annotations for headless MySQL secondary service.                                                 | `{}`                |\n| `secondary.pdb.create`                            | Enable/disable a Pod Disruption Budget creation for MySQL secondary pods                                            | `false`             |\n| `secondary.pdb.minAvailable`                      | Minimum number/percentage of MySQL secondary pods that should remain scheduled                                      | `1`                 |\n| `secondary.pdb.maxUnavailable`                    | Maximum number/percentage of MySQL secondary pods that may be made unavailable                                      | `\"\"`                |\n| `secondary.podLabels`                             | Additional pod labels for MySQL secondary pods                                                                      | `{}`                |\n\n\n### RBAC parameters\n\n| Name                                          | Description                                                    | Value   |\n| --------------------------------------------- | -------------------------------------------------------------- | ------- |\n| `serviceAccount.create`                       | Enable the creation of a ServiceAccount for MySQL pods         | `true`  |\n| `serviceAccount.name`                         | Name of the created ServiceAccount                             | `\"\"`    |\n| `serviceAccount.annotations`                  | Annotations for MySQL Service Account                          | `{}`    |\n| `serviceAccount.automountServiceAccountToken` | Automount service account token for the server service account | `true`  |\n| `rbac.create`                                 | Whether to create & use RBAC resources or not                  | `false` |\n| `rbac.rules`                                  | Custom RBAC rules to set                                       | `[]`    |\n\n\n### Network Policy\n\n| Name                                       | Description                                                                                                     | Value   |\n| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | ------- |\n| `networkPolicy.enabled`                    | Enable creation of NetworkPolicy resources                                                                      | `false` |\n| `networkPolicy.allowExternal`              | The Policy model to apply.                                                                                      | `true`  |\n| `networkPolicy.explicitNamespacesSelector` | A Kubernetes LabelSelector to explicitly select namespaces from which ingress traffic could be allowed to MySQL | `{}`    |\n\n\n### Volume Permissions parameters\n\n| Name                                  | Description                                                                                                                       | Value                   |\n| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |\n| `volumePermissions.enabled`           | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`              | `false`                 |\n| `volumePermissions.image.registry`    | Init container volume-permissions image registry                                                                                  | `docker.io`             |\n| `volumePermissions.image.repository`  | Init container volume-permissions image repository                                                                                | `bitnami/bitnami-shell` |\n| `volumePermissions.image.tag`         | Init container volume-permissions image tag (immutable tags are recommended)                                                      | `11-debian-11-r50`      |\n| `volumePermissions.image.digest`      | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                    |\n| `volumePermissions.image.pullPolicy`  | Init container volume-permissions image pull policy                                                                               | `IfNotPresent`          |\n| `volumePermissions.image.pullSecrets` | Specify docker-registry secret names as an array                                                                                  | `[]`                    |\n| `volumePermissions.resources`         | Init container volume-permissions resources                                                                                       | `{}`                    |\n\n\n### Metrics parameters\n\n| Name                                         | Description                                                                                                                    | Value                     |\n| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |\n| `metrics.enabled`                            | Start a side-car prometheus exporter                                                                                           | `false`                   |\n| `metrics.image.registry`                     | Exporter image registry                                                                                                        | `docker.io`               |\n| `metrics.image.repository`                   | Exporter image repository                                                                                                      | `bitnami/mysqld-exporter` |\n| `metrics.image.tag`                          | Exporter image tag (immutable tags are recommended)                                                                            | `0.14.0-debian-11-r55`    |\n| `metrics.image.digest`                       | Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                       | `\"\"`                      |\n| `metrics.image.pullPolicy`                   | Exporter image pull policy                                                                                                     | `IfNotPresent`            |\n| `metrics.image.pullSecrets`                  | Specify docker-registry secret names as an array                                                                               | `[]`                      |\n| `metrics.service.type`                       | Kubernetes service type for MySQL Prometheus Exporter                                                                          | `ClusterIP`               |\n| `metrics.service.port`                       | MySQL Prometheus Exporter service port                                                                                         | `9104`                    |\n| `metrics.service.annotations`                | Prometheus exporter service annotations                                                                                        | `{}`                      |\n| `metrics.extraArgs.primary`                  | Extra args to be passed to mysqld_exporter on Primary pods                                                                     | `[]`                      |\n| `metrics.extraArgs.secondary`                | Extra args to be passed to mysqld_exporter on Secondary pods                                                                   | `[]`                      |\n| `metrics.resources.limits`                   | The resources limits for MySQL prometheus exporter containers                                                                  | `{}`                      |\n| `metrics.resources.requests`                 | The requested resources for MySQL prometheus exporter containers                                                               | `{}`                      |\n| `metrics.livenessProbe.enabled`              | Enable livenessProbe                                                                                                           | `true`                    |\n| `metrics.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                                                        | `120`                     |\n| `metrics.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                                               | `10`                      |\n| `metrics.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                                              | `1`                       |\n| `metrics.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                                            | `3`                       |\n| `metrics.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                                            | `1`                       |\n| `metrics.readinessProbe.enabled`             | Enable readinessProbe                                                                                                          | `true`                    |\n| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                                                       | `30`                      |\n| `metrics.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                                              | `10`                      |\n| `metrics.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                                             | `1`                       |\n| `metrics.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                                           | `3`                       |\n| `metrics.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                                           | `1`                       |\n| `metrics.serviceMonitor.enabled`             | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator                                                   | `false`                   |\n| `metrics.serviceMonitor.namespace`           | Specify the namespace in which the serviceMonitor resource will be created                                                     | `\"\"`                      |\n| `metrics.serviceMonitor.jobLabel`            | The name of the label on the target service to use as the job name in prometheus.                                              | `\"\"`                      |\n| `metrics.serviceMonitor.interval`            | Specify the interval at which metrics should be scraped                                                                        | `30s`                     |\n| `metrics.serviceMonitor.scrapeTimeout`       | Specify the timeout after which the scrape is ended                                                                            | `\"\"`                      |\n| `metrics.serviceMonitor.relabelings`         | RelabelConfigs to apply to samples before scraping                                                                             | `[]`                      |\n| `metrics.serviceMonitor.metricRelabelings`   | MetricRelabelConfigs to apply to samples before ingestion                                                                      | `[]`                      |\n| `metrics.serviceMonitor.selector`            | ServiceMonitor selector labels                                                                                                 | `{}`                      |\n| `metrics.serviceMonitor.honorLabels`         | Specify honorLabels parameter to add the scrape endpoint                                                                       | `false`                   |\n| `metrics.serviceMonitor.labels`              | Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with          | `{}`                      |\n| `metrics.serviceMonitor.annotations`         | ServiceMonitor annotations                                                                                                     | `{}`                      |\n| `metrics.prometheusRule.enabled`             | Creates a Prometheus Operator prometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) | `false`                   |\n| `metrics.prometheusRule.namespace`           | Namespace for the prometheusRule Resource (defaults to the Release Namespace)                                                  | `\"\"`                      |\n| `metrics.prometheusRule.additionalLabels`    | Additional labels that can be used so prometheusRule will be discovered by Prometheus                                          | `{}`                      |\n| `metrics.prometheusRule.rules`               | Prometheus Rule definitions                                                                                                    | `[]`                      |\n\n\nThe above parameters map to the env variables defined in [bitnami/mysql](https://github.com/bitnami/containers/tree/main/bitnami/mysql). For more information please refer to the [bitnami/mysql](https://github.com/bitnami/containers/tree/main/bitnami/mysql) image documentation.\n\nSpecify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```bash\n$ helm install my-release \\\n  --set auth.rootPassword=secretpassword,auth.database=app_database \\\n    my-repo/mysql\n```\n\nThe above command sets the MySQL `root` account password to `secretpassword`. Additionally it creates a database named `app_database`.\n\n> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.\n\nAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,\n\n```bash\n$ helm install my-release -f values.yaml my-repo/mysql\n```\n\n> **Tip**: You can use the default [values.yaml](values.yaml)\n\n## Configuration and installation details\n\n### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)\n\nIt is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.\n\nBitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.\n\n### Use a different MySQL version\n\nTo modify the application version used in this chart, specify a different version of the image using the `image.tag` parameter and/or a different repository using the `image.repository` parameter. Refer to the [chart documentation for more information on these parameters and how to use them with images from a private registry](https://docs.bitnami.com/kubernetes/infrastructure/mysql/configuration/change-image-version/).\n\n### Customize a new MySQL instance\n\nThe [Bitnami MySQL](https://github.com/bitnami/containers/tree/main/bitnami/mysql) image allows you to use your custom scripts to initialize a fresh instance. Custom scripts may be specified using the `initdbScripts` parameter. Alternatively, an external ConfigMap may be created with all the initialization scripts and the ConfigMap passed to the chart via the `initdbScriptsConfigMap` parameter. Note that this will override the `initdbScripts` parameter.\n\nThe allowed extensions are `.sh`, `.sql` and `.sql.gz`.\n\nThese scripts are treated differently depending on their extension. While `.sh` scripts are executed on all the nodes, `.sql` and `.sql.gz` scripts are only executed on the primary nodes. This is because `.sh` scripts support conditional tests to identify the type of node they are running on, while such tests are not supported in `.sql` or `sql.gz` files.\n\nRefer to the [chart documentation for more information and a usage example](http://docs.bitnami.com/kubernetes/infrastructure/mysql/configuration/customize-new-instance/).\n\n### Sidecars and Init Containers\n\nIf you have a need for additional containers to run within the same pod as MySQL, you can do so via the `sidecars` config parameter. Simply define your container according to the Kubernetes container spec.\n\n```yaml\nsidecars:\n  - name: your-image-name\n    image: your-image\n    imagePullPolicy: Always\n    ports:\n      - name: portname\n       containerPort: 1234\n```\n\nSimilarly, you can add extra init containers using the `initContainers` parameter.\n\n```yaml\ninitContainers:\n  - name: your-image-name\n    image: your-image\n    imagePullPolicy: Always\n    ports:\n      - name: portname\n        containerPort: 1234\n```\n\n## Persistence\n\nThe [Bitnami MySQL](https://github.com/bitnami/containers/tree/main/bitnami/mysql) image stores the MySQL data and configurations at the `/bitnami/mysql` path of the container.\n\nThe chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) volume at this location. The volume is created using dynamic volume provisioning by default. An existing PersistentVolumeClaim can also be defined for this purpose.\n\nIf you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/).\n\n## Network Policy\n\nTo enable network policy for MySQL, install [a networking plugin that implements the Kubernetes NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin), and set `networkPolicy.enabled` to `true`.\n\nFor Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting the DefaultDeny namespace annotation. Note: this will enforce policy for _all_ pods in the namespace:\n\n```console\n$ kubectl annotate namespace default \"net.beta.kubernetes.io/network-policy={\\\"ingress\\\":{\\\"isolation\\\":\\\"DefaultDeny\\\"}}\"\n```\n\nWith NetworkPolicy enabled, traffic will be limited to just port 3306.\n\nFor more precise policy, set `networkPolicy.allowExternal=false`. This will only allow pods with the generated client label to connect to MySQL.\nThis label will be displayed in the output of a successful install.\n\n## Pod affinity\n\nThis chart allows you to set your custom affinity using the `XXX.affinity` parameter(s). Find more information about Pod affinity in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).\n\nAs an alternative, you can use the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `XXX.podAffinityPreset`, `XXX.podAntiAffinityPreset`, or `XXX.nodeAffinityPreset` parameters.\n\n## Troubleshooting\n\nFind more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).\n\n## Upgrading\n\nIt's necessary to set the `auth.rootPassword` parameter when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Administrator credentials' section. Please note down the password and run the command below to upgrade your chart:\n\n```bash\n$ helm upgrade my-release my-repo/mysql --set auth.rootPassword=[ROOT_PASSWORD]\n```\n\n| Note: you need to substitute the placeholder _[ROOT_PASSWORD]_ with the value obtained in the installation notes.\n\n### To 9.0.0\n\nThis major release renames several values in this chart and adds missing features, in order to be aligned with the rest of the assets in the Bitnami charts repository.\n\nAffected values:\n\n- `schedulerName` was renamed as `primary.schedulerName` and `secondary.schedulerName`.\n- The way how passwords are handled has been refactored and value `auth.forcePassword` has been removed. Now, the password configuration will have the following priority:\n  1. Search for an already existing 'Secret' resource and reuse previous password.\n  2. Password provided via the values.yaml\n  3. If no secret existed, and no password was provided, the bitnami/mysql chart will set a randomly generated password.\n- `primary.service.port` was renamed as `primary.service.ports.mysql`.\n- `secondary.service.port` was renamed as `secondary.service.ports.mysql`.\n- `primary.service.nodePort` was renamed as `primary.service.nodePorts.mysql`.\n- `secondary.service.nodePort` was renamed as `secondary.service.nodePorts.mysql`.\n- `primary.updateStrategy` and `secondary.updateStrategy` are now interpreted as an object and not a string.\n- Values `primary.rollingUpdatePartition` and `secondary.rollingUpdatePartition` have been removed. In cases were they are needed, they can be set inside `.*updateStrategy`.\n- `primary.pdb.enabled` was renamed as `primary.pdb.create`.\n- `secondary.pdb.enabled` was renamed as `secondary.pdb.create`.\n- `metrics.serviceMonitor.additionalLabels` was renamed as `metrics.serviceMonitor.labels`\n- `metrics.serviceMonitor.relabellings` was removed, previously used to configured `metricRelabelings` field. We introduced two new values: `metrics.serviceMonitor.relabelings` and `metrics.serviceMonitor.metricRelabelings` that can be used to configured the serviceMonitor homonimous field.\n\n### To 8.0.0\n\n- Several parameters were renamed or disappeared in favor of new ones on this major version:\n  - The terms *master* and *slave* have been replaced by the terms *primary* and *secondary*. Therefore, parameters prefixed with `master` or `slave` are now prefixed with `primary` or `secondary`, respectively.\n  - Credentials parameters are reorganized under the `auth` parameter.\n  - `replication.enabled` parameter is deprecated in favor of `architecture` parameter that accepts two values: `standalone` and `replication`.\n- Chart labels were adapted to follow the [Helm charts standard labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels).\n- This version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade.\n\nConsequences:\n\n- Backwards compatibility is not guaranteed. To upgrade to `8.0.0`, install a new release of the MySQL chart, and migrate the data from your previous release. You have 2 alternatives to do so:\n  - Create a backup of the database, and restore it on the new release using tools such as [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html).\n  - Reuse the PVC used to hold the master data on your previous release. To do so, use the `primary.persistence.existingClaim` parameter. The following example assumes that the release name is `mysql`:\n\n```bash\n$ helm install mysql my-repo/mysql --set auth.rootPassword=[ROOT_PASSWORD] --set primary.persistence.existingClaim=[EXISTING_PVC]\n```\n\n| Note: you need to substitute the placeholder _[EXISTING_PVC]_ with the name of the PVC used on your previous release, and _[ROOT_PASSWORD]_ with the root password used in your previous release.\n\n### To 7.0.0\n\n[On November 13, 2020, Helm v2 support formally ended](https://github.com/helm/charts#status-of-the-project). This major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n[Learn more about this change and related upgrade considerations](https://docs.bitnami.com/kubernetes/infrastructure/mysql/administration/upgrade-helm3/).\n\n### To 3.0.0\n\nBackwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments.\nUse the workaround below to upgrade from versions previous to 3.0.0. The following example assumes that the release name is mysql:\n\n```console\n$ kubectl delete statefulset mysql-master --cascade=false\n$ kubectl delete statefulset mysql-slave --cascade=false\n```\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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."
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 2.1.2\ndescription: A Library Helm Chart for grouping common logic between bitnami charts.\n  This chart is not deployable by itself.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/common\nicon: https://bitnami.com/downloads/logos/bitnami-mark.png\nkeywords:\n- common\n- helper\n- template\n- function\n- bitnami\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: common\nsources:\n- https://github.com/bitnami/charts\n- https://www.bitnami.com/\ntype: library\nversion: 2.1.2\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/README.md",
    "content": "# Bitnami Common Library Chart\n\nA [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts.\n\n## TL;DR\n\n```yaml\ndependencies:\n  - name: common\n    version: 1.x.x\n    repository: https://charts.bitnami.com/bitnami\n```\n\n```bash\n$ helm dependency update\n```\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\ndata:\n  myvalue: \"Hello World\"\n```\n\n## Introduction\n\nThis chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n\n## Parameters\n\nThe following table lists the helpers available in the library which are scoped in different sections.\n\n### Affinities\n\n| Helper identifier             | Description                                          | Expected Input                                 |\n|-------------------------------|------------------------------------------------------|------------------------------------------------|\n| `common.affinities.nodes.soft` | Return a soft nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.nodes.hard` | Return a hard nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.pods.soft`  | Return a soft podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n| `common.affinities.pods.hard`  | Return a hard podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n\n### Capabilities\n\n| Helper identifier                              | Description                                                                                    | Expected Input    |\n|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------|\n| `common.capabilities.kubeVersion`              | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context |\n| `common.capabilities.cronjob.apiVersion`       | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context |\n| `common.capabilities.deployment.apiVersion`    | Return the appropriate apiVersion for deployment.                                              | `.` Chart context |\n| `common.capabilities.statefulset.apiVersion`   | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context |\n| `common.capabilities.ingress.apiVersion`       | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context |\n| `common.capabilities.rbac.apiVersion`          | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context |\n| `common.capabilities.crd.apiVersion`           | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context |\n| `common.capabilities.policy.apiVersion`        | Return the appropriate apiVersion for podsecuritypolicy.                                       | `.` Chart context |\n| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy.                                           | `.` Chart context |\n| `common.capabilities.apiService.apiVersion`    | Return the appropriate apiVersion for APIService.                                              | `.` Chart context |\n| `common.capabilities.hpa.apiVersion`           | Return the appropriate apiVersion for Horizontal Pod Autoscaler                                | `.` Chart context |\n| `common.capabilities.supportsHelmVersion`      | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context |\n\n### Errors\n\n| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict \"validationErrors\" (list $validationError00 $validationError01)  \"context\" $` |\n\n### Images\n\n| Helper identifier           | Description                                          | Expected Input                                                                                          |\n|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| `common.images.image`       | Return the proper and full image name                | `dict \"imageRoot\" .Values.path.to.the.image \"global\" $`, see [ImageRoot](#imageroot) for the structure. |\n| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global` |\n| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $` |\n\n### Ingress\n\n| Helper identifier                         | Description                                                                                                       | Expected Input                                                                                                                                                                   |\n|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version                                              | `dict \"serviceName\" \"foo\" \"servicePort\" \"bar\"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |\n| `common.ingress.supportsPathType`         | Prints \"true\" if the pathType field is supported                                                                  | `.` Chart context                                                                                                                                                                |\n| `common.ingress.supportsIngressClassname` | Prints \"true\" if the ingressClassname field is supported                                                          | `.` Chart context                                                                                                                                                                |\n| `common.ingress.certManagerRequest`       | Prints \"true\" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict \"annotations\" .Values.path.to.the.ingress.annotations`                                                                                                                     |\n\n### Labels\n\n| Helper identifier           | Description                                                                 | Expected Input    |\n|-----------------------------|-----------------------------------------------------------------------------|-------------------|\n| `common.labels.standard`    | Return Kubernetes standard labels                                           | `.` Chart context |\n| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context |\n\n### Names\n\n| Helper identifier                 | Description                                                           | Expected Input    |\n|-----------------------------------|-----------------------------------------------------------------------|-------------------|\n| `common.names.name`               | Expand the name of the chart or use `.Values.nameOverride`            | `.` Chart context |\n| `common.names.fullname`           | Create a default fully qualified app name.                            | `.` Chart context |\n| `common.names.namespace`          | Allow the release namespace to be overridden                          | `.` Chart context |\n| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context |\n| `common.names.chart`              | Chart name plus version                                               | `.` Chart context |\n\n### Secrets\n\n| Helper identifier         | Description                                                  | Expected Input                                                                                                                                                                                                                  |\n|---------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.secrets.name`     | Generate the name of the secret.                             | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $` see [ExistingSecret](#existingsecret) for the structure.                                                                  |\n| `common.secrets.key`      | Generate secret key.                                         | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\"` see [ExistingSecret](#existingsecret) for the structure.                                                                                             |\n| `common.passwords.manage` | Generate secret password or retrieve one if already created. | `dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $`, length, strong and chartNAme fields are optional. |\n| `common.secrets.exists`   | Returns whether a previous generated secret already exists.  | `dict \"secret\" \"secret-name\" \"context\" $`                                                                                                                                                                                       |\n\n### Storage\n\n| Helper identifier             | Description                           | Expected Input                                                                                                      |\n|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| `common.storage.class` | Return  the proper Storage Class | `dict \"persistence\" .Values.path.to.the.persistence \"global\" $`, see [Persistence](#persistence) for the structure. |\n\n### TplValues\n\n| Helper identifier         | Description                            | Expected Input                                                                                                                                           |\n|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.tplvalues.render` | Renders a value that contains template | `dict \"value\" .Values.path.to.the.Value \"context\" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |\n\n### Utils\n\n| Helper identifier              | Description                                                                              | Expected Input                                                         |\n|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------|\n| `common.utils.fieldToEnvVar`   | Build environment variable name given a field.                                           | `dict \"field\" \"my-password\"`                                           |\n| `common.utils.secret.getvalue` | Print instructions to get a secret value.                                                | `dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $` |\n| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path                                    | `dict \"key\" \"path.to.key\" \"context\" $`                                 |\n| `common.utils.getKeyFromList`  | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $`         |\n\n### Validations\n\n| Helper identifier                                | Description                                                                                                                   | Expected Input                                                                                                                                                                                                                                                           |\n|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.validations.values.single.empty`         | Validate a value must not be empty.                                                                                           | `dict \"valueKey\" \"path.to.value\" \"secret\" \"secret.name\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |\n| `common.validations.values.multiple.empty`       | Validate a multiple values must not be empty. It returns a shared error for all the values.                                   | `dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |\n| `common.validations.values.mariadb.passwords`    | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mariadb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |\n| `common.validations.values.mysql.passwords`      | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values.              | `dict \"secret\" \"mysql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper.                                                                                      |\n| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values.         | `dict \"secret\" \"postgresql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper.                                                                                |\n| `common.validations.values.redis.passwords`      | This helper will ensure required password for Redis&reg; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"redis-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper.                                                                                          |\n| `common.validations.values.cassandra.passwords`  | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values.          | `dict \"secret\" \"cassandra-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper.                                                                                  |\n| `common.validations.values.mongodb.passwords`    | This helper will ensure required password for MongoDB&reg; are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mongodb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper.                                                                                      |\n\n### Warnings\n\n| Helper identifier            | Description                      | Expected Input                                             |\n|------------------------------|----------------------------------|------------------------------------------------------------|\n| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |\n\n## Special input schemas\n\n### ImageRoot\n\n```yaml\nregistry:\n  type: string\n  description: Docker registry where the image is located\n  example: docker.io\n\nrepository:\n  type: string\n  description: Repository and image name\n  example: bitnami/nginx\n\ntag:\n  type: string\n  description: image tag\n  example: 1.16.1-debian-10-r63\n\npullPolicy:\n  type: string\n  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n\npullSecrets:\n  type: array\n  items:\n    type: string\n  description: Optionally specify an array of imagePullSecrets (evaluated as templates).\n\ndebug:\n  type: boolean\n  description: Set to true if you would like to see extra information on logs\n  example: false\n\n## An instance would be:\n# registry: docker.io\n# repository: bitnami/nginx\n# tag: 1.16.1-debian-10-r63\n# pullPolicy: IfNotPresent\n# debug: false\n```\n\n### Persistence\n\n```yaml\nenabled:\n  type: boolean\n  description: Whether enable persistence.\n  example: true\n\nstorageClass:\n  type: string\n  description: Ghost data Persistent Volume Storage Class, If set to \"-\", storageClassName: \"\" which disables dynamic provisioning.\n  example: \"-\"\n\naccessMode:\n  type: string\n  description: Access mode for the Persistent Volume Storage.\n  example: ReadWriteOnce\n\nsize:\n  type: string\n  description: Size the Persistent Volume Storage.\n  example: 8Gi\n\npath:\n  type: string\n  description: Path to be persisted.\n  example: /bitnami\n\n## An instance would be:\n# enabled: true\n# storageClass: \"-\"\n# accessMode: ReadWriteOnce\n# size: 8Gi\n# path: /bitnami\n```\n\n### ExistingSecret\n\n```yaml\nname:\n  type: string\n  description: Name of the existing secret.\n  example: mySecret\nkeyMapping:\n  description: Mapping between the expected key name and the name of the key in the existing secret.\n  type: object\n\n## An instance would be:\n# name: mySecret\n# keyMapping:\n#   password: myPasswordKey\n```\n\n#### Example of use\n\nWhen we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.\n\n```yaml\n# templates/secret.yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n    app: {{ include \"common.names.fullname\" . }}\ntype: Opaque\ndata:\n  password: {{ .Values.password | b64enc | quote }}\n\n# templates/dpl.yaml\n---\n...\n      env:\n        - name: PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: {{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.existingSecret \"context\" $) }}\n              key: {{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.existingSecret \"key\" \"password\") }}\n...\n\n# values.yaml\n---\nname: mySecret\nkeyMapping:\n  password: myPasswordKey\n```\n\n### ValidateValue\n\n#### NOTES.txt\n\n```console\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n\n{{ include \"common.validations.values.multiple.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n```\n\nIf we force those values to be empty we will see some alerts\n\n```console\n$ helm install test mychart --set path.to.value00=\"\",path.to.value01=\"\"\n    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:\n\n        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-00}\" | base64 -d)\n\n    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:\n\n        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-01}\" | base64 -d)\n```\n\n## Upgrading\n\n### To 1.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_affinities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn a soft nodeAffinity definition\n{{ include \"common.affinities.nodes.soft\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.soft\" -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - preference:\n      matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard nodeAffinity definition\n{{ include \"common.affinities.nodes.hard\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.hard\" -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  nodeSelectorTerms:\n    - matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n{{- end -}}\n\n{{/*\nReturn a nodeAffinity definition\n{{ include \"common.affinities.nodes\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.nodes.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.nodes.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nReturn a soft podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.soft\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.soft\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - podAffinityTerm:\n      labelSelector:\n        matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 10 }}\n          {{- if not (empty $component) }}\n          {{ printf \"app.kubernetes.io/component: %s\" $component }}\n          {{- end }}\n          {{- range $key, $value := $extraMatchLabels }}\n          {{ $key }}: {{ $value | quote }}\n          {{- end }}\n      topologyKey: kubernetes.io/hostname\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.hard\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.hard\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  - labelSelector:\n      matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 8 }}\n        {{- if not (empty $component) }}\n        {{ printf \"app.kubernetes.io/component: %s\" $component }}\n        {{- end }}\n        {{- range $key, $value := $extraMatchLabels }}\n        {{ $key }}: {{ $value | quote }}\n        {{- end }}\n    topologyKey: kubernetes.io/hostname\n{{- end -}}\n\n{{/*\nReturn a podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.pods\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.pods.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.pods.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_capabilities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the target Kubernetes version\n*/}}\n{{- define \"common.capabilities.kubeVersion\" -}}\n{{- if .Values.global }}\n    {{- if .Values.global.kubeVersion }}\n    {{- .Values.global.kubeVersion -}}\n    {{- else }}\n    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n    {{- end -}}\n{{- else }}\n{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for poddisruptionbudget.\n*/}}\n{{- define \"common.capabilities.policy.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"policy/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"common.capabilities.networkPolicy.apiVersion\" -}}\n{{- if semverCompare \"<1.7-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for cronjob.\n*/}}\n{{- define \"common.capabilities.cronjob.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"batch/v1beta1\" -}}\n{{- else -}}\n{{- print \"batch/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"common.capabilities.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"common.capabilities.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apps/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"common.capabilities.ingress.apiVersion\" -}}\n{{- if .Values.ingress -}}\n{{- if .Values.ingress.apiVersion -}}\n{{- .Values.ingress.apiVersion -}}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for RBAC resources.\n*/}}\n{{- define \"common.capabilities.rbac.apiVersion\" -}}\n{{- if semverCompare \"<1.17-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"rbac.authorization.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for CRDs.\n*/}}\n{{- define \"common.capabilities.crd.apiVersion\" -}}\n{{- if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiextensions.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiextensions.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for APIService.\n*/}}\n{{- define \"common.capabilities.apiService.apiVersion\" -}}\n{{- if semverCompare \"<1.10-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiregistration.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiregistration.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for Horizontal Pod Autoscaler.\n*/}}\n{{- define \"common.capabilities.hpa.apiVersion\" -}}\n{{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .context) -}}\n{{- if .beta2 -}}\n{{- print \"autoscaling/v2beta2\" -}}\n{{- else -}}\n{{- print \"autoscaling/v2beta1\" -}}\n{{- end -}}\n{{- else -}}\n{{- print \"autoscaling/v2\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the used Helm version is 3.3+.\nA way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional \"{}}\"  structure.\nThis check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a \"interface not found\" error.\n**To be removed when the catalog's minimun Helm version is 3.3**\n*/}}\n{{- define \"common.capabilities.supportsHelmVersion\" -}}\n{{- if regexMatch \"{(v[0-9])*[^}]*}}$\" (.Capabilities | toString ) }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_errors.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThrough error when upgrading using empty passwords values that must not be empty.\n\nUsage:\n{{- $validationError00 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validationError01 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $validationError00 $validationError01) \"context\" $) }}\n\nRequired password params:\n  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.\n  - context - Context - Required. Parent context.\n*/}}\n{{- define \"common.errors.upgrade.passwords.empty\" -}}\n  {{- $validationErrors := join \"\" .validationErrors -}}\n  {{- if and $validationErrors .context.Release.IsUpgrade -}}\n    {{- $errorString := \"\\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases\" -}}\n    {{- $errorString = print $errorString \"\\n%s\" -}}\n    {{- printf $errorString $validationErrors | fail -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_images.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn the proper image name\n{{ include \"common.images.image\" ( dict \"imageRoot\" .Values.path.to.the.image \"global\" $) }}\n*/}}\n{{- define \"common.images.image\" -}}\n{{- $registryName := .imageRoot.registry -}}\n{{- $repositoryName := .imageRoot.repository -}}\n{{- $separator := \":\" -}}\n{{- $termination := .imageRoot.tag | toString -}}\n{{- if .global }}\n    {{- if .global.imageRegistry }}\n     {{- $registryName = .global.imageRegistry -}}\n    {{- end -}}\n{{- end -}}\n{{- if .imageRoot.digest }}\n    {{- $separator = \"@\" -}}\n    {{- $termination = .imageRoot.digest | toString -}}\n{{- end -}}\n{{- printf \"%s/%s%s%s\" $registryName $repositoryName $separator $termination -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)\n{{ include \"common.images.pullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global) }}\n*/}}\n{{- define \"common.images.pullSecrets\" -}}\n  {{- $pullSecrets := list }}\n\n  {{- if .global }}\n    {{- range .global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names evaluating values as templates\n{{ include \"common.images.renderPullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $) }}\n*/}}\n{{- define \"common.images.renderPullSecrets\" -}}\n  {{- $pullSecrets := list }}\n  {{- $context := .context }}\n\n  {{- if $context.Values.global }}\n    {{- range $context.Values.global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_ingress.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nGenerate backend entry that is compatible with all Kubernetes API versions.\n\nUsage:\n{{ include \"common.ingress.backend\" (dict \"serviceName\" \"backendName\" \"servicePort\" \"backendPort\" \"context\" $) }}\n\nParams:\n  - serviceName - String. Name of an existing service backend\n  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.ingress.backend\" -}}\n{{- $apiVersion := (include \"common.capabilities.ingress.apiVersion\" .context) -}}\n{{- if or (eq $apiVersion \"extensions/v1beta1\") (eq $apiVersion \"networking.k8s.io/v1beta1\") -}}\nserviceName: {{ .serviceName }}\nservicePort: {{ .servicePort }}\n{{- else -}}\nservice:\n  name: {{ .serviceName }}\n  port:\n    {{- if typeIs \"string\" .servicePort }}\n    name: {{ .servicePort }}\n    {{- else if or (typeIs \"int\" .servicePort) (typeIs \"float64\" .servicePort) }}\n    number: {{ .servicePort | int }}\n    {{- end }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nPrint \"true\" if the API pathType field is supported\nUsage:\n{{ include \"common.ingress.supportsPathType\" . }}\n*/}}\n{{- define \"common.ingress.supportsPathType\" -}}\n{{- if (semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the ingressClassname field is supported\nUsage:\n{{ include \"common.ingress.supportsIngressClassname\" . }}\n*/}}\n{{- define \"common.ingress.supportsIngressClassname\" -}}\n{{- if semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if cert-manager required annotations for TLS signed\ncertificates are set in the Ingress annotations\nRef: https://cert-manager.io/docs/usage/ingress/#supported-annotations\nUsage:\n{{ include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.path.to.the.ingress.annotations ) }}\n*/}}\n{{- define \"common.ingress.certManagerRequest\" -}}\n{{ if or (hasKey .annotations \"cert-manager.io/cluster-issuer\") (hasKey .annotations \"cert-manager.io/issuer\") (hasKey .annotations \"kubernetes.io/tls-acme\") }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_labels.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nKubernetes standard labels\n*/}}\n{{- define \"common.labels.standard\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\nhelm.sh/chart: {{ include \"common.names.chart\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end -}}\n\n{{/*\nLabels to use on deploy.spec.selector.matchLabels and svc.spec.selector\n*/}}\n{{- define \"common.labels.matchLabels\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_names.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"common.names.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"common.names.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"common.names.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified dependency name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\nUsage:\n{{ include \"common.names.dependency.fullname\" (dict \"chartName\" \"dependency-chart-name\" \"chartValues\" .Values.dependency-chart \"context\" $) }}\n*/}}\n{{- define \"common.names.dependency.fullname\" -}}\n{{- if .chartValues.fullnameOverride -}}\n{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .chartName .chartValues.nameOverride -}}\n{{- if contains $name .context.Release.Name -}}\n{{- .context.Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .context.Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts.\n*/}}\n{{- define \"common.names.namespace\" -}}\n{{- if .Values.namespaceOverride -}}\n{{- .Values.namespaceOverride -}}\n{{- else -}}\n{{- .Release.Namespace -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a fully qualified app name adding the installation's namespace.\n*/}}\n{{- define \"common.names.fullname.namespace\" -}}\n{{- printf \"%s-%s\" (include \"common.names.fullname\" .) (include \"common.names.namespace\" .) | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_secrets.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nGenerate secret name.\n\nUsage:\n{{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $) }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.secrets.name\" -}}\n{{- $name := (include \"common.names.fullname\" .context) -}}\n\n{{- if .defaultNameSuffix -}}\n{{- $name = printf \"%s-%s\" $name .defaultNameSuffix | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- with .existingSecret -}}\n{{- if not (typeIs \"string\" .) -}}\n{{- with .name -}}\n{{- $name = . -}}\n{{- end -}}\n{{- else -}}\n{{- $name = . -}}\n{{- end -}}\n{{- end -}}\n\n{{- printf \"%s\" $name -}}\n{{- end -}}\n\n{{/*\nGenerate secret key.\n\nUsage:\n{{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\") }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - key - String - Required. Name of the key in the secret.\n*/}}\n{{- define \"common.secrets.key\" -}}\n{{- $key := .key -}}\n\n{{- if .existingSecret -}}\n  {{- if not (typeIs \"string\" .existingSecret) -}}\n    {{- if .existingSecret.keyMapping -}}\n      {{- $key = index .existingSecret.keyMapping $.key -}}\n    {{- end -}}\n  {{- end }}\n{{- end -}}\n\n{{- printf \"%s\" $key -}}\n{{- end -}}\n\n{{/*\nGenerate secret password or retrieve one if already created.\n\nUsage:\n{{ include \"common.secrets.passwords.manage\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - length - int - Optional - Length of the generated random password.\n  - strong - Boolean - Optional - Whether to add symbols to the generated random password.\n  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.\n  - context - Context - Required - Parent context.\n\nThe order in which this function returns a secret password:\n  1. Already existing 'Secret' resource\n     (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned)\n  2. Password provided via the values.yaml\n     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)\n  3. Randomly generated secret password\n     (A new random secret password with the length specified in the 'length' parameter will be generated and returned)\n\n*/}}\n{{- define \"common.secrets.passwords.manage\" -}}\n\n{{- $password := \"\" }}\n{{- $subchart := \"\" }}\n{{- $chartName := default \"\" .chartName }}\n{{- $passwordLength := default 10 .length }}\n{{- $providedPasswordKey := include \"common.utils.getKeyFromList\" (dict \"keys\" .providedValues \"context\" $.context) }}\n{{- $providedPasswordValue := include \"common.utils.getValueFromKey\" (dict \"key\" $providedPasswordKey \"context\" $.context) }}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data }}\n{{- if $secretData }}\n  {{- if hasKey $secretData .key }}\n    {{- $password = index $secretData .key | quote }}\n  {{- else }}\n    {{- printf \"\\nPASSWORDS ERROR: The secret \\\"%s\\\" does not contain the key \\\"%s\\\"\\n\" .secret .key | fail -}}\n  {{- end -}}\n{{- else if $providedPasswordValue }}\n  {{- $password = $providedPasswordValue | toString | b64enc | quote }}\n{{- else }}\n\n  {{- if .context.Values.enabled }}\n    {{- $subchart = $chartName }}\n  {{- end -}}\n\n  {{- $requiredPassword := dict \"valueKey\" $providedPasswordKey \"secret\" .secret \"field\" .key \"subchart\" $subchart \"context\" $.context -}}\n  {{- $requiredPasswordError := include \"common.validations.values.single.empty\" $requiredPassword -}}\n  {{- $passwordValidationErrors := list $requiredPasswordError -}}\n  {{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" $passwordValidationErrors \"context\" $.context) -}}\n\n  {{- if .strong }}\n    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join \"_\" }}\n    {{- $password = randAscii $passwordLength }}\n    {{- $password = regexReplaceAllLiteral \"\\\\W\" $password \"@\" | substr 5 $passwordLength }}\n    {{- $password = printf \"%s%s\" $subStr $password | toString | shuffle | b64enc | quote }}\n  {{- else }}\n    {{- $password = randAlphaNum $passwordLength | b64enc | quote }}\n  {{- end }}\n{{- end -}}\n{{- printf \"%s\" $password -}}\n{{- end -}}\n\n{{/*\nReuses the value from an existing secret, otherwise sets its value to a default value.\n\nUsage:\n{{ include \"common.secrets.lookup\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"defaultValue\" .Values.myValue \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - context - Context - Required - Parent context.\n\n*/}}\n{{- define \"common.secrets.lookup\" -}}\n{{- $value := \"\" -}}\n{{- $defaultValue := required \"\\n'common.secrets.lookup': Argument 'defaultValue' missing or empty\" .defaultValue -}}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data -}}\n{{- if and $secretData (hasKey $secretData .key) -}}\n  {{- $value = index $secretData .key -}}\n{{- else -}}\n  {{- $value = $defaultValue | toString | b64enc -}}\n{{- end -}}\n{{- printf \"%s\" $value -}}\n{{- end -}}\n\n{{/*\nReturns whether a previous generated secret already exists\n\nUsage:\n{{ include \"common.secrets.exists\" (dict \"secret\" \"secret-name\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.exists\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_storage.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn  the proper Storage Class\n{{ include \"common.storage.class\" ( dict \"persistence\" .Values.path.to.the.persistence \"global\" $) }}\n*/}}\n{{- define \"common.storage.class\" -}}\n\n{{- $storageClass := .persistence.storageClass -}}\n{{- if .global -}}\n    {{- if .global.storageClass -}}\n        {{- $storageClass = .global.storageClass -}}\n    {{- end -}}\n{{- end -}}\n\n{{- if $storageClass -}}\n  {{- if (eq \"-\" $storageClass) -}}\n      {{- printf \"storageClassName: \\\"\\\"\" -}}\n  {{- else }}\n      {{- printf \"storageClassName: %s\" $storageClass -}}\n  {{- end -}}\n{{- end -}}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_tplvalues.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nRenders a value that contains template.\nUsage:\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.path.to.the.Value \"context\" $) }}\n*/}}\n{{- define \"common.tplvalues.render\" -}}\n    {{- if typeIs \"string\" .value }}\n        {{- tpl .value .context }}\n    {{- else }}\n        {{- tpl (.value | toYaml) .context }}\n    {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_utils.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nPrint instructions to get a secret value.\nUsage:\n{{ include \"common.utils.secret.getvalue\" (dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.secret.getvalue\" -}}\n{{- $varname := include \"common.utils.fieldToEnvVar\" . -}}\nexport {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath=\"{.data.{{ .field }}}\" | base64 -d)\n{{- end -}}\n\n{{/*\nBuild env var name given a field\nUsage:\n{{ include \"common.utils.fieldToEnvVar\" dict \"field\" \"my-password\" }}\n*/}}\n{{- define \"common.utils.fieldToEnvVar\" -}}\n  {{- $fieldNameSplit := splitList \"-\" .field -}}\n  {{- $upperCaseFieldNameSplit := list -}}\n\n  {{- range $fieldNameSplit -}}\n    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}\n  {{- end -}}\n\n  {{ join \"_\" $upperCaseFieldNameSplit }}\n{{- end -}}\n\n{{/*\nGets a value from .Values given\nUsage:\n{{ include \"common.utils.getValueFromKey\" (dict \"key\" \"path.to.key\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.getValueFromKey\" -}}\n{{- $splitKey := splitList \".\" .key -}}\n{{- $value := \"\" -}}\n{{- $latestObj := $.context.Values -}}\n{{- range $splitKey -}}\n  {{- if not $latestObj -}}\n    {{- printf \"please review the entire path of '%s' exists in values\" $.key | fail -}}\n  {{- end -}}\n  {{- $value = ( index $latestObj . ) -}}\n  {{- $latestObj = $value -}}\n{{- end -}}\n{{- printf \"%v\" (default \"\" $value) -}} \n{{- end -}}\n\n{{/*\nReturns first .Values key with a defined value or first of the list if all non-defined\nUsage:\n{{ include \"common.utils.getKeyFromList\" (dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $) }}\n*/}}\n{{- define \"common.utils.getKeyFromList\" -}}\n{{- $key := first .keys -}}\n{{- $reverseKeys := reverse .keys }}\n{{- range $reverseKeys }}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" . \"context\" $.context ) }}\n  {{- if $value -}}\n    {{- $key = . }}\n  {{- end -}}\n{{- end -}}\n{{- printf \"%s\" $key -}} \n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/_warnings.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nWarning about using rolling tag.\nUsage:\n{{ include \"common.warnings.rollingTag\" .Values.path.to.the.imageRoot }}\n*/}}\n{{- define \"common.warnings.rollingTag\" -}}\n\n{{- if and (contains \"bitnami/\" .repository) (not (.tag | toString | regexFind \"-r\\\\d+$|sha256:\")) }}\nWARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.\n+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/\n{{- end }}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_cassandra.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Cassandra required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.cassandra.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: \"cassandra-passwords-secret\"\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.cassandra.passwords\" -}}\n  {{- $existingSecret := include \"common.cassandra.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.cassandra.values.enabled\" . -}}\n  {{- $dbUserPrefix := include \"common.cassandra.values.key.dbUser\" . -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $dbUserPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"cassandra-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.cassandra.values.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.dbUser.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled cassandra.\n\nUsage:\n{{ include \"common.cassandra.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.cassandra.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.cassandra.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key dbUser\n\nUsage:\n{{ include \"common.cassandra.values.key.dbUser\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.key.dbUser\" -}}\n  {{- if .subchart -}}\n    cassandra.dbUser\n  {{- else -}}\n    dbUser\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_mariadb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MariaDB required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mariadb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mariadb.passwords\" -}}\n  {{- $existingSecret := include \"common.mariadb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mariadb.values.enabled\" . -}}\n  {{- $architecture := include \"common.mariadb.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mariadb.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mariadb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mariadb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mariadb-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mariadb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mariadb.\n\nUsage:\n{{ include \"common.mariadb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mariadb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mariadb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mariadb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mariadb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mariadb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_mongodb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MongoDB&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mongodb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: \"mongodb-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mongodb.passwords\" -}}\n  {{- $existingSecret := include \"common.mongodb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mongodb.values.enabled\" . -}}\n  {{- $authPrefix := include \"common.mongodb.values.key.auth\" . -}}\n  {{- $architecture := include \"common.mongodb.values.architecture\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyDatabase := printf \"%s.database\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicaSetKey := printf \"%s.replicaSetKey\" $authPrefix -}}\n  {{- $valueKeyAuthEnabled := printf \"%s.enabled\" $authPrefix -}}\n\n  {{- $authEnabled := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyAuthEnabled \"context\" .context) -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") (eq $authEnabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mongodb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- $valueDatabase := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyDatabase \"context\" .context) }}\n    {{- if and $valueUsername $valueDatabase -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mongodb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replicaset\") -}}\n        {{- $requiredReplicaSetKey := dict \"valueKey\" $valueKeyReplicaSetKey \"secret\" .secret \"field\" \"mongodb-replica-set-key\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mongodb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mongodb.\n\nUsage:\n{{ include \"common.mongodb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mongodb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mongodb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mongodb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mongodb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mongodb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_mysql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MySQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mysql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MySQL values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mysql.passwords\" -}}\n  {{- $existingSecret := include \"common.mysql.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mysql.values.enabled\" . -}}\n  {{- $architecture := include \"common.mysql.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mysql.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mysql-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mysql-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mysql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mysql.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mysql.\n\nUsage:\n{{ include \"common.mysql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mysql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mysql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mysql.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mysql.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mysql.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_postgresql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate PostgreSQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.postgresql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: \"postgresql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.postgresql.passwords\" -}}\n  {{- $existingSecret := include \"common.postgresql.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.postgresql.values.enabled\" . -}}\n  {{- $valueKeyPostgresqlPassword := include \"common.postgresql.values.key.postgressPassword\" . -}}\n  {{- $valueKeyPostgresqlReplicationEnabled := include \"common.postgresql.values.key.replicationPassword\" . -}}\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n    {{- $requiredPostgresqlPassword := dict \"valueKey\" $valueKeyPostgresqlPassword \"secret\" .secret \"field\" \"postgresql-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}\n\n    {{- $enabledReplication := include \"common.postgresql.values.enabled.replication\" . -}}\n    {{- if (eq $enabledReplication \"true\") -}}\n        {{- $requiredPostgresqlReplicationPassword := dict \"valueKey\" $valueKeyPostgresqlReplicationEnabled \"secret\" .secret \"field\" \"postgresql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to decide whether evaluate global values.\n\nUsage:\n{{ include \"common.postgresql.values.use.global\" (dict \"key\" \"key-of-global\" \"context\" $) }}\nParams:\n  - key - String - Required. Field to be evaluated within global, e.g: \"existingSecret\"\n*/}}\n{{- define \"common.postgresql.values.use.global\" -}}\n  {{- if .context.Values.global -}}\n    {{- if .context.Values.global.postgresql -}}\n      {{- index .context.Values.global.postgresql .key | quote -}}\n    {{- end -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.postgresql.values.existingSecret\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.existingSecret\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"existingSecret\" \"context\" .context) -}}\n\n  {{- if .subchart -}}\n    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}\n  {{- else -}}\n    {{- default (.context.Values.existingSecret | quote) $globalValue -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled postgresql.\n\nUsage:\n{{ include \"common.postgresql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key postgressPassword.\n\nUsage:\n{{ include \"common.postgresql.values.key.postgressPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.postgressPassword\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"postgresqlUsername\" \"context\" .context) -}}\n\n  {{- if not $globalValue -}}\n    {{- if .subchart -}}\n      postgresql.postgresqlPassword\n    {{- else -}}\n      postgresqlPassword\n    {{- end -}}\n  {{- else -}}\n    global.postgresql.postgresqlPassword\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled.replication.\n\nUsage:\n{{ include \"common.postgresql.values.enabled.replication\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.enabled.replication\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.replication.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" .context.Values.replication.enabled -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key replication.password.\n\nUsage:\n{{ include \"common.postgresql.values.key.replicationPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.replicationPassword\" -}}\n  {{- if .subchart -}}\n    postgresql.replication.password\n  {{- else -}}\n    replication.password\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_redis.tpl",
    "content": "\n{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Redis&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.redis.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where redis values are stored, e.g: \"redis-passwords-secret\"\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.redis.passwords\" -}}\n  {{- $enabled := include \"common.redis.values.enabled\" . -}}\n  {{- $valueKeyPrefix := include \"common.redis.values.keys.prefix\" . -}}\n  {{- $standarizedVersion := include \"common.redis.values.standarized.version\" . }}\n\n  {{- $existingSecret := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.existingSecret\") (printf \"%s%s\" $valueKeyPrefix \"existingSecret\") (eq $standarizedVersion \"true\") }}\n  {{- $existingSecretValue := include \"common.utils.getValueFromKey\" (dict \"key\" $existingSecret \"context\" .context) }}\n\n  {{- $valueKeyRedisPassword := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.password\") (printf \"%s%s\" $valueKeyPrefix \"password\") (eq $standarizedVersion \"true\") }}\n  {{- $valueKeyRedisUseAuth := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.enabled\") (printf \"%s%s\" $valueKeyPrefix \"usePassword\") (eq $standarizedVersion \"true\") }}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $useAuth := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyRedisUseAuth \"context\" .context) -}}\n    {{- if eq $useAuth \"true\" -}}\n      {{- $requiredRedisPassword := dict \"valueKey\" $valueKeyRedisPassword \"secret\" .secret \"field\" \"redis-password\" -}}\n      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled redis.\n\nUsage:\n{{ include \"common.redis.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.redis.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right prefix path for the values\n\nUsage:\n{{ include \"common.redis.values.key.prefix\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.redis.values.keys.prefix\" -}}\n  {{- if .subchart -}}redis.{{- else -}}{{- end -}}\n{{- end -}}\n\n{{/*\nChecks whether the redis chart's includes the standarizations (version >= 14)\n\nUsage:\n{{ include \"common.redis.values.standarized.version\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.standarized.version\" -}}\n\n  {{- $standarizedAuth := printf \"%s%s\" (include \"common.redis.values.keys.prefix\" .) \"auth\" -}}\n  {{- $standarizedAuthValues := include \"common.utils.getValueFromKey\" (dict \"key\" $standarizedAuth \"context\" .context) }}\n\n  {{- if $standarizedAuthValues -}}\n    {{- true -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/templates/validations/_validations.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate values must not be empty.\n\nUsage:\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.validations.values.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n*/}}\n{{- define \"common.validations.values.multiple.empty\" -}}\n  {{- range .required -}}\n    {{- include \"common.validations.values.single.empty\" (dict \"valueKey\" .valueKey \"secret\" .secret \"field\" .field \"context\" $.context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nValidate a value must not be empty.\n\nUsage:\n{{ include \"common.validations.value.empty\" (dict \"valueKey\" \"mariadb.password\" \"secret\" \"secretName\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n  - subchart - String - Optional - Name of the subchart that the validated password is part of.\n*/}}\n{{- define \"common.validations.values.single.empty\" -}}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" .valueKey \"context\" .context) }}\n  {{- $subchart := ternary \"\" (printf \"%s.\" .subchart) (empty .subchart) }}\n\n  {{- if not $value -}}\n    {{- $varname := \"my-value\" -}}\n    {{- $getCurrentValue := \"\" -}}\n    {{- if and .secret .field -}}\n      {{- $varname = include \"common.utils.fieldToEnvVar\" . -}}\n      {{- $getCurrentValue = printf \" To get the current value:\\n\\n        %s\\n\" (include \"common.utils.secret.getvalue\" .) -}}\n    {{- end -}}\n    {{- printf \"\\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s\" .valueKey $subchart .valueKey $varname $getCurrentValue -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/charts/common/values.yaml",
    "content": "## bitnami/common\n## It is required by CI/CD tools and processes.\n## @skip exampleValue\n##\nexampleValue: common-chart\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/NOTES.txt",
    "content": "CHART NAME: {{ .Chart.Name }}\nCHART VERSION: {{ .Chart.Version }}\nAPP VERSION: {{ .Chart.AppVersion }}\n\n** Please be patient while the chart is being deployed **\n\n{{- if .Values.diagnosticMode.enabled }}\nThe chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:\n\n  command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 4 }}\n  args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 4 }}\n\nGet the list of pods by executing:\n\n  kubectl get pods --namespace {{ include \"common.names.namespace\" . }} -l app.kubernetes.io/instance={{ .Release.Name }}\n\nAccess the pod you want to debug by executing\n\n  kubectl exec --namespace {{ include \"common.names.namespace\" . }} -ti <NAME OF THE POD> -- bash\n\nIn order to replicate the container startup scripts execute this command:\n\n    /opt/bitnami/scripts/mysql/entrypoint.sh /opt/bitnami/scripts/mysql/run.sh\n\n{{- else }}\n\nTip:\n\n  Watch the deployment status using the command: kubectl get pods -w --namespace {{ include \"common.names.namespace\" . }}\n\nServices:\n\n  echo Primary: {{ include \"mysql.primary.fullname\" . }}.{{ include \"common.names.namespace\" . }}.svc.{{ .Values.clusterDomain }}:{{ .Values.primary.service.ports.mysql }}\n{{- if eq .Values.architecture \"replication\" }}\n  echo Secondary: {{ include \"mysql.secondary.fullname\" . }}.{{ include \"common.names.namespace\" . }}.svc.{{ .Values.clusterDomain }}:{{ .Values.secondary.service.ports.mysql }}\n{{- end }}\n\nExecute the following to get the administrator credentials:\n\n  echo Username: root\n  MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace {{ include \"common.names.namespace\" . }} {{ template \"mysql.secretName\" . }} -o jsonpath=\"{.data.mysql-root-password}\" | base64 -d)\n\nTo connect to your database:\n\n  1. Run a pod that you can use as a client:\n\n      kubectl run {{ include \"common.names.fullname\" . }}-client --rm --tty -i --restart='Never' --image  {{ template \"mysql.image\" . }} --namespace {{ include \"common.names.namespace\" . }} --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash\n\n  2. To connect to primary service (read/write):\n\n      mysql -h {{ include \"mysql.primary.fullname\" . }}.{{ include \"common.names.namespace\" . }}.svc.{{ .Values.clusterDomain }} -uroot -p\"$MYSQL_ROOT_PASSWORD\"\n\n{{- if eq .Values.architecture \"replication\" }}\n\n  3. To connect to secondary service (read-only):\n\n      mysql -h {{ include \"mysql.secondary.fullname\" . }}.{{ include \"common.names.namespace\" . }}.svc.{{ .Values.clusterDomain }} -uroot -p\"$MYSQL_ROOT_PASSWORD\"\n{{- end }}\n\n{{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}\nNote: Since NetworkPolicy is enabled, only pods with label {{ template \"common.names.fullname\" . }}-client=true\" will be able to connect to MySQL.\n{{- end }}\n\n{{- if .Values.metrics.enabled }}\n\nTo access the MySQL Prometheus metrics from outside the cluster execute the following commands:\n\n    kubectl port-forward --namespace {{ include \"common.names.namespace\" . }} svc/{{ printf \"%s-metrics\" (include \"common.names.fullname\" .) }} {{ .Values.metrics.service.port }}:{{ .Values.metrics.service.port }} &\n    curl http://127.0.0.1:{{ .Values.metrics.service.port }}/metrics\n\n{{- end }}\n\n{{ include \"mysql.validateValues\" . }}\n{{ include \"mysql.checkRollingTags\" . }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{- define \"mysql.primary.fullname\" -}}\n{{- if eq .Values.architecture \"replication\" }}\n{{- printf \"%s-%s\" (include \"common.names.fullname\" .) .Values.primary.name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- include \"common.names.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"mysql.secondary.fullname\" -}}\n{{- printf \"%s-%s\" (include \"common.names.fullname\" .) .Values.secondary.name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nReturn the proper MySQL image name\n*/}}\n{{- define \"mysql.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper metrics image name\n*/}}\n{{- define \"mysql.metrics.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.metrics.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the init container volume-permissions image)\n*/}}\n{{- define \"mysql.volumePermissions.image\" -}}\n{{- include \"common.images.image\" (dict \"imageRoot\" .Values.volumePermissions.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"mysql.imagePullSecrets\" -}}\n{{- include \"common.images.pullSecrets\" (dict \"images\" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nGet the initialization scripts ConfigMap name.\n*/}}\n{{- define \"mysql.initdbScriptsCM\" -}}\n{{- if .Values.initdbScriptsConfigMap -}}\n    {{- printf \"%s\" (tpl .Values.initdbScriptsConfigMap $) -}}\n{{- else -}}\n    {{- printf \"%s-init-scripts\" (include \"mysql.primary.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\n Returns the proper service account name depending if an explicit service account name is set\n in the values file. If the name is not set it will default to either mysql.fullname if serviceAccount.create\n is true or default otherwise.\n*/}}\n{{- define \"mysql.serviceAccountName\" -}}\n    {{- if .Values.serviceAccount.create -}}\n        {{ default (include \"common.names.fullname\" .) .Values.serviceAccount.name }}\n    {{- else -}}\n        {{ default \"default\" .Values.serviceAccount.name }}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nReturn the configmap with the MySQL Primary configuration\n*/}}\n{{- define \"mysql.primary.configmapName\" -}}\n{{- if .Values.primary.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.primary.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s\" (include \"mysql.primary.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created for MySQL Secondary\n*/}}\n{{- define \"mysql.primary.createConfigmap\" -}}\n{{- if and .Values.primary.configuration (not .Values.primary.existingConfigmap) }}\n    {{- true -}}\n{{- else -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the configmap with the MySQL Primary configuration\n*/}}\n{{- define \"mysql.secondary.configmapName\" -}}\n{{- if .Values.secondary.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.secondary.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s\" (include \"mysql.secondary.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created for MySQL Secondary\n*/}}\n{{- define \"mysql.secondary.createConfigmap\" -}}\n{{- if and (eq .Values.architecture \"replication\") .Values.secondary.configuration (not .Values.secondary.existingConfigmap) }}\n    {{- true -}}\n{{- else -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the secret with MySQL credentials\n*/}}\n{{- define \"mysql.secretName\" -}}\n    {{- if .Values.auth.existingSecret -}}\n        {{- printf \"%s\" (tpl .Values.auth.existingSecret $) -}}\n    {{- else -}}\n        {{- printf \"%s\" (include \"common.names.fullname\" .) -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a secret object should be created for MySQL\n*/}}\n{{- define \"mysql.createSecret\" -}}\n{{- if and (not .Values.auth.existingSecret) (not .Values.auth.customPasswordFiles) }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns the available value for certain key in an existing secret (if it exists),\notherwise it generates a random value.\n*/}}\n{{- define \"getValueFromSecret\" }}\n    {{- $len := (default 16 .Length) | int -}}\n    {{- $obj := (lookup \"v1\" \"Secret\" .Namespace .Name).data -}}\n    {{- if $obj }}\n        {{- index $obj .Key | b64dec -}}\n    {{- else -}}\n        {{- randAlphaNum $len -}}\n    {{- end -}}\n{{- end }}\n\n{{/* Check if there are rolling tags in the images */}}\n{{- define \"mysql.checkRollingTags\" -}}\n{{- include \"common.warnings.rollingTag\" .Values.image }}\n{{- include \"common.warnings.rollingTag\" .Values.metrics.image }}\n{{- include \"common.warnings.rollingTag\" .Values.volumePermissions.image }}\n{{- end -}}\n\n{{/*\nCompile all warnings into a single message, and call fail.\n*/}}\n{{- define \"mysql.validateValues\" -}}\n{{- $messages := list -}}\n{{- $messages := without $messages \"\" -}}\n{{- $message := join \"\\n\" $messages -}}\n\n{{- if $message -}}\n{{- printf \"\\nVALUES VALIDATION:\\n%s\" $message | fail -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/extra-list.yaml",
    "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/metrics-svc.yaml",
    "content": "{{- if .Values.metrics.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-metrics\" (include \"common.names.fullname\" .) }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    app.kubernetes.io/component: metrics\n  {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.metrics.service.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.service.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.metrics.service.type }}\n  ports:\n    - port: {{ .Values.metrics.service.port }}\n      targetPort: metrics\n      protocol: TCP\n      name: metrics\n  selector: {{- include \"common.labels.matchLabels\" $ | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\nkind: NetworkPolicy\napiVersion: {{ template \"common.capabilities.networkPolicy.apiVersion\" . }}\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  podSelector:\n    matchLabels:\n      {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n  ingress:\n    # Allow inbound connections\n    - ports:\n        - port: {{ .Values.primary.service.ports.mysql }}\n      {{- if not .Values.networkPolicy.allowExternal }}\n      from:\n        - podSelector:\n            matchLabels:\n              {{ template \"common.names.fullname\" . }}-client: \"true\"\n          {{- if .Values.networkPolicy.explicitNamespacesSelector }}\n          namespaceSelector:\n{{ toYaml .Values.networkPolicy.explicitNamespacesSelector | indent 12 }}\n          {{- end }}\n        - podSelector:\n            matchLabels:\n            {{- include \"common.labels.matchLabels\" . | nindent 14 }}\n      {{- end }}\n    {{- if .Values.metrics.enabled }}\n    # Allow prometheus scrapes\n    - ports:\n        - port: 9104\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/primary/configmap.yaml",
    "content": "{{- if (include \"mysql.primary.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"mysql.primary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  my.cnf: |-\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.primary.configuration \"context\" $ ) | nindent 4 }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/primary/initialization-configmap.yaml",
    "content": "{{- if and .Values.initdbScripts (not .Values.initdbScriptsConfigMap) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-init-scripts\" (include \"mysql.primary.fullname\" .) }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n{{- include \"common.tplvalues.render\" (dict \"value\" .Values.initdbScripts \"context\" .) | nindent 2 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/primary/pdb.yaml",
    "content": "{{- if .Values.primary.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ include \"mysql.primary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.primary.pdb.minAvailable }}\n  minAvailable: {{ .Values.primary.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.primary.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.primary.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: primary\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/primary/statefulset.yaml",
    "content": "apiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ include \"mysql.primary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: 1\n  podManagementPolicy: {{ .Values.primary.podManagementPolicy | quote }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: primary\n  serviceName: {{ include \"mysql.primary.fullname\" . }}\n  {{- if .Values.primary.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.primary.updateStrategy | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      annotations:\n        {{- if (include \"mysql.primary.createConfigmap\" .) }}\n        checksum/configuration: {{ include (print $.Template.BasePath \"/primary/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.primary.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: primary\n        {{- if .Values.primary.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.primary.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      serviceAccountName: {{ template \"mysql.serviceAccountName\" . }}\n      {{- include \"mysql.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.primary.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.primary.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.primary.podAffinityPreset \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.primary.podAntiAffinityPreset \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.primary.nodeAffinityPreset.type \"key\" .Values.primary.nodeAffinityPreset.key \"values\" .Values.primary.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.primary.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.primary.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.primary.priorityClassName }}\n      priorityClassName: {{ .Values.primary.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.primary.runtimeClassName }}\n      runtimeClassName: {{ .Values.primary.runtimeClassName | quote }}\n      {{- end }}\n      {{- if .Values.primary.schedulerName }}\n      schedulerName: {{ .Values.primary.schedulerName | quote }}\n      {{- end }}\n      {{- if .Values.primary.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.topologySpreadConstraints \"context\" .) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.primary.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.primary.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{- if .Values.primary.terminationGracePeriodSeconds }}\n      terminationGracePeriodSeconds: {{ .Values.primary.terminationGracePeriodSeconds }}\n      {{- end }}\n      initContainers:\n        {{- if and .Values.primary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.primary.persistence.enabled }}\n        - name: volume-permissions\n          image: {{ include \"mysql.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              mkdir -p \"/bitnami/mysql\"\n              chown \"{{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }}\" \"/bitnami/mysql\"\n              find \"/bitnami/mysql\" -mindepth 1 -maxdepth 1 -not -name \".snapshot\" -not -name \"lost+found\" | xargs -r chown -R \"{{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }}\"\n          securityContext:\n            runAsUser: 0\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: data\n              mountPath: /bitnami/mysql\n              {{- if .Values.primary.persistence.subPath }}\n              subPath: {{ .Values.primary.persistence.subPath }}\n              {{- end }}\n        {{- end }}\n        {{- if .Values.primary.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n      containers:\n        - name: mysql\n          image: {{ include \"mysql.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.primary.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.primary.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.primary.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.primary.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.primary.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: MYSQL_ROOT_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysql/secrets/mysql-root-password\" .Values.auth.customPasswordFiles.root }}\n            {{- else }}\n            - name: MYSQL_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"mysql.secretName\" . }}\n                  key: mysql-root-password\n            {{- end }}\n            {{- if not (empty .Values.auth.username) }}\n            - name: MYSQL_USER\n              value: {{ .Values.auth.username | quote }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: MYSQL_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysql/secrets/mysql-password\" .Values.auth.customPasswordFiles.user }}\n            {{- else }}\n            - name: MYSQL_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"mysql.secretName\" . }}\n                  key: mysql-password\n            {{- end }}\n            {{- end }}\n            {{- if and .Values.auth.createDatabase .Values.auth.database }}\n            - name: MYSQL_DATABASE\n              value: {{ .Values.auth.database | quote }}\n            {{- end }}\n            {{- if eq .Values.architecture \"replication\" }}\n            - name: MYSQL_REPLICATION_MODE\n              value: \"master\"\n            - name: MYSQL_REPLICATION_USER\n              value: {{ .Values.auth.replicationUser | quote }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: MYSQL_REPLICATION_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysql/secrets/mysql-replication-password\" .Values.auth.customPasswordFiles.replicator }}\n            {{- else }}\n            - name: MYSQL_REPLICATION_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"mysql.secretName\" . }}\n                  key: mysql-replication-password\n            {{- end }}\n            {{- end }}\n            {{- if .Values.primary.extraFlags }}\n            - name: MYSQL_EXTRA_FLAGS\n              value: \"{{ .Values.primary.extraFlags }}\"\n            {{- end }}\n            {{- if .Values.primary.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          envFrom:\n            {{- if .Values.primary.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.primary.extraEnvVarsCM \"context\" $) }}\n            {{- end }}\n            {{- if .Values.primary.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.primary.extraEnvVarsSecret \"context\" $) }}\n            {{- end }}\n          ports:\n            - name: mysql\n              containerPort: 3306\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.primary.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.primary.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.primary.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - |\n                  password_aux=\"${MYSQL_ROOT_PASSWORD:-}\"\n                  if [[ -f \"${MYSQL_ROOT_PASSWORD_FILE:-}\" ]]; then\n                      password_aux=$(cat \"$MYSQL_ROOT_PASSWORD_FILE\")\n                  fi\n                  mysqladmin status -uroot -p\"${password_aux}\"\n          {{- end }}\n          {{- if .Values.primary.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.primary.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.primary.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - |\n                  password_aux=\"${MYSQL_ROOT_PASSWORD:-}\"\n                  if [[ -f \"${MYSQL_ROOT_PASSWORD_FILE:-}\" ]]; then\n                      password_aux=$(cat \"$MYSQL_ROOT_PASSWORD_FILE\")\n                  fi\n                  mysqladmin status -uroot -p\"${password_aux}\"\n          {{- end }}\n          {{- if .Values.primary.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.primary.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.primary.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - |\n                  password_aux=\"${MYSQL_ROOT_PASSWORD:-}\"\n                  if [[ -f \"${MYSQL_ROOT_PASSWORD_FILE:-}\" ]]; then\n                      password_aux=$(cat \"$MYSQL_ROOT_PASSWORD_FILE\")\n                  fi\n                  mysqladmin status -uroot -p\"${password_aux}\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.primary.resources }}\n          resources: {{ toYaml .Values.primary.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: data\n              mountPath: /bitnami/mysql\n              {{- if .Values.primary.persistence.subPath }}\n              subPath: {{ .Values.primary.persistence.subPath }}\n              {{- end }}\n            {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n            - name: custom-init-scripts\n              mountPath: /docker-entrypoint-initdb.d\n            {{- end }}\n            {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }}\n            - name: config\n              mountPath: /opt/bitnami/mysql/conf/my.cnf\n              subPath: my.cnf\n            {{- end }}\n            {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }}\n            - name: mysql-credentials\n              mountPath: /opt/bitnami/mysql/secrets/\n            {{- end }}\n            {{- if .Values.primary.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ include \"mysql.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          env:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: MYSQL_ROOT_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysqld-exporter/secrets/mysql-root-password\" .Values.auth.customPasswordFiles.root }}\n            {{- else }}\n            - name: MYSQL_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"mysql.secretName\" . }}\n                  key: mysql-root-password\n            {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              password_aux=\"${MYSQL_ROOT_PASSWORD:-}\"\n              if [[ -f \"${MYSQL_ROOT_PASSWORD_FILE:-}\" ]]; then\n                  password_aux=$(cat \"$MYSQL_ROOT_PASSWORD_FILE\")\n              fi\n              DATA_SOURCE_NAME=\"root:${password_aux}@(localhost:3306)/\" /bin/mysqld_exporter {{- range .Values.metrics.extraArgs.primary }} {{ . }} {{- end }}\n          {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9104\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.metrics.livenessProbe.enabled }}\n          livenessProbe: {{- omit .Values.metrics.livenessProbe \"enabled\" | toYaml | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.readinessProbe.enabled }}\n          readinessProbe: {{- omit .Values.metrics.readinessProbe \"enabled\" | toYaml | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- end }}\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }}\n          volumeMounts:\n            - name: mysql-credentials\n              mountPath: /opt/bitnami/mysqld-exporter/secrets/\n          {{- end }}\n        {{- end }}\n        {{- if .Values.primary.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }}\n        - name: config\n          configMap:\n            name: {{ include \"mysql.primary.configmapName\" . }}\n        {{- end }}\n        {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n        - name: custom-init-scripts\n          configMap:\n            name: {{ include \"mysql.initdbScriptsCM\" . }}\n        {{- end }}\n        {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }}\n        - name: mysql-credentials\n          secret:\n            secretName: {{ include \"mysql.secretName\" . }}\n            items:\n              - key: mysql-root-password\n                path: mysql-root-password\n              - key: mysql-password\n                path: mysql-password\n              {{- if eq .Values.architecture \"replication\" }}\n              - key: mysql-replication-password\n                path: mysql-replication-password\n              {{- end }}\n        {{- end }}\n        {{- if .Values.primary.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n  {{- if and .Values.primary.persistence.enabled .Values.primary.persistence.existingClaim }}\n        - name: data\n          persistentVolumeClaim:\n            claimName: {{ tpl .Values.primary.persistence.existingClaim . }}\n  {{- else if not .Values.primary.persistence.enabled }}\n        - name: data\n          emptyDir: {}\n  {{- else if and .Values.primary.persistence.enabled (not .Values.primary.persistence.existingClaim) }}\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n        labels: {{ include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: primary\n          {{- if .Values.commonLabels }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonLabels \"context\" $) | nindent 10 }}\n          {{- end }}\n        annotations:\n          {{- if .Values.primary.persistence.annotations }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.persistence.annotations \"context\" $) | nindent 10 }}\n          {{- end }}\n          {{- if .Values.commonAnnotations }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonAnnotations \"context\" $) | nindent 10 }}\n          {{- end }}\n      spec:\n        accessModes:\n          {{- range .Values.primary.persistence.accessModes }}\n          - {{ . | quote }}\n          {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.primary.persistence.size | quote }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.primary.persistence \"global\" .Values.global) | nindent 8 }}\n        {{- if .Values.primary.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end -}}\n  {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/primary/svc-headless.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mysql.primary.fullname\" . }}-headless\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.primary.service.headless.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.primary.service.headless.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.service.headless.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  publishNotReadyAddresses: true\n  ports:\n    - name: mysql\n      port: {{ .Values.primary.service.ports.mysql }}\n      targetPort: mysql\n  selector: {{ include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/primary/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mysql.primary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.primary.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.primary.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  type: {{ .Values.primary.service.type }}\n  {{- if and .Values.primary.service.clusterIP (eq .Values.primary.service.type \"ClusterIP\") }}\n  clusterIP: {{ .Values.primary.service.clusterIP }}\n  {{- end }}\n  {{- if .Values.primary.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.primary.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.primary.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if or (eq .Values.primary.service.type \"LoadBalancer\") (eq .Values.primary.service.type \"NodePort\") }}\n  externalTrafficPolicy: {{ .Values.primary.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if and (eq .Values.primary.service.type \"LoadBalancer\") (not (empty .Values.primary.service.loadBalancerSourceRanges)) }}\n  loadBalancerSourceRanges: {{ .Values.primary.service.loadBalancerSourceRanges }}\n  {{- end }}\n  {{- if and (eq .Values.primary.service.type \"LoadBalancer\") (not (empty .Values.primary.service.loadBalancerIP)) }}\n  loadBalancerIP: {{ .Values.primary.service.loadBalancerIP }}\n  {{- end }}\n  ports:\n    - name: mysql\n      port: {{ .Values.primary.service.ports.mysql }}\n      protocol: TCP\n      targetPort: mysql\n      {{- if (and (or (eq .Values.primary.service.type \"NodePort\") (eq .Values.primary.service.type \"LoadBalancer\")) .Values.primary.service.nodePorts.mysql) }}\n      nodePort: {{ .Values.primary.service.nodePorts.mysql }}\n      {{- else if eq .Values.primary.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n    {{- if .Values.primary.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.primary.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{ include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: primary\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/prometheusrule.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ default .Release.Namespace .Values.metrics.prometheusRule.namespace }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: metrics\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.metrics.prometheusRule.additionalLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.prometheusRule.additionalLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  groups:\n  - name: {{ include \"common.names.fullname\" . }}\n    rules: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.prometheusRule.rules \"context\" $ ) | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/role.yaml",
    "content": "{{- if and .Values.serviceAccount.create  .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: Role\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - endpoints\n    verbs:\n      - get\n  {{- if .Values.rbac.rules }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.rbac.rules \"context\" $ ) | nindent 2 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/rolebinding.yaml",
    "content": "{{- if and .Values.serviceAccount.create .Values.rbac.create }}\nkind: RoleBinding\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"mysql.serviceAccountName\" . }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ include \"common.names.fullname\" . -}}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/secondary/configmap.yaml",
    "content": "{{- if (include \"mysql.secondary.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"mysql.secondary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  my.cnf: |-\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.secondary.configuration \"context\" $ ) | nindent 4 }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/secondary/pdb.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") .Values.secondary.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ include \"mysql.secondary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.secondary.pdb.minAvailable }}\n  minAvailable: {{ .Values.secondary.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.secondary.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.secondary.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: secondary\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/secondary/statefulset.yaml",
    "content": "{{- if eq .Values.architecture \"replication\" }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ include \"mysql.secondary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.secondary.replicaCount }}\n  podManagementPolicy: {{ .Values.secondary.podManagementPolicy | quote }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: secondary\n  serviceName: {{ include \"mysql.secondary.fullname\" . }}\n  {{- if .Values.secondary.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.secondary.updateStrategy | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      annotations:\n        {{- if (include \"mysql.secondary.createConfigmap\" .) }}\n        checksum/configuration: {{ include (print $.Template.BasePath \"/secondary/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.secondary.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: secondary\n        {{- if .Values.secondary.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.secondary.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      serviceAccountName: {{ include \"mysql.serviceAccountName\" . }}\n      {{- include \"mysql.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.secondary.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.secondary.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.secondary.podAffinityPreset \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.secondary.podAntiAffinityPreset \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.secondary.nodeAffinityPreset.type \"key\" .Values.secondary.nodeAffinityPreset.key \"values\" .Values.secondary.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.secondary.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.secondary.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.secondary.priorityClassName }}\n      priorityClassName: {{ .Values.secondary.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.secondary.runtimeClassName }}\n      runtimeClassName: {{ .Values.secondary.runtimeClassName | quote }}\n      {{- end }}\n      {{- if .Values.secondary.schedulerName }}\n      schedulerName: {{ .Values.secondary.schedulerName | quote }}\n      {{- end }}\n      {{- if .Values.secondary.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.topologySpreadConstraints \"context\" .) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.secondary.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.secondary.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{- if .Values.secondary.terminationGracePeriodSeconds }}\n      terminationGracePeriodSeconds: {{ .Values.secondary.terminationGracePeriodSeconds }}\n      {{- end }}\n      initContainers:\n        {{- if and .Values.secondary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.secondary.persistence.enabled }}\n        - name: volume-permissions\n          image: {{ include \"mysql.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              mkdir -p \"/bitnami/mysql\"\n              chown \"{{ .Values.secondary.containerSecurityContext.runAsUser }}:{{ .Values.secondary.podSecurityContext.fsGroup }}\" \"/bitnami/mysql\"\n              find \"/bitnami/mysql\" -mindepth 1 -maxdepth 1 -not -name \".snapshot\" -not -name \"lost+found\" | xargs -r chown -R \"{{ .Values.secondary.containerSecurityContext.runAsUser }}:{{ .Values.secondary.podSecurityContext.fsGroup }}\"\n          securityContext:\n            runAsUser: 0\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: data\n              mountPath: /bitnami/mysql\n              {{- if .Values.secondary.persistence.subPath }}\n              subPath: {{ .Values.secondary.persistence.subPath }}\n              {{- end }}\n        {{- end }}\n        {{- if .Values.secondary.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n      containers:\n        - name: mysql\n          image: {{ include \"mysql.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.secondary.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.secondary.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.secondary.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.secondary.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.secondary.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: MYSQL_REPLICATION_MODE\n              value: \"slave\"\n            - name: MYSQL_MASTER_HOST\n              value: {{ include \"mysql.primary.fullname\" . }}\n            - name: MYSQL_MASTER_PORT_NUMBER\n              value: {{ .Values.primary.service.ports.mysql | quote }}\n            - name: MYSQL_MASTER_ROOT_USER\n              value: \"root\"\n            - name: MYSQL_REPLICATION_USER\n              value: {{ .Values.auth.replicationUser | quote }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: MYSQL_MASTER_ROOT_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysql/secrets/mysql-root-password\" .Values.auth.customPasswordFiles.root }}\n            - name: MYSQL_REPLICATION_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysql/secrets/mysql-replication-password\" .Values.auth.customPasswordFiles.replicator }}\n            {{- else }}\n            - name: MYSQL_MASTER_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"mysql.secretName\" . }}\n                  key: mysql-root-password\n            - name: MYSQL_REPLICATION_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"mysql.secretName\" . }}\n                  key: mysql-replication-password\n            {{- end }}\n            {{- if .Values.secondary.extraFlags }}\n            - name: MYSQL_EXTRA_FLAGS\n              value: \"{{ .Values.secondary.extraFlags }}\"\n            {{- end }}\n            {{- if .Values.secondary.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          envFrom:\n            {{- if .Values.secondary.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.extraEnvVarsCM \"context\" $) }}\n            {{- end }}\n            {{- if .Values.secondary.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.extraEnvVarsSecret \"context\" $) }}\n            {{- end }}\n          ports:\n            - name: mysql\n              containerPort: 3306\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.secondary.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.secondary.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.secondary.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - |\n                  password_aux=\"${MYSQL_MASTER_ROOT_PASSWORD:-}\"\n                  if [[ -f \"${MYSQL_MASTER_ROOT_PASSWORD_FILE:-}\" ]]; then\n                      password_aux=$(cat \"$MYSQL_MASTER_ROOT_PASSWORD_FILE\")\n                  fi\n                  mysqladmin status -uroot -p\"${password_aux}\"\n          {{- end }}\n          {{- if .Values.secondary.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.secondary.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.secondary.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - |\n                  password_aux=\"${MYSQL_MASTER_ROOT_PASSWORD:-}\"\n                  if [[ -f \"${MYSQL_MASTER_ROOT_PASSWORD_FILE:-}\" ]]; then\n                      password_aux=$(cat \"$MYSQL_MASTER_ROOT_PASSWORD_FILE\")\n                  fi\n                  mysqladmin status -uroot -p\"${password_aux}\"\n          {{- end }}\n          {{- if .Values.secondary.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.secondary.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.secondary.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - |\n                  password_aux=\"${MYSQL_MASTER_ROOT_PASSWORD:-}\"\n                  if [[ -f \"${MYSQL_MASTER_ROOT_PASSWORD_FILE:-}\" ]]; then\n                      password_aux=$(cat \"$MYSQL_MASTER_ROOT_PASSWORD_FILE\")\n                  fi\n                  mysqladmin status -uroot -p\"${password_aux}\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.secondary.resources }}\n          resources: {{ toYaml .Values.secondary.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: data\n              mountPath: /bitnami/mysql\n              {{- if .Values.secondary.persistence.subPath }}\n              subPath: {{ .Values.secondary.persistence.subPath }}\n              {{- end }}\n            {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n            - name: custom-init-scripts\n              mountPath: /docker-entrypoint-initdb.d\n            {{- end }}\n            {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }}\n            - name: config\n              mountPath: /opt/bitnami/mysql/conf/my.cnf\n              subPath: my.cnf\n            {{- end }}\n            {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }}\n            - name: mysql-credentials\n              mountPath: /opt/bitnami/mysql/secrets/\n            {{- end }}\n            {{- if .Values.secondary.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ include \"mysql.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          env:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: MYSQL_ROOT_PASSWORD_FILE\n              value: {{ default \"/opt/bitnami/mysqld-exporter/secrets/mysql-root-password\" .Values.auth.customPasswordFiles.root }}\n            {{- else }}\n            - name: MYSQL_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"mysql.secretName\" . }}\n                  key: mysql-root-password\n            {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              password_aux=\"${MYSQL_ROOT_PASSWORD:-}\"\n              if [[ -f \"${MYSQL_ROOT_PASSWORD_FILE:-}\" ]]; then\n                  password_aux=$(cat \"$MYSQL_ROOT_PASSWORD_FILE\")\n              fi\n              DATA_SOURCE_NAME=\"root:${password_aux}@(localhost:3306)/\" /bin/mysqld_exporter {{- range .Values.metrics.extraArgs.secondary }} {{ . }} {{- end }}\n          {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9104\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.metrics.livenessProbe.enabled }}\n          livenessProbe: {{- omit .Values.metrics.livenessProbe \"enabled\" | toYaml | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- if .Values.metrics.readinessProbe.enabled }}\n          readinessProbe: {{- omit .Values.metrics.readinessProbe \"enabled\" | toYaml | nindent 12 }}\n            httpGet:\n              path: /metrics\n              port: metrics\n          {{- end }}\n          {{- end }}\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }}\n          volumeMounts:\n            - name: mysql-credentials\n              mountPath: /opt/bitnami/mysqld-exporter/secrets/\n          {{- end }}\n        {{- end }}\n        {{- if .Values.secondary.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}\n        - name: custom-init-scripts\n          configMap:\n            name: {{ include \"mysql.initdbScriptsCM\" . }}\n        {{- end }}\n        {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }}\n        - name: config\n          configMap:\n            name: {{ include \"mysql.secondary.configmapName\" . }}\n        {{- end }}\n        {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }}\n        - name: mysql-credentials\n          secret:\n            secretName: {{ template \"mysql.secretName\" . }}\n            items:\n              - key: mysql-root-password\n                path: mysql-root-password\n              - key: mysql-replication-password\n                path: mysql-replication-password\n        {{- end }}\n        {{- if .Values.secondary.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n  {{- if and .Values.secondary.persistence.enabled .Values.secondary.persistence.existingClaim }}\n        - name: data\n          persistentVolumeClaim:\n            claimName: {{ tpl .Values.secondary.persistence.existingClaim . }}\n  {{- else if not .Values.secondary.persistence.enabled }}\n        - name: data\n          emptyDir: {}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n        labels: {{ include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: secondary\n          {{- if .Values.commonLabels }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonLabels \"context\" $) | nindent 10 }}\n          {{- end }}\n        annotations:\n          {{- if .Values.secondary.persistence.annotations }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.persistence.annotations \"context\" $) | nindent 10 }}\n          {{- end }}\n          {{- if .Values.commonAnnotations }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonAnnotations \"context\" $) | nindent 10 }}\n          {{- end }}\n      spec:\n        accessModes:\n          {{- range .Values.secondary.persistence.accessModes }}\n          - {{ . | quote }}\n          {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.secondary.persistence.size | quote }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.secondary.persistence \"global\" .Values.global) | nindent 8 }}\n        {{- if .Values.secondary.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end -}}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/secondary/svc-headless.yaml",
    "content": "{{- if eq .Values.architecture \"replication\" }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mysql.secondary.fullname\" . }}-headless\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.secondary.service.headless.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.secondary.service.headless.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.service.headless.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  publishNotReadyAddresses: true\n  ports:\n    - name: mysql\n      port: {{ .Values.secondary.service.ports.mysql }}\n      targetPort: mysql\n  selector: {{ include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/secondary/svc.yaml",
    "content": "{{- if eq .Values.architecture \"replication\" }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"mysql.secondary.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.secondary.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.secondary.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  type: {{ .Values.secondary.service.type }}\n  {{- if and .Values.secondary.service.clusterIP (eq .Values.secondary.service.type \"ClusterIP\") }}\n  clusterIP: {{ .Values.secondary.service.clusterIP }}\n  {{- end }}\n  {{- if .Values.secondary.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.secondary.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.secondary.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if or (eq .Values.secondary.service.type \"LoadBalancer\") (eq .Values.secondary.service.type \"NodePort\") }}\n  externalTrafficPolicy: {{ .Values.secondary.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if and (eq .Values.secondary.service.type \"LoadBalancer\") (not (empty .Values.secondary.service.loadBalancerSourceRanges)) }}\n  loadBalancerSourceRanges: {{ .Values.secondary.service.loadBalancerSourceRanges }}\n  {{- end }}\n  {{- if and (eq .Values.secondary.service.type \"LoadBalancer\") (not (empty .Values.secondary.service.loadBalancerIP)) }}\n  loadBalancerIP: {{ .Values.secondary.service.loadBalancerIP }}\n  {{- end }}\n  ports:\n    - name: mysql\n      port: {{ .Values.secondary.service.ports.mysql }}\n      protocol: TCP\n      targetPort: mysql\n      {{- if (and (or (eq .Values.secondary.service.type \"NodePort\") (eq .Values.secondary.service.type \"LoadBalancer\")) .Values.secondary.service.nodePorts.mysql) }}\n      nodePort: {{ .Values.secondary.service.nodePorts.mysql }}\n      {{- else if eq .Values.secondary.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n    {{- if .Values.secondary.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.secondary.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{ include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: secondary\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/secrets.yaml",
    "content": "{{- if eq (include \"mysql.createSecret\" .) \"true\" }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  mysql-root-password: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"common.names.fullname\" .) \"key\" \"mysql-root-password\" \"length\" 10 \"providedValues\" (list \"auth.rootPassword\") \"context\" $) }}\n  mysql-password: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"common.names.fullname\" .) \"key\" \"mysql-password\" \"length\" 10 \"providedValues\" (list \"auth.password\") \"context\" $) }}\n  {{- if eq .Values.architecture \"replication\" }}\n  mysql-replication-password: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"common.names.fullname\" .) \"key\" \"mysql-replication-password\" \"length\" 10 \"providedValues\" (list \"auth.replicationPassword\") \"context\" $) }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"mysql.serviceAccountName\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.serviceAccount.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.serviceAccount.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nautomountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}\n{{- if (not .Values.auth.customPasswordFiles) }}\nsecrets:\n  - name: {{ template \"mysql.secretName\" . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/templates/servicemonitor.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ default (include \"common.names.namespace\" .) .Values.metrics.serviceMonitor.namespace }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.serviceMonitor.labels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.labels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.metrics.serviceMonitor.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }}\n  endpoints:\n    - port: metrics\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.honorLabels }}\n      honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.metricRelabelings }}\n      metricRelabelings: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.metricRelabelings \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.relabelings }}\n      relabelings: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.relabelings \"context\" $) | nindent 8 }}\n      {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ include \"common.names.namespace\" . | quote }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: metrics\n      {{- if .Values.metrics.serviceMonitor.selector }}\n      {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.selector \"context\" $) | nindent 6 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/values.schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"architecture\": {\n      \"type\": \"string\",\n      \"title\": \"MySQL architecture\",\n      \"form\": true,\n      \"description\": \"Allowed values: `standalone` or `replication`\",\n      \"enum\": [\"standalone\", \"replication\"]\n    },\n    \"auth\": {\n      \"type\": \"object\",\n      \"title\": \"Authentication configuration\",\n      \"form\": true,\n      \"required\": [\"username\", \"password\"],\n      \"if\": {\n        \"properties\": {\n          \"createDatabase\":  { \"enum\": [ true ] }\n        }\n      },\n      \"then\": {\n        \"properties\": {\n          \"database\": {\n            \"pattern\": \"[a-zA-Z0-9]{1,64}\"\n          }\n        }\n      },\n      \"properties\": {\n        \"rootPassword\": {\n          \"type\": \"string\",\n          \"title\": \"MySQL root password\",\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\"\n        },\n        \"database\": {\n          \"type\": \"string\",\n          \"title\": \"MySQL custom database name\",\n          \"maxLength\": 64\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"title\": \"MySQL custom username\"\n        },\n        \"password\": {\n          \"type\": \"string\",\n          \"title\": \"MySQL custom password\"\n        },\n        \"replicationUser\": {\n          \"type\": \"string\",\n          \"title\": \"MySQL replication username\"\n        },\n        \"replicationPassword\": {\n          \"type\": \"string\",\n          \"title\": \"MySQL replication password\"\n        },\n        \"createDatabase\": {\n          \"type\": \"boolean\",\n          \"title\": \"MySQL create custom database\"\n        }\n      }\n    },\n    \"primary\": {\n      \"type\": \"object\",\n      \"title\": \"Primary database configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"podSecurityContext\": {\n          \"type\": \"object\",\n          \"title\": \"MySQL primary Pod security context\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"default\": false\n            },\n            \"fsGroup\": {\n              \"type\": \"integer\",\n              \"default\": 1001,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"primary/podSecurityContext/enabled\"\n              }\n            }\n          }\n        },\n        \"containerSecurityContext\": {\n          \"type\": \"object\",\n          \"title\": \"MySQL primary container security context\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"default\": false\n            },\n            \"runAsUser\": {\n              \"type\": \"integer\",\n              \"default\": 1001,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"primary/containerSecurityContext/enabled\"\n              }\n            }\n          }\n        },\n        \"persistence\": {\n          \"type\": \"object\",\n          \"title\": \"Enable persistence using Persistent Volume Claims\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"default\": true,\n              \"title\": \"If true, use a Persistent Volume Claim, If false, use emptyDir\"\n            },\n            \"size\": {\n              \"type\": \"string\",\n              \"title\": \"Persistent Volume Size\",\n              \"form\": true,\n              \"render\": \"slider\",\n              \"sliderMin\": 1,\n              \"sliderUnit\": \"Gi\",\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"primary/persistence/enabled\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"secondary\": {\n      \"type\": \"object\",\n      \"title\": \"Secondary database configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"podSecurityContext\": {\n          \"type\": \"object\",\n          \"title\": \"MySQL secondary Pod security context\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"default\": false\n            },\n            \"fsGroup\": {\n              \"type\": \"integer\",\n              \"default\": 1001,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"secondary/podSecurityContext/enabled\"\n              }\n            }\n          }\n        },\n        \"containerSecurityContext\": {\n          \"type\": \"object\",\n          \"title\": \"MySQL secondary container security context\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"default\": false\n            },\n            \"runAsUser\": {\n              \"type\": \"integer\",\n              \"default\": 1001,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"secondary/containerSecurityContext/enabled\"\n              }\n            }\n          }\n        },\n        \"persistence\": {\n          \"type\": \"object\",\n          \"title\": \"Enable persistence using Persistent Volume Claims\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"default\": true,\n              \"title\": \"If true, use a Persistent Volume Claim, If false, use emptyDir\"\n            },\n            \"size\": {\n              \"type\": \"string\",\n              \"title\": \"Persistent Volume Size\",\n              \"form\": true,\n              \"render\": \"slider\",\n              \"sliderMin\": 1,\n              \"sliderUnit\": \"Gi\",\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"secondary/persistence/enabled\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/mysql/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"nfs-sc-opsany\"\n\n## @section Common parameters\n\n## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)\n##\nkubeVersion: \"\"\n## @param nameOverride String to partially override common.names.fullname template (will maintain the release name)\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override common.names.fullname template\n##\nfullnameOverride: \"\"\n## @param namespaceOverride String to fully override common.names.namespace\n##\nnamespaceOverride: \"\"\n## @param clusterDomain Cluster domain\n##\nclusterDomain: cluster.local\n## @param commonAnnotations Common annotations to add to all MySQL resources (sub-charts are not considered). Evaluated as a template\n##\ncommonAnnotations: {}\n## @param commonLabels Common labels to add to all MySQL resources (sub-charts are not considered). Evaluated as a template\n##\ncommonLabels: {}\n## @param extraDeploy Array with extra yaml to deploy with the chart. Evaluated as a template\n##\nextraDeploy: []\n\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section MySQL common parameters\n\n## Bitnami MySQL image\n## ref: https://hub.docker.com/r/bitnami/mysql/tags/\n## @param image.registry MySQL image registry\n## @param image.repository MySQL image repository\n## @param image.tag MySQL image tag (immutable tags are recommended)\n## @param image.digest MySQL image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n## @param image.pullPolicy MySQL image pull policy\n## @param image.pullSecrets Specify docker-registry secret names as an array\n## @param image.debug Specify if debug logs should be enabled\n##\nimage:\n  registry: registry.cn-beijing.aliyuncs.com\n  repository: opsany/mysql\n  tag: 8.0.31-debian-11-r10\n\n  digest: \"\"\n  ## Specify a imagePullPolicy\n  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## Example:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n  ## Set to true if you would like to see extra information on logs\n  ## It turns BASH and/or NAMI debugging in the image\n  ##\n  debug: false\n## @param architecture MySQL architecture (`standalone` or `replication`)\n##\narchitecture: standalone\n## MySQL Authentication parameters\n##\nauth:\n  ## @param auth.rootPassword Password for the `root` user. Ignored if existing secret is provided\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#setting-the-root-password-on-first-run\n  ##\n  rootPassword: \"MYSQL_ROOT_PASSWORD\"\n  ## @param auth.createDatabase Wheter to create the .Values.auth.database or not\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#creating-a-database-on-first-run\n  ##\n  createDatabase: false\n  ## @param auth.database Name for a custom database to create\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#creating-a-database-on-first-run\n  ##\n  database: \"\"\n  ## @param auth.username Name for a custom user to create\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#creating-a-database-user-on-first-run\n  ##\n  username: \"\"\n  ## @param auth.password Password for the new user. Ignored if existing secret is provided\n  ##\n  password: \"\"\n  ## @param auth.replicationUser MySQL replication user\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#setting-up-a-replication-cluster\n  ##\n  replicationUser: replicator\n  ## @param auth.replicationPassword MySQL replication user password. Ignored if existing secret is provided\n  ##\n  replicationPassword: \"\"\n  ## @param auth.existingSecret Use existing secret for password details. The secret has to contain the keys `mysql-root-password`, `mysql-replication-password` and `mysql-password`\n  ## NOTE: When it's set the auth.rootPassword, auth.password, auth.replicationPassword are ignored.\n  ##\n  existingSecret: \"\"\n  ## @param auth.usePasswordFiles Mount credentials as files instead of using an environment variable\n  ##\n  usePasswordFiles: false\n  ## @param auth.customPasswordFiles Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication`\n  ## Example:\n  ## customPasswordFiles:\n  ##   root: /vault/secrets/mysql-root\n  ##   user: /vault/secrets/mysql-user\n  ##   replicator: /vault/secrets/mysql-replicator\n  ##\n  customPasswordFiles: {}\n## @param initdbScripts Dictionary of initdb scripts\n## Specify dictionary of scripts to be run at first boot\n## Example:\n## initdbScripts:\n##   my_init_script.sh: |\n##      #!/bin/bash\n##      echo \"Do something.\"\n##\ninitdbScripts: {}\n## @param initdbScriptsConfigMap ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`)\n##\ninitdbScriptsConfigMap: \"\"\n\n## @section MySQL Primary parameters\n\nprimary:\n  ## @param primary.name Name of the primary database (eg primary, master, leader, ...)\n  ##\n  name: primary\n  ## @param primary.command Override default container command on MySQL Primary container(s) (useful when using custom images)\n  ##\n  command: []\n  ## @param primary.args Override default container args on MySQL Primary container(s) (useful when using custom images)\n  ##\n  args: []\n  ## @param primary.lifecycleHooks for the MySQL Primary container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param primary.hostAliases Deployment pod host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param primary.configuration [string] Configure MySQL Primary with a custom my.cnf file\n  ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file\n  ##\n  configuration: |-\n    [mysqld]\n    default_authentication_plugin=mysql_native_password\n    skip-name-resolve\n    explicit_defaults_for_timestamp\n    basedir=/opt/bitnami/mysql\n    plugin_dir=/opt/bitnami/mysql/lib/plugin\n    port=3306\n    socket=/opt/bitnami/mysql/tmp/mysql.sock\n    datadir=/bitnami/mysql/data\n    tmpdir=/opt/bitnami/mysql/tmp\n    max_allowed_packet=16M\n    bind-address=*\n    pid-file=/opt/bitnami/mysql/tmp/mysqld.pid\n    log-error=/opt/bitnami/mysql/logs/mysqld.log\n    character-set-server=UTF8\n    collation-server=utf8_general_ci\n    slow_query_log=0\n    slow_query_log_file=/opt/bitnami/mysql/logs/mysqld.log\n    long_query_time=10.0\n\n    [client]\n    port=3306\n    socket=/opt/bitnami/mysql/tmp/mysql.sock\n    default-character-set=UTF8\n    plugin_dir=/opt/bitnami/mysql/lib/plugin\n\n    [manager]\n    port=3306\n    socket=/opt/bitnami/mysql/tmp/mysql.sock\n    pid-file=/opt/bitnami/mysql/tmp/mysqld.pid\n  ## @param primary.existingConfigmap Name of existing ConfigMap with MySQL Primary configuration.\n  ## NOTE: When it's set the 'configuration' parameter is ignored\n  ##\n  existingConfigmap: \"\"\n  ## @param primary.updateStrategy.type Update strategy type for the MySQL primary statefulset\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ##\n  updateStrategy:\n    type: RollingUpdate\n  ## @param primary.podAnnotations Additional pod annotations for MySQL primary pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param primary.podAffinityPreset MySQL primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param primary.podAntiAffinityPreset MySQL primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## MySQL Primary node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param primary.nodeAffinityPreset.type MySQL primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param primary.nodeAffinityPreset.key MySQL primary node label key to match Ignored if `primary.affinity` is set.\n    ## E.g.\n    ## key: \"kubernetes.io/e2e-az-name\"\n    ##\n    key: \"\"\n    ## @param primary.nodeAffinityPreset.values MySQL primary node label values to match. Ignored if `primary.affinity` is set.\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param primary.affinity Affinity for MySQL primary pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param primary.nodeSelector Node labels for MySQL primary pods assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param primary.tolerations Tolerations for MySQL primary pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param primary.priorityClassName MySQL primary pods' priorityClassName\n  ##\n  priorityClassName: \"\"\n  ## @param primary.runtimeClassName MySQL primary pods' runtimeClassName\n  ##\n  runtimeClassName: \"\"\n  ## @param primary.schedulerName Name of the k8s scheduler (other than default)\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param primary.terminationGracePeriodSeconds In seconds, time the given to the MySQL primary pod needs to terminate gracefully\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods\n  ##\n  terminationGracePeriodSeconds: \"\"\n  ## @param primary.topologySpreadConstraints Topology Spread Constraints for pod assignment\n  ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ## The value is evaluated as a template\n  ##\n  topologySpreadConstraints: []\n  ## @param primary.podManagementPolicy podManagementPolicy to manage scaling operation of MySQL primary pods\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies\n  ##\n  podManagementPolicy: \"\"\n  ## MySQL primary Pod security context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param primary.podSecurityContext.enabled Enable security context for MySQL primary pods\n  ## @param primary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n  ## MySQL primary container security context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ## @param primary.containerSecurityContext.enabled MySQL primary container securityContext\n  ## @param primary.containerSecurityContext.runAsUser User ID for the MySQL primary container\n  ## @param primary.containerSecurityContext.runAsNonRoot Set MySQL primary container's Security Context runAsNonRoot\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n    runAsNonRoot: true\n  ## MySQL primary container's resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param primary.resources.limits The resources limits for MySQL primary containers\n  ## @param primary.resources.requests The requested resources for MySQL primary containers\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 250m\n    ##    memory: 256Mi\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 250m\n    ##    memory: 256Mi\n    requests: {}\n  ## Configure extra options for liveness probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param primary.livenessProbe.enabled Enable livenessProbe\n  ## @param primary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param primary.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param primary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param primary.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param primary.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 1\n    failureThreshold: 3\n    successThreshold: 1\n  ## Configure extra options for readiness probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param primary.readinessProbe.enabled Enable readinessProbe\n  ## @param primary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param primary.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param primary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param primary.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param primary.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 1\n    failureThreshold: 3\n    successThreshold: 1\n  ## Configure extra options for startupProbe probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param primary.startupProbe.enabled Enable startupProbe\n  ## @param primary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param primary.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param primary.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param primary.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param primary.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: true\n    initialDelaySeconds: 15\n    periodSeconds: 10\n    timeoutSeconds: 1\n    failureThreshold: 10\n    successThreshold: 1\n  ## @param primary.customLivenessProbe Override default liveness probe for MySQL primary containers\n  ##\n  customLivenessProbe: {}\n  ## @param primary.customReadinessProbe Override default readiness probe for MySQL primary containers\n  ##\n  customReadinessProbe: {}\n  ## @param primary.customStartupProbe Override default startup probe for MySQL primary containers\n  ##\n  customStartupProbe: {}\n  ## @param primary.extraFlags MySQL primary additional command line flags\n  ## Can be used to specify command line flags, for example:\n  ## E.g.\n  ## extraFlags: \"--max-connect-errors=1000 --max_connections=155\"\n  ##\n  extraFlags: \"--max-connect-errors=1000 --max_connections=4096\"\n  ## @param primary.extraEnvVars Extra environment variables to be set on MySQL primary containers\n  ## E.g.\n  ## extraEnvVars:\n  ##  - name: TZ\n  ##    value: \"Europe/Paris\"\n  ##\n  extraEnvVars: []\n  ## @param primary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MySQL primary containers\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param primary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MySQL primary containers\n  ##\n  extraEnvVarsSecret: \"\"\n  ## Enable persistence using Persistent Volume Claims\n  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param primary.persistence.enabled Enable persistence on MySQL primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir\n    ##\n    enabled: true\n    ## @param primary.persistence.existingClaim Name of an existing `PersistentVolumeClaim` for MySQL primary replicas\n    ## NOTE: When it's set the rest of persistence parameters are ignored\n    ##\n    existingClaim: \"\"\n    ## @param primary.persistence.subPath The name of a volume's sub path to mount for persistence\n    ##\n    subPath: \"\"\n    ## @param primary.persistence.storageClass MySQL primary persistent volume storage Class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is\n    ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\n    ##   GKE, AWS & OpenStack)\n    ##\n    storageClass: \"\"\n    ## @param primary.persistence.annotations MySQL primary persistent volume claim annotations\n    ##\n    annotations: {}\n    ## @param primary.persistence.accessModes MySQL primary persistent volume access Modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param primary.persistence.size MySQL primary persistent volume size\n    ##\n    size: 8Gi\n    ## @param primary.persistence.selector Selector to match an existing Persistent Volume\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n  ## @param primary.extraVolumes Optionally specify extra list of additional volumes to the MySQL Primary pod(s)\n  ##\n  extraVolumes: []\n  ## @param primary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MySQL Primary container(s)\n  ##\n  extraVolumeMounts: []\n  ## @param primary.initContainers Add additional init containers for the MySQL Primary pod(s)\n  ##\n  initContainers: []\n  ## @param primary.sidecars Add additional sidecar containers for the MySQL Primary pod(s)\n  ##\n  sidecars: []\n  ## MySQL Primary Service parameters\n  ##\n  service:\n    ## @param primary.service.type MySQL Primary K8s service type\n    ##\n    type: ClusterIP\n    ## @param primary.service.ports.mysql MySQL Primary K8s service port\n    ##\n    ports:\n      mysql: 3306\n    ## @param primary.service.nodePorts.mysql MySQL Primary K8s service node port\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ##\n    nodePorts:\n      mysql: \"\"\n    ## @param primary.service.clusterIP MySQL Primary K8s service clusterIP IP\n    ## e.g:\n    ## clusterIP: None\n    ##\n    clusterIP: \"\"\n    ## @param primary.service.loadBalancerIP MySQL Primary loadBalancerIP if service type is `LoadBalancer`\n    ## Set the LoadBalancer service type to internal only\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param primary.service.externalTrafficPolicy Enable client source IP preservation\n    ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param primary.service.loadBalancerSourceRanges Addresses that are allowed when MySQL Primary service is LoadBalancer\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## E.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param primary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param primary.service.annotations Additional custom annotations for MySQL primary service\n    ##\n    annotations: {}\n    ## @param primary.service.sessionAffinity Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"\n    ## If \"ClientIP\", consecutive client requests will be directed to the same Pod\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n    ##\n    sessionAffinity: None\n    ## @param primary.service.sessionAffinityConfig Additional settings for the sessionAffinity\n    ## sessionAffinityConfig:\n    ##   clientIP:\n    ##     timeoutSeconds: 300\n    ##\n    sessionAffinityConfig: {}\n    ## Headless service properties\n    ##\n    headless:\n      ## @param primary.service.headless.annotations Additional custom annotations for headless MySQL primary service.\n      ##\n      annotations: {}\n\n  ## MySQL primary Pod Disruption Budget configuration\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n  ##\n  pdb:\n    ## @param primary.pdb.create Enable/disable a Pod Disruption Budget creation for MySQL primary pods\n    ##\n    create: false\n    ## @param primary.pdb.minAvailable Minimum number/percentage of MySQL primary pods that should remain scheduled\n    ##\n    minAvailable: 1\n    ## @param primary.pdb.maxUnavailable Maximum number/percentage of MySQL primary pods that may be made unavailable\n    ##\n    maxUnavailable: \"\"\n  ## @param primary.podLabels MySQL Primary pod label. If labels are same as commonLabels , this will take precedence\n  ##\n  podLabels: {}\n\n## @section MySQL Secondary parameters\n\nsecondary:\n  ## @param secondary.name Name of the secondary database (eg secondary, slave, ...)\n  ##\n  name: secondary\n  ## @param secondary.replicaCount Number of MySQL secondary replicas\n  ##\n  replicaCount: 1\n  ## @param secondary.hostAliases Deployment pod host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param secondary.command Override default container command on MySQL Secondary container(s) (useful when using custom images)\n  ##\n  command: []\n  ## @param secondary.args Override default container args on MySQL Secondary container(s) (useful when using custom images)\n  ##\n  args: []\n  ## @param secondary.lifecycleHooks for the MySQL Secondary container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param secondary.configuration [string] Configure MySQL Secondary with a custom my.cnf file\n  ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file\n  ##\n  configuration: |-\n    [mysqld]\n    default_authentication_plugin=mysql_native_password\n    skip-name-resolve\n    explicit_defaults_for_timestamp\n    basedir=/opt/bitnami/mysql\n    plugin_dir=/opt/bitnami/mysql/lib/plugin\n    port=3306\n    socket=/opt/bitnami/mysql/tmp/mysql.sock\n    datadir=/bitnami/mysql/data\n    tmpdir=/opt/bitnami/mysql/tmp\n    max_allowed_packet=16M\n    bind-address=*\n    pid-file=/opt/bitnami/mysql/tmp/mysqld.pid\n    log-error=/opt/bitnami/mysql/logs/mysqld.log\n    character-set-server=UTF8\n    collation-server=utf8_general_ci\n    slow_query_log=0\n    slow_query_log_file=/opt/bitnami/mysql/logs/mysqld.log\n    long_query_time=10.0\n\n    [client]\n    port=3306\n    socket=/opt/bitnami/mysql/tmp/mysql.sock\n    default-character-set=UTF8\n    plugin_dir=/opt/bitnami/mysql/lib/plugin\n\n    [manager]\n    port=3306\n    socket=/opt/bitnami/mysql/tmp/mysql.sock\n    pid-file=/opt/bitnami/mysql/tmp/mysqld.pid\n  ## @param secondary.existingConfigmap Name of existing ConfigMap with MySQL Secondary configuration.\n  ## NOTE: When it's set the 'configuration' parameter is ignored\n  ##\n  existingConfigmap: \"\"\n  ## @param secondary.updateStrategy.type Update strategy type for the MySQL secondary statefulset\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ##\n  updateStrategy:\n    type: RollingUpdate\n  ## @param secondary.podAnnotations Additional pod annotations for MySQL secondary pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param secondary.podAffinityPreset MySQL secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param secondary.podAntiAffinityPreset MySQL secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ## Allowed values: soft, hard\n  ##\n  podAntiAffinityPreset: soft\n  ## MySQL Secondary node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param secondary.nodeAffinityPreset.type MySQL secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param secondary.nodeAffinityPreset.key MySQL secondary node label key to match Ignored if `secondary.affinity` is set.\n    ## E.g.\n    ## key: \"kubernetes.io/e2e-az-name\"\n    ##\n    key: \"\"\n    ## @param secondary.nodeAffinityPreset.values MySQL secondary node label values to match. Ignored if `secondary.affinity` is set.\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param secondary.affinity Affinity for MySQL secondary pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param secondary.nodeSelector Node labels for MySQL secondary pods assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param secondary.tolerations Tolerations for MySQL secondary pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param secondary.priorityClassName MySQL secondary pods' priorityClassName\n  ##\n  priorityClassName: \"\"\n  ## @param secondary.runtimeClassName MySQL secondary pods' runtimeClassName\n  ##\n  runtimeClassName: \"\"\n  ## @param secondary.schedulerName Name of the k8s scheduler (other than default)\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param secondary.terminationGracePeriodSeconds In seconds, time the given to the MySQL secondary pod needs to terminate gracefully\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods\n  ##\n  terminationGracePeriodSeconds: \"\"\n  ## @param secondary.topologySpreadConstraints Topology Spread Constraints for pod assignment\n  ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ## The value is evaluated as a template\n  ##\n  topologySpreadConstraints: []\n  ## @param secondary.podManagementPolicy podManagementPolicy to manage scaling operation of MySQL secondary pods\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies\n  ##\n  podManagementPolicy: \"\"\n  ## MySQL secondary Pod security context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param secondary.podSecurityContext.enabled Enable security context for MySQL secondary pods\n  ## @param secondary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n  ## MySQL secondary container security context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ## @param secondary.containerSecurityContext.enabled MySQL secondary container securityContext\n  ## @param secondary.containerSecurityContext.runAsUser User ID for the MySQL secondary container\n  ## @param secondary.containerSecurityContext.runAsNonRoot Set MySQL secondary container's Security Context runAsNonRoot\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n    runAsNonRoot: true\n  ## MySQL secondary container's resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param secondary.resources.limits The resources limits for MySQL secondary containers\n  ## @param secondary.resources.requests The requested resources for MySQL secondary containers\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 250m\n    ##    memory: 256Mi\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 250m\n    ##    memory: 256Mi\n    requests: {}\n  ## Configure extra options for liveness probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param secondary.livenessProbe.enabled Enable livenessProbe\n  ## @param secondary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param secondary.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param secondary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param secondary.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param secondary.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 1\n    failureThreshold: 3\n    successThreshold: 1\n  ## Configure extra options for readiness probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param secondary.readinessProbe.enabled Enable readinessProbe\n  ## @param secondary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param secondary.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param secondary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param secondary.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param secondary.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 1\n    failureThreshold: 3\n    successThreshold: 1\n  ## Configure extra options for startupProbe probe\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param secondary.startupProbe.enabled Enable startupProbe\n  ## @param secondary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param secondary.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param secondary.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param secondary.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param secondary.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: true\n    initialDelaySeconds: 15\n    periodSeconds: 10\n    timeoutSeconds: 1\n    failureThreshold: 15\n    successThreshold: 1\n  ## @param secondary.customLivenessProbe Override default liveness probe for MySQL secondary containers\n  ##\n  customLivenessProbe: {}\n  ## @param secondary.customReadinessProbe Override default readiness probe for MySQL secondary containers\n  ##\n  customReadinessProbe: {}\n  ## @param secondary.customStartupProbe Override default startup probe for MySQL secondary containers\n  ##\n  customStartupProbe: {}\n  ## @param secondary.extraFlags MySQL secondary additional command line flags\n  ## Can be used to specify command line flags, for example:\n  ## E.g.\n  ## extraFlags: \"--max-connect-errors=1000 --max_connections=155\"\n  ##\n  extraFlags: \"\"\n  ## @param secondary.extraEnvVars An array to add extra environment variables on MySQL secondary containers\n  ## E.g.\n  ## extraEnvVars:\n  ##  - name: TZ\n  ##    value: \"Europe/Paris\"\n  ##\n  extraEnvVars: []\n  ## @param secondary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MySQL secondary containers\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param secondary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MySQL secondary containers\n  ##\n  extraEnvVarsSecret: \"\"\n  ## Enable persistence using Persistent Volume Claims\n  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param secondary.persistence.enabled Enable persistence on MySQL secondary replicas using a `PersistentVolumeClaim`\n    ##\n    enabled: true\n    ## @param secondary.persistence.existingClaim Name of an existing `PersistentVolumeClaim` for MySQL secondary replicas\n    ## NOTE: When it's set the rest of persistence parameters are ignored\n    ##\n    existingClaim: \"\"\n    ## @param secondary.persistence.subPath The name of a volume's sub path to mount for persistence\n    ##\n    subPath: \"\"\n    ## @param secondary.persistence.storageClass MySQL secondary persistent volume storage Class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is\n    ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\n    ##   GKE, AWS & OpenStack)\n    ##\n    storageClass: \"\"\n    ## @param secondary.persistence.annotations MySQL secondary persistent volume claim annotations\n    ##\n    annotations: {}\n    ## @param secondary.persistence.accessModes MySQL secondary persistent volume access Modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param secondary.persistence.size MySQL secondary persistent volume size\n    ##\n    size: 8Gi\n    ## @param secondary.persistence.selector Selector to match an existing Persistent Volume\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n  ## @param secondary.extraVolumes Optionally specify extra list of additional volumes to the MySQL secondary pod(s)\n  ##\n  extraVolumes: []\n  ## @param secondary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MySQL secondary container(s)\n  ##\n  extraVolumeMounts: []\n  ## @param secondary.initContainers Add additional init containers for the MySQL secondary pod(s)\n  ##\n  initContainers: []\n  ## @param secondary.sidecars Add additional sidecar containers for the MySQL secondary pod(s)\n  ##\n  sidecars: []\n  ## MySQL Secondary Service parameters\n  ##\n  service:\n    ## @param secondary.service.type MySQL secondary Kubernetes service type\n    ##\n    type: ClusterIP\n    ## @param secondary.service.ports.mysql MySQL secondary Kubernetes service port\n    ##\n    ports:\n      mysql: 3306\n    ## @param secondary.service.nodePorts.mysql MySQL secondary Kubernetes service node port\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ##\n    nodePorts:\n      mysql: \"\"\n    ## @param secondary.service.clusterIP MySQL secondary Kubernetes service clusterIP IP\n    ## e.g:\n    ## clusterIP: None\n    ##\n    clusterIP: \"\"\n    ## @param secondary.service.loadBalancerIP MySQL secondary loadBalancerIP if service type is `LoadBalancer`\n    ## Set the LoadBalancer service type to internal only\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param secondary.service.externalTrafficPolicy Enable client source IP preservation\n    ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param secondary.service.loadBalancerSourceRanges Addresses that are allowed when MySQL secondary service is LoadBalancer\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## E.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param secondary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param secondary.service.annotations Additional custom annotations for MySQL secondary service\n    ##\n    annotations: {}\n    ## @param secondary.service.sessionAffinity Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"\n    ## If \"ClientIP\", consecutive client requests will be directed to the same Pod\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n    ##\n    sessionAffinity: None\n    ## @param secondary.service.sessionAffinityConfig Additional settings for the sessionAffinity\n    ## sessionAffinityConfig:\n    ##   clientIP:\n    ##     timeoutSeconds: 300\n    ##\n    sessionAffinityConfig: {}\n    ## Headless service properties\n    ##\n    headless:\n      ## @param secondary.service.headless.annotations Additional custom annotations for headless MySQL secondary service.\n      ##\n      annotations: {}\n\n  ## MySQL secondary Pod Disruption Budget configuration\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n  ##\n  pdb:\n    ## @param secondary.pdb.create Enable/disable a Pod Disruption Budget creation for MySQL secondary pods\n    ##\n    create: false\n    ## @param secondary.pdb.minAvailable Minimum number/percentage of MySQL secondary pods that should remain scheduled\n    ##\n    minAvailable: 1\n    ## @param secondary.pdb.maxUnavailable Maximum number/percentage of MySQL secondary pods that may be made unavailable\n    ##\n    maxUnavailable: \"\"\n  ## @param secondary.podLabels Additional pod labels for MySQL secondary pods\n  ##\n  podLabels: {}\n\n## @section RBAC parameters\n\n## MySQL pods ServiceAccount\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n##\nserviceAccount:\n  ## @param serviceAccount.create Enable the creation of a ServiceAccount for MySQL pods\n  ##\n  create: true\n  ## @param serviceAccount.name Name of the created ServiceAccount\n  ## If not set and create is true, a name is generated using the mysql.fullname template\n  ##\n  name: \"\"\n  ## @param serviceAccount.annotations Annotations for MySQL Service Account\n  ##\n  annotations: {}\n  ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account\n  ##\n  automountServiceAccountToken: true\n\n## Role Based Access\n## ref: https://kubernetes.io/docs/admin/authorization/rbac/\n##\nrbac:\n  ## @param rbac.create Whether to create & use RBAC resources or not\n  ##\n  create: false\n  ## @param rbac.rules Custom RBAC rules to set\n  ## e.g:\n  ## rules:\n  ##   - apiGroups:\n  ##       - \"\"\n  ##     resources:\n  ##       - pods\n  ##     verbs:\n  ##       - get\n  ##       - list\n  ##\n  rules: []\n\n## @section Network Policy\n\n## MySQL Nework Policy configuration\n##\nnetworkPolicy:\n  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources\n  ##\n  enabled: false\n  ## @param networkPolicy.allowExternal The Policy model to apply.\n  ## When set to false, only pods with the correct\n  ## client label will have network access to the port MySQL is listening\n  ## on. When true, MySQL will accept connections from any source\n  ## (with the correct destination port).\n  ##\n  allowExternal: true\n  ## @param networkPolicy.explicitNamespacesSelector A Kubernetes LabelSelector to explicitly select namespaces from which ingress traffic could be allowed to MySQL\n  ## If explicitNamespacesSelector is missing or set to {}, only client Pods that are in the networkPolicy's namespace\n  ## and that match other criteria, the ones that have the good label, can reach the DB.\n  ## But sometimes, we want the DB to be accessible to clients from other namespaces, in this case, we can use this\n  ## LabelSelector to select these namespaces, note that the networkPolicy's namespace should also be explicitly added.\n  ##\n  ## Example:\n  ## explicitNamespacesSelector:\n  ##   matchLabels:\n  ##     role: frontend\n  ##   matchExpressions:\n  ##    - {key: role, operator: In, values: [frontend]}\n  ##\n  explicitNamespacesSelector: {}\n\n## @section Volume Permissions parameters\n\n## Init containers parameters:\n## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.\n##\nvolumePermissions:\n  ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`\n  ##\n  enabled: false\n  ## @param volumePermissions.image.registry Init container volume-permissions image registry\n  ## @param volumePermissions.image.repository Init container volume-permissions image repository\n  ## @param volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended)\n  ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy\n  ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 11-debian-11-r50\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## @param volumePermissions.resources Init container volume-permissions resources\n  ##\n  resources: {}\n\n## @section Metrics parameters\n\n## Mysqld Prometheus exporter parameters\n##\nmetrics:\n  ## @param metrics.enabled Start a side-car prometheus exporter\n  ##\n  enabled: false\n  ## @param metrics.image.registry Exporter image registry\n  ## @param metrics.image.repository Exporter image repository\n  ## @param metrics.image.tag Exporter image tag (immutable tags are recommended)\n  ## @param metrics.image.digest Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param metrics.image.pullPolicy Exporter image pull policy\n  ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/mysqld-exporter\n    tag: 0.14.0-debian-11-r55\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## MySQL Prometheus exporter service parameters\n  ## Mysqld Prometheus exporter liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param metrics.service.type Kubernetes service type for MySQL Prometheus Exporter\n  ## @param metrics.service.port MySQL Prometheus Exporter service port\n  ## @param metrics.service.annotations [object] Prometheus exporter service annotations\n  ##\n  service:\n    type: ClusterIP\n    port: 9104\n    annotations:\n      prometheus.io/scrape: \"true\"\n      prometheus.io/port: \"{{ .Values.metrics.service.port }}\"\n  ## @param metrics.extraArgs.primary Extra args to be passed to mysqld_exporter on Primary pods\n  ## @param metrics.extraArgs.secondary Extra args to be passed to mysqld_exporter on Secondary pods\n  ## ref: https://github.com/prometheus/mysqld_exporter/\n  ## E.g.\n  ## - --collect.auto_increment.columns\n  ## - --collect.binlog_size\n  ## - --collect.engine_innodb_status\n  ## - --collect.engine_tokudb_status\n  ## - --collect.global_status\n  ## - --collect.global_variables\n  ## - --collect.info_schema.clientstats\n  ## - --collect.info_schema.innodb_metrics\n  ## - --collect.info_schema.innodb_tablespaces\n  ## - --collect.info_schema.innodb_cmp\n  ## - --collect.info_schema.innodb_cmpmem\n  ## - --collect.info_schema.processlist\n  ## - --collect.info_schema.processlist.min_time\n  ## - --collect.info_schema.query_response_time\n  ## - --collect.info_schema.tables\n  ## - --collect.info_schema.tables.databases\n  ## - --collect.info_schema.tablestats\n  ## - --collect.info_schema.userstats\n  ## - --collect.perf_schema.eventsstatements\n  ## - --collect.perf_schema.eventsstatements.digest_text_limit\n  ## - --collect.perf_schema.eventsstatements.limit\n  ## - --collect.perf_schema.eventsstatements.timelimit\n  ## - --collect.perf_schema.eventswaits\n  ## - --collect.perf_schema.file_events\n  ## - --collect.perf_schema.file_instances\n  ## - --collect.perf_schema.indexiowaits\n  ## - --collect.perf_schema.tableiowaits\n  ## - --collect.perf_schema.tablelocks\n  ## - --collect.perf_schema.replication_group_member_stats\n  ## - --collect.slave_status\n  ## - --collect.slave_hosts\n  ## - --collect.heartbeat\n  ## - --collect.heartbeat.database\n  ## - --collect.heartbeat.table\n  ##\n  extraArgs:\n    primary: []\n    secondary: []\n  ## Mysqld Prometheus exporter resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param metrics.resources.limits The resources limits for MySQL prometheus exporter containers\n  ## @param metrics.resources.requests The requested resources for MySQL prometheus exporter containers\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 256Mi\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 256Mi\n    requests: {}\n  ## Mysqld Prometheus exporter liveness probe\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param metrics.livenessProbe.enabled Enable livenessProbe\n  ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 120\n    periodSeconds: 10\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 3\n  ## Mysqld Prometheus exporter readiness probe\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ## @param metrics.readinessProbe.enabled Enable readinessProbe\n  ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 30\n    periodSeconds: 10\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 3\n  ## Prometheus Service Monitor\n  ## ref: https://github.com/coreos/prometheus-operator\n  ##\n  serviceMonitor:\n    ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator\n    ##\n    enabled: false\n    ## @param metrics.serviceMonitor.namespace Specify the namespace in which the serviceMonitor resource will be created\n    ##\n    namespace: \"\"\n    ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.\n    ##\n    jobLabel: \"\"\n    ## @param metrics.serviceMonitor.interval Specify the interval at which metrics should be scraped\n    ##\n    interval: 30s\n    ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended\n    ## e.g:\n    ## scrapeTimeout: 30s\n    ##\n    scrapeTimeout: \"\"\n    ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels\n    ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration\n    ##\n    ## selector:\n    ##   prometheus: my-prometheus\n    ##\n    selector: {}\n    ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint\n    ##\n    honorLabels: false\n    ## @param metrics.serviceMonitor.labels Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n    ##\n    labels: {}\n    ## @param metrics.serviceMonitor.annotations ServiceMonitor annotations\n    ##\n    annotations: {}\n\n  ## Prometheus Operator prometheusRule configuration\n  ##\n  prometheusRule:\n    ## @param metrics.prometheusRule.enabled Creates a Prometheus Operator prometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`)\n    ##\n    enabled: false\n    ## @param metrics.prometheusRule.namespace Namespace for the prometheusRule Resource (defaults to the Release Namespace)\n    ##\n    namespace: \"\"\n    ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so prometheusRule will be discovered by Prometheus\n    ##\n    additionalLabels: {}\n    ## @param metrics.prometheusRule.rules Prometheus Rule definitions\n    ##  - alert: Mysql-Down\n    ##    expr: absent(up{job=\"mysql\"} == 1)\n    ##    for: 5m\n    ##    labels:\n    ##      severity: warning\n    ##      service: mariadb\n    ##    annotations:\n    ##      message: 'MariaDB instance {{`{{`}} $labels.instance {{`}}`}}  is down'\n    ##      summary: MariaDB instance is down\n    ##\n    rules: []\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/Chart.yaml",
    "content": "apiVersion: v1\nappVersion: 4.0.2\ndescription: nfs-subdir-external-provisioner is an automatic provisioner that used your *already configured* NFS server, automatically creating Persistent Volumes.\nhome: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner\nkeywords:\n- nfs\n- storage\n- provisioner\nkubeVersion: '>=1.9.0-0'\nname: nfs-subdir-external-provisioner\nsources:\n- https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner\nversion: 4.0.18\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/README.md",
    "content": "# NFS Subdirectory External Provisioner Helm Chart\n\nThe [NFS subdir external provisioner](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner) is an automatic provisioner for Kubernetes that uses your *already configured* NFS server, automatically creating Persistent Volumes.\n\n## TL;DR;\n\n```console\n$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/\n$ helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \\\n    --set nfs.server=x.x.x.x \\\n    --set nfs.path=/exported/path\n```\n\n## Introduction\n\nThis charts installs custom [storage class](https://kubernetes.io/docs/concepts/storage/storage-classes/) into a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. It also installs a [NFS client provisioner](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner) into the cluster which dynamically creates persistent volumes from single NFS share.\n\n## Prerequisites\n\n- Kubernetes >=1.9\n- Existing NFS Share\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```console\n$ helm install my-release nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \\\n    --set nfs.server=x.x.x.x \\\n    --set nfs.path=/exported/path\n```\n\nThe command deploys the given storage class in the default configuration. It can be used afterwards to provision persistent volumes. The [configuration](#configuration) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```console\n$ helm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Configuration\n\nThe following tables lists the configurable parameters of this chart and their default values.\n\n| Parameter                            | Description                                                                                           | Default                                                       |\n| ------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |\n| `replicaCount`                       | Number of provisioner instances to deployed                                                           | `1`                                                           |\n| `strategyType`                       | Specifies the strategy used to replace old Pods by new ones                                           | `Recreate`                                                    |\n| `image.repository`                   | Provisioner image                                                                                     | `registry.k8s.io/sig-storage/nfs-subdir-external-provisioner` |\n| `image.tag`                          | Version of provisioner image                                                                          | `v4.0.2`                                                      |\n| `image.pullPolicy`                   | Image pull policy                                                                                     | `IfNotPresent`                                                |\n| `imagePullSecrets`                   | Image pull secrets                                                                                    | `[]`                                                          |\n| `storageClass.name`                  | Name of the storageClass                                                                              | `nfs-client`                                                  |\n| `storageClass.defaultClass`          | Set as the default StorageClass                                                                       | `false`                                                       |\n| `storageClass.allowVolumeExpansion`  | Allow expanding the volume                                                                            | `true`                                                        |\n| `storageClass.reclaimPolicy`         | Method used to reclaim an obsoleted volume                                                            | `Delete`                                                      |\n| `storageClass.provisionerName`       | Name of the provisionerName                                                                           | null                                                          |\n| `storageClass.archiveOnDelete`       | Archive PVC when deleting                                                                             | `true`                                                        |\n| `storageClass.onDelete`              | Strategy on PVC deletion. Overrides archiveOnDelete when set to lowercase values 'delete' or 'retain' | null                                                          |\n| `storageClass.pathPattern`           | Specifies a template for the directory name                                                           | null                                                          |\n| `storageClass.accessModes`           | Set access mode for PV                                                                                | `ReadWriteOnce`                                               |\n| `storageClass.volumeBindingMode`     | Set volume binding mode for Storage Class                                                             | `Immediate`                                                   |\n| `storageClass.annotations`           | Set additional annotations for the StorageClass                                                       | `{}`                                                          |\n| `leaderElection.enabled`             | Enables or disables leader election                                                                   | `true`                                                        |\n| `nfs.server`                         | Hostname of the NFS server (required)                                                                 | null (ip or hostname)                                         |\n| `nfs.path`                           | Basepath of the mount point to be used                                                                | `/nfs-storage`                                                |\n| `nfs.mountOptions`                   | Mount options (e.g. 'nfsvers=3')                                                                      | null                                                          |\n| `nfs.volumeName`                     | Volume name used inside the pods                                                                      | `nfs-subdir-external-provisioner-root`                        |\n| `nfs.reclaimPolicy`                  | Reclaim policy for the main nfs volume used for subdir provisioning                                   | `Retain`                                                      |\n| `resources`                          | Resources required (e.g. CPU, memory)                                                                 | `{}`                                                          |\n| `rbac.create`                        | Use Role-based Access Control                                                                         | `true`                                                        |\n| `podSecurityPolicy.enabled`          | Create & use Pod Security Policy resources                                                            | `false`                                                       |\n| `podAnnotations`                     | Additional annotations for the Pods                                                                   | `{}`                                                          |\n| `priorityClassName`                  | Set pod priorityClassName                                                                             | null                                                          |\n| `serviceAccount.create`              | Should we create a ServiceAccount                                                                     | `true`                                                        |\n| `serviceAccount.name`                | Name of the ServiceAccount to use                                                                     | null                                                          |\n| `serviceAccount.annotations`         | Additional annotations for the ServiceAccount                                                         | `{}`                                                          |\n| `nodeSelector`                       | Node labels for pod assignment                                                                        | `{}`                                                          |\n| `affinity`                           | Affinity settings                                                                                     | `{}`                                                          |\n| `tolerations`                        | List of node taints to tolerate                                                                       | `[]`                                                          |\n| `labels`                             | Additional labels for any resource created                                                            | `{}`                                                          |\n| `podDisruptionBudget.enabled`        | Create and use Pod Disruption Budget                                                                  | `false`                                                       |\n| `podDisruptionBudget.maxUnavailable` | Set maximum unavailable pods in the Pod Disruption Budget                                             | `1`                                                           |\n\n## Install Multiple Provisioners\n\nIt is possible to install more than one provisioner in your cluster to have access to multiple nfs servers and/or multiple exports from a single nfs server. Each provisioner must have a different `storageClass.provisionerName` and a different `storageClass.name`. For example:\n\n```console\nhelm install second-nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \\\n    --set nfs.server=y.y.y.y \\\n    --set nfs.path=/other/exported/path \\\n    --set storageClass.name=second-nfs-client \\\n    --set storageClass.provisionerName=k8s-sigs.io/second-nfs-subdir-external-provisioner\n```\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/ci/test-values.yaml",
    "content": "nfs:\n  server: 127.0.0.1\npodSecurityPolicy:\n  enabled: true\nbuildMode: true\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"nfs-subdir-external-provisioner.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"nfs-subdir-external-provisioner.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"nfs-subdir-external-provisioner.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- define \"nfs-subdir-external-provisioner.provisionerName\" -}}\n{{- if .Values.storageClass.provisionerName -}}\n{{- printf .Values.storageClass.provisionerName -}}\n{{- else -}}\ncluster.local/{{ template \"nfs-subdir-external-provisioner.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"nfs-subdir-external-provisioner.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create -}}\n    {{ default (include \"nfs-subdir-external-provisioner.fullname\" .) .Values.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for podSecurityPolicy.\n*/}}\n{{- define \"podSecurityPolicy.apiVersion\" -}}\n{{- if semverCompare \">=1.10-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for podDisruptionBudget.\n*/}}\n{{- define \"podDisruptionBudget.apiVersion\" -}}\n{{- if semverCompare \">=1.21-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"policy/v1\" -}}\n{{- else -}}\n{{- print \"policy/v1beta1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"nfs-subdir-external-provisioner.labels\" -}}\nchart: {{ template \"nfs-subdir-external-provisioner.chart\" . }}\nheritage: {{ .Release.Service }}\n{{ include \"nfs-subdir-external-provisioner.selectorLabels\" . }}\n{{- with .Values.labels }}\n{{- toYaml . | nindent 0 }}\n{{- end }}\n{{- end }}\n\n{{/*\nPod template labels\n*/}}\n{{- define \"nfs-subdir-external-provisioner.podLabels\" -}}\n{{ include \"nfs-subdir-external-provisioner.selectorLabels\" . }}\n{{- with .Values.labels }}\n{{- toYaml . | nindent 0 }}\n{{- end }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"nfs-subdir-external-provisioner.selectorLabels\" -}}\napp: {{ template \"nfs-subdir-external-provisioner.name\" . }}\nrelease: {{ .Release.Name }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/clusterrole.yaml",
    "content": "{{- if .Values.rbac.create }}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  name: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}-runner\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"nodes\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"persistentvolumes\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"persistentvolumeclaims\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"storage.k8s.io\"]\n    resources: [\"storageclasses\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"update\", \"patch\"]\n{{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:      ['extensions']\n    resources:      ['podsecuritypolicies']\n    verbs:          ['use']\n    resourceNames:  [{{ template \"nfs-subdir-external-provisioner.fullname\" . }}]\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/clusterrolebinding.yaml",
    "content": "{{- if .Values.rbac.create }}\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  name: run-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"nfs-subdir-external-provisioner.serviceAccountName\" . }}\n    namespace: {{ .Release.Namespace }}\nroleRef:\n  kind: ClusterRole\n  name: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}-runner\n  apiGroup: rbac.authorization.k8s.io\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\nspec:\n  replicas: {{ .Values.replicaCount }}\n  strategy:\n    type: {{ .Values.strategyType }}\n  selector:\n    matchLabels:\n      {{- include \"nfs-subdir-external-provisioner.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      annotations:\n      {{- with .Values.podAnnotations }}\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if and (.Values.tolerations) (semverCompare \"<1.6-0\" .Capabilities.KubeVersion.GitVersion) }}\n        scheduler.alpha.kubernetes.io/tolerations: '{{ toJson .Values.tolerations }}'\n      {{- end }}\n      labels:\n        {{- include \"nfs-subdir-external-provisioner.podLabels\" . | nindent 8 }}\n    spec:\n      serviceAccountName: {{ template \"nfs-subdir-external-provisioner.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      {{- if .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml .Values.nodeSelector | indent 8 }}\n      {{- end }}\n      {{- if .Values.affinity }}\n      affinity:\n{{ toYaml .Values.affinity | indent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName | quote }}\n      {{- end }}\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      containers:\n        - name: {{ .Chart.Name }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          volumeMounts:\n            - name: {{ .Values.nfs.volumeName }}\n              mountPath: /persistentvolumes\n          env:\n            - name: PROVISIONER_NAME\n              value: {{ template \"nfs-subdir-external-provisioner.provisionerName\" . }}\n            - name: NFS_SERVER\n              value: {{ .Values.nfs.server }}\n            - name: NFS_PATH\n              value: {{ .Values.nfs.path }}\n            {{- if eq .Values.leaderElection.enabled false }}\n            - name: ENABLE_LEADER_ELECTION\n              value: \"false\"\n            {{- end }}\n          {{- with .Values.resources }}\n          resources:\n{{ toYaml . | indent 12 }}\n          {{- end }}\n      volumes:\n        - name: {{ .Values.nfs.volumeName }}\n{{- if .Values.buildMode }}\n          emptyDir: {}\n{{- else if .Values.nfs.mountOptions }}\n          persistentVolumeClaim:\n            claimName: pvc-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n{{- else }}\n          nfs:\n            server: {{ .Values.nfs.server }}\n            path: {{ .Values.nfs.path }}\n{{- end }}\n      {{- if and (.Values.tolerations) (semverCompare \"^1.6-0\" .Capabilities.KubeVersion.GitVersion) }}\n      tolerations:\n{{ toYaml .Values.tolerations | indent 6 }}\n      {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/persistentvolume.yaml",
    "content": "{{ if .Values.nfs.mountOptions -}}\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: pv-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n  labels: \n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n    nfs-subdir-external-provisioner: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}\nspec:\n  capacity:\n    storage: 10Mi\n  volumeMode: Filesystem\n  accessModes:\n    - {{ .Values.storageClass.accessModes }}\n  persistentVolumeReclaimPolicy: {{ .Values.nfs.reclaimPolicy }}\n  storageClassName: \"\"\n  {{- if .Values.nfs.mountOptions }}\n  mountOptions:\n    {{- range .Values.nfs.mountOptions }}\n    - {{ . }}\n    {{- end }}\n  {{- end }}\n  nfs:\n    server: {{ .Values.nfs.server }}\n    path: {{ .Values.nfs.path }}\n{{ end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/persistentvolumeclaim.yaml",
    "content": "{{ if .Values.nfs.mountOptions -}}\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: pvc-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\nspec:\n  accessModes:\n    - {{ .Values.storageClass.accessModes }}\n  volumeMode: Filesystem\n  storageClassName: \"\"\n  selector:\n    matchLabels:\n      nfs-subdir-external-provisioner: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n  resources:\n    requests:\n      storage: 10Mi\n{{ end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/poddisruptionbudget.yaml",
    "content": "{{- if .Values.podDisruptionBudget.enabled }}\napiVersion: {{ template \"podDisruptionBudget.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  name: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}\nspec:\n  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable | default 1 }}\n  selector:\n    matchLabels:\n      {{- include \"nfs-subdir-external-provisioner.selectorLabels\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/podsecuritypolicy.yaml",
    "content": "{{- if .Values.podSecurityPolicy.enabled }}\napiVersion: {{ template \"podSecurityPolicy.apiVersion\" . }}\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\nspec:\n  privileged: false\n  allowPrivilegeEscalation: false\n  requiredDropCapabilities:\n    - ALL\n  volumes:\n    - 'secret'\n    - 'nfs'\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    rule: 'RunAsAny'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'RunAsAny'\n  fsGroup:\n    rule: 'RunAsAny'\n  readOnlyRootFilesystem: false\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/role.yaml",
    "content": "{{- if .Values.rbac.create }}\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  name: leader-locking-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"endpoints\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"patch\"]\n{{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:      ['extensions']\n    resources:      ['podsecuritypolicies']\n    verbs:          ['use']\n    resourceNames:  [{{ template \"nfs-subdir-external-provisioner.fullname\" . }}]\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/rolebinding.yaml",
    "content": "{{- if .Values.rbac.create }}\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  name: leader-locking-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"nfs-subdir-external-provisioner.serviceAccountName\" . }}\n    namespace: {{ .Release.Namespace }}\nroleRef:\n  kind: Role\n  name: leader-locking-{{ template \"nfs-subdir-external-provisioner.fullname\" . }}\n  apiGroup: rbac.authorization.k8s.io\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/serviceaccount.yaml",
    "content": "{{ if .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  name: {{ template \"nfs-subdir-external-provisioner.serviceAccountName\" . }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/templates/storageclass.yaml",
    "content": "{{ if .Values.storageClass.create -}}\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n  labels:\n    {{- include \"nfs-subdir-external-provisioner.labels\" . | nindent 4 }}\n  name: {{ .Values.storageClass.name }}\n  annotations:\n  {{- if .Values.storageClass.defaultClass }}\n    storageclass.kubernetes.io/is-default-class: \"true\"\n  {{- end }}\n  {{- with .Values.storageClass.annotations }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nprovisioner: {{ template \"nfs-subdir-external-provisioner.provisionerName\" . }}\nallowVolumeExpansion: {{ .Values.storageClass.allowVolumeExpansion }}\nreclaimPolicy: {{ .Values.storageClass.reclaimPolicy }}\nvolumeBindingMode: {{ .Values.storageClass.volumeBindingMode }}\nparameters:\n  archiveOnDelete: \"{{ .Values.storageClass.archiveOnDelete }}\"\n  {{- if .Values.storageClass.pathPattern }}\n  pathPattern: \"{{ .Values.storageClass.pathPattern }}\"\n  {{- end }}\n  {{- if .Values.storageClass.onDelete }}\n  onDelete: \"{{ .Values.storageClass.onDelete }}\"\n  {{- end }}\n{{- if .Values.nfs.mountOptions }}\nmountOptions:\n  {{- range .Values.nfs.mountOptions }}\n  - {{ . }}\n  {{- end }}\n{{- end }}\n{{ end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/nfs-subdir-external-provisioner/values.yaml",
    "content": "replicaCount: 1\nstrategyType: Recreate\n\nimage:\n  repository: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner\n  tag: v4.0.2\n  pullPolicy: IfNotPresent\nimagePullSecrets: []\n\nnfs:\n  server:\n  path: /nfs-storage\n  mountOptions:\n  volumeName: nfs-subdir-external-provisioner-root\n  # Reclaim policy for the main nfs volume\n  reclaimPolicy: Retain\n\n# For creating the StorageClass automatically:\nstorageClass:\n  create: true\n\n  # Set a provisioner name. If unset, a name will be generated.\n  # provisionerName:\n\n  # Set StorageClass as the default StorageClass\n  # Ignored if storageClass.create is false\n  defaultClass: false\n\n  # Set a StorageClass name\n  # Ignored if storageClass.create is false\n  name: nfs-client\n\n  # Allow volume to be expanded dynamically\n  allowVolumeExpansion: true\n\n  # Method used to reclaim an obsoleted volume\n  reclaimPolicy: Delete\n\n  # When set to false your PVs will not be archived by the provisioner upon deletion of the PVC.\n  archiveOnDelete: true\n\n  # If it exists and has 'delete' value, delete the directory. If it exists and has 'retain' value, save the directory.\n  # Overrides archiveOnDelete.\n  # Ignored if value not set.\n  onDelete:\n\n  # Specifies a template for creating a directory path via PVC metadata's such as labels, annotations, name or namespace.\n  # Ignored if value not set.\n  pathPattern:\n\n  # Set access mode - ReadWriteOnce, ReadOnlyMany or ReadWriteMany\n  accessModes: ReadWriteOnce\n\n  # Set volume bindinng mode - Immediate or WaitForFirstConsumer\n  volumeBindingMode: Immediate\n\n  # Storage class annotations\n  annotations: {}\n\nleaderElection:\n  # When set to false leader election will be disabled\n  enabled: true\n\n## For RBAC support:\nrbac:\n  # Specifies whether RBAC resources should be created\n  create: true\n\n# If true, create & use Pod Security Policy resources\n# https://kubernetes.io/docs/concepts/policy/pod-security-policy/\npodSecurityPolicy:\n  enabled: false\n\n# Deployment pod annotations\npodAnnotations: {}\n\n## Set pod priorityClassName\n# priorityClassName: \"\"\n\npodSecurityContext: {}\n\nsecurityContext: {}\n\nserviceAccount:\n  # Specifies whether a ServiceAccount should be created\n  create: true\n\n  # Annotations to add to the service account\n  annotations: {}\n\n  # The name of the ServiceAccount to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name:\n\nresources: {}\n  # limits:\n  #  cpu: 100m\n  #  memory: 128Mi\n  # requests:\n  #  cpu: 100m\n  #  memory: 128Mi\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n\n# Additional labels for any resource created\nlabels: {}\n\npodDisruptionBudget:\n  enabled: false\n  maxUnavailable: 1\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-prometheus\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"v2.35.0\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"prometheus.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"prometheus.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"prometheus.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"prometheus.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-prometheus.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-prometheus.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-prometheus.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-prometheus.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-prometheus.chart\" . }}\n{{ include \"opsany-prometheus.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-prometheus.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-prometheus.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-prometheus.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-prometheus.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-prometheus.fullname\" . }}\n  labels:\n    {{- include \"opsany-prometheus.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-prometheus.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-prometheus.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          args: \n          - --config.file=/etc/prometheus/prometheus.yml\n          - --storage.tsdb.path=/prometheus\n          - --web.console.libraries=/usr/share/prometheus/console_libraries \n          - --web.console.templates=/usr/share/prometheus/consoles\n          - --web.config.file=/etc/prometheus/web.yml\n          - --web.enable-lifecycle\n          volumeMounts:\n            - name: opsany-prometheus-config\n              mountPath: /etc/prometheus/prometheus.yml\n              subPath: prometheus.yml\n            - name: opsany-prometheus-web-config\n              mountPath: /etc/prometheus/web.yml\n              subPath: web.yml\n            - name: opsany-prometheus-data\n              mountPath: /var/lib/prometheus\n            - name: opsany-prometheus-rules\n              mountPath: /var/lib/prometheus-config/rules\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: consul\n              containerPort: 9090\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-prometheus-config\n          secret:\n            secretName: opsany-prometheus-config\n            items:\n            - key: prometheus.yml\n              path: prometheus.yml\n        - name: opsany-prometheus-web-config\n          secret:\n            secretName: opsany-prometheus-web-config\n            items:\n            - key: web.yml\n              path: web.yml\n        - name: opsany-prometheus-data\n          persistentVolumeClaim:\n            claimName: opsany-prometheus-data\n        - name: opsany-prometheus-rules\n          persistentVolumeClaim:\n            claimName: opsany-prometheus-rules\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-prometheus.fullname\" . }}\n  labels:\n    {{- include \"opsany-prometheus.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-prometheus.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"prometheus.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"prometheus.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-prometheus-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-prometheus.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"prometheus.yml\").AsSecrets | indent 2 }} \n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-prometheus-web-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-prometheus.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"web.yml\").AsSecrets | indent 2 }} \n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-prometheus.fullname\" . }}\n  labels:\n    {{- include \"opsany-prometheus.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 9090\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-prometheus.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"prometheus.serviceAccountName\" . }}\n  labels:\n    {{- include \"prometheus.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/storage.yaml",
    "content": "---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-prometheus-data\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/consul-volume/data\n    server: 10.224.218.71\n\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-prometheus-data\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-prometheus-data\n\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-prometheus-rules\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-uploads/prometheus-config/rules\n    server: 10.224.218.71\n\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-prometheus-rules\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-prometheus-rules\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-prometheus.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-prometheus.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-prometheus.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/prometheus/values.yaml",
    "content": "# Default values for opsany-prometheus.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/prometheus\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 9090\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 3.11.4\ndependencies:\n- name: common\n  repository: https://charts.bitnami.com/bitnami\n  tags:\n  - bitnami-common\n  version: 2.x.x\ndescription: RabbitMQ is an open source general-purpose message broker that is designed\n  for consistent, highly-available messaging scenarios (both synchronous and asynchronous).\nhome: https://github.com/bitnami/charts/tree/main/bitnami/rabbitmq\nicon: https://bitnami.com/assets/stacks/rabbitmq/img/rabbitmq-stack-220x234.png\nkeywords:\n- rabbitmq\n- message queue\n- AMQP\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: rabbitmq\nsources:\n- https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq\n- https://www.rabbitmq.com\nversion: 11.1.5\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/README.md",
    "content": "<!--- app-name: RabbitMQ -->\n\n# RabbitMQ packaged by Bitnami\n\nRabbitMQ is an open source general-purpose message broker that is designed for consistent, highly-available messaging scenarios (both synchronous and asynchronous).\n\n[Overview of RabbitMQ](https://www.rabbitmq.com)\n\nTrademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.\n                           \n## TL;DR\n\n```bash\n$ helm repo add my-repo https://charts.bitnami.com/bitnami\n$ helm install my-release my-repo/rabbitmq\n```\n\n## Introduction\n\nThis chart bootstraps a [RabbitMQ](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n- PV provisioner support in the underlying infrastructure\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```bash\n$ helm repo add my-repo https://charts.bitnami.com/bitnami\n$ helm install my-release my-repo/rabbitmq\n```\n\nThe command deploys RabbitMQ on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```bash\n$ helm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Parameters\n\n### Global parameters\n\n| Name                      | Description                                     | Value |\n| ------------------------- | ----------------------------------------------- | ----- |\n| `global.imageRegistry`    | Global Docker image registry                    | `\"\"`  |\n| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]`  |\n| `global.storageClass`     | Global StorageClass for Persistent Volume(s)    | `\"\"`  |\n\n\n### RabbitMQ Image parameters\n\n| Name                | Description                                                                                              | Value                 |\n| ------------------- | -------------------------------------------------------------------------------------------------------- | --------------------- |\n| `image.registry`    | RabbitMQ image registry                                                                                  | `docker.io`           |\n| `image.repository`  | RabbitMQ image repository                                                                                | `bitnami/rabbitmq`    |\n| `image.tag`         | RabbitMQ image tag (immutable tags are recommended)                                                      | `3.11.4-debian-11-r0` |\n| `image.digest`      | RabbitMQ image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                  |\n| `image.pullPolicy`  | RabbitMQ image pull policy                                                                               | `IfNotPresent`        |\n| `image.pullSecrets` | Specify docker-registry secret names as an array                                                         | `[]`                  |\n| `image.debug`       | Set to true if you would like to see extra information on logs                                           | `false`               |\n\n\n### Common parameters\n\n| Name                               | Description                                                                                                                                                             | Value                                             |\n| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |\n| `nameOverride`                     | String to partially override rabbitmq.fullname template (will maintain the release name)                                                                                | `\"\"`                                              |\n| `fullnameOverride`                 | String to fully override rabbitmq.fullname template                                                                                                                     | `\"\"`                                              |\n| `namespaceOverride`                | String to fully override common.names.namespace                                                                                                                         | `\"\"`                                              |\n| `kubeVersion`                      | Force target Kubernetes version (using Helm capabilities if not set)                                                                                                    | `\"\"`                                              |\n| `clusterDomain`                    | Kubernetes Cluster Domain                                                                                                                                               | `cluster.local`                                   |\n| `extraDeploy`                      | Array of extra objects to deploy with the release                                                                                                                       | `[]`                                              |\n| `commonAnnotations`                | Annotations to add to all deployed objects                                                                                                                              | `{}`                                              |\n| `commonLabels`                     | Labels to add to all deployed objects                                                                                                                                   | `{}`                                              |\n| `diagnosticMode.enabled`           | Enable diagnostic mode (all probes will be disabled and the command will be overridden)                                                                                 | `false`                                           |\n| `diagnosticMode.command`           | Command to override all containers in the deployment                                                                                                                    | `[\"sleep\"]`                                       |\n| `diagnosticMode.args`              | Args to override all containers in the deployment                                                                                                                       | `[\"infinity\"]`                                    |\n| `hostAliases`                      | Deployment pod host aliases                                                                                                                                             | `[]`                                              |\n| `dnsPolicy`                        | DNS Policy for pod                                                                                                                                                      | `\"\"`                                              |\n| `dnsConfig`                        | DNS Configuration pod                                                                                                                                                   | `{}`                                              |\n| `auth.username`                    | RabbitMQ application username                                                                                                                                           | `user`                                            |\n| `auth.password`                    | RabbitMQ application password                                                                                                                                           | `\"\"`                                              |\n| `auth.securePassword`              | Whether to set the RabbitMQ password securely. This is incompatible with loading external RabbitMQ definitions and 'true' when not setting the auth.password parameter. | `true`                                            |\n| `auth.existingPasswordSecret`      | Existing secret with RabbitMQ credentials (must contain a value for `rabbitmq-password` key)                                                                            | `\"\"`                                              |\n| `auth.erlangCookie`                | Erlang cookie to determine whether different nodes are allowed to communicate with each other                                                                           | `\"\"`                                              |\n| `auth.existingErlangSecret`        | Existing secret with RabbitMQ Erlang cookie (must contain a value for `rabbitmq-erlang-cookie` key)                                                                     | `\"\"`                                              |\n| `auth.tls.enabled`                 | Enable TLS support on RabbitMQ                                                                                                                                          | `false`                                           |\n| `auth.tls.autoGenerated`           | Generate automatically self-signed TLS certificates                                                                                                                     | `false`                                           |\n| `auth.tls.failIfNoPeerCert`        | When set to true, TLS connection will be rejected if client fails to provide a certificate                                                                              | `true`                                            |\n| `auth.tls.sslOptionsVerify`        | Should [peer verification](https://www.rabbitmq.com/ssl.html#peer-verification) be enabled?                                                                             | `verify_peer`                                     |\n| `auth.tls.caCertificate`           | Certificate Authority (CA) bundle content                                                                                                                               | `\"\"`                                              |\n| `auth.tls.serverCertificate`       | Server certificate content                                                                                                                                              | `\"\"`                                              |\n| `auth.tls.serverKey`               | Server private key content                                                                                                                                              | `\"\"`                                              |\n| `auth.tls.existingSecret`          | Existing secret with certificate content to RabbitMQ credentials                                                                                                        | `\"\"`                                              |\n| `auth.tls.existingSecretFullChain` | Whether or not the existing secret contains the full chain in the certificate (`tls.crt`). Will be used in place of `ca.cert` if `true`.                                | `false`                                           |\n| `logs`                             | Path of the RabbitMQ server's Erlang log file. Value for the `RABBITMQ_LOGS` environment variable                                                                       | `-`                                               |\n| `ulimitNofiles`                    | RabbitMQ Max File Descriptors                                                                                                                                           | `65536`                                           |\n| `maxAvailableSchedulers`           | RabbitMQ maximum available scheduler threads                                                                                                                            | `\"\"`                                              |\n| `onlineSchedulers`                 | RabbitMQ online scheduler threads                                                                                                                                       | `\"\"`                                              |\n| `memoryHighWatermark.enabled`      | Enable configuring Memory high watermark on RabbitMQ                                                                                                                    | `false`                                           |\n| `memoryHighWatermark.type`         | Memory high watermark type. Either `absolute` or `relative`                                                                                                             | `relative`                                        |\n| `memoryHighWatermark.value`        | Memory high watermark value                                                                                                                                             | `0.4`                                             |\n| `plugins`                          | List of default plugins to enable (should only be altered to remove defaults; for additional plugins use `extraPlugins`)                                                | `rabbitmq_management rabbitmq_peer_discovery_k8s` |\n| `communityPlugins`                 | List of Community plugins (URLs) to be downloaded during container initialization                                                                                       | `\"\"`                                              |\n| `extraPlugins`                     | Extra plugins to enable (single string containing a space-separated list)                                                                                               | `rabbitmq_auth_backend_ldap`                      |\n| `clustering.enabled`               | Enable RabbitMQ clustering                                                                                                                                              | `true`                                            |\n| `clustering.addressType`           | Switch clustering mode. Either `ip` or `hostname`                                                                                                                       | `hostname`                                        |\n| `clustering.rebalance`             | Rebalance master for queues in cluster when new replica is created                                                                                                      | `false`                                           |\n| `clustering.forceBoot`             | Force boot of an unexpectedly shut down cluster (in an unexpected order).                                                                                               | `false`                                           |\n| `clustering.partitionHandling`     | Switch Partition Handling Strategy. Either `autoheal` or `pause-minority` or `pause-if-all-down` or `ignore`                                                            | `autoheal`                                        |\n| `loadDefinition.enabled`           | Enable loading a RabbitMQ definitions file to configure RabbitMQ                                                                                                        | `false`                                           |\n| `loadDefinition.file`              | Name of the definitions file                                                                                                                                            | `/app/load_definition.json`                       |\n| `loadDefinition.existingSecret`    | Existing secret with the load definitions file                                                                                                                          | `\"\"`                                              |\n| `command`                          | Override default container command (useful when using custom images)                                                                                                    | `[]`                                              |\n| `args`                             | Override default container args (useful when using custom images)                                                                                                       | `[]`                                              |\n| `lifecycleHooks`                   | Overwrite livecycle for the RabbitMQ container(s) to automate configuration before or after startup                                                                     | `{}`                                              |\n| `terminationGracePeriodSeconds`    | Default duration in seconds k8s waits for container to exit before sending kill signal.                                                                                 | `120`                                             |\n| `extraEnvVars`                     | Extra environment variables to add to RabbitMQ pods                                                                                                                     | `[]`                                              |\n| `extraEnvVarsCM`                   | Name of existing ConfigMap containing extra environment variables                                                                                                       | `\"\"`                                              |\n| `extraEnvVarsSecret`               | Name of existing Secret containing extra environment variables (in case of sensitive data)                                                                              | `\"\"`                                              |\n| `containerPorts.amqp`              |                                                                                                                                                                         | `5672`                                            |\n| `containerPorts.amqpTls`           |                                                                                                                                                                         | `5671`                                            |\n| `containerPorts.dist`              |                                                                                                                                                                         | `25672`                                           |\n| `containerPorts.manager`           |                                                                                                                                                                         | `15672`                                           |\n| `containerPorts.epmd`              |                                                                                                                                                                         | `4369`                                            |\n| `containerPorts.metrics`           |                                                                                                                                                                         | `9419`                                            |\n| `initScripts`                      | Dictionary of init scripts. Evaluated as a template.                                                                                                                    | `{}`                                              |\n| `initScriptsCM`                    | ConfigMap with the init scripts. Evaluated as a template.                                                                                                               | `\"\"`                                              |\n| `initScriptsSecret`                | Secret containing `/docker-entrypoint-initdb.d` scripts to be executed at initialization time that contain sensitive data. Evaluated as a template.                     | `\"\"`                                              |\n| `extraContainerPorts`              | Extra ports to be included in container spec, primarily informational                                                                                                   | `[]`                                              |\n| `configuration`                    | RabbitMQ Configuration file content: required cluster configuration                                                                                                     | `\"\"`                                              |\n| `extraConfiguration`               | Configuration file content: extra configuration to be appended to RabbitMQ configuration                                                                                | `\"\"`                                              |\n| `advancedConfiguration`            | Configuration file content: advanced configuration                                                                                                                      | `\"\"`                                              |\n| `ldap.enabled`                     | Enable LDAP support                                                                                                                                                     | `false`                                           |\n| `ldap.uri`                         | LDAP connection string.                                                                                                                                                 | `\"\"`                                              |\n| `ldap.servers`                     | List of LDAP servers hostnames. This is valid only if ldap.uri is not set                                                                                               | `[]`                                              |\n| `ldap.port`                        | LDAP servers port. This is valid only if ldap.uri is not set                                                                                                            | `\"\"`                                              |\n| `ldap.userDnPattern`               | Pattern used to translate the provided username into a value to be used for the LDAP bind.                                                                              | `\"\"`                                              |\n| `ldap.binddn`                      | DN of the account used to search in the LDAP server.                                                                                                                    | `\"\"`                                              |\n| `ldap.bindpw`                      | Password for binddn account.                                                                                                                                            | `\"\"`                                              |\n| `ldap.basedn`                      | Base DN path where binddn account will search for the users.                                                                                                            | `\"\"`                                              |\n| `ldap.uidField`                    | Field used to match with the user name (uid, samAccountName, cn, etc). It matches with 'dn_lookup_attribute' in RabbitMQ configuration                                  | `\"\"`                                              |\n| `ldap.uidField`                    | Field used to match with the user name (uid, samAccountName, cn, etc). It matches with 'dn_lookup_attribute' in RabbitMQ configuration                                  | `\"\"`                                              |\n| `ldap.authorisationEnabled`        | Enable LDAP authorisation. Please set 'advancedConfiguration' with tag, topic, resources and vhost mappings                                                             | `false`                                           |\n| `ldap.tls.enabled`                 | Enabled TLS configuration.                                                                                                                                              | `false`                                           |\n| `ldap.tls.startTls`                | Use STARTTLS instead of LDAPS.                                                                                                                                          | `false`                                           |\n| `ldap.tls.skipVerify`              | Skip any SSL verification (hostanames or certificates)                                                                                                                  | `false`                                           |\n| `ldap.tls.verify`                  | Verify connection. Valid values are 'verify_peer' or 'verify_none'                                                                                                      | `verify_peer`                                     |\n| `ldap.tls.certificatesMountPath`   | Where LDAP certifcates are mounted.                                                                                                                                     | `/opt/bitnami/rabbitmq/ldap/certs`                |\n| `ldap.tls.certificatesSecret`      | Secret with LDAP certificates.                                                                                                                                          | `\"\"`                                              |\n| `ldap.tls.CAFilename`              | CA certificate filename. Should match with the CA entry key in the ldap.tls.certificatesSecret.                                                                         | `\"\"`                                              |\n| `ldap.tls.certFilename`            | Client certificate filename to authenticate against the LDAP server. Should match with certificate the entry key in the ldap.tls.certificatesSecret.                    | `\"\"`                                              |\n| `ldap.tls.certKeyFilename`         | Client Key filename to authenticate against the LDAP server. Should match with certificate the entry key in the ldap.tls.certificatesSecret.                            | `\"\"`                                              |\n| `extraVolumeMounts`                | Optionally specify extra list of additional volumeMounts                                                                                                                | `[]`                                              |\n| `extraVolumes`                     | Optionally specify extra list of additional volumes .                                                                                                                   | `[]`                                              |\n| `extraSecrets`                     | Optionally specify extra secrets to be created by the chart.                                                                                                            | `{}`                                              |\n| `extraSecretsPrependReleaseName`   | Set this flag to true if extraSecrets should be created with <release-name> prepended.                                                                                  | `false`                                           |\n\n\n### Statefulset parameters\n\n| Name                                    | Description                                                                                                              | Value           |\n| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------- |\n| `replicaCount`                          | Number of RabbitMQ replicas to deploy                                                                                    | `1`             |\n| `schedulerName`                         | Use an alternate scheduler, e.g. \"stork\".                                                                                | `\"\"`            |\n| `podManagementPolicy`                   | Pod management policy                                                                                                    | `OrderedReady`  |\n| `podLabels`                             | RabbitMQ Pod labels. Evaluated as a template                                                                             | `{}`            |\n| `podAnnotations`                        | RabbitMQ Pod annotations. Evaluated as a template                                                                        | `{}`            |\n| `updateStrategy.type`                   | Update strategy type for RabbitMQ statefulset                                                                            | `RollingUpdate` |\n| `statefulsetLabels`                     | RabbitMQ statefulset labels. Evaluated as a template                                                                     | `{}`            |\n| `priorityClassName`                     | Name of the priority class to be used by RabbitMQ pods, priority class needs to be created beforehand                    | `\"\"`            |\n| `podAffinityPreset`                     | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                      | `\"\"`            |\n| `podAntiAffinityPreset`                 | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                 | `soft`          |\n| `nodeAffinityPreset.type`               | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                | `\"\"`            |\n| `nodeAffinityPreset.key`                | Node label key to match Ignored if `affinity` is set.                                                                    | `\"\"`            |\n| `nodeAffinityPreset.values`             | Node label values to match. Ignored if `affinity` is set.                                                                | `[]`            |\n| `affinity`                              | Affinity for pod assignment. Evaluated as a template                                                                     | `{}`            |\n| `nodeSelector`                          | Node labels for pod assignment. Evaluated as a template                                                                  | `{}`            |\n| `tolerations`                           | Tolerations for pod assignment. Evaluated as a template                                                                  | `[]`            |\n| `topologySpreadConstraints`             | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template | `[]`            |\n| `podSecurityContext.enabled`            | Enable RabbitMQ pods' Security Context                                                                                   | `true`          |\n| `podSecurityContext.fsGroup`            | Set RabbitMQ pod's Security Context fsGroup                                                                              | `1001`          |\n| `containerSecurityContext.enabled`      | Enabled RabbitMQ containers' Security Context                                                                            | `true`          |\n| `containerSecurityContext.runAsUser`    | Set RabbitMQ containers' Security Context runAsUser                                                                      | `1001`          |\n| `containerSecurityContext.runAsNonRoot` | Set RabbitMQ container's Security Context runAsNonRoot                                                                   | `true`          |\n| `resources.limits`                      | The resources limits for RabbitMQ containers                                                                             | `{}`            |\n| `resources.requests`                    | The requested resources for RabbitMQ containers                                                                          | `{}`            |\n| `livenessProbe.enabled`                 | Enable livenessProbe                                                                                                     | `true`          |\n| `livenessProbe.initialDelaySeconds`     | Initial delay seconds for livenessProbe                                                                                  | `120`           |\n| `livenessProbe.periodSeconds`           | Period seconds for livenessProbe                                                                                         | `30`            |\n| `livenessProbe.timeoutSeconds`          | Timeout seconds for livenessProbe                                                                                        | `20`            |\n| `livenessProbe.failureThreshold`        | Failure threshold for livenessProbe                                                                                      | `6`             |\n| `livenessProbe.successThreshold`        | Success threshold for livenessProbe                                                                                      | `1`             |\n| `readinessProbe.enabled`                | Enable readinessProbe                                                                                                    | `true`          |\n| `readinessProbe.initialDelaySeconds`    | Initial delay seconds for readinessProbe                                                                                 | `10`            |\n| `readinessProbe.periodSeconds`          | Period seconds for readinessProbe                                                                                        | `30`            |\n| `readinessProbe.timeoutSeconds`         | Timeout seconds for readinessProbe                                                                                       | `20`            |\n| `readinessProbe.failureThreshold`       | Failure threshold for readinessProbe                                                                                     | `3`             |\n| `readinessProbe.successThreshold`       | Success threshold for readinessProbe                                                                                     | `1`             |\n| `startupProbe.enabled`                  | Enable startupProbe                                                                                                      | `false`         |\n| `startupProbe.initialDelaySeconds`      | Initial delay seconds for startupProbe                                                                                   | `10`            |\n| `startupProbe.periodSeconds`            | Period seconds for startupProbe                                                                                          | `30`            |\n| `startupProbe.timeoutSeconds`           | Timeout seconds for startupProbe                                                                                         | `20`            |\n| `startupProbe.failureThreshold`         | Failure threshold for startupProbe                                                                                       | `3`             |\n| `startupProbe.successThreshold`         | Success threshold for startupProbe                                                                                       | `1`             |\n| `customLivenessProbe`                   | Override default liveness probe                                                                                          | `{}`            |\n| `customReadinessProbe`                  | Override default readiness probe                                                                                         | `{}`            |\n| `customStartupProbe`                    | Define a custom startup probe                                                                                            | `{}`            |\n| `initContainers`                        | Add init containers to the RabbitMQ pod                                                                                  | `[]`            |\n| `sidecars`                              | Add sidecar containers to the RabbitMQ pod                                                                               | `[]`            |\n| `pdb.create`                            | Enable/disable a Pod Disruption Budget creation                                                                          | `false`         |\n| `pdb.minAvailable`                      | Minimum number/percentage of pods that should remain scheduled                                                           | `1`             |\n| `pdb.maxUnavailable`                    | Maximum number/percentage of pods that may be made unavailable                                                           | `\"\"`            |\n\n\n### RBAC parameters\n\n| Name                                          | Description                                                                                | Value  |\n| --------------------------------------------- | ------------------------------------------------------------------------------------------ | ------ |\n| `serviceAccount.create`                       | Enable creation of ServiceAccount for RabbitMQ pods                                        | `true` |\n| `serviceAccount.name`                         | Name of the created serviceAccount                                                         | `\"\"`   |\n| `serviceAccount.automountServiceAccountToken` | Auto-mount the service account token in the pod                                            | `true` |\n| `serviceAccount.annotations`                  | Annotations for service account. Evaluated as a template. Only used if `create` is `true`. | `{}`   |\n| `rbac.create`                                 | Whether RBAC rules should be created                                                       | `true` |\n\n\n### Persistence parameters\n\n| Name                        | Description                                      | Value                      |\n| --------------------------- | ------------------------------------------------ | -------------------------- |\n| `persistence.enabled`       | Enable RabbitMQ data persistence using PVC       | `true`                     |\n| `persistence.storageClass`  | PVC Storage Class for RabbitMQ data volume       | `\"\"`                       |\n| `persistence.selector`      | Selector to match an existing Persistent Volume  | `{}`                       |\n| `persistence.accessModes`   | PVC Access Modes for RabbitMQ data volume        | `[\"ReadWriteOnce\"]`        |\n| `persistence.existingClaim` | Provide an existing PersistentVolumeClaims       | `\"\"`                       |\n| `persistence.mountPath`     | The path the volume will be mounted at           | `/bitnami/rabbitmq/mnesia` |\n| `persistence.subPath`       | The subdirectory of the volume to mount to       | `\"\"`                       |\n| `persistence.size`          | PVC Storage Request for RabbitMQ data volume     | `8Gi`                      |\n| `persistence.annotations`   | Persistence annotations. Evaluated as a template | `{}`                       |\n\n\n### Exposure parameters\n\n| Name                               | Description                                                                                                                      | Value                    |\n| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n| `service.type`                     | Kubernetes Service type                                                                                                          | `ClusterIP`              |\n| `service.portEnabled`              | Amqp port. Cannot be disabled when `auth.tls.enabled` is `false`. Listener can be disabled with `listeners.tcp = none`.          | `true`                   |\n| `service.distPortEnabled`          | Erlang distribution server port                                                                                                  | `true`                   |\n| `service.managerPortEnabled`       | RabbitMQ Manager port                                                                                                            | `true`                   |\n| `service.epmdPortEnabled`          | RabbitMQ EPMD Discovery service port                                                                                             | `true`                   |\n| `service.ports.amqp`               | Amqp service port                                                                                                                | `5672`                   |\n| `service.ports.amqpTls`            | Amqp TLS service port                                                                                                            | `5671`                   |\n| `service.ports.dist`               | Erlang distribution service port                                                                                                 | `25672`                  |\n| `service.ports.manager`            | RabbitMQ Manager service port                                                                                                    | `15672`                  |\n| `service.ports.metrics`            | RabbitMQ Prometheues metrics service port                                                                                        | `9419`                   |\n| `service.ports.epmd`               | EPMD Discovery service port                                                                                                      | `4369`                   |\n| `service.portNames.amqp`           | Amqp service port name                                                                                                           | `amqp`                   |\n| `service.portNames.amqpTls`        | Amqp TLS service port name                                                                                                       | `amqp-ssl`               |\n| `service.portNames.dist`           | Erlang distribution service port name                                                                                            | `dist`                   |\n| `service.portNames.manager`        | RabbitMQ Manager service port name                                                                                               | `http-stats`             |\n| `service.portNames.metrics`        | RabbitMQ Prometheues metrics service port name                                                                                   | `metrics`                |\n| `service.portNames.epmd`           | EPMD Discovery service port name                                                                                                 | `epmd`                   |\n| `service.nodePorts.amqp`           | Node port for Ampq                                                                                                               | `\"\"`                     |\n| `service.nodePorts.amqpTls`        | Node port for Ampq TLS                                                                                                           | `\"\"`                     |\n| `service.nodePorts.dist`           | Node port for Erlang distribution                                                                                                | `\"\"`                     |\n| `service.nodePorts.manager`        | Node port for RabbitMQ Manager                                                                                                   | `\"\"`                     |\n| `service.nodePorts.epmd`           | Node port for EPMD Discovery                                                                                                     | `\"\"`                     |\n| `service.nodePorts.metrics`        | Node port for RabbitMQ Prometheues metrics                                                                                       | `\"\"`                     |\n| `service.extraPorts`               | Extra ports to expose in the service                                                                                             | `[]`                     |\n| `service.loadBalancerSourceRanges` | Address(es) that are allowed when service is `LoadBalancer`                                                                      | `[]`                     |\n| `service.externalIPs`              | Set the ExternalIPs                                                                                                              | `[]`                     |\n| `service.externalTrafficPolicy`    | Enable client source IP preservation                                                                                             | `Cluster`                |\n| `service.loadBalancerIP`           | Set the LoadBalancerIP                                                                                                           | `\"\"`                     |\n| `service.clusterIP`                | Kubernetes service Cluster IP                                                                                                    | `\"\"`                     |\n| `service.labels`                   | Service labels. Evaluated as a template                                                                                          | `{}`                     |\n| `service.annotations`              | Service annotations. Evaluated as a template                                                                                     | `{}`                     |\n| `service.annotationsHeadless`      | Headless Service annotations. Evaluated as a template                                                                            | `{}`                     |\n| `service.sessionAffinity`          | Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"                                                             | `None`                   |\n| `service.sessionAffinityConfig`    | Additional settings for the sessionAffinity                                                                                      | `{}`                     |\n| `ingress.enabled`                  | Enable ingress resource for Management console                                                                                   | `false`                  |\n| `ingress.path`                     | Path for the default host. You may need to set this to '/*' in order to use this with ALB ingress controllers.                   | `/`                      |\n| `ingress.pathType`                 | Ingress path type                                                                                                                | `ImplementationSpecific` |\n| `ingress.hostname`                 | Default host for the ingress resource                                                                                            | `rabbitmq.local`         |\n| `ingress.annotations`              | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | `{}`                     |\n| `ingress.tls`                      | Enable TLS configuration for the hostname defined at `ingress.hostname` parameter                                                | `false`                  |\n| `ingress.selfSigned`               | Set this to true in order to create a TLS secret for this ingress record                                                         | `false`                  |\n| `ingress.extraHosts`               | The list of additional hostnames to be covered with this ingress record.                                                         | `[]`                     |\n| `ingress.extraPaths`               | An array with additional arbitrary paths that may need to be added to the ingress under the main host                            | `[]`                     |\n| `ingress.extraRules`               | The list of additional rules to be added to this ingress record. Evaluated as a template                                         | `[]`                     |\n| `ingress.extraTls`                 | The tls configuration for additional hostnames to be covered with this ingress record.                                           | `[]`                     |\n| `ingress.secrets`                  | Custom TLS certificates as secrets                                                                                               | `[]`                     |\n| `ingress.ingressClassName`         | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)                                                    | `\"\"`                     |\n| `ingress.existingSecret`           | It is you own the certificate as secret.                                                                                         | `\"\"`                     |\n| `networkPolicy.enabled`            | Enable creation of NetworkPolicy resources                                                                                       | `false`                  |\n| `networkPolicy.allowExternal`      | Don't require client label for connections                                                                                       | `true`                   |\n| `networkPolicy.additionalRules`    | Additional NetworkPolicy Ingress \"from\" rules to set. Note that all rules are OR-ed.                                             | `[]`                     |\n\n\n### Metrics Parameters\n\n| Name                                       | Description                                                                            | Value                 |\n| ------------------------------------------ | -------------------------------------------------------------------------------------- | --------------------- |\n| `metrics.enabled`                          | Enable exposing RabbitMQ metrics to be gathered by Prometheus                          | `false`               |\n| `metrics.plugins`                          | Plugins to enable Prometheus metrics in RabbitMQ                                       | `rabbitmq_prometheus` |\n| `metrics.podAnnotations`                   | Annotations for enabling prometheus to access the metrics endpoint                     | `{}`                  |\n| `metrics.serviceMonitor.enabled`           | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator           | `false`               |\n| `metrics.serviceMonitor.namespace`         | Specify the namespace in which the serviceMonitor resource will be created             | `\"\"`                  |\n| `metrics.serviceMonitor.interval`          | Specify the interval at which metrics should be scraped                                | `30s`                 |\n| `metrics.serviceMonitor.scrapeTimeout`     | Specify the timeout after which the scrape is ended                                    | `\"\"`                  |\n| `metrics.serviceMonitor.jobLabel`          | The name of the label on the target service to use as the job name in prometheus.      | `\"\"`                  |\n| `metrics.serviceMonitor.relabelings`       | RelabelConfigs to apply to samples before scraping.                                    | `[]`                  |\n| `metrics.serviceMonitor.metricRelabelings` | MetricsRelabelConfigs to apply to samples before ingestion.                            | `[]`                  |\n| `metrics.serviceMonitor.honorLabels`       | honorLabels chooses the metric's labels on collisions with target labels               | `false`               |\n| `metrics.serviceMonitor.targetLabels`      | Used to keep given service's labels in target                                          | `{}`                  |\n| `metrics.serviceMonitor.podTargetLabels`   | Used to keep given pod's labels in target                                              | `{}`                  |\n| `metrics.serviceMonitor.path`              | Define the path used by ServiceMonitor to scrap metrics                                | `\"\"`                  |\n| `metrics.serviceMonitor.selector`          | ServiceMonitor selector labels                                                         | `{}`                  |\n| `metrics.serviceMonitor.labels`            | Extra labels for the ServiceMonitor                                                    | `{}`                  |\n| `metrics.serviceMonitor.annotations`       | Extra annotations for the ServiceMonitor                                               | `{}`                  |\n| `metrics.prometheusRule.enabled`           | Set this to true to create prometheusRules for Prometheus operator                     | `false`               |\n| `metrics.prometheusRule.additionalLabels`  | Additional labels that can be used so prometheusRules will be discovered by Prometheus | `{}`                  |\n| `metrics.prometheusRule.namespace`         | namespace where prometheusRules resource should be created                             | `\"\"`                  |\n| `metrics.prometheusRule.rules`             | List of rules, used as template by Helm.                                               | `[]`                  |\n\n\n### Init Container Parameters\n\n| Name                                                   | Description                                                                                                                       | Value                   |\n| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |\n| `volumePermissions.enabled`                            | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`              | `false`                 |\n| `volumePermissions.image.registry`                     | Init container volume-permissions image registry                                                                                  | `docker.io`             |\n| `volumePermissions.image.repository`                   | Init container volume-permissions image repository                                                                                | `bitnami/bitnami-shell` |\n| `volumePermissions.image.tag`                          | Init container volume-permissions image tag                                                                                       | `11-debian-11-r56`      |\n| `volumePermissions.image.digest`                       | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                    |\n| `volumePermissions.image.pullPolicy`                   | Init container volume-permissions image pull policy                                                                               | `IfNotPresent`          |\n| `volumePermissions.image.pullSecrets`                  | Specify docker-registry secret names as an array                                                                                  | `[]`                    |\n| `volumePermissions.resources.limits`                   | Init container volume-permissions resource limits                                                                                 | `{}`                    |\n| `volumePermissions.resources.requests`                 | Init container volume-permissions resource requests                                                                               | `{}`                    |\n| `volumePermissions.containerSecurityContext.runAsUser` | User ID for the init container                                                                                                    | `0`                     |\n\n\nThe above parameters map to the env variables defined in [bitnami/rabbitmq](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq). For more information please refer to the [bitnami/rabbitmq](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq) image documentation.\n\nSpecify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```bash\n$ helm install my-release \\\n  --set auth.username=admin,auth.password=secretpassword,auth.erlangCookie=secretcookie \\\n    my-repo/rabbitmq\n```\n\nThe above command sets the RabbitMQ admin username and password to `admin` and `secretpassword` respectively. Additionally the secure erlang cookie is set to `secretcookie`.\n\n> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.\n\nAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,\n\n```bash\n$ helm install my-release -f values.yaml my-repo/rabbitmq\n```\n\n> **Tip**: You can use the default [values.yaml](values.yaml)\n\n## Configuration and installation details\n\n### [Rolling vs Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)\n\nIt is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.\n\nBitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.\n\n### Set pod affinity\n\nThis chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod's affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).\n\nAs an alternative, you can use of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters.\n\n### Scale horizontally\n\nTo horizontally scale this chart once it has been deployed, two options are available:\n\n- Use the `kubectl scale` command.\n- Upgrade the chart modifying the `replicaCount` parameter.\n\n> NOTE: It is mandatory to specify the password and Erlang cookie that was set the first time the chart was installed when upgrading the chart.\n\nWhen scaling down the solution, unnecessary RabbitMQ nodes are automatically stopped, but they are not removed from the cluster. You need to manually remove them by running the `rabbitmqctl forget_cluster_node` command.\n\nRefer to the chart documentation for [more information on scaling the Rabbit cluster horizontally](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/administration/scale-deployment/).\n\n### Enable TLS support\n\nTo enable TLS support, first generate the certificates as described in the [RabbitMQ documentation for SSL certificate generation](https://www.rabbitmq.com/ssl.html#automated-certificate-generation).\n\nOnce the certificates are generated, you have two alternatives:\n\n* Create a secret with the certificates and associate the secret when deploying the chart\n* Include the certificates in the *values.yaml* file when deploying the chart\n\nSet the *auth.tls.failIfNoPeerCert* parameter to *false* to allow a TLS connection if the client fails to provide a certificate.\n\nSet the *auth.tls.sslOptionsVerify* to *verify_peer* to force a node to perform peer verification. When set to *verify_none*, peer verification will be disabled and certificate exchange won't be performed.\n\nRefer to the chart documentation for [more information and examples of enabling TLS and using Let's Encrypt certificates](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/administration/enable-tls-ingress/).\n\n### Load custom definitions\n\nIt is possible to [load a RabbitMQ definitions file to configure RabbitMQ](https://www.rabbitmq.com/management.html#load-definitions).\n\nBecause definitions may contain RabbitMQ credentials, [store the JSON as a Kubernetes secret](https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod). Within the secret's data, choose a key name that corresponds with the desired load definitions filename (i.e. `load_definition.json`) and use the JSON object as the value.\n\nNext, specify the `load_definitions` property as an `extraConfiguration` pointing to the load definition file path within the container (i.e. `/app/load_definition.json`) and set `loadDefinition.enable` to `true`. Any load definitions specified will be available within in the container at `/app`.\n\n> NOTE: Loading a definition will take precedence over any configuration done through [Helm values](#parameters).\n\nIf needed, you can use `extraSecrets` to let the chart create the secret for you. This way, you don't need to manually create it before deploying a release. These secrets can also be templated to use supplied chart values.\n\nRefer to the chart documentation for [more information and configuration examples of loading custom definitions](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/configuration/load-files/).\n\n### Configure LDAP support\n\nLDAP support can be enabled in the chart by specifying the `ldap.*` parameters while creating a release. Refer to the chart documentation for [more information and a configuration example](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/configuration/configure-ldap/).\n\n### Configure memory high watermark\n\nIt is possible to configure a memory high watermark on RabbitMQ to define [memory thresholds](https://www.rabbitmq.com/memory.html#threshold) using the `memoryHighWatermark.*` parameters. To do so, you have two alternatives:\n\n* Set an absolute limit of RAM to be used on each RabbitMQ node, as shown in the configuration example below:\n\n```\nmemoryHighWatermark.enabled=\"true\"\nmemoryHighWatermark.type=\"absolute\"\nmemoryHighWatermark.value=\"512MB\"\n```\n\n* Set a relative limit of RAM to be used on each RabbitMQ node. To enable this feature,  define the memory limits at pod level too. An example configuration is shown below:\n\n```\nmemoryHighWatermark.enabled=\"true\"\nmemoryHighWatermark.type=\"relative\"\nmemoryHighWatermark.value=\"0.4\"\nresources.limits.memory=\"2Gi\"\n```\n\n### Add extra environment variables\n\nIn case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `extraEnvVars` property.\n\n```yaml\nextraEnvVars:\n  - name: LOG_LEVEL\n    value: error\n```\n\nAlternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `.extraEnvVarsCM` or the `extraEnvVarsSecret` properties.\n\n### Use plugins\n\nThe Bitnami Docker RabbitMQ image ships a set of plugins by default. By default, this chart enables `rabbitmq_management` and `rabbitmq_peer_discovery_k8s` since they are required for RabbitMQ to work on K8s.\n\nTo enable extra plugins, set the `extraPlugins` parameter with the list of plugins you want to enable. In addition to this, the `communityPlugins` parameter can be used to specify a list of URLs (separated by spaces) for custom plugins for RabbitMQ.\n\nRefer to the chart documentation for [more information on using RabbitMQ plugins](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/configuration/use-plugins/).\n\n### Advanced logging\n\nIn case you want to configure RabbitMQ logging set `logs` value to false and set the log config in extraConfiguration following the [official documentation](https://www.rabbitmq.com/logging.html#log-file-location).\n\nAn example:\n\n```yaml\nlogs: false # custom logging\nextraConfiguration: |\n  log.default.level = warning\n  log.file = false\n  log.console = true\n  log.console.level = warning\n  log.console.formatter = json\n```\n\n### Recover the cluster from complete shutdown\n\n> IMPORTANT: Some of these procedures can lead to data loss. Always make a backup beforehand.\n\nThe RabbitMQ cluster is able to support multiple node failures but, in a situation in which all the nodes are brought down at the same time, the cluster might not be able to self-recover.\n\nThis happens if the pod management policy of the statefulset is not `Parallel` and the last pod to be running wasn't the first pod of the statefulset. If that happens, update the pod management policy to recover a healthy state:\n\n```console\n$ kubectl delete statefulset STATEFULSET_NAME --cascade=false\n$ helm upgrade RELEASE_NAME my-repo/rabbitmq \\\n    --set podManagementPolicy=Parallel \\\n    --set replicaCount=NUMBER_OF_REPLICAS \\\n    --set auth.password=PASSWORD \\\n    --set auth.erlangCookie=ERLANG_COOKIE\n```\n\nFor a faster resyncronization of the nodes, you can temporarily disable the readiness probe by setting `readinessProbe.enabled=false`. Bear in mind that the pods will be exposed before they are actually ready to process requests.\n\nIf the steps above don't bring the cluster to a healthy state, it could be possible that none of the RabbitMQ nodes think they were the last node to be up during the shutdown. In those cases, you can force the boot of the nodes by specifying the `clustering.forceBoot=true` parameter (which will execute [`rabbitmqctl force_boot`](https://www.rabbitmq.com/rabbitmqctl.8.html#force_boot) in each pod):\n\n```console\n$ helm upgrade RELEASE_NAME my-repo/rabbitmq \\\n    --set podManagementPolicy=Parallel \\\n    --set clustering.forceBoot=true \\\n    --set replicaCount=NUMBER_OF_REPLICAS \\\n    --set auth.password=PASSWORD \\\n    --set auth.erlangCookie=ERLANG_COOKIE\n```\n\nMore information: [Clustering Guide: Restarting](https://www.rabbitmq.com/clustering.html#restarting).\n\n### Known issues\n\n- Changing the password through RabbitMQ's UI can make the pod fail due to the default liveness probes. If you do so, remember to make the chart aware of the new password. Updating the default secret with the password you set through RabbitMQ's UI will automatically recreate the pods. If you are using your own secret, you may have to manually recreate the pods.\n\n## Persistence\n\nThe [Bitnami RabbitMQ](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq) image stores the RabbitMQ data and configurations at the `/opt/bitnami/rabbitmq/var/lib/rabbitmq/` path of the container.\n\nThe chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) at this location. By default, the volume is created using dynamic volume provisioning. An existing PersistentVolumeClaim can also be defined.\n\n### Use existing PersistentVolumeClaims\n\n1. Create the PersistentVolume\n1. Create the PersistentVolumeClaim\n1. Install the chart\n\n```bash\n$ helm install my-release --set persistence.existingClaim=PVC_NAME my-repo/rabbitmq\n```\n\n### Adjust permissions of the persistence volume mountpoint\n\nAs the image runs as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.\n\nBy default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.\nAs an alternative, this chart supports using an `initContainer` to change the ownership of the volume before mounting it in the final destination.\n\nYou can enable this `initContainer` by setting `volumePermissions.enabled` to `true`.\n\n### Configure the default user/vhost\n\nIf you want to create default user/vhost and set the default permission. you can use `extraConfiguration`:\n\n```yaml\nauth:\n  username: default-user\nextraConfiguration: |-\n  default_vhost = default-vhost\n  default_permissions.configure = .*\n  default_permissions.read = .*\n  default_permissions.write = .*\n```\n\n## Troubleshooting\n\nFind more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).\n\n## Upgrading\n\nIt's necessary to set the `auth.password` and `auth.erlangCookie` parameters when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Credentials' section. Please note down the password and the cookie, and run the command below to upgrade your chart:\n\n```bash\n$ helm upgrade my-release my-repo/rabbitmq --set auth.password=[PASSWORD] --set auth.erlangCookie=[RABBITMQ_ERLANG_COOKIE]\n```\n\n| Note: you need to substitute the placeholders [PASSWORD] and [RABBITMQ_ERLANG_COOKIE] with the values obtained in the installation notes.\n\n### To 11.0.0\n\nThis major version changes the default RabbitMQ image from 3.10.x to 3.11.x. Follow the [official instructions](https://www.rabbitmq.com/upgrade.html) to upgrade from 3.10 to 3.11.\n\n### To 10.0.0\n\nThis major version changes the default RabbitMQ image from 3.9.x to 3.10.x. Follow the [official instructions](https://www.rabbitmq.com/upgrade.html) to upgrade from 3.9 to 3.10.\n\n### To 9.0.0\n\nThis major release renames several values in this chart and adds missing features, in order to be aligned with the rest of the assets in the Bitnami charts repository.\n\n  .dist\n  .manager\n  .metrics\n  .epmd\n\n- `service.port` has been renamed as `service.ports.amqp`.\n- `service.portName` has been renamed as `service.portNames.amqp`.\n- `service.nodePort`has been renamed as `service.nodePorts.amqp`.\n- `service.tlsPort` has been renamed as `service.ports.amqpTls`.\n- `service.tlsPortName` has been renamed as `service.portNames.amqpTls`.\n- `service.tlsNodePort` has been renamed as `service.nodePorts.amqpTls`.\n- `service.epmdPortName` has been renamed as `service.portNames.epmd`.\n- `service.epmdNodePort` has been renamed as `service.nodePorts.epmd`.\n- `service.distPort` has been renamed as `service.ports.dist`.\n- `service.distPortName` has been renamed as `service.portNames.dist`.\n- `service.distNodePort` has been renamed as `service.nodePorts.dist`.\n- `service.managerPort` has been renamed as `service.ports.manager`.\n- `service.managerPortName` has been renamed as `service.portNames.manager`.\n- `service.managerNodePort` has been renamed as `service.nodePorts.manager`.\n- `service.metricsPort` has been renamed as `service.ports.metrics`.\n- `service.metricsPortName` has been renamed as `service.portNames.metrics`.\n- `service.metricsNodePort` has been renamed as `service.nodePorts.metrics`.\n- `persistence.volumes` has been removed, as it duplicates the parameter `extraVolumes`.\n- `ingress.certManager` has been removed.\n- `metrics.serviceMonitor.relabellings` has been replaced with `metrics.serviceMonitor.relabelings`, and it sets the field `relabelings` instead of `metricRelabelings`.\n- `metrics.serviceMonitor.additionalLabels` has been renamed as `metrics.serviceMonitor.labels`\n- `updateStrategyType` has been removed, use the field `updateStrategy` instead, which is interpreted as a template.\n- The content of `podSecurityContext` and `containerSecurityContext` have been modified.\n- The behavior of VolumePermissions has been modified to not change ownership of '.snapshot' and 'lost+found'\n- Introduced the values `ContainerPorts.*`, separating the service and container ports configuration.\n\n### To 8.21.0\n\nThis new version of the chart bumps the RabbitMQ version to `3.9.1`. It is considered a minor release, and no breaking changes are expected. Additionally, RabbitMQ `3.9.X` nodes can run alongside `3.8.X` nodes.\n\nSee the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) and the [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for further documentation.\n\n### To 8.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n[Learn more about this change and related upgrade considerations](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/administration/upgrade-helm3/).\n\n### To 7.0.0\n\n- Several parameters were renamed or disappeared in favor of new ones on this major version:\n  - `replicas` is renamed to `replicaCount`.\n  - `securityContext.*` is deprecated in favor of `podSecurityContext` and `containerSecurityContext`.\n  - Authentication parameters were reorganized under the `auth.*` parameter:\n    - `rabbitmq.username`, `rabbitmq.password`, and `rabbitmq.erlangCookie` are now `auth.username`, `auth.password`, and `auth.erlangCookie` respectively.\n    - `rabbitmq.tls.*` parameters are now under `auth.tls.*`.\n  - Parameters prefixed with `rabbitmq.` were renamed removing the prefix. E.g. `rabbitmq.configuration` -> renamed to `configuration`.\n  - `rabbitmq.rabbitmqClusterNodeName` is deprecated.\n  - `rabbitmq.setUlimitNofiles` is deprecated.\n  - `forceBoot.enabled` is renamed to `clustering.forceBoot`.\n  - `loadDefinition.secretName` is renamed to `loadDefinition.existingSecret`.\n  - `metics.port` is remamed to `service.metricsPort`.\n  - `service.extraContainerPorts` is renamed to `extraContainerPorts`.\n  - `service.nodeTlsPort` is renamed to `service.tlsNodePort`.\n  - `podDisruptionBudget` is deprecated in favor of `pdb.create`, `pdb.minAvailable`, and `pdb.maxUnavailable`.\n  - `rbacEnabled` -> deprecated in favor of `rbac.create`.\n  - New parameters: `serviceAccount.create`, and `serviceAccount.name`.\n  - New parameters: `memoryHighWatermark.enabled`, `memoryHighWatermark.type`, and `memoryHighWatermark.value`.\n- Chart labels and Ingress configuration were adapted to follow the Helm charts best practices.\n- Initialization logic now relies on the container.\n- This version introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade.\n- The layout of the persistent volumes has changed (if using persistence). Action is required if preserving data through the upgrade is desired:\n  - The data has moved from `mnesia/` within the persistent volume to the root of the persistent volume\n  - The `config/` and `schema/` directories within the persistent volume are no longer used\n  - An init container can be used to move and clean up the peristent volumes. An example can be found [here](https://github.com/bitnami/charts/issues/10913#issuecomment-1169619513).\n  - Alternately the value `persistence.subPath` can be overridden to be `mnesia` so that the directory layout is consistent with what it was previously.\n    - Note however that this will leave the unused `config/` and `schema/` directories within the peristent volume forever.\n\nConsequences:\n\n- Backwards compatibility is not guaranteed.\n- Compatibility with non Bitnami images is not guaranteed anymore.\n\n### To 6.0.0\n\nThis new version updates the RabbitMQ image to a [new version based on bash instead of node.js](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#3715-r18-3715-ol-7-r19). However, since this Chart overwrites the container's command, the changes to the container shouldn't affect the Chart. To upgrade, it may be needed to enable the `fastBoot` option, as it is already the case from upgrading from 5.X to 5.Y.\n\n### To 5.0.0\n\nThis major release changes the clustering method from `ip` to `hostname`.\nThis change is needed to fix the persistence. The data dir will now depend on the hostname which is stable instead of the pod IP that might change.\n\n> IMPORTANT: Note that if you upgrade from a previous version you will lose your data.\n\n### To 3.0.0\n\nBackwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments.\nUse the workaround below to upgrade from versions previous to 3.0.0. The following example assumes that the release name is rabbitmq:\n\n```console\n$ kubectl delete statefulset rabbitmq --cascade=false\n```\n\n## Bitnami Kubernetes Documentation\n\nBitnami Kubernetes documentation is available at [https://docs.bitnami.com/](https://docs.bitnami.com/). You can find there the following resources:\n\n- [Documentation for RabbitMQ Helm chart](https://docs.bitnami.com/kubernetes/infrastructure/rabbitmq/)\n- [Get Started with Kubernetes guides](https://docs.bitnami.com/kubernetes/)\n- [Bitnami Helm charts documentation](https://docs.bitnami.com/kubernetes/apps/)\n- [Kubernetes FAQs](https://docs.bitnami.com/kubernetes/faq/)\n- [Kubernetes Developer guides](https://docs.bitnami.com/tutorials/)\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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."
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 2.2.1\ndescription: A Library Helm Chart for grouping common logic between bitnami charts.\n  This chart is not deployable by itself.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/common\nicon: https://bitnami.com/downloads/logos/bitnami-mark.png\nkeywords:\n- common\n- helper\n- template\n- function\n- bitnami\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: common\nsources:\n- https://github.com/bitnami/charts\n- https://www.bitnami.com/\ntype: library\nversion: 2.2.1\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/README.md",
    "content": "# Bitnami Common Library Chart\n\nA [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts.\n\n## TL;DR\n\n```yaml\ndependencies:\n  - name: common\n    version: 1.x.x\n    repository: https://charts.bitnami.com/bitnami\n```\n\n```bash\n$ helm dependency update\n```\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\ndata:\n  myvalue: \"Hello World\"\n```\n\n## Introduction\n\nThis chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n\n## Parameters\n\nThe following table lists the helpers available in the library which are scoped in different sections.\n\n### Affinities\n\n| Helper identifier             | Description                                          | Expected Input                                 |\n|-------------------------------|------------------------------------------------------|------------------------------------------------|\n| `common.affinities.nodes.soft`  | Return a soft nodeAffinity definition                 | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")`  |\n| `common.affinities.nodes.hard`  | Return a hard nodeAffinity definition                 | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")`  |\n| `common.affinities.pods.soft`   | Return a soft podAffinity/podAntiAffinity definition  | `dict \"component\" \"FOO\" \"context\" $`            |\n| `common.affinities.pods.hard`   | Return a hard podAffinity/podAntiAffinity definition  | `dict \"component\" \"FOO\" \"context\" $`            |\n| `common.affinities.topologyKey` | Return a topologyKey definition                       | `dict \"topologyKey\" \"FOO\"`                      |\n\n### Capabilities\n\n| Helper identifier                              | Description                                                                                    | Expected Input    |\n|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------|\n| `common.capabilities.kubeVersion`              | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context |\n| `common.capabilities.cronjob.apiVersion`       | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context |\n| `common.capabilities.deployment.apiVersion`    | Return the appropriate apiVersion for deployment.                                              | `.` Chart context |\n| `common.capabilities.statefulset.apiVersion`   | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context |\n| `common.capabilities.ingress.apiVersion`       | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context |\n| `common.capabilities.rbac.apiVersion`          | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context |\n| `common.capabilities.crd.apiVersion`           | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context |\n| `common.capabilities.policy.apiVersion`        | Return the appropriate apiVersion for podsecuritypolicy.                                       | `.` Chart context |\n| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy.                                           | `.` Chart context |\n| `common.capabilities.apiService.apiVersion`    | Return the appropriate apiVersion for APIService.                                              | `.` Chart context |\n| `common.capabilities.hpa.apiVersion`           | Return the appropriate apiVersion for Horizontal Pod Autoscaler                                | `.` Chart context |\n| `common.capabilities.supportsHelmVersion`      | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context |\n\n### Errors\n\n| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict \"validationErrors\" (list $validationError00 $validationError01)  \"context\" $` |\n\n### Images\n\n| Helper identifier           | Description                                          | Expected Input                                                                                          |\n|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| `common.images.image`       | Return the proper and full image name                | `dict \"imageRoot\" .Values.path.to.the.image \"global\" $`, see [ImageRoot](#imageroot) for the structure. |\n| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global` |\n| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $` |\n\n### Ingress\n\n| Helper identifier                         | Description                                                                                                       | Expected Input                                                                                                                                                                   |\n|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version                                              | `dict \"serviceName\" \"foo\" \"servicePort\" \"bar\"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |\n| `common.ingress.supportsPathType`         | Prints \"true\" if the pathType field is supported                                                                  | `.` Chart context                                                                                                                                                                |\n| `common.ingress.supportsIngressClassname` | Prints \"true\" if the ingressClassname field is supported                                                          | `.` Chart context                                                                                                                                                                |\n| `common.ingress.certManagerRequest`       | Prints \"true\" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict \"annotations\" .Values.path.to.the.ingress.annotations`                                                                                                                     |\n\n### Labels\n\n| Helper identifier           | Description                                                                 | Expected Input    |\n|-----------------------------|-----------------------------------------------------------------------------|-------------------|\n| `common.labels.standard`    | Return Kubernetes standard labels                                           | `.` Chart context |\n| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context |\n\n### Names\n\n| Helper identifier                 | Description                                                           | Expected Input    |\n|-----------------------------------|-----------------------------------------------------------------------|-------------------|\n| `common.names.name`               | Expand the name of the chart or use `.Values.nameOverride`            | `.` Chart context |\n| `common.names.fullname`           | Create a default fully qualified app name.                            | `.` Chart context |\n| `common.names.namespace`          | Allow the release namespace to be overridden                          | `.` Chart context |\n| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context |\n| `common.names.chart`              | Chart name plus version                                               | `.` Chart context |\n\n### Secrets\n\n| Helper identifier                 | Description                                                  | Expected Input                                                                                                                                                                                                                  |\n|-----------------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.secrets.name`             | Generate the name of the secret.                             | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $` see [ExistingSecret](#existingsecret) for the structure.                                                                  |\n| `common.secrets.key`              | Generate secret key.                                         | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\"` see [ExistingSecret](#existingsecret) for the structure.                                                                                             |\n| `common.secrets.passwords.manage` | Generate secret password or retrieve one if already created. | `dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $`, length, strong and chartNAme fields are optional. |\n| `common.secrets.exists`           | Returns whether a previous generated secret already exists.  | `dict \"secret\" \"secret-name\" \"context\" $`                                                                                                                                                                                       |\n\n### Storage\n\n| Helper identifier             | Description                           | Expected Input                                                                                                      |\n|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| `common.storage.class` | Return  the proper Storage Class | `dict \"persistence\" .Values.path.to.the.persistence \"global\" $`, see [Persistence](#persistence) for the structure. |\n\n### TplValues\n\n| Helper identifier         | Description                            | Expected Input                                                                                                                                           |\n|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.tplvalues.render` | Renders a value that contains template | `dict \"value\" .Values.path.to.the.Value \"context\" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |\n\n### Utils\n\n| Helper identifier              | Description                                                                              | Expected Input                                                         |\n|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------|\n| `common.utils.fieldToEnvVar`   | Build environment variable name given a field.                                           | `dict \"field\" \"my-password\"`                                           |\n| `common.utils.secret.getvalue` | Print instructions to get a secret value.                                                | `dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $` |\n| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path                                    | `dict \"key\" \"path.to.key\" \"context\" $`                                 |\n| `common.utils.getKeyFromList`  | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $`         |\n\n### Validations\n\n| Helper identifier                                | Description                                                                                                                   | Expected Input                                                                                                                                                                                                                                                           |\n|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.validations.values.single.empty`         | Validate a value must not be empty.                                                                                           | `dict \"valueKey\" \"path.to.value\" \"secret\" \"secret.name\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |\n| `common.validations.values.multiple.empty`       | Validate a multiple values must not be empty. It returns a shared error for all the values.                                   | `dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |\n| `common.validations.values.mariadb.passwords`    | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mariadb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |\n| `common.validations.values.mysql.passwords`      | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values.              | `dict \"secret\" \"mysql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper.                                                                                      |\n| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values.         | `dict \"secret\" \"postgresql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper.                                                                                |\n| `common.validations.values.redis.passwords`      | This helper will ensure required password for Redis&reg; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"redis-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper.                                                                                          |\n| `common.validations.values.cassandra.passwords`  | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values.          | `dict \"secret\" \"cassandra-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper.                                                                                  |\n| `common.validations.values.mongodb.passwords`    | This helper will ensure required password for MongoDB&reg; are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mongodb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper.                                                                                      |\n\n### Warnings\n\n| Helper identifier            | Description                      | Expected Input                                             |\n|------------------------------|----------------------------------|------------------------------------------------------------|\n| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |\n\n## Special input schemas\n\n### ImageRoot\n\n```yaml\nregistry:\n  type: string\n  description: Docker registry where the image is located\n  example: docker.io\n\nrepository:\n  type: string\n  description: Repository and image name\n  example: bitnami/nginx\n\ntag:\n  type: string\n  description: image tag\n  example: 1.16.1-debian-10-r63\n\npullPolicy:\n  type: string\n  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n\npullSecrets:\n  type: array\n  items:\n    type: string\n  description: Optionally specify an array of imagePullSecrets (evaluated as templates).\n\ndebug:\n  type: boolean\n  description: Set to true if you would like to see extra information on logs\n  example: false\n\n## An instance would be:\n# registry: docker.io\n# repository: bitnami/nginx\n# tag: 1.16.1-debian-10-r63\n# pullPolicy: IfNotPresent\n# debug: false\n```\n\n### Persistence\n\n```yaml\nenabled:\n  type: boolean\n  description: Whether enable persistence.\n  example: true\n\nstorageClass:\n  type: string\n  description: Ghost data Persistent Volume Storage Class, If set to \"-\", storageClassName: \"\" which disables dynamic provisioning.\n  example: \"-\"\n\naccessMode:\n  type: string\n  description: Access mode for the Persistent Volume Storage.\n  example: ReadWriteOnce\n\nsize:\n  type: string\n  description: Size the Persistent Volume Storage.\n  example: 8Gi\n\npath:\n  type: string\n  description: Path to be persisted.\n  example: /bitnami\n\n## An instance would be:\n# enabled: true\n# storageClass: \"-\"\n# accessMode: ReadWriteOnce\n# size: 8Gi\n# path: /bitnami\n```\n\n### ExistingSecret\n\n```yaml\nname:\n  type: string\n  description: Name of the existing secret.\n  example: mySecret\nkeyMapping:\n  description: Mapping between the expected key name and the name of the key in the existing secret.\n  type: object\n\n## An instance would be:\n# name: mySecret\n# keyMapping:\n#   password: myPasswordKey\n```\n\n#### Example of use\n\nWhen we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.\n\n```yaml\n# templates/secret.yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n    app: {{ include \"common.names.fullname\" . }}\ntype: Opaque\ndata:\n  password: {{ .Values.password | b64enc | quote }}\n\n# templates/dpl.yaml\n---\n...\n      env:\n        - name: PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: {{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.existingSecret \"context\" $) }}\n              key: {{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.existingSecret \"key\" \"password\") }}\n...\n\n# values.yaml\n---\nname: mySecret\nkeyMapping:\n  password: myPasswordKey\n```\n\n### ValidateValue\n\n#### NOTES.txt\n\n```console\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n\n{{ include \"common.validations.values.multiple.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n```\n\nIf we force those values to be empty we will see some alerts\n\n```console\n$ helm install test mychart --set path.to.value00=\"\",path.to.value01=\"\"\n    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:\n\n        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-00}\" | base64 -d)\n\n    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:\n\n        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-01}\" | base64 -d)\n```\n\n## Upgrading\n\n### To 1.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_affinities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn a soft nodeAffinity definition\n{{ include \"common.affinities.nodes.soft\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.soft\" -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - preference:\n      matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard nodeAffinity definition\n{{ include \"common.affinities.nodes.hard\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.hard\" -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  nodeSelectorTerms:\n    - matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n{{- end -}}\n\n{{/*\nReturn a nodeAffinity definition\n{{ include \"common.affinities.nodes\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.nodes.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.nodes.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nReturn a topologyKey definition\n{{ include \"common.affinities.topologyKey\" (dict \"topologyKey\" \"BAR\") -}}\n*/}}\n{{- define \"common.affinities.topologyKey\" -}}\n{{ .topologyKey | default \"kubernetes.io/hostname\" -}}\n{{- end -}}\n\n{{/*\nReturn a soft podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.soft\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"topologyKey\" \"BAR\" \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.soft\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - podAffinityTerm:\n      labelSelector:\n        matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 10 }}\n          {{- if not (empty $component) }}\n          {{ printf \"app.kubernetes.io/component: %s\" $component }}\n          {{- end }}\n          {{- range $key, $value := $extraMatchLabels }}\n          {{ $key }}: {{ $value | quote }}\n          {{- end }}\n      topologyKey: {{ include \"common.affinities.topologyKey\" (dict \"topologyKey\" .topologyKey) }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.hard\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"topologyKey\" \"BAR\" \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.hard\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  - labelSelector:\n      matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 8 }}\n        {{- if not (empty $component) }}\n        {{ printf \"app.kubernetes.io/component: %s\" $component }}\n        {{- end }}\n        {{- range $key, $value := $extraMatchLabels }}\n        {{ $key }}: {{ $value | quote }}\n        {{- end }}\n    topologyKey: {{ include \"common.affinities.topologyKey\" (dict \"topologyKey\" .topologyKey) }}\n{{- end -}}\n\n{{/*\nReturn a podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.pods\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.pods.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.pods.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_capabilities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the target Kubernetes version\n*/}}\n{{- define \"common.capabilities.kubeVersion\" -}}\n{{- if .Values.global }}\n    {{- if .Values.global.kubeVersion }}\n    {{- .Values.global.kubeVersion -}}\n    {{- else }}\n    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n    {{- end -}}\n{{- else }}\n{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for poddisruptionbudget.\n*/}}\n{{- define \"common.capabilities.policy.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"policy/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"common.capabilities.networkPolicy.apiVersion\" -}}\n{{- if semverCompare \"<1.7-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for cronjob.\n*/}}\n{{- define \"common.capabilities.cronjob.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"batch/v1beta1\" -}}\n{{- else -}}\n{{- print \"batch/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"common.capabilities.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"common.capabilities.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apps/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"common.capabilities.ingress.apiVersion\" -}}\n{{- if .Values.ingress -}}\n{{- if .Values.ingress.apiVersion -}}\n{{- .Values.ingress.apiVersion -}}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for RBAC resources.\n*/}}\n{{- define \"common.capabilities.rbac.apiVersion\" -}}\n{{- if semverCompare \"<1.17-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"rbac.authorization.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for CRDs.\n*/}}\n{{- define \"common.capabilities.crd.apiVersion\" -}}\n{{- if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiextensions.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiextensions.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for APIService.\n*/}}\n{{- define \"common.capabilities.apiService.apiVersion\" -}}\n{{- if semverCompare \"<1.10-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiregistration.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiregistration.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for Horizontal Pod Autoscaler.\n*/}}\n{{- define \"common.capabilities.hpa.apiVersion\" -}}\n{{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .context) -}}\n{{- if .beta2 -}}\n{{- print \"autoscaling/v2beta2\" -}}\n{{- else -}}\n{{- print \"autoscaling/v2beta1\" -}}\n{{- end -}}\n{{- else -}}\n{{- print \"autoscaling/v2\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the used Helm version is 3.3+.\nA way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional \"{}}\"  structure.\nThis check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a \"interface not found\" error.\n**To be removed when the catalog's minimun Helm version is 3.3**\n*/}}\n{{- define \"common.capabilities.supportsHelmVersion\" -}}\n{{- if regexMatch \"{(v[0-9])*[^}]*}}$\" (.Capabilities | toString ) }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_errors.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThrough error when upgrading using empty passwords values that must not be empty.\n\nUsage:\n{{- $validationError00 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validationError01 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $validationError00 $validationError01) \"context\" $) }}\n\nRequired password params:\n  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.\n  - context - Context - Required. Parent context.\n*/}}\n{{- define \"common.errors.upgrade.passwords.empty\" -}}\n  {{- $validationErrors := join \"\" .validationErrors -}}\n  {{- if and $validationErrors .context.Release.IsUpgrade -}}\n    {{- $errorString := \"\\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases\" -}}\n    {{- $errorString = print $errorString \"\\n%s\" -}}\n    {{- printf $errorString $validationErrors | fail -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_images.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn the proper image name\n{{ include \"common.images.image\" ( dict \"imageRoot\" .Values.path.to.the.image \"global\" $) }}\n*/}}\n{{- define \"common.images.image\" -}}\n{{- $registryName := .imageRoot.registry -}}\n{{- $repositoryName := .imageRoot.repository -}}\n{{- $separator := \":\" -}}\n{{- $termination := .imageRoot.tag | toString -}}\n{{- if .global }}\n    {{- if .global.imageRegistry }}\n     {{- $registryName = .global.imageRegistry -}}\n    {{- end -}}\n{{- end -}}\n{{- if .imageRoot.digest }}\n    {{- $separator = \"@\" -}}\n    {{- $termination = .imageRoot.digest | toString -}}\n{{- end -}}\n{{- printf \"%s/%s%s%s\" $registryName $repositoryName $separator $termination -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)\n{{ include \"common.images.pullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global) }}\n*/}}\n{{- define \"common.images.pullSecrets\" -}}\n  {{- $pullSecrets := list }}\n\n  {{- if .global }}\n    {{- range .global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names evaluating values as templates\n{{ include \"common.images.renderPullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $) }}\n*/}}\n{{- define \"common.images.renderPullSecrets\" -}}\n  {{- $pullSecrets := list }}\n  {{- $context := .context }}\n\n  {{- if $context.Values.global }}\n    {{- range $context.Values.global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_ingress.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nGenerate backend entry that is compatible with all Kubernetes API versions.\n\nUsage:\n{{ include \"common.ingress.backend\" (dict \"serviceName\" \"backendName\" \"servicePort\" \"backendPort\" \"context\" $) }}\n\nParams:\n  - serviceName - String. Name of an existing service backend\n  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.ingress.backend\" -}}\n{{- $apiVersion := (include \"common.capabilities.ingress.apiVersion\" .context) -}}\n{{- if or (eq $apiVersion \"extensions/v1beta1\") (eq $apiVersion \"networking.k8s.io/v1beta1\") -}}\nserviceName: {{ .serviceName }}\nservicePort: {{ .servicePort }}\n{{- else -}}\nservice:\n  name: {{ .serviceName }}\n  port:\n    {{- if typeIs \"string\" .servicePort }}\n    name: {{ .servicePort }}\n    {{- else if or (typeIs \"int\" .servicePort) (typeIs \"float64\" .servicePort) }}\n    number: {{ .servicePort | int }}\n    {{- end }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nPrint \"true\" if the API pathType field is supported\nUsage:\n{{ include \"common.ingress.supportsPathType\" . }}\n*/}}\n{{- define \"common.ingress.supportsPathType\" -}}\n{{- if (semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the ingressClassname field is supported\nUsage:\n{{ include \"common.ingress.supportsIngressClassname\" . }}\n*/}}\n{{- define \"common.ingress.supportsIngressClassname\" -}}\n{{- if semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if cert-manager required annotations for TLS signed\ncertificates are set in the Ingress annotations\nRef: https://cert-manager.io/docs/usage/ingress/#supported-annotations\nUsage:\n{{ include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.path.to.the.ingress.annotations ) }}\n*/}}\n{{- define \"common.ingress.certManagerRequest\" -}}\n{{ if or (hasKey .annotations \"cert-manager.io/cluster-issuer\") (hasKey .annotations \"cert-manager.io/issuer\") (hasKey .annotations \"kubernetes.io/tls-acme\") }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_labels.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nKubernetes standard labels\n*/}}\n{{- define \"common.labels.standard\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\nhelm.sh/chart: {{ include \"common.names.chart\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end -}}\n\n{{/*\nLabels to use on deploy.spec.selector.matchLabels and svc.spec.selector\n*/}}\n{{- define \"common.labels.matchLabels\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_names.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"common.names.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"common.names.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"common.names.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified dependency name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\nUsage:\n{{ include \"common.names.dependency.fullname\" (dict \"chartName\" \"dependency-chart-name\" \"chartValues\" .Values.dependency-chart \"context\" $) }}\n*/}}\n{{- define \"common.names.dependency.fullname\" -}}\n{{- if .chartValues.fullnameOverride -}}\n{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .chartName .chartValues.nameOverride -}}\n{{- if contains $name .context.Release.Name -}}\n{{- .context.Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .context.Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts.\n*/}}\n{{- define \"common.names.namespace\" -}}\n{{- if .Values.namespaceOverride -}}\n{{- .Values.namespaceOverride -}}\n{{- else -}}\n{{- .Release.Namespace -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a fully qualified app name adding the installation's namespace.\n*/}}\n{{- define \"common.names.fullname.namespace\" -}}\n{{- printf \"%s-%s\" (include \"common.names.fullname\" .) (include \"common.names.namespace\" .) | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_secrets.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nGenerate secret name.\n\nUsage:\n{{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $) }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.secrets.name\" -}}\n{{- $name := (include \"common.names.fullname\" .context) -}}\n\n{{- if .defaultNameSuffix -}}\n{{- $name = printf \"%s-%s\" $name .defaultNameSuffix | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- with .existingSecret -}}\n{{- if not (typeIs \"string\" .) -}}\n{{- with .name -}}\n{{- $name = . -}}\n{{- end -}}\n{{- else -}}\n{{- $name = . -}}\n{{- end -}}\n{{- end -}}\n\n{{- printf \"%s\" $name -}}\n{{- end -}}\n\n{{/*\nGenerate secret key.\n\nUsage:\n{{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\") }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - key - String - Required. Name of the key in the secret.\n*/}}\n{{- define \"common.secrets.key\" -}}\n{{- $key := .key -}}\n\n{{- if .existingSecret -}}\n  {{- if not (typeIs \"string\" .existingSecret) -}}\n    {{- if .existingSecret.keyMapping -}}\n      {{- $key = index .existingSecret.keyMapping $.key -}}\n    {{- end -}}\n  {{- end }}\n{{- end -}}\n\n{{- printf \"%s\" $key -}}\n{{- end -}}\n\n{{/*\nGenerate secret password or retrieve one if already created.\n\nUsage:\n{{ include \"common.secrets.passwords.manage\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - length - int - Optional - Length of the generated random password.\n  - strong - Boolean - Optional - Whether to add symbols to the generated random password.\n  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.\n  - context - Context - Required - Parent context.\n\nThe order in which this function returns a secret password:\n  1. Already existing 'Secret' resource\n     (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned)\n  2. Password provided via the values.yaml\n     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)\n  3. Randomly generated secret password\n     (A new random secret password with the length specified in the 'length' parameter will be generated and returned)\n\n*/}}\n{{- define \"common.secrets.passwords.manage\" -}}\n\n{{- $password := \"\" }}\n{{- $subchart := \"\" }}\n{{- $chartName := default \"\" .chartName }}\n{{- $passwordLength := default 10 .length }}\n{{- $providedPasswordKey := include \"common.utils.getKeyFromList\" (dict \"keys\" .providedValues \"context\" $.context) }}\n{{- $providedPasswordValue := include \"common.utils.getValueFromKey\" (dict \"key\" $providedPasswordKey \"context\" $.context) }}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data }}\n{{- if $secretData }}\n  {{- if hasKey $secretData .key }}\n    {{- $password = index $secretData .key | quote }}\n  {{- else }}\n    {{- printf \"\\nPASSWORDS ERROR: The secret \\\"%s\\\" does not contain the key \\\"%s\\\"\\n\" .secret .key | fail -}}\n  {{- end -}}\n{{- else if $providedPasswordValue }}\n  {{- $password = $providedPasswordValue | toString | b64enc | quote }}\n{{- else }}\n\n  {{- if .context.Values.enabled }}\n    {{- $subchart = $chartName }}\n  {{- end -}}\n\n  {{- $requiredPassword := dict \"valueKey\" $providedPasswordKey \"secret\" .secret \"field\" .key \"subchart\" $subchart \"context\" $.context -}}\n  {{- $requiredPasswordError := include \"common.validations.values.single.empty\" $requiredPassword -}}\n  {{- $passwordValidationErrors := list $requiredPasswordError -}}\n  {{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" $passwordValidationErrors \"context\" $.context) -}}\n\n  {{- if .strong }}\n    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join \"_\" }}\n    {{- $password = randAscii $passwordLength }}\n    {{- $password = regexReplaceAllLiteral \"\\\\W\" $password \"@\" | substr 5 $passwordLength }}\n    {{- $password = printf \"%s%s\" $subStr $password | toString | shuffle | b64enc | quote }}\n  {{- else }}\n    {{- $password = randAlphaNum $passwordLength | b64enc | quote }}\n  {{- end }}\n{{- end -}}\n{{- printf \"%s\" $password -}}\n{{- end -}}\n\n{{/*\nReuses the value from an existing secret, otherwise sets its value to a default value.\n\nUsage:\n{{ include \"common.secrets.lookup\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"defaultValue\" .Values.myValue \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - context - Context - Required - Parent context.\n\n*/}}\n{{- define \"common.secrets.lookup\" -}}\n{{- $value := \"\" -}}\n{{- $defaultValue := required \"\\n'common.secrets.lookup': Argument 'defaultValue' missing or empty\" .defaultValue -}}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data -}}\n{{- if and $secretData (hasKey $secretData .key) -}}\n  {{- $value = index $secretData .key -}}\n{{- else -}}\n  {{- $value = $defaultValue | toString | b64enc -}}\n{{- end -}}\n{{- printf \"%s\" $value -}}\n{{- end -}}\n\n{{/*\nReturns whether a previous generated secret already exists\n\nUsage:\n{{ include \"common.secrets.exists\" (dict \"secret\" \"secret-name\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.exists\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_storage.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn  the proper Storage Class\n{{ include \"common.storage.class\" ( dict \"persistence\" .Values.path.to.the.persistence \"global\" $) }}\n*/}}\n{{- define \"common.storage.class\" -}}\n\n{{- $storageClass := .persistence.storageClass -}}\n{{- if .global -}}\n    {{- if .global.storageClass -}}\n        {{- $storageClass = .global.storageClass -}}\n    {{- end -}}\n{{- end -}}\n\n{{- if $storageClass -}}\n  {{- if (eq \"-\" $storageClass) -}}\n      {{- printf \"storageClassName: \\\"\\\"\" -}}\n  {{- else }}\n      {{- printf \"storageClassName: %s\" $storageClass -}}\n  {{- end -}}\n{{- end -}}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_tplvalues.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nRenders a value that contains template.\nUsage:\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.path.to.the.Value \"context\" $) }}\n*/}}\n{{- define \"common.tplvalues.render\" -}}\n    {{- if typeIs \"string\" .value }}\n        {{- tpl .value .context }}\n    {{- else }}\n        {{- tpl (.value | toYaml) .context }}\n    {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_utils.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nPrint instructions to get a secret value.\nUsage:\n{{ include \"common.utils.secret.getvalue\" (dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.secret.getvalue\" -}}\n{{- $varname := include \"common.utils.fieldToEnvVar\" . -}}\nexport {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath=\"{.data.{{ .field }}}\" | base64 -d)\n{{- end -}}\n\n{{/*\nBuild env var name given a field\nUsage:\n{{ include \"common.utils.fieldToEnvVar\" dict \"field\" \"my-password\" }}\n*/}}\n{{- define \"common.utils.fieldToEnvVar\" -}}\n  {{- $fieldNameSplit := splitList \"-\" .field -}}\n  {{- $upperCaseFieldNameSplit := list -}}\n\n  {{- range $fieldNameSplit -}}\n    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}\n  {{- end -}}\n\n  {{ join \"_\" $upperCaseFieldNameSplit }}\n{{- end -}}\n\n{{/*\nGets a value from .Values given\nUsage:\n{{ include \"common.utils.getValueFromKey\" (dict \"key\" \"path.to.key\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.getValueFromKey\" -}}\n{{- $splitKey := splitList \".\" .key -}}\n{{- $value := \"\" -}}\n{{- $latestObj := $.context.Values -}}\n{{- range $splitKey -}}\n  {{- if not $latestObj -}}\n    {{- printf \"please review the entire path of '%s' exists in values\" $.key | fail -}}\n  {{- end -}}\n  {{- $value = ( index $latestObj . ) -}}\n  {{- $latestObj = $value -}}\n{{- end -}}\n{{- printf \"%v\" (default \"\" $value) -}} \n{{- end -}}\n\n{{/*\nReturns first .Values key with a defined value or first of the list if all non-defined\nUsage:\n{{ include \"common.utils.getKeyFromList\" (dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $) }}\n*/}}\n{{- define \"common.utils.getKeyFromList\" -}}\n{{- $key := first .keys -}}\n{{- $reverseKeys := reverse .keys }}\n{{- range $reverseKeys }}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" . \"context\" $.context ) }}\n  {{- if $value -}}\n    {{- $key = . }}\n  {{- end -}}\n{{- end -}}\n{{- printf \"%s\" $key -}} \n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/_warnings.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nWarning about using rolling tag.\nUsage:\n{{ include \"common.warnings.rollingTag\" .Values.path.to.the.imageRoot }}\n*/}}\n{{- define \"common.warnings.rollingTag\" -}}\n\n{{- if and (contains \"bitnami/\" .repository) (not (.tag | toString | regexFind \"-r\\\\d+$|sha256:\")) }}\nWARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.\n+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/\n{{- end }}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_cassandra.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Cassandra required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.cassandra.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: \"cassandra-passwords-secret\"\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.cassandra.passwords\" -}}\n  {{- $existingSecret := include \"common.cassandra.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.cassandra.values.enabled\" . -}}\n  {{- $dbUserPrefix := include \"common.cassandra.values.key.dbUser\" . -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $dbUserPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"cassandra-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.cassandra.values.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.dbUser.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled cassandra.\n\nUsage:\n{{ include \"common.cassandra.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.cassandra.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.cassandra.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key dbUser\n\nUsage:\n{{ include \"common.cassandra.values.key.dbUser\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.key.dbUser\" -}}\n  {{- if .subchart -}}\n    cassandra.dbUser\n  {{- else -}}\n    dbUser\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_mariadb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MariaDB required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mariadb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mariadb.passwords\" -}}\n  {{- $existingSecret := include \"common.mariadb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mariadb.values.enabled\" . -}}\n  {{- $architecture := include \"common.mariadb.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mariadb.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mariadb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mariadb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mariadb-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mariadb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mariadb.\n\nUsage:\n{{ include \"common.mariadb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mariadb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mariadb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mariadb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mariadb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mariadb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_mongodb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MongoDB&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mongodb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: \"mongodb-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mongodb.passwords\" -}}\n  {{- $existingSecret := include \"common.mongodb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mongodb.values.enabled\" . -}}\n  {{- $authPrefix := include \"common.mongodb.values.key.auth\" . -}}\n  {{- $architecture := include \"common.mongodb.values.architecture\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyDatabase := printf \"%s.database\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicaSetKey := printf \"%s.replicaSetKey\" $authPrefix -}}\n  {{- $valueKeyAuthEnabled := printf \"%s.enabled\" $authPrefix -}}\n\n  {{- $authEnabled := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyAuthEnabled \"context\" .context) -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") (eq $authEnabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mongodb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- $valueDatabase := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyDatabase \"context\" .context) }}\n    {{- if and $valueUsername $valueDatabase -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mongodb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replicaset\") -}}\n        {{- $requiredReplicaSetKey := dict \"valueKey\" $valueKeyReplicaSetKey \"secret\" .secret \"field\" \"mongodb-replica-set-key\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mongodb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mongodb.\n\nUsage:\n{{ include \"common.mongodb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mongodb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mongodb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mongodb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mongodb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mongodb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_mysql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MySQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mysql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MySQL values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mysql.passwords\" -}}\n  {{- $existingSecret := include \"common.mysql.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mysql.values.enabled\" . -}}\n  {{- $architecture := include \"common.mysql.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mysql.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mysql-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mysql-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mysql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mysql.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mysql.\n\nUsage:\n{{ include \"common.mysql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mysql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mysql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mysql.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mysql.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mysql.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_postgresql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate PostgreSQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.postgresql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: \"postgresql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.postgresql.passwords\" -}}\n  {{- $existingSecret := include \"common.postgresql.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.postgresql.values.enabled\" . -}}\n  {{- $valueKeyPostgresqlPassword := include \"common.postgresql.values.key.postgressPassword\" . -}}\n  {{- $valueKeyPostgresqlReplicationEnabled := include \"common.postgresql.values.key.replicationPassword\" . -}}\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n    {{- $requiredPostgresqlPassword := dict \"valueKey\" $valueKeyPostgresqlPassword \"secret\" .secret \"field\" \"postgresql-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}\n\n    {{- $enabledReplication := include \"common.postgresql.values.enabled.replication\" . -}}\n    {{- if (eq $enabledReplication \"true\") -}}\n        {{- $requiredPostgresqlReplicationPassword := dict \"valueKey\" $valueKeyPostgresqlReplicationEnabled \"secret\" .secret \"field\" \"postgresql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to decide whether evaluate global values.\n\nUsage:\n{{ include \"common.postgresql.values.use.global\" (dict \"key\" \"key-of-global\" \"context\" $) }}\nParams:\n  - key - String - Required. Field to be evaluated within global, e.g: \"existingSecret\"\n*/}}\n{{- define \"common.postgresql.values.use.global\" -}}\n  {{- if .context.Values.global -}}\n    {{- if .context.Values.global.postgresql -}}\n      {{- index .context.Values.global.postgresql .key | quote -}}\n    {{- end -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.postgresql.values.existingSecret\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.existingSecret\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"existingSecret\" \"context\" .context) -}}\n\n  {{- if .subchart -}}\n    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}\n  {{- else -}}\n    {{- default (.context.Values.existingSecret | quote) $globalValue -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled postgresql.\n\nUsage:\n{{ include \"common.postgresql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key postgressPassword.\n\nUsage:\n{{ include \"common.postgresql.values.key.postgressPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.postgressPassword\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"postgresqlUsername\" \"context\" .context) -}}\n\n  {{- if not $globalValue -}}\n    {{- if .subchart -}}\n      postgresql.postgresqlPassword\n    {{- else -}}\n      postgresqlPassword\n    {{- end -}}\n  {{- else -}}\n    global.postgresql.postgresqlPassword\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled.replication.\n\nUsage:\n{{ include \"common.postgresql.values.enabled.replication\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.enabled.replication\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.replication.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" .context.Values.replication.enabled -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key replication.password.\n\nUsage:\n{{ include \"common.postgresql.values.key.replicationPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.replicationPassword\" -}}\n  {{- if .subchart -}}\n    postgresql.replication.password\n  {{- else -}}\n    replication.password\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_redis.tpl",
    "content": "\n{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Redis&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.redis.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where redis values are stored, e.g: \"redis-passwords-secret\"\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.redis.passwords\" -}}\n  {{- $enabled := include \"common.redis.values.enabled\" . -}}\n  {{- $valueKeyPrefix := include \"common.redis.values.keys.prefix\" . -}}\n  {{- $standarizedVersion := include \"common.redis.values.standarized.version\" . }}\n\n  {{- $existingSecret := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.existingSecret\") (printf \"%s%s\" $valueKeyPrefix \"existingSecret\") (eq $standarizedVersion \"true\") }}\n  {{- $existingSecretValue := include \"common.utils.getValueFromKey\" (dict \"key\" $existingSecret \"context\" .context) }}\n\n  {{- $valueKeyRedisPassword := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.password\") (printf \"%s%s\" $valueKeyPrefix \"password\") (eq $standarizedVersion \"true\") }}\n  {{- $valueKeyRedisUseAuth := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.enabled\") (printf \"%s%s\" $valueKeyPrefix \"usePassword\") (eq $standarizedVersion \"true\") }}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $useAuth := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyRedisUseAuth \"context\" .context) -}}\n    {{- if eq $useAuth \"true\" -}}\n      {{- $requiredRedisPassword := dict \"valueKey\" $valueKeyRedisPassword \"secret\" .secret \"field\" \"redis-password\" -}}\n      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled redis.\n\nUsage:\n{{ include \"common.redis.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.redis.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right prefix path for the values\n\nUsage:\n{{ include \"common.redis.values.key.prefix\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.redis.values.keys.prefix\" -}}\n  {{- if .subchart -}}redis.{{- else -}}{{- end -}}\n{{- end -}}\n\n{{/*\nChecks whether the redis chart's includes the standarizations (version >= 14)\n\nUsage:\n{{ include \"common.redis.values.standarized.version\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.standarized.version\" -}}\n\n  {{- $standarizedAuth := printf \"%s%s\" (include \"common.redis.values.keys.prefix\" .) \"auth\" -}}\n  {{- $standarizedAuthValues := include \"common.utils.getValueFromKey\" (dict \"key\" $standarizedAuth \"context\" .context) }}\n\n  {{- if $standarizedAuthValues -}}\n    {{- true -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/templates/validations/_validations.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate values must not be empty.\n\nUsage:\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.validations.values.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n*/}}\n{{- define \"common.validations.values.multiple.empty\" -}}\n  {{- range .required -}}\n    {{- include \"common.validations.values.single.empty\" (dict \"valueKey\" .valueKey \"secret\" .secret \"field\" .field \"context\" $.context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nValidate a value must not be empty.\n\nUsage:\n{{ include \"common.validations.value.empty\" (dict \"valueKey\" \"mariadb.password\" \"secret\" \"secretName\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n  - subchart - String - Optional - Name of the subchart that the validated password is part of.\n*/}}\n{{- define \"common.validations.values.single.empty\" -}}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" .valueKey \"context\" .context) }}\n  {{- $subchart := ternary \"\" (printf \"%s.\" .subchart) (empty .subchart) }}\n\n  {{- if not $value -}}\n    {{- $varname := \"my-value\" -}}\n    {{- $getCurrentValue := \"\" -}}\n    {{- if and .secret .field -}}\n      {{- $varname = include \"common.utils.fieldToEnvVar\" . -}}\n      {{- $getCurrentValue = printf \" To get the current value:\\n\\n        %s\\n\" (include \"common.utils.secret.getvalue\" .) -}}\n    {{- end -}}\n    {{- printf \"\\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s\" .valueKey $subchart .valueKey $varname $getCurrentValue -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/charts/common/values.yaml",
    "content": "## bitnami/common\n## It is required by CI/CD tools and processes.\n## @skip exampleValue\n##\nexampleValue: common-chart\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/NOTES.txt",
    "content": "CHART NAME: {{ .Chart.Name }}\nCHART VERSION: {{ .Chart.Version }}\nAPP VERSION: {{ .Chart.AppVersion }}\n\n{{- $servicePort := or (.Values.service.portEnabled) (not .Values.auth.tls.enabled) | ternary .Values.service.ports.amqp .Values.service.ports.amqpTls -}}\n\n** Please be patient while the chart is being deployed **\n\n{{- if .Values.diagnosticMode.enabled }}\nThe chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:\n\n  command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 4 }}\n  args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 4 }}\n\nGet the list of pods by executing:\n\n  kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}\n\nAccess the pod you want to debug by executing\n\n  kubectl exec --namespace {{ .Release.Namespace }} -ti <NAME OF THE POD> -- bash\n\nIn order to replicate the container startup scripts execute this command:\n\n    /opt/bitnami/scripts/rabbitmq/entrypoint.sh /opt/bitnami/scripts/rabbitmq/run.sh\n\n{{- else }}\n\nCredentials:\n\n{{- if not .Values.loadDefinition.enabled }}\n    echo \"Username      : {{ .Values.auth.username }}\"\n    echo \"Password      : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ include \"rabbitmq.secretPasswordName\" . }} -o jsonpath=\"{.data.rabbitmq-password}\" | base64 -d)\"\n{{- end }}\n    echo \"ErLang Cookie : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ include \"rabbitmq.secretErlangName\" . }} -o jsonpath=\"{.data.rabbitmq-erlang-cookie}\" | base64 -d)\"\n\nNote that the credentials are saved in persistent volume claims and will not be changed upon upgrade or reinstallation unless the persistent volume claim has been deleted. If this is not the first installation of this chart, the credentials may not be valid.\nThis is applicable when no passwords are set and therefore the random password is autogenerated. In case of using a fixed password, you should specify it when upgrading.\nMore information about the credentials may be found at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases.\n\nRabbitMQ can be accessed within the cluster on port {{ $servicePort }} at {{ include \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\n\nTo access for outside the cluster, perform the following steps:\n\n{{- if .Values.ingress.enabled }}\n{{- if contains \"NodePort\" .Values.service.type }}\n\nTo Access the RabbitMQ AMQP port:\n\n1. Obtain the NodePort IP and ports:\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT_AMQP=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[?(@.name=='amqp')].nodePort}\" services {{ include \"common.names.fullname\" . }})\n    echo \"URL : amqp://$NODE_IP:$NODE_PORT_AMQP/\"\n\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n\nTo Access the RabbitMQ AMQP port:\n\n1. Obtain the LoadBalancer IP:\n\nNOTE: It may take a few minutes for the LoadBalancer IP to be available.\n      Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include \"common.names.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"common.names.fullname\" . }} --template \"{{ \"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}\" }}\")\n    echo \"URL : amqp://$SERVICE_IP:{{ $servicePort }}/\"\n\n{{- else if contains \"ClusterIP\"  .Values.service.type }}\n\nTo Access the RabbitMQ AMQP port:\n\n1. Create a port-forward to the AMQP port:\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include \"common.names.fullname\" . }} {{ $servicePort }}:{{ $servicePort }} &\n    echo \"URL : amqp://127.0.0.1:{{ $servicePort }}/\"\n\n{{- end }}\n\n2. Access RabbitMQ using using the obtained URL.\n\nTo Access the RabbitMQ Management interface:\n\n1. Get the RabbitMQ Management URL and associate its hostname to your cluster external IP:\n\n   export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters\n   echo \"RabbitMQ Management: http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.hostname }}/\"\n   echo \"$CLUSTER_IP  {{ .Values.ingress.hostname }}\" | sudo tee -a /etc/hosts\n\n2. Open a browser and access RabbitMQ Management using the obtained URL.\n\n{{- else }}\n{{- if contains \"NodePort\" .Values.service.type }}\n\nObtain the NodePort IP and ports:\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT_AMQP=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[?(@.name=='amqp')].nodePort}\" services {{ include \"common.names.fullname\" . }})\n    export NODE_PORT_STATS=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[?(@.name=='http-stats')].nodePort}\" services {{ include \"common.names.fullname\" . }})\n\nTo Access the RabbitMQ AMQP port:\n\n    echo \"URL : amqp://$NODE_IP:$NODE_PORT_AMQP/\"\n\nTo Access the RabbitMQ Management interface:\n\n    echo \"URL : http://$NODE_IP:$NODE_PORT_STATS/\"\n\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n\nObtain the LoadBalancer IP:\n\nNOTE: It may take a few minutes for the LoadBalancer IP to be available.\n      Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include \"common.names.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"common.names.fullname\" . }} --template \"{{ \"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}\" }}\")\n\nTo Access the RabbitMQ AMQP port:\n\n    echo \"URL : amqp://$SERVICE_IP:{{ $servicePort }}/\"\n\nTo Access the RabbitMQ Management interface:\n\n    echo \"URL : http://$SERVICE_IP:{{ .Values.service.ports.manager }}/\"\n\n{{- else if contains \"ClusterIP\"  .Values.service.type }}\n\nTo Access the RabbitMQ AMQP port:\n\n    echo \"URL : amqp://127.0.0.1:{{ $servicePort }}/\"\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include \"common.names.fullname\" . }} {{ $servicePort }}:{{ $servicePort }}\n\nTo Access the RabbitMQ Management interface:\n\n    echo \"URL : http://127.0.0.1:{{ .Values.service.ports.manager }}/\"\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include \"common.names.fullname\" . }} {{ .Values.service.ports.manager }}:{{ .Values.service.ports.manager }}\n\n{{- end }}\n{{- end }}\n\n{{- if .Values.metrics.enabled }}\n\nTo access the RabbitMQ Prometheus metrics, get the RabbitMQ Prometheus URL by running:\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include \"common.names.fullname\" . }} {{ .Values.service.ports.metrics }}:{{ .Values.service.ports.metrics }} &\n    echo \"Prometheus Metrics URL: http://127.0.0.1:{{ .Values.service.ports.metrics }}/metrics\"\n\nThen, open the obtained URL in a browser.\n\n{{- end }}\n\n{{- include \"common.warnings.rollingTag\" .Values.image }}\n{{- include \"common.warnings.rollingTag\" .Values.volumePermissions.image }}\n\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the proper RabbitMQ image name\n*/}}\n{{- define \"rabbitmq.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the init container volume-permissions image)\n*/}}\n{{- define \"rabbitmq.volumePermissions.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.volumePermissions.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"rabbitmq.imagePullSecrets\" -}}\n{{ include \"common.images.pullSecrets\" (dict \"images\" (list .Values.image .Values.volumePermissions.image) \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\n Create the name of the service account to use\n */}}\n{{- define \"rabbitmq.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create -}}\n    {{ default (include \"common.names.fullname\" .) .Values.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the password secret.\n*/}}\n{{- define \"rabbitmq.secretPasswordName\" -}}\n    {{- if .Values.auth.existingPasswordSecret -}}\n        {{- printf \"%s\" (tpl .Values.auth.existingPasswordSecret $) -}}\n    {{- else -}}\n        {{- printf \"%s\" (include \"common.names.fullname\" .) -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nGet the erlang secret.\n*/}}\n{{- define \"rabbitmq.secretErlangName\" -}}\n    {{- if .Values.auth.existingErlangSecret -}}\n        {{- printf \"%s\" (tpl .Values.auth.existingErlangSecret $) -}}\n    {{- else -}}\n        {{- printf \"%s\" (include \"common.names.fullname\" .) -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nGet the TLS secret.\n*/}}\n{{- define \"rabbitmq.tlsSecretName\" -}}\n    {{- if .Values.auth.tls.existingSecret -}}\n        {{- printf \"%s\" (tpl .Values.auth.tls.existingSecret $) -}}\n    {{- else -}}\n        {{- printf \"%s-certs\" (include \"common.names.fullname\" .) -}}\n    {{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a TLS credentials secret object should be created\n*/}}\n{{- define \"rabbitmq.createTlsSecret\" -}}\n{{- if and .Values.auth.tls.enabled (not .Values.auth.tls.existingSecret) }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the proper RabbitMQ plugin list\n*/}}\n{{- define \"rabbitmq.plugins\" -}}\n{{- $plugins := .Values.plugins -}}\n{{- if .Values.extraPlugins -}}\n{{- $plugins = printf \"%s %s\" $plugins .Values.extraPlugins -}}\n{{- end -}}\n{{- if .Values.metrics.enabled -}}\n{{- $plugins = printf \"%s %s\" $plugins .Values.metrics.plugins -}}\n{{- end -}}\n{{- printf \"%s\" $plugins | replace \" \" \", \" -}}\n{{- end -}}\n\n{{/*\nReturn the number of bytes given a value\nfollowing a base 2 o base 10 number system.\nUsage:\n{{ include \"rabbitmq.toBytes\" .Values.path.to.the.Value }}\n*/}}\n{{- define \"rabbitmq.toBytes\" -}}\n{{- $value := int (regexReplaceAll \"([0-9]+).*\" . \"${1}\") }}\n{{- $unit := regexReplaceAll \"[0-9]+(.*)\" . \"${1}\" }}\n{{- if eq $unit \"Ki\" }}\n    {{- mul $value 1024 }}\n{{- else if eq $unit \"Mi\" }}\n    {{- mul $value 1024 1024 }}\n{{- else if eq $unit \"Gi\" }}\n    {{- mul $value 1024 1024 1024 }}\n{{- else if eq $unit \"Ti\" }}\n    {{- mul $value 1024 1024 1024 1024 }}\n{{- else if eq $unit \"Pi\" }}\n    {{- mul $value 1024 1024 1024 1024 1024 }}\n{{- else if eq $unit \"Ei\" }}\n    {{- mul $value 1024 1024 1024 1024 1024 1024 }}\n{{- else if eq $unit \"K\" }}\n    {{- mul $value 1000 }}\n{{- else if eq $unit \"M\" }}\n    {{- mul $value 1000 1000 }}\n{{- else if eq $unit \"G\" }}\n    {{- mul $value 1000 1000 1000 }}\n{{- else if eq $unit \"T\" }}\n    {{- mul $value 1000 1000 1000 1000 }}\n{{- else if eq $unit \"P\" }}\n    {{- mul $value 1000 1000 1000 1000 1000 }}\n{{- else if eq $unit \"E\" }}\n    {{- mul $value 1000 1000 1000 1000 1000 1000 }}\n{{- end }}\n{{- end -}}\n\n{{/*\nCompile all warnings into a single message, and call fail.\n*/}}\n{{- define \"rabbitmq.validateValues\" -}}\n{{- $messages := list -}}\n{{- $messages := append $messages (include \"rabbitmq.validateValues.ldap\" .) -}}\n{{- $messages := append $messages (include \"rabbitmq.validateValues.memoryHighWatermark\" .) -}}\n{{- $messages := append $messages (include \"rabbitmq.validateValues.ingress.tls\" .) -}}\n{{- $messages := append $messages (include \"rabbitmq.validateValues.auth.tls\" .) -}}\n{{- $messages := without $messages \"\" -}}\n{{- $message := join \"\\n\" $messages -}}\n\n{{- if $message -}}\n{{-   printf \"\\nVALUES VALIDATION:\\n%s\" $message | fail -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of rabbitmq - LDAP support\n*/}}\n{{- define \"rabbitmq.validateValues.ldap\" -}}\n{{- if .Values.ldap.enabled }}\n{{- $serversListLength := len .Values.ldap.servers }}\n{{- $userDnPattern := coalesce .Values.ldap.user_dn_pattern .Values.ldap.userDnPattern }}\n{{- if or (and (not (gt $serversListLength 0)) (empty .Values.ldap.uri)) (and (not $userDnPattern) (not .Values.ldap.basedn)) }}\nrabbitmq: LDAP\n    Invalid LDAP configuration. When enabling LDAP support, the parameters \"ldap.servers\" or \"ldap.uri\" are mandatory\n    to configure the connection and \"ldap.userDnPattern\" or \"ldap.basedn\" are necessary to lookup the users. Please provide them:\n    $ helm install {{ .Release.Name }} my-repo/rabbitmq \\\n      --set ldap.enabled=true \\\n      --set ldap.servers[0]=my-ldap-server\" \\\n      --set ldap.port=\"389\" \\\n      --set ldap.userDnPattern=\"cn=${username},dc=example,dc=org\"\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of rabbitmq - Memory high watermark\n*/}}\n{{- define \"rabbitmq.validateValues.memoryHighWatermark\" -}}\n{{- if and (not (eq .Values.memoryHighWatermark.type \"absolute\")) (not (eq .Values.memoryHighWatermark.type \"relative\")) }}\nrabbitmq: memoryHighWatermark.type\n    Invalid Memory high watermark type. Valid values are \"absolute\" and\n    \"relative\". Please set a valid mode (--set memoryHighWatermark.type=\"xxxx\")\n{{- else if and .Values.memoryHighWatermark.enabled (not .Values.resources.limits.memory) (eq .Values.memoryHighWatermark.type \"relative\") }}\nrabbitmq: memoryHighWatermark\n    You enabled configuring memory high watermark using a relative limit. However,\n    no memory limits were defined at POD level. Define your POD limits as shown below:\n\n    $ helm install {{ .Release.Name }} my-repo/rabbitmq \\\n      --set memoryHighWatermark.enabled=true \\\n      --set memoryHighWatermark.type=\"relative\" \\\n      --set memoryHighWatermark.value=\"0.4\" \\\n      --set resources.limits.memory=\"2Gi\"\n\n    Altenatively, user an absolute value for the memory memory high watermark :\n\n    $ helm install {{ .Release.Name }} my-repo/rabbitmq \\\n      --set memoryHighWatermark.enabled=true \\\n      --set memoryHighWatermark.type=\"absolute\" \\\n      --set memoryHighWatermark.value=\"512MB\"\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of rabbitmq - TLS configuration for Ingress\n*/}}\n{{- define \"rabbitmq.validateValues.ingress.tls\" -}}\n{{- if and .Values.ingress.enabled .Values.ingress.tls (not (include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.ingress.annotations ))) (not .Values.ingress.selfSigned) (empty .Values.ingress.extraTls) }}\nrabbitmq: ingress.tls\n    You enabled the TLS configuration for the default ingress hostname but\n    you did not enable any of the available mechanisms to create the TLS secret\n    to be used by the Ingress Controller.\n    Please use any of these alternatives:\n      - Use the `ingress.extraTls` and `ingress.secrets` parameters to provide your custom TLS certificates.\n      - Rely on cert-manager to create it by setting the corresponding annotations\n      - Rely on Helm to create self-signed certificates by setting `ingress.selfSigned=true`\n{{- end -}}\n{{- end -}}\n\n{{/*\nValidate values of RabbitMQ - Auth TLS enabled\n*/}}\n{{- define \"rabbitmq.validateValues.auth.tls\" -}}\n{{- if and .Values.auth.tls.enabled (not .Values.auth.tls.autoGenerated) (not .Values.auth.tls.existingSecret) (not .Values.auth.tls.caCertificate) (not .Values.auth.tls.serverCertificate) (not .Values.auth.tls.serverKey) }}\nrabbitmq: auth.tls\n    You enabled TLS for RabbitMQ but you did not enable any of the available mechanisms to create the TLS secret.\n    Please use any of these alternatives:\n      - Provide an existing secret containing the TLS certificates using `auth.tls.existingSecret`\n      - Provide the plain text certificates using `auth.tls.caCertificate`, `auth.tls.serverCertificate` and `auth.tls.serverKey`.\n      - Enable auto-generated certificates using `auth.tls.autoGenerated`.\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the initialization scripts volume name.\n*/}}\n{{- define \"rabbitmq.initScripts\" -}}\n{{- printf \"%s-init-scripts\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/config-secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ printf \"%s-config\" (include \"common.names.fullname\" .) }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  rabbitmq.conf: |-\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.configuration \"context\" $) | b64enc | nindent 4 }}\n  {{- if .Values.advancedConfiguration }}\n  advanced.config: |-\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.advancedConfiguration \"context\" $) | b64enc | nindent 4 }}\n  {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/extra-list.yaml",
    "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled }}\napiVersion: {{ include \"common.capabilities.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.ingress.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.ingress.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  {{- if and .Values.ingress.ingressClassName (eq \"true\" (include \"common.ingress.supportsIngressClassname\" .)) }}\n  ingressClassName: {{ .Values.ingress.ingressClassName | quote }}\n  {{- end }}\n  rules:\n    {{- if .Values.ingress.hostname }}\n    - host: {{ include \"common.tplvalues.render\" ( dict \"value\" .Values.ingress.hostname \"context\" $ ) }}\n      http:\n        paths:\n          {{- if .Values.ingress.extraPaths }}\n          {{- toYaml .Values.ingress.extraPaths | nindent 10 }}\n          {{- end }}\n          - path: {{ .Values.ingress.path }}\n            {{- if eq \"true\" (include \"common.ingress.supportsPathType\" .) }}\n            pathType: {{ .Values.ingress.pathType }}\n            {{- end }}\n            backend: {{- include \"common.ingress.backend\" (dict \"serviceName\" (include \"common.names.fullname\" .) \"servicePort\" .Values.service.portNames.manager \"context\" $)  | nindent 14 }}\n    {{- end }}\n    {{- range .Values.ingress.extraHosts }}\n    - host: {{ include \"common.tplvalues.render\" ( dict \"value\" .name \"context\" $ ) }}\n      http:\n        paths:\n          - path: {{ default \"/\" .path }}\n            {{- if eq \"true\" (include \"common.ingress.supportsPathType\" $) }}\n            pathType: {{ default \"ImplementationSpecific\" .pathType }}\n            {{- end }}\n            backend: {{- include \"common.ingress.backend\" (dict \"serviceName\" (include \"common.names.fullname\" $) \"servicePort\" $.Values.service.portNames.manager \"context\" $) | nindent 14 }}\n    {{- end }}\n    {{- if .Values.ingress.extraRules }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.ingress.extraRules \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if or (and .Values.ingress.tls (or (include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.ingress.annotations )) .Values.ingress.selfSigned)) .Values.ingress.extraTls }}\n  tls:\n    {{- if and .Values.ingress.tls (or (include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.ingress.annotations )) .Values.ingress.selfSigned) }}\n    - hosts:\n        - {{ .Values.ingress.hostname | quote }}\n      {{- if .Values.ingress.existingSecret }}\n      secretName: {{ .Values.ingress.existingSecret }}\n      {{- else }}\n      secretName: {{ printf \"%s-tls\" .Values.ingress.hostname | trunc 63 | trimSuffix \"-\" }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.ingress.extraTls }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.ingress.extraTls \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/init-configmap.yaml",
    "content": "{{- if .Values.initScripts }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name:  {{ printf \"%s-init-scripts\" (include \"common.names.fullname\" .) }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n{{- include \"common.tplvalues.render\" ( dict \"value\" .Values.initScripts \"context\" $ ) | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\nkind: NetworkPolicy\napiVersion: {{ include \"common.capabilities.networkPolicy.apiVersion\" . }}\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  podSelector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n  ingress:\n    # Allow inbound connections\n    - ports:\n        - port: {{ .Values.service.ports.epmd }}  # EPMD\n        - port: {{ .Values.service.ports.amqp }}\n        - port: {{ .Values.service.ports.amqpTls }}\n        - port: {{ .Values.service.ports.dist }}\n        - port: {{ .Values.service.ports.manager }}\n      {{- if not .Values.networkPolicy.allowExternal }}\n      from:\n        - podSelector:\n            matchLabels:\n              {{ printf \"%s-client\" (include \"common.names.fullname\" .) }}: \"true\"\n        - podSelector:\n            matchLabels:\n              {{- include \"common.labels.matchLabels\" . | nindent 14 }}\n        {{- if .Values.networkPolicy.additionalRules }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.networkPolicy.additionalRules \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    # Allow prometheus scrapes\n    - ports:\n        - port: {{ .Values.service.ports.metrics }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/pdb.yaml",
    "content": "{{- if .Values.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.pdb.minAvailable }}\n  minAvailable: {{ .Values.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{ include \"common.labels.matchLabels\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/prometheusrule.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ default (include \"common.names.namespace\" .) .Values.metrics.prometheusRule.namespace | quote}}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.metrics.prometheusRule.additionalLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.prometheusRule.additionalLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  groups:\n  {{- with .Values.metrics.prometheusRule.rules }}\n    - name: {{ template \"common.names.name\" $ }}\n      rules: {{- include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/role.yaml",
    "content": "{{- if .Values.rbac.create }}\nkind: Role\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nmetadata:\n  name: {{ printf \"%s-endpoint-reader\" (include \"common.names.fullname\" .) }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"endpoints\"]\n    verbs: [\"get\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\"]\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/rolebinding.yaml",
    "content": "{{- if .Values.rbac.create }}\nkind: RoleBinding\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nmetadata:\n  name: {{ printf \"%s-endpoint-reader\" (include \"common.names.fullname\" .) }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"rabbitmq.serviceAccountName\" . }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ printf \"%s-endpoint-reader\" (include \"common.names.fullname\" .) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/secrets.yaml",
    "content": "{{- if or (not .Values.auth.existingErlangSecret) (not .Values.auth.existingPasswordSecret) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  {{- if (not .Values.auth.existingPasswordSecret ) }}\n  rabbitmq-password: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"common.names.fullname\" .) \"key\" \"rabbitmq-password\" \"length\" 16 \"providedValues\" (list \"auth.password\") \"context\" $) }}\n  {{ end }}\n  {{- if (not .Values.auth.existingErlangSecret ) }}\n  rabbitmq-erlang-cookie: {{ include \"common.secrets.passwords.manage\" (dict \"secret\" (include \"common.names.fullname\" .) \"key\" \"rabbitmq-erlang-cookie\" \"length\" 32 \"providedValues\" (list \"auth.erlangCookie\") \"context\" $) }}\n  {{ end }}\n{{- end }}\n{{- range $key, $value := .Values.extraSecrets }}\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ ternary (printf \"%s-%s\" $.Release.Name $key) $key $.Values.extraSecretsPrependReleaseName }}\n  namespace: {{ include \"common.names.namespace\" $ | quote }}\n  labels: {{- include \"common.labels.standard\" $ | nindent 4 }}\n    {{- if $.Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $.Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if $.Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" $.Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\nstringData: {{- include \"common.tplvalues.render\" (dict \"value\" $value \"context\" $) | nindent 2 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"rabbitmq.serviceAccountName\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.serviceAccount.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.serviceAccount.annotations \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nautomountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}\nsecrets:\n  - name: {{ include \"common.names.fullname\" . }}\n{{- end }}\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/servicemonitor.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ default (include \"common.names.namespace\" .) .Values.metrics.serviceMonitor.namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.serviceMonitor.labels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.labels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.metrics.serviceMonitor.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }}\n  endpoints:\n    - port: metrics\n      {{- if .Values.metrics.serviceMonitor.path }}\n      path: {{ .Values.metrics.serviceMonitor.path }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.honorLabels }}\n      honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.relabelings }}\n      relabelings: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.relabelings \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.metricRelabelings }}\n      metricRelabelings: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.metricRelabelings \"context\" $) | nindent 8 }}\n      {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ include \"common.names.namespace\" . | quote }}\n  {{- if .Values.metrics.serviceMonitor.podTargetLabels }}\n  podTargetLabels: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.podTargetLabels \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if .Values.metrics.serviceMonitor.targetLabels }}\n  targetLabels: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.serviceMonitor.targetLabels \"context\" $) | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      {{- if .Values.metrics.serviceMonitor.selector }}\n      {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.selector \"context\" $) | nindent 6 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/statefulset.yaml",
    "content": "apiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.statefulsetLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.statefulsetLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  podManagementPolicy: {{ .Values.podManagementPolicy }}\n  replicas: {{ .Values.replicaCount }}\n  {{- if .Values.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.updateStrategy | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        {{- if .Values.podLabels }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podLabels \"context\" $) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if .Values.commonAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        checksum/config: {{ include (print $.Template.BasePath \"/config-secret.yaml\") . | sha256sum }}\n        {{- if or (not .Values.auth.existingErlangSecret) (not .Values.auth.existingPasswordSecret) .Values.extraSecrets }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secrets.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"rabbitmq.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.schedulerName }}\n      schedulerName: {{ .Values.schedulerName | quote }}\n      {{- end }}\n      serviceAccountName: {{ template \"rabbitmq.serviceAccountName\" . }}\n      {{- if .Values.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.affinity \"context\" .) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAffinityPreset \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAntiAffinityPreset \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.nodeAffinityPreset.type \"key\" .Values.nodeAffinityPreset.key \"values\" .Values.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.nodeSelector \"context\" .) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.tolerations \"context\" .) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.topologySpreadConstraints \"context\" .) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n      {{- end }}\n      {{- if .Values.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{- if .Values.dnsPolicy }}\n      dnsPolicy: {{ .Values.dnsPolicy }}\n      {{- end }}\n      {{- if .Values.dnsConfig }}\n      dnsConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.dnsConfig \"context\" .) | nindent 8 }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}\n      initContainers:\n        {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}\n        - name: volume-permissions\n          image: {{ include \"rabbitmq.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n          args:\n            - -ec\n            - |\n              mkdir -p \"{{ .Values.persistence.mountPath }}\"\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.persistence.mountPath }}\n              {{- else }}\n              chown \"{{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}\" \"{{ .Values.persistence.mountPath }}\"\n              {{- end }}\n              find \"{{ .Values.persistence.mountPath }}\" -mindepth 1 -maxdepth 1 -not -name \".snapshot\" -not -name \"lost+found\" | \\\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n                xargs -r chown -R `id -u`:`id -G | cut -d \" \" -f2`\n              {{- else }}\n                xargs -r chown -R \"{{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}\"\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: data\n              mountPath: {{ .Values.persistence.mountPath }}\n              {{- if .Values.persistence.subPath }}\n              subPath: {{ .Values.persistence.subPath }}\n              {{- end }}\n        {{- end }}\n        {{- if .Values.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n      containers:\n        - name: rabbitmq\n          image: {{ template \"rabbitmq.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- else }}\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /bin/bash\n                  - -ec\n                  - |\n                    if [[ -f /opt/bitnami/scripts/rabbitmq/nodeshutdown.sh ]]; then\n                        /opt/bitnami/scripts/rabbitmq/nodeshutdown.sh -t {{ .Values.terminationGracePeriodSeconds | quote }} -d {{ ternary \"true\" \"false\" .Values.image.debug | quote }}\n                    else\n                        rabbitmqctl stop_app\n                    fi\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: MY_POD_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.podIP\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: K8S_SERVICE_NAME\n              value: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n            - name: K8S_ADDRESS_TYPE\n              value: {{ .Values.clustering.addressType }}\n            - name: RABBITMQ_FORCE_BOOT\n              value: {{ ternary \"yes\" \"no\" .Values.clustering.forceBoot | quote }}\n            {{- if (eq \"hostname\" .Values.clustering.addressType) }}\n            - name: RABBITMQ_NODE_NAME\n              value: \"rabbit@$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}\"\n            - name: K8S_HOSTNAME_SUFFIX\n              value: \".$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}\"\n            {{- else }}\n            - name: RABBITMQ_NODE_NAME\n              value: \"rabbit@$(MY_POD_NAME)\"\n            {{- end }}\n            - name: RABBITMQ_MNESIA_DIR\n              value: \"{{ .Values.persistence.mountPath }}/$(RABBITMQ_NODE_NAME)\"\n            - name: RABBITMQ_LDAP_ENABLE\n              value: {{ ternary \"yes\" \"no\" .Values.ldap.enabled | quote }}\n            {{- if .Values.ldap.enabled }}\n            - name: RABBITMQ_LDAP_TLS\n              value: {{ ternary \"yes\" \"no\" .Values.ldap.tls.enabled | quote }}\n            - name: RABBITMQ_LDAP_SERVERS\n              value: {{ .Values.ldap.servers | join \",\" | quote }}\n            - name: RABBITMQ_LDAP_SERVERS_PORT\n              value: {{ .Values.ldap.port | quote }}\n            - name: RABBITMQ_LDAP_USER_DN_PATTERN\n              value: {{ .Values.ldap.user_dn_pattern }}\n            {{- end }}\n            {{- if .Values.logs }}\n            - name: RABBITMQ_LOGS\n              value: {{ .Values.logs | quote }}\n            {{- end }}\n            - name: RABBITMQ_ULIMIT_NOFILES\n              value: {{ .Values.ulimitNofiles | quote }}\n            {{- if and .Values.maxAvailableSchedulers }}\n            - name: RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS\n              value: {{ printf \"+S %s:%s\" (toString .Values.maxAvailableSchedulers) (toString .Values.onlineSchedulers) -}}\n            {{- end }}\n            - name: RABBITMQ_USE_LONGNAME\n              value: \"true\"\n            - name: RABBITMQ_ERL_COOKIE\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"rabbitmq.secretErlangName\" . }}\n                  key: rabbitmq-erlang-cookie\n            {{- if and .Values.clustering.rebalance (gt (.Values.replicaCount | int) 1) }}\n            - name: RABBITMQ_CLUSTER_REBALANCE\n              value: \"true\"\n            {{- end }}\n            - name: RABBITMQ_LOAD_DEFINITIONS\n              value: {{ ternary \"yes\" \"no\" .Values.loadDefinition.enabled | quote }}\n            - name: RABBITMQ_DEFINITIONS_FILE\n              value: {{ .Values.loadDefinition.file | quote }}\n            - name: RABBITMQ_SECURE_PASSWORD\n              value: {{ ternary \"yes\" \"no\" (or .Values.auth.securePassword (not .Values.auth.password)) | quote }}\n            - name: RABBITMQ_USERNAME\n              value: {{ .Values.auth.username | quote }}\n            - name: RABBITMQ_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"rabbitmq.secretPasswordName\" . }}\n                  key: rabbitmq-password\n            - name: RABBITMQ_PLUGINS\n              value: {{ include \"rabbitmq.plugins\" . | quote }}\n            {{- if .Values.communityPlugins }}\n            - name: RABBITMQ_COMMUNITY_PLUGINS\n              value: {{ .Values.communityPlugins | quote }}\n            {{- end }}\n            {{- if .Values.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          envFrom:\n            {{- if .Values.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVarsCM \"context\" $) }}\n            {{- end }}\n            {{- if .Values.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVarsSecret \"context\" $) }}\n            {{- end }}\n          ports:\n            - name: amqp\n              containerPort: {{ .Values.containerPorts.amqp }}\n            - name: dist\n              containerPort: {{ .Values.containerPorts.dist }}\n            - name: stats\n              containerPort: {{ .Values.containerPorts.manager }}\n            - name: epmd\n              containerPort: {{ .Values.containerPorts.epmd }}\n            {{- if .Values.metrics.enabled }}\n            - name: metrics\n              containerPort: {{ .Values.containerPorts.metrics }}\n            {{- end }}\n            {{- if .Values.auth.tls.enabled }}\n            - name: amqp-ssl\n              containerPort: {{ .Values.containerPorts.amqpTls }}\n            {{- end }}\n            {{- if .Values.extraContainerPorts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraContainerPorts \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.livenessProbe.enabled }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - rabbitmq-diagnostics -q ping\n          {{- end }}\n          {{- if .Values.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.readinessProbe.enabled }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - /bin/bash\n                - -ec\n                - rabbitmq-diagnostics -q check_running && rabbitmq-diagnostics -q check_local_alarms\n          {{- end }}\n          {{- if .Values.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: {{ternary \"amqp-ssl\" \"amqp\" .Values.auth.tls.enabled }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.resources }}\n          resources: {{- toYaml .Values.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: configuration\n              mountPath: /bitnami/rabbitmq/conf\n            - name: data\n              mountPath: {{ .Values.persistence.mountPath }}\n              {{- if .Values.persistence.subPath }}\n              subPath: {{ .Values.persistence.subPath }}\n              {{- end }}\n            {{- if .Values.auth.tls.enabled }}\n            - name: certs\n              mountPath: /opt/bitnami/rabbitmq/certs\n            {{- end }}\n            {{- if and .Values.ldap.tls.enabled .Values.ldap.tls.certificatesSecret }}\n            - name: ldap-certs\n              mountPath: {{ .Values.ldap.tls.certificatesMountPath }}\n            {{- end }}\n            {{- if .Values.loadDefinition.enabled }}\n            - name: load-definition-volume\n              mountPath: /app\n              readOnly: true\n            {{- end }}\n            {{- if .Values.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumeMounts \"context\" $) | nindent 12 }}\n            {{- end }}\n            {{- if .Values.initScripts }}\n            - name: custom-init-scripts\n              mountPath: /docker-entrypoint-initdb.d/init-scripts\n            {{- end }}\n            {{- if .Values.initScriptsCM }}\n            - name: custom-init-scripts-cm\n              mountPath: /docker-entrypoint-initdb.d/init-scripts-cm\n            {{- end }}\n            {{- if .Values.initScriptsSecret }}\n            - name: custom-init-scripts-secret\n              mountPath: /docker-entrypoint-initdb.d/init-scripts-secret\n            {{- end }}\n        {{- if .Values.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        {{- if .Values.auth.tls.enabled }}\n        - name: certs\n          secret:\n            secretName: {{ template \"rabbitmq.tlsSecretName\" . }}\n            items:\n              - key: {{ ternary \"tls.crt\" \"ca.crt\" .Values.auth.tls.existingSecretFullChain }}\n                path: ca_certificate.pem\n              - key: tls.crt\n                path: server_certificate.pem\n              - key: tls.key\n                path: server_key.pem\n        {{- end }}\n        {{- if and .Values.ldap.tls.enabled .Values.ldap.tls.certificatesSecret }}\n        - name: ldap-certs\n          secret:\n            secretName: {{ .Values.ldap.tls.certificatesSecret }}\n        {{- end }}\n        - name: configuration\n          secret:\n            secretName: {{ printf \"%s-config\" (include \"common.names.fullname\" .) }}\n            items:\n              - key: rabbitmq.conf\n                path: rabbitmq.conf\n              {{- if .Values.advancedConfiguration }}\n              - key: advanced.config\n                path: advanced.config\n              {{- end }}\n        {{- if .Values.loadDefinition.enabled }}\n        - name: load-definition-volume\n          secret:\n            secretName: {{ tpl .Values.loadDefinition.existingSecret . | quote }}\n        {{- end }}\n        {{- if .Values.initScripts }}\n        - name: custom-init-scripts\n          configMap:\n            name: {{ template \"rabbitmq.initScripts\" . }}\n        {{- end }}\n        {{- if .Values.initScriptsCM }}\n        - name: custom-init-scripts-cm\n          configMap:\n            name: {{ tpl .Values.initScriptsCM . | quote }}\n        {{- end }}\n        {{- if .Values.initScriptsSecret }}\n        - name: custom-init-scripts-secret\n          secret:\n            secretName: {{ tpl .Values.initScriptsSecret . | quote }}\n            defaultMode: 0755\n        {{- end }}\n        {{- if .Values.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumes \"context\" $)  | nindent 8 }}\n        {{- end }}\n  {{- if not .Values.persistence.enabled }}\n        - name: data\n          emptyDir: {}\n  {{- else if .Values.persistence.existingClaim }}\n        - name: data\n          persistentVolumeClaim:\n            {{- with .Values.persistence.existingClaim }}\n            claimName: {{ tpl . $ }}\n            {{- end }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n        {{- if .Values.persistence.annotations }}\n        annotations:\n          {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.persistence.annotations \"context\" $) | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n          {{- range .Values.persistence.accessModes }}\n            - {{ . | quote }}\n          {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.persistence.size | quote }}\n        {{ include \"common.storage.class\" (dict \"persistence\" .Values.persistence \"global\" .Values.global) }}\n        {{- if .Values.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end -}}\n  {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/svc-headless.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-headless\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.service.annotationsHeadless .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonAnnotations \"context\" $) | nindent 4 }}\n    {{- end -}}\n    {{- if .Values.service.annotationsHeadless }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.annotationsHeadless \"context\" $) | nindent 4 }}\n    {{- end -}}\n  {{- end }}\nspec:\n  clusterIP: None\n  ports:\n    - name: {{ .Values.service.portNames.epmd }}\n      port: {{ .Values.service.ports.epmd }}\n      targetPort: epmd\n    {{- if or (.Values.service.portEnabled) (not .Values.auth.tls.enabled) }}\n    - name: {{ .Values.service.portNames.amqp }}\n      port: {{ .Values.service.ports.amqp }}\n      targetPort: amqp\n    {{- end }}\n    {{- if .Values.auth.tls.enabled }}\n    - name: {{ .Values.service.portNames.amqpTls }}\n      port: {{ .Values.service.ports.amqpTls }}\n      targetPort: amqp-tls\n    {{- end }}\n    - name: {{ .Values.service.portNames.dist }}\n      port: {{ .Values.service.ports.dist }}\n      targetPort: dist\n    {{- if .Values.service.managerPortEnabled }}\n    - name: {{ .Values.service.portNames.manager }}\n      port: {{ .Values.service.ports.manager  }}\n      targetPort: stats\n    {{- end }}\n  selector: {{ include \"common.labels.matchLabels\" . | nindent 4 }}\n  publishNotReadyAddresses: true\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.service.labels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.labels \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if or (.Values.service.annotations) (.Values.commonAnnotations) }}\n  annotations:\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonAnnotations \"context\" $) | nindent 4 }}\n    {{- end -}}\n    {{- if .Values.service.annotations }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.annotations \"context\" $) | nindent 4 }}\n    {{- end -}}\n  {{- end }}\nspec:\n  type: {{ .Values.service.type }}\n  {{- if not (empty .Values.service.clusterIP) }}\n  clusterIP: {{ .Values.service.clusterIP }}\n  {{- end }}\n  {{- if eq .Values.service.type \"LoadBalancer\" }}\n  {{- if not (empty .Values.service.loadBalancerIP) }}\n  loadBalancerIP: {{ .Values.service.loadBalancerIP }}\n  {{- end }}\n  {{- if .Values.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- end }}\n  {{- if or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\") }}\n  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if .Values.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if .Values.service.externalIPs }}\n  externalIPs: {{- toYaml .Values.service.externalIPs | nindent 4 }}\n  {{- end }}\n  ports:\n    {{- if or (.Values.service.portEnabled) (not .Values.auth.tls.enabled) }}\n    - name: {{ .Values.service.portNames.amqp }}\n      port: {{ .Values.service.ports.amqp }}\n      targetPort: amqp\n      {{- if (eq .Values.service.type \"ClusterIP\") }}\n      nodePort: null\n      {{- else if and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.amqp)) }}\n      nodePort: {{ .Values.service.nodePorts.amqp }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.auth.tls.enabled }}\n    - name: {{ .Values.service.portNames.amqpTls }}\n      port: {{ .Values.service.ports.amqpTls }}\n      targetPort: amqp-ssl\n      {{- if (eq .Values.service.type \"ClusterIP\") }}\n      nodePort: null\n      {{- else if and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.amqpTls)) }}\n      nodePort: {{ .Values.service.nodePorts.amqpTls }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.service.epmdPortEnabled }}\n    - name: {{ .Values.service.portNames.epmd }}\n      port: {{ .Values.service.ports.epmd }}\n      targetPort: epmd\n      {{- if (eq .Values.service.type \"ClusterIP\") }}\n      nodePort: null\n      {{- else if and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.epmd)) }}\n      nodePort: {{ .Values.service.nodePorts.epmd }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.service.distPortEnabled }}\n    - name: {{ .Values.service.portNames.dist }}\n      port: {{ .Values.service.ports.dist }}\n      targetPort: dist\n      {{- if eq .Values.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- else if and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.dist)) }}\n      nodePort: {{ .Values.service.nodePorts.dist }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.service.managerPortEnabled }}\n    - name: {{ .Values.service.portNames.manager }}\n      port: {{ .Values.service.ports.manager  }}\n      targetPort: stats\n      {{- if eq .Values.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- else if and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.manager)) }}\n      nodePort: {{ .Values.service.nodePorts.manager }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.metrics.enabled }}\n    - name: {{ .Values.service.portNames.metrics }}\n      port: {{ .Values.service.ports.metrics }}\n      targetPort: metrics\n      {{- if eq .Values.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- else if and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.metrics)) }}\n      nodePort: {{ .Values.service.nodePorts.metrics }}\n      {{- end }}\n    {{- end }}\n    {{- if .Values.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{ include \"common.labels.matchLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/tls-secrets.yaml",
    "content": "{{- if .Values.ingress.enabled }}\n{{- if .Values.ingress.secrets }}\n{{- range .Values.ingress.secrets }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ .name }}\n  namespace: {{ include \"common.names.namespace\" $ | quote }}\n  labels: {{- include \"common.labels.standard\" $ | nindent 4 }}\n    {{- if $.Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if $.Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: kubernetes.io/tls\ndata:\n  tls.crt: {{ .certificate | b64enc }}\n  tls.key: {{ .key | b64enc }}\n---\n{{- end }}\n{{- end }}\n{{- if and .Values.ingress.tls .Values.ingress.selfSigned }}\n{{- $ca := genCA \"rabbitmq-ca\" 365 }}\n{{- $cert := genSignedCert .Values.ingress.hostname nil (list .Values.ingress.hostname) 365 $ca }}\napiVersion: v1\nkind: Secret\nmetadata:\n  {{- if .Values.ingress.existingSecret }}\n  name: {{ .Values.ingress.existingSecret }}\n  {{- else }}\n  name: {{ printf \"%s-tls\" .Values.ingress.hostname | trunc 63 | trimSuffix \"-\" }}\n  {{- end }}\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: kubernetes.io/tls\ndata:\n  tls.crt: {{ $cert.Cert | b64enc | quote }}\n  tls.key: {{ $cert.Key | b64enc | quote }}\n  ca.crt: {{ $ca.Cert | b64enc | quote }}\n{{- end }}\n{{- end }}\n{{- if (include \"rabbitmq.createTlsSecret\" . ) }}\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-certs\n  namespace: {{ include \"common.names.namespace\" . | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: kubernetes.io/tls\ndata:\n  {{- if or (not .Values.auth.tls.autoGenerated ) (and .Values.auth.tls.caCertificate .Values.auth.tls.serverCertificate .Values.auth.tls.serverKey) }}\n  ca.crt: {{ required \"A valid .Values.auth.tls.caCertificate entry required!\" .Values.auth.tls.caCertificate | b64enc | quote }}\n  tls.crt: {{ required \"A valid .Values.auth.tls.serverCertificate entry required!\" .Values.auth.tls.serverCertificate| b64enc | quote }}\n  tls.key: {{ required \"A valid .Values.auth.tls.serverKey entry required!\" .Values.auth.tls.serverKey | b64enc | quote }}\n  {{- else }}\n  {{- $ca := genCA \"rabbitmq-internal-ca\" 365 }}\n  {{- $fullname := include \"common.names.fullname\" . }}\n  {{- $releaseNamespace := .Release.Namespace }}\n  {{- $clusterDomain := .Values.clusterDomain }}\n  {{- $serviceName := include \"common.names.fullname\" . }}\n  {{- $altNames := list (printf \"*.%s.%s.svc.%s\" $serviceName $releaseNamespace $clusterDomain) (printf \"%s.%s.svc.%s\" $serviceName $releaseNamespace $clusterDomain) $fullname }}\n  {{- $crt := genSignedCert $fullname nil $altNames 365 $ca }}\n  ca.crt: {{ $ca.Cert | b64enc | quote }}\n  tls.crt: {{ $crt.Cert | b64enc | quote }}\n  tls.key: {{ $crt.Key | b64enc | quote }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/templates/validation.yaml",
    "content": "{{- include \"rabbitmq.validateValues\" . }}\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/values.schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"auth\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"username\": {\n          \"type\": \"string\",\n          \"title\": \"RabbitMQ user\",\n          \"form\": true\n        },\n        \"password\": {\n          \"type\": \"string\",\n          \"title\": \"RabbitMQ password\",\n          \"form\": true,\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\"\n        }\n      }\n    },\n    \"extraConfiguration\": {\n      \"type\": \"string\",\n      \"title\": \"Extra RabbitMQ Configuration\",\n      \"form\": true,\n      \"render\": \"textArea\",\n      \"description\": \"Extra configuration to be appended to RabbitMQ Configuration\"\n    },\n    \"replicaCount\": {\n      \"type\": \"integer\",\n      \"form\": true,\n      \"title\": \"Number of replicas\",\n      \"description\": \"Number of replicas to deploy\"\n    },\n    \"persistence\": {\n      \"type\": \"object\",\n      \"title\": \"Persistence configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Enable persistence\",\n          \"description\": \"Enable persistence using Persistent Volume Claims\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"title\": \"Persistent Volume Size\",\n          \"form\": true,\n          \"render\": \"slider\",\n          \"sliderMin\": 1,\n          \"sliderMax\": 100,\n          \"sliderUnit\": \"Gi\",\n          \"hidden\": {\n            \"value\": false,\n            \"path\": \"persistence/enabled\"\n          }\n        }\n      }\n    },\n    \"volumePermissions\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Enable Init Containers\",\n          \"description\": \"Use an init container to set required folder permissions on the data volume before mounting it in the final destination\"\n        }\n      }\n    },\n    \"metrics\": {\n      \"type\": \"object\",\n      \"form\": true,\n      \"title\": \"Prometheus metrics details\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"title\": \"Enable Prometheus metrics for RabbitMQ\",\n          \"description\": \"Install Prometheus plugin in the RabbitMQ container\",\n          \"form\": true\n        },\n        \"serviceMonitor\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"title\": \"Create Prometheus Operator ServiceMonitor\",\n              \"description\": \"Create a ServiceMonitor to track metrics using Prometheus Operator\",\n              \"form\": true,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"metrics/enabled\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/rabbitmq/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n##\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n\n## @section RabbitMQ Image parameters\n## Bitnami RabbitMQ image version\n## ref: https://hub.docker.com/r/bitnami/rabbitmq/tags/\n## @param image.registry RabbitMQ image registry\n## @param image.repository RabbitMQ image repository\n## @param image.tag RabbitMQ image tag (immutable tags are recommended)\n## @param image.digest RabbitMQ image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n## @param image.pullPolicy RabbitMQ image pull policy\n## @param image.pullSecrets Specify docker-registry secret names as an array\n## @param image.debug Set to true if you would like to see extra information on logs\n##\nimage:\n  registry: docker.io\n  repository: bitnami/rabbitmq\n  tag: 3.11.4-debian-11-r0\n  digest: \"\"\n  ## set to true if you would like to see extra information on logs\n  ## It turns BASH and/or NAMI debugging in the image\n  ##\n  debug: false\n  ## Specify a imagePullPolicy\n  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## Example:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n\n## @section Common parameters\n##\n\n## @param nameOverride String to partially override rabbitmq.fullname template (will maintain the release name)\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override rabbitmq.fullname template\n##\nfullnameOverride: \"\"\n## @param namespaceOverride String to fully override common.names.namespace\n##\nnamespaceOverride: \"\"\n## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)\n##\nkubeVersion: \"\"\n## @param clusterDomain Kubernetes Cluster Domain\n##\nclusterDomain: cluster.local\n## @param extraDeploy Array of extra objects to deploy with the release\n##\nextraDeploy: []\n## @param commonAnnotations Annotations to add to all deployed objects\n##\ncommonAnnotations: {}\n## @param commonLabels Labels to add to all deployed objects\n##\ncommonLabels: {}\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @param hostAliases Deployment pod host aliases\n## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## @param dnsPolicy DNS Policy for pod\n## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\n## E.g.\n## dnsPolicy: ClusterFirst\n##\ndnsPolicy: \"\"\n## @param dnsConfig DNS Configuration pod\n## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\n## E.g.\n## dnsConfig:\n##   options:\n##   - name: ndots\n##     value: \"4\"\n##\ndnsConfig: {}\n## RabbitMQ Authentication parameters\n##\nauth:\n  ## @param auth.username RabbitMQ application username\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables\n  ##\n  username: opsany \n  ## @param auth.password RabbitMQ application password\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables\n  ##\n  password: \"OpsAny@2023\"\n  ## @param auth.securePassword Whether to set the RabbitMQ password securely. This is incompatible with loading external RabbitMQ definitions and 'true' when not setting the auth.password parameter.\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables\n  ##\n  securePassword: true\n  ## @param auth.existingPasswordSecret Existing secret with RabbitMQ credentials (must contain a value for `rabbitmq-password` key)\n  ## e.g:\n  ## existingPasswordSecret: name-of-existing-secret\n  ##\n  existingPasswordSecret: \"\"\n  ## @param auth.erlangCookie Erlang cookie to determine whether different nodes are allowed to communicate with each other\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables\n  ##\n  erlangCookie: \"\"\n  ## @param auth.existingErlangSecret Existing secret with RabbitMQ Erlang cookie (must contain a value for `rabbitmq-erlang-cookie` key)\n  ## e.g:\n  ## existingErlangSecret: name-of-existing-secret\n  ##\n  existingErlangSecret: \"\"\n\n  ## Enable encryption to rabbitmq\n  ## ref: https://www.rabbitmq.com/ssl.html\n  ## @param auth.tls.enabled Enable TLS support on RabbitMQ\n  ## @param auth.tls.autoGenerated Generate automatically self-signed TLS certificates\n  ## @param auth.tls.failIfNoPeerCert When set to true, TLS connection will be rejected if client fails to provide a certificate\n  ## @param auth.tls.sslOptionsVerify Should [peer verification](https://www.rabbitmq.com/ssl.html#peer-verification) be enabled?\n  ## @param auth.tls.caCertificate Certificate Authority (CA) bundle content\n  ## @param auth.tls.serverCertificate Server certificate content\n  ## @param auth.tls.serverKey Server private key content\n  ## @param auth.tls.existingSecret Existing secret with certificate content to RabbitMQ credentials\n  ## @param auth.tls.existingSecretFullChain Whether or not the existing secret contains the full chain in the certificate (`tls.crt`). Will be used in place of `ca.cert` if `true`.\n  ##\n  tls:\n    enabled: false\n    autoGenerated: false\n    failIfNoPeerCert: true\n    sslOptionsVerify: verify_peer\n    caCertificate: |-\n    serverCertificate: |-\n    serverKey: |-\n    existingSecret: \"\"\n    existingSecretFullChain: false\n\n## @param logs Path of the RabbitMQ server's Erlang log file. Value for the `RABBITMQ_LOGS` environment variable\n## ref: https://www.rabbitmq.com/logging.html#log-file-location\n##\nlogs: \"-\"\n## @param ulimitNofiles RabbitMQ Max File Descriptors\n## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables\n## ref: https://www.rabbitmq.com/install-debian.html#kernel-resource-limits\n##\nulimitNofiles: \"65536\"\n## RabbitMQ maximum available scheduler threads and online scheduler threads. By default it will create a thread per CPU detected, with the following parameters you can tune it manually.\n## ref: https://hamidreza-s.github.io/erlang/scheduling/real-time/preemptive/migration/2016/02/09/erlang-scheduler-details.html#scheduler-threads\n## ref: https://github.com/bitnami/charts/issues/2189\n## @param maxAvailableSchedulers RabbitMQ maximum available scheduler threads\n## @param onlineSchedulers RabbitMQ online scheduler threads\n##\nmaxAvailableSchedulers: \"\"\nonlineSchedulers: \"\"\n\n## The memory threshold under which RabbitMQ will stop reading from client network sockets, in order to avoid being killed by the OS\n## ref: https://www.rabbitmq.com/alarms.html\n## ref: https://www.rabbitmq.com/memory.html#threshold\n##\nmemoryHighWatermark:\n  ## @param memoryHighWatermark.enabled Enable configuring Memory high watermark on RabbitMQ\n  ##\n  enabled: false\n  ## @param memoryHighWatermark.type Memory high watermark type. Either `absolute` or `relative`\n  ##\n  type: \"relative\"\n  ## Memory high watermark value.\n  ## @param memoryHighWatermark.value Memory high watermark value\n  ## The default value of 0.4 stands for 40% of available RAM\n  ## Note: the memory relative limit is applied to the resource.limits.memory to calculate the memory threshold\n  ## You can also use an absolute value, e.g.: 256MB\n  ##\n  value: 0.4\n\n## @param plugins List of default plugins to enable (should only be altered to remove defaults; for additional plugins use `extraPlugins`)\n##\nplugins: \"rabbitmq_management rabbitmq_peer_discovery_k8s\"\n## @param communityPlugins List of Community plugins (URLs) to be downloaded during container initialization\n## Combine it with extraPlugins to also enable them.\n##\ncommunityPlugins: \"\"\n## @param extraPlugins Extra plugins to enable (single string containing a space-separated list)\n## Use this instead of `plugins` to add new plugins\n##\nextraPlugins: \"rabbitmq_auth_backend_ldap\"\n\n## Clustering settings\n##\nclustering:\n  ## @param clustering.enabled Enable RabbitMQ clustering\n  ##\n  enabled: true\n  ## @param clustering.addressType Switch clustering mode. Either `ip` or `hostname`\n  ##\n  addressType: hostname\n  ## @param clustering.rebalance Rebalance master for queues in cluster when new replica is created\n  ## ref: https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance\n  ##\n  rebalance: false\n  ## @param clustering.forceBoot Force boot of an unexpectedly shut down cluster (in an unexpected order).\n  ## forceBoot executes 'rabbitmqctl force_boot' to force boot cluster shut down unexpectedly in an unknown order\n  ## ref: https://www.rabbitmq.com/rabbitmqctl.8.html#force_boot\n  ##\n  forceBoot: false\n  ## @param clustering.partitionHandling Switch Partition Handling Strategy. Either `autoheal` or `pause-minority` or `pause-if-all-down` or `ignore`\n  ## ref: https://www.rabbitmq.com/partitions.html#automatic-handling\n  ##\n  partitionHandling: autoheal\n\n## Loading a RabbitMQ definitions file to configure RabbitMQ\n##\nloadDefinition:\n  ## @param loadDefinition.enabled Enable loading a RabbitMQ definitions file to configure RabbitMQ\n  ##\n  enabled: false\n  ## @param loadDefinition.file Name of the definitions file\n  ##\n  file: \"/app/load_definition.json\"\n  ## @param loadDefinition.existingSecret Existing secret with the load definitions file\n  ## Can be templated if needed, e.g:\n  ## existingSecret: \"{{ .Release.Name }}-load-definition\"\n  ##\n  existingSecret: \"\"\n\n## @param command Override default container command (useful when using custom images)\n##\ncommand: []\n## @param args Override default container args (useful when using custom images)\n##\nargs: []\n## @param lifecycleHooks Overwrite livecycle for the RabbitMQ container(s) to automate configuration before or after startup\n##\nlifecycleHooks: {}\n## @param terminationGracePeriodSeconds Default duration in seconds k8s waits for container to exit before sending kill signal.\n## Any time in excess of 10 seconds will be spent waiting for any synchronization necessary for cluster not to lose data.\n##\nterminationGracePeriodSeconds: 120\n## @param extraEnvVars Extra environment variables to add to RabbitMQ pods\n## E.g:\n## extraEnvVars:\n##   - name: FOO\n##     value: BAR\n##\nextraEnvVars: []\n## @param extraEnvVarsCM Name of existing ConfigMap containing extra environment variables\n##\nextraEnvVarsCM: \"\"\n## @param extraEnvVarsSecret Name of existing Secret containing extra environment variables (in case of sensitive data)\n##\nextraEnvVarsSecret: \"\"\n\n## Container Ports\n## @param containerPorts.amqp\n## @param containerPorts.amqpTls\n## @param containerPorts.dist\n## @param containerPorts.manager\n## @param containerPorts.epmd\n## @param containerPorts.metrics\n##\ncontainerPorts:\n  amqp: 5672\n  amqpTls: 5671\n  dist: 25672\n  manager: 15672\n  epmd: 4369\n  metrics: 9419\n\n## @param initScripts Dictionary of init scripts. Evaluated as a template.\n## Specify dictionary of scripts to be run at first boot\n## Alternatively, you can put your scripts under the files/docker-entrypoint-initdb.d directory\n## For example:\n## initScripts:\n##   my_init_script.sh: |\n##      #!/bin/sh\n##      echo \"Do something.\"\n##\ninitScripts: {}\n## @param initScriptsCM ConfigMap with the init scripts. Evaluated as a template.\n## Note: This will override initScripts\n##\ninitScriptsCM: \"\"\n## @param initScriptsSecret Secret containing `/docker-entrypoint-initdb.d` scripts to be executed at initialization time that contain sensitive data. Evaluated as a template.\n##\ninitScriptsSecret: \"\"\n## @param extraContainerPorts Extra ports to be included in container spec, primarily informational\n## E.g:\n## extraContainerPorts:\n## - name: new_port_name\n##   containerPort: 1234\n##\nextraContainerPorts: []\n## @param configuration [string] RabbitMQ Configuration file content: required cluster configuration\n## Do not override unless you know what you are doing.\n## To add more configuration, use `extraConfiguration` of `advancedConfiguration` instead\n##\nconfiguration: |-\n  ## Username and password\n  ##\n  default_user = {{ .Values.auth.username }}\n  {{- if and (not .Values.auth.securePassword) .Values.auth.password }}\n  default_pass = {{ .Values.auth.password }}\n  {{- end }}\n  {{- if .Values.clustering.enabled }}\n  ## Clustering\n  ##\n  cluster_formation.peer_discovery_backend  = rabbit_peer_discovery_k8s\n  cluster_formation.k8s.host = kubernetes.default\n  cluster_formation.node_cleanup.interval = 10\n  cluster_formation.node_cleanup.only_log_warning = true\n  cluster_partition_handling = {{ .Values.clustering.partitionHandling }}\n  {{- end }}\n  {{- if .Values.loadDefinition.enabled }}\n  load_definitions = {{ .Values.loadDefinition.file }}\n  {{- end }}\n  # queue master locator\n  queue_master_locator = min-masters\n  # enable guest user\n  loopback_users.guest = false\n  {{ tpl .Values.extraConfiguration . }}\n  {{- if .Values.auth.tls.enabled }}\n  ssl_options.verify = {{ .Values.auth.tls.sslOptionsVerify }}\n  listeners.ssl.default = {{ .Values.service.ports.amqpTls }}\n  ssl_options.fail_if_no_peer_cert = {{ .Values.auth.tls.failIfNoPeerCert }}\n  ssl_options.cacertfile = /opt/bitnami/rabbitmq/certs/ca_certificate.pem\n  ssl_options.certfile = /opt/bitnami/rabbitmq/certs/server_certificate.pem\n  ssl_options.keyfile = /opt/bitnami/rabbitmq/certs/server_key.pem\n  {{- end }}\n  {{- if .Values.ldap.enabled }}\n  auth_backends.1.authn = ldap\n  auth_backends.1.authz = {{ ternary \"ldap\" \"internal\" .Values.ldap.authorisationEnabled }}\n  auth_backends.2 = internal\n  {{- $host :=  list }}\n  {{- $port :=  ternary 636 389 .Values.ldap.tls.enabled }}\n  {{- if .Values.ldap.uri }}\n  {{- $hostPort := get (urlParse .Values.ldap.uri) \"host\" }}\n  {{- $host = list (index (splitList \":\" $hostPort) 0) -}}\n  {{- if (contains \":\" $hostPort) }}\n  {{- $port = index (splitList \":\" $hostPort) 1 -}}\n  {{- end }}\n  {{- end }}\n  {{- range $index, $server := concat $host .Values.ldap.servers }}\n  auth_ldap.servers.{{ add $index 1 }} = {{ $server }}\n  {{- end }}\n  auth_ldap.port = {{ coalesce .Values.ldap.port $port }}\n  {{- if or .Values.ldap.user_dn_pattern .Values.ldap.userDnPattern }}\n  auth_ldap.user_dn_pattern = {{ coalesce .Values.ldap.user_dn_pattern .Values.ldap.userDnPattern }}\n  {{- end }}\n  {{- if .Values.ldap.basedn }}\n  auth_ldap.dn_lookup_base = {{ .Values.ldap.basedn }}\n  {{- end }}\n  {{- if .Values.ldap.uidField }}\n  auth_ldap.dn_lookup_attribute = {{ .Values.ldap.uidField }}\n  {{- end }}\n  {{- if .Values.ldap.binddn }}\n  auth_ldap.dn_lookup_bind.user_dn = {{ .Values.ldap.binddn }}\n  auth_ldap.dn_lookup_bind.password = {{ required \"'ldap.bindpw' is required when 'ldap.binddn' is defined\" .Values.ldap.bindpw }}\n  {{- end }}\n  {{- if .Values.ldap.tls.enabled }}\n  auth_ldap.use_ssl = {{ not .Values.ldap.tls.startTls }}\n  auth_ldap.use_starttls = {{ .Values.ldap.tls.startTls }}\n  {{- if .Values.ldap.tls.CAFilename }}\n  auth_ldap.ssl_options.cacertfile = {{ .Values.ldap.tls.certificatesMountPath }}/{{ .Values.ldap.tls.CAFilename }}\n  {{- end }}\n  {{- if .Values.ldap.tls.certFilename }}\n  auth_ldap.ssl_options.certfile = {{ .Values.ldap.tls.certificatesMountPath }}/{{ .Values.ldap.tls.certFilename }}\n  auth_ldap.ssl_options.keyfile = {{ .Values.ldap.tls.certificatesMountPath }}/{{ required \"'ldap.tls.certKeyFilename' is required when 'ldap.tls.certFilename' is defined\" .Values.ldap.tls.certKeyFilename }}\n  {{- end }}\n  {{- if .Values.ldap.tls.skipVerify }}\n  auth_ldap.ssl_options.verify = verify_none\n  auth_ldap.ssl_options.fail_if_no_peer_cert = false\n  {{- else if .Values.ldap.tls.verify }}\n  auth_ldap.ssl_options.verify = {{ .Values.ldap.tls.verify }}\n  {{- end }}\n  {{- end }}\n  {{- end }}\n  {{- if .Values.metrics.enabled }}\n  ## Prometheus metrics\n  ##\n  prometheus.tcp.port = 9419\n  {{- end }}\n  {{- if .Values.memoryHighWatermark.enabled }}\n  ## Memory Threshold\n  ##\n  total_memory_available_override_value = {{ include \"rabbitmq.toBytes\" .Values.resources.limits.memory }}\n  vm_memory_high_watermark.{{ .Values.memoryHighWatermark.type }} = {{ .Values.memoryHighWatermark.value }}\n  {{- end }}\n\n## @param extraConfiguration [string] Configuration file content: extra configuration to be appended to RabbitMQ configuration\n## Use this instead of `configuration` to add more configuration\n##\nextraConfiguration: |-\n  #default_vhost = {{ .Release.Namespace }}-vhost\n  #disk_free_limit.absolute = 50MB\n\n## @param advancedConfiguration Configuration file content: advanced configuration\n## Use this as additional configuration in classic config format (Erlang term configuration format)\n##\n## LDAP authorisation example:\n## advancedConfiguration: |-\n##   [{rabbitmq_auth_backend_ldap,[\n##      {tag_queries,           [{administrator, {constant, true}},\n##                               {management,    {constant, true}}]}\n##   ]}].\n##\nadvancedConfiguration: |-\n\n## LDAP configuration\n##\nldap:\n  ## @param ldap.enabled Enable LDAP support\n  ##\n  enabled: false\n  ## @param ldap.uri LDAP connection string.\n  ##\n  uri: \"\"\n  ## @param ldap.servers List of LDAP servers hostnames. This is valid only if ldap.uri is not set\n  ##\n  servers: []\n  ## @param ldap.port LDAP servers port. This is valid only if ldap.uri is not set\n  ##\n  port: \"\"\n\n  ## DEPRECATED ldap.user_dn_pattern it will removed in a future, please use userDnPattern instead\n  ## Pattern used to translate the provided username into a value to be used for the LDAP bind\n  ## @param ldap.userDnPattern Pattern used to translate the provided username into a value to be used for the LDAP bind.\n  ## ref: https://www.rabbitmq.com/ldap.html#usernames-and-dns\n  ##\n  userDnPattern: \"\"\n  ## @param ldap.binddn DN of the account used to search in the LDAP server.\n  ##\n  binddn: \"\"\n  ## @param ldap.bindpw Password for binddn account.\n  ##\n  bindpw: \"\"\n  ## @param ldap.basedn Base DN path where binddn account will search for the users.\n  ##\n  basedn: \"\"\n  ## @param ldap.uidField Field used to match with the user name (uid, samAccountName, cn, etc). It matches with 'dn_lookup_attribute' in RabbitMQ configuration\n  ##��ref: https://www.rabbitmq.com/ldap.html#usernames-and-dns\n  ##\n  ## @param ldap.uidField Field used to match with the user name (uid, samAccountName, cn, etc). It matches with 'dn_lookup_attribute' in RabbitMQ configuration\n  uidField: \"\"\n  ## @param ldap.authorisationEnabled Enable LDAP authorisation. Please set 'advancedConfiguration' with tag, topic, resources and vhost mappings\n  ## ref: https://www.rabbitmq.com/ldap.html#authorisation\n  ##\n  authorisationEnabled: false\n  ## @param ldap.tls.enabled Enabled TLS configuration.\n  ## @param ldap.tls.startTls Use STARTTLS instead of LDAPS.\n  ## @param ldap.tls.skipVerify Skip any SSL verification (hostanames or certificates)\n  ## @param ldap.tls.verify Verify connection. Valid values are 'verify_peer' or 'verify_none'\n  ## @param ldap.tls.certificatesMountPath Where LDAP certifcates are mounted.\n  ## @param ldap.tls.certificatesSecret Secret with LDAP certificates.\n  ## @param ldap.tls.CAFilename  CA certificate filename. Should match with the CA entry key in the ldap.tls.certificatesSecret.\n  ## @param ldap.tls.certFilename Client certificate filename to authenticate against the LDAP server. Should match with certificate the entry key in the ldap.tls.certificatesSecret.\n  ## @param ldap.tls.certKeyFilename Client Key filename to authenticate against the LDAP server. Should match with certificate the entry key in the ldap.tls.certificatesSecret.\n  ##\n  tls:\n    enabled: false\n    startTls: false\n    skipVerify: false\n    verify: \"verify_peer\"\n    certificatesMountPath: /opt/bitnami/rabbitmq/ldap/certs\n    certificatesSecret: \"\"\n    CAFilename: \"\"\n    certFilename: \"\"\n    certKeyFilename: \"\"\n\n## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts\n## Examples:\n## extraVolumeMounts:\n##   - name: extras\n##     mountPath: /usr/share/extras\n##     readOnly: true\n##\nextraVolumeMounts: []\n## @param extraVolumes Optionally specify extra list of additional volumes .\n## Example:\n## extraVolumes:\n##   - name: extras\n##     emptyDir: {}\n##\nextraVolumes: []\n## @param extraSecrets Optionally specify extra secrets to be created by the chart.\n## This can be useful when combined with load_definitions to automatically create the secret containing the definitions to be loaded.\n## Example:\n## extraSecrets:\n##   load-definition:\n##     load_definition.json: |\n##       {\n##         ...\n##       }\n##\nextraSecrets: {}\n## @param extraSecretsPrependReleaseName Set this flag to true if extraSecrets should be created with <release-name> prepended.\n##\nextraSecretsPrependReleaseName: false\n\n## @section Statefulset parameters\n##\n\n## @param replicaCount Number of RabbitMQ replicas to deploy\n##\nreplicaCount: 1\n## @param schedulerName Use an alternate scheduler, e.g. \"stork\".\n## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n##\nschedulerName: \"\"\n## RabbitMQ should be initialized one by one when building cluster for the first time.\n## Therefore, the default value of podManagementPolicy is 'OrderedReady'\n## Once the RabbitMQ participates in the cluster, it waits for a response from another\n## RabbitMQ in the same cluster at reboot, except the last RabbitMQ of the same cluster.\n## If the cluster exits gracefully, you do not need to change the podManagementPolicy\n## because the first RabbitMQ of the statefulset always will be last of the cluster.\n## However if the last RabbitMQ of the cluster is not the first RabbitMQ due to a failure,\n## you must change podManagementPolicy to 'Parallel'.\n## ref : https://www.rabbitmq.com/clustering.html#restarting\n## @param podManagementPolicy Pod management policy\n##\npodManagementPolicy: OrderedReady\n## @param podLabels RabbitMQ Pod labels. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## @param podAnnotations RabbitMQ Pod annotations. Evaluated as a template\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## @param updateStrategy.type Update strategy type for RabbitMQ statefulset\n## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n##\nupdateStrategy:\n  ## StrategyType\n  ## Can be set to RollingUpdate or OnDelete\n  ##\n  type: RollingUpdate\n## @param statefulsetLabels RabbitMQ statefulset labels. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\nstatefulsetLabels: {}\n## @param priorityClassName Name of the priority class to be used by RabbitMQ pods, priority class needs to be created beforehand\n## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\npriorityClassName: \"\"\n## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAffinityPreset: \"\"\n## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAntiAffinityPreset: soft\n\n## Node affinity preset\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n##\nnodeAffinityPreset:\n  ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ##\n  type: \"\"\n  ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.\n  ## E.g.\n  ## key: \"kubernetes.io/e2e-az-name\"\n  ##\n  key: \"\"\n  ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.\n  ## E.g.\n  ## values:\n  ##   - e2e-az1\n  ##   - e2e-az2\n  ##\n  values: []\n\n## @param affinity Affinity for pod assignment. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set\n##\naffinity: {}\n## @param nodeSelector Node labels for pod assignment. Evaluated as a template\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## @param tolerations Tolerations for pod assignment. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods\n##\ntopologySpreadConstraints: []\n\n## RabbitMQ pods' Security Context\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n## @param podSecurityContext.enabled Enable RabbitMQ pods' Security Context\n## @param podSecurityContext.fsGroup Set RabbitMQ pod's Security Context fsGroup\n##\npodSecurityContext:\n  enabled: true\n  fsGroup: 1001\n\n## @param containerSecurityContext.enabled Enabled RabbitMQ containers' Security Context\n## @param containerSecurityContext.runAsUser Set RabbitMQ containers' Security Context runAsUser\n## @param containerSecurityContext.runAsNonRoot Set RabbitMQ container's Security Context runAsNonRoot\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n## Example:\n##   containerSecurityContext:\n##     capabilities:\n##       drop: [\"NET_RAW\"]\n##     readOnlyRootFilesystem: true\n##\ncontainerSecurityContext:\n  enabled: true\n  runAsUser: 1001\n  runAsNonRoot: true\n\n## RabbitMQ containers' resource requests and limits\n## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n## We usually recommend not to specify default resources and to leave this as a conscious\n## choice for the user. This also increases chances charts run on environments with little\n## resources, such as Minikube. If you do want to specify resources, uncomment the following\n## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n## @param resources.limits The resources limits for RabbitMQ containers\n## @param resources.requests The requested resources for RabbitMQ containers\n##\nresources:\n  ## Example:\n  ## limits:\n  ##    cpu: 1000m\n  ##    memory: 2Gi\n  ##\n  limits: {}\n  ## Examples:\n  ## requests:\n  ##    cpu: 1000m\n  ##    memory: 2Gi\n  ##\n  requests: {}\n\n## Configure RabbitMQ containers' extra options for liveness probe\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n## @param livenessProbe.enabled Enable livenessProbe\n## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n## @param livenessProbe.periodSeconds Period seconds for livenessProbe\n## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n## @param livenessProbe.failureThreshold Failure threshold for livenessProbe\n## @param livenessProbe.successThreshold Success threshold for livenessProbe\n##\nlivenessProbe:\n  enabled: true\n  initialDelaySeconds: 120\n  timeoutSeconds: 20\n  periodSeconds: 30\n  failureThreshold: 6\n  successThreshold: 1\n## Configure RabbitMQ containers' extra options for readiness probe\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n## @param readinessProbe.enabled Enable readinessProbe\n## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n## @param readinessProbe.periodSeconds Period seconds for readinessProbe\n## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n## @param readinessProbe.failureThreshold Failure threshold for readinessProbe\n## @param readinessProbe.successThreshold Success threshold for readinessProbe\n##\nreadinessProbe:\n  enabled: true\n  initialDelaySeconds: 10\n  timeoutSeconds: 20\n  periodSeconds: 30\n  failureThreshold: 3\n  successThreshold: 1\n\n## Configure RabbitMQ containers' extra options for startup probe\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n## @param startupProbe.enabled Enable startupProbe\n## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n## @param startupProbe.periodSeconds Period seconds for startupProbe\n## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe\n## @param startupProbe.failureThreshold Failure threshold for startupProbe\n## @param startupProbe.successThreshold Success threshold for startupProbe\n##\nstartupProbe:\n  enabled: false\n  initialDelaySeconds: 10\n  timeoutSeconds: 20\n  periodSeconds: 30\n  failureThreshold: 3\n  successThreshold: 1\n\n## @param customLivenessProbe Override default liveness probe\n##\ncustomLivenessProbe: {}\n## @param customReadinessProbe Override default readiness probe\n##\ncustomReadinessProbe: {}\n## @param customStartupProbe Define a custom startup probe\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes\n##\ncustomStartupProbe: {}\n## @param initContainers Add init containers to the RabbitMQ pod\n## Example:\n## initContainers:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\ninitContainers: []\n## @param sidecars Add sidecar containers to the RabbitMQ pod\n## Example:\n## sidecars:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\nsidecars: []\n\n## Pod Disruption Budget configuration\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n##\npdb:\n  ## @param pdb.create Enable/disable a Pod Disruption Budget creation\n  ##\n  create: false\n  ## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled\n  ##\n  minAvailable: 1\n  ## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable\n  ##\n  maxUnavailable: \"\"\n\n## @section RBAC parameters\n##\n\n## RabbitMQ pods ServiceAccount\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n##\nserviceAccount:\n  ## @param serviceAccount.create Enable creation of ServiceAccount for RabbitMQ pods\n  ##\n  create: true\n  ## @param serviceAccount.name Name of the created serviceAccount\n  ## If not set and create is true, a name is generated using the rabbitmq.fullname template\n  ##\n  name: \"\"\n  ## @param serviceAccount.automountServiceAccountToken Auto-mount the service account token in the pod\n  ##\n  automountServiceAccountToken: true\n  ## @param serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.\n  ##\n  annotations: {}\n\n## Role Based Access\n## ref: https://kubernetes.io/docs/admin/authorization/rbac/\n##\nrbac:\n  ## @param rbac.create Whether RBAC rules should be created\n  ## binding RabbitMQ ServiceAccount to a role\n  ## that allows RabbitMQ pods querying the K8s API\n  ##\n  create: true\n\n## @section Persistence parameters\n##\n\npersistence:\n  ## @param persistence.enabled Enable RabbitMQ data persistence using PVC\n  ##\n  enabled: true\n  ## @param persistence.storageClass PVC Storage Class for RabbitMQ data volume\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\n  ##   GKE, AWS & OpenStack)\n  ##\n  storageClass: \"\"\n  ## @param persistence.selector Selector to match an existing Persistent Volume\n  ## selector:\n  ##   matchLabels:\n  ##     app: my-app\n  ##\n  selector: {}\n  ## @param persistence.accessModes PVC Access Modes for RabbitMQ data volume\n  ##\n  accessModes:\n    - ReadWriteOnce\n  ## @param persistence.existingClaim Provide an existing PersistentVolumeClaims\n  ## The value is evaluated as a template\n  ## So, for example, the name can depend on .Release or .Chart\n  ##\n  existingClaim: \"\"\n  ## @param persistence.mountPath The path the volume will be mounted at\n  ## Note: useful when using custom RabbitMQ images\n  ##\n  mountPath: /bitnami/rabbitmq/mnesia\n  ## @param persistence.subPath The subdirectory of the volume to mount to\n  ## Useful in dev environments and one PV for multiple services\n  ##\n  subPath: \"\"\n  ## @param persistence.size PVC Storage Request for RabbitMQ data volume\n  ## If you change this value, you might have to adjust `rabbitmq.diskFreeLimit` as well\n  ##\n  size: 8Gi\n  ## @param persistence.annotations Persistence annotations. Evaluated as a template\n  ## Example:\n  ## annotations:\n  ##   example.io/disk-volume-type: SSD\n  ##\n  annotations: {}\n\n## @section Exposure parameters\n##\n\n## Kubernetes service type\n##\nservice:\n  ## @param service.type Kubernetes Service type\n  ##\n  type: ClusterIP\n\n  ## @param service.portEnabled Amqp port. Cannot be disabled when `auth.tls.enabled` is `false`. Listener can be disabled with `listeners.tcp = none`.\n  ##\n  portEnabled: true\n  ## @param service.distPortEnabled Erlang distribution server port\n  ##\n  distPortEnabled: true\n  ## @param service.managerPortEnabled RabbitMQ Manager port\n  ## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables\n  ##\n  managerPortEnabled: true\n  ## @param service.epmdPortEnabled RabbitMQ EPMD Discovery service port\n  ##\n  epmdPortEnabled: true\n  ## Service ports\n  ## @param service.ports.amqp Amqp service port\n  ## @param service.ports.amqpTls Amqp TLS service port\n  ## @param service.ports.dist Erlang distribution service port\n  ## @param service.ports.manager RabbitMQ Manager service port\n  ## @param service.ports.metrics RabbitMQ Prometheues metrics service port\n  ## @param service.ports.epmd EPMD Discovery service port\n  ##\n  ports:\n    amqp: 5672\n    amqpTls: 5671\n    dist: 25672\n    manager: 15672\n    metrics: 9419\n    epmd: 4369\n  ## Service ports name\n  ## @param service.portNames.amqp Amqp service port name\n  ## @param service.portNames.amqpTls Amqp TLS service port name\n  ## @param service.portNames.dist Erlang distribution service port name\n  ## @param service.portNames.manager RabbitMQ Manager service port name\n  ## @param service.portNames.metrics RabbitMQ Prometheues metrics service port name\n  ## @param service.portNames.epmd EPMD Discovery service port name\n  ##\n  portNames:\n    amqp: \"amqp\"\n    amqpTls: \"amqp-ssl\"\n    dist: \"dist\"\n    manager: \"http-stats\"\n    metrics: \"metrics\"\n    epmd: \"epmd\"\n\n  ## Node ports to expose\n  ## @param service.nodePorts.amqp Node port for Ampq\n  ## @param service.nodePorts.amqpTls Node port for Ampq TLS\n  ## @param service.nodePorts.dist Node port for Erlang distribution\n  ## @param service.nodePorts.manager Node port for RabbitMQ Manager\n  ## @param service.nodePorts.epmd Node port for EPMD Discovery\n  ## @param service.nodePorts.metrics Node port for RabbitMQ Prometheues metrics\n  ##\n  nodePorts:\n    amqp: \"\"\n    amqpTls: \"\"\n    dist: \"\"\n    manager: \"\"\n    epmd: \"\"\n    metrics: \"\"\n  ## @param service.extraPorts Extra ports to expose in the service\n  ## E.g.:\n  ## extraPorts:\n  ## - name: new_svc_name\n  ##   port: 1234\n  ##   targetPort: 1234\n  ##\n  extraPorts: []\n  ## @param service.loadBalancerSourceRanges Address(es) that are allowed when service is `LoadBalancer`\n  ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n  ## e.g:\n  ## loadBalancerSourceRanges:\n  ## - 10.10.10.0/24\n  ##\n  loadBalancerSourceRanges: []\n  ## @param service.externalIPs Set the ExternalIPs\n  ##\n  externalIPs: []\n  ## @param service.externalTrafficPolicy Enable client source IP preservation\n  ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n  ##\n  externalTrafficPolicy: Cluster\n  ## @param service.loadBalancerIP Set the LoadBalancerIP\n  ##\n  loadBalancerIP: \"\"\n  ## @param service.clusterIP Kubernetes service Cluster IP\n  ## e.g.:\n  ## clusterIP: None\n  ##\n  clusterIP: \"\"\n  ## @param service.labels Service labels. Evaluated as a template\n  ##\n  labels: {}\n  ## @param service.annotations Service annotations. Evaluated as a template\n  ## Example:\n  ## annotations:\n  ##   service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0\n  ##\n  annotations: {}\n  ## @param service.annotationsHeadless Headless Service annotations. Evaluated as a template\n  ## Example:\n  ## annotations:\n  ##   external-dns.alpha.kubernetes.io/internal-hostname: rabbitmq.example.com\n  ##\n  annotationsHeadless: {}\n  ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"\n  ## If \"ClientIP\", consecutive client requests will be directed to the same Pod\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n  ##\n  sessionAffinity: None\n  ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity\n  ## sessionAffinityConfig:\n  ##   clientIP:\n  ##     timeoutSeconds: 300\n  ##\n  sessionAffinityConfig: {}\n\n## Configure the ingress resource that allows you to access the\n## RabbitMQ installation. Set up the URL\n## ref: https://kubernetes.io/docs/user-guide/ingress/\n##\ningress:\n  ## @param ingress.enabled Enable ingress resource for Management console\n  ##\n  enabled: false\n\n  ## @param ingress.path Path for the default host. You may need to set this to '/*' in order to use this with ALB ingress controllers.\n  ##\n  path: /\n\n  ## @param ingress.pathType Ingress path type\n  ##\n  pathType: ImplementationSpecific\n  ## @param ingress.hostname Default host for the ingress resource\n  ##\n  hostname: rabbitmq.local\n  ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.\n  ## For a full list of possible ingress annotations, please see\n  ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md\n  ## Use this parameter to set the required annotations for cert-manager, see\n  ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations\n  ##\n  ## e.g:\n  ## annotations:\n  ##   kubernetes.io/ingress.class: nginx\n  ##   cert-manager.io/cluster-issuer: cluster-issuer-name\n  ##\n  annotations: {}\n  ## @param ingress.tls Enable TLS configuration for the hostname defined at `ingress.hostname` parameter\n  ## TLS certificates will be retrieved from a TLS secret with name: {{- printf \"%s-tls\" .Values.ingress.hostname }}\n  ## You can:\n  ##   - Use the `ingress.secrets` parameter to create this TLS secret\n  ##   - Rely on cert-manager to create it by setting the corresponding annotations\n  ##   - Rely on Helm to create self-signed certificates by setting `ingress.selfSigned=true`\n  ##\n  tls: false\n  ## @param ingress.selfSigned Set this to true in order to create a TLS secret for this ingress record\n  ## using self-signed certificates generated by Helm\n  ##\n  selfSigned: false\n  ## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.\n  ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array\n  ## e.g:\n  ## extraHosts:\n  ##   - name: rabbitmq.local\n  ##     path: /\n  ##\n  extraHosts: []\n  ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host\n  ## e.g:\n  ## extraPaths:\n  ## - path: /*\n  ##   backend:\n  ##     serviceName: ssl-redirect\n  ##     servicePort: use-annotation\n  ##\n  extraPaths: []\n  ## @param ingress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template\n  ## Useful when looking for additional customization, such as using different backend\n  ##\n  extraRules: []\n  ## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.\n  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls\n  ## e.g:\n  ## extraTls:\n  ##   - hosts:\n  ##       - rabbitmq.local\n  ##     secretName: rabbitmq.local-tls\n  ##\n  extraTls: []\n  ## @param ingress.secrets Custom TLS certificates as secrets\n  ## NOTE: 'key' and 'certificate' are expected in PEM format\n  ## NOTE: 'name' should line up with a 'secretName' set further up\n  ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates\n  ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days\n  ## It is also possible to create and manage the certificates outside of this helm chart\n  ## Please see README.md for more information\n  ## e.g:\n  ## secrets:\n  ##   - name: rabbitmq.local-tls\n  ##     key: |-\n  ##       -----BEGIN RSA PRIVATE KEY-----\n  ##       ...\n  ##       -----END RSA PRIVATE KEY-----\n  ##     certificate: |-\n  ##       -----BEGIN CERTIFICATE-----\n  ##       ...\n  ##       -----END CERTIFICATE-----\n  ##\n  secrets: []\n  ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)\n  ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .\n  ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/\n  ##\n  ingressClassName: \"\"\n  ## @param ingress.existingSecret It is you own the certificate as secret.\n  existingSecret: \"\"\n\n## Network Policy configuration\n## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/\n##\nnetworkPolicy:\n  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources\n  ##\n  enabled: false\n  ## @param networkPolicy.allowExternal Don't require client label for connections\n  ## The Policy model to apply. When set to false, only pods with the correct\n  ## client label will have network access to the ports RabbitMQ is listening\n  ## on. When true, RabbitMQ will accept connections from any source\n  ## (with the correct destination port).\n  ##\n  allowExternal: true\n  ## @param networkPolicy.additionalRules Additional NetworkPolicy Ingress \"from\" rules to set. Note that all rules are OR-ed.\n  ## e.g:\n  ## additionalRules:\n  ##  - matchLabels:\n  ##    - role: frontend\n  ##  - matchExpressions:\n  ##    - key: role\n  ##      operator: In\n  ##      values:\n  ##        - frontend\n  ##\n  additionalRules: []\n\n## @section Metrics Parameters\n##\n\n## Prometheus Metrics\n##\nmetrics:\n  ## @param metrics.enabled Enable exposing RabbitMQ metrics to be gathered by Prometheus\n  ##\n  enabled: false\n  ## @param metrics.plugins Plugins to enable Prometheus metrics in RabbitMQ\n  ##\n  plugins: \"rabbitmq_prometheus\"\n  ## Prometheus pod annotations\n  ## @param metrics.podAnnotations [object] Annotations for enabling prometheus to access the metrics endpoint\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations:\n    prometheus.io/scrape: \"true\"\n    prometheus.io/port: \"{{ .Values.service.ports.metrics }}\"\n  ## Prometheus Service Monitor\n  ## ref: https://github.com/coreos/prometheus-operator\n  ##\n  serviceMonitor:\n    ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator\n    ##\n    enabled: false\n    ## @param metrics.serviceMonitor.namespace Specify the namespace in which the serviceMonitor resource will be created\n    ##\n    namespace: \"\"\n    ## @param metrics.serviceMonitor.interval Specify the interval at which metrics should be scraped\n    ##\n    interval: 30s\n    ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended\n    ## e.g:\n    ## scrapeTimeout: 30s\n    ##\n    scrapeTimeout: \"\"\n    ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.\n    ##\n    jobLabel: \"\"\n    ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping.\n    ##\n    relabelings: []\n    ## @param metrics.serviceMonitor.metricRelabelings MetricsRelabelConfigs to apply to samples before ingestion.\n    ##\n    metricRelabelings: []\n    ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels\n    ##\n    honorLabels: false\n    ## @param metrics.serviceMonitor.targetLabels Used to keep given service's labels in target\n    ## e.g:\n    ## - app.kubernetes.io/name\n    ##\n    targetLabels: {}\n    ## @param metrics.serviceMonitor.podTargetLabels Used to keep given pod's labels in target\n    ## e.g:\n    ## - app.kubernetes.io/name\n    ##\n    podTargetLabels: {}\n    ## @param metrics.serviceMonitor.path Define the path used by ServiceMonitor to scrap metrics\n    ## Could be /metrics for aggregated metrics or /metrics/per-object for more details\n    ##\n    path: \"\"\n    ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels\n    ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration\n    ##\n    ## selector:\n    ##   prometheus: my-prometheus\n    ##\n    selector: {}\n    ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor\n    ##\n    labels: {}\n    ## @param metrics.serviceMonitor.annotations Extra annotations for the ServiceMonitor\n    ##\n    annotations: {}\n\n  ## Custom PrometheusRule to be defined\n  ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart\n  ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n  ##\n  prometheusRule:\n    ## @param metrics.prometheusRule.enabled Set this to true to create prometheusRules for Prometheus operator\n    ##\n    enabled: false\n    ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so prometheusRules will be discovered by Prometheus\n    ##\n    additionalLabels: {}\n    ## @param metrics.prometheusRule.namespace namespace where prometheusRules resource should be created\n    ##\n    namespace: \"\"\n    ## List of rules, used as template by Helm.\n    ## @param metrics.prometheusRule.rules List of rules, used as template by Helm.\n    ## These are just examples rules inspired from https://awesome-prometheus-alerts.grep.to/rules.html\n    ## rules:\n    ##   - alert: RabbitmqDown\n    ##     expr: rabbitmq_up{service=\"{{ template \"common.names.fullname\" . }}\"} == 0\n    ##     for: 5m\n    ##     labels:\n    ##       severity: error\n    ##     annotations:\n    ##       summary: Rabbitmq down (instance {{ \"{{ $labels.instance }}\" }})\n    ##       description: RabbitMQ node down\n    ##   - alert: ClusterDown\n    ##     expr: |\n    ##       sum(rabbitmq_running{service=\"{{ template \"common.names.fullname\" . }}\"})\n    ##       < {{ .Values.replicaCount }}\n    ##     for: 5m\n    ##     labels:\n    ##       severity: error\n    ##     annotations:\n    ##       summary: Cluster down (instance {{ \"{{ $labels.instance }}\" }})\n    ##       description: |\n    ##           Less than {{ .Values.replicaCount }} nodes running in RabbitMQ cluster\n    ##           VALUE = {{ \"{{ $value }}\" }}\n    ##   - alert: ClusterPartition\n    ##     expr: rabbitmq_partitions{service=\"{{ template \"common.names.fullname\" . }}\"} > 0\n    ##     for: 5m\n    ##     labels:\n    ##       severity: error\n    ##     annotations:\n    ##       summary: Cluster partition (instance {{ \"{{ $labels.instance }}\" }})\n    ##       description: |\n    ##           Cluster partition\n    ##           VALUE = {{ \"{{ $value }}\" }}\n    ##   - alert: OutOfMemory\n    ##     expr: |\n    ##       rabbitmq_node_mem_used{service=\"{{ template \"common.names.fullname\" . }}\"}\n    ##       / rabbitmq_node_mem_limit{service=\"{{ template \"common.names.fullname\" . }}\"}\n    ##       * 100 > 90\n    ##     for: 5m\n    ##     labels:\n    ##       severity: warning\n    ##     annotations:\n    ##       summary: Out of memory (instance {{ \"{{ $labels.instance }}\" }})\n    ##       description: |\n    ##           Memory available for RabbmitMQ is low (< 10%)\\n  VALUE = {{ \"{{ $value }}\" }}\n    ##           LABELS: {{ \"{{ $labels }}\" }}\n    ##   - alert: TooManyConnections\n    ##     expr: rabbitmq_connectionsTotal{service=\"{{ template \"common.names.fullname\" . }}\"} > 1000\n    ##     for: 5m\n    ##     labels:\n    ##       severity: warning\n    ##     annotations:\n    ##       summary: Too many connections (instance {{ \"{{ $labels.instance }}\" }})\n    ##       description: |\n    ##           RabbitMQ instance has too many connections (> 1000)\n    ##           VALUE = {{ \"{{ $value }}\" }}\\n  LABELS: {{ \"{{ $labels }}\" }}\n    ##\n    rules: []\n\n## @section Init Container Parameters\n##\n\n## Init Container parameters\n## Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each component\n## values from the securityContext section of the component\n##\nvolumePermissions:\n  ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`\n  ##\n  enabled: false\n  ## @param volumePermissions.image.registry Init container volume-permissions image registry\n  ## @param volumePermissions.image.repository Init container volume-permissions image repository\n  ## @param volumePermissions.image.tag Init container volume-permissions image tag\n  ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy\n  ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 11-debian-11-r56\n    digest: \"\"\n    ## Specify a imagePullPolicy\n    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n    ##\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## Example:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## Init Container resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param volumePermissions.resources.limits Init container volume-permissions resource limits\n  ## @param volumePermissions.resources.requests Init container volume-permissions resource requests\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    ##\n    requests: {}\n  ## Init container' Security Context\n  ## Note: the chown of the data folder is done to containerSecurityContext.runAsUser\n  ## and not the below volumePermissions.containerSecurityContext.runAsUser\n  ## @param volumePermissions.containerSecurityContext.runAsUser User ID for the init container\n  ##\n  containerSecurityContext:\n    runAsUser: 0\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/Chart.yaml",
    "content": "annotations:\n  category: Database\napiVersion: v2\nappVersion: 7.0.5\ndependencies:\n- name: common\n  repository: https://charts.bitnami.com/bitnami\n  tags:\n  - bitnami-common\n  version: 2.x.x\ndescription: Redis(R) is an open source, advanced key-value store. It is often referred\n  to as a data structure server since keys can contain strings, hashes, lists, sets\n  and sorted sets.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/redis\nicon: https://bitnami.com/assets/stacks/redis/img/redis-stack-220x234.png\nkeywords:\n- redis\n- keyvalue\n- database\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: redis\nsources:\n- https://github.com/bitnami/containers/tree/main/bitnami/redis\nversion: 17.3.13\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/README.md",
    "content": "<!--- app-name: Redis&reg; -->\n\n# Bitnami package for Redis(R)\n\nRedis(R) is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.\n\n[Overview of Redis&reg;](http://redis.io)\n\nDisclaimer: Redis is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by Bitnami is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Ltd.\n                           \n## TL;DR\n\n```bash\n$ helm repo add my-repo https://charts.bitnami.com/bitnami\n$ helm install my-release my-repo/redis\n```\n\n## Introduction\n\nThis chart bootstraps a [Redis&reg;](https://github.com/bitnami/containers/tree/main/bitnami/redis) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n### Choose between Redis&reg; Helm Chart and Redis&reg; Cluster Helm Chart\n\nYou can choose any of the two Redis&reg; Helm charts for deploying a Redis&reg; cluster.\n\n1. [Redis&reg; Helm Chart](https://github.com/bitnami/charts/tree/main/bitnami/redis) will deploy a master-replica cluster, with the [option](https://github.com/bitnami/charts/tree/main/bitnami/redis#redis-sentinel-configuration-parameters) of enabling using Redis&reg; Sentinel.\n2. [Redis&reg; Cluster Helm Chart](https://github.com/bitnami/charts/tree/main/bitnami/redis-cluster) will deploy a Redis&reg; Cluster topology with sharding.\n\nThe main features of each chart are the following:\n\n| Redis&reg;                                     | Redis&reg; Cluster                                             |\n|--------------------------------------------------------|------------------------------------------------------------------------|\n| Supports multiple databases                            | Supports only one database. Better if you have a big dataset           |\n| Single write point (single master)                     | Multiple write points (multiple masters)                               |\n| ![Redis&reg; Topology](img/redis-topology.png) | ![Redis&reg; Cluster Topology](img/redis-cluster-topology.png) |\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n- PV provisioner support in the underlying infrastructure\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```bash\n$ helm install my-release my-repo/redis\n```\n\nThe command deploys Redis&reg; on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```bash\n$ helm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Parameters\n\n### Global parameters\n\n| Name                      | Description                                            | Value |\n| ------------------------- | ------------------------------------------------------ | ----- |\n| `global.imageRegistry`    | Global Docker image registry                           | `\"\"`  |\n| `global.imagePullSecrets` | Global Docker registry secret names as an array        | `[]`  |\n| `global.storageClass`     | Global StorageClass for Persistent Volume(s)           | `\"\"`  |\n| `global.redis.password`   | Global Redis&reg; password (overrides `auth.password`) | `\"\"`  |\n\n\n### Common parameters\n\n| Name                     | Description                                                                             | Value           |\n| ------------------------ | --------------------------------------------------------------------------------------- | --------------- |\n| `kubeVersion`            | Override Kubernetes version                                                             | `\"\"`            |\n| `nameOverride`           | String to partially override common.names.fullname                                      | `\"\"`            |\n| `fullnameOverride`       | String to fully override common.names.fullname                                          | `\"\"`            |\n| `commonLabels`           | Labels to add to all deployed objects                                                   | `{}`            |\n| `commonAnnotations`      | Annotations to add to all deployed objects                                              | `{}`            |\n| `secretAnnotations`      | Annotations to add to secret                                                            | `{}`            |\n| `clusterDomain`          | Kubernetes cluster domain name                                                          | `cluster.local` |\n| `extraDeploy`            | Array of extra objects to deploy with the release                                       | `[]`            |\n| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false`         |\n| `diagnosticMode.command` | Command to override all containers in the deployment                                    | `[\"sleep\"]`     |\n| `diagnosticMode.args`    | Args to override all containers in the deployment                                       | `[\"infinity\"]`  |\n\n\n### Redis&reg; Image parameters\n\n| Name                | Description                                                                                                | Value                 |\n| ------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------- |\n| `image.registry`    | Redis&reg; image registry                                                                                  | `docker.io`           |\n| `image.repository`  | Redis&reg; image repository                                                                                | `bitnami/redis`       |\n| `image.tag`         | Redis&reg; image tag (immutable tags are recommended)                                                      | `7.0.5-debian-11-r15` |\n| `image.digest`      | Redis&reg; image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                  |\n| `image.pullPolicy`  | Redis&reg; image pull policy                                                                               | `IfNotPresent`        |\n| `image.pullSecrets` | Redis&reg; image pull secrets                                                                              | `[]`                  |\n| `image.debug`       | Enable image debug mode                                                                                    | `false`               |\n\n\n### Redis&reg; common configuration parameters\n\n| Name                             | Description                                                                           | Value         |\n| -------------------------------- | ------------------------------------------------------------------------------------- | ------------- |\n| `architecture`                   | Redis&reg; architecture. Allowed values: `standalone` or `replication`                | `replication` |\n| `auth.enabled`                   | Enable password authentication                                                        | `true`        |\n| `auth.sentinel`                  | Enable password authentication on sentinels too                                       | `true`        |\n| `auth.password`                  | Redis&reg; password                                                                   | `\"\"`          |\n| `auth.existingSecret`            | The name of an existing secret with Redis&reg; credentials                            | `\"\"`          |\n| `auth.existingSecretPasswordKey` | Password key to be retrieved from existing secret                                     | `\"\"`          |\n| `auth.usePasswordFiles`          | Mount credentials as files instead of using an environment variable                   | `false`       |\n| `commonConfiguration`            | Common configuration to be added into the ConfigMap                                   | `\"\"`          |\n| `existingConfigmap`              | The name of an existing ConfigMap with your custom configuration for Redis&reg; nodes | `\"\"`          |\n\n\n### Redis&reg; master configuration parameters\n\n| Name                                                 | Description                                                                                           | Value                    |\n| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------ |\n| `master.count`                                       | Number of Redis&reg; master instances to deploy (experimental, requires additional configuration)     | `1`                      |\n| `master.configuration`                               | Configuration for Redis&reg; master nodes                                                             | `\"\"`                     |\n| `master.disableCommands`                             | Array with Redis&reg; commands to disable on master nodes                                             | `[\"FLUSHDB\",\"FLUSHALL\"]` |\n| `master.command`                                     | Override default container command (useful when using custom images)                                  | `[]`                     |\n| `master.args`                                        | Override default container args (useful when using custom images)                                     | `[]`                     |\n| `master.preExecCmds`                                 | Additional commands to run prior to starting Redis&reg; master                                        | `[]`                     |\n| `master.extraFlags`                                  | Array with additional command line flags for Redis&reg; master                                        | `[]`                     |\n| `master.extraEnvVars`                                | Array with extra environment variables to add to Redis&reg; master nodes                              | `[]`                     |\n| `master.extraEnvVarsCM`                              | Name of existing ConfigMap containing extra env vars for Redis&reg; master nodes                      | `\"\"`                     |\n| `master.extraEnvVarsSecret`                          | Name of existing Secret containing extra env vars for Redis&reg; master nodes                         | `\"\"`                     |\n| `master.containerPorts.redis`                        | Container port to open on Redis&reg; master nodes                                                     | `6379`                   |\n| `master.startupProbe.enabled`                        | Enable startupProbe on Redis&reg; master nodes                                                        | `false`                  |\n| `master.startupProbe.initialDelaySeconds`            | Initial delay seconds for startupProbe                                                                | `20`                     |\n| `master.startupProbe.periodSeconds`                  | Period seconds for startupProbe                                                                       | `5`                      |\n| `master.startupProbe.timeoutSeconds`                 | Timeout seconds for startupProbe                                                                      | `5`                      |\n| `master.startupProbe.failureThreshold`               | Failure threshold for startupProbe                                                                    | `5`                      |\n| `master.startupProbe.successThreshold`               | Success threshold for startupProbe                                                                    | `1`                      |\n| `master.livenessProbe.enabled`                       | Enable livenessProbe on Redis&reg; master nodes                                                       | `true`                   |\n| `master.livenessProbe.initialDelaySeconds`           | Initial delay seconds for livenessProbe                                                               | `20`                     |\n| `master.livenessProbe.periodSeconds`                 | Period seconds for livenessProbe                                                                      | `5`                      |\n| `master.livenessProbe.timeoutSeconds`                | Timeout seconds for livenessProbe                                                                     | `5`                      |\n| `master.livenessProbe.failureThreshold`              | Failure threshold for livenessProbe                                                                   | `5`                      |\n| `master.livenessProbe.successThreshold`              | Success threshold for livenessProbe                                                                   | `1`                      |\n| `master.readinessProbe.enabled`                      | Enable readinessProbe on Redis&reg; master nodes                                                      | `true`                   |\n| `master.readinessProbe.initialDelaySeconds`          | Initial delay seconds for readinessProbe                                                              | `20`                     |\n| `master.readinessProbe.periodSeconds`                | Period seconds for readinessProbe                                                                     | `5`                      |\n| `master.readinessProbe.timeoutSeconds`               | Timeout seconds for readinessProbe                                                                    | `1`                      |\n| `master.readinessProbe.failureThreshold`             | Failure threshold for readinessProbe                                                                  | `5`                      |\n| `master.readinessProbe.successThreshold`             | Success threshold for readinessProbe                                                                  | `1`                      |\n| `master.customStartupProbe`                          | Custom startupProbe that overrides the default one                                                    | `{}`                     |\n| `master.customLivenessProbe`                         | Custom livenessProbe that overrides the default one                                                   | `{}`                     |\n| `master.customReadinessProbe`                        | Custom readinessProbe that overrides the default one                                                  | `{}`                     |\n| `master.resources.limits`                            | The resources limits for the Redis&reg; master containers                                             | `{}`                     |\n| `master.resources.requests`                          | The requested resources for the Redis&reg; master containers                                          | `{}`                     |\n| `master.podSecurityContext.enabled`                  | Enabled Redis&reg; master pods' Security Context                                                      | `true`                   |\n| `master.podSecurityContext.fsGroup`                  | Set Redis&reg; master pod's Security Context fsGroup                                                  | `1001`                   |\n| `master.containerSecurityContext.enabled`            | Enabled Redis&reg; master containers' Security Context                                                | `true`                   |\n| `master.containerSecurityContext.runAsUser`          | Set Redis&reg; master containers' Security Context runAsUser                                          | `1001`                   |\n| `master.kind`                                        | Use either Deployment or StatefulSet (default)                                                        | `StatefulSet`            |\n| `master.schedulerName`                               | Alternate scheduler for Redis&reg; master pods                                                        | `\"\"`                     |\n| `master.updateStrategy.type`                         | Redis&reg; master statefulset strategy type                                                           | `RollingUpdate`          |\n| `master.minReadySeconds`                             | How many seconds a pod needs to be ready before killing the next, during update                       | `0`                      |\n| `master.priorityClassName`                           | Redis&reg; master pods' priorityClassName                                                             | `\"\"`                     |\n| `master.hostAliases`                                 | Redis&reg; master pods host aliases                                                                   | `[]`                     |\n| `master.podLabels`                                   | Extra labels for Redis&reg; master pods                                                               | `{}`                     |\n| `master.podAnnotations`                              | Annotations for Redis&reg; master pods                                                                | `{}`                     |\n| `master.shareProcessNamespace`                       | Share a single process namespace between all of the containers in Redis&reg; master pods              | `false`                  |\n| `master.podAffinityPreset`                           | Pod affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`            | `\"\"`                     |\n| `master.podAntiAffinityPreset`                       | Pod anti-affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`       | `soft`                   |\n| `master.nodeAffinityPreset.type`                     | Node affinity preset type. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`      | `\"\"`                     |\n| `master.nodeAffinityPreset.key`                      | Node label key to match. Ignored if `master.affinity` is set                                          | `\"\"`                     |\n| `master.nodeAffinityPreset.values`                   | Node label values to match. Ignored if `master.affinity` is set                                       | `[]`                     |\n| `master.affinity`                                    | Affinity for Redis&reg; master pods assignment                                                        | `{}`                     |\n| `master.nodeSelector`                                | Node labels for Redis&reg; master pods assignment                                                     | `{}`                     |\n| `master.tolerations`                                 | Tolerations for Redis&reg; master pods assignment                                                     | `[]`                     |\n| `master.topologySpreadConstraints`                   | Spread Constraints for Redis&reg; master pod assignment                                               | `[]`                     |\n| `master.dnsPolicy`                                   | DNS Policy for Redis&reg; master pod                                                                  | `\"\"`                     |\n| `master.dnsConfig`                                   | DNS Configuration for Redis&reg; master pod                                                           | `{}`                     |\n| `master.lifecycleHooks`                              | for the Redis&reg; master container(s) to automate configuration before or after startup              | `{}`                     |\n| `master.extraVolumes`                                | Optionally specify extra list of additional volumes for the Redis&reg; master pod(s)                  | `[]`                     |\n| `master.extraVolumeMounts`                           | Optionally specify extra list of additional volumeMounts for the Redis&reg; master container(s)       | `[]`                     |\n| `master.sidecars`                                    | Add additional sidecar containers to the Redis&reg; master pod(s)                                     | `[]`                     |\n| `master.initContainers`                              | Add additional init containers to the Redis&reg; master pod(s)                                        | `[]`                     |\n| `master.persistence.enabled`                         | Enable persistence on Redis&reg; master nodes using Persistent Volume Claims                          | `true`                   |\n| `master.persistence.medium`                          | Provide a medium for `emptyDir` volumes.                                                              | `\"\"`                     |\n| `master.persistence.sizeLimit`                       | Set this to enable a size limit for `emptyDir` volumes.                                               | `\"\"`                     |\n| `master.persistence.path`                            | The path the volume will be mounted at on Redis&reg; master containers                                | `/data`                  |\n| `master.persistence.subPath`                         | The subdirectory of the volume to mount on Redis&reg; master containers                               | `\"\"`                     |\n| `master.persistence.subPathExpr`                     | Used to construct the subPath subdirectory of the volume to mount on Redis&reg; master containers     | `\"\"`                     |\n| `master.persistence.storageClass`                    | Persistent Volume storage class                                                                       | `\"\"`                     |\n| `master.persistence.accessModes`                     | Persistent Volume access modes                                                                        | `[\"ReadWriteOnce\"]`      |\n| `master.persistence.size`                            | Persistent Volume size                                                                                | `8Gi`                    |\n| `master.persistence.annotations`                     | Additional custom annotations for the PVC                                                             | `{}`                     |\n| `master.persistence.selector`                        | Additional labels to match for the PVC                                                                | `{}`                     |\n| `master.persistence.dataSource`                      | Custom PVC data source                                                                                | `{}`                     |\n| `master.persistence.existingClaim`                   | Use a existing PVC which must be created manually before bound                                        | `\"\"`                     |\n| `master.service.type`                                | Redis&reg; master service type                                                                        | `ClusterIP`              |\n| `master.service.ports.redis`                         | Redis&reg; master service port                                                                        | `6379`                   |\n| `master.service.nodePorts.redis`                     | Node port for Redis&reg; master                                                                       | `\"\"`                     |\n| `master.service.externalTrafficPolicy`               | Redis&reg; master service external traffic policy                                                     | `Cluster`                |\n| `master.service.extraPorts`                          | Extra ports to expose (normally used with the `sidecar` value)                                        | `[]`                     |\n| `master.service.internalTrafficPolicy`               | Redis&reg; master service internal traffic policy (requires Kubernetes v1.22 or greater to be usable) | `Cluster`                |\n| `master.service.clusterIP`                           | Redis&reg; master service Cluster IP                                                                  | `\"\"`                     |\n| `master.service.loadBalancerIP`                      | Redis&reg; master service Load Balancer IP                                                            | `\"\"`                     |\n| `master.service.loadBalancerSourceRanges`            | Redis&reg; master service Load Balancer sources                                                       | `[]`                     |\n| `master.service.annotations`                         | Additional custom annotations for Redis&reg; master service                                           | `{}`                     |\n| `master.service.sessionAffinity`                     | Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"                                  | `None`                   |\n| `master.service.sessionAffinityConfig`               | Additional settings for the sessionAffinity                                                           | `{}`                     |\n| `master.terminationGracePeriodSeconds`               | Integer setting the termination grace period for the redis-master pods                                | `30`                     |\n| `master.serviceAccount.create`                       | Specifies whether a ServiceAccount should be created                                                  | `false`                  |\n| `master.serviceAccount.name`                         | The name of the ServiceAccount to use.                                                                | `\"\"`                     |\n| `master.serviceAccount.automountServiceAccountToken` | Whether to auto mount the service account token                                                       | `true`                   |\n| `master.serviceAccount.annotations`                  | Additional custom annotations for the ServiceAccount                                                  | `{}`                     |\n\n\n### Redis&reg; replicas configuration parameters\n\n| Name                                                  | Description                                                                                             | Value                    |\n| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------ |\n| `replica.replicaCount`                                | Number of Redis&reg; replicas to deploy                                                                 | `3`                      |\n| `replica.configuration`                               | Configuration for Redis&reg; replicas nodes                                                             | `\"\"`                     |\n| `replica.disableCommands`                             | Array with Redis&reg; commands to disable on replicas nodes                                             | `[\"FLUSHDB\",\"FLUSHALL\"]` |\n| `replica.command`                                     | Override default container command (useful when using custom images)                                    | `[]`                     |\n| `replica.args`                                        | Override default container args (useful when using custom images)                                       | `[]`                     |\n| `replica.preExecCmds`                                 | Additional commands to run prior to starting Redis&reg; replicas                                        | `[]`                     |\n| `replica.extraFlags`                                  | Array with additional command line flags for Redis&reg; replicas                                        | `[]`                     |\n| `replica.extraEnvVars`                                | Array with extra environment variables to add to Redis&reg; replicas nodes                              | `[]`                     |\n| `replica.extraEnvVarsCM`                              | Name of existing ConfigMap containing extra env vars for Redis&reg; replicas nodes                      | `\"\"`                     |\n| `replica.extraEnvVarsSecret`                          | Name of existing Secret containing extra env vars for Redis&reg; replicas nodes                         | `\"\"`                     |\n| `replica.externalMaster.enabled`                      | Use external master for bootstrapping                                                                   | `false`                  |\n| `replica.externalMaster.host`                         | External master host to bootstrap from                                                                  | `\"\"`                     |\n| `replica.externalMaster.port`                         | Port for Redis service external master host                                                             | `6379`                   |\n| `replica.containerPorts.redis`                        | Container port to open on Redis&reg; replicas nodes                                                     | `6379`                   |\n| `replica.startupProbe.enabled`                        | Enable startupProbe on Redis&reg; replicas nodes                                                        | `true`                   |\n| `replica.startupProbe.initialDelaySeconds`            | Initial delay seconds for startupProbe                                                                  | `10`                     |\n| `replica.startupProbe.periodSeconds`                  | Period seconds for startupProbe                                                                         | `10`                     |\n| `replica.startupProbe.timeoutSeconds`                 | Timeout seconds for startupProbe                                                                        | `5`                      |\n| `replica.startupProbe.failureThreshold`               | Failure threshold for startupProbe                                                                      | `22`                     |\n| `replica.startupProbe.successThreshold`               | Success threshold for startupProbe                                                                      | `1`                      |\n| `replica.livenessProbe.enabled`                       | Enable livenessProbe on Redis&reg; replicas nodes                                                       | `true`                   |\n| `replica.livenessProbe.initialDelaySeconds`           | Initial delay seconds for livenessProbe                                                                 | `20`                     |\n| `replica.livenessProbe.periodSeconds`                 | Period seconds for livenessProbe                                                                        | `5`                      |\n| `replica.livenessProbe.timeoutSeconds`                | Timeout seconds for livenessProbe                                                                       | `5`                      |\n| `replica.livenessProbe.failureThreshold`              | Failure threshold for livenessProbe                                                                     | `5`                      |\n| `replica.livenessProbe.successThreshold`              | Success threshold for livenessProbe                                                                     | `1`                      |\n| `replica.readinessProbe.enabled`                      | Enable readinessProbe on Redis&reg; replicas nodes                                                      | `true`                   |\n| `replica.readinessProbe.initialDelaySeconds`          | Initial delay seconds for readinessProbe                                                                | `20`                     |\n| `replica.readinessProbe.periodSeconds`                | Period seconds for readinessProbe                                                                       | `5`                      |\n| `replica.readinessProbe.timeoutSeconds`               | Timeout seconds for readinessProbe                                                                      | `1`                      |\n| `replica.readinessProbe.failureThreshold`             | Failure threshold for readinessProbe                                                                    | `5`                      |\n| `replica.readinessProbe.successThreshold`             | Success threshold for readinessProbe                                                                    | `1`                      |\n| `replica.customStartupProbe`                          | Custom startupProbe that overrides the default one                                                      | `{}`                     |\n| `replica.customLivenessProbe`                         | Custom livenessProbe that overrides the default one                                                     | `{}`                     |\n| `replica.customReadinessProbe`                        | Custom readinessProbe that overrides the default one                                                    | `{}`                     |\n| `replica.resources.limits`                            | The resources limits for the Redis&reg; replicas containers                                             | `{}`                     |\n| `replica.resources.requests`                          | The requested resources for the Redis&reg; replicas containers                                          | `{}`                     |\n| `replica.podSecurityContext.enabled`                  | Enabled Redis&reg; replicas pods' Security Context                                                      | `true`                   |\n| `replica.podSecurityContext.fsGroup`                  | Set Redis&reg; replicas pod's Security Context fsGroup                                                  | `1001`                   |\n| `replica.containerSecurityContext.enabled`            | Enabled Redis&reg; replicas containers' Security Context                                                | `true`                   |\n| `replica.containerSecurityContext.runAsUser`          | Set Redis&reg; replicas containers' Security Context runAsUser                                          | `1001`                   |\n| `replica.schedulerName`                               | Alternate scheduler for Redis&reg; replicas pods                                                        | `\"\"`                     |\n| `replica.updateStrategy.type`                         | Redis&reg; replicas statefulset strategy type                                                           | `RollingUpdate`          |\n| `replica.minReadySeconds`                             | How many seconds a pod needs to be ready before killing the next, during update                         | `0`                      |\n| `replica.priorityClassName`                           | Redis&reg; replicas pods' priorityClassName                                                             | `\"\"`                     |\n| `replica.podManagementPolicy`                         | podManagementPolicy to manage scaling operation of %%MAIN_CONTAINER_NAME%% pods                         | `\"\"`                     |\n| `replica.hostAliases`                                 | Redis&reg; replicas pods host aliases                                                                   | `[]`                     |\n| `replica.podLabels`                                   | Extra labels for Redis&reg; replicas pods                                                               | `{}`                     |\n| `replica.podAnnotations`                              | Annotations for Redis&reg; replicas pods                                                                | `{}`                     |\n| `replica.shareProcessNamespace`                       | Share a single process namespace between all of the containers in Redis&reg; replicas pods              | `false`                  |\n| `replica.podAffinityPreset`                           | Pod affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`             | `\"\"`                     |\n| `replica.podAntiAffinityPreset`                       | Pod anti-affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`        | `soft`                   |\n| `replica.nodeAffinityPreset.type`                     | Node affinity preset type. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`       | `\"\"`                     |\n| `replica.nodeAffinityPreset.key`                      | Node label key to match. Ignored if `replica.affinity` is set                                           | `\"\"`                     |\n| `replica.nodeAffinityPreset.values`                   | Node label values to match. Ignored if `replica.affinity` is set                                        | `[]`                     |\n| `replica.affinity`                                    | Affinity for Redis&reg; replicas pods assignment                                                        | `{}`                     |\n| `replica.nodeSelector`                                | Node labels for Redis&reg; replicas pods assignment                                                     | `{}`                     |\n| `replica.tolerations`                                 | Tolerations for Redis&reg; replicas pods assignment                                                     | `[]`                     |\n| `replica.topologySpreadConstraints`                   | Spread Constraints for Redis&reg; replicas pod assignment                                               | `[]`                     |\n| `replica.dnsPolicy`                                   | DNS Policy for Redis&reg; replica pods                                                                  | `\"\"`                     |\n| `replica.dnsConfig`                                   | DNS Configuration for Redis&reg; replica pods                                                           | `{}`                     |\n| `replica.lifecycleHooks`                              | for the Redis&reg; replica container(s) to automate configuration before or after startup               | `{}`                     |\n| `replica.extraVolumes`                                | Optionally specify extra list of additional volumes for the Redis&reg; replicas pod(s)                  | `[]`                     |\n| `replica.extraVolumeMounts`                           | Optionally specify extra list of additional volumeMounts for the Redis&reg; replicas container(s)       | `[]`                     |\n| `replica.sidecars`                                    | Add additional sidecar containers to the Redis&reg; replicas pod(s)                                     | `[]`                     |\n| `replica.initContainers`                              | Add additional init containers to the Redis&reg; replicas pod(s)                                        | `[]`                     |\n| `replica.persistence.enabled`                         | Enable persistence on Redis&reg; replicas nodes using Persistent Volume Claims                          | `true`                   |\n| `replica.persistence.medium`                          | Provide a medium for `emptyDir` volumes.                                                                | `\"\"`                     |\n| `replica.persistence.sizeLimit`                       | Set this to enable a size limit for `emptyDir` volumes.                                                 | `\"\"`                     |\n| `replica.persistence.path`                            | The path the volume will be mounted at on Redis&reg; replicas containers                                | `/data`                  |\n| `replica.persistence.subPath`                         | The subdirectory of the volume to mount on Redis&reg; replicas containers                               | `\"\"`                     |\n| `replica.persistence.subPathExpr`                     | Used to construct the subPath subdirectory of the volume to mount on Redis&reg; replicas containers     | `\"\"`                     |\n| `replica.persistence.storageClass`                    | Persistent Volume storage class                                                                         | `\"\"`                     |\n| `replica.persistence.accessModes`                     | Persistent Volume access modes                                                                          | `[\"ReadWriteOnce\"]`      |\n| `replica.persistence.size`                            | Persistent Volume size                                                                                  | `8Gi`                    |\n| `replica.persistence.annotations`                     | Additional custom annotations for the PVC                                                               | `{}`                     |\n| `replica.persistence.selector`                        | Additional labels to match for the PVC                                                                  | `{}`                     |\n| `replica.persistence.dataSource`                      | Custom PVC data source                                                                                  | `{}`                     |\n| `replica.persistence.existingClaim`                   | Use a existing PVC which must be created manually before bound                                          | `\"\"`                     |\n| `replica.service.type`                                | Redis&reg; replicas service type                                                                        | `ClusterIP`              |\n| `replica.service.ports.redis`                         | Redis&reg; replicas service port                                                                        | `6379`                   |\n| `replica.service.nodePorts.redis`                     | Node port for Redis&reg; replicas                                                                       | `\"\"`                     |\n| `replica.service.externalTrafficPolicy`               | Redis&reg; replicas service external traffic policy                                                     | `Cluster`                |\n| `replica.service.internalTrafficPolicy`               | Redis&reg; replicas service internal traffic policy (requires Kubernetes v1.22 or greater to be usable) | `Cluster`                |\n| `replica.service.extraPorts`                          | Extra ports to expose (normally used with the `sidecar` value)                                          | `[]`                     |\n| `replica.service.clusterIP`                           | Redis&reg; replicas service Cluster IP                                                                  | `\"\"`                     |\n| `replica.service.loadBalancerIP`                      | Redis&reg; replicas service Load Balancer IP                                                            | `\"\"`                     |\n| `replica.service.loadBalancerSourceRanges`            | Redis&reg; replicas service Load Balancer sources                                                       | `[]`                     |\n| `replica.service.annotations`                         | Additional custom annotations for Redis&reg; replicas service                                           | `{}`                     |\n| `replica.service.sessionAffinity`                     | Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"                                    | `None`                   |\n| `replica.service.sessionAffinityConfig`               | Additional settings for the sessionAffinity                                                             | `{}`                     |\n| `replica.terminationGracePeriodSeconds`               | Integer setting the termination grace period for the redis-replicas pods                                | `30`                     |\n| `replica.autoscaling.enabled`                         | Enable replica autoscaling settings                                                                     | `false`                  |\n| `replica.autoscaling.minReplicas`                     | Minimum replicas for the pod autoscaling                                                                | `1`                      |\n| `replica.autoscaling.maxReplicas`                     | Maximum replicas for the pod autoscaling                                                                | `11`                     |\n| `replica.autoscaling.targetCPU`                       | Percentage of CPU to consider when autoscaling                                                          | `\"\"`                     |\n| `replica.autoscaling.targetMemory`                    | Percentage of Memory to consider when autoscaling                                                       | `\"\"`                     |\n| `replica.serviceAccount.create`                       | Specifies whether a ServiceAccount should be created                                                    | `false`                  |\n| `replica.serviceAccount.name`                         | The name of the ServiceAccount to use.                                                                  | `\"\"`                     |\n| `replica.serviceAccount.automountServiceAccountToken` | Whether to auto mount the service account token                                                         | `true`                   |\n| `replica.serviceAccount.annotations`                  | Additional custom annotations for the ServiceAccount                                                    | `{}`                     |\n\n\n### Redis&reg; Sentinel configuration parameters\n\n| Name                                          | Description                                                                                                                                 | Value                    |\n| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n| `sentinel.enabled`                            | Use Redis&reg; Sentinel on Redis&reg; pods.                                                                                                 | `false`                  |\n| `sentinel.image.registry`                     | Redis&reg; Sentinel image registry                                                                                                          | `docker.io`              |\n| `sentinel.image.repository`                   | Redis&reg; Sentinel image repository                                                                                                        | `bitnami/redis-sentinel` |\n| `sentinel.image.tag`                          | Redis&reg; Sentinel image tag (immutable tags are recommended)                                                                              | `7.0.5-debian-11-r14`    |\n| `sentinel.image.digest`                       | Redis&reg; Sentinel image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                         | `\"\"`                     |\n| `sentinel.image.pullPolicy`                   | Redis&reg; Sentinel image pull policy                                                                                                       | `IfNotPresent`           |\n| `sentinel.image.pullSecrets`                  | Redis&reg; Sentinel image pull secrets                                                                                                      | `[]`                     |\n| `sentinel.image.debug`                        | Enable image debug mode                                                                                                                     | `false`                  |\n| `sentinel.masterSet`                          | Master set name                                                                                                                             | `mymaster`               |\n| `sentinel.quorum`                             | Sentinel Quorum                                                                                                                             | `2`                      |\n| `sentinel.getMasterTimeout`                   | Amount of time to allow before get_sentinel_master_info() times out.                                                                        | `220`                    |\n| `sentinel.automateClusterRecovery`            | Automate cluster recovery in cases where the last replica is not considered a good replica and Sentinel won't automatically failover to it. | `false`                  |\n| `sentinel.downAfterMilliseconds`              | Timeout for detecting a Redis&reg; node is down                                                                                             | `60000`                  |\n| `sentinel.failoverTimeout`                    | Timeout for performing a election failover                                                                                                  | `180000`                 |\n| `sentinel.parallelSyncs`                      | Number of replicas that can be reconfigured in parallel to use the new master after a failover                                              | `1`                      |\n| `sentinel.configuration`                      | Configuration for Redis&reg; Sentinel nodes                                                                                                 | `\"\"`                     |\n| `sentinel.command`                            | Override default container command (useful when using custom images)                                                                        | `[]`                     |\n| `sentinel.args`                               | Override default container args (useful when using custom images)                                                                           | `[]`                     |\n| `sentinel.preExecCmds`                        | Additional commands to run prior to starting Redis&reg; Sentinel                                                                            | `[]`                     |\n| `sentinel.extraEnvVars`                       | Array with extra environment variables to add to Redis&reg; Sentinel nodes                                                                  | `[]`                     |\n| `sentinel.extraEnvVarsCM`                     | Name of existing ConfigMap containing extra env vars for Redis&reg; Sentinel nodes                                                          | `\"\"`                     |\n| `sentinel.extraEnvVarsSecret`                 | Name of existing Secret containing extra env vars for Redis&reg; Sentinel nodes                                                             | `\"\"`                     |\n| `sentinel.externalMaster.enabled`             | Use external master for bootstrapping                                                                                                       | `false`                  |\n| `sentinel.externalMaster.host`                | External master host to bootstrap from                                                                                                      | `\"\"`                     |\n| `sentinel.externalMaster.port`                | Port for Redis service external master host                                                                                                 | `6379`                   |\n| `sentinel.containerPorts.sentinel`            | Container port to open on Redis&reg; Sentinel nodes                                                                                         | `26379`                  |\n| `sentinel.startupProbe.enabled`               | Enable startupProbe on Redis&reg; Sentinel nodes                                                                                            | `true`                   |\n| `sentinel.startupProbe.initialDelaySeconds`   | Initial delay seconds for startupProbe                                                                                                      | `10`                     |\n| `sentinel.startupProbe.periodSeconds`         | Period seconds for startupProbe                                                                                                             | `10`                     |\n| `sentinel.startupProbe.timeoutSeconds`        | Timeout seconds for startupProbe                                                                                                            | `5`                      |\n| `sentinel.startupProbe.failureThreshold`      | Failure threshold for startupProbe                                                                                                          | `22`                     |\n| `sentinel.startupProbe.successThreshold`      | Success threshold for startupProbe                                                                                                          | `1`                      |\n| `sentinel.livenessProbe.enabled`              | Enable livenessProbe on Redis&reg; Sentinel nodes                                                                                           | `true`                   |\n| `sentinel.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                                                                     | `20`                     |\n| `sentinel.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                                                            | `5`                      |\n| `sentinel.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                                                           | `5`                      |\n| `sentinel.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                                                         | `5`                      |\n| `sentinel.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                                                         | `1`                      |\n| `sentinel.readinessProbe.enabled`             | Enable readinessProbe on Redis&reg; Sentinel nodes                                                                                          | `true`                   |\n| `sentinel.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                                                                    | `20`                     |\n| `sentinel.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                                                           | `5`                      |\n| `sentinel.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                                                          | `1`                      |\n| `sentinel.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                                                        | `5`                      |\n| `sentinel.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                                                        | `1`                      |\n| `sentinel.customStartupProbe`                 | Custom startupProbe that overrides the default one                                                                                          | `{}`                     |\n| `sentinel.customLivenessProbe`                | Custom livenessProbe that overrides the default one                                                                                         | `{}`                     |\n| `sentinel.customReadinessProbe`               | Custom readinessProbe that overrides the default one                                                                                        | `{}`                     |\n| `sentinel.persistence.enabled`                | Enable persistence on Redis&reg; sentinel nodes using Persistent Volume Claims (Experimental)                                               | `false`                  |\n| `sentinel.persistence.storageClass`           | Persistent Volume storage class                                                                                                             | `\"\"`                     |\n| `sentinel.persistence.accessModes`            | Persistent Volume access modes                                                                                                              | `[\"ReadWriteOnce\"]`      |\n| `sentinel.persistence.size`                   | Persistent Volume size                                                                                                                      | `100Mi`                  |\n| `sentinel.persistence.annotations`            | Additional custom annotations for the PVC                                                                                                   | `{}`                     |\n| `sentinel.persistence.selector`               | Additional labels to match for the PVC                                                                                                      | `{}`                     |\n| `sentinel.persistence.dataSource`             | Custom PVC data source                                                                                                                      | `{}`                     |\n| `sentinel.persistence.medium`                 | Provide a medium for `emptyDir` volumes.                                                                                                    | `\"\"`                     |\n| `sentinel.resources.limits`                   | The resources limits for the Redis&reg; Sentinel containers                                                                                 | `{}`                     |\n| `sentinel.resources.requests`                 | The requested resources for the Redis&reg; Sentinel containers                                                                              | `{}`                     |\n| `sentinel.containerSecurityContext.enabled`   | Enabled Redis&reg; Sentinel containers' Security Context                                                                                    | `true`                   |\n| `sentinel.containerSecurityContext.runAsUser` | Set Redis&reg; Sentinel containers' Security Context runAsUser                                                                              | `1001`                   |\n| `sentinel.lifecycleHooks`                     | for the Redis&reg; sentinel container(s) to automate configuration before or after startup                                                  | `{}`                     |\n| `sentinel.extraVolumes`                       | Optionally specify extra list of additional volumes for the Redis&reg; Sentinel                                                             | `[]`                     |\n| `sentinel.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the Redis&reg; Sentinel container(s)                                           | `[]`                     |\n| `sentinel.service.type`                       | Redis&reg; Sentinel service type                                                                                                            | `ClusterIP`              |\n| `sentinel.service.ports.redis`                | Redis&reg; service port for Redis&reg;                                                                                                      | `6379`                   |\n| `sentinel.service.ports.sentinel`             | Redis&reg; service port for Redis&reg; Sentinel                                                                                             | `26379`                  |\n| `sentinel.service.nodePorts.redis`            | Node port for Redis&reg;                                                                                                                    | `\"\"`                     |\n| `sentinel.service.nodePorts.sentinel`         | Node port for Sentinel                                                                                                                      | `\"\"`                     |\n| `sentinel.service.externalTrafficPolicy`      | Redis&reg; Sentinel service external traffic policy                                                                                         | `Cluster`                |\n| `sentinel.service.extraPorts`                 | Extra ports to expose (normally used with the `sidecar` value)                                                                              | `[]`                     |\n| `sentinel.service.clusterIP`                  | Redis&reg; Sentinel service Cluster IP                                                                                                      | `\"\"`                     |\n| `sentinel.service.loadBalancerIP`             | Redis&reg; Sentinel service Load Balancer IP                                                                                                | `\"\"`                     |\n| `sentinel.service.loadBalancerSourceRanges`   | Redis&reg; Sentinel service Load Balancer sources                                                                                           | `[]`                     |\n| `sentinel.service.annotations`                | Additional custom annotations for Redis&reg; Sentinel service                                                                               | `{}`                     |\n| `sentinel.service.sessionAffinity`            | Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"                                                                        | `None`                   |\n| `sentinel.service.sessionAffinityConfig`      | Additional settings for the sessionAffinity                                                                                                 | `{}`                     |\n| `sentinel.terminationGracePeriodSeconds`      | Integer setting the termination grace period for the redis-node pods                                                                        | `30`                     |\n\n\n### Other Parameters\n\n| Name                                          | Description                                                                                                                                 | Value   |\n| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- |\n| `networkPolicy.enabled`                       | Enable creation of NetworkPolicy resources                                                                                                  | `false` |\n| `networkPolicy.allowExternal`                 | Don't require client label for connections                                                                                                  | `true`  |\n| `networkPolicy.extraIngress`                  | Add extra ingress rules to the NetworkPolicy                                                                                                | `[]`    |\n| `networkPolicy.extraEgress`                   | Add extra egress rules to the NetworkPolicy                                                                                                 | `[]`    |\n| `networkPolicy.ingressNSMatchLabels`          | Labels to match to allow traffic from other namespaces                                                                                      | `{}`    |\n| `networkPolicy.ingressNSPodMatchLabels`       | Pod labels to match to allow traffic from other namespaces                                                                                  | `{}`    |\n| `podSecurityPolicy.create`                    | Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later | `false` |\n| `podSecurityPolicy.enabled`                   | Enable PodSecurityPolicy's RBAC rules                                                                                                       | `false` |\n| `rbac.create`                                 | Specifies whether RBAC resources should be created                                                                                          | `false` |\n| `rbac.rules`                                  | Custom RBAC rules to set                                                                                                                    | `[]`    |\n| `serviceAccount.create`                       | Specifies whether a ServiceAccount should be created                                                                                        | `true`  |\n| `serviceAccount.name`                         | The name of the ServiceAccount to use.                                                                                                      | `\"\"`    |\n| `serviceAccount.automountServiceAccountToken` | Whether to auto mount the service account token                                                                                             | `true`  |\n| `serviceAccount.annotations`                  | Additional custom annotations for the ServiceAccount                                                                                        | `{}`    |\n| `pdb.create`                                  | Specifies whether a PodDisruptionBudget should be created                                                                                   | `false` |\n| `pdb.minAvailable`                            | Min number of pods that must still be available after the eviction                                                                          | `1`     |\n| `pdb.maxUnavailable`                          | Max number of pods that can be unavailable after the eviction                                                                               | `\"\"`    |\n| `tls.enabled`                                 | Enable TLS traffic                                                                                                                          | `false` |\n| `tls.authClients`                             | Require clients to authenticate                                                                                                             | `true`  |\n| `tls.autoGenerated`                           | Enable autogenerated certificates                                                                                                           | `false` |\n| `tls.existingSecret`                          | The name of the existing secret that contains the TLS certificates                                                                          | `\"\"`    |\n| `tls.certificatesSecret`                      | DEPRECATED. Use existingSecret instead.                                                                                                     | `\"\"`    |\n| `tls.certFilename`                            | Certificate filename                                                                                                                        | `\"\"`    |\n| `tls.certKeyFilename`                         | Certificate Key filename                                                                                                                    | `\"\"`    |\n| `tls.certCAFilename`                          | CA Certificate filename                                                                                                                     | `\"\"`    |\n| `tls.dhParamsFilename`                        | File containing DH params (in order to support DH based ciphers)                                                                            | `\"\"`    |\n\n\n### Metrics Parameters\n\n| Name                                         | Description                                                                                                         | Value                    |\n| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n| `metrics.enabled`                            | Start a sidecar prometheus exporter to expose Redis&reg; metrics                                                    | `false`                  |\n| `metrics.image.registry`                     | Redis&reg; Exporter image registry                                                                                  | `docker.io`              |\n| `metrics.image.repository`                   | Redis&reg; Exporter image repository                                                                                | `bitnami/redis-exporter` |\n| `metrics.image.tag`                          | Redis&reg; Exporter image tag (immutable tags are recommended)                                                      | `1.45.0-debian-11-r1`    |\n| `metrics.image.digest`                       | Redis&reg; Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                     |\n| `metrics.image.pullPolicy`                   | Redis&reg; Exporter image pull policy                                                                               | `IfNotPresent`           |\n| `metrics.image.pullSecrets`                  | Redis&reg; Exporter image pull secrets                                                                              | `[]`                     |\n| `metrics.command`                            | Override default metrics container init command (useful when using custom images)                                   | `[]`                     |\n| `metrics.redisTargetHost`                    | A way to specify an alternative Redis&reg; hostname                                                                 | `localhost`              |\n| `metrics.extraArgs`                          | Extra arguments for Redis&reg; exporter, for example:                                                               | `{}`                     |\n| `metrics.extraEnvVars`                       | Array with extra environment variables to add to Redis&reg; exporter                                                | `[]`                     |\n| `metrics.containerSecurityContext.enabled`   | Enabled Redis&reg; exporter containers' Security Context                                                            | `true`                   |\n| `metrics.containerSecurityContext.runAsUser` | Set Redis&reg; exporter containers' Security Context runAsUser                                                      | `1001`                   |\n| `metrics.extraVolumes`                       | Optionally specify extra list of additional volumes for the Redis&reg; metrics sidecar                              | `[]`                     |\n| `metrics.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the Redis&reg; metrics sidecar                         | `[]`                     |\n| `metrics.resources.limits`                   | The resources limits for the Redis&reg; exporter container                                                          | `{}`                     |\n| `metrics.resources.requests`                 | The requested resources for the Redis&reg; exporter container                                                       | `{}`                     |\n| `metrics.podLabels`                          | Extra labels for Redis&reg; exporter pods                                                                           | `{}`                     |\n| `metrics.podAnnotations`                     | Annotations for Redis&reg; exporter pods                                                                            | `{}`                     |\n| `metrics.service.type`                       | Redis&reg; exporter service type                                                                                    | `ClusterIP`              |\n| `metrics.service.port`                       | Redis&reg; exporter service port                                                                                    | `9121`                   |\n| `metrics.service.externalTrafficPolicy`      | Redis&reg; exporter service external traffic policy                                                                 | `Cluster`                |\n| `metrics.service.extraPorts`                 | Extra ports to expose (normally used with the `sidecar` value)                                                      | `[]`                     |\n| `metrics.service.loadBalancerIP`             | Redis&reg; exporter service Load Balancer IP                                                                        | `\"\"`                     |\n| `metrics.service.loadBalancerSourceRanges`   | Redis&reg; exporter service Load Balancer sources                                                                   | `[]`                     |\n| `metrics.service.annotations`                | Additional custom annotations for Redis&reg; exporter service                                                       | `{}`                     |\n| `metrics.serviceMonitor.enabled`             | Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator                                     | `false`                  |\n| `metrics.serviceMonitor.namespace`           | The namespace in which the ServiceMonitor will be created                                                           | `\"\"`                     |\n| `metrics.serviceMonitor.interval`            | The interval at which metrics should be scraped                                                                     | `30s`                    |\n| `metrics.serviceMonitor.scrapeTimeout`       | The timeout after which the scrape is ended                                                                         | `\"\"`                     |\n| `metrics.serviceMonitor.relabellings`        | Metrics RelabelConfigs to apply to samples before scraping.                                                         | `[]`                     |\n| `metrics.serviceMonitor.metricRelabelings`   | Metrics RelabelConfigs to apply to samples before ingestion.                                                        | `[]`                     |\n| `metrics.serviceMonitor.honorLabels`         | Specify honorLabels parameter to add the scrape endpoint                                                            | `false`                  |\n| `metrics.serviceMonitor.additionalLabels`    | Additional labels that can be used so ServiceMonitor resource(s) can be discovered by Prometheus                    | `{}`                     |\n| `metrics.serviceMonitor.podTargetLabels`     | Labels from the Kubernetes pod to be transferred to the created metrics                                             | `[]`                     |\n| `metrics.prometheusRule.enabled`             | Create a custom prometheusRule Resource for scraping metrics using PrometheusOperator                               | `false`                  |\n| `metrics.prometheusRule.namespace`           | The namespace in which the prometheusRule will be created                                                           | `\"\"`                     |\n| `metrics.prometheusRule.additionalLabels`    | Additional labels for the prometheusRule                                                                            | `{}`                     |\n| `metrics.prometheusRule.rules`               | Custom Prometheus rules                                                                                             | `[]`                     |\n\n\n### Init Container Parameters\n\n| Name                                                   | Description                                                                                                   | Value                   |\n| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | ----------------------- |\n| `volumePermissions.enabled`                            | Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup`               | `false`                 |\n| `volumePermissions.image.registry`                     | Bitnami Shell image registry                                                                                  | `docker.io`             |\n| `volumePermissions.image.repository`                   | Bitnami Shell image repository                                                                                | `bitnami/bitnami-shell` |\n| `volumePermissions.image.tag`                          | Bitnami Shell image tag (immutable tags are recommended)                                                      | `11-debian-11-r48`      |\n| `volumePermissions.image.digest`                       | Bitnami Shell image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                    |\n| `volumePermissions.image.pullPolicy`                   | Bitnami Shell image pull policy                                                                               | `IfNotPresent`          |\n| `volumePermissions.image.pullSecrets`                  | Bitnami Shell image pull secrets                                                                              | `[]`                    |\n| `volumePermissions.resources.limits`                   | The resources limits for the init container                                                                   | `{}`                    |\n| `volumePermissions.resources.requests`                 | The requested resources for the init container                                                                | `{}`                    |\n| `volumePermissions.containerSecurityContext.runAsUser` | Set init container's Security Context runAsUser                                                               | `0`                     |\n| `sysctl.enabled`                                       | Enable init container to modify Kernel settings                                                               | `false`                 |\n| `sysctl.image.registry`                                | Bitnami Shell image registry                                                                                  | `docker.io`             |\n| `sysctl.image.repository`                              | Bitnami Shell image repository                                                                                | `bitnami/bitnami-shell` |\n| `sysctl.image.tag`                                     | Bitnami Shell image tag (immutable tags are recommended)                                                      | `11-debian-11-r48`      |\n| `sysctl.image.digest`                                  | Bitnami Shell image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `\"\"`                    |\n| `sysctl.image.pullPolicy`                              | Bitnami Shell image pull policy                                                                               | `IfNotPresent`          |\n| `sysctl.image.pullSecrets`                             | Bitnami Shell image pull secrets                                                                              | `[]`                    |\n| `sysctl.command`                                       | Override default init-sysctl container command (useful when using custom images)                              | `[]`                    |\n| `sysctl.mountHostSys`                                  | Mount the host `/sys` folder to `/host-sys`                                                                   | `false`                 |\n| `sysctl.resources.limits`                              | The resources limits for the init container                                                                   | `{}`                    |\n| `sysctl.resources.requests`                            | The requested resources for the init container                                                                | `{}`                    |\n\n\n### useExternalDNS Parameters\n\n| Name                                   | Description                                                                                                                              | Value                               |\n| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |\n| `useExternalDNS.enabled`               | Enable various syntax that would enable external-dns to work.  Note this requires a working installation of `external-dns` to be usable. | `false`                             |\n| `useExternalDNS.additionalAnnotations` | Extra annotations to be utilized when `external-dns` is enabled.                                                                         | `{}`                                |\n| `useExternalDNS.annotationKey`         | The annotation key utilized when `external-dns` is enabled. Setting this to `false` will disable annotations.                            | `external-dns.alpha.kubernetes.io/` |\n| `useExternalDNS.suffix`                | The DNS suffix utilized when `external-dns` is enabled.  Note that we prepend the suffix with the full name of the release.              | `\"\"`                                |\n\n\nSpecify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```bash\n$ helm install my-release \\\n  --set auth.password=secretpassword \\\n    my-repo/redis\n```\n\nThe above command sets the Redis&reg; server password to `secretpassword`.\n\n> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.\n\nAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,\n\n```bash\n$ helm install my-release -f values.yaml my-repo/redis\n```\n\n> **Tip**: You can use the default [values.yaml](values.yaml)\n\n## Configuration and installation details\n\n### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)\n\nIt is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.\n\nBitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.\n\n### Use a different Redis&reg; version\n\nTo modify the application version used in this chart, specify a different version of the image using the `image.tag` parameter and/or a different repository using the `image.repository` parameter. Refer to the [chart documentation for more information on these parameters and how to use them with images from a private registry](https://docs.bitnami.com/kubernetes/infrastructure/redis/configuration/change-image-version/).\n\n### Bootstrapping with an External Cluster\n\nThis chart is equipped with the ability to bring online a set of Pods that connect to an existing Redis deployment that lies outside of Kubernetes.  This effectively creates a hybrid Redis Deployment where both Pods in Kubernetes and Instances such as Virtual Machines can partake in a single Redis Deployment. This is helpful in situations where one may be migrating Redis from Virtual Machines into Kubernetes, for example.  To take advantage of this, use the following as an example configuration:\n\n```yaml\nreplica:\n  externalMaster:\n    enabled: true\n    host: external-redis-0.internal\nsentinel:\n  externalMaster:\n    enabled: true\n    host: external-redis-0.internal\n```\n\n:warning: This is currently limited to clusters in which Sentinel and Redis run on the same node! :warning:\n\nPlease also note that the external sentinel must be listening on port `26379`, and this is currently not configurable.\n\nOnce the Kubernetes Redis Deployment is online and confirmed to be working with the existing cluster, the configuration can then be removed and the cluster will remain connected.\n\n### External DNS\n\nThis chart is equipped to allow leveraging the ExternalDNS project. Doing so will enable ExternalDNS to publish the FQDN for each instance, in the format of `<pod-name>.<release-name>.<dns-suffix>`.\nExample, when using the following configuration:\n\n```yaml\nuseExternalDNS:\n  enabled: true\n  suffix: prod.example.org\n  additionalAnnotations:\n    ttl: 10\n```\n\nOn a cluster where the name of the Helm release is `a`, the hostname of a Pod is generated as: `a-redis-node-0.a-redis.prod.example.org`. The IP of that FQDN will match that of the associated Pod. This modifies the following parameters of the Redis/Sentinel configuration using this new FQDN:\n\n* `replica-announce-ip`\n* `known-sentinel`\n* `known-replica`\n* `announce-ip`\n\n:warning: This requires a working installation of `external-dns` to be fully functional. :warning:\n\nSee the [official ExternalDNS documentation](https://github.com/kubernetes-sigs/external-dns) for additional configuration options.\n\n### Cluster topologies\n\n#### Default: Master-Replicas\n\nWhen installing the chart with `architecture=replication`, it will deploy a Redis&reg; master StatefulSet and a Redis&reg; replicas StatefulSet. The replicas will be read-replicas of the master. Two services will be exposed:\n\n- Redis&reg; Master service: Points to the master, where read-write operations can be performed\n- Redis&reg; Replicas service: Points to the replicas, where only read operations are allowed by default.\n\nIn case the master crashes, the replicas will wait until the master node is respawned again by the Kubernetes Controller Manager.\n\n#### Standalone\n\nWhen installing the chart with `architecture=standalone`, it will deploy a standalone Redis&reg; StatefulSet. A single service will be exposed:\n\n- Redis&reg; Master service: Points to the master, where read-write operations can be performed\n\n#### Master-Replicas with Sentinel\n\nWhen installing the chart with `architecture=replication` and `sentinel.enabled=true`, it will deploy a Redis&reg; master StatefulSet (only one master allowed) and a Redis&reg; replicas StatefulSet. In this case, the pods will contain an extra container with Redis&reg; Sentinel. This container will form a cluster of Redis&reg; Sentinel nodes, which will promote a new master in case the actual one fails. In addition to this, only one service is exposed:\n\n- Redis&reg; service: Exposes port 6379 for Redis&reg; read-only operations and port 26379 for accessing Redis&reg; Sentinel.\n\nFor read-only operations, access the service using port 6379. For write operations, it's necessary to access the Redis&reg; Sentinel cluster and query the current master using the command below (using redis-cli or similar):\n\n```\nSENTINEL get-master-addr-by-name <name of your MasterSet. e.g: mymaster>\n```\n\nThis command will return the address of the current master, which can be accessed from inside the cluster.\n\nIn case the current master crashes, the Sentinel containers will elect a new master node.\n\n`master.count` greater than `1` is not designed for use when `sentinel.enabled=true`.\n\n### Multiple masters (experimental)\n\nWhen `master.count` is greater than `1`, special care must be taken to create a consistent setup.\n\nAn example of use case is the creation of a redundant set of standalone masters or master-replicas per Kubernetes node where you must ensure:\n- No more than `1` master can be deployed per Kubernetes node\n- Replicas and writers can only see the single master of their own Kubernetes node\n\nOne way of achieving this is by setting `master.service.internalTrafficPolicy=Local` in combination with a `master.affinity.podAntiAffinity` spec to never schedule more than one master per Kubernetes node.\n\nIt's recommended to only change `master.count` if you know what you are doing.\n`master.count` greater than `1` is not designed for use when `sentinel.enabled=true`.\n\n### Using a password file\n\nTo use a password file for Redis&reg; you need to create a secret containing the password and then deploy the chart using that secret.\n\nRefer to the chart documentation for more information on [using a password file for Redis&reg;](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/use-password-file/).\n\n### Securing traffic using TLS\n\nTLS support can be enabled in the chart by specifying the `tls.` parameters while creating a release. The following parameters should be configured to properly enable the TLS support in the chart:\n\n- `tls.enabled`: Enable TLS support. Defaults to `false`\n- `tls.existingSecret`: Name of the secret that contains the certificates. No defaults.\n- `tls.certFilename`: Certificate filename. No defaults.\n- `tls.certKeyFilename`: Certificate key filename. No defaults.\n- `tls.certCAFilename`: CA Certificate filename. No defaults.\n\nRefer to the chart documentation for more information on [creating the secret and a TLS deployment example](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/enable-tls/).\n\n### Metrics\n\nThe chart optionally can start a metrics exporter for [prometheus](https://prometheus.io). The metrics endpoint (port 9121) is exposed in the service. Metrics can be scraped from within the cluster using something similar as the described in the [example Prometheus scrape configuration](https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml). If metrics are to be scraped from outside the cluster, the Kubernetes API proxy can be utilized to access the endpoint.\n\nIf you have enabled TLS by specifying `tls.enabled=true` you also need to specify TLS option to the metrics exporter. You can do that via `metrics.extraArgs`. You can find the metrics exporter CLI flags for TLS [here](https://github.com/oliver006/redis_exporter#command-line-flags). For example:\n\nYou can either specify `metrics.extraArgs.skip-tls-verification=true` to skip TLS verification or providing the following values under `metrics.extraArgs` for TLS client authentication:\n\n```console\ntls-client-key-file\ntls-client-cert-file\ntls-ca-cert-file\n```\n\n### Host Kernel Settings\n\nRedis&reg; may require some changes in the kernel of the host machine to work as expected, in particular increasing the `somaxconn` value and disabling transparent huge pages.\n\nRefer to the chart documentation for more information on [configuring host kernel settings with an example](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/configure-kernel-settings/).\n\n## Persistence\n\nBy default, the chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) at the `/data` path. The volume is created using dynamic volume provisioning. If a Persistent Volume Claim already exists, specify it during installation.\n\n### Existing PersistentVolumeClaim\n\n1. Create the PersistentVolume\n2. Create the PersistentVolumeClaim\n3. Install the chart\n\n```bash\n$ helm install my-release --set master.persistence.existingClaim=PVC_NAME my-repo/redis\n```\n\n## Backup and restore\n\nRefer to the chart documentation for more information on [backing up and restoring Redis&reg; deployments](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/backup-restore/).\n\n## NetworkPolicy\n\nTo enable network policy for Redis&reg;, install [a networking plugin that implements the Kubernetes NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin), and set `networkPolicy.enabled` to `true`.\n\nRefer to the chart documenation for more information on [enabling the network policy in Redis&reg; deployments](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/enable-network-policy/).\n\n### Setting Pod's affinity\n\nThis chart allows you to set your custom affinity using the `XXX.affinity` parameter(s). Find more information about Pod's affinity in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).\n\nAs an alternative, you can use of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `XXX.podAffinityPreset`, `XXX.podAntiAffinityPreset`, or `XXX.nodeAffinityPreset` parameters.\n\n## Troubleshooting\n\nFind more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).\n\n## Upgrading\n\nA major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.\n\n### To 17.0.0\n\nThis major version updates the Redis&reg; docker image version used from `6.2` to `7.0`, the new stable version. There are no major changes in the chart, but we recommend checking the [Redis&reg; 7.0 release notes](https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES) before upgrading.\n\n### To 16.0.0\n\nThis major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository.\n\nAffected values:\n- `master.service.port` renamed as `master.service.ports.redis`.\n- `master.service.nodePort` renamed as `master.service.nodePorts.redis`.\n- `replica.service.port` renamed as `replica.service.ports.redis`.\n- `replica.service.nodePort` renamed as `replica.service.nodePorts.redis`.\n- `sentinel.service.port` renamed as `sentinel.service.ports.redis`.\n- `sentinel.service.sentinelPort` renamed as `sentinel.service.ports.sentinel`.\n- `master.containerPort` renamed as `master.containerPorts.redis`.\n- `replica.containerPort` renamed as `replica.containerPorts.redis`.\n- `sentinel.containerPort` renamed as `sentinel.containerPorts.sentinel`.\n- `master.spreadConstraints` renamed as `master.topologySpreadConstraints`\n- `replica.spreadConstraints` renamed as `replica.topologySpreadConstraints`\n\n### To 15.0.0\n\nThe parameter to enable the usage of StaticIDs was removed. The behavior is to [always use StaticIDs](https://github.com/bitnami/charts/pull/7278).\n\n### To 14.8.0\n\nThe Redis&reg; sentinel exporter was removed in this version because the upstream project was deprecated. The regular Redis&reg; exporter is included in the sentinel scenario as usual.\n\n### To 14.0.0\n\n- Several parameters were renamed or disappeared in favor of new ones on this major version:\n    - The term *slave* has been replaced by the term *replica*. Therefore, parameters prefixed with `slave` are now prefixed with `replicas`.\n    - Credentials parameter are reorganized under the `auth` parameter.\n    - `cluster.enabled` parameter is deprecated in favor of `architecture` parameter that accepts two values: `standalone` and `replication`.\n    - `securityContext.*` is deprecated in favor of `XXX.podSecurityContext` and `XXX.containerSecurityContext`.\n    - `sentinel.metrics.*` parameters are deprecated in favor of `metrics.sentinel.*` ones.\n- New parameters to add custom command, environment variables, sidecars, init containers, etc. were added.\n- Chart labels were adapted to follow the [Helm charts standard labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels).\n- values.yaml metadata was adapted to follow the format supported by [Readme Generator for Helm](https://github.com/bitnami-labs/readme-generator-for-helm).\n\nConsequences:\n\nBackwards compatibility is not guaranteed. To upgrade to `14.0.0`, install a new release of the Redis&reg; chart, and migrate the data from your previous release. You have 2 alternatives to do so:\n\n- Create a backup of the database, and restore it on the new release as explained in the [Backup and restore](#backup-and-restore) section.\n- Reuse the PVC used to hold the master data on your previous release. To do so, use the `master.persistence.existingClaim` parameter. The following example assumes that the release name is `redis`:\n\n```bash\n$ helm install redis my-repo/redis --set auth.password=[PASSWORD] --set master.persistence.existingClaim=[EXISTING_PVC]\n```\n\n| Note: you need to substitute the placeholder _[EXISTING_PVC]_ with the name of the PVC used on your previous release, and _[PASSWORD]_ with the password used in your previous release.\n\n### To 13.0.0\n\nThis major version updates the Redis&reg; docker image version used from `6.0` to `6.2`, the new stable version. There are no major changes in the chart and there shouldn't be any breaking changes in it as `6.2` is basically a stricter superset of `6.0`. For more information, please refer to [Redis&reg; 6.2 release notes](https://raw.githubusercontent.com/redis/redis/6.2/00-RELEASENOTES).\n\n### To 12.3.0\n\nThis version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade.\n\n### To 12.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n\n### To 11.0.0\n\nWhen deployed with sentinel enabled, only a group of nodes is deployed and the master/slave role is handled in the group. To avoid breaking the compatibility, the settings for this nodes are given through the `slave.xxxx` parameters in `values.yaml`\n\n### To 9.0.0\n\nThe metrics exporter has been changed from a separate deployment to a sidecar container, due to the latest changes in the Redis&reg; exporter code. Check the [official page](https://github.com/oliver006/redis_exporter/) for more information. The metrics container image was changed from oliver006/redis_exporter to bitnami/redis-exporter (Bitnami's maintained package of oliver006/redis_exporter).\n\n### To 7.0.0\n\nIn order to improve the performance in case of slave failure, we added persistence to the read-only slaves. That means that we moved from Deployment to StatefulSets. This should not affect upgrades from previous versions of the chart, as the deployments did not contain any persistence at all.\n\nThis version also allows enabling Redis&reg; Sentinel containers inside of the Redis&reg; Pods (feature disabled by default). In case the master crashes, a new Redis&reg; node will be elected as master. In order to query the current master (no redis master service is exposed), you need to query first the Sentinel cluster.\n\n### To 11.0.0\n\nWhen using sentinel, a new statefulset called `-node` was introduced. This will break upgrading from a previous version where the statefulsets are called master and slave. Hence the PVC will not match the new naming and won't be reused. If you want to keep your data, you will need to perform a backup and then a restore the data in this new version.\n\n### To 10.0.0\n\nFor releases with `usePassword: true`, the value `sentinel.usePassword` controls whether the password authentication also applies to the sentinel port. This defaults to `true` for a secure configuration, however it is possible to disable to account for the following cases:\n\n- Using a version of redis-sentinel prior to `5.0.1` where the authentication feature was introduced.\n- Where redis clients need to be updated to support sentinel authentication.\n\nIf using a master/slave topology, or with `usePassword: false`, no action is required.\n\n### To 8.0.18\n\nFor releases with `metrics.enabled: true` the default tag for the exporter image is now `v1.x.x`. This introduces many changes including metrics names. You'll want to use [this dashboard](https://github.com/oliver006/redis_exporter/blob/master/contrib/grafana_prometheus_redis_dashboard.json) now. Please see the [redis_exporter github page](https://github.com/oliver006/redis_exporter#upgrading-from-0x-to-1x) for more details.\n\n### To 7.0.0\n\nThis version causes a change in the Redis&reg; Master StatefulSet definition, so the command helm upgrade would not work out of the box. As an alternative, one of the following could be done:\n\n- Recommended: Create a clone of the Redis&reg; Master PVC (for example, using projects like [this one](https://github.com/edseymour/pvc-transfer)). Then launch a fresh release reusing this cloned PVC.\n\n   ```\n   helm install my-release my-repo/redis --set persistence.existingClaim=<NEW PVC>\n   ```\n\n- Alternative (not recommended, do at your own risk): `helm delete --purge` does not remove the PVC assigned to the Redis&reg; Master StatefulSet. As a consequence, the following commands can be done to upgrade the release\n\n   ```\n   helm delete --purge <RELEASE>\n   helm install <RELEASE> my-repo/redis\n   ```\n\nPrevious versions of the chart were not using persistence in the slaves, so this upgrade would add it to them. Another important change is that no values are inherited from master to slaves. For example, in 6.0.0 `slaves.readinessProbe.periodSeconds`, if empty, would be set to `master.readinessProbe.periodSeconds`. This approach lacked transparency and was difficult to maintain. From now on, all the slave parameters must be configured just as it is done with the masters.\n\nSome values have changed as well:\n\n- `master.port` and `slave.port` have been changed to `redisPort` (same value for both master and slaves)\n- `master.securityContext` and `slave.securityContext` have been changed to `securityContext`(same values for both master and slaves)\n\nBy default, the upgrade will not change the cluster topology. In case you want to use Redis&reg; Sentinel, you must explicitly set `sentinel.enabled` to `true`.\n\n### To 6.0.0\n\nPrevious versions of the chart were using an init-container to change the permissions of the volumes. This was done in case the `securityContext` directive in the template was not enough for that (for example, with cephFS). In this new version of the chart, this container is disabled by default (which should not affect most of the deployments). If your installation still requires that init container, execute `helm upgrade` with the `--set volumePermissions.enabled=true`.\n\n### To 5.0.0\n\nThe default image in this release may be switched out for any image containing the `redis-server`\nand `redis-cli` binaries. If `redis-server` is not the default image ENTRYPOINT, `master.command`\nmust be specified.\n\n#### Breaking changes\n\n- `master.args` and `slave.args` are removed. Use `master.command` or `slave.command` instead in order to override the image entrypoint, or `master.extraFlags` to pass additional flags to `redis-server`.\n- `disableCommands` is now interpreted as an array of strings instead of a string of comma separated values.\n- `master.persistence.path` now defaults to `/data`.\n\n### To 4.0.0\n\nThis version removes the `chart` label from the `spec.selector.matchLabels`\nwhich is immutable since `StatefulSet apps/v1beta2`. It has been inadvertently\nadded, causing any subsequent upgrade to fail. See https://github.com/helm/charts/issues/7726.\n\nIt also fixes https://github.com/helm/charts/issues/7726 where a deployment `extensions/v1beta1` can not be upgraded if `spec.selector` is not explicitly set.\n\nFinally, it fixes https://github.com/helm/charts/issues/7803 by removing mutable labels in `spec.VolumeClaimTemplate.metadata.labels` so that it is upgradable.\n\nIn order to upgrade, delete the Redis&reg; StatefulSet before upgrading:\n\n```bash\nkubectl delete statefulsets.apps --cascade=false my-release-redis-master\n```\n\nAnd edit the Redis&reg; slave (and metrics if enabled) deployment:\n\n```bash\nkubectl patch deployments my-release-redis-slave --type=json -p='[{\"op\": \"remove\", \"path\": \"/spec/selector/matchLabels/chart\"}]'\nkubectl patch deployments my-release-redis-metrics --type=json -p='[{\"op\": \"remove\", \"path\": \"/spec/selector/matchLabels/chart\"}]'\n```\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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."
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 2.1.2\ndescription: A Library Helm Chart for grouping common logic between bitnami charts.\n  This chart is not deployable by itself.\nhome: https://github.com/bitnami/charts/tree/main/bitnami/common\nicon: https://bitnami.com/downloads/logos/bitnami-mark.png\nkeywords:\n- common\n- helper\n- template\n- function\n- bitnami\nmaintainers:\n- name: Bitnami\n  url: https://github.com/bitnami/charts\nname: common\nsources:\n- https://github.com/bitnami/charts\n- https://www.bitnami.com/\ntype: library\nversion: 2.1.2\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/README.md",
    "content": "# Bitnami Common Library Chart\n\nA [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts.\n\n## TL;DR\n\n```yaml\ndependencies:\n  - name: common\n    version: 1.x.x\n    repository: https://charts.bitnami.com/bitnami\n```\n\n```bash\n$ helm dependency update\n```\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\ndata:\n  myvalue: \"Hello World\"\n```\n\n## Introduction\n\nThis chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n\n## Parameters\n\nThe following table lists the helpers available in the library which are scoped in different sections.\n\n### Affinities\n\n| Helper identifier             | Description                                          | Expected Input                                 |\n|-------------------------------|------------------------------------------------------|------------------------------------------------|\n| `common.affinities.nodes.soft` | Return a soft nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.nodes.hard` | Return a hard nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.pods.soft`  | Return a soft podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n| `common.affinities.pods.hard`  | Return a hard podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n\n### Capabilities\n\n| Helper identifier                              | Description                                                                                    | Expected Input    |\n|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------|\n| `common.capabilities.kubeVersion`              | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context |\n| `common.capabilities.cronjob.apiVersion`       | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context |\n| `common.capabilities.deployment.apiVersion`    | Return the appropriate apiVersion for deployment.                                              | `.` Chart context |\n| `common.capabilities.statefulset.apiVersion`   | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context |\n| `common.capabilities.ingress.apiVersion`       | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context |\n| `common.capabilities.rbac.apiVersion`          | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context |\n| `common.capabilities.crd.apiVersion`           | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context |\n| `common.capabilities.policy.apiVersion`        | Return the appropriate apiVersion for podsecuritypolicy.                                       | `.` Chart context |\n| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy.                                           | `.` Chart context |\n| `common.capabilities.apiService.apiVersion`    | Return the appropriate apiVersion for APIService.                                              | `.` Chart context |\n| `common.capabilities.hpa.apiVersion`           | Return the appropriate apiVersion for Horizontal Pod Autoscaler                                | `.` Chart context |\n| `common.capabilities.supportsHelmVersion`      | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context |\n\n### Errors\n\n| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict \"validationErrors\" (list $validationError00 $validationError01)  \"context\" $` |\n\n### Images\n\n| Helper identifier           | Description                                          | Expected Input                                                                                          |\n|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| `common.images.image`       | Return the proper and full image name                | `dict \"imageRoot\" .Values.path.to.the.image \"global\" $`, see [ImageRoot](#imageroot) for the structure. |\n| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global` |\n| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $` |\n\n### Ingress\n\n| Helper identifier                         | Description                                                                                                       | Expected Input                                                                                                                                                                   |\n|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version                                              | `dict \"serviceName\" \"foo\" \"servicePort\" \"bar\"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |\n| `common.ingress.supportsPathType`         | Prints \"true\" if the pathType field is supported                                                                  | `.` Chart context                                                                                                                                                                |\n| `common.ingress.supportsIngressClassname` | Prints \"true\" if the ingressClassname field is supported                                                          | `.` Chart context                                                                                                                                                                |\n| `common.ingress.certManagerRequest`       | Prints \"true\" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict \"annotations\" .Values.path.to.the.ingress.annotations`                                                                                                                     |\n\n### Labels\n\n| Helper identifier           | Description                                                                 | Expected Input    |\n|-----------------------------|-----------------------------------------------------------------------------|-------------------|\n| `common.labels.standard`    | Return Kubernetes standard labels                                           | `.` Chart context |\n| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context |\n\n### Names\n\n| Helper identifier                 | Description                                                           | Expected Input    |\n|-----------------------------------|-----------------------------------------------------------------------|-------------------|\n| `common.names.name`               | Expand the name of the chart or use `.Values.nameOverride`            | `.` Chart context |\n| `common.names.fullname`           | Create a default fully qualified app name.                            | `.` Chart context |\n| `common.names.namespace`          | Allow the release namespace to be overridden                          | `.` Chart context |\n| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context |\n| `common.names.chart`              | Chart name plus version                                               | `.` Chart context |\n\n### Secrets\n\n| Helper identifier         | Description                                                  | Expected Input                                                                                                                                                                                                                  |\n|---------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.secrets.name`     | Generate the name of the secret.                             | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $` see [ExistingSecret](#existingsecret) for the structure.                                                                  |\n| `common.secrets.key`      | Generate secret key.                                         | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\"` see [ExistingSecret](#existingsecret) for the structure.                                                                                             |\n| `common.passwords.manage` | Generate secret password or retrieve one if already created. | `dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $`, length, strong and chartNAme fields are optional. |\n| `common.secrets.exists`   | Returns whether a previous generated secret already exists.  | `dict \"secret\" \"secret-name\" \"context\" $`                                                                                                                                                                                       |\n\n### Storage\n\n| Helper identifier             | Description                           | Expected Input                                                                                                      |\n|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| `common.storage.class` | Return  the proper Storage Class | `dict \"persistence\" .Values.path.to.the.persistence \"global\" $`, see [Persistence](#persistence) for the structure. |\n\n### TplValues\n\n| Helper identifier         | Description                            | Expected Input                                                                                                                                           |\n|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.tplvalues.render` | Renders a value that contains template | `dict \"value\" .Values.path.to.the.Value \"context\" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |\n\n### Utils\n\n| Helper identifier              | Description                                                                              | Expected Input                                                         |\n|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------|\n| `common.utils.fieldToEnvVar`   | Build environment variable name given a field.                                           | `dict \"field\" \"my-password\"`                                           |\n| `common.utils.secret.getvalue` | Print instructions to get a secret value.                                                | `dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $` |\n| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path                                    | `dict \"key\" \"path.to.key\" \"context\" $`                                 |\n| `common.utils.getKeyFromList`  | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $`         |\n\n### Validations\n\n| Helper identifier                                | Description                                                                                                                   | Expected Input                                                                                                                                                                                                                                                           |\n|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.validations.values.single.empty`         | Validate a value must not be empty.                                                                                           | `dict \"valueKey\" \"path.to.value\" \"secret\" \"secret.name\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |\n| `common.validations.values.multiple.empty`       | Validate a multiple values must not be empty. It returns a shared error for all the values.                                   | `dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |\n| `common.validations.values.mariadb.passwords`    | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mariadb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |\n| `common.validations.values.mysql.passwords`      | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values.              | `dict \"secret\" \"mysql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper.                                                                                      |\n| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values.         | `dict \"secret\" \"postgresql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper.                                                                                |\n| `common.validations.values.redis.passwords`      | This helper will ensure required password for Redis&reg; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"redis-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper.                                                                                          |\n| `common.validations.values.cassandra.passwords`  | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values.          | `dict \"secret\" \"cassandra-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper.                                                                                  |\n| `common.validations.values.mongodb.passwords`    | This helper will ensure required password for MongoDB&reg; are not empty. It returns a shared error for all the values.            | `dict \"secret\" \"mongodb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper.                                                                                      |\n\n### Warnings\n\n| Helper identifier            | Description                      | Expected Input                                             |\n|------------------------------|----------------------------------|------------------------------------------------------------|\n| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |\n\n## Special input schemas\n\n### ImageRoot\n\n```yaml\nregistry:\n  type: string\n  description: Docker registry where the image is located\n  example: docker.io\n\nrepository:\n  type: string\n  description: Repository and image name\n  example: bitnami/nginx\n\ntag:\n  type: string\n  description: image tag\n  example: 1.16.1-debian-10-r63\n\npullPolicy:\n  type: string\n  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n\npullSecrets:\n  type: array\n  items:\n    type: string\n  description: Optionally specify an array of imagePullSecrets (evaluated as templates).\n\ndebug:\n  type: boolean\n  description: Set to true if you would like to see extra information on logs\n  example: false\n\n## An instance would be:\n# registry: docker.io\n# repository: bitnami/nginx\n# tag: 1.16.1-debian-10-r63\n# pullPolicy: IfNotPresent\n# debug: false\n```\n\n### Persistence\n\n```yaml\nenabled:\n  type: boolean\n  description: Whether enable persistence.\n  example: true\n\nstorageClass:\n  type: string\n  description: Ghost data Persistent Volume Storage Class, If set to \"-\", storageClassName: \"\" which disables dynamic provisioning.\n  example: \"-\"\n\naccessMode:\n  type: string\n  description: Access mode for the Persistent Volume Storage.\n  example: ReadWriteOnce\n\nsize:\n  type: string\n  description: Size the Persistent Volume Storage.\n  example: 8Gi\n\npath:\n  type: string\n  description: Path to be persisted.\n  example: /bitnami\n\n## An instance would be:\n# enabled: true\n# storageClass: \"-\"\n# accessMode: ReadWriteOnce\n# size: 8Gi\n# path: /bitnami\n```\n\n### ExistingSecret\n\n```yaml\nname:\n  type: string\n  description: Name of the existing secret.\n  example: mySecret\nkeyMapping:\n  description: Mapping between the expected key name and the name of the key in the existing secret.\n  type: object\n\n## An instance would be:\n# name: mySecret\n# keyMapping:\n#   password: myPasswordKey\n```\n\n#### Example of use\n\nWhen we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.\n\n```yaml\n# templates/secret.yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n    app: {{ include \"common.names.fullname\" . }}\ntype: Opaque\ndata:\n  password: {{ .Values.password | b64enc | quote }}\n\n# templates/dpl.yaml\n---\n...\n      env:\n        - name: PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: {{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.existingSecret \"context\" $) }}\n              key: {{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.existingSecret \"key\" \"password\") }}\n...\n\n# values.yaml\n---\nname: mySecret\nkeyMapping:\n  password: myPasswordKey\n```\n\n### ValidateValue\n\n#### NOTES.txt\n\n```console\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n\n{{ include \"common.validations.values.multiple.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n```\n\nIf we force those values to be empty we will see some alerts\n\n```console\n$ helm install test mychart --set path.to.value00=\"\",path.to.value01=\"\"\n    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:\n\n        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-00}\" | base64 -d)\n\n    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:\n\n        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-01}\" | base64 -d)\n```\n\n## Upgrading\n\n### To 1.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n\n## License\n\nCopyright &copy; 2022 Bitnami\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\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"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_affinities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn a soft nodeAffinity definition\n{{ include \"common.affinities.nodes.soft\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.soft\" -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - preference:\n      matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard nodeAffinity definition\n{{ include \"common.affinities.nodes.hard\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.hard\" -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  nodeSelectorTerms:\n    - matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n{{- end -}}\n\n{{/*\nReturn a nodeAffinity definition\n{{ include \"common.affinities.nodes\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.nodes.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.nodes.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nReturn a soft podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.soft\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.soft\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - podAffinityTerm:\n      labelSelector:\n        matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 10 }}\n          {{- if not (empty $component) }}\n          {{ printf \"app.kubernetes.io/component: %s\" $component }}\n          {{- end }}\n          {{- range $key, $value := $extraMatchLabels }}\n          {{ $key }}: {{ $value | quote }}\n          {{- end }}\n      topologyKey: kubernetes.io/hostname\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.hard\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.hard\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  - labelSelector:\n      matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 8 }}\n        {{- if not (empty $component) }}\n        {{ printf \"app.kubernetes.io/component: %s\" $component }}\n        {{- end }}\n        {{- range $key, $value := $extraMatchLabels }}\n        {{ $key }}: {{ $value | quote }}\n        {{- end }}\n    topologyKey: kubernetes.io/hostname\n{{- end -}}\n\n{{/*\nReturn a podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.pods\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.pods.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.pods.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_capabilities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the target Kubernetes version\n*/}}\n{{- define \"common.capabilities.kubeVersion\" -}}\n{{- if .Values.global }}\n    {{- if .Values.global.kubeVersion }}\n    {{- .Values.global.kubeVersion -}}\n    {{- else }}\n    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n    {{- end -}}\n{{- else }}\n{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for poddisruptionbudget.\n*/}}\n{{- define \"common.capabilities.policy.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"policy/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"common.capabilities.networkPolicy.apiVersion\" -}}\n{{- if semverCompare \"<1.7-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for cronjob.\n*/}}\n{{- define \"common.capabilities.cronjob.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"batch/v1beta1\" -}}\n{{- else -}}\n{{- print \"batch/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"common.capabilities.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"common.capabilities.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apps/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"common.capabilities.ingress.apiVersion\" -}}\n{{- if .Values.ingress -}}\n{{- if .Values.ingress.apiVersion -}}\n{{- .Values.ingress.apiVersion -}}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for RBAC resources.\n*/}}\n{{- define \"common.capabilities.rbac.apiVersion\" -}}\n{{- if semverCompare \"<1.17-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"rbac.authorization.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for CRDs.\n*/}}\n{{- define \"common.capabilities.crd.apiVersion\" -}}\n{{- if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiextensions.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiextensions.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for APIService.\n*/}}\n{{- define \"common.capabilities.apiService.apiVersion\" -}}\n{{- if semverCompare \"<1.10-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiregistration.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiregistration.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for Horizontal Pod Autoscaler.\n*/}}\n{{- define \"common.capabilities.hpa.apiVersion\" -}}\n{{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .context) -}}\n{{- if .beta2 -}}\n{{- print \"autoscaling/v2beta2\" -}}\n{{- else -}}\n{{- print \"autoscaling/v2beta1\" -}}\n{{- end -}}\n{{- else -}}\n{{- print \"autoscaling/v2\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the used Helm version is 3.3+.\nA way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional \"{}}\"  structure.\nThis check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a \"interface not found\" error.\n**To be removed when the catalog's minimun Helm version is 3.3**\n*/}}\n{{- define \"common.capabilities.supportsHelmVersion\" -}}\n{{- if regexMatch \"{(v[0-9])*[^}]*}}$\" (.Capabilities | toString ) }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_errors.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThrough error when upgrading using empty passwords values that must not be empty.\n\nUsage:\n{{- $validationError00 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validationError01 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $validationError00 $validationError01) \"context\" $) }}\n\nRequired password params:\n  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.\n  - context - Context - Required. Parent context.\n*/}}\n{{- define \"common.errors.upgrade.passwords.empty\" -}}\n  {{- $validationErrors := join \"\" .validationErrors -}}\n  {{- if and $validationErrors .context.Release.IsUpgrade -}}\n    {{- $errorString := \"\\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases\" -}}\n    {{- $errorString = print $errorString \"\\n%s\" -}}\n    {{- printf $errorString $validationErrors | fail -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_images.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn the proper image name\n{{ include \"common.images.image\" ( dict \"imageRoot\" .Values.path.to.the.image \"global\" $) }}\n*/}}\n{{- define \"common.images.image\" -}}\n{{- $registryName := .imageRoot.registry -}}\n{{- $repositoryName := .imageRoot.repository -}}\n{{- $separator := \":\" -}}\n{{- $termination := .imageRoot.tag | toString -}}\n{{- if .global }}\n    {{- if .global.imageRegistry }}\n     {{- $registryName = .global.imageRegistry -}}\n    {{- end -}}\n{{- end -}}\n{{- if .imageRoot.digest }}\n    {{- $separator = \"@\" -}}\n    {{- $termination = .imageRoot.digest | toString -}}\n{{- end -}}\n{{- printf \"%s/%s%s%s\" $registryName $repositoryName $separator $termination -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)\n{{ include \"common.images.pullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global) }}\n*/}}\n{{- define \"common.images.pullSecrets\" -}}\n  {{- $pullSecrets := list }}\n\n  {{- if .global }}\n    {{- range .global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names evaluating values as templates\n{{ include \"common.images.renderPullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $) }}\n*/}}\n{{- define \"common.images.renderPullSecrets\" -}}\n  {{- $pullSecrets := list }}\n  {{- $context := .context }}\n\n  {{- if $context.Values.global }}\n    {{- range $context.Values.global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_ingress.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nGenerate backend entry that is compatible with all Kubernetes API versions.\n\nUsage:\n{{ include \"common.ingress.backend\" (dict \"serviceName\" \"backendName\" \"servicePort\" \"backendPort\" \"context\" $) }}\n\nParams:\n  - serviceName - String. Name of an existing service backend\n  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.ingress.backend\" -}}\n{{- $apiVersion := (include \"common.capabilities.ingress.apiVersion\" .context) -}}\n{{- if or (eq $apiVersion \"extensions/v1beta1\") (eq $apiVersion \"networking.k8s.io/v1beta1\") -}}\nserviceName: {{ .serviceName }}\nservicePort: {{ .servicePort }}\n{{- else -}}\nservice:\n  name: {{ .serviceName }}\n  port:\n    {{- if typeIs \"string\" .servicePort }}\n    name: {{ .servicePort }}\n    {{- else if or (typeIs \"int\" .servicePort) (typeIs \"float64\" .servicePort) }}\n    number: {{ .servicePort | int }}\n    {{- end }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nPrint \"true\" if the API pathType field is supported\nUsage:\n{{ include \"common.ingress.supportsPathType\" . }}\n*/}}\n{{- define \"common.ingress.supportsPathType\" -}}\n{{- if (semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the ingressClassname field is supported\nUsage:\n{{ include \"common.ingress.supportsIngressClassname\" . }}\n*/}}\n{{- define \"common.ingress.supportsIngressClassname\" -}}\n{{- if semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if cert-manager required annotations for TLS signed\ncertificates are set in the Ingress annotations\nRef: https://cert-manager.io/docs/usage/ingress/#supported-annotations\nUsage:\n{{ include \"common.ingress.certManagerRequest\" ( dict \"annotations\" .Values.path.to.the.ingress.annotations ) }}\n*/}}\n{{- define \"common.ingress.certManagerRequest\" -}}\n{{ if or (hasKey .annotations \"cert-manager.io/cluster-issuer\") (hasKey .annotations \"cert-manager.io/issuer\") (hasKey .annotations \"kubernetes.io/tls-acme\") }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_labels.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nKubernetes standard labels\n*/}}\n{{- define \"common.labels.standard\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\nhelm.sh/chart: {{ include \"common.names.chart\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end -}}\n\n{{/*\nLabels to use on deploy.spec.selector.matchLabels and svc.spec.selector\n*/}}\n{{- define \"common.labels.matchLabels\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_names.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"common.names.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"common.names.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"common.names.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified dependency name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\nUsage:\n{{ include \"common.names.dependency.fullname\" (dict \"chartName\" \"dependency-chart-name\" \"chartValues\" .Values.dependency-chart \"context\" $) }}\n*/}}\n{{- define \"common.names.dependency.fullname\" -}}\n{{- if .chartValues.fullnameOverride -}}\n{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .chartName .chartValues.nameOverride -}}\n{{- if contains $name .context.Release.Name -}}\n{{- .context.Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .context.Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts.\n*/}}\n{{- define \"common.names.namespace\" -}}\n{{- if .Values.namespaceOverride -}}\n{{- .Values.namespaceOverride -}}\n{{- else -}}\n{{- .Release.Namespace -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate a fully qualified app name adding the installation's namespace.\n*/}}\n{{- define \"common.names.fullname.namespace\" -}}\n{{- printf \"%s-%s\" (include \"common.names.fullname\" .) (include \"common.names.namespace\" .) | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_secrets.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nGenerate secret name.\n\nUsage:\n{{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $) }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.secrets.name\" -}}\n{{- $name := (include \"common.names.fullname\" .context) -}}\n\n{{- if .defaultNameSuffix -}}\n{{- $name = printf \"%s-%s\" $name .defaultNameSuffix | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- with .existingSecret -}}\n{{- if not (typeIs \"string\" .) -}}\n{{- with .name -}}\n{{- $name = . -}}\n{{- end -}}\n{{- else -}}\n{{- $name = . -}}\n{{- end -}}\n{{- end -}}\n\n{{- printf \"%s\" $name -}}\n{{- end -}}\n\n{{/*\nGenerate secret key.\n\nUsage:\n{{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\") }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret\n  - key - String - Required. Name of the key in the secret.\n*/}}\n{{- define \"common.secrets.key\" -}}\n{{- $key := .key -}}\n\n{{- if .existingSecret -}}\n  {{- if not (typeIs \"string\" .existingSecret) -}}\n    {{- if .existingSecret.keyMapping -}}\n      {{- $key = index .existingSecret.keyMapping $.key -}}\n    {{- end -}}\n  {{- end }}\n{{- end -}}\n\n{{- printf \"%s\" $key -}}\n{{- end -}}\n\n{{/*\nGenerate secret password or retrieve one if already created.\n\nUsage:\n{{ include \"common.secrets.passwords.manage\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - length - int - Optional - Length of the generated random password.\n  - strong - Boolean - Optional - Whether to add symbols to the generated random password.\n  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.\n  - context - Context - Required - Parent context.\n\nThe order in which this function returns a secret password:\n  1. Already existing 'Secret' resource\n     (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned)\n  2. Password provided via the values.yaml\n     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)\n  3. Randomly generated secret password\n     (A new random secret password with the length specified in the 'length' parameter will be generated and returned)\n\n*/}}\n{{- define \"common.secrets.passwords.manage\" -}}\n\n{{- $password := \"\" }}\n{{- $subchart := \"\" }}\n{{- $chartName := default \"\" .chartName }}\n{{- $passwordLength := default 10 .length }}\n{{- $providedPasswordKey := include \"common.utils.getKeyFromList\" (dict \"keys\" .providedValues \"context\" $.context) }}\n{{- $providedPasswordValue := include \"common.utils.getValueFromKey\" (dict \"key\" $providedPasswordKey \"context\" $.context) }}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data }}\n{{- if $secretData }}\n  {{- if hasKey $secretData .key }}\n    {{- $password = index $secretData .key | quote }}\n  {{- else }}\n    {{- printf \"\\nPASSWORDS ERROR: The secret \\\"%s\\\" does not contain the key \\\"%s\\\"\\n\" .secret .key | fail -}}\n  {{- end -}}\n{{- else if $providedPasswordValue }}\n  {{- $password = $providedPasswordValue | toString | b64enc | quote }}\n{{- else }}\n\n  {{- if .context.Values.enabled }}\n    {{- $subchart = $chartName }}\n  {{- end -}}\n\n  {{- $requiredPassword := dict \"valueKey\" $providedPasswordKey \"secret\" .secret \"field\" .key \"subchart\" $subchart \"context\" $.context -}}\n  {{- $requiredPasswordError := include \"common.validations.values.single.empty\" $requiredPassword -}}\n  {{- $passwordValidationErrors := list $requiredPasswordError -}}\n  {{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" $passwordValidationErrors \"context\" $.context) -}}\n\n  {{- if .strong }}\n    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join \"_\" }}\n    {{- $password = randAscii $passwordLength }}\n    {{- $password = regexReplaceAllLiteral \"\\\\W\" $password \"@\" | substr 5 $passwordLength }}\n    {{- $password = printf \"%s%s\" $subStr $password | toString | shuffle | b64enc | quote }}\n  {{- else }}\n    {{- $password = randAlphaNum $passwordLength | b64enc | quote }}\n  {{- end }}\n{{- end -}}\n{{- printf \"%s\" $password -}}\n{{- end -}}\n\n{{/*\nReuses the value from an existing secret, otherwise sets its value to a default value.\n\nUsage:\n{{ include \"common.secrets.lookup\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"defaultValue\" .Values.myValue \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - context - Context - Required - Parent context.\n\n*/}}\n{{- define \"common.secrets.lookup\" -}}\n{{- $value := \"\" -}}\n{{- $defaultValue := required \"\\n'common.secrets.lookup': Argument 'defaultValue' missing or empty\" .defaultValue -}}\n{{- $secretData := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret).data -}}\n{{- if and $secretData (hasKey $secretData .key) -}}\n  {{- $value = index $secretData .key -}}\n{{- else -}}\n  {{- $value = $defaultValue | toString | b64enc -}}\n{{- end -}}\n{{- printf \"%s\" $value -}}\n{{- end -}}\n\n{{/*\nReturns whether a previous generated secret already exists\n\nUsage:\n{{ include \"common.secrets.exists\" (dict \"secret\" \"secret-name\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.exists\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_storage.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn  the proper Storage Class\n{{ include \"common.storage.class\" ( dict \"persistence\" .Values.path.to.the.persistence \"global\" $) }}\n*/}}\n{{- define \"common.storage.class\" -}}\n\n{{- $storageClass := .persistence.storageClass -}}\n{{- if .global -}}\n    {{- if .global.storageClass -}}\n        {{- $storageClass = .global.storageClass -}}\n    {{- end -}}\n{{- end -}}\n\n{{- if $storageClass -}}\n  {{- if (eq \"-\" $storageClass) -}}\n      {{- printf \"storageClassName: \\\"\\\"\" -}}\n  {{- else }}\n      {{- printf \"storageClassName: %s\" $storageClass -}}\n  {{- end -}}\n{{- end -}}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_tplvalues.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nRenders a value that contains template.\nUsage:\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.path.to.the.Value \"context\" $) }}\n*/}}\n{{- define \"common.tplvalues.render\" -}}\n    {{- if typeIs \"string\" .value }}\n        {{- tpl .value .context }}\n    {{- else }}\n        {{- tpl (.value | toYaml) .context }}\n    {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_utils.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nPrint instructions to get a secret value.\nUsage:\n{{ include \"common.utils.secret.getvalue\" (dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.secret.getvalue\" -}}\n{{- $varname := include \"common.utils.fieldToEnvVar\" . -}}\nexport {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath=\"{.data.{{ .field }}}\" | base64 -d)\n{{- end -}}\n\n{{/*\nBuild env var name given a field\nUsage:\n{{ include \"common.utils.fieldToEnvVar\" dict \"field\" \"my-password\" }}\n*/}}\n{{- define \"common.utils.fieldToEnvVar\" -}}\n  {{- $fieldNameSplit := splitList \"-\" .field -}}\n  {{- $upperCaseFieldNameSplit := list -}}\n\n  {{- range $fieldNameSplit -}}\n    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}\n  {{- end -}}\n\n  {{ join \"_\" $upperCaseFieldNameSplit }}\n{{- end -}}\n\n{{/*\nGets a value from .Values given\nUsage:\n{{ include \"common.utils.getValueFromKey\" (dict \"key\" \"path.to.key\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.getValueFromKey\" -}}\n{{- $splitKey := splitList \".\" .key -}}\n{{- $value := \"\" -}}\n{{- $latestObj := $.context.Values -}}\n{{- range $splitKey -}}\n  {{- if not $latestObj -}}\n    {{- printf \"please review the entire path of '%s' exists in values\" $.key | fail -}}\n  {{- end -}}\n  {{- $value = ( index $latestObj . ) -}}\n  {{- $latestObj = $value -}}\n{{- end -}}\n{{- printf \"%v\" (default \"\" $value) -}} \n{{- end -}}\n\n{{/*\nReturns first .Values key with a defined value or first of the list if all non-defined\nUsage:\n{{ include \"common.utils.getKeyFromList\" (dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $) }}\n*/}}\n{{- define \"common.utils.getKeyFromList\" -}}\n{{- $key := first .keys -}}\n{{- $reverseKeys := reverse .keys }}\n{{- range $reverseKeys }}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" . \"context\" $.context ) }}\n  {{- if $value -}}\n    {{- $key = . }}\n  {{- end -}}\n{{- end -}}\n{{- printf \"%s\" $key -}} \n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/_warnings.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nWarning about using rolling tag.\nUsage:\n{{ include \"common.warnings.rollingTag\" .Values.path.to.the.imageRoot }}\n*/}}\n{{- define \"common.warnings.rollingTag\" -}}\n\n{{- if and (contains \"bitnami/\" .repository) (not (.tag | toString | regexFind \"-r\\\\d+$|sha256:\")) }}\nWARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.\n+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/\n{{- end }}\n\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_cassandra.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Cassandra required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.cassandra.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: \"cassandra-passwords-secret\"\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.cassandra.passwords\" -}}\n  {{- $existingSecret := include \"common.cassandra.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.cassandra.values.enabled\" . -}}\n  {{- $dbUserPrefix := include \"common.cassandra.values.key.dbUser\" . -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $dbUserPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"cassandra-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.cassandra.values.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.dbUser.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled cassandra.\n\nUsage:\n{{ include \"common.cassandra.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.cassandra.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.cassandra.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key dbUser\n\nUsage:\n{{ include \"common.cassandra.values.key.dbUser\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.key.dbUser\" -}}\n  {{- if .subchart -}}\n    cassandra.dbUser\n  {{- else -}}\n    dbUser\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_mariadb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MariaDB required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mariadb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mariadb.passwords\" -}}\n  {{- $existingSecret := include \"common.mariadb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mariadb.values.enabled\" . -}}\n  {{- $architecture := include \"common.mariadb.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mariadb.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mariadb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mariadb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mariadb-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mariadb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mariadb.\n\nUsage:\n{{ include \"common.mariadb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mariadb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mariadb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mariadb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mariadb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mariadb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_mongodb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MongoDB&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mongodb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: \"mongodb-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mongodb.passwords\" -}}\n  {{- $existingSecret := include \"common.mongodb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mongodb.values.enabled\" . -}}\n  {{- $authPrefix := include \"common.mongodb.values.key.auth\" . -}}\n  {{- $architecture := include \"common.mongodb.values.architecture\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyDatabase := printf \"%s.database\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicaSetKey := printf \"%s.replicaSetKey\" $authPrefix -}}\n  {{- $valueKeyAuthEnabled := printf \"%s.enabled\" $authPrefix -}}\n\n  {{- $authEnabled := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyAuthEnabled \"context\" .context) -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") (eq $authEnabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mongodb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- $valueDatabase := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyDatabase \"context\" .context) }}\n    {{- if and $valueUsername $valueDatabase -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mongodb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replicaset\") -}}\n        {{- $requiredReplicaSetKey := dict \"valueKey\" $valueKeyReplicaSetKey \"secret\" .secret \"field\" \"mongodb-replica-set-key\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mongodb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mongodb.\n\nUsage:\n{{ include \"common.mongodb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mongodb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mongodb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mongodb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mongodb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mongodb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_mysql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MySQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mysql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MySQL values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mysql.passwords\" -}}\n  {{- $existingSecret := include \"common.mysql.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mysql.values.enabled\" . -}}\n  {{- $architecture := include \"common.mysql.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mysql.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mysql-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mysql-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mysql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mysql.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mysql.\n\nUsage:\n{{ include \"common.mysql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mysql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mysql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mysql.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mysql.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mysql.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mysql.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mysql.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_postgresql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate PostgreSQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.postgresql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: \"postgresql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.postgresql.passwords\" -}}\n  {{- $existingSecret := include \"common.postgresql.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.postgresql.values.enabled\" . -}}\n  {{- $valueKeyPostgresqlPassword := include \"common.postgresql.values.key.postgressPassword\" . -}}\n  {{- $valueKeyPostgresqlReplicationEnabled := include \"common.postgresql.values.key.replicationPassword\" . -}}\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n    {{- $requiredPostgresqlPassword := dict \"valueKey\" $valueKeyPostgresqlPassword \"secret\" .secret \"field\" \"postgresql-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}\n\n    {{- $enabledReplication := include \"common.postgresql.values.enabled.replication\" . -}}\n    {{- if (eq $enabledReplication \"true\") -}}\n        {{- $requiredPostgresqlReplicationPassword := dict \"valueKey\" $valueKeyPostgresqlReplicationEnabled \"secret\" .secret \"field\" \"postgresql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to decide whether evaluate global values.\n\nUsage:\n{{ include \"common.postgresql.values.use.global\" (dict \"key\" \"key-of-global\" \"context\" $) }}\nParams:\n  - key - String - Required. Field to be evaluated within global, e.g: \"existingSecret\"\n*/}}\n{{- define \"common.postgresql.values.use.global\" -}}\n  {{- if .context.Values.global -}}\n    {{- if .context.Values.global.postgresql -}}\n      {{- index .context.Values.global.postgresql .key | quote -}}\n    {{- end -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.postgresql.values.existingSecret\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.existingSecret\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"existingSecret\" \"context\" .context) -}}\n\n  {{- if .subchart -}}\n    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}\n  {{- else -}}\n    {{- default (.context.Values.existingSecret | quote) $globalValue -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled postgresql.\n\nUsage:\n{{ include \"common.postgresql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key postgressPassword.\n\nUsage:\n{{ include \"common.postgresql.values.key.postgressPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.postgressPassword\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"postgresqlUsername\" \"context\" .context) -}}\n\n  {{- if not $globalValue -}}\n    {{- if .subchart -}}\n      postgresql.postgresqlPassword\n    {{- else -}}\n      postgresqlPassword\n    {{- end -}}\n  {{- else -}}\n    global.postgresql.postgresqlPassword\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled.replication.\n\nUsage:\n{{ include \"common.postgresql.values.enabled.replication\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.enabled.replication\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.replication.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" .context.Values.replication.enabled -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key replication.password.\n\nUsage:\n{{ include \"common.postgresql.values.key.replicationPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.replicationPassword\" -}}\n  {{- if .subchart -}}\n    postgresql.replication.password\n  {{- else -}}\n    replication.password\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_redis.tpl",
    "content": "\n{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Redis&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.redis.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where redis values are stored, e.g: \"redis-passwords-secret\"\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.redis.passwords\" -}}\n  {{- $enabled := include \"common.redis.values.enabled\" . -}}\n  {{- $valueKeyPrefix := include \"common.redis.values.keys.prefix\" . -}}\n  {{- $standarizedVersion := include \"common.redis.values.standarized.version\" . }}\n\n  {{- $existingSecret := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.existingSecret\") (printf \"%s%s\" $valueKeyPrefix \"existingSecret\") (eq $standarizedVersion \"true\") }}\n  {{- $existingSecretValue := include \"common.utils.getValueFromKey\" (dict \"key\" $existingSecret \"context\" .context) }}\n\n  {{- $valueKeyRedisPassword := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.password\") (printf \"%s%s\" $valueKeyPrefix \"password\") (eq $standarizedVersion \"true\") }}\n  {{- $valueKeyRedisUseAuth := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.enabled\") (printf \"%s%s\" $valueKeyPrefix \"usePassword\") (eq $standarizedVersion \"true\") }}\n\n  {{- if and (or (not $existingSecret) (eq $existingSecret \"\\\"\\\"\")) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $useAuth := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyRedisUseAuth \"context\" .context) -}}\n    {{- if eq $useAuth \"true\" -}}\n      {{- $requiredRedisPassword := dict \"valueKey\" $valueKeyRedisPassword \"secret\" .secret \"field\" \"redis-password\" -}}\n      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled redis.\n\nUsage:\n{{ include \"common.redis.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.redis.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right prefix path for the values\n\nUsage:\n{{ include \"common.redis.values.key.prefix\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.redis.values.keys.prefix\" -}}\n  {{- if .subchart -}}redis.{{- else -}}{{- end -}}\n{{- end -}}\n\n{{/*\nChecks whether the redis chart's includes the standarizations (version >= 14)\n\nUsage:\n{{ include \"common.redis.values.standarized.version\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.standarized.version\" -}}\n\n  {{- $standarizedAuth := printf \"%s%s\" (include \"common.redis.values.keys.prefix\" .) \"auth\" -}}\n  {{- $standarizedAuthValues := include \"common.utils.getValueFromKey\" (dict \"key\" $standarizedAuth \"context\" .context) }}\n\n  {{- if $standarizedAuthValues -}}\n    {{- true -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/templates/validations/_validations.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate values must not be empty.\n\nUsage:\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.validations.values.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n*/}}\n{{- define \"common.validations.values.multiple.empty\" -}}\n  {{- range .required -}}\n    {{- include \"common.validations.values.single.empty\" (dict \"valueKey\" .valueKey \"secret\" .secret \"field\" .field \"context\" $.context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nValidate a value must not be empty.\n\nUsage:\n{{ include \"common.validations.value.empty\" (dict \"valueKey\" \"mariadb.password\" \"secret\" \"secretName\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n  - subchart - String - Optional - Name of the subchart that the validated password is part of.\n*/}}\n{{- define \"common.validations.values.single.empty\" -}}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" .valueKey \"context\" .context) }}\n  {{- $subchart := ternary \"\" (printf \"%s.\" .subchart) (empty .subchart) }}\n\n  {{- if not $value -}}\n    {{- $varname := \"my-value\" -}}\n    {{- $getCurrentValue := \"\" -}}\n    {{- if and .secret .field -}}\n      {{- $varname = include \"common.utils.fieldToEnvVar\" . -}}\n      {{- $getCurrentValue = printf \" To get the current value:\\n\\n        %s\\n\" (include \"common.utils.secret.getvalue\" .) -}}\n    {{- end -}}\n    {{- printf \"\\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s\" .valueKey $subchart .valueKey $varname $getCurrentValue -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/charts/common/values.yaml",
    "content": "## bitnami/common\n## It is required by CI/CD tools and processes.\n## @skip exampleValue\n##\nexampleValue: common-chart\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/NOTES.txt",
    "content": "CHART NAME: {{ .Chart.Name }}\nCHART VERSION: {{ .Chart.Version }}\nAPP VERSION: {{ .Chart.AppVersion }}\n\n** Please be patient while the chart is being deployed **\n\n{{- if .Values.diagnosticMode.enabled }}\nThe chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:\n\n  command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 4 }}\n  args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 4 }}\n\nGet the list of pods by executing:\n\n  kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}\n\nAccess the pod you want to debug by executing\n\n  kubectl exec --namespace {{ .Release.Namespace }} -ti <NAME OF THE POD> -- bash\n\nIn order to replicate the container startup scripts execute this command:\n\nFor Redis:\n\n    /opt/bitnami/scripts/redis/entrypoint.sh /opt/bitnami/scripts/redis/run.sh\n\n{{- if .Values.sentinel.enabled }}\n\nFor Redis Sentinel:\n\n    /opt/bitnami/scripts/redis-sentinel/entrypoint.sh /opt/bitnami/scripts/redis-sentinel/run.sh\n\n{{- end }}\n{{- else }}\n\n{{- if contains .Values.master.service.type \"LoadBalancer\" }}\n{{- if not .Values.auth.enabled }}\n{{ if and (not .Values.networkPolicy.enabled) (.Values.networkPolicy.allowExternal) }}\n\n-------------------------------------------------------------------------------\n WARNING\n\n    By specifying \"master.service.type=LoadBalancer\" and \"auth.enabled=false\" you have\n    most likely exposed the Redis&reg; service externally without any authentication\n    mechanism.\n\n    For security reasons, we strongly suggest that you switch to \"ClusterIP\" or\n    \"NodePort\". As alternative, you can also switch to \"auth.enabled=true\"\n    providing a valid password on \"password\" parameter.\n\n-------------------------------------------------------------------------------\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{- if eq .Values.architecture \"replication\" }}\n{{- if .Values.sentinel.enabled }}\n\nRedis&reg; can be accessed via port {{ .Values.sentinel.service.ports.redis }} on the following DNS name from within your cluster:\n\n    {{ template \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} for read only operations\n\nFor read/write operations, first access the Redis&reg; Sentinel cluster, which is available in port {{ .Values.sentinel.service.ports.sentinel }} using the same domain name above.\n\n{{- else }}\n\nRedis&reg; can be accessed on the following DNS names from within your cluster:\n\n    {{ printf \"%s-master.%s.svc.%s\" (include \"common.names.fullname\" .) .Release.Namespace .Values.clusterDomain }} for read/write operations (port {{ .Values.master.service.ports.redis }})\n    {{ printf \"%s-replicas.%s.svc.%s\" (include \"common.names.fullname\" .) .Release.Namespace .Values.clusterDomain }} for read-only operations (port {{ .Values.replica.service.ports.redis }})\n\n{{- end }}\n{{- else }}\n\nRedis&reg; can be accessed via port {{ .Values.master.service.ports.redis }} on the following DNS name from within your cluster:\n\n    {{ template \"common.names.fullname\" . }}-master.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\n\n{{- end }}\n\n{{ if .Values.auth.enabled }}\n\nTo get your password run:\n\n    export REDIS_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template \"redis.secretName\" . }} -o jsonpath=\"{.data.redis-password}\" | base64 -d)\n\n{{- end }}\n\nTo connect to your Redis&reg; server:\n\n1. Run a Redis&reg; pod that you can use as a client:\n\n   kubectl run --namespace {{ .Release.Namespace }} redis-client --restart='Never' {{ if .Values.auth.enabled }} --env REDIS_PASSWORD=$REDIS_PASSWORD {{ end }} --image {{ template \"redis.image\" . }} --command -- sleep infinity\n\n{{- if .Values.tls.enabled }}\n\n   Copy your TLS certificates to the pod:\n\n   kubectl cp --namespace {{ .Release.Namespace }} /path/to/client.cert redis-client:/tmp/client.cert\n   kubectl cp --namespace {{ .Release.Namespace }} /path/to/client.key redis-client:/tmp/client.key\n   kubectl cp --namespace {{ .Release.Namespace }} /path/to/CA.cert redis-client:/tmp/CA.cert\n\n{{- end }}\n\n   Use the following command to attach to the pod:\n\n   kubectl exec --tty -i redis-client \\\n   {{- if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}--labels=\"{{ template \"common.names.fullname\" . }}-client=true\" \\{{- end }}\n   --namespace {{ .Release.Namespace }} -- bash\n\n2. Connect using the Redis&reg; CLI:\n\n{{- if eq .Values.architecture \"replication\" }}\n   {{- if .Values.sentinel.enabled }}\n   {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h {{ template \"common.names.fullname\" . }} -p {{ .Values.sentinel.service.ports.redis }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }} # Read only operations\n   {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h {{ template \"common.names.fullname\" . }} -p {{ .Values.sentinel.service.ports.sentinel }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }} # Sentinel access\n   {{- else }}\n   {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n   {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n   {{- end }}\n{{- else }}\n   {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h {{ template \"common.names.fullname\" . }}-master{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n{{- end }}\n\n{{- if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}\n\nNote: Since NetworkPolicy is enabled, only pods with label {{ template \"common.names.fullname\" . }}-client=true\" will be able to connect to redis.\n\n{{- else }}\n\nTo connect to your database from outside the cluster execute the following commands:\n\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\n{{- if contains \"NodePort\" .Values.sentinel.service.type }}\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ template \"common.names.fullname\" . }})\n    {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h $NODE_IP -p $NODE_PORT {{- if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"LoadBalancer\" .Values.sentinel.service.type }}\n\n  NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template \"common.names.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template \"common.names.fullname\" . }} --template \"{{ \"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}\" }}\")\n    {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h $SERVICE_IP -p {{ .Values.sentinel.service.ports.redis }} {{- if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"ClusterIP\" .Values.sentinel.service.type }}\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template \"common.names.fullname\" . }} {{ .Values.sentinel.service.ports.redis }}:{{ .Values.sentinel.service.ports.redis }} &\n    {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h 127.0.0.1 -p {{ .Values.sentinel.service.ports.redis }} {{- if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- end }}\n{{- else }}\n{{- if contains \"NodePort\" .Values.master.service.type }}\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ printf \"%s-master\" (include \"common.names.fullname\" .) }})\n    {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h $NODE_IP -p $NODE_PORT {{- if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"LoadBalancer\" .Values.master.service.type }}\n\n  NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template \"common.names.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ printf \"%s-master\" (include \"common.names.fullname\" .) }} --template \"{{ \"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}\" }}\")\n    {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h $SERVICE_IP -p {{ .Values.master.service.ports.redis }} {{- if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"ClusterIP\" .Values.master.service.type }}\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ printf \"%s-master\" (include \"common.names.fullname\" .) }} {{ .Values.master.service.ports.redis }}:{{ .Values.master.service.ports.redis }} &\n    {{ if .Values.auth.enabled }}REDISCLI_AUTH=\"$REDIS_PASSWORD\" {{ end }}redis-cli -h 127.0.0.1 -p {{ .Values.master.service.ports.redis }} {{- if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- end }}\n{{- end }}\n\n{{- end }}\n{{- end }}\n{{- include \"redis.checkRollingTags\" . }}\n{{- include \"common.warnings.rollingTag\" .Values.volumePermissions.image }}\n{{- include \"common.warnings.rollingTag\" .Values.sysctl.image }}\n{{- include \"redis.validateValues\" . }}\n\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled (eq .Values.sentinel.service.type \"NodePort\") (not .Release.IsUpgrade ) }}\n{{- if $.Values.sentinel.service.nodePorts.sentinel  }}\nNo need to upgrade, ports and nodeports have been set from values\n{{- else }}\n#!#!#!#!#!#!#!# IMPORTANT #!#!#!#!#!#!#!#\nYOU NEED TO PERFORM AN UPGRADE FOR THE SERVICES AND WORKLOAD TO BE CREATED\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the proper Redis image name\n*/}}\n{{- define \"redis.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Redis Sentinel image name\n*/}}\n{{- define \"redis.sentinel.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.sentinel.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the metrics image)\n*/}}\n{{- define \"redis.metrics.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.metrics.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the init container volume-permissions image)\n*/}}\n{{- define \"redis.volumePermissions.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.volumePermissions.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn sysctl image\n*/}}\n{{- define \"redis.sysctl.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.sysctl.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"redis.imagePullSecrets\" -}}\n{{- include \"common.images.pullSecrets\" (dict \"images\" (list .Values.image .Values.sentinel.image .Values.metrics.image .Values.volumePermissions.image .Values.sysctl.image) \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"networkPolicy.apiVersion\" -}}\n{{- if semverCompare \">=1.4-0, <1.7-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiGroup for PodSecurityPolicy.\n*/}}\n{{- define \"podSecurityPolicy.apiGroup\" -}}\n{{- if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"policy\" -}}\n{{- else -}}\n{{- print \"extensions\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a TLS secret object should be created\n*/}}\n{{- define \"redis.createTlsSecret\" -}}\n{{- if and .Values.tls.enabled .Values.tls.autoGenerated (and (not .Values.tls.existingSecret) (not .Values.tls.certificatesSecret)) }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the secret containing Redis TLS certificates\n*/}}\n{{- define \"redis.tlsSecretName\" -}}\n{{- $secretName := coalesce .Values.tls.existingSecret .Values.tls.certificatesSecret -}}\n{{- if $secretName -}}\n    {{- printf \"%s\" (tpl $secretName $) -}}\n{{- else -}}\n    {{- printf \"%s-crt\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the cert file.\n*/}}\n{{- define \"redis.tlsCert\" -}}\n{{- if (include \"redis.createTlsSecret\" . ) -}}\n    {{- printf \"/opt/bitnami/redis/certs/%s\" \"tls.crt\" -}}\n{{- else -}}\n    {{- required \"Certificate filename is required when TLS in enabled\" .Values.tls.certFilename | printf \"/opt/bitnami/redis/certs/%s\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the cert key file.\n*/}}\n{{- define \"redis.tlsCertKey\" -}}\n{{- if (include \"redis.createTlsSecret\" . ) -}}\n    {{- printf \"/opt/bitnami/redis/certs/%s\" \"tls.key\" -}}\n{{- else -}}\n    {{- required \"Certificate Key filename is required when TLS in enabled\" .Values.tls.certKeyFilename | printf \"/opt/bitnami/redis/certs/%s\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the CA cert file.\n*/}}\n{{- define \"redis.tlsCACert\" -}}\n{{- if (include \"redis.createTlsSecret\" . ) -}}\n    {{- printf \"/opt/bitnami/redis/certs/%s\" \"ca.crt\" -}}\n{{- else -}}\n    {{- required \"Certificate CA filename is required when TLS in enabled\" .Values.tls.certCAFilename | printf \"/opt/bitnami/redis/certs/%s\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the DH params file.\n*/}}\n{{- define \"redis.tlsDHParams\" -}}\n{{- if .Values.tls.dhParamsFilename -}}\n{{- printf \"/opt/bitnami/redis/certs/%s\" .Values.tls.dhParamsFilename -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate the name of the shared service account to use\n*/}}\n{{- define \"redis.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create -}}\n    {{ default (include \"common.names.fullname\" .) .Values.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate the name of the master service account to use\n*/}}\n{{- define \"redis.masterServiceAccountName\" -}}\n{{- if .Values.master.serviceAccount.create -}}\n    {{ default (printf \"%s-master\" (include \"common.names.fullname\" .)) .Values.master.serviceAccount.name }}\n{{- else -}}\n    {{- if .Values.serviceAccount.create -}}\n        {{ template \"redis.serviceAccountName\" . }}\n    {{- else -}}\n        {{ default \"default\" .Values.master.serviceAccount.name }}\n    {{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate the name of the replicas service account to use\n*/}}\n{{- define \"redis.replicaServiceAccountName\" -}}\n{{- if .Values.replica.serviceAccount.create -}}\n    {{ default (printf \"%s-replica\" (include \"common.names.fullname\" .)) .Values.replica.serviceAccount.name }}\n{{- else -}}\n    {{- if .Values.serviceAccount.create -}}\n        {{ template \"redis.serviceAccountName\" . }}\n    {{- else -}}\n        {{ default \"default\" .Values.replica.serviceAccount.name }}\n    {{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the configuration configmap name\n*/}}\n{{- define \"redis.configmapName\" -}}\n{{- if .Values.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s-configuration\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created\n*/}}\n{{- define \"redis.createConfigmap\" -}}\n{{- if empty .Values.existingConfigmap }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the password secret.\n*/}}\n{{- define \"redis.secretName\" -}}\n{{- if .Values.auth.existingSecret -}}\n{{- printf \"%s\" (tpl .Values.auth.existingSecret $) -}}\n{{- else -}}\n{{- printf \"%s\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the password key to be retrieved from Redis&reg; secret.\n*/}}\n{{- define \"redis.secretPasswordKey\" -}}\n{{- if and .Values.auth.existingSecret .Values.auth.existingSecretPasswordKey -}}\n{{- printf \"%s\" .Values.auth.existingSecretPasswordKey -}}\n{{- else -}}\n{{- printf \"redis-password\" -}}\n{{- end -}}\n{{- end -}}\n\n\n{{/*\nReturns the available value for certain key in an existing secret (if it exists),\notherwise it generates a random value.\n*/}}\n{{- define \"getValueFromSecret\" }}\n    {{- $len := (default 16 .Length) | int -}}\n    {{- $obj := (lookup \"v1\" \"Secret\" .Namespace .Name).data -}}\n    {{- if $obj }}\n        {{- index $obj .Key | b64dec -}}\n    {{- else -}}\n        {{- randAlphaNum $len -}}\n    {{- end -}}\n{{- end }}\n\n{{/*\nReturn Redis&reg; password\n*/}}\n{{- define \"redis.password\" -}}\n{{- if not (empty .Values.global.redis.password) }}\n    {{- .Values.global.redis.password -}}\n{{- else if not (empty .Values.auth.password) -}}\n    {{- .Values.auth.password -}}\n{{- else -}}\n    {{- include \"getValueFromSecret\" (dict \"Namespace\" .Release.Namespace \"Name\" (include \"common.names.fullname\" .) \"Length\" 10 \"Key\" \"redis-password\")  -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Check if there are rolling tags in the images */}}\n{{- define \"redis.checkRollingTags\" -}}\n{{- include \"common.warnings.rollingTag\" .Values.image }}\n{{- include \"common.warnings.rollingTag\" .Values.sentinel.image }}\n{{- include \"common.warnings.rollingTag\" .Values.metrics.image }}\n{{- end -}}\n\n{{/*\nCompile all warnings into a single message, and call fail.\n*/}}\n{{- define \"redis.validateValues\" -}}\n{{- $messages := list -}}\n{{- $messages := append $messages (include \"redis.validateValues.topologySpreadConstraints\" .) -}}\n{{- $messages := append $messages (include \"redis.validateValues.architecture\" .) -}}\n{{- $messages := append $messages (include \"redis.validateValues.podSecurityPolicy.create\" .) -}}\n{{- $messages := append $messages (include \"redis.validateValues.tls\" .) -}}\n{{- $messages := without $messages \"\" -}}\n{{- $message := join \"\\n\" $messages -}}\n\n{{- if $message -}}\n{{-   printf \"\\nVALUES VALIDATION:\\n%s\" $message | fail -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&reg; - spreadConstrainsts K8s version */}}\n{{- define \"redis.validateValues.topologySpreadConstraints\" -}}\n{{- if and (semverCompare \"<1.16-0\" .Capabilities.KubeVersion.GitVersion) .Values.replica.topologySpreadConstraints -}}\nredis: topologySpreadConstraints\n    Pod Topology Spread Constraints are only available on K8s  >= 1.16\n    Find more information at https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&reg; - must provide a valid architecture */}}\n{{- define \"redis.validateValues.architecture\" -}}\n{{- if and (ne .Values.architecture \"standalone\") (ne .Values.architecture \"replication\") -}}\nredis: architecture\n    Invalid architecture selected. Valid values are \"standalone\" and\n    \"replication\". Please set a valid architecture (--set architecture=\"xxxx\")\n{{- end -}}\n{{- if and .Values.sentinel.enabled (not (eq .Values.architecture \"replication\")) }}\nredis: architecture\n    Using redis sentinel on standalone mode is not supported.\n    To deploy redis sentinel, please select the \"replication\" mode\n    (--set \"architecture=replication,sentinel.enabled=true\")\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&reg; - PodSecurityPolicy create */}}\n{{- define \"redis.validateValues.podSecurityPolicy.create\" -}}\n{{- if and .Values.podSecurityPolicy.create (not .Values.podSecurityPolicy.enabled) }}\nredis: podSecurityPolicy.create\n    In order to create PodSecurityPolicy, you also need to enable\n    podSecurityPolicy.enabled field\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&reg; - TLS enabled */}}\n{{- define \"redis.validateValues.tls\" -}}\n{{- if and .Values.tls.enabled (not .Values.tls.autoGenerated) (not .Values.tls.existingSecret) (not .Values.tls.certificatesSecret) }}\nredis: tls.enabled\n    In order to enable TLS, you also need to provide\n    an existing secret containing the TLS certificates or\n    enable auto-generated certificates.\n{{- end -}}\n{{- end -}}\n\n{{/* Define the suffix utilized for external-dns */}}\n{{- define \"redis.externalDNS.suffix\" -}}\n{{ printf \"%s.%s\" (include \"common.names.fullname\" .) .Values.useExternalDNS.suffix }}\n{{- end -}}\n\n{{/* Compile all annotations utilized for external-dns */}}\n{{- define \"redis.externalDNS.annotations\" -}}\n{{- if and .Values.useExternalDNS.enabled .Values.useExternalDNS.annotationKey }}\n{{ .Values.useExternalDNS.annotationKey }}hostname: {{ include \"redis.externalDNS.suffix\" . }}\n{{- range $key, $val := .Values.useExternalDNS.additionalAnnotations }}\n{{ $.Values.useExternalDNS.annotationKey }}{{ $key }}: {{ $val | quote }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/configmap.yaml",
    "content": "{{- if (include \"redis.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-configuration\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  redis.conf: |-\n    # User-supplied common configuration:\n    {{- if .Values.commonConfiguration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonConfiguration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    # End of common configuration\n  master.conf: |-\n    dir {{ .Values.master.persistence.path }}\n    # User-supplied master configuration:\n    {{- if .Values.master.configuration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.configuration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.master.disableCommands }}\n    {{- range .Values.master.disableCommands }}\n    rename-command {{ . }} \"\"\n    {{- end }}\n    {{- end }}\n    # End of master configuration\n  replica.conf: |-\n    dir {{ .Values.replica.persistence.path }}\n    # User-supplied replica configuration:\n    {{- if .Values.replica.configuration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.configuration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.replica.disableCommands }}\n    {{- range .Values.replica.disableCommands }}\n    rename-command {{ . }} \"\"\n    {{- end }}\n    {{- end }}\n    # End of replica configuration\n  {{- if .Values.sentinel.enabled }}\n  sentinel.conf: |-\n    dir \"/tmp\"\n    port {{ .Values.sentinel.containerPorts.sentinel }}\n    sentinel monitor {{ .Values.sentinel.masterSet }} {{ template \"common.names.fullname\" . }}-node-0.{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} {{ .Values.sentinel.service.ports.redis }} {{ .Values.sentinel.quorum }}\n    sentinel down-after-milliseconds {{ .Values.sentinel.masterSet }} {{ .Values.sentinel.downAfterMilliseconds }}\n    sentinel failover-timeout {{ .Values.sentinel.masterSet }} {{ .Values.sentinel.failoverTimeout }}\n    sentinel parallel-syncs {{ .Values.sentinel.masterSet }} {{ .Values.sentinel.parallelSyncs }}\n    # User-supplied sentinel configuration:\n    {{- if .Values.sentinel.configuration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.configuration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    # End of sentinel configuration\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/extra-list.yaml",
    "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/headless-svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n  {{- if .Values.commonAnnotations }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\n  {{- include \"redis.externalDNS.annotations\" . | nindent 4 }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  {{- if .Values.sentinel.enabled }}\n  publishNotReadyAddresses: true\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ if .Values.sentinel.enabled }}{{ .Values.sentinel.service.ports.redis }}{{ else }}{{ .Values.master.service.ports.redis }}{{ end }}\n      targetPort: redis\n    {{- if .Values.sentinel.enabled }}\n    - name: tcp-sentinel\n      port: {{ .Values.sentinel.service.ports.sentinel }}\n      targetPort: redis-sentinel\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/health-configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  ping_readiness_local.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h localhost \\\n{{- if .Values.tls.enabled }}\n        -p $REDIS_TLS_PORT \\\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- else }}\n        -p $REDIS_PORT \\\n{{- end }}\n        ping\n    )\n    if [ \"$?\" -eq \"124\" ]; then\n      echo \"Timed out\"\n      exit 1\n    fi\n    if [ \"$response\" != \"PONG\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  ping_liveness_local.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h localhost \\\n{{- if .Values.tls.enabled }}\n        -p $REDIS_TLS_PORT \\\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- else }}\n        -p $REDIS_PORT \\\n{{- end }}\n        ping\n    )\n    if [ \"$?\" -eq \"124\" ]; then\n      echo \"Timed out\"\n      exit 1\n    fi\n    responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}')\n    if [ \"$response\" != \"PONG\" ] && [ \"$responseFirstWord\" != \"LOADING\" ] && [ \"$responseFirstWord\" != \"MASTERDOWN\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n{{- if .Values.sentinel.enabled }}\n  ping_sentinel.sh: |-\n    #!/bin/bash\n\n{{- if .Values.auth.sentinel }}\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n{{- end }}\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h localhost \\\n{{- if .Values.tls.enabled }}\n        -p $REDIS_SENTINEL_TLS_PORT_NUMBER \\\n        --tls \\\n        --cacert \"$REDIS_SENTINEL_TLS_CA_FILE\" \\\n        {{- if .Values.tls.authClients }}\n          --cert \"$REDIS_SENTINEL_TLS_CERT_FILE\" \\\n          --key \"$REDIS_SENTINEL_TLS_KEY_FILE\" \\\n        {{- end }}\n{{- else }}\n        -p $REDIS_SENTINEL_PORT \\\n{{- end }}\n        ping\n    )\n    if [ \"$?\" -eq \"124\" ]; then\n      echo \"Timed out\"\n      exit 1\n    fi\n    if [ \"$response\" != \"PONG\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  parse_sentinels.awk: |-\n    /ip/ {FOUND_IP=1}\n    /port/ {FOUND_PORT=1}\n    /runid/ {FOUND_RUNID=1}\n    !/ip|port|runid/ {\n      if (FOUND_IP==1) {\n        IP=$1; FOUND_IP=0;\n      }\n      else if (FOUND_PORT==1) {\n        PORT=$1;\n        FOUND_PORT=0;\n      } else if (FOUND_RUNID==1) {\n        printf \"\\nsentinel known-sentinel {{ .Values.sentinel.masterSet }} %s %s %s\", IP, PORT, $0; FOUND_RUNID=0;\n      }\n    }\n{{- end }}\n  ping_readiness_master.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n    [[ -n \"$REDIS_MASTER_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_MASTER_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h $REDIS_MASTER_HOST \\\n        -p $REDIS_MASTER_PORT_NUMBER \\\n{{- if .Values.tls.enabled }}\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- end }}\n        ping\n    )\n    if [ \"$?\" -eq \"124\" ]; then\n      echo \"Timed out\"\n      exit 1\n    fi\n    if [ \"$response\" != \"PONG\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  ping_liveness_master.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n    [[ -n \"$REDIS_MASTER_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_MASTER_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h $REDIS_MASTER_HOST \\\n        -p $REDIS_MASTER_PORT_NUMBER \\\n{{- if .Values.tls.enabled }}\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- end }}\n        ping\n    )\n    if [ \"$?\" -eq \"124\" ]; then\n      echo \"Timed out\"\n      exit 1\n    fi\n    responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}')\n    if [ \"$response\" != \"PONG\" ] && [ \"$responseFirstWord\" != \"LOADING\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  ping_readiness_local_and_master.sh: |-\n    script_dir=\"$(dirname \"$0\")\"\n    exit_status=0\n    \"$script_dir/ping_readiness_local.sh\" $1 || exit_status=$?\n    \"$script_dir/ping_readiness_master.sh\" $1 || exit_status=$?\n    exit $exit_status\n  ping_liveness_local_and_master.sh: |-\n    script_dir=\"$(dirname \"$0\")\"\n    exit_status=0\n    \"$script_dir/ping_liveness_local.sh\" $1 || exit_status=$?\n    \"$script_dir/ping_liveness_master.sh\" $1 || exit_status=$?\n    exit $exit_status\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/master/application.yaml",
    "content": "{{- if or (not (eq .Values.architecture \"replication\")) (not .Values.sentinel.enabled) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: {{ .Values.master.kind }}\nmetadata:\n  name: {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.master.count }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: master\n  {{- if (eq .Values.master.kind \"StatefulSet\") }}\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  {{- end }}\n  {{- if .Values.master.updateStrategy }}\n  {{- if (eq .Values.master.kind \"Deployment\") }}\n  strategy: {{- toYaml .Values.master.updateStrategy | nindent 4 }}\n  {{- else }}\n  updateStrategy: {{- toYaml .Values.master.updateStrategy | nindent 4 }}\n  {{- end }}\n  {{- if and .Values.master.minReadySeconds (semverCompare \">= 1.25\" (include \"common.capabilities.kubeVersion\" .)) }}\n  minReadySeconds: {{ .Values.master.minReadySeconds }}\n  {{- end }}\n  {{- end }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: master\n        {{- if .Values.master.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if (include \"redis.createConfigmap\" .) }}\n        checksum/configmap: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        checksum/health: {{ include (print $.Template.BasePath \"/health-configmap.yaml\") . | sha256sum }}\n        checksum/scripts: {{ include (print $.Template.BasePath \"/scripts-configmap.yaml\") . | sha256sum }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.master.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"redis.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.master.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.master.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ template \"redis.masterServiceAccountName\" . }}\n      {{- if .Values.master.priorityClassName }}\n      priorityClassName: {{ .Values.master.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.master.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.master.podAffinityPreset \"component\" \"master\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.master.podAntiAffinityPreset \"component\" \"master\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.master.nodeAffinityPreset.type \"key\" .Values.master.nodeAffinityPreset.key \"values\" .Values.master.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.master.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.topologySpreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.shareProcessNamespace }}\n      shareProcessNamespace: {{ .Values.master.shareProcessNamespace }}\n      {{- end }}\n      {{- if .Values.master.schedulerName }}\n      schedulerName: {{ .Values.master.schedulerName | quote }}\n      {{- end }}\n      {{- if .Values.master.dnsPolicy }}\n      dnsPolicy: {{ .Values.master.dnsPolicy }}\n      {{- end }}\n      {{- if .Values.master.dnsConfig }}\n      dnsConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.dnsConfig \"context\" $) | nindent 8 }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.master.terminationGracePeriodSeconds }}\n      containers:\n        - name: redis\n          image: {{ template \"redis.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.master.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.master.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.master.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-master.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: REDIS_REPLICATION_MODE\n              value: master\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            - name: REDIS_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_TLS_PORT\n              value: {{ .Values.master.containerPorts.redis | quote }}\n            - name:  REDIS_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_PORT\n              value: {{ .Values.master.containerPorts.redis | quote }}\n            {{- end }}\n            {{- if .Values.master.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.master.extraEnvVarsCM .Values.master.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.master.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ .Values.master.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.master.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.master.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis\n              containerPort: {{ .Values.master.containerPorts.redis }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.master.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.master.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: redis\n          {{- end }}\n          {{- if .Values.master.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.master.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.master.livenessProbe.periodSeconds }}\n            # One second longer than command timeout should prevent generation of zombie processes.\n            timeoutSeconds: {{ add1 .Values.master.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.master.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.master.livenessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local.sh {{ .Values.master.livenessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- if .Values.master.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.master.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.master.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ add1 .Values.master.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.master.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.master.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_readiness_local.sh {{ .Values.master.readinessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.master.resources }}\n          resources: {{- toYaml .Values.master.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: {{ .Values.master.persistence.path }}\n              {{- if .Values.master.persistence.subPath }}\n              subPath: {{ .Values.master.persistence.subPath }}\n              {{- else if .Values.master.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.master.persistence.subPathExpr }}\n              {{- end }}\n            - name: config\n              mountPath: /opt/bitnami/redis/mounted-etc\n            - name: redis-tmp-conf\n              mountPath: /opt/bitnami/redis/etc/\n            - name: tmp\n              mountPath: /tmp\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.master.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ include \"redis.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.metrics.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.metrics.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -c\n            - |\n              if [[ -f '/secrets/redis-password' ]]; then\n              export REDIS_PASSWORD=$(cat /secrets/redis-password)\n              fi\n              redis_exporter{{- range $key, $value := .Values.metrics.extraArgs }} --{{ $key }}={{ $value }}{{- end }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: REDIS_ALIAS\n              value: {{ template \"common.names.fullname\" . }}\n            {{- if .Values.auth.enabled }}\n            - name: REDIS_USER\n              value: default\n            {{- if (not .Values.auth.usePasswordFiles) }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_ADDR\n              value: rediss://{{ .Values.metrics.redisTargetHost }}:{{ .Values.master.containerPorts.redis }}\n              {{- if .Values.tls.authClients }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n              {{- end }}\n            - name: REDIS_EXPORTER_TLS_CA_CERT_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- end }}\n            {{- if .Values.metrics.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9121\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /secrets/\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.metrics.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- end }}\n        {{- if .Values.master.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- $needsVolumePermissions := and .Values.volumePermissions.enabled .Values.master.persistence.enabled .Values.master.podSecurityContext.enabled .Values.master.containerSecurityContext.enabled }}\n      {{- if or .Values.master.initContainers $needsVolumePermissions .Values.sysctl.enabled }}\n      initContainers:\n        {{- if .Values.master.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if $needsVolumePermissions }}\n        - name: volume-permissions\n          image: {{ include \"redis.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown -R `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.master.persistence.path }}\n              {{- else }}\n              chown -R {{ .Values.master.containerSecurityContext.runAsUser }}:{{ .Values.master.podSecurityContext.fsGroup }} {{ .Values.master.persistence.path }}\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: redis-data\n              mountPath: {{ .Values.master.persistence.path }}\n              {{- if .Values.master.persistence.subPath }}\n              subPath: {{ .Values.master.persistence.subPath }}\n              {{- else if .Values.master.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.master.persistence.subPathExpr }}\n              {{- end }}\n        {{- end }}\n        {{- if .Values.sysctl.enabled }}\n        - name: init-sysctl\n          image: {{ include \"redis.sysctl.image\" . }}\n          imagePullPolicy: {{ default \"\" .Values.sysctl.image.pullPolicy | quote }}\n          securityContext:\n            privileged: true\n            runAsUser: 0\n          {{- if .Values.sysctl.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sysctl.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.resources }}\n          resources: {{- toYaml .Values.sysctl.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.mountHostSys }}\n          volumeMounts:\n            - name: host-sys\n              mountPath: /host-sys\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      volumes:\n        - name: start-scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        - name: health\n          configMap:\n            name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.auth.usePasswordFiles }}\n        - name: redis-password\n          secret:\n            secretName: {{ template \"redis.secretName\" . }}\n            items:\n            - key: {{ template \"redis.secretPasswordKey\" . }}\n              path: redis-password\n        {{- end }}\n        - name: config\n          configMap:\n            name: {{ include \"redis.configmapName\" . }}\n        {{- if .Values.sysctl.mountHostSys }}\n        - name: host-sys\n          hostPath:\n            path: /sys\n        {{- end }}\n        - name: redis-tmp-conf\n          {{- if .Values.master.persistence.medium }}\n          emptyDir:\n            medium: {{ .Values.master.persistence.medium | quote }}\n            {{- if .Values.master.persistence.sizeLimit }}\n            sizeLimit: {{ .Values.master.persistence.sizeLimit | quote }}\n            {{- end }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        - name: tmp\n          {{- if .Values.master.persistence.medium }}\n          emptyDir:\n            medium: {{ .Values.master.persistence.medium | quote }}\n            {{- if .Values.master.persistence.sizeLimit }}\n            sizeLimit: {{ .Values.master.persistence.sizeLimit | quote }}\n            {{- end }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: redis-certificates\n          secret:\n            secretName: {{ include \"redis.tlsSecretName\" . }}\n            defaultMode: 256\n        {{- end }}\n        {{- if .Values.master.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.metrics.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n  {{- if not .Values.master.persistence.enabled }}\n        - name: redis-data\n          {{- if .Values.master.persistence.medium }}\n          emptyDir: {\n            medium: {{ .Values.master.persistence.medium | quote }}\n          }\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n  {{- else if .Values.master.persistence.existingClaim }}\n        - name: redis-data\n          persistentVolumeClaim:\n            claimName: {{ printf \"%s\" (tpl .Values.master.persistence.existingClaim .) }}\n  {{- else if (eq .Values.master.kind \"Deployment\") }}\n        - name: redis-data\n          persistentVolumeClaim:\n            claimName: {{ printf \"redis-data-%s-master\" (include \"common.names.fullname\" .) }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: redis-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: master\n        {{- if .Values.master.persistence.annotations }}\n        annotations: {{- toYaml .Values.master.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.master.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.master.persistence.size | quote }}\n        {{- if .Values.master.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- if .Values.master.persistence.dataSource }}\n        dataSource: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.persistence.dataSource \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.master.persistence \"global\" .Values.global) | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/master/psp.yaml",
    "content": "{{- $pspAvailable := (semverCompare \"<1.25-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- if and $pspAvailable .Values.podSecurityPolicy.create }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  allowPrivilegeEscalation: false\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.master.podSecurityContext.fsGroup }}\n        max: {{ .Values.master.podSecurityContext.fsGroup }}\n  hostIPC: false\n  hostNetwork: false\n  hostPID: false\n  privileged: false\n  readOnlyRootFilesystem: false\n  requiredDropCapabilities:\n    - ALL\n  runAsUser:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.master.containerSecurityContext.runAsUser }}\n        max: {{ .Values.master.containerSecurityContext.runAsUser }}\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.master.containerSecurityContext.runAsUser }}\n        max: {{ .Values.master.containerSecurityContext.runAsUser }}\n  volumes:\n    - 'configMap'\n    - 'secret'\n    - 'emptyDir'\n    - 'persistentVolumeClaim'\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/master/pvc.yaml",
    "content": "{{- if and (eq .Values.architecture \"standalone\") (eq .Values.master.kind \"Deployment\") (.Values.master.persistence.enabled) (not .Values.master.persistence.existingClaim) }}\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: {{ printf \"redis-data-%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n  {{- if .Values.master.persistence.annotations }}\n  annotations: {{- toYaml .Values.master.persistence.annotations | nindent 4 }}\n  {{- end }}\nspec:\n  accessModes:\n  {{- range .Values.master.persistence.accessModes }}\n    - {{ . | quote }}\n  {{- end }}\n  resources:\n    requests:\n      storage: {{ .Values.master.persistence.size | quote }}\n  {{- if .Values.master.persistence.selector }}\n  selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.persistence.selector \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- if .Values.master.persistence.dataSource }}\n  dataSource: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.persistence.dataSource \"context\" $) | nindent 4 }}\n  {{- end }}\n  {{- include \"common.storage.class\" (dict \"persistence\" .Values.master.persistence \"global\" .Values.global) | nindent 2 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/master/service.yaml",
    "content": "{{- if not .Values.sentinel.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.master.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.master.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.master.service.type }}\n  {{- if or (eq .Values.master.service.type \"LoadBalancer\") (eq .Values.master.service.type \"NodePort\") }}\n  externalTrafficPolicy: {{ .Values.master.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if (semverCompare \">=1.22-0\" (include \"common.capabilities.kubeVersion\" .)) }}\n  internalTrafficPolicy: {{ .Values.master.service.internalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.master.service.type \"LoadBalancer\") (not (empty .Values.master.service.loadBalancerIP)) }}\n  loadBalancerIP: {{ .Values.master.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.master.service.type \"LoadBalancer\") (not (empty .Values.master.service.loadBalancerSourceRanges)) }}\n  loadBalancerSourceRanges: {{ .Values.master.service.loadBalancerSourceRanges }}\n  {{- end }}\n  {{- if and .Values.master.service.clusterIP (eq .Values.master.service.type \"ClusterIP\") }}\n  clusterIP: {{ .Values.master.service.clusterIP }}\n  {{- end }}\n  {{- if .Values.master.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.master.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.master.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ .Values.master.service.ports.redis }}\n      targetPort: redis\n      {{- if and (or (eq .Values.master.service.type \"NodePort\") (eq .Values.master.service.type \"LoadBalancer\")) .Values.master.service.nodePorts.redis}}\n      nodePort: {{ .Values.master.service.nodePorts.redis}}\n      {{- else if eq .Values.master.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n    {{- if .Values.master.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/master/serviceaccount.yaml",
    "content": "{{- if .Values.master.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: {{ .Values.master.serviceAccount.automountServiceAccountToken }}\nmetadata:\n  name: {{ template \"redis.masterServiceAccountName\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations .Values.master.serviceAccount.annotations }}\n  annotations:\n    {{- if or .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.master.serviceAccount.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.serviceAccount.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/metrics-svc.yaml",
    "content": "{{- if .Values.metrics.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-metrics\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: metrics\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.metrics.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.metrics.service.type }}\n  {{- if eq .Values.metrics.service.type \"LoadBalancer\" }}\n  externalTrafficPolicy: {{ .Values.metrics.service.externalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.metrics.service.type \"LoadBalancer\") .Values.metrics.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.metrics.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.metrics.service.type \"LoadBalancer\") .Values.metrics.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.metrics.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  ports:\n    - name: http-metrics\n      port: {{ .Values.metrics.service.port }}\n      protocol: TCP\n      targetPort: metrics\n    {{- if .Values.metrics.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\nkind: NetworkPolicy\napiVersion: {{ template \"networkPolicy.apiVersion\" . }}\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  podSelector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n  policyTypes:\n    - Ingress\n  {{- if or (eq .Values.architecture \"replication\") .Values.networkPolicy.extraEgress }}\n    - Egress\n  egress:\n    {{- if eq .Values.architecture \"replication\" }}\n    # Allow dns resolution\n    - ports:\n        - port: 53\n          protocol: UDP\n    # Allow outbound connections to other cluster pods\n    - ports:\n        - port: {{ .Values.master.containerPorts.redis }}\n        {{- if .Values.sentinel.enabled }}\n        - port: {{ .Values.sentinel.containerPorts.sentinel }}\n        {{- end }}\n      to:\n        - podSelector:\n            matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 14 }}\n    {{- end }}\n    {{- if .Values.networkPolicy.extraEgress }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.networkPolicy.extraEgress \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n  ingress:\n    # Allow inbound connections\n    - ports:\n        - port: {{ .Values.master.containerPorts.redis }}\n        {{- if .Values.sentinel.enabled }}\n        - port: {{ .Values.sentinel.containerPorts.sentinel }}\n        {{- end }}\n      {{- if not .Values.networkPolicy.allowExternal }}\n      from:\n        - podSelector:\n            matchLabels:\n              {{ template \"common.names.fullname\" . }}-client: \"true\"\n        - podSelector:\n            matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 14 }}\n        {{- if or .Values.networkPolicy.ingressNSMatchLabels .Values.networkPolicy.ingressNSPodMatchLabels }}\n        - namespaceSelector:\n            matchLabels:\n              {{- if .Values.networkPolicy.ingressNSMatchLabels }}\n                {{- range $key, $value := .Values.networkPolicy.ingressNSMatchLabels }}\n                {{ $key | quote }}: {{ $value | quote }}\n                {{- end }}\n              {{ else }}\n                {}\n              {{- end }}\n          {{- if .Values.networkPolicy.ingressNSPodMatchLabels }}\n          podSelector:\n            matchLabels:\n              {{- range $key, $value := .Values.networkPolicy.ingressNSPodMatchLabels }}\n              {{ $key | quote }}: {{ $value | quote }}\n              {{- end }}\n          {{- end }}\n        {{- end }}\n      {{- end }}\n    {{- if .Values.metrics.enabled }}\n    # Allow prometheus scrapes for metrics\n    - ports:\n        - port: 9121\n    {{- end }}\n    {{- if .Values.networkPolicy.extraIngress }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.networkPolicy.extraIngress \"context\" $ ) | nindent 4 }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/pdb.yaml",
    "content": "{{- if .Values.pdb.create }}\napiVersion: {{ include \"common.capabilities.policy.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.pdb.minAvailable }}\n  minAvailable: {{ .Values.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/prometheusrule.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ default .Release.Namespace .Values.metrics.prometheusRule.namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.prometheusRule.additionalLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.prometheusRule.additionalLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  groups:\n    - name: {{ include \"common.names.fullname\" . }}\n      rules: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.prometheusRule.rules \"context\" $ ) | nindent 8 }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/replicas/hpa.yaml",
    "content": "{{- if and .Values.replica.autoscaling.enabled (not .Values.sentinel.enabled) }}\napiVersion: {{ include \"common.capabilities.hpa.apiVersion\" ( dict \"context\" $ ) }}\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  scaleTargetRef:\n    apiVersion: {{ include \"common.capabilities.deployment.apiVersion\" . }}\n    kind: StatefulSet\n    name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  minReplicas: {{ .Values.replica.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.replica.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.replica.autoscaling.targetMemory }}\n    - type: Resource\n      resource:\n        name: memory\n        {{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .) }}\n        targetAverageUtilization: {{ .Values.replica.autoscaling.targetMemory }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.replica.autoscaling.targetMemory }}\n        {{- end }}\n    {{- end }}\n    {{- if .Values.replica.autoscaling.targetCPU }}\n    - type: Resource\n      resource:\n        name: cpu\n        {{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .) }}\n        targetAverageUtilization: {{ .Values.replica.autoscaling.targetCPU }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.replica.autoscaling.targetCPU }}\n        {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/replicas/service.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") (not .Values.sentinel.enabled) }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.replica.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.replica.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.replica.service.type }}\n  {{- if or (eq .Values.replica.service.type \"LoadBalancer\") (eq .Values.replica.service.type \"NodePort\") }}\n  externalTrafficPolicy: {{ .Values.replica.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if (semverCompare \">=1.22-0\" (include \"common.capabilities.kubeVersion\" .)) }}\n  internalTrafficPolicy: {{ .Values.replica.service.internalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.replica.service.type \"LoadBalancer\") (not (empty .Values.replica.service.loadBalancerIP)) }}\n  loadBalancerIP: {{ .Values.replica.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.replica.service.type \"LoadBalancer\") (not (empty .Values.replica.service.loadBalancerSourceRanges)) }}\n  loadBalancerSourceRanges: {{ .Values.replica.service.loadBalancerSourceRanges }}\n  {{- end }}\n  {{- if and .Values.replica.service.clusterIP (eq .Values.replica.service.type \"ClusterIP\") }}\n  clusterIP: {{ .Values.replica.service.clusterIP }}\n  {{- end }}\n  {{- if .Values.replica.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.replica.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.replica.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ .Values.replica.service.ports.redis }}\n      targetPort: redis\n      {{- if and (or (eq .Values.replica.service.type \"NodePort\") (eq .Values.replica.service.type \"LoadBalancer\")) .Values.replica.service.nodePorts.redis}}\n      nodePort: {{ .Values.replica.service.nodePorts.redis}}\n      {{- else if eq .Values.replica.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n    {{- if .Values.replica.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/replicas/serviceaccount.yaml",
    "content": "{{- if .Values.replica.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: {{ .Values.replica.serviceAccount.automountServiceAccountToken }}\nmetadata:\n  name: {{ template \"redis.replicaServiceAccountName\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations .Values.replica.serviceAccount.annotations }}\n  annotations:\n    {{- if or .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.replica.serviceAccount.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.serviceAccount.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/replicas/statefulset.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") (not .Values.sentinel.enabled) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if not .Values.replica.autoscaling.enabled }}\n  replicas: {{ .Values.replica.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: replica\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  {{- if .Values.replica.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.replica.updateStrategy | nindent 4 }}\n  {{- end }}\n  {{- if and .Values.replica.minReadySeconds (semverCompare \">= 1.25\" (include \"common.capabilities.kubeVersion\" .)) }}\n  minReadySeconds: {{ .Values.replica.minReadySeconds }}\n  {{- end }}\n  {{- if .Values.replica.podManagementPolicy }}\n  podManagementPolicy: {{ .Values.replica.podManagementPolicy | quote }}\n  {{- end }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: replica\n        {{- if .Values.replica.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if (include \"redis.createConfigmap\" .) }}\n        checksum/configmap: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        checksum/health: {{ include (print $.Template.BasePath \"/health-configmap.yaml\") . | sha256sum }}\n        checksum/scripts: {{ include (print $.Template.BasePath \"/scripts-configmap.yaml\") . | sha256sum }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.replica.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"redis.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.replica.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.replica.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ template \"redis.replicaServiceAccountName\" . }}\n      {{- if .Values.replica.priorityClassName }}\n      priorityClassName: {{ .Values.replica.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.replica.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAffinityPreset \"component\" \"replica\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAntiAffinityPreset \"component\" \"replica\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.replica.nodeAffinityPreset.type \"key\" .Values.replica.nodeAffinityPreset.key \"values\" .Values.replica.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.replica.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.topologySpreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.shareProcessNamespace }}\n      shareProcessNamespace: {{ .Values.replica.shareProcessNamespace }}\n      {{- end }}\n      {{- if .Values.replica.schedulerName }}\n      schedulerName: {{ .Values.replica.schedulerName | quote }}\n      {{- end }}\n      {{- if .Values.replica.dnsPolicy }}\n      dnsPolicy: {{ .Values.replica.dnsPolicy }}\n      {{- end }}\n      {{- if .Values.replica.dnsConfig }}\n      dnsConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.dnsConfig \"context\" $) | nindent 8 }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.replica.terminationGracePeriodSeconds }}\n      containers:\n        - name: redis\n          image: {{ template \"redis.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.replica.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-replica.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: REDIS_REPLICATION_MODE\n              value: replica\n            - name: REDIS_MASTER_HOST\n            {{- if and (eq (int64 .Values.master.count) 1) (ne .Values.master.kind \"Deployment\") }}\n              value: {{ template \"common.names.fullname\" . }}-master-0.{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\n            {{- else }}\n              value: {{ template \"common.names.fullname\" . }}-master.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\n            {{- end }}\n            - name: REDIS_MASTER_PORT_NUMBER\n              value: {{ .Values.master.containerPorts.redis | quote }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            - name: REDIS_MASTER_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            - name: REDIS_MASTER_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            - name: REDIS_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_TLS_PORT\n              value: {{ .Values.replica.containerPorts.redis | quote }}\n            - name:  REDIS_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_PORT\n              value: {{ .Values.replica.containerPorts.redis | quote }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.replica.extraEnvVarsCM .Values.replica.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.replica.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ .Values.replica.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.replica.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis\n              containerPort: {{ .Values.replica.containerPorts.redis }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.replica.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            tcpSocket:\n              port: redis\n          {{- end }}\n          {{- if .Values.replica.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.replica.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ add1 .Values.replica.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.livenessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local_and_master.sh {{ .Values.replica.livenessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- if .Values.replica.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.replica.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ add1 .Values.replica.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_readiness_local_and_master.sh {{ .Values.replica.readinessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.resources }}\n          resources: {{- toYaml .Values.replica.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: /data\n              {{- if .Values.replica.persistence.subPath }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n              {{- else if .Values.replica.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.replica.persistence.subPathExpr }}\n              {{- end }}\n            - name: config\n              mountPath: /opt/bitnami/redis/mounted-etc\n            - name: redis-tmp-conf\n              mountPath: /opt/bitnami/redis/etc\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.replica.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ include \"redis.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.metrics.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.metrics.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.metrics.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -c\n            - |\n              if [[ -f '/secrets/redis-password' ]]; then\n              export REDIS_PASSWORD=$(cat /secrets/redis-password)\n              fi\n              redis_exporter{{- range $key, $value := .Values.metrics.extraArgs }} --{{ $key }}={{ $value }}{{- end }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: REDIS_ALIAS\n              value: {{ template \"common.names.fullname\" . }}\n            {{- if .Values.auth.enabled }}\n            - name: REDIS_USER\n              value: default\n            {{- if (not .Values.auth.usePasswordFiles) }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_ADDR\n              value: rediss://{{ .Values.metrics.redisTargetHost }}:{{ .Values.replica.containerPorts.redis }}\n              {{- if .Values.tls.authClients }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n              {{- end }}\n            - name: REDIS_EXPORTER_TLS_CA_CERT_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- end }}\n            {{- if .Values.metrics.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9121\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /secrets/\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.metrics.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- end }}\n        {{- if .Values.replica.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- $needsVolumePermissions := and .Values.volumePermissions.enabled .Values.replica.persistence.enabled .Values.replica.podSecurityContext.enabled .Values.replica.containerSecurityContext.enabled }}\n      {{- if or .Values.replica.initContainers $needsVolumePermissions .Values.sysctl.enabled }}\n      initContainers:\n        {{- if .Values.replica.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if $needsVolumePermissions }}\n        - name: volume-permissions\n          image: {{ include \"redis.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown -R `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.replica.persistence.path }}\n              {{- else }}\n              chown -R {{ .Values.replica.containerSecurityContext.runAsUser }}:{{ .Values.replica.podSecurityContext.fsGroup }} {{ .Values.replica.persistence.path }}\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              {{- if .Values.replica.persistence.subPath }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n              {{- else if .Values.replica.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.replica.persistence.subPathExpr }}\n              {{- end }}\n        {{- end }}\n        {{- if .Values.sysctl.enabled }}\n        - name: init-sysctl\n          image: {{ include \"redis.sysctl.image\" . }}\n          imagePullPolicy: {{ default \"\" .Values.sysctl.image.pullPolicy | quote }}\n          securityContext:\n            privileged: true\n            runAsUser: 0\n          {{- if .Values.sysctl.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sysctl.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.resources }}\n          resources: {{- toYaml .Values.sysctl.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.mountHostSys }}\n          volumeMounts:\n            - name: host-sys\n              mountPath: /host-sys\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      volumes:\n        - name: start-scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        - name: health\n          configMap:\n            name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.auth.usePasswordFiles }}\n        - name: redis-password\n          secret:\n            secretName: {{ template \"redis.secretName\" . }}\n            items:\n            - key: {{ template \"redis.secretPasswordKey\" . }}\n              path: redis-password\n        {{- end }}\n        - name: config\n          configMap:\n            name: {{ include \"redis.configmapName\" . }}\n        {{- if .Values.sysctl.mountHostSys }}\n        - name: host-sys\n          hostPath:\n            path: /sys\n        {{- end }}\n        - name: redis-tmp-conf\n          {{- if .Values.replica.persistence.medium }}\n          emptyDir:\n            medium: {{ .Values.replica.persistence.medium | quote }}\n            {{- if .Values.replica.persistence.sizeLimit }}\n            sizeLimit: {{ .Values.replica.persistence.sizeLimit | quote }}\n            {{- end }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: redis-certificates\n          secret:\n            secretName: {{ include \"redis.tlsSecretName\" . }}\n            defaultMode: 256\n        {{- end }}\n        {{- if .Values.replica.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.metrics.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n  {{- if not .Values.replica.persistence.enabled }}\n        - name: redis-data\n          {{- if .Values.replica.persistence.medium }}\n          emptyDir: {\n            medium: {{ .Values.replica.persistence.medium | quote }}\n          }\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n  {{- else if .Values.replica.persistence.existingClaim }}\n        - name: redis-data\n          persistentVolumeClaim:\n            claimName: {{ printf \"%s\" (tpl .Values.replica.persistence.existingClaim .) }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: redis-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: replica\n        {{- if .Values.replica.persistence.annotations }}\n        annotations: {{- toYaml .Values.replica.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.replica.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.replica.persistence.size | quote }}\n        {{- if .Values.replica.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- if .Values.replica.persistence.dataSource }}\n        dataSource: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.persistence.dataSource \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.replica.persistence \"global\" .Values.global) | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/role.yaml",
    "content": "{{- if .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: Role\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nrules:\n  {{- $pspAvailable := (semverCompare \"<1.25-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n  {{- if and $pspAvailable .Values.podSecurityPolicy.enabled }}\n  - apiGroups:\n      - '{{ template \"podSecurityPolicy.apiGroup\" . }}'\n    resources:\n      - 'podsecuritypolicies'\n    verbs:\n      - 'use'\n    resourceNames: [{{ printf \"%s-master\" (include \"common.names.fullname\" .) }}]\n  {{- end }}\n  {{- if .Values.rbac.rules }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.rbac.rules \"context\" $ ) | nindent 2 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/rolebinding.yaml",
    "content": "{{- if .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: RoleBinding\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ template \"common.names.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"redis.serviceAccountName\" . }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/scripts-configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\n  start-node.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libos.sh\n    . /opt/bitnami/scripts/liblog.sh\n    . /opt/bitnami/scripts/libvalidations.sh\n\n    get_port() {\n        hostname=\"$1\"\n        type=\"$2\"\n\n        port_var=$(echo \"${hostname^^}_SERVICE_PORT_$type\" | sed \"s/-/_/g\")\n        port=${!port_var}\n\n        if [ -z \"$port\" ]; then\n            case $type in\n                \"SENTINEL\")\n                    echo {{ .Values.sentinel.containerPorts.sentinel }}\n                    ;;\n                \"REDIS\")\n                    echo {{ .Values.master.containerPorts.redis }}\n                    ;;\n            esac\n        else\n            echo $port\n        fi\n    }\n\n    get_full_hostname() {\n        hostname=\"$1\"\n\n        {{- if .Values.useExternalDNS.enabled }}\n        echo \"${hostname}.{{- include \"redis.externalDNS.suffix\" . }}\"\n        {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n        echo \"${hostname}.{{- .Release.Namespace }}\"\n        {{- else }}\n        echo \"${hostname}.${HEADLESS_SERVICE}\"\n        {{- end }}\n    }\n\n    REDISPORT=$(get_port \"$HOSTNAME\" \"REDIS\")\n\n    HEADLESS_SERVICE=\"{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n\n    if [ -n \"$REDIS_EXTERNAL_MASTER_HOST\" ]; then\n        REDIS_SERVICE=\"$REDIS_EXTERNAL_MASTER_HOST\"\n    else\n        REDIS_SERVICE=\"{{ template \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n    fi\n\n    SENTINEL_SERVICE_PORT=$(get_port \"{{ include \"common.names.fullname\" . }}\" \"TCP_SENTINEL\")\n    validate_quorum() {\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            quorum_info_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel master {{ .Values.sentinel.masterSet }}\"\n        else\n            quorum_info_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT sentinel master {{ .Values.sentinel.masterSet }}\"\n        fi\n        info \"about to run the command: $quorum_info_command\"\n        eval $quorum_info_command | grep -Fq \"s_down\"\n    }\n\n    trigger_manual_failover() {\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            failover_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel failover {{ .Values.sentinel.masterSet }}\"\n        else\n            failover_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT sentinel failover {{ .Values.sentinel.masterSet }}\"\n        fi\n\n        info \"about to run the command: $failover_command\"\n        eval $failover_command\n    }\n\n    get_sentinel_master_info() {\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            sentinel_info_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}timeout {{ .Values.sentinel.getMasterTimeout }} redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        else\n            sentinel_info_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}timeout {{ .Values.sentinel.getMasterTimeout }} redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        fi\n\n        info \"about to run the command: $sentinel_info_command\"\n        eval $sentinel_info_command\n    }\n\n    {{- if and .Values.replica.containerSecurityContext.runAsUser (eq (.Values.replica.containerSecurityContext.runAsUser | int) 0) }}\n    useradd redis\n    chown -R redis {{ .Values.replica.persistence.path }}\n    {{- end }}\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n\n    # check if there is a master\n    master_in_persisted_conf=\"$(get_full_hostname \"$HOSTNAME\")\"\n    master_port_in_persisted_conf=\"$REDIS_MASTER_PORT_NUMBER\"\n    master_in_sentinel=\"$(get_sentinel_master_info)\"\n    redisRetVal=$?\n\n    {{- if .Values.sentinel.persistence.enabled }}\n    if [[ -f /opt/bitnami/redis-sentinel/etc/sentinel.conf ]]; then\n        master_in_persisted_conf=\"$(awk '/monitor/ {print $4}' /opt/bitnami/redis-sentinel/etc/sentinel.conf)\"\n        master_port_in_persisted_conf=\"$(awk '/monitor/ {print $5}' /opt/bitnami/redis-sentinel/etc/sentinel.conf)\"\n        info \"Found previous master ${master_in_persisted_conf}:${master_port_in_persisted_conf} in /opt/bitnami/redis-sentinel/etc/sentinel.conf\"\n        debug \"$(cat /opt/bitnami/redis-sentinel/etc/sentinel.conf | grep monitor)\"\n        touch /opt/bitnami/redis-sentinel/etc/.node_read\n    fi\n    {{- end }}\n\n    if [[ $redisRetVal -ne 0 ]]; then\n        if [[ \"$master_in_persisted_conf\" == \"$(get_full_hostname \"$HOSTNAME\")\" ]]; then\n            # Case 1: No active sentinel and in previous sentinel.conf we were the master --> MASTER\n            info \"Configuring the node as master\"\n            export REDIS_REPLICATION_MODE=\"master\"\n        else\n            # Case 2: No active sentinel and in previous sentinel.conf we were not master --> REPLICA\n            info \"Configuring the node as replica\"\n            export REDIS_REPLICATION_MODE=\"replica\"\n            REDIS_MASTER_HOST=${master_in_persisted_conf}\n            REDIS_MASTER_PORT_NUMBER=${master_port_in_persisted_conf}\n        fi\n    else\n        # Fetches current master's host and port\n        REDIS_SENTINEL_INFO=($(get_sentinel_master_info))\n        info \"Current master: REDIS_SENTINEL_INFO=(${REDIS_SENTINEL_INFO[0]},${REDIS_SENTINEL_INFO[1]})\"\n        REDIS_MASTER_HOST=${REDIS_SENTINEL_INFO[0]}\n        REDIS_MASTER_PORT_NUMBER=${REDIS_SENTINEL_INFO[1]}\n\n        if [[ \"$REDIS_MASTER_HOST\" == \"$(get_full_hostname \"$HOSTNAME\")\" ]]; then\n            # Case 3: Active sentinel and master it is this node --> MASTER\n            info \"Configuring the node as master\"\n            export REDIS_REPLICATION_MODE=\"master\"\n        else\n            # Case 4: Active sentinel and master is not this node --> REPLICA\n            info \"Configuring the node as replica\"\n            export REDIS_REPLICATION_MODE=\"replica\"\n\n            {{- if and .Values.sentinel.automateClusterRecovery (le (int .Values.sentinel.downAfterMilliseconds) 2000) }}\n            retry_count=1\n            while validate_quorum\n            do\n                info \"sleeping, waiting for Redis master to come up\"\n                sleep 1s\n                if ! ((retry_count % 11)); then\n                    info \"Trying to manually failover\"\n                    failover_result=$(trigger_manual_failover)\n\n                    debug \"Failover result: $failover_result\"\n                fi\n\n                ((retry_count+=1))\n            done\n            info \"Redis master is up now\"\n            {{- end }}\n        fi\n    fi\n\n    if [[ -n \"$REDIS_EXTERNAL_MASTER_HOST\" ]]; then\n      REDIS_MASTER_HOST=\"$REDIS_EXTERNAL_MASTER_HOST\"\n      REDIS_MASTER_PORT_NUMBER=\"${REDIS_EXTERNAL_MASTER_PORT}\"\n    fi\n\n    if [[ -f /opt/bitnami/redis/mounted-etc/replica.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf\n    fi\n\n    if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf\n    fi\n\n    echo \"\" >> /opt/bitnami/redis/etc/replica.conf\n    echo \"replica-announce-port $REDISPORT\" >> /opt/bitnami/redis/etc/replica.conf\n    echo \"replica-announce-ip $(get_full_hostname \"$HOSTNAME\")\" >> /opt/bitnami/redis/etc/replica.conf\n\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_TLS_PORT}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_TLS_AUTH_CLIENTS}\")\n    ARGS+=(\"--tls-replication\" \"yes\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- else }}\n    ARGS=(\"--port\" \"${REDIS_PORT}\")\n    {{- end }}\n\n    if [[ \"$REDIS_REPLICATION_MODE\" = \"slave\" ]] || [[ \"$REDIS_REPLICATION_MODE\" = \"replica\" ]]; then\n        ARGS+=(\"--replicaof\" \"${REDIS_MASTER_HOST}\" \"${REDIS_MASTER_PORT_NUMBER}\")\n    fi\n\n    {{- if .Values.auth.enabled }}\n    ARGS+=(\"--requirepass\" \"${REDIS_PASSWORD}\")\n    ARGS+=(\"--masterauth\" \"${REDIS_MASTER_PASSWORD}\")\n    {{- else }}\n    ARGS+=(\"--protected-mode\" \"no\")\n    {{- end }}\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/replica.conf\")\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/redis.conf\")\n    {{- if .Values.replica.extraFlags }}\n    {{- range .Values.replica.extraFlags }}\n    ARGS+=({{ . | quote }})\n    {{- end }}\n    {{- end }}\n\n    {{- if .Values.replica.preExecCmds }}\n    {{- .Values.replica.preExecCmds | nindent 4 }}\n    {{- end }}\n\n    {{- if .Values.replica.command }}\n    exec {{ .Values.replica.command }} \"${ARGS[@]}\"\n    {{- else }}\n    exec redis-server \"${ARGS[@]}\"\n    {{- end }}\n\n  start-sentinel.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libos.sh\n    . /opt/bitnami/scripts/libvalidations.sh\n    . /opt/bitnami/scripts/libfile.sh\n\n    HEADLESS_SERVICE=\"{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n    REDIS_SERVICE=\"{{ template \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n\n    get_port() {\n        hostname=\"$1\"\n        type=\"$2\"\n\n        port_var=$(echo \"${hostname^^}_SERVICE_PORT_$type\" | sed \"s/-/_/g\")\n        port=${!port_var}\n\n        if [ -z \"$port\" ]; then\n            case $type in\n                \"SENTINEL\")\n                    echo {{ .Values.sentinel.containerPorts.sentinel }}\n                    ;;\n                \"REDIS\")\n                    echo {{ .Values.master.containerPorts.redis }}\n                    ;;\n            esac\n        else\n            echo $port\n        fi\n    }\n\n    get_full_hostname() {\n        hostname=\"$1\"\n\n        {{- if .Values.useExternalDNS.enabled }}\n        echo \"${hostname}.{{- include \"redis.externalDNS.suffix\" . }}\"\n        {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n        echo \"${hostname}.{{- .Release.Namespace }}\"\n        {{- else }}\n        echo \"${hostname}.${HEADLESS_SERVICE}\"\n        {{- end }}\n    }\n\n    SERVPORT=$(get_port \"$HOSTNAME\" \"SENTINEL\")\n    REDISPORT=$(get_port \"$HOSTNAME\" \"REDIS\")\n    SENTINEL_SERVICE_PORT=$(get_port \"{{ include \"common.names.fullname\" . }}\" \"TCP_SENTINEL\")\n\n    sentinel_conf_set() {\n        local -r key=\"${1:?missing key}\"\n        local value=\"${2:-}\"\n\n        # Sanitize inputs\n        value=\"${value//\\\\/\\\\\\\\}\"\n        value=\"${value//&/\\\\&}\"\n        value=\"${value//\\?/\\\\?}\"\n        [[ \"$value\" = \"\" ]] && value=\"\\\"$value\\\"\"\n\n        replace_in_file \"/opt/bitnami/redis-sentinel/etc/sentinel.conf\" \"^#*\\s*${key} .*\" \"${key} ${value}\" false\n    }\n    sentinel_conf_add() {\n        echo $'\\n'\"$@\" >> \"/opt/bitnami/redis-sentinel/etc/sentinel.conf\"\n    }\n    host_id() {\n        echo \"$1\" | openssl sha1 | awk '{print $2}'\n    }\n    get_sentinel_master_info() {\n        if is_boolean_yes \"$REDIS_SENTINEL_TLS_ENABLED\"; then\n            sentinel_info_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}timeout {{ .Values.sentinel.getMasterTimeout }} redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT --tls --cert ${REDIS_SENTINEL_TLS_CERT_FILE} --key ${REDIS_SENTINEL_TLS_KEY_FILE} --cacert ${REDIS_SENTINEL_TLS_CA_FILE} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        else\n            sentinel_info_command=\"{{- if and .Values.auth.enabled .Values.auth.sentinel }}REDISCLI_AUTH=\"\\$REDIS_PASSWORD\" {{ end }}timeout {{ .Values.sentinel.getMasterTimeout }} redis-cli -h $REDIS_SERVICE -p $SENTINEL_SERVICE_PORT sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        fi\n        info \"about to run the command: $sentinel_info_command\"\n        eval $sentinel_info_command\n    }\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n\n    master_in_persisted_conf=\"$(get_full_hostname \"$HOSTNAME\")\"\n\n    {{- if .Values.sentinel.persistence.enabled }}\n    if [[ -f /opt/bitnami/redis-sentinel/etc/sentinel.conf ]]; then\n        check_lock_file() {\n            [[ -f /opt/bitnami/redis-sentinel/etc/.node_read ]]\n        }\n        retry_while \"check_lock_file\"\n        rm -f /opt/bitnami/redis-sentinel/etc/.node_read\n        master_in_persisted_conf=\"$(awk '/monitor/ {print $4}' /opt/bitnami/redis-sentinel/etc/sentinel.conf)\"\n        info \"Found previous master $master_in_persisted_conf in /opt/bitnami/redis-sentinel/etc/sentinel.conf\"\n        debug \"$(cat /opt/bitnami/redis-sentinel/etc/sentinel.conf | grep monitor)\"\n    fi\n    {{- end }}\n    if ! get_sentinel_master_info && [[ \"$master_in_persisted_conf\" == \"$(get_full_hostname \"$HOSTNAME\")\" ]]; then\n        # No master found, lets create a master node\n        export REDIS_REPLICATION_MODE=\"master\"\n\n        REDIS_MASTER_HOST=$(get_full_hostname \"$HOSTNAME\")\n        REDIS_MASTER_PORT_NUMBER=\"$REDISPORT\"\n    else\n        export REDIS_REPLICATION_MODE=\"replica\"\n\n        # Fetches current master's host and port\n        REDIS_SENTINEL_INFO=($(get_sentinel_master_info))\n        info \"printing REDIS_SENTINEL_INFO=(${REDIS_SENTINEL_INFO[0]},${REDIS_SENTINEL_INFO[1]})\"\n        REDIS_MASTER_HOST=${REDIS_SENTINEL_INFO[0]}\n        REDIS_MASTER_PORT_NUMBER=${REDIS_SENTINEL_INFO[1]}\n    fi\n\n    if [[ -n \"$REDIS_EXTERNAL_MASTER_HOST\" ]]; then\n      REDIS_MASTER_HOST=\"$REDIS_EXTERNAL_MASTER_HOST\"\n      REDIS_MASTER_PORT_NUMBER=\"${REDIS_EXTERNAL_MASTER_PORT}\"\n    fi\n\n    cp /opt/bitnami/redis-sentinel/mounted-etc/sentinel.conf /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- if .Values.auth.enabled }}\n    printf \"\\nsentinel auth-pass %s %s\" \"{{ .Values.sentinel.masterSet }}\" \"$REDIS_PASSWORD\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- if and .Values.auth.enabled .Values.auth.sentinel }}\n    printf \"\\nrequirepass %s\" \"$REDIS_PASSWORD\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- end }}\n    {{- end }}\n    printf \"\\nsentinel myid %s\" \"$(host_id \"$HOSTNAME\")\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n\n    if [[ -z \"$REDIS_MASTER_HOST\" ]] || [[ -z \"$REDIS_MASTER_PORT_NUMBER\" ]]\n    then\n        # Prevent incorrect configuration to be written to sentinel.conf\n        error \"Redis master host is configured incorrectly (host: $REDIS_MASTER_HOST, port: $REDIS_MASTER_PORT_NUMBER)\"\n        exit 1\n    fi\n\n    sentinel_conf_set \"sentinel monitor\" \"{{ .Values.sentinel.masterSet }} \"$REDIS_MASTER_HOST\" \"$REDIS_MASTER_PORT_NUMBER\" {{ .Values.sentinel.quorum }}\"\n\n    add_known_sentinel() {\n        hostname=\"$1\"\n        ip=\"$2\"\n\n        if [[ -n \"$hostname\" && -n \"$ip\" && \"$hostname\" != \"$HOSTNAME\" ]]; then\n            sentinel_conf_add \"sentinel known-sentinel {{ .Values.sentinel.masterSet }} $(get_full_hostname \"$hostname\") $(get_port \"$hostname\" \"SENTINEL\") $(host_id \"$hostname\")\"\n        fi\n    }\n    add_known_replica() {\n        hostname=\"$1\"\n        ip=\"$2\"\n\n        if [[ -n \"$ip\" && \"$(get_full_hostname \"$hostname\")\" != \"$REDIS_MASTER_HOST\" ]]; then\n            sentinel_conf_add \"sentinel known-replica {{ .Values.sentinel.masterSet }} $(get_full_hostname \"$hostname\") $(get_port \"$hostname\" \"REDIS\")\"\n        fi\n    }\n\n    # Add available hosts on the network as known replicas & sentinels\n    for node in $(seq 0 $(({{ .Values.replica.replicaCount }}-1))); do\n        hostname=\"{{ template \"common.names.fullname\" . }}-node-$node\"\n        ip=\"$(getent hosts \"$hostname.$HEADLESS_SERVICE\" | awk '{ print $1 }')\"\n        add_known_sentinel \"$hostname\" \"$ip\"\n        add_known_replica \"$hostname\" \"$ip\"\n    done\n\n    echo \"\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- if not (contains \"sentinel announce-hostnames\" .Values.sentinel.configuration) }}\n    echo \"sentinel announce-hostnames yes\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- end }}\n    {{- if not (contains \"sentinel resolve-hostnames\" .Values.sentinel.configuration) }}\n    echo \"sentinel resolve-hostnames yes\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- end }}\n    {{- if not (contains \"sentinel announce-port\" .Values.sentinel.configuration) }}\n    echo \"sentinel announce-port $SERVPORT\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- end }}\n    {{- if not (contains \"sentinel announce-ip\" .Values.sentinel.configuration) }}\n    echo \"sentinel announce-ip $(get_full_hostname \"$HOSTNAME\")\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n    {{- end }}\n\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_SENTINEL_TLS_PORT_NUMBER}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_SENTINEL_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_SENTINEL_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_SENTINEL_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-replication\" \"yes\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_SENTINEL_TLS_AUTH_CLIENTS}\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_SENTINEL_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- end }}\n    {{- if .Values.sentinel.preExecCmds }}\n    {{ .Values.sentinel.preExecCmds | nindent 4 }}\n    {{- end }}\n    exec redis-server /opt/bitnami/redis-sentinel/etc/sentinel.conf {{- if .Values.tls.enabled }} \"${ARGS[@]}\" {{- end }} --sentinel\n  prestop-sentinel.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libvalidations.sh\n    . /opt/bitnami/scripts/libos.sh\n\n    HEADLESS_SERVICE=\"{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n    SENTINEL_SERVICE_ENV_NAME={{ printf \"%s%s\"  (upper (include \"common.names.fullname\" .)| replace \"-\" \"_\") \"_SERVICE_PORT_TCP_SENTINEL\" }}\n    SENTINEL_SERVICE_PORT=${!SENTINEL_SERVICE_ENV_NAME}\n\n    get_full_hostname() {\n        hostname=\"$1\"\n\n        {{- if .Values.useExternalDNS.enabled }}\n        echo \"${hostname}.{{- include \"redis.externalDNS.suffix\" . }}\"\n        {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n        echo \"${hostname}.{{- .Release.Namespace }}\"\n        {{- else }}\n        echo \"${hostname}.${HEADLESS_SERVICE}\"\n        {{- end }}\n    }\n    run_sentinel_command() {\n        if is_boolean_yes \"$REDIS_SENTINEL_TLS_ENABLED\"; then\n            redis-cli -h \"$REDIS_SERVICE\" -p \"$SENTINEL_SERVICE_PORT\" --tls --cert \"$REDIS_SENTINEL_TLS_CERT_FILE\" --key \"$REDIS_SENTINEL_TLS_KEY_FILE\" --cacert \"$REDIS_SENTINEL_TLS_CA_FILE\" sentinel \"$@\"\n        else\n            redis-cli -h \"$REDIS_SERVICE\" -p \"$SENTINEL_SERVICE_PORT\" sentinel \"$@\"\n        fi\n    }\n    failover_finished() {\n      REDIS_SENTINEL_INFO=($(run_sentinel_command get-master-addr-by-name \"{{ .Values.sentinel.masterSet }}\"))\n      REDIS_MASTER_HOST=\"${REDIS_SENTINEL_INFO[0]}\"\n      [[ \"$REDIS_MASTER_HOST\" != \"$(get_full_hostname $HOSTNAME)\" ]]\n    }\n\n    REDIS_SERVICE=\"{{ include \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n\n    {{ if .Values.auth.sentinel -}}\n    # redis-cli automatically consumes credentials from the REDISCLI_AUTH variable\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    [[ -f \"$REDIS_PASSWORD_FILE\" ]] && export REDISCLI_AUTH=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    {{- end }}\n\n    if ! failover_finished; then\n        echo \"I am the master pod and you are stopping me. Starting sentinel failover\"\n        # if I am the master, issue a command to failover once and then wait for the failover to finish\n        run_sentinel_command failover \"{{ .Values.sentinel.masterSet }}\"\n        if retry_while \"failover_finished\" \"{{ sub .Values.sentinel.terminationGracePeriodSeconds 10 }}\" 1; then\n            echo \"Master has been successfuly failed over to a different pod.\"\n            exit 0\n        else\n            echo \"Master failover failed\"\n            exit 1\n        fi\n    else\n        exit 0\n    fi\n  prestop-redis.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libvalidations.sh\n    . /opt/bitnami/scripts/libos.sh\n\n    run_redis_command() {\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            redis-cli -h 127.0.0.1 -p \"$REDIS_TLS_PORT\" --tls --cert \"$REDIS_TLS_CERT_FILE\" --key \"$REDIS_TLS_KEY_FILE\" --cacert \"$REDIS_TLS_CA_FILE\" \"$@\"\n        else\n            redis-cli -h 127.0.0.1 -p \"$REDIS_PORT\" \"$@\"\n        fi\n    }\n    failover_finished() {\n        REDIS_ROLE=$(run_redis_command role | head -1)\n        [[ \"$REDIS_ROLE\" != \"master\" ]]\n    }\n\n    # redis-cli automatically consumes credentials from the REDISCLI_AUTH variable\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    [[ -f \"$REDIS_PASSWORD_FILE\" ]] && export REDISCLI_AUTH=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n\n    if ! failover_finished; then\n        echo \"I am the master pod and you are stopping me.\"\n        # Running failover command\n        echo \"Running the FAILOVER command\"\n        run_redis_command FAILOVER TIMEOUT \"{{ mul (sub .Values.sentinel.terminationGracePeriodSeconds 10) 1000 }}\"\n        # Waiting for the failover to finish\n        echo \"Waiting for the failover to finish up to {{ sub .Values.sentinel.terminationGracePeriodSeconds 10 }}s\"\n        if retry_while \"failover_finished\" \"{{ sub .Values.sentinel.terminationGracePeriodSeconds 10 }}\" 1\n            echo \"Master has been successfuly failed over to a different pod.\"\n            exit 0\n        else\n            echo \"Master failover failed\"\n            exit 1\n        fi\n    else\n        exit 0\n    fi\n\n{{- else }}\n  start-master.sh: |\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    {{- if and .Values.master.containerSecurityContext.runAsUser (eq (.Values.master.containerSecurityContext.runAsUser | int) 0) }}\n    useradd redis\n    chown -R redis {{ .Values.master.persistence.path }}\n    {{- end }}\n    if [[ -f /opt/bitnami/redis/mounted-etc/master.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf\n    fi\n    if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf\n    fi\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_TLS_PORT}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_TLS_AUTH_CLIENTS}\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- else }}\n    ARGS=(\"--port\" \"${REDIS_PORT}\")\n    {{- end }}\n    {{- if .Values.auth.enabled }}\n    ARGS+=(\"--requirepass\" \"${REDIS_PASSWORD}\")\n    ARGS+=(\"--masterauth\" \"${REDIS_PASSWORD}\")\n    {{- else }}\n    ARGS+=(\"--protected-mode\" \"no\")\n    {{- end }}\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/redis.conf\")\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/master.conf\")\n    {{- if .Values.master.extraFlags }}\n    {{- range .Values.master.extraFlags }}\n    ARGS+=({{ . | quote }})\n    {{- end }}\n    {{- end }}\n    {{- if .Values.master.preExecCmds }}\n    {{ .Values.master.preExecCmds | nindent 4 }}\n    {{- end }}\n    {{- if .Values.master.command }}\n    exec {{ .Values.master.command }} \"${ARGS[@]}\"\n    {{- else }}\n    exec redis-server \"${ARGS[@]}\"\n    {{- end }}\n  {{- if eq .Values.architecture \"replication\" }}\n  start-replica.sh: |\n    #!/bin/bash\n\n    get_port() {\n        hostname=\"$1\"\n        type=\"$2\"\n\n        port_var=$(echo \"${hostname^^}_SERVICE_PORT_$type\" | sed \"s/-/_/g\")\n        port=${!port_var}\n\n        if [ -z \"$port\" ]; then\n            case $type in\n                \"SENTINEL\")\n                    echo {{ .Values.sentinel.containerPorts.sentinel }}\n                    ;;\n                \"REDIS\")\n                    echo {{ .Values.master.containerPorts.redis }}\n                    ;;\n            esac\n        else\n            echo $port\n        fi\n    }\n\n    get_full_hostname() {\n        hostname=\"$1\"\n\n        {{- if .Values.useExternalDNS.enabled }}\n        echo \"${hostname}.{{- include \"redis.externalDNS.suffix\" . }}\"\n        {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n        echo \"${hostname}.{{- .Release.Namespace }}\"\n        {{- else }}\n        echo \"${hostname}.${HEADLESS_SERVICE}\"\n        {{- end }}\n    }\n\n    REDISPORT=$(get_port \"$HOSTNAME\" \"REDIS\")\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n    {{- if and .Values.replica.containerSecurityContext.runAsUser (eq (.Values.replica.containerSecurityContext.runAsUser | int) 0) }}\n    useradd redis\n    chown -R redis {{ .Values.replica.persistence.path }}\n    {{- end }}\n    if [[ -f /opt/bitnami/redis/mounted-etc/replica.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf\n    fi\n    if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf\n    fi\n\n    echo \"\" >> /opt/bitnami/redis/etc/replica.conf\n    echo \"replica-announce-port $REDISPORT\" >> /opt/bitnami/redis/etc/replica.conf\n    echo \"replica-announce-ip $(get_full_hostname \"$HOSTNAME\")\" >> /opt/bitnami/redis/etc/replica.conf\n\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_TLS_PORT}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_TLS_AUTH_CLIENTS}\")\n    ARGS+=(\"--tls-replication\" \"yes\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- else }}\n    ARGS=(\"--port\" \"${REDIS_PORT}\")\n    {{- end }}\n    ARGS+=(\"--replicaof\" \"${REDIS_MASTER_HOST}\" \"${REDIS_MASTER_PORT_NUMBER}\")\n    {{- if .Values.auth.enabled }}\n    ARGS+=(\"--requirepass\" \"${REDIS_PASSWORD}\")\n    ARGS+=(\"--masterauth\" \"${REDIS_MASTER_PASSWORD}\")\n    {{- else }}\n    ARGS+=(\"--protected-mode\" \"no\")\n    {{- end }}\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/redis.conf\")\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/replica.conf\")\n    {{- if .Values.replica.extraFlags }}\n    {{- range .Values.replica.extraFlags }}\n    ARGS+=({{ . | quote }})\n    {{- end }}\n    {{- end }}\n    {{- if .Values.replica.preExecCmds }}\n    {{ .Values.replica.preExecCmds | nindent 4 }}\n    {{- end }}\n    {{- if .Values.replica.command }}\n    exec {{ .Values.replica.command }} \"${ARGS[@]}\"\n    {{- else }}\n    exec redis-server \"${ARGS[@]}\"\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/secret.yaml",
    "content": "{{- if and .Values.auth.enabled (not .Values.auth.existingSecret) -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.secretAnnotations .Values.commonAnnotations }}\n  annotations:\n      {{- if .Values.secretAnnotations }}\n      {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.secretAnnotations \"context\" $ ) | nindent 4 }}\n      {{- end }}\n      {{- if .Values.commonAnnotations }}\n      {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n      {{- end }}\n  {{- end }}\ntype: Opaque\ndata:\n  redis-password: {{ include \"redis.password\" . | b64enc | quote }}\n{{- end -}}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/sentinel/hpa.yaml",
    "content": "{{- if and .Values.replica.autoscaling.enabled .Values.sentinel.enabled }}\napiVersion: {{ include \"common.capabilities.hpa.apiVersion\" ( dict \"context\" $ ) }}\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ printf \"%s-node\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  scaleTargetRef:\n    apiVersion: {{ include \"common.capabilities.deployment.apiVersion\" . }}\n    kind: StatefulSet\n    name: {{ printf \"%s-node\" (include \"common.names.fullname\" .) }}\n  minReplicas: {{ .Values.replica.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.replica.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.replica.autoscaling.targetMemory }}\n    - type: Resource\n      resource:\n        name: memory\n        {{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .) }}\n        targetAverageUtilization: {{ .Values.replica.autoscaling.targetMemory }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.replica.autoscaling.targetMemory }}\n        {{- end }}\n    {{- end }}\n    {{- if .Values.replica.autoscaling.targetCPU }}\n    - type: Resource\n      resource:\n        name: cpu\n        {{- if semverCompare \"<1.23-0\" (include \"common.capabilities.kubeVersion\" .) }}\n        targetAverageUtilization: {{ .Values.replica.autoscaling.targetCPU }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.replica.autoscaling.targetCPU }}\n        {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/sentinel/node-services.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled (eq .Values.sentinel.service.type \"NodePort\") (or .Release.IsUpgrade .Values.sentinel.service.nodePorts.redis ) }}\n\n{{- range $i := until (int .Values.replica.replicaCount) }}\n\n{{ $portsmap := (lookup \"v1\" \"ConfigMap\" $.Release.Namespace (printf \"%s-%s\" ( include \"common.names.fullname\" $ ) \"ports-configmap\")).data }}\n\n{{ $sentinelport := 0}}\n{{ $redisport := 0}}\n{{- if $portsmap }}\n{{ $sentinelport = index $portsmap (printf \"%s-node-%s-%s\" (include \"common.names.fullname\" $) (toString $i) \"sentinel\") }}\n{{ $redisport = index $portsmap (printf \"%s-node-%s-%s\" (include \"common.names.fullname\" $) (toString $i) \"redis\") }}\n{{- else }}\n{{- end }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"common.names.fullname\" $ }}-node-{{ $i }}\n  namespace: {{ $.Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" $ | nindent 4 }}\n    app.kubernetes.io/component: node\n    {{- if $.Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $.Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or $.Values.sentinel.service.annotations $.Values.commonAnnotations }}\n  annotations:\n    {{- if $.Values.sentinel.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $.Values.sentinel.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if $.Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" $.Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: NodePort\n  ports:\n  - name: sentinel\n    {{- if $.Values.sentinel.service.nodePorts.sentinel  }}\n    nodePort: {{ (add $.Values.sentinel.service.nodePorts.sentinel $i 1) }}\n    port: {{ (add $.Values.sentinel.service.nodePorts.sentinel $i 1) }}\n    {{- else }}\n    nodePort: {{ $sentinelport }}\n    port: {{ $sentinelport }}\n    {{- end }}\n    protocol: TCP\n    targetPort: {{ $.Values.sentinel.containerPorts.sentinel }}\n  - name: redis\n    {{- if $.Values.sentinel.service.nodePorts.redis }}\n    nodePort: {{ (add $.Values.sentinel.service.nodePorts.redis $i 1) }}\n    port: {{ (add $.Values.sentinel.service.nodePorts.redis $i 1) }}\n    {{- else }}\n    nodePort: {{ $redisport }}\n    port: {{ $redisport }}\n    {{- end }}\n    protocol: TCP\n    targetPort: {{ $.Values.replica.containerPorts.redis }}\n  - name: sentinel-internal\n    nodePort: null\n    port: {{ $.Values.sentinel.containerPorts.sentinel }}\n    protocol: TCP\n    targetPort: {{ $.Values.sentinel.containerPorts.sentinel }}\n  - name: redis-internal\n    nodePort: null\n    port: {{ $.Values.replica.containerPorts.redis }}\n    protocol: TCP\n    targetPort: {{ $.Values.replica.containerPorts.redis }}\n  selector:\n    statefulset.kubernetes.io/pod-name: {{ template \"common.names.fullname\" $ }}-node-{{ $i }}\n---\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/sentinel/ports-configmap.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled (eq .Values.sentinel.service.type \"NodePort\") (not .Values.sentinel.service.nodePorts.redis ) }}\n{{- /* create a list to keep track of ports we choose to use */}}\n{{ $chosenports := (list ) }}\n\n{{- /* Get list of all used nodeports */}}\n{{ $usedports := (list ) }}\n{{- range $index, $service := (lookup \"v1\" \"Service\" \"\" \"\").items }}\n  {{- range.spec.ports }}\n    {{- if .nodePort }}\n      {{- $usedports = (append $usedports .nodePort) }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n\n{{- /*\ncomments that start with # are rendered in the output when you debug, so you can less and search for them\nVars in the comment will be rendered out, so you can check their value this way.\nhttps://helm.sh/docs/chart_best_practices/templates/#comments-yaml-comments-vs-template-comments\n\nremove the template comments and leave the yaml comments to help debug\n*/}}\n\n{{- /* Sort the list */}}\n{{ $usedports = $usedports | sortAlpha }}\n#usedports {{ $usedports }}\n\n{{- /* How many nodeports per service do we want to create, except for the main service which is always two */}}\n{{ $numberofPortsPerNodeService := 2 }}\n\n{{- /* for every nodeport we want, loop though the used ports to get an unused port */}}\n{{- range $j := until (int (add (mul (int .Values.replica.replicaCount) $numberofPortsPerNodeService) 2)) }}\n  {{- /* #j={{ $j }} */}}\n  {{- $nodeport := (add $j 30000) }}\n  {{- $nodeportfound := false }}\n  {{- range $i := $usedports }}\n    {{- /* #i={{ $i }}\n    #nodeport={{ $nodeport }}\n    #usedports={{ $usedports }} */}}\n    {{- if and (has (toString $nodeport) $usedports) (eq $nodeportfound false) }}\n      {{- /* nodeport conflicts with in use */}}\n      {{- $nodeport = (add $nodeport 1) }}\n    {{- else if and ( has $nodeport $chosenports) (eq $nodeportfound false) }}\n      {{- /* nodeport already chosen, try another */}}\n      {{- $nodeport = (add $nodeport 1) }}\n    {{- else if (eq $nodeportfound false) }}\n      {{- /* nodeport free to use: not already claimed and not in use */}}\n      {{- /* select nodeport, and place into usedports */}}\n      {{- $chosenports = (append $chosenports $nodeport) }}\n      {{- $nodeportfound = true }}\n    {{- else }}\n      {{- /* nodeport has already been chosen and locked in, just work through the rest of the list to get to the next nodeport selection */}}\n    {{- end }}\n  {{- end }}\n  {{- if (eq $nodeportfound false) }}\n    {{- $chosenports = (append $chosenports $nodeport) }}\n  {{- end }}\n\n{{- end }}\n\n{{- /* print the usedports and chosenports for debugging */}}\n#usedports {{ $usedports }}\n#chosenports {{ $chosenports }}}}\n\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}-ports-configmap\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations:\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n{{ $portsmap := (lookup \"v1\" \"ConfigMap\" $.Release.Namespace (printf \"%s-%s\" ( include \"common.names.fullname\" . ) \"ports-configmap\")).data }}\n{{- if $portsmap }}\n{{- /* configmap already exists, do not install again */ -}}\n  {{- range $name, $value := $portsmap }}\n  \"{{ $name }}\": \"{{ $value }}\"\n  {{- end }}\n{{- else }}\n{{- /* configmap being set for first time */ -}}\n  {{- range $index, $port := $chosenports }}\n  {{- $nodenumber := (floor (div $index 2)) }}\n  {{- if (eq $index 0) }}\n  \"{{ template \"common.names.fullname\" $ }}-sentinel\": \"{{ $port }}\"\n  {{- else if (eq $index 1) }}\n  \"{{ template \"common.names.fullname\" $ }}-redis\": \"{{ $port }}\"\n  {{- else if (eq (mod $index 2) 0) }}\n  \"{{ template \"common.names.fullname\" $ }}-node-{{ (sub $nodenumber 1) }}-sentinel\": \"{{ $port }}\"\n  {{- else if (eq (mod $index 2) 1) }}\n  \"{{ template \"common.names.fullname\" $ }}-node-{{ (sub $nodenumber 1) }}-redis\": \"{{ $port }}\"\n  {{- end }}\n  {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/sentinel/service.yaml",
    "content": "{{- if or .Release.IsUpgrade (ne .Values.sentinel.service.type \"NodePort\") .Values.sentinel.service.nodePorts.redis -}}\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\n{{ $portsmap := (lookup \"v1\" \"ConfigMap\" $.Release.Namespace (printf \"%s-%s\" ( include \"common.names.fullname\" . ) \"ports-configmap\")).data }}\n\n{{ $sentinelport := 0}}\n{{ $redisport := 0}}\n{{- if $portsmap }}\n{{ $sentinelport = index $portsmap (printf \"%s-%s\" (include \"common.names.fullname\" $) \"sentinel\") }}\n{{ $redisport = index $portsmap (printf \"%s-%s\" (include \"common.names.fullname\" $) \"redis\") }}\n{{- else }}\n{{- end }}\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: node\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.sentinel.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.sentinel.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.sentinel.service.type }}\n  {{- if or (eq .Values.sentinel.service.type \"LoadBalancer\") (eq .Values.sentinel.service.type \"NodePort\") }}\n  externalTrafficPolicy: {{ .Values.sentinel.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{- if and (eq .Values.sentinel.service.type \"LoadBalancer\") (not (empty .Values.sentinel.service.loadBalancerIP)) }}\n  loadBalancerIP: {{ .Values.sentinel.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.sentinel.service.type \"LoadBalancer\") (not (empty .Values.sentinel.service.loadBalancerSourceRanges)) }}\n  loadBalancerSourceRanges: {{ .Values.sentinel.service.loadBalancerSourceRanges }}\n  {{- end }}\n  {{- if and .Values.sentinel.service.clusterIP (eq .Values.sentinel.service.type \"ClusterIP\") }}\n  clusterIP: {{ .Values.sentinel.service.clusterIP }}\n  {{- end }}\n  {{- if .Values.sentinel.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.sentinel.service.sessionAffinity }}\n  {{- end }}\n  {{- if .Values.sentinel.service.sessionAffinityConfig }}\n  sessionAffinityConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.service.sessionAffinityConfig \"context\" $) | nindent 4 }}\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      {{- if and (or (eq .Values.sentinel.service.type \"NodePort\") (eq .Values.sentinel.service.type \"LoadBalancer\")) .Values.sentinel.service.nodePorts.redis }}\n      port: {{ .Values.sentinel.service.nodePorts.redis }}\n      {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n      port: {{ $redisport }}\n      {{- else}}\n      port: {{ .Values.sentinel.service.ports.redis }}\n      {{- end }}\n      targetPort: {{ .Values.replica.containerPorts.redis }}\n      {{- if and (or (eq .Values.sentinel.service.type \"NodePort\") (eq .Values.sentinel.service.type \"LoadBalancer\")) .Values.sentinel.service.nodePorts.redis }}\n      nodePort: {{ .Values.sentinel.service.nodePorts.redis }}\n      {{- else if eq .Values.sentinel.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n      nodePort:  {{ $redisport }}\n      {{- end }}\n    - name: tcp-sentinel\n      {{- if and (or (eq .Values.sentinel.service.type \"NodePort\") (eq .Values.sentinel.service.type \"LoadBalancer\")) .Values.sentinel.service.nodePorts.sentinel }}\n      port: {{ .Values.sentinel.service.nodePorts.sentinel }}\n      {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n      port:  {{ $sentinelport }}\n      {{- else }}\n      port: {{ .Values.sentinel.service.ports.sentinel }}\n      {{- end }}\n      targetPort: {{ .Values.sentinel.containerPorts.sentinel }}\n      {{- if and (or (eq .Values.sentinel.service.type \"NodePort\") (eq .Values.sentinel.service.type \"LoadBalancer\")) .Values.sentinel.service.nodePorts.sentinel }}\n      nodePort: {{ .Values.sentinel.service.nodePorts.sentinel }}\n      {{- else if eq .Values.sentinel.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- else if eq .Values.sentinel.service.type \"NodePort\" }}\n      nodePort:  {{ $sentinelport }}\n      {{- end }}\n    {{- if eq .Values.sentinel.service.type \"NodePort\" }}\n    - name: sentinel-internal\n      nodePort: null\n      port: {{ .Values.sentinel.containerPorts.sentinel }}\n      protocol: TCP\n      targetPort: {{ .Values.sentinel.containerPorts.sentinel }}\n    - name: redis-internal\n      nodePort: null\n      port: {{ .Values.replica.containerPorts.redis }}\n      protocol: TCP\n      targetPort: {{ .Values.replica.containerPorts.redis }}\n    {{- end }}\n    {{- if .Values.sentinel.service.extraPorts }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.service.extraPorts \"context\" $) | nindent 4 }}\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: node\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/sentinel/statefulset.yaml",
    "content": "{{- if or .Release.IsUpgrade (ne .Values.sentinel.service.type \"NodePort\")  .Values.sentinel.service.nodePorts.redis -}}\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-node\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: node\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.replica.replicaCount }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: node\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  {{- if .Values.replica.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.replica.updateStrategy | nindent 4 }}\n  {{- end }}\n  {{- if and .Values.replica.minReadySeconds (semverCompare \">= 1.25\" (include \"common.capabilities.kubeVersion\" .)) }}\n  minReadySeconds: {{ .Values.replica.minReadySeconds }}\n  {{- end }}\n  {{- if .Values.replica.podManagementPolicy }}\n  podManagementPolicy: {{ .Values.replica.podManagementPolicy | quote }}\n  {{- end }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: node\n        {{- if .Values.replica.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if (include \"redis.createConfigmap\" .) }}\n        checksum/configmap: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        checksum/health: {{ include (print $.Template.BasePath \"/health-configmap.yaml\") . | sha256sum }}\n        checksum/scripts: {{ include (print $.Template.BasePath \"/scripts-configmap.yaml\") . | sha256sum }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.replica.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"redis.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.replica.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.replica.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ template \"redis.serviceAccountName\" . }}\n      {{- if .Values.replica.priorityClassName }}\n      priorityClassName: {{ .Values.replica.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.replica.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAffinityPreset \"component\" \"node\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAntiAffinityPreset \"component\" \"node\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.replica.nodeAffinityPreset.type \"key\" .Values.replica.nodeAffinityPreset.key \"values\" .Values.replica.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.replica.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.topologySpreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.topologySpreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.shareProcessNamespace }}\n      shareProcessNamespace: {{ .Values.replica.shareProcessNamespace }}\n      {{- end }}\n      {{- if .Values.replica.schedulerName }}\n      schedulerName: {{ .Values.replica.schedulerName | quote }}\n      {{- end }}\n      {{- if .Values.replica.dnsPolicy }}\n      dnsPolicy: {{ .Values.replica.dnsPolicy }}\n      {{- end }}\n      {{- if .Values.replica.dnsConfig }}\n      dnsConfig: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.dnsConfig \"context\" $) | nindent 8 }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.sentinel.terminationGracePeriodSeconds }}\n      containers:\n        - name: redis\n          image: {{ template \"redis.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- else }}\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /bin/bash\n                  - -c\n                  - /opt/bitnami/scripts/start-scripts/prestop-redis.sh\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.replica.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-node.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: REDIS_MASTER_PORT_NUMBER\n              value: {{ .Values.replica.containerPorts.redis | quote }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            - name: REDIS_MASTER_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            - name: REDIS_MASTER_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            - name: REDIS_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_TLS_PORT\n              value: {{ .Values.replica.containerPorts.redis | quote }}\n            - name:  REDIS_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_PORT\n              value: {{ .Values.replica.containerPorts.redis | quote }}\n            {{- end }}\n            - name: REDIS_DATA_DIR\n              value: {{ .Values.replica.persistence.path }}\n            {{- if .Values.replica.externalMaster.enabled }}\n            - name:  REDIS_EXTERNAL_MASTER_HOST\n              value: {{ .Values.replica.externalMaster.host | quote }}\n            - name:  REDIS_EXTERNAL_MASTER_PORT\n              value: {{ .Values.replica.externalMaster.port | quote }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraEnvVars \"context\" $ ) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.replica.extraEnvVarsCM .Values.replica.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.replica.extraEnvVarsCM }}\n            - configMapRef:\n              name: {{ .Values.replica.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.replica.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis\n              containerPort: {{ .Values.replica.containerPorts.redis }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.replica.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local.sh {{ .Values.replica.livenessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- if .Values.replica.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.replica.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.replica.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.livenessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local.sh {{ .Values.replica.livenessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- if .Values.replica.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.replica.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.replica.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_readiness_local.sh {{ .Values.replica.readinessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.resources }}\n          resources: {{- toYaml .Values.replica.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.sentinel.persistence.enabled }}\n            - name: sentinel-data\n              mountPath: /opt/bitnami/redis-sentinel/etc\n            {{- end }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              {{- if .Values.replica.persistence.subPath }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n              {{- else if .Values.replica.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.replica.persistence.subPathExpr }}\n              {{- end }}\n            - name: config\n              mountPath: /opt/bitnami/redis/mounted-etc\n            - name: redis-tmp-conf\n              mountPath: /opt/bitnami/redis/etc\n            - name: tmp\n              mountPath: /tmp\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.replica.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        - name: sentinel\n          image: {{ template \"redis.sentinel.image\" . }}\n          imagePullPolicy: {{ .Values.sentinel.image.pullPolicy | quote }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.sentinel.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- else }}\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /bin/bash\n                  - -c\n                  - /opt/bitnami/scripts/start-scripts/prestop-sentinel.sh\n          {{- end }}\n          {{- end }}\n          {{- if .Values.sentinel.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.sentinel.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-sentinel.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.sentinel.image.debug .Values.diagnosticMode.enabled) | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- else }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: \"yes\"\n            {{- end }}\n            - name: REDIS_SENTINEL_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_SENTINEL_TLS_PORT_NUMBER\n              value: {{ .Values.sentinel.containerPorts.sentinel | quote }}\n            - name:  REDIS_SENTINEL_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_SENTINEL_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_SENTINEL_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_SENTINEL_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_SENTINEL_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_SENTINEL_PORT\n              value: {{ .Values.sentinel.containerPorts.sentinel | quote }}\n            {{- end }}\n            {{- if .Values.sentinel.externalMaster.enabled }}\n            - name:  REDIS_EXTERNAL_MASTER_HOST\n              value: {{ .Values.sentinel.externalMaster.host | quote }}\n            - name:  REDIS_EXTERNAL_MASTER_PORT\n              value: {{ .Values.sentinel.externalMaster.port | quote }}\n            {{- end }}\n            {{- if .Values.sentinel.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.extraEnvVars \"context\" $ ) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.sentinel.extraEnvVarsCM .Values.sentinel.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.sentinel.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ .Values.sentinel.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.sentinel.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.sentinel.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis-sentinel\n              containerPort: {{ .Values.sentinel.containerPorts.sentinel }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.sentinel.customStartupProbe }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.customStartupProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.startupProbe.enabled }}\n          startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.sentinel.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_sentinel.sh {{ .Values.sentinel.livenessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- if .Values.sentinel.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.sentinel.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.sentinel.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.sentinel.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.sentinel.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.sentinel.livenessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_sentinel.sh {{ .Values.sentinel.livenessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.sentinel.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.sentinel.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.sentinel.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.sentinel.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.sentinel.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.sentinel.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_sentinel.sh {{ .Values.sentinel.readinessProbe.timeoutSeconds }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.sentinel.resources }}\n          resources: {{- toYaml .Values.sentinel.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            - name: sentinel-data\n              mountPath: /opt/bitnami/redis-sentinel/etc\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              {{- if .Values.replica.persistence.subPath }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n              {{- else if .Values.replica.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.replica.persistence.subPathExpr }}\n              {{- end }}\n            - name: config\n              mountPath: /opt/bitnami/redis-sentinel/mounted-etc\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.sentinel.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ template \"redis.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.metrics.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.metrics.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -c\n            - |\n              if [[ -f '/secrets/redis-password' ]]; then\n                  export REDIS_PASSWORD=$(cat /secrets/redis-password)\n              fi\n              redis_exporter{{- range $key, $value := .Values.metrics.extraArgs }} --{{ $key }}={{ $value }}{{- end }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: REDIS_ALIAS\n              value: {{ template \"common.names.fullname\" . }}\n            {{- if .Values.auth.enabled }}\n            - name: REDIS_USER\n              value: default\n            {{- if (not .Values.auth.usePasswordFiles) }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_ADDR\n              value: rediss://{{ .Values.metrics.redisTargetHost }}:{{ .Values.replica.containerPorts.redis }}\n            {{- if .Values.tls.authClients }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            {{- end }}\n            - name: REDIS_EXPORTER_TLS_CA_CERT_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- end }}\n            {{- if .Values.metrics.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9121\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /secrets/\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.metrics.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- end }}\n        {{- if .Values.replica.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- $needsVolumePermissions := and .Values.volumePermissions.enabled .Values.replica.persistence.enabled .Values.replica.podSecurityContext.enabled .Values.replica.containerSecurityContext.enabled }}\n      {{- if or .Values.replica.initContainers $needsVolumePermissions .Values.sysctl.enabled }}\n      initContainers:\n        {{- if .Values.replica.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if $needsVolumePermissions }}\n        - name: volume-permissions\n          image: {{ include \"redis.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown -R `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.replica.persistence.path }}\n              {{- else }}\n              chown -R {{ .Values.replica.containerSecurityContext.runAsUser }}:{{ .Values.replica.podSecurityContext.fsGroup }} {{ .Values.replica.persistence.path }}\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              {{- if .Values.replica.persistence.subPath }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n              {{- else if .Values.replica.persistence.subPathExpr }}\n              subPathExpr: {{ .Values.replica.persistence.subPathExpr }}\n              {{- end }}\n        {{- end }}\n        {{- if .Values.sysctl.enabled }}\n        - name: init-sysctl\n          image: {{ include \"redis.sysctl.image\" . }}\n          imagePullPolicy: {{ default \"\" .Values.sysctl.image.pullPolicy | quote }}\n          securityContext:\n            privileged: true\n            runAsUser: 0\n          {{- if .Values.sysctl.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sysctl.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.resources }}\n          resources: {{- toYaml .Values.sysctl.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.mountHostSys }}\n          volumeMounts:\n            - name: host-sys\n              mountPath: /host-sys\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      volumes:\n        - name: start-scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        - name: health\n          configMap:\n            name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.auth.usePasswordFiles }}\n        - name: redis-password\n          secret:\n            secretName: {{ template \"redis.secretName\" . }}\n            items:\n            - key: {{ template \"redis.secretPasswordKey\" . }}\n              path: redis-password\n        {{- end }}\n        - name: config\n          configMap:\n            name: {{ include \"redis.configmapName\" . }}\n        {{- if .Values.sysctl.mountHostSys }}\n        - name: host-sys\n          hostPath:\n            path: /sys\n        {{- end }}\n        {{- if not .Values.sentinel.persistence.enabled }}\n        - name: sentinel-data\n          {{- if .Values.sentinel.persistence.medium }}\n          emptyDir: {\n            medium: {{ .Values.sentinel.persistence.medium | quote }}\n          }\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        {{- end }}\n        - name: redis-tmp-conf\n          {{- if .Values.replica.persistence.medium }}\n          emptyDir: {\n            medium: {{ .Values.replica.persistence.medium | quote }}\n          }\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        - name: tmp\n          {{- if .Values.replica.persistence.medium }}\n          emptyDir: {\n            medium: {{ .Values.replica.persistence.medium | quote }}\n          }\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        {{- if .Values.replica.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.metrics.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.sentinel.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: redis-certificates\n          secret:\n            secretName: {{ include \"redis.tlsSecretName\" . }}\n            defaultMode: 256\n        {{- end }}\n  {{- if not .Values.replica.persistence.enabled }}\n        - name: redis-data\n          {{- if .Values.replica.persistence.medium }}\n          emptyDir: {\n            medium: {{ .Values.replica.persistence.medium | quote }}\n          }\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n  {{- else if .Values.replica.persistence.existingClaim }}\n        - name: redis-data\n          persistentVolumeClaim:\n            claimName: {{ printf \"%s\" (tpl .Values.replica.persistence.existingClaim .) }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: redis-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: node\n        {{- if .Values.replica.persistence.annotations }}\n        annotations: {{- toYaml .Values.replica.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.replica.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.replica.persistence.size | quote }}\n        {{- if .Values.replica.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.replica.persistence \"global\" .Values.global) | nindent 8 }}\n    {{- if .Values.sentinel.persistence.enabled }}\n    - metadata:\n        name: sentinel-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: node\n        {{- if .Values.sentinel.persistence.annotations }}\n        annotations: {{- toYaml .Values.sentinel.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.sentinel.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.sentinel.persistence.size | quote }}\n        {{- if .Values.sentinel.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- if .Values.sentinel.persistence.dataSource }}\n        dataSource: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.persistence.dataSource \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.sentinel.persistence \"global\" .Values.global) | nindent 8 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/serviceaccount.yaml",
    "content": "{{- if and .Values.serviceAccount.create (and (not .Values.master.serviceAccount.create) (not .Values.replica.serviceAccount.create)) }}\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}\nmetadata:\n  name: {{ template \"redis.serviceAccountName\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations .Values.serviceAccount.annotations }}\n  annotations:\n    {{- if or .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.serviceAccount.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.serviceAccount.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n{{- end }}"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/servicemonitor.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.serviceMonitor.additionalLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.additionalLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  endpoints:\n    - port: http-metrics\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.honorLabels }}\n      honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.relabellings }}\n      relabelings: {{- toYaml .Values.metrics.serviceMonitor.relabellings | nindent 6 }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.metricRelabelings }}\n      metricRelabelings: {{- toYaml .Values.metrics.serviceMonitor.metricRelabelings | nindent 6 }}\n      {{- end }}\n  {{- if .Values.metrics.serviceMonitor.podTargetLabels }}\n  podTargetLabels: {{- toYaml .Values.metrics.serviceMonitor.podTargetLabels | nindent 4 }}\n  {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ .Release.Namespace }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: metrics\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/templates/tls-secret.yaml",
    "content": "{{- if (include \"redis.createTlsSecret\" .) }}\n{{- $secretName := printf \"%s-crt\" (include \"common.names.fullname\" .) }}\n{{- $existingCerts := (lookup \"v1\" \"Secret\" .Release.Namespace $secretName).data | default dict }}\n{{- $ca := genCA \"redis-ca\" 365 }}\n{{- $releaseNamespace := .Release.Namespace }}\n{{- $clusterDomain := .Values.clusterDomain }}\n{{- $fullname := include \"common.names.fullname\" . }}\n{{- $serviceName := include \"common.names.fullname\" . }}\n{{- $headlessServiceName := printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n{{- $masterServiceName := printf \"%s-master\" (include \"common.names.fullname\" .) }}\n{{- $altNames := list (printf \"*.%s.%s.svc.%s\" $serviceName $releaseNamespace $clusterDomain) (printf \"%s.%s.svc.%s\" $masterServiceName $releaseNamespace $clusterDomain) (printf \"*.%s.%s.svc.%s\" $masterServiceName $releaseNamespace $clusterDomain) (printf \"*.%s.%s.svc.%s\" $headlessServiceName $releaseNamespace $clusterDomain) (printf \"%s.%s.svc.%s\" $headlessServiceName $releaseNamespace $clusterDomain) \"127.0.0.1\" \"localhost\" $fullname }}\n{{- $crt := genSignedCert $fullname nil $altNames 365 $ca }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ $secretName }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: kubernetes.io/tls\ndata:\n  ca.crt: {{ (get $existingCerts \"ca.crt\") | default ($ca.Cert | b64enc | quote ) }}\n  tls.crt: {{ (get $existingCerts \"tls.crt\") | default ($crt.Cert | b64enc | quote) }}\n  tls.key: {{ (get $existingCerts \"tls.key\") | default ($crt.Key | b64enc | quote) }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/values.schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"architecture\": {\n      \"type\": \"string\",\n      \"title\": \"Redis architecture\",\n      \"form\": true,\n      \"description\": \"Allowed values: `standalone` or `replication`\",\n      \"enum\": [\"standalone\", \"replication\"]\n    },\n    \"auth\": {\n      \"type\": \"object\",\n      \"title\": \"Authentication configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Use password authentication\"\n        },\n        \"password\": {\n          \"type\": \"string\",\n          \"title\": \"Redis password\",\n          \"form\": true,\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\",\n          \"hidden\": {\n            \"value\": false,\n            \"path\": \"auth/enabled\"\n          }\n        }\n      }\n    },\n    \"master\": {\n      \"type\": \"object\",\n      \"title\": \"Master replicas settings\",\n      \"form\": true,\n      \"properties\": {\n        \"kind\": {\n          \"type\": \"string\",\n          \"title\": \"Workload Kind\",\n          \"form\": true,\n          \"description\": \"Allowed values: `Deployment` or `StatefulSet`\",\n          \"enum\": [\"Deployment\", \"StatefulSet\"]\n        },\n        \"persistence\": {\n          \"type\": \"object\",\n          \"title\": \"Persistence for master replicas\",\n          \"form\": true,\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"form\": true,\n              \"title\": \"Enable persistence\",\n              \"description\": \"Enable persistence using Persistent Volume Claims\"\n            },\n            \"size\": {\n              \"type\": \"string\",\n              \"title\": \"Persistent Volume Size\",\n              \"form\": true,\n              \"render\": \"slider\",\n              \"sliderMin\": 1,\n              \"sliderMax\": 100,\n              \"sliderUnit\": \"Gi\",\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"master/persistence/enabled\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"replica\": {\n      \"type\": \"object\",\n      \"title\": \"Redis replicas settings\",\n      \"form\": true,\n      \"hidden\": {\n        \"value\": \"standalone\",\n        \"path\": \"architecture\"\n      },\n      \"properties\": {\n        \"replicaCount\": {\n          \"type\": \"integer\",\n          \"form\": true,\n          \"title\": \"Number of Redis replicas\"\n        },\n        \"persistence\": {\n          \"type\": \"object\",\n          \"title\": \"Persistence for Redis replicas\",\n          \"form\": true,\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"form\": true,\n              \"title\": \"Enable persistence\",\n              \"description\": \"Enable persistence using Persistent Volume Claims\"\n            },\n            \"size\": {\n              \"type\": \"string\",\n              \"title\": \"Persistent Volume Size\",\n              \"form\": true,\n              \"render\": \"slider\",\n              \"sliderMin\": 1,\n              \"sliderMax\": 100,\n              \"sliderUnit\": \"Gi\",\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"replica/persistence/enabled\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"volumePermissions\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Enable Init Containers\",\n          \"description\": \"Use an init container to set required folder permissions on the data volume before mounting it in the final destination\"\n        }\n      }\n    },\n    \"metrics\": {\n      \"type\": \"object\",\n      \"form\": true,\n      \"title\": \"Prometheus metrics details\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"title\": \"Create Prometheus metrics exporter\",\n          \"description\": \"Create a side-car container to expose Prometheus metrics\",\n          \"form\": true\n        },\n        \"serviceMonitor\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"title\": \"Create Prometheus Operator ServiceMonitor\",\n              \"description\": \"Create a ServiceMonitor to track metrics using Prometheus Operator\",\n              \"form\": true,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"metrics/enabled\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/redis/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n##\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n## @param global.redis.password Global Redis&reg; password (overrides `auth.password`)\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n  redis:\n    password: \"REDIS_SERVER_PASSWORD\"\n\n## @section Common parameters\n##\n\n## @param kubeVersion Override Kubernetes version\n##\nkubeVersion: \"\"\n## @param nameOverride String to partially override common.names.fullname\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override common.names.fullname\n##\nfullnameOverride: \"\"\n## @param commonLabels Labels to add to all deployed objects\n##\ncommonLabels: {}\n## @param commonAnnotations Annotations to add to all deployed objects\n##\ncommonAnnotations: {}\n## @param secretAnnotations Annotations to add to secret\n##\nsecretAnnotations: {}\n## @param clusterDomain Kubernetes cluster domain name\n##\nclusterDomain: cluster.local\n## @param extraDeploy Array of extra objects to deploy with the release\n##\nextraDeploy: []\n\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section Redis&reg; Image parameters\n##\n\n## Bitnami Redis&reg; image\n## ref: https://hub.docker.com/r/bitnami/redis/tags/\n## @param image.registry Redis&reg; image registry\n## @param image.repository Redis&reg; image repository\n## @param image.tag Redis&reg; image tag (immutable tags are recommended)\n## @param image.digest Redis&reg; image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n## @param image.pullPolicy Redis&reg; image pull policy\n## @param image.pullSecrets Redis&reg; image pull secrets\n## @param image.debug Enable image debug mode\n##\nimage:\n  registry: registry.cn-beijing.aliyuncs.com\n  repository: opsany/redis\n  tag: 7.0.5-debian-11-r15\n  digest: \"\"\n  ## Specify a imagePullPolicy\n  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## e.g:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n  ## Enable debug mode\n  ##\n  debug: false\n\n## @section Redis&reg; common configuration parameters\n## https://github.com/bitnami/containers/tree/main/bitnami/redis#configuration\n##\n\n## @param architecture Redis&reg; architecture. Allowed values: `standalone` or `replication`\n##\narchitecture: standalone\n## Redis&reg; Authentication parameters\n## ref: https://github.com/bitnami/containers/tree/main/bitnami/redis#setting-the-server-password-on-first-run\n##\nauth:\n  ## @param auth.enabled Enable password authentication\n  ##\n  enabled: true\n  ## @param auth.sentinel Enable password authentication on sentinels too\n  ##\n  sentinel: true\n  ## @param auth.password Redis&reg; password\n  ## Defaults to a random 10-character alphanumeric string if not set\n  ##\n  password: \"\"\n  ## @param auth.existingSecret The name of an existing secret with Redis&reg; credentials\n  ## NOTE: When it's set, the previous `auth.password` parameter is ignored\n  ##\n  existingSecret: \"\"\n  ## @param auth.existingSecretPasswordKey Password key to be retrieved from existing secret\n  ## NOTE: ignored unless `auth.existingSecret` parameter is set\n  ##\n  existingSecretPasswordKey: \"\"\n  ## @param auth.usePasswordFiles Mount credentials as files instead of using an environment variable\n  ##\n  usePasswordFiles: false\n\n## @param commonConfiguration [string] Common configuration to be added into the ConfigMap\n## ref: https://redis.io/topics/config\n##\ncommonConfiguration: |-\n  # Enable AOF https://redis.io/topics/persistence#append-only-file\n  appendonly yes\n  # Disable RDB persistence, AOF persistence already enabled.\n  save \"\"\n  databases 64\n## @param existingConfigmap The name of an existing ConfigMap with your custom configuration for Redis&reg; nodes\n##\nexistingConfigmap: \"\"\n\n## @section Redis&reg; master configuration parameters\n##\n\nmaster:\n  ## @param master.count Number of Redis&reg; master instances to deploy (experimental, requires additional configuration)\n  ##\n  count: 1\n  ## @param master.configuration Configuration for Redis&reg; master nodes\n  ## ref: https://redis.io/topics/config\n  ##\n  configuration: \"\"\n  ## @param master.disableCommands Array with Redis&reg; commands to disable on master nodes\n  ## Commands will be completely disabled by renaming each to an empty string.\n  ## ref: https://redis.io/topics/security#disabling-of-specific-commands\n  ##\n  disableCommands:\n    - FLUSHDB\n    - FLUSHALL\n  ## @param master.command Override default container command (useful when using custom images)\n  ##\n  command: []\n  ## @param master.args Override default container args (useful when using custom images)\n  ##\n  args: []\n  ## @param master.preExecCmds Additional commands to run prior to starting Redis&reg; master\n  ##\n  preExecCmds: []\n  ## @param master.extraFlags Array with additional command line flags for Redis&reg; master\n  ## e.g:\n  ## extraFlags:\n  ##  - \"--maxmemory-policy volatile-ttl\"\n  ##  - \"--repl-backlog-size 1024mb\"\n  ##\n  extraFlags: []\n  ## @param master.extraEnvVars Array with extra environment variables to add to Redis&reg; master nodes\n  ## e.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: \"bar\"\n  ##\n  extraEnvVars: []\n  ## @param master.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Redis&reg; master nodes\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param master.extraEnvVarsSecret Name of existing Secret containing extra env vars for Redis&reg; master nodes\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param master.containerPorts.redis Container port to open on Redis&reg; master nodes\n  ##\n  containerPorts:\n    redis: 6379\n  ## Configure extra options for Redis&reg; containers' liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param master.startupProbe.enabled Enable startupProbe on Redis&reg; master nodes\n  ## @param master.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param master.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param master.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param master.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param master.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: false\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param master.livenessProbe.enabled Enable livenessProbe on Redis&reg; master nodes\n  ## @param master.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param master.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param master.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param master.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param master.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param master.readinessProbe.enabled Enable readinessProbe on Redis&reg; master nodes\n  ## @param master.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param master.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param master.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param master.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param master.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param master.customStartupProbe Custom startupProbe that overrides the default one\n  ##\n  customStartupProbe: {}\n  ## @param master.customLivenessProbe Custom livenessProbe that overrides the default one\n  ##\n  customLivenessProbe: {}\n  ## @param master.customReadinessProbe Custom readinessProbe that overrides the default one\n  ##\n  customReadinessProbe: {}\n  ## Redis&reg; master resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param master.resources.limits The resources limits for the Redis&reg; master containers\n  ## @param master.resources.requests The requested resources for the Redis&reg; master containers\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## Configure Pods Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param master.podSecurityContext.enabled Enabled Redis&reg; master pods' Security Context\n  ## @param master.podSecurityContext.fsGroup Set Redis&reg; master pod's Security Context fsGroup\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param master.containerSecurityContext.enabled Enabled Redis&reg; master containers' Security Context\n  ## @param master.containerSecurityContext.runAsUser Set Redis&reg; master containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param master.kind Use either Deployment or StatefulSet (default)\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/\n  ##\n  kind: StatefulSet\n  ## @param master.schedulerName Alternate scheduler for Redis&reg; master pods\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param master.updateStrategy.type Redis&reg; master statefulset strategy type\n  ## @skip master.updateStrategy.rollingUpdate\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ##\n  updateStrategy:\n    ## StrategyType\n    ## Can be set to RollingUpdate or OnDelete\n    ##\n    type: RollingUpdate\n    rollingUpdate: {}\n  ## @param master.minReadySeconds How many seconds a pod needs to be ready before killing the next, during update\n  ##\n  minReadySeconds: 0\n  ## @param master.priorityClassName Redis&reg; master pods' priorityClassName\n  ##\n  priorityClassName: \"\"\n  ## @param master.hostAliases Redis&reg; master pods host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param master.podLabels Extra labels for Redis&reg; master pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param master.podAnnotations Annotations for Redis&reg; master pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param master.shareProcessNamespace Share a single process namespace between all of the containers in Redis&reg; master pods\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/\n  ##\n  shareProcessNamespace: false\n  ## @param master.podAffinityPreset Pod affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param master.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## Node master.affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param master.nodeAffinityPreset.type Node affinity preset type. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param master.nodeAffinityPreset.key Node label key to match. Ignored if `master.affinity` is set\n    ##\n    key: \"\"\n    ## @param master.nodeAffinityPreset.values Node label values to match. Ignored if `master.affinity` is set\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param master.affinity Affinity for Redis&reg; master pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## NOTE: `master.podAffinityPreset`, `master.podAntiAffinityPreset`, and `master.nodeAffinityPreset` will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param master.nodeSelector Node labels for Redis&reg; master pods assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param master.tolerations Tolerations for Redis&reg; master pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param master.topologySpreadConstraints Spread Constraints for Redis&reg; master pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ## E.g.\n  ## topologySpreadConstraints:\n  ##   - maxSkew: 1\n  ##     topologyKey: node\n  ##     whenUnsatisfiable: DoNotSchedule\n  ##\n  topologySpreadConstraints: []\n  ## @param master.dnsPolicy DNS Policy for Redis&reg; master pod\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\n  ## E.g.\n  ## dnsPolicy: ClusterFirst\n  dnsPolicy: \"\"\n  ## @param master.dnsConfig DNS Configuration for Redis&reg; master pod\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\n  ## E.g.\n  ## dnsConfig:\n  ##   options:\n  ##   - name: ndots\n  ##     value: \"4\"\n  ##   - name: single-request-reopen\n  dnsConfig: {}\n  ## @param master.lifecycleHooks for the Redis&reg; master container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param master.extraVolumes Optionally specify extra list of additional volumes for the Redis&reg; master pod(s)\n  ##\n  extraVolumes: []\n  ## @param master.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&reg; master container(s)\n  ##\n  extraVolumeMounts: []\n  ## @param master.sidecars Add additional sidecar containers to the Redis&reg; master pod(s)\n  ## e.g:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: []\n  ## @param master.initContainers Add additional init containers to the Redis&reg; master pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n  ## e.g:\n  ## initContainers:\n  ##  - name: your-image-name\n  ##    image: your-image\n  ##    imagePullPolicy: Always\n  ##    command: ['sh', '-c', 'echo \"hello world\"']\n  ##\n  initContainers: []\n  ## Persistence parameters\n  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param master.persistence.enabled Enable persistence on Redis&reg; master nodes using Persistent Volume Claims\n    ##\n    enabled: false\n    ## @param master.persistence.medium Provide a medium for `emptyDir` volumes.\n    ##\n    medium: \"\"\n    ## @param master.persistence.sizeLimit Set this to enable a size limit for `emptyDir` volumes.\n    ##\n    sizeLimit: \"\"\n    ## @param master.persistence.path The path the volume will be mounted at on Redis&reg; master containers\n    ## NOTE: Useful when using different Redis&reg; images\n    ##\n    path: /data\n    ## @param master.persistence.subPath The subdirectory of the volume to mount on Redis&reg; master containers\n    ## NOTE: Useful in dev environments\n    ##\n    subPath: \"\"\n    ## @param master.persistence.subPathExpr Used to construct the subPath subdirectory of the volume to mount on Redis&reg; master containers\n    ##\n    subPathExpr: \"\"\n    ## @param master.persistence.storageClass Persistent Volume storage class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner\n    ##\n    storageClass: \"\"\n    ## @param master.persistence.accessModes Persistent Volume access modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param master.persistence.size Persistent Volume size\n    ##\n    size: 1Gi\n    ## @param master.persistence.annotations Additional custom annotations for the PVC\n    ##\n    annotations: {}\n    ## @param master.persistence.selector Additional labels to match for the PVC\n    ## e.g:\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n    ## @param master.persistence.dataSource Custom PVC data source\n    ##\n    dataSource: {}\n    ## @param master.persistence.existingClaim Use a existing PVC which must be created manually before bound\n    ## NOTE: requires master.persistence.enabled: true\n    ##\n    existingClaim: \"\"\n  ## Redis&reg; master service parameters\n  ##\n  service:\n    ## @param master.service.type Redis&reg; master service type\n    ##\n    type: ClusterIP\n    ## @param master.service.ports.redis Redis&reg; master service port\n    ##\n    ports:\n      redis: 6379\n    ## @param master.service.nodePorts.redis Node port for Redis&reg; master\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ## NOTE: choose port between <30000-32767>\n    ##\n    nodePorts:\n      redis: \"\"\n    ## @param master.service.externalTrafficPolicy Redis&reg; master service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param master.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param master.service.internalTrafficPolicy Redis&reg; master service internal traffic policy (requires Kubernetes v1.22 or greater to be usable)\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/\n    ##\n    internalTrafficPolicy: Cluster\n    ## @param master.service.clusterIP Redis&reg; master service Cluster IP\n    ##\n    clusterIP: \"\"\n    ## @param master.service.loadBalancerIP Redis&reg; master service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param master.service.loadBalancerSourceRanges Redis&reg; master service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param master.service.annotations Additional custom annotations for Redis&reg; master service\n    ##\n    annotations: {}\n    ## @param master.service.sessionAffinity Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"\n    ## If \"ClientIP\", consecutive client requests will be directed to the same Pod\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n    ##\n    sessionAffinity: None\n    ## @param master.service.sessionAffinityConfig Additional settings for the sessionAffinity\n    ## sessionAffinityConfig:\n    ##   clientIP:\n    ##     timeoutSeconds: 300\n    ##\n    sessionAffinityConfig: {}\n  ## @param master.terminationGracePeriodSeconds Integer setting the termination grace period for the redis-master pods\n  ##\n  terminationGracePeriodSeconds: 30\n  ## ServiceAccount configuration\n  ##\n  serviceAccount:\n    ## @param master.serviceAccount.create Specifies whether a ServiceAccount should be created\n    ##\n    create: false\n    ## @param master.serviceAccount.name The name of the ServiceAccount to use.\n    ## If not set and create is true, a name is generated using the common.names.fullname template\n    ##\n    name: \"\"\n    ## @param master.serviceAccount.automountServiceAccountToken Whether to auto mount the service account token\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server\n    ##\n    automountServiceAccountToken: true\n    ## @param master.serviceAccount.annotations Additional custom annotations for the ServiceAccount\n    ##\n    annotations: {}\n\n## @section Redis&reg; replicas configuration parameters\n##\n\nreplica:\n  ## @param replica.replicaCount Number of Redis&reg; replicas to deploy\n  ##\n  replicaCount: 3\n  ## @param replica.configuration Configuration for Redis&reg; replicas nodes\n  ## ref: https://redis.io/topics/config\n  ##\n  configuration: \"\"\n  ## @param replica.disableCommands Array with Redis&reg; commands to disable on replicas nodes\n  ## Commands will be completely disabled by renaming each to an empty string.\n  ## ref: https://redis.io/topics/security#disabling-of-specific-commands\n  ##\n  disableCommands:\n    - FLUSHDB\n    - FLUSHALL\n  ## @param replica.command Override default container command (useful when using custom images)\n  ##\n  command: []\n  ## @param replica.args Override default container args (useful when using custom images)\n  ##\n  args: []\n  ## @param replica.preExecCmds Additional commands to run prior to starting Redis&reg; replicas\n  ##\n  preExecCmds: []\n  ## @param replica.extraFlags Array with additional command line flags for Redis&reg; replicas\n  ## e.g:\n  ## extraFlags:\n  ##  - \"--maxmemory-policy volatile-ttl\"\n  ##  - \"--repl-backlog-size 1024mb\"\n  ##\n  extraFlags: []\n  ## @param replica.extraEnvVars Array with extra environment variables to add to Redis&reg; replicas nodes\n  ## e.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: \"bar\"\n  ##\n  extraEnvVars: []\n  ## @param replica.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Redis&reg; replicas nodes\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param replica.extraEnvVarsSecret Name of existing Secret containing extra env vars for Redis&reg; replicas nodes\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param replica.externalMaster.enabled Use external master for bootstrapping\n  ## @param replica.externalMaster.host External master host to bootstrap from\n  ## @param replica.externalMaster.port Port for Redis service external master host\n  ##\n  externalMaster:\n    enabled: false\n    host: \"\"\n    port: 6379\n  ## @param replica.containerPorts.redis Container port to open on Redis&reg; replicas nodes\n  ##\n  containerPorts:\n    redis: 6379\n  ## Configure extra options for Redis&reg; containers' liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param replica.startupProbe.enabled Enable startupProbe on Redis&reg; replicas nodes\n  ## @param replica.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param replica.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param replica.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param replica.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param replica.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: true\n    initialDelaySeconds: 10\n    periodSeconds: 10\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 22\n  ## @param replica.livenessProbe.enabled Enable livenessProbe on Redis&reg; replicas nodes\n  ## @param replica.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param replica.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param replica.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param replica.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param replica.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param replica.readinessProbe.enabled Enable readinessProbe on Redis&reg; replicas nodes\n  ## @param replica.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param replica.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param replica.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param replica.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param replica.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param replica.customStartupProbe Custom startupProbe that overrides the default one\n  ##\n  customStartupProbe: {}\n  ## @param replica.customLivenessProbe Custom livenessProbe that overrides the default one\n  ##\n  customLivenessProbe: {}\n  ## @param replica.customReadinessProbe Custom readinessProbe that overrides the default one\n  ##\n  customReadinessProbe: {}\n  ## Redis&reg; replicas resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param replica.resources.limits The resources limits for the Redis&reg; replicas containers\n  ## @param replica.resources.requests The requested resources for the Redis&reg; replicas containers\n  ##\n  resources:\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    limits: {}\n    #   cpu: 250m\n    #   memory: 256Mi\n    requests: {}\n    #   cpu: 250m\n    #   memory: 256Mi\n  ## Configure Pods Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param replica.podSecurityContext.enabled Enabled Redis&reg; replicas pods' Security Context\n  ## @param replica.podSecurityContext.fsGroup Set Redis&reg; replicas pod's Security Context fsGroup\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param replica.containerSecurityContext.enabled Enabled Redis&reg; replicas containers' Security Context\n  ## @param replica.containerSecurityContext.runAsUser Set Redis&reg; replicas containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param replica.schedulerName Alternate scheduler for Redis&reg; replicas pods\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param replica.updateStrategy.type Redis&reg; replicas statefulset strategy type\n  ## @skip replica.updateStrategy.rollingUpdate\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ##\n  updateStrategy:\n    ## StrategyType\n    ## Can be set to RollingUpdate or OnDelete\n    ##\n    type: RollingUpdate\n    rollingUpdate: {}\n  ## @param replica.minReadySeconds How many seconds a pod needs to be ready before killing the next, during update\n  ##\n  minReadySeconds: 0\n  ## @param replica.priorityClassName Redis&reg; replicas pods' priorityClassName\n  ##\n  priorityClassName: \"\"\n  ## @param replica.podManagementPolicy podManagementPolicy to manage scaling operation of %%MAIN_CONTAINER_NAME%% pods\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies\n  ##\n  podManagementPolicy: \"\"\n  ## @param replica.hostAliases Redis&reg; replicas pods host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param replica.podLabels Extra labels for Redis&reg; replicas pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param replica.podAnnotations Annotations for Redis&reg; replicas pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param replica.shareProcessNamespace Share a single process namespace between all of the containers in Redis&reg; replicas pods\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/\n  ##\n  shareProcessNamespace: false\n  ## @param replica.podAffinityPreset Pod affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param replica.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## Node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param replica.nodeAffinityPreset.type Node affinity preset type. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param replica.nodeAffinityPreset.key Node label key to match. Ignored if `replica.affinity` is set\n    ##\n    key: \"\"\n    ## @param replica.nodeAffinityPreset.values Node label values to match. Ignored if `replica.affinity` is set\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param replica.affinity Affinity for Redis&reg; replicas pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## NOTE: `replica.podAffinityPreset`, `replica.podAntiAffinityPreset`, and `replica.nodeAffinityPreset` will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param replica.nodeSelector Node labels for Redis&reg; replicas pods assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param replica.tolerations Tolerations for Redis&reg; replicas pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param replica.topologySpreadConstraints Spread Constraints for Redis&reg; replicas pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ## E.g.\n  ## topologySpreadConstraints:\n  ##   - maxSkew: 1\n  ##     topologyKey: node\n  ##     whenUnsatisfiable: DoNotSchedule\n  ##\n  topologySpreadConstraints: []\n  ## @param replica.dnsPolicy DNS Policy for Redis&reg; replica pods\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\n  ## E.g.\n  ## dnsPolicy: ClusterFirst\n  dnsPolicy: \"\"\n  ## @param replica.dnsConfig DNS Configuration for Redis&reg; replica pods\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\n  ## E.g.\n  ## dnsConfig:\n  ##   options:\n  ##   - name: ndots\n  ##     value: \"4\"\n  ##   - name: single-request-reopen\n  dnsConfig: {}\n  ## @param replica.lifecycleHooks for the Redis&reg; replica container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param replica.extraVolumes Optionally specify extra list of additional volumes for the Redis&reg; replicas pod(s)\n  ##\n  extraVolumes: []\n  ## @param replica.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&reg; replicas container(s)\n  ##\n  extraVolumeMounts: []\n  ## @param replica.sidecars Add additional sidecar containers to the Redis&reg; replicas pod(s)\n  ## e.g:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: []\n  ## @param replica.initContainers Add additional init containers to the Redis&reg; replicas pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n  ## e.g:\n  ## initContainers:\n  ##  - name: your-image-name\n  ##    image: your-image\n  ##    imagePullPolicy: Always\n  ##    command: ['sh', '-c', 'echo \"hello world\"']\n  ##\n  initContainers: []\n  ## Persistence Parameters\n  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param replica.persistence.enabled Enable persistence on Redis&reg; replicas nodes using Persistent Volume Claims\n    ##\n    enabled: true\n    ## @param replica.persistence.medium Provide a medium for `emptyDir` volumes.\n    ##\n    medium: \"\"\n    ## @param replica.persistence.sizeLimit Set this to enable a size limit for `emptyDir` volumes.\n    ##\n    sizeLimit: \"\"\n    ##  @param replica.persistence.path The path the volume will be mounted at on Redis&reg; replicas containers\n    ## NOTE: Useful when using different Redis&reg; images\n    ##\n    path: /data\n    ## @param replica.persistence.subPath The subdirectory of the volume to mount on Redis&reg; replicas containers\n    ## NOTE: Useful in dev environments\n    ##\n    subPath: \"\"\n    ## @param replica.persistence.subPathExpr Used to construct the subPath subdirectory of the volume to mount on Redis&reg; replicas containers\n    ##\n    subPathExpr: \"\"\n    ## @param replica.persistence.storageClass Persistent Volume storage class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner\n    ##\n    storageClass: \"\"\n    ## @param replica.persistence.accessModes Persistent Volume access modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param replica.persistence.size Persistent Volume size\n    ##\n    size: 8Gi\n    ## @param replica.persistence.annotations Additional custom annotations for the PVC\n    ##\n    annotations: {}\n    ## @param replica.persistence.selector Additional labels to match for the PVC\n    ## e.g:\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n    ## @param replica.persistence.dataSource Custom PVC data source\n    ##\n    dataSource: {}\n    ## @param replica.persistence.existingClaim Use a existing PVC which must be created manually before bound\n    ## NOTE: requires replica.persistence.enabled: true\n    ##\n    existingClaim: \"\"\n  ## Redis&reg; replicas service parameters\n  ##\n  service:\n    ## @param replica.service.type Redis&reg; replicas service type\n    ##\n    type: ClusterIP\n    ## @param replica.service.ports.redis Redis&reg; replicas service port\n    ##\n    ports:\n      redis: 6379\n    ## @param replica.service.nodePorts.redis Node port for Redis&reg; replicas\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ## NOTE: choose port between <30000-32767>\n    ##\n    nodePorts:\n      redis: \"\"\n    ## @param replica.service.externalTrafficPolicy Redis&reg; replicas service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param replica.service.internalTrafficPolicy Redis&reg; replicas service internal traffic policy (requires Kubernetes v1.22 or greater to be usable)\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/\n    ##\n    internalTrafficPolicy: Cluster\n    ## @param replica.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param replica.service.clusterIP Redis&reg; replicas service Cluster IP\n    ##\n    clusterIP: \"\"\n    ## @param replica.service.loadBalancerIP Redis&reg; replicas service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param replica.service.loadBalancerSourceRanges Redis&reg; replicas service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param replica.service.annotations Additional custom annotations for Redis&reg; replicas service\n    ##\n    annotations: {}\n    ## @param replica.service.sessionAffinity Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"\n    ## If \"ClientIP\", consecutive client requests will be directed to the same Pod\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n    ##\n    sessionAffinity: None\n    ## @param replica.service.sessionAffinityConfig Additional settings for the sessionAffinity\n    ## sessionAffinityConfig:\n    ##   clientIP:\n    ##     timeoutSeconds: 300\n    ##\n    sessionAffinityConfig: {}\n  ## @param replica.terminationGracePeriodSeconds Integer setting the termination grace period for the redis-replicas pods\n  ##\n  terminationGracePeriodSeconds: 30\n  ## Autoscaling configuration\n  ##\n  autoscaling:\n    ## @param replica.autoscaling.enabled Enable replica autoscaling settings\n    ##\n    enabled: false\n    ## @param replica.autoscaling.minReplicas Minimum replicas for the pod autoscaling\n    ##\n    minReplicas: 1\n    ## @param replica.autoscaling.maxReplicas Maximum replicas for the pod autoscaling\n    ##\n    maxReplicas: 11\n    ## @param replica.autoscaling.targetCPU Percentage of CPU to consider when autoscaling\n    ##\n    targetCPU: \"\"\n    ## @param replica.autoscaling.targetMemory Percentage of Memory to consider when autoscaling\n    ##\n    targetMemory: \"\"\n  ## ServiceAccount configuration\n  ##\n  serviceAccount:\n    ## @param replica.serviceAccount.create Specifies whether a ServiceAccount should be created\n    ##\n    create: false\n    ## @param replica.serviceAccount.name The name of the ServiceAccount to use.\n    ## If not set and create is true, a name is generated using the common.names.fullname template\n    ##\n    name: \"\"\n    ## @param replica.serviceAccount.automountServiceAccountToken Whether to auto mount the service account token\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server\n    ##\n    automountServiceAccountToken: true\n    ## @param replica.serviceAccount.annotations Additional custom annotations for the ServiceAccount\n    ##\n    annotations: {}\n## @section Redis&reg; Sentinel configuration parameters\n##\n\nsentinel:\n  ## @param sentinel.enabled Use Redis&reg; Sentinel on Redis&reg; pods.\n  ## IMPORTANT: this will disable the master and replicas services and\n  ## create a single Redis&reg; service exposing both the Redis and Sentinel ports\n  ##\n  enabled: false\n  ## Bitnami Redis&reg; Sentinel image version\n  ## ref: https://hub.docker.com/r/bitnami/redis-sentinel/tags/\n  ## @param sentinel.image.registry Redis&reg; Sentinel image registry\n  ## @param sentinel.image.repository Redis&reg; Sentinel image repository\n  ## @param sentinel.image.tag Redis&reg; Sentinel image tag (immutable tags are recommended)\n  ## @param sentinel.image.digest Redis&reg; Sentinel image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param sentinel.image.pullPolicy Redis&reg; Sentinel image pull policy\n  ## @param sentinel.image.pullSecrets Redis&reg; Sentinel image pull secrets\n  ## @param sentinel.image.debug Enable image debug mode\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/redis-sentinel\n    tag: 7.0.5-debian-11-r14\n    digest: \"\"\n    ## Specify a imagePullPolicy\n    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n    ##\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n    ## Enable debug mode\n    ##\n    debug: false\n  ## @param sentinel.masterSet Master set name\n  ##\n  masterSet: mymaster\n  ## @param sentinel.quorum Sentinel Quorum\n  ##\n  quorum: 2\n  ## @param sentinel.getMasterTimeout Amount of time to allow before get_sentinel_master_info() times out.\n  ## NOTE: This is directly related to the startupProbes which are configured to run every 10 seconds for a total of 22 failures. If adjusting this value, also adjust the startupProbes.\n  getMasterTimeout: 220\n  ## @param sentinel.automateClusterRecovery Automate cluster recovery in cases where the last replica is not considered a good replica and Sentinel won't automatically failover to it.\n  ## This also prevents any new replica from starting until the last remaining replica is elected as master to guarantee that it is the one to be elected by Sentinel, and not a newly started replica with no data.\n  ## NOTE: This feature requires a \"downAfterMilliseconds\" value less or equal to 2000.\n  ##\n  automateClusterRecovery: false\n  ## Sentinel timing restrictions\n  ## @param sentinel.downAfterMilliseconds Timeout for detecting a Redis&reg; node is down\n  ## @param sentinel.failoverTimeout Timeout for performing a election failover\n  ##\n  downAfterMilliseconds: 60000\n  failoverTimeout: 180000\n  ## @param sentinel.parallelSyncs Number of replicas that can be reconfigured in parallel to use the new master after a failover\n  ##\n  parallelSyncs: 1\n  ## @param sentinel.configuration Configuration for Redis&reg; Sentinel nodes\n  ## ref: https://redis.io/topics/sentinel\n  ##\n  configuration: \"\"\n  ## @param sentinel.command Override default container command (useful when using custom images)\n  ##\n  command: []\n  ## @param sentinel.args Override default container args (useful when using custom images)\n  ##\n  args: []\n  ## @param sentinel.preExecCmds Additional commands to run prior to starting Redis&reg; Sentinel\n  ##\n  preExecCmds: []\n  ## @param sentinel.extraEnvVars Array with extra environment variables to add to Redis&reg; Sentinel nodes\n  ## e.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: \"bar\"\n  ##\n  extraEnvVars: []\n  ## @param sentinel.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Redis&reg; Sentinel nodes\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param sentinel.extraEnvVarsSecret Name of existing Secret containing extra env vars for Redis&reg; Sentinel nodes\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param sentinel.externalMaster.enabled Use external master for bootstrapping\n  ## @param sentinel.externalMaster.host External master host to bootstrap from\n  ## @param sentinel.externalMaster.port Port for Redis service external master host\n  ##\n  externalMaster:\n    enabled: false\n    host: \"\"\n    port: 6379\n  ## @param sentinel.containerPorts.sentinel Container port to open on Redis&reg; Sentinel nodes\n  ##\n  containerPorts:\n    sentinel: 26379\n  ## Configure extra options for Redis&reg; containers' liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param sentinel.startupProbe.enabled Enable startupProbe on Redis&reg; Sentinel nodes\n  ## @param sentinel.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe\n  ## @param sentinel.startupProbe.periodSeconds Period seconds for startupProbe\n  ## @param sentinel.startupProbe.timeoutSeconds Timeout seconds for startupProbe\n  ## @param sentinel.startupProbe.failureThreshold Failure threshold for startupProbe\n  ## @param sentinel.startupProbe.successThreshold Success threshold for startupProbe\n  ##\n  startupProbe:\n    enabled: true\n    initialDelaySeconds: 10\n    periodSeconds: 10\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 22\n  ## @param sentinel.livenessProbe.enabled Enable livenessProbe on Redis&reg; Sentinel nodes\n  ## @param sentinel.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param sentinel.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param sentinel.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param sentinel.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param sentinel.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param sentinel.readinessProbe.enabled Enable readinessProbe on Redis&reg; Sentinel nodes\n  ## @param sentinel.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param sentinel.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param sentinel.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param sentinel.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param sentinel.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param sentinel.customStartupProbe Custom startupProbe that overrides the default one\n  ##\n  customStartupProbe: {}\n  ## @param sentinel.customLivenessProbe Custom livenessProbe that overrides the default one\n  ##\n  customLivenessProbe: {}\n  ## @param sentinel.customReadinessProbe Custom readinessProbe that overrides the default one\n  ##\n  customReadinessProbe: {}\n  ## Persistence parameters\n  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param sentinel.persistence.enabled Enable persistence on Redis&reg; sentinel nodes using Persistent Volume Claims (Experimental)\n    ##\n    enabled: true\n    ## @param sentinel.persistence.storageClass Persistent Volume storage class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner\n    ##\n    storageClass: \"\"\n    ## @param sentinel.persistence.accessModes Persistent Volume access modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param sentinel.persistence.size Persistent Volume size\n    ##\n    size: 100Mi\n    ## @param sentinel.persistence.annotations Additional custom annotations for the PVC\n    ##\n    annotations: {}\n    ## @param sentinel.persistence.selector Additional labels to match for the PVC\n    ## e.g:\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n    ## @param sentinel.persistence.dataSource Custom PVC data source\n    ##\n    dataSource: {}\n    ## @param sentinel.persistence.medium Provide a medium for `emptyDir` volumes.\n    ##\n    medium: \"\"\n  ## Redis&reg; Sentinel resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param sentinel.resources.limits The resources limits for the Redis&reg; Sentinel containers\n  ## @param sentinel.resources.requests The requested resources for the Redis&reg; Sentinel containers\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param sentinel.containerSecurityContext.enabled Enabled Redis&reg; Sentinel containers' Security Context\n  ## @param sentinel.containerSecurityContext.runAsUser Set Redis&reg; Sentinel containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param sentinel.lifecycleHooks for the Redis&reg; sentinel container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param sentinel.extraVolumes Optionally specify extra list of additional volumes for the Redis&reg; Sentinel\n  ##\n  extraVolumes: []\n  ## @param sentinel.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&reg; Sentinel container(s)\n  ##\n  extraVolumeMounts: []\n  ## Redis&reg; Sentinel service parameters\n  ##\n  service:\n    ## @param sentinel.service.type Redis&reg; Sentinel service type\n    ##\n    type: ClusterIP\n    ## @param sentinel.service.ports.redis Redis&reg; service port for Redis&reg;\n    ## @param sentinel.service.ports.sentinel Redis&reg; service port for Redis&reg; Sentinel\n    ##\n    ports:\n      redis: 6379\n      sentinel: 26379\n    ## @param sentinel.service.nodePorts.redis Node port for Redis&reg;\n    ## @param sentinel.service.nodePorts.sentinel Node port for Sentinel\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ## NOTE: choose port between <30000-32767>\n    ## NOTE: By leaving these values blank, they will be generated by ports-configmap\n    ##       If setting manually, please leave at least replica.replicaCount + 1 in between sentinel.service.nodePorts.redis and sentinel.service.nodePorts.sentinel to take into account the ports that will be created while incrementing that base port\n    ##\n    nodePorts:\n      redis: \"\"\n      sentinel: \"\"\n    ## @param sentinel.service.externalTrafficPolicy Redis&reg; Sentinel service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param sentinel.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param sentinel.service.clusterIP Redis&reg; Sentinel service Cluster IP\n    ##\n    clusterIP: \"\"\n    ## @param sentinel.service.loadBalancerIP Redis&reg; Sentinel service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param sentinel.service.loadBalancerSourceRanges Redis&reg; Sentinel service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param sentinel.service.annotations Additional custom annotations for Redis&reg; Sentinel service\n    ##\n    annotations: {}\n    ## @param sentinel.service.sessionAffinity Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"\n    ## If \"ClientIP\", consecutive client requests will be directed to the same Pod\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n    ##\n    sessionAffinity: None\n    ## @param sentinel.service.sessionAffinityConfig Additional settings for the sessionAffinity\n    ## sessionAffinityConfig:\n    ##   clientIP:\n    ##     timeoutSeconds: 300\n    ##\n    sessionAffinityConfig: {}\n  ## @param sentinel.terminationGracePeriodSeconds Integer setting the termination grace period for the redis-node pods\n  ##\n  terminationGracePeriodSeconds: 30\n\n## @section Other Parameters\n##\n\n## Network Policy configuration\n## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/\n##\nnetworkPolicy:\n  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources\n  ##\n  enabled: false\n  ## @param networkPolicy.allowExternal Don't require client label for connections\n  ## When set to false, only pods with the correct client label will have network access to the ports\n  ## Redis&reg; is listening on. When true, Redis&reg; will accept connections from any source\n  ## (with the correct destination port).\n  ##\n  allowExternal: true\n  ## @param networkPolicy.extraIngress Add extra ingress rules to the NetworkPolicy\n  ## e.g:\n  ## extraIngress:\n  ##   - ports:\n  ##       - port: 1234\n  ##     from:\n  ##       - podSelector:\n  ##           - matchLabels:\n  ##               - role: frontend\n  ##       - podSelector:\n  ##           - matchExpressions:\n  ##               - key: role\n  ##                 operator: In\n  ##                 values:\n  ##                   - frontend\n  ##\n  extraIngress: []\n  ## @param networkPolicy.extraEgress Add extra egress rules to the NetworkPolicy\n  ## e.g:\n  ## extraEgress:\n  ##   - ports:\n  ##       - port: 1234\n  ##     to:\n  ##       - podSelector:\n  ##           - matchLabels:\n  ##               - role: frontend\n  ##       - podSelector:\n  ##           - matchExpressions:\n  ##               - key: role\n  ##                 operator: In\n  ##                 values:\n  ##                   - frontend\n  ##\n  extraEgress: []\n  ## @param networkPolicy.ingressNSMatchLabels Labels to match to allow traffic from other namespaces\n  ## @param networkPolicy.ingressNSPodMatchLabels Pod labels to match to allow traffic from other namespaces\n  ##\n  ingressNSMatchLabels: {}\n  ingressNSPodMatchLabels: {}\n## PodSecurityPolicy configuration\n## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n##\npodSecurityPolicy:\n  ## @param podSecurityPolicy.create Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later\n  ##\n  create: false\n  ## @param podSecurityPolicy.enabled Enable PodSecurityPolicy's RBAC rules\n  ##\n  enabled: false\n## RBAC configuration\n##\nrbac:\n  ## @param rbac.create Specifies whether RBAC resources should be created\n  ##\n  create: false\n  ## @param rbac.rules Custom RBAC rules to set\n  ## e.g:\n  ## rules:\n  ##   - apiGroups:\n  ##       - \"\"\n  ##     resources:\n  ##       - pods\n  ##     verbs:\n  ##       - get\n  ##       - list\n  ##\n  rules: []\n## ServiceAccount configuration\n##\nserviceAccount:\n  ## @param serviceAccount.create Specifies whether a ServiceAccount should be created\n  ##\n  create: true\n  ## @param serviceAccount.name The name of the ServiceAccount to use.\n  ## If not set and create is true, a name is generated using the common.names.fullname template\n  ##\n  name: \"\"\n  ## @param serviceAccount.automountServiceAccountToken Whether to auto mount the service account token\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server\n  ##\n  automountServiceAccountToken: true\n  ## @param serviceAccount.annotations Additional custom annotations for the ServiceAccount\n  ##\n  annotations: {}\n## Redis&reg; Pod Disruption Budget configuration\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n##\npdb:\n  ## @param pdb.create Specifies whether a PodDisruptionBudget should be created\n  ##\n  create: false\n  ## @param pdb.minAvailable Min number of pods that must still be available after the eviction\n  ##\n  minAvailable: 1\n  ## @param pdb.maxUnavailable Max number of pods that can be unavailable after the eviction\n  ##\n  maxUnavailable: \"\"\n## TLS configuration\n##\ntls:\n  ## @param tls.enabled Enable TLS traffic\n  ##\n  enabled: false\n  ## @param tls.authClients Require clients to authenticate\n  ##\n  authClients: true\n  ## @param tls.autoGenerated Enable autogenerated certificates\n  ##\n  autoGenerated: false\n  ## @param tls.existingSecret The name of the existing secret that contains the TLS certificates\n  ##\n  existingSecret: \"\"\n  ## @param tls.certificatesSecret DEPRECATED. Use existingSecret instead.\n  ##\n  certificatesSecret: \"\"\n  ## @param tls.certFilename Certificate filename\n  ##\n  certFilename: \"\"\n  ## @param tls.certKeyFilename Certificate Key filename\n  ##\n  certKeyFilename: \"\"\n  ## @param tls.certCAFilename CA Certificate filename\n  ##\n  certCAFilename: \"\"\n  ## @param tls.dhParamsFilename File containing DH params (in order to support DH based ciphers)\n  ##\n  dhParamsFilename: \"\"\n\n## @section Metrics Parameters\n##\n\nmetrics:\n  ## @param metrics.enabled Start a sidecar prometheus exporter to expose Redis&reg; metrics\n  ##\n  enabled: false\n  ## Bitnami Redis&reg; Exporter image\n  ## ref: https://hub.docker.com/r/bitnami/redis-exporter/tags/\n  ## @param metrics.image.registry Redis&reg; Exporter image registry\n  ## @param metrics.image.repository Redis&reg; Exporter image repository\n  ## @param metrics.image.tag Redis&reg; Exporter image tag (immutable tags are recommended)\n  ## @param metrics.image.digest Redis&reg; Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param metrics.image.pullPolicy Redis&reg; Exporter image pull policy\n  ## @param metrics.image.pullSecrets Redis&reg; Exporter image pull secrets\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/redis-exporter\n    tag: 1.45.0-debian-11-r1\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## @param metrics.command Override default metrics container init command (useful when using custom images)\n  ##\n  command: []\n  ## @param metrics.redisTargetHost A way to specify an alternative Redis&reg; hostname\n  ## Useful for certificate CN/SAN matching\n  ##\n  redisTargetHost: \"localhost\"\n  ## @param metrics.extraArgs Extra arguments for Redis&reg; exporter, for example:\n  ## e.g.:\n  ## extraArgs:\n  ##   check-keys: myKey,myOtherKey\n  ##\n  extraArgs: {}\n  ## @param metrics.extraEnvVars Array with extra environment variables to add to Redis&reg; exporter\n  ## e.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: \"bar\"\n  ##\n  extraEnvVars: []\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param metrics.containerSecurityContext.enabled Enabled Redis&reg; exporter containers' Security Context\n  ## @param metrics.containerSecurityContext.runAsUser Set Redis&reg; exporter containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param metrics.extraVolumes Optionally specify extra list of additional volumes for the Redis&reg; metrics sidecar\n  ##\n  extraVolumes: []\n  ## @param metrics.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&reg; metrics sidecar\n  ##\n  extraVolumeMounts: []\n  ## Redis&reg; exporter resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param metrics.resources.limits The resources limits for the Redis&reg; exporter container\n  ## @param metrics.resources.requests The requested resources for the Redis&reg; exporter container\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## @param metrics.podLabels Extra labels for Redis&reg; exporter pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param metrics.podAnnotations [object] Annotations for Redis&reg; exporter pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations:\n    prometheus.io/scrape: \"true\"\n    prometheus.io/port: \"9121\"\n  ## Redis&reg; exporter service parameters\n  ##\n  service:\n    ## @param metrics.service.type Redis&reg; exporter service type\n    ##\n    type: ClusterIP\n    ## @param metrics.service.port Redis&reg; exporter service port\n    ##\n    port: 9121\n    ## @param metrics.service.externalTrafficPolicy Redis&reg; exporter service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param metrics.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)\n    ##\n    extraPorts: []\n    ## @param metrics.service.loadBalancerIP Redis&reg; exporter service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param metrics.service.loadBalancerSourceRanges Redis&reg; exporter service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param metrics.service.annotations Additional custom annotations for Redis&reg; exporter service\n    ##\n    annotations: {}\n  ## Prometheus Service Monitor\n  ## ref: https://github.com/coreos/prometheus-operator\n  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint\n  ##\n  serviceMonitor:\n    ## @param metrics.serviceMonitor.enabled Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator\n    ##\n    enabled: false\n    ## @param metrics.serviceMonitor.namespace The namespace in which the ServiceMonitor will be created\n    ##\n    namespace: \"\"\n    ## @param metrics.serviceMonitor.interval The interval at which metrics should be scraped\n    ##\n    interval: 30s\n    ## @param metrics.serviceMonitor.scrapeTimeout The timeout after which the scrape is ended\n    ##\n    scrapeTimeout: \"\"\n    ## @param metrics.serviceMonitor.relabellings Metrics RelabelConfigs to apply to samples before scraping.\n    ##\n    relabellings: []\n    ## @param metrics.serviceMonitor.metricRelabelings Metrics RelabelConfigs to apply to samples before ingestion.\n    ##\n    metricRelabelings: []\n    ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint\n    ##\n    honorLabels: false\n    ## @param metrics.serviceMonitor.additionalLabels Additional labels that can be used so ServiceMonitor resource(s) can be discovered by Prometheus\n    ##\n    additionalLabels: {}\n    ## @param metrics.serviceMonitor.podTargetLabels Labels from the Kubernetes pod to be transferred to the created metrics\n    ##\n    podTargetLabels: []\n  ## Custom PrometheusRule to be defined\n  ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n  ##\n  prometheusRule:\n    ## @param metrics.prometheusRule.enabled Create a custom prometheusRule Resource for scraping metrics using PrometheusOperator\n    ##\n    enabled: false\n    ## @param metrics.prometheusRule.namespace The namespace in which the prometheusRule will be created\n    ##\n    namespace: \"\"\n    ## @param metrics.prometheusRule.additionalLabels Additional labels for the prometheusRule\n    ##\n    additionalLabels: {}\n    ## @param metrics.prometheusRule.rules Custom Prometheus rules\n    ## e.g:\n    ## rules:\n    ##   - alert: RedisDown\n    ##     expr: redis_up{service=\"{{ template \"common.names.fullname\" . }}-metrics\"} == 0\n    ##     for: 2m\n    ##     labels:\n    ##       severity: error\n    ##     annotations:\n    ##       summary: Redis&reg; instance {{ \"{{ $labels.instance }}\" }} down\n    ##       description: Redis&reg; instance {{ \"{{ $labels.instance }}\" }} is down\n    ##    - alert: RedisMemoryHigh\n    ##      expr: >\n    ##        redis_memory_used_bytes{service=\"{{ template \"common.names.fullname\" . }}-metrics\"} * 100\n    ##        /\n    ##        redis_memory_max_bytes{service=\"{{ template \"common.names.fullname\" . }}-metrics\"}\n    ##        > 90\n    ##      for: 2m\n    ##      labels:\n    ##        severity: error\n    ##      annotations:\n    ##        summary: Redis&reg; instance {{ \"{{ $labels.instance }}\" }} is using too much memory\n    ##        description: |\n    ##          Redis&reg; instance {{ \"{{ $labels.instance }}\" }} is using {{ \"{{ $value }}\" }}% of its available memory.\n    ##    - alert: RedisKeyEviction\n    ##      expr: |\n    ##        increase(redis_evicted_keys_total{service=\"{{ template \"common.names.fullname\" . }}-metrics\"}[5m]) > 0\n    ##      for: 1s\n    ##      labels:\n    ##        severity: error\n    ##      annotations:\n    ##        summary: Redis&reg; instance {{ \"{{ $labels.instance }}\" }} has evicted keys\n    ##        description: |\n    ##          Redis&reg; instance {{ \"{{ $labels.instance }}\" }} has evicted {{ \"{{ $value }}\" }} keys in the last 5 minutes.\n    ##\n    rules: []\n\n## @section Init Container Parameters\n##\n\n## 'volumePermissions' init container parameters\n## Changes the owner and group of the persistent volume mount point to runAsUser:fsGroup values\n##   based on the *podSecurityContext/*containerSecurityContext parameters\n##\nvolumePermissions:\n  ## @param volumePermissions.enabled Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup`\n  ##\n  enabled: false\n  ## Bitnami Shell image\n  ## ref: https://hub.docker.com/r/bitnami/bitnami-shell/tags/\n  ## @param volumePermissions.image.registry Bitnami Shell image registry\n  ## @param volumePermissions.image.repository Bitnami Shell image repository\n  ## @param volumePermissions.image.tag Bitnami Shell image tag (immutable tags are recommended)\n  ## @param volumePermissions.image.digest Bitnami Shell image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param volumePermissions.image.pullPolicy Bitnami Shell image pull policy\n  ## @param volumePermissions.image.pullSecrets Bitnami Shell image pull secrets\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 11-debian-11-r48\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## Init container's resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param volumePermissions.resources.limits The resources limits for the init container\n  ## @param volumePermissions.resources.requests The requested resources for the init container\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## Init container Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ## @param volumePermissions.containerSecurityContext.runAsUser Set init container's Security Context runAsUser\n  ## NOTE: when runAsUser is set to special value \"auto\", init container will try to chown the\n  ##   data folder to auto-determined user&group, using commands: `id -u`:`id -G | cut -d\" \" -f2`\n  ##   \"auto\" is especially useful for OpenShift which has scc with dynamic user ids (and 0 is not allowed)\n  ##\n  containerSecurityContext:\n    runAsUser: 0\n\n## init-sysctl container parameters\n## used to perform sysctl operation to modify Kernel settings (needed sometimes to avoid warnings)\n##\nsysctl:\n  ## @param sysctl.enabled Enable init container to modify Kernel settings\n  ##\n  enabled: false\n  ## Bitnami Shell image\n  ## ref: https://hub.docker.com/r/bitnami/bitnami-shell/tags/\n  ## @param sysctl.image.registry Bitnami Shell image registry\n  ## @param sysctl.image.repository Bitnami Shell image repository\n  ## @param sysctl.image.tag Bitnami Shell image tag (immutable tags are recommended)\n  ## @param sysctl.image.digest Bitnami Shell image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag\n  ## @param sysctl.image.pullPolicy Bitnami Shell image pull policy\n  ## @param sysctl.image.pullSecrets Bitnami Shell image pull secrets\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 11-debian-11-r48\n    digest: \"\"\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## @param sysctl.command Override default init-sysctl container command (useful when using custom images)\n  ##\n  command: []\n  ## @param sysctl.mountHostSys Mount the host `/sys` folder to `/host-sys`\n  ##\n  mountHostSys: false\n  ## Init container's resource requests and limits\n  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param sysctl.resources.limits The resources limits for the init container\n  ## @param sysctl.resources.requests The requested resources for the init container\n  ##\n  resources:\n    limits: {}\n    requests: {}\n\n## @section useExternalDNS Parameters\n##\n## @param useExternalDNS.enabled Enable various syntax that would enable external-dns to work.  Note this requires a working installation of `external-dns` to be usable.\n## @param useExternalDNS.additionalAnnotations Extra annotations to be utilized when `external-dns` is enabled.\n## @param useExternalDNS.annotationKey The annotation key utilized when `external-dns` is enabled. Setting this to `false` will disable annotations.\n## @param useExternalDNS.suffix The DNS suffix utilized when `external-dns` is enabled.  Note that we prepend the suffix with the full name of the release.\n##\nuseExternalDNS:\n  enabled: false\n  suffix: \"\"\n  annotationKey: external-dns.alpha.kubernetes.io/\n  additionalAnnotations: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/Chart.yaml",
    "content": "apiVersion: v2\nname: zabbix-server\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"alpine-5.0-st2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"zabbix-server.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"zabbix-server.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"zabbix-server.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"zabbix-server.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"zabbix-server.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"zabbix-server.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"zabbix-server.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"zabbix-server.labels\" -}}\nhelm.sh/chart: {{ include \"zabbix-server.chart\" . }}\n{{ include \"zabbix-server.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"zabbix-server.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"zabbix-server.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"zabbix-server.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"zabbix-server.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"zabbix-server.fullname\" . }}\n  labels:\n    {{- include \"zabbix-server.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"zabbix-server.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"zabbix-server.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"zabbix-server.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          env:\n          - name: DB_SERVER_HOST\n            value: \"${MYSQL_SERVER_IP}\"\n          - name: MYSQL_DATABASE\n            value: \"${ZABBIX_DB_NAME}\"\n          - name: MYSQL_USER\n            value: \"${ZABBIX_DB_USER}\"\n          - name: MYSQL_PASSWORD\n            value: \"${ZABBIX_DB_PASSWORD}\"\n          - name: MYSQL_ROOT_PASSWORD\n            value: \"${MYSQL_ROOT_PASSWORD}\"\n          - name: ZBX_JAVAGATEWAY\n            value: \"zabbix-java-gateway\"\n          volumeMounts:\n            - name: alertscripts\n              mountPath: /usr/lib/zabbix/alertscripts\n            - name: externalscripts\n              mountPath: /usr/lib/zabbix/externalscripts\n            - name: snmptraps\n              mountPath: /var/lib/zabbix/snmptraps\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: {{ .Values.service.port }}\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: alertscripts\n          persistentVolumeClaim:\n            claimName: alertscripts\n        - name: externalscripts\n          persistentVolumeClaim:\n            claimName: externalscripts\n        - name: snmptraps\n          persistentVolumeClaim:\n            claimName: snmptraps\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"zabbix-server.fullname\" . }}\n  labels:\n    {{- include \"zabbix-server.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"zabbix-server.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"zabbix-server.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"zabbix-server.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"zabbix-server.fullname\" . }}\n  labels:\n    {{- include \"zabbix-server.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 10051\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"zabbix-server.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"zabbix-server.serviceAccountName\" . }}\n  labels:\n    {{- include \"zabbix-server.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/storage.yaml",
    "content": "---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: alertscripts\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/zabbix-volume/alertscripts\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: alertscripts\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: alertscripts\n\n\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: externalscripts\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/zabbix-volume/externalscripts\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: externalscripts\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: externalscripts\n\n\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: snmptraps\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/zabbix-volume/snmptraps\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: snmptraps\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: snmptraps\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"zabbix-server.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"zabbix-server.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"zabbix-server.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-server/values.yaml",
    "content": "# Default values for zabbix-server.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/zabbix-server-mysql\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 10051\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/Chart.yaml",
    "content": "apiVersion: v2\nname: zabbix-web\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"zabbix-web.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"zabbix-web.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"zabbix-web.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"zabbix-web.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"zabbix-web.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"zabbix-web.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"zabbix-web.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"zabbix-web.labels\" -}}\nhelm.sh/chart: {{ include \"zabbix-web.chart\" . }}\n{{ include \"zabbix-web.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"zabbix-web.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"zabbix-web.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"zabbix-web.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"zabbix-web.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"zabbix-web.fullname\" . }}\n  labels:\n    {{- include \"zabbix-web.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"zabbix-web.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"zabbix-web.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"zabbix-web.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          env:\n          - name: ZABBIX_SERVER_HOST\n            value: \"${ZABBIX_SERVER_IP}\"\n          - name: DB_SERVER_HOST\n            value: \"${MYSQL_SERVER_IP}\"\n          - name: MYSQL_DATABASE\n            value: \"${ZABBIX_DB_NAME}\"\n          - name: MYSQL_USER\n            value: \"${ZABBIX_DB_USER}\"\n          - name: MYSQL_PASSWORD\n            value: \"${ZABBIX_DB_PASSWORD}\"\n          - name: MYSQL_ROOT_PASSWORD\n            value: \"${MYSQL_ROOT_PASSWORD}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: {{ .Values.service.port }}\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"zabbix-web.fullname\" . }}\n  labels:\n    {{- include \"zabbix-web.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"zabbix-web.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"zabbix-web.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"zabbix-web.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"zabbix-web.fullname\" . }}\n  labels:\n    {{- include \"zabbix-web.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8080\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"zabbix-web.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"zabbix-web.serviceAccountName\" . }}\n  labels:\n    {{- include \"zabbix-web.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"zabbix-web.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"zabbix-web.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"zabbix-web.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-base/zabbix-web/values.yaml",
    "content": "# Default values for zabbix-web.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/zabbix-web-nginx-mysql\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8006\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/nginx-ingress.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  name: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - pods\n  - secrets\n  - endpoints\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - ingress-controller-leader\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - create\n- apiGroups:\n  - coordination.k8s.io\n  resourceNames:\n  - ingress-controller-leader\n  resources:\n  - leases\n  verbs:\n  - get\n  - update\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - endpoints\n  - nodes\n  - pods\n  - secrets\n  - namespaces\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\nrules:\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - validatingwebhookconfigurations\n  verbs:\n  - get\n  - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  externalTrafficPolicy: Local\n  ipFamilies:\n  - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n  - appProtocol: http\n    name: http\n    port: 80\n    protocol: TCP\n    targetPort: http\n  - appProtocol: https\n    name: https\n    port: 443\n    protocol: TCP\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: LoadBalancer\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n  - appProtocol: https\n    name: https-webhook\n    port: 443\n    targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  minReadySeconds: 0\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx\n      app.kubernetes.io/name: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n    spec:\n      hostNetwork: true\n      containers:\n      - args:\n        - /nginx-ingress-controller\n        - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller\n        - --election-id=ingress-controller-leader\n        - --controller-class=k8s.io/ingress-nginx\n        - --ingress-class=nginx\n        - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n        - --validating-webhook=:8443\n        - --validating-webhook-certificate=/usr/local/certificates/cert\n        - --validating-webhook-key=/usr/local/certificates/key\n        - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services\n        - --udp-services-configmap=$(POD_NAMESPACE)/udp-services\n        env:\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: LD_PRELOAD\n          value: /usr/local/lib/libmimalloc.so\n        image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.3.0\n        imagePullPolicy: IfNotPresent\n        lifecycle:\n          preStop:\n            exec:\n              command:\n              - /wait-shutdown\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        name: controller\n        ports:\n        - containerPort: 80\n          name: http\n          protocol: TCP\n        - containerPort: 443\n          name: https\n          protocol: TCP\n        - containerPort: 8443\n          name: webhook\n          protocol: TCP\n        readinessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        resources:\n          requests:\n            cpu: 100m\n            memory: 90Mi\n        securityContext:\n          allowPrivilegeEscalation: true\n          capabilities:\n            add:\n            - NET_BIND_SERVICE\n            drop:\n            - ALL\n          runAsUser: 101\n        volumeMounts:\n        - mountPath: /usr/local/certificates/\n          name: webhook-cert\n          readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n        edgenode: \"true\"\n      serviceAccountName: ingress-nginx\n      terminationGracePeriodSeconds: 300\n      volumes:\n      - name: webhook-cert\n        secret:\n          secretName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.3.0\n      name: ingress-nginx-admission-create\n    spec:\n      containers:\n      - args:\n        - create\n        - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n        - --namespace=$(POD_NAMESPACE)\n        - --secret-name=ingress-nginx-admission\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.3.0\n        imagePullPolicy: IfNotPresent\n        name: create\n        securityContext:\n          allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.3.0\n      name: ingress-nginx-admission-patch\n    spec:\n      containers:\n      - args:\n        - patch\n        - --webhook-name=ingress-nginx-admission\n        - --namespace=$(POD_NAMESPACE)\n        - --patch-mutating=false\n        - --secret-name=ingress-nginx-admission\n        - --patch-failure-policy=Fail\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.3.0\n        imagePullPolicy: IfNotPresent\n        name: patch\n        securityContext:\n          allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.3.0\n  name: ingress-nginx-admission\nwebhooks:\n- admissionReviewVersions:\n  - v1\n  clientConfig:\n    service:\n      name: ingress-nginx-controller-admission\n      namespace: ingress-nginx\n      path: /networking/v1/ingresses\n  failurePolicy: Fail\n  matchPolicy: Equivalent\n  name: validate.nginx.ingress.kubernetes.io\n  rules:\n  - apiGroups:\n    - networking.k8s.io\n    apiVersions:\n    - v1\n    operations:\n    - CREATE\n    - UPDATE\n    resources:\n    - ingresses\n  sideEffects: None\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-nfs.yaml",
    "content": "---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-logs\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-logs\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-logs\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-logs\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-uploads\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-uploads\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-uploads\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-uploads\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-esb-code\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-esb-code\n    server: LOCAL_IP\n---\n# Source: paas-install/templates/paas-paas-storage.yaml\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-esb-code\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-esb-code\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-grafana-data\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-grafana-data\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-grafana-data\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-grafana-data\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-appengine\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"4.0.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/settings_production.py.appengine",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom controller.settings_default import * # noqa\n\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'OpsAny@2023',\n        'HOST': 'opsany-mysql',\n        'PORT': '3306',\n    }\n}\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-paas-appengine | tail -1 | awk '{print $3}')\n  echo \"Visit http://$SERVICE_IP:8000 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-appengine.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-appengine.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-appengine.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-appengine.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-appengine.chart\" . }}\n{{ include \"opsany-paas-appengine.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-appengine.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-appengine.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-appengine.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-appengine.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-appengine.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-appengine.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-appengine.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-appengine.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-appengine-config\n              mountPath: /opt/opsany/paas/appengine/controller/settings.py\n              subPath: settings.py\n            - name: opsany-paas-appengine-supervisor\n              mountPath: /etc/supervisord.d/appengine.ini\n              subPath: appengine.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: paas-appengine\n              containerPort: 8000\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-appengine-config\n          secret:\n            secretName: opsany-paas-appengine-config\n            items:\n            - key: settings_production.py.appengine\n              path: settings.py\n        - name: opsany-paas-appengine-supervisor\n          secret:\n            secretName: opsany-paas-appengine-supervisor\n            items:\n            - key: appengine.ini\n              path: appengine.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-appengine.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-appengine.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-appengine.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-appengine-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-appengine.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"settings_production.py.appengine\").AsSecrets | indent 2 }} \n\n---\n\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-appengine-supervisor\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    {{- include \"opsany-paas-appengine.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"appengine.ini\").AsSecrets | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-appengine.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-appengine.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8000\n      protocol: TCP\n      name: paas-appengine\n  selector:\n    {{- include \"opsany-paas-appengine.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-appengine.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-appengine.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-appengine.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-appengine/values.yaml",
    "content": "# Default values for opsany-paas-appengine.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-appengine\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8000\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-esb\ndescription: OpsAny PaaS Platform ESB Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"4.0.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/settings_production.py.esb",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nESB生产配置\n\"\"\" # noqa\n\n# Generic Django project settings\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'OpsAny@2023',\n        'HOST': 'opsany-base-mysql',\n        'PORT': '3306',\n    }\n}\n\n\n# Log settings\nLOG_LEVEL = 'INFO'\n\n# esb app_token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n\n# Third party system host\n\n# paas host\nPAAS_HOST = 'http://opsany-paas-paas:8001'\n\n# Third party system host\n# host for bk login\nHOST_BK_LOGIN = 'http://opsany-paas-login:8003'\n\n# host for cc\nHOST_CC = ''\n\n# host for cc v3\nHOST_CC_V3 = ''\n\n# host for fta\nHOST_FTA = ''\n\n# Redis config\nUSE_SENTINEL = False\nREDIS_HOST = 'opsany-redis'\nREDIS_PORT = 6379\nREDIS_PASSWORD = 'OpsAny2023'\nREDIS_MASTER_NAME = ''\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-paas-esb)\n  echo \"Visit http://127.0.0.1:8002 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-esb.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-esb.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-esb.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-esb.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-esb.chart\" . }}\n{{ include \"opsany-paas-esb.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-esb.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-esb.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-esb.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-esb.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-esb.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-esb.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-esb.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-esb.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-esb-conf\n              mountPath: /opt/opsany/paas/esb/configs/default.py\n              subPath: default.py\n            - name: opsany-paas-esb-supervisor\n              mountPath: /etc/supervisord.d/esb.ini\n              subPath: esb.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-paas-esb-code\n              mountPath: /opt/opsany/paas/esb/components/generic/apis/\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: paas-esb\n              containerPort: 8002\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-esb-conf\n          secret:\n            secretName: opsany-paas-esb-conf\n            items:\n            - key: settings_production.py.esb\n              path: default.py\n        - name: opsany-paas-esb-supervisor\n          secret:\n            secretName: opsany-paas-esb-supervisor\n            items:\n            - key: esb.ini\n              path: esb.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: opsany-paas-esb-code\n          persistentVolumeClaim:\n            claimName: opsany-paas-esb-code\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-esb.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-esb.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-esb.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-esb-conf\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-esb.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"settings_production.py.esb\").AsSecrets | indent 2 }} \n\n---\n\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-esb-supervisor\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    {{- include \"opsany-paas-esb.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"esb.ini\").AsSecrets | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-esb.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-esb.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8002\n      protocol: TCP\n      name: paas-esb\n  selector:\n    {{- include \"opsany-paas-esb.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-esb.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-esb.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-esb.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-esb/values.yaml",
    "content": "# Default values for opsany-paas-esb.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-esb\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8002\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-grafana\ndescription: OpsAny PaaS Platform Grafana Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"9.0.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"opsany-paas-grafana.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"opsany-paas-grafana.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas-grafana.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"opsany-paas-grafana.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-grafana.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-grafana.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-grafana.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-grafana.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-grafana.chart\" . }}\n{{ include \"opsany-paas-grafana.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-grafana.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-grafana.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-grafana.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-grafana.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/configmap.yaml",
    "content": "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-grafana-config\ndata:\n{{ (.Files.Glob \"grafana.ini\").AsConfig | indent 2 }}\n\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-grafana-key\ndata:\n{{ (.Files.Glob \"grafana.key\").AsConfig | indent 2 }}\n\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-grafana-pem\ndata:\n{{ (.Files.Glob \"grafana.pem\").AsConfig | indent 2 }}\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-grafana.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-grafana.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-grafana.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-grafana.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-grafana-config\n              mountPath: /etc/grafana/grafana.ini\n              subPath: grafana.ini\n            - name: opsany-paas-grafana-key\n              mountPath: /etc/grafana/grafana.key\n              subPath: grafana.key\n            - name: opsany-paas-grafana-pem\n              mountPath: /etc/grafana/grafana.pem\n              subPath: grafana.pem\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-paas-grafana-data\n              mountPath: /var/lib/grafana\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: grafana\n              containerPort: 3000\n              protocol: TCP\n              #  livenessProbe:\n              #httpGet:\n              #path: /healthz/\n              #port: 8001\n              #readinessProbe:\n              # httpGet:\n              #path: /healthz/\n              #port: 8001\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-grafana-config\n          configMap:\n            name: opsany-paas-grafana-config\n            items:\n            - key: grafana.ini\n              path: grafana.ini\n        - name: opsany-paas-grafana-key\n          configMap:\n            name: opsany-paas-grafana-key\n            items:\n            - key: grafana.key\n              path: grafana.key\n        - name: opsany-paas-grafana-pem\n          configMap:\n            name: opsany-paas-grafana-pem\n            items:\n            - key: grafana.pem\n              path: grafana.pem\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: opsany-paas-grafana-data\n          persistentVolumeClaim:\n            claimName: opsany-paas-grafana-data\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-grafana.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-grafana.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-grafana.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-grafana.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-grafana.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 3000\n      protocol: TCP\n      name: grafana\n  selector:\n    {{- include \"opsany-paas-grafana.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-grafana.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-grafana.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-grafana.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-grafana/values.yaml",
    "content": "# Default values for opsany-paas-grafana.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-grafana\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8007\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-guacd\ndescription:  OpsAny PaaS Platform RDP Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.5.0\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas-guacd.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-guacd.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-guacd.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-guacd.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-guacd.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-guacd.chart\" . }}\n{{ include \"opsany-paas-guacd.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-guacd.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-guacd.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-guacd.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-guacd.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-guacd.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-guacd.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-guacd.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-guacd.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-uploads\n              mountPath: /srv/guacamole\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: gucad\n              containerPort: 4822\n              protocol: TCP\n              #          livenessProbe:\n              # httpGet:\n              #path: /\n              #port: http\n              #readinessProbe:\n              #httpGet:\n              #path: /\n              #port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-guacd.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-guacd.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-guacd.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-guacd.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-guacd.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 4822\n      protocol: TCP\n      name: guacd\n  selector:\n    {{- include \"opsany-paas-guacd.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-guacd.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-guacd.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-guacd.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-guacd/values.yaml",
    "content": "# Default values for opsany-paas-guacd.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/guacd\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"1.2.0\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 4822\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-login\ndescription: OpsAny PaaS Platform Login Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"4.0.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/settings_production.py.login",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n生产环境配置\n\"\"\" # noqa\n\nDEBUG = False\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 生产环境, 使用nginx反向代理 /login/static/\nSITE_URL = \"/login/\"\n\nSTATIC_URL = \"/static/\"\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',   # 默认用mysql\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'OpsAny@2023',\n        'HOST': 'opsany-base-mysql',\n        'PORT': '3306',\n    }\n}\n\n# 初始化用户名、密码\nUSERNAME = 'admin'\nPASSWORD = 'admin'\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = 'opsany-paas-openresty'\nHTTP_SCHEMA = 'https'\n\n\n# cookie访问域\nBK_COOKIE_DOMAIN = 'test.opsany.cn'\n\nSECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\nRBAC_APP_SECRET = \"f4f0d4ba-d049-40b2-908c-54d42bbc8e93\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc -n opsany)\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  echo \"Visit http://127.0.0.1:8003 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-login.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-login.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-login.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-login.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-login.chart\" . }}\n{{ include \"opsany-paas-login.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-login.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-login.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-login.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-login.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-login.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-login.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-login.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-login.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-login-config\n              mountPath: /opt/opsany/paas/login/conf/settings_production.py\n              subPath: settings_production.py\n            - name: opsany-paas-login-supervisor\n              mountPath: /etc/supervisord.d/login.ini\n              subPath: login.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: paas-login\n              containerPort: 8003\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-login-config\n          secret:\n            secretName: opsany-paas-login-config\n            items:\n            - key: settings_production.py.login\n              path: settings_production.py\n        - name: opsany-paas-login-supervisor\n          secret:\n            secretName: opsany-paas-login-supervisor\n            items:\n            - key: login.ini\n              path: login.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-login.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-login.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-login.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-login-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-login.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"settings_production.py.login\").AsSecrets | indent 2 }} \n\n---\n\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-login-supervisor\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    {{- include \"opsany-paas-login.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"login.ini\").AsSecrets | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-login.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-login.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8003\n      protocol: TCP\n      name: paas-login\n  selector:\n    {{- include \"opsany-paas-login.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-login.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-login.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-login.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-login/values.yaml",
    "content": "# Default values for opsany-paas-login.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-login\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8003\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-mcp-server\ndescription: OpsAny MCP Server\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc -n opsany)\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  echo \"Visit http://127.0.0.1:8020 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-mcp-server.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-mcp-server.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-mcp-server.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-mcp-server.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-mcp-server.chart\" . }}\n{{ include \"opsany-paas-mcp-server.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-mcp-server.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-mcp-server.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-mcp-server.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-mcp-server.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-mcp-server.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-mcp-server.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-mcp-server.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-mcp-server.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-mcp-server-config\n              mountPath: /opt/opsany/opsany-mcp-server/config/config.yaml\n              subPath: config.yaml\n            - name: opsany-paas-mcp-server-supervisor\n              mountPath: /etc/supervisord.d/mcp.ini\n              subPath: mcp.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: paas-mcp-server\n              containerPort: 8020\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-mcp-server-config\n          secret:\n            secretName: opsany-paas-mcp-server-config\n            items:\n            - key: config.yaml\n              path: config.yaml\n        - name: opsany-paas-mcp-server-supervisor\n          secret:\n            secretName: opsany-paas-mcp-server-supervisor\n            items:\n            - key: mcp.ini\n              path: mcp.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-mcp-server.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-mcp-server.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-mcp-server.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-mcp-server-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-mcp-server.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"config.yaml\").AsSecrets | indent 2 }} \n\n---\n\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-mcp-server-supervisor\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    {{- include \"opsany-paas-mcp-server.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"mcp.ini\").AsSecrets | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-mcp-server.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-mcp-server.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8020\n      protocol: TCP\n      name: paas-login\n  selector:\n    {{- include \"opsany-paas-mcp-server.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-mcp-server.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-mcp-server.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-mcp-server.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-mcp-server/values.yaml",
    "content": "# Default values for opsany-paas-mcp-server.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-mcp-server\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8020\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-openresty\ndescription: OpsAny PaaS Platform Web Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.17.8.2-alpine\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/nginx.conf",
    "content": "# For more information on configuration, see:\n#   * Official English Documentation: http://nginx.org/en/docs/\n#   * Official Russian Documentation: http://nginx.org/ru/docs/\n\nuser root;\nworker_processes auto;\nerror_log /opt/opsany/logs/openresty_error.log;\npid /run/nginx.pid;\n\n# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.\ninclude /etc/nginx/conf.d/*.conf;\n\nevents {\n    worker_connections 1024;\n}\n\nhttp {\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  /opt/opsany/logs/openresty_access.log  main;\n\n    sendfile            on;\n    tcp_nopush          on;\n    tcp_nodelay         on;\n    keepalive_timeout   65;\n    types_hash_max_size 2048;\n    client_max_body_size 2G;\n    server_names_hash_bucket_size 256;\n    underscores_in_headers on;\n\n    include             /etc/nginx/mime.types;\n    default_type        application/octet-stream;\n\n    # Load modular configuration files from the /etc/nginx/conf.d directory.\n    # See http://nginx.org/en/docs/ngx_core_module.html#include\n    # for more information.\n    include /etc/nginx/conf.d/*.conf;\n\n    server {\n        listen       80 default_server;\n        listen       [::]:80 default_server;\n        server_name  _;\n        root         /usr/share/nginx/html;\n\n        # Load configuration files for the default server block.\n        include /etc/nginx/conf.d/*.conf;\n\n        location / {\n        }\n\n        error_page 404 /404.html;\n            location = /40x.html {\n        }\n\n        error_page 500 502 503 504 /50x.html;\n            location = /50x.html {\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/.gitkeep",
    "content": ""
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/test.opsany.cn.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAuijNwCPQ6WHNQZvjgOOIHMOzD94GtS3IGYV8n9YfqBv7h+xq\nutxgLF9Z+BRT84NE4Rk87vKH+cX+5A6qNlBnD64zKNbIzbJT0WZX8f1E4mS+PJxf\nqoLRmIx7qT5mqYoBEoxBu+xuEWmw1NvJj+W+KAKUfaRjoUxn4n/UkDLpks5KsYpB\nIl4moBqeZtPVExznV7fC+xN5apdwvjlEC2ykpvMsNQhyi9ln5XmmLK3fkmm/uQw+\nLtaxKFJKl9oEf9/xbPfp0cI2iEGyTWzudCmUpD98wpogBt+IJ2fLbqGxDgazxqjB\nr2IjqtfdKZf22SkRJFLf4flhUcFZY+Gzi3USgQIDAQABAoIBAG5whp/Wn7nVK9Ag\ni3eLhNSLxU9EiPYzkuKRLr4kaeNxtmeM+kShOO0aJGXoqWVuGw7vyhZ4C/NCY1Uo\n3hIa4QmMbw1rXvWpNdCkxsfpWVR2L+YFXzvpIC9AKJzfSEiMdtZqHxU9zo7GBQJC\n4fFcetOBtFZVkEXA7mCRNanWintspAWigc06Sxz9XdJET3RKNsqEhr6sLkhvbmUv\nBO6wBf5L7XIc1oq9zAPp1rxARtwXnZlDAbVvFfMaLEXmMjftT3OZHH4hnFj1L+YL\nvDizsjSV0jPYpKe4nFzKJXgKAD5yv19qsrcwkmp+66GdqMIVlmHxxU7brv2dfLV3\n0VwV1YECgYEA4Dzr4pvoBb+mtMS5pLf7Z7aM2eGq5Fyn6H/+iVp9GzYZyFnQZGnN\n8IRWp6cNzWEiuo2ZjNNEFIzuzJSAel6+Dn/+AIaLZqsH7Makc4t7S0SIGeRxtW51\ndf5vDTLDCnhlFAENu6m7lCKXkj39PC5Q1+pTV1DhwoMXT7He9EL8b6sCgYEA1Ice\nARTridzQp5TQbsWTagBvRjUYpEy9PEFoLHvpgElUkm8P9x3oVyGSfVKx9cWetne3\nn+tetGbRe0YFGdbCLiOzpHPkQQuswVgJXFQIZOvHWswtT9WJBFLbptTyS+2UJ1fD\nx6R/GLrqZGlUtWbMr0YqQfpvfwkoEtdhTm2ByoMCgYEAmX2aCZemjqjNN9ehK3s0\nf52ZdFrgW0iBNsjGNsbV9BZoN5gi6VjzOrubhU74R6lB2GisvpSueVKu8yKDfz/y\n4IIEH9/48+IGnrCqSN0lHDRg5ThWDVb62DW9Vk906mnW5oaCG/7nA1NaZSRBfzxE\n4kbnnVEj970767VZY+GmYdkCgYAW7VShTT5zquyfh4BM0ueqQc2/Ry8XWmf3vh6c\n3ek8u6xx96VDRWixLZ/+ARPNrboHeTbH+75Fu+nRYKZgOTjNfXB9xzrSgY3rdbHc\n0fvt1zm0Y95nhGO5oa6sesCAzGp1LBSkzuwfINr0ZiCLSUG/jtQ0Ne4dSEGYdr+6\nlDmyPQKBgAChYA6kea/hnO//2gbNqgxvWK6U/pmTfCSo/nBf0sbpJUQPL8Ccsu3V\n8h2JTuQwcdbMWgtcmYCkrnXpDeK8H9JjNnal13+O8tjiLwSTU+8xOFRcODCbOx3R\n90dJyO9AdH5fx5MvgpGciWqBYPtmqFCmwiYdOzqf0dAgsSJuKzqF\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/ssl/test.opsany.cn.pem",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAuijNwCPQ6WHNQZvjgOOIHMOzD94GtS3IGYV8n9YfqBv7h+xq\nutxgLF9Z+BRT84NE4Rk87vKH+cX+5A6qNlBnD64zKNbIzbJT0WZX8f1E4mS+PJxf\nqoLRmIx7qT5mqYoBEoxBu+xuEWmw1NvJj+W+KAKUfaRjoUxn4n/UkDLpks5KsYpB\nIl4moBqeZtPVExznV7fC+xN5apdwvjlEC2ykpvMsNQhyi9ln5XmmLK3fkmm/uQw+\nLtaxKFJKl9oEf9/xbPfp0cI2iEGyTWzudCmUpD98wpogBt+IJ2fLbqGxDgazxqjB\nr2IjqtfdKZf22SkRJFLf4flhUcFZY+Gzi3USgQIDAQABAoIBAG5whp/Wn7nVK9Ag\ni3eLhNSLxU9EiPYzkuKRLr4kaeNxtmeM+kShOO0aJGXoqWVuGw7vyhZ4C/NCY1Uo\n3hIa4QmMbw1rXvWpNdCkxsfpWVR2L+YFXzvpIC9AKJzfSEiMdtZqHxU9zo7GBQJC\n4fFcetOBtFZVkEXA7mCRNanWintspAWigc06Sxz9XdJET3RKNsqEhr6sLkhvbmUv\nBO6wBf5L7XIc1oq9zAPp1rxARtwXnZlDAbVvFfMaLEXmMjftT3OZHH4hnFj1L+YL\nvDizsjSV0jPYpKe4nFzKJXgKAD5yv19qsrcwkmp+66GdqMIVlmHxxU7brv2dfLV3\n0VwV1YECgYEA4Dzr4pvoBb+mtMS5pLf7Z7aM2eGq5Fyn6H/+iVp9GzYZyFnQZGnN\n8IRWp6cNzWEiuo2ZjNNEFIzuzJSAel6+Dn/+AIaLZqsH7Makc4t7S0SIGeRxtW51\ndf5vDTLDCnhlFAENu6m7lCKXkj39PC5Q1+pTV1DhwoMXT7He9EL8b6sCgYEA1Ice\nARTridzQp5TQbsWTagBvRjUYpEy9PEFoLHvpgElUkm8P9x3oVyGSfVKx9cWetne3\nn+tetGbRe0YFGdbCLiOzpHPkQQuswVgJXFQIZOvHWswtT9WJBFLbptTyS+2UJ1fD\nx6R/GLrqZGlUtWbMr0YqQfpvfwkoEtdhTm2ByoMCgYEAmX2aCZemjqjNN9ehK3s0\nf52ZdFrgW0iBNsjGNsbV9BZoN5gi6VjzOrubhU74R6lB2GisvpSueVKu8yKDfz/y\n4IIEH9/48+IGnrCqSN0lHDRg5ThWDVb62DW9Vk906mnW5oaCG/7nA1NaZSRBfzxE\n4kbnnVEj970767VZY+GmYdkCgYAW7VShTT5zquyfh4BM0ueqQc2/Ry8XWmf3vh6c\n3ek8u6xx96VDRWixLZ/+ARPNrboHeTbH+75Fu+nRYKZgOTjNfXB9xzrSgY3rdbHc\n0fvt1zm0Y95nhGO5oa6sesCAzGp1LBSkzuwfINr0ZiCLSUG/jtQ0Ne4dSEGYdr+6\nlDmyPQKBgAChYA6kea/hnO//2gbNqgxvWK6U/pmTfCSo/nBf0sbpJUQPL8Ccsu3V\n8h2JTuQwcdbMWgtcmYCkrnXpDeK8H9JjNnal13+O8tjiLwSTU+8xOFRcODCbOx3R\n90dJyO9AdH5fx5MvgpGciWqBYPtmqFCmwiYdOzqf0dAgsSJuKzqF\n-----END RSA PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDkDCCAnigAwIBAgIUEtgyV8aJlV71lq4jLJrdVUhvuBUwDQYJKoZIhvcNAQEL\nBQAwZTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0Jl\naUppbmcxEDAOBgNVBAoMB0JlaUppbmcxDzANBgNVBAsMBk9wc0FueTEPMA0GA1UE\nAwwGT3BzQW55MB4XDTIzMDMwNjA0MTExOVoXDTMzMDMwMzA0MTExOVowZTELMAkG\nA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcxEDAO\nBgNVBAoMB0JlaUppbmcxDzANBgNVBAsMBk9wc0FueTEPMA0GA1UEAwwGT3BzQW55\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuijNwCPQ6WHNQZvjgOOI\nHMOzD94GtS3IGYV8n9YfqBv7h+xqutxgLF9Z+BRT84NE4Rk87vKH+cX+5A6qNlBn\nD64zKNbIzbJT0WZX8f1E4mS+PJxfqoLRmIx7qT5mqYoBEoxBu+xuEWmw1NvJj+W+\nKAKUfaRjoUxn4n/UkDLpks5KsYpBIl4moBqeZtPVExznV7fC+xN5apdwvjlEC2yk\npvMsNQhyi9ln5XmmLK3fkmm/uQw+LtaxKFJKl9oEf9/xbPfp0cI2iEGyTWzudCmU\npD98wpogBt+IJ2fLbqGxDgazxqjBr2IjqtfdKZf22SkRJFLf4flhUcFZY+Gzi3US\ngQIDAQABozgwNjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwID6DAWBgNVHSUB\nAf8EDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAmSn30SKQwOrdxSkv\nV1qRTS+weqP7uiqIJPoDkm0KBYCa0MHDQ7DSoJKRiH5KUAxcW3/V04VoZJooVF8t\njpEgzHoeaw72PIi7oGM6zQ/VOvjTbXy5wHvLSP6ExL7WIMrfKYiLxZtI9blz6yy9\n/KIzj4BhjWxNgiQBL0etL9HHm2oStYvUKzl0GcK9LEakYKO+n7QzNhf5IuV4vHi/\ncY2X5Vlj5sRsoi1ec24NwHB3Mq8U+XB9USeFK+2ffdQ6yKkSp1vk+wrZySeULjkg\n/GKHkD9d/CQfI6VN7zP9mo7ujTAJa2T1FB8pI7+e5RSnDrzy0c91TbYqjJ7NPtDo\nXTd8XA==\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas-openresty.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-openresty.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-openresty.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-openresty.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-openresty.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-openresty.chart\" . }}\n{{ include \"opsany-paas-openresty.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-openresty.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-openresty.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-openresty.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-openresty.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/configmap.yaml",
    "content": "---\n# nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-openresty-nginx\ndata:\n{{ (.Files.Glob \"nginx.conf\").AsConfig | indent 2 }}\n\n---\n# nginx_paas.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-openresty-paas\ndata:\n{{ (.Files.Glob \"opsany_paas.conf\").AsConfig | indent 2 }}\n\n---\n# nginx_proxy.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-openresty-proxy\ndata:\n{{ (.Files.Glob \"opsany_proxy.conf\").AsConfig | indent 2 }}\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-openresty.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-openresty.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-openresty.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-openresty-nginx\n              mountPath: /etc/nginx/nginx.conf\n              subPath: nginx.conf\n            - name: opsany-paas-openresty-paas\n              mountPath: /etc/nginx/conf.d/opsany_paas.conf\n              subPath: opsany_paas.conf\n              #- name: opsany-paas-openresty-proxy\n              #mountPath: /etc/nginx/conf.d/nginx_proxy.conf\n              #subPath: nginx_proxy.conf\n            - name: opsany-paas-openresty-ssl\n              mountPath: /etc/nginx/conf.d/ssl\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n              #          livenessProbe:\n              # httpGet:\n              #path: /\n              #port: http\n              #readinessProbe:\n              #httpGet:\n              #path: /\n              #port: http\n            - name: https\n              containerPort: 443\n              protocol: TCP\n            - name: proxy-https\n              containerPort: 8011\n              protocol: TCP\n            - name: proxy-http\n              containerPort: 8012\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-openresty-nginx\n          configMap:\n            name: opsany-paas-openresty-nginx\n            items:\n            - key: nginx.conf\n              path: nginx.conf\n        - name: opsany-paas-openresty-paas\n          configMap:\n            name: opsany-paas-openresty-paas\n            items:\n            - key: opsany_paas.conf\n              path: opsany_paas.conf\n        - name: opsany-paas-openresty-proxy\n          configMap:\n            name: opsany-paas-openresty-proxy\n            items:\n            - key: opsany_proxy.conf\n              path: opsany_proxy.conf\n        - name: opsany-paas-openresty-ssl\n          secret:\n            secretName: opsany-paas-openresty-ssl\n            items:\n            - key: DOMAIN_NAME.pem\n              path: DOMAIN_NAME.pem\n            - key: DOMAIN_NAME.key\n              path: DOMAIN_NAME.key\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-openresty.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-openresty.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"opsany-paas-openresty.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              #servicePort: {{ $svcPort }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/secret.yaml",
    "content": "# ssl\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-ingress-tls\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n  tls.crt:\n    {{ .Files.Get \"ssl/DOMAIN_NAME.pem\" | b64enc }}\n  tls.key:\n    {{ .Files.Get \"ssl/DOMAIN_NAME.key\" | b64enc }}\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-openresty-ssl\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"ssl/*\").AsSecrets | indent 2 }} \n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-openresty.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: 80\n      targetPort: 80\n      protocol: TCP\n      name: http\n    - port: 443\n      targetPort: 443\n      protocol: TCP\n      name: https\n    - port: 8011\n      targetPort: 8011\n      protocol: TCP\n      name: proxy-https\n    - port: 8012\n      targetPort: 8012\n      protocol: TCP\n      name: proxy-http\n  selector:\n    {{- include \"opsany-paas-openresty.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-openresty.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-openresty.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-openresty.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-openresty/values.yaml",
    "content": "# Default values for opsany-paas-openresty.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/openresty\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: NodePort\n  port: 443\n\ningress:\n  enabled: true\n  className: \"nginx\"\n  annotations: \n    nginx.ingress.kubernetes.io/backend-protocol: \"HTTPS\"\n    nginx.ingress.kubernetes.io/ssl-redirect: \"true\"\n    nginx.ingress.kubernetes.io/ssl-passthrough: \"true\"\n    #kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: DOMAIN_NAME\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: \n    - hosts:\n      - test.opsany.cn\n    - secretName: opsany-paas-ingress-tls\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-paas\ndescription: OpsAny PaaS Platform paas Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"4.0.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/settings_production.py.paas",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n生产环境配置\n\"\"\" # noqa\n\n\nDEBUG = False\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'OpsAny@2023',\n        'HOST': 'opsany-base-mysql',\n        'PORT': '3306',\n    }\n}\n\n# domain\nPAAS_DOMAIN = 'test.opsany.cn'\n# 注意生产环境使用nginx反向代理不需要配置LOGIN_DOMAIN变量(删除即可)\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = 'opsany-paas-openresty'\nHTTP_SCHEMA = 'https'\n\n\n# cookie 名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie有效期\nBK_COOKIE_AGE = 60 * 60 * 24\n# cookie访问域\nBK_COOKIE_DOMAIN = 'test.opsany.cn'\n\n# 控制台地址\nENGINE_HOST = \"http://opsany-paas-appengine:8000\"\n\n# 登陆服务地址\nLOGIN_HOST = \"http://opsany-paas-login:8003\"\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-paas-esb | tail -1 | awk '{print $3}')\n  echo \"Visit http://$SERVICE_IP:8001 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-paas.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-paas.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-paas.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-paas.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-paas.chart\" . }}\n{{ include \"opsany-paas-paas.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-paas.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-paas.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-paas.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-paas.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-paas.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-paas.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-paas.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-paas.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-paas-config\n              mountPath: /opt/opsany/paas/paas/conf/settings_production.py\n              subPath: settings_production.py\n            - name: opsany-paas-paas-supervisor\n              mountPath: /etc/supervisord.d/paas.ini\n              subPath: paas.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: paas-paas\n              containerPort: 8001\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-paas-config\n          secret:\n            secretName: opsany-paas-paas-config\n            items:\n            - key: settings_production.py.paas\n              path: settings_production.py\n        - name: opsany-paas-paas-supervisor\n          secret:\n            secretName: opsany-paas-paas-supervisor\n            items:\n            - key: paas.ini\n              path: paas.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-paas.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-paas.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-paas.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-paas-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-paas.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"settings_production.py.paas\").AsSecrets | indent 2 }} \n\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-paas-supervisor\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-paas.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"paas.ini\").AsSecrets | indent 2 }} \n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-paas.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-paas.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8001\n      protocol: TCP\n      name: paas-paas\n  selector:\n    {{- include \"opsany-paas-paas.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-paas.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-paas.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-paas.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paas/values.yaml",
    "content": "# Default values for opsany-paas-paas.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-paas\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8001\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-paasagent\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"opsany-paas-paasagent.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"opsany-paas-paasagent.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas-paasagent.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"opsany-paas-paasagent.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-paasagent.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-paasagent.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-paasagent.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-paasagent.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-paasagent.chart\" . }}\n{{ include \"opsany-paas-paasagent.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-paasagent.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-paasagent.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-paasagent.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-paasagent.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-paasagent.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-paasagent.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-paasagent.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-paasagent.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"opsany-paas-paasagent.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /\n              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-paasagent.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-paasagent.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-paasagent.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"opsany-paas-paasagent.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"opsany-paas-paasagent.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-paasagent.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-paasagent.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-paas-paasagent.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"opsany-paas-paasagent.serviceAccountName\" . }}\n  labels:\n    {{- include \"opsany-paas-paasagent.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-paasagent.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-paasagent.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-paasagent.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-paasagent/values.yaml",
    "content": "# Default values for opsany-paas-paasagent.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: nginx\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 80\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-proxy\ndescription: OpsAny PaaS Platform Proxy Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.0.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas-proxy.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-proxy.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-proxy.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-proxy.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-proxy.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-proxy.chart\" . }}\n{{ include \"opsany-paas-proxy.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-proxy.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-proxy.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-proxy.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-proxy.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-proxy.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-proxy.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-proxy.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      hostNetwork: true\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          volumeMounts:\n            - name: opsany-paas-proxy-config\n              mountPath: /opt/opsany-proxy/config/prod.py\n              subPath: prod.py\n            - name: opsany-paas-proxy-invscript\n              mountPath: /opt/opsany-proxy/invscript_proxy.py\n              subPath: invscript_proxy.py\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n            - name: opsany-paas-proxy-salt-certs\n              mountPath: /etc/pki/tls/certs\n            - name: opsany-paas-proxy-salt-etc\n              mountPath: /etc/salt/\n            - name: opsany-paas-proxy-salt-cache\n              mountPath: /var/cache/salt\n            - name: opsany-paas-proxy-salt-srv\n              mountPath: /srv/salt\n            - name: opsany-paas-proxy-salt-pillar\n              mountPath: /srv/pillar\n            - name: opsany-paas-proxy-ansible-playbook\n              mountPath: /srv/playbook\n            - name: opsany-paas-proxy-ansible-pki\n              mountPath: /opt/opsany/pki\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: paas-proxy\n              containerPort: 8010\n              protocol: TCP\n            - name: paas-salt-pub\n              containerPort: 4505\n              protocol: TCP\n            - name: paas-salt-sub\n              containerPort: 4506\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-proxy-config\n          secret:\n            secretName: opsany-paas-proxy-config\n            items:\n            - key: settings_production.py.proxy\n              path: prod.py\n        - name: opsany-paas-proxy-invscript\n          secret:\n            secretName: opsany-paas-proxy-invscript\n            defaultMode: 0777\n            items:\n            - key: invscript_proxy.py\n              path: invscript_proxy.py\n        - name: proxy-ini\n          secret:\n            secretName: proxy-ini\n            items:\n            - key: proxy.ini\n              path: proxy.ini\n        - name: saltapi-ini\n          secret:\n            secretName: saltapi-ini\n            items:\n            - key: saltapi.ini\n              path: saltapi.ini\n        - name: saltmaster-ini\n          secret:\n            secretName: saltmaster-ini\n            items:\n            - key: saltmaster.ini\n              path: saltmaster.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-paas-proxy-salt-certs\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-salt-certs\n        - name: opsany-paas-proxy-salt-etc\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-salt-etc\n        - name: opsany-paas-proxy-salt-cache\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-salt-cache\n        - name: opsany-paas-proxy-salt-srv\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-salt-srv\n        - name: opsany-paas-proxy-salt-pillar\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-salt-pillar\n        - name: opsany-paas-proxy-ansible-playbook\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-ansible-playbook\n        - name: opsany-paas-proxy-ansible-pki\n          persistentVolumeClaim:\n            claimName: opsany-paas-proxy-ansible-pki\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-proxy.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-proxy.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"opsany-proxy.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"opsany-proxy.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-proxy-config\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"settings_production.py.proxy\").AsSecrets | indent 2 }} \n\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: opsany-paas-proxy-invscript\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"invscript_proxy.py\").AsSecrets | indent 2 }} \n\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: proxy-ini\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"proxy.ini\").AsSecrets | indent 2 }} \n\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: saltapi-ini\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"saltapi.ini\").AsSecrets | indent 2 }} \n\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: saltmaster-ini\n  namespace: {{ .Release.Namespace | quote }}\n  labels: \n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{ (.Files.Glob \"saltmaster.ini\").AsSecrets | indent 2 }} \n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-proxy.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: 8010\n      targetPort: 8010\n      protocol: TCP\n      name: paas-proxy\n  selector:\n    {{- include \"opsany-paas-proxy.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"opsany-proxy.serviceAccountName\" . }}\n  labels:\n    {{- include \"opsany-proxy.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/storage.yaml",
    "content": "---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-salt-certs\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/salt-certs\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-salt-certs\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-salt-certs\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-salt-etc\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/salt-etc\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-salt-etc\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-salt-etc\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-salt-cache\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/salt-cache\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-salt-cache\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-salt-cache\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-salt-srv\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/salt-srv\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-salt-srv\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-salt-srv\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-salt-pillar\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/salt-pillar\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-salt-pillar\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-salt-pillar\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-ansible-pki\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/ansible-pki\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-ansible-pki\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-ansible-pki\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: opsany-paas-proxy-ansible-playbook\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n    - ReadWriteMany\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: \"\"\n  mountOptions:\n    - vers=3\n    - nolock\n  nfs:\n    path: /data/k8s-nfs/opsany-proxy/ansible-playbook\n    server: LOCAL_IP\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: opsany-paas-proxy-ansible-playbook\nspec:\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: \"\"\n  volumeMode: Filesystem\n  volumeName: opsany-paas-proxy-ansible-playbook\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-proxy.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-proxy.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-proxy.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-proxy/values.yaml",
    "content": "# Default values for opsany-paas-proxy.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-proxy\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8011\n\nvolume:\n  path: /data/k8s-nfs/opsany-proxy\n  server: 10.60.37.218\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-paas-websocket\ndescription: OpsAny PaaS Platform WebSocket Service\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 4.0.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"4.0.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas-websocket.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas-websocket.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas-websocket.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas-websocket.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas-websocket.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas-websocket.chart\" . }}\n{{ include \"opsany-paas-websocket.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas-websocket.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas-websocket.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas-websocket.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas-websocket.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/configmap.yaml",
    "content": "---\n# websocket-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-websocket-init\ndata:\n{{ (.Files.Glob \"settings_production.py.websocket.init\").AsConfig | indent 2 }}\n\n---\n# websocket-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-websocket-config\ndata:\n{{ (.Files.Glob \"settings_production.py.websocket\").AsConfig | indent 2 }}\n\n---\n# websocket.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-paas-websocket-supervisor\ndata:\n{{ (.Files.Glob \"websocket.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas-websocket.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-websocket.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas-websocket.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas-websocket.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n            - name: opsany-paas-websocket-config\n              mountPath: /opt/opsany/websocket/config/prod.py\n              subPath: prod.py\n            - name: opsany-paas-websocket-init\n              mountPath: /opt/opsany/websocket/config/__init__.py\n              subPath: __init__.py\n            - name: opsany-paas-websocket-supervisor\n              mountPath: /etc/supervisord.d/websocket.ini\n              subPath: websocket.ini\n            - name: localtime\n              mountPath: /etc/localtime\n              readOnly: true\n          ports:\n            - name: websocket\n              containerPort: 8004\n              protocol: TCP\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-paas-websocket-config\n          configMap:\n            name: opsany-paas-websocket-config\n            items:\n            - key: settings_production.py.websocket\n              path: prod.py\n        - name: opsany-paas-websocket-init\n          configMap:\n            name: opsany-paas-websocket-init\n            items:\n            - key: settings_production.py.websocket.init\n              path: __init__.py\n        - name: opsany-paas-websocket-supervisor\n          configMap:\n            name: opsany-paas-websocket-supervisor\n            items:\n            - key: websocket.ini\n              path: websocket.ini\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: localtime\n          hostPath:\n            path: /etc/localtime\n            type: File\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas-websocket.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-websocket.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas-websocket.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"opsany-paas-websocket.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"opsany-paas-websocket.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas-websocket.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas-websocket.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 8004\n      protocol: TCP\n      name: websocket\n  selector:\n    {{- include \"opsany-paas-websocket.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas-websocket.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas-websocket.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas-websocket.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/opsany-paas-websocket/values.yaml",
    "content": "# Default values for opsany-paas-websocket.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-paas-websocket\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 8004\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"opsany-paas.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"opsany-paas.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"opsany-paas.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"opsany-paas.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-paas.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-paas.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-paas.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-paas.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-paas.chart\" . }}\n{{ include \"opsany-paas.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-paas.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-paas.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-paas.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-paas.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-paas.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-paas.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-paas.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"opsany-paas.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /\n              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-paas.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-paas.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"opsany-paas.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if and .Values.ingress.className (not (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion)) }}\n  {{- if not (hasKey .Values.ingress.annotations \"kubernetes.io/ingress.class\") }}\n  {{- $_ := set .Values.ingress.annotations \"kubernetes.io/ingress.class\" .Values.ingress.className}}\n  {{- end }}\n{{- end }}\n{{- if semverCompare \">=1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1\n{{- else if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"opsany-paas.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and .Values.ingress.className (semverCompare \">=1.18-0\" .Capabilities.KubeVersion.GitVersion) }}\n  ingressClassName: {{ .Values.ingress.className }}\n  {{- end }}\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            {{- if and .pathType (semverCompare \">=1.18-0\" $.Capabilities.KubeVersion.GitVersion) }}\n            pathType: {{ .pathType }}\n            {{- end }}\n            backend:\n              {{- if semverCompare \">=1.19-0\" $.Capabilities.KubeVersion.GitVersion }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $svcPort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n              {{- end }}\n          {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-paas.fullname\" . }}\n  labels:\n    {{- include \"opsany-paas.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-paas.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"opsany-paas.serviceAccountName\" . }}\n  labels:\n    {{- include \"opsany-paas.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-paas/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-paas.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-paas.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-paas.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-bastion\ndescription: OpsAny bastion Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/NOTES.txt",
    "content": "# Get the OpsAny bastion URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-bastion -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-bastion -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-bastion.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-bastion.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-bastion.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-bastion.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-bastion.chart\" . }}\n{{ include \"opsany-saas-bastion.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-bastion.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-bastion.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-bastion.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-bastion.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/configmap.yaml",
    "content": "---\n# bastion-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-bastion-init\ndata:\n{{ (.Files.Glob \"bastion-init.py\").AsConfig | indent 2 }}\n\n---\n# bastion-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-bastion-prod\ndata:\n{{ (.Files.Glob \"bastion-prod.py\").AsConfig | indent 2 }}\n\n---\n# bastion-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-bastion-nginx\ndata:\n{{ (.Files.Glob \"bastion-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# bastion-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-bastion-supervisor\ndata:\n{{ (.Files.Glob \"bastion-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# bastion-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-bastion-uwsgi\ndata:\n{{ (.Files.Glob \"bastion-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-bastion.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-bastion.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-bastion.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-bastion.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/bastion/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-bastion-init\n              mountPath: /opt/opsany/bastion/config/__init__.py\n              subPath: bastion-init.py\n            - name: opsany-saas-ce-bastion-prod\n              mountPath: /opt/opsany/bastion/config/prod.py\n              subPath: bastion-prod.py\n            - name: opsany-saas-ce-bastion-supervisor\n              mountPath: /etc/supervisord.d/bastion.ini\n              subPath: bastion-supervisor.ini\n            - name: opsany-saas-ce-bastion-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: bastion-nginx.conf\n            - name: opsany-saas-ce-bastion-uwsgi\n              mountPath: /opt/opsany/uwsgi/bastion.ini\n              subPath: bastion-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-bastion-init\n              mountPath: /opt/opsany/bastion/config/__init__.py\n              subPath: bastion-init.py\n            - name: opsany-saas-ce-bastion-prod\n              mountPath: /opt/opsany/bastion/config/prod.py\n              subPath: bastion-prod.py\n            - name: opsany-saas-ce-bastion-supervisor\n              mountPath: /etc/supervisord.d/bastion.ini\n              subPath: bastion-supervisor.ini\n            - name: opsany-saas-ce-bastion-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: bastion-nginx.conf\n            - name: opsany-saas-ce-bastion-uwsgi\n              mountPath: /opt/opsany/uwsgi/bastion.ini\n              subPath: bastion-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/bastion/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/bastion/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-bastion-init\n          configMap:\n            name: opsany-saas-ce-bastion-init\n            items:\n            - key: bastion-init.py\n              path: bastion-init.py\n        - name: opsany-saas-ce-bastion-prod\n          configMap:\n            name: opsany-saas-ce-bastion-prod\n            items:\n            - key: bastion-prod.py\n              path: bastion-prod.py\n        - name: opsany-saas-ce-bastion-nginx\n          configMap:\n            name: opsany-saas-ce-bastion-nginx\n            items:\n            - key: bastion-nginx.conf\n              path: bastion-nginx.conf\n        - name: opsany-saas-ce-bastion-uwsgi\n          configMap:\n            name: opsany-saas-ce-bastion-uwsgi\n            items:\n            - key: bastion-uwsgi.ini\n              path: bastion-uwsgi.ini\n        - name: opsany-saas-ce-bastion-supervisor\n          configMap:\n            name: opsany-saas-ce-bastion-supervisor\n            items:\n            - key: bastion-supervisor.ini\n              path: bastion-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-bastion.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-bastion.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-bastion.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-bastion.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-bastion.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-bastion.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-bastion.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-bastion.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-bastion.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-bastion/values.yaml",
    "content": "# Default values for opsany-saas-bastion.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-bastion\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7008\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-cmdb\ndescription: OpsAny cmdb Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/NOTES.txt",
    "content": "# Get the OpsAny cmdb URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-cmdb -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-cmdb -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-cmdb.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-cmdb.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-cmdb.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-cmdb.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-cmdb.chart\" . }}\n{{ include \"opsany-saas-cmdb.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-cmdb.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-cmdb.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-cmdb.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-cmdb.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/configmap.yaml",
    "content": "---\n# cmdb-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmdb-init\ndata:\n{{ (.Files.Glob \"cmdb-init.py\").AsConfig | indent 2 }}\n\n---\n# cmdb-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmdb-prod\ndata:\n{{ (.Files.Glob \"cmdb-prod.py\").AsConfig | indent 2 }}\n\n---\n# cmdb-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmdb-nginx\ndata:\n{{ (.Files.Glob \"cmdb-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# cmdb-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmdb-supervisor\ndata:\n{{ (.Files.Glob \"cmdb-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# cmdb-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmdb-uwsgi\ndata:\n{{ (.Files.Glob \"cmdb-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-cmdb.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-cmdb.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-cmdb.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-cmdb.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/cmdb/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-cmdb-init\n              mountPath: /opt/opsany/cmdb/config/__init__.py\n              subPath: cmdb-init.py\n            - name: opsany-saas-ce-cmdb-prod\n              mountPath: /opt/opsany/cmdb/config/prod.py\n              subPath: cmdb-prod.py\n            - name: opsany-saas-ce-cmdb-supervisor\n              mountPath: /etc/supervisord.d/cmdb.ini\n              subPath: cmdb-supervisor.ini\n            - name: opsany-saas-ce-cmdb-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: cmdb-nginx.conf\n            - name: opsany-saas-ce-cmdb-uwsgi\n              mountPath: /opt/opsany/uwsgi/cmdb.ini\n              subPath: cmdb-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n          \n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-cmdb-init\n              mountPath: /opt/opsany/cmdb/config/__init__.py\n              subPath: cmdb-init.py\n            - name: opsany-saas-ce-cmdb-prod\n              mountPath: /opt/opsany/cmdb/config/prod.py\n              subPath: cmdb-prod.py\n            - name: opsany-saas-ce-cmdb-supervisor\n              mountPath: /etc/supervisord.d/cmdb.ini\n              subPath: cmdb-supervisor.ini\n            - name: opsany-saas-ce-cmdb-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: cmdb-nginx.conf\n            - name: opsany-saas-ce-cmdb-uwsgi\n              mountPath: /opt/opsany/uwsgi/cmdb.ini\n              subPath: cmdb-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/cmdb/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/cmdb/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-cmdb-init\n          configMap:\n            name: opsany-saas-ce-cmdb-init\n            items:\n            - key: cmdb-init.py\n              path: cmdb-init.py\n        - name: opsany-saas-ce-cmdb-prod\n          configMap:\n            name: opsany-saas-ce-cmdb-prod\n            items:\n            - key: cmdb-prod.py\n              path: cmdb-prod.py\n        - name: opsany-saas-ce-cmdb-nginx\n          configMap:\n            name: opsany-saas-ce-cmdb-nginx\n            items:\n            - key: cmdb-nginx.conf\n              path: cmdb-nginx.conf\n        - name: opsany-saas-ce-cmdb-uwsgi\n          configMap:\n            name: opsany-saas-ce-cmdb-uwsgi\n            items:\n            - key: cmdb-uwsgi.ini\n              path: cmdb-uwsgi.ini\n        - name: opsany-saas-ce-cmdb-supervisor\n          configMap:\n            name: opsany-saas-ce-cmdb-supervisor\n            items:\n            - key: cmdb-supervisor.ini\n              path: cmdb-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-cmdb.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-cmdb.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-cmdb.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-cmdb.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-cmdb.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-cmdb.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-cmdb.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-cmdb.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-cmdb.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmdb/values.yaml",
    "content": "# Default values for opsany-saas-cmdb.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-cmdb\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7003\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-cmp\ndescription: OpsAny cmp Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/NOTES.txt",
    "content": "# Get the OpsAny cmp URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-cmp -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-cmp -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-cmp.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-cmp.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-cmp.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-cmp.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-cmp.chart\" . }}\n{{ include \"opsany-saas-cmp.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-cmp.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-cmp.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-cmp.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-cmp.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/configmap.yaml",
    "content": "---\n# cmp-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmp-init\ndata:\n{{ (.Files.Glob \"cmp-init.py\").AsConfig | indent 2 }}\n\n---\n# cmp-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmp-prod\ndata:\n{{ (.Files.Glob \"cmp-prod.py\").AsConfig | indent 2 }}\n\n---\n# cmp-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmp-nginx\ndata:\n{{ (.Files.Glob \"cmp-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# cmp-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmp-supervisor\ndata:\n{{ (.Files.Glob \"cmp-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# cmp-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-cmp-uwsgi\ndata:\n{{ (.Files.Glob \"cmp-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-cmp.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-cmp.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-cmp.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-cmp.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/cmp/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-cmp-init\n              mountPath: /opt/opsany/cmp/config/__init__.py\n              subPath: cmp-init.py\n            - name: opsany-saas-ce-cmp-prod\n              mountPath: /opt/opsany/cmp/config/prod.py\n              subPath: cmp-prod.py\n            - name: opsany-saas-ce-cmp-supervisor\n              mountPath: /etc/supervisord.d/cmp.ini\n              subPath: cmp-supervisor.ini\n            - name: opsany-saas-ce-cmp-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: cmp-nginx.conf\n            - name: opsany-saas-ce-cmp-uwsgi\n              mountPath: /opt/opsany/uwsgi/cmp.ini\n              subPath: cmp-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n          \n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-cmp-init\n              mountPath: /opt/opsany/cmp/config/__init__.py\n              subPath: cmp-init.py\n            - name: opsany-saas-ce-cmp-prod\n              mountPath: /opt/opsany/cmp/config/prod.py\n              subPath: cmp-prod.py\n            - name: opsany-saas-ce-cmp-supervisor\n              mountPath: /etc/supervisord.d/cmp.ini\n              subPath: cmp-supervisor.ini\n            - name: opsany-saas-ce-cmp-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: cmp-nginx.conf\n            - name: opsany-saas-ce-cmp-uwsgi\n              mountPath: /opt/opsany/uwsgi/cmp.ini\n              subPath: cmp-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/cmp/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/cmp/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-cmp-init\n          configMap:\n            name: opsany-saas-ce-cmp-init\n            items:\n            - key: cmp-init.py\n              path: cmp-init.py\n        - name: opsany-saas-ce-cmp-prod\n          configMap:\n            name: opsany-saas-ce-cmp-prod\n            items:\n            - key: cmp-prod.py\n              path: cmp-prod.py\n        - name: opsany-saas-ce-cmp-nginx\n          configMap:\n            name: opsany-saas-ce-cmp-nginx\n            items:\n            - key: cmp-nginx.conf\n              path: cmp-nginx.conf\n        - name: opsany-saas-ce-cmp-uwsgi\n          configMap:\n            name: opsany-saas-ce-cmp-uwsgi\n            items:\n            - key: cmp-uwsgi.ini\n              path: cmp-uwsgi.ini\n        - name: opsany-saas-ce-cmp-supervisor\n          configMap:\n            name: opsany-saas-ce-cmp-supervisor\n            items:\n            - key: cmp-supervisor.ini\n              path: cmp-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-cmp.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-cmp.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-cmp.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-cmp.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-cmp.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-cmp.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-cmp.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-cmp.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-cmp.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-cmp/values.yaml",
    "content": "# Default values for opsany-saas-cmp.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-cmp\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7007\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-code\ndescription: OpsAny code Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.0\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/NOTES.txt",
    "content": "# Get the OpsAny code URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-code -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-code -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-code.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-code.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-code.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-code.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-code.chart\" . }}\n{{ include \"opsany-saas-code.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-code.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-code.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-code.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-code.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/configmap.yaml",
    "content": "---\n# code-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-code-init\ndata:\n{{ (.Files.Glob \"code-init.py\").AsConfig | indent 2 }}\n\n---\n# code-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-code-prod\ndata:\n{{ (.Files.Glob \"code-prod.py\").AsConfig | indent 2 }}\n\n---\n# code-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-code-nginx\ndata:\n{{ (.Files.Glob \"code-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# code-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-code-supervisor\ndata:\n{{ (.Files.Glob \"code-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# code-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-code-uwsgi\ndata:\n{{ (.Files.Glob \"code-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-code.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-code.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-code.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-code.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/code/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-code-init\n              mountPath: /opt/opsany/code/config/__init__.py\n              subPath: code-init.py\n            - name: opsany-saas-ce-code-prod\n              mountPath: /opt/opsany/code/config/prod.py\n              subPath: code-prod.py\n            - name: opsany-saas-ce-code-supervisor\n              mountPath: /etc/supervisord.d/code.ini\n              subPath: code-supervisor.ini\n            - name: opsany-saas-ce-code-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: code-nginx.conf\n            - name: opsany-saas-ce-code-uwsgi\n              mountPath: /opt/opsany/uwsgi/code.ini\n              subPath: code-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n          \n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-code-init\n              mountPath: /opt/opsany/code/config/__init__.py\n              subPath: code-init.py\n            - name: opsany-saas-ce-code-prod\n              mountPath: /opt/opsany/code/config/prod.py\n              subPath: code-prod.py\n            - name: opsany-saas-ce-code-supervisor\n              mountPath: /etc/supervisord.d/code.ini\n              subPath: code-supervisor.ini\n            - name: opsany-saas-ce-code-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: code-nginx.conf\n            - name: opsany-saas-ce-code-uwsgi\n              mountPath: /opt/opsany/uwsgi/code.ini\n              subPath: code-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/code/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/code/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-code-init\n          configMap:\n            name: opsany-saas-ce-code-init\n            items:\n            - key: code-init.py\n              path: code-init.py\n        - name: opsany-saas-ce-code-prod\n          configMap:\n            name: opsany-saas-ce-code-prod\n            items:\n            - key: code-prod.py\n              path: code-prod.py\n        - name: opsany-saas-ce-code-nginx\n          configMap:\n            name: opsany-saas-ce-code-nginx\n            items:\n            - key: code-nginx.conf\n              path: code-nginx.conf\n        - name: opsany-saas-ce-code-uwsgi\n          configMap:\n            name: opsany-saas-ce-code-uwsgi\n            items:\n            - key: code-uwsgi.ini\n              path: code-uwsgi.ini\n        - name: opsany-saas-ce-code-supervisor\n          configMap:\n            name: opsany-saas-ce-code-supervisor\n            items:\n            - key: code-supervisor.ini\n              path: code-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-code.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-code.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-code.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-code.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-code.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-code.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-code.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-code.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-code.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-code/values.yaml",
    "content": "# Default values for opsany-saas-code.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-code\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7010\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-control\ndescription: OpsAny control Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/NOTES.txt",
    "content": "# Get the OpsAny control URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-control -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-control -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-control.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-control.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-control.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-control.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-control.chart\" . }}\n{{ include \"opsany-saas-control.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-control.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-control.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-control.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-control.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/configmap.yaml",
    "content": "---\n# control-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-control-init\ndata:\n{{ (.Files.Glob \"control-init.py\").AsConfig | indent 2 }}\n\n---\n# control-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-control-prod\ndata:\n{{ (.Files.Glob \"control-prod.py\").AsConfig | indent 2 }}\n\n---\n# control-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-control-nginx\ndata:\n{{ (.Files.Glob \"control-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# control-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-control-supervisor\ndata:\n{{ (.Files.Glob \"control-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# control-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-control-uwsgi\ndata:\n{{ (.Files.Glob \"control-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-control.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-control.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-control.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-control.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/control/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-control-init\n              mountPath: /opt/opsany/control/config/__init__.py\n              subPath: control-init.py\n            - name: opsany-saas-ce-control-prod\n              mountPath: /opt/opsany/control/config/prod.py\n              subPath: control-prod.py\n            - name: opsany-saas-ce-control-supervisor\n              mountPath: /etc/supervisord.d/control.ini\n              subPath: control-supervisor.ini\n            - name: opsany-saas-ce-control-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: control-nginx.conf\n            - name: opsany-saas-ce-control-uwsgi\n              mountPath: /opt/opsany/uwsgi/control.ini\n              subPath: control-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-control-init\n              mountPath: /opt/opsany/control/config/__init__.py\n              subPath: control-init.py\n            - name: opsany-saas-ce-control-prod\n              mountPath: /opt/opsany/control/config/prod.py\n              subPath: control-prod.py\n            - name: opsany-saas-ce-control-supervisor\n              mountPath: /etc/supervisord.d/control.ini\n              subPath: control-supervisor.ini\n            - name: opsany-saas-ce-control-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: control-nginx.conf\n            - name: opsany-saas-ce-control-uwsgi\n              mountPath: /opt/opsany/uwsgi/control.ini\n              subPath: control-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/control/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/control/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-control-init\n          configMap:\n            name: opsany-saas-ce-control-init\n            items:\n            - key: control-init.py\n              path: control-init.py\n        - name: opsany-saas-ce-control-prod\n          configMap:\n            name: opsany-saas-ce-control-prod\n            items:\n            - key: control-prod.py\n              path: control-prod.py\n        - name: opsany-saas-ce-control-nginx\n          configMap:\n            name: opsany-saas-ce-control-nginx\n            items:\n            - key: control-nginx.conf\n              path: control-nginx.conf\n        - name: opsany-saas-ce-control-uwsgi\n          configMap:\n            name: opsany-saas-ce-control-uwsgi\n            items:\n            - key: control-uwsgi.ini\n              path: control-uwsgi.ini\n        - name: opsany-saas-ce-control-supervisor\n          configMap:\n            name: opsany-saas-ce-control-supervisor\n            items:\n            - key: control-supervisor.ini\n              path: control-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-control.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-control.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-control.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-control.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-control.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-control.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-control.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-control.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-control.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-control/values.yaml",
    "content": "# Default values for opsany-saas-control.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-control\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7004\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vsdeploy/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-deploy\ndescription: OpsAny deploy Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/NOTES.txt",
    "content": "# Get the OpsAny deploy URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-deploy -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-deploy -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-deploy.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-deploy.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-deploy.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-deploy.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-deploy.chart\" . }}\n{{ include \"opsany-saas-deploy.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-deploy.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-deploy.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-deploy.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-deploy.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/configmap.yaml",
    "content": "---\n# deploy-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-deploy-init\ndata:\n{{ (.Files.Glob \"deploy-init.py\").AsConfig | indent 2 }}\n\n---\n# deploy-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-deploy-prod\ndata:\n{{ (.Files.Glob \"deploy-prod.py\").AsConfig | indent 2 }}\n\n---\n# deploy-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-deploy-nginx\ndata:\n{{ (.Files.Glob \"deploy-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# deploy-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-deploy-supervisor\ndata:\n{{ (.Files.Glob \"deploy-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# deploy-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-deploy-uwsgi\ndata:\n{{ (.Files.Glob \"deploy-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-deploy.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-deploy.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-deploy.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-deploy.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/deploy/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-deploy-init\n              mountPath: /opt/opsany/deploy/config/__init__.py\n              subPath: deploy-init.py\n            - name: opsany-saas-ce-deploy-prod\n              mountPath: /opt/opsany/deploy/config/prod.py\n              subPath: deploy-prod.py\n            - name: opsany-saas-ce-deploy-supervisor\n              mountPath: /etc/supervisord.d/deploy.ini\n              subPath: deploy-supervisor.ini\n            - name: opsany-saas-ce-deploy-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: deploy-nginx.conf\n            - name: opsany-saas-ce-deploy-uwsgi\n              mountPath: /opt/opsany/uwsgi/deploy.ini\n              subPath: deploy-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-deploy-init\n              mountPath: /opt/opsany/deploy/config/__init__.py\n              subPath: deploy-init.py\n            - name: opsany-saas-ce-deploy-prod\n              mountPath: /opt/opsany/deploy/config/prod.py\n              subPath: deploy-prod.py\n            - name: opsany-saas-ce-deploy-supervisor\n              mountPath: /etc/supervisord.d/deploy.ini\n              subPath: deploy-supervisor.ini\n            - name: opsany-saas-ce-deploy-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: deploy-nginx.conf\n            - name: opsany-saas-ce-deploy-uwsgi\n              mountPath: /opt/opsany/uwsgi/deploy.ini\n              subPath: deploy-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/deploy/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/deploy/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-deploy-init\n          configMap:\n            name: opsany-saas-ce-deploy-init\n            items:\n            - key: deploy-init.py\n              path: deploy-init.py\n        - name: opsany-saas-ce-deploy-prod\n          configMap:\n            name: opsany-saas-ce-deploy-prod\n            items:\n            - key: deploy-prod.py\n              path: deploy-prod.py\n        - name: opsany-saas-ce-deploy-nginx\n          configMap:\n            name: opsany-saas-ce-deploy-nginx\n            items:\n            - key: deploy-nginx.conf\n              path: deploy-nginx.conf\n        - name: opsany-saas-ce-deploy-uwsgi\n          configMap:\n            name: opsany-saas-ce-deploy-uwsgi\n            items:\n            - key: deploy-uwsgi.ini\n              path: deploy-uwsgi.ini\n        - name: opsany-saas-ce-deploy-supervisor\n          configMap:\n            name: opsany-saas-ce-deploy-supervisor\n            items:\n            - key: deploy-supervisor.ini\n              path: deploy-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-deploy.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-deploy.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-deploy.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-deploy.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-deploy.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-deploy.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-deploy.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-deploy.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-deploy.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-deploy/values.yaml",
    "content": "# Default values for opsany-saas-deploy.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-deploy\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7018\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-devops\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/NOTES.txt",
    "content": "# Get the OpsAny devops URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-devops -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-devops -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-devops.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-devops.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-devops.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-devops.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-devops.chart\" . }}\n{{ include \"opsany-saas-devops.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-devops.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-devops.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-devops.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-devops.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/configmap.yaml",
    "content": "---\n# devops-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-devops-init\ndata:\n{{ (.Files.Glob \"devops-init.py\").AsConfig | indent 2 }}\n\n---\n# devops-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-devops-prod\ndata:\n{{ (.Files.Glob \"devops-prod.py\").AsConfig | indent 2 }}\n\n---\n# devops-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-devops-nginx\ndata:\n{{ (.Files.Glob \"devops-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# devops-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-devops-supervisor\ndata:\n{{ (.Files.Glob \"devops-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# devops-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-devops-uwsgi\ndata:\n{{ (.Files.Glob \"devops-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-devops.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-devops.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-devops.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-devops.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/devops/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-devops-init\n              mountPath: /opt/opsany/devops/config/__init__.py\n              subPath: devops-init.py\n            - name: opsany-saas-ce-devops-prod\n              mountPath: /opt/opsany/devops/config/prod.py\n              subPath: devops-prod.py\n            - name: opsany-saas-ce-devops-supervisor\n              mountPath: /etc/supervisord.d/devops.ini\n              subPath: devops-supervisor.ini\n            - name: opsany-saas-ce-devops-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: devops-nginx.conf\n            - name: opsany-saas-ce-devops-uwsgi\n              mountPath: /opt/opsany/uwsgi/devops.ini\n              subPath: devops-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-devops-init\n              mountPath: /opt/opsany/devops/config/__init__.py\n              subPath: devops-init.py\n            - name: opsany-saas-ce-devops-prod\n              mountPath: /opt/opsany/devops/config/prod.py\n              subPath: devops-prod.py\n            - name: opsany-saas-ce-devops-supervisor\n              mountPath: /etc/supervisord.d/devops.ini\n              subPath: devops-supervisor.ini\n            - name: opsany-saas-ce-devops-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: devops-nginx.conf\n            - name: opsany-saas-ce-devops-uwsgi\n              mountPath: /opt/opsany/uwsgi/devops.ini\n              subPath: devops-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/devops/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/devops/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-devops-init\n          configMap:\n            name: opsany-saas-ce-devops-init\n            items:\n            - key: devops-init.py\n              path: devops-init.py\n        - name: opsany-saas-ce-devops-prod\n          configMap:\n            name: opsany-saas-ce-devops-prod\n            items:\n            - key: devops-prod.py\n              path: devops-prod.py\n        - name: opsany-saas-ce-devops-nginx\n          configMap:\n            name: opsany-saas-ce-devops-nginx\n            items:\n            - key: devops-nginx.conf\n              path: devops-nginx.conf\n        - name: opsany-saas-ce-devops-uwsgi\n          configMap:\n            name: opsany-saas-ce-devops-uwsgi\n            items:\n            - key: devops-uwsgi.ini\n              path: devops-uwsgi.ini\n        - name: opsany-saas-ce-devops-supervisor\n          configMap:\n            name: opsany-saas-ce-devops-supervisor\n            items:\n            - key: devops-supervisor.ini\n              path: devops-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-devops.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-devops.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-devops.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-devops.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-devops.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-devops.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-devops.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-devops.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-devops.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-devops/values.yaml",
    "content": "# Default values for opsany-saas-devops.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-devops\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7009\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-job\ndescription: OpsAny job Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/NOTES.txt",
    "content": "# Get the OpsAny job URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-job -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-job -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-job.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-job.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-job.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-job.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-job.chart\" . }}\n{{ include \"opsany-saas-job.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-job.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-job.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-job.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-job.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/configmap.yaml",
    "content": "---\n# job-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-job-init\ndata:\n{{ (.Files.Glob \"job-init.py\").AsConfig | indent 2 }}\n\n---\n# job-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-job-prod\ndata:\n{{ (.Files.Glob \"job-prod.py\").AsConfig | indent 2 }}\n\n---\n# job-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-job-nginx\ndata:\n{{ (.Files.Glob \"job-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# job-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-job-supervisor\ndata:\n{{ (.Files.Glob \"job-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# job-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-job-uwsgi\ndata:\n{{ (.Files.Glob \"job-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-job.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-job.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-job.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-job.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/job/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-job-init\n              mountPath: /opt/opsany/job/config/__init__.py\n              subPath: job-init.py\n            - name: opsany-saas-ce-job-prod\n              mountPath: /opt/opsany/job/config/prod.py\n              subPath: job-prod.py\n            - name: opsany-saas-ce-job-supervisor\n              mountPath: /etc/supervisord.d/job.ini\n              subPath: job-supervisor.ini\n            - name: opsany-saas-ce-job-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: job-nginx.conf\n            - name: opsany-saas-ce-job-uwsgi\n              mountPath: /opt/opsany/uwsgi/job.ini\n              subPath: job-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-job-init\n              mountPath: /opt/opsany/job/config/__init__.py\n              subPath: job-init.py\n            - name: opsany-saas-ce-job-prod\n              mountPath: /opt/opsany/job/config/prod.py\n              subPath: job-prod.py\n            - name: opsany-saas-ce-job-supervisor\n              mountPath: /etc/supervisord.d/job.ini\n              subPath: job-supervisor.ini\n            - name: opsany-saas-ce-job-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: job-nginx.conf\n            - name: opsany-saas-ce-job-uwsgi\n              mountPath: /opt/opsany/uwsgi/job.ini\n              subPath: job-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/job/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/job/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-job-init\n          configMap:\n            name: opsany-saas-ce-job-init\n            items:\n            - key: job-init.py\n              path: job-init.py\n        - name: opsany-saas-ce-job-prod\n          configMap:\n            name: opsany-saas-ce-job-prod\n            items:\n            - key: job-prod.py\n              path: job-prod.py\n        - name: opsany-saas-ce-job-nginx\n          configMap:\n            name: opsany-saas-ce-job-nginx\n            items:\n            - key: job-nginx.conf\n              path: job-nginx.conf\n        - name: opsany-saas-ce-job-uwsgi\n          configMap:\n            name: opsany-saas-ce-job-uwsgi\n            items:\n            - key: job-uwsgi.ini\n              path: job-uwsgi.ini\n        - name: opsany-saas-ce-job-supervisor\n          configMap:\n            name: opsany-saas-ce-job-supervisor\n            items:\n            - key: job-supervisor.ini\n              path: job-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-job.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-job.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-job.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-job.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-job.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-job.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-job.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-job.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-job.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-job/values.yaml",
    "content": "# Default values for opsany-saas-job.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-job\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7005\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-llmops\ndescription: OpsAny llmops Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/NOTES.txt",
    "content": "# Get the OpsAny llmops URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-llmops -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-llmops -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-llmops.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-llmops.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-llmops.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-llmops.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-llmops.chart\" . }}\n{{ include \"opsany-saas-llmops.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-llmops.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-llmops.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-llmops.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-llmops.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/configmap.yaml",
    "content": "---\n# llmops-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-llmops-init\ndata:\n{{ (.Files.Glob \"llmops-init.py\").AsConfig | indent 2 }}\n\n---\n# llmops-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-llmops-prod\ndata:\n{{ (.Files.Glob \"llmops-prod.py\").AsConfig | indent 2 }}\n\n---\n# llmops-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-llmops-nginx\ndata:\n{{ (.Files.Glob \"llmops-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# llmops-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-llmops-supervisor\ndata:\n{{ (.Files.Glob \"llmops-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# llmops-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-llmops-uwsgi\ndata:\n{{ (.Files.Glob \"llmops-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-llmops.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-llmops.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-llmops.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-llmops.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/llmops/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-llmops-init\n              mountPath: /opt/opsany/llmops/config/__init__.py\n              subPath: llmops-init.py\n            - name: opsany-saas-ce-llmops-prod\n              mountPath: /opt/opsany/llmops/config/prod.py\n              subPath: llmops-prod.py\n            - name: opsany-saas-ce-llmops-supervisor\n              mountPath: /etc/supervisord.d/llmops.ini\n              subPath: llmops-supervisor.ini\n            - name: opsany-saas-ce-llmops-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: llmops-nginx.conf\n            - name: opsany-saas-ce-llmops-uwsgi\n              mountPath: /opt/opsany/uwsgi/llmops.ini\n              subPath: llmops-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n          \n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-llmops-init\n              mountPath: /opt/opsany/llmops/config/__init__.py\n              subPath: llmops-init.py\n            - name: opsany-saas-ce-llmops-prod\n              mountPath: /opt/opsany/llmops/config/prod.py\n              subPath: llmops-prod.py\n            - name: opsany-saas-ce-llmops-supervisor\n              mountPath: /etc/supervisord.d/llmops.ini\n              subPath: llmops-supervisor.ini\n            - name: opsany-saas-ce-llmops-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: llmops-nginx.conf\n            - name: opsany-saas-ce-llmops-uwsgi\n              mountPath: /opt/opsany/uwsgi/llmops.ini\n              subPath: llmops-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/llmops/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/llmops/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-llmops-init\n          configMap:\n            name: opsany-saas-ce-llmops-init\n            items:\n            - key: llmops-init.py\n              path: llmops-init.py\n        - name: opsany-saas-ce-llmops-prod\n          configMap:\n            name: opsany-saas-ce-llmops-prod\n            items:\n            - key: llmops-prod.py\n              path: llmops-prod.py\n        - name: opsany-saas-ce-llmops-nginx\n          configMap:\n            name: opsany-saas-ce-llmops-nginx\n            items:\n            - key: llmops-nginx.conf\n              path: llmops-nginx.conf\n        - name: opsany-saas-ce-llmops-uwsgi\n          configMap:\n            name: opsany-saas-ce-llmops-uwsgi\n            items:\n            - key: llmops-uwsgi.ini\n              path: llmops-uwsgi.ini\n        - name: opsany-saas-ce-llmops-supervisor\n          configMap:\n            name: opsany-saas-ce-llmops-supervisor\n            items:\n            - key: llmops-supervisor.ini\n              path: llmops-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-llmops.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-llmops.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-llmops.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-llmops.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-llmops.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-llmops.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-llmops.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-llmops.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-llmops.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-llmops/values.yaml",
    "content": "# Default values for opsany-saas-llmops.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-llmops\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7000\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-monitor\ndescription: OpsAny monitor Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/NOTES.txt",
    "content": "# Get the OpsAny monitor URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-monitor -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-monitor -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-monitor.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-monitor.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-monitor.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-monitor.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-monitor.chart\" . }}\n{{ include \"opsany-saas-monitor.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-monitor.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-monitor.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-monitor.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-monitor.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/configmap.yaml",
    "content": "---\n# monitor-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-monitor-init\ndata:\n{{ (.Files.Glob \"monitor-init.py\").AsConfig | indent 2 }}\n\n---\n# monitor-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-monitor-prod\ndata:\n{{ (.Files.Glob \"monitor-prod.py\").AsConfig | indent 2 }}\n\n---\n# monitor-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-monitor-nginx\ndata:\n{{ (.Files.Glob \"monitor-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# monitor-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-monitor-supervisor\ndata:\n{{ (.Files.Glob \"monitor-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# monitor-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-monitor-uwsgi\ndata:\n{{ (.Files.Glob \"monitor-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-monitor.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-monitor.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-monitor.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-monitor.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/monitor/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-monitor-init\n              mountPath: /opt/opsany/monitor/config/__init__.py\n              subPath: monitor-init.py\n            - name: opsany-saas-ce-monitor-prod\n              mountPath: /opt/opsany/monitor/config/prod.py\n              subPath: monitor-prod.py\n            - name: opsany-saas-ce-monitor-supervisor\n              mountPath: /etc/supervisord.d/monitor.ini\n              subPath: monitor-supervisor.ini\n            - name: opsany-saas-ce-monitor-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: monitor-nginx.conf\n            - name: opsany-saas-ce-monitor-uwsgi\n              mountPath: /opt/opsany/uwsgi/monitor.ini\n              subPath: monitor-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-monitor-init\n              mountPath: /opt/opsany/monitor/config/__init__.py\n              subPath: monitor-init.py\n            - name: opsany-saas-ce-monitor-prod\n              mountPath: /opt/opsany/monitor/config/prod.py\n              subPath: monitor-prod.py\n            - name: opsany-saas-ce-monitor-supervisor\n              mountPath: /etc/supervisord.d/monitor.ini\n              subPath: monitor-supervisor.ini\n            - name: opsany-saas-ce-monitor-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: monitor-nginx.conf\n            - name: opsany-saas-ce-monitor-uwsgi\n              mountPath: /opt/opsany/uwsgi/monitor.ini\n              subPath: monitor-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/monitor/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/monitor/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-monitor-init\n          configMap:\n            name: opsany-saas-ce-monitor-init\n            items:\n            - key: monitor-init.py\n              path: monitor-init.py\n        - name: opsany-saas-ce-monitor-prod\n          configMap:\n            name: opsany-saas-ce-monitor-prod\n            items:\n            - key: monitor-prod.py\n              path: monitor-prod.py\n        - name: opsany-saas-ce-monitor-nginx\n          configMap:\n            name: opsany-saas-ce-monitor-nginx\n            items:\n            - key: monitor-nginx.conf\n              path: monitor-nginx.conf\n        - name: opsany-saas-ce-monitor-uwsgi\n          configMap:\n            name: opsany-saas-ce-monitor-uwsgi\n            items:\n            - key: monitor-uwsgi.ini\n              path: monitor-uwsgi.ini\n        - name: opsany-saas-ce-monitor-supervisor\n          configMap:\n            name: opsany-saas-ce-monitor-supervisor\n            items:\n            - key: monitor-supervisor.ini\n              path: monitor-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-monitor.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-monitor.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-monitor.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-monitor.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-monitor.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-monitor.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-monitor.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-monitor.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-monitor.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-monitor/values.yaml",
    "content": "# Default values for opsany-saas-monitor.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-monitor\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7006\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vspipeline/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-pipeline\ndescription: OpsAny pipeline Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/NOTES.txt",
    "content": "# Get the OpsAny pipeline URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-pipeline -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-pipeline -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-pipeline.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-pipeline.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-pipeline.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-pipeline.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-pipeline.chart\" . }}\n{{ include \"opsany-saas-pipeline.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-pipeline.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-pipeline.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-pipeline.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-pipeline.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/configmap.yaml",
    "content": "---\n# pipeline-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-pipeline-init\ndata:\n{{ (.Files.Glob \"pipeline-init.py\").AsConfig | indent 2 }}\n\n---\n# pipeline-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-pipeline-prod\ndata:\n{{ (.Files.Glob \"pipeline-prod.py\").AsConfig | indent 2 }}\n\n---\n# pipeline-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-pipeline-nginx\ndata:\n{{ (.Files.Glob \"pipeline-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# pipeline-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-pipeline-supervisor\ndata:\n{{ (.Files.Glob \"pipeline-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# pipeline-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-pipeline-uwsgi\ndata:\n{{ (.Files.Glob \"pipeline-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-pipeline.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-pipeline.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-pipeline.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-pipeline.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/pipeline/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-pipeline-init\n              mountPath: /opt/opsany/pipeline/config/__init__.py\n              subPath: pipeline-init.py\n            - name: opsany-saas-ce-pipeline-prod\n              mountPath: /opt/opsany/pipeline/config/prod.py\n              subPath: pipeline-prod.py\n            - name: opsany-saas-ce-pipeline-supervisor\n              mountPath: /etc/supervisord.d/pipeline.ini\n              subPath: pipeline-supervisor.ini\n            - name: opsany-saas-ce-pipeline-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: pipeline-nginx.conf\n            - name: opsany-saas-ce-pipeline-uwsgi\n              mountPath: /opt/opsany/uwsgi/pipeline.ini\n              subPath: pipeline-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-pipeline-init\n              mountPath: /opt/opsany/pipeline/config/__init__.py\n              subPath: pipeline-init.py\n            - name: opsany-saas-ce-pipeline-prod\n              mountPath: /opt/opsany/pipeline/config/prod.py\n              subPath: pipeline-prod.py\n            - name: opsany-saas-ce-pipeline-supervisor\n              mountPath: /etc/supervisord.d/pipeline.ini\n              subPath: pipeline-supervisor.ini\n            - name: opsany-saas-ce-pipeline-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: pipeline-nginx.conf\n            - name: opsany-saas-ce-pipeline-uwsgi\n              mountPath: /opt/opsany/uwsgi/pipeline.ini\n              subPath: pipeline-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/pipeline/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/pipeline/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-pipeline-init\n          configMap:\n            name: opsany-saas-ce-pipeline-init\n            items:\n            - key: pipeline-init.py\n              path: pipeline-init.py\n        - name: opsany-saas-ce-pipeline-prod\n          configMap:\n            name: opsany-saas-ce-pipeline-prod\n            items:\n            - key: pipeline-prod.py\n              path: pipeline-prod.py\n        - name: opsany-saas-ce-pipeline-nginx\n          configMap:\n            name: opsany-saas-ce-pipeline-nginx\n            items:\n            - key: pipeline-nginx.conf\n              path: pipeline-nginx.conf\n        - name: opsany-saas-ce-pipeline-uwsgi\n          configMap:\n            name: opsany-saas-ce-pipeline-uwsgi\n            items:\n            - key: pipeline-uwsgi.ini\n              path: pipeline-uwsgi.ini\n        - name: opsany-saas-ce-pipeline-supervisor\n          configMap:\n            name: opsany-saas-ce-pipeline-supervisor\n            items:\n            - key: pipeline-supervisor.ini\n              path: pipeline-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-pipeline.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-pipeline.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-pipeline.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-pipeline.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-pipeline.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-pipeline.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-pipeline.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-pipeline.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-pipeline.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-pipeline/values.yaml",
    "content": "# Default values for opsany-saas-pipeline.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-pipeline\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7017\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-rbac\ndescription: OpsAny RBAC Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/NOTES.txt",
    "content": "# Get the OpsAny rbac URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-rbac -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-rbac -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-rbac.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-rbac.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-rbac.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-rbac.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-rbac.chart\" . }}\n{{ include \"opsany-saas-rbac.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-rbac.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-rbac.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-rbac.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-rbac.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/configmap.yaml",
    "content": "---\n# rbac-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-rbac-init\ndata:\n{{ (.Files.Glob \"rbac-init.py\").AsConfig | indent 2 }}\n\n---\n# rbac-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-rbac-prod\ndata:\n{{ (.Files.Glob \"rbac-prod.py\").AsConfig | indent 2 }}\n\n---\n# rbac-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-rbac-nginx\ndata:\n{{ (.Files.Glob \"rbac-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# rbac-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-rbac-supervisor\ndata:\n{{ (.Files.Glob \"rbac-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# rbac-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-rbac-uwsgi\ndata:\n{{ (.Files.Glob \"rbac-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-rbac.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-rbac.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-rbac.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-rbac.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/rbac/manage.py\",\"migrate\"] \n          env:  # 添加环境变量\n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-rbac-init\n              mountPath: /opt/opsany/rbac/config/__init__.py\n              subPath: rbac-init.py\n            - name: opsany-saas-ce-rbac-prod\n              mountPath: /opt/opsany/rbac/config/prod.py\n              subPath: rbac-prod.py\n            - name: opsany-saas-ce-rbac-supervisor\n              mountPath: /etc/supervisord.d/rbac.ini\n              subPath: rbac-supervisor.ini\n            - name: opsany-saas-ce-rbac-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: rbac-nginx.conf\n            - name: opsany-saas-ce-rbac-uwsgi\n              mountPath: /opt/opsany/uwsgi/rbac.ini\n              subPath: rbac-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-rbac-init\n              mountPath: /opt/opsany/rbac/config/__init__.py\n              subPath: rbac-init.py\n            - name: opsany-saas-ce-rbac-prod\n              mountPath: /opt/opsany/rbac/config/prod.py\n              subPath: rbac-prod.py\n            - name: opsany-saas-ce-rbac-supervisor\n              mountPath: /etc/supervisord.d/rbac.ini\n              subPath: rbac-supervisor.ini\n            - name: opsany-saas-ce-rbac-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: rbac-nginx.conf\n            - name: opsany-saas-ce-rbac-uwsgi\n              mountPath: /opt/opsany/uwsgi/rbac.ini\n              subPath: rbac-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/rbac/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/rbac/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-rbac-init\n          configMap:\n            name: opsany-saas-ce-rbac-init\n            items:\n            - key: rbac-init.py\n              path: rbac-init.py\n        - name: opsany-saas-ce-rbac-prod\n          configMap:\n            name: opsany-saas-ce-rbac-prod\n            items:\n            - key: rbac-prod.py\n              path: rbac-prod.py\n        - name: opsany-saas-ce-rbac-nginx\n          configMap:\n            name: opsany-saas-ce-rbac-nginx\n            items:\n            - key: rbac-nginx.conf\n              path: rbac-nginx.conf\n        - name: opsany-saas-ce-rbac-uwsgi\n          configMap:\n            name: opsany-saas-ce-rbac-uwsgi\n            items:\n            - key: rbac-uwsgi.ini\n              path: rbac-uwsgi.ini\n        - name: opsany-saas-ce-rbac-supervisor\n          configMap:\n            name: opsany-saas-ce-rbac-supervisor\n            items:\n            - key: rbac-supervisor.ini\n              path: rbac-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-rbac.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-rbac.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-rbac.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-rbac.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-rbac.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: 80\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-rbac.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-rbac.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-rbac.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-rbac.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-rbac/values.yaml",
    "content": "# Default values for opsany-saas-rbac.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-rbac\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7001\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vsrepo/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-repo\ndescription: OpsAny repo Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/NOTES.txt",
    "content": "# Get the OpsAny repo URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-repo -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-repo -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-repo.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-repo.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-repo.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-repo.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-repo.chart\" . }}\n{{ include \"opsany-saas-repo.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-repo.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-repo.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-repo.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-repo.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/configmap.yaml",
    "content": "---\n# repo-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-repo-init\ndata:\n{{ (.Files.Glob \"repo-init.py\").AsConfig | indent 2 }}\n\n---\n# repo-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-repo-prod\ndata:\n{{ (.Files.Glob \"repo-prod.py\").AsConfig | indent 2 }}\n\n---\n# repo-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-repo-nginx\ndata:\n{{ (.Files.Glob \"repo-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# repo-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-repo-supervisor\ndata:\n{{ (.Files.Glob \"repo-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# repo-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-repo-uwsgi\ndata:\n{{ (.Files.Glob \"repo-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-repo.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-repo.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-repo.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-repo.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/repo/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-repo-init\n              mountPath: /opt/opsany/repo/config/__init__.py\n              subPath: repo-init.py\n            - name: opsany-saas-ce-repo-prod\n              mountPath: /opt/opsany/repo/config/prod.py\n              subPath: repo-prod.py\n            - name: opsany-saas-ce-repo-supervisor\n              mountPath: /etc/supervisord.d/repo.ini\n              subPath: repo-supervisor.ini\n            - name: opsany-saas-ce-repo-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: repo-nginx.conf\n            - name: opsany-saas-ce-repo-uwsgi\n              mountPath: /opt/opsany/uwsgi/repo.ini\n              subPath: repo-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-repo-init\n              mountPath: /opt/opsany/repo/config/__init__.py\n              subPath: repo-init.py\n            - name: opsany-saas-ce-repo-prod\n              mountPath: /opt/opsany/repo/config/prod.py\n              subPath: repo-prod.py\n            - name: opsany-saas-ce-repo-supervisor\n              mountPath: /etc/supervisord.d/repo.ini\n              subPath: repo-supervisor.ini\n            - name: opsany-saas-ce-repo-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: repo-nginx.conf\n            - name: opsany-saas-ce-repo-uwsgi\n              mountPath: /opt/opsany/uwsgi/repo.ini\n              subPath: repo-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/repo/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/repo/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-repo-init\n          configMap:\n            name: opsany-saas-ce-repo-init\n            items:\n            - key: repo-init.py\n              path: repo-init.py\n        - name: opsany-saas-ce-repo-prod\n          configMap:\n            name: opsany-saas-ce-repo-prod\n            items:\n            - key: repo-prod.py\n              path: repo-prod.py\n        - name: opsany-saas-ce-repo-nginx\n          configMap:\n            name: opsany-saas-ce-repo-nginx\n            items:\n            - key: repo-nginx.conf\n              path: repo-nginx.conf\n        - name: opsany-saas-ce-repo-uwsgi\n          configMap:\n            name: opsany-saas-ce-repo-uwsgi\n            items:\n            - key: repo-uwsgi.ini\n              path: repo-uwsgi.ini\n        - name: opsany-saas-ce-repo-supervisor\n          configMap:\n            name: opsany-saas-ce-repo-supervisor\n            items:\n            - key: repo-supervisor.ini\n              path: repo-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-repo.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-repo.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-repo.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-repo.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-repo.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-repo.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-repo.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-repo.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-repo.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-repo/values.yaml",
    "content": "# Default values for opsany-saas-repo.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-repo\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7020\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/Chart.yaml",
    "content": "apiVersion: v2\nname: opsany-saas-workbench\ndescription: OpsAny workbench Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 2.3.2\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"2.3.2\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/NOTES.txt",
    "content": "# Get the OpsAny workbench URL by running these commands\n  export SERVICE_IP=$(kubectl get svc -n opsany opsany-saas-workbench -o jsonpath='{.spec.clusterIP}')\n  export SERVICE_PORT=$(kubectl get svc -n opsany opsany-saas-workbench -o jsonpath='{.spec.ports[*].port}')\n  echo http://$SERVICE_IP:$SERVICE_PORT\n  echo \"Visit http://$SERVICE_IP:$SERVICE_PORT to use your application\"\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"opsany-saas-workbench.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"opsany-saas-workbench.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"opsany-saas-workbench.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"opsany-saas-workbench.labels\" -}}\nhelm.sh/chart: {{ include \"opsany-saas-workbench.chart\" . }}\n{{ include \"opsany-saas-workbench.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"opsany-saas-workbench.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"opsany-saas-workbench.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"opsany-saas-workbench.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"opsany-saas-workbench.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/configmap.yaml",
    "content": "---\n# workbench-init.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-workbench-init\ndata:\n{{ (.Files.Glob \"workbench-init.py\").AsConfig | indent 2 }}\n\n---\n# workbench-prod.py\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-workbench-prod\ndata:\n{{ (.Files.Glob \"workbench-prod.py\").AsConfig | indent 2 }}\n\n---\n# workbench-nginx.conf\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-workbench-nginx\ndata:\n{{ (.Files.Glob \"workbench-nginx.conf\").AsConfig | indent 2 }}\n\n---\n# workbench-supervisor.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-workbench-supervisor\ndata:\n{{ (.Files.Glob \"workbench-supervisor.ini\").AsConfig | indent 2 }}\n\n---\n# workbench-uwsgi.ini\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: opsany-saas-ce-workbench-uwsgi\ndata:\n{{ (.Files.Glob \"workbench-uwsgi.ini\").AsConfig | indent 2 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"opsany-saas-workbench.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-workbench.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"opsany-saas-workbench.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"opsany-saas-workbench.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      initContainers: \n        - name: migrate\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command: [\"python\", \"/opt/opsany/workbench/manage.py\",\"migrate\"] \n          env:  \n            - name: BK_ENV\n              value: \"production\"\n          volumeMounts:\n            - name: opsany-saas-ce-workbench-init\n              mountPath: /opt/opsany/workbench/config/__init__.py\n              subPath: workbench-init.py\n            - name: opsany-saas-ce-workbench-prod\n              mountPath: /opt/opsany/workbench/config/prod.py\n              subPath: workbench-prod.py\n            - name: opsany-saas-ce-workbench-supervisor\n              mountPath: /etc/supervisord.d/workbench.ini\n              subPath: workbench-supervisor.ini\n            - name: opsany-saas-ce-workbench-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: workbench-nginx.conf\n            - name: opsany-saas-ce-workbench-uwsgi\n              mountPath: /opt/opsany/uwsgi/workbench.ini\n              subPath: workbench-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          volumeMounts:\n            - name: opsany-saas-ce-workbench-init\n              mountPath: /opt/opsany/workbench/config/__init__.py\n              subPath: workbench-init.py\n            - name: opsany-saas-ce-workbench-prod\n              mountPath: /opt/opsany/workbench/config/prod.py\n              subPath: workbench-prod.py\n            - name: opsany-saas-ce-workbench-supervisor\n              mountPath: /etc/supervisord.d/workbench.ini\n              subPath: workbench-supervisor.ini\n            - name: opsany-saas-ce-workbench-nginx\n              mountPath: /etc/nginx/http.d/default.conf\n              subPath: workbench-nginx.conf\n            - name: opsany-saas-ce-workbench-uwsgi\n              mountPath: /opt/opsany/uwsgi/workbench.ini\n              subPath: workbench-uwsgi.ini\n            - name: opsany-logs\n              mountPath: /opt/opsany/logs\n            - name: opsany-uploads\n              mountPath: /opt/opsany/uploads\n\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n#          livenessProbe:\n#            httpGet:\n#              path: /o/workbench/healthz/\n#              port: http\n#          readinessProbe:\n#            httpGet:\n#              path: /o/workbench/healthz/\n#              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: opsany-saas-ce-workbench-init\n          configMap:\n            name: opsany-saas-ce-workbench-init\n            items:\n            - key: workbench-init.py\n              path: workbench-init.py\n        - name: opsany-saas-ce-workbench-prod\n          configMap:\n            name: opsany-saas-ce-workbench-prod\n            items:\n            - key: workbench-prod.py\n              path: workbench-prod.py\n        - name: opsany-saas-ce-workbench-nginx\n          configMap:\n            name: opsany-saas-ce-workbench-nginx\n            items:\n            - key: workbench-nginx.conf\n              path: workbench-nginx.conf\n        - name: opsany-saas-ce-workbench-uwsgi\n          configMap:\n            name: opsany-saas-ce-workbench-uwsgi\n            items:\n            - key: workbench-uwsgi.ini\n              path: workbench-uwsgi.ini\n        - name: opsany-saas-ce-workbench-supervisor\n          configMap:\n            name: opsany-saas-ce-workbench-supervisor\n            items:\n            - key: workbench-supervisor.ini\n              path: workbench-supervisor.ini\n        - name: opsany-uploads\n          persistentVolumeClaim:\n            claimName: opsany-uploads\n        - name: opsany-logs\n          persistentVolumeClaim:\n            claimName: opsany-logs\n\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"opsany-saas-workbench.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-workbench.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"opsany-saas-workbench.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"opsany-saas-workbench.fullname\" . }}\n  labels:\n    {{- include \"opsany-saas-workbench.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"opsany-saas-workbench.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"opsany-saas-workbench.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"opsany-saas-workbench.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"opsany-saas-workbench.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "kubernetes/helm/opsany-saas/opsany-saas-workbench/values.yaml",
    "content": "# Default values for opsany-saas-workbench.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 1\n\nimage:\n  repository: registry.cn-beijing.aliyuncs.com/opsany/opsany-saas-ce-workbench\n  pullPolicy: Always\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\npodAnnotations:\n  opsany.com/change-cause: 2024-11-23\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 7002\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "kubernetes/kubeedge/.gitkeep",
    "content": ""
  },
  {
    "path": "kubernetes/kubeedge/README.md",
    "content": "\n## 使用Keadm安装KubeEdge\n\n### 部署keadm\n\n```\nwget https://github.com/kubeedge/kubeedge/releases/download/v1.17.0/keadm-v1.17.0-linux-amd64.tar.gz\ntar -zxvf keadm-v1.17.0-linux-amd64.tar.gz\ncp keadm-1.17.0-linux-amd64/keadm/keadm /usr/local/bin/keadm\n```\n\n### Cloud Side部署\n\n\n\n\n\n### Edge Side部署\n\n"
  },
  {
    "path": "kubernetes/kubevirt/.gitkeep",
    "content": ""
  },
  {
    "path": "kubernetes/kubevirt/README.md",
    "content": "# Kubevirt管理\n\nOpsAny支持管理Kubevirt主机。\n\n## kubevirt部署\n\n```\n# Point at latest release\n$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)\n# Deploy the KubeVirt operator\n$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml\n# Create the KubeVirt CR (instance deployment request) which triggers the actual installation\n$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml\n# wait until all KubeVirt components are up\n$ kubectl -n kubevirt wait kv kubevirt --for condition=Available\n```\n\n"
  },
  {
    "path": "kubernetes/kubevirt/kubevirt-cr.yaml",
    "content": "---\napiVersion: kubevirt.io/v1\nkind: KubeVirt\nmetadata:\n  name: kubevirt\n  namespace: kubevirt\nspec:\n  certificateRotateStrategy: {}\n  configuration:\n    developerConfiguration:\n      useEmulation: true\n      featureGates: []\n  customizeComponents: {}\n  imagePullPolicy: IfNotPresent\n  workloadUpdateStrategy: {}\n"
  },
  {
    "path": "kubernetes/kubevirt/kubevirt-operator.yaml",
    "content": "---\napiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    kubevirt.io: \"\"\n    pod-security.kubernetes.io/enforce: \"privileged\"\n  name: kubevirt\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    operator.kubevirt.io: \"\"\n  name: kubevirts.kubevirt.io\nspec:\n  group: kubevirt.io\n  names:\n    categories:\n    - all\n    kind: KubeVirt\n    plural: kubevirts\n    shortNames:\n    - kv\n    - kvs\n    singular: kubevirt\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - jsonPath: .status.phase\n      name: Phase\n      type: string\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: KubeVirt represents the object deploying all KubeVirt resources\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              certificateRotateStrategy:\n                properties:\n                  selfSigned:\n                    properties:\n                      ca:\n                        description: |-\n                          CA configuration\n                          CA certs are kept in the CA bundle as long as they are valid\n                        properties:\n                          duration:\n                            description: The requested 'duration' (i.e. lifetime)\n                              of the Certificate.\n                            type: string\n                          renewBefore:\n                            description: |-\n                              The amount of time before the currently issued certificate's \"notAfter\"\n                              time that we will begin to attempt to renew the certificate.\n                            type: string\n                        type: object\n                      caOverlapInterval:\n                        description: Deprecated. Use CA.Duration and CA.RenewBefore\n                          instead\n                        type: string\n                      caRotateInterval:\n                        description: Deprecated. Use CA.Duration instead\n                        type: string\n                      certRotateInterval:\n                        description: Deprecated. Use Server.Duration instead\n                        type: string\n                      server:\n                        description: |-\n                          Server configuration\n                          Certs are rotated and discarded\n                        properties:\n                          duration:\n                            description: The requested 'duration' (i.e. lifetime)\n                              of the Certificate.\n                            type: string\n                          renewBefore:\n                            description: |-\n                              The amount of time before the currently issued certificate's \"notAfter\"\n                              time that we will begin to attempt to renew the certificate.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              configuration:\n                description: |-\n                  holds kubevirt configurations.\n                  same as the virt-configMap\n                properties:\n                  additionalGuestMemoryOverheadRatio:\n                    description: |-\n                      AdditionalGuestMemoryOverheadRatio can be used to increase the virtualization infrastructure\n                      overhead. This is useful, since the calculation of this overhead is not accurate and cannot\n                      be entirely known in advance. The ratio that is being set determines by which factor to increase\n                      the overhead calculated by Kubevirt. A higher ratio means that the VMs would be less compromised\n                      by node pressures, but would mean that fewer VMs could be scheduled to a node.\n                      If not set, the default is 1.\n                    type: string\n                  apiConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  architectureConfiguration:\n                    properties:\n                      amd64:\n                        properties:\n                          emulatedMachines:\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          machineType:\n                            type: string\n                          ovmfPath:\n                            type: string\n                        type: object\n                      arm64:\n                        properties:\n                          emulatedMachines:\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          machineType:\n                            type: string\n                          ovmfPath:\n                            type: string\n                        type: object\n                      defaultArchitecture:\n                        type: string\n                      ppc64le:\n                        properties:\n                          emulatedMachines:\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          machineType:\n                            type: string\n                          ovmfPath:\n                            type: string\n                        type: object\n                    type: object\n                  autoCPULimitNamespaceLabelSelector:\n                    description: |-\n                      When set, AutoCPULimitNamespaceLabelSelector will set a CPU limit on virt-launcher for VMIs running inside\n                      namespaces that match the label selector.\n                      The CPU limit will equal the number of requested vCPUs.\n                      This setting does not apply to VMIs with dedicated CPUs.\n                    properties:\n                      matchExpressions:\n                        description: matchExpressions is a list of label selector\n                          requirements. The requirements are ANDed.\n                        items:\n                          description: |-\n                            A label selector requirement is a selector that contains values, a key, and an operator that\n                            relates the key and values.\n                          properties:\n                            key:\n                              description: key is the label key that the selector\n                                applies to.\n                              type: string\n                            operator:\n                              description: |-\n                                operator represents a key's relationship to a set of values.\n                                Valid operators are In, NotIn, Exists and DoesNotExist.\n                              type: string\n                            values:\n                              description: |-\n                                values is an array of string values. If the operator is In or NotIn,\n                                the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                the values array must be empty. This array is replaced during a strategic\n                                merge patch.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          required:\n                          - key\n                          - operator\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      matchLabels:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                          map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                          operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                        type: object\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  controllerConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  cpuModel:\n                    type: string\n                  cpuRequest:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  defaultRuntimeClass:\n                    type: string\n                  developerConfiguration:\n                    description: DeveloperConfiguration holds developer options\n                    properties:\n                      cpuAllocationRatio:\n                        description: |-\n                          For each requested virtual CPU, CPUAllocationRatio defines how much physical CPU to request per VMI\n                          from the hosting node. The value is in fraction of a CPU thread (or core on non-hyperthreaded nodes).\n                          For example, a value of 1 means 1 physical CPU thread per VMI CPU thread.\n                          A value of 100 would be 1% of a physical thread allocated for each requested VMI thread.\n                          This option has no effect on VMIs that request dedicated CPUs. More information at:\n                          https://kubevirt.io/user-guide/operations/node_overcommit/#node-cpu-allocation-ratio\n                          Defaults to 10\n                        type: integer\n                      diskVerification:\n                        description: DiskVerification holds container disks verification\n                          limits\n                        properties:\n                          memoryLimit:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                        required:\n                        - memoryLimit\n                        type: object\n                      featureGates:\n                        description: FeatureGates is the list of experimental features\n                          to enable. Defaults to none\n                        items:\n                          type: string\n                        type: array\n                      logVerbosity:\n                        description: LogVerbosity sets log verbosity level of  various\n                          components\n                        properties:\n                          nodeVerbosity:\n                            additionalProperties:\n                              type: integer\n                            description: NodeVerbosity represents a map of nodes with\n                              a specific verbosity level\n                            type: object\n                          virtAPI:\n                            type: integer\n                          virtController:\n                            type: integer\n                          virtHandler:\n                            type: integer\n                          virtLauncher:\n                            type: integer\n                          virtOperator:\n                            type: integer\n                        type: object\n                      memoryOvercommit:\n                        description: |-\n                          MemoryOvercommit is the percentage of memory we want to give VMIs compared to the amount\n                          given to its parent pod (virt-launcher). For example, a value of 102 means the VMI will\n                          \"see\" 2% more memory than its parent pod. Values under 100 are effectively \"undercommits\".\n                          Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully.\n                          Defaults to 100\n                        type: integer\n                      minimumClusterTSCFrequency:\n                        description: |-\n                          Allow overriding the automatically determined minimum TSC frequency of the cluster\n                          and fixate the minimum to this frequency.\n                        format: int64\n                        type: integer\n                      minimumReservePVCBytes:\n                        description: |-\n                          MinimumReservePVCBytes is the amount of space, in bytes, to leave unused on disks.\n                          Defaults to 131072 (128KiB)\n                        format: int64\n                        type: integer\n                      nodeSelectors:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          NodeSelectors allows restricting VMI creation to nodes that match a set of labels.\n                          Defaults to none\n                        type: object\n                      pvcTolerateLessSpaceUpToPercent:\n                        description: |-\n                          LessPVCSpaceToleration determines how much smaller, in percentage, disk PVCs are\n                          allowed to be compared to the requested size (to account for various overheads).\n                          Defaults to 10\n                        type: integer\n                      useEmulation:\n                        description: |-\n                          UseEmulation can be set to true to allow fallback to software emulation\n                          in case hardware-assisted emulation is not available. Defaults to false\n                        type: boolean\n                    type: object\n                  emulatedMachines:\n                    description: Deprecated. Use architectureConfiguration instead.\n                    items:\n                      type: string\n                    type: array\n                  evictionStrategy:\n                    description: |-\n                      EvictionStrategy defines at the cluster level if the VirtualMachineInstance should be\n                      migrated instead of shut-off in case of a node drain. If the VirtualMachineInstance specific\n                      field is set it overrides the cluster level one.\n                    type: string\n                  handlerConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  imagePullPolicy:\n                    description: PullPolicy describes a policy for if/when to pull\n                      a container image\n                    type: string\n                  ksmConfiguration:\n                    description: KSMConfiguration holds the information regarding\n                      the enabling the KSM in the nodes (if available).\n                    properties:\n                      nodeLabelSelector:\n                        description: |-\n                          NodeLabelSelector is a selector that filters in which nodes the KSM will be enabled.\n                          Empty NodeLabelSelector will enable ksm for every node.\n                        properties:\n                          matchExpressions:\n                            description: matchExpressions is a list of label selector\n                              requirements. The requirements are ANDed.\n                            items:\n                              description: |-\n                                A label selector requirement is a selector that contains values, a key, and an operator that\n                                relates the key and values.\n                              properties:\n                                key:\n                                  description: key is the label key that the selector\n                                    applies to.\n                                  type: string\n                                operator:\n                                  description: |-\n                                    operator represents a key's relationship to a set of values.\n                                    Valid operators are In, NotIn, Exists and DoesNotExist.\n                                  type: string\n                                values:\n                                  description: |-\n                                    values is an array of string values. If the operator is In or NotIn,\n                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                    the values array must be empty. This array is replaced during a strategic\n                                    merge patch.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              required:\n                              - key\n                              - operator\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          matchLabels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                              map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                              operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                            type: object\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  liveUpdateConfiguration:\n                    description: LiveUpdateConfiguration holds defaults for live update\n                      features\n                    properties:\n                      maxCpuSockets:\n                        description: MaxCpuSockets holds the maximum amount of sockets\n                          that can be hotplugged\n                        format: int32\n                        type: integer\n                      maxGuest:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          MaxGuest defines the maximum amount memory that can be allocated\n                          to the guest using hotplug.\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                      maxHotplugRatio:\n                        description: |-\n                          MaxHotplugRatio is the ratio used to define the max amount\n                          of a hotplug resource that can be made available to a VM\n                          when the specific Max* setting is not defined (MaxCpuSockets, MaxGuest)\n                          Example: VM is configured with 512Mi of guest memory, if MaxGuest is not\n                          defined and MaxHotplugRatio is 2 then MaxGuest = 1Gi\n                          defaults to 4\n                        format: int32\n                        type: integer\n                    type: object\n                  machineType:\n                    description: Deprecated. Use architectureConfiguration instead.\n                    type: string\n                  mediatedDevicesConfiguration:\n                    description: MediatedDevicesConfiguration holds information about\n                      MDEV types to be defined, if available\n                    properties:\n                      mediatedDeviceTypes:\n                        items:\n                          type: string\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      mediatedDevicesTypes:\n                        description: Deprecated. Use mediatedDeviceTypes instead.\n                        items:\n                          type: string\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      nodeMediatedDeviceTypes:\n                        items:\n                          description: NodeMediatedDeviceTypesConfig holds information\n                            about MDEV types to be defined in a specific node that\n                            matches the NodeSelector field.\n                          properties:\n                            mediatedDeviceTypes:\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mediatedDevicesTypes:\n                              description: Deprecated. Use mediatedDeviceTypes instead.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            nodeSelector:\n                              additionalProperties:\n                                type: string\n                              description: |-\n                                NodeSelector is a selector which must be true for the vmi to fit on a node.\n                                Selector which must match a node's labels for the vmi to be scheduled on that node.\n                                More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n                              type: object\n                          required:\n                          - nodeSelector\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  memBalloonStatsPeriod:\n                    format: int32\n                    type: integer\n                  migrations:\n                    description: |-\n                      MigrationConfiguration holds migration options.\n                      Can be overridden for specific groups of VMs though migration policies.\n                      Visit https://kubevirt.io/user-guide/operations/migration_policies/ for more information.\n                    properties:\n                      allowAutoConverge:\n                        description: |-\n                          AllowAutoConverge allows the platform to compromise performance/availability of VMIs to\n                          guarantee successful VMI live migrations. Defaults to false\n                        type: boolean\n                      allowPostCopy:\n                        description: |-\n                          AllowPostCopy enables post-copy live migrations. Such migrations allow even the busiest VMIs\n                          to successfully live-migrate. However, events like a network failure can cause a VMI crash.\n                          If set to true, migrations will still start in pre-copy, but switch to post-copy when\n                          CompletionTimeoutPerGiB triggers. Defaults to false\n                        type: boolean\n                      bandwidthPerMigration:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use.\n                          The value is in quantity per second. Defaults to 0 (no limit)\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                      completionTimeoutPerGiB:\n                        description: |-\n                          CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take.\n                          If a live-migration takes longer to migrate than this value multiplied by the size of the VMI,\n                          the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800\n                        format: int64\n                        type: integer\n                      disableTLS:\n                        description: |-\n                          When set to true, DisableTLS will disable the additional layer of live migration encryption\n                          provided by KubeVirt. This is usually a bad idea. Defaults to false\n                        type: boolean\n                      matchSELinuxLevelOnMigration:\n                        description: |-\n                          By default, the SELinux level of target virt-launcher pods is forced to the level of the source virt-launcher.\n                          When set to true, MatchSELinuxLevelOnMigration lets the CRI auto-assign a random level to the target.\n                          That will ensure the target virt-launcher doesn't share categories with another pod on the node.\n                          However, migrations will fail when using RWX volumes that don't automatically deal with SELinux levels.\n                        type: boolean\n                      network:\n                        description: |-\n                          Network is the name of the CNI network to use for live migrations. By default, migrations go\n                          through the pod network.\n                        type: string\n                      nodeDrainTaintKey:\n                        description: |-\n                          NodeDrainTaintKey defines the taint key that indicates a node should be drained.\n                          Note: this option relies on the deprecated node taint feature. Default: kubevirt.io/drain\n                        type: string\n                      parallelMigrationsPerCluster:\n                        description: |-\n                          ParallelMigrationsPerCluster is the total number of concurrent live migrations\n                          allowed cluster-wide. Defaults to 5\n                        format: int32\n                        type: integer\n                      parallelOutboundMigrationsPerNode:\n                        description: |-\n                          ParallelOutboundMigrationsPerNode is the maximum number of concurrent outgoing live migrations\n                          allowed per node. Defaults to 2\n                        format: int32\n                        type: integer\n                      progressTimeout:\n                        description: |-\n                          ProgressTimeout is the maximum number of seconds a live migration is allowed to make no progress.\n                          Hitting this timeout means a migration transferred 0 data for that many seconds. The migration is\n                          then considered stuck and therefore cancelled. Defaults to 150\n                        format: int64\n                        type: integer\n                      unsafeMigrationOverride:\n                        description: |-\n                          UnsafeMigrationOverride allows live migrations to occur even if the compatibility check\n                          indicates the migration will be unsafe to the guest. Defaults to false\n                        type: boolean\n                    type: object\n                  minCPUModel:\n                    type: string\n                  network:\n                    description: NetworkConfiguration holds network options\n                    properties:\n                      binding:\n                        additionalProperties:\n                          properties:\n                            computeResourceOverhead:\n                              description: |-\n                                ComputeResourceOverhead specifies the resource overhead that should be added to the compute container when using the binding.\n                                version: v1alphav1\n                              properties:\n                                claims:\n                                  description: |-\n                                    Claims lists the names of resources, defined in spec.resourceClaims,\n                                    that are used by this container.\n\n\n                                    This is an alpha field and requires enabling the\n                                    DynamicResourceAllocation feature gate.\n\n\n                                    This field is immutable. It can only be set for containers.\n                                  items:\n                                    description: ResourceClaim references one entry\n                                      in PodSpec.ResourceClaims.\n                                    properties:\n                                      name:\n                                        description: |-\n                                          Name must match the name of one entry in pod.spec.resourceClaims of\n                                          the Pod where this field is used. It makes that resource available\n                                          inside a container.\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-map-keys:\n                                  - name\n                                  x-kubernetes-list-type: map\n                                limits:\n                                  additionalProperties:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  description: |-\n                                    Limits describes the maximum amount of compute resources allowed.\n                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                  type: object\n                                requests:\n                                  additionalProperties:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  description: |-\n                                    Requests describes the minimum amount of compute resources required.\n                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                  type: object\n                              type: object\n                            domainAttachmentType:\n                              description: |-\n                                DomainAttachmentType is a standard domain network attachment method kubevirt supports.\n                                Supported values: \"tap\".\n                                The standard domain attachment can be used instead or in addition to the sidecarImage.\n                                version: 1alphav1\n                              type: string\n                            downwardAPI:\n                              description: |-\n                                DownwardAPI specifies what kind of data should be exposed to the binding plugin sidecar.\n                                Supported values: \"device-info\"\n                                version: v1alphav1\n                              type: string\n                            migration:\n                              description: |-\n                                Migration means the VM using the plugin can be safely migrated\n                                version: 1alphav1\n                              properties:\n                                method:\n                                  description: |-\n                                    Method defines a pre-defined migration methodology\n                                    version: 1alphav1\n                                  type: string\n                              type: object\n                            networkAttachmentDefinition:\n                              description: |-\n                                NetworkAttachmentDefinition references to a NetworkAttachmentDefinition CR object.\n                                Format: <name>, <namespace>/<name>.\n                                If namespace is not specified, VMI namespace is assumed.\n                                version: 1alphav1\n                              type: string\n                            sidecarImage:\n                              description: |-\n                                SidecarImage references a container image that runs in the virt-launcher pod.\n                                The sidecar handles (libvirt) domain configuration and optional services.\n                                version: 1alphav1\n                              type: string\n                          type: object\n                        type: object\n                      defaultNetworkInterface:\n                        type: string\n                      permitBridgeInterfaceOnPodNetwork:\n                        type: boolean\n                      permitSlirpInterface:\n                        description: |-\n                          DeprecatedPermitSlirpInterface is an alias for the deprecated PermitSlirpInterface.\n                          Deprecated: Removed in v1.3.\n                        type: boolean\n                    type: object\n                  obsoleteCPUModels:\n                    additionalProperties:\n                      type: boolean\n                    type: object\n                  ovmfPath:\n                    description: Deprecated. Use architectureConfiguration instead.\n                    type: string\n                  permittedHostDevices:\n                    description: PermittedHostDevices holds information about devices\n                      allowed for passthrough\n                    properties:\n                      mediatedDevices:\n                        items:\n                          description: MediatedHostDevice represents a host mediated\n                            device allowed for passthrough\n                          properties:\n                            externalResourceProvider:\n                              type: boolean\n                            mdevNameSelector:\n                              type: string\n                            resourceName:\n                              type: string\n                          required:\n                          - mdevNameSelector\n                          - resourceName\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      pciHostDevices:\n                        items:\n                          description: PciHostDevice represents a host PCI device\n                            allowed for passthrough\n                          properties:\n                            externalResourceProvider:\n                              description: |-\n                                If true, KubeVirt will leave the allocation and monitoring to an\n                                external device plugin\n                              type: boolean\n                            pciVendorSelector:\n                              description: The vendor_id:product_id tuple of the PCI\n                                device\n                              type: string\n                            resourceName:\n                              description: |-\n                                The name of the resource that is representing the device. Exposed by\n                                a device plugin and requested by VMs. Typically of the form\n                                vendor.com/product_name\n                              type: string\n                          required:\n                          - pciVendorSelector\n                          - resourceName\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      usb:\n                        items:\n                          properties:\n                            externalResourceProvider:\n                              description: |-\n                                If true, KubeVirt will leave the allocation and monitoring to an\n                                external device plugin\n                              type: boolean\n                            resourceName:\n                              description: |-\n                                Identifies the list of USB host devices.\n                                e.g: kubevirt.io/storage, kubevirt.io/bootable-usb, etc\n                              type: string\n                            selectors:\n                              items:\n                                properties:\n                                  product:\n                                    type: string\n                                  vendor:\n                                    type: string\n                                required:\n                                - product\n                                - vendor\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          required:\n                          - resourceName\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  seccompConfiguration:\n                    description: SeccompConfiguration holds Seccomp configuration\n                      for Kubevirt components\n                    properties:\n                      virtualMachineInstanceProfile:\n                        description: VirtualMachineInstanceProfile defines what profile\n                          should be used with virt-launcher. Defaults to none\n                        properties:\n                          customProfile:\n                            description: CustomProfile allows to request arbitrary\n                              profile for virt-launcher\n                            properties:\n                              localhostProfile:\n                                type: string\n                              runtimeDefaultProfile:\n                                type: boolean\n                            type: object\n                        type: object\n                    type: object\n                  selinuxLauncherType:\n                    type: string\n                  smbios:\n                    properties:\n                      family:\n                        type: string\n                      manufacturer:\n                        type: string\n                      product:\n                        type: string\n                      sku:\n                        type: string\n                      version:\n                        type: string\n                    type: object\n                  supportContainerResources:\n                    description: SupportContainerResources specifies the resource\n                      requirements for various types of supporting containers such\n                      as container disks/virtiofs/sidecars and hotplug attachment\n                      pods. If omitted a sensible default will be supplied.\n                    items:\n                      description: SupportContainerResources are used to specify the\n                        cpu/memory request and limits for the containers that support\n                        various features of Virtual Machines. These containers are\n                        usually idle and don't require a lot of memory or cpu.\n                      properties:\n                        resources:\n                          description: ResourceRequirements describes the compute\n                            resource requirements.\n                          properties:\n                            claims:\n                              description: |-\n                                Claims lists the names of resources, defined in spec.resourceClaims,\n                                that are used by this container.\n\n\n                                This is an alpha field and requires enabling the\n                                DynamicResourceAllocation feature gate.\n\n\n                                This field is immutable. It can only be set for containers.\n                              items:\n                                description: ResourceClaim references one entry in\n                                  PodSpec.ResourceClaims.\n                                properties:\n                                  name:\n                                    description: |-\n                                      Name must match the name of one entry in pod.spec.resourceClaims of\n                                      the Pod where this field is used. It makes that resource available\n                                      inside a container.\n                                    type: string\n                                required:\n                                - name\n                                type: object\n                              type: array\n                              x-kubernetes-list-map-keys:\n                              - name\n                              x-kubernetes-list-type: map\n                            limits:\n                              additionalProperties:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                x-kubernetes-int-or-string: true\n                              description: |-\n                                Limits describes the maximum amount of compute resources allowed.\n                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                              type: object\n                            requests:\n                              additionalProperties:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                x-kubernetes-int-or-string: true\n                              description: |-\n                                Requests describes the minimum amount of compute resources required.\n                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                              type: object\n                          type: object\n                        type:\n                          type: string\n                      required:\n                      - resources\n                      - type\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - type\n                    x-kubernetes-list-type: map\n                  supportedGuestAgentVersions:\n                    description: deprecated\n                    items:\n                      type: string\n                    type: array\n                  tlsConfiguration:\n                    description: TLSConfiguration holds TLS options\n                    properties:\n                      ciphers:\n                        items:\n                          type: string\n                        type: array\n                        x-kubernetes-list-type: set\n                      minTLSVersion:\n                        description: |-\n                          MinTLSVersion is a way to specify the minimum protocol version that is acceptable for TLS connections.\n                          Protocol versions are based on the following most common TLS configurations:\n\n\n                            https://ssl-config.mozilla.org/\n\n\n                          Note that SSLv3.0 is not a supported protocol version due to well known\n                          vulnerabilities such as POODLE: https://en.wikipedia.org/wiki/POODLE\n                        enum:\n                        - VersionTLS10\n                        - VersionTLS11\n                        - VersionTLS12\n                        - VersionTLS13\n                        type: string\n                    type: object\n                  virtualMachineInstancesPerNode:\n                    type: integer\n                  virtualMachineOptions:\n                    description: VirtualMachineOptions holds the cluster level information\n                      regarding the virtual machine.\n                    properties:\n                      disableFreePageReporting:\n                        description: |-\n                          DisableFreePageReporting disable the free page reporting of\n                          memory balloon device https://libvirt.org/formatdomain.html#memory-balloon-device.\n                          This will have effect only if AutoattachMemBalloon is not false and the vmi is not\n                          requesting any high performance feature (dedicatedCPU/realtime/hugePages), in which free page reporting is always disabled.\n                        type: object\n                      disableSerialConsoleLog:\n                        description: |-\n                          DisableSerialConsoleLog disables logging the auto-attached default serial console.\n                          If not set, serial console logs will be written to a file and then streamed from a container named 'guest-console-log'.\n                          The value can be individually overridden for each VM, not relevant if AutoattachSerialConsole is disabled.\n                        type: object\n                    type: object\n                  vmRolloutStrategy:\n                    description: VMRolloutStrategy defines how changes to a VM object\n                      propagate to its VMI\n                    enum:\n                    - Stage\n                    - LiveUpdate\n                    nullable: true\n                    type: string\n                  vmStateStorageClass:\n                    description: |-\n                      VMStateStorageClass is the name of the storage class to use for the PVCs created to preserve VM state, like TPM.\n                      The storage class must support RWX in filesystem mode.\n                    type: string\n                  webhookConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                type: object\n              customizeComponents:\n                properties:\n                  flags:\n                    description: Configure the value used for deployment and daemonset\n                      resources\n                    properties:\n                      api:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      controller:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      handler:\n                        additionalProperties:\n                          type: string\n                        type: object\n                    type: object\n                  patches:\n                    items:\n                      properties:\n                        patch:\n                          type: string\n                        resourceName:\n                          minLength: 1\n                          type: string\n                        resourceType:\n                          minLength: 1\n                          type: string\n                        type:\n                          type: string\n                      required:\n                      - patch\n                      - resourceName\n                      - resourceType\n                      - type\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                type: object\n              imagePullPolicy:\n                description: The ImagePullPolicy to use.\n                type: string\n              imagePullSecrets:\n                description: |-\n                  The imagePullSecrets to pull the container images from\n                  Defaults to none\n                items:\n                  description: |-\n                    LocalObjectReference contains enough information to let you locate the\n                    referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: |-\n                        Name of the referent.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n                x-kubernetes-list-type: atomic\n              imageRegistry:\n                description: |-\n                  The image registry to pull the container images from\n                  Defaults to the same registry the operator's container image is pulled from.\n                type: string\n              imageTag:\n                description: |-\n                  The image tag to use for the continer images installed.\n                  Defaults to the same tag as the operator's container image.\n                type: string\n              infra:\n                description: selectors and tolerations that should apply to KubeVirt\n                  infrastructure components\n                properties:\n                  nodePlacement:\n                    description: |-\n                      nodePlacement describes scheduling configuration for specific\n                      KubeVirt components\n                    properties:\n                      affinity:\n                        description: |-\n                          affinity enables pod affinity/anti-affinity placement expanding the types of constraints\n                          that can be expressed with nodeSelector.\n                          affinity is going to be applied to the relevant kind of pods in parallel with nodeSelector\n                          See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\n                        properties:\n                          nodeAffinity:\n                            description: Describes node affinity scheduling rules\n                              for the pod.\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: |-\n                                    An empty preferred scheduling term matches all objects with implicit weight 0\n                                    (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                  properties:\n                                    preference:\n                                      description: A node selector term, associated\n                                        with the corresponding weight.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    weight:\n                                      description: Weight associated with matching\n                                        the corresponding nodeSelectorTerm, in the\n                                        range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - preference\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to an update), the system\n                                  may or may not try to eventually evict the pod from its node.\n                                properties:\n                                  nodeSelectorTerms:\n                                    description: Required. A list of node selector\n                                      terms. The terms are ORed.\n                                    items:\n                                      description: |-\n                                        A null or empty node selector term matches no objects. The requirements of\n                                        them are ANDed.\n                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                required:\n                                - nodeSelectorTerms\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          podAffinity:\n                            description: Describes pod affinity scheduling rules (e.g.\n                              co-locate this pod in the same node, zone, etc. as some\n                              other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                          podAntiAffinity:\n                            description: Describes pod anti-affinity scheduling rules\n                              (e.g. avoid putting this pod in the same node, zone,\n                              etc. as some other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the anti-affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling anti-affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the anti-affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the anti-affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                        type: object\n                      nodeSelector:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          nodeSelector is the node selector applied to the relevant kind of pods\n                          It specifies a map of key-value pairs: for the pod to be eligible to run on a node,\n                          the node must have each of the indicated key-value pairs as labels\n                          (it can have additional labels as well).\n                          See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n                        type: object\n                      tolerations:\n                        description: |-\n                          tolerations is a list of tolerations applied to the relevant kind of pods\n                          See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ for more info.\n                          These are additional tolerations other than default ones.\n                        items:\n                          description: |-\n                            The pod this Toleration is attached to tolerates any taint that matches\n                            the triple <key,value,effect> using the matching operator <operator>.\n                          properties:\n                            effect:\n                              description: |-\n                                Effect indicates the taint effect to match. Empty means match all taint effects.\n                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                              type: string\n                            key:\n                              description: |-\n                                Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                              type: string\n                            operator:\n                              description: |-\n                                Operator represents a key's relationship to the value.\n                                Valid operators are Exists and Equal. Defaults to Equal.\n                                Exists is equivalent to wildcard for value, so that a pod can\n                                tolerate all taints of a particular category.\n                              type: string\n                            tolerationSeconds:\n                              description: |-\n                                TolerationSeconds represents the period of time the toleration (which must be\n                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                                it is not set, which means tolerate the taint forever (do not evict). Zero and\n                                negative values will be treated as 0 (evict immediately) by the system.\n                              format: int64\n                              type: integer\n                            value:\n                              description: |-\n                                Value is the taint value the toleration matches to.\n                                If the operator is Exists, the value should be empty, otherwise just a regular string.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  replicas:\n                    description: |-\n                      replicas indicates how many replicas should be created for each KubeVirt infrastructure\n                      component (like virt-api or virt-controller). Defaults to 2.\n                      WARNING: this is an advanced feature that prevents auto-scaling for core kubevirt components. Please use with caution!\n                    type: integer\n                type: object\n              monitorAccount:\n                description: |-\n                  The name of the Prometheus service account that needs read-access to KubeVirt endpoints\n                  Defaults to prometheus-k8s\n                type: string\n              monitorNamespace:\n                description: |-\n                  The namespace Prometheus is deployed in\n                  Defaults to openshift-monitor\n                type: string\n              productComponent:\n                description: |-\n                  Designate the apps.kubevirt.io/component label for KubeVirt components.\n                  Useful if KubeVirt is included as part of a product.\n                  If ProductComponent is not specified, the component label default value is kubevirt.\n                type: string\n              productName:\n                description: |-\n                  Designate the apps.kubevirt.io/part-of label for KubeVirt components.\n                  Useful if KubeVirt is included as part of a product.\n                  If ProductName is not specified, the part-of label will be omitted.\n                type: string\n              productVersion:\n                description: |-\n                  Designate the apps.kubevirt.io/version label for KubeVirt components.\n                  Useful if KubeVirt is included as part of a product.\n                  If ProductVersion is not specified, KubeVirt's version will be used.\n                type: string\n              serviceMonitorNamespace:\n                description: |-\n                  The namespace the service monitor will be deployed\n                   When ServiceMonitorNamespace is set, then we'll install the service monitor object in that namespace\n                  otherwise we will use the monitoring namespace.\n                type: string\n              uninstallStrategy:\n                description: |-\n                  Specifies if kubevirt can be deleted if workloads are still present.\n                  This is mainly a precaution to avoid accidental data loss\n                type: string\n              workloadUpdateStrategy:\n                description: |-\n                  WorkloadUpdateStrategy defines at the cluster level how to handle\n                  automated workload updates\n                properties:\n                  batchEvictionInterval:\n                    description: |-\n                      BatchEvictionInterval Represents the interval to wait before issuing the next\n                      batch of shutdowns\n\n\n                      Defaults to 1 minute\n                    type: string\n                  batchEvictionSize:\n                    description: |-\n                      BatchEvictionSize Represents the number of VMIs that can be forced updated per\n                      the BatchShutdownInteral interval\n\n\n                      Defaults to 10\n                    type: integer\n                  workloadUpdateMethods:\n                    description: |-\n                      WorkloadUpdateMethods defines the methods that can be used to disrupt workloads\n                      during automated workload updates.\n                      When multiple methods are present, the least disruptive method takes\n                      precedence over more disruptive methods. For example if both LiveMigrate and Shutdown\n                      methods are listed, only VMs which are not live migratable will be restarted/shutdown\n\n\n                      An empty list defaults to no automated workload updating\n                    items:\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: atomic\n                type: object\n              workloads:\n                description: selectors and tolerations that should apply to KubeVirt\n                  workloads\n                properties:\n                  nodePlacement:\n                    description: |-\n                      nodePlacement describes scheduling configuration for specific\n                      KubeVirt components\n                    properties:\n                      affinity:\n                        description: |-\n                          affinity enables pod affinity/anti-affinity placement expanding the types of constraints\n                          that can be expressed with nodeSelector.\n                          affinity is going to be applied to the relevant kind of pods in parallel with nodeSelector\n                          See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\n                        properties:\n                          nodeAffinity:\n                            description: Describes node affinity scheduling rules\n                              for the pod.\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: |-\n                                    An empty preferred scheduling term matches all objects with implicit weight 0\n                                    (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                  properties:\n                                    preference:\n                                      description: A node selector term, associated\n                                        with the corresponding weight.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    weight:\n                                      description: Weight associated with matching\n                                        the corresponding nodeSelectorTerm, in the\n                                        range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - preference\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to an update), the system\n                                  may or may not try to eventually evict the pod from its node.\n                                properties:\n                                  nodeSelectorTerms:\n                                    description: Required. A list of node selector\n                                      terms. The terms are ORed.\n                                    items:\n                                      description: |-\n                                        A null or empty node selector term matches no objects. The requirements of\n                                        them are ANDed.\n                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                required:\n                                - nodeSelectorTerms\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          podAffinity:\n                            description: Describes pod affinity scheduling rules (e.g.\n                              co-locate this pod in the same node, zone, etc. as some\n                              other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                          podAntiAffinity:\n                            description: Describes pod anti-affinity scheduling rules\n                              (e.g. avoid putting this pod in the same node, zone,\n                              etc. as some other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the anti-affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling anti-affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the anti-affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the anti-affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                        type: object\n                      nodeSelector:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          nodeSelector is the node selector applied to the relevant kind of pods\n                          It specifies a map of key-value pairs: for the pod to be eligible to run on a node,\n                          the node must have each of the indicated key-value pairs as labels\n                          (it can have additional labels as well).\n                          See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n                        type: object\n                      tolerations:\n                        description: |-\n                          tolerations is a list of tolerations applied to the relevant kind of pods\n                          See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ for more info.\n                          These are additional tolerations other than default ones.\n                        items:\n                          description: |-\n                            The pod this Toleration is attached to tolerates any taint that matches\n                            the triple <key,value,effect> using the matching operator <operator>.\n                          properties:\n                            effect:\n                              description: |-\n                                Effect indicates the taint effect to match. Empty means match all taint effects.\n                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                              type: string\n                            key:\n                              description: |-\n                                Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                              type: string\n                            operator:\n                              description: |-\n                                Operator represents a key's relationship to the value.\n                                Valid operators are Exists and Equal. Defaults to Equal.\n                                Exists is equivalent to wildcard for value, so that a pod can\n                                tolerate all taints of a particular category.\n                              type: string\n                            tolerationSeconds:\n                              description: |-\n                                TolerationSeconds represents the period of time the toleration (which must be\n                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                                it is not set, which means tolerate the taint forever (do not evict). Zero and\n                                negative values will be treated as 0 (evict immediately) by the system.\n                              format: int64\n                              type: integer\n                            value:\n                              description: |-\n                                Value is the taint value the toleration matches to.\n                                If the operator is Exists, the value should be empty, otherwise just a regular string.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  replicas:\n                    description: |-\n                      replicas indicates how many replicas should be created for each KubeVirt infrastructure\n                      component (like virt-api or virt-controller). Defaults to 2.\n                      WARNING: this is an advanced feature that prevents auto-scaling for core kubevirt components. Please use with caution!\n                    type: integer\n                type: object\n            type: object\n          status:\n            description: KubeVirtStatus represents information pertaining to a KubeVirt\n              deployment.\n            properties:\n              conditions:\n                items:\n                  description: KubeVirtCondition represents a condition of a KubeVirt\n                    deployment\n                  properties:\n                    lastProbeTime:\n                      format: date-time\n                      nullable: true\n                      type: string\n                    lastTransitionTime:\n                      format: date-time\n                      nullable: true\n                      type: string\n                    message:\n                      type: string\n                    reason:\n                      type: string\n                    status:\n                      type: string\n                    type:\n                      type: string\n                  required:\n                  - status\n                  - type\n                  type: object\n                type: array\n              defaultArchitecture:\n                type: string\n              generations:\n                items:\n                  description: GenerationStatus keeps track of the generation for\n                    a given resource so that decisions about forced updates can be\n                    made.\n                  properties:\n                    group:\n                      description: group is the group of the thing you're tracking\n                      type: string\n                    hash:\n                      description: hash is an optional field set for resources without\n                        generation that are content sensitive like secrets and configmaps\n                      type: string\n                    lastGeneration:\n                      description: lastGeneration is the last generation of the workload\n                        controller involved\n                      format: int64\n                      type: integer\n                    name:\n                      description: name is the name of the thing you're tracking\n                      type: string\n                    namespace:\n                      description: namespace is where the thing you're tracking is\n                      type: string\n                    resource:\n                      description: resource is the resource type of the thing you're\n                        tracking\n                      type: string\n                  required:\n                  - group\n                  - lastGeneration\n                  - name\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-type: atomic\n              observedDeploymentConfig:\n                type: string\n              observedDeploymentID:\n                type: string\n              observedGeneration:\n                format: int64\n                type: integer\n              observedKubeVirtRegistry:\n                type: string\n              observedKubeVirtVersion:\n                type: string\n              operatorVersion:\n                type: string\n              outdatedVirtualMachineInstanceWorkloads:\n                type: integer\n              phase:\n                description: KubeVirtPhase is a label for the phase of a KubeVirt\n                  deployment at the current time.\n                type: string\n              targetDeploymentConfig:\n                type: string\n              targetDeploymentID:\n                type: string\n              targetKubeVirtRegistry:\n                type: string\n              targetKubeVirtVersion:\n                type: string\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n  - additionalPrinterColumns:\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - jsonPath: .status.phase\n      name: Phase\n      type: string\n    deprecated: true\n    deprecationWarning: kubevirt.io/v1alpha3 is now deprecated and will be removed\n      in a future release.\n    name: v1alpha3\n    schema:\n      openAPIV3Schema:\n        description: KubeVirt represents the object deploying all KubeVirt resources\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              certificateRotateStrategy:\n                properties:\n                  selfSigned:\n                    properties:\n                      ca:\n                        description: |-\n                          CA configuration\n                          CA certs are kept in the CA bundle as long as they are valid\n                        properties:\n                          duration:\n                            description: The requested 'duration' (i.e. lifetime)\n                              of the Certificate.\n                            type: string\n                          renewBefore:\n                            description: |-\n                              The amount of time before the currently issued certificate's \"notAfter\"\n                              time that we will begin to attempt to renew the certificate.\n                            type: string\n                        type: object\n                      caOverlapInterval:\n                        description: Deprecated. Use CA.Duration and CA.RenewBefore\n                          instead\n                        type: string\n                      caRotateInterval:\n                        description: Deprecated. Use CA.Duration instead\n                        type: string\n                      certRotateInterval:\n                        description: Deprecated. Use Server.Duration instead\n                        type: string\n                      server:\n                        description: |-\n                          Server configuration\n                          Certs are rotated and discarded\n                        properties:\n                          duration:\n                            description: The requested 'duration' (i.e. lifetime)\n                              of the Certificate.\n                            type: string\n                          renewBefore:\n                            description: |-\n                              The amount of time before the currently issued certificate's \"notAfter\"\n                              time that we will begin to attempt to renew the certificate.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              configuration:\n                description: |-\n                  holds kubevirt configurations.\n                  same as the virt-configMap\n                properties:\n                  additionalGuestMemoryOverheadRatio:\n                    description: |-\n                      AdditionalGuestMemoryOverheadRatio can be used to increase the virtualization infrastructure\n                      overhead. This is useful, since the calculation of this overhead is not accurate and cannot\n                      be entirely known in advance. The ratio that is being set determines by which factor to increase\n                      the overhead calculated by Kubevirt. A higher ratio means that the VMs would be less compromised\n                      by node pressures, but would mean that fewer VMs could be scheduled to a node.\n                      If not set, the default is 1.\n                    type: string\n                  apiConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  architectureConfiguration:\n                    properties:\n                      amd64:\n                        properties:\n                          emulatedMachines:\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          machineType:\n                            type: string\n                          ovmfPath:\n                            type: string\n                        type: object\n                      arm64:\n                        properties:\n                          emulatedMachines:\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          machineType:\n                            type: string\n                          ovmfPath:\n                            type: string\n                        type: object\n                      defaultArchitecture:\n                        type: string\n                      ppc64le:\n                        properties:\n                          emulatedMachines:\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          machineType:\n                            type: string\n                          ovmfPath:\n                            type: string\n                        type: object\n                    type: object\n                  autoCPULimitNamespaceLabelSelector:\n                    description: |-\n                      When set, AutoCPULimitNamespaceLabelSelector will set a CPU limit on virt-launcher for VMIs running inside\n                      namespaces that match the label selector.\n                      The CPU limit will equal the number of requested vCPUs.\n                      This setting does not apply to VMIs with dedicated CPUs.\n                    properties:\n                      matchExpressions:\n                        description: matchExpressions is a list of label selector\n                          requirements. The requirements are ANDed.\n                        items:\n                          description: |-\n                            A label selector requirement is a selector that contains values, a key, and an operator that\n                            relates the key and values.\n                          properties:\n                            key:\n                              description: key is the label key that the selector\n                                applies to.\n                              type: string\n                            operator:\n                              description: |-\n                                operator represents a key's relationship to a set of values.\n                                Valid operators are In, NotIn, Exists and DoesNotExist.\n                              type: string\n                            values:\n                              description: |-\n                                values is an array of string values. If the operator is In or NotIn,\n                                the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                the values array must be empty. This array is replaced during a strategic\n                                merge patch.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          required:\n                          - key\n                          - operator\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      matchLabels:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                          map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                          operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                        type: object\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  controllerConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  cpuModel:\n                    type: string\n                  cpuRequest:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  defaultRuntimeClass:\n                    type: string\n                  developerConfiguration:\n                    description: DeveloperConfiguration holds developer options\n                    properties:\n                      cpuAllocationRatio:\n                        description: |-\n                          For each requested virtual CPU, CPUAllocationRatio defines how much physical CPU to request per VMI\n                          from the hosting node. The value is in fraction of a CPU thread (or core on non-hyperthreaded nodes).\n                          For example, a value of 1 means 1 physical CPU thread per VMI CPU thread.\n                          A value of 100 would be 1% of a physical thread allocated for each requested VMI thread.\n                          This option has no effect on VMIs that request dedicated CPUs. More information at:\n                          https://kubevirt.io/user-guide/operations/node_overcommit/#node-cpu-allocation-ratio\n                          Defaults to 10\n                        type: integer\n                      diskVerification:\n                        description: DiskVerification holds container disks verification\n                          limits\n                        properties:\n                          memoryLimit:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                        required:\n                        - memoryLimit\n                        type: object\n                      featureGates:\n                        description: FeatureGates is the list of experimental features\n                          to enable. Defaults to none\n                        items:\n                          type: string\n                        type: array\n                      logVerbosity:\n                        description: LogVerbosity sets log verbosity level of  various\n                          components\n                        properties:\n                          nodeVerbosity:\n                            additionalProperties:\n                              type: integer\n                            description: NodeVerbosity represents a map of nodes with\n                              a specific verbosity level\n                            type: object\n                          virtAPI:\n                            type: integer\n                          virtController:\n                            type: integer\n                          virtHandler:\n                            type: integer\n                          virtLauncher:\n                            type: integer\n                          virtOperator:\n                            type: integer\n                        type: object\n                      memoryOvercommit:\n                        description: |-\n                          MemoryOvercommit is the percentage of memory we want to give VMIs compared to the amount\n                          given to its parent pod (virt-launcher). For example, a value of 102 means the VMI will\n                          \"see\" 2% more memory than its parent pod. Values under 100 are effectively \"undercommits\".\n                          Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully.\n                          Defaults to 100\n                        type: integer\n                      minimumClusterTSCFrequency:\n                        description: |-\n                          Allow overriding the automatically determined minimum TSC frequency of the cluster\n                          and fixate the minimum to this frequency.\n                        format: int64\n                        type: integer\n                      minimumReservePVCBytes:\n                        description: |-\n                          MinimumReservePVCBytes is the amount of space, in bytes, to leave unused on disks.\n                          Defaults to 131072 (128KiB)\n                        format: int64\n                        type: integer\n                      nodeSelectors:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          NodeSelectors allows restricting VMI creation to nodes that match a set of labels.\n                          Defaults to none\n                        type: object\n                      pvcTolerateLessSpaceUpToPercent:\n                        description: |-\n                          LessPVCSpaceToleration determines how much smaller, in percentage, disk PVCs are\n                          allowed to be compared to the requested size (to account for various overheads).\n                          Defaults to 10\n                        type: integer\n                      useEmulation:\n                        description: |-\n                          UseEmulation can be set to true to allow fallback to software emulation\n                          in case hardware-assisted emulation is not available. Defaults to false\n                        type: boolean\n                    type: object\n                  emulatedMachines:\n                    description: Deprecated. Use architectureConfiguration instead.\n                    items:\n                      type: string\n                    type: array\n                  evictionStrategy:\n                    description: |-\n                      EvictionStrategy defines at the cluster level if the VirtualMachineInstance should be\n                      migrated instead of shut-off in case of a node drain. If the VirtualMachineInstance specific\n                      field is set it overrides the cluster level one.\n                    type: string\n                  handlerConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  imagePullPolicy:\n                    description: PullPolicy describes a policy for if/when to pull\n                      a container image\n                    type: string\n                  ksmConfiguration:\n                    description: KSMConfiguration holds the information regarding\n                      the enabling the KSM in the nodes (if available).\n                    properties:\n                      nodeLabelSelector:\n                        description: |-\n                          NodeLabelSelector is a selector that filters in which nodes the KSM will be enabled.\n                          Empty NodeLabelSelector will enable ksm for every node.\n                        properties:\n                          matchExpressions:\n                            description: matchExpressions is a list of label selector\n                              requirements. The requirements are ANDed.\n                            items:\n                              description: |-\n                                A label selector requirement is a selector that contains values, a key, and an operator that\n                                relates the key and values.\n                              properties:\n                                key:\n                                  description: key is the label key that the selector\n                                    applies to.\n                                  type: string\n                                operator:\n                                  description: |-\n                                    operator represents a key's relationship to a set of values.\n                                    Valid operators are In, NotIn, Exists and DoesNotExist.\n                                  type: string\n                                values:\n                                  description: |-\n                                    values is an array of string values. If the operator is In or NotIn,\n                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                    the values array must be empty. This array is replaced during a strategic\n                                    merge patch.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              required:\n                              - key\n                              - operator\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          matchLabels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                              map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                              operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                            type: object\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  liveUpdateConfiguration:\n                    description: LiveUpdateConfiguration holds defaults for live update\n                      features\n                    properties:\n                      maxCpuSockets:\n                        description: MaxCpuSockets holds the maximum amount of sockets\n                          that can be hotplugged\n                        format: int32\n                        type: integer\n                      maxGuest:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          MaxGuest defines the maximum amount memory that can be allocated\n                          to the guest using hotplug.\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                      maxHotplugRatio:\n                        description: |-\n                          MaxHotplugRatio is the ratio used to define the max amount\n                          of a hotplug resource that can be made available to a VM\n                          when the specific Max* setting is not defined (MaxCpuSockets, MaxGuest)\n                          Example: VM is configured with 512Mi of guest memory, if MaxGuest is not\n                          defined and MaxHotplugRatio is 2 then MaxGuest = 1Gi\n                          defaults to 4\n                        format: int32\n                        type: integer\n                    type: object\n                  machineType:\n                    description: Deprecated. Use architectureConfiguration instead.\n                    type: string\n                  mediatedDevicesConfiguration:\n                    description: MediatedDevicesConfiguration holds information about\n                      MDEV types to be defined, if available\n                    properties:\n                      mediatedDeviceTypes:\n                        items:\n                          type: string\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      mediatedDevicesTypes:\n                        description: Deprecated. Use mediatedDeviceTypes instead.\n                        items:\n                          type: string\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      nodeMediatedDeviceTypes:\n                        items:\n                          description: NodeMediatedDeviceTypesConfig holds information\n                            about MDEV types to be defined in a specific node that\n                            matches the NodeSelector field.\n                          properties:\n                            mediatedDeviceTypes:\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mediatedDevicesTypes:\n                              description: Deprecated. Use mediatedDeviceTypes instead.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            nodeSelector:\n                              additionalProperties:\n                                type: string\n                              description: |-\n                                NodeSelector is a selector which must be true for the vmi to fit on a node.\n                                Selector which must match a node's labels for the vmi to be scheduled on that node.\n                                More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n                              type: object\n                          required:\n                          - nodeSelector\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  memBalloonStatsPeriod:\n                    format: int32\n                    type: integer\n                  migrations:\n                    description: |-\n                      MigrationConfiguration holds migration options.\n                      Can be overridden for specific groups of VMs though migration policies.\n                      Visit https://kubevirt.io/user-guide/operations/migration_policies/ for more information.\n                    properties:\n                      allowAutoConverge:\n                        description: |-\n                          AllowAutoConverge allows the platform to compromise performance/availability of VMIs to\n                          guarantee successful VMI live migrations. Defaults to false\n                        type: boolean\n                      allowPostCopy:\n                        description: |-\n                          AllowPostCopy enables post-copy live migrations. Such migrations allow even the busiest VMIs\n                          to successfully live-migrate. However, events like a network failure can cause a VMI crash.\n                          If set to true, migrations will still start in pre-copy, but switch to post-copy when\n                          CompletionTimeoutPerGiB triggers. Defaults to false\n                        type: boolean\n                      bandwidthPerMigration:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use.\n                          The value is in quantity per second. Defaults to 0 (no limit)\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                      completionTimeoutPerGiB:\n                        description: |-\n                          CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take.\n                          If a live-migration takes longer to migrate than this value multiplied by the size of the VMI,\n                          the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800\n                        format: int64\n                        type: integer\n                      disableTLS:\n                        description: |-\n                          When set to true, DisableTLS will disable the additional layer of live migration encryption\n                          provided by KubeVirt. This is usually a bad idea. Defaults to false\n                        type: boolean\n                      matchSELinuxLevelOnMigration:\n                        description: |-\n                          By default, the SELinux level of target virt-launcher pods is forced to the level of the source virt-launcher.\n                          When set to true, MatchSELinuxLevelOnMigration lets the CRI auto-assign a random level to the target.\n                          That will ensure the target virt-launcher doesn't share categories with another pod on the node.\n                          However, migrations will fail when using RWX volumes that don't automatically deal with SELinux levels.\n                        type: boolean\n                      network:\n                        description: |-\n                          Network is the name of the CNI network to use for live migrations. By default, migrations go\n                          through the pod network.\n                        type: string\n                      nodeDrainTaintKey:\n                        description: |-\n                          NodeDrainTaintKey defines the taint key that indicates a node should be drained.\n                          Note: this option relies on the deprecated node taint feature. Default: kubevirt.io/drain\n                        type: string\n                      parallelMigrationsPerCluster:\n                        description: |-\n                          ParallelMigrationsPerCluster is the total number of concurrent live migrations\n                          allowed cluster-wide. Defaults to 5\n                        format: int32\n                        type: integer\n                      parallelOutboundMigrationsPerNode:\n                        description: |-\n                          ParallelOutboundMigrationsPerNode is the maximum number of concurrent outgoing live migrations\n                          allowed per node. Defaults to 2\n                        format: int32\n                        type: integer\n                      progressTimeout:\n                        description: |-\n                          ProgressTimeout is the maximum number of seconds a live migration is allowed to make no progress.\n                          Hitting this timeout means a migration transferred 0 data for that many seconds. The migration is\n                          then considered stuck and therefore cancelled. Defaults to 150\n                        format: int64\n                        type: integer\n                      unsafeMigrationOverride:\n                        description: |-\n                          UnsafeMigrationOverride allows live migrations to occur even if the compatibility check\n                          indicates the migration will be unsafe to the guest. Defaults to false\n                        type: boolean\n                    type: object\n                  minCPUModel:\n                    type: string\n                  network:\n                    description: NetworkConfiguration holds network options\n                    properties:\n                      binding:\n                        additionalProperties:\n                          properties:\n                            computeResourceOverhead:\n                              description: |-\n                                ComputeResourceOverhead specifies the resource overhead that should be added to the compute container when using the binding.\n                                version: v1alphav1\n                              properties:\n                                claims:\n                                  description: |-\n                                    Claims lists the names of resources, defined in spec.resourceClaims,\n                                    that are used by this container.\n\n\n                                    This is an alpha field and requires enabling the\n                                    DynamicResourceAllocation feature gate.\n\n\n                                    This field is immutable. It can only be set for containers.\n                                  items:\n                                    description: ResourceClaim references one entry\n                                      in PodSpec.ResourceClaims.\n                                    properties:\n                                      name:\n                                        description: |-\n                                          Name must match the name of one entry in pod.spec.resourceClaims of\n                                          the Pod where this field is used. It makes that resource available\n                                          inside a container.\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-map-keys:\n                                  - name\n                                  x-kubernetes-list-type: map\n                                limits:\n                                  additionalProperties:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  description: |-\n                                    Limits describes the maximum amount of compute resources allowed.\n                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                  type: object\n                                requests:\n                                  additionalProperties:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  description: |-\n                                    Requests describes the minimum amount of compute resources required.\n                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                  type: object\n                              type: object\n                            domainAttachmentType:\n                              description: |-\n                                DomainAttachmentType is a standard domain network attachment method kubevirt supports.\n                                Supported values: \"tap\".\n                                The standard domain attachment can be used instead or in addition to the sidecarImage.\n                                version: 1alphav1\n                              type: string\n                            downwardAPI:\n                              description: |-\n                                DownwardAPI specifies what kind of data should be exposed to the binding plugin sidecar.\n                                Supported values: \"device-info\"\n                                version: v1alphav1\n                              type: string\n                            migration:\n                              description: |-\n                                Migration means the VM using the plugin can be safely migrated\n                                version: 1alphav1\n                              properties:\n                                method:\n                                  description: |-\n                                    Method defines a pre-defined migration methodology\n                                    version: 1alphav1\n                                  type: string\n                              type: object\n                            networkAttachmentDefinition:\n                              description: |-\n                                NetworkAttachmentDefinition references to a NetworkAttachmentDefinition CR object.\n                                Format: <name>, <namespace>/<name>.\n                                If namespace is not specified, VMI namespace is assumed.\n                                version: 1alphav1\n                              type: string\n                            sidecarImage:\n                              description: |-\n                                SidecarImage references a container image that runs in the virt-launcher pod.\n                                The sidecar handles (libvirt) domain configuration and optional services.\n                                version: 1alphav1\n                              type: string\n                          type: object\n                        type: object\n                      defaultNetworkInterface:\n                        type: string\n                      permitBridgeInterfaceOnPodNetwork:\n                        type: boolean\n                      permitSlirpInterface:\n                        description: |-\n                          DeprecatedPermitSlirpInterface is an alias for the deprecated PermitSlirpInterface.\n                          Deprecated: Removed in v1.3.\n                        type: boolean\n                    type: object\n                  obsoleteCPUModels:\n                    additionalProperties:\n                      type: boolean\n                    type: object\n                  ovmfPath:\n                    description: Deprecated. Use architectureConfiguration instead.\n                    type: string\n                  permittedHostDevices:\n                    description: PermittedHostDevices holds information about devices\n                      allowed for passthrough\n                    properties:\n                      mediatedDevices:\n                        items:\n                          description: MediatedHostDevice represents a host mediated\n                            device allowed for passthrough\n                          properties:\n                            externalResourceProvider:\n                              type: boolean\n                            mdevNameSelector:\n                              type: string\n                            resourceName:\n                              type: string\n                          required:\n                          - mdevNameSelector\n                          - resourceName\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      pciHostDevices:\n                        items:\n                          description: PciHostDevice represents a host PCI device\n                            allowed for passthrough\n                          properties:\n                            externalResourceProvider:\n                              description: |-\n                                If true, KubeVirt will leave the allocation and monitoring to an\n                                external device plugin\n                              type: boolean\n                            pciVendorSelector:\n                              description: The vendor_id:product_id tuple of the PCI\n                                device\n                              type: string\n                            resourceName:\n                              description: |-\n                                The name of the resource that is representing the device. Exposed by\n                                a device plugin and requested by VMs. Typically of the form\n                                vendor.com/product_name\n                              type: string\n                          required:\n                          - pciVendorSelector\n                          - resourceName\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      usb:\n                        items:\n                          properties:\n                            externalResourceProvider:\n                              description: |-\n                                If true, KubeVirt will leave the allocation and monitoring to an\n                                external device plugin\n                              type: boolean\n                            resourceName:\n                              description: |-\n                                Identifies the list of USB host devices.\n                                e.g: kubevirt.io/storage, kubevirt.io/bootable-usb, etc\n                              type: string\n                            selectors:\n                              items:\n                                properties:\n                                  product:\n                                    type: string\n                                  vendor:\n                                    type: string\n                                required:\n                                - product\n                                - vendor\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          required:\n                          - resourceName\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  seccompConfiguration:\n                    description: SeccompConfiguration holds Seccomp configuration\n                      for Kubevirt components\n                    properties:\n                      virtualMachineInstanceProfile:\n                        description: VirtualMachineInstanceProfile defines what profile\n                          should be used with virt-launcher. Defaults to none\n                        properties:\n                          customProfile:\n                            description: CustomProfile allows to request arbitrary\n                              profile for virt-launcher\n                            properties:\n                              localhostProfile:\n                                type: string\n                              runtimeDefaultProfile:\n                                type: boolean\n                            type: object\n                        type: object\n                    type: object\n                  selinuxLauncherType:\n                    type: string\n                  smbios:\n                    properties:\n                      family:\n                        type: string\n                      manufacturer:\n                        type: string\n                      product:\n                        type: string\n                      sku:\n                        type: string\n                      version:\n                        type: string\n                    type: object\n                  supportContainerResources:\n                    description: SupportContainerResources specifies the resource\n                      requirements for various types of supporting containers such\n                      as container disks/virtiofs/sidecars and hotplug attachment\n                      pods. If omitted a sensible default will be supplied.\n                    items:\n                      description: SupportContainerResources are used to specify the\n                        cpu/memory request and limits for the containers that support\n                        various features of Virtual Machines. These containers are\n                        usually idle and don't require a lot of memory or cpu.\n                      properties:\n                        resources:\n                          description: ResourceRequirements describes the compute\n                            resource requirements.\n                          properties:\n                            claims:\n                              description: |-\n                                Claims lists the names of resources, defined in spec.resourceClaims,\n                                that are used by this container.\n\n\n                                This is an alpha field and requires enabling the\n                                DynamicResourceAllocation feature gate.\n\n\n                                This field is immutable. It can only be set for containers.\n                              items:\n                                description: ResourceClaim references one entry in\n                                  PodSpec.ResourceClaims.\n                                properties:\n                                  name:\n                                    description: |-\n                                      Name must match the name of one entry in pod.spec.resourceClaims of\n                                      the Pod where this field is used. It makes that resource available\n                                      inside a container.\n                                    type: string\n                                required:\n                                - name\n                                type: object\n                              type: array\n                              x-kubernetes-list-map-keys:\n                              - name\n                              x-kubernetes-list-type: map\n                            limits:\n                              additionalProperties:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                x-kubernetes-int-or-string: true\n                              description: |-\n                                Limits describes the maximum amount of compute resources allowed.\n                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                              type: object\n                            requests:\n                              additionalProperties:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                x-kubernetes-int-or-string: true\n                              description: |-\n                                Requests describes the minimum amount of compute resources required.\n                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                              type: object\n                          type: object\n                        type:\n                          type: string\n                      required:\n                      - resources\n                      - type\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - type\n                    x-kubernetes-list-type: map\n                  supportedGuestAgentVersions:\n                    description: deprecated\n                    items:\n                      type: string\n                    type: array\n                  tlsConfiguration:\n                    description: TLSConfiguration holds TLS options\n                    properties:\n                      ciphers:\n                        items:\n                          type: string\n                        type: array\n                        x-kubernetes-list-type: set\n                      minTLSVersion:\n                        description: |-\n                          MinTLSVersion is a way to specify the minimum protocol version that is acceptable for TLS connections.\n                          Protocol versions are based on the following most common TLS configurations:\n\n\n                            https://ssl-config.mozilla.org/\n\n\n                          Note that SSLv3.0 is not a supported protocol version due to well known\n                          vulnerabilities such as POODLE: https://en.wikipedia.org/wiki/POODLE\n                        enum:\n                        - VersionTLS10\n                        - VersionTLS11\n                        - VersionTLS12\n                        - VersionTLS13\n                        type: string\n                    type: object\n                  virtualMachineInstancesPerNode:\n                    type: integer\n                  virtualMachineOptions:\n                    description: VirtualMachineOptions holds the cluster level information\n                      regarding the virtual machine.\n                    properties:\n                      disableFreePageReporting:\n                        description: |-\n                          DisableFreePageReporting disable the free page reporting of\n                          memory balloon device https://libvirt.org/formatdomain.html#memory-balloon-device.\n                          This will have effect only if AutoattachMemBalloon is not false and the vmi is not\n                          requesting any high performance feature (dedicatedCPU/realtime/hugePages), in which free page reporting is always disabled.\n                        type: object\n                      disableSerialConsoleLog:\n                        description: |-\n                          DisableSerialConsoleLog disables logging the auto-attached default serial console.\n                          If not set, serial console logs will be written to a file and then streamed from a container named 'guest-console-log'.\n                          The value can be individually overridden for each VM, not relevant if AutoattachSerialConsole is disabled.\n                        type: object\n                    type: object\n                  vmRolloutStrategy:\n                    description: VMRolloutStrategy defines how changes to a VM object\n                      propagate to its VMI\n                    enum:\n                    - Stage\n                    - LiveUpdate\n                    nullable: true\n                    type: string\n                  vmStateStorageClass:\n                    description: |-\n                      VMStateStorageClass is the name of the storage class to use for the PVCs created to preserve VM state, like TPM.\n                      The storage class must support RWX in filesystem mode.\n                    type: string\n                  webhookConfiguration:\n                    description: |-\n                      ReloadableComponentConfiguration holds all generic k8s configuration options which can\n                      be reloaded by components without requiring a restart.\n                    properties:\n                      restClient:\n                        description: RestClient can be used to tune certain aspects\n                          of the k8s client in use.\n                        properties:\n                          rateLimiter:\n                            description: RateLimiter allows selecting and configuring\n                              different rate limiters for the k8s client.\n                            properties:\n                              tokenBucketRateLimiter:\n                                properties:\n                                  burst:\n                                    description: |-\n                                      Maximum burst for throttle.\n                                      If it's zero, the component default will be used\n                                    type: integer\n                                  qps:\n                                    description: |-\n                                      QPS indicates the maximum QPS to the apiserver from this client.\n                                      If it's zero, the component default will be used\n                                    type: number\n                                required:\n                                - burst\n                                - qps\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                type: object\n              customizeComponents:\n                properties:\n                  flags:\n                    description: Configure the value used for deployment and daemonset\n                      resources\n                    properties:\n                      api:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      controller:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      handler:\n                        additionalProperties:\n                          type: string\n                        type: object\n                    type: object\n                  patches:\n                    items:\n                      properties:\n                        patch:\n                          type: string\n                        resourceName:\n                          minLength: 1\n                          type: string\n                        resourceType:\n                          minLength: 1\n                          type: string\n                        type:\n                          type: string\n                      required:\n                      - patch\n                      - resourceName\n                      - resourceType\n                      - type\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                type: object\n              imagePullPolicy:\n                description: The ImagePullPolicy to use.\n                type: string\n              imagePullSecrets:\n                description: |-\n                  The imagePullSecrets to pull the container images from\n                  Defaults to none\n                items:\n                  description: |-\n                    LocalObjectReference contains enough information to let you locate the\n                    referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: |-\n                        Name of the referent.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n                x-kubernetes-list-type: atomic\n              imageRegistry:\n                description: |-\n                  The image registry to pull the container images from\n                  Defaults to the same registry the operator's container image is pulled from.\n                type: string\n              imageTag:\n                description: |-\n                  The image tag to use for the continer images installed.\n                  Defaults to the same tag as the operator's container image.\n                type: string\n              infra:\n                description: selectors and tolerations that should apply to KubeVirt\n                  infrastructure components\n                properties:\n                  nodePlacement:\n                    description: |-\n                      nodePlacement describes scheduling configuration for specific\n                      KubeVirt components\n                    properties:\n                      affinity:\n                        description: |-\n                          affinity enables pod affinity/anti-affinity placement expanding the types of constraints\n                          that can be expressed with nodeSelector.\n                          affinity is going to be applied to the relevant kind of pods in parallel with nodeSelector\n                          See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\n                        properties:\n                          nodeAffinity:\n                            description: Describes node affinity scheduling rules\n                              for the pod.\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: |-\n                                    An empty preferred scheduling term matches all objects with implicit weight 0\n                                    (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                  properties:\n                                    preference:\n                                      description: A node selector term, associated\n                                        with the corresponding weight.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    weight:\n                                      description: Weight associated with matching\n                                        the corresponding nodeSelectorTerm, in the\n                                        range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - preference\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to an update), the system\n                                  may or may not try to eventually evict the pod from its node.\n                                properties:\n                                  nodeSelectorTerms:\n                                    description: Required. A list of node selector\n                                      terms. The terms are ORed.\n                                    items:\n                                      description: |-\n                                        A null or empty node selector term matches no objects. The requirements of\n                                        them are ANDed.\n                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                required:\n                                - nodeSelectorTerms\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          podAffinity:\n                            description: Describes pod affinity scheduling rules (e.g.\n                              co-locate this pod in the same node, zone, etc. as some\n                              other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                          podAntiAffinity:\n                            description: Describes pod anti-affinity scheduling rules\n                              (e.g. avoid putting this pod in the same node, zone,\n                              etc. as some other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the anti-affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling anti-affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the anti-affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the anti-affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                        type: object\n                      nodeSelector:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          nodeSelector is the node selector applied to the relevant kind of pods\n                          It specifies a map of key-value pairs: for the pod to be eligible to run on a node,\n                          the node must have each of the indicated key-value pairs as labels\n                          (it can have additional labels as well).\n                          See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n                        type: object\n                      tolerations:\n                        description: |-\n                          tolerations is a list of tolerations applied to the relevant kind of pods\n                          See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ for more info.\n                          These are additional tolerations other than default ones.\n                        items:\n                          description: |-\n                            The pod this Toleration is attached to tolerates any taint that matches\n                            the triple <key,value,effect> using the matching operator <operator>.\n                          properties:\n                            effect:\n                              description: |-\n                                Effect indicates the taint effect to match. Empty means match all taint effects.\n                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                              type: string\n                            key:\n                              description: |-\n                                Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                              type: string\n                            operator:\n                              description: |-\n                                Operator represents a key's relationship to the value.\n                                Valid operators are Exists and Equal. Defaults to Equal.\n                                Exists is equivalent to wildcard for value, so that a pod can\n                                tolerate all taints of a particular category.\n                              type: string\n                            tolerationSeconds:\n                              description: |-\n                                TolerationSeconds represents the period of time the toleration (which must be\n                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                                it is not set, which means tolerate the taint forever (do not evict). Zero and\n                                negative values will be treated as 0 (evict immediately) by the system.\n                              format: int64\n                              type: integer\n                            value:\n                              description: |-\n                                Value is the taint value the toleration matches to.\n                                If the operator is Exists, the value should be empty, otherwise just a regular string.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  replicas:\n                    description: |-\n                      replicas indicates how many replicas should be created for each KubeVirt infrastructure\n                      component (like virt-api or virt-controller). Defaults to 2.\n                      WARNING: this is an advanced feature that prevents auto-scaling for core kubevirt components. Please use with caution!\n                    type: integer\n                type: object\n              monitorAccount:\n                description: |-\n                  The name of the Prometheus service account that needs read-access to KubeVirt endpoints\n                  Defaults to prometheus-k8s\n                type: string\n              monitorNamespace:\n                description: |-\n                  The namespace Prometheus is deployed in\n                  Defaults to openshift-monitor\n                type: string\n              productComponent:\n                description: |-\n                  Designate the apps.kubevirt.io/component label for KubeVirt components.\n                  Useful if KubeVirt is included as part of a product.\n                  If ProductComponent is not specified, the component label default value is kubevirt.\n                type: string\n              productName:\n                description: |-\n                  Designate the apps.kubevirt.io/part-of label for KubeVirt components.\n                  Useful if KubeVirt is included as part of a product.\n                  If ProductName is not specified, the part-of label will be omitted.\n                type: string\n              productVersion:\n                description: |-\n                  Designate the apps.kubevirt.io/version label for KubeVirt components.\n                  Useful if KubeVirt is included as part of a product.\n                  If ProductVersion is not specified, KubeVirt's version will be used.\n                type: string\n              serviceMonitorNamespace:\n                description: |-\n                  The namespace the service monitor will be deployed\n                   When ServiceMonitorNamespace is set, then we'll install the service monitor object in that namespace\n                  otherwise we will use the monitoring namespace.\n                type: string\n              uninstallStrategy:\n                description: |-\n                  Specifies if kubevirt can be deleted if workloads are still present.\n                  This is mainly a precaution to avoid accidental data loss\n                type: string\n              workloadUpdateStrategy:\n                description: |-\n                  WorkloadUpdateStrategy defines at the cluster level how to handle\n                  automated workload updates\n                properties:\n                  batchEvictionInterval:\n                    description: |-\n                      BatchEvictionInterval Represents the interval to wait before issuing the next\n                      batch of shutdowns\n\n\n                      Defaults to 1 minute\n                    type: string\n                  batchEvictionSize:\n                    description: |-\n                      BatchEvictionSize Represents the number of VMIs that can be forced updated per\n                      the BatchShutdownInteral interval\n\n\n                      Defaults to 10\n                    type: integer\n                  workloadUpdateMethods:\n                    description: |-\n                      WorkloadUpdateMethods defines the methods that can be used to disrupt workloads\n                      during automated workload updates.\n                      When multiple methods are present, the least disruptive method takes\n                      precedence over more disruptive methods. For example if both LiveMigrate and Shutdown\n                      methods are listed, only VMs which are not live migratable will be restarted/shutdown\n\n\n                      An empty list defaults to no automated workload updating\n                    items:\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: atomic\n                type: object\n              workloads:\n                description: selectors and tolerations that should apply to KubeVirt\n                  workloads\n                properties:\n                  nodePlacement:\n                    description: |-\n                      nodePlacement describes scheduling configuration for specific\n                      KubeVirt components\n                    properties:\n                      affinity:\n                        description: |-\n                          affinity enables pod affinity/anti-affinity placement expanding the types of constraints\n                          that can be expressed with nodeSelector.\n                          affinity is going to be applied to the relevant kind of pods in parallel with nodeSelector\n                          See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\n                        properties:\n                          nodeAffinity:\n                            description: Describes node affinity scheduling rules\n                              for the pod.\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: |-\n                                    An empty preferred scheduling term matches all objects with implicit weight 0\n                                    (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                  properties:\n                                    preference:\n                                      description: A node selector term, associated\n                                        with the corresponding weight.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    weight:\n                                      description: Weight associated with matching\n                                        the corresponding nodeSelectorTerm, in the\n                                        range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - preference\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to an update), the system\n                                  may or may not try to eventually evict the pod from its node.\n                                properties:\n                                  nodeSelectorTerms:\n                                    description: Required. A list of node selector\n                                      terms. The terms are ORed.\n                                    items:\n                                      description: |-\n                                        A null or empty node selector term matches no objects. The requirements of\n                                        them are ANDed.\n                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                      properties:\n                                        matchExpressions:\n                                          description: A list of node selector requirements\n                                            by node's labels.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchFields:\n                                          description: A list of node selector requirements\n                                            by node's fields.\n                                          items:\n                                            description: |-\n                                              A node selector requirement is a selector that contains values, a key, and an operator\n                                              that relates the key and values.\n                                            properties:\n                                              key:\n                                                description: The label key that the\n                                                  selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  Represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  An array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. If the operator is Gt or Lt, the values\n                                                  array must have a single element, which will be interpreted as an integer.\n                                                  This array is replaced during a strategic merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                required:\n                                - nodeSelectorTerms\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          podAffinity:\n                            description: Describes pod affinity scheduling rules (e.g.\n                              co-locate this pod in the same node, zone, etc. as some\n                              other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                          podAntiAffinity:\n                            description: Describes pod anti-affinity scheduling rules\n                              (e.g. avoid putting this pod in the same node, zone,\n                              etc. as some other pod(s)).\n                            properties:\n                              preferredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  The scheduler will prefer to schedule pods to nodes that satisfy\n                                  the anti-affinity expressions specified by this field, but it may choose\n                                  a node that violates one or more of the expressions. The node that is\n                                  most preferred is the one with the greatest sum of weights, i.e.\n                                  for each node that meets all of the scheduling requirements (resource\n                                  request, requiredDuringScheduling anti-affinity expressions, etc.),\n                                  compute a sum by iterating through the elements of this field and adding\n                                  \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                                  node(s) with the highest sum are the most preferred.\n                                items:\n                                  description: The weights of all of the matched WeightedPodAffinityTerm\n                                    fields are added per-node to find the most preferred\n                                    node(s)\n                                  properties:\n                                    podAffinityTerm:\n                                      description: Required. A pod affinity term,\n                                        associated with the corresponding weight.\n                                      properties:\n                                        labelSelector:\n                                          description: |-\n                                            A label query over a set of resources, in this case pods.\n                                            If it's null, this PodAffinityTerm matches with no Pods.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        matchLabelKeys:\n                                          description: |-\n                                            MatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        mismatchLabelKeys:\n                                          description: |-\n                                            MismatchLabelKeys is a set of pod label keys to select which pods will\n                                            be taken into consideration. The keys are used to lookup values from the\n                                            incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                            to select the group of existing pods which pods will be taken into consideration\n                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                            pod labels will be ignored. The default value is empty.\n                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                            This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        namespaceSelector:\n                                          description: |-\n                                            A label query over the set of namespaces that the term applies to.\n                                            The term is applied to the union of the namespaces selected by this field\n                                            and the ones listed in the namespaces field.\n                                            null selector and null or empty namespaces list means \"this pod's namespace\".\n                                            An empty selector ({}) matches all namespaces.\n                                          properties:\n                                            matchExpressions:\n                                              description: matchExpressions is a list\n                                                of label selector requirements. The\n                                                requirements are ANDed.\n                                              items:\n                                                description: |-\n                                                  A label selector requirement is a selector that contains values, a key, and an operator that\n                                                  relates the key and values.\n                                                properties:\n                                                  key:\n                                                    description: key is the label\n                                                      key that the selector applies\n                                                      to.\n                                                    type: string\n                                                  operator:\n                                                    description: |-\n                                                      operator represents a key's relationship to a set of values.\n                                                      Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                    type: string\n                                                  values:\n                                                    description: |-\n                                                      values is an array of string values. If the operator is In or NotIn,\n                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                      the values array must be empty. This array is replaced during a strategic\n                                                      merge patch.\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                    x-kubernetes-list-type: atomic\n                                                required:\n                                                - key\n                                                - operator\n                                                type: object\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                            matchLabels:\n                                              additionalProperties:\n                                                type: string\n                                              description: |-\n                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                                map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                                operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                              type: object\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        namespaces:\n                                          description: |-\n                                            namespaces specifies a static list of namespace names that the term applies to.\n                                            The term is applied to the union of the namespaces listed in this field\n                                            and the ones selected by namespaceSelector.\n                                            null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        topologyKey:\n                                          description: |-\n                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                            whose value of the label with key topologyKey matches that of any node on which any of the\n                                            selected pods is running.\n                                            Empty topologyKey is not allowed.\n                                          type: string\n                                      required:\n                                      - topologyKey\n                                      type: object\n                                    weight:\n                                      description: |-\n                                        weight associated with matching the corresponding podAffinityTerm,\n                                        in the range 1-100.\n                                      format: int32\n                                      type: integer\n                                  required:\n                                  - podAffinityTerm\n                                  - weight\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              requiredDuringSchedulingIgnoredDuringExecution:\n                                description: |-\n                                  If the anti-affinity requirements specified by this field are not met at\n                                  scheduling time, the pod will not be scheduled onto the node.\n                                  If the anti-affinity requirements specified by this field cease to be met\n                                  at some point during pod execution (e.g. due to a pod label update), the\n                                  system may or may not try to eventually evict the pod from its node.\n                                  When there are multiple elements, the lists of nodes corresponding to each\n                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                items:\n                                  description: |-\n                                    Defines a set of pods (namely those matching the labelSelector\n                                    relative to the given namespace(s)) that this pod should be\n                                    co-located (affinity) or not co-located (anti-affinity) with,\n                                    where co-located is defined as running on a node whose value of\n                                    the label with key <topologyKey> matches that of any node on which\n                                    a pod of the set of pods is running\n                                  properties:\n                                    labelSelector:\n                                      description: |-\n                                        A label query over a set of resources, in this case pods.\n                                        If it's null, this PodAffinityTerm matches with no Pods.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    matchLabelKeys:\n                                      description: |-\n                                        MatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key in (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    mismatchLabelKeys:\n                                      description: |-\n                                        MismatchLabelKeys is a set of pod label keys to select which pods will\n                                        be taken into consideration. The keys are used to lookup values from the\n                                        incoming pod labels, those key-value labels are merged with 'labelSelector' as 'key notin (value)'\n                                        to select the group of existing pods which pods will be taken into consideration\n                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                        pod labels will be ignored. The default value is empty.\n                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                        This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    namespaceSelector:\n                                      description: |-\n                                        A label query over the set of namespaces that the term applies to.\n                                        The term is applied to the union of the namespaces selected by this field\n                                        and the ones listed in the namespaces field.\n                                        null selector and null or empty namespaces list means \"this pod's namespace\".\n                                        An empty selector ({}) matches all namespaces.\n                                      properties:\n                                        matchExpressions:\n                                          description: matchExpressions is a list\n                                            of label selector requirements. The requirements\n                                            are ANDed.\n                                          items:\n                                            description: |-\n                                              A label selector requirement is a selector that contains values, a key, and an operator that\n                                              relates the key and values.\n                                            properties:\n                                              key:\n                                                description: key is the label key\n                                                  that the selector applies to.\n                                                type: string\n                                              operator:\n                                                description: |-\n                                                  operator represents a key's relationship to a set of values.\n                                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                type: string\n                                              values:\n                                                description: |-\n                                                  values is an array of string values. If the operator is In or NotIn,\n                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                  the values array must be empty. This array is replaced during a strategic\n                                                  merge patch.\n                                                items:\n                                                  type: string\n                                                type: array\n                                                x-kubernetes-list-type: atomic\n                                            required:\n                                            - key\n                                            - operator\n                                            type: object\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                        matchLabels:\n                                          additionalProperties:\n                                            type: string\n                                          description: |-\n                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                          type: object\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    namespaces:\n                                      description: |-\n                                        namespaces specifies a static list of namespace names that the term applies to.\n                                        The term is applied to the union of the namespaces listed in this field\n                                        and the ones selected by namespaceSelector.\n                                        null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    topologyKey:\n                                      description: |-\n                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                        whose value of the label with key topologyKey matches that of any node on which any of the\n                                        selected pods is running.\n                                        Empty topologyKey is not allowed.\n                                      type: string\n                                  required:\n                                  - topologyKey\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            type: object\n                        type: object\n                      nodeSelector:\n                        additionalProperties:\n                          type: string\n                        description: |-\n                          nodeSelector is the node selector applied to the relevant kind of pods\n                          It specifies a map of key-value pairs: for the pod to be eligible to run on a node,\n                          the node must have each of the indicated key-value pairs as labels\n                          (it can have additional labels as well).\n                          See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n                        type: object\n                      tolerations:\n                        description: |-\n                          tolerations is a list of tolerations applied to the relevant kind of pods\n                          See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ for more info.\n                          These are additional tolerations other than default ones.\n                        items:\n                          description: |-\n                            The pod this Toleration is attached to tolerates any taint that matches\n                            the triple <key,value,effect> using the matching operator <operator>.\n                          properties:\n                            effect:\n                              description: |-\n                                Effect indicates the taint effect to match. Empty means match all taint effects.\n                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                              type: string\n                            key:\n                              description: |-\n                                Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                              type: string\n                            operator:\n                              description: |-\n                                Operator represents a key's relationship to the value.\n                                Valid operators are Exists and Equal. Defaults to Equal.\n                                Exists is equivalent to wildcard for value, so that a pod can\n                                tolerate all taints of a particular category.\n                              type: string\n                            tolerationSeconds:\n                              description: |-\n                                TolerationSeconds represents the period of time the toleration (which must be\n                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                                it is not set, which means tolerate the taint forever (do not evict). Zero and\n                                negative values will be treated as 0 (evict immediately) by the system.\n                              format: int64\n                              type: integer\n                            value:\n                              description: |-\n                                Value is the taint value the toleration matches to.\n                                If the operator is Exists, the value should be empty, otherwise just a regular string.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  replicas:\n                    description: |-\n                      replicas indicates how many replicas should be created for each KubeVirt infrastructure\n                      component (like virt-api or virt-controller). Defaults to 2.\n                      WARNING: this is an advanced feature that prevents auto-scaling for core kubevirt components. Please use with caution!\n                    type: integer\n                type: object\n            type: object\n          status:\n            description: KubeVirtStatus represents information pertaining to a KubeVirt\n              deployment.\n            properties:\n              conditions:\n                items:\n                  description: KubeVirtCondition represents a condition of a KubeVirt\n                    deployment\n                  properties:\n                    lastProbeTime:\n                      format: date-time\n                      nullable: true\n                      type: string\n                    lastTransitionTime:\n                      format: date-time\n                      nullable: true\n                      type: string\n                    message:\n                      type: string\n                    reason:\n                      type: string\n                    status:\n                      type: string\n                    type:\n                      type: string\n                  required:\n                  - status\n                  - type\n                  type: object\n                type: array\n              defaultArchitecture:\n                type: string\n              generations:\n                items:\n                  description: GenerationStatus keeps track of the generation for\n                    a given resource so that decisions about forced updates can be\n                    made.\n                  properties:\n                    group:\n                      description: group is the group of the thing you're tracking\n                      type: string\n                    hash:\n                      description: hash is an optional field set for resources without\n                        generation that are content sensitive like secrets and configmaps\n                      type: string\n                    lastGeneration:\n                      description: lastGeneration is the last generation of the workload\n                        controller involved\n                      format: int64\n                      type: integer\n                    name:\n                      description: name is the name of the thing you're tracking\n                      type: string\n                    namespace:\n                      description: namespace is where the thing you're tracking is\n                      type: string\n                    resource:\n                      description: resource is the resource type of the thing you're\n                        tracking\n                      type: string\n                  required:\n                  - group\n                  - lastGeneration\n                  - name\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-type: atomic\n              observedDeploymentConfig:\n                type: string\n              observedDeploymentID:\n                type: string\n              observedGeneration:\n                format: int64\n                type: integer\n              observedKubeVirtRegistry:\n                type: string\n              observedKubeVirtVersion:\n                type: string\n              operatorVersion:\n                type: string\n              outdatedVirtualMachineInstanceWorkloads:\n                type: integer\n              phase:\n                description: KubeVirtPhase is a label for the phase of a KubeVirt\n                  deployment at the current time.\n                type: string\n              targetDeploymentConfig:\n                type: string\n              targetDeploymentID:\n                type: string\n              targetKubeVirtRegistry:\n                type: string\n              targetKubeVirtVersion:\n                type: string\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: false\n    subresources:\n      status: {}\n\n---\napiVersion: scheduling.k8s.io/v1\nkind: PriorityClass\nmetadata:\n  name: kubevirt-cluster-critical\nvalue: 1000000000\nglobalDefault: false\ndescription: \"This priority class should be used for core kubevirt components only.\"\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: kubevirt.io:operator\n  labels:\n    operator.kubevirt.io: \"\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups:\n      - kubevirt.io\n    resources:\n      - kubevirts\n    verbs:\n      - get\n      - delete\n      - create\n      - update\n      - patch\n      - list\n      - watch\n      - deletecollection\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    kubevirt.io: \"\"\n  name: kubevirt-operator\n  namespace: kubevirt\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    kubevirt.io: \"\"\n  name: kubevirt-operator\n  namespace: kubevirt\nrules:\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - kubevirt-ca\n  - kubevirt-export-ca\n  - kubevirt-virt-handler-certs\n  - kubevirt-virt-handler-server-certs\n  - kubevirt-operator-certs\n  - kubevirt-virt-api-certs\n  - kubevirt-controller-certs\n  - kubevirt-exportproxy-certs\n  resources:\n  - secrets\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - patch\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - patch\n  - delete\n- apiGroups:\n  - route.openshift.io\n  resources:\n  - routes\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - patch\n  - delete\n- apiGroups:\n  - route.openshift.io\n  resources:\n  - routes/custom-host\n  verbs:\n  - create\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - get\n  - list\n  - watch\n  - delete\n  - update\n  - create\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - route.openshift.io\n  resources:\n  - routes\n  verbs:\n  - list\n  - get\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - list\n  - get\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - list\n  - get\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - get\n  - list\n  - watch\n  - delete\n  - update\n  - create\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - kubevirt-export-ca\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    kubevirt.io: \"\"\n  name: kubevirt-operator-rolebinding\n  namespace: kubevirt\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: kubevirt-operator\nsubjects:\n- kind: ServiceAccount\n  name: kubevirt-operator\n  namespace: kubevirt\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    kubevirt.io: \"\"\n  name: kubevirt-operator\nrules:\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - get\n  - list\n  - watch\n  - patch\n  - update\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - serviceaccounts\n  - services\n  - endpoints\n  - pods/exec\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - update\n  - delete\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - patch\n  - delete\n- apiGroups:\n  - batch\n  resources:\n  - jobs\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - patch\n- apiGroups:\n  - apps\n  resources:\n  - controllerrevisions\n  verbs:\n  - watch\n  - list\n  - create\n  - delete\n  - patch\n- apiGroups:\n  - apps\n  resources:\n  - deployments\n  - daemonsets\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - patch\n- apiGroups:\n  - rbac.authorization.k8s.io\n  resources:\n  - clusterroles\n  - clusterrolebindings\n  - roles\n  - rolebindings\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - patch\n  - update\n- apiGroups:\n  - apiextensions.k8s.io\n  resources:\n  - customresourcedefinitions\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - patch\n- apiGroups:\n  - security.openshift.io\n  resources:\n  - securitycontextconstraints\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n- apiGroups:\n  - security.openshift.io\n  resourceNames:\n  - privileged\n  resources:\n  - securitycontextconstraints\n  verbs:\n  - get\n  - patch\n  - update\n- apiGroups:\n  - security.openshift.io\n  resourceNames:\n  - kubevirt-handler\n  - kubevirt-controller\n  resources:\n  - securitycontextconstraints\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - delete\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - validatingwebhookconfigurations\n  - mutatingwebhookconfigurations\n  - validatingadmissionpolicybindings\n  - validatingadmissionpolicies\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - update\n  - patch\n- apiGroups:\n  - apiregistration.k8s.io\n  resources:\n  - apiservices\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - update\n  - patch\n- apiGroups:\n  - monitoring.coreos.com\n  resources:\n  - servicemonitors\n  - prometheusrules\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - update\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  verbs:\n  - get\n  - list\n  - delete\n  - patch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachines\n  - virtualmachineinstances\n  verbs:\n  - get\n  - list\n  - watch\n  - patch\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - persistentvolumeclaims\n  verbs:\n  - get\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachines/status\n  verbs:\n  - patch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachineinstancemigrations\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - patch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachineinstancepresets\n  verbs:\n  - watch\n  - list\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - limitranges\n  verbs:\n  - watch\n  - list\n- apiGroups:\n  - apiextensions.k8s.io\n  resources:\n  - customresourcedefinitions\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - snapshot.kubevirt.io\n  resources:\n  - virtualmachinesnapshots\n  - virtualmachinerestores\n  - virtualmachinesnapshotcontents\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - cdi.kubevirt.io\n  resources:\n  - datasources\n  - datavolumes\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - instancetype.kubevirt.io\n  resources:\n  - virtualmachineinstancetypes\n  - virtualmachineclusterinstancetypes\n  - virtualmachinepreferences\n  - virtualmachineclusterpreferences\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - migrations.kubevirt.io\n  resources:\n  - migrationpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - apps\n  resources:\n  - controllerrevisions\n  verbs:\n  - create\n  - list\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n  - patch\n- apiGroups:\n  - policy\n  resources:\n  - poddisruptionbudgets\n  verbs:\n  - get\n  - list\n  - watch\n  - delete\n  - create\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - configmaps\n  - endpoints\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n  - delete\n  - update\n  - create\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - update\n  - create\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - create\n- apiGroups:\n  - \"\"\n  resources:\n  - pods/finalizers\n  verbs:\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - pods/eviction\n  verbs:\n  - create\n- apiGroups:\n  - \"\"\n  resources:\n  - pods/status\n  verbs:\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n- apiGroups:\n  - apps\n  resources:\n  - daemonsets\n  verbs:\n  - list\n- apiGroups:\n  - apps\n  resources:\n  - controllerrevisions\n  verbs:\n  - watch\n  - list\n  - create\n  - delete\n  - get\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - persistentvolumeclaims\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - update\n  - delete\n  - patch\n- apiGroups:\n  - snapshot.kubevirt.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- apiGroups:\n  - export.kubevirt.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- apiGroups:\n  - pool.kubevirt.io\n  resources:\n  - virtualmachinepools\n  - virtualmachinepools/finalizers\n  - virtualmachinepools/status\n  - virtualmachinepools/scale\n  verbs:\n  - watch\n  - list\n  - create\n  - delete\n  - update\n  - patch\n  - get\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachineinstances/addvolume\n  - virtualmachineinstances/removevolume\n  - virtualmachineinstances/freeze\n  - virtualmachineinstances/unfreeze\n  - virtualmachineinstances/softreboot\n  - virtualmachineinstances/sev/setupsession\n  - virtualmachineinstances/sev/injectlaunchsecret\n  verbs:\n  - update\n- apiGroups:\n  - cdi.kubevirt.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- apiGroups:\n  - k8s.cni.cncf.io\n  resources:\n  - network-attachment-definitions\n  verbs:\n  - get\n- apiGroups:\n  - apiextensions.k8s.io\n  resources:\n  - customresourcedefinitions\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n- apiGroups:\n  - snapshot.storage.k8s.io\n  resources:\n  - volumesnapshotclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - snapshot.storage.k8s.io\n  resources:\n  - volumesnapshots\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - update\n  - delete\n- apiGroups:\n  - storage.k8s.io\n  resources:\n  - storageclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - instancetype.kubevirt.io\n  resources:\n  - virtualmachineinstancetypes\n  - virtualmachineclusterinstancetypes\n  - virtualmachinepreferences\n  - virtualmachineclusterpreferences\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - migrations.kubevirt.io\n  resources:\n  - migrationpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - clone.kubevirt.io\n  resources:\n  - virtualmachineclones\n  - virtualmachineclones/status\n  - virtualmachineclones/finalizers\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - resourcequotas\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachineinstances\n  verbs:\n  - update\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - patch\n  - list\n  - watch\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - apiextensions.k8s.io\n  resources:\n  - customresourcedefinitions\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - migrations.kubevirt.io\n  resources:\n  - migrationpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - export.kubevirt.io\n  resources:\n  - virtualmachineexports\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - get\n  - list\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - version\n  - guestfs\n  verbs:\n  - get\n  - list\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachineinstances/console\n  - virtualmachineinstances/vnc\n  - virtualmachineinstances/vnc/screenshot\n  - virtualmachineinstances/portforward\n  - virtualmachineinstances/guestosinfo\n  - virtualmachineinstances/filesystemlist\n  - virtualmachineinstances/userlist\n  - virtualmachineinstances/sev/fetchcertchain\n  - virtualmachineinstances/sev/querylaunchmeasurement\n  verbs:\n  - get\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachineinstances/pause\n  - virtualmachineinstances/unpause\n  - virtualmachineinstances/addvolume\n  - virtualmachineinstances/removevolume\n  - virtualmachineinstances/freeze\n  - virtualmachineinstances/unfreeze\n  - virtualmachineinstances/softreboot\n  - virtualmachineinstances/sev/setupsession\n  - virtualmachineinstances/sev/injectlaunchsecret\n  verbs:\n  - update\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachines/expand-spec\n  - virtualmachines/portforward\n  verbs:\n  - get\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachines/start\n  - virtualmachines/stop\n  - virtualmachines/restart\n  - virtualmachines/addvolume\n  - virtualmachines/removevolume\n  - virtualmachines/migrate\n  - virtualmachines/memorydump\n  verbs:\n  - update\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - expand-vm-spec\n  verbs:\n  - update\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachines\n  - virtualmachineinstances\n  - virtualmachineinstancepresets\n  - virtualmachineinstancereplicasets\n  - virtualmachineinstancemigrations\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n  - deletecollection\n- apiGroups:\n  - snapshot.kubevirt.io\n  resources:\n  - virtualmachinesnapshots\n  - virtualmachinesnapshotcontents\n  - virtualmachinerestores\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n  - deletecollection\n- apiGroups:\n  - export.kubevirt.io\n  resources:\n  - virtualmachineexports\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n  - deletecollection\n- apiGroups:\n  - clone.kubevirt.io\n  resources:\n  - virtualmachineclones\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n  - deletecollection\n- apiGroups:\n  - instancetype.kubevirt.io\n  resources:\n  - virtualmachineinstancetypes\n  - virtualmachineclusterinstancetypes\n  - virtualmachinepreferences\n  - virtualmachineclusterpreferences\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n  - deletecollection\n- apiGroups:\n  - pool.kubevirt.io\n  resources:\n  - virtualmachinepools\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n  - deletecollection\n- apiGroups:\n  - migrations.kubevirt.io\n  resources:\n  - migrationpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachineinstances/console\n  - virtualmachineinstances/vnc\n  - virtualmachineinstances/vnc/screenshot\n  - virtualmachineinstances/portforward\n  - virtualmachineinstances/guestosinfo\n  - virtualmachineinstances/filesystemlist\n  - virtualmachineinstances/userlist\n  - virtualmachineinstances/sev/fetchcertchain\n  - virtualmachineinstances/sev/querylaunchmeasurement\n  verbs:\n  - get\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachineinstances/pause\n  - virtualmachineinstances/unpause\n  - virtualmachineinstances/addvolume\n  - virtualmachineinstances/removevolume\n  - virtualmachineinstances/freeze\n  - virtualmachineinstances/unfreeze\n  - virtualmachineinstances/softreboot\n  - virtualmachineinstances/sev/setupsession\n  - virtualmachineinstances/sev/injectlaunchsecret\n  verbs:\n  - update\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachines/expand-spec\n  - virtualmachines/portforward\n  verbs:\n  - get\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachines/start\n  - virtualmachines/stop\n  - virtualmachines/restart\n  - virtualmachines/addvolume\n  - virtualmachines/removevolume\n  - virtualmachines/migrate\n  - virtualmachines/memorydump\n  verbs:\n  - update\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - expand-vm-spec\n  verbs:\n  - update\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachines\n  - virtualmachineinstances\n  - virtualmachineinstancepresets\n  - virtualmachineinstancereplicasets\n  - virtualmachineinstancemigrations\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n- apiGroups:\n  - snapshot.kubevirt.io\n  resources:\n  - virtualmachinesnapshots\n  - virtualmachinesnapshotcontents\n  - virtualmachinerestores\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n- apiGroups:\n  - export.kubevirt.io\n  resources:\n  - virtualmachineexports\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n- apiGroups:\n  - clone.kubevirt.io\n  resources:\n  - virtualmachineclones\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n- apiGroups:\n  - instancetype.kubevirt.io\n  resources:\n  - virtualmachineinstancetypes\n  - virtualmachineclusterinstancetypes\n  - virtualmachinepreferences\n  - virtualmachineclusterpreferences\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n- apiGroups:\n  - pool.kubevirt.io\n  resources:\n  - virtualmachinepools\n  verbs:\n  - get\n  - delete\n  - create\n  - update\n  - patch\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - get\n  - list\n- apiGroups:\n  - migrations.kubevirt.io\n  resources:\n  - migrationpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - kubevirts\n  verbs:\n  - get\n  - list\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - virtualmachines/expand-spec\n  - virtualmachineinstances/guestosinfo\n  - virtualmachineinstances/filesystemlist\n  - virtualmachineinstances/userlist\n  - virtualmachineinstances/sev/fetchcertchain\n  - virtualmachineinstances/sev/querylaunchmeasurement\n  verbs:\n  - get\n- apiGroups:\n  - subresources.kubevirt.io\n  resources:\n  - expand-vm-spec\n  verbs:\n  - update\n- apiGroups:\n  - kubevirt.io\n  resources:\n  - virtualmachines\n  - virtualmachineinstances\n  - virtualmachineinstancepresets\n  - virtualmachineinstancereplicasets\n  - virtualmachineinstancemigrations\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - snapshot.kubevirt.io\n  resources:\n  - virtualmachinesnapshots\n  - virtualmachinesnapshotcontents\n  - virtualmachinerestores\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - export.kubevirt.io\n  resources:\n  - virtualmachineexports\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - clone.kubevirt.io\n  resources:\n  - virtualmachineclones\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - instancetype.kubevirt.io\n  resources:\n  - virtualmachineinstancetypes\n  - virtualmachineclusterinstancetypes\n  - virtualmachinepreferences\n  - virtualmachineclusterpreferences\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - pool.kubevirt.io\n  resources:\n  - virtualmachinepools\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - migrations.kubevirt.io\n  resources:\n  - migrationpolicies\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - instancetype.kubevirt.io\n  resources:\n  - virtualmachineclusterinstancetypes\n  - virtualmachineclusterpreferences\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    kubevirt.io: \"\"\n  name: kubevirt-operator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kubevirt-operator\nsubjects:\n- kind: ServiceAccount\n  name: kubevirt-operator\n  namespace: kubevirt\n\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    kubevirt.io: virt-operator\n  name: virt-operator\n  namespace: kubevirt\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      kubevirt.io: virt-operator\n  strategy:\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        kubevirt.io: virt-operator\n        name: virt-operator\n        prometheus.kubevirt.io: \"true\"\n      name: virt-operator\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchExpressions:\n                - key: kubevirt.io\n                  operator: In\n                  values:\n                  - virt-operator\n              topologyKey: kubernetes.io/hostname\n            weight: 1\n      containers:\n      - args:\n        - --port\n        - \"8443\"\n        - -v\n        - \"2\"\n        command:\n        - virt-operator\n        env:\n        - name: VIRT_OPERATOR_IMAGE\n          value: quay.io/kubevirt/virt-operator:v1.3.1\n        - name: WATCH_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.annotations['olm.targetNamespaces']\n        - name: KUBEVIRT_VERSION\n          value: v1.3.1\n        image: quay.io/kubevirt/virt-operator:v1.3.1\n        imagePullPolicy: IfNotPresent\n        name: virt-operator\n        ports:\n        - containerPort: 8443\n          name: metrics\n          protocol: TCP\n        - containerPort: 8444\n          name: webhooks\n          protocol: TCP\n        readinessProbe:\n          httpGet:\n            path: /metrics\n            port: 8443\n            scheme: HTTPS\n          initialDelaySeconds: 5\n          timeoutSeconds: 10\n        resources:\n          requests:\n            cpu: 10m\n            memory: 450Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /etc/virt-operator/certificates\n          name: kubevirt-operator-certs\n          readOnly: true\n        - mountPath: /profile-data\n          name: profile-data\n      nodeSelector:\n        kubernetes.io/os: linux\n      priorityClassName: kubevirt-cluster-critical\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: kubevirt-operator\n      tolerations:\n      - key: CriticalAddonsOnly\n        operator: Exists\n      volumes:\n      - name: kubevirt-operator-certs\n        secret:\n          optional: true\n          secretName: kubevirt-operator-certs\n      - emptyDir: {}\n        name: profile-data\n"
  },
  {
    "path": "opsany-mcp-server/.gitignore",
    "content": "__pycache__/\n*.py[cod]\n*$py.class\n*.so\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# Virtual environments\nvenv/\nenv/\nENV/\n.venv\n\n# IDE\n.vscode/\n.idea/\n*.swp\n*.swo\n*~\n\n# Config (keep example)\nconfig/config.yaml\n!config/config.yaml.example\n\n# User config\n.opsany-mcp-server/\n\n# OS\n.DS_Store\nThumbs.db\n"
  },
  {
    "path": "opsany-mcp-server/README.md",
    "content": "# OpsAny MCP Server\n\n基于 OpsAny 平台的 MCP (Model Context Protocol) Server，提供通过 MCP 协议访问 OpsAny 平台资源、工单、脚本等能力。\n\n## 功能特性\n\n- **opsany_cmdb_api_resources**: 资源平台，获取全部资源模型, 包括资源类型名称，资源类型标识，资源分组名称，资源分组标识，资源名称，资源标识，资源简称，资源实例总数，字段总数, 当不要求获取资源实例总数，字段总数时output为空！\n- **opsany_cmdb_get_resource_fields**: 获取指定资源的字段信息\n- **opsany_cmdb_get_resource**: 获取资源数据，支持搜索、分页等功能\n- **opsany_rbac_get_or_search_all_user**: 统一权限平台，获取平台全部用户信息， 支持用户名精准查找，中文名精准查找\n- **opsany_rbac_get_my_user_info**: 统一权限平台，获取自己的用户信息，当前用户信息，我是谁，支持扩展字段，包括部门用户认证来源等全部字段，使用 all\n- **opsany_monitor_alert_info**: 基础监控，获取管理平台监控纳管后，基础监控平台的实例告警，实例包括管控平台主机，网络设备！\n- **opsany_workbench_work_order_inst**: 工作台，ITSM平台，获取全部工单，待办工单，我的已办工单，我提交的工单！\n- **opsany_job_get_tool_market_list**: 作业平台 获取作业平台工具市场，包括作业列表和脚本列表！\n- **opsany_job_get_job_list**: 作业平台 获取作业平台作业列表，只需要作业ID就可以执行的作业列表！\n- **opsany_job_get_script_list**: 作业平台 获取作业平台脚本列表，该脚本执行需要脚本ID执行主机等参数！\n- **opsany_job_run_job_by_id**: 作业平台 根据作业ID执行作业， 返回的为任务ID, 可以根据任务ID获取执行结果, 根据返回的字段flag判断是否执行完成。\n- **opsany_job_run_script_by_id**: 作业平台 根据脚本ID执行脚本， 返回的为任务ID, 可以根据任务ID获取执行结果！\n- **opsany_job_run_script_by_script**: 作业平台 输入脚本内容和主机信息执行脚本， 返回的为任务ID, 可以根据任务ID获取执行结果！\n- **opsany_job_get_run_result_by_log_id**: 作业平台 获取执行的作业或脚本结果， 根据返回的任务ID获取！\n- **opsany_control_get_managed_host_list**: 管控平台 获取管控平台纳管的主机列表！\n\n## 安装\n\n1. 克隆仓库：\n```bash\ngit clone <repository-url>\ncd opsany-mcp-server\n```\n\n2. 创建虚拟环境并安装依赖：\n```bash\npython -m venv venv\nsource venv/bin/activate  # Windows: venv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n## 配置\n\n在项目目录下创建 `config/config.yaml` 文件（参考config.yaml.example）：\n\n```yaml\napiVersion: v1\napiService:\n  url: https://DOMAIN_NAME\n  bk_app_code: cmdb\n  bk_app_secret: CMDB_SECRET_KEY\n  super_username: admin  # 管理员用户名 用作部分API接口内部调用\n  api_version: 4.0.2  # esb api服务版本\nserver:\n  host: 0.0.0.0\n  port: 8020\n  auth_token: \"MCP_AUTH_TOKEN\"  # MCP Server的认证Token，安装时自动生成，调用时需要添加在Header中。\n  version: 2.3.2\nconfig:\n  resourceIdDefaultField: \"code,VISIBLE_NAME,name\"\n  resourceIdFieldSearch: false\n  resourceDefaultLimit: 20\n  apiResourcesDefaultLimit: 100\n\n\n```\n\n## 使用\n\n### 启动服务器\n\n```bash\npython server.py\n```\n\n\n或覆盖主机和端口：\n\n```bash\npython server.py --host 0.0.0.0 --port 8020\n```\n\n### MCP 工具\n\n# OpsAny 平台 API 文档\n\n\n---\n\n## 1. CMDB（配置管理数据库）接口\n\n### 1.1 获取全部资源模型信息  \n**接口名称**：`opsany_cmdb_api_resources`  \n**描述**：获取平台中全部资源模型信息，包括资源类型名称、资源类型标识、资源分组名称、资源分组标识、资源名称、资源标识、资源简称等。  \n> ⚠️ 若未传 `output=extend`，则不会返回“资源实例总数”和“字段总数”，相关字段将为空。\n\n**请求参数**：\n\n| 参数名   | 类型    | 必填 | 默认值 | 描述 |\n|----------|---------|------|--------|------|\n| `output` | string  | 否   | `\"\"`   | 若需获取资源实例总数与字段总数，请传 `\"extend\"`；否则留空 |\n| `limit`  | integer | 否   | `100`  | 返回的资源模型数量上限 |\n\n---\n\n### 1.2 获取指定资源类型的字段信息  \n**接口名称**：`opsany_cmdb_get_resource_fields`  \n**描述**：根据资源类型标识（`model_code`），获取该资源类型的所有字段定义（如字段名、类型、是否必填等）。\n\n**请求参数**：\n\n| 参数名       | 类型   | 必填 | 描述                                 |\n|--------------|--------|------|------------------------------------|\n| `model_code` | string | 是   | 资源类型标识（例如：`SERVER`、`CLOUD_SERVER`） |\n\n---\n\n### 1.3 获取资源仓库数据（资源实例列表）  \n**接口名称**：`opsany_cmdb_get_resource`  \n**描述**：查询指定资源类型下的实例数据，支持按 ID 精确查询、关键词模糊搜索、字段筛选及分页。\n\n**请求参数**：\n\n| 参数名        | 类型    | 必填 | 默认值 | 描述 |\n|---------------|---------|------|--------|------|\n| `model_code`  | string  | 是   | —      | 资源类型标识 |\n| `resource_id` | string  | 否   | —      | 资源实例 ID（精确匹配） |\n| `search`      | string  | 否   | —      | 全局关键词模糊搜索（作用于所有可搜索字段） |\n| `fields`      | string  | 否   | —      | 要返回的字段列表，逗号分隔（如：`name,ip,status`） |\n| `page`        | integer | 否   | `1`    | 页码（从 1 开始） |\n| `limit`       | integer | 否   | `20`   | 每页返回数量 |\n\n---\n\n## 2. RBAC（统一权限平台）接口\n\n### 2.1 查询用户信息  \n**接口名称**：`opsany_rbac_get_or_search_all_user`  \n**描述**：获取平台全部用户信息，支持多种搜索方式，并可扩展返回部门、认证来源等完整字段。  \n**请求参数**：  \n\n| 参数名                        | 类型   | 必填 | 描述 |\n|------------------------------|--------|------|------|\n| `username`                   | string | 否   | 用户名（精准匹配） |\n| `chname`                     | string | 否   | 中文名（精准匹配） |\n| `search_username`            | string | 否   | 用户名模糊搜索 |\n| `search_chname`              | string | 否   | 中文名模糊搜索 |\n| `search_username_or_chname`  | string | 否   | 用户名或中文名联合模糊搜索 |\n| `extend`                     | string | 否   | 若需返回完整用户信息（含部门、认证来源等），请传 `\"all\"` |\n\n> 💡 建议一次只使用一种搜索参数，避免逻辑冲突。\n\n---\n\n### 2.2 获取当前用户信息  \n**接口名称**：`opsany_rbac_get_my_user_info`  \n**描述**：获取当前登录用户的基本信息及扩展信息。  \n**请求参数**：\n\n| 参数名   | 类型   | 必填 | 描述 |\n|----------|--------|------|------|\n| `extend` | string | 否   | 若需返回完整信息（含部门、认证来源等），请传 `\"all\"` |\n\n---\n\n## 3. Monitor（基础监控）接口\n\n### 3.1 查询告警信息  \n**接口名称**：`opsany_monitor_alert_info`  \n**描述**：获取已纳管的主机或网络设备产生的告警信息，支持分页、关键词及告警级别过滤。  \n**请求参数**：\n\n| 参数名        | 类型   | 必填 | 描述 |\n|---------------|--------|------|------|\n| `page`        | string | 否   | 页码（字符串格式，如 `\"1\"`） |\n| `pageSize`    | string | 否   | 每页条数（字符串格式，如 `\"20\"`） |\n| `host_name`   | string | 否   | 主机唯一标识或实例名称（模糊匹配） |\n| `name`        | string | 否   | 告警名称（模糊匹配） |\n| `severity`    | string | 否   | 告警级别：<br>`\"0\"`: 未分类<br>`\"1\"`: 信息<br>`\"2\"`: 警告<br>`\"3\"`: 一般严重<br>`\"4\"`: 严重<br>`\"5\"`: 灾难 |\n\n---\n\n## 4. Workbench（工作台 / ITSM）接口\n\n### 4.1 查询工单列表  \n**接口名称**：`opsany_workbench_work_order_inst`  \n**描述**：获取不同类别的工单列表，包括全部、待办、已办及本人提交的工单。  \n**请求参数**：\n\n| 参数名      | 类型   | 必填 | 描述 |\n|-------------|--------|------|------|\n| `current`   | string | 否   | 页码（如 `\"1\"`） |\n| `pageSize`  | string | 否   | 每页数量（如 `\"10\"`） |\n| `data`      | string | 否   | 工单分类：<br>`\"all\"`: 全部工单<br>`\"will\"`: 待办工单<br>`\"already\"`: 我的已办工单<br>`\"self\"`: 我提交的工单 |\n| `order_by`  | string | 否   | 排序字段（如 `\"create_time\"`） |\n| `status`    | string | 否   | 工单状态：<br>`\"0\"`: 进行中<br>`\"1\"`: 已结束<br>`\"2\"`: （保留状态） |\n\n---\n\n## 5. Job（作业平台）接口\n\n### 5.1 查询作业平台工具市场列表  \n**接口名称**：`opsany_job_get_tool_market_list`  \n**描述**：获取作业平台工具市场中的作业列表和脚本列表，支持按类型、名称、创建人等条件进行筛选，也可查询单条作业或脚本的详细信息。  \n**请求参数**：\n\n| 参数名         | 类型    | 必填 | 描述 |\n|----------------|---------|------|------|\n| `data_type`    | string  | 否   | 工具市场类型：<br>`\"job\"`: 仅作业<br>`\"script\"`: 仅脚本<br>`\"all\"`: 全部（默认） |\n| `script_name`  | string  | 否   | 模糊搜索脚本或作业名称 |\n| `create_user`  | string  | 否   | 模糊搜索创建人 |\n| `job_id`       | integer | 否   | 查询指定作业的详情，包括作业名称、创建人、创建时间、步骤列表及各步骤中的脚本信息 |\n| `script_id`    | integer | 否   | 查询指定脚本的详情，包括脚本名称、创建人、创建时间、脚本内容等 |\n\n\n### 5.2 查询作业列表  \n**接口名称：** `opsany_job_get_job_list`  \n**描述：** 获取作业平台中可通过作业ID直接执行的作业列表，支持模糊搜索及详情查询。  \n**请求参数：**  \n\n| 参数名        | 类型    | 必填 | 描述 |\n|---------------|---------|------|------|\n| `name`        | string  | 否   | 模糊搜索作业名称 |\n| `create_user` | string  | 否   | 模糊搜索创建人（支持中文名） |\n| `job_id`      | integer | 否   | 查询指定作业的完整详情，包括步骤与脚本信息 |\n\n\n### 5.3 查询脚本列表\n**接口名称：** `opsany_job_get_script_list`  \n**描述：** 获取作业平台中的脚本列表，脚本执行需配合主机等参数；支持模糊搜索及详情查询。  \n**请求参数：**  \n\n| 参数名         | 类型    | 必填 | 描述 |\n|----------------|---------|------|------|\n| `script_name`  | string  | 否   | 模糊搜索脚本名称 |\n| `create_user`  | string  | 否   | 模糊搜索创建人（支持中文名） |\n| `script_id`    | integer | 否   | 查询指定脚本的完整详情，包括脚本内容、创建人、创建时间等 |\n\n\n### 5.4 执行作业\n**接口名称：** `opsany_job_run_job_by_id`  \n**描述：** 根据作业ID执行作业，返回任务ID，可用于后续查询执行结果。  \n**请求参数：**  \n\n| 参数名   | 类型    | 必填 | 描述 |\n|----------|---------|------|------|\n| `job_id` | integer | 是   | 要执行的作业ID |\n\n\n### 5.5 执行脚本（通过脚本ID）\n**接口名称：** `opsany_job_run_script_by_id`  \n**描述：** 根据脚本ID在指定主机上执行脚本，返回任务ID用于查询执行结果。  \n**请求参数：**  \n\n| 参数名          | 类型    | 必填 | 描述 |\n|-----------------|---------|------|------|\n| `script_id`     | integer | 是   | 要执行的脚本ID |\n| `server`        | string  | 是   | 主机唯一标识，多个用逗号分隔（必须为已纳管主机） |\n| `parameter`     | string  | 否   | 脚本执行参数（默认为空） |\n| `run_describe`  | string  | 否   | 执行原因说明 |\n| `time_out`      | integer | 否   | 超时时间（秒），默认120秒 |\n\n\n\n### 5.6 执行脚本（通过脚本内容）  \n**接口名称：** `opsany_job_run_script_by_script`  \n**描述：** 直接传入脚本内容和目标主机信息执行脚本，返回任务ID用于查询结果。  \n**请求参数：**  \n\n| 参数名           | 类型    | 必填 | 描述 |\n|------------------|---------|------|------|\n| `task_name`      | string  | 否   | 任务名称（默认为“MCP生成”） |\n| `server_type`    | string  | 否   | 主机标识类型：<br>`\"host_name\"`（默认）或 `\"ip\"` |\n| `server`         | string  | 是   | 主机唯一标识或IP，多个用逗号分隔（必须为已纳管主机） |\n| `script_type`    | string  | 否   | 脚本类型（文件后缀）：<br>`\"sh\"`（默认）、`\"ps1\"`、`\"py\"`、`\"bat\"` 等 |\n| `script`         | string  | 是   | 要执行的脚本内容 |\n| `parameter`      | string  | 否   | 脚本执行参数（默认为空） |\n| `run_describe`   | string  | 否   | 执行原因说明 |\n| `timeout`        | integer | 否   | 超时时间（秒），默认120秒 |\n\n\n### 5.7 查询执行结果\n**接口名称：** `opsany_job_get_run_result_by_log_id`  \n**描述：** 根据任务ID（log_id）查询作业或脚本的执行结果。  \n**请求参数：**  \n\n| 参数名   | 类型    | 必填 | 描述 |\n|----------|---------|------|------|\n| `log_id` | integer | 是   | 执行作业或脚本后返回的任务ID |\n\n\n## 6. Control（管控平台）接口\n\n\n### 6.1 查询纳管主机列表\n**接口名称**：`opsany_control_get_managed_host_list`  \n**描述**：获取管控平台中已纳管的主机列表，数据来源于资源平台的 SERVER、CLOUD_SERVER、VIRTUAL_SERVER 三种主机模型。  \n****请求参数：****  \n\n| 参数名              | 类型    | 必填 | 描述 |\n|---------------------|---------|------|------|\n| `host_name_search`  | string  | 否   | 按主机唯一标识模糊搜索 |\n| `show_name_search`  | string  | 否   | 按主机显示名称模糊搜索 |\n| `ip_search`         | string  | 否   | 按主机IP模糊搜索 |\n| `id`                | integer | 否   | 按主机ID精准查询 |\n| `host_name`         | string  | 否   | 按主机唯一标识精准查询 |\n| `show_name`         | string  | 否   | 按主机显示名称精准查询 |\n| `ip`                | string  | 否   | 按主机IP精准查询 |\n| `system_type`       | string  | 否   | 按系统类型筛选：<br>`\"Linux\"`、`\"Windows\"` |\n| `host_type`         | string  | 否   | 按主机类型筛选（对应资源平台模型）：<br>`\"SERVER\"`、`\"CLOUD_SERVER\"`、`\"VIRTUAL_SERVER\"`，多个用逗号分隔 |\n\n\n## 在 TRAE 中配置使用\n\n### 1. 启动 MCP Server\n\n首先启动 OpsAny MCP Server：\n\n```bash\ncd opsany-mcp-server\npython server.py --config config/config.yaml\n```\n\n服务器启动后会显示：\n\n```\nStarting OpsAny MCP Server on 192.168.0.111:8020\n```\n\n### 2. 在 TRAE 中配置 MCP Server\n\n1. 打开 TRAE IDE\n2. 进入 **设置** → **MCP Servers**\n3. 点击 **添加 MCP Server**\n4. 填写配置信息：\n\n```json\n{\n    \"name\": \"opsany-mcp-server\",\n    \"url\": \"http://192.168.0.111:8020/sse\",\n    \"headers\": {\n        \"username\": \"username\",\n        \"user-api-token\": \"7IecXVZHrk7t0jQ6lAUwBSULnScfVrRJpM7ZtPi5Wk73Fw\",\n        \"mcp-auth-token\": \"7e84a67d-e97a-4986-a5c9-393837089c12\"\n  }\n}\n```\n\n- username： OpsAny当前用户名\n- user-api-token： OpsAny工作台-个人设置 创建的API Token\n- mcp-auth-token： config.yaml配置中auth_token值\n\n\n5. 点击 **保存** 并 **连接**\n\n### 3. 验证连接\n\n在 TRAE 的聊天界面中输入测试命令：\n\n```\n请使用 api_resources 工具获取所有可用的资源模型\n```\n\n如果连接成功，将返回所有资源模型的列表。\n\n\n### 6. 常见问题排查\n\n#### 连接失败\n\n- 确认 MCP Server 正在运行\n- 检查配置的 URL 是否正确（应为 `http://192.168.0.11:8020/sse`）\n- 查看服务器日志确认是否有错误\n\n#### 认证失败\n\n- 检查 `config.yaml` 中的 API 凭证是否正确\n- 确认 OpsAny 平台地址可访问\n- 验证用户权限是否足够\n\n#### 数据返回为空\n\n- 确认 OpsAny 平台中有相关资源数据\n- 检查搜索关键词是否正确\n- 尝试不使用搜索参数获取全部数据\n\n## 开发\n\n项目结构：\n\n```\nopsany-mcp-server/\n├── opsanymcp/               # 核心模块\n│   ├── api/                 # API 接口\n│   │   ├── __init__.py\n│   │   ├── base.py          # API核心组件\n│   │   ├── cmdb_api.py      # 资源平台API\n│   │   ├── monitor_api.py   # 基础监控API\n│   │   ├── rbac_api.py      # 统一权限API\n│   │   └── workbench_api.py # 工作台API\n│   ├── __init__.py\n│   ├── constants.py         # 常量定义\n│   └── libs.py              # 工具函数\n├── config/                  # 配置文件\n│   └── config.yaml          # 配置文件\n├── server.py                # MCP Server 主入口\n├── tool_list.py             # MCP 工具列表\n└── requirements.txt         # Python 依赖\n```\n\n## 许可证\n\nMIT License\n"
  },
  {
    "path": "opsany-mcp-server/config/config.yaml.example",
    "content": "apiVersion: v2.3.2\napiService:\n  url: https://DOMAIN_NAME\n  bk_app_code: cmdb\n  bk_app_secret: CMDB_SECRET_KEY\n  super_username: admin  # 管理员用户名 用作部分API接口内部调用\n  api_version: 4.0.2  # esb api服务版本\nserver:\n  host: 0.0.0.0\n  port: 8020\n  auth_token: \"MCP_AUTH_TOKEN\"  # MCP Server的认证Token，安装时自动生成，调用时需要添加在Header中。\nconfig:\n  resourceIdDefaultField: \"code,VISIBLE_NAME,name\"\n  resourceIdFieldSearch: false\n  resourceDefaultLimit: 20\n  apiResourcesDefaultLimit: 100\n"
  },
  {
    "path": "opsany-mcp-server/docker/Dockerfile",
    "content": "# Base Image\nFROM registry.cn-beijing.aliyuncs.com/opsany/python:3.12.5-slim-bullseye\n\n# Crate Install PATH\nRUN mkdir -p /opt/opsany/logs/opsany-mcp-server && mkdir /etc/supervisord.d\n\n# Add Code File\nADD ./src /opt/opsany/opsany-mcp-server\n\n# Install Python Env\nRUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \\\n    && sed -i 's/security.debian.org/mirrors.aliyun.com/g'  /etc/apt/sources.list \\\n    && echo \"deb http://mirrors.aliyun.com/debian-security bullseye-security main contrib non-free\" >> /etc/apt/sources.list \\\n    && apt-get update && apt-get -y install build-essential net-tools vim supervisor openssh-client openssl \\\n    && apt-get clean \\\n    && pip --no-cache-dir install -r /opt/opsany/opsany-mcp-server/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com\n\n#Supervisord Config\nADD supervisord.conf /etc/supervisord.conf\nADD mcp-supervisor.ini /etc/supervisord.d/mcp.ini\n\n# Outside Port\nEXPOSE 8020\n\n#supervisord start\nCMD [\"supervisord\", \"-c\", \"/etc/supervisord.conf\"]\n"
  },
  {
    "path": "opsany-mcp-server/docker/mcp-supervisor.ini",
    "content": "[program: bastion]\ncommand = python3 /opt/opsany/opsany-mcp-server/server.py --config config/config.yaml\nstdout_logfile = /opt/opsany/logs/opsany-mcp-server/server.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\n"
  },
  {
    "path": "opsany-mcp-server/docker/supervisord.conf",
    "content": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;chmod=0700                 ; sockef file mode (default 0700)\n;chown=nobody:nogroup       ; socket file uid:gid owner\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n;[inet_http_server]         ; inet (TCP) server disabled by default\n;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)\n;username=user              ; (default is no username (open server))\n;password=123               ; (default is no password (open server))\n\n[supervisord]\nlogfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)\nlogfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)\nlogfile_backups=10          ; (num of main logfile rotation backups;default 10)\nloglevel=info               ; (log level;default info; others: debug,warn,trace)\npidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)\nnodaemon=true              ; (start in foreground if true;default false)\nminfds=1024                 ; (min. avail startup file descriptors;default 1024)\nminprocs=200                ; (min. avail process descriptors;default 200)\n;umask=022                  ; (process file creation umask;default 022)\n;user=chrism                 ; (default is current user, required if root)\n;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')\n;directory=/tmp              ; (default is not to cd during start)\n;nocleanup=true              ; (don't clean up tempfiles at start;default false)\n;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)\n;environment=KEY=value       ; (key value pairs to add to environment)\n;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)\n\n; the below section must remain in the config file for RPC\n; (supervisorctl/web interface) to work, additional interfaces may be\n; added by defining them in separate rpcinterface: sections\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket\n;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket\n;username=chris              ; should be same as http_username if set\n;password=123                ; should be same as http_password if set\n;prompt=mysupervisor         ; cmd line prompt (default \"supervisor\")\n;history_file=~/.sc_history  ; use readline history if available\n\n; The below sample program section shows all possible program subsection values,\n; create one or more 'real' program: sections to be able to control them under\n; supervisor.\n\n;[program:theprogramname]\n;command=/bin/cat              ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=999                  ; the relative start priority (default 999)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=true              ; retstart at unexpected quit (default: true)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)\n;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions (def no adds)\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample eventlistener section shows all possible\n; eventlistener subsection values, create one or more 'real'\n; eventlistener: sections to be able to handle event notifications\n; sent by supervisor.\n\n;[eventlistener:theeventlistenername]\n;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)\n;process_name=%(program_name)s ; process_name expr (default %(program_name)s)\n;numprocs=1                    ; number of processes copies to start (def 1)\n;events=EVENT                  ; event notif. types to subscribe to (req'd)\n;buffer_size=10                ; event buffer queue size (default 10)\n;directory=/tmp                ; directory to cwd to before exec (def no cwd)\n;umask=022                     ; umask for process (default None)\n;priority=-1                   ; the relative start priority (default -1)\n;autostart=true                ; start at supervisord start (default: true)\n;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)\n;startsecs=10                  ; number of secs prog must stay running (def. 1)\n;startretries=3                ; max # of serial start failures (default 3)\n;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)\n;stopsignal=QUIT               ; signal used to kill process (default TERM)\n;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)\n;user=chrism                   ; setuid to this UNIX account to run the program\n;redirect_stderr=true          ; redirect proc stderr to stdout (default false)\n;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO\n;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)\n;stdout_events_enabled=false   ; emit events on stdout writes (default false)\n;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO\n;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)\n;stderr_logfile_backups        ; # of stderr logfile backups (default 10)\n;stderr_events_enabled=false   ; emit events on stderr writes (default false)\n;environment=A=1,B=2           ; process environment additions\n;serverurl=AUTO                ; override serverurl computation (childutils)\n\n; The below sample group section shows all possible group values,\n; create one or more 'real' group: sections to create \"heterogeneous\"\n; process groups.\n\n;[group:thegroupname]\n;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions\n;priority=999                  ; the relative start priority (default 999)\n\n; The [include] section can just contain the \"files\" setting.  This\n; setting can list multiple files (separated by whitespace or\n; newlines).  It can also contain wildcards.  The filenames are\n; interpreted as relative to this file.  Included files *cannot*\n; include files themselves.\n\n[include]\nfiles = supervisord.d/*.ini\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/__init__.py",
    "content": "from .constants import APIEndpoints\nfrom .libs import load_yaml_config\n\n__all__ = ['APIEndpoints', 'load_yaml_config']\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/__init__.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.api.cmdb_api import CMDBApi\nfrom opsanymcp.api.control_api import ControlApi\nfrom opsanymcp.api.job_api import JobApi\nfrom opsanymcp.api.rbac_api import RbacApi\nfrom opsanymcp.api.monitor_api import MonitorApi\nfrom opsanymcp.api.workbench_api import WorkbenchApi\n\n\n__all__ = [\"BaseObj\", \"CMDBApi\", \"RbacApi\", \"MonitorApi\", \"WorkbenchApi\", \"JobApi\", \"ControlApi\"]\n\n\nAPI_CLASS_DICT = {\n    \"opsany_cmdb\": CMDBApi,\n    \"opsany_rbac\": RbacApi,\n    \"opsany_monitor\": MonitorApi,\n    \"opsany_workbench\": WorkbenchApi,\n    \"opsany_job\": JobApi,\n    \"opsany_control\": ControlApi,\n}\n\n_SORTED_PREFIXES = sorted(API_CLASS_DICT.keys(), key=len, reverse=True)\n\ndef get_opsany_api(name, config, username, api_token):\n\n    api_class = BaseObj\n    for prefix in _SORTED_PREFIXES:\n        if name.startswith(prefix):\n            api_class = API_CLASS_DICT[prefix]\n            break\n    api = api_class(name, config, username, api_token)\n    # 检查请求状态\n    if not api.request_status:\n        return False, api, api.to_json(False, api.request_message)\n    return True, api, \"Success\"\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/base.py",
    "content": "import json\n\nfrom opsanymcp.libs import Request\n\n\nclass BaseObj:\n    def __init__(self, name, config, username=None, api_token=None):\n        self.name = name\n        self.username = username\n        self.api_token = api_token\n        self.this_request = Request(config, username, api_token)\n        self.resource_id_default_field = config.get('resourceIdDefaultField') or \"code,VISIBLE_NAME,name\"\n        self.resource_id_field_search = config.get('resourceIdFieldSearch') or False\n        self.real_data_type =config.get('realDataType') or \"table_header\"\n        self.request_status, self.request_message = self.this_request.status, self.this_request.message\n        self.base_params = {\n            \"username\": self.username,\n        }\n\n    def to_json(self, success=False, msg=\"\", result=None, ensure_ascii=False, indent=2):\n        res_data = {\"success\": success, \"error\": msg, \"data\": result}\n        return json.dumps(res_data, ensure_ascii=ensure_ascii, indent=indent)\n\n    def run(self, arguments: dict):\n        fun = getattr(self, self.name, None)\n        if fun:\n            try:\n                return fun(**arguments)\n            except Exception as e:\n                return self.to_json(False, f\"Tool {self.name} error, arguments {arguments}, msg: {e}\")\n        return self.to_json(False, f\"Unknown OpsAny Tool: {self.name}\")\n\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/cmdb_api.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.constants import APIEndpoints\n\n\nclass CMDBApi(BaseObj):\n    cmdb_api_resources_api = APIEndpoints.cmdb_api_resources_api\n    cmdb_get_resource_fields_api = APIEndpoints.cmdb_get_resource_fields_api\n    cmdb_get_resource_api = APIEndpoints.cmdb_get_resource_api\n\n    def opsany_cmdb_api_resources(self, **kwargs):\n        limit = kwargs.get(\"limit\", 100)\n        output = kwargs.get(\"output\", \"\")\n        try:\n            limit = int(limit) or 100\n        except Exception:\n            limit = 100\n\n        params = {\"tree\": \"3\"}\n        if output ==\"extend\":\n            params[\"model_type\"] = \"resource_count,field_count\"\n        status, model_list, mess = self.this_request._request(self.cmdb_api_resources_api, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, mess)\n        headers = {\n            \"model_type_name\": \"资源类型名称\",\n            \"model_type_code\": \"资源类型标识\",\n            \"model_group_name\": \"资源分组名称\",\n            \"model_group_code\": \"资源分组标识\",\n            \"model_name\": \"资源名称\",\n            \"model_code\": \"资源标识\",\n        }\n        if output ==\"extend\":\n            headers.update({\"resource_count\": \"资源实例总数\", \"field_count\": \"基本属性(字段数量)\", \"parent_field_count\": \"从属关系(字段数量)\", \"link_field_count\": \"连接关系(字段数量)\"})\n        dict_data_list = []\n        list_data_list = []\n        for type_dict in model_list:\n            type_name = type_dict.get(\"value\")\n            type_code = type_dict.get(\"key\")\n            group_children = type_dict.get(\"children\") or []\n            for group in group_children:\n                group_name = group.get(\"value\")\n                group_code = group.get(\"key\")\n                children = group.get(\"children\") or []\n                for child in children:\n                    value =  child.get(\"value\")\n                    key =  child.get(\"key\")\n                    res_dict = {\n                        \"model_type_name\": type_name,\n                        \"model_type_code\": type_code,\n                        \"model_group_name\": group_name,\n                        \"model_group_code\": group_code,\n                        \"model_name\": value,\n                        \"model_code\": key,\n                    }\n                    base_li = [type_name, type_code, group_name, group_code, child.get(\"value\"), key]\n                    if output == \"extend\":\n                        res_dict.update(**child)\n                        base_li.extend([\n                            str(child.get(\"resource_count\") or 0),\n                            str(child.get(\"field_count\") or 0),\n                            str(child.get(\"parent_field_count\") or 0),\n                            str(child.get(\"link_field_count\") or 0)\n                        ]\n                    )\n                    list_data_list.append(base_li)\n                    dict_data_list.append(res_dict)\n        list_data_list = list_data_list[:limit]\n        dict_data_list = dict_data_list[:limit]\n        if not list_data_list:\n            return self.to_json(False, mess)\n        result = []\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": headers, \"rows\": dict_data_list}\n        else:\n            for row in list_data_list:\n                row_dict = dict(zip(headers.values(), row))\n                result.append(row_dict)\n        if not result:\n            return self.to_json(False, \"获取当前资源数据为空\", result)\n        return self.to_json(True, mess, result)\n\n    def opsany_cmdb_get_resource_fields(self, **kwargs):\n        model_code = kwargs.get(\"model_code\")\n        if not model_code:\n            return self.to_json(False, \"resource parameter is required\")\n        params = {\n            \"model_code\": model_code,\n        }\n        params.update(self.base_params)\n        status, field_list, mess = self.this_request._request(self.cmdb_get_resource_fields_api, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, f\"获取当前资源 {model_code} 字段失败: {mess}，请使用 api-resources 获取支持的资源！\")\n        headers = {\n            \"model_name\": \"资源名称\",\n            \"model_code\": \"资源标识\",\n            \"name\": \"字段名称\",\n            \"code\": \"字段标识\",\n            \"index\": \"字段序号\",\n            \"type_name\": \"字段类型\",\n            \"field_group_code\": \"字段类分组\",\n            \"is_relationship_field\": \"字段属性\",\n            \"attribute\": \"字段相关配置\",\n        }\n        dict_data_list = []\n        list_data_list = []\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": headers, \"rows\": field_list}\n        else:\n            result = []\n            for field in field_list:\n                l = []\n                for k, v in headers.items():\n                    v = str(field.get(k))\n                    if k == \"is_relationship_field\":\n                        if v == \"\": v = \"基本属性\"\n                        elif v == \"1\": v = \"从属关系\"\n                        elif v == \"2\": v = \"连接关系\"\n                    l.append(v)\n                list_data_list.append(l)\n            for row in list_data_list:\n                row_dict = dict(zip(headers.values(), row))\n                result.append(row_dict)\n        return self.to_json(True, mess, result)\n\n    def opsany_cmdb_get_resource(self, **kwargs):\n        model_code = kwargs.get(\"model_code\")\n        resource_id = kwargs.get(\"resource_id\")\n        search = kwargs.get(\"search\")\n        fields = kwargs.get(\"fields\")\n        page = kwargs.get(\"page\", 1)\n        limit = kwargs.get(\"limit\", 20)\n        if model_code is None:\n            return self.to_json(False, \"model_code parameter is required\")\n\n        headers = []\n        field_code_list = []\n        params = {\n            \"model_code\": model_code,\n            \"page\": page,\n            \"per_page\": limit,\n        }\n        if resource_id and (\"=\" in resource_id) and self.resource_id_field_search:\n            find_fields, find_value = resource_id.split(\"=\")[:2]\n            if resource_id:\n                params[\"find_fields\"] = find_fields\n                params[\"find_value\"] = find_value\n\n        elif resource_id:\n            resource_id_field = self.resource_id_default_field.split(\",\")\n            new_list = []\n            for i in resource_id_field:\n                if i == \"code\": new_list.append(i)\n                else: new_list.append(model_code + \"_\" + i)\n            params[\"find_fields\"] = \",\".join(new_list)\n            params[\"find_value\"] = resource_id\n        if search:\n            params[\"search_type\"] = \"all\"\n            params[\"search_data\"] = search\n\n        params.update(self.base_params)\n        fields_status, field_list, fields_mess = self.this_request._request(self.cmdb_get_resource_fields_api, \"GET\", params=params, body={})\n        if not fields_status:\n            return self.to_json(False, f\"获取当前资源 {model_code} 字段失败: {fields_mess}，请使用 api-resources 获取支持的资源！\")\n\n        data_status, data_dict, data_mess = self.this_request._request(self.cmdb_get_resource_api, \"GET\", params=params, body={})\n        if not data_status:\n            return self.to_json(False,f\"获取当前资源 {model_code} 数据失败: {data_mess}，请使用 api-resources 获取支持的资源！\")\n\n        if not data_dict:\n            return self.to_json(False,f\"获取当前资源 {model_code} 获取数据为空！\")\n\n        list_data_list = []\n\n        if not fields:\n            new_field_list = field_list[:8]\n        else:\n            new_field_list = []\n            fields = fields.split(\",\")\n            for i in field_list:\n                if i.get(\"code\") in fields:\n                    new_field_list.append(i)\n\n        current = data_dict.get(\"current\")\n        page_size = data_dict.get(\"pageSize\")\n        total = data_dict.get(\"total\")\n        data_list = data_dict.get(\"data\", [])\n        total_pages = (total + page_size - 1) // page_size\n        mess = f\"第 {current} 页，共 {total_pages} 页；当前页 {len(data_list)} 条，总共 {total} 条。\"\n\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": new_field_list, \"rows\": data_dict}\n        else:\n            for field in field_list:\n                field_code = field.get(\"code\")\n                field_name = field.get(\"name\")\n                if (fields and (field_code not in fields)) and (fields and (field_name not in fields)):\n                    continue\n                is_relationship_field = field.get(\"is_relationship_field\")\n                if is_relationship_field:\n                    continue\n                headers.append([field_name, field_code])\n                field_code_list.append(field_code)\n            headers.insert(0, [\"序号\", \"code\"])\n            data_list.insert(0, headers)\n            result = data_list\n        return self.to_json(True, mess, result)\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/control_api.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.constants import APIEndpoints\n\n\nclass ControlApi(BaseObj):\n    control_get_managed_host_list = APIEndpoints.control_get_managed_host_list\n\n    def opsany_control_get_managed_host_list(self, **kwargs):\n        host_name_search = kwargs.get('host_name_search')\n        show_name_search = kwargs.get('show_name_search')\n        ip_search = kwargs.get('ip_search')\n        id = kwargs.get('id')\n        host_type = kwargs.get('host_type')\n        host_name = kwargs.get('host_name')\n        show_name = kwargs.get('show_name')\n        ip = kwargs.get('ip')\n        system_type = kwargs.get(\"system_type\")\n        group_type = kwargs.get(\"group_type\")\n        group_level = kwargs.get(\"group_level\")\n        body = {\"token_data\": self.this_request.api_token}\n\n        if show_name_search: body[\"show_name\"] = show_name_search\n        if host_name_search: body[\"name\"] = host_name_search\n        if ip_search: body[\"ip\"] = ip_search\n        if system_type: body[\"system_type\"] = system_type\n        if group_type: body[\"group_type\"] = group_type\n        if system_type: body[\"system_type\"] = system_type\n        if host_type: body[\"host_type\"] = host_type\n        if group_level: body[\"group_level\"] = group_level\n\n        if id:\n            body[\"search_type\"] = \"search_id_list\"\n            body[\"search_data\"] = id\n        elif host_name:\n            body[\"search_type\"] = \"search_name_list\"\n            body[\"search_data\"] = host_name\n        elif ip:\n            body[\"search_type\"] = \"search_ip_list\"\n            body[\"search_data\"] = ip\n        elif show_name:\n            body[\"search_type\"] = \"search_show_name_list\"\n            body[\"search_data\"] = show_name\n        status, data_list, mess = self.this_request._request(self.control_get_managed_host_list, \"POST\", params={}, body=body)\n        if not status:\n            return self.to_json(False, mess)\n        headers = {\n            \"normal\": \"正常主机数\",\n            \"not_normal\": \"不正常主机数\",\n            \"agent_info.ip\": \"主机ID\",\n            \"agent_info.host_name\": \"主机唯一标识\",\n            \"agent_info.show_name\": \"主机显示名\",\n            \"agent_info.system_type\": \"系统类型\",\n            \"agent_info.system_details\": \"系统类型描述\",\n            \"agent_info.ssh_agent_state\": \"可执行状态\",\n            \"agent_info.ssh_agent_state.id\": \"可执行状态ID\",\n            \"agent_info.ssh_agent_state.state\": \"可执行状态\",\n            \"agent_info.agent_state\": \"Agent状态\",\n            \"agent_info.agent_state.id\": \"Agent状态ID\",\n            \"agent_info.agent_state.state\": \"Agent状态\",\n            \"agent_info.ssh_state\": \"SSH状态\",\n            \"agent_info.ssh_state.id\": \"SSH状态ID\",\n            \"agent_info.ssh_state.state\": \"SSH状态\",\n            \"agent_info.control_type\": \"纳管方式\",\n            \"agent_info.control_type.id\": \"纳管方式ID\",\n            \"agent_info.control_type.state\": \"纳管方式\",\n            \"agent_info.group\": \"主机分组\",\n            \"agent_info.controller_name\": \"控制名称\",\n            \"agent_info.controller_id\": \"控制器ID\",\n        }\n\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": headers, \"rows\": data_list}\n        else:\n            result = []\n            new_user_list = []\n            for i in data_list:\n                new_user_list.append([str(i.get(h) or \"\") for h in headers])\n            for row in new_user_list:\n                row_dict = dict(zip(headers.values(), row))\n                result.append(row_dict)\n        if not result:\n            return self.to_json(False, \"获取当前资源数据为空\", result)\n        return self.to_json(True, mess, result)\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/job_api.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.constants import APIEndpoints\n\n\nclass JobApi(BaseObj):\n    job_get_tool_market_list = APIEndpoints.job_get_tool_market_list\n    job_run_job_by_id = APIEndpoints.job_run_job_by_id\n    job_run_script_by_id = APIEndpoints.job_run_script_by_id\n    job_run_script_by_script = APIEndpoints.job_run_script_by_script\n    job_get_run_result_by_log_id = APIEndpoints.job_get_run_result_by_log_id\n\n    def opsany_job_get_tool_market_list(self, **kwargs):\n        data_type = kwargs.get(\"data_type\")\n        job_id = kwargs.get(\"job_id\")\n        script_id = kwargs.get(\"script_id\")\n        script_name = kwargs.get(\"script_name\")\n        create_user = kwargs.get(\"create_user\")\n        visible = kwargs.get(\"visible\")\n        script_type = kwargs.get(\"script_type\")\n        search_type = kwargs.get(\"search_type\")\n        search_data = kwargs.get(\"search_data\")\n\n        params = {}\n        if data_type: params[\"data_type\"] = data_type\n        if job_id: params[\"job_id\"] = job_id\n        if script_id: params[\"script_id\"] = script_id\n        if script_name: params[\"script_name\"] = script_name\n        if create_user: params[\"create_user\"] = create_user\n        status, data_dict, msg = self.this_request._request(self.job_get_tool_market_list, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, f\"获取作业平台工具市场作业或脚本失败，失败原因：{msg}！\")\n\n        job_field_list = {\n            \"job_id\": \"作业ID(执行作业时使用该ID)\",\n            \"name\": \"作业名称\",\n            \"visible\": \"可见范围\",\n            \"describe\": \"作业描述\",\n            \"job_count\": \"作业步骤数量\",\n            \"create_time\": \"创建时间\",\n            \"update_time\": \"更新时间\",\n            \"create_user\": \"创建人(用户名)\",\n            \"create_user_ch_name\": \"创建人(中文名名)\",\n            \"step_list\": \"执行步骤\",\n            \"step_list.id\": \"执行步骤ID\",\n            \"step_list.agent_count\": \"主机个数\",\n            \"step_list.step_name\": \"步骤名称\",\n            \"step_list.step_index\": \"步骤序号\",\n            \"step_list.implement_type\": \"实现类型\",\n            \"step_list.job_type\": \"脚本类型\",\n            \"step_list.parameter\": \"执行参数\",\n            \"step_list.time_out\": \"超时时间\",\n            \"step_list.exception_handle\": \"执行逻辑处理：1：执行失败终止整个作业 2：任何情况都继续执行。\",\n            \"step_list.script\": \"执行任务脚本信息\",\n            \"step_list.script.id\": \"执行任务脚本ID\",\n            \"step_list.script.create_time\": \"脚本创建时间\",\n            \"step_list.script.update_time\": \"脚本更新时间\",\n            \"step_list.script.script_name\": \"脚本名称\",\n            \"step_list.script.file_name\": \"脚本文件名称\",\n            \"step_list.script.create_user\": \"脚本创建人(用户名)\",\n            \"step_list.script.create_user_ch_name\": \"脚本创建人(中文名)\",\n            \"step_list.script.update_user\": \"脚本修改人(用户名)\",\n            \"step_list.script.update_user_ch_name\": \"脚本修改人(中文名)\",\n            \"step_list.script.version_remarks\": \"脚本备注\",\n            \"step_list.script.script_from\": \"脚本来源\",\n            \"step_list.script.version\": \"脚本版本号\",\n            \"step_list.script.visible\": \"可见范围 1：私有 2：公开\",\n            \"step_list.script.script_type\": \"脚本类型\",\n            \"step_list.script.file_url\": \"脚本地址\",\n            \"step_list.script.script\": \"脚本内容\",\n        }\n\n        script_field_list = {\n            \"script_id\": \"脚本ID(执行脚本时使用该ID)\",\n            \"script_name\": \"脚本名称\",\n            \"file_name\": \"脚本文件名\",\n            \"file_url\": \"脚本文件路径\",\n            \"version\": \"脚本版本号\",\n            \"version_remarks\": \"版本备注\",\n            \"visible\": \"可见范围\",\n            \"script_type\": \"脚本类型\",\n            \"script_from\": \"脚本来源\",\n            \"describe\": \"脚本描述\",\n            \"create_time\": \"创建时间\",\n            \"update_time\": \"更新时间\",\n            \"create_user\": \"创建人(用户名)\",\n            \"create_user_ch_name\": \"创建人(中文名名)\",\n            \"script\": \"脚本内容\",\n        }\n\n        if self.real_data_type == \"table_header\":\n            if job_id:\n                result = {\"columns\": job_field_list, \"rows\": data_dict}\n            elif script_id:\n                result = {\"columns\": script_field_list, \"rows\": data_dict}\n            else:\n                result = {\"columns\": {\"job_list\": job_field_list, \"script_list\": script_field_list}, \"rows\": data_dict}\n        else:\n            data_dict[\"job_list_fields\"] = job_field_list\n            data_dict[\"script_list_fields\"] = script_field_list\n            result = data_dict\n        return self.to_json(True, msg, result)\n\n    def opsany_job_get_job_list(self, **kwargs):\n        job_id = kwargs.get(\"job_id\")\n        script_name = kwargs.get(\"name\")\n        create_user = kwargs.get(\"create_user\")\n        visible = kwargs.get(\"visible\")\n        params = {\"data_type\": \"job\"}\n        if job_id: params[\"job_id\"] = job_id\n        if script_name: params[\"script_name\"] = script_name\n        if create_user: params[\"create_user\"] = create_user\n        status, data_dict, msg = self.this_request._request(self.job_get_tool_market_list, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, f\"获取作业平台工具市场作业或脚本失败，失败原因：{msg}！\")\n        if not data_dict:\n            data_dict = {}\n        job_list = data_dict.get(\"job_list\") or []\n        job_field_list = {\n            \"job_id\": \"作业ID(执行作业时使用该ID)\",\n            \"name\": \"作业名称\",\n            \"visible\": \"可见范围\",\n            \"describe\": \"作业描述\",\n            \"job_count\": \"作业步骤数量\",\n            \"create_time\": \"创建时间\",\n            \"update_time\": \"更新时间\",\n            \"create_user\": \"创建人(用户名)\",\n            \"create_user_ch_name\": \"创建人(中文名名)\",\n            \"step_list\": \"执行步骤\",\n            \"step_list.id\": \"执行步骤ID\",\n            \"step_list.agent_count\": \"主机个数\",\n            \"step_list.step_name\": \"步骤名称\",\n            \"step_list.step_index\": \"步骤序号\",\n            \"step_list.implement_type\": \"实现类型\",\n            \"step_list.job_type\": \"脚本类型\",\n            \"step_list.parameter\": \"执行参数\",\n            \"step_list.time_out\": \"超时时间\",\n            \"step_list.exception_handle\": \"执行逻辑处理：1：执行失败终止整个作业 2：任何情况都继续执行。\",\n            \"step_list.script\": \"执行任务脚本信息\",\n            \"step_list.script.id\": \"执行任务脚本ID\",\n            \"step_list.script.create_time\": \"脚本创建时间\",\n            \"step_list.script.update_time\": \"脚本更新时间\",\n            \"step_list.script.script_name\": \"脚本名称\",\n            \"step_list.script.file_name\": \"脚本文件名称\",\n            \"step_list.script.create_user\": \"脚本创建人(用户名)\",\n            \"step_list.script.create_user_ch_name\": \"脚本创建人(中文名)\",\n            \"step_list.script.update_user\": \"脚本修改人(用户名)\",\n            \"step_list.script.update_user_ch_name\": \"脚本修改人(中文名)\",\n            \"step_list.script.version_remarks\": \"脚本备注\",\n            \"step_list.script.script_from\": \"脚本来源\",\n            \"step_list.script.version\": \"脚本版本号\",\n            \"step_list.script.visible\": \"可见范围 1：私有 2：公开\",\n            \"step_list.script.script_type\": \"脚本类型\",\n            \"step_list.script.file_url\": \"脚本地址\",\n            \"step_list.script.script\": \"脚本内容\",\n        }\n\n        if self.real_data_type == \"table_header\":\n            if job_id:\n                result = {\"columns\": job_field_list, \"rows\": data_dict}\n            else:\n                result = {\"columns\": job_field_list, \"rows\": job_list}\n        else:\n            data_dict[\"fields\"] = job_field_list\n            result = job_list\n        return self.to_json(True, msg, result)\n\n    def opsany_job_get_script_list(self, **kwargs):\n        script_id = kwargs.get(\"script_id\")\n        script_name = kwargs.get(\"script_name\")\n        create_user = kwargs.get(\"create_user\")\n        visible = kwargs.get(\"visible\")\n        script_type = kwargs.get(\"script_type\")\n        search_type = kwargs.get(\"search_type\")\n        search_data = kwargs.get(\"search_data\")\n\n        params = {\"data_type\": \"script\"}\n        if script_id: params[\"script_id\"] = script_id\n        if script_name: params[\"script_name\"] = script_name\n        if create_user: params[\"create_user\"] = create_user\n        status, data_dict, msg = self.this_request._request(self.job_get_tool_market_list, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, f\"获取作业平台工具市场作业或脚本失败，失败原因：{msg}！\")\n        if not data_dict:\n            data_dict = {}\n        script_list = data_dict.get(\"script_list\") or []\n        script_field_list = {\n            \"script_id\": \"脚本ID(执行脚本时使用该ID)\",\n            \"script_name\": \"脚本名称\",\n            \"file_name\": \"脚本文件名\",\n            \"file_url\": \"脚本文件路径\",\n            \"version\": \"脚本版本号\",\n            \"version_remarks\": \"版本备注\",\n            \"visible\": \"可见范围\",\n            \"script_type\": \"脚本类型\",\n            \"script_from\": \"脚本来源\",\n            \"describe\": \"脚本描述\",\n            \"create_time\": \"创建时间\",\n            \"update_time\": \"更新时间\",\n            \"create_user\": \"创建人(用户名)\",\n            \"create_user_ch_name\": \"创建人(中文名名)\",\n            \"script\": \"脚本内容\",\n        }\n\n        if self.real_data_type == \"table_header\":\n            if script_id:\n                result = {\"columns\": script_field_list, \"rows\": data_dict}\n            else:\n                result = {\"columns\": script_field_list, \"rows\": script_list}\n        else:\n            data_dict[\"fields\"] = script_field_list\n            data_dict[\"script_list\"] = script_list\n            result = data_dict\n        return self.to_json(True, msg, result)\n\n    def opsany_job_run_job_by_id(self, **kwargs):\n        job_id = kwargs.get(\"job_id\")\n        body = {\"job_id\": job_id}\n        status, data_dict, msg = self.this_request._request(self.job_run_job_by_id, \"POST\", params={}, body=body)\n        if not status:\n            return self.to_json(False, f\"执行作业失败，失败原因：{msg}！\")\n\n        return self.to_json(True, msg, {\"log_id\": data_dict})\n\n    def opsany_job_run_script_by_id(self, **kwargs):\n        script_id = kwargs.get(\"script_id\")\n        server = kwargs.get(\"server\") or \"\"\n        parameter = kwargs.get(\"parameter\")\n        run_describe = kwargs.get(\"run_describe\") or f\"CMP调用，执行人：{self.this_request.username}!\"\n        time_out = kwargs.get(\"time_out\") or 60\n        if not server:\n            return self.to_json(False, f\"执行作业失败，缺少主机信息(server: 多条用逗号隔开)！\")\n\n        # if \",\" in server:\n        #     server = server.split(\",\")\n        # else:\n        #     server = [server]\n        # server_list = [{\"host_name\": str(i).strip()} for i in server]\n        body = {\n            \"script_id\": script_id,\n            \"server\": server,\n            \"parameter\": parameter,\n            \"run_describe\": run_describe,\n            \"time_out\": time_out,\n        }\n        status, data_dict, msg = self.this_request._request(self.job_run_script_by_id, \"POST\", params={}, body=body)\n        if not status:\n            return self.to_json(False, f\"执行作业失败，失败原因：{msg}！\")\n\n        return self.to_json(True, msg, {\"log_id\": data_dict})\n\n    def opsany_job_run_script_by_script(self, **kwargs):\n        task_name = kwargs.get(\"task_name\")\n        script_format = kwargs.get(\"script_format\")\n        script_type = kwargs.get(\"script_type\") or \"content\"\n        script = kwargs.get(\"script\") or \"\"\n        server_type = kwargs.get(\"server_type\") or \"host_name\"\n        server = kwargs.get(\"server\") or \"\"\n        parameter = kwargs.get(\"parameter\")\n        run_describe = kwargs.get(\"run_describe\") or f\"CMP调用，执行人：{self.this_request.username}!\"\n        timeout = kwargs.get(\"timeout\") or 60\n        if not server:\n            return self.to_json(False, f\"执行作业失败，缺少主机信息(server: 多条用逗号隔开)！\")\n\n        # if \",\" in server:\n        #     server = server.split(\",\")\n        # else:\n        #     server = [server]\n        # server_list = [{\"host_name\": str(i).strip()} for i in server]\n        body = {\n            \"script_format\": script_format,\n            \"task_name\": task_name,\n            \"script_type\": script_type,\n            \"script\": script,\n            \"server_type\": server_type,\n            \"server\": server,\n            \"parameter\": parameter,\n            \"run_describe\": run_describe,\n            \"timeout\": timeout,\n        }\n        status, data_dict, msg = self.this_request._request(self.job_run_script_by_script, \"POST\", params={}, body=body)\n        if not status:\n            return self.to_json(False, f\"执行作业失败，失败原因：{msg}！\")\n\n        return self.to_json(True, msg, {\"log_id\": data_dict})\n\n    def opsany_job_get_run_result_by_log_id(self, **kwargs):\n        log_id = kwargs.get(\"log_id\")\n        params = {\"task_log_id\": log_id}\n        status, data_dict, msg = self.this_request._request(self.job_get_run_result_by_log_id, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, f\"获取执行结果失败，失败原因：{msg}！\")\n\n        log_field_list = {\n            \"id\": \"执行任务ID\",\n            \"create_time\": \"执行任务开始时间\",\n            \"time\": \"执行任务耗时\",\n            \"end_time\": \"执行任务结束时间\",\n            \"state\": \"执行任务状态\",\n            \"name\": \"执行任务名称\",\n            \"task_type\": \"执行任务类型\",\n            \"run_user\": \"执行人\",\n            # \"proccess\": \"进度\",\n            \"flag\": \"是否完成标识\",\n            \"task_status\": \"状态1：\",\n            \"run_describe\": \"执行原因\",\n            \"call_type\": \"执行方式\",\n            \"step_list\": \"执行步骤\",\n            \"step_list.id\": \"执行步骤ID\",\n            \"step_list.time\": \"执行步骤耗时\",\n            \"step_list.state\": \"执行步骤状态\",\n            \"step_list.job_status\": \"状态码\",\n            \"step_list.step_name\": \"执行步骤名称\",\n            \"step_list.step_index\": \"执行步步骤序号\",\n            \"step_list.implement_type\": \"实现类型\",\n            \"step_list.script_from\": \"脚本来源\",\n            \"step_list.parameter\": \"执行参数\",\n            \"step_list.start_time\": \"开始时间\",\n            \"step_list.end_time\": \"结束时间\",\n            \"step_list.script\": \"执行任务脚本信息\",\n            \"step_list.script.id\": \"执行任务脚本ID\",\n            \"step_list.script.create_time\": \"脚本创建时间\",\n            \"step_list.script.update_time\": \"脚本更新时间\",\n            \"step_list.script.script_name\": \"脚本名称\",\n            \"step_list.script.file_name\": \"脚本文件名称\",\n            \"step_list.script.create_user\": \"脚本创建人(用户名)\",\n            \"step_list.script.create_user_ch_name\": \"脚本创建人(中文名)\",\n            \"step_list.script.update_user\": \"脚本修改人(用户名)\",\n            \"step_list.script.update_user_ch_name\": \"脚本修改人(中文名)\",\n            \"step_list.script.version_remarks\": \"脚本备注\",\n            \"step_list.script.script_from\": \"脚本来源\",\n            \"step_list.script.version\": \"脚本版本号\",\n            \"step_list.script.script_type\": \"脚本类型\",\n            \"step_list.script.file_url\": \"脚本地址\",\n            \"step_list.script.script\": \"执行任务脚本内容\",\n            \"step_list.run_server\": \"主机执行结果\",\n            \"step_list.run_server.host_name\": \"主机唯一标识\",\n            \"step_list.run_server.show_name\": \"主机名称\",\n            \"step_list.run_server.ip\": \"主机IP\",\n            \"step_list.run_server.agent_state\": \"主机Agent状态\",\n            \"step_list.run_server.ssh_state\": \"主机SSH状态\",\n            \"step_list.run_server.ssh_agent_state\": \"主机可执行状态\",\n            \"step_list.run_server.state\": \"主机执行状态\",\n            \"step_list.run_server.controller_name\": \"主机控制器名称\",\n            \"step_list.run_server.controller_id\": \"主机控制器ID\",\n            \"step_list.run_server.system_type\": \"主机操作系统类型\",\n            \"step_list.run_server.server_status\": \"主机状态\",\n            \"step_list.run_server.return_log\": \"主机执行结果\",\n        }\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": log_field_list, \"rows\": data_dict}\n        else:\n            result = {\"fields\": log_field_list, \"data_dict\": data_dict}\n        return self.to_json(True, msg, result)\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/monitor_api.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.constants import APIEndpoints\n\n\nclass MonitorApi(BaseObj):\n    monitor_alert_info = APIEndpoints.monitor_alert_info\n\n    def opsany_monitor_alert_info(self, **kwargs):\n        page = kwargs.get(\"page\", 1)\n        page_size = kwargs.get(\"page_size\", 50)\n        host_name = kwargs.get(\"host_name\")\n        problem = kwargs.get(\"name\")\n        level_id = kwargs.get(\"severity\")\n\n        filter = {\n            \"host_name\": host_name,\n            \"problem\": problem,\n            \"level_id\": level_id,\n        }\n        body = {\"page\": page, \"pageSize\": page_size, \"filter\": filter}\n        status, data_list, mess = self.this_request._request(self.monitor_alert_info, \"POST\", params={}, body=body)\n        if not status:\n            return self.to_json(False, mess)\n        headers = {\n            \"eventid\": \"事件ID\",\n            \"name\": \"告警名称\",\n            \"objectid\": \"时间对象ID\",\n            \"clock\": \"告警时间\",\n            \"ns\": \"告警持续时间\",\n            \"r_eventid\": \"恢复时间ID\",\n            \"r_clock\": \"恢复时间\",\n            \"r_ns\": \"恢复持续时间\",\n            \"acknowledged\": \"是否确认\",\n            \"severity\": \"告警级别(0: 未分类 1: 信息 2: 警告 3: 一般严重 4: 严重 5: 灾难)\",\n            \"cause_eventid\": \"原因时间ID\",\n            \"suppressed\": \"是否被抑制\",\n            \"hostid\": \"Zabbix主机ID\",\n            \"host\": \"Zabbix主机名\",\n            \"host_id\": \"管控平台实例ID\",\n            \"host_name\": \"实例唯一标识\",\n            \"zabbix_host_id\": \"Zabbix主机ID\",\n            \"show_name\": \"实例名称\",\n            \"group_full_name\": \"实例分组完整名称\",\n            \"host_type\": \"主机模型code(cmdb模型名称)\",\n            \"host_type_name\": \"主机模型名称(cmdb模型名称)\",\n            \"network_code\": \"网络设备模型code(cmdb模型code)\",\n            \"network_name\": \"网络设备模型名称(cmdb模型名称)\",\n            \"device_type\": \"实例类型 host：主机 network： 网络设备\",\n        }\n\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": headers, \"rows\": data_list}\n        else:\n            result = []\n            new_user_list = []\n            for i in data_list:\n                new_user_list.append([str(i.get(h) or \"\") for h in headers])\n            for row in new_user_list:\n                row_dict = dict(zip(headers.values(), row))\n                result.append(row_dict)\n        if not result:\n            return self.to_json(False, \"获取当前资源数据为空\", result)\n        return self.to_json(True, mess, result)\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/rbac_api.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.constants import APIEndpoints\n\n\nclass RbacApi(BaseObj):\n    rbac_get_all_user = APIEndpoints.rbac_get_all_user\n\n    user_headers = {\n        \"id\": \"用户ID\",\n        \"username\": \"用户名\",\n        \"chname\": \"中文名称\",\n        \"phone\": \"联系电话\",\n        \"email\": \"电子邮箱\",\n        \"department_id\": \"部门ID\",\n        \"position\": \"所任职位\",\n        \"description\": \"用户描述\",\n        \"joined_time\": \"创建时间\",\n        \"bk_role\": \"用户类型(0: 普通用户 1: 管理员 2: 开发者)\",\n        \"is_activate\": \"账号状态(True:启用 False:禁用)\",\n    }\n\n    extend_headers = {\n        \"dep_full_name\": \"所属完整部门\",\n        \"dep_name\": \"所属部门\",\n        \"google_auth_status\": \"开启MFA认证(True:启用 False:禁用))\",\n        \"google_auth_seven_days_free\": \"MFA开启7天免认证(True:启用 False:禁用)\",\n        \"auth_folder_name\": \"用户组织目录\",\n        \"auth_type\": \"认证类型\",\n        \"auth_type_name\": \"认证类型名称\",\n        \"domain\": \"登录域\",\n    }\n\n    def opsany_rbac_get_or_search_all_user(self, **kwarg):\n        limit = kwarg.get(\"limit\")\n        try:\n            limit = int(limit) or 100\n        except Exception:\n            limit = 100\n        if self.this_request.bk_role not in [1]:\n            return self.to_json(False, \"只有管理员权限可以获取到全部用户信息！\")\n        extend = kwarg.get(\"extend\")\n        params = {\n            \"bk_username\": self.this_request.super_username,\n            \"username\": kwarg.get(\"username\"),\n            \"chname\": kwarg.get(\"chname\"),\n            \"search_username\": kwarg.get(\"search_username\"),\n            \"search_chname\": kwarg.get(\"search_chname\"),\n            \"search_username_or_chname\": kwarg.get(\"search_username_or_chname\"),\n            \"extend\": extend,\n        }\n        if extend:\n            self.user_headers.update(self.extend_headers)\n        status, user_list, mess = self.this_request._request(self.rbac_get_all_user, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, mess)\n\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": self.user_headers, \"rows\": user_list}\n        else:\n            result = []\n            new_user_list = []\n            for i in user_list:\n                new_user_list.append([str(i.get(h) or \"\") for h in self.user_headers])\n            for row in new_user_list:\n                row_dict = dict(zip(self.user_headers.values(), row))\n                result.append(row_dict)\n        if not result:\n            return self.to_json(False, \"获取当前资源数据为空\", result)\n        return self.to_json(True, mess, result)\n\n    def opsany_rbac_get_my_user_info(self, **kwarg):\n        extend = kwarg.get(\"extend\")\n        params = {\n            \"bk_username\": self.this_request.super_username,\n            \"username\": self.this_request.bk_username,\n            \"extend\": extend,\n        }\n        if extend:\n            self.user_headers.update(self.extend_headers)\n        status, user_list, mess = self.this_request._request(self.rbac_get_all_user, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, mess)\n\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": self.user_headers, \"rows\": user_list}\n        else:\n            result = []\n            new_user_list = []\n            for i in user_list:\n                new_user_list.append([str(i.get(h) or \"\") for h in self.user_headers])\n            for row in new_user_list:\n                row_dict = dict(zip(self.user_headers.values(), row))\n                result.append(row_dict)\n        if not result:\n            return self.to_json(False, \"获取当前资源数据为空\", result)\n        return self.to_json(True, mess, result)\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/api/workbench_api.py",
    "content": "from opsanymcp.api.base import BaseObj\nfrom opsanymcp.constants import APIEndpoints\n\n\nclass WorkbenchApi(BaseObj):\n    workbench_work_order_inst_list = APIEndpoints.workbench_work_order_inst_list\n\n    def opsany_workbench_work_order_inst(self, **kwargs):\n        params = {\n            \"current\": kwargs.get(\"current\", 1),\n            \"pageSize\": kwargs.get(\"pageSize\", 20),\n            \"data_type\": kwargs.get(\"data_type\", \"page\"),\n            \"data\": kwargs.get(\"data\", \"will\"),\n            \"order_by\": kwargs.get(\"order_by\"),\n            \"order_type\": kwargs.get(\"order_type\"),\n            \"status\": kwargs.get(\"status\"),\n            \"create_min_time\": kwargs.get(\"create_min_time\"),\n            \"create_max_time\": kwargs.get(\"create_max_time\"),\n            \"number\": kwargs.get(\"number\"),\n            \"title\": kwargs.get(\"title\"),\n            \"score\": kwargs.get(\"score\"),\n            \"contents\": kwargs.get(\"contents\"),\n            \"follow\": kwargs.get(\"follow\"),\n            \"search_type\":  kwargs.get(\"search_type\"),\n            \"search_data\": kwargs.get(\"search_data\"),\n        }\n        status, data_list, mess = self.this_request._request(self.workbench_work_order_inst_list, \"GET\", params=params, body={})\n        if not status:\n            return self.to_json(False, mess)\n        headers = {\n            \"id\": \"工单ID\",\n            \"number\": \"工单编号\",\n            \"title\": \"工单标题\",\n            \"status\": \"工单状态\",\n            \"error\": \"工单错误信息\",\n            \"work_order_name\": \"工单模板名称\",\n            \"work_order_type_name\": \"工单类型名称\",\n            \"create_user_username\": \"提单人用户名\",\n            \"create_user_ch_name\": \"提单人中文名\",\n            \"create_time\": \"提单时间\",\n            \"sla_first_resp_time\": \"SLA协议首次响应时间\",\n            \"first_resp_time\": \"实际响应时间\",\n            \"first_resp_second\": \"实际响应时间(单位秒)\",\n            \"sla_resolved_time\": \"SLA协议解决时间\",\n            \"resolved_time\": \"实际解决时间\",\n            \"resolved_second\": \"实际解决时间(单位秒)\",\n            \"first_resp_status\": \"是否符合响应协议\",\n            \"resolved_status\": \"是否符合处理协议\",\n            \"current_step.step_name\": \"当前进度(当前节点)\",\n            \"current_step.index\": \"当前进度序号\",\n            \"current_step.step_type\": \"当前节点类型\",\n            \"current_step.step_handler.username\": \"节点处理人用户名\",\n            \"current_step.step_handler.ch_name\": \"节点处理人中文名\",\n            \"current_step.step_handler.handle_status\": \"是否处理\",\n        }\n\n        if self.real_data_type == \"table_header\":\n            result = {\"columns\": headers, \"rows\": data_list}\n        else:\n            result = []\n            new_user_list = []\n            for i in data_list:\n                new_user_list.append([str(i.get(h) or \"\") for h in headers])\n            for row in new_user_list:\n                row_dict = dict(zip(headers.values(), row))\n                result.append(row_dict)\n        if not result:\n            return self.to_json(False, \"获取当前资源数据为空\", result)\n        return self.to_json(True, mess, result)\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/constants.py",
    "content": "url_startswith = \"/api/c/compapi/\"\n\nurl_cmdb_startswith = url_startswith + \"cmdb/\"\nurl_rbac_startswith = url_startswith + \"rbac/\"\nurl_control_startswith = url_startswith + \"control/\"\nurl_workbench_startswith = url_startswith + \"workbench/\"\nurl_job_startswith = url_startswith + \"job/\"\n\n\nclass APIEndpoints:\n    check_api_token = \"/login/accounts/is_login/\"\n    cmdb_get_resource_fields_api = url_cmdb_startswith + \"get_model_field/\"\n    cmdb_get_resource_api = url_cmdb_startswith + \"model_data_get/\"\n    cmdb_api_resources_api = url_cmdb_startswith + \"get_cmdb_model_tree/\"\n    rbac_get_all_user = url_rbac_startswith + \"get_all_user/\"\n    monitor_alert_info = url_control_startswith + \"problem_info/\"\n    workbench_work_order_inst_list = url_workbench_startswith + \"get_work_order_inst/\"\n    job_get_tool_market_list = url_job_startswith + \"get_tool_market_list/\"\n    job_run_job_by_id = url_job_startswith + \"run_job_by_id/\"\n    job_run_script_by_id = url_job_startswith + \"run_script_by_id/\"\n    job_run_script_by_script = url_job_startswith + \"run_script_by_script/\"\n    job_get_run_result_by_log_id = url_job_startswith + \"get_run_result_by_log_id/\"\n    control_get_managed_host_list = url_control_startswith + \"get_control_agent_info/\"\n"
  },
  {
    "path": "opsany-mcp-server/opsanymcp/libs.py",
    "content": "import json\nimport os\nfrom pathlib import Path\nfrom typing import Optional\nfrom starlette.responses import Response\n\nimport yaml\nfrom requests import request\nimport urllib3\nfrom opsanymcp import APIEndpoints\n\nurllib3.disable_warnings()\n\n\nclass Request:\n    def __init__(self, config, username, api_token):\n        self.api_service = config.get(\"apiService\")\n        self.url = self.api_service.get(\"url\")\n        self.super_username = self.api_service.get(\"super_username\")\n        self.username = username\n        self.bk_username = username\n        self.is_bk_username = False\n        self.bk_role = 0\n        self.api_token = api_token\n        self.headers = {\"Content-Type\": \"application/json; charset=utf-8\", \"User-Agent\": \"OpsAny MCP Server v1\"}\n        self.bk_app_code = self.api_service.get(\"bk_app_code\")\n        self.bk_app_secret = self.api_service.get(\"bk_app_secret\")\n        self.status, self.message = self.check_user()\n\n    def check_user(self):\n        if not self.username:\n            return False, \"MCP Client headers缺少参数用户名(username)\"\n        if not self.api_token:\n            return False, \"MCP Client headers缺少参数APIToken(user-api-token), 工作台-个人设置-API Token\"\n\n        check_url = APIEndpoints.check_api_token\n        params = {\"bk_token\": self.api_token, \"request_api_from\": \"esb\", \"username\": self.bk_username}\n        err_title = \"用户认证失败: {}\"\n        try:\n            url = str(self.url) + check_url\n            res = request(\"GET\", url, data={}, params=params, headers=self.headers, timeout=5, verify=False)\n            try:\n                json_data = res.json()\n                message = json_data.get(\"message\") or \"Success\"\n                if json_data.get(\"result\"):\n                    user_dict = json_data.get(\"data\") or {}\n                    if isinstance(user_dict, dict):\n                        if self.bk_username == user_dict.get(\"username\"):\n                            self.bk_role = user_dict.get(\"bk_role\") or 0\n                            return True, message\n                        else:\n                            return False, err_title.format(\"无效的令牌，请检查后重试！\")\n                    else:\n                        return False, err_title.format(message)\n                else:\n                    return False, err_title.format(message) + \"(工作台-个人设置-API Token，创建并获取Token)\"\n            except Exception as e:\n                return False, err_title.format(str(res.content.decode()))\n        except Exception as e:\n            return False, err_title.format(str(e))\n\n    def _request(self, url_path, method, params, body, headers=None, timeout=10):\n        if not headers:\n            headers = self.headers\n        url = str(self.url) + url_path\n        base_params = {\n            \"bk_app_code\": self.bk_app_code,\n            \"bk_app_secret\": self.bk_app_secret,\n        }\n        if self.is_bk_username:\n            base_params[\"bk_username\"] = self.bk_username\n        else:\n            base_params[\"bk_token\"] = self.api_token\n            headers[\"Cookie\"] = f\"bk_token={self.api_token};opsany_language=chinese_simplified\"\n        params.update(base_params)\n        body.update(base_params)\n        try:\n            res = request(method, url, data=json.dumps(body), params=params, headers=headers, timeout=timeout, verify=False)\n            try:\n                json_data = res.json()\n                result = json_data.get(\"result\")\n                message = json_data.get(\"message\")\n                data = json_data.get(\"data\")\n                if not result:\n                    return False, [], message\n                return True, data, message or \"Success\"\n            except Exception as e:\n                return False, [], f\"HTTP 响应解析失败: {res.content.decode()}\"\n        except Exception as e:\n            return False, [], f\"HTTP 请求失败: {str(url)} {str(e)}\"\n\n\ndef load_yaml_config(config_path=None) -> tuple:\n    if not config_path:\n        current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n        project_config_path = os.path.join(current_dir, \"config\", \"config.yaml\")\n        user_config_path = os.path.join(str(Path.home()), \".opsany-mcp-server\", \"config\")\n        if os.path.exists(project_config_path):\n            config_path = project_config_path\n        elif os.path.exists(user_config_path):\n            config_path = user_config_path\n        else:\n            config_path = project_config_path\n    try:\n        with open(config_path, 'r', encoding='utf-8') as file:\n            config = yaml.safe_load(file)\n        if not isinstance(config, dict):\n            return False, f\"错误: 配置文件 config 格式不正确\"\n\n        api_service = config.get(\"apiService\")\n        if not isinstance(api_service, dict):\n            return False, f\"错误: 配置文件 config.apiService 格式不正确\"\n        if not all([k in api_service for k in [\"url\", \"bk_app_code\", \"bk_app_secret\"]]):\n            return False, f\"错误: 配置文件 config.apiService 缺少必要项\"\n        return True, config\n    except FileNotFoundError:\n        return False, f\"错误: 配置文件 '{config_path}' 不存在\"\n    except yaml.YAMLError as e:\n        return False, f\"错误: 无法解析 YAML 文件 '{config_path}': {e}\"\n    except Exception as e:\n        return False, f\"错误: 未知的错误: {str(e)}\"\n\n\ndef check_auth(request, expected_token: Optional[str]) -> Optional[Response]:\n    \"\"\"检查 Bearer Token，失败返回 401\"\"\"\n    if isinstance(request, Request):\n        auth_token = request.headers.get(\"mcp-auth-token\", \"\")\n    else:\n        auth_token = dict(request.get(\"headers\", [])).get(b\"mcp-auth-token\", b\"\").decode(\"utf-8\")\n    if not auth_token:\n        return Response(\n            content=json.dumps({\"error\": \"Missing Authorization header: mcp-auth-token\"}),\n            status_code=401,\n            media_type=\"application/json\",\n        )\n\n    if auth_token != expected_token:\n        return Response(\n            content=json.dumps({\"error\": \"Invalid mcp auth token\"}),\n            status_code=401,\n            media_type=\"application/json\",\n        )\n    return None\n\n"
  },
  {
    "path": "opsany-mcp-server/requirements.txt",
    "content": "mcp>=1.0.0\npyyaml>=6.0.1\nrequests>=2.25.0\nuvicorn>=0.24.0\nstarlette>=0.27.0\n"
  },
  {
    "path": "opsany-mcp-server/server.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport asyncio\nimport json\nfrom typing import Any, Dict, List, Optional\nfrom dataclasses import dataclass, field\n\nfrom mcp.server import Server\nfrom mcp.server.sse import SseServerTransport\nfrom mcp.types import Tool, TextContent\n\nfrom opsanymcp import load_yaml_config\nfrom opsanymcp.api import get_opsany_api\nfrom opsanymcp.libs import check_auth\nfrom tool_list import TOOL_LIST\n\nfrom starlette.applications import Starlette\nfrom starlette.routing import Route, Mount\nfrom starlette.requests import Request\nfrom starlette.responses import Response\nfrom starlette.types import ASGIApp, Scope, Receive, Send\n\nimport uvicorn\nimport argparse\nimport contextvars\n\n# 全局上下文变量\ncurrent_username = contextvars.ContextVar(\"username\", default=None)\ncurrent_api_token = contextvars.ContextVar(\"api_token\", default=None)\n\n\n@dataclass\nclass ServerConfig:\n    host: str = \"0.0.0.0\"\n    port: int = 8020\n    config: Dict = field(default_factory=dict)\n    auth_token: Optional[str] = None\n\n\nclass AuthenticatedPostMessageApp:\n    \"\"\"为 /messages POST 请求添加认证的 ASGI 包装器\"\"\"\n    def __init__(self, inner_app: ASGIApp, expected_token: Optional[str]):\n        self.inner_app = inner_app\n        self.expected_token = expected_token\n\n    async def __call__(self, scope: Scope, receive: Receive, send: Send):\n        if scope[\"type\"] != \"http\" or scope[\"method\"] != \"POST\":\n            await self.inner_app(scope, receive, send)\n            return\n\n        if check_auth(scope, self.expected_token):\n            await self._send_unauthorized(send)\n            return\n\n        await self.inner_app(scope, receive, send)\n\n    async def _send_unauthorized(self, send: Send):\n        body = json.dumps({\"error\": \"Unauthorized\"}).encode(\"utf-8\")\n        await send({\n            \"type\": \"http.response.start\",\n            \"status\": 401,\n            \"headers\": [\n                (b\"content-type\", b\"application/json\"),\n                (b\"www-authenticate\", b\"Bearer realm=\\\"mcp\\\"\"),\n            ],\n        })\n        await send({\n            \"type\": \"http.response.body\",\n            \"body\": body,\n        })\n\n\nclass OpsAnyMCPServer:\n    def __init__(self, config: ServerConfig):\n        self.config = config\n        self.server = Server(\"opsany-mcp-server\")\n        self.opsany_config = config.config\n        self._register_handlers()\n\n    def _register_handlers(self):\n        @self.server.list_tools()\n        async def list_tools() -> List[Tool]:\n            return [Tool(**i) for i in TOOL_LIST]\n\n        @self.server.call_tool()\n        async def call_tool(name: str, arguments: Dict[str, Any]) -> List[TextContent]:\n            username = current_username.get()\n            api_token = current_api_token.get()\n            api_params = {\"config\": self.opsany_config, \"username\": username, \"api_token\": api_token}\n            try:\n                status, api, msg = get_opsany_api(name, **api_params)\n                if status:\n                    result = api.run(arguments)\n                else:\n                    result = msg\n            except Exception as e:\n                result = json.dumps({\"success\": False, \"error\": str(e)}, ensure_ascii=False, indent=2)\n            return [TextContent(type=\"text\", text=result)]\n\n\nasync def main():\n    parser = argparse.ArgumentParser(description=\"OpsAny MCP Server\")\n    parser.add_argument(\"--host\", help=\"Host to bind to (overrides config)\")\n    parser.add_argument(\"--port\", type=int, help=\"Port to listen on (overrides config)\")\n    parser.add_argument(\"--config\", help=\"Path to config file\")\n    args = parser.parse_args()\n\n    config_path = args.config or \"config/config.yaml\"\n    config_status, opsany_config = load_yaml_config(config_path)\n    if not config_status:\n        print(f\"Error loading config: {opsany_config}\")\n        return\n\n    server_cfg = opsany_config.get(\"server\", {})\n    url = opsany_config.get(\"apiService\", {}).get(\"url\")\n    version = opsany_config.get(\"apiVersion\", \"-\")\n    host = args.host or server_cfg.get(\"host\", \"0.0.0.0\")\n    port =  args.port or server_cfg.get(\"port\", 8020)\n    auth_token = server_cfg.get(\"auth_token\")  # ← 读取 token\n\n    if not host or not port:\n        print(f\"Error loading server config (host/port): {opsany_config}\")\n        return\n\n    config = ServerConfig(\n        host=host,\n        port=port,\n        config=opsany_config,\n        auth_token=auth_token\n    )\n\n    server_instance = OpsAnyMCPServer(config)\n    sse = SseServerTransport(\"/messages\")\n\n    # --- 路由处理函数 ---\n    async def index(request: Request):\n        # 可选：是否对 / 做认证？这里选择不做（用于健康检查）\n        return Response(\n            content=json.dumps({\n                \"success\": True,\n                \"name\": \"OpsAny MCP Server\",\n                \"version\": opsany_config.get(\"apiVersion\", \"unknown\")\n            }),\n            media_type=\"application/json\"\n        )\n\n    async def handle_sse(request: Request):\n        auth_error = check_auth(request, config.auth_token)\n        if auth_error:\n            return auth_error\n        username = request.headers.get(\"username\")\n        api_token = request.headers.get(\"user-api-token\")\n        # 设置上下文\n        token1 = current_username.set(username)\n        token2 = current_api_token.set(api_token)\n        try:\n            async with sse.connect_sse(request.scope, request.receive, request._send) as (read_stream, write_stream):\n                await server_instance.server.run(\n                    read_stream,\n                    write_stream,\n                    server_instance.server.create_initialization_options()\n                )\n        finally:\n            # 清理上下文\n            current_username.reset(token1)\n            current_api_token.reset(token2)\n        return Response()\n\n    async def handle_sse_tools(request: Request):\n        auth_error = check_auth(request, config.auth_token)\n        if auth_error:\n            return auth_error\n        return Response(\n            content=json.dumps({\"success\": True, \"tools\": TOOL_LIST}),\n            media_type=\"application/json\"\n        )\n\n    # --- 构建应用 ---\n    app = Starlette(\n        debug=True,\n        routes=[\n            Route(\"/\", endpoint=index, methods=[\"GET\"]),\n            Route(\"/sse\", endpoint=handle_sse, methods=[\"GET\"]),\n            Mount(\"/messages\", app=AuthenticatedPostMessageApp(sse.handle_post_message, config.auth_token)),\n            Route(\"/sse/tools\", endpoint=handle_sse_tools, methods=[\"GET\"]),\n        ]\n    )\n    print(f\"MCP Version {version}, OpsAny apiService Url: {url}\")\n    print(f\"Starting OpsAny MCP Server on {host}:{port}\")\n\n    config_uv = uvicorn.Config(app, host=host, port=port)\n    server = uvicorn.Server(config_uv)\n    await server.serve()\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n"
  },
  {
    "path": "opsany-mcp-server/tests/test_basic.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport os\nimport sys\n\n# 添加项目根目录到 Python 路径\nsys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n\nfrom opsanymcp import load_yaml_config\nfrom opsanymcp.api import Resource, ResourceType, ResourceFields\n\n\ndef test_config_loading():\n    \"\"\"测试配置文件加载\"\"\"\n    print(\"测试配置文件加载...\")\n    print(\"-\" * 60)\n    \n    config_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), \"config\", \"config.yaml\")\n    print(f\"配置文件路径: {config_path}\")\n    \n    status, config = load_yaml_config(config_path)\n    \n    if status:\n        print(\"✓ 配置文件加载成功\")\n        print(f\"  API URL: {config.get('apiService', {}).get('url')}\")\n        print(f\"  App Code: {config.get('apiService', {}).get('bk_app_code')}\")\n        print(f\"  Server Host: {config.get('server', {}).get('host')}\")\n        print(f\"  Server Port: {config.get('server', {}).get('port')}\")\n    else:\n        print(f\"✗ 配置文件加载失败: {config}\")\n    \n    print()\n    return status, config\n\n\ndef test_api_classes(config):\n    \"\"\"测试 API 类实例化\"\"\"\n    print(\"测试 API 类实例化...\")\n    print(\"-\" * 60)\n    \n    try:\n        resource_type = ResourceType(config)\n        print(\"✓ ResourceType 实例化成功\")\n    except Exception as e:\n        print(f\"✗ ResourceType 实例化失败: {e}\")\n        return False\n    \n    try:\n        resource_fields = ResourceFields(config)\n        print(\"✓ ResourceFields 实例化成功\")\n    except Exception as e:\n        print(f\"✗ ResourceFields 实例化失败: {e}\")\n        return False\n    \n    try:\n        resource = Resource(config)\n        print(\"✓ Resource 实例化成功\")\n    except Exception as e:\n        print(f\"✗ Resource 实例化失败: {e}\")\n        return False\n    \n    print()\n    return True\n\n\ndef main():\n    \"\"\"主测试函数\"\"\"\n    print(\"=\" * 60)\n    print(\"OpsAny MCP Server 单元测试\")\n    print(\"=\" * 60)\n    print()\n    \n    # 测试配置加载\n    status, config = test_config_loading()\n    if not status:\n        print(\"配置加载失败，跳过后续测试\")\n        return\n    \n    # 测试 API 类实例化\n    if not test_api_classes(config):\n        print(\"API 类实例化失败，跳过后续测试\")\n        return\n\n    print(\"=\" * 60)\n    print(\"所有测试完成！\")\n    print(\"=\" * 60)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "opsany-mcp-server/tests/test_mcp_server.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport asyncio\nimport json\nfrom mcp import ClientSession, StdioServerParameters\nfrom mcp.client.stdio import stdio_client\n\n\nasync def test_mcp_server():\n    \"\"\"测试 MCP Server 的基本功能\"\"\"\n    \n    print(\"开始测试 OpsAny MCP Server...\")\n    print(\"=\" * 60)\n    \n    # 连接到 MCP Server\n    server_params = StdioServerParameters(\n        command=\"python\",\n        args=[\"server.py\", \"--config\", \"config/config.yaml\"],\n        env=None\n    )\n    \n    async with stdio_client(server_params) as (read, write):\n        async with ClientSession(read, write) as session:\n            # 初始化\n            await session.initialize()\n            print(\"✓ MCP Server 初始化成功\")\n            print()\n            \n            # 列出可用的工具\n            tools = await session.list_tools()\n            print(f\"✓ 可用工具数量: {len(tools.tools)}\")\n            for tool in tools.tools:\n                print(f\"  - {tool.name}: {tool.description}\")\n            print()\n            \n            # 测试 api_resources 工具\n            print(\"测试 api_resources 工具...\")\n            try:\n                result = await session.call_tool(\"api_resources\", {\"limit\": 10})\n                if result.content:\n                    content = result.content[0]\n                    if hasattr(content, 'text'):\n                        data = json.loads(content.text)\n                        if data.get(\"success\"):\n                            print(f\"✓ api_resources 调用成功\")\n                            print(f\"  返回数据条数: {len(data.get('data', []))}\")\n                        else:\n                            print(f\"✗ api_resources 调用失败: {data.get('error')}\")\n                    else:\n                        print(f\"✗ api_resources 返回格式异常\")\n                else:\n                    print(f\"✗ api_resources 没有返回内容\")\n            except Exception as e:\n                print(f\"✗ api_resources 调用异常: {str(e)}\")\n            print()\n            \n            # 测试 get_resource_fields 工具\n            print(\"测试 get_resource_fields 工具...\")\n            try:\n                result = await session.call_tool(\"get_resource_fields\", {\"resource\": \"SERVER\"})\n                if result.content:\n                    content = result.content[0]\n                    if hasattr(content, 'text'):\n                        data = json.loads(content.text)\n                        if data.get(\"success\"):\n                            print(f\"✓ get_resource_fields 调用成功\")\n                            print(f\"  返回字段数量: {len(data.get('data', []))}\")\n                        else:\n                            print(f\"✗ get_resource_fields 调用失败: {data.get('error')}\")\n                    else:\n                        print(f\"✗ get_resource_fields 返回格式异常\")\n                else:\n                    print(f\"✗ get_resource_fields 没有返回内容\")\n            except Exception as e:\n                print(f\"✗ get_resource_fields 调用异常: {str(e)}\")\n            print()\n            \n            # 测试 get_resource 工具\n            print(\"测试 get_resource 工具...\")\n            try:\n                result = await session.call_tool(\"get_resource\", {\n                    \"resource_type\": \"SERVER\",\n                    \"limit\": 5\n                })\n                if result.content:\n                    content = result.content[0]\n                    if hasattr(content, 'text'):\n                        data = json.loads(content.text)\n                        if data.get(\"success\"):\n                            print(f\"✓ get_resource 调用成功\")\n                            print(f\"  返回数据条数: {len(data.get('data', []))}\")\n                            print(f\"  消息: {data.get('message')}\")\n                        else:\n                            print(f\"✗ get_resource 调用失败: {data.get('error')}\")\n                    else:\n                        print(f\"✗ get_resource 返回格式异常\")\n                else:\n                    print(f\"✗ get_resource 没有返回内容\")\n            except Exception as e:\n                print(f\"✗ get_resource 调用异常: {str(e)}\")\n            print()\n            \n    print(\"=\" * 60)\n    print(\"测试完成！\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(test_mcp_server())\n"
  },
  {
    "path": "opsany-mcp-server/tests/test_server_logic.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport asyncio\nimport json\nimport sys\nimport os\n\nsys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n\nfrom opsanymcp import load_yaml_config\nfrom opsanymcp.api import Resource, ResourceType, ResourceFields\n\n\nasync def test_server_logic():\n    \"\"\"测试服务器逻辑（不启动 HTTP 服务器）\"\"\"\n    print(\"=\" * 60)\n    print(\"测试 OpsAny MCP Server 逻辑\")\n    print(\"=\" * 60)\n    print()\n    \n    # 加载配置\n    print(\"1. 加载配置...\")\n    config_path = os.path.join(os.path.dirname(__file__), \"..\", \"config\", \"config.yaml\")\n    status, config = load_yaml_config(config_path)\n    if not status:\n        print(f\"✗ 配置加载失败: {config}\")\n        return\n    print(\"✓ 配置加载成功\")\n    print()\n    \n    # 测试 api_resources\n    print(\"2. 测试 api_resources...\")\n    try:\n        res = ResourceType(config)\n        status, headers, data, mess = res.get_resources_type(output=None, limit=5)\n        if status:\n            print(f\"✓ api_resources 调用成功\")\n            print(f\"  返回数据条数: {len(data)}\")\n            print(f\"  消息: {mess}\")\n            if data:\n                print(f\"  示例数据: {data[0][:3]}\")\n        else:\n            print(f\"✗ api_resources 调用失败: {mess}\")\n    except Exception as e:\n        print(f\"✗ api_resources 调用异常: {str(e)}\")\n    print()\n    \n    # 测试 get_resource_fields\n    print(\"3. 测试 get_resource_fields...\")\n    try:\n        res = ResourceFields(config)\n        status, headers, data, mess = res.get_resource_field(\"SERVER\")\n        if status:\n            print(f\"✓ get_resource_fields 调用成功\")\n            print(f\"  返回字段数量: {len(data)}\")\n            if data:\n                print(f\"  示例字段: {data[0][:3]}\")\n        else:\n            print(f\"✗ get_resource_fields 调用失败: {mess}\")\n    except Exception as e:\n        print(f\"✗ get_resource_fields 调用异常: {str(e)}\")\n    print()\n    \n    # 测试 get_resource\n    print(\"4. 测试 get_resource...\")\n    try:\n        default_config = config.get('config') or {}\n        resource_id_default_field = default_config.get('resourceIdDefaultField') or \"code,VISIBLE_NAME,name\"\n        resource_id_field_search = default_config.get('resourceIdFieldSearch') or False\n        \n        res = Resource(config)\n        status, headers, data, mess = res.get_resource(\n            \"SERVER\", None, None, None, 1, 5,\n            resource_id_default_field, resource_id_field_search\n        )\n        if status:\n            print(f\"✓ get_resource 调用成功\")\n            print(f\"  返回数据条数: {len(data)}\")\n            print(f\"  消息: {mess}\")\n            if data:\n                print(f\"  示例数据: {data[0][:3]}\")\n        else:\n            print(f\"✗ get_resource 调用失败: {mess}\")\n    except Exception as e:\n        print(f\"✗ get_resource 调用异常: {str(e)}\")\n    print()\n    \n    print(\"=\" * 60)\n    print(\"测试完成！\")\n    print(\"=\" * 60)\n\n\nif __name__ == \"__main__\":\n    asyncio.run(test_server_logic())\n"
  },
  {
    "path": "opsany-mcp-server/tests/test_server_startup.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport asyncio\nimport signal\nimport sys\nimport os\n\nsys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n\nfrom server import main\n\n\nasync def test_server_startup():\n    \"\"\"测试服务器启动\"\"\"\n    print(\"=\" * 60)\n    print(\"测试 OpsAny MCP Server 启动\")\n    print(\"=\" * 60)\n    print()\n    \n    # 修改 sys.argv 来模拟命令行参数\n    sys.argv = [\"server.py\", \"--host\", \"127.0.0.1\", \"--port\", \"8001\"]\n    \n    print(\"尝试启动服务器...\")\n    print(\"按 Ctrl+C 停止服务器\")\n    print()\n    \n    try:\n        await main()\n    except KeyboardInterrupt:\n        print(\"\\n服务器已停止\")\n    except Exception as e:\n        print(f\"服务器启动失败: {str(e)}\")\n        import traceback\n        traceback.print_exc()\n\n\nif __name__ == \"__main__\":\n    asyncio.run(test_server_startup())\n"
  },
  {
    "path": "opsany-mcp-server/tool_list.py",
    "content": "TOOL_CMDB_DICT = {\n    \"opsany_cmdb_api_resources\": {\n        \"name\": \"opsany_cmdb_api_resources\",\n        \"description\": \"资源平台，获取全部资源模型, 包括资源类型名称，资源类型标识，资源分组名称，资源分组标识，资源名称，资源标识，资源简称，资源实例总数，字段总数, 当不要求获取资源实例总数，字段总数时output为空！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"output\": {\n                    \"type\": \"string\",\n                    \"description\": \"资源实例总数和字段总数:使用参数：extend, 默认为空字符串\",\n                    \"default\": \"\"\n                },\n                \"limit\": {\n                    \"type\": \"integer\",\n                    \"description\": \"返回的资源模型数量限制\",\n                    \"default\": 100\n                },\n            }\n        }\n    },\n    \"opsany_cmdb_get_resource_fields\": {\n        \"name\": \"opsany_cmdb_get_resource_fields\",\n        \"description\": \"资源平台，获取指定资源的字段信息\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"model_code\": {\n                    \"type\": \"string\",\n                    \"description\": \"资源类型标识\"\n                },\n            },\n            \"required\": [\"model_code\"]\n        }\n    },\n    \"opsany_cmdb_get_resource\": {\n        \"name\": \"opsany_cmdb_get_resource\",\n        \"description\": \"资源平台，获取资源仓库数据\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"model_code\": {\n                    \"type\": \"string\",\n                    \"description\": \"资源类型（必填）\"\n                },\n                \"resource_id\": {\n                    \"type\": \"string\",\n                    \"description\": \"资源 ID（可选）\"\n                },\n                \"search\": {\n                    \"type\": \"string\",\n                    \"description\": \"搜索关键词（可选）\"\n                },\n                \"fields\": {\n                    \"type\": \"string\",\n                    \"description\": \"要显示的字段，逗号分隔（可选）\"\n                },\n                \"page\": {\n                    \"type\": \"integer\",\n                    \"description\": \"页码（默认为 1）\",\n                    \"default\": 1\n                },\n                \"limit\": {\n                    \"type\": \"integer\",\n                    \"description\": \"每页数量（默认为 20）\",\n                    \"default\": 20\n                },\n            },\n            \"required\": [\"model_code\"]\n        }\n    }\n}\n\nTOOL_RBAC_DICT = {\n    \"opsany_rbac_get_or_search_all_user\": {\n        \"name\": \"opsany_rbac_get_or_search_all_user\",\n        \"description\": \"统一权限平台，获取平台全部用户信息， 支持用户名精准查找，中文名精准查找，\"\n                       \"用户名模糊搜索，中文名称模糊搜索，中文名或用户名联合模糊搜索，支持扩展字段，包括部门用户认证来源等全部字段，使用 all\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"username\": {\n                    \"type\": \"string\",\n                    \"description\": \"用户名精准查找\"\n                },\n                \"chname\": {\n                    \"type\": \"string\",\n                    \"description\": \"中文名精准查找\"\n                },\n                \"search_username\": {\n                    \"type\": \"string\",\n                    \"description\": \"用户名模糊搜索\"\n                },\n                \"search_chname\": {\n                    \"type\": \"string\",\n                    \"description\": \"中文名称模糊搜索\"\n                },\n                \"search_username_or_chname\": {\n                    \"type\": \"string\",\n                    \"description\": \"中文名或用户名联合模糊搜索\"\n                },\n                \"extend\": {\n                    \"type\": \"string\",\n                    \"description\": \"扩展字段，包括部门用户认证来源等全部字段，使用 all\"\n                },\n            },\n            \"required\": []\n        }\n    },\n    \"opsany_rbac_get_my_user_info\": {\n        \"name\": \"opsany_rbac_get_my_user_info\",\n        \"description\": \"统一权限平台，获取自己的用户信息，当前用户信息，我是谁，支持扩展字段，包括部门用户认证来源等全部字段，使用 all\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"extend\": {\n                    \"type\": \"string\",\n                    \"description\": \"扩展字段，包括部门用户认证来源等全部字段，使用 all\"\n                },\n            },\n            \"required\": []\n        }\n    }\n}\n\n\nTOOL_MONITOR_DICT = {\n    \"opsany_monitor_alert_info\": {\n        \"name\": \"opsany_monitor_alert_info\",\n        \"description\": \"基础监控，获取管理平台监控纳管后，基础监控平台的实例告警，实例包括管控平台主机，网络设备！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"page\": {\n                    \"type\": \"string\",\n                    \"description\": \"页码， 打开第几页\"\n                },\n                \"pageSize\": {\n                    \"type\": \"string\",\n                    \"description\": \"页数，每页多少条\"\n                },\n                \"host_name\": {\n                    \"type\": \"string\",\n                    \"description\": \"主机唯一标识和实例名称模糊搜索\"\n                },\n                \"name\": {\n                    \"type\": \"string\",\n                    \"description\": \"告警名称模糊搜索\"\n                },\n                \"severity\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据告警级别搜索，0: 未分类 1: 信息 2: 警告 3: 一般严重 4: 严重 5: 灾难\"\n                },\n            },\n            \"required\": []\n        }\n    }\n}\n\nTOOL_WORKBENCH_DICT = {\n    \"opsany_workbench_work_order_inst\": {\n        \"name\": \"opsany_workbench_work_order_inst\",\n        \"description\": \"工作台，ITSM平台，获取全部工单，待办工单，我的已办工单，我提交的工单！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"current\": {\n                    \"type\": \"string\",\n                    \"description\": \"页码， 打开第几页\"\n                },\n                \"pageSize\": {\n                    \"type\": \"string\",\n                    \"description\": \"页数，每页多少条\"\n                },\n                \"data\": {\n                    \"type\": \"string\",\n                    \"description\": \"工单的分类，全部工单: all 待办工单: will 我的已办工单:already 我提交的工单: self\"\n                },\n                \"order_by\": {\n                    \"type\": \"string\",\n                    \"description\": \"排序字段\"\n                },\n                \"status\": {\n                    \"type\": \"string\",\n                    \"description\": \"工单状态，0: 正在进行 1: 已经结束 2\"\n                },\n            },\n            \"required\": []\n        }\n    },\n}\n\nTOOL_JOB_DICT = {\n    \"opsany_job_get_tool_market_list\": {\n        \"name\": \"opsany_job_get_tool_market_list\",\n        \"description\": \"作业平台 获取作业平台工具市场，包括作业列表和脚本列表！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"data_type\": {\n                    \"type\": \"string\",\n                    \"description\": \"工具市场类型：job: 作业 script: 脚本 all: 全部\"\n                },\n                \"script_name\": {\n                    \"type\": \"string\",\n                    \"description\": \"模糊搜索脚本或作业名称\"\n                },\n                \"create_user\": {\n                    \"type\": \"string\",\n                    \"description\": \"模糊搜索创建人\"\n                },\n                \"job_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"查询某一条作业详情，包括 作业名称 创建人 创建时间 步骤列表，步骤内脚本信息等\"\n                },\n                \"script_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"查询某一条脚本详情，包括 脚本名称 创建人 创建时间 脚本内容等\"\n                },\n            },\n            \"required\": []\n        }\n    },\n    \"opsany_job_get_job_list\": {\n        \"name\": \"opsany_job_get_job_list\",\n        \"description\": \"作业平台 获取作业平台作业列表，只需要作业ID就可以执行的作业列表！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"name\": {\n                    \"type\": \"string\",\n                    \"description\": \"模糊搜索作业名称。\"\n                },\n                \"create_user\": {\n                    \"type\": \"string\",\n                    \"description\": \"模糊搜索创建人，支持用户名中文名联合模糊搜索。\"\n                },\n                \"job_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"查询某一条作业详情，包括 作业名称 创建人 创建时间 步骤列表，步骤内脚本信息等。\"\n                },\n            },\n            \"required\": []\n        }\n    },\n    \"opsany_job_get_script_list\": {\n        \"name\": \"opsany_job_get_script_list\",\n        \"description\": \"作业平台 获取作业平台脚本列表，该脚本执行需要脚本ID执行主机等参数！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"script_name\": {\n                    \"type\": \"string\",\n                    \"description\": \"模糊搜索脚本或作业名称\"\n                },\n                \"create_user\": {\n                    \"type\": \"string\",\n                    \"description\": \"模糊搜索创建人，支持用户名中文名联合模糊搜索。\"\n                },\n                \"script_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"查询某一条脚本详情，包括 脚本名称 创建人 创建时间 脚本信息等\"\n                },\n            },\n            \"required\": []\n        }\n    },\n    \"opsany_job_run_job_by_id\": {\n        \"name\": \"opsany_job_run_job_by_id\",\n        \"description\": \"作业平台 根据作业ID执行作业， 返回的为任务ID, 可以根据任务ID获取执行结果, 根据返回的字段flag判断是否执行完成 True: 完成 False: 未完成。\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"job_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"作业ID\"\n                }\n            },\n            \"required\": [\"job_id\"]\n        }\n    },\n    \"opsany_job_run_script_by_id\": {\n        \"name\": \"opsany_job_run_script_by_id\",\n        \"description\": \"作业平台 根据脚本ID执行脚本， 返回的为任务ID, 可以根据任务ID获取执行结果！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"script_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"作业ID\"\n                },\n                \"server\": {\n                    \"type\": \"string\",\n                    \"description\": \"主机唯一标识, 当有多条时用逗号隔开，该主机为管控平台纳管的主机。\"\n                },\n                \"parameter\": {\n                    \"type\": \"string\",\n                    \"description\": \"脚本参数\",\n                    \"default\": \"\"\n                },\n                \"run_describe\": {\n                    \"type\": \"string\",\n                    \"description\": \"执行原因\"\n                },\n                \"time_out\": {\n                    \"type\": \"integer\",\n                    \"description\": \"超时时间, 默认120s\",\n                    \"default\": 120\n\n                },\n            },\n            \"required\": [\"script_id\", \"server\"]\n        }\n    },\n    \"opsany_job_run_script_by_script\": {\n        \"name\": \"opsany_job_run_script_by_script\",\n        \"description\": \"作业平台 输入脚本内容和主机信息执行脚本， 返回的为任务ID, 可以根据任务ID获取执行结果！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"task_name\": {\n                    \"type\": \"string\",\n                    \"description\": \"任务名称，简短的任务名称，后续执行任务会根据该名称拼接执行记录， 作业平台，执行历史可查看 不输入会自动生成。\",\n                    \"default\": \"MCP生成\"\n                },\n                \"server_type\": {\n                    \"type\": \"string\",\n                    \"description\": \"字段server数据的主机类型，默认为主机唯一标识(host_name), \"\n                                   \"host_name: 主机唯一标识\"\n                                   \"ip: 主机IP 当选择使用主机IP地址执行时。\"\n                },\n                \"server\": {\n                    \"type\": \"string\",\n                    \"description\": \"主机唯一标识或主机IP, 当有多条时用逗号隔开，该主机为管控平台纳管的主机, 没有纳管会被忽略，纳管异常会执行失败。\"\n                },\n                \"script_type\": {\n                    \"type\": \"string\",\n                    \"description\": \"脚本类型, 生成脚本文件的后缀 默认 sh，如：Shell: sh  PowerShell:ps1 Python:py Bat:bat\"\n                },\n                \"script\": {\n                    \"type\": \"string\",\n                    \"description\": \"脚本内容, 直接输入脚本内容。\"\n                },\n                \"parameter\": {\n                    \"type\": \"string\",\n                    \"description\": \"脚本参数\",\n                    \"default\": \"\"\n                },\n                \"run_describe\": {\n                    \"type\": \"string\",\n                    \"description\": \"执行原因\"\n                },\n                \"timeout\": {\n                    \"type\": \"integer\",\n                    \"description\": \"超时时间, 默认120s\",\n                    \"default\": 120\n\n                },\n            },\n            \"required\": [\"server\"]\n        }\n    },\n    \"opsany_job_get_run_result_by_log_id\": {\n        \"name\": \"opsany_job_get_run_result_by_log_id\",\n        \"description\": \"作业平台 获取执行的作业或脚本结果， 根据返回的任务ID获取！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"log_id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"执行作业或脚本后返回的任务ID\"\n                },\n            },\n            \"required\": [\"log_id\"]\n        }\n    },\n\n}\n\nTOOL_CONTROL_DICT = {\n    \"opsany_control_get_managed_host_list\": {\n        \"name\": \"opsany_control_get_managed_host_list\",\n        \"description\": \"管控平台 获取管控平台纳管的主机列表，\"\n                       \"该数据来自资源平台主机组内三个模型的数据(SERVER,CLOUD_SERVER,VIRTUAL_SERVER)！\",\n        \"inputSchema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"host_name_search\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机唯一标识模糊搜索纳管主机\"\n                },\n                \"show_name_search\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机名称模糊搜索纳管主机\"\n                },\n                \"ip_search\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机名唯一标识模糊搜索纳管主机\"\n                },\n                \"id\": {\n                    \"type\": \"integer\",\n                    \"description\": \"根据主机ID查询纳管主机, 精准查询。\"\n                },\n                \"host_name\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机ID查询纳管主机, 精准查询。\"\n                },\n                \"show_name\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机ID查询纳管主机, 精准查询。\"\n                },\n                \"ip\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机IP查询纳管主机, 精准查询。\"\n                },\n                \"system_type\": {\n                    \"type\": \"string\",\n                    \"description\": \"根据主机系统类型查询纳管主机，查询全部忽略该字段，Linux Windows\"\n                },\n                \"host_type\": {\n                    \"type\": \"string\",\n                    \"description\": \"查根据主机类型查询纳管主机(对应资源平台主机组内模型SERVER,CLOUD_SERVER,VIRTUAL_SERVER，\"\n                                   \"查询全部忽略该字段，查询多个使用逗号隔开)\"\n                },\n            },\n            \"required\": []\n        }\n    },\n\n}\n\nTOOL_DICT = TOOL_CMDB_DICT | TOOL_RBAC_DICT | TOOL_MONITOR_DICT | TOOL_WORKBENCH_DICT | TOOL_JOB_DICT | TOOL_CONTROL_DICT\nTOOL_LIST = list(TOOL_DICT.values())\n\n"
  },
  {
    "path": "opsctl/.gitignore",
    "content": "\n# IDE\n.idea\n"
  },
  {
    "path": "opsctl/LICENSE",
    "content": "Copyright (c) 2025 The Python Packaging Authority\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "opsctl/README.md",
    "content": "OpsAny's command-line tool\n\n# 项目介绍\n\nopsctl是OpsAny的命令行工具，用于操作OpsAny的资源。支持获取OpsAny的资源平台的资源。\n\n## 1. 安装\n\n```\ncd /opt/opsany-paas/opsctl/\npython3 -m pip install opsanyctl --break-system-packages\n```\n\n## 2. 配置\n\n```\n# 1. 获取配置模板\nopsctl config\n\n# 2. 在用户家目录创建文件\nmkdir /root/.opsanyctl/\n\n# 3. 创建配置文件\nvim /root/.opsanyctl/config\napiVersion: v1\napiService:\n  url: https://www.domian.com   #修改为平台地址\n  bk_app_code: cmdb   #修改为cmdb\n  bk_app_secret: bk_app_secret  #修改为cmdb的secret_key(开发中心获取https://DOMAIN/saas/cmdb/info/)\n  bk_username: admin   #修改为平台用户名admin\nconfig:\n  resourceIdDefaultField: \"code,VISIBLE_NAME,name\"  # 默认搜索三个字段, 指定 code 或者 name 可以保证查询到的数据唯一\n  resourceIdFieldSearch: false  # 默认关闭 RESOURCE_ID 字段 支持 fields=value方式精准字段获取资源\n  resourceDefaultLimit: 20  # 资源默认每页数量\n  apiResourcesDefaultLimit: 100  # 资源模型默认每页数量\nresourceShort: # 可以根据配置修改指定模型的短名称，默认是模型的唯一标识。\n  host: SERVER  # 物理机\n  vs: VIRTUAL_SERVER  # 虚拟机\n  cs: CLOUD_SERVER  # 云主机\n  idc: IDC  # 机房\n  reg: REGION  # 区域\n  rack: RACK  # 机柜\n  pub: PUBLIC_CLOUD  # 公有云账号\n  pubreg: CLOUD_REGION  # 区域\n  pubza: CLOUD_AZ  # 可用区\n  buss: BUSINESS  # 业务\n  app: APPLICATION  # 应用\n  svc: SERVICE  # 服务\n```\n\n## 3. 使用\n```\n# 获取到当前支持的资源类型\nopsctl api-resources\n# 获取云主机数据\nopsctl get CLOUD_SERVER\n# 获取 云主机 第一页数据 每页5条\nopsctl get CLOUD_SERVER -p 1 -l 5\n```\n"
  },
  {
    "path": "opsctl/__init__.py",
    "content": "\n"
  },
  {
    "path": "opsctl/opsanyctl/__init__.py",
    "content": ""
  },
  {
    "path": "opsctl/opsanyctl/api/__init__.py",
    "content": ""
  },
  {
    "path": "opsctl/opsanyctl/api/base.py",
    "content": "from opsanyctl.libs import Request\n\n\nclass BaseObj:\n    def __init__(self, config):\n        self.this_request = Request(config)\n        self.base_params = {\n            \"username\": self.this_request.bk_username,\n        }"
  },
  {
    "path": "opsctl/opsanyctl/api/fields.py",
    "content": "from opsanyctl.api.base import BaseObj\nfrom opsanyctl.constants import URL_DICT\n\n\nclass ResourceFields(BaseObj):\n    def get_resource_field(self, resource):\n        params = {\n            \"model_code\": resource,\n        }\n        params.update(self.base_params)\n        status, field_list, mess = self.this_request._request(URL_DICT.get(\"fields\"), \"GET\", params=params, body={})\n        if not status:\n            return False, [], [], f\"获取当前资源 {resource} 字段失败: {mess}，请使用 opsanyctl api-resources 获取支持的资源！\"\n        headers = {\n            \"model_name\": \"资源名称\",\n            \"model_code\": \"资源标识\",\n            \"name\": \"字段名称\",\n            \"code\": \"字段标识\",\n            \"index\": \"字段序号\",\n            \"type_name\": \"字段类型\",\n            \"field_group_code\": \"字段类分组\",\n            \"is_relationship_field\": \"字段属性\",\n        }\n        data = []\n        for field in field_list:\n            l = []\n            for k, v in headers.items():\n                v = str(field.get(k))\n                if k == \"is_relationship_field\":\n                    if v == \"\": v = \"基本属性\"\n                    elif v == \"1\": v = \"从属关系\"\n                    elif v == \"2\": v = \"连接关系\"\n                l.append(v)\n            data.append(l)\n        return True, list(headers.values()), data, \"\""
  },
  {
    "path": "opsctl/opsanyctl/api/resource.py",
    "content": "from rich.text import Text\n\nfrom opsanyctl.api.base import BaseObj\nfrom opsanyctl.constants import URL_DICT\n\n\nclass Resource(BaseObj):\n    def get_resource(self, resource, resource_id, search, fields, page=1, limit=20, resource_id_default_field=None, resource_id_field_search=True):\n        headers = []\n        field_code_list = []\n        data = []\n\n        params = {\n            \"model_code\": resource,\n            \"page\": page,\n            \"per_page\": limit,\n        }\n        if resource_id and (\"=\" in resource_id) and resource_id_field_search:\n            find_fields, find_value = resource_id.split(\"=\")[:2]\n            if resource_id:\n                params[\"find_fields\"] = find_fields\n                params[\"find_value\"] = find_value\n\n        elif resource_id:\n            resource_id_field = resource_id_default_field.split(\",\")\n            new_list = []\n            for i in resource_id_field:\n                if i == \"code\": new_list.append(i)\n                else: new_list.append(resource + \"_\" + i)\n            params[\"find_fields\"] = \",\".join(new_list)\n            params[\"find_value\"] = resource_id\n        if search:\n            params[\"search_type\"] = \"all\"\n            params[\"search_data\"] = search\n\n        params.update(self.base_params)\n        status, field_list, mess = self.this_request._request(URL_DICT.get(\"fields\"), \"GET\", params=params, body={})\n        if not status:\n            return False, [], [], f\"获取当前资源 {resource} 字段失败: {mess}，请使用 opsanyctl api-resources 获取支持的资源！\"\n        status, data_dict, mess = self.this_request._request(URL_DICT.get(\"resource\"), \"GET\", params=params, body={})\n        if not fields:\n            field_list = field_list[:8]\n        else:\n            fields = fields.split(\",\")\n        for field in field_list:\n            field_code = field.get(\"code\")\n            field_name = field.get(\"name\")\n            if (fields and (field_code not in fields)) and (fields and (field_name not in fields)):\n                continue\n            is_relationship_field = field.get(\"is_relationship_field\")\n            if is_relationship_field:\n                continue\n            headers.append([field_name, field_code])\n            field_code_list.append(field_code)\n        headers.insert(0, [\"序号\", \"code\"])\n\n        if not data_dict:\n            return Text, headers, [], \"没有数据！\"\n\n        current = data_dict.get(\"current\")\n        page_size = data_dict.get(\"pageSize\")\n        total = data_dict.get(\"total\")\n        data_list = data_dict.pop(\"data\", [])\n\n        for d in data_list:\n            json_data = d.get(\"data\") or {}\n            new = [str(d.get(\"code\"))]\n            for code in field_code_list:\n                j = json_data.get(code)\n                if j is None: new.append(\"null\")\n                else: new.append(str(j) or \"-\")\n            data.append(new)\n        total_pages = (total + page_size - 1) // page_size\n        message = f\"第 {current} 页，共 {total_pages} 页；当前页 {len(data_list)} 条，总共 {total} 条。\"\n        # message = f\"{current}页/{total_pages}页  {len(data_list)}条/{total}条\"\n        return True, headers, data, message\n"
  },
  {
    "path": "opsctl/opsanyctl/api/resource_type.py",
    "content": "from opsanyctl.api.base import BaseObj\nfrom opsanyctl.constants import URL_DICT\n\n\nclass ResourceType(BaseObj):\n    def get_resources_type(self, output=None, limit=100, default_short=None):\n        if not default_short: default_short = {}\n        try:\n            limit = int(limit) or 100\n        except Exception:\n            limit = 100\n\n        params = {\"tree\": \"3\"}\n        if output ==\"extend\":\n            params[\"model_type\"] = \"resource_count,field_count\"\n        status, model_list, mess = self.this_request._request(URL_DICT.get(\"resource_type\"), \"GET\", params=params, body={})\n        if not status:\n            return False, [], [], mess\n        headers = {\n            \"model_type_name\": \"资源类型名称\",\n            \"model_type_code\": \"资源类型标识\",\n            \"model_group_name\": \"资源分组名称\",\n            \"model_group_code\": \"资源分组标识\",\n            \"model_name\": \"资源名称\",\n            \"model_code\": \"资源标识\",\n            \"short_name\": \"资源简称\",\n        }\n        if output ==\"extend\":\n            headers.update({\"field_count\": \"基本属性(字段数量)\", \"parent_field_count\": \"从属关系(字段数量)\", \"link_field_count\": \"连接关系(字段数量)\", \"resource_count\": \"资源总数\"})\n        data = []\n        short_dict = {}\n        for k, v in default_short.items():\n            li = short_dict.get(v) or []\n            li.append(k)\n            short_dict[v] = li\n            pass\n        for type_dict in model_list:\n            type_name = type_dict.get(\"value\")\n            type_code = type_dict.get(\"key\")\n            group_children = type_dict.get(\"children\") or []\n            for group in group_children:\n                group_name = group.get(\"value\")\n                group_code = group.get(\"key\")\n                children = group.get(\"children\") or []\n                for child in children:\n                    key =  child.get(\"key\")\n                    base_li = [type_name, type_code, group_name, group_code, child.get(\"value\"), key]\n                    base_li.append(\",\".join(short_dict.get(key) or []))\n                    if output == \"extend\":\n                        base_li.extend([str(child.get(\"field_count\") or 0), str(child.get(\"parent_field_count\") or 0),\n                                        str(child.get(\"link_field_count\") or 0), str(child.get(\"resource_count\") or 0)])\n                    data.append(base_li)\n        return True, list(headers.values()), data[:limit], \"Success\"\n"
  },
  {
    "path": "opsctl/opsanyctl/config",
    "content": "apiVersion: v1\napiService:\n  url: https://domian\n  bk_app_code: cmdb\n  bk_app_secret: bk_app_secret\n  bk_username: admin\nconfig:\n  resourceIdDefaultField: \"code,VISIBLE_NAME,name\"  # 默认搜索三个字段, 指定 code 或者 name 可以保证查询到的数据唯一\n  resourceIdFieldSearch: false  # 默认关闭 RESOURCE_ID 字段 支持 fields=value方式精准字段获取资源\n  resourceDefaultLimit: 20  # 资源默认每页数量\n  apiResourcesDefaultLimit: 100  # 资源模型默认每页数量\nresourceShort:\n  ser: SERVER  # 物理机\n  virser: VIRTUAL_SERVER  # 虚拟机\n  clser: CLOUD_SERVER  # 云主机\n  idc: IDC  # 机房\n  reg: REGION  # 区域\n  rack: RACK  # 机柜\n  pub: PUBLIC_CLOUD  # 公有云账号\n  pubreg: CLOUD_REGION  # 区域\n  pubza: CLOUD_AZ  # 可用区\n  buss: BUSINESS  # 业务\n  app: APPLICATION  # 应用\n  serv: SERVICE  # 服务\n"
  },
  {
    "path": "opsctl/opsanyctl/constants.py",
    "content": "\n# DEFAULT_SHORT_RESOURCE = {\n#     \"ser\": \"SERVER\",  # 物理机\n#     \"server\": \"SERVER\",  # 物理机\n#     \"virser\": \"VIRTUAL_SERVER\",  # 虚拟机\n#     \"clser\": \"CLOUD_SERVER\",  # 云主机\n#     \"idc\": \"IDC\",  # 机房\n#     \"reg\": \"REGION\",  # 区域\n#     \"rack\": \"RACK\",  # 机柜\n#     \"pub\": \"PUBLIC_CLOUD\",  # 公有云账号\n#     \"pubreg\": \"CLOUD_REGION\",  # 区域\n#     \"pubza\": \"CLOUD_AZ\",  # 可用区\n#     \"buss\": \"BUSINESS\",  # 业务\n#     \"app\": \"APPLICATION\",  # 应用\n#     \"serv\": \"SERVICE\",  # 服务\n# }\n\nurl_startswith = \"/api/c/compapi/cmdb/\"\nURL_DICT = {\n    \"fields\": url_startswith + \"get_model_field/\",\n    \"resource\": url_startswith + \"model_data_get/\",\n    \"resource_type\": url_startswith + \"get_cmdb_model_tree/\",\n}\n"
  },
  {
    "path": "opsctl/opsanyctl/help_content.py",
    "content": "typer_help_content = \"\"\"这是 OpsAny 用于查看或管理资源的命令行工具!\\n\n----------------------------\\n\\n\n需要将config配置文件(opsanyctl config获取)修改后放置在 /HOME/.opsanyctl/config 下\\n\n\"\"\"\n\ncommand_config_help = \"\"\"获取配置文件模板\\n\n需要将config配置文件修改后放置在 /HOME/.opsanyctl/config 下\\n\nurl: https://www.domian.com                         # OpsAny平台地址\\n\nbk_app_code: cmdb                                   # OpsAny 应用ID(开发中心)\\n\nbk_app_secret: 00000000-0000-0000-0000-000000000000 # OpsAny secret_key(开发中心)\\n\nbk_username: admin                                  # 获取数据用户\\n\n\"\"\"\ndefault_api_resources = \"\"\"\n\n\"\"\"\n\ncommand_api_resources_help = \"\"\"查看支持的资源模型和相关汇总数据\\n\n案例：\\n\n- opsanyctl api_resources                      # 查看支持的资源模型\\n\n- opsanyctl api_resources --output extend      # 查看支持的资源模型和扩展字段包括展示字段数量资源数量等\\n\n- opsanyctl api_resources --limit 20           # 分页查看支持的资源模型\\n\n\"\"\"\ncommand_re_help = \"\"\"查看支持的资源模型和相关汇总数据 api-resources 简写\\n\n案例：\\n\n- opsanyctl res                                # 查看支持的资源模型\\n\n- opsanyctl res --output extend                # 查看支持的资源模型和扩展字段包括展示字段数量资源数量等\\n\n- opsanyctl res --limit 20                     # 分页查看支持的资源模型\\n\n\"\"\"\ncommand_get_help = \"\"\"获取支持的资源模型数据列表或单条数据\\n\n案例：\\n\n- opsanyctl get ser.field                      # 查看ser(SERVER)字段\\n\n- opsanyctl get ser                            # 获取ser(SERVER)数据, 使用简写需要添加到配置文件\\n\n- opsanyctl get SERVER                         # 获取SERVER数据\\n\n- opsanyctl get ser linux-node16               # 获取ser(SERVER)实例名为 linux-node16 的数据\\n\n- opsanyctl get ser code=10021                 # 获取ser(SERVER)code为 10021 的数据\\n\n- opsanyctl get ser SERVER_name=linux-node12   # 获取ser(SERVER)SERVER_name linux-node12 的数据\\n\n- opsanyctl get ser --search linux-node        # 搜索ser(SERVER)所有字段包含 linux-node 的数据\\n\n- opsanyctl get ser --fields code,SERVER_name  # 获取ser(SERVER)指定字段数据\\n\n- opsanyctl get ser --page 2 --limit 5         # 获取ser(SERVER)第二页数据。每页5条\\n\n- opsanyctl get ser --limit 5                  # 获取ser(SERVER) 首页五条数据\\n\n\"\"\"\n\ncommand_api_resources_arg_output_help = \"\"\"扩展输出字段使用 extend\\n\"\"\"\ncommand_api_resources_arg_limit_help = \"指定输出数量 默认 100条, 支持配置文件配置默认值 apiResourcesDefaultLimit\"\ncommand_get_arg_resource_type_help = \"资源类型 SERVER SERVER.fields\"\ncommand_get_arg_resource_id_help = \"资源实例默认(code,SERVER_VISIBLE_NAME,SERVER_name)联合搜索, 支持使用fields=search(code=10012), 支持配置文件配置默认值 resourceIdDefaultField\"\ncommand_get_opt_search_help = \"字段搜索，全文检索！\"\ncommand_get_opt_fields_help = \"要显示的字段，用逗号分隔 SERVER_VISIBLE_NAME,SERVER_name\"\ncommand_get_opt_page_help = \"指定页码 默认 1\"\ncommand_get_opt_limit_help = \"指定页码输出数量 默认 20条, 支持配置文件配置默认值 resourceDefaultLimit\"\n\nconfig_content_title = \"\"\"\n将以下配置修改后放置在家目录 .opsanyctl/config 中\nurl,bk_app_code,bk_app_secret,bk_username 需要修改，其他配置根据需求修改\n\"\"\"\n\nconfig_content = \"\"\"apiVersion: v1\napiService:\n  url: https://www.domian.com\n  bk_app_code: bk_app_code\n  bk_app_secret: bk_app_secret\n  bk_username: bk_username\nconfig:\n  resourceIdDefaultField: \"code,VISIBLE_NAME,name\"  # 默认搜索三个字段, 指定 code 或者 name 可以保证查询到的数据唯一\n  resourceIdFieldSearch: false  # 默认关闭 RESOURCE_ID 字段 支持 fields=value方式精准字段获取资源\n  resourceDefaultLimit: 20  # 资源默认每页数量\n  apiResourcesDefaultLimit: 100  # 资源模型默认每页数量\nresourceShort:\n  ser: SERVER  # 物理机\n  virser: VIRTUAL_SERVER  # 虚拟机\n  clser: CLOUD_SERVER  # 云主机\n  idc: IDC  # 机房\n  reg: REGION  # 区域\n  rack: RACK  # 机柜\n  pub: PUBLIC_CLOUD  # 公有云账号\n  pubreg: CLOUD_REGION  # 区域\n  pubza: CLOUD_AZ  # 可用区\n  buss: BUSINESS  # 业务\n  app: APPLICATION  # 应用\n  serv: SERVICE  # 服务\n\"\"\""
  },
  {
    "path": "opsctl/opsanyctl/libs.py",
    "content": "import os\nimport sys\nfrom difflib import get_close_matches\nfrom pathlib import Path\n\nimport typer\nimport yaml\nfrom requests import request\n\nimport urllib3\n\nurllib3.disable_warnings()\n\n\nclass Request:\n    def __init__(self, config):\n        self.api_service = config.get(\"apiService\")\n        self.url = self.api_service.get(\"url\")\n        self.bk_app_code = self.api_service.get(\"bk_app_code\")\n        self.bk_app_secret = self.api_service.get(\"bk_app_secret\")\n        self.bk_username = self.api_service.get(\"bk_username\")\n\n    def _request(self, url_path, method, params, body, headers=None, timeout=10):\n        if not headers:\n            headers = {\"Content-Type\": \"application/json; charset=utf-8\"}\n        url = str(self.url) + url_path\n        params.update({\n            \"bk_app_code\": self.bk_app_code,\n            \"bk_app_secret\": self.bk_app_secret,\n            \"bk_username\": self.bk_username,\n        })\n        try:\n            res = request(method, url, data=body, params=params, headers=headers, timeout=timeout, verify=False)\n            try:\n                json_data = res.json()\n                if not json_data.get(\"result\"):\n                    return False, [], json_data.get(\"message\")\n                return True, res.json().get(\"data\"), \"Success\"\n            except Exception as e:\n                return False, [], f\"HTTP 响应解析失败: {res.content.decode()}\"\n        except Exception as e:\n            return False, [], f\"HTTP 请求失败: {str(url)} {str(e)}\"\n\n\ndef load_yaml_config() -> tuple:\n    file_path = os.path.join(str(Path.home()), \".opsanyctl/config\")\n    base = \"，请使用 opsanyctl config 命令获取到配置文件并正确配置！\"\n    if len(sys.argv) > 1 and (sys.argv[1] in [\"config\"]):\n            return True, {}\n    try:\n        with open(file_path, 'r', encoding='utf-8') as file:\n            config = yaml.safe_load(file)\n        if not isinstance(config, dict):\n            return False, f\"错误: 配置文件 config 格式不正确\" + base\n\n        api_service = config.get(\"apiService\")\n        if not isinstance(api_service, dict):\n            return False, f\"错误: 配置文件 config.apiService 格式不正确\" + base\n        if not all([k in api_service for k in [\"url\", \"bk_app_code\", \"bk_app_secret\", \"bk_username\"]]):\n            return False, f\"错误: 配置文件 config.apiService 缺少必要项\" + base\n        return True, config\n    except FileNotFoundError:\n        return False, f\"错误: 配置文件 '{file_path}' 不存在\" + base\n    except yaml.YAMLError as e:\n        return False, f\"错误: 无法解析 YAML 文件 '{file_path}': {e}\" + base\n    except Exception as e:\n        return False, f\"错误: 未知的错误: {str(e)}\" + base\n\n\ndef check_command(supported_commands):\n    try:\n        if len(sys.argv) > 1:\n            unknown_command = sys.argv[1]\n            if unknown_command in [\"--help\", \"-h\"]:\n                return\n            if unknown_command not in supported_commands:\n                matches = get_close_matches(unknown_command, supported_commands, n=2, cutoff=0.4)\n                if matches:\n                    typer.echo(\"\")\n                    typer.echo(f\"unknown command \\\"{unknown_command}\\\" for opsanyctl, Did you mean this?\")\n                    for match in matches:\n                        typer.echo(f\"\\t{match}\")\n                    sys.exit()\n                else:\n                    c_str = \", \".join(supported_commands)\n                    typer.echo(f\"error: unknown command \\\"{unknown_command}\\\" for opsanyctl, supported commands {c_str}\")\n                    sys.exit()\n    except Exception as e:\n        pass\n"
  },
  {
    "path": "opsctl/opsanyctl/main.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\n\"\"\"\nopsctl 命令行工具的主入口文件\n\n该文件负责初始化命令行应用，定义支持的命令，并调用相应的处理逻辑。\n\"\"\"\n\n# 导入必要的系统模块\nimport os\nimport sys\n\n# 添加当前文件所在目录和父目录到 Python 路径，确保能正确导入项目模块\nsys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))\nsys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n\n# 导入第三方库和项目模块\nimport typer\nfrom rich.console import Console\nfrom rich.table import Table\nfrom rich.text import Text\nfrom opsanyctl.api.resource_type import ResourceType\nfrom opsanyctl.api.fields import ResourceFields\nfrom opsanyctl.api.resource import Resource\nfrom opsanyctl.help_content import *\nfrom opsanyctl.libs import load_yaml_config, check_command\n\n# 定义支持的命令列表\nsupported_commands = [\n    \"--help\",          # 帮助命令\n    \"config\",          # 获取配置文件模板\n    \"get\",             # 获取各类资源数据\n    \"res\",             # api-resources 命令的简写\n    \"api-resources\",   # 获取全部资源模型\n]\n\n# 创建 Typer 应用实例\napp = typer.Typer(\n    context_settings={\"help_option_names\": [\"-h\", \"--help\"]},  # 设置帮助选项名称\n    # help=typer_help_content,  # 应用帮助内容（已注释）\n    add_completion=True  # 启用命令自动补全功能\n)\n\n# 检查命令是否支持\ncheck_command(supported_commands)\n\n# 初始化 rich 控制台，用于美化输出\nconsole = Console()\n\n# 加载配置文件\nconfig_status, opsanyctl_config = load_yaml_config()\nif not config_status:\n    # 配置加载失败，输出错误信息并退出\n    typer.echo(typer.style(opsanyctl_config, fg=typer.colors.YELLOW, bold=True))\n    sys.exit(1)\n\n# 提取默认配置参数\ndefault_config = opsanyctl_config.get('config') or {}\n# 资源类型短名称映射\ndefault_resource_short = opsanyctl_config.get('resourceShort') or {}\n# 资源 ID 默认字段\nresource_id_default_field = default_config.get('resourceIdDefaultField') or \"code,VISIBLE_NAME,name\"\n# 是否启用资源 ID 字段搜索\nresource_id_field_search = default_config.get('resourceIdFieldSearch') or False\n# 资源默认每页数量\nresource_default_limit = default_config.get('resourceDefaultLimit') or 20\n# 资源模型默认每页数量\napi_resources_default_limit = default_config.get('apiResourcesDefaultLimit') or 100\n\n@app.command(\"config\", help=command_config_help)\ndef config():\n    \"\"\"\n    输出配置文件模板\n\n    该命令会显示配置文件的模板内容，用户可以根据模板创建自己的配置文件。\n    \"\"\"\n    # 输出配置标题（绿色加粗）\n    typer.echo(typer.style(config_content_title, fg=typer.colors.GREEN, bold=True))\n    # 输出配置内容\n    typer.echo(config_content)\n\n@app.command(\"api-resources\", help=command_api_resources_help)\ndef api_resources(\n        output: str = typer.Option(\"\", \"--output\", \"-o\", help=command_api_resources_arg_output_help),\n        limit: int = typer.Option(api_resources_default_limit, \"--limit\", \"-l\",\n                                  help=command_api_resources_arg_limit_help)\n):\n    \"\"\"\n    获取全部资源模型\n\n    Args:\n        output: 输出格式（目前未使用）\n        limit: 返回的资源模型数量限制\n\n    该命令用于获取系统支持的所有资源模型信息，并以表格形式展示。\n    \"\"\"\n    # 创建资源类型 API 实例\n    res = ResourceType(opsanyctl_config)\n    # 获取资源类型数据\n    status, headers, data, mess = res.get_resources_type(output, limit, default_short=default_resource_short)\n    if not status:\n        # 获取失败，输出错误信息\n        typer.echo(typer.style(mess, fg=typer.colors.YELLOW, bold=True))\n        return\n    # 创建表格并设置表头\n    table = Table(show_header=True, header_style=\"bold magenta\", expand=False)\n    for header in headers:\n        table.add_column(header, no_wrap=False, overflow=\"fold\")\n    # 添加数据行\n    for row in data:\n        table.add_row(*row)\n    # 打印表格\n    console.print(table)\n\n@app.command(\"res\", help=command_re_help)\ndef res(\n        output: str = typer.Option(\"\", \"--output\", \"-o\", help=command_api_resources_arg_output_help),\n        limit: int = typer.Option(api_resources_default_limit, \"--limit\", \"-l\",\n                                  help=command_api_resources_arg_limit_help)\n):\n    \"\"\"\n    api-resources 命令的简写\n\n    Args:\n        output: 输出格式（目前未使用）\n        limit: 返回的资源模型数量限制\n\n    该命令是 api-resources 命令的简写形式，功能完全相同。\n    \"\"\"\n    api_resources(output, limit)\n\n@app.command(\"get\", help=command_get_help)\ndef get(\n        resource_type: str = typer.Argument(..., help=command_get_arg_resource_type_help),\n        resource_id: str = typer.Argument(None, help=command_get_arg_resource_id_help),\n        search: str = typer.Option(None, \"--search\", \"-s\", help=command_get_opt_search_help),\n        fields: str = typer.Option(None, \"--fields\", \"-f\", help=command_get_opt_fields_help),\n        page: int = typer.Option(1, \"--page\", \"-p\", help=command_get_opt_page_help),\n        limit: int = typer.Option(resource_default_limit, \"--limit\", \"-l\", help=command_get_opt_limit_help)\n):\n    \"\"\"\n    获取资源数据\n\n    Args:\n        resource_type: 资源类型（必填）\n        resource_id: 资源 ID（可选）\n        search: 搜索关键词（可选）\n        fields: 要显示的字段（可选）\n        page: 页码（默认为 1）\n        limit: 每页数量（默认为 20）\n\n    该命令用于获取指定类型的资源数据，并支持搜索、分页等功能。\n    \"\"\"\n    # 处理资源类型和字段（如 ser.fields 格式）\n    if \".\" in resource_type:\n        resource, field = resource_type.split(\".\")\n    else:\n        resource, field = resource_type, \"\"\n    # 检查是否有资源类型短名称映射\n    if resource in default_resource_short:\n        resource = default_resource_short[resource]\n    # 处理字段查询\n    if field:\n        if field == \"fields\":\n            # 获取资源字段信息\n            res = ResourceFields(opsanyctl_config)\n            status, headers, data, mess = res.get_resource_field(resource)\n        else:\n            # 不支持的字段\n            mess = f\"当前资源 {resource} 不支持属性 {field}，请使用 {resource}.fields 等\"\n            typer.echo(typer.style(mess, fg=typer.colors.YELLOW, bold=True))\n            return\n    else:\n        # 获取资源数据\n        res = Resource(opsanyctl_config)\n        status, headers, data, mess = res.get_resource(resource, resource_id, search, fields, page, limit,\n                                                       resource_id_default_field, resource_id_field_search)\n    # 检查请求状态\n    if not status:\n        typer.echo(typer.style(mess, fg=typer.colors.YELLOW, bold=True))\n        return\n    # 创建表格并设置表头\n    table = Table(show_header=True, header_style=\"bold magenta\", expand=False)\n    for header in headers:\n        if isinstance(header, list):\n            # 处理复合表头\n            header_text = Text(justify=\"center\")\n            for h in header:\n                header_text.append(h, style=\"bold magenta\")\n                header_text.append(\"\\n\")\n        else:\n            header_text = header\n        table.add_column(header_text, no_wrap=False, overflow=\"fold\")\n    # 添加数据行\n    for row in data:\n        table.add_row(*row)\n    # 打印表格和信息\n    console.print(table)\n    console.print(Text(mess, style=\"italic green\"))\n\nif __name__ == \"__main__\":\n    \"\"\"\n    主程序入口\n\n    当脚本直接运行时，启动命令行应用。\n    \"\"\"\n    # 示例用法:\n    # python main.py api-resources --help\n    # python main.py get ser\n    app()"
  },
  {
    "path": "opsctl/requirements.txt",
    "content": "typer==0.15.1\npyyaml==6.0.1\nrequests==2.25.0"
  },
  {
    "path": "opsctl/runtime.txt",
    "content": "python-3.6.0\n"
  },
  {
    "path": "opsctl/setup.cfg",
    "content": "# Inside of setup.cfg\n[metadata]\ndescription-file = README.md\n"
  },
  {
    "path": "opsctl/setup.py",
    "content": "from setuptools import setup, find_packages\n\nsetup(\n    name='opsanyctl',\n    version='0.1.10',\n    author='OpsAny',\n    author_email='',\n    description=\"OpsAny's command-line tool!\",\n    long_description=open('README.md', encoding=\"utf-8\").read(),\n    long_description_content_type='text/markdown',\n    # url='https://gitee.com/unixhot/opsany-paas',\n    packages=find_packages(),\n    include_package_data=True,\n    classifiers=[\n        'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Programming Language :: Python :: 3.8',\n        'Programming Language :: Python :: 3.9',\n        'Programming Language :: Python :: 3.10',\n        'Programming Language :: Python :: 3.11',\n        'Programming Language :: Python :: 3.12',\n        'License :: OSI Approved :: MIT License',\n        'Operating System :: OS Independent',\n    ],\n    python_requires='>=3.6, <4.0',\n    install_requires=[\n        \"setuptools>=65.5.0\",\n        \"typer\",\n        \"rich\",\n        \"pyyaml\",\n        \"requests\",\n    ],\n    entry_points={\n        'console_scripts': [\n            'opsanyctl=opsanyctl.main:app',\n            'opsctl=opsanyctl.main:app',\n        ],\n    },\n)\n"
  },
  {
    "path": "opsctl/tests/__init__.py",
    "content": ""
  },
  {
    "path": "opsctl/tests/test.py",
    "content": "from difflib import SequenceMatcher\nfrom heapq import nlargest as _nlargest\n\n\ndef get_close_matches(word, possibilities, n=3, cutoff=0.6):\n\n    if not n >  0:\n        raise ValueError(\"n must be > 0: %r\" % (n,))\n    if not 0.0 <= cutoff <= 1.0:\n        raise ValueError(\"cutoff must be in [0.0, 1.0]: %r\" % (cutoff,))\n    result = []\n    s = SequenceMatcher()\n    s.set_seq2(word)\n    for x in possibilities:\n        s.set_seq1(x)\n        if s.real_quick_ratio() >= cutoff and \\\n           s.quick_ratio() >= cutoff and \\\n           s.ratio() >= cutoff:\n            result.append((s.ratio(), x))\n\n    # Move the best scorers to head of list\n    result = _nlargest(n, result)\n    # Strip scores for the best n matches\n    return [x for score, x in result]\n\n\nmatches = get_close_matches(\"et11\", [\"get11\", \"hello\", \"aet11\"])\n"
  },
  {
    "path": "paas-ce/README.md",
    "content": "# PaaS服务\n\nPaaS服务分为：PaaS服务和PaaSAgent\n"
  },
  {
    "path": "paas-ce/paas/.flake8",
    "content": "[flake8]\n# ignore = W292,E722\nexclude =\n    *migrations*,\n    *.pyc,\n    .git,\n    __pycache__,\n    node_modules/*,\n    */templates_module*,\n    templates_module*\n    */bin/*,\n    ./esb/lib/gse/*\n\nmax-line-length=120\nmax-complexity=12\nformat=pylint\nshow_source = True\nstatistics = True\ncount = True\n"
  },
  {
    "path": "paas-ce/paas/.jshintrc",
    "content": "{\n    // Details: https://github.com/victorporof/Sublime-JSHint#using-your-own-jshintrc-options\n    // Example: https://github.com/jshint/jshint/blob/master/examples/.jshintrc\n    // Documentation: http://www.jshint.com/docs/options/\n\n    \"asi\": true,\n    \"lastsemic\": false,\n    \"laxcomma\": true,\n    \"sub\": true,\n    \"eqeqeq\": false,\n    \"browser\": true,\n    \"node\": true,\n    \"jquery\": true,\n    \"esnext\": true,\n    \"strict\": false,\n    \"globalstrict\": true,\n    \"quotmark\": false,   // true\n    \"undef\": false,  // true\n    \"unused\": true,\n    \"scripturl\": true,\n    \"globals\": {\n        \"define\": false,\n        \"module\": true,\n        \"export\": true,\n        \"console\": false\n    }\n\n}\n"
  },
  {
    "path": "paas-ce/paas/Makefile",
    "content": ".PHONY: lint gulp-init gulp\n\nlint:\n\tflake8 --config=.flake8 .\n\ngulp-init:\n\t# you need to install node first\n\tnode -v && npm install -g gulp && npm install\n\ngulp:\n\tgulp\n"
  },
  {
    "path": "paas-ce/paas/README.md",
    "content": "# PaaS平台服务\n\n- websocket  堡垒机连接 8004\n- appengine  应用引擎 端口：8000\n- esb        API网关 端口：8002\n- login      统一登录服务 端口：8003\n- paas       开发中心&web工作台 端口：8001\n"
  },
  {
    "path": "paas-ce/paas/VERSION",
    "content": "3.2.5\n"
  },
  {
    "path": "paas-ce/paas/appengine/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*,cover\n.hypothesis/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\n\n# Flask instance folder\ninstance/\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# IPython Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# dotenv\n.env\n\n# virtualenv\nvenv/\nENV/\n\n# Spyder project settings\n.spyderproject\n\n../db.sqlite3\ntemplates_module/\n.python-version\nrun/\nuwsgi.ini\n.idea/\n"
  },
  {
    "path": "paas-ce/paas/appengine/README.md",
    "content": "# PaaS平台社区版之应用引擎\n\n## 简介\n\nappengine目录是PaaS平台中, 负责托管 SaaS 应用的后台服务模块（应用引擎）源码目录。\n\n主要作用是:\n\n- 提供SaaS应用生命周期的管理功能，包括提测、上线、下架等，与PaaSAgent交互\n- 提供SaaS应用依赖的第三方服务的管理功能，包括服务申请，服务配置等\n\n## 技术栈\n\n- framework: Django 1.8.11\n- database: mysql\n\n## 依赖说明\n\n- paasagent: 需要调用paasagent接口, 完成对SaaS应用生命周期的管理功能\n- mysql: 平台数据库\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.contrib import admin\n\nfrom api.models import BkServer\n\n\n@admin.register(BkServer)\nclass BkServerAdmin(admin.ModelAdmin):\n    list_display = ('id', 'name', 's_id', 'token', 'ip_address', 'ip_port', 'category', 'is_active')\n    search_fields = ('name',)\n    list_filter = ('name', 'created_at')\n\n\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/baseview.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django.views.generic import View\nfrom django.http import HttpResponseForbidden\n\nfrom api import models\n\n\nclass BaseView(View):\n\n    def dispatch(self, request, *args, **kwargs):\n        if request.method == \"POST\":\n            if \"application/json\" in self.request.headers[\"content-type\"]:\n                if request.body:\n                    request.json_data = json.loads(request.body)\n                else:\n                    request.json_data = {}\n        return super(BaseView, self).dispatch(request, *args, **kwargs)\n\n\nclass AppView(BaseView):\n\n    def dispatch(self, request, *args, **kwargs):\n        x_app_token = self.request.headers.get(\"x-app-token\")\n        x_app_code = self.request.headers.get(\"x-app-code\")\n        path_info = self.request.META.get(\"PATH_INFO\")\n\n        if path_info == \"/v1/apps/\" and request.method == \"POST\":\n            return super(AppView, self).dispatch(request, *args, **kwargs)\n\n        if not x_app_token:\n            return HttpResponseForbidden(\"app_token missing\")\n\n        if not x_app_code:\n            return HttpResponseForbidden(\"app_code missing\")\n\n        try:\n            bk_app = models.BkAppToken.objects.get(key=x_app_token).bk_app\n            if x_app_code != bk_app.app_code:\n                return HttpResponseForbidden(\"app_token with app_code not match\")\n        except Exception as e:\n            return HttpResponseForbidden(\"invalid app_token: %s\" % e)\n\n        return super(AppView, self).dispatch(request, *args, **kwargs)\n\n\nclass AgentView(BaseView):\n    def dispatch(self, request, *args, **kwargs):\n        x_server_id = self.request.headers.get('x-id')\n        x_token = self.request.headers.get('x-token')\n        if not x_token:\n            return HttpResponseForbidden(\"server token missing\")\n\n        if not x_server_id:\n            return HttpResponseForbidden(\"server id missing\")\n\n        try:\n            models.BkServer.objects.get(token=x_token, s_id=x_server_id)\n        except models.BkServer.DoesNotExist:\n            return HttpResponseForbidden(\"server token and server id not match\")\n\n        return super(AgentView, self).dispatch(request, *args, **kwargs)\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nSERVER_CATEGORY_CHOICES = [('tapp', 'App测试环境'), ('app', 'App正式环境'), ]\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/deployment.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport logging\n\nfrom api import models\nfrom api import servicemanager\nfrom api import utils\nfrom common import http\n\nlogger = logging.getLogger(\"root\")\n\n\nclass DeployController(object):\n\n    def __init__(self, bk_app, mode, deploy_config):\n        self.bk_app = bk_app\n        self.mode = mode\n        self.deploy_config = deploy_config\n\n    def _init_envs(self):\n        envs = self.deploy_config.get(\"envs\", {})\n        self._set_envs(envs)\n\n    def _set_envs(self, envs):\n        for key, value in envs.items():\n            models.BkAppEnv.objects.update_or_create(\n                bk_app=self.bk_app, mode=self.mode, key=key,\n                defaults={'key': key, 'value': value}\n            )\n\n    def online(self):\n        self.bk_app_event = models.BkAppEvent.objects.create(\n            bk_app=self.bk_app,\n            event_type=\"app.%s.deploy\" % self.mode,\n            status=\"READY\"\n        )\n        self._init_envs()\n\n        service_envs = {}\n        try:\n            service_names = self._use_third_service()\n            for service_name in service_names:\n                service_envs.update(self._apply_third_service(service_name))\n        except Exception as e:\n            logger.exception(str(e))\n            self._fail_bk_app_event(str(e))\n            return self.bk_app_event.id, 20300, str(e)\n\n        if service_envs:\n            self._set_envs(service_envs)\n\n        try:\n            bk_servers = self._assign_servers()\n            self._request(bk_servers, \"online\")\n            return self.bk_app_event.id, 0, \"job delivered\"\n        except Exception as e:\n            logger.exception(str(e))\n            self._fail_bk_app_event(str(e))\n            return self.bk_app_event.id, 1, str(e)\n\n    def _assign_servers(self):\n        category = utils.get_server_category(self.mode)\n        assigned_servers = self.bk_app.bkserver_set.filter(category=category, is_active=True)\n        if assigned_servers:\n            return [assigned_servers[0], ]  # only one can active\n        try:\n            bk_server = models.BkServer.objects.get(category=category, is_active=True)\n        except models.BkServer.DoesNotExist:\n            raise Exception(\"no %s servers avaliable. you need to install PaasAgent \"\n                            \"on at least one server and register the server to PaaS\" % self.mode)\n        # BkHostingShip will be deprecated\n        models.BkHostingShip.objects.create(bk_app=self.bk_app, bk_server=bk_server, is_master=True)\n        return [bk_server, ]\n\n    def _use_third_service(self):\n        service_names = []\n        triggers = self.deploy_config.get(\"triggers\", {})\n        if triggers.get(\"is_use_celery\"):\n            service_names.append(\"rabbitmq\")\n        return service_names\n\n    def _apply_third_service(self, service_name):\n        triggers = self.deploy_config.get(\"triggers\", {})\n        service_manager = servicemanager.ServiceManagerFactory(service_name)\n        return service_manager.apply(self.bk_app, self.mode, triggers)\n\n    def offline(self):\n        self.bk_app_event = models.BkAppEvent.objects.create(\n            bk_app=self.bk_app,\n            event_type=\"app.%s.offline\" % self.mode,\n            status=\"READY\"\n        )\n        category = utils.get_server_category(self.mode)\n        try:\n            assigned_servers = self.bk_app.bkserver_set.filter(category=category, is_active=True)\n            self._request(assigned_servers, \"offline\")\n            return self.bk_app_event.id, 0, \"job delivered\"\n        except Exception as e:\n            self._fail_bk_app_event(str(e))\n            return self.bk_app_event.id, 1, str(e)\n\n    def _request(self, bk_servers, handle):\n        params = {\n            \"app_code\": self.bk_app.app_code,\n            \"event_id\": str(self.bk_app_event.id),\n            \"deploy_token\": self.deploy_config.get(\"deploy_token\", ''),\n            \"deploy_vars\": self.deploy_config.get(\"deploy_vars\", {}),\n            \"saas_settings\": self.deploy_config.get(\"saas_settings\", {}),\n            \"mode\": self.mode,\n            \"envs\": self.bk_app.app_envs[self.mode],\n        }\n        for bk_server in bk_servers:\n            resp = http.http_request(\n                method=\"POST\",\n                url=\"http://%s:%s/v1/app/%s\" % (bk_server.ip_address, bk_server.ip_port, handle),\n                headers=utils.agent_header(bk_server.s_id, bk_server.token),\n                json=params\n            )\n            if resp[\"error\"] != 0:\n                raise Exception(resp.get(\"msg\"))\n\n    def _fail_bk_app_event(self, message):\n        self.bk_app_event.status = \"FAILURE\"\n        self.bk_app_event.data = message\n        self.bk_app_event.save()\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\n\nclass AgentRegisterForm(forms.Form):\n    agent_ip = forms.GenericIPAddressField(required=True)\n    agent_port = forms.IntegerField(min_value=80)\n    mode = forms.ChoiceField(choices=((\"test\", \"test\"), (\"prod\", \"prod\")))\n    web_port = forms.IntegerField(min_value=80)\n\n\nclass AppInitForm(forms.Form):\n    app_code = forms.CharField(max_length=30)\n    name = forms.CharField(max_length=20)\n    app_lang = forms.CharField(max_length=20)\n\n\nclass AppEventLogsForm(forms.Form):\n    status = forms.ChoiceField(\n        choices=((\"STARTED\", \"STARTED\"), (\"PENDING\", \"PENDING\"), (\"FAILURE\", \"FAILURE\"), (\"SUCCESS\", \"SUCCESS\")))\n    log = forms.CharField()\n\n\nclass ServiceServerRegisterForm(forms.Form):\n    server_ip = forms.GenericIPAddressField(required=True)\n\n\nclass AgentServerRegisterForm(forms.Form):\n    agent_ip = forms.GenericIPAddressField(required=True)\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport uuid\nimport json\nimport logging\n\nfrom django.db import models\n\nfrom api.constants import SERVER_CATEGORY_CHOICES\n\nlogger = logging.getLogger(\"root\")\n\nTHIRD_SERVER_CATEGORY_MQ = 'rabbitmq'\nTHIRD_SERVER_CATEGORY_CHOICES = [(THIRD_SERVER_CATEGORY_MQ, \"RabbitMQ服务\"), ]\n\n\nclass BkApp(models.Model):\n    name = models.CharField(max_length=20)\n    logo = models.CharField(max_length=100)\n    app_code = models.CharField(max_length=100, unique=True)\n    app_lang = models.CharField(max_length=100)\n    app_type = models.CharField(max_length=100)\n    is_active = models.BooleanField(default=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    @property\n    def token(self):\n        return self.bkapptoken_set.first().key\n\n    @property\n    def app_envs(self):\n        app_envs = {\"test\": {}, \"prod\": {}}\n        for app_env in self.bkappenv_set.all():\n            mode, key, value = app_env.mode, app_env.key, app_env.value\n            app_envs[mode][key] = value\n        return app_envs\n\n    def serializer_data(self):\n        return {\n            \"id\": self.id,\n            \"app_code\": self.app_code,\n            \"name\": self.name,\n            \"app_lang\": self.app_lang,\n            \"app_type\": self.app_type,\n            \"is_active\": self.is_active,\n            \"token\": self.token,\n            \"app_envs\": self.app_envs\n        }\n\n    class Meta:\n        db_table = \"engine_apps\"\n        verbose_name = \"app info\"\n        ordering = ('created_at',)\n\n\nclass BkAppToken(models.Model):\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    key = models.UUIDField(default=uuid.uuid4, editable=False)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_app_tokens\"\n        verbose_name = \"app token\"\n        ordering = ('created_at',)\n\n\nclass BkServer(models.Model):\n    name = models.CharField('名称', max_length=20)\n    s_id = models.UUIDField('服务ID', default=uuid.uuid4, editable=False)\n    token = models.UUIDField(default=uuid.uuid4, editable=False)\n    ip_address = models.CharField('IP地址', max_length=36)\n    ip_port = models.CharField('agent端口', max_length=36)\n    app_port = models.CharField('app端口', max_length=36)\n    category = models.CharField('分类', max_length=36, choices=SERVER_CATEGORY_CHOICES, default='tapp')\n    info = models.CharField('备注', max_length=200)\n    is_active = models.BooleanField('启用', default=True)\n    apps = models.ManyToManyField(BkApp, blank=True, through='BkHostingShip')\n    mac = models.CharField('MAC地址', max_length=36, default='')\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_servers\"\n        verbose_name = \"服务器信息\"\n        verbose_name_plural = \"服务器信息\"\n        ordering = ('created_at',)\n\n\nclass BkHostingShip(models.Model):\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    bk_server = models.ForeignKey(BkServer, on_delete=models.CASCADE)\n    is_active = models.BooleanField(default=True)\n    is_master = models.BooleanField(default=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_hosting_ships\"\n        verbose_name = \"router map\"\n        ordering = ('created_at',)\n\n    def __str__(self):\n        return \"{0}-{1}-{2}\".format(self.bk_server.ip_address, self.bk_server.ip_port, self.bk_server.is_active)\n\n\nclass BkAppEnv(models.Model):\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    mode = models.CharField(max_length=200)\n    key = models.CharField(max_length=200)\n    value = models.CharField(max_length=200)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_app_envs\"\n        verbose_name = \"app env\"\n        ordering = ('created_at',)\n\n\nclass BkAppEvent(models.Model):\n    id = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True)\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    event_type = models.CharField(max_length=200)\n    status = models.CharField(max_length=200)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    @property\n    def logs(self):\n        logs = \"\"\n        for event_log in self.bkappeventlog_set.all():\n            logs += event_log.log\n            logs += \"\\n\"\n        return logs\n\n    def serializer_data(self):\n        return {\n            \"status\": self.status,\n            \"logs\": self.logs,\n            \"event_type\": self.event_type,\n            \"app_code\": self.bk_app.app_code\n        }\n\n    class Meta:\n        db_table = \"engine_app_events\"\n        verbose_name = \"app event\"\n        ordering = ('created_at',)\n\n\nclass BkAppEventLog(models.Model):\n    bk_app_event = models.ForeignKey(BkAppEvent, on_delete=models.CASCADE)\n    log = models.TextField()\n\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_app_event_logs\"\n        verbose_name = \"app event log\"\n        ordering = ('created_at',)\n\n    def __str__(self):\n        return \"{0}-{1}\".format(self.id, self.log)\n\n\nclass ThirdServer(models.Model):\n    category = models.CharField('分类', max_length=36, choices=THIRD_SERVER_CATEGORY_CHOICES,\n                                default=THIRD_SERVER_CATEGORY_MQ)\n    server_info = models.TextField(\"服务器信息\")\n    info = models.CharField('备注', max_length=200)\n    is_active = models.BooleanField('启用', default=False)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    @property\n    def server_data(self):\n        try:\n            return json.loads(self.server_info)\n        except Exception:\n            return {}\n\n    class Meta:\n        db_table = \"engine_third_servers\"\n        verbose_name = \"第三方服务器信息\"\n        verbose_name_plural = \"第三方服务器信息\"\n        ordering = ('created_at',)\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/response.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.http import JsonResponse\n\n\nclass FailJsonResponse(JsonResponse):\n    def __init__(self, message, **kwargs):\n        data = {}\n        if kwargs:\n            data.update(kwargs)\n\n        # high priority\n        data.update({\n            \"result\": False,\n            \"message\": message\n        })\n\n        if \"data\" not in data:\n            data[\"data\"] = {}\n\n        super(FailJsonResponse, self).__init__(data)\n\n\nclass OKJsonResponse(JsonResponse):\n    def __init__(self, **kwargs):\n        data = {}\n        if kwargs:\n            data.update(kwargs)\n\n        # high priority\n        data.update({\n            \"result\": True,\n        })\n        if \"data\" not in data:\n            data[\"data\"] = {}\n        if \"message\" not in data:\n            data[\"message\"] = \"\"\n\n        super(OKJsonResponse, self).__init__(data)\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/servicemanager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom abc import ABCMeta, abstractmethod\n\nfrom requests.status_codes import codes\n\nfrom api import models\nfrom common import http\n\n\ndef update_or_create_rabbitmq_server(**kwargs):  # can abstract ServiceServerManager class\n    server_info = {\n        \"ip_address\": kwargs.get(\"server_ip\"),\n        \"ip_port\": \"15672\",\n        \"username\": kwargs.get(\"username\"),\n        \"password\": kwargs.get(\"password\")\n    }\n\n    server_info = json.dumps(server_info)\n    defaults = {\n        'server_info': server_info,\n        'is_active': False\n    }\n    return models.ThirdServer.objects.update_or_create(category=models.THIRD_SERVER_CATEGORY_MQ, defaults=defaults)\n\n\ndef ServiceManagerFactory(service_name):\n    if service_name == \"rabbitmq\":\n        return RabbitmqManager()\n    raise NotImplementedError(\"%s not supported\" % service_name)\n\n\nclass ThirdServiceManager(object, metaclass=ABCMeta):\n    @abstractmethod\n    def apply(self, bk_app, mode, triggers):\n        pass\n\n    @abstractmethod\n    def health_check(self, server_id):\n        pass\n\n\nclass RabbitmqManager(ThirdServiceManager):\n\n    def apply(self, bk_app, mode, triggers):\n        self.bk_app, self.mode, self.triggers = bk_app, mode, triggers\n\n        server_data = models.ThirdServer.objects.get(category=models.THIRD_SERVER_CATEGORY_MQ,\n                                                     is_active=True).server_data\n\n        app_code = self.bk_app.app_code\n        mq_pwd = str(self.bk_app.token)[:8]\n        admin_account = {\n            \"name\": server_data.get(\"username\"),\n            \"password\": server_data.get(\"password\")\n        }\n        user_account = {\n            \"name\": self.bk_app.app_code,\n            \"password\": mq_pwd\n        }\n        server_url = \"http://%s:%s\" % (server_data.get(\"ip_address\"), server_data.get(\"ip_port\"))\n        vhost = 'test_%s' % app_code if self.mode == 'test' else 'prod_%s' % app_code\n        self._apply_mq_res(server_url, admin_account, user_account, vhost)\n        return {\n            \"BK_BROKER_URL\": \"amqp://%s:%s@%s:5672/%s\" % (app_code, mq_pwd, server_data.get('ip_address'), vhost),\n            \"IS_USE_CELERY\": \"true\",\n            \"IS_USE_CELERY_BEAT\": \"true\" if self.triggers.get(\"is_use_celery_beat\") else \"false\"\n        }\n\n    def _apply_mq_res(self, server_url, admin_account, user_account, vhost):\n        app_code = self.bk_app.app_code\n        headers = {'content-type': 'application/json'}\n        auth = (admin_account['name'], admin_account['password'])\n\n        try:\n            # 创建vhost\n            http.http_request(\n                method=\"PUT\",\n                url='%s/api/vhosts/%s' % (server_url, vhost),\n                desired_code=codes.no_content,\n                headers=headers,\n                auth=auth\n            )\n        except Exception as e:\n            raise Exception(\"create vhost failed: %s\" % e)\n\n        try:\n            # 创建账户\n            http.http_request(\n                method=\"PUT\",\n                url=\"%s/api/users/%s\" % (server_url, app_code),\n                desired_code=codes.no_content,\n                headers=headers,\n                auth=auth,\n                json={\"password\": user_account['password'], \"tags\": \"management\"}\n            )\n        except Exception as e:\n            raise Exception(\"create account failed: %s\" % e)\n\n        try:\n            http.http_request(\n                method=\"PUT\",\n                url=\"%s/api/permissions/%s/%s\" % (server_url, vhost, app_code),\n                desired_code=codes.no_content,\n                headers=headers,\n                auth=auth,\n                json={\"configure\": \".*\", \"write\": \".*\", \"read\": \".*\"}\n            )\n        except Exception as e:\n            raise Exception(\"vhost authorization failed: %s\" % e)\n\n    def health_check(self, server_id):\n        try:\n            server_data = models.ThirdServer.objects.get(id=server_id,\n                                                         category=models.THIRD_SERVER_CATEGORY_MQ).server_data\n        except models.ThirdServer.DoesNotExist:\n            raise Exception(\"no rabbitmq server is active\")\n\n        try:\n            http.http_request(\n                method=\"GET\",\n                url=\"http://%s:%s/api/overview\" % (server_data.get('ip_address'), server_data.get('ip_port')),\n                auth=(server_data.get(\"username\"), server_data.get(\"password\"))\n            )\n        except Exception as e:\n            raise Exception(\"administrator account information error or rabbitmq service exception: %s\" % e)\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n# Create your tests here.\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"URL routing patterns for the Engine API.\n\"\"\"\nfrom django.urls import path, re_path\n\nfrom api import views\n\nPVAR_IP_REGEX = r'(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}'\nPVAR_APP_REGEX = '[a-z_0-9-]+'\nPVAR_EVENT_ID_REGEX = '[a-f-_0-9]+'\nPVAR_NAME_REGEX = '[a-z-_A-Z0-9]+'\n\nurlpatterns = [\n\n    path(\"agents/\", views.AgentViewSet.as_view()),\n    re_path(r\"^agents/(?P<agent_ip>%s)/$\" % PVAR_IP_REGEX, views.AgentViewSet.as_view()),\n    path(\"agents/<int:server_id>/\", views.AgentActiveViewSet.as_view()),\n\n    path(\"apps/\", views.AppViewSet.as_view()),\n    re_path(r\"^apps/(?P<app_code>%s)/$\" % PVAR_APP_REGEX, views.AppViewSet.as_view()),\n\n    re_path(r\"^apps/(?P<app_code>%s)/(?P<mode>(test)|(prod))/releases/$\" % PVAR_APP_REGEX,\n        views.AppReleaseViewSet.as_view()),\n\n    re_path(r\"^apps/(?P<app_code>%s)/events/(?P<event_id>%s)/logs/$\" % (PVAR_APP_REGEX, PVAR_EVENT_ID_REGEX),\n        views.AppLogsViewSet.as_view()),\n    re_path(r\"^apps/(?P<app_code>%s)/events/(?P<event_id>%s)/?\" % (PVAR_APP_REGEX, PVAR_EVENT_ID_REGEX),\n        views.AppEventLogsViewSet.as_view()),\n\n    path(\"healthz/\", views.HealthCheckView.as_view()),\n    path(\"agents/<int:server_id>/healthz/\", views.AgentHealthCheckView.as_view()),\n\n    re_path(r\"^services/(?P<service_name>%s)/servers/(?P<server_id>\\d+)/healthz/$\" % PVAR_NAME_REGEX,\n        views.ServiceHealthCheckView.as_view()),\n    re_path(r\"^services/(?P<service_name>%s)/servers/$\" % PVAR_NAME_REGEX,\n        views.ServiceServerViewSet.as_view()),\n    re_path(r\"^services/(?P<service_name>%s)/servers/(?P<server_id>\\d+)/$\" % PVAR_NAME_REGEX,\n        views.ServiceServerViewSet.as_view())\n\n]\n\n# agent/init and rabbitmq/init will be deprecated\n# use agents/(?P<agent_ip>%s)/ and services/(?P<service_name>%s)/server/(?P<server_ip>%s)/ instead\nurlpatterns += [\n    re_path(r\"^agent/init/?\", views.AgentRegistryView.as_view()),\n    re_path(r\"^rabbitmq/init/?\", views.MqRegistryView.as_view())\n]\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom api import models\nfrom common import http\n\n\ndef get_server_category(mode):\n    return 'tapp' if mode == 'test' else 'app'\n\n\ndef has_active_server(category):\n    if models.BkServer.objects.filter(category=category, is_active=True):\n        return True\n    return False\n\n\ndef has_active_thirdserver(category):\n    if models.ThirdServer.objects.filter(category=category, is_active=True):\n        return True\n    return False\n\n\ndef agent_header(sid, token):\n    return {\n        \"Content-Type\": \"application/json\",\n        \"X-ID\": str(sid),\n        \"X-TOKEN\": str(token)\n    }\n\n\ndef check_agent_health(bk_server):\n    resp = http.http_request(\n        method=\"GET\",\n        url=\"http://%s:%s/v1/app/healthz\" % (bk_server.ip_address, bk_server.ip_port),\n        headers=agent_header(bk_server.s_id, bk_server.token)\n    )\n    if resp.get(\"error\") != 0:\n        raise Exception(\"%s agent return not zero\" % bk_server.ip_address)\n    return resp\n"
  },
  {
    "path": "paas-ce/paas/appengine/api/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport logging\n\nfrom django.views.generic import View\nfrom django.http import JsonResponse\n\nfrom api import models, forms, servicemanager\nfrom api.baseview import BaseView, AgentView, AppView\nfrom api.response import OKJsonResponse, FailJsonResponse\nfrom api.utils import get_server_category, has_active_server, check_agent_health, has_active_thirdserver\nfrom api.deployment import DeployController\n\nlogger = logging.getLogger(\"root\")\n\n\nclass AgentViewSet(BaseView):\n    def put(self, request, agent_ip):\n        try:\n            bk_server = models.BkServer.objects.get(ip_address=agent_ip)\n        except Exception as e:\n            return FailJsonResponse(\"active server ip %s exception: %s\" % (agent_ip, e))\n\n        if not bk_server.is_active and has_active_server(bk_server.category):\n            return FailJsonResponse(\n                \"%s environment has already one activated server, thus ip %s cannot be activated again\"\n                % (bk_server.category, agent_ip))\n\n        try:\n            resp = check_agent_health(bk_server)\n            bk_server.is_active = True\n            bk_server.mac = resp.get(\"mac\", \"\")\n            bk_server.save()\n            return OKJsonResponse(data={\"agent_ip\": bk_server.ip_address})\n        except Exception as e:\n            bk_server.is_active = False\n            bk_server.save()\n            err_msg = \"active server ip %s exception: %s\" % (agent_ip, e)\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n\n    def post(self, request):\n        form_data = forms.AgentRegisterForm(request.json_data)\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return FailJsonResponse(err_msg)\n\n        data = form_data.clean()\n\n        server_category = get_server_category(data[\"mode\"])\n        server_params = {\n            \"ip_address\": data[\"agent_ip\"],\n            \"app_port\": data[\"web_port\"],\n            \"ip_port\": data[\"agent_port\"],\n            \"category\": server_category,\n        }\n        try:\n            bk_server = models.BkServer.objects.get(**server_params)\n        except models.BkServer.DoesNotExist:\n            server_params[\"is_active\"] = False\n            bk_server = models.BkServer.objects.create(**server_params)\n        return OKJsonResponse(data={\"sid\": bk_server.s_id, \"token\": bk_server.token})\n\n\nclass AgentActiveViewSet(BaseView):\n    def put(self, request, server_id):\n        try:\n            bk_server = models.BkServer.objects.get(id=server_id)\n        except models.BkServer.DoesNotExist:\n            return FailJsonResponse(\"id %s server not registered\")\n\n        if not bk_server.is_active and has_active_server(bk_server.category):\n            return FailJsonResponse(\n                \"%s environment has already one activated server, thus id %s cannot be activated again\"\n                % (bk_server.category, server_id))\n\n        try:\n            resp = check_agent_health(bk_server)\n            bk_server.is_active = True\n            bk_server.mac = resp.get(\"mac\", \"\")\n            bk_server.save()\n            return OKJsonResponse(data={\"server_id\": server_id})\n        except Exception as e:\n            bk_server.is_active = False\n            bk_server.save()\n            err_msg = \"active server id %s exception: %s\" % (server_id, e)\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n\n\nclass AppViewSet(AppView):\n    def post(self, request):\n        form_data = forms.AppInitForm(request.json_data)\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return FailJsonResponse(err_msg)\n\n        ## _UFO\n        auth_token = request.GET.get(\"auth_token\")\n        data = form_data.clean()\n        bk_app, created = models.BkApp.objects.update_or_create(\n            app_code=data[\"app_code\"],\n            defaults={\"name\": data[\"name\"], \"app_lang\": data[\"app_lang\"]})\n        if bk_app and created:\n            # edited by _UFO\n            # models.BkAppToken.objects.create(bk_app=bk_app)\n            if auth_token:\n                models.BkAppToken.objects.create(bk_app=bk_app,key=auth_token)\n            else:\n                models.BkAppToken.objects.create(bk_app=bk_app)\n\n        return OKJsonResponse(data=bk_app.serializer_data())\n\n    def get(self, request, app_code):\n        try:\n            bk_app = models.BkApp.objects.get(app_code=app_code)\n        except Exception as e:\n            return FailJsonResponse(str(e))\n        return OKJsonResponse(data=bk_app.serializer_data())\n\n\nclass AppReleaseViewSet(AppView):\n    def post(self, request, app_code, mode):\n        try:\n            bk_app = models.BkApp.objects.get(app_code=app_code)\n        except Exception as e:\n            return FailJsonResponse(str(e))\n\n        # add saas fields in envs only for agent\n        if request.json_data.get('is_saas', False):\n            saas_settings = request.json_data.get('saas_settings', {})\n            saas_settings['is_saas'] = 'true'\n        else:\n            saas_settings = {'is_saas': 'false'}\n\n        deploy_config = {\n            \"envs\": request.json_data.get('envs', {}),\n            \"triggers\": request.json_data.get('triggers', {}),\n            \"deploy_token\": request.json_data.get(\"deploy_token\", ''),\n            \"deploy_vars\": request.json_data.get(\"deploy_vars\", {}),\n            \"saas_settings\": saas_settings\n        }\n        deploy_controller = DeployController(bk_app, mode, deploy_config)\n        event_id, error_code, message = deploy_controller.online()\n\n        data = {\"event_id\": event_id, \"error_code\": error_code}\n        if error_code == 0:\n            return OKJsonResponse(data=data)\n\n        return FailJsonResponse(message, data=data)\n\n    def delete(self, request, app_code, mode):\n        try:\n            bk_app = models.BkApp.objects.get(app_code=app_code)\n        except Exception as e:\n            return FailJsonResponse(str(e))\n\n        deploy_controller = DeployController(bk_app, mode, {})\n        event_id, error_code, message = deploy_controller.offline()\n        data = {\"event_id\": event_id, \"error_code\": error_code}\n        if error_code == 0:\n            return OKJsonResponse(data=data)\n        return FailJsonResponse(message, data=data)\n\n\nclass AppLogsViewSet(AppView):\n    def get(self, request, app_code, event_id):\n        try:\n            bk_app = models.BkApp.objects.get(app_code=app_code)\n            bk_app_event = models.BkAppEvent.objects.get(id=event_id, bk_app=bk_app)\n        except Exception as e:\n            return FailJsonResponse(str(e))\n        return OKJsonResponse(data=bk_app_event.serializer_data())\n\n\nclass AppEventLogsViewSet(AgentView):\n\n    def post(self, request, app_code, event_id):\n        try:\n            bk_app = models.BkApp.objects.get(app_code=app_code)\n            bk_app_event = models.BkAppEvent.objects.get(id=event_id, bk_app=bk_app)\n        except Exception as e:\n            return FailJsonResponse(str(e))\n\n        form_data = forms.AppEventLogsForm(request.json_data)\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return FailJsonResponse(err_msg)\n\n        data = form_data.clean()\n        bk_app_event.status = data[\"status\"]\n        bk_app_event.save()\n\n        models.BkAppEventLog.objects.create(bk_app_event=bk_app_event, log=data[\"log\"])\n\n        return OKJsonResponse(data={\"event_id\": event_id})\n\n\nclass HealthCheckView(View):\n\n    def _check_db(self):\n        import django.db\n        with django.db.connection.cursor() as c:\n            c.execute(\"SELECT 0\")\n\n    def _check_agent(self):\n        bk_servers = models.BkServer.objects.filter(is_active=True)\n        if not bk_servers:\n            raise Exception(\"have not registered and activated applicable app servers\")\n\n        for bk_server in bk_servers:\n            check_agent_health(bk_server)\n\n    def get(self, request):\n        try:\n            self._check_db()\n        except Exception as e:\n            err_msg = \"database health check failed! database connection exception %s\" % e\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n\n        try:\n            self._check_agent()\n        except Exception as e:\n            err_msg = \"paasagent health check failed, error: %s\" % e\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n        else:\n            return OKJsonResponse()\n\n\nclass AgentHealthCheckView(View):\n    def get(self, request, server_id):\n        try:\n            bk_server = models.BkServer.objects.get(id=int(server_id))\n            check_agent_health(bk_server)\n            return OKJsonResponse()\n        except Exception as e:\n            err_msg = \"health check failed: %s\" % e\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n\n\nclass ServiceHealthCheckView(View):\n    def get(self, request, server_name, server_id):\n        try:\n            server_manager = servicemanager.ServiceManagerFactory(server_name)\n            server_manager.health_check(server_id)\n            return OKJsonResponse()\n        except Exception as e:\n            logger.exception(e)\n            return FailJsonResponse(str(e))\n\n\nclass ServiceServerViewSet(BaseView):\n    def post(self, request, service_name):\n        if service_name != models.THIRD_SERVER_CATEGORY_MQ:\n            return FailJsonResponse(\"not support %s server register\" % service_name)\n\n        category = service_name\n        form_data = forms.ServiceServerRegisterForm({\"server_ip\": request.json_data.get(\"server_ip\")})\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return FailJsonResponse(err_msg)\n\n        data = form_data.clean()\n        server_ip = data[\"server_ip\"]\n\n        if models.ThirdServer.objects.filter(category=category, is_active=True):\n            return FailJsonResponse(\n                \"the %s cluster has been already activated, thus ip %s cannot be activated again\"\n                % (models.THIRD_SERVER_CATEGORY_MQ, server_ip))\n\n        server, _ = servicemanager.update_or_create_rabbitmq_server(\n            server_ip=server_ip,\n            username=request.json_data.get('username', 'admin'),\n            password=request.json_data.get('password', 'admin')\n        )\n\n        service_manager = servicemanager.ServiceManagerFactory(service_name)\n        try:\n            service_manager.health_check(server.id)\n            server.is_active = True\n            server.save()\n            return OKJsonResponse()\n        except Exception as e:\n            err_msg = \"%s registered, but active failed: %s\" % (server_ip, e)\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n\n    def put(self, request, service_name, server_id):\n        print(\"ServiceServerViewSet_PUT\", request, service_name, server_id)\n        if service_name != models.THIRD_SERVER_CATEGORY_MQ:\n            return FailJsonResponse(\"not support %s server register\" % service_name)\n\n        try:\n            service_server = models.ThirdServer.objects.get(id=server_id, category=service_name)\n        except models.ThirdServer.DoesNotExist:\n            return FailJsonResponse(\"id %s server not registered\" % server_id)\n\n        if not service_server.is_active and has_active_thirdserver(service_server.category):\n            return FailJsonResponse(\n                \"the %s cluster has been already activated, thus id %s cannot be activated again\"\n                % (service_server.category, server_id))\n\n        service_manager = servicemanager.ServiceManagerFactory(service_server.category)\n        try:\n            service_manager.health_check(server_id)\n            service_server.is_active = True\n            service_server.save()\n            return OKJsonResponse()\n        except Exception as e:\n            service_server.is_active = False\n            service_server.save()\n            err_msg = \"%s registered, but active failed: %s\" % (server_id, e)\n            logger.exception(err_msg)\n            return FailJsonResponse(err_msg)\n\n\n# AgentRegistryView will be deprecated\nclass AgentRegistryView(View):\n\n    def post(self, request, *args, **kwargs):\n        form_data = forms.AgentRegisterForm(request.POST)\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return JsonResponse({\"msg\": err_msg}, status=400)\n\n        data = form_data.clean()\n\n        server_category = get_server_category(data[\"mode\"])\n        agent_ip = data[\"agent_ip\"]\n        server_params = {\n            \"app_port\": data[\"web_port\"],\n            \"ip_port\": data[\"agent_port\"],\n            \"category\": server_category,\n            \"is_active\": False\n        }\n\n        bk_server, _ = models.BkServer.objects.update_or_create(ip_address=agent_ip, defaults=server_params)\n\n        active_server = models.BkServer.objects.filter(category=server_category, is_active=True)\n        if active_server:\n            err_msg = \"%s environment has already one activated server, thus ip %s cannot be activated again\" \\\n                      % (data[\"mode\"], agent_ip)\n            return JsonResponse({\"msg\": err_msg})\n        return JsonResponse({\"sid\": bk_server.s_id, \"token\": bk_server.token})\n\n    def get(self, request):\n        form_data = forms.AgentServerRegisterForm({\"agent_ip\": request.GET.get('agent_ip', '')})\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return JsonResponse({\"msg\": err_msg}, status=400)\n\n        data = form_data.clean()\n        agent_ip = data[\"agent_ip\"]\n        try:\n            bk_server = models.BkServer.objects.get(ip_address=agent_ip)\n        except Exception as e:\n            return JsonResponse({\"msg\": \"active server ip %s exception: %s\" % (agent_ip, e)}, status=400)\n\n        try:\n            resp = check_agent_health(bk_server)\n            bk_server.is_active = True\n            bk_server.mac = resp.get(\"mac\", \"\")\n            bk_server.save()\n            return JsonResponse({\"agent_ip\": bk_server.ip_address})\n        except Exception as e:\n            bk_server.is_active = False\n            bk_server.save()\n            err_msg = \"active server ip %s exception: %s\" % (agent_ip, e)\n            logger.exception(err_msg)\n            return JsonResponse({\"msg\": err_msg}, status=400)\n\n\n# MqRegistryView will be deprecated\nclass MqRegistryView(View):\n    def post(self, request):\n        form_data = forms.ServiceServerRegisterForm({\"server_ip\": request.POST.get(\"mq_ip\", '')})\n        if not form_data.is_valid():\n            err_msg = form_data.errors\n            return JsonResponse({\"msg\": err_msg}, status=400)\n\n        data = form_data.clean()\n        server_ip = data[\"server_ip\"]\n\n        if models.ThirdServer.objects.filter(category=models.THIRD_SERVER_CATEGORY_MQ, is_active=True):\n            err_msg = \"the %s cluster has been already activated, thus ip %s cannot be activated again\" \\\n                      % (models.THIRD_SERVER_CATEGORY_MQ, server_ip)\n            return JsonResponse({\"msg\": err_msg})\n\n        server, _ = servicemanager.update_or_create_rabbitmq_server(\n            server_ip=server_ip,\n            username=request.POST.get('username', 'admin'),\n            password=request.POST.get('password', 'admin')\n        )\n\n        service_manager = servicemanager.ServiceManagerFactory(models.THIRD_SERVER_CATEGORY_MQ)\n        try:\n            service_manager.health_check(server.id)\n            server.is_active = True\n            server.save()\n            return JsonResponse({\"mq_ip\": server_ip})\n        except Exception as e:\n            err_msg = \"%s registered, but active failed: %s\" % (server_ip, e)\n            logger.exception(err_msg)\n            return JsonResponse({\"msg\": err_msg}, status=400)\n"
  },
  {
    "path": "paas-ce/paas/appengine/common/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/appengine/common/exceptions.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\n\nclass BadResponse(Exception):\n    def __init__(self, resp):\n        self.response = resp\n        self.status_code = resp.status_code\n        try:\n            self.json_response = resp.json()\n        except Exception:\n            self.json_response = {}\n\n    def __str__(self):\n        return 'status_code=%s resp_data=%s' % (\n            self.status_code,\n            json.dumps(self.json_response),\n        )\n"
  },
  {
    "path": "paas-ce/paas/appengine/common/http.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\"  # noqa\nimport requests\nfrom requests.status_codes import codes\n\nfrom django.conf import settings\nfrom .exceptions import BadResponse\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\ndef http_request(method, url, desired_code=codes.ok, **kwargs):\n    if \"timeout\" not in kwargs:\n        kwargs[\"timeout\"] = settings.HTTP_TIMEOUT\n\n    resp = requests.request(method, url, **kwargs)\n    if resp.status_code == desired_code or desired_code == 204 and resp.status_code == 201:\n        try:\n            return resp.json()\n        except Exception:\n            return resp\n\n    raise BadResponse(resp)\n"
  },
  {
    "path": "paas-ce/paas/appengine/controller/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/appengine/controller/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom controller.settings_default import * # noqa\n\nDEBUG = True\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': 'OpsAny2025.Dev',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\nDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'\nSTATIC_URL = '/static/'\nCSRF_TRUSTED_ORIGINS = [\n    'https://dev.opsany.cn',\n    'http://dev.opsany.cn',\n    'http://10.0.0.188:8001',\n    'http://10.0.0.56:8001',\n    #'https://10.0.0.188:8001',\n    'http://115.227.17.162:8001',\n    'http://127.0.0.1:8001',\n    'http://0.0.0.0:8001',\n]\n"
  },
  {
    "path": "paas-ce/paas/appengine/controller/settings_default.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport time\n\ntry:\n    import pymysql\n\n    pymysql.install_as_MySQLdb()\nexcept Exception:\n    pass\n\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n# Quick-start development settings - unsuitable for production\n# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/\n\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = 'hg@5x(5f!fn*gb!fdx=ca7l+w=b#g509p^sjxn47%6^5q=xwxu'\n\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\n\nALLOWED_HOSTS = ['*']\n\n# Application definition\n\nINSTALLED_APPS = (\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'api',\n)\n\nMIDDLEWARE = (\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.common.CommonMiddleware',\n    #'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    #'django.contrib.auth.middleware.SessionAuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    'django.middleware.clickjacking.XFrameOptionsMiddleware',\n    'django.middleware.security.SecurityMiddleware',\n)\n\nROOT_URLCONF = 'controller.urls'\n\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': [],\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.contrib.messages.context_processors.messages',\n            ],\n        },\n    },\n]\n\n# WSGI_APPLICATION = 'controller.wsgi.application'\nWSGI_APPLICATION = 'wsgi.application'\n\n# Internationalization\n# https://docs.djangoproject.com/en/1.8/topics/i18n/\n\nLANGUAGE_CODE = 'zh-hans'\n\n# TIME_ZONE = 'Asia/Shanghai'\nTIME_ZONE = 'Etc/GMT%+d' % ((time.altzone if time.daylight else time.timezone) / 3600)\n\nUSE_I18N = True\n\n\n#  USE_TZ = True\n\nAPP_URL_REGEX = '[a-z_0-9-]+'\n\n# logging\n\nLOGGER_LEVEL = 'INFO'\n\nPROJECT_PATH = os.path.dirname(os.path.abspath(__file__))\nPROJECT_ROOT, PROJECT_MODULE_NAME = os.path.split(PROJECT_PATH)\nBASE_DIR = os.path.dirname(os.path.dirname(PROJECT_PATH))\n\nLOGGING_DIR = os.environ.get('PAAS_LOGGING_DIR') or os.path.join(PROJECT_ROOT, 'logs')\nif not os.path.exists(LOGGING_DIR):\n    os.mkdir(LOGGING_DIR)\n\nLOG_CLASS = 'logging.handlers.RotatingFileHandler'\n\n\n\n\nLOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'formatters': {\n        'verbose': {\n            'format':\n                '%(levelname)s [%(asctime)s] %(pathname)s %(lineno)d %(funcName)s %(process)d %(thread)d \\n \\t %(message)s \\n', # noqa\n            # noqa\n            'datefmt': '%Y-%m-%d %H:%M:%S'\n        },\n        'simple': {\n            'format': '%(levelname)s %(message)s \\n'\n        },\n    },\n    'handlers': {\n        'null': {\n            'level': 'DEBUG',\n            'class': 'logging.NullHandler',\n        },\n        'mail_admins': {\n            'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler'\n        },\n        'console': {\n            'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter':\n                'simple'\n        },\n        'root': {\n            'class': LOG_CLASS, 'formatter': 'verbose', 'filename':\n                os.path.join(LOGGING_DIR, 'appengine.log'), 'maxBytes': 1024 * 1024 * 10\n        },\n        'wb_mysql': {\n            'class': LOG_CLASS, 'formatter': 'verbose', 'filename':\n                os.path.join(LOGGING_DIR, 'appengine_mysql.log'), 'maxBytes': 1024 * 1024 * 10\n        },\n    },\n    'loggers': {\n        'django': {\n            'handlers': ['null'],\n            'level': 'DEBUG',\n            'propagate': True,\n        },\n        'django.request': {\n            'handlers': ['console'],\n            'level': 'DEBUG',\n            'propagate': True,\n        },\n        'root': {\n            'handlers': ['root', 'console'],\n            'level': LOGGER_LEVEL,\n            'propagate': True,\n        },\n        'django.db.backends': {\n            'handlers': ['wb_mysql'],\n            'level': 'DEBUG',\n            'propagate': True,\n        },\n    }\n}\n\nHTTP_TIMEOUT = 5\n"
  },
  {
    "path": "paas-ce/paas/appengine/controller/settings_sample.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom controller.settings_default import * # noqa\n\nDEBUG = True\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\nDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'\nSTATIC_URL = '/static/'\nCSRF_TRUSTED_ORIGINS = [\n    'https://10.0.0.111:8001',\n    'http://10.0.0.111:8001',\n]\n"
  },
  {
    "path": "paas-ce/paas/appengine/controller/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"controller URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/1.8/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')\nIncluding another URLconf\n    1. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))\n\"\"\"\nfrom django.urls import include, path\n\nurlpatterns = [\n    path('v1/', include('api.urls')),\n]\n"
  },
  {
    "path": "paas-ce/paas/appengine/manage.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"controller.settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "paas-ce/paas/appengine/requirements.txt",
    "content": "django==4.2.16\npymysql==1.1.1\nrequests==2.32.3\ngunicorn==23.0.0\nuWSGI==2.0.26\ngevent==24.2.1\n"
  },
  {
    "path": "paas-ce/paas/appengine/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"WSGI config for controller project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/\n\"\"\"\nimport os  # noqa\n\nfrom django.core.wsgi import get_wsgi_application  # noqa\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"controller.settings\")\n\napplication = get_wsgi_application()\n"
  },
  {
    "path": "paas-ce/paas/docs/concepts/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/concepts/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Concepts | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Concepts\" />\n<meta property=\"og:description\" content=\"What does your user need to understand about your project in order to use it - or potentially contribute to it? \n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/concepts/\" />\n<meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Concepts\">\n<meta itemprop=\"description\" content=\"What does your user need to understand about your project in order to use it - or potentially contribute to it? \n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Concepts\"/>\n<meta name=\"twitter:description\" content=\"What does your user need to understand about your project in order to use it - or potentially contribute to it? \n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/concepts/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/concepts/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Concepts/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Concepts\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/concepts/\">Concepts</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Concepts</h1>\n        <div class=\"lead\">What does your user need to understand about your project in order to use it - or potentially contribute to it?</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>For many projects, users may not need much information beyond the information in the <a href=\"/docs/overview/\">Overview</a>, so this section is <strong>optional</strong>. However if there are areas where your users will need a more detailed understanding of a given term or feature in order to do anything useful with your project (or to not make mistakes when using it) put that information in this section. For example, you may want to add some conceptual pages if you have a large project with many components and a complex architecture.</p>\n<p>Remember to focus on what the user needs to know, not just what you think is interesting about your project! If they don’t need to understand your original design decisions to use or contribute to the project, don’t put them in, or include your design docs in your repo and link to them. Similarly, most users will probably need to know more about how features work when in use rather than how they are implemented. Consider a separate architecture page for more detailed implementation and system design information that potential project contributors can consult.</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\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</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/concepts/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Concepts</title>\n    <link>/docs/concepts/</link>\n    <description>Recent content in Concepts on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    \n\t  <atom:link href=\"/docs/concepts/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/contribution-guidelines/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/contribution-guidelines/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Contribution Guidelines | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Contribution Guidelines\" />\n<meta property=\"og:description\" content=\"How to contribute to the docs\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/contribution-guidelines/\" />\n<meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Contribution Guidelines\">\n<meta itemprop=\"description\" content=\"How to contribute to the docs\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Contribution Guidelines\"/>\n<meta name=\"twitter:description\" content=\"How to contribute to the docs\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/contribution-guidelines/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/contribution-guidelines/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Contribution%20guidelines/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Contribution%20Guidelines\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#quick-start-with-netlify\">Quick start with Netlify</a></li>\n    <li><a href=\"#updating-a-single-page\">Updating a single page</a></li>\n    <li><a href=\"#previewing-your-changes-locally\">Previewing your changes locally</a></li>\n    <li><a href=\"#creating-an-issue\">Creating an issue</a></li>\n    <li><a href=\"#useful-resources\">Useful resources</a></li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/contribution-guidelines/\">Contribution Guidelines</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Contribution Guidelines</h1>\n        <div class=\"lead\">How to contribute to the docs</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>These basic sample guidelines assume that your Docsy site is deployed using Netlify and your files are stored in GitHub. You can use the guidelines &ldquo;as is&rdquo; or adapt them with your own instructions: for example, other deployment options, information about your doc project's file structure, project-specific review guidelines, versioning guidelines, or any other information your users might find useful when updating your site. <a href=\"https://github.com/kubeflow/website/blob/master/README.md\">Kubeflow</a> has a great example.</p>\n<p>Don't forget to link to your own doc repo rather than our example site! Also make sure users can find these guidelines from your doc repo README: either add them there and link to them from this page, add them here and link to them from the README, or include them in both locations.</p>\n\n</div>\n\n<p>We use <a href=\"https://gohugo.io/\">Hugo</a> to format and generate our website, the\n<a href=\"https://github.com/google/docsy\">Docsy</a> theme for styling and site structure,\nand <a href=\"https://www.netlify.com/\">Netlify</a> to manage the deployment of the site.\nHugo is an open-source static site generator that provides us with templates,\ncontent organisation in a standard directory structure, and a website generation\nengine. You write the pages in Markdown (or HTML if you want), and Hugo wraps them up into a website.</p>\n<p>All submissions, including submissions by project members, require review. We\nuse GitHub pull requests for this purpose. Consult\n<a href=\"https://help.github.com/articles/about-pull-requests/\">GitHub Help</a> for more\ninformation on using pull requests.</p>\n<h2 id=\"quick-start-with-netlify\">Quick start with Netlify</h2>\n<p>Here's a quick guide to updating the docs. It assumes you're familiar with the\nGitHub workflow and you're happy to use the automated preview of your doc\nupdates:</p>\n<ol>\n<li>Fork the <a href=\"https://github.com/google/docsy-example\">Goldydocs repo</a> on GitHub.</li>\n<li>Make your changes and send a pull request (PR).</li>\n<li>If you're not yet ready for a review, add &ldquo;WIP&rdquo; to the PR name to indicate\nit's a work in progress. (<strong>Don't</strong> add the Hugo property\n&ldquo;draft = true&rdquo; to the page front matter, because that prevents the\nauto-deployment of the content preview described in the next point.)</li>\n<li>Wait for the automated PR workflow to do some checks. When it's ready,\nyou should see a comment like this: <strong>deploy/netlify — Deploy preview ready!</strong></li>\n<li>Click <strong>Details</strong> to the right of &ldquo;Deploy preview ready&rdquo; to see a preview\nof your updates.</li>\n<li>Continue updating your doc and pushing your changes until you're happy with\nthe content.</li>\n<li>When you're ready for a review, add a comment to the PR, and remove any\n&ldquo;WIP&rdquo; markers.</li>\n</ol>\n<h2 id=\"updating-a-single-page\">Updating a single page</h2>\n<p>If you've just spotted something you'd like to change while using the docs, Docsy has a shortcut for you:</p>\n<ol>\n<li>Click <strong>Edit this page</strong> in the top right hand corner of the page.</li>\n<li>If you don't already have an up to date fork of the project repo, you are prompted to get one - click <strong>Fork this repository and propose changes</strong> or <strong>Update your Fork</strong> to get an up to date version of the project to edit. The appropriate page in your fork is displayed in edit mode.</li>\n<li>Follow the rest of the <a href=\"#quick-start-with-netlify\">Quick start with Netlify</a> process above to make, preview, and propose your changes.</li>\n</ol>\n<h2 id=\"previewing-your-changes-locally\">Previewing your changes locally</h2>\n<p>If you want to run your own local Hugo server to preview your changes as you work:</p>\n<ol>\n<li>\n<p>Follow the instructions in <a href=\"/docs/getting-started\">Getting started</a> to install Hugo and any other tools you need. You'll need at least <strong>Hugo version 0.45</strong> (we recommend using the most recent available version), and it must be the <strong>extended</strong> version, which supports SCSS.</p>\n</li>\n<li>\n<p>Fork the <a href=\"https://github.com/google/docsy-example\">Goldydocs repo</a> repo into your own project, then create a local copy using <code>git clone</code>. Don’t forget to use <code>--recurse-submodules</code> or you won’t pull down some of the code you need to generate a working site.</p>\n<pre><code>git clone --recurse-submodules --depth 1 https://github.com/google/docsy-example.git\n</code></pre></li>\n<li>\n<p>Run <code>hugo server</code> in the site root directory. By default your site will be available at http://localhost:1313/. Now that you're serving your site locally, Hugo will watch for changes to the content and automatically refresh your site.</p>\n</li>\n<li>\n<p>Continue with the usual GitHub workflow to edit files, commit them, push the\nchanges up to your fork, and create a pull request.</p>\n</li>\n</ol>\n<h2 id=\"creating-an-issue\">Creating an issue</h2>\n<p>If you've found a problem in the docs, but you're not sure how to fix it yourself, please create an issue in the <a href=\"https://github.com/google/docsy-example/issues\">Goldydocs repo</a>. You can also create an issue about a specific page by clicking the <strong>Create Issue</strong> button in the top right hand corner of the page.</p>\n<h2 id=\"useful-resources\">Useful resources</h2>\n<ul>\n<li>[Docsy user guide](wherever it goes): All about Docsy, including how it manages navigation, look and feel, and multi-language support.</li>\n<li><a href=\"https://gohugo.io/documentation/\">Hugo documentation</a>: Comprehensive reference for Hugo.</li>\n<li><a href=\"https://guides.github.com/activities/hello-world/\">Github Hello World!</a>: A basic introduction to GitHub concepts and workflow.</li>\n</ul>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\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</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/contribution-guidelines/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Contribution Guidelines</title>\n    <link>/docs/contribution-guidelines/</link>\n    <description>Recent content in Contribution Guidelines on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    \n\t  <atom:link href=\"/docs/contribution-guidelines/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/examples/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/examples/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Examples | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Examples\" />\n<meta property=\"og:description\" content=\"See your project in action!\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/examples/\" />\n<meta property=\"og:updated_time\" content=\"2017-01-05T00:00:00+00:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Examples\">\n<meta itemprop=\"description\" content=\"See your project in action!\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Examples\"/>\n<meta name=\"twitter:description\" content=\"See your project in action!\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/examples/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/examples/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Examples/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Examples\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/examples/\">Examples</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Examples</h1>\n        <div class=\"lead\">See your project in action!</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>Do you have any example <strong>applications</strong> or <strong>code</strong> for your users in your repo or elsewhere? Link to your examples here.</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\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</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/examples/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Examples</title>\n    <link>/docs/examples/</link>\n    <description>Recent content in Examples on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    <lastBuildDate>Thu, 05 Jan 2017 00:00:00 +0000</lastBuildDate>\n    \n\t  <atom:link href=\"/docs/examples/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/getting-started/example-page/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Example Page | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Example Page\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/getting-started/example-page/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Example Page\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Example Page\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/getting-started/example-page/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/getting-started/example-page/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Getting%20started/example-page.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Example%20Page\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/getting-started/\">Getting Started</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/getting-started/example-page/\">Example Page</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Example Page</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/getting-started/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/getting-started/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Getting Started | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Getting Started\" />\n<meta property=\"og:description\" content=\"What does your user need to know to try your project?\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/getting-started/\" />\n<meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Getting Started\">\n<meta itemprop=\"description\" content=\"What does your user need to know to try your project?\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Getting Started\"/>\n<meta name=\"twitter:description\" content=\"What does your user need to know to try your project?\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/getting-started/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/getting-started/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Getting%20started/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Getting%20Started\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#prerequisites\">Prerequisites</a></li>\n    <li><a href=\"#installation\">Installation</a></li>\n    <li><a href=\"#setup\">Setup</a></li>\n    <li><a href=\"#try-it-out\">Try it out!</a></li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/getting-started/\">Getting Started</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Getting Started</h1>\n        <div class=\"lead\">What does your user need to know to try your project?</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>Information in this section helps your user try your project themselves.</p>\n<ul>\n<li>\n<p>What do your users need to do to start using your project? This could include downloading/installation instructions, including any prerequisites or system requirements.</p>\n</li>\n<li>\n<p>Introductory “Hello World” example, if appropriate. More complex tutorials should live in the Tutorials section.</p>\n</li>\n</ul>\n<p>Consider using the headings below for your getting started page. You can delete any that are not applicable to your project.</p>\n<h2 id=\"prerequisites\">Prerequisites</h2>\n<p>Are there any system requirements for using your project? What languages are supported (if any)? Do users need to already have any software or tools installed?</p>\n<h2 id=\"installation\">Installation</h2>\n<p>Where can your user find your project code? How can they install it (binaries, installable package, build from source)? Are there multiple options/versions they can install and how should they choose the right one for them?</p>\n<h2 id=\"setup\">Setup</h2>\n<p>Is there any initial setup users need to do after installation to try your project?</p>\n<h2 id=\"try-it-out\">Try it out!</h2>\n<p>Can your users test their installation, for example by running a commmand or deploying a Hello World example?</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\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                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/getting-started/example-page/\">Example Page</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n    \n</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/getting-started/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Getting Started</title>\n    <link>/docs/getting-started/</link>\n    <description>Recent content in Getting Started on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    \n\t  <atom:link href=\"/docs/getting-started/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n    <item>\n      <title>Docs: Example Page</title>\n      <link>/docs/getting-started/example-page/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/getting-started/example-page/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>文档 | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"文档\" />\n<meta property=\"og:description\" content=\"OpsAny运维平台\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/\" />\n<meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"文档\">\n<meta itemprop=\"description\" content=\"OpsAny运维平台\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"文档\"/>\n<meta name=\"twitter:description\" content=\"OpsAny运维平台\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=%e6%96%87%e6%a1%a3\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>文档</h1>\n        \n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>This section is where the user documentation for your project lives - all the information your users need to understand and successfully use your project.</p>\n<p>For large documentation sets we recommend adding content under the headings in this section, though if some or all of them don’t apply to your project feel free to remove them or add your own. You can see an example of a smaller Docsy documentation site in the <a href=\"https://docsy.dev/docs/\">Docsy User Guide</a>, which lives in the <a href=\"https://github.com/google/docsy/tree/master/userguide\">Docsy theme repo</a> if you'd like to copy its docs section.</p>\n<p>Other content such as marketing material, case studies, and community updates should live in the <a href=\"/about/\">About</a> and <a href=\"/community/\">Community</a> pages.</p>\n<p>Find out how to use the Docsy theme in the <a href=\"https://docsy.dev/docs/\">Docsy User Guide</a>. You can learn more about how to organize your documentation (and how we organized this site) in <a href=\"https://docsy.dev/docs/best-practices/organizing-content/\">Organizing Your Content</a>.</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/overview/\">Overview</a>\n                    </h5>\n                    <p>Here's where your user finds out if your project is for them.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/getting-started/\">Getting Started</a>\n                    </h5>\n                    <p>What does your user need to know to try your project?</p>\n                </div>\n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/examples/\">Examples</a>\n                    </h5>\n                    <p>See your project in action!</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/concepts/\">Concepts</a>\n                    </h5>\n                    <p>What does your user need to understand about your project in order to use it - or potentially contribute to it?</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/\">Core Tasks</a>\n                    </h5>\n                    <p>What can your user do with your project?</p>\n                </div>\n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tutorials/\">Tutorials</a>\n                    </h5>\n                    <p>Show your user how to work through some end to end examples.</p>\n                </div>\n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/reference/\">Reference</a>\n                    </h5>\n                    <p>Low level reference docs for your project.</p>\n                </div>\n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/contribution-guidelines/\">Contribution Guidelines</a>\n                    </h5>\n                    <p>How to contribute to the docs</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n    \n</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c2158750955250161ff6e7261bc7b5b4c7fd64a9\">Update _index.md (c215875)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – 文档</title>\n    <link>/docs/</link>\n    <description>Recent content in 文档 on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    \n\t  <atom:link href=\"/docs/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n    <item>\n      <title>Docs: Bed and Chair Metrics</title>\n      <link>/docs/tasks/beds/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/beds/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Configuring Ponycopters</title>\n      <link>/docs/tasks/ponycopters/configuring-ponycopters/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/ponycopters/configuring-ponycopters/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Launching Ponycopters</title>\n      <link>/docs/tasks/ponycopters/launching-ponycopters/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/ponycopters/launching-ponycopters/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Multi-Bear Domicile Setup</title>\n      <link>/docs/tutorials/multi-bear/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tutorials/multi-bear/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Porridge Assessment</title>\n      <link>/docs/tasks/porridge/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/porridge/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Another Task</title>\n      <link>/docs/tasks/task/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/task/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Another Tutorial</title>\n      <link>/docs/tutorials/tutorial2/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tutorials/tutorial2/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Example Page</title>\n      <link>/docs/getting-started/example-page/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/getting-started/example-page/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Parameter Reference</title>\n      <link>/docs/reference/parameter-reference/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/reference/parameter-reference/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n\n      </description>\n    </item>\n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/overview/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/overview/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Overview | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Overview\" />\n<meta property=\"og:description\" content=\"Here&#39;s where your user finds out if your project is for them.\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/overview/\" />\n<meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Overview\">\n<meta itemprop=\"description\" content=\"Here&#39;s where your user finds out if your project is for them.\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Overview\"/>\n<meta name=\"twitter:description\" content=\"Here&#39;s where your user finds out if your project is for them.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/overview/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/overview/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Overview/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Overview\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#what-is-it\">What is it?</a></li>\n    <li><a href=\"#why-do-i-want-it\">Why do I want it?</a></li>\n    <li><a href=\"#where-should-i-go-next\">Where should I go next?</a></li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/overview/\">Overview</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Overview</h1>\n        <div class=\"lead\">Here's where your user finds out if your project is for them.</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>The Overview is where your users find out about your project. Depending on the size of your docset, you can have a separate overview page (like this one) or put your overview contents in the Documentation landing page (like in the Docsy User Guide).</p>\n<p>Try answering these questions for your user in this page:</p>\n<h2 id=\"what-is-it\">What is it?</h2>\n<p>Introduce your project, including what it does or lets you do, why you would use it, and its primary goal (and how it achieves it). This should be similar to your README description, though you can go into a little more detail here if you want.</p>\n<h2 id=\"why-do-i-want-it\">Why do I want it?</h2>\n<p>Help your user know if your project will help them. Useful information can include:</p>\n<ul>\n<li>\n<p><strong>What is it good for?</strong>: What types of problems does your project solve? What are the benefits of using it?</p>\n</li>\n<li>\n<p><strong>What is it not good for?</strong>: For example, point out situations that might intuitively seem suited for your project, but aren't for some reason. Also mention known limitations, scaling issues, or anything else that might let your users know if the project is not for them.</p>\n</li>\n<li>\n<p><strong>What is it <em>not yet</em> good for?</strong>: Highlight any useful features that are coming soon.</p>\n</li>\n</ul>\n<h2 id=\"where-should-i-go-next\">Where should I go next?</h2>\n<p>Give your users next steps from the Overview. For example:</p>\n<ul>\n<li><a href=\"/getting-started/\">Getting Started</a>: Get started with $project</li>\n<li><a href=\"/examples/\">Examples</a>: Check out some example code!</li>\n</ul>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\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</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/overview/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Overview</title>\n    <link>/docs/overview/</link>\n    <description>Recent content in Overview on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    \n\t  <atom:link href=\"/docs/overview/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/reference/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/reference/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Reference | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Reference\" />\n<meta property=\"og:description\" content=\"Low level reference docs for your project.\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/reference/\" />\n<meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Reference\">\n<meta itemprop=\"description\" content=\"Low level reference docs for your project.\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Reference\"/>\n<meta name=\"twitter:description\" content=\"Low level reference docs for your project.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/reference/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/reference/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Reference/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Reference\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/reference/\">Reference</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Reference</h1>\n        <div class=\"lead\">Low level reference docs for your project.</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>If your project has an API, configuration, or other reference - anything that users need to look up that’s at an even lower level than a single task - put (or link to it) here. You can serve and link to generated reference docs created using Doxygen,\nJavadoc, or other doc generation tools by putting them in your <code>static/</code> directory. Find out more in <a href=\"https://docsy.dev/docs/adding-content/content/#adding-static-content\">Adding static content</a>. For OpenAPI reference, Docsy also provides a <a href=\"https://www.docsy.dev/docs/adding-content/shortcodes/#swaggerui\">Swagger UI layout and shortcode</a> that renders <a href=\"https://swagger.io/tools/swagger-ui/\">Swagger UI</a> using any OpenAPI YAML or JSON file as source.</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\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                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n    \n</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/reference/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Reference</title>\n    <link>/docs/reference/</link>\n    <description>Recent content in Reference on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    \n\t  <atom:link href=\"/docs/reference/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n    <item>\n      <title>Docs: Parameter Reference</title>\n      <link>/docs/reference/parameter-reference/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/reference/parameter-reference/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n\n      </description>\n    </item>\n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/reference/parameter-reference/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Parameter Reference | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Parameter Reference\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/reference/parameter-reference/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Parameter Reference\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1091\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Parameter Reference\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/reference/parameter-reference/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/reference/parameter-reference/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Reference/parameter-reference.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Parameter%20Reference\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a></li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/reference/\">Reference</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Parameter Reference</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/beds/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Bed and Chair Metrics | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Bed and Chair Metrics\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tasks/beds/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Bed and Chair Metrics\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Bed and Chair Metrics\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/beds/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/beds/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/beds.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Bed%20and%20Chair%20Metrics\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Bed and Chair Metrics</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/tasks/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Core Tasks | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Core Tasks\" />\n<meta property=\"og:description\" content=\"What can your user do with your project?\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/tasks/\" />\n<meta property=\"og:updated_time\" content=\"2017-01-05T00:00:00+00:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Core Tasks\">\n<meta itemprop=\"description\" content=\"What can your user do with your project?\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Core Tasks\"/>\n<meta name=\"twitter:description\" content=\"What can your user do with your project?\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Core%20Tasks\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Core Tasks</h1>\n        <div class=\"lead\">What can your user do with your project?</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>Think about your project’s features and use cases. Use these to choose your core tasks. Each granular use case (enable x, configure y) should have a corresponding tasks page or tasks page section. Users should be able to quickly refer to your core tasks when they need to find out how to do one specific thing, rather than having to look for the instructions in a bigger tutorial or example. Think of your tasks pages as a cookbook with different procedures your users can combine to create something more substantial.</p>\n<p>You can give each task a page, or you can group related tasks together in a page, such as tasks related to a particular feature. As well as grouping related tasks in single pages, you can also group task pages in nested folders with an index page as an overview, as seen in this example site. Or if you have a small docset like the <a href=\"https://docsy.dev/docs/\">Docsy User Guide</a> with no Tutorials or Concepts pages, consider adding your feature-specific pages at the top level of your docs rather than in a Tasks section.</p>\n<p>Each task should give the user</p>\n<ul>\n<li>The prerequisites for this task, if any (this can be specified at the top of a multi-task page if they're the same for all the page's tasks. &ldquo;All these tasks assume that you understand&hellip;.and that you have already&hellip;.&quot;).</li>\n<li>What this task accomplishes.</li>\n<li>Instructions for the task. If it involves editing a file, running a command, or writing code, provide code-formatted example snippets to show the user what to do! If there are multiple steps, provide them as a numbered list.</li>\n<li>If appropriate, links to related concept, tutorial, or example pages.</li>\n</ul>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/task/\">Another Task</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/ponycopters/\">Working with Ponycopters</a>\n                    </h5>\n                    <p>A short lead descripton about this section page. Text here can also be <strong>bold</strong> or <em>italic</em> and can even be split over multiple paragraphs.</p>\n                </div>\n            \n        \n    \n</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Core Tasks</title>\n    <link>/docs/tasks/</link>\n    <description>Recent content in Core Tasks on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    <lastBuildDate>Thu, 05 Jan 2017 00:00:00 +0000</lastBuildDate>\n    \n\t  <atom:link href=\"/docs/tasks/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n    <item>\n      <title>Docs: Bed and Chair Metrics</title>\n      <link>/docs/tasks/beds/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/beds/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Porridge Assessment</title>\n      <link>/docs/tasks/porridge/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/porridge/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Another Task</title>\n      <link>/docs/tasks/task/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/task/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Working with Ponycopters</title>\n      <link>/docs/tasks/ponycopters/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/ponycopters/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;This is the section landing page.&lt;/p&gt;\n\n      </description>\n    </item>\n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/tasks/ponycopters/configuring-ponycopters/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Configuring Ponycopters | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Configuring Ponycopters\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tasks/ponycopters/configuring-ponycopters/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Configuring Ponycopters\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Configuring Ponycopters\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/ponycopters/configuring-ponycopters/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/ponycopters/configuring-ponycopters/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/Ponycopters/configuring-ponycopters.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Configuring%20Ponycopters\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/ponycopters/\">Working with Ponycopters</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Configuring Ponycopters</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/ponycopters/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/tasks/ponycopters/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Working with Ponycopters | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Working with Ponycopters\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this section page. Text here can also be **bold** or _italic_ and can even be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/tasks/ponycopters/\" />\n<meta property=\"og:updated_time\" content=\"2017-01-05T00:00:00+00:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Working with Ponycopters\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this section page. Text here can also be **bold** or _italic_ and can even be split over multiple paragraphs.\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Working with Ponycopters\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this section page. Text here can also be **bold** or _italic_ and can even be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/ponycopters/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/ponycopters/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/Ponycopters/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Working%20with%20Ponycopters\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/ponycopters/\">Working with Ponycopters</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Working with Ponycopters</h1>\n        <div class=\"lead\">A short lead descripton about this section page. Text here can also be <strong>bold</strong> or <em>italic</em> and can even be split over multiple paragraphs.</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>This is the section landing page.</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\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</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/ponycopters/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Working with Ponycopters</title>\n    <link>/docs/tasks/ponycopters/</link>\n    <description>Recent content in Working with Ponycopters on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    <lastBuildDate>Thu, 05 Jan 2017 00:00:00 +0000</lastBuildDate>\n    \n\t  <atom:link href=\"/docs/tasks/ponycopters/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n    <item>\n      <title>Docs: Configuring Ponycopters</title>\n      <link>/docs/tasks/ponycopters/configuring-ponycopters/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/ponycopters/configuring-ponycopters/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Launching Ponycopters</title>\n      <link>/docs/tasks/ponycopters/launching-ponycopters/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tasks/ponycopters/launching-ponycopters/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/tasks/ponycopters/launching-ponycopters/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Launching Ponycopters | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Launching Ponycopters\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tasks/ponycopters/launching-ponycopters/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Launching Ponycopters\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Launching Ponycopters\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/ponycopters/launching-ponycopters/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/ponycopters/launching-ponycopters/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/Ponycopters/launching-ponycopters.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Launching%20Ponycopters\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/ponycopters/\">Working with Ponycopters</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Launching Ponycopters</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/porridge/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Porridge Assessment | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Porridge Assessment\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tasks/porridge/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Porridge Assessment\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Porridge Assessment\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/porridge/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/porridge/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/porridge.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Porridge%20Assessment\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Porridge Assessment</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tasks/task/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Another Task | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Another Task\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tasks/task/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Another Task\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Another Task\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/task/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tasks/task/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tasks/task.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Another%20Task\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tasks/\">Core Tasks</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tasks/task/\">Another Task</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Another Task</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tutorials/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n<link rel=\"alternate\" type=\"application/rss&#43;xml\" href=\"/docs/tutorials/index.xml\">\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Tutorials | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Tutorials\" />\n<meta property=\"og:description\" content=\"Show your user how to work through some end to end examples.\n\" />\n<meta property=\"og:type\" content=\"website\" />\n<meta property=\"og:url\" content=\"/docs/tutorials/\" />\n<meta property=\"og:updated_time\" content=\"2017-01-04T00:00:00+00:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Tutorials\">\n<meta itemprop=\"description\" content=\"Show your user how to work through some end to end examples.\n\"><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Tutorials\"/>\n<meta name=\"twitter:description\" content=\"Show your user how to work through some end to end examples.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-section\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tutorials/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tutorials/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tutorials/_index.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Tutorials\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tutorials/\">Tutorials</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Tutorials</h1>\n        <div class=\"lead\">Show your user how to work through some end to end examples.</div>\n\t\n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page that shows you how to use this template site.</p>\n\n</div>\n\n<p>Tutorials are <strong>complete worked examples</strong> made up of <strong>multiple tasks</strong> that guide the user through a relatively simple but realistic scenario: building an application that uses some of your project’s features, for example. If you have already created some Examples for your project you can base Tutorials on them. This section is <strong>optional</strong>. However, remember that although you may not need this section at first, having tutorials can be useful to help your users engage with your example code, especially if there are aspects that need more explanation than you can easily provide in code comments.</p>\n\n        <div class=\"section-index\">\n    \n    \n    \n    \n    <hr class=\"panel-line\">\n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n        \n            \n                <div class=\"entry\">\n                    <h5>\n                        <a href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n                    </h5>\n                    <p>A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</p>\n                </div>\n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n            \n        \n    \n</div>\n\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tutorials/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>OpsAny技术运营平台 – Tutorials</title>\n    <link>/docs/tutorials/</link>\n    <description>Recent content in Tutorials on OpsAny技术运营平台</description>\n    <generator>Hugo -- gohugo.io</generator>\n    <lastBuildDate>Wed, 04 Jan 2017 00:00:00 +0000</lastBuildDate>\n    \n\t  <atom:link href=\"/docs/tutorials/index.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    \n    \n      \n        \n      \n    \n    \n    <item>\n      <title>Docs: Multi-Bear Domicile Setup</title>\n      <link>/docs/tutorials/multi-bear/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tutorials/multi-bear/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n    <item>\n      <title>Docs: Another Tutorial</title>\n      <link>/docs/tutorials/tutorial2/</link>\n      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>\n      \n      <guid>/docs/tutorials/tutorial2/</guid>\n      <description>\n        \n        \n        \n\n&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;\n&lt;p&gt;This is a placeholder page. Replace it with your own content.&lt;/p&gt;\n\n&lt;/div&gt;\n\n&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href=&#34;https://gohugo.io&#34;&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;\n&lt;p&gt;There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.&lt;/p&gt;\n&lt;p&gt;90&#39;s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps &lt;strong&gt;kale chips&lt;/strong&gt;.&lt;/p&gt;\n&lt;blockquote&gt;\n&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;\n&lt;p&gt;Blockquotes should be a lighter gray with a border along the left side in the secondary color.&lt;/p&gt;\n&lt;p&gt;There should be no margin below this final sentence.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h2 id=&#34;first-header-2&#34;&gt;First Header 2&lt;/h2&gt;\n&lt;p&gt;This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier &lt;strong&gt;craft beer&lt;/strong&gt;. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven&#39;t heard of them copper mug, crucifix green juice vape &lt;em&gt;single-origin coffee&lt;/em&gt; brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!&lt;/p&gt;\n&lt;p&gt;Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.&lt;/p&gt;\n&lt;p&gt;On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.&lt;/p&gt;\n&lt;p&gt;Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;amp;B. &lt;strong&gt;I love this life we live in&lt;/strong&gt;.&lt;/p&gt;\n&lt;h2 id=&#34;second-header-2&#34;&gt;Second Header 2&lt;/h2&gt;\n&lt;blockquote&gt;\n&lt;p&gt;This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;/blockquote&gt;\n&lt;h3 id=&#34;header-3&#34;&gt;Header 3&lt;/h3&gt;\n&lt;pre&gt;&lt;code&gt;This is a code block following a header.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next level leggings before they sold out, PBR&amp;amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.&lt;/p&gt;\n&lt;h4 id=&#34;header-4&#34;&gt;Header 4&lt;/h4&gt;\n&lt;ul&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an unordered list following a header.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;h5 id=&#34;header-5&#34;&gt;Header 5&lt;/h5&gt;\n&lt;ol&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;li&gt;This is an ordered list following a header.&lt;/li&gt;\n&lt;/ol&gt;\n&lt;h6 id=&#34;header-6&#34;&gt;Header 6&lt;/h6&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;What&lt;/th&gt;\n&lt;th&gt;Follows&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;A table&lt;/td&gt;\n&lt;td&gt;A header&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;There&#39;s a horizontal rule above and below this.&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;Here is an unordered list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Liverpool F.C.&lt;/li&gt;\n&lt;li&gt;Chelsea F.C.&lt;/li&gt;\n&lt;li&gt;Manchester United F.C.&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And an ordered list:&lt;/p&gt;\n&lt;ol&gt;\n&lt;li&gt;Michael Brecker&lt;/li&gt;\n&lt;li&gt;Seamus Blake&lt;/li&gt;\n&lt;li&gt;Branford Marsalis&lt;/li&gt;\n&lt;/ol&gt;\n&lt;p&gt;And an unordered task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Create a Hugo theme&lt;/li&gt;\n&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Add task lists to it&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Take a vacation&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a &amp;ldquo;mixed&amp;rdquo; task list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Pack bags&lt;/li&gt;\n&lt;li&gt;?&lt;/li&gt;\n&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt;Travel!&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;And a nested list:&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Jackson 5\n&lt;ul&gt;\n&lt;li&gt;Michael&lt;/li&gt;\n&lt;li&gt;Tito&lt;/li&gt;\n&lt;li&gt;Jackie&lt;/li&gt;\n&lt;li&gt;Marlon&lt;/li&gt;\n&lt;li&gt;Jermaine&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;li&gt;TMNT\n&lt;ul&gt;\n&lt;li&gt;Leonardo&lt;/li&gt;\n&lt;li&gt;Michelangelo&lt;/li&gt;\n&lt;li&gt;Donatello&lt;/li&gt;\n&lt;li&gt;Raphael&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n&lt;p&gt;Definition lists can be used with Markdown syntax. Definition headers are bold.&lt;/p&gt;\n&lt;dl&gt;\n&lt;dt&gt;Name&lt;/dt&gt;\n&lt;dd&gt;Godzilla&lt;/dd&gt;\n&lt;dt&gt;Born&lt;/dt&gt;\n&lt;dd&gt;1952&lt;/dd&gt;\n&lt;dt&gt;Birthplace&lt;/dt&gt;\n&lt;dd&gt;Japan&lt;/dd&gt;\n&lt;dt&gt;Color&lt;/dt&gt;\n&lt;dd&gt;Green&lt;/dd&gt;\n&lt;/dl&gt;\n&lt;hr&gt;\n&lt;p&gt;Tables should have bold headings and alternating shaded rows.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;p&gt;If a table is too wide, it should scroll horizontally.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Artist&lt;/th&gt;\n&lt;th&gt;Album&lt;/th&gt;\n&lt;th&gt;Year&lt;/th&gt;\n&lt;th&gt;Label&lt;/th&gt;\n&lt;th&gt;Awards&lt;/th&gt;\n&lt;th&gt;Songs&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Michael Jackson&lt;/td&gt;\n&lt;td&gt;Thriller&lt;/td&gt;\n&lt;td&gt;1982&lt;/td&gt;\n&lt;td&gt;Epic Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical&lt;/td&gt;\n&lt;td&gt;Wanna Be Startin&amp;rsquo; Somethin&amp;rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Prince&lt;/td&gt;\n&lt;td&gt;Purple Rain&lt;/td&gt;\n&lt;td&gt;1984&lt;/td&gt;\n&lt;td&gt;Warner Brothers Records&lt;/td&gt;\n&lt;td&gt;Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal&lt;/td&gt;\n&lt;td&gt;Let&#39;s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I&#39;m a Star, Purple Rain&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Beastie Boys&lt;/td&gt;\n&lt;td&gt;License to Ill&lt;/td&gt;\n&lt;td&gt;1986&lt;/td&gt;\n&lt;td&gt;Mercury Records&lt;/td&gt;\n&lt;td&gt;noawardsbutthistablecelliswide&lt;/td&gt;\n&lt;td&gt;Rhymin &amp;amp; Stealin, The New Style, She&#39;s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Code snippets like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; can be shown inline.&lt;/p&gt;\n&lt;p&gt;Also, &lt;code&gt;this should vertically align&lt;/code&gt; &lt;del&gt;&lt;code&gt;with this&lt;/code&gt;&lt;/del&gt; &lt;del&gt;and this&lt;/del&gt;.&lt;/p&gt;\n&lt;p&gt;Code can also be shown in a block element.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;foo := &amp;quot;bar&amp;quot;;\nbar := &amp;quot;foo&amp;quot;;\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Code can also use syntax highlighting.&lt;/p&gt;\n&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;var foo = &amp;#34;bar&amp;#34;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lexer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tokenise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;styles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WithLineNumbers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bytes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Buffer&lt;/span&gt;\n  &lt;span style=&#34;color:#000&#34;&gt;formatter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iterator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n\n  &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;buff&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;\n&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Inline code inside table cells should still be distinguishable.&lt;/p&gt;\n&lt;table&gt;\n&lt;thead&gt;\n&lt;tr&gt;\n&lt;th&gt;Language&lt;/th&gt;\n&lt;th&gt;Code&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;Javascript&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;Ruby&lt;/td&gt;\n&lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;{&lt;/code&gt;&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;hr&gt;\n&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;\n&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;\n&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;\n&lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;\n&lt;h3 id=&#34;alerts&#34;&gt;Alerts&lt;/h3&gt;\n&lt;p&gt;\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n\nThis is an alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;\nThis is an alert with a title and &lt;strong&gt;Markdown&lt;/strong&gt;.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;\n\nThis is a successful alert.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n\nThis is a warning.\n&lt;/div&gt;\n\n\n\n&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;\n&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;\nThis is a warning with a title.\n&lt;/div&gt;\n&lt;/p&gt;\n&lt;h2 id=&#34;another-heading&#34;&gt;Another Heading&lt;/h2&gt;\n&lt;p&gt;Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.&lt;/p&gt;\n&lt;h3 id=&#34;this-document&#34;&gt;This Document&lt;/h3&gt;\n&lt;p&gt;Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam &lt;em&gt;eripitur&lt;/em&gt;? Sitim noceat signa &lt;em&gt;probat quidem&lt;/em&gt;. Sua longis &lt;em&gt;fugatis&lt;/em&gt; quidem genae.&lt;/p&gt;\n&lt;h3 id=&#34;pixel-count&#34;&gt;Pixel Count&lt;/h3&gt;\n&lt;p&gt;Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.&lt;/p&gt;\n&lt;h3 id=&#34;contact-info&#34;&gt;Contact Info&lt;/h3&gt;\n&lt;p&gt;Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.&lt;/p&gt;\n&lt;h3 id=&#34;external-links&#34;&gt;External Links&lt;/h3&gt;\n&lt;p&gt;Stumptown PBR&amp;amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.&lt;/p&gt;\n&lt;pre&gt;&lt;code&gt;This is the final element on the page and there should be no margin below this.\n&lt;/code&gt;&lt;/pre&gt;\n      </description>\n    </item>\n    \n  </channel>\n</rss>\n"
  },
  {
    "path": "paas-ce/paas/docs/tutorials/multi-bear/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Multi-Bear Domicile Setup | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Multi-Bear Domicile Setup\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tutorials/multi-bear/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Multi-Bear Domicile Setup\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Multi-Bear Domicile Setup\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tutorials/multi-bear/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tutorials/multi-bear/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tutorials/multi-bear.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Multi-Bear%20Domicile%20Setup\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tutorials/\">Tutorials</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Multi-Bear Domicile Setup</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/docs/tutorials/tutorial2/index.html",
    "content": "<!doctype html>\n<html lang=\"cn\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name=\"generator\" content=\"Hugo 0.62.1\" />\n\n<META NAME=\"ROBOTS\" CONTENT=\"INDEX, FOLLOW\">\n\n\n\n<link rel=\"shortcut icon\" href=\"/favicons/favicon.ico\" >\n<link rel=\"apple-touch-icon\" href=\"/favicons/apple-touch-icon-180x180.png\" sizes=\"180x180\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-36x36.png\" sizes=\"36x36\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-48x48.png\" sizes=\"48x48\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-72x72.png\" sizes=\"72x72\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-96x96.png\" sizes=\"96x96\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-144x144.png\" sizes=\"144x144\">\n<link rel=\"icon\" type=\"image/png\" href=\"/favicons/android-192x192.png\" sizes=\"192x192\">\n\n<meta name=\"keywords\" content=\"OpsAny,自动化运维平台,自动化运维产品,DevOps平台\" />\n<meta name=\"description\" content=\"OpsAny自动化运维平台\" />\n<title>Another Tutorial | OpsAny技术运营平台</title><meta property=\"og:title\" content=\"Another Tutorial\" />\n<meta property=\"og:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:url\" content=\"/docs/tutorials/tutorial2/\" />\n<meta property=\"article:published_time\" content=\"2017-01-05T00:00:00+00:00\" />\n<meta property=\"article:modified_time\" content=\"2020-04-15T22:04:55+08:00\" /><meta property=\"og:site_name\" content=\"OpsAny技术运营平台\" />\n<meta itemprop=\"name\" content=\"Another Tutorial\">\n<meta itemprop=\"description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\">\n<meta itemprop=\"datePublished\" content=\"2017-01-05T00:00:00&#43;00:00\" />\n<meta itemprop=\"dateModified\" content=\"2020-04-15T22:04:55&#43;08:00\" />\n<meta itemprop=\"wordCount\" content=\"1318\">\n\n\n\n<meta itemprop=\"keywords\" content=\"\" /><meta name=\"twitter:card\" content=\"summary\"/>\n<meta name=\"twitter:title\" content=\"Another Tutorial\"/>\n<meta name=\"twitter:description\" content=\"A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.\n\"/>\n\n\n<script type=\"application/javascript\">\nvar doNotTrack = false;\nif (!doNotTrack) {\n\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n\tga('create', 'UA-00000000-0', 'auto');\n\t\n\tga('send', 'pageview');\n}\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n\n\n\n\n\n\n<link rel=\"preload\" href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" as=\"style\">\n<link href=\"/scss/main.min.c0e25df8cd23cfc905cf7df3c103c620cb3dfba78f57d2b2df2e040f184fcd98.css\" rel=\"stylesheet\" integrity=\"\">\n\n\n<script\n  src=\"/js/jquery-3.3.1.min.js\"\n  integrity=\"sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=\"\n  crossorigin=\"anonymous\"></script>\n\n\n\n  </head>\n  <body class=\"td-page\">\n    <header>\n      \n<nav class=\"js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar\">\n        <a class=\"navbar-brand\" href=\"/\">\n\t\t<span class=\"navbar-logo\"><svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 500\" style=\"enable-background:new 0 0 500 500\"><g><path style=\"fill:#fff\" d=\"M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z\"/><g><g><g><path style=\"fill:#767676\" d=\"M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z\"/></g></g></g><g><g><path style=\"fill:#5b7fc0\" d=\"M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zM197.0804 232.033c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/><g><defs><path id=\"SVGID_1_\" d=\"M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z\"/></defs><clipPath id=\"SVGID_2_\"><use xlink:href=\"#SVGID_1_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_2_);fill:#fff\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_2_);fill:#020202\" d=\"M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z\"/></g><g><defs><path id=\"SVGID_3_\" d=\"M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zM197.0839 232.0372c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z\"/></defs><clipPath id=\"SVGID_4_\"><use xlink:href=\"#SVGID_3_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_4_);fill:#5b7fc0\" d=\"M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z\"/></g></g><rect x=\"198.8952\" y=\"225.1043\" style=\"fill:#5b7fc0\" width=\"122.6266\" height=\"13.8671\"/></g><g><path style=\"fill:#d95140\" d=\"M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zM197.0804 177.6188c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/><g><defs><path id=\"SVGID_5_\" d=\"M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z\"/></defs><clipPath id=\"SVGID_6_\"><use xlink:href=\"#SVGID_5_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_6_);fill:#fff\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_6_);fill:#020202\" d=\"M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z\"/></g><g><defs><path id=\"SVGID_7_\" d=\"M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zM197.0839 177.623c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z\"/></defs><clipPath id=\"SVGID_8_\"><use xlink:href=\"#SVGID_7_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_8_);fill:#d95140\" d=\"M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z\"/></g><rect x=\"198.8952\" y=\"170.69\" style=\"fill:#d95140\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#56a55c\" d=\"M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zM197.5309 286.4723c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/><g><defs><path id=\"SVGID_9_\" d=\"M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z\"/></defs><clipPath id=\"SVGID_10_\"><use xlink:href=\"#SVGID_9_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_10_);fill:#fff\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_10_);fill:#020202\" d=\"M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z\"/></g><g><defs><path id=\"SVGID_11_\" d=\"M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zM197.5344 286.4765c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z\"/></defs><clipPath id=\"SVGID_12_\"><use xlink:href=\"#SVGID_11_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_12_);fill:#56a55c\" d=\"M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z\"/></g></g><rect x=\"199.3456\" y=\"279.5436\" style=\"fill:#56a55c\" width=\"122.6266\" height=\"13.8671\"/></g><g><g><path style=\"fill:#f1bc42\" d=\"M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zM197.0804 340.5784c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z\"/><path style=\"opacity:.3;fill:#fff\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/><g><defs><path id=\"SVGID_13_\" d=\"M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z\"/></defs><clipPath id=\"SVGID_14_\"><use xlink:href=\"#SVGID_13_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_14_);fill:#fff\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/><path style=\"opacity:.13;clip-path:url(#SVGID_14_);fill:#020202\" d=\"M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z\"/></g><g><defs><path id=\"SVGID_15_\" d=\"M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zM197.0839 340.5826c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z\"/></defs><clipPath id=\"SVGID_16_\"><use xlink:href=\"#SVGID_15_\" style=\"overflow:visible\"/></clipPath><path style=\"clip-path:url(#SVGID_16_);fill:#f1bc42\" d=\"M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z\"/></g></g><rect x=\"198.8952\" y=\"333.6497\" style=\"fill:#f1bc42\" width=\"122.6266\" height=\"13.8671\"/></g></g></svg></span><span class=\"text-uppercase font-weight-bold\">OpsAny技术运营平台</span>\n\t</a>\n\t<div class=\"td-navbar-nav-scroll ml-md-auto\" id=\"main_navbar\">\n\t\t<ul class=\"navbar-nav mt-2 mt-lg-0\">\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item mr-4 mb-2 mb-lg-0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a class=\"nav-link active\" href=\"/docs/\" ><span class=\"active\">文档</span></a>\n\t\t\t</li>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<li class=\"nav-item dropdown d-none d-lg-block\">\n\t\t\t\t\n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tutorials/tutorial2/\">English</a>\n\t\n</div>\n\t\t\t</li>\n\t\t\t\n\t\t</ul>\n\t</div>\n\t<div class=\"navbar-nav d-none d-lg-block\">\n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n</div>\n</nav>\n\n    </header>\n    <div class=\"container-fluid td-outer\">\n      <div class=\"td-main\">\n        <div class=\"row flex-xl-nowrap\">\n          <div class=\"col-12 col-md-3 col-xl-2 td-sidebar d-print-none\">\n            \n\n\n\n\n<div id=\"td-sidebar-menu\" class=\"td-sidebar__inner\">\n  \n  <form class=\"td-sidebar__search d-flex align-items-center\">\n    \n<input type=\"search\" class=\"form-control td-search-input\" placeholder=\"&#xf002 \" aria-label=\"\" autocomplete=\"off\">\n\n\n    <button class=\"btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars\" type=\"button\" data-toggle=\"collapse\" data-target=\"#td-section-nav\" aria-controls=\"td-docs-nav\" aria-expanded=\"false\" aria-label=\"Toggle section navigation\">\n    </button>\n  </form>\n  \n  <nav class=\"collapse td-sidebar-nav pt-2 pl-4\" id=\"td-section-nav\">\n    \n    <div class=\"nav-item dropdown d-block d-lg-none\">\n      \n\n<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n\t简体中文\n</a>\n<div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdownMenuLink\">\n\t\n\t<a class=\"dropdown-item\" href=\"/en/docs/tutorials/tutorial2/\">English</a>\n\t\n</div>\n    </div>\n    \n    \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/\" class=\"align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section\">文档</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs\">\n      \n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/overview/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Overview</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-overview\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/getting-started/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Getting Started</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-getting-started\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-getting-started-example-page\" href=\"/docs/getting-started/example-page/\">Example Page</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/examples/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Examples</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-examples\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/concepts/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Concepts</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-concepts\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Core Tasks</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-beds\" href=\"/docs/tasks/beds/\">Bed and Chair Metrics</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-porridge\" href=\"/docs/tasks/porridge/\">Porridge Assessment</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-task\" href=\"/docs/tasks/task/\">Another Task</a>\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tasks/ponycopters/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Working with Ponycopters</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-tasks-ponycopters\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-configuring-ponycopters\" href=\"/docs/tasks/ponycopters/configuring-ponycopters/\">Configuring Ponycopters</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tasks-ponycopters-launching-ponycopters\" href=\"/docs/tasks/ponycopters/launching-ponycopters/\">Launching Ponycopters</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/tutorials/\" class=\"align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section\">Tutorials</a>\n  </li>\n  <ul>\n    <li class=\"collapse show\" id=\"docs-tutorials\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-tutorials-multi-bear\" href=\"/docs/tutorials/multi-bear/\">Multi-Bear Domicile Setup</a>\n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page  active\" id=\"m-docs-tutorials-tutorial2\" href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/reference/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Reference</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-reference\">\n      \n      \n      \n      \n      \n      \n      <a class=\"td-sidebar-link td-sidebar-link__page \" id=\"m-docs-reference-parameter-reference\" href=\"/docs/reference/parameter-reference/\">Parameter Reference</a>\n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n      \n      \n\n\n\n\n\n\n<ul class=\"td-sidebar-nav__section pr-md-3\">\n  <li class=\"td-sidebar-nav__section-title\">\n    <a  href=\"/docs/contribution-guidelines/\" class=\"align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section\">Contribution Guidelines</a>\n  </li>\n  <ul>\n    <li class=\"collapse \" id=\"docs-contribution-guidelines\">\n      \n      \n      \n    </li>\n  </ul>\n</ul>\n\n      \n      \n    </li>\n  </ul>\n</ul>\n\n  </nav>\n</div>\n\n\n\n\n          </div>\n          <div class=\"d-none d-xl-block col-xl-2 td-toc d-print-none\">\n            \n\n\n\n\n\n\n<div class=\"td-page-meta ml-2 pb-1 pt-2 mb-0\">\n\n\n\n\n\n<a href=\"https://github.com/google/docsy-example/edit/master/content/cn/docs/Tutorials/tutorial2.md\" target=\"_blank\"><i class=\"fa fa-edit fa-fw\"></i> </a>\n<a href=\"https://github.com/google/docsy-example/issues/new?title=Another%20Tutorial\" target=\"_blank\"><i class=\"fab fa-github fa-fw\"></i> </a>\n\n\n<a href=\"https://github.com/google/docsy/issues/new\" target=\"_blank\"><i class=\"fas fa-tasks fa-fw\"></i> </a>\n\n</div>\n\n\n\n\n\n\n<nav id=\"TableOfContents\">\n  <ul>\n    <li><a href=\"#first-header-2\">First Header 2</a></li>\n    <li><a href=\"#second-header-2\">Second Header 2</a>\n      <ul>\n        <li><a href=\"#header-3\">Header 3</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#components\">Components</a>\n      <ul>\n        <li><a href=\"#alerts\">Alerts</a></li>\n      </ul>\n    </li>\n    <li><a href=\"#another-heading\">Another Heading</a>\n      <ul>\n        <li><a href=\"#this-document\">This Document</a></li>\n        <li><a href=\"#pixel-count\">Pixel Count</a></li>\n        <li><a href=\"#contact-info\">Contact Info</a></li>\n        <li><a href=\"#external-links\">External Links</a></li>\n      </ul>\n    </li>\n  </ul>\n</nav>\n\n\n\n          </div>\n          <main class=\"col-12 col-md-9 col-xl-8 pl-md-5\" role=\"main\">\n            \n  \n\n            <nav aria-label=\"breadcrumb\" class=\"d-none d-md-block d-print-none\">\n\t<ol class=\"breadcrumb spb-1\">\n\t\t\n\n\n\n\n\n\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/\">文档</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item\" >\n\t<a href=\"/docs/tutorials/\">Tutorials</a>\n</li>\n\n\n\n\n<li class=\"breadcrumb-item active\" aria-current=\"page\">\n\t<a href=\"/docs/tutorials/tutorial2/\">Another Tutorial</a>\n</li>\n\n\t</ol>\n</nav\t>\n\n            \n<div class=\"td-content\">\n\t<h1>Another Tutorial</h1>\n    <div class=\"lead\">A short lead descripton about this content page. It can be <strong>bold</strong> or <em>italic</em> and can be split over multiple paragraphs.</div>\n\t       \n\t\n\n<div class=\"pageinfo pageinfo-primary\">\n<p>This is a placeholder page. Replace it with your own content.</p>\n\n</div>\n\n<p>Text can be <strong>bold</strong>, <em>italic</em>, or <del>strikethrough</del>. <a href=\"https://gohugo.io\">Links</a> should be blue with no underlines (unless hovered over).</p>\n<p>There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.</p>\n<p>90's four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps <strong>kale chips</strong>.</p>\n<blockquote>\n<p>There should be no margin above this first sentence.</p>\n<p>Blockquotes should be a lighter gray with a border along the left side in the secondary color.</p>\n<p>There should be no margin below this final sentence.</p>\n</blockquote>\n<h2 id=\"first-header-2\">First Header 2</h2>\n<p>This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier <strong>craft beer</strong>. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven't heard of them copper mug, crucifix green juice vape <em>single-origin coffee</em> brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!</p>\n<p>Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.</p>\n<p>On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.</p>\n<p>Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&amp;B. <strong>I love this life we live in</strong>.</p>\n<h2 id=\"second-header-2\">Second Header 2</h2>\n<blockquote>\n<p>This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n</blockquote>\n<h3 id=\"header-3\">Header 3</h3>\n<pre><code>This is a code block following a header.\n</code></pre><p>Next level leggings before they sold out, PBR&amp;B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.</p>\n<h4 id=\"header-4\">Header 4</h4>\n<ul>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n<li>This is an unordered list following a header.</li>\n</ul>\n<h5 id=\"header-5\">Header 5</h5>\n<ol>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n<li>This is an ordered list following a header.</li>\n</ol>\n<h6 id=\"header-6\">Header 6</h6>\n<table>\n<thead>\n<tr>\n<th>What</th>\n<th>Follows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n<tr>\n<td>A table</td>\n<td>A header</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>There's a horizontal rule above and below this.</p>\n<hr>\n<p>Here is an unordered list:</p>\n<ul>\n<li>Liverpool F.C.</li>\n<li>Chelsea F.C.</li>\n<li>Manchester United F.C.</li>\n</ul>\n<p>And an ordered list:</p>\n<ol>\n<li>Michael Brecker</li>\n<li>Seamus Blake</li>\n<li>Branford Marsalis</li>\n</ol>\n<p>And an unordered task list:</p>\n<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Create a Hugo theme</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\">Add task lists to it</li>\n<li><input disabled=\"\" type=\"checkbox\">Take a vacation</li>\n</ul>\n<p>And a &ldquo;mixed&rdquo; task list:</p>\n<ul>\n<li><input disabled=\"\" type=\"checkbox\">Pack bags</li>\n<li>?</li>\n<li><input disabled=\"\" type=\"checkbox\">Travel!</li>\n</ul>\n<p>And a nested list:</p>\n<ul>\n<li>Jackson 5\n<ul>\n<li>Michael</li>\n<li>Tito</li>\n<li>Jackie</li>\n<li>Marlon</li>\n<li>Jermaine</li>\n</ul>\n</li>\n<li>TMNT\n<ul>\n<li>Leonardo</li>\n<li>Michelangelo</li>\n<li>Donatello</li>\n<li>Raphael</li>\n</ul>\n</li>\n</ul>\n<p>Definition lists can be used with Markdown syntax. Definition headers are bold.</p>\n<dl>\n<dt>Name</dt>\n<dd>Godzilla</dd>\n<dt>Born</dt>\n<dd>1952</dd>\n<dt>Birthplace</dt>\n<dd>Japan</dd>\n<dt>Color</dt>\n<dd>Green</dd>\n</dl>\n<hr>\n<p>Tables should have bold headings and alternating shaded rows.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n</tr>\n</tbody>\n</table>\n<p>If a table is too wide, it should scroll horizontally.</p>\n<table>\n<thead>\n<tr>\n<th>Artist</th>\n<th>Album</th>\n<th>Year</th>\n<th>Label</th>\n<th>Awards</th>\n<th>Songs</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Michael Jackson</td>\n<td>Thriller</td>\n<td>1982</td>\n<td>Epic Records</td>\n<td>Grammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-Classical</td>\n<td>Wanna Be Startin&rsquo; Somethin&rsquo;, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life</td>\n</tr>\n<tr>\n<td>Prince</td>\n<td>Purple Rain</td>\n<td>1984</td>\n<td>Warner Brothers Records</td>\n<td>Grammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&amp;B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with Vocal</td>\n<td>Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I'm a Star, Purple Rain</td>\n</tr>\n<tr>\n<td>Beastie Boys</td>\n<td>License to Ill</td>\n<td>1986</td>\n<td>Mercury Records</td>\n<td>noawardsbutthistablecelliswide</td>\n<td>Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Code snippets like <code>var foo = &quot;bar&quot;;</code> can be shown inline.</p>\n<p>Also, <code>this should vertically align</code> <del><code>with this</code></del> <del>and this</del>.</p>\n<p>Code can also be shown in a block element.</p>\n<pre><code>foo := &quot;bar&quot;;\nbar := &quot;foo&quot;;\n</code></pre><p>Code can also use syntax highlighting.</p>\n<div class=\"highlight\"><pre style=\"background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#204a87;font-weight:bold\">func</span> <span style=\"color:#000\">main</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span> <span style=\"color:#000;font-weight:bold\">{</span>\n  <span style=\"color:#000\">input</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#4e9a06\">`</span><span style=\"color:#4e9a06\">var foo = &#34;bar&#34;;</span><span style=\"color:#4e9a06\">`</span>\n\n  <span style=\"color:#000\">lexer</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexers</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;javascript&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">_</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">lexer</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Tokenise</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#204a87;font-weight:bold\">nil</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">input</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">style</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">styles</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Get</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#4e9a06\">&#34;github&#34;</span><span style=\"color:#000;font-weight:bold\">)</span>\n  <span style=\"color:#000\">formatter</span> <span style=\"color:#ce5c00;font-weight:bold\">:=</span> <span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">New</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">html</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">WithLineNumbers</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#204a87;font-weight:bold\">var</span> <span style=\"color:#000\">buff</span> <span style=\"color:#000\">bytes</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Buffer</span>\n  <span style=\"color:#000\">formatter</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Format</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#ce5c00;font-weight:bold\">&amp;</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">style</span><span style=\"color:#000;font-weight:bold\">,</span> <span style=\"color:#000\">iterator</span><span style=\"color:#000;font-weight:bold\">)</span>\n\n  <span style=\"color:#000\">fmt</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">Println</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000\">buff</span><span style=\"color:#000;font-weight:bold\">.</span><span style=\"color:#000\">String</span><span style=\"color:#000;font-weight:bold\">(</span><span style=\"color:#000;font-weight:bold\">)</span><span style=\"color:#000;font-weight:bold\">)</span>\n<span style=\"color:#000;font-weight:bold\">}</span>\n</code></pre></div><pre><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.\n</code></pre><p>Inline code inside table cells should still be distinguishable.</p>\n<table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Javascript</td>\n<td><code>var foo = &quot;bar&quot;;</code></td>\n</tr>\n<tr>\n<td>Ruby</td>\n<td><code>foo = &quot;bar&quot;{</code></td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Small images should be shown at their actual size.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/240px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p>Large images should always scale down and fit in the content container.</p>\n<p><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg/1024px-Picea_abies_shoot_with_buds%2C_Sogndal%2C_Norway.jpg\" alt=\"\"></p>\n<p><em>The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.</em></p>\n<h2 id=\"components\">Components</h2>\n<h3 id=\"alerts\">Alerts</h3>\n<p>\n\n<div class=\"alert alert-primary\" role=\"alert\">\n\nThis is an alert.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title.\n</div>\n\n\n\n<div class=\"alert alert-primary\" role=\"alert\">\n<h4 class=\"alert-heading\">Note</h4>\nThis is an alert with a title and <strong>Markdown</strong>.\n</div>\n\n\n\n<div class=\"alert alert-success\" role=\"alert\">\n\nThis is a successful alert.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\nThis is a warning.\n</div>\n\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Warning</h4>\nThis is a warning with a title.\n</div>\n</p>\n<h2 id=\"another-heading\">Another Heading</h2>\n<p>Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.</p>\n<h3 id=\"this-document\">This Document</h3>\n<p>Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam <em>eripitur</em>? Sitim noceat signa <em>probat quidem</em>. Sua longis <em>fugatis</em> quidem genae.</p>\n<h3 id=\"pixel-count\">Pixel Count</h3>\n<p>Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&amp;B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.</p>\n<h3 id=\"contact-info\">Contact Info</h3>\n<p>Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.</p>\n<h3 id=\"external-links\">External Links</h3>\n<p>Stumptown PBR&amp;B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.</p>\n<pre><code>This is the final element on the page and there should be no margin below this.\n</code></pre>\n\t\n\t\t<style>\n  .feedback--answer {\n    display: inline-block;\n  }\n  .feedback--answer-no {\n    margin-left: 1em;\n  }\n  .feedback--response {\n    display: none;\n    margin-top: 1em;\n  }\n  .feedback--response__visible {\n    display: block;\n  }\n</style>\n<h2 class=\"feedback--title\">Feedback</h2>\n<p class=\"feedback--question\">Was this page helpful?</p>\n<button class=\"feedback--answer feedback--answer-yes\">Yes</button>\n<button class=\"feedback--answer feedback--answer-no\">No</button>\n<p class=\"feedback--response feedback--response-yes\">\n  Glad to hear it! Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<p class=\"feedback--response feedback--response-no\">\n  Sorry to hear that. Please <a href=\"https://github.com/USERNAME/REPOSITORY/issues/new\">tell us how we can improve</a>.\n</p>\n<script>\n  const yesButton = document.querySelector('.feedback--answer-yes');\n  const noButton = document.querySelector('.feedback--answer-no');\n  const yesResponse = document.querySelector('.feedback--response-yes');\n  const noResponse = document.querySelector('.feedback--response-no');\n  const disableButtons = () => {\n    yesButton.disabled = true;\n    noButton.disabled = true;\n  };\n  const sendFeedback = (value) => {\n    if (typeof ga !== 'function') return;\n    const args = {\n      command: 'send',\n      hitType: 'event',\n      category: 'Helpful',\n      action: 'click',\n      label: window.location.pathname,\n      value: value\n    };\n    ga(args.command, args.hitType, args.category, args.action, args.label, args.value);\n  };\n  yesButton.addEventListener('click', () => {\n    yesResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(1);\n  });\n  noButton.addEventListener('click', () => {\n    noResponse.classList.add('feedback--response__visible');\n    disableButtons();\n    sendFeedback(0);\n  });\n</script>\n\n\t\t<br />\n\t\n\t\n\t<div class=\"text-muted mt-5 pt-3 border-top\"> 15.04.2020: <a  href=\"https://github.com/google/docsy-example/commit/c98e38e07007bf1831e77d74205c40de9fea811b\">a (c98e38e)</a>\n</div>\n</div>\n\n\n          </main>\n        </div>\n      </div>\n      \n<footer class=\"bg-dark py-5 row d-print-none\">\n  <div class=\"container-fluid mx-sm-5\">\n    <div class=\"row\">\n      <div class=\"col-6 col-sm-4 text-xs-center order-sm-2\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"User mailing list\" aria-label=\"User mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Twitter\" aria-label=\"Twitter\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/twitter\">\n      <i class=\"fab fa-twitter\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Stack Overflow\" aria-label=\"Stack Overflow\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/stack\">\n      <i class=\"fab fa-stack-overflow\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-6 col-sm-4 text-right text-xs-center order-sm-3\">\n        \n        \n        \n<ul class=\"list-inline mb-0\">\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"GitHub\" aria-label=\"GitHub\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://github.com/google/docsy\">\n      <i class=\"fab fa-github\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Slack\" aria-label=\"Slack\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/slack\">\n      <i class=\"fab fa-slack\"></i>\n    </a>\n  </li>\n  \n  <li class=\"list-inline-item mx-2 h3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Developer mailing list\" aria-label=\"Developer mailing list\">\n    <a class=\"text-white\" target=\"_blank\" href=\"https://example.org/mail\">\n      <i class=\"fa fa-envelope\"></i>\n    </a>\n  </li>\n  \n</ul>\n\n        \n        \n      </div>\n      <div class=\"col-12 col-sm-4 text-center py-2 order-sm-2\">\n        <small class=\"text-white\">&copy; 2020 OpsAny. All Rights Reserved. </small>\n        <small class=\"ml-1\"><a href=\"https://policies.google.com/privacy\" target=\"_blank\"></a></small>\n\t\n\t\t\n\t\n      </div>\n    </div>\n  </div>\n</footer>\n\n\n    </div>\n    \n<script src=\"/js/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n<script src=\"/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>\n\n\n\n\n\n\n\n<script src=\"/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js\" integrity=\"sha256-KbAxVGjAAib6b0VWqc68CsT&#43;HOFFegGyLAoGsymHc4M=\" crossorigin=\"anonymous\"></script>\n\n\n\n  </body>\n</html>"
  },
  {
    "path": "paas-ce/paas/esb/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\ntests/\n"
  },
  {
    "path": "paas-ce/paas/esb/README.md",
    "content": "# PaaS平台社区版之API网关\n\n## 简介\n\nAPI网关是PaaS平台中的API接口服务总线。它将底层原子平台或第三方系统接口，以自助对接的方式或编码的方式封装成一个个原子组件，以统一的云API规范为上层SaaS应用提供API服务。esb目录是API网关的源码目录。\n\nAPI网关的主要作用是：\n\n- 为SaaS应用开发者提供蓝鲸官方服务云API\n- 为管理员提供自助接入API到API网关的服务\n- 为管理员提供网关管理入口\n- 提供组件开发模板，支持编码形式开发API组件对接API网关\n\n## 技术栈\n\n- framework: Django 1.8.11\n- database: mysql\n- cache: redis\n\n## 依赖说明\n\n- mysql: 平台数据库\n- redis: 缓存服务\n- login: 调用统一登录服务接口，判定用户登录态\n- paas: 访问PaaS平台数据库，认证SaaS应用\n\n## 支持的组件列表\n\n项目默认支持的蓝鲸官方系统组件列表：\n\n- bk_login: 统一登录\n- bk_paas: 蓝鲸PaaS平台\n- cc: 配置平台\n- fta: 故障自愈\n- sops: 标准运维\n\n如要使用这些系统的组件，需要在项目配置文件 configs/default.py 中更新对应系统的服务域名地址\n"
  },
  {
    "path": "paas-ce/paas/esb/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport sys\nimport importlib\n\nimportlib.reload(sys)\nsys.setdefaultencoding('utf-8')\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/operate_perm/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/operate_perm/base.py",
    "content": "# -*- coding: utf-8 -*\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.errors import error_codes\n\n\nclass BasePerm(object):\n\n    def __init__(self, request, current_user):\n        self.request = request\n        self.current_user = current_user\n\n    def get_user_allowed_cc_app(self):\n        from components.bk.apis.cc.get_app_by_user import GetAppByUser\n        result = GetAppByUser(current_user=self.current_user).invoke()\n        if not result['result']:\n            raise error_codes.USER_PERMISSION_DENIED.format_prompt(\n                'Failed to get the business information of current user (%s) with permissions, please try again later.'\n                % self.current_user.username)\n        return [item['ApplicationID'] for item in result['data']]\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/operate_perm/cc_perm.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom .base import BasePerm\nfrom common.errors import error_codes\n\n\nclass CCPerm(BasePerm):\n\n    def assert_app_perm(self, app_id):\n        if str(app_id) not in self.get_user_allowed_cc_app():\n            raise error_codes.USER_PERMISSION_DENIED.format_prompt(\n                'The current user has no permission to access [%s] business data, please apply for permissions.'\n                % app_id)\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nCOLLECTIONS_PY_TMPL = '''# -*- coding: utf-8 -*-\n\"\"\"Collections for component client\"\"\"\n{{ import_collections }}\n\n\n# Available components\nAVAILABLE_COLLECTIONS = {\n{{ available_collections }}\n}\n\n'''\n\nAPI_PY_TMPL = '''# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass Collections{{ system_name_smart }}(object):\n    \"\"\"Collections of {{ system_name }} APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n{{ apis }}\n'''\n\n\nAPI_COMPONENT_TMPL = '''\\\n        self.{api_name} = ComponentAPI(\n            client=self.client, method='{suggest_method}',\n            path='{api_path}',\n            description=u'{description}'\n        )\n'''\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n__author__ = \"蓝鲸智云\"\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/README.md",
    "content": "# 蓝鲸智云 API 网关 SDK 使用文档\n\n- 第一部分: API 组件的访问方式\n- 第二部分: API 组件的版本说明\n\n# 目录\n\n[TOC]\n\n----------------------------------------------------------\n\n# 第一部分: API 组件的访问方式\n\n有两种方式访问组件，shortcuts或ComponentClient。使用示例如下：\n\n## 1. 使用shortcuts\n\n### 1.1 get_client_by_request\n\n```\nfrom blueking.component.shortcuts import get_client_by_request\n# 从环境配置获取APP信息，从request获取当前用户信息\nclient = get_client_by_request(request)\nkwargs = {'bk_biz_id': 1}\nresult = client.cc.get_app_host_list(kwargs)\n```\n\n### 1.2 get_client_by_user\n\n```\nfrom blueking.component.shortcuts import get_client_by_user\n# 从环境配置获取APP信息，从user获取当前用户信息，user为User对象或User中username数据\nuser = 'xxx'\nclient = get_client_by_user(user)\nkwargs = {'bk_biz_id': 1}\nresult = client.cc.get_app_host_list(kwargs)\n```\n\n\n## 2. 使用ComponentClient\n\n```\nfrom blueking.component.client import ComponentClient\n# APP信息\nbk_app_code = 'xxx' \nbk_app_secret = 'xxx' \n# 用户信息\ncommon_args = {'bk_token': 'xxx'}\n# APP信息bk_app_code, bk_app_secret如未提供，从环境配置获取\nclient = ComponentClient(\n    bk_app_code=bk_app_code, \n    bk_app_secret=bk_app_secret, \n    common_args=common_args\n)\nkwargs = {'bk_biz_id': 1}\nresult = client.cc.get_app_host_list(kwargs)\n```\n\n\n# 第二部分: API 组件的版本说明\n\n蓝鲸官方提供的 API，包括 v1、v2 两个版本，推荐使用 v2 版本；\n为保持兼容，SDK 同时支持访问 v1、v2 两个版本的 API。\n\nSDK 使用 settings 中的变量 **DEFAULT_BK_API_VER** 设置访问的默认 API 版本，可选值为: \"v2\"（v2 版本），\"\"（v1 版本），默认值为\"v2\"。\n\n如果需要访问非默认版本的 API，可通过明确指定版本号的方式实现，如：\n```\n# client = get_client_by_request(request)\nclient = ComponentClient(xxx, xxx)\n# 指定访问 v1 版本的 API\nclient.set_bk_api_ver(\"\")\nresult = client.cc.get_app_host_list(xxx)\n\n# 指定访问 v2 版本的 API\nclient.set_bk_api_ver(\"v2\")\nresult = client.cc.search_host(xxx)\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/apis/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport logging\n\nfrom .exceptions import ComponentAPIException\nfrom .conf import COMPONENT_SYSTEM_HOST\n\n\nlogger = logging.getLogger('component')\n\n\nclass ComponentAPI(object):\n    \"\"\"Single API for Component\"\"\"\n\n    HTTP_STATUS_OK = 200\n\n    def __init__(self, client, method, path, description='', default_return_value=None):\n        host = COMPONENT_SYSTEM_HOST\n        # Do not use join, use '+' because path may starts with '/'\n        self.host = host.rstrip('/')\n        self.path = path\n        self.url = ''\n        self.client = client\n        self.method = method\n        self.default_return_value = default_return_value\n\n    def get_url_with_api_ver(self):\n        bk_api_ver = self.client.get_bk_api_ver()\n        sub_path = '/{}'.format(bk_api_ver) if bk_api_ver else ''\n        return self.host + self.path.format(bk_api_ver=sub_path)\n\n    def __call__(self, *args, **kwargs):\n        self.url = self.get_url_with_api_ver()\n        try:\n            return self._call(*args, **kwargs)\n        except ComponentAPIException as e:\n            # Combine log message\n            log_message = [e.error_message, ]\n            log_message.append('url=%(url)s' % {'url': e.api_obj.url})\n            if e.resp:\n                log_message.append('content: %s' % e.resp.text)\n\n            logger.exception('\\n'.join(log_message))\n\n            # Try return error message from remote service\n            if e.resp is not None:\n                try:\n                    return e.resp.json()\n                except Exception:\n                    pass\n            return {'result': False, 'message': e.error_message, 'data': None}\n\n    def _call(self, *args, **kwargs):\n        params, data = {}, {}\n        if args and isinstance(args[0], dict):\n            params = args[0]\n        params.update(kwargs)\n\n        # Validate params for POST request\n        if self.method == 'POST':\n            data = params\n            params = None\n            try:\n                json.dumps(data)\n            except Exception:\n                raise ComponentAPIException(self, 'Request parameter error (please pass in a dict or json string)')\n\n        # Request remote server\n        try:\n            resp = self.client.request(self.method, self.url, params=params, data=data)\n        except Exception as e:\n            logger.exception('Error occurred when requesting method=%s url=%s',\n                             self.method, self.url)\n            raise ComponentAPIException(self, 'Request component error, Exception: %s' % str(e))\n\n        # Parse result\n        if resp.status_code != self.HTTP_STATUS_OK:\n            message = 'Request component error, status_code: %s' % resp.status_code\n            raise ComponentAPIException(self, message, resp=resp)\n        try:\n            # Parse response\n            json_resp = resp.json()\n            if not json_resp['result']:\n                # 组件返回错误时，记录相应的 request_id\n                log_message = ('Component return error message: %(message)s, request_id=%(request_id)s, '\n                               'url=%(url)s, params=%(params)s, data=%(data)s, response=%(response)s') % {\n                    'request_id': json_resp.get('request_id'),\n                    'message': json_resp['message'],\n                    'url': self.url,\n                    'params': params,\n                    'data': data,\n                    'response': resp.text,\n                }\n                logger.error(log_message)\n\n            # Return default return value\n            if not json_resp and self.default_return_value is not None:\n                return self.default_return_value\n            return json_resp\n        except Exception:\n            raise ComponentAPIException(\n                self, 'Return data format is incorrect, which shall be unified as json', resp=resp)\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/client.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"Component API Client\n\"\"\"\nimport requests\nimport json\nimport time\nimport random\nimport logging\n\nfrom .compat import urlparse\nfrom . import conf\nfrom . import collections\nfrom .utils import get_signature\n\n# shutdown urllib3's warning\ntry:\n    requests.packages.urllib3.disable_warnings()\nexcept Exception:\n    pass\n\n\nlogger = logging.getLogger('component')\n\n\nclass BaseComponentClient(object):\n    \"\"\"Base client class for component\"\"\"\n\n    @classmethod\n    def setup_components(cls, components):\n        cls.available_collections = components\n\n    def __init__(self, app_code=None, app_secret=None, common_args=None, use_test_env=False, language=None,\n                 bk_app_code=None, bk_app_secret=None):\n        \"\"\"\n        :param str app_code: App code to use\n        :param str app_secret: App secret to use\n        :param dict common_args: Args that will apply to every request\n        :param bool use_test_env: whether use test version of components\n        \"\"\"\n        self.app_code = bk_app_code or app_code or conf.APP_CODE\n        self.app_secret = bk_app_secret or app_secret or conf.SECRET_KEY\n        self.bk_api_ver = conf.DEFAULT_BK_API_VER\n        self.common_args = common_args or {}\n        self._cached_collections = {}\n        self.use_test_env = use_test_env\n        self.language = language or self.get_cur_language()\n\n    def set_use_test_env(self, use_test_env):\n        \"\"\"Change the value of use_test_env\n\n        :param bool use_test_env: whether use test version of components\n        \"\"\"\n        self.use_test_env = use_test_env\n\n    def set_language(self, language):\n        self.language = language\n\n    def get_cur_language(self):\n        try:\n            from django.utils import translation\n            return translation.get_language()\n        except Exception:\n            return None\n\n    def set_bk_api_ver(self, bk_api_ver):\n        self.bk_api_ver = bk_api_ver\n\n    def get_bk_api_ver(self):\n        return self.bk_api_ver\n\n    def merge_params_data_with_common_args(self, method, params, data, enable_app_secret=False):\n        \"\"\"get common args when request\n        \"\"\"\n        common_args = dict(bk_app_code=self.app_code, **self.common_args)\n        if enable_app_secret:\n            common_args['bk_app_secret'] = self.app_secret\n        if method == 'GET':\n            _params = common_args.copy()\n            _params.update(params or {})\n            params = _params\n        elif method == 'POST':\n            _data = common_args.copy()\n            _data.update(data or {})\n            data = json.dumps(_data)\n        return params, data\n\n    def request(self, method, url, params=None, data=None, **kwargs):\n        \"\"\"Send request\n        \"\"\"\n        # determine whether access test environment of third-party system\n        headers = kwargs.pop('headers', {})\n        if self.use_test_env:\n            headers['x-use-test-env'] = '1'\n        if self.language:\n            headers['blueking-language'] = self.language\n\n        params, data = self.merge_params_data_with_common_args(method, params, data, enable_app_secret=True)\n        logger.debug('Calling %s %s with params=%s, data=%s, headers=%s', method, url, params, data, headers)\n        return requests.request(method, url, params=params, data=data, verify=False,\n                                headers=headers, **kwargs)\n\n    def __getattr__(self, key):\n        if key not in self.available_collections:\n            return getattr(super(BaseComponentClient, self), key)\n\n        if key not in self._cached_collections:\n            collection = self.available_collections[key]\n            self._cached_collections[key] = collection(self)\n        return self._cached_collections[key]\n\n\nclass ComponentClientWithSignature(BaseComponentClient):\n    \"\"\"Client class for component with signature\"\"\"\n\n    def request(self, method, url, params=None, data=None, **kwargs):\n        \"\"\"Send request, will add \"signature\" parameter.\n        \"\"\"\n        # determine whether access test environment of third-party system\n        headers = kwargs.pop('headers', {})\n        if self.use_test_env:\n            headers['x-use-test-env'] = '1'\n        if self.language:\n            headers['blueking-language'] = self.language\n\n        params, data = self.merge_params_data_with_common_args(method, params, data, enable_app_secret=False)\n        if method == 'POST':\n            params = {}\n\n        url_path = urlparse(url).path\n        # signature always in GET params\n        params.update({\n            'bk_timestamp': int(time.time()),\n            'bk_nonce': random.randint(1, 2147483647),\n        })\n        params['bk_signature'] = get_signature(method, url_path, self.app_secret, params=params, data=data)\n\n        logger.debug('Calling %s %s with params=%s, data=%s', method, url, params, data)\n        return requests.request(method, url, params=params, data=data, verify=False,\n                                headers=headers, **kwargs)\n\n\n# 根据是否开启signature来判断使用的Client版本\nif conf.CLIENT_ENABLE_SIGNATURE:\n    ComponentClient = ComponentClientWithSignature\nelse:\n    ComponentClient = BaseComponentClient\n\nComponentClient.setup_components(collections.AVAILABLE_COLLECTIONS)\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/collections.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"Collections for component client\"\"\"\n\n\n# Available components\nAVAILABLE_COLLECTIONS = {\n}\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/compat.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport sys\n\n_ver = sys.version_info\n\nis_py2 = (_ver[0] == 2)\n\nis_py3 = (_ver[0] == 3)\n\n\nif is_py2:\n    from urllib.parse import urlparse\n\n    str = str\n\nelif is_py3:\n    from urllib.parse import urlparse  # noqa\n\n    str = str\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/conf.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"Django project settings\n\"\"\"\n\n\ntry:\n    from django.conf import settings\n\n    APP_CODE = settings.APP_ID\n    SECRET_KEY = settings.APP_TOKEN\n    COMPONENT_SYSTEM_HOST = getattr(settings, 'BK_PAAS_INNER_HOST', settings.BK_PAAS_HOST)\n    DEFAULT_BK_API_VER = getattr(settings, 'DEFAULT_BK_API_VER', 'v2')\nexcept Exception:\n    APP_CODE = ''\n    SECRET_KEY = ''\n    COMPONENT_SYSTEM_HOST = ''\n    DEFAULT_BK_API_VER = 'v2'\n\nCLIENT_ENABLE_SIGNATURE = False\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/exceptions.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nclass ComponentBaseException(Exception):\n    pass\n\n\nclass ComponentAPIException(ComponentBaseException):\n    \"\"\"Exception for Component API\"\"\"\n\n    def __init__(self, api_obj, error_message, resp=None):\n        self.api_obj = api_obj\n        self.error_message = error_message\n        self.resp = resp\n\n        if self.resp is not None:\n            error_message = '%s, resp=%s' % (error_message, self.resp.text)\n        super(ComponentAPIException, self).__init__(error_message)\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/shortcuts.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport logging\n\nfrom .client import ComponentClient\nfrom . import conf\n\nlogger = logging.getLogger('component')\n\n__all__ = [\n    'get_client_by_request',\n    'get_client_by_user',\n]\n\n\ndef get_client_by_request(request, **kwargs):\n    \"\"\"根据当前请求返回一个client\n\n    :param request: 一个django request实例\n    :returns: 一个初始化好的ComponentClint对象\n    \"\"\"\n\n    if request.user.is_authenticated:\n        bk_token = request.COOKIES.get('bk_token', '')\n    else:\n        bk_token = ''\n\n    common_args = {\n        'bk_token': bk_token,\n    }\n    common_args.update(kwargs)\n    return ComponentClient(conf.APP_CODE, conf.SECRET_KEY, common_args=common_args)\n\n\ndef get_client_by_user(user, **kwargs):\n    \"\"\"根据user实例返回一个client\n\n    :param user: User实例或者User.username数据\n    :returns: 一个初始化好的ComponentClint对象\n    \"\"\"\n    try:\n        from account.models import BkUser as User\n    except Exception:\n        from django.contrib.auth.models import User\n\n    try:\n        if isinstance(user, User):\n            username = user.username\n        else:\n            username = user\n    except Exception:\n        logger.exception('Failed to get user according to user (%s)' % user)\n\n    common_args = {'bk_username': username}\n    common_args.update(kwargs)\n    return ComponentClient(conf.APP_CODE, conf.SECRET_KEY, common_args=common_args)\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport base64\nimport hmac\nimport hashlib\n\nfrom .compat import str\n\n\ndef get_signature(method, path, app_secret, params=None, data=None):\n    \"\"\"generate signature\n    \"\"\"\n    kwargs = {}\n    if params:\n        kwargs.update(params)\n    if data:\n        data = json.dumps(data) if isinstance(data, dict) else data\n        kwargs['data'] = data\n    kwargs = '&'.join([\n        '%s=%s' % (k, v)\n        for k, v in sorted(list(kwargs.items()), key=lambda x: x[0])\n    ])\n    orignal = '%s%s?%s' % (method, path, kwargs)\n    app_secret = app_secret.encode('utf-8') if isinstance(app_secret, str) else app_secret\n    orignal = orignal.encode('utf-8') if isinstance(orignal, str) else orignal\n    signature = base64.b64encode(hmac.new(app_secret, orignal, hashlib.sha1).digest())\n    return signature if isinstance(signature, str) else signature.decode('utf-8')\n"
  },
  {
    "path": "paas-ce/paas/esb/apps/sdk_management/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport shutil\nimport string\n\nfrom django.conf import settings\nfrom jinja2 import Template\n\nfrom apps.sdk_management.constants import COLLECTIONS_PY_TMPL, API_PY_TMPL, API_COMPONENT_TMPL\n\n\nclass SDKGenerator(object):\n\n    def __init__(self, channels, target_dir=''):\n        self.channels = self.get_available_channels(channels)\n        self.target_dir = target_dir or self.get_tmp_dir()\n\n    def get_target_dir(self):\n        return self.target_dir\n\n    def get_tmp_dir(self):\n        return os.path.join('/tmp/open_paas_esb_sdk/')\n\n    def generate_files_for_sdk(self):\n        self.copy_tmpl_to_target_dir()\n        self.generate_collections_py()\n        self.generate_apis_files()\n\n    def get_available_channels(self, channels):\n        new_channels = {}\n        for system_name, sub_channels in channels.items():\n            new_sub_channels = [\n                channel\n                for channel in sub_channels\n                if channel['suggest_method'] and not channel['no_sdk']\n            ]\n            if new_sub_channels:\n                new_channels[system_name] = new_sub_channels\n        return new_channels\n\n    def copy_tmpl_to_target_dir(self):\n        source_dir = os.path.join(settings.BASE_DIR, 'apps/sdk_management/sdk_tmpl/')\n\n        if os.path.exists(self.target_dir):\n            shutil.rmtree(self.target_dir)\n\n        shutil.copytree(source_dir, self.target_dir)\n        if not os.path.exists(os.path.join(self.target_dir, 'blueking')):\n            raise Exception('Failed to copy SDK template to the temporary directory')\n\n    def generate_collections_py(self):\n        content = self.get_collections_py_content()\n        collections_py_path = os.path.join(self.target_dir, 'blueking/component/collections.py')\n        self.write_content_to_file(content, collections_py_path)\n\n    def generate_apis_files(self):\n        for system_name, channels in list(self.channels.items()):\n            content = self.get_api_file_content(system_name, channels)\n            file_path = 'blueking/component/apis/{system_name}.py'.format(system_name=system_name.lower())\n            api_file_path = os.path.join(self.target_dir, file_path)\n            self.write_content_to_file(content, api_file_path)\n\n    def get_collections_py_content(self):\n        import_collections = []\n        available_collections = []\n        for system_name in sorted(self.channels.keys()):\n            system_name_lower = system_name.lower()\n            system_name_smart = self.smart_system_name(system_name)\n\n            import_collections.append(\n                'from .apis.{system_name_lower} import Collections{system_name_smart}'.format(\n                    system_name_lower=system_name_lower,\n                    system_name_smart=system_name_smart\n                )\n            )\n            available_collections.append(\n                \"    '{system_name_lower}': Collections{system_name_smart},\".format(\n                    system_name_lower=system_name_lower,\n                    system_name_smart=system_name_smart\n                )\n            )\n        return Template(COLLECTIONS_PY_TMPL).render(\n            import_collections='\\n'.join(import_collections),\n            available_collections='\\n'.join(available_collections),\n        )\n\n    def get_api_file_content(self, system_name, channels):\n        apis = []\n        group_channels = self.group_channels_by_api_ver(channels)\n\n        for _, channels in group_channels:\n            channels = sorted(channels, key=lambda item: item['path'])\n            for channel in channels:\n                apis.append(API_COMPONENT_TMPL.format(\n                    api_name=channel['component_name'],\n                    api_path='/api/c/compapi{bk_api_ver}/%s/%s/' % (channel['system_name'].lower(), channel['component_name']),  # noqa\n                    suggest_method=channel['suggest_method'],\n                    description=channel['component_label'].encode('utf-8'),\n                ))\n        return Template(API_PY_TMPL).render(\n            system_name_smart=self.smart_system_name(system_name),\n            system_name=system_name,\n            apis=''.join(apis).decode('utf-8')\n        )\n\n    def smart_system_name(self, system_name):\n        if '_' in system_name:\n            system_name = ''.join(word.capitalize() for word in system_name.split('_'))\n        return system_name\n\n    def write_content_to_file(self, content, file_path):\n        content = content if isinstance(content, str) else content.encode('utf-8')\n        with open(file_path, 'w') as fp:\n            fp.write(content)\n        if not os.path.exists(file_path):\n            raise Exception('Failed to write file contents')\n\n    def group_channels_by_api_ver(self, channels):\n        channels_v1 = {}\n        channels_v2 = {}\n        for channel in channels:\n            channel_path = channel['path']\n            if channel_path.startswith('/v2/'):\n                channels_v2[channel_path[3:]] = channel\n            else:\n                channels_v1[channel_path] = channel\n\n        channels_v1_v2 = []\n        channels_only_v2 = []\n        for path, channel in list(channels_v2.items()):\n            if path in channels_v1:\n                if channels_v1[path]['suggest_method'] != channel['suggest_method']:\n                    print('channel method different: v1=%s, v2=%s, path=%s' % (\n                        channels_v1[path]['suggest_method'],\n                        channel['suggest_method'],\n                        path\n                    ))\n                channels_v1_v2.append(channel)\n                channels_v1.pop(path)\n            else:\n                channels_only_v2.append(channel)\n        return [\n            [('v2', ), channels_only_v2],\n            [('', 'v2'), channels_v1_v2],\n            [('', ), list(channels_v1.values())],\n        ]\n"
  },
  {
    "path": "paas-ce/paas/esb/common/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/common/base_loggers.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport copy\n\nfrom common.log import logger_api, logger\nfrom common.base_utils import datetime_format\n\n\nclass BasicRequestLogger(object):\n    \"\"\"\n    Basic Request Logger\n    \"\"\"\n\n    def write(self, request, response):\n        # 记录原始的请求参数，而不是被修改过的kwargs\n        if getattr(request, \"kwargs_copy\", {}):\n            kwargs = request.kwargs_copy\n        elif getattr(request, \"kwargs\", {}):\n            kwargs = request.kwargs\n        else:\n            kwargs = {}\n        if request.system_name == 'CMSI' and request.component_alias_name == 'send_mail':\n            kwargs = copy.copy(kwargs)\n            kwargs.pop('attachments', None)\n        msecs_cost = (request.ts_request_end - request.ts_request_start) * 1000\n        if isinstance(response, dict):\n            message = response and response.get('message', '')\n        else:\n            message = ''\n\n        try:\n            request_log = {\n                'message': 'ESB request finished, method=%s system=%s component=%s' % (\n                    request.method, request.system_name, request.component_alias_name),\n                'type': 'pyls-comp-request',\n                'request_id': getattr(request, \"request_id\", \"\"),\n                'req_app_code': getattr(request, \"app_code\", \"\"),\n                'req_username': getattr(request, \"current_user_username\", \"\"),\n                'req_system_name': request.system_name,\n                'req_component_name': request.component_alias_name,\n                'req_client_ip': getattr(request, \"client_ip\", \"\"),\n                'req_params': json.dumps(kwargs),\n                'req_use_test_env': getattr(request, \"use_test_env\", \"\"),\n                'req_status': getattr(request, \"component_status\", -1),\n                'req_message': message,\n                'req_msecs_cost': int(msecs_cost),\n                'req_start_time': datetime_format(request.ts_request_start),\n                'req_end_time': datetime_format(request.ts_request_end),\n            }\n            # Log to logstash, type=\"pyls-comp-request\"\n            logger_api.info(json.dumps(request_log))\n        except Exception as e:\n            logger.warning('logger reqeust exception: %s' % e)\n"
  },
  {
    "path": "paas-ce/paas/esb/common/base_redis.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport redis\nfrom redis import sentinel\nfrom django.conf import settings\n\nfrom common.log import logger\nfrom common.bkerrors import bk_error_codes\n\n\nredis_config = {\n    'host': getattr(settings, 'REDIS_HOST', ''),\n    'port': getattr(settings, 'REDIS_PORT', None),\n    'db': getattr(settings, 'REDIS_DB', 0),\n    'password': getattr(settings, 'REDIS_PASSWORD', ''),\n    'max_connections': 600,\n}\n\nredis_sentinel_config = {\n    'use_sentinel': getattr(settings, 'USE_SENTINEL', False),\n    'master_name': getattr(settings, 'REDIS_MASTER_NAME', None),\n}\n\n\ndef get_redis_pool(redis_conf, redis_sentinel_conf):\n    \"\"\"\n    @param redis_conf: 针对整个redis配置都更改的情况\n    @return: redis连接池\n    \"\"\"\n    if redis_sentinel_conf['use_sentinel']:\n        redis_sentinel = sentinel.Sentinel(\n            [(redis_conf['host'], redis_conf['port'])],\n            socket_timeout=5\n        )\n        return sentinel.SentinelConnectionPool(redis_sentinel_conf['master_name'], redis_sentinel,\n                                               db=redis_conf['db'], password=redis_conf['password'],\n                                               max_connections=redis_conf['max_connections'])\n    else:\n        return redis.BlockingConnectionPool(**redis_conf)\n\n\ntry:\n    redisdb = redis.Redis(connection_pool=get_redis_pool(redis_config, redis_sentinel_config))\nexcept Exception:\n    logger.exception('%s redis connection fail.', bk_error_codes.REDIS_CONNECTION_ERROR.code)\n    redisdb = None\n"
  },
  {
    "path": "paas-ce/paas/esb/common/base_utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport re\nimport json\nimport yaml\nimport datetime\nimport decimal\nimport string\nimport random\nimport hashlib\n\nfrom common.errors import error_codes\nfrom common.log import logger\n\n\nclass CustomJSONEncoder(json.JSONEncoder):\n    \"\"\"\n    JSONEncoder subclass that knows how to encode date/time and decimal types.\n    And process the smart place name object\n    \"\"\"\n\n    date_format = \"%Y-%m-%d\"\n    time_format = \"%H:%M:%S\"\n\n    def default(self, o):\n        if isinstance(o, datetime.datetime):\n            return o.strftime(\"%s %s\" % (self.date_format, self.time_format))\n        elif isinstance(o, datetime.date):\n            return o.strftime(self.date_format)\n        elif isinstance(o, datetime.time):\n            return o.strftime(self.time_format)\n        elif isinstance(o, decimal.Decimal):\n            return str(o)\n        else:\n            return super(CustomJSONEncoder, self).default(o)\n\n\ndef jsonize(d):\n    return json.dumps(d, cls=CustomJSONEncoder, ensure_ascii=False)\n\n\ndef str_bool(value):\n    \"\"\"\n    Convert string to boolean.\n\n        >>> str_bool(\"0\")\n        False\n        >>> str_bool(\"1\")\n        True\n        >>> str_bool(\"true\")\n        True\n        >>> str_bool(\"false\")\n        False\n    \"\"\"\n    if isinstance(value, str):\n        value = value.strip()\n        if value.lower() in (\"0\", \"false\"):\n            return False\n    return bool(value)\n\n\nclass FancyDict(dict):\n    def __getattr__(self, key):\n        try:\n            return self[key]\n        except KeyError as k:\n            raise AttributeError(k)\n\n    def __setattr__(self, key, value):\n        self[key] = value\n\n    def __delattr__(self, key):\n        try:\n            del self[key]\n        except KeyError as k:\n            raise AttributeError(k)\n\n\ndef smart_lower(value):\n    \"\"\"\n        >>> smart_lower('RequestFriendHandler')\n        'request_friend_handler'\n    \"\"\"\n    result = [value[0].lower()]\n    for c in value[1:]:\n        if c >= 'A' and c <= 'Z':\n            result.append('_')\n        result.append(c.lower())\n    return ''.join(result)\n\n\ndef smart_upper(value):\n    \"\"\"\n        >>> smart_upper('request_friend_handler')\n        'requestFriendHandler'\n    \"\"\"\n    value_list = value.split('_')\n    return ''.join(word.capitalize() if i != 0 else word\n                   for i, word in enumerate(value_list))\n\n\ndef smart_str(s, encoding='utf-8'):\n    \"\"\"\n    转换一个字符串或者unicode为指定的编码\n    \"\"\"\n    if isinstance(s, str):\n        return s.encode(encoding)\n    elif s and encoding != 'utf-8':\n        return s.decode('utf-8', 'ignore').encode(encoding, 'ignore')\n    else:\n        return str(s)\n\n\ndef smart_unicode(s, encoding='utf-8'):\n    \"\"\"\n    转换一个字符串或者unicode为unicode\n    \"\"\"\n    if isinstance(s, str):\n        return s\n    return s.decode(encoding, 'ignore')\n\n\ndef smart_unicode_v2(s, encoding=None):\n    def get_chardet_module():\n        \"\"\"获取系统中可用的chardet模块\"\"\"\n        try:\n            from requests.compat import chardet\n        except ImportError:\n            try:\n                import chardet\n            except ImportError:\n                return\n        return chardet\n\n    def guess_encoding(s):\n        chardet = get_chardet_module()\n        if chardet:\n            encoding = chardet.detect(s)['encoding']\n        return encoding or 'utf-8'\n\n    if isinstance(s, str):\n        return s\n    if encoding is None:\n        encoding = guess_encoding(s)\n    try:\n        s = str(s, encoding, errors='replace')\n    except (LookupError, TypeError):\n        s = str(s, errors='replace')\n    return s\n\n\ndef unique(obj):\n    \"\"\"\n    Unique with order\n    \"\"\"\n    temp = set()\n    return [x for x in obj if x not in temp and not temp.add(x)]\n\n\ndef get_not_empty_value(kwargs):\n    \"\"\"\n    获取非空数据，去除数据为空字段\n    \"\"\"\n    data = {}\n    for k, v in list(kwargs.items()):\n        if v not in (None, '', [], {}):\n            data[k] = v\n    return data\n\n\nUNICODE_ASCII_CHARACTER_SET = ('abcdefghijklmnopqrstuvwxyz'\n                               'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n                               '0123456789')\n\n\ndef generate_token(length=30, chars=UNICODE_ASCII_CHARACTER_SET):\n    \"\"\"\n    Generates a non-guessable OAuth token\n    \"\"\"\n    rand = random.SystemRandom()\n    return ''.join(rand.choice(chars) for x in range(length))\n\n\ndef get_client_ip(request):\n    \"\"\"\n    获取远程访问主机的IP地址\n    \"\"\"\n    client_ip = request.headers.get('x-forwarded-for')\n    if not client_ip:\n        client_ip = request.META.get('REMOTE_ADDR', '')\n    try:\n        client_ip = re.findall(r'[\\d.]{7,15}', client_ip)\n    except Exception:\n        logger.exception('request: %s' % request)\n        client_ip = ''\n    else:\n        client_ip = ';'.join(client_ip)\n    return client_ip\n\n\ndef get_client_real_ip(request):\n    real_ip = request.headers.get('x-real-ip')\n    if real_ip:\n        return real_ip\n    x_forwarded_for = request.headers.get('x-forwarded-for')\n    if x_forwarded_for:\n        return x_forwarded_for.rsplit(',', 1)[-1].strip()\n    return request.META.get('REMOTE_ADDR', '')\n\n\ndef get_request_params(request):\n    # if request.method not in ('GET', 'POST'):\n    #     raise error_codes.COMMON_ERROR.format_prompt(\n    #         'Request method error, please apply GET or POST request.', replace=True)\n    # \"GET\"方法\n    if request.method == 'GET':\n        request_params = dict(list(request.GET.items()))\n    else:\n        # \"POST\"方法\n        if request.body and request.body.decode().strip().startswith('{'):\n            try:\n                request_params = json.loads(request.body)\n            except Exception:\n                logger.exception('request.body should be a json: %s', request.body)\n                raise error_codes.COMMON_ERROR.format_prompt(\n                    'Request JSON string is wrong in format, which cannot be analyzed.', replace=True)\n        else:\n            request_params = dict(list(request.POST.items()))\n    return request_params\n\n\ndef datetime_format(dt):\n    date_format = \"%Y-%m-%d\"\n    time_format = \"%H:%M:%S\"\n\n    if isinstance(dt, (int, float)):\n        dt = datetime.datetime.utcfromtimestamp(dt)\n\n    if isinstance(dt, datetime.datetime):\n        return dt.strftime('%s %s' % (date_format, time_format))\n    elif isinstance(dt, datetime.date):\n        return dt.strftime(date_format)\n\n\ndef get_md5(src):\n    m = hashlib.md5()\n    m.update(smart_str(src))\n    return m.hexdigest()\n\n\ndef load_yaml(path):\n    with open(path, 'r') as fp:\n        return yaml.load(fp)\n\n\ndef read_file(path):\n    with open(path, 'r') as fp:\n        return fp.read()\n\n\ndef html_escape(html, is_json=False):\n    \"\"\"\n    Replace special characters \"&\", \"<\" and \">\" to HTML-safe sequences.\n    If the optional flag quote is true, the quotation mark character (\")\n    is also translated.\n    rewrite the cgi method\n    @param html: html代码\n    @param is_json: 是否为json串（True/False） ，默认为False\n    \"\"\"\n    # &转换\n    if not is_json:\n        html = html.replace('&', '&amp;')  # Must be done first!\n    # <>转换\n    html = html.replace(\"<\", \"&lt;\")\n    html = html.replace(\">\", \"&gt;\")\n    # 单双引号转换\n    if not is_json:\n        # html = html.replace(' ', \"&nbsp;\")\n        html = html.replace('\"', \"&quot;\")\n        html = html.replace(\"'\", \"&#39;\")\n    return html\n"
  },
  {
    "path": "paas-ce/paas/esb/common/base_validators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nclass ValidationError(Exception):\n    pass\n\n\nclass BaseValidator(object):\n    \"\"\"\n    Base class for validator\n    \"\"\"\n\n    def validate(self, request):\n        pass\n"
  },
  {
    "path": "paas-ce/paas/esb/common/bkerrors.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\n蓝鲸统一错误码处理\n\"\"\"\n\nbk_error_codes_conf = {\n    'REDIS_CONNECTION_ERROR': {\n        'code': '1306001',\n        'reason': 'Redis connection failed',\n        'solution': 'Check if the redis configuration is correct and if the service is normal',\n    },\n\n    'COMPONENT_REGISTER_ERROR': {\n        'code': '1306101',\n        'reason': 'Component code logic error, cannot be loaded',\n        'solution': 'Check the code logic based on the exception message to exclude exceptions',\n    },\n    'COMPONENT_COMP_CONF_ERROR': {\n        'code': '1306102',\n        'reason': 'The component configuration in the component channel is not a valid JSON string',\n        'solution': 'Check the component configuration, and the JSON string needs to be a dict or a list that can be converted to a dict',  # noqa\n    },\n\n    'REQUEST_THIRD_PARTY_ERROR': {\n        'code': '1306201',\n        'reason': 'An exception appeared while requesting a third-party system interface',\n        'solution': 'Check if the third-party system interface service is normal',\n    },\n    'THIRD_PARTY_RESP_ERROR': {\n        'code': '1306202',\n        'reason': 'Return data from the third-party system interface is not a valid JSON string',\n        'solution': 'Check if the third-party system interface service is normal',\n    },\n    'REQUEST_SSL_ERROR': {\n        'code': '1306203',\n        'reason': 'A SSLError occurred while requesting a third-party system interface',\n        'solution': 'Check if the folder in the component configuration corresponding to SSL_ROOT_DIR exists, and if the certificates are valid',  # noqa\n    },\n    'REQUEST_GSE_ERROR': {\n        'code': '1306204',\n        'reason': 'An error occurred while accessing the system GSE interface',\n        'solution': 'Check if the GSE system interface is normal',\n    },\n    'REQUEST_SMTP_ERROR': {\n        'code': '1306205',\n        'reason': 'An error occurred while accessing the SMTP email service',\n        'solution': 'Check if the sending email component SMTP configuration is correct, and if the SMTP email service is normal',  # noqa\n    },\n\n    # thirt-party system error code\n    'REQUEST_JOB_ERROR': {\n        'code': 1306221,\n        'reason': 'An error occurred while accessing the system JOB service',\n        'solution': 'Check if the JOB system interface is normal',\n    },\n}\n\n\nclass ErrorCode(object):\n    \"\"\"\n    Error Code class\n    \"\"\"\n\n    def __init__(self, code_name, code, reason, solution):\n        self.code_name = code_name\n        self.code = code\n        self.reason = reason\n        self.solution = solution\n\n\nclass BkErrorCodes(object):\n\n    def __init__(self):\n        self._error_codes_dict = dict([\n            (code_name, ErrorCode(code_name, **error_code))\n            for code_name, error_code in bk_error_codes_conf.items()\n        ])\n\n    def __getattr__(self, code_name):\n        return self._error_codes_dict[code_name]\n\n\nbk_error_codes = BkErrorCodes()\n"
  },
  {
    "path": "paas-ce/paas/esb/common/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.utils.translation import gettext_lazy as _\n\nfrom common.base_utils import FancyDict\n\n\nCOMPONENT_STATUSES = FancyDict((\n    ('ARGUMENT_ERROR', 0),\n    ('PENDING', 1),\n    ('EXECUTING', 2),\n    ('SUCCESS', 3),\n    ('FAILURE', 4),\n    ('EXCEPTION', 5),\n    ('UNABLE_TO_CYCLE', 6),\n    ('PENDING_TOO_LONG', 7),\n))\n\n\nAPI_TYPE_OP = 'operate'\nAPI_TYPE_Q = 'query'\n\nHTTP_METHOD = FancyDict((\n    ('GET', 'GET'),\n    ('POST', 'POST'),\n))\n\n\nBK_SYSTEMS = {\n    'BK_LOGIN': {\n        'name': 'BK_LOGIN',\n        'label': _('统一登录'),\n        'remark': '统一登录，管理用户登录验证，及用户信息',\n    },\n    'BK_PAAS': {\n        'name': 'BK_PAAS',\n        'label': _('蓝鲸开发者中心'),\n        'remark': '蓝鲸开发者中心',\n    },\n    'CC': {\n        'name': 'CC',\n        'label': _('配置平台'),\n        'remark': '蓝鲸配置平台是一款面向应用的CMDB，在ITIL体系里，CMDB是构建其它流程的基石，而在蓝鲸智云体系里，配置平台就扮演着基石的角色，为应用提供了各种运维场景的配置数据服务。',\n    },\n    'GSE': {\n        'name': 'GSE',\n        'label': _('管控平台'),\n        'remark': '管控平台',\n    },\n    'JOB': {\n        'name': 'JOB',\n        'label': _('作业平台'),\n        'remark': '作业平台（Job）是一套基于蓝鲸智云管控平台Agent管道之上的基础操作平台，具备大并发处理能力；除了支持脚本执行、文件拉取/分发、定时任务等一系列可实现的基础运维场景以外，还运用流程化的理念很好的将零碎的单个任务组装成一个作业流程；而每个任务都可做为一个原子节点，提供给其它系统和平台调度，实现调度自动化。',  # noqa\n    },\n    'CMSI': {\n        'name': 'CMSI',\n        'label': _('消息管理'),\n        'remark': '蓝鲸消息管理，用于支持向用户发送多种类型的消息，包括邮件、短信、语音通知等',\n    },\n    'SOPS': {\n        'name': 'SOPS',\n        'label': _('标准运维'),\n        'remark': '标准运维',\n    },\n    'MONITOR': {\n        'name': 'MONITOR',\n        'label': _('蓝鲸监控'),\n        'remark': '蓝鲸监控',\n    },\n}\n"
  },
  {
    "path": "paas-ce/paas/esb/common/django_utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nUtils for django itself\n\"\"\"\nimport json\n\nfrom django.http import HttpResponse\n\n\nclass JsonResponse(HttpResponse):\n    def __init__(self, content, *args, **kwargs):\n        content = json.dumps(content, ensure_ascii=False)\n        super(JsonResponse, self).__init__(\n            content, content_type='application/json; charset=utf-8', *args, **kwargs)\n"
  },
  {
    "path": "paas-ce/paas/esb/common/djmysql_pool.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom sqlalchemy.pool import QueuePool\nfrom sqlalchemy import create_engine\n\ndef patch_mysql(pool_options={}):\n    from django.db.backends.mysql import base as mysql_base\n\n    POOL_SETTINGS = pool_options\n\n    if not hasattr(mysql_base, \"_Database\"):\n        mysql_base._Database = mysql_base.Database\n        \n        def create_pool():\n            return QueuePool(creator=mysql_base._Database.connect,\n                             **POOL_SETTINGS)\n        \n        engine = create_engine('mysql://', poolclass=create_pool)\n        mysql_base.Database = ManagerProxy(engine.pool)\n\nclass ManagerProxy(object):\n    def __init__(self, pool):\n        self.pool = pool\n\n    def __getattr__(self, key):\n        return getattr(self.pool, key)\n\n    def connect(self, *args, **kwargs):\n        return self.pool.connect(*args, **kwargs)\n\n    def dispose(self):\n        self.pool.dispose()\n"
  },
  {
    "path": "paas-ce/paas/esb/common/errors.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport copy\n\nERROR_CODE_PREFIX_SYSTEM = '0'\nERROR_CODE_PREFIX_THIRD_PARTY = '1'\n\n\ndef wrap_error_code(code):\n    \"\"\"\n    包装第三方系统返回的错误代码\n    \"\"\"\n    return ERROR_CODE_PREFIX_THIRD_PARTY + str(code)\n\n\nclass BaseException(Exception):\n    pass\n\n\nclass RequestThirdPartyException(BaseException):\n    \"\"\"\n    当请求第三方系统时抛出的异常\n    \"\"\"\n\n    def __init__(self, raw_exc, system_name, interface_name):\n        self.raw_exc = raw_exc\n        self.system_name = system_name\n        self.interface_name = interface_name\n\n    def __str__(self):\n        return 'Component request third-party system [%s] interface [%s] error: %s, '\\\n            'please try again later or contact component developer to handle this'\\\n            % (self.system_name, self.interface_name, self.raw_exc)\n\n    def get_message(self):\n        \"\"\"\n        返回到终端用户的错误信息\n        \"\"\"\n        return 'Component request third-party system [%s] interface [%s] error: %s, '\\\n            'please try again later or contact component developer to handle this'\\\n            % (self.system_name, self.interface_name, self.raw_exc)\n\n\nclass RequestSSLException(BaseException):\n    \"\"\"SSL错误，明确错误信息\n    \"\"\"\n    def __init__(self, raw_exc, system_name, interface_name):\n        self.raw_exc = raw_exc\n        self.system_name = system_name\n        self.interface_name = interface_name\n\n    def __str__(self):\n        return self.get_message()\n\n    def get_message(self):\n        \"\"\"\n        返回到终端用户的错误信息\n        \"\"\"\n        if isinstance(self.raw_exc.cert, tuple):\n            self.raw_exc.cert = ', '.join(self.raw_exc.cert)\n        return 'Component request third-party system [%s] interface [%s] SSL error: '\\\n            'SSL configuration file [%s] does not exist or is illegal, '\\\n            'please get the certificates from the documentation and unzip it into [%s]' % (\n                self.system_name, self.interface_name, self.raw_exc.cert, self.raw_exc.SSL_ROOT_DIR)\n\n\nclass TestHostNotFoundException(BaseException):\n    \"\"\"\n    当以测试环境访问没有host_test的SmartHost时抛出\n    \"\"\"\n    pass\n\n\nclass RequestBlockedException(BaseException):\n    \"\"\"\n    当前请求被屏蔽之后抛出的异常\n    \"\"\"\n    pass\n\n\nclass APIError(BaseException):\n    \"\"\"\n    API Error\n    \"\"\"\n    def __init__(self, code):\n        self.code = code\n        BaseException.__init__(self, code.prompt)\n\n    def __str__(self):\n        return \"<APIError %s[%s]: %s>\" \\\n            % (self.code.status, self.code.code, self.code.prompt)\n\n    def format_prompt(self, prompt=None, replace=False, args=(), kwargs={}):\n        \"\"\"\n        Using a customized prompt for this ErrorCode\n        \"\"\"\n        self.code = copy.copy(self.code)\n        if prompt:\n            if replace:\n                self.code.prompt = prompt\n            else:\n                self.code.prompt += ', %s' % prompt\n\n        # Render prompt string\n        if args:\n            self.code.prompt = self.code.prompt % args\n        if kwargs:\n            self.code.prompt = self.code.prompt % kwargs\n        return self\n\n\nclass ErrorCode(object):\n    \"\"\"\n    Error Code class\n    \"\"\"\n\n    def __init__(self, code_name, code, prompt, status=200):\n        self.code_name = code_name\n        self.code = code\n        self.prompt = prompt\n        self.status = status\n\n    def as_dict(self):\n        return {\n            'result': False,\n            'code': self.code,\n            'data': None,\n            'message': self.prompt\n        }\n\n\nclass ErrorCodes(object):\n    \"\"\"\n    错误代码规范\n        7位整数，13代表蓝鲸PaaS，06代表ESB，最后3位可自定义\n\n        1306xxx\n    \"\"\"\n\n    error_codes = (\n        # 13064xx, user error\n        ErrorCode('OPERATOR_REQUIRED', 1306401, 'You must specify the current operator'),\n        ErrorCode('USER_PERMISSION_DENIED', 1306402, 'User permission is insufficient'),\n        ErrorCode('APP_PERMISSION_DENIED', 1306403, 'APP permission is insufficient'),\n        ErrorCode('COMPONENT_NOT_FOUND', 1306404, 'Not found, component class not found'),\n        ErrorCode('INACTIVE_CHANNEL', 1306405, 'Not found, inactive channel'),\n        ErrorCode('ARGUMENT_ERROR', 1306406, 'Parameters error'),\n        ErrorCode('BUFFET_CANNOT_FORMAT_PATH', 1306407, \"The component's destination request path cannot be formatted\"),\n        ErrorCode('RATE_LIMIT_RESTRICTION', 1306429, 'Access frequency limit'),\n\n        # 通用错误编码，用于目前系统中没有错误code的情况\n        ErrorCode('COMMON_ERROR', 1306000, 'System error'),\n\n        # 13062xx, 第三方系统错误\n        ErrorCode('REQUEST_THIRD_PARTY_ERROR', 1306201, 'Request third-party interface error'),\n        ErrorCode('REQUEST_SSL_ERROR', 1306203, 'Request third-party interface error'),\n        ErrorCode('TEST_HOST_NOT_FOUND', 1306206, 'Error, the component does not support access third-party test environment'),  # noqa\n        ErrorCode('REQUEST_BLOCKED', 1306207, 'Request to the third-party system is blocked'),\n        ErrorCode('THIRD_PARTY_RESULT_ERROR', 1306208, '%s system interface results in an unknown format'),\n        ErrorCode('REQEUST_DEST_METHOD_ERROR', 1306209, 'The system interface does not support the request method'),\n    )\n\n    # Init dict\n    _error_codes_dict = {}\n    for error_code in error_codes:\n        _error_codes_dict[error_code.code_name] = error_code\n\n    def __getattr__(self, code_name):\n        error_code = self._error_codes_dict[code_name]\n        return APIError(error_code)\n\n\nclass RequestThirdPartyErrorCodes(object):\n    \"\"\"\n    请求第三方系统错误代码\n    \"\"\"\n\n    error_codes = {\n        'STATUS_CODE_500': 'Third-party system internal error',\n        'STATUS_CODE_502': 'Third-party system Bad Gateway',\n\n        'STATUS_CODE_403': 'Third-party system prohibit access to this interface',\n        'STATUS_CODE_404': 'Third-party system does not find this interface',\n\n        'STATUS_CODE_302': 'Third-party system redirects this interface',\n    }\n\n\nerror_codes = ErrorCodes()\nrequest_third_party_error_codes = RequestThirdPartyErrorCodes()\n\n\nclass CommonAPIError(APIError):\n    \"\"\"\n    Shortcut for returning an error response\n    \"\"\"\n\n    def __init__(self, message, error_code=None, status=None):\n        \"\"\"\n        初始化一个常用的通用错误\n\n        :param str message: 自定义的错误消息\n        :param str error_code: 返回到相应的错误代码，默认 1306000\n        \"\"\"\n        self.message = message\n        code = error_codes.COMMON_ERROR.format_prompt(message, replace=True).code\n        if error_code:\n            code.code = error_code\n        if status:\n            code.status = status\n\n        super(CommonAPIError, self).__init__(code)\n"
  },
  {
    "path": "paas-ce/paas/esb/common/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nBases for Component Forms\n\"\"\"\nimport re\nimport json\n\nfrom django import forms\nfrom django.core import validators\nfrom django.core.exceptions import ValidationError\nfrom django.utils.encoding import smart_str\nfrom django.utils.encoding import force_str as force_unicode\nfrom django.forms import Field\nfrom django.forms.utils import ErrorDict\n\nfrom common.base_utils import FancyDict, str_bool\nfrom common.errors import CommonAPIError\n\n\ndef get_error_prompt(form):\n    \"\"\"\n    Get error messages for form\n    \"\"\"\n    content = []\n    fields = list(form.fields.keys())\n    for k, v in sorted(list(form.errors.items()), key=lambda x: fields.index(x[0])\n                       if x[0] in fields else -1):\n        _msg = force_unicode(v[0])\n        b_field = form._safe_get_field(k)\n        # Get the default error messages\n        messages = {}\n        if b_field:\n            for c in reversed(b_field.field.__class__.__mro__):\n                messages.update(getattr(c, 'default_error_messages', {}))\n\n        if b_field and _msg in list(messages.values()):\n            content.append('%s [%s] %s' % (b_field.label, b_field.name, _msg))\n        else:\n            content.append('%s' % _msg)\n    return force_unicode(content[0])\n\n\nclass BaseComponentForm(forms.Form):\n    \"\"\"\n    Base class for component form with some useful methods\n    \"\"\"\n    field_collections = ()\n\n    def __init__(self, *args, **kwargs):\n        super(BaseComponentForm, self).__init__(*args, **kwargs)\n        for collection in self.field_collections:\n            for name, field in collection.fields:\n                self.fields[name] = field\n\n    get_error_prompt = get_error_prompt\n\n    def _safe_get_field(self, field):\n        return self[field] if field in self.fields else None\n\n    @property\n    def fancy_cleaned_data(self):\n        return FancyDict(self.cleaned_data)\n\n    def clean(self):\n        data = super(BaseComponentForm, self).clean()\n        for collection in self.field_collections:\n            collection.refine_data(data)\n        return data\n\n    @classmethod\n    def from_request(cls, request):\n        if hasattr(request, 'g'):\n            return cls(request.kwargs)\n        return cls(request.kwargs)\n\n    def get_cleaned_data_or_error(self, status=None):\n        \"\"\"\n        获取当前form的cleaned data，如果验证不通过，直接抛出CommonAPIError\n        \"\"\"\n        if self.is_valid():\n            return self.cleaned_data\n        else:\n            raise CommonAPIError(self.get_error_prompt(), status=status)\n\n    def full_clean(self):\n        \"\"\"\n        Cleans all of self.data and populates self._errors and\n        self.cleaned_data.\n        \"\"\"\n        self._errors = ErrorDict()\n        # Stop further processing.\n        if not self.is_bound:\n            return\n        self.cleaned_data = {}\n        # If the form is permitted to be empty, and none of the form data has\n        # changed from the initial data, short circuit any validation.\n        if self.empty_permitted and not self.has_changed():\n            return\n        self._clean_fields()\n        # UPDATE: 如果输入数据通过不了field本身的校验，直接返回错误信息，\n        # 不进行接下来的验证\n        if not self.is_valid():\n            return\n\n        self._clean_form()\n        self._post_clean()\n        if self._errors:\n            del self.cleaned_data\n\n    def get_cleaned_data_when_exist(self, keys=[]):\n        \"\"\"\n        Get cleaned_data of key when key in self.data\n        \"\"\"\n        keys = keys or list(self.fields.keys())\n        if isinstance(keys, dict):\n            return dict([\n                (key_dst, self.cleaned_data[key_src])\n                for key_src, key_dst in list(keys.items())\n                if key_src in self.data\n            ])\n        else:\n            return dict([\n                (key, self.cleaned_data[key])\n                for key in keys\n                if key in self.data\n            ])\n\n\n# Fields\n\nclass ListField(Field):\n    \"\"\"\n    列表Field，目前支持使用逗号、分号分隔列表\n    \"\"\"\n    default_error_messages = {\n        'invalid_list': 'Must be a list',\n    }\n    delimiter = re.compile(r'[^,;\\n\\r ]+')\n\n    def __init__(self, delimiter='', *args, **kwargs):\n        if delimiter:\n            self.delimiter = re.compile(delimiter)\n        super(ListField, self).__init__(*args, **kwargs)\n\n    def to_python_unicode(self, value):\n        \"Returns a Unicode object.\"\n        if value in validators.EMPTY_VALUES:\n            return ''\n        return smart_str(value)\n\n    def to_python(self, value):\n        # 如果传入的数据类型本身就是list（ 比如用json loads过来的数据结构来校验），直接返回\n        if isinstance(value, (list, tuple)):\n            return list(value)\n\n        # 尝试转换JSON格式的list\n        try:\n            result = json.loads(value)\n            if isinstance(result, list):\n                return result\n        except Exception:\n            pass\n\n        value = self.to_python_unicode(value).strip()\n        if not value:\n            return []\n        return self.delimiter.findall(value)\n\n\nclass TypeCheckField(Field):\n    \"\"\"\n    进行参数类型校验的Field\n    \"\"\"\n    invalid_type_msg = 'Must be the specified parameter data type'\n    default_error_messages = {\n        'invalid_list_type': '%s list' % invalid_type_msg,\n        'invalid_dict_type': '%s dict' % invalid_type_msg,\n        'invalid_type': invalid_type_msg,\n    }\n\n    def __init__(self, promise_type=None, *args, **kwargs):\n        self.promise_type = promise_type\n        super(TypeCheckField, self).__init__(*args, **kwargs)\n\n    def to_python(self, value):\n        if value in validators.EMPTY_VALUES:\n            return self.promise_type()\n\n        if self.promise_type and not isinstance(value, self.promise_type):\n            if self.promise_type in [list, dict]:\n                raise ValidationError('%s %s' % (self.invalid_type_msg, self.promise_type.__name__))\n            else:\n                raise ValidationError(self.invalid_type_msg)\n\n        return value\n\n\nclass DefaultBooleanField(Field):\n    \"\"\"\n    Similiar to `forms.BooleanField` but with a default value True.\n    \"\"\"\n    def __init__(self, default=False, *args, **kwargs):\n        self.default = default\n        super(DefaultBooleanField, self).__init__(*args, **kwargs)\n\n    def to_python(self, value):\n        \"\"\"Returns a Python boolean object.\"\"\"\n        value = super(DefaultBooleanField, self).to_python(value)\n        if value in validators.EMPTY_VALUES:\n            return self.default\n\n        value = str_bool(value)\n        return value\n"
  },
  {
    "path": "paas-ce/paas/esb/common/log.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\n初始化logger实例(对logging的封装)\n\"\"\"\n# 使用python的logging模块，配合settings的LOGGING属性\nimport logging\n\n\n# the root logger, 用于整个project的logger\nlogger = logging.getLogger('root')\n\n# request and api log\nlogger_api = logging.getLogger('api')\n"
  },
  {
    "path": "paas-ce/paas/esb/components/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/get_all_user.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetAllUser(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取所有用户信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取所有用户信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }} | {{ _(\"类型\") }} | {{ _(\"必选\") }} |  {{ _(\"描述\") }}    |\n    |-----------------|-----------------|-----------------|---------------------|\n    | role            |  string         | {{ _(\"否\") }}   | {{ _(\"用户角色，0：普通用户，1：超级管理员，2：开发者，3：职能化用户，4：审计员\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n        \"data\": [\n            {\n                \"username\": \"admin\",\n                \"qq\": \"12345\",\n                \"phone\": \"12345678911\",\n                \"role\": \"1\",\n                \"email\": \"11@qq.com\",\n                \"chname\": \"admin\"\n            },\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=False)\n        role = forms.CharField(label='user role', required=False)\n\n    def handle(self):\n        self.response.payload = self.outgoing.http_client.get(\n            configs.host,\n            '/login/accounts/get_all_user/',\n            params=self.form_data,\n            headers=configs.headers,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/get_batch_user.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetBatchUser(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取多个用户信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取多个用户信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}  |  {{ _(\"类型\") }} | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | username_list |  string    | {{ _(\"是\") }}     | {{ _(\"待获取信息的用户名列表\") }}  |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"username_list\": \"admin;test\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n        \"data\": {\n            \"admin\": {\n                \"username\": \"admin\",\n                \"qq\": \"123123\",\n                \"phone\": \"11111111111\",\n                \"role\": \"1\",\n                \"email\": \"11@qq.com\",\n                \"chname\": \"admin\"\n            }\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | data      | object    | {{ _(\"返回数据，成功返回请求数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | role      | string    | {{ _(\"用户角色，0：普通用户，1：超级管理员，2：开发者，3：职能化用户，4：审计员\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=False)\n        username_list = ListField(label='username list', required=True)\n\n    def handle(self):\n        self.response.payload = self.outgoing.http_client.post(\n            configs.host,\n            '/login/accounts/get_batch_user/',\n            data=json.dumps(self.form_data),\n            headers=configs.headers,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/get_batch_user_platform_role.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetBatchUserPlatformRole(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取多个用户在平台应用的角色\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取多个用户在平台应用的角色\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | username_list |  string    | {{ _(\"是\") }}     | {{ _(\"待获取信息的用户名列表\") }}  |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"username_list\": \"admin;test\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n        \"data\": {\n            \"admin\": {\n                \"bkdata\": [1],\n                \"job\": [1],\n                \"cmdb\": [1, 2],\n            }\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | data      | object    | {{ _(\"返回数据，成功返回请求数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | [user].[app].role  | list  | {{ _(\"用户角色，0：普通用户，1：超级管理员，2：开发者，3：职能化用户，4：审计员\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=False)\n        username_list = ListField(label='username list', required=True)\n\n    def handle(self):\n        self.response.payload = self.outgoing.http_client.post(\n            configs.host,\n            '/login/accounts/get_batch_user_platform_role/',\n            data=json.dumps(self.form_data),\n            headers=configs.headers,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/get_user.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetUser(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取用户信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取用户信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n    ### {{ _(\"返回结果示例\") }}\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n        \"data\": {\n            \"username\": \"admin\",\n            \"qq\": \"12345\",\n            \"phone\": \"12345678911\",\n            \"role\": \"1\",\n            \"email\": \"11@qq.com\",\n            \"chname\": \"admin\"\n        },\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | data      | object    | {{ _(\"返回数据，成功返回请求数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | role      | string    | {{ _(\"用户角色，0：普通用户，1：超级管理员，2：开发者，3：职能化用户，4：审计员\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=False)\n        username = forms.CharField(label='username', required=False)\n        bk_username = forms.CharField(label='bk_username', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'bk_token': data['bk_token'],\n                'username': data['username'] or data['bk_username'],\n            }\n\n    def handle(self):\n        self.response.payload = self.outgoing.http_client.get(\n            configs.host,\n            '/login/accounts/get_user/',\n            params=self.form_data,\n            headers=configs.headers,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/is_login.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass IsLogin(Component):\n    \"\"\"\n    apiLabel {{ _(\"验证用户登录态\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"验证用户登录态\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_code  |  string    | {{ _(\"是\") }}     | {{ _(\"应用ID\") }}     |\n    | app_secret|  string    | {{ _(\"是\") }}     | {{ _(\"应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\") }} |\n    | bk_token  |  string    | {{ _(\"是\") }}     | {{ _(\"当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n        \"data\": {\n            \"username\": \"admin\"\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=True)\n\n    def handle(self):\n        if isinstance(self.form_data, dict):\n            self.form_data[\"request_api_from\"] = \"esb\"\n        self.response.payload = self.outgoing.http_client.get(\n            configs.host,\n            '/login/accounts/is_login/',\n            params=self.form_data,\n            headers=configs.headers,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_login/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'BK_LOGIN'\n\nheaders = {\n    'X-APP-CODE': 'esb',\n    'X-APP-TOKEN': settings.ESB_TOKEN,\n}\n\nhost = SmartHost(\n    host_prod=settings.HOST_BK_LOGIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_paas/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_paas/get_app_info.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetAppInfo(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取应用信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取应用信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | target_app_code |  string    | {{ _(\"否\") }}     | {{ _(\"目标蓝鲸应用ID，多个以英文逗号分隔，为空则表示所有应用\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"target_app_code\": \"bk_test,esb_test\",\n    }\n    ```\n    ### {{ _(\"返回结果示例\") }}\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"app_code\": \"bk_test\",\n                \"app_name\": \"BKTest\"\n            },\n            {\n                \"app_code\": \"esb_test\",\n                \"app_name\": \"ESBTest\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        target_app_code = ListField(label='target app_code', required=False)\n\n        def clean(self):\n            return {\n                'target_app_code': ';'.join(self.cleaned_data['target_app_code'])\n            }\n\n    def handle(self):\n        self.response.payload = self.outgoing.http_client.get(\n            configs.host,\n            '/paas/api/app_info/',\n            params=self.form_data,\n            headers=configs.headers,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_paas/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/bk_paas/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'BK_PAAS'\n\nheaders = {\n    'X-APP-CODE': 'esb',\n    'X-APP-TOKEN': settings.ESB_TOKEN,\n}\n\nhost = SmartHost(\n    host_prod=settings.PAAS_HOST,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/add_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass AddApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"新建业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"新建业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_name  | string     | {{ _(\"是\") }}     | {{ _(\"业务名\") }} |\n    | maintainers | string   | {{ _(\"是\") }}     | {{ _(\"运维人员, 多个人之间用逗号分隔\") }} |\n    | product_pm | string    | {{ _(\"否\") }}     | {{ _(\"产品人员，多个人之间用逗号分隔\") }} |\n    | developer | string     | {{ _(\"否\") }}     | {{ _(\"开发人员，多个人之间用逗号分隔\") }} |\n    | tester    | string     | {{ _(\"否\") }}     | {{ _(\"测试人员，多个人之间用逗号分隔\") }} |\n    | operator  | string     | {{ _(\"否\") }}     | {{ _(\"操作者，多个人之间用逗号分隔\") }}   |\n    | company_name | string  | {{ _(\"是\") }}     | {{ _(\"公司名,cmdb配置文件中定义的constants.php中的 COMPANY_NAME\") }} |\n    | level     | int        | {{ _(\"是\") }}     | {{ _(\"业务拓扑级别，2或者3\") }} |\n    | life_cycle | string    | {{ _(\"是\") }}     | {{ _(\"生成周期，1: 测试中, 2: 已上线, 3: 停运其中的一个值\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_name\": \"Test\",\n        \"maintainers\": \"admin\",\n        \"product_pm\": \"admin\",\n        \"company_name\": \"CompanyName\",\n        \"level\": 3,\n        \"life_cycle\": \"1\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"appId\": 25\n        }\n    }\n\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_name = forms.CharField(label='business name', required=True)\n        maintainers = ListField(label='OPS', required=True)\n        product_pm = ListField(label='PM', required=False)\n        developer = ListField(label='developer', required=False)\n        tester = ListField(label='test staff', required=False)\n        operator = ListField(label='operator', required=False)\n        company_name = forms.CharField(label='company name', required=True)\n        level = forms.IntegerField(label='business topology level', required=True)\n        life_cycle = forms.CharField(label='life cycle', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationName': data['app_name'],\n                'Maintainers': ','.join(data['maintainers']),\n                'ProductPm': ','.join(data['product_pm']),\n                'Developer': ','.join(data['developer']),\n                'Tester': ','.join(data['tester']),\n                'Operator': ','.join(data['operator']),\n                'CompanyName': data['company_name'],\n                'Level': data['level'],\n                'LifeCycle': data['life_cycle'],\n            }\n\n    def handle(self):\n        self.form_data['Creator'] = self.current_user.username\n\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/app/addApp',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/add_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass AddModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"新建模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"新建模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_id    |  int       | {{ _(\"是\") }}     | {{ _(\"集群ID\") }} |\n    | module_name |  string  | {{ _(\"否\") }}     | {{ _(\"模块名，多个用英文逗号分隔\") }} |\n    | operator  |  string    | {{ _(\"否\") }}     | {{ _(\"操作人\") }} |\n    | bak_operator | string  | {{ _(\"否\") }}     | {{ _(\"备份操作人\") }} |\n    | module_type | int      | {{ _(\"否\") }}     | {{ _(\"模块类型，1: 普通, 2: 数据库\") }} |\n    | properties | dict      | {{ _(\"否\") }}     | {{ _(\"模块属性，自定义属性用customerxx来修改\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"set_id\": 10,\n        \"module_name\": \"test1,test2\",\n        \"module_type\": 1,\n        \"operator\": \"user1\",\n        \"bak_operator\": \"user2\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {},\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        set_id = forms.IntegerField(label='set ID', required=True)\n        module_name = ListField(label='module name', required=False)\n        operator = forms.CharField(label='operator', required=False)\n        bak_operator = forms.CharField(label='backup operator', required=False)\n        module_type = forms.IntegerField(label='module type', required=False)\n        properties = TypeCheckField(label='module properties', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': data['set_id'],\n                'ModuleName': ','.join(data['module_name']),\n                'Operator': data['operator'],\n                'BakOperator': data['bak_operator'],\n                'ModuleType': data['module_type'],\n                'properties': json.dumps(data['properties']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/module/addModule',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/add_plat_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass AddPlatId(Component):\n    \"\"\"\n    apiLabel {{ _(\"新增子网ID\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"新增子网ID\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | plat_name |  string    | {{ _(\"是\") }}     | {{ _(\"子网名称\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"plat_name\": \"test_plat\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": 2,\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        plat_name = forms.CharField(label='subnet name', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'platName': data['plat_name']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Plat/add',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/add_set.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass AddSet(Component):\n    \"\"\"\n    apiLabel {{ _(\"新建集群\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"新建集群\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_names |  string    | {{ _(\"是\") }}     | {{ _(\"集群名称，多个以半角逗号分隔\") }} |\n    | chn_name  |  string    | {{ _(\"否\") }}     | {{ _(\"中文名称\") }} |\n    | group_flag |  string    | {{ _(\"否\") }}     | {{ _(\"分组标识\") }} |\n    | env_type  |  int       | {{ _(\"否\") }}     | {{ _(\"环境类型，包含1：测试 2：体验 3：正式，默认为3\") }} |\n    | service_status| int      | {{ _(\"否\") }}     | {{ _(\"服务状态，包含0：关闭，1：开启，默认为1\") }} |\n    | capacity | int | {{ _(\"否\") }} | {{ _(\"设计容量\") }} |\n    | des | string | {{ _(\"否\") }} | {{ _(\"描述\") }}|\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"set_names\": \"test\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_names = ListField(label='set name', required=True)\n        chn_name = forms.CharField(label='chinese name', required=False)\n        group_flag = forms.CharField(label='group flag', required=False)\n        env_type = forms.IntegerField(label='environment type', required=False)\n        service_status = forms.IntegerField(label='service status', required=False)\n        capacity = forms.IntegerField(label='capacity', required=False)\n        des = forms.CharField(label='description', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            property_data = {\n                'ChnName': data.get('chn_name'),\n                'GroupFlag': data.get('group_flag'),\n                'EnviType': data.get('env_type'),\n                'ServiceStatus': data.get('service_status'),\n                'Capacity': data.get('capacity'),\n                'Description': data.get('des')\n            }\n            property_data = {key: val for key, val in property_data.items()\n                             if val or val == 0}\n            return {\n                'ApplicationID': data['app_id'],\n                'SetName': ','.join(data['set_names']).encode('utf-8'),\n                'properties': json.dumps(property_data)\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/set/addset',\n            data=self.form_data,\n            headers_json=False\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/clone_host_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass CloneHostProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"克隆主机属性\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"克隆主机属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }}     |\n    | plat_id   |  int       | {{ _(\"是\") }}     | {{ _(\"子网ID\") }}     |\n    | org_ip    |  string    | {{ _(\"是\") }}     | {{ _(\"主机（内网IP）\") }} |\n    | dst_ip    |  string    | {{ _(\"是\") }}     | {{ _(\"目标主机（内网IP）\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"plat_id\": 1,\n        \"org_ip\": \"xxx.xxx.xxx.xxx\",\n        \"dst_ip\": \"xxx.xxx.xxx.xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"data\": null,\n        \"message\": \"\",\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        plat_id = forms.IntegerField(label='subnet ID', required=True)\n        org_ip = forms.CharField(label='source server', required=True)\n        dst_ip = forms.CharField(label='target server', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'platId': data['plat_id'],\n                'orgIp': data['org_ip'],\n                'dstIp': data['dst_ip'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/cloneHostProperty',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/del_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass DelApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/app/deleteApp',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/del_host_in_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass DelHostInApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"从业务空闲机集群中删除主机\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"从业务空闲机集群中删除主机，如果主机在当前业务下不存在，也提示不在空闲机集群的错误信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | host_id   |  int       | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"host_id\": 12345\n    }\n    ```\n    ### {{ _(\"返回结果参数说明\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null,\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        host_id = forms.IntegerField(label='host ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'HostID': data['host_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/delHostInApp',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/del_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass DelModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | module_ids|  string    | {{ _(\"是\") }}     | {{ _(\"模块ID, 多个ID用英文逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"module_ids\": \"10,11\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        module_ids = ListField(label='module IDs', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'ModuleID': ','.join(data['module_ids']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/module/delModule',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/del_plat.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass DelPlat(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除子网\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除子网\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | plat_id |  int    | {{ _(\"是\") }}     | {{ _(\"子网ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"plat_id\": 1234,\n    }\n    ```\n    ### {{ _(\"返回结果参数说明\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null,\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        plat_id = forms.IntegerField(label='子网ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'platId': data['plat_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Plat/delete',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/del_set.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass DelSet(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除集群\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除集群\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_ids   |  array     | {{ _(\"是\") }}     | {{ _(\"集群ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"set_ids\": [\"1\"]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_ids = TypeCheckField(label='set IDs', promise_type=list, required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': ','.join(data['set_ids']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/set/delset',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/del_set_host.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass DelSetHost(Component):\n    \"\"\"\n    apiLabel {{ _(\"清空集群下所有主机\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"清空集群下所有主机\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_ids   |  array     | {{ _(\"是\") }}     | {{ _(\"集群ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"set_ids\": [\"1\"]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_ids = TypeCheckField(label='set IDs', promise_type=list, required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': ','.join(data['set_ids'])\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/set/delSetHost',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/edit_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass EditApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"编辑业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"编辑业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    | int        | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | app_name  | string     | {{ _(\"否\") }}     | {{ _(\"业务名\") }} |\n    | maintainers | string   | {{ _(\"否\") }}     | {{ _(\"运维人员, 多个人之间用逗号分隔\") }} |\n    | product_pm | string    | {{ _(\"否\") }}     | {{ _(\"产品人员，多个人之间用逗号分隔\") }} |\n    | developer | string     | {{ _(\"否\") }}     | {{ _(\"开发人员，多个人之间用逗号分隔\") }} |\n    | tester    | string     | {{ _(\"否\") }}     | {{ _(\"测试人员，多个人之间用逗号分隔\") }} |\n    | operator  | string     | {{ _(\"否\") }}     | {{ _(\"操作者，多个人之间用逗号分隔\") }}   |\n    | life_cycle | string    | {{ _(\"否\") }}     | {{ _(\"生成周期，1: 测试中, 2: 已上线, 3: 停运其中的一个值\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"app_name\": \"Test\",\n        \"operator\": \"test1,test2\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {},\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        app_name = forms.CharField(label='business name', required=False)\n        maintainers = ListField(label='OPS', required=False)\n        product_pm = ListField(label='PM', required=False)\n        developer = ListField(label='developer', required=False)\n        tester = ListField(label='test staff', required=False)\n        operator = ListField(label='operator', required=False)\n        life_cycle = forms.CharField(label='life cycle', required=False)\n\n        def clean(self):\n            cleaned_data = self.cleaned_data\n            data = self.data\n            to_cc_key_map = {\n                'app_id': 'ApplicationID',\n                'app_name': 'ApplicationName',\n                'maintainers': 'Maintainers',\n                'product_pm': 'ProductPm',\n                'developer': 'Developer',\n                'tester': 'Tester',\n                'operator': 'Operator',\n                'life_cycle': 'LifeCycle',\n            }\n            params = {}\n            for bk_key, cc_key in to_cc_key_map.items():\n                if data.get(bk_key) is not None:\n                    if bk_key in ['maintainers', 'product_pm', 'developer', 'tester', 'operator']:\n                        params[cc_key] = ','.join(cleaned_data[bk_key])\n                    else:\n                        params[cc_key] = cleaned_data[bk_key]\n            return params\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/app/editApp',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/enter_ip.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass EnterIp(Component):\n    \"\"\"\n    apiLabel {{ _(\"导入主机到业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"将主机导入到业务下面。如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | ips       |  string    | {{ _(\"是\") }}     | {{ _(\"IP地址，多个用英文逗号分隔\") }} |\n    | hostname  |  string    | {{ _(\"否\") }}     | {{ _(\"主机名, 多个用英文逗号分隔\") }} |\n    | app_name  |  string    | {{ _(\"否\") }}     | {{ _(\"业务名\") }} |\n    | set_name  |  string    | {{ _(\"否\") }}     | {{ _(\"集群名\") }} |\n    | module_name |  string  | {{ _(\"否\") }}     | {{ _(\"模块名\") }} |\n    | os_type   |  string    | {{ _(\"否\") }}     | {{ _(\"操作系统类型，linux或windows\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"ips\": \"10.10.10.10,10.10.10.11\",\n        \"hostname\": \"test\",\n        \"app_name\": \"test\",\n        \"set_name\": \"test\",\n        \"module_name\": \"test\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        ips = ListField(label='ip address', required=True)\n        hostname = ListField(label='hostname', required=False)\n        app_name = forms.CharField(label='business name', required=False)\n        set_name = forms.CharField(label='set name', required=False)\n        module_name = forms.CharField(label='module name', required=False)\n        os_type = forms.CharField(label='OS type', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ip': ','.join(data['ips']),\n                'hostname': ','.join(data['hostname']),\n                'appName': data['app_name'],\n                'setName': data['set_name'],\n                'moduleName': data['module_name'],\n                'osType': data['os_type'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/enterIp',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_app_agent_status.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetAppAgentStatus(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务下Agent状态\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务下Agent状态\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"message\": \"\",\n        \"code\": \"00\",\n        \"data\": {\n            \"agentNorList\": [ ],\n            \"agentAbnorCnt\": 3,\n            \"agentNorCnt\": 0,\n            \"agentAbnorList\": [\n                {\n                    \"Ip\": \"10.0.0.1\",\n                    \"PlatId\": \"1\",\n                    \"CompanyId\": 0\n                },\n                {\n                    \"Ip\": \"10.0.0.2\",\n                    \"PlatId\": \"1\",\n                    \"CompanyId\": 0\n                },\n                {\n                    \"Ip\": \"10.0.0.3\",\n                    \"PlatId\": \"1\",\n                    \"CompanyId\": 0\n                }\n            ]\n        },\n    }\n\n    ```\n\n    ### {{ _(\"返回结果示例\") }} -- {{ _(\"失败\") }}\n\n    ```python\n    {\n        \"code\": \"50000\",\n        \"error\": {\n            \"error_data\": {\n                \"api_spec\": {\n                }\n            }\n        },\n        \"result\": false,\n        \"message\": \"{{ _('没权利访问业务') }}\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_supplier_id = forms.IntegerField(label='bk supplier id', required=False)\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            return self.get_cleaned_data_when_exist()\n\n    def handle(self):\n        bk_supplier_id = self.form_data.get('bk_supplier_id', 0)\n        agent_nor_list = []\n        agent_abnor_list = []\n\n        result = self.invoke_other('generic.cc.get_app_host_list', kwargs=self.form_data)\n        if not result['result']:\n            self.response.payload = result\n            return\n        hosts = [\n            {\n                'ip': host['InnerIP'],\n                'bk_cloud_id': host['Source'],\n            }\n            for host in result.get('data') or []\n        ]\n        if not hosts:\n            self.response.payload = {\n                'result': True,\n                'data': {\n                    'agentNorList': agent_nor_list,\n                    'agentNorCnt': len(agent_nor_list),\n                    'agentAbnorList': agent_abnor_list,\n                    'agentAbnorCnt': len(agent_abnor_list),\n                }\n            }\n            return\n\n        params = {\n            'bk_supplier_id': bk_supplier_id,\n            'hosts': hosts,\n        }\n        result = self.invoke_other('generic.v2.gse.get_agent_status', kwargs=params)\n        if not result['result']:\n            self.response.payload = result\n            return\n\n        for host in list(result['data'].values()):\n            _host = {\n                'Ip': host['ip'],\n                'PlatId': host['bk_cloud_id'],\n                'CompanyId': bk_supplier_id,\n            }\n            if host['bk_agent_alive'] == 1:\n                agent_nor_list.append(_host)\n            else:\n                agent_abnor_list.append(_host)\n        self.response.payload = {\n            'result': True,\n            'data': {\n                'agentNorList': agent_nor_list,\n                'agentNorCnt': len(agent_nor_list),\n                'agentAbnorList': agent_abnor_list,\n                'agentAbnorCnt': len(agent_abnor_list),\n            }\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_app_by_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetAppById(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 516\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"ApplicationName\": \"Test\",\n                \"GroupName\": \"\",\n                \"Description\": \"\",\n                \"BusinessDeptName\": \"\",\n                \"Creator\": \"2323232\",\n                \"Default\": \"0\",\n                \"ApplicationID\": \"51\",\n                \"DeptName\": \"23223\",\n                \"CompanyID\": \"6\",\n                \"LifeCycle\": \"内测\",\n                \"Source\": \"qcloud\",\n                \"Maintainers\": \"12345\",\n                \"CreateTime\": \"2015-12-17 17:12:14\",\n                \"ProjectID\": \"0\",\n                \"Owner\": \"232232\",\n                \"ProductPm\": \"2323232\",\n                \"Level\": \"3\",\n                \"LastTime\": \"2016-05-16 10:27:39\",\n                \"Type\": \"1\",\n                \"Display\": \"1\"\n            }\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }} -- {{ _(\"失败\") }}\n\n    ```python\n    {\n        \"code\": \"50000\",\n        \"error\": {\n            \"error_data\": {\n                \"api_spec\": {\n                }\n            }\n        },\n        \"result\": false,\n        \"message\": \"{{ _('没权利访问业务') }}\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        client.verify_app_can_use_superadmin()\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/App/getAppByID',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_app_by_user.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.forms import BaseComponentForm, DefaultBooleanField\nfrom components.component import Component\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetAppByUser(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询用户有权限的业务\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询用户有权限的业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | filter_only |  bool    | {{ _(\"否\") }}     | {{ _(\"是否不显示已经停止运行的业务，默认为False\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"ApplicationName\": \"Test\",\n                \"GroupName\": \"\",\n                \"Description\": \"\",\n                \"BusinessDeptName\": \"\",\n                \"Creator\": \"admin\",\n                \"Default\": \"0\",\n                \"ApplicationID\": \"2\",\n                \"DeptName\": \"CompanyName\",\n                \"Level\": \"3\",\n                \"LifeCycle\": \"公测\",\n                \"Source\": \"\",\n                \"Maintainers\": \"admin\",\n                \"CreateTime\": \"2016-08-10 20:43:38\",\n                \"CompanyID\": \"0\",\n                \"Owner\": \"CompanyName\",\n                \"ProductPm\": \"admin\",\n                \"LastTime\": \"2016-08-10 20:43:38\",\n                \"Type\": \"0\",\n                \"Display\": \"1\"\n            }\n        ],\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | Default   | string   | {{ _(\"为1表示系统默认创建业务\") }} |\n\n    ### {{ _(\"返回结果示例\") }} -- {{ _(\"失败\") }}\n\n    ```python\n    {\n        \"code\": \"50000\",\n        \"error\": {\n            \"error_data\": {\n                \"api_spec\": {\n                    \"msg\": \"only right to app\",\n                    \"extmsg\": \"{{ _('没权利访问业务') }}\",\n                    \"code\": \"0006\"\n                }\n            }\n        },\n        \"result\": false,\n        \"request_id\": \"bb8e27bbd86e4802ada9027e2d933cc1\",\n        \"message\": \"{{ _('没权利访问业务') }}\",\n        \"data\": null\n    }\n    ```\n\n    #### Error\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | error    | dict   | {{ _(\"错误详情，api_spec为配置平台接口的错误信息\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        filter_only = DefaultBooleanField(\n            label='display the business that has stopped running or not', default=False, required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'filterOnly': data['filter_only'],\n            }\n\n    def handle(self):\n        self.form_data.update({\n            'userName': self.current_user.username\n        })\n\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/App/getappbyuin',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_app_by_user_role.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetAppByUserRole(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据用户角色查询用户业务\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据用户角色查询用户业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | user_role |  string    | {{ _(\"是\") }}     | {{ _(\"用户角色，多个以逗号分隔，可选值为：Maintainers,ProductPm,Cooperation等\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"user_role\": \"Maintainers,ProductPm\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"ProductPm\": [\n                {\n                    \"ApplicationName\": \"Test\",\n                    \"ApplicationID\": \"1\",\n                    \"DeptName\": \"Test\",\n                    \"Owner\": \"bk\"\n                }\n            ],\n            \"Maintainers\": [\n                {\n                    \"ApplicationName\": \"Test\",\n                    \"ApplicationID\": \"1\",\n                    \"DeptName\": \"Test\",\n                    \"Owner\": \"bk\"\n                }\n            ],\n            \"Cooperation\": []\n        },\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        user_role = ListField(label='user role', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'roleList': ','.join(data['user_role']),\n            }\n\n    def handle(self):\n        # 获取当前操作者\n        self.form_data['uin'] = self.current_user.username\n\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/User/getUserRoleApp',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_app_host_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetAppHostList(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务主机列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务主机列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"Status\": \"\",\n                \"HardMemo\": \"\",\n                \"HostID\": \"1\",\n                \"BakOperator\": \"\",\n                \"SetName\": \"\",\n                \"AssetID\": \"test-1\",\n                \"InnerIP\": \"10.0.0.1\",\n                \"Region\": \"test\",\n                \"HostName\": \"host\",\n                \"IdcName\": \"\",\n                \"OSName\": \"\",\n                \"ModuleName\": \"Test\",\n                \"DeviceClass\": \"\",\n                \"ApplicationName\": \"Test\",\n                \"OuterIP\": \"\",\n                \"Operator\": \"\",\n                \"SetID\": \"1\",\n                \"ApplicationID\": \"1\",\n                \"CreateTime\": \"2016-03-22 21:07:47\",\n                \"ModuleID\": \"1\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/getapphostlist',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_app_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom components.component import Component\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetAppList(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"ApplicationName\": \"Test\",\n                \"Type\": \"0\",\n                \"Description\": \"\",\n                \"BusinessDeptName\": \"\",\n                \"Creator\": \"admin\",\n                \"Default\": \"0\",\n                \"ApplicationID\": \"2\",\n                \"Level\": \"3\",\n                \"Display\": \"1\",\n                \"Source\": \"\",\n                \"GroupName\": \"\",\n                \"Maintainers\": \"admin\",\n                \"CompanyID\": \"0\",\n                \"Owner\": \"CompanyName\",\n                \"ProductPm\": \"admin\",\n                \"LifeCycle\": \"公测\",\n                \"LastTime\": \"2016-03-25 04:02:05\",\n                \"DeptName\": \"CompanyName\",\n                \"CreateTime\": \"2016-03-18 13:08:19\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    def handle(self):\n        client = tools.CCClient(self)\n        client.verify_app_can_use_superadmin()\n        result = client.post_request(\n            self.host,\n            '/api/App/getapplist',\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_content_by_customer_group_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetContentByCustomerGroupId(Component):\n    \"\"\"\n    apiLabel 根据分组ID获取分组内容\n    apiMethod GET\n\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        application_id = forms.IntegerField(label='business ID', required=True)\n        customer_group_id = forms.CharField(label='group id', required=True)\n        version = forms.IntegerField(label='version', required=False)\n        page = forms.IntegerField(label='page', required=False)\n        page_size = forms.IntegerField(label='page size', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['application_id'],\n                'CustomerGroupID': data['customer_group_id'],\n                'version': data['version'] or 0,\n                'page': data['page'] or 1,\n                'pageSize': data['page_size'] or 20,\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/CustomerGroup/getContentByCustomerGroupId',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_customer_group_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetCustomerGroupList(Component):\n    \"\"\"\n    apiLabel 获取业务动态分组\n    apiMethod GET\n\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        application_ids = ListField(label='business IDs', required=True)\n        type = forms.IntegerField(label='type', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationIDs': ','.join(data['application_ids']),\n                'Type': data['type'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/CustomerGroup/getCustomerGroupList',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_git_server_ip.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetGitServerIp(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询公共业务的业务ID\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询公共业务的业务ID\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }} -- {{ _(\"失败\") }}\n\n    ```python\n    {\n        \"code\": \"50000\",\n        \"error\": {\n            \"error_data\": {\n                \"api_spec\": {\n                }\n            }\n        },\n        \"result\": false,\n        \"message\": \"{{ _('没权利访问业务') }}\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/getgitServerIp',\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_host_by_company_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetHostByCompanyId(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据开发商ID、子网ID、主机IP获取主机信息\") }}\n    apiMethod GET\n\n    ### 功能描述\n\n    {{ _(\"根据开发商ID、子网ID、主机IP获取主机信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | company_id|  int       | {{ _(\"是\") }}     | {{ _(\"开发商ID\") }} |\n    | ip        |  string    | {{ _(\"是\") }}     | {{ _(\"主机ip\") }} |\n    | plat_id   |  int       | {{ _(\"是\") }}     | {{ _(\"子网ID\") }} |\n\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"company_id\": 0,\n        \"ip\": \"10.0.0.1\",\n        \"plat_id\": 1,\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"ApplicationName\": \"Test\",\n            \"ModuleName\": \"Test\",\n            \"BakOperator\": \"admin\",\n            \"SetName\": \"Test\",\n            \"Operator\": \"admin\",\n            \"SetID\": \"3\",\n            \"ApplicationID\": \"1\",\n            \"ModuleID\": \"3\"\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        company_id = forms.IntegerField(label='company ID', required=True)\n        ip = forms.CharField(label='server ip', required=True)\n        plat_id = forms.IntegerField(label='subnet ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'companyId': data['company_id'],\n                'ip': data['ip'],\n                'platId': data['plat_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/App/getHostAppByCompanyId',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_host_company_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.forms import BaseComponentForm, ListField\nfrom components.component import Component\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetHostCompanyId(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取主机开发商\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取主机开发商\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | ips       |  string    | {{ _(\"是\") }}     | {{ _(\"主机内网IP，多个以逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"ips\": \"10.0.0.1,10.0.0.2\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"10.0.0.1\": {\n                \"102\": {\n                    \"CompanyID\": \"0\",\n                    \"AssetID\": \"\",\n                    \"Region\": \"\",\n                    \"Owner\": \"CompanyName\",\n                    \"PlatID\": \"1\",\n                    \"ApplicationID\": \"1\"\n                }\n            },\n            \"10.0.0.2\": {\n                \"102\": {\n                    \"CompanyID\": \"0\",\n                    \"AssetID\": \"\",\n                    \"Region\": \"\",\n                    \"Owner\": \"CompanyName\",\n                    \"PlatID\": \"1\",\n                    \"ApplicationID\": \"1\"\n                }\n            }\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        ips = ListField(label='主机内网IP', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'Ips': ','.join(data['ips']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/getCompanyIdByIps',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_host_list_by_field.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetHostListByField(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据主机属性的值group主机列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据主机属性的值group主机列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | field |  string    | {{ _(\"是\") }}     | {{ _(\"主机属性字段\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"appId\": \"1\",\n        \"field\": \"OSName\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"message\": \"\",\n        \"code\": \"00\",\n        \"data\": {\n          \"\": [\n            {\n              \"Source\": \"1\",\n              \"ApplicationID\": \"1\",\n              \"HostID\": \"60\",\n              \"InnerIP\": \"10.0.0.1\",\n              \"OSName\": \"\"\n            },\n            {\n              \"Source\": \"1\",\n              \"ApplicationID\": \"1\",\n              \"HostID\": \"61\",\n              \"InnerIP\": \"10.0.0.2\",\n              \"OSName\": \"\"\n            }\n          ]\n        },\n        \"result\": true\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        field = forms.CharField(label='host property field', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'appId': data['app_id'],\n                'field': data['field']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/getHostListByAppidAndField',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_host_list_by_ip.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetHostListByIp(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据IP查询主机信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据IP查询主机信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id  |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | ip  |  string    | {{ _(\"是\") }}     | {{ _(\"主机IP(内网IP或外网IP)\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\",\n        \"ip\": \"10.0.0.1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"Status\": \"\",\n                \"HardMemo\": \"\",\n                \"HostID\": \"1\",\n                \"BakOperator\": \"\",\n                \"SetName\": \"\",\n                \"AssetID\": \"test-1\",\n                \"InnerIP\": \"10.0.0.1\",\n                \"Region\": \"test\",\n                \"HostName\": \"host\",\n                \"IdcName\": \"\",\n                \"OSName\": \"\",\n                \"ModuleName\": \"Test\",\n                \"DeviceClass\": \"\",\n                \"ApplicationName\": \"Test\",\n                \"OuterIP\": \"\",\n                \"Operator\": \"\",\n                \"SetID\": \"1\",\n                \"ApplicationID\": \"1\",\n                \"CreateTime\": \"2016-03-22 21:07:47\",\n                \"ModuleID\": \"1\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        ip = forms.CharField(label='server ip', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'IP': data['ip']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        client.verify_app_can_use_superadmin()\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/gethostlistbyip',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_hosts_by_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetHostsByProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据 set 属性查询主机\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据 set 属性查询主机\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_id |  string    | {{ _(\"否\") }}     | {{ _(\"大区ID，多个以逗号分隔\") }} |\n    | set_envi_type |  string    | {{ _(\"否\") }}     | {{ _(\"Set 环境类型，多个以逗号分隔\") }} |\n    | set_service_status |  string    | {{ _(\"否\") }}     | {{ _(\"Set 开放状态，多个以逗号分隔\") }} |\n    | module_name |  string    | {{ _(\"否\") }}     | {{ _(\"模块名称，多个以逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\",\n        \"set_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"OuterIP\": \"\",\n                \"HostID\": \"1\",\n                \"InnerIP\": \"10.0.0.1\",\n                \"Source\": \"1\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_id = ListField(label='set ID', required=False)\n        set_envi_type = ListField(label='set environment type', required=False)\n        set_service_status = ListField(label='set service status', required=False)\n        module_name = ListField(label='module name', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': ','.join(data['set_id']),\n                'SetEnviType': ','.join(data['set_envi_type']),\n                'SetServiceStatus': ','.join(data['set_service_status']),\n                'ModuleName': ','.join(data['module_name']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/Set/gethostsbyproperty',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_ip_and_proxy_by_company.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass GetIpAndProxyByCompany(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务下IP及ProxyIP\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务下IP及ProxyIP\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | plat_id |  int    | {{ _(\"是\") }}     | {{ _(\"子网ID\") }} |\n    | ip_list |  string    | {{ _(\"是\") }}     | {{ _(\"内网IP列表，多个以逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 2,\n        \"plat_id\": 1,\n        \"ip_list\": \"10.0.0.1,10.0.0.2\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"proxy_list\": [],\n            \"ip_list\": [\n                \"10.0.0.1\",\n                \"10.0.0.2\",\n            ],\n            \"invalid_ips\": []\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        plat_id = forms.IntegerField(label='subnet ID', required=True)\n        ip_list = ListField(label='ip list', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'appId': data['app_id'],\n                'platId': data['plat_id'],\n                'ipList': ','.join(data['ip_list']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/getIPAndProxyByCompany',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_module_host_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetModuleHostList(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询模块主机列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询模块主机列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | module_id |  string    | {{ _(\"是\") }}     | {{ _(\"模块ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\",\n        \"module_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"ModuleName\": \"Test\",\n                \"IdcName\": \"\",\n                \"Source\": \"3\",\n                \"ApplicationID\": \"1\",\n                \"Status\": \"\",\n                \"HardMemo\": \"\",\n                \"Mem\": \"0\",\n                \"HostName\": \"host\",\n                \"DeviceClass\": \"\",\n                \"SetID\": \"1\",\n                \"ApplicationName\": \"Test\",\n                \"HostID\": \"1\",\n                \"BakOperator\": \"\",\n                \"OuterIP\": \"\",\n                \"Region\": \"test\",\n                \"ModuleID\": \"1\",\n                \"SetName\": \"\",\n                \"AssetID\": \"test-1\",\n                \"OSName\": \"\",\n                \"Operator\": \"\",\n                \"InnerIP\": \"10.0.0.1\",\n                \"CreateTime\": \"2016-03-22 21:07:47\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        module_id = forms.CharField(label='module ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'ModuleID': data['module_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/getmodulehostlist',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_modules.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetModules(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务下的所有模块\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务下的所有模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"ModuleName\": \"Test\",\n                \"Description\": \"\",\n                \"Default\": \"1\",\n                \"CreateTime\": \"1970-01-01 00:00:00\",\n                \"BakOperator\": \"\",\n                \"Operator\": \"\",\n                \"ModuleType\": \"1\",\n                \"LastTime\": \"2017-01-01 00:00:00\",\n                \"ApplicationID\": \"1\",\n                \"SetID\": \"1\",\n                \"ModuleID\": \"1\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/Module/getmodules',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_modules_by_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetModulesByProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据 set 属性查询模块\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据 set 属性查询模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_id    |  string    | {{ _(\"否\") }}     | {{ _(\"大区ID，多个以逗号分隔\") }} |\n    | set_envi_type |  string    | {{ _(\"否\") }}     | {{ _(\"Set 环境类型，多个以逗号分隔\") }} |\n    | set_service_status |  string    | {{ _(\"否\") }}     | {{ _(\"Set 开放状态，多个以逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\",\n        \"set_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            \"Test\"\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_id = ListField(label='set ID', required=False)\n        set_envi_type = ListField(label='set environment type', required=False)\n        set_service_status = ListField(label='set service status', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': ','.join(data['set_id']),\n                'SetEnviType': ','.join(data['set_envi_type']),\n                'SetServiceStatus': ','.join(data['set_service_status']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/Set/getmodulesbyproperty',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_plat_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom components.component import Component\nfrom common.constants import API_TYPE_Q\n\nfrom .toolkit import tools, configs\n\n\nclass GetPlatId(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询子网列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询子网列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"platId\": \"1\",\n                \"platCompany\": \"0\",\n                \"platName\": \"esb_test\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n\n    host = configs.host\n    api_type = API_TYPE_Q\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Plat/get',\n            data={},\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_proc_config_instance_status.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetProcConfigInstanceStatus(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取刷新进程实例状态\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取刷新进程实例状态\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | task_id   |  string    | {{ _(\"是\") }}     | {{ _(\"任务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"task_id\": \"INSTdd7b350898b6c6c3d1a9e3fe444f01f3\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"message\": \"\",\n        \"code\": \"00\",\n        \"data\": {\n            \"status\": 0\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | result    | boolean   | {{ _(\"包含True和False，其中True表示成功，False表示失败\") }} |\n    | code      | string    | {{ _('返回错误码，其中\"00\"表示成功，其它表示失败') }} |\n    | data      | object    | {{ _(\"返回数据，成功返回请求数据，可根据其中的 status，判断任务当前状态，0为正在更新中，1为成功，其他为失败\") }} |\n    | messge    | string    | {{ _(\"返回错误消息\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        task_id = forms.CharField(label='task ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'requestId': data['task_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/ProcConfigManage/getProcStatus',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_process_port_by_app_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetProcessPortByAppId(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询进程端口\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询进程端口\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }}     |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_id\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"message\": \"\",\n        \"code\": \"00\",\n        \"data\": [\n            {\n                \"ApplicationName\": \"Test\",\n                \"Process\": [\n                    {\n                        \"WorkPath\": \"\",\n                        \"AutoTimeGap\": \"0\",\n                        \"LastTime\": \"2017-06-14 09:57:42\",\n                        \"StartCmd\": \"\",\n                        \"FuncID\": \"0\",\n                        \"BindIP\": \"10.0.0.1\",\n                        \"FuncName\": \"\",\n                        \"Flag\": \"\",\n                        \"User\": \"\",\n                        \"StopCmd\": \"\",\n                        \"ProcNum\": \"0\",\n                        \"ReloadCmd\": \"\",\n                        \"ProcessName\": \"nginx\",\n                        \"OpTimeout\": \"0\",\n                        \"KillCmd\": \"\",\n                        \"Protocol\": \"TCP\",\n                        \"Seq\": \"0\",\n                        \"ProcGrp\": \"\",\n                        \"Port\": \"80\",\n                        \"ReStartCmd\": \"\",\n                        \"AutoStart\": \"0\",\n                        \"CreateTime\": \"2017-06-14 09:55:02\",\n                        \"PidFile\": \"\"\n                    }\n                ],\n                \"InnerIP\": \"10.0.0.1\",\n                \"Source\": \"1\",\n                \"OuterIP\": \"123.0.0.1\",\n                \"ApplicationID\": \"1\"\n            }\n        ],\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/process/getProcessPortByApplicationID',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_process_port_by_ip.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetProcessPortByIp(Component):\n    \"\"\"[CC] 根据主机查询进程端口接口\n\n    {% block api_doc %}\n\n    描述\n    ~~~~\n\n    根据主机查询进程端口接口\n\n    参数说明\n    ~~~~~~~~\n\n    {{ common_args_desc }}\n\n    其他参数\n\n    ===============  ======  ========  ================================================================\n    参数名称         必须    类型      参数说明\n    ===============  ======  ========  ================================================================\n    ips              Y       string    IP地址，多个以逗号分隔\n    ===============  ======  ========  ================================================================\n\n    请求参数示例\n    ~~~~~~~~~~~~\n\n    .. code:: json\n\n        {\n            \"ips\": \"10.0.0.1\"\n        }\n\n    结果说明\n    ~~~~~~~~\n\n    .. code:: json\n\n        {\n            \"result\": true,\n            \"code\": \"00\",\n            \"message\": \"\",\n            \"data\": [\n                {\n                    \"InnerIP\": \"10.0.0.1\",\n                    \"OuterIP\": \"\",\n                    \"ApplicationID\": \"1\",\n                    \"Source\": \"1\",\n                    \"ApplicationName\": \"资源池\",\n                    \"Process\": []\n                },\n                {\n                    \"InnerIP\": \"10.0.0.1\",\n                    \"OuterIP\": \"\",\n                    \"ApplicationID\": \"2\",\n                    \"Source\": \"1\",\n                    \"ApplicationName\": \"数据平台测试\",\n                    \"Process\": []\n                }\n            ]\n        }\n\n    {% endblock %}\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        ips = ListField(label='ip list', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ips': ','.join(data['ips'])\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/process/getProcessPortByIP',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_property_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component\nfrom common.constants import API_TYPE_Q\nfrom common.forms import BaseComponentForm\n\nfrom .toolkit import tools, configs\n\n\nclass GetPropertyList(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询属性列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询属性列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | type |  string    | {{ _(\"是\") }}     | {{ _(\"属性类型，包含1:业务，2:集群，3:模块，4:主机\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\",\n        \"type\": \"4\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"standard\": {\n                    \"HostID\": \"主机ID\",\n                    \"OuterIP\": \"外网IP\",\n                    \"InnerIP\": \"内网IP\"\n                }\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        type = forms.IntegerField(label='property type', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'appId': data['app_id'],\n                'type': data['type']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/Property/getList',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_set_host_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetSetHostList(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询Set主机列表\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询Set主机列表\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_id |  string    | {{ _(\"是\") }}     | SetID |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\",\n        \"set_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"Status\": \"\",\n                \"HardMemo\": \"\",\n                \"HostID\": \"1\",\n                \"BakOperator\": \"\",\n                \"SetName\": \"\",\n                \"AssetID\": \"test-1\",\n                \"InnerIP\": \"10.0.0.1\",\n                \"Region\": \"test\",\n                \"HostName\": \"host\",\n                \"IdcName\": \"\",\n                \"OSName\": \"\",\n                \"Mem\": \"0\",\n                \"ModuleName\": \"Test\",\n                \"DeviceClass\": \"\",\n                \"ApplicationName\": \"Test\",\n                \"OuterIP\": \"\",\n                \"Operator\": \"\",\n                \"SetID\": \"1\",\n                \"ApplicationID\": \"1\",\n                \"CreateTime\": \"2016-03-22 21:07:47\",\n                \"ModuleID\": \"1\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_id = forms.CharField(label='set ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': data['set_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/getsethostlist',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_set_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom components.component import Component\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetSetProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取所有 set 属性\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取所有 set 属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"SetEnviType\": [\n                {\n                    \"Property\": \"2\",\n                    \"value\": \"test\"\n                }\n            ],\n            \"SetServiceStatus\": [\n                {\n                    \"Property\": \"0\",\n                    \"value\": \"test\"\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/Set/getsetproperty',\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_sets_by_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetSetsByProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据 set 属性获取 set\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据 set 属性获取 set\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | app_id             |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_envi_type      |  string    | {{ _(\"否\") }}     | {{ _(\"Set 环境类型\") }} |\n    | set_service_status |  string    | {{ _(\"否\") }}     | {{ _(\"Set 开放状态\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"SetID\": \"1\",\n                \"SetName\": \"Test\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_envi_type = forms.IntegerField(label='set environment type', required=False)\n        set_service_status = forms.CharField(label='set service status', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetEnviType': data['set_envi_type'],\n                'SetServiceStatus': data['set_service_status'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/Set/getsetsbyproperty',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/get_topo_tree_by_app_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetTopoTreeByAppId(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务拓扑树\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务拓扑树\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  string    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": \"1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"ApplicationName\": \"Test\",\n            \"Type\": \"0\",\n            \"Children\": [\n                {\n                    \"Capacity\": \"0\",\n                    \"Description\": \"\",\n                    \"SetName\": \"Test\",\n                    \"Default\": \"1\",\n                    \"ServiceStatus\": \"\",\n                    \"ChnName\": \"\",\n                    \"EnviType\": \"\",\n                    \"Children\": [\n                        {\n                            \"LastTime\": \"2016-03-18 13:08:19\",\n                            \"Description\": \"\",\n                            \"Default\": \"1\",\n                            \"ModuleName\": \"Test\",\n                            \"Operator\": \"\",\n                            \"HostNum\": 1,\n                            \"SetID\": \"1\",\n                            \"ModuleID\": \"1\",\n                            \"ApplicationID\": \"1\",\n                            \"CreateTime\": \"2016-03-18 13:08:19\",\n                            \"BakOperator\": \"\"\n                        }\n                    ],\n                    \"Openstatus\": \"\",\n                    \"ParentID\": \"0\",\n                    \"SetID\": \"1\",\n                    \"LastTime\": \"2016-03-18 13:08:19\",\n                    \"ApplicationID\": \"1\",\n                    \"CreateTime\": \"2016-03-18 13:08:19\"\n                }\n            ],\n            \"Description\": \"\",\n            \"BusinessDeptName\": \"\",\n            \"Creator\": \"CompanyName\",\n            \"Default\": \"1\",\n            \"ApplicationID\": \"1\",\n            \"Level\": \"2\",\n            \"Display\": \"1\",\n            \"Source\": \"0\",\n            \"GroupName\": \"\",\n            \"Maintainers\": \"CompanyName\",\n            \"CompanyID\": \"0\",\n            \"Owner\": \"CompanyName\",\n            \"ProductPm\": \"\",\n            \"LifeCycle\": \"\",\n            \"LastTime\": \"2016-03-18 13:08:19\",\n            \"DeptName\": \"\",\n            \"CreateTime\": \"2016-03-18 13:08:19\"\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/TopSetModule/getappsetmoduletreebyappid',\n            data=self.form_data,\n        )\n        result['data'] = result.get('data') or {}\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'CC'\n\nhost = SmartHost(\n    host_prod=settings.HOST_CC,\n)\n\nDEFAULT_BK_SUPPLIER_ACCOUNT = '0'\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport urllib.request, urllib.parse, urllib.error\nimport copy\n\nfrom common.log import logger\nfrom common.errors import CommonAPIError, error_codes\nfrom esb.utils.func_ctrl import FunctionControllerClient\n\nfrom . import configs\n\n\nclass CCClient(object):\n\n    def __init__(self, component):\n        self.http_client = component.outgoing.http_client\n\n        self.app_code = component.request.app_code\n        self.bk_username = component.current_user.username\n        self.bk_supplier_account = component.request.kwargs.get('bk_supplier_account') or \\\n            configs.DEFAULT_BK_SUPPLIER_ACCOUNT\n\n    def request(self, method, host, path, params=None, data=None, headers={}, **kwargs):\n        headers = copy.copy(headers)\n        headers.update({\n            'BK_USER': self.bk_username,\n            'HTTP_BK_SUPPLIER_ACCOUNT': self.bk_supplier_account,\n        })\n        return self.http_client.request(method, host, path, params=params, data=data, headers=headers, **kwargs)\n\n    def post_request(self, host, path, data=None, headers_json=True, **kwargs):\n        headers = {}\n        if not headers_json:\n            headers = {'Content-type': 'application/x-www-form-urlencoded'}\n            data = urllib.parse.urlencode(data)\n        response = self.request('POST', host, path, data=data, headers=headers, **kwargs)\n        try:\n            code = str(response['code'])\n        except Exception:\n            logger.exception('response: %s', response)\n            raise CommonAPIError(\n                'An error occurred while requesting CC interface, '\n                'the response content does not contain code field.')\n\n        if code != '0':\n            return {\n                'result': False,\n                'message': response.get('extmsg') or response.get('msg') or 'An unknown error occurred',\n                'error': {\n                    'error_data': {\n                        'api_spec': response\n                    }\n                }\n            }\n        else:\n            return {'result': True, 'data': response.get('data')}\n\n    def verify_app_can_use_superadmin(self):\n        \"\"\"校验app是否可以使用开发商账号superadmin\"\"\"\n        if self.bk_supplier_account == 'superadmin' and \\\n                not CmdbFunctionControllerClient.is_allowed_use_superadmin(self.app_code):\n            raise error_codes.APP_PERMISSION_DENIED.format_prompt(\n                'APP [bk_app_code=%s] is not allowed to use the bk_supplier_account' % self.app_code)\n\n\nclass CmdbFunctionControllerClient(FunctionControllerClient):\n\n    @classmethod\n    def is_allowed_use_superadmin(cls, app_code):\n        \"\"\"是否允许app使用开发商账号superadmin\"\"\"\n        switch_status, wlist = cls._get_func_ctrl_by_code('cmdb::verify_superadmin::allowed_app')\n        if switch_status and app_code not in wlist:\n            return False\n        else:\n            return True\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_custom_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateCustomProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"修改主机自定义属性\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"修改主机自定义属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | host_ids  |  array     | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n    | property  |  dict      | {{ _(\"是\") }}     | {{ _(\"自定义属性\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"host_ids\": [\"10000\"],\n        \"property\": {\n            \"a\": \"test\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        host_ids = TypeCheckField(label='host IDs', promise_type=list, required=True)\n        property = TypeCheckField(label='custom property', promise_type=dict, required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'HostID': ','.join(data['host_ids']),\n                'Property': json.dumps(data['property'])\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/updateCustomProperty',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_gse_proxy_status.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateGseProxyStatus(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新主机gse agent proxy 状态\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新主机gse agent proxy 状态\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | plat_id |  int    | {{ _(\"是\") }}     | {{ _(\"主机子网ID\") }} |\n    | ip |  string    | {{ _(\"是\") }}     | {{ _(\"主机内网IP\") }} |\n    | status |  int    | {{ _(\"是\") }}     | {{ _(\"状态，包含1: 设置gse proxy, 0: 删除gse proxy\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"plat_id\": 1,\n        \"ip\": \"10.0.0.1\",\n        \"status\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null,\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        plat_id = forms.CharField(label='subnet ID', required=True)\n        ip = forms.CharField(label='host intranet IP', required=True)\n        status = forms.CharField(label='status', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'appId': data['app_id'],\n                'platId': data['plat_id'],\n                'ip': data['ip'],\n                'status': data['status']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/updateHostStatus',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_host_by_app_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateHostByAppId(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新主机的gse agent状态\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新主机的gse agent状态\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | plat_id |  int    | {{ _(\"是\") }}     | {{ _(\"子网ID\") }} |\n    | proxy_list |  array    | {{ _(\"是\") }}     | {{ _(\"Proxy信息，Proxy中每项包含内容见下面参数描述\") }} |\n\n    #### proxy_list\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | inner_ip |  string    | {{ _(\"是\") }}     | {{ _(\"内网IP\") }} |\n    | outer_ip |  string    | {{ _(\"否\") }}     | {{ _(\"外网IP\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"plat_id\": 1,\n        \"proxy_list\": [\n            {\n                \"inner_ip\": \"10.0.0.1\",\n                \"outer_ip\": \"\"\n            }\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null,\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        plat_id = forms.IntegerField(label='subnet ID', required=True)\n        proxy_list = TypeCheckField(label='Proxy info', promise_type=list, required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'appId': data['app_id'],\n                'platId': data['plat_id'],\n                'proxyList': json.dumps([\n                    UpdateHostByAppId.ProxyForm(host).get_cleaned_data_or_error()\n                    for host in data['proxy_list']\n                ]),\n            }\n\n    class ProxyForm(BaseComponentForm):\n        inner_ip = forms.CharField(label='intranet IP', required=True)\n        outer_ip = forms.CharField(label='extranet IP', required=False)\n\n        def clean(self):\n            return {\n                'InnerIP': self.cleaned_data['inner_ip'],\n                'OuterIP': self.cleaned_data['outer_ip'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Host/updateHostByAppId',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_host_info.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateHostInfo(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新主机属性\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新主机属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | host_id   |  int       | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n    | std_property |  dict   | {{ _(\"否\") }}     | {{ _(\"标准属性数据, 数组格式；允许修改的标准属性：HostName, BakOperator, Operator, Description, Source, OSName, DeviceClass, Mem, Cpu, osType\") }} |\n    | cus_property |  dict   | {{ _(\"否\") }}     | {{ _(\"自定义属性\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"host_id\": 12345,\n        \"std_property\": {\n            \"HostName\": \"hostname\",\n            \"OSName\": \"linux\",\n            \"Cpu\": 4,\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"data\": null,\n        \"message\": \"\"\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        host_id = forms.IntegerField(label='host ID', required=True)\n        std_property = TypeCheckField(label='standard property', promise_type=dict, required=False)\n        cus_property = TypeCheckField(label='custom property', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'HostID': data['host_id'],\n                'stdProperty': json.dumps(data['std_property']),\n                'cusProperty': json.dumps(data['cus_property']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/updateHostInfo',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_host_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateHostModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"修改主机模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"修改主机模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | ip        |  string    | {{ _(\"是\") }}     | {{ _(\"内网IP\") }} |\n    | plat_id   |  int       | {{ _(\"是\") }}     | {{ _(\"子网ID\") }} |\n    | dst_module_id |  string    | {{ _(\"是\") }}     | {{ _(\"目标模块ID，多个以逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 12,\n        \"ip\": \"xxx.xxx.xxx.xxx\",\n        \"plat_id\": 1,\n        \"dst_module_id\": \"1232\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"data\": null,\n        \"message\": \"\"\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        ip = forms.CharField(label='intranet IP', required=True)\n        plat_id = forms.IntegerField(label='subnet ID', required=True)\n        dst_module_id = ListField(label='target module ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'ip': data['ip'],\n                'platId': data['plat_id'],\n                'dstModuleID': ','.join(data['dst_module_id']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/host/updatehostmodule',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_host_plat.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateHostPlat(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新主机云子网\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新主机云子网\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id |  int    | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | src_plat_id |  int    | {{ _(\"是\") }}     | {{ _(\"主机现子网ID\") }} |\n    | dst_plat_id |  int    | {{ _(\"是\") }}     | {{ _(\"变更后的子网ID\") }} |\n    | ip |  string    | {{ _(\"是\") }}     | {{ _(\"主机内网IP\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"src_plat_id\": 1,\n        \"dst_plat_id\": 2,\n        \"ip\": \"10.0.0.1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null,\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        src_plat_id = forms.CharField(label='host current subnet ID', required=True)\n        ip = forms.CharField(label='host ip', required=True)\n        dst_plat_id = forms.CharField(label='target subnet ID', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'appId': data['app_id'],\n                'orgPlatId': data['src_plat_id'],\n                'ip': data['ip'],\n                'dstPlatId': data['dst_plat_id']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/Plat/updateHost',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_module_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component\nfrom common.constants import API_TYPE_OP\nfrom common.forms import BaseComponentForm\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateModuleProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"修改模块属性\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"修改模块属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | module_ids |  string   | {{ _(\"是\") }}     | {{ _(\"模块ID，多个以半角逗号分隔\") }} |\n    | module_name| string    | {{ _(\"否\") }}     | {{ _(\"模块名称，模块ID多个时无效\") }} |\n    | operator  |  string    | {{ _(\"否\") }}     | {{ _(\"维护人\") }} |\n    | bak_operator | string  | {{ _(\"否\") }}     | {{ _(\"备份维护人\") }} |\n    | module_type  | int     | {{ _(\"是\") }}     | {{ _(\"类型，包含1：普通模块 2：数据库\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"module_id\": \"4\",\n        \"module_name\": \"test\",\n        \"module_type\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        module_ids = forms.CharField(label='module ID', required=True)\n        module_name = forms.CharField(label='module name', required=False)\n        operator = forms.CharField(label='operator', required=False)\n        bak_operator = forms.CharField(label='backup operator', required=False)\n        module_type = forms.IntegerField(label='module type', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            ret_data = {\n                'ApplicationID': data['app_id'],\n                'ModuleID': data['module_ids'],\n                'ModuleName': data.get('module_name'),\n                'Operator': data.get('operator'),\n                'BakOperator': data.get('bak_operator'),\n                'ModuleType': data.get('module_type')\n            }\n            return {key: val for key, val in ret_data.items() if val or val == 0}\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/module/editmodule',\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_proc_config_instance.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateProcConfigInstance(Component):\n    \"\"\"\n    apiLabel {{ _(\"刷新进程配置实例\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"刷新进程配置实例\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | envi_id   |  int       | {{ _(\"是\") }}     | {{ _(\"环境类型；可选值：1：测试环境，2：体验环境，3：正式环境\") }} |\n\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"envi_type\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"task_id\": \"INSTdd7b350898b6c6c3d1a9e3fe444f01f3\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | result    | boolean   | {{ _(\"包含True和False，其中True表示成功，False表示失败\") }} |\n    | code      | string    | {{ _('返回错误码，其中\"00\"表示成功，其它表示失败') }} |\n    | data      | object    | {{ _(\"返回数据，成功返回请求数据，可根据其中的 task_id，利用接口 get_proc_config_instance_status 查询任务结果\") }} |\n    | messge    | string    | {{ _(\"返回错误消息\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.IntegerField(label='business ID', required=True)\n        envi_type = forms.IntegerField(label='environment type', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'EnviType': data['envi_type'],\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        result = client.post_request(\n            self.host,\n            '/api/ProcConfigManage/updateInstanceId',\n            data=self.form_data,\n        )\n        if result['result']:\n            result['data'] = {\n                'task_id': result['data']\n            }\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_set_property.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateSetProperty(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新集群属性\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新集群属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_ids   |  array     | {{ _(\"是\") }}     | {{ _(\"集群ID\") }} |\n    | set_name  |  string    | {{ _(\"否\") }}     | {{ _(\"集群名称\") }} |\n    | chn_name  |  string    | {{ _(\"否\") }}     | {{ _(\"中文名称\") }} |\n    | group_flag |  string    | {{ _(\"否\") }}     | {{ _(\"分组标识\") }} |\n    | env_type  |  int       | {{ _(\"否\") }}     | {{ _(\"环境类型，包含1：测试 2：体验 3：正式，默认为3\") }} |\n    | service_status| int      | {{ _(\"否\") }}     | {{ _(\"服务状态，包含0：关闭，1：开启，默认为1\") }} |\n    | capacity | int | {{ _(\"否\") }} | {{ _(\"设计容量\") }} |\n    | des | string | {{ _(\"否\") }} | {{ _(\"描述\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"set_ids\": [\"1\"],\n        \"set_name\": \"test\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_ids = TypeCheckField(label='set IDs', promise_type=list, required=True)\n        set_name = forms.CharField(label='set name', required=False)\n        chn_name = forms.CharField(label='chinese name', required=False)\n        group_flag = forms.CharField(label='group flag', required=False)\n        env_type = forms.IntegerField(label='environment type', required=False)\n        service_status = forms.IntegerField(label='service status', required=False)\n        capacity = forms.IntegerField(label='capacity', required=False)\n        des = forms.CharField(label='description', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            ret_data = {\n                'ApplicationID': data['app_id'],\n                'SetID': ','.join(data['set_ids']),\n                'SetName': data['set_name'],\n                'ChnName': data.get('chn_name'),\n                'GroupFlag': data.get('group_flag'),\n                'SetEnviType': data.get('env_type'),\n                'ServiceStatus': data.get('service_status'),\n                'Capacity': data.get('capacity'),\n                'Des': data.get('des')\n            }\n            return {key: val for key, val in ret_data.items() if val or val == 0}\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/set/updateset',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/cc/update_set_service_status.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\n\nfrom .toolkit import tools, configs\n\n\nclass UpdateSetServiceStatus(Component):\n    \"\"\"\n    apiLabel {{ _(\"修改集群服务状态\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"修改集群服务状态\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | app_id    |  int       | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | set_ids   |  array     | {{ _(\"是\") }}     | {{ _(\"集群ID\") }} |\n    | status    |  int       | {{ _(\"是\") }}     | {{ _(\"服务状态，包含0：关闭 1：开启\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"app_id\": 1,\n        \"set_ids\": [\"1\"],\n        \"status\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": null\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        app_id = forms.CharField(label='business ID', required=True)\n        set_ids = TypeCheckField(label='set IDs', promise_type=list, required=True)\n        status = forms.IntegerField(label='service status', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'ApplicationID': data['app_id'],\n                'SetID': ','.join(data['set_ids']),\n                'Status': data['status']\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post_request(\n            self.host,\n            '/api/set/updateSetServiceStatus',\n            data=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/fta_component.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom esb.utils.base import has_path_vars\nfrom common.errors import error_codes\nfrom components.component import BaseComponent, SetupConfMixin\nfrom .toolkit import configs\n\n\nclass FtaComponent(BaseComponent, SetupConfMixin):\n\n    sys_name = configs.SYSTEM_NAME\n\n    def handle(self):\n        # 替换目标地址中的变量模版\n        path = self.dest_path\n        if has_path_vars(self.dest_path):\n            path_vars = self.request.path_vars and self.request.path_vars.val_dict or {}\n            try:\n                path = self.dest_path.format(**path_vars)\n            except KeyError as e:\n                raise error_codes.BUFFET_CANNOT_FORMAT_PATH.format_prompt('{%s}' % e.args[0])\n\n        # 请求参数\n        params, data = None, None\n        if self.dest_http_method == 'GET':\n            params = self.request.kwargs\n            headers = {'Content-Type': 'application/x-www-form-urlencoded'}\n        elif self.dest_http_method == 'POST':\n            data = json.dumps(self.request.kwargs)\n            headers = {'Content-Type': 'application/json'}\n\n        if 'X-Secret' in self.request.headers:\n            headers.update({'X-Secret': self.request.headers['X-Secret']})\n\n        # 请求接口\n        response = self.outgoing.http_client.request(\n            self.dest_http_method,\n            configs.host,\n            path,\n            params=params,\n            data=data,\n            headers=headers,\n            timeout=60,\n        )\n        self.response.payload = response\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/http_relay.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom common.constants import API_TYPE_OP\r\nfrom .toolkit import tools, configs\r\n\r\n\r\nclass HttpRelay(Component):\r\n    \"\"\"[FTA] 外网请求代理\r\n\r\n    {% block api_doc %}\r\n\r\n    描述\r\n    ~~~~\r\n\r\n    参数说明\r\n    ~~~~~~~~\r\n\r\n    {{ common_args_desc }}\r\n\r\n    其他参数\r\n\r\n    ===============  ======  ========  ===========================================\r\n    参数名称         必须    类型      参数说明\r\n    ===============  ======  ========  ===========================================\r\n    method           Y       string    请求方法（GET, POST)\r\n    url              Y       int       请求URL\r\n    kwargs           N       kwargs    其他requests支持的参数\r\n    ===============  ======  ========  ===========================================\r\n\r\n    请求参数示例\r\n    ~~~~~~~~~~~~\r\n\r\n    .. code:: json\r\n\r\n        {\r\n            \"app_id\": \"46\",\r\n            \"method\": \"GET\",\r\n            \"url\": 'http',\r\n            \"data\": '',\r\n        }\r\n\r\n    结果说明\r\n    ~~~~~~~~\r\n\r\n    .. code:: json\r\n\r\n        {\r\n            \"result\": true,\r\n            \"code\": \"00\",\r\n            \"message\": \"\",\r\n            \"data\": ''\r\n        }\r\n\r\n    {% endblock %}\r\n    \"\"\"\r\n\r\n    sys_name = configs.SYSTEM_NAME\r\n    api_type = API_TYPE_OP\r\n\r\n    class Form(BaseComponentForm):\r\n        # 没实际用处，仅供ESB使用\r\n        app_id = forms.CharField(label='business ID', required=True)\r\n\r\n        # request 方法\r\n        method = forms.CharField(label='request method', required=True)\r\n        url = forms.CharField(label='request url', required=True)\r\n\r\n        # requests参数\r\n        kwargs = forms.CharField(label='request parameters', required=False)\r\n\r\n        def clean_kwargs(self):\r\n            return self.data.get('kwargs') or {}\r\n\r\n    def handle(self):\r\n        client = tools.HttpClient()\r\n\r\n        method = self.form_data['method']\r\n        url = self.form_data['url']\r\n        kwargs = self.form_data['kwargs']\r\n\r\n        result = client.request(method, url, **kwargs)\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/imap_relay.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\r\nimport arrow\r\n\r\nfrom common.constants import API_TYPE_OP\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import tools, configs\r\n\r\n\r\nclass ImapRelay(Component):\r\n    \"\"\"[FTA] 外网请求代理\r\n\r\n    {% block api_doc %}\r\n\r\n    描述\r\n    ~~~~\r\n\r\n    参数说明\r\n    ~~~~~~~~\r\n\r\n    {{ common_args_desc }}\r\n\r\n    其他参数\r\n\r\n    ===============  ======  ========  ===========================================\r\n    参数名称         必须    类型      参数说明\r\n    ===============  ======  ========  ===========================================\r\n    method           Y       string    请求方法（GET, POST)\r\n    url              Y       int       请求URL\r\n    kwargs           N       kwargs    其他requests支持的参数\r\n    ===============  ======  ========  ===========================================\r\n\r\n    请求参数示例\r\n    ~~~~~~~~~~~~\r\n\r\n    .. code:: json\r\n\r\n        {\r\n            \"app_id\": \"46\",\r\n            \"method\": \"GET\",\r\n            \"url\": 'http',\r\n            \"data\": '',\r\n        }\r\n\r\n    结果说明\r\n    ~~~~~~~~\r\n\r\n    .. code:: json\r\n\r\n        {\r\n            \"result\": true,\r\n            \"code\": \"00\",\r\n            \"message\": \"\",\r\n            \"data\": ''\r\n        }\r\n\r\n    {% endblock %}\r\n    \"\"\"\r\n\r\n    sys_name = configs.SYSTEM_NAME\r\n    api_type = API_TYPE_OP\r\n\r\n    class Form(BaseComponentForm):\r\n        # 没实际用处，仅供ESB使用\r\n        app_id = forms.CharField(label='business ID', required=True)\r\n\r\n        # Email 公共参数\r\n        email = forms.CharField(label='email address', required=True)\r\n        password = forms.CharField(label='email password', required=True)\r\n        imap_host = forms.CharField(label='imap address', required=True)\r\n        imap_port = forms.IntegerField(label='imap port', required=True)\r\n        secure = forms.BooleanField(label='imap SSL is on or not', required=False)\r\n\r\n        # Email 拉取参数\r\n        charset = forms.CharField(label='charset', required=False)\r\n        unseen = forms.BooleanField(label='unseen', required=False)\r\n        before = forms.CharField(label='befort', required=False)\r\n        since = forms.CharField(label='since', required=False)\r\n        size_limit = forms.IntegerField(label='size limit', required=False)\r\n        sent_from = forms.CharField(label='sent from', required=False)\r\n        sent_to = forms.CharField(label='sent to', required=False)\r\n        subject = forms.CharField(label='title', required=False)\r\n        index = forms.IntegerField(label='paging index', required=False)\r\n        limit = forms.IntegerField(label='paging limit', required=False)\r\n\r\n        def clean_before(self):\r\n            if not self.data.get('before'):\r\n                return ''\r\n            try:\r\n                return arrow.get(self.data['before'])\r\n            except Exception as error:\r\n                raise forms.ValidationError('before datetime parser error: %s' % error)\r\n\r\n        def clean_since(self):\r\n            if not self.data.get('since'):\r\n                return ''\r\n            try:\r\n                return arrow.get(self.data['since'])\r\n            except Exception as error:\r\n                raise forms.ValidationError('since datetime parser error: %s' % error)\r\n\r\n    def handle(self):\r\n        # Email 公共参数\r\n        email = self.form_data['email']\r\n        password = self.form_data['password']\r\n        imap_host = self.form_data['imap_host']\r\n        imap_port = self.form_data['imap_port']\r\n        secure = self.form_data.get('secure', False)\r\n        client = tools.IMAPClient(email, password, imap_host, imap_port, secure=secure)\r\n\r\n        # Email 拉取参数\r\n        charset = self.form_data.get('charset', 'utf-8')\r\n        unseen = self.form_data.get('unseen')\r\n        before = self.form_data.get('before')\r\n        since = self.form_data.get('since')\r\n        size_limit = self.form_data.get('size_limit', 200 * 1024)\r\n        sent_from = self.form_data.get('sent_from')\r\n        sent_to = self.form_data.get('sent_to')\r\n        subject = self.form_data.get('subject')\r\n        index = self.form_data.get('index')\r\n        limit = self.form_data.get('limit')\r\n\r\n        result = client.request(charset, unseen, before, since, size_limit, sent_from, sent_to, subject, index, limit)\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'FTA'\n\nhost = SmartHost(\n    host_prod=getattr(settings, 'HOST_FTA', '')\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/toolkit/imap.py",
    "content": "# -*- coding: utf-8 -*\r\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n# for esb safe, not patch\r\n# import gevent.monkey\r\n# gevent.monkey.patch_all()\r\n\r\nimport email\r\nimport email.header\r\nimport imaplib\r\nimport time\r\n\r\nfrom gevent.pool import Pool\r\nimport arrow\r\n\r\nfrom common.log import logger\r\n\r\nLOCALE_TZ = time.strftime(\"%Z\", time.localtime())\r\npool = Pool(1000)\r\n\r\n\r\nclass EMail(dict):\r\n    AVALIABLE_CONTENT_TYPE = frozenset([\"text/plain\", \"text/html\"])\r\n\r\n    def __getattr__(self, attr):\r\n        return self[attr]\r\n\r\n    def __init__(self, uid, message, criteria=None, charset=\"utf-8\"):\r\n        self.uid = uid\r\n        self.sender = None\r\n        self.receiver = None\r\n        self.subject = None\r\n        self.message_id = None\r\n        self.subject = None\r\n        self.content = None\r\n        self.time = None\r\n        self.criteria = None\r\n        self.charset = charset\r\n        self.refresh(message, criteria)\r\n\r\n    def to_dict(self):\r\n        return {\r\n            \"uid\": self.uid,\r\n            \"sender\": self.sender,\r\n            \"receiver\": self.receiver,\r\n            \"subject\": self.subject,\r\n            \"message_id\": self.message_id,\r\n            \"content\": self.content,\r\n            \"time\": self.time and self.time.isoformat(),\r\n            \"criteria\": self.criteria,\r\n        }\r\n\r\n    @classmethod\r\n    def decode(cls, content, charset=None):\r\n        result = []\r\n        for i, c in email.header.decode_header(content):\r\n            i = i.decode(c or charset)\r\n            result.append(i)\r\n        return \"\".join(result)\r\n\r\n    @classmethod\r\n    def _get_payload(cls, message, charset=None):\r\n        if isinstance(message, str):\r\n            return message\r\n        payload = []\r\n        for i in message.walk():\r\n            if i.is_multipart():\r\n                continue\r\n            if i.get_content_type() in cls.AVALIABLE_CONTENT_TYPE:\r\n                data = i.get_payload(decode=True)\r\n                if isinstance(data, str):\r\n                    content_charset = i.get_content_charset(charset)\r\n                    if content_charset:\r\n                        data = data.decode(content_charset, \"ignore\")\r\n                payload.append(data)\r\n\r\n        return \"\".join(payload)\r\n\r\n    def refresh(self, message, criteria=None):\r\n        if not message:\r\n            return\r\n        raw = email.message_from_string(message)\r\n        self.clear()\r\n        self.raw = raw\r\n        self.criteria = criteria\r\n\r\n        content_type = raw.get(\"Content-Type\")\r\n        if content_type:\r\n            charset = raw.get_content_charset(self.charset)\r\n        else:\r\n            charset = self.charset\r\n\r\n        self.update({\r\n            k: self.decode(v, charset)\r\n            for k, v in list(raw.items())\r\n        })\r\n        self.sender = self.get(\"From\")\r\n        self.receiver = self.get(\"To\")\r\n        self.subject = self.get(\"Subject\")\r\n        self.message_id = self.get(\"Message-ID\")\r\n        self.content = self._get_payload(raw, charset)\r\n\r\n        date = self.get(\"Date\")\r\n        if date:\r\n            self.time = arrow.get(\r\n                date, \"ddd, D MMM YYYY HH:mm:SS Z\",\r\n            ).to(LOCALE_TZ)\r\n\r\n\r\ndef contain_one(content, patterns):\r\n    for p in patterns:\r\n        if p in content:\r\n            return True\r\n    return False\r\n\r\n\r\nclass MailPoller(object):\r\n    CRITERIA_HEADER = \"RFC822.HEADER\"\r\n    CRITERIA = \"RFC822\"\r\n\r\n    def __init__(self, email, password, imap_host, imap_port, secure=False):\r\n        self.email = email\r\n        self.password = password\r\n        self.imap_host = imap_host\r\n        self.imap_port = int(imap_port)\r\n        self.secure = secure\r\n        self._imap_client = None\r\n\r\n    @property\r\n    def imap_client(self):\r\n        if self._imap_client:\r\n            return self._imap_client\r\n\r\n        if self.secure:\r\n            imap_client = imaplib.IMAP4_SSL(self.imap_host, self.imap_port)\r\n        else:\r\n            imap_client = imaplib.IMAP4(self.imap_host, self.imap_port)\r\n\r\n        imap_client.login(self.email, self.password)\r\n        self._imap_client = imap_client\r\n        self._imap_client.select()\r\n\r\n        return imap_client\r\n\r\n    def noop(self):\r\n        status, result = self.imap_client.noop()\r\n        return status\r\n\r\n    def select(self, mailbox=\"INBOX\"):\r\n        self.imap_client.select(mailbox)\r\n\r\n    def search(self, charset=None, unseen=None, before=None, since=None, size_limit=None):\r\n        queries = []\r\n        if unseen is not None:\r\n            queries.append(\"(UNSEEN)\")\r\n        if before:\r\n            queries.append('(BEFORE \"%s\")' % before.replace(days=1).strftime(\"%d-%b-%Y\"))\r\n        if since:\r\n            queries.append('(SINCE \"%s\")' % since.strftime(\"%d-%b-%Y\"))\r\n        if size_limit:\r\n            queries.append('(SMALLER %s)' % size_limit)\r\n        if not queries:\r\n            queries.append('ALL')\r\n        status, result = self.imap_client.search(charset, \" \".join(queries))\r\n        if status != \"OK\":\r\n            return []\r\n        return [EMail(uid, None, charset=charset) for uid in result[0].split()]\r\n\r\n    def filter(self, mails, sent_from=None, sent_to=None, subject=None, before=None, since=None,\r\n               fetch_header_already=False):\r\n        result_list = []\r\n        mails = mails\r\n        if not fetch_header_already:\r\n            for index in range(0, len(mails)):\r\n                self.fetch_header(mails[index * 100:(index + 1) * 100])\r\n        sent_from = sent_from.split(\",\") if sent_from else ()\r\n        sent_to = sent_to.split(\",\") if sent_to else ()\r\n        subject = [subject] if subject else []\r\n        for mail in mails:\r\n            if mail.time is None or (before and before <= mail.time) or (since and since > mail.time):\r\n                continue\r\n            if sent_from and not contain_one(mail.sender, sent_from):\r\n                continue\r\n            if sent_to and not contain_one(mail.receiver, sent_to):\r\n                continue\r\n            if subject and not contain_one(mail.subject, subject):\r\n                continue\r\n            result_list.append(mail)\r\n        return result_list\r\n\r\n    def fetch_header(self, mails):\r\n        for mail in self.iter_fetch_chunks(mails=mails, criteria=self.CRITERIA_HEADER):\r\n            pass\r\n\r\n    def fetch(self, mails, criteria=None):\r\n        mail_mappings = {str(mail.uid): mail for mail in mails}\r\n        status, result = self.imap_client.fetch(\",\".join(list(mail_mappings.keys())), criteria or self.CRITERIA)\r\n        if status != \"OK\":\r\n            raise Exception(\"fetch mail[%s] failed\", list(mail_mappings.keys()))\r\n\r\n        for i in result:\r\n            if len(i) < 2:\r\n                continue\r\n            uid, s, _ = i[0].partition(\" \")\r\n            mail = mail_mappings[uid]\r\n            mail.refresh(i[1], criteria)\r\n        return mails\r\n\r\n    def iter_fetch_chunks(self, mails, chunks=100, criteria=None):\r\n        def fetch(mail):\r\n            try:\r\n                return self.fetch(mail, criteria)\r\n            except Exception as error:\r\n                logger.error(error)\r\n                return ()\r\n\r\n        if mails:\r\n            length = len(mails)\r\n            chunks_list = [mails[i: i + chunks] for i in range(0, length, chunks)]\r\n            for chunk in pool.imap(fetch, chunks_list):\r\n                for mail in chunk:\r\n                    yield mail\r\n\r\n    def fetch_by(self, charset=None, unseen=None, before=None, since=None, size_limit=None,\r\n                 sent_from=None, sent_to=None, subject=None, index=None, limit=None):\r\n        # default charset is utf-8\r\n        charset = charset or 'utf-8'\r\n\r\n        mails = self.search(charset=charset, unseen=unseen, before=before, since=since, size_limit=size_limit)\r\n        mails = self.filter(mails, sent_from=sent_from, sent_to=sent_to, subject=subject, before=before, since=since)\r\n        if index is not None:\r\n            mails = mails[index:]\r\n        if limit is not None:\r\n            mails = mails[:limit]\r\n        _mails = []\r\n        for mail in list(self.iter_fetch_chunks(mails)):\r\n            _mails.append(mail.to_dict())\r\n        return _mails\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apis/fta/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport requests\nfrom . import imap\n\nrpool = requests.Session()\n\n\nclass HttpClient(object):\n\n    def request(self, method, url, **kwargs):\n        # 超时时间必须ESB控制\n        kwargs['timeout'] = 5\n\n        try:\n            resp = rpool.request(method, url, **kwargs)\n            result = {'result': True, 'data': resp.content}\n        except Exception as error:\n            result = {'result': False, 'message': '%s' % error}\n\n        return result\n\n\nclass IMAPClient(object):\n\n    def __init__(self, email, password, imap_host, imap_port, secure=False):\n        self.client = imap.MailPoller(email, password, imap_host, imap_port, secure=secure)\n\n    def request(self, charset=None, unseen=None, before=None, since=None, size_limit=None, sent_from=None,\n                sent_to=None, subject=None, index=None, limit=None):\n        try:\n            data = self.client.fetch_by(\n                charset, unseen, before, since, size_limit, sent_from, sent_to, subject, index, limit)\n            result = {'result': True, 'data': data}\n        except Exception as error:\n            result = {'result': False, 'message': '%s' % error}\n\n        return result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/get_all_users.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs, tools\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetAllUsers(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取所有用户信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取所有用户信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }} | {{ _(\"类型\") }} | {{ _(\"必选\") }} |  {{ _(\"描述\") }}    |\n    |-----------------|-----------------|-----------------|---------------------|\n    | bk_role         |  int         | {{ _(\"否\") }}   | {{ _(\"用户角色，0：普通用户，1：超级管理员，2：开发者，3：职能化用户，4：审计员\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_role\": 0\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"OK\",\n        \"data\": [\n            {\n                \"bk_username\": \"admin\",\n                \"qq\": \"12345\",\n                \"bk_role\": 0,\n                \"language\": \"\"zh-cn,\n                \"phone\": \"12345678911\",\n                \"wx_userid\": \"\",\n                \"email\": \"11@qq.com\",\n                \"chname\": \"admin\",\n                \"time_zone\": \"Asia/Shanghai\"\n            }\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_username    | string    | {{ _(\"用户名\") }} |\n    | qq             | string    | {{ _(\"用户QQ\") }} |\n    | language       | string    | {{ _(\"语言\") }} |\n    | phone          | string    | {{ _(\"手机号\") }} |\n    | wx_userid      | string    | {{ _(\"企业号用户USERID/公众号用户OPENID\") }} |\n    | email          | string    | {{ _(\"邮箱\") }} |\n    | chname         | string    | {{ _(\"中文名\") }} |\n    | time_zone      | string    | {{ _(\"时区\") }} |\n\n    \"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=False)\n        bk_role = forms.IntegerField(label='user role', required=False)\n\n    def handle(self):\n        client = tools.LOGINClient(self.outgoing.http_client)\n        self.response.payload = client.get(\n            host=configs.host,\n            path='/login/api/v2/get_all_users/',\n            params=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/get_batch_users.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs, tools\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetBatchUsers(Component):\n    \"\"\"\n    apiLabel {{ _(\"批量获取用户信息\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"批量获取用户信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}  |  {{ _(\"类型\") }} | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_username_list |  array    | {{ _(\"是\") }}     | {{ _(\"用户名列表\") }}  |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_username_list\": [\"admin\", \"test\"]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"OK\",\n        \"data\": {\n            \"admin\": {\n                \"bk_username\": \"admin\",\n                \"qq\": \"12345\",\n                \"bk_role\": 1,\n                \"phone\": \"11111111111\",\n                \"language\": \"zh-cn\",\n                \"wx_userid\": \"\",\n                \"email\": \"11@qq.com\",\n                \"chname\": \"admin\"\n                \"time_zone\": \"Asia/Shanghai\"\n            }\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_username    | string    | {{ _(\"用户名\") }} |\n    | qq             | string    | {{ _(\"用户QQ\") }} |\n    | language       | string    | {{ _(\"语言\") }} |\n    | phone          | string    | {{ _(\"手机号\") }} |\n    | wx_userid      | string    | {{ _(\"企业号用户USERID/公众号用户OPENID\") }} |\n    | email          | string    | {{ _(\"邮箱\") }} |\n    | chname         | string    | {{ _(\"中文名\") }} |\n    | time_zone      | string    | {{ _(\"时区\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_username_list = ListField(label='username list', required=True)\n        bk_token = forms.CharField(label='login token', required=False)\n\n    def handle(self):\n        client = tools.LOGINClient(self.outgoing.http_client)\n        self.response.payload = client.post(\n            host=configs.host,\n            path='/login/api/v2/get_batch_users/',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/get_batch_users_platform_role.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs, tools\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetBatchUsersPlatformRole(Component):\n    \"\"\"\n    apiLabel {{ _(\"批量获取用户各平台角色信息\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"批量获取用户各平台角色信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_username_list |  array     | {{ _(\"是\") }}     | {{ _(\"用户名列表\") }}  |\n    | bk_token         |  string    | {{ _(\"否\") }}     | {{ _(\"登录票据\") }}  |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_username_list\": [\"admin\", \"test\"]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"OK\",\n        \"data\": {\n            \"admin\": {\n                \"bkdata\": [\n                    1\n                ],\n                \"job\": [\n                    2\n                ]\n            }\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | key1        | string  | {{ _(\"用户名\") }} |\n    | key1.key2   | string  | {{ _(\"产品代号\") }}\n    | key1.key2.value | list  | {{ _(\"用户角色，0：普通用户，1：超级管理员，2：开发者，3：职能化用户，4：审计员\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_username_list = ListField(label='username list', required=True)\n        bk_token = forms.CharField(label='login token', required=False)\n\n    def handle(self):\n        client = tools.LOGINClient(self.outgoing.http_client)\n        self.response.payload = client.post(\n            host=configs.host,\n            path='/login/api/v2/get_batch_users_platform_role/',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/get_user.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs, tools\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetUser(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取用户信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取用户信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"OK\",\n        \"data\": {\n            \"bk_username\": \"admin\",\n            \"qq\": \"12345\",\n            \"bk_role\": 1,\n            \"language\": \"zh-cn\",\n            \"phone\": \"12345678911\",\n            \"wx_userid\": \"\",\n            \"email\": \"11@qq.com\",\n            \"chname\": \"admin\",\n            \"time_zone\": \"Asia/Shanghai\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_username    | string    | {{ _(\"用户名\") }} |\n    | qq             | string    | {{ _(\"用户QQ\") }} |\n    | language       | string    | {{ _(\"语言\") }} |\n    | phone          | string    | {{ _(\"手机号\") }} |\n    | wx_userid      | string    | {{ _(\"企业号用户USERID/公众号用户OPENID\") }} |\n    | email          | string    | {{ _(\"邮箱\") }} |\n    | chname         | string    | {{ _(\"中文名\") }} |\n    | time_zone      | string    | {{ _(\"时区\") }} |\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=False)\n        bk_username = forms.CharField(label='username', required=False)\n\n    def handle(self):\n        client = tools.LOGINClient(self.outgoing.http_client)\n        self.response.payload = client.get(\n            host=configs.host,\n            path='/login/api/v2/get_user/',\n            params=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/is_login.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs, tools\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass IsLogin(Component):\n    \"\"\"\n    apiLabel {{ _(\"用户登录态验证\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"用户登录态验证\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_token  |  string    | {{ _(\"是\") }}     | {{ _(\"登录票据\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"OK\",\n        \"data\": {\n            \"bk_username\": \"admin\"\n        }\n    }\n    ```\n    \"\"\"\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        bk_token = forms.CharField(label='login token', required=True)\n\n    def handle(self):\n        client = tools.LOGINClient(self.outgoing.http_client)\n        if isinstance(self.form_data, dict):\n            self.form_data[\"request_api_from\"] = \"esb\"\n        self.response.payload = client.get(\n            host=configs.host,\n            path='/login/api/v2/is_login/',\n            params=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'BK_LOGIN'\n\nheaders = {\n    'X-APP-CODE': 'esb',\n    'X-APP-TOKEN': settings.ESB_TOKEN,\n}\n\nhost = SmartHost(\n    host_prod=settings.HOST_BK_LOGIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_login/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom . import configs\n\n\nclass LOGINClient(object):\n\n    def __init__(self, http_client):\n        self.http_client = http_client\n\n    def request(self, method, host, path, data=None, params=None):\n        result = self.http_client.request(\n            method=method,\n            host=host,\n            path=path,\n            data=data,\n            params=params,\n            headers=configs.headers,\n        )\n        return self.format_result(result)\n\n    def post(self, host, path, data=None):\n        return self.request(method='POST', host=host, path=path, data=data)\n\n    def get(self, host, path, params=None):\n        return self.request(method='GET', host=host, path=path, params=params)\n\n    def format_result(self, result):\n        if result['bk_error_code'] == 0:\n            return {\n                'result': True,\n                'code': 0,\n                'data': result['data'],\n                'message': result.get('bk_error_msg', ''),\n            }\n\n        return {\n            'result': False,\n            'code': result['bk_error_code'],\n            'data': result.get('data', None),\n            'message': result['bk_error_msg'],\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/create_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom components.component import Component\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\n\nfrom .toolkit import tools, configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass CreateApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"创建轻应用\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"创建轻应用\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_light_app_name |  string  | {{ _(\"是\") }}     | {{ _(\"轻应用名称\") }} |\n    | app_url           |  string  | {{ _(\"是\") }}     | {{ _(\"应用链接\") }} |\n    | developer         |  string  | {{ _(\"是\") }}     | {{ _(\"应用开发者用户名，多个以分号';'分隔\") }} |\n    | app_tag           |  string  | {{ _(\"否\") }}     | {{ _('应用分类，可选分类： \"OpsTools\"（运维工具），\"MonitorAlarm\"（监控告警），\"ConfManage\"（配置管理），\"DevTools\"（开发工具），\"EnterpriseIT\"（企业IT），\"OfficeApp\"（办公应用），\"Other\"（其它）。如果传入空参数或不是上诉分类，则使用 \"Other\"') }} |\n    | introduction      |  string  | {{ _(\"否\") }}     | {{ _(\"应用的简介\") }} |\n    | width             |  int     | {{ _(\"否\") }}     | {{ _(\"应用在桌面打开窗口宽度\") }} |\n    | height            |  int     | {{ _(\"否\") }}     | {{ _(\"应用在桌面打开窗口高度\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"gcloud\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_light_app_name\": \"轻应用测试\",\n        \"app_url\": \"http://test.bking.com/o/gcloud/xxx/\",\n        \"developer\": \"test1;test2\",\n        \"introduction\": \"introduction\",\n        \"width\": 1024,\n        \"height\": 768\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"bk_light_app_code\": \"gcloud_fdfh2kl0k\"\n        }\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_light_app_name = forms.CharField(label='bk light app name', required=True)\n        app_url = forms.CharField(label='app url', required=True)\n        developer = ListField(label='developer', required=True)\n        app_tag = forms.CharField(label='app tag', required=False)\n        introduction = forms.CharField(label='introduction', required=False)\n        width = forms.IntegerField(label='width', required=False)\n        height = forms.IntegerField(label='height', required=False)\n\n        def clean(self):\n            param_keys = [\n                'bk_light_app_name', 'app_url', 'developer',\n                'app_tag', 'introduction', 'width', 'height'\n            ]\n            params = self.get_cleaned_data_when_exist(param_keys)\n            params['developer'] = ';'.join(params['developer'])\n            return params\n\n    def handle(self):\n        self.form_data['creator'] = self.current_user.username\n        self.form_data['bk_app_code'] = self.request.app_code\n\n        client = tools.PAASClient(self.outgoing.http_client)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/paas/api/v2/create_app/',\n            data=json.dumps(self.form_data)\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/del_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom components.component import Component\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\n\nfrom .toolkit import tools, configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass DelApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"下架轻应用\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"下架轻应用\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_light_app_code  |  string  | {{ _(\"是\") }}     | {{ _(\"轻应用的 ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_light_app_code\": \"gcloud_fdfh2kl0k\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_light_app_code = forms.CharField(label='bk light app code', required=True)\n\n    def handle(self):\n        self.form_data['operator'] = self.current_user.username\n\n        client = tools.PAASClient(self.outgoing.http_client)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/paas/api/v2/del_app/',\n            data=json.dumps(self.form_data)\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/edit_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom components.component import Component\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\n\nfrom .toolkit import tools, configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass EditApp(Component):\n    \"\"\"\n    apiLabel {{ _(\"编辑轻应用\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"编辑轻应用\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_light_app_code |  string  | {{ _(\"是\") }}     | {{ _(\"轻应用的 ID\") }} |\n    | bk_light_app_name |  string  | {{ _(\"否\") }}     | {{ _(\"轻应用名称\") }} |\n    | app_url           |  string  | {{ _(\"否\") }}     | {{ _(\"应用链接\") }} |\n    | developer         |  string  | {{ _(\"否\") }}     | {{ _(\"应用开发者用户名，多个以分号';'分隔\") }} |\n    | app_tag           |  string  | {{ _(\"否\") }}     | {{ _(\"应用分类\") }} |\n    | introduction      |  string  | {{ _(\"否\") }}     | {{ _(\"应用的简介\") }} |\n    | width             |  int     | {{ _(\"否\") }}     | {{ _(\"应用在桌面打开窗口宽度\") }} |\n    | height            |  int     | {{ _(\"否\") }}     | {{ _(\"应用在桌面打开窗口高度\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"gcloud\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_light_app_code\": \"gcloud_fdfh2kl0k\",\n        \"bk_light_app_name\": \"轻应用测试\",\n        \"app_url\": \"http://test.bking.com/o/gcloud/xxx/\",\n        \"developer\": \"test1;test2\",\n        \"introduction\": \"introduction\",\n        \"width\": 1024,\n        \"height\": 768\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_light_app_code = forms.CharField(label='bk light app code', required=True)\n        bk_light_app_name = forms.CharField(label='bk light app name', required=False)\n        app_url = forms.CharField(label='app url', required=False)\n        developer = ListField(label='developer', required=False)\n        app_tag = forms.CharField(label='app tag', required=False)\n        introduction = forms.CharField(label='introduction', required=False)\n        width = forms.IntegerField(label='width', required=False)\n        height = forms.IntegerField(label='height', required=False)\n\n        def clean(self):\n            param_keys = [\n                'bk_light_app_code', 'bk_light_app_name', 'app_url',\n                'developer', 'app_tag', 'introduction', 'width', 'height'\n            ]\n            params = self.get_cleaned_data_when_exist(param_keys)\n            if 'developer' in params:\n                params['developer'] = ';'.join(params['developer'])\n            return params\n\n    def handle(self):\n        self.form_data['operator'] = self.current_user.username\n\n        client = tools.PAASClient(self.outgoing.http_client)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/paas/api/v2/edit_app/',\n            data=json.dumps(self.form_data)\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/get_app_info.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import configs, tools\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass GetAppInfo(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取应用信息\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取应用信息，支持批量获取\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | target_app_code |  string    | {{ _(\"否\") }}     | {{ _(\"target_app_code 表示应用 ID，多个 ID 以英文分号分隔，target_app_code 为空则表示所有应用\") }} |\n    | fields          |  string    | {{ _(\"否\") }}     | {{ _('fields 需要返回的字段，多个字段以英文分号分割，如果不传或传入 \"\"，则返回应用的 bk_app_code、bk_app_name 字段。可选的字段有：bk_app_code（应用ID），bk_app_name（应用名），introduction（应用简介），creator（创建者），developer（开发人员）') }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"target_app_code\": \"bk_test;esb_test\",\n    }\n    ```\n    ### {{ _(\"返回结果示例\") }}\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"bk_app_code\": \"bk_test\",\n                \"bk_app_name\": \"BKTest\"\n            },\n            {\n                \"bk_app_code\": \"esb_test\",\n                \"bk_app_name\": \"ESBTest\"\n            }\n        ]\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        target_app_code = ListField(label='target app code', required=False)\n        fields = ListField(label='fields', required=False)\n\n        def clean(self):\n            return {\n                'target_app_code': ';'.join(self.cleaned_data['target_app_code']),\n                'fields': ';'.join(self.cleaned_data['fields'])\n            }\n\n    def handle(self):\n        client = tools.PAASClient(self.outgoing.http_client)\n        self.response.payload = client.get(\n            configs.host,\n            '/paas/api/v2/app_info/',\n            params=self.form_data,\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/modify_app_logo.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom components.component import Component\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\n\nfrom .toolkit import tools, configs\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass ModifyAppLogo(Component):\n    \"\"\"\n    apiLabel {{ _(\"修改轻应用 logo\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"修改轻应用 logo\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_light_app_code |  string  | {{ _(\"是\") }}     | {{ _(\"轻应用的 ID\") }} |\n    | logo              |  string  | {{ _(\"是\") }}     | {{ _(\"png 格式图片文件的 Base64 编码字符串\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"gcloud\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_light_app_code\": \"gcloud_fdfh2kl0k\",\n        \"logo\": \"iVBORw0KGgoA......AAABJRU5ErkJggg==\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_light_app_code = forms.CharField(label='bk light app code', required=True)\n        logo = forms.CharField(label='logo', required=True)\n\n    def handle(self):\n        self.form_data['operator'] = self.current_user.username\n\n        client = tools.PAASClient(self.outgoing.http_client)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/paas/api/v2/modify_app_logo/',\n            data=json.dumps(self.form_data)\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'BK_PAAS'\n\nheaders = {\n    'X-APP-CODE': 'esb',\n    'X-APP-TOKEN': settings.ESB_TOKEN,\n}\n\nhost = SmartHost(\n    host_prod=getattr(settings, 'PAAS_HOST', '')\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/bk_paas/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom . import configs\n\n\nclass PAASClient(object):\n\n    def __init__(self, http_client):\n        self.http_client = http_client\n\n    def request(self, method, host, path, data=None, params=None):\n        result = self.http_client.request(\n            method=method,\n            host=host,\n            path=path,\n            data=data,\n            params=params,\n            headers=configs.headers,\n        )\n        return self.format_result(result)\n\n    def post(self, host, path, data=None):\n        return self.request(method='POST', host=host, path=path, data=data)\n\n    def get(self, host, path, params=None):\n        return self.request(method='GET', host=host, path=path, params=params)\n\n    def format_result(self, result):\n        if result['bk_error_code'] == 0:\n            return {\n                'result': True,\n                'code': 0,\n                'data': result['data'],\n                'message': result.get('bk_error_msg', ''),\n            }\n\n        return {\n            'result': False,\n            'code': result['bk_error_code'],\n            'data': result.get('data', None),\n            'message': result['bk_error_msg'],\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/add_host_to_resource.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass AddHostToResource(Component):\n    \"\"\"\n    apiLabel {{ _(\"新增主机到资源池\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"新增主机到资源池\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account |  string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | host_info      |  dict    | {{ _(\"是\") }}     | {{ _(\"主机信息\") }} |\n    | bk_biz_id      |  int     | {{ _(\"否\") }}     | {{ _(\"业务ID\") }}   |\n\n    #### host_info\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_host_innerip |  string   | {{ _(\"是\") }}     | {{ _(\"主机内网ip\") }} |\n    | import_from     |  string   | {{ _(\"是\") }}     | {{ _(\"主机导入来源,以api方式导入为3\") }} |\n    | bk_cloud_id     |  int      | {{ _(\"是\") }}     | {{ _(\"云区域ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"host_info\": {\n            \"0\": {\n                \"bk_host_innerip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0,\n                \"import_from\": \"3\"\n            }\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        host_info = TypeCheckField(label='host info', required=True)\n        bk_biz_id = forms.IntegerField(label='business ID', required=False)\n\n        def clean(self):\n            return self.get_cleaned_data_when_exist()\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            self.host,\n            path='/api/v3/hosts/add',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/bind_role_privilege.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass BindRolePrivilege(Component):\n    \"\"\"\n    apiLabel {{ _(\"绑定角色权限\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"绑定角色权限\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account |  string    | {{ _(\"是\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_obj_id           |  string    | {{ _(\"是\") }}     | {{ _(\"模型ID\") }} |\n    | bk_property_id      |  string    | {{ _(\"是\") }}     | {{ _(\"模型对应用户角色属性ID\") }}   |\n    | data                |  list      | {{ _(\"否\") }}     | {{ _(\"角色权限数据，输入为空数组则不绑定任何权限\") }}   |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | hostupdate | string | {{ _(\"否\") }} | {{ _(\"主机编辑\") }} |\n    | hosttrans  | string | {{ _(\"否\") }} | {{ _(\"主机转移\") }} |\n    | topoupdate | string | {{ _(\"否\") }} | {{ _(\"主机拓扑编辑\") }}  |\n    | customapi  | string | {{ _(\"否\") }} | {{ _(\"自定义api\") }}  |\n    | proconfig  | string | {{ _(\"否\") }} | {{ _(\"进程管理\") }}  |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_obj_id\": \"biz\",\n        \"bk_property_id\": \"test\",\n        \"data\": [\n            \"hostupdate\",\n            \"hosttrans\",\n            \"topoupdate\",\n            \"customapi\",\n            \"proconfig\"\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"success\",\n        \"data\": \"success\"\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=True)\n        bk_obj_id = forms.CharField(label='bk obj id', required=True)\n        bk_property_id = forms.CharField(label='bk property id', required=True)\n        data = ListField(label='data', required=False)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            self.host,\n            path='/api/v3/topo/privilege/{bk_supplier_account}/{bk_obj_id}/{bk_property_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/cc_component.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.errors import error_codes\nfrom common.constants import API_TYPE_OP\nfrom components.component import ConfComponent\nfrom .toolkit import tools, configs\n\n\nclass CcComponent(ConfComponent):\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    def handle(self):\n        request_info = self.get_request_info()\n\n        client = tools.CCClient(self)\n        request_handler = getattr(client, self.dest_http_method.lower(), None)\n        if not request_handler:\n            raise error_codes.REQEUST_DEST_METHOD_ERROR.format_prompt(self.dest_http_method.upper())\n        self.response.payload = request_handler(\n            host=self.host,\n            path=request_info['path'],\n            params=request_info['params'],\n            data=request_info['data'],\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/create_business.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass CreateBusiness(Component):\n    \"\"\"\n    apiLabel {{ _(\"新建业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"新建业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | data           | dict    | {{ _(\"是\") }}     | {{ _(\"业务数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_biz_name       |  string  | {{ _(\"是\") }}     | {{ _(\"业务名\") }} |\n    | bk_biz_maintainer |  string  | {{ _(\"是\") }}     | {{ _(\"运维人员\") }} |\n    | bk_biz_productor  |  string  | {{ _(\"是\") }}     | {{ _(\"产品人员\") }} |\n    | bk_biz_developer  |  string  | {{ _(\"是\") }}     | {{ _(\"开发人员\") }} |\n    | bk_biz_tester     |  string  | {{ _(\"是\") }}     | {{ _(\"测试人员\") }} |\n    | time_zone         |  string  | {{ _(\"是\") }}     | {{ _(\"时区\") }} |\n\n    **{{ _(\"注意：此处的输入参数仅对必填以及系统内置的参数做了说明，其余需要填写的参数取决于用户自己定义的属性字段\") }}**\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"data\": {\n            \"bk_biz_name\": \"cc_app_test\",\n            \"bk_biz_maintainer\": \"admin\",\n            \"bk_biz_productor\": \"admin\",\n            \"bk_biz_developer\": \"admin\",\n            \"bk_biz_tester\": \"admin\",\n            \"time_zone\": \"Asia/Shanghai\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"bk_biz_id\": 2\n        }\n    }\n    ```\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        data = TypeCheckField(label='data', promise_type=dict, required=True)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/biz/{bk_supplier_account}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/create_custom_query.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass CreateCustomQuery(Component):\n    \"\"\"\n    apiLabel {{ _(\"添加自定义API\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"添加自定义api\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | info      |  string  | {{ _(\"是\") }}     | {{ _(\"通用查询条件\") }} |\n    | name      |  string  | {{ _(\"是\") }}     | {{ _(\"收藏的名称\") }} |\n\n    #### info\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_obj_id |  string   | {{ _(\"否\") }}     | {{ _(\"对象名,可以为biz,set,module,host,object\") }} |\n    | fields    |  array    | {{ _(\"否\") }}     | {{ _(\"查询输出字段\") }} |\n    | condition |  array    | {{ _(\"否\") }}     | {{ _(\"查询条件\") }} |\n\n    #### info.condition.condition\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | field     |  string    | {{ _(\"否\") }}     | {{ _(\"对象的字段\") }} |\n    | operator  |  string    | {{ _(\"否\") }}     | {{ _(\"操作符, $eq为相等，$neq为不等，$in为属于，$nin为不属于\") }} |\n    | value     |  string    | {{ _(\"否\") }}     | {{ _(\"字段对应的值\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"info\": \"{\\\\\"condition\\\\\":[{\\\\\"bk_obj_id\\\\\":\\\\\"biz\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"default\\\\\",\\\\\"operator\\\\\":\\\\\"$ne\\\\\",\\\\\"value\\\\\":1}],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"set\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"module\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"host\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"bk_host_innerip\\\\\",\\\\\"operator\\\\\":\\\\\"$eq\\\\\",\\\\\"value\\\\\":\\\\\"127.0.0.1\\\\\"}],\\\\\"fields\\\\\":[\\\\\"bk_host_innerip\\\\\",\\\\\"bk_host_outerip\\\\\",\\\\\"bk_agent_status\\\\\"]}]}\",\n        \"name\": \"api1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"id\": \"b80nu3dmjrccd9i5r1eg\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | id     | string       | {{ _(\"自定义api主键ID\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        info = forms.CharField(label='info', required=True)\n        name = forms.CharField(label='name', required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/userapi',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/create_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass CreateModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"创建模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"创建模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | bk_set_id      | int     | {{ _(\"是\") }}     | {{ _(\"集群id\") }} |\n    | data           | dict    | {{ _(\"是\") }}     | {{ _(\"业务数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_parent_id      | int     | {{ _(\"是\") }}     | {{ _(\"父实例节点的ID，当前实例节点的上一级实例节点，在拓扑结构中对于module一般指的是set的bk_set_id\") }} |\n    | bk_module_name    | string  | {{ _(\"是\") }}     | {{ _(\"模块名\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_set_id\": 10,\n        \"data\": {\n            \"bk_parent_id\": 10,\n            \"bk_module_name\": \"test\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"bk_module_id\": 10\n        }\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_set_id = forms.IntegerField(label='set id', required=True)\n        data = TypeCheckField(label='data', promise_type=dict, required=True)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data']['bk_supplier_account'] = data['bk_supplier_account']\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/module/{bk_biz_id}/{bk_set_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/create_set.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass CreateSet(Component):\n    \"\"\"\n    apiLabel {{ _(\"创建集群\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"创建集群\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | data           | dict    | {{ _(\"是\") }}     | {{ _(\"集群数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_parent_id        |  int     | {{ _(\"是\") }}     | {{ _(\"父节点的ID\") }} |\n    | bk_set_name         |  string  | {{ _(\"是\") }}     | {{ _(\"集群名字\") }} |\n    | default             |  int     | {{ _(\"否\") }}     | {{ _(\"0-普通集群，1-内置模块集合，默认为0\") }} |\n\n    **{{ _(\"注意：其它需要的字段由模型定义\") }}**\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"data\": {\n            \"bk_parent_id\": 1,\n            \"bk_set_name\": \"test-set\",\n            \"bk_set_desc\": \"test-set\",\n            \"bk_capacity\": 1000,\n            \"description\": \"description\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"bk_set_id\": 1\n        }\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        data = TypeCheckField(label='data', promise_type=dict, required=True)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data']['bk_supplier_account'] = data['bk_supplier_account']\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/set/{bk_biz_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/delete_business.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass DeleteBusiness(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.delete(\n            host=self.host,\n            path='/api/v3/biz/{bk_supplier_account}/{bk_biz_id}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/delete_custom_query.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass DeleteCustomQuery(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除自定义API\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除自定义api\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | id        |  string  | {{ _(\"是\") }}     | {{ _(\"主键ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"id\": \"xxx\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        id = forms.CharField(label='id', required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.delete(\n            host=self.host,\n            path='/api/v3/userapi/{bk_biz_id}/{id}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/delete_host.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass DeleteHost(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除主机\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除主机\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_host_id     |  string  | {{ _(\"是\") }}     | {{ _(\"主机id，多个以逗号分隔\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_host_id\": \"1,2,3\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_host_id = ListField(label='host ids', required=True)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['bk_host_id'] = ','.join(data['bk_host_id'])\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.delete(\n            host=self.host,\n            path='/api/v3/hosts/batch',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/delete_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass DeleteModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | bk_set_id      | int     | {{ _(\"是\") }}     | {{ _(\"集群id\") }} |\n    | bk_module_id   | int     | {{ _(\"是\") }}     | {{ _(\"模块id\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_set_id\": 1,\n        \"bk_module_id\": 1\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_set_id = forms.IntegerField(label='set id', required=True)\n        bk_module_id = forms.IntegerField(label='module id', required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.delete(\n            host=self.host,\n            path='/api/v3/module/{bk_biz_id}/{bk_set_id}/{bk_module_id}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/delete_set.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass DeleteSet(Component):\n    \"\"\"\n    apiLabel {{ _(\"删除集群\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"删除集群\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | bk_set_id      | int     | {{ _(\"是\") }}     | {{ _(\"集群id\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_set_id\": 10\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_set_id = forms.IntegerField(label='set id', required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.delete(\n            host=self.host,\n            path='/api/v3/set/{bk_biz_id}/{bk_set_id}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/get_custom_query_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetCustomQueryData(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据自定义api获取数据\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据自定义api获取数据\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | id        |  string  | {{ _(\"是\") }}     | {{ _(\"主键ID\") }} |\n    | start     |  int     | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit     |  int     | {{ _(\"是\") }}     | {{ _(\"每页限制条数,最大200\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"id\": \"xxx\",\n        \"start\": 0,\n        \"limit\": 10\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"count\": 1,\n            \"info\": [\n                {\n                    \"biz\": {\n                        \"bk_biz_id\": 1,\n                        \"bk_biz_name\": \"test\",\n                        \"bk_biz_maintainer\": \"admin\",\n                        \"bk_biz_productor\": \"admin\"\n                    },\n                    \"host\": {\n                        \"bk_host_id\": 1,\n                        \"bk_host_name\": \"nginx-1\",\n                        \"bk_host_innerip\": \"10.0.0.1\",\n                        \"bk_cloud_id\": 0\n                    },\n                    \"module\": {\n                        \"bk_module_name\": \"module-test\"\n                    },\n                    \"set\": {\n                        \"bk_set_name\": \"set-test\"\n                    }\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int          | {{ _(\"记录条数\") }} |\n    | info      | array        | {{ _(\"主机实际数据\") }} |\n\n    #### data.info\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | biz      | dict       | {{ _(\"主机所属的业务信息\") }} |\n    | set      | dict       | {{ _(\"主机所属的集群信息\") }} |\n    | module   | dict       | {{ _(\"主机所属的模块信息\") }} |\n    | host     | dict       | {{ _(\"主机自身属性\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        id = forms.CharField(label='id', required=True)\n        start = forms.IntegerField(label='start', required=True)\n        limit = forms.IntegerField(label='limit', required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.get(\n            host=self.host,\n            path='/api/v3/userapi/data/{bk_biz_id}/{id}/{start}/{limit}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/get_custom_query_detail.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetCustomQueryDetail(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取自定义API详情\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取自定义api详情\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | id        |  string  | {{ _(\"是\") }}     | {{ _(\"主键ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"id\": \"xxx\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"bk_biz_id\": 1,\n            \"name\": \"api1\",\n            \"id\": \"bacfet4kd42325venmcg\",\n            \"info\": \"{\\\\\"condition\\\\\":[{\\\\\"bk_obj_id\\\\\":\\\\\"biz\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"default\\\\\",\\\\\"operator\\\\\":\\\\\"$ne\\\\\",\\\\\"value\\\\\":1}],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"set\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"module\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"host\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"bk_host_innerip\\\\\",\\\\\"operator\\\\\":\\\\\"$eq\\\\\",\\\\\"value\\\\\":\\\\\"127.0.0.1\\\\\"}],\\\\\"fields\\\\\":[\\\\\"bk_host_innerip\\\\\",\\\\\"bk_host_outerip\\\\\",\\\\\"bk_agent_status\\\\\"]}]}\",\n            \"create_user\": \"admin\",\n            \"create_time\": \"2018-03-27T16:22:43.271+08:00\",\n            \"modify_user\": \"admin\",\n            \"last_time\": \"2018-03-27T16:29:26.428+08:00\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_biz_id    | int          | {{ _(\"业务ID\") }} |\n    | create_time  | string       | {{ _(\"创建时间\") }} |\n    | create_user  | string       | {{ _(\"创建者\") }} |\n    | id           | string       | {{ _(\"自定义api主键ID\") }} |\n    | info         | string       | {{ _(\"自定义api信息\") }} |\n    | last_time    | string       | {{ _(\"更新时间\") }} |\n    | modify_user  | string       | {{ _(\"修改者\") }} |\n    | name         | string       | {{ _(\"自定义api命名\") }} |\n\n    #### data.info\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}     |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_obj_id |  string   | {{ _(\"对象名,可以为biz,set,module,host,object\") }} |\n    | fields    |  array    | {{ _(\"查询输出字段\") }} |\n    | condition |  array    | {{ _(\"查询条件\") }} |\n\n    #### data.info.condition\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}     |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | field     |  string    | {{ _(\"对象的字段\") }} |\n    | operator  |  string    | {{ _(\"操作符, $eq为相等，$neq为不等，$in为属于，$nin为不属于\") }} |\n    | value     |  string    | {{ _(\"字段对应的值\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        id = forms.CharField(label='id', required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.get(\n            host=self.host,\n            path='/api/v3/userapi/detail/{bk_biz_id}/{id}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/get_host_base_info.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass GetHostBaseInfo(Component):\n    \"\"\"\n    apiLabel {{ _(\"获取主机详情\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"获取主机基础信息详情\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_host_id     |  int       | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_host_id\": 10000\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"bk_property_id\": \"bk_host_name\",\n                \"bk_property_name\": \"host name\",\n                \"bk_property_value\": \"centos7\"\n            },\n            {\n                \"bk_property_id\": \"bk_host_id\",\n                \"bk_property_name\": \"host ID\",\n                \"bk_property_value\": \"10000\"\n            }\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_property_id    | string     | {{ _(\"属性id\") }} |\n    | bk_property_name  | string     | {{ _(\"属性名称\") }} |\n    | bk_property_value | string     | {{ _(\"属性值\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_host_id = forms.IntegerField(label='host id', required=True)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.get(\n            host=self.host,\n            path='/api/v3/hosts/{bk_supplier_account}/{bk_host_id}'.format(**self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_biz_inst_topo.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchBizInstTopo(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务实例拓扑\") }}\n    apiMethod GET\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务实例拓扑\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account |  string  | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id           |  int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | level               |  int     | {{ _(\"否\") }}     | {{ _(\"拓扑的层级索引，索引取值从0开始，默认值为2，当设置为 -1 的时候会读取完整的业务实例拓扑\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"success\",\n        \"data\": [\n            {\n                \"bk_inst_id\": 2,\n                \"bk_inst_name\": \"blueking\",\n                \"bk_obj_id\": \"biz\",\n                \"bk_obj_name\": \"business\",\n                \"child\": [\n                    {\n                        \"bk_inst_id\": 3,\n                        \"bk_inst_name\": \"job\",\n                        \"bk_obj_id\": \"set\",\n                        \"bk_obj_name\": \"set\",\n                        \"child\": [\n                            {\n                                \"bk_inst_id\": 5,\n                                \"bk_inst_name\": \"job\",\n                                \"bk_obj_id\": \"module\",\n                                \"bk_obj_name\": \"module\",\n                                \"child\": []\n                            }\n                        ]\n                    }\n                ]\n            }\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_inst_id    | int       | {{ _(\"实例ID\") }} |\n    | bk_inst_name  | string    | {{ _(\"实例用于展示的名字\") }} |\n    | bk_obj_icon   | string    | {{ _(\"模型图标的名字\") }} |\n    | bk_obj_id     | string    | {{ _(\"模型ID\") }} |\n    | bk_obj_name   | string    | {{ _(\"模型用于展示的名字\") }} |\n    | child         | array     | {{ _(\"当前节点下的所有实例的集合\") }} |\n\n    #### child\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_inst_id    | int       | {{ _(\"实例ID\") }} |\n    | bk_inst_name  | string    | {{ _(\"实例用于展示的名字\") }} |\n    | bk_obj_icon   | string    | {{ _(\"模型图标的名字\") }} |\n    | bk_obj_id     | string    | {{ _(\"模型ID\") }} |\n    | bk_obj_name   | string    | {{ _(\"模型用于展示的名字\") }} |\n    | child         | array     | {{ _(\"当前节点下的所有实例的集合\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        level = forms.IntegerField(label='level', required=False)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist(keys=['bk_supplier_account', 'bk_biz_id'])\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data'] = self.get_cleaned_data_when_exist(keys=['level'])\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.get(\n            host=self.host,\n            path='/api/v3/topo/inst/{bk_supplier_account}/{bk_biz_id}'.format(**self.form_data),\n            params=self.form_data['data'],\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_business.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchBusiness(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询业务\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | fields         |  array   | {{ _(\"否\") }}     | {{ _(\"指定查询的字段，参数为业务的任意属性，如果不填写字段信息，系统会返回业务的所有字段\") }} |\n    | condition      |  dict    | {{ _(\"否\") }}     | {{ _(\"查询条件，参数为业务的任意属性，如果不写代表搜索全部数据\") }} |\n    | page           |  dict    | {{ _(\"否\") }}     | {{ _(\"分页条件\") }} |\n\n    #### page\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | start    |  int    | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit    |  int    | {{ _(\"是\") }}     | {{ _(\"每页限制条数,最大200\") }} |\n    | sort     |  string | {{ _(\"否\") }}     | {{ _('排序字段，通过在字段前面增加 -，如 sort:\"-field\" 可以表示按照字段 field降序') }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"fields\": [\n            \"bk_biz_id\",\n            \"bk_biz_name\"\n        ],\n        \"condition\": {\n            \"bk_biz_name\": \"esb-test\"\n        },\n        \"page\": {\n            \"start\": 0,\n            \"limit\": 10,\n            \"sort\": \"\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"count\": 1,\n            \"info\": [\n                {\n                    \"bk_biz_id\": 1,\n                    \"bk_biz_name\": \"esb-test\"\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int       | {{ _(\"记录条数\") }} |\n    | info      | array     | {{ _(\"业务实际数据\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        fields = TypeCheckField(label='fields', promise_type=list, required=False)\n        condition = TypeCheckField(label='condition', promise_type=dict, required=False)\n        page = TypeCheckField(label='page', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist(keys=['bk_supplier_account'])\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data'] = self.get_cleaned_data_when_exist(keys=['fields', 'condition', 'page'])\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/biz/search/{bk_supplier_account}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_custom_query.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchCustomQuery(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询自定义API\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询自定义api\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | condition |  dict    | {{ _(\"否\") }}     | {{ _(\"查询条件，condition 字段为自定义api的属性字段, 可以是create_user,modify_user, name\") }} |\n    | start     |  int     | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit     |  int     | {{ _(\"是\") }}     | {{ _(\"每页限制条数,最大200\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"condition\": {\n            \"name\": \"api1\"\n        },\n        \"start\": 0,\n        \"limit\": 200\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"count\": 1,\n            \"info\": [\n                {\n                    \"bk_biz_id\": 1,\n                    \"id\": \"bacfet4kd42325venmcg\",\n                    \"name\": \"api1\",\n                    \"info\": \"{\\\\\"condition\\\\\":[{\\\\\"bk_obj_id\\\\\":\\\\\"biz\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"default\\\\\",\\\\\"operator\\\\\":\\\\\"$ne\\\\\",\\\\\"value\\\\\":1}],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"set\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"module\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"host\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"bk_host_innerip\\\\\",\\\\\"operator\\\\\":\\\\\"$eq\\\\\",\\\\\"value\\\\\":\\\\\"127.0.0.1\\\\\"}],\\\\\"fields\\\\\":[\\\\\"bk_host_innerip\\\\\",\\\\\"bk_host_outerip\\\\\",\\\\\"bk_agent_status\\\\\"]}]}\",\n                    \"create_user\": \"admin\",\n                    \"create_time\": \"2018-03-27T16:22:43.271+08:00\",\n                    \"modify_user\": \"admin\",\n                    \"last_time\": \"2018-03-27T16:29:26.428+08:00\"\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int          | {{ _(\"记录条数\") }} |\n    | info      | array        | {{ _(\"自定义api数据\") }} |\n\n    #### data.info\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_biz_id    | int          | {{ _(\"业务ID\") }} |\n    | create_time  | string       | {{ _(\"创建时间\") }} |\n    | create_user  | string       | {{ _(\"创建者\") }} |\n    | id           | string       | {{ _(\"自定义api主键ID\") }} |\n    | info         | string       | {{ _(\"自定义api信息\") }} |\n    | last_time    | string       | {{ _(\"更新时间\") }} |\n    | modify_user  | string       | {{ _(\"修改者\") }} |\n    | name         | string       | {{ _(\"自定义api命名\") }} |\n\n    #### data.info.info\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}     |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_obj_id |  string   | {{ _(\"对象名,可以为biz,set,module,host,object\") }} |\n    | fields    |  array    | {{ _(\"查询输出字段\") }} |\n    | condition |  array    | {{ _(\"查询条件\") }} |\n\n    #### data.info.info.condition\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}     |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | field     |  string    | {{ _(\"对象的字段\") }} |\n    | operator  |  string    | {{ _(\"操作符, $eq为相等，$neq为不等，$in为属于，$nin为不属于\") }} |\n    | value     |  string    | {{ _(\"字段对应的值\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        condition = TypeCheckField(label='condition', promise_type=dict, required=False)\n        start = forms.IntegerField(label='start', required=True)\n        limit = forms.IntegerField(label='limit', required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'bk_biz_id': data['bk_biz_id'],\n                'data': self.get_cleaned_data_when_exist(keys=['condition', 'start', 'limit'])\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/userapi/search/{bk_biz_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_host.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchHost(Component):\n    \"\"\"\n    apiLabel {{ _(\"根据条件查询主机\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"根据条件查询主机\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id  |  int     | {{ _(\"否\") }}     | {{ _(\"业务ID\") }} |\n    | ip         |  dict    | {{ _(\"否\") }}     | {{ _(\"主机ip列表\") }} |\n    | condition  |  array   | {{ _(\"否\") }}     | {{ _(\"组合条件\") }} |\n    | page       |  dict    | {{ _(\"否\") }}     | {{ _(\"查询条件\") }} |\n    | pattern    |  string  | {{ _(\"否\") }}     | {{ _(\"按表达式搜索\") }} |\n\n    #### ip\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | data      |  array    | {{ _(\"否\") }}     | {{ _(\"ip 数组\") }} |\n    | exact     |  int      | {{ _(\"否\") }}     | {{ _(\"是否根据ip精确搜索\") }} |\n    | flag      |  string   | {{ _(\"否\") }}     | {{ _(\"bk_host_innerip只匹配内网ip,bk_host_outerip只匹配外网ip, bk_host_innerip,bk_host_outerip同时匹配\") }} |\n\n    #### condition\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_obj_id    |  string    | {{ _(\"否\") }}     | {{ _(\"对象名,可以为biz,set,module,host,object\") }} |\n    | fields     |  array      | {{ _(\"否\") }}     | {{ _(\"查询输出字段\") }} |\n    | condition     |  array      | {{ _(\"否\") }}     | {{ _(\"查询条件\") }} |\n\n    #### condition.condition\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | field     |  string    | {{ _(\"否\") }}     | {{ _(\"对象的字段\") }} |\n    | operator  |  string    | {{ _(\"否\") }}     | {{ _(\"操作符, $eq为相等，$neq为不等，$in为属于，$nin为不属于\") }} |\n    | value     |  string    | {{ _(\"否\") }}     | {{ _(\"字段对应的值\") }} |\n\n    #### page\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | start    |  int    | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit    |  int    | {{ _(\"是\") }}     | {{ _(\"每页限制条数,最大200\") }} |\n    | sort     |  string | {{ _(\"否\") }}     | {{ _(\"排序字段\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"ip\": {\n            \"data\": [],\n            \"exact\": 1,\n            \"flag\": \"bk_host_innerip|bk_host_outerip\"\n        },\n        \"condition\": [\n            {\n                \"bk_obj_id\": \"host\",\n                \"fields\": [],\n                \"condition\": []\n            },\n            {\n                \"bk_obj_id\":\"module\",\n                \"fields\":[],\n                \"condition\":[]\n            },\n            {\n                \"bk_obj_id\":\"set\",\n                \"fields\":[],\n                \"condition\":[]\n            },\n            {\n                \"bk_obj_id\":\"biz\",\n                \"fields\":[],\n                \"condition\":[]\n            },\n            {\n                \"bk_obj_id\": \"object\",\n                \"fields\": [],\n                \"condition\": [\n                    {\n                        \"field\": \"bk_inst_id\",\n                        \"operator\": \"$eq\",\n                        \"value\": 76\n                    }\n                ]\n            }\n        ],\n        \"page\": {\n            \"start\": 0,\n            \"limit\": 10,\n            \"sort\": \"bk_host_id\"\n        },\n        \"pattern\": \"\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"success\",\n        \"data\": {\n            \"count\": 1,\n            \"info\": [\n                {\n                    \"host\": {\n                        \"bk_cpu\": 8,\n                        \"bk_os_name\": \"linux centos\",\n                        \"bk_host_id\": 11,\n                        \"import_from\": \"\",\n                        \"bk_os_version\": \"7.2\",\n                        \"bk_disk\": 1789,\n                        \"operator\": null,\n                        \"create_time\": \"2018-03-22T16:52:53.239+08:00\",\n                        \"bk_mem\": 7843,\n                        \"bk_host_name\": \"test-1\",\n                        \"bk_host_innerip\": \"10.0.0.1\",\n                        \"bk_comment\": \"\",\n                        \"bk_os_bit\": \"64-bit\",\n                        \"bk_outer_mac\": \"\",\n                        \"bk_childid\": null,\n                        \"bk_input_from\": \"agent\",\n                        \"bk_asset_id\": \"\",\n                        \"bk_service_term\": null,\n                        \"bk_cloud_id\": [\n                            {\n                                \"bk_obj_name\": \"\",\n                                \"id\": \"0\",\n                                \"bk_obj_id\": \"plat\",\n                                \"bk_obj_icon\": \"\",\n                                \"bk_inst_id\": 0,\n                                \"bk_inst_name\": \"default area\"\n                            }\n                        ],\n                        \"bk_sla\": \"\",\n                        \"bk_cpu_mhz\": 2534,\n                        \"bk_host_outerip\": \"\",\n                        \"bk_os_type\": \"1\",\n                        \"bk_mac\": \"00:00:00:00:00:00\",\n                        \"bk_bak_operator\": null,\n                        \"bk_sn\": \"\",\n                        \"bk_cpu_module\": \"Intel(R)\"\n                    },\n                    \"set\": [\n                        {\n                            \"bk_biz_id\": 2,\n                            \"bk_service_status\": \"1\",\n                            \"description\": \"\",\n                            \"bk_set_env\": \"1\",\n                            \"default\": 0,\n                            \"bk_parent_id\": 35,\n                            \"bk_capacity\": null,\n                            \"bk_set_id\": 3,\n                            \"create_time\": \"2018-06-06T20:53:53.591+08:00\",\n                            \"bk_supplier_account\": \"123456789\",\n                            \"bk_set_name\": \"test\",\n                            \"bk_set_desc\": \"\",\n                            \"last_time\": \"2018-06-13T14:20:20.149+08:00\"\n                        }\n                    ],\n                    \"biz\": [\n                        {\n                            \"bk_biz_id\": 2,\n                            \"language\": \"1\",\n                            \"life_cycle\": \"1\",\n                            \"bk_biz_developer\": \"\",\n                            \"bk_biz_maintainer\": \"admin\",\n                            \"bk_biz_tester\": \"admin\",\n                            \"time_zone\": \"Asia/Shanghai\",\n                            \"default\": 0,\n                            \"create_time\": \"2018-03-22T15:49:57.319+08:00\",\n                            \"bk_biz_productor\": \"admin\",\n                            \"bk_supplier_account\": \"123456789\",\n                            \"operator\": \"\",\n                            \"bk_biz_name\": \"test\",\n                            \"last_time\": \"2018-06-05T15:03:55.699+08:00\",\n                            \"bk_supplier_id\": 0\n                        }\n                    ],\n                    \"module\": [\n                        {\n                            \"bk_biz_id\": 2,\n                            \"bk_module_id\": 38,\n                            \"default\": 0,\n                            \"bk_bak_operator\": \"\",\n                            \"create_time\": \"2018-03-26T16:56:59.486+08:00\",\n                            \"bk_module_name\": \"test_1\",\n                            \"bk_supplier_account\": \"123456789\",\n                            \"operator\": \"admin\",\n                            \"bk_set_id\": 3,\n                            \"bk_parent_id\": 3,\n                            \"last_time\": \"2018-03-26T16:56:59.486+08:00\",\n                            \"bk_module_type\": \"1\"\n                        }\n                    ]\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int       | {{ _(\"记录条数\") }} |\n    | info      | array     | {{ _(\"主机实际数据\") }} |\n\n    #### data.info\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | biz      | array       | {{ _(\"主机所属的业务信息\") }} |\n    | set      | array       | {{ _(\"主机所属的集群信息\") }} |\n    | module   | array       | {{ _(\"主机所属的模块信息\") }} |\n    | host     | dict        | {{ _(\"主机自身属性\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=False)\n        ip = TypeCheckField(label='ip', promise_type=dict, required=False)\n        condition = TypeCheckField(label='condition', promise_type=list, required=False)\n        page = TypeCheckField(label='page', promise_type=dict, required=False)\n        pattern = forms.CharField(label='pattern', required=False)\n\n        def clean(self):\n            return self.get_cleaned_data_when_exist()\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/hosts/search',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_inst_by_object.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchInstByObject(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询实例详情\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询给定模型的实例信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account |  string  | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_obj_id           |  string  | {{ _(\"是\") }}     | {{ _(\"自定义模型ID，查询区域时为plat\") }} |\n    | fields              |  array   | {{ _(\"否\") }}     | {{ _(\"指定查询的字段\") }} |\n    | condition           |  dict    | {{ _(\"否\") }}     | {{ _(\"查询条件\") }} |\n    | page                |  dict    | {{ _(\"否\") }}     | {{ _(\"分页条件\") }} |\n\n    #### page\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | start    |  int    | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit    |  int    | {{ _(\"是\") }}     | {{ _(\"每页限制条数,最大200\") }} |\n    | sort     |  string | {{ _(\"否\") }}     | {{ _('排序字段') }} |\n\n    #### {{ _(\"fields参数说明\") }}\n\n    {{ _(\"参数为查询的目标实例对应的模型定义的所有字段\") }}\n\n\n    #### {{ _(\"condition 参数说明\") }}\n\n    {{ _(\"condition 参数为查询的目标实例对应的模型定义的所有字段\") }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_obj_id\": \"plat\",\n        \"fields\": [\n        ],\n        \"condition\": {\n        },\n        \"page\": {\n            \"start\": 0,\n            \"limit\": 10,\n            \"sort\": \"\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"success\",\n        \"data\": {\n            \"count\": 4,\n            \"info\": [\n                {\n                    \"bk_cloud_id\": 0,\n                    \"bk_cloud_name\": \"default area\",\n                    \"bk_supplier_account\": \"123456789\"\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int       | {{ _(\"info 集合中元素的数量\") }} |\n    | info      | array     | {{ _(\"查询的模型的实例集合\") }} |\n\n    #### info\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | bk_cloud_id         | int       | {{ _(\"云区域ID\") }} |\n    | bk_cloud_name       | string    | {{ _(\"云区域名\") }} |\n    | bk_supplier_account | string    | {{ _(\"开发商账号\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_obj_id = forms.CharField(label='object id', required=True)\n        fields = TypeCheckField(label='fields', promise_type=list, required=False)\n        condition = TypeCheckField(label='condition', promise_type=dict, required=False)\n        page = TypeCheckField(label='page', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist(keys=['bk_supplier_account', 'bk_obj_id'])\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data'] = self.get_cleaned_data_when_exist(keys=['fields', 'condition', 'page'])\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/inst/search/owner/{bk_supplier_account}/object/{bk_obj_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      |  int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | bk_set_id      |  int     | {{ _(\"是\") }}     | {{ _(\"集群ID\") }} |\n    | fields         |  array   | {{ _(\"是\") }}     | {{ _(\"查询字段，字段来自于模块定义的属性字段\") }} |\n    | condition      |  dict    | {{ _(\"是\") }}     | {{ _(\"查询条件，字段来自于模块定义的属性字段\") }} |\n    | page           |  dict    | {{ _(\"是\") }}     | {{ _(\"分页条件\") }} |\n\n    #### page\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | start    |  int    | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit    |  int    | {{ _(\"是\") }}     | {{ _(\"每页限制条数\") }} |\n    | sort     |  string | {{ _(\"否\") }}     | {{ _('排序字段') }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"fields\": [\n            \"bk_module_name\"\n        ],\n        \"condition\": {\n            \"bk_module_name\": \"test\"\n        },\n        \"page\": {\n            \"start\": 0,\n            \"limit\": 10\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"count\": 2,\n            \"info\": [\n                {\n                    \"bk_module_name\": \"cc_service\"\n                },\n                {\n                    \"bk_module_name\": \"cmdb\"\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int       | {{ _(\"数据数量\") }} |\n    | info      | array     | {{ _(\"结果集，其中，所有字段均为模块定义的属性字段\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_set_id = forms.IntegerField(label='set id', required=True)\n        fields = TypeCheckField(label='fields', promise_type=list, required=False)\n        condition = TypeCheckField(label='condition', promise_type=dict, required=False)\n        page = TypeCheckField(label='page', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist(keys=['bk_supplier_account', 'bk_biz_id', 'bk_set_id'])\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data'] = self.get_cleaned_data_when_exist(keys=['fields', 'condition', 'page'])\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/module/search/{bk_supplier_account}/{bk_biz_id}/{bk_set_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/search_set.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_Q\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass SearchSet(Component):\n    \"\"\"\n    apiLabel {{ _(\"查询集群\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"查询集群\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      |  int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | fields         |  array   | {{ _(\"是\") }}     | {{ _(\"查询字段，所有字段均为set定义的字段，这些字段包括预置字段，也包括用户自定义字段\") }} |\n    | condition      |  dict    | {{ _(\"是\") }}     | {{ _(\"查询条件，所有字段均为Set定义的字段，这些字段包括预置字段，也包括用户自定义字段\") }} |\n    | page           |  dict    | {{ _(\"是\") }}     | {{ _(\"分页条件\") }} |\n\n    #### page\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | start    |  int    | {{ _(\"是\") }}     | {{ _(\"记录开始位置\") }} |\n    | limit    |  int    | {{ _(\"是\") }}     | {{ _(\"每页限制条数,最大200\") }} |\n    | sort     |  string | {{ _(\"否\") }}     | {{ _('排序字段') }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"fields\": [\n            \"bk_set_name\"\n        ],\n        \"condition\": {\n            \"bk_set_name\": \"test\"\n        },\n        \"page\": {\n            \"start\": 0,\n            \"limit\": 10,\n            \"sort\": \"bk_set_name\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {\n            \"count\": 1,\n            \"info\": [\n                {\n                    \"bk_set_name\": \"test\"\n                }\n            ]\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果参数说明\") }}\n\n    #### data\n\n    | {{ _(\"字段\") }}      | {{ _(\"类型\") }}      | {{ _(\"描述\") }}      |\n    |-----------|-----------|-----------|\n    | count     | int       | {{ _(\"数据数量\") }} |\n    | info      | array     | {{ _(\"结果集，其中，所有字段均为集群定义的属性字段\") }} |\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        fields = TypeCheckField(label='fields', promise_type=list, required=False)\n        condition = TypeCheckField(label='condition', promise_type=dict, required=False)\n        page = TypeCheckField(label='page', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist(keys=['bk_supplier_account', 'bk_biz_id'])\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            data['data'] = self.get_cleaned_data_when_exist(keys=['fields', 'condition', 'page'])\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/set/search/{bk_supplier_account}/{bk_biz_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'CC'\n\nhost = SmartHost(\n    host_prod=getattr(settings, 'HOST_CC_V3', '')\n)\n\nDEFAULT_BK_SUPPLIER_ACCOUNT = '0'\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport copy\nimport json\n\nfrom common.errors import CommonAPIError\n\nfrom . import configs\n\n\nclass CCClient(object):\n\n    def __init__(self, component):\n        self.http_client = component.outgoing.http_client\n\n        self.bk_username = component.current_user.username\n        self.bk_language = component.request.bk_language\n        self.bk_supplier_account = component.request.kwargs.get('bk_supplier_account') or \\\n            configs.DEFAULT_BK_SUPPLIER_ACCOUNT\n\n    def request(self, method, host, path, params=None, data=None, headers={}, **kwargs):\n        headers = copy.copy(headers)\n        headers.update({\n            'BK_USER': self.bk_username,\n            'HTTP_BLUEKING_LANGUAGE': self.bk_language,\n            'HTTP_BK_SUPPLIER_ACCOUNT': self.bk_supplier_account,\n            'HTTP_BLUEKING_SUPPLIER_ID': '0',\n        })\n        return self.http_client.request(\n            method, host, path, params=params, data=data,\n            headers=headers, allow_non_200=True,\n            response_encoding='utf-8', response_type='text', **kwargs)\n\n    def get(self, host, path, params=None, headers={}, **kwargs):\n        response = self.request('GET', host, path, params=params, headers=headers, **kwargs)\n        return self.format_response(response)\n\n    def post(self, host, path, data=None, headers={}, **kwargs):\n        response = self.request('POST', host, path, data=data, headers=headers, **kwargs)\n        return self.format_response(response)\n\n    def put(self, host, path, data=None, headers={}, **kwargs):\n        response = self.request('PUT', host, path, data=data, headers=headers, **kwargs)\n        return self.format_response(response)\n\n    def delete(self, host, path, data=None, headers={}, **kwargs):\n        response = self.request('DELETE', host, path, data=data, headers=headers, **kwargs)\n        return self.format_response(response)\n\n    def format_response(self, response):\n        try:\n            response = json.loads(response)\n        except Exception:\n            return {\n                'result': False,\n                'code': 1306000,\n                'message': 'Request interface error, the response content is not a json string: %s' % response,\n            }\n\n        bk_error_code = response.get('bk_error_code', response.get('code'))\n        if bk_error_code is None:\n            raise CommonAPIError(\n                'An error occurred while requesting CC interface, '\n                'the response content does not contain bk_error_code field.')\n        elif bk_error_code == 0:\n            return {\n                'result': True,\n                'code': 0,\n                'data': response.get('data'),\n                'message': response.get('bk_error_msg', response.get('message')) or '',\n            }\n        else:\n            return {\n                'result': False,\n                'code': bk_error_code,\n                'data': response.get('data'),\n                'message': response.get('bk_error_msg', response.get('message')) or '',\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass TransferHostModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"业务内主机转移模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"业务内主机转移模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id     |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | bk_host_id    |  array   | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n    | bk_module_id  |  array   | {{ _(\"是\") }}     | {{ _(\"模块ID\") }} |\n    | is_increment  |  bool    | {{ _(\"是\") }}     | {{ _(\"覆盖或者追加,会删除原有关系. true是更新，false是覆盖\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_host_id\": [\n            9,\n            10\n        ],\n        \"bk_module_id\": [\n            10\n        ],\n        \"is_increment\": true\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_host_id = TypeCheckField(label='host id', promise_type=list, required=True)\n        bk_module_id = TypeCheckField(label='module id', promise_type=list, required=True)\n        is_increment = TypeCheckField(label='is increment', promise_type=bool, required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/hosts/modules',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_to_faultmodule.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass TransferHostToFaultmodule(Component):\n    \"\"\"\n    apiLabel {{ _(\"上交主机到业务的故障机模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"上交主机到业务的故障机模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id     |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | bk_host_id    |  array   | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_host_id\": [\n            9,\n            10\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_host_id = TypeCheckField(label='host id', promise_type=list, required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/hosts/modules/fault',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_to_idlemodule.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass TransferHostToIdlemodule(Component):\n    \"\"\"\n    apiLabel {{ _(\"上交主机到业务的空闲机模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"上交主机到业务的空闲机模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id     |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | bk_host_id    |  array   | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_host_id\": [\n            9,\n            10\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_host_id = TypeCheckField(label='host id', promise_type=list, required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/hosts/modules/idle',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_to_resourcemodule.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass TransferHostToResourcemodule(Component):\n    \"\"\"\n    apiLabel {{ _(\"上交主机至资源池\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"上交主机至资源池\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id     |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | bk_host_id    |  array   | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_host_id\": [\n            9,\n            10\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_host_id = TypeCheckField(label='host id', promise_type=list, required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/hosts/modules/resource',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/transfer_resourcehost_to_idlemodule.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass TransferResourcehostToIdlemodule(Component):\n    \"\"\"\n    apiLabel {{ _(\"资源池主机分配至业务的空闲机模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"资源池主机分配至业务的空闲机模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id     |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | bk_host_id    |  array   | {{ _(\"是\") }}     | {{ _(\"主机ID\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_host_id\": [\n            9,\n            10\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_host_id = TypeCheckField(label='host id', promise_type=list, required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/hosts/modules/resource/idle',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/update_business.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass UpdateBusiness(Component):\n    \"\"\"\n    apiLabel {{ _(\"修改业务\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新业务信息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | data           | dict    | {{ _(\"是\") }}     | {{ _(\"业务数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_biz_name       |  string  | {{ _(\"否\") }}     | {{ _(\"业务名\") }} |\n    | bk_biz_developer  |  string  | {{ _(\"否\") }}     | {{ _(\"开发人员\") }} |\n    | bk_biz_maintainer |  string  | {{ _(\"否\") }}     | {{ _(\"运维人员\") }} |\n    | bk_biz_productor  |  string  | {{ _(\"否\") }}     | {{ _(\"产品人员\") }} |\n    | bk_biz_tester     |  string  | {{ _(\"否\") }}     | {{ _(\"测试人员\") }} |\n\n    **{{ _(\"注意：此处的输入参数仅对必填以及系统内置的参数做了说明，其余需要填写的参数取决于用户自己定义的属性字段\") }}**\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"data\": {\n            \"bk_biz_name\": \"cc_app_test\",\n            \"bk_biz_maintainer\": \"admin\",\n            \"bk_biz_productor\": \"admin\",\n            \"bk_biz_developer\": \"admin\",\n            \"bk_biz_tester\": \"admin\",\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_supplier_account = forms.CharField(label='bk supplier account', required=False)\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        data = TypeCheckField(label='data', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.get_cleaned_data_when_exist()\n            data.setdefault('bk_supplier_account', configs.DEFAULT_BK_SUPPLIER_ACCOUNT)\n            return data\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.put(\n            host=self.host,\n            path='/api/v3/biz/{bk_supplier_account}/{bk_biz_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/update_custom_query.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass UpdateCustomQuery(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新自定义API\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新自定义api\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id |  int     | {{ _(\"是\") }}     | {{ _(\"业务ID\") }} |\n    | id        |  string  | {{ _(\"是\") }}     | {{ _(\"主键ID\") }} |\n    | info      |  string  | {{ _(\"否\") }}     | {{ _(\"通用查询条件\") }} |\n    | name      |  string  | {{ _(\"否\") }}     | {{ _(\"收藏的名称\") }} |\n\n    #### info\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_obj_id |  string   | {{ _(\"否\") }}     | {{ _(\"对象名,可以为biz,set,module,host,object\") }} |\n    | fields    |  array    | {{ _(\"否\") }}     | {{ _(\"查询输出字段\") }} |\n    | condition |  array    | {{ _(\"否\") }}     | {{ _(\"查询条件\") }} |\n\n    #### info.condition.condition\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | field     |  string    | {{ _(\"否\") }}     | {{ _(\"对象的字段\") }} |\n    | operator  |  string    | {{ _(\"否\") }}     | {{ _(\"操作符, $eq为相等，$neq为不等，$in为属于，$nin为不属于\") }} |\n    | value     |  string    | {{ _(\"否\") }}     | {{ _(\"字段对应的值\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"id\": \"xxx\",\n        \"info\": \"{\\\\\"condition\\\\\":[{\\\\\"bk_obj_id\\\\\":\\\\\"biz\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"default\\\\\",\\\\\"operator\\\\\":\\\\\"$ne\\\\\",\\\\\"value\\\\\":1}],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"set\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"module\\\\\",\\\\\"condition\\\\\":[],\\\\\"fields\\\\\":[]},{\\\\\"bk_obj_id\\\\\":\\\\\"host\\\\\",\\\\\"condition\\\\\":[{\\\\\"field\\\\\":\\\\\"bk_host_innerip\\\\\",\\\\\"operator\\\\\":\\\\\"$eq\\\\\",\\\\\"value\\\\\":\\\\\"127.0.0.1\\\\\"}],\\\\\"fields\\\\\":[\\\\\"bk_host_innerip\\\\\",\\\\\"bk_host_outerip\\\\\",\\\\\"bk_agent_status\\\\\"]}]}\",\n        \"name\": \"api1\"\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        id = forms.CharField(label='id', required=True)\n        info = forms.CharField(label='info', required=False)\n        name = forms.CharField(label='name', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'bk_biz_id': data['bk_biz_id'],\n                'id': data['id'],\n                'data': self.get_cleaned_data_when_exist(keys=['info', 'name']),\n            }\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.put(\n            host=self.host,\n            path='/api/v3/userapi/{bk_biz_id}/{id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/update_host.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom common.forms import BaseComponentForm, ListField, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass UpdateHost(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新主机属性\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新主机属性\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_host_id  | string      | {{ _(\"是\") }}     | {{ _(\"主机ID，多个以逗号分隔\") }} |\n    | data        | dict        | {{ _(\"否\") }}     | {{ _(\"主机数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_host_name    |  string  | {{ _(\"否\") }}     | {{ _(\"主机名\") }} |\n\n    **{{ _(\"注意：输入的字段为主机定义的属性\") }}**\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_host_id\": \"1,2,3\",\n        \"data\": {\n            \"bk_host_name\": \"test\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": none\n    }\n    ```\n\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_host_id = ListField(label='host ids', required=True)\n        data = TypeCheckField(label='data', promise_type=dict, required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            data['data'].update(bk_host_id=','.join(map(str, data['bk_host_id'])))\n            return data['data']\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.put(\n            host=self.host,\n            path='/api/v3/hosts/batch',\n            data=json.dumps(self.form_data),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/update_module.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass UpdateModule(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新模块\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新模块\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | bk_set_id      | int     | {{ _(\"是\") }}     | {{ _(\"集群id\") }} |\n    | bk_module_id   | int     | {{ _(\"是\") }}     | {{ _(\"模块id\") }} |\n    | data           | dict    | {{ _(\"是\") }}     | {{ _(\"模块数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_module_name    |  string  | {{ _(\"否\") }}     | {{ _(\"模块名\") }} |\n\n    **{{ _(\"注意：输入的字段为模块定义的属性\") }}**\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_set_id\": 1,\n        \"bk_module_id\": 1,\n        \"data\": {\n            \"bk_module_name\": \"test\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_set_id = forms.IntegerField(label='set id', required=True)\n        bk_module_id = forms.IntegerField(label='module id', required=True)\n        data = TypeCheckField(label='data', promise_type=dict, required=False)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.put(\n            host=self.host,\n            path='/api/v3/module/{bk_biz_id}/{bk_set_id}/{bk_module_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/update_object_topo_graphics.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass UpdateObjectTopoGraphics(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新拓扑图\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新拓扑图\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | scope_type          |  string    | {{ _(\"是\") }}     | {{ _(\"图形范围类型,可选global,biz,cls(当前只有global)\") }} |\n    | scope_id            |  string    | {{ _(\"是\") }}     | {{ _(\"图形范围类型下的ID,如果为global,则填0\") }}   |\n    | action              |  string    | {{ _(\"是\") }}     | {{ _(\"更新方法,可选update,override\") }}   |\n    | data                |  list      | {{ _(\"否\") }}     | {{ _(\"更新数据\") }}   |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | node_type   | string | {{ _(\"是\") }} | {{ _(\"节点类型,可选obj,inst\") }} |\n    | bk_obj_id   | string | {{ _(\"是\") }} | {{ _(\"对象模型的ID\") }} |\n    | bk_inst_id  | int    | {{ _(\"是\") }} | {{ _(\"实例ID\") }} |\n    | position    | dict   | {{ _(\"否\") }} | {{ _(\"节点在图中的位置\") }} |\n    | ext         | dict   | {{ _(\"否\") }} | {{ _(\"前端扩展字段\") }} |\n    | bk_obj_icon | string | {{ _(\"否\") }} | {{ _(\"对象模型的图标\") }} |\n\n\n    **{{ _(\"注意\") }}**：\n\n    - {{ _(\"scope_type,scope_id 唯一确定一张图\") }}\n\n    - {{ _(\"node_type,bk_obj_id,bk_inst_id 三者唯一确定每张图的一个节点，故必填\") }}\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"scope_type\": \"global\",\n        \"scope_id\": 0,\n        \"action\": \"update\",\n        \"data\": [\n            {\n                \"node_type\": \"obj\",\n                \"bk_obj_id\": \"switch\",\n                \"bk_inst_id\": 0,\n                \"position\": {\n                    \"x\": 100,\n                    \"y\": 100\n                },\n                \"ext\": {},\n                \"bk_obj_icon\": \"icon-cc-switch2\"\n            }\n        ]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"success\",\n        \"data\": \"success\"\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        scope_type = forms.CharField(label='scope type', required=True)\n        scope_id = forms.CharField(label='scope id', required=True)\n        action = forms.CharField(label='action', required=True)\n        data = TypeCheckField(label='data', promise_type=list, required=True)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.post(\n            host=self.host,\n            path='/api/v3/objects/topographics/scope_type/{scope_type}/scope_id/{scope_id}/action/{action}'.format(**self.form_data),  # noqa\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/cc/update_set.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component\nfrom .toolkit import tools, configs\n\n\nclass UpdateSet(Component):\n    \"\"\"\n    apiLabel {{ _(\"更新集群\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"更新集群\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_supplier_account | string     | {{ _(\"否\") }}     | {{ _(\"开发商账号\") }} |\n    | bk_biz_id      | int     | {{ _(\"是\") }}     | {{ _(\"业务id\") }} |\n    | bk_set_id      | int     | {{ _(\"是\") }}     | {{ _(\"集群id\") }} |\n    | data           | dict    | {{ _(\"否\") }}     | {{ _(\"集群数据\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------|------------|--------|------------|\n    | bk_parent_id        |  int     | {{ _(\"否\") }}     | {{ _(\"父节点的ID\") }} |\n    | bk_set_name         |  string  | {{ _(\"否\") }}     | {{ _(\"集群名字\") }} |\n\n    **{{ _(\"注意：用户自定义的字段也可以作为参数传入\") }}**\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"bk_supplier_account\": \"123456789\",\n        \"bk_biz_id\": 1,\n        \"bk_set_id\": 1,\n        \"data\": {\n            \"bk_set_name\": \"test\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": {}\n    }\n    ```\n    \"\"\"  # noqa\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    host = configs.host\n\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.IntegerField(label='business id', required=True)\n        bk_set_id = forms.IntegerField(label='set id', required=True)\n        data = TypeCheckField(label='data', promise_type=dict, required=False)\n\n    def handle(self):\n        client = tools.CCClient(self)\n        self.response.payload = client.put(\n            host=self.host,\n            path='/api/v3/set/{bk_biz_id}/{bk_set_id}'.format(**self.form_data),\n            data=json.dumps(self.form_data['data']),\n        )\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/sops/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/sops/sops_component.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.errors import error_codes\nfrom common.constants import API_TYPE_OP\nfrom components.component import ConfComponent\nfrom .toolkit import configs\n\n\nclass SopsComponent(ConfComponent):\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    def handle(self):\n        request_info = self.get_request_info()\n\n        response = self.outgoing.http_client.request(\n            self.dest_http_method,\n            host=configs.host,\n            path=request_info['path'],\n            params=request_info['params'],\n            data=request_info['data'],\n            headers={\n                'Bk-Username': self.current_user.username,\n                'Bk-App-Code': self.request.app_code,\n            }\n        )\n        try:\n            response['code'] = 0 if response['result'] else 1306000\n        except Exception:\n            raise error_codes.THIRD_PARTY_RESULT_ERROR.format_prompt(args=configs.SYSTEM_NAME)\n\n        self.response.payload = response\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/sops/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/bk/apisv2/sops/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'SOPS'\n\nhost = SmartHost(\n    host_prod=getattr(settings, 'PAAS_HOST', '')\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/component.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport re\nimport json\n\nfrom common.base_loggers import BasicRequestLogger\nfrom common.errors import error_codes\nfrom esb.component import BaseComponent\nfrom esb.channel import ApiChannel\nfrom esb.bkauth.validators import UserAuthValidator\nfrom esb.bkapp.validators import AppAuthValidator, AppCodeWhiteListValidator\nfrom esb.ratelimit.validators import ApiRateLimitValidator\nfrom esb.compperm.validators import ComponentPermValidator\nfrom esb.utils.base import SmartHost\nfrom esb.utils.base import RE_PATH_VARIABLE\n\n\nclass ApiChannelForAPIS(ApiChannel):\n    request_loggers = [\n        BasicRequestLogger(),\n    ]\n\n    request_validators = [\n        AppAuthValidator(),\n        UserAuthValidator(),\n        ComponentPermValidator(),\n        ApiRateLimitValidator(),\n    ]\n\n\nclass ESBApiChannelForAPIS(ApiChannel):\n    request_validators = [\n        AppAuthValidator(),\n        AppCodeWhiteListValidator(('bk_paas', 'bk_console', )),\n    ]\n\n\nclass FTAApiChannelForAPIS(ApiChannel):\n    request_loggers = [\n        BasicRequestLogger(),\n    ]\n    request_validators = []\n\n\nclass Component(BaseComponent):\n    \"\"\"Component class\"\"\"\n    pass\n\n\nclass SetupConfMixin(object):\n\n    def setup_conf(self, conf):\n        self.__dict__.update(conf)\n        if 'host' in conf:\n            self.set_host(conf['host'])\n\n    def set_host(self, host):\n        if isinstance(host, dict):\n            self.host = SmartHost(**host)\n        elif isinstance(host, SmartHost):\n            self.host = host\n        else:\n            self.host = None\n\n\nclass ConfComponent(BaseComponent, SetupConfMixin):\n    \"\"\"Component for confapis\"\"\"\n\n    def get_request_info(self):\n        # 替换目标地址中的变量模版\n        path = self.dest_path\n\n        # 获取路径变量，并格式化目标路径\n        dest_path_var_fields = RE_PATH_VARIABLE.findall(self.dest_path)\n        if dest_path_var_fields:\n            path_vars = self.request.path_vars and self.request.path_vars.val_dict or self.request.kwargs\n            try:\n                path = self.dest_path.format(**path_vars)\n            except KeyError as e:\n                raise error_codes.ARGUMENT_ERROR.format_prompt('param %s is required' % e.args[0])\n\n        # 获取参数，并去除bk_app_code、bk_app_secret等参数\n        params = self.request.get_strict_clean_params()\n        bk_supplier_account = params.pop('bk_supplier_account', '0')\n\n        # 将路径变量从参数中去除\n        for key in dest_path_var_fields:\n            params.pop(key, None)\n\n        # 处理额外字段，将扩展字段添加到参数\n        extra_param_fields = self.get_extra_param_fields()\n        if 'creator' in extra_param_fields:\n            params['creator'] = self.current_user.username\n        if 'bk_supplier_account' in extra_param_fields:\n            params['bk_supplier_account'] = bk_supplier_account\n\n        if self.dest_http_method == 'GET':\n            params, data = params, None\n        else:\n            params, data = None, json.dumps(params)\n        return {\n            'path': path,\n            'params': params,\n            'data': data,\n        }\n\n    def get_extra_param_fields(self):\n        extra_param_fields = getattr(self, 'extra_param_fields', '') or ''\n        return re.findall(r'[^,; ]+', extra_param_fields)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/add_host_lock.md",
    "content": "### Functional description\n\nNewly added host lock, if the host has been locked, it also prompts the lock to succeed.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type       | Required\t   | Description                            |\n|---------------------|-------------|--------|----------------------------------|\n|ip_list| string array| yes| host innerip|\n| bk_cloud_id| int| yes|cloud id |\n\n### Request Parameters Example\n\n```python\n{\n   \"ip_list\":[\"127.0.0.1\"],\n   \"bk_cloud_id\":0\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": null\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/add_instance_association.md",
    "content": "### Functional description\n\ncreate association between object's instance.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description          |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    | request meta data             |\n| condition | string map     | Yes   | query condition |\n\n\nmetadata params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     |the label data request should with, such as biz info |\n\n\nlabel params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | business's ID |\n\n\ncondition params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_obj_asst_id           | string     | Yes     | object's association unique id |\n| bk_inst_id           | int64     | Yes     | association's source object's instance id |\n| bk_asst_inst_id           | int64     | Yes     | association's destination object's instance id |\n\n\n### Request Parameters Example\n\n``` json\n{\n    \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n    \"bk_inst_id\": 11,\n    \"bk_asst_inst_id\": 21,\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"1\"\n        }\n    }\n}\n```\n\n### Return Result Example\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"id\": 1038\n    }\n}\n\n```\n\n### Return Result Parameters Description\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n|id|int64|the instance association's unique id|\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/batch_delete_inst.md",
    "content": "### Functional description\n\ndelete object instances in batches\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type       | Required\t   | Description                            |\n|---------------------|-------------|--------|----------------------------------|\n| bk_supplier_account | string      | Yes     | Supplier account                       |\n| bk_obj_id           | string      | Yes     | Object ID, when the deleted object is a cloud, it is a plat |\n| inst_ids            | int array   |Yes      | Instance ID group                       |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_id\": \"test\",\n    \"delete\":{\n    \"inst_ids\":[123]\n    }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/batch_delete_set.md",
    "content": "### Functional description\n\ndelete set in batches\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field      |  Type      | Required\t   |  Description      |\n|-----------|------------|--------|------------|\n| bk_biz_id | int        | Yes     | Business ID     |\n| inst_ids  | int array  | Yes     | Set ID group |\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_biz_id\":0,\n    \"delete\": {\n    \"inst_ids\": [123]\n    }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/batch_update_inst.md",
    "content": "### Functional description\n\nupdate object instances in batches\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type       | Required\t   |  Description                            |\n|---------------------|-------------|--------|----------------------------------|\n| bk_supplier_account | string      | Yes     | Supplier account                       |\n| bk_obj_id           | string      | Yes     | Object ID                           |\n| update              | object array| Yes     | The updated fields and values for the instance             |\n\n#### update\n| Field         | Type   | Required\t  | Description                           |\n|--------------|--------|-------|--------------------------------|\n| bk_inst_name | string | No    | Instance name, or custom field |\n| datas        | object | Yes    | The updated fields for the instance           |\n| inst_id      | int    | Yes    | Point out datas, for instance update    |\n\n#### datas\n\n**datas is an object of map type，key is a field defined by an instance of the model, value is a field **\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"update\":[\n        {\n          \"datas\":{\n            \"bk_inst_name\":\"batch_update\"\n          },\n          \"inst_id\":46\n         }\n        ]\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/bind_process_module.md",
    "content": "### Functional description\n\nbind process to module\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field       |  Type    | Required\t   |  Description         |\n|------------|----------|--------|---------------|\n| bk_supplier_account | string   | Yes    | Supplier account      |\n| bk_biz_id  | int   | string     | Bussiness ID       |\n| bk_process_id | int   | string     | Process ID  |\n| bk_module_name  | string   | string     | Module Name     |\n\n\n### Request Parameters Example\n\n```python\n\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/bind_role_privilege.md",
    "content": "### Functional description\n\nbind role privilege\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field       |  Type    | Required\t   |  Description         |\n|------------|----------|--------|---------------|\n| hostupdate | string   | No     | Host update      |\n| hosttrans  | string   | No     | Host transfer   |\n| topoupdate | string   | No     | Host topology update   |\n| customapi  | string   | No     | Custom api     |\n| proconfig  | string   | No     | Process configuration      |\n| bk_supplier_account  | string     | Yes     | Supplier account            |\n| bk_obj_id            | string     | Yes     | Object ID                |\n| bk_property_id       | string     | Yes     | The user property ID of model |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"data\":[\n        \"hostupdate\",\n        \"hosttrans\",\n        \"topoupdate\",\n        \"customapi\",\n        \"proconfig\"\n    ],\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"bk_property_id\":\"test\"\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/clone_host_property.md",
    "content": "### Functional description\n\nclone host property\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field        |  Type   | Required\t   |  Description                       |\n|-------------|---------|--------|-----------------------------|\n| bk_org_ip   | string  | Yes     | Original host IP, support only by a simle ip    |\n| bk_dst_ip   | string  | Yes     | Destination host IP, separate multiple IP with ',' |\n| bk_biz_id   | int     | Yes     | Business ID                      |\n| bk_cloud_id | int     | No     | Cloud ID                    |\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_biz_id\":2,\n    \"bk_org_ip\":\"127.0.0.1\",\n    \"bk_dst_ip\":\"127.0.0.2\",\n    \"bk_cloud_id\":0\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": null\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/create_classification.md",
    "content": "### Functional description\n\ncreate classification\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                       |  Type      | Required\t   |  Description                                      |\n|----------------------------|------------|--------|--------------------------------------------|\n| bk_classification_id       | string     | Yes     | Classification ID, English description is used in system            |\n| bk_classification_name     | string     | Yes     | Classification name      |\n| bk_classification_icon     | string     | No     | Classification icon, that can refer to '[(classIcon.json)](resource_define/classIcon.json)'|\n\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_classification_id\": \"cs_test\",\n    \"bk_classification_name\": \"test_name\",\n    \"bk_classification_icon\": \"icon-cc-business\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"id\": 18\n    }\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field       | Type      | Description                |\n|----------- |-----------|--------------------|\n| id         | int       |  ID of the new data record   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/create_inst.md",
    "content": "### Functional description\n\ncreate instance\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                       |  Type      | Required\t   |  Description                                      |\n|----------------------------|------------|--------|--------------------------------------------|\n| bk_obj_id                  | string     | Yes     | Object ID, new cloud is a plat                 |\n| bk_supplier_account        | string     | No     | Supplier account, please fill '0' by independent deployment                |\n| bk_inst_name/bk_cloud_name | string     | Yes     | Instance ID,when new object is a cloud,it is bk_cloud_name |\n| bk_biz_id                  | int        | No     | Business ID                                     |\n\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_inst_name\": \"example18\",\n    \"bk_supplier_account\": \"0\",\n    \"bk_biz_id\": 0\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"bk_inst_id\": 67\n    }\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field       | Type      | Description     |\n|----------- |-----------|----------|\n| bk_inst_id | int       | Instance ID   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/create_object.md",
    "content": "### Functional description\n\ncraate object\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                 |  Type      | Required\t   |  Description                                                    |\n|----------------------|------------|--------|----------------------------------------------------------|\n| creator              |string      | No     | The creator of data                                           |\n| bk_classification_id | string     | Yes     | Classification ID of object model, can be named in English alphabet sequence only                  |\n| bk_obj_id            | string     | Yes     | Object model ID, can be named in English alphabet sequence only                     |\n| bk_obj_name          | string     | Yes     | Object model name, for display, can be named with any language that human can read |\n| bk_supplier_account  | string     | Yes     | Supplier account                                               |\n| bk_obj_icon          | string     | No     | Icon infomation of object model, dispaly in front, that can refer to[(modleIcon.json)](/static/esb/api_docs/res/cc/modleIcon.json)|\n\n\n### Request Parameters Example\n\n```python\n{\n    \"creator\": \"admin\",\n    \"bk_classification_id\": \"test\",\n    \"bk_obj_name\": \"test\",\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_icon\": \"icon-cc-business\",\n    \"bk_obj_id\": \"test\"\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"id\": 1038\n    }\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field      | Type      | Description               |\n|-----------|-----------|--------------------|\n| id        | int       | ID of the new data record |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/create_object_attribute.md",
    "content": "### Functional description\n\ncreate object attribute\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                  |  Type      | Required\t   |  Description                                                    |\n|-----------------------|------------|--------|----------------------------------------------------------|\n| creator               | string     | No     | The creator of data                                             |\n| description           | string     | No     | Description information of data                                           |\n| editable              | bool       | No     | Editable data                                       |\n| isonly                | bool       | No     | Uniqueness data                                             |\n| ispre                 | bool       | No     | true:preset field,false:non preset field                           |\n| isreadonly            | bool       | No     | true:read-only，false:non read-only                                   |\n| isrequired            | bool       | No     | true:required,false:optional                                    |\n| option                | string     | No     |User's custom content，the content and format of memory is determined by caller,example ({\"min\":\"1\",\"max\":\"2\"})|\n| unit                  | string     | No     | Unit                                                     |\n| placeholder           | string     | No     | Placeholder                                                   |\n| bk_property_group     | string     | No     | Object property group name                                            |\n| bk_obj_id             | string     | Yes     | Object ID                                                   |\n| bk_supplier_account   | string     | Yes     | Supplier account                                               |\n| bk_property_id        | string     | Yes     | Object Property ID                                             |\n| bk_property_name      | string     | Yes     | Object property name                                      |\n| bk_property_type      | string     | Yes     | The storage data type of defined property field,rang list(singlechar,longchar,int,enum,date,time,objuser,singleasst,multiasst,timezone,bool)|\n| bk_asst_obj_id        | string     | No     | If there are other models associated with the object, then must be set this field, otherwise, it doesn't to be set                                                                        |\n\n#### bk_property_type\n\n| IDentifier       | name     |\n|------------|----------|\n| singlechar | Single character   |\n| longchar   | Long character   |\n| int        | Integer     |\n| enum       | Enumeration |\n| date       | Date      |\n| time       | time      |\n| objuser    | Object user      |\n| singleasst | Single association   |\n| multiasst  | Multiple association   |\n| timezone   | Timezone     |\n| bool       | Bool    |\n\n### Request Parameters Example\n\n```python\n{\n\t\"creator\": \"user\",\n\t\"description\": \"test\",\n\t\"editable\": \"true\",\n\t\"isonly\": \"false\",\n\t\"ispre\": \"false\",\n\t\"isreadonly\": \"false\",\n\t\"isrequired\": \"false\",\n\t\"option\": {\"min\":\"1\",\"max\":\"2\"},\n\t\"unit\": \"1\",\n\t\"placeholder\": \"test\",\n\t\"bk_property_group\": \"default\",\n\t\"bk_obj_id\": \"cc_test_inst\",\n\t\"bk_supplier_account\": \"0\",\n\t\"bk_property_id\": \"cc_test\",\n\t\"bk_property_name\": \"cc_test\",\n\t\"bk_property_type\": \"singlechar\",\n\t\"bk_asst_obj_id\": \"test\"\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n\t\"data\": {\n\t\t\"id\": 11142\n\t}\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field      | Type      | Description               |\n|-----------|-----------|--------------------|\n| id        | int       | ID of the new data record |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/create_user_group.md",
    "content": "### Functional description\n\ncreate user group\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                 |  Type      | Required\t   |  Description                     |\n|----------------------|------------|--------|---------------------------|\n| bk_supplier_account  | string     | Yes     | Supplier account                |\n| group_name           | string     | Yes   | Group name                     |\n| user_list            | string     | Yes     |  User list, separated by ';' |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\": \"0\",\n    \"group_name\":\"Administrators\",\n    \"user_list\":\"owen;tt\"\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_classification.md",
    "content": "### Functional description\n\ndelete classification\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field  |  Type       | Required\t   |  Description                            |\n|-------|-------------|--------|----------------------------------|\n|id     | int         | Yes     |  ID of the classification data record                  |\n\n\n### Request Parameters Example\n\n```python\n\n{\n    \"delete\":{\n    \"id\" : 0\n    }\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_host_lock.md",
    "content": "### Functional description\n\ndelete host lock\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type       | Required\t   | Description                            |\n|---------------------|-------------|--------|----------------------------------|\n|ip_list| string| yes| host innerip|\n| bk_cloud_id| int| yes|cloud id |\n\n### Request Parameters Example\n\n```python\n{\n   \"ip_list\":[\"127.0.0.1\", \"127.0.0.2\"],\n   \"bk_cloud_id\":0\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"bk_error_code\": 0,\n    \"bk_error_msg\": \"success\",\n    \"data\": null\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_inst.md",
    "content": "### Functional description\n\ndelete instance\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                |  Type       | Required\t   |  Description                            |\n|---------------------|-------------|--------|----------------------------------|\n| bk_supplier_account | string      | Yes     | Supplier account                       |\n| bk_obj_id           | string      | Yes     | Object ID，the deleted object is cloud, that is 'plat' |\n| bk_inst_id          | int         | Yes     | instance ID，the deleted cloud is cloud ID  |\n\n\n### Request Parameters Example\n\n```python\n\n{\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_id\": \"test\",\n    \"delete\":{\n    \"bk_inst_id\": 0\n    }\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_instance_association.md",
    "content": "### Functional description\n\ndelete association between object's instance.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n| Field                 |  Type      | Required\t   |  Description          |\n|----------------------|------------|--------|-----------------------------|\n| id           | int64     | Yes    | the instance association's unique id             |\n\n### Request Parameters Example\n\n``` json\n\n```\n\n### Return Result Example\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n\n```\n\n### Return Result Parameters Description\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_object.md",
    "content": "### Functional description\n\ndelete object\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field  |  Type       | Required\t   |  Description                 |\n|-------|-------------|--------|-----------------------|\n| id    | int         | No     | ID of the deleted data record   |\n\n\n### Request Parameters Example\n\n```python\n\n{\n      \"delete\":{\n          \"id\" : 0\n      }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_object_attribute.md",
    "content": "### Functional description\n\ndelete object attribute\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field  |  Type       | Required\t   |  Description                         |\n|-------|-------------|--------|-------------------------------|\n| id    | int         | No     | The unique identifier ID of the deleted data record  |\n\n\n### Request Parameters Example\n\n```python\n\n{\n    \"delete\":{\n    \"id\" : 0\n    }    \n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_process_module_bind.md",
    "content": "### Functional description\n\ndelete process module bind relationship\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field  |  Type       | Required\t   |  Description                         |\n|-------|-------------|--------|-------------------------------|\n| id    | int         | No     | The unique identifier ID of the deleted data record  |\n| bk_supplier_account | string   | Yes     | Supplier account      |\n| bk_biz_id  | int   | Yes     | Bussiness ID      |\n| bk_process_id | int   | Yes     | Process ID  |\n| bk_module_name  | string   | yes     | ModuleName     |\n\n\n### Request Parameters Example\n\n```python\n\n\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/delete_user_group.md",
    "content": "### Functional description\n\ndelete user group\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type       | Required\t   |  Description       |\n|---------------------|-------------|--------|-------------|\n| bk_supplier_account | string      | Yes     | Supplier account  |\n| group_id            | string      | Yes     | Group ID      |\n\n\n### Request Parameters Example\n\n```python\n\n{\n    \"bk_supplier_account\": \"0\",\n    \"delete\":{\n        \"group_id\": \"test\"    \n    }\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/find_host_by_module.md",
    "content": "### Functional description\n\nfind host by module id\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description          |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    | request meta data             |\n| bk_module_ids | int array     | Yes   | module id array |\n| page                | object     | Yes   | page condition                |\n\n\nmetadata params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     |the label data request should with, such as biz info |\n\n\nlabel params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | bussiness ID |\n\n### Request Parameters Example\n\n``` python\n{\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"3\"\n        }\n    },\n    \"bk_module_ids\":[\n        56\n    ],\n    \"page\":{\n        \"start\":0,\n        \"limit\":10\n    }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":\"success\",\n    \"data\":{\n        \"count\":1,\n        \"info\":[\n            {\n                \"biz\":[\n                    {\n                        \"bk_biz_developer\":\"\",\n                        \"bk_biz_id\":2,\n                        \"bk_biz_maintainer\":\"admin\",\n                        \"bk_biz_name\":\"蓝鲸\"\n                    }\n                ],\n                \"host\":{\n                    \"bk_asset_id\":\"DKUXHBUH189\",\n                    \"bk_bak_operator\":\"admin\",\n                    \"bk_cloud_id\":[\n                        {\n                            \"id\":\"0\",\n                            \"bk_obj_id\":\"plat\",\n                            \"bk_obj_icon\":\"\",\n                            \"bk_inst_id\":0,\n                            \"bk_obj_name\":\"\",\n                            \"bk_inst_name\":\"default area\"\n                        }\n                    ],\n                    \"bk_comment\":\"\",\n                    \"bk_cpu\":8,\n                    \"bk_cpu_mhz\":2609,\n                    \"bk_cpu_module\":\"E5-2620\",\n                    \"bk_disk\":300000,\n                    \"bk_host_id\":17,\n                    \"bk_host_innerip\":\"192.168.1.1\",\n                    \"bk_host_name\":\"nginx-1\",\n                    \"bk_host_outerip\":\"\",\n                    \"bk_isp_name\":null,\n                    \"bk_mac\":\"\",\n                    \"bk_mem\":32000,\n                    \"bk_os_bit\":\"\"\n                },\n                \"module\":[\n                    {\n                        \"TopModuleName\":\"蓝鲸##公共组件##consul\",\n                        \"bk_bak_operator\":\"\",\n                        \"bk_biz_id\":2,\n                        \"bk_module_id\":35,\n                        \"bk_module_name\":\"consul\",\n                        \"bk_module_type\":\"1\",\n                        \"bk_parent_id\":8,\n                        \"bk_set_id\":8,\n                        \"bk_supplier_account\":\"0\",\n                        \"create_time\":\"2018-05-16T21:03:22.724+08:00\",\n                        \"default\":0,\n                        \"last_time\":\"2018-05-16T21:03:22.724+08:00\",\n                        \"operator\":\"\"\n                    }\n                ],\n                \"set\":[\n                    {\n                        \"TopSetName\":\"蓝鲸##公共组件\",\n                        \"bk_biz_id\":2,\n                        \"bk_capacity\":null,\n                        \"bk_parent_id\":3,\n                        \"bk_service_status\":\"1\",\n                        \"bk_set_desc\":\"111\",\n                        \"bk_set_env\":\"3\",\n                        \"bk_set_id\":8,\n                        \"bk_set_name\":\"公共组件\",\n                        \"bk_supplier_account\":\"0\",\n                        \"create_time\":\"2018-05-16T21:03:22.692+08:00\",\n                        \"default\":0,\n                        \"description\":\"\",\n                        \"last_time\":\"2018-05-18T11:50:53.947+08:00\"\n                    }\n                ]\n            }\n        ]\n    }\n}\n```\n\n\n### Return Result Parameters Description\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| count | int |the count of result|\n| info | array  |the record info|\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| biz| object| host bussiness information |\n| set| object | host set information|\n| module| object |host module information |\n| host| object |host information |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/find_instance_association.md",
    "content": "### Functional description\n\nfind association between object's instance.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description          |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    | request meta data             |\n| condition | string map     | Yes   | query condition |\n\n\nmetadata params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     |the label data request should with, such as biz info |\n\n\nlabel params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | business's ID |\n\ncondition params\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_obj_asst_id           | string     | Yes     | object's association unique id|\n| bk_asst_id           | string     | NO     | object's association kind unique name|\n| bk_obj_id           | string     | NO     | the association's source object's id|\n| bk_asst_id           | string     | NO     | the association's destination object's id|\n\n\n### Request Parameters Example\n\n``` json\n{\n    \"condition\": {\n        \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n        \"bk_asst_id\": \"\",\n        \"bk_object_id\": \"\",\n        \"bk_asst_obj_id\": \"\"\n    },\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"3\"\n        }\n    }\n}\n```\n\n### Return Result Example\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [{\n        \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n        \"bk_obj_id\":\"switch\",\n        \"bk_asst_obj_id\":\"host\",\n        \"bk_inst_id\":12,\n        \"bk_asst_inst_id\":13\n    }]\n}\n\n```\n\n\n### Return Result Parameters Description\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n|id|int64|the association's unique id|\n| bk_obj_asst_id| string|  auto generated id, which represent this association.|\n| bk_obj_id| string| the association source object's id |\n| bk_asst_obj_id| string| the association destination object's id|\n| bk_inst_id| int64| the association source object's instance id|\n| bk_asst_inst_id| int64| the association destination object's instance id|\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/find_object_association.md",
    "content": "### Functional description\n\nfind association between object.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description          |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    | request meta data             |\n| condition | string map     | Yes   | query condition |\n\n\nmetadata params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     |the label data request should with, such as biz info |\n\n\nlabel params\n\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | business's ID |\n\ncondition params\n| Field                 |  Type      | Required\t   |  Description         |\n|---------------------|------------|--------|-----------------------------|\n| bk_asst_id           | string     | Yes     | object's association kind unique name|\n| bk_obj_id           | string     | Yes     | the association's source object's id|\n| bk_asst_id           | string     | Yes     | the association's destination object's id|\n\n\n### Request Parameters Example\n\n``` json\n{\n    \"condition\": {\n        \"bk_asst_id\": \"belong\",\n        \"bk_obj_id\": \"bk_switch\",\n        \"bk_asst_obj_id\": \"bk_host\"\n    },\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"1\"\n        }\n    }\n}\n```\n\n### Return Result Example\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n            \"bk_obj_asst_name\": \"\",\n            \"bk_asst_id\": \"belong\",\n            \"bk_asst_name\": \"belong\",\n            \"bk_obj_id\": \"bk_switch\",\n            \"bk_obj_name\": \"switch\",\n            \"bk_asst_obj_id\": \"bk_host\",\n            \"bk_asst_obj_name\": \"host\",\n            \"mapping\": \"1:n\",\n            \"on_delete\": \"none\"\n        }\n    ]\n}\n\n```\n\n\n### Return Result Parameters Description\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n|id|int64|the association's unique id|\n| bk_obj_asst_id| string|  auto generated id, which represent this association.|\n| bk_obj_asst_name| string| the alias name for this association. |\n| bk_asst_id| string| association kind id |\n| bk_asst_name| string| association kind name |\n| bk_obj_id| string| the association source object's id |\n| bk_obj_name| string| the association source object's name |\n| bk_asst_obj_id| string| the association destination object's id|\n| bk_asst_obj_name| string| the association destination object's name|\n| mapping| string| association between object's instance type, could be one of [1:1, 1:n, n:n] |\n| on_delete| string| the action when this association is delete, could be one of [none, delete_src, delete_dest], \"none\" means do nothing, \"delete_src\" means delete source object's instance, \"delete_dest\" means delete destination object's instance.|\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/get_biz_internal_module.md",
    "content": "### Functional description\n\nget business's idle and fault modules.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n### Request Parameters Example\n\n``` python\n\n```\n\n### Return Result Example\n\n```python\n{\n  \"result\": true,\n  \"code\": 0,\n  \"message\": \"success\",\n  \"data\": {\n    \"bk_set_id\": 2,\n    \"bk_set_name\": \"idle pool\",\n    \"module\": [\n      {\n        \"bk_module_id\": 3,\n        \"bk_module_name\": \"idle machine\"\n      },\n      {\n        \"bk_module_id\": 4,\n        \"bk_module_name\": \"fault machine\"\n      }\n    ]\n  }\n}\n```\n\n### Return Result Parameters Description\n\n#### data description\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n|bk_set_id | int64 | the set id that idle and fault machine belongs to  |\n|bk_set_name | string |the set name that idle and fault machine belongs to |\n\n#### module description\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n|bk_module_id | int64 | module's id |\n|bk_module_name | string |module's name|"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/get_mainline_object_topo.md",
    "content": "### Functional description\n\nget mainline object's business topology\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n### Request Parameters Example\n\n``` python\n\n```\n\n### Return Result Example\n\n```python\n{\n  \"result\": true,\n  \"bk_error_code\": 0,\n  \"bk_error_msg\": \"success\",\n  \"data\": [\n    {\n      \"bk_obj_id\": \"biz\",\n      \"bk_obj_name\": \"business\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"set\",\n      \"bk_next_name\": \"set\",\n      \"bk_pre_obj_id\": \"\",\n      \"bk_pre_obj_name\": \"\"\n    },\n    {\n      \"bk_obj_id\": \"set\",\n      \"bk_obj_name\": \"set\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"module\",\n      \"bk_next_name\": \"module\",\n      \"bk_pre_obj_id\": \"biz\",\n      \"bk_pre_obj_name\": \"business\"\n    },\n    {\n      \"bk_obj_id\": \"module\",\n      \"bk_obj_name\": \"module\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"host\",\n      \"bk_next_name\": \"host\",\n      \"bk_pre_obj_id\": \"set\",\n      \"bk_pre_obj_name\": \"set\"\n    },\n    {\n      \"bk_obj_id\": \"host\",\n      \"bk_obj_name\": \"host\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"\",\n      \"bk_next_name\": \"\",\n      \"bk_pre_obj_id\": \"module\",\n      \"bk_pre_obj_name\": \"module\"\n    }\n  ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n|bk_obj_id | string | object's unique id |\n|bk_obj_name | string | object's name |\n|bk_supplier_account | string | supplier's account |\n|bk_next_obj | string | the next object's unique id |\n|bk_next_name | string | the next object's name |\n|bk_pre_obj_id | string | the previous object's unique id |\n|bk_pre_obj_name | string | the previous object's name |"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/get_operation_log.md",
    "content": "### Functional description\n\nget operation log\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                 |  Type      | Required\t   |  Description                 |\n|----------------------|------------|--------|-----------------------|\n| condition  | object     | No     | condition for filter           |\n| start            | int     | NO     | start record               |\n| limit       | int     | No     | limit of one query |\n| sort       | string     | No     | the sort field |\n\n### Request Parameters Example\n\n```python\n\n{\n    \"condition\":{\n        \"bk_biz_id\":99999,\n        \"ext_key\":{\n            \"$in\":[\n                \"127.0.0.23\",\n                \"127.0.0.22\"\n            ]\n        },\n        \"op_target\":\"host\",\n        \"op_type\":\"add\",\n        \"op_time\":[\n            \"2017-12-25 10:10:10\",\n            \"2017-12-25 10:10:11\"\n        ]\n    },\n    \"start\":0,\n    \"limit\":10,\n    \"sort\":\"-create_time\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":null,\n    \"data\":{\n        \"count\":1,\n        \"info\":[\n            {\n                \"bk_supplier_account\":\"0\",\n                \"bk_biz_id\":1,\n                \"op_desc\":\"修改主机\",\n                \"op_type\":2,\n                \"op_target\":\"host\",\n                \"operator\":\"admin\",\n                \"content\":{\n                    \"pre_data\":{\n                        \"last_time\":\"2018-03-08T15:10:42.264+08:00\",\n                        \"bk_cloud_id\":[\n                            {\n                                \"ref_id\":1,\n                                \"ref_name\":\"Direct connecting area\"\n                            }\n                        ],\n                        \"create_time\":\"2018-03-08T14:23:05.05+08:00\",\n                        \"bk_host_id\":1,\n                        \"bk_host_innerip\":\"127.0.01\",\n                        \"bk_import_from\":\"1\"\n                    },\n                    \"cur_data\":{\n                        \"last_time\":\"2018-03-08T15:10:42.264+08:00\",\n                        \"bk_cloud_id\":[\n                            {\n                                \"ref_id\":2,\n                                \"ref_name\":\"test connecting area\"\n                            }\n                        ],\n                        \"create_time\":\"2018-03-08T14:23:05.05+08:00\",\n                        \"bk_host_id\":1,\n                        \"bk_host_innerip\":\"127.0.0.1\",\n                        \"bk_import_from\":\"1\"\n                    },\n                    \"header\":[\n                        {\n                            \"bk_property_id\":\"bk_host_innerip\",\n                            \"bk_property_name\":\"InnerIP\"\n                        },\n                        {\n                            \"bk_property_id\":\"bk_host_outerip\",\n                            \"bk_property_name\":\"OutterIP\"\n                        }\n                    ],\n                    \"type\":\"map\"\n                },\n                \"ext_key\":\"127.0.0.1\",\n                \"op_time\":\"2018-03-08T03:30:28.056Z\",\n                \"inst_id\":1\n            }\n        ]\n    }\n}\n```\n\n### Return Result Parameters Description\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| result | bool |request result true or false|\n| bk_error_code | int  |error code. 0 represent success, >0 represent failure code |\n| bk_error_msg | string |error message from failed request|\n| data | object  |the data response|\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| count| int |the count of record|\n| info| object array | record information | the information of record  |\n\n#### info ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| bk_supplier_account| string|supplier account code|\n| bk_biz_id| int | business ID  |\n| op_type| string  | the type of record  |\n| op_desc| string  | operation description  |\n| op_target| string | operation target  |\n| operator| string  | the man operate it  |\n| content| object   | operate content  |\n| ext_key| string   | ext key  |\n| op_time| string  | operation time  |\n| inst_id| int | instantiation ID |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/get_process_bind_module.md",
    "content": "### Functional description\n\nget process bind module\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                 |  Type      | Required\t   |  Description                 |\n|----------------------|------------|--------|-----------------------|\n| bk_supplier_account  | string     |Yes     | Supplier account       |\n| bk_biz_id            | int     | Yes     |    Bussiness ID   |\n| bk_process_id       | int     | Yes    | Process ID |\n\n\n### Request Parameters Example\n\n```python\n\n\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":\"\",\n    \"data\":[\n        {\n            \"bk_module_name\":\"db\",\n            \"set_num\":10,\n            \"is_bind\":0\n        },\n        {\n            \"bk_module_name\":\"gs\",\n            \"set_num\":5,\n            \"is_bind\":1\n        }\n    ]\n}\n```\n\n### Return Result Parameters Description\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| result | bool |request result true or false|\n| bk_error_code | int  |error code. 0 represent success, >0 represent failure code |\n| bk_error_msg | string |error message from failed request|\n| data | object  |the data response|\n\n#### data ：\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| bk_module_name| string| Module Name |\n| set_num| int | set number |\n| is_bind| int | is bind with |\n\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/get_role_privilege.md",
    "content": "### Functional description\n\nget role privilege\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                 |  Type      | Required\t   |  Description                 |\n|----------------------|------------|--------|-----------------------|\n| bk_supplier_account  | string     | Yes     | Supplier account            |\n| bk_obj_id            | string     | Yes     | Object ID                |\n| bk_property_id       | string     | Yes     | The user property ID of model |\n\n### Request Parameters Example\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"bk_property_id\":\"test\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":[\n        \"hostupdate\",\n        \"hosttrans\",\n        \"topoupdate\",\n        \"customapi\",\n        \"proconfig\"\n    ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field       | Type     | Description         |\n|------------|----------|--------------|\n| hostupdate | string   | Host update      |\n| hosttrans  | string   | Host transfer     |\n| topoupdate | string   | Host topou udpate |\n| customapi  | string   | Custom api    |\n| proconfig  | string   | Process configuration     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/get_user_privilege.md",
    "content": "### Functional description\n\nget user privilege\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Request Parameters Example\n\n| Field                 |  Type      | Required\t   |  Description                 |\n|----------------------|------------|--------|-----------------------|\n| bk_supplier_account  | string     | Yes     | Supplier account            |\n| user_name            | string     | Yes     | User name                 |\n\n### Request Parameters Example\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"user_name\":\"test\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n     \"data\": {\n        \"bk_group_id\":1,\n        \"sys_config\":{\n            \"global_busi\":[\n                \"resource\"\n            ],\n            \"back_config\":[\n                \"event\",\n                \"model\",\n                \"audit\"\n            ]\n        },\n        \"model_config\":{\n            \"network\":{\n                \"router\":[\n                    \"update\",\n                    \"delete\"\n                ]\n            }\n        }\n    }\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field         | Type     | Description         |\n|--------------|----------|--------------|\n| group_id     | string   | Group ID       |\n| sys_config   | object   | System configuration     |\n| back_config  | object   | Backstage configuration     |\n| model_config | object   | Model configuration     |\n\n\n#### sys_config  currently only global_busi\n\n| name    | Type   | Description       |\n|---------|--------|------------|\n| resource| string | Host resource |\n\n#### back_config\n\n| name    | Type   | Description         |\n|---------|--------|--------------|\n| event   | string | Event configuration |\n| model   | string | Model configuration     |\n| audit   | string | Audit configuration     |\n\n#### model_config\n\n| name   | Type   | Description |\n|--------|--------|------|\n| create | string | Create |\n| update | string | Update |\n| delete | string | Delete |\n| search | string | Search |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_classifications.md",
    "content": "### Functional description\n\nsearch classifications\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description                                                    |\n|----------------------|------------|--------|----------------------------------------------------------|\n| bk_supplier_account  | string     | No     | Supplier account                                               |\n\n### Request Parameters Example\n\n``` python\n{\n    \"bk_supplier_account\": \"0\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n     \"data\": [\n         {\n            \"bk_classification_icon\": \"icon-cc-business\",\n            \"bk_classification_id\": \"bk_host_manage\",\n            \"bk_classification_name\": \"host managment\",\n            \"bk_classification_type\": \"inner\",\n            \"id\": 1\n         }\n     ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field                   | Type     | Description                                                                                          |\n|------------------------|----------|-----------------------------------------------------------------------------------------------|\n| bk_classification_id   | string   | Classification ID，English description is used in system                                                              |\n| bk_classification_name | string   | Classification name                                                                                        |\n| bk_classification_type | string   | For classification （example：inner code is inner classification, null string is custom classification）                           |\n| bk_classification_icon | string   | Classification icon, that can refer to[(classIcon.json)](resource_define/classIcon.json) |\n| id                     | int      | Data record ID                                                                                   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_group_privilege.md",
    "content": "### Functional description\n\nsearch group privilege\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description       |\n|----------------------|------------|--------|-------------|\n| bk_supplier_account  | string     | Yes     | Supplier account  |\n| group_id             | string     | Yes     | Group ID      |\n\n### Request Parameters Example\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"group_id\":\"test\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n         \"group_id\":1,\n         \"sys_config\":{\n             \"global_busi\":[\n                 \"resource\"\n             ],\n             \"back_config\":[\n                 \"event\",\n                 \"model\",\n                 \"audit\"\n             ]\n         },\n         \"model_config\":{\n             \"network\":{\n                 \"router\":[\n                     \"update\",\n                     \"delete\"\n                 ]\n             }\n         }\n    }\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field          | Type     | Description     |\n|---------------|----------|----------|\n| group_id      | string   | Group ID   |\n| sys_config    | object   | System configuration |\n| back_config   | object   | Backstage configuration |\n| model_config  | object   | Model configuration |\n\n\n#### sys_config  only with global_busi\n\n| name     | Type   | Description       |\n|---------|--------|------------|\n| resource| string | Host resource |\n\n#### back_config\n\n| name    | Type   | Description         |\n|---------|--------|--------------|\n| event   | string | Event configuration |\n| model   | string | Model configuration     |\n| audit   | string | Audit configuration     |\n\n#### model_config\n\n| name   | Type   | Description |\n|--------|--------|------|\n| create | string | Create  |\n| update | string | Update  |\n| delete | string | Delete  |\n| search | string | Search  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_host_lock.md",
    "content": "### Functional description\n\nsearch host lock. \n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type       | Required\t   | Description                            |\n|---------------------|-------------|--------|----------------------------------|\n|ip_list| string array| yes| host innerip|\n| bk_cloud_id| int| yes|cloud id |\n\n### Request Parameters Example\n\n```python\n{\n   \"ip_list\":[\"127.0.0.1\", \"127.0.0.2\"],\n   \"bk_cloud_id\":0\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"bk_error_code\": 0,\n    \"bk_error_msg\": \"success\",\n    \"data\": {\n        \"127.0.0.1\": true,\n        \"127.0.0.2\": false\n    }\n}\n```\n\n### Return Result Parameters Description\n#### data\n\n| Field      | Type         | Description                 |\n|-----------|--------------|----------------------|\n| data | map[string]bool |the data response,Key is the IP, value is locked status|\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_inst.md",
    "content": "### Functional description\n\nsearch instance\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description                       |\n|---------------------|------------|--------|-----------------------------|\n| bk_obj_id           | string     | Yes     | Object ID                      |\n| bk_supplier_account | string     | Yes     | Supplier account,please fill '0' by independent deployment  |\n| page                | object     | Yes     | Page parameters                    |\n| condition           | object     | No     | Search condition                    |\n| fields              |string array| No     | Search fields                  |\n\n#### page\n\n| Field      |  Type      | Required\t   |  Description                |\n|-----------|------------|--------|----------------------|\n| start     |  int       | Yes     | The record of start position         |\n| limit     |  int       | Yes     | Limit number of each page,maximum 200 |\n| sort      |  string    | No     | Sort fields             |\n\n#### condition\n\n| Field      |  Type      | Required\t   |  Description      |\n|-----------|------------|--------|------------|\n| bk_weblogic  |string      |Yes      | Here is a sample data, which needs to be set as identifier of the model, and configure English name on page |\n| field     |string      |Yes      | Value of model field                                                |\n| operator  |string      |Yes      | value : $regex $eq $ne                                           |\n| value     |string      |Yes      | Value of model field                                   |          \n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_obj_id\":\"test\",\n    \"bk_supplier_account\":\"0\",\n    \"page\":{\n        \"start\":0,\n        \"limit\":10,\n        \"sort\":\"bk_inst_id\"\n    },\n    \"fields\":\"test\",\n    \"condition\":{\n        \"bk_weblogic\":[\n            {\n                \"field\":\"bk_inst_name\",\n                \"operator\":\"$regex\",\n                \"value\":\"qq\"\n            }\n        ]\n    }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n\t\t\"count\": 1,\n\t\t\"info\": [{\n\t\t\t\"bk_inst_id\": 1,\n\t\t\t\"bk_inst_name\": \"test\",\n\t\t\t\"bk_obj_id\": \"test\",\n\t\t\t\"bk_supplier_account\": \"0\",\n\t\t\t\"create_time\": \"2018-04-17T14:50:15.993+08:00\",\n\t\t\t\"last_time\": \"2018-04-17T15:00:49.274+08:00\",\n\t\t\t\"test_asst\": [{\n\t\t\t\t\"bk_inst_id\": 2,\n\t\t\t\t\"bk_inst_name\": \"test2\",\n\t\t\t\t\"bk_obj_id\": \"test_obj\",\n\t\t\t\t\"id\": \"2\"\n\t\t\t}]\n\t\t}]\n\t}\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field      | Type      | Description         |\n|-----------|-----------|--------------|\n| count     | int       | Count number     |\n| info      | array     | The real instance data |\n\n#### data.info\n\n| Field               | Type   | Description                                                                                    |\n| ------------------- | ------ | ---------------------------------------------------------------------------------------------- |\n| id                  | string | Associated instances ID of storage                                                             |\n| bk_inst_id          | int    | ID of new data record                                                         |\n| bk_supplier_account | string | Supplier account                                                                               |\n| bk_obj_id           | string | Object ID                                                                                      |\n| create_time         | string | Create time of data                                                                            |\n| last_time           | string | Last modification time of data                                                                 |\n| test_asst           | string | test_asst is the association field of instance，return a instance of the association model |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_inst_association_topo.md",
    "content": "### Functional description\n\nsearch instance association topology\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description                       |\n|---------------------|------------|--------|-----------------------------|\n|bk_supplier_account  |string|Yes |Supplier account|\n|bk_obj_id            |string|Yes |Object ID|\n|bk_inst_id           |int|Yes |Instance ID|\n\n\n### Request Parameters Example\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"bk_inst_id\":\"test\"\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n       {\n           \"curr\": {\n               \"bk_inst_id\": 17,\n               \"bk_inst_name\": \"192.168.1.1\",\n               \"bk_obj_icon\": \"icon-cc-host\",\n               \"bk_obj_id\": \"host\",\n               \"bk_obj_name\": \"host\",\n               \"children\": [],\n               \"count\": 0\n           },\n           \"next\": [\n               {\n                   \"bk_inst_id\": 0,\n                   \"bk_inst_name\": \"\",\n                   \"bk_obj_icon\": \"icon-cc-subnet\",\n                   \"bk_obj_id\": \"plat\",\n                   \"bk_obj_name\": \"cloud\",\n                   \"children\": [\n                       {\n                           \"bk_inst_id\": 0,\n                           \"bk_inst_name\": \"default area\",\n                           \"bk_obj_icon\": \"\",\n                           \"bk_obj_id\": \"plat\",\n                           \"bk_obj_name\": \"\",\n                           \"id\": \"0\"\n                       }\n                   ],\n                   \"count\": 1\n               }\n           ],\n           \"prev\": [\n               {\n                   \"bk_inst_id\": 0,\n                   \"bk_inst_name\": \"\",\n                   \"bk_obj_icon\": \"icon-cc-business\",\n                   \"bk_obj_id\": \"rel\",\n                   \"bk_obj_name\": \"association\",\n                   \"children\": [\n                       {\n                           \"bk_inst_id\": 162,\n                           \"bk_inst_name\": \"test1\",\n                           \"bk_obj_icon\": \"\",\n                           \"bk_obj_id\": \"rel\",\n                           \"bk_obj_name\": \"\"\n                       }\n                   ],\n                   \"count\": 1\n               }\n           ]\n       }\n   ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field      | Type         | Description                 |\n|-----------|--------------|----------------------|\n| curr      | object       | The current instance node information   |\n| next      | object array | The subnode set of the current node |\n| prev      | object array | Parent node integration of the current node |\n\n\n#### curr\n\n| Field         | Type         | Description                          |\n|--------------|--------------|-------------------------------|\n| bk_inst_id   | int          | Instance ID                        |\n| bk_inst_name | string       | Instance name for display            |\n| bk_obj_icon  | string       | Object icon name                |\n| bk_obj_id    | string       | Object ID                        |\n| bk_obj_name  | string       | Object name for display            |\n| children     | object array | The set of associated instances under this model|\n| count        | int          | Children     include node's number   |\n\n\n#### next\n\n| Field         | Type         | Description                           |\n|--------------|--------------|--------------------------------|\n| bk_inst_id   | int          | Instance ID|the inst ID             |\n| bk_inst_name | string       | Instance name for display             |\n| bk_obj_icon  | string       | Object icon name                 |\n| bk_obj_id    | string       | Object ID                         |\n| bk_obj_name  | string       | Object name for display             |\n| children     | object array | The set of associated instances under this model |\n| count        | int          | Children include node's number         |\n\n#### next/children\n\n| Field         | Type      | Description               |\n|--------------|-----------|--------------------|\n| bk_inst_id   |int        | Instance ID             |\n| bk_inst_name |string     | Instance name for display |\n| bk_obj_icon  |string     | Object icon name     |\n| bk_obj_id    |string     | Object ID             |\n| bk_obj_name  |string     | Object name for display |\n\n\n\n#### prev\n\n| Field         | Type         | Description                           |\n|--------------|--------------|--------------------------------|\n| bk_inst_id   | int          | Instance ID|the inst ID             |\n| bk_inst_name | string       | Instance name for display             |\n| bk_obj_icon  | string       | Object icon name                 |\n| bk_obj_id    | string       | Object ID                         |\n| bk_obj_name  | string       | Object name for display             |\n| children     | object array | The set of associated instances under this model |\n| count        | int          | Children include node's number        |\n\n#### prev/children Field说明\n\n| Field        | Type   | Description               |\n|-------------|--------|--------------------|\n|bk_inst_id   | int    | Instance ID|the inst ID |\n|bk_inst_name | string | Instance name for display |\n|bk_obj_icon  | string | Object icon name     |\n|bk_obj_id    | string | Object ID             |\n|bk_obj_name  | string | Object name for display |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_object_attribute.md",
    "content": "### Functional description\n\nsearch object attribute\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description                       |\n|---------------------|------------|--------|-----------------------------|\n|bk_obj_id            | string     | No     | Object ID                      |\n|bk_supplier_account  | string     | No     | Supplier account                  |\n\n\n### Request Parameters Example\n\n``` python\n{\n    \"bk_obj_id\": \"test\",\n    \"bk_supplier_account\": \"0\"\n}\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n   \"data\": [\n       {\n           \"bk_asst_obj_id\": \"\",\n           \"bk_asst_type\": 0,\n           \"create_time\": \"2018-03-08T11:30:27.898+08:00\",\n           \"creator\": \"cc_system\",\n           \"description\": \"\",\n           \"editable\": false,\n           \"id\": 51,\n           \"isapi\": false,\n           \"isonly\": true,\n           \"ispre\": true,\n           \"isreadonly\": false,\n           \"isrequired\": true,\n           \"last_time\": \"2018-03-08T11:30:27.898+08:00\",\n           \"bk_obj_id\": \"process\",\n           \"option\": \"\",\n           \"placeholder\": \"\",\n           \"bk_property_group\": \"default\",\n           \"bk_property_group_name\": \"base information\",\n           \"bk_property_id\": \"bk_process_name\",\n           \"bk_property_index\": 0,\n           \"bk_property_name\": \"process name\",\n           \"bk_property_type\": \"singlechar\",\n           \"bk_supplier_account\": \"0\",\n           \"unit\": \"\"\n       }\n   ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field                | Type         | Description                                                       |\n|---------------------|--------------|------------------------------------------------------------|\n| creator             | string       | The creator of data                                               |\n| description         | string       | Description information of data                                              |\n| editable            | bool         | Editable data                                         |\n| isonly              | bool         | Uniqueness data                                                 |\n| ispre               | bool         | true:preset field, false:non preset field                             |\n| isreadonly          | bool         | true:read-only, false:non read-only                                    |\n| isrequired          | bool         | true:required, false:optional                                      |\n| option              | string       | User's custom content，the content and format of memory is determined by caller               |\n| unit                | string       | Unit                                                       |\n| placeholder         | string       | Placeholder                                                     |\n| bk_property_group   | string       | Object property group name                                             |\n| bk_obj_id           | string       | Object ID                                                     |\n| bk_supplier_account | string       | Supplier account                                                 |\n| bk_property_id      | string       | Object Property ID                                               |\n| bk_property_name    | string       | Object property name                                       |\n| bk_property_type    | string       | The storage data type of defined property field,range list(singlechar,longchar,int,enum,date,time,objuser,singleasst,multiasst,timezone,bool)|\n| bk_asst_obj_id      | string       | If there are other models associated with the object, then must be set this field, otherwise, it doesn't to be set|\n\n#### bk_property_type\n\n| identifier       | name     |\n|------------|----------|\n| singlechar | Single character   |\n| longchar   | Long character   |\n| int        | Integer     |\n| enum       | Enumeration |\n| date       | Date     |\n| time       | Time      |\n| objuser    | Object user      |\n| singleasst | Single association   |\n| multiasst  | Multiple association   |\n| timezone   | Timezone     |\n| bool       | Bool     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_object_topo.md",
    "content": "### Functional description\n\nsearch object topology\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                  |  Type      | Required\t   |  Description                                    |\n|----------------------|------------|--------|------------------------------------------|\n| bk_classification_id |string      |Yes      | Classification ID, can be named in English alphabet sequence only |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_classification_id\": \"test\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n        {\n           \"arrows\": \"to\",\n           \"from\": {\n               \"bk_classification_id\": \"bk_host_manage\",\n               \"bk_obj_id\": \"host\",\n               \"bk_obj_name\": \"host\",\n               \"position\": \"{\\\"bk_host_manage\\\":{\\\"x\\\":-357,\\\"y\\\":-344},\\\"lhmtest\\\":{\\\"x\\\":163,\\\"y\\\":75}}\",\n               \"bk_supplier_account\": \"0\"\n           },\n           \"label\": \"bk_cloud_id\",\n           \"label_name\": \"\",\n           \"label_type\": \"\",\n           \"to\": {\n               \"bk_classification_id\": \"bk_host_manage\",\n               \"bk_obj_id\": \"plat\",\n               \"bk_obj_name\": \"cloud area\",\n               \"position\": \"{\\\"bk_host_manage\\\":{\\\"x\\\":-172,\\\"y\\\":-160}}\",\n               \"bk_supplier_account\": \"0\"\n           }\n        }\n   ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field       | Type      | Description                               |\n|------------|-----------|------------------------------------|\n| arrows     | string    | Value to(uniderection) or to,from(bidirectional) |\n| label_name | string    | The relationship name                    |\n| label      | string    | Indicating which field From is associated with To     |\n| from       | string    | Object English ID, initiator of the topological relationship |\n| to         | string    | Object English ID,terminate  of topological relationship |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_object_topo_graphics.md",
    "content": "### Functional description\n\nsearch object topology graphics\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description                       |\n|---------------------|------------|--------|-----------------------------|\n|scope_type |string|Yes|Graphics range type,global,biz,cls(global)|\n|scope_id |string|Yes|ID of graphics range type, if it's global, fill in '0'|\n\n\n### Request Parameters Example\n\n``` python\n{\n    \"scope_type\": \"global\",\n    \"scope_id\": \"0\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n       {\n           \"node_type\": \"obj\",\n           \"bk_obj_id\": \"switch\",\n           \"bk_inst_id\": 0,\n           \"node_name\": \"switch\",\n           \"position\": {\n               \"x\": 100,\n               \"y\": 100\n           },\n           \"ext\": {},\n           \"bk_obj_icon\": \"icon-cc-switch2\",\n           \"scope_type\": \"global\",\n           \"scope_id\": \"\",\n           \"bk_biz_id\": 1,\n           \"bk_supplier_account\": \"0\",\n           \"assts\": [\n               {\n                   \"bk_asst_type\": \"singleasst\",\n                   \"node_type\": \"obj\",\n                   \"bk_obj_id\": \"host\",\n                   \"bk_inst_id\": 0,\n                   \"bk_object_att_id\": \"host_id\",\n                   \"lable\": {}\n               }\n           ]\n       }\n    ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field                | Type     | Description                  |\n|---------------------|----------|-----------------------|\n| node_type           | string   | Node type, obj, inst |\n| bk_obj_id           | string   | Object ID          |\n| bk_inst_id          | int      | Instance ID                |\n| node_name           | string   | Node name, when node_type is obj, node name is object name. when node_type is inst, node name is object name|\n| position            | string   | The position of node in graphic      |\n| ext                 | object   | Front extension field          |\n| bk_obj_icon         | string   | Object icon        |\n| scope_type          | string   | Graphics range type,global,biz,cls(gloabl)|\n| scope_id            | string   | ID of graphics range type, if it'sglobal, fill in '0'          |\n| bk_biz_id           | int      | Business ID                                         |\n| bk_supplier_account | string   | Supplier account                                     |\n| assts               | array    | Association node                                        |\n\n#### assts\n\n| Field             | Type   | Description                  |\n|------------------|--------|-----------------------|\n| bk_asst_type     | string | Association type               |\n| node_type        | string | Node type, obj, inst |\n| bk_obj_id        | string | Object ID          |\n| bk_inst_id       | int    | Instance ID                |\n| bk_object_att_id | string | object attribution            |\n| lable            | obj ect| Label,extension field, not enabled |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_objects.md",
    "content": "### Functional description\n\nsearch objects\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description                                                    |\n|----------------------|------------|--------|----------------------------------------------------------|\n| creator              | string     | No     | The creator of current data                                           |\n| modifier             | string     | No     | Last editoe of data                                   |\n| bk_classification_id | string     | No     | Classification ID, can be named in English alphabet sequence only                 |\n| bk_obj_id            | string     | No     | Object ID，can be named in English alphabet sequence only                     |\n| bk_obj_name          | string     | No     | Object name,for display,can be named with any language that human can read |\n| bk_supplier_account  | string     | No     | Supplier account                                               |\n\n### Request Parameters Example\n\n```python\n{\n    \"creator\": \"user\",\n    \"modifier\": \"user\",\n    \"bk_classification_id\": \"test\",\n    \"bk_obj_id\": \"biz\",\n    \"bk_supplier_account\":\"0\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n        {\n            \"bk_classification_id\": \"bk_organization\",\n            \"create_time\": \"2018-03-08T11:30:28.005+08:00\",\n            \"creator\": \"cc_system\",\n            \"description\": \"\",\n            \"id\": 4,\n            \"bk_ispaused\": false,\n            \"ispre\": true,\n            \"last_time\": null,\n            \"modifier\": \"\",\n            \"bk_obj_icon\": \"icon-XXX\",\n            \"bk_obj_id\": \"XX\",\n            \"bk_obj_name\": \"XXX\",\n            \"position\": \"{\\\"test_obj\\\":{\\\"x\\\":-253,\\\"y\\\":137}}\",\n            \"bk_supplier_account\": \"0\"\n        }\n    ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field                 | Type               | Description                                                                                           |\n|----------------------|--------------------|------------------------------------------------------------------------------------------------|\n| id                   | int                | ID of data record                                                                                   |\n| creator              | string             | The creator of current data                                                                                 |\n| modifier             | string             | Last editor of data                                                                         |\n| bk_classification_id | string             | Classification ID, can be named in English alphabet sequence only                                                       |\n| bk_obj_id            | string             | Object ID，can be named in English alphabet sequence only                                                           |\n| bk_obj_name          | string             | Object name, for display                                                                       |\n| bk_supplier_account  | string             | Supplier account                                                                                     |\n| bk_ispaused          | bool               | Paused, true or false                                                                        |\n| ispre                | bool               | Predefinition, true or false                                                                      |\n| bk_obj_icon          | string             | Object icon information, display in front, that can refer to [(modleIcon.json)](/static/esb/api_docs/res/cc/modleIcon.json)|\n| position             | json object string | Position of front display                                                                             |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_subscription.md",
    "content": "### Functional description\n\nsearch subscription\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n    None\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_biz_id\":0,\n    \"condition\":{\n        \"subscription_name\":\"name\"\n    },\n    \"page\":{\n        \"start\":0,\n        \"limit\":10,\n        \"sort\":\"HostName\"\n    }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":[\n   \t\t{\n   \t\t\t\"subscription_id\":1,\n   \t\t\t\"subscription_name\":\"mysubscribe\",\n   \t\t\t\"system_name\":\"SystemName\",\n   \t\t\t\"callback_url\":\"http://127.0.0.1:8080/callback\",\n   \t\t\t\"confirm_mode\":\"httpstatus\",\n   \t\t\t\"confirm_pattern\":\"200\",\n   \t\t\t\"subscription_form\":\"hostcreate\",\n   \t\t\t\"timeout\":10,\n   \t\t\t\"last_time\": \"2017-09-19 16:57:07\",\n   \t\t\t\"operator\": \"user\",\n   \t\t\t\"statistics\": {\n   \t\t\t\t\"total\": 30,\n   \t\t\t\t\"failure\": 2\n   \t\t\t}\n   \t\t}\n    ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field                 | Type      | Description                                       |\n|----------------------|-----------|--------------------------------------------|\n| subscription_id      | int       | Subscription ID                                     |\n| subscription_name    | string    | Subscription name                                      |\n| system_name          | string    | System name                                    |\n| callback_url         | string    | Callback url                                    |\n| confirm_mode         | string    | Confirm mode,optional: httpstatus,regular |\n| confirm_pattern      | string    | Confirm pattern                                |\n| subscription_form    | string    | Subscription form, separated by ','                          |\n| timeout              | int       | Timeout, unit: second                         |\n| operator             | int       | The last editor of data                     |\n| last_time            | int       | Last update time                                     |\n| statistics.total     | int       | Total statistics                                   |\n| statistics.failure   | int       | Failure statistics                                 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/search_user_group.md",
    "content": "### Functional description\n\nsearch user group\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                 |  Type      | Required\t   |  Description                     |\n|----------------------|------------|--------|---------------------------|\n| bk_supplier_account  | string     | Yes     | Supplier account                |\n| group_name           | string     | No     | Group name                     |\n| user_list            | string     | No     | User group list, separated by ';' |\n\nbody is empty object then return all the group\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"group_name\":\"Administrators\",\n    \"user_list\":\"owen;tt\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":[\n        {\n            \"group_name\":\"Administrators\",\n            \"user_list\":\"owen;tt\",\n            \"group_id\":1\n        }\n    ]\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field          | Type      | Description     |\n|---------------|-----------|----------|\n| group_name    | string    | Group name    |\n| user_list     | string    | User list  |\n| group_id      | string    | Group ID   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/subscribe_event.md",
    "content": "### Functional description\n\n订阅事件subscribe event\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description                                            |\n|---------------------|------------|--------|--------------------------------------------------|\n| bk_supplier_account | string     | Yes     | Supplier account                                       |\n| subscription_name   | string     | Yes     | Subscription name                                        |\n| system_name         | string     | Yes     | Subscription system name                              |\n| callback_url        | string     | Yes     | Url of callback                                          |\n| confirm_mode        | string     | Yes     | Verification mode of event sending success, optional: 1-httpstatus,2-regular |\n| confirm_pattern     | string     | Yes     | Httpstatus or regex of callback                       |\n| subscription_form   | string     | Yes     | Subscription form, separated by ','                           |\n| timeout             | int        | Yes     | Timeout of sending event                                 |\n\n### Request Parameters Example\n\n```python\n{\n  \"bk_supplier_account\": \"0\",\n  \"subscription_name\":\"mysubscribe\",\n  \"system_name\":\"SystemName\",\n  \"callback_url\":\"http://127.0.0.1:8080/callback\",\n  \"confirm_mode\":\"httpstatus\",\n  \"confirm_pattern\":\"200\",\n  \"subscription_form\":\"hostcreate\",\n  \"timeout\":10\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":{\n        \"subscription_id\": 1\n    }\n}\n```\n\n### Return Result Parameters Description\n\n#### data\n\n| Field            | Type    | Description             |\n|-----------------|---------|------------------|\n| subscription_id | int     | Subscription ID |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/testing_connection.md",
    "content": "### Functional description\n\ntesting connection(Only test connectivity)\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t     |  Description                                |\n|---------------------|------------|----------|--------------------------------------|\n| callback_url        | string     | callback | The callback url                     |\n\n### Request Parameters Example\n\n```python\n{\n    \"callback_url\":\"127.0.0.1:8080/callback\",\n    \"data\":{\n\n    }\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n\t\"data\":  \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/transfer_sethost_to_idle_module.md",
    "content": "### Functional description\n\n transfer sethost to idle module\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field          |  Type      | Required\t     |  Description    |\n|---------------|------------|----------|----------|\n| bk_biz_id     | int        | Yes       | Business ID   |\n| bk_set_id     | int        | Yes       | Set ID   |\n| bk_module_id  | int        | Yes       | Module ID   |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_biz_id\":10,\n    \"bk_module_id\":58,\n    \"bk_set_id\":1\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"sucess\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/unsubcribe_event.md",
    "content": "### Functional description\n\nunsubscribe event\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field               |  Type      | Required\t   |  Description      |\n|--------------------|------------|--------|------------|\n|bk_supplier_account | string     | Yes     | Supplier account |\n|subscription_id     | int        | Yes     | Subscription ID     |\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"subscription_id\":1\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_business_enable_status.md",
    "content": "### Functional description\n\nupdate business enable status\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description      |\n|---------------------|------------|--------|------------|\n| bk_biz_id           | int        | Yes     | Business ID     |\n| bk_supplier_account | string     | Yes     | Supplier ID   |\n| flag                | string     | Yes     |  Enable status, disabled or enable  |\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_biz_id\": \"3\",\n    \"bk_supplier_account\": \"0\",\n    \"flag\": \"enable\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_classification.md",
    "content": "### Functional description\n\nupdate classification\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                   |  Type    | Required\t   |  Description                                      |\n|------------------------|----------|--------|--------------------------------------------|\n| id                     | int      | No     | Record ID of the target data, as a condition for update        |\n| bk_classification_name | string   | No     | Classification name  |\n| bk_classification_icon | string   | No     | Classfication icon, that can refer to [(classIcon.json)](resource_define/classIcon.json) |\n\n\n\n\n### Request Parameters Example\n\n```python\n{\n    \"id\": 1,\n    \"bk_classification_name\": \"cc_test_new\",\n    \"bk_classification_icon\": \"icon-cc-business\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_event_subscribe.md",
    "content": "### Functional description\n\nupdate event subscribe\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                   |  Type    | Required\t   |  Description                                            |\n|------------------------|----------|--------|--------------------------------------------------|\n| bk_biz_id              | int      | Yes     | Business ID                                           |\n| bk_supplier_account    | string   | Yes     | Supplier account                                       |\n| subscription_id        | int      | Yes     | Subscription ID                                           |\n| subscription_name      | string   | Yes     | Subscription name                                        |\n| system_name            | string   | Yes     | Subscription system name                              |\n| callback_url           | string   | Yes     | Url of callback                                         |\n| confirm_mode           | string   | Yes     | Verification mode of event sending success, optional: 1-httpstatus,2-regular |\n| confirm_pattern        | string   | Yes     | Httpstatus or regex of callback                       |\n| subscription_form      | string   | Yes     | Subscription form, separated by ','                            |\n| timeout                | int      | Yes     | Timeout of sending event                                 |\n\n\n### Request Parameters Example\n\n```python\n{\n  \"bk_biz_id\": 0,\n  \"bk_supplier_account\": \"0\",\n  \"subscription_name\":\"mysubscribe\",\n  \"subscription_id\": 2,\n  \"system_name\":\"SystemName\",\n  \"callback_url\":\"http://127.0.0.1:8080/callback\",\n  \"confirm_mode\":\"httpstatus\",\n  \"confirm_pattern\":\"200\",\n  \"subscription_form\":\"hostcreate\",\n  \"timeout\":10\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_inst.md",
    "content": "### Functional description\n\nupdate instance\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type      | Required\t   |  Description                            |\n|---------------------|------------|--------|----------------------------------|\n| bk_supplier_account | string     | Yes     | Supplier account                       |\n| bk_obj_id           | string     | Yes     | Object ID, update the cloud area for \"plat\"       |\n| bk_inst_id          | int        | Yes     | Instance ID,update the cloud for \"bk_cloud_id\" |\n| bk_inst_name        | string     | No     | Field instance ID,also it can be used for custom   |\n| bk_cloud_name       | string     | No     |  Cloud name, when updating cloud     |\n\n\n### Request Parameters Example(General instance example)\n\n```python\n{\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_id\": \"1\",\n    \"bk_inst_id\": 0,\n    \"bk_inst_name\": \"test\",\n    \"bk_cloud_name\":\"test\"\n }\n```\n\n### Request Parameters Example(Cloud example)\n\n```python\n  {\n\t\"bk_cloud_name\": \"cloud1\"\n  }\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_object.md",
    "content": "### Functional description\n\nupdate object\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type              | Required\t   |  Description                                   |\n|---------------------|--------------------|--------|-----------------------------------------|\n| id                  | int                | No     | ID of target data record, as a condition for update     |\n| modifier            | string             | No     | Last editoe of data    |\n| bk_classification_id| string             | Yes     | Classification ID, can be named in English alphabet sequence only|\n| bk_obj_name         | string             | No     | Object name                           |\n| bk_supplier_account | string             | Yes     | Supplier account                              |\n| bk_obj_icon         | string             | No     | Object icon information, display in front, that can refer to [(modleIcon.json)](/static/esb/api_docs/res/cc/modleIcon.json)|\n| position            | json object string | No     |  Position of front display                     |\n\n\n\n### Request Parameters Example\n\n```python\n{\n    \"id\": 1,\n    \"modifier\": \"admin\",\n    \"bk_classification_id\": \"cc_test\",\n    \"bk_obj_name\": \"cc2_test_inst\",\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_icon\": \"icon-cc-business\",\n    \"position\":\"{\\\"ff\\\":{\\\"x\\\":-863,\\\"y\\\":1}}\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_object_attribute.md",
    "content": "### Functional description\n\nupdate object attribute\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field                |  Type   | Required\t   |  Description                                   |\n|---------------------|---------|--------|-----------------------------------------|\n| id                  | int     | Yes     |   ID of target data record                        |\n| description         | string  | No     |  Description information of datas                          |\n| isonly              | bool    | No     | Uniqueness data                              |\n| isreadonly          | bool    | No     | Read-only, true or not                            |\n| isrequired          | bool    | No     | Required, true or not                            |\n| bk_property_group   | string  | No     | Property group name                          |\n| option              | string  | No     | User's custom content，the content and format of memory is determined by caller, example for digital content({\"min\":\"1\",\"max\":\"2\"})|\n| bk_property_name    | string  | No     | Property name, for display                    |\n| bk_property_type    | string  | No     | The storage data type of defined property field,rang list（singlechar,longchar,int,enum,date,time,objuser,singleasst,multiasst,timezone,bool)|\n| unit                | string  | No     | Unit                                    |\n| placeholder         | string  | No     | Placeholder                                  |\n| bk_asst_obj_id      | string  | No     | If there are other models associated with the object, then must be set this field, otherwise, it doesn't to be set |\n\n#### bk_property_type\n\n| identifier       | name     |\n|------------|----------|\n| singlechar | Single character   |\n| longchar   | Long character   |\n| int        | Integer     |\n| enum       | Enumeration |\n| date       | Date     |\n| time       | Time     |\n| objuser    | Object user     |\n| singleasst | Single association   |\n| multiasst  | Multiple association   |\n| timezone   | Timezone     |\n| bool       | Bool     |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"id\":1,\n    \"description\":\"test\",\n    \"placeholder\":\"test\",\n    \"unit\":\"1\",\n    \"isonly\":\"false\",\n    \"isreadonly\":\"false\",\n    \"isrequired\":\"false\",\n    \"bk_property_group\":\"default\",\n    \"option\":\"{\\\"min\\\":\\\"1\\\",\\\"max\\\":\\\"4\\\"}\",\n    \"bk_property_name\":\"aaa\",\n    \"bk_property_type\":\"int\",\n    \"bk_asst_obj_id\":\"0\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_object_topo_graphics.md",
    "content": "### Functional description\n\nupdate object topology graphics\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n| Field          |  Type      | Required\t   |  Description                                           |\n|---------------|------------|--------|-------------------------------------------------|\n| action        | string     | Yes     | Update methods, optional: update,override                    |\n| scope_type    | string     | Yes     | Graphics range type,global,biz,cls(global) |\n| scope_id      | string     | Yes     | ID of graphics range type, if it'sglobal, fill in '0'           |\n| node_type     | string     | Yes     | Node type, obj, inst                           |\n| bk_obj_id     | string     | Yes     | Object ID                                    |\n| bk_inst_id    | int        | Yes     | Instance ID                                          |\n| position      | string     | No     | The position of node in graphic                                |\n| ext           | object     | No     | Front extension field                                    |\n| bk_obj_icon   | string     | No     | Object icon                                  |\n\n> scope_type,scope_id  Determine a graphic only\n> node_type,bk_obj_id,bk_inst_id Three of them determines a node of each graphic, so it must be filled\n\n\n### Request Parameters Example\n\n```python\n\n{\n    \"action\": \"update\",\n    \"scope_tpye\": \"global\",\n    \"scope_id\": \"0\",\n    \"node_type\": \"obj\",\n    \"bk_obj_id\": \"switch\",\n    \"bk_inst_id\": 0,\n    \"position\": {\n        \"x\": 100,\n        \"y\": 100\n    },\n    \"ext\": {\n        \"a\":\"test\",\n        \"b\":\"test\"\n    },\n    \"bk_obj_icon\": \"icon-cc-switch2\",\n}\n\n```\n\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/en/update_user_group.md",
    "content": "### Functional description\n\nupdate uesr group\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### General Parameters\n\n\n| Field                |  Type   | Required\t   |  Description                     |\n|---------------------|---------|--------|--------------------------|\n| bk_supplier_account | string  | Yes     | Supplier account                |\n| group_id            | string  | Yes     | Group ID                    |\n| group_name          | string  | No     | Group name                     |\n| user_list           | string  | No     | User list, separated by ';' |\n\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"group_id\":\"0\",\n    \"group_name\":\"administrators\",\n    \"user_list\":\"owen;tt\"\n}\n```\n\n### Return Result Example\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/add_host_lock.md",
    "content": "### 功能描述\n\n新加主机锁，如果主机已经加过锁，同样提示加锁成功\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述                            |\n|---------------------|-------------|--------|----------------------------------|\n|ip_list| string array| 是|无| 主机内网IP|\n| bk_cloud_id| int| 否| 0|云区域ID\n\n\n### 请求参数示例\n\n```python\n{\n   \"ip_list\":[\"127.0.0.1\"],\n   \"bk_cloud_id\":0\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"bk_error_code\": 0,\n    \"bk_error_msg\": \"success\",\n    \"data\": null\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/add_instance_association.md",
    "content": "### 功能描述\n\n新增模型实例之间的关联关系.\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 是否必填\t   |  描述          |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    | meta data             |\n| condition | string map     | Yes   | 查询条件 |\n\n\nmetadata params\n\n| 字段                 |  类型      | 是否必填\t   |  描述         |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     |标签信息 |\n\n\nlabel params\n\n| 字段                 |  类型      | 是否必填\t   |  描述         |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | 业务id |\n\n\ncondition params\n\n| 字段                 |  类型      | 是否必填\t   |  描述         |\n|---------------------|------------|--------|-----------------------------|\n| bk_obj_asst_id           | string     | Yes     | 模型之间关系关系的唯一id|\n| bk_inst_id           | int64     | Yes     | 源模型实例id|\n| bk_asst_inst_id           | int64     | Yes     | 目标模型实例id|\n\n\n### 请求参数示例\n\n``` json\n{\n    \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n    \"bk_inst_id\": 11,\n    \"bk_asst_inst_id\": 21,\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"1\"\n        }\n    }\n}\n```\n\n### 返回结果示例\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"id\": 1038\n    }\n}\n\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型     | 描述         |\n|------------|----------|--------------|\n|id|int64|新增的实例关联关系身份id|\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/batch_delete_inst.md",
    "content": "### 功能描述\n\n批量删除对象实例\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述                            |\n|---------------------|-------------|--------|----------------------------------|\n| bk_supplier_account | string      | 是     | 开发商账号                       |\n| bk_obj_id           | string      | 是     | 模型ID，删除对象为云区域时为plat |\n| inst_ids            | int array   |是      | 实例ID集合                       |\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_id\": \"test\",\n    \"delete\":{\n    \"inst_ids\":[123]\n    }\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/batch_delete_set.md",
    "content": "### 功能描述\n\n批量删除集群\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段      |  类型      | 必选   |  描述      |\n|-----------|------------|--------|------------|\n| bk_biz_id | int        | 是     | 业务ID     |\n| inst_ids  | int array  | 是     | 集群ID集合 |\n\n### 请求参数示例\n\n```python\n{\n    \"bk_biz_id\":0,\n    \"delete\": {\n    \"inst_ids\": [123]\n    }\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/batch_update_inst.md",
    "content": "### 功能描述\n\n批量更新对象实例\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述                            |\n|---------------------|-------------|--------|----------------------------------|\n| bk_supplier_account | string      | 是     | 开发商账号                       |\n| bk_obj_id           | string      | 是     | 模型ID                           |\n| update              | object array| 是     | 实例被更新的字段及值             |\n\n#### update\n| 字段         | 类型   | 必选  | 描述                           |\n|--------------|--------|-------|--------------------------------|\n| bk_inst_name | string | 否    | 实例名，也可以为其它自定义字段 |\n| datas        | object | 是    | 实例被更新的字段取值           |\n| inst_id      | int    | 是    | 指明datas 用于更新的具体实例   |\n\n#### datas\n\n**datas 是map类型的对象，key 是实例对应的模型定义的字段，value是字段的取值**\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"update\":[\n        {\n          \"datas\":{\n            \"bk_inst_name\":\"batch_update\"\n          },\n          \"inst_id\":46\n         }\n        ]\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/bind_process_module.md",
    "content": "### 功能描述\n\n绑定进程到模块\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段       |  类型    | 必选   |  描述         |\n|------------|----------|--------|---------------|\n| bk_supplier_account | string   | 是     | 开发商ID      |\n| bk_biz_id  | int   | 是     | 业务ID      |\n| bk_process_id | int   | 是     | 进程ID  |\n| bk_module_name  | string   | 是     | 模块名     |\n\n\n\n\n### 请求参数示例\n\n```python\n\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":\"\",\n    \"data\":\"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/bind_role_privilege.md",
    "content": "### 功能描述\n\n绑定角色权限\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段       |  类型    | 必选   |  描述         |\n|------------|----------|--------|---------------|\n| hostupdate | string   | 否     | 主机编辑      |\n| hosttrans  | string   | 否     | 主机转移      |\n| topoupdate | string   | 否     | 主机拓扑编辑  |\n| customapi  | string   | 否     | 自定义api     |\n| proconfig  | string   | 否     | 进程管理      |\n| bk_supplier_account  | string     | 是     | 开发商账号            |\n| bk_obj_id            | string     | 是     | 模型ID                |\n| bk_property_id       | string     | 是     | 模型对应用户角色属性ID|\n\n\n\n### 请求参数示例\n\n```python\n{\n    \"data\":[\n        \"hostupdate\",\n        \"hosttrans\",\n        \"topoupdate\",\n        \"customapi\",\n        \"proconfig\"\n    ],\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"bk_property_id\":\"test\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/clone_host_property.md",
    "content": "### 功能描述\n\n克隆主机属性\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段        |  类型   | 必选   |  描述                       |\n|-------------|---------|--------|-----------------------------|\n| bk_org_ip   | string  | 是     | 源主机ip, 只支持传入单ip    |\n| bk_dst_ip   | string  | 是     | 目标主机ip, 多个ip用\",\"分割 |\n| bk_biz_id   | int     | 是     | 业务ID                      |\n| bk_cloud_id | int     | 否     | 云区域ID                    |\n\n### 请求参数示例\n\n```python\n{\n    \"bk_biz_id\":2,\n    \"bk_org_ip\":\"127.0.0.1\",\n    \"bk_dst_ip\":\"127.0.0.2\",\n    \"bk_cloud_id\":0\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": null\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/create_classification.md",
    "content": "### 功能描述\n\n添加模型分类\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                       |  类型      | 必选   |  描述                                      |\n|----------------------------|------------|--------|--------------------------------------------|\n| bk_classification_id       | string     | 是     | 分类ID，英文描述用于系统内部使用           |\n| bk_classification_name     | string     | 是     | 分类名     |\n| bk_classification_icon     | string     | 否     | 模型分类的图标,取值可参考，取值可参考[(classIcon.json)](resource_define/classIcon.json)|\n\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_classification_id\": \"cs_test\",\n    \"bk_classification_name\": \"test_name\",\n    \"bk_classification_icon\": \"icon-cc-business\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"id\": 18\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型      | 描述                |\n|----------- |-----------|--------------------|\n| id         | int       | 新增数据记录的ID   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/create_inst.md",
    "content": "### 功能描述\n\n创建实例\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                       |  类型      | 必选   |  描述                                      |\n|----------------------------|------------|--------|--------------------------------------------|\n| bk_obj_id                  | string     | 是     | 模型ID，新建云区域时为plat                 |\n| bk_supplier_account        | string     | 是     | 开发商账号,独立部署请填\"0\"                 |\n| bk_inst_name/bk_cloud_name | string     | 是     | 实例名,当创建对象为云区域时为bk_cloud_name |\n| bk_biz_id                  | int        | 否     | 业务ID                                     |\n\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_inst_name\": \"example18\",\n    \"bk_supplier_account\": \"0\",\n    \"bk_biz_id\": 0\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"bk_inst_id\": 67\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型      | 描述     |\n|----------- |-----------|----------|\n| bk_inst_id | int       | 实例id   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/create_object.md",
    "content": "### 功能描述\n\n创建模型\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                                                    |\n|----------------------|------------|--------|----------------------------------------------------------|\n| creator              |string      | 否     | 本条数据创建者                                           |\n| bk_classification_id | string     | 是     | 对象模型的分类ID，只能用英文字母序列命名                 |\n| bk_obj_id            | string     | 是     | 对象模型的ID，只能用英文字母序列命名                     |\n| bk_obj_name          | string     | 是     | 对象模型的名字，用于展示，可以使用人类可以阅读的任何语言 |\n| bk_supplier_account  | string     | 是     | 开发商账号                                               |\n| bk_obj_icon          | string     | 否     | 对象模型的ICON信息，用于前端显示，取值可参考[(modleIcon.json)](/static/esb/api_docs/res/cc/modleIcon.json)|\n\n\n### 请求参数示例\n\n```python\n{\n    \"creator\": \"admin\",\n    \"bk_classification_id\": \"test\",\n    \"bk_obj_name\": \"test\",\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_icon\": \"icon-cc-business\",\n    \"bk_obj_id\": \"test\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n        \"id\": 1038\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段      | 类型      | 描述               |\n|-----------|-----------|--------------------|\n| id        | int       | 新增的数据记录的ID |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/create_object_attribute.md",
    "content": "### 功能描述\n\n创建模型属性\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                  |  类型      | 必选   |  描述                                                    |\n|-----------------------|------------|--------|----------------------------------------------------------|\n| creator               | string     | 否     | 数据的创建者                                             |\n| description           | string     | 否     | 数据的描述信息                                           |\n| editable              | bool       | 否     | 表明数据是否可编辑                                       |\n| isonly                | bool       | 否     | 表明唯一性                                               |\n| ispre                 | bool       | 否     | true:预置字段,false:非内置字段                           |\n| isreadonly            | bool       | 否     | true:只读，false:非只读                                  |\n| isrequired            | bool       | 否     | true:必填，false:可选                                    |\n| option                | string     | 否     |用户自定义内容，存储的内容及格式由调用方决定，以数字类型为例（{\"min\":\"1\",\"max\":\"2\"}）|\n| unit                  | string     | 否     | 单位                                                     |\n| placeholder           | string     | 否     | 占位符                                                   |\n| bk_property_group     | string     | 否     | 字段分栏的名字                                           |\n| bk_obj_id             | string     | 是     | 模型ID                                                   |\n| bk_supplier_account   | string     | 是     | 开发商账号                                               |\n| bk_property_id        | string     | 是     | 模型的属性ID                                             |\n| bk_property_name      | string     | 是     | 模型属性名，用于展示                                     |\n| bk_property_type      | string     | 是     | 定义的属性字段用于存储数据的数据类型,可取值范围（singlechar,longchar,int,enum,date,time,objuser,singleasst,multiasst,timezone,bool）|\n| bk_asst_obj_id        | string     | 否     | 如果有关联其它的模型，那么就必需设置此字段，否则就不需要设置                                                                        |\n\n#### bk_property_type\n\n| 标识       | 名字     |\n|------------|----------|\n| singlechar | 短字符   |\n| longchar   | 长字符   |\n| int        | 整形     |\n| enum       | 枚举类型 |\n| date       | 日期     |\n| time       | 时间     |\n| objuser    | 用户     |\n| singleasst | 单关联   |\n| multiasst  | 多关联   |\n| timezone   | 时区     |\n| bool       | 布尔     |\n\n### 请求参数示例\n\n```python\n{\n\t\"creator\": \"user\",\n\t\"description\": \"test\",\n\t\"editable\": \"true\",\n\t\"isonly\": \"false\",\n\t\"ispre\": \"false\",\n\t\"isreadonly\": \"false\",\n\t\"isrequired\": \"false\",\n\t\"option\": {\"min\":\"1\",\"max\":\"2\"},\n\t\"unit\": \"1\",\n\t\"placeholder\": \"test\",\n\t\"bk_property_group\": \"default\",\n\t\"bk_obj_id\": \"cc_test_inst\",\n\t\"bk_supplier_account\": \"0\",\n\t\"bk_property_id\": \"cc_test\",\n\t\"bk_property_name\": \"cc_test\",\n\t\"bk_property_type\": \"singlechar\",\n\t\"bk_asst_obj_id\": \"test\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n\t\"data\": {\n\t\t\"id\": 11142\n\t}\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段      | 类型      | 描述               |\n|-----------|-----------|--------------------|\n| id        | int       | 新增的数据记录的ID |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/create_user_group.md",
    "content": "### 功能描述\n\n新建用户分组\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                     |\n|----------------------|------------|--------|---------------------------|\n| bk_supplier_account  | string     | 是     | 开发商账号                |\n| group_name           | string     | 是     | 分组名                    |\n| user_list            | string     | 是     | 分组用户列表，多个用;分割 |\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\": \"0\",\n    \"group_name\":\"Administrators\",\n    \"user_list\":\"owen;tt\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_classification.md",
    "content": "### 功能描述\n\n删除模型分类\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段  |  类型       | 必选   |  描述                            |\n|-------|-------------|--------|----------------------------------|\n|id     | int         | 是     | 分类数据记录ID                   |\n\n\n### 请求参数示例\n\n```python\n\n{\n    \"delete\":{\n    \"id\" : 0\n    }\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_host_lock.md",
    "content": "### 功能描述\n\n新加主机锁，如果主机已经加过锁，同样提示加锁成功\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述                            |\n|---------------------|-------------|--------|----------------------------------|\n|ip_list| string array| 是|无| 主机内网IP|\n| bk_cloud_id| int| 否| 0|云区域ID\n\n\n### 请求参数示例\n\n```python\n{\n   \"ip_list\":[\"127.0.0.1\"],\n   \"bk_cloud_id\":0\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"bk_error_code\": 0,\n    \"bk_error_msg\": \"success\",\n    \"data\": null\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_inst.md",
    "content": "### 功能描述\n\n删除对象实例\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述                            |\n|---------------------|-------------|--------|----------------------------------|\n| bk_supplier_account | string      | 是     | 开发商账号                       |\n| bk_obj_id           | string      | 是     | 模型ID，删除对象为云区域时为\"plat\" |\n| bk_inst_id          | int         | 是     | 实例ID，删除云区域时为云区域ID   |\n\n\n### 请求参数示例\n\n```python\n\n{\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_id\": \"test\",\n    \"delete\":{\n    \"bk_inst_id\": 0\n    }\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_instance_association.md",
    "content": "### 功能描述\n\n删除模型实例之间的关联关系。\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n| 字段                 |  类型      | 必填\t   |  描述          |\n|----------------------|------------|--------|-----------------------------|\n| id           | int64     | Yes    | 模型实例关联关系的唯一身份id             |\n\n### 请求参数示例\n\n``` json\n\n```\n\n### 返回结果示例\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型     | 描述         |\n|------------|----------|--------------|\n\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_object.md",
    "content": "### 功能描述\n\n删除模型\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段  |  类型       | 必选   |  描述                 |\n|-------|-------------|--------|-----------------------|\n| id    | int         | 否     | 被删除的数据记录的ID  |\n\n\n### 请求参数示例\n\n```python\n\n{\n      \"delete\":{\n          \"id\" : 0\n      }\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_object_attribute.md",
    "content": "### 功能描述\n\n删除对象模型属性\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段  |  类型       | 必选   |  描述                         |\n|-------|-------------|--------|-------------------------------|\n| id    | int         | 否     | 被删除的数据记录的唯一标识ID  |\n\n\n### 请求参数示例\n\n```python\n\n{\n    \"delete\":{\n    \"id\" : 0\n    }    \n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_process_module_bind.md",
    "content": "### 功能描述\n\n解绑进程模块\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段  |  类型       | 必选   |  描述                 |\n|-------|-------------|--------|-----------------------|\n| bk_supplier_account | string   | 是     | 开发商ID      |\n| bk_biz_id  | int   | 是     | 业务ID      |\n| bk_process_id | int   | 是     | 进程ID  |\n| bk_module_name  | string   | 是     | 模块名     |\n\n\n### 请求参数示例\n\n```python\n\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/delete_user_group.md",
    "content": "### 功能描述\n\n删除用户分组\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述       |\n|---------------------|-------------|--------|-------------|\n| bk_supplier_account | string      | 是     | 开发商账号  |\n| group_id            | string      | 是     | 分组ID      |\n\n\n### 请求参数示例\n\n```python\n\n{\n    \"bk_supplier_account\": \"0\",\n    \"delete\":{\n        \"group_id\": \"test\"    \n    }\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/find_host_by_module.md",
    "content": "### 功能描述\n\n根据模块ID查询主机\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n| metadata           | object     | 是     | 请求元数据                      |\n| bk_module_ids | int array     | 是     | 模块ID数组 |\n| page                | object     | 是     | 分页参数                    |\n\nmetadata参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | 是     | 请求中需要携带的信息，例如业务ID |\n\nlabel参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | 是     | 业务ID |\n\n\n### 请求参数示例\n\n```python\n{\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"3\"\n        }\n    },\n    \"bk_module_ids\":[\n        56\n    ],\n    \"page\":{\n        \"start\":0,\n        \"limit\":10\n    }\n}\n```\n\n### 返回结果示例\n\n```python\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":\"success\",\n    \"data\":{\n        \"count\":1,\n        \"info\":[\n            {\n                \"biz\":[\n                    {\n                        \"bk_biz_developer\":\"\",\n                        \"bk_biz_id\":2,\n                        \"bk_biz_maintainer\":\"admin\",\n                        \"bk_biz_name\":\"蓝鲸\"\n                    }\n                ],\n                \"host\":{\n                    \"bk_asset_id\":\"DKUXHBUH189\",\n                    \"bk_bak_operator\":\"admin\",\n                    \"bk_cloud_id\":[\n                        {\n                            \"id\":\"0\",\n                            \"bk_obj_id\":\"plat\",\n                            \"bk_obj_icon\":\"\",\n                            \"bk_inst_id\":0,\n                            \"bk_obj_name\":\"\",\n                            \"bk_inst_name\":\"default area\"\n                        }\n                    ],\n                    \"bk_comment\":\"\",\n                    \"bk_cpu\":8,\n                    \"bk_cpu_mhz\":2609,\n                    \"bk_cpu_module\":\"E5-2620\",\n                    \"bk_disk\":300000,\n                    \"bk_host_id\":17,\n                    \"bk_host_innerip\":\"192.168.1.1\",\n                    \"bk_host_name\":\"nginx-1\",\n                    \"bk_host_outerip\":\"\",\n                    \"bk_isp_name\":null,\n                    \"bk_mac\":\"\",\n                    \"bk_mem\":32000,\n                    \"bk_os_bit\":\"\"\n                },\n                \"module\":[\n                    {\n                        \"TopModuleName\":\"蓝鲸##公共组件##consul\",\n                        \"bk_bak_operator\":\"\",\n                        \"bk_biz_id\":2,\n                        \"bk_module_id\":35,\n                        \"bk_module_name\":\"consul\",\n                        \"bk_module_type\":\"1\",\n                        \"bk_parent_id\":8,\n                        \"bk_set_id\":8,\n                        \"bk_supplier_account\":\"0\",\n                        \"create_time\":\"2018-05-16T21:03:22.724+08:00\",\n                        \"default\":0,\n                        \"last_time\":\"2018-05-16T21:03:22.724+08:00\",\n                        \"operator\":\"\"\n                    }\n                ],\n                \"set\":[\n                    {\n                        \"TopSetName\":\"蓝鲸##公共组件\",\n                        \"bk_biz_id\":2,\n                        \"bk_capacity\":null,\n                        \"bk_parent_id\":3,\n                        \"bk_service_status\":\"1\",\n                        \"bk_set_desc\":\"111\",\n                        \"bk_set_env\":\"3\",\n                        \"bk_set_id\":8,\n                        \"bk_set_name\":\"公共组件\",\n                        \"bk_supplier_account\":\"0\",\n                        \"create_time\":\"2018-05-16T21:03:22.692+08:00\",\n                        \"default\":0,\n                        \"description\":\"\",\n                        \"last_time\":\"2018-05-18T11:50:53.947+08:00\"\n                    }\n                ]\n            }\n        ]\n    }\n}\n```\n\n### 返回结果参数说明\n\n| 名称  | 类型  | 说明 |\n|---|---|---|---|\n| result | bool | 请求成功与否。true:请求成功；false请求失败 |\n| bk_error_code | int | 错误编码。 0表示success，>0表示失败错误 |\n| bk_error_msg | string | 请求失败返回的错误信息 |\n| data | object| 请求返回的数据 |\n\ndata 字段说明：\n\n| 名称  | 类型  | 说明 |\n|---|---|---|---|\n| count| int| 记录条数 |\n| info| object array | 主机实际数据 |\n\n\ninfo 字段说明:\n\n| 名称  | 类型  | 说明 |\n|---|---|---|---| \n| biz | object array| 主机所属的业务信息 |\n| set| object array | 主机所属的集群信息 |\n| module| object array| 主机所属的模块信息 |\n| host| object | 主机自身属性|\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/find_instance_association.md",
    "content": "### 功能描述\n\n查询模型的实例关联关系。\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 是否必填\t   |  描述          |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    | meta data             |\n| condition | string map     | Yes   | 查询条件 |\n\n\nmetadata params\n\n| 字段                 |  类型      | 是否必填\t   |  描述         |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     | 标签信息 |\n\n\nlabel params\n\n| 字段                 |  类型      | 是否必填\t   |  描述         |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | 业务ID |\n\n\ncondition params\n\n| 字段                 |  类型      | 是否必填\t   |  描述         |\n|---------------------|------------|--------|-----------------------------|\n| bk_obj_asst_id           | string     | Yes     | 模型关联关系的唯一id|\n| bk_asst_id           | string     | NO     | 关联类型的唯一id|\n| bk_obj_id           | string     | NO     | 源模型id|\n| bk_asst_id           | string     | NO     | 目标模型id|\n\n\n### 请求参数示例\n\n``` json\n{\n    \"condition\": {\n        \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n        \"bk_asst_id\": \"\",\n        \"bk_object_id\": \"\",\n        \"bk_asst_obj_id\": \"\"\n    },\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"3\"\n        }\n    }\n}\n```\n\n### 返回结果示例\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [{\n        \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n        \"bk_obj_id\":\"switch\",\n        \"bk_asst_obj_id\":\"host\",\n        \"bk_inst_id\":12,\n        \"bk_asst_inst_id\":13\n    }]\n}\n\n```\n\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型     | 描述         |\n|------------|----------|--------------|\n|id|int64|the association's unique id|\n| bk_obj_asst_id| string|  自动生成的模型关联关系id.|\n| bk_obj_id| string| 关联关系源模型id |\n| bk_asst_obj_id| string| 关联关系目标模型id|\n| bk_inst_id| int64| 源模型实例id|\n| bk_asst_inst_id| int64| 目标模型实例id|\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/find_object_association.md",
    "content": "### 功能描述\n\n查询模型的实例之间的关联关系。\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 是否必填\t   |  描述 |\n|----------------------|------------|--------|-----------------------------|\n| metadata           | object     | Yes    |  meta data             |\n| condition | string map     | Yes   | 查询条件 |\n\n\nmetadata params\n\n| 字段                 |  类型      | 是否必填\t   |  描述 |\n|---------------------|------------|--------|-----------------------------|\n| label           | string map     | Yes     |标签信息 |\n\n\nlabel params\n\n| 字段                 |  类型      | 是否必填\t   |  描述 |\n|---------------------|------------|--------|-----------------------------|\n| bk_biz_id           | string      | Yes     | 业务id |\n\n\ncondition params\n\n| 字段                 |  类型      | 是否必填\t   |  描述 |\n|---------------------|------------|--------|-----------------------------|\n| bk_asst_id           | string     | Yes     | 模型的关联类型唯一id|\n| bk_obj_id           | string     | Yes     | 源模型id|\n| bk_asst_id           | string     | Yes     | 目标模型id|\n\n\n### 请求参数示例\n\n``` json\n{\n    \"condition\": {\n        \"bk_asst_id\": \"belong\",\n        \"bk_obj_id\": \"bk_switch\",\n        \"bk_asst_obj_id\": \"bk_host\"\n    },\n    \"metadata\":{\n        \"label\":{\n            \"bk_biz_id\":\"1\"\n        }\n    }\n}\n```\n\n### 返回结果示例\n\n```json\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"bk_obj_asst_id\": \"bk_switch_belong_bk_host\",\n            \"bk_obj_asst_name\": \"\",\n            \"bk_asst_id\": \"belong\",\n            \"bk_asst_name\": \"belong\",\n            \"bk_obj_id\": \"bk_switch\",\n            \"bk_obj_name\": \"switch\",\n            \"bk_asst_obj_id\": \"bk_host\",\n            \"bk_asst_obj_name\": \"host\",\n            \"mapping\": \"1:n\",\n            \"on_delete\": \"none\"\n        }\n    ]\n}\n\n```\n\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型     | 描述 |\n|------------|----------|--------------|\n| id|int64|模型关联关系的身份id|\n| bk_obj_asst_id| string|  模型关联关系的唯一id.|\n| bk_obj_asst_name| string| 关联关系的别名. |\n| bk_asst_id| string| 关联类型id|\n| bk_asst_name| string| 关联类型名称 |\n| bk_obj_id| string| 源模型id |\n| bk_obj_name| string| 源模型名称 |\n| bk_asst_obj_id| string| 目标模型id|\n| bk_asst_obj_name| string| 目标模型名称|\n| mapping| string|  源模型与目标模型关联关系实例的映身关系，可以是以下中的一种[1:1, 1:n, n:n] |\n| on_delete| string| 删除关联关系时的动作, 取值为以下其中的一种 [none, delete_src, delete_dest], \"none\" 什么也不做, \"delete_src\" 删除源模型的实例, \"delete_dest\" 删除目标模型的实例.|\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/get_biz_internal_module.md",
    "content": "### 功能描述\n\n获取业务空闲机和故障机模块\n\n### 请求参数\n\n{{ common_args_desc }}\n\n\n#### 接口参数\n\n| 字段      |  类型      | 必选   |  描述      |\n|-----------|------------|--------|------------|\n| bk_biz_id | int        | 是     | 业务ID     |\n| bk_supplier_account | string        | 是     | 开发商账号    |\n\n### 请求参数示例\n\n```python\n\n{\n    \"bk_biz_id\":0,\n    \"bk_supplier_account\":\"0\"\n}\n```\n\n### 返回结果示例\n\n```python\n{\n  \"result\": true,\n  \"code\": 0,\n  \"message\": \"success\",\n  \"data\": {\n    \"bk_set_id\": 2,\n    \"bk_set_name\": \"空闲机池\",\n    \"module\": [\n      {\n        \"bk_module_id\": 3,\n        \"bk_module_name\": \"空闲机\"\n      },\n      {\n        \"bk_module_id\": 4,\n        \"bk_module_name\": \"故障机\"\n      }\n    ]\n  }\n}\n```\n\n### 返回结果参数说明\n\n#### data说明\n| 字段      |  类型      |  描述      |\n|-----------|------------|------------|\n|bk_set_id | int64 | 空闲机和故障机所属的set的实例ID |\n|bk_set_name | string |空闲机和故障机所属的set的实例名称|\n\n#### module说明\n| 字段      |  类型      |  描述      |\n|-----------|------------|------------|\n|bk_module_id | int64 | 空闲机或故障机的的实例ID |\n|bk_module_name | string |空闲机或故障机的实例名称|\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/get_mainline_object_topo.md",
    "content": "### 功能描述\n\n获取主线模型的业务拓扑\n\n### 请求参数\n\n无\n\n#### 接口参数\n\n\n### 请求参数示例\n\n```python\n```\n\n### 返回结果示例\n\n```python\n{\n  \"result\": true,\n  \"bk_error_code\": 0,\n  \"bk_error_msg\": \"success\",\n  \"data\": [\n    {\n      \"bk_obj_id\": \"biz\",\n      \"bk_obj_name\": \"业务\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"set\",\n      \"bk_next_name\": \"集群\",\n      \"bk_pre_obj_id\": \"\",\n      \"bk_pre_obj_name\": \"\"\n    },\n    {\n      \"bk_obj_id\": \"set\",\n      \"bk_obj_name\": \"集群\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"module\",\n      \"bk_next_name\": \"模块\",\n      \"bk_pre_obj_id\": \"biz\",\n      \"bk_pre_obj_name\": \"业务\"\n    },\n    {\n      \"bk_obj_id\": \"module\",\n      \"bk_obj_name\": \"模块\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"host\",\n      \"bk_next_name\": \"主机\",\n      \"bk_pre_obj_id\": \"set\",\n      \"bk_pre_obj_name\": \"集群\"\n    },\n    {\n      \"bk_obj_id\": \"host\",\n      \"bk_obj_name\": \"主机\",\n      \"bk_supplier_account\": \"0\",\n      \"bk_next_obj\": \"\",\n      \"bk_next_name\": \"\",\n      \"bk_pre_obj_id\": \"module\",\n      \"bk_pre_obj_name\": \"模块\"\n    }\n  ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n| 字段      |  类型      |  描述      |\n|-----------|------------|------------|\n|bk_obj_id | string | 模型的唯一ID |\n|bk_obj_name | string |模型名称|\n|bk_supplier_account | string |开发商帐户名称|\n|bk_next_obj | string |当前模型的下一个模型唯一ID|\n|bk_next_name | string |当前模型的下一个模型名称|\n|bk_pre_obj_id | string |当前模型的前一个模型的唯一ID|\n|bk_pre_obj_name | string |当前模型的前一个模型的名称|\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/get_operation_log.md",
    "content": "### 功能描述\n\n获取操作日志\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选\t   |  描述                 |\n|----------------------|------------|--------|-----------------------|\n| condition  | object     | 否     | 查询条件           |\n| start            | int     | 否     | 查询起始记录               |\n| limit       | int     | 否     | 查询限制条数 |\n| sort       | string     | 否     | 排序字段 |\n\n\n### 请求参数示例\n\n```python\n\n\n{\n    \"condition\":{\n        \"bk_biz_id\":99999,\n        \"ext_key\":{\n            \"$in\":[\n                \"127.0.0.23\",\n                \"127.0.0.22\"\n            ]\n        },\n        \"op_target\":\"host\",\n        \"op_type\":\"add\",\n        \"op_time\":[\n            \"2017-12-25 10:10:10\",\n            \"2017-12-25 10:10:11\"\n        ]\n    },\n    \"start\":0,\n    \"limit\":10,\n    \"sort\":\"-create_time\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":null,\n    \"data\":{\n        \"count\":1,\n        \"info\":[\n            {\n                \"bk_supplier_account\":\"0\",\n                \"bk_biz_id\":1,\n                \"op_desc\":\"修改主机\",\n                \"op_type\":2,\n                \"op_target\":\"host\",\n                \"operator\":\"admin\",\n                \"content\":{\n                    \"pre_data\":{\n                        \"last_time\":\"2018-03-08T15:10:42.264+08:00\",\n                        \"bk_cloud_id\":[\n                            {\n                                \"ref_id\":1,\n                                \"ref_name\":\"Direct connecting area\"\n                            }\n                        ],\n                        \"create_time\":\"2018-03-08T14:23:05.05+08:00\",\n                        \"bk_host_id\":1,\n                        \"bk_host_innerip\":\"127.0.01\",\n                        \"bk_import_from\":\"1\"\n                    },\n                    \"cur_data\":{\n                        \"last_time\":\"2018-03-08T15:10:42.264+08:00\",\n                        \"bk_cloud_id\":[\n                            {\n                                \"ref_id\":2,\n                                \"ref_name\":\"test connecting area\"\n                            }\n                        ],\n                        \"create_time\":\"2018-03-08T14:23:05.05+08:00\",\n                        \"bk_host_id\":1,\n                        \"bk_host_innerip\":\"127.0.0.1\",\n                        \"bk_import_from\":\"1\"\n                    },\n                    \"header\":[\n                        {\n                            \"bk_property_id\":\"bk_host_innerip\",\n                            \"bk_property_name\":\"内网IP\"\n                        },\n                        {\n                            \"bk_property_id\":\"bk_host_outerip\",\n                            \"bk_property_name\":\"外网IP\"\n                        }\n                    ],\n                    \"type\":\"map\"\n                },\n                \"ext_key\":\"127.0.0.1\",\n                \"op_time\":\"2018-03-08T03:30:28.056Z\",\n                \"inst_id\":1\n            }\n        ]\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 名称  | 类型  | 描述 |\n|---|---|---|\n| result | bool | 请求成功与否。true:请求成功；false请求失败 |\n| bk_error_code | int | 错误编码。 0表示success，>0表示失败错误 |\n| bk_error_msg | string | 请求失败返回的错误信息 |\n| data | object | 请求返回的数据 |\n\n#### data 字段说明：\n\n| 名称  | 类型  | 描述 |\n|---|---|---|---|\n| count| int| 请求记录条数 |\n| info| object array | record information |\n\n#### info 字段说明：\n\n| 名称  | 类型  | 描述 |\n|---|---|---|---|\n| bk_supplier_account| string| 开发商ID |\n| bk_biz_id| int | 业务ID |\n| op_type| string | 操作类型 |\n| op_desc| string | 操作描述 |\n| op_target| string| 操作对象 |\n| operator| string | 操作者 |\n| content| object 对象 | 操作内容 |\n| ext_key| string  | 附加信息 |\n| op_time| string |  操作时间 |\n| inst_id| int | 实例ID |\n\n#### content  字段说明： content为实际的操作内容\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/get_process_bind_module.md",
    "content": "### 功能描述\n\n获取进程绑定模块\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选\t   |  描述                 |\n|----------------------|------------|--------|-----------------------|\n| bk_supplier_account  | string     |是     | 开发商ID       |\n| bk_biz_id            | int     | 是     |    业务ID   |\n| bk_process_id       | int     | 是     | 进程ID |\n\n\n### 请求参数示例\n\n```python\n\n\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\":true,\n    \"bk_error_code\":0,\n    \"bk_error_msg\":\"\",\n    \"data\":[\n        {\n            \"bk_module_name\":\"db\",\n            \"set_num\":10,\n            \"is_bind\":0\n        },\n        {\n            \"bk_module_name\":\"gs\",\n            \"set_num\":5,\n            \"is_bind\":1\n        }\n    ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 名称  | 类型  | 描述 |\n|---|---|---|\n| result | bool | 请求成功与否。true:请求成功；false请求失败 |\n| bk_error_code | int | 错误编码。 0表示success，>0表示失败错误 |\n| bk_error_msg | string | 请求失败返回的错误信息 |\n| data | object | 请求返回的数据 |\n\n#### data 字段说明：\n\n| 名称  | 类型  | 描述 |\n|---|---|---|---|\n| bk_module_name| string| 模块名 |\n| set_num| int | 所属集群个数 |\n| is_bind| int | 是否绑定 |\n\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/get_role_privilege.md",
    "content": "### 功能描述\n\n获取角色绑定权限\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                 |\n|----------------------|------------|--------|-----------------------|\n| bk_supplier_account  | string     | 是     | 开发商账号            |\n| bk_obj_id            | string     | 是     | 模型ID                |\n| bk_property_id       | string     | 是     | 模型对应用户角色属性ID|\n\n### 请求参数示例\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"bk_property_id\":\"test\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":[\n        \"hostupdate\",\n        \"hosttrans\",\n        \"topoupdate\",\n        \"customapi\",\n        \"proconfig\"\n    ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型     | 描述         |\n|------------|----------|--------------|\n| hostupdate | string   | 主机编辑     |\n| hosttrans  | string   | 主机转移     |\n| topoupdate | string   | 主机拓扑编辑 |\n| customapi  | string   | 自定义api    |\n| proconfig  | string   | 进程管理     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/get_user_privilege.md",
    "content": "### 功能描述\n\n查询用户权限\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                 |\n|----------------------|------------|--------|-----------------------|\n| bk_supplier_account  | string     | 是     | 开发商账号            |\n| user_name            | string     | 是     | 用户名                |\n\n### 请求参数示例\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"user_name\":\"test\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n     \"data\": {\n        \"bk_group_id\":1,\n        \"sys_config\":{\n            \"global_busi\":[\n                \"resource\"\n            ],\n            \"back_config\":[\n                \"event\",\n                \"model\",\n                \"audit\"\n            ]\n        },\n        \"model_config\":{\n            \"network\":{\n                \"router\":[\n                    \"update\",\n                    \"delete\"\n                ]\n            }\n        }\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段         | 类型     | 描述         |\n|--------------|----------|--------------|\n| group_id     | string   | 分组ID       |\n| sys_config   | object   | 系统配置     |\n| back_config  | object   | 后台配置     |\n| model_config | object   | 模型配置     |\n\n\n#### sys_config  目前仅有global_busi\n\n| 名称    | 类型   | 描述       |\n|---------|--------|------------|\n| resource| string | 主机资源池 |\n\n#### back_config\n\n| 名称    | 类型   | 描述         |\n|---------|--------|--------------|\n| event   | string | 事件推送配置 |\n| model   | string | 模型配置     |\n| audit   | string | 审计配置     |\n\n#### model_config\n\n| 名称   | 类型   | 描述 |\n|--------|--------|------|\n| create | string | 新增 |\n| update | string | 编辑 |\n| delete | string | 删除 |\n| search | string | 查询 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_classifications.md",
    "content": "### 功能描述\n\n查询模型分类\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                                                    |\n|---|---|---|---|---|\n| bk_supplier_account  | string     | 否     | 开发商账号                                               |\n\n### 请求参数示例\n\n``` python\n{\n    \"bk_supplier_account\": \"0\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n     \"data\": [\n         {\n            \"bk_classification_icon\": \"icon-cc-business\",\n            \"bk_classification_id\": \"bk_host_manage\",\n            \"bk_classification_name\": \"主机管理\",\n            \"bk_classification_type\": \"inner\",\n            \"id\": 1\n         }\n     ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段                   | 类型     | 描述                                                                                          |\n|------------------------|----------|-----------------------------------------------------------------------------------------------|\n| bk_classification_id   | string   | 分类ID，英文描述用于系统内部使用                                                              |\n| bk_classification_name | string   | 分类名                                                                                        |\n| bk_classification_type | string   | 用于对分类进行分类（如：inner代码为内置分类，空字符串为自定义分类）                           |\n| bk_classification_icon | string   | 模型分类的图标,取值可参考，取值可参考[(classIcon.json)](resource_define/classIcon.json) |\n| id                     | int      | 数据记录ID                                                                                    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_group_privilege.md",
    "content": "### 功能描述\n\n查询分组权限\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述       |\n|----------------------|------------|--------|-------------|\n| bk_supplier_account  | string     | 是     | 开发商账号  |\n| group_id             | string     | 是     | 分组ID      |\n\n### 请求参数示例\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"group_id\":\"test\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n         \"group_id\":1,\n         \"sys_config\":{\n             \"global_busi\":[\n                 \"resource\"\n             ],\n             \"back_config\":[\n                 \"event\",\n                 \"model\",\n                 \"audit\"\n             ]\n         },\n         \"model_config\":{\n             \"network\":{\n                 \"router\":[\n                     \"update\",\n                     \"delete\"\n                 ]\n             }\n         }\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段          | 类型     | 描述     |\n|---------------|----------|----------|\n| group_id      | string   | 分组ID   |\n| sys_config    | object   | 系统配置 |\n| back_config   | object   | 后台配置 |\n| model_config  | object   | 模型配置 |\n\n\n#### sys_config  目前仅有global_busi\n\n| 名称    | 类型   | 描述       |\n|---------|--------|------------|\n| resource| string | 主机资源池 |\n\n#### back_config\n\n| 名称    | 类型   | 描述         |\n|---------|--------|--------------|\n| event   | string | 事件推送配置 |\n| model   | string | 模型配置     |\n| audit   | string | 审计配置     |\n\n#### model_config\n\n| 名称   | 类型   | 描述 |\n|--------|--------|------|\n| create | string | 新增 |\n| update | string | 编辑 |\n| delete | string | 删除 |\n| search | string | 查询 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_host_lock.md",
    "content": "### 功能描述\n\n查询主机锁\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型       | 必选   |  描述                            |\n|---------------------|-------------|--------|----------------------------------|\n|ip_list| string array| 是|无| 主机内网IP|\n| bk_cloud_id| int| 否| 0|云区域ID\n\n\n### 请求参数示例\n\n```python\n{\n   \"ip_list\":[\"127.0.0.1\", \"127.0.0.2\"],\n   \"bk_cloud_id\":0\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"bk_error_code\": 0,\n    \"bk_error_msg\": \"success\",\n    \"data\": {\n        \"127.0.0.1\": true,\n        \"127.0.0.2\": false\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n| 字段      | 类型      | 描述         |\n|-----------|-----------|--------------|\n| data | map[string]bool | 请求返回的数据, key 是 IP，value 是否上锁 |the data response,Key is the IP, value is locked status|\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_inst.md",
    "content": "### 功能描述\n\n查询实例\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n| bk_obj_id           | string     | 是     | 模型ID                      |\n| bk_supplier_account | string     | 是     | 开发商账号,独立部署请填\"0\"  |\n| page                | object     | 是     | 分页参数                    |\n| condition           | object     | 否     | 查询条件                    |\n| fields              |string array| 否     | 查询的字段                  |\n\n#### page\n\n| 字段      |  类型      | 必选   |  描述                |\n|-----------|------------|--------|----------------------|\n| start     |  int       | 是     | 记录开始位置         |\n| limit     |  int       | 是     | 每页限制条数,最大200 |\n| sort      |  string    | 否     | 排序字段             |\n\n#### condition\n\n| 字段      |  类型      | 必选   |  描述      |\n|-----------|------------|--------|------------|\n| bk_weblogic  |string      |是      | 此处仅为示例数据，需要被设置为模型的标识符，在页面上配置的英文名 |\n| field     |string      |是      | 取值为模型的字段名                                               |\n| operator  |string      |是      | 取值为：$regex $eq $ne                                           |\n| value     |string      |是      | field配置的模型字段名所对应的值                                  |          \n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_obj_id\":\"test\",\n    \"bk_supplier_account\":\"0\",\n    \"page\":{\n        \"start\":0,\n        \"limit\":10,\n        \"sort\":\"bk_inst_id\"\n    },\n    \"fields\":\"test\",\n    \"condition\":{\n        \"bk_weblogic\":[\n            {\n                \"field\":\"bk_inst_name\",\n                \"operator\":\"$regex\",\n                \"value\":\"qq\"\n            }\n        ]\n    }\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": {\n\t\t\"count\": 1,\n\t\t\"info\": [{\n\t\t\t\"bk_inst_id\": 1,\n\t\t\t\"bk_inst_name\": \"test\",\n\t\t\t\"bk_obj_id\": \"test\",\n\t\t\t\"bk_supplier_account\": \"0\",\n\t\t\t\"create_time\": \"2018-04-17T14:50:15.993+08:00\",\n\t\t\t\"last_time\": \"2018-04-17T15:00:49.274+08:00\",\n\t\t\t\"test_asst\": [{\n\t\t\t\t\"bk_inst_id\": 2,\n\t\t\t\t\"bk_inst_name\": \"test2\",\n\t\t\t\t\"bk_obj_id\": \"test_obj\",\n\t\t\t\t\"id\": \"2\"\n\t\t\t}]\n\t\t}]\n\t}\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段      | 类型      | 描述         |\n|-----------|-----------|--------------|\n| count     | int       | 记录条数     |\n| info      | array     | 实例实际数据 |\n\n#### data.info\n\n| 字段                | 类型      | 描述                                                 |\n|---------------------|-----------|------------------------------------------------------|\n| id                  | string    | 已存储的关联实例的id                                 |\n| bk_inst_id          | int       | 新增数据记录的ID                                     |\n| bk_supplier_account | string    | 开发商账号                                           |\n| bk_obj_id           | string    | 模型ID                                               |\n| create_time         | string    | 数据创建的时间                                       |\n| last_time           | string    | 最后修改时间                                         |\n| test_asst           | string    | test_asst为此实例的关联字段，返回关联模型对应的实例。|\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_inst_association_topo.md",
    "content": "### 功能描述\n\n查询实例关联拓扑\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n|bk_supplier_account  |string|是|无|开发商账号|\n|bk_obj_id            |string|是|无|模型ID|\n|bk_inst_id           |int|是|无|实例ID|\n\n\n### 请求参数示例\n\n``` python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_obj_id\":\"test\",\n    \"bk_inst_id\":\"test\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n       {\n           \"curr\": {\n               \"bk_inst_id\": 17,\n               \"bk_inst_name\": \"192.168.1.1\",\n               \"bk_obj_icon\": \"icon-cc-host\",\n               \"bk_obj_id\": \"host\",\n               \"bk_obj_name\": \"主机\",\n               \"children\": [],\n               \"count\": 0\n           },\n           \"next\": [\n               {\n                   \"bk_inst_id\": 0,\n                   \"bk_inst_name\": \"\",\n                   \"bk_obj_icon\": \"icon-cc-subnet\",\n                   \"bk_obj_id\": \"plat\",\n                   \"bk_obj_name\": \"云区域\",\n                   \"children\": [\n                       {\n                           \"bk_inst_id\": 0,\n                           \"bk_inst_name\": \"default area\",\n                           \"bk_obj_icon\": \"\",\n                           \"bk_obj_id\": \"plat\",\n                           \"bk_obj_name\": \"\",\n                           \"id\": \"0\"\n                       }\n                   ],\n                   \"count\": 1\n               }\n           ],\n           \"prev\": [\n               {\n                   \"bk_inst_id\": 0,\n                   \"bk_inst_name\": \"\",\n                   \"bk_obj_icon\": \"icon-cc-business\",\n                   \"bk_obj_id\": \"rel\",\n                   \"bk_obj_name\": \"关联\",\n                   \"children\": [\n                       {\n                           \"bk_inst_id\": 162,\n                           \"bk_inst_name\": \"test1\",\n                           \"bk_obj_icon\": \"\",\n                           \"bk_obj_id\": \"rel\",\n                           \"bk_obj_name\": \"\"\n                       }\n                   ],\n                   \"count\": 1\n               }\n           ]\n       }\n   ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段      | 类型         | 描述                 |\n|-----------|--------------|----------------------|\n| curr      | object       | 当前实例节点的信息   |\n| next      | object array | 当前节点的子节点集合 |\n| prev      | object array | 当前节点的父节点结合 |\n\n\n#### curr\n\n| 字段         | 类型         | 描述                          |\n|--------------|--------------|-------------------------------|\n| bk_inst_id   | int          | 实例ID                        |\n| bk_inst_name | string       | 实例用于展示的名字            |\n| bk_obj_icon  | string       | 模型图标的名字                |\n| bk_obj_id    | string       | 模型ID                        |\n| bk_obj_name  | string       | 模型用于展示的名字            |\n| children     | object array | 本模型下所有被关联的实例的集合|\n| count        | int          | children     包含节点的数量   |\n\n\n#### next\n\n| 字段         | 类型         | 描述                           |\n|--------------|--------------|--------------------------------|\n| bk_inst_id   | int          | 实例ID|the inst ID             |\n| bk_inst_name | string       | 实例用于展示的名字             |\n| bk_obj_icon  | string       | 模型图标的名字                 |\n| bk_obj_id    | string       | 模型ID                         |\n| bk_obj_name  | string       | 模型用于展示的名字             |\n| children     | object array | 本模型下所有被关联的实例的集合 |\n| count        | int          | children包含节点的数量         |\n\n#### next/children\n\n| 字段         | 类型      | 描述               |\n|--------------|-----------|--------------------|\n| bk_inst_id   |int        | 实例ID             |\n| bk_inst_name |string     | 实例用于展示的名字 |\n| bk_obj_icon  |string     | 模型图标的名字     |\n| bk_obj_id    |string     | 模型ID             |\n| bk_obj_name  |string     | 模型用于展示的名字 |\n\n\n\n#### prev\n\n| 字段         | 类型         | 描述                           |\n|--------------|--------------|--------------------------------|\n| bk_inst_id   | int          | 实例ID|the inst ID             |\n| bk_inst_name | string       | 实例用于展示的名字             |\n| bk_obj_icon  | string       | 模型图标的名字                 |\n| bk_obj_id    | string       | 模型ID                         |\n| bk_obj_name  | string       | 模型用于展示的名字             |\n| children     | object array | 本模型下所有被关联的实例的集合 |\n| count        | int          | children 包含节点的数量        |\n\n#### prev/children 字段说明\n\n| 字段        | 类型   | 描述               |\n|-------------|--------|--------------------|\n|bk_inst_id   | int    | 实例ID|the inst ID |\n|bk_inst_name | string | 实例用于展示的名字 |\n|bk_obj_icon  | string | 模型图标的名字     |\n|bk_obj_id    | string | 模型ID             |\n|bk_obj_name  | string | 模型用于展示的名字 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_object_attribute.md",
    "content": "### 功能描述\n\n查询对象模型属性\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n|bk_obj_id            | string     | 否     | 模型ID                      |\n|bk_supplier_account  | string     | 否     | 开发商账号                  |\n\n\n### 请求参数示例\n\n``` python\n{\n    \"bk_obj_id\": \"test\",\n    \"bk_supplier_account\": \"0\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n   \"data\": [\n       {\n           \"bk_asst_obj_id\": \"\",\n           \"bk_asst_type\": 0,\n           \"create_time\": \"2018-03-08T11:30:27.898+08:00\",\n           \"creator\": \"cc_system\",\n           \"description\": \"\",\n           \"editable\": false,\n           \"id\": 51,\n           \"isapi\": false,\n           \"isonly\": true,\n           \"ispre\": true,\n           \"isreadonly\": false,\n           \"isrequired\": true,\n           \"last_time\": \"2018-03-08T11:30:27.898+08:00\",\n           \"bk_obj_id\": \"process\",\n           \"option\": \"\",\n           \"placeholder\": \"\",\n           \"bk_property_group\": \"default\",\n           \"bk_property_group_name\": \"基础信息\",\n           \"bk_property_id\": \"bk_process_name\",\n           \"bk_property_index\": 0,\n           \"bk_property_name\": \"进程名称\",\n           \"bk_property_type\": \"singlechar\",\n           \"bk_supplier_account\": \"0\",\n           \"unit\": \"\"\n       }\n   ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段                | 类型         | 描述                                                       |\n|---------------------|--------------|------------------------------------------------------------|\n| creator             | string       | 数据的创建者                                               |\n| description         | string       | 数据的描述信息                                             |\n| editable            | bool         | 表明数据是否可编辑                                         |\n| isonly              | bool         | 表明唯一性                                                 |\n| ispre               | bool         | true:预置字段,false:非内置字段                             |\n| isreadonly          | bool         | true:只读，false:非只读                                    |\n| isrequired          | bool         | true:必填，false:可选                                      |\n| option              | string       | 用户自定义内容，存储的内容及格式由调用方决定               |\n| unit                | string       | 单位                                                       |\n| placeholder         | string       | 占位符                                                     |\n| bk_property_group   | string       | 字段分栏的名字                                             |\n| bk_obj_id           | string       | 模型ID                                                     |\n| bk_supplier_account | string       | 开发商账号                                                 |\n| bk_property_id      | string       | 模型的属性ID                                               |\n| bk_property_name    | string       | 模型属性名，用于展示                                       |\n| bk_property_type    | string       | 定义的属性字段用于存储数据的数据类型 （singlechar,longchar,int,enum,date,time,objuser,singleasst,multiasst,timezone,bool)|\n| bk_asst_obj_id      | string       | 如果有关联其它的模型，那么就必需设置此字段，否则就不需要设置|\n\n#### bk_property_type\n\n| 标识       | 名字     |\n|------------|----------|\n| singlechar | 短字符   |\n| longchar   | 长字符   |\n| int        | 整形     |\n| enum       | 枚举类型 |\n| date       | 日期     |\n| time       | 时间     |\n| objuser    | 用户     |\n| singleasst | 单关联   |\n| multiasst  | 多关联   |\n| timezone   | 时区     |\n| bool       | 布尔     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_object_topo.md",
    "content": "### 功能描述\n\n查询普通模型拓扑\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                  |  类型      | 必选   |  描述                                    |\n|----------------------|------------|--------|------------------------------------------|\n| bk_classification_id |string      |是      | 对象模型的分类ID，只能用英文字母序列命名 |\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_classification_id\": \"test\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n        {\n           \"arrows\": \"to\",\n           \"from\": {\n               \"bk_classification_id\": \"bk_host_manage\",\n               \"bk_obj_id\": \"host\",\n               \"bk_obj_name\": \"主机\",\n               \"position\": \"{\\\"bk_host_manage\\\":{\\\"x\\\":-357,\\\"y\\\":-344},\\\"lhmtest\\\":{\\\"x\\\":163,\\\"y\\\":75}}\",\n               \"bk_supplier_account\": \"0\"\n           },\n           \"label\": \"bk_cloud_id\",\n           \"label_name\": \"\",\n           \"label_type\": \"\",\n           \"to\": {\n               \"bk_classification_id\": \"bk_host_manage\",\n               \"bk_obj_id\": \"plat\",\n               \"bk_obj_name\": \"云区域\",\n               \"position\": \"{\\\"bk_host_manage\\\":{\\\"x\\\":-172,\\\"y\\\":-160}}\",\n               \"bk_supplier_account\": \"0\"\n           }\n        }\n   ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段       | 类型      | 描述                               |\n|------------|-----------|------------------------------------|\n| arrows     | string    | 取值 to（单向） 或 to,from（双向） |\n| label_name | string    | 关联关系的名字                     |\n| label      | string    | 表明From通过哪个字段关联到To的     |\n| from       | string    | 对象模型的英文id，拓扑关系的发起方 |\n| to         | string    | 对象模型的英文ID，拓扑关系的终止方 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_object_topo_graphics.md",
    "content": "### 功能描述\n\n查询拓扑图\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                       |\n|---------------------|------------|--------|-----------------------------|\n|scope_type |string|是|图形范围类型,可选global,biz,cls(当前只有global)|\n|scope_id |string|是|图形范围类型下的ID,如果为global,则填0|\n\n\n### 请求参数示例\n\n``` python\n{\n    \"scope_type\": \"global\",\n    \"scope_id\": \"0\"\n}\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n       {\n           \"node_type\": \"obj\",\n           \"bk_obj_id\": \"switch\",\n           \"bk_inst_id\": 0,\n           \"node_name\": \"switch\",\n           \"position\": {\n               \"x\": 100,\n               \"y\": 100\n           },\n           \"ext\": {},\n           \"bk_obj_icon\": \"icon-cc-switch2\",\n           \"scope_type\": \"global\",\n           \"scope_id\": \"\",\n           \"bk_biz_id\": 1,\n           \"bk_supplier_account\": \"0\",\n           \"assts\": [\n               {\n                   \"bk_asst_type\": \"singleasst\",\n                   \"node_type\": \"obj\",\n                   \"bk_obj_id\": \"host\",\n                   \"bk_inst_id\": 0,\n                   \"bk_object_att_id\": \"host_id\",\n                   \"lable\": {}\n               }\n           ]\n       }\n    ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段                | 类型     | 描述                  |\n|---------------------|----------|-----------------------|\n| node_type           | string   | 节点类型,可选obj,inst |\n| bk_obj_id           | string   | 对象模型的ID          |\n| bk_inst_id          | int      | 实例ID                |\n| node_name           | string   | 节点名,当node_type为obj时是模型名称,当node_type为inst时是实例名称|\n| position            | string   | 节点在图中的位置      |\n| ext                 | object   | 前端扩展字段          |\n| bk_obj_icon         | string   | 对象模型的图标        |\n| scope_type          | string   | 图形范围类型,可选global,biz,cls(当前只有global)|\n| scope_id            | string   | 图形范围类型下的ID,如果为global,则填0          |\n| bk_biz_id           | int      | 业务id                                         |\n| bk_supplier_account | string   | 开发商账号                                     |\n| assts               | array    | 关联节点                                        |\n\n#### assts\n\n| 字段             | 类型   | 描述                  |\n|------------------|--------|-----------------------|\n| bk_asst_type     | string | 关联类型              |\n| node_type        | string | 节点类型,可选obj,inst |\n| bk_obj_id        | string | 对象模型的ID          |\n| bk_inst_id       | int    | 实例ID                |\n| bk_object_att_id | string | 关联的属性            |\n| lable            | obj ect| 标签,扩展字段,未启用  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_objects.md",
    "content": "### 功能描述\n\n查询模型\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                                                    |\n|----------------------|------------|--------|----------------------------------------------------------|\n| creator              | string     | 否     | 本条数据创建者                                           |\n| modifier             | string     | 否     | 本条数据的最后修改人员                                   |\n| bk_classification_id | string     | 否     | 对象模型的分类ID，只能用英文字母序列命名                 |\n| bk_obj_id            | string     | 否     | 对象模型的ID，只能用英文字母序列命名                     |\n| bk_obj_name          | string     | 否     | 对象模型的名字，用于展示，可以使用人类可以阅读的任何语言 |\n| bk_supplier_account  | string     | 否     | 开发商账号                                               |\n\n### 请求参数示例\n\n```python\n{\n    \"creator\": \"user\",\n    \"modifier\": \"user\",\n    \"bk_classification_id\": \"test\",\n    \"bk_obj_id\": \"biz\",\n    \"bk_supplier_account\":\"0\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": [\n        {\n            \"bk_classification_id\": \"bk_organization\",\n            \"create_time\": \"2018-03-08T11:30:28.005+08:00\",\n            \"creator\": \"cc_system\",\n            \"description\": \"\",\n            \"id\": 4,\n            \"bk_ispaused\": false,\n            \"ispre\": true,\n            \"last_time\": null,\n            \"modifier\": \"\",\n            \"bk_obj_icon\": \"icon-XXX\",\n            \"bk_obj_id\": \"XX\",\n            \"bk_obj_name\": \"XXX\",\n            \"position\": \"{\\\"test_obj\\\":{\\\"x\\\":-253,\\\"y\\\":137}}\",\n            \"bk_supplier_account\": \"0\"\n        }\n    ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段                 | 类型               | 描述                                                                                           |\n|----------------------|--------------------|------------------------------------------------------------------------------------------------|\n| id                   | int                | 数据记录的ID                                                                                   |\n| creator              | string             | 本条数据创建者                                                                                 |\n| modifier             | string             | 本条数据的最后修改人员                                                                         |\n| bk_classification_id | string             | 对象模型的分类ID，只能用英文字母序列命名                                                       |\n| bk_obj_id            | string             | 对象模型的ID，只能用英文字母序列命名                                                           |\n| bk_obj_name          | string             | 对象模型的名字，用于展示                                                                       |\n| bk_supplier_account  | string             | 开发商账号                                                                                     |\n| bk_ispaused          | bool               | 是否停用, true or false                                                                        |\n| ispre                | bool               | 是否预定义, true or false                                                                      |\n| bk_obj_icon          | string             | 对象模型的ICON信息，用于前端显示，取值可参考[(modleIcon.json)](/static/esb/api_docs/res/cc/modleIcon.json)|\n| position             | json object string | 用于前端展示的坐标                                                                             |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_subscription.md",
    "content": "### 功能描述\n\n查询订阅\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n    无\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"bk_biz_id\":0,\n    \"condition\":{\n        \"subscription_name\":\"name\"\n    },\n    \"page\":{\n        \"start\":0,\n        \"limit\":10,\n        \"sort\":\"HostName\"\n    }\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":[\n   \t\t{\n   \t\t\t\"subscription_id\":1,\n   \t\t\t\"subscription_name\":\"mysubscribe\",\n   \t\t\t\"system_name\":\"SystemName\",\n   \t\t\t\"callback_url\":\"http://127.0.0.1:8080/callback\",\n   \t\t\t\"confirm_mode\":\"httpstatus\",\n   \t\t\t\"confirm_pattern\":\"200\",\n   \t\t\t\"subscription_form\":\"hostcreate\",\n   \t\t\t\"timeout\":10,\n   \t\t\t\"last_time\": \"2017-09-19 16:57:07\",\n   \t\t\t\"operator\": \"user\",\n   \t\t\t\"statistics\": {\n   \t\t\t\t\"total\": 30,\n   \t\t\t\t\"failure\": 2\n   \t\t\t}\n   \t\t}\n    ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段                 | 类型      | 描述                                       |\n|----------------------|-----------|--------------------------------------------|\n| subscription_id      | int       | 订阅ID                                     |\n| subscription_name    | string    | 订阅名                                     |\n| system_name          | string    | 系统名称                                   |\n| callback_url         | string    | 回调地址                                   |\n| confirm_mode         | string    | 回调成功确认模式，可选:httpstatus，regular |\n| confirm_pattern      | string    | 回调成功标志                               |\n| subscription_form    | string    | 订阅单，用\",\"分隔                          |\n| timeout              | int       | 超时时间，单位：秒                         |\n| operator             | int       | 本条数据的最后更新人员                     |\n| last_time            | int       | 更新时间                                   |\n| statistics.total     | int       | 推送总数                                   |\n| statistics.failure   | int       | 推送失败数                                 |"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/search_user_group.md",
    "content": "### 功能描述\n\n查询用户分组\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                 |  类型      | 必选   |  描述                     |\n|----------------------|------------|--------|---------------------------|\n| bk_supplier_account  | string     | 是     | 开发商账号                |\n| group_name           | string     | 否     | 分组名                    |\n| user_list            | string     | 否     | 分组用户列表，多个用;分割 |\n\nbody 为空对象时返回所有的分组\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"group_name\":\"管理员\",\n    \"user_list\":\"owen;tt\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":[\n        {\n            \"group_name\":\"管理员\",\n            \"user_list\":\"owen;tt\",\n            \"group_id\":1\n        }\n    ]\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段          | 类型      | 描述     |\n|---------------|-----------|----------|\n| group_name    | string    | 分组名   |\n| user_list     | string    | 用户列表 |\n| group_id      | string    | 分组ID   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/subscribe_event.md",
    "content": "### 功能描述\n\n订阅事件\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                                            |\n|---------------------|------------|--------|--------------------------------------------------|\n| bk_supplier_account | string     | 是     | 开发商账号                                       |\n| subscription_name   | string     | 是     | 订阅的名字                                       |\n| system_name         | string     | 是     | 订阅事件的系统的名字                             |\n| callback_url        | string     | 是     | 回调函数                                         |\n| confirm_mode        | string     | 是     | 事件发送成功校验模式,可选 1-httpstatus,2-regular |\n| confirm_pattern     | string     | 是     | callback的httpstatus或正则                       |\n| subscription_form   | string     | 是     | 订阅的事件,以逗号分隔                            |\n| timeout             | int        | 是     | 发送事件超时时间                                 |\n\n### 请求参数示例\n\n```python\n{\n  \"bk_supplier_account\": \"0\",\n  \"subscription_name\":\"mysubscribe\",\n  \"system_name\":\"SystemName\",\n  \"callback_url\":\"http://127.0.0.1:8080/callback\",\n  \"confirm_mode\":\"httpstatus\",\n  \"confirm_pattern\":\"200\",\n  \"subscription_form\":\"hostcreate\",\n  \"timeout\":10\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":{\n        \"subscription_id\": 1\n    }\n}\n```\n\n### 返回结果参数说明\n\n#### data\n\n| 字段            | 类型    | 描述             |\n|-----------------|---------|------------------|\n| subscription_id | int     | 新增订阅的订阅ID |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/testing_connection.md",
    "content": "### 功能描述\n\n测试推送（只测试连通性）\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选     |  描述                                |\n|---------------------|------------|----------|--------------------------------------|\n| callback_url        | string     | 回调方法 | The callback URL                     |\n\n### 请求参数示例\n\n```python\n{\n    \"callback_url\":\"127.0.0.1:8080/callback\",\n    \"data\":{\n\n    }\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n\t\"data\":  \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/transfer_sethost_to_idle_module.md",
    "content": "### 功能描述\n\n上交主机到业务的空闲机模块\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型      | 必选     |  描述    |\n|---------------|------------|----------|----------|\n| bk_biz_id     | int        | 是       | 业务id   |\n| bk_set_id     | int        | 是       | 集群id   |\n| bk_module_id  | int        | 是       | 模块id   |\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_biz_id\":10,\n    \"bk_module_id\":58,\n    \"bk_set_id\":1\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"sucess\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/unsubcribe_event.md",
    "content": "### 功能描述\n\n退订事件\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段               |  类型      | 必选   |  描述      |\n|--------------------|------------|--------|------------|\n|bk_supplier_account | string     | 是     | 开发商账号 |\n|subscription_id     | int        | 是     | 订阅ID     |\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"subscription_id\":1\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_business_enable_status.md",
    "content": "### 功能描述\n\n修改业务启用状态\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述      |\n|---------------------|------------|--------|------------|\n| bk_biz_id           | int        | 是     | 业务id     |\n| bk_supplier_account | string     | 是     | 开发商id   |\n| flag                | string     | 是     | 启用状态，为disabled 或者enable |\n\n### 请求参数示例\n\n```python\n{\n    \"bk_biz_id\": \"3\",\n    \"bk_supplier_account\": \"0\",\n    \"flag\": \"enable\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_classification.md",
    "content": "### 功能描述\n\n更新模型分类\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                   |  类型    | 必选   |  描述                                      |\n|------------------------|----------|--------|--------------------------------------------|\n| id                     | int      | 否     | 目标数据的记录ID，作为更新操作的条件       |\n| bk_classification_name | string   | 否     | 分类名 |\n| bk_classification_icon | string   | 否     | 模型分类的图标,取值可参考，取值可参考[(classIcon.json)](resource_define/classIcon.json) |\n\n\n\n\n### 请求参数示例\n\n```python\n{\n    \"id\": 1,\n    \"bk_classification_name\": \"cc_test_new\",\n    \"bk_classification_icon\": \"icon-cc-business\"\n}\n```\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_event_subscribe.md",
    "content": "### 功能描述\n\n修改订阅\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                   |  类型    | 必选   |  描述                                            |\n|------------------------|----------|--------|--------------------------------------------------|\n| bk_biz_id              | int      | 是     | 业务id                                           |\n| bk_supplier_account    | string   | 是     | 开发商账号                                       |\n| subscription_id        | int      | 是     | 订阅ID                                           |\n| subscription_name      | string   | 是     | 订阅的名字                                       |\n| system_name            | string   | 是     | 订阅事件的系统的名字                             |\n| callback_url           | string   | 是     | 回调函数                                         |\n| confirm_mode           | string   | 是     | 事件发送成功校验模式,可选 1-httpstatus,2-regular |\n| confirm_pattern        | string   | 是     | callback的httpstatus或正则                       |\n| subscription_form      | string   | 是     | 订阅的事件,以逗号分隔                            |\n| timeout                | int      | 是     | 发送事件超时时间                                 |\n\n\n### 请求参数示例\n\n```python\n{\n  \"bk_biz_id\": 0,\n  \"bk_supplier_account\": \"0\",\n  \"subscription_name\":\"mysubscribe\",\n  \"subscription_id\": 2,\n  \"system_name\":\"SystemName\",\n  \"callback_url\":\"http://127.0.0.1:8080/callback\",\n  \"confirm_mode\":\"httpstatus\",\n  \"confirm_pattern\":\"200\",\n  \"subscription_form\":\"hostcreate\",\n  \"timeout\":10\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_inst.md",
    "content": "### 功能描述\n\n更新对象实例\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型      | 必选   |  描述                            |\n|---------------------|------------|--------|----------------------------------|\n| bk_supplier_account | string     | 是     | 开发商账号                       |\n| bk_obj_id           | string     | 是     | 模型ID，更新云区域时为\"plat\"       |\n| bk_inst_id          | int        | 是     | 实例ID,更新云区域时为\"bk_cloud_id\" |\n| bk_inst_name        | string     | 否     | 实例名，也可以为其它自定义字段   |\n| bk_cloud_name       | string     | 否     | 云区域名，更新云区域名时需要     |\n\n\n### 请求参数示例(通用实例示例)\n\n```python\n{\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_id\": \"1\",\n    \"bk_inst_id\": 0,\n    \"bk_inst_name\": \"test\",\n    \"bk_cloud_name\":\"test\"\n }\n```\n\n### 请求参数示例(云区域示例)\n\n```python\n  {\n\t\"bk_cloud_name\": \"cloud1\"\n  }\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_object.md",
    "content": "### 功能描述\n\n更新模型定义\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型              | 必选   |  描述                                   |\n|---------------------|--------------------|--------|-----------------------------------------|\n| id                  | int                | 否     | 目标数据的记录ID，作为更新操作的条件    |\n| modifier            | string             | 否     | 本条数据的最后修改人员    |\n| bk_classification_id| string             | 是     | 对象模型的分类ID，只能用英文字母序列命名|\n| bk_obj_name         | string             | 否     | 对象模型的名字                          |\n| bk_supplier_account | string             | 是     | 开发商账号                              |\n| bk_obj_icon         | string             | 否     | 对象模型的ICON信息，用于前端显示，取值可参考[(modleIcon.json)](/static/esb/api_docs/res/cc/modleIcon.json)|\n| position            | json object string | 否     | 用于前端展示的坐标                      |\n\n\n\n### 请求参数示例\n\n```python\n{\n    \"id\": 1,\n    \"modifier\": \"admin\",\n    \"bk_classification_id\": \"cc_test\",\n    \"bk_obj_name\": \"cc2_test_inst\",\n    \"bk_supplier_account\": \"0\",\n    \"bk_obj_icon\": \"icon-cc-business\",\n    \"position\":\"{\\\"ff\\\":{\\\"x\\\":-863,\\\"y\\\":1}}\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_object_attribute.md",
    "content": "### 功能描述\n\n更新对象模型属性\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段                |  类型   | 必选   |  描述                                   |\n|---------------------|---------|--------|-----------------------------------------|\n| id                  | int     | 是     | 目标数据的记录ID                        |\n| description         | string  | 否     | 数据的描述信息                          |\n| isonly              | bool    | 否     | 表明唯一性                              |\n| isreadonly          | bool    | 否     | 表明是否只读                            |\n| isrequired          | bool    | 否     | 表明是否必填                            |\n| bk_property_group   | string  | 否     | 字段分栏的名字                          |\n| option              | string  | 否     | 用户自定义内容，存储的内容及格式由调用方决定, 以数字内容为例（{\"min\":\"1\",\"max\":\"2\"}）|\n| bk_property_name    | string  | 否     | 模型属性名，用于展示                    |\n| bk_property_type    | string  | 否     | 定义的属性字段用于存储数据的数据类型（singlechar,longchar,int,enum,date,time,objuser,singleasst,multiasst,timezone,bool)|\n| unit                | string  | 否     | 单位                                    |\n| placeholder         | string  | 否     | 占位符                                  |\n| bk_asst_obj_id      | string  | 否     | 如果有关联其它的模型，那么就必需设置此字段，否则就不需要设置 |\n\n#### bk_property_type\n\n| 标识       | 名字     |\n|------------|----------|\n| singlechar | 短字符   |\n| longchar   | 长字符   |\n| int        | 整形     |\n| enum       | 枚举类型 |\n| date       | 日期     |\n| time       | 时间     |\n| objuser    | 用户     |\n| singleasst | 单关联   |\n| multiasst  | 多关联   |\n| timezone   | 时区     |\n| bool       | 布尔     |\n\n\n### 请求参数示例\n\n```python\n{\n    \"id\":1,\n    \"description\":\"test\",\n    \"placeholder\":\"test\",\n    \"unit\":\"1\",\n    \"isonly\":\"false\",\n    \"isreadonly\":\"false\",\n    \"isrequired\":\"false\",\n    \"bk_property_group\":\"default\",\n    \"option\":\"{\\\"min\\\":\\\"1\\\",\\\"max\\\":\\\"4\\\"}\",\n    \"bk_property_name\":\"aaa\",\n    \"bk_property_type\":\"int\",\n    \"bk_asst_obj_id\":\"0\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_object_topo_graphics.md",
    "content": "### 功能描述\n\n更新拓扑图\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型      | 必选   |  描述                                           |\n|---------------|------------|--------|-------------------------------------------------|\n| action        | string     | 是     | 更新方法,可选update,override                    |\n| scope_type    | string     | 是     | 图形范围类型,可选global,biz,cls(当前只有global) |\n| scope_id      | string     | 是     | 图形范围类型下的ID,如果为global,则填0           |\n| node_type     | string     | 是     | 节点类型,可选obj,inst                           |\n| bk_obj_id     | string     | 是     | 对象模型的ID                                    |\n| bk_inst_id    | int        | 是     | 实例ID                                          |\n| position      | string     | 否     | 节点在图中的位置                                |\n| ext           | object     | 否     | 前端扩展字段                                    |\n| bk_obj_icon   | string     | 否     | 对象模型的图标                                  |\n\n> scope_type,scope_id 唯一确定一张图\n> node_type,bk_obj_id,bk_inst_id三者唯一确定每张图的一个节点,故必填\n\n\n### 请求参数示例\n\n```python\n\n{\n    \"action\": \"update\",\n    \"scope_tpye\": \"global\",\n    \"scope_id\": \"0\",\n    \"node_type\": \"obj\",\n    \"bk_obj_id\": \"switch\",\n    \"bk_inst_id\": 0,\n    \"position\": {\n        \"x\": 100,\n        \"y\": 100\n    },\n    \"ext\": {\n        \"a\":\"test\",\n        \"b\":\"test\"\n    },\n    \"bk_obj_icon\": \"icon-cc-switch2\",\n}\n\n```\n\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\": \"success\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/apidocs/zh_hans/update_user_group.md",
    "content": "### 功能描述\n\n更新用户分组\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n\n| 字段                |  类型   | 必选   |  描述                     |\n|---------------------|---------|--------|--------------------------|\n| bk_supplier_account | string  | 是     | 开发商账号                |\n| group_id            | string  | 是     | 分组ID                    |\n| group_name          | string  | 否     | 分组名                    |\n| user_list           | string  | 否     | 分组用户列表，多个用;分割 |\n\n\n### 请求参数示例\n\n```python\n{\n    \"bk_supplier_account\":\"0\",\n    \"group_id\":\"0\",\n    \"group_name\":\"administrators\",\n    \"user_list\":\"owen;tt\"\n}\n```\n\n### 返回结果示例\n\n```python\n\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"\",\n    \"data\":\"\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/cc/cc.yaml",
    "content": "---\n  \n- path: /v2/cc/update_business_enable_status/\n  name: update_business_enable_status\n  label: 修改业务启用状态 \n  label_en: update the business enable status\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/biz/status/{flag}/{bk_supplier_account}/{bk_biz_id}\n  dest_http_method: PUT  \n  \n- path: /v2/cc/batch_delete_set/\n  name: batch_delete_set\n  label: 批量删除集群 \n  label_en: delete set batch\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/set/{bk_biz_id}/batch\n  dest_http_method: DELETE  \n  \n- path: /v2/cc/create_inst/\n  name: create_inst\n  label: 创建实例\n  label_en: create a new inst\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/inst/{bk_supplier_account}/{bk_obj_id}\n  dest_http_method: POST\n  \n- path: /v2/cc/search_inst/\n  name: search_inst\n  label: 查询实例\n  label_en: search insts by condition\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/inst/association/search/owner/{bk_supplier_account}/object/{bk_obj_id}\n  dest_http_method: POST\n  \n- path: /v2/cc/update_inst/\n  name: update_inst\n  label: 更新对象实例\n  label_en: update a inst\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/inst/{bk_supplier_account}/{bk_obj_id}/{bk_inst_id}\n  dest_http_method: PUT\n  \n- path: /v2/cc/batch_update_inst/\n  name: batch_update_inst\n  label: 批量更新对象实例\n  label_en: update inst batch\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/inst/{bk_supplier_account}/{bk_obj_id}/batch\n  dest_http_method: PUT\n  \n- path: /v2/cc/delete_inst/\n  name: delete_inst\n  label: 删除实例\n  label_en: delete a inst\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/inst/{bk_supplier_account}/{bk_obj_id}/{bk_inst_id}\n  dest_http_method: DELETE\n  \n- path: /v2/cc/batch_delete_inst/\n  name: batch_delete_inst\n  label: 批量删除实例\n  label_en: delete inst batch\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/inst/{bk_supplier_account}/{bk_obj_id}/batch\n  dest_http_method: DELETE\n  \n- path: /v2/cc/search_inst_association_topo/\n  name: search_inst_association_topo\n  label: 查询实例关联拓扑\n  label_en: query the instance association topology\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/inst/search/topo/owner/{bk_supplier_account}/object/{bk_obj_id}/inst/{bk_inst_id}\n  dest_http_method: POST\n  \n- path: /v2/cc/create_object/\n  name: create_object\n  label: 创建模型\n  label_en: query  create a object\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object\n  dest_http_method: POST\n  extra_param_fields : bk_supplier_account, creator\n  \n- path: /v2/cc/delete_object/\n  name: delete_object\n  label: 删除模型\n  label_en: query  delete a object\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/{id}\n  dest_http_method: DELETE\n  \n- path: /v2/cc/update_object/\n  name: update_object\n  label: 更新定义\n  label_en: query  update a object\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/{id}\n  dest_http_method: PUT\n  extra_param_fields : bk_supplier_account\n  \n- path: /v2/cc/search_objects/\n  name: search_objects\n  label: 查询模型\n  label_en:  search  object\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/objects\n  dest_http_method: POST\n  extra_param_fields : bk_supplier_account\n  \n- path: /v2/cc/search_object_topo/\n  name: search_object_topo\n  label: 查询普通模型拓扑\n  label_en: search a object topo\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/objects/topo\n  dest_http_method: POST\n  \n- path: /v2/cc/search_object_topo_graphics/\n  name: search_object_topo_graphics\n  label: 查询拓扑图\n  label_en: search a topo graphics\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/objects/topographics/scope_type/{scope_type}/scope_id/{scope_id}/action/search\n  dest_http_method: POST\n  \n  \n- path: /v2/cc/create_classification/\n  name: create_classification\n  label: 添加模型分类\n  label_en: create a object classification\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:   /api/v3/object/classification\n  dest_http_method: POST\n  \n  \n- path: /v2/cc/delete_classification/\n  name: delete_classification\n  label: 删除模型分类\n  label_en: delete the classification by the id\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/classification/{id}\n  dest_http_method: DELETE\n  \n- path: /v2/cc/update_classification/\n  name: update_classification\n  label: 更新模型分类\n  label_en: update the  object classification\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/classification/{id}\n  dest_http_method: PUT\n  \n- path: /v2/cc/search_classifications/\n  name: search_classifications\n  label: 查询模型分类\n  label_en: search all classifications\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/classifications\n  dest_http_method: POST\n  \n- path: /v2/cc/create_object_attribute/\n  name: create_object_attribute\n  label: 创建模型属性\n  label_en: create object attribute\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/attr\n  dest_http_method: POST\n  extra_param_fields : bk_supplier_account,creator\n  \n- path: /v2/cc/delete_object_attribute/\n  name: delete_object_attribute\n  label: 删除对象模型属性\n  label_en: delete   object attribute\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/attr/{id}\n  dest_http_method: DELETE\n\n- path: /v2/cc/update_object_attribute/\n  name: update_object_attribute\n  label: 更新对象模型属性\n  label_en: update the  object attribute\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/attr/{id}\n  dest_http_method: PUT\n  \n- path: /v2/cc/search_object_attribute/\n  name: search_object_attribute\n  label: 查询对象模型属性\n  label_en: search object attribute\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/object/attr/search\n  dest_http_method: POST\n  extra_param_fields : bk_supplier_account\n  \n- path: /v2/cc/get_role_privilege/\n  name: get_role_privilege\n  label: 获取角色绑定权限\n  label_en: get role privilege\n  suggest_method: GET\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/privilege/{bk_supplier_account}/{bk_obj_id}/{bk_property_id}\n  dest_http_method: GET\n  \n\n  \n- path: /v2/cc/create_user_group/\n  name: create_user_group\n  label: 新建用户分组\n  label_en: create user group\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/privilege/group/{bk_supplier_account}\n  dest_http_method: POST\n  \n- path: /v2/cc/update_user_group/\n  name: update_user_group\n  label: 更新用户分组\n  label_en: update user group\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/privilege/group/{bk_supplier_account}/{group_id}\n  dest_http_method: PUT\n  \n- path: /v2/cc/search_user_group/\n  name: search_user_group\n  label: 查询用户分组\n  label_en: search user group\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/topo/privilege/group/{bk_supplier_account}/search\n  dest_http_method: POST\n  \n- path: /v2/cc/delete_user_group/\n  name: delete_user_group\n  label: 删除用户分组\n  label_en: delete user group\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/privilege/group/{bk_supplier_account}/{bk_group_id}\n  dest_http_method: DELETE\n  \n- path: /v2/cc/search_group_privilege/\n  name: search_group_privilege\n  label: 查询分组权限\n  label_en: search  group privilege\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/privilege/group/{bk_supplier_account}/{bk_group_id}\n  dest_http_method: GET\n  extra_param_fields : bk_supplier_account\n  \n- path: /v2/cc/get_user_privilege/\n  name: get_user_privilege\n  label: 查询用户权限\n  label_en: get user privilege\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/privilege/user/detail/{bk_supplier_account}/{user_name}\n  dest_http_method: GET\n  extra_param_fields : bk_supplier_account\n  \n- path: /v2/cc/subscribe_event/\n  name: subscribe_event\n  label: 订阅事件\n  label_en: subscribe event\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/event/subscribe/{supplier_account}/{bk_biz_id}\n  dest_http_method: POST\n  \n- path: /v2/cc/unsubcribe_event/\n  name: unsubcribe_event\n  label: 退订事件\n  label_en: event unsubscribe\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/event/subscribe/{supplier_account}/{bk_biz_id}/{subscription_id}\n  dest_http_method: DELETE\n  \n- path: /v2/cc/update_event_subscribe/\n  name: update_event_subscribe\n  label: 修改订阅\n  label_en: update the event subscription\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/event/subscribe/{supplier_account}/{bk_biz_id}/{subscription_id}\n  dest_http_method: PUT\n  \n- path: /v2/cc/search_subscription/\n  name: search_subscription\n  label: 查询订阅\n  label_en: search event subscription\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/event/subscribe/search/{supplier_account}/{bk_biz_id}\n  dest_http_method: POST\n  \n- path: /v2/cc/testing_connection/\n  name: testing_connection\n  label: 测试推送（只测试连通性）\n  label_en: connectivity testing\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path:  /api/v3/event/subscribe/telnet\n  dest_http_method: POST\n    \n- path: /v2/cc/transfer_sethost_to_idle_module/\n  name: transfer_sethost_to_idle_module\n  label: 清空业务下集群/模块中主机\n  label_en: transfer host in set or module to idle module\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/hosts/modules/idle/set\n  dest_http_method: POST\n  \n- path: /v2/cc/clone_host_property/\n  name: clone_host_property\n  label: 克隆主机属性\n  label_en: clone host property\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/hosts/property/clone\n  dest_http_method: PUT\n  \n- path: /v2/cc/get_operation_log/\n  name: get_operation_log\n  label: 获取操作日志\n  label_en: get operation log\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/audit/search\n  dest_http_method: POST\n\n- path: /v2/cc/add_host_lock/\n  name: add_host_lock\n  label: 新加主机锁\n  label_en: add host lock\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/host/lock\n  dest_http_method: POST\n\n- path: /v2/cc/delete_host_lock/\n  name: delete_host_lock\n  label: 删除主机锁\n  label_en: delete host lock\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/host/lock\n  dest_http_method: DELETE\n\n\n- path: /v2/cc/search_host_lock/\n  name: search_host_lock\n  label: 查询主机锁\n  label_en: search host lock\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/host/lock/search\n  dest_http_method: POST\n\n- path: /v2/cc/get_mainline_object_topo/\n  name: get_mainline_object_topo\n  label: 查询主线模型的业务拓扑\n  label_en: get mainline object's business topology\n  suggest_method: GET\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/model/{bk_supplier_account}\n  dest_http_method: GET\n  \n- path: /v2/cc/get_biz_internal_module/\n  name: get_biz_internal_module\n  label: 查询业务的空闲机和故障机模块\n  label_en: get business's fault and idle modules\n  suggest_method: GET\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/topo/internal/{bk_supplier_account}/{bk_biz_id}\n  dest_http_method: GET\n  \n- path: /v2/cc/get_process_bind_module/\n  name: get_process_bind_module\n  label: 查询进程绑定模块\n  label_en: get module bind with process\n  suggest_method: GET\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/proc/module/{bk_supplier_account}/{bk_biz_id}/{bk_process_id}\n  dest_http_method: GET\n  \n- path: /v2/cc/bind_process_module/\n  name: bind_process_module\n  label: 绑定进程到模块\n  label_en: bind process to module\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/proc/module/{bk_supplier_account}/{bk_biz_id}/{bk_process_id}/{bk_module_name}\n  dest_http_method: PUT\n  \n- path: /v2/cc/delete_process_module_bind/\n  name: delete_process_module_bind\n  label: 解绑进程模块\n  label_en: delete process module bind relationship\n  suggest_method: POST\n  api_type: operate\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/proc/module/{bk_supplier_account}/{bk_biz_id}/{bk_process_id}/{bk_module_name}\n  dest_http_method: DELETE\n  \n- path: /v2/cc/find_host_by_module/\n  name: find_host_by_module\n  label: 根据模块查询主机\n  label_en: find host by module\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/findmany/modulehost\n  dest_http_method: POST\n  \n- path: /v2/cc/find_object_association/\n  name: find_object_association\n  label: 查询模型之间的关联关系\n  label_en: find object's association\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/find/objectassociation\n  dest_http_method: POST\n  \n- path: /v2/cc/find_instance_association/\n  name: find_instance_association\n  label: 查询模型实例之间的关联关系\n  label_en: find association between object's instance\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/find/instassociation\n  dest_http_method: POST\n    \n- path: /v2/cc/add_instance_association/\n  name: add_instance_association\n  label: 新建模型实例之间的关联关系\n  label_en: add association between object's instance\n  suggest_method: POST\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/create/instassociation\n  dest_http_method: POST\n  \n- path: /v2/cc/delete_instance_association/\n  name: delete_instance_association\n  label: 删除模型实例之间的关联关系\n  label_en: delete association between object's instance\n  method: DELETE\n  api_type: query\n  comp_codename: generic.v2.cc.cc_component\n  dest_path: /api/v3/delete/instassociation/{id}\n  dest_http_method: DELETE\n  \n  \n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/create_periodic_task.md",
    "content": "### Functional description\n\nCreate a periodic task\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   template_id    |   string     |   YES   |  ID of template which used to create task |\n|   bk_biz_id    |   string     |   YES   |  business ID |\n|   name    |   string     |   YES   |  name of task |\n|   cron    |   dict     |   YES   |  crontab dict |\n|   flow_type    |   string     |   NO    |  flow type，common: common flow，common_func：functional flow |\n|   constants    |   dict       |   NO    |  global variables，details are described below |\n\n#### constants.KEY\n\nconstant KEY, the format is like ${key}\n\n#### constants.VALUE\n\nconstant value\n\n#### cron\n \n | Field          |  Type       | Required   |  Description             |\n| ------------ | ------------ | ------ | ---------------- |\n|   minute    |   string     |   NO   |  minute, default value is * |\n|   hour    |   string     |   NO   |  hour, default value is * |\n|   day_of_week    |   string     |   NO   |  day of week, default value is * |\n|   day_of_month    |   string     |   NO   |  day of month, default value is * |\n|   month_of_year    |   string     |   NO   |  month of year, default value is * |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"template_id\": \"1\",\n    \"bk_biz_id\": \"2\",\n\t\"name\": \"from api 3\",\n\t\"cron\" : {\"minute\": \"*/1\", \"hour\": \"15\", \"day_of_week\":\"*\", \"day_of_month\":\"*\", \"month_of_year\":\"*\"},\n\t\"constants\": {\"${bk_timing}\": \"100\"},\n\t\"exclude_task_nodes_id\": [\"nodea5c396a3ef0f9f3cd7d4d7695f78\"]\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"message\": \"\",\n    \"data\": {\n        \"cron\": \"1,2,3-19/2 2 3 4 5 (m/h/d/dM/MY)\",\n        \"total_run_count\": 0,\n        \"name\": \"task2\",\n        \"form\": {\n            \"${bk_timing}\": {\n                \"source_tag\": \"sleep_timer.bk_timing\",\n                \"source_info\": {\n                    \"node76393dcfedcf73dbc726f1c4786d\": [\n                        \"bk_timing\"\n                    ]\n                },\n                \"name\": \"time\",\n                \"index\": 0,\n                \"custom_type\": \"\",\n                \"value\": \"2\",\n                \"show_type\": \"show\",\n                \"source_type\": \"component_inputs\",\n                \"key\": \"${bk_timing}\",\n                \"validation\": \"\",\n                \"desc\": \"\"\n            }\n        },\n        \"creator\": \"admin\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"nodea5c396a3ef0f9f3cd7d4d7695f78\": {\n                    \"outgoing\": \"linef69b59d165fb8c0061b46588c515\",\n                    \"incoming\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"name\": \"pause\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"step1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                    \"loop\": {}\n                },\n                \"node76393dcfedcf73dbc726f1c4786d\": {\n                    \"outgoing\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"incoming\": \"linecd597f19606c1455d661f71a582d\",\n                    \"name\": \"time\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": true,\n                                \"value\": \"${bk_timing}\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"step1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"loop\": {}\n                }\n            },\n            \"end_event\": {\n                \"incoming\": \"linef69b59d165fb8c0061b46588c515\",\n                \"outgoing\": \"\",\n                \"type\": \"EmptyEndEvent\",\n                \"id\": \"node375320830be9c46cd89f4069857d\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"linef69b59d165fb8c0061b46588c515\": {\n                    \"is_default\": false,\n                    \"source\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                    \"id\": \"linef69b59d165fb8c0061b46588c515\",\n                    \"target\": \"node375320830be9c46cd89f4069857d\"\n                },\n                \"linecd597f19606c1455d661f71a582d\": {\n                    \"is_default\": false,\n                    \"source\": \"node4e87796ddd76b0d59337b08f385d\",\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": \"node76393dcfedcf73dbc726f1c4786d\"\n                },\n                \"linecf7b7f10c87187a88b72c5f91177\": {\n                    \"is_default\": false,\n                    \"source\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"target\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node375320830be9c46cd89f4069857d\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linef69b59d165fb8c0061b46588c515\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Left\"\n                    }\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\"\n                }\n            ],\n            \"start_event\": {\n                \"incoming\": \"\",\n                \"outgoing\": \"linecd597f19606c1455d661f71a582d\",\n                \"type\": \"EmptyStartEvent\",\n                \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                \"name\": \"\"\n            },\n            \"constants\": {\n                \"${bk_timing}\": {\n                    \"source_tag\": \"sleep_timer.bk_timing\",\n                    \"source_info\": {\n                        \"node76393dcfedcf73dbc726f1c4786d\": [\n                            \"bk_timing\"\n                        ]\n                    },\n                    \"name\": \"time\",\n                    \"index\": 0,\n                    \"custom_type\": \"\",\n                    \"value\": \"2\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${bk_timing}\",\n                    \"validation\": \"\",\n                    \"desc\": \"\"\n                }\n            },\n            \"location\": [\n                {\n                    \"stage_name\": \"step1\",\n                    \"name\": \"pause\",\n                    \"y\": 133,\n                    \"x\": 631,\n                    \"type\": \"tasknode\",\n                    \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"node4e87796ddd76b0d59337b08f385d\"\n                },\n                {\n                    \"y\": 149,\n                    \"x\": 1092,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node375320830be9c46cd89f4069857d\"\n                },\n                {\n                    \"stage_name\": \"step1\",\n                    \"name\": \"time\",\n                    \"y\": 133,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\"\n                }\n            ]\n        },\n        \"last_run_at\": \"\",\n        \"enabled\": true,\n        \"id\": 5,\n        \"template_id\": \"2\"\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      crontab expression    |\n|  total_run_count      |    int    |    how much times the task run   |\n|  name      |    string    |    task name   |\n|  creator      |    string    |    creator   |\n|  last_run_at      |    string    |    date of last run   |\n|  enabled      |    bool    |   is the task enabled   |\n|  id      |    int    |    task id   |\n|  template_id      |    string    |    template id for the task   |\n|  form      |    dict    |    form dict for the task   |\n|  pipeline_tree      |    dict    |    flow tree for the task   |\n\n\n#### data.pipeline_tree\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      start node     |\n|  end_event      |    dict    |      end node    |\n|  activities      |    dict    |      task node（atoms or subprocess）info    |\n|  gateways      |    dict    |      gateways（parallel gateway、exclusive gateway、exclusive gateway）info    |\n|  flows      |    dict    |      sequenceFlow（the line between nodes）info    |\n|  constants      |    dict    |  global variables, details are described below    |\n|  outputs      |    list    |    outputs info, indicate outputs field of global variables|\n\n#### data.form.KEY, data.pipeline_tree.constants.KEY\n\nKEY, the format is like ${key}\n\n#### data.form.VALUE, data.pipeline_tree.constants.VALUE\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  key      |    string    |      same with KEY     |\n|  name      |    string    |     name    |\n|  index      |    int    |       display order at the front end   |\n|  desc      |    string    |     description   |\n|  source_type  | string   |      source of variable, custom mean manual variable, component_inputs means variables comes from task node inputs parameters, component_outputs means variables comes from task node outputs parameters   |\n|  custom_type  | string   |      custom type, which is not empty when source_type is custom,  the value is input ,or textarea, or datetime, or int |\n|  source_tag   | string   |      source tag and atom info, which is not empty when source_type is  component_inputs or component_outputs  |\n|  source_info | dict    |        source info about task node ID  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/create_task.md",
    "content": "### Functional description\n\nCreate a task with a flow template\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field         |  Type      | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   YES   |  the business ID |\n|   template_id  |   string     |   YES   |  the flow template ID |\n|   template_source | string   | NO    | source of flow，default value is business. business: from business, common: from common flow |\n|   name         |   string     |   YES   |  Task name |\n|   flow_type    |   string     |   NO    |  flow type，common: common flow，common_func：functional flow |\n|   constants    |   dict       |   NO    |  global variables，details are described below |\n|   exclude_task_nodes_id | list |   NO   |  nodes id not be executed, which are set ignore in flow |\n\n#### constants.KEY\n\nconstant KEY, the format is like ${key}\n\n#### constants.VALUE\n\nconstant value, the type of value should be same with data from API[get_template_info]\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"name\": \"tasktest\",\n    \"flow_type\": \"common\",\n    \"constants\": {\n        \"${content}: \"echo 1\",\n        \"${params}\": \"\",\n        \"${script_timeout}\": 20\n    }\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"result\": true,\n    \"data\": {\n        \"task_id\": 10,\n        \"task_url\": \"http://bk_sops_host/taskflow/execute/3/?instance_id=15364\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"node9b5ae13799d63e179f0ce3088b62\": {\n                    \"outgoing\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"incoming\": \"line490caa49d2a03e64829693281032\",\n                    \"name\": \"timing\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": false,\n                                \"value\": \"2\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": false,\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"loop\": null\n                },\n                \"node880ded556c6c3c269be3cedc64b6\": {\n                    \"outgoing\": \"line490caa49d2a03e64829693281032\",\n                    \"incoming\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"name\": \"暂停\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": true,\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"loop\": null\n                }\n            },\n            \"end_event\": {\n                \"type\": \"EmptyEndEvent\",\n                \"outgoing\": \"\",\n                \"incoming\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"line490caa49d2a03e64829693281032\": {\n                    \"is_default\": false,\n                    \"source\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"id\": \"line490caa49d2a03e64829693281032\",\n                    \"target\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                \"lineb83161d6e0593ad68d9ec73a961b\": {\n                    \"is_default\": false,\n                    \"source\": \"noded383bc1d7387391f889c6bab18b8\",\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                \"line27bc7b4ccbcf37ddb9d1f6572a04\": {\n                    \"is_default\": false,\n                    \"source\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"target\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line490caa49d2a03e64829693281032\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Left\"\n                    }\n                }\n            ],\n            \"start_event\": {\n                \"type\": \"EmptyStartEvent\",\n                \"outgoing\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                \"incoming\": \"\",\n                \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                \"name\": \"\"\n            },\n            \"id\": \"node7ef6970d06ad3bc092594cb5ec5f\",\n            \"constants\": {},\n            \"location\": [\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"暂停\",\n                    \"y\": 135,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 1000,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                },\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"timing\",\n                    \"y\": 135,\n                    \"x\": 595,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"noded383bc1d7387391f889c6bab18b8\"\n                }\n            ]\n        }\n    }\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result      |    bool    |   true/false, indicate success or failure     |\n|  data        |    dict  |   data returned when result is true, details are described below        |\n|  message     |    string  |   error message returned when result is false |\n\n####  data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  task_id      |    int    |   the task instance ID    |\n|  task_url     |    str     |    task instance url     |\n|  pipeline_tree     |    dict     |    task pipeline tree     |\n\n#### data.pipeline_tree\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      start node     |\n|  end_event      |    dict    |      end node    |\n|  activities      |    dict    |      task node（atoms or subprocess）info    |\n|  gateways      |    dict    |      gateways（parallel gateway、exclusive gateway、exclusive gateway）info    |\n|  flows      |    dict    |      sequenceFlow（the line between nodes）info    |\n|  constants      |    dict    |  global variables, details are described below    |\n|  outputs      |    list    |    outputs info, indicate outputs field of global  |\n\n#### data.pipeline_tree.constants.KEY\n\nKEY, the format is like ${key}\n\n#### data.pipeline_tree.constants.VALUE\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  key      |    string    |      same with KEY     |\n|  name      |    string    |     name    |\n|  index      |    int    |       display order at the front end   |\n|  desc      |    string    |     description   |\n|  source_type  | string   |      source of variable, custom mean manual variable, component_inputs means variables comes from task node inputs parameters, component_outputs means variables comes from task node outputs parameters   |\n|  custom_type  | string   |      custom type, which is not empty when source_type is custom,  the value is input ,or textarea, or datetime, or int |\n|  source_tag   | string   |      source tag and atom info, which is not empty when source_type is  component_inputs or component_outputs  |\n|  source_info | dict    |        source info about task node ID  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_periodic_task_info.md",
    "content": "### Functional description\n\nQuery periodic task detail\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   YES   |  task ID |\n|   bk_biz_id    |   string     |   YES   |  business ID |\n\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task\": \"8\"\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"message\": \"\",\n    \"data\": {\n        \"cron\": \"1,2,3-19/2 2 3 4 5 (m/h/d/dM/MY)\",\n        \"total_run_count\": 0,\n        \"name\": \"task2\",\n        \"form\": {\n            \"${bk_timing}\": {\n                \"source_tag\": \"sleep_timer.bk_timing\",\n                \"source_info\": {\n                    \"node76393dcfedcf73dbc726f1c4786d\": [\n                        \"bk_timing\"\n                    ]\n                },\n                \"name\": \"time\",\n                \"index\": 0,\n                \"custom_type\": \"\",\n                \"value\": \"2\",\n                \"show_type\": \"show\",\n                \"source_type\": \"component_inputs\",\n                \"key\": \"${bk_timing}\",\n                \"validation\": \"\",\n                \"desc\": \"\"\n            }\n        },\n        \"creator\": \"admin\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"nodea5c396a3ef0f9f3cd7d4d7695f78\": {\n                    \"outgoing\": \"linef69b59d165fb8c0061b46588c515\",\n                    \"incoming\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"name\": \"pause\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"step1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                    \"loop\": {}\n                },\n                \"node76393dcfedcf73dbc726f1c4786d\": {\n                    \"outgoing\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"incoming\": \"linecd597f19606c1455d661f71a582d\",\n                    \"name\": \"time\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": true,\n                                \"value\": \"${bk_timing}\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"step1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"loop\": {}\n                }\n            },\n            \"end_event\": {\n                \"incoming\": \"linef69b59d165fb8c0061b46588c515\",\n                \"outgoing\": \"\",\n                \"type\": \"EmptyEndEvent\",\n                \"id\": \"node375320830be9c46cd89f4069857d\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"linef69b59d165fb8c0061b46588c515\": {\n                    \"is_default\": false,\n                    \"source\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                    \"id\": \"linef69b59d165fb8c0061b46588c515\",\n                    \"target\": \"node375320830be9c46cd89f4069857d\"\n                },\n                \"linecd597f19606c1455d661f71a582d\": {\n                    \"is_default\": false,\n                    \"source\": \"node4e87796ddd76b0d59337b08f385d\",\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": \"node76393dcfedcf73dbc726f1c4786d\"\n                },\n                \"linecf7b7f10c87187a88b72c5f91177\": {\n                    \"is_default\": false,\n                    \"source\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"target\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node375320830be9c46cd89f4069857d\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linef69b59d165fb8c0061b46588c515\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Left\"\n                    }\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\"\n                }\n            ],\n            \"start_event\": {\n                \"incoming\": \"\",\n                \"outgoing\": \"linecd597f19606c1455d661f71a582d\",\n                \"type\": \"EmptyStartEvent\",\n                \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                \"name\": \"\"\n            },\n            \"constants\": {\n                \"${bk_timing}\": {\n                    \"source_tag\": \"sleep_timer.bk_timing\",\n                    \"source_info\": {\n                        \"node76393dcfedcf73dbc726f1c4786d\": [\n                            \"bk_timing\"\n                        ]\n                    },\n                    \"name\": \"time\",\n                    \"index\": 0,\n                    \"custom_type\": \"\",\n                    \"value\": \"2\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${bk_timing}\",\n                    \"validation\": \"\",\n                    \"desc\": \"\"\n                }\n            },\n            \"location\": [\n                {\n                    \"stage_name\": \"step1\",\n                    \"name\": \"pause\",\n                    \"y\": 133,\n                    \"x\": 631,\n                    \"type\": \"tasknode\",\n                    \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"node4e87796ddd76b0d59337b08f385d\"\n                },\n                {\n                    \"y\": 149,\n                    \"x\": 1092,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node375320830be9c46cd89f4069857d\"\n                },\n                {\n                    \"stage_name\": \"step1\",\n                    \"name\": \"time\",\n                    \"y\": 133,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\"\n                }\n            ]\n        },\n        \"last_run_at\": \"\",\n        \"enabled\": true,\n        \"id\": 5,\n        \"template_id\": \"2\"\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      crontab expression    |\n|  total_run_count      |    int    |    how much times the task run   |\n|  name      |    string    |    task name   |\n|  creator      |    string    |    creator   |\n|  last_run_at      |    string    |    date of last run   |\n|  enabled      |    bool    |   is the task enabled   |\n|  id      |    int    |    task id   |\n|  template_id      |    string    |    template id for the task   |\n|  form      |    dict    |    form dict for the task   |\n|  pipeline_tree      |    dict    |    flow tree for the task   |\n\n\n#### data.pipeline_tree\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      start node     |\n|  end_event      |    dict    |      end node    |\n|  activities      |    dict    |      task node（atoms or subprocess）info    |\n|  gateways      |    dict    |      gateways（parallel gateway、exclusive gateway、exclusive gateway）info    |\n|  flows      |    dict    |      sequenceFlow（the line between nodes）info    |\n|  constants      |    dict    |  global variables, details are described below    |\n|  outputs      |    list    |    outputs info, indicate outputs field of global variables|\n\n#### data.form.KEY, data.pipeline_tree.constants.KEY\n\nKEY, the format is like ${key}\n\n#### data.form.VALUE, data.pipeline_tree.constants.VALUE\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  key      |    string    |      same with KEY     |\n|  name      |    string    |     name    |\n|  index      |    int    |       display order at the front end   |\n|  desc      |    string    |     description   |\n|  source_type  | string   |      source of variable, custom mean manual variable, component_inputs means variables comes from task node inputs parameters, component_outputs means variables comes from task node outputs parameters   |\n|  custom_type  | string   |      custom type, which is not empty when source_type is custom,  the value is input ,or textarea, or datetime, or int |\n|  source_tag   | string   |      source tag and atom info, which is not empty when source_type is  component_inputs or component_outputs  |\n|  source_info | dict    |        source info about task node ID  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_periodic_task_list.md",
    "content": "### Functional description\n\nQuery periodic task for business\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   YES   |  business ID |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\"\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"data\": [\n        {\n            \"cron\": \"*/1 15 * * * (m/h/d/dM/MY)\",\n            \"total_run_count\": 1,\n            \"name\": \"from api 3\",\n            \"creator\": \"admin\",\n            \"last_run_at\": \"2018-11-28 15:57:01 +0900\",\n            \"enabled\": false,\n            \"id\": 11,\n            \"template_id\": \"2\"\n        },\n        {\n            \"cron\": \"1,2,3-19/2 2 3 4 5 (m/h/d/dM/MY)\",\n            \"total_run_count\": 0,\n            \"name\": \"from api 1\",\n            \"creator\": \"admin\",\n            \"last_run_at\": \"\",\n            \"enabled\": false,\n            \"id\": 6,\n            \"template_id\": \"2\"\n        },\n        {\n            \"cron\": \"*/5 * * * * (m/h/d/dM/MY)\",\n            \"total_run_count\": 0,\n            \"name\": \"task\",\n            \"creator\": \"admin\",\n            \"last_run_at\": \"\",\n            \"enabled\": false,\n            \"id\": 4,\n            \"template_id\": \"2\"\n        }\n    ],\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      crontab expression    |\n|  total_run_count      |    int    |    how much times the task run   |\n|  name      |    string    |    task name   |\n|  creator      |    string    |    creator   |\n|  last_run_at      |    string    |    date of last run   |\n|  enabled      |    bool    |   is the task enabled   |\n|  id      |    int    |    task id   |\n|  template_id      |    string    |    template id for the task   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_task_detail.md",
    "content": "### Functional description\n\nQuery a task execution details\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description          |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string   |   YES   |  the business ID             |\n|   task_id     |   string   |   YES   |  the task ID   |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"data\": {\n        \"creator\": \"admin\",\n        \"outputs\": [\n            {\n                \"value\": \"1\",\n                \"key\": \"${job_script_type}\",\n                \"name\": \"type\"\n            },\n            {\n                \"value\": \"127.0.0.1\",\n                \"key\": \"${IP}\",\n                \"name\": \"IP\"\n            },\n            {\n                \"value\": \"0\",\n                \"key\": \"${EXIT}\",\n                \"name\": \"EXIT\"\n            }\n        ],\n        \"start_time\": \"2019-01-17 04:13:08\",\n        \"business_id\": 2,\n        \"create_time\": \"2019-01-17 04:13:03\",\n        \"business_name\": \"blueking\",\n        \"id\": 10,\n        \"constants\": {\n            \"${IP}\": {\n                \"source_tag\": \"var_ip_picker.ip_picker\",\n                \"source_info\": {},\n                \"name\": \"IP\",\n                \"index\": 2,\n                \"custom_type\": \"ip\",\n                \"value\": {\n                    \"var_ip_custom_value\": \"127.0.0.1\",\n                    \"var_ip_method\": \"custom\",\n                    \"var_ip_tree\": []\n                },\n                \"show_type\": \"show\",\n                \"source_type\": \"custom\",\n                \"validator\": [],\n                \"key\": \"${IP}\",\n                \"desc\": \"\",\n                \"validation\": \"\",\n                \"is_meta\": false\n            },\n            \"${job_script_type}\": {\n                \"source_tag\": \"job_fast_execute_script.job_script_type\",\n                \"source_info\": {\n                    \"node554316ea019a341f8c28cc6a7da9\": [\n                        \"job_script_type\"\n                    ]\n                },\n                \"name\": \"type\",\n                \"index\": 0,\n                \"custom_type\": \"\",\n                \"value\": \"1\",\n                \"show_type\": \"show\",\n                \"source_type\": \"component_inputs\",\n                \"key\": \"${job_script_type}\",\n                \"validation\": \"\",\n                \"desc\": \"\"\n            },\n            \"${EXIT}\": {\n                \"source_tag\": \"\",\n                \"source_info\": {},\n                \"name\": \"EXIT\",\n                \"index\": 1,\n                \"custom_type\": \"input\",\n                \"value\": \"0\",\n                \"show_type\": \"show\",\n                \"source_type\": \"custom\",\n                \"validator\": [],\n                \"key\": \"${EXIT}\",\n                \"validation\": \"^.+$\",\n                \"desc\": \"\"\n            }\n        },\n        \"create_method\": \"app\",\n        \"elapsed_time\": 7,\n        \"ex_data\": \"\",\n        \"instance_name\": \"job_20190117121300\",\n        \"end_time\": \"2019-01-17 04:13:15\",\n        \"executor\": \"admin\",\n        \"template_id\": \"266\",\n        \"task_url\": \"http://bk_sops_host/taskflow/execute/3/?instance_id=15364\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"node9b5ae13799d63e179f0ce3088b62\": {\n                    \"outgoing\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"incoming\": \"line490caa49d2a03e64829693281032\",\n                    \"name\": \"timing\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": false,\n                                \"value\": \"2\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": false,\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"loop\": null\n                },\n                \"node880ded556c6c3c269be3cedc64b6\": {\n                    \"outgoing\": \"line490caa49d2a03e64829693281032\",\n                    \"incoming\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"name\": \"暂停\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": true,\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"loop\": null\n                }\n            },\n            \"end_event\": {\n                \"type\": \"EmptyEndEvent\",\n                \"outgoing\": \"\",\n                \"incoming\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"line490caa49d2a03e64829693281032\": {\n                    \"is_default\": false,\n                    \"source\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"id\": \"line490caa49d2a03e64829693281032\",\n                    \"target\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                \"lineb83161d6e0593ad68d9ec73a961b\": {\n                    \"is_default\": false,\n                    \"source\": \"noded383bc1d7387391f889c6bab18b8\",\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                \"line27bc7b4ccbcf37ddb9d1f6572a04\": {\n                    \"is_default\": false,\n                    \"source\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"target\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line490caa49d2a03e64829693281032\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Left\"\n                    }\n                }\n            ],\n            \"start_event\": {\n                \"type\": \"EmptyStartEvent\",\n                \"outgoing\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                \"incoming\": \"\",\n                \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                \"name\": \"\"\n            },\n            \"id\": \"node7ef6970d06ad3bc092594cb5ec5f\",\n            \"constants\": {},\n            \"location\": [\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"暂停\",\n                    \"y\": 135,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 1000,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                },\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"timing\",\n                    \"y\": 135,\n                    \"x\": 595,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"noded383bc1d7387391f889c6bab18b8\"\n                }\n            ]\n        }\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n\n#### data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  id      |    int    |      the unique ID of task    |\n|  name    |    string    |      the name of task               |\n|  business_id      |  int       |  the business ID    |\n|  business_name    |  string    |  the business name   |\n|  template_id      |  int       |  the ID of flow used to create task  |\n|  create_time      |  string    |  datetime when this task created   |\n|  create_method    |  string    |  method how  this task created  |\n|  start_time       |  string    |  start time   |\n|  finish_time      |  string    |  finish time   |\n|  elapsed_time     |  int       |  elapsed time(seconds) |\n|  creator          |  string    |  person who created this task     |\n|  executor         |  string    |  person who executed this task     |\n|  constants        |  dict      |  global variables, details are described below |\n|  outputs          |  list      |  outputs info of this task，details are described below |\n|  task_url     |    str     |    task instance url     |\n|  pipeline_tree     |    dict     |    task pipeline tree     |\n\n#### data.constants.KEY\n\nKEY, the format is like ${key}\n\n\n#### data.constants.VALUE\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  key      |    string    |      same with KEY     |\n|  name      |    string    |     name    |\n|  index      |    int    |       display order at the front end   |\n|  desc      |    string    |     description   |\n|  source_type  | string   |      source of variable, custom mean manual variable, component_inputs means variables comes from task node inputs parameters, component_outputs means variables comes from task node outputs parameters   |\n|  custom_type  | string   |      custom type, which is not empty when source_type is custom,  the value is input ,or textarea, or datetime, or int |\n|  source_tag   | string   |      source tag and atom info, which is not empty when source_type is  component_inputs or component_outputs  |\n|  source_info | dict    |        source info about task node ID  |\n\n\n#### data.outputs[] \n| Field      | Type      | Description      |\n| ------------  | ---------- | ------------------------------ |\n|  name         | string     | name of output variable                   |\n|  value        | string、int、bool、dict、list | value  |\n|  key          | string     | KEY                   |\n|  preset       | bool       | where to display in Standard Plugins   |\n\n#### data.pipeline_tree\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      start node     |\n|  end_event      |    dict    |      end node    |\n|  activities      |    dict    |      task node（atoms or subprocess）info    |\n|  gateways      |    dict    |      gateways（parallel gateway、exclusive gateway、exclusive gateway）info    |\n|  flows      |    dict    |      sequenceFlow（the line between nodes）info    |\n|  constants      |    dict    |  global variables, details are described below    |\n|  outputs      |    list    |    outputs info, indicate outputs field of global  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_task_node_detail.md",
    "content": "### Functional description\n\nQuery a task node execution details\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description          |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string   |   YES   |  the business ID             |\n|   task_id     |   string   |   YES   |  the task ID   |\n|   node_id        | string     | YES         | the node ID of task                        |\n|   component_code| string     | NO         | the code of Standard Plugin, this field is required when query a Standard Plugin node |\n|   subprocess_stack| string   | NO         | stack of SubProcess, format is json  |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\",\n    \"node_id\": \"node0df0431f8f553925af01a94854bd\"\n    \"subprocess_stack\": \"[\\\"nodeaaa0ce51d2143aa9b0dbc27cb7df\\\"]\",\n    \"component_code\": \"job_fast_execute_script\",\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"message\": \"\",\n    \"data\": {\n        \"inputs\": {\n            \"job_account\": \"root\",\n            \"job_script_timeout\": \"\",\n            \"job_script_source\": \"manual\",\n            \"job_script_list_public\": \"\",\n            \"job_content\": \"echo 0\\nexit 0\",\n            \"job_script_type\": \"1\",\n            \"job_script_param\": \"\",\n            \"job_script_list_general\": \"\",\n            \"job_ip_list\": \"127.0.0.1\"\n        },\n        \"retry\": 0,\n        \"name\": \"<class \"pipeline.core.flow.activity.ServiceActivity\">\",\n        \"finish_time\": \"2019-01-17 22:02:46 +0800\",\n        \"skip\": false,\n        \"start_time\": \"2019-01-17 22:02:37 +0800\",\n        \"children\": {},\n        \"histories\": [],\n        \"ex_data\": null,\n        \"elapsed_time\": 9,\n        \"outputs\": [\n            {\n                \"value\": 407584,\n                \"name\": \"task ID\",\n                \"key\": \"job_inst_id\"\n            },\n            {\n                \"value\": \"\",\n                \"name\": \"link\",\n                \"key\": \"job_inst_url\"\n            },\n            {\n                \"value\": true,\n                \"name\": \"result\",\n                \"key\": \"_result\"\n            }\n        ],\n        \"state\": \"FINISHED\",\n        \"version\": \"23ac8c29f62b3337aafcf1f538d277f8\",\n        \"error_ignorable\": false,\n        \"id\": \"node0df0431f8f553925af01a94854bd\",\n        \"loop\": 1\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  id           | string     | the unique ID of node       |\n|  start_time   | string     | start time of last execution    |\n|  finish_time  | string     | finish time of last execution   |\n|  elapsed_time | int        | elapsed time of last execution  |\n|  state        | string     | execution status，CREATED,RUNNING,FAILED,NODE_SUSPENDED,SUSPENDED |\n|  skip         | bool       | skipped manually                   |\n|  retry        | int        | retry times                       |\n|  inputs       | dict       | inputs parameters, format is key：value      |\n|  outputs      | list       | outputs info of this node，details are described below    |\n|  ex_data      | string     | failure detail of this node，format is json or HTML、string |\n|  histories    | list       | retry records, details are described below   |\n\n#### data.outputs[]\n| Field      | Type      | Description      |\n| ------------  | ---------- | ------------------------------ |\n|  name         | string     | name of output variable                   |\n|  value        | string、int、bool、dict、list | value  |\n|  key          | string     | KEY                   |\n|  preset       | bool       | where to display in Standard Plugins   |\n\n\n#### data.histories[]\n|      名称     |     类型   |               说明             |\n| ------------  | ---------- | ------------------------------ |\n|  start_time   | string     | start time    |\n|  finish_time  | string     | finish time    |\n|  elapsed_time | int        | elapsed time   |\n|  state        | string     | execution status，CREATED,RUNNING,FAILED,NODE_SUSPENDED,SUSPENDED |\n|  skip         | bool       | skipped manually                   |\n|  retry        | int        | retry times                       |\n|  inputs       | dict       | inputs parameters, format is key：value      |\n|  outputs      | list       | outputs info of this node，details are described below    |\n|  ex_data      | string     | failure detail of this node，format is json or HTML、string |\n|  histories    | list       | retry records, details are described below   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_task_status.md",
    "content": "### Functional description\n\nQuery a task or task node execution status\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description            |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string   |   YES   |  the business ID             |\n|   task_id     |   string   |   YES   |  the task ID a task node ID  |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### Return Result Example\n\n```\n{\n\t\"result\": true,\n    \"data\": {\n\t\t\"retry\": 0,\n\t\t\"name\": \"<class 'pipeline.core.pipeline.Pipeline'>\",\n\t\t\"finish_time\": \"\",\n\t\t\"skip\": false,\n\t\t\"start_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\"children\": {\n\t\t\t\"62d4784e20483f1585149ce90ed954c9\": {\n\t\t\t\t\"retry\": 0,\n\t\t\t\t\"name\": \"<class 'pipeline.core.flow.event.EmptyStartEvent'>\",\n\t\t\t\t\"finish_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\t\t\"skip\": false,\n\t\t\t\t\"start_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\t\t\"children\": {},\n\t\t\t\t\"state\": \"FINISHED\",\n\t\t\t\t\"version\": \"7447cc2801b630f497768493c02fb488\",\n\t\t\t\t\"id\": \"62d4784e20483f1585149ce90ed954c9\",\n\t\t\t\t\"loop\": 1\n\t\t\t},\n\t\t\t\"e8b128dff46637368b9b1bd921abc14e\": {\n\t\t\t\t\"retry\": 0,\n\t\t\t\t\"name\": \"<class 'pipeline.core.flow.activity.ServiceActivity'>\",\n\t\t\t\t\"finish_time\": \"2018-04-26 16:08:46 +0800\",\n\t\t\t\t\"skip\": false,\n\t\t\t\t\"start_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\t\t\"children\": {},\n\t\t\t\t\"state\": \"FAILED\",\n\t\t\t\t\"version\": \"914d35fe7d143c2186e6d3532870b37d\",\n\t\t\t\t\"id\": \"e8b128dff46637368b9b1bd921abc14e\",\n\t\t\t\t\"loop\": 1\n\t\t\t}\n\t\t},\n\t\t\"state\": \"FAILED\",\n\t\t\"version\": \"\",\n\t\t\"id\": \"5a1622f9f43e3429acb604e18dbd100a\",\n\t\t\"loop\": 1\n\t}\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  state      |    string    |      status of the task or a task node, details are described below    |\n|  id         |    string    |      the unique ID of task or a task node       |\n|  skip       |    bool      |      skipped or not when the task node is failed    |\n|  retry      |    int       |      retry or skip times of a task node   |\n|  start_time |    string    |      start time   |\n|  finish_time|    string    |      finish time    |\n|  children   |    dict      |      task detail of children nodes, details are described below   |\n|  name   |    string      |      node name   |\n\n#### data.state\n\n| value    | Description      |\n|----------|-----------|\n| CREATED   | cerated but not executed   |  \n| RUNNING   | running   |\n| FAILED    | failed    |\n| SUSPENDED | suspended |\n| REVOKED   | revoked   |\n| FINISHED  | finished  |  \n\n#### data.children.KEY\nthe unique ID of a task node\n\n#### data.children.VALUE\nthe detail of a task node, the format is same with data\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_template_info.md",
    "content": "### Functional description\n\nQuery individual flow template details of the business\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description          |\n|---------------|------------|--------|---------------|\n| bk_biz_id     | string     |   YES   |  the business ID   |\n| template_id   | string     |   YES   |  the task ID       |\n|   template_source | string   | NO    | source of flow，default value is business. business: from business, common: from common flow |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"1\",\n    \"template_id\": \"30\",\n    \"template_source\": \"business\",\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"result\": true,\n    \"data\": {\n        \"category\": \"Other\",\n        \"edit_time\": \"2018-04-27 16:24:24 +0800\",\n        \"create_time\": \"2018-04-16 21:43:15 +0800\",\n        \"name\": \"new20180416213944\",\n        \"bk_biz_id\": \"2\",\n        \"creator\": \"admin\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"631b6576cc5dfbdcaa4f510ce88a7e67\": {\n                    \"outgoing\": \"44ab36ebf4cf119edaf2d20401da87e4\",\n                    \"incoming\": \"fb2f3a8b533ca5c67e2440b4164f7632\",\n                    \"name\": \"node_1\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"job_fast_execute_script\",\n                        \"data\": {\n                            \"account\": {\n                                \"hook\": false,\n                                \"value\": \"root\"\n                            },\n                            \"ip_list\": {\n                                \"hook\": false,\n                                \"value\": \"127.0.0.1\"\n                            },\n                            \"script_timeout\": {\n                                \"hook\": true,\n                                \"value\": \"${script_timeout}\"\n                            },\n                            \"content\": {\n                                \"hook\": false,\n                                \"value\": \"${content}\"\n                            },\n                            \"script_param\": {\n                                \"hook\": false,\n                                \"value\": \"${params}\"\n                            },\n                            \"script_type\": {\n                                \"hook\": true,\n                                \"value\": \"${script_type}\"\n                            }\n                        }\n                    },\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"631b6576cc5dfbdcaa4f510ce88a7e67\",\n                    \"loop\": null\n                }\n            },\n            \"end_event\": {\n                \"type\": \"EmptyEndEvent\",\n                \"outgoing\": \"\",\n                \"incoming\": \"44ab36ebf4cf119edaf2d20401da87e4\",\n                \"id\": \"60c81e383d048d8a3c574d3436e1b82c\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"fb2f3a8b533ca5c67e2440b4164f7632\": {\n                    \"is_default\": false,\n                    \"source\": \"48afea1016ab70ee37179fa0eb1e1a14\",\n                    \"id\": \"fb2f3a8b533ca5c67e2440b4164f7632\",\n                    \"target\": \"631b6576cc5dfbdcaa4f510ce88a7e67\"\n                },\n                \"44ab36ebf4cf119edaf2d20401da87e4\": {\n                    \"is_default\": false,\n                    \"source\": \"631b6576cc5dfbdcaa4f510ce88a7e67\",\n                    \"id\": \"44ab36ebf4cf119edaf2d20401da87e4\",\n                    \"target\": \"60c81e383d048d8a3c574d3436e1b82c\"\n                }\n            },\n            \"start_event\": {\n                \"type\": \"EmptyStartEvent\",\n                \"outgoing\": \"fb2f3a8b533ca5c67e2440b4164f7632\",\n                \"incoming\": \"\",\n                \"id\": \"48afea1016ab70ee37179fa0eb1e1a14\",\n                \"name\": \"\"\n            },\n            \"constants\": {\n                \"${script_type}\": {\n                    \"source_tag\": \"job_fast_execute_script.script_type\",\n                    \"source_info\": {\n                        \"631b6576cc5dfbdcaa4f510ce88a7e67\": [\n                            \"script_type\"\n                        ]\n                    },\n                    \"name\": \"script_type\",\n                    \"index\": 0,\n                    \"custom_type\": \"radio\",\n                    \"value\": \"4\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${script_type}\",\n                    \"validation\": \"^.*$\",\n                    \"desc\": \"\"\n                },\n                \"${content}\": {\n                    \"source_tag\": \"\",\n                    \"source_info\": {},\n                    \"name\": \"content\",\n                    \"index\": 2,\n                    \"custom_type\": \"textarea\",\n                    \"value\": \"\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"custom\",\n                    \"key\": \"${content}\",\n                    \"desc\": \"\"\n                },\n                \"${script_timeout}\": {\n                    \"source_tag\": \"job_fast_execute_script.script_timeout\",\n                    \"source_info\": {\n                        \"631b6576cc5dfbdcaa4f510ce88a7e67\": [\n                            \"script_timeout\"\n                        ]\n                    },\n                    \"name\": \"script_timeout\",\n                    \"index\": 1,\n                    \"custom_type\": \"input\",\n                    \"value\": \"\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${script_timeout}\",\n                    \"validation\": \"^.*$\",\n                    \"desc\": \"\"\n                },\n                \"${params}\": {\n                    \"source_tag\": \"\",\n                    \"source_info\": {},\n                    \"name\": \"params\",\n                    \"index\": 3,\n                    \"custom_type\": \"input\",\n                    \"value\": \"\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"custom\",\n                    \"key\": \"${params}\",\n                    \"desc\": \"\"\n                }\n            },\n            \"gateways\": {}\n        },\n        \"bk_biz_name\": \"blueking\",\n        \"id\": 30,\n        \"editor\": \"admin\"\n    },\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  bk_biz_id     |    string    |      the business ID      |\n|  bk_biz_name   |    string    |      the business name    |\n|  id            |    int       |      flow template ID             |\n|  name          |    string    |      flow template name            |\n|  category      |    string    |      flow type，the value is described below    |\n|  creator       |    string    |      person who created this flow template      |\n|  create_time   |    string    |      datetime when this flow template created   |\n|  editor        |    string or null | person who edited this flow template last |\n|  edit_time     |    string    |      datetime when this flow template edited          |\n|  pipeline_tree |    dict      |      template tree info, details are described below    |\n\n#### data.category\n\n| Value        | Description     |\n|--------------|----------|\n| OpsTools     | operation tools  |\n| MonitorAlarm | monitor alarm  |\n| ConfManage   | configuration management  |\n| DevTools     | development tools  |\n| EnterpriseIT | enterprise IT   |\n| OfficeApp    | official APPs  |\n| Other        | other     |\n\n#### data.pipeline_tree\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      start node     |\n|  end_event      |    dict    |      end node    |\n|  activities      |    dict    |      task node（atoms or subprocess）info    |\n|  gateways      |    dict    |      gateways（parallel gateway、exclusive gateway、exclusive gateway）info    |\n|  flows      |    dict    |      sequenceFlow（the line between nodes）info    |\n|  constants      |    dict    |  global variables, details are described below    |\n|  outputs      |    list    |    outputs info, indicate outputs field of global variables|\n\n#### data.pipeline_tree.constants.KEY\n\nKEY, the format is like ${key}\n\n#### data.pipeline_tree.constants.VALUE\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  key      |    string    |      same with KEY     |\n|  name      |    string    |     name    |\n|  index      |    int    |       display order at the front end   |\n|  desc      |    string    |     description   |\n|  source_type  | string   |      source of variable, custom mean manual variable, component_inputs means variables comes from task node inputs parameters, component_outputs means variables comes from task node outputs parameters   |\n|  custom_type  | string   |      custom type, which is not empty when source_type is custom,  the value is input ,or textarea, or datetime, or int |\n|  source_tag   | string   |      source tag and atom info, which is not empty when source_type is  component_inputs or component_outputs  |\n|  source_info | dict    |        source info about task node ID  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/get_template_list.md",
    "content": "### Functional description\n\nQuery flow templates list of the business\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|-------------------|\n| bk_biz_id     |  string    | YES     | the business ID     |\n|   template_source | string   | NO    | source of flow，default value is business. business: from business, common: from common flow |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"template_source\": \"business\",\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"result\": true,\n    \"data\": [\n        {\n            \"category\": \"Other\",\n            \"edit_time\": \"2018-04-23 17:30:48 +0800\",\n            \"create_time\": \"2018-04-23 17:26:40 +0800\",\n            \"name\": \"new111\",\n            \"bk_biz_id\": \"2\",\n            \"creator\": \"admin\",\n            \"bk_biz_name\": \"blueking\",\n            \"id\": 32,\n            \"editor\": \"admin\"\n        },\n        {\n            \"category\": \"Other\",\n            \"edit_time\": \"2018-04-19 12:04:42 +0800\",\n            \"create_time\": \"2018-04-19 12:04:42 +0800\",\n            \"name\": \"new201804191218\",\n            \"bk_biz_id\": \"2\",\n            \"creator\": \"admin\",\n            \"bk_biz_name\": \"blueking\",\n            \"id\": 31,\n            \"editor\": null\n        },\n        {\n            \"category\": \"Other\",\n            \"edit_time\": \"2018-04-18 17:09:39 +0800\",\n            \"create_time\": \"2018-04-16 21:43:15 +0800\",\n            \"name\": \"new20180416213944\",\n            \"bk_biz_id\": \"2\",\n            \"creator\": \"admin\",\n            \"bk_biz_name\": \"blueking\",\n            \"id\": 30,\n            \"editor\": \"admin\"\n        },\n    ]\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  bk_biz_id     |    string    |      the business ID      |\n|  bk_biz_name   |    string    |      the business name    |\n|  id            |    int       |      flow template ID             |\n|  name          |    string    |      flow template name            |\n|  category      |    string    |      template type，the value is described below    |\n|  creator       |    string    |      person who created this flow template      |\n|  create_time   |    string    |      datetime when this flow template created   |\n|  editor        |    string or null | person who edited this flow template last |\n|  edit_time     |    string    |      datetime when this flow template edited          |\n\n#### data.category\n\n| Value        | Description     |\n|--------------|----------|\n| OpsTools     | operation tools  |\n| MonitorAlarm | monitor alarm  |\n| ConfManage   | configuration management  |\n| DevTools     | development tools  |\n| EnterpriseIT | enterprise IT   |\n| OfficeApp    | official APPs  |\n| Other        | other     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/import_common_template.md",
    "content": "### Functional description\n\nimport common flow template\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n| ------------ | ------------ | ------ | ---------------- |\n|   template_data    |   string     |   YES   |  flow data, the content of file which download from bk-sops - common templates - export |\n|   override        | bool     | NO         | whether to override flows which has same ID           |           |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"template_data\": \"xxx\",\n    \"override\": true,\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"message\": \"Successfully imported 2 common flows\",\n    \"data\": {\n        \"count\": 2\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n| ------------  | ---------- | ------------------------------ |\n|  result   |    bool    |      true or false, indicate success or failure   |\n|  message  |    string  |      error message returned when result is false  |\n|  data         | dict        |    return data                |\n\n#### data\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  count      |    int    |       the number of flows had been imported    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/modify_constants_for_periodic_task.md",
    "content": "### Functional description\n\nmodify global parameters for periodic task\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   YES   |  task ID |\n|   bk_biz_id    |   string     |   YES   |  business ID |\n|   constants    |   dict       |   NO    |  global variables，details are described below |\n\n#### constants.KEY\n\nconstant KEY, the format is like ${key}\n\n#### constants.VALUE\n\nconstant value\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\",\n    \"constants\": {\"${bk_timing}\": \"100\"},\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"data\": {\n        \"${bk_timing}\": {\n            \"source_tag\": \"sleep_timer.bk_timing\",\n            \"source_info\": {\n                \"node76393dcfedcf73dbc726f1c4786d\": [\n                    \"bk_timing\"\n                ]\n            },\n            \"name\": \"time\",\n            \"custom_type\": \"\",\n            \"index\": 0,\n            \"value\": \"15\",\n            \"show_type\": \"show\",\n            \"source_type\": \"component_inputs\",\n            \"key\": \"${bk_timing}\",\n            \"validation\": \"\",\n            \"desc\": \"\"\n        }\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data.KEY\n\nKEY, the format is like ${key}\n\n#### data.VALUE\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  key      |    string    |      same with KEY     |\n|  name      |    string    |     name    |\n|  index      |    int    |       display order at the front end   |\n|  desc      |    string    |     description   |\n|  source_type  | string   |      source of variable, custom mean manual variable, component_inputs means variables comes from task node inputs parameters, component_outputs means variables comes from task node outputs parameters   |\n|  custom_type  | string   |      custom type, which is not empty when source_type is custom,  the value is input ,or textarea, or datetime, or int |\n|  source_tag   | string   |      source tag and atom info, which is not empty when source_type is  component_inputs or component_outputs  |\n|  source_info | dict    |        source info about task node ID  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/modify_cron_for_periodic_task.md",
    "content": "### Functional description\n\nmodify crontab for periodic task\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   YES   |  task ID |\n|   bk_biz_id    |   string     |   YES   |  business ID |\n|   cron    |   dict     |   YES   |  crontab dict |\n\n#### cron\n \n | Field          |  Type       | Required   |  Description             |\n| ------------ | ------------ | ------ | ---------------- |\n|   minute    |   string     |   NO   |  minute, default value is * |\n|   hour    |   string     |   NO   |  hour, default value is * |\n|   day_of_week    |   string     |   NO   |  day of week, default value is * |\n|   day_of_month    |   string     |   NO   |  day of month, default value is * |\n|   month_of_year    |   string     |   NO   |  month of year, default value is * |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\",\n    \"cron\" : {\"minute\": \"*/1\", \"hour\": \"15\", \"day_of_week\":\"*\", \"day_of_month\":\"*\", \"month_of_year\":\"*\"},\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"data\": {\n        \"cron\": \"*/1 15 * * * (m/h/d/dM/MY)\"\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      crontab expression    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/node_callback.md",
    "content": "### Functional description\n\ncallback specific node\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n| ------------ | ------------ | ------ | ---------------- |\n|   bk_biz_id    |   string     |   YES   |  the business ID |\n|   task_id     |   string   |   YES   |  the task ID     |\n|   node_id        | string     | YES         | node id                        |\n|   callback_data        | dict     | NO         | callback data          |           |\n\n### Request Parameters Example\n\n```\nimport requests\nkwargs = {\n    \"app_code\": \"app_code\",\n    \"app_secret\": \"app_secret\",\n    \"access_token\": \"access_token\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\",\n    \"node_id\": \"node0df0431f8f553925af01a94854bd\",\n    \"callback_data\": {\"data\": \"data\"},\n}\nresponse = requests.get(\"http://{stageVariables.domain}/apigw/node_callback/10/2/\", kwargs)\nresult = response.json()\n```\n\n### Return Result Example\n\n```\n{\n    \"message\": \"success\",\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n| ------------  | ---------- | ------------------------------ |\n|  result   |    bool    |      true or false, indicate success or failure   |\n|  message  |    string  |      error message returned when result is false  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/operate_task.md",
    "content": "### Functional description\n\nTask actions such as start, pause, resume, revoke, etc.\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string     |   YES   |  the business ID |\n|   task_id     |   string     |   YES   |  the task ID     |\n|   action      |   string     |   YES   |  action type, the value is described below |\n\n#### action\n\n| Value        | Description     |\n|-----------|----------|\n| start     | start a task, which is same with calling API[start_task] |\n| pause     | suspended a running task  |\n| resume    | resume a suspended task   |\n| revoke    | revoke a task, task revoked could not be operated again |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"action\": \"start\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"result\": true,\n    \"data\": {}\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure   |\n|  data     |    dict    |      data returned when result is true            |\n|  message  |    string  |      error message returned when result is false  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/query_task_count.md",
    "content": "### Functional description\n\nQuery task instance classification statistics\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field         |  Type      | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   YES   |  the business ID |\n|   group_by     |   string     |   YES   |  classified statistical dimension, status：Statistics by task status(Created、Executing、Finished), category：Statistics by task type, flow_type：Statistics by flow type, create_method：Statistics by creation method |\n|   conditions     |   dict     |   NO   |  task filter |\n\n#### conditions\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  template_id      |    string    |      the template id    |\n|  name      |    string    |      the task name   |\n|  creator      |    string    |      creator    |\n|  create_time__gte      |    string    |      task creation time start time   |\n|  create_time__lte      |    string    |      task creation time end time   |\n|  executor      |    string    |      executor    |\n|  start_time__gte      |    string   |      task execution time start time  |\n|  start_time__lte      |    string   |      task execution time end time  |\n|  is_started      |    bool   |      whether the task started  |\n|  is_finished      |    bool   |      whether the task finished  |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"conditions\": {\n        \"create_time__lte\": \"2018-07-12 10:00:00\",\n        \"is_started\": true\n    },\n    \"group_by\": \"flow_type\"\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"data\": {\n        \"total\": 180,\n        \"groups\": [\n            {\n                \"code\": \"common\",\n                \"name\": \"\",\n                \"value\": 166\n            },\n            {\n                \"code\": \"common_func\",\n                \"name\": \"\",\n                \"value\": 14\n            }\n        ]\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result      | bool    |      true/false indicate success or failure     |\n|  data     |    dict    |      data returned when result is true, details are described below |\n|  message  |    string  |      error message returned when result is false|\n\n#### data\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  total      |    int    |      total number of tasks obtained by filter criteria    |\n|  groups     |    list   |      sort statistic details by filter criteria   |\n\n#### data.groups[]\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  code      |    string    |      classification statistic type coding    |\n|  name      |    string    |      classification statistic type name    |\n|  value     |    string    |      current number of classified tasks    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/set_periodic_task_enabled.md",
    "content": "### Functional description\n\nmodify task activation status\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   YES   |  task ID |\n|   bk_biz_id    |   string     |   YES   |  business ID |\n|   enabled    |   bool     |   NO   | whether the task is activate, default value is false |\n\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\",\n    \"enabled\": false\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"data\": {\n        \"enabled\": false\n    },\n    \"result\": true\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure                      |\n|  data     |    dict    |      data returned when result is true, details are described below  |\n|  message  |    string  |      error message returned when result is false                     |\n\n#### data\n\n| Field      | Type      | Description      |\n| ------------ | ---------- | ------------------------------ |\n|  enabled      |    bool    |      whether the task is activate    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/en/start_task.md",
    "content": "### Functional description\n\nStart a task\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field          |  Type       | Required   |  Description  |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string     |   YES   |  the business ID |\n|   task_id     |   string     |   YES   |  the task ID     |\n\n### Request Parameters Example\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### Return Result Example\n\n```\n{\n    \"result\": true,\n    \"data\": {}\n}\n```\n\n### Return Result Description\n\n| Field      | Type      | Description      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true or false, indicate success or failure   |\n|  data     |    dict    |      data returned when result is true            |\n|  message  |    string  |      error message returned when result is false  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/create_periodic_task.md",
    "content": "### 功能描述\n\n创建周期任务\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   template_id    |   string     |   是   |  用于创建任务的模板ID |\n|   bk_biz_id    |   string     |   是   |  任务所属业务ID |\n|   name    |   string     |   是   |  要创建的周期任务名称 |\n|   cron    |   dict     |   是   |  要创建的周期任务调度策略 |\n|   constants    |   dict     |   否   | 任务全局参数，详细信息见下面说明 |\n|   exclude_task_nodes_id    |   list     |   否   |  跳过执行的节点ID列表 |\n\n#### constants.KEY\n\n变量 KEY，${key} 格式\n\n#### constants.VALUE\n\n变量值\n\n#### cron\n \n |   参数名称   |    参数类型  |  必须  |     参数说明     |\n| ------------ | ------------ | ------ | ---------------- |\n|   minute    |   string     |   否   |  分，默认为 * |\n|   hour    |   string     |   否   |  时，默认为 * |\n|   day_of_week    |   string     |   否   |  一周内的某些天，默认为 * |\n|   day_of_month    |   string     |   否   |  一个月中的某些天，默认为 * |\n|   month_of_year    |   string     |   否   |  一年中的某些月份，默认为 * |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"template_id\": \"1\",\n    \"bk_biz_id\": \"2\",\n\t\"name\": \"from api 3\",\n\t\"cron\" : {\"minute\": \"*/1\", \"hour\": \"15\", \"day_of_week\":\"*\", \"day_of_month\":\"*\", \"month_of_year\":\"*\"},\n\t\"constants\": {\"${bk_timing}\": \"100\"},\n\t\"exclude_task_nodes_id\": [\"nodea5c396a3ef0f9f3cd7d4d7695f78\"]\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"message\": \"\",\n    \"data\": {\n        \"cron\": \"*/1 15 * * * (m/h/d/dM/MY)\",\n        \"total_run_count\": 0,\n        \"name\": \"from api 3\",\n        \"form\": {\n            \"${bk_timing}\": {\n                \"source_tag\": \"sleep_timer.bk_timing\",\n                \"source_info\": {\n                    \"node76393dcfedcf73dbc726f1c4786d\": [\n                        \"bk_timing\"\n                    ]\n                },\n                \"name\": \"定时时间\",\n                \"index\": 0,\n                \"custom_type\": \"\",\n                \"value\": \"100\",\n                \"show_type\": \"show\",\n                \"source_type\": \"component_inputs\",\n                \"key\": \"${bk_timing}\",\n                \"validation\": \"\",\n                \"desc\": \"\"\n            }\n        },\n        \"creator\": \"admin\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"node76393dcfedcf73dbc726f1c4786d\": {\n                    \"outgoing\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"incoming\": \"linecd597f19606c1455d661f71a582d\",\n                    \"name\": \"定时\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": true,\n                                \"value\": \"${bk_timing}\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"loop\": {}\n                }\n            },\n            \"end_event\": {\n                \"incoming\": \"linecf7b7f10c87187a88b72c5f91177\",\n                \"outgoing\": \"\",\n                \"type\": \"EmptyEndEvent\",\n                \"id\": \"node375320830be9c46cd89f4069857d\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"linecd597f19606c1455d661f71a582d\": {\n                    \"is_default\": false,\n                    \"source\": \"node4e87796ddd76b0d59337b08f385d\",\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": \"node76393dcfedcf73dbc726f1c4786d\"\n                },\n                \"linecf7b7f10c87187a88b72c5f91177\": {\n                    \"is_default\": false,\n                    \"source\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"target\": \"node375320830be9c46cd89f4069857d\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Left\"\n                    }\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node375320830be9c46cd89f4069857d\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\"\n                }\n            ],\n            \"start_event\": {\n                \"incoming\": \"\",\n                \"outgoing\": \"linecd597f19606c1455d661f71a582d\",\n                \"type\": \"EmptyStartEvent\",\n                \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                \"name\": \"\"\n            },\n            \"constants\": {\n                \"${bk_timing}\": {\n                    \"source_tag\": \"sleep_timer.bk_timing\",\n                    \"source_info\": {\n                        \"node76393dcfedcf73dbc726f1c4786d\": [\n                            \"bk_timing\"\n                        ]\n                    },\n                    \"name\": \"定时时间\",\n                    \"index\": 0,\n                    \"custom_type\": \"\",\n                    \"value\": \"100\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${bk_timing}\",\n                    \"validation\": \"\",\n                    \"desc\": \"\"\n                }\n            },\n            \"location\": [\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"node4e87796ddd76b0d59337b08f385d\"\n                },\n                {\n                    \"y\": 149,\n                    \"x\": 1092,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node375320830be9c46cd89f4069857d\"\n                },\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"定时\",\n                    \"y\": 133,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\"\n                }\n            ]\n        },\n        \"last_run_at\": \"\",\n        \"enabled\": false,\n        \"id\": 11,\n        \"template_id\": 2\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict      |      result=true 时成功数据，详细信息请见下面说明     |\n|  message        |    string      |      result=false 时错误信息     |\n\n#### data\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      周期调度表达式    |\n|  total_run_count      |    int    |    周期任务运行次数   |\n|  name      |    string    |    周期任务名   |\n|  creator      |    string    |    创建者   |\n|  last_run_at      |    string    |    上次运行时间   |\n|  enabled      |    bool    |    是否激活   |\n|  id      |    int    |    周期任务 ID   |\n|  template_id      |    string    |    用于创建该任务的模板 ID   |\n|  form      |    dict    |    该周期任务的参数表单对象   |\n|  pipeline_tree      |    dict    |    该周期任务的实例树   |\n\n#### data.pipeline_tree\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  start_event      |    dict    |      开始节点信息     |\n|  end_event      |    dict    |      结束节点信息    |\n|  activities      |    dict    |      任务节点（原子和子流程）信息    |\n|  gateways      |    dict    |      网关节点（并行网关、分支网关和汇聚网关）信息    |\n|  flows      |    dict    |     顺序流（节点连线）信息    |\n|  constants      |    dict    |  全局变量信息，详情见下面    |\n|  outputs      |    list    |  模板输出信息，标记 constants 中的输出字段    |\n\n#### data.form.KEY, data.pipeline_tree.constants.KEY\n\n全局变量 KEY，${key} 格式\n\n#### data.form.VALUE, data.pipeline_tree.constants.VALUE\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  key      |    string    |      同 KEY     |\n|  name      |    string    |      变量名字    |\n|  index      |    int    |      变量在模板中的显示顺序    |\n|  desc      |    string    |      变量说明   |\n|  source_type      |    string    |      变量来源, 取值范围 custom: 自定义变量，component_inputs: 从原子输入参数勾选，component_outputs：从原子输出结果中勾选   |\n|  custom_type      |    string    |      source_type=custom 时有效，自定义变量类型， 取值范围 input: 输入框，textarea: 文本框，datetime: 日期时间，int: 整数|\n|  source_tag      |    string    |      source_type=component_inputs/component_outputs 时有效，变量的来源原子   |\n|  source_info   |   dict  |  source_type=component_inputs/component_outputs 时有效，变量的来源节点信息 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/create_task.md",
    "content": "### 功能描述\n\n通过流程模板创建任务\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   是   |  模板所属业务ID |\n|   template_id     |   string     |   是   |  模板ID |\n|   template_source | string   | 否         | 流程模板来源，business:默认值，业务流程，common：公共流程 |\n|   name     |   string     |   是   |  任务名称 |\n|   flow_type     |   string     |   否   |  任务流程类型，common: 常规流程，common_func：职能化流程 |\n|   constants     |   dict     |   否   |  任务全局参数，详细信息见下面说明 |\n|   exclude_task_nodes_id | list |   否   |  跳过执行的节点ID列表 |\n\n#### constants.KEY\n\n变量 KEY，${key} 格式\n\n#### constants.VALUE\n\n变量值，value 的类型和从模板获取的全局变量中 value 类型保持一致\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"name\": \"tasktest\",\n    \"flow_type\": \"common\",\n    \"constants\": {\n        \"${content}: \"echo 1\",\n        \"${params}\": \"\",\n        \"${script_timeout}\": 20\n    }\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"result\": true,\n    \"data\": {\n        \"task_id\": 10,\n        \"task_url\": \"http://bk_sops_host/taskflow/execute/3/?instance_id=15364\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"node9b5ae13799d63e179f0ce3088b62\": {\n                    \"outgoing\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"incoming\": \"line490caa49d2a03e64829693281032\",\n                    \"name\": \"timing\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": false,\n                                \"value\": \"2\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": false,\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"loop\": null\n                },\n                \"node880ded556c6c3c269be3cedc64b6\": {\n                    \"outgoing\": \"line490caa49d2a03e64829693281032\",\n                    \"incoming\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"name\": \"暂停\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": true,\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"loop\": null\n                }\n            },\n            \"end_event\": {\n                \"type\": \"EmptyEndEvent\",\n                \"outgoing\": \"\",\n                \"incoming\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"line490caa49d2a03e64829693281032\": {\n                    \"is_default\": false,\n                    \"source\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"id\": \"line490caa49d2a03e64829693281032\",\n                    \"target\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                \"lineb83161d6e0593ad68d9ec73a961b\": {\n                    \"is_default\": false,\n                    \"source\": \"noded383bc1d7387391f889c6bab18b8\",\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                \"line27bc7b4ccbcf37ddb9d1f6572a04\": {\n                    \"is_default\": false,\n                    \"source\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"target\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line490caa49d2a03e64829693281032\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Left\"\n                    }\n                }\n            ],\n            \"start_event\": {\n                \"type\": \"EmptyStartEvent\",\n                \"outgoing\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                \"incoming\": \"\",\n                \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                \"name\": \"\"\n            },\n            \"id\": \"node7ef6970d06ad3bc092594cb5ec5f\",\n            \"constants\": {},\n            \"location\": [\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"暂停\",\n                    \"y\": 135,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 1000,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                },\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"timing\",\n                    \"y\": 135,\n                    \"x\": 595,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"noded383bc1d7387391f889c6bab18b8\"\n                }\n            ]\n        }\n    }\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict  |      result=true 时成功数据，详细信息请见下面说明      |\n|  message     |    string  |      result=false 时错误信息     |\n\n####  data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  task_id      |    int    |      任务实例ID     |\n|  task_url     |    str     |    任务实例链接     |\n|  pipeline_tree     |    dict     |    任务实例树     |\n\n#### data.pipeline_tree\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      开始节点信息     |\n|  end_event      |    dict    |      结束节点信息    |\n|  activities      |    dict    |      任务节点（原子和子流程）信息    |\n|  gateways      |    dict    |      网关节点（并行网关、分支网关和汇聚网关）信息    |\n|  flows      |    dict    |     顺序流（节点连线）信息    |\n|  constants      |    dict    |  全局变量信息，详情见下面    |\n|  outputs      |    list    |  模板输出信息，标记 constants 中的输出字段    |\n\n#### data.pipeline_tree.constants.KEY\n\n全局变量 KEY，${key} 格式\n\n#### data.pipeline_tree.constants.VALUE\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  key      |    string    |      同 KEY     |\n|  name      |    string    |      变量名字    |\n|  index      |    int    |      变量在模板中的显示顺序    |\n|  desc      |    string    |      变量说明   |\n|  source_type      |    string    |      变量来源, 取值范围 custom: 自定义变量，component_inputs: 从原子输入参数勾选，component_outputs：从原子输出结果中勾选   |\n|  custom_type      |    string    |      source_type=custom 时有效，自定义变量类型， 取值范围 input: 输入框，textarea: 文本框，datetime: 日期时间，int: 整数|\n|  source_tag      |    string    |      source_type=component_inputs/component_outputs 时有效，变量的来源原子   |\n|  source_info   |   dict  |  source_type=component_inputs/component_outputs 时有效，变量的来源节点信息 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_periodic_task_info.md",
    "content": "### 功能描述\n\n查询某个周期任务的详情\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   是   |  周期任务ID |\n|   bk_biz_id    |   string     |   是   |  模板所属业务ID |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"message\": \"\",\n    \"data\": {\n        \"cron\": \"1,2,3-19/2 2 3 4 5 (m/h/d/dM/MY)\",\n        \"total_run_count\": 0,\n        \"name\": \"定时2\",\n        \"form\": {\n            \"${bk_timing}\": {\n                \"source_tag\": \"sleep_timer.bk_timing\",\n                \"source_info\": {\n                    \"node76393dcfedcf73dbc726f1c4786d\": [\n                        \"bk_timing\"\n                    ]\n                },\n                \"name\": \"定时时间\",\n                \"index\": 0,\n                \"custom_type\": \"\",\n                \"value\": \"2\",\n                \"show_type\": \"show\",\n                \"source_type\": \"component_inputs\",\n                \"key\": \"${bk_timing}\",\n                \"validation\": \"\",\n                \"desc\": \"\"\n            }\n        },\n        \"creator\": \"admin\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"nodea5c396a3ef0f9f3cd7d4d7695f78\": {\n                    \"outgoing\": \"linef69b59d165fb8c0061b46588c515\",\n                    \"incoming\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"name\": \"暂停\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                    \"loop\": {}\n                },\n                \"node76393dcfedcf73dbc726f1c4786d\": {\n                    \"outgoing\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"incoming\": \"linecd597f19606c1455d661f71a582d\",\n                    \"name\": \"定时\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": true,\n                                \"value\": \"${bk_timing}\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"loop\": {}\n                }\n            },\n            \"end_event\": {\n                \"incoming\": \"linef69b59d165fb8c0061b46588c515\",\n                \"outgoing\": \"\",\n                \"type\": \"EmptyEndEvent\",\n                \"id\": \"node375320830be9c46cd89f4069857d\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"linef69b59d165fb8c0061b46588c515\": {\n                    \"is_default\": false,\n                    \"source\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                    \"id\": \"linef69b59d165fb8c0061b46588c515\",\n                    \"target\": \"node375320830be9c46cd89f4069857d\"\n                },\n                \"linecd597f19606c1455d661f71a582d\": {\n                    \"is_default\": false,\n                    \"source\": \"node4e87796ddd76b0d59337b08f385d\",\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": \"node76393dcfedcf73dbc726f1c4786d\"\n                },\n                \"linecf7b7f10c87187a88b72c5f91177\": {\n                    \"is_default\": false,\n                    \"source\": \"node76393dcfedcf73dbc726f1c4786d\",\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\",\n                    \"target\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node375320830be9c46cd89f4069857d\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linef69b59d165fb8c0061b46588c515\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"linecd597f19606c1455d661f71a582d\",\n                    \"target\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Left\"\n                    }\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node76393dcfedcf73dbc726f1c4786d\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"linecf7b7f10c87187a88b72c5f91177\"\n                }\n            ],\n            \"start_event\": {\n                \"incoming\": \"\",\n                \"outgoing\": \"linecd597f19606c1455d661f71a582d\",\n                \"type\": \"EmptyStartEvent\",\n                \"id\": \"node4e87796ddd76b0d59337b08f385d\",\n                \"name\": \"\"\n            },\n            \"constants\": {\n                \"${bk_timing}\": {\n                    \"source_tag\": \"sleep_timer.bk_timing\",\n                    \"source_info\": {\n                        \"node76393dcfedcf73dbc726f1c4786d\": [\n                            \"bk_timing\"\n                        ]\n                    },\n                    \"name\": \"定时时间\",\n                    \"index\": 0,\n                    \"custom_type\": \"\",\n                    \"value\": \"2\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${bk_timing}\",\n                    \"validation\": \"\",\n                    \"desc\": \"\"\n                }\n            },\n            \"location\": [\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"暂停\",\n                    \"y\": 133,\n                    \"x\": 631,\n                    \"type\": \"tasknode\",\n                    \"id\": \"nodea5c396a3ef0f9f3cd7d4d7695f78\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"node4e87796ddd76b0d59337b08f385d\"\n                },\n                {\n                    \"y\": 149,\n                    \"x\": 1092,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node375320830be9c46cd89f4069857d\"\n                },\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"定时\",\n                    \"y\": 133,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node76393dcfedcf73dbc726f1c4786d\"\n                }\n            ]\n        },\n        \"last_run_at\": \"\",\n        \"enabled\": true,\n        \"id\": 5,\n        \"template_id\": \"2\"\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict      |      result=true 时成功数据，详细信息请见下面说明     |\n|  message        |    string      |      result=false 时错误信息     |\n\n#### data\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      周期调度表达式    |\n|  total_run_count      |    int    |    周期任务运行次数   |\n|  name      |    string    |    周期任务名   |\n|  creator      |    string    |    创建者   |\n|  last_run_at      |    string    |    上次运行时间   |\n|  enabled      |    bool    |    是否激活   |\n|  id      |    int    |    周期任务 ID   |\n|  template_id      |    string    |    用于创建该任务的模板 ID   |\n|  form      |    dict    |    该周期任务的参数表单对象   |\n|  pipeline_tree      |    dict    |    该周期任务的实例树   |\n\n#### data.pipeline_tree\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  start_event      |    dict    |      开始节点信息     |\n|  end_event      |    dict    |      结束节点信息    |\n|  activities      |    dict    |      任务节点（原子和子流程）信息    |\n|  gateways      |    dict    |      网关节点（并行网关、分支网关和汇聚网关）信息    |\n|  flows      |    dict    |     顺序流（节点连线）信息    |\n|  constants      |    dict    |  全局变量信息，详情见下面    |\n|  outputs      |    list    |  模板输出信息，标记 constants 中的输出字段    |\n\n#### data.form.KEY, data.pipeline_tree.constants.KEY\n\n全局变量 KEY，${key} 格式\n\n#### data.form.VALUE, data.pipeline_tree.constants.VALUE\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  key      |    string    |      同 KEY     |\n|  name      |    string    |      变量名字    |\n|  index      |    int    |      变量在模板中的显示顺序    |\n|  desc      |    string    |      变量说明   |\n|  source_type      |    string    |      变量来源, 取值范围 custom: 自定义变量，component_inputs: 从原子输入参数勾选，component_outputs：从原子输出结果中勾选   |\n|  custom_type      |    string    |      source_type=custom 时有效，自定义变量类型， 取值范围 input: 输入框，textarea: 文本框，datetime: 日期时间，int: 整数|\n|  source_tag      |    string    |      source_type=component_inputs/component_outputs 时有效，变量的来源原子   |\n|  source_info   |   dict  |  source_type=component_inputs/component_outputs 时有效，变量的来源节点信息 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_periodic_task_list.md",
    "content": "### 功能描述\n\n查询某个业务下所有的周期任务\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   是   |  任务所属业务ID |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"data\": [\n        {\n            \"cron\": \"*/1 15 * * * (m/h/d/dM/MY)\",\n            \"total_run_count\": 1,\n            \"name\": \"from api 3\",\n            \"creator\": \"admin\",\n            \"last_run_at\": \"2018-11-28 15:57:01 +0900\",\n            \"enabled\": false,\n            \"id\": 11,\n            \"template_id\": \"2\"\n        },\n        {\n            \"cron\": \"1,2,3-19/2 2 3 4 5 (m/h/d/dM/MY)\",\n            \"total_run_count\": 0,\n            \"name\": \"from api 1\",\n            \"creator\": \"admin\",\n            \"last_run_at\": \"\",\n            \"enabled\": false,\n            \"id\": 6,\n            \"template_id\": \"2\"\n        },\n        {\n            \"cron\": \"*/5 * * * * (m/h/d/dM/MY)\",\n            \"total_run_count\": 0,\n            \"name\": \"定时\",\n            \"creator\": \"admin\",\n            \"last_run_at\": \"\",\n            \"enabled\": false,\n            \"id\": 4,\n            \"template_id\": \"2\"\n        }\n    ],\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict      |      result=true 时成功数据，详细信息请见下面说明     |\n|  message        |    string      |      result=false 时错误信息     |\n\n#### data\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      周期调度表达式    |\n|  total_run_count      |    int    |    周期任务运行次数   |\n|  name      |    string    |    周期任务名   |\n|  creator      |    string    |    创建者   |\n|  last_run_at      |    string    |    上次运行时间   |\n|  enabled      |    bool    |    是否激活   |\n|  id      |    int    |    周期任务ID   |\n|  template_id      |    string    |    用于创建该任务的模板ID   |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_task_detail.md",
    "content": "### 功能描述\n\n查询任务执行详情\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述            |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string   |   是   |  所属业务ID   |\n|   task_id     |   string   |   是   |  任务ID     |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"data\": {\n        \"creator\": \"admin\",\n        \"outputs\": [\n            {\n                \"value\": \"1\",\n                \"key\": \"${job_script_type}\",\n                \"name\": \"脚本类型\"\n            },\n            {\n                \"value\": \"127.0.0.1\",\n                \"key\": \"${IP}\",\n                \"name\": \"IP\"\n            },\n            {\n                \"value\": \"0\",\n                \"key\": \"${EXIT}\",\n                \"name\": \"EXIT\"\n            }\n        ],\n        \"start_time\": \"2019-01-17 04:13:08\",\n        \"business_id\": 2,\n        \"create_time\": \"2019-01-17 04:13:03\",\n        \"business_name\": \"蓝鲸\",\n        \"id\": 10,\n        \"constants\": {\n            \"${IP}\": {\n                \"source_tag\": \"var_ip_picker.ip_picker\",\n                \"source_info\": {},\n                \"name\": \"IP\",\n                \"index\": 2,\n                \"custom_type\": \"ip\",\n                \"value\": {\n                    \"var_ip_custom_value\": \"127.0.0.1\",\n                    \"var_ip_method\": \"custom\",\n                    \"var_ip_tree\": []\n                },\n                \"show_type\": \"show\",\n                \"source_type\": \"custom\",\n                \"validator\": [],\n                \"key\": \"${IP}\",\n                \"desc\": \"\",\n                \"validation\": \"\",\n                \"is_meta\": false\n            },\n            \"${job_script_type}\": {\n                \"source_tag\": \"job_fast_execute_script.job_script_type\",\n                \"source_info\": {\n                    \"node554316ea019a341f8c28cc6a7da9\": [\n                        \"job_script_type\"\n                    ]\n                },\n                \"name\": \"脚本类型\",\n                \"index\": 0,\n                \"custom_type\": \"\",\n                \"value\": \"1\",\n                \"show_type\": \"show\",\n                \"source_type\": \"component_inputs\",\n                \"key\": \"${job_script_type}\",\n                \"validation\": \"\",\n                \"desc\": \"\"\n            },\n            \"${EXIT}\": {\n                \"source_tag\": \"\",\n                \"source_info\": {},\n                \"name\": \"EXIT\",\n                \"index\": 1,\n                \"custom_type\": \"input\",\n                \"value\": \"0\",\n                \"show_type\": \"show\",\n                \"source_type\": \"custom\",\n                \"validator\": [],\n                \"key\": \"${EXIT}\",\n                \"validation\": \"^.+$\",\n                \"desc\": \"\"\n            }\n        },\n        \"create_method\": \"app\",\n        \"elapsed_time\": 7,\n        \"ex_data\": \"\",\n        \"instance_name\": \"job输出变量测试_20190117121300\",\n        \"end_time\": \"2019-01-17 04:13:15\",\n        \"executor\": \"admin\",\n        \"template_id\": \"266\",\n        \"task_url\": \"http://bk_sops_host/taskflow/execute/3/?instance_id=15364\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"node9b5ae13799d63e179f0ce3088b62\": {\n                    \"outgoing\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"incoming\": \"line490caa49d2a03e64829693281032\",\n                    \"name\": \"timing\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"sleep_timer\",\n                        \"data\": {\n                            \"bk_timing\": {\n                                \"hook\": false,\n                                \"value\": \"2\"\n                            }\n                        }\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": false,\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"loop\": null\n                },\n                \"node880ded556c6c3c269be3cedc64b6\": {\n                    \"outgoing\": \"line490caa49d2a03e64829693281032\",\n                    \"incoming\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"name\": \"暂停\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"pause_node\",\n                        \"data\": {}\n                    },\n                    \"stage_name\": \"步骤1\",\n                    \"can_retry\": true,\n                    \"isSkipped\": true,\n                    \"type\": \"ServiceActivity\",\n                    \"optional\": true,\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"loop\": null\n                }\n            },\n            \"end_event\": {\n                \"type\": \"EmptyEndEvent\",\n                \"outgoing\": \"\",\n                \"incoming\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"line490caa49d2a03e64829693281032\": {\n                    \"is_default\": false,\n                    \"source\": \"node880ded556c6c3c269be3cedc64b6\",\n                    \"id\": \"line490caa49d2a03e64829693281032\",\n                    \"target\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                \"lineb83161d6e0593ad68d9ec73a961b\": {\n                    \"is_default\": false,\n                    \"source\": \"noded383bc1d7387391f889c6bab18b8\",\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                \"line27bc7b4ccbcf37ddb9d1f6572a04\": {\n                    \"is_default\": false,\n                    \"source\": \"node9b5ae13799d63e179f0ce3088b62\",\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\",\n                    \"target\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                }\n            },\n            \"gateways\": {},\n            \"line\": [\n                {\n                    \"source\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line27bc7b4ccbcf37ddb9d1f6572a04\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"target\": {\n                        \"id\": \"node9b5ae13799d63e179f0ce3088b62\",\n                        \"arrow\": \"Left\"\n                    },\n                    \"id\": \"line490caa49d2a03e64829693281032\"\n                },\n                {\n                    \"source\": {\n                        \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                        \"arrow\": \"Right\"\n                    },\n                    \"id\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                    \"target\": {\n                        \"id\": \"node880ded556c6c3c269be3cedc64b6\",\n                        \"arrow\": \"Left\"\n                    }\n                }\n            ],\n            \"start_event\": {\n                \"type\": \"EmptyStartEvent\",\n                \"outgoing\": \"lineb83161d6e0593ad68d9ec73a961b\",\n                \"incoming\": \"\",\n                \"id\": \"noded383bc1d7387391f889c6bab18b8\",\n                \"name\": \"\"\n            },\n            \"id\": \"node7ef6970d06ad3bc092594cb5ec5f\",\n            \"constants\": {},\n            \"location\": [\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"暂停\",\n                    \"y\": 135,\n                    \"x\": 300,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node880ded556c6c3c269be3cedc64b6\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 1000,\n                    \"type\": \"endpoint\",\n                    \"id\": \"node5c48f37aa9f0351e8b43ab6a2295\"\n                },\n                {\n                    \"stage_name\": \"步骤1\",\n                    \"name\": \"timing\",\n                    \"y\": 135,\n                    \"x\": 595,\n                    \"type\": \"tasknode\",\n                    \"id\": \"node9b5ae13799d63e179f0ce3088b62\"\n                },\n                {\n                    \"y\": 150,\n                    \"x\": 80,\n                    \"type\": \"startpoint\",\n                    \"id\": \"noded383bc1d7387391f889c6bab18b8\"\n                }\n            ]\n        }\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true/false 查询成功与否     |\n|  data     |    dict    |      result=true 时返回数据，详细信息见下面说明     |\n|  message  |    string  |      result=false 时错误信息     |\n\n#### data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  id      |    int    |      任务 ID，即 task_id    |\n|  name    |    string    |      任务名称               |\n|  business_id      |  int       |  所属业务 ID    |\n|  business_name    |  string    |  所属业务名称   |\n|  template_id      |  int       |  创建任务所用的流程模板 ID    |\n|  create_time      |  string    |  任务创建时间   |\n|  create_method    |  string    |  任务创建方式   |\n|  start_time       |  string    |  任务执行时间   |\n|  finish_time      |  string    |  任务完成时间   |\n|  elapsed_time     |  int       |  任务执行耗时(秒） |\n|  creator          |  string    |  任务创建人     |\n|  executor         |  string    |  任务执行人     |\n|  constants        |  dict      |  输入的全局变量，详情见下面说明 |\n|  outputs          |  list      |  任务输出参数，详情见下面说明 |\n|  task_url     |    str     |    任务实例链接     |\n|  pipeline_tree     |    dict     |    任务实例树     |\n\n#### data.constants.KEY\n\n全局变量 KEY，${key} 格式\n\n\n#### data.constants.VALUE\n|   字段   |  类型  |           描述             |\n| ------------ | ---------- | ------------------------------ |\n|  key      |    string    |      同 KEY     |\n|  name      |    string    |      变量名字    |\n|  index      |    int    |      变量在模板中的显示顺序    |\n|  desc      |    string    |      变量说明   |\n|  source_type      |    string    |      变量来源, 取值范围 custom: 自定义变量，component_inputs: 从标准插件输入参数勾选，component_outputs：从标准插件输出结果中勾选   |\n|  custom_type      |    string    |      source_type=custom 时有效，自定义变量类型， 取值范围 input: 输入框，textarea: 文本框，datetime: 日期时间，int: 整数|\n|  source_tag      |    string    |      source_type=component_inputs/component_outputs 时有效，变量的来源标准插件   |\n|  source_info   |   dict  |  source_type=component_inputs/component_outputs 时有效，变量的来源节点信息 |\n\n\n#### data.outputs[] \n|      字段     |     类型   |               描述             |\n| ------------  | ---------- | ------------------------------ |\n|  name         | string     | 输出参数名称                   |\n|  value        | string、int、bool、dict、list | 输出参数值  |\n|  key          | string     | 输出参数 KEY                   |\n|  preset       | bool       | 是否是标准插件定义中预设输出变量   |\n\n#### data.pipeline_tree\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      开始节点信息     |\n|  end_event      |    dict    |      结束节点信息    |\n|  activities      |    dict    |      任务节点（原子和子流程）信息    |\n|  gateways      |    dict    |      网关节点（并行网关、分支网关和汇聚网关）信息    |\n|  flows      |    dict    |     顺序流（节点连线）信息    |\n|  constants      |    dict    |  全局变量信息，详情见下面    |\n|  outputs      |    list    |  模板输出信息，标记 constants 中的输出字段    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_task_node_detail.md",
    "content": "### 功能描述\n\n查询任务节点执行详情\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述            |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   是   |  所属业务ID |\n|   task_id     |   string   |   是   |  任务ID     |\n|   node_id        | string     | 是         | 节点 ID                        |\n|   component_code| string     | 否         | 标准插件编码，请求标准插件执行详情必填 |\n|   subprocess_stack| string   | 否         | 子流程堆栈，json 格式的列表    |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\",\n    \"node_id\": \"node0df0431f8f553925af01a94854bd\"\n    \"subprocess_stack\": \"[\\\"nodeaaa0ce51d2143aa9b0dbc27cb7df\\\"]\",\n    \"component_code\": \"job_fast_execute_script\",\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"message\": \"\",\n    \"data\": {\n        \"inputs\": {\n            \"job_account\": \"root\",\n            \"job_script_timeout\": \"\",\n            \"job_script_source\": \"manual\",\n            \"job_script_list_public\": \"\",\n            \"job_content\": \"echo 0\\nexit 0\",\n            \"job_script_type\": \"1\",\n            \"job_script_param\": \"\",\n            \"job_script_list_general\": \"\",\n            \"job_ip_list\": \"127.0.0.1\"\n        },\n        \"retry\": 0,\n        \"name\": \"<class \"pipeline.core.flow.activity.ServiceActivity\">\",\n        \"finish_time\": \"2019-01-17 22:02:46 +0800\",\n        \"skip\": false,\n        \"start_time\": \"2019-01-17 22:02:37 +0800\",\n        \"children\": {},\n        \"histories\": [],\n        \"ex_data\": null,\n        \"elapsed_time\": 9,\n        \"outputs\": [\n            {\n                \"value\": 407584,\n                \"name\": \"JOB任务ID\",\n                \"key\": \"job_inst_id\"\n            },\n            {\n                \"value\": \"\",\n                \"name\": \"JOB任务链接\",\n                \"key\": \"job_inst_url\"\n            },\n            {\n                \"value\": true,\n                \"name\": \"执行结果\",\n                \"key\": \"_result\"\n            }\n        ],\n        \"state\": \"FINISHED\",\n        \"version\": \"23ac8c29f62b3337aafcf1f538d277f8\",\n        \"error_ignorable\": false,\n        \"id\": \"node0df0431f8f553925af01a94854bd\",\n        \"loop\": 1\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true/false 查询成功与否     |\n|  data     |    dict    |      result=true 时返回数据，详细信息见下面说明     |\n|  message  |    string  |      result=false 时错误信息     |\n\n#### data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  id           | string     | 节点 ID                        |\n|  start_time   | string     | 最后一次执行开始时间           |\n|  finish_time  | string     | 最后一次执行结束时间           |\n|  elapsed_time | int        | 最后一次执行耗时，单位秒       |\n|  state        | string     | 最后一次执行状态，CREATED：未执行，RUNNING：执行中，FAILED：失败，NODE_SUSPENDED：暂停，SUSPENDED：成功 |\n|  skip         | bool       | 是否手动跳过                   |\n|  retry        | int        | 重试次数                       |\n|  inputs       | dict       | 输入参数，key：value格式       |\n|  outputs      | list       | 输出参数，详情见下面说明       |\n|  ex_data      | string     | 节点执行失败详情，json字符串或者HTML字符串、普通字符串 |\n|  histories    | list       | 重试记录详情，详情见下面说明   |\n\n#### outputs[]\n|      名称     |     类型   |               说明             |\n| ------------  | ---------- | ------------------------------ |\n|  name         | string     | 输出字段                   |\n|  value        | string、int、bool、dict、list | 输出参数值  |\n|  key          | string     | 输出参数 KEY                   |\n|  preset       | bool       | 是否是标准插件定义中预设输出变量   |\n\n\n#### histories[]\n|      名称     |     类型   |               说明             |\n| ------------  | ---------- | ------------------------------ |\n|  start_time   | string     | 执行开始时间                   |\n|  finish_time  | string     | 执行结束时间                   |\n|  elapsed_time | int        | 执行耗时                       |\n|  state        | string     | 执行状态，CREATED：未执行，RUNNING：执行中，FAILED：失败，NODE_SUSPENDED：暂停，SUSPENDED：成功 |\n|  skip         | bool       | 是否手动跳过                   |\n|  retry        | int        | 重试次数                       |\n|  histories    | list       | 重试记录详情，详情见下面说明   |\n|  inputs       | dict       | 输入参数，key：value格式       |\n|  outputs      | dict       | 输出参数，key：value格式       |\n|  ex_data      | string     | 节点执行失败详情，json字符串或者HTML字符串、普通字符串 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_task_status.md",
    "content": "### 功能描述\n\n查询任务或任务节点执行状态\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述            |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string   |   是   |  模板所属业务ID   |\n|   task_id     |   string   |   是   |  任务或节点ID     |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n\t\"result\": true,\n    \"data\": {\n\t\t\"retry\": 0,\n\t\t\"name\": \"<class 'pipeline.core.pipeline.Pipeline'>\",\n\t\t\"finish_time\": \"\",\n\t\t\"skip\": false,\n\t\t\"start_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\"children\": {\n\t\t\t\"62d4784e20483f1585149ce90ed954c9\": {\n\t\t\t\t\"retry\": 0,\n\t\t\t\t\"name\": \"<class 'pipeline.core.flow.event.EmptyStartEvent'>\",\n\t\t\t\t\"finish_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\t\t\"skip\": false,\n\t\t\t\t\"start_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\t\t\"children\": {},\n\t\t\t\t\"state\": \"FINISHED\",\n\t\t\t\t\"version\": \"7447cc2801b630f497768493c02fb488\",\n\t\t\t\t\"id\": \"62d4784e20483f1585149ce90ed954c9\",\n\t\t\t\t\"loop\": 1\n\t\t\t},\n\t\t\t\"e8b128dff46637368b9b1bd921abc14e\": {\n\t\t\t\t\"retry\": 0,\n\t\t\t\t\"name\": \"<class 'pipeline.core.flow.activity.ServiceActivity'>\",\n\t\t\t\t\"finish_time\": \"2018-04-26 16:08:46 +0800\",\n\t\t\t\t\"skip\": false,\n\t\t\t\t\"start_time\": \"2018-04-26 16:08:34 +0800\",\n\t\t\t\t\"children\": {},\n\t\t\t\t\"state\": \"FAILED\",\n\t\t\t\t\"version\": \"914d35fe7d143c2186e6d3532870b37d\",\n\t\t\t\t\"id\": \"e8b128dff46637368b9b1bd921abc14e\",\n\t\t\t\t\"loop\": 1\n\t\t\t}\n\t\t},\n\t\t\"state\": \"FAILED\",\n\t\t\"version\": \"\",\n\t\t\"id\": \"5a1622f9f43e3429acb604e18dbd100a\",\n\t\t\"loop\": 1\n\t}\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result   |    bool    |      true/false 查询成功与否     |\n|  data     |    dict    |      result=true 时返回数据，详细信息见下面说明     |\n|  message  |    string  |      result=false 时错误信息     |\n\n#### data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  state      |    string    |      任务或节点状态，详细信息见下面说明    |\n|  id      |    string    |      任务或节点执行态ID，不等于 task_id    |\n|  skip      |    bool    |      是否跳过执行    |\n|  retry      |    int    |      重试和跳过总次数   |\n|  start_time      |    string    |      任务或节点执行开始时间   |\n|  finish_time      |    string    |      任务或节点执行结束时间    |\n|  children      |    dict   |      任务节点执行详情，详细信息见下面说明   |\n|  name      |    string    |      节点名称    |\n\n#### data.state\n\n| 返回值    | 描述      |\n|----------|-----------|\n| CREATED   | 未执行   |  \n| RUNNING   | 执行中   |\n| FAILED    | 失败     |\n| SUSPENDED | 暂停     |\n| REVOKED   | 已终止   |\n| FINISHED  | 已完成   |  \n\n#### data.children.KEY\n任务节点执行态ID\n\n#### data.children.VALUE\n同 data 格式\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_template_info.md",
    "content": "### 功能描述\n\n查询业务下的单个模板详情\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述          |\n|---------------|------------|--------|---------------|\n| bk_biz_id     | string     |   是   |  模板所属业务ID |\n| template_id   | string     |   是   |  模板ID        |\n|   template_source | string   | 否         | 流程模板来源，business:默认值，业务流程，common：公共流程 |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"1\",\n    \"template_id\": \"30\",\n    \"template_source\": \"business\",\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"result\": true,\n    \"data\": {\n        \"category\": \"Other\",\n        \"edit_time\": \"2018-04-27 16:24:24 +0800\",\n        \"create_time\": \"2018-04-16 21:43:15 +0800\",\n        \"name\": \"new20180416213944\",\n        \"bk_biz_id\": \"2\",\n        \"creator\": \"admin\",\n        \"pipeline_tree\": {\n            \"activities\": {\n                \"631b6576cc5dfbdcaa4f510ce88a7e67\": {\n                    \"outgoing\": \"44ab36ebf4cf119edaf2d20401da87e4\",\n                    \"incoming\": \"fb2f3a8b533ca5c67e2440b4164f7632\",\n                    \"name\": \"节点_1\",\n                    \"error_ignorable\": false,\n                    \"component\": {\n                        \"code\": \"job_fast_execute_script\",\n                        \"data\": {\n                            \"account\": {\n                                \"hook\": false,\n                                \"value\": \"root\"\n                            },\n                            \"ip_list\": {\n                                \"hook\": false,\n                                \"value\": \"127.0.0.1\"\n                            },\n                            \"script_timeout\": {\n                                \"hook\": true,\n                                \"value\": \"${script_timeout}\"\n                            },\n                            \"content\": {\n                                \"hook\": false,\n                                \"value\": \"${content}\"\n                            },\n                            \"script_param\": {\n                                \"hook\": false,\n                                \"value\": \"${params}\"\n                            },\n                            \"script_type\": {\n                                \"hook\": true,\n                                \"value\": \"${script_type}\"\n                            }\n                        }\n                    },\n                    \"optional\": false,\n                    \"type\": \"ServiceActivity\",\n                    \"id\": \"631b6576cc5dfbdcaa4f510ce88a7e67\",\n                    \"loop\": null\n                }\n            },\n            \"end_event\": {\n                \"type\": \"EmptyEndEvent\",\n                \"outgoing\": \"\",\n                \"incoming\": \"44ab36ebf4cf119edaf2d20401da87e4\",\n                \"id\": \"60c81e383d048d8a3c574d3436e1b82c\",\n                \"name\": \"\"\n            },\n            \"outputs\": [],\n            \"flows\": {\n                \"fb2f3a8b533ca5c67e2440b4164f7632\": {\n                    \"is_default\": false,\n                    \"source\": \"48afea1016ab70ee37179fa0eb1e1a14\",\n                    \"id\": \"fb2f3a8b533ca5c67e2440b4164f7632\",\n                    \"target\": \"631b6576cc5dfbdcaa4f510ce88a7e67\"\n                },\n                \"44ab36ebf4cf119edaf2d20401da87e4\": {\n                    \"is_default\": false,\n                    \"source\": \"631b6576cc5dfbdcaa4f510ce88a7e67\",\n                    \"id\": \"44ab36ebf4cf119edaf2d20401da87e4\",\n                    \"target\": \"60c81e383d048d8a3c574d3436e1b82c\"\n                }\n            },\n            \"start_event\": {\n                \"type\": \"EmptyStartEvent\",\n                \"outgoing\": \"fb2f3a8b533ca5c67e2440b4164f7632\",\n                \"incoming\": \"\",\n                \"id\": \"48afea1016ab70ee37179fa0eb1e1a14\",\n                \"name\": \"\"\n            },\n            \"constants\": {\n                \"${script_type}\": {\n                    \"source_tag\": \"job_fast_execute_script.script_type\",\n                    \"source_info\": {\n                        \"631b6576cc5dfbdcaa4f510ce88a7e67\": [\n                            \"script_type\"\n                        ]\n                    },\n                    \"name\": \"脚本类型\",\n                    \"index\": 0,\n                    \"custom_type\": \"radio\",\n                    \"value\": \"4\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${script_type}\",\n                    \"validation\": \"^.*$\",\n                    \"desc\": \"\"\n                },\n                \"${content}\": {\n                    \"source_tag\": \"\",\n                    \"source_info\": {},\n                    \"name\": \"内容\",\n                    \"index\": 2,\n                    \"custom_type\": \"textarea\",\n                    \"value\": \"\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"custom\",\n                    \"key\": \"${content}\",\n                    \"desc\": \"\"\n                },\n                \"${script_timeout}\": {\n                    \"source_tag\": \"job_fast_execute_script.script_timeout\",\n                    \"source_info\": {\n                        \"631b6576cc5dfbdcaa4f510ce88a7e67\": [\n                            \"script_timeout\"\n                        ]\n                    },\n                    \"name\": \"超时时间\",\n                    \"index\": 1,\n                    \"custom_type\": \"input\",\n                    \"value\": \"\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"component_inputs\",\n                    \"key\": \"${script_timeout}\",\n                    \"validation\": \"^.*$\",\n                    \"desc\": \"\"\n                },\n                \"${params}\": {\n                    \"source_tag\": \"\",\n                    \"source_info\": {},\n                    \"name\": \"参数\",\n                    \"index\": 3,\n                    \"custom_type\": \"input\",\n                    \"value\": \"\",\n                    \"show_type\": \"show\",\n                    \"source_type\": \"custom\",\n                    \"key\": \"${params}\",\n                    \"desc\": \"\"\n                }\n            },\n            \"gateways\": {}\n        },\n        \"bk_biz_name\": \"蓝鲸\",\n        \"id\": 30,\n        \"editor\": \"admin\"\n    },\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n| result    | bool     | true/false 查询成功与否 |\n| data      | dict     | result=true 时模板详情，详细信息见下面说明 |\n| message   | string   | result=false 时错误信息 |\n\n#### data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  bk_biz_id     |    string    |      模板所属业务ID      |\n|  bk_biz_name   |    string    |      模板所属业务名称    |\n|  id            |    int       |      模板ID             |\n|  name          |    string    |      模板名称            |\n|  category      |    string    |      模板分类，分类信息见下面说明    |\n|  creator       |    string    |      模板创建人             |\n|  create_time   |    string    |      模板创建时间           |\n|  editor        |    string 或者 null    |      模板编辑人   |\n|  edit_time     |    string    |      模板最新编辑时间        |\n|  pipeline_tree |    dict      |      模板任务树信息，详细信息见下面说明   |\n\n#### data.category\n\n| 返回值        | 描述     |\n|--------------|----------|\n| OpsTools     | 运维工具  |\n| MonitorAlarm | 监控告警  |\n| ConfManage   | 配置管理  |\n| DevTools     | 开发工具  |\n| EnterpriseIT | 企业IT   |\n| OfficeApp    | 办公应用  |\n| Other        | 其它     |\n\n#### data.pipeline_tree\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  start_event      |    dict    |      开始节点信息     |\n|  end_event      |    dict    |      结束节点信息    |\n|  activities      |    dict    |      任务节点（原子和子流程）信息    |\n|  gateways      |    dict    |      网关节点（并行网关、分支网关和汇聚网关）信息    |\n|  flows      |    dict    |     顺序流（节点连线）信息    |\n|  constants      |    dict    |  全局变量信息，详情见下面    |\n|  outputs      |    list    |  模板输出信息，标记 constants 中的输出字段    |\n\n#### data.pipeline_tree.constants.KEY\n\n全局变量 KEY，${key} 格式\n\n#### data.pipeline_tree.constants.VALUE\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  key      |    string    |      同 KEY     |\n|  name      |    string    |      变量名字    |\n|  index      |    int    |      变量在模板中的显示顺序    |\n|  desc      |    string    |      变量说明   |\n|  source_type  | string   |      变量来源, 取值范围 custom: 自定义变量，component_inputs: 从原子输入参数勾选，component_outputs：从原子输出结果中勾选   |\n|  custom_type  | string   |      source_type=custom 时有效，自定义变量类型， 取值范围 input: 输入框，textarea: 文本框，datetime: 日期时间，int: 整数|\n|  source_tag   | string   |      source_type=component_inputs或component_outputs 时有效，变量的来源原子   |\n|   source_info | dict    |  source_type=component_inputs或component_outputs 时有效，变量的来源节点信息  |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/get_template_list.md",
    "content": "### 功能描述\n\n查询业务下的模板列表\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|-------------------|\n| bk_biz_id     |  string    | 是     | 模板所属业务ID     |\n| template_source | string   | 否     | 流程模板来源，business:默认值，业务流程，common：公共流程 |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"template_source\": \"business\",\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"result\": true,\n    \"data\": [\n        {\n            \"category\": \"Other\",\n            \"edit_time\": \"2018-04-23 17:30:48 +0800\",\n            \"create_time\": \"2018-04-23 17:26:40 +0800\",\n            \"name\": \"快速执行脚本\",\n            \"bk_biz_id\": \"2\",\n            \"creator\": \"admin\",\n            \"bk_biz_name\": \"蓝鲸\",\n            \"id\": 32,\n            \"editor\": \"admin\"\n        },\n        {\n            \"category\": \"Other\",\n            \"edit_time\": \"2018-04-19 12:04:42 +0800\",\n            \"create_time\": \"2018-04-19 12:04:42 +0800\",\n            \"name\": \"new201804191218\",\n            \"bk_biz_id\": \"2\",\n            \"creator\": \"admin\",\n            \"bk_biz_name\": \"蓝鲸\",\n            \"id\": 31,\n            \"editor\": null\n        },\n        {\n            \"category\": \"Other\",\n            \"edit_time\": \"2018-04-18 17:09:39 +0800\",\n            \"create_time\": \"2018-04-16 21:43:15 +0800\",\n            \"name\": \"new20180416213944\",\n            \"bk_biz_id\": \"2\",\n            \"creator\": \"admin\",\n            \"bk_biz_name\": \"蓝鲸\",\n            \"id\": 30,\n            \"editor\": \"admin\"\n        },\n    ]\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n| result    | bool     | true/false 查询成功与否 |\n| data      | list     | result=true时模板列表，item 信息见下面说明 |\n| message   | string   | result=false时错误信息 |\n\n#### data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  bk_biz_id      |    string    |      模板所属业务ID     |\n|  bk_biz_name      |    string    |      模板所属业务名称    |\n|  id      |    int    |      模板ID    |\n|  name      |    string    |      模板名称    |\n|  category      |    string    |      模板分类，分类信息见下面说明    |\n|  creator      |    string    |      模板创建人   |\n|  create_time      |    string    |      模板创建时间   |\n|  editor      |    string 或者 null    |      模板编辑人   |\n|  edit_time      |    string   |      模板最新编辑时间   |\n\n#### data.category\n\n| 返回值        | 描述     |\n|--------------|----------|\n| OpsTools     | 运维工具  |\n| MonitorAlarm | 监控告警  |\n| ConfManage   | 配置管理  |\n| DevTools     | 开发工具  |\n| EnterpriseIT | 企业IT   |\n| OfficeApp    | 办公应用  |\n| Other        | 其它     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/import_common_template.md",
    "content": "### 功能描述\n\n导入公共流程\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n|   字段   |    参数类型  |  必须  |     参数说明     |\n| ------------ | ------------ | ------ | ---------------- |\n|   template_data    |   string     |   是   |  公共流程数据，即从标准运维 - 公共流程 - 导出功能下载的文件的内容 |\n|   override        | bool     | 否         | 是否覆盖 ID 相同的流程           |           |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"template_data\": \"xxx\",\n    \"override\": true,\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"message\": \"Successfully imported 2 common flows\",\n    \"data\": {\n        \"count\": 2\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|      名称     |     类型   |               说明             |\n| ------------  | ---------- | ------------------------------ |\n|  result       | bool       | true/false 成功与否            |\n|  message      | string     | result=false 时错误信息        |\n|  data         | dict        | 返回数据                    |\n\n#### data\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  count      |    int    |      导入的流程数    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/modify_constants_for_periodic_task.md",
    "content": "### 功能描述\n\n修改周期任务的全局参数\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   是   |  周期任务ID |\n|   bk_biz_id    |   string     |   是   |  模板所属业务ID |\n|   constants    |   dict     |   否   | 任务全局参数，详细信息见下面说明 |\n\n#### constants.KEY\n\n变量 KEY，${key} 格式\n\n#### constants.VALUE\n\n变量值\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\",\n    \"constants\": {\"${bk_timing}\": \"100\"},\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"data\": {\n        \"${bk_timing}\": {\n            \"source_tag\": \"sleep_timer.bk_timing\",\n            \"source_info\": {\n                \"node76393dcfedcf73dbc726f1c4786d\": [\n                    \"bk_timing\"\n                ]\n            },\n            \"name\": \"定时时间\",\n            \"custom_type\": \"\",\n            \"index\": 0,\n            \"value\": \"15\",\n            \"show_type\": \"show\",\n            \"source_type\": \"component_inputs\",\n            \"key\": \"${bk_timing}\",\n            \"validation\": \"\",\n            \"desc\": \"\"\n        }\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict      |      result=true 时成功数据，详细信息请见下面说明     |\n|  message        |    string      |      result=false 时错误信息     |\n\n#### data.KEY\n全局变量 KEY，${key} 格式\n\n#### data.VALUE\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  key      |    string    |      同 KEY     |\n|  name      |    string    |      变量名字    |\n|  index      |    int    |      变量在模板中的显示顺序    |\n|  desc      |    string    |      变量说明   |\n|  source_type      |    string    |      变量来源, 取值范围 custom: 自定义变量，component_inputs: 从原子输入参数勾选，component_outputs：从原子输出结果中勾选   |\n|  custom_type      |    string    |      source_type=custom 时有效，自定义变量类型， 取值范围 input: 输入框，textarea: 文本框，datetime: 日期时间，int: 整数|\n|  source_tag      |    string    |      source_type=component_inputs/component_outputs 时有效，变量的来源原子   |\n|  source_info   |   dict  |  source_type=component_inputs/component_outputs 时有效，变量的来源节点信息 |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/modify_cron_for_periodic_task.md",
    "content": "### 功能描述\n\n修改周期任务的调度策略\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   是   |  周期任务ID |\n|   bk_biz_id    |   string     |   是   |  模板所属业务ID |\n|   cron    |   dict     |   否   | 调度策略对象 |\n\n#### cron\n \n |   参数名称   |    参数类型  |  必须  |     参数说明     |\n| ------------ | ------------ | ------ | ---------------- |\n|   minute    |   string     |   否   |  分，默认为 * |\n|   hour    |   string     |   否   |  时，默认为 * |\n|   day_of_week    |   string     |   否   |  一周内的某些天，默认为 * |\n|   day_of_month    |   string     |   否   |  一个月中的某些天，默认为 * |\n|   month_of_year    |   string     |   否   |  一年中的某些月份，默认为 * |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\",\n    \"cron\" : {\"minute\": \"*/1\", \"hour\": \"15\", \"day_of_week\":\"*\", \"day_of_month\":\"*\", \"month_of_year\":\"*\"},\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"data\": {\n        \"cron\": \"*/1 15 * * * (m/h/d/dM/MY)\"\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict      |      result=true 时成功数据，详细信息请见下面说明     |\n|  message        |    string      |      result=false 时错误信息     |\n\n#### data\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  cron      |    string    |      调度策略表达式    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/node_callback.md",
    "content": "### 功能描述\n\n回调指定的节点\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n|   字段   |    参数类型  |  必须  |     参数说明     |\n| ------------ | ------------ | ------ | ---------------- |\n|   bk_biz_id    |   string     |   是   |  所属业务ID |\n|   task_id     |   string   |   是   |  任务ID     |\n|   node_id        | string     | 是         | 节点 ID                        |\n|   callback_data        | dict     | 否         | 回调数据           |           |\n\n### 请求参数示例\n\n```\nimport requests\nkwargs = {\n    \"app_code\": \"app_code\",\n    \"app_secret\": \"app_secret\",\n    \"access_token\": \"access_token\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\",\n    \"node_id\": \"node0df0431f8f553925af01a94854bd\",\n    \"callback_data\": {\"data\": \"data\"},\n}\nresponse = requests.get(\"http://{stageVariables.domain}/apigw/node_callback/10/2/\", kwargs)\nresult = response.json()\n```\n\n### 返回结果示例\n\n```\n{\n    \"message\": \"success\",\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|      名称     |     类型   |               说明             |\n| ------------  | ---------- | ------------------------------ |\n|  result       | bool       | true/false 成功与否            |\n|  message      | string     | result=false 时错误信息        |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/operate_task.md",
    "content": "### 功能描述\n\n操作任务，如开始、暂停、继续、终止等\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string     |   是   |  模板所属业务ID |\n|   task_id     |   string     |   是   |  任务ID         |\n|   action      |   string     |   是   |  操作类型       |\n\n#### action\n\n| 值        | 描述     |\n|-----------|----------|\n| start     | 开始任务，等效于调用 start_task 接口 |\n| pause     | 暂停任务，任务处于执行状态时调用  |\n| resume    | 继续任务，任务处于暂停状态时调用  |\n| revoke    | 终止任务  |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"action\": \"start\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"result\": true,\n    \"data\": {}\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict  |      result=true 时返回数据      |\n|  message     |    string  |      result=false 时错误信息     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/query_task_count.md",
    "content": "### 功能描述\n\n查询任务实例分类统计总数\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id    |   string     |   是   |  模板所属业务ID |\n|   group_by     |   string     |   是   |  分类统计维度，status：按任务状态（未执行、执行中、已完成）统计，category：按照任务类型统计，flow_type：按照流程类型统计，create_method：按照创建方式 |\n|   conditions     |   dict     |   否   |  任务过滤条件 |\n\n#### conditions\n\n| 字段      | 类型      | 描述      |\n| ------------ | ---------- | ------------------------------ |\n|  template_id      |    string    |      创建任务的模板ID    |\n|  name      |    string    |      任务名称   |\n|  creator      |    string    |      创建人    |\n|  create_time__gte      |    string    |      任务创建时间起始时间   |\n|  create_time__lte      |    string    |      任务创建时间截止时间   |\n|  executor      |    string    |      执行人    |\n|  start_time__gte      |    string   |      任务执行时间起始时间  |\n|  start_time__lte      |    string   |      任务执行时间截止时间  |\n|  is_started      |    bool   |      任务是否启动  |\n|  is_finished      |    bool   |      任务是否完成  |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"conditions\": {\n        \"create_time__lte\": \"2018-07-12 10:00:00\",\n        \"is_started\": true\n    },\n    \"group_by\": \"flow_type\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"data\": {\n        \"total\": 180,\n        \"groups\": [\n            {\n                \"code\": \"common\",\n                \"name\": \"默认任务流程\",\n                \"value\": 166\n            },\n            {\n                \"code\": \"common_func\",\n                \"name\": \"职能化任务流程\",\n                \"value\": 14\n            }\n        ]\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result      | bool    |      true/false 操作是否成功     |\n|  data        | dict  |      result=true 时返回分类统计信息，详细信息见下面说明    |\n|  message     | string  |      result=false 时错误信息     |\n\n#### data\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  total      |    int    |      按照过滤条件获取的任务总数    |\n|  groups     |    list   |      按照过滤条件分类分类统计详情   |\n\n#### data.groups[]\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  code      |    string    |      分类统计类型编码    |\n|  name      |    string    |      分类统计类型名称    |\n|  value     |    string    |      当前分类任务数量    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/set_periodic_task_enabled.md",
    "content": "### 功能描述\n\n设置某个周期任务是否激活\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   task_id    |   string     |   是   |  周期任务ID |\n|   bk_biz_id    |   string     |   是   |  任务所属业务ID |\n|   enabled    |   bool     |   否   | 该周期任务是否激活，不传则为 false |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"8\",\n    \"enabled\": false\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"data\": {\n        \"enabled\": false\n    },\n    \"result\": true\n}\n```\n\n### 返回结果参数说明\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict      |      result=true 时成功数据，详细信息请见下面说明     |\n|  message        |    string      |      result=false 时错误信息     |\n\n#### data\n\n|   名称   |  类型  |           说明             |\n| ------------ | ---------- | ------------------------------ |\n|  enabled      |    bool    |      当前周期任务是否已经激活    |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/apidocs/zh_hans/start_task.md",
    "content": "### 功能描述\n\n开始执行任务\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n| 字段          |  类型       | 必选   |  描述             |\n|---------------|------------|--------|------------------|\n|   bk_biz_id   |   string     |   是   |  模板所属业务ID |\n|   task_id     |   string     |   是   |  任务ID         |\n\n### 请求参数示例\n\n```\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\",\n    \"bk_biz_id\": \"2\",\n    \"task_id\": \"10\"\n}\n```\n\n### 返回结果示例\n\n```\n{\n    \"result\": true,\n    \"data\": {}\n}\n```\n\n### 返回结果参数说明\n\n| 字段      | 类型      | 描述      |\n|-----------|----------|-----------|\n|  result      |    bool    |      true/false 操作是否成功     |\n|  data        |    dict  |      result=true 时返回数据      |\n|  message     |    string  |      result=false 时错误信息     |\n"
  },
  {
    "path": "paas-ce/paas/esb/components/confapis/sops/sops.yaml",
    "content": "---\n\n- path: /v2/sops/get_template_list/\n  name: get_template_list\n  label: 查询模板列表\n  label_en: Query templates list\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_template_list/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/get_template_info/\n  name: get_template_info\n  label: 查询单个模板详情\n  label_en: Query individual template detail\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_template_info/{template_id}/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/create_task/\n  name: create_task\n  label: 通过流程模板新建任务\n  label_en: Create a task\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/create_task/{template_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/start_task/\n  name: start_task\n  label: 开始执行任务\n  label_en: Start task\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/start_task/{task_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/operate_task/\n  name: operate_task\n  label: 操作任务\n  label_en: Operate task\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/operate_task/{task_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/get_task_status/\n  name: get_task_status\n  label: 查询任务或任务节点执行状态\n  label_en: Query task or node status\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_task_status/{task_id}/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/get_task_detail/\n  name: get_task_detail\n  label: 查询任务执行详情\n  label_en: Query a task execution details\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_task_detail/{task_id}/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/get_task_node_detail/\n  name: get_task_node_detail\n  label: 查询任务节点执行详情\n  label_en: Query a task node execution details\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_task_node_detail/{task_id}/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/node_callback/\n  name: node_callback\n  label: 回调任务节点\n  label_en: Callback a specific node\n  method: POST\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/node_callback/{task_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/query_task_count/\n  name: query_task_count\n  label: 查询任务分类统计总数\n  label_en: Query task classification statistics\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/query_task_count/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/get_periodic_task_list/\n  name: get_periodic_task_list\n  label: 查询业务下的周期任务列表\n  label_en: Query periodic task list\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_periodic_task_list/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/get_periodic_task_info/\n  name: get_periodic_task_info\n  label: 查询业务下的某个周期任务详情\n  label_en: Query periodic task detail\n  method: GET\n  api_type: query\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/get_periodic_task_info/{task_id}/{bk_biz_id}/\n  dest_http_method: GET\n\n- path: /v2/sops/create_periodic_task/\n  name: create_periodic_task\n  label: 通过流程模板新建周期任务\n  label_en: create a periodic task\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/create_periodic_task/{template_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/set_periodic_task_enabled/\n  name: set_periodic_task_enabled\n  label: 设置周期任务是否激活\n  label_en: modify periodic task activation status\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/set_periodic_task_enabled/{task_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/modify_cron_for_periodic_task/\n  name: modify_cron_for_periodic_task\n  label: 修改周期任务的调度策略\n  label_en: modify crontab for periodic task\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/modify_cron_for_periodic_task/{task_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/modify_constants_for_periodic_task/\n  name: modify_constants_for_periodic_task\n  label: 修改周期任务的全局参数\n  label_en: modify global parameters for periodic task\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/modify_constants_for_periodic_task/{task_id}/{bk_biz_id}/\n  dest_http_method: POST\n\n- path: /v2/sops/import_common_template/\n  name: import_common_template\n  label: 导入公共流程\n  label_en: Import common flow\n  method: POST\n  api_type: operate\n  comp_codename: generic.v2.sops.sops_component\n  dest_path: /o/bk_sops/apigw/import_common_template/\n  dest_http_method: POST\n  "
  },
  {
    "path": "paas-ce/paas/esb/components/esb_conf.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nESB conf\n\"\"\"\nimport os\n\nfrom django.conf import settings\n\ntry:\n    from components.component import ApiChannelForAPIS, ESBApiChannelForAPIS, FTAApiChannelForAPIS\nexcept:\n    pass\n\n# from components.component import ApiChannelForAPIS, ESBApiChannelForAPIS, FTAApiChannelForAPIS\nfrom esb.bkapp.validators import AppAuthValidator\n\n\ndef _rel_path(x):\n    return os.path.join(settings.BASE_DIR, x)\n\n\nCUSTOM_APIS_REL_PATH = getattr(settings, 'CUSTOM_APIS_REL_PATH', 'components/generic/apis/')\n\n\n# channel config is_hidden, is_deprecated description:\n#   is_hidden: channel not open, no sdk and apidoc\n#   is_deprecated: channel was once open and generated sdk and apidoc, but now deprecated, need to hide apidoc\n#   is_hidden and is_deprecated do not need to exist at the same time\n\nconfig = {\n    'version': 1,\n    'config': {\n        # important!\n        # component_group should in order, last dir has higher priority\n        'component_groups': [\n            {\n                'path': _rel_path('components/generic/templates/'),\n                'name_prefix': 'generic.',\n            },\n            {\n                'path': _rel_path(CUSTOM_APIS_REL_PATH),\n                'name_prefix': 'generic.',\n            },\n            {\n                'path': _rel_path('components/bk/apis/'),\n                'name_prefix': 'generic.',\n            },\n            {\n                'path': _rel_path('components/bk/apisv2/'),\n                'name_prefix': 'generic.v2.',\n            },\n        ],\n        'default_channel_classes': None,\n        'doc_common_args': \"\"\"\n            #### {{ _(\"通用参数\") }}\n\n            | {{ _(\"字段\") }} | {{ _(\"类型\") }} | {{ _(\"必选\") }} |  {{ _(\"描述\") }} |\n            |-----------|------------|--------|------------|\n            | bk_app_code  |  string    | {{ _(\"是\") }} | {{ _(\"应用ID\") }}     |\n            | bk_app_secret|  string    | {{ _(\"是\") }} | {{ _(\"安全密钥(应用 TOKEN)，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\") }} |\n            | bk_token     |  string    | {{ _(\"否\") }} | {{ _(\"当前用户登录态，bk_token与bk_username必须一个有效，bk_token可以通过Cookie获取\") }} |\n            | bk_username  |  string    | {{ _(\"否\") }} | {{ _(\"当前用户用户名，应用免登录态验证白名单中的应用，用此字段指定当前用户\") }} |\"\"\",  # noqa\n        'channel_groups': {\n            'default': {\n                'channel_classes': {\n                    'api': \"ApiChannelForAPIS\",\n                },\n                'rewrite_channels': {\n                    # cmsi\n                    '/v2/cmsi/send_voice_msg/': '/cmsi/send_voice_msg/',\n                    '/v2/cmsi/send_mail/': '/cmsi/send_mail/',\n                    '/v2/cmsi/send_sms/': '/cmsi/send_sms/',\n                    '/v2/cmsi/send_weixin/': '/cmsi/send_weixin/',\n                    '/v2/cmsi/get_msg_type/': '/cmsi/get_msg_type/',\n                    '/v2/cmsi/send_msg/': '/cmsi/send_msg/',\n                },\n                'preset_channels': [\n                    # CC v2\n                    ('/v2/cc/add_host_to_resource/', {'comp_codename': 'generic.v2.cc.add_host_to_resource'}),\n                    ('/v2/cc/create_business/', {'comp_codename': 'generic.v2.cc.create_business'}),\n                    ('/v2/cc/create_custom_query/', {'comp_codename': 'generic.v2.cc.create_custom_query'}),\n                    ('/v2/cc/create_module/', {'comp_codename': 'generic.v2.cc.create_module'}),\n                    ('/v2/cc/create_set/', {'comp_codename': 'generic.v2.cc.create_set'}),\n                    ('/v2/cc/delete_business/', {'comp_codename': 'generic.v2.cc.delete_business'}),\n                    ('/v2/cc/delete_custom_query/', {'comp_codename': 'generic.v2.cc.delete_custom_query'}),\n                    ('/v2/cc/delete_host/', {'comp_codename': 'generic.v2.cc.delete_host'}),\n                    ('/v2/cc/delete_module/', {'comp_codename': 'generic.v2.cc.delete_module'}),\n                    ('/v2/cc/delete_set/', {'comp_codename': 'generic.v2.cc.delete_set'}),\n                    ('/v2/cc/get_custom_query_data/', {'comp_codename': 'generic.v2.cc.get_custom_query_data'}),\n                    ('/v2/cc/get_custom_query_detail/', {'comp_codename': 'generic.v2.cc.get_custom_query_detail'}),\n                    ('/v2/cc/get_host_base_info/', {'comp_codename': 'generic.v2.cc.get_host_base_info'}),\n                    ('/v2/cc/search_business/', {'comp_codename': 'generic.v2.cc.search_business'}),\n                    ('/v2/cc/search_custom_query/', {'comp_codename': 'generic.v2.cc.search_custom_query'}),\n                    ('/v2/cc/search_host/', {'comp_codename': 'generic.v2.cc.search_host'}),\n                    ('/v2/cc/search_module/', {'comp_codename': 'generic.v2.cc.search_module'}),\n                    ('/v2/cc/search_set/', {'comp_codename': 'generic.v2.cc.search_set'}),\n                    ('/v2/cc/transfer_host_module/', {'comp_codename': 'generic.v2.cc.transfer_host_module'}),\n                    ('/v2/cc/transfer_host_to_faultmodule/', {\n                        'comp_codename': 'generic.v2.cc.transfer_host_to_faultmodule',\n                    }),\n                    ('/v2/cc/transfer_host_to_idlemodule/', {\n                        'comp_codename': 'generic.v2.cc.transfer_host_to_idlemodule',\n                    }),\n                    ('/v2/cc/transfer_host_to_resourcemodule/', {\n                        'comp_codename': 'generic.v2.cc.transfer_host_to_resourcemodule',\n                    }),\n                    ('/v2/cc/transfer_resourcehost_to_idlemodule/', {\n                        'comp_codename': 'generic.v2.cc.transfer_resourcehost_to_idlemodule',\n                    }),\n                    ('/v2/cc/update_business/', {'comp_codename': 'generic.v2.cc.update_business'}),\n                    ('/v2/cc/update_custom_query/', {'comp_codename': 'generic.v2.cc.update_custom_query'}),\n                    ('/v2/cc/update_host/', {'comp_codename': 'generic.v2.cc.update_host'}),\n                    ('/v2/cc/update_module/', {'comp_codename': 'generic.v2.cc.update_module'}),\n                    ('/v2/cc/update_set/', {'comp_codename': 'generic.v2.cc.update_set'}),\n                    ('/v2/cc/search_biz_inst_topo/', {'comp_codename': 'generic.v2.cc.search_biz_inst_topo'}),\n                    ('/v2/cc/search_inst_by_object/', {'comp_codename': 'generic.v2.cc.search_inst_by_object'}),\n                    ('/v2/cc/bind_role_privilege/', {'comp_codename': 'generic.v2.cc.bind_role_privilege'}),\n                    ('/v2/cc/update_object_topo_graphics/', {\n                        'comp_codename': 'generic.v2.cc.update_object_topo_graphics',\n                    }),\n\n                    # paas v2\n                    ('/v2/bk_paas/create_app/', {\n                        'comp_codename': 'generic.v2.bk_paas.create_app',\n                        'is_hidden': True,\n                    }),\n                    ('/v2/bk_paas/del_app/', {\n                        'comp_codename': 'generic.v2.bk_paas.del_app',\n                        'is_hidden': True,\n                    }),\n                    ('/v2/bk_paas/edit_app/', {\n                        'comp_codename': 'generic.v2.bk_paas.edit_app',\n                        'is_hidden': True,\n                    }),\n                    ('/v2/bk_paas/get_app_info/', {\n                        'comp_codename': 'generic.v2.bk_paas.get_app_info',\n                    }),\n                    ('/v2/bk_paas/modify_app_logo/', {\n                        'comp_codename': 'generic.v2.bk_paas.modify_app_logo',\n                        'is_hidden': True,\n                    }),\n\n                    # login v2\n                    ('/v2/bk_login/get_all_users/', {'comp_codename': 'generic.v2.bk_login.get_all_users'}),\n                    ('/v2/bk_login/get_batch_users/', {'comp_codename': 'generic.v2.bk_login.get_batch_users'}),\n                    ('/v2/bk_login/get_batch_users_platform_role/', {\n                        'comp_codename': 'generic.v2.bk_login.get_batch_users_platform_role',\n                    }),\n                    ('/v2/bk_login/get_user/', {'comp_codename': 'generic.v2.bk_login.get_user'}),\n                    ('/v2/bk_login/is_login/', {\n                        'comp_codename': 'generic.v2.bk_login.is_login',\n                        'request_validators': [AppAuthValidator()],\n                        'is_hidden': True,\n                    }),\n\n                    # CC\n                    ('/cc/add_plat_id/', {\n                        'comp_codename': 'generic.cc.add_plat_id',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/del_plat/', {\n                        'comp_codename': 'generic.cc.del_plat',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_app_by_id/', {\n                        'comp_codename': 'generic.cc.get_app_by_id',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_app_by_user/', {\n                        'comp_codename': 'generic.cc.get_app_by_user',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_app_by_user_role/', {\n                        'comp_codename': 'generic.cc.get_app_by_user_role',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_app_host_list/', {\n                        'comp_codename': 'generic.cc.get_app_host_list',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_app_list/', {\n                        'comp_codename': 'generic.cc.get_app_list',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_host_list_by_ip/', {\n                        'comp_codename': 'generic.cc.get_host_list_by_ip',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_hosts_by_property/', {\n                        'comp_codename': 'generic.cc.get_hosts_by_property',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_ip_and_proxy_by_company/', {\n                        'comp_codename': 'generic.cc.get_ip_and_proxy_by_company',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_module_host_list/', {\n                        'comp_codename': 'generic.cc.get_module_host_list',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_modules/', {\n                        'comp_codename': 'generic.cc.get_modules',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_modules_by_property/', {\n                        'comp_codename': 'generic.cc.get_modules_by_property',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_plat_id/', {\n                        'comp_codename': 'generic.cc.get_plat_id',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_set_host_list/', {\n                        'comp_codename': 'generic.cc.get_set_host_list',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_set_property/', {\n                        'comp_codename': 'generic.cc.get_set_property',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_sets_by_property/', {\n                        'comp_codename': 'generic.cc.get_sets_by_property',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_topo_tree_by_app_id/', {\n                        'comp_codename': 'generic.cc.get_topo_tree_by_app_id',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/update_gse_proxy_status/', {\n                        'comp_codename': 'generic.cc.update_gse_proxy_status',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_host_by_app_id/', {\n                        'comp_codename': 'generic.cc.update_host_by_app_id',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_host_plat/', {\n                        'comp_codename': 'generic.cc.update_host_plat',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_property_list/', {\n                        'comp_codename': 'generic.cc.get_property_list',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_host_list_by_field/', {\n                        'comp_codename': 'generic.cc.get_host_list_by_field',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_app_agent_status/', {\n                        'comp_codename': 'generic.cc.get_app_agent_status',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_host_company_id/', {\n                        'comp_codename': 'generic.cc.get_host_company_id',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_host_by_company_id/', {\n                        'comp_codename': 'generic.cc.get_host_by_company_id',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_git_server_ip/', {\n                        'comp_codename': 'generic.cc.get_git_server_ip',\n                        'is_hidden': True,\n                    }),\n\n                    ('/cc/clone_host_property/', {\n                        'comp_codename': 'generic.cc.clone_host_property',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_host_module/', {\n                        'comp_codename': 'generic.cc.update_host_module',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_process_port_by_app_id/', {\n                        'comp_codename': 'generic.cc.get_process_port_by_app_id',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/get_process_port_by_ip/', {\n                        'comp_codename': 'generic.cc.get_process_port_by_ip',\n                        'is_hidden': True,\n                    }),\n                    ('/cc/add_set/', {\n                        'comp_codename': 'generic.cc.add_set',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/del_set/', {\n                        'comp_codename': 'generic.cc.del_set',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/del_set_host/', {\n                        'comp_codename': 'generic.cc.del_set_host',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_set_property/', {\n                        'comp_codename': 'generic.cc.update_set_property',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_set_service_status/', {\n                        'comp_codename': 'generic.cc.update_set_service_status',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_custom_property/', {\n                        'comp_codename': 'generic.cc.update_custom_property',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_module_property/', {\n                        'comp_codename': 'generic.cc.update_module_property',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/add_app/', {\n                        'comp_codename': 'generic.cc.add_app',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/add_module/', {\n                        'comp_codename': 'generic.cc.add_module',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/del_app/', {\n                        'comp_codename': 'generic.cc.del_app',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/del_host_in_app/', {\n                        'comp_codename': 'generic.cc.del_host_in_app',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/del_module/', {\n                        'comp_codename': 'generic.cc.del_module',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/edit_app/', {\n                        'comp_codename': 'generic.cc.edit_app',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/enter_ip/', {\n                        'comp_codename': 'generic.cc.enter_ip',\n                        'is_deprecated': True,\n                    }),\n                    ('/cc/update_host_info/', {\n                        'comp_codename': 'generic.cc.update_host_info',\n                        'is_deprecated': True,\n                    }),\n\n                    ('/cc/get_customer_group_list/', {\n                        'comp_codename': 'generic.cc.get_customer_group_list',\n                        'is_hidden': True,\n                    }),\n                    ('/cc/get_content_by_customer_group_id/', {\n                        'comp_codename': 'generic.cc.get_content_by_customer_group_id',\n                        'is_hidden': True,\n                    }),\n\n                    # BK_LOGIN\n                    ('/bk_login/get_all_user/', {\n                        'comp_codename': 'generic.bk_login.get_all_user',\n                        'request_validators': [AppAuthValidator()],\n                        'is_deprecated': True,\n                    }),\n                    ('/bk_login/get_batch_user/', {\n                        'comp_codename': 'generic.bk_login.get_batch_user',\n                        'request_validators': [AppAuthValidator()],\n                        'is_deprecated': True,\n                    }),\n                    ('/bk_login/get_batch_user_platform_role/', {\n                        'comp_codename': 'generic.bk_login.get_batch_user_platform_role',\n                        'request_validators': [AppAuthValidator()],\n                        'is_deprecated': True,\n                    }),\n\n                    ('/bk_login/is_login/', {\n                        'comp_codename': 'generic.bk_login.is_login',\n                        'request_validators': [AppAuthValidator()],\n                        'is_hidden': True,\n                    }),\n                    ('/bk_login/get_user/', {\n                        'comp_codename': 'generic.bk_login.get_user',\n                        'request_validators': [AppAuthValidator()],\n                        'is_deprecated': True,\n                    }),\n\n                    # BK_PAAS\n                    ('/bk_paas/get_app_info/', {\n                        'comp_codename': 'generic.bk_paas.get_app_info',\n                        'is_deprecated': True,\n                    }),\n\n                    # CMSI\n                    ('/cmsi/send_voice_msg/', {\n                        'comp_codename': 'generic.cmsi.send_voice_msg',\n                        'comp_conf_to_db': [\n                            ('dest_url', ''),\n                            ('qcloud_app_id', ''),\n                            ('qcloud_app_key', ''),\n                        ]\n                    }),\n                    ('/cmsi/send_mail/', {\n                        'comp_codename': 'generic.cmsi.send_mail',\n                        'comp_conf_to_db': [\n                            ('dest_url', ''),\n                            ('smtp_host', ''),\n                            ('smtp_port', 25),\n                            ('smtp_user', 'blueking'),\n                            ('smtp_pwd', ''),\n                            ('smtp_usessl', 'False'),\n                            ('smtp_usetls', 'False'),\n                            ('mail_sender', 'blueking@bking.com'),\n                        ]\n                    }),\n                    ('/cmsi/send_sms/', {\n                        'comp_codename': 'generic.cmsi.send_sms',\n                        'comp_conf_to_db': [\n                            ('dest_url', ''),\n                            ('qcloud_app_id', ''),\n                            ('qcloud_app_key', ''),\n                        ]\n                    }),\n                    ('/cmsi/send_weixin/', {\n                        'comp_codename': 'generic.cmsi.send_weixin',\n                        'comp_conf_to_db': [\n                            ('wx_type', 'qywx'),\n                            ('wx_app_id', ''),\n                            ('wx_secret', ''),\n                            ('wx_token', ''),\n                            ('wx_template_id', ''),\n                            ('wx_qy_corpid', ''),\n                            ('wx_qy_corpsecret', ''),\n                            ('wx_qy_agentid', ''),\n                        ]\n                    }),\n                    ('/cmsi/get_msg_type/', {\n                        'comp_codename': 'generic.cmsi.get_msg_type',\n                        'comp_conf_to_db': [\n                            ('weixin', True),\n                            ('mail', True),\n                            ('sms', True),\n                            ('voice', True),\n                        ]\n                    }),\n                    ('/cmsi/send_msg/', {\n                        'comp_codename': 'generic.cmsi.send_msg'\n                    }),\n\n                    # FTA\n                    ('/fta/http_relay/', {\n                        'comp_codename': 'generic.fta.http_relay',\n                        'is_hidden': True\n                    }),\n                    ('/fta/imap_relay/', {\n                        'comp_codename': 'generic.fta.imap_relay',\n                        'is_hidden': True\n                    }),\n                    ('/fta/callback/{instance_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/fta/callback/{instance_id}/',\n                            'dest_http_method': 'POST',\n                            'name': 'callback_instance_id',\n                            'label': 'callback_instance_id',\n                        }\n                    }),\n                    ('/fta/callback/{instance_id}/{node_idx}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/fta/callback/{instance_id}/{node_idx}/',\n                            'dest_http_method': 'POST',\n                            'name': 'callback_instance_id_node_idx',\n                            'label': 'callback_instance_id_node_idx',\n                        }\n                    }),\n\n                    # HEARTBEAT\n                    ('/heartbeat/detect/', {\n                        'comp_codename': 'generic.heartbeat.detect',\n                        'is_hidden': True\n                    }),\n\n                ]\n            },\n            'esb': {\n                'channel_classes': {\n                    'api': \"ESBApiChannelForAPISi\",\n                },\n                'preset_channels': (\n                    # weixin\n                    ('/weixin/get_token/', {\n                        'comp_codename': 'generic.weixin.get_token',\n                        'is_hidden': True\n                    }),\n                )\n            },\n            'fta': {\n                'channel_classes': {\n                    'api': \"FTAApiChannelForAPIS\",\n                },\n                'preset_channels': (\n                    ('/fta/event/api/{fta_application_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/event/api/{fta_application_id}/',\n                            'dest_http_method': 'POST',\n                            'name': 'event_api_fta_application_id',\n                            'label': 'event_api_fta_application_id',\n                        }\n                    }),\n                    ('/fta/event/nagios/{fta_application_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/event/nagios/{fta_application_id}/',\n                            'dest_http_method': 'POST',\n                            'name': 'event_nagios_fta_application_id',\n                            'label': 'event_nagios_fta_application_id',\n                        }\n                    }),\n                    ('/fta/event/open-falcon/{fta_application_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'GET',\n                        'comp_conf': {\n                            'dest_path': '/event/open-falcon/{fta_application_id}/',\n                            'dest_http_method': 'GET',\n                            'name': 'event_open_falcon_fta_application_id',\n                            'label': 'event_open_falcon_fta_application_id',\n                        }\n                    }),\n                    ('/fta/event/zabbix/v3.0/{fta_application_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/event/zabbix/v3.0/{fta_application_id}/',\n                            'dest_http_method': 'POST',\n                            'name': 'event_zabbix_v3_fta_application_id',\n                            'label': 'event_zabbix_v3_fta_application_id',\n                        }\n                    }),\n                    ('/fta/event/aws/{fta_application_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/event/aws/{fta_application_id}/',\n                            'dest_http_method': 'POST',\n                            'name': 'fta_event_aws_fta_app_id',\n                            'label': 'fta_event_aws_fta_app_id',\n                        }\n                    }),\n                    ('/fta/event/icinga2/{fta_application_id}/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'POST',\n                        'comp_conf': {\n                            'dest_path': '/event/icinga2/{fta_application_id}/',\n                            'dest_http_method': 'POST',\n                            'name': 'fta_event_icinga2_fta_app_id',\n                            'label': 'fta_event_icinga2_fta_app_id',\n                        }\n                    }),\n                    ('/fta/status/process/', {\n                        'comp_codename': 'generic.fta.fta_component',\n                        'is_hidden': True,\n                        'method': 'GET',\n                        'comp_conf': {\n                            'dest_path': '/fta/status/process/',\n                            'dest_http_method': 'GET',\n                            'name': 'fta_status_process',\n                            'label': 'fta_status_process',\n                        }\n                    }),\n\n                )\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/get_app_service_group.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetAppServiceGroup(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取应用绑定的服务组数据-应用授权使用\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | str | 是 | 数据类型 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"code\": 200,\n            \"api_code\": 20008,\n            \"result\": true,\n            \"request_id\": \"xxxxxxxxxxxxxxxxxxxxxx\",\n            \"message\": \"操作成功\",\n            \"data\": [\n                {\n                    ...\n                },\n                ...\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}app-service-group/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/get_delay_of_service.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetDelayOfService(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    应用平台延迟卡片\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | start | datetime | 是 | 过去15分钟的时间 |\n    | end | datetime | 是 | 当前时间 |\n    |app_id | str | 是 | 应用code\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"code\": 200,\n            \"api_code\": 20008,\n            \"result\": true,\n            \"request_id\": \"xxxxxxxxxxxxxxxxxxxxxx\",\n            \"message\": \"操作成功\",\n            \"data\": [\n                {\n                    ...\n                },\n                ...\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        start = forms.Field()\n        end = forms.Field()\n        app_id = forms.Field()\n    \n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"start\", \"end\", \"app_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-delay-of-service/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetInfoForWorkbench(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取工作台首页数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api_name = forms.Field(required=False)\n        data_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api_name\", \"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'get-info-for-workbench/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/get_service_check_alert_for_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetServiceCheckAlertForProm(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取APM监控服务拨测波测和告警数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | str | 是    |  数据类型 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}service-check-alert-for-prom/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/get_service_check_metric_apm.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetServiceCheckMetricApm(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取APM监控服务拨测波测数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | id | int | 是    |  服务拨测ID |\n    | data_type | str | 是    |  数据类型(response_time, probability, history) |\n    | time | list or str | 否   | 间隔时间(3, 12, 24, 168, 720) |\n    | start_time | str | 否    | 开始时间(2020-09-02 18:38:01) |\n    | end_time | str | 否    | 结束时间(2020-10-02 18:38:01)  |\n    | current | str | 否    | 第几页 |\n    | pageSize | str | 否    | 每页数量 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        id = forms.Field(required=True)\n        data_type = forms.Field(required=True)\n        time = forms.Field(required=False)\n        start_time = forms.Field(required=False)\n        end_time = forms.Field(required=False)\n        current = forms.Field(required=False)\n        pageSize = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"id\", \"data_type\", \"time\", \"start_time\", \"end_time\", \"current\", \"pageSize\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-service-check-metric/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {  # tab与4空格\n    \t\"bk_app_code\": \"esb-test-app\",  # 一个tab\n    \t\t\"bk_app_secret\": \"xxx\",  # 2个tab\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(configs.base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/post_service_check_for_app_apm.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostServiceCheckForAppApm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    通过app唯一标识获取APM监控关联的服务拨测\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name_list | list or str | 是    |  应用唯一标识 |\n    | output | list or str | 否   | 输出字段 |\n    | filters | dict | 否    | 筛选 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name_list = forms.Field(required=True)\n        output = forms.Field(required=False)\n        filters = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name_list\", \"output\", \"filters\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-service-check-for-app/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'apm'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/apm/api/apm/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/apm/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/auto/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/auto/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n                ...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None)\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/auto/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/auto/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'auto'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/auto/api/auto/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/auto/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/get_cache_token.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetCacheToken(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    根据用户输入内容获取堡垒机连接用token\r\n \r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | ip | string | 是  | 连接主机的IP地址 |\r\n    | name | string | 是  | 主机名 |\r\n    | ssh_port | int | 是  | 连接端口 |\r\n    | system_type | string | 是  | 系统类型(Linux/Windows) |\r\n    | username | string | 否  | 登陆主机用户名 |\r\n    | ssh_key_id | int | 否  | 使用的秘钥ID |\r\n    | password | string | 否  | 当username存在时为登陆的密码，当ssh_key_id存在时为passphrase |\r\n    | network_proxy | string | 否  | 网络代理 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"ip\": \"\",\r\n        \"name\": \"\",\r\n        \"ssh_port\": \"\",\r\n        \"system_type\": \"\",\r\n        \"username\": \"\",\r\n        \"ssh_key_id\": \"\",\r\n        \"password\": \"\",\r\n        \"network_proxy\": 1,\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        ip = forms.CharField()\r\n        name = forms.CharField()\r\n        ssh_port = forms.IntegerField()\r\n        system_type = forms.CharField()\r\n        username = forms.CharField(required=False)\r\n        ssh_key_id = forms.IntegerField(required=False)\r\n        password = forms.CharField(required=False)\r\n        network_proxy = forms.CharField(required=False)\r\n        timeout = forms.CharField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"ip\", \"name\", \"ssh_port\", \"system_type\", \"username\", \"ssh_key_id\", \"password\", \"network_proxy\", \"timeout\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'get-cache-token/',\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n# from .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取工作台首页数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'get-info-for-workbench/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/get_network_proxy.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetNetworkProxy(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据用户输入内容获取堡垒机连接用token\n \n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | search_type | string | 否  | 搜索类型 |\n    | search_data | string | 否  | 搜索关键字 |\n\n    ### 请求参数示例\n\n        ```python\n \t{\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\",\n        \"data\": [\n            {\n                \"id\": 1,\n                \"name\": \"西区机房代理\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'get-network-proxy/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/keep_strategy_bastion.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass KeepStrategyBastion(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    配置堡垒机各类日志保留天数\n \n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | string | 是  | 操作类型 clean message |\n    | strategy_operation_log | dict | 否  | 操作审计 |\n    | strategy_session_log | dict | 否  | 会话审计 |\n    | strategy_command_log | dict | 否  | 命令审计 |\n    | params | dict | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```python\n \t{\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.CharField()\n        strategy_operation_log = forms.Field(required=False)\n        strategy_session_log = forms.Field(required=False)\n        strategy_command_log = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"strategy_operation_log\", \"strategy_session_log\", \"strategy_command_log\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path=configs.base_api_url + 'keep-strategy/',\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/resource_from_control.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass ResourceFromControl(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    管控添加资源同步至堡垒机\n \n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | resource_type | string | 是  | 资源类型 |\n    | credential | dict | 是  | 凭证 |\n    | data_list | dict | 是  | 资源列表 |\n    | params | dict | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```python\n \t{\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_type = forms.CharField()\n        credential = forms.Field()\n        data_list = forms.Field()\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_type\", \"credential\", \"data_list\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path=configs.base_api_url + 'resource-from-control/',\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/sync_rbac_user_group.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncRbacUserGroup(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步指定用户或用户组\n \n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | sync_type | list | 是  | 同步类型 |\n    | data_info | string | 是  | 同步数据 |\n    ### 请求参数示例\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"sync_type\": \"create_or_update\",\n        \"data_info\": [\n            {\"username\": \"huxingqi\", \"chname\": \"胡兴起\"}\n        ]\n    }\n    ### 返回结果示例\n\n    ```python\n\n        {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        sync_type = forms.Field(required=True)\n        data_info = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"sync_type\", \"data_info\"])\n\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path=\"{}sync_rbac_user_group/\".format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['error_code'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/sync_user_group.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass SyncUserGroup(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    通知同步用户用户组\r\n \r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n \t\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'sync_user_group/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/bastion/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'bastion'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/bastion/api/bastion/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/check_model_data_operation.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass CheckModelDataOperation(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    获取指定模型的指定数据是否有指定操作权限\n\n    ### 请求参数\n      {{ common_args_desc }}\n  \n    #### 接口参数\n \n  \t| 字段    | 类型     | 必选   | 描述       |\n\t| ----- | ------ | ---- | -------- |\n\t| data_list | list | 是    | 数据列表 |\n\t| model_code | str | 是    | 模型名code |\n\t| operation_type | str | 是    | 操作类型 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_list = forms.Field(required=True)\n        model_code = forms.Field(required=True)\n        username = forms.Field(required=False)\n        operation_type = forms.Field(required=True)\n        # pass\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"model_code\", \"data_list\", \"operation_type\", \"username\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}check-model-data-operation/'.format(base_api_url),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/delete_business.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass DeleteBusiness(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    删除业务.应用.服务数据\r\n\r\n    ### 请求参数\r\n      {{ common_args_desc }}\r\n  \r\n    #### 接口参数\r\n \r\n  \t| 字段    | 类型     | 必选   | 描述       |\r\n\t| ----- | ------ | ---- | -------- |\r\n\t| business_list | array | 是    | 业务列表 |\r\n\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        # business_list = ListField()\r\n        business_list = forms.Field()\r\n        # pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"business_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        \r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}delete-business/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/delete_import_inst.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass DeleteImportInst(Component):\r\n    \"\"\"\r\n    apiMethod DELETE\r\n\r\n    ### 功能描述\r\n\r\n    删除已导入的云主机\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | ip_list | array | 是  | 公网ip |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"ip_list\":  [\r\n            \"xxx.xx.x.xxx\", \"xxx.xx.xx.xxx\"\r\n        ]\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"成功删除云主机实例\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        ip_list = forms.Field(label=u'ip_list', required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"ip_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.delete(\r\n                host=configs.host,\r\n                path='{}import-inst/'.format(base_api_url),\r\n                data=json.dumps(data),\r\n                cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/encrypt_text.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass EncryptText(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    加密文本\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | text | str | 是    | 字符串 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"text\": \"str\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data: \"wfgfgdvdfdgbvaemhgbvzshmhgnfbdsafdgbvcbvxcdfghgdsafdngbdv\"\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        text = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['text'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}encrypt-text/'.format(base_api_url),\r\n            params=None,\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get-all-business.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAllBusiness(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有业务以及实例\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云地区列表获取成功\",\r\n        \"data\": [\r\n        {\r\n            \"son\": [\r\n                {\r\n                    \"code\": 11,\r\n                    \"model_code\": \"APPLICATION\",\r\n                    \"data\": {\r\n                        \"APPLICATION_name\": \"商城中台\",\r\n                        \"APPLICATION_ID\": \"SHARE_SERVICE\",\r\n                        \"APPLICATION_STATUS\": \"运行中\",\r\n                        \"APPLICATION_IN_BUSINESS\": \"网上商城\"\r\n                    },\r\n                    \"pk_name\": \"APPLICATION_name\",\r\n                    \"pk_value\": \"网上商城->商城中台\",\r\n                    \"position\": \"yw\",\r\n                    \"import_type\": \"逐条录入\",\r\n                    \"link_inst\": [],\r\n                    \"parent_inst\": \"1\",\r\n                    \"business_code\": \"未分配\"\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"agent_info\": [\r\n                {\r\n                    \"normal\": 0,\r\n                    \"not_install\": 1,\r\n                    \"agent_info\": [\r\n                        {\r\n                            \"ip\": \"xxxxxxxxxxxxxxxx\",\r\n                            \"agent_state\": \"Agent未安装\",\r\n                            \"controller_name\": \"本地服务器\",\r\n                            \"system_type\": \"Linux\",\r\n                            \"parent_inst\": \"xxxx\",\r\n                            \"host_name\": \"xxxxxxxxxxxxxxx\",\r\n                            \"ip_type\": \"外网IP\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-all-business/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_agent_by_business_code.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAgentByBusinessCode(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    根据业务code查询节点情况\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | code | string | 是  | 业务code |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云地区列表获取成功\",\r\n        \"data\": [\r\n        {\r\n            \"normal\": 1,\r\n            \"not_install\": 4,\r\n            \"agent_info\": [\r\n                {\r\n                    \"ip\": \"xxxxxx\",\r\n                    \"agent_state\": \"Agent正常\",\r\n                    \"controller_name\": \"default.None\",\r\n                    \"system_type\": \"Linux\",\r\n                    \"parent_inst\": \"12\"\r\n                },\r\n                {\r\n                    \"ip\": \"\",\r\n                    \"agent_state\": \"Agent未安装\",\r\n                    \"controller_name\": \"default.None\",\r\n                    \"system_type\": \"Linux\",\r\n                    \"parent_inst\": \"12\"\r\n                },\r\n                {\r\n                    \"ip\": \"\",\r\n                    \"agent_state\": \"Agent未安装\",\r\n                    \"controller_name\": \"default.None\",\r\n                    \"system_type\": \"Linux\",\r\n                    \"parent_inst\": \"12\"\r\n                },\r\n                {\r\n                    \"ip\": \"192.169.0.100\",\r\n                    \"agent_state\": \"Agent未安装\",\r\n                    \"controller_name\": \"default.None\",\r\n                    \"system_type\": \"Linux\",\r\n                    \"parent_inst\": \"12\"\r\n                },\r\n                {\r\n                    \"ip\": \"127.0.0.1\",\r\n                    \"agent_state\": \"Agent未安装\",\r\n                    \"controller_name\": \"default.None\",\r\n                    \"system_type\": \"Linux\",\r\n                    \"parent_inst\": \"12\"\r\n                }\r\n            ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        code = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-agent/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_ali_regin_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAliReginList(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    查询阿里云列表(非最新)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20001,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"公有云地区列表获取成功\",\n        \"data\": [\n            {\n              \"RegionId\": \"cn-qingdao\",\n              \"RegionEndpoint\": \"ecs.aliyuncs.com\",\n              \"LocalName\": \"华北 1\"\n            },\n            {\n              \"RegionId\": \"cn-beijing\",\n              \"RegionEndpoint\": \"ecs.aliyuncs.com\",\n              \"LocalName\": \"华北 2\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist()\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}ali-regin/'.format(base_api_url),\n            params=json.dumps(params),\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_all_business.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAllBusiness(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有业务以及实例\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云地区列表获取成功\",\r\n        \"data\": [\r\n        {\r\n            \"son\": [\r\n                {\r\n                    \"code\": 11,\r\n                    \"model_code\": \"APPLICATION\",\r\n                    \"data\": {\r\n                        \"APPLICATION_name\": \"商城中台\",\r\n                        \"APPLICATION_ID\": \"SHARE_SERVICE\",\r\n                        \"APPLICATION_STATUS\": \"运行中\",\r\n                        \"APPLICATION_IN_BUSINESS\": \"网上商城\"\r\n                    },\r\n                    \"pk_name\": \"APPLICATION_name\",\r\n                    \"pk_value\": \"网上商城->商城中台\",\r\n                    \"position\": \"yw\",\r\n                    \"import_type\": \"逐条录入\",\r\n                    \"link_inst\": [],\r\n                    \"parent_inst\": \"1\",\r\n                    \"business_code\": \"未分配\"\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"agent_info\": [\r\n                {\r\n                    \"normal\": 0,\r\n                    \"not_install\": 1,\r\n                    \"agent_info\": [\r\n                        {\r\n                            \"ip\": \"xxxxxxxxxxxxxxxx\",\r\n                            \"agent_state\": \"Agent未安装\",\r\n                            \"controller_name\": \"本地服务器\",\r\n                            \"system_type\": \"Linux\",\r\n                            \"parent_inst\": \"xxxx\",\r\n                            \"host_name\": \"xxxxxxxxxxxxxxx\",\r\n                            \"ip_type\": \"外网IP\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-all-business/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_all_host.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAllHost(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有主机\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | model_code | str | 否   | 模型code |\r\n    | search_type | str | 否   | 筛选字段 |\r\n    | search_data | str | 否   | 筛选数据 |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code = forms.Field()\r\n        search_type = forms.Field(required=False)\r\n        search_data = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'search_type', 'search_data'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}import/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_all_host_info_for_panel.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAllHostInfoForPanel(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取所有主机\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": [\n            ...\n        ]\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-agent-for-panel/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_all_host_v2.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAllHostV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取所有主机v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code | str | 否   | 模型code |\n    | model_code_list | str | 否   | \"主机模型code\" |\n    | search_type | str | 否   | 筛选字段 |\n    | search_data | str | 否   | 筛选数据 |\n    | run_status | str | 否   | 运行状态 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20007,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": {\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        model_code_list = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n        run_status = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'search_type', 'search_data', 'model_code_list', 'run_status'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-all-host-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_application_screen_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetApplicationScreenInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取应用大屏信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}application-screen/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_application_screen_info_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetApplicationScreenInfoV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取应用大屏信息v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}application-screen-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_business_tree.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetBusinessTree(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取指定格式业务数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | str | 否   | BUSINESS,APPLICATION,SERVICE |\n    | params | dict | 否   | 其他参数 |\n\n    ### 返回结果示例\n\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['data_type', 'params'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-all-yw-tree/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_data_by_model_code.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetCmdbDataByModelCode(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    根据模型code获取CMDB的数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code = forms.Field()\r\n        field_list = forms.Field(required=False)\r\n        is_link = forms.Field(required=False)\r\n        auth_username = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'field_list', 'is_link', 'auth_username'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-data-by-model-code/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_data_by_model_code_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetCmdbDataByModelCodeV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    根据模型code获取CMDB的数据v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        field_list = forms.Field(required=False)\n        is_link = forms.Field(required=False)\n        auth_username = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'field_list', 'is_link', 'auth_username'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-data-by-model-code-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_data_for_work_order.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetCmdbDataForWorkOrder(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    根据模型code和字段列表获取资源数据和字段-支持获取连接关联数据(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code | str | 否   | 模型code APPLICATION |\n    | model_field_code_str | dict | 否   | 字段 APPLICATION_name,APPLICATION_VISIBLE_NAME  |\n    | is_auth | dict | 否   | 认证数据 1 |\n    | is_link | dict | 否   | 是否获取连接数据 |\n    | auth_username | dict | 否   | 认证用户名 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field(required=True)\n        model_field_code_str = forms.Field(required=False)\n        field_list = forms.Field(required=False)\n        is_auth = forms.Field(required=False)\n        is_link = forms.Field(required=False)\n        auth_username = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"model_code\", \"model_field_code_str\", \"field_list\", \"is_link\", \"is_auth\", \"auth_username\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params[\"operator\"] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=\"{}get-cmdb_data-for-work-order/\".format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response[\"code\"]\n        if code == 200:\n            result = {\n                \"code\": response[\"code\"],\n                \"api_code\": response[\"successcode\"],\n                \"message\": response[\"message\"],\n                \"result\": True,\n                \"data\": response.get(\"data\", None),\n            }\n        else:\n            result = {\n                \"api_code\": response[\"errcode\"],\n                \"result\": False,\n                \"message\": response[\"message\"]\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_model_tree.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetCmdbModelTree(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取资源平台模型树 模型大类-模型中组-模型\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20007,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": {\n            ...\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_type = forms.Field(required=False)\n        tree = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"model_type\", \"tree\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        data = self.form_data\n\n        # 设置当前操作者\n        data['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}cmdb-model-tree/'.format(base_api_url),\n            params=data,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_host_by_instance.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetHostByInstance(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取实例关联的主机以及其他信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | model_code | str | 是   | 模型code |\r\n    | instances | array | 是   | 实例列表 |\r\n    | var_list | array | 否   | 参数列表 |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n            ...\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code = forms.Field(required=True)\r\n        instances = forms.Field(required=True)\r\n        var_list = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_code\", \"instances\", \"var_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}get-host-by-instance/'.format(base_api_url),\r\n            data=json.dumps(data),\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_import_inst.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetImportInst(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    根据服务商(不输入则获取所有的)获取用户已导入的云主机信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | service | string | 否   | 服务商代号(1为阿里云，2为腾讯云) |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20011,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云地区列表获取成功\",\r\n        \"data\": [\r\n            {\r\n                \"public_ip_address\": \"xxx.xx.xxx.xx\",\r\n                \"private_ip_address\": \"xxx.xx.xxx.xx\",\r\n                \"instance_info\": {\r\n                \"ImageId\": \"xxxxxxxxxxxxxxxxxxxxxxxx.vhd\",\r\n                \"VlanId\": \"\",\r\n                 ......\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        service = forms.CharField()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"service\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}import-inst/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_import_model_tree.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetImportModelTree(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取模型树\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code | str | 否   | 模型code |\n    | data_type | str | 否   | 数据类型 data_tree,model_tree,parent_model_code,parent_model_data_id, |\n    | parent_model_data_id | str | 否   | 父级ID |\n    | search_type | str | 否   | 搜索类型 |\n    | search_data | str | 否   | 搜索数据 |\n    | page | int | 否   | 页码 |\n    | per_page | int | 否   | 页数 |\n    | run_status | str | 否 | 运行状态 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20007,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": {\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        data_type = forms.Field()\n        parent_model_data_id = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n        page = forms.Field(required=False)\n        per_page = forms.Field(required=False)\n        run_status = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'data_type', 'parent_model_data_id', 'search_type', 'search_data', 'model_code_list', 'page', 'per_page', 'run_status'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}import-model-tree/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取资源平台基础聚合信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_info_for_workbench_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetInfoForWorkbenchV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取资源平台基础聚合信息v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-info-for-workbench-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_by_business_code.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInstByBusinessCode(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    通过业务code获取其所有的主机列表\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | code1 | string | 否  | 业务code |\r\n    | code2 | string | 否  | 业务code |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n                code: xx,\r\n                data: {\r\n                    xxx: xxx\r\n                },\r\n                model_code: xxx\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        code1 = forms.Field(required=False)\r\n        code2 = forms.Field(required=False)\r\n        code3 = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"code1\", \"code2\", \"code3\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}host-tran/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_by_rel_data.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInstByRelData(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取模型实例关联模型实例数据\r\n\r\n    ### 请求参数\r\n      {{ common_args_desc }}\r\n  \r\n    #### 接口参数\r\n \r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | inst_model_code | str | 否   | 模型code |\r\n\t| model_code_name | str | 是 | 模型名称 |\r\n\t| field_code | str | 是    | 模型字段 |\r\n\t| search | str | 是   | 搜索 |  \r\n\t| current | int | 是    | 当前页 |\r\n\t| pageSize | int | 是    | 每页数量 |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code_name = forms.Field()\r\n        inst_model_code = forms.Field()\r\n        field_code = forms.Field()\r\n        search = forms.Field(required=False)\r\n        search_type = forms.Field(required=False)\r\n        search_data = forms.Field(required=False)\r\n        current = forms.Field()\r\n        pageSize = forms.Field()\r\n        # pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_code_name\", \"inst_model_code\", \"field_code\", \"search\", \"current\", \"pageSize\", \"search_type\", \"search_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n       # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-inst-by-rel-data/'.format(base_api_url),\r\n            params=params,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_link_tree.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetInstLinkTree(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取实例关联关系树\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code | str | 否   | 模型code |\n    | unique | str | 否   | 唯一标识 |\n    | depth | int | 否   | 连接关系树深度 |\n    | hide_null_relation | bool | 否   | 隐藏空连接 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20007,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": {\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        unique = forms.Field(required=False)\n        depth = forms.Field(required=False)\n        hide_null_relation = forms.BooleanField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'unique', 'depth', 'hide_null_relation'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}inst-link-tree/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_tree.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInstTree(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取实例树\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | code | string | 是    | 业务code |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        code = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['code'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}inst-tree/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_link_inst.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetLinkInst(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取模型实例关联模型实例数据\r\n\r\n    ### 请求参数\r\n      {{ common_args_desc }}\r\n  \r\n    #### 接口参数\r\n \r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | model_code | str | 否   | 模型code |\r\n    | model_code_name | str | 是 | 模型名称 |\r\n    | field_code | str | 是    | 模型字段 |\r\n    | search | str | 是   | 搜索 |\r\n    | current | int | 否    | 当前页 |\r\n    | pageSize | int | 否    | 每页数量 |\r\n    | search_type | str | 否   | 筛选字段 |\r\n    | search_data | str | 否   | 筛选数据 |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code_name = forms.Field()\r\n        model_code = forms.Field()\r\n        field_code = forms.Field()\r\n        search = forms.Field(required=False)\r\n        current = forms.Field(required=False)\r\n        pageSize = forms.Field(required=False)\r\n        search_type = forms.Field(required=False)\r\n        search_data = forms.Field(required=False)\r\n        # pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_code_name\", \"model_code\", \"field_code\", \"search\", \"current\", \"pageSize\", \"search_type\", \"search_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        \r\n        # print(\"esb_params\", params)\r\n\r\n       # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-link-inst/'.format(base_api_url),\r\n            params=params,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_link_model_count.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetLinkModelCount(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取实例关联指定模型总数\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | inst_model_code | str | 是  | 模型code |\r\n    | model_code_name_list | list | 是  | 当前模型实例列表 |\r\n    | field_code_list | dict | 是  | 关联模型字段code列表 |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        inst_model_code = forms.Field(required=True)\r\n        model_code_name_list = forms.Field(required=True)\r\n        field_code_list = forms.Field(required=True)\r\n        # group_list = forms.ListField(required=True)\r\n        pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"inst_model_code\", \"model_code_name_list\", \"field_code_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}get-link-model-count/'.format(base_api_url),\r\n            # params=params,\r\n            data=json.dumps(params),\r\n            # data=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_link_model_data.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetLinkModelData(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    批量获取实例关联指定模型数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | inst_model_code | str | 是  | 模型code |\n    | model_code_name_list | list | 是  | 当前模型实例列表 |\n    | field_code_list | dict | 是  | 关联模型字段code列表 |\n    | data_from | str | 是  | 额外参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        inst_model_code = forms.Field(required=True)\n        model_code_name_list = forms.Field(required=True)\n        field_code_list = forms.Field(required=True)\n        data_from = forms.Field(required=False)\n        model_type = forms.Field(required=False)\n        # group_list = forms.ListField(required=True)\n        pass\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"inst_model_code\", \"model_code_name_list\",\n                                                          \"field_code_list\", \"data_from\", \"model_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-link-model-data/'.format(base_api_url),\n            # params=params,\n            data=json.dumps(params),\n            # data=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_link_model_data_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetLinkModelDataV2(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    批量获取实例关联指定模型数据v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | inst_model_code | str | 是  | 模型code |\n    | model_code_name_list | list | 是  | 当前模型实例列表 |\n    | field_code_list | dict | 是  | 关联模型字段code列表 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        inst_model_code = forms.Field(required=True)\n        model_code_name_list = forms.Field(required=True)\n        field_code_list = forms.Field(required=True)\n        data_from = forms.Field(required=False)\n        # group_list = forms.ListField(required=True)\n        pass\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"inst_model_code\", \"model_code_name_list\", \"field_code_list\", \"data_from\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-link-model-data-v2/'.format(base_api_url),\n            # params=params,\n            data=json.dumps(params),\n            # data=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_model_by_model_group.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetModelByModelGroup(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取模型字段\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n            ...\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_group = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_group\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}model-v2/'.format(base_api_url),\r\n            params=data,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_model_field.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetModelField(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取模型字段\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | model_code | str | 否   | 模型code |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n            {\r\n\t\t\t    code: \"APPLICATION_name\",\r\n\t\t\t\tname: \"名称\",\r\n\t\t\t\tattribute: { },\r\n\t\t\t\tindex: 1,\r\n\t\t\t\tnot_null: true,\r\n\t\t\t\tbuilt_in: null,\r\n\t\t\t\tis_unique: null,\r\n\t\t\t\ttype_name: \"str\",\r\n\t\t\t\tmodel_code: \"APPLICATION\",\r\n\t\t\t\tfield_group_code: \"APPLICATION_default\",\r\n\t\t\t\tis_relationship_field: \"\",\r\n\t\t\t\tis_display: true,\r\n\t\t\t\tdescribe: \"\"\r\n\t\t\t\t},\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code = forms.Field(required=False)\r\n        field_list = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_code\", \"field_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}field/'.format(base_api_url),\r\n            params=data,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_model_group.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetModelGroup(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取模型字段\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n            ...\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_type = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_type\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}model-group-v2/'.format(base_api_url),\r\n            params=data,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_model_instance.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetModelInstance(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    根据模型Code获取该模型的所有实例\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | model_code | string | 是  | 模型Code |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code = forms.Field(required=True)\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_code\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}import/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_tencent_regin_list.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetTencentReginList(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    查询腾讯云地区列表(非最新)\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云地区列表获取成功\",\r\n        \"data\": [\r\n            {\r\n                \"service_provider\": 2,\r\n                \"region_id\": \"ap-beijing\",\r\n                \"region_name\": \"华北地区(北京)\"\r\n            },\r\n            {\r\n                \"service_provider\": 2,\r\n                \"region_id\": \"ap-chengdu\",\r\n                \"region_name\": \"西南地区(成都)\"\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}tencent-regin/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_upload_file.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetUploadFile(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取模型实例关联模型实例数据(暂未找到API)\r\n\r\n    ### 请求参数\r\n      {{ common_args_desc }}\r\n  \r\n    #### 接口参数\r\n \r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | code | str | 否   | 附件code |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        code = forms.Field()\r\n        # pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        \r\n       # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-file-devops/'.format(base_api_url),\r\n            params=params,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n        # 对结果进行解析\r\n        #code = response['code']\r\n        #if code == 200:\r\n        #    result = {\r\n        #        'code': response['code'],\r\n        #        'api_code': response['successcode'],\r\n        #        'message': response['message'],\r\n        #        'result': True,\r\n        #        'data': response.get(\"data\", None),\r\n        #    }\r\n        #else:\r\n        #    result = {\r\n        #        'api_code': response['errcode'],\r\n        #        'result': False,\r\n        #        'message': response['message']\r\n        #    }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = response\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_zc_model.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetZcModel(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取资产全部分组以及模型\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | - | - | -  | -  |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-zc-model/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/get_zc_model_v2.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetZcModelV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取资产全部分组以及模型v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | - | - | -  | -  |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20007,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": {\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-zc-model-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/import_grains_from_control.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass ImportGrainsFromControl(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    导入Grains信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | grains_data | 符合类型 | 是    | 导入信息 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"grains_data\":  {\r\n        'grains_data': {\r\n            'CLOUD_SERVER_HOSTNAME': 'www.xxxxxxxxx.com',\r\n            ....\r\n        },\r\n        'pk_name': 'xxxxxxxxxxxxx',\r\n        'pk_value': 'xxxxxxxxxxx',\r\n        'model_code': 'xxxxxxxxxxxxxxxx',\r\n        'import_type': 'Agent采集',\r\n        'position': 'xxxxxxxxxxx'\r\n    }\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20002,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息创建成功\",\r\n        \"grains_data\": {\r\n            ...\r\n        }\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        grains_data = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['grains_data'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # print(self.request.wsgi_request.COOKIES)\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}import-grains-from-control/'.format(base_api_url),\r\n            # params=json.dumps(params),\r\n            data=json.dumps(params),\r\n            # cookies=self.request.wsgi_request.COOKIES,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/import_grains_from_control_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ImportGrainsFromControlV2(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    从管控平台导入Grains信息v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | grains_data | 符合类型 | 是    | 导入信息 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"grains_data\":  {\n        'grains_data': {\n            'CLOUD_SERVER_HOSTNAME': 'www.xxxxxxxxx.com',\n            ....\n        },\n        'pk_name': 'xxxxxxxxxxxxx',\n        'pk_value': 'xxxxxxxxxxx',\n        'model_code': 'xxxxxxxxxxxxxxxx',\n        'import_type': 'Agent采集',\n        'position': 'xxxxxxxxxxx'\n    }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20002,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\",\n        \"grains_data\": {\n            ...\n        }\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        grains_data = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['grains_data'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # print(self.request.wsgi_request.COOKIES)\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}import-grains-from-control-v2/'.format(base_api_url),\n            # params=json.dumps(params),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/import_inst.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass ImportInst(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    导入实例信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | data | dict | 是    | 实例信息 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"data\": {\r\n            \"data\": {\r\n                \"HOST_name\": \"主机名\",\r\n                \"HOST_IP\": \"127.0.0.1\"\r\n            },\r\n            \"model_code\": \"HOST\",\r\n            \"pk_name\": \"HOST_name\",\r\n            \"pk_value\": \"主机名\"\r\n        }\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息创建成功\",\r\n        \"data\": {\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"#\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        data = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['data'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}import/'.format(base_api_url),\r\n            params=json.dumps(params[\"data\"]),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'data': response.get(\"data\", None),\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/import_network_from_control.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ImportNetworkFromControl(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    同步管控新建网络设备\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data | 符合类型 | 是    | 导入信息 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"grains_data\":  {\n        'data': {\n            'CLOUD_SERVER_HOSTNAME': 'www.xxxxxxxxx.com',\n            ....\n        },\n        'pk_name': 'xxxxxxxxxxxxx',\n        'pk_value': 'xxxxxxxxxxx',\n        'model_code': 'xxxxxxxxxxxxxxxx',\n        'import_type': 'Agent采集',\n        'position': 'xxxxxxxxxxx'\n    }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20002,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\",\n        \"grains_data\": {\n            ...\n        }\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['data'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # print(self.request.wsgi_request.COOKIES)\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}import-network-from-control/'.format(base_api_url),\n            # params=json.dumps(params),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/import_server_from_control.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass ImportServerFromControl(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    从管控导入主机信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | grains_data | 符合类型 | 是    | 导入信息 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"grains_data\":  {\r\n        'grains_data': {\r\n            'CLOUD_SERVER_HOSTNAME': 'www.xxxxxxxxx.com',\r\n            ....\r\n        },\r\n        'pk_name': 'xxxxxxxxxxxxx',\r\n        'pk_value': 'xxxxxxxxxxx',\r\n        'model_code': 'xxxxxxxxxxxxxxxx',\r\n        'import_type': 'Agent采集',\r\n        'position': 'xxxxxxxxxxx'\r\n    }\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20002,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息创建成功\",\r\n        \"grains_data\": {\r\n            ...\r\n        }\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        data = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['data'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # print(self.request.wsgi_request.COOKIES)\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}import-server-from-control/'.format(base_api_url),\r\n            # params=json.dumps(params),\r\n            data=json.dumps(params),\r\n            # cookies=self.request.wsgi_request.COOKIES,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/import_server_from_control_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ImportServerFromControlV2(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    同步管控新建主机v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | grains_data | 符合类型 | 是    | 导入信息 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"grains_data\":  {\n        'grains_data': {\n            'CLOUD_SERVER_HOSTNAME': 'www.xxxxxxxxx.com',\n            ....\n        },\n        'pk_name': 'xxxxxxxxxxxxx',\n        'pk_value': 'xxxxxxxxxxx',\n        'model_code': 'xxxxxxxxxxxxxxxx',\n        'import_type': 'Agent采集',\n        'position': 'xxxxxxxxxxx'\n    }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20002,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\",\n        \"grains_data\": {\n            ...\n        }\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['data'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # print(self.request.wsgi_request.COOKIES)\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}import-server-from-control-v2/'.format(base_api_url),\n            # params=json.dumps(params),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/keep_strategy_cmdb.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\n\nclass KeepStrategyCmdb(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    配置资源平台各类日志保留天数\n \n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | string | 是  | 操作类型 clean message |\n    | strategy_operation_log | dict | 否  | 操作审计 |\n    | strategy_operation_audit | dict | 否  | 模型审计 |\n    | params | dict | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```python\n \t{\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.CharField()\n        strategy_operation_log = forms.Field(required=False)\n        strategy_operation_audit = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"strategy_operation_log\", \"strategy_operation_audit\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}keep-strategy/'.format(base_api_url),\n\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/model_data_create.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ModelDataCreate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    资源仓库新建数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code  | string | 是    | 模型唯一标识 |\n    | username    | string | 是    | 获取人用户名（根据当前用户授权数据获取） |\n    | data        | dict | 否    | 新建的数据 |\n\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        'model_code': 'xxxxxxxxxxxxxxxx',\n        'username': 'huxingqi',\n        'data': {\n            'SERVER_name': 'www.xxxxxxxxx.com',\n            'SERVER_VISIBLE_NAME': 'www.xxxxxxxxx.com',\n            ....\n        },\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20002,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\",\n        \"data\": {\n            ...\n        }\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        username = forms.Field()\n        data = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'username', 'data'])\n\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # print(self.request.wsgi_request.COOKIES)\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}model-data-operation/'.format(base_api_url),\n            # params=json.dumps(params),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/model_data_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ModelDataDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    资源仓库删除数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code  | string | 是    | 模型唯一标识 |\n    | username    | string | 是    | 获取人用户名（根据当前用户授权数据获取） |\n    | code        | dict | 否    | 单条ID |\n\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        'model_code': 'xxxxxxxxxxxxxxxx',\n        'username': 'huxingqi',\n        'data': {\n            'SERVER_name': 'www.xxxxxxxxx.com',\n            'SERVER_VISIBLE_NAME': 'www.xxxxxxxxx.com',\n            ....\n        },\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20002,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\",\n        \"data\": {\n            ...\n        }\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        username = forms.Field()\n        code = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'username', 'code'])\n\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # print(self.request.wsgi_request.COOKIES)\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}model-data-operation/'.format(base_api_url),\n            # params=json.dumps(params),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/model_data_get.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ModelDataGet(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    资源仓库获取指定模型数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code  | string | 是    | 模型唯一标识 |\n    | username    | string | 是    | 获取人用户名（根据当前用户授权数据获取） |\n    | page        | int | 否    | 页码 |\n    | per_page    | int | 否    | 每页数量 |\n    | search_type | string | 否    | 指定字段,模糊搜索 SERVER_name: 指定字段; all：自动识别; SERVER_name,SERVER_VISIBLE_NAME: 多字段使用 , 隔开 |\n    | search_data | string | 否    | 搜索内容 |\n    | find_fields | string | 否    | | 指定字段,精准搜索 SERVER_name: 指定字段; all：自动识别; SERVER_name,SERVER_VISIBLE_NAME: 多字段使用 , 隔开 | |\n    | find_value | string | 否    | 搜索内容 |\n    | code        | int | 否    | 获取单条 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20007,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": {\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        username = forms.Field()\n        page = forms.Field(required=False)\n        per_page = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n        find_fields = forms.Field(required=False)\n        find_value = forms.Field(required=False)\n        code = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'username', 'page', 'per_page', 'search_type',\n                                                          'search_data', 'find_fields', 'find_value', 'code'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}model-data-operation/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/model_data_update.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ModelDataUpdate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    资源仓库修改数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | model_code  | string | 是    | 模型唯一标识 |\n    | username    | string | 是    | 获取人用户名（根据当前用户授权数据获取） |\n    | code    | string | 是    | 修改数据的ID|\n    | data        | dict | 否    | 新建的数据 |\n\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        'model_code': 'xxxxxxxxxxxxxxxx',\n        'username': 'huxingqi',\n        'data': {\n            'SERVER_name': 'www.xxxxxxxxx.com',\n            'SERVER_VISIBLE_NAME': 'www.xxxxxxxxx.com',\n            ....\n        },\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20002,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\",\n        \"data\": {\n            ...\n        }\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        model_code = forms.Field()\n        username = forms.Field()\n        code = forms.Field()\n        data = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['model_code', 'username', 'code', 'data'])\n\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # print(self.request.wsgi_request.COOKIES)\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}model-data-operation/'.format(base_api_url),\n            # params=json.dumps(params),\n            data=json.dumps(params),\n            # cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/post_ali_inst_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PostAliInstInfo(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    根据地区信息查询阿里云实例列表\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | region_list | array | 是    | 阿里云地区id列表 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"region_list\":  [\r\n            \"cn-qingdao\", \"cn-hangzhou\"\r\n        ]\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20002,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云实例详细信息查询成功\",\r\n        \"data\": [\r\n            {\r\n              \"service_provider\": 1,\r\n              \"region_id\": \"cn-qingdao\",\r\n              \"region_name\": \"华北 1\",\r\n              \"instances_count\": 0,\r\n              \"instance\": []\r\n            },\r\n            {\r\n               \"service_provider\": 1,\r\n               \"region_id\": \"cn-beijing\",\r\n               \"region_name\": \"华北 2\",\r\n               \"instances_count\": 0,\r\n               \"instance\": []\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        region_list = forms.Field(label='region_list', required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['region_list'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}ali-inst/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/post_ali_regin_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostAliReginList(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    查询阿里云列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | keyid | string | 是    | 阿里云keyid |\n    | key   | string | 是    | 阿里云key   |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"keyid\":  \"xxxxxxxxxxxxxxxxxxxxxx\",\n        \"key\": \"xxxxxxxxxxxxxxxxxxx\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20001\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"公有云地区列表获取成功\",\n        \"data\": [\n            {\n              \"RegionId\": \"cn-qingdao\",\n              \"RegionEndpoint\": \"ecs.aliyuncs.com\",\n              \"LocalName\": \"华北 1\"\n            },\n            {\n              \"RegionId\": \"cn-beijing\",\n              \"RegionEndpoint\": \"ecs.aliyuncs.com\",\n              \"LocalName\": \"华北 2\"\n            }\n        ]\n    }\n    ```\n\n    \"\"\"\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        keyid = forms.CharField(label=u'keyid', required=True)\n        key = forms.CharField(label=u'key', required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['keyid', 'key'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}ali-regin/'.format(base_api_url),\n            params=json.dumps(params),\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/post_check_collect_task.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostCheckCollectTask(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    检查采集插件采集任务是否使用\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | collect_plugin_list | array | 是  | 采集插件code |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"collect_plugin_list\":  [\n            \"collect_plugin1\", \"collect_plugin2\"\n        ]\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"共有云主机导入成功\",\n        \"data\": [\n            {\n                \"public_ip_address\": \"xxx.xx.xxx.xx\",\n                \"private_ip_address\": \"xxx.xx.xxx.xx\",\n                \"instance_info\": {\n                \"ImageId\": \"xxxxxxxxxxxxxxxxxxxxxxxx.vhd\",\n                \"VlanId\": \"\",\n                 ......\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        collect_plugin_list = forms.Field(label=u'collect_plugin_list')\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"collect_plugin_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}collect-check/'.format(base_api_url),\n            data=json.dumps(params),\n            # data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/post_import_inst.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PostImportInst(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    根据公网IP导入云主机\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | ip_list | array | 是  | 公网ip |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"ip_list\":  [\r\n            \"xxx.xx.x.xxx\", \"xxx.xx.xx.xxx\"\r\n        ]\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"共有云主机导入成功\",\r\n        \"data\": [\r\n            {\r\n                \"public_ip_address\": \"xxx.xx.xxx.xx\",\r\n                \"private_ip_address\": \"xxx.xx.xxx.xx\",\r\n                \"instance_info\": {\r\n                \"ImageId\": \"xxxxxxxxxxxxxxxxxxxxxxxx.vhd\",\r\n                \"VlanId\": \"\",\r\n                 ......\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        ip_list = forms.Field(label=u'ip_list')\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"ip_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}import-inst/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/post_tencent_inst_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PostTencentInstInfo(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    根据地区信息查询腾讯云实例列表\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | region_list | array | 是    | 腾讯云地区id列表 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"region_list\":  [\r\n            \"ap-bangkok\", \"ap-beijing\"\r\n        ]\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20002,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云实例详细信息查询成功\",\r\n        \"data\": [\r\n            {\r\n              \"service_provider\": 2,\r\n              \"region_id\": \"ap-bangkok\",\r\n              \"region_name\": \"亚太地区(曼谷)\",\r\n              \"instances_count\": 0,\r\n              \"instance\": []\r\n            },\r\n            {\r\n              \"service_provider\": 2,\r\n              \"region_id\": \"ap-beijing\",\r\n              \"region_name\": \"华北地区(北京)\",\r\n              \"instances_count\": 1,\r\n              \"instance\": []\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"#\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        region_list = forms.Field(label=u'region_list', required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['region_list'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}tencent-inst/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/post_tencent_regin_list.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PostTencentReginList(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    查询腾讯云地区列表\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | keyid | string | 是    | 阿里云keyid |\r\n    | key   | string | 是    | 阿里云key   |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"keyid\":  \"xxxxxxxxxxxxxxxxxxxxxx\",\r\n        \"key\": \"xxxxxxxxxxxxxxxxxxx\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"公有云地区列表获取成功\",\r\n        \"data\": [\r\n            {\r\n              \"Region\": \"ap-bangkok\",\r\n              \"RegionName\": \"亚太地区(曼谷)\",\r\n              \"RegionState\": \"AVAILABLE\"\r\n            },\r\n            {\r\n              \"Region\": \"ap-beijing\",\r\n              \"RegionName\": \"华北地区(北京)\",\r\n              \"RegionState\": \"AVAILABLE\"\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        keyid = forms.CharField(label=u'keyid', required=True)\r\n        key = forms.CharField(label=u'key', required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['keyid', 'key'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}tencent-regin/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/put_model_group.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PutModelGroup(Component):\r\n    \"\"\"\r\n    apiMethod PUT\r\n\r\n    ### 功能描述\r\n\r\n    更新模型组信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | code | string | 是    | 模型组code |\r\n    | name | string | 是    | 模型组name |\r\n    | model_type | string | 是    | 模型组类型 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"code\": \"wmy_host_admin\",\r\n        \"name\": \"主机管理\",\r\n        \"model_type\": \"zy\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\": {\r\n            \"code\": \"wmy_host_admin\",\r\n            \"name\": \"主机管理\",\r\n            \"model_type\": \"zy\",\r\n            \"built_in\": true\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        code = forms.CharField(label=u'code', required=True)\r\n        name = forms.CharField(label=u'name', required=False)\r\n        model_type = forms.CharField(label=u'model_type', required=False)\r\n        built_in = forms.BooleanField(label=u'built_in', required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['code', 'name', 'model_type', 'built_in'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.put(\r\n            host=configs.host,\r\n            path='{}model-group/'.format(base_api_url),\r\n            params=json.dumps(params),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': data\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'cmdb'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/cmdb/api/cmdb/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_agent_state.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass UpdateAgentState(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    更新节点的Agent情况\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | list | array | 是    | 节点列表 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n         \"list\":[\r\n            {\r\n                \"ip\": \"127.0.0.1\",\r\n                \"agent\": \"Agent正常\",\r\n                \"controller_name\": \"default.None\"\r\n            },\r\n            {\r\n                \"ip\": \"127.0.0.2\",\r\n                \"agent\": \"Agent未安装\",\r\n                \"controller_name\": \"default.None\"\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\":  [\r\n        {\r\n            \"code\": 22,\r\n            \"model_code\": \"SERVER\",\r\n            \"data\": {\r\n                \"SERVER_name\": \"xxxxx\",\r\n                \"SERVER_IN_RACK\": \"xxxxx\",\r\n                \"SERVER_HOSTNAME\": \"xxxxx\",\r\n                \"SERVER_INTERNAL_IP\": \"\",\r\n                \"SERVER_PUBLIC_IP\": \"xxxx\",\r\n                \"SERVER_AGENT_STATE\": \"Agent正常\",\r\n                \"SERVER_CONTROLLER_NAME\": \"default.None\"\r\n            },\r\n            \"pk_name\": \"SERVER_name\",\r\n            \"pk_value\": \"xxxxx\",\r\n            \"position\": \"xx\",\r\n            \"import_type\": \"逐条录入\",\r\n            \"link_inst\": [],\r\n            \"parent_inst\": \"xx\",\r\n            \"business_code\": \"x\"\r\n        }\r\n    ]\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        update_list = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['update_list'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        print(\"params\", params)\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}updata-agent/'.format(base_api_url),\r\n            params=None,\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_agent_state_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass UpdateAgentStateV2(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新节点的Agent情况v2(资源授权认证)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | list | array | 是    | 节点列表 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n         \"list\":[\n            {\n                \"ip\": \"127.0.0.1\",\n                \"agent\": \"Agent正常\",\n                \"controller_name\": \"default.None\"\n            },\n            {\n                \"ip\": \"127.0.0.2\",\n                \"agent\": \"Agent未安装\",\n                \"controller_name\": \"default.None\"\n            }\n        ]\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20001,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\",\n        \"data\":  [\n        {\n            \"code\": 22,\n            \"model_code\": \"SERVER\",\n            \"data\": {\n                \"SERVER_name\": \"xxxxx\",\n                \"SERVER_IN_RACK\": \"xxxxx\",\n                \"SERVER_HOSTNAME\": \"xxxxx\",\n                \"SERVER_INTERNAL_IP\": \"\",\n                \"SERVER_PUBLIC_IP\": \"xxxx\",\n                \"SERVER_AGENT_STATE\": \"Agent正常\",\n                \"SERVER_CONTROLLER_NAME\": \"default.None\"\n            },\n            \"pk_name\": \"SERVER_name\",\n            \"pk_value\": \"xxxxx\",\n            \"position\": \"xx\",\n            \"import_type\": \"逐条录入\",\n            \"link_inst\": [],\n            \"parent_inst\": \"xx\",\n            \"business_code\": \"x\"\n        }\n    ]\n    }\n    ```\n\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        update_list = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['update_list'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}update-agent-v2/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_all_business.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass UpdateAllBusiness(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    更新所有业务.应用.服务数据\r\n\r\n    ### 请求参数\r\n      {{ common_args_desc }}\r\n  \r\n    #### 接口参数\r\n \r\n  \t| 字段    | 类型     | 必选   | 描述       |\r\n\t| ----- | ------ | ---- | -------- |\r\n\t| business_list | array | 是    | 业务列表 |\r\n\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        # business_list = forms.Field(label=u'business_list')\r\n        # business_list = TypeCheckField(label=u'business_list', promise_type=list)\r\n        # business_list = ListField()\r\n        business_list = forms.Field()\r\n        # pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"business_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        \r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}update-all-business/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            # cookies=self.request.wsgi_request.COOKIES,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_all_cloud_host.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass UpdateAllCloudHost(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    更新所有的云主机信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        is_delete = forms.Field(required=False)\r\n        delete_data = forms.Field(required=False)\r\n    \r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"is_delete\", \"delete_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}update-all-cloud-host/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_all_private_host.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass UpdateAllPrivateHost(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    更新所有的私有云主机信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | private_cloud_type | string | 是  | 私有云类型 |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        private_cloud_type = forms.CharField(required=True)\r\n        is_delete = forms.Field(required=False)\r\n        delete_data = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"private_cloud_type\", \"is_delete\", \"delete_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}update-all-private-host/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_cmp_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass UpdateCmpResource(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新云管资源\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | resource_type | string | 是  | 资源类型 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_type = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-cmp-resource/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_k8s_cluster.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass UpdateK8sCluster(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新容器平台资源：集群、命名空间、节点\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | cluster_unique | string | 否 | 集群唯一标识 |\n    | is_delete | string | 否 | 是否删除CMDB资源 |\n    | delete_data| string | 否 | 要删除的集群相关信息 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        cluster_unique = forms.CharField(required=False)\n        is_delete = forms.Field(required=False)\n        delete_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"cluster_unique\", \"is_delete\", \"delete_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-k8s-cluster/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_k8s_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass UpdateK8sResource(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新容器平台资源\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | resource_type | string | 是  | 资源类型 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_type = forms.CharField(required=True)\n        cluster_unique = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_type\", \"cluster_unique\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-k8s-resource/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmdb/update_link_inst.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass UpdateLinkInst(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    更新连接关系\r\n\r\n    ### 请求参数\r\n      {{ common_args_desc }}\r\n  \r\n    #### 接口参数\r\n \r\n  \t| 字段    | 类型     | 必选   | 描述       |\r\n\t| ----- | ------ | ---- | -------- |\r\n\t| method | str | 是    | 请求方法（POST, DELETE） |\r\n\t| model_code | str | 是    | 模型名code |\r\n\t| model_code_name | str | 是    | 模型名 |\r\n\t| field_code | str | 是    | 字段code(增加) |\r\n\t| target_code_list | list | 是    | 字段code（删除） |\r\n\t| target_code | int | 是    | 关联的目标code |\r\n\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        model_code = forms.Field()\r\n        model_code_name = forms.Field()\r\n        field_code = forms.Field()\r\n        target_code_list = forms.Field(required=False)\r\n        target_code = forms.Field(required=False)\r\n        method = forms.Field()\r\n        # pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"model_code\", \"model_code_name\", \"field_code\", \"target_code\", \"method\", \"target_code_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        \r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}update-link-inst/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            # cookies=self.request.wsgi_request.COOKIES,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/check_user_resource_quota.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass CheckUserResourceQuota(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    校验用户所属部门配额\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data | string | 是  | 校验用户所属部门配额相关参数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}check-user-resource-quota/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/data_for_screen.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass DataForScreen(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    大屏数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}data-for-screen/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/get_all_cloud_host.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetAllCloudHost(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有云主机详情\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-all-host/'.format(configs.base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/get_all_private_host.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetAllPrivateHost(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有私有云主机详情\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n    \r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | private_cloud_type | string | 是  | 私有云类型 | \r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        private_cloud_type = forms.CharField(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"private_cloud_type\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-all-private-host/'.format(configs.base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/get_cmp_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetCmpResource(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取云管相关数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | resource_type | string | 是  | 资源类型 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_type = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-resource-for-cmdb/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取工作台首页数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/get_support_cloud_vendor_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetSupportCloudVendorResource(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取支持申请的云厂商以及资源\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}support-cloud-vendor-resource/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/post_cloud_vendor_resource_parameters.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostCloudVendorResourceParameters(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取要申请资源所需的参数\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data | string | 是  | 要申请资源相关参数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        cloud_type = forms.CharField(required=True)\n        access_type = forms.CharField(required=True)\n        access_id = forms.CharField(required=True)\n        resource_type = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"cloud_type\", \"access_type\", \"access_id\", \"resource_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}cloud-vendor-resource-parameters/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/post_support_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostSupportResource(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    申请云资源\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data | string | 是  | 申请资源相关参数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}support-resource/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n                ...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'cmp'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/cmp/api/cmp/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/cmp/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/app_related_projects.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass AppRelatedProjects(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取已关联仓库\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name | str | 是 | 应用的唯一标识 |\n    | search_type | str | 否 | 要查找的数据类型 |\n    | search_data | str | 否 | 要查找的关键词 |\n    | current | int | 否 | 当前页面 |\n    | pageSize | int | 是 | 每页要展示的条数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"page\": 1,\n            \"per_page\": 10,\n            \"total\": 0,\n            \"data\": []\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name = forms.CharField(required=True)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n        current = forms.IntegerField(required=False)\n        pageSize = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name\", \"search_type\", \"search_data\", \"current\", \"pageSize\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}app-related-projects/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/app_unrelated_projects.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass AppUnrelatedProjects(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取未关联仓库\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name | str | 是 | 应用的唯一标识 |\n    | search_type | str | 否 | 要查找的数据类型 |\n    | search_data | str | 否 | 要查找的关键词 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": []\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name = forms.CharField(required=True)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}app-unrelated-projects/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/create_gitlab_user.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass CreateGitlabUser(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    创建gitlab用户\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | name | str | 是 | gitlab用户名称 |\n    | username | str | 是 | gitlab用户用户名 |\n    | email | str | 是 | gitlab用户邮箱 |\n    | password | str | 是 | gitlab用户密码 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20001,\n        \"message\": \"信息创建成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        name = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        email = forms.CharField(required=True)\n        password = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"name\", \"username\", \"email\", \"password\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}create-gitlab-user/'.format(configs.base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/gitlab_repository_url.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GitlabRepositoryUrl(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取自己参与的项目且成员角色大于开发者的项目地址列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": [\n            {\n                \"project_id\": \"xxx\",\n                \"project_name\": \"xxx\",\n                \"describe\": \"xxxxxxx\",\n                \"ssh_clone\": \"xxxxxxxxxxx\",\n                \"http_clone\": \"xxxxxxxxxxxx\"\n            },\n            {\n                \"project_id\": \"xxx\",\n                \"project_name\": \"xxx\",\n                \"describe\": \"xxxxx\",\n                \"ssh_clone\": \"xxxxxxx\",\n                \"http_clone\": \"xxxxxxxx\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}gitlab-repository-url/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/relate_project.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass RelateProject(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    关联项目\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name | str | 是 | 应用唯一标识 |\n    | relate_project_list | str | 是 | 要进行关联的项目 |\n\n    ### 请求参数示例\n\n    ```python\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {}\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name = forms.CharField(required=True)\n        relate_project_list = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name\", \"relate_project_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}relate-project/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/sync_devops_application.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncDevopsApplication(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步应用平台全部应用\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20006,\n        \"message\": \"操作成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}sync-devops-application/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'code'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/code/api/code/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/code/unrelate_project.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass UnrelateProject(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    取消关联项目\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name | str | 是 | 应用唯一标识 |\n    | unrelate_project_list | str | 是 | 要进行关联的项目 |\n\n    ### 请求参数示例\n\n    ```python\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {}\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name = forms.CharField(required=True)\n        unrelate_project_list = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name\", \"unrelate_project_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}unrelate-project/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/data_for_screen.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass DataForScreen(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    大屏数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}data-for-screen/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/event_type_count.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\nclass EventTypeCount(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取事件信息统计\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}event-type-count/'.format(base_api_url),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_agent_file_stats.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAgentFileStats(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取Agent的文件状态信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_name | string | 是  | 主机名 |\r\n    | file_name | string | 否  | 文件名 |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_name = forms.Field()\r\n        file_name = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_name\", \"file_name\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-host-file-info/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_agent_group_list.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAgentGroupList(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取主机全部分组列表，包括全部分组未分组-搜索使用\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}group-list/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_agent_info_by_group.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAgentInfoByGroup(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    按照分组的形式获取Agent信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-agent-group/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_agent_net_work.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAgentNetWork(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取Agent的端口情况\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    location ~ ^/doc/(.*) {\r\n        proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\r\n        proxy_pass_header Server;\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header X-Real-IP $remote_addr;\r\n        proxy_set_header X-Scheme $scheme;\r\n        proxy_set_header Host $http_host;\r\n        proxy_redirect off;\r\n        proxy_read_timeout 600;\r\n\r\n    }\r\n    | ----- | ------ | ---- | -------- |\r\n    | name | string | 是  | 主机名 \r\n    | ip | string | 是  | ip |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        name = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"name\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-agent-network/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_agent_ps_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAgentPsInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取节点的进程信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_name = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_name\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-agent-ps-info/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_alarm_rank.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAlarmRank(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取报警排名\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | search_type | string | 否  | 分类搜索类型 |\r\n    | search_data | string | 否  | 分类搜索内容 |\r\n    | group_id | string | 否  | 主机组id |\r\n    | host_id | string | 否  | 主机id |\r\n    | create_min_time | string | 否  | 开始时间 |\r\n    | create_max_time | string | 否  | 结束时间 |\r\n    | severity | array | 否  | 分类搜索内容 |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        search_type = forms.Field(required=False)\r\n        search_data = forms.Field(required=False)\r\n        group_id = forms.Field(required=False)\r\n        host_id = forms.Field(required=False)\r\n        create_min_time = forms.Field(required=False)\r\n        create_max_time = forms.Field(required=False)\r\n        severity = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\r\n                \"search_type\",\r\n                \"group_id\",\r\n                \"host_id\",\r\n                \"create_min_time\",\r\n                \"create_max_time\",\r\n                \"search_data\",\r\n                \"severity\",\r\n            ])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}alarm-rank/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_all_host_group.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAllHostGroup(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有主机组（基础监控）\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        token_data = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-all-host-group/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_all_host_group_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAllHostGroupProm(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取所有主机组(应用监控)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        token_data = forms.Field(required=False)\n        system_type = forms.Field(required=False)\n        host_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\", \"system_type\", \"host_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-all-host-group-prom/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_all_network_group.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAllNetworkGroup(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取所有网路设备组（基础监控）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        token_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-all-network-group/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_all_zabbix_agent.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAllZabbixAgent(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取ZabbixAgent的情况\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-all-zabbix-agent/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_asset_collect.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetAssetCollect(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取全部资产插件\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | - | - | -  | - |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"request_id\": \"xxxxxxxxxxxxxxxx\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息信息获取成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-asset-collect/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['error_code'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_control_agent_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetControlAgentInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取管控平台Agent列表\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | token_data | str | 是  | token |\r\n    | system_type | str | 是  | 系统类型 |\r\n    | host_type | str | 是  | 主机类型 |\r\n    | name | str | 是  | 主机名模糊搜索 |\r\n    | ip | str | 是  | 主机IP模糊搜索 |\r\n    | show_name | str | 是  | 主机显示模糊搜索 |\r\n    | group_type | string | 是  | 分组ID |\r\n    | search_type | string | 是  | 搜索字段 |\r\n    | search_data | string | 是  | 搜索内容 |\r\n    | group_level | string | 是  | 获取主机分组深度 |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        token_data = forms.Field(required=True)\r\n        system_type = forms.Field(required=False)\r\n        host_type = forms.Field(required=False)\r\n        group_type = forms.Field(required=False)\r\n        name = forms.Field(required=False)\r\n        show_name = forms.Field(required=False)\r\n        ip = forms.Field(required=False)\r\n        search_type = forms.Field(required=False)\r\n        search_data = forms.Field(required=False)\r\n        group_level = forms.Field(required=False)\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\", \"system_type\", \"system_type\", \"host_type\",\r\n                                                          \"name\", \"show_name\", \"ip\", \"group_type\", \"search_type\",\r\n                                                          \"search_data\", \"group_level\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        # bk_token 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}get-host-info/'.format(base_api_url),\r\n            params=None,\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_controller.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetController(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    通过控制器的name获取控制器信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | name | string | 否  | 控制器name |\r\n    | id | string | 否  | 控制器id |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        name = forms.Field(required=False)\r\n        id = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"name\", \"id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}controller/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_controller_for_panel.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetControllerForPanel(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    通过控制器的name获取控制器信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_name | string | 是  | 主机名 |\r\n    | ip | string | 是  | IP |\r\n    | ip_type | string | 是  | IP类型 |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        data = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['data'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}get-controller-for-panel/'.format(base_api_url),\r\n            params=json.dumps(params[\"data\"]),\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'data': data,\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_controller_proxy.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetControllerProxy(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取Proxy控制器信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | search_type | str | 否   | 筛选字段 |\n    | search_data | str | 否   | 筛选数据 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}controller-proxy/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_grafana_server.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetGrafanaServer(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取Grafana Server\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | -- | -- | -- | -- |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}grafana/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_history_event_count.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetHistoryEventCount(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取历史事件统计\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        days = forms.IntegerField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"days\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}histroy-event-count/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_host_info_for_develop.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetHostInfoForDevelop(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取主机组下的主机（应用平台）\n\n    ### 请求参数\n    \n    {{ common_args_desc }}\n    \n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | page | int | 是    |  页码 |\n    | pageSize | int | 是    |  页码 |\n    | token_data | str | 是    |  token |\n    | app_name_list | list or str | 是    |  应用唯一标识 |\n    | filters | dict | 否    | 筛选 |\n    | order_by | dict | 否    | 排序 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        page = forms.Field()\n        pageSize = forms.Field()\n        token_data = forms.Field(required=True)\n        app_name_list = forms.Field(required=True)\n        filters = forms.Field(required=False)\n        order_by = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name_list\", \"page\", \"pageSize\", \"filters\", \"token_data\", \"order_by\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-host-info-for-develop/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_host_info_for_monitor.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetHostInfoForMonitor(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取主机组下的主机(基础监控)\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        page = forms.Field()\r\n        pageSize = forms.Field()\r\n        token_data = forms.Field(required=True)\r\n        filter = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"page\", \"pageSize\", \"filter\", \"token_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}get-host-info-for-monitor/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_host_info_for_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetHostInfoForProm(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取主机组下的主机（应用监控）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        page = forms.Field()\n        pageSize = forms.Field()\n        token_data = forms.Field(required=True)\n        filter = forms.Field(required=False)\n        filter_dict = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"page\", \"pageSize\", \"filter\", \"token_data\", \"filter_dict\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-host-info-for-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_host_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetHostList(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取主机列表(模拟告警使用)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}host-list/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_info_for_monitor_workbench.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetInfoForMonitorWorkbench(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取基础监控告警信息--工作台概览页使用\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api_name = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api_name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-monitor-info-for-workbench/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取大屏相关信息--工作台概览页使用\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_manual_add_agent.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetManualAddAgent(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取管控平台手动添加的Agent信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        type = forms.Field(required=False)\r\n        token_data = forms.Field(required=False)\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"type\", \"token_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}agent-admin/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_metric_install_package_log_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetMetricInstallPackageLogToProm(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取数据接入，下载指标插件安装包日志\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | request_id | string | 是  | request_id |\n    | log_type | string | 是  | 日志类型 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        request_id = forms.CharField(required=True)\n        log_type = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"request_id\", \"log_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}install-metric-package-log-to-prom/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_minion_file.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass GetMinionFile(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    获取Agent主机文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | host_name | list | 是  | 主机唯一标识 |\n    | file_path | string | 是  | 文件绝对路径 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_name\":  \"unique value1\",\n        \"file_path\": \"/opt/uploads/xxx/xxx/xxx.py\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    file\n    or\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        host_name = forms.Field(required=True)\n        file_path = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"host_name\", \"file_path\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-minion-file/'.format(base_execution_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response.get(\"errcode\"),\n                'result': False,\n                'message': response.get(\"message\"),\n                'errors': response.get(\"errors\"),\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_monitor_alert_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetMonitorAlertInfo(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Zabbbix获取告警\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | zabbix_id | str | 是    |  prom ID |\n    | output | list | 是    | 输出字段 |\n    | param | list | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        zabbix_id = forms.Field(required=False)\n        output = forms.Field(required=False)\n        param = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"zabbix_id\", \"output\", \"param\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-monitor-alert-info/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_monitor_resource_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetMonitorResourceInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取已经监控纳管的主机等实例（云管平台）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_type = forms.Field(required=False)\n        monitor_type = forms.Field(required=False)\n        data_type = forms.Field(required=False)\n        load_info = forms.Field(required=False)\n        params = forms.Field(required=False)\n        filter = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_type\", \"monitor_type\", \"data_type\", \"load_info\", \"params\", \"filter\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-monitor-resource-info/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_network_info_for_monitor.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNetworkInfoForMonitor(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取组下的网路设备(基础监控)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        page = forms.Field()\n        pageSize = forms.Field()\n        token_data = forms.Field(required=True)\n        filter = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"page\", \"pageSize\", \"filter\", \"token_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-network-info-for-monitor/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_prom_alert_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPromAlertInfo(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Prom获取告警\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | output | list | 是    | 输出字段 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        output = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"output\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-prom-alert-info/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_prom_alertmanager_alerts.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPromAlertmanagerAlerts(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取告警组列表(alertmanager)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述  |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是    |  prom ID |\n    | params | dict(json) | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field()\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}prom-get-alertmanager-alerts/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_prom_alertmanager_alerts_groups.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPromAlertmanagerAlertsGroups(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取告警组列表(alertmanager)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述  |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是    |  prom ID |\n    | params | dict(json) | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field()\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}prom-get-alertmanager-alerts-groups/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_prom_alertmanager_silence.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPromAlertmanagerSilence(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取静默规则(alertmanager)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述  |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是    |  prom ID |\n    | silence_id | dict | 否  | ID |\n    | params | dict | 否  | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field()\n        silence_id = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"silence_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}prom-alertmanager-silence/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_prom_metadata.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPromMetadata(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Prom获取指标信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | params | list | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-prom-metadata/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_prom_rule_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPromRuleInfo(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Prom获取规则\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | output | list | 是    | 输出字段 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        output = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"output\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-prom-rule-info/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_request_id_status.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_execution_api_url\r\n\r\n\r\nclass GetRequestIdStatus(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    根据Request ID获取任务状态\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | request_id | string | 是  | 请求ID |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"request_id\": \"xxxxxxxxxxxxxxxx\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息信息获取成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        request_id = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"request_id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}record/'.format(base_execution_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_send_file_v2_request_id_status.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass GetSendFileV2RequestIdStatus(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    根据Request ID获取任务状态(发送文件v2)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | request_id | string | 是  | 请求ID |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"request_id\": \"xxxxxxxxxxxxxxxx\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": [\n            ...\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        request_id = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"request_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-send-file-res/'.format(base_execution_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_status_playbook_record.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass GetStatusPlaybookRecord(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    根据Request ID获取执行状态Playbook任务状态\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | request_id | string | 是  | 请求ID |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"request_id\": \"xxxxxxxxxxxxxxxx\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": [\n            ...\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        request_id = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"request_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}status-playbook-record/'.format(base_execution_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_zabbix_server_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetZabbixServerList(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取Zabbix Server实例列表(基础监控Zabbix模板使用)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-zabbix-server-list/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_zabbix_template.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetZabbixTemplate(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取Zabbix监控模板\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        id = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-zabbix-template/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/get_zabbix_template_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetZabbixTemplateList(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n     获取Zabbix Server实例模板(基础监控Zabbix模板使用)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        params = forms.Field(required=False)\n        zabbix_id = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"params\", \"zabbix_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-zabbix-template-list/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/host_admin_from_group_to_job.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass HostAdminFromGroupToJob(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    按照分组获取主机信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | group_id | int/str | 是  | 分组ID 1 or \"1,2,3\" |\r\n    | token_data | string | 是  | token |\r\n    | username | string | 是  | 用户名用来定位授权分组 |\r\n\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        token_data = forms.Field(required=False)\r\n        group_id = forms.Field(required=True)\r\n        username = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\", \"group_id\", \"username\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}host-admin-from-group-to-job/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/host_group_to_job.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass HostGroupToJob(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有主机分组，包括主机数量\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | group_list | list | 是  | 分组id列表 |\r\n    | filters | dict | 是  | 搜索参数 |\r\n    | token_data | string | 是  | token |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        group_list = forms.Field(required=True)\r\n        filters = forms.Field(required=False)\r\n        token_data = forms.Field(required=False)\r\n        # group_list = forms.ListField(required=True)\r\n        pass\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"group_list\", \"filters\", \"token_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}host-group-to-job/'.format(base_api_url),\r\n            # params=params,\r\n            data=json.dumps(params),\r\n            # data=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/host_monitor_type_count.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass HostMonitorTypeCount(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取监控类型统计\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}host-monitor-type-count/'.format(base_api_url),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/host_problem_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\nclass HostProblemInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取主机告警详情\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | data_type | string | 否  | 请求类型 |\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        data_type = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}host-problem-info/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/monitor_event_acknowledge.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorEventAcknowledge(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Zabbix告警事件的操作\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | event_id | int | 是  | 告警事件ID |\n    | host_id | int | 否  | 实例ID(管控实例ID) |\n    | zabbix_host_id | int | 否  | 实例ID(Zabbix实例ID) |\n    | device_type | str | 是  | 实例类型 |\n    | action | int | 是  | 操作类别 |\n    | message | str | 否  | 消息内容 |\n    | severity | int | 否 | 告警级别 |\n    | suppress_until | int | 否 | 被抑制到的Unix时间戳 |\n    | event_params | Dict | 否  | 其他参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_id\":  1\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\",\n        \"data\": [\n            ...\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        event_id = forms.Field(required=True)\n        host_id = forms.Field(required=False)\n        zabbix_host_id = forms.Field(required=False)\n        device_type = forms.Field(required=False)\n        action = forms.Field(required=False)\n        message = forms.Field(required=False)\n        severity = forms.Field(required=False)\n        suppress_until = forms.Field(required=False)\n        event_params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"event_id\", \"host_id\", \"zabbix_host_id\", \"device_type\", \"action\", \"message\", \"severity\", \"suppress_until\", \"event_params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}zabbix-event-acknowledge/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/monitor_event_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorEventInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取主机告警事件操作详情\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | host_id | int | 是  | 实例ID |\n    | device_type | int | 否  | 实例类型 |\n    | eventid | int | 否  | 事件ID支持多个用, 隔开 |\n    | ack | int | 否  | 包含操作记录 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        host_id = forms.Field(required=False)\n        device_type = forms.Field(required=False)\n        eventid = forms.Field(required=False)\n        ack = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"host_id\", \"device_type\", \"eventid\", \"ack\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}zabbix-event-info/'.format(base_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/monitor_host_count.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n# monitor-host-count/\r\nclass MonitorHostCount(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取监控主机统计\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}monitor-host-count/'.format(base_api_url),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_file.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_execution_api_url\r\n\r\n\r\nclass PostFile(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    文件分发\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_list | list | 是  | 主机唯一标识列表 |\r\n    | file_url | string | 是  | 文件相对路径URL |\r\n    | file_path | string | 是  | 文件目标路径 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\r\n        \"file_url\": \"uploads/xxx/xxx/xxx.py\",\r\n        \"file_path\": \"/tmp/\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"操作成功\",\r\n        \"data\": \"xxxxxxx\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_list = forms.Field()\r\n        file_url = forms.Field()\r\n        file_path = forms.Field()\r\n        timeout = forms.IntegerField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_list\", \"file_url\", \"file_path\", \"timeout\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}file/'.format(base_execution_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['error_code'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'request_data': params\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_func.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_execution_api_url\r\n\r\n\r\nclass PostFunc(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    执行模块\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_list | list | 是  | 主机唯一标识列表 |\r\n    | func | string | 是  | 执行模块名 |\r\n    | param | string | 否  | 执行参数 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\r\n        \"command\": \"ls\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"操作成功\",\r\n        \"data\": \"xxxxxxx\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_list = forms.Field()\r\n        func = forms.Field()\r\n        param = forms.Field(required=False)\r\n        timeout = forms.IntegerField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_list\", \"func\", \"param\", \"timeout\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}func/'.format(base_execution_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['error_code'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'request_data': params\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_metric_collect_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostMetricCollectToProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    获取全部指标采集\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | filters | dict | 否    | 筛选条件  {\"name\": \"MySQL\"}|\n    | output | dict | 否    | 输出字段 \"all\" [\"id\", \"name\"] |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        filters = forms.Field(required=False)\n        output = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"filters\", \"output\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}metric-collect-to-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_metric_expr_get_value.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostMetricExprGetValue(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据指标表达式获取相关数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | expr_list | list |  是  | 表达式列表(包含model_code,unique,expr)  |\n    | zabbix_expr_list | list |  否  | zabbix表达式列表  |\n    | prom_expr_list | list | 否   | prometheus表达式列表 |\n    | data_ype | str |  否 | 数据类型 |\n    | params | dict |  否 | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        expr_list = forms.Field(required=False)\n        zabbix_expr_list = forms.Field(required=False)\n        prom_expr_list = forms.Field(required=False)\n        data_ype = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"expr_list\", \"zabbix_expr_list\", \"prom_expr_list\", \"data_ype\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}metric-expr-get-value/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_metric_inst_status_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostMetricInstStatusToProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    获取实例状态\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | dict |  是  | Prometheus Server  |\n    | model_code | dict | 是   | 模型字段 |\n    | host_list | dict |  是 | 主机列表 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=False)\n        model_code = forms.Field(required=False)\n        host_list = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"model_code\", \"host_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}metric-inst-status-to-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_metric_install_package_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostMetricInstallPackageToProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    数据接入，安装指标采集插件（执行安装脚本）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | metric_plugin_code | str | 是    |  指标采集唯一标识 |\n    | metric_parameter_list | list | 是    | 指标采集参数 |\n    | host_list | list | 是    | 主机列表 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        metric_plugin_code = forms.CharField(required=True)\n        metric_parameter_list = forms.Field(required=False)\n        host_list = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"metric_plugin_code\", \"metric_parameter_list\", \"host_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}install-metric-package-to-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_metric_register_prom_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostMetricRegisterPromToProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    注册主机安装的插件到Prometheus\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述   |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | dict | 是    |Prometheus ID|\n    | metric_plugin_code | dict | 是    | 指标插件唯一标识 |\n    | consul_type | str | 是    | 注册还是注销 register or deregister |\n    | host_list | dict | 是  | 主机列表或分组列表 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        metric_plugin_code = forms.CharField(required=True)\n        host_list = forms.Field(required=True)\n        consul_type = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"metric_plugin_code\", \"host_list\", \"consul_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}register-prom-to-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_metric_send_package_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostMetricSendPackageToProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    数据接入，发送指标采集安装包\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | metric_plugin_code | str | 是    |  指标采集唯一标识 |\n    | host_list | list | 是    | 主机列表 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        metric_plugin_code = forms.CharField(required=True)\n        host_list = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"metric_plugin_code\", \"host_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}send-metric-package-to-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_new_prom_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostNewPromInfo(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    刷新主机最新Prom监控信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | str | 是    | 数据类型 |\n    | data_info | dict | 否    | 数据内容 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.Field()\n        data_info = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"data_info\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-new-prom-info/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_new_zabbix_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostNewZabbixInfo(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    刷新主机最新zabbix监控信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | str | 是    | 数据类型 |\n    | data_info | dict | 否    | 数据内容 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.Field()\n        data_info = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"data_info\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-new-zabbix-info/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_prom_tree_to_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostPromTreeToProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    获取全部Prometheus Server数据（含分组）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | filters | dict | 否    | 筛选条件  {\"name\": \"MySQL\"}|\n    | output | dict | 否    | 输出字段 \"all\" [\"id\", \"name\"] |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        filters = forms.Field(required=False)\n        output = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"filters\", \"output\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-tree-to-prom/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_script.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_execution_api_url\r\n\r\n\r\nclass PostScript(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    执行脚本\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_list | list | 是  | 主机唯一标识列表 |\r\n    | script_url | string | 是  | 脚本相对路径URL |\r\n    | script_arg | string | 否  | 脚本参数 |\r\n    | timeout | string | 是  | 超时时间 |\r\n\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\r\n        \"script_url\": \"uploads/xxx/xxx/xxx.py\",\r\n        \"script_arg\": \"arg1 arg2 arg3\"\r\n        \"timeout\": 600\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"操作成功\",\r\n        \"data\": \"xxxxxxx\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_list = forms.Field()\r\n        script_url = forms.Field()\r\n        script_arg = forms.Field(required=False)\r\n        timeout = forms.IntegerField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_list\", \"script_url\", \"script_arg\", \"timeout\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}script/'.format(base_execution_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'request_data': params\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_script_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass PostScriptV2(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行脚本V2,在cmdb实例绑定的主机上执行\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | instances | list | 是  | CMDB实例唯一标识列表 |\n    | script_url | string | 是  | 脚本相对路径URL |\n    | args | string | 否  | 脚本参数 |\n    | run_user | string | 否  | 脚本参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\n        \"script_url\": \"uploads/xxx/xxx/xxx.py\",\n        \"script_arg\": \"arg1 arg2 arg3\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        instances = forms.Field()\n        script_url = forms.Field()\n        args = forms.Field(required=False)\n        run_user = forms.Field(required=False)\n        timeout = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"instances\", \"script_url\", \"args\", \"run_user\", \"timeout\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}script-v2/'.format(base_execution_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_send_file_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass PostSendFileV2(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    文件分发,支持多文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | hosts | list | 是  | 主机唯一标识列表 |\n    | file_url_list | string | 是  | 文件相对路径URL列表 |\n    | end_path | string | 是  | 文件目标路径 |\n    | owner | string | 否  | 授权用户 |\n    | group | string | 否  | 授权组 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\n        \"file_url\": \"uploads/xxx/xxx/xxx.py\",\n        \"file_path\": \"/tmp/\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        hosts = forms.Field(required=True)\n        file_url_list = forms.Field(required=True)\n        end_path = forms.Field(required=False)\n        owner = forms.Field(required=False)\n        group = forms.Field(required=False)\n        timeout = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"hosts\", \"file_url_list\", \"end_path\", \"owner\", \"group\", \"timeout\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}send-file-v2/'.format(base_execution_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response.get(\"errcode\"),\n                'result': False,\n                'message': response.get(\"message\"),\n                'errors': response.get(\"errors\"),\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_shell.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_execution_api_url\r\n\r\n\r\nclass PostShell(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    执行命令\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_list | list | 是  | 主机唯一标识列表 |\r\n    | command | string | 是  | 执行命令 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\r\n        \"command\": \"ls\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"操作成功\",\r\n        \"data\": \"xxxxxxx\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_list = forms.Field()\r\n        command = forms.Field()\r\n        timeout = forms.IntegerField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_list\", \"command\", \"timeout\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}shell/'.format(base_execution_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['error_code'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'request_data': params\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_status_playbook_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass PostStatusPlaybookDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除模板文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | folder_type | string | 是  | 类型 |\n    | temp_id | string | 否  | 模板id |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\n        \"folder_type\": \"\",\n        \"temp_id\": \"\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        folder_type = forms.Field(required=False)\n        temp_id = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"folder_type\", \"temp_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}status-playbook-delete/'.format(base_execution_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_status_playbook_run.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass PostStatusPlaybookRun(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行状态，playbook\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | host_list | list | 是  | 主机唯一标识列表 |\n    | args | string | 是  | 参数 |\n    | is_test | string | 否  | 是否测试 | \n    | run_type | string | 否  | 执行类型1状态2 playbook |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\n        \"args\": \"uploads/xxx/xxx/xxx.py\",\n        \"is_test\": True,\n        \"run_type\": \"1\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        host_list = forms.Field()\n        run_type = forms.Field()\n        args = forms.Field(required=False)\n        is_test = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"host_list\", \"run_type\", \"args\", \"is_test\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}status-playbook-run/'.format(base_execution_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/post_status_playbook_update.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_execution_api_url\n\n\nclass PostStatusPlaybookUpdate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新模板文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | folder_type | string | 是  | 类型 |\n    | temp_info | string | 否  | 模板数据 | \n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\n        \"folder_type\": \"\",\n        \"temp_info\": \"\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        folder_type = forms.Field(required=False)\n        temp_info = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"folder_type\", \"temp_info\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}status-playbook-update/'.format(base_execution_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/problem_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass ProblemInfo(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    查询监控问题信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | page | int | 否  | 页码 |\r\n    | pageSize | int | 否  | 每页数据量 |\r\n    | filter | object | 否  | 筛选对象 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"page\": 1,\r\n        \"pageSize\": 10,\r\n\t\t\"filter\": {\r\n\t\t\t...\r\n\t\t}\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        page = forms.Field()\r\n        pageSize = forms.Field()\r\n        filter = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"filter\", \"page\", \"pageSize\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}problem-info/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_config_reload.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromAlertmanagerConfigReload(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    加载Alertmanager配置文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | params | list | 是    | 其他参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-alertmanager-config-reload/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_create_alert.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromAlertmanagerCreateAlert(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Alertmanager创建告警\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述  |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | alerts | list(json) | 是    | 告警信息 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        alerts = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"alerts\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-create-alert/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_create_or_update.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromAlertmanagerCreateOrUpdate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新alertmanager配置-通知策略\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是  | Prom实例 |\n    | yml_str | string | 是  | 规则 |\n    | yaml_dict | dict | 是  | 文件名 |\n    | params | string | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"prom_id\": 1,\n        \"yml_str\": \"group ...\",\n        \"yaml_dict\": {},\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\":  {\n            'file_name': '1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml',\n            'file_url': '/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml'}\n    }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        yml_str = forms.Field(required=True)\n        yaml_dict = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"yml_str\", \"yaml_dict\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-alertmanager-create-or-update/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_create_or_update_silence.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromAlertmanagerCreateOrUpdateSilence(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    创建静默规则(alertmanager)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是  | Prom实例 |\n    | silence_dict | dict | 是  | 静默信息 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"prom_id\": 1,\n        \"yml_str\": \"group ...\",\n        \"yaml_dict\": {},\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\":  \"xxx-xxx-xxx-xxx-xxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        silence_dict = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"silence_dict\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-alertmanager-silence/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_delete_silence.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromAlertmanagerDeleteSilence(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除静默规则(alertmanager)\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是  | Prom实例 |\n    | silence_id | dict | 是  | ID |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"prom_id\": 1,\n        \"silence_id\": \"aa\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\":  \"\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        silence_id = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"silence_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}prom-alertmanager-silence/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_config_reload.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromConfigReload(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    加载配置文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | params | list | 是    | 其他参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-config-reload/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_rules_create_or_update.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromRulesCreateOrUpdate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新Prometheus规则\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是  | Prom实例 |\n    | yml_str | string | 是  | 规则 |\n    | file_name | string | 否  | 文件名 |\n    | params | string | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"prom_id\": 1,\n        \"yml_str\": \"group ...\",\n        \"file_name\": \"xxx-rules.yml\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\":  {\n            'file_name': '1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml',\n            'file_url': '/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml'}\n    }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field()\n        yml_str = forms.Field()\n        file_name = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"yml_str\", \"file_name\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-rules-create-or-update/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_rules_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\nclass PromRulesDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除Prometheus规则\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是  | Prom实例 |\n    | file_url | file_url | 是  | 文件地址 |\n    | params | string | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"prom_id\": 1,\n        \"file_url\": \"/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field()\n        file_url = forms.Field()\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"file_url\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-rules-delete/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_rules_query_syntax_check.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromRulesQuerySyntaxCheck(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    Prom告警规则语法规则检测\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | int | 是  | Prom实例 |\n    | query | string | 是  | 表达式 |\n    | params | string | 是  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"prom_id\": 1,\n        \"yml_str\": \"group ...\",\n        \"file_name\": \"xxx-rules.yml\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\":  {\n            'file_name': '1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml',\n            'file_url': '/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml'}\n    }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        query = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"query\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-rules-query-syntax-check/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_run_query.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromRunQuery(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据Prom执行指标查询语句并获取到数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | prom_id | str | 是    |  prom ID |\n    | query | str | 是    |  promQL |\n    | params | list | 是    | 其他参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        prom_id = forms.Field(required=True)\n        query = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"prom_id\", \"query\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-run-query/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_server_check_create_or_update.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromServerCheckCreateOrUpdate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新服务拨测yml文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | proxy_id | int | 是  | Prom实例 |\n    | yml_str | string | 是  | 规则 |\n    | file_name | string | 否  | 文件名 |\n    | params | string | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"proxy_id\": 1,\n        \"yml_str\": \"group ...\",\n        \"file_name\": \"xxx-rules.yml\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\":  {\n            'file_name': '1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml',\n            'file_url': '/opt/opsany/uploads/prometheus-config/rules/1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml'}\n    }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        proxy_id = forms.Field()\n        yml_str = forms.Field()\n        file_name = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"proxy_id\", \"yml_str\", \"file_name\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-server-check-create-or-update/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'errors': response.get('errors', \"\"),\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/prom_server_check_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PromServerCheckDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除服务拨测yml文件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | proxy_id | int | 是  | Prom实例 |\n    | file_name | string | 是  | 文件名称 |\n    | params | string | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"proxy_id\": 1,\n        \"file_url\": \"1f34a5bf0ec24d0db8e4efbddecfe703-rules.yml\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        proxy_id = forms.Field()\n        file_name = forms.Field()\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"proxy_id\", \"file_name\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}prom-server-check-delete/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'errors': response.get('errors', \"\"),\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/receive_action_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\nclass ReceiveActionInfo(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    接收监控平台信息转发至工作台\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | receive_user | string | 是  | 发送者 |\r\n    | title | string | 是  | 标题 |\r\n    | message | string | 是  | 信息内容 |\r\n    | host_name | string | 是  | 主机唯一标识 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"信息发送成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        receive_user = forms.Field(required=False)\r\n        title = forms.Field(required=False)\r\n        message = forms.Field(required=False)\r\n        host_name = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"receive_user\", \"title\", \"message\", \"host_name\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}receive-action-info/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/search_application.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\nclass SearchApplication(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    搜索主机应用集\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_id | int | 是  | 主机id |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_id = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}search-application/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/search_host.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SearchHost(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    监控平台筛选主机组\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | group_id | int | 否  | 主机组id |\r\n    | search | string | 否  | 关键词 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        search = forms.Field(required=False)\r\n        group_id = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"search\", \"group_id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}search-host/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/search_host_group.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SearchHostGroup(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    监控平台筛选主机组\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_id | int | 否  | 主机id |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        search = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"search\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}search-host-group/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/search_trigger.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SearchTrigger(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    搜索触发器的\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_id | int | 否  | 主机id |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_id = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}search-trigger/'.format(base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/send_message_from_monitor.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\nclass SendMessageFromMonitor(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    接收监控平台信息转发至工作台\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | name | string | 否  | 主机名 |\r\n    | IP | string | 否  | 主机IP |\r\n    | zabbix_host_id | string | 否  | Zabbix主机ID |\r\n    | message | string | 否  | 信息内容 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"信息发送成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        name = forms.Field(required=False)\r\n        ip = forms.Field(required=False)\r\n        zabbix_host_id = forms.Field(required=False)\r\n        message = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"name\", \"ip\", \"zabbix_host_id\", \"message\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}send-message-from-monitor/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/stackstorm.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass Stackstorm(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    拉取StackStorm服务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}stackstorm/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/stop_or_start_monitor.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass StopOrStartMonitor(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    停用/启用主机监控\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_id | int | 是  | 主机id |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_id = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}stop-or-start-zabbix/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/subnet_scan_ip_port.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SubnetScanIpPort(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    扫描IP端口服务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | scan_type | str | 否  | 扫描类型 nmap|\n    | proxy_id | int | 是  | 控制器ID 1 |\n    | ip_start | str | 是  | 起始IP 192.168.0.111|\n    | ip_end | str | 是  | 结束IP 192.168.0.200|\n    | port_list | list | 否  | 端口范围 [\"0-800\", \"8000\"]|\n    | timeout | int | 否  | 超时时间 600|\n    | params | dict | 否  | 其他参数 {} |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"host_id\":  1\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息更新成功\",\n        \"data\": [\n            ...\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        scan_type = forms.Field(required=False)\n        proxy_id = forms.Field(required=True)\n        ip_start = forms.Field(required=True)\n        ip_end = forms.Field(required=True)\n        port_list = forms.Field(required=False)\n        timeout = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"scan_type\", \"proxy_id\", \"ip_start\", \"ip_end\", \"port_list\", \"timeout\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}ip-port-scan/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/subnet_scan_ip_port_result.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SubnetScanIpPortResult(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取扫描IP端口服务结果数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | scan_type | string | 否  |扫描 |\n    | request_id | string | 否  | 任务ID |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        scan_type = forms.Field(required=False)\n        request_id = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"scan_type\", \"request_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}ip-port-scan-result/'.format(base_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'control'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/control/api/control/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\nbase_execution_api_url = \"/{}/control/api/execution/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/control/update_host_sign_variable_template.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass UpdateHostSignVariableTemplate(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    修改主机-标记，变量，监控模板\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | name | string | 否  | 主机名 |\r\n    | IP | string | 否  | 主机IP |\r\n    | zabbix_host_id | string | 否  | Zabbix主机ID |\r\n    | message | string | 否  | 信息内容 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_id\":  1\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"信息发送成功\",\r\n        \"data\": [\r\n            ...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        id = forms.Field()\r\n        template_list = forms.Field(required=False)\r\n        sign_list = forms.Field(required=False)\r\n        variable_list = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"id\", \"template_list\", \"sign_list\", \"variable_list\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}update-host-sign-variable-template/'.format(base_api_url),\r\n            # data=params,\r\n            data=json.dumps(params),\r\n            # json=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        \r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/dashboard/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/dashboard/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"#\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/dashboard/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/dashboard/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'dashboard'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/dashboard/api/dashboard/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/dashboard/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_step.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployStep(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    内置部署步骤\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 否  | 单条步骤code |\n    | all_parameter | bool | 否  | 是否获取全部字段 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.Field(required=False)\n        all_parameter = forms.Field(required=False)\n    \n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"all_parameter\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}deploy-step/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTask(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | list_type | str | 否  | 列表类型 |\n    | application | int | 否  | 应用code |\n    | code | int | 否  | 单条任务 |\n    | all_data | bool | 否  | 全部数据 |\n    | current | int | 否  | 页码 |\n    | pageSize | int | 否  | 页数 |\n    | search_type | str | 否  | 搜索字段 |\n    | search_data | str | 否  | 搜索数据 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        list_type = forms.Field(required=True)\n        application = forms.IntegerField(required=True)\n        code = forms.IntegerField(required=False)\n        all_data = forms.BooleanField(required=False)\n        current = forms.IntegerField(required=False)\n        pageSize = forms.IntegerField(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"list_type\", \"application\", \"code\", \"all_data\", \"current\", \"pageSize\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}deploy-task/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_cancel.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskCancel(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    取消执行任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述   |\n    | ----- | ------ | ---- | -------- |\n    | task_code | string | 是  | 任务ID |\n    | task_log_code | string | 是  | task_log_code |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        task_code = forms.Field(required=True)\n        task_log_code = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"task_code\", \"task_log_code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}deploy-task-cancel/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_clone.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskClone(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    克隆部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | id | string | 是  | 任务ID |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        id = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}deploy-task-clone/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_create.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskCreate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    创建部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application | string | 是  | 应用ID |\n    | description | string | 是  | 描述 |\n    | name | string | 是  | 任务名称 |\n    | parameter_list | string | 是  | 参数数据 |\n    | step_list | string | 是  | 步骤数据 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application = forms.Field(required=True)\n        description = forms.Field(required=False)\n        name = forms.Field(required=True)\n        parameter_list = forms.Field(required=False)\n        step_list = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application\", \"description\", \"name\", \"parameter_list\", \"step_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}deploy-task/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application | string | 是  | 应用ID |\n    | code | string | 是  | 描述 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application = forms.Field(required=True)\n        code = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application\", \"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}deploy-task/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_log.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskLog(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取部署任务日志\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application | int | 否  | 应用code |\n    | task_code | str | 否  | 任务code |\n    | task_log_code | int | 否  | 日志code |\n    | all_data | bool | 否  | 全部数据 |\n    | current | int | 否  | 页码 |\n    | pageSize | int | 否  | 页数 |\n    | search_type | str | 否  | 搜索字段 |\n    | search_data | str | 否  | 搜索数据 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application = forms.Field(required=False)\n        task_code = forms.Field(required=True)\n        task_log_code = forms.IntegerField(required=False)\n        all_data = forms.BooleanField(required=False)\n        current = forms.IntegerField(required=False)\n        pageSize = forms.IntegerField(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application\", \"task_code\", \"task_log_code\", \"all_data\", \"current\", \"pageSize\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}deploy-task-log/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_run.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskRun(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | string | 是  | 任务code |\n    | run_parameter_list | string | 是  | 执行参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n        run_parameter_list = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"run_parameter_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}deploy-task-run/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_update.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTaskUpdate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    修改部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application | string | 是  | 应用ID |\n    | code | string | 是  | 描述 |\n    | description | string | 是  | 描述 |\n    | name | string | 是  | 任务名称 |\n    | parameter_list | string | 是  | 参数数据 |\n    | step_list | string | 是  | 步骤数据 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application = forms.Field(required=True)\n        code = forms.Field(required=True)\n        description = forms.Field(required=False)\n        name = forms.Field(required=True)\n        parameter_list = forms.Field(required=False)\n        step_list = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application\", \"code\", \"description\", \"name\", \"parameter_list\", \"step_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}deploy-task/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_template.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTemplate(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取部署模板\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 否  | 获取单个部署模板 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.Field(required=False)\n    \n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}deploy-template/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/deploy_template_group.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeployTemplateGroup(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取部署模板分组\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 否  | 获取单个组 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.Field(required=False)\n    \n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}deploy-template-group/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/get_deploy_task.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetDeployTask(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前应用下的持续部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | str | 是 | 应用的code |\n    | search_type | str | 否 | 要查找的数据类型 |\n    | search_data | str | 否 | 要查找的关键词 |\n    | current | int | 否 | 当前页面 |\n    | pageSize | int | 是 | 每页要展示的条数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"current\": 1,\n            \"pageSize\": 20,\n            \"total\": 1,\n            \"data\": [\n                {\n                    \"code\": 3,\n                    \"log_count\": 1,\n                    \"last_run_log\": 5,\n                    \"name\": \"持续部署11\",\n                    \"create_user\": \"xiongqianyuan\",\n                    \"description\": \"这是测试部署11\",\n                    \"st2_file_name\": \"910e8f7dad3edb520f2-3\",\n                    \"created_at\": \"2024-01-02 15:14:28\",\n                    \"application\": {\n                        \"code\": 3,\n                        \"model_code\": \"APPLICATION\",\n                        \"APPLICATION_name\": \"18737338\",\n                        \"APPLICATION_VISIBLE_NAME\": \"OsAnyosany\"\n                    },\n                    \"task_last_run_log\": {\n                        \"code\": 5,\n                        \"status\": \"running\",\n                        \"start_timestamp\": null,\n                        \"end_timestamp\": null,\n                        \"elapsed_seconds\": null,\n                        \"created_at\": \"2024-04-28 18:15:42\",\n                        \"run_username\": {\n                            \"id\": XXX,\n                            \"username\": \"XXXXXX\",\n                            \"ch_name\": \"XXX\"\n                        }\n                    }\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n        current = forms.IntegerField(required=False)\n        pageSize = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"search_type\", \"search_data\", \"current\", \"pageSize\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-deploy-task/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/get_home_page.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetHomePage(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前应用下持续部署资源统计\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | str | 是 | 应用的code |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"deploy_task_count\": 1,\n            \"seven_days_deploy_log_all_count\": 0,\n            \"seven_days_deploy_log_status\": {\n                \"seven_days_deploy_success_count\": 0,\n                \"seven_days_deploy_fail_count\": 0\n            },\n            \"daily_success_counts\": [\n                {\n                    \"date\": \"2024-05-04\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-05\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-06\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-07\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-08\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-09\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-10\",\n                    \"success_count\": 0\n                }\n            ],\n            \"daily_error_counts\": [\n                {\n                    \"date\": \"2024-05-04\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-05\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-06\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-07\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-08\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-09\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-10\",\n                    \"error_count\": 0\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-home-page/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/run_deploy_task_rollback.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass RunDeployTaskRollback(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行持续部署任务回调\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | log_id | string | 是  | 日志ID |\n    | params | string | 是  | 参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"log_id\": \"log_id\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        log_id = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"log_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}api/run-deploy-task-rollback/'.format(base_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/run_deploy_task_v3.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass RunDeployTaskV3(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行持续部署任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application_name | string | 是  | 应用唯一标识 |\n    | deploy_name | string | 是  | 持续部署名称 |\n    | run_parameter_list | string | 是  | 持续部署参数 |\n    | req_source | string | 是  |执行方式 |\n    | app_from | string | 是  | 调用应用 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application_name = forms.CharField(required=True)\n        deploy_name = forms.Field(required=True)\n        run_parameter_list = forms.Field(required=False)\n        req_source = forms.Field(required=False)\n        app_from = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application_name\", \"deploy_name\", \"run_parameter_list\", \"req_source\", \"app_from\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}api/run-deploy-v3/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"#\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'deploy'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/deploy/api/deploy/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/deploy/upload_script.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass UploadScript(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    持续部署上传脚本\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | file | file | 是  | 脚本文件 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        file = forms.FileField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"file\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}upload-script/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/application_user_role.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass ApplicationUserRole(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取应用权限\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": [\n            {\n                \"application\": \"测试应用\",\n                \"user_info\": \"xxxx\"\n            },\n            {\n                \"application\": \"OpsAny一体化运维平台\",\n                \"user_info\": \"xxxxx\"\n            },\n            {\n                \"application\": \"OpsAny智能运维平台\",\n                \"user_info\": \"xxxxxxx\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}application-user-role/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/business_application.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BusinessApplication(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取业务以及应用\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n    ### 接口参数\n\n    | 字段   |  类型   | 必选 | 描述            |\n    | ----- | ------ | ---- | -------- |\n    | type | str | 否 | 获取数据的类型 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": [\n            {\n                \"code\": 1,\n                \"unique_code\": \"xxxx\",\n                \"name\": \"应用分组\",\n                \"type\": \"BUSINESS\",\n                \"children\": [\n                    {\n                        \"name\": \"OpsAny智能运维平台\",\n                        \"unique_code\": \"xxxxx\",\n                        \"type\": \"APPLICATION\"\n                    },\n                    {\n                        \"name\": \"OpsAny一体化运维平台\",\n                        \"unique_code\": \"xxxxx\",\n                        \"type\": \"APPLICATION\"\n                    }\n                ]\n            },\n            {\n                \"code\": 2,\n                \"unique_code\": \"xxxxxx\",\n                \"name\": \"应用分组2\",\n                \"type\": \"BUSINESS\",\n                \"children\": [\n                    {\n                        \"name\": \"xxxxxx\",\n                        \"unique_code\": \"xxxxxxx\",\n                        \"type\": \"APPLICATION\"\n                    }\n                ]\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}business-application/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/business_tree.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass BusinessTree(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取应用平台业务树\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        data_type = forms.Field(required=False)\r\n        tree_depth = forms.Field(required=False)\r\n        auth_user = forms.Field(required=False)\r\n        search_type = forms.Field(required=False)\r\n        search_data = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n    def clean(self):\r\n        return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"tree_depth\", \"auth_user\", \"search_type\", \"search_data\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}business-tree/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/business_tree_old.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass BusinessTree(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取应用平台业务树\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20007,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": {\r\n        \t\"test\": \"test\"\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"#\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}business-tree'.format(base_api_url),\r\n            params=data,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],       # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/create_application.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass CreateApplication(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    创建一ing用\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data | dict | 是  | 应用相关参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        'model_code': 'APPLICATION',\n        'data': {\n            'APPLICATION_VISIBLE_NAME': 'XXX',\n            'APPLICATION_name': 'OpsAny-Test-unique-20257311018',\n            'APPLICATION_ID': 'OpsAny-Test-application-20207311018',\n            'APPLICATION_STATUS': '运行中',\n            'APPLICATION_COMMENT': '<p>comment</p>',\n            'APPLICATION_CeShi': ''XXX'',\n            'APPLICATION_XiaLaCaiDan': '001',\n            'APPLICATION_DuoXingWenBen': ''XXX' ',\n            'APPLICATION_ZhengShu': 5,\n            'APPLICATION_FuDianXing': 3,\n            'APPLICATION_RiQi': '2025-07-31 10:23:43',\n            'APPLICATION_DaoQiShiJian': '2025-07-31 10:18:59',\n            'APPLICATION_FuHeShuJu': [{\n                '01': '002'\n            }, {\n                '01': '001'\n            }],\n            'APPLICATION_MiMa': 'password123',\n            'APPLICATION_LianJie': 'www.xxx.com',\n            'APPLICATION_FuDianXingShuZi': 4,\n            'APPLICATION_ZhengShu01': 3,\n            'APPLICATION_ZiFuChuan': 'dsfafgdsafsdaf sfdsf',\n            'APPLICATION_FuWenBen': '<p>dsaagfdg富文本</p>',\n            'APPLICATION_IN_BUSINESS': 1\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        code: 200\n        data: {code: 49, model_code: \"APPLICATION\", ......}\n        message: \"信息创建成功\"\n        successcode: 20001\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}application/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/data_for_screen.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass DataForScreen(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    大屏数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}data-for-screen/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/get_applications.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetApplications(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取应用平台全部应用\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": [\n            {\n                \"app_visible_name\": \"XXXXX\",\n                \"app_name\": \"XXX\",\n                \"app_id\": null\n            },\n            {\n                \"app_visible_name\": \"XXXXXX\",\n                \"app_name\": \"XXX\",\n                \"app_id\": \"123\"\n            },\n            {\n                \"app_visible_name\": \"XXXXX\",\n                \"app_name\": \"XXX\",\n                \"app_id\": \"yy18738587338\"\n            },\n            {\n                \"app_visible_name\": \"XXXXX\",\n                \"app_name\": \"test\",\n                \"app_id\": null\n            },\n            {\n                \"app_visible_name\": \"测试应用\",\n                \"app_name\": \"test\",\n                \"app_id\": \"2024513\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}applications/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/get_auth_application_host_to_job.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAuthApplicationHostToJob(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    作业平台通过应用维度获取主机（从cmdb获取绑定的主机并过滤管控纳管以及授权），\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        token_data = forms.Field(required=True)\n        app_name = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\", \"app_name\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-auth-application-host/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/get_auth_application_tree_to_job.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAuthApplicationTreeToJob(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取业务树，过滤权限，作业平台通过应用维度选择主机\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        token_data = forms.Field(required=True)\n        data_type = forms.Field(required=False)\n        tree_depth = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"token_data\", \"data_type\", \"tree_depth\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-auth-application-tree/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/get_business_auth_count.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetBusinessAuthCount(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取应用平台授权业务应用服务总数\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}business-auth-count/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取工作台首页数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/get_test.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\nCopyright © 2012-2017 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetTest(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    测试ESB\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述        |\r\n    | ----- | ------ | ---- | -------- |\r\n    | model_code | str | 否   | 模型code |\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n         \"code\": 200,\r\n         \"apicode\": 20007,\r\n         \"result\": true,\r\n         \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n         \"message\": \"相关信息获取成功\",\r\n         \"data\": {\r\n             \"test\": \"test\"\r\n         }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n         pass\r\n\r\n         # clean方法返回的数据可通过组件的form_data属性获取\r\n         def clean(self):\r\n             return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n         # 获取Form clean处理后的数据\r\n         data = self.form_data\r\n\r\n         # 设置当前操作者\r\n         data['operator'] = self.current_user.username\r\n\r\n         # 请求系统接口\r\n         response = self.outgoing.http_client.get(\r\n             host=configs.host,\r\n             path='{}test/'.format(base_api_url),\r\n             params=data,\r\n             cookies=self.request.wsgi_request.COOKIES\r\n         )\r\n\r\n         # 对结果进行解析\r\n         code = response['code']\r\n         if code == 200:\r\n             result = {\r\n                  'code': response['code'],\r\n                  'api_code': response['successcode'],\r\n                  'message': response['message'],\r\n                  'result': True,\r\n                  'data': response['data'],        # 在这里处理返回的数据，可以处理让用户不想看到的内容\r\n             }\r\n         else:\r\n             result = {\r\n                  'api_code': response['errcode'],\r\n                  'result': False,\r\n                  'message': response['message']\r\n             }\r\n\r\n         # 设置组件返回结果，payload为组件实际返回结果\r\n         self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/git_project.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PostScript(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    执行脚本\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | host_list | list | 是  | 主机唯一标识列表 |\r\n    | script_url | string | 是  | 脚本相对路径URL |\r\n    | script_arg | string | 否  | 脚本参数 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"host_list\":  [\"unique value1\", \"unique value2\", \"unique value3\"],\r\n        \"script_url\": \"uploads/xxx/xxx/xxx.py\",\r\n        \"script_arg\": \"arg1 arg2 arg3\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"操作成功\",\r\n        \"data\": \"xxxxxxx\"\r\n    }\r\n    ```\r\n    \"\"\"#\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        host_list = forms.Field()\r\n        script_url = forms.Field()\r\n        script_arg = forms.Field(required=False)\r\n        timeout = forms.IntegerField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"host_list\", \"script_url\", \"script_arg\", \"timeout\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}script/'.format(base_api_url.replace(\"api/control/v0_1/\", \"api/execution/v0_1/\")),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['error_code'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'request_data': params\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/nexus_project.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass NexusProject(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    执行脚本\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | download_url | string | 是  | 下载路径 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"downloadUrl\":  \"http:nexus_url.com/repository/demo/demo.py\",\r\n        \"script_arg\": \"arg1 arg2 arg3\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"操作成功\",\r\n        \"data\": \"xxxxxxx\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        download_url = forms.Field()\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"download_url\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}nexus-project/'.format(base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'request_data': params\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/run_deploy_v3.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass RunDeployV3(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行持续部署\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application_name | string | 是  | 应用唯一标识 |\n    | deploy_name | string | 是  | 持续部署名称 |\n    | run_parameter_list | string | 是  | 持续部署参数 |\n    | req_source | string | 是  |执行方式 |\n    | app_from | string | 是  | 调用应用 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application_name = forms.CharField(required=True)\n        deploy_name = forms.Field(required=True)\n        run_parameter_list = forms.Field(required=False)\n        req_source = forms.Field(required=False)\n        app_from = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application_name\", \"deploy_name\", \"run_parameter_list\", \"req_source\", \"app_from\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}api/run-deploy-v3/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/run_pipeline_v3.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass RunPipelineV3(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行流水线\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述    |\n    | ----- | ------ | ---- | -------- |\n    | application_name | string | 是  | 应用唯一标识 |\n    | job_name | string | 是  | 流水线名称 |\n    | parameters | string | 是  | 流水线参数 |\n    | req_source | string | 是  |执行方式 |\n    | app_from | string | 是  | 调用应用 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"application_name\": \"opsany\",\n        \"job_name\": \"job_name\",\n        \"req_source\": \"API调用\",\n        \"app_from\": \"workbench\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application_name = forms.CharField(required=True)\n        job_name = forms.Field(required=True)\n        parameters = forms.Field(required=False)\n        req_source = forms.Field(required=False)\n        app_from = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application_name\", \"job_name\", \"parameters\", \"req_source\", \"app_from\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}api/run-pipeline-v3/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/sync_stackstorm_from_control.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SyncStackstormFromControl(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    同步管控来的st2配置数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | url | string | 是  | 服务地址 |\n    | api_key | string | 是  | key |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        url = forms.CharField(required=True)\n        api_key = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"url\", \"api_key\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}sync-stackstorm-from-control/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'devops'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/devops/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/devops/api/devops/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/keep_strategy_event.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\n\nclass KeepStrategyEvent(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    配置事件中心各类日志保留天数\n \n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | string | 是  | 操作类型 clean message |\n    | event_alert_log | dict | 否  | 告警 |\n    | params | dict | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```python\n \t{\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.CharField()\n        event_alert_log = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"event_alert_log\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}keep-strategy/'.format(configs.base_api_url),\n\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/sync_stackstorm_from_control.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncStackstormFromControl(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    同步管控来的st2配置数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | url | string | 是  | 服务地址 |\n    | api_key | string | 是  | key |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        url = forms.CharField(required=True)\n        api_key = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"url\", \"api_key\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}sync-stackstorm-from-control/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'event'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/event/api/event/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/event/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/data_for_screen.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass DataForScreen(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    大屏数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}data-for-screen/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetInfoForWorkbench(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取Agent的文件状态信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-info-for-workbench/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/get_run_result_by_log_id.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetRunResultByLogId(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取作业或脚本执行结果\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | task_log_id  | str  |  是  | 日志ID |\n    | params  | dict  |  否 | 其他参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        task_log_id = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"task_log_id\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-run-result-by-log-id/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/get_tool_market_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetToolMarketList(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取工具市场中的作业或脚本\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | data_type  | str  |  否  | 工具类型 job：作业 script：脚本 all: 全部 |\n    | id     | int    |  否  | 指定ID作业或脚本 |\n    | job_id     | int    |  否  | 指定作业ID获取作业详情 |\n    | script_id     | int    |  否  | 指定脚本ID获取脚本详情 |\n    | script_name     | str    |  否  | 脚本名称 |\n    | create_user     | str    |  否  | 创建人 用户名或中文名 |\n    | visible     | str    |  否  | 可见范围 1：私有 2：公开 |\n    | script_type     | str    |  否  | 脚本类型(脚本参数)： sh, py, ps1, bat|\n    | search_type     | str    |  否  | 搜索 |\n    | search_data     | str    |  否  | 搜索 |\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.CharField(required=False)\n        id = forms.IntegerField(required=False)\n        job_id = forms.IntegerField(required=False)\n        script_id = forms.IntegerField(required=False)\n        script_name = forms.CharField(required=False)\n        create_user = forms.CharField(required=False)\n        visible = forms.CharField(required=False)\n        script_type = forms.CharField(required=False)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"id\", \"job_id\", \"script_id\", \"script_name\",\n                                                          \"create_user\", \"visible\", \"script_type\", \"search_type\",\n                                                          \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}tool-market-list/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/run_job_by_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass RunJobById(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据作业ID执行作业\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | job_id     | int    |  是  | 作业ID   |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"xxxx\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"platform_cname\":  \"workbench\",\n        \"task_id\":  10\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"status_code\": 0,\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        job_id = forms.IntegerField()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"job_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        data = self.request.wsgi_request.body\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}run-job-by-id/'.format(configs.base_api_url),\n            data = data,\n            params = params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/run_script_by_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass RunScriptById(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据脚本ID执行脚本\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | script_id     | int    |  是  | 脚本ID   |\n    | parameter     | str    |  否  | 位置参数   |\n    | script     | str    |  否  | 脚本内容 |\n    | run_describe     | str    |  否  | 运行原因 |\n    | script_type     | str    |  否  | 脚本类型  |\n    | server_type     | str    |  否  | 主机类型 默认 host_name  host_name:主机唯一标识 ip: 主机IP|\n    | server     | list    |  否  | 主机列表 多条主机使用逗隔开 |\n    | time_out     | str    |  否  | 超时时间  |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"xxxx\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"platform_cname\":  \"workbench\",\n        \"script_id\":  10\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"status_code\": 0,\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        script_id = forms.IntegerField(required=False)\n        parameter = forms.CharField(required=False)\n        script = forms.CharField(required=False)\n        run_describe = forms.CharField(required=False)\n        script_type = forms.CharField(required=False)\n        server_type = forms.Field(required=False)\n        server = forms.Field(required=False)\n        time_out = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"script_id\", \"parameter\", \"server_type\", \"script\", \"run_describe\", \"script_type\", \"server\", \"time_out\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        data = self.request.wsgi_request.body\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}run-script-by-id/'.format(configs.base_api_url),\n            data = data,\n            params = params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/run_script_by_script.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass RunScriptByScript(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据主机和脚本执行任务\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | script_format  | str    |  否  | 默认 content content:脚本内推 or url： 脚本完整url地址  |\n    | parameter     | str    |  否  | 位置参数   |\n    | script     | str    |  否  | 脚本内容 |\n    | task_name     | str    |  否  | 执行任务名称 |\n    | run_describe     | str    |  否  | 运行原因 |\n    | script_type     | str    |  否  | 脚本类型  |\n    | server_type     | str    |  否  | 主机类型 默认 host_name  host_name:主机唯一标识 ip: 主机IP|\n    | server     | str/list    |  否  | 主机列表 多条主机使用逗隔开 |\n    | time_out     | str    |  否  | 超时时间  |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"xxxx\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"platform_cname\":  \"workbench\",\n        \"script_id\":  10\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"status_code\": 0,\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        script_format = forms.IntegerField(required=False)\n        parameter = forms.CharField(required=False)\n        script = forms.CharField(required=False)\n        task_name = forms.CharField(required=False)\n        run_describe = forms.CharField(required=False)\n        script_type = forms.CharField(required=False)\n        server_type = forms.Field(required=False)\n        server = forms.Field(required=False)\n        timeout = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"script_format\", \"parameter\", \"server_type\", \"script\", \"task_name\", \"run_describe\", \"script_type\", \"server\", \"timeout\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        data = self.request.wsgi_request.body\n\n        # 设置当前操作者\n        # params['operator'] = self.current_user.username\n        params =  self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}run-script-by-script/'.format(configs.base_api_url),\n            data = data,\n            params = params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/run_task_by_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass RunTaskById(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据作业ID执行作业\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | task_id     | int    |  是  | 任务ID   |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"xxxx\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"platform_cname\":  \"workbench\",\n        \"task_id\":  10\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"status_code\": 0,\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        task_id = forms.IntegerField()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"task_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        data = self.request.wsgi_request.body\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}run-task-by-id/'.format(configs.base_api_url),\n            data = data,\n            params = params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2018 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'job'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/job/api/job/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/job/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetInfoForWorkbench(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取工作台首页数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api_name = forms.Field(required=False)\n        data_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api_name\", \"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'get-info-for-workbench/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/get_k8s_cluster.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetK8sCluster(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取容器平台的集群、命名空间、节点\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | cluster_unique | string | 否 | 集群唯一标识 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n              ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        cluster_unique = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"cluster_unique\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-cluster-for-k8s/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/get_k8s_resource_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetK8sResourceV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取容器平台的资源列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | resource_type | string | 是 | 资源类型 |\n    | cluster_unique | string | 否 | 集群唯一标识 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n              ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_type = forms.CharField(required=True)\n        cluster_unique = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_type\", \"cluster_unique\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-resource-for-k8s-v2/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/get_support_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetSupportResource(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取容器平台支持申请的资源列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n              ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-k8s-support-resource/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/get_support_resource_fields.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetSupportResourceFields(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取资源的字段或相关依赖字段\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | resource_tree | list | 是  | 要获取字段的资源树 |\n    | dependent_fields | dict | 是  | 要获取依赖字段数据 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n              ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        resource_tree = forms.Field(required=True)\n        dependent_fields = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"resource_tree\", \"dependent_fields\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-k8s-support-resource-fields/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/post_apply_resource.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostApplyResource(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    申请资源\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data | dict | 是  | 申请资源的数据 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n              ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-k8s-apply-resource/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/sync_es_from_control.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncEsFromControl(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步ES数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_list = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}sync-es-from-control/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n              ...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'k8s'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/k8s/api/k8s/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/k8s/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/kbase/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/kbase/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/kbase/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/kbase/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'kbase'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/kbase/api/kbase/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/kbase/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/llmops/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/llmops/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/llmops/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/llmops/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'llmops'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/llmops/api/llmops/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/llmops/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/log/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/log/sync_es_from_control.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncEsFromControl(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步ES数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_list = forms.Field()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_list\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}sync-es-from-control/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/log/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/log/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/log/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'log'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/log/api/log/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/log/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/data_for_screen.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass DataForScreen(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    大屏数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}data-for-screen/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取工作台首页数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/get_service_check_from_monitor.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetServiceCheckFromMonitor(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    查询基础监控全部服务拨测状态\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-service-check-from-monitor/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/get_service_check_monitor_by_application.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetServiceCheckMonitorByApplication(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    查询所属应用的服务拨测状态\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        applications = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"applications\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}get-service-check-monitor-info/'.format(configs.base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'monitor'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/monitor/api/monitor/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/monitor/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/build_abort.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BuildAbort(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    终止构建\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | job_name | string | 是  | 流水线名称 |\n    | num | int | 是 | 流水线构建历史id |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        job_name = forms.Field(required=True)\n        num = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"job_name\", \"num\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}build-stop/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/build_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BuildDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除流水线构建历史\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 否  | 应用ID |\n    | name | string | 是  | 流水线名称 |\n    | number | int | 是 | 流水线构建历史id |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=False)\n        name = forms.Field(required=True)\n        number = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"name\", \"number\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}build-delete/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/build_proceed.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BuildProceed(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    继续构建\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | job_name | string | 是  | 流水线名称 |\n    | num | int | 是 | 流水线构建历史id |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        job_name = forms.Field(required=True)\n        num = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"job_name\", \"num\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}build-proceed/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/build_start.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BuildStart(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    开始构建\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用ID |\n    | name | string | 是  | 流水线名称 |\n    | parameters | str | 否 | 其他参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        name = forms.Field(required=True)\n        parameters = forms.Field(required=None)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"name\", \"parameters\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}build-start/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/build_stop.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BuildStop(Component):\n    \"\"\"\n    apiMethod PUT\n\n    ### 功能描述\n\n    停止构建\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 否  | 应用ID |\n    | name | string | 是  | 流水线名称 |\n    | number | int | 是 | 流水线构建历史id |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=False)\n        name = forms.Field(required=True)\n        number = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"name\", \"number\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}build-stop/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_all_job.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetAllJob(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取所有的jenkins作业列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-all-job/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_gitlab_all_projects.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetGitlabAllProjects(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取gitlab全部项目列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-gitlab-all-projects/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_home_page.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetHomePage(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前应用下流水线资源统计\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | str | 是 | 应用的code |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"pipeline_count\": 31,\n            \"seven_days_task_count\": 52,\n            \"seven_days_task_status\": {\n                \"seven_days_task_success_count\": 50,\n                \"seven_days_task_error_count\": 2\n            },\n            \"daily_success_counts\": [\n                {\n                    \"date\": \"2024-05-04\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-05\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-06\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-07\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-08\",\n                    \"success_count\": 50\n                },\n                {\n                    \"date\": \"2024-05-09\",\n                    \"success_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-10\",\n                    \"success_count\": 0\n                }\n            ],\n            \"daily_error_counts\": [\n                {\n                    \"date\": \"2024-05-04\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-05\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-06\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-07\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-08\",\n                    \"error_count\": 2\n                },\n                {\n                    \"date\": \"2024-05-09\",\n                    \"error_count\": 0\n                },\n                {\n                    \"date\": \"2024-05-10\",\n                    \"error_count\": 0\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-home-page/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_build_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobBuildInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    查看构建历史详情\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | job_name | str | 是  | 流水线名称 |\n    | number | int | 是 | 执行历史id |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        job_name = forms.Field(required=True)\n        number = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"job_name\", \"number\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-build-info/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_building_queue.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobBuildingQueue(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取构建队列\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-building-queue/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_pipeline_tool.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobPipelineTool(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取配置内置工具tool\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-pipeline-tool/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_pipeline_tool_post.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobPipelineToolPost(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取配置内置工具tool-post\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-pipeline-tool-post/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_reconfig_parameter.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobReconfigParameter(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    # 获取流水线参数设置\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | job_name | str | 是 | 流水线名称 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-reconfig-parameter/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_reconfig_script.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobReconfigScript(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取流水线配置-脚本\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | job_name | str | 是 | 流水线名称 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-reconfig-script/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_reconfig_triggers.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobReconfigTriggers(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取流水线配置-触发\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是 | 应用id |\n    | job_name | str | 是 | 流水线名称 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-reconfig-triggers/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_rename.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobRename(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取流水线基本信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | job_name | str | 是 | 流水线名称 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-rename/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_v2.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取全部流水线以及当前构建历史\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | job_name | str | 否 | 流水线名称 |\n    | search_type | str | 否 | 类型 |\n    | search_data | str | 否 | 要搜索的关键字 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_v2_build.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobV2Build(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取指定流水线执行历史\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | job_name | str | 否 | 流水线名称 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-v2-build/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_job_v2_detail.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetJobV2Detail(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取全部流水线描述等信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-job-v2-detail/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_pipeline_jenkins_job.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPipelineJenkinsJob(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前应用下的流水线\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | str | 是 | 应用的code |\n    | search_type | str | 否 | 要查找的数据类型 |\n    | search_data | str | 否 | 要查找的关键词 |\n    | current | int | 否 | 当前页面 |\n    | pageSize | int | 是 | 每页要展示的条数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"page\": 1,\n            \"per_page\": 2,\n            \"total\": 31,\n            \"data\": [\n                {\n                    \"code\": 187,\n                    \"name\": \"OpsAny-test-assembly-line2024-5-9\",\n                    \"color\": \"notbuilt\",\n                    \"timestamp\": null,\n                    \"description\": \"这是一个测试流水线2024-5-9\",\n                    \"result\": null,\n                    \"view\": {\n                        \"code\": 2,\n                        \"jenkins_view_name\": \"opsany\"\n                    },\n                    \"build_list\": {}\n                },\n                {\n                    \"code\": 185,\n                    \"name\": \"test001\",\n                    \"color\": \"notbuilt\",\n                    \"timestamp\": null,\n                    \"description\": \"None\",\n                    \"result\": null,\n                    \"view\": {\n                        \"code\": 2,\n                        \"jenkins_view_name\": \"opsany\"\n                    },\n                    \"build_list\": {}\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n        current = forms.IntegerField(required=False)\n        pageSize = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"search_type\", \"search_data\", \"current\", \"pageSize\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-pipeline-jenkins-job/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/get_pipeline_template_group.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetPipelineTemplateGroup(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取流水线模板分组\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | group | str | 否  | 模板组名称 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        group = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"group\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-pipeline-template-group/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/job_create.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass JobCreate(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    新建流水线\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用ID |\n    | name | string | 是  | 流水线名称 |\n    | description | string | 否 | 描述 |\n    | config_xml | string | 是 | 配置文件 XML 内容|\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"创建相关信息成功\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        name = forms.Field(required=True)\n        description = forms.Field(required=False)\n        config_xml = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"name\", \"description\", \"config_xml\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}job-create/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/job_delete.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass JobDelete(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    删除流水线\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用ID |\n    | name | string | 是  | 流水线名称 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"url\":  \"http://st2_url.com\",\n        \"api_key\": \"LPDMDMPVOMDOPVDVNDLKLD\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        name = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}job-delete/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\"),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/put_job_reconfig_parameter.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PutJobReconfigParameter(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    修改构建参数\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | job_name | str | 是 | 流水线名称 |\n    | params | str | 是 | 其他参数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"修改相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=True)\n        params = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}put-job-reconfig-parameter/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/put_job_reconfig_script.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PutJobReconfigScript(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    修改流水线配置-脚本\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | jenkins_file | str | 是 |  |\n    | job_name | str | 是 | 流水线名称 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"修改相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        job_name = forms.Field(required=True)\n        jenkins_file = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"job_name\", \"jenkins_file\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}put-job-reconfig-script/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/put_job_rename.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PutJobRename(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    修改流水线基本信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是  | 应用id |\n    | name | str | 是 | 原流水线名称 |\n    | rename | str | 是 | 修改后的流水线名称 |\n    | description | str | 否 | 描述 |\n    | build_discard | str | 否 | 构建保留策略 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"修改相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        name = forms.Field(required=True)\n        rename = forms.Field(required=True)\n        description = forms.Field(required=False)\n        build_discard = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"name\", \"rename\", \"description\", \"build_discard\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}put-job-rename/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/run_pipeline_task_rollback.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass RunPipelineTaskRollback(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行流水线任务回调\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | queue_num | string | 是  | 应用唯一标识 |\n    | params | string | 是  | 其他参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"application_name\": \"opsany\",\n        \"job_name\": \"job_name\",\n        \"req_source\": \"API调用\",\n        \"app_from\": \"workbench\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        queue_num = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"queue_num\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}api/run-pipeline-task-rollback/'.format(base_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/run_pipeline_task_v3.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass RunPipelineTaskV3(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    执行流水线\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | application_name | string | 是  | 应用唯一标识 |\n    | job_name | string | 是  | 流水线名称 |\n    | parameters | string | 是  | 流水线参数 |\n    | req_source | string | 是  |执行方式 |\n    | app_from | string | 是  | 调用应用 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"application_name\": \"opsany\",\n        \"job_name\": \"job_name\",\n        \"req_source\": \"API调用\",\n        \"app_from\": \"workbench\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"操作成功\",\n        \"data\": \"xxxxxxx\"\n    }\n    ```\n    \"\"\"\n\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        application_name = forms.CharField(required=True)\n        job_name = forms.Field(required=True)\n        parameters = forms.Field(required=False)\n        req_source = forms.Field(required=False)\n        app_from = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"application_name\", \"job_name\", \"parameters\", \"req_source\", \"app_from\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}api/run-pipeline-v3/'.format(base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'request_data': params\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n\t\t\t\t...\n            }\n        ]\n    }\n    ```\n    \"\"\"#\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'pipeline'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/pipeline/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/pipeline/api/pipeline/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetInfoForWorkbench(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取平台概览页数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-info-for-workbench/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/get_service_check_metric.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass get_service_check_metric(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取应用监控服务拨测波测数据\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | id | int | 是    |  服务拨测ID |\n    | data_type | str | 是    |  数据类型(response_time, probability, history) |\n    | time | list or str | 否   | 间隔时间(3, 12, 24, 168, 720) |\n    | start_time | str | 否    | 开始时间(2020-09-02 18:38:01) |\n    | end_time | str | 否    | 结束时间(2020-10-02 18:38:01)  |\n    | current | str | 否    | 第几页 |\n    | pageSize | str | 否    | 每页数量 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        id = forms.Field(required=True)\n        data_type = forms.Field(required=True)\n        time = forms.Field(required=False)\n        start_time = forms.Field(required=False)\n        end_time = forms.Field(required=False)\n        current = forms.Field(required=False)\n        pageSize = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"id\", \"data_type\", \"time\", \"start_time\", \"end_time\", \"current\", \"pageSize\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-service-check-metric/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/keep_strategy_prom.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\n\nclass KeepStrategyProm(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    配置应用监控各类日志保留天数\n \n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_type | string | 是  | 操作类型 clean message |\n    | prom_notify_policy_log | Int | 否  | 告警通知 |\n    | params | dict | 否  | 参数 |\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```python\n \t{\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.CharField()\n        prom_notify_policy_log = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"prom_notify_policy_log\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}keep-strategy/'.format(configs.base_api_url),\n\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(configs.base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/post_inst_monitor_for_app.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostInstMonitorForApp(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    通过app唯一标识获取应用关联组件监控\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name_list | list or str | 是    |  应用唯一标识 |\n    | output | list or str | 否   | 输出字段 |\n    | filters | dict | 否    | 筛选 |\n    | order_by | dict | 否    | 排序 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name_list = forms.Field(required=True)\n        output = forms.Field(required=False)\n        filters = forms.Field(required=False)\n        order_by = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name_list\", \"output\", \"filters\", \"order_by\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-inst-monitor-for-app/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/post_metric_inst.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostMetricInst(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    查询管控指标采集绑定实例\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | metric_plugin_code | str | 是    |  指标采集唯一标识 |\n    | data_type | list | 是    | 数据类型（count | data） |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        metric_plugin_code = forms.Field(required=True)\n        data_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"metric_plugin_code\", \"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}metric-inst/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/post_service_check_for_app.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostServiceCheckForApp(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    通过app唯一标识获取应用监控关联的服务拨测\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_name_list | list or str | 是    |  应用唯一标识 |\n    | output | list or str | 否   | 输出字段 |\n    | filters | dict | 否    | 筛选 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_name_list = forms.Field(required=True)\n        output = forms.Field(required=False)\n        filters = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_name_list\", \"output\", \"filters\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}get-service-check-for-app/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/pull_app_auth.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PullAppAuth(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    推送应用平台权限\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | app_dict | str | 是    |  数据 |\n    | data_type | list | 是    | 数据类型（count | data） |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        app_dict = forms.Field(required=False)\n        data_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"app_dict\", \"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}pull-app-auth/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/service_check_export.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass ServiceCheckExport(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    服务拨测导出\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | id_list | dict | 是    |  导出数据ID |\n    | params | str | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        id_list = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"id_list\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}service-check-app/export/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/service_check_import.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass ServiceCheckImport(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    服务拨测导入\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | json_data | dict | 是    |  导入的数据 |\n    | params | str | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        json_data = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"json_data\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}service-check-app/import/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/service_check_import_template.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass ServiceCheckImportTemplate(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取导入服务拨测模板\n\n    ### 请求参数\n    {{ common_args_desc }}\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | request_type | str | 是    |  模板类型 |\n    | params | str | 是    | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        request_type = forms.Field(required=True)\n        params = forms.Field(required=False)\n\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"request_type\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}service-check-app/import/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(configs.base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'prom'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/prom/api/prom/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/prom/update_service_check_for_app.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass UpdateServiceCheckForApp(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新删除修改服务拨测\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | data_dict | dict | 是    |  数据 |\n    | data_type | str | 是    | 数据类型（create | update | delete） |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_dict = forms.Field(required=True)\n        data_type = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_dict\", \"data_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}update-service-check-for-app/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/__init__.py",
    "content": "# -*- coding: utf-8 -*-"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/check_google_verify_code.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass CheckGoogleVerifyCode(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    验证用户的验证码是否正确\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        username = forms.CharField(required=True)\r\n        verify_code = forms.CharField(required=True)\r\n        seven_days_free = forms.CharField(required=False)\r\n        auth_type = forms.CharField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"verify_code\", \"seven_days_free\", \"auth_type\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}check-google-verify-code/'.format(configs.base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/create_google_secret_for_user.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass CreateGoogleSecretForUser(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    为用户创建Google验证秘钥\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息创建成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.CharField(required=True)\n        google_secret = forms.CharField(required=True)\n        operator = forms.CharField()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"google_secret\", \"operator\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}create-google-secret-for-user/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_all_department_user_tree.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetAllDepartmentUserTree(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取全部部门人员树(包括第三方用户体系)\n\n    ### 请求参数\n\n    #### 接口参数\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"status_code\": 0,\n        \"status_info\": \"错误信息\",\n        \"data\": {\n            \"dep_name\":\"xxx\",\n            \"id\":1, \n            \"user_list\":[\n                {\n                    \"username\":\"user1\",\n                    \"chname\":\"user1\",\n                    \"phone\":\"11111111111\",\n                    \"email\":\"user1@opsany.com\",\n                    \"description\":\"user1\",\n                    \"bk_role\":0\n                },\n            ],\n            children:[\n                {\n                    \"dep_name\":\"xxx\",\n                    \"id\": 2, \n                    \"user_list\":[\n                        {\n                            \"username\":\"user2\",\n                            \"chname\":\"user2\",\n                            \"phone\":\"11111111112\",\n                            \"email\":\"user2@opsany.com\",\n                            \"description\":\"user2\",\n                            \"bk_role\":0\n                        },\n                    ],\n                    children:[ ]\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist()\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'auth/all_department_user_tree/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['status_code']\n        if code == 0:\n            result = {\n                'status_code': 0,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'status_code': 1,\n                'status_info': response['status_info']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_all_user.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetAllUser(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有的用户\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n \t\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        extend = forms.CharField(required=False)\r\n        username = forms.CharField(required=False)\r\n        chname = forms.CharField(required=False)\r\n        search_username = forms.CharField(required=False)\r\n        search_chname = forms.CharField(required=False)\r\n        search_username_or_chname = forms.CharField(required=False)\r\n        bk_role = forms.CharField(required=False)\r\n        order_by = forms.CharField(required=False)\r\n        search = forms.CharField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\r\n                \"extend\", \"username\", \"chname\", \"search_username\", \"search_chname\",\r\n                \"search_username_or_chname\", \"bk_role\", \"order_by\", \"search\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'get-all-user/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_auth_config.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetAuthConfig(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取认证配置信息\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        auth_type = forms.CharField(required=False)\r\n        domain = forms.CharField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"domain\", \"auth_type\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'auth-config/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_auth_platform.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetAuthPlatform(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取用户授权平台\n\n    ### 请求参数\n\n    #### 接口参数\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```\n    {\n        \"code\": 200,\n        \"successcode\": 20005,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": {\n            \"id\": 1,\n            \"content\": \"Copyright © 2019-2022 OpsAny. All Rights Reserved\"\n        }\n    } \n \t\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'get-auth-platform/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_copyright_config.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetCopyrightConfig(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取底部版权信息\n\n    ### 请求参数\n\n    #### 接口参数\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```\n    {\n        \"code\": 200,\n        \"successcode\": 20005,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": {\n            \"id\": 1,\n            \"content\": \"Copyright © 2019-2022 OpsAny. All Rights Reserved\"\n        }\n    } \n\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist()\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'copyright-config/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_dep_v2_to_cmdb.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetDepV2ToCmdb(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取部门信息\n\n    ### 请求参数\n\n    #### 接口参数\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```\n    {\n        \"code\": 200,\n        \"successcode\": 20005,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": {\n            \"id\": 1,\n            \"content\": \"Copyright © 2019-2022 OpsAny. All Rights Reserved\"\n        }\n    } \n \t\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        data_type = forms.Field(required=True)\n        id = forms.Field(required=False)\n        dep_type = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"data_type\", \"id\", \"dep_type\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'department-v2-to-cmdb/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_department_user_tree.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetDepartmentUserTree(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取部门人员树\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"status_code\": 0,\r\n        \"status_info\": \"错误信息\",\r\n        \"data\": {\r\n            \"dep_name\":\"xxx\",\r\n            \"id\":1, \r\n            \"user_list\":[\r\n                {\r\n                    \"username\":\"user1\",\r\n                    \"chname\":\"user1\",\r\n                    \"phone\":\"11111111111\",\r\n                    \"email\":\"user1@opsany.com\",\r\n                    \"description\":\"user1\",\r\n                    \"bk_role\":0\r\n                },\r\n            ],\r\n            children:[\r\n                {\r\n                    \"dep_name\":\"xxx\",\r\n                    \"id\": 2, \r\n                    \"user_list\":[\r\n                        {\r\n                            \"username\":\"user2\",\r\n                            \"chname\":\"user2\",\r\n                            \"phone\":\"11111111112\",\r\n                            \"email\":\"user2@opsany.com\",\r\n                            \"description\":\"user2\",\r\n                            \"bk_role\":0\r\n                        },\r\n                    ],\r\n                    children:[ ]\r\n                }\r\n            ]\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'auth/department_user_tree/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['status_code']\r\n        if code == 0:\r\n            result = {\r\n                'status_code': 0,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'status_code': 1,\r\n                'status_info': response['status_info']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_user_auth_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetUserAuthApi(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前用户授权的api\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    #### 接口参数\n\n    | 字段           | 类型   | 必选 | 描述       |\n    | -----          | ------ | ---- | --------   |\n    | platform_cname | string |  是  | 平台别名   |\n    | username | string |  是  | 用户名   |\n    | access_token | string |  是  | access_token   |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": \"200\",\n        \"successcode\": \"20023\",\n        \"message\": \"操作成功\",\n        \"data\": {\n            \"/api/workbench/v0_1/user-info/___GET\",\n            \"/api/workbench/v0_1/nav-group/___PUT\"\n        },\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        platform_code = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        access_token = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"platform_code\", \"username\", \"access_token\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'user-auth-api/',\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", []),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_user_google_auth_status.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetUserGoogleAuthStatus(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取当前用户的MFA验证状态\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        username = forms.CharField(required=True)\r\n        auth_type = forms.CharField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"auth_type\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}google-auth-status/'.format(configs.base_api_url),\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_user_group_sync.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetUserGroupSync(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户用户组\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n \t\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'get_user_group_sync/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_user_rbac_auth_config.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetUserRbacAuthConfig(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    获取当前用户的相关配置信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | string | 是  | 用户名 |\n    | data_type | string | 是  | 数据类型 |\n    | param_dict | string | 是  | 参数 |\n\n    ### 返回结果示例\n\n    ```python\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.CharField(required=True)\n        data_type = forms.CharField(required=False)\n        param_dict = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"data_type\", \"param_dict\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-user-rbac-auth-config/'.format(configs.base_api_url),\n            params=params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_user_update_info.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetUserUpdateInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取用户最近同步信息\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'get-user-update-info/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_user_v2_to_cmdb.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetUserV2ToCmdb(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前部门下的全部普通用户信息\n\n    ### 请求参数\n\n    #### 接口参数\n\n    ### 请求参数示例\n\n    ### 返回结果示例\n\n    ```\n    {\n        \"code\": 200,\n        \"successcode\": 20005,\n        \"message\": \"相关信息信息获取成功\",\n        \"data\": {\n            \"id\": 1,\n            \"content\": \"Copyright © 2019-2022 OpsAny. All Rights Reserved\"\n        }\n    } \n\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        current= forms.Field(required=False)\n        pageSize= forms.Field(required=False)\n        id= forms.Field(required=False)\n        data_type= forms.Field(required=True)\n        dep_type= forms.Field(required=False)\n        search_type= forms.Field(required=False)\n        search_data= forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"current\", \"pageSize\", \"id\", \"data_type\", \"dep_type\", \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path=configs.base_api_url + 'user-v2-to-cmdb/',\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_workorder_sync.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetWorkorderSync(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取所有的用户\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'get_workorder_sync/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/get_wx_work_config.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetWxWorkConfig(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取企业微信配置信息\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        domain = forms.CharField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"domain\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'vx-work-config/',\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/modify_user_google_auth_status.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass ModifyUserGoogleAuthStatus(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    修改用户的MFA验证状态\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        username = forms.CharField(required=True)\r\n        status = forms.BooleanField(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"status\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}google-auth-status/'.format(configs.base_api_url),\r\n            data=json.dumps(params),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/post_login_log.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass PostLoginLog(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    记录登录用户\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段           | 类型   | 必选 | 描述       |\n    | -----          | ------ | ---- | --------   |\n    | username | string |  是  | 用户名   |\n    | address      | string |  是  | IP地址  |\n    | user_agent      | string |  是  | 浏览器  |\n    | data      | dict |  是  | 其他参数  |\n\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"xxxx\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"platform_cname\":  \"workbench\",\n    }\n    ```\n\n    ### 返回结果示例\n\n\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.Field(required=True)\n        address = forms.Field(required=False)\n        user_agent = forms.Field(required=False)\n        host_name = forms.Field(required=False)\n        data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"address\", \"user_agent\", \"host_name\", \"data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        data = self.request.wsgi_request.body\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path=configs.base_api_url + 'login-log/',\n            data = json.dumps(params),\n            params = params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/post_menu_privilege.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass PostMenuPrivilege(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取用户对菜单的权限列表\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段           | 类型   | 必选 | 描述       |\r\n    | -----          | ------ | ---- | --------   |\r\n    | platform_cname | string |  是  | 平台别名   |\r\n    | menu_code      | string |  是  | menu_code  |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"xxxx\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"platform_cname\":  \"workbench\",\r\n        \"menu_code\":  \"setting\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"status_code\": 0,\r\n        \"status_info\": \"string\",\r\n        \"data\": \"[C, U, R, D]\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        data = self.request.wsgi_request.body\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'auth/privilege/',\r\n            data = data,\r\n            params = params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['status_code']\r\n        if code == 0:\r\n            result = {\r\n                'status_code': 0,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'status_code': 1,\r\n                'status_info': response['status_info']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/post_menu_tree.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass PostMenuTree(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    获取该用户在特定平台的目录树\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段           | 类型   | 必选 | 描述       |\r\n    | -----          | ------ | ---- | --------   |\r\n    | platform_cname | string |  是  | 平台别名   |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"xxxx\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"platform_cname\":  \"workbench\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"status_code\": 0,\r\n        \"status_info\": \"string\",\r\n        \"data\": {\r\n            \"menu_name\": \"string\",\r\n            \"menu_code\": \"string\",\r\n            \"id\": 0,\r\n            \"priority\": \"string\",\r\n            \"menu_type\": \"platform\",\r\n            \"parent_id\": null,\r\n            \"menu_address\": \"string\",\r\n            \"children\": [\r\n                {\r\n                    \"menu_name\": \"string\",\r\n                    \"menu_code\": \"string\",\r\n                    \"id\": 0,\r\n                    \"priority\": \"string\",\r\n                    \"menu_type\": \"directory\",\r\n                    \"parent_id\": 1,\r\n                    \"menu_address\": \"string\",\r\n                    \"children\": [\r\n                        {}\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        # platform_cname = forms.Field()\r\n        platform_cname = forms.CharField(required=True)     \r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"platform_cname\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        #data = self.form_data\r\n        #params = {}\r\n        #params = self.request.wsgi_request.body\r\n        params = self.form_data\r\n        data = self.request.wsgi_request.body\r\n\r\n        # 设置当前操作者\r\n        params[\"operator\"] = str(self.current_user.username)\r\n        #params = {\"operator\":str(self.current_user.username)}\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host = configs.host,\r\n            path = configs.base_api_url + 'auth/tree/',\r\n            data = data,\r\n            params=params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response.get('code') if response.get('code') else response.get('status_code')\r\n \r\n        if code == 0:\r\n            result = {\r\n                'status_code': 0,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'status_code': 1,\r\n                'status_info': response.get('status_info') if response.get('status_info') else response.get('message')\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/post_menu_verification.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass PostMenuVerification(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    验证用户对菜单的操作权限\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段           | 类型   | 必选 | 描述       |\r\n    | -----          | ------ | ---- | --------   |\r\n    | platform_cname | string |  是  | 平台别名   |\r\n    | menu_code      | string |  是  | menu_code  |\r\n    | http_method    | string |  是  | 请求方法   |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"xxxx\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"platform_cname\":  \"workbench\",\r\n        \"menu_code\":  \"setting\",\r\n        \"http_method\": \"GET\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"status_code\": 0,\r\n        \"status_info\": \"string\",\r\n        \"auth\": 0\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        data = self.request.wsgi_request.body\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'auth/verification/',\r\n            data = data,\r\n            params = params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['status_code']\r\n        if code == 0:\r\n            result = {\r\n                'status_code': 0,\r\n                'auth': response['auth'],\r\n            }\r\n        else:\r\n            result = {\r\n                'status_code': 1,\r\n                'status_info': response['status_info']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'rbac'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n# -*- coding: utf-8 -*-\n\nbase_api_url = \"/{}/rbac/api/rbac/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/update_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass UpdateUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    更新用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段           | 类型   | 必选 | 描述       |\r\n    | -----          | ------ | ---- | --------   |\r\n    | username | string |  是  | 用户名   |\r\n    | ch_name      | string |  是  | 中文名  |\r\n    | phone    | string |  是  |  电话   |\r\n    | email    | string |  是  | 电子邮箱   |\r\n    | set_password    | string |  否  | 是否已设置密码   |\r\n    | params    | string |  否  | 额外参数   |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        username = forms.Field()\r\n        ch_name = forms.Field(required=False)\r\n        phone = forms.Field(required=False)\r\n        email = forms.Field(required=False)\r\n        set_password = forms.BooleanField(required=False)\r\n        params = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"ch_name\", \"phone\", \"email\", \"set_password\", \"params\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n        data = self.request.wsgi_request.body\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path=configs.base_api_url + 'update-user-info/',\r\n            data = data,\r\n            params = params,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/rbac/user_auth.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass UserAuth(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    用户验证\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.CharField(required=False)\n        password = forms.CharField(required=False)\n        appid = forms.CharField(required=False)\n        code = forms.CharField(required=False)\n        domain = forms.CharField(required=False)\n        ad_domain = forms.CharField(required=False)\n        sso_code = forms.CharField(required=False)\n        sso_sign = forms.CharField(required=False)\n        auth_type = forms.CharField(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"password\", \"appid\", \"code\", \"domain\", \"ad_domain\", \"sso_code\", \"sso_sign\", \"auth_type\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}user-auth/'.format(configs.base_api_url),\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/delete_nexus_repository.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeleteNexusRepository(Component):\n    \"\"\"\n    apiMethod DELETE\n\n    ### 功能描述\n\n    删除制品库\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是 | 应用id |\n    | repository_id | str | 是 | 制品库名称\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20003,\n        \"message\": \"信息删除成功\"\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        repository_id = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"repository_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}delete-nexus-repository/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/delete_nexus_repository_component.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass DeleteNexusRepositoryComponent(Component):\n    \"\"\"\n    apiMethod DELETE\n\n    ### 功能描述\n\n    删除制品\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是 | 应用id |\n    | repository_id | str | 是 | 制品库名称\n    | component_id | str | 是 | 制品id |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20003,\n        \"message\": \"信息删除成功\",\n        \"data\": \"\"\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        repository_id = forms.CharField(required=True)\n        component_id = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"repository_id\", \"component_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.delete(\n            host=configs.host,\n            path='{}delete-nexus-repository-component/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_home_page.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetHomePage(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前应用下制品库资源统计\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | str | 是 | 应用的code |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"repo_count\": {\n                \"repo_all_count\": 13,\n                \"repo_public_count\": 12,\n                \"repo_inner_count\": 1\n            },\n            \"repo_raw_count\": {\n                \"repo_all_raw_count\": 4,\n                \"repo_public_raw_count\": 4,\n                \"repo_inner_raw_count\": 0\n            },\n            \"repo_docker_count\": {\n                \"repo_all_docker_count\": 1,\n                \"repo_public_docker_count\": 1,\n                \"repo_inner_docker_count\": 0\n            },\n            \"repo_maven_count\": {\n                \"repo_all_maven_count\": 4,\n                \"repo_public_maven_count\": 3,\n                \"repo_inner_maven_count\": 1\n            },\n            \"repo_pypi_count\": {\n                \"repo_all_pypi_count\": 1,\n                \"repo_public_pypi_count\": 1,\n                \"repo_inner_pypi_count\": 0\n            }\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-home-page/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepository(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取制品库\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | format_type | str | 否 | 制品库格式 |\n    | list_type | str | 否 | 根据这个来判断获取收藏的制品库 |\n    | search_type | str | 否 | 根据制品库名称搜索 |\n    | search_data | str | 否 | 搜索的关键字或搜索数据 |\n    | code | int | 是 | 应用id |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n    \"code\": 200,\n    \"successcode\": 20002,\n    \"message\": \"信息获取成功\",\n    \"data\": {\n        \"inner_list\": [],\n        \"public_list\": [\n                {\n                    \"code\": x,\n                    \"is_app\": false,\n                    \"name\": \"maven-central\",\n                    \"type\": \"proxy\",\n                    \"format\": \"maven2\",\n                    \"status\": \"Online\",\n                    \"url\": \"http://127.0.0.1:8000/repository/maven-central\",\n                    \"describe\": \"\",\n                    \"attributes\": {\n                        \"proxy\": {\n                            \"remoteUrl\": \"https://repo1.maven.org/maven2/\"\n                        }\n                    },\n                    \"active_time\": null,\n                    \"tags\": false\n                },\n                ......\n            ]\n        }\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        format_type = forms.CharField(required=False)\n        list_type = forms.CharField(required=False)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n        code = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"format_type\", \"list_type\", \"search_type\", \"search_data\", \"code\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryComponent(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取制品库的组件\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | continuationToken | str | 否 | 分页获取组件列表 |\n    | repository_id | str | 是 | 制品库id |\n    | id | int | 否 |  |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"items\": [\n                {\n                    \"id\": \"dGVzdC10ZXN0OjI5NWQzNTRiNzEzYTA5MjQ3YWRjYTE1YjEzMDZkOTlm\",\n                    \"repository\": \"test-test\",\n                    \"format\": \"raw\",\n                    \"group\": \"/\",\n                    \"name\": \"2.txt\",\n                    \"version\": null,\n                    \"assets\": [\n                        {\n                            \"downloadUrl\": \"http://127.0.0.1:8000/repository/test-test/2.txt\",\n                            \"path\": \"2.txt\",\n                            \"id\": \"dGVzdC10ZXN0OjBiNjUzMmFhNjRjNzZiOGMyMWM4ZTZkMjM2NmQwYWY0\",\n                            \"repository\": \"test-test\",\n                            \"format\": \"raw\",\n                            \"checksum\": {\n                                \"sha1\": \"e3e862c2009d70cc6d5c76504d39dd29362eb18b\",\n                                \"sha512\": \"da15460d61635710e15e1a2b29d435ff07617073a59531d3ba1ea53ddf911f01e7107d9\",\n                                \"sha256\": \"e98f147de4ee22b924dda0a14300de565305bb4f33f8675edaf83a1297e145e9\",\n                                \"md5\": \"e2430a18f44397a85598674d6469c1ca\"\n                            },\n                            \"contentType\": \"text/plain\",\n                            \"lastModified\": \"2024-01-09T03:11:55.842+00:00\",\n                            \"blobCreated\": \"2024-01-09T03:11:55.842+00:00\",\n                            \"lastDownloaded\": \"2024-01-09T08:58:13.281+00:00\"\n                        }\n                    ]\n                },\n                ......\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        continuationToken = forms.CharField(required=False)\n        repository_id = forms.CharField(required=True)\n        id = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"continuationToken\", \"repository_id\", \"id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-component/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_asset.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryComponentAsset(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取制品库资源\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository_id | str | 是 | 制品库名称 |\n    | id | int | 是 | 制品库资产 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n   \n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository_id = forms.CharField(required=True)\n        id = forms.IntegerField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository_id\", \"id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-component-asset/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_tree.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryComponentTree(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取版本资源（树结构，带资源）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository_id | str | 是 | 制品库名称 |\n    | id | str | 是 | 组件id |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository_id = forms.CharField(required=True)\n        id = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository_id\", \"id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-component-tree/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_tree_v2.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryComponentTreeV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取版本资源（树结构不带资源）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository_id | str | 是 | 制品库名称 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository_id = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-component-tree-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_v2.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryComponentV2(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取资源（根据组）\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | group_code | 是 | int | 组的id | \n    | repository_id | str | 是 | 制品库名称 |\n    | search_type | str | 否 | 搜索的类型 |\n    | search_data | str | 否 | 搜索的关键字 |\n    | current | int | 否 | 当前页 |\n    | sizePage | int | 否 | 每页要展示的数量 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    \n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        group_code = forms.IntegerField(required=True)\n        repository_id = forms.CharField(required=True)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n        current = forms.IntegerField(required=False)\n        sizePage = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"group_code\", \"repository_id\", \"search_type\", \"search_data\",\n                                                          \"current\", \"sizePage\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-component-v2/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_format.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryFormat(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取制品库格式\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n    \"code\": 200,\n    \"successcode\": 20002,\n    \"message\": \"信息获取成功\",\n    \"data\": [\n            {\n                \"format_name\": \"raw\",\n                \"url\": \"http://127.0.0.1:8000/repository/\"\n            },\n            {\n                \"format_name\": \"maven2\",\n                \"url\": \"http://127.0.0.1:8000/repository/\"\n            },\n            {\n                \"format_name\": \"docker\",\n                \"url\": \"http://127.0.0.1:8000/repository/\"\n            },\n            {\n                \"format_name\": \"pypi\",\n                \"url\": \"http://127.0.0.1:8000/repository/\"\n            }\n        ]\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-format/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_guide.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusRepositoryGuide(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取制品库使用指引\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是 | 应用id |\n    | repository_format | str | 是 | 制品库类型 |\n    | repository_id | str | 是 | 制品库名称 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"code\": 2,\n            \"format\": \"raw\",\n            \"content\": \"#### 推送\\n\\n##### 使用 curl 推送\\n\\n```\\ncurl -T <FILE.EXT> -u [USERNAME] \n            \\\"http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\"\\n```\n            \\n\\n- `<VERSION>` 为**非必填**项，默认为 **latest**。\\n- 支持 直接上传 或拖拽到当前页面进行上传。\n            \\n\\n##### 使用Generic 插件进行推送\\n\\n- 安装 Generic 插件（依赖 [Node.js](https://nodejs.org/)）\n            \\n\\n  ```\\n  npm install generic -g\\n  ```\\n\\n- 推送到当前制品库\\n\\n  ```\n            \\n  generic -u=[USERNAME] --path=<FILE.EXT> --registry=\n            \\\"http://http://127.0.0.1:8000/repository/test-test/chunks/<PACKAGE>?version=<VERSION>\\\"\\n  ```\n            \\n\\n#### 拉取\\n\\n```\\ncurl --fail -L -u [USERNAME] \n            \\\"http://http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\" -o <FILE.EXT>\\n```\n            \\n\\n- `<VERSION>` 为**非必填**项，默认为 **latest**。\\n\\n#### 删除\\n\\n```\\ncurl -X DELETE -u [USERNAME] \n            \\\"http://http://127.0.0.1:8000/repository/test-test/<PACKAGE>?version=<VERSION>\\\"\\n```\n            \\n\\n- `<VERSION>` 为**非必填**项，默认为 **latest**。\"\n        }\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        repository_format = forms.CharField(required=True)\n        repository_id = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"repository_format\", \"repository_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-repository-guide/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_nexus_search_component.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetNexusSearchComponent(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    组件搜索\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository | str | 是 | 制品库名称 |\n    | code | int | 是 | 应用id |\n    | name | str | 否 | 关联类型名称 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        code: 200\n        data: {…}\n        message: \"信息获取成功\"\n        successcode: 20002\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository = forms.CharField(required=True)\n        code = forms.IntegerField(required=True)\n        name = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository\", \"code\", \"name\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-nexus-search-component/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_repo.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetRepo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取制品库信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是 | 应用id |\n    | repository_id | str | 是 | 制品库id |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"code\": 6,\n            \"is_app\": false,\n            \"name\": \"test-test\",\n            \"type\": \"hosted\",\n            \"format\": \"raw\",\n            \"status\": \"Online\",\n            \"url\": \"http://127.0.0.1:8000/repository/test-test\",\n            \"describe\": \"\",\n            \"attributes\": {},\n            \"active_time\": \"2024-01-15 17:38:15\"\n        }\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        repository_id = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"repository_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-repo/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/get_repository_pagination.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetRepositoryPagination(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取当前应用下的制品库和公共仓库\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | str | 是 | 应用的code |\n    | search_type | str | 否 | 要查找的数据类型 |\n    | search_data | str | 否 | 要查找的关键词 |\n    | current | int | 否 | 当前页面 |\n    | pageSize | int | 是 | 每页要展示的条数 |\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"page\": 1,\n            \"per_page\": 20,\n            \"total\": 13,\n            \"data\": [\n                {\n                    \"code\": 64,\n                    \"is_app\": false,\n                    \"name\": \"OpsAny-docker\",\n                    \"type\": \"hosted\",\n                    \"format\": \"docker\",\n                    \"status\": \"Online\",\n                    \"url\": \"XXXXXXX\",\n                    \"describe\": \"\",\n                    \"attributes\": {},\n                    \"active_time\": null,\n                    \"tags\": false\n                },\n                {\n                    \"code\": 5,\n                    \"is_app\": true,\n                    \"name\": \"maven-releases\",\n                    \"type\": \"hosted\",\n                    \"format\": \"maven2\",\n                    \"status\": \"Online\",\n                    \"url\": \"XXXXXX\",\n                    \"describe\": \"\",\n                    \"attributes\": {},\n                    \"active_time\": null,\n                    \"tags\": false\n                }\n            ]\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.CharField(required=True)\n        search_type = forms.CharField(required=False)\n        search_data = forms.CharField(required=False)\n        current = forms.IntegerField(required=False)\n        pageSize = forms.IntegerField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"search_type\", \"search_data\", \"current\", \"pageSize\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-repository-pagination/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/post_clone_project.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostCloneProject(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    克隆操作\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | project_url | str | 是 | 要克隆的git仓库的url |\n    | project_branch | str | 是 | 要克隆的分支 |\n    | api_token | str | 是 | 用于认证访问git仓库 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        project_url = forms.CharField(required=True)\n        project_branch = forms.CharField(required=True)\n        api_token = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"project_url\", \"project_branch\", \"api_token\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}post-clone-project/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/post_nexus_project.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostNexusProject(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    制品库下载\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | download_url | str | 是 | 需要下载的制品的url |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        download_url = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"download_url\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}post-nexus-project/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/post_nexus_repository.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostNexusRepository(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    新建制品库\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository_id | str | 是 | 制品库名称 |\n    | code | int | 是 | 应用id |\n    | inner | Bool | 是 | 区分权限（当前或全部应用） |\n    | describe | str | 否 | 描述 |\n    | repository_type | str | 是 | 制品库类型 |\n    | parameters | str | 否 | 其他参数 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20001,\n        \"message\": \"信息创建成功\",\n        \"data\": \"\"\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository_id = forms.CharField(required=True)\n        code = forms.IntegerField(required=True)\n        inner = forms.BooleanField(required=False)\n        describe = forms.CharField(required=False)\n        repository_type = forms.CharField(required=True)\n        parameters = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository_id\", \"code\", \"inner\", \"describe\", \"repository_type\", \"parameters\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}post-nexus-repository/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/post_nexus_repository_component_upload.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostNexusRepositoryComponentUpload(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    上传制品\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository_id | int | 是 | 制品库名称 |\n    | filename | str | 是 | 制品的名称以及文件后缀名 |\n    | file | file | 是 | 文件对象 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\":200\n        \"data\": \"upload success\"\n        \"message\": \"信息创建成功\"\n        \"successcode\": 20001\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository_id = forms.CharField(required=True)\n        filename = forms.CharField(required=True)\n        file = forms.FileField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository_id\", \"filename\", \"file\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}post-nexus-repository-component-upload/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/post_nexus_repository_guide.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostNexusRepositoryGuide(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    更新制品库使用指引\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | repository_format | str | 是 | 制品库类型 |\n    | repository_guide | str | 是 | 制品库指引类型 |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20002,\n        \"message\": \"信息更新成功\"\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        repository_format = forms.CharField(required=True)\n        repository_guide = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"repository_format\", \"repository_guide\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}post-nexus-repository-guide/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/put_repo.py",
    "content": "\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PutRepo(Component):\n    \"\"\"\n    apiMethod PUT\n\n    ### 功能描述\n\n    修改制品库权限\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | code | int | 是 | 应用id |\n    | repository_id | str | 是 | 制品库id |\n    | inner | bool | 否 | 是否是应用内 |\n    | describe | str | 否 | 描述 |\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"successcode\": 20004,\n        \"message\": \"信息更新成功\",\n    }\n    ```\n    \"\"\"  #\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        code = forms.IntegerField(required=True)\n        repository_id = forms.CharField(required=True)\n        inner = forms.BooleanField(required=False)\n        describe = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"code\", \"repository_id\", \"inner\", \"describe\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.put(\n            host=configs.host,\n            path='{}put-repo/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SyncUserInfo(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    同步用户信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20005,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n            {\n                ...\n            }\n        ]\n    }\n    ```\n    \"\"\"#\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        pass\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}update-director/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None),\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'repo'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/repo/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/repo/api/repo/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/data_for_screen.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass DataForScreen(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    大屏数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}data-for-screen/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取Agent的文件状态信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/run_task_by_id.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n\"\"\"\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass RunTaskById(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    根据ID执行脚本\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型   | 必选 | 描述      |\n    | -----  | ------ | ---- | ------- |\n    | task_id     | int    |  是  | 任务ID   |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"xxxx\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"platform_cname\":  \"workbench\",\n        \"task_id\":  10\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"status_code\": 0,\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        task_id = forms.IntegerField()\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"task_id\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n        data = self.request.wsgi_request.body\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}run-task-by-id/'.format(configs.base_api_url),\n            data = data,\n            params = params,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'response': response,\n                'data': response.get(\"data\", None)\n            }\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/sync_user_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\n\r\n\r\nclass SyncUserInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(configs.base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None)\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/toolkit/configs.py",
    "content": "#-*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2018 Tencent BlueKing. All Rights Reserved. 蓝鲸智云 版权所有\n\"\"\"\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'task'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n\nbase_api_url = \"/{}/job/api/job/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/task/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/bind_google_auth.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass BindGoogleAuth(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    绑定MFA\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | verify_code | string | 是  | 授权码 |\n    | secret | string | 是  | 秘钥 |\n    | username | string | 是  | 用户名 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"receiver\":  xx,\n        \"text\":  xx,\n        \"subject\":  xx,\n        \"text_type\":  xx\"\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        verify_code = forms.Field(required=True)\n        secret = forms.Field(required=True)\n        username = forms.Field(required=True)\n        operator = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"operator\", \"verify_code\", \"secret\", \"username\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        data = self.form_data\n\n        # 设置当前操作者\n        # data['operator'] = self.current_user.username\n\n        # 请求系统接口\n        # print \"self.request.wsgi_request.COOKIES\"\n        # print self.request.wsgi_request.COOKIES\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}google-auth/'.format(base_api_url),\n            params=None,\n            data=json.dumps(data),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response,\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message'],\n                'data': response\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_google_auth.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetGoogleAuth(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取MFA绑定二维码\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n        {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\": \"username\",\n    }\n\n\n    ### 返回结果示例\n\n    ```\n    {\n        \"code\": 200,\n        \"successcode\": 20001,\n        \"message\": \"信息获取成功\",\n        \"data\": {\n            \"url\": \"/YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK.png\",\n            \"secret\": \"YB3FWDHCWA6J5LZX6YYTBAYOMLAVVY7H326SEU7F3RJT6A7KEYYU4ICVTNUNDFHODK\",\n            \"username\": \"username\"\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.CharField(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}google-auth/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_info_for_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetInfoForWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取Agent的文件状态信息(暂未找到API)\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-info-for-workbench/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_language_theme_config.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetLanguageThemeConfig(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取主题色和平台语言配置\n\n    ### 请求参数\n    {{ common_args_desc }}\n    \n        {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\": \"username\",\n    }\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | string | 是  | 用户名 |\n    | user_token | string | 是  | token |\n\n    ### 返回结果示例\n\n    ```\n    {\n        \"code\": 200,\n        \"successcode\": 20014,\n        \"message\": \"操作成功\",\n        \"data\": {\n            \"language\": \"chinese_simplified\",\n            \"language_name\": \"简体中文\",\n            \"theme\": \"default\",\n            \"theme_name\": \"默认主题\",\n            \"username\": \"huxingqi\"\n        }\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        username = forms.CharField(required=True)\n        user_token = forms.CharField(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"user_token\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}language-theme-config/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_message_info.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetMessageInfo(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取用户收取的信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | current | string | 否  | 页数 |\r\n    | pageSize | string | 否  | 每页条数 |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        current = forms.Field(required=False)\r\n        pageSize = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"current\", \"pageSize\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-user-message/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None)\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_nav_and_colleciton.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetNavAndCollection(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取工作台用户收藏情况\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        # token = forms.CharField(required=False)\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-nav-and-collection/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_read_all_message.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetReadAllMessage(Component):\r\n    \"\"\"\r\n    apiMethod Get\r\n\r\n    ### 功能描述\r\n\r\n    更新节点的Agent情况\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息更新成功\",\r\n        \"data\":  [\r\n\t    ]\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        # list = forms.Field()\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}read-all-message/'.format(base_api_url),\r\n            params=params,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_robot_list.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetRobotList(Component):\n    \"\"\"\n    apiMethod Get\n\n    ### 功能描述\n\n    获取群机器人列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20001,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\":  [\n\t    ]\n    }\n    ```\n\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        robot_type = forms.Field(required=False)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['robot_type', 'params'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}get-robot-list/'.format(base_api_url),\n            params=params,\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_sync_data.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\r\n\"\"\"\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetSyncData(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步用户信息和组织信息\r\n\r\n    ### 请求参数\r\n\r\n    #### 接口参数\r\n\r\n    ### 请求参数示例\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n \t\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get_sync_data/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_user_info_from_workbench.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetUserInfoFromWorkbench(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    从工作台获取用户的信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist()\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}user-info/'.format(base_api_url),\r\n            params=params,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None)\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_user_ssh_key.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetUserSshKey(Component):\r\n    \"\"\"\r\n    apiMethod Get\r\n\r\n    ### 功能描述\r\n\r\n    获取用户Ssh-Key\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20001,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\":  [\r\n\t    ]\r\n    }\r\n    ```\r\n\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        ssh_key_id = forms.Field(required=False)\r\n        add_ssh_key_id = forms.Field(required=False)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=['ssh_key_id', 'add_ssh_key_id'])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}get-user-ssh-key/'.format(base_api_url),\r\n            params=params,\r\n            headers=self.request.wsgi_request.g.headers if hasattr(self.request.wsgi_request, \"g\") else self.request.wsgi_request.headers\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_work_order_event.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetWorkOrderEvent(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取告警转工单列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        id = forms.Field(required=False)\n        event_type = forms.Field(required=False)\n        username = forms.Field(required=False)\n        form_fields = forms.Field(required=False)\n    \n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"id\", \"event_type\", \"username\", \"form_fields\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}work-order-event/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_work_order_inst.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass GetWorkOrderInst(Component):\n    \"\"\"\n    apiMethod GET\n\n    ### 功能描述\n\n    获取工单实例列表\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | current | string | 是  | 页码 |\n    | pageSize | string | 是  | 每页数量 |\n    | data_type | string | 否  | 是否分页 |\n    | data | string | 否  | 工单标签搜索 |\n    | order_by | string | 否  | 排序字段 |\n    | order_type | string | 否  | 工单类型 |\n    | status | dict | 否  | 工单状态 |\n    | create_min_time | string | 否  | 最小时间 |\n    | create_max_time | string | 否  | 最大时间 |\n    | number | string | 否  | 工单编号 |\n    | title | string | 否  | 工单标题 |\n    | score | string | 否  | 打分 |\n    | contents | string | 否  | 评价内容 |\n    | follow | string | 否  | 是否跟踪 |\n    | search_type | string | 否  | 搜索字段 |\n    | search_data | string | 否  | 搜索数据 |\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20012,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"获取相关信息成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        current = forms.Field(required=False)\n        pageSize = forms.Field(required=False)\n        data_type = forms.Field(required=False)\n        data = forms.Field(required=False)\n        order_by = forms.Field(required=False)\n        order_type = forms.Field(required=False)\n        status = forms.Field(required=False)\n        create_min_time = forms.Field(required=False)\n        create_max_time = forms.Field(required=False)\n        number = forms.Field(required=False)\n        title = forms.Field(required=False)\n        score = forms.Field(required=False)\n        contents = forms.Field(required=False)\n        follow = forms.Field(required=False)\n        search_type = forms.Field(required=False)\n        search_data = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"current\", \"pageSize\", \"data_type\", \"data\", \"order_by\",\n                                                          \"order_type\", \"status\", \"create_min_time\", \"create_max_time\",\n                                                          \"number\", \"title\", \"score\", \"contents\", \"follow\",\n                                                          \"search_type\", \"search_data\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.get(\n            host=configs.host,\n            path='{}work-order-inst/'.format(base_api_url),\n            params=params,\n            data=None,\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\", None),\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/get_work_order_screen.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass GetWorkOrderScreen(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取获取工单大屏数据\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20012,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"获取相关信息成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}work-order-screen/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/guide.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass Guide(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    获取平台使用指南\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | platform_code | int | 是  | 平台code |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        platform_code = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"platform_code\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}guide/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response,\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': None\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/monitor_to_screen_api.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass MonitorToScreenApi(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    基础监控大屏API\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | username | str | 是  | 用户名 |\n    | api | string | 是  | 大屏接口 |\n    | params | int | 否  | 接口参数 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"username\":  xx,\n        \"api\":  xx,\n        \"params\": {\n            \"day\": 5\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        api = forms.CharField(required=True)\n        username = forms.CharField(required=True)\n        params = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"api\", \"username\", \"params\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}monitor_to_screen_api/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/post_collection.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass PostCollection(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    收藏导航\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | nav_id | int | 是  | 导航id |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"nav_id\":  xx\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n\t\t\t...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        nav_id = forms.IntegerField(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"nav_id\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}collection/'.format(base_api_url),\r\n            params=None,\r\n            data=json.dumps(data),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/post_info_to_user.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostInfoToUser(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    发送信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | temp_id | int | 是  | 信息模板ID |\n    | parameter | string | 是  | 参数 |\n    | result | bool | 否  | 是否需要返回发送状态信息 |\n    | subscribe_type | list | 否  | 发送类型 |\n    | alert_info | dict | 否  | 告警内容 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"temp_id\":  xx,\n        \"parameter\": \"(x, x, x, x)\",\n        \"subscribe_type\": [\"1\", \"2\", \"3\"]\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        temp_id = forms.IntegerField(required=True)\n        parameter = forms.Field(required=True)\n        result = forms.BooleanField(required=False)\n        operator = forms.Field(required=True)\n        subscribe_type = forms.Field(required=False)\n        alert_info = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"temp_id\", \"parameter\", \"result\", \"operator\", \"subscribe_type\", \"alert_info\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}user-message/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\")\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/post_security_config.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass PostSecurityConfig(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    同步安全配置信息\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | security_config | dict | 是  | 安全配置 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"security_config\": {\n        }\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息修改成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        security_config = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"security_config\"])\n\n    # 组件处理入口\n    def handle(self):  # 获取Form clean处理后的数据\n        data = self.form_data\n\n        # 设置当前操作者\n        # data['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}security-config/'.format(base_api_url),\n            params=None,\n            data=json.dumps(data),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                # 'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/send_mail.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SendMail(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    发送邮件\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | receiver | string | 是  | 接收人 |\r\n    | subject | string | 是  | 主题 |\r\n    | text | string | 是  | 内容 |\r\n    | text_type | string | 是  | 发送类型 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"receiver\":  xx,\r\n        \"text\":  xx,\r\n        \"subject\":  xx,\r\n        \"text_type\":  xx\"\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"信息发送成功\"\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        receiver = forms.Field(required=True)\r\n        subject = forms.Field(required=True)\r\n        operator = forms.Field(required=True)\r\n        text = forms.Field(required=True)\r\n        text_type = forms.Field(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"receiver\", \"subject\", \"text\", \"text_type\", \"operator\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        # data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        # print \"self.request.wsgi_request.COOKIES\"\r\n        # print self.request.wsgi_request.COOKIES\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}send-mail/'.format(base_api_url),\r\n            params=None,\r\n            data=json.dumps(data),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get('data'),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/send_report.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SendReport(Component):\r\n    \"\"\"\r\n    apiMethod POST\r\n\r\n    ### 功能描述\r\n\r\n    发送巡检报告\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n    | username | string | 是  | 用户名 |\r\n    | message | string | 是  | 主题信息 |\r\n    | file_url | string | 是  | 附件地址 |\r\n\r\n    ### 请求参数示例\r\n\r\n    ```python\r\n    {\r\n        \"bk_app_code\": \"esb-test-app\",\r\n        \"bk_app_secret\": \"xxx\",\r\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\r\n        \"nav_id\":  xx\r\n    }\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20003,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n\t\t\t...\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        username = forms.CharField(required=True)\r\n        message = forms.CharField(required=True)\r\n        file_url = forms.CharField(required=True)\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[\"username\", \"message\", \"file_url\"])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        data = self.form_data\r\n\r\n        # 设置当前操作者\r\n        data['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.post(\r\n            host=configs.host,\r\n            path='{}send-report/'.format(base_api_url),\r\n            params=None,\r\n            data=json.dumps(data),\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response['data'],\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message']\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/send_robot.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass SendRobot(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    发送企微钉钉群告警通知\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | robot_type | str | 是  | 群类型 qw dd |\n    | temp_id | int | 是  | 模板ID |\n    | parameter | str | 是  | 参数 |\n    | robot_list | str | 是  | 群标识 |\n    | alert_info | str | 是  | 告警对象 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"nav_id\":  xx\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"相关信息获取成功\",\n        \"data\": [\n\t\t\t...\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        robot_type = forms.CharField(required=True)\n        temp_id = forms.IntegerField(required=True)\n        parameter = forms.Field(required=True)\n        robot_list = forms.Field(required=True)\n        alert_info = forms.Field(required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"robot_type\", \"temp_id\", \"parameter\", \"robot_list\", \"alert_info\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        data = self.form_data\n\n        # 设置当前操作者\n        data['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}send-robot/'.format(base_api_url),\n            params=None,\n            data=json.dumps(data),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/sync_order_user_message.py",
    "content": "# -*- coding: utf-8 -*-\r\nimport json\r\n\r\nfrom django import forms\r\n\r\nfrom common.forms import BaseComponentForm\r\nfrom components.component import Component\r\nfrom .toolkit import configs\r\nfrom .toolkit.tools import base_api_url\r\n\r\n\r\nclass SyncOrderUserMessage(Component):\r\n    \"\"\"\r\n    apiMethod GET\r\n\r\n    ### 功能描述\r\n\r\n    同步工单用户信息\r\n\r\n    ### 请求参数\r\n    {{ common_args_desc }}\r\n\r\n    #### 接口参数\r\n\r\n    | 字段    | 类型     | 必选   | 描述       |\r\n    | ----- | ------ | ---- | -------- |\r\n\r\n    ```\r\n\r\n    ### 返回结果示例\r\n\r\n    ```python\r\n    {\r\n        \"code\": 200,\r\n        \"apicode\": 20005,\r\n        \"result\": true,\r\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\r\n        \"message\": \"相关信息获取成功\",\r\n        \"data\": [\r\n            {\r\n\t\t\t\t...\r\n            }\r\n        ]\r\n    }\r\n    ```\r\n    \"\"\"\r\n\r\n    # 组件所属系统的系统名\r\n    sys_name = configs.SYSTEM_NAME\r\n\r\n    # Form处理参数校验\r\n    class Form(BaseComponentForm):\r\n        pass\r\n\r\n        # clean方法返回的数据可通过组件的form_data属性获取\r\n        def clean(self):\r\n            return self.get_cleaned_data_when_exist(keys=[])\r\n\r\n    # 组件处理入口\r\n    def handle(self):\r\n        # 获取Form clean处理后的数据\r\n        params = self.form_data\r\n\r\n        # 设置当前操作者\r\n        params['operator'] = self.current_user.username\r\n\r\n        # 请求系统接口\r\n        response = self.outgoing.http_client.get(\r\n            host=configs.host,\r\n            path='{}update-director/'.format(base_api_url),\r\n            params=params,\r\n            data=None,\r\n            cookies=self.request.wsgi_request.COOKIES,\r\n        )\r\n\r\n        # 对结果进行解析\r\n        code = response['code']\r\n        if code == 200:\r\n            result = {\r\n                'code': response['code'],\r\n                'api_code': response['successcode'],\r\n                'message': response['message'],\r\n                'result': True,\r\n                'data': response.get(\"data\", None),\r\n            }\r\n        else:\r\n            result = {\r\n                'api_code': response['errcode'],\r\n                'result': False,\r\n                'message': response['message'],\r\n                'response': response,\r\n                'data': response.get(\"data\", None)\r\n            }\r\n\r\n        # 设置组件返回结果，payload为组件实际返回结果\r\n        self.response.payload = result\r\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/toolkit/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom esb.utils import SmartHost\nimport settings\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'workbench'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod=settings.PAAS_DOMAIN,\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\nimport settings\nbase_api_url = \"/{}/workbench/api/workbench/esb/v0_1/\".format(getattr(settings, \"BK_ENV\", \"o\"))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/apis/workbench/work_order_submit.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\nfrom .toolkit.tools import base_api_url\n\n\nclass WorkOrderSubmit(Component):\n    \"\"\"\n    apiMethod POST\n\n    ### 功能描述\n\n    第三方取到转工单\n\n    ### 请求参数\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段    | 类型     | 必选   | 描述       |\n    | ----- | ------ | ---- | -------- |\n    | submit_from | str | 是  | 提交来源(平台) |\n    | submit_username | string | 是  | 提交人 |\n    | work_order_id | int | 否  | 工单ID |\n    | follow | bool | 否  | 是否跟踪 |\n    | field_dict | dict | 否  | 表单内容 |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb-test-app\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"temp_id\":  xx,\n        \"parameter\": \"(x, x, x, x)\",\n        \"subscribe_type\": [\"1\", \"2\", \"3\"]\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"code\": 200,\n        \"apicode\": 20003,\n        \"result\": true,\n        \"request_id\": xxxxxxxxxxxxxxxxxxxxxxxx,\n        \"message\": \"信息发送成功\"\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        submit_from = forms.CharField(required=True)\n        submit_username = forms.CharField(required=False)\n        work_order_id = forms.IntegerField(required=True)\n        follow = forms.BooleanField(required=False)\n        field_dict = forms.Field(required=True)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=[\"submit_from\", \"submit_username\", \"work_order_id\", \"follow\", \"field_dict\"])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        params = self.form_data\n\n        # 设置当前操作者\n        params['operator'] = self.current_user.username\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='{}work-order-submit/'.format(base_api_url),\n            params=None,\n            data=json.dumps(params),\n            cookies=self.request.wsgi_request.COOKIES,\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 200:\n            result = {\n                'code': response['code'],\n                'api_code': response['successcode'],\n                'message': response['message'],\n                'result': True,\n                'data': response.get(\"data\") or {},\n            }\n        else:\n            result = {\n                'api_code': response['errcode'],\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidoc/send_mail.js",
    "content": "/**\n@api {post} /api/c/compapi/cmsi/send_mail/ send_mail\n@apiName send_mail\n@apiGroup API-CMSI\n@apiVersion 1.0.0\n@apiDescription 发送邮件\n@apiParam {string} app_code 应用ID\n@apiParam {string} app_secret 应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\n@apiParam {string} [bk_token] 当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\n@apiParam {string} [username] 当前用户用户名，白名单中app可使用\n\n@apiParam {string} [receiver] 邮件接收者，包含邮件完整地址，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\n@apiParam {string} [receiver__username] 邮件接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\n@apiParam {string} [sender] 发件人\n@apiParam {string} title 邮件主题\n@apiParam {string} content 邮件内容\n@apiParam {string} [cc] 抄送人，包含邮件完整地址，多个以逗号分隔\n@apiParam {string} [cc__username] 抄送人，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若cc、cc__username同时存在，以cc为准\n@apiParam {string} [body_format] 邮件格式，包含'Html', 'Text'，默认为'Html'\n@apiParam {bool} [is_content_base64] 邮件内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码\n\n@apiParamExample {json} Request-Example:\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"admin@bking.com\",\n        \"sender\": \"admin@bking.com\",\n        \"title\": \"This is a Test\",\n        \"content\": \"<html>Welcome to Blueking</html>\",\n    }\n@apiSuccessExample {json} Success-Response\n    HTTP/1.1 200 OK\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"邮件发送成功。\",\n    }\n*/\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidoc/send_mp_weixin.js",
    "content": "/**\n@api {post} /api/c/compapi/cmsi/send_mp_weixin/ send_mp_weixin\n@apiName send_mp_weixin\n@apiGroup API-CMSI\n@apiVersion 1.0.0\n@apiDescription 发送公众号微信消息\n@apiParam {string} app_code 应用ID\n@apiParam {string} app_secret 应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\n@apiParam {string} [bk_token] 当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\n@apiParam {string} [username] 当前用户用户名，白名单中app可使用\n\n@apiParam {string} receiver 微信接收者，包含绑定在指定公众号上的微信用户的 openid，多个以逗号分隔\n@apiParam {dict} data 消息内容\n\n@apiParam (data) {string} heading 通知头部文字\n@apiParam (data) {string} message 通知文字\n@apiParam (data) {string} [date] 通知发送时间，默认为当前时间 \"YYYY-mm-dd HH:MM\"\n@apiParam (data) {string} [remark] 通知尾部文字\n@apiParam (data) {bool} [is_message_base64] 通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法\n\n@apiParamExample {json} Request-Example:\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"xxx\",\n        \"data\": {\n            \"heading\": \"蓝鲸平台通知\",\n            \"message\": \"This 是 a test.\",\n            \"date\": \"2017-02-22 15:36\",\n            \"remark\": \"zhen 是一个测试！\"\n        }\n    }\n@apiSuccessExample {json} Success-Response\n    HTTP/1.1 200 OK\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"微信消息发送成功。\",\n    }\n*/\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidoc/send_qy_weixin.js",
    "content": "/**\n@api {post} /api/c/compapi/cmsi/send_qy_weixin/ send_qy_weixin\n@apiName send_qy_weixin\n@apiGroup API-CMSI\n@apiVersion 1.0.0\n@apiDescription 发送企业微信\n@apiParam {string} app_code 应用ID\n@apiParam {string} app_secret 应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\n@apiParam {string} [bk_token] 当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\n@apiParam {string} [username] 当前用户用户名，白名单中app可使用\n\n@apiParam {string} receiver 微信接收者，包含企业微信用户ID，多个以逗号分隔\n@apiParam {string} content 消息内容，长度最长为2048字符\n@apiParam {bool} [is_content_base64] 消息内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码\n\n@apiParamExample {json} Request-Example:\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"xxx\",\n        \"content\": \"This is a Test\",\n    }\n@apiSuccessExample {json} Success-Response\n    HTTP/1.1 200 OK\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"微信发送成功。\",\n    }\n * /\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidoc/send_sms.js",
    "content": "/**\n@api {post} /api/c/compapi/cmsi/send_sms/ send_sms\n@apiName send_sms\n@apiGroup API-CMSI\n@apiVersion 1.0.0\n@apiDescription 发送短信\n@apiParam {string} app_code 应用ID\n@apiParam {string} app_secret 应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\n@apiParam {string} [bk_token] 当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\n@apiParam {string} [username] 当前用户用户名，白名单中app可使用\n\n@apiParam {string} [receiver] 短信接收者，包含接收者电话号码，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\n@apiParam {string} [receiver__username] 短信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\n@apiParam {string} content 短信内容\n@apiParam {bool} [is_content_base64] 消息内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码\n\n@apiParamExample {json} Request-Example:\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"1234567890\",\n        \"receiver__username\": \"admin\",\n        \"content\": \"Welcome to Blueking\",\n    }\n@apiSuccessExample {json} Success-Response\n    HTTP/1.1 200 OK\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"短信发送成功。\",\n    }\n\n */\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidoc/send_voice_msg.js",
    "content": "/**\n@api {post} /api/c/compapi/cmsi/send_voice_msg/ send_voice_msg\n@apiName send_voice_msg\n@apiGroup API-CMSI\n@apiVersion 1.0.0\n@apiDescription 公共语音通知\n@apiParam {string} app_code 应用ID\n@apiParam {string} app_secret 应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\n@apiParam {string} [bk_token] 当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\n@apiParam {string} [username] 当前用户用户名，白名单中app可使用\n\n@apiParam {string} auto_read_message 自动语音读字信息\n@apiParam {array} [user_list_information] 待通知的用户列表，自动语音通知列表，若user_list_information、receiver__username同时存在，以user_list_information为准\n@apiParam {string} [receiver__username] 待通知的用户列表，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若user_list_information、receiver__username同时存在，以user_list_information为准\n\n@apiParam (user_list_information) {string} username 被通知人\n@apiParam (user_list_information) {string} [mobile_phone] 被通知人手机号\n\n@apiParamExample {json} Request-Example:\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"auto_read_message\": \"This is a test\",\n        \"user_list_information\": [{\n            \"username\": \"admin\",\n            \"mobile_phone\": \"1234567890\",\n        }]\n    }\n@apiSuccessExample {json} Success-Response\n    HTTP/1.1 200 OK\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"instance_id\": \"2662152044\"\n        }\n    }\n */\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidoc/send_weixin.js",
    "content": "/**\n@api {post} /api/c/compapi/cmsi/send_weixin/ send_weixin\n@apiName send_weixin\n@apiGroup API-CMSI\n@apiVersion 1.0.0\n@apiDescription 发送微信消息\n@apiParam {string} app_code 应用ID\n@apiParam {string} app_secret 应用TOKEN，可以通过 开发者中心 -> 点击应用ID -> 基本信息 获取\n@apiParam {string} [bk_token] 当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取\n@apiParam {string} [username] 当前用户用户名，白名单中app可使用\n\n@apiParam {string} [receiver] 微信接收者，包含绑定在指定公众号上的微信用户的 openid 或 企业号上的微信用户的用户ID，多个以逗号分隔 |\n@apiParam {string} [receiver__username] 微信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\n@apiParam {dict} data 消息内容\n\n@apiParam (data) {string} heading 通知头部文字\n@apiParam (data) {string} message 通知文字\n@apiParam (data) {string} [date] 通知发送时间，默认为当前时间 \"YYYY-mm-dd HH:MM\"\n@apiParam (data) {string} [remark] 通知尾部文字\n@apiParam (data) {bool} [is_message_base64] 通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法\n\n@apiParamExample {json} Request-Example:\n    {\n        \"app_code\": \"esb_test\",\n        \"app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"xxx\",\n        \"data\": {\n            \"heading\": \"蓝鲸平台通知\",\n            \"message\": \"This 是 a test.\",\n            \"date\": \"2017-02-22 15:36\",\n            \"remark\": \"zhen 是一个测试！\"\n        }\n    }\n@apiSuccessExample {json} Success-Response\n    HTTP/1.1 200 OK\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"微信消息发送成功。\",\n    }\n*/\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidocs/en/get_msg_type.md",
    "content": "### Functional description\n\nQuery the type of send_msg component that supports sending messages\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\"\n}\n```\n\n### Return Result Example\n\n```python\n{\n    \"result\": true,\n    \"code\": 0,\n    \"data\": [\n        {\n            \"type\": \"weixin\",\n            \"label\": \"weixin\",\n            \"is_active\": true\n        },\n        {\n            \"type\": \"mail\",\n            \"label\": \"mail\",\n            \"is_active\": true\n        },\n        {\n            \"type\": \"sms\",\n            \"label\": \"sms\",\n            \"is_active\": true\n        },\n        {\n            \"type\": \"voice\",\n            \"label\": \"voice\",\n            \"is_active\": true\n        }\n    ]\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidocs/en/send_msg.md",
    "content": "### Functional description\n\nUniversal messaging interface\n\n### Request Parameters\n\n{{ common_args_desc }}\n\n#### Interface Parameters\n\n| Field              |  Type      | Required|  Description      |\n|--------------------|------------|--------|-------------------|\n| msg_type           |  string    | YES    | The type of information sent can be obtained through the get_msg_type interface |\n| receiver__username |  string    | YES    | Receiver, including the username, the user needs to register on the BlueKing platform, separated by commas |\n| cc__username       |  string    | No     | Cc, including the user name, the user needs to register on the Blue Whale platform, multiple comma-separated, msg type is valid for mail |\n| title              |  string    | YES    | Subject |\n| content            |  string    | YES    | Content  |\n| body_format        |  string    | No     | Mail format, including 'Html', 'Text', defaults to 'Html', valid when meg type is mail |\n| attachments        |  list      | No     | Mail attachment, valid when meg type is mail |\n| date               |  string    | No     | Notification sending time, the default is the current time \"YYYY-mm-dd HH:MM\", valid when meg type is weixin |\n| remark             |  string    | No     | Notify the trailing text, valid when meg type is weixin|\n| wx_qy_agentid      |  string    | No     | Enterprise WeChat AgentId, valid when meg type is weixin |\n| wx_qy_corpsecret   |  string    | No     | Enterprise WeChat CorpSecret, valid when meg type is weixin |\n| is_content_base64  |  bool      | No     | Notification text content is base64 encoding, default False, no encoding, if encoding, please use base64.b64encode method |\n\n##### attachments\n\n| Field              |  Type      | Required|  Description      |\n|--------------------|------------|--------|------------|\n| filename           |  string    | YES     | file name  |\n| content            |  string    | YES     | File content, the content of the file is the base64 encoded string of the original file content  |\n| type               |  string    | No      | File type, default is the file name suffix, such as a.png file type is 'png' |\n| disposition        |  string    | No      | File Content-Disposition, image file (type=image, jpg, png, jpeg) defaults to 'inline', other files default to 'attachment'  |\n| content_id         |  string    | No      | File Content-ID, effective when the file is an image file; default is '<filename>' |\n\n### Request Parameters Example\n\n```python\n{\n    \"bk_app_code\": \"esb-test\",\n    \"bk_app_secret\": \"esb-test-secret\",\n    \"bk_username\": \"admin\",\n    \"msg_type\": \"mail\",\n    \"receiver__username\": \"admin\",\n    \"title\": \"xxx\",\n    \"content\": \"xxx\"\n}\n```\n\n### Return Result Example\n\n```python\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"OK\",\n    \"data\": [],\n    \"request_id\": \"sdfdfdfsdfasdasdasas\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidocs/zh_hans/get_msg_type.md",
    "content": "### 功能描述\n\n查询 send_msg 组件支持发送消息的类型\n\n### 请求参数\n\n{{ common_args_desc }}\n\n### 请求参数示例\n\n```python\n{\n    \"bk_app_code\": \"esb_test\",\n    \"bk_app_secret\": \"xxx\",\n    \"bk_token\": \"xxx\"\n}\n```\n\n### 返回结果示例\n\n```python\n{\n    \"result\": true,\n    \"code\": 0,\n    \"data\": [\n        {\n            \"type\": \"weixin\",\n            \"label\": \"微信\",\n            \"is_active\": true\n        },\n        {\n            \"type\": \"mail\",\n            \"label\": \"邮件\",\n            \"is_active\": true\n        },\n        {\n            \"type\": \"sms\",\n            \"label\": \"短信\",\n            \"is_active\": true\n        },\n        {\n            \"type\": \"voice\",\n            \"label\": \"语音\",\n            \"is_active\": true\n        }\n    ]\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/apidocs/zh_hans/send_msg.md",
    "content": "### 功能描述\n\n通用消息发送接口\n\n### 请求参数\n\n{{ common_args_desc }}\n\n#### 接口参数\n\n|             字段   |     类型   |必选    |  描述    |\n|--------------------|------------|--------|------------|\n| msg_type           |  string    | 是     | 发送信息的类型，可通过get_msg_type组件获取 |\n| receiver__username |  string    | 是     | 接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔 |\n| title              |  string    | 是     | 主题 |\n| content            |  string    | 是     | 内容  |\n| sender             |  string    | 否     | 发件人，msg_type 为 mail 时有效 |\n| cc__username       |  string    | 否     | 抄送人，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，msg_type为mail时有效 |\n| body_format        |  string    | 否     | 邮件格式，包含'Html', 'Text'，默认为'Html'， msg_type 为 mail 时有效 |\n| attachments        |  list      | 否     | 邮件附件， msg_type 为 mail 时有效 |\n| date               |  string    | 否     | 通知发送时间，默认为当前时间 \"YYYY-mm-dd HH:MM\"，msg_type 为 weixin 时有效 |\n| remark             |  string    | 否     | 通知尾部文字，msg_type 为 weixin 时有效|\n| wx_qy_agentid      |  string    | 否     | 企业微信AgentId，msg_type 为 weixin 时有效 |\n| wx_qy_corpsecret   |  string    | 否     | 企业微信CorpSecret，msg_type 为 weixin 时有效 |\n| is_content_base64  |  bool      | 否     | 通知文字content是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法 |\n\n\n##### attachments\n\n|             字段   |     类型   |必选    |  描述    |\n|--------------------|------------|--------|------------|\n| filename           |  string    | 是     | 文件名 |\n| content            |  string    | 是     | 文件内容，文件内容为原文件内容的 base64 编码字符串\" |\n| type               |  string    | 否     | 文件类型，默认为文件名后缀，如 a.png 文件类型为 'png' |\n| disposition        |  string    | 否     | 文件 Content-Disposition，图片文件(type=image, jpg, png, jpeg)默认为 'inline'，其他文件默认为 'attachment'  |\n| content_id         |  string    | 否     | 文件 Content-ID，文件为图片文件时生效；默认为 '<文件名>' |\n\n### 请求参数示例\n\n```python\n{\n    \"bk_app_code\": \"esb-test\",\n    \"bk_app_secret\": \"esb-test-secret\",\n    \"bk_username\": \"admin\",\n    \"msg_type\": \"mail\",\n    \"receiver__username\": \"admin,yunchao\",\n    \"title\": \"xxx\",\n    \"content\": \"xxx\"\n}\n```\n\n### 返回结果示例\n\n```python\n{\n    \"result\": true,\n    \"code\": 0,\n    \"message\": \"OK\",\n    \"data\": [],\n    \"request_id\": \"sdfdfdfsdfasdasdasas\"\n}\n```\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/get_msg_type.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom components.component import Component, SetupConfMixin\nfrom common.constants import API_TYPE_Q, HTTP_METHOD\nfrom common.base_utils import str_bool\nfrom .toolkit import configs\n\n\nclass GetMsgType(Component, SetupConfMixin):\n    suggest_method = HTTP_METHOD.GET\n    label = '查询消息发送类型'\n    label_en = 'Get message type'\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    def handle(self):\n        bk_language = self.request.headers.get('Blueking-Language', 'en')\n\n        msg_type = []\n        for mt in configs.msg_type:\n            is_active = mt.get('is_active', str_bool(getattr(self, mt['type'], False)))\n            msg_type.append({\n                'type': mt['type'],\n                'label': mt['label_en'] if bk_language == 'en' else mt['label'],\n                'is_active': is_active,\n            })\n\n        self.response.payload = {\n            \"result\": True,\n            \"data\": msg_type,\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_mail.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport base64\n\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField, DefaultBooleanField, TypeCheckField\nfrom common.base_utils import str_bool\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import configs, tools, send_mail_with_smtp\n\n\nclass SendMail(Component, SetupConfMixin):\n    \"\"\"\n    apiLabel {{ _(\"发送邮件\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"发送邮件\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | receiver           |  string    | {{ _(\"否\") }}     | {{ _(\"邮件接收者，包含邮件完整地址，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\") }} |\n    | receiver__username |  string    | {{ _(\"否\") }}     | {{ _(\"邮件接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\") }} |\n    | sender             |  string    | {{ _(\"否\") }}     | {{ _(\"发件人\") }} |\n    | title              |  string    | {{ _(\"是\") }}     | {{ _(\"邮件主题\") }} |\n    | content            |  string    | {{ _(\"是\") }}     | {{ _(\"邮件内容\") }} |\n    | cc                 |  string    | {{ _(\"否\") }}     | {{ _(\"抄送人，包含邮件完整地址，多个以逗号分隔\") }} |\n    | cc__username       |  string    | {{ _(\"否\") }}     | {{ _(\"抄送人，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若cc、cc__username同时存在，以cc为准\") }} |\n    | body_format        |  string    | {{ _(\"否\") }}     | {{ _(\"邮件格式，包含'Html', 'Text'，默认为'Html'\") }} |\n    | is_content_base64  |  bool      | {{ _(\"否\") }}     | {{ _(\"邮件内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码\") }} |\n    | attachments        |  bool      | {{ _(\"否\") }}     | {{ _(\"邮件附件\") }} |\n\n    ##### attachments\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | filename           |  string    | {{ _(\"是\") }}     | {{ _(\"文件名\") }}  |\n    | content            |  string    | {{ _(\"是\") }}     | {{ _(\"文件内容，文件内容为原文件内容的 base64 编码字符串\") }}  |\n    | type               |  string    | {{ _(\"否\") }}     | {{ _(\"文件类型，默认为文件名后缀，如 a.png 文件类型为 'png'\") }} |\n    | disposition        |  string    | {{ _(\"否\") }}     | {{ _(\"文件 Content-Disposition，图片文件(type=image, jpg, png, jpeg)默认为 'inline'，其他文件默认为 'attachment'\")  }}  |\n    | content_id         |  string    | {{ _(\"否\") }}     | {{ _(\"文件 Content-ID，文件为图片文件时生效；默认为 '<文件名>'\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"admin@bking.com\",\n        \"sender\": \"admin@bking.com\",\n        \"title\": \"This is a Test\",\n        \"content\": \"<html>Welcome to Blueking</html>\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n    host = configs.host\n    contact_way = 'email'\n    smtp_timeout = 10\n    print('----------------------success--------------------')\n\n\n    class Form(BaseComponentForm):\n        sender = forms.CharField(label='sender', required=False)\n        receiver = ListField(label='email recipients', required=False)\n        receiver__username = ListField(label='email recipients', required=False)\n        cc = ListField(label='CC', required=False)\n        cc__username = ListField(label='CC', required=False)\n        title = forms.CharField(label='email subject', required=True)\n        content = forms.CharField(label='email content', required=True)\n        is_content_base64 = DefaultBooleanField(\n            label='content is encoded by base64 or not', default=False, required=False)\n        body_format = forms.CharField(label='email format', required=False)\n        attachments = TypeCheckField(label='attachments', promise_type=list, required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            if not(data['receiver'] or data['receiver__username']):\n                raise forms.ValidationError(\n                    'Receiver [receiver, receiver__username] shall not be empty at the same time')\n            if data['receiver']:\n                data['receiver__username'] = None\n            if data['cc']:\n                data['cc__username'] = None\n            if data['is_content_base64']:\n                try:\n                    data['content'] = base64.b64decode(data['content'])\n                except Exception:\n                    pass\n            if data['attachments']:\n                data['attachments'] = [\n                    SendMail.AttachmentForm(attachment).get_cleaned_data_or_error()\n                    for attachment in data['attachments']\n                ]\n            return data\n\n    class AttachmentForm(BaseComponentForm):\n        filename = forms.CharField(label='filename', required=True)\n        content = forms.CharField(label='content', required=True)\n        type = forms.CharField(label='type', required=False)\n        disposition = forms.CharField(label='disposition', required=False)\n        content_id = forms.CharField(label='content_id', required=False)\n\n        def clean(self):\n            self.cleaned_data['content'] = base64.b64decode(self.cleaned_data['content'])\n            return self.cleaned_data\n\n    def handle(self):\n        # 默认支持通过 SMTP 服务器或第三方接口发送邮件，\n        # 为实现邮件发送，需完善组件配置，有以下两种方式：\n        # 1. 在 ./toolkit/configs.py 更新 SMTP 配置或第三方接口配置\n        # 2. 在 ESB 管理页面，修改\"发送邮件\"通道的\"组件配置\"\n\n        # SMTP 配置，具体更新配置的方式参考上文描述\n        self.smtp_host = getattr(self, 'smtp_host', '') or getattr(configs, 'smtp_host', '')\n        self.smtp_port = getattr(self, 'smtp_port', None) or getattr(configs, 'smtp_port', None)\n        self.smtp_user = getattr(self, 'smtp_user', '') or getattr(configs, 'smtp_user', '')\n        self.smtp_pwd = getattr(self, 'smtp_pwd', '') or getattr(configs, 'smtp_pwd', '')\n        self.mail_sender = getattr(self, 'mail_sender', '') or getattr(configs, 'mail_sender', '')\n        self.smtp_usessl = getattr(self, 'smtp_usessl', '') or getattr(configs, 'smtp_usessl', False)\n        self.smtp_usessl = str_bool(self.smtp_usessl)\n        self.smtp_usetls = getattr(self, 'smtp_usetls', '') or getattr(configs, 'smtp_usetls', False)\n        self.smtp_usetls = str_bool(self.smtp_usetls)\n\n        # 第三方接口地址配置，具体更新配置的方式参考上文描述\n        self.dest_url = getattr(self, 'dest_url', '') or getattr(configs, 'dest_url', '')\n   \n        data = self.request.kwargs\n        # 检验接收者邮箱格式\n        if data['receiver']:\n            print('self.contact_way', self.contact_way)\n            tools.validate_receiver(data['receiver'], contact_way=self.contact_way)\n        if data['cc']:\n            tools.validate_receiver(data['cc'], contact_way=self.contact_way)\n        # 根据蓝鲸平台用户数据，将用户名转换为邮箱地址\n        if data['receiver__username'] or data['cc__username']:\n            user_data = tools.get_receiver_with_username(\n                receiver__username=data['receiver__username'],\n                cc__username=data['cc__username'],\n                contact_way=self.contact_way\n            )\n            data.update(user_data)\n        if not data['sender']:\n            data['sender'] = self.mail_sender\n\n        if self.dest_url:\n            # 如果配置了第三方接口地址，则请求第三方接口实现邮件发送\n            # 注意：如果通过第三方接口，则第三方接口协议需兼容组件参数\n            result = self.outgoing.http_client.request_by_url(\n                'POST',\n                self.dest_url,\n                data=json.dumps(data)\n            )\n\n            if result['result'] and data.get('_extra_user_error_msg'):\n                result = {\n                    'result': False,\n                    'message': 'Some users failed to send email. %s' % data['_extra_user_error_msg'],\n                }\n            self.response.payload = result\n\n        elif self.smtp_host:\n            # 如果配置了 SMTP 服务，则通过 SMTP 邮件服务器，发送邮件\n            # 具体更新配置的方式参考上文描述\n            smtp_client = send_mail_with_smtp.SMTPClient(\n                smtp_host=self.smtp_host,\n                smtp_port=int(self.smtp_port or 25),\n                smtp_user=self.smtp_user,\n                smtp_pwd=self.smtp_pwd,\n                smtp_usessl=self.smtp_usessl,\n                smtp_usetls=self.smtp_usetls,\n                smtp_timeout=self.smtp_timeout,\n            )\n            result = smtp_client.send_mail(data)\n\n            if result['result'] and data.get('_extra_user_error_msg'):\n                result = {\n                    'result': False,\n                    'message': 'Some users failed to send email. %s' % data['_extra_user_error_msg']\n                }\n\n            self.response.payload = result\n        else:\n            self.response.payload = {\n                'result': False,\n                'message': 'Unfinished interface shall be improved by the component developer'\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_mp_weixin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport base64\n\nfrom django import forms\nfrom django.utils import timezone\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField, TypeCheckField, DefaultBooleanField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import configs\n\n\nclass SendMpWeixin(Component, SetupConfMixin):\n    \"\"\"\n    apiLabel {{ _(\"发送公众号微信消息\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"发送公众号微信消息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}   |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | receiver           |  string    | {{ _(\"是\") }}     | {{ _(\"微信接收者，包含绑定在指定公众号上的微信用户的 openid，多个以逗号分隔\") }} |\n    | data               |  dict      | {{ _(\"是\") }}     | {{ _(\"消息内容\") }} |\n\n    #### data\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}       | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | heading            |  string    | {{ _(\"是\") }}     | {{ _(\"通知头部文字\") }} |\n    | message            |  string    | {{ _(\"是\") }}     | {{ _(\"通知文字\") }} |\n    | date               |  string    | {{ _(\"否\") }}     | {{ _('通知发送时间，默认为当前时间 \"YYYY-mm-dd HH:MM\"') }} |\n    | remark             |  string    | {{ _(\"否\") }}     | {{ _(\"通知尾部文字\") }} |\n    | is_message_base64  |  bool      | {{ _(\"否\") }}     | {{ _(\"通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"xxx\",\n        \"data\": {\n            \"heading\": \"message\",\n            \"message\": \"This is a test.\",\n            \"date\": \"2017-02-22 15:36\",\n            \"remark\": \"zhen is a test\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        receiver = ListField(label='wechat receiver', required=True)\n        data = TypeCheckField(label='message data', promise_type=dict, required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                'touser': data['receiver'],\n                'data': SendMpWeixin.DataForm(data['data']).get_cleaned_data_or_error(),\n            }\n\n    class DataForm(BaseComponentForm):\n        heading = forms.CharField(label=\"notification header text\", required=True)\n        message = forms.CharField(label=\"notification text\", required=True)\n        date = forms.CharField(label=\"notification sending time\", required=False)\n        remark = forms.CharField(label=\"notification tail text\", required=False)\n        is_message_base64 = DefaultBooleanField(\n            label='notification text is encoded by base64 or not', default=False, required=False)\n\n        def decode_message(self, message, is_message_base64):\n            if is_message_base64:\n                try:\n                    message = base64.b64decode(message)\n                except Exception:\n                    pass\n            return message\n\n        def clean(self):\n            data = self.cleaned_data\n            date = data.get('date') or timezone.now().strftime('%Y-%m-%dT%H:%M:%SZ')\n\n            return {\n                \"first\": {\n                    \"value\": data['heading']\n                },\n                \"keyword1\": {\n                    \"value\": self.decode_message(data['message'], data['is_message_base64'])\n                },\n                \"keyword2\": {\n                    \"value\": date\n                },\n                \"remark\": {\n                    \"value\": data.get('remark', '')\n                }\n            }\n\n    def handle(self):\n        # 组件会根据 wx_app_id & wx_secret 申请微信的 access_token，\n        # 业务如希望集中管理 access_token，可优化 components/apis/weixin_mp/get_token.py 中 access_token 获取逻辑\n        self.wx_template_id = getattr(self, 'wx_template_id', '') or getattr(configs, 'wx_template_id', '')\n        self.wx_app_id = getattr(self, 'wx_app_id', '') or getattr(configs, 'wx_app_id', '')\n        self.wx_secret = getattr(self, 'wx_secret', '') or getattr(configs, 'wx_secret', '')\n\n        data = self.form_data\n        data.update({\n            'appid': self.wx_app_id,\n            'secret': self.wx_secret,\n            'template_id': self.wx_template_id,\n            'url': self.request.kwargs.get('url', ''),\n        })\n        self.response.payload = self.invoke_other('generic.weixin_mp.send_msg_with_tpl', kwargs=data)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_msg.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom esb.channel import get_channel_manager\nfrom common.forms import BaseComponentForm, ListField, DefaultBooleanField, TypeCheckField\nfrom common.constants import API_TYPE_OP, HTTP_METHOD\nfrom .toolkit import configs\n\n\nclass SendMsg(Component, SetupConfMixin):\n    suggest_method = HTTP_METHOD.POST\n    label = '通用消息发送'\n    label_en = 'Send message'\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n    msg_type_map = configs.msg_type_map\n\n    class Form(BaseComponentForm):\n        msg_type = forms.CharField(label='msg type', required=True)\n        receiver__username = ListField(label='recipients', required=True)\n        sender = forms.CharField(label='mail sender', required=False)\n        cc__username = ListField(label='CC', required=False)\n        title = forms.CharField(label='subject', required=True)\n        content = forms.CharField(label='content', required=True)\n        body_format = forms.CharField(label='email format', required=False)\n        attachments = TypeCheckField(label='attachments', promise_type=list, required=False)\n        date = forms.CharField(label='notification sending time', required=False)\n        remark = forms.CharField(label='notification tail text', required=False)\n        wx_qy_agentid = forms.CharField(label='enterprise wechat agentid', required=False)\n        wx_qy_corpsecret = forms.CharField(label='enterprise wechat corpsecret', required=False)\n        is_content_base64 = DefaultBooleanField(\n            label='content is encoded by base64 or not', default=False, required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            if data['msg_type'] == \"voice\":\n                data['auto_read_message'] = data['content']\n\n            if data['msg_type'] == \"weixin\":\n                data['data'] = {\n                    'heading': data['title'],\n                    'message': data['content'],\n                    'date': data['date'],\n                    'remark': data['remark'],\n                    'is_message_base64': data['is_content_base64']\n                }\n\n            return data\n\n    def handle(self):\n        data = self.form_data\n        msg_type = data.pop('msg_type')\n\n        channel_manager = get_channel_manager()\n\n        if msg_type not in configs.msg_type_map:\n            self.response.payload = {\n                'result': False,\n                'message': 'Unsupported type of msg type'\n            }\n            return\n\n        path = '/cmsi/%s/' % self.msg_type_map[msg_type]\n        channel_conf = channel_manager.get_channel_by_path(path, 'POST')\n        comp_obj = self.prepare_other('generic.cmsi.%s' % self.msg_type_map[msg_type], kwargs=data)\n        comp_obj.setup_conf(channel_conf['comp_conf'])\n        self.response.payload = comp_obj.invoke()\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_qy_weixin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import configs\n\n\nclass SendQyWeixin(Component, SetupConfMixin):\n    \"\"\"\n    apiLabel {{ _(\"发送企业微信\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"发送企业微信\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}      |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}    |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | receiver           |  string    | {{ _(\"是\") }}     | {{ _(\"微信接收者，包含企业微信用户ID，多个以逗号分隔\") }} |\n    | content            |  string    | {{ _(\"是\") }}     | {{ _(\"消息内容，长度最长为2048字符\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"1234567890\",\n        \"content\": \"This is a Test\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n    }\n    ```\n    \"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        receiver = ListField(label='wechat receiver', required=True)\n        content = forms.CharField(label='message content', required=True)\n\n        def clean(self):\n            return {\n                'touser': self.cleaned_data['receiver'],\n                'content': self.cleaned_data['content'],\n            }\n\n    def handle(self):\n        # 组件会根据 corpid & corpsecret 申请微信的 access_token\n        # 业务如希望集中管理 access_token，可优化 components/apis/weixin_qy/get_token.py 中 access_token 获取逻辑\n        self.wx_qy_corpid = getattr(self, 'wx_qy_corpid', '') or getattr(configs, 'wx_qy_corpid', '')\n        self.wx_qy_corpsecret = getattr(self, 'wx_qy_corpsecret', '') or getattr(configs, 'wx_qy_corpsecret', '')\n        self.wx_qy_agentid = getattr(self, 'wx_qy_agentid', '') or getattr(configs, 'wx_qy_agentid', '')\n\n        data = self.form_data\n        data.update({\n            'corpid': self.wx_qy_corpid,\n            'corpsecret': self.wx_qy_corpsecret,\n            'agentid': self.wx_qy_agentid,\n        })\n\n        self.response.payload = self.invoke_other('generic.weixin_qy.send_message', kwargs=data)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_sms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport base64\n\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField, DefaultBooleanField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import configs, tools\n\n\nclass SendSms(Component, SetupConfMixin):\n    \"\"\"\n    apiLabel {{ _(\"发送短信\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"发送短信\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | receiver           |  string    | {{ _(\"否\") }}     | {{ _(\"短信接收者，包含接收者电话号码，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\") }} |\n    | receiver__username |  string    | {{ _(\"否\") }}     | {{ _(\"短信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\") }} |\n    | content            |  string    | {{ _(\"是\") }}     | {{ _(\"短信内容\") }} |\n    | is_content_base64  |  bool      | {{ _(\"否\") }}     | {{ _(\"消息内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"1234567890\",\n        \"receiver__username\": \"admin\",\n        \"content\": \"Welcome to Blueking\",\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n    host = configs.host\n    contact_way = 'phone'\n    dest_url = ''\n\n    class Form(BaseComponentForm):\n        receiver = ListField(label='SMS receiver', required=False)\n        receiver__username = ListField(label='SMS receiver', required=False)\n        content = forms.CharField(label='message content', required=True)\n        is_content_base64 = DefaultBooleanField(\n            label='content is encoded by base64 or not', default=False, required=False)\n\n        def decode_content(self, content, is_content_base64):\n            if is_content_base64:\n                try:\n                    content = base64.b64decode(content)\n                except Exception:\n                    pass\n            return content\n\n        def clean(self):\n            data = self.cleaned_data\n            if data['receiver']:\n                data['receiver__username'] = None\n            data['content'] = self.decode_content(data['content'], data['is_content_base64'])\n            return data\n\n    def handle(self):\n        # QCloud 短信配置\n        self.qcloud_app_id = getattr(self, 'qcloud_app_id', '') or getattr(configs, 'qcloud_app_id', '')\n        self.qcloud_app_key = getattr(self, 'qcloud_app_key', '') or getattr(configs, 'qcloud_app_key', '')\n         \n        data = self.request.kwargs\n        print('sms.data', data)\n        if data['receiver']:\n            tools.validate_receiver(data['receiver'], contact_way=self.contact_way)\n        if data['receiver__username']:\n            user_data = tools.get_receiver_with_username(\n                receiver__username=data['receiver__username'],\n                contact_way=self.contact_way\n            )\n            data.update(user_data)\n\n        # TODO: can be updated\n        if self.dest_url:\n            result = self.outgoing.http_client.request_by_url(\n                'POST',\n                self.dest_url,\n                data=json.dumps(data)\n            )\n\n            if result['result'] and data.get('_extra_user_error_msg'):\n                result = {\n                    'result': False,\n                    'message': 'Some users failed to send sms. %s' % data['_extra_user_error_msg']\n                }\n\n            self.response.payload = result\n        elif self.qcloud_app_id and self.qcloud_app_key:\n            params = {\n                'sms_type': 0,\n                'phone_numbers': data['receiver'],\n                'content': data['content'],\n                'sdk_app_id': self.qcloud_app_id,\n                'app_key': self.qcloud_app_key,\n            }\n            print('params', params)\n            result = self.invoke_other('generic.qcloud_sms.send_multi_sms', kwargs=params)\n\n            if result['result'] and data.get('_extra_user_error_msg'):\n                result = {\n                    'result': False,\n                    'message': 'Some users failed to send sms. %s' % data['_extra_user_error_msg']\n                }\n            self.response.payload = result\n        else:\n            self.response.payload = {\n                'result': False,\n                'message': 'Unfinished interface shall be improved by the component developer'\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_voice_msg.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import configs, tools\n\n\nclass SendVoiceMsg(Component, SetupConfMixin):\n    \"\"\"\n    apiLabel {{ _(\"公共语音通知\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"公共语音通知\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}                  |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |-----------------------|------------|--------|------------|\n    | auto_read_message     |  string    | {{ _(\"是\") }}     | {{ _(\"自动语音读字信息\") }} |\n    | user_list_information |  array     | {{ _(\"否\") }}     | {{ _(\"待通知的用户列表，自动语音通知列表，若user_list_information、receiver__username同时存在，以user_list_information为准\") }} |\n    | receiver__username    |  string    | {{ _(\"否\") }}     | {{ _(\"待通知的用户列表，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若user_list_information、receiver__username同时存在，以user_list_information为准\") }} |\n\n    #### user_list_information\n\n    | {{ _(\"字段\") }}         |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------|------------|--------|------------|\n    | username     |  string    | {{ _(\"是\") }}     | {{ _(\"被通知人\") }} |\n    | mobile_phone |  string    | {{ _(\"否\") }}     | {{ _(\"被通知人手机号\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"auto_read_message\": \"This is a test\",\n        \"user_list_information\": [{\n            \"username\": \"admin\",\n            \"mobile_phone\": \"1234567890\",\n        }]\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"\",\n        \"data\": {\n            \"instance_id\": \"2662152044\"\n        }\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n    host = configs.host\n    contact_way = 'phone'\n    dest_url = ''\n\n    class Form(BaseComponentForm):\n        auto_read_message = forms.CharField(label='auto voice reading info', required=True)\n        user_list_information = TypeCheckField(label='user list', promise_type=list, required=False)\n        receiver__username = ListField(label='BlueKing user list', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            user_list_information = [\n                SendVoiceMsg.UserListInfoForm(user_info).get_cleaned_data_or_error()\n                for user_info in data['user_list_information']\n                if user_info\n            ]\n            if not (data.get('receiver__username') or user_list_information):\n                raise forms.ValidationError(\n                    'The parameters [user_list_information and receiver__username] shall not be empty at the same time')\n            data['user_list_information'] = user_list_information\n            if user_list_information:\n                data['receiver__username'] = None\n            return data\n\n    class UserListInfoForm(BaseComponentForm):\n        username = forms.CharField(label='person notified', required=True)\n        mobile_phone = forms.CharField(label='mobile phone of the person notified', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            if data['mobile_phone'] and not data['mobile_phone'].isdigit():\n                raise forms.ValidationError('Mobile phone [mobile_phone] of the person notified must be a number')\n            return data\n\n    def handle(self):\n        # QCloud 语音配置\n        self.qcloud_app_id = getattr(self, 'qcloud_app_id', '') or getattr(configs, 'qcloud_app_id', '')\n        self.qcloud_app_key = getattr(self, 'qcloud_app_key', '') or getattr(configs, 'qcloud_app_key', '')\n\n        data = self.form_data\n        # 将 receiver__username 中的用户名，转换为接口需要的 user_list_information 信息\n        if data['receiver__username']:\n            user_data = tools.get_user_contact_with_username(\n                username_list=data['receiver__username'],\n                contact_way=self.contact_way,\n            )\n            data['user_list_information'] = [\n                {\n                    'username': username,\n                    'mobile_phone': contact_info,\n                }\n                for username, contact_info in user_data['user_contact_info'].items()\n            ]\n            data['_extra_user_error_msg'] = user_data['_extra_user_error_msg']\n\n        # TODO: can be updated\n        if self.dest_url:\n            result = self.outgoing.http_client.request_by_url(\n                'POST',\n                self.dest_url,\n                data=json.dumps(data)\n            )\n\n            if result['result'] and data.get('_extra_user_error_msg'):\n                result = {\n                    'result': False,\n                    'data': result.get('data'),\n                    'message': 'Some users failed to send voice. %s' % data['_extra_user_error_msg'],\n                }\n            self.response.payload = result\n        elif self.qcloud_app_id and self.qcloud_app_key:\n            params = {\n                'user_list_information': data['user_list_information'],\n                'auto_read_message': data['auto_read_message'],\n                'qcloud_app_id': self.qcloud_app_id,\n                'qcloud_app_key': self.qcloud_app_key\n            }\n            ret = self.invoke_other('generic.qcloud_voice.send_voice_msg', kwargs=params)\n\n            if not ret['failed'] and data.get('_extra_user_error_msg'):\n                result = {\n                    'result': False,\n                    'data': ret,\n                    'message': 'Some users failed to send voice. %s' % data['_extra_user_error_msg'],\n                }\n            elif ret['failed']:\n                result = {\n                    'result': False,\n                    'data': ret,\n                    'message': 'Some users failed to send voice. %s' % \",\".join(\n                        [x['username'] for x in ret['failed']]\n                    )\n                }\n            else:\n                result = {\n                    'result': True,\n                    'data': ret,\n                    'message': 'OK'\n                }\n            self.response.payload = result\n        else:\n            self.response.payload = {\n                'result': False,\n                'message': 'Unfinished interface shall be improved by the component developer'\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/send_weixin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport base64\n\nfrom django import forms\nfrom django.utils import timezone\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField, TypeCheckField, DefaultBooleanField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import configs, tools\n\n\nclass SendWeixin(Component, SetupConfMixin):\n    \"\"\"\n    apiLabel {{ _(\"发送微信消息\") }}\n    apiMethod POST\n\n    ### {{ _(\"功能描述\") }}\n\n    {{ _(\"发送微信消息，支持微信公众号消息，及微信企业号消息\") }}\n\n    ### {{ _(\"请求参数\") }}\n\n    {{ common_args_desc }}\n\n    #### {{ _(\"接口参数\") }}\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | receiver           |  string    | {{ _(\"否\") }}     | {{ _(\"微信接收者，包含绑定在指定公众号上的微信用户的 openid 或 企业号上的微信用户的用户ID，多个以逗号分隔\") }} |\n    | receiver__username |  string    | {{ _(\"否\") }}     | {{ _(\"微信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准\") }} |\n    | data               |  dict      | {{ _(\"是\") }}     | {{ _(\"消息内容\") }} |\n    | wx_qy_agentid      |  string    | {{ _(\"否\") }}     | agentid of WeChat app |\n    | wx_qy_corpsecret   |  string    | {{ _(\"否\") }}     | secret of WeChat app |\n\n    #### {{ _(\"data 参数包含内容\") }}\n\n    | {{ _(\"字段\") }}               |  {{ _(\"类型\") }}      | {{ _(\"必选\") }}   |  {{ _(\"描述\") }}      |\n    |--------------------|------------|--------|------------|\n    | heading            |  string    | {{ _(\"是\") }}     | {{ _(\"通知头部文字\") }} |\n    | message            |  string    | {{ _(\"是\") }}     | {{ _(\"通知文字\") }} |\n    | date               |  string    | {{ _(\"否\") }}     | {{ _('通知发送时间，默认为当前时间 \"YYYY-mm-dd HH:MM\"') }} |\n    | remark             |  string    | {{ _(\"否\") }}     | {{ _(\"通知尾部文字\") }} |\n    | is_message_base64  |  bool      | {{ _(\"否\") }}     | {{ _(\"通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法\") }} |\n\n    ### {{ _(\"请求参数示例\") }}\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx\",\n        \"receiver\": \"xxx\",\n        \"data\": {\n            \"heading\": \"blueking alarm\",\n            \"message\": \"This is a test.\",\n            \"date\": \"2017-02-22 15:36\",\n            \"remark\": \"This is a test!\"\n        }\n    }\n    ```\n\n    ### {{ _(\"返回结果示例\") }}\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": \"00\",\n        \"message\": \"OK\",\n    }\n    ```\n    \"\"\"  # noqa\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n    contact_way = 'wx_userid'\n\n    class Form(BaseComponentForm):\n        receiver = ListField(label='wechat receiver', required=False)\n        receiver__username = ListField(label='wechat receiver', required=False)\n        data = TypeCheckField(label='message data', promise_type=dict, required=True)\n\n        def clean(self):\n            data = self.cleaned_data\n\n            if not (data['receiver'] or data['receiver__username']):\n                raise forms.ValidationError(\n                    'WeChat receiver [receiver, receiver__username] shall not be empty at the same time')\n            if data['receiver']:\n                data['receiver__username'] = None\n\n            return {\n                'receiver': data['receiver'],\n                'receiver__username': data['receiver__username'],\n                'data': SendWeixin.DataForm(data['data']).get_cleaned_data_or_error(),\n            }\n\n    class DataForm(BaseComponentForm):\n        heading = forms.CharField(label='notification header text', required=True)\n        message = forms.CharField(label='notification text', required=True)\n        date = forms.CharField(label='notification sending time', required=False)\n        remark = forms.CharField(label='notification tail text', required=False)\n        is_message_base64 = DefaultBooleanField(\n            label='notification text is encoded by base64 or not', default=False, required=False)\n\n        def decode_message(self, message, is_message_base64):\n            if is_message_base64:\n                try:\n                    message = base64.b64decode(message)\n                except Exception:\n                    pass\n            return message\n\n        def clean(self):\n            data = self.cleaned_data\n            data.update({\n                'date': data.get('date') or timezone.now().strftime('%Y-%m-%dT%H:%M:%SZ'),\n                'message': self.decode_message(data['message'], data['is_message_base64']),\n            })\n            return data\n\n    def get_mp_msg_data(self, data):\n        return {\n            \"first\": {\n                \"value\": data['heading']\n            },\n            \"keyword1\": {\n                \"value\": data['message']\n            },\n            \"keyword2\": {\n                \"value\": data['date']\n            },\n            \"remark\": {\n                \"value\": data.get('remark', '')\n            }\n        }\n\n    def get_qy_msg_content(self, data):\n        new_data = [\n            data['heading'],\n            'Content: %s' % data['message'].decode('utf-8') if isinstance(data['message'], str) else data['message'],\n            'Date: %s' % data['date'],\n        ]\n        if data.get('remark'):\n            new_data.append(data['remark'])\n        return '\\n'.join(new_data)\n\n    def handle(self):\n        # 微信类型，包括微信公众号\"mp\"，微信企业号\"qy\"\n        self.wx_type = getattr(self, 'wx_type', '') or getattr(configs, 'wx_type', '')\n\n        # 微信公众号配置\n        # 组件会根据 wx_app_id & wx_secret 申请微信的 access_token，\n        # 业务如希望集中管理 access_token，可优化 components/apis/weixin_mp/get_token.py 中 access_token 获取逻辑\n        self.wx_app_id = getattr(self, 'wx_app_id', '') or getattr(configs, 'wx_app_id', '')\n        self.wx_secret = getattr(self, 'wx_secret', '') or getattr(configs, 'wx_secret', '')\n        self.wx_template_id = getattr(self, 'wx_template_id', '') or getattr(configs, 'wx_template_id', '')\n\n        # 微信企业号配置\n        # 支持蓝鲸应用传递企业微信应用账号信息 wx_qy_corpsecret + wx_qy_agentid ，以实现通过不同企业微信应用发送消息\n        self.wx_qy_corpid = getattr(self, 'wx_qy_corpid', '') or getattr(configs, 'wx_qy_corpid', '')\n        self.wx_qy_corpsecret = self.request.kwargs.get('wx_qy_corpsecret') \\\n            or getattr(self, 'wx_qy_corpsecret', '') \\\n            or getattr(configs, 'wx_qy_corpsecret', '')\n        self.wx_qy_agentid = self.request.kwargs.get('wx_qy_agentid') \\\n            or getattr(self, 'wx_qy_agentid', '') \\\n            or getattr(configs, 'wx_qy_agentid', '')\n\n        data = self.form_data\n        # 根据蓝鲸平台用户数据，将用户名转换为微信用户ID\n        if data['receiver__username']:\n            user_data = tools.get_receiver_with_username(\n                receiver__username=data['receiver__username'],\n                contact_way=self.contact_way,\n            )\n            data.update(user_data)\n\n        if self.wx_type == 'mp':\n            data.update({\n                'appid': self.wx_app_id,\n                'secret': self.wx_secret,\n                'template_id': self.wx_template_id,\n                'url': self.request.kwargs.get('url', ''),\n                'touser': data['receiver'],\n                'data': self.get_mp_msg_data(data['data']),\n            })\n            result = self.invoke_other('generic.weixin_mp.send_msg_with_tpl', kwargs=data)\n        elif self.wx_type in ['qy', 'qywx']:\n            data.update({\n                'corpid': self.wx_qy_corpid,\n                'corpsecret': self.wx_qy_corpsecret,\n                'agentid': self.wx_qy_agentid,\n                'touser': data['receiver'],\n                'content': self.get_qy_msg_content(data['data']),\n            })\n            result = self.invoke_other('generic.weixin_qy.send_message', kwargs=data)\n        else:\n            result = {'result': False, 'message': 'WeChat type that is not supported [wx_type=%s]' % self.wx_type}\n\n        if result['result'] and data.get('_extra_user_error_msg'):\n            result = {\n                'result': False,\n                'message': 'Some users failed to send wechat message. %s' % data['_extra_user_error_msg']\n            }\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'CMSI'\n\n\nhost = SmartHost(\n    host_prod='need_to_be_updated',\n)\n\n\n# 通过 SMTP 发送邮件的配置\nsmtp_host = 'smtp.qq.com'\nsmtp_port = 465\nsmtp_user = '873515490@qq.com'\nsmtp_pwd = 'nwsgocgaoregbedc'\nsmtp_usessl = True\nsmtp_usetls = False\n# mail_sender = 'blueking@bking.com'\nmail_sender = '873515490@qq.com'\n\n# 通过第三方接口发送邮件的配置\ndest_url = ''  # 邮件第三方接口完整路径\n\n# send_weixin 组件微信消息类型配置\nwx_type = 'qy'\n\n# 发送微信公众号消息配置\nwx_app_id = ''\nwx_secret = ''\nwx_template_id = 'yrxKwt3OR4BGvuZzwiASaSm_GfOtxwak3mMfh5Ijiaw'\n\n# 微信企业号配置\nwx_qy_corpid = ''\nwx_qy_corpsecret = ''\nwx_qy_agentid = ''\n\n# 发送短信腾讯云配置 sdkappid 对应的 appkey，需要业务方高度保密\nqcloud_app_id = '1400468115'\nqcloud_app_key = 'eba8d646e9a6df4eb0421417f759a68e'\n\n# cmsi支持的信息发送类型\nmsg_type = [\n    {\n        \"type\": \"weixin\",\n        \"label\": \"微信\",\n        \"label_en\": \"weixin\"\n    },\n    {\n        \"type\": \"mail\",\n        \"label\": \"邮件\",\n        \"label_en\": \"mail\"\n    },\n    {\n        \"type\": \"sms\",\n        \"label\": \"短信\",\n        \"label_en\": \"sms\"\n    },\n    {\n        \"type\": \"voice\",\n        \"label\": \"语音\",\n        \"label_en\": \"voice\"\n    }\n]\n\nmsg_type_map = {\n    \"weixin\": \"send_weixin\",\n    \"mail\": \"send_mail\",\n    \"sms\": \"send_sms\",\n    \"voice\": \"send_voice_msg\"\n}\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/send_mail_with_smtp.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport smtplib\nimport mimetypes\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.image import MIMEImage\nfrom email.utils import COMMASPACE\nfrom email.header import Header\n\nfrom common.base_utils import smart_str\nfrom common.bkerrors import bk_error_codes\nfrom common.log import logger\n\n\nclass SMTPClient(object):\n\n    def __init__(self, smtp_host, smtp_port, smtp_user='',\n                 smtp_pwd='', smtp_usessl=False, smtp_usetls=False,\n                 smtp_timeout=10):\n        self.smtp_host = smtp_host\n        self.smtp_port = smtp_port\n        self.smtp_user = smtp_user\n        self.smtp_pwd = smtp_pwd\n        self.smtp_usessl = smtp_usessl\n        self.smtp_usetls = smtp_usetls\n        self.smtp_timeout = smtp_timeout\n\n    def send_mail(self, kwargs):\n        mail_sender = kwargs['sender']\n        all_receiver = kwargs['receiver'] + kwargs['cc']\n\n        if kwargs.get('mime_subtype'):\n            msg = MIMEMultipart(kwargs['mime_subtype'])\n        else:\n            msg = MIMEMultipart()\n        msg['Subject'] = Header(smart_str(kwargs['title']), 'utf-8')\n        msg['From'] = mail_sender\n        msg['To'] = COMMASPACE.join(kwargs['receiver'])\n        msg['Cc'] = COMMASPACE.join(kwargs['cc'])\n\n        # 添加邮件内容\n        self.add_content_to_msg(msg, kwargs['content'], kwargs.get('body_format'))\n\n        # 加载附件\n        self.add_attachment_to_msg(msg, kwargs.get('attachments'))\n\n        try:\n            smtp = self.get_smtp_client()\n            smtp.sendmail(mail_sender, all_receiver, msg.as_string())\n            smtp.quit()\n        except Exception:\n            logger.exception('%s send mail exception, server: %s:%s',\n                             bk_error_codes.REQUEST_SMTP_ERROR.code, self.smtp_host, self.smtp_port)\n            return {'result': False, 'message': 'Failed to send mail'}\n        else:\n            return {'result': True, 'message': 'Succeeded to send mail'}\n\n    def add_content_to_msg(self, mail_msg, content, body_format):\n        body_format = 'plain' if body_format == 'Text' else 'html'\n        msgtxt = MIMEText(smart_str(content), body_format, 'utf-8')\n        mail_msg.attach(msgtxt)\n\n    def add_attachment_to_msg(self, mail_msg, attachments):\n        \"\"\"\n        :param attachment:\n        [\n            {\n                'file_name': 'test.jpg',   # 文件名\n                'file_content': 'xxx',     # 文件内容\n                'file_type': 'image',      # 文件类型\n            }\n        ]\n        \"\"\"\n        for f_info in attachments or []:\n            _filename = f_info.get('filename', '')\n            _content = f_info.get('content', '')\n            _type = f_info.get('type') or _filename.split('.')[-1] or 'attachment'\n            _disposition = f_info.get('disposition', '')\n            # 添加二进制附件\n            if _type in ['image', 'jpg', 'png', 'jpeg']:\n                content_id = f_info.get('content_id') or '<%s>' % _filename\n                _disposition = _disposition or 'inline'\n                msgImage = MIMEImage(_content, name=_filename)\n                msgImage.add_header('Content-ID', content_id)\n                msgImage.add_header('Content-Disposition', _disposition, filename=_filename)\n                mail_msg.attach(msgImage)\n            else:\n                _disposition = _disposition or 'attachment'\n                ctype, encoding = mimetypes.guess_type(_filename)\n                if ctype is None or encoding is not None:\n                    ctype = 'application/octet-stream'\n                maintype, subtype = ctype.split('/', 1)\n                att = MIMEImage(_content, _subtype=subtype)\n                att.add_header('Content-Disposition', _disposition, filename=_filename)\n                mail_msg.attach(att)\n\n    def get_smtp_client(self):\n        if self.smtp_usessl:\n            smtp = smtplib.SMTP_SSL(self.smtp_host, self.smtp_port, timeout=self.smtp_timeout)\n        else:\n            smtp = smtplib.SMTP(self.smtp_host, self.smtp_port, timeout=self.smtp_timeout)\n\n        if self.smtp_usetls:\n            smtp.ehlo()\n            smtp.starttls()\n            smtp.ehlo()\n\n        if self.smtp_user and self.smtp_pwd:\n            smtp.login(self.smtp_user, self.smtp_pwd)\n        return smtp\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/test_send_mail_with_smtp.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport smtplib\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.text import MIMEText\nfrom email.utils import COMMASPACE\n\n\ndef send_mail(smtp_host, smtp_port, smtp_user, smtp_pwd, smtp_usessl, smtp_usetls, mail_sender, receiver):\n    print(\"1. build mail content\")\n    # Create message container\n    msg = MIMEMultipart()\n    msg['Subject'] = \"This is a test email\"\n    msg['From'] = mail_sender\n    msg['To'] = COMMASPACE.join(receiver)\n    # Create the body of the message (a plain-text and an HTML version).\n    html = \"Hello world!\"\n    # Record the MIME types of both parts - text/plain and text/html.\n    part2 = MIMEText(html, 'html', 'utf-8')\n\n    # Attach parts into message container.\n    # According to RFC 2046, the last part of a multipart message, in this case\n    # the HTML message, is best and preferred.\n    msg.attach(part2)\n\n    print(\"2. connect smtp client\")\n    if smtp_usessl:\n        smtp = smtplib.SMTP_SSL(smtp_host, smtp_port, timeout=10)\n    else:\n        smtp = smtplib.SMTP(smtp_host, smtp_port, timeout=10)\n\n    if smtp_usetls:\n        smtp.set_debuglevel(True)\n        smtp.ehlo()\n        smtp.starttls()\n        smtp.ehlo()\n\n    print(\"3. login via username/password\")\n    smtp.login(smtp_user, smtp_pwd)\n\n    print(\"4. do send mail\")\n    smtp.sendmail(mail_sender, receiver, msg.as_string())\n\n    smtp.quit()\n    print(\"5. done\")\n    return True\n\n\ndef main():\n    # qq email: how to open POP3/SMTP/IMAP?\n    # http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=166&&id=28\n\n    smtp_host = \"smtp.qq.com\"\n    smtp_port = 465\n\n    smtp_user = \"10000@qq.com\"\n    smtp_pwd = \"xxx\"\n\n    smtp_usessl = True\n    smtp_usetls = False\n\n    mail_sender = \"10000@qq.com\"\n    receiver = [\"bking@bking.com\"]\n\n    send_mail(smtp_host, smtp_port, smtp_user, smtp_pwd, smtp_usessl, smtp_usetls, mail_sender, receiver)\n\n\nif __name__ == '__main__':\n    # checklist\n    # 1. check SMTP service connectivity\n    #    - telnet smtp_host smtp_port\n    # 2. check if ssl is needed\n    # 3. check if tls is needed\n    # 4. check username/password/sender is ok\n\n    main()\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.errors import CommonAPIError\n\n\ndef valid_email(email):\n    if not isinstance(email, str) or email.find('@') < 0:\n        return False\n    return True\n\n\ndef valid_phone(phone):\n    if not isinstance(phone, (str, int)) or not str(phone).isdigit():\n        return False\n    return True\n\n\ndef get_user_contact(user, contact_way):\n    if contact_way == 'email':\n        contact_info = user['email']\n        return contact_info, valid_email(contact_info)\n    elif contact_way == 'phone':\n        contact_info = user['phone']\n        return contact_info, valid_phone(contact_info)\n    else:\n        contact_info = user.get(contact_way)\n        return contact_info, bool(contact_info)\n\n\ndef validate_receiver(receiver, contact_way='phone'):\n    valid_receiver = []\n    error_contact_user = []\n    print('--------------------------------------')\n    print('receiver', receiver)\n    print('contact_way', contact_way)\n    for user_contact in receiver:\n        if contact_way == 'email':\n            print('------------------------------')\n            print('is_email')\n            is_valid = valid_email(user_contact)\n        elif contact_way == 'phone':\n            is_valid = valid_phone(user_contact)\n        if is_valid:\n            valid_receiver.append(user_contact)\n        else:\n            error_contact_user.append(user_contact)\n    if error_contact_user:\n        raise CommonAPIError('User message failed to send. The following users contact format are incorrect: %s, please check' % ','.join(error_contact_user))  # noqa\n    return valid_receiver\n\n\ndef get_receiver_with_username(receiver__username=None,    # noqa\n                               cc__username=None,\n                               contact_way='phone'):\n    username_list = []\n    if receiver__username:\n        username_list.extend(receiver__username)\n    if cc__username:\n        username_list.extend(cc__username)\n\n    if not username_list:\n        return {}\n\n    from components.bk.apis.bk_login.get_batch_user import GetBatchUser\n    user_result = GetBatchUser().invoke(kwargs={'username_list': username_list})\n    if not user_result['result']:\n        raise CommonAPIError('Failed to get users contact information based on username, %s' % user_result['message'])\n\n    result = {}\n    not_exist_user = []\n    error_contact_user = []\n    user_data = user_result['data']\n    if receiver__username:\n        result['receiver'] = []\n        for username in receiver__username:\n            user = user_data.get(username)\n            if not user:\n                not_exist_user.append(username)\n                continue\n            user_contact, is_valid = get_user_contact(user, contact_way)\n            if is_valid:\n                result['receiver'].append(user_contact)\n            else:\n                error_contact_user.append(username)\n\n    if cc__username:\n        result['cc'] = []\n        for username in cc__username:\n            user = user_data.get(username)\n            if not user:\n                not_exist_user.append(username)\n                continue\n            user_contact, is_valid = get_user_contact(user, contact_way)\n            if is_valid:\n                result['cc'].append(user_contact)\n            else:\n                error_contact_user.append(username)\n\n    _extra_user_error_msg = []\n    if not_exist_user:\n        _extra_user_error_msg.append('The following users are not blueking users: %s' % ','.join(not_exist_user))\n    if error_contact_user:\n        _extra_user_error_msg.append('The following users contact format are incorrect: %s'\n                                     % ','.join(error_contact_user))\n    result['_extra_user_error_msg'] = ';'.join(_extra_user_error_msg)\n\n    if receiver__username and not result.get('receiver'):\n        raise CommonAPIError('All users message failed to be sent. %s' % result['_extra_user_error_msg'])\n\n    return result\n\n\ndef get_user_contact_with_username(username_list=None, contact_way='phone'):\n    from components.bk.apis.bk_login.get_batch_user import GetBatchUser\n    user_result = GetBatchUser().invoke(kwargs={'username_list': username_list})\n    if not user_result['result']:\n        raise CommonAPIError('Failed to get users contact information based on username, %s' % user_result['message'])\n\n    user_contact_info = {}\n    not_exist_user = []\n    error_contact_user = []\n    user_data = user_result['data']\n    for username in username_list:\n        user = user_data.get(username)\n        if not user:\n            not_exist_user.append(username)\n            continue\n        user_contact, is_valid = get_user_contact(user, contact_way)\n        if is_valid:\n            user_contact_info[username] = user_contact\n        else:\n            error_contact_user.append(username)\n\n    _extra_user_error_msg = []\n    if not_exist_user:\n        _extra_user_error_msg.append('The following users are not blueking users: %s' % ','.join(not_exist_user))\n    if error_contact_user:\n        _extra_user_error_msg.append('The following users contact format are incorrect: %s'\n                                     % ','.join(error_contact_user))\n    _extra_user_error_msg = ';'.join(_extra_user_error_msg)\n\n    if not user_contact_info:\n        raise CommonAPIError('All users contact information failed to get, %s' % _extra_user_error_msg)\n\n    return {\n        'user_contact_info': user_contact_info,\n        '_extra_user_error_msg': _extra_user_error_msg\n    }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/conf.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nSYSTEM_DOC_CATEGORY = [\n    # {\n    #     'label': 'Test-Catg',\n    #     'priority': 100,\n    #     'systems': ['TEST']    # system_name\n    # },\n]\n\n\nSYSTEMS = [\n    # {\n    #     'name': 'TEST',\n    #     'label': 'My Test',\n    #     'remark': 'My Test',\n    #     'interface_admin': 'admin',\n    #     'execute_timeout': 30,\n    #     'query_timeout': 30,\n    # },\n]\n\n\nCHANNELS = [\n    # TEST\n    # ('/test/healthz/', {'comp_codename': 'generic.test.healthz'}),\n]\n\n\n# Self-service components\nBUFFET_COMPONENTS = [\n    # {\n    #     # Register config\n    #     'name': 'get template list',\n    #     'system_name': 'TEST',\n    #     'registed_http_method': 'GET',\n    #     'registed_path': '/test/heartbeat/',\n    #     'type': 2,  # 2 is query, 1 is operate\n    #     # Before request\n    #     'extra_headers': {\n    #         'Token': '1234567890',\n    #     },\n    #     # Request target\n    #     'dest_url': 'http://domain.test.com/test/heartbeat/',\n    #     'dest_http_method': 'POST',\n    #     'favor_post_ctype': 'json',   # json / form\n    #     'timeout_time': 10,\n    # },\n]\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/heartbeat/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/heartbeat/detect.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport time\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass Detect(Component):\n    \"\"\"心跳探测，测试用\n    \"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n\n    class Form(BaseComponentForm):\n        timestamp = forms.IntegerField(label='timestamp', required=True)\n        sleep_time = forms.IntegerField(label='sleep time', required=False)\n\n    def handle(self):\n        if self.form_data.get('sleep_time'):\n            time.sleep(self.form_data['sleep_time'])\n\n        self.response.payload = {\n            'result': True,\n            'data': {\n                'timestamp': self.form_data['timestamp'],\n                'now': int(time.time()),\n            }\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/heartbeat/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/heartbeat/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nSYSTEM_NAME = 'HEARTBEAT'\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_multi_sms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import tools, configs\n\n\nclass SendMultiSms(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        sdk_app_id = forms.CharField(label='tencent cloud sdkappid', required=True)\n        app_key = forms.CharField(label='tencent cloud appkey', required=True)\n        sms_type = forms.IntegerField(label='sms type', required=False)\n        nation_code = forms.CharField(label='nation code', required=False)\n        phone_numbers = ListField(label='phone numbers', required=True)\n        content = forms.CharField(label='content', required=True)\n        extend = forms.CharField(label='extend', required=False)\n        ext = forms.CharField(label='ext', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            nation_code = data['nation_code'] or configs.default_nation_code\n            new_data = {\n                'tel': [\n                    {'nationcode': nation_code, 'mobile': phone_number}\n                    for phone_number in data['phone_numbers']\n                ],\n                'type': data['sms_type'] or 0,\n                'msg': data['content'],\n                'extend': data['extend'],\n                'ext': data['ext'],\n            }\n            return new_data\n\n    def handle(self):\n        sdk_app_id = self.request.kwargs.get('sdk_app_id')\n        app_key = self.request.kwargs.get('app_key')\n        print('qcloud_sms', sdk_app_id, app_key)\n        client = tools.QCloudSmsClient(self.outgoing.http_client)\n        rnd = client.get_random()\n        cur_time = client.get_cur_time()\n        self.form_data['time'] = cur_time\n        self.form_data['sig'] = client.calculate_sig(app_key, rnd, cur_time, self.request.kwargs['phone_numbers'])\n        print('self.form_data', self.form_data)\n        result = client.post(\n            '/v5/tlssmssvr/sendmultisms2?sdkappid=%s&random=%s' % (sdk_app_id, rnd),\n            data=self.form_data,\n        )\n        print('/v5/tlssmssvr/sendmultisms2?sdkappid=%s&random=%s' % (sdk_app_id, rnd))\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_multi_sms_with_tpl.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, TypeCheckField, ListField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import tools, configs\n\n\nclass SendMultiSmsWithTpl(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        sdk_app_id = forms.CharField(label='tencent cloud sdkappid', required=True)\n        app_key = forms.CharField(label='tencent cloud appkey', required=True)\n        sign = forms.CharField(label='sms signature', required=False)\n        tpl_id = forms.IntegerField(label='template id', required=True)\n        params = TypeCheckField(label='template params', promise_type=list, required=False)\n        nation_code = forms.CharField(label='nation code', required=False)\n        phone_numbers = ListField(label='phone numbers', required=True)\n        extend = forms.CharField(label='extend', required=False)\n        ext = forms.CharField(label='ext', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            nation_code = data['nation_code'] or configs.default_nation_code\n            new_data = {\n                'tel': [\n                    {'nationcode': nation_code, 'mobile': phone_number}\n                    for phone_number in data['phone_numbers']\n                ],\n                'sign': data['sign'],\n                'tpl_id': data['tpl_id'],\n                'params': data['params'],\n                'extend': data['extend'],\n                'ext': data['ext'],\n            }\n            return new_data\n\n    def handle(self):\n        sdk_app_id = self.request.kwargs.get('sdk_app_id')\n        app_key = self.request.kwargs.get('app_key')\n\n        client = tools.QCloudSmsClient(self.outgoing.http_client)\n        rnd = client.get_random()\n        cur_time = client.get_cur_time()\n        self.form_data['time'] = cur_time\n        self.form_data['sig'] = client.calculate_sig(app_key, rnd, cur_time, self.request.kwargs['phone_numbers'])\n\n        result = client.post(\n            'https://yun.tim.qq.com/v5/tlssmssvr/sendmultisms2?sdkappid=%s&random=%s' % (sdk_app_id, rnd),\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_sms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import tools, configs\n\n\nclass SendSms(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        sdk_app_id = forms.CharField(label='tencent cloud sdkappid', required=True)\n        app_key = forms.CharField(label='tencent cloud appkey', required=True)\n        sms_type = forms.IntegerField(label='sms type', required=False)\n        nation_code = forms.CharField(label='nation code', required=False)\n        phone_number = forms.CharField(label='phone number', required=True)\n        content = forms.CharField(label='content', required=True)\n        extend = forms.CharField(label='extend', required=False)\n        ext = forms.CharField(label='ext', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            nation_code = data['nation_code'] or configs.default_nation_code\n            new_data = {\n                'tel': {'nationcode': nation_code, 'mobile': data['phone_number']},\n                'type': data['sms_type'] or 0,\n                'msg': data['content'],\n                'extend': data['extend'],\n                'ext': data['ext'],\n            }\n            return new_data\n\n    def handle(self):\n        sdk_app_id = self.request.kwargs.get('sdk_app_id')\n        app_key = self.request.kwargs.get('app_key')\n\n        client = tools.QCloudSmsClient(self.outgoing.http_client)\n        rnd = client.get_random()\n        cur_time = client.get_cur_time()\n        self.form_data['time'] = cur_time\n        self.form_data['sig'] = client.calculate_sig(app_key, rnd, cur_time, [self.request.kwargs['phone_number']])\n\n        result = client.post(\n            '/v5/tlssmssvr/sendsms?sdkappid=%s&random=%s' % (sdk_app_id, rnd),\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_sms_with_tpl.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import tools, configs\n\n\nclass SendSmsWithTpl(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        sdk_app_id = forms.CharField(label='tencent cloud sdkappid', required=True)\n        app_key = forms.CharField(label='tencent cloud appkey', required=True)\n        sign = forms.CharField(label='sms signature', required=False)\n        tpl_id = forms.IntegerField(label='template id', required=True)\n        params = TypeCheckField(label='template params', promise_type=list, required=False)\n        nation_code = forms.CharField(label='nation code', required=False)\n        phone_number = forms.CharField(label='phone number', required=True)\n        extend = forms.CharField(label='extend', required=False)\n        ext = forms.CharField(label='ext', required=False)\n\n        def clean(self):\n            data = self.cleaned_data\n            nation_code = data['nation_code'] or configs.default_nation_code\n            new_data = {\n                'tel': {'nationcode': nation_code, 'mobile': data['phone_number']},\n                'sign': data['sign'],\n                'tpl_id': data['tpl_id'],\n                'params': data['params'],\n                'extend': data['extend'],\n                'ext': data['ext'],\n            }\n            return new_data\n\n    def handle(self):\n        sdk_app_id = self.request.kwargs.get('sdk_app_id')\n        app_key = self.request.kwargs.get('app_key')\n\n        client = tools.QCloudSmsClient(self.outgoing.http_client)\n        rnd = client.get_random()\n        cur_time = client.get_cur_time()\n        self.form_data['time'] = cur_time\n        self.form_data['sig'] = client.calculate_sig(app_key, rnd, cur_time, [self.request.kwargs['phone_number']])\n\n        result = client.post(\n            '/v5/tlssmssvr/sendsms?sdkappid=%s&random=%s' % (sdk_app_id, rnd),\n            data=self.form_data,\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'QCLOUD_SMS'\n\nhost = SmartHost(\n    host_prod='https://yun.tim.qq.com'\n    # host_prod='https://cloud.tim.qq.com'\n)\n\ndefault_nation_code = '86'\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_sms/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport random\nimport time\nimport hashlib\n\nfrom . import configs\n\n\nclass QCloudSmsClient(object):\n\n    def __init__(self, http_client):\n        self.http_client = http_client\n\n    def get_random(self):\n        return random.randint(100000, 999999)\n\n    def get_cur_time(self):\n        return int(time.time())\n\n    def calculate_sig(self, app_key, rnd, cur_time, phone_numbers):\n        text = 'appkey=%s&random=%s&time=%s&mobile=%s' % (\n            app_key, rnd, cur_time, ','.join(phone_numbers))\n        print('text', text)\n        return hashlib.sha256(text).hexdigest()\n\n    def post(self, path, data):\n        result = self.http_client.post(configs.host, path, data=json.dumps(data))\n        print(result)\n        if result.get('ErrorCode'):\n            return {\n                'result': False,\n                'message': result.get('ErrorInfo', 'An unknown error has occurred'),\n                'data': result\n            }\n        if result['result'] == 0:\n            return {\n                'result': True,\n                'data': result,\n                'message': result['errmsg'],\n            }\n        else:\n            return {\n                'result': False,\n                'data': result,\n                'message': result['errmsg'],\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_voice/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_voice/send_voice_msg.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom common.constants import API_TYPE_OP\nfrom .toolkit import tools, configs\n\n\nclass SendVoiceMsg(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        qcloud_app_id = forms.CharField(label='qcloud app id', required=True)\n        qcloud_app_key = forms.CharField(label='qcloud app key', required=True)\n        auto_read_message = forms.CharField(label='auto voice reading info', required=True)\n        user_list_information = TypeCheckField(label='user list', promise_type=list, required=True)\n        ext = forms.CharField(label='ext', required=False)\n\n        def kwargs_generator(self, data):\n            for user in data['user_list_information']:\n                yield {\n                    \"user\": user,\n                    \"promptfile\": data['auto_read_message'],\n                    \"playtimes\": configs.voice_playtimes,\n                    \"prompttype\": configs.voice_prompttype,\n                    \"tel\": {\n                        \"mobile\": user['mobile_phone'],\n                        \"nationcode\": configs.default_nation_code\n                    },\n                    \"ext\": data['ext']\n                }\n\n        def clean(self):\n            data = self.cleaned_data\n            return {\n                \"kwargs_generator\": self.kwargs_generator(data),\n                \"qcloud_app_id\": data[\"qcloud_app_id\"],\n                \"qcloud_app_key\": data[\"qcloud_app_key\"]\n            }\n\n    def handle(self):\n        data = self.request.kwargs['kwargs_generator']\n        client = tools.QCloudVoiceClient(self.outgoing.http_client)\n        result = {\n            \"successed\": [],\n            \"failed\": []\n        }\n        for kwargs in data:\n            rnd = client.get_random()\n            cur_time = client.get_cur_time()\n            kwargs['time'] = cur_time\n            kwargs['sig'] = client.generate_sig(\n                self.request.kwargs['qcloud_app_key'],\n                kwargs['tel']['mobile'],\n                rnd,\n                cur_time\n            )\n\n            user = kwargs.pop('user')\n            ret = client.post(\n                '/v5/tlsvoicesvr/sendvoiceprompt?sdkappid=%s&random=%s' % (self.request.kwargs['qcloud_app_id'], rnd),\n                data=kwargs\n            )\n            user.update(ret)\n            result['successed'].append(user) if ret['result'] == 0 else result['failed'].append(user)\n\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_voice/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_voice/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'QCLOUD_VOICE'\n\nhost = SmartHost(\n    host_prod='https://cloud.tim.qq.com'\n)\n\ndefault_nation_code = '86'\nvoice_playtimes = 3\nvoice_prompttype = 2\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/qcloud_voice/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport random\nimport time\nimport hashlib\n\nfrom . import configs\n\n\nclass QCloudVoiceClient(object):\n\n    def __init__(self, http_client):\n        self.http_client = http_client\n\n    def get_random(self):\n        return random.randint(10000, 99999)\n\n    def get_cur_time(self):\n        return int(time.time())\n\n    def generate_sig(self, qcloud_app_key, mobile, random_int, now):\n        fmt = \"appkey={}&random={}&time={}&mobile={}\"\n        return hashlib.sha256(fmt.format(qcloud_app_key, random_int, now, mobile)).hexdigest()\n\n    def post(self, path, data):\n        return self.http_client.post(configs.host, path, data=json.dumps(data))\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin/get_token.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom esb.bkcore.models import ESBChannel\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, DefaultBooleanField\nfrom common.constants import API_TYPE_Q\nfrom common.errors import CommonAPIError\nfrom .toolkit import configs\n\n\nclass GetToken(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        need_new_token = DefaultBooleanField(label='obtain a new token or not', default=False, required=False)\n\n    def get_wx_config(self):\n        try:\n            send_weixin_channel = ESBChannel.objects.get(path='/cmsi/send_weixin/')\n        except Exception:\n            raise CommonAPIError(\n                'Channel with path [/cmsi/send_weixin/] does not exist, can not get WeChat configuration')\n        return dict(json.loads(send_weixin_channel.comp_conf))\n\n    def handle(self):\n        wx_config = self.get_wx_config()\n        wx_type = wx_config.get('wx_type')\n        if wx_type in ['qy', 'qywx']:\n            wx_qy_corpid = wx_config.get('wx_qy_corpid')\n            wx_qy_corpsecret = wx_config.get('wx_qy_corpsecret')\n            if not (wx_qy_corpid and wx_qy_corpsecret):\n                raise CommonAPIError(\n                    'Please improve the component configuration of component [/cmsi/send_weixin/] '\n                    'in ESB channel management')\n            kwargs = {\n                'corpid': wx_qy_corpid,\n                'corpsecret': wx_qy_corpsecret,\n            }\n            self.response.payload = self.invoke_other('generic.weixin_qy.get_token', kwargs=kwargs)\n        elif wx_type in ['mp']:\n            wx_app_id = wx_config.get('wx_app_id')\n            wx_secret = wx_config.get('wx_secret')\n            if not (wx_app_id and wx_secret):\n                raise CommonAPIError(\n                    'Please improve the component configuration of component [/cmsi/send_weixin/] '\n                    'in ESB channel management')\n            kwargs = {\n                'appid': wx_app_id,\n                'secret': wx_secret,\n                'need_new_token': self.form_data['need_new_token'],\n            }\n            self.response.payload = self.invoke_other('generic.weixin_mp.get_token', kwargs=kwargs)\n        else:\n            self.response.payload = {\n                'result': False,\n                'message': 'In the component configuration for component [/cmsi/send_weixin/], '\n                'the value of wx_type is not in the optional range'\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nSYSTEM_NAME = 'WEIXIN'\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_mp/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_mp/get_token.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport datetime\n\nfrom django import forms\nfrom django.utils import timezone\n\nfrom esb.bkcore.models import WxmpAccessToken\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, DefaultBooleanField\nfrom common.constants import API_TYPE_Q\nfrom common.errors import CommonAPIError\nfrom .toolkit import tools, configs\n\n\nclass GetToken(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        appid = forms.CharField(label='wechat appid', required=True)\n        secret = forms.CharField(label='wechat app secret', required=True)\n        need_new_token = DefaultBooleanField(label='obtain a new token or not', default=False, required=False)\n\n    def get_wx_token(self):\n        params = {\n            'grant_type': 'client_credential',\n            'appid': self.form_data['appid'],\n            'secret': self.form_data['secret'],\n            'simple_get_token': 1,\n        }\n        client = tools.WEIXINClient(self.outgoing.http_client)\n        result = client.get(path='/cgi-bin/token', params=params)\n        if not result['result']:\n            raise CommonAPIError(result['message'])\n        return result['data']\n\n    def handle(self):\n        wx_app_id = self.form_data['appid']\n        need_new_token = self.form_data['need_new_token']\n        # 获取现有的token信息\n        try:\n            wx_access_token = WxmpAccessToken.objects.get(wx_app_id=wx_app_id)\n        except Exception:\n            wx_access_token = None\n\n        if not wx_access_token or wx_access_token.has_expired() or need_new_token:\n            wx_token = self.get_wx_token()\n            expires = timezone.now() + datetime.timedelta(seconds=wx_token['expires_in'])\n            wx_access_token, created = WxmpAccessToken.objects.get_or_create(\n                wx_app_id=wx_app_id,\n                defaults={\n                    'access_token': wx_token['access_token'],\n                    'expires': expires,\n                }\n            )\n            if not created:\n                wx_access_token.access_token = wx_token['access_token']\n                wx_access_token.expires = expires\n                wx_access_token.touch()\n                wx_access_token.save()\n\n        self.response.payload = {\n            'result': True,\n            'data': wx_access_token.get_info(),\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_mp/send_msg_with_tpl.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField, TypeCheckField\nfrom .toolkit import configs, tools\n\n\nclass SendMsgWithTpl(Component, SetupConfMixin):\n    \"\"\"\"\"\"\n\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        appid = forms.CharField(label='wechat appid', required=True)\n        secret = forms.CharField(label='wechat app secret', required=True)\n        touser = ListField(label='touser', required=True)\n        template_id = forms.CharField(label='template ID', required=True)\n        data = TypeCheckField(label='message data', promise_type=dict, required=False)\n\n    def send_msg(self, wx_client, access_token, data):\n        return wx_client.post(\n            path='/cgi-bin/message/template/send?access_token=%s' % access_token,\n            data=json.dumps(data),\n        )\n\n    def get_wx_access_token(self, params, need_new_token=False):\n        params['need_new_token'] = need_new_token\n        wx_token = self.invoke_other('generic.weixin_mp.get_token', kwargs=params)\n        return wx_token['data']['access_token']\n\n    def handle(self):\n        data = self.request.kwargs\n        common_params = {\n            'template_id': data['template_id'],\n            'url': data.get('url', ''),\n            'data': data['data'],\n            'simple_get_token': 1,\n        }\n        wx_client = tools.WEIXINClient(self.outgoing.http_client)\n\n        succ_flag = True\n        access_token = self.get_wx_access_token(data)\n        for wx_openid in data['touser']:\n            common_params['touser'] = wx_openid\n            result = self.send_msg(wx_client, access_token, common_params)\n            if not result['result'] and result['data'].get('errcode') in (40001, 40014, 42001):\n                # Token 失效，刷新 Token 并重试\n                access_token = self.get_wx_access_token(data, need_new_token=True)\n                result = self.send_msg(wx_client, access_token, common_params)\n            if not result['result']:\n                succ_flag = False\n\n        if succ_flag:\n            self.response.payload = {'result': True, 'message': 'WeChat message sending succeeded'}\n        else:\n            self.response.payload = {'result': False, 'message': 'WeChat message sending failed'}\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_mp/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_mp/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'weixin_mp'\n\nhost = SmartHost(\n    host_prod='https://api.weixin.qq.com',\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_mp/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom . import configs\n\n\nclass WEIXINClient(object):\n\n    def __init__(self, http_client):\n        self.http_client = http_client\n\n    def request(self, method, path, params=None, data=None):\n        result = self.http_client.request(method, host=configs.host, path=path, params=params, data=data)\n        try:\n            err_code = result.get('errcode')\n        except Exception:\n            return {\n                'result': False,\n                'message': 'An exception occurred while requesting WeChat service, '\n                'please contact the component developer to handle it.'\n            }\n        if err_code in (None, 0):\n            return {'result': True, 'data': result}\n        else:\n            return {\n                'result': False,\n                'message': 'weixin official api errcode: %(errcode)s, errmsg: %(errmsg)s' % result,\n                'data': result\n            }\n\n    def post(self, *args, **kwargs):\n        return self.request('POST', *args, **kwargs)\n\n    def get(self, *args, **kwargs):\n        return self.request('GET', *args, **kwargs)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/get_token.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetToken(Component, SetupConfMixin):\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        corpid = forms.CharField(label='corp ID', required=True)\n        corpsecret = forms.CharField(label='corp secret', required=True)\n\n    def handle(self):\n        client = tools.WEIXINClient(self.outgoing.http_client)\n        result = client.get(path='/cgi-bin/gettoken', params=self.form_data)\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/get_user.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\n\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm\nfrom common.constants import API_TYPE_Q\nfrom .toolkit import tools, configs\n\n\nclass GetUser(Component, SetupConfMixin):\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_Q\n\n    class Form(BaseComponentForm):\n        corpid = forms.CharField(label='corp ID', required=True)\n        corpsecret = forms.CharField(label='corp secret', required=True)\n        userid = forms.CharField(label='userid', required=True)\n\n    def get_wx_access_token(self, params):\n        wx_token = self.invoke_other('generic.weixin_qy.get_token', kwargs=params)\n        return wx_token['data']['access_token']\n\n    def handle(self):\n        client = tools.WEIXINClient(self.outgoing.http_client)\n        access_token = self.get_wx_access_token(self.form_data)\n        result = client.get(\n            path='/cgi-bin/user/get',\n            params={\n                'access_token': access_token, 'userid': self.form_data['userid']\n            }\n        )\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/send_message.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.constants import API_TYPE_OP\nfrom components.component import Component, SetupConfMixin\nfrom common.forms import BaseComponentForm, ListField\nfrom .toolkit import configs, tools\n\n\nclass SendMessage(Component, SetupConfMixin):\n    sys_name = configs.SYSTEM_NAME\n    api_type = API_TYPE_OP\n\n    class Form(BaseComponentForm):\n        corpid = forms.CharField(label='corp ID', required=True)\n        corpsecret = forms.CharField(label='corp secret', required=True)\n        agentid = forms.IntegerField(label='corp agentid', required=True)\n        touser = ListField(label='touser', required=True)\n        content = forms.CharField(label='content', required=True)\n\n    def get_wx_access_token(self, params):\n        wx_token = self.invoke_other('generic.weixin_qy.get_token', kwargs=params)\n        return wx_token['data']['access_token']\n\n    def handle(self):\n        access_token = self.get_wx_access_token(params=self.form_data)\n        data = {\n            'touser': '|'.join(self.form_data['touser']),\n            'msgtype': 'text',\n            'agentid': self.form_data['agentid'],\n            'text': {\n                'content': self.form_data['content'],\n            }\n        }\n\n        wx_client = tools.WEIXINClient(self.outgoing.http_client)\n        result = wx_client.post(\n            path='/cgi-bin/message/send?access_token=%s' % access_token,\n            data=json.dumps(data, ensure_ascii=False).encode('utf-8'),\n        )\n\n        if result['result']:\n            invaliduser = result.get('data', {}).get('invaliduser')\n            if invaliduser:\n                self.response.payload = {\n                    'result': False,\n                    'message': 'WeChat message sending failed, invalid user: %s' % invaliduser\n                }\n            else:\n                self.response.payload = {'result': True, 'message': 'WeChat message sending succeeded'}\n        else:\n            ret_data = result.get('data', {})\n            message = 'WeChat message sending failed'\n            if ret_data.get('invaliduser'):\n                message = '%s, invalid user: %s' % (message, ret_data['invaliduser'])\n            if ret_data.get(\"errmsg\"):\n                message = '%s, %s' % (message, ret_data['errmsg'])\n            self.response.payload = {\n                'result': False,\n                'message': message,\n                'data': result,\n                'params': data\n            }\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\nSYSTEM_NAME = 'weixin_qy'\n\nhost = SmartHost(\n    host_prod='https://qyapi.weixin.qq.com',\n)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/generic/templates/weixin_qy/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom . import configs\n\n\nclass WEIXINClient(object):\n\n    def __init__(self, http_client):\n        self.http_client = http_client\n\n    def request(self, method, path, params=None, data=None):\n        result = self.http_client.request(method, host=configs.host, path=path, params=params, data=data)\n        try:\n            err_code = result.get('errcode')\n        except Exception:\n            return {\n                'result': False,\n                'message': 'An exception occurred while requesting business WeChat service, '\n                'please contact the component developer to handle it.'\n            }\n        if err_code in (None, 0):\n            return {'result': True, 'data': result}\n        else:\n            return {'result': False, 'message': result['errmsg'], 'data': result}\n\n    def post(self, *args, **kwargs):\n        return self.request('POST', *args, **kwargs)\n\n    def get(self, *args, **kwargs):\n        return self.request('GET', *args, **kwargs)\n"
  },
  {
    "path": "paas-ce/paas/esb/components/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.urls import re_path\nfrom esb.routers import api_router_view, buffet_component_view\n\nurlpatterns = [\n    re_path(r'^compapi/(.*?)$', api_router_view),\n    re_path(r'^self-service-api/(.*?)$', buffet_component_view),\n]\n\n# 处理404和500请求\nhandler404 = 'esb.views.handler_404_view'\nhandler500 = 'esb.views.handler_500_view'\n"
  },
  {
    "path": "paas-ce/paas/esb/configs/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/configs/default_template.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n# Generic Django project settings\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '192.168.0.111',\n        'PORT': '3306',\n    }\n}\n\n\n# Log settings\nLOG_LEVEL = 'INFO'\n\n# esb app_token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n\n# Third party system host\n\n# paas host\nPAAS_HOST = 'http://192.168.0.111:8001'\n\n# Third party system host\n# host for bk login\nHOST_BK_LOGIN = 'http://192.168.0.111:8003'\n\n# host for cc\nHOST_CC = ''\n\n# host for cc v3\nHOST_CC_V3 = ''\n\n# host for fta\nHOST_FTA = ''\n\n# Redis config\nUSE_SENTINEL = False\nREDIS_HOST = ''\nREDIS_PORT = 6379\nREDIS_PASSWORD = ''\nREDIS_MASTER_NAME = ''\n"
  },
  {
    "path": "paas-ce/paas/esb/doc/readme.md",
    "content": "### Not found, component class not found\n1. access api /api/healthz/check_custom_codename/?codename=generic.xxx.xxx, and check\n2. check if esb.log has an exception log\n\n### How to confirm whether the server exists ESB process\n    ps -ef | grep esb\n\n### How to find the project file, log file \n    - find esb uwsgi config file uwsgi.ini: ps -ef | grep esb\n    - project base dir: \"chdir\" in uwsgi.ini\n    - log base dir: \"PAAS_LOGGING_DIR\" in uwsgi.ini\n\n### How to access the single server esb service\n    - curl 'http://ip:8002/c/compapi/xx/xx/?bk_app_code=xxx&bk_app_secret=xxx&bk_username=xxx'\n\n### How to restart esb\n    - ps -ef | grep supervisor-open_paas.conf\n    - workon open_paas\n    - supervisorctl -c xxx/supervisor-open_paas.conf restart esb\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\nfrom common.djmysql_pool import patch_mysql\npatch_mysql(pool_options=settings.DJ_POOL_OPTIONS)\n\nfrom .utils.config import load_config  # noqa\n\n\n# load config for esb\nload_config()\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/apps.py",
    "content": "from django.apps import AppConfig\n\nclass ESBConfig(AppConfig):\n    name = 'esb'\n    verbose_name = \"ESB App\"\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkapp/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkapp/validators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport time\nimport hmac\nimport base64\nimport hashlib\n\nfrom common.base_validators import BaseValidator, ValidationError\nfrom common.errors import error_codes\nfrom esb.exdb.bkpaas import AppSecureInfo\n\n\nclass AppAuthValidator(BaseValidator):\n\n    def __init__(self, verified_type='signature_or_app_secret', *args, **kwargs):\n        \"\"\"\n        :param str verified_type: 验证类型，支持\"app_secret\", \"signature\", \"signature_or_app_secret\"\n        \"\"\"\n        self.verified_type = verified_type\n        super(AppAuthValidator, self).__init__(*args, **kwargs)\n\n    def validate(self, request):\n        if self.verified_type == 'app_secret':\n            validator = AppSecretValidator()\n            validator.validate(request)\n            return\n\n        elif self.verified_type == 'signature':\n            validator = SignatureValidator()\n            validator.validate(request)\n            return\n\n        elif self.verified_type == 'signature_or_app_secret':\n            signature = request.GET.get('bk_signature') or request.GET.get('signature')\n            app_secret = request.kwargs.get('bk_app_secret') or request.kwargs.get('app_secret')\n            if signature:\n                validator = SignatureValidator()\n                validator.validate(request)\n            elif app_secret:\n                validator = AppSecretValidator()\n                validator.validate(request)\n            else:\n                raise ValidationError('Signature [bk_signature] and APP Secret [bk_app_secret] cannot be empty at the same time')  # noqa\n            return\n        else:\n            raise ValidationError('Please choose a valid APP verification method')\n\n\nclass AppSecretValidator(BaseValidator):\n    \"\"\"\n    Validate app_code and app_secret\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        super(AppSecretValidator, self).__init__(*args, **kwargs)\n\n    def validate(self, request):\n        kwargs = request.kwargs\n        app_code = request.app_code\n        app_secret = kwargs.get('bk_app_secret') or kwargs.get('app_secret')\n\n        if not app_code:\n            raise ValidationError('APP Code [bk_app_code] cannot be empty')\n\n        if not app_secret:\n            raise ValidationError('APP Secret [bk_app_secret] cannot be empty')\n\n        app_info = AppSecureInfo.get_by_app_code(app_code)\n        if not app_info:\n            raise ValidationError('Invalid APP Code [bk_app_code=%s], please confirm if the APP Code has been registered' % app_code)  # noqa\n\n        if app_secret not in app_info['secure_key_list']:\n            raise ValidationError('APP Secret verification failed, pelase confirm if the APP Secret and APP Code [bk_app_code=%s] match' % app_code)  # noqa\n\n\nclass SignatureValidator(BaseValidator):\n    \"\"\"\n    Validate signature\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        super(SignatureValidator, self).__init__(*args, **kwargs)\n\n    def get_request_path(self, request):\n        \"\"\"\n        为了应对使用proxy_pass拿不到完整path的情况，先尝试获取自定义头信息，再尝试 path_info\n        \"\"\"\n        path = request.headers.get('x-request-uri', '').split('?')[0]\n        if not path:\n            path = request.META['PATH_INFO']\n        return path\n\n    def validate(self, request):\n        # if skip signature verify\n        if getattr(request, '__esb_skip_signature__', False):\n            return\n\n        req_get_params = dict(list(request.GET.items()))\n\n        # 将 signature 参数从参数字典中拿掉\n        signature = req_get_params.pop('bk_signature', None) or req_get_params.pop('signature', None)\n        if not signature:\n            raise ValidationError('Signature [bk_signature] cannot be empty')\n\n        app_code = request.app_code\n\n        app_info = self.check_app_code(app_code)\n        self.check_nonce(req_get_params.get('bk_nonce'))\n        self.check_timestamp(req_get_params.get('bk_timestamp'))\n\n        path = self.get_request_path(request)\n        params = req_get_params.copy()\n        if request.method == 'POST':\n            params['data'] = request.body\n\n        verify_result = self.verify_signature(request.method, path, params, signature, app_info['secure_key_list'])\n        if not verify_result:\n            raise ValidationError('Signature [bk_signature] verification failed, please provide valid parameters and signature')  # noqa\n\n    def verify_signature(self, method, path, params, signature, valid_app_secret_list):\n        \"\"\"\n        校验signature有效\n        \"\"\"\n        # 校验signature\n        req_params = '&'.join(['%s=%s' % (k, v) for k, v in\n                               sorted(iter(params.items()), key=lambda x: x[0])])\n        message = '%s%s?%s' % (method, path, req_params)\n        for valid_app_secret in valid_app_secret_list:\n            sign = base64.b64encode(hmac.new(str(valid_app_secret), message, hashlib.sha1).digest())\n            if cmp(sign, signature) == 0:\n                return True\n        return False\n\n    def check_app_code(self, app_code):\n        \"\"\"\n        验证 app_code\n        \"\"\"\n        if not app_code:\n            raise ValidationError('APP Code [bk_app_code] cannot be empty')\n\n        app_info = AppSecureInfo.get_by_app_code(app_code)\n        if not app_info:\n            raise ValidationError('Invalid APP Code [bk_app_code=%s], please confirm if the APP Code has been registered' % app_code)  # noqa\n        return app_info\n\n    def check_nonce(self, bk_nonce):\n        \"\"\"\n        验证 bk_nonce\n        \"\"\"\n        if not bk_nonce:\n            raise ValidationError('Parameter bk_nonce does not exist')\n        try:\n            nonce = int(bk_nonce)\n        except Exception:\n            raise ValidationError('Parameter bk_nonce is illegal')\n        if nonce <= 0:\n            raise ValidationError('Parameter bk_nonce is illegal, it must be a positive integer')\n        return nonce\n\n    def check_timestamp(self, bk_timestamp):\n        \"\"\"\n        验证时间戳是否合法\n        \"\"\"\n        if not bk_timestamp:\n            raise ValidationError('Parameter bk_timestamp does not exist')\n        try:\n            timestamp = int(bk_timestamp)\n        except Exception:\n            raise ValidationError('Parameter bk_timestamp is illegal, due to non-time format')\n\n        # 有效期为300s\n        if timestamp < int(time.time()) - 300:\n            raise ValidationError('Parameter bk_timestamp is illegal, because it has expired')\n        return timestamp\n\n\nclass AppCodeWhiteListValidator(BaseValidator):\n\n    def __init__(self, white_list=(), *args, **kwargs):\n        self.white_list = white_list\n        super(AppCodeWhiteListValidator, self).__init__(*args, **kwargs)\n\n    def validate(self, request):\n        app_code = request.app_code\n        if app_code not in self.white_list:\n            raise error_codes.APP_PERMISSION_DENIED.format_prompt('APP [bk_app_code=%s] is forbidden to access this component' % app_code)  # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkauth/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkauth/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nclass User(object):\n    \"\"\"\n    User model\n    \"\"\"\n\n    username = ''\n\n    def __init__(self, username):\n        self.username = username\n\n    def is_authenticated():\n        return True\n\n\nclass AnonymousUser(object):\n    \"\"\"\n    Anonymous user model\n    \"\"\"\n\n    username = ''\n\n    def is_authenticated():\n        return False\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkauth/validators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.base_validators import BaseValidator, ValidationError\nfrom esb.bkcore.models import UserAuthToken\nfrom esb.utils.func_ctrl import FunctionControllerClient\n\n\nclass UserAuthValidator(BaseValidator):\n    \"\"\"\n    validate user\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        super(UserAuthValidator, self).__init__(*args, **kwargs)\n\n    def validate(self, request):\n        kwargs = request.kwargs\n        app_code = request.app_code\n\n        access_token = kwargs.get('bk_access_token')\n        if access_token:\n            token_info = self.validate_access_token(app_code, access_token)\n            self.sync_current_username(request, token_info['username'])\n            return\n\n        bk_token = kwargs.get('bk_token')\n        if bk_token:\n            from components.bk.apis.bk_login.is_login import IsLogin\n            check_result = IsLogin().invoke(kwargs={'bk_token': bk_token}, request_id=request.request_id)\n            if not check_result['result']:\n                msg = check_result.get(\"message\")\n                raise ValidationError(f'User authentication failed, please check if the bk_token is valid({msg})')\n            self.sync_current_username(request, check_result.get('data', {}).get('username', ''))\n            return\n\n        username = kwargs.get('bk_username') or kwargs.get('username')\n        if username and FunctionControllerClient.is_skip_user_auth(app_code):\n            self.sync_current_username(request, username)\n            return\n\n        raise ValidationError('User authentication failed, please provide a valid user identity, such as bk_token, bk_username')  # noqa\n\n    def sync_current_username(self, request, username):\n        request.current_user_username = username\n\n    def validate_bk_token(self):\n        pass\n\n    def validate_access_token(self, app_code, access_token):\n        if not app_code:\n            raise ValidationError('APP Code [bk_app_code] cannot be empty')\n        if not access_token:\n            raise ValidationError('User TOKEN [bk_access_token] cannot be empty')\n\n        user_auth_token = UserAuthToken.objects.filter(app_code=app_code, auth_token=access_token).first()\n        if not user_auth_token:\n            raise ValidationError('The specified user TOKEN [bk_access_token] does not exist')\n        if user_auth_token.has_expired():\n            raise ValidationError('The specified user TOKEN [bk_access_token] has expired, please apply for authorization again')  # noqa\n        return user_auth_token.get_info()\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkcore/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkcore/apps.py",
    "content": "from django.apps import AppConfig\n\nclass BkcoreConfig(AppConfig):\n    default_auto_field = 'django.db.models.BigAutoField'\n    name = 'esb.bkcore'\n\n    #def ready(self):\n    #    from .models import register_models\n    #    register_models()\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkcore/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nCore models for the project.\n\"\"\"\nimport re\nimport json\nimport datetime\n\nfrom django.db import models\nfrom django.utils import timezone\n\nfrom common.constants import BK_SYSTEMS\n\n\nclass ComponentSystem(models.Model):\n    \"\"\"组件系统\n    \"\"\"\n    name = models.CharField('系统名称', max_length=64)\n    label = models.CharField('系统标签', max_length=128, help_text='系统简要说明')\n    component_admin = models.CharField('组件开发负责人', max_length=128, default='', blank=True)\n    interface_admin = models.CharField('系统接口负责人', max_length=128, default='', blank=True,\n                                       help_text='记录系统接口负责人，以便进行消息通知或直接联系，长度为128字符以内')\n    system_link = models.CharField('系统链接', max_length=1024, default='', blank=True,\n                                   help_text='标准的HTTP链接，多个以分号分隔')\n    belong_to = models.CharField('系统所属组织', max_length=128, default='', blank=True)\n    remark = models.TextField('备注', default='', blank=True)\n    execute_timeout = models.IntegerField('执行类超时时长', null=True, blank=True,\n                                          help_text='单位秒，未设置时超时时长为30秒')\n    query_timeout = models.IntegerField('查询类超时时长', null=True, blank=True,\n                                        help_text='单位秒，未设置时超时时长为30秒')\n    doc_category_id = models.IntegerField('文档分类ID', null=True, blank=True)\n\n    class Meta:\n        ordering = ['name']\n        db_table = 'esb_component_system'\n\n    def __unicode__(self):\n        return self.name\n\n    @property\n    def is_official(self):\n        return self.name in BK_SYSTEMS\n\n\nclass ESBChannel(models.Model):\n    \"\"\"Channel for ESB\n\n    One channel links a path to a component\n    \"\"\"\n    TYPE_CHOICE = (\n        (1, '执行API'),\n        (2, '查询API'),\n    )\n    PERM_LEVEL_CHOICE = (\n        (0, '无限制'),\n        (1, '普通权限'),\n        (2, '敏感权限'),\n        (3, '特殊权限'),\n    )\n\n    name = models.CharField('通道名称', max_length=64, help_text='通道名称，长度限制为64字符，例如\"查询服务器列表\"')\n    path = models.CharField('通道路径', max_length=255, unique=True, help_text='通道请求路径，例如\"/host/get_host_list/\"')\n    method = models.CharField('请求类型', max_length=32, null=True, default='', blank=True)\n    component_system = models.ForeignKey(ComponentSystem, on_delete=models.CASCADE, verbose_name='所属组件系统', null=True)\n    component_codename = models.CharField('对应组件代号', max_length=255,\n                                          help_text='对应的组件代号，该组件必须注册到ESB平台中，例如 \"generic.host.get_host_list\"')\n    component_name = models.CharField('组件英文名', max_length=64, default='', blank=True, null=True)\n    is_active = models.BooleanField('是否开启', default=True)\n    last_modified_time = models.DateTimeField('最后更新', auto_now=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n    timeout_time = models.IntegerField('超时时长', blank=True, null=True, help_text='单位秒，未设置时以所属组件系统超时时长为准')\n    type = models.IntegerField('组件类型', choices=TYPE_CHOICE, default=2)\n    comp_conf = models.TextField('组件配置', default='', null=True, blank=True)\n    perm_level = models.IntegerField('权限级别', choices=PERM_LEVEL_CHOICE, default=0)\n    is_hidden = models.BooleanField('组件是否隐藏', default=False, help_text='是否显示文档，及是否在权限申请中展示')\n    rate_limit_required = models.BooleanField('是否校验访问频率', default=False)\n    rate_limit_conf = models.TextField('请求频率配置', null=True, blank=True,\n                                       help_text='限制访问频率，允许多种规则，例如{\"app_ratelimit\": {\"__default\": {\"token\":1000, \"minute\": 1}, \"gcloud\": {\"token\":1000, \"minute\": 1}}}')  # noqa\n    extra_info = models.TextField('额外信息', default='', blank=True, help_text='存储组件额外信息，用于文档展示等')\n\n    class Meta:\n        db_table = 'esb_channel'\n\n    def __unicode__(self):\n        return self.name\n\n    @property\n    def api_path(self):\n        return '/api/c/compapi/%s/' % self.path.strip('/')\n\n    @property\n    def api_version(self):\n        if self.component_codename.startswith('generic.v2.'):\n            return 'v2'\n        return ''\n\n    @property\n    def channel_conf(self):\n        return {\n            'id': self.id,\n            'perm_level': self.perm_level,\n            'rate_limit_required': self.rate_limit_required,\n            'rate_limit_conf': json.loads(self.rate_limit_conf or '{}'),\n        }\n\n    @property\n    def is_confapi(self):\n        extra_info = self.extra_info_json()\n        return extra_info.get('is_confapi', False)\n\n    def extra_info_json(self):\n        try:\n            return json.loads(self.extra_info)\n        except Exception:\n            return {}\n\n\nclass FunctionController(models.Model):\n    \"\"\"功能开关控制器\n    \"\"\"\n    func_code = models.CharField('功能code', max_length=64, unique=True)\n    func_name = models.CharField('功能名称', max_length=64)\n    switch_status = models.BooleanField('是否开启该功能', default=True,\n                                        help_text='控制功能是否对外开放，若选择，则该功能将对外开放')\n    wlist = models.TextField('功能测试白名单', null=True, default='', blank=True,\n                             help_text='支持两种格式数据，以逗号、分号分隔的字符串，及JSON格式字符串')\n    func_desc = models.TextField('功能描述', null=True, default='', blank=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    class Meta:\n        db_table = 'esb_function_controller'\n\n    def __unicode__(self):\n        return self.__code__\n\n\nclass UserAuthToken(models.Model):\n    \"\"\"AuthToken\n    \"\"\"\n    app_code = models.CharField('蓝鲸智云应用编码', max_length=128)\n    username = models.CharField('用户名', max_length=64)\n    auth_token = models.CharField('token内容', max_length=255)\n    expires = models.DateTimeField('token过期时间')\n    last_accessed_time = models.DateTimeField('最后访问时间', auto_now_add=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    def __unicode__(self):\n        return self.auth_token\n\n    class Meta:\n        db_table = 'esb_user_auth_token'\n\n    def touch(self):\n        self.last_accessed = timezone.now()\n\n    def has_expired(self):\n        return self.expires_in() < 300\n\n    def expires_in(self):\n        \"\"\"返回该token还有多少秒过期\n        \"\"\"\n        return int((self.expires - timezone.now()).total_seconds())\n\n    def get_info(self):\n        return {\n            'expires_in': self.expires_in(),\n            'auth_token': self.auth_token,\n            'username': self.username,\n        }\n\n\n######################################################################\n# Models for ESB Buffet\n######################################################################\n\nclass ESBBuffetComponent(models.Model):\n    \"\"\"ESB 组件自助接入\n    \"\"\"\n    HTTP_METHOD_CHOICES = [\n        ('GET', 'GET'),\n        ('POST', 'POST'),\n        ('_ORIG', '[所有] 透传原始请求类型(不建议使用)'),\n    ]\n    FAVOR_CTYPE_CHOICES = [\n        ('json', 'json'),\n        ('form', 'form'),\n    ]\n    TYPE_CHOICE = (\n        (1, '执行API'),\n        (2, '查询API'),\n    )\n\n    name = models.CharField('名称', max_length=256)\n    system = models.ForeignKey(ComponentSystem, on_delete=models.CASCADE, verbose_name='所属系统', null=True, blank=True)\n\n    dest_url = models.CharField('目标接口地址', max_length=2048)\n    dest_http_method = models.CharField('HTTP请求类型', max_length=8, choices=HTTP_METHOD_CHOICES)\n    favor_post_ctype = models.CharField('编码POST参数方式', max_length=64, default='json', choices=FAVOR_CTYPE_CHOICES)\n    extra_headers = models.CharField('额外请求头信息', max_length=2048, default='', blank=True)\n    extra_params = models.CharField('额外请求参数', max_length=2048, default='', blank=True)\n\n    registed_path = models.CharField('注册到的组件路径', max_length=255)\n    registed_http_method = models.CharField('注册到的请求类型', max_length=8, choices=HTTP_METHOD_CHOICES)\n\n    submitter = models.CharField(max_length=256, null=True, default='', blank=True)\n    approver = models.CharField(max_length=256, null=True, default='', blank=True)\n    approver_message = models.CharField(max_length=1024, null=True, default='', blank=True)\n    status = models.IntegerField('状态', default=0)\n\n    mappings_input = models.CharField('输入Mappings', null=True, default='', blank=True,\n                                      max_length=1024, help_text='JSON格式数据')\n    mappings_output = models.CharField('输出Mappings', null=True, default='', blank=True,\n                                       max_length=1024, help_text='JSON格式数据')\n    last_modified_time = models.DateTimeField(auto_now=True)\n    created_time = models.DateTimeField(auto_now_add=True)\n    timeout_time = models.IntegerField('超时时长', blank=True, null=True,\n                                       help_text='单位秒，未设置时以所属组件系统超时时长为准')\n    type = models.IntegerField('组件类型', choices=TYPE_CHOICE, default=2)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        db_table = 'esb_buffet_component'\n\n    def get_extra_headers(self):\n        return json.loads(self.extra_headers or '{}')\n\n    def get_extra_params(self):\n        return json.loads(self.extra_params or '{}')\n\n    @property\n    def api_path(self):\n        return '/api/c/self-service-api/%s/' % self.registed_path.strip('/')\n\n    @property\n    def api_name(self):\n        path_2_name = re.findall(r'[a-zA-Z0-9]+', self.registed_path.lower())\n        path_2_name.insert(0, self.registed_http_method.lower())\n        return '_'.join(path_2_name)\n\n\nclass ESBBuffetMapping(models.Model):\n    \"\"\"ESB 组件自助接入，参数mapping\n    \"\"\"\n    name = models.CharField('名称', max_length=40, unique=True)\n    type = models.IntegerField('类型', null=True, blank=True)\n    source_type = models.IntegerField('源码类型')\n    source = models.TextField('源码', null=True, default='', blank=True)\n    owner = models.CharField(max_length=256, null=True, default='', blank=True)\n    is_active = models.BooleanField(default=True)\n    last_modified_time = models.DateTimeField(auto_now=True)\n    created_time = models.DateTimeField(auto_now_add=True)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        db_table = 'esb_buffet_component_mapping'\n\n    def get_info(self):\n        return {\n            'id': self.pk,\n            'name': self.name,\n            'source_type': self.source_type,\n            'source': self.source\n        }\n\n\nclass AppAccount(models.Model):\n    \"\"\"应用帐号\"\"\"\n    app_code = models.CharField('应用编码', max_length=30, unique=True, help_text='此处请用英文字母')\n    app_token = models.CharField('应用Token', max_length=128)\n    introduction = models.TextField(\"应用简介\", default='', blank=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    def __unicode__(self):\n        return self.app_code\n\n    class Meta:\n        db_table = 'esb_app_account'\n\n\nclass ModelWithBoard(models.Model):\n    \"\"\"标记组件所属的board\n    \"\"\"\n    board = models.CharField(max_length=64, null=True, blank=True, db_index=True)\n\n    class Meta:\n        abstract = True\n\n\nclass ComponentAPIDoc(ModelWithBoard):\n    '''\n    @summary: 组件API文档\n    '''\n    component_id = models.IntegerField('组件ID', unique=True, help_text='对应 ESBChannel 中的组件ID')\n    doc_md = models.TextField('组件文档（MD格式）', blank=True, null=True)\n    doc_html = models.TextField('组件文档（HTML格式）', blank=True, null=True)\n    doc_md_md5 = models.CharField(max_length=128, default='', blank=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n    updated_time = models.DateTimeField('创建时间', auto_now=True)\n\n    def __unicode__(self):\n        return '%s' % self.component_id\n\n    class Meta:\n        verbose_name = '组件接口文档'\n        verbose_name_plural = '组件接口文档'\n        db_table = 'esb_api_doc'\n\n\nclass FeedbackForComponentDocs(ModelWithBoard):\n    \"\"\"针对指定接口的反馈\"\"\"\n    operator = models.CharField('反馈者', max_length=32)\n    component_id = models.IntegerField('组件ID', help_text='对应 ESBChannel 中的组件ID')\n    content = models.TextField('反馈内容', default='', blank=True, null=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    def __unicode__(self):\n        return '<operator:%s-component_id:%s>' % (self.operator, self.component_id)\n\n    class Meta:\n        verbose_name = '接口反馈'\n        verbose_name_plural = '接口反馈'\n        db_table = 'esb_api_doc_feedback'\n\n\ndef init_app_comp_perm_expires():\n    return timezone.now() + datetime.timedelta(days=180)\n\n\nclass AppComponentPerm(models.Model):\n    \"\"\"APP申请的组件权限\"\"\"\n    app_code = models.CharField('蓝鲸应用编码', max_length=64)\n    component_id = models.IntegerField('组件ID')\n    expires = models.DateTimeField('APP访问组件过期时间', default=init_app_comp_perm_expires)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n    last_accessed_time = models.DateTimeField('APP最后访问组件时间', default=timezone.now)\n\n    def __unicode__(self):\n        return '<app_code: %s, component_id: %s>' % (self.app_code, self.component_id)\n\n    class Meta:\n        verbose_name = 'APP组件权限'\n        verbose_name_plural = 'APP组件权限'\n        db_table = 'esb_app_component_perm'\n        unique_together = ('app_code', 'component_id')\n\n    def touch_expires(self):\n        self.expires = init_app_comp_perm_expires()\n\n\nclass WxmpAccessToken(models.Model):\n    \"\"\"保存微信开放平台业务的 AccessToken\n    \"\"\"\n    wx_app_id = models.CharField('微信APPID', max_length=128)\n    access_token = models.CharField('凭证', max_length=1024)\n    expires = models.DateTimeField('凭证过期时间')\n    last_updated_time = models.DateTimeField('最后访问时间', default=timezone.now)\n\n    class Meta:\n        db_table = 'esb_wxmp_access_token'\n        verbose_name = '微信公众号AccessToken'\n        verbose_name_plural = '微信公众号AccessToken'\n\n    def __unicode__(self):\n        return self.wx_app_id\n\n    def touch(self):\n        self.last_updated_time = timezone.now()\n\n    def has_expired(self):\n        return self.expires_in() < 300\n\n    def expires_in(self):\n        \"\"\"返回该token还有多少秒过期\n        \"\"\"\n        return int((self.expires - timezone.now()).total_seconds())\n\n    def get_info(self):\n        return {\n            'access_token': self.access_token,\n            'expires_in': self.expires_in(),\n        }\n\n\nclass SystemDocCategory(models.Model):\n    \"\"\"系统文档分类\"\"\"\n    name = models.CharField('分类名称', max_length=32, db_index=True)\n    priority = models.IntegerField('优先级', default=1000, help_text='展示时，数字小的展示在前面')\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        verbose_name = '系统文档分类'\n        verbose_name_plural = '系统文档分类'\n        ordering = ['priority', 'id']\n        db_table = 'esb_system_doc_category'\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkperm/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/bkperm/validators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.base_validators import BaseValidator, ValidationError\n\n\nclass AppCodeWhiteListValidator(BaseValidator):\n    \"\"\"\n    app_code白名单验证器\n    \"\"\"\n    def __init__(self, white_list=(), *args, **kwargs):\n        self.white_list = white_list\n        super(AppCodeWhiteListValidator, self).__init__(*args, **kwargs)\n\n    def validate(self, request):\n        if request.kwargs.app_code not in self.white_list:\n            raise ValidationError('APP 没有访问当前接口的权限')\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/channel/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom .base import ApiChannel, get_channel_manager  # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/channel/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport re\nimport copy\nimport time\nimport uuid\nimport string\nimport json\n\nfrom django.http import HttpResponse\n\nfrom esb.bkcore.models import ESBChannel\nfrom esb.component import CompRequest\nfrom esb.utils import config\nfrom esb.utils.base import PathVars, preprocess_path_tmpl, has_path_vars\nfrom esb.response import format_resp_dict\nfrom common.log import logger\nfrom common.base_utils import FancyDict, get_request_params, str_bool, get_client_ip\nfrom common.base_validators import ValidationError\nfrom common.django_utils import JsonResponse\nfrom common.constants import COMPONENT_STATUSES\nfrom common.bkerrors import bk_error_codes\nfrom common.errors import (error_codes, CommonAPIError, APIError, RequestThirdPartyException,\n                           TestHostNotFoundException, RequestBlockedException, RequestSSLException)\n\n\nclass BaseChannel(object):\n    \"\"\"\n    Base Channel class for handle django request, port a request to django\n    \"\"\"\n\n    request_loggers = []\n    request_validators = []\n\n    channel_type = None\n\n    IGNORE_HEADERS = (\n        'HTTP_X_BKAPI_AUTHORIZATION',\n        'HTTP_X_REQUEST_URI',\n        'HTTP_HOST',\n    )\n\n    def __init__(self, comp_class, path, is_active=True, request_loggers=None,\n                 request_validators=None, comp_conf=None, channel_conf=None):\n        \"\"\"\n        Init a channel object\n\n        :param component_class: Component class used to handle this request\n        :param str path: request path for this channel\n        :param bool is_active: if this channel is active, default to True\n        :param request_loggers: extra request loggers for `common_api_class`\n        :param request_validators: extra request validators for `common_api_class`\n        :param channel_conf: channel perm_level, rate_limit_conf config\n        \"\"\"\n        self.comp_class = comp_class\n        self.comp = self.comp_class()\n        self.comp_conf = comp_conf\n        self.channel_conf = channel_conf or {}\n\n        # 对于支持加载自定义配置的组件，调用 setup_conf 方法\n        if hasattr(self.comp, 'setup_conf') and self.comp_conf:\n            self.comp.setup_conf(copy.deepcopy(self.comp_conf))\n\n        self.path = path\n        self.is_active = is_active\n\n        # 如果使用 += 会造成修改到原有默认变量的bug\n        self.request_loggers = self.request_loggers + (request_loggers or [])\n        self.request_validators = self.request_validators + (request_validators or [])\n\n    def set_request_validators(self, validators):\n        self.request_validators = validators\n\n    def append_request_validators(self, validators):\n        self.request_validators = self.request_validators + validators\n\n    def request_id_generator_func(self, request):\n        \"\"\"\n        create request_id\n        \"\"\"\n        return uuid.uuid4().hex\n\n    def validate_request(self, request):\n        \"\"\"\n        Use specified validators to validate incoming request\n        \"\"\"\n        for validator in self.request_validators:\n            try:\n                validator.validate(request)\n            except ValidationError as e:\n                raise CommonAPIError(str(e))\n\n    def log_request(self, request, response):\n        \"\"\"\n        Write request logs if needed\n        \"\"\"\n        for req_logger in self.request_loggers:\n            req_logger.write(request, response)\n\n    def patch_request_common(self, request):\n        \"\"\"\n        Patch the incoming django request instance and set a lot of useful\n        variables\n        \"\"\"\n        request.system_name = self.comp.sys_name\n        request.component_name = self.comp.get_component_name()\n        request.component_alias_name = self.comp.get_alias_name()\n        request.client_ip = get_client_ip(request)\n        request.request_id = self.request_id_generator_func(request)\n        request.component_status = COMPONENT_STATUSES.EXECUTING\n        request.channel_type = self.channel_type\n        request.use_test_env = self.get_use_test_env(request)\n        request.api_type = self.comp.api_type\n        request.headers = self.get_headers(request)\n        request.channel_conf = self.channel_conf\n\n        # To be override\n        request.kwargs = FancyDict()\n\n    def get_use_test_env(self, request):\n        \"\"\"\n        Decide access test env or not to third-party system\n\n        - pass \"x-use-test-env\" in header\n        \"\"\"\n        header_flag = request.headers.get('x-use-test-env')\n        if header_flag is not None:\n            return str_bool(header_flag)\n        return False\n\n    def get_headers(self, request):\n        \"\"\"\"\"\"\n        headers = {}\n        for key, value in self.request.META.items():\n            if key.startswith('HTTP_') and value and key not in self.IGNORE_HEADERS:\n                headers[self.capitalize_header(key[5:])] = value\n        return headers\n\n    @staticmethod\n    def capitalize_header(header):\n        \"\"\"capitalize django header\n        \"\"\"\n        return '-'.join(s.capitalize() for s in header.split('_'))\n\n    def handle_request(self, request):\n        \"\"\"\n        Handle the incoming request, often called by route view\n\n        :param request: request object from django\n        \"\"\"\n        self.request = request\n        if not hasattr(request, \"ts_request_start\"):\n            request.ts_request_start = time.time()\n        self.patch_request_common(self.request)\n        try:\n            # Hook before request, before_handle_request may return response,\n            # if it returns a response, do not call component then.\n            t1 = time.time()\n            response = self.before_handle_request()\n            t2 = time.time()\n            if not response:\n                self.validate_request(request)\n\n                self.comp.set_request(CompRequest(wsgi_request=request))\n\n                response = self.comp.invoke()\n        except APIError as e:\n            response = e.code.as_dict()\n            request.component_status = COMPONENT_STATUSES.ARGUMENT_ERROR\n        except RequestThirdPartyException as e:\n            response = error_codes.REQUEST_THIRD_PARTY_ERROR.format_prompt(e.get_message(), replace=True).code.as_dict()\n            request.component_status = COMPONENT_STATUSES.EXCEPTION\n        except RequestSSLException as e:\n            response = error_codes.REQUEST_SSL_ERROR.format_prompt(e.get_message(), replace=True).code.as_dict()\n            request.component_status = COMPONENT_STATUSES.EXCEPTION\n        except TestHostNotFoundException as e:\n            response = error_codes.TEST_HOST_NOT_FOUND.code.as_dict()\n            request.component_status = COMPONENT_STATUSES.EXCEPTION\n        except RequestBlockedException as e:\n            response = error_codes.REQUEST_BLOCKED.format_prompt(str(e)).code.as_dict()\n            request.component_status = COMPONENT_STATUSES.EXCEPTION\n        except Exception:\n           logger.exception('Request exception, request_id=%s, path=%s' % (request.request_id, request.path))\n           response = CommonAPIError('Component error, please contact the component developer to handle it.')\\\n               .code.as_dict()\n           request.component_status = COMPONENT_STATUSES.EXCEPTION\n        else:\n           if response and isinstance(response, dict) and response.get('result'):\n               request.component_status = COMPONENT_STATUSES.SUCCESS\n           else:\n               request.component_status = COMPONENT_STATUSES.FAILURE\n\n        self.response = response\n        self.request.ts_request_end = time.time()\n        self.log_request(self.request, self.response)\n        # Hook after request\n        self.after_handle_request()\n\n        # Turn dict response to django response\n        if isinstance(self.response, dict):\n            self.response['request_id'] = request.request_id\n            self.response = format_resp_dict(self.response)\n            self.response = JsonResponse(self.response)\n        elif not isinstance(self.response, (HttpResponse, str)):\n            self.response = JsonResponse(self.response)\n        return self.response\n\n    def before_handle_request(self):\n        \"\"\"\n        Called before request is handled by component,\n        if it return a reponse dict, no more component will be called\n        \"\"\"\n        pass\n\n    def after_handle_request(self):\n        \"\"\"\n        Called after request has been handled by component,\n        it may modify self.response object\n        \"\"\"\n        pass\n\n\nclass ApiChannel(BaseChannel):\n    \"\"\"\n    Channel class for pure API type\n    \"\"\"\n\n    channel_type = 'api'\n\n    def before_handle_request(self):\n        self.request.kwargs = FancyDict(get_request_params(self.request))\n        # request.kwargs 之后会被修改，为了保留最原始的请求参数，创建一个copy\n        self.request.kwargs_copy = copy.copy(self.request.kwargs)\n        self.request.request_type = 'app'\n        if not getattr(self.request, \"app_code\", None):\n            self.request.app_code = self.request.kwargs.get('bk_app_code') or self.request.kwargs.get('app_code', '')  # noqa\n\n\n    def after_handle_request(self):\n        pass\n\n\nclass ChannelManager(object):\n    \"\"\"\n    Manager for Channels, query database to find the matching channel.\n    \"\"\"\n\n    def __init__(self, ):\n        \"\"\"\n        :preset_channels example:\n        {\n            \"GET\": {\n                \"/cc/add_plat_id/\": {\n                    \"raw_path\": \"/cc/add_plat_id/\",\n                    \"re_path\": re_obj,\n                    \"channel\": esb_channel_obj,\n                    \"classes\": {\"api\": None},\n                    \"comp_conf\": {},\n                    \"channel_conf\": {},\n                }\n            }\n        }\n        \"\"\"\n        self.preset_channels = {}\n        self.preset_channels_with_path_vars = {}\n        self.default_channel_classes = None\n        self.rewrite_channels = {}\n\n    def __str__(self):\n        return '<ChannelManager>'\n\n    def set_default_channel_classes(self, value):\n        self.default_channel_classes = value\n\n    def get_default_channel_classes(self):\n        return self.default_channel_classes\n\n    def get_channel_by_path(self, path, method):\n        \"\"\"\n        根据路径获取对应的channel配置\n\n        :param str path: 需要查询的路径\n        :param str method: HTTP请求的方法\n        :returns dict: 包含当前channel和channel_classes的字典\n        \"\"\"\n        if not path.startswith('/'):\n            path = '/%s' % path\n\n        channel = None\n        # 处理path最后有无斜杠两种情况\n        path_another = path.rstrip('/') if path.endswith('/') else '%s/' % path\n        for _path in (path, path_another):\n            channel = ESBChannel.objects.filter(path=_path).first()\n            # 从数据库查询出来需要为结果添加channel_classes\n            if channel and method in ['GET', 'POST']:\n                # 如果通道配置从 DB 获取，则 method 应属于 [GET, POST]\n                try:\n                    comp_conf = json.loads(channel.comp_conf) if channel.comp_conf else None\n                    if isinstance(comp_conf, (tuple, list)):\n                        comp_conf = dict(comp_conf)\n                except Exception:\n                    logger.error('%s channel comp_conf is not a json string. channel path=%s',\n                                 bk_error_codes.COMPONENT_COMP_CONF_ERROR.code, _path)\n                    comp_conf = None\n                try:\n                    channel_conf = channel.channel_conf\n                except Exception:\n                    logger.error('get channel channel_conf error. channel path=%s', _path)\n                    channel_conf = None\n\n                channel = {\n                    'channel': channel,\n                    'classes': self.get_default_channel_classes(),\n                    'comp_conf': comp_conf,\n                    'channel_conf': channel_conf,\n                }\n            # Find channel by hard-coded channels\n            else:\n                channel = self.preset_channels.get(method, {}).get(_path)\n\n            if channel:\n                return channel\n        return channel\n\n    def search_channel_by_repath(self, path, method):\n        \"\"\"\n        根据正则匹配来查找对应的channel\n\n        :param str path: 需要查询的路径\n        :param str method: HTTP请求的方法\n        :returns tuple:\n            - value(dict): 包含当前channel和channel_classes的字典\n            - path_vars(PathVars object): 路径匹配中获得的变量\n        \"\"\"\n        if not path.startswith('/'):\n            path = '/%s' % path\n\n        channels = self.preset_channels_with_path_vars.get(method, {})\n        for value in list(channels.values()):\n            matched_obj = value['re_path'].match(path)\n            if matched_obj:\n                # 把匹配到的path变量作为结果返回\n                return value, PathVars.from_matched_obj(matched_obj)\n        return None, None\n\n    def get_rewrite_path_by_path(self, path):\n        \"\"\"\n        不同版本 path 指向同一组件；现统一为重定向后的path\n        \"\"\"\n        return self.rewrite_channels.get(path)\n\n    def get_all_registed_channels(self):\n        \"\"\"\n        罗列出目前所注册的所有channels\n        \"\"\"\n        result = [\n            {\n                'raw_path': channel.path,\n                'channel': channel,\n                'classes': self.get_default_channel_classes(),\n            }\n            for channel in ESBChannel.objects.all()\n        ]\n        for channels in list(self.preset_channels.values()):\n            result.extend(list(channels.values()))\n        return result\n\n    def register_channel_groups(self, channel_classes, channels, rewrite_channels):\n        \"\"\"\n        注册一批channels\n\n        :param dict channel_classes: 指定这批channel应该使用什么ChannelClass\n        :param list channels: 由path到component的对应关系列表\n        \"\"\"\n        self.rewrite_channels.update(rewrite_channels)\n\n        method_delimiter = re.compile(r'\\w+')\n        for path, value in channels:\n            channel = ESBChannel(path=path, component_codename=value['comp_codename'])\n\n            # 设置自定义的 request_validators\n            if 'request_validators' in value:\n                channel.request_validators = value['request_validators']\n            if 'append_request_validators' in value:\n                channel.append_request_validators = value['append_request_validators']\n\n            # 支持的方法，默认支持GET、POST\n            method = value.get('method') or 'GET,POST'\n            method = method_delimiter.findall(method)\n\n            for m in method:\n                self.preset_channels.setdefault(m, {})\n                self.preset_channels_with_path_vars.setdefault(m, {})\n                preset_channel = {\n                    # 支持使用正则匹配\n                    'raw_path': path,\n                    're_path': re.compile(r'^%s$' % preprocess_path_tmpl(path)),\n                    'channel': channel,\n                    'classes': channel_classes,\n                    'comp_conf': value.get('comp_conf'),\n                    'channel_conf': value.get('channel_conf'),\n                }\n                self.preset_channels[m][path] = preset_channel\n                if has_path_vars(path):\n                    self.preset_channels_with_path_vars[m][path] = preset_channel\n\n\n_channel_manager = None\n\n\ndef get_channel_manager():\n    \"\"\"\n    获取当前channel_manager\n    \"\"\"\n    global _channel_manager\n    if _channel_manager is None:\n        channel_config = config.ESB_CONFIG['config']\n        manager = ChannelManager()\n        # 配置中如果定义了默认的channel_classes,使用默认值\n        default_channel_classes = channel_config.get('default_channel_classes')\n        for group_name, channel_group_conf in list(channel_config['channel_groups'].items()):\n            manager.register_channel_groups(\n                channel_group_conf['channel_classes'],\n                channel_group_conf['preset_channels'],\n                channel_group_conf.get('rewrite_channels', {})\n            )\n            # 使用default_channel_classes, 或'default'下channel_classes，或第一个碰到的channel_classes作为默认\n            default_channel_classes = default_channel_classes or \\\n                channel_config['channel_groups'].get('default', {}).get('channel_classes') or \\\n                channel_group_conf['channel_classes']\n\n        # 设置默认的channel_classes，专门用来处理数据库中没有设置channel_classes的ESBChannel对象\n        manager.set_default_channel_classes(default_channel_classes)\n\n        _channel_manager = manager\n    return _channel_manager\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/channel/confapis.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils.confapis import get_confapis_manager\nfrom .base import ChannelManager, get_channel_manager\n\n\nclass ConfapisChannelManager(ChannelManager):\n    \"\"\"\n    Manager for Channels, query confapis config to find the matching channel.\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        \"\"\"\n        :preset_channels example:\n        {\n            \"GET\": {\n                \"/cc/add_plat_id/\": {\n                    \"raw_path\": \"/cc/add_plat_id/\",\n                    \"re_path\": re_obj,\n                    \"channel\": esb_channel_obj,\n                    \"classes\": {\"api\": None},\n                    \"comp_conf\": {},\n                    \"channel_conf\": {},\n                }\n            }\n        }\n        \"\"\"\n        super(ConfapisChannelManager, self).__init__(*args, **kwargs)\n        self.changed = False\n        self.channel_manager = get_channel_manager()\n        self.confapis_manager = get_confapis_manager()\n        self.set_default_channel_classes(self.channel_manager.get_default_channel_classes())\n\n    def __str__(self):\n        return '<CompapisChannelManager>'\n\n    def get_channel_by_path(self, path, method):\n        \"\"\"\n        根据路径获取对应的channel配置\n\n        :param str path: 需要查询的路径\n        :param str method: HTTP请求的方法\n        :returns dict: 包含当前channel和channel_classes的字典\n        \"\"\"\n        if not path.startswith('/'):\n            path = '/%s' % path\n\n        channel = None\n        # 处理path最后有无斜杠两种情况\n        path_another = path.rstrip('/') if path.endswith('/') else '%s/' % path\n        for _path in (path, path_another):\n            channel = self.preset_channels.get(method, {}).get(_path)\n\n            if channel:\n                return channel\n        return channel\n\n    def refresh_channel_groups(self):\n        self.register_channel_groups(\n            self.default_channel_classes,\n            self.confapis_manager.get_apis_conf(),\n            {},\n        )\n\n\n_confapis_channel_manager = None\n\n\ndef get_confapis_channel_manager():\n    global _confapis_channel_manager\n    if _confapis_channel_manager is None:\n        manager = ConfapisChannelManager()\n        manager.refresh_channel_groups()\n\n        _confapis_channel_manager = manager\n    return _confapis_channel_manager\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/component/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom .base import BaseComponent, CompRequest, ComponentsManager, get_components_manager  # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/component/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport copy\nimport json\nfrom importlib import import_module\n\nfrom common.bkerrors import bk_error_codes\nfrom common.errors import APIError, error_codes\nfrom common.base_utils import smart_lower, FancyDict, str_bool\nfrom common.log import logger\nfrom esb.outgoing import HttpClient\nfrom esb.utils import is_py_file, fpath_to_module, config\nfrom esb.utils.base import PathVars\nfrom esb.response import CompResponse\nfrom esb.bkauth.models import User, AnonymousUser\n\n\nclass BaseComponent(object):\n    \"\"\"\n    Base class for component\n    \"\"\"\n\n    sys_name = 'UNKNOWN'\n    api_type = 'unknown'\n    name_prefix = ''\n\n    # 如果定义一个Form，请求将会使用这个Form来验证输入参数的有效性\n    Form = None\n\n    def __init__(self, request=None, current_user=None):\n        self.request = request\n        self.response = CompResponse()\n        self.form_data = {}\n        self._current_user = current_user\n        self._init()\n\n    def _init(self):\n        # Init outgoings client for later using\n        self.outgoing = FancyDict()\n        self.outgoing.http_client = HttpClient(self)\n\n    def set_request(self, request):\n        assert isinstance(request, CompRequest)\n        self.request = request\n\n    def get_current_user(self):\n        \"\"\"\n        获取当前用户\n        \"\"\"\n        if not self.request.wsgi_request:\n            return AnonymousUser()\n\n        username = getattr(self.request.wsgi_request, 'current_user_username', '')\n        if username:\n            return User(username)\n        else:\n            return AnonymousUser()\n\n    @property\n    def current_user(self):\n        return self._current_user\n\n    @current_user.setter\n    def current_user(self, value):\n        self._current_user = value\n\n    def invoke(self, kwargs={}, use_test_env=False, request_id=None, is_dummy=False, app_code='', timeout=None):\n        \"\"\"\n        调用一个组件，需要注意的是，当这个组件实例被一个wsgi_request初始化过以后，\n        是不需要传入后面这些额外的参数的。\n\n        :param dict kwargs: 请求的参数键值对\n        :param bool use_test_env: 是否访问测试环境，默认为不访问\n        :param str request_id: 这一次请求的request_id，默认为None\n        :param bool is_dummy: 是否虚拟请求结果，默认为False\n        :param str app_code: APP身份标识\n        :returns: dict格式结果\n        :raises: 视情况可能会抛出 `common.errors.APIError` 实例\n        \"\"\"\n        if not self.request:\n            # 转换kwargs类型\n            if isinstance(kwargs, dict):\n                kwargs = FancyDict(kwargs)\n\n            self.set_request(\n                CompRequest(\n                    input=kwargs,\n                    use_test_env=use_test_env,\n                    request_id=request_id,\n                    is_dummy=is_dummy,\n                    app_code=app_code,\n                    timeout=timeout\n                )\n            )\n        if not self._current_user:\n            self._current_user = self.get_current_user()\n\n        self.validate_input()\n        self.before_handle()\n        try:\n            self.handle()\n        except APIError as e:\n            self.response.payload = e.code.as_dict()\n        self.after_handle()\n        return self.response.get_payload()\n\n    def invoke_other(self, *args, **kwargs):\n        \"\"\"\n        Use given kwargs to invoke some other component\n        \"\"\"\n        return self._invoke_other(*args, **kwargs)['result']\n\n    def _invoke_other(self, component_name, kwargs={}, use_test_env=None, timeout=None):\n        \"\"\"\n        Use given kwargs to invoke some other component\n        \"\"\"\n        comp_obj = self.prepare_other(component_name, kwargs=kwargs,\n                                      use_test_env=use_test_env, timeout=timeout)\n        result = comp_obj.invoke()\n        return {\n            'result': result,\n            'comp': comp_obj\n        }\n\n    def prepare_other(self, component_name, kwargs={}, use_test_env=None, timeout=None):\n        \"\"\"\n        以当前组件为基础，使用给定的参数和配置来生成一个可供调用的组件实例\n\n        :param str component_name: 待生成组件的名称\n        :param dict kwargs: 用来调用组件的参数\n        :param bool use_test_env: 是否访问测试环境，默认使用当前组件配置\n        \"\"\"\n        components_manager = get_components_manager()\n        comp_class = components_manager.get_comp_by_name(component_name)\n\n        if not comp_class:\n            raise error_codes.ARGUMENT_ERROR.format_prompt('No component can be found via name=%s' % component_name)\n\n        # use_test_env is self.request.use_test_env by default,\n        # but this behaviour can be overridden.\n        if use_test_env is None:\n            use_test_env = self.request.use_test_env\n\n        # 转换kwargs类型\n        if isinstance(kwargs, dict):\n            kwargs = FancyDict(kwargs)\n\n        comp_obj = comp_class()\n        comp_obj.current_user = self.current_user\n        comp_obj.set_request(\n            CompRequest(\n                input=kwargs,\n                use_test_env=use_test_env,\n                request_id=self.request.request_id,\n                is_dummy=self.request.is_dummy,\n                app_code=self.request.app_code,\n                timeout=timeout\n            )\n        )\n        return comp_obj\n\n    def validate_input(self):\n        \"\"\"\n        Validate the given input\n        \"\"\"\n        if self.Form:\n            self.form_data = self.Form.from_request(self.request)\\\n                                      .get_cleaned_data_or_error()\n            self.request.kwargs.update(self.form_data)\n\n    def before_handle(self):\n        \"\"\"\n        Do things befor handle start\n        \"\"\"\n        if getattr(self, 'need_check_operate_perm', False):\n            self.check_operate_perm()\n\n    def handle(self):\n        \"\"\"\n        All Component should override this class\n        \"\"\"\n        pass\n\n    def after_handle(self):\n        \"\"\"\n        Do things after handle ended\n        \"\"\"\n        pass\n\n    def get_host_by_env(self, hosts):\n        \"\"\"\n        Get outgoing host by use_test_env flag\n\n        :param dict hosts: hosts, such as {'test': 'testhost', 'prod': 'prodhost'}\n        \"\"\"\n        env_name = 'test' if self.request.use_test_env else 'prod'\n        return hosts[env_name]\n\n    @classmethod\n    def set_name_prefix(cls, name_prefix):\n        \"\"\"\n        设置组件名称的前缀，将会影响get_name的结果\n\n        :param str name_prefix: 需要设置的名称前缀\n        \"\"\"\n        cls.name_prefix = name_prefix\n\n    @classmethod\n    def get_name(cls):\n        \"\"\"\n        Get name of this component, which should be unique\n        \"\"\"\n        return '%s%s.%s' % (cls.name_prefix, cls.sys_name.lower(), cls.get_component_name())\n\n    @classmethod\n    def get_component_name(cls):\n        return smart_lower(cls.__name__)\n\n    def get_alias_name(self):\n        return getattr(self, 'name', self.get_component_name())\n\n\nclass CompRequest(object):\n    \"\"\"\n    Request class for Component\n    \"\"\"\n\n    SENSITIVE_PARAMS_KEY = [\n        'app_secret', 'signature', 'bk_nonce', 'bk_timestamp',\n        'bk_app_secret', 'bk_signature',\n    ]\n\n    NORMAL_PARAMS_KEY = [\n        'app_code', 'username', 'bk_token',\n        'bk_app_code', 'bk_username',\n        '__esb_skip_signature__',\n        '__esb_skip_comp_perm__',\n    ]\n\n    def __init__(self, wsgi_request=None, input=None, use_test_env=False, request_id=None,\n                 channel_type='api', is_dummy=False, app_code='', path_vars=None,\n                 timeout=None, headers={}):\n        self.wsgi_request = wsgi_request\n        # Load data from wsgi_request if given\n        if self.wsgi_request:\n            self.kwargs = copy.copy(getattr(self.wsgi_request, \"kwargs\", {}))\n            self.kwargs = self._clean_sensitive_params(self.kwargs)\n            self.use_test_env = self.wsgi_request.use_test_env\n            self.request_id = self.wsgi_request.request_id\n            self.channel_type = self.wsgi_request.channel_type\n            self.is_dummy = str_bool(self.wsgi_request.kwargs.get('dummy'))\n            self.app_code = getattr(self.wsgi_request, 'app_code', '')\n            # 路径匹配中的变量\n            self.path_vars = getattr(self.wsgi_request, \"path_vars\", None)\n            # 超时时长\n            self.timeout = self.wsgi_request.timeout\n            self.headers = self.wsgi_request.headers\n            self.bk_language = self.headers.get('Blueking-Language', 'en')\n        else:\n            self.kwargs = copy.copy(input) or FancyDict()\n            self.use_test_env = use_test_env\n            self.request_id = request_id\n            self.channel_type = channel_type\n            self.is_dummy = is_dummy\n            self.app_code = app_code\n            # 路径匹配中的变量\n            self.path_vars = path_vars or PathVars()\n            # 超时时长\n            self.timeout = timeout\n            self.headers = copy.copy(headers)\n            self.bk_language = self.headers.get('Blueking-Language', 'en')\n\n    def get_strict_clean_params(self):\n        params = copy.deepcopy(self.kwargs)\n        params = self._clean_normal_params(params)\n        return params\n\n    def get_clean_params(self, ctype='form'):\n        if not self.wsgi_request:\n            return ''\n        if self.wsgi_request.method == 'GET':\n            return self._get_clean_raw_query(ctype)\n        else:\n            return self._get_clean_raw_body(ctype)\n\n    def _get_clean_raw_query(self, ctype):\n        query = self.wsgi_request.GET.copy()\n        query = self._clean_sensitive_params(query)\n        return query.urlencode() if ctype == 'form' else json.dumps(dict(list(query.items())))\n\n    def _get_clean_raw_body(self, ctype):\n        if self.wsgi_request.body and self.wsgi_request.body.strip().startswith('{'):\n            body = json.loads(self.wsgi_request.body)\n            body = self._clean_sensitive_params(body)\n            return body if ctype == 'form' else json.dumps(body)\n        else:\n            body = self.wsgi_request.POST.copy()\n            body = self._clean_sensitive_params(body)\n            return body.urlencode() if ctype == 'form' else json.dumps(dict(list(body.items())))\n\n    def _clean_sensitive_params(self, params):\n        for key in self.SENSITIVE_PARAMS_KEY:\n            params.pop(key, None)\n        return params\n\n    def _clean_normal_params(self, params):\n        for key in self.NORMAL_PARAMS_KEY:\n            params.pop(key, None)\n        return params\n\n\nclass ComponentsManager(object):\n    \"\"\"\n    Manager for Components\n    \"\"\"\n\n    blist_comp_fnames = [\n        'component.py',\n        'component.pyc',\n    ]\n\n    def __init__(self, ):\n        self.name_component_map = {}\n        self.path_configs = {}\n\n    def __str__(self):\n        return '<ComponentsManager: path_configs=%s>' % self.path_configs\n\n    def register(self, comp_class, config={}):\n        \"\"\"\n        Register a component class by channel_config\n\n        :param dict config: 注册组件时的配置文件，比如组件的名称前缀等\n        \"\"\"\n        comp_class.set_name_prefix(config.get('name_prefix', ''))\n        self.name_component_map[comp_class.get_name().lower()] = comp_class\n\n    def get_comp_by_name(self, name):\n        ret = self.name_component_map.get(name)\n        return ret\n\n    def register_by_module(self, module, config={}):\n        \"\"\"\n        Register Component class\n        \"\"\"\n        cls_comp = self.find_component_class(module)\n        if cls_comp:\n            self.register(cls_comp, config=config)\n\n    def register_by_config(self, config_list):\n        \"\"\"\n        根据来自配置文件的组件配置来注册组件\n        \"\"\"\n        if not config_list:\n            return\n        if not isinstance(config_list, (list, tuple)):\n            config_list = [config_list]\n\n        # 保存配置到self.path_configs,并且开始搜寻加载path\n        for comp_config in config_list:\n            if not comp_config:\n                continue\n            self.path_configs[comp_config['path']] = comp_config.copy()\n            self.register_path(comp_config['path'])\n\n    def register_path(self, path):\n        \"\"\"\n        Walk down components path to find all valid Component object\n        \"\"\"\n        config = self.path_configs[path]\n        for current_folder, folders, files in os.walk(path):\n            for filename in files:\n                filename = os.path.join(current_folder, filename)\n                if \"__pycache__\" in filename:\n                    continue\n                if self.should_register(filename):\n                    try:\n                        module = import_module(fpath_to_module(filename))\n                        self.register_by_module(module, config=config)\n                    except Exception:\n                        logger.exception('%s Error when register file %s, skip',\n                                         bk_error_codes.COMPONENT_REGISTER_ERROR.code, filename)\n\n    def should_register(self, filename):\n        \"\"\"\n        Determine if `filename` should be registered\n\n        :param str filename: filename with directory, like \"esb/generic/test.py\"\n        \"\"\"\n        fpath, base_fname = os.path.split(filename)\n        # Components are not in toolkit folder\n        if fpath.endswith('/toolkit') or fpath.endswith('/apidoc'):\n            return False\n        return is_py_file(base_fname) and not base_fname.startswith('_') and \\\n            base_fname not in self.blist_comp_fnames\n\n    @staticmethod\n    def find_component_class(module):\n        \"\"\"\n        Find the component class from the given module\n        \"\"\"\n        for attr_name in dir(module):\n            obj = getattr(module, attr_name)\n            try:\n                # Only if this Component class is **defined** in this module\n                if hasattr(obj, 'handle') and issubclass(obj, BaseComponent) and \\\n                        obj.__module__ == module.__name__:\n                    cls_comp = obj\n                    return cls_comp\n            except Exception:\n                pass\n        return\n\n    def get_registed_components(self):\n        return self.name_component_map\n\n\n_components_manager = None\n\n\ndef get_components_manager():\n    \"\"\"\n    获取当前注册的components_manager\n    \"\"\"\n    global _components_manager\n    if _components_manager is None:\n        manager = ComponentsManager()\n        manager.register_by_config(config.ESB_CONFIG['config'].get('component_groups', []))\n        _components_manager = manager\n    return _components_manager\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/component/buffet.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport re\nimport json\nimport urllib.parse\n\nfrom jinja2 import Template\nfrom django.http import HttpResponse\n\nfrom esb.bkcore.models import ESBBuffetComponent, ESBBuffetMapping\nfrom esb.utils.base import RE_PATH_VARIABLE, PathVars, preprocess_path_tmpl\nfrom common.errors import error_codes, CommonAPIError\nfrom common.log import logger\nfrom .base import BaseComponent\n\n\nclass BuffetComponentMaker(object):\n\n    def __init__(self, db_buffet_comp_obj):\n        self.obj = db_buffet_comp_obj\n\n    def make_comp_class(self, base_class=None):  # noqa\n        base_class = base_class or BaseComponent\n        db_buffet_obj = self.obj\n        registed_path = self.obj.registed_path\n        system_name = db_buffet_obj.system.name if db_buffet_obj.system else 'BUFFET'\n\n        class BuffetComponent(base_class):\n            \"\"\"\n            自助接入组件的虚拟component class\n            \"\"\"\n            sys_name = system_name\n\n            def get_dest_request_method(self, db_buffet_obj):\n                \"\"\"\n                获取应该用于请求第三方的请求类型\n\n                :param db_buffet_obj: ESBBuffetComponent 实例\n                \"\"\"\n                dest_http_method = db_buffet_obj.dest_http_method\n                # 检查是否透传原始请求类型\n                if dest_http_method == '_ORIG':\n                    dest_http_method = self.request.wsgi_request.method\n                return dest_http_method\n\n            def handle(self):\n                # 将用户传入的头信息传递给第三方接口\n                req_headers = self.request.headers\n\n                extra_headers = db_buffet_obj.get_extra_headers()\n\n                dest_http_method = self.get_dest_request_method(db_buffet_obj)\n\n                parsed_url = urllib.parse.urlparse(db_buffet_obj.dest_url)\n                host = '%s://%s' % (parsed_url.scheme, parsed_url.netloc)\n\n                # 替换目标地址中的变量模板\n                path = parsed_url.path\n                if RE_PATH_VARIABLE.search(parsed_url.path):\n                    try:\n                        path = parsed_url.path.format(**self.request.path_vars.val_dict)\n                    except KeyError as e:\n                        raise error_codes.BUFFET_CANNOT_FORMAT_PATH.format_prompt('{%s}' % e.args[0])\n\n                # 拼装请求参数\n                params, data = None, None\n                if dest_http_method == 'GET':\n                    params = self.request.get_clean_params()\n                elif dest_http_method == 'POST':\n                    # 目前支持的 Content-Type: form/json\n                    if db_buffet_obj.favor_post_ctype == 'form':\n                        data = self.request.get_clean_params(ctype='form')\n                        self.update_header_content_type(extra_headers, content_type='application/x-www-form-urlencoded')\n                    else:\n                        data = self.request.get_clean_params(ctype='json')\n                        self.update_header_content_type(extra_headers, content_type='application/json')\n\n                headers = {}\n                headers.update(req_headers)\n                headers.update(extra_headers)\n                headers.update({\n                    'Bk-Username': self.current_user.username,\n                })\n                response = self.outgoing.http_client.request(\n                    dest_http_method,\n                    host,\n                    path,\n                    params=params,\n                    data=data,\n                    headers=headers,\n                )\n\n                if isinstance(response, str):\n                    response = HttpResponse(\n                        response,\n                        content_type='application/json; charset=utf-8'\n                    )\n                elif isinstance(response, dict):\n                    # 调整自助接入的 result 的默认数据\n                    response.setdefault('result', None)\n                self.response.payload = response\n\n            def update_header_content_type(self, headers, content_type):\n                \"\"\"\n                :访问后端接口，更新headers中Content-Type\n                \"\"\"\n                headers_keys = [key.lower() for key in list(headers.keys())]\n                if not ('content-type' in headers_keys or 'content_type' in headers_keys):\n                    headers.update({'Content-Type': content_type})\n                return headers\n\n            def apply_mappings(self, mapping_id, _input, _output=None):\n                \"\"\"\n                使用设置好的 Mapping 来重新处理输入输出\n\n                :param str mapping_id: ESBBuffetMapping 主键\n                :param dict _input: 请求参数\n                :param dict _output: 响应结果\n                :returns: 经过模板转换过的结果\n                \"\"\"\n                mapping_obj = ESBBuffetMapping.objects.filter(id=mapping_id).first()\n                if not mapping_obj:\n                    # INFO: 因为目前使用该方法的只有 _input 和 _output，目前优先返回 _output\n                    return _output or _input\n\n                try:\n                    result = Template(mapping_obj.source).render(\n                        _input=_input,\n                        _output=_output,\n                        # Custom funcitons\n                        json=json.dumps\n                    )\n                    result = json.loads(result)\n                except Exception:\n                    logger.exception('Error occoured when apply mapping[%s], _input=%s, _output=%s',\n                                     mapping_id, _input, _output)\n                    raise CommonAPIError('An error occurred in mapping of template. Please contact the developer')\n                return result\n\n            @classmethod\n            def get_component_name(cls):\n                \"\"\"\n                目前的component name根据注册到的路径动态生成\n                \"\"\"\n                name_by_path = registed_path.strip('/').lower().replace('/', '.')\n                # 当路径以 sys_name 开头时，不包含系统名称\n                if name_by_path.startswith(cls.sys_name.lower()):\n                    return name_by_path\n                return '%s.%s' % (cls.sys_name, name_by_path)\n\n        return BuffetComponent\n\n\ndef make_buffet_component_class(buffet_comp_obj, *args, **kwargs):\n    \"\"\"\n    根据配置好的ESBBuffetComponent实例生成一个组件\n    \"\"\"\n    return BuffetComponentMaker(buffet_comp_obj).make_comp_class(*args, **kwargs)\n\n\nclass BuffetComponentManager(object):\n    \"\"\"\n    Manager for buffet components\n    \"\"\"\n\n    VALID_HTTP_METHODS = ('GET', 'POST', 'PUT', 'DELETE')\n\n    def get_all_buffet_components(self):\n        \"\"\"\n        从数据库中查询出所有的自助接入组件，并将其注册路径转换为正则表达式\n\n        :returns: 包含 obj, re_path 的字典列表\n        \"\"\"\n        return [{\n            'obj': obj,\n            # 将数据库中注册的路径处理为正则表达式\n            're_path': re.compile(r'^%s$' % preprocess_path_tmpl(obj.registed_path))\n        } for obj in ESBBuffetComponent.objects.all()]\n\n    def search_buffet_component(self, path, method):\n        \"\"\"\n        根据当前路径寻找自助接入对象\n\n        :param str path: 当前请求的路径\n        :param str method: 当前请求类型\n        :returns: ESBBuffetComponent 对象\n        \"\"\"\n        for value in self.get_all_buffet_components():\n            matched_obj = value['re_path'].match(path)\n            obj = value['obj']\n            if matched_obj and obj.registed_http_method == method:\n                # 把匹配到的path变量作为结果返回\n                return value, PathVars.from_matched_obj(matched_obj)\n            else:\n                continue\n        return None, None\n\n\n_buffet_comp_manager = None\n\n\ndef get_buffet_comp_manager():\n    \"\"\"\n    获取当前的buffet_comp_manager\n    \"\"\"\n    global _buffet_comp_manager\n    if _buffet_comp_manager is None:\n        manager = BuffetComponentManager()\n        _buffet_comp_manager = manager\n    return _buffet_comp_manager\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/compperm/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/compperm/validators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom common.base_validators import BaseValidator\nfrom common.errors import error_codes\nfrom esb.bkcore.models import AppComponentPerm, ESBChannel\n\n\nclass ComponentPermValidator(BaseValidator):\n\n    def validate(self, request):\n        if getattr(request, '__esb_skip_comp_perm__', False):\n            return\n\n        app_code = request.app_code\n        channel_conf = request.channel_conf\n\n        if channel_conf.get('perm_level') in (None, 0) or channel_conf.get('id') is None:\n            return\n\n        if not self.has_perm(app_code, channel_conf['id']):\n            component_info = self.get_component_info(channel_conf['id'])\n            raise error_codes.APP_PERMISSION_DENIED.format_prompt(\n                'APP has no permission to access the component ({component_name}) of the system ({system_name}). '\n                'The APP manager can go to the Developer Center and apply for permission to access the component'\n                .format(**component_info))\n\n    def has_perm(self, app_code, component_id):\n        component_perm_exists = AppComponentPerm.objects.filter(app_code=app_code, component_id=component_id).exists()\n        if component_perm_exists:\n            return True\n        return False\n\n    def get_component_info(self, component_id):\n        component = ESBChannel.objects.filter(id=component_id).values('component_name', 'component_system__name')\n        if not component:\n            return {\n                'system_name': 'unknown',\n                'component_name': 'unknown',\n            }\n        component = component[0]\n        return {\n            'system_name': component['component_system__name'],\n            'component_name': component['component_name'],\n        }\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/exdb/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/exdb/bkpaas.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\"\nfrom sqlalchemy import text  # 必须导入text包装器\nfrom sqlalchemy.exc import SQLAlchemyError\nfrom .connections import get_connections\n\ndb = get_connections('default')\n\n\nclass AppSecureInfo(object):\n    \"\"\"\n    Helper for AppSecureInfo\n    \"\"\"\n\n    @classmethod\n    def get_by_app_code(cls, app_code):\n        secure_key_list = []\n\n        # SQL必须使用text()包装，参数使用:命名占位符\n        sql_queries = [\n            text(\"SELECT code, auth_token FROM paas_app WHERE code = :app_code\"),\n            text(\"SELECT app_code, app_token FROM esb_app_account WHERE app_code = :app_code\")\n        ]\n\n        try:\n            with db.begin() as connection:  # 使用上下文管理器确保事务\n                for sql in sql_queries:\n                    # 使用字典参数传递，且参数名与占位符一致\n                    result = connection.execute(sql, {\"app_code\": app_code})\n                    obj = result.first()\n                    if obj:\n                        secure_key_list.append(obj[1])\n        except SQLAlchemyError as e:\n            # 添加错误日志\n            print(f\"Database query failed: {str(e)}\")\n        return {'app_code': app_code, 'secure_key_list': secure_key_list} if secure_key_list else None"
  },
  {
    "path": "paas-ce/paas/esb/esb/exdb/connections.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\n使用 SQLAlchemy 来和其他数据库打交道\n\"\"\"\nimport urllib.request, urllib.parse, urllib.error\n\nfrom sqlalchemy import create_engine\nfrom django.conf import settings\n\nfrom common.base_utils import FancyDict\n\n\ndef make_sa_conn_string(config_dict, driver_type='pymysql'):\n    \"\"\"\n    Convert a django db dict to sqlalchemy string\n    \"\"\"\n    return 'mysql+%(driver_type)s://%(user)s:%(password)s@%(host)s:%(port)s/%(db)s?charset=utf8' % {\n        'driver_type': driver_type,\n        'user': config_dict['USER'],\n        'password': urllib.parse.quote(config_dict['PASSWORD']),\n        'host': config_dict['HOST'],\n        'port': config_dict['PORT'],\n        'db': config_dict['NAME'],\n    }\n\n\n_connections = FancyDict()\n\n\ndef get_connections(name):\n    return _connections[name]\n\n\n# Init connections\nfor db_name, db_config in [('default', settings.DATABASES['default']), ]:\n    dbstr = make_sa_conn_string(db_config, driver_type='pymysql')\n    pool_options = db_config.get('POOL_OPTIONS') or {\n        'pool_size': 20,\n        'max_overflow': 100,\n        'pool_recycle': 3600\n    }\n    engine = create_engine(dbstr, echo=False, **pool_options)\n    _connections[db_name] = engine\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/jinja2.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom __future__ import absolute_import  # Python 2 only\n\nfrom jinja2 import Environment\nfrom django.utils.translation import ugettext as _\n\n\ndef environment(**options):\n    env = Environment(**options)\n    env.globals.update({\n        '_': _,\n    })\n    return env\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/jinja2_esb.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n  # Python 2 only\n\nfrom jinja2 import Environment\nfrom django.utils.translation import gettext as _\n\n\ndef environment(**options):\n    env = Environment(**options)\n    env.globals.update({\n        '_': _,\n    })\n    return env\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/add_compperm_for_app.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom optparse import make_option\n\nfrom django.core.management.base import BaseCommand, CommandError\n\nfrom esb.bkcore.models import ESBChannel, AppComponentPerm\n\n\nclass Command(BaseCommand):\n\n    option_list = BaseCommand.option_list + (\n        make_option('--app_code', action='store', dest='app_code'),\n        make_option('--system_name', action='store', dest='system_name'),\n        make_option('--component_name', action='store', dest='component_name'),\n    )\n\n    def handle(self, *args, **options):\n        app_code = options['app_code']\n        system_name = options['system_name']\n        component_name = options['component_name']\n\n        if not app_code:\n            raise CommandError('应用编码 app_code 不能为空')\n\n        components = ESBChannel.objects.all()\n        if system_name:\n            components = components.filter(component_system__name=system_name)\n        if component_name:\n            components = components.filter(component_name__in=component_name.split(','))\n        components = components.values('id', 'component_system__name', 'component_name')\n\n        for component in components:\n            obj, created = AppComponentPerm.objects.get_or_create(\n                app_code=app_code,\n                component_id=component['id'],\n            )\n            if created:\n                tip = 'add perm'\n            else:\n                tip = 'update perm'\n                obj.touch_expires()\n                obj.save()\n            tip = '{tip}: app_code={app_code}, system_name={system_name}, component_name={component_name}'.format(\n                tip=tip, app_code=app_code, system_name=component['component_system__name'],\n                component_name=component['component_name'],\n            )\n            print(tip)\n\n        print('Done, count: {count}'.format(count=len(components)))\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/check_service.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\n检测服务可用性\n\"\"\"\nimport json\nfrom optparse import make_option\n\nfrom django.core.management.base import BaseCommand\n\n\nclass Command(BaseCommand):\n\n    option_list = BaseCommand.option_list + (\n        make_option('--service', action='store', dest='service', help='Service name'),\n    )\n\n    def handle(self, *args, **options):\n        self.check_job_ssl()\n\n    def check_job_ssl(self):\n        from components.bk.apis.job.get_agent_status import GetAgentStatus\n        kwargs = {\n            'app_id': 1,\n            'ip_infos': [\n                {\n                    'ip': '127.0.0.1',\n                    'plat_id': 1,\n                }\n            ]\n        }\n        result = GetAgentStatus().invoke(kwargs=kwargs)\n        print('check_job_ssl:', json.dumps(result))\n        assert result['result'], result['message']\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/sync_api_docs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nupdate api_doc to db\n\"\"\"\nimport json\nimport logging\nfrom optparse import make_option\n\nfrom django.core.management.base import BaseCommand\n\nfrom esb.bkcore.models import ComponentAPIDoc, ESBChannel\nfrom esb.management.utils.api_docs import ApiDocManager, DocNotChangedException\n\nlogger = logging.getLogger(__name__)\n\n\nclass Command(BaseCommand):\n\n    def add_arguments(self, parser):\n        parser.add_argument(\n            '--all',\n            action='store_true',\n            dest='all',\n            default=False,\n            help='update all api docs'\n        )\n\n    def handle(self, *args, **options):\n        self.update_api_docs(is_update_all_api_doc=options['all'])\n\n    def update_api_docs(self, is_update_all_api_doc):\n        # init api docs\n        api_doc_manager = ApiDocManager(is_update_all_api_doc=is_update_all_api_doc)\n        for channel in ESBChannel.objects.filter(is_active=True, is_hidden=False):\n            try:\n                api_data = api_doc_manager.get_api_doc(channel)\n            except DocNotChangedException:\n                continue\n            except Exception as ex:\n                logger.exception('fail to generate apidoc for %s, Exception: %s', channel.component_codename, ex)\n                continue\n\n            if not api_data:\n                logger.warning(\n                    'Oooops, No api document define found in component %(comp_name)s, you better write one.' %\n                    {'comp_name': channel.component_codename})\n                continue\n\n            ComponentAPIDoc.objects.update_or_create(\n                component_id=channel.id,\n                defaults={\n                    'board': '',\n                    'doc_md': json.dumps(api_data['doc_md']),\n                    'doc_html': json.dumps(api_data['doc_html']),\n                    'doc_md_md5': api_data['raw_doc_md_md5'],\n                }\n            )\n            logger.info('Document synced for api [%s](%s)', api_data['system_name'], api_data['component_name'])\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/sync_bk_sdk.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\n生成最新SDK\n\"\"\"\nfrom django.core.management.base import BaseCommand\n\nfrom apps.sdk_management.utils import SDKGenerator\nfrom esb.management.utils import conf_tools\n\nimport logging\nlogger = logging.getLogger(__name__)\n\n\nclass Command(BaseCommand):\n\n    def handle(self, *args, **options):\n        conf_client = conf_tools.ConfClient()\n        sdk_channels = conf_client.default_channels\n        for system_name, system_channels in conf_client.confapis_channels.items():\n            sdk_channels.setdefault(system_name, [])\n            sdk_channels[system_name].extend(system_channels)\n\n        sdk_generator = SDKGenerator(channels=sdk_channels)\n        sdk_generator.generate_files_for_sdk()\n        logger.info('generate open_pass_esb sdk files to %s' % sdk_generator.get_target_dir())\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/sync_data_at_deploy.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nupdate system and channel data to db\n\"\"\"\nfrom django.core.management.base import BaseCommand\n\n\nclass Command(BaseCommand):\n\n    def handle(self, *args, **options):\n        from esb.management.commands import sync_function_controller\n        sync_function_controller.Command().handle()\n\n        from esb.management.commands import sync_system_and_channel_data\n        sync_system_and_channel_data.Command().handle(force=False)\n\n        from esb.management.commands import sync_api_docs\n        sync_api_docs.Command().handle(all=False)\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/sync_function_controller.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\n将系统和通道Channel数据，更新到数据库中\n\"\"\"\nimport re\n\nfrom django.core.management.base import BaseCommand\n\nfrom esb.bkcore.models import FunctionController\nfrom esb.management.utils.constants import FUNCTION_CONTROLLERS\n\n\nclass Command(BaseCommand):\n\n    def handle(self, *args, **options):\n        update_function_controller()\n\n\ndef update_function_controller():\n    delimiter = re.compile(r'[^,;]+')\n    for func_ctl in FUNCTION_CONTROLLERS:\n        func_code = func_ctl.pop('func_code')\n        obj, created = FunctionController.objects.get_or_create(func_code=func_code, defaults=func_ctl)\n        if not created:\n            new_wlist = delimiter.findall(func_ctl['wlist'])\n            now_wlist = delimiter.findall(obj.wlist)\n            diff_wlist = list(set(new_wlist) - set(now_wlist))\n            now_wlist.extend(diff_wlist)\n            obj.wlist = ','.join(now_wlist)\n            obj.save()\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/commands/sync_system_and_channel_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nupdate system and channel data to db\n\"\"\"\nimport json\nfrom optparse import make_option\n\nfrom django.core.management.base import BaseCommand\n\nfrom esb.bkcore.models import ComponentSystem, ESBChannel, SystemDocCategory, ESBBuffetComponent\nfrom esb.management.utils import conf_tools\nfrom common.constants import API_TYPE_Q\n\nimport logging\nlogger = logging.getLogger(__name__)\n\n\nclass Command(BaseCommand):\n\n    option_list = BaseCommand.option_list + (\n        make_option('--force', action='store_true', dest='force', help='Force data update to db'),\n    )\n\n    def handle(self, *args, **options):\n        self.force = options['force']\n        self.warning_msgs = []\n\n        self.update_systems()\n        self.update_channels()\n        self.update_doc_category()\n        self.update_buffet_components()\n\n        for msg in self.warning_msgs:\n            logger.warning(msg)\n        logger.info('Sync system/channels done')\n\n    def update_systems(self):\n        default_update_fields = ['label', 'remark', 'interface_admin']\n        force_update_fields = ['execute_timeout', 'query_timeout']\n\n        conf_client = conf_tools.ConfClient()\n        for system in conf_client.systems:\n            component_system, created = ComponentSystem.objects.get_or_create(\n                name=system['name'],\n                defaults=self.get_by_fields(system, default_update_fields + force_update_fields)\n            )\n            if created:\n                logger.info('add system: %s', system['name'])\n            else:\n                self.diff_obj_conf(\n                    component_system,\n                    system,\n                    'system %s' % system['name'],\n                    default_update_fields,\n                    force_update_fields\n                )\n\n                component_system.__dict__.update(self.get_by_fields(system, default_update_fields))\n                if self.force:\n                    component_system.__dict__.update(self.get_by_fields(system, force_update_fields))\n                component_system.save()\n\n    def update_channels(self):\n        default_update_fields = ['name', 'component_codename', 'component_name']\n        force_update_fields = ['component_system_id', 'type', 'is_hidden', 'timeout_time']\n\n        conf_client = conf_tools.ConfClient()\n        for system_name, channels in list(conf_client.channels.items()):\n            system = ComponentSystem.objects.get(name=system_name)\n            for channel in channels:\n                is_hidden = channel.get('is_hidden', False)\n                is_deprecated = channel.get('is_deprecated', False)\n                is_hidden = is_hidden or is_deprecated\n\n                channel['name'] = channel['component_label']\n                channel['type'] = 2 if channel['component_type'] == API_TYPE_Q else 1\n                channel['is_hidden'] = is_hidden\n                channel['component_system_id'] = system.id\n                channel['component_codename'] = channel['comp_codename']\n                channel['extra_info'] = {\n                    'is_confapi': channel.get('is_confapi', False),\n                    'label_en': channel.get('label_en', ''),\n                    'suggest_method': channel.get('suggest_method', ''),\n                }\n\n                try:\n                    esb_channel = ESBChannel.objects.get(path=channel['path'])\n                except ESBChannel.DoesNotExist:\n                    if is_deprecated:\n                        continue\n                    esb_channel = ESBChannel(\n                        **self.get_by_fields(channel, default_update_fields + force_update_fields)\n                    )\n                    esb_channel.path = channel['path']\n                    esb_channel.comp_conf = json.dumps(channel['comp_conf_to_db']) if channel['comp_conf_to_db'] else ''\n                    esb_channel.extra_info = json.dumps(channel['extra_info'])\n                    esb_channel.save()\n                    logger.info('add channel: %s', channel['path'])\n                else:\n                    self.diff_obj_conf(\n                        esb_channel,\n                        channel,\n                        'channel %s' % channel['path'],\n                        default_update_fields,\n                        force_update_fields,\n                    )\n                    esb_channel.extra_info = json.dumps(channel['extra_info'])\n                    esb_channel.__dict__.update(self.get_by_fields(channel, default_update_fields))\n                    if esb_channel.is_confapi:\n                        esb_channel.comp_conf = json.dumps(channel['comp_conf_to_db'])\n                    if self.force:\n                        esb_channel.__dict__.update(self.get_by_fields(channel, force_update_fields))\n                    esb_channel.save()\n\n    def update_doc_category(self):\n        conf_client = conf_tools.ConfClient()\n        for system_doc_category in conf_client.system_doc_category:\n            doc_category, created = SystemDocCategory.objects.get_or_create(\n                name=system_doc_category['label'],\n                defaults={\n                    'priority': system_doc_category['priority'],\n                }\n            )\n            ComponentSystem.objects.filter(doc_category_id__isnull=True)\\\n                .filter(name__in=system_doc_category['systems'])\\\n                .update(doc_category_id=doc_category.id)\n\n    def update_buffet_components(self):\n        default_update_fields = ['name']\n        force_update_fields = [\n            'type',\n            'dest_url',\n            'dest_http_method',\n            'favor_post_ctype',\n            'extra_headers',\n            'timeout_time',\n        ]\n        conf_client = conf_tools.ConfClient()\n        for component in conf_client.buffet_components:\n            system = ComponentSystem.objects.get(name=component['system_name'])\n\n            if 'extra_headers' in component and not isinstance(component['extra_headers'], str):\n                component['extra_headers'] = json.dumps(component['extra_headers'])\n\n            obj, created = ESBBuffetComponent.objects.get_or_create(\n                system=system,\n                registed_path=component['registed_path'],\n                registed_http_method=component['registed_http_method'],\n                defaults=self.get_by_fields(component, default_update_fields + force_update_fields)\n            )\n            if created:\n                logger.info('add buffet component: %(system_name)s %(registed_http_method)s %(registed_path)s' % component)  # noqa\n            else:\n                self.diff_obj_conf(\n                    obj,\n                    component,\n                    'buffet component %(system_name)s %(registed_http_method)s %(registed_path)s' % component,\n                    default_update_fields,\n                    force_update_fields,\n                )\n                obj.__dict__.update(self.get_by_fields(component, default_update_fields))\n                if self.force:\n                    obj.__dict__.update(self.get_by_fields(component, force_update_fields))\n                obj.save()\n\n    def get_by_fields(self, obj, fields):\n        return dict([\n            (field, obj[field])\n            for field in fields\n            if field in obj\n        ])\n\n    def diff_obj_conf(self, obj, conf, flag, default_update_fields, force_update_fields):\n        info = []\n        warning = []\n        for fields, is_info_level in [(default_update_fields, True), (force_update_fields, self.force)]:\n            for field in fields:\n                if field not in conf:\n                    continue\n                if getattr(obj, field) != conf[field]:\n                    msg = '%s: %s -> %s' % (field, getattr(obj, field), conf[field])\n                    if is_info_level:\n                        info.append(msg)\n                    else:\n                        warning.append(msg)\n        if info:\n            logger.info('%s changed: %s', flag, ', '.join(info))\n        if warning:\n            self.warning_msgs.append('%s change: %s' % (flag, ', '.join(warning)))\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/api_docs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport textwrap\n\nimport markdown\nfrom django.template import engines\nfrom django.utils import translation\n\nfrom common.constants import API_TYPE_Q, API_TYPE_OP\nfrom common.base_utils import get_md5, smart_unicode\nfrom esb.bkcore.models import ComponentAPIDoc, ESBChannel\nfrom esb.management.utils import component_tools\nfrom esb.utils import config\n\n\nclass ApiDocManager(object):\n\n    def __init__(self, is_update_all_api_doc=False):\n        self.is_update_all_api_doc = is_update_all_api_doc\n        self.all_doc_md_md5 = self.get_all_doc_md_md5()\n\n    def get_api_doc(self, channel):\n        api_doc = APIDoc(channel)\n        api_doc_info = api_doc.get_doc_info()\n\n        old_doc_md_md5 = self.get_old_doc_md5(channel.path)\n        if not (self.is_update_all_api_doc or api_doc.is_doc_changed(old_doc_md_md5)):\n            raise DocNotChangedException\n        return api_doc_info\n\n    def get_old_doc_md5(self, path):\n        return self.all_doc_md_md5.get(path)\n\n    def get_all_doc_md_md5(self):\n        components = dict(ESBChannel.objects.values_list('id', 'path'))\n        all_doc_md_md5 = {}\n        api_docs = ComponentAPIDoc.objects.values('component_id', 'doc_md_md5')\n        for api_doc in api_docs:\n            component_id = api_doc['component_id']\n            path = components.get(component_id)\n            if not path:\n                continue\n            all_doc_md_md5[path] = api_doc['doc_md_md5']\n        return all_doc_md_md5\n\n\nAPI_PATH = \"\"\"\n### {{ _(\"请求地址\") }}\n\n{{ api_path }}\n\n\"\"\"\n\nAPI_METHOD = \"\"\"\n### {{ _(\"请求方法\") }}\n\n{{ api_method }}\n\n\"\"\"\n\n\nclass APIDoc(object):\n\n    def __init__(self, channel):\n        self.jinja2_engine = engines['jinja2']\n        self.jinja2_context = {}\n\n        self.channel = channel\n        self.api_path = self.channel.api_path\n        self.api_data = self.get_api_data()\n\n        self.update_doc_md()\n        self.raw_doc_md_md5 = self.get_raw_doc_md_md5()\n\n    def get_doc_info(self):\n        return {\n            'doc_md': self.doc_md,\n            'doc_html': self.get_doc_html(),\n            # 用于计算原始文档的 md5\n            'raw_doc_md_md5': self.raw_doc_md_md5,\n            'system_name': self.api_data['system_name'],\n            'component_name': self.api_data['component_name'],\n        }\n\n    def get_api_data(self):\n        if self.channel.is_confapi:\n            channel_conf = self.get_channel_conf()\n            component_client = component_tools.ConfapiComponentClient(\n                channel_conf, comp_codename=self.channel.component_codename)\n        else:\n            component_client = component_tools.ComponentClient(\n                comp_codename=self.channel.component_codename)\n        return component_client.get_info()\n\n    def get_channel_conf(self):\n        extra_info = self.channel.extra_info_json()\n        return {\n            'comp_codename': self.channel.component_codename,\n            'comp_conf': {\n                'name': self.channel.component_name,\n                'label': self.channel.name,\n                'suggest_method': extra_info.get('suggest_method', ''),\n                'api_type': API_TYPE_Q if self.channel.type == 2 else API_TYPE_OP,\n            }\n        }\n\n    def get_doc_html(self):\n        doc_html = {}\n        for language, _doc_md in list(self.doc_md.items()):\n            doc_html[language] = self.format_md_to_html(_doc_md)\n        return doc_html\n\n    def get_raw_doc_md_md5(self):\n        return get_md5(json.dumps(self.doc_md))\n\n    def is_doc_changed(self, old_doc_md_md5):\n        return old_doc_md_md5 != self.raw_doc_md_md5\n\n    def update_doc_md(self):\n        doc_md = {}\n        for language, _doc_md in list(self.api_data['doc_md'].items()):\n            with translation.override(language):\n                common_args_desc = self.get_doc_common_args()\n                self.jinja2_context['common_args_desc'] = textwrap.dedent(common_args_desc)\n\n                _doc_md = textwrap.dedent(_doc_md).strip()\n                _doc_md = self.clear_api_flag(_doc_md)\n                _doc_md = self.add_api_method(_doc_md)\n                _doc_md = self.add_url(_doc_md)\n                _doc_md = self.format(_doc_md, self.jinja2_context)\n\n                doc_md[language] = _doc_md\n        self.doc_md = doc_md\n\n    def clear_api_flag(self, doc_md):\n        doc_md = doc_md.splitlines()\n        for index, line in enumerate(doc_md):\n            if line.startswith('api'):\n                doc_md[index] = ''\n            else:\n                break\n        return '\\n'.join(doc_md).strip()\n\n    def add_url(self, doc_md):\n        self.jinja2_context['api_path'] = self.api_path\n        return self.insert_to_doc_md(doc_md, API_PATH)\n\n    def add_api_method(self, doc_md):\n        api_method = self.api_data['suggest_method'].upper()\n        if not api_method:\n            return doc_md\n        self.jinja2_context['api_method'] = api_method\n        return self.insert_to_doc_md(doc_md, API_METHOD)\n\n    def insert_to_doc_md(self, doc_md, content):\n        return '%s\\n%s' % (smart_unicode(content), doc_md)\n\n    def format(self, content, context):\n        return self.jinja2_engine.from_string(content).render(context=context)\n\n    def format_md_to_html(self, doc_md):\n        doc_html = markdown.markdown(\n            doc_md,\n            extensions=[\n                'tables',\n                'attr_list',\n                'fenced_code',\n                # 'smart_strong',\n                'codehilite',\n                'toc'\n            ],\n        )\n        return doc_html\n\n    def get_doc_common_args(self):\n        doc_common_args = config.ESB_CONFIG['config'].get('doc_common_args', '')\n        return self.jinja2_engine.from_string(doc_common_args).render().replace('&gt;', '>')\n\n\nclass DocNotChangedException(Exception):\n    pass\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/channel_tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nChannel Tools\n\"\"\"\nimport re\n\nfrom .component_tools import ComponentClient, ConfapiComponentClient\n\n\nclass ChannelClient(object):\n\n    def __init__(self, path, channel_config):\n        self.path = path\n        self.channel_config = channel_config\n\n        if self.channel_config.get('is_confapi'):\n            self.comp_client = ConfapiComponentClient(\n                self.channel_config,\n                comp_codename=channel_config['comp_codename'])\n        else:\n            self.comp_client = ComponentClient(comp_codename=channel_config['comp_codename'])\n\n    def get_info(self):\n        info = self.comp_client.get_info()\n        info.update({\n            'path': self.path,\n            'comp_codename': self.channel_config['comp_codename'],\n            'comp_conf_to_db': self.channel_config.get('comp_conf_to_db'),\n            'is_deprecated': self.channel_config.get('is_deprecated', False),\n            'no_sdk': self.channel_config.get('no_sdk', False),\n        })\n        return info\n\n    def is_channel_path_standard(self):\n        # check path is /system_name/api_name/ or not\n        system_name = self.comp_client.get_system_name().lower()\n        component_name = self.comp_client.get_component_name()\n        guess_api_path = r'^(/v2)?/%s/%s/$' % (system_name, component_name)\n        return re.match(guess_api_path, self.path)\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/component_tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport re\nfrom importlib import import_module\n\nfrom django.utils import translation\nfrom django.template import engines\n\nfrom common.log import logger\nfrom common.base_utils import read_file, smart_unicode\nfrom esb.component.base import get_components_manager\nfrom esb.utils.confapis import get_confapis_manager\n\n\nclass ComponentClient(object):\n\n    is_confapi = False\n\n    def __init__(self, comp_codename=None, comp_class=None):\n        \"\"\"\n        :param comp_codename or comp_class\n        \"\"\"\n        self.comp_codename = comp_codename\n        self.comp_class = comp_class\n\n        if not self.comp_class:\n            self.comp_class = self.get_comp_class(self.comp_codename)\n\n        self.system_name = self.get_system_name()\n        self.component_name = self.get_component_name()\n        self.comp_doc = self.get_comp_doc()\n\n    def __str__(self):\n        return '<%s-%s>' % (self.system_name, self.component_name)\n\n    def get_info(self):\n        return {\n            'system_name': self.system_name,\n            'component_name': self.component_name,\n            'component_label': self.get_component_label(),\n            'component_type': self.get_api_type(),\n            'suggest_method': self.get_suggest_method(),\n            'doc_md': self.get_comp_doc_md(),\n            'is_confapi': self.is_confapi,\n            'label_en': self.get_component_label_en(),\n        }\n\n    def get_comp_class(self, comp_codename):\n        components_manager = get_components_manager()\n        comp_class = components_manager.get_comp_by_name(comp_codename)\n        if not comp_class:\n            raise Exception(\"Can't find component class of %s\" % comp_codename)\n        return comp_class\n\n    def get_system_name(self):\n        return self.comp_class.sys_name\n\n    def get_component_name(self):\n        return self.comp_class.get_component_name()\n\n    def get_api_type(self):\n        return self.comp_class.api_type\n\n    def get_component_label(self):\n        api_label = getattr(self.comp_class, 'label', '')\n        if api_label:\n            return api_label\n\n        api_label = re.search(r'apiLabel\\s*(.+)', self.comp_doc)\n        if api_label:\n            api_label = api_label.group(1).strip()\n        if not api_label:\n            return self.component_name\n\n        with translation.override('zh-hans'):\n            api_label = engines['jinja2'].from_string(api_label).render()\n\n        return api_label\n\n    def get_component_label_en(self):\n        return getattr(self.comp_class, 'label_en', '')\n\n    def get_suggest_method(self):\n        suggest_method = getattr(self.comp_class, 'suggest_method', '')\n        if suggest_method:\n            return suggest_method.upper()\n\n        api_method = re.search(r'apiMethod\\s*(.+)', self.comp_doc)\n        if api_method:\n            api_method = api_method.group(1).strip()\n        if not api_method:\n            return ''\n        return api_method.upper()\n\n    def get_comp_doc(self):\n        comp_doc = self.comp_class.__doc__ or ''\n        return comp_doc if isinstance(comp_doc, str) else comp_doc.decode('utf-8')\n\n    def get_comp_doc_md(self):\n        if self.is_comp_doc_md_from_mdfile():\n            return self.get_comp_doc_md_from_mdfile()\n        else:\n            return self.get_comp_doc_md_from_compdoc()\n\n    def get_comp_doc_md_from_compdoc(self):\n        return {\n            'en': self.comp_doc,\n            'zh-hans': self.comp_doc,\n        }\n\n    def is_comp_doc_md_from_mdfile(self):\n        apidoc_en_fpath = self._get_apidoc_fpath(language='en')\n        apidoc_zhhans_fpath = self._get_apidoc_fpath(language='zh_hans')\n        if os.path.isfile(apidoc_en_fpath) or os.path.isfile(apidoc_zhhans_fpath):\n            return True\n        return False\n\n    def get_comp_doc_md_from_mdfile(self):\n        apidoc_en = self._get_apidoc_content(language='en')\n        apidoc_zhhans = self._get_apidoc_content(language='zh_hans')\n        return {\n            'en': smart_unicode(apidoc_en),\n            'zh-hans': smart_unicode(apidoc_zhhans),\n        }\n\n    def _get_apidoc_content(self, language='en'):\n        fpath = self._get_apidoc_fpath(language=language)\n        if os.path.isfile(fpath):\n            try:\n                return read_file(fpath)\n            except Exception:\n                logger.exception('Read file error. fpath=%s', fpath)\n        return ''\n\n    def _get_apidoc_fpath(self, language='en'):\n        component_module_path = import_module(self.comp_class.__module__).__file__\n        return os.path.join(os.path.dirname(component_module_path), 'apidocs', language, '%s.md' % self.component_name)\n\n\nclass ConfapiComponentClient(ComponentClient):\n\n    is_confapi = True\n\n    def __init__(self, channel_conf, comp_codename=None, comp_class=None):\n        self.channel_conf = channel_conf\n        self.component_conf = self.channel_conf['comp_conf']\n        self.confapis_manager = get_confapis_manager()\n        super(ConfapiComponentClient, self).__init__(comp_codename, comp_class)\n\n    def get_component_name(self):\n        return self.component_conf['name']\n\n    def get_component_label(self):\n        return self.component_conf['label']\n\n    def get_component_label_en(self):\n        return self.component_conf.get('label_en', '')\n\n    def get_suggest_method(self):\n        return self.component_conf['suggest_method'].upper()\n\n    def get_api_type(self):\n        return self.component_conf.get('api_type') or self.comp_class.api_type\n\n    def get_comp_doc(self):\n        return ''\n\n    def get_comp_doc_md(self):\n        \"\"\"\n        :return:\n        {\n            'en': '',\n            'zh-hans': '',\n        }\n        \"\"\"\n        system_name = self.get_system_name().lower()\n        component_name = self.get_component_name()\n        return self.confapis_manager.get_apidoc(system_name, component_name)\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/conf_tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nfrom importlib import import_module\n\nfrom common.constants import BK_SYSTEMS\nfrom components.esb_conf import CUSTOM_APIS_REL_PATH\nfrom esb.utils import fpath_to_module, config\nfrom esb.utils.confapis import get_confapis_manager\nfrom esb.management.utils import constants\nfrom .channel_tools import ChannelClient\ntry:\n    from esb.management.utils import ee_constants as x_constants\nexcept Exception:\n    from esb.management.utils import ec_constants as x_constants\n\nimport logging\nlogger = logging.getLogger(__name__)\n\n\nclass ConfClient(object):\n\n    def __init__(self):\n        self.custom_conf_module = self._get_custom_conf_module()\n\n    @property\n    def system_doc_category(self):\n        return self.default_system_doc_category + self.custem_system_doc_category\n\n    @property\n    def systems(self):\n        return self.default_systems + self.custom_systems\n\n    @property\n    def channels(self):\n        all_channels = self.default_channels\n\n        for system_name, system_channels in self.custom_channels.items():\n            all_channels.setdefault(system_name, [])\n            all_channels[system_name].extend(system_channels)\n\n        for system_name, system_channels in self.confapis_channels.items():\n            all_channels.setdefault(system_name, [])\n            all_channels[system_name].extend(system_channels)\n\n        return all_channels\n\n    @property\n    def buffet_components(self):\n        return self.default_buffet_components + self.custom_buffet_components\n\n    @property\n    def default_system_doc_category(self):\n        return getattr(constants, 'SYSTEM_DOC_CATEGORY', [])\n\n    @property\n    def default_systems(self):\n        return list(BK_SYSTEMS.values()) + getattr(x_constants, 'SYSTEMS', [])\n\n    @property\n    def default_channels(self):\n        return self._get_channels_by_config(self._default_channels_conf, is_default=True)\n\n    @property\n    def default_buffet_components(self):\n        return getattr(x_constants, 'BUFFET_COMPONENTS', [])\n\n    @property\n    def custem_system_doc_category(self):\n        return getattr(self.custom_conf_module, 'SYSTEM_DOC_CATEGORY', [])\n\n    @property\n    def custom_systems(self):\n        return getattr(self.custom_conf_module, 'SYSTEMS', [])\n\n    @property\n    def custom_channels(self):\n        return self._get_channels_by_config(self._custom_channels_conf, is_default=False)\n\n    @property\n    def confapis_channels(self):\n        return self._get_channels_by_config(self._confapis_channels_conf, is_default=True)\n\n    @property\n    def custom_buffet_components(self):\n        return getattr(self.custom_conf_module, 'BUFFET_COMPONENTS', [])\n\n    @property\n    def _default_channels_conf(self):\n        \"\"\"\n        :return\n        [\n            ('/cc/get_host/', {'comp_codename': 'generic.cc.get_host'}),\n        ]\n        \"\"\"\n        channels = []\n        channel_groups = config.ESB_CONFIG['config']['channel_groups']\n        for channel_group_conf in list(channel_groups.values()):\n            channels.extend(channel_group_conf['preset_channels'])\n        return channels\n\n    @property\n    def _custom_channels_conf(self):\n        return [\n            (channel['path'], {'comp_codename': channel['comp_codename']}) if isinstance(channel, dict) else channel\n            for channel in getattr(self.custom_conf_module, 'CHANNELS', [])\n        ]\n\n    @property\n    def _confapis_channels_conf(self):\n        confapis_manager = get_confapis_manager()\n        confapis_channels_conf = confapis_manager.get_apis_conf()\n        # check if channel is existed in default channels\n        default_channel_path_list = [channel[0] for channel in self._default_channels_conf]\n        confapi_channel_path_list = []\n        _channels_conf = []\n        for path, value in confapis_channels_conf:\n            channel_key = '%s:%s' % (path, value.get('method', ''))\n            if path in default_channel_path_list:\n                logger.warning('confapi channel [path=%s] exists in esb_conf.py, will be ignored', path)\n                continue\n            if channel_key in confapi_channel_path_list:\n                logger.warning('confapi channel [path=%s] is duplicate, will be ignored', path)\n                continue\n            confapi_channel_path_list.append(channel_key)\n            _channels_conf.append((path, value))\n        return _channels_conf\n\n    def _get_custom_conf_module(self):\n        conf_path = os.path.join(CUSTOM_APIS_REL_PATH, 'conf.py')\n        try:\n            return import_module(fpath_to_module(conf_path))\n        except Exception:\n            return None\n\n    def _get_channels_by_config(self, channels_config, is_default=False):\n        \"\"\"\n        :return:\n        {\n            \"CC\": [\n                {\n                    \"path\": \"/cc/get_host/\",\n                    \"comp_codename\": \"generic.cc.get_host\",\n                    \"comp_conf_to_db\": {},\n                    \"system_name\": \"CC\",\n                    \"component_name\": \"get_host\",\n                    \"component_label\": \"Get host\",\n                    \"component_type\": \"query\",\n                    \"suggest_method\": \"GET\",\n                    \"is_deprecated\": False,\n                    \"is_confapi\": False,\n                }\n            ]\n        }\n        \"\"\"\n        channels = {}\n        for path, value in channels_config:\n            if value.get('is_hidden'):\n                continue\n            if path.startswith('/data/'):\n                continue\n            if path.startswith('/devops/') and is_default:\n                continue\n            try:\n                channel_client = ChannelClient(path, value)\n                api_info = channel_client.get_info()\n            except Exception as ex:\n                error_msg = '%s get api data fail, Exception: %s' % (value['comp_codename'], ex)\n                logger.error(error_msg.encode('utf-8'))\n                continue\n\n            is_standard = channel_client.is_channel_path_standard()\n            if not is_standard and not path.startswith('/devops/'):\n                logger.warning('channel path is not standard and will be ignored, please check: %s, %s' % (\n                    value['comp_codename'], path))\n                continue\n\n            system_name = api_info['system_name']\n            channels.setdefault(system_name, [])\n            channels[system_name].append(api_info)\n        return channels\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nFUNCTION_CONTROLLERS = [\n    {\n        'func_code': 'user_auth::skip_user_auth',\n        'func_name': 'Whether to skip user authentication',\n        'wlist': 'bk_paas_log_alert,bk_cdman,bk_fta_solutions,fta_solutions,gcloud,bk_monitor',\n    }\n]\n\n\nSYSTEM_DOC_CATEGORY = [\n    {\n        'name': 'default',\n        'label': '默认分类',\n        'priority': 1,\n        'systems': []\n    },\n    {\n        'name': 'user_base_service',\n        'label': '基础用户服务',\n        'priority': 10,\n        'systems': ['BK_LOGIN', 'BK_PAAS', 'CMSI']\n    },\n    {\n        'name': 'config_service',\n        'label': '配置管理',\n        'priority': 20,\n        'systems': ['CC']\n    },\n    {\n        'name': 'host_management',\n        'label': '主机管控',\n        'priority': 30,\n        'systems': ['JOB', 'GSE']\n    },\n    {\n        'name': 'management_tools',\n        'label': '管理工具',\n        'priority': 50,\n        'systems': ['SOPS', 'MONITOR']\n    },\n]\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/management/utils/ec_constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nSYSTEMS = [\n\n]\n\n\nBUFFET_COMPONENTS = [\n\n]\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nMiddlewares for ESB\n\"\"\"\nimport time\n\nfrom django.conf import settings\n\nfrom common.django_utils import JsonResponse\nfrom common.base_utils import str_bool, FancyDict\nfrom common.errors import APIError\nfrom esb.response import format_resp_dict\n\nclass DebugHelperMiddleware:\n    def __init__(self, get_response):\n        self.get_response = get_response\n\n    def __call__(self, request):\n        response = self.get_response(request)\n        return response\n\n    def process_request(self, request):\n        if not settings.DEBUG:\n            return\n\n        # 判断是否跳过signature验证\n        request.__esb_skip_signature__ = False\n        # 判断是否跳过组件权限验证\n        request.__esb_skip_comp_perm__ = False\n        if str_bool(request.GET.get('__esb_skip_signature__')):\n            request.__esb_skip_signature__ = True\n\n        if str_bool(request.GET.get('__esb_skip_comp_perm__')):\n            request.__esb_skip_comp_perm__ = True\n\n\nclass APICommonMiddleware:\n    \"\"\"\n    Common middleware for ESB API\n    \"\"\"\n    def __init__(self, get_response):\n        self.get_response = get_response\n\n    def __call__(self, request):\n        # 在这里处理请求前的逻辑\n        response = self.get_response(request)\n        # 在这里处理响应后的逻辑\n        return response\n\n    def process_request(self, request):\n        # 设置一些默认值\n        request.path_vars = None\n        request.comp_path = None\n        request.ts_request_start = time.time()\n\n    def process_exception(self, request, exception):\n        \"\"\"\n        Capture APIError and replace it with user-friendly error response\n        \"\"\"\n        if isinstance(exception, APIError):\n            response = format_resp_dict(exception.code.as_dict())\n            return JsonResponse(response, status=exception.code.status)\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/outgoing.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nAll outgoing requests:\n\"\"\"\nimport json\nimport time\nimport urllib.parse\nimport socket\nfrom urllib.parse import urljoin\n\nimport requests\nfrom requests.exceptions import ReadTimeout, SSLError\nfrom django.utils.encoding import smart_str\nfrom django.utils import timezone\nfrom django.conf import settings\n\nfrom common.base_utils import FancyDict, datetime_format\nfrom common.bkerrors import bk_error_codes\nfrom common.errors import (\n    RequestThirdPartyException, TestHostNotFoundException,\n    request_third_party_error_codes, RequestSSLException)\nfrom common.log import logger, logger_api\nfrom .utils import SmartHost, get_ssl_root_dir\n\n\nREQUEST_TIMEOUT_SECS = settings.REQUEST_TIMEOUT_SECS\nSTATUS_CODE_OK = 200\nRESP_LIMIT_SIZE = 4096\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass RequestsWrapper(object):\n    \"\"\"\n    Wrapper for Requests\n    \"\"\"\n\n    def request(self, *args, **kwargs):\n        response_encoding = kwargs.pop('response_encoding', None)\n        # 设置超时时间\n        timeout = kwargs.get('timeout') or REQUEST_TIMEOUT_SECS\n        # 默认不验证证书的正确性\n        kwargs.update(timeout=timeout, verify=False)\n\n        resp = requests.request(*args, **kwargs)\n\n        # 如果指定了返回内容的编码格式，使用之\n        if response_encoding:\n            resp.encoding = response_encoding\n        return {\n            'text': resp.text,\n            'status_code': resp.status_code,\n            'headers': resp.headers,\n            'reason': resp.reason,\n        }\n\n\ndef get_current_http_wrapper():\n    return RequestsWrapper()\n\n\ndef encode_dict(d, encoding='utf-8'):\n    \"\"\"\n    使用指定的编码来编码给定的字典，否则使用urlencode方法的时候会报编码错误\n\n    :param dict d: 需要转换编码的字典对象\n    :param str encoding: 需要转换的目标编码\n    \"\"\"\n    result = {}\n    for k, v in d.items():\n        if isinstance(v, str):\n            result[k] = v.encode(encoding)\n        else:\n            result[k] = v\n    return result\n\n\nclass BasicHttpClient(object):\n    \"\"\"\n    A very basic HTTP Client\n    \"\"\"\n\n    @property\n    def smart_http_client(self):\n        return get_current_http_wrapper()\n\n    def request(self, *args, **kwargs):\n        \"\"\"\n        直接使用 _request 方法来发送请求\n        \"\"\"\n        return self._request(*args, **kwargs)\n\n    def request_by_url(self, method, url, *args, **kwargs):\n        \"\"\"\n        使用一个完整的 url 来替代 host 和 path 参数\n        \"\"\"\n        parsed_url = urllib.parse.urlparse(url)\n        host = '%s://%s' % (parsed_url.scheme, parsed_url.netloc)\n        return self.request(method, host, parsed_url.path, *args, **kwargs)\n\n    def _request(self, method, host, path, params=None, data=None, cookies=None, headers={},\n                 response_type='json', max_retries=0, response_encoding=None,\n                 request_encoding=None, use_test_env=False, verify=False, cert=None,\n                 timeout=None, allow_non_200=False, files=None):\n        \"\"\"\n        Send a request to given destination\n\n        :param str method: One of \"GET/POST\"\n        :param str host: host, such as \"http://www.qq.com/\"\n        :param str path: request path, like \"/account/login/\"\n        :param str/dict params: params in query string\n        :param str/dict data: data to send in POST request\n        :param str response_type: type of response, can be one of \"json\"\n        :param int max_retries: 最多可以重试的次数，默认为0，不重试\n        :param str response_encoding: 结果内容的编码，默认自动猜测\n        :param str request_encoding: 请求参数编码\n        :param str/bool verify: 是否校验crt\n        :param string/tuple: 传递客户端crt和key\n        :param int timtout: 超时时间\n        :returns: response\n        \"\"\"\n        url = self.make_url(host, path, use_test_env=use_test_env)\n        request_exception = None\n        resp, resp_status_code, resp_text = None, -1, ''\n        result = None\n\n        # 编码请求参数\n        params_to_send, data_to_send = params, data\n        if request_encoding:\n            if isinstance(params, dict):\n                params_to_send = encode_dict(params, encoding=request_encoding)\n            if isinstance(data, dict):\n                data_to_send = encode_dict(data, encoding=request_encoding)\n\n        try:\n            client = self.smart_http_client\n            logger.debug('Starting request to url=%s, params=%s, data=%s, headers=%s',\n                         url, params, data, json.dumps(headers))\n            resp = client.request(\n                method, url, params=params_to_send, data=data_to_send, cookies=cookies,\n                headers=headers, response_encoding=response_encoding,\n                verify=verify, cert=cert, timeout=timeout, files=files)\n            resp_text = resp['text']\n            resp_status_code = resp['status_code']\n\n            logger.debug('Response from url=%s, params=%s, data=%s, response=%s',\n                         url, params, data, resp_text)\n\n            # Check response status\n            if not allow_non_200 and resp_status_code != STATUS_CODE_OK:\n                status_code = 'STATUS_CODE_%s' % resp_status_code\n                raise Exception('Status Code: %s, Error Message: %s' % (\n                    resp_status_code,\n                    request_third_party_error_codes.error_codes.get(\n                        status_code, 'Third-party system interface is abnormal, %s' % resp['reason'])))\n        except Exception as e:\n            logger.exception('%s Error occured when sending request to %s',\n                             bk_error_codes.REQUEST_THIRD_PARTY_ERROR.code, url)\n            if isinstance(e, ReadTimeout):\n                request_exception = ReadTimeout('Third-party system interface response time exceeds %s seconds' % (\n                    timeout or REQUEST_TIMEOUT_SECS))\n            else:\n                request_exception = e\n\n            # 如果请求失败，而且max_retries > 0，尝试重试请求\n            if max_retries > 0:\n                seconds_wait = 1\n                max_retries -= 1\n\n                # 在请求异常发生时，尝试漂移host地址\n                if isinstance(host, SmartHost):\n                    logger.info('Shift request host for %s', url)\n                    host.shift_host(use_test_env=use_test_env)\n\n                logger.info('Will Retry request after %s seconds, remaining retries = %s',\n                            seconds_wait, max_retries)\n                time.sleep(seconds_wait)\n                return self._request(method, host, path, params, data, headers, response_type,\n                                     max_retries, response_encoding, request_encoding,\n                                     use_test_env)\n\n        else:\n            try:\n                result = self.format_resp(resp_text, response_type=response_type)\n            except Exception as e:\n                logger.exception('%s resp_text: %s, response_type: %s',\n                                 bk_error_codes.THIRD_PARTY_RESP_ERROR.code, resp_text, response_type)\n                request_exception = e\n\n        return FancyDict(\n            url=url,\n            resp=resp,\n            resp_status_code=resp_status_code,\n            resp_text=resp_text,\n            result=result,\n            request_exception=request_exception\n        )\n\n    # GET/POST requests\n\n    def get(self, *args, **kwargs):\n        return self.request('GET', *args, **kwargs)\n\n    def post(self, *args, **kwargs):\n        return self.request('POST', *args, **kwargs)\n    \n    def put(self, *args, **kwargs):\n        return self.request('PUT', *args, **kwargs)\n    \n    def delete(self, *args, **kwargs):\n        return self.request('DELETE', *args, **kwargs)\n\n    @staticmethod\n    def make_url(host, path, use_test_env):\n        # Tranform SmartHost object to str type\n        if isinstance(host, SmartHost):\n            # 当访问测试环境时，如果Smarthost并没有用于测试环境下的地址，抛出异常\n            if use_test_env and not host.has_test_host():\n                raise TestHostNotFoundException('Error, the system does not provide test environment')\n\n            host = host.get_value(use_test_env=use_test_env)\n\n        # Add prefix for host if not given, default to http:\n        if not host.startswith('http'):\n            host = '%s://%s' % (settings.HTTP_SCHEMA, host)\n        return urljoin(host, path)\n\n    @staticmethod\n    def format_resp(resp_text, encoding='utf-8', response_type='json'):\n        \"\"\"\n        Format the given response\n        \"\"\"\n        if response_type == 'json':\n            try:\n                return json.loads(resp_text)\n            except Exception:\n                raise ValueError('interface response is not the JSON format')\n\n        return resp_text\n\n\nclass HttpClient(BasicHttpClient):\n    \"\"\"\n    Send outgoing HTTP request\n    \"\"\"\n\n    DEFAULT_HEADERS = [\n        'Blueking-Language',\n        'Blueking-Timezone',\n    ]\n\n    def __init__(self, component):\n        self.component = component\n\n    def get_default_headers(self):\n        try:\n            request_headers = self.component.request.headers\n        except Exception:\n            return {}\n\n        if not isinstance(request_headers, dict):\n            return {}\n\n        return dict([\n            (key, request_headers[key])\n            for key in self.DEFAULT_HEADERS\n            if key in request_headers\n        ])\n\n    def prepare_bk_header(self, headers={}):\n        if self.component.request:\n            from .exdb.bkpaas import AppSecureInfo\n            app_token = \"\"\n            app_code = str(self.component.sys_name).lower()\n            try:\n                app_info = AppSecureInfo.get_by_app_code(app_code)\n                if app_info:\n                    app_token_list = app_info.get(\"secure_key_list\", [])\n                    if app_token_list:\n                        app_token = app_token_list[0]\n            except Exception as e:\n                print(\"prepare_bk_header_error\", str(e))\n            bkapi_headers = {\n                'X-Bkapi-Request-Id': self.component.request.request_id,\n                'X-APP-CODE': app_code,\n                'X-APP-TOKEN': app_token,\n            }\n        else:\n            bkapi_headers = {}\n\n        request_headers = {}\n        request_headers.update(self.get_default_headers())\n        request_headers.update(bkapi_headers)\n        request_headers.update(headers)\n        return request_headers\n\n    def request(self, method, host, path, params=None, data=None, cookies=None, headers={}, response_type='json',\n                max_retries=0, response_encoding=None, request_encoding=None, verify=False, cert=None,\n                timeout=None, allow_non_200=False, files=None):\n        \"\"\"Send a request to given destination\n        \"\"\"\n        datetime_start = timezone.now()\n        # 判断component是否被request初始化过，如果没有，默认访问正式环境，而且request_id为None\n        if self.component.request:\n            app_code = self.component.request.app_code\n            use_test_env = self.component.request.use_test_env\n            request_id = self.component.request.request_id\n            # 超时时长\n            timeout_time = self.component.request.timeout\n        else:\n            app_code = ''\n            use_test_env = False\n            request_id = None\n            timeout_time = None\n\n        system_name = self.component.sys_name\n        component_name = self.component.get_alias_name()\n\n        # 处理超时时间\n        if not timeout:\n            timeout = timeout_time if timeout_time else REQUEST_TIMEOUT_SECS\n\n        req_headers = self.prepare_bk_header(headers)\n\n        # 调用BasicHttpClient.request来发送请求\n        r = self._request(\n            method, host, path, params, data, cookies, req_headers, response_type, max_retries,\n            response_encoding, request_encoding, use_test_env=use_test_env,\n            verify=verify, cert=cert, timeout=timeout, allow_non_200=allow_non_200,\n            files=files,\n        )\n\n        if r.resp_status_code == 200 and not r.request_exception:\n            response_to_log = r.resp_text[:RESP_LIMIT_SIZE]\n        else:\n            response_to_log = r.resp_text\n        params = params or data\n        if not isinstance(params, str):\n            params = json.dumps(params)\n        datetime_end = timezone.now()\n        msecs_cost = (datetime_end - datetime_start).total_seconds() * 1000\n        exception_name = smart_str(r.request_exception) if r.request_exception else None\n\n        try:\n            api_log = {\n                'message': 'Request outgoing finished, method=%s url=%s' % (method, r.url),\n                'type': 'pyls-comp-api',\n                'request_id': request_id,\n                'req_app_code': app_code,\n                'req_system_name': system_name,\n                'req_component_name': component_name,\n                'req_url': r.url,\n                'req_params': params,\n                'req_status': r.resp_status_code if r.resp else -1,\n                'req_response': response_to_log,\n                'req_exception': exception_name,\n                'req_msecs_cost': int(msecs_cost),\n                'req_start_time': datetime_format(datetime_start),\n                'req_end_time': datetime_format(datetime_end),\n            }\n            # 添加访问记录\n            logger_api.info(json.dumps(api_log))\n        except Exception as e:\n            logger.warning('logger api exception: %s' % e)\n\n        # 为了记录这一次请求的api log，延迟抛出异常\n        # UPDATE: xx系统xx接口出错,状态码: xx,错误消息:xx\n        if r.request_exception:\n            if isinstance(r.request_exception, SSLError):\n                r.request_exception.cert = cert\n                r.request_exception.SSL_ROOT_DIR = get_ssl_root_dir()\n                logger.error('%s request third party SSLError, system_name: %s, ssl_root_dir: %s',\n                             bk_error_codes.REQUEST_SSL_ERROR.code, system_name, r.request_exception.SSL_ROOT_DIR)\n                raise RequestSSLException(\n                    r.request_exception,\n                    system_name=system_name,\n                    interface_name=component_name\n                )\n            else:\n                raise RequestThirdPartyException(\n                    r.request_exception,\n                    system_name=system_name,\n                    interface_name=component_name\n                )\n        return r.result\n\n    def request_by_url(self, method, url, *args, **kwargs):\n        \"\"\"\n        使用一个完整的 url 来替代 host 和 path 参数\n        \"\"\"\n        parsed_url = urllib.parse.urlparse(url)\n        host = '%s://%s' % (parsed_url.scheme, parsed_url.netloc)\n        path = '%s?%s' % (parsed_url.path, parsed_url.query) if parsed_url.query else parsed_url.path\n        return self.request(method, host, path, *args, **kwargs)\n\n\nclass RequestHelperClient(BasicHttpClient):\n    \"\"\"Send outgoing request helper, Add Log\"\"\"\n\n    def __init__(self, component):\n        self.component = component\n\n    def request(self, handler, action='', args=[], kwargs={}, timeout=None, api_name='', is_response_parse=True):  # noqa\n        datetime_start = timezone.now()\n        # 判断component是否被request初始化过，如果没有，默认为访问正式环境，\n        # 而且request_id为None\n        if self.component and self.component.request:\n            app_code = self.component.request.app_code\n            timeout_time = self.component.request.timeout\n            request_id = self.component.request.request_id\n        else:\n            app_code = None\n            timeout_time = None\n            request_id = None\n\n        if self.component:\n            system_name = self.component.sys_name\n            component_name = api_name or self.component.get_alias_name()\n        else:\n            system_name = ''\n            component_name = ''\n\n        # 获取组件的超时时间\n        # 如果请求的接口中指定了超时时间，则以传递的timeout为准\n        if not timeout:\n            timeout = timeout_time if timeout_time else REQUEST_TIMEOUT_SECS\n\n        # 发送请求\n        request_url = ''\n        request_exception = None\n        request_params = {'action': action, 'args': args, 'kwargs': kwargs}\n        resp_text = ''\n        resp_status_code = -1\n        result = None\n        try:\n            if action:\n                resp = getattr(handler, action)(*args, **kwargs)\n            else:\n                resp = handler(*args, **kwargs)\n        except Exception as e:\n            logger.exception('%s error occured when request sys_name: %s, component_name: %s',\n                             bk_error_codes.REQUEST_THIRD_PARTY_ERROR.code, system_name, component_name)\n            # for SOAPTimeoutError\n            if isinstance(e, socket.timeout):\n                request_exception = ReadTimeout('Third-party system interface response timeout, '\n                                                'did not return data in %s seconds' % timeout)\n            else:\n                request_exception = e\n        else:\n            if is_response_parse:\n                request_url = resp.get('request_url', '')\n                request_exception = resp.get('request_exception', None)\n                request_params = resp.get('request_params') if hasattr(resp, 'request_params') else request_params\n                resp_text = resp.get('resp_text', '')\n                resp_status_code = resp.get('resp_status_code', -1)\n                result = resp.get('result')\n            else:\n                resp_status_code = 200\n                if isinstance(resp, str):\n                    resp_text = resp\n                else:\n                    try:\n                        resp_text = json.dumps(resp)\n                    except Exception:\n                        resp_text = str(resp)\n\n                result = resp\n\n        # 限制写入日志的response大小不超过一定大小\n        if resp_status_code == 200 and not request_exception:\n            response_to_log = resp_text[:RESP_LIMIT_SIZE]\n        else:\n            response_to_log = resp_text\n        if not isinstance(request_params, str):\n            try:\n                request_params = json.dumps(request_params)\n            except Exception:\n                request_params = str(request_params)\n        datetime_end = timezone.now()\n        msecs_cost = (datetime_end - datetime_start).total_seconds() * 1000\n        exception_name = smart_str(request_exception) if request_exception else None\n\n        # Log to logstash, Use type=\"pyls-comp-api\"\n        try:\n            api_log = {\n                'message': 'Request outgoing finished, method=%s url=%s' % ('POST', request_url),\n                'type': 'pyls-comp-api',\n                'request_id': request_id,\n                'req_app_code': app_code,\n                'req_system_name': system_name,\n                'req_component_name': component_name,\n                'req_params': request_params,\n                'req_status': resp_status_code,\n                'req_response': response_to_log,\n                'req_exception': exception_name,\n                'req_msecs_cost': int(msecs_cost),\n                'req_start_time': datetime_format(datetime_start),\n                'req_end_time': datetime_format(datetime_end),\n            }\n            # 添加访问记录\n            logger_api.info(json.dumps(api_log))\n        except Exception as e:\n            logger.warning('logger api exception: %s' % e)\n\n        # 为了记录这一次请求的api log，延迟抛出异常\n        # UPDATE: xx系统xx接口出错,状态码: xx,错误消息:xx\n        if request_exception:\n            raise RequestThirdPartyException(\n                request_exception,\n                system_name=system_name,\n                interface_name=component_name,\n            )\n        return result\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/ratelimit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/ratelimit/validators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport copy\n\nfrom django.conf import settings\n\nfrom lib.redis_rate_limit.ratelimit import RateLimiter\nfrom common.base_validators import BaseValidator\nfrom common.base_redis import redisdb\nfrom common.errors import error_codes\nfrom common.log import logger\n\n\nRATE_LIMIT_KEY_NAMESPACE = settings.RATE_LIMIT_KEY_NAMESPACE\n\n\nclass ApiRateLimitValidator(BaseValidator):\n\n    def validate(self, request):\n        app_code = request.app_code\n        comp_path = request.comp_path\n        channel_conf = request.channel_conf\n\n        if not (channel_conf.get('rate_limit_required') and\n                channel_conf.get('rate_limit_conf') and\n                channel_conf.get('id') is not None):\n            return\n\n        identifier = 'api::{app_code}::{component_id}'.format(\n            app_code=app_code, component_id=channel_conf['id'])\n        limiter = RateLimiter(redisdb, identifier, namespace=RATE_LIMIT_KEY_NAMESPACE)\n\n        app_rate_limit_conf = self.get_app_rate_limit_conf(app_code, channel_conf['rate_limit_conf'])\n        rate_limit_message = []\n        for conf in app_rate_limit_conf:\n            conf = copy.deepcopy(conf)\n            tokens = int(conf.pop('tokens'))\n            limiter.add_rule(tokens, conf)\n            rate_limit_message.extend(['%s/%s%s' % (tokens, val, key) for key, val in conf.items()])\n\n        try:\n            result = limiter.acquire()\n        except Exception:\n            logger.exception('An exception occurred while getting rate_limit token')\n            return\n\n        if not result['allowed']:\n            raise error_codes.RATE_LIMIT_RESTRICTION.format_prompt(\n                'Access frequency of APP [%s] to component [%s] exceeds the limit; the frequency limit is [%s], '\n                'please try again later' % (app_code, comp_path, ';'.join(rate_limit_message)))\n\n    def get_app_rate_limit_conf(self, app_code, rate_limit_conf):\n        app_ratelimit = rate_limit_conf['app_ratelimit']\n        return app_ratelimit.get(app_code) or app_ratelimit.get('__default', [])\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/response.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nclass CompResponse(object):\n    \"\"\"\n    Response class for Component\n    \"\"\"\n\n    def __init__(self):\n        self.payload = {}\n        self.headers = {}\n\n    def get_payload(self):\n        return self.payload\n\n\ndef format_resp_dict(resp_data):\n    \"\"\"\n    根据给定的数据生成一个标准的HttpResponse数据\n    \"\"\"\n    resp_data.setdefault('result', False)\n    resp_data.setdefault('data', None)\n    resp_data.setdefault('message', '')\n    resp_data.setdefault('code', 0 if resp_data['result'] else 1306000)\n    return resp_data\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/routers.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport functools\n\nfrom django.conf import settings\nfrom django.http import Http404\n\nfrom common.errors import error_codes\nfrom common.constants import API_TYPE_OP\nfrom esb.channel import get_channel_manager\nfrom esb.channel.confapis import get_confapis_channel_manager\nfrom esb.component import get_components_manager\nfrom esb.component.buffet import get_buffet_comp_manager\n\ntry:\n    from components.component import ApiChannelForAPIS, ESBApiChannelForAPIS, FTAApiChannelForAPIS\nexcept:\n    pass\n\n\n# 把当前目录切换到项目目录，因为后面用到的路径都是相对路径\ntry:\n    os.chdir(settings.BASE_DIR)\nexcept Exception:\n    pass\n\n\ndef router_view(channel_type, request, path):\n    components_manager = get_components_manager()\n    channel_manager = get_channel_manager()\n\n    # Get ESBChannel by path\n    path = '/%s/' % path.strip('/')\n    path = channel_manager.get_rewrite_path_by_path(path) or path\n    request.comp_path = path\n\n    channel_conf = get_channel_conf(path, request)\n    esb_channel = channel_conf['channel']\n    # Check if channel is active\n    if not esb_channel.is_active:\n        raise error_codes.INACTIVE_CHANNEL\n\n    # Check if channel's component class exists\n    comp_cls = components_manager.get_comp_by_name(esb_channel.component_codename)\n    if not comp_cls:\n        raise error_codes.COMPONENT_NOT_FOUND.format_prompt(esb_channel.component_codename)\n\n    # Dynamic contribute channel object\n    channel_class = channel_conf['classes'][channel_type]\n    channel_obj = eval(channel_class)(\n        comp_cls, path=path, is_active=True,\n        comp_conf=channel_conf.get('comp_conf'),\n        channel_conf=channel_conf.get('channel_conf', {}),\n    )\n\n    # 判断该channel是否拥有自定义的validators\n    if getattr(esb_channel, 'request_validators', None) is not None:\n        channel_obj.set_request_validators(esb_channel.request_validators)\n    if getattr(esb_channel, 'append_request_validators', None) is not None:\n        channel_obj.append_request_validators(esb_channel.append_request_validators)\n\n    # 超时时间处理\n    try:\n        timeout_time = timeout_handler(esb_channel, comp_cls)\n    except Exception:\n        timeout_time = settings.REQUEST_TIMEOUT_SECS\n    # 针对本次请求存储timeout和系统名\n    # 系统名用于访问频率控制\n    request.timeout = timeout_time\n    request.sys_name = comp_cls.sys_name\n    return channel_obj.handle_request(request)\n\n\ndef get_channel_conf(path, request):\n    channel_manager = get_channel_manager()\n\n    # path_vars为路径匹配过程中路径变量，通过正则定义\n    channel_conf = channel_manager.get_channel_by_path(path, request.method)\n    if channel_conf:\n        return channel_conf\n\n    # 添加可变参数的正则匹配\n    channel_conf, path_vars = channel_manager.search_channel_by_repath(path, request.method)\n    if channel_conf:\n        request.path_vars = path_vars\n        return channel_conf\n\n    # 检查 confapis 中，官方第三方系统定义的API\n    confapis_channel_manager = get_confapis_channel_manager()\n    channel_conf = confapis_channel_manager.get_channel_by_path(path, request.method)\n    if channel_conf:\n        return channel_conf\n\n    # 添加可变参数的正则匹配\n    channel_conf, path_vars = confapis_channel_manager.search_channel_by_repath(path, request.method)\n    if channel_conf:\n        request.path_vars = path_vars\n        return channel_conf\n\n    raise Http404\n\n\ndef timeout_handler(esb_channel, comp_cls):\n    # 保存超时时间，API类型以文件中标识为准，如果文件中不存在，则以数据库为准\n    timeout_time = esb_channel.timeout_time\n    execute_timeout = esb_channel.component_system.execute_timeout\n    query_timeout = esb_channel.component_system.query_timeout\n    # 获取系统级别的超时时间\n    if not timeout_time:\n        if comp_cls.api_type != 'unknown':\n            timeout_time = execute_timeout if comp_cls.api_type == API_TYPE_OP else query_timeout\n        else:\n            timeout_time = execute_timeout if esb_channel.type == 1 else query_timeout\n    return timeout_time\n\n\napi_router_view = functools.partial(router_view, 'api')\n\n\ndef buffet_component_view(request, path):\n    \"\"\"\n    处理自助接入组件的View\n    \"\"\"\n    from esb.component.buffet import make_buffet_component_class\n\n    channel_manager = get_channel_manager()\n    buffet_comp_manager = get_buffet_comp_manager()\n\n    path = '/%s/' % path.strip('/')\n    request.comp_path = path\n\n    buffet_comp_conf, path_vars = buffet_comp_manager.search_buffet_component(path, request.method)\n    if not buffet_comp_conf:\n        raise Http404\n\n    buffet_comp_obj = buffet_comp_conf['obj']\n    request.path_vars = path_vars\n\n    # 动态生成一个component class\n    comp_cls = make_buffet_component_class(buffet_comp_obj)\n    if not comp_cls:\n        raise error_codes.COMPONENT_NOT_FOUND\n\n    channel_class = channel_manager.get_default_channel_classes()['api']\n    channel_obj = channel_class(comp_cls, path=path, is_active=True)\n\n    # 针对本次请求存储\n    try:\n        timeout_time = timeout_handler_for_buffet(buffet_comp_obj)\n    except Exception:\n        timeout_time = settings.REQUEST_TIMEOUT_SECS\n    request.timeout = timeout_time\n\n    return channel_obj.handle_request(request)\n\n\ndef timeout_handler_for_buffet(comp_obj):\n    \"\"\"针对自助接入接口的超时时间\"\"\"\n    timeout_time = comp_obj.timeout_time\n    if not timeout_time:\n        if comp_obj.type == 2:\n            timeout_time = comp_obj.system.query_timeout\n        else:\n            timeout_time = comp_obj.system.execute_timeout\n    return timeout_time\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/utils/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom .base import *  # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/utils/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nUtils for ESB\n\"\"\"\nimport re\nimport os\n\nfrom django.conf import settings\n\n\n__all__ = ['is_py_file', 'fpath_to_module', 'SmartHost', 'get_ssl_root_dir']\n\n\ndef is_py_file(fname):\n    return fname.endswith('.py') or fname.endswith('.pyc')\n\n\ndef fpath_to_module(fpath):\n    \"\"\"Transform a filepath to a module string\n    \"\"\"\n    prefix = settings.BASE_DIR\n    fpath = os.path.normpath(fpath)\n    if fpath.startswith(prefix):\n        fpath = fpath[len(prefix):]\n    # 去掉目录前的斜杠\n    fpath = fpath.lstrip(os.path.sep)\n    return fpath.replace(os.path.sep, '.').rsplit('.', 1)[0]\n\n\nclass SmartHost(object):\n    \"\"\"A smart host object\n\n    当对外请求向这个SmartHost发送时，系统会根据当前访问的component对象状态（如\n    是否访问测试环境等）来判断请求应该具体被解析到的主机地址。\n    \"\"\"\n\n    def __init__(self, host_prod, host_test=None):\n        self.hosts_prod = self.make_host_list(host_prod)\n        if host_test:\n            self.hosts_test = self.make_host_list(host_test)\n            self._has_test_host = True\n        else:\n            self.hosts_test = self.hosts_prod\n            self._has_test_host = False\n\n        self.host_index = {\n            'prod': 0,\n            'test': 0,\n        }\n\n    @staticmethod\n    def make_host_list(host):\n        if isinstance(host, (list, tuple)):\n            return host\n        else:\n            return host.split(';')\n\n    def get_value(self, use_test_env):\n        \"\"\"根据环境获取需要访问host\n        \"\"\"\n        key = 'test' if use_test_env else 'prod'\n        hosts = self.hosts_test if use_test_env else self.hosts_prod\n        return hosts[self.host_index[key] % len(hosts)]\n\n    def shift_host(self, use_test_env):\n        \"\"\"切换下一次使用的主机\n        \"\"\"\n        key = 'test' if use_test_env else 'prod'\n        self.host_index[key] += 1\n\n    def has_test_host(self):\n        \"\"\"是否拥有用于测试环境的主机地址\n        \"\"\"\n        return self._has_test_host\n\n    def as_json(self):\n        \"\"\"获取json格式数据\n        \"\"\"\n        host = {'host_prod': ';'.join(self.hosts_prod)}\n        if self.has_test_host():\n            host['host_test'] = ';'.join(self.hosts_test)\n        return host\n\n    def __str__(self):\n        return '<SmartHost hosts_test=%s hosts_prod=%s>' % (self.hosts_test, self.hosts_prod)\n\n\nclass PathVars(object):\n    \"\"\"组件路径匹配中的变量\"\"\"\n\n    def __init__(self, val_dict=None, val_list=None):\n        self.val_dict = val_dict or {}\n        self.val_list = val_list or list(self.val_dict.values())\n\n    @classmethod\n    def from_matched_obj(cls, matched_obj):\n        \"\"\"从一次正则匹配结果生成一个PathVars对象\n\n        :param matched_obj: 一次正则匹配结果对象\n        \"\"\"\n        return cls(val_dict=matched_obj.groupdict(), val_list=matched_obj.groups())\n\n    def __str__(self):\n        return 'val_dict=%s val_list=%s' % (self.val_dict, self.val_list)\n\n\nRE_PATH_VARIABLE = re.compile(r'\\{([A-Za-z0-9_-]+)\\}')\n\n\ndef preprocess_path_tmpl(path):\n    \"\"\"预处理形如\"/users/{username}\"的可变路径模板\n    \"\"\"\n    return RE_PATH_VARIABLE.sub(r'(?P<\\1>[^/]+)', path)\n\n\ndef has_path_vars(path):\n    \"\"\"判断路径中是否有路径变量\"\"\"\n    return RE_PATH_VARIABLE.search(path)\n\n\ndef get_ssl_root_dir():\n    return os.path.abspath(\n        getattr(settings, 'SSL_ROOT_DIR', '') or settings.DEFAULT_SSL_ROOT_DIR\n    )\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/utils/confapis.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport json\n\nfrom django.conf import settings\n\nfrom common.base_utils import load_yaml, read_file, smart_unicode\nfrom common.log import logger\n\n\nclass ConfigForm(object):\n\n    fields = {\n        'path': {'required': True},\n        'name': {'required': True},\n        'label': {'required': True},\n        'label_en': {'required': False},\n        'api_type': {'required': False, 'choices': ['query', 'operate']},\n        'suggest_method': {'required': False, 'choices': ['GET', 'POST']},\n        'method': {'required': False, 'choices': ['GET', 'POST', 'PUT', 'DELETE', 'PATCH']},\n        'comp_codename': {'required': True},\n        'dest_path': {'required': True},\n        'dest_http_method': {'required': True, 'choices': ['GET', 'POST', 'PUT', 'DELETE', 'PATCH']},\n        'extra_param_fields': {'required': False},\n        'dest_host_group': {'required': False},\n        'is_hidden': {'required': False},\n    }\n\n    @classmethod\n    def clean(cls, data):\n        for field, conf in list(ConfigForm.fields.items()):\n            value = data.get(field)\n            if conf.get('required') and not value:\n                raise Exception('param %s is required' % field)\n            if conf.get('choices') and value and value not in conf['choices']:\n                raise Exception('param %s select a valid choice, %s is not available' % (field, value))\n\n        comp_conf_keys = [\n            'dest_path', 'dest_http_method', 'api_type', 'name', 'label', 'label_en',\n            'suggest_method', 'extra_param_fields', 'dest_host_group',\n        ]\n        comp_conf = cls.get_cleaned_data_when_exist(data, keys=comp_conf_keys)\n        path = '/%s/' % data['path'].strip('/')\n        cleaned_data = {\n            'path': path,\n            'config': {\n                'is_confapi': True,\n                'is_hidden': data.get('is_hidden', False),\n                'comp_codename': data['comp_codename'],\n                'comp_conf': comp_conf,\n                'comp_conf_to_db': comp_conf,\n            }\n        }\n        if 'method' in data:\n            cleaned_data['config']['method'] = data['method']\n            cleaned_data['config']['comp_conf']['suggest_method'] = data['method']\n            cleaned_data['config']['comp_conf_to_db']['suggest_method'] = data['method']\n\n        return cleaned_data\n\n    @classmethod\n    def get_cleaned_data_when_exist(cls, data, keys=[]):\n        return dict([\n            (key, data[key])\n            for key in keys\n            if key in data\n        ])\n\n\nclass ConfapisManager(object):\n\n    def __init__(self):\n        self.base_dir = self._get_base_dir()\n        self.apis_conf = {}\n\n    def get_apis_conf(self):\n        \"\"\"\n        :return:\n        [\n            ('/cc/get_host/', {'comp_codename': 'generic.cc.get_host'}),\n        ]\n        \"\"\"\n        conf = []\n        list(map(conf.extend, list(self.apis_conf.values())))\n        return conf\n\n    def reloadall(self):\n        for system_name in os.listdir(self.base_dir):\n            self.reload(system_name)\n\n    def reload(self, system_name):\n        \"\"\"\n        Priority loading environment config file, such as cc-dev.yaml in dev environment;\n        \"\"\"\n        default_system_apis_conf = self._get_system_config(system_name)\n\n        # RUN_MODE: optional value: dev, test, prod\n        env = os.getenv('RUN_MODE')\n        if env:\n            env_system_apis_conf = self._get_system_config(system_name, env)\n        else:\n            env_system_apis_conf = []\n\n        if not env_system_apis_conf:\n            self.apis_conf[system_name] = default_system_apis_conf\n            return\n\n        system_apis_conf = env_system_apis_conf\n        env_exist_apis_conf = dict([(_path, '') for _path, _ in env_system_apis_conf])\n        for _path, _config in default_system_apis_conf:\n            # only check 1 times, to check duplicate in the next\n            if _path in env_exist_apis_conf:\n                env_exist_apis_conf.pop(_path)\n                continue\n            system_apis_conf.append((_path, _config))\n\n        self.apis_conf[system_name] = system_apis_conf\n\n    def get_apidoc(self, system_name, component_name):\n        apidoc_en = self._get_apidoc_content(system_name, component_name, language='en')\n        apidoc_zhhans = self._get_apidoc_content(system_name, component_name, language='zh_hans')\n        return {\n            'en': smart_unicode(apidoc_en),\n            'zh-hans': smart_unicode(apidoc_zhhans),\n        }\n\n    def _get_system_config(self, system_name, env=''):\n        system_base_dir = os.path.join(self.base_dir, system_name, env or '')\n        if not os.path.exists(system_base_dir):\n            return []\n\n        system_config = []\n        for yaml_config in os.listdir(system_base_dir):\n            if not yaml_config.endswith('.yaml'):\n                continue\n            config_path = os.path.join(system_base_dir, yaml_config)\n            config = self._get_config(config_path)\n            for _config in config:\n                try:\n                    _config = ConfigForm.clean(_config)\n                except Exception:\n                    logger.exception('Confapis clean data error. config: %s', json.dumps(_config))\n                    continue\n                system_config.append((_config['path'], _config['config']))\n        return system_config\n\n    def _get_config(self, config_path):\n        \"\"\"Get and Check yaml content\"\"\"\n        try:\n            config = load_yaml(config_path) or []\n        except Exception:\n            logger.exception('Load confapis yaml config fail. config_path: %s', config_path)\n            return []\n        if not isinstance(config, (tuple, list)):\n            logger.error('Confapis yaml config error, it should be a list. config_path: %s', config_path)\n            return []\n        return config\n\n    def _get_apidoc_content(self, system_name, component_name, language='en'):\n        fpath = self._get_apidoc_fpath(system_name, component_name, language=language)\n        if os.path.isfile(fpath):\n            try:\n                return read_file(fpath)\n            except Exception:\n                logger.exception('Read file error. fpath=%s', fpath)\n        return ''\n\n    def _get_apidoc_fpath(self, system_name, component_name, language='en'):\n        return os.path.join(self.base_dir, system_name.lower(), 'apidocs', language, '%s.md' % component_name)\n\n    def _get_base_dir(self):\n        return os.path.join(settings.BASE_DIR, 'components/confapis')\n\n\n_confapis_manager = None\n\n\ndef get_confapis_manager():\n    global _confapis_manager\n    if not _confapis_manager:\n        _confapis_manager = ConfapisManager()\n        _confapis_manager.reloadall()\n    return _confapis_manager\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/utils/config.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom importlib import import_module\n\nfrom django.conf import settings\n\n\n# 保存目前运行的components的配置\nESB_CONFIG = None\n\n\ndef load_config(*args, **kwargs):\n    \"\"\"加载config\n    \"\"\"\n    global ESB_CONFIG\n\n    config = real_load_config(*args, **kwargs)\n\n    ESB_CONFIG = config\n    return config\n\n\ndef real_load_config():\n    \"\"\"Load config dict by run_version\n    \"\"\"\n    # 直接从配置文件中加载config\n    from datetime import datetime\n    module_name, config_name = settings.ESB_SITE_ESB_CONF.rsplit('.', 1)\n\n\n    config = getattr(import_module(module_name), config_name, None)\n    return config\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/utils/func_ctrl.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport re\nimport json\n\nfrom esb.bkcore.models import FunctionController\n\n\nclass FunctionControllerClient(object):\n    \"\"\"功能控制器\"\"\"\n\n    @classmethod\n    def _get_func_ctrl_by_code(cls, func_code, data_type='list'):\n        \"\"\"根据功能标识获取对应数据\n\n        :param str data_type: list，将字符串按照逗号、分号分隔转换为列表；json，将字符串json.loads\n        \"\"\"\n        func_ctrl = FunctionController.objects.filter(func_code=func_code).first()\n        if func_ctrl:\n            if data_type == 'list':\n                return func_ctrl.switch_status, re.findall(r'[^,;]+', func_ctrl.wlist or '')\n            elif data_type == 'json':\n                return func_ctrl.switch_status, json.loads(func_ctrl.wlist)\n            else:\n                return func_ctrl.switch_status, func_ctrl.wlist\n        else:\n            return None, None\n\n    @classmethod\n    def is_skip_user_auth(cls, app_code):\n        \"\"\"判定APP是否可跳过用户认证，如果功能开放，且APP在白名单内，则可跳过\"\"\"\n        switch_status, wlist = FunctionControllerClient._get_func_ctrl_by_code('user_auth::skip_user_auth')\n        if switch_status and app_code in wlist:\n            return True\n        else:\n            return False\n"
  },
  {
    "path": "paas-ce/paas/esb/esb/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.http import JsonResponse\n\ndef handler_404_view(request, exception):\n    resp = JsonResponse({\n        'result': False,\n        'data': None,\n        'message': 'The content does not exist',\n    }, status=404)\n    return resp\n\ndef handler_500_view(request):\n    resp = JsonResponse({\n        'result': False,\n        'data': None,\n        'message': 'Request is abnormal, please contact the component developer',\n    }, status=500)\n    return resp\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/checklist.txt",
    "content": "## ESB 健康检查 checklist\n\n### 检查 settings 配置\n1. 以下配置必须存在\n    ESB_TOKEN, PAAS_HOST, HOST_BK_LOGIN\n    HOST_CC, HOST_FTA\n\n\n### 检查 DB 服务是否正常，且以下库表已经创建\n    esb_component_system\n    esb_channel\n    esb_function_controller\n    esb_buffet_component\n\n\n### 检查 ESB 访问的后端接口是否正常，主要检查以下系统\n    BK_LOGIN\n    CC\n    FTA\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/errors.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nclass CheckException(Exception):\n\n    def __init__(self, message):\n        self.message = message\n\n    def __str__(self):\n        return self.message.encode('utf-8') if isinstance(self.message, str) else self.message\n\n    def get_message(self):\n        return self.message\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.urls import path\n\nfrom healthz import views, views_check_codename\n\nurlpatterns = [\n    path('', views.healthz),\n    path('check_custom_codename/', views_check_codename.check_custom_codename),\n]\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\ndef ok_resp(code='1306000', message='OK', data={}):\n    return {\n        'ok': True,\n        'code': code,\n        'message': message,\n        'data': data,\n    }\n\n\ndef failed_resp(code='1306000', message='error', data={}):\n    return {\n        'ok': False,\n        'code': code,\n        'message': message,\n        'data': data,\n    }\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.conf import settings\nfrom django.http import JsonResponse\n\nfrom .errors import CheckException\nfrom .utils import ok_resp, failed_resp\n\n\ndef healthz(request):\n    \"\"\"\n    health check\n    \"\"\"\n    try:\n        check_settings()\n        check_db()\n        check_third_api()\n    except CheckException as e:\n        return JsonResponse(failed_resp(message=e.get_message()))\n    except Exception as e:\n        return JsonResponse(failed_resp(message='ESB 服务检查异常：%s' % e))\n    return JsonResponse(ok_resp(message='OK'))\n\n\ndef check_settings():\n    \"\"\"检查 settings 配置\"\"\"\n    # 不能为空\n    no_empty_settings_key = [\n        'ESB_TOKEN', 'PAAS_HOST', 'HOST_BK_LOGIN',\n        'HOST_CC', 'HOST_FTA',\n    ]\n    for key in no_empty_settings_key:\n        if not getattr(settings, key, ''):\n            raise CheckException('settings 配置中 %s 不能为空' % key)\n\n\ndef check_db():\n    \"\"\"检查 DB\"\"\"\n    try:\n        from esb.bkcore.models import ComponentSystem\n        systems = ComponentSystem.objects.all()\n        system_names = [system.name for system in systems]\n    except Exception as ex:\n        raise CheckException('数据库连接出现异常：%s' % ex)\n\n    if not system_names:\n        raise CheckException('组件系统及通道数据未初始化，请执行 \"python manage.py sync_system_and_channel_data\" 进行初始化')\n\n\ndef check_redis():\n    try:\n        import redis\n        from common.base_redis import get_redis_pool, redis_config, redis_sentinel_config\n        client = redis.Redis(connection_pool=get_redis_pool(redis_config, redis_sentinel_config))\n\n        client.ping()\n\n        key = 'esb_redis_check'\n        client.set(key, 'esb')\n        client.expire(key, 60)\n        client.get(key)\n    except Exception as ex:\n        raise CheckException('Redis [%s:%s] [use_sentinel=%s] 连接出现异常：%s' % (\n            settings.REDIS_HOST, settings.REDIS_PORT, getattr(settings, 'USE_SENTINEL', False), ex))\n\n\ndef check_third_api():\n    \"\"\"检查第三方系统API\"\"\"\n    check_bk_login_api()\n    check_cc_api()\n    check_fta_api()\n\n\ndef check_bk_login_api():\n    try:\n        from components.bk.apis.bk_login.get_all_user import GetAllUser\n        result = GetAllUser().invoke({'role': 1})\n        if not result['result']:\n            raise Exception(result['message'])\n    except Exception as ex:\n        raise CheckException('系统 BK_LOGIN 接口访问异常：%s' % ex)\n\n\ndef check_cc_api():\n    try:\n        from components.bk.apis.cc.get_set_property import GetSetProperty\n        result = GetSetProperty().invoke()\n        if not result['result']:\n            raise Exception(result['message'])\n    except Exception as ex:\n        raise CheckException('系统 CC 接口访问异常：%s' % ex)\n\n\ndef check_fta_api():\n    try:\n        from components.bk.apis.fta.fta_component import FtaComponent\n        from esb.component.base import CompRequest\n        comp = FtaComponent()\n        comp.set_request(CompRequest(headers={}, input={}))\n        comp.setup_conf({\n            'dest_path': '/event/api/1/',\n            'dest_http_method': 'POST',\n        })\n        comp.invoke()\n    except Exception as ex:\n        raise CheckException('系统 FTA 接口访问异常：%s' % ex)\n"
  },
  {
    "path": "paas-ce/paas/esb/healthz/views_check_codename.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\n# import traceback\nfrom importlib import import_module\n\nfrom django.http import HttpResponse\n\nfrom common.base_utils import smart_upper\nfrom components.esb_conf import _rel_path, CUSTOM_APIS_REL_PATH\nfrom esb.utils import fpath_to_module\nfrom esb.component.base import ComponentsManager\n\n\ndef check_custom_codename(request):\n    \"\"\"check custom component codename\"\"\"\n    component_codename = request.GET.get('codename')\n    component_manager = ComponentsManager()\n\n    file_import_error = {}\n    # custom component config\n    comp_config = {\n        'path': _rel_path(CUSTOM_APIS_REL_PATH),\n        'name_prefix': 'generic.',\n    }\n\n    # register path\n    for current_folder, folders, files in os.walk(comp_config['path']):\n        for filename in files:\n            filename = os.path.join(current_folder, filename)\n            if filename.endswith('.py') and component_manager.should_register(filename):\n                try:\n                    module = import_module(fpath_to_module(filename))\n                    component_manager.register_by_module(module, config=comp_config)\n                except Exception as ex:\n                    # file_import_error[filename] = traceback.format_exc()\n                    file_import_error[filename] = 'Exception: %s' % str(ex)\n\n    error_msg = []\n    # check component whether exist\n    if component_codename:\n        try:\n            prefix, sys_name, component_name = component_codename.split('.')\n        except Exception:\n            return HttpResponse('codename \"%s\" does not math the rule generic.xxx.xxx, please check'\n                                % component_codename)\n        if component_codename in component_manager.get_registed_components():\n            return HttpResponse('component \"%s\" exists, if the visit prompts the error '\n                                'message \"Not found, component class not found\", please restart the esb service'\n                                % component_codename)\n        else:\n            error_msg.append('component \"%s\" does not exist, please check the following steps:' % component_codename)\n            error_msg.append('1. component path is \"%s\", please check whether the component file exists'\n                             % comp_config['path'])\n            error_msg.append('2. component class name should be \"%s\", please check' % smart_upper(component_name))\n            error_msg.append('3. uppercase of compoennt attribute sys_name should be \"%s\", please check'\n                             % sys_name.upper())\n\n    if file_import_error:\n        error_msg.append('\\n')\n        error_msg.append('There are some components loaded exception, please repair:')\n        error_msg.extend(['\\n'.join(item) for item in sorted(iter(file_import_error.items()), key=lambda x: x[0])])\n    return HttpResponse(content='\\n'.join(error_msg) or 'OK', content_type='text/plain')\n"
  },
  {
    "path": "paas-ce/paas/esb/lib/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/lib/redis_rate_limit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom .ratelimit import RateLimiter, Rule, SimpleLimiter  # noqa\n"
  },
  {
    "path": "paas-ce/paas/esb/lib/redis_rate_limit/ratelimit.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"A distributed rate limiter rely on redis\nbased on `token bucket <https://en.wikipedia.org/wiki/Token_bucket>` algorithm\n\nUsage\n~~~~~\n\n.. code-block:: python\n\n    # Init a redis connection pool\n    import redis\n    redisdb = redis.Redis()\n\n    rate = RateLimiter(redisdb, identifier='ip=127.0.0.1 path=/get_user_info/')\n    # Allow 10 requests every 1 minute\n    # period also accepts seconds/minutes/hours/days as key\n    rate.add_rule(tokens=10, period={'minute': 1})\n\n    # You could add multiple rules for on limiter\n    # rate.add_rule(tokens=200, period={'hour': 1})\n\n    print rate.acquire()\n    # returns {'allowed': True, 'remaining_tokens': 9.0}\n\n\"\"\"\nimport time\nimport logging\n\nfrom redis import WatchError\n\nlogger = logging.getLogger('root')\n\n\nclass BaseRateLimiter(object):\n\n    def __init__(self, redisdb, identifier, namespace='', tokens=None, period=None):\n        \"\"\"Init a RateLimiter class\n\n        :param redisdb: a `redis.Redis` instance\n        :param str identifier: identifier for the limiter, such as an user_id etc.\n        :param str namespace: namespace for redis keys\n        :param int tokens: maxium tokens for one time period\n        :param dict period: dict, time period, such as {'minutes': 10}\n        \"\"\"\n        self.redisdb = redisdb\n        self.identifier = identifier\n        self.namespace = namespace\n        self.rules = []\n\n        # Add rule\n        if tokens is not None and period:\n            self.add_rule(tokens, period)\n\n        self.prepare()\n\n    def prepare(self):\n        \"\"\"Prepare to work\n        \"\"\"\n        pass\n\n    def add_rule(self, tokens, period):\n        \"\"\"Add multiple rules for this limiter, see `__init__` for parameter details\n        \"\"\"\n        rule = Rule(tokens, Rule.period_to_seonds(period))\n        self.rules.append(rule)\n\n    def acquire(self, tokens=1):\n        \"\"\"Acquire for a single request\n\n        :param int tokens: tokens to consume for this request, default to 1\n        \"\"\"\n        if not self.rules:\n            return {'allowed': True, 'remaining_tokens': 0}\n\n        logger.debug('Start acquiring tokens by given rules, this operation may have several '\n                     'communications with redis.')\n        rets = []\n        for rule in self.rules:\n            logger.debug('Acquiring by single rule, rule=%s tokens=%s', rule, tokens)\n            ret = self.acquire_by_single_rule(rule, tokens)\n            logger.debug('Acquiring finished, result=%s', ret)\n            if not ret['allowed']:\n                logger.debug('Acquiring denied by given rule, rule=%s.', rule)\n                return ret\n\n            rets.append(ret)\n        logger.debug('Acquiring successed.')\n        return {\n            'allowed': True,\n            'remaining_tokens': min(x['remaining_tokens'] for x in rets)\n        }\n\n\nclass RateLimiter(BaseRateLimiter):\n    \"\"\"Rate limiter class\n    \"\"\"\n\n    def acquire_by_single_rule(self, rule, tokens=1):\n        \"\"\"Acquire an request quota from limiter\n\n        :param rule: `Rule` object\n        :param int tokens: tokens to be consumed, default 1\n        :returns: a dict of `allowed` and `remaining_tokens`\n          - allowed: wheather this request is allowed\n          - remaining_tokens: remaining_tokens for this rule's period\n        \"\"\"\n        rk_tokens = 'rlim::%s::tokens::%s::r%s' % (self.namespace, self.identifier, rule.to_string())\n        rk_last_ts = 'rlim::%s::last_ts::%s::r%s' % (self.namespace, self.identifier, rule.to_string())\n        rule_ttl_seconds = rule.period_seconds + 10\n\n        try:\n            rv_last_ts = float(self.redisdb.get(rk_last_ts))\n            rv_tokens = float(self.redisdb.get(rk_tokens))\n        except Exception:\n            # Inintilize values if not exists\n            rv_last_ts = time.time()\n            rv_tokens = rule.tokens\n            self.redisdb.set(rk_tokens, rv_tokens, ex=rule_ttl_seconds)\n            self.redisdb.set(rk_last_ts, '%.3f' % rv_last_ts, ex=rule_ttl_seconds)\n\n        # Add fresh tokens since last timestamp\n        with self.redisdb.pipeline() as pipe:\n            pipe.watch(rk_last_ts)\n\n            # Float precision may cause this value negative\n            # Add token by passed time\n            senconds_passed = max(time.time() - rv_last_ts, 0)\n            fresh_tokens = rule.fresh_tokens_by_seconds(senconds_passed)\n\n            remaining_tokens = rv_tokens\n            # Only add fresh token when it's greater than 1\n            # Passed time maybe less than 1, fresh_token more than 1\n            if fresh_tokens >= 1 and remaining_tokens < rule.tokens:\n                # Never add let tokens more than rule.tokens\n                fresh_tokens = min(fresh_tokens, rule.tokens - remaining_tokens)\n\n                pipe.multi()\n                pipe.incrbyfloat(rk_tokens, fresh_tokens)\n                pipe.expire(rk_tokens, rule_ttl_seconds)\n                pipe.set(rk_last_ts, '%.3f' % time.time(), ex=rule_ttl_seconds)\n                # Ignore WatchError\n                try:\n                    pipe.execute()\n                except WatchError:\n                    pass\n        # Remove tokens, if tokens to consume are bigger than remaining tokens, do nothing\n        # and return Flase\n        remaining_tokens = self.redisdb.incrbyfloat(rk_tokens, -tokens)\n        over_limit = False\n        if remaining_tokens < 0:\n            remaining_tokens = self.redisdb.incrbyfloat(rk_tokens, tokens)\n            over_limit = True\n\n        return {\n            'allowed': not over_limit,\n            'remaining_tokens': max(remaining_tokens, 0)\n        }\n\n\nclass SimpleLimiter(BaseRateLimiter):\n\n    def prepare(self):\n        self.simple_incr = self.redisdb.register_script('''\\\nlocal current\ncurrent = redis.call(\"incr\", KEYS[1])\nif tonumber(current) == 1 then\n    redis.call(\"expire\", KEYS[1], ARGV[1])\nend\nreturn current''')\n\n    def acquire_by_single_rule(self, rule, tokens=1):\n        \"\"\"Acquire an request quota from limiter\n\n        :param rule: `Rule` object\n        :param int tokens: tokens to be consumed, default 1\n        :returns: a dict of `allowed` and `remaining_tokens`\n          - allowed: wheather this request is allowed\n          - remaining_tokens: remaining_tokens for this rule's period\n        \"\"\"\n        # TODO: Should we use ( current timestamp / period_seconds ) as part of the redis key?\n        rk_counter = 'rlim::%s::scounter::%s::r%s' % (self.namespace, self.identifier, rule.to_string())\n        old_cnt = self.redisdb.get(rk_counter)\n        if old_cnt is not None and int(old_cnt) >= rule.tokens:\n            return {\n                'allowed': False,\n                'remaining_tokens': 0.0\n            }\n\n        new_cnt = self.simple_incr(keys=[rk_counter], args=[rule.period_seconds])\n        return {\n            'allowed': True,\n            'remaining_tokens': max(0, rule.tokens - new_cnt)\n        }\n\n\nclass Rule(object):\n    \"\"\"Rule class for RateLimiter\"\"\"\n\n    time_unit_to_seconds = {\n        'second': 1,\n        'minute': 60,\n        'hour': 3600,\n        'day': 3600 * 24,\n    }\n\n    @classmethod\n    def period_to_seonds(cls, period):\n        for unit, seconds in list(cls.time_unit_to_seconds.items()):\n            if unit in period:\n                period_seconds = period[unit] * seconds\n                break\n        else:\n            raise ValueError(('Invalid period %s given, should be '\n                              '{\"second/minute/hour/day\": NUMBER}') % period)\n        return period_seconds\n\n    def __init__(self, tokens, period_seconds):\n        self.tokens = tokens\n        # Precision of seconds only to second\n        self.period_seconds = int(period_seconds)\n\n        if tokens < 0:\n            logger.warn('Will not allow any acquire because given tokens < 0')\n\n    def to_string(self):\n        return \"%s_%s\" % (self.tokens, self.period_seconds)\n\n    def fresh_tokens_by_seconds(self, seconds):\n        return int(self.rate_per_seconds * seconds)\n\n    @property\n    def rate_per_seconds(self):\n        return self.tokens / float(self.period_seconds)\n\n    def __repr__(self):\n        return '<Rule %s>' % self.to_string()\n"
  },
  {
    "path": "paas-ce/paas/esb/manage.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n    from django.core.management import execute_from_command_line\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "paas-ce/paas/esb/requirements.txt",
    "content": "# pkg used in prod env should be added to requirements_prod.txt also\n\nDjango==4.2.16\nrequests==2.32.3\njinja2==3.1.4\nsqlalchemy==2.0.38\npymysql==1.1.1\nredis==7.1.0\nthrift==0.10.0\ngevent==24.2.1\npytz==2024.2\nMarkupSafe==2.0.1\n\n# encrypt\npycrypto==2.6.1\n\nmarkdown==3.7\ngunicorn==23.0.0\nuWSGI==2.0.26\nPyYAML==5.1\n\n# for fta\narrow==0.10.0\n\n# for apidoc\nPygments==2.15.0"
  },
  {
    "path": "paas-ce/paas/esb/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nDjango settings for esb project.\n\nGenerated by 'django-admin startproject' using Django 1.8.11.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/topics/settings/\n\nFor the full list of settings and their values, see\nhttps://docs.djangoproject.com/en/1.8/ref/settings/\n\"\"\"\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nimport os\n#from django.conf.global_settings import *  # noqa\n\ntry:\n    import pymysql\n    pymysql.install_as_MySQLdb()\nexcept Exception:\n    pass\n\nBASE_DIR = os.path.dirname(os.path.abspath(__file__))\n\n\n# Quick-start development settings - unsuitable for production\n# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/\n\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = '@3dqbfh23ihs)*ffdck21g(f)+)95qnj4i3n2m-yhafl#&@#hx'\n\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\n\nALLOWED_HOSTS = ['*']\n\n# Application definition\n# Django apps and Middlewares\nINSTALLED_APPS = (\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'esb.apps.ESBConfig',\n    'esb.bkcore.apps.BkcoreConfig',\n)\nfrom datetime import datetime\n\nMIDDLEWARE = (\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.locale.LocaleMiddleware',\n    'django.middleware.common.CommonMiddleware',\n#    'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    'django.middleware.clickjacking.XFrameOptionsMiddleware',\n    'django.middleware.security.SecurityMiddleware',\n    'esb.middlewares.APICommonMiddleware',\n    'esb.middlewares.DebugHelperMiddleware',\n)\n\nROOT_URLCONF = 'urls'\n\nWSGI_APPLICATION = 'wsgi.application'\n\n\n# Templates\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': [],\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.core.context_processors.i18n',\n                'django.contrib.messages.context_processors.messages',\n            ],\n        },\n    },\n    {\n        'BACKEND': 'django.template.backends.jinja2.Jinja2',\n        'DIRS': [],\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'environment': 'esb.jinja2_esb.environment',\n        }\n    },\n]\n\n\n# Internationalization\n# https://docs.djangoproject.com/en/1.8/topics/i18n/\n# LANGUAGE_CODE = 'zh-hans'\nLANGUAGE_CODE = 'en'\nUSE_I18N = True\n\n# timezone\nTIME_ZONE = 'Asia/Shanghai'\nUSE_TZ = True\n\n\n# language\n# 避免循环引用\ndef _(s):\n    return s\n\n\nLANGUAGES = (\n    ('en', _('English')),\n    ('zh-hans', _('简体中文')),\n)\nLOCALE_PATHS = (\n    os.path.join(BASE_DIR, 'locale'),\n    os.path.join(BASE_DIR, 'locale/locale_api'),\n)\n\n# Authentication\nAUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend', )\n\n\n# logging\nLOG_DIR = os.environ.get('PAAS_LOGGING_DIR') or os.path.join(BASE_DIR, 'logs')\nif not os.path.exists(LOG_DIR):\n    os.mkdir(LOG_DIR)\n\n# 100M, total 1G\nLOG_MAX_BYTES = 104857600\nLOG_BACKUP_COUNT = 10\nLOG_CLASS = 'logging.handlers.RotatingFileHandler'\n\n\ndef get_loggings(log_level):\n    return {\n        'version': 1,\n        'disable_existing_loggers': False,\n        'formatters': {\n            'verbose': {\n                'format': '%(levelname)s [%(asctime)s] %(pathname)s %(lineno)d %(funcName)s %(process)d %(thread)d \\n \\t %(message)s \\n',    # noqa\n                'datefmt': '%Y-%m-%d %H:%M:%S'\n            },\n            'simple': {\n                'format': '%(message)s'\n            },\n            'api_simple': {\n                # 不要添加换行符，Elasticsearch日志采集器认为每行均是一个合法JSON字符串\n                'format': '%(message)s'\n            },\n            'console_simple': {\n                'format': '[%(levelname)s] %(message)s'\n            }\n        },\n        'handlers': {\n            'null': {\n                'level': 'DEBUG',\n                'class': 'logging.NullHandler',\n            },\n            'console': {\n                'level': 'INFO',\n                'class': 'logging.StreamHandler',\n                'formatter': 'console_simple',\n            },\n            'root': {\n                'class': LOG_CLASS,\n                'formatter': 'verbose',\n                'filename': os.path.join(LOG_DIR, 'esb.log'),\n                'maxBytes': LOG_MAX_BYTES,\n                'backupCount': LOG_BACKUP_COUNT\n            },\n            'api': {\n                'class': LOG_CLASS,\n                'formatter': 'api_simple',\n                'filename': os.path.join(LOG_DIR, 'esb_api.log'),\n                'maxBytes': LOG_MAX_BYTES,\n                'backupCount': LOG_BACKUP_COUNT\n            },\n        },\n        'loggers': {\n            'django': {\n                'handlers': ['null'],\n                'level': 'INFO',\n                'propagate': True,\n            },\n            'thrift': {\n                'handlers': ['root'],\n                'level': 'ERROR',\n                'propagate': True,\n            },\n            'django.request': {\n                'handlers': ['root'],\n                'level': 'ERROR',\n                'propagate': True,\n            },\n            # the root logger, for all the project\n            'root': {\n                'handlers': ['root', 'console'],\n                'level': log_level,\n                'propagate': False,\n            },\n            # Logging config for ESB projects\n            'api': {\n                'handlers': ['api'],\n                'level': log_level,\n                'propagate': False,\n            },\n            'esb.management': {\n                'handlers': ['console'],\n                'level': 'INFO',\n                'propagate': True,\n            },\n        }\n    }\n\n\n# Static files\nSITE_URL = '/'\n\nSTATIC_URL = SITE_URL + 'static/'\n\nSTATIC_VERSION = '0.0.1'\n\nHTTP_SCHEMA = 'https'\n\n# component esb_conf\nESB_SITE_ESB_CONF = 'components.esb_conf.config'\n\n# JOB是否启用SSL验证\n#JOB_SSL = True\n# 如果用户未配置config/default.py中的SSL_ROOT_DIR，则使用此目录\n#DEFAULT_SSL_ROOT_DIR = '/data/paas/ssl_dir'\n\nfrom configs.default import *  # noqa\n\n\nLOGGING = get_loggings(LOG_LEVEL)  # noqa\nREDIS_CONF_FOR_RATELIMIT = {}\nHTTP_SCHEMA = 'https'\n\n# 默认超时时间\nREQUEST_TIMEOUT_SECS = 30\n\nRATE_LIMIT_KEY_NAMESPACE = 'bk_esb_rate_limit'\n\n\nDJ_POOL_OPTIONS = {\n    'pool_size': 20,\n    'max_overflow': 100,\n    'recycle': 600\n}\n"
  },
  {
    "path": "paas-ce/paas/esb/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"esb URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/1.8/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')\nIncluding another URLconf\n    1. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))\n\"\"\"\nfrom django.urls import include, path\nfrom django.contrib import admin\n\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('c/', include('components.urls')),\n    path('healthz/', include('healthz.urls')),\n]\n\n\n# 处理404和500请求\nhandler404 = 'esb.views.handler_404_view'\nhandler500 = 'esb.views.handler_500_view'\n"
  },
  {
    "path": "paas-ce/paas/esb/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\"\"\"\nWSGI config for esb project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/\n\"\"\"\n\nimport os  # noqa\n\nfrom django.core.wsgi import get_wsgi_application  # noqa\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\napplication = get_wsgi_application()\n"
  },
  {
    "path": "paas-ce/paas/examples/README.md",
    "content": "# examples 说明\n\n\n```\n├── nginx_paas.conf                   paas nginx配置示例, 用于配置统一接入层\n├── settings                          项目配置示例, 用于配置4个项目模块\n│   ├── appengine\n│   │   └── settings.py\n│   ├── esb\n│   │   └── default.py\n│   ├── login\n│   │   └── settings_production.py\n│   └── paas\n│       └── settings_production.py\n└── supervisord.conf                  supervisord.conf配置文件, 用于supervisor托管所有进程\n```\n"
  },
  {
    "path": "paas-ce/paas/examples/build/LICENSE_JSCSS_HEADER",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n"
  },
  {
    "path": "paas-ce/paas/examples/nginx_paas.conf",
    "content": "# upstream - web\nupstream OPEN_PAAS {\n    server 127.0.0.1:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_APPENGINE {\n    server 127.0.0.1:8000 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_ESB {\n    server 127.0.0.1:8002 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_LOGIN {\n    server 127.0.0.1:8003 max_fails=1  fail_timeout=30s;\n}\n\n# upstream - paasagent\nupstream PAAS_AGENT_TEST {\n    server 192.168.1.1:8085 max_fails=1  fail_timeout=30s;\n}\nupstream PAAS_AGENT_PROD {\n    server 192.168.1.2:8085 max_fails=1  fail_timeout=30s;\n}\n# proxy_next_upstream  http_502 http_504 error timeout invalid_header;\n\nserver {\n    listen       80;\n    server_name  www.bking.com;\n\n    access_log /var/log/nginx/openpaas_osce_access.log;\n    error_log /var/log/nginx/openpaas_osce_error.log;\n\n    client_max_body_size    512m;\n\n    # ============================ paas ============================\n    # PAAS_SERVICE HOST/PORT\n    location / {\n        proxy_pass http://OPEN_PAAS;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # PAAS_SERVICE HOST/PORT, for doc\n    location ~ ^/doc/(.*) {\n        proxy_pass http://OPEN_PAAS/static/doc/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n\n    }\n\n\n    # ============================ appengine ============================\n    # ENGINE_SERVICE HOST/PORT\n    location ~ ^/v1 {\n        proxy_pass http://OPEN_PAAS_APPENGINE;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Scheme $scheme;\n        proxy_read_timeout 600;\n    }\n\n    # ============================ esb ============================\n    # ESB_SERVICE HOST/PORT\n    location ~ ^/api/(.*) {\n        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Request-Uri $request_uri;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n\n    # ============================ login ============================\n    # LOGIN_SERVICE HOST/PORT\n    location ~ ^/login/(.*) {\n        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n\n    # ============================ paas_agent ============================\n    # for apps test\n    location ~ ^/t/ {\n        proxy_pass http://PAAS_AGENT_TEST;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n    # for apps prod\n    location ~ ^/o/ {\n        proxy_pass http://PAAS_AGENT_PROD;\n        proxy_pass_header Server;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Scheme $scheme;\n        proxy_set_header Host $http_host;\n        proxy_redirect off;\n        proxy_read_timeout 600;\n    }\n\n}\n"
  },
  {
    "path": "paas-ce/paas/examples/settings/appengine/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom controller.settings_default import * # noqa\n\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'open_paas',\n        'USER': 'root',\n        'PASSWORD': '',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n"
  },
  {
    "path": "paas-ce/paas/examples/settings/esb/default.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n# Generic Django project settings\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'open_paas',\n        'USER': 'root',\n        'PASSWORD': '',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\n\n# Log settings\nLOG_LEVEL = 'INFO'\n\n# esb app_token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n\n# Third party system host\n\n# paas host\nPAAS_HOST = 'http://127.0.0.1:8001'\n\n# Third party system host\n# host for bk login\nHOST_BK_LOGIN = 'http://127.0.0.1:8003'\n\n# host for cc\nHOST_CC = ''\n\n# host for cc v3\nHOST_CC_V3 = ''\n\n# host for fta\nHOST_FTA = ''\n\n# Redis config\nUSE_SENTINEL = False\nREDIS_HOST = ''\nREDIS_PORT = 6379\nREDIS_PASSWORD = ''\nREDIS_MASTER_NAME = ''\n"
  },
  {
    "path": "paas-ce/paas/examples/settings/login/settings_production.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n生产环境配置\n\"\"\" # noqa\n\nDEBUG = False\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 生产环境, 使用nginx反向代理 /login/static/\nSITE_URL = \"/login/\"\n\nSTATIC_URL = \"/static/\"\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',   # 默认用mysql\n        'NAME': 'open_paas',\n        'USER': 'root',\n        'PASSWORD': '',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\n# 初始化用户名、密码\nUSERNAME = 'admin'\nPASSWORD = 'admin'\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = ''\nHTTP_SCHEMA = 'http'\n\n\n# cookie访问域\nBK_COOKIE_DOMAIN = '.bking.com'\n\nSECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n"
  },
  {
    "path": "paas-ce/paas/examples/settings/paas/settings_production.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n生产环境配置\n\"\"\" # noqa\n\n\nDEBUG = False\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'open_paas',\n        'USER': 'root',\n        'PASSWORD': '',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\n# domain\nPAAS_DOMAIN = 'www.bking.com'\n# 注意生产环境使用nginx反向代理不需要配置LOGIN_DOMAIN变量(删除即可)\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = ''\nHTTP_SCHEMA = 'http'\n\n\n# cookie 名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie有效期\nBK_COOKIE_AGE = 60 * 60 * 24\n# cookie访问域\nBK_COOKIE_DOMAIN = '.bking.com'\n\n# 控制台地址\nENGINE_HOST = \"http://127.0.0.1:8000\"\n# 登陆服务地址\nLOGIN_HOST = \"http://127.0.0.1:8003\"\n\n# host for cc\nHOST_CC = ''\n# host for job\nHOST_JOB = ''\n# host for DATA，数据平台监控告警系统\nHOST_DATA = ''\n# host for gse\nHOST_GSE = ''\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n"
  },
  {
    "path": "paas-ce/paas/examples/supervisord.d/appengine.ini",
    "content": "[program:appengine]\ncommand=/opt/opsany/.runtime/appengine/bin/gunicorn wsgi --bind 0.0.0.0:8000 -k gevent -w 4 -n appengine --access-logfile - --error-logfile -\ndirectory=/opt/opsany-paas/paas-ce/paas/appengine\nenvironment=PYTHONPATH=/opt/opsany/.runtime/appengine,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany-paas/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_appengine.log\n"
  },
  {
    "path": "paas-ce/paas/examples/supervisord.d/esb.ini",
    "content": "[program:esb]\ncommand=/opt/opsany/.runtime/esb/bin/gunicorn wsgi --bind 0.0.0.0:8002 -k gevent -w 4 -n esb --access-logfile - --error-logfile -\ndirectory=/opt/opsany-paas/paas-ce/paas/esb\nenvironment=PYTHONPATH=/opt/opsany-paas/.runtime/esb,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_esb.log\n"
  },
  {
    "path": "paas-ce/paas/examples/supervisord.d/login.ini",
    "content": "[program:login]\ncommand=/opt/opsany/.runtime/login/bin/gunicorn wsgi --bind 0.0.0.0:8003 -k gevent -w 4 -n login --access-logfile - --error-logfile -\ndirectory=/opt/opsany-paas/paas-ce/paas/login\nenvironment=DJANGO_SETTINGS_MODULE=settings,PYTHONPATH=/opt/opsany-paas/.runtime/login,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_login.log\n"
  },
  {
    "path": "paas-ce/paas/examples/supervisord.d/paas.ini",
    "content": "[program:paas]\ncommand=/opt/opsany/.runtime/paas/bin/gunicorn wsgi --bind 0.0.0.0:8001 -k gevent -w 4 -n paas --access-logfile - --error-logfile -\ndirectory=/opt/opsany-paas/paas-ce/paas/paas\nenvironment=DJANGO_SETTINGS_MODULE=settings,PYTHONPATH=/opt/opsany/.runtime/paas,BK_ENV=\"production\",PAAS_LOGGING_DIR=\"/opt/opsany/logs\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_paas.log\n"
  },
  {
    "path": "paas-ce/paas/examples/supervisord.d/paasagent.ini",
    "content": "[program:paas-agent]\ndirectory=/opt/opsany/paas-agent/\nenvironment=PATH=\"/opt/opsany/paas-agent/bin\"\ncommand=/opt/opsany/paas-agent/bin/paas_agent\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas-agent-supervisord.log\n"
  },
  {
    "path": "paas-ce/paas/examples/supervisord.d/websocket.ini",
    "content": "[program:websocket]\ncommand=/opt/opsany/paas-agent/apps/Envs/control/bin/daphne --proxy-headers -b 0.0.0.0 -p 8004 asgi:application\ndirectory=/opt/opsany/paas-agent/apps/projects/control/code/control\nenvironment=BK_ENV=\"testing\",BK_LOG_DIR=\"/opt/opsany/logs\",APP_ID=\"control\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/paas_websocket.log\n\n"
  },
  {
    "path": "paas-ce/paas/gulpfile.js",
    "content": "/*\r\n静态资源打包压缩流程\r\n*/\r\n\r\n'use strict';\r\n// var fs = require('fs');\r\n\r\n// 加载插件\r\nvar gulp = require(\"gulp\"),\r\n    del = require(\"del\"),\r\n    //vinylPaths = require(\"vinyl-paths\"),\r\n    jshintStyle = require(\"jshint-stylish\"),\r\n    gulpLoadPlugins = require(\"gulp-load-plugins\"),\r\n    fs = require('fs'),\r\n    $ = gulpLoadPlugins({\r\n        rename: {\r\n            'gulp-htmlmin': 'htmlmin',\r\n            'gulp-minify-css': 'minifycss',\r\n            'gulp-uglify': 'uglify',\r\n            'gulp-sass': 'sass',\r\n            'gulp-concat': 'concat',\r\n            'gulp-watch': 'watch',\r\n            'gulp-zip': 'zip',\r\n            'gulp-size': 'size',\r\n            'gulp-strip-debug': 'stripdebug',\r\n            'gulp-jshint': 'jshint',\r\n            'gulp-cache': 'cache',\r\n            'gulp-plumber': 'plumber',\r\n            'gulp-babel': 'babel',\r\n            'babel-preset-es2015': 'es2015',\r\n            'gulp-header': 'header'\r\n        }\r\n    });\r\n\r\n// 路径配置\r\nvar path = {\r\n    // js-glob，js压缩文件路径\r\n    html: [\r\n        \"login/templates/**/*.html\",\r\n        \"paas/templates/**/*.html\",\r\n        \"!login/templates/**/*.part\",\r\n        \"!paas/templates/**/*.part\"\r\n    ],\r\n    // js-glob，js压缩文件路径\r\n    js: [\r\n        \"paas/static/js/**/*.js\",\r\n        \"paas/static/home/js/**/*.js\",\r\n\t\"paas/static/home/user_center/js/**/*.js\",\r\n        \"paas/static/esb/js/*.js\",\r\n        \"paas/static/esb/status/js/**/*.js\",\r\n        \"paas/static/esb/utils/*.js\",\r\n\t\"login/static/js/**/*.js\",\r\n\r\n        \"!paas/static/js/**/*.min.js\",\r\n        \"!paas/static/home/js/**/*.min.js\",\r\n\t\"!paas/static/home/user_center/js/**/*.min.js\",\r\n        \"!paas/static/esb/js/*.min.js\",\r\n        \"!paas/static/esb/js/*.min.js\",\r\n        \"!paas/static/esb/status/js/**/*.min.js\",\r\n        \"!paas/static/esb/utils/*.min.js\",\r\n        \"!login/static/js/**/*.min.js\",\r\n    ],\r\n    // .es6.js-glob，js转码文件路径\r\n    es6js: [\r\n        \"paas/static/js/**/*.es6.js\",\r\n        \"login/static/js/**/*.es6.js\",\r\n        \"!paas/static/js/**/*.min.js\",\r\n        \"!login/static/js/**/*.min.js\"\r\n    ],\r\n    // jshint-glob，js检查文件路径\r\n    jshint: [\r\n        \"static/js/**/app.js\",\r\n        \"static/js/**/app-config.js\",\r\n        \"static/js/**/proxy-agent.js\",\r\n        \"static/js/**/operation-record.js\"\r\n    ],\r\n    // css-glob，css压缩文件路径\r\n    css: [\r\n        \"paas/static/css/*.css\",\r\n        \"paas/static/home/css/*.css\",\r\n\t\"paas/static/home/user_center/css/*.css\",\r\n        \"paas/static/esb/css/*.css\",\r\n        \"login/static/css/*.css\",\r\n\r\n        \"!login/static/css/*.min.css\",\r\n        \"!paas/static/css/*.min.css\",\r\n\t\"!paas/static/home/user_center/css/*.min.css\",\r\n        \"!paas/static/home/css/*.min.css\",\r\n        \"!paas/static/esb/css/*.min.css\"\r\n    ],\r\n    // zip-glob，打包路径\r\n    zip: [\r\n        \"dist/**/*.*\",\r\n        \"!dist/**/*.zip\"\r\n    ],\r\n    // clean-glob，清理文件路径\r\n    clean: [\r\n        \"dist/**/*.zip\",\r\n        \"dist\"\r\n    ],\r\n    // scss-glob，scss文件路径\r\n    scss: [\r\n        \"static/sass/**/*.scss\"\r\n    ],\r\n    base: \"static\",\r\n    static: \"static\",\r\n    templates: \"templates\",\r\n    dist: \"dist\"\r\n};\r\n\r\n\r\n// 任务配置\r\nvar tasks = {\r\n    // 代码检查\r\n    jshint: function() {\r\n        return gulp.src(path.jshint)\r\n            .pipe($.jshint(\".jshintrc\"))\r\n            // .pipe($.cache($.jshint('.jshintrc')))\r\n            // .pipe($.jshint.reporter(\"default\"))\r\n            .pipe($.jshint.reporter(jshintStyle))\r\n    },\r\n    // sass编译\r\n    sass: function() {\r\n        return gulp.src(path.scss, {\r\n                base: path.base\r\n            })\r\n            .pipe(watch(path.scss))\r\n            .pipe($.sass().on('error', sass.logError))\r\n            .pipe(gulp.dest(path.dist));\r\n    },\r\n    // html压缩\r\n    minifyhtml: function() {\r\n        return gulp.src(path.html)\r\n            .pipe($.htmlmin({\r\n                ignoreCustomFragments: [\r\n                    /<%inherit[\\s\\S]*\\/>/,\r\n                    /<%include[\\s\\S]*\\/>/,\r\n                    /<%block[\\s\\S]*?>/,\r\n                    /<%[\\s\\S]*?%>/,\r\n                    /^(\\s)*(#){2,}[\\s\\S]*>/,\r\n                    /%\\s*(if|for|while)\\s{1,}\\S*:$/,\r\n                    /%[\\s]*endif\\s$/,\r\n                    /<\\/%block[\\s\\S]*?>/\r\n                ],\r\n                removeComments: true,\r\n                collapseWhitespace: false,\r\n                collapseBooleanAttributes: true,\r\n                removeEmptyAttributes: true,\r\n                removeScriptTypeAttributes: true,\r\n                removeStyleLinkTypeAttributes: true,\r\n                minifyJS: true,\r\n                minifyCSS: true\r\n            }))\r\n            .pipe(gulp.dest(path.dist));\r\n    },\r\n    // js压缩\r\n    minifyjs: function() {\r\n        return gulp.src(path.js, {\r\n                base: path.base\r\n            })\r\n            // .pipe($.concat(\"app.js\"))\r\n            // .pipe($.babel())\r\n            // .pipe(gulp.dest(path.dist))\r\n            .pipe($.size({\r\n                showFiles: true,\r\n                pretty: true\r\n            }))\r\n            .pipe($.rename({\r\n                suffix: \".min\"\r\n            }))\r\n            .pipe($.stripdebug())\r\n            .pipe($.uglify())\r\n            .pipe($.size({\r\n                showFiles: true,\r\n                pretty: true\r\n            }))\r\n            .pipe($.header(fs.readFileSync('examples/build/LICENSE_JSCSS_HEADER', 'utf8'), {} ))\r\n            .pipe(gulp.dest(path.dist))\r\n            .pipe(gulp.dest(path.static))\r\n    },\r\n    // css压缩\r\n    minifycss: function() {\r\n        return gulp.src(path.css, {\r\n                base: path.base\r\n            })\r\n            .pipe($.size({\r\n                showFiles: true,\r\n                pretty: true\r\n            }))\r\n            .pipe($.rename({\r\n                suffix: \".min\"\r\n            }))\r\n            .pipe($.minifycss())\r\n            .pipe($.size({\r\n                showFiles: true,\r\n                pretty: true\r\n            }))\r\n            .pipe($.header(fs.readFileSync('examples/build/LICENSE_JSCSS_HEADER', 'utf8'), {} ))\r\n            .pipe(gulp.dest(path.dist))\r\n            .pipe(gulp.dest(path.static))\r\n    },\r\n    // es6转换\r\n    minifyjs6: function() {\r\n        return gulp.src(path.es6js, {\r\n                base: path.base\r\n            })\r\n            .pipe($.babel({\r\n                presets: ['es2015']\r\n            }))\r\n            .pipe(gulp.dest(path.dist))\r\n            .pipe($.rename({\r\n                suffix: \".min\"\r\n            }))\r\n            .pipe($.stripdebug())\r\n            .pipe($.uglify())\r\n            .pipe(gulp.dest(path.dist))\r\n    },\r\n    // 打包发布\r\n    zip: function() {\r\n        var zipFile = 'dist-' + new Date().getTime() + '.zip';\r\n        console.log('create release package: ' + zipFile);\r\n        return gulp.src(path.zip)\r\n            .pipe($.plumber())\r\n            .pipe($.zip(zipFile))\r\n            .on(\"error\", function() {\r\n                console.error(\"zip error!\")\r\n            })\r\n            .pipe(gulp.dest(path.dist))\r\n            .pipe(gulp.dest(path.static))\r\n    },\r\n    // 清理dist\r\n    clean: function() {\r\n        del(path.clean);\r\n        return $.cache.clearAll();\r\n        // .pipe(vinylPaths(del));\r\n    }\r\n\r\n};\r\n\r\n// 代码检查\r\ngulp.task(\"jshint\", tasks.jshint);\r\n\r\n// sass编译\r\ngulp.task('sass', tasks.sass);\r\n\r\n// css压缩\r\ngulp.task(\"minifycss\", tasks.minifycss);\r\n\r\n// html压缩(慎重，若Html中掺杂其他模板语法，可能出现问题，建议只压缩内嵌css/js)\r\ngulp.task(\"minifyhtml\", tasks.minifyhtml);\r\n\r\n// es6转换\r\ngulp.task(\"minifyjs6\", tasks.minifyjs6);\r\n\r\n// js压缩\r\ngulp.task(\"minifyjs\", [\"jshint\"], tasks.minifyjs);\r\n\r\n// 清理dist\r\ngulp.task(\"clean\", tasks.clean);\r\n\r\n// 打包发布\r\ngulp.task(\"zip\", tasks.zip);\r\n\r\n// 监听变化\r\n// gulp.task('sass:watch', function() {\r\n//     gulp.watch(path.scss, ['sass']);\r\n// });\r\n\r\n// 静态资源压缩\r\ngulp.task(\"build\", [\"minifyjs\", \"minifycss\"])\r\n\r\n// 清理dist目录+静态资源压缩\r\ngulp.task(\"rebuild\", function() {\r\n    return del(path.clean).then(function(paths) {\r\n        console.log('delete files:\\n', paths.join('\\n'));\r\n        gulp.start('build');\r\n    });\r\n});\r\n\r\n// 压缩后打包\r\ngulp.task(\"default\", [\"build\"], function() {\r\n    gulp.start(\"zip\");\r\n    console.log('build finished.' + new Date());\r\n});\r\n\r\n\r\n// 帮助说明\r\ngulp.task(\"help\", function() {\r\n    var helpInfo = \"step1. npm install\\n\" +\r\n        \"step2. npm install -g gulp\\n\" +\r\n        \"step3. gulp <help|build|rebuild|zip|minifyjs|minifycss|minifyhtml|jshint|minifyjs6|sass>\";\r\n    console.log(helpInfo)\r\n});\r\n"
  },
  {
    "path": "paas-ce/paas/login/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*,cover\n.hypothesis/\n\n# Translations\n# *.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\n\n# Flask instance folder\ninstance/\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# IPython Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# dotenv\n.env\n\n# virtualenv\nvenv/\nENV/\n\n# Spyder project settings\n.spyderproject\n\n../db.sqlite3\ntemplates_module/\nrun/\nuwsgi.ini\nconf/settings_production.py\n\n# gulp\n.jshintrc\ngulpfile.js\n\n\n# scss cache\n.sass-cache\n"
  },
  {
    "path": "paas-ce/paas/login/Makefile",
    "content": "i18n_all: i18n_tpl i18n_js i18n_mo\n\n# make messages of python file and django template file to django.po \ni18n_tpl:\n\tdjango-admin.py makemessages -d django -l en -e html,part -e py\n\tdjango-admin.py makemessages -d django -l zh_Hans -e html,part -e py\n\n#  make messages of javascript file and django template file to djangojs.po\ni18n_js:\n\tdjango-admin.py  makemessages -d djangojs -l en\n\tdjango-admin.py  makemessages -d djangojs -l zh_Hans\n\n# compile django.po and djangojs.po to django.mo and djangojs.mo\ni18n_mo:\n\tdjango-admin.py  compilemessages\n"
  },
  {
    "path": "paas-ce/paas/login/README.md",
    "content": "# PaaS平台之统一登录\n\n## 简介\n\nlogin目录是统一登录服务的源码目录\n\n主要作用是:\n- 为蓝鲸智云所有平台和SaaS应用提供统一的用户身份认证和单点登录服务\n- 支持蓝鲸智云所有用户统一管理和简单授权\n- 支持蓝鲸智云统一登录对接企业内部登录体系\n\n由统一登录模块和自定义接入企业登录模块两部分组成:\n\n- 统一登录模块: 提供蓝鲸智云用户登录入口，用户信息管理和简单授权管理\n- 自定义接入企业登录模块: 支持将蓝鲸智云统一登录对接企业内部登录体系，让用户使用企业内部的身份认证\n\n\n## 技术栈\n\n- framework: Django 1.8.11\n- database: mysql\n\n\n## 依赖服务\n\n- mysql: 平台数据库\n"
  },
  {
    "path": "paas-ce/paas/login/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/bk_i18n/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/login/bk_i18n/apps.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.apps import AppConfig\n\n\nclass BkI18nAppConfig(AppConfig):\n    name = 'bk_i18n'\n\n    def ready(self):\n        import bk_i18n.signal_receivers  # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/bk_i18n/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom bkaccount.constants import LanguageEnum\n\n\nDJANGO_LANG_TO_BK_LANG = {\n    'zh-hans': LanguageEnum.ZH_CN,\n    'en': LanguageEnum.EN\n}\n\nBK_LANG_TO_DJANGO_LANG = {v: k for k, v in DJANGO_LANG_TO_BK_LANG.items()}\n"
  },
  {
    "path": "paas-ce/paas/login/bk_i18n/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport pytz\nfrom django.utils import timezone\nfrom django.conf import settings\nfrom django.utils import translation\nfrom django.utils.translation import trans_real as trans\nfrom django.utils.deprecation import MiddlewareMixin\n\nfrom bkaccount.constants import LOGIN_API_URL_SUFFIX_LIST\n\n\nclass TimezoneMiddleware(MiddlewareMixin):\n    def process_request(self, request):\n        tzname = request.session.get(settings.TIMEZONE_SESSION_KEY)\n        if tzname:\n            try:\n                timezone.activate(pytz.timezone(tzname))\n            except pytz.exceptions.UnknownTimeZoneError:\n                timezone.deactivate()\n        else:\n            timezone.deactivate()\n\n\nclass LanguageMiddleware(MiddlewareMixin):\n    def process_request(self, request):\n        language = request.session.get(settings.LANGUAGE_SESSION_KEY)\n        if language:\n            translation.activate(language)\n            request.LANGUAGE_CODE = translation.get_language()\n\n\nclass ApiLanguageMiddleware(MiddlewareMixin):\n    def process_request(self, request):\n        # check api url\n        full_path = request.get_full_path()\n        is_api_url = False\n        for i in LOGIN_API_URL_SUFFIX_LIST:\n            if (full_path.startswith(settings.SITE_URL + 'api/v2/' + i + '/')\n                    or full_path.startswith(settings.SITE_URL + \"accounts/\" + i + '/')):\n                is_api_url = True\n                break\n        # only api url do\n        if is_api_url:\n            try:\n                language = request.headers.get('blueking-language', 'en')\n                language = trans.get_supported_language_variant(language)\n            except Exception:\n                language = 'en'\n            if language:\n                translation.activate(language)\n                request.LANGUAGE_CODE = translation.get_language()\n"
  },
  {
    "path": "paas-ce/paas/login/bk_i18n/signal_receivers.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.conf import settings\nfrom django.dispatch import receiver\nfrom django.contrib.auth.signals import user_logged_in\nfrom django.utils.translation.trans_real import (get_languages, check_for_language, parse_accept_lang_header,\n                                                 language_code_re, get_supported_language_variant)\nfrom django.utils import translation\n\nfrom bk_i18n.constants import (DJANGO_LANG_TO_BK_LANG, BK_LANG_TO_DJANGO_LANG)\nfrom bkaccount.models import BkUser\n\n\ndef _get_language_from_request(request, user):\n    \"\"\"从请求中获取需要同步到用户个人信息的语言\n    \"\"\"\n    supported_lang_codes = get_languages()\n    # session 有language，说明在登录页面有进行修改或设置，则需要同步到用户个人信息中\n    lang_code = request.session.get(settings.LANGUAGE_SESSION_KEY)\n    if lang_code in supported_lang_codes and lang_code is not None and check_for_language(lang_code):\n        return lang_code\n\n    # 个人信息中已有language\n    if user.language:\n        return None\n\n    # session 情况不满足同步到用户个人信息，且目前个人信息中无language设置\n    # 查询header头\n    accept = request.headers.get('accept-language', '')\n    for accept_lang, unused in parse_accept_lang_header(accept):\n        if accept_lang == '*':\n            break\n\n        if not language_code_re.search(accept_lang):\n            continue\n\n        try:\n            return get_supported_language_variant(accept_lang)\n        except LookupError:\n            continue\n\n    # 使用settings默认设置\n    try:\n        return get_supported_language_variant(settings.LANGUAGE_CODE)\n    except LookupError:\n        return settings.LANGUAGE_CODE\n\n\n@receiver(user_logged_in, dispatch_uid=\"update_user_i18n_info\")\ndef update_user_i18n_info(sender, request, user, *args, **kwargs):\n    \"\"\"登录后自动刷新用户语言等国际化所需信息\n    \"\"\"\n    time_zone = user.time_zone\n    if not time_zone:\n        # 默认使用settings中配置\n        time_zone = settings.TIME_ZONE\n        BkUser.objects.set_user_i18n_info(user, time_zone=time_zone)\n    # 设置language\n    lang_code = _get_language_from_request(request, user)\n    bk_lang_code = user.language\n    if lang_code:\n        # 蓝鲸约定的语言代号与Django的有不同，需要进行转换\n        bk_lang_code = DJANGO_LANG_TO_BK_LANG[lang_code]\n        BkUser.objects.set_user_i18n_info(user, language=bk_lang_code)\n    #lang_code = BK_LANG_TO_DJANGO_LANG[bk_lang_code]\n    lang_code = 'zh-hans'\n    # set session for render html when logged in not redirect\n    request.session[settings.LANGUAGE_SESSION_KEY] = lang_code\n    translation.activate(lang_code)\n    request.LANGUAGE_CODE = translation.get_language()\n    request.session[settings.TIMEZONE_SESSION_KEY] = time_zone\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/accounts.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport datetime\nimport ipaddress\nimport time\nimport unicodedata\nimport urllib.request, urllib.parse, urllib.error\nimport uuid\nimport json\n\nfrom django.conf import settings\nfrom django.db.models import F\nfrom django.utils.translation import gettext as _\n# Avoid shadowing the login() and logout() views below.\nfrom django.contrib.auth import (login as auth_login, logout as auth_logout)\nfrom django.contrib.auth.forms import AuthenticationForm\nfrom django.contrib.auth.views import redirect_to_login\nfrom django.contrib.sites.shortcuts import get_current_site\nfrom django.http import HttpResponseRedirect, HttpResponse, JsonResponse\nfrom django.shortcuts import resolve_url, render\nfrom django.template.response import TemplateResponse\nfrom six.moves.urllib.parse import urlparse\nfrom django.utils import timezone\n\nfrom common.log import logger\nfrom bkaccount.encryption import encrypt, decrypt, salt\nfrom bkaccount.models import Loignlog, BkToken\nfrom bkaccount.forms import AuthenticationAndRegisterForm\nfrom bkaccount.opsany_user_auth import OpsAnyRbacUserAuth\nfrom bkaccount.models import BkUser\n\n\nclass AccountSingleton(object):\n    \"\"\"\n    单例基类\n    \"\"\"\n\n    _instance = None\n\n    def __new__(cls, *args, **kwargs):\n        if not isinstance(cls._instance, cls):\n            cls._instance = object.__new__(cls, *args, **kwargs)\n        return cls._instance\n\n\nclass Account(AccountSingleton):\n    \"\"\"\n    账号体系相关的基类Account\n\n    提供通用的账号功能\n    \"\"\"\n    # cookie名称\n    BK_COOKIE_NAME = settings.BK_COOKIE_NAME\n    # cookie 有效期，默认为1天\n    BK_COOKIE_AGE = settings.BK_COOKIE_AGE\n    # 登录回调链接\n    REDIRECT_FIELD_NAME = 'c_url'\n    # 登录连接\n    BK_LOGIN_URL = str(settings.LOGIN_URL)\n    # 允许误差时间，防止多台机器时间误差， 1分钟\n    BK_TOKEN_OFFSET_ERROR_TIME = settings.BK_TOKEN_OFFSET_ERROR_TIME\n\n    def is_safe_url(self, url, host=None):\n        \"\"\"\n        判断url是否与当前host的根域一致\n\n        以下情况返回False：\n            1)根域不一致\n            2)url的scheme不为：https(s)\n            3)url为空\n        \"\"\"\n        if url is not None:\n            url = url.strip()\n        if not url:\n            return False\n        # Chrome treats \\ completely as /\n        url = url.replace('\\\\', '/')\n        # Chrome considers any URL with more than two slashes to be absolute, but\n        # urlparse is not so flexible. Treat any url with three slashes as unsafe.\n        if url.startswith('///'):\n            return False\n        url_info = urlparse(url)\n        # Forbid URLs like http:///example.com - with a scheme, but without a hostname.\n        # In that URL, example.com is not the hostname but, a path component. However,\n        # Chrome will still consider example.com to be the hostname, so we must not\n        # allow this syntax.\n        if not url_info.netloc and url_info.scheme:\n            return False\n        # Forbid URLs that start with control characters. Some browsers (like\n        # Chrome) ignore quite a few control characters at the start of a\n        # URL and might consider the URL as scheme relative.\n        if unicodedata.category(url[0])[0] == 'C':\n            return False\n        url_domain = url_info.netloc.split(':')[0].split('.')[-2] if url_info.netloc else ''\n        host_domain = host.split(':')[0].split('.')[-2] if host else ''\n        return ((not url_info.netloc or url_domain == host_domain) and\n                (not url_info.scheme or url_info.scheme in ['http', 'https']))\n\n    def get_bk_token(self, username):\n        \"\"\"\n        生成用户的登录态\n        \"\"\"\n        bk_token = ''\n        expire_time = int(time.time())\n        # 重试5次\n        retry_count = 0\n        while not bk_token and retry_count < 5:\n            now_time = int(time.time())\n            expire_time = now_time + self.BK_COOKIE_AGE\n            plain_token = 'login|%s|%s|%s' % (expire_time, username, salt())\n            bk_token = encrypt(plain_token)\n            try:\n                BkToken.objects.create(token=bk_token, username=username, token_type=\"login\")\n            except Exception as error:\n                logger.exception('Login ticket failed to be saved during ticket generation, error: {}'.format(error))\n                # 循环结束前将bk_token置空后重新生成\n                bk_token = '' if retry_count < 4 else bk_token\n            retry_count += 1\n        return bk_token, datetime.datetime.fromtimestamp(expire_time, timezone.get_current_timezone())\n\n    def _decrypt_token(self, bk_token):\n        # logger.info(f\"Received bk_token in _decrypt_token: {bk_token}, type: {type(bk_token)}\")\n        if bk_token == 'None' or bk_token is None or not bk_token:\n            logger.info(\"Invalid bk_token detected, returning without decrypt\")\n            return False, _(\"参数bk_token非法\"), None\n        try:\n            plain_bk_token = decrypt(bk_token)\n        except Exception as error:\n            plain_bk_token = ''\n            logger.exception(\"Parameter parse failed, error: TOKEN:({}), {}\".format(bk_token, error))\n\n        # 参数bk_token非法\n        error_msg = _(\"参数bk_token非法\")\n        if not plain_bk_token:\n            return False, error_msg, None\n\n        try:\n            token_info = plain_bk_token.split('|')\n        except Exception as error:\n            token_info = []\n            logger.exception(\"token info wrong, error: {}\".format(error))\n\n        return True, None, token_info\n\n    def _is_bk_token_valid(self, bk_token, request_api_from=\"\", url_app_code=\"\", url_path=None, url_method=None):\n        \"\"\"\n        验证用户登录态\n        bk_token：bk_token或api_token\n        request_api_from：接口来源(当是esb调用saas时，来源为esb, 当页面调用saas api时为web)\n        url_app_code：API接口平台\n        url_path：API接口路径\n        url_method：API接口请求方式\n        \"\"\"\n        if not bk_token:\n            error_msg = _(\"缺少参数bk_token\")\n            return False, None, error_msg\n\n        if bk_token == \"None\":\n            error_msg = _(\"参数bk_token为None\")\n            return False, None, error_msg\n\n        ok, error_msg, token_info = self._decrypt_token(bk_token)\n        if not ok:\n            return False, None, error_msg\n        if not token_info:\n            return False, None, error_msg\n        lens = len(token_info)\n        if lens not in [3, 4]:\n            return False, None, \"Token解析失败，请登录后重试！!\"\n        query = BkToken.objects.filter(token=bk_token).first()\n        if query:\n            query.update(call_count=F('call_count') + 1)\n        if not query:\n            return False, None, _(\"不存在该bk_token的记录\")\n        if query.is_logout:\n            return False, None, _(\"登录态已注销\")\n        now_time = int(time.time())\n\n        if lens == 3:\n            token_info.insert(0, \"login\")\n        login_type = token_info[0]\n        expire_time = int(token_info[1])\n        username = token_info[2]\n\n        # token有效期已过\n        if now_time > expire_time + self.BK_TOKEN_OFFSET_ERROR_TIME:\n            error_msg = _(\"登录态已过期\")\n            return False, None, error_msg\n        if login_type == \"login\":  # login 根据本地过期时间处理\n            # token有效期大于当前时间的有效期\n            if expire_time - now_time > self.BK_COOKIE_AGE + self.BK_TOKEN_OFFSET_ERROR_TIME:\n                error_msg = _(\"登录态有效期不合法\")\n                return False, None, error_msg\n        elif login_type == \"api_token\":\n            auth_platform = query.auth_platform or []\n            auth_platform.extend([\"login\", \"paas\"])\n            if not request_api_from:\n                return False, None, \"此APIToken验证需要授权平台参数：request_api_from\"\n\n            if request_api_from not in [\"esb\", \"login\", \"paas\", \"web\", \"saas\"]:\n                return False, None, \"此APIToken授权平台来源不明确：{}\".format(request_api_from)\n            if request_api_from in [\"esb\", \"login\", \"paas\"] and request_api_from not in auth_platform:\n                msg = \"此APIToken未授权该平台：{}\".format(request_api_from)\n                if url_app_code and request_api_from != url_app_code:\n                    msg += f\"({url_app_code})\"\n                return False, None, msg\n            elif request_api_from in [\"web\", \"saas\"] and url_app_code not in auth_platform:\n                if not url_app_code:\n                    return False, None, \"此APIToken验证需要授权平台参数：url_app_code\"\n                return False, None, \"此APIToken未授权该平台：{}({})\".format(request_api_from, url_app_code or \"-\")\n        else:\n            return False, None, \"Token解析失败，请登录后重试！\"\n        return True, username, \"\"\n\n    def is_bk_token_valid(self, request):\n        \"\"\"处理本平台部分接口的认证操作\"\"\"\n        bk_token = request.COOKIES.get(self.BK_COOKIE_NAME)\n        return self._is_bk_token_valid(bk_token, \"login\", url_path=None, url_method=None)\n\n    def set_bk_token_invalid(self, request, response=None):\n        \"\"\"\n        将登录票据设置为不合法\n        \"\"\"\n        bk_token = request.COOKIES.get(self.BK_COOKIE_NAME)\n        if bk_token:\n            BkToken.objects.filter(token=bk_token).update(is_logout=True)\n        if response is not None:\n            # delete cookie\n            response.delete_cookie(self.BK_COOKIE_NAME, domain=settings.BK_COOKIE_DOMAIN)\n            return response\n        return None\n\n    def record_login_log(self, request, user, app_id, token=None):\n        \"\"\"\n        记录用户登录日志\n        \"\"\"\n        host = request.get_host()\n        login_browser = request.META.get('HTTP_USER_AGENT') or 'unknown'\n        # 获取用户ip request.META.get('HTTP_X_REAL_IP')\n        login_ip = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')\n        try:\n            if login_ip and \",\" in login_ip:\n                login_ip = login_ip.split(\",\")[0].split()\n        except Exception:\n            pass\n            # logger.info(\"IP地址[ID:%s]解析失败\", login_ip)\n        Loignlog.objects.record_login(user, login_browser, login_ip, host, app_id)\n        auth_object = OpsAnyRbacUserAuth(user.username, \"\")\n        try:\n            auth_object.update_login_log(token, login_ip, login_browser, host)\n        except Exception as e:\n            print(\"Login log error: {}\".format(str(e)))\n\n    def redirect_login(self, request):\n        \"\"\"\n        重定向到登录页面.\n\n        登录态验证不通过时调用\n        \"\"\"\n        # if request.is_ajax():\n        if request.headers.get('x-requested-with') == 'XMLHttpRequest':\n            return HttpResponse(status=401)\n\n        path = request.build_absolute_uri()\n        resolved_login_url = resolve_url(self.BK_LOGIN_URL)\n        # If the login url is the same scheme and net location then just\n        # use the path as the \"next\" url.\n        login_scheme, login_netloc = urlparse(resolved_login_url)[:2]\n        current_scheme, current_netloc = urlparse(path)[:2]\n        if ((not login_scheme or login_scheme == current_scheme) and\n                (not login_netloc or login_netloc == current_netloc)):\n            path = settings.SITE_URL[:-1] + request.get_full_path()\n        return redirect_to_login(\n            path, resolved_login_url, self.REDIRECT_FIELD_NAME)\n\n    def _check_white_list(self, username, request, auth_object):\n        import ipaddress\n        if username == \"admin\":\n            return True, \"管理员admin忽略白名单!\"\n        try:\n            status, res_data = auth_object.get_auth_config(auth_type=\"white_list\")\n            if not status:\n                return True, \"Success\"\n            white_list = res_data.get(\"white_list\") or \"\"\n\n            if not isinstance(res_data, dict):  return True, \"Success\"\n            if res_data.get(\"enabled\") is False: return True, \"Success\"\n\n            x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')\n            if x_forwarded_for:\n                ip = x_forwarded_for.split(',')[0]  # 第一个IP是原始客户端\n            else:\n                ip = request.META.get('REMOTE_ADDR')\n            networks = []\n            for entry in str(white_list).split(\",\"):\n                try:\n                    # 尝试解析为CIDR网段\n                    if '/' in entry:\n                        networks.append(ipaddress.ip_network(entry, strict=False))\n                    # 解析为单IP (自动转换为/32或/128)\n                    else:\n                        networks.append(ipaddress.ip_address(entry))\n                except ValueError:\n                    continue\n                    # networks.append(entry)\n            ip_obj = ipaddress.ip_address(ip)\n            if any(\n                    (isinstance(net, ipaddress.IPv4Network) and (ip_obj in net)) or\n                    (isinstance(net, ipaddress.IPv6Network) and (ip_obj in net)) or\n                    (isinstance(net, ipaddress.IPv4Address) and (ip_obj == net)) or\n                    (isinstance(net, ipaddress.IPv6Address) and (ip_obj == net))\n                    for net in networks\n            ):\n                return True, \"Success\"\n            return False, \"IP登录限制({}), 请联系管理员加入白名单!\".format(ip)\n        except Exception as e:\n            logger.exception('Login _check_white_list, error: {}'.format(str(e)))\n            return True, str(e)\n\n    def login(self, request, template_name='login/login.html',\n              # authentication_form=AuthenticationForm,\n              authentication_form=AuthenticationAndRegisterForm,\n              current_app=None, extra_context=None):\n        \"\"\"登录页面和登录动作\"\"\"\n        params = request.GET.dict()\n        # if (params.get(\"c_url\") and len(params) == 1) or not params:\n        #     return render(request, \"login/login.html\", {\"login_type\": \"0\", \"error\": \"Success\"})\n        \n        redirect_field_name = self.REDIRECT_FIELD_NAME\n        redirect_to = request.POST.get(redirect_field_name, params.get(redirect_field_name, '/'))\n        app_id = request.POST.get('app_id', params.get('app_id', ''))\n        c_url = request.POST.get('c_url', params.get('c_url', '/'))\n        tab_key = request.POST.get('tab_key',params.get('tab_key', 0))\n        #tab_key = request.POST.get('tab_key', request.GET.get('tab_key', 1))\n        # print(\"tab_key\", tab_key)\n        error_message = \"\"\n        is_qw = params.get(\"code\") and (params.get(\"auth_type\") or params.get(\"domain\") or (params.get(\"appid\")))\n        is_sso = params.get(\"domain\") and params.get(\"auth_type\") and params.get(\"sso_code\") and params.get(\"sso_sign\")\n        is_idaas = params.get(\"domain\") and (params.get(\"auth_type\") == \"9\")\n        is_iam = params.get(\"domain\") and (params.get(\"auth_type\") == \"10\")\n        # logger.info(f\"Received0000_login_get, {params}, {is_qw}, {is_sso}, {is_idaas}, {is_iam}\")\n        if request.method == 'POST':  # 密码本地登录 LDAP AD登录 第三方密码登录\n            status, return_data, form = self._login_post(request, tab_key, c_url, app_id, authentication_form)\n            if status == 1:\n                return render(request, \"login/login.html\", return_data)\n            elif status == 2:\n                return self.login_success_response(request, form, redirect_to, app_id)\n\n        elif request.method == 'GET' and (is_qw or is_sso or is_idaas or is_iam):\n            status, user, form, error_message = self._login_get(request, tab_key, params, authentication_form)\n            if status:\n                redirect_to = \"/\"\n                return self.login_success_response(request, user, redirect_to, app_id)\n        else:\n            form = authentication_form(request)\n        current_site = get_current_site(request)\n        context = {\n            'form': form,\n            redirect_field_name: redirect_to,\n            'site': current_site,\n            'site_name': current_site.name,\n            'tab_key': tab_key,\n            'error_message': error_message,\n            'app_id': app_id\n        }\n        if extra_context is not None:\n            context.update(extra_context)\n        if current_app is not None:\n            request.current_app = current_app\n\n        response = TemplateResponse(request, template_name, context)\n        response = self.set_bk_token_invalid(request, response)\n        return response\n\n    def _login_get(self, request, tab_key, params, authentication_form):\n        appid = params.get(\"appid\")\n        code = params.get(\"code\")\n        domain = params.get(\"domain\")\n        ad_domain = params.get(\"ad_domain\")\n        auth_type = params.get(\"auth_type\")\n        sso_code = params.get(\"sso_code\")\n        sso_sign = params.get(\"sso_sign\")\n        return_data = {\"tab_key\": tab_key, \"app_id\": \"\", \"next\": \"\", \"IMG_URL\": settings.IMG_URL,\n                       \"SITE_URL\": settings.SITE_URL}\n        # if auth_type in [\"3\", \"6\"]:\n        #    if auth_type == \"6\":\n        #        auth_obj = OpsAnyRbacUserAuth(code=code, domain=domain)\n        #    else:\n        #        auth_obj = OpsAnyRbacUserAuth(code=code, app_id=appid)\n        auth_obj = None\n        if sso_code and sso_sign and auth_type in [\"8\"]:\n            auth_obj = OpsAnyRbacUserAuth(domain=domain, auth_type=auth_type, sso_code=sso_code, sso_sign=sso_sign)\n        elif code and domain:\n            auth_obj = OpsAnyRbacUserAuth(code=code, domain=domain, ad_domain=ad_domain)\n        elif auth_type in [\"3\", \"6\"]:\n            auth_obj = OpsAnyRbacUserAuth(code=code, app_id=appid, ad_domain=ad_domain)\n        elif auth_type in [\"9\", \"10\"]:\n            auth_obj = OpsAnyRbacUserAuth(auth_type=auth_type, domain=domain, params=params)\n        # status, message = self._check_white_list(\"get_username\", request, auth_obj)\n        # if not status:\n        #     return_data[\"error_message\"] = message\n        #     return render(request, \"login/login.html\", return_data)\n        user = None\n        if auth_obj:\n            status, res = auth_obj.check_users()\n            if status and res.get(\"auth_status\") and res.get(\"domain_status\") and res.get(\"have_user\"):\n                user_info = res.get(\"user_info\")\n                user = self.get_user(res, user_info.get(\"username\"))\n                return True, user, \"\", \"\"\n            else:\n                return_data[\"message\"] = res.get(\"message\")\n                form = authentication_form(request)\n                error_message = res.get(\"message\")\n        else:\n            return_data[\"message\"] = \"Unsupported auth type.\"\n            form = authentication_form(request)\n            error_message = \"Unsupported auth type.\"\n        return False, user, form, error_message\n\n    def _login_post(self, request, tab_key, c_url, app_id, authentication_form):\n        # 改写request中密码内容\n        request.POST = request.POST.copy()\n        request.POST[\"password\"] = request.POST[\"password\"].strip()\n        data = request.POST.dict()\n        next = data.get(\"next\", \"\")\n        username = data.get(\"username\", \"\")\n        password = data.get(\"password\", \"\")\n        google_auth_url = data.pop(\"google_auth_url\", {})\n        google_auth_type = data.pop(\"google_auth_type\", None)\n        secret = data.pop(\"secret\", \"\")\n        geetest_challenge = data.pop(\"geetest_challenge\", None)\n        geetest_seccode = data.pop(\"geetest_seccode\", None)\n        geetest_validate = data.pop(\"geetest_validate\", None)\n        mfa = data.pop(\"mfa\", None)\n        verify_code = data.pop(\"verify_code\", None)\n        seven_days_free = data.pop(\"seven_days_free\", 0)\n        domain = data.pop(\"domain\", None)\n        form = authentication_form(request, data=request.POST)\n        if domain:\n            username = username + \"@\" + domain\n\n        return_data = {\"app_id\": app_id, \"next\": next, \"IMG_URL\": settings.IMG_URL, \"SITE_URL\": settings.SITE_URL,\n                       \"tab_key\": tab_key}\n        if \"next\" in data and \"app_id\" in data:\n            if not geetest_challenge or not geetest_seccode or not geetest_validate:\n                return_data.update(**{\"data\": \"1\"})\n                return 1, return_data, form\n        auth_object = OpsAnyRbacUserAuth(username, password)\n        google_auth_status = auth_object.get_user_google_auth_status()\n        # print(\"google_auth_status\", google_auth_status, username)\n        status, message = self._check_white_list(username, request, auth_object)\n        if not status:\n            return_data[\"error_message\"] = message\n            return 1, return_data, form\n        if google_auth_status in [\"8\", \"9\"]:\n            return_data.update(**{\"data\": \"2\"})\n            return 1, return_data, form\n\n        if (\"@\" not in username) or ((not domain) and (\"@\" in username)):  # 密码本地登录 第三方用户本地密码登录\n            if not form.is_valid():\n                return 4, return_data, form\n            # if google_auth_status == \"1\":\n            if google_auth_status in [\"1\", \"3\", \"4\", \"5\", \"7\"]:\n                if google_auth_status in [\"3\"]:\n                    if google_auth_url:\n                        return_data.update(google_auth_url=google_auth_url, secret=secret)\n                    else:\n                        google_auth_pic = auth_object.get_google_auth()\n                        return_data.update(google_auth_url=google_auth_pic.get(\"url\", \"\"),\n                                           secret=google_auth_pic.get(\"secret\", \"\"))\n                if google_auth_type == \"bind_google_auth\":\n                    bind_google_auth = auth_object.bind_google_auth(secret=secret, verify_code=verify_code)\n                    return_data.update(bind_google_auth=bind_google_auth.get(\"data\", {}))\n                    if bind_google_auth.get(\"result\"):\n                        return 2, return_data, form\n                    else:\n                        return_data.update(username=username, password=password, mfa=\"start\", domain=domain,\n                                           c_url=c_url, verfiy_code=verify_code, seven_days_free=seven_days_free,\n                                           google_auth_status=google_auth_status,\n                                           geetest_challenge=geetest_challenge,\n                                           geetest_seccode=geetest_seccode, geetest_validate=geetest_validate\n                                           )\n                        return 1, return_data, form\n                mfa = \"start\" if not mfa else mfa\n            if mfa == \"start\":\n                check_status = auth_object.check_google_verify_code(verify_code, seven_days_free)\n                if check_status:\n                    return 2, return_data, form\n                else:\n                    return_data.update(username=username, password=password, mfa=\"start\", domain=domain,\n                                       c_url=c_url, verfiy_code=\"\", seven_days_free=seven_days_free,\n                                       google_auth_status=google_auth_status, geetest_challenge=geetest_challenge,\n                                       geetest_seccode=geetest_seccode, geetest_validate=geetest_validate,\n                                       check_status=False if verify_code else None\n                                       )\n                    return 1, return_data, form\n            else:\n                return 2, return_data, form\n\n        else:  # ADAP AD登录\n            res, data = auth_object.check_users()\n            # user = self.get_user(data, username)\n            if not res:\n                return 3, return_data, form\n            if google_auth_status in [\"1\", \"3\", \"4\", \"5\", \"7\"]:\n                if google_auth_status in [\"3\"]:\n                    if google_auth_url:\n                        return_data.update(google_auth_url=google_auth_url, secret=secret)\n                    else:\n                        google_auth_pic = auth_object.get_google_auth()\n                        return_data.update(google_auth_url=google_auth_pic.get(\"url\", \"\"),\n                                           secret=google_auth_pic.get(\"secret\", \"\"))\n                if google_auth_type == \"bind_google_auth\":\n                    bind_google_auth = auth_object.bind_google_auth(secret=secret, verify_code=verify_code)\n                    return_data.update(bind_google_auth=bind_google_auth.get(\"data\", {}))\n                    if bind_google_auth.get(\"result\"):\n                        return 2, return_data, form\n                    else:\n                        return_data.update(username=username, password=password, mfa=\"start\", domain=domain,\n                                           c_url=c_url, verfiy_code=verify_code, seven_days_free=seven_days_free,\n                                           google_auth_status=google_auth_status,\n                                           geetest_challenge=geetest_challenge,\n                                           geetest_seccode=geetest_seccode, geetest_validate=geetest_validate\n                                           )\n                        return 1, return_data, form\n                mfa = \"start\" if not mfa else mfa\n            if mfa == \"start\":\n                check_status = auth_object.check_google_verify_code(verify_code, seven_days_free)\n                if check_status:\n                    return 2, return_data, form\n                else:\n                    return_data.update(username=username, password=password, mfa=\"start\", domain=domain,\n                                       c_url=c_url, verfiy_code=\"\", seven_days_free=seven_days_free,\n                                       google_auth_status=google_auth_status, geetest_challenge=geetest_challenge,\n                                       geetest_seccode=geetest_seccode, geetest_validate=geetest_validate,\n                                       check_status=False if verify_code else None\n                                       )\n                    return 1, return_data, form\n            else:\n                return 2, return_data, form\n\n    def get_user(self, data, username):\n        \"\"\"\n        {\n            'have_user': False,\n            'auth_status': False,\n            'domain_status': False,\n            'user_info': {}\n        }\n        \"\"\"\n        have_user = data.get(\"have_user\")\n        user_info = data.get(\"user_info\")\n        if have_user:\n            username = user_info.get(\"username\")\n            password = str(uuid.uuid4()).split(\"-\")[-1]\n            status, user_dict, msg = BkUser.objects.get_user_info_v2(username)\n            if status:\n                user_id = user_dict.get(\"id\")\n            else:\n                user_id = None\n            result, user_id, message = BkUser.objects.modify_or_create_user_by_userid(\n                user_id,\n                user_info.get(\"username\"),\n                user_info.get(\"chname\", \"\"),\n                user_info.get(\"phone\", \"\"),\n                \"\" if user_info.get(\"email\", \"\") is None else user_info.get(\"email\", \"\"),\n                user_info.get(\"bk_role\", \"0\"),\n                password\n            )\n            return BkUser.objects.filter(id=user_id).first()\n        else:\n            user = BkUser.objects.filter(username=username).first()\n            if user:\n                user.delete()\n            return None\n\n    def logout(self, request, next_page=None):\n        \"\"\"\n        登出并重定向到登录页面\n        \"\"\"\n        redirect_field_name = self.REDIRECT_FIELD_NAME\n        auth_logout(request)\n\n        if (redirect_field_name in request.POST or redirect_field_name in request.GET):\n            next_page = request.POST.get(redirect_field_name,\n                                         request.GET.get(redirect_field_name))\n            # Security check -- don't allow redirection to a different host.\n            if not self.is_safe_url(url=next_page, host=request.get_host()):\n                next_page = request.path\n\n        if next_page:\n            # Redirect to this page until the session has been cleared.\n            response = HttpResponseRedirect(next_page)\n        else:\n            # Redirect to login url.\n            response = HttpResponseRedirect(\"{}?{}\".format(self.BK_LOGIN_URL, \"is_from_logout=1\"))\n\n        # 将登录票据设置为不合法\n        response = self.set_bk_token_invalid(request, response)\n        return response\n\n    def login_failed_response(self, request, redirect_to, app_id):\n        \"\"\"\n        登录失败跳转，目前重定向到登录，后续可返还支持自定义的错误页面\n        \"\"\"\n        redirect_url = self.BK_LOGIN_URL\n        query = {}\n        if redirect_to:\n            query[self.REDIRECT_FIELD_NAME] = redirect_to\n        if app_id:\n            query['app_id'] = app_id\n        if len(query):\n            redirect_url = \"{}?{}\".format(self.BK_LOGIN_URL, urllib.parse.urlencode(query))\n        response = HttpResponseRedirect(redirect_url)\n        response = self.set_bk_token_invalid(request, response)\n        return response\n\n    def login_success_response(self, request, user_or_form, redirect_to, app_id):\n        \"\"\"\n        用户验证成功后，登录处理\n        \"\"\"\n        # 判读是form还是user\n        if isinstance(user_or_form, AuthenticationForm):\n            user = user_or_form.get_user()\n            username = user_or_form.cleaned_data.get('username', '')\n        else:\n            user = user_or_form\n            username = user.username\n\n        # 检查回调URL是否安全，防钓鱼\n        if not self.is_safe_url(url=redirect_to, host=request.get_host()):\n            redirect_to = resolve_url('{}accounts/user/list/'.format(settings.SITE_URL))\n        # 设置用户登录\n        try:\n            auth_login(request, user)\n        except:\n            user.backend = \"django.contrib.auth.backends.ModelBackend\"\n            auth_login(request, user)\n        # 记录登录日志\n        bk_token, expire_time = self.get_bk_token(username)\n        response = HttpResponseRedirect(redirect_to)\n        response.set_cookie(self.BK_COOKIE_NAME, bk_token,\n                            expires=expire_time,\n                            domain=settings.BK_COOKIE_DOMAIN,\n                            httponly=True)\n        self.record_login_log(request, user, app_id, bk_token)\n        # NOTE: DO NOT SET THE LANGUAGE COOKIE HERE BEFORE I18N is AVAILABLE\n        # set cookie for app or platform\n        # bk_user_info, is_created = UserInfo.objects.get_or_create(user=user)\n        # response.set_cookie(settings.LANGUAGE_COOKIE_NAME, bk_user_info.language,\n        #                     # max_age=settings.LANGUAGE_COOKIE_AGE,\n        #                     expires=expire_time,\n        #                     path=settings.LANGUAGE_COOKIE_PATH,\n        #                     domain=settings.LANGUAGE_COOKIE_DOMAIN)\n        return response\n\n    def login_redirect_response(self, request, redirect_url, is_from_logout):\n        \"\"\"\n        登录重定向\n        \"\"\"\n        response = HttpResponseRedirect(redirect_url)\n        # 来自注销，则需清除蓝鲸bk_token\n        if is_from_logout:\n            response = self.set_bk_token_invalid(request, response)\n        return response\n\n    def _login_success(self, request, username):\n        response = JsonResponse({\"code\": 200, \"successcode\": 20000, \"data\": {}})\n        bk_token, expire_time = self.get_bk_token(username)\n        response.set_cookie(self.BK_COOKIE_NAME, bk_token,\n                            expires=expire_time,\n                            domain=settings.BK_COOKIE_DOMAIN,\n                            httponly=True)\n        user = BkUser.objects.filter(username=username).first()\n        self.record_login_log(request, user, \"\", bk_token)\n        return response\n\n    def login_api(self, request):\n        data = request.POST.dict()\n        username = data.get(\"username\", \"\").strip()\n        password = data.get(\"password\", \"\").strip()\n        domain = data.get(\"domain\", \"\").strip()\n        verify_code = data.get(\"verify_code\", \"\").strip()\n        seven_days_free = data.get(\"seven_days_free\", 0)\n        if domain:\n            username = username + \"@\" + domain\n        auth_object = OpsAnyRbacUserAuth(username, password)\n        if domain:\n            status, data = auth_object.check_users()\n            # LDAP用户如果没在蓝鲸创建则创建\n            self.get_user(data, username)\n        else:\n            status = AuthenticationForm(request, data=request.POST).is_valid()\n        if status:\n            # 检查MFA状态\n            res = auth_object.get_user_google_auth_status()\n            if res in [\"0\", \"2\"]:\n                return self._login_success(request, username)\n            elif res in [\"1\", \"3\", \"4\", \"5\", \"7\"]:\n                res = auth_object.check_google_verify_code(verify_code, seven_days_free)\n                if res:\n                    return self._login_success(request, username)\n                return JsonResponse({\"code\": 401, \"error_code\": 40101, \"message\": \"MFA验证码错误\"})\n            else:\n                if username == \"admin\":\n                    return self._login_success(request, username)\n                return JsonResponse({\"code\": 400, \"error_code\": 40000,\n                                     \"message\": \"ESB组件错误，请先联系管理员修复ESB后再做登录\"})\n        return JsonResponse({\"code\": 401, \"error_code\": 40100, \"message\": \"账号密码错误\"})\n\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/backends.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.contrib.auth.backends import ModelBackend\nfrom django.contrib.auth import get_user_model\nfrom rest_framework_simplejwt.authentication import JWTAuthentication\nfrom bkaccount.accounts import Account\n\n\nclass BkBackend(ModelBackend):\n    \"\"\"\n    自定义认证方法\n    \"\"\"\n\n    def authenticate(self, request):\n        account = Account()\n        login_status, username, message = account.is_bk_token_valid(request)\n        if not login_status:\n            return None\n\n        user_model = get_user_model()\n        try:\n            user = user_model._default_manager.get_by_natural_key(username)\n        except user_model.DoesNotExist:\n            user = None\n        return user\n\n\nclass JWTAuthenticationBackend(JWTAuthentication):\n    def authenticate(self, request):\n        try:\n            user_auth_tuple = super().authenticate(request)\n            if user_auth_tuple is not None:\n                user, auth = user_auth_tuple\n                request.user = user\n            return user_auth_tuple\n        except Exception:\n            return None\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport re\n\nimport pytz\nfrom django.utils.translation import gettext as _\n\nfrom common.constants import enum\n\n\n# 用户名校验规则：包含数字和字母，长度在4-20个字符\nUSERNAME_CHECK_PATTERN = re.compile(r'^[A-Za-z0-9][A-Za-z0-9#$%^&*.\\-_/@]{2,30}[A-Za-z0-9]$')\n# 密码校验规则: 仅包含数字、字母或!@#$%^*()_-+=，长度在8-20个字符, 且必须同时包含大小写字母和数字\nPASSWORD_CHECK_PATTERN = re.compile(r'^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9!@#\\$%\\^\\*\\(\\)-_\\+=]{8,20}$')\n# 中文名校验规则：数字、字母、中文汉字、下划线，长度在1-16个字符\nCHNAME_CHECK_PATTERN = re.compile(\"^[\\u4e00-\\u9fa5a-zA-Z0-9_]{1,16}$\")\n# Phone检验规则：11位数字\nPHONE_CHECK_PATTERN = re.compile(r'^\\d{11}$')\n\nRoleCodeEnum = enum(\n    STAFF=0,\n    SUPERUSER=1,\n    DEVELOPER=2,\n    OPERATOR=3,\n    AUDITOR=4\n)\n\nROLECODE_CHOICES = [\n    (RoleCodeEnum.STAFF, _(\"普通用户\")),\n    (RoleCodeEnum.SUPERUSER, _(\"管理员\")),\n    (RoleCodeEnum.DEVELOPER, _(\"开发者\")),\n    (RoleCodeEnum.OPERATOR, _(\"职能化用户\")),\n    (RoleCodeEnum.AUDITOR, _(\"审计员\"))\n]\n\nROLECODE_LIST = [\n    RoleCodeEnum.STAFF,\n    RoleCodeEnum.SUPERUSER,\n    RoleCodeEnum.DEVELOPER,\n    RoleCodeEnum.OPERATOR,\n    RoleCodeEnum.AUDITOR\n]\n\n\nApiErrorCodeEnum = enum(\n    SUCCESS=\"00\",\n    PARAM_NOT_VALID=\"1200\",\n    USER_NOT_EXISTS=\"1201\",\n    # 做兼容\n    USER_NOT_EXISTS2=\"1300\",\n    USER_INFO_UPDATE_FAIL=\"1202\"\n)\n\nApiErrorCodeEnumV2 = enum(\n    SUCCESS=0,\n    PARAM_NOT_VALID=1302100,\n    USER_NOT_EXISTS=1302101,\n    USER_INFO_UPDATE_FAIL=1302102,\n    USER_NOT_EXISTS2=1302103,\n)\n\nLanguageEnum = enum(\n    ZH_CN='zh-hans',\n    EN='en'\n)\n\nLANGUAGE_CHOICES = [\n    (LanguageEnum.ZH_CN, _(\"中文\")),\n    (LanguageEnum.EN, _(\"英文\"))\n]\n\nTIME_ZONE_LIST = pytz.common_timezones\n\nTIME_ZONE_CHOICES = [(i, i) for i in TIME_ZONE_LIST]\n\n\n# note: Add synchronization when add login api\nLOGIN_API_URL_SUFFIX_LIST = [\n    'is_login',\n    'get_user',\n    'get_all_user',\n    'get_batch_user',\n]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom functools import wraps, WRAPPER_ASSIGNMENTS\n\n#from django.utils.decorators import available_attrs\n\ndef available_attrs(fn):\n    return WRAPPER_ASSIGNMENTS\n\ndef login_exempt(view_func):\n    \"\"\"\n    登录豁免,被此装饰器修饰的action可以不校验登录\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n\n    wrapped_view.login_exempt = True\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/encryption.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n登录态加密方法.\n\n使用AES算法，ECB模式\n\"\"\" # noqa\n\ntry:\n        from common.log import logger\nexcept:\n        pass\n\n\nimport hashlib\nimport random\nfrom base64 import urlsafe_b64encode, urlsafe_b64decode\nfrom Crypto.Util.Padding import pad, unpad\n\nfrom Crypto.Cipher import AES\nfrom django.conf import settings\n\ndef ensure_bytes(s):\n    if isinstance(s, str):\n        return s.encode('utf-8')\n    return s\n\ndef decrypt(ciphertext, key='', base64=True):\n    \"\"\"\n    AES Decrypt\n    \"\"\"\n    # 直接返回 None，不进行后续操作\n    if ciphertext == 'None' or ciphertext is None or not ciphertext:\n        logger.info(\"Invalid ciphertext detected, returning None\")\n        return None\n    if not key:\n        key = settings.SECRET_KEY\n\n    if base64:\n        ciphertext = urlsafe_b64decode(str(ciphertext + '=' * (4 - len(ciphertext) % 4)))\n    if not ciphertext or ciphertext == 'None' or ciphertext == '':\n        return None\n\n    key = ensure_bytes(key)\n    key = hashlib.md5(key).digest()\n    cipher = AES.new(key, AES.MODE_ECB)\n    padded_plaintext = cipher.decrypt(ciphertext)\n    plaintext = unpad(padded_plaintext, AES.block_size)\n    return plaintext.decode('utf-8')\n\ndef encrypt(plaintext, key='', base64_type=True):\n    \"\"\"\n    AES Encrypt\n    \"\"\"\n    if not key:\n        key = settings.SECRET_KEY\n    if isinstance(plaintext, str):\n        plaintext = plaintext.encode('utf-8')\n\n    # 确保 key 是字节类型\n    if isinstance(key, str):\n        key = key.encode('utf-8')\n    key = ensure_bytes(key)\n    key = hashlib.md5(key).digest()\n    cipher = AES.new(key, AES.MODE_ECB)\n    padded_plaintext = pad(plaintext, AES.block_size)\n    ciphertext = cipher.encrypt(padded_plaintext)\n    encoded = urlsafe_b64encode(ciphertext).decode('utf-8').rstrip('=')\n    return encoded\n\n\ndef salt(length=8):\n    \"\"\"\n    生成长度为length 的随机字符串\n    \"\"\"\n    aplhabet = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n    return ''.join([random.choice(aplhabet) for _ in range(length)])\n\n\n\n\nif __name__ == '__main__':\n        a = \"m0qOJC3WuJrngjSXdEtjwBeLRVH_dKkQM0CBrAjIyAA\"\n        print(\"decrypt\", decrypt(a, key=\"jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I\"))\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.utils.translation import gettext as _\nfrom django import forms\nfrom django.contrib.auth.forms import UserCreationForm, UserChangeForm, AuthenticationForm\n\nfrom bkaccount.models import BkUser\nfrom bkaccount.constants import (USERNAME_CHECK_PATTERN, CHNAME_CHECK_PATTERN,\n                                 PHONE_CHECK_PATTERN, PASSWORD_CHECK_PATTERN)\n\n\nclass BkUserCreationForm(UserCreationForm):\n    \"\"\"\n    A form that creates a user, with no privileges, from the given email andpassword\n    \"\"\"\n\n    def __init__(self, *args, **kargs):\n        super(BkUserCreationForm, self).__init__(*args, **kargs)\n\n    class Meta:\n        model = BkUser\n        fields = (\"username\",)\n\n\nclass BkUserChangeForm(UserChangeForm):\n    \"\"\"\n    A form for updating users\n\n    Includes all the fields onthe user,\n    but replaces the password field with admin'spassword hash display field.\n    \"\"\"\n\n    def __init__(self, *args, **kargs):\n        super(BkUserChangeForm, self).__init__(*args, **kargs)\n\n    class Meta:\n        model = BkUser\n        fields = ('username', 'password')\n\n\nclass UserQueryForm(forms.Form):\n    search_data = forms.CharField(required=False)\n    search_role = forms.CharField(required=False)\n    page = forms.IntegerField(required=False)\n    page_size = forms.IntegerField(required=False)\n\n    def clean_search_data(self):\n        search_data = self.cleaned_data[\"search_data\"]\n        return search_data.replace('&nbsp;', '').strip()\n\n    def clean_page(self):\n        page = self.cleaned_data[\"page\"]\n        return 1 if page is None else page\n\n    def clean_page_size(self):\n        page_size = self.cleaned_data[\"page_size\"]\n        return 10 if page_size is None else page_size\n\n\nclass BaseUserInfoForm(forms.Form):\n    chname = forms.CharField(max_length=254, required=False, error_messages={\n        \"max_length\": _(\"名称长度不能超过254个字符\")\n    })\n    phone = forms.CharField(max_length=50, required=False, error_messages={\n        \"max_length\": _(\"手机号长度不能超过50个字符\")\n    })\n    email = forms.EmailField(max_length=254, required=False)\n\n    def clean_chname(self):\n        chname = self.cleaned_data.get(\"chname\", \"\")\n        chname = chname.strip()\n        # if chname:\n        #     if not CHNAME_CHECK_PATTERN.match(chname):\n        #         self.add_error('chname', _(\"中文名错误，只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"))\n        return chname\n\n    def clean_phone(self):\n        phone = self.cleaned_data.get(\"phone\", \"\")\n        if phone:\n            phone = phone.strip()\n            # if not PHONE_CHECK_PATTERN.match(phone):\n            #     self.add_error('phone', _(\"手机号错误，仅支持11位数字的号码\"))\n        return phone\n    \n    def clean_email(self):\n        email = self.cleaned_data.get(\"email\", \"\")\n        return email\n        \n\nclass UserInfoForm(BaseUserInfoForm):\n    username = forms.CharField(max_length=128, min_length=4, error_messages={\n        \"required\": _(\"用户名不能为空\"),\n        \"max_length\": _(\"用户名长度不能超过128个字符\"),\n        \"min_length\": _(\"用户名长度不能少于4个字符\")\n    })\n    role = forms.IntegerField(required=False)\n\n    def clean_username(self):\n        username = self.cleaned_data[\"username\"]\n        username = username.strip()\n        if not USERNAME_CHECK_PATTERN.match(username):\n            self.add_error('username', _(\"用户名错误，只能包含数字、字母或#$%^&*.-_/，长度在4-128个字符，且必须以字母或数字开头\"))\n        return username\n\n\nclass SetPasswordForm(forms.Form):\n    new_password1 = forms.CharField(max_length=20, min_length=8, error_messages={\n        \"required\": _(\"新密码不能为空\"),\n        \"max_length\": _(\"密码长度不能超过20个字符\"),\n        \"min_length\": _(\"密码长度不能少于8个字符\")\n    })\n    new_password2 = forms.CharField()\n\n    def clean_new_password2(self):\n        password1 = self.cleaned_data['new_password1']\n        password1 = password1.strip()\n        password2 = self.cleaned_data['new_password2']\n        password2 = password2.strip()\n        if not all([password1, password2]):\n            self.add_error('new password', _(\"新密码不能为空\"))\n        if password1 != password2:\n            self.add_error('new password', _(\"两次输入的新密码不一致\"))\n        if not PASSWORD_CHECK_PATTERN.match(password1):\n            self.add_error(\"new password\", _(\"密码只支持数字、字母或!@#$%^*()_-+=，长度在8-20个字符，且必须保证包含大小写字母和数字\"))\n        return password1\n\n\nclass PasswordForm(forms.Form):\n    new_password = forms.CharField(max_length=20, min_length=8, error_messages={\n        \"required\": _(\"新密码不能为空\"),\n        \"max_length\": _(\"密码长度不能超过20个字符\"),\n        \"min_length\": _(\"密码长度不能少于8个字符\")\n    })\n\n    def clean_new_password(self):\n        new_password = self.cleaned_data['new_password']\n        new_password = new_password.strip()\n        if not PASSWORD_CHECK_PATTERN.match(new_password):\n            self.add_error(\"new_password\", _(\"密码只支持数字、字母或!@#$%^*()_-+=，长度在8-20个字符，且必须保证包含大小写字母和数字\"))\n        return new_password\n\n\nclass WeixinInfoForm(forms.Form):\n    wx_userid = forms.CharField(error_messages={\"required\": _(\"wx_userid 不能为空\")})\n\n\nclass ImportUserForm(forms.Form):\n    file_name = forms.CharField(error_messages={\"required\": _(\"文件必须上传\")})\n\n    def clean_file_name(self):\n        try:\n            file_name = self.cleaned_data['file_name']\n            file_type = file_name.split(\".\")[-1]\n            if file_type not in ['xls', 'xlsx']:\n                self.add_error(\"file_name\", _(\"文件格式错误，只支持：.xls 和 .xlsx 文件\"))\n                return file_name\n        except Exception:\n            self.add_error(\"file_name\", _(\"批量导入用户，解析文件名出错\"))\n\n\n\nclass AuthenticationAndRegisterForm(AuthenticationForm):\n    # geetest_challenge = forms.CharField(error_messages={\n    #     \"required\": \"必须通过验证\"\n    # })\n    # geetest_validate = forms.CharField(error_messages={\n    #     \"required\": \"必须通过验证\"\n    # })\n    # geetest_seccode = forms.CharField(error_messages={\n    #     \"required\": \"必须通过验证\"\n    # })\n\n    error_messages = {\n        'invalid_login': _(\n            \"请输入正确的用户名或密码!\"\n            \"\"\n        ),\n        'inactive': _(\"该账号已禁用.\"),\n    }\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/geetest.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\nimport random\nfrom django.http.response import JsonResponse\n\n\nclass GeetestLibResult:\n\n    def __init__(self):\n        self.status = 0\n        self.data = ''\n        self.msg = ''\n\n    def set_all(self, status, data, msg):\n        self.status = status\n        self.data = data\n        self.msg = msg\n\n    def __str__(self):\n        return \"GeetestLibResult{{status={0}, data={1}, msg={2}}}\".format(self.status, self.data, self.msg)\n\n\nclass GeeTest:\n    JSON_FORMAT = \"1\"\n    NEW_CAPTCHA = True\n    HTTP_TIMEOUT_DEFAULT = 5\n    VERSION = \"python-flask:3.1.1\"\n    GEETEST_CHALLENGE = \"geetest_challenge\"\n    GEETEST_VALIDATE = \"geetest_validate\"\n    GEETEST_SECCODE = \"geetest_seccode\"\n\n    def __init__(self):\n        self.libResult = GeetestLibResult()\n\n    def build_register_result(self):\n        challenge = \"\".join(random.sample('abcdefghijklmnopqrstuvwxyz0123456789', 32))\n        geetest_id = \"\".join(random.sample('abcdefghijklmnopqrstuvwxyz0123456789', 32))\n        data = json.dumps(\n            {\"success\": 0, \"gt\": geetest_id, \"challenge\": challenge, \"new_captcha\": self.NEW_CAPTCHA})\n        self.libResult.set_all(0, data, \"\")\n\n    def local_init(self):\n        self.build_register_result()\n        return JsonResponse({\n            \"code\": \"200\",\n            \"message\": \"相关信息信息获取成功\",\n            \"data\": json.loads(self.libResult.data),\n        })\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.utils.translation import gettext as _\nfrom django.db import models\nfrom django.db.models import Q\nfrom django.db import IntegrityError\nfrom django.contrib.auth.models import BaseUserManager\nfrom django.core.paginator import Paginator, EmptyPage, PageNotAnInteger\nfrom django.conf import settings\nfrom django.utils import timezone\n\nfrom common.log import logger\nfrom bkaccount.constants import (RoleCodeEnum, ROLECODE_LIST, ApiErrorCodeEnum)\n\n\nclass BkUserManager(BaseUserManager):\n    \"\"\"\n    BK user manager\n    \"\"\"\n\n    def _create_user(self, username, password, is_superuser, **extra_fields):\n        \"\"\"\n        Create and saves a User with the given username and password\n        \"\"\"\n        if not username:\n            raise ValueError(\"please fill in username\")\n\n        now = timezone.now()\n        user = self.model(\n            username=username,\n            is_superuser=is_superuser,\n            last_login=now,\n            date_joined=now, **extra_fields)\n        user.set_password(password)\n        user.save(using=self._db)\n        return user\n\n    def create_user(self, username, password=None, **extra_fields):\n        return self._create_user(username, password, False,\n                                 **extra_fields)\n\n    def create_superuser(self, username, password, **extra_fields):\n        return self._create_user(username, password, True,\n                                 **extra_fields)\n\n    def _check_user_exist(self, username):\n        \"\"\"\n        检查用户是否存在\n        \"\"\"\n        try:\n            user = self.get(username=username)\n        except Exception:\n            return False, None, _(\"用户名不存在\")\n        return True, user, ''\n\n    def _get_user_info(self, user):\n        return {\n            'username': user.username,\n            'chname': user.chname,\n            'qq': '',\n            'phone': user.phone,\n            'email': user.email,\n            'role': str(user.role_code),\n            'wx_userid': user.wx_userid,\n            'language': user.language,\n            'time_zone': user.time_zone\n        }\n\n    def _get_user_info_v2(self, user):\n        return {\n            #'bk_username': user.username,\n            #'chname': user.chname,\n            #'qq': '',\n            #'phone': user.phone,\n            #'email': user.email,\n            #'bk_role': user.role_code,\n            #'wx_userid': user.wx_userid,\n            #'language': user.language,\n            #'time_zone': user.time_zone\n            'id': user.id,\n            'bk_username': user.username,\n            'chname': user.chname,\n            'qq': '',\n            'phone': user.phone,\n            'email': user.email,\n            'bk_role': user.role_code,\n            'wx_userid': user.wx_userid,\n            'language': user.language,\n            'time_zone': user.time_zone,\n            'last_login': user.last_login,\n            'date_joined': user.date_joined\n        }\n\n    def get_user_info(self, username):\n        \"\"\"\n        获取用户信息（结果，用户信息，错误信息）\n        \"\"\"\n        is_exist, user, msg = self._check_user_exist(username)\n        if not is_exist:\n            return False, {}, msg\n        return True, self._get_user_info(user), ''\n\n    def get_user_info_v2(self, username):\n        \"\"\"\n        获取用户信息（结果，用户信息，错误信息）\n        \"\"\"\n        is_exist, user, msg = self._check_user_exist(username)\n        if not is_exist:\n            return False, {}, msg\n        return True, self._get_user_info_v2(user), ''\n\n    def get_all_user(self, role):\n        \"\"\"\n        获取所有用户\n        \"\"\"\n        users = self.all()\n        if role.isdigit() and int(role) in ROLECODE_LIST:\n            users = [user for user in users if user.role_code == int(role)]\n        return [self._get_user_info(user) for user in users]\n\n    def get_all_users_v2(self, role):\n        \"\"\"\n        获取所有用户\n        \"\"\"\n        users = self.all()\n        if role.isdigit() and int(role) in ROLECODE_LIST:\n            users = [user for user in users if user.role_code == int(role)]\n        return [self._get_user_info_v2(user) for user in users]\n\n    def get_batch_user_with_dict(self, username_list):\n        \"\"\"\n        批量获取用户，并以username为key的字典返回\n        \"\"\"\n        data = {}\n        users = self.filter(username__in=username_list)\n        for user in users:\n            data[user.username] = self._get_user_info(user)\n        return data\n\n    def get_batch_users_with_dict_v2(self, username_list):\n        \"\"\"\n        批量获取用户，并以username为key的字典返回\n        \"\"\"\n        data = {}\n        users = self.filter(username__in=username_list)\n        for user in users:\n            data[user.username] = self._get_user_info_v2(user)\n        return data\n\n    def modify_password_by_username(self, username, password):\n        \"\"\"\n        修改用户密码(结果，错误类型，错误信息)\n        \"\"\"\n        is_exist, user, msg = self._check_user_exist(username)\n        if not is_exist:\n            return False, ApiErrorCodeEnum.USER_NOT_EXISTS, msg\n        try:\n            # 更新密码\n            user.set_password(password)\n            user.save()\n        except Exception as error:\n            logger.exception('user paasword reset error: {}'.format(error))\n            return False, ApiErrorCodeEnum.USER_INFO_UPDATE_FAIL, _(\"用户密码重置失败\")\n        return True, ApiErrorCodeEnum.SUCCESS, ''\n\n    def modify_user_info(self, username, chname, phone, email):\n        \"\"\"\n        修改用户信息(结果，错误类型，错误信息)\n        \"\"\"\n        is_exist, user, msg = self._check_user_exist(username)\n        if not is_exist:\n            return False, ApiErrorCodeEnum.USER_NOT_EXISTS, msg\n        try:\n            user.chname = chname\n            user.phone = phone\n            user.email = email\n            user.save()\n        except Exception as error:\n            logger.exception('user info modify failed, error: {}'.format(error))\n            return False, ApiErrorCodeEnum.USER_INFO_UPDATE_FAIL, _(\"个人信息修改失败\")\n        return True, ApiErrorCodeEnum.SUCCESS, ''\n\n    def _modify_or_create_user_role(self, user, role_code):\n        \"\"\"\n        修改或者添加用户角色\n        \"\"\"\n        from bkaccount.models import BkUserRole, BkRole\n        # 先删除\n        BkUserRole.objects.filter(user=user).delete()\n        # 后添加\n        bkrole = BkRole.objects.get(code=role_code)\n        BkUserRole.objects.create(user=user, role=bkrole)\n        return True\n\n    def modify_user_role(self, username, role):\n        \"\"\"\n        修改用户角色\n        \"\"\"\n        is_exist, user, msg = self._check_user_exist(username)\n        if not is_exist:\n            return False, msg\n        if role in ROLECODE_LIST:\n            # 最后一个管理员不能修改角色\n            if role != RoleCodeEnum.SUPERUSER and not self.exclude(id=user.id).filter(is_superuser=True).exists():\n                return False, _(\"该用户是最后一个管理员，不可修改其角色\")\n            user.is_superuser = (role == RoleCodeEnum.SUPERUSER)\n            user.save()\n            self._modify_or_create_user_role(user, role)\n        return True, ''\n\n    def get_batch_user_with_paginator(self, page, page_size, search_username, search_data, search_role):\n        \"\"\"\n        批量获取用户信息 并分页\n        \"\"\"\n        # 根据查询条件过滤\n        if search_username:\n            all_query = self.filter(username=search_username)\n        else:\n            all_query = self.all().order_by('-id')\n\n        if search_role:\n            all_query = all_query.filter(role__code=int(search_role))\n        if search_data:\n            all_query = all_query.filter(\n                Q(username__icontains=search_data) |\n                Q(chname__icontains=search_data)\n            )\n        # 获取分页信息\n        paginator = Paginator(all_query, page_size)\n        try:\n            records = paginator.page(page)\n        except PageNotAnInteger:\n            records = paginator.page(1)\n        except EmptyPage:\n            records = paginator.page(paginator.num_pages)\n        return records\n\n    def modify_or_create_user_by_userid(self, user_id, username, chname, phone, email, role, password=\"\"):\n        \"\"\"\n        修改或者创建用户\n        \"\"\"\n        try:\n            # 最后一个管理员不能去除管理员角色\n            if user_id and role != RoleCodeEnum.SUPERUSER:\n                if not self.exclude(id=user_id).filter(is_superuser=True).exists():\n                    return False, user_id, _(\"用户是最后一个管理员，不可修改其角色\")\n            if user_id:\n                user = self.get(id=user_id)\n                user.chname = chname\n                user.phone = phone\n                user.email = email\n                user.is_superuser = (role == RoleCodeEnum.SUPERUSER)\n                user.save()\n            else:\n                user = self.create(\n                    username=username,\n                    chname=chname,\n                    qq='',\n                    phone=phone,\n                    email=email,\n                    is_superuser=(role == RoleCodeEnum.SUPERUSER)\n                )\n                # 新用户设置默认密码\n                if password:\n                    user.set_password(password)\n                else:\n                    user.set_password(settings.PASSWORD)\n                user.save()\n                user_id = user.id\n            # 添加或者修改用户角色\n            if role in ROLECODE_LIST:\n                self._modify_or_create_user_role(user, role)\n        except IntegrityError as e:\n            print(e)\n            return False, user_id, _(\"用户已经存在\")\n        except Exception as error:\n            logger.exception(\"user info save failed, error: {}\".format(error))\n            return False, user_id, _(\"保存用户信息出错\")\n        return True, user_id, ''\n\n    def modify_or_create_user_by_username(self, username, chname, phone, email, role=None):\n        \"\"\"\n        通过username,修改或者创建用户\n        \"\"\"\n        user, _c = self.get_or_create(username=username)\n        user.chname = chname\n        user.qq = ''\n        user.phone = phone\n        user.email = email\n        # 新增用户\n        if _c:\n            # 新用户设置默认密码\n            user.set_password(settings.PASSWORD)\n            # 新用户 role为None则为STAFF\n            role = role if role is not None else RoleCodeEnum.STAFF\n        # 非新增用户只有role非None才进行修改，新用户一定设置\n        if role is not None:\n            user.is_superuser = (role == RoleCodeEnum.SUPERUSER)\n            self._modify_or_create_user_role(user, role)\n        user.save()\n        return True\n\n    def delete_user(self, user_id):\n        \"\"\"\n        删除用户\n        \"\"\"\n        try:\n            user = self.get(id=user_id)\n            # admin用户不可删除\n            if user.username == 'admin':\n                return False, _(\"内置admin用户不可删除\")\n            # 最后一个管理员，则不可删除\n            if user.is_superuser and not self.exclude(id=user_id).filter(is_superuser=True).exists():\n                return False, _(\"最后一个管理员用户，不允许删除\")\n            # 删除用户\n            self.filter(id=user_id).delete()\n        except Exception as error:\n            logger.exception(\"user delete failed, error: {}\".format(error))\n            return False, _(\"用户删除失败\")\n        return True, ''\n\n    def modify_password_by_userid(self, user_id, password):\n        \"\"\"\n        修改用户密码(结果，错误类型，错误信息)\n        \"\"\"\n        try:\n            user = self.get(id=user_id)\n            # 更新密码\n            user.set_password(password)\n            user.save()\n        except Exception as error:\n            logger.exception('user reset password failed, error: {}'.format(error))\n            return False, _(\"用户密码重置失败\")\n        return True, ''\n\n    def bind_wx_user_info(self, user, wx_userid):\n        \"\"\"\n        绑定微信信息\n        \"\"\"\n        try:\n            # 查看用户是否已绑定\n            if user.wx_userid:\n                return False, _(\"已经绑定了微信，请解绑后再重新绑定！\")\n            # 检测wx_userid是否已经被绑定\n            from bkaccount.models import UserInfo\n            if UserInfo.objects.filter(wx_userid=wx_userid).exists():\n                return False, _(\"该微信号已经被绑定过了\")\n            user_info, _c = UserInfo.objects.get_or_create(user=user)\n            user_info.wx_userid = wx_userid\n            user_info.bind_time = timezone.now()\n            user_info.save()\n        except Exception as error:\n            logger.exception(\"user wechat info bind failed, error: {}\".format(error))\n            return False, _(\"绑定用户微信信息失败\")\n        return True, ''\n\n    def unbind_wx_user_info(self, user):\n        \"\"\"\n        解绑用户微信信息\n        \"\"\"\n        try:\n            # 检查用户是否已经被绑定\n            from bkaccount.models import UserInfo\n            if not UserInfo.objects.filter(user=user).exists():\n                return False, _(\"账号未绑定过微信号，无法解绑\")\n            UserInfo.objects.filter(user=user).update(wx_userid='')\n        except Exception as error:\n            logger.exception(\"user（%s）wechat info unbind failed, error: {}\".format(error))\n            return False, _(\"解绑用户微信信息失败\")\n        return True, ''\n\n    def set_user_i18n_info(self, user, language=None, time_zone=None):\n        \"\"\"\n        设置用户国际化信息\n        \"\"\"\n        from bkaccount.models import UserInfo\n        user_info, _c = UserInfo.objects.get_or_create(user=user)\n        if language:\n            user_info.language = language\n        if time_zone:\n            user_info.time_zone = time_zone\n        user_info.save()\n\n\nclass LoginLogManager(models.Manager):\n    \"\"\"\n    User login log manager\n    \"\"\"\n\n    def record_login(self, _user, _login_browser, _login_ip, host, app_id):\n        try:\n            self.model(\n                user=_user,\n                login_browser=_login_browser,\n                login_ip=_login_ip,\n                login_host=host,\n                login_time=timezone.now(),\n                app_id=app_id,\n            ).save()\n            return (True, _(\"记录成功\"))\n        except Exception:\n            return (False, _(\"用户登录记录失败\"))\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.conf import settings\nfrom django.utils import translation\nfrom django.contrib.auth import authenticate\nfrom django.contrib.auth.models import AnonymousUser\n\nfrom bk_i18n.constants import BK_LANG_TO_DJANGO_LANG\nfrom bkaccount.accounts import Account\nfrom django.utils.deprecation import MiddlewareMixin\n\n\nclass LoginMiddleware(MiddlewareMixin):\n    def process_request(self, request):\n        \"\"\"设置user\n        \"\"\"\n        # 静态资源不做登录态设置\n        full_path = request.get_full_path()\n        if full_path.startswith(settings.STATIC_URL) or full_path == '/robots.txt':\n            return None\n\n        # 静态资源不做登录态设置\n        if full_path in [settings.SITE_URL + 'i18n/setlang/', '/i18n/setlang/']:\n            return None\n\n        user = authenticate(request=request)\n        if user:\n            # 设置timezone session\n            request.session[settings.TIMEZONE_SESSION_KEY] = user.time_zone\n            # 设置language session\n            language = user.language\n            if language == \"zh-cn\":\n                language = \"zh-hans\"\n            request.session[settings.LANGUAGE_SESSION_KEY] = BK_LANG_TO_DJANGO_LANG[language]\n\n        request.user = user or AnonymousUser()\n\n    def process_view(self, request, view, args, kwargs):\n        # 静态资源不做登录态验证\n        full_path = request.get_full_path()\n        if full_path.startswith(settings.STATIC_URL) or full_path == '/robots.txt':\n            return None\n\n        # 静态资源不做登录态验证\n        if full_path in [settings.SITE_URL + 'i18n/setlang/', '/i18n/setlang/',\n                         settings.SITE_URL + 'jsi18n/i18n/', '/jsi18n/i18n/']:\n            return None\n\n        if getattr(view, 'login_exempt', False):\n            return None\n\n        if request.user.is_authenticated:\n            return None\n\n        account = Account()\n        return account.redirect_login(request)\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models, migrations\nimport django.utils.timezone\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('auth', '0006_require_contenttypes_0002'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='BkUser',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('password', models.CharField(max_length=128, verbose_name='password')),\n                ('last_login', models.DateTimeField(null=True, verbose_name='last login', blank=True)),\n                ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),\n                ('username', models.CharField(unique=True, max_length=128, verbose_name='\\u7528\\u6237\\u540d')),\n                ('chname', models.CharField(max_length=254, verbose_name='\\u4e2d\\u6587\\u540d', blank=True)),\n                ('qq', models.CharField(max_length=32, verbose_name='QQ\\u53f7', blank=True)),\n                ('phone', models.CharField(max_length=64, verbose_name='\\u624b\\u673a\\u53f7', blank=True)),\n                ('email', models.EmailField(max_length=254, verbose_name='\\u90ae\\u7bb1', blank=True)),\n                ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),\n                ('groups', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Group', blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', verbose_name='groups')),\n                ('user_permissions', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Permission', blank=True, help_text='Specific permissions for this user.', verbose_name='user permissions')),\n            ],\n            options={\n                'verbose_name': 'user',\n                'verbose_name_plural': 'users',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkToken',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('token', models.CharField(unique=True, max_length=255, verbose_name='\\u767b\\u5f55\\u7968\\u636e', db_index=True)),\n                ('is_logout', models.BooleanField(default=False, verbose_name='\\u7968\\u636e\\u662f\\u5426\\u5df2\\u7ecf\\u6267\\u884c\\u8fc7\\u9000\\u51fa\\u767b\\u5f55\\u64cd\\u4f5c')),\n            ],\n            options={\n                'db_table': 'login_bktoken',\n                'verbose_name': '\\u767b\\u5f55\\u7968\\u636e',\n                'verbose_name_plural': '\\u767b\\u5f55\\u7968\\u636e',\n            },\n        ),\n        migrations.CreateModel(\n            name='Loignlog',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('login_time', models.DateTimeField(verbose_name='\\u767b\\u5f55\\u65f6\\u95f4')),\n                ('login_browser', models.CharField(max_length=200, null=True, verbose_name='\\u767b\\u5f55\\u6d4f\\u89c8\\u5668', blank=True)),\n                ('login_ip', models.CharField(max_length=50, null=True, verbose_name='\\u7528\\u6237\\u767b\\u5f55ip', blank=True)),\n                ('login_host', models.CharField(max_length=100, null=True, verbose_name='\\u767b\\u5f55HOST', blank=True)),\n                ('app_id', models.CharField(max_length=30, null=True, verbose_name=b'APP_ID', blank=True)),\n                ('user', models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u7528\\u6237', to=settings.AUTH_USER_MODEL)),\n            ],\n            options={\n                'db_table': 'login_bklog',\n                'verbose_name': '\\u7528\\u6237\\u767b\\u5f55\\u65e5\\u5fd7',\n                'verbose_name_plural': '\\u7528\\u6237\\u767b\\u5f55\\u65e5\\u5fd7',\n            },\n        ),\n        migrations.CreateModel(\n            name='UserAuthToken',\n            fields=[\n                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('app_code', models.CharField(max_length=128, verbose_name='蓝鲸智云应用编码')),\n                ('username', models.CharField(max_length=64, verbose_name='用户名')),\n                ('auth_token', models.CharField(max_length=255, verbose_name='token内容')),\n                ('expires', models.DateTimeField(verbose_name='token过期时间')),\n                ('last_accessed_time', models.DateTimeField(auto_now_add=True, verbose_name='最后访问时间')),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),\n            ],\n            options={\n                'db_table': 'esb_user_auth_token',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0002_initial_user_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.db import migrations\nfrom django.conf import settings\nfrom django.contrib.auth import get_user_model\n\n\ndef initial_user_data(apps, schema_editor):\n    try:\n        user_model = get_user_model()\n        user_model.objects.create_superuser(settings.USERNAME, settings.PASSWORD)\n    except Exception as e:\n        print(e)\n        pass\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.RunPython(initial_user_data),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0003_bktoken_inactive_expire_time.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0002_initial_user_data'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='bktoken',\n            name='inactive_expire_time',\n            field=models.IntegerField(default=0, verbose_name='\\u65e0\\u64cd\\u4f5c\\u5931\\u6548\\u65f6\\u95f4\\u6233'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0004_auto_20170621_0929.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\nimport django.utils.timezone\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0003_bktoken_inactive_expire_time'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='BkRole',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('code', models.IntegerField(unique=True, verbose_name='\\u89d2\\u8272\\u7f16\\u53f7', choices=[(0, '\\u666e\\u901a\\u7528\\u6237'), (1, '\\u8d85\\u7ea7\\u7ba1\\u7406\\u5458'), (2, '\\u5f00\\u53d1\\u8005'), (3, '\\u804c\\u80fd\\u5316\\u7528\\u6237')])),\n            ],\n            options={\n                'db_table': 'login_bkrole',\n                'verbose_name': '\\u7528\\u6237\\u89d2\\u8272',\n                'verbose_name_plural': '\\u7528\\u6237\\u89d2\\u8272',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkUserRole',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='create_time')),\n                ('role', models.ForeignKey(on_delete=models.CASCADE, to='bkaccount.BkRole')),\n                ('user', models.ForeignKey(on_delete=models.CASCADE, to=settings.AUTH_USER_MODEL)),\n            ],\n            options={\n                'db_table': 'login_bkuser_role',\n                'verbose_name': '\\u7528\\u6237\\u89d2\\u8272\\u5173\\u7cfb\\u8868',\n                'verbose_name_plural': '\\u7528\\u6237\\u89d2\\u8272\\u5173\\u7cfb\\u8868',\n            },\n        ),\n        migrations.AddField(\n            model_name='bkuser',\n            name='role',\n            field=models.ManyToManyField(to='bkaccount.BkRole', verbose_name='\\u89d2\\u8272', through='bkaccount.BkUserRole'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0005_initial_role.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\nfrom bkaccount.constants import ROLECODE_CHOICES\n\n\ndef load_data(apps, schema_editor):\n    \"\"\"\n    初始化 用户角色\n    \"\"\"\n    BkRole = apps.get_model(\"bkaccount\", \"BkRole\")\n    for i in ROLECODE_CHOICES:\n        BkRole.objects.get_or_create(code=i[0])\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0004_auto_20170621_0929'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0006_initial_bkuser_role.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\nfrom bkaccount.constants import RoleCodeEnum\n\n\ndef load_data(apps, schema_editor):\n    \"\"\"\n    初始化已存在的用户的角色\n    \"\"\"\n    try:\n        user_model = apps.get_model(\"bkaccount\", \"BkUser\")\n        BkRole = apps.get_model(\"bkaccount\", \"BkRole\")\n        BkUserRole = apps.get_model(\"bkaccount\", \"BkUserRole\")\n        # 获取普通用户和超级用户角色\n        staff = BkRole.objects.get(code=RoleCodeEnum.STAFF)\n        superuser = BkRole.objects.get(code=RoleCodeEnum.SUPERUSER)\n        role_list = [staff, superuser]\n        all_user = user_model.objects.all()\n        bkuser_role_list = []\n        for i in all_user:\n            if not i.role.all().count():\n                # 沿用用户之前角色\n                bkuser_role_list.append(BkUserRole(user=i, role=role_list[int(i.is_superuser)]))\n        if bkuser_role_list:\n            BkUserRole.objects.bulk_create(bkuser_role_list)\n    except Exception as error:\n        print(error)\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0005_initial_role'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0007_userinfo.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0006_initial_bkuser_role'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='UserInfo',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('wx_userid', models.CharField(max_length=64, null=True, verbose_name='\\u4f01\\u4e1a\\u53f7\\u7528\\u6237USERID/\\u516c\\u4f17\\u53f7\\u7528\\u6237OPENID', blank=True)),\n                ('bind_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u5fae\\u4fe1\\u7ed1\\u5b9a\\u65f6\\u95f4', null=True)),\n                ('user', models.OneToOneField(on_delete=models.CASCADE, to=settings.AUTH_USER_MODEL)),\n            ],\n            options={\n                'db_table': 'login_userinfo',\n                'verbose_name': '\\u7528\\u6237\\u4fe1\\u606f',\n                'verbose_name_plural': '\\u7528\\u6237\\u4fe1\\u606f',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0008_auto_20171116_2026.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\nimport django.utils.timezone\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0007_userinfo'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='userinfo',\n            name='language',\n            field=models.CharField(blank=True, max_length=32, null=True, verbose_name='\\u8bed\\u8a00', choices=[(b'zh-cn', '\\u4e2d\\u6587'), (b'en', '\\u82f1\\u6587')]),\n        ),\n        migrations.AddField(\n            model_name='userinfo',\n            name='time_zone',\n            field=models.CharField(blank=True, max_length=32, null=True, verbose_name='\\u65f6\\u533a', choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Punta_Arenas', b'America/Punta_Arenas'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Atyrau', b'Asia/Atyrau'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Famagusta', b'Asia/Famagusta'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Saratov', b'Europe/Saratov'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]),\n        ),\n        migrations.AlterField(\n            model_name='userinfo',\n            name='bind_time',\n            field=models.DateTimeField(default=django.utils.timezone.now, null=True, verbose_name='\\u5fae\\u4fe1\\u7ed1\\u5b9a\\u65f6\\u95f4', blank=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0009_add_role_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\nfrom bkaccount.constants import ROLECODE_CHOICES\n\n\ndef load_data(apps, schema_editor):\n    \"\"\"\n    新增 用户角色\n    \"\"\"\n    BkRole = apps.get_model(\"bkaccount\", \"BkRole\")\n    for i in ROLECODE_CHOICES:\n        # 之前已经存在就不需要创建了\n        BkRole.objects.get_or_create(code=i[0])\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0008_auto_20171116_2026'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0010_alter_bkrole_code_alter_bkrole_id_and_more.py",
    "content": "# Generated by Django 4.2.16 on 2026-01-26 04:00\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0009_add_role_data'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='bkrole',\n            name='code',\n            field=models.IntegerField(choices=[(0, '普通用户'), (1, '管理员'), (2, '开发者'), (3, '职能化用户'), (4, '审计员')], unique=True, verbose_name='角色编号'),\n        ),\n        migrations.AlterField(\n            model_name='bkrole',\n            name='id',\n            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),\n        ),\n        migrations.AlterField(\n            model_name='bktoken',\n            name='id',\n            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),\n        ),\n        migrations.AlterField(\n            model_name='bkuser',\n            name='id',\n            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),\n        ),\n        migrations.AlterField(\n            model_name='bkuserrole',\n            name='id',\n            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),\n        ),\n        migrations.AlterField(\n            model_name='loignlog',\n            name='app_id',\n            field=models.CharField(blank=True, max_length=30, null=True, verbose_name='APP_ID'),\n        ),\n        migrations.AlterField(\n            model_name='loignlog',\n            name='id',\n            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),\n        ),\n        migrations.AlterField(\n            model_name='userinfo',\n            name='id',\n            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),\n        ),\n        migrations.AlterField(\n            model_name='userinfo',\n            name='language',\n            field=models.CharField(blank=True, choices=[('zh-hans', '中文'), ('en', '英文')], max_length=32, null=True, verbose_name='语言'),\n        ),\n        migrations.AlterField(\n            model_name='userinfo',\n            name='time_zone',\n            field=models.CharField(blank=True, choices=[('Africa/Abidjan', 'Africa/Abidjan'), ('Africa/Accra', 'Africa/Accra'), ('Africa/Addis_Ababa', 'Africa/Addis_Ababa'), ('Africa/Algiers', 'Africa/Algiers'), ('Africa/Asmara', 'Africa/Asmara'), ('Africa/Bamako', 'Africa/Bamako'), ('Africa/Bangui', 'Africa/Bangui'), ('Africa/Banjul', 'Africa/Banjul'), ('Africa/Bissau', 'Africa/Bissau'), ('Africa/Blantyre', 'Africa/Blantyre'), ('Africa/Brazzaville', 'Africa/Brazzaville'), ('Africa/Bujumbura', 'Africa/Bujumbura'), ('Africa/Cairo', 'Africa/Cairo'), ('Africa/Casablanca', 'Africa/Casablanca'), ('Africa/Ceuta', 'Africa/Ceuta'), ('Africa/Conakry', 'Africa/Conakry'), ('Africa/Dakar', 'Africa/Dakar'), ('Africa/Dar_es_Salaam', 'Africa/Dar_es_Salaam'), ('Africa/Djibouti', 'Africa/Djibouti'), ('Africa/Douala', 'Africa/Douala'), ('Africa/El_Aaiun', 'Africa/El_Aaiun'), ('Africa/Freetown', 'Africa/Freetown'), ('Africa/Gaborone', 'Africa/Gaborone'), ('Africa/Harare', 'Africa/Harare'), ('Africa/Johannesburg', 'Africa/Johannesburg'), ('Africa/Juba', 'Africa/Juba'), ('Africa/Kampala', 'Africa/Kampala'), ('Africa/Khartoum', 'Africa/Khartoum'), ('Africa/Kigali', 'Africa/Kigali'), ('Africa/Kinshasa', 'Africa/Kinshasa'), ('Africa/Lagos', 'Africa/Lagos'), ('Africa/Libreville', 'Africa/Libreville'), ('Africa/Lome', 'Africa/Lome'), ('Africa/Luanda', 'Africa/Luanda'), ('Africa/Lubumbashi', 'Africa/Lubumbashi'), ('Africa/Lusaka', 'Africa/Lusaka'), ('Africa/Malabo', 'Africa/Malabo'), ('Africa/Maputo', 'Africa/Maputo'), ('Africa/Maseru', 'Africa/Maseru'), ('Africa/Mbabane', 'Africa/Mbabane'), ('Africa/Mogadishu', 'Africa/Mogadishu'), ('Africa/Monrovia', 'Africa/Monrovia'), ('Africa/Nairobi', 'Africa/Nairobi'), ('Africa/Ndjamena', 'Africa/Ndjamena'), ('Africa/Niamey', 'Africa/Niamey'), ('Africa/Nouakchott', 'Africa/Nouakchott'), ('Africa/Ouagadougou', 'Africa/Ouagadougou'), ('Africa/Porto-Novo', 'Africa/Porto-Novo'), ('Africa/Sao_Tome', 'Africa/Sao_Tome'), ('Africa/Tripoli', 'Africa/Tripoli'), ('Africa/Tunis', 'Africa/Tunis'), ('Africa/Windhoek', 'Africa/Windhoek'), ('America/Adak', 'America/Adak'), ('America/Anchorage', 'America/Anchorage'), ('America/Anguilla', 'America/Anguilla'), ('America/Antigua', 'America/Antigua'), ('America/Araguaina', 'America/Araguaina'), ('America/Argentina/Buenos_Aires', 'America/Argentina/Buenos_Aires'), ('America/Argentina/Catamarca', 'America/Argentina/Catamarca'), ('America/Argentina/Cordoba', 'America/Argentina/Cordoba'), ('America/Argentina/Jujuy', 'America/Argentina/Jujuy'), ('America/Argentina/La_Rioja', 'America/Argentina/La_Rioja'), ('America/Argentina/Mendoza', 'America/Argentina/Mendoza'), ('America/Argentina/Rio_Gallegos', 'America/Argentina/Rio_Gallegos'), ('America/Argentina/Salta', 'America/Argentina/Salta'), ('America/Argentina/San_Juan', 'America/Argentina/San_Juan'), ('America/Argentina/San_Luis', 'America/Argentina/San_Luis'), ('America/Argentina/Tucuman', 'America/Argentina/Tucuman'), ('America/Argentina/Ushuaia', 'America/Argentina/Ushuaia'), ('America/Aruba', 'America/Aruba'), ('America/Asuncion', 'America/Asuncion'), ('America/Atikokan', 'America/Atikokan'), ('America/Bahia', 'America/Bahia'), ('America/Bahia_Banderas', 'America/Bahia_Banderas'), ('America/Barbados', 'America/Barbados'), ('America/Belem', 'America/Belem'), ('America/Belize', 'America/Belize'), ('America/Blanc-Sablon', 'America/Blanc-Sablon'), ('America/Boa_Vista', 'America/Boa_Vista'), ('America/Bogota', 'America/Bogota'), ('America/Boise', 'America/Boise'), ('America/Cambridge_Bay', 'America/Cambridge_Bay'), ('America/Campo_Grande', 'America/Campo_Grande'), ('America/Cancun', 'America/Cancun'), ('America/Caracas', 'America/Caracas'), ('America/Cayenne', 'America/Cayenne'), ('America/Cayman', 'America/Cayman'), ('America/Chicago', 'America/Chicago'), ('America/Chihuahua', 'America/Chihuahua'), ('America/Ciudad_Juarez', 'America/Ciudad_Juarez'), ('America/Costa_Rica', 'America/Costa_Rica'), ('America/Creston', 'America/Creston'), ('America/Cuiaba', 'America/Cuiaba'), ('America/Curacao', 'America/Curacao'), ('America/Danmarkshavn', 'America/Danmarkshavn'), ('America/Dawson', 'America/Dawson'), ('America/Dawson_Creek', 'America/Dawson_Creek'), ('America/Denver', 'America/Denver'), ('America/Detroit', 'America/Detroit'), ('America/Dominica', 'America/Dominica'), ('America/Edmonton', 'America/Edmonton'), ('America/Eirunepe', 'America/Eirunepe'), ('America/El_Salvador', 'America/El_Salvador'), ('America/Fort_Nelson', 'America/Fort_Nelson'), ('America/Fortaleza', 'America/Fortaleza'), ('America/Glace_Bay', 'America/Glace_Bay'), ('America/Goose_Bay', 'America/Goose_Bay'), ('America/Grand_Turk', 'America/Grand_Turk'), ('America/Grenada', 'America/Grenada'), ('America/Guadeloupe', 'America/Guadeloupe'), ('America/Guatemala', 'America/Guatemala'), ('America/Guayaquil', 'America/Guayaquil'), ('America/Guyana', 'America/Guyana'), ('America/Halifax', 'America/Halifax'), ('America/Havana', 'America/Havana'), ('America/Hermosillo', 'America/Hermosillo'), ('America/Indiana/Indianapolis', 'America/Indiana/Indianapolis'), ('America/Indiana/Knox', 'America/Indiana/Knox'), ('America/Indiana/Marengo', 'America/Indiana/Marengo'), ('America/Indiana/Petersburg', 'America/Indiana/Petersburg'), ('America/Indiana/Tell_City', 'America/Indiana/Tell_City'), ('America/Indiana/Vevay', 'America/Indiana/Vevay'), ('America/Indiana/Vincennes', 'America/Indiana/Vincennes'), ('America/Indiana/Winamac', 'America/Indiana/Winamac'), ('America/Inuvik', 'America/Inuvik'), ('America/Iqaluit', 'America/Iqaluit'), ('America/Jamaica', 'America/Jamaica'), ('America/Juneau', 'America/Juneau'), ('America/Kentucky/Louisville', 'America/Kentucky/Louisville'), ('America/Kentucky/Monticello', 'America/Kentucky/Monticello'), ('America/Kralendijk', 'America/Kralendijk'), ('America/La_Paz', 'America/La_Paz'), ('America/Lima', 'America/Lima'), ('America/Los_Angeles', 'America/Los_Angeles'), ('America/Lower_Princes', 'America/Lower_Princes'), ('America/Maceio', 'America/Maceio'), ('America/Managua', 'America/Managua'), ('America/Manaus', 'America/Manaus'), ('America/Marigot', 'America/Marigot'), ('America/Martinique', 'America/Martinique'), ('America/Matamoros', 'America/Matamoros'), ('America/Mazatlan', 'America/Mazatlan'), ('America/Menominee', 'America/Menominee'), ('America/Merida', 'America/Merida'), ('America/Metlakatla', 'America/Metlakatla'), ('America/Mexico_City', 'America/Mexico_City'), ('America/Miquelon', 'America/Miquelon'), ('America/Moncton', 'America/Moncton'), ('America/Monterrey', 'America/Monterrey'), ('America/Montevideo', 'America/Montevideo'), ('America/Montserrat', 'America/Montserrat'), ('America/Nassau', 'America/Nassau'), ('America/New_York', 'America/New_York'), ('America/Nome', 'America/Nome'), ('America/Noronha', 'America/Noronha'), ('America/North_Dakota/Beulah', 'America/North_Dakota/Beulah'), ('America/North_Dakota/Center', 'America/North_Dakota/Center'), ('America/North_Dakota/New_Salem', 'America/North_Dakota/New_Salem'), ('America/Nuuk', 'America/Nuuk'), ('America/Ojinaga', 'America/Ojinaga'), ('America/Panama', 'America/Panama'), ('America/Paramaribo', 'America/Paramaribo'), ('America/Phoenix', 'America/Phoenix'), ('America/Port-au-Prince', 'America/Port-au-Prince'), ('America/Port_of_Spain', 'America/Port_of_Spain'), ('America/Porto_Velho', 'America/Porto_Velho'), ('America/Puerto_Rico', 'America/Puerto_Rico'), ('America/Punta_Arenas', 'America/Punta_Arenas'), ('America/Rankin_Inlet', 'America/Rankin_Inlet'), ('America/Recife', 'America/Recife'), ('America/Regina', 'America/Regina'), ('America/Resolute', 'America/Resolute'), ('America/Rio_Branco', 'America/Rio_Branco'), ('America/Santarem', 'America/Santarem'), ('America/Santiago', 'America/Santiago'), ('America/Santo_Domingo', 'America/Santo_Domingo'), ('America/Sao_Paulo', 'America/Sao_Paulo'), ('America/Scoresbysund', 'America/Scoresbysund'), ('America/Sitka', 'America/Sitka'), ('America/St_Barthelemy', 'America/St_Barthelemy'), ('America/St_Johns', 'America/St_Johns'), ('America/St_Kitts', 'America/St_Kitts'), ('America/St_Lucia', 'America/St_Lucia'), ('America/St_Thomas', 'America/St_Thomas'), ('America/St_Vincent', 'America/St_Vincent'), ('America/Swift_Current', 'America/Swift_Current'), ('America/Tegucigalpa', 'America/Tegucigalpa'), ('America/Thule', 'America/Thule'), ('America/Tijuana', 'America/Tijuana'), ('America/Toronto', 'America/Toronto'), ('America/Tortola', 'America/Tortola'), ('America/Vancouver', 'America/Vancouver'), ('America/Whitehorse', 'America/Whitehorse'), ('America/Winnipeg', 'America/Winnipeg'), ('America/Yakutat', 'America/Yakutat'), ('Antarctica/Casey', 'Antarctica/Casey'), ('Antarctica/Davis', 'Antarctica/Davis'), ('Antarctica/DumontDUrville', 'Antarctica/DumontDUrville'), ('Antarctica/Macquarie', 'Antarctica/Macquarie'), ('Antarctica/Mawson', 'Antarctica/Mawson'), ('Antarctica/McMurdo', 'Antarctica/McMurdo'), ('Antarctica/Palmer', 'Antarctica/Palmer'), ('Antarctica/Rothera', 'Antarctica/Rothera'), ('Antarctica/Syowa', 'Antarctica/Syowa'), ('Antarctica/Troll', 'Antarctica/Troll'), ('Antarctica/Vostok', 'Antarctica/Vostok'), ('Arctic/Longyearbyen', 'Arctic/Longyearbyen'), ('Asia/Aden', 'Asia/Aden'), ('Asia/Almaty', 'Asia/Almaty'), ('Asia/Amman', 'Asia/Amman'), ('Asia/Anadyr', 'Asia/Anadyr'), ('Asia/Aqtau', 'Asia/Aqtau'), ('Asia/Aqtobe', 'Asia/Aqtobe'), ('Asia/Ashgabat', 'Asia/Ashgabat'), ('Asia/Atyrau', 'Asia/Atyrau'), ('Asia/Baghdad', 'Asia/Baghdad'), ('Asia/Bahrain', 'Asia/Bahrain'), ('Asia/Baku', 'Asia/Baku'), ('Asia/Bangkok', 'Asia/Bangkok'), ('Asia/Barnaul', 'Asia/Barnaul'), ('Asia/Beirut', 'Asia/Beirut'), ('Asia/Bishkek', 'Asia/Bishkek'), ('Asia/Brunei', 'Asia/Brunei'), ('Asia/Chita', 'Asia/Chita'), ('Asia/Colombo', 'Asia/Colombo'), ('Asia/Damascus', 'Asia/Damascus'), ('Asia/Dhaka', 'Asia/Dhaka'), ('Asia/Dili', 'Asia/Dili'), ('Asia/Dubai', 'Asia/Dubai'), ('Asia/Dushanbe', 'Asia/Dushanbe'), ('Asia/Famagusta', 'Asia/Famagusta'), ('Asia/Gaza', 'Asia/Gaza'), ('Asia/Hebron', 'Asia/Hebron'), ('Asia/Ho_Chi_Minh', 'Asia/Ho_Chi_Minh'), ('Asia/Hong_Kong', 'Asia/Hong_Kong'), ('Asia/Hovd', 'Asia/Hovd'), ('Asia/Irkutsk', 'Asia/Irkutsk'), ('Asia/Jakarta', 'Asia/Jakarta'), ('Asia/Jayapura', 'Asia/Jayapura'), ('Asia/Jerusalem', 'Asia/Jerusalem'), ('Asia/Kabul', 'Asia/Kabul'), ('Asia/Kamchatka', 'Asia/Kamchatka'), ('Asia/Karachi', 'Asia/Karachi'), ('Asia/Kathmandu', 'Asia/Kathmandu'), ('Asia/Khandyga', 'Asia/Khandyga'), ('Asia/Kolkata', 'Asia/Kolkata'), ('Asia/Krasnoyarsk', 'Asia/Krasnoyarsk'), ('Asia/Kuala_Lumpur', 'Asia/Kuala_Lumpur'), ('Asia/Kuching', 'Asia/Kuching'), ('Asia/Kuwait', 'Asia/Kuwait'), ('Asia/Macau', 'Asia/Macau'), ('Asia/Magadan', 'Asia/Magadan'), ('Asia/Makassar', 'Asia/Makassar'), ('Asia/Manila', 'Asia/Manila'), ('Asia/Muscat', 'Asia/Muscat'), ('Asia/Nicosia', 'Asia/Nicosia'), ('Asia/Novokuznetsk', 'Asia/Novokuznetsk'), ('Asia/Novosibirsk', 'Asia/Novosibirsk'), ('Asia/Omsk', 'Asia/Omsk'), ('Asia/Oral', 'Asia/Oral'), ('Asia/Phnom_Penh', 'Asia/Phnom_Penh'), ('Asia/Pontianak', 'Asia/Pontianak'), ('Asia/Pyongyang', 'Asia/Pyongyang'), ('Asia/Qatar', 'Asia/Qatar'), ('Asia/Qostanay', 'Asia/Qostanay'), ('Asia/Qyzylorda', 'Asia/Qyzylorda'), ('Asia/Riyadh', 'Asia/Riyadh'), ('Asia/Sakhalin', 'Asia/Sakhalin'), ('Asia/Samarkand', 'Asia/Samarkand'), ('Asia/Seoul', 'Asia/Seoul'), ('Asia/Shanghai', 'Asia/Shanghai'), ('Asia/Singapore', 'Asia/Singapore'), ('Asia/Srednekolymsk', 'Asia/Srednekolymsk'), ('Asia/Taipei', 'Asia/Taipei'), ('Asia/Tashkent', 'Asia/Tashkent'), ('Asia/Tbilisi', 'Asia/Tbilisi'), ('Asia/Tehran', 'Asia/Tehran'), ('Asia/Thimphu', 'Asia/Thimphu'), ('Asia/Tokyo', 'Asia/Tokyo'), ('Asia/Tomsk', 'Asia/Tomsk'), ('Asia/Ulaanbaatar', 'Asia/Ulaanbaatar'), ('Asia/Urumqi', 'Asia/Urumqi'), ('Asia/Ust-Nera', 'Asia/Ust-Nera'), ('Asia/Vientiane', 'Asia/Vientiane'), ('Asia/Vladivostok', 'Asia/Vladivostok'), ('Asia/Yakutsk', 'Asia/Yakutsk'), ('Asia/Yangon', 'Asia/Yangon'), ('Asia/Yekaterinburg', 'Asia/Yekaterinburg'), ('Asia/Yerevan', 'Asia/Yerevan'), ('Atlantic/Azores', 'Atlantic/Azores'), ('Atlantic/Bermuda', 'Atlantic/Bermuda'), ('Atlantic/Canary', 'Atlantic/Canary'), ('Atlantic/Cape_Verde', 'Atlantic/Cape_Verde'), ('Atlantic/Faroe', 'Atlantic/Faroe'), ('Atlantic/Madeira', 'Atlantic/Madeira'), ('Atlantic/Reykjavik', 'Atlantic/Reykjavik'), ('Atlantic/South_Georgia', 'Atlantic/South_Georgia'), ('Atlantic/St_Helena', 'Atlantic/St_Helena'), ('Atlantic/Stanley', 'Atlantic/Stanley'), ('Australia/Adelaide', 'Australia/Adelaide'), ('Australia/Brisbane', 'Australia/Brisbane'), ('Australia/Broken_Hill', 'Australia/Broken_Hill'), ('Australia/Darwin', 'Australia/Darwin'), ('Australia/Eucla', 'Australia/Eucla'), ('Australia/Hobart', 'Australia/Hobart'), ('Australia/Lindeman', 'Australia/Lindeman'), ('Australia/Lord_Howe', 'Australia/Lord_Howe'), ('Australia/Melbourne', 'Australia/Melbourne'), ('Australia/Perth', 'Australia/Perth'), ('Australia/Sydney', 'Australia/Sydney'), ('Canada/Atlantic', 'Canada/Atlantic'), ('Canada/Central', 'Canada/Central'), ('Canada/Eastern', 'Canada/Eastern'), ('Canada/Mountain', 'Canada/Mountain'), ('Canada/Newfoundland', 'Canada/Newfoundland'), ('Canada/Pacific', 'Canada/Pacific'), ('Europe/Amsterdam', 'Europe/Amsterdam'), ('Europe/Andorra', 'Europe/Andorra'), ('Europe/Astrakhan', 'Europe/Astrakhan'), ('Europe/Athens', 'Europe/Athens'), ('Europe/Belgrade', 'Europe/Belgrade'), ('Europe/Berlin', 'Europe/Berlin'), ('Europe/Bratislava', 'Europe/Bratislava'), ('Europe/Brussels', 'Europe/Brussels'), ('Europe/Bucharest', 'Europe/Bucharest'), ('Europe/Budapest', 'Europe/Budapest'), ('Europe/Busingen', 'Europe/Busingen'), ('Europe/Chisinau', 'Europe/Chisinau'), ('Europe/Copenhagen', 'Europe/Copenhagen'), ('Europe/Dublin', 'Europe/Dublin'), ('Europe/Gibraltar', 'Europe/Gibraltar'), ('Europe/Guernsey', 'Europe/Guernsey'), ('Europe/Helsinki', 'Europe/Helsinki'), ('Europe/Isle_of_Man', 'Europe/Isle_of_Man'), ('Europe/Istanbul', 'Europe/Istanbul'), ('Europe/Jersey', 'Europe/Jersey'), ('Europe/Kaliningrad', 'Europe/Kaliningrad'), ('Europe/Kirov', 'Europe/Kirov'), ('Europe/Kyiv', 'Europe/Kyiv'), ('Europe/Lisbon', 'Europe/Lisbon'), ('Europe/Ljubljana', 'Europe/Ljubljana'), ('Europe/London', 'Europe/London'), ('Europe/Luxembourg', 'Europe/Luxembourg'), ('Europe/Madrid', 'Europe/Madrid'), ('Europe/Malta', 'Europe/Malta'), ('Europe/Mariehamn', 'Europe/Mariehamn'), ('Europe/Minsk', 'Europe/Minsk'), ('Europe/Monaco', 'Europe/Monaco'), ('Europe/Moscow', 'Europe/Moscow'), ('Europe/Oslo', 'Europe/Oslo'), ('Europe/Paris', 'Europe/Paris'), ('Europe/Podgorica', 'Europe/Podgorica'), ('Europe/Prague', 'Europe/Prague'), ('Europe/Riga', 'Europe/Riga'), ('Europe/Rome', 'Europe/Rome'), ('Europe/Samara', 'Europe/Samara'), ('Europe/San_Marino', 'Europe/San_Marino'), ('Europe/Sarajevo', 'Europe/Sarajevo'), ('Europe/Saratov', 'Europe/Saratov'), ('Europe/Simferopol', 'Europe/Simferopol'), ('Europe/Skopje', 'Europe/Skopje'), ('Europe/Sofia', 'Europe/Sofia'), ('Europe/Stockholm', 'Europe/Stockholm'), ('Europe/Tallinn', 'Europe/Tallinn'), ('Europe/Tirane', 'Europe/Tirane'), ('Europe/Ulyanovsk', 'Europe/Ulyanovsk'), ('Europe/Vaduz', 'Europe/Vaduz'), ('Europe/Vatican', 'Europe/Vatican'), ('Europe/Vienna', 'Europe/Vienna'), ('Europe/Vilnius', 'Europe/Vilnius'), ('Europe/Volgograd', 'Europe/Volgograd'), ('Europe/Warsaw', 'Europe/Warsaw'), ('Europe/Zagreb', 'Europe/Zagreb'), ('Europe/Zurich', 'Europe/Zurich'), ('GMT', 'GMT'), ('Indian/Antananarivo', 'Indian/Antananarivo'), ('Indian/Chagos', 'Indian/Chagos'), ('Indian/Christmas', 'Indian/Christmas'), ('Indian/Cocos', 'Indian/Cocos'), ('Indian/Comoro', 'Indian/Comoro'), ('Indian/Kerguelen', 'Indian/Kerguelen'), ('Indian/Mahe', 'Indian/Mahe'), ('Indian/Maldives', 'Indian/Maldives'), ('Indian/Mauritius', 'Indian/Mauritius'), ('Indian/Mayotte', 'Indian/Mayotte'), ('Indian/Reunion', 'Indian/Reunion'), ('Pacific/Apia', 'Pacific/Apia'), ('Pacific/Auckland', 'Pacific/Auckland'), ('Pacific/Bougainville', 'Pacific/Bougainville'), ('Pacific/Chatham', 'Pacific/Chatham'), ('Pacific/Chuuk', 'Pacific/Chuuk'), ('Pacific/Easter', 'Pacific/Easter'), ('Pacific/Efate', 'Pacific/Efate'), ('Pacific/Fakaofo', 'Pacific/Fakaofo'), ('Pacific/Fiji', 'Pacific/Fiji'), ('Pacific/Funafuti', 'Pacific/Funafuti'), ('Pacific/Galapagos', 'Pacific/Galapagos'), ('Pacific/Gambier', 'Pacific/Gambier'), ('Pacific/Guadalcanal', 'Pacific/Guadalcanal'), ('Pacific/Guam', 'Pacific/Guam'), ('Pacific/Honolulu', 'Pacific/Honolulu'), ('Pacific/Kanton', 'Pacific/Kanton'), ('Pacific/Kiritimati', 'Pacific/Kiritimati'), ('Pacific/Kosrae', 'Pacific/Kosrae'), ('Pacific/Kwajalein', 'Pacific/Kwajalein'), ('Pacific/Majuro', 'Pacific/Majuro'), ('Pacific/Marquesas', 'Pacific/Marquesas'), ('Pacific/Midway', 'Pacific/Midway'), ('Pacific/Nauru', 'Pacific/Nauru'), ('Pacific/Niue', 'Pacific/Niue'), ('Pacific/Norfolk', 'Pacific/Norfolk'), ('Pacific/Noumea', 'Pacific/Noumea'), ('Pacific/Pago_Pago', 'Pacific/Pago_Pago'), ('Pacific/Palau', 'Pacific/Palau'), ('Pacific/Pitcairn', 'Pacific/Pitcairn'), ('Pacific/Pohnpei', 'Pacific/Pohnpei'), ('Pacific/Port_Moresby', 'Pacific/Port_Moresby'), ('Pacific/Rarotonga', 'Pacific/Rarotonga'), ('Pacific/Saipan', 'Pacific/Saipan'), ('Pacific/Tahiti', 'Pacific/Tahiti'), ('Pacific/Tarawa', 'Pacific/Tarawa'), ('Pacific/Tongatapu', 'Pacific/Tongatapu'), ('Pacific/Wake', 'Pacific/Wake'), ('Pacific/Wallis', 'Pacific/Wallis'), ('US/Alaska', 'US/Alaska'), ('US/Arizona', 'US/Arizona'), ('US/Central', 'US/Central'), ('US/Eastern', 'US/Eastern'), ('US/Hawaii', 'US/Hawaii'), ('US/Mountain', 'US/Mountain'), ('US/Pacific', 'US/Pacific'), ('UTC', 'UTC')], max_length=32, null=True, verbose_name='时区'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/0011_bktoken_auth_platform_bktoken_create_time_and_more.py",
    "content": "# Generated by Django 4.2.16 on 2026-01-29 08:21\n\nfrom django.db import migrations, models\nimport django.db.models.deletion\nimport django.utils.timezone\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkaccount', '0010_alter_bkrole_code_alter_bkrole_id_and_more'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='BkTokenApiAuthModel',\n            fields=[\n                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('create_time', models.DateTimeField(auto_now_add=True)),\n                ('update_time', models.DateTimeField(auto_now=True)),\n                ('username', models.CharField(default='', max_length=255, verbose_name='用户信息')),\n                ('token_type', models.CharField(default='login', max_length=128, verbose_name='Token类型')),\n                ('auth_type', models.CharField(db_index=True, default='1', max_length=128, verbose_name='平台认证方式')),\n                ('auth_platform', models.CharField(db_index=True, default='', max_length=255, null=True, verbose_name='授权平台')),\n                ('apis', models.JSONField(default=list, null=True, verbose_name='相关内容')),\n            ],\n            options={\n                'verbose_name': '登录票据API认证数据',\n                'verbose_name_plural': '登录票据API认证数据',\n                'db_table': 'login_bktoken_api_auth',\n            },\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='auth_platform',\n            field=models.JSONField(default=list, null=True, verbose_name='相关内容'),\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='create_time',\n            field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),\n            preserve_default=False,\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='expire_time',\n            field=models.DateTimeField(blank=True, null=True, verbose_name='过期时间'),\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='token_type',\n            field=models.CharField(default='login', max_length=128, verbose_name='Token类型'),\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='update_time',\n            field=models.DateTimeField(auto_now=True),\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='username',\n            field=models.CharField(default='', max_length=255, verbose_name='用户信息'),\n        ),\n        migrations.AddField(\n            model_name='bktoken',\n            name='call_count',\n            field=models.IntegerField(default=0, verbose_name='调用次数'),\n        ),\n        migrations.AddIndex(\n            model_name='bktoken',\n            index=models.Index(fields=['username'], name='bktoken_username_idx'),\n        ),\n        migrations.AddIndex(\n            model_name='bktoken',\n            index=models.Index(fields=['token_type'], name='bktoken_token_type_idx'),\n        ),\n        migrations.AddIndex(\n            model_name='bktoken',\n            index=models.Index(fields=['expire_time'], name='bktoken_expire_time_idx'),\n        ),\n        migrations.AddField(\n            model_name='bktokenapiauthmodel',\n            name='bk_token',\n            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bkaccount.bktoken'),\n        ),\n        migrations.AddIndex(\n            model_name='bktokenapiauthmodel',\n            index=models.Index(fields=['username'], name='bktokenapi_username_idx'),\n        ),\n        migrations.AddIndex(\n            model_name='bktokenapiauthmodel',\n            index=models.Index(fields=['token_type'], name='bktokenapi_token_type_idx'),\n        ),\n        migrations.AddIndex(\n            model_name='bktokenapiauthmodel',\n            index=models.Index(fields=['auth_type'], name='bktokenapi_auth_type_idx'),\n        ),\n        migrations.AddIndex(\n            model_name='bktokenapiauthmodel',\n            index=models.Index(fields=['auth_platform'], name='bktokenapi_auth_platform_idx'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom datetime import datetime\n\nfrom django.conf import settings\nfrom django.contrib.auth.models import (AbstractBaseUser, PermissionsMixin)\nfrom django.db import models\nfrom django.utils import timezone\nfrom urllib.parse import quote\nfrom django.utils.translation import gettext_lazy as _\n\nfrom bkaccount.manager import (BkUserManager, LoginLogManager)\nfrom bkaccount.constants import (ROLECODE_CHOICES, RoleCodeEnum, LANGUAGE_CHOICES, TIME_ZONE_CHOICES)\n\n\nclass BaseModel(models.Model):\n    create_time = models.DateTimeField(auto_now_add=True)\n    update_time = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        abstract = True\n        ordering = [\"-create_time\", \"-update_time\"]\n\n    def __str__(self):\n        return '<{} {}>'.format(self.__class__.__name__, self.pk)\n\n    def __repr__(self):\n        return '<{} {}>'.format(self.__class__.__name__, self.pk)\n\n    def update(self, **kwargs):\n        # kwargs['update_time'] = datetime.now()\n        for k, v in kwargs.items():\n            setattr(self, k, v)\n        self.save()\n        return self\n\n    @classmethod\n    def fetch_one(cls, **kwargs):\n        return cls.objects.filter(**kwargs).first()\n\n    @classmethod\n    def fetch_all(cls, **kwargs):\n        return cls.objects.filter(**kwargs)\n\n    @classmethod\n    def create(cls, **kwargs):\n        obj = cls(**kwargs)\n        obj.save()\n        return obj\n\n    def str_time(self, time_obj):\n        try:\n            return f\"{time_obj:%Y-%m-%d %H:%M:%S}\"\n        except Exception:\n            return str(time_obj).split(\".\")[0] if time_obj else \"\"\n\n\nclass BkRole(models.Model):\n    \"\"\"\n    角色表\n    \"\"\"\n    code = models.IntegerField(\"角色编号\", choices=ROLECODE_CHOICES, unique=True)\n\n    def __unicode__(self):\n        return '%s' % (self.code)\n\n    class Meta:\n        db_table = \"login_bkrole\"\n        verbose_name = \"用户角色\"\n        verbose_name_plural = \"用户角色\"\n\n\nclass BkUser(AbstractBaseUser, PermissionsMixin):\n    \"\"\"\n    BK user\n\n    username and password are required. Other fields are optional.\n    \"\"\"\n\n    username = models.CharField(\"用户名\", max_length=128, unique=True)\n    chname = models.CharField(\"中文名\", max_length=254, blank=True)\n    qq = models.CharField(\"QQ号\", max_length=32, blank=True)\n    phone = models.CharField(\"手机号\", max_length=64, blank=True)\n    email = models.EmailField(\"邮箱\", max_length=254, blank=True)\n    role = models.ManyToManyField(BkRole, verbose_name=\"角色\", through='BkUserRole')\n\n    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)\n\n    objects = BkUserManager()\n\n    USERNAME_FIELD = 'username'\n    REQUIRED_FIELDS = []\n\n    class Meta:\n        verbose_name = _('user')\n        verbose_name_plural = _('users')\n\n    @property\n    def is_staff(self):\n        return self.is_superuser\n\n    @property\n    def role_code(self):\n        role_list = self.role.all().values_list('code', flat=True)\n        # 多个角色，则已最高角色为主（superuser > developer > staff）\n        if RoleCodeEnum.SUPERUSER in role_list:\n            return RoleCodeEnum.SUPERUSER\n        if RoleCodeEnum.DEVELOPER in role_list:\n            return RoleCodeEnum.DEVELOPER\n        if RoleCodeEnum.OPERATOR in role_list:\n            return RoleCodeEnum.OPERATOR\n        if RoleCodeEnum.AUDITOR in role_list:\n            return RoleCodeEnum.AUDITOR\n        return RoleCodeEnum.STAFF\n\n    @property\n    def is_superuser_role(self):\n        return self.role.filter(code=RoleCodeEnum.SUPERUSER).exists()\n\n    @property\n    def wx_userid(self):\n        if hasattr(self, 'userinfo') and self.userinfo is not None:\n            return self.userinfo.wx_userid if self.userinfo.wx_userid else ''\n        return ''\n\n    @property\n    def language(self):\n        if hasattr(self, 'userinfo') and self.userinfo is not None:\n            return self.userinfo.language if self.userinfo.language else ''\n        return ''\n\n    @property\n    def time_zone(self):\n        if hasattr(self, 'userinfo') and self.userinfo is not None:\n            return self.userinfo.time_zone if self.userinfo.time_zone else ''\n        return ''\n\n    def get_absolute_url(self):\n        return \"/users/%s/\" % quote(self.email)\n\n    def get_full_name(self):\n        \"\"\"\n        Return the username plus the chinese name, with a space in between\n        \"\"\"\n        full_name = '%s %s' % (self.username, self.chname)\n        return full_name.strip()\n\n    def get_short_name(self):\n        \"\"\"\n        Return the chinese name for the user\n        \"\"\"\n        return self.chname\n\n\nclass BkUserRole(models.Model):\n    \"\"\"\n    用户角色多对多表\n    \"\"\"\n    user = models.ForeignKey(BkUser, on_delete=models.CASCADE)\n    role = models.ForeignKey(BkRole, on_delete=models.CASCADE)\n    create_time = models.DateTimeField(_('create_time'), default=timezone.now)\n\n    def __unicode__(self):\n        return '%s(%s)' % (self.user.username, self.role.code)\n\n    class Meta:\n        db_table = \"login_bkuser_role\"\n        verbose_name = \"用户角色关系表\"\n        verbose_name_plural = \"用户角色关系表\"\n\n\nclass Loignlog(models.Model):\n    \"\"\"\n    User login log\n    \"\"\"\n    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=\"用户\")  # type: BkUser\n    login_time = models.DateTimeField(\"登录时间\")\n    login_browser = models.CharField(\"登录浏览器\", max_length=200, blank=True, null=True)\n    login_ip = models.CharField(\"用户登录ip\", max_length=50, blank=True, null=True)\n    login_host = models.CharField(\"登录HOST\", max_length=100, blank=True, null=True)\n    app_id = models.CharField('APP_ID', max_length=30, blank=True, null=True)\n\n    objects = LoginLogManager()\n\n    def __unicode__(self):\n        return \"%s(%s)\" % (self.user.chname if self.user else \"--\", self.user.username if self.user else \"--\")\n\n    class Meta:\n        db_table = \"login_bklog\"\n        verbose_name = \"用户登录日志\"\n        verbose_name_plural = \"用户登录日志\"\n\n\nclass BkToken(BaseModel):\n    \"\"\"\n    登录票据\n    \"\"\"\n    token = models.CharField(\"登录票据\", max_length=255, unique=True, db_index=True)\n    token_type = models.CharField(\"Token类型\", max_length=128, default=\"login\")\n    username = models.CharField(\"用户信息\", max_length=255, default=\"\")\n    expire_time = models.DateTimeField(\"过期时间\", blank=True, null=True)\n    auth_platform = models.JSONField(\"相关内容\", null=True, default=list)\n    call_count = models.IntegerField(\"调用次数\", default=0)\n    # 是否已经退出登录\n    is_logout = models.BooleanField(\"票据是否已经执行过退出登录操作\", default=False)\n    # 无操作过期时间戳\n    inactive_expire_time = models.IntegerField(\"无操作失效时间戳\", default=0)\n\n    def __uincode__(self):\n        return self.token\n\n    class Meta:\n        db_table = \"login_bktoken\"\n        verbose_name = \"登录票据\"\n        verbose_name_plural = \"登录票据\"\n\n        # 为单个字段添加普通索引\n        indexes = [\n            models.Index(fields=['username'], name='bktoken_username_idx'),\n            models.Index(fields=['token_type'], name='bktoken_token_type_idx'),\n            models.Index(fields=['expire_time'], name='bktoken_expire_time_idx'),\n        ]\n\n    def to_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"expire_time\": self.str_time(self.expire_time),\n            \"token_type\": self.token_type,\n            \"is_logout\": self.is_logout,\n            \"call_count\": self.call_count,\n            \"create_time\": self.str_time(self.create_time),\n            \"update_time\": self.str_time(self.update_time),\n        }\n        return dt\n\n\nclass BkTokenApiAuthModel(BaseModel):\n    \"\"\"登录票据相关API认证\"\"\"\n    bk_token = models.ForeignKey(BkToken, on_delete=models.CASCADE)\n    username = models.CharField(\"用户信息\", max_length=255, default=\"\")\n    token_type = models.CharField(\"Token类型\", max_length=128, default=\"login\")\n    auth_type = models.CharField(\"平台认证方式\", max_length=128, default=\"1\", db_index=True)  # 1 全部 2 部分\n    auth_platform = models.CharField(\"授权平台\", max_length=255, null=True, default=\"\", db_index=True)\n    apis = models.JSONField(\"相关内容\", null=True, default=list)\n\n    def __uincode__(self):\n        return self.auth_platform\n\n    class Meta:\n        db_table = \"login_bktoken_api_auth\"\n        verbose_name = \"登录票据API认证数据\"\n        verbose_name_plural = \"登录票据API认证数据\"\n\n        # 为单个字段添加普通索引\n        indexes = [\n            models.Index(fields=['username'], name='bktokenapi_username_idx'),\n            models.Index(fields=['token_type'], name='bktokenapi_token_type_idx'),\n            models.Index(fields=['auth_type'], name='bktokenapi_auth_type_idx'),\n            models.Index(fields=['auth_platform'], name='bktokenapi_auth_platform_idx'),\n        ]\n\n\nclass UserInfo(models.Model):\n    \"\"\"\n    用户信息\n    \"\"\"\n    user = models.OneToOneField(BkUser, on_delete=models.CASCADE)\n    wx_userid = models.CharField(\"企业号用户USERID/公众号用户OPENID\", max_length=64, blank=True, null=True)\n    bind_time = models.DateTimeField(\"微信绑定时间\", default=timezone.now, blank=True, null=True)\n    language = models.CharField(\"语言\", max_length=32, choices=LANGUAGE_CHOICES, blank=True, null=True)\n    time_zone = models.CharField(\"时区\", max_length=32, choices=TIME_ZONE_CHOICES, blank=True, null=True)\n\n    class Meta:\n        verbose_name = \"用户信息\"\n        verbose_name_plural = \"用户信息\"\n        db_table = 'login_userinfo'\n\n\nclass UserAuthToken(models.Model):\n    \"\"\"AuthToken 内置表-用来记录登录失败次数\n    \"\"\"\n    d = {\n        \"app_code\": \"login\",  # login 时间\n        \"username\": \"huxingqi\",  # 用户名\n        \"auth_token\": \"1\",  # 失败次数\n        \"last_accessed_time\": \"2025-11-10 11:22:33\",  # 最后失败时间\n        \"created_time\": \"2025-11-10 11:22:33\",  # 首次时间\n    }\n    app_code = models.CharField(_('蓝鲸智云应用编码'), max_length=128)\n    username = models.CharField(_('用户名'), max_length=64)\n    auth_token = models.CharField(_('token内容'), max_length=255)\n    expires = models.DateTimeField(_('token过期时间'))\n    last_accessed_time = models.DateTimeField(_('最后访问时间'), auto_now_add=True)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n\n    def __unicode__(self):\n        return self.auth_token\n\n    def __str__(self):\n        return self.auth_token\n\n    class Meta:\n        db_table = 'esb_user_auth_token'\n    \n    def time_to_str(self, time_pro):\n        if not time_pro:\n            return \"-\"\n        if isinstance(time_pro, datetime):\n            return timezone.localtime(time_pro).strftime(\"%Y-%m-%d %H:%M:%S\")\n        return str(time_pro)\n    \n    def to_rbac_unlock_dict(self):\n        dt = {\n            \"app_code\": self.app_code,\n            \"username\": self.username,\n            \"auth_token\": self.auth_token,\n            \"created_time\": self.time_to_str(self.created_time),\n            \"last_accessed_time\": self.time_to_str(self.last_accessed_time)\n        }\n        return dt\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/opsany_user_auth.py",
    "content": "# -*- coding: utf-8 -*-\nimport requests\nimport settings\nimport json\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass OpsAnyRbacUserAuth(object):\n    APP_CODE = \"rbac\"\n    APP_SECRET = settings.RBAC_APP_SECRET\n    BK_URL = \"{}://{}\".format(settings.HTTP_SCHEMA, settings.PAAS_INNER_DOMAIN)\n    # ACCESS_TOKEN = \"opsany-esb-auth-token-9e8083137204\"\n    ACCESS_TOKEN = None\n\n    def __init__(self, username=\"\", password=\"\", code=\"\", app_id=\"\", domain=\"\", ad_domain=\"\", sso_code=\"\", sso_sign=\"\", auth_type=\"\", params=None):\n        self.username = username\n        self.password = password\n        self.code = code\n        self.app_id = app_id\n        self.domain = domain\n        self.ad_domain = ad_domain\n        self.sso_code = sso_code\n        self.sso_sign = sso_sign\n        self.auth_type = auth_type\n        self.params = params\n\n    def check_users(self):\n        API = \"/api/c/compapi/rbac/user_auth/\"\n        url = self.BK_URL + API\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            # \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": \"admin\",\n            \"username\": self.username,\n            \"password\": self.password,\n            \"code\": self.code,\n            \"appid\": self.app_id,\n            \"domain\": self.domain,\n            \"ad_domain\": self.ad_domain,\n            \"sso_code\": self.sso_code,\n            \"sso_sign\": self.sso_sign,\n            \"auth_type\": self.auth_type,\n            \"params\": self.params,\n        }\n        try:\n            res = requests.post(url, json=req, headers={\"Cookie\": \"bk_token=None\"}, timeout=10, verify=False)\n        except Exception as e:\n            return False, {\"message\": \"Auth Error.\"}\n        try:\n            data = res.json().get(\"data\")\n        except Exception as e:\n            return False, {\"message\": \"Link Error.\"}\n        if data:\n            return data.get(\"auth_status\"), data\n        return False, {\"message\": \"Auth Error.\"}\n\n    def get_user_google_auth_status(self):\n        API = \"/api/c/compapi/rbac/get_user_google_auth_status/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": self.username,\n            \"username\": self.username,\n            \"auth_type\": \"login\"\n        }\n        url = self.BK_URL + API\n        try:\n            response = requests.get(url, params=req, headers={\"Cookie\": \"bk_token=None\"}, timeout=5, verify=False)\n        except Exception as e:\n            return \"6\"\n        try:\n            end_data = json.loads(response.text)\n        except Exception as e:\n            return \"6\"\n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\")\n            return end_data\n        return \"6\"\n    \n    def get_rbac_auth_config(self, username):\n        API = \"/api/c/compapi/rbac/get_user_rbac_auth_config/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": \"admin\",\n            \"username\": username,\n            \"data_type\": \"mfa_days,verification_code_config,password_retry_times_config\"\n        }\n        url = self.BK_URL + API\n        try:\n            response = requests.get(url, params=req, headers={\"Cookie\": \"bk_token=None\"}, timeout=5, verify=False)\n        except Exception as e:\n            return {}\n        try:\n            end_data = response.json()\n        except Exception as e:\n            return {}\n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\")\n            return end_data\n        return {}\n\n    def update_login_log(self, bk_token, address, user_agent, host_name, data=None):\n        API = \"/api/c/compapi/rbac/post_login_log/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"token\": bk_token,\n            \"bk_username\": self.username,\n            \"username\": self.username,\n            \"address\": address,\n            \"user_agent\": user_agent,\n            \"host_name\": host_name,\n            \"data\": data if not data else {}\n        }\n        url = self.BK_URL + API\n        try:\n            response = requests.get(url, params=req, headers={\"Cookie\": \"bk_token={}\".format(bk_token)}, timeout=5, verify=False)\n        except Exception as e:\n            return \"Failed\"\n        try:\n            end_data = json.loads(response.text)\n        except Exception as e:\n            return \"Failed\" \n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\")\n            return end_data\n        return \"Failed\"\n    \n    def get_google_auth(self):\n        API = \"/api/c/compapi/workbench/get_google_auth/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": self.username,\n            \"username\": self.username\n        }\n        URL = self.BK_URL + API\n        response = requests.get(url=URL, params=req, headers={\"Cookie\": \"bk_token=None\"}, verify=False)\n        try:\n            end_data = json.loads(response.text)\n        except Exception as e:\n            return {}\n        dt = {}\n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\", {})\n            return end_data\n        return dt\n\n    def bind_google_auth(self, secret, verify_code):\n        API = \"/api/c/compapi/workbench/bind_google_auth/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": self.username,\n            \"username\": self.username,\n            \"operator\": self.username,\n            \"secret\": secret,\n            \"verify_code\": verify_code\n        }\n        url = self.BK_URL + API\n        response = requests.post(url, data=req, headers={\"Cookie\": \"bk_token=None\"}, verify=False)\n        end_data = json.loads(response.text)\n        return end_data\n\n    def check_google_verify_code(self, verify_code, seven_days_free=0):\n        API = \"/api/c/compapi/rbac/check_google_verify_code/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": self.username,\n            \"username\": self.username,\n            \"verify_code\": verify_code,\n            \"seven_days_free\": seven_days_free,\n            \"auth_type\": \"login\"\n        }\n        url = self.BK_URL + API\n        try:\n            response = requests.post(url, data=req, headers={\"Cookie\": \"bk_token=None\"}, timeout=5, verify=False)\n        except Exception as e:\n            return False\n        end_data = json.loads(response.text)\n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\")\n            return end_data\n        return False\n\n    def get_vx_work_config(self, domain=\"\"):\n        API = \"/api/c/compapi/rbac/get_wx_work_config/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": \"admin\",\n            \"domain\": domain\n        }\n        url = self.BK_URL + API\n        try:\n            response = requests.post(url, data=json.dumps(req), headers={\"Cookie\": \"bk_token=None\"}, verify=False)\n            end_data = json.loads(response.text)\n        except Exception as e:\n           return False, \"Failed\"\n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\")\n            return True, end_data\n        return False, end_data.get(\"message\")\n\n    def get_auth_config(self, auth_type=\"\", domain=\"\"):\n        API = \"/api/c/compapi/rbac/get_auth_config/\"\n        req = {\n            \"bk_app_code\": self.APP_CODE,\n            \"bk_app_secret\": self.APP_SECRET,\n            \"bk_access_token\": self.ACCESS_TOKEN,\n            \"bk_username\": \"admin\",\n            \"auth_type\": auth_type,\n            \"domain\": domain\n        }\n        url = self.BK_URL + API\n        try:\n            response = requests.post(url, data=json.dumps(req), headers={\"Cookie\": \"bk_token=None\"}, timeout=5, verify=False)\n        except Exception as e:\n            return False, str(e)\n        try:\n            end_data = json.loads(response.text)\n        except Exception as e:\n            return False, []\n        if end_data.get(\"result\"):\n            end_data = end_data.get(\"data\")\n            return True, end_data\n        return False, end_data.get(\"message\")\n\n\nif __name__ == '__main__':\n    # api = OpsAnyRbacUserAuth(\"huxingqi\").get_vx_work_config()\n    # print(OpsAnyRbacUserAuth(\"huxingqi\").get_auth_config(\"white_list\"))\n    pass\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.urls import include, path\n\nfrom bkaccount import views, views_api\n\n\nurlpatterns = [\n    # 用户信息相关\n    path('user/', include([\n        # 用户管理\n        path('list/', include([\n            path('', views.UserPageView.as_view()),\n            path('query/', views.UserListPage.as_view()),\n        ])),\n        # [post] user create\n        path('', views.UserView.as_view()),\n        # [put/delete] userinfo modify / user delete\n        path('<int:user_id>/', views.UserView.as_view()),\n        # [put] user password\n        path('<int:user_id>/password/', views.UserPasswordView.as_view()),\n        # export/import users\n        path('export/', views.UserExportView.as_view()),\n        path('import/', views.UserImportView.as_view()),\n\n        # API for user center in paas with bktoken cookies\n        # [put] user password reset\n        path('password/', views_api.CurrentUserPasswordView.as_view()),\n        # [post] user info modify\n        path('baseinfo/', views_api.CurrentUserBaseInfoView.as_view()),\n        # [post/delete] weixin user_id bind/unbind\n        path('weixin_info/', views_api.CurrentUserWeixinInfoView.as_view()),\n    ])),\n\n    # API 接口\n    path('is_login/', views_api.CheckLoginView.as_view()),\n    path('get_vx_work_config/', views_api.GetVxWorkConfigView.as_view()),\n    path('get_auth_config/', views_api.GetAuthConfigView.as_view()),\n    path('get_user/', views_api.UserView.as_view()),\n    path('get_all_user/', views_api.AllUsersView.as_view()),\n    path('get_batch_user/', views_api.BatchUsersView.as_view()),\n\n    # for legency system,  keep below\n    # user/list\n    path('', views.UserPageView.as_view()),\n]\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport io\n\nimport xlrd\nimport xlwt\nfrom django.conf import settings\nfrom django.utils.translation import gettext as _\n\nfrom common.log import logger\nfrom bkaccount.accounts import Account\nfrom bkaccount.constants import ROLECODE_CHOICES\nfrom bkaccount.models import BkUser\n\n\ndef validate_bk_token(data):\n    \"\"\"\n    检查bk_token的合法性，并返回用户实例\n    \"\"\"\n    account = Account()\n    bk_token = data.get(account.BK_COOKIE_NAME)\n    request_api_from = data.get(\"request_api_from\") or \"\"\n    url_app_code = data.get(\"url_app_code\") or \"\"\n    url_method = data.get(\"url_method\")\n    url_path = data.get(\"url_path\")\n    # 验证Token参数\n    is_valid, username, message = account._is_bk_token_valid(bk_token, request_api_from, url_app_code=url_app_code, url_path=url_path, url_method=url_method)\n    if not is_valid:\n        return False, None, message\n    try:\n        user = BkUser.objects.get(username=username)\n    except BkUser.DoesNotExist:\n        return False, None, _(\"用户不存在\")\n    return True, user, ''\n\n\ndef is_request_from_esb(request):\n    \"\"\"\n    请求是否来自ESB\n    \"\"\"\n    x_app_token = request.headers.get('x-app-token')\n    x_app_code = request.headers.get('x-app-code')\n    return x_app_code == 'esb' and x_app_token == settings.ESB_TOKEN\n\n\ndef read_user_import_xls(xls_file):\n    str_file = io.StringIO(xls_file.read())\n    wbk = xlrd.open_workbook(file_contents=str_file.read())\n    sheet = wbk.sheets()[0]\n\n    user_list = []\n\n    for i in range(sheet.nrows - 1, 0, -1):\n        # StringIO可以接受Unicode或ASCII编码的字符串，但不能混用，否则在使用getvalue()时会出现UnicodeError错误\n        # 手机号格式处理\n        phone = sheet.row_values(i)[2]\n        phone = \"%s\" % (int(phone) if isinstance(phone, float) else phone)\n        # 将角色名转为对应code\n        role = get_role_code_by_role_name(sheet.row_values(i)[4])\n        user_list.append({\n            'username': sheet.row_values(i)[0],\n            'chname': sheet.row_values(i)[1],\n            'phone': phone,\n            'email': sheet.row_values(i)[3],\n            'role': role\n        })\n\n    return user_list\n\n\ndef write_excel(head_list, records):\n    wbk = xlwt.Workbook(encoding='gbk')\n    # 设置 excel 文件格式\n    sheet = wbk.add_sheet('Sheet1')\n    for i in range(0, 22):\n        sheet.col(i).width = 0x0d00 + 2000\n    fnt = xlwt.Font()\n    fnt.name = 'Arial'\n    fnt.colour_index = 4\n    fnt.bold = True\n    style = xlwt.XFStyle()\n    style.font = fnt\n    # 标题栏\n    for i, data in enumerate(head_list):\n        sheet.write(0, i, data)\n    # 查询库存数据\n    try:\n        for index, record in enumerate(records):\n            for cell_index, cell_value in enumerate(record):\n                sheet.write(index + 1, cell_index, cell_value)\n    except Exception as e:\n        logger.exception('export excel fail, error: {}'.format(e))\n        return False, _(\"导出数据出现错误\"), wbk\n\n    return True, 'SUCCESS', wbk\n\n\ndef get_page_info(page, page_size, default_page_size=10):\n    try:\n        page = int(page)\n        page_size = int(page_size)\n\n        if page < 1:\n            page = 1\n        if page_size < 1:\n            page_size = default_page_size\n    except Exception:\n        page = 1\n        page_size = default_page_size\n\n    return page, page_size\n\n\ndef get_role_code_by_role_name(role_name):\n    \"\"\"\n    将角色名转换为角色编码\n    \"\"\"\n    role_name_code_dict = dict([(_(i[1]), i[0]) for i in ROLECODE_CHOICES])\n    try:\n        role_name = \"%s\" % role_name\n        role_code = role_name_code_dict.get(role_name)\n    except Exception as error:\n        logger.exception(\"role name conversion role code error: {}\".format(error))\n        role_code = None\n    return role_code\n\n\ndef get_role_name_by_role_code(role_code):\n    \"\"\"\n    将角色编码转换为角色名\n    \"\"\"\n    role_code_name_dict = dict(ROLECODE_CHOICES)\n    return _(role_code_name_dict.get(role_code, ''))\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.conf import settings\nfrom django.db import transaction\nfrom django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse, QueryDict\nfrom django.shortcuts import render\nfrom django.utils.module_loading import import_string\nfrom django.utils.translation import gettext as _\nfrom django.views.generic import View, TemplateView\n\nfrom common.log import logger\nfrom common.mixins.base import SuperuserRequiredMixin, SuperuserOrPutOwnerRequiredMixin\nfrom common.mixins.exempt import LoginExemptMixin\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.utils.basic import first_error_message\nfrom bkaccount.accounts import Account\nfrom bkaccount.forms import UserInfoForm, SetPasswordForm, UserQueryForm, ImportUserForm\nfrom bkaccount.models import BkUser\nfrom bkaccount.utils import (read_user_import_xls, write_excel, get_page_info, get_role_name_by_role_code)\n\n\nclass LoginView(LoginExemptMixin, View):\n    \"\"\"\n    登录\n    \"\"\"\n    def _login(self, request):\n        account = Account()\n        # 判断调用方式\n        #print(\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\")\n        if settings.LOGIN_TYPE != 'custom_login':\n            #print(\"1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\")\n            return account.login(request, extra_context={\"IMG_URL\": settings.IMG_URL})\n        # 调用自定义login view\n        #print(\"2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\")\n        custom_login_view = import_string(settings.CUSTOM_LOGIN_VIEW)\n        return custom_login_view(request)\n\n    def get(self, request):\n        return self._login(request)\n\n    def post(self, request):\n        return self._login(request)\n\n\nclass LogoutView(LoginExemptMixin, View):\n    \"\"\"\n    登出\n    \"\"\"\n    def get(self, request):\n        account = Account()\n        return account.logout(request)\n\n\nclass UserPageView(TemplateView):\n    \"\"\"\n    用户管理页面\n    \"\"\"\n    template_name = \"bkaccount/users.html\"\n\n    def get_context_data(self, **kwargs):\n        context = super(UserPageView, self).get_context_data(**kwargs)\n        request = self.request\n\n        context.update({\n            'default_paasword': settings.PASSWORD,\n            'error_msg': request.GET.get('error_msg') or '',\n            'success_msg': request.GET.get('success_msg') or ''\n        })\n        return context\n\n\nclass UserListPage(TemplateView):\n    \"\"\"\n    用户信息列表页面\n    \"\"\"\n    template_name = \"bkaccount/user_table.part\"\n\n    def get_context_data(self, **kwargs):\n        context = super(UserListPage, self).get_context_data(**kwargs)\n        request = self.request\n\n        form = UserQueryForm(request.GET)\n        form.is_valid()\n\n        page = form.cleaned_data[\"page\"]\n        page_size = form.cleaned_data[\"page_size\"]\n        page, page_size = get_page_info(page, page_size)\n\n        # 管理员查看所有用户，无需过滤\n        search_username = '' if request.user.is_superuser else request.user.username\n        # 根据查询条件过滤\n        search_data = form.cleaned_data[\"search_data\"]\n        search_role = form.cleaned_data[\"search_role\"]\n\n        # 获取分页数据\n        records = BkUser.objects.get_batch_user_with_paginator(page, page_size, search_username,\n                                                               search_data, search_role)\n\n        # 前端分页临近页数，默认设置为 3\n        adjacent_pages = 3\n        start_page = max(records.number - adjacent_pages, 1)\n        start_page = 1 if start_page < adjacent_pages else start_page\n        end_page = records.number + adjacent_pages + 1\n        if end_page > records.paginator.num_pages - adjacent_pages + 2:\n            end_page = records.paginator.num_pages + 1\n        page_numbers = [n for n in range(start_page, end_page)]\n        show_first = 1 not in page_numbers\n        show_last = records.paginator.num_pages not in page_numbers\n        context.update({\n            'records': records,\n            'page_numbers': page_numbers,\n            'show_first': show_first,\n            'show_last': show_last,\n        })\n        return context\n\n\nclass UserView(SuperuserOrPutOwnerRequiredMixin, View):\n    \"\"\"\n    CUD User\n    \"\"\"\n    def _add_or_update(self, request, user_id=None):\n        request_param = request.POST if user_id is None else QueryDict(request.body)\n        form = UserInfoForm(request_param)\n\n        if not form.is_valid():\n            message = first_error_message(form)\n            return FailJsonResponse(message)\n\n        # 创建用户\n        result, user_id, message = BkUser.objects.modify_or_create_user_by_userid(\n            user_id,\n            form.cleaned_data[\"username\"],\n            form.cleaned_data[\"chname\"],\n            form.cleaned_data[\"phone\"],\n            form.cleaned_data[\"email\"],\n            form.cleaned_data[\"role\"]\n        )\n\n        if not result:\n            return FailJsonResponse(message)\n        return OKJsonResponse(_(\"保存用户信息成功\"), data={\"user_id\": user_id})\n\n    def post(self, request):\n        return self._add_or_update(request, None)\n\n    def put(self, request, user_id):\n        return self._add_or_update(request, user_id)\n\n    def delete(self, request, user_id):\n        result, message = BkUser.objects.delete_user(user_id)\n        if not result:\n            return FailJsonResponse(message)\n        return OKJsonResponse(_(\"用户删除成功\"))\n\n\nclass UserPasswordView(SuperuserOrPutOwnerRequiredMixin, View):\n    def put(self, request, user_id):\n        request_param = QueryDict(request.body)\n        form = SetPasswordForm(request_param)\n\n        if not form.is_valid():\n            message = first_error_message(form)\n            return FailJsonResponse(message)\n\n        # 修改密码\n        result, message = BkUser.objects.modify_password_by_userid(user_id, form.cleaned_data['new_password1'])\n        if not result:\n            return FailJsonResponse(message)\n        return OKJsonResponse(_(\"修改密码成功\"))\n\n\nclass UserImportView(SuperuserRequiredMixin, View):\n    def post(self, request):\n        # 鉴权\n        error_url_format = \"{}accounts/user/list/?error_msg={}\".format(settings.SITE_URL, {})\n        if not request.user.is_superuser:\n            return HttpResponseRedirect(error_url_format.format(_(\"非管理员, 没有权限进行操作, 请找管理员申请权限!\")))\n        # 校验文件格式\n        xls_file = request.FILES['data_files']\n        form = ImportUserForm({\"file_name\": xls_file.name})\n        if not form.is_valid():\n            message = first_error_message(form)\n            return HttpResponseRedirect(error_url_format.format(message))\n\n        # 读取excel数据\n        try:\n            user_list = read_user_import_xls(xls_file)\n        except Exception as error:\n            logger.exception(\"Error parsing user import data, error: {}\".format(error))\n            return HttpResponseRedirect(error_url_format.format(_(\"文件解析出错，请下载 EXCEL模板文件 填写用户数据\")))\n\n        if not user_list:\n            return HttpResponseRedirect(error_url_format.format(_(\"导入数据不能为空\")))\n\n        error_message = \"\"\n        try:\n            with transaction.atomic():\n                for _u in user_list:\n                    form = UserInfoForm(_u)\n                    if not form.is_valid():\n                        error_message = first_error_message(form)\n                        raise ValueError(error_message)\n                    # 创建或者保存用户\n                    BkUser.objects.modify_or_create_user_by_username(\n                        form.cleaned_data[\"username\"],\n                        form.cleaned_data[\"chname\"],\n                        form.cleaned_data[\"phone\"],\n                        form.cleaned_data[\"email\"],\n                        form.cleaned_data[\"role\"]\n                    )\n        except Exception as error:\n            logger.error(error)\n            error_message = _(\"用户导入出现异常 {}\").format(error if not error_message else error_message)\n        return HttpResponseRedirect(error_url_format.format(error_message))\n\n\nclass UserExportView(SuperuserRequiredMixin, View):\n    def get(self, request):\n        response = HttpResponse()\n        # 文件名，gbk编码，防止中文名出现乱码\n        response['Content-Disposition'] = 'attachment; filename=\"bk_user_export.xls'\n\n        # 设置 excel 文件头\n        head_list = [_(\"用户名\"), _(\"中文名\"), _(\"联系电话\"), _(\"常用邮箱\"), _(\"角色\")]\n\n        users = BkUser.objects.all().order_by('-id').order_by('-is_superuser')\n        records = [(\n            u.username,\n            u.chname,\n            u.phone,\n            u.email,\n            get_role_name_by_role_code(u.role_code)\n        ) for u in users]\n\n        is_success, message, wbk = write_excel(head_list, records)\n        if not is_success:\n            return FailJsonResponse(message)\n        wbk.save(response)\n        return response\n\n\n# TODO: move to some where\ndef csrf_failure(request, reason=\"\"):\n    return HttpResponseForbidden(render(request, 'csrf_failure.html'), content_type='text/html')\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/views_api.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport json\n\nfrom django.utils.translation import gettext as _\nfrom django.views.generic import View\n\nfrom common.mixins.exempt import LoginExemptMixin, CsrfExemptMixin, CsrfAndLoginExemptMixin\nfrom common.utils.basic import first_error_message\nfrom common.responses import ApiV1FailJsonResponse, ApiV1OKJsonResponse\n\nfrom bkaccount.forms import PasswordForm, BaseUserInfoForm, WeixinInfoForm\nfrom bkaccount.models import BkUser\nfrom bkaccount.utils import validate_bk_token, is_request_from_esb\nfrom bkaccount.constants import ApiErrorCodeEnum\nfrom bkaccount.opsany_user_auth import OpsAnyRbacUserAuth\n\n\nclass CheckLoginView(LoginExemptMixin, View):\n    def get(self, request):\n        # 验证Token参数\n        data = request.GET.dict()\n        is_valid, user, message = validate_bk_token(data)\n        if not is_valid:\n            return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n        return ApiV1OKJsonResponse(_(\"用户验证成功\"), data={'username': user.username, 'bk_role': user.role_code})\n\n\nclass GetVxWorkConfigView(LoginExemptMixin, View):\n    def get(self, request):\n        domain = request.GET.get(\"domain\", \"\")\n        res, data = OpsAnyRbacUserAuth().get_vx_work_config(domain)\n        if res:\n            return ApiV1OKJsonResponse(_(\"获取配置信息成功\"), data={\n                'agent_id': data.get(\"agent_id\"),\n                'corp_id': data.get(\"corp_id\"),\n            })\n        return ApiV1FailJsonResponse(data, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n\nclass GetAuthConfigView(LoginExemptMixin, View):\n    def get(self, request):\n        auth_type = request.GET.get(\"auth_type\", \"\")\n        res, data = OpsAnyRbacUserAuth().get_auth_config(auth_type)\n        if res:\n            return ApiV1OKJsonResponse(_(\"获取配置信息成功\"), data={\n                \"data\": data\n            })\n        return ApiV1FailJsonResponse(data, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n\nclass UserView(LoginExemptMixin, View):\n    def get(self, request):\n        # 验证Token参数\n        data = request.GET.dict()\n        data[\"request_api_from\"] = \"login\"\n        is_valid, user, message = validate_bk_token(data)\n        if not is_valid:\n            # 如果是ESB的请求，可以直接从参数中获取用户名\n            is_from_esb = is_request_from_esb(request)\n            username = request.GET.get('username')\n            if not is_from_esb or not username:\n                return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n        else:\n            username = user.username\n\n        # 获取用户数据\n        result, data, message = BkUser.objects.get_user_info(username)\n        if not result:\n            return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.USER_NOT_EXISTS2)\n\n        return ApiV1OKJsonResponse(_(\"用户信息获取成功\"), data=data)\n\n\nclass AllUsersView(LoginExemptMixin, View):\n    def get(self, request):\n        # 非ESB的请求需要验证登录态 bk_token\n        if not is_request_from_esb(request):\n            # 验证Token参数\n            data = request.GET.dict()\n            data[\"request_api_from\"] = \"login\"\n            is_valid, user, message = validate_bk_token(data)\n            if not is_valid:\n                return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        # 获取用户角色参数,空为所有用户\n        role = request.GET.get('role', '')\n\n        # 获取用户信息\n        data = BkUser.objects.get_all_user(role)\n        return ApiV1OKJsonResponse(_(\"用户信息获取成功\"), data=data)\n\n\nclass BatchUsersView(CsrfAndLoginExemptMixin, View):\n    def post(self, request):\n        try:\n            post_data = json.loads(request.body)\n        except Exception:\n            return ApiV1FailJsonResponse(_(\"请求参数格式错误,必须为json格式\"), code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        # 非ESB的请求需要验证登录态 bk_token\n        if not is_request_from_esb(request):\n            # 验证Token参数\n            post_data[\"request_api_from\"] = \"login\"\n            is_valid, user, message = validate_bk_token(post_data)\n            if not is_valid:\n                return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        username_list = post_data.get('username_list')\n        if not username_list:\n            return ApiV1FailJsonResponse(_(\"缺少参数:username_list\"), code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        # 获取用户信息\n        data = BkUser.objects.get_batch_user_with_dict(username_list)\n        return ApiV1OKJsonResponse(_(\"用户信息获取成功\"), data=data)\n\n\nclass CurrentUserPasswordView(CsrfExemptMixin, View):\n    def put(self, request):\n        try:\n            request_param = json.loads(request.body)\n        except Exception:\n            return ApiV1FailJsonResponse(_(\"请求参数格式错误,必须为json格式\"), code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        form = PasswordForm(request_param)\n\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        result, error_code, message = BkUser.objects.modify_password_by_username(request.user.username,\n                                                                                 form.cleaned_data[\"new_password\"])\n        if not result:\n            return ApiV1FailJsonResponse(message, code=error_code)\n\n        return ApiV1OKJsonResponse(_(\"密码重置成功\"))\n\n\nclass CurrentUserBaseInfoView(CsrfExemptMixin, View):\n    def post(self, request):\n        try:\n            request_param = json.loads(request.body)\n        except Exception:\n            return ApiV1FailJsonResponse(_(\"请求参数格式错误,必须为json格式\"), code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        form = BaseUserInfoForm(request_param)\n\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        result, error_code, message = BkUser.objects.modify_user_info(request.user.username,\n                                                                      form.cleaned_data[\"chname\"],\n                                                                      form.cleaned_data[\"phone\"],\n                                                                      form.cleaned_data[\"email\"])\n        if not result:\n            return ApiV1FailJsonResponse(message, code=error_code)\n\n        return ApiV1OKJsonResponse(_(\"用户信息修改成功\"))\n\n\nclass CurrentUserWeixinInfoView(CsrfExemptMixin, View):\n    def post(self, request):\n        try:\n            request_param = json.loads(request.body)\n        except Exception:\n            return ApiV1FailJsonResponse(_(\"请求参数格式错误,必须为json格式\"), code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        form = WeixinInfoForm(request_param)\n\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV1FailJsonResponse(message, code=ApiErrorCodeEnum.PARAM_NOT_VALID)\n\n        result, message = BkUser.objects.bind_wx_user_info(request.user, form.cleaned_data[\"wx_userid\"])\n\n        if not result:\n            return ApiV1FailJsonResponse(message)\n\n        return ApiV1OKJsonResponse(_(\"绑定成功\"))\n\n    def delete(self, request):\n        result, message = BkUser.objects.unbind_wx_user_info(request.user)\n\n        if not result:\n            return ApiV1FailJsonResponse(message)\n\n        return ApiV1OKJsonResponse(_(\"解绑成功\"))\n"
  },
  {
    "path": "paas-ce/paas/login/bkaccount/views_api_v2.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport json\n\nfrom django.utils.translation import gettext as _\nfrom django.views.generic import View\n\nfrom common.mixins.exempt import LoginExemptMixin, CsrfAndLoginExemptMixin\nfrom common.responses import ApiV2FailJsonResponse, ApiV2OKJsonResponse\nfrom bkaccount.constants import ApiErrorCodeEnumV2\nfrom bkaccount.models import BkUser\nfrom bkaccount.utils import validate_bk_token, is_request_from_esb\nfrom bkaccount.geetest import GeeTest\nfrom bkaccount.accounts import Account\n\n\nclass CheckLoginView(LoginExemptMixin, View):\n    def get(self, request):\n        # 验证Token参数\n        is_valid, user, message = validate_bk_token(request.GET)\n        if not is_valid:\n            return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID)\n        return ApiV2OKJsonResponse(_(\"用户验证成功\"), data={'bk_username': user.username})\n\n\nclass UserView(LoginExemptMixin, View):\n    def get(self, request):\n        # 验证Token参数\n        data = request.GET.dict()\n        data[\"request_api_from\"] = \"login\"\n        is_valid, user, message = validate_bk_token(data)\n        if not is_valid:\n            # 如果是ESB的请求，可以直接从参数中获取用户名\n            is_from_esb = is_request_from_esb(request)\n            username = request.GET.get('bk_username')\n            if not is_from_esb or not username:\n                return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID)\n        else:\n            username = user.username\n\n        # 获取用户数据\n        result, data, message = BkUser.objects.get_user_info_v2(username)\n        if not result:\n            return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.USER_NOT_EXISTS2)\n\n        return ApiV2OKJsonResponse(_(\"用户信息获取成功\"), data=data)\n\n\nclass AllUsersView(LoginExemptMixin, View):\n    def get(self, request):\n        # 非ESB的请求需要验证登录态 bk_token\n        if not is_request_from_esb(request):\n            # 验证Token参数\n            data = request.GET.dict()\n            data[\"request_api_from\"] = \"login\"\n            is_valid, user, message = validate_bk_token(data)\n            if not is_valid:\n                return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID)\n\n        # 获取用户角色参数,空为所有用户\n        role = request.GET.get('bk_role', '')\n\n        # 获取用户信息\n        data = BkUser.objects.get_all_users_v2(role)\n        return ApiV2OKJsonResponse(_(\"用户信息获取成功\"), data=data)\n\n\nclass BatchUsersView(CsrfAndLoginExemptMixin, View):\n    def post(self, request):\n        try:\n            post_data = json.loads(request.body)\n        except Exception:\n            return ApiV2FailJsonResponse(_(\"请求参数格式错误,必须为json格式\"), code=ApiErrorCodeEnumV2.PARAM_NOT_VALID)\n\n        # 非ESB的请求需要验证登录态 bk_token\n        if not is_request_from_esb(request):\n            # 验证Token参数\n            post_data[\"request_api_from\"] = \"login\"\n            is_valid, user, message = validate_bk_token(post_data)\n            if not is_valid:\n                return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID)\n\n        username_list = post_data.get('bk_username_list')\n        if not username_list:\n            return ApiV2FailJsonResponse(_(\"缺少参数:bk_username_list\"), code=ApiErrorCodeEnumV2.PARAM_NOT_VALID)\n\n        # 获取用户信息\n        data = BkUser.objects.get_batch_users_with_dict_v2(username_list)\n        return ApiV2OKJsonResponse(_(\"用户信息获取成功\"), data=data)\n\n\nclass LoginRegisterView(LoginExemptMixin, View):\n    def get(self, request):\n        geetest = GeeTest()\n        return geetest.local_init()\n\n\nclass LoginApiView(LoginExemptMixin, View):\n    def post(self, request):\n        return Account().login_api(request)"
  },
  {
    "path": "paas-ce/paas/login/common/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/common/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\ndef enum(**enums):\n    return type(\"Enum\", (), enums)\n\n\nDATETIME_FORMAT_STRING = '%Y-%m-%d %H:%M:%S'\n"
  },
  {
    "path": "paas-ce/paas/login/common/context_processors.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport urllib.parse\n\nfrom django.conf import settings\nfrom django.utils import timezone\n\n\ndef site_settings(request):\n    real_static_url = urllib.parse.urljoin(settings.SITE_URL, '.' + settings.STATIC_URL)\n    cur_domain = request.get_host()\n    return {\n        'LOGIN_URL': settings.LOGIN_URL,\n        'LOGOUT_URL': settings.LOGOUT_URL,\n        'STATIC_URL': real_static_url,\n        'SITE_URL': settings.SITE_URL,\n        'STATIC_VERSION': settings.STATIC_VERSION,\n        'CUR_DOMIAN': cur_domain,\n\n        'APP_PATH': request.get_full_path(),\n        'NOW': timezone.now(),\n\n        # 本地 js 后缀名\n        'JS_SUFFIX': settings.JS_SUFFIX,\n        # 本地 css 后缀名\n        'CSS_SUFFIX': settings.CSS_SUFFIX\n    }\n"
  },
  {
    "path": "paas-ce/paas/login/common/exceptions.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom common.constants import enum\n\n\nLoginErrorCodes = enum(\n    E1302000_DEFAULT_CODE=1302000,\n    E1302001_BASE_SETTINGS_ERROR=1302001,\n    E1302002_BASE_DATABASE_ERROR=1302002,\n    E1302003_BASE_HTTP_DEPENDENCE_ERROR=1302003,\n    E1302004_BASE_BKSUITE_DATABASE_ERROR=1302004,\n    E1302005_BASE_LICENSE_ERROR=1302005,\n    E1302006_ENTERPRISE_LOGIN_ERROR=1302006,\n)\n"
  },
  {
    "path": "paas-ce/paas/login/common/http.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport requests\n\nfrom common.log import logger\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\ndef _gen_header():\n    headers = {\n        \"Content-Type\": \"application/json\",\n    }\n    return headers\n\n\ndef _http_request(method, url, headers=None, data=None, verify=None, cert=None):\n    try:\n        if method == \"GET\":\n            resp = requests.get(url=url, headers=headers, params=data, verify=verify, cert=cert)\n        elif method == \"HEAD\":\n            resp = requests.head(url=url, headers=headers, verify=verify, cert=cert)\n        elif method == \"POST\":\n            resp = requests.post(url=url, headers=headers, json=data, verify=verify, cert=cert)\n        elif method == \"DELETE\":\n            resp = requests.delete(url=url, headers=headers, json=data, verify=verify, cert=cert)\n        elif method == \"PUT\":\n            resp = requests.put(url=url, headers=headers, json=data, verify=verify, cert=cert)\n        else:\n            return False, None\n    except requests.exceptions.RequestException:\n        logger.exception(\"http request error! type: %s, url: %s, data: %s\" % (\n            method, url, str(data)))\n        return False, None\n    else:\n        if resp.status_code != 200:\n            content = resp.content[:100] if resp.content else ''\n            error_msg = (\"http request error! type: %s, url: %s, data: %s, \"\n                         \"response_status_code: %s, response_content: %s\")\n            logger.error(error_msg % (method, url, str(data), resp.status_code, content))\n            return False, None\n\n        return True, resp.json()\n\n\ndef http_get(url, data, verify=None, cert=None):\n    headers = _gen_header()\n    return _http_request(method=\"GET\", url=url, headers=headers, data=data, verify=verify, cert=cert)\n\n\ndef http_post(url, data, verify=None, cert=None):\n    headers = _gen_header()\n    return _http_request(method=\"POST\", url=url, headers=headers, data=data, verify=verify, cert=cert)\n\n\ndef http_delete(url, data, verify=None, cert=None):\n    headers = _gen_header()\n    return _http_request(method=\"DELETE\", url=url, headers=headers, data=data, verify=verify, cert=cert)\n"
  },
  {
    "path": "paas-ce/paas/login/common/log.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nUsage:\n\n    from common.log import logger\n\n    logger.info(\"test\")\n    logger.error(\"wrong1\")\n    logger.exception(\"wrong2\")\n\n    # with traceback\n    try:\n        1 / 0\n    except Exception:\n        logger.exception(\"wrong3\")\n\"\"\" # noqa\n\nimport logging\n\nlogger = logging.getLogger(\"root\")\n"
  },
  {
    "path": "paas-ce/paas/login/common/mixins/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/common/mixins/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.utils.translation import gettext as _\n\nfrom common.responses import FailJsonResponse\n\n\nclass AccessMixin(object):\n    \"\"\"\n    'Abstract' mixin that gives access mixins the same customizable\n    functionality.\n    \"\"\"\n    pass\n\n\nclass SuperuserRequiredMixin(AccessMixin):\n    \"\"\"\n    Mixin allows you to require a user with `is_superuser` set to True.\n    \"\"\"\n    def dispatch(self, request, *args, **kwargs):\n        if not request.user.is_superuser:\n            return FailJsonResponse(_(\"非管理员, 没有权限进行操作, 请找管理员申请权限!\"))\n        return super(SuperuserRequiredMixin, self).dispatch(request, *args, **kwargs)\n\n\nclass SuperuserOrPutOwnerRequiredMixin(AccessMixin):\n    \"\"\"\n    Mixin allows you to require a user with `is_superuser` or `Owner` set to True.\n    Put: is_superuser or owner\n    Post Delete Get: is_superuser\n    \"\"\"\n    def dispatch(self, request, *args, **kwargs):\n        user_id = kwargs.get('user_id')\n        is_put_owner = request.method == \"PUT\" and user_id is not None and request.user.id == int(user_id)\n        if not request.user.is_superuser and not is_put_owner:\n            return FailJsonResponse(_(\"非管理员, 没有权限进行操作, 请找管理员申请权限!\"))\n        return super(SuperuserOrPutOwnerRequiredMixin, self).dispatch(request, *args, **kwargs)\n"
  },
  {
    "path": "paas-ce/paas/login/common/mixins/exempt.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.utils.decorators import method_decorator\nfrom django.views.decorators.csrf import csrf_exempt\n\nfrom bkaccount.decorators import login_exempt\n\n\nclass CsrfExemptMixin(object):\n    \"\"\"\n    Mixin allows you to request without `csrftoken`.\n    \"\"\"\n    @method_decorator(csrf_exempt)\n    def dispatch(self, *args, **kwargs):\n        return super(CsrfExemptMixin, self).dispatch(*args, **kwargs)\n\n\nclass LoginExemptMixin(object):\n    \"\"\"\n    Mixin allows you to request without `login`.\n    \"\"\"\n    @method_decorator(login_exempt)\n    def dispatch(self, *args, **kwargs):\n        return super(LoginExemptMixin, self).dispatch(*args, **kwargs)\n\n\nclass CsrfAndLoginExemptMixin(object):\n    \"\"\"\n    Mixin allows you to request without `login` and `csrftoken`.\n    \"\"\"\n    @method_decorator(csrf_exempt)\n    @method_decorator(login_exempt)\n    def dispatch(self, *args, **kwargs):\n        return super(CsrfAndLoginExemptMixin, self).dispatch(*args, **kwargs)\n"
  },
  {
    "path": "paas-ce/paas/login/common/responses.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.http import JsonResponse\n\nfrom bkaccount.constants import ApiErrorCodeEnum, ApiErrorCodeEnumV2\n\n\nclass FailJsonResponse(JsonResponse):\n    def __init__(self, message, **kwargs):\n        data = {}\n        if kwargs:\n            data.update(kwargs)\n\n        # high priority\n        data.update({\n            \"result\": False,\n            \"message\": message\n        })\n\n        super(FailJsonResponse, self).__init__(data)\n\n\nclass OKJsonResponse(JsonResponse):\n    def __init__(self, message, **kwargs):\n        data = {}\n        if kwargs:\n            data.update(kwargs)\n\n        # high priority\n        data.update({\n            \"result\": True,\n            \"message\": message\n        })\n\n        super(OKJsonResponse, self).__init__(data)\n\n\nclass ApiV1BaseJsonResponse(JsonResponse):\n    def __init__(self, result, code, message, data=None):\n        data = data if data is not None else {}\n        json_data = {'result': result, 'code': code, 'message': message, 'data': data}\n        super(ApiV1BaseJsonResponse, self).__init__(json_data)\n\n\nclass ApiV1FailJsonResponse(ApiV1BaseJsonResponse):\n    def __init__(self, message, **kwargs):\n        code = kwargs.get('code') or ApiErrorCodeEnum.PARAM_NOT_VALID\n        data = kwargs.get('data')\n        super(ApiV1FailJsonResponse, self).__init__(False, code, message, data=data)\n\n\nclass ApiV1OKJsonResponse(ApiV1BaseJsonResponse):\n    def __init__(self, message, **kwargs):\n        data = kwargs.get('data')\n        super(ApiV1OKJsonResponse, self).__init__(True, ApiErrorCodeEnum.SUCCESS, message, data=data)\n\n\nclass ApiV2BaseJsonResponse(JsonResponse):\n    def __init__(self, result, code, message, data=None):\n        data = data if data is not None else {}\n        json_data = {'result': result, 'bk_error_code': code, 'bk_error_msg': message, 'data': data}\n        super(ApiV2BaseJsonResponse, self).__init__(json_data)\n\n\nclass ApiV2FailJsonResponse(ApiV2BaseJsonResponse):\n    def __init__(self, message, **kwargs):\n        code = kwargs.get('code') or ApiErrorCodeEnumV2.PARAM_NOT_VALID\n        data = kwargs.get('data')\n        super(ApiV2FailJsonResponse, self).__init__(False, code, message, data=data)\n\n\nclass ApiV2OKJsonResponse(ApiV2BaseJsonResponse):\n    def __init__(self, message, **kwargs):\n        data = kwargs.get('data')\n        super(ApiV2OKJsonResponse, self).__init__(True, ApiErrorCodeEnumV2.SUCCESS, message, data=data)\n"
  },
  {
    "path": "paas-ce/paas/login/common/utils/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/common/utils/basic.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\ndef first_error_message(form):\n    error_data = form.errors.as_data()\n    field = list(error_data.items())[0][0]\n    error_message = list(error_data.items())[0][1][0].message\n    message = \"{}: {}\".format(field, error_message)\n\n    return message\n"
  },
  {
    "path": "paas-ce/paas/login/common/utils/time.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport datetime\n\nfrom django.utils import timezone\n\nfrom common.constants import DATETIME_FORMAT_STRING\n\n\ndef _parse_datetime(date_string, format_string, zone=None, target_zone=None):\n    \"\"\"\n    将不带时区的字符串转为目标时区的时间\n    :param date_string:时间字符串\n    :param format_string:时间字符串格式\n    :param zone:时间字符串的时区，默认为本地时区\n    :param target_zone: 目标时区，默认为本地时区\n    \"\"\"\n    # get a naive datetime\n    naive_dt = datetime.datetime.strptime(date_string, format_string)\n    # makes a naive datetime.datetime in a given time zone aware.\n    aware_dt = timezone.make_aware(naive_dt, zone)\n    # converts an aware datetime.datetime to local time.\n    target_aware_dt = timezone.localtime(aware_dt, target_zone)\n    return target_aware_dt\n\n\ndef parse_local_datetime(date_string, format_string=DATETIME_FORMAT_STRING, zone=None):\n    \"\"\"\n    将不带时区的字符串转为本地时区的时间\n    :param date_string:时间字符串\n    :param format_string:时间字符串格式\n    :param zone:时间字符串的时区，默认为本地时区\n    \"\"\"\n    return _parse_datetime(date_string, format_string, zone=zone)\n\n\ndef parse_utc_datetime(date_string, format_string=DATETIME_FORMAT_STRING, zone=None):\n    \"\"\"\n    将不带时区的字符串转为UTC时区的时间\n    :param date_string:时间字符串\n    :param format_string:时间字符串格式\n    :param zone:时间字符串的时区，默认为本地时区\n    \"\"\"\n    return _parse_datetime(date_string, format_string, zone=zone, target_zone=datetime.timezone.utc)\n"
  },
  {
    "path": "paas-ce/paas/login/conf/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/conf/default.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nimport os\nimport sys\nfrom django.utils.functional import SimpleLazyObject\n\ntry:\n    import pymysql\n    pymysql.install_as_MySQLdb()\nexcept Exception:\n    pass\n\nPROJECT_PATH = os.path.dirname(os.path.abspath(__file__))\nPROJECT_ROOT, PROJECT_MODULE_NAME = os.path.split(PROJECT_PATH)\nBASE_DIR = os.path.dirname(os.path.dirname(PROJECT_PATH))\nDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'\n\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = 'o7(025idh*fj@)ohujum-ilfxl^n=@d&$xz!_$$7s$8jopd5r#'\n\n# SECURITY WARNING: don't run with debug turned on in production!\n\nALLOWED_HOSTS = ['*']\n\nCSRF_COOKIE_NAME = 'bklogin_csrftoken'\n\n# Application definition\nINSTALLED_APPS = (\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'rest_framework',\n    'rest_framework_simplejwt',\n    'bkaccount',\n    'bk_i18n',\n    # 'corsheaders'\n)\n\nMIDDLEWARE = (\n    # 'corsheaders.middleware.CorsMiddleware',\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.locale.LocaleMiddleware',\n    'django.middleware.common.CommonMiddleware',\n    'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    'django.middleware.clickjacking.XFrameOptionsMiddleware',\n    'django.middleware.security.SecurityMiddleware',\n    'bkaccount.middlewares.LoginMiddleware',\n    'bk_i18n.middlewares.LanguageMiddleware',\n    'bk_i18n.middlewares.ApiLanguageMiddleware',\n    'bk_i18n.middlewares.TimezoneMiddleware',\n)\n\nREST_FRAMEWORK = {\n    'DEFAULT_AUTHENTICATION_CLASSES': [\n        'rest_framework_simplejwt.authentication.JWTAuthentication',\n    ],\n}\n\n# JWT认证配置\nfrom datetime import timedelta\n# 认证方式配置\n# 'jwt' - 使用JWT认证\n# 'cookie' - 使用传统token+cookie认证\nAUTHENTICATION_MODE = 'cookie'\n\nSIMPLE_JWT = {\n    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60),\n    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),\n    'ROTATE_REFRESH_TOKENS': False,\n    'BLACKLIST_AFTER_ROTATION': True,\n    'ALGORITHM': 'HS256',\n    'SIGNING_KEY': SECRET_KEY,\n    'VERIFYING_KEY': None,\n    'AUTH_HEADER_TYPES': ('Bearer',),\n    'USER_ID_FIELD': 'id',\n    'USER_ID_CLAIM': 'user_id',\n    'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),\n    'TOKEN_TYPE_CLAIM': 'token_type',\n}\n\nROOT_URLCONF = 'urls'\n\n# mako template dir\nMAKO_TEMPLATE_DIR = os.path.join(PROJECT_ROOT, 'templates')\nMAKO_TEMPLATE_MODULE_DIR = os.path.join(PROJECT_ROOT, 'templates_module')\n\n\nTEMPLATE_CONTEXT_PROCESSORS = (\n    'django.template.context_processors.debug',\n    'django.template.context_processors.request',\n    'django.contrib.auth.context_processors.auth',\n    'django.template.context_processors.csrf',\n    'common.context_processors.site_settings',\n    'django.template.context_processors.i18n',\n    'django.contrib.messages.context_processors.messages',\n)\n\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        # django template dir\n        'DIRS': (\n            # 绝对路径，比如\"/home/html/django_templates\" or \"C:/www/django/templates\".\n            os.path.join(PROJECT_ROOT, 'templates'),\n        ),\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': list(TEMPLATE_CONTEXT_PROCESSORS),\n        },\n    },\n]\n\n# Static files (CSS, JavaScript, Images)\nSITE_URL = '/login/'\n\nIMG_URL = '/uploads/login/'\n\nSTATIC_URL = '/static/'\n\nSTATICFILES_DIRS = (\n    os.path.join(PROJECT_ROOT, 'static'),\n)\n\nSTATIC_VERSION = '0.0.7'\n\n# CSS 文件后缀名\nCSS_SUFFIX = 'min.css'\n# JS 文件后缀名\nJS_SUFFIX = 'min.js'\n\n# CSRF 验证失败处理函数\nCSRF_FAILURE_VIEW = 'bkaccount.views.csrf_failure'\n\n##################\n# Login Config   #\n##################\n# 登录方式：bk_login，自定义登录方式：custom_login\nLOGIN_TYPE = 'bk_login'\nCUSTOM_LOGIN_VIEW = ''\nCUSTOM_AUTHENTICATION_BACKEND = ''\ntry:\n    custom_conf_module_path = \"ee_login.settings_login\"\n    custom_conf_module = __import__(custom_conf_module_path, globals(), locals(), ['*'])\n    LOGIN_TYPE = getattr(custom_conf_module, 'LOGIN_TYPE', 'bk_login')\n    CUSTOM_LOGIN_VIEW = getattr(custom_conf_module, 'CUSTOM_LOGIN_VIEW', '')\n    CUSTOM_AUTHENTICATION_BACKEND = getattr(custom_conf_module, 'CUSTOM_AUTHENTICATION_BACKEND', '')\nexcept ImportError as e:\n    LOGIN_TYPE = 'bk_login'\n##################\n# AUTHENTICATION #\n##################\nLOGIN_URL = SimpleLazyObject(lambda: getattr(getattr(sys.modules['django.conf'], 'settings'), 'SITE_URL'))\n\nLOGOUT_URL = SimpleLazyObject(lambda: '%slogout/'\n                              % getattr(getattr(sys.modules['django.conf'], 'settings'), 'SITE_URL'))\n\nLOGIN_COMPLETE_URL = SimpleLazyObject(lambda: \"%s://%s%s\" % (\n    getattr(getattr(sys.modules['django.conf'], 'settings'), 'HTTP_SCHEMA'),\n    getattr(getattr(sys.modules['django.conf'], 'settings'), 'PAAS_DOMAIN'),\n    getattr(getattr(sys.modules['django.conf'], 'settings'), 'SITE_URL')))\n\nAUTH_USER_MODEL = 'bkaccount.BkUser'\n# 添加 JWT 认证后端\nJWT_AUTHENTICATION_BACKEND = 'bkaccount.backends.JWTAuthenticationBackend'\n\nAUTHENTICATION_BACKENDS_DICT = {\n    'bk_login': ('bkaccount.backends.BkBackend', 'django.contrib.auth.backends.ModelBackend'),\n    'custom_login': ('bkaccount.backends.BkBackend', CUSTOM_AUTHENTICATION_BACKEND),\n    'jwt_login': (JWT_AUTHENTICATION_BACKEND, 'django.contrib.auth.backends.ModelBackend'),\n}\n\nAUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS_DICT.get(\n    LOGIN_TYPE, (JWT_AUTHENTICATION_BACKEND, 'bkaccount.backends.BkBackend', 'django.contrib.auth.backends.ModelBackend'))\n\nWSGI_APPLICATION = 'wsgi.application'\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3',\n        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),\n    }\n}\n\n# Internationalization\n# TIME_ZONE = 'Etc/GMT%+d' % ((time.altzone if time.daylight else time.timezone) / 3600)\nUSE_I18N = True\nUSE_L10N = True\n\n# timezone\n# Default time zone for localization in the UI.\nTIME_ZONE = 'Asia/Shanghai'\nUSE_TZ = True\nTIMEZONE_SESSION_KEY = 'django_timezone'\nLANGUAGE_SESSION_KEY = '_language'\n\n# language\n# 避免循环引用\n_ = lambda s: s  # noqa\nLANGUAGES = (\n    ('en', _('English')),\n    ('zh-hans', _('简体中文')),\n)\nLANGUAGE_CODE = 'zh-hans'\nLANGUAGE_COOKIE_DOMAIN = SimpleLazyObject(lambda: getattr(getattr(sys.modules['django.conf'], 'settings'),\n                                                          'BK_COOKIE_DOMAIN'))\nLANGUAGE_COOKIE_NAME = 'blueking_language'\nLANGUAGE_COOKIE_PATH = '/'\nLOCALE_PATHS = (\n    os.path.join(PROJECT_ROOT, 'locale'),\n)\n\n# cookie名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie 有效期，默认为1天\nBK_COOKIE_AGE = 60 * 60 * 24\n# bk_token 校验有效期校验时间允许误差，防止多台机器时间不同步,默认1分钟\nBK_TOKEN_OFFSET_ERROR_TIME = 60\n\n# APP_ENGINE 状态查询超时时间\nEVENT_STATE_EXPIRE_SECONDS = 180\nHISTORY_EVENT_STATE_EXPIRE_SECONDS = 1800\n\n##################\n# 初始化用户信息 #\n##################\nUSERNAME = 'admin'\nPASSWORD = 'blueking'\nDEBUG = False\n# logging config\nLOG_LEVEL = 'ERROR'\n\nLOGGING_DIR = os.environ.get('PAAS_LOGGING_DIR') or os.path.join(PROJECT_ROOT, 'logs')\nif not os.path.exists(LOGGING_DIR):\n    os.mkdir(LOGGING_DIR)\n\n# 10M\nLOG_MAX_BYTES = 1024 * 1024 * 10\nLOG_BACKUP_COUNT = 10\nLOG_CLASS = 'logging.handlers.RotatingFileHandler'\nLOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'formatters': {\n        'verbose': {\n            'format':\n            '%(levelname)s [%(asctime)s] %(pathname)s %(lineno)d %(funcName)s %(process)d %(thread)d \\n \\t %(message)s \\n',  # noqa\n            'datefmt': '%Y-%m-%d %H:%M:%S'\n        },\n        'simple': {\n            'format': '%(levelname)s %(message)s \\n'\n        },\n    },\n    'handlers': {\n        'null': {\n            'level': 'DEBUG',\n            'class': 'logging.NullHandler',\n        },\n        'mail_admins': {\n            'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler'\n        },\n        'console': {\n            'level': 'INFO', 'class': 'logging.StreamHandler', 'formatter':\n            'simple'\n        },\n        'root': {\n            'class': LOG_CLASS,\n            'formatter': 'verbose',\n            'filename': os.path.join(LOGGING_DIR, 'login.log'),\n            'maxBytes': LOG_MAX_BYTES,\n            'backupCount': LOG_BACKUP_COUNT\n        },\n        'wb_mysql': {\n            'class': LOG_CLASS,\n            'formatter': 'verbose',\n            'filename': os.path.join(LOGGING_DIR, 'login_mysql.log'),\n            'maxBytes': LOG_MAX_BYTES,\n            'backupCount': LOG_BACKUP_COUNT\n        },\n    },\n    'loggers': {\n        'django': {\n            'handlers': ['console'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n        'django.request': {\n            'handlers': ['console'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n        'root': {\n            'handlers': ['console'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n        'django.db.backends': {\n            'handlers': ['wb_mysql'],\n            'level': LOG_LEVEL,\n            'propagate': True,\n        },\n    }\n}\n\n\"\"\"\n# 本地开发解决跨域问题\n打开注释： \nINSTALLED_APPS = (\n    \"corsheaders\"\n)\n打开注释： \nMIDDLEWARE = (\n    'corsheaders.middleware.CorsMiddleware',\n)\n\n# 添加本地服务地址\nCORS_ALLOWED_ORIGINS = [\n    \"http://192.168.0.9:8000\"\n]\n\"\"\"\n\n\n\nCORS_ALLOW_CREDENTIALS = True\nCORS_ALLOWED_ORIGINS = [\n    \"http://192.168.0.9:8000\"\n]\nCORS_ALLOW_METHODS = (\n        'DELETE',\n        'GET',\n        'OPTIONS',\n        'PATCH',\n        'POST',\n        'PUT',\n        'VIEW',\n    )\n\nCORS_ALLOW_HEADERS = (\n        'accept',\n        'accept-encoding',\n        'authorization',\n        'content-type',\n        'dnt',\n        'origin',\n        'user-agent',\n        'x-csrftoken',\n        'x-requested-with',\n    )\n"
  },
  {
    "path": "paas-ce/paas/login/conf/settings_development.py.sample",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n开发环境配置\n\"\"\" # noqa\n\nDEBUG = True\n\n# 设置验证类型\n#LOGIN_TYPE = 'jwt_login'\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 本地开发登录页面静态资源, 注意: 生产环境使用nginx反向代理需要改成 SITE_URL = \"/login/\"\nSITE_URL = \"/login/\"\n\nSTATIC_URL = \"/static/\"\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',   # 默认用mysql\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '192.168.0.111',\n        'PORT': '3306',\n    }\n}\n\n# 初始化用户名、密码\nUSERNAME = 'admin'\nPASSWORD = 'admin'\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = '192.168.0.111'\nHTTP_SCHEMA = 'https'\n\n\n# cookie访问域\nBK_COOKIE_DOMAIN ='192.168.0.111'\n\nSECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n\n# RBAC\nRBAC_APP_SECRET = \"RBAC_SECRET_KEY\"\n\n# CSRF\nCSRF_TRUSTED_ORIGINS = [\n    'https://192.168.0.111',\n    'http://192.168.0.111',\n]\n\n"
  },
  {
    "path": "paas-ce/paas/login/conf/settings_production.py.sample",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n生产环境配置\n\"\"\" # noqa\n\nDEBUG = False\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 生产环境, 使用nginx反向代理 /login/static/\nSITE_URL = \"/login/\"\n\nSTATIC_URL = \"/static/\"\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',   # 默认用mysql\n        'NAME': 'open_paas',\n        'USER': 'root',\n        'PASSWORD': '',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    }\n}\n\n# 初始化用户名、密码\nUSERNAME = 'admin'\nPASSWORD = 'admin'\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = ''\nHTTP_SCHEMA = 'http'\n\n\n# cookie访问域\nBK_COOKIE_DOMAIN = '192.168.0.111'\n\nSECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\nRBAC_APP_SECRET = \"RBAC_SECRET_KEY\"\n"
  },
  {
    "path": "paas-ce/paas/login/conf/settings_testing.py.sample",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n测试环境配置\n\"\"\" # noqa\n\n\nDEBUG = True\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3',\n        'NAME': 'open_paas_unittest',\n    }\n}\n\n# 初始化用户名、密码\nUSERNAME = 'admin'\nPASSWORD = 'admin'\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = ''\nHTTP_SCHEMA = 'http'\n\n\n# cookie访问域\nBK_COOKIE_DOMAIN = '192.168.0.111'\n\nSECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\nRBAC_APP_SECRET = \"RBAC_SECRET_KEY\"\n"
  },
  {
    "path": "paas-ce/paas/login/ee_login/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/ee_login/settings_login.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n# 蓝鲸登录方式：bk_login\n# 自定义登录方式：custom_login\nLOGIN_TYPE = 'bk_login'\n\n# 默认bk_login，无需设置其他配置\n\n###########################\n# 自定义登录 custom_login   #\n###########################\n# 配置自定义登录请求和登录回调的响应函数, 如：CUSTOM_LOGIN_VIEW = 'ee_official_login.oauth.google.views.login'\nCUSTOM_LOGIN_VIEW = ''\n# 配置自定义验证是否登录的认证函数, 如：CUSTOM_AUTHENTICATION_BACKEND = 'ee_official_login.oauth.google.backends.OauthBackend'\nCUSTOM_AUTHENTICATION_BACKEND = ''\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/oauth/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/oauth/google/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/oauth/google/backends.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.contrib.auth.backends import ModelBackend\nfrom django.contrib.auth import get_user_model\n\nfrom common.log import logger\nfrom .utils import get_access_token, get_scope_data\n\n\nclass OauthBackend(ModelBackend):\n    \"\"\"\n    自定义认证方法\n    \"\"\"\n    def authenticate(self, code=None):\n        # Google登录验证\n        try:\n            # 调用接口验证登录票据CODE，并获取access_token\n            access_token = get_access_token(code)\n            if not access_token:\n                return None\n            # 通过access_token 获取用户信息\n            userinfo = get_scope_data(access_token)\n            if not userinfo:\n                return None\n            # 验证通过\n            username = userinfo.get('username')\n            # 获取User类\n            user_model = get_user_model()\n            # 获取或生成User对象，并根据需要设置用户信息和角色\n            try:\n                user = user_model.objects.get(username=username)\n            except user_model.DoesNotExist:\n                # 创建User对象\n                user = user_model.objects.create_user(username)\n                # 获取用户信息，只在第一次创建时设置，已经存在不更新\n                chname = userinfo.get('chname', '')\n                phone = userinfo.get('phone', '')\n                email = userinfo.get('email', '')\n                user.chname = chname\n                user.phone = phone\n                user.email = email\n                user.save()\n                # note: 可根据需要设置用户角色, user_model.objects.modify_user_role(...)\n            # note: 可根据需要每次都更新用户信息等，或每次都更新用户角色等\n            return user\n        except Exception:\n            logger.exception(\"Google login backend validation error!\")\n        return None\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/oauth/google/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n# google oauth2.0 登录URL\nGOOGLE_OAUTH_LOGIN_URL = 'https://accounts.google.com/o/oauth2/auth'\n\n# 通过认证Code获取Access_token的API URL\nACCESS_TOKEN_URL = 'https://www.googleapis.com/oauth2/v3/token'\n\n# 获取google 用户信息的API URL\nSCOPE_URL = 'https://www.googleapis.com/userinfo/v2/me'\n\n# Google OAuth 2.0 客户端 ID\nCLIENT_ID = ''\n\n# Google OAuth 2.0 客户端 密钥\nCLIENT_SECRET = ''\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/oauth/google/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport urllib.request, urllib.parse, urllib.error\nimport random\n\nimport requests\nfrom django.conf import settings as bk_settings\n\nfrom common.log import logger\nfrom . import settings as google_setting\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\ndef gen_oauth_state_security_token(length=32):\n    \"\"\"\n    生成随机的state，防止csrf\n    \"\"\"\n    allowed_chars = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ0123456789'\n    state = ''.join(random.choice(allowed_chars) for _ in range(length))\n    return state\n\n\ndef gen_oauth_login_url(extra_param):\n    \"\"\"\n    生成跳转登录的URL\n    \"\"\"\n    # 由于google校验redirect_uri是精准匹配的，所有redirect_uri中无法带参数，只能放置在state中处理\n    extra_param = {} if extra_param is None or not isinstance(extra_param, dict) else extra_param\n    extra_param['security_token'] = gen_oauth_state_security_token()\n    state = '&'.join([\"%s=%s\" % (k, v) for k, v in list(extra_param.items()) if v is not None and v != \"\"])\n    # 跳转到 google 登录的URL\n    google_oauth_login_url = '%s?%s' % (\n        google_setting.GOOGLE_OAUTH_LOGIN_URL,\n        urllib.parse.urlencode({'response_type': 'code',\n                          'client_id': google_setting.CLIENT_ID,\n                          'redirect_uri': bk_settings.LOGIN_COMPLETE_URL,\n                          'scope': 'email',\n                          'state': state})\n    )\n    return google_oauth_login_url, state\n\n\ndef get_access_token(code):\n    \"\"\"\n    调用接口验证CODE，并获取access_token\n    \"\"\"\n    params = {\n        \"grant_type\": \"authorization_code\",\n        \"code\": code,\n        \"redirect_uri\": bk_settings.LOGIN_COMPLETE_URL,\n        \"client_id\": google_setting.CLIENT_ID,\n        \"client_secret\": google_setting.CLIENT_SECRET\n\n    }\n    resp = requests.post(url=google_setting.ACCESS_TOKEN_URL, params=params)\n    if resp.status_code != 200:\n        # 记录错误日志\n        content = resp.content[:100] if resp.content else ''\n        error_msg = (\"http enterprise request error! type: %s, url: %s, data: %s, \"\n                     \"response_status_code: %s, response_content: %s\")\n        logger.error(error_msg % ('POST', google_setting.ACCESS_TOKEN_URL, str(params), resp.status_code, content))\n        return None\n    data = resp.json()\n    return data.get('access_token')\n\n\ndef get_scope_data(access_token):\n    \"\"\"\n    scope要求的数据\n    \"\"\"\n    params = {\n        'access_token': access_token\n    }\n    resp = requests.get(google_setting.SCOPE_URL, params=params)\n    if resp.status_code != 200:\n        # 记录错误日志\n        content = resp.content[:100] if resp.content else ''\n        error_msg = (\"http enterprise request error! type: %s, url: %s, data: %s, \"\n                     \"response_status_code: %s, response_content: %s\")\n        logger.error(error_msg % ('GET', google_setting.SCOPE_URL, str(params), resp.status_code, content))\n        return None\n    data = resp.json()\n    userinfo = {\n        'username': data.get('email', ''),\n        'email': data.get('email', ''),\n        'chname': data.get('email', ''),\n        'phone': data.get('phone', ''),\n    }\n    return userinfo\n"
  },
  {
    "path": "paas-ce/paas/login/ee_official_login/oauth/google/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport urllib.parse\n\nfrom django.contrib.auth import authenticate\n\nfrom bkaccount.accounts import Account\nfrom .utils import gen_oauth_login_url\n\n\ndef login(request):\n    \"\"\"\n    登录处理\n    \"\"\"\n    account = Account()\n    # 获取用户实际请求的URL, 目前account.REDIRECT_FIELD_NAME = 'c_url'\n    redirect_to = request.GET.get(account.REDIRECT_FIELD_NAME, '')\n    # 获取用户实际访问的蓝鲸应用\n    app_id = request.GET.get('app_id', '')\n\n    # 来自注销\n    is_from_logout = bool(request.GET.get('is_from_logout') or 0)\n\n    # google登录回调后会自动添加code参数\n    code = request.GET.get('code')\n    # 若没有code参数，则表示需要跳转到google登录\n    if code is None or is_from_logout:\n        # 生成跳转到google登录的链接\n        google_oauth_login_url, state = gen_oauth_login_url({\n            'app_id': app_id,\n            account.REDIRECT_FIELD_NAME: redirect_to\n        })\n        # 将state 设置于session，Oauth2.0特有的，防止csrf攻击的\n        request.session['state'] = state\n        # 直接调用蓝鲸登录重定向方法\n        response = account.login_redirect_response(request, google_oauth_login_url, is_from_logout)\n        return response\n\n    # 已经有企业认证票据参数（如code参数），表示企业登录后的回调或企业认证票据还存在\n    # oauth2.0 特有处理逻辑，防止csrf攻击\n    # 处理state参数\n    state = request.GET.get('state', '')\n    state_dict = dict(urllib.parse.parse_qsl(state))\n    app_id = state_dict.get('app_id')\n    redirect_to = state_dict.get(account.REDIRECT_FIELD_NAME, '')\n    state_from_session = request.session.get('state')\n    # 校验state，防止csrf攻击\n    if state != state_from_session:\n        return account.login_failed_response(request, redirect_to, app_id)\n\n    # 验证用户登录是否OK\n    user = authenticate(code=code)\n    if user is None:\n        # 直接调用蓝鲸登录失败处理方法\n        return account.login_failed_response(request, redirect_to, app_id)\n    # 成功，则调用蓝鲸登录成功的处理函数，并返回响应\n    return account.login_success_response(request, user, redirect_to, app_id)\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/.eslintrc-auto-import.json",
    "content": "{\n  \"globals\": {\n    \"Component\": true,\n    \"ComponentPublicInstance\": true,\n    \"ComputedRef\": true,\n    \"DirectiveBinding\": true,\n    \"EffectScope\": true,\n    \"ExtractDefaultPropTypes\": true,\n    \"ExtractPropTypes\": true,\n    \"ExtractPublicPropTypes\": true,\n    \"InjectionKey\": true,\n    \"MaybeRef\": true,\n    \"MaybeRefOrGetter\": true,\n    \"PropType\": true,\n    \"Ref\": true,\n    \"ShallowRef\": true,\n    \"Slot\": true,\n    \"Slots\": true,\n    \"VNode\": true,\n    \"WritableComputedRef\": true,\n    \"computed\": true,\n    \"createApp\": true,\n    \"customRef\": true,\n    \"defineAsyncComponent\": true,\n    \"defineComponent\": true,\n    \"effectScope\": true,\n    \"getCurrentInstance\": true,\n    \"getCurrentScope\": true,\n    \"getCurrentWatcher\": true,\n    \"h\": true,\n    \"inject\": true,\n    \"isProxy\": true,\n    \"isReactive\": true,\n    \"isReadonly\": true,\n    \"isRef\": true,\n    \"isShallow\": true,\n    \"markRaw\": true,\n    \"nextTick\": true,\n    \"onActivated\": true,\n    \"onBeforeMount\": true,\n    \"onBeforeUnmount\": true,\n    \"onBeforeUpdate\": true,\n    \"onDeactivated\": true,\n    \"onErrorCaptured\": true,\n    \"onMounted\": true,\n    \"onRenderTracked\": true,\n    \"onRenderTriggered\": true,\n    \"onScopeDispose\": true,\n    \"onServerPrefetch\": true,\n    \"onUnmounted\": true,\n    \"onUpdated\": true,\n    \"onWatcherCleanup\": true,\n    \"provide\": true,\n    \"reactive\": true,\n    \"readonly\": true,\n    \"ref\": true,\n    \"resolveComponent\": true,\n    \"shallowReactive\": true,\n    \"shallowReadonly\": true,\n    \"shallowRef\": true,\n    \"toRaw\": true,\n    \"toRef\": true,\n    \"toRefs\": true,\n    \"toValue\": true,\n    \"triggerRef\": true,\n    \"unref\": true,\n    \"useAttrs\": true,\n    \"useCssModule\": true,\n    \"useCssVars\": true,\n    \"useId\": true,\n    \"useModel\": true,\n    \"useSlots\": true,\n    \"useTemplateRef\": true,\n    \"watch\": true,\n    \"watchEffect\": true,\n    \"watchPostEffect\": true,\n    \"watchSyncEffect\": true\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/.prettierrc",
    "content": "{\n\t\"arrowParens\": \"avoid\",\n\t\"bracketSpacing\": true,\n\t\"endOfLine\": \"lf\",\n\t\"htmlWhitespaceSensitivity\": \"css\",\n\t\"insertPragma\": false,\n\t\"singleAttributePerLine\": false,\n\t\"bracketSameLine\": true,\n\t\"jsxBracketSameLine\": false,\n\t\"jsxSingleQuote\": false,\n\t\"printWidth\": 145,\n\t\"proseWrap\": \"preserve\",\n\t\"quoteProps\": \"as-needed\",\n\t\"requirePragma\": false,\n\t\"semi\": true,\n\t\"singleQuote\": false,\n\t\"tabWidth\": 4,\n\t\"trailingComma\": \"es5\",\n\t\"useTabs\": true,\n\t\"embeddedLanguageFormatting\": \"auto\",\n\t\"vueIndentScriptAndStyle\": false,\n\t\"parser\": \"vue\"\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/README.md",
    "content": "# 前端项目\n#### 项目采用vue3.5.x + vite7.x + ant-design-vue4.2.x + tailwindcss4.x开发，node.js建议使用v20.20.0以上的版本。前端核心功能特别依赖于以下浏览器版本：\n- Chrome 111(发布于2023年03月)\n- Safari 16.4(发布于2023年03月)\n- Firefox 128(发布于2024年07月)\n\n若遇到样式浏览器兼容问题，请自行升级浏览器版本。\n\n#### 安装依赖\n- npm install\n#### 启动项目\n- npm run serve\n#### 打包项目\n- npm run build\n#### 打包后生成文件\n- 打包后生成的文件在dist目录下，将dist目录下的index.html文件复制到/pass-ce/paas/login/templates/login文件夹下，将原login.html删除，并将index.html文件名改为login.html\n- 将dist目录下的vite-static文件夹和favicon.ico复制到/paas-ce/paas/login/static文件下，如果/paas-ce/paas/login/static/文件夹下的vite-static文件夹已经存在，请先将此目录下的vite-static删除再进行操作。"
  },
  {
    "path": "paas-ce/paas/login/frontend/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"UTF-8\" />\n\t\t<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.ico\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t<title>登录 | 数字化运维平台</title>\n\t</head>\n\t<body>\n\t\t<div id=\"app\"></div>\n\t\t<script>\n\t\t\twindow.OPS_AUTH_TYPE = \"{{auth_type}}\";\n\t\t\twindow.OPS_ERROR = \"{{error}}\";\n\t\t</script>\n\t\t<script src=\"https://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js\" type=\"text/javascript\" charset=\"utf-8\" defer></script>\n\t\t<script type=\"module\" src=\"/src/main.js\"></script>\n\t</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/package.json",
    "content": "{\n  \"name\": \"opsany-login-frontend\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"serve\": \"vite\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@ant-design/icons-vue\": \"^7.0.1\",\n    \"@tailwindcss/vite\": \"^4.1.16\",\n    \"@vueuse/components\": \"^14.0.0\",\n    \"@vueuse/core\": \"^14.0.0\",\n    \"@vueuse/integrations\": \"^14.0.0\",\n    \"ant-design-vue\": \"^4.2.6\",\n    \"axios\": \"^1.13.1\",\n    \"less\": \"^4.4.2\",\n    \"lodash\": \"^4.17.21\",\n    \"tailwindcss\": \"^4.1.16\",\n    \"vite-plugin-commonjs\": \"^0.10.4\",\n    \"vue\": \"^3.5.22\",\n    \"vue-clipboard3\": \"^2.0.0\",\n    \"vue-i18n\": \"^11.1.12\",\n    \"vue3-slide-verify\": \"^1.1.8\"\n  },\n  \"devDependencies\": {\n    \"@vitejs/plugin-vue\": \"^6.0.1\",\n    \"prettier\": \"^3.6.2\",\n    \"unplugin-auto-import\": \"^20.2.0\",\n    \"unplugin-vue-components\": \"^30.0.0\",\n    \"vite\": \"^7.1.7\",\n    \"vite-plugin-compression2\": \"^2.3.1\",\n    \"vite-plugin-require-transform\": \"^1.0.21\"\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/App.vue",
    "content": "<template>\n\t<a-config-provider\n\t\t:theme=\"{\n\t\t\ttoken: {\n\t\t\t\tcolorPrimary: '#0ba360',\n\t\t\t\tborderRadius: 2,\n\t\t\t\tcolorText: 'rgba(0, 0, 0, 0.7)',\n\t\t\t\tcolorLink: '#0ba360',\n\t\t\t\tcolorLinkHover: '#34cb88',\n\t\t\t\tcolorLinkActive: '#0ca763',\n\t\t\t},\n\t\t\tcomponents: {\n\t\t\t\tInput: {\n\t\t\t\t\tborderRadius: 4,\n\t\t\t\t},\n\t\t\t\tSelect: {\n\t\t\t\t\tborderRadius: 4,\n\t\t\t\t},\n\t\t\t},\n\t\t}\">\n\t\t<a-app class=\"tw-h-full\">\n\t\t\t<Login></Login>\n\t\t</a-app>\n\t</a-config-provider>\n</template>\n\n<script setup>\nimport Login from \"./view/login/login.vue\";\nimport { useTitle } from '@vueuse/core'\nimport { useI18n } from \"vue-i18n\";\n\nconst { t } = useI18n();\nuseTitle(t('document_title'));\n\n</script>\n\n<style scoped></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/api/login.js",
    "content": "import request, { createAxiosInstance } from '@/utils/request';\n\n//获取列表\n//示例代码 示例使用cancelSource\nexport const getSession = (data = {}, config = { showMessage: true, useCancelToken: false }) => {\n\tconst axiosConfig = { url: \"session/\", method: \"get\", params: data }\n\tconst { request: axios, cancelSource } = createAxiosInstance();\n\treturn config.useCancelToken ? {\n\t\trequest: () => axios(axiosConfig),\n\t\tcancelSource\n\t} : request(axiosConfig)\n}\n\n\n//获取auth列表\nexport const getAuthConfig = (data = {}) => {\n\tconst axiosConfig = { url: \"login/api/v3/auth-config/\", method: \"get\", params: data }\n\treturn request(axiosConfig)\n}\n\n\n//登录接口\nexport const doLogin = (data = {}, config = { showMessage: true }) => {\n\tconst axiosConfig = { url: \"login/api/v3/login/\", method: \"post\", data, ...config }\n\treturn request(axiosConfig)\n}\n\n//获取企业微信二维码数据相关\nexport const getQywx = (data = {}) => {\n\tconst axiosConfig = { url: \"login/api/v3/qywx/\", method: \"get\", params: data }\n\treturn request(axiosConfig)\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/components/SlideVerifyModal/index.vue",
    "content": "<template>\n\t<a-modal v-model:open=\"visible\" width=\"400px\" :footer=\"null\" centered @cancel=\"onCancel\">\n\t\t<div class=\"flex justify-around my-4\">\n\t\t\t<SlideVerify\n\t\t\t\tref=\"SlideVerifyRef\"\n\t\t\t\tslider-text=\"滑动滑块验证\"\n\t\t\t\t:imgs=\"[\n\t\t\t\t\trequire('@/assets/verify/1.jpg'),\n\t\t\t\t\trequire('@/assets/verify/2.jpg'),\n\t\t\t\t\trequire('@/assets/verify/3.jpg'),\n\t\t\t\t\trequire('@/assets/verify/4.jpg'),\n\t\t\t\t\trequire('@/assets/verify/5.jpg'),\n\t\t\t\t\trequire('@/assets/verify/6.jpg'),\n\t\t\t\t\trequire('@/assets/verify/7.jpg'),\n\t\t\t\t\trequire('@/assets/verify/8.jpg'),\n\t\t\t\t\trequire('@/assets/verify/9.jpg'),\n\t\t\t\t\trequire('@/assets/verify/10.jpg'),\n\t\t\t\t\trequire('@/assets/verify/11.jpg'),\n\t\t\t\t\trequire('@/assets/verify/12.jpg'),\n\t\t\t\t]\"\n\t\t\t\t@success=\"onSuccess\"\n\t\t\t\t@fail=\"onFail\"></SlideVerify>\n\t\t</div>\n\t</a-modal>\n</template>\n\n<script setup>\nimport SlideVerify from \"vue3-slide-verify\";\nimport \"vue3-slide-verify/dist/style.css\";\n\nconst emit = defineEmits([\"success\", \"fail\"]);\nconst visible = ref(false);\nconst SlideVerifyRef = useTemplateRef(\"SlideVerifyRef\");\n\nconst showModal = () => {\n\tvisible.value = true;\n\tnextTick(() => {\n\t\trefresh();\n\t});\n};\nconst refresh = () => {\n\tSlideVerifyRef.value.refresh();\n};\nconst onSuccess = () => {\n\tvisible.value = false;\n\temit(\"success\");\n\trefresh();\n};\nconst onFail = () => {\n\temit(\"fail\");\n};\nconst onCancel = () => {\n\tvisible.value = false;\n\tonFail();\n};\n\nonMounted(() => {\n\tnextTick(() => {\n\t\trefresh();\n\t});\n});\n\ndefineExpose({\n\tshowModal,\n\trefreshValidate: refresh,\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/config/defaultSetting.js",
    "content": "const isDev = import.meta.env.DEV\nconst code = 'login'\nconst serverUrl = 'https://192.168.0.111/'\n\n\nexport default {\n\tcode: code,\n\ttitle: 'Template',\n\tisDev,\n\tisProd: !isDev,\n\tbaseUrl: isDev ? serverUrl : window.location.origin + '/',\n\tbaseUrlOfImg: isDev ? serverUrl : window.location.origin + '/',\n}\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/hooks/useI18nCookie.js",
    "content": "import { useCookies } from '@vueuse/integrations/useCookies'\nimport { computed } from 'vue'\nimport { supportedLocales } from '@/locales'\n\nconst COOKIE_NAME = 'opsany_language'\nconst DEFAULT_LANG = 'zh-CN'\nconst COOKIE_LANG_LIST = [\n\t{ key: 'chinese_simplified', value: 'zh-CN' },\n\t{ key: 'chinese_traditional', value: 'zh-TW' },\n\t{ key: 'english', value: 'en' }\n]\n\nexport function useI18nCookie() {\n\tconst cookies = useCookies(COOKIE_NAME)\n\n\tconst cleanLegacyCookies = () => {\n\t\tconst currentPath = window.location.pathname // 例如: \"/login/\"\n\n\t\t// 如果当前本身就是根路径，就没必要清理了，直接覆盖即可\n\t\tif (currentPath === '/') return\n\n\t\tconst pathsToClean = [\n\t\t\tcurrentPath,                      // 情况 A: 比如 \"/login/\"\n\t\t\tcurrentPath.replace(/\\/$/, ''),   // 情况 B: 去掉末尾斜杠，变成 \"/login\"\n\t\t\tcurrentPath + '/'                 // 情况 C: 加上末尾斜杠 (防止获取到的是无斜杠版本)\n\t\t]\n\n\t\t// 去重（防止 A 和 C 是一样的）\n\t\tconst uniquePaths = [...new Set(pathsToClean)]\n\n\t\tuniquePaths.forEach(p => {\n\t\t\t// 只有当路径不为空且不是根路径时才删，防止误删全局配置\n\t\t\tif (p && p !== '/') {\n\t\t\t\t// 这里的 remove 不会报错，即使 cookie 不存在也只是操作无效\n\t\t\t\tcookies.remove(COOKIE_NAME, { path: p })\n\t\t\t}\n\t\t})\n\t}\n\n\tconst locale = computed({\n\t\tget() {\n\t\t\tconst val = cookies.get(COOKIE_NAME)\n\t\t\treturn COOKIE_LANG_LIST.find(item => item.key === val)?.value || DEFAULT_LANG\n\t\t},\n\t\tset(val) {\n\t\t\tconst cookieVal = COOKIE_LANG_LIST.find(item => item.value === val)?.key\n\t\t\tcleanLegacyCookies()\n\n\t\t\t// --- 设置过期时间为 1 天 ---\n\t\t\tconst date = new Date()\n\t\t\tdate.setDate(date.getDate() + 7)\n\n\t\t\tcookies.set(COOKIE_NAME, cookieVal, { path: '/', expires: date })\n\t\t}\n\t})\n\n\treturn {\n\t\tlocale,\n\t\tsetLocale: (lang) => {\n\t\t\tif (supportedLocales.includes(lang)) {\n\t\t\t\tlocale.value = lang\n\t\t\t\twindow.location.reload()\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/locales/en.js",
    "content": "export default {\n\tdocument_title: \"Login {'|'} Digital Operations and Maintenance Platform\",\n\tdemo_tip:'[Demo User: demo, Password: 123456.coM] Due to permission restrictions, the demo user can only view some features. For full functionality, please deploy the community edition privately.',\n\theader_help: 'Help Center',\n\tlogin_welcome: 'Welcome to Digital Operations Platform',\n\tlogin_btn: 'Login',\n\tlogin_btn_sm: 'Login',\n\tlogin_username_pl: 'Please enter username',\n\tlogin_pwd_pl: 'Please enter password',\n\tlogin_domain_pl: 'Please select login domain',\n\twecom: 'WeCom',\n\twecom_err: 'Failed to get parameters, please try again or contact administrator',\n\tbindmfa_title: 'Bind MFA Device',\n\tbind_mfa_title_tip: 'MFA binding is enabled. Please complete the following steps to avoid affecting usage.',\n\tbind_mfa_step1_title: 'Step 1: Get Authenticator',\n\tbind_mfa_step1_action1_title: 'Method 1. Install Alibaba Cloud or Huawei Cloud APP',\n\tbind_mfa_step1_action1_content1: 'Steps',\n\tbind_mfa_step1_action1_content2: 'Alibaba Cloud: Open Alibaba Cloud APP > Tap the \"+\" in the top right > Select [Virtual MFA]',\n\tbind_mfa_step1_action1_content3: 'Huawei Cloud: Open Huawei Cloud APP > Tap \"My\" > Select [MFA]',\n\tbind_mfa_step1_action2_title: 'Method 2. Search WeChat Mini Program \"Tencent Authenticator\"',\n\tbind_mfa_step1_action2_content1: 'Steps',\n\tbind_mfa_step1_action2_content2: 'Authorize and open the \"Tencent Authenticator\" mini program > Tap [QR Code Activation] > Then scan the QR code displayed in \"Step 2\" below',\n\tbind_mfa_step2_title: 'Step 2: Use Alibaba Cloud APP, Huawei Cloud APP, or Tencent Authenticator Mini Program to scan the following QR code',\n\tbind_mfa_step2_qrcode: 'Authentication QR Code',\n\tbind_mfa_step2_content1: 'Can\\'t scan the code? Try account & secret key method',\n\tbind_mfa_step2_username: 'Account: ',\n\tbind_mfa_step2_secret: 'Secret: ',\n\tbind_mfa_copy: 'Copy',\n\tbind_mfa_copy_success: 'Copied successfully',\n\tbind_mfa_copy_fail: 'Copy failed, please copy manually',\n\tbind_mfa_step3_title: 'Step 3: Enter authorization code',\n\tbind_mfa_step3_verify_code_pl: 'Please enter 6-digit authorization code',\n\tbind_mfa_bottom_tip: 'Have questions? Please contact administrator',\n\tbind_mfa_bottom_bottom: 'Confirm Binding',\n\tvali_mfa_title: 'Account protection is enabled, please follow the prompts to complete the following operations',\n\tvali_mfa_step1_title: 'Step 1: ',\n\tvali_mfa_step1_content: 'Please use one of the three methods: Alibaba Cloud APP, Huawei Cloud APP, or WeChat search mini program Tencent Authenticator to get the dynamic verification code',\n\tvali_mfa_step2_title: 'Step 2: ',\n\tvali_mfa_step2_content: 'Please enter the 6-digit dynamic code',\n\tvali_mfa_verify_code_pl: 'Please enter 6-digit dynamic code',\n\tvali_mfa_seven_checked: 'No verification required for 7 days',\n\tsubmit: 'Confirm',\n\tvali_mfa_bottom_tip: 'Lost dynamic code? Please contact administrator to disable two-factor verification before continuing.',\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/locales/index.js",
    "content": "import en from './en.js'\nimport zhCN from './zh-CN.js'\nimport zhTW from './zh-TW.js'\n\nexport const messages = {\n\ten,\n\t'zh-CN': zhCN,\n\t'zh-TW': zhTW\n}\n\nexport const supportedLocales = Object.keys(messages)"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/locales/zh-CN.js",
    "content": "export default {\n\tdocument_title: \"登录 {'|'} 数字化运维平台\",\n\tdemo_tip:'【演示用户：demo，密码：123456.coM】演示用户由于权限限制，仅可查看部分功能，完整功能请私有化部署社区版使用。',\n\theader_help: '帮助中心',\n\tlogin_welcome: '欢迎登录数字化运维平台',\n\tlogin_btn: '立即登录',\n\tlogin_btn_sm: '登录',\n\tlogin_username_pl: '请输入用户名',\n\tlogin_pwd_pl: '请输入密码',\n\tlogin_domain_pl: '请选择登录域',\n\twecom: '企业微信',\n\twecom_err: '获取参数失败，请重试或联系管理员',\n\tbindmfa_title: '绑定MFA设备',\n\tbind_mfa_title_tip: '已开启绑定MFA功能，请完成以下操作以免影响使用。',\n\tbind_mfa_step1_title: '第一步: 获取身份验证器',\n\tbind_mfa_step1_action1_title: '方法1.安装阿里云、华为云APP',\n\tbind_mfa_step1_action1_content1: '使用步骤',\n\tbind_mfa_step1_action1_content2: '阿里云：打开阿里云APP > 点击“右上角+号”> 选择【虚拟MFA】',\n\tbind_mfa_step1_action1_content3: '华为云：打开华为云APP > 点击“我的”> 选择【MFA】',\n\tbind_mfa_step1_action2_title: \"方法2.微信搜索小程序“腾讯身份验证器”\",\n\tbind_mfa_step1_action2_content1: '使用步骤',\n\tbind_mfa_step1_action2_content2: '授权打开“腾讯身份验证器”小程序 > 点击【二维码激活】 > 然后扫描下 方“第二步”展示的二维码',\n\tbind_mfa_step2_title: \"第二步: 使用阿里云APP、华为云APP、腾讯身份验证器小程序扫描以下二维码\",\n\tbind_mfa_step2_qrcode: '身份验证二维码',\n\tbind_mfa_step2_content1: '扫不了码？试试账号&密钥方式获取',\n\tbind_mfa_step2_username: '账号: ',\n\tbind_mfa_step2_secret: '密钥: ',\n\tbind_mfa_copy: '复制',\n\tbind_mfa_copy_success: '复制成功',\n\tbind_mfa_copy_fail: '复制失败,请手动复制',\n\tbind_mfa_step3_title: \"第三步: 输入授权码\",\n\tbind_mfa_step3_verify_code_pl: \"请输入6位授权码\",\n\tbind_mfa_bottom_tip: '有疑问？请联系管理员',\n\tbind_mfa_bottom_bottom: '确认绑定',\n\n\tvali_mfa_title: '账号保护已开启,请根据提示完成以下操作',\n\tvali_mfa_step1_title: '第一步: ',\n\tvali_mfa_step1_content: '请使用阿里云APP、华为云APP、微信搜索小程序腾讯身份验证器三种方式获取动态验证码',\n\tvali_mfa_step2_title: '第二步: ',\n\tvali_mfa_step2_content: '请输入6位动态码',\n\tvali_mfa_verify_code_pl: '请输入6位动态码',\n\tvali_mfa_seven_checked: '7天内免验证',\n\tsubmit: '确定',\n\tvali_mfa_bottom_tip: '遗失动态码?请联系管理员解除双因素验证后继续操作。',\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/locales/zh-TW.js",
    "content": "export default {\n\tdocument_title: \"登入 {'|'} 數位化維運平台\",\n\tdemo_tip:'【示範使用者：demo，密碼：123456.coM】示範使用者由於權限限制，僅可查看部分功能，完整功能請私有化部署社群版使用。',\n\theader_help: '幫助中心',\n\tlogin_welcome: '歡迎登入數位化維運平台',\n\tlogin_btn: '立即登入',\n\tlogin_btn_sm: '登入',\n\tlogin_username_pl: '請輸入使用者名稱',\n\tlogin_pwd_pl: '請輸入密碼',\n\tlogin_domain_pl: '請選擇登入網域',\n\twecom: '企業微信',\n\twecom_err: '取得參數失敗，請重試或聯絡管理員',\n\tbindmfa_title: '綁定MFA設備',\n\tbind_mfa_title_tip: '已開啟綁定MFA功能，請完成以下操作以免影響使用。 ',\n\tbind_mfa_step1_title: '第一步: 取得驗證器',\n\tbind_mfa_step1_action1_title: '方法1.安裝阿里雲、華為雲APP',\n\tbind_mfa_step1_action1_content1: '使用步驟',\n\tbind_mfa_step1_action1_content2: '阿里雲：開啟阿里雲APP > 點選「右上角+號」> 選擇【虛擬MFA】',\n\tbind_mfa_step1_action1_content3: '華為雲：開啟華為雲APP > 點選「我的」> 選擇【MFA】',\n\tbind_mfa_step1_action2_title: \"方法2.微信搜尋小程式「騰訊身份驗證器」\",\n\tbind_mfa_step1_action2_content1: '使用步驟',\n\tbind_mfa_step1_action2_content2: '授權開啟「騰訊身分驗證器」小程式 > 點選【二維碼啟動】 > 然後掃描下 方「第二步驟」展示的二維碼',\n\tbind_mfa_step2_title: \"第二步: 使用阿里雲APP、華為雲APP、騰訊身份驗證器小程式掃描以下二維碼\",\n\tbind_mfa_step2_qrcode: '驗證二維碼',\n\tbind_mfa_step2_content1: '掃不了碼？試試帳號&密鑰方式取得',\n\tbind_mfa_step2_username: '帳號: ',\n\tbind_mfa_step2_secret: '金鑰: ',\n\tbind_mfa_copy: '複製',\n\tbind_mfa_copy_success: '複製成功',\n\tbind_mfa_copy_fail: '複製失敗,請手動複製',\n\tbind_mfa_step3_title: \"第三步: 輸入授權碼\",\n\tbind_mfa_step3_verify_code_pl: \"請輸入6位授權碼\",\n\tbind_mfa_bottom_tip: '有疑問？請聯絡管理員',\n\tbind_mfa_bottom_bottom: '確認綁定',\n\n\tvali_mfa_title: '帳號保護已開啟,請根據提示完成以下操作',\n\tvali_mfa_step1_title: '第一步: ',\n\tvali_mfa_step1_content: '請使用阿里雲APP、華為雲APP、微信搜尋小程式騰訊身份驗證器三種方式取得動態驗證碼',\n\tvali_mfa_step2_title: '第二步: ',\n\tvali_mfa_step2_content: '請輸入6位元動態碼',\n\tvali_mfa_verify_code_pl: '請輸入6位元動態碼',\n\tvali_mfa_seven_checked: '7天內免驗證',\n\tsubmit: '確定',\n\tvali_mfa_bottom_tip: '遺失動態碼?請聯絡管理員解除雙重驗證後繼續操作。 ',\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/main.js",
    "content": "import { createApp } from 'vue'\nimport { createI18n } from 'vue-i18n'\nimport Antd from 'ant-design-vue';\nimport App from './App.vue'\nimport './style.css'\nimport 'ant-design-vue/dist/reset.css';\nimport { setupI18n } from './plugins/i18n'\n\nconst app = createApp(App)\nconst i18n = setupI18n()\n\napp.use(Antd)\napp.use(i18n)\napp.mount('#app')\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/plugins/i18n.js",
    "content": "import { createI18n } from 'vue-i18n'\nimport { messages } from '@/locales'\nimport { useI18nCookie } from '@/hooks/useI18nCookie'\n\nexport function setupI18n() {\n\tconst { locale } = useI18nCookie()\n\n\tconst i18n = createI18n({\n\t\tlegacy: false,           // Composition API 模式\n\t\tlocale: locale.value,\n\t\tfallbackLocale: 'zh-CN',\n\t\tmessages\n\t})\n\n\t//初始同步\n\ti18n.global.locale.value = locale.value\n\n\treturn i18n\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/style.css",
    "content": "@import \"tailwindcss\";"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/utils/request.js",
    "content": "import axios from 'axios';\nimport config from '@/config/defaultSetting';\nimport { message, notification } from \"ant-design-vue\";\nimport { useStorage, } from \"@vueuse/core\";\n\naxios.defaults.withCredentials = true; //让ajax携带cookie\n\nconst createAxiosInstance = () => {\n\tconst cancelSource = axios.CancelToken.source();\n\n\tconst request = axios.create({\n\t\tbaseURL: config.baseUrl,\n\t\t// timeout: 5000, // Set a timeout value if needed\n\t\tcancelToken: cancelSource.token,\n\t});\n\n\t// 异常拦截处理器\n\tconst errorHandler = (error) => {\n\t\tif (error.response) {\n\t\t\tnotification.error({\n\t\t\t\tmessage: '错误',\n\t\t\t\tdescription: error.response.statusText\n\t\t\t})\n\t\t}\n\t\treturn Promise.reject(error)\n\t}\n\n\t// request interceptor\n\trequest.interceptors.request.use(config => {\n\t\t// const storageAccessToken = useStorage(\"OPS_accessToken\", \"\");\n\t\t// const token = storageAccessToken.value\n\t\t// if (token) {\n\t\t// \tconfig.headers['Authorization'] = 'Bearer ' + token\n\t\t// }\n\t\treturn config\n\t}, errorHandler)\n\n\t// response interceptor\n\trequest.interceptors.response.use((response) => {\n\t\tconst showMessage = response.config.showMessage == undefined ? true : response.config.showMessage\n\t\tconst { code } = response.data;\n\t\tif (code == 200) {\n\t\t\treturn response.data\n\t\t} else {\n\t\t\tshowMessage && message.warning({\n\t\t\t\tcontent: response.data.message\n\t\t\t})\n\t\t\treturn Promise.reject(response.data)\n\t\t}\n\t}, errorHandler)\n\n\treturn {\n\t\trequest,\n\t\tcancelSource\n\t}\n}\n\n\n\nwindow.addEventListener('unhandledrejection', function (event) {\n\t// 获取事件类型\n\tconst eventType = event.constructor;\n\t// 检查是否为 PromiseRejectionEvent\n\tif (eventType === PromiseRejectionEvent) {\n\t\t// 阻止默认的Promise错误处理行为\n\t\tevent.preventDefault();\n\t\t// 阻止错误继续传播到全局错误处理机制\n\t\tevent.stopPropagation();\n\t}\n});\nconst request = createAxiosInstance().request\nexport default request;\n\nexport {\n\trequest as axios,\n\tcreateAxiosInstance\n}\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/utils/util.js",
    "content": "\n/**\n * 判断字符串是否为合法的 URL\n * @param {string} string - 需要检测的字符串\n * @returns {boolean} - 如果是合法 URL 返回 true，否则返回 false\n */\nexport const isValidUrl = (string) => {\n\ttry {\n\t\t// new URL() 会尝试解析字符串，如果格式不正确会抛出 TypeError 错误\n\t\tnew URL(string);\n\t\treturn true;\n\t} catch (err) {\n\t\treturn false;\n\t}\n}"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/AD.vue",
    "content": "<template>\n\t<div class=\"mt-4\">\n\t\t<a-alert v-if=\"loginErrorMsg\" class=\"mt-1! mb-4!\" type=\"warning\" show-icon :message=\"loginErrorMsg\" />\n\t\t<a-form name=\"loginForm\" :model=\"formData\" :rules=\"formDataRules\" @finish=\"onFinish\">\n\t\t\t<a-form-item name=\"domain\">\n\t\t\t\t<a-select name=\"organization\" autocomplete=\"organization\" v-model:value=\"formData.domain\" :placeholder=\"$t('login_domain_pl')\">\n\t\t\t\t\t<a-select-option v-for=\"item in authData.account || []\" :key=\"item.domain\" :value=\"item.domain\">\n\t\t\t\t\t\t{{ item.domain }}\n\t\t\t\t\t</a-select-option>\n\t\t\t\t</a-select>\n\t\t\t\t<GlobalOutlined class=\"text-[#8b8b8b]! select_icon\" />\n\t\t\t</a-form-item>\n\t\t\t<a-form-item name=\"username\">\n\t\t\t\t<a-input\n\t\t\t\t\tclass=\"py-1.5!\"\n\t\t\t\t\tname=\"username\"\n\t\t\t\t\tautocomplete=\"username\"\n\t\t\t\t\tv-model:value.trim=\"formData.username\"\n\t\t\t\t\t:placeholder=\"$t('login_username_pl')\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<user-outlined class=\"text-[#8b8b8b]!\" />\n\t\t\t\t\t</template>\n\t\t\t\t</a-input>\n\t\t\t</a-form-item>\n\t\t\t<a-form-item name=\"password\">\n\t\t\t\t<a-input-password\n\t\t\t\t\tclass=\"py-1.5!\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"current-password\"\n\t\t\t\t\tv-model:value.trim=\"formData.password\"\n\t\t\t\t\t:placeholder=\"$t('login_pwd_pl')\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<lock-outlined class=\"text-[#8b8b8b]!\" />\n\t\t\t\t\t</template>\n\t\t\t\t</a-input-password>\n\t\t\t</a-form-item>\n\t\t\t<a-form-item>\n\t\t\t\t<a-button class=\"w-full mt-6!\" html-type=\"submit\" size=\"large\" type=\"primary\" shape=\"round\" :loading=\"loading\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</a-form-item>\n\t\t</a-form>\n\t\t<SlideVerifyModal ref=\"SlideVerifyModalRef\" @success=\"onSuccess\"></SlideVerifyModal>\n\t</div>\n</template>\n\n<script setup>\nimport SlideVerifyModal from \"@/components/SlideVerifyModal/index.vue\";\nimport { getAuthConfig, doLogin } from \"@/api/login.js\";\nimport config from \"@/config/defaultSetting\";\nimport { useStorage, useUrlSearchParams } from \"@vueuse/core\";\nimport { useI18n } from \"vue-i18n\";\nimport { isValidUrl } from \"@/utils/util.js\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({}),\n\t},\n});\nconst emit = defineEmits([\"switchLoginMode\"]);\nconst { t } = useI18n();\nconst loading = ref(false);\nconst loginErrorMsg = ref(\"\");\nconst SlideVerifyModalRef = useTemplateRef(\"SlideVerifyModalRef\");\nconst storageUserLoginSetting = useStorage(\"OPS_userLoginSetting\", []);\n// const storageAccessToken = useStorage(\"OPS_accessToken\", \"\");\nconst formData = ref({\n\tdomain: undefined,\n\tusername: \"\",\n\tpassword: \"\",\n});\nconst formDataRules = ref({\n\tdomain: [{ required: true, message: t(\"login_domain_pl\"), trigger: \"change\" }],\n\tusername: [{ required: true, message: t(\"login_username_pl\"), trigger: \"change\" }],\n\tpassword: [{ required: true, message: t(\"login_pwd_pl\"), trigger: \"change\" }],\n});\nwatchEffect(() => {\n\tif (authData.account && authData.account.length == 1) {\n\t\tformData.value.domain = authData.account[0]?.domain;\n\t}\n});\n\nconst onFinish = values => {\n\ttry {\n\t\tconst activeUserLoginSetting = storageUserLoginSetting.value.find(\n\t\t\titem => item.auth_type == authData.auth_type && item.username == formData.value.username && item.domain == formData.value.domain\n\t\t);\n\t\tconst showVerifyCode = activeUserLoginSetting ? activeUserLoginSetting.show_verify_code : false;\n\t\tshowVerifyCode ? SlideVerifyModalRef.value.showModal() : onSuccess();\n\t} catch (error) {\n\t\tconsole.log(error);\n\t}\n};\nconst onSuccess = async () => {\n\ttry {\n\t\tloading.value = true;\n\t\tconst { c_url } = useUrlSearchParams(\"history\");\n\t\tconst params = {\n\t\t\t...formData.value,\n\t\t\tauth_type: authData.auth_type,\n\t\t\tc_url: c_url,\n\t\t};\n\t\tconst { data = {} } = await doLogin(params, { showMessage: false });\n\t\thandleUserLoginSetting(false); //成功登录后,关闭验证\n\t\tif ([\"start_bind_google_auth\", \"bind_google_auth\", \"verify_google_auth\"].includes(data.google_auth_type)) {\n\t\t\temit(\"switchLoginMode\", {\n\t\t\t\tgoogle_auth_type: data.google_auth_type,\n\t\t\t\tcache_token: data.cache_token,\n\t\t\t\tgoogle_auth_url: config.baseUrlOfImg + data.google_auth_url,\n\t\t\t\tgoogle_auth_username: data.google_auth_username,\n\t\t\t\tsecret: data.secret,\n\t\t\t\tshow_mfa_days: data.show_mfa_days,\n\t\t\t\t...params,\n\t\t\t});\n\t\t} else {\n\t\t\t// storageAccessToken.value = data.access_token;\n\t\t\t// getAuthConfig({ auth_type: \"all\" });\n\t\t\tconst data_curl = data.c_url?.replace(/^\\/+/, \"\") || \"\";\n\t\t\tconst url = isValidUrl(data.c_url) ? data.c_url : config.baseUrl + data_curl;\n\t\t\twindow.location.href = url;\n\t\t}\n\t} catch (error) {\n\t\tloginErrorMsg.value = error.message;\n\t\thandleUserLoginSetting(error.show_verify_code);\n\t} finally {\n\t\tloading.value = false;\n\t}\n};\nconst handleUserLoginSetting = show_verify_code => {\n\tconst activeUserLoginSetting = storageUserLoginSetting.value.find(\n\t\titem => item.auth_type == authData.auth_type && item.username == formData.value.username && item.domain == formData.value.domain\n\t);\n\tif (activeUserLoginSetting) {\n\t\tactiveUserLoginSetting.show_verify_code = show_verify_code;\n\t} else {\n\t\tstorageUserLoginSetting.value.push({\n\t\t\tauth_type: authData.auth_type,\n\t\t\tusername: formData.value.username,\n\t\t\tshow_verify_code: show_verify_code,\n\t\t\tdomain: formData.value.domain,\n\t\t});\n\t}\n};\n\nonMounted(() => {\n\tloginErrorMsg.value = \"\";\n});\n</script>\n<style scoped lang=\"less\">\n.select_icon {\n\tposition: absolute;\n\ttop: 12px;\n\tleft: 12px;\n}\n:deep(.ant-select-single.ant-select-show-arrow .ant-select-selection-item) {\n\tpadding-left: 20px;\n\tline-height: 34px;\n}\n:deep(.ant-select-single:not(.ant-select-customize-input) .ant-select-selector) {\n\theight: 36px !important;\n}\n:deep(.ant-select-single .ant-select-selector .ant-select-selection-placeholder) {\n\tline-height: 36px !important;\n\tpadding-left: 18px;\n}\n</style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/BindMfa.vue",
    "content": "<template>\n\t<div class=\"w-[580px] min-h-[390px]\">\n\t\t<header class=\"px-5 py-3 border-b border-gray-200 flex items-center\">\n\t\t\t<span class=\"font-bold mr-2 text-[15px]\">{{ $t(\"bindmfa_title\") }} </span>\n\t\t\t<a-alert class=\"py-1! text-[12px]! flex-1!\" :message=\"$t('bind_mfa_title_tip')\" type=\"info\" show-icon banner />\n\t\t</header>\n\t\t<div class=\"px-5 pt-6\">\n\t\t\t<a-timeline>\n\t\t\t\t<a-timeline-item color=\"green\">\n\t\t\t\t\t<div class=\"font-bold\">{{ $t(\"bind_mfa_step1_title\") }}</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"mt-3 mb-1 text-[#333333]\">{{ $t(\"bind_mfa_step1_action1_title\") }}</div>\n\t\t\t\t\t\t<div class=\"bg-[#f4f7f9] p-3 rounded-sm leading-6\">\n\t\t\t\t\t\t\t<div>{{ $t(\"bind_mfa_step1_action1_content1\") }}</div>\n\t\t\t\t\t\t\t<div>{{ $t(\"bind_mfa_step1_action1_content2\") }}</div>\n\t\t\t\t\t\t\t<div>{{ $t(\"bind_mfa_step1_action1_content3\") }}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"mt-3 mb-1 text-[#333333] flex items-center\">\n\t\t\t\t\t\t\t<div class=\"mr-1\">{{ $t(\"bind_mfa_step1_action2_title\") }}</div>\n\t\t\t\t\t\t\t<img src=\"~@/assets/tuijian.png\" alt=\"\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bg-[#f4f7f9] p-3 rounded-sm leading-6\">\n\t\t\t\t\t\t\t<div>{{ $t(\"bind_mfa_step1_action2_content1\") }}</div>\n\t\t\t\t\t\t\t<div>{{ $t(\"bind_mfa_step1_action2_content2\") }}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</a-timeline-item>\n\t\t\t\t<a-timeline-item color=\"green\">\n\t\t\t\t\t<div class=\"font-bold\">{{ $t(\"bind_mfa_step2_title\") }}</div>\n\t\t\t\t\t<div class=\"flex items-center py-3\">\n\t\t\t\t\t\t<div class=\"w-[120px]! h-[120px] p-2 mr-4\">\n\t\t\t\t\t\t\t<img class=\"w-full h-full\" :src=\"loginFormData.google_auth_url\" :alt=\"$t('bind_mfa_step2_qrcode')\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"flex-1\">\n\t\t\t\t\t\t\t<div class=\"text-[#666666] mb-1\">{{ $t(\"bind_mfa_step2_content1\") }}</div>\n\t\t\t\t\t\t\t<div class=\"text-[#666666] mb-1\">\n\t\t\t\t\t\t\t\t<span class=\"mr-1\">{{ $t(\"bind_mfa_step2_username\") }}</span>\n\t\t\t\t\t\t\t\t<span class=\"text-[#333333]\">{{ loginFormData.google_auth_username }}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"text-[#666666] flex\">\n\t\t\t\t\t\t\t\t<span class=\"mr-1\">{{ $t(\"bind_mfa_step2_secret\") }}</span>\n\t\t\t\t\t\t\t\t<div class=\"flex-1 text-[#333333]\">\n\t\t\t\t\t\t\t\t\t<span>{{ loginFormData.secret }}</span>\n\t\t\t\t\t\t\t\t\t<a type=\"link\" size=\"small\" class=\"font-[12px] ml-2\" @click=\"handleCopy\"> {{ $t(\"bind_mfa_copy\") }} </a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</a-timeline-item>\n\t\t\t\t<a-timeline-item color=\"green\">\n\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t<div class=\"font-bold mr-2\">{{ $t(\"bind_mfa_step3_title\") }}</div>\n\t\t\t\t\t\t<a-input class=\"flex-1\" :placeholder=\"$t('bind_mfa_step3_verify_code_pl')\" v-model:value=\"verify_code\"></a-input>\n\t\t\t\t\t</div>\n\t\t\t\t</a-timeline-item>\n\t\t\t</a-timeline>\n\t\t</div>\n\t\t<footer class=\"px-5 py-3 border-t border-gray-200 text-right\">\n\t\t\t<span class=\"text-[12px] text-gray-600 mr-2\">{{ $t(\"bind_mfa_bottom_tip\") }}</span>\n\t\t\t<a-button type=\"primary\" @click=\"handleClick\" :loading=\"loading\">{{ $t(\"bind_mfa_bottom_bottom\") }}</a-button>\n\t\t</footer>\n\t</div>\n</template>\n\n<script setup>\nimport useClipboard from \"vue-clipboard3\";\nimport { message } from \"ant-design-vue\";\nimport { doLogin } from \"@/api/login.js\";\nimport config from \"@/config/defaultSetting\";\nimport { useI18n } from \"vue-i18n\";\nimport { isValidUrl } from \"@/utils/util.js\";\n\nconst { loginFormData } = defineProps({\n\tloginFormData: {\n\t\ttype: Object,\n\t\tdefault: () => ({}),\n\t},\n});\nconst verify_code = ref(undefined);\nconst loading = ref(false);\nconst { t } = useI18n();\nconst handleCopy = async () => {\n\tconst { toClipboard } = useClipboard();\n\ttry {\n\t\tawait toClipboard(loginFormData.secret);\n\t\tmessage.success(t(\"bind_mfa_copy_success\"));\n\t} catch (error) {\n\t\tmessage.error(t(\"bind_mfa_copy_fail\"));\n\t}\n};\nconst handleClick = async () => {\n\tif (!verify_code.value) {\n\t\treturn message.error(t(\"bind_mfa_step3_verify_code_pl\"));\n\t}\n\tconst params = {\n\t\t...loginFormData,\n\t\tverify_code: verify_code.value,\n\t};\n\tparams.google_auth_url = undefined;\n\ttry {\n\t\tloading.value = true;\n\t\tconst { data = {} } = await doLogin(params);\n\t\tconst data_curl = data.c_url?.replace(/^\\/+/, \"\") || '';\n\t\tconst url = isValidUrl(data.c_url) ? data.c_url : config.baseUrl + data_curl;\n\t\twindow.location.href = url;\n\t} catch (error) {\n\t\tconsole.log(error);\n\t} finally {\n\t\tloading.value = false;\n\t}\n};\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/DingTalk.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col max-h-[400px] overflow-auto\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<template v-if=\"authData.account.length == 1\">\n\t\t\t<div class=\"w-full overflow-hidden\">\n\t\t\t\t<img class=\"mt-6 mx-auto w-[50px]!\" :src=\"config.baseUrlOfImg + authData.account[0].auth_icon?.url\" alt=\"\" />\n\t\t\t\t<div class=\"text-lg font-bold mt-3 truncate text-center\" :title=\"authData.account[0].domain\">\n\t\t\t\t\t{{ authData.account[0].domain || \"--\" }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"handleLogin(authData.account[0])\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"authData.account.length > 1\">\n\t\t\t<div\n\t\t\t\tv-for=\"item in authData.account\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\tclass=\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\">\n\t\t\t\t<div class=\"flex items-center flex-1 overflow-hidden\">\n\t\t\t\t\t<img class=\"w-6\" :src=\"config.baseUrlOfImg + item.auth_icon?.url\" alt=\"\" />\n\t\t\t\t\t<span class=\"flex-1 truncate ml-1.5 mr-2\">{{ item.domain || \"--\" }}</span>\n\t\t\t\t</div>\n\t\t\t\t<a-button class=\"flex! items-center\" size=\"small\" type=\"link\" @click=\"handleLogin(item)\"\n\t\t\t\t\t>{{ $t(\"login_btn_sm\") }}<ArrowRightOutlined class=\"text-xs\" />\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<a-empty v-else class=\"mt-4\"></a-empty>\n\t</div>\n</template>\n\n<script setup>\nimport { nextTick, onMounted, ref, watchEffect } from \"vue\";\nimport config from \"@/config/defaultSetting\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\n\nconst handleLogin = item => {\n\tconst url = item.auth_login_url;\n\twindow.location.href = url;\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/Feishu.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col max-h-[400px] overflow-auto\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<template v-if=\"authData.account.length == 1\">\n\t\t\t<div class=\"w-full overflow-hidden\">\n\t\t\t\t<img class=\"mt-6 mx-auto w-[50px]!\" :src=\"config.baseUrlOfImg + authData.account[0].auth_icon?.url\" alt=\"\" />\n\t\t\t\t<div class=\"text-lg font-bold mt-3 truncate text-center\" :title=\"authData.account[0].domain\">\n\t\t\t\t\t{{ authData.account[0].domain || \"--\" }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"handleLogin(authData.account[0])\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"authData.account.length > 1\">\n\t\t\t<div\n\t\t\t\tv-for=\"item in authData.account\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\tclass=\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\">\n\t\t\t\t<div class=\"flex items-center flex-1 overflow-hidden\">\n\t\t\t\t\t<img class=\"w-6\" :src=\"config.baseUrlOfImg + item.auth_icon?.url\" alt=\"\" />\n\t\t\t\t\t<span class=\"flex-1 truncate ml-1.5 mr-2\">{{ item.domain || \"--\" }}</span>\n\t\t\t\t</div>\n\t\t\t\t<a-button class=\"flex! items-center\" size=\"small\" type=\"link\" @click=\"handleLogin(item)\"\n\t\t\t\t\t>{{ $t(\"login_btn_sm\") }}<ArrowRightOutlined class=\"text-xs\" />\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<a-empty v-else class=\"mt-4\"></a-empty>\n\t</div>\n</template>\n\n<script setup>\nimport { nextTick, onMounted, ref, watchEffect } from \"vue\";\nimport config from \"@/config/defaultSetting\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\n\nconst handleLogin = item => {\n\tconst url = item.auth_login_url;\n\twindow.location.href = url;\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/IAM.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col max-h-[400px] overflow-auto\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<template v-if=\"authData.account.length == 1\">\n\t\t\t<div class=\"w-full overflow-hidden\">\n\t\t\t\t<img class=\"mt-6 mx-auto w-[50px]!\" :src=\"config.baseUrlOfImg + authData.account[0].auth_icon?.url\" alt=\"\" />\n\t\t\t\t<div class=\"text-lg font-bold mt-3 truncate text-center\" :title=\"authData.account[0].domain\">\n\t\t\t\t\t{{ authData.account[0].domain || \"--\" }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"handleLogin(authData.account[0])\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"authData.account.length > 1\">\n\t\t\t<div\n\t\t\t\tv-for=\"item in authData.account\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\tclass=\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\">\n\t\t\t\t<div class=\"flex items-center flex-1 overflow-hidden\">\n\t\t\t\t\t<img class=\"w-6\" :src=\"config.baseUrlOfImg + item.auth_icon?.url\" alt=\"\" />\n\t\t\t\t\t<span class=\"flex-1 truncate ml-1.5 mr-2\">{{ item.domain || \"--\" }}</span>\n\t\t\t\t</div>\n\t\t\t\t<a-button class=\"flex! items-center\" size=\"small\" type=\"link\" @click=\"handleLogin(item)\"\n\t\t\t\t\t>{{ $t(\"login_btn_sm\") }}<ArrowRightOutlined class=\"text-xs\" />\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<a-empty v-else class=\"mt-4\"></a-empty>\n\t</div>\n</template>\n\n<script setup>\nimport { nextTick, onMounted, ref, watchEffect } from \"vue\";\nimport config from \"@/config/defaultSetting\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\n\nconst handleLogin = item => {\n\tconst url = item.auth_login_url;\n\twindow.location.href = url;\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/IDaaS.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col max-h-[400px] overflow-auto\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<template v-if=\"authData.account.length == 1\">\n\t\t\t<div class=\"w-full overflow-hidden\">\n\t\t\t\t<img class=\"mt-6 mx-auto w-[50px]!\" :src=\"config.baseUrlOfImg + authData.account[0].auth_icon?.url\" alt=\"\" />\n\t\t\t\t<div class=\"text-lg font-bold mt-3 truncate text-center\" :title=\"authData.account[0].domain\">\n\t\t\t\t\t{{ authData.account[0].domain || \"--\" }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"handleLogin(authData.account[0])\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"authData.account.length > 1\">\n\t\t\t<div\n\t\t\t\tv-for=\"item in authData.account\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\tclass=\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\">\n\t\t\t\t<div class=\"flex items-center flex-1 overflow-hidden\">\n\t\t\t\t\t<img class=\"w-6\" :src=\"config.baseUrlOfImg + item.auth_icon?.url\" alt=\"\" />\n\t\t\t\t\t<span class=\"flex-1 truncate ml-1.5 mr-2\">{{ item.domain || \"--\" }}</span>\n\t\t\t\t</div>\n\t\t\t\t<a-button class=\"flex! items-center\" size=\"small\" type=\"link\" @click=\"handleLogin(item)\"\n\t\t\t\t\t>{{ $t(\"login_btn_sm\") }}<ArrowRightOutlined class=\"text-xs\" />\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<a-empty v-else class=\"mt-4\"></a-empty>\n\t</div>\n</template>\n\n<script setup>\nimport { nextTick, onMounted, ref, watchEffect } from \"vue\";\nimport config from \"@/config/defaultSetting\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\n\nconst handleLogin = item => {\n\tconst url = item.auth_login_url;\n\twindow.location.href = url;\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/LDAP.vue",
    "content": "<template>\n\t<div class=\"mt-4\">\n\t\t<a-alert v-if=\"loginErrorMsg\" class=\"mt-1! mb-4!\" type=\"warning\" show-icon :message=\"loginErrorMsg\" />\n\t\t<a-form name=\"loginForm\" :model=\"formData\" :rules=\"formDataRules\" @finish=\"onFinish\">\n\t\t\t<a-form-item name=\"domain\">\n\t\t\t\t<a-select name=\"organization\" autocomplete=\"organization\" v-model:value=\"formData.domain\" :placeholder=\"$t('login_domain_pl')\">\n\t\t\t\t\t<a-select-option v-for=\"item in authData.account || []\" :key=\"item.domain\" :value=\"item.domain\">\n\t\t\t\t\t\t{{ item.domain }}\n\t\t\t\t\t</a-select-option>\n\t\t\t\t</a-select>\n\t\t\t\t<GlobalOutlined class=\"text-[#8b8b8b]! select_icon\" />\n\t\t\t</a-form-item>\n\t\t\t<a-form-item name=\"username\">\n\t\t\t\t<a-input\n\t\t\t\t\tclass=\"py-1.5!\"\n\t\t\t\t\tname=\"username\"\n\t\t\t\t\tautocomplete=\"username\"\n\t\t\t\t\tv-model:value.trim=\"formData.username\"\n\t\t\t\t\t:placeholder=\"$t('login_username_pl')\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<user-outlined class=\"text-[#8b8b8b]!\" />\n\t\t\t\t\t</template>\n\t\t\t\t</a-input>\n\t\t\t</a-form-item>\n\t\t\t<a-form-item name=\"password\">\n\t\t\t\t<a-input-password\n\t\t\t\t\tclass=\"py-1.5!\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"current-password\"\n\t\t\t\t\tv-model:value.trim=\"formData.password\"\n\t\t\t\t\t:placeholder=\"$t('login_pwd_pl')\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<lock-outlined class=\"text-[#8b8b8b]!\" />\n\t\t\t\t\t</template>\n\t\t\t\t</a-input-password>\n\t\t\t</a-form-item>\n\t\t\t<a-form-item>\n\t\t\t\t<a-button class=\"w-full mt-6!\" html-type=\"submit\" size=\"large\" type=\"primary\" shape=\"round\" :loading=\"loading\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</a-form-item>\n\t\t</a-form>\n\t\t<SlideVerifyModal ref=\"SlideVerifyModalRef\" @success=\"onSuccess\"></SlideVerifyModal>\n\t</div>\n</template>\n\n<script setup>\nimport SlideVerifyModal from \"@/components/SlideVerifyModal/index.vue\";\nimport { getAuthConfig, doLogin } from \"@/api/login.js\";\nimport config from \"@/config/defaultSetting\";\nimport { useStorage, useUrlSearchParams } from \"@vueuse/core\";\nimport { useI18n } from \"vue-i18n\";\nimport { isValidUrl } from \"@/utils/util.js\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({}),\n\t},\n});\nconst emit = defineEmits([\"switchLoginMode\"]);\nconst { t } = useI18n();\nconst loading = ref(false);\nconst loginErrorMsg = ref(\"\");\nconst SlideVerifyModalRef = useTemplateRef(\"SlideVerifyModalRef\");\nconst storageUserLoginSetting = useStorage(\"OPS_userLoginSetting\", []);\n// const storageAccessToken = useStorage(\"OPS_accessToken\", \"\");\nconst formData = ref({\n\tdomain: undefined,\n\tusername: \"\",\n\tpassword: \"\",\n});\nconst formDataRules = ref({\n\tdomain: [{ required: true, message: t(\"login_domain_pl\"), trigger: \"change\" }],\n\tusername: [{ required: true, message: t(\"login_username_pl\"), trigger: \"change\" }],\n\tpassword: [{ required: true, message: t(\"login_pwd_pl\"), trigger: \"change\" }],\n});\nwatchEffect(() => {\n\tif (authData.account && authData.account.length == 1) {\n\t\tformData.value.domain = authData.account[0]?.domain;\n\t}\n});\n\nconst onFinish = values => {\n\ttry {\n\t\tconst activeUserLoginSetting = storageUserLoginSetting.value.find(\n\t\t\titem => item.auth_type == authData.auth_type && item.username == formData.value.username && item.domain == formData.value.domain\n\t\t);\n\t\tconst showVerifyCode = activeUserLoginSetting ? activeUserLoginSetting.show_verify_code : false;\n\t\tshowVerifyCode ? SlideVerifyModalRef.value.showModal() : onSuccess();\n\t} catch (error) {\n\t\tconsole.log(error);\n\t}\n};\nconst onSuccess = async () => {\n\ttry {\n\t\tloading.value = true;\n\t\tconst { c_url } = useUrlSearchParams(\"history\");\n\t\tconst params = {\n\t\t\t...formData.value,\n\t\t\tauth_type: authData.auth_type,\n\t\t\tc_url: c_url,\n\t\t};\n\t\tconst { data = {} } = await doLogin(params, { showMessage: false });\n\t\thandleUserLoginSetting(false); //成功登录后,关闭验证\n\t\tif ([\"start_bind_google_auth\", \"bind_google_auth\", \"verify_google_auth\"].includes(data.google_auth_type)) {\n\t\t\temit(\"switchLoginMode\", {\n\t\t\t\tgoogle_auth_type: data.google_auth_type,\n\t\t\t\tcache_token: data.cache_token,\n\t\t\t\tgoogle_auth_url: config.baseUrlOfImg + data.google_auth_url,\n\t\t\t\tgoogle_auth_username: data.google_auth_username,\n\t\t\t\tsecret: data.secret,\n\t\t\t\tshow_mfa_days: data.show_mfa_days,\n\t\t\t\t...params,\n\t\t\t});\n\t\t} else {\n\t\t\t// storageAccessToken.value = data.access_token;\n\t\t\t// getAuthConfig({ auth_type: \"all\" });\n\t\t\tconst data_curl = data.c_url?.replace(/^\\/+/, \"\") || '';\n\t\t\tconst url = isValidUrl(data.c_url) ? data.c_url : config.baseUrl + data_curl;\n\t\t\twindow.location.href = url;\n\t\t}\n\t} catch (error) {\n\t\tloginErrorMsg.value = error.message;\n\t\thandleUserLoginSetting(error.show_verify_code);\n\t} finally {\n\t\tloading.value = false;\n\t}\n};\nconst handleUserLoginSetting = show_verify_code => {\n\tconst activeUserLoginSetting = storageUserLoginSetting.value.find(\n\t\titem => item.auth_type == authData.auth_type && item.username == formData.value.username && item.domain == formData.value.domain\n\t);\n\tif (activeUserLoginSetting) {\n\t\tactiveUserLoginSetting.show_verify_code = show_verify_code;\n\t} else {\n\t\tstorageUserLoginSetting.value.push({\n\t\t\tauth_type: authData.auth_type,\n\t\t\tusername: formData.value.username,\n\t\t\tshow_verify_code: show_verify_code,\n\t\t\tdomain: formData.value.domain,\n\t\t});\n\t}\n};\n\nonMounted(() => {\n\tloginErrorMsg.value = \"\";\n});\n</script>\n<style scoped lang=\"less\">\n.select_icon {\n\tposition: absolute;\n\ttop: 12px;\n\tleft: 12px;\n}\n:deep(.ant-select-single.ant-select-show-arrow .ant-select-selection-item) {\n\tpadding-left: 20px;\n\tline-height: 34px;\n}\n:deep(.ant-select-single:not(.ant-select-customize-input) .ant-select-selector) {\n\theight: 36px !important;\n}\n:deep(.ant-select-single .ant-select-selector .ant-select-selection-placeholder) {\n\tline-height: 36px !important;\n\tpadding-left: 18px;\n}\n</style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/OAuth.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col max-h-[400px] overflow-auto\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<template v-if=\"authData.account.length == 1\">\n\t\t\t<div class=\"w-full overflow-hidden\">\n\t\t\t\t<img class=\"mt-6 mx-auto w-[50px]!\" :src=\"config.baseUrlOfImg + authData.account[0].auth_icon?.url\" alt=\"\" />\n\t\t\t\t<div class=\"text-lg font-bold mt-3 truncate text-center\" :title=\"authData.account[0].domain\">\n\t\t\t\t\t{{ authData.account[0].domain || \"--\" }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"handleLogin(authData.account[0])\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"authData.account.length > 1\">\n\t\t\t<div\n\t\t\t\tv-for=\"item in authData.account\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\tclass=\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\">\n\t\t\t\t<div class=\"flex items-center flex-1 overflow-hidden\">\n\t\t\t\t\t<img class=\"w-6\" :src=\"config.baseUrlOfImg + item.auth_icon?.url\" alt=\"\" />\n\t\t\t\t\t<span class=\"flex-1 truncate ml-1.5 mr-2\">{{ item.domain || \"--\" }}</span>\n\t\t\t\t</div>\n\t\t\t\t<a-button class=\"flex! items-center\" size=\"small\" type=\"link\" @click=\"handleLogin(item)\"\n\t\t\t\t\t>{{ $t(\"login_btn_sm\") }}<ArrowRightOutlined class=\"text-xs\" />\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<a-empty v-else class=\"mt-4\"></a-empty>\n\t</div>\n</template>\n\n<script setup>\nimport { nextTick, onMounted, ref, watchEffect } from \"vue\";\nimport config from \"@/config/defaultSetting\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\n\nconst handleLogin = item => {\n\tconst url = item.auth_login_url;\n\twindow.location.href = url;\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/Password.vue",
    "content": "<template>\n\t<div class=\"mt-4\">\n\t\t<a-alert v-if=\"loginErrorMsg\" class=\"mt-1! mb-4!\" type=\"warning\" show-icon :message=\"loginErrorMsg\" />\n\t\t<a-form name=\"loginForm\" :model=\"formData\" :rules=\"formDataRules\" @finish=\"onFinish\">\n\t\t\t<a-form-item name=\"username\">\n\t\t\t\t<a-input\n\t\t\t\t\tclass=\"py-1.5!\"\n\t\t\t\t\tname=\"username\"\n\t\t\t\t\tautocomplete=\"username\"\n\t\t\t\t\tv-model:value.trim=\"formData.username\"\n\t\t\t\t\t:placeholder=\"$t('login_username_pl')\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<user-outlined class=\"text-[#8b8b8b]!\" />\n\t\t\t\t\t</template>\n\t\t\t\t</a-input>\n\t\t\t</a-form-item>\n\t\t\t<a-form-item name=\"password\">\n\t\t\t\t<a-input-password\n\t\t\t\t\tclass=\"py-1.5!\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"current-password\"\n\t\t\t\t\tv-model:value.trim=\"formData.password\"\n\t\t\t\t\t:placeholder=\"$t('login_pwd_pl')\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<lock-outlined class=\"text-[#8b8b8b]!\" />\n\t\t\t\t\t</template>\n\t\t\t\t</a-input-password>\n\t\t\t</a-form-item>\n\t\t\t<a-form-item>\n\t\t\t\t<a-button class=\"w-full mt-6!\" html-type=\"submit\" size=\"large\" type=\"primary\" shape=\"round\" :loading=\"loading\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</a-form-item>\n\t\t</a-form>\n\t\t<SlideVerifyModal ref=\"SlideVerifyModalRef\" @success=\"onSuccess\"></SlideVerifyModal>\n\t</div>\n</template>\n\n<script setup>\nimport SlideVerifyModal from \"@/components/SlideVerifyModal/index.vue\";\nimport { onMounted, ref, useTemplateRef } from \"vue\";\nimport { getAuthConfig, doLogin } from \"@/api/login.js\";\nimport config from \"@/config/defaultSetting\";\nimport { useStorage, useUrlSearchParams } from \"@vueuse/core\";\nimport { useI18n } from \"vue-i18n\";\nimport { isValidUrl } from \"@/utils/util.js\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => {},\n\t},\n});\nconst emit = defineEmits([\"switchLoginMode\"]);\nconst { t } = useI18n();\nconst loading = ref(false);\nconst loginErrorMsg = ref(\"\");\nconst storageUserLoginSetting = useStorage(\"OPS_userLoginSetting\", []);\n// const storageAccessToken = useStorage(\"OPS_accessToken\", \"\");\nconst SlideVerifyModalRef = useTemplateRef(\"SlideVerifyModalRef\");\nconst formData = ref({\n\tusername: \"\",\n\tpassword: \"\",\n});\nconst formDataRules = ref({\n\tusername: [{ required: true, message: t(\"login_username_pl\"), trigger: \"change\" }],\n\tpassword: [{ required: true, message: t(\"login_pwd_pl\"), trigger: \"change\" }],\n});\n\nconst onFinish = values => {\n\ttry {\n\t\tconst activeUserLoginSetting = storageUserLoginSetting.value.find(\n\t\t\titem => item.auth_type == authData.auth_type && item.username == formData.value.username\n\t\t);\n\t\tconst showVerifyCode = activeUserLoginSetting ? activeUserLoginSetting.show_verify_code : false;\n\t\tshowVerifyCode ? SlideVerifyModalRef.value.showModal() : onSuccess();\n\t} catch (error) {\n\t\tconsole.log(error);\n\t}\n};\nconst onSuccess = async () => {\n\ttry {\n\t\tloading.value = true;\n\t\tconst { c_url } = useUrlSearchParams(\"history\");\n\t\tconst params = {\n\t\t\t...formData.value,\n\t\t\tauth_type: authData.auth_type,\n\t\t\tc_url: c_url,\n\t\t};\n\t\tconst { data = {} } = await doLogin(params, { showMessage: false });\n\t\thandleUserLoginSetting(false); //成功登录后,关闭验证\n\t\tif ([\"start_bind_google_auth\", \"bind_google_auth\", \"verify_google_auth\"].includes(data.google_auth_type)) {\n\t\t\temit(\"switchLoginMode\", {\n\t\t\t\tgoogle_auth_type: data.google_auth_type,\n\t\t\t\tcache_token: data.cache_token,\n\t\t\t\tgoogle_auth_url: config.baseUrlOfImg + data.google_auth_url,\n\t\t\t\tgoogle_auth_username: data.google_auth_username,\n\t\t\t\tsecret: data.secret,\n\t\t\t\tshow_mfa_days: data.show_mfa_days,\n\t\t\t\t...params,\n\t\t\t});\n\t\t} else {\n\t\t\t// storageAccessToken.value = data.access_token;\n\t\t\t// getAuthConfig({ auth_type: \"all\" });\n\t\t\t// 仅去掉开头的一个斜杠（如果存在）\n\t\t\tconst data_curl = data.c_url?.replace(/^\\/+/, \"\") || \"\";\n\t\t\tconst url = isValidUrl(data.c_url) ? data.c_url : config.baseUrl + data_curl;\n\t\t\twindow.location.href = url;\n\t\t}\n\t} catch (error) {\n\t\tloginErrorMsg.value = error.message;\n\t\thandleUserLoginSetting(error.show_verify_code);\n\t} finally {\n\t\tloading.value = false;\n\t}\n};\nconst handleUserLoginSetting = show_verify_code => {\n\tconst activeUserLoginSetting = storageUserLoginSetting.value.find(\n\t\titem => item.auth_type == authData.auth_type && item.username == formData.value.username\n\t);\n\tif (activeUserLoginSetting) {\n\t\tactiveUserLoginSetting.show_verify_code = show_verify_code;\n\t} else {\n\t\tstorageUserLoginSetting.value.push({\n\t\t\tauth_type: authData.auth_type,\n\t\t\tusername: formData.value.username,\n\t\t\tshow_verify_code: show_verify_code,\n\t\t});\n\t}\n};\n\nonMounted(() => {\n\tloginErrorMsg.value = \"\";\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/QYWX.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<img class=\"mt-6 w-[50px]!\" :src=\"require('@/assets/qywx.png')\" :alt=\"$t('wecom')\" />\n\t\t<div class=\"text-lg font-bold mt-3\">{{ $t(\"wecom\") }}</div>\n\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"visible = true\">{{ $t(\"login_btn\") }}</a-button>\n\t\t</div>\n\t\t<a-modal v-model:open=\"visible\" @ok=\"visible = false\" :footer=\"null\" :bodyStyle=\"{ padding: 0 }\" centered>\n\t\t\t<div v-if=\"isError\" class=\"text-gray-500 text-center my-20\">{{ $t(\"wecom_err\") }}</div>\n\t\t\t<div v-else id=\"wwlogin\" class=\"mt-4 flex items-center justify-center\"></div>\n\t\t</a-modal>\n\t</div>\n</template>\n\n<script setup>\nimport { nextTick, onMounted, ref, watchEffect } from \"vue\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst visible = ref(false);\nconst isError = ref(false);\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\nwatchEffect(() => {\n\tif (visible.value) {\n\t\tnextTick(() => {\n\t\t\tinitQYWX();\n\t\t});\n\t}\n});\n\nconst initQYWX = () => {\n\tconst data = authData.account[0] || {};\n\tconst { corp_id, agent_id, domain } = data;\n\tif (!corp_id || !agent_id || !domain) {\n\t\tisError.value = true;\n\t\treturn;\n\t}\n\tconst url = encodeURIComponent(`${window.location.origin}${window.location.pathname}?auth_type=3&domain=${domain}`);\n\twindow.WwLogin({\n\t\tid: \"wwlogin\",\n\t\tappid: corp_id, //企业微信的cropID，在 企业微信管理端->我的企业中查看 -\n\t\tagentid: agent_id, //企业微信当前应用ID -\n\t\tredirect_uri: url,\n\t});\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/SSO.vue",
    "content": "<template>\n\t<div class=\"w-full flex items-center flex-col max-h-[400px] overflow-auto\">\n\t\t<a-alert\n\t\t\tv-if=\"async_auth_type == authData.auth_type && async_error_msg\"\n\t\t\tclass=\"mt-1! mb-4! w-full\"\n\t\t\ttype=\"warning\"\n\t\t\tshow-icon\n\t\t\t:message=\"async_error_msg\" />\n\t\t<template v-if=\"authData.account.length == 1\">\n\t\t\t<div class=\"w-full overflow-hidden\">\n\t\t\t\t<img class=\"mt-6 mx-auto w-[50px]!\" :src=\"config.baseUrlOfImg + authData.account[0].auth_icon?.url\" alt=\"\" />\n\t\t\t\t<div class=\"text-lg font-bold mt-3 truncate text-center\" :title=\"authData.account[0].domain\">\n\t\t\t\t\t{{ authData.account[0].domain || \"--\" }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"mt-12 mb-10 w-full\">\n\t\t\t\t<a-button class=\"w-full\" type=\"primary\" size=\"large\" shape=\"round\" @click=\"handleLogin(authData.account[0])\">\n\t\t\t\t\t{{ $t(\"login_btn\") }}\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"authData.account.length > 1\">\n\t\t\t<div\n\t\t\t\tv-for=\"item in authData.account\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\tclass=\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\">\n\t\t\t\t<div class=\"flex items-center flex-1 overflow-hidden\">\n\t\t\t\t\t<img class=\"w-6\" :src=\"config.baseUrlOfImg + item.auth_icon?.url\" alt=\"\" />\n\t\t\t\t\t<span class=\"flex-1 truncate ml-1.5 mr-2\">{{ item.domain || \"--\" }}</span>\n\t\t\t\t</div>\n\t\t\t\t<a-button class=\"flex! items-center\" size=\"small\" type=\"link\" @click=\"handleLogin(item)\"\n\t\t\t\t\t>{{ $t(\"login_btn_sm\") }}<ArrowRightOutlined class=\"text-xs\" />\n\t\t\t\t</a-button>\n\t\t\t</div>\n\t\t</template>\n\t\t<a-empty v-else class=\"mt-4\"></a-empty>\n\t</div>\n</template>\n\n<script setup>\nimport config from \"@/config/defaultSetting\";\n\nconst { authData } = defineProps({\n\tauthData: {\n\t\ttype: Object,\n\t\tdefault: () => ({\n\t\t\taccount: [],\n\t\t}),\n\t},\n});\n\nconst async_auth_type = ref(\"\");\nconst async_error_msg = ref(\"\");\n\nconst handleLogin = item => {\n\tconst callback = encodeURIComponent(window.location.origin + window.location.pathname + \"?domain=\" + item.domain + \"&auth_type=8\");\n\tconst url = item.auth_login_url + `?callback=${callback}`;\n\twindow.location.href = url;\n};\n\nonMounted(() => {\n\tasync_auth_type.value = window.OPS_AUTH_TYPE;\n\tasync_error_msg.value = window.OPS_ERROR;\n});\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/components/ValiMfa.vue",
    "content": "<template>\n\t<div>\n\t\t<div class=\"flex flex-col items-center\">\n\t\t\t<img src=\"~@/assets/valimfa.png\" alt=\"\" />\n\t\t\t<div class=\"text-[#888888] my-4 text-[15px]\">{{ $t(\"vali_mfa_title\") }}</div>\n\t\t</div>\n\t\t<div class=\"text-[#333333] mb-4\">\n\t\t\t<div class=\"text-[15px]\">{{ $t(\"vali_mfa_step1_title\") }}</div>\n\t\t\t<div>{{ $t(\"vali_mfa_step1_content\") }}</div>\n\t\t</div>\n\t\t<div class=\"text-[#333333] mb-3\">\n\t\t\t<div class=\"text-[15px]\">{{ $t(\"vali_mfa_step2_title\") }}</div>\n\t\t\t<div>{{ $t(\"vali_mfa_step2_content\") }}</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<a-input v-model:value.trim=\"verify_code\" :placeholder=\"$t('vali_mfa_verify_code_pl')\"></a-input>\n\t\t\t<a-checkbox v-if=\"loginFormData.show_mfa_days\" class=\"mt-4!\" v-model:checked=\"checked\">\n\t\t\t\t{{ $t(\"vali_mfa_seven_checked\") }}\n\t\t\t</a-checkbox>\n\t\t</div>\n\t\t<div class=\"mt-4\">\n\t\t\t<a-button class=\"w-full\" size=\"large\" type=\"primary\" :loading=\"loading\" @click=\"handleSubmit\">{{ $t(\"submit\") }}</a-button>\n\t\t\t<div class=\"text-xs text-[#888888] mt-2\">{{ $t(\"vali_mfa_bottom_tip\") }}</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport { message } from \"ant-design-vue\";\nimport { doLogin } from \"@/api/login.js\";\nimport config from \"@/config/defaultSetting\";\nimport { useI18n } from \"vue-i18n\";\nimport { isValidUrl } from \"@/utils/util.js\";\n\nconst { loginFormData } = defineProps({\n\tloginFormData: {\n\t\ttype: Object,\n\t\tdefault: () => ({}),\n\t},\n});\nconst { t } = useI18n();\nconst verify_code = ref(undefined);\nconst checked = ref(false);\nconst loading = ref(false);\n\nconst handleSubmit = async () => {\n\tif (!verify_code.value) {\n\t\treturn message.error(t(\"vali_mfa_verify_code_pl\"));\n\t}\n\tconst params = {\n\t\t...loginFormData,\n\t\tverify_code: verify_code.value,\n\t};\n\tif (loginFormData.show_mfa_days) {\n\t\tparams.seven_days_free = checked.value ? 1 : 0;\n\t}\n\tparams.google_auth_url = undefined;\n\ttry {\n\t\tloading.value = true;\n\t\tconst { data = {} } = await doLogin(params);\n\t\tconst data_curl = data.c_url?.replace(/^\\/+/, \"\") || '';\n\t\tconst url = isValidUrl(data.c_url) ? data.c_url : config.baseUrl + data_curl;\n\t\twindow.location.href = url;\n\t} catch (error) {\n\t\tconsole.log(error);\n\t} finally {\n\t\tloading.value = false;\n\t}\n};\n</script>\n<style scoped lang=\"less\"></style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/src/view/login/login.vue",
    "content": "<template>\n\t<div class=\"page-content\" :style=\"{ background: 'url(' + config.baseUrlOfImg + 'uploads/login/img/bg_image.png' + ') no-repeat' }\">\n\t\t<header class=\"h-[50px] bg-white flex justify-between items-center shadow-sm\">\n\t\t\t<img class=\"h-[50px] ml-[200px]\" :src=\"config.baseUrlOfImg + 'uploads/login/img/bk_login.png'\" alt=\"\" />\n\t\t\t<div class=\"mr-[100px]\">\n\t\t\t\t<a class=\"text-[#666666]! mr-3\" href=\"/docs/\">{{ $t(\"header_help\") }}</a>\n\t\t\t\t<a-dropdown>\n\t\t\t\t\t<a class=\"text-[#666666]!\" @click.prevent>\n\t\t\t\t\t\t{{ menuList.find(item => item.key == locale)?.title }}\n\t\t\t\t\t\t<DownOutlined class=\"text-xs\" />\n\t\t\t\t\t</a>\n\t\t\t\t\t<template #overlay>\n\t\t\t\t\t\t<a-menu @click=\"changeLocale\">\n\t\t\t\t\t\t\t<a-menu-item v-for=\"item in menuList\" :key=\"item.key\">\n\t\t\t\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t\t\t\t<img class=\"w-[18px] h-[18px] mr-1\" :src=\"item.img\" :alt=\"item.title\" />\n\t\t\t\t\t\t\t\t\t<span>{{ item.title }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</a-menu-item>\n\t\t\t\t\t\t</a-menu>\n\t\t\t\t\t</template>\n\t\t\t\t</a-dropdown>\n\t\t\t</div>\n\t\t</header>\n\t\t<div v-if=\"showDemoTip\" class=\"absolute left-0 top-[50px] w-full\">\n\t\t\t<a-alert style=\"text-align: center;\" type=\"info\" >\n\t\t\t\t<template #message>\n\t\t\t\t\t<InfoCircleFilled style=\"color:#1677ff\" /> {{ $t('demo_tip') }}\n\t\t\t\t</template>\n\t\t\t</a-alert>\n\t\t</div>\n\t\t<div>\n\t\t\t<div class=\"ml-[20%]\">\n\t\t\t\t<img class=\"w-[540px] mt-[11%]\" :src=\"config.baseUrlOfImg + 'uploads/login/img/home_top_word.png'\" alt=\"\" />\n\t\t\t\t<img class=\"w-[540px] mt-[30px]\" :src=\"config.baseUrlOfImg + 'uploads/login/img/home_page_picture.png'\" alt=\"\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if=\"!loginFormData.google_auth_type || ['verify_google_auth'].includes(loginFormData.google_auth_type)\"\n\t\t\t\tclass=\"px-[30px] py-[30px] mt-[6%] shadow-xl rounded-lg bg-white w-[380px] min-h-[390px] absolute top-[12%] left-[57%]\">\n\t\t\t\t<template v-if=\"loginFormData.google_auth_type == 'verify_google_auth'\">\n\t\t\t\t\t<ValiMfa :loginFormData=\"loginFormData\" />\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div class=\"text-xl font-bold mb-3 mt-2\">\n\t\t\t\t\t\t<a-skeleton-input v-if=\"loading\" :active=\"true\" />\n\t\t\t\t\t\t<div v-else>{{ loginTitle || $t(\"login_welcome\") }}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a-card :loading=\"loading\" :bordered=\"false\" :bodyStyle=\"{ padding: 0 }\">\n\t\t\t\t\t\t<a-tabs class=\"mt-2\" v-model:activeKey=\"activeLoginKey\" destroyInactiveTabPane>\n\t\t\t\t\t\t\t<a-tab-pane v-for=\"item in authList\" :key=\"item.auth_type\" :tab=\"item.auth_show_name\">\n\t\t\t\t\t\t\t\t<component :is=\"item.componentKey\" :authData=\"item\" @switchLoginMode=\"switchLoginMode\"></component>\n\t\t\t\t\t\t\t</a-tab-pane>\n\t\t\t\t\t\t</a-tabs>\n\t\t\t\t\t</a-card>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-else-if=\"['start_bind_google_auth', 'bind_google_auth'].includes(loginFormData.google_auth_type)\"\n\t\t\t\tclass=\"shadow-xl rounded-lg bg-white absolute top-[12%] left-[57%]\">\n\t\t\t\t<BindMfa :loginFormData=\"loginFormData\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Password from \"./components/Password.vue\";\nimport QYWX from \"./components/QYWX.vue\";\nimport LDAP from \"./components/LDAP.vue\";\nimport SSO from \"./components/SSO.vue\";\nimport IDaaS from \"./components/IDaaS.vue\";\nimport OAuth from \"./components/OAuth.vue\";\nimport AD from \"./components/AD.vue\";\nimport IAM from \"./components/IAM.vue\";\nimport DingTalk from \"./components/DingTalk.vue\";\nimport Feishu from \"./components/Feishu.vue\";\nimport BindMfa from \"./components/BindMfa.vue\";\nimport ValiMfa from \"./components/ValiMfa.vue\";\nimport { useUrlSearchParams } from \"@vueuse/core\";\nimport { getAuthConfig } from \"@/api/login.js\";\nimport config from \"@/config/defaultSetting\";\nimport { useI18nCookie } from \"@/hooks/useI18nCookie\";\nimport { useCookies } from \"@vueuse/integrations/useCookies\";\n\nconst { locale, setLocale } = useI18nCookie();\nconst loginTitle = ref(\"\");\nconst loading = ref(false);\nconst loginFormData = ref({});\nconst menuList = ref([\n\t{ key: \"zh-CN\", title: \"简体中文\", img: require(\"@/assets/zh_CN.png\") },\n\t{ key: \"zh-TW\", title: \"繁體中文\", img: require(\"@/assets/zh_TW.png\") },\n\t{ key: \"en\", title: \"English\", img: require(\"@/assets/en.png\") },\n]);\nconst loginTypeList = shallowRef([\n\t{ title: \"密码登录\", key: \"1\", componentKey: Password },\n\t{ title: \"LDAP\", key: \"2\", componentKey: LDAP },\n\t{ title: \"企业微信\", key: \"3\", componentKey: QYWX },\n\t{ title: \"OAuth\", key: \"6\", componentKey: OAuth },\n\t{ title: \"AD\", key: \"7\", componentKey: AD },\n\t{ title: \"SSO\", key: \"8\", componentKey: SSO },\n\t{ title: \"IDaaS\", key: \"9\", componentKey: IDaaS },\n\t{ title: \"IAM\", key: \"10\", componentKey: IAM },\n\t{ title: \"钉钉\", key: \"11\", componentKey: DingTalk },\n\t{ title: \"飞书\", key: \"12\", componentKey: Feishu },\n]);\nconst authList = shallowRef([]);\nconst activeLoginKey = ref(\"1\");\nconst showDemoTip = ref(window.location.hostname === \"demo.opsany.com\");\n\nconst getAuthList = async () => {\n\ttry {\n\t\tloading.value = true;\n\t\tconst { data = [] } = await getAuthConfig({ auth_type: \"all\" });\n\t\tdata.forEach(item => {\n\t\t\tif (loginTypeList.value.find(i => i.key == item.auth_type)) {\n\t\t\t\titem.componentKey = loginTypeList.value.find(i => i.key == item.auth_type).componentKey;\n\t\t\t}\n\t\t});\n\t\tauthList.value = data;\n\t\tloginTitle.value = data[0] && data[0].title;\n\t\tconst params = useUrlSearchParams(\"history\");\n\t\tconst auth_type = params.auth_type;\n\t\tif (authList.value.find(i => i.auth_type == auth_type)) return;\n\t\tactiveLoginKey.value = data[0]?.auth_type || \"1\";\n\t} catch (error) {\n\t\tconsole.log(error);\n\t} finally {\n\t\tloading.value = false;\n\t}\n};\nconst switchLoginMode = val => {\n\t//google_auth_type:\n\t//start_bind_google_auth: 开始绑定\n\t//bind_google_auth: 绑定并登录\n\t//verify_google_auth: 验证MFA\n\n\tloginFormData.value = val;\n};\nconst changeLocale = ({ key }) => {\n\tsetLocale(key);\n};\nconst setDefaultLocale = () => {\n\tconst cookies = useCookies([\"opsany_language\"]);\n\tconst currentCookie = cookies.get(\"opsany_language\");\n\tif (!currentCookie) {\n\t\tlocale.value = \"zh-CN\";\n\t}\n};\n\nonMounted(() => {\n\tsetDefaultLocale();\n\tconst params = useUrlSearchParams(\"history\");\n\tconst auth_type = params.auth_type;\n\tif (loginTypeList.value.find(i => i.key == auth_type)) {\n\t\tactiveLoginKey.value = auth_type;\n\t}\n\tgetAuthList();\n});\n</script>\n<style scoped lang=\"less\">\n.page-content {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\toverflow: auto;\n\tbackground-size: 100% 100% !important;\n}\n\n:deep(.ant-tabs-top > .ant-tabs-nav::before),\n:deep(.ant-tabs-top > div > .ant-tabs-nav::before) {\n\tborder: none;\n}\n:deep(.ant-card:not(.ant-card-bordered)) {\n\tbox-shadow: none;\n}\n:deep(.ant-tabs-tab) {\n\tpadding: 8px 0;\n}\n</style>\n"
  },
  {
    "path": "paas-ce/paas/login/frontend/vite.config.js",
    "content": "import { defineConfig } from 'vite'\nimport tailwindcss from '@tailwindcss/vite'\nimport vue from '@vitejs/plugin-vue'\nimport { fileURLToPath, URL } from 'url';\nimport AutoImport from 'unplugin-auto-import/vite'//自动引入\nimport Components from 'unplugin-vue-components/vite';\nimport { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'; //引入antd组件\nimport requireTransform from 'vite-plugin-require-transform';// \nimport commonjs from 'vite-plugin-commonjs';\nimport { compression } from 'vite-plugin-compression2' //gzip压缩\n\nconst dependencies = require('./package.json').dependencies;\nconst isProd = process.env.NODE_ENV === 'production'\n\n// https://vite.dev/config/\nexport default defineConfig({\n\tbase: isProd ? '/login/static/' : '/',\n\tplugins: [\n\t\tvue(),\n\t\tcommonjs(),\n\t\ttailwindcss(),\n\t\tAutoImport({\n\t\t\tinclude: [\n\t\t\t\t/\\.[tj]sx?$/, // .ts, .tsx, .js, .jsx\n\t\t\t\t/\\.vue$/,\n\t\t\t\t/\\.vue\\?vue/, // .vue\n\t\t\t\t/\\.md$/, // .md\n\t\t\t],\n\t\t\timports: [\n\t\t\t\t'vue',\n\t\t\t\t// 'vue-router',\n\t\t\t\t// 'pinia',\n\t\t\t\t// { '@/store': ['useAppStore', 'useUserStore'] }\n\t\t\t],\n\t\t\teslintrc: {\n\t\t\t\tenabled: true,\n\t\t\t\tfilepath: './.eslintrc-auto-import.json',\n\t\t\t\tglobalsPropValue: true,\n\t\t\t},\n\t\t}),\n\t\tComponents({\n\t\t\tresolvers: [\n\t\t\t\tAntDesignVueResolver({\n\t\t\t\t\timportStyle: false, // css in js\n\t\t\t\t\tresolveIcons: true, //自动引入antd图标\n\t\t\t\t}),\n\t\t\t],\n\t\t}),\n\t\trequireTransform({\n\t\t\tfileRegex: /.js$|.vue$/\n\t\t}),\n\t\tcompression({\n\t\t\talgorithms: ['gzip'],\n\t\t})\n\t],\n\tserver: {\n\t\thost: '0.0.0.0',\n\t\tport: 8000,\n\t\topen: true,\n\t},\n\tbuild: {\n\t\tassetsDir: 'vite-static',\n\t\treportCompressedSize: false, // 设置为false将禁用构建的压缩大小报告。可以稍微提高构建速度\n\t\trollupOptions: {\n\t\t\ttreeshake: true, // 开启 Tree Shaking，消除未使用的代码，减小最终的包大小\n\t\t\toutput: {\n\t\t\t\t// 根据不同的js库 拆分包，减少index.js包体积\n\t\t\t\tmanualChunks(id) {\n\t\t\t\t\tif (id.includes('node_modules')) {\n\t\t\t\t\t\t// 指定需要拆分的第三方库或模块\n\t\t\t\t\t\tconst dependenciesKeys = Object.keys(dependencies);\n\t\t\t\t\t\tconst match = dependenciesKeys.find((item) => {\n\t\t\t\t\t\t\treturn id.includes(item);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst notSplit = ['vue', 'ant-design-vue',];\n\t\t\t\t\t\tif (match && !notSplit.includes(match)) {\n\t\t\t\t\t\t\treturn match;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tresolve: {\n\t\textensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],\n\t\talias: {\n\t\t\t'@': fileURLToPath(new URL('./src', import.meta.url)),\n\t\t},\n\t},\n\toptimizeDeps: {\n\t\tinclude: ['@ant-design/icons-vue', 'ant-design-vue', 'dayjs'],\n\t},\n})\n"
  },
  {
    "path": "paas-ce/paas/login/healthz/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/login/healthz/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.urls import path\n\nfrom healthz import views\n\n\nurlpatterns = [\n    path(\"\", views.HealthzView.as_view())\n]\n"
  },
  {
    "path": "paas-ce/paas/login/healthz/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport os\n\nfrom django.conf import settings\nfrom django.views.generic import View\nfrom django.utils.translation import gettext as _\n\nfrom common.mixins.exempt import LoginExemptMixin\nfrom common.exceptions import LoginErrorCodes\nfrom common.responses import ApiV2FailJsonResponse, ApiV2OKJsonResponse\n\n\nclass HealthzView(LoginExemptMixin, View):\n    \"\"\"health check for login\n    \"\"\"\n    def _check_settings(self):\n        \"\"\"\n        check settings, 注意不暴露密码等敏感信息\n        \"\"\"\n        # check settings, 注意不暴露密码等敏感信息\n        try:\n            settings.ESB_TOKEN\n            {\n                'debug': settings.DEBUG,\n                'env': os.getenv(\"BK_ENV\", \"unknow\"),\n                'cookie_domain': settings.BK_COOKIE_DOMAIN,\n\n                'mysql': {\n                    'host': settings.DATABASES.get(\"default\", {}).get(\"HOST\"),\n                    'port': settings.DATABASES.get(\"default\", {}).get(\"PORT\"),\n                    'user': settings.DATABASES.get(\"default\", {}).get(\"USER\"),\n                    'database': settings.DATABASES.get(\"default\", {}).get(\"NAME\")\n                }\n            }\n        except Exception as error:\n            return False, _(\"配置文件不正确, 缺失对应配置: {}\").format(error), LoginErrorCodes.E1302001_BASE_SETTINGS_ERROR\n\n        return True, \"ok\", 0\n\n    def _check_database(self):\n        try:\n            from bkaccount.models import BkUser\n            objs = BkUser.objects.all()\n            [o.username for o in objs]\n        except Exception as error:\n            return False, _(\"数据库连接存在问题: {}\").format(error), LoginErrorCodes.E1302002_BASE_DATABASE_ERROR\n\n        return True, \"ok\", 0\n\n    def get(self, request):\n        data = {}\n        # 强依赖\n        _check_funcs = [\n            (\"settings\", self._check_settings),\n            (\"database\", self._check_database),\n        ]\n        for name, func in _check_funcs:\n            is_health, message, code = func()\n            if not is_health:\n                return ApiV2FailJsonResponse(message, code=code)\n            data[name] = \"ok\"\n        return ApiV2OKJsonResponse(\"\", data=data)\n"
  },
  {
    "path": "paas-ce/paas/login/init_admin.py",
    "content": "# -*- coding: utf-8 -*-\nimport random\nimport string\n\n\ndef init_password():\n    characters = string.ascii_letters + string.digits\n    password = \"Ops\" +\"\".join(random.choices(characters, k=9))\n    user = BkUser.objects.filter(username=\"admin\").first()\n    UserAuthToken.objects.filter(username=\"admin\", app_code=\"login\").delete()\n    if user:\n        user.set_password(password)\n        user.save()\n        print(f\"reset admin password success: \\033[1;32m{password}\\033[0m\")\n    else:\n        print(\"reset admin password error: admin was not found.\")\n\n\nif __name__ == '__main__':\n    import os\n    import sys\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n    parent_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n    os.environ[\"BK_ENV\"] = \"production\"\n    sys.path.append(parent_path)\n    import django\n    django.setup()\n    from bkaccount.models import BkUser, UserAuthToken\n\n    init_password()\n\n\n"
  },
  {
    "path": "paas-ce/paas/login/init_admin_mfa.py",
    "content": "import MySQLdb\nimport argparse\n\n\ndef init_admin_mfa(host, port, username, password, name=\"rbac\"):\n    try:\n        db = MySQLdb.connect(host=host, user=username, passwd=password, port=int(port), db=name, charset='utf8')\n        cursor = db.cursor()\n    except Exception as e:\n        db = None\n        print((\"Link mysql error: {}\".format(str(e))))\n    if db:\n        sql = \"UPDATE rbac_user SET google_auth_status=0, google_secret='' WHERE username='admin';\"\n        try:\n            cursor.execute(sql)\n            db.commit()\n            print(\"Init admin user mfa success\")\n        except Exception as e:\n            db.rollback()\n            print((\"Init admin user mfa error, error info {}\".format(str(e))))\n        db.close()\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--mysql_password\", help=\"Mysql password.\", required=True)\n    parameter.add_argument(\"--mysql_host\", help=\"Mysql host.\", required=True)\n    parameter.add_argument(\"--mysql_username\", help=\"Mysql username.\", required=True)\n    parameter.add_argument(\"--mysql_port\", help=\"Mysql port.\", required=True)\n    return parameter\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    mysql_password = options.mysql_password\n    mysql_username = options.mysql_username\n    mysql_host = options.mysql_host\n    mysql_port = options.mysql_port\n    init_admin_mfa(mysql_host, mysql_port, mysql_username, mysql_password)\n"
  },
  {
    "path": "paas-ce/paas/login/locale/en/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2019-03-28 20:33+0800\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: bkaccount/accounts.py:127\nmsgid \"缺少参数bk_token\"\nmsgstr \"Missing parameters bk_token\"\n\n#: bkaccount/accounts.py:136\nmsgid \"参数bk_token非法\"\nmsgstr \"Parameters bk_token is illegal\"\n\n#: bkaccount/accounts.py:152\n#, fuzzy\n#| msgid \"不存在bk_token[%s]的记录\"\nmsgid \"不存在该bk_token的记录\"\nmsgstr \"Record of bk_token [%s] does not exist\"\n\n#: bkaccount/accounts.py:159\nmsgid \"登录态已注销\"\nmsgstr \"login status has been logged out\"\n\n#: bkaccount/accounts.py:163\nmsgid \"登录态已过期\"\nmsgstr \"Login status has expired\"\n\n#: bkaccount/accounts.py:167\nmsgid \"登录态有效期不合法\"\nmsgstr \"Login validity is illegal\"\n\n#: bkaccount/constants.py:37 templates/bkaccount/user_table.part:46\n#: templates/bkaccount/user_table.part:54 templates/bkaccount/users.html:27\nmsgid \"普通用户\"\nmsgstr \"staff\"\n\n#: bkaccount/constants.py:38 templates/bkaccount/user_table.part:47\n#: templates/bkaccount/users.html:26\nmsgid \"管理员\"\nmsgstr \"superuser\"\n\n#: bkaccount/constants.py:39 templates/bkaccount/user_table.part:48\n#: templates/bkaccount/user_table.part:55 templates/bkaccount/users.html:28\nmsgid \"开发者\"\nmsgstr \"developer\"\n\n#: bkaccount/constants.py:40 templates/bkaccount/user_table.part:49\n#: templates/bkaccount/user_table.part:56 templates/bkaccount/users.html:29\nmsgid \"职能化用户\"\nmsgstr \"operator\"\n\n#: bkaccount/constants.py:41 templates/bkaccount/user_table.part:50\n#: templates/bkaccount/user_table.part:57 templates/bkaccount/users.html:30\nmsgid \"审计员\"\nmsgstr \"auditor\"\n\n#: bkaccount/constants.py:75\nmsgid \"中文\"\nmsgstr \"Chinese\"\n\n#: bkaccount/constants.py:76\nmsgid \"英文\"\nmsgstr \"English\"\n\n#: bkaccount/forms.py:70\nmsgid \"名称长度不能超过16个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:73\nmsgid \"手机号长度不能超过11个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:81\n#, fuzzy\n#| msgid \"\"\n#| \"中文名【%s】错误，只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"\nmsgid \"中文名错误，只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"\nmsgstr \"\"\n\"Nickname [%s] error, it can only contain numbers, letters and underscores, \"\n\"with a length of 1-16 characters\"\n\n#: bkaccount/forms.py:88\n#, fuzzy\n#| msgid \"手机号【%s】错误，仅支持中国大陆手机号码（11位数字）\"\nmsgid \"手机号错误，仅支持11位数字的号码\"\nmsgstr \"Phone number [%s] error, it only supports 10-digit phone number\"\n\n#: bkaccount/forms.py:94\n#, fuzzy\n#| msgid \"密码不能为空\"\nmsgid \"用户名不能为空\"\nmsgstr \"Password can not be empty\"\n\n#: bkaccount/forms.py:95\nmsgid \"用户名长度不能超过20个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:96\nmsgid \"用户名长度不能少于4个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:104\n#, fuzzy\n#| msgid \"\"\n#| \"用户名【%s】错误，只能包含数字、字母、下划线和点，长度在4-20个字符，且必须\"\n#| \"以字母或数字开头\"\nmsgid \"\"\n\"用户名错误，只能包含数字、字母、下划线和点，长度在4-20个字符，且必须以字母或\"\n\"数字开头\"\nmsgstr \"\"\n\"Username [%s] error, it can only contain numbers, letters, underline and \"\n\"dots, with a length of 4-20 characters and must start with letters or number\"\n\n#: bkaccount/forms.py:110 bkaccount/forms.py:122 bkaccount/forms.py:132\n#, fuzzy\n#| msgid \"密码不能为空\"\nmsgid \"新密码不能为空\"\nmsgstr \"Password can not be empty\"\n\n#: bkaccount/forms.py:111 bkaccount/forms.py:133\nmsgid \"密码长度不能超过20个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:112 bkaccount/forms.py:134\nmsgid \"密码长度不能少于8个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:124\nmsgid \"两次输入的新密码不一致\"\nmsgstr \"Two passwords entered in twice are not the same\"\n\n#: bkaccount/forms.py:126 bkaccount/forms.py:141\nmsgid \"\"\n\"密码只支持数字、字母或!@#$%^*()_-+=，长度在8-20个字符，且必须保证包含大小写字\"\n\"母和数字\"\nmsgstr \"\"\n\"The password only supports numbers, letters, or !@#$%^*()_-+=, with a length \"\n\"of 8 to 20 characters and must contain uppercase and lowercase and numbers\"\n\n#: bkaccount/forms.py:146\n#, fuzzy\n#| msgid \"参数错误，wx_userid 不能为空\"\nmsgid \"wx_userid 不能为空\"\nmsgstr \"Parameter error, wx_userid cannot be empty\"\n\n#: bkaccount/forms.py:150\nmsgid \"文件必须上传\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:157\n#, fuzzy\n#| msgid \"批量导入用户，解析文件名出错:%s\"\nmsgid \"批量导入用户，解析文件名出错\"\nmsgstr \"Batch import users, file name parse error: %s\"\n\n#: bkaccount/forms.py:159\nmsgid \"文件格式错误，只支持：.xls 和 .xlsx 文件\"\nmsgstr \"File format error, only supports files in .xls and .xlsx formats\"\n\n#: bkaccount/manager.py:61\nmsgid \"用户名不存在\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:159 bkaccount/manager.py:325\nmsgid \"用户密码重置失败\"\nmsgstr \"User password reset failed\"\n\n#: bkaccount/manager.py:176\n#, fuzzy\n#| msgid \"个人[%s]信息修改失败\"\nmsgid \"个人信息修改失败\"\nmsgstr \"[%s] Personal information modification failed\"\n\n#: bkaccount/manager.py:201\n#, fuzzy\n#| msgid \"账号为：%s 的用户是最后一个管理员，不可修改其角色\"\nmsgid \"该用户是最后一个管理员，不可修改其角色\"\nmsgstr \"\"\n\"Username: %s user is the last administrator, and his role cannot be modified\"\n\n#: bkaccount/manager.py:242\n#, fuzzy\n#| msgid \"账号为：%s 的用户是最后一个管理员，不可修改其角色\"\nmsgid \"用户是最后一个管理员，不可修改其角色\"\nmsgstr \"\"\n\"Username: %s user is the last administrator, and his role cannot be modified\"\n\n#: bkaccount/manager.py:267\n#, fuzzy\n#| msgid \"账号为：%s 的用户已经存在\"\nmsgid \"用户已经存在\"\nmsgstr \"Username: %s user already exists\"\n\n#: bkaccount/manager.py:270\n#, fuzzy\n#| msgid \"保存用户信息(%s)出错\"\nmsgid \"保存用户信息出错\"\nmsgstr \"Save user(%s) information failed\"\n\n#: bkaccount/manager.py:303\nmsgid \"内置admin用户不可删除\"\nmsgstr \"Built in admin user cannot be deleted\"\n\n#: bkaccount/manager.py:306\nmsgid \"最后一个管理员用户，不允许删除\"\nmsgstr \"The user as the last administrator is not permitted to be deleted\"\n\n#: bkaccount/manager.py:311\n#, fuzzy\n#| msgid \"用户(%s)删除失败\"\nmsgid \"用户删除失败\"\nmsgstr \"User (%s) delete failed\"\n\n#: bkaccount/manager.py:335\nmsgid \"已经绑定了微信，请解绑后再重新绑定！\"\nmsgstr \"WeChat has been bound, please unbind and then bind again\"\n\n#: bkaccount/manager.py:339\nmsgid \"该微信号已经被绑定过了\"\nmsgstr \"The WeChat ID has been bound\"\n\n#: bkaccount/manager.py:346\nmsgid \"绑定用户微信信息失败\"\nmsgstr \"Bound user WeChat information failed\"\n\n#: bkaccount/manager.py:357\nmsgid \"账号未绑定过微信号，无法解绑\"\nmsgstr \"The user has not been bound with a WeChat ID, so it cannot be unbound\"\n\n#: bkaccount/manager.py:361\nmsgid \"解绑用户微信信息失败\"\nmsgstr \"Unbound user WeChat information failed\"\n\n#: bkaccount/manager.py:392\nmsgid \"记录成功\"\nmsgstr \"Record succeeded\"\n\n#: bkaccount/manager.py:394\nmsgid \"用户登录记录失败\"\nmsgstr \"User login record failed\"\n\n#: bkaccount/models.py:51\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: bkaccount/models.py:59\nmsgid \"user\"\nmsgstr \"\"\n\n#: bkaccount/models.py:60\nmsgid \"users\"\nmsgstr \"\"\n\n#: bkaccount/models.py:125\nmsgid \"create_time\"\nmsgstr \"\"\n\n#: bkaccount/utils.py:36\nmsgid \"用户不存在\"\nmsgstr \"\"\n\n#: bkaccount/utils.py:96\n#, fuzzy\n#| msgid \"导出数据出现错误:%s\"\nmsgid \"导出数据出现错误\"\nmsgstr \"Export data error: %s\"\n\n#: bkaccount/views.py:147\nmsgid \"保存用户信息成功\"\nmsgstr \"Save user information succeeded\"\n\n#: bkaccount/views.py:159\n#, fuzzy\n#| msgid \"用户(%s)删除成功\"\nmsgid \"用户删除成功\"\nmsgstr \"User (%s) delete succeeded \"\n\n#: bkaccount/views.py:175\n#, fuzzy\n#| msgid \"修改密码\"\nmsgid \"修改密码成功\"\nmsgstr \"Change Password\"\n\n#: bkaccount/views.py:183 common/mixins/base.py:31 common/mixins/base.py:45\n#, fuzzy\n#| msgid \"非管理员用户, 没有权限进行操作, 请找管理员申请权限!\"\nmsgid \"非管理员, 没有权限进行操作, 请找管理员申请权限!\"\nmsgstr \"\"\n\"Non-administrator users do not have permissions to operate, so please apply \"\n\"for permissions to the administrator.\"\n\n#: bkaccount/views.py:196\nmsgid \"文件解析出错，请下载 EXCEL模板文件 填写用户数据\"\nmsgstr \"\"\n\"File parse error, please download EXCEL template file and fill in user data\"\n\n#: bkaccount/views.py:199\n#, fuzzy\n#| msgid \"导入数据为空\"\nmsgid \"导入数据不能为空\"\nmsgstr \"Import data is empty\"\n\n#: bkaccount/views.py:219\n#, fuzzy\n#| msgid \"用户导入出现异常%s\"\nmsgid \"用户导入出现异常 {}\"\nmsgstr \"An exception occurred while user importing data; %s\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:19\nmsgid \"用户名\"\nmsgstr \"username\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:20\nmsgid \"中文名\"\nmsgstr \"nickname\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:21\nmsgid \"联系电话\"\nmsgstr \"phone\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:22\nmsgid \"常用邮箱\"\nmsgstr \"email\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:23\nmsgid \"角色\"\nmsgstr \"role\"\n\n#: bkaccount/views_api.py:31 bkaccount/views_api_v2.py:29\nmsgid \"用户验证成功\"\nmsgstr \"User authentication succeeded\"\n\n#: bkaccount/views_api.py:52 bkaccount/views_api.py:69\n#: bkaccount/views_api.py:92 bkaccount/views_api_v2.py:50\n#: bkaccount/views_api_v2.py:67 bkaccount/views_api_v2.py:90\nmsgid \"用户信息获取成功\"\nmsgstr \"Get user information succeeded\"\n\n#: bkaccount/views_api.py:77 bkaccount/views_api.py:100\n#: bkaccount/views_api.py:121 bkaccount/views_api.py:144\n#: bkaccount/views_api_v2.py:75\nmsgid \"请求参数格式错误,必须为json格式\"\nmsgstr \"Request parameters format error, it must be in json format\"\n\n#: bkaccount/views_api.py:88\nmsgid \"缺少参数:username_list\"\nmsgstr \"Missing parameters: username_list\"\n\n#: bkaccount/views_api.py:113\nmsgid \"密码重置成功\"\nmsgstr \"Password reset succeeded\"\n\n#: bkaccount/views_api.py:136\nmsgid \"用户信息修改成功\"\nmsgstr \"User information modification succeeded\"\n\n#: bkaccount/views_api.py:157\nmsgid \"绑定成功\"\nmsgstr \"Binding succeeded\"\n\n#: bkaccount/views_api.py:165\nmsgid \"解绑成功\"\nmsgstr \"Unbinding succeeded\"\n\n#: bkaccount/views_api_v2.py:86\n#, fuzzy\n#| msgid \"缺少参数:username_list\"\nmsgid \"缺少参数:bk_username_list\"\nmsgstr \"Missing parameters: username_list\"\n\n#: conf/default.py:183\nmsgid \"English\"\nmsgstr \"英文\"\n\n#: conf/default.py:184\nmsgid \"简体中文\"\nmsgstr \"Simplified Chinese\"\n\n#: healthz/views.py:44\n#, fuzzy\n#| msgid \"配置文件不正确, 缺失对应配置: %s\"\nmsgid \"配置文件不正确, 缺失对应配置: {}\"\nmsgstr \"\"\n\"Configuration file is incorrect, with corresponding configurations missed: %s\"\n\n#: healthz/views.py:54\n#, fuzzy\n#| msgid \"数据库连接存在问题: %s\"\nmsgid \"数据库连接存在问题: {}\"\nmsgstr \"There is a problem with database connection: %s\"\n\n#: templates/401.html:6\nmsgid \"未登录蓝鲸智云平台(401页)\"\nmsgstr \"Have not logged in BlueKing platform (page 401)\"\n\n#: templates/401.html:20\nmsgid \"您需要登录蓝鲸智云\"\nmsgstr \"You need to log in BlueKing\"\n\n#: templates/401.html:21\nmsgid \"立即登录\"\nmsgstr \"Log in right now\"\n\n#: templates/403.html:6\nmsgid \"您没有访问权限(403页)\"\nmsgstr \"You have no access permissions (Page 403)\"\n\n#: templates/403.html:20\nmsgid \"您没有访问权限，请联系系统管理员添加\"\nmsgstr \"\"\n\"You have no access permissions, please contact system administrator to add\"\n\n#: templates/404.html:6\nmsgid \"页面找不到（404页）\"\nmsgstr \"Page Not Found (404)\"\n\n#: templates/404.html:20\nmsgid \"页面找不到了\"\nmsgstr \"Page Not Found\"\n\n#: templates/500.html:6\nmsgid \"系统异常(500页)\"\nmsgstr \"System exception (page 500)\"\n\n#: templates/500.html:20\nmsgid \"系统出现异常\"\nmsgstr \"Exceptions occurred in system\"\n\n#: templates/500.html:21\nmsgid \"努力恢复中，请稍后再试......\"\nmsgstr \"Trying to recover, please try again later...\"\n\n#: templates/50x.html:6 templates/50x.html.py:19\nmsgid \"服务故障，努力修复中...\"\nmsgstr \"Service failure, trying to repair ...\"\n\n#: templates/50x.html:20\nmsgid \"服务出现故障，我们正在紧急修复，给您带来不便，敬请谅解。\"\nmsgstr \"\"\n\"Service failure, we are trying our best to do emergency repair. Please \"\n\"understand for the inconvenience.\"\n\n#: templates/bkaccount/base.html:11\n#, fuzzy\n#| msgid \"用户管理|蓝鲸智云企业版\"\nmsgid \"用户管理|蓝鲸智云社区版\"\nmsgstr \"User Management|BlueKing\"\n\n#: templates/bkaccount/base.html:12\n#, fuzzy\n#| msgid \"\"\n#| \"开发者中心,游戏运维,运维,服务器管理,模块配置,监控,腾讯游戏,蓝鲸,智云,\"\n#| \"devops,运维开发,蓝鲸企业版,企业版,作业平台,集成平台,配置平台,管控平台\"\nmsgid \"\"\n\"开发者中心,游戏运维,运维,服务器管理,模块配置,监控,腾讯游戏,蓝鲸,智云,devops,\"\n\"运维开发,蓝鲸社区版,社区版,作业平台,集成平台,配置平台,管控平台\"\nmsgstr \"\"\n\"Developer Center, Game OPS, OPS, Server Management, Module Configuration, \"\n\"Monitoring, Tencent Game, BlueKing, DevOps, OPS Development, BlueKing \"\n\"Enterprise, Enterprise, Job System, Integration System, Configuration \"\n\"System, Control System\"\n\n#: templates/bkaccount/base.html:13\n#, fuzzy\n#| msgid \"\"\n#| \"蓝鲸智云软件企业版是由蓝鲸智云团队提供的一套基于PaaS的技术解决方案，旨在改\"\n#| \"变中国运维行业，帮助企业快速达到基础运维支撑能力，并提升技术人员的DevOps能\"\n#| \"力。该版本提供了配置平台，作业平台，集成平台等强大功能，用户在使用时，请查\"\n#| \"阅并遵守《蓝鲸智云软件用户服务协议》。\"\nmsgid \"\"\n\"蓝鲸智云软件社区版是由蓝鲸智云团队提供的一套基于PaaS的技术解决方案，旨在改变\"\n\"中国运维行业，帮助企业快速达到基础运维支撑能力，并提升技术人员的DevOps能力。\"\n\"该版本提供了配置平台，作业平台，集成平台等强大功能，用户在使用时，请查阅并遵\"\n\"守《蓝鲸智云软件用户服务协议》。\"\nmsgstr \"\"\n\"BlueKing Enterprise is a PaaS-based technology solution developed by \"\n\"BlueKing team, aiming at changing the OPS industry in China, helping \"\n\"enterprises rapidly achieve basic OPS support capability and enhancing \"\n\"technical staff's DevOps capabilities. It supports CC/JOB/PaaS.\"\n\n#: templates/bkaccount/base.html:43 templates/bkaccount/base.html.py:98\n#: templates/login/login.html:54\n#, fuzzy\n#| msgid \"蓝鲸智云后台管理\"\nmsgid \"蓝鲸智云工作台\"\nmsgstr \"BlueKing Backstage management\"\n\n#: templates/bkaccount/base.html:44\nmsgid \"img/logo/logo_user_01.png\"\nmsgstr \"img/logo/logo_user_01_en.png\"\n\n#: templates/bkaccount/base.html:46\nmsgid \"蓝鲸智云用户管理\"\nmsgstr \"BlueKing User Management\"\n\n#: templates/bkaccount/base.html:47\nmsgid \"img/logo/logo_user_02.png\"\nmsgstr \"img/logo/logo_user_02_en.png\"\n\n#: templates/bkaccount/base.html:68\nmsgid \"注销\"\nmsgstr \"Logout\"\n\n#: templates/bkaccount/base.html:83\nmsgid \"返回顶部\"\nmsgstr \"Back top\"\n\n#: templates/bkaccount/base.html:86\nmsgid \"返回底部\"\nmsgstr \"Back bottom\"\n\n#: templates/bkaccount/base.html:95 templates/login/login.html:51\nmsgid \"QQ咨询\"\nmsgstr \"QQ\"\n\n#: templates/bkaccount/base.html:96 templates/login/login.html:52\nmsgid \"蓝鲸论坛\"\nmsgstr \"BlueKing Forum\"\n\n#: templates/bkaccount/base.html:97 templates/login/login.html:53\nmsgid \"蓝鲸官网\"\nmsgstr \"Blueking Official\"\n\n#: templates/bkaccount/base.html:101\nmsgid \"蓝鲸智云 版权所有\"\nmsgstr \" \"\n\n#: templates/bkaccount/user_table.part:24\nmsgid \"操作\"\nmsgstr \"operation\"\n\n#: templates/bkaccount/user_table.part:62\nmsgid \"取消\"\nmsgstr \"Cancel\"\n\n#: templates/bkaccount/user_table.part:63\nmsgid \"保存\"\nmsgstr \"Save\"\n\n#: templates/bkaccount/user_table.part:64\nmsgid \"编辑\"\nmsgstr \"Edit\"\n\n#: templates/bkaccount/user_table.part:65\nmsgid \"重置密码\"\nmsgstr \"Reset Passowrd\"\n\n#: templates/bkaccount/user_table.part:67\nmsgid \"删除\"\nmsgstr \"Delete\"\n\n#: templates/bkaccount/user_table.part:73\nmsgid \"没有数据\"\nmsgstr \"No data\"\n\n#: templates/bkaccount/user_table.part:85\n#: templates/bkaccount/user_table.part:87\nmsgid \"上一页\"\nmsgstr \"Previous\"\n\n#: templates/bkaccount/user_table.part:109\n#: templates/bkaccount/user_table.part:111\nmsgid \"下一页\"\nmsgstr \"Next\"\n\n#: templates/bkaccount/users.html:11\nmsgid \"导出\"\nmsgstr \"Export\"\n\n#: templates/bkaccount/users.html:12\nmsgid \"批量导入\"\nmsgstr \"Batch import\"\n\n#: templates/bkaccount/users.html:13\nmsgid \"新增用户\"\nmsgstr \"Add user\"\n\n#: templates/bkaccount/users.html:15\nmsgid \"用户信息\"\nmsgstr \"User information\"\n\n#: templates/bkaccount/users.html:23\nmsgid \"查询：按用户名、中文名\"\nmsgstr \"search: by username, nickname\"\n\n#: templates/bkaccount/users.html:25\nmsgid \"所有用户\"\nmsgstr \"All users\"\n\n#: templates/bkaccount/users.html:32\nmsgid \"查询\"\nmsgstr \"Search\"\n\n#: templates/bkaccount/users.html:33\nmsgid \"新增用户的默认密码为：\"\nmsgstr \"Default password of new user is \"\n\n#: templates/bkaccount/users.html:38\nmsgid \"温馨提示:\"\nmsgstr \"Tips:\"\n\n#: templates/bkaccount/users.html:41\n#, fuzzy\n#| msgid \"\"\n#| \"<p><code>管理员</code>可以管理所有用户的信息，具有所有权限</p> <p><code>普\"\n#| \"通用户</code>可以管理自己的用户信息和访问 “桌面”</p> <p><code>开发者</\"\n#| \"code>可以管理自己的用户信息、访问 “桌面” 和访问 “开发者中心”</p> <p><code>\"\n#| \"职能化用户</code>在普通用户权限上还拥有SaaS应用 “标准运维” 的职能化权限</\"\n#| \"p> <p><code>审计员</code>在普通用户权限上还拥有SaaS应用 “标准运维”和作业平\"\n#| \"台的审计权限</p>\"\nmsgid \"\"\n\"<p><code>管理员</code>可以管理所有用户的信息，具有所有权限</p> <p><code>普通\"\n\"用户</code>可以管理自己的用户信息和访问 “工作台”</p> <p><code>开发者</code>可\"\n\"以管理自己的用户信息、访问 “工作台” 和访问 “开发者中心”</p> <p><code>职能化用\"\n\"户</code>在普通用户权限上还拥有SaaS应用 “标准运维” 的职能化权限</p> <p><code>\"\n\"审计员</code>在普通用户权限上还拥有SaaS应用 “标准运维”和作业平台的审计权限</\"\n\"p>\"\nmsgstr \"\"\n\"<p><code>Superuser</code>can manage the information of all users, provided \"\n\"with all permissions</p><p><code>Staff</code>can manage the user information \"\n\"of his own and access the blueking desktop</p><p><code>Developer</code>can \"\n\"manage the user information of his own, and can access the blueking desktop \"\n\"and developer center</p><p><code>Operator</code>owns the operation \"\n\"permission of SaaS APP - Standard OPS, in addition the permissions of common \"\n\"users</p><p><code>Auditor</code>owns the audit permission of SaaS APP - \"\n\"Standard OPS and Job System, in addition the permissions of common users</p>\"\n\n#: templates/bkaccount/users.html:55\nmsgid \"选择文件：\"\nmsgstr \"Select file:\"\n\n#: templates/bkaccount/users.html:57\nmsgid \"导入用户\"\nmsgstr \"Import user\"\n\n#: templates/bkaccount/users.html:58\nmsgid \"提交\"\nmsgstr \"Submit\"\n\n#: templates/bkaccount/users.html:61\nmsgid \"bk_user_import.xls\"\nmsgstr \"bk_user_import_en.xls\"\n\n#: templates/bkaccount/users.html:61\nmsgid \"点击下载EXCEL模板\"\nmsgstr \"Click to download EXCEL template\"\n\n#: templates/bkaccount/users.html:65\nmsgid \"注意：\"\nmsgstr \"Note:\"\n\n#: templates/bkaccount/users.html:66\n#, fuzzy, python-format\n#| msgid \"\"\n#| \"<p>1.请下载<a href=\\\"%(STATIC_URL)sbk_user_import.xls\\\">EXCEL模板</a>文件\"\n#| \"填写用户数据</p> <p>2.<code>用户名</code>为必填，包含数字和字母，长度在\"\n#| \"4-20个字符</p> <p>3.<code>用户名</code>为唯一标识，重复导入会覆盖已有数据\"\n#| \"</p> <p>4.导入用户默认密码为：<code>%(default_paasword)s</code></p> <p>5.\"\n#| \"文件后缀名必须为：<code>.xls</code>或<code>.xlsx</code> </p> <p>6.导入失败\"\n#| \"请检查EXCEL格式规范，或重新下载模板填写</p>\"\nmsgid \"\"\n\"<p>1.请下载<a href=\\\"%(STATIC_URL)sbk_user_import.xls\\\">EXCEL模板</a>文件填写\"\n\"用户数据</p> <p>2.<code>用户名</code>为必填，包含数字、字母、下划线和点，长度\"\n\"在4-20个字符</p> <p>3.<code>用户名</code>为唯一标识，重复导入会覆盖已有数据</\"\n\"p> <p>4.导入用户默认密码为：<code>%(default_paasword)s</code></p> <p>5.文件后\"\n\"缀名必须为：<code>.xls</code>或<code>.xlsx</code> </p> <p>6.导入失败请检查\"\n\"EXCEL格式规范，或重新下载模板填写</p>\"\nmsgstr \"\"\n\"<p>1. Please download <a href=\\\"%(STATIC_URL)sbk_user_import_en.xls\\\">EXCEL \"\n\"template file </a>and fill in user data</p><p>2.<code>Username</code> is \"\n\"required, including numbers and letters, the length of 4-20 characters</\"\n\"p><p>3.<code>Username</code> a unique identifier, duplicate import will \"\n\"overwrite existing data</p><p>4. Default passowrd of imported users: <code>\"\n\"%(default_paasword)s</code></p><p>5. The file extension must be <code>.xls</\"\n\"code> or <code>.xlsx</code> </p><p>6. If import failed, please check the \"\n\"EXCEL format specification, or re-download the template to fill in</p>\"\n\n#: templates/bkaccount/users.html:81\nmsgid \"新密码：\"\nmsgstr \"Password: \"\n\n#: templates/bkaccount/users.html:86 templates/bkaccount/users.html.py:92\nmsgid \"必填\"\nmsgstr \"Required\"\n\n#: templates/bkaccount/users.html:87\n#, python-format\nmsgid \"\"\n\"请输入密码，长度在8-20个字符，可支持数字、字母以及%(sp_char)s，必须保证密码包\"\n\"含大小写字母和数字 \"\nmsgstr \"\"\n\"Please enter the password, the length of 8-20 characters, support numbers, \"\n\"letters and %(sp_char)s, must ensure that the password contains uppercase \"\n\"letters and numbers\"\n\n#: templates/bkaccount/users.html:90\nmsgid \"确认密码\"\nmsgstr \"Comfirm\"\n\n#: templates/bkaccount/users.html:91\nmsgid \"再次输入密码\"\nmsgstr \"Input password again\"\n\n#: templates/csrf_failure.html:6 templates/csrf_failure.html.py:20\nmsgid \"CSRF验证失败\"\nmsgstr \"CSRF verification failed\"\n\n#: templates/csrf_failure.html:22\nmsgid \"\"\n\"您看到此消息是由于该站点在提交表单时需要一个CSRF cookie。此项是出于安全考虑，\"\n\"以确保您的浏览器没有被第三方劫持。\"\nmsgstr \"\"\n\"You see this message because the site needs a CSRF cookie when submitting \"\n\"the form. This is for security reasons to make sure your browser is not \"\n\"hijacked by a third party.\"\n\n#: templates/csrf_failure.html:23\nmsgid \"\"\n\"如果您已经设置浏览器禁用cookies，请重新启用，至少针对这个站点，全部HTTPS请\"\n\"求，或者同源请求（same-origin）启用cookies。\"\nmsgstr \"\"\n\"If you have set your browser to disable cookies, please enable it again, \"\n\"enabling cookies at least for this site, for all HTTPS requests, or same-\"\n\"origin requests.\"\n\n#: templates/csrf_failure.html:24\nmsgid \"重新登录\"\nmsgstr \"Login again\"\n\n#: templates/login/agreement.part:6\nmsgid \"\"\n\"<div class=\\\"title\\\">腾讯蓝鲸智云软件许可及服务协议</div> <div class=\"\n\"\\\"detail-list\\\"> <p class=\\\"title\\\">【首部及导言】</p> <p>欢迎您使用腾讯蓝鲸\"\n\"智云软件及服务。</p> <p>为使用腾讯蓝鲸智云软件（以下简称“本软件”）及服务，您\"\n\"应当阅读并遵守《腾讯蓝鲸智云软件许可及服务协议》（以下简称“本协议”），以及\"\n\"《腾讯服务协议》。请您务必审慎阅读、充分理解各条款内容，特别是免除或者限制责\"\n\"任的条款，以及开通或使用某项服务的单独协议，并选择接受或不接受。限制、免责条\"\n\"款可能以加粗形式提示您注意。</p> <p>除非您已阅读并接受本协议所有条款，否则您\"\n\"无权下载、安装或使用本软件及相关服务。您的下载、安装、使用、登录等行为即视为\"\n\"您已阅读并同意上述协议的约束。</p> <p class=\\\"title\\\">一、【协议的范围】</p> \"\n\"<p>1.1【协议适用主体范围】</p> <p>本协议是您与腾讯之间关于您下载、安装、使\"\n\"用、复制本软件，以及使用腾讯相关服务所订立的协议。</p> <p>1.2【协议关系及冲突\"\n\"条款】</p> <p>本协议被视为《腾讯服务协议》（链接地址：http://www.qq.com/\"\n\"contract.shtml，若链接地址变更的，则以变更后的链接地址所对应的内容为准；其他\"\n\"链接地址变更的情形，均适用前述约定。）的补充协议，是其不可分割的组成部分，与\"\n\"其构成统一整体。本协议与上述内容存在冲突的，以本协议为准。</p> <p>本协议内容\"\n\"同时包括腾讯可能不断发布的关于本服务的相关协议、业务规则等内容。上述内容一经\"\n\"正式发布，即为本协议不可分割的组成部分，您同样应当遵守。</p> <p class=\\\"title\"\n\"\\\">二、【关于本服务】</p> <p>2.1【本服务的内容】</p> <p>本服务内容是指蓝鲸智\"\n\"云产品以及相关服务，包括但不限于提供的基础运维平台（如“配置平台”、“作业平\"\n\"台”、“管控平台”等），PaaS服务（如“AppEngine”、“开发者中心”、“应用开发框\"\n\"架”、“组件”、“前端Magicbox”等），SaaS服务（如监控告警、持续集成、持续部署、辅\"\n\"助运营等），以及支撑上述服务的其他相关产品，为用户提供完善的基础服务设施，以\"\n\"使用户快速、便捷的创建、部署和管理应用的软件许可及服务（以下简称“本服务”）。\"\n\"</p> <p>2.2 【本服务的形式】</p> <p> 您使用本服务需要下载腾讯蓝鲸智云产品软\"\n\"件，对于这些软件，腾讯给予您一项个人的、不可转让及非排他性的许可。您仅可为访\"\n\"问或使用本服务的目的而使用这些软件及服务。</p> <p>2.3 【本服务许可的范围】</\"\n\"p> <p>2.3.1 腾讯给予您一项不可转让及非排他性的许可，以使用本软件。您可以为非\"\n\"商业目的在单一台终端设备上安装、使用、显示、运行本软件。</p> <p>2.3.2 您可以\"\n\"为使用本软件及服务的目的复制本软件的一个副本，仅用作备份。备份副本必须包含原\"\n\"软件中含有的所有著作权信息。</p> <p>2.3.3 本条及本协议其他条款未明示授权的其\"\n\"他一切权利仍由腾讯保留，您在行使这些权利时须另外取得腾讯的书面许可。腾讯如果\"\n\"未行使前述任何权利，并不构成对该权利的放弃。</p> <p class=\\\"title\\\">三、【软\"\n\"件的获取】</p> <p>3.1 您可以直接从腾讯的网站上获取本软件，也可以从得到腾讯授\"\n\"权的第三方获取。</p> <p>3.2 如果您从未经腾讯授权的第三方获取本软件或与本软件\"\n\"名称相同的安装程序，腾讯无法保证该软件能够正常使用，并对因此给您造成的损失不\"\n\"予负责。</p> <p class=\\\"title\\\">四、【软件的安装与卸载】</p> <p>4.1 腾讯可能\"\n\"为不同的需求开发了不同的软件版本，您应当根据实际情况选择下载合适的版本进行安\"\n\"装。</p> <p>4.2 下载安装程序后，您需要按照该程序提示的步骤正确安装。</p> \"\n\"<p>4.3 为提供更加优质、安全的服务，在本软件安装时腾讯可能推荐您安装其他软件，\"\n\"您可以选择安装或不安装。</p> <p>4.4 如果您不再需要使用本软件或者需要安装新版\"\n\"软件，可以自行卸载。如果您愿意帮助腾讯改进产品服务，请告知卸载的原因。</p> \"\n\"<p class=\\\"title\\\">五、【软件的更新】</p> <p>5.1 为了改善用户体验、完善服务内\"\n\"容，腾讯将不断努力开发新的服务，并为您不时提供软件更新（这些更新可能会采取软\"\n\"件替换、修改、功能强化、版本升级等形式）。</p> <p>5.2 为了保证本软件及服务的\"\n\"安全性和功能的一致性，腾讯有权不经向您特别通知而对软件进行更新，或者对软件的\"\n\"部分功能效果进行改变或限制。</p> <p>5.3 本软件新版本发布后，旧版本的软件可能\"\n\"无法使用。腾讯不保证旧版本软件继续可用及相应的客户服务，请您随时核对并下载最\"\n\"新版本。</p> <p class=\\\"title\\\">六、【用户个人信息保护】</p> <p>6.1保护用户个\"\n\"人信息是腾讯的一项基本原则。腾讯将按照本协议及《隐私政策》（链接地址：http://\"\n\"www.qq.com/privacy.htm）的规定收集、使用、储存和分享您的个人信息。本协议对个\"\n\"人信息保护规定的内容与上述《隐私政策》有相冲突的，及本协议对个人信息保护相关\"\n\"内容未作明确规定的，均应以《隐私政策》的内容为准。</p> <p>6.2腾讯将会采取合理\"\n\"的措施保护用户的个人信息。除法律法规规定的情形外，未经用户许可腾讯不会向第三\"\n\"方公开、透露用户个人信息。腾讯对相关信息采用专业加密存储与传输方式，保障用户\"\n\"个人信息的安全。</p> <p>6.3 您在注册帐号或使用本服务的过程中，可能需要提供一\"\n\"些必要的信息，若国家法律法规或政策有特殊规定的，您需要提供真实的身份信息。基\"\n\"于某些产品功能，腾讯会需要您提供使用该功能的非关联用户身份的相关信息，您同意\"\n\"腾讯基于上述目的收集上述信息，若您不提供或提供的信息不完整，则无法使用本服务\"\n\"或在使用过程中受到限制。</p> <p class=\\\"title\\\">七、【主权利义务条款】</p> \"\n\"<p>7.1 【帐号使用规范】</p> <p>7.1.1 用户有责任妥善保管注册帐户信息及帐户密码\"\n\"的安全，用户需要对注册帐户以及密码下的行为承担法律责任。用户同意在任何情况下\"\n\"不向他人透露帐户及密码信息。在您怀疑他人在使用您的帐号时，请您及时处理。</p> \"\n\"<p>7.1.2 管理员账号使用者，则可以创建多个账号，所创建的所有账号，由创建的人对\"\n\"账号承担保密的责任。</p> <p>7.1.3 非管理员账号使用者，应妥善保管账号密码的安\"\n\"全，若存在密码修改等事宜，应求助所创建账号的管理员。</p> <p>7.1.4 腾讯蓝鲸智\"\n\"云产品的账户密码安全，均由软件使用者承担相关法律责任。</p> <p>7.2【用户注意事\"\n\"项】</p> <p>7.2.1 您理解并同意：为了向您提供有效的服务，本软件会利用您终端的\"\n\"处理器和带宽等资源。本软件使用过程中可能产生数据流量的费用，用户需自行向运营\"\n\"商了解相关资费信息，并自行承担相关费用。</p> <p>7.2.2 您理解并同意：</p> \"\n\"<p>7.2.2.1 您在本软件的应用市场中添加的第三方软件，由第三方享有一切合法权利。\"\n\"因第三方软件引发的任何纠纷，由该第三方负责解决，腾讯不承担任何责任。 腾讯不对\"\n\"第三方软件或技术提供客服支持，若用户需要获取支持，请与该软件或技术提供商联\"\n\"系。</p> <p>7.2.2.2 本软件对涉及到的第三方软件的安装信息及升级信息等一切信息\"\n\"的安全性、合法性、兼容性、无害性等不承担任何担保及保证，由此而产生的任何法律\"\n\"纠纷，由该第三方负责解决，腾讯不承担任何责任。</p> <p>7.2.2.3 本软件所涉及到\"\n\"的任何第三方软件，其一切法律权利归第三方权利人所享有，用户下载、安装、使用第\"\n\"三方软件受该软件许可协议所约束。在第三方软件使用过程中所产生的任何纠纷，均由\"\n\"该第三方负责解决，腾讯不承担任何责任。</p> <p>7.2.2.4 本软件供用户用来下载、\"\n\"安装腾讯和/或第三方软件，并不能识别用户利用本软件下载、安装的第三方软件是否有\"\n\"合法来源。若您为有关软件的权利人，不愿本软件为您的软件提供用户下载、安装、使\"\n\"用的服务，可按本协议约定的联系方式联系我们（联系邮箱：【*】，联系电话：\"\n\"【*】），我们将会积极配合进行处理。</p> <p>7.2.3 您在使用本软件某一特定服务\"\n\"时，该服务可能会另有单独的协议、相关业务规则等（以下统称为“单独协议”），您在\"\n\"使用该项服务前请阅读并同意相关的单独协议。</p> <p>7.2.4 您理解并同意腾讯将会\"\n\"尽其商业上的合理努力保障您在本软件及服务中的数据存储安全，但是，腾讯并不能就\"\n\"此提供完全保证，包括但不限于以下情形：</p> <p>7.2.4.1 腾讯不对您在本软件及服\"\n\"务中相关数据的删除或储存失败负责；</p> <p>7.2.4.2 腾讯有权根据实际情况自行决\"\n\"定单个用户在本软件及服务中数据的最长储存期限，并在服务器上为其分配数据最大存\"\n\"储空间等。您可根据自己的需要自行备份本软件及服务中的相关数据；</p> \"\n\"<p>7.2.4.3 如果您停止使用本软件及服务或服务被终止或取消，腾讯可以从服务器上永\"\n\"久地删除您的数据。服务停止、终止或取消后，腾讯没有义务向您返还任何数据。</p> \"\n\"<p>7.3【第三方产品和服务】</p> <p>7.3.1 您在本软件的应用市场中添加第三方提供\"\n\"的产品或服务时，除遵守本协议约定外，还应遵守第三方的用户协议。腾讯和第三方对\"\n\"可能出现的纠纷在法律规定和约定的范围内各自承担责任。</p> <p>7.3.2 腾讯不保证\"\n\"您在应用市场中添加的第三方产品或服务的安全性、准确性、有效性及其他不确定的风\"\n\"险，由此若引发的任何争议及损害，与腾讯无关，腾讯不承担任何责任。</p> <p \"\n\"class=\\\"title\\\">八、【用户行为规范】</p> <p>8.1【信息内容规范】</p> <p>8.1.1 \"\n\"本条所述信息内容是指用户使用本软件及服务过程中所制作、复制、发布、传播的任何\"\n\"内容。</p> <p>8.1.2 您理解并同意，腾讯蓝鲸智云一直致力于为用户提供完善的基础\"\n\"服务设施，您不得利用本软件及服务制作、复制、发布、传播如下干扰腾讯蓝鲸智云正\"\n\"常运营，以及侵犯其他用户或第三方合法权益的内容，包括但不限于：</p> \"\n\"<p>8.1.2.1 发布、传送、传播、储存违反国家法律、危害国家安全统一、社会稳定、公\"\n\"序良俗、社会公德以及侮辱、诽谤、淫秽或含有任何性或性暗示的、暴力的内容；</p> \"\n\"<p>8.1.2.2 发布、传送、传播、储存侵害他人名誉权、肖像权、知识产权、商业秘密等\"\n\"合法权利的内容；</p> <p>8.1.2.3 涉及他人隐私、个人信息或资料的；</p> \"\n\"<p>8.1.2.4 发表、传送、传播骚扰、广告信息及垃圾信息；</p> <p>8.1.2.5 其他违反\"\n\"法律法规、政策及公序良俗、社会公德或干扰【腾讯蓝鲸智云】正常运营和侵犯其他用\"\n\"户或第三方合法权益内容的信息。</p> <p>8.2【软件使用规范】</p> <p>除非法律允许\"\n\"或腾讯书面许可，您使用本软件过程中不得从事下列行为：</p> <p>8.2.1 删除本软件\"\n\"及其副本上关于著作权的信息；</p> <p>8.2.2 对本软件进行反向工程、反向汇编、反\"\n\"向编译，或者以其他方式尝试发现本软件的源代码；</p> <p>8.2.3 对腾讯拥有知识产\"\n\"权的内容进行使用、出租、出借、复制、修改、链接、转载、汇编、发表、出版、建立\"\n\"镜像站点等；</p> <p>8.2.4 对本软件或者本软件运行过程中释放到任何终端内存中的\"\n\"数据、软件运行过程中客户端与服务器端的交互数据，以及本软件运行所必需的系统数\"\n\"据，进行复制、修改、 增加、删除、挂接运行或创作任何衍生作品，形式包括但不限于\"\n\"使用插件、外挂或非腾讯经授权的第三方工具/服务接入本软件和相关系统；</p> \"\n\"<p>8.2.5 通过修改或伪造软件运行中的指令、数据，增加、删减、变动软件的功能或运\"\n\"行效果，或者将用于上述用途的软件、方法进行运营或向公众传播，无论这些行为是否\"\n\"为商业目的；</p> <p>8.2.6 通过非腾讯开发、授权的第三方软件、插件、外挂、系\"\n\"统，登录或使用腾讯软件及服务，或制作、发布、传播上述工具；</p> <p>8.2.7 自行\"\n\"或者授权他人、第三方软件对本软件及其组件、模块、数据进行干扰；</p> <p>8.2.8 \"\n\"其他未经腾讯明示授权的行为。</p> <p>8.3【服务运营规范】</p> <p>除非法律允许或\"\n\"腾讯书面许可，您使用本服务过程中不得从事下列行为：</p> <p>8.3.1 提交、发布虚\"\n\"假信息，或冒充、利用他人名义的；</p> <p>8.3.2 诱导其他用户点击链接页面或分享\"\n\"信息的；</p> <p>8.3.3 虚构事实、隐瞒真相以误导、欺骗他人的；</p> <p>8.3.4 侵\"\n\"害他人名誉权、肖像权、知识产权、商业秘密等合法权利的；</p> <p>8.3.5 未经腾讯\"\n\"书面许可利用帐号和任何功能，以及第三方运营平台进行推广或互相推广的；</p> \"\n\"<p>8.3.6 利用帐号或本软件及服务从事任何违法犯罪活动的；</p> <p>8.3.7 制作、发\"\n\"布与以上行为相关的方法、工具，或对此类方法、工具进行运营或传播，无论这些行为\"\n\"是否为商业目的；</p> <p>8.3.8 其他违反法律法规规定、侵犯其他用户合法权益、干\"\n\"扰产品正常运营或腾讯未明示授权的行为。</p> <p>8.4 【对自己行为负责】</p> <p>\"\n\"您充分了解并同意，您必须为自己注册帐号下的一切行为负责，包括您所发表的任何内\"\n\"容以及由此产生的任何后果。您应对本服务中的内容自行加以判断，并承担因使用内容\"\n\"而引起的所有风险，包括因对内容的正确性、完整性或实用性的依赖而产生的风险。腾\"\n\"讯无法且不会对因前述风险而导致的任何损失或损害承担责任。</p> <p>8.5【违约处\"\n\"理】</p> <p>8.5.1 如果腾讯发现或收到他人举报或投诉用户违反本协议约定的，腾讯\"\n\"有权不经通知随时对相关内容进行删除，并视行为情节对违规帐号处以包括但不限于警\"\n\"告、限制或禁止使用全部或部分功能、帐号封禁直至注销的处罚，并公告处理结果。</\"\n\"p> <p>8.5.2 您理解并同意，腾讯有权依合理判断对违反有关法律法规或本协议规定的\"\n\"行为进行处罚，对违法违规的任何用户采取适当的法律行动，并依据法律法规保存有关\"\n\"信息向有关部门报告等，用户应独自承担由此而产生的一切法律责任。</p> <p>8.5.3 \"\n\"您理解并同意，因您违反本协议或相关服务条款的规定，导致或产生第三方主张的任何\"\n\"索赔、要求或损失，您应当独立承担责任；腾讯因此遭受损失的，您也应当一并赔偿。\"\n\"</p> <p class=\\\"title\\\">九、【知识产权声明】</p> <p>9.1 腾讯是本软件的知识产\"\n\"权权利人。本软件的一切著作权、商标权、专利权、商业秘密等知识产权，以及与本软\"\n\"件相关的所有信息内容（包括但不限于文字、图片、音频、视频、图表、界面设计、版\"\n\"面框架、有关数据或电子文档等）均受中华人民共和国法律法规和相应的国际条约保\"\n\"护，腾讯享有上述知识产权。</p> <p>9.2 未经腾讯书面同意，您不得为任何商业或非\"\n\"商业目的自行或许可任何第三方实施、利用、转让上述知识产权，腾讯保留追究上述行\"\n\"为法律责任的权利。</p> <p class=\\\"title\\\">十、【终端安全责任】</p> <p>10.1 您\"\n\"理解并同意，本软件同大多数互联网软件一样，可能会受多种因素影响，包括但不限于\"\n\"用户原因、网络服务质量、社会环境等；也可能会受各种安全问题的侵扰，包括但不限\"\n\"于他人非法利用用户资料，进行现实中的骚扰；用户下载安装的其他软件或访问的其他\"\n\"网站中可能含有病毒、木马程序或其他恶意程序，威胁您的终端设备信息和数据安全，\"\n\"继而影响本软件的正常使用等。因此，您应加强信息安全及个人信息的保护意识，注意\"\n\"密码保护，以免遭受损失。</p> <p>10.2 您不得制作、发布、使用、传播用于窃取其他\"\n\"用户帐号及个人信息、财产的恶意程序。</p> <p>10.3 维护软件安全与正常使用是腾讯\"\n\"和您的共同责任，腾讯将按照行业标准合理审慎地采取必要技术措施保护您的终端设备\"\n\"信息和数据安全，但是您承认和同意腾讯并不能就此提供完全保证。</p> <p class=\"\n\"\\\"title\\\">十一、【第三方软件或技术】</p> <p>11.1 本软件可能会使用第三方软件或\"\n\"技术（包括本软件可能使用的开源代码和公共领域代码等，下同），这种使用已经获得\"\n\"合法授权。</p> <p>11.2 本软件如果使用了第三方的软件或技术，腾讯将按照相关法规\"\n\"或约定，对相关的协议或其他文件，可能通过本协议附件、在本软件安装包特定文件夹\"\n\"中打包等形式进行展示，它们可能会以“软件使用许可协议”、“授权协议”、“开源代码许\"\n\"可证”或其他形式来表达。前述通过各种形式展现的相关协议或其他文件，均是本协议不\"\n\"可分割的组成部分，与本协议具有同等的法律效力，您应当遵守这些要求。如果您没有\"\n\"遵守这些要求，该第三方或者国家机关可能会对您提起诉讼、罚款或采取其他制裁措\"\n\"施，并要求腾讯给予协助，您应当自行承担法律责任。</p> <p>11.3 如因本软件使用的\"\n\"第三方软件或技术引发的任何纠纷，应由该第三方负责解决，腾讯不承担任何责任。腾\"\n\"讯不对第三方软件或技术提供客服支持，若您需要获取支持，请与第三方联系。</p> \"\n\"<p class=\\\"title\\\">十二、【其他】</p> <p>12.1 您使用本软件即视为您已阅读并同\"\n\"意受本协议的约束。腾讯有权在必要时修改本协议条款。您可以在本软件的最新版本中\"\n\"查阅相关协议条款。本协议条款变更后，如果您继续使用本软件，即视为您已接受修改\"\n\"后的协议。如果您不接受修改后的协议，应当停止使用本软件。</p> <p>12.2 本协议签\"\n\"订地为中华人民共和国广东省深圳市南山区。</p> <p>12.3 本协议的成立、生效、履\"\n\"行、解释及纠纷解决，适用中华人民共和国大陆地区法律（不包括冲突法）。</p> \"\n\"<p>12.4 若您和腾讯之间发生任何纠纷或争议，首先应友好协商解决；协商不成的，您\"\n\"同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。</p> <p>12.5 本协议所\"\n\"有条款的标题仅为阅读方便，本身并无实际涵义，不能作为本协议涵义解释的依据。</\"\n\"p> <p>12.6 本协议条款无论因何种原因部分无效或不可执行，其余条款仍有效，对双方\"\n\"具有约束力。</p> <p>12.7 本协议可能由多种语言书就。如果存在中文版本与其他语言\"\n\"的版本相冲突的地方，以中文版本为准。（正文完）</p> <p>腾讯公司</p> </div>\"\nmsgstr \"\"\n\"<div class=\\\"title\\\">Tencent BlueKing Software Licensing and Service \"\n\"Agreement</div><div class=\\\"detail-list\\\">    <p class=\\\"title\\\">Preamble</\"\n\"p>    <p>Welcome to use Tencent BlueKing Software and relevant services!</\"\n\"p>    <p>You must read and comply with the Tencent BlueKing Software \"\n\"Licensing and Service Agreement (hereinafter referred to as the \\\"Agreement\"\n\"\\\") and Tencent Service Agreement in order to use Tencent BlueKing Software \"\n\"(hereinafter referred to as the \\\"Software\\\") and relevant services. Please \"\n\"carefully read and fully understand the content of each term of the \"\n\"Agreement, in particular the terms with respect to exemption or limitation \"\n\"of liability, and any separate agreements relating to activating or using \"\n\"some specific services, and choose to accept them or not. Terms relating to \"\n\"exemption or limitation of liability may be marked in bold form for your \"\n\"attention.</p>    <p>You may not download, install or use the Software and \"\n\"related services unless you have read and accepted all the terms of this \"\n\"Agreement. Your act of downloading, installation, use and logging of the \"\n\"Software shall be deemed that you have read and agreed to be bound by the \"\n\"Agreement.</p>    <p class=\\\"title\\\">1.  Scope of the Agreement</p>    \"\n\"<p>1.1.    Applicable Parties</p>    <p>This Agreement is entered into by \"\n\"and between you and Tencent regarding your downloading, installing, using \"\n\"and copying of the Software and your act of using related services of \"\n\"Tencent.</p>    <p>1.2.    Agreements Relationship and Conflicting Terms</\"\n\"p>    <p>This Agreement shall be taken as a supplementary agreement to the \"\n\"Tencent Service Agreement (weblink: http://www.qq.com/contract.shtml. If the \"\n\"web link addresses change, the content directed by the changed link address \"\n\"shall apply. In the event of the other changes to other web link addresses \"\n\"as mentioned in this Agreement, the foregoing clause shall apply as well), \"\n\"and shall forms an integral part of such agreement and constitute one and \"\n\"the same document together with such agreement. In the event of any \"\n\"inconsistency between this Agreement and the Tencent Service Agreement, this \"\n\"Agreement shall prevail.</p>    <p>This Agreement also includes relevant \"\n\"agreements, business rules and other contents regarding the Services that \"\n\"Tencent may publish from time to time, which, immediately upon being \"\n\"officially published, will constitute an integral part of this Agreement and \"\n\"should also be complied by you.</p>    <p class=\\\"title\\\">2.  The Services</\"\n\"p>    <p>2.1.    Contents of the Services</p>    <p>The services referred \"\n\"herein refer to BlueKing products and related services, including but not \"\n\"limited to the basic operation and maintenance platform (such as \"\n\"\\\"configuration platform\\\", \\\"operating platform\\\", \\\"control platform\\\"), \"\n\"PaaS services (such as \\\"AppEngine\\\" , Developer Center, Application \"\n\"Development Framework, Modules, Front-end Magicbox), SaaS services (such as \"\n\"monitoring alarms, continuous integration, continuous deployment, ancillary \"\n\"operations), as well as other related products that support the above \"\n\"services , and the software licenses and services that provide users with \"\n\"complete basic services facilities to enable users to create, deploy and \"\n\"manage applications in a quick and convenient manner (hereinafter referred \"\n\"to as the \\\"Services\\\").</p>    <p>2.2.    Form of the Services</p>    \"\n\"<p>You need to download BlueKing software to use the Services. Tencent \"\n\"grants you a non-transferable and non-exclusive license for your personal \"\n\"use of the Software. You may only use the software and services for the \"\n\"purpose of accessing to or using the Services.</p>    <p>2.3.    Scope of \"\n\"License of the Services</p>    <p>2.3.1.  Tencent grants you a non-\"\n\"transferable and non-exclusive license to use the Software. You may install, \"\n\"use, display and run the Software for a non-commercial purpose on a single \"\n\"terminal device.</p>    <p>2.3.2.  You may make one copy of the Software for \"\n\"the purpose of using the Software and Services, and shall only use the copy \"\n\"as a backup. The copy must contain all copyright information contained in \"\n\"the original Software.</p>    <p>2.3.3.  Tencent reserves all other rights \"\n\"that are not expressly authorized by this Article 2.3 and other terms of \"\n\"this Agreement. You shall separately obtain Tencent's written consent for \"\n\"exercise of such unauthorized rights. Tencent’s failure to exercise any of \"\n\"the above-mentioned rights does not constitute a waiver of such rights.</\"\n\"p>    <p class=\\\"title\\\">3.  Acquisition of the Software</p>    <p>3.1.    \"\n\"You can obtain the Software directly from Tencent's website or from a third \"\n\"party authorized by Tencent.</p>    <p>3.2.    If you obtain the Software or \"\n\"any installation program with the name same as this Software from any third \"\n\"party without authorization by Tencent, Tencent cannot guarantee that such \"\n\"software will operate properly and therefore takes no responsibility for any \"\n\"loss caused to you due to the use of such software.</p>    <p class=\\\"title\"\n\"\\\">4.  Installation and Uninstallation of the Software</p>    <p>4.1.    \"\n\"Tencent may develop different versions of the Software for different \"\n\"terminal devices. You should choose an appropriate version for installation \"\n\"according to the actual condition.</p>    <p>4.2.    After downloading the \"\n\"installation program, you need to follow the steps suggested by the program \"\n\"to achieve correct installation.</p>    <p>4.3.    In order to provide a \"\n\"quality and secure service, Tencent may recommend other software to you \"\n\"during your installation of the Software, which you can choose to install or \"\n\"not.</p>    <p>4.4.    If you no longer need to use the Software, or need to \"\n\"install the new version of the Software, you can uninstall the Software. If \"\n\"you want to help Tencent improve the product and services, please inform us \"\n\"of the reasons for uninstallation.</p>    <p class=\\\"title\\\">5.  Software \"\n\"Update</p>    <p>5.1.    In order to improve user experience and the \"\n\"contents of service, Tencent will continue to develop new services and from \"\n\"time to time provide you with software updates (in the form of software \"\n\"replacement, modification, feature enhancement and version upgrade, etc.).</\"\n\"p>    <p>5.2.    In order to ensure the security and consistency of \"\n\"functionality of the Software and Services, Tencent reserves the right to \"\n\"update the Software, or change or restrict partial functionality of the \"\n\"Software without giving you any special notice.</p>    <p>5.3.    After the \"\n\"new version of the Software is released, older versions of the Software may \"\n\"not be available. In that case, Tencent does not guarantee that the old \"\n\"versions of the Software and corresponding customer services continue to be \"\n\"available. Please check and download the latest version at any time.</p>    \"\n\"<p class=\\\"title\\\">6.  Protection of the User’s Personal Information</p>    \"\n\"<p>6.1.    Protecting user's personal information is a basic principle \"\n\"upheld by Tencent. Tencent will collect, use, store and share your personal \"\n\"information in accordance with this Agreement and the Privacy Policy (web \"\n\"link address: http://www.qq.com/privacy.htm). In case of any inconsistency \"\n\"and discrepancy between the provisions of this Agreement on the protection \"\n\"of personal information and those of the Privacy Policy, or this Agreement \"\n\"fails to clearly provide any aspect of personal information protection, the \"\n\"relevant provisions of Privacy Policy shall prevail.</p>    <p>6.2.    \"\n\"Tencent will take reasonable measures to protect the user's personal \"\n\"information. Unless otherwise provided by laws and regulations, Tencent will \"\n\"not make public or disclose the user's personal information to any third \"\n\"party without permission of the users. Tencent adopts professional \"\n\"encryption storage and transmission methods for related information, in \"\n\"order to protect the user's personal information.</p>    <p>6.3.    You may \"\n\"need to provide certain necessary information in order to register an \"\n\"account or to use the Services. And you may need to provide real identity \"\n\"information if that is a requirement provided by the laws, regulations or \"\n\"policies. Based on certain product features, Tencent may require you to \"\n\"provide identity information of non-affiliated users who use relevant \"\n\"features. You permit Tencent to collect such information for such purposes \"\n\"and acknowledge that you will not be able to use the Services or your use of \"\n\"the Services may be subject to certain restrictions if you fail to provide \"\n\"or provide incomplete information.</p>    <p class=\\\"title\\\">7.  Rights and \"\n\"Obligations</p>    <p>7.1.    Account Use Rules</p>    <p>7.1.1.  Each user \"\n\"shall be responsible for properly safekeeping its registered account \"\n\"information and account password and shall be liable for any acts taken \"\n\"under its registered account and the password. Users agree that they shall \"\n\"not disclose account and password information to others under any \"\n\"circumstances. When you suspect that others are using your account, please \"\n\"deal with the situation promptly.</p>    <p>7.1.2.  The user of the \"\n\"administrator account can create more than one accounts and shall be \"\n\"responsible for properly safekeeping the information of all accounts created \"\n\"by it.</p>    <p>7.1.3.  The user of non-administrator account should \"\n\"properly safekeeping the account password and should ask help from the \"\n\"account administrator if it intends to change the password.</p>    \"\n\"<p>7.1.4.  Legal liabilities related to or in connection with account \"\n\"password safety of Tencent BlueKing products shall be borne by the software \"\n\"users.</p>    <p>7.2.    Cautions</p>    <p>7.2.1.  You understand and agree \"\n\"that the Software will use the processor, bandwidth and other resources of \"\n\"your terminal device in order to provide you with effective services. The \"\n\"costs of data traffic may incur during use of the Software, and the user \"\n\"shall consult the telecommunication operator about the fee rate and bear \"\n\"relevant costs on its own.</p>    <p>7.2.2.  You understand and agree:</\"\n\"p>    <p>7.2.2.1.    All legal rights related to the third-party software \"\n\"you acquire from o the application stores of the Software shall be owned the \"\n\"third party. Any dispute arising from third party software shall be resolved \"\n\"by the third party in question, and Tencent does not assume any \"\n\"responsibility. Tencent does not provide customer service support for any \"\n\"third party software or technology. If you need any support, please contact \"\n\"the third party in question.</p>    <p>7.2.2.2.    The Software contains no \"\n\"guarantee for the safety, legality, compatibility and harmlessness of the \"\n\"information of the related third party software, including the installation \"\n\"information and upgrade information. Any dispute arising hereunder shall be \"\n\"resolved by the third party in question, and Tencent does not assume any \"\n\"responsibility.</p>    <p>7.2.2.3.    All legal rights regarding any third \"\n\"party software related to the Software are the property of the third party. \"\n\"The download, installation and use of the third party software shall be \"\n\"subject to the software license agreement of such third party software. Any \"\n\"dispute arising from third party software shall be resolved by the third \"\n\"party in question, and Tencent does not assume any responsibility.  </p>    \"\n\"<p>7.2.2.4.    This Software will be used by users to download and install \"\n\"Tencent and / or third party software. However, we cannot identify whether \"\n\"the third party software that users download or install by using this \"\n\"Software are properly licensed. If you are the owner of related third party \"\n\"software and do not want your software to be downloaded, installed and used \"\n\"through this Software, you may contact us via the contact details listed in \"\n\"this Agreement（Contact Email [*], Contact Phone Number [*]）. We will deal \"\n\"with relevant situation in an active manner.</p>    <p>7.2.3.  When you use \"\n\"a particular service of this Software, the service may be governed by \"\n\"separate agreements and related business rules, etc. (hereinafter \"\n\"collectively referred to as the \\\"Separate Agreement\\\"). Please read and \"\n\"agree to relevant Separate Agreement before you use the service.</p>    \"\n\"<p>7.2.4.  You understand and agree that Tencent will make its commercially \"\n\"reasonable efforts to maintain your data stored in the Software and Services \"\n\"safe, but Tencent cannot guarantee that your data is absolutely safe, \"\n\"especially:</p>    <p>7.2.4.1.    Tencent is not responsible for deletion or \"\n\"failure of storage of relevant data in the Software and Services;</p>    \"\n\"<p>7.2.4.2.    Tencent is entitled to decide at its discretion the longest \"\n\"period of data storage in the Software and Services for each user according \"\n\"to the actual situation, and allocate the maximum space in the server for \"\n\"data storage of each user, etc. You can back up relevant data in the \"\n\"Software and Services on your own according to your own needs;</p>    \"\n\"<p>7.2.4.3.    If you stop using the Software and Services or the Services \"\n\"are terminated or canceled, Tencent can permanently delete your data from \"\n\"the server. When the Services are stopped, terminated or canceled, Tencent \"\n\"is not obligated to return any data to you.</p>    <p>7.3.    Third-Party \"\n\"Products and Services</p>    <p>7.3.1.  When you acquire products or \"\n\"services provided by any third party from the application store of this \"\n\"Software, you shall comply with the user agreement of the third party in \"\n\"addition to this Agreement. Tencent and the third party shall assume their \"\n\"respective responsibilities separately for any possible dispute between them \"\n\"within the scope prescribed by laws and stipulated by agreements.</p>    \"\n\"<p>7.3.2.  Tencent does not guarantee the security, accuracy, effectiveness \"\n\"and other uncertain risks of products or services provided by any third \"\n\"party which you acquire from the application store of this Software. Any \"\n\"dispute or damage arises therefrom is irrelevant to Tencent, Tencent \"\n\"therefore will not assume any responsibility.</p>    <p class=\\\"title\\\">8.  \"\n\"Users’ Codes of Conduct</p>    <p>8.1.    Information Content Specification</\"\n\"p>    <p>8.1.1.  Information contents contained in this Article refer to any \"\n\"content produced, copied, published or transmitted by users during the use \"\n\"of the Software and Services.</p>    <p>8.1.2.  You understand and agree \"\n\"that Tencent BlueKing has always been committed to providing users with \"\n\"perfect basic service facilities. You shall not use the Software and \"\n\"Services to produce, copy, publish, or transmit the contents interfering \"\n\"with normal operation of BlueKing or infringing lawful rights and interests \"\n\"of other users or third parties, including but not limited to the following:\"\n\"</p>    <p>8.1.2.1.    You may not publish, transmit, spread, and store \"\n\"contents which violate national laws and regulations, endanger national \"\n\"security and unity, undermine social stability, undermine public order and \"\n\"social morality, insult or slander others, disseminate obscenity or contain \"\n\"any sexual or sexual connotation or violent contents;</p>    <p>8.1.2.2.    \"\n\"You may not publish, transmit, spread, and store contents infringing \"\n\"legitimate rights of others, including the right of reputation, right of \"\n\"portrait, intellectual property right and trade secrets;</p>    \"\n\"<p>8.1.2.3.    You may not publish, transmit, spread, and store contents \"\n\"relating to others’ privacy, personal information or materials;</p>    \"\n\"<p>8.1.2.4.    You may not publish, transmit and spread harassment and \"\n\"advertising information and spam; </p>    <p>8.1.2.5.    Other information \"\n\"that violates laws, regulations, policies, public order and social morality, \"\n\"or interferes with the normal operation of Tencent BlueKing or infringes the \"\n\"legitimate rights and interests of other users or third parties, which \"\n\"information is also prohibited to published, transmit and spread.</p>    \"\n\"<p>8.2.    Software Usage Specification</p>    <p>Unless permitted by law or \"\n\"with Tencent's written consent, you may not engage in any of the following \"\n\"acts in the course of your use of the Software:</p>    <p>8.2.1.  Delete the \"\n\"copyright information on the Software and its copies;</p>    <p>8.2.2.  \"\n\"Conduct reverse engineering, reverse assembly and reverse compiling on the \"\n\"Software, or other attempt to find the source code of the Software;</p>    \"\n\"<p>8.2.3.  Use, rent, lend, copy, modify, link, reprint, compile, release, \"\n\"publish or establish a mirror site or through other means utilize the \"\n\"contents of intellectual property rights that Tencent owns;</p>    \"\n\"<p>8.2.4.  Copy, modify, add, delete and mount the data stored in any \"\n\"terminal memory by the Software or during the operation of the Software, the \"\n\"interactive data between the client and the server during operation of the \"\n\"Software, and the system data necessary for operation of the Software, or \"\n\"create any derivative works by using means such as plug-ins, add-ons or \"\n\"third-party tools/services unauthorized by Tencent to access the Software \"\n\"and related systems;</p>    <p>8.2.5.  Add, delete, change the functions or \"\n\"operating effects of the Software by modifying or forging the instructions \"\n\"and data of the Software, or operate or disseminate to the public the \"\n\"software and methods used for the purposes described above, regardless \"\n\"whether such acts are for commercial purposes or not;</p>    <p>8.2.6.  \"\n\"Login or use Tencent Software and Services through any third-party software, \"\n\"plug-in, add-on or system that are not developed or authorized by Tencent, \"\n\"or produce, publish, disseminate those tools;</p>    <p>8.2.7.  Interfere \"\n\"with the Software and its components, modules and data on your own or by \"\n\"authorizing others or third-party software to do so;</p>    <p>8.2.8.  Other \"\n\"acts not expressly authorized by Tencent.</p>    <p>8.3.    Service \"\n\"Operation Requirements</p>    <p>Unless permitted by law or with Tencent's \"\n\"written consent, you may not engage in the following acts in the course of \"\n\"your use of the Services:</p>    <p>8.3.1.  Submit and publish false \"\n\"information, or impersonate others or use the name of others;</p>    \"\n\"<p>8.3.2.  Induce other users to click on the links or share information;</\"\n\"p>    <p>8.3.3.  Fabricate facts or conceal the truth to mislead or deceive \"\n\"others;</p>    <p>8.3.4.  Infringe legitimate rights of others including \"\n\"right of reputation, right of portrait, intellectual property right and \"\n\"trade secrets;</p>    <p>8.3.5.  Utilize any account, any function and any \"\n\"third-party operating platform to conduct promotion or mutual promotion \"\n\"without Tencent’s written consent;</p>    <p>8.3.6.  Utilize any account or \"\n\"the Software and Services to engage in any illegal and criminal activities;</\"\n\"p>    <p>8.3.7.  Produce or publish the methods or tools related to the \"\n\"above-mentioned acts, or operate or disseminate such methods or tools, \"\n\"regardless whether such acts are for commercial purposes or not;</p>    \"\n\"<p>8.3.8.  Other acts violating laws and regulations, infringing the \"\n\"legitimate rights and interests of other users, interfering with normal \"\n\"operation of the products or not expressly authorized by Tencent.</p>    \"\n\"<p>8.4.    Be Accountable for Your Own Acts</p>    <p>You fully understand \"\n\"and agree that you must be responsible for all acts under your account, \"\n\"including any content you published and any consequences arising therefrom. \"\n\"You shall evaluate the contents of the Service by yourself and assume all \"\n\"risks arising from the use of the contents, including the risks arising from \"\n\"reliance on the correctness, completeness or usefulness of the contents. \"\n\"Tencent cannot and will not be responsible for any loss or damage caused by \"\n\"the foregoing risks.</p>    <p>8.5.    Treatment for Breach of Contract</\"\n\"p>    <p>8.5.1.  If Tencent finds or receives any report or complaint from \"\n\"others against users on violation to the Agreement, Tencent is entitled to \"\n\"remove relevant contents at any time without sending you any notice, impose \"\n\"punishment such as warning, restriction or prohibition of the use of some or \"\n\"all of the functions, banning or cancellation of the account, and announce \"\n\"the results of treatment to the public regarding the violating account.</\"\n\"p>    <p>8.5.2.  You understand and agree that Tencent is entitled to, by \"\n\"using its own reasonable discretion, punish any action that violates \"\n\"relevant laws and regulations or provisions of the Agreement, take \"\n\"appropriate legal action against any user in violation of any laws and \"\n\"regulations, and preserve relevant information in accordance with related \"\n\"laws and regulations and report to relevant departments, etc. Users shall \"\n\"bear all the legal responsibilities arising therefrom.</p>    <p>8.5.3.  You \"\n\"understand and agree that you shall be solely liable for any third party \"\n\"claims, requests or losses arising out of or in connection with your breach \"\n\"of the provisions of the Agreement or relevant terms of the Services. You \"\n\"shall also compensation Tencent for any losses Tencent has suffered which \"\n\"can be attributed to your violation.</p>    <p class=\\\"title\\\">9.  Statement \"\n\"on Intellectual Property Rights</p>    <p>9.1.    Tencent is the holder of \"\n\"the intellectual property rights of the Software. All intellectual property \"\n\"rights related to the Software, including copyright, trademark, patent and \"\n\"trade secrets and all information related to this Software (including but \"\n\"not limited to text, images, audio, video, graphics, interface design, \"\n\"layout framework, relevant data or electronic documents) are protected by \"\n\"laws and regulations of the People's Republic of China and corresponding \"\n\"international treaties. Tencent enjoys the above intellectual property \"\n\"rights.</p>    <p>9.2.    You may not or permit any third party to \"\n\"implement, use, or transfer any of the above intellectual property rights \"\n\"for any commercial or non-commercial purpose without the prior written \"\n\"consent of Tencent. Tencent reserves all the rights to hold you liable for \"\n\"the abovementioned actions.</p>    <p class=\\\"title\\\">10. Responsibility of \"\n\"Terminal Security</p>    <p>10.1.   You understand and agree that the \"\n\"Software, like most Internet software, may be affected by a variety of \"\n\"factors including but not limited to users’ reasons, network service quality \"\n\"and social environment. It also may be interfered by various security \"\n\"issues, including but not limited to illegal use of user information by \"\n\"others to conduct harassment in real life. Other software downloaded and \"\n\"installed and websites visited by the user may contain viruses, Trojans or \"\n\"other malicious programs, which may endanger the security of information and \"\n\"data in your terminal device and in turn affect the normal use of the \"\n\"Software. Therefore, you should strengthen the awareness of information \"\n\"security and protection of personal information, and pay attention to \"\n\"password protection, to avoid any loss.</p>    <p>10.2.   You shall not \"\n\"produce, publish, use, and disseminate any malicious program which can be \"\n\"used to steal other users’ accounts, personal information, or property.</\"\n\"p>    <p>10.3.   It is the common responsibility of you and Tencent to \"\n\"maintain software security and normal use. Tencent will take reasonably and \"\n\"prudently technical measures to protect information and data security of \"\n\"your terminal device in accordance with industry standards, but you \"\n\"acknowledge and agree that Tencent cannot therefore provide a complete \"\n\"guarantee.</p>    <p class=\\\"title\\\">11. Third-Party Software or Technology</\"\n\"p>    <p>11.1.   The Software may use third-party software or technology \"\n\"(including the open source code and public domain code that may be used for \"\n\"the Software, similarly hereinafter), and such use has been legally \"\n\"authorized.</p>    <p>11.2.   If any third-party software or technology is \"\n\"adopted for the Software, Tencent will demonstrate the relevant agreements \"\n\"or other documents in accordance with relevant laws and regulations through \"\n\"annexes of this Agreement, a package in a specific folder of the \"\n\"installation package of the Software or other forms, which may be expressed \"\n\"as \\\"Software License Agreement\\\", \\\"License Agreement\\\", \\\"Open Source \"\n\"License\\\" or other forms. The foregoing relevant agreements and other \"\n\"documents presented through various forms are an integral part of this \"\n\"Agreement and shall have the same legal effect as this Agreement. You shall \"\n\"comply with all these requirements. If you fail to do so, such third party \"\n\"or competent authorities may file a lawsuit, impose fines, or take other \"\n\"sanctions against you and require Tencent to provide assistance. You shall \"\n\"be solely liable for relevant legal responsibilities.</p>    <p>11.3.   Any \"\n\"dispute arising from a third party software or technology adopted by the \"\n\"Software should be resolved by the third party in question, and Tencent does \"\n\"not assume any responsibility. Tencent does not provide customer service \"\n\"support for any third-party software or technology. If you need any support, \"\n\"please contact the third party in question.</p>    <p class=\\\"title\\\">12. \"\n\"Miscellaneous</p>    <p>12.1.   Your use of the Software shall be deemed \"\n\"that you have read and agreed to be bound by this Agreement. Tencent \"\n\"reserves the right to modify the terms of this Agreement when necessary. You \"\n\"can refer to the terms of the Agreement in the latest version of this \"\n\"Software. If you continue to use the Software upon any change to the terms \"\n\"of this Agreement, you shall be deemed as having accepted the amended \"\n\"Agreement. You should stop using the Software if you do not accept the \"\n\"modified Agreement.</p>    <p>12.2.   This Agreement is executed in Nanshan \"\n\"District, Shenzhen City, Guangdong Province of the People's Republic of \"\n\"China.</p>    <p>12.3.   The formation, effectiveness, performance, \"\n\"interpretation and dispute resolution of this Agreement shall be governed by \"\n\"the laws of the Mainland of the People's Republic of China, without giving \"\n\"effect to the principles of conflict of laws.</p>    <p>12.4.   If any \"\n\"dispute arises between you and Tencent, the dispute shall be first resolved \"\n\"by friendly negotiation; where the negotiation fails, you agree to submit \"\n\"the dispute to the people's court with jurisdiction at the place of \"\n\"execution of this Agreement.</p>    <p>12.5.   The headings of all the terms \"\n\"of this Agreement are for convenience only and do not have any actual \"\n\"meaning. They shall not be taken as a basis for the interpretation of the \"\n\"meaning of this Agreement.</p>    <p>12.6.   Where any provision of this \"\n\"Agreement are found to be invalid or unenforceable for any reason, the \"\n\"remaining provisions shall remain in force and binding on both parties. </\"\n\"p>    <p>12.7.   This Agreement may be written in different languages.  In \"\n\"case of any inconsistency and discrepancy between the Chinese version and \"\n\"any version of other language, the Chinese version shall prevail. (End)</\"\n\"p>    <p> Tencent</p></div>\"\n\n#: templates/login/agreement.part:124\nmsgid \"已阅读\"\nmsgstr \"I know\"\n\n#: templates/login/login.html:10\n#, fuzzy\n#| msgid \"登录|蓝鲸智云企业版\"\nmsgid \"登录|蓝鲸智云\"\nmsgstr \"Login|BlueKing\"\n\n#: templates/login/login.html:22\nmsgid \"账户或者密码错误，请重新输入\"\nmsgstr \"Username or password is incorrect\"\n\n#: templates/login/login.html:28\nmsgid \"请输入用户名\"\nmsgstr \"Please enter your username\"\n\n#: templates/login/login.html:32\nmsgid \"请输入用户密码\"\nmsgstr \"Please enter your password\"\n\n#: templates/login/login.html:39\nmsgid \"登录\"\nmsgstr \"SIGN IN\"\n\n#: templates/login/login.html:40\nmsgid \"查看用户协议\"\nmsgstr \"Agreement\"\n\n#: templates/login/login.html:48\nmsgid \"青藤云安全提供安全检测\"\nmsgstr \"\"\n\n#: templates/login/login.html:55\nmsgid \"关注我们\"\nmsgstr \"\"\n\n#: templates/login/login.html:72\nmsgid \"\"\n\"您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果\"\nmsgstr \"\"\n\"Your browser is not Chrome, we recommend using the latest version of Chrome \"\n\"for the best experience\"\n\n#~ msgid \"用户名[%s]不存在\"\n#~ msgstr \"Username [%s] does not exist\"\n\n#~ msgid \"用户[%s]密码重置失败\"\n#~ msgstr \"User [%s] password reset failed\"\n\n#~ msgid \"email【%s】格式错误\"\n#~ msgstr \"Email format [%s] error\"\n\n#~ msgid \"用户%s不存在\"\n#~ msgstr \"User [%s] does not exist\"\n\n#~ msgid \"用户导入成功\"\n#~ msgstr \"User import succeeded\"\n\n#~ msgid \"您的权限不足\"\n#~ msgstr \"Your permission is insufficient\"\n\n#~ msgid \"用户角色修改成功\"\n#~ msgstr \"User role modification succeeded\"\n\n#~ msgid \"参数错误，language和timezone不能同时为空\"\n#~ msgstr \"\"\n#~ \"Parameter error, language and timezone can not both be empty at the same \"\n#~ \"time\"\n\n#~ msgid \"设置成功\"\n#~ msgstr \"Set successfully\"\n\n#~ msgid \"证书文件(platform.cert)不存在: %s\"\n#~ msgstr \"Certificate file (platform.cert) does not exist: %s\"\n\n#~ msgid \"密钥文件(platform.key)不存在: %s\"\n#~ msgstr \"Secret key file (platform.key) does not exist: %s\"\n\n#~ msgid \"证书文件(platform.cert)为空或已被损坏\"\n#~ msgstr \"Certificate file (platform.cert) is empty or has been damaged\"\n\n#~ msgid \"license_server请求校验证书异常\"\n#~ msgstr \"\"\n#~ \"Exceptions occurred in request license server to certificate validation\"\n\n#~ msgid \"证书不可用，请求未返回有效期或返回格式有误\"\n#~ msgstr \"\"\n#~ \"Certificate is not available, the request did not return a valid period \"\n#~ \"or the return format is incorrect\"\n\n#~ msgid \"证书校验成功\"\n#~ msgstr \"Certificate validation succeeded\"\n\n#~ msgid \"企业证书无效：%s; 只影响桌面版本信息的展示\"\n#~ msgstr \"\"\n#~ \"Enterprise certificate is invalid: %s; it just has an impact on the \"\n#~ \"demonstration of desktop version information \"\n\n#~ msgid \"管控平台\"\n#~ msgstr \"Control System\"\n\n#~ msgid \"作业平台\"\n#~ msgstr \"Job System\"\n\n#~ msgid \"配置平台\"\n#~ msgstr \"Configuration System\"\n\n#~ msgid \"集成平台\"\n#~ msgstr \"Integration System\"\n\n#~ msgid \"网络平台\"\n#~ msgstr \"Network System\"\n\n#~ msgid \"蓝鲸监控\"\n#~ msgstr \"BK Monitor\"\n\n#~ msgid \"日志检索\"\n#~ msgstr \"Log-Search\"\n\n#~ msgid \"故障自愈\"\n#~ msgstr \"Fault Auto-recovery\"\n\n#~ msgid \"标准运维\"\n#~ msgstr \"Standard OPS\"\n\n#~ msgid \"Agent安装\"\n#~ msgstr \"Agent Install\"\n\n#~ msgid \"数据平台\"\n#~ msgstr \"Data System\"\n\n#~ msgid \"数据平台官网\"\n#~ msgstr \"DataWeb\"\n\n#~ msgid \"开发框架\"\n#~ msgstr \"Python Framework\"\n\n#~ msgid \"开发样例\"\n#~ msgstr \"Python Framework demo\"\n\n#~ msgid \"包管理\"\n#~ msgstr \"CDMan\"\n\n#~ msgid \"审批系统\"\n#~ msgstr \"Approval System\"\n\n#~ msgid \"经费管理\"\n#~ msgstr \"Funds Manage\"\n\n#~ msgid \"会议管理\"\n#~ msgstr \"Meeting Manage\"\n\n#~ msgid \"保存成功\"\n#~ msgstr \"Save succeeded\"\n\n#~ msgid \"蓝鲸智云桌面\"\n#~ msgstr \"BlueKing Desktop\"\n\n#~ msgid \"img/logo/bk_login.png\"\n#~ msgstr \"img/logo/bk_login_en.png\"\n\n#~ msgid \"企业证书校验无效，请联系系统管理员处理\"\n#~ msgstr \"\"\n#~ \"Enterprise certificate verification ineffective, please contact the \"\n#~ \"system administrator\"\n\n#~ msgid \"你不是管理员, 没有用户管理的权限!\"\n#~ msgstr \"\"\n#~ \"You are not an administrator, so you have no permissions for user \"\n#~ \"management!\"\n\n#~ msgid \"请找管理员申请权限!\"\n#~ msgstr \"Please contact administrator to apply for permissions!\"\n\n#~ msgid \"没有用户配置了平台角色\"\n#~ msgstr \"No user has configured the platform role\"\n\n#~ msgid \"职能化\"\n#~ msgstr \"operator\"\n\n#~ msgid \"统一角色管理\"\n#~ msgstr \"Unified role management\"\n\n#~ msgid \"用户信息管理\"\n#~ msgstr \"User information management\"\n\n#~ msgid \"添加用户：\"\n#~ msgstr \"Add user: \"\n\n#~ msgid \"添加\"\n#~ msgstr \"Add\"\n\n#~ msgid \"管理\"\n#~ msgstr \"Management\"\n\n#~ msgid \"您暂时不能访问该站点的后台管理，这是以下原因造成的：\"\n#~ msgstr \"\"\n#~ \"You are currently not able to access the site's backend management for \"\n#~ \"the following reasons.\"\n\n#~ msgid \"用户\"\n#~ msgstr \"user\"\n\n#~ msgid \"未激活！\"\n#~ msgstr \"inactivated\"\n\n#~ msgid \"没有管理员权限，请联系管理员！\"\n#~ msgstr \"\"\n#~ \" do not have administrator privileges, please contact the administrator!\"\n\n#~ msgid \"img/logo/login_text.png\"\n#~ msgstr \"img/logo/login_text_en.png\"\n\n#~ msgid \"密码\"\n#~ msgstr \"password\"\n\n#~ msgid \"用户名密码错误\"\n#~ msgstr \"Username or password is incorrect\"\n\n#~ msgid \"请下载\"\n#~ msgstr \"Please download \"\n\n#~ msgid \"EXCEL模板\"\n#~ msgstr \"EXCEL template\"\n\n#~ msgid \"文件填写用户数据\"\n#~ msgstr \" file and fill in user data\"\n\n#~ msgid \"为必填，包含数字和字母，长度在4-20个字符\"\n#~ msgstr \"\"\n#~ \" is required, including numbers and letters, the length of 4-20 characters\"\n\n#~ msgid \"为唯一标识，重复导入会覆盖已有数据\"\n#~ msgstr \"\"\n#~ \" is a unique identifier, duplicate import will overwrite existing data\"\n\n#~ msgid \"导入用户默认密码为：\"\n#~ msgstr \"Default passowrd of imported users is \"\n\n#~ msgid \"文件后缀名必须为：\"\n#~ msgstr \"The file extension must be \"\n\n#~ msgid \"或\"\n#~ msgstr \" or \"\n\n#~ msgid \"导入失败请检查EXCEL格式规范，或重新下载模板填写\"\n#~ msgstr \"\"\n#~ \"Import failed, please check the EXCEL format specification, or re-\"\n#~ \"download the template to fill in\"\n\n#~ msgid \"可以管理所有用户的信息，具有所有权限\"\n#~ msgstr \"\"\n#~ \" can manage the information of all users, provided with all permissions\"\n\n#~ msgid \"可以管理自己的用户信息和访问 “桌面” \"\n#~ msgstr \"\"\n#~ \" can manage the user information of his own and access the blueking \"\n#~ \"desktop\"\n\n#~ msgid \"可以管理自己的用户信息、访问 “桌面” 和访问 “开发者中心” \"\n#~ msgstr \"\"\n#~ \" can manage the user information of his own, and can access the blueking \"\n#~ \"desktop and developer center\"\n\n#~ msgid \"在普通用户权限上还拥有SaaS应用 “标准运维” 的轻应用权限\"\n#~ msgstr \"\"\n#~ \" owns the light app permission of SaaS APP - Standard OPS, in addition \"\n#~ \"the permissions of common users\"\n\n#~ msgid \"QQ【%s】错误，只能包含数字，长度在5-13个字符\"\n#~ msgstr \"\"\n#~ \"QQ [%s] Error, it can only contain numbers, with a length of 5-13 \"\n#~ \"characters\"\n\n#~ msgid \"QQ\"\n#~ msgstr \"QQ\"\n"
  },
  {
    "path": "paas-ce/paas/login/locale/en/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2019-03-28 20:33+0800\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: static/js/csrftoken.js:27 static/js/csrftoken.js:38\n#: static/js/csrftoken.min.js:8\nmsgid \"提示\"\nmsgstr \"Tips\"\n\n#: static/js/csrftoken.js:40 static/js/csrftoken.min.js:8\nmsgid \"系统出现异常：\"\nmsgstr \"System has an exception, \"\n\n#: static/js/users.js:20 static/js/users.min.js:8\nmsgid \"不可同时修改多个用户信息，请先保存编辑中的用户信息\"\nmsgstr \"\"\n\"You cannot modify the information of multiple users at the same time. Please \"\n\"save the edited user information first\"\n\n#: static/js/users.js:51 static/js/users.js:206 static/js/users.min.js:8\nmsgid \"请输入用户名\"\nmsgstr \"Enter username\"\n\n#: static/js/users.js:54 static/js/users.min.js:8\nmsgid \"请输入姓名\"\nmsgstr \"Enter nickname\"\n\n#: static/js/users.js:57 static/js/users.min.js:8\nmsgid \"请输入联系电话\"\nmsgstr \"Enter phone number\"\n\n#: static/js/users.js:60 static/js/users.js:209 static/js/users.min.js:8\nmsgid \"请输入邮箱\"\nmsgstr \"Enter email address\"\n\n#: static/js/users.js:64 static/js/users.min.js:8\nmsgid \"普通用户\"\nmsgstr \"staff\"\n\n#: static/js/users.js:65 static/js/users.min.js:8\nmsgid \"管理员\"\nmsgstr \"superuser\"\n\n#: static/js/users.js:66 static/js/users.min.js:8\nmsgid \"开发者\"\nmsgstr \"developer\"\n\n#: static/js/users.js:67 static/js/users.min.js:8\nmsgid \"职能化用户\"\nmsgstr \"operator\"\n\n#: static/js/users.js:68 static/js/users.min.js:8\nmsgid \"审计员\"\nmsgstr \"auditor\"\n\n#: static/js/users.js:72 static/js/users.js:296 static/js/users.js:315\n#: static/js/users.min.js:8\nmsgid \"取消\"\nmsgstr \"Cancel\"\n\n#: static/js/users.js:73 static/js/users.min.js:8\nmsgid \"保存\"\nmsgstr \"Save\"\n\n#: static/js/users.js:74 static/js/users.min.js:8\nmsgid \"编辑\"\nmsgstr \"Edit\"\n\n#: static/js/users.js:75 static/js/users.min.js:8\nmsgid \"删除\"\nmsgstr \"Delete\"\n\n#: static/js/users.js:76 static/js/users.js:311 static/js/users.js:318\n#: static/js/users.min.js:8\nmsgid \"重置密码\"\nmsgstr \"Reset password\"\n\n#: static/js/users.js:95 static/js/users.min.js:8\nmsgid \"批量导入用户\"\nmsgstr \"Import users in batch\"\n\n#: static/js/users.js:108 static/js/users.min.js:8\nmsgid \"请选择一个文件\"\nmsgstr \"Please choose a file\"\n\n#: static/js/users.js:123 static/js/users.min.js:8\n#, fuzzy\n#| msgid \"\"\n#| \"用户名只能包含数字、字母和点，且长度在4-20个字符, 且必须以字母或数字开头\"\nmsgid \"\"\n\"用户名只能包含数字、字母、下划线和点，且长度在4-20个字符, 且必须以字母或数字\"\n\"开头\"\nmsgstr \"\"\n\"Username can only contain numbers, letters and dots, and the length is \"\n\"between 4-20 characters and must start with letters or number\"\n\n#: static/js/users.js:128 static/js/users.min.js:8\nmsgid \"中文名只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"\nmsgstr \"\"\n\"Nickname can only contain numbers, letters and underscores, with a length of \"\n\"1-16 characters\"\n\n#: static/js/users.js:133 static/js/users.min.js:8\nmsgid \"仅支持中国大陆手机号码（11位数字）\"\nmsgstr \"Only support 10-digit phone number \"\n\n#: static/js/users.js:138 static/js/users.min.js:8\nmsgid \"请输入正确的邮箱格式\"\nmsgstr \"Please enter correct format of email address\"\n\n#: static/js/users.js:143 static/js/users.min.js:8\nmsgid \"请选择角色\"\nmsgstr \"Please choose a role\"\n\n#: static/js/users.js:157 static/js/users.min.js:8\nmsgid \"保存成功\"\nmsgstr \"Save succeeded\"\n\n#: static/js/users.js:174 static/js/users.min.js:8\nmsgid \"添加成功\"\nmsgstr \"Add succeeded\"\n\n#: static/js/users.js:207 static/js/users.min.js:8\nmsgid \"请输入中文名\"\nmsgstr \"Please enter your nickname\"\n\n#: static/js/users.js:208 static/js/users.min.js:8\nmsgid \"请输入手机号\"\nmsgstr \"Please enter your phone number \"\n\n#: static/js/users.js:268 static/js/users.min.js:8\nmsgid \"您确定删除该用户吗?\"\nmsgstr \"Are you sure you want to delete this user?\"\n\n#: static/js/users.js:268 static/js/users.min.js:8\nmsgid \"用户名 : \"\nmsgstr \"Username: \"\n\n#: static/js/users.js:271 static/js/users.min.js:8\nmsgid \"删除确认\"\nmsgstr \"Delete confirmation\"\n\n#: static/js/users.js:277 static/js/users.min.js:8\nmsgid \"正在进行删除操作，请稍后...\"\nmsgstr \"In deleting, please wait\"\n\n#: static/js/users.js:295 static/js/users.min.js:8\nmsgid \"确认删除\"\nmsgstr \"Confirm delete\"\n\n#: static/js/users.js:345 static/js/users.min.js:8\nmsgid \"两次输入的新密码不一致\"\nmsgstr \"Two passwords entered in twice are not the same\"\n\n#: static/js/users.js:370 static/js/users.min.js:8\nmsgid \"密码重置成功\"\nmsgstr \"Password reset succeeded\"\n\n#~ msgid \"Available %s\"\n#~ msgstr \"Available %s\"\n\n#~ msgid \"\"\n#~ \"This is the list of available %s. You may choose some by selecting them \"\n#~ \"in the box below and then clicking the \\\"Choose\\\" arrow between the two \"\n#~ \"boxes.\"\n#~ msgstr \"\"\n#~ \"This is the list of available %s. You may choose some by selecting them \"\n#~ \"in the box below and then clicking the \\\"Choose\\\" arrow between the two \"\n#~ \"boxes.\"\n\n#~ msgid \"Type into this box to filter down the list of available %s.\"\n#~ msgstr \"Type into this box to filter down the list of available %s.\"\n\n#~ msgid \"Filter\"\n#~ msgstr \"Filter\"\n\n#~ msgid \"Choose all\"\n#~ msgstr \"Choose all\"\n\n#~ msgid \"Click to choose all %s at once.\"\n#~ msgstr \"Click to choose all %s at once.\"\n\n#~ msgid \"Choose\"\n#~ msgstr \"Choose\"\n\n#~ msgid \"Remove\"\n#~ msgstr \"Remove\"\n\n#~ msgid \"Chosen %s\"\n#~ msgstr \"Chosen %s\"\n\n#~ msgid \"\"\n#~ \"This is the list of chosen %s. You may remove some by selecting them in \"\n#~ \"the box below and then clicking the \\\"Remove\\\" arrow between the two \"\n#~ \"boxes.\"\n#~ msgstr \"\"\n#~ \"This is the list of chosen %s. You may remove some by selecting them in \"\n#~ \"the box below and then clicking the \\\"Remove\\\" arrow between the two \"\n#~ \"boxes.\"\n\n#~ msgid \"Remove all\"\n#~ msgstr \"Remove all\"\n\n#~ msgid \"Click to remove all chosen %s at once.\"\n#~ msgstr \"Click to remove all chosen %s at once.\"\n\n#~ msgid \"%(sel)s of %(cnt)s selected\"\n#~ msgid_plural \"%(sel)s of %(cnt)s selected\"\n#~ msgstr[0] \"%(sel)s of %(cnt)s selected\"\n#~ msgstr[1] \"%(sel)s of %(cnt)s selected\"\n\n#~ msgid \"\"\n#~ \"You have unsaved changes on individual editable fields. If you run an \"\n#~ \"action, your unsaved changes will be lost.\"\n#~ msgstr \"\"\n#~ \"You have unsaved changes on individual editable fields. If you run an \"\n#~ \"action, your unsaved changes will be lost.\"\n\n#~ msgid \"\"\n#~ \"You have selected an action, but you haven't saved your changes to \"\n#~ \"individual fields yet. Please click OK to save. You'll need to re-run the \"\n#~ \"action.\"\n#~ msgstr \"\"\n#~ \"You have selected an action, but you haven't saved your changes to \"\n#~ \"individual fields yet. Please click OK to save. You'll need to re-run the \"\n#~ \"action.\"\n\n#~ msgid \"\"\n#~ \"You have selected an action, and you haven't made any changes on \"\n#~ \"individual fields. You're probably looking for the Go button rather than \"\n#~ \"the Save button.\"\n#~ msgstr \"\"\n#~ \"You have selected an action, and you haven't made any changes on \"\n#~ \"individual fields. You're probably looking for the Go button rather than \"\n#~ \"the Save button.\"\n\n#~ msgid \"Note: You are %s hour ahead of server time.\"\n#~ msgid_plural \"Note: You are %s hours ahead of server time.\"\n#~ msgstr[0] \"Note: You are %s hour ahead of server time.\"\n#~ msgstr[1] \"Note: You are %s hours ahead of server time.\"\n\n#~ msgid \"Note: You are %s hour behind server time.\"\n#~ msgid_plural \"Note: You are %s hours behind server time.\"\n#~ msgstr[0] \"Note: You are %s hour behind server time.\"\n#~ msgstr[1] \"Note: You are %s hours behind server time.\"\n\n#~ msgid \"Now\"\n#~ msgstr \"Now\"\n\n#~ msgid \"Clock\"\n#~ msgstr \"Clock\"\n\n#~ msgid \"Choose a time\"\n#~ msgstr \"Choose a time\"\n\n#~ msgid \"Midnight\"\n#~ msgstr \"Midnight\"\n\n#~ msgid \"6 a.m.\"\n#~ msgstr \"6 a.m.\"\n\n#~ msgid \"Noon\"\n#~ msgstr \"Noon\"\n\n#~ msgid \"Cancel\"\n#~ msgstr \"Cancel\"\n\n#~ msgid \"Today\"\n#~ msgstr \"Today\"\n\n#~ msgid \"Calendar\"\n#~ msgstr \"Calendar\"\n\n#~ msgid \"Yesterday\"\n#~ msgstr \"Yesterday\"\n\n#~ msgid \"Tomorrow\"\n#~ msgstr \"Tomorrow\"\n\n#~ msgid \"\"\n#~ \"January February March April May June July August September October \"\n#~ \"November December\"\n#~ msgstr \"\"\n#~ \"January February March April May June July August September October \"\n#~ \"November December\"\n\n#~ msgid \"S M T W T F S\"\n#~ msgstr \"S M T W T F S\"\n\n#~ msgid \"Show\"\n#~ msgstr \"Show\"\n\n#~ msgid \"Hide\"\n#~ msgstr \"Hide\"\n\n#~ msgid \"输入用户名\"\n#~ msgstr \"Enter username\"\n\n#~ msgid \"用户(\"\n#~ msgstr \"User(\"\n\n#~ msgid \")已存在\"\n#~ msgstr \") already exists\"\n\n#~ msgid \"保存失败\"\n#~ msgstr \"Save failed\"\n\n#~ msgid \"添加失败\"\n#~ msgstr \"Add failed\"\n"
  },
  {
    "path": "paas-ce/paas/login/locale/zh_Hans/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2019-03-28 20:33+0800\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: bkaccount/accounts.py:127\nmsgid \"缺少参数bk_token\"\nmsgstr \"\"\n\n#: bkaccount/accounts.py:136\nmsgid \"参数bk_token非法\"\nmsgstr \"\"\n\n#: bkaccount/accounts.py:152\nmsgid \"不存在该bk_token的记录\"\nmsgstr \"\"\n\n#: bkaccount/accounts.py:159\nmsgid \"登录态已注销\"\nmsgstr \"\"\n\n#: bkaccount/accounts.py:163\nmsgid \"登录态已过期\"\nmsgstr \"\"\n\n#: bkaccount/accounts.py:167\nmsgid \"登录态有效期不合法\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:37 templates/bkaccount/user_table.part:46\n#: templates/bkaccount/user_table.part:54 templates/bkaccount/users.html:27\nmsgid \"普通用户\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:38 templates/bkaccount/user_table.part:47\n#: templates/bkaccount/users.html:26\nmsgid \"管理员\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:39 templates/bkaccount/user_table.part:48\n#: templates/bkaccount/user_table.part:55 templates/bkaccount/users.html:28\nmsgid \"开发者\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:40 templates/bkaccount/user_table.part:49\n#: templates/bkaccount/user_table.part:56 templates/bkaccount/users.html:29\nmsgid \"职能化用户\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:41 templates/bkaccount/user_table.part:50\n#: templates/bkaccount/user_table.part:57 templates/bkaccount/users.html:30\nmsgid \"审计员\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:75\nmsgid \"中文\"\nmsgstr \"\"\n\n#: bkaccount/constants.py:76\nmsgid \"英文\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:70\nmsgid \"名称长度不能超过16个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:73\nmsgid \"手机号长度不能超过11个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:81\nmsgid \"中文名错误，只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:88\nmsgid \"手机号错误，仅支持11位数字的号码\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:94\nmsgid \"用户名不能为空\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:95\nmsgid \"用户名长度不能超过20个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:96\nmsgid \"用户名长度不能少于4个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:104\nmsgid \"\"\n\"用户名错误，只能包含数字、字母、下划线和点，长度在4-20个字符，且必须以字母或\"\n\"数字开头\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:110 bkaccount/forms.py:122 bkaccount/forms.py:132\nmsgid \"新密码不能为空\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:111 bkaccount/forms.py:133\nmsgid \"密码长度不能超过20个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:112 bkaccount/forms.py:134\nmsgid \"密码长度不能少于8个字符\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:124\nmsgid \"两次输入的新密码不一致\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:126 bkaccount/forms.py:141\nmsgid \"\"\n\"密码只支持数字、字母或!@#$%^*()_-+=，长度在8-20个字符，且必须保证包含大小写字\"\n\"母和数字\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:146\nmsgid \"wx_userid 不能为空\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:150\nmsgid \"文件必须上传\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:157\nmsgid \"批量导入用户，解析文件名出错\"\nmsgstr \"\"\n\n#: bkaccount/forms.py:159\nmsgid \"文件格式错误，只支持：.xls 和 .xlsx 文件\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:61\nmsgid \"用户名不存在\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:159 bkaccount/manager.py:325\nmsgid \"用户密码重置失败\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:176\nmsgid \"个人信息修改失败\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:201\nmsgid \"该用户是最后一个管理员，不可修改其角色\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:242\nmsgid \"用户是最后一个管理员，不可修改其角色\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:267\nmsgid \"用户已经存在\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:270\nmsgid \"保存用户信息出错\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:303\nmsgid \"内置admin用户不可删除\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:306\nmsgid \"最后一个管理员用户，不允许删除\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:311\nmsgid \"用户删除失败\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:335\nmsgid \"已经绑定了微信，请解绑后再重新绑定！\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:339\nmsgid \"该微信号已经被绑定过了\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:346\nmsgid \"绑定用户微信信息失败\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:357\nmsgid \"账号未绑定过微信号，无法解绑\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:361\nmsgid \"解绑用户微信信息失败\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:392\nmsgid \"记录成功\"\nmsgstr \"\"\n\n#: bkaccount/manager.py:394\nmsgid \"用户登录记录失败\"\nmsgstr \"\"\n\n#: bkaccount/models.py:51\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: bkaccount/models.py:59\nmsgid \"user\"\nmsgstr \"\"\n\n#: bkaccount/models.py:60\nmsgid \"users\"\nmsgstr \"\"\n\n#: bkaccount/models.py:125\nmsgid \"create_time\"\nmsgstr \"\"\n\n#: bkaccount/utils.py:36\nmsgid \"用户不存在\"\nmsgstr \"\"\n\n#: bkaccount/utils.py:96\nmsgid \"导出数据出现错误\"\nmsgstr \"\"\n\n#: bkaccount/views.py:147\nmsgid \"保存用户信息成功\"\nmsgstr \"\"\n\n#: bkaccount/views.py:159\nmsgid \"用户删除成功\"\nmsgstr \"\"\n\n#: bkaccount/views.py:175\nmsgid \"修改密码成功\"\nmsgstr \"\"\n\n#: bkaccount/views.py:183 common/mixins/base.py:31 common/mixins/base.py:45\nmsgid \"非管理员, 没有权限进行操作, 请找管理员申请权限!\"\nmsgstr \"\"\n\n#: bkaccount/views.py:196\nmsgid \"文件解析出错，请下载 EXCEL模板文件 填写用户数据\"\nmsgstr \"\"\n\n#: bkaccount/views.py:199\nmsgid \"导入数据不能为空\"\nmsgstr \"\"\n\n#: bkaccount/views.py:219\nmsgid \"用户导入出现异常 {}\"\nmsgstr \"\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:19\nmsgid \"用户名\"\nmsgstr \"\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:20\nmsgid \"中文名\"\nmsgstr \"\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:21\nmsgid \"联系电话\"\nmsgstr \"\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:22\nmsgid \"常用邮箱\"\nmsgstr \"\"\n\n#: bkaccount/views.py:230 templates/bkaccount/user_table.part:23\nmsgid \"角色\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:31 bkaccount/views_api_v2.py:29\nmsgid \"用户验证成功\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:52 bkaccount/views_api.py:69\n#: bkaccount/views_api.py:92 bkaccount/views_api_v2.py:50\n#: bkaccount/views_api_v2.py:67 bkaccount/views_api_v2.py:90\nmsgid \"用户信息获取成功\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:77 bkaccount/views_api.py:100\n#: bkaccount/views_api.py:121 bkaccount/views_api.py:144\n#: bkaccount/views_api_v2.py:75\nmsgid \"请求参数格式错误,必须为json格式\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:88\nmsgid \"缺少参数:username_list\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:113\nmsgid \"密码重置成功\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:136\nmsgid \"用户信息修改成功\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:157\nmsgid \"绑定成功\"\nmsgstr \"\"\n\n#: bkaccount/views_api.py:165\nmsgid \"解绑成功\"\nmsgstr \"\"\n\n#: bkaccount/views_api_v2.py:86\nmsgid \"缺少参数:bk_username_list\"\nmsgstr \"\"\n\n#: conf/default.py:183\nmsgid \"English\"\nmsgstr \"\"\n\n#: conf/default.py:184\nmsgid \"简体中文\"\nmsgstr \"\"\n\n#: healthz/views.py:44\nmsgid \"配置文件不正确, 缺失对应配置: {}\"\nmsgstr \"\"\n\n#: healthz/views.py:54\nmsgid \"数据库连接存在问题: {}\"\nmsgstr \"\"\n\n#: templates/401.html:6\nmsgid \"未登录蓝鲸智云平台(401页)\"\nmsgstr \"\"\n\n#: templates/401.html:20\nmsgid \"您需要登录蓝鲸智云\"\nmsgstr \"\"\n\n#: templates/401.html:21\nmsgid \"立即登录\"\nmsgstr \"\"\n\n#: templates/403.html:6\nmsgid \"您没有访问权限(403页)\"\nmsgstr \"\"\n\n#: templates/403.html:20\nmsgid \"您没有访问权限，请联系系统管理员添加\"\nmsgstr \"\"\n\n#: templates/404.html:6\nmsgid \"页面找不到（404页）\"\nmsgstr \"\"\n\n#: templates/404.html:20\nmsgid \"页面找不到了\"\nmsgstr \"\"\n\n#: templates/500.html:6\nmsgid \"系统异常(500页)\"\nmsgstr \"\"\n\n#: templates/500.html:20\nmsgid \"系统出现异常\"\nmsgstr \"\"\n\n#: templates/500.html:21\nmsgid \"努力恢复中，请稍后再试......\"\nmsgstr \"\"\n\n#: templates/50x.html:6 templates/50x.html.py:19\nmsgid \"服务故障，努力修复中...\"\nmsgstr \"\"\n\n#: templates/50x.html:20\nmsgid \"服务出现故障，我们正在紧急修复，给您带来不便，敬请谅解。\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:11\nmsgid \"用户管理|蓝鲸智云社区版\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:12\nmsgid \"\"\n\"开发者中心,游戏运维,运维,服务器管理,模块配置,监控,腾讯游戏,蓝鲸,智云,devops,\"\n\"运维开发,蓝鲸社区版,社区版,作业平台,集成平台,配置平台,管控平台\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:13\nmsgid \"\"\n\"蓝鲸智云软件社区版是由蓝鲸智云团队提供的一套基于PaaS的技术解决方案，旨在改变\"\n\"中国运维行业，帮助企业快速达到基础运维支撑能力，并提升技术人员的DevOps能力。\"\n\"该版本提供了配置平台，作业平台，集成平台等强大功能，用户在使用时，请查阅并遵\"\n\"守《蓝鲸智云软件用户服务协议》。\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:43 templates/bkaccount/base.html.py:98\n#: templates/login/login.html:54\nmsgid \"蓝鲸智云工作台\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:44\nmsgid \"img/logo/logo_user_01.png\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:46\nmsgid \"蓝鲸智云用户管理\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:47\nmsgid \"img/logo/logo_user_02.png\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:68\nmsgid \"注销\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:83\nmsgid \"返回顶部\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:86\nmsgid \"返回底部\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:95 templates/login/login.html:51\nmsgid \"QQ咨询\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:96 templates/login/login.html:52\nmsgid \"蓝鲸论坛\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:97 templates/login/login.html:53\nmsgid \"蓝鲸官网\"\nmsgstr \"\"\n\n#: templates/bkaccount/base.html:101\nmsgid \"蓝鲸智云 版权所有\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:24\nmsgid \"操作\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:62\nmsgid \"取消\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:63\nmsgid \"保存\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:64\nmsgid \"编辑\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:65\nmsgid \"重置密码\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:67\nmsgid \"删除\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:73\nmsgid \"没有数据\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:85\n#: templates/bkaccount/user_table.part:87\nmsgid \"上一页\"\nmsgstr \"\"\n\n#: templates/bkaccount/user_table.part:109\n#: templates/bkaccount/user_table.part:111\nmsgid \"下一页\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:11\nmsgid \"导出\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:12\nmsgid \"批量导入\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:13\nmsgid \"新增用户\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:15\nmsgid \"用户信息\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:23\nmsgid \"查询：按用户名、中文名\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:25\nmsgid \"所有用户\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:32\nmsgid \"查询\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:33\nmsgid \"新增用户的默认密码为：\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:38\nmsgid \"温馨提示:\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:41\nmsgid \"\"\n\"<p><code>管理员</code>可以管理所有用户的信息，具有所有权限</p> <p><code>普通\"\n\"用户</code>可以管理自己的用户信息和访问 “工作台”</p> <p><code>开发者</code>可\"\n\"以管理自己的用户信息、访问 “工作台” 和访问 “开发者中心”</p> <p><code>职能化用\"\n\"户</code>在普通用户权限上还拥有SaaS应用 “标准运维” 的职能化权限</p> <p><code>\"\n\"审计员</code>在普通用户权限上还拥有SaaS应用 “标准运维”和作业平台的审计权限</\"\n\"p>\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:55\nmsgid \"选择文件：\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:57\nmsgid \"导入用户\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:58\nmsgid \"提交\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:61\nmsgid \"bk_user_import.xls\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:61\nmsgid \"点击下载EXCEL模板\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:65\nmsgid \"注意：\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:66\n#, python-format\nmsgid \"\"\n\"<p>1.请下载<a href=\\\"%(STATIC_URL)sbk_user_import.xls\\\">EXCEL模板</a>文件填写\"\n\"用户数据</p> <p>2.<code>用户名</code>为必填，包含数字、字母、下划线和点，长度\"\n\"在4-20个字符</p> <p>3.<code>用户名</code>为唯一标识，重复导入会覆盖已有数据</\"\n\"p> <p>4.导入用户默认密码为：<code>%(default_paasword)s</code></p> <p>5.文件后\"\n\"缀名必须为：<code>.xls</code>或<code>.xlsx</code> </p> <p>6.导入失败请检查\"\n\"EXCEL格式规范，或重新下载模板填写</p>\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:81\nmsgid \"新密码：\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:86 templates/bkaccount/users.html.py:92\nmsgid \"必填\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:87\n#, python-format\nmsgid \"\"\n\"请输入密码，长度在8-20个字符，可支持数字、字母以及%(sp_char)s，必须保证密码包\"\n\"含大小写字母和数字 \"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:90\nmsgid \"确认密码\"\nmsgstr \"\"\n\n#: templates/bkaccount/users.html:91\nmsgid \"再次输入密码\"\nmsgstr \"\"\n\n#: templates/csrf_failure.html:6 templates/csrf_failure.html.py:20\nmsgid \"CSRF验证失败\"\nmsgstr \"\"\n\n#: templates/csrf_failure.html:22\nmsgid \"\"\n\"您看到此消息是由于该站点在提交表单时需要一个CSRF cookie。此项是出于安全考虑，\"\n\"以确保您的浏览器没有被第三方劫持。\"\nmsgstr \"\"\n\n#: templates/csrf_failure.html:23\nmsgid \"\"\n\"如果您已经设置浏览器禁用cookies，请重新启用，至少针对这个站点，全部HTTPS请\"\n\"求，或者同源请求（same-origin）启用cookies。\"\nmsgstr \"\"\n\n#: templates/csrf_failure.html:24\nmsgid \"重新登录\"\nmsgstr \"\"\n\n#: templates/login/agreement.part:6\nmsgid \"\"\n\"<div class=\\\"title\\\">腾讯蓝鲸智云软件许可及服务协议</div> <div class=\"\n\"\\\"detail-list\\\"> <p class=\\\"title\\\">【首部及导言】</p> <p>欢迎您使用腾讯蓝鲸\"\n\"智云软件及服务。</p> <p>为使用腾讯蓝鲸智云软件（以下简称“本软件”）及服务，您\"\n\"应当阅读并遵守《腾讯蓝鲸智云软件许可及服务协议》（以下简称“本协议”），以及\"\n\"《腾讯服务协议》。请您务必审慎阅读、充分理解各条款内容，特别是免除或者限制责\"\n\"任的条款，以及开通或使用某项服务的单独协议，并选择接受或不接受。限制、免责条\"\n\"款可能以加粗形式提示您注意。</p> <p>除非您已阅读并接受本协议所有条款，否则您\"\n\"无权下载、安装或使用本软件及相关服务。您的下载、安装、使用、登录等行为即视为\"\n\"您已阅读并同意上述协议的约束。</p> <p class=\\\"title\\\">一、【协议的范围】</p> \"\n\"<p>1.1【协议适用主体范围】</p> <p>本协议是您与腾讯之间关于您下载、安装、使\"\n\"用、复制本软件，以及使用腾讯相关服务所订立的协议。</p> <p>1.2【协议关系及冲突\"\n\"条款】</p> <p>本协议被视为《腾讯服务协议》（链接地址：http://www.qq.com/\"\n\"contract.shtml，若链接地址变更的，则以变更后的链接地址所对应的内容为准；其他\"\n\"链接地址变更的情形，均适用前述约定。）的补充协议，是其不可分割的组成部分，与\"\n\"其构成统一整体。本协议与上述内容存在冲突的，以本协议为准。</p> <p>本协议内容\"\n\"同时包括腾讯可能不断发布的关于本服务的相关协议、业务规则等内容。上述内容一经\"\n\"正式发布，即为本协议不可分割的组成部分，您同样应当遵守。</p> <p class=\\\"title\"\n\"\\\">二、【关于本服务】</p> <p>2.1【本服务的内容】</p> <p>本服务内容是指蓝鲸智\"\n\"云产品以及相关服务，包括但不限于提供的基础运维平台（如“配置平台”、“作业平\"\n\"台”、“管控平台”等），PaaS服务（如“AppEngine”、“开发者中心”、“应用开发框\"\n\"架”、“组件”、“前端Magicbox”等），SaaS服务（如监控告警、持续集成、持续部署、辅\"\n\"助运营等），以及支撑上述服务的其他相关产品，为用户提供完善的基础服务设施，以\"\n\"使用户快速、便捷的创建、部署和管理应用的软件许可及服务（以下简称“本服务”）。\"\n\"</p> <p>2.2 【本服务的形式】</p> <p> 您使用本服务需要下载腾讯蓝鲸智云产品软\"\n\"件，对于这些软件，腾讯给予您一项个人的、不可转让及非排他性的许可。您仅可为访\"\n\"问或使用本服务的目的而使用这些软件及服务。</p> <p>2.3 【本服务许可的范围】</\"\n\"p> <p>2.3.1 腾讯给予您一项不可转让及非排他性的许可，以使用本软件。您可以为非\"\n\"商业目的在单一台终端设备上安装、使用、显示、运行本软件。</p> <p>2.3.2 您可以\"\n\"为使用本软件及服务的目的复制本软件的一个副本，仅用作备份。备份副本必须包含原\"\n\"软件中含有的所有著作权信息。</p> <p>2.3.3 本条及本协议其他条款未明示授权的其\"\n\"他一切权利仍由腾讯保留，您在行使这些权利时须另外取得腾讯的书面许可。腾讯如果\"\n\"未行使前述任何权利，并不构成对该权利的放弃。</p> <p class=\\\"title\\\">三、【软\"\n\"件的获取】</p> <p>3.1 您可以直接从腾讯的网站上获取本软件，也可以从得到腾讯授\"\n\"权的第三方获取。</p> <p>3.2 如果您从未经腾讯授权的第三方获取本软件或与本软件\"\n\"名称相同的安装程序，腾讯无法保证该软件能够正常使用，并对因此给您造成的损失不\"\n\"予负责。</p> <p class=\\\"title\\\">四、【软件的安装与卸载】</p> <p>4.1 腾讯可能\"\n\"为不同的需求开发了不同的软件版本，您应当根据实际情况选择下载合适的版本进行安\"\n\"装。</p> <p>4.2 下载安装程序后，您需要按照该程序提示的步骤正确安装。</p> \"\n\"<p>4.3 为提供更加优质、安全的服务，在本软件安装时腾讯可能推荐您安装其他软件，\"\n\"您可以选择安装或不安装。</p> <p>4.4 如果您不再需要使用本软件或者需要安装新版\"\n\"软件，可以自行卸载。如果您愿意帮助腾讯改进产品服务，请告知卸载的原因。</p> \"\n\"<p class=\\\"title\\\">五、【软件的更新】</p> <p>5.1 为了改善用户体验、完善服务内\"\n\"容，腾讯将不断努力开发新的服务，并为您不时提供软件更新（这些更新可能会采取软\"\n\"件替换、修改、功能强化、版本升级等形式）。</p> <p>5.2 为了保证本软件及服务的\"\n\"安全性和功能的一致性，腾讯有权不经向您特别通知而对软件进行更新，或者对软件的\"\n\"部分功能效果进行改变或限制。</p> <p>5.3 本软件新版本发布后，旧版本的软件可能\"\n\"无法使用。腾讯不保证旧版本软件继续可用及相应的客户服务，请您随时核对并下载最\"\n\"新版本。</p> <p class=\\\"title\\\">六、【用户个人信息保护】</p> <p>6.1保护用户个\"\n\"人信息是腾讯的一项基本原则。腾讯将按照本协议及《隐私政策》（链接地址：http://\"\n\"www.qq.com/privacy.htm）的规定收集、使用、储存和分享您的个人信息。本协议对个\"\n\"人信息保护规定的内容与上述《隐私政策》有相冲突的，及本协议对个人信息保护相关\"\n\"内容未作明确规定的，均应以《隐私政策》的内容为准。</p> <p>6.2腾讯将会采取合理\"\n\"的措施保护用户的个人信息。除法律法规规定的情形外，未经用户许可腾讯不会向第三\"\n\"方公开、透露用户个人信息。腾讯对相关信息采用专业加密存储与传输方式，保障用户\"\n\"个人信息的安全。</p> <p>6.3 您在注册帐号或使用本服务的过程中，可能需要提供一\"\n\"些必要的信息，若国家法律法规或政策有特殊规定的，您需要提供真实的身份信息。基\"\n\"于某些产品功能，腾讯会需要您提供使用该功能的非关联用户身份的相关信息，您同意\"\n\"腾讯基于上述目的收集上述信息，若您不提供或提供的信息不完整，则无法使用本服务\"\n\"或在使用过程中受到限制。</p> <p class=\\\"title\\\">七、【主权利义务条款】</p> \"\n\"<p>7.1 【帐号使用规范】</p> <p>7.1.1 用户有责任妥善保管注册帐户信息及帐户密码\"\n\"的安全，用户需要对注册帐户以及密码下的行为承担法律责任。用户同意在任何情况下\"\n\"不向他人透露帐户及密码信息。在您怀疑他人在使用您的帐号时，请您及时处理。</p> \"\n\"<p>7.1.2 管理员账号使用者，则可以创建多个账号，所创建的所有账号，由创建的人对\"\n\"账号承担保密的责任。</p> <p>7.1.3 非管理员账号使用者，应妥善保管账号密码的安\"\n\"全，若存在密码修改等事宜，应求助所创建账号的管理员。</p> <p>7.1.4 腾讯蓝鲸智\"\n\"云产品的账户密码安全，均由软件使用者承担相关法律责任。</p> <p>7.2【用户注意事\"\n\"项】</p> <p>7.2.1 您理解并同意：为了向您提供有效的服务，本软件会利用您终端的\"\n\"处理器和带宽等资源。本软件使用过程中可能产生数据流量的费用，用户需自行向运营\"\n\"商了解相关资费信息，并自行承担相关费用。</p> <p>7.2.2 您理解并同意：</p> \"\n\"<p>7.2.2.1 您在本软件的应用市场中添加的第三方软件，由第三方享有一切合法权利。\"\n\"因第三方软件引发的任何纠纷，由该第三方负责解决，腾讯不承担任何责任。 腾讯不对\"\n\"第三方软件或技术提供客服支持，若用户需要获取支持，请与该软件或技术提供商联\"\n\"系。</p> <p>7.2.2.2 本软件对涉及到的第三方软件的安装信息及升级信息等一切信息\"\n\"的安全性、合法性、兼容性、无害性等不承担任何担保及保证，由此而产生的任何法律\"\n\"纠纷，由该第三方负责解决，腾讯不承担任何责任。</p> <p>7.2.2.3 本软件所涉及到\"\n\"的任何第三方软件，其一切法律权利归第三方权利人所享有，用户下载、安装、使用第\"\n\"三方软件受该软件许可协议所约束。在第三方软件使用过程中所产生的任何纠纷，均由\"\n\"该第三方负责解决，腾讯不承担任何责任。</p> <p>7.2.2.4 本软件供用户用来下载、\"\n\"安装腾讯和/或第三方软件，并不能识别用户利用本软件下载、安装的第三方软件是否有\"\n\"合法来源。若您为有关软件的权利人，不愿本软件为您的软件提供用户下载、安装、使\"\n\"用的服务，可按本协议约定的联系方式联系我们（联系邮箱：【*】，联系电话：\"\n\"【*】），我们将会积极配合进行处理。</p> <p>7.2.3 您在使用本软件某一特定服务\"\n\"时，该服务可能会另有单独的协议、相关业务规则等（以下统称为“单独协议”），您在\"\n\"使用该项服务前请阅读并同意相关的单独协议。</p> <p>7.2.4 您理解并同意腾讯将会\"\n\"尽其商业上的合理努力保障您在本软件及服务中的数据存储安全，但是，腾讯并不能就\"\n\"此提供完全保证，包括但不限于以下情形：</p> <p>7.2.4.1 腾讯不对您在本软件及服\"\n\"务中相关数据的删除或储存失败负责；</p> <p>7.2.4.2 腾讯有权根据实际情况自行决\"\n\"定单个用户在本软件及服务中数据的最长储存期限，并在服务器上为其分配数据最大存\"\n\"储空间等。您可根据自己的需要自行备份本软件及服务中的相关数据；</p> \"\n\"<p>7.2.4.3 如果您停止使用本软件及服务或服务被终止或取消，腾讯可以从服务器上永\"\n\"久地删除您的数据。服务停止、终止或取消后，腾讯没有义务向您返还任何数据。</p> \"\n\"<p>7.3【第三方产品和服务】</p> <p>7.3.1 您在本软件的应用市场中添加第三方提供\"\n\"的产品或服务时，除遵守本协议约定外，还应遵守第三方的用户协议。腾讯和第三方对\"\n\"可能出现的纠纷在法律规定和约定的范围内各自承担责任。</p> <p>7.3.2 腾讯不保证\"\n\"您在应用市场中添加的第三方产品或服务的安全性、准确性、有效性及其他不确定的风\"\n\"险，由此若引发的任何争议及损害，与腾讯无关，腾讯不承担任何责任。</p> <p \"\n\"class=\\\"title\\\">八、【用户行为规范】</p> <p>8.1【信息内容规范】</p> <p>8.1.1 \"\n\"本条所述信息内容是指用户使用本软件及服务过程中所制作、复制、发布、传播的任何\"\n\"内容。</p> <p>8.1.2 您理解并同意，腾讯蓝鲸智云一直致力于为用户提供完善的基础\"\n\"服务设施，您不得利用本软件及服务制作、复制、发布、传播如下干扰腾讯蓝鲸智云正\"\n\"常运营，以及侵犯其他用户或第三方合法权益的内容，包括但不限于：</p> \"\n\"<p>8.1.2.1 发布、传送、传播、储存违反国家法律、危害国家安全统一、社会稳定、公\"\n\"序良俗、社会公德以及侮辱、诽谤、淫秽或含有任何性或性暗示的、暴力的内容；</p> \"\n\"<p>8.1.2.2 发布、传送、传播、储存侵害他人名誉权、肖像权、知识产权、商业秘密等\"\n\"合法权利的内容；</p> <p>8.1.2.3 涉及他人隐私、个人信息或资料的；</p> \"\n\"<p>8.1.2.4 发表、传送、传播骚扰、广告信息及垃圾信息；</p> <p>8.1.2.5 其他违反\"\n\"法律法规、政策及公序良俗、社会公德或干扰【腾讯蓝鲸智云】正常运营和侵犯其他用\"\n\"户或第三方合法权益内容的信息。</p> <p>8.2【软件使用规范】</p> <p>除非法律允许\"\n\"或腾讯书面许可，您使用本软件过程中不得从事下列行为：</p> <p>8.2.1 删除本软件\"\n\"及其副本上关于著作权的信息；</p> <p>8.2.2 对本软件进行反向工程、反向汇编、反\"\n\"向编译，或者以其他方式尝试发现本软件的源代码；</p> <p>8.2.3 对腾讯拥有知识产\"\n\"权的内容进行使用、出租、出借、复制、修改、链接、转载、汇编、发表、出版、建立\"\n\"镜像站点等；</p> <p>8.2.4 对本软件或者本软件运行过程中释放到任何终端内存中的\"\n\"数据、软件运行过程中客户端与服务器端的交互数据，以及本软件运行所必需的系统数\"\n\"据，进行复制、修改、 增加、删除、挂接运行或创作任何衍生作品，形式包括但不限于\"\n\"使用插件、外挂或非腾讯经授权的第三方工具/服务接入本软件和相关系统；</p> \"\n\"<p>8.2.5 通过修改或伪造软件运行中的指令、数据，增加、删减、变动软件的功能或运\"\n\"行效果，或者将用于上述用途的软件、方法进行运营或向公众传播，无论这些行为是否\"\n\"为商业目的；</p> <p>8.2.6 通过非腾讯开发、授权的第三方软件、插件、外挂、系\"\n\"统，登录或使用腾讯软件及服务，或制作、发布、传播上述工具；</p> <p>8.2.7 自行\"\n\"或者授权他人、第三方软件对本软件及其组件、模块、数据进行干扰；</p> <p>8.2.8 \"\n\"其他未经腾讯明示授权的行为。</p> <p>8.3【服务运营规范】</p> <p>除非法律允许或\"\n\"腾讯书面许可，您使用本服务过程中不得从事下列行为：</p> <p>8.3.1 提交、发布虚\"\n\"假信息，或冒充、利用他人名义的；</p> <p>8.3.2 诱导其他用户点击链接页面或分享\"\n\"信息的；</p> <p>8.3.3 虚构事实、隐瞒真相以误导、欺骗他人的；</p> <p>8.3.4 侵\"\n\"害他人名誉权、肖像权、知识产权、商业秘密等合法权利的；</p> <p>8.3.5 未经腾讯\"\n\"书面许可利用帐号和任何功能，以及第三方运营平台进行推广或互相推广的；</p> \"\n\"<p>8.3.6 利用帐号或本软件及服务从事任何违法犯罪活动的；</p> <p>8.3.7 制作、发\"\n\"布与以上行为相关的方法、工具，或对此类方法、工具进行运营或传播，无论这些行为\"\n\"是否为商业目的；</p> <p>8.3.8 其他违反法律法规规定、侵犯其他用户合法权益、干\"\n\"扰产品正常运营或腾讯未明示授权的行为。</p> <p>8.4 【对自己行为负责】</p> <p>\"\n\"您充分了解并同意，您必须为自己注册帐号下的一切行为负责，包括您所发表的任何内\"\n\"容以及由此产生的任何后果。您应对本服务中的内容自行加以判断，并承担因使用内容\"\n\"而引起的所有风险，包括因对内容的正确性、完整性或实用性的依赖而产生的风险。腾\"\n\"讯无法且不会对因前述风险而导致的任何损失或损害承担责任。</p> <p>8.5【违约处\"\n\"理】</p> <p>8.5.1 如果腾讯发现或收到他人举报或投诉用户违反本协议约定的，腾讯\"\n\"有权不经通知随时对相关内容进行删除，并视行为情节对违规帐号处以包括但不限于警\"\n\"告、限制或禁止使用全部或部分功能、帐号封禁直至注销的处罚，并公告处理结果。</\"\n\"p> <p>8.5.2 您理解并同意，腾讯有权依合理判断对违反有关法律法规或本协议规定的\"\n\"行为进行处罚，对违法违规的任何用户采取适当的法律行动，并依据法律法规保存有关\"\n\"信息向有关部门报告等，用户应独自承担由此而产生的一切法律责任。</p> <p>8.5.3 \"\n\"您理解并同意，因您违反本协议或相关服务条款的规定，导致或产生第三方主张的任何\"\n\"索赔、要求或损失，您应当独立承担责任；腾讯因此遭受损失的，您也应当一并赔偿。\"\n\"</p> <p class=\\\"title\\\">九、【知识产权声明】</p> <p>9.1 腾讯是本软件的知识产\"\n\"权权利人。本软件的一切著作权、商标权、专利权、商业秘密等知识产权，以及与本软\"\n\"件相关的所有信息内容（包括但不限于文字、图片、音频、视频、图表、界面设计、版\"\n\"面框架、有关数据或电子文档等）均受中华人民共和国法律法规和相应的国际条约保\"\n\"护，腾讯享有上述知识产权。</p> <p>9.2 未经腾讯书面同意，您不得为任何商业或非\"\n\"商业目的自行或许可任何第三方实施、利用、转让上述知识产权，腾讯保留追究上述行\"\n\"为法律责任的权利。</p> <p class=\\\"title\\\">十、【终端安全责任】</p> <p>10.1 您\"\n\"理解并同意，本软件同大多数互联网软件一样，可能会受多种因素影响，包括但不限于\"\n\"用户原因、网络服务质量、社会环境等；也可能会受各种安全问题的侵扰，包括但不限\"\n\"于他人非法利用用户资料，进行现实中的骚扰；用户下载安装的其他软件或访问的其他\"\n\"网站中可能含有病毒、木马程序或其他恶意程序，威胁您的终端设备信息和数据安全，\"\n\"继而影响本软件的正常使用等。因此，您应加强信息安全及个人信息的保护意识，注意\"\n\"密码保护，以免遭受损失。</p> <p>10.2 您不得制作、发布、使用、传播用于窃取其他\"\n\"用户帐号及个人信息、财产的恶意程序。</p> <p>10.3 维护软件安全与正常使用是腾讯\"\n\"和您的共同责任，腾讯将按照行业标准合理审慎地采取必要技术措施保护您的终端设备\"\n\"信息和数据安全，但是您承认和同意腾讯并不能就此提供完全保证。</p> <p class=\"\n\"\\\"title\\\">十一、【第三方软件或技术】</p> <p>11.1 本软件可能会使用第三方软件或\"\n\"技术（包括本软件可能使用的开源代码和公共领域代码等，下同），这种使用已经获得\"\n\"合法授权。</p> <p>11.2 本软件如果使用了第三方的软件或技术，腾讯将按照相关法规\"\n\"或约定，对相关的协议或其他文件，可能通过本协议附件、在本软件安装包特定文件夹\"\n\"中打包等形式进行展示，它们可能会以“软件使用许可协议”、“授权协议”、“开源代码许\"\n\"可证”或其他形式来表达。前述通过各种形式展现的相关协议或其他文件，均是本协议不\"\n\"可分割的组成部分，与本协议具有同等的法律效力，您应当遵守这些要求。如果您没有\"\n\"遵守这些要求，该第三方或者国家机关可能会对您提起诉讼、罚款或采取其他制裁措\"\n\"施，并要求腾讯给予协助，您应当自行承担法律责任。</p> <p>11.3 如因本软件使用的\"\n\"第三方软件或技术引发的任何纠纷，应由该第三方负责解决，腾讯不承担任何责任。腾\"\n\"讯不对第三方软件或技术提供客服支持，若您需要获取支持，请与第三方联系。</p> \"\n\"<p class=\\\"title\\\">十二、【其他】</p> <p>12.1 您使用本软件即视为您已阅读并同\"\n\"意受本协议的约束。腾讯有权在必要时修改本协议条款。您可以在本软件的最新版本中\"\n\"查阅相关协议条款。本协议条款变更后，如果您继续使用本软件，即视为您已接受修改\"\n\"后的协议。如果您不接受修改后的协议，应当停止使用本软件。</p> <p>12.2 本协议签\"\n\"订地为中华人民共和国广东省深圳市南山区。</p> <p>12.3 本协议的成立、生效、履\"\n\"行、解释及纠纷解决，适用中华人民共和国大陆地区法律（不包括冲突法）。</p> \"\n\"<p>12.4 若您和腾讯之间发生任何纠纷或争议，首先应友好协商解决；协商不成的，您\"\n\"同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。</p> <p>12.5 本协议所\"\n\"有条款的标题仅为阅读方便，本身并无实际涵义，不能作为本协议涵义解释的依据。</\"\n\"p> <p>12.6 本协议条款无论因何种原因部分无效或不可执行，其余条款仍有效，对双方\"\n\"具有约束力。</p> <p>12.7 本协议可能由多种语言书就。如果存在中文版本与其他语言\"\n\"的版本相冲突的地方，以中文版本为准。（正文完）</p> <p>腾讯公司</p> </div>\"\nmsgstr \"\"\n\n#: templates/login/agreement.part:124\nmsgid \"已阅读\"\nmsgstr \"\"\n\n#: templates/login/login.html:10\nmsgid \"登录|蓝鲸智云\"\nmsgstr \"\"\n\n#: templates/login/login.html:22\nmsgid \"账户或者密码错误，请重新输入\"\nmsgstr \"\"\n\n#: templates/login/login.html:28\nmsgid \"请输入用户名\"\nmsgstr \"\"\n\n#: templates/login/login.html:32\nmsgid \"请输入用户密码\"\nmsgstr \"\"\n\n#: templates/login/login.html:39\nmsgid \"登录\"\nmsgstr \"\"\n\n#: templates/login/login.html:40\nmsgid \"查看用户协议\"\nmsgstr \"\"\n\n#: templates/login/login.html:48\nmsgid \"青藤云安全提供安全检测\"\nmsgstr \"\"\n\n#: templates/login/login.html:55\nmsgid \"关注我们\"\nmsgstr \"\"\n\n#: templates/login/login.html:72\nmsgid \"\"\n\"您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果\"\nmsgstr \"\"\n"
  },
  {
    "path": "paas-ce/paas/login/locale/zh_Hans/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2019-03-28 20:33+0800\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/js/csrftoken.js:27 static/js/csrftoken.js:38\n#: static/js/csrftoken.min.js:8\nmsgid \"提示\"\nmsgstr \"提示\"\n\n#: static/js/csrftoken.js:40 static/js/csrftoken.min.js:8\nmsgid \"系统出现异常：\"\nmsgstr \"系统出现异常：\"\n\n#: static/js/users.js:20 static/js/users.min.js:8\nmsgid \"不可同时修改多个用户信息，请先保存编辑中的用户信息\"\nmsgstr \"不可同时修改多个用户信息，请先保存编辑中的用户信息\"\n\n#: static/js/users.js:51 static/js/users.js:206 static/js/users.min.js:8\nmsgid \"请输入用户名\"\nmsgstr \"请输入用户名\"\n\n#: static/js/users.js:54 static/js/users.min.js:8\nmsgid \"请输入姓名\"\nmsgstr \"请输入姓名\"\n\n#: static/js/users.js:57 static/js/users.min.js:8\nmsgid \"请输入联系电话\"\nmsgstr \"请输入联系电话\"\n\n#: static/js/users.js:60 static/js/users.js:209 static/js/users.min.js:8\nmsgid \"请输入邮箱\"\nmsgstr \"请输入邮箱\"\n\n#: static/js/users.js:64 static/js/users.min.js:8\nmsgid \"普通用户\"\nmsgstr \"普通用户\"\n\n#: static/js/users.js:65 static/js/users.min.js:8\nmsgid \"管理员\"\nmsgstr \"管理员\"\n\n#: static/js/users.js:66 static/js/users.min.js:8\nmsgid \"开发者\"\nmsgstr \"开发者\"\n\n#: static/js/users.js:67 static/js/users.min.js:8\nmsgid \"职能化用户\"\nmsgstr \"职能化用户\"\n\n#: static/js/users.js:68 static/js/users.min.js:8\nmsgid \"审计员\"\nmsgstr \"审计员\"\n\n#: static/js/users.js:72 static/js/users.js:296 static/js/users.js:315\n#: static/js/users.min.js:8\nmsgid \"取消\"\nmsgstr \"取消\"\n\n#: static/js/users.js:73 static/js/users.min.js:8\nmsgid \"保存\"\nmsgstr \"保存\"\n\n#: static/js/users.js:74 static/js/users.min.js:8\nmsgid \"编辑\"\nmsgstr \"编辑\"\n\n#: static/js/users.js:75 static/js/users.min.js:8\nmsgid \"删除\"\nmsgstr \"删除\"\n\n#: static/js/users.js:76 static/js/users.js:311 static/js/users.js:318\n#: static/js/users.min.js:8\nmsgid \"重置密码\"\nmsgstr \"重置密码\"\n\n#: static/js/users.js:95 static/js/users.min.js:8\nmsgid \"批量导入用户\"\nmsgstr \"批量导入用户\"\n\n#: static/js/users.js:108 static/js/users.min.js:8\nmsgid \"请选择一个文件\"\nmsgstr \"请选择一个文件\"\n\n#: static/js/users.js:123 static/js/users.min.js:8\n#, fuzzy\n#| msgid \"\"\n#| \"用户名只能包含数字、字母和点，且长度在4-20个字符, 且必须以字母或数字开头\"\nmsgid \"\"\n\"用户名只能包含数字、字母、下划线和点，且长度在4-20个字符, 且必须以字母或数字\"\n\"开头\"\nmsgstr \"\"\n\"用户名只能包含数字、字母和点，且长度在4-20个字符, 且必须以字母或数字开头\"\n\n#: static/js/users.js:128 static/js/users.min.js:8\nmsgid \"中文名只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"\nmsgstr \"中文名只能包含数字、字母、中文汉字、下划线，长度在1-16个字符\"\n\n#: static/js/users.js:133 static/js/users.min.js:8\nmsgid \"仅支持中国大陆手机号码（11位数字）\"\nmsgstr \"仅支持中国大陆手机号码（11位数字）\"\n\n#: static/js/users.js:138 static/js/users.min.js:8\nmsgid \"请输入正确的邮箱格式\"\nmsgstr \"请输入正确的邮箱格式\"\n\n#: static/js/users.js:143 static/js/users.min.js:8\nmsgid \"请选择角色\"\nmsgstr \"请选择角色\"\n\n#: static/js/users.js:157 static/js/users.min.js:8\nmsgid \"保存成功\"\nmsgstr \"保存成功\"\n\n#: static/js/users.js:174 static/js/users.min.js:8\nmsgid \"添加成功\"\nmsgstr \"添加成功\"\n\n#: static/js/users.js:207 static/js/users.min.js:8\nmsgid \"请输入中文名\"\nmsgstr \"请输入中文名\"\n\n#: static/js/users.js:208 static/js/users.min.js:8\nmsgid \"请输入手机号\"\nmsgstr \"请输入手机号\"\n\n#: static/js/users.js:268 static/js/users.min.js:8\nmsgid \"您确定删除该用户吗?\"\nmsgstr \"您确定删除该用户吗?\"\n\n#: static/js/users.js:268 static/js/users.min.js:8\nmsgid \"用户名 : \"\nmsgstr \"用户名 : \"\n\n#: static/js/users.js:271 static/js/users.min.js:8\nmsgid \"删除确认\"\nmsgstr \"删除确认\"\n\n#: static/js/users.js:277 static/js/users.min.js:8\nmsgid \"正在进行删除操作，请稍后...\"\nmsgstr \"正在进行删除操作，请稍后...\"\n\n#: static/js/users.js:295 static/js/users.min.js:8\nmsgid \"确认删除\"\nmsgstr \"确认删除\"\n\n#: static/js/users.js:345 static/js/users.min.js:8\nmsgid \"两次输入的新密码不一致\"\nmsgstr \"两次输入的新密码不一致\"\n\n#: static/js/users.js:370 static/js/users.min.js:8\nmsgid \"密码重置成功\"\nmsgstr \"密码重置成功\"\n\n#~ msgid \"Available %s\"\n#~ msgstr \"Available %s\"\n\n#~ msgid \"\"\n#~ \"This is the list of available %s. You may choose some by selecting them \"\n#~ \"in the box below and then clicking the \\\"Choose\\\" arrow between the two \"\n#~ \"boxes.\"\n#~ msgstr \"\"\n#~ \"This is the list of available %s. You may choose some by selecting them \"\n#~ \"in the box below and then clicking the \\\"Choose\\\" arrow between the two \"\n#~ \"boxes.\"\n\n#~ msgid \"Type into this box to filter down the list of available %s.\"\n#~ msgstr \"Type into this box to filter down the list of available %s.\"\n\n#~ msgid \"Filter\"\n#~ msgstr \"Filter\"\n\n#~ msgid \"Choose all\"\n#~ msgstr \"Choose all\"\n\n#~ msgid \"Click to choose all %s at once.\"\n#~ msgstr \"Click to choose all %s at once.\"\n\n#~ msgid \"Choose\"\n#~ msgstr \"Choose\"\n\n#~ msgid \"Remove\"\n#~ msgstr \"Remove\"\n\n#~ msgid \"Chosen %s\"\n#~ msgstr \"Chosen %s\"\n\n#~ msgid \"\"\n#~ \"This is the list of chosen %s. You may remove some by selecting them in \"\n#~ \"the box below and then clicking the \\\"Remove\\\" arrow between the two \"\n#~ \"boxes.\"\n#~ msgstr \"\"\n#~ \"This is the list of chosen %s. You may remove some by selecting them in \"\n#~ \"the box below and then clicking the \\\"Remove\\\" arrow between the two \"\n#~ \"boxes.\"\n\n#~ msgid \"Remove all\"\n#~ msgstr \"Remove all\"\n\n#~ msgid \"Click to remove all chosen %s at once.\"\n#~ msgstr \"Click to remove all chosen %s at once.\"\n\n#~ msgid \"%(sel)s of %(cnt)s selected\"\n#~ msgid_plural \"%(sel)s of %(cnt)s selected\"\n#~ msgstr[0] \"%(sel)s of %(cnt)s selected\"\n\n#~ msgid \"\"\n#~ \"You have unsaved changes on individual editable fields. If you run an \"\n#~ \"action, your unsaved changes will be lost.\"\n#~ msgstr \"\"\n#~ \"You have unsaved changes on individual editable fields. If you run an \"\n#~ \"action, your unsaved changes will be lost.\"\n\n#~ msgid \"\"\n#~ \"You have selected an action, but you haven't saved your changes to \"\n#~ \"individual fields yet. Please click OK to save. You'll need to re-run the \"\n#~ \"action.\"\n#~ msgstr \"\"\n#~ \"You have selected an action, but you haven't saved your changes to \"\n#~ \"individual fields yet. Please click OK to save. You'll need to re-run the \"\n#~ \"action.\"\n\n#~ msgid \"\"\n#~ \"You have selected an action, and you haven't made any changes on \"\n#~ \"individual fields. You're probably looking for the Go button rather than \"\n#~ \"the Save button.\"\n#~ msgstr \"\"\n#~ \"You have selected an action, and you haven't made any changes on \"\n#~ \"individual fields. You're probably looking for the Go button rather than \"\n#~ \"the Save button.\"\n\n#~ msgid \"Note: You are %s hour ahead of server time.\"\n#~ msgid_plural \"Note: You are %s hours ahead of server time.\"\n#~ msgstr[0] \"Note: You are %s hours ahead of server time.\"\n\n#~ msgid \"Note: You are %s hour behind server time.\"\n#~ msgid_plural \"Note: You are %s hours behind server time.\"\n#~ msgstr[0] \"Note: You are %s hour behind server time.\"\n\n#~ msgid \"Now\"\n#~ msgstr \"Now\"\n\n#~ msgid \"Clock\"\n#~ msgstr \"Clock\"\n\n#~ msgid \"Choose a time\"\n#~ msgstr \"Choose a time\"\n\n#~ msgid \"Midnight\"\n#~ msgstr \"Midnight\"\n\n#~ msgid \"6 a.m.\"\n#~ msgstr \"6 a.m.\"\n\n#~ msgid \"Noon\"\n#~ msgstr \"Noon\"\n\n#~ msgid \"Cancel\"\n#~ msgstr \"Cancel\"\n\n#~ msgid \"Today\"\n#~ msgstr \"Today\"\n\n#~ msgid \"Calendar\"\n#~ msgstr \"Calendar\"\n\n#~ msgid \"Yesterday\"\n#~ msgstr \"Yesterday\"\n\n#~ msgid \"Tomorrow\"\n#~ msgstr \"Tomorrow\"\n\n#~ msgid \"\"\n#~ \"January February March April May June July August September October \"\n#~ \"November December\"\n#~ msgstr \"\"\n#~ \"January February March April May June July August September October \"\n#~ \"November December\"\n\n#~ msgid \"S M T W T F S\"\n#~ msgstr \"S M T W T F S\"\n\n#~ msgid \"Show\"\n#~ msgstr \"Show\"\n\n#~ msgid \"Hide\"\n#~ msgstr \"Hide\"\n\n#~ msgid \"输入用户名\"\n#~ msgstr \"输入用户名\"\n\n#, fuzzy\n#~| msgid \"用户\"\n#~ msgid \"用户(\"\n#~ msgstr \"用户(\"\n\n#~ msgid \")已存在\"\n#~ msgstr \")已存在\"\n\n#~ msgid \"保存失败\"\n#~ msgstr \"保存失败\"\n\n#~ msgid \"添加失败\"\n#~ msgstr \"添加失败\"\n"
  },
  {
    "path": "paas-ce/paas/login/login/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/login/login/login_views.py",
    "content": "from datetime import datetime, timedelta\nimport json\nimport logging\nimport time\nimport uuid\n\nimport unicodedata\nfrom django.template.response import TemplateResponse\nfrom six.moves.urllib.parse import urlparse\nfrom django.contrib.auth import (login as auth_login, logout as auth_logout)\nfrom django.utils import timezone\n\nfrom django.contrib.auth.forms import AuthenticationForm\nfrom django.http import JsonResponse, HttpResponseRedirect, HttpResponse\nfrom django.shortcuts import resolve_url, render\nfrom django.views import View\n\nfrom django.conf import settings\nfrom bkaccount.encryption import encrypt, salt, decrypt\nfrom bkaccount.models import BkUser, BkToken, Loignlog, UserAuthToken\nfrom common.mixins.exempt import LoginExemptMixin, CsrfExemptMixin, CsrfAndLoginExemptMixin\n\nfrom login.status_code import success, SuccessStatusCode, error, ErrorStatusCode\n\nlogger = logging.getLogger(\"root\")\n\nfrom bkaccount.opsany_user_auth import OpsAnyRbacUserAuth\nfrom bkaccount.forms import AuthenticationAndRegisterForm\n\n\nclass AuthConfigView(CsrfAndLoginExemptMixin, View):\n    def get(self, request):\n        auth_type = request.GET.get(\"auth_type\", \"\")\n        res, data = OpsAnyRbacUserAuth().get_auth_config(auth_type)\n        default_data = [\n            {\n                \"auth_type\": \"1\",\n                \"auth_name\": \"本地登录\",\n                \"auth_show_name\": \"本地登录\",\n                \"auth_index\": 1,\n                \"enabled\": True\n            }\n        ]\n        if not res:\n            logger.info(f\"AuthConfigView, {res}, {data}\")\n            if auth_type == \"all\":\n                data = default_data\n            else:\n                data = []\n        if not data and auth_type == \"all\":\n            data = default_data\n\n        return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, data))\n\n\nclass BaseLoginView(CsrfAndLoginExemptMixin, View):\n    # cookie名称\n    BK_COOKIE_NAME = settings.BK_COOKIE_NAME\n    # cookie 有效期，默认为1天\n    BK_COOKIE_AGE = settings.BK_COOKIE_AGE\n    # cookie 有效期，默认为1天\n    MFA_CACHE_COOKIE_AGE = 60 * 5\n    # 登录回调链接\n    REDIRECT_FIELD_NAME = 'c_url'\n    # 登录连接\n    BK_LOGIN_URL = str(settings.LOGIN_URL)\n    # 允许误差时间，防止多台机器时间误差， 1分钟\n    BK_TOKEN_OFFSET_ERROR_TIME = settings.BK_TOKEN_OFFSET_ERROR_TIME\n\n    def first_error_message(self, form):\n        error_data = form.errors.as_data()\n        error_data_list = list(error_data.items())\n        error_message = error_data_list[0][1][0].message\n        message = \"{}\".format(error_message)\n        return message\n\n    def _check_white_list(self, username, request, auth_object):\n        import ipaddress\n        if username == \"admin\":\n            return True, \"管理员admin忽略白名单!\"\n        try:\n            status, res_data = auth_object.get_auth_config(auth_type=\"white_list\")\n            if not status:\n                return True, \"Success\"\n            white_list = res_data.get(\"white_list\") or \"\"\n\n            if not isinstance(res_data, dict):  return True, \"Success\"\n            if res_data.get(\"enabled\") is False: return True, \"Success\"\n\n            x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')\n            if x_forwarded_for:\n                ip = x_forwarded_for.split(',')[0]  # 第一个IP是原始客户端\n            else:\n                ip = request.META.get('REMOTE_ADDR')\n            networks = []\n            for entry in str(white_list).split(\",\"):\n                try:\n                    # 尝试解析为CIDR网段\n                    if '/' in entry:\n                        networks.append(ipaddress.ip_network(entry, strict=False))\n                    # 解析为单IP (自动转换为/32或/128)\n                    else:\n                        networks.append(ipaddress.ip_address(entry))\n                except ValueError:\n                    continue\n                    # networks.append(entry)\n            ip_obj = ipaddress.ip_address(ip)\n            if any(\n                    (isinstance(net, ipaddress.IPv4Network) and (ip_obj in net)) or\n                    (isinstance(net, ipaddress.IPv6Network) and (ip_obj in net)) or\n                    (isinstance(net, ipaddress.IPv4Address) and (ip_obj == net)) or\n                    (isinstance(net, ipaddress.IPv6Address) and (ip_obj == net))\n                    for net in networks\n            ):\n                return True, \"Success\"\n            return False, \"IP登录限制({}), 请联系管理员加入白名单!\".format(ip)\n        except Exception as e:\n            logger.exception('Login _check_white_list, error: {}'.format(str(e)))\n            return True, str(e)\n\n    def get_user(self, data, username):\n        \"\"\"\n        {\n            'have_user': False,\n            'auth_status': False,\n            'domain_status': False,\n            'user_info': {}\n        }\n        \"\"\"\n        have_user = data.get(\"have_user\")\n        user_info = data.get(\"user_info\")\n        if have_user:\n            username = user_info.get(\"username\")\n            password = str(uuid.uuid4()).split(\"-\")[-1]\n            status, user_dict, msg = BkUser.objects.get_user_info_v2(username)\n            if status:\n                user_id = user_dict.get(\"id\")\n            else:\n                user_id = None\n            result, user_id, message = BkUser.objects.modify_or_create_user_by_userid(\n                user_id,\n                user_info.get(\"username\"),\n                user_info.get(\"chname\", \"\"),\n                user_info.get(\"phone\", \"\"),\n                \"\" if user_info.get(\"email\", \"\") is None else user_info.get(\"email\", \"\"),\n                user_info.get(\"bk_role\", \"0\"),\n                password\n            )\n            return BkUser.objects.filter(id=user_id).first()\n        else:\n            user = BkUser.objects.filter(username=username).first()\n            if user:\n                user.delete()\n            return None\n\n    def login_success_response(self, request, user_or_form, redirect_to, app_id, res_data=None):\n\n        if isinstance(user_or_form, AuthenticationForm):\n            user = user_or_form.get_user()\n            username = user_or_form.cleaned_data.get('username', '')\n        else:\n            user = user_or_form\n            username = user.username\n        if not self.is_safe_url(url=redirect_to, host=request.get_host()):\n            redirect_to = resolve_url(\"/\")\n\n        try:\n            auth_login(request, user)\n        except:\n            user.backend = \"django.contrib.auth.backends.ModelBackend\"\n            auth_login(request, user)\n\n        bk_token, expire_time = self.get_bk_token(username)\n        # response = HttpResponseRedirect(redirect_to)\n        if not res_data:\n            res_data = {}\n        res_data.update({self.REDIRECT_FIELD_NAME: redirect_to, \"bk_token\": bk_token})\n        json_data = {\n            'code': 200,\n            'successcode': 20000,\n            'message': 'Success',\n            'data': res_data\n        }\n        # print(\"JsonResponse_json_data\", json_data)\n        response = JsonResponse(json_data)\n        response.set_cookie(self.BK_COOKIE_NAME, bk_token,\n                            expires=expire_time,\n                            domain=settings.BK_COOKIE_DOMAIN,\n                            httponly=True)\n        self.record_login_log(request, user, app_id, bk_token)\n        return response\n\n    def login_success_redirect_response(self, request, user_or_form, redirect_to, app_id, res_data=None):\n\n        if isinstance(user_or_form, AuthenticationForm):\n            user = user_or_form.get_user()\n            username = user_or_form.cleaned_data.get('username', '')\n        else:\n            user = user_or_form\n            username = user.username\n\n        if not self.is_safe_url(url=redirect_to, host=request.get_host()):\n            redirect_to = resolve_url(\"/\")\n\n        try:\n            auth_login(request, user)\n        except:\n            user.backend = \"django.contrib.auth.backends.ModelBackend\"\n            auth_login(request, user)\n\n        bk_token, expire_time = self.get_bk_token(username)\n        # response = HttpResponseRedirect(redirect_to)\n        if not res_data:\n            res_data = {}\n        res_data.update({self.REDIRECT_FIELD_NAME: redirect_to, \"bk_token\": bk_token})\n        response = HttpResponseRedirect(redirect_to)\n        response.set_cookie(self.BK_COOKIE_NAME, bk_token,\n                            expires=expire_time,\n                            domain=settings.BK_COOKIE_DOMAIN,\n                            httponly=True)\n        self.record_login_log(request, user, app_id, bk_token)\n        return response\n\n    def set_bk_token_invalid(self, request, response=None):\n        \"\"\"\n        将登录票据设置为不合法\n        \"\"\"\n        bk_token = request.COOKIES.get(self.BK_COOKIE_NAME)\n        if bk_token:\n            BkToken.objects.filter(token=bk_token).update(is_logout=True)\n        if response is not None:\n            # delete cookie\n            response.delete_cookie(self.BK_COOKIE_NAME, domain=settings.BK_COOKIE_DOMAIN)\n            return response\n        return None\n\n    def is_safe_url(self, url, host=None):\n        \"\"\"\n        判断url是否与当前host的根域一致\n\n        以下情况返回False：\n            1)根域不一致\n            2)url的scheme不为：https(s)\n            3)url为空\n        \"\"\"\n        if url is not None:\n            url = url.strip()\n        if not url:\n            return False\n        # Chrome treats \\ completely as /\n        url = url.replace('\\\\', '/')\n        # Chrome considers any URL with more than two slashes to be absolute, but\n        # urlparse is not so flexible. Treat any url with three slashes as unsafe.\n        if url.startswith('///'):\n            return False\n        url_info = urlparse(url)\n        # Forbid URLs like http:///example.com - with a scheme, but without a hostname.\n        # In that URL, example.com is not the hostname but, a path component. However,\n        # Chrome will still consider example.com to be the hostname, so we must not\n        # allow this syntax.\n        if not url_info.netloc and url_info.scheme:\n            return False\n        # Forbid URLs that start with control characters. Some browsers (like\n        # Chrome) ignore quite a few control characters at the start of a\n        # URL and might consider the URL as scheme relative.\n        if unicodedata.category(url[0])[0] == 'C':\n            return False\n        url_domain = url_info.netloc.split(':')[0].split('.')[-2] if url_info.netloc else ''\n        host_domain = host.split(':')[0].split('.')[-2] if host else ''\n        return ((not url_info.netloc or url_domain == host_domain) and\n                (not url_info.scheme or url_info.scheme in ['http', 'https']))\n\n    def get_bk_token(self, username):\n        \"\"\"\n        生成用户的登录态\n        \"\"\"\n        bk_token = ''\n        expire_time = int(time.time())\n        # 重试5次\n        retry_count = 0\n        while not bk_token and retry_count < 5:\n            now_time = int(time.time())\n            expire_time = now_time + self.BK_COOKIE_AGE\n            plain_token = 'login|%s|%s|%s' % (expire_time, username, salt(20))\n            bk_token = encrypt(plain_token)\n            try:\n                BkToken.objects.create(token=bk_token, expire_time=datetime.fromtimestamp(expire_time), username=username, token_type=\"login\")\n            except Exception as error:\n                logger.exception('Login ticket failed to be saved during ticket generation, error: {}'.format(error))\n                # 循环结束前将bk_token置空后重新生成\n                bk_token = '' if retry_count < 4 else bk_token\n            retry_count += 1\n        return bk_token, datetime.fromtimestamp(expire_time, timezone.get_current_timezone())\n\n    def encrypt_cache_token(self, username):\n        now_time = int(time.time())\n        expire_time = now_time + self.MFA_CACHE_COOKIE_AGE\n        plain_token = 'cache_token|%s|%s|%s' % (expire_time, username, salt(50))\n        bk_token = encrypt(plain_token)\n        return bk_token, datetime.fromtimestamp(expire_time, timezone.get_current_timezone())\n\n    def decrypt_cache_token(self, cache_token):\n        try:\n            plain_bk_token = decrypt(cache_token)\n        except Exception as error:\n            return False, \"验证失败, 请重新登录!\", \"\"\n        try:\n            token_info = plain_bk_token.split('|')\n        except Exception as error:\n            return False, \"验证失败, 请重新登录!!\", \"\"\n        if len(token_info) != 3:\n            return False, \"验证失败, 请重新登录!!!\", \"\"\n        expire_time = int(token_info[0])\n        now_time = int(time.time())\n        if now_time > expire_time:\n            return False, \"验证时间过长, 请重新登录!\"\n        if expire_time - now_time > self.BK_COOKIE_AGE:\n            return False, \"登录态有效期不合法, 请重新登录!\"\n        return True, \"Success\", token_info[1]\n\n    def login_ip_and_browser(self, request):\n        host = request.get_host()\n        login_browser = request.META.get('HTTP_USER_AGENT') or 'unknown'\n        # 获取用户ip request.META.get('HTTP_X_REAL_IP')\n        login_ip = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')\n        try:\n            if login_ip and \",\" in login_ip:\n                login_ip = login_ip.split(\",\")[0].split()\n        except Exception:\n            pass\n        return login_ip, login_browser, host\n\n    def record_login_log(self, request, user, app_id, token=None):\n        \"\"\"\n        记录用户登录日志\n        \"\"\"\n        host = request.get_host()\n        login_browser = request.META.get('HTTP_USER_AGENT') or 'unknown'\n        # 获取用户ip request.META.get('HTTP_X_REAL_IP')\n        login_ip = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')\n        try:\n            if login_ip and \",\" in login_ip:\n                login_ip = login_ip.split(\",\")[0].split()\n        except Exception:\n            pass\n            # logger.info(\"IP地址[ID:%s]解析失败\", login_ip)\n        Loignlog.objects.record_login(user, login_browser, login_ip, host, app_id)\n        auth_object = OpsAnyRbacUserAuth(user.username, \"\")\n        try:\n            auth_object.update_login_log(token, login_ip, login_browser, host)\n        except Exception as e:\n            print(\"Login log error: {}\".format(str(e)))\n\n\nclass LoginIndexView(BaseLoginView):\n    AUTH_TYPE_DICT = {\n        \"wxwork\": \"3\",\n        \"oauth\": \"6\",\n        \"sso\": \"8\",\n        \"idaas\": \"9\",\n        \"iam\": \"10\",\n        \"dingtalk\": \"11\",\n        \"feishu\": \"12\",\n    }\n    def get_user(self, data, username):\n        \"\"\"\n        {\n            'have_user': False,\n            'auth_status': False,\n            'domain_status': False,\n            'user_info': {}\n        }\n        \"\"\"\n        have_user = data.get(\"have_user\")\n        user_info = data.get(\"user_info\")\n        if have_user:\n            username = user_info.get(\"username\")\n            password = str(uuid.uuid4()).split(\"-\")[-1]\n            status, user_dict, msg = BkUser.objects.get_user_info_v2(username)\n            if status:\n                user_id = user_dict.get(\"id\")\n            else:\n                user_id = None\n            result, user_id, message = BkUser.objects.modify_or_create_user_by_userid(\n                user_id,\n                user_info.get(\"username\"),\n                user_info.get(\"chname\", \"\"),\n                user_info.get(\"phone\", \"\"),\n                \"\" if user_info.get(\"email\", \"\") is None else user_info.get(\"email\", \"\"),\n                user_info.get(\"bk_role\", \"0\"),\n                password\n            )\n            return BkUser.objects.filter(id=user_id).first()\n        else:\n            user = BkUser.objects.filter(username=username).first()\n            if user:\n                user.delete()\n            return None\n\n    def get(self, request, *args, **kwargs):\n        auth_name = kwargs.get(\"auth_name\")\n        domain_name = kwargs.get(\"domain_name\")\n        params = request.GET.dict()\n        c_url = params.get(\"c_url\")\n        is_from_logout = params.get(\"is_from_logout\")\n\n        if (c_url and len(params) == 1) or (is_from_logout and len(params) == 1) or (not params):\n            response = TemplateResponse(request, \"login/login.html\", {\"auth_type\": \"1\", \"error\": \"\"})\n            return self.set_bk_token_invalid(request, response)\n\n        auth_type = params.get(\"auth_type\")\n        domain = params.get(\"domain\")\n        ad_domain = params.get(\"ad_domain\")\n        appid = params.get(\"appid\")\n        code = params.get(\"code\")\n        sso_code = params.get(\"sso_code\")\n        sso_sign = params.get(\"sso_sign\")\n\n        if auth_name and domain_name:\n            auth_type = self.AUTH_TYPE_DICT.get(auth_name)\n            domain = domain_name\n\n        auth_obj = None\n        if (auth_type == \"8\") and sso_code and sso_sign:  # 8 SSO\n            auth_obj = OpsAnyRbacUserAuth(domain=domain, auth_type=auth_type, sso_code=sso_code, sso_sign=sso_sign)\n        elif auth_type == \"3\":  # 3 企业微信\n            auth_obj = OpsAnyRbacUserAuth(auth_type=auth_type, code=code, app_id=appid, ad_domain=ad_domain)\n        elif auth_type in [\"6\", \"11\", \"12\"]:  # 6 Oauth 11 dingtalk  12 feishu\n            auth_obj = OpsAnyRbacUserAuth(auth_type=auth_type, domain=domain, code=code)\n        elif auth_type in [\"9\", \"10\"]:  # 9 10 IDAAS IAM\n            auth_obj = OpsAnyRbacUserAuth(auth_type=auth_type, domain=domain, params=params)\n        elif code and domain:  # AD(auth_by_oauth)\n            auth_obj = OpsAnyRbacUserAuth(code=code, domain=domain, ad_domain=ad_domain)\n        if auth_obj:\n            status, res = auth_obj.check_users()\n            if status and res.get(\"auth_status\") and res.get(\"domain_status\") and res.get(\"have_user\"):\n                user_info = res.get(\"user_info\")\n                user = self.get_user(res, user_info.get(\"username\"))\n                return self.login_success_redirect_response(request, user, c_url, \"\")\n            else:\n                msg = res.get(\"message\") or \"登录失败, 请联系管理员!\"\n                logger.info(f\"LoginIndexView.get.1: {auth_type}, {domain}, {params.keys()}, lock_msg: {msg}\")\n                return render(request, \"login/login.html\", {\"auth_type\": auth_type, \"error\": msg})\n\n        else:\n            msg = \"暂不支持该登录方式!\"\n            logger.info(f\"LoginIndexView.get.2: {auth_type}, {domain}, {params.keys()}, lock_msg: {msg}\")\n        response = TemplateResponse(request, \"login/login.html\", {\"auth_type\": \"1\", \"error\": msg})\n        return self.set_bk_token_invalid(request, response)\n\n    # 暂时保留旧接口, 防止初始化相关脚本调用失败\n    def post(self, request):\n        return LoginV3View().post(request)\n\n\nclass LoginV3View(BaseLoginView):\n    def login_error_times(self, username, types=\"get\"):\n        \"\"\"types: get clean add\"\"\"\n        now = timezone.now()\n        query = UserAuthToken.objects.filter(username=username, app_code=\"login\").first()\n        if types == \"clean\":\n            if query: query.delete()\n            return 0, now\n        if types == \"get\":\n            if query:\n                try:\n                    return int(query.auth_token), query.last_accessed_time\n                except Exception as e:\n                    return 1, query.last_accessed_time\n            else:\n                return 0, now\n        save_dict = {\"app_code\": \"login\", \"username\": username, \"auth_token\": \"1\", \"expires\": datetime.now()}\n        if not query:\n            auth_token = 1\n            save_dict[\"created_time\"] = now\n            save_dict[\"last_accessed_time\"] = now\n            query = UserAuthToken.objects.create(**save_dict)\n        else:\n            try:\n                auth_token = int(query.auth_token)\n            except Exception as e:\n                auth_token = 1\n            auth_token += 1\n            save_dict[\"auth_token\"] = str(auth_token)\n            save_dict[\"last_accessed_time\"] = now\n            for k, v in save_dict.items():\n                setattr(query, k, v)\n            query.save()\n        return auth_token, now\n\n    def check_verify_code_and_login_lock(self, auth_object, username):\n        auth_dict = auth_object.get_rbac_auth_config(username)\n        mfa_days_enabled = auth_dict.get(\"mfa_days_enabled\")\n        # mfa_days = auth_dict.get(\"mfa_days\")\n        verification_code_enabled = auth_dict.get(\"verification_code_enabled\")\n        try:\n            verification_code_config = int(auth_dict.get(\"verification_code_config\"))\n        except Exception as e:\n            verification_code_config, verification_code_enabled = 0, False\n        password_retry_times_enabled = auth_dict.get(\"password_retry_times_enabled\")\n        try:\n            password_retry_times_config = int(auth_dict.get(\"password_retry_times_config\"))\n            locking_times_config = auth_dict.get(\"locking_times_config\")\n            int(password_retry_times_config)\n            if len(locking_times_config) > 2:\n                locking_times_config = \"1h\"\n            num, unit = int(locking_times_config[:-1]), locking_times_config[-1]\n            d = {{\"m\": \"minutes\", \"h\": \"hours\", \"d\": \"days\"}.get(unit, \"hours\"): num}\n            locking_times_config = timedelta(**d)\n        except Exception as e:\n            password_retry_times_config, password_retry_times_enabled, locking_times_config = 0, False, timedelta(hours=1)\n\n        show_mfa_days, show_verify_code, show_login_lock, while_show_verify_code, while_show_login_lock = False, False, False, False, False\n        if mfa_days_enabled:\n            show_mfa_days = True\n        error_count, last_accessed_time = self.login_error_times(username)\n        if verification_code_enabled:\n            if verification_code_config <= error_count:\n                show_verify_code = True\n            if verification_code_config <= error_count + 1:\n                while_show_verify_code = True  # 8:00 1:00    8:30\n\n        unlock_times = last_accessed_time + locking_times_config\n        unlock_times_str = timezone.localtime(unlock_times).strftime(\"%Y-%m-%d %H:%M:%S\")\n        if password_retry_times_enabled and (unlock_times > timezone.now()):\n            if password_retry_times_config <= error_count:\n                show_login_lock = True\n            if password_retry_times_config <= error_count + 1:\n                while_show_login_lock = True\n        if unlock_times < timezone.now():\n            self.login_error_times(username, types=\"clean\")\n        return show_mfa_days, show_verify_code, show_login_lock, while_show_verify_code, while_show_login_lock, error_count, password_retry_times_enabled, password_retry_times_config, unlock_times_str\n\n    def post(self, request):\n        login_ip, login_browser, host = self.login_ip_and_browser(request)\n        # print(11111111111111, login_ip, login_browser, host)\n        data = json.loads(request.body)\n        params = request.GET.dict()\n        app_id = data.get('app_id', params.get('app_id', ''))\n        # data[\"geetest_challenge\"] = uuid.uuid4().hex\n        # data[\"geetest_seccode\"] = uuid.uuid4().hex\n        # data[\"geetest_validate\"] = uuid.uuid4().hex\n        cache_token = data.get(\"cache_token\")\n\n        # 正常登录\n        redirect_field_name = 'c_url'\n        redirect_to = data.get(redirect_field_name, \"/\")\n        auth_type = data.get(\"auth_type\", \"1\")\n        username = data.get(\"username\", \"\")\n        password = data.get(\"password\", \"\")\n        domain = data.pop(\"domain\", None)\n        google_auth_type = data.pop(\"google_auth_type\", None)\n        verify_code = data.pop(\"verify_code\", None)\n        secret = data.pop(\"secret\", \"\")\n        seven_days_free = data.pop(\"seven_days_free\", 0)\n        if domain:\n            username = username + \"@\" + domain\n        auth_object = OpsAnyRbacUserAuth(auth_type=auth_type, username=username, password=password)\n        status, message = self._check_white_list(username, request, auth_object)\n        # status, message = True, \"Success\"\n        if not status:\n            return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS))\n        (show_mfa_days, show_verify_code, show_login_lock,\n         while_show_verify_code, while_show_login_lock, error_times, password_retry_times_enabled,\n         password_retry_times_config, unlock_times_str) \\\n            = self.check_verify_code_and_login_lock(auth_object, username)\n        # if (\"@\" not in username) or ((not domain) and (\"@\" in username)):  # 密码本地登录 第三方用户本地密码登录\n        # mfa_check = False\n        # if cache_token:\n        #     status, message, u = self.decrypt_cache_token(cache_token)\n        #     if not status:\n        #         return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR,custom_message=message))\n        #     mfa_check = True\n        # if not mfa_check:\n        show_dict = {\"show_verify_code\": show_verify_code, \"show_mfa_days\": show_mfa_days}\n        lock_msg = \"登录失败 {} 次, 已超上限, 账号锁定, 请 {} 后再次登录, 或联系管理员解锁!\".format(error_times, unlock_times_str)\n        if show_login_lock:\n            logger.error(f\"LoginV3View.post.1: {username}, {auth_type}, {login_ip}, {login_browser}, lock_msg: {lock_msg}\")\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR2, custom_message=lock_msg, add_params=show_dict))\n\n        if auth_type == \"1\":  # 本地登录\n            form = AuthenticationAndRegisterForm(request, data=data)\n            if not form.is_valid():\n                if (not show_verify_code) and while_show_verify_code:\n                    show_dict[\"show_verify_code\"] = while_show_verify_code\n                print(\"login_error_times_1_add: \", username, self.login_error_times(username, types=\"add\"))\n                msg = self.first_error_message(form)\n                if password_retry_times_enabled:\n                    retry_times = password_retry_times_config - error_times - 1\n                    if retry_times <= 0:\n                        msg += f\"(登录失败 {password_retry_times_config} 次, 已超上限, 账号锁定)\"\n                    else:\n                        msg += f\"(还可以重试{retry_times}次)\"\n                    logger.error(f\"LoginV3View.post.2: {username}, {auth_type}, {login_ip}, {login_browser}, lock_msg: {msg}\")\n                return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=msg, add_params=show_dict))\n            user_or_form = form\n        elif auth_type in [\"2\", \"7\"]:  # AD LDAP\n            user_status, user_data = auth_object.check_users()\n            # logger.error(f\"{user_status}---{user_data}\")\n            if not user_status:\n                msg = user_data.get(\"message\") or \"登录失败, 请联系管理员!\"\n                if password_retry_times_enabled:\n                    retry_times = password_retry_times_config - error_times - 1\n                    if retry_times <= 0:\n                        msg += f\"(登录失败 {password_retry_times_config} 次, 已超上限, 账号锁定)\"\n                    else:\n                        msg += f\"(还可以重试{retry_times}次)\"\n                    logger.error(f\"LoginV3View.post.2: {username}, {auth_type}, {login_ip}, {login_browser}, lock_msg: {msg}\")\n\n                if (not show_verify_code) and while_show_verify_code:\n                    show_dict[\"show_verify_code\"] = while_show_verify_code\n                print(\"login_error_times_27_add: \", username, self.login_error_times(username, types=\"add\"))\n                logger.info(f\"LoginV3View.post.3: {username}, {auth_type}, lock_msg: {msg}\")\n                return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=msg, add_params=show_dict))\n            user_info = user_data.get(\"user_info\")\n            user_or_form = self.get_user(user_data, user_info.get(\"username\"))\n        else:\n            msg = \"暂不支持该登录方式!\"\n            logger.info(f\"LoginV3View.post.4: {username}, {auth_type}, lock_msg: {msg}\")\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=msg, add_params=show_dict))\n        google_auth_status = auth_object.get_user_google_auth_status()\n        if google_auth_status == \"9\":\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=\"用户不存在!\", add_params=show_dict))\n        elif google_auth_status == \"8\":\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=\"用户禁止登录!\", add_params=show_dict))\n        elif google_auth_status in [\"7\", \"6\", \"2\", \"0\"]:  # 直接登录成功\n            pass\n            # 非MFA直接登录\n            # return\n        elif google_auth_status in [\"5\", \"4\", \"1\"]:  # MFA验证\n            if not verify_code:\n                cache_token, times = self.encrypt_cache_token(username)\n                res_dict = {\n                    \"google_auth_type\": \"verify_google_auth\",\n                    \"google_auth_status\": google_auth_status,\n                    \"cache_token\": cache_token,\n                }\n                res_dict.update(show_dict)\n                return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, res_dict, add_params=show_dict))\n            check_status = auth_object.check_google_verify_code(verify_code, seven_days_free)\n            if not check_status:\n                return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=\"授权码错误, 请重新输入!\", add_params=show_dict))\n            # FMA验证成功直接登录\n            # return\n        elif google_auth_status in [\"3\"]:\n            if google_auth_type == \"bind_google_auth\":\n                bind_google_auth = auth_object.bind_google_auth(secret=secret, verify_code=verify_code)\n                if not bind_google_auth.get(\"result\"):\n                    msg = \"授权码错误, 请重新输入!\"\n                    return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=msg, add_params=show_dict))\n                # FMA绑定成功直接登录\n                # return\n            else:\n                cache_token, times = self.encrypt_cache_token(username)\n                google_auth_pic = auth_object.get_google_auth()\n                res_dict = {\n                    \"google_auth_url\": google_auth_pic.get(\"url\", \"\"),\n                    \"secret\": google_auth_pic.get(\"secret\", \"\"),\n                    \"google_auth_type\": \"bind_google_auth\",\n                    \"google_auth_status\": google_auth_status,\n                    \"google_auth_username\": username,\n                    \"cache_token\": cache_token,\n                }\n                res_dict.update(show_dict)\n                return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, res_dict))\n        else:\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=\"登录失败!\", add_params=show_dict))\n        print(\"login_error_times_clean: \", username, self.login_error_times(username, types=\"clean\"))\n        return self.login_success_response(request, user_or_form, redirect_to, app_id)\n\n    def get(self, request):\n        return JsonResponse(success(SuccessStatusCode.MESSAGE_GET_SUCCESS))\n\n\nclass CheckPasswordView(View):\n    def first_error_message(self, form):\n        error_data = form.errors.as_data()\n        error_data_list = list(error_data.items())\n        error_message = error_data_list[0][1][0].message\n        message = \"{}\".format(error_message)\n        return message\n\n    # def get(self, request):\n    #     data = request.GET.dict()\n    #     return self._check(request, data)\n    def post(self, request):\n        try:\n            data = json.loads(request.body)\n        except Exception as e:\n            data = request.POST.dict()\n\n        return self._check(request, data)\n\n    def _check(self, request, data):\n        data[\"username\"] = request.user.username\n        form = AuthenticationAndRegisterForm(request, data=data)\n        if not form.is_valid():\n            msg = self.first_error_message(form)\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=msg))\n        return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS))\n\n\nclass UserLoginUnlockView(View):\n    def get(self, request):\n        data = request.GET.dict()\n        username = data.get(\"username\")\n        unlock_type = data.get(\"unlock_type\", \"disabled_this_user_lock\")  # disabled_all_user_lock\n        user = request.user\n        if user and not isinstance(user, BkUser):\n            return JsonResponse(error(ErrorStatusCode.PERMISSION_DENIED))\n\n        if user.role_code != 1:\n            return JsonResponse(error(ErrorStatusCode.PERMISSION_DENIED))\n\n        if unlock_type == \"disabled_all_user_lock\":\n            count, res_dict = UserAuthToken.objects.filter(app_code=\"login\").delete()\n            return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, count))\n        else:\n            query = UserAuthToken.objects.filter(app_code=\"login\", username=username).first()\n            if not query:\n                res_dict = {}\n            else:\n                query.delete()\n                res_dict = query.to_rbac_unlock_dict()\n            return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, res_dict))\n\n\nclass UserExternalLoginView(BaseLoginView):\n    def get(self, request, **kwargs):\n        auth_name = kwargs.get(\"auth_name\")\n        domain = kwargs.get(\"domain\")\n        params = request.GET.dict() or {}\n        params[\"auth_name\"] = auth_name\n        params[\"api\"] = \"v3\"\n        c_url = params.get(\"c_url\") or \"/\"\n        auth_type_dict = {\n            \"qw\": \"3\",  # code appid\n            \"oauth\": \"6\",  # code\n            \"sso\": \"8\",  # sso_code sso_sign\n            \"idaas\": \"9\",  # params token参数自定义\n            \"iam\": \"10\",  # params token参数自定义\n            \"ad_by_oauth\": \"7\",  # code ad_domain\n        }\n        auth_type = auth_type_dict.get(auth_name)\n        if not auth_type:\n            msg = \"暂不支持该登录方式!\"\n            logger.info(f\"UserExternalLoginView.get1: {msg}, auth_name: {auth_name}\")\n            response = TemplateResponse(request, \"login/login.html\", {\"auth_type\": \"1\", \"error\": msg})\n            return self.set_bk_token_invalid(request, response)\n        rbac_dict = {\"auth_type\": auth_type, \"domain\": domain, \"params\": params}\n        auth_obj = OpsAnyRbacUserAuth(**rbac_dict)\n        status, res = auth_obj.check_users()\n        if status and res.get(\"auth_status\") and res.get(\"domain_status\") and res.get(\"have_user\"):\n            user_info = res.get(\"user_info\")\n            user = self.get_user(res, user_info.get(\"username\"))\n            return self.login_success_redirect_response(request, user, c_url, \"\")\n        else:\n            msg = res.get(\"message\") or \"登录失败, 请联系管理员!\"\n            return render(request, \"login/login.html\", {\"auth_type\": auth_type, \"error\": msg})\n\n\nclass APITokenView(CsrfExemptMixin, View):\n    def get(self, request):\n        data = request.GET.dict()\n        token_type = data.get(\"token_type\", \"api_token\")\n        is_logout = data.get(\"is_logout\")\n        id_list = data.get(\"id_list\") or \"\"\n        user = request.user\n        username = user.username\n\n        search_dict = {\"username\": username}\n        if id_list:\n            if \",\" in id_list:\n                id_list = id_list.split(\",\")\n            else:\n                id_list = [id_list]\n            search_dict[\"id__in\"] = id_list\n        if token_type != \"all\":\n            search_dict[\"token_type\"] = token_type\n        if is_logout:\n            search_dict[\"is_logout\"] = True if is_logout == \"1\" else False\n        queryset = BkToken.fetch_all(**search_dict)\n        res_dict = [query.to_dict() for query in queryset]\n        return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, res_dict))\n\n    def post(self, request):\n        user = request.user\n        kwargs = json.loads(request.body)\n        expire_time = kwargs.get(\"expire_time\")\n        auth_platform = kwargs.get(\"auth_platform\") or [\"esb\"]\n        content = kwargs.get(\"content\") or []\n        username = user.username\n        if not auth_platform or not expire_time:\n            return JsonResponse(\n                error(ErrorStatusCode.CUSTOM_ERROR, custom_message=\"auth_platform或expire_time不能为空\"))\n        status, id, token = self.get_api_token(username, expire_time, auth_platform, content)\n        if not status:\n            return JsonResponse(error(ErrorStatusCode.CUSTOM_ERROR, custom_message=token))\n        id_dict = {\n            \"id\": id,\n            \"username\": username,\n            \"expire_time\": expire_time,\n            \"auth_platform\": auth_platform,\n            \"token\": token,\n        }\n        return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS, id_dict))\n\n    def delete(self, request):\n        kwargs = json.loads(request.body)\n        id = kwargs.get(\"id\")\n        user = request.user\n        username = user.username\n        if not id:\n            return JsonResponse(error(ErrorStatusCode.OPERATION_ERROR))\n        BkToken.objects.filter(id=id, username=username).delete()\n        return JsonResponse(success(SuccessStatusCode.OPERATION_SUCCESS))\n\n    def get_api_token(self, username, expire_time, auth_platform, content):\n        \"\"\"\n        生成用户的登录态\n        \"\"\"\n        bk_token = ''\n        retry_count = 0\n        try:\n            expire_timestamp = int(datetime.strptime(expire_time, \"%Y-%m-%d %H:%M:%S\").timestamp())\n        except Exception as e:\n            return False, None, \"expire_time格式错误： {}\".format(expire_time)\n\n        if expire_timestamp < int(time.time()):\n            return False, None, \"过期时间必须大于当前时间： {}\".format(expire_time)\n        # 重试5次\n        query = None\n        while not bk_token and retry_count < 5:\n            plain_token = 'api_token|%s|%s|%s' % (expire_timestamp, username, salt(24))\n            bk_token = encrypt(plain_token)\n            try:\n                save_dict = {\n                    \"token\": bk_token,\n                    \"token_type\": \"api_token\",\n                    \"username\": username,\n                    \"expire_time\": expire_time,\n                    \"auth_platform\": auth_platform,\n                }\n                query = BkToken.objects.create(**save_dict)\n            except Exception as e:\n                logger.exception('Login ticket failed to be saved during ticket generation, error: {}'.format(e))\n                # 循环结束前将bk_token置空后重新生成\n                bk_token = '' if retry_count < 4 else bk_token\n            retry_count += 1\n        if not query:\n            return False, None, \"APIToken创建失败！\"\n        return True, query.id, bk_token\n"
  },
  {
    "path": "paas-ce/paas/login/login/return_message.py",
    "content": "LANGUAGE_MESSAGE = {\n    \"chinese_simplified\": \"简体中文\",\n    \"chinese_traditional\": \"簡體中文\",\n    \"english\": \"English\",\n    \"japanese\": \"日本語\",\n}\n\n# pipeline\nCUSTOM_ERROR_MESSAGE = {\n    \"chinese_simplified\": \"\",\n    \"chinese_traditional\": \"\",\n    \"english\": \"\",\n}\n\nINVALID_REQUEST_MESSAGE = {\n    \"chinese_simplified\": \"不合法的请求\",\n    \"chinese_traditional\": \"不合法的請求\",\n    \"english\": \"Invalid requests.\",\n}\n\nINVALID_TOKEN_MESSAGE = {\n    \"chinese_simplified\": \"无效的token\",\n    \"chinese_traditional\": \"無效的token\",\n    \"english\": \"Invalid token.\",\n}\n\nUSER_NOT_EXISTED_OR_WRONG_PASSWORD_MESSAGE = {\n    \"chinese_simplified\": \"用户名/密码错误\",\n    \"chinese_traditional\": \"用戶名/密碼錯誤\",\n    \"english\": \"User name or password error.\",\n}\n\nUSER_NOT_AUTH_MESSAGE = {\n    \"chinese_simplified\": \"当前用户没有权限访问该平台\",\n    \"chinese_traditional\": \"當前用戶沒有許可權訪問該平臺\",\n    \"english\": \"Current user does not have permission to access the platform.\",\n}\n\n\nAUTH_FAILED_MESSAGE = {\n    \"chinese_simplified\": \"认证失败，请检查您的用户信息是否正确\",\n    \"chinese_traditional\": \"認證失敗，請檢查您的用戶訊息是否正確\",\n    \"english\": \"Authentication failed. Please check whether your user information is correct.\",\n}\n\n\nPERMISSION_DENIED_MESSAGE = {\n    \"chinese_simplified\": \"没有操作权限\",\n    \"chinese_traditional\": \"沒有操作許可權\",\n    \"english\": \"Permission denied.\",\n}\n\nDATA_NOT_EXISTED_MESSAGE = {\n    \"chinese_simplified\": \"数据不存在\",\n    \"chinese_traditional\": \"數據不存在\",\n    \"english\": \"Data not found.\",\n}\n\nMETHOD_ERROR_MESSAGE = {\n    \"chinese_simplified\": \"请求方法不存在\",\n    \"chinese_traditional\": \"請求方法不存在\",\n    \"english\": \"The request method does not exist.\",\n}\n\nRECORD_HAS_EXISTED_MESSAGE = {\n    \"chinese_simplified\": \"记录已经存在\",\n    \"chinese_traditional\": \"記錄已經存在\",\n    \"english\": \"Data already exists.\",\n}\n\nNO_PARAMS_MESSAGE = {\n    \"chinese_simplified\": \"参数不能为空\",\n    \"chinese_traditional\": \"參數不能為空\",\n    \"english\": \"Parameter cannot be empty.\",\n}\n\nMUST_INPUT_MESSAGE_MESSAGE = {\n    \"chinese_simplified\": \"必须输入相关信息\",\n    \"chinese_traditional\": \"必須輸入相關訊息\",\n    \"english\": \"Relevant information must be entered.\",\n}\n\nPARAMETER_ERROR_MESSAGE = {\n    \"chinese_simplified\": \"参数错误\",\n    \"chinese_traditional\": \"參數錯誤\",\n    \"english\": \"parameter error.\",\n}\n\n\nOPERATION_ERROR_MESSAGE = {\n    \"chinese_simplified\": \"操作失败\",\n    \"chinese_traditional\": \"操作失敗\",\n    \"english\": \"operation failure.\",\n}\n\n\nMESSAGE_GET_SUCCESS_MESSAGE = {\n    \"chinese_simplified\": \"信息获取成功\",\n    \"chinese_traditional\": \"訊息獲取成功\",\n    \"english\": \"Get succeeded.\",\n}\n\nMESSAGE_CREATE_SUCCESS_MESSAGE = {\n    \"chinese_simplified\": \"信息创建成功\",\n    \"chinese_traditional\": \"訊息創建成功\",\n    \"english\": \"Created succeeded.\",\n}\n\nMESSAGE_DELETE_SUCCESS_MESSAGE = {\n    \"chinese_simplified\": \"信息删除成功\",\n    \"chinese_traditional\": \"訊息删除成功\",\n    \"english\": \"Deleted succeeded.\",\n}\n\n\nMESSAGE_UPDATE_SUCCESS_MESSAGE = {\n    \"chinese_simplified\": \"信息更新成功\",\n    \"chinese_traditional\": \"訊息更新成功\",\n    \"english\": \"Updated succeeded.\",\n}\n\n\nOPERATION_SUCCESS_MESSAGE = {\n    \"chinese_simplified\": \"操作成功\",\n    \"chinese_traditional\": \"操作成功\",\n    \"english\": \"operate succeeded.\",\n}\n"
  },
  {
    "path": "paas-ce/paas/login/login/status_code.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2020 OpsAny. All Rights Reserved.\n\"\"\" # noqa\n\nfrom enum import Enum\n\nfrom login.return_message import *\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\n\n\nclass ErrorStatusCode(Enum):\n    # code = 400\n    INVALID_REQUEST = (400, 40000, INVALID_REQUEST_MESSAGE)\n\n    # code = 401\n    INVALID_TOKEN = (401, 40100, INVALID_TOKEN_MESSAGE)\n    USER_NOT_EXISTED_OR_WRONG_PASSWORD = (401, 40101, USER_NOT_EXISTED_OR_WRONG_PASSWORD_MESSAGE)\n    USER_NOT_AUTH = (401, 40102, USER_NOT_AUTH_MESSAGE)\n\n    # code 403\n    INVALID_ACCESS_TOKEN = (403, 40301, AUTH_FAILED_MESSAGE)\n    # permission denied\n    PERMISSION_DENIED = (403, 40302, PERMISSION_DENIED_MESSAGE)\n\n    # code = 404\n    DATA_NOT_EXISTED = (404, 40400, DATA_NOT_EXISTED_MESSAGE)\n    METHOD_ERROR = (404, 40405, METHOD_ERROR_MESSAGE)\n\n    # code = 422\n    RECORD_HAS_EXISTED = (422, 42200, RECORD_HAS_EXISTED_MESSAGE)\n    NO_PARAMS = (422, 42201, NO_PARAMS_MESSAGE)\n\n    MUST_INPUT_MESSAGE = (422, 42213, MUST_INPUT_MESSAGE_MESSAGE)\n\n    PARAMS_ERROR = (422, 42232, PARAMETER_ERROR_MESSAGE)\n    OPERATION_ERROR = (422, 42232, OPERATION_ERROR_MESSAGE)\n    CUSTOM_ERROR = (422, 42234, CUSTOM_ERROR_MESSAGE)\n    CUSTOM_ERROR2 = (423, 42301, CUSTOM_ERROR_MESSAGE)\n\n\ndef error(error_info=ErrorStatusCode.INVALID_REQUEST, errors=None, custom_message=None, language=DEFAULT_LANGUAGE, add_params=None):\n    http_code, error_code, error_msg = error_info.value\n    params = {\n        'code': http_code,\n        'message': get_language_message(error_msg, language),\n        'errcode': error_code,\n    }\n    if add_params and isinstance(params, dict):\n        params.update(add_params)\n        \n    if errors:\n        params['errors'] = errors\n    if custom_message:\n        params['message'] = get_language_message(custom_message, language)\n    return params\n\n\nclass SuccessStatusCode(Enum):\n    # code = 200\n    # 测试使用\n    TEST_SUCCESS = (200, 20000, '服务器连接成功')\n\n    MESSAGE_CREATE_SUCCESS = (200, 20004, MESSAGE_CREATE_SUCCESS_MESSAGE)\n    MESSAGE_GET_SUCCESS = (200, 20005, MESSAGE_GET_SUCCESS_MESSAGE)\n    MESSAGE_DELETE_SUCCESS = (200, 20006, MESSAGE_DELETE_SUCCESS_MESSAGE)\n    MESSAGE_UPDATE_SUCCESS = (200, 20007, MESSAGE_UPDATE_SUCCESS_MESSAGE)\n\n    OPERATION_SUCCESS = (200, 20023, OPERATION_SUCCESS_MESSAGE)\n\n\ndef success(success_info=SuccessStatusCode.TEST_SUCCESS, data=None, language=DEFAULT_LANGUAGE, add_params=None):\n    http_code, success_code, success_msg = success_info.value\n    params = {\n        'code': http_code,\n        'successcode': success_code,\n        'message': get_language_message(success_msg, language),\n        'data': data\n    }\n    if add_params:\n        params.update(add_params)\n    return params\n\n\ndef get_language_message(message, language):\n    try:\n        message = eval(message)\n    except Exception:\n        pass\n    if isinstance(message, dict):\n        if \"chinese_simplified\" not in message.keys():\n            msg = str(message)\n        else:\n            format_str = message.pop(\"format_str\", \"\")\n            msg = message.get(language) or message.get(DEFAULT_LANGUAGE, \"!\")\n            if format_str:\n                msg = msg.format(format_str)\n    else:\n        msg = str(message)\n    return msg\n"
  },
  {
    "path": "paas-ce/paas/login/manage.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "paas-ce/paas/login/requirements.txt",
    "content": "django==4.2.16\ndj-static==0.0.6\npycryptodome==3.20.0\nrequests==2.32.3\npymysql==1.1.1\ngunicorn==23.0.0\n#uWSGI==2.0.27\nxlrd==2.0.1\nxlwt==1.3.0\ngevent==24.2.1\ngreenlet==3.0.3\npytz==2024.2\npython-dateutil==2.6.0\ndjangorestframework==3.15.2 \ndjangorestframework-simplejwt==5.3.1 \npyjwt==2.9.0\nsix==1.16.0\nurllib3==2.2.3\ndjango-cors-headers==4.3.0\n"
  },
  {
    "path": "paas-ce/paas/login/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport os\nfrom conf.default import *  # noqa\n\"\"\"\nYou can load different configurations depending on yourcurrent environment.\n\n This can be the following values:\n\n      development\n      testing\n      production\n\"\"\"\n\nENVIRONMENT = os.environ.get(\"BK_ENV\", \"development\")\n# Inherit from environment specifics\nconf_module = \"conf.settings_%s\" % ENVIRONMENT\n\ntry:\n    module = __import__(conf_module, globals(), locals(), ['*'])\nexcept ImportError as e:\n    raise ImportError(\"Could not import conf '%s' (Is it on sys.path?): %s\" % (conf_module, e))\n\nfor setting in dir(module):\n    if setting == setting.upper():\n        locals()[setting] = getattr(module, setting)\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bk-icon-2.0/iconfont.css",
    "content": "@font-face {\r\n  font-family: 'bk-icons-linear';\r\n  src:  url('./fonts/bk_icons_linear.eot?3xrc6s');\r\n  src:  url('./fonts/bk_icons_linear.eot?3xrc6s#iefix') format('embedded-opentype'),\r\n    url('./fonts/bk_icons_linear.ttf?3xrc6s') format('truetype'),\r\n    url('./fonts/bk_icons_linear.woff?3xrc6s') format('woff'),\r\n    url('./fonts/bk_icons_linear.svg?3xrc6s#bk_icons_linear') format('svg');\r\n  font-weight: normal;\r\n  font-style: normal;\r\n}\r\n/*兼容fa处理*/\r\n.fa{\r\n  font-family: FontAwesome !important;\r\n}\r\n.bk-icon {\r\n  /* use !important to prevent issues with browser extensions that change fonts */\r\n  font-family: 'bk-icons-linear' !important;\r\n  speak: none;\r\n  font-style: normal;\r\n  font-weight: normal;\r\n  font-variant: normal;\r\n  text-transform: none;\r\n  line-height: 1;\r\n\r\n  /* Better Font Rendering =========== */\r\n  -webkit-font-smoothing: antialiased;\r\n  -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.icon-apps-shape:before {\r\n  content: \"\\e900\";\r\n}\r\n.icon-arrows-down-circle-shape:before {\r\n  content: \"\\e901\";\r\n}\r\n.icon-arrows-down-shape:before {\r\n  content: \"\\e902\";\r\n}\r\n.icon-arrows-left-circle-shape:before {\r\n  content: \"\\e903\";\r\n}\r\n.icon-arrows-left-shape:before {\r\n  content: \"\\e904\";\r\n}\r\n.icon-arrows-m-down-shape:before {\r\n  content: \"\\e905\";\r\n}\r\n.icon-arrows-m-left-shape:before {\r\n  content: \"\\e906\";\r\n}\r\n.icon-arrows-m-right-shape:before {\r\n  content: \"\\e907\";\r\n}\r\n.icon-arrows-m-up-shape:before {\r\n  content: \"\\e908\";\r\n}\r\n.icon-arrows-right-circle-shape:before {\r\n  content: \"\\e909\";\r\n}\r\n.icon-arrows-right-shape:before {\r\n  content: \"\\e90a\";\r\n}\r\n.icon-arrows-up-circle-shape:before {\r\n  content: \"\\e90b\";\r\n}\r\n.icon-arrows-up-shape:before {\r\n  content: \"\\e90c\";\r\n}\r\n.icon-back-shape:before {\r\n  content: \"\\e90d\";\r\n}\r\n.icon-calendar-shape:before {\r\n  content: \"\\e90e\";\r\n}\r\n.icon-check-circle-shape:before {\r\n  content: \"\\e90f\";\r\n}\r\n.icon-circle-shape:before {\r\n  content: \"\\e910\";\r\n}\r\n.icon-clipboard-shape:before {\r\n  content: \"\\e911\";\r\n}\r\n.icon-clock-shape:before {\r\n  content: \"\\e912\";\r\n}\r\n.icon-close3-shape:before {\r\n  content: \"\\e913\";\r\n}\r\n.icon-close-circle-shape:before {\r\n  content: \"\\e914\";\r\n}\r\n.icon-cog-shape:before {\r\n  content: \"\\e915\";\r\n}\r\n.icon-cry-shape:before {\r\n  content: \"\\e916\";\r\n}\r\n.icon-dashboard-2-shape:before {\r\n  content: \"\\e917\";\r\n}\r\n.icon-dashboard-shape:before {\r\n  content: \"\\e918\";\r\n}\r\n.icon-data2-shape:before {\r\n  content: \"\\e919\";\r\n}\r\n.icon-data-shape:before {\r\n  content: \"\\e91a\";\r\n}\r\n.icon-dialogue-empty-shape:before {\r\n  content: \"\\e91b\";\r\n}\r\n.icon-dialogue-shape:before {\r\n  content: \"\\e91c\";\r\n}\r\n.icon-dispirited-shape:before {\r\n  content: \"\\e91d\";\r\n}\r\n.icon-down-shape:before {\r\n  content: \"\\e91e\";\r\n}\r\n.icon-email-shape:before {\r\n  content: \"\\e91f\";\r\n}\r\n.icon-empty-shape:before {\r\n  content: \"\\e920\";\r\n}\r\n.icon-exclamation-circle-shape:before {\r\n  content: \"\\e921\";\r\n}\r\n.icon-exclamation-triangle-shape:before {\r\n  content: \"\\e922\";\r\n}\r\n.icon-eye-shape:before {\r\n  content: \"\\e923\";\r\n}\r\n.icon-eye-slash-shape:before {\r\n  content: \"\\e924\";\r\n}\r\n.icon-file-plus-shape:before {\r\n  content: \"\\e925\";\r\n}\r\n.icon-file-shape:before {\r\n  content: \"\\e926\";\r\n}\r\n.icon-folder-open-shape:before {\r\n  content: \"\\e927\";\r\n}\r\n.icon-folder-plus-shape:before {\r\n  content: \"\\e928\";\r\n}\r\n.icon-folder-shape:before {\r\n  content: \"\\e929\";\r\n}\r\n.icon-heart-shape:before {\r\n  content: \"\\e92a\";\r\n}\r\n.icon-home-shape:before {\r\n  content: \"\\e92b\";\r\n}\r\n.icon-id-shape:before {\r\n  content: \"\\e92c\";\r\n}\r\n.icon-image-shape:before {\r\n  content: \"\\e92d\";\r\n}\r\n.icon-info-circle-shape:before {\r\n  content: \"\\e92e\";\r\n}\r\n.icon-left-shape:before {\r\n  content: \"\\e92f\";\r\n}\r\n.icon-lock-shape:before {\r\n  content: \"\\e930\";\r\n}\r\n.icon-minus-circle-shape:before {\r\n  content: \"\\e931\";\r\n}\r\n.icon-minus-square-shape:before {\r\n  content: \"\\e932\";\r\n}\r\n.icon-mobile-shape:before {\r\n  content: \"\\e933\";\r\n}\r\n.icon-next-shape:before {\r\n  content: \"\\e934\";\r\n}\r\n.icon-order-shape:before {\r\n  content: \"\\e935\";\r\n}\r\n.icon-password-shape:before {\r\n  content: \"\\e936\";\r\n}\r\n.icon-pc-shape:before {\r\n  content: \"\\e937\";\r\n}\r\n.icon-pie-chart-shape:before {\r\n  content: \"\\e938\";\r\n}\r\n.icon-pipeline-shape:before {\r\n  content: \"\\e939\";\r\n}\r\n.icon-play-circle-shape:before {\r\n  content: \"\\e93a\";\r\n}\r\n.icon-play-shape:before {\r\n  content: \"\\e93b\";\r\n}\r\n.icon-plus-circle-shape:before {\r\n  content: \"\\e93c\";\r\n}\r\n.icon-plus-square-shape:before {\r\n  content: \"\\e93d\";\r\n}\r\n.icon-qq-shape:before {\r\n  content: \"\\e93e\";\r\n}\r\n.icon-question-circle-shape:before {\r\n  content: \"\\e93f\";\r\n}\r\n.icon-right-shape:before {\r\n  content: \"\\e940\";\r\n}\r\n.icon-save-shape:before {\r\n  content: \"\\e941\";\r\n}\r\n.icon-sina-shape:before {\r\n  content: \"\\e942\";\r\n}\r\n.icon-sitemap-shape:before {\r\n  content: \"\\e943\";\r\n}\r\n.icon-smile-shape:before {\r\n  content: \"\\e944\";\r\n}\r\n.icon-star-shape:before {\r\n  content: \"\\e945\";\r\n}\r\n.icon-stop-shape:before {\r\n  content: \"\\e946\";\r\n}\r\n.icon-tree-application-shape:before {\r\n  content: \"\\e947\";\r\n}\r\n.icon-tree-group-shape:before {\r\n  content: \"\\e948\";\r\n}\r\n.icon-tree-module-shape:before {\r\n  content: \"\\e949\";\r\n}\r\n.icon-tree-process-shape:before {\r\n  content: \"\\e94a\";\r\n}\r\n.icon-unlock-shape:before {\r\n  content: \"\\e94b\";\r\n}\r\n.icon-up-shape:before {\r\n  content: \"\\e94c\";\r\n}\r\n.icon-user-shape:before {\r\n  content: \"\\e94d\";\r\n}\r\n.icon-weixin-shape:before {\r\n  content: \"\\e94e\";\r\n}\r\n.icon-more:before {\r\n  content: \"\\e94f\";\r\n}\r\n.icon-circle-2-1:before {\r\n  content: \"\\e950\";\r\n}\r\n.icon-circle-4-1:before {\r\n  content: \"\\e951\";\r\n}\r\n.icon-angle-double-down:before {\r\n  content: \"\\e952\";\r\n}\r\n.icon-angle-double-left:before {\r\n  content: \"\\e953\";\r\n}\r\n.icon-angle-double-right:before {\r\n  content: \"\\e954\";\r\n}\r\n.icon-angle-double-up:before {\r\n  content: \"\\e955\";\r\n}\r\n.icon-angle-down:before {\r\n  content: \"\\e956\";\r\n}\r\n.icon-angle-left:before {\r\n  content: \"\\e957\";\r\n}\r\n.icon-angle-right:before {\r\n  content: \"\\e958\";\r\n}\r\n.icon-angle-up:before {\r\n  content: \"\\e959\";\r\n}\r\n.icon-apps:before {\r\n  content: \"\\e95a\";\r\n}\r\n.icon-area-chart:before {\r\n  content: \"\\e95b\";\r\n}\r\n.icon-arrows-down:before {\r\n  content: \"\\e95c\";\r\n}\r\n.icon-arrows-down-circle:before {\r\n  content: \"\\e95d\";\r\n}\r\n.icon-arrows-left:before {\r\n  content: \"\\e95e\";\r\n}\r\n.icon-arrows-left-circle:before {\r\n  content: \"\\e95f\";\r\n}\r\n.icon-arrows-right:before {\r\n  content: \"\\e960\";\r\n}\r\n.icon-arrows-right-circle:before {\r\n  content: \"\\e961\";\r\n}\r\n.icon-arrows-up:before {\r\n  content: \"\\e962\";\r\n}\r\n.icon-arrows-up-circle:before {\r\n  content: \"\\e963\";\r\n}\r\n.icon-back:before {\r\n  content: \"\\e964\";\r\n}\r\n.icon-back2:before {\r\n  content: \"\\e965\";\r\n}\r\n.icon-bar-chart:before {\r\n  content: \"\\e966\";\r\n}\r\n.icon-bk:before {\r\n  content: \"\\e967\";\r\n}\r\n.icon-calendar:before {\r\n  content: \"\\e968\";\r\n}\r\n.icon-chain:before {\r\n  content: \"\\e969\";\r\n}\r\n.icon-check-1:before {\r\n  content: \"\\e96a\";\r\n}\r\n.icon-check-circle:before {\r\n  content: \"\\e96b\";\r\n}\r\n.icon-circle:before {\r\n  content: \"\\e96c\";\r\n}\r\n.icon-clipboard:before {\r\n  content: \"\\e96d\";\r\n}\r\n.icon-clock:before {\r\n  content: \"\\e96e\";\r\n}\r\n.icon-close:before {\r\n  content: \"\\e96f\";\r\n}\r\n.icon-close-circle:before {\r\n  content: \"\\e970\";\r\n}\r\n.icon-delete:before {\r\n  content: \"\\e971\";\r\n}\r\n.icon-code:before {\r\n  content: \"\\e972\";\r\n}\r\n.icon-cog:before {\r\n  content: \"\\e973\";\r\n}\r\n.icon-cry:before {\r\n  content: \"\\e974\";\r\n}\r\n.icon-dashboard:before {\r\n  content: \"\\e975\";\r\n}\r\n.icon-dashboard-2:before {\r\n  content: \"\\e976\";\r\n}\r\n.icon-data:before {\r\n  content: \"\\e977\";\r\n}\r\n.icon-data2:before {\r\n  content: \"\\e978\";\r\n}\r\n.icon-dedent:before {\r\n  content: \"\\e979\";\r\n}\r\n.icon-dialogue:before {\r\n  content: \"\\e97a\";\r\n}\r\n.icon-dialogue-empty:before {\r\n  content: \"\\e97b\";\r\n}\r\n.icon-dispirited:before {\r\n  content: \"\\e97c\";\r\n}\r\n.icon-download:before {\r\n  content: \"\\e97d\";\r\n}\r\n.icon-edit:before {\r\n  content: \"\\e97e\";\r\n}\r\n.icon-edit2:before {\r\n  content: \"\\e97f\";\r\n}\r\n.icon-ellipsis:before {\r\n  content: \"\\e980\";\r\n}\r\n.icon-email:before {\r\n  content: \"\\e981\";\r\n}\r\n.icon-empty:before {\r\n  content: \"\\e982\";\r\n}\r\n.icon-end:before {\r\n  content: \"\\e983\";\r\n}\r\n.icon-exclamation:before {\r\n  content: \"\\e984\";\r\n}\r\n.icon-exclamation-circle:before {\r\n  content: \"\\e985\";\r\n}\r\n.icon-exclamation-triangle:before {\r\n  content: \"\\e986\";\r\n}\r\n.icon-eye:before {\r\n  content: \"\\e987\";\r\n}\r\n.icon-eye-slash:before {\r\n  content: \"\\e988\";\r\n}\r\n.icon-file:before {\r\n  content: \"\\e989\";\r\n}\r\n.icon-file-plus:before {\r\n  content: \"\\e98a\";\r\n}\r\n.icon-folder:before {\r\n  content: \"\\e98b\";\r\n}\r\n.icon-folder-open:before {\r\n  content: \"\\e98c\";\r\n}\r\n.icon-folder-plus:before {\r\n  content: \"\\e98d\";\r\n}\r\n.icon-full-screen:before {\r\n  content: \"\\e98e\";\r\n}\r\n.icon-heart:before {\r\n  content: \"\\e98f\";\r\n}\r\n.icon-hide:before {\r\n  content: \"\\e990\";\r\n}\r\n.icon-home:before {\r\n  content: \"\\e991\";\r\n}\r\n.icon-id:before {\r\n  content: \"\\e992\";\r\n}\r\n.icon-image:before {\r\n  content: \"\\e993\";\r\n}\r\n.icon-indent:before {\r\n  content: \"\\e994\";\r\n}\r\n.icon-info:before {\r\n  content: \"\\e995\";\r\n}\r\n.icon-info-circle:before {\r\n  content: \"\\e996\";\r\n}\r\n.icon-key:before {\r\n  content: \"\\e997\";\r\n}\r\n.icon-line-chart:before {\r\n  content: \"\\e998\";\r\n}\r\n.icon-list:before {\r\n  content: \"\\e999\";\r\n}\r\n.icon-lock:before {\r\n  content: \"\\e99a\";\r\n}\r\n.icon-minus:before {\r\n  content: \"\\e99b\";\r\n}\r\n.icon-minus-circle:before {\r\n  content: \"\\e99c\";\r\n}\r\n.icon-minus-square:before {\r\n  content: \"\\e99d\";\r\n}\r\n.icon-mobile:before {\r\n  content: \"\\e99e\";\r\n}\r\n.icon-move:before {\r\n  content: \"\\e99f\";\r\n}\r\n.icon-next:before {\r\n  content: \"\\e9a0\";\r\n}\r\n.icon-order:before {\r\n  content: \"\\e9a1\";\r\n}\r\n.icon-password:before {\r\n  content: \"\\e9a2\";\r\n}\r\n.icon-pause:before {\r\n  content: \"\\e9a3\";\r\n}\r\n.icon-pc:before {\r\n  content: \"\\e9a4\";\r\n}\r\n.icon-pie-chart:before {\r\n  content: \"\\e9a5\";\r\n}\r\n.icon-pipeline:before {\r\n  content: \"\\e9a6\";\r\n}\r\n.icon-play:before {\r\n  content: \"\\e9a7\";\r\n}\r\n.icon-play2:before {\r\n  content: \"\\e9a8\";\r\n}\r\n.icon-play3:before {\r\n  content: \"\\e9a9\";\r\n}\r\n.icon-plus:before {\r\n  content: \"\\e9aa\";\r\n}\r\n.icon-plus-circle:before {\r\n  content: \"\\e9ab\";\r\n}\r\n.icon-plus-square:before {\r\n  content: \"\\e9ac\";\r\n}\r\n.icon-qq:before {\r\n  content: \"\\e9ad\";\r\n}\r\n.icon-question:before {\r\n  content: \"\\e9ae\";\r\n}\r\n.icon-question-circle:before {\r\n  content: \"\\e9af\";\r\n}\r\n.icon-refresh:before {\r\n  content: \"\\e9b0\";\r\n}\r\n.icon-save:before {\r\n  content: \"\\e9b1\";\r\n}\r\n.icon-search:before {\r\n  content: \"\\e9b2\";\r\n}\r\n.icon-sina:before {\r\n  content: \"\\e9b3\";\r\n}\r\n.icon-sitemap:before {\r\n  content: \"\\e9b4\";\r\n}\r\n.icon-smile:before {\r\n  content: \"\\e9b5\";\r\n}\r\n.icon-sort:before {\r\n  content: \"\\e9b6\";\r\n}\r\n.icon-star:before {\r\n  content: \"\\e9b7\";\r\n}\r\n.icon-stop:before {\r\n  content: \"\\e9b8\";\r\n}\r\n.icon-tree-application:before {\r\n  content: \"\\e9b9\";\r\n}\r\n.icon-tree-Group:before {\r\n  content: \"\\e9ba\";\r\n}\r\n.icon-tree-module:before {\r\n  content: \"\\e9bb\";\r\n}\r\n.icon-tree-process:before {\r\n  content: \"\\e9bc\";\r\n}\r\n.icon-un-full-screen:before {\r\n  content: \"\\e9bd\";\r\n}\r\n.icon-unlock:before {\r\n  content: \"\\e9be\";\r\n}\r\n.icon-upload:before {\r\n  content: \"\\e9bf\";\r\n}\r\n.icon-user:before {\r\n  content: \"\\e9c0\";\r\n}\r\n.icon-weixin:before {\r\n  content: \"\\e9c1\";\r\n}\r\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bk-icon-2.0/iconfont.json",
    "content": "{\r\n  \"selection\": [\r\n    {\r\n      \"order\": 668,\r\n      \"name\": \"more\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 554,\r\n      \"name\": \"circle-2-1\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 555,\r\n      \"name\": \"circle-4-1\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 556,\r\n      \"name\": \"angle-double-down\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 557,\r\n      \"name\": \"angle-double-left\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 558,\r\n      \"name\": \"angle-double-right\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 559,\r\n      \"name\": \"angle-double-up\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 560,\r\n      \"name\": \"angle-down\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 561,\r\n      \"name\": \"angle-left\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 562,\r\n      \"name\": \"angle-right\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 563,\r\n      \"name\": \"angle-up\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 564,\r\n      \"name\": \"apps\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 565,\r\n      \"name\": \"area-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 566,\r\n      \"name\": \"arrows-down\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 567,\r\n      \"name\": \"arrows-down-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 568,\r\n      \"name\": \"arrows-left\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 569,\r\n      \"name\": \"arrows-left-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 570,\r\n      \"name\": \"arrows-right\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 571,\r\n      \"name\": \"arrows-right-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 572,\r\n      \"name\": \"arrows-up\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 573,\r\n      \"name\": \"arrows-up-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 574,\r\n      \"name\": \"back\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 575,\r\n      \"name\": \"back2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 576,\r\n      \"name\": \"bar-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 577,\r\n      \"name\": \"bk\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 578,\r\n      \"name\": \"calendar\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 579,\r\n      \"name\": \"chain\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 580,\r\n      \"name\": \"check-1\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 581,\r\n      \"name\": \"check-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 582,\r\n      \"name\": \"circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 583,\r\n      \"name\": \"clipboard\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 584,\r\n      \"name\": \"clock\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 585,\r\n      \"name\": \"close\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 586,\r\n      \"name\": \"close-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 587,\r\n      \"name\": \"delete\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 588,\r\n      \"name\": \"code\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 589,\r\n      \"name\": \"cog\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 590,\r\n      \"name\": \"cry\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 591,\r\n      \"name\": \"dashboard\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 592,\r\n      \"name\": \"dashboard-2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 593,\r\n      \"name\": \"data\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 594,\r\n      \"name\": \"data2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 595,\r\n      \"name\": \"dedent\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 596,\r\n      \"name\": \"dialogue\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 597,\r\n      \"name\": \"dialogue-empty\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 598,\r\n      \"name\": \"dispirited\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 599,\r\n      \"name\": \"download\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 600,\r\n      \"name\": \"edit\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 601,\r\n      \"name\": \"edit2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 602,\r\n      \"name\": \"ellipsis\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 603,\r\n      \"name\": \"email\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 604,\r\n      \"name\": \"empty\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 605,\r\n      \"name\": \"end\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 606,\r\n      \"name\": \"exclamation\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 607,\r\n      \"name\": \"exclamation-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 608,\r\n      \"name\": \"exclamation-triangle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 609,\r\n      \"name\": \"eye\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 610,\r\n      \"name\": \"eye-slash\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 611,\r\n      \"name\": \"file\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 612,\r\n      \"name\": \"file-plus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 613,\r\n      \"name\": \"folder\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 614,\r\n      \"name\": \"folder-open\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 615,\r\n      \"name\": \"folder-plus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 616,\r\n      \"name\": \"full-screen\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 617,\r\n      \"name\": \"heart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 618,\r\n      \"name\": \"hide\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 619,\r\n      \"name\": \"home\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 620,\r\n      \"name\": \"id\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 621,\r\n      \"name\": \"image\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 622,\r\n      \"name\": \"indent\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 623,\r\n      \"name\": \"info\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 624,\r\n      \"name\": \"info-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 625,\r\n      \"name\": \"key\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 626,\r\n      \"name\": \"line-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 627,\r\n      \"name\": \"list\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 628,\r\n      \"name\": \"lock\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 629,\r\n      \"name\": \"minus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 630,\r\n      \"name\": \"minus-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 631,\r\n      \"name\": \"minus-square\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 632,\r\n      \"name\": \"mobile\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 633,\r\n      \"name\": \"move\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 634,\r\n      \"name\": \"next\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 635,\r\n      \"name\": \"order\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 636,\r\n      \"name\": \"password\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 637,\r\n      \"name\": \"pause\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 638,\r\n      \"name\": \"pc\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 639,\r\n      \"name\": \"pie-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 640,\r\n      \"name\": \"pipeline\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 641,\r\n      \"name\": \"play\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 642,\r\n      \"name\": \"play2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 643,\r\n      \"name\": \"play3\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 644,\r\n      \"name\": \"plus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 645,\r\n      \"name\": \"plus-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 646,\r\n      \"name\": \"plus-square\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 647,\r\n      \"name\": \"qq\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 648,\r\n      \"name\": \"question\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 649,\r\n      \"name\": \"question-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 650,\r\n      \"name\": \"refresh\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 651,\r\n      \"name\": \"save\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 652,\r\n      \"name\": \"search\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 653,\r\n      \"name\": \"sina\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 654,\r\n      \"name\": \"sitemap\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 655,\r\n      \"name\": \"smile\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 656,\r\n      \"name\": \"sort\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 657,\r\n      \"name\": \"star\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 658,\r\n      \"name\": \"stop\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 659,\r\n      \"name\": \"tree-application\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 660,\r\n      \"name\": \"tree-Group\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 661,\r\n      \"name\": \"tree-module\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 662,\r\n      \"name\": \"tree-process\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 663,\r\n      \"name\": \"un-full-screen\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 664,\r\n      \"name\": \"unlock\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 665,\r\n      \"name\": \"upload\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 666,\r\n      \"name\": \"user\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 667,\r\n      \"name\": \"weixin\",\r\n      \"prevSize\": 24\r\n    }\r\n  ],\r\n  \"metadata\": {\r\n    \"name\": \"bk-icons-linear\",\r\n    \"designer\": \"Blueking\",\r\n    \"designerURL\": \"http://bk.tencent.com/\",\r\n    \"license\": \"MIT\",\r\n    \"importSize\": {\r\n      \"width\": 16,\r\n      \"height\": 16\r\n    },\r\n    \"iconsHash\": 1973224909\r\n  },\r\n  \"height\": 1024,\r\n  \"prevSize\": 24,\r\n  \"icons\": [\r\n    {\r\n      \"paths\": [\r\n        \"M448 256c0-35.2 28.8-64 64-64s64 28.8 64 64c0 35.2-28.8 64-64 64s-64-28.8-64-64zM512 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64zM512 704c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64z\"\r\n      ],\r\n      \"grid\": 16,\r\n      \"tags\": [\r\n        \"more\"\r\n      ],\r\n      \"defaultCode\": 59648\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-17.92 0-32 14.080-32 32s14.080 32 32 32c247.040 0 448 200.96 448 448s-200.96 448-448 448c-17.92 0-32 14.080-32 32s14.080 32 32 32c282.24 0 512-229.76 512-512s-229.76-512-512-512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"2_circle\"\r\n      ],\r\n      \"defaultCode\": 59649,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-17.92 0-32 14.080-32 32s14.080 32 32 32c247.040 0 448 200.96 448 448 0 17.92 14.080 32 32 32s32-14.080 32-32c0-282.24-229.76-512-512-512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"4_circle\"\r\n      ],\r\n      \"defaultCode\": 59650,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M906.24 462.72l-394.24 364.16-394.24-364.16c-12.8-12.16-33.28-10.88-45.44 1.92s-10.88 33.28 1.92 45.44l416 384c6.4 5.76 14.080 8.32 21.76 8.32s15.36-2.56 21.76-8.32l416-384c12.8-12.16 14.080-32 1.92-45.44-12.16-12.8-32.64-13.44-45.44-1.92z\",\r\n        \"M490.24 561.28c6.4 5.76 14.080 8.32 21.76 8.32s15.36-2.56 21.76-8.32l416-384c12.8-12.16 14.080-32 1.92-45.44-12.16-12.8-32-13.44-45.44-1.92l-394.24 364.16-394.24-364.16c-12.8-12.16-33.28-11.52-45.44 1.92-12.16 12.8-10.88 33.28 1.92 45.44l416 384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_down\"\r\n      ],\r\n      \"defaultCode\": 59651,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M197.12 512l364.16-394.24c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-384 416c-11.52 12.16-11.52 31.36 0 43.52l384 416c6.4 7.040 15.36 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-364.16-394.24z\",\r\n        \"M529.92 512l364.16-394.24c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-384 416c-11.52 12.16-11.52 31.36 0 43.52l384 416c6.4 7.040 14.72 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-364.16-394.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_left\"\r\n      ],\r\n      \"defaultCode\": 59652,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M894.080 490.24l-384-416c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l364.16 394.24-364.16 394.24c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24l384-416c10.88-12.16 10.88-31.36 0-43.52z\",\r\n        \"M561.28 490.24l-384-416c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l364.16 394.24-364.16 394.24c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24l384-416c10.88-12.16 10.88-31.36 0-43.52z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_right\"\r\n      ],\r\n      \"defaultCode\": 59653,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M117.76 561.28l394.24-364.16 394.24 364.16c6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24 12.16-12.8 10.88-33.28-1.92-45.44l-416-384c-12.16-11.52-31.36-11.52-43.52 0l-416 384c-12.8 12.16-14.080 32-1.92 45.44 12.16 12.8 32.64 13.44 45.44 1.92z\",\r\n        \"M533.76 462.72c-12.16-11.52-31.36-11.52-43.52 0l-416 384c-12.8 12.16-14.080 32-1.92 45.44 12.16 12.8 32 13.44 45.44 1.92l394.24-364.16 394.24 364.16c6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24 12.16-12.8 10.88-33.28-1.92-45.44l-416-384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_up\"\r\n      ],\r\n      \"defaultCode\": 59654,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 797.44c-7.68 0-15.36-2.56-21.76-8.32l-480-442.88c-12.8-12.16-14.080-32-1.92-45.44 12.16-12.8 32-14.080 45.44-1.92l458.24 423.040 458.24-423.040c12.8-12.16 33.28-10.88 45.44 1.92s10.88 33.28-1.92 45.44l-480 442.88c-6.4 5.76-14.080 8.32-21.76 8.32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_down\"\r\n      ],\r\n      \"defaultCode\": 59655,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M704 960c-8.32 0-17.28-3.2-23.68-10.24l-384-416c-11.52-12.16-11.52-31.36 0-43.52l384-416c12.16-12.8 32-14.080 45.44-1.92 12.8 12.16 14.080 32 1.92 45.44l-364.16 394.24 364.16 394.24c12.16 12.8 10.88 33.28-1.92 45.44-6.4 5.76-14.080 8.32-21.76 8.32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_left\"\r\n      ],\r\n      \"defaultCode\": 59656,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M320 960c-7.68 0-15.36-2.56-21.76-8.32-12.8-12.16-14.080-32-1.92-45.44l364.16-394.24-364.16-394.24c-12.16-12.8-10.88-33.28 1.92-45.44s33.28-10.88 45.44 1.92l384 416c11.52 12.16 11.52 31.36 0 43.52l-384 416c-6.4 7.040-15.36 10.24-23.68 10.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_right\"\r\n      ],\r\n      \"defaultCode\": 59657,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 797.44c-7.68 0-15.36-2.56-21.76-8.32l-458.24-423.040-458.24 423.040c-12.8 12.16-33.28 11.52-45.44-1.92-12.16-12.8-10.88-33.28 1.92-45.44l480-442.88c12.16-11.52 31.36-11.52 43.52 0l480 442.88c12.8 12.16 14.080 32 1.92 45.44-6.4 7.040-15.36 10.24-23.68 10.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_up\"\r\n      ],\r\n      \"defaultCode\": 59658,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M352.22 1024h-256.16c-53.052 0-96.060-43.008-96.060-96.060v-256.16c0-53.052 43.008-96.060 96.060-96.060h256.16c53.052 0 96.060 43.008 96.060 96.060v256.16c0 53.052-43.008 96.060-96.060 96.060zM96.060 639.76c-17.684 0-32.020 14.336-32.020 32.020v256.16c0 17.684 14.336 32.020 32.020 32.020h256.16c17.684 0 32.020-14.336 32.020-32.020v-256.16c0-17.684-14.336-32.020-32.020-32.020z\",\r\n        \"M352.22 511.68h-256.16c-53.052 0-96.060-43.008-96.060-96.060v-256.16c0-53.052 43.008-96.060 96.060-96.060h256.16c53.052 0 96.060 43.008 96.060 96.060v256.16c0 53.052-43.008 96.060-96.060 96.060zM96.060 127.44c-17.684 0-32.020 14.336-32.020 32.020v256.16c0 17.684 14.336 32.020 32.020 32.020h256.16c17.684 0 32.020-14.336 32.020-32.020v-256.16c0-17.684-14.336-32.020-32.020-32.020z\",\r\n        \"M864.54 1024h-256.16c-53.052 0-96.060-43.008-96.060-96.060v-256.16c0-53.052 43.008-96.060 96.060-96.060h256.16c53.052 0 96.060 43.008 96.060 96.060v256.16c0 53.052-43.008 96.060-96.060 96.060zM608.38 639.76c-17.684 0-32.020 14.336-32.020 32.020v256.16c0 17.684 14.336 32.020 32.020 32.020h256.16c17.684 0 32.020-14.336 32.020-32.020v-256.16c0-17.684-14.336-32.020-32.020-32.020z\",\r\n        \"M752.47 543.7c-0.054 0-0.118 0-0.181 0-26.464 0-50.411-10.773-67.696-28.173l-176.115-176.115c-17.358-17.379-28.093-41.377-28.093-67.882s10.735-50.503 28.094-67.883l176.109-176.109c17.644-16.767 41.559-27.080 67.882-27.080s50.239 10.313 67.925 27.12l176.068 176.070c17.358 17.379 28.093 41.377 28.093 67.882s-10.735 50.503-28.094 67.883l-176.109 176.109c-17.29 17.405-41.238 28.178-67.701 28.178-0.064 0-0.128-0-0.191-0zM752.47 63.4c-8.789 0.129-16.702 3.78-22.409 9.601l-176.756 176.115c-5.85 5.804-9.471 13.846-9.471 22.734s3.621 16.931 9.469 22.732l176.753 176.112c5.804 5.85 13.846 9.471 22.734 9.471s16.931-3.621 22.732-9.469l176.112-176.753c5.85-5.804 9.471-13.846 9.471-22.734s-3.621-16.931-9.469-22.732l-176.753-176.112c-5.75-5.548-13.586-8.966-22.222-8.966-0.068 0-0.135 0-0.203 0.001z\"\r\n      ],\r\n      \"width\": 1025,\r\n      \"tags\": [\r\n        \"apps\"\r\n      ],\r\n      \"defaultCode\": 59659,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 832h-928v-672c0-17.92-14.080-32-32-32s-32 14.080-32 32v704c0 17.92 14.080 32 32 32h960c17.92 0 32-14.080 32-32s-14.080-32-32-32z\",\r\n        \"M168.32 416l112.64-165.76c9.6-14.72 28.8-17.28 42.24-5.76l292.48 247.040c13.44 11.52 36.48 12.8 51.2 3.2l138.88-92.8c14.72-9.6 31.36-3.84 37.12 12.8l109.44 320c0 1.28-0.64 1.92-1.92 1.92h-782.080z\"\r\n      ],\r\n      \"tags\": [\r\n        \"area_chart\"\r\n      ],\r\n      \"defaultCode\": 59660,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M833.28 571.52c-12.16-12.8-32-14.080-45.44-1.92l-243.84 222.080v-631.68c0-17.92-14.080-32-32-32s-32 14.080-32 32v631.68l-244.48-222.080c-12.8-12.16-33.28-10.88-45.44 1.92s-10.88 33.28 1.92 45.44l297.6 270.72c1.28 1.28 3.2 1.92 5.12 3.2 1.28 0.64 2.56 1.92 4.48 2.56 4.48 1.92 8.96 2.56 12.8 2.56s8.32-0.64 12.16-2.56c1.92-0.64 3.2-1.92 4.48-2.56 1.92-1.28 3.84-1.92 5.12-3.2l297.6-270.72c13.44-12.16 14.080-32 1.92-45.44z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_down\"\r\n      ],\r\n      \"defaultCode\": 59661,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M680.32 540.16l-136.32 123.52v-375.68c0-17.92-14.080-32-32-32s-32 14.080-32 32v375.68l-135.68-123.52c-12.8-11.52-33.28-10.88-45.44 1.92-12.16 13.44-10.88 33.28 1.92 45.44l189.44 172.16c1.28 1.28 3.2 1.92 5.12 3.2 1.28 0.64 2.56 1.92 4.48 2.56 3.84 1.92 8.32 2.56 12.16 2.56s8.32-0.64 12.16-2.56c1.92-0.64 3.2-1.92 4.48-2.56 1.92-1.28 3.84-1.92 5.12-3.2l189.44-172.16c13.44-12.16 14.080-32 1.92-45.44-11.52-12.8-32-14.080-44.8-1.92z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_down_circle\"\r\n      ],\r\n      \"defaultCode\": 59662,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 480h-631.68l222.080-244.48c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-270.72 298.24c-1.28 1.92-1.92 3.84-3.2 5.12-0.64 1.92-1.92 3.2-2.56 4.48-3.2 7.68-3.2 16 0 23.68 0.64 1.92 1.92 3.2 2.56 4.48 1.28 1.92 1.92 3.84 3.2 5.76l270.72 297.6c6.4 7.040 14.72 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-222.080-243.84h631.68c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_left\"\r\n      ],\r\n      \"defaultCode\": 59663,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M736 480h-375.68l123.52-136.32c12.16-12.8 10.88-33.28-1.92-45.44-12.8-11.52-33.28-10.24-45.44 2.56l-172.16 189.44c-1.28 1.92-1.92 3.84-3.2 5.12-0.64 1.92-1.92 3.2-2.56 4.48-3.2 7.68-3.2 16 0 23.68 0.64 1.92 1.92 3.2 2.56 4.48 1.28 1.92 1.92 3.84 3.2 5.76l172.16 189.44c6.4 7.040 14.72 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-123.52-135.68h375.68c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_left_circle\"\r\n      ],\r\n      \"defaultCode\": 59664,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M893.44 524.16c1.28-3.84 2.56-7.68 2.56-11.52 0 0 0-0.64 0-0.64s0-0.64 0-0.64c0-3.84-0.64-7.68-1.92-10.88-0.64-1.92-1.92-3.2-2.56-4.48-1.28-1.92-1.92-3.84-3.2-5.12l-271.36-298.24c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l222.080 244.48h-631.68c-17.92-0.64-32 13.44-32 31.36s14.080 32 32 32h631.68l-222.080 244.48c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.2 23.68-10.24l270.72-297.6c1.28-1.28 1.92-3.2 3.2-5.12 0.64-2.56 1.92-3.84 2.56-5.12z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_right\"\r\n      ],\r\n      \"defaultCode\": 59665,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M768 512.64c0 0 0-0.64 0-0.64s0-0.64 0-0.64c0-3.84-0.64-7.68-1.92-10.88-0.64-1.92-1.92-3.2-2.56-4.48-1.28-1.92-1.92-3.84-3.2-5.12l-172.8-190.080c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l123.52 136.32h-375.68c-17.92-0.64-32 13.44-32 31.36s14.080 32 32 32h375.68l-123.52 136.32c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.2 23.68-10.24l172.16-189.44c1.28-1.28 1.92-3.2 3.2-5.12 0.64-1.28 1.92-3.2 2.56-4.48 1.28-4.48 2.56-8.32 2.56-12.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_right_circle\"\r\n      ],\r\n      \"defaultCode\": 59666,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M831.36 407.040l-297.6-270.72c-1.92-1.28-3.84-1.92-5.12-3.2-1.92-0.64-3.2-1.92-4.48-2.56-3.84-1.28-7.68-2.56-11.52-2.56 0 0-0.64 0-0.64 0s-0.64 0-0.64 0c-3.84 0-7.68 1.28-11.52 2.56-1.28 0.64-2.56 1.92-4.48 2.56-1.28 1.28-3.2 1.92-5.12 3.2l-297.6 270.72c-12.8 12.16-14.080 32-1.92 45.44s32 14.080 45.44 1.92l243.84-222.080v631.68c0 17.92 14.080 32 32 32s32-14.080 32-32v-631.68l244.48 222.080c6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.84 23.68-10.24 11.52-13.44 10.88-33.28-2.56-45.44z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_up\"\r\n      ],\r\n      \"defaultCode\": 59667,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M533.76 264.32c-1.92-1.28-3.84-1.92-5.12-3.2-1.92-0.64-3.2-1.92-5.12-2.56-3.2-1.28-7.040-1.92-10.24-2.56-0.64 0-0.64 0-1.28 0 0 0-0.64 0-0.64 0-3.84 0-7.68 0.64-11.52 2.56-1.28 0.64-2.56 1.92-4.48 2.56-1.28 1.28-3.2 1.92-5.12 3.2l-189.44 172.16c-12.8 12.16-14.080 32-1.92 45.44 12.16 12.8 32 14.080 45.44 1.92l135.68-123.52v375.68c0 17.92 14.080 32 32 32s32-14.080 32-32v-375.68l136.32 123.52c6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.84 23.68-10.24 12.16-12.8 10.88-33.28-1.92-45.44l-190.080-172.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_up_circle\"\r\n      ],\r\n      \"defaultCode\": 59668,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 64.64c-7.040 0-14.080 1.92-19.84 7.040l-512 415.36c-16 12.8-16 37.12 0 49.92l512 415.36c6.4 5.12 13.44 7.040 19.84 7.040 16.64 0 32-12.8 32-32v-830.72c0-18.56-15.36-32-32-32zM800 860.16l-429.44-348.16 429.44-348.16v696.32z\",\r\n        \"M160 64c-17.92 0-32 14.080-32 32v832c0 17.92 14.080 32 32 32s32-14.080 32-32v-832c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"back\"\r\n      ],\r\n      \"defaultCode\": 59669,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M544 256h-306.56l73.6-73.6c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-83.2 83.2c-37.12 37.12-37.12 98.56 0 135.68l82.56 82.56c6.4 6.4 14.72 9.6 23.040 9.6s16.64-3.2 22.4-9.6c12.8-12.8 12.8-32.64 0-45.44l-72.96-72.96h306.56c158.72 0 288 114.56 288 256s-114.56 256-256 256h-288c-17.92 0-32 14.080-32 32s14.080 32 32 32h288c176.64 0 320-143.36 320-320s-158.080-320-352-320z\"\r\n      ],\r\n      \"tags\": [\r\n        \"back2\"\r\n      ],\r\n      \"defaultCode\": 59670,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 832h-928v-672c0-17.92-14.080-32-32-32s-32 14.080-32 32v704c0 17.92 14.080 32 32 32h960c17.92 0 32-14.080 32-32s-14.080-32-32-32z\",\r\n        \"M200.32 736h48c17.92 0 32-14.080 32-32v-352c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v352c0 17.92 14.080 32 32 32z\",\r\n        \"M424.32 736h48c17.92 0 32-14.080 32-32v-544c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v544c0 17.92 14.080 32 32 32z\",\r\n        \"M648.32 736h48c17.92 0 32-14.080 32-32v-224c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v224c0 17.92 14.080 32 32 32z\",\r\n        \"M872.32 736h48c17.92 0 32-14.080 32-32v-96c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v96c0 17.92 14.080 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"bar_chart\"\r\n      ],\r\n      \"defaultCode\": 59671,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M384 289.28c103.511 18.974 183.906 99.369 202.645 201.34l5.355 37.38c1.664 83.618 32.609 159.702 82.963 218.724 32.743 37.848 81.038 62.305 135.070 63.512 2.893 0.131 6.041 0.203 9.206 0.203 49.851 0 95.502-17.98 130.823-47.808 47.421-42.377 77.321-104.091 77.321-172.789 0-13.936-1.23-27.584-3.589-40.843-15.802-115.612-96.292-210.431-203.728-246.927-5.83-59.972-33.491-112.204-75.464-148.237-37.326-34.435-87.026-55.407-141.624-55.407-15.45 0-30.507 1.679-45 4.865-50.978 13.144-95.035 42.857-126.222 83.055-5.349 6.138-8.373 13.551-8.373 21.671 0 9.702 4.318 18.395 11.136 24.264l3.882 0.035c-16.194-4.069-34.894-6.611-54.115-7.035-6.122-0.402-12.937-0.628-19.805-0.628s-13.683 0.226-20.438 0.672l0.918-10.928c2.146-25.821 17.213-47.697 38.649-59.326 9.194-6.020 14.921-15.878 14.921-27.074 0-17.745-14.385-32.129-32.129-32.129-6.549 0-12.64 1.959-17.719 5.324-21.296 13.667-38.167 32.799-48.818 55.437-15.283-6.45-32.842-10.693-51.392-10.693-8.665 0-17.114 0.926-25.253 2.684-14.038 3.203-24.942 16.257-24.942 31.858 0 18.096 14.67 32.765 32.765 32.765 2.495 0 4.924-0.279 7.259-0.807 2.119-0.298 4.818-0.492 7.563-0.492 18.069 0 34.174 8.414 44.609 21.537l0.089 0.117c-122.24 28.16-197.12 139.52-240 236.8-33.28 74.88-80.64 215.68-24.32 316.8 29.62 61.043 88.975 103.532 158.719 108.761l704.641 0.039c17.673 0 32-14.327 32-32s-14.327-32-32-32h-704c-46.865-4.923-85.815-34.493-103.996-75.345-44.484-80.175 3.516-208.815 26.556-260.655 65.92-147.2 156.8-217.6 275.84-206.72zM480 229.12c22.819-30.959 55.277-53.65 92.895-63.73 10.070-2.168 20.278-3.255 30.74-3.255 37.877 0 72.427 14.244 98.586 37.668 31.776 28.801 51.738 70.411 51.738 116.685 0 1.235-0.014 2.466-0.042 3.694l0.003 32.457 24.96 3.84c95.283 23.285 167.236 101.484 180.973 198.412 1.914 10.51 2.924 21.141 2.924 32.008 0 52.511-23.597 99.51-60.766 130.973-21.518 16.537-48.512 26.376-77.803 26.376-4.242 0-8.436-0.206-12.573-0.61 0.52 0.041 0.514 0.041 0.509 0.041-35.592 0-67.555-15.537-89.478-40.198-39.378-48.777-63.39-111.177-64.105-179.163l-5.761-42.399c-22.953-111.752-100.307-201.385-202.566-241.156-1.098-0.63 0.217-0.553 1.55-0.553 10.23 0 19.402-4.528 25.621-11.69z\"\r\n      ],\r\n      \"tags\": [\r\n        \"bk\"\r\n      ],\r\n      \"defaultCode\": 59672,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M928 112h-112v-48c0-17.673-14.327-32-32-32h-32c-17.673 0-32 14.327-32 32v48h-417.92v-48c0-17.673-14.327-32-32-32h-32c-17.673 0-32 14.327-32 32v48h-110.080c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-704c0-53.019-42.981-96-96-96zM64 208c0-17.673 14.327-32 32-32h110.080v16c0 17.673 14.327 32 32 32h32c17.673 0 32-14.327 32-32v-16h417.92v16c0 17.673 14.327 32 32 32h32c17.673 0 32-14.327 32-32v-16h112c17.673 0 32 14.327 32 32v96h-896zM928 944h-832c-17.673 0-32-14.327-32-32v-544h896v544c0 17.673-14.327 32-32 32z\",\r\n        \"M800 560h-448c-17.673 0-32 14.327-32 32s14.327 32 32 32h448c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M800 752h-576c-17.673 0-32 14.327-32 32s14.327 32 32 32h576c17.673 0 32-14.327 32-32s-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"calendar\"\r\n      ],\r\n      \"defaultCode\": 59673,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M991.977 740.89l-235.076-235.076c-18.668-19-44.163-31.239-72.506-32.739-0.459-0.013-0.679-0.013-0.9-0.013-28.303 0-53.871 11.707-72.127 30.543l-24.77 24.771-93.157-88.79 26.2-26.2c19.727-19.751 31.927-47.024 31.927-77.146s-12.2-57.395-31.928-77.147l-229.253-227.069c-19.751-19.727-47.024-31.927-77.146-31.927s-57.395 12.2-77.147 31.928l-104.073 104.073c-19.727 19.751-31.927 47.024-31.927 77.146s12.2 57.395 31.928 77.147l229.253 229.253c19.751 19.727 47.024 31.927 77.146 31.927s57.395-12.2 77.147-31.928l24.016-26.199 88.79 86.607-24.745 24.745c-18.743 18.595-30.398 44.309-30.567 72.747 1.512 28.648 13.751 54.143 32.735 72.796l235.092 235.092c19.893 20.067 47.406 32.552 77.836 32.75 28.492-0.254 54.181-11.888 72.815-30.565l101.165-101.165c17.332-19.047 27.945-44.475 27.945-72.382 0-28.286-10.903-54.025-28.736-73.245zM366.806 467.969c-6.674 6.476-15.789 10.468-25.837 10.468s-19.163-3.992-25.846-10.477l-231.428-229.245c-6.648-6.596-10.764-15.735-10.764-25.837s4.116-19.241 10.762-25.834l104.076-103.348c6.596-6.648 15.735-10.764 25.837-10.764s19.241 4.116 25.834 10.762l228.528 229.256c6.648 6.596 10.764 15.735 10.764 25.837s-4.116 19.241-10.762 25.834l-28.386 25.475-34.206-34.206c-6.612-6.612-15.747-10.702-25.837-10.702-20.18 0-36.538 16.359-36.538 36.538 0 10.090 4.090 19.224 10.702 25.837l36.389 32.023zM945.399 842.053l-101.163 101.163c-6.403 6.177-15.13 9.982-24.745 9.982s-18.342-3.805-24.756-9.992l-237.249-237.977c-6.66-6.74-10.807-15.976-10.917-26.179 0.234-8.222 3.516-15.614 8.747-21.142l24.731-24.73 37.845 37.845c6.612 6.612 15.747 10.702 25.837 10.702 20.18 0 36.538-16.359 36.538-36.538 0-10.090-4.090-19.224-10.702-25.837l-37.845-37.845 26.2-26.2c5.617-5.412 13.269-8.745 21.7-8.745 0.303 0 0.605 0.004 0.906 0.013l-0.044-0.001c10.225 0.11 19.46 4.257 26.204 10.921l235.072 235.072c6.397 6.444 10.351 15.321 10.351 25.122 0 9.432-3.662 18.009-9.641 24.387z\"\r\n      ],\r\n      \"tags\": [\r\n        \"chain\"\r\n      ],\r\n      \"defaultCode\": 59674,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M416 864c-8.784-0.129-16.691-3.778-22.395-9.595l-384.005-384.005c-5.815-5.815-9.411-13.847-9.411-22.72 0-17.745 14.386-32.131 32.131-32.131 8.873 0 16.905 3.596 22.72 9.411l360.32 360.32 553.6-615.040c5.768-5.662 13.681-9.157 22.409-9.157 17.673 0 32 14.327 32 32 0 7.612-2.658 14.604-7.097 20.097l-575.953 639.939c-5.676 6.446-13.847 10.579-22.988 10.879z\"\r\n      ],\r\n      \"tags\": [\r\n        \"check_1\"\r\n      ],\r\n      \"defaultCode\": 59675,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM438.4 758.4l384-384c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-360.96 361.6-169.6-168.96c-12.8-12.8-32.64-12.8-45.44 0s-12.8 32.64 0 45.44l192 192c6.4 5.76 14.72 8.96 23.040 8.96s16.64-3.2 22.4-9.6z\"\r\n      ],\r\n      \"tags\": [\r\n        \"check_2\"\r\n      ],\r\n      \"defaultCode\": 59676,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448z\"\r\n      ],\r\n      \"tags\": [\r\n        \"circle\"\r\n      ],\r\n      \"defaultCode\": 59677,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1024 518.4c-0.269-4.829-1.908-9.228-4.529-12.872l0.049-3.128-187.52-234.24-5.12-4.48h-122.88v-172.16c0.001-0.191 0.002-0.416 0.002-0.642 0-49.967-40.326-90.516-90.208-90.878l-523.554-0c-49.917 0.362-90.242 40.91-90.242 90.878 0 0.226 0.001 0.451 0.002 0.677l-0 712.925c-0.001 0.191-0.002 0.416-0.002 0.642 0 49.967 40.326 90.516 90.208 90.878l357.794 0v49.92c0.362 43.2 35.467 78.080 78.717 78.080 0.001 0 0.002-0 0.003-0l419.2 0c43.2-0.362 78.080-35.467 78.080-78.717 0-0.001-0-0.002-0-0.003l0-422.4c0.053-0.67 0.084-1.452 0.084-2.24s-0.030-1.57-0.090-2.343zM443.52 832h-353.28c-14.571-0.354-26.248-12.249-26.248-26.873 0-0.228 0.003-0.455 0.008-0.681l-0.001-712.926c-0.005-0.193-0.008-0.42-0.008-0.647 0-14.623 11.677-26.519 26.215-26.872l523.553-0.001c14.571 0.354 26.248 12.249 26.248 26.873 0 0.228-0.003 0.455-0.008 0.681l0.001 164.446h-113.28c-43.476 0-78.72 35.244-78.72 78.72v497.28zM945.92 960h-419.2c-8.13 0-14.72-6.59-14.72-14.72v-610.56c0-8.13 6.59-14.72 14.72-14.72h263.68l169.6 213.76v411.52c0 8.13-6.59 14.72-14.72 14.72z\",\r\n        \"M512 160c0-17.673-14.327-32-32-32h-256c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.673 0 32-14.327 32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"clipboard\"\r\n      ],\r\n      \"defaultCode\": 59678,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M716.8 761.6l-256-192c-8.32-5.76-12.8-15.36-12.8-25.6v-320c0-17.92 14.080-32 32-32s32 14.080 32 32v304l243.2 182.4c14.080 10.88 17.28 30.72 6.4 44.8-6.4 8.32-16 12.8-25.6 12.8-6.4 0-13.44-1.92-19.2-6.4z\",\r\n        \"M960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448 200.96 448 448 448 448-200.96 448-448zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"clock\"\r\n      ],\r\n      \"defaultCode\": 59679,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 1024c-8.32 0-16.64-3.2-22.4-9.6l-457.6-456.96-457.6 457.6c-12.8 12.8-32.64 12.8-45.44 0s-12.8-32.64 0-45.44l457.6-457.6-456.96-457.6c-12.8-12.8-12.8-32.64 0-45.44s32.64-12.8 45.44 0l456.96 457.6 457.6-457.6c12.8-12.8 32.64-12.8 45.44 0s12.8 32.64 0 45.44l-457.6 457.6 457.6 457.6c12.8 12.8 12.8 32.64 0 45.44-6.4 5.76-14.72 8.96-23.040 8.96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"close\"\r\n      ],\r\n      \"defaultCode\": 59680,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM736 768c-8.32 0-16.64-3.2-22.4-9.6l-201.6-200.96-201.6 201.6c-12.8 12.8-32.64 12.8-45.44 0s-12.8-32.64 0-45.44l201.6-201.6-200.96-201.6c-12.8-12.8-12.8-32.64 0-45.44s32.64-12.8 45.44 0l200.96 201.6 201.6-201.6c12.8-12.8 32.64-12.8 45.44 0s12.8 32.64 0 45.44l-201.6 201.6 201.6 201.6c12.8 12.8 12.8 32.64 0 45.44-6.4 5.76-14.72 8.96-23.040 8.96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"close_2\"\r\n      ],\r\n      \"defaultCode\": 59681,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M384 128h256c17.92 0 32-14.080 32-32s-14.080-32-32-32h-256c-17.92 0-32 14.080-32 32s14.080 32 32 32z\",\r\n        \"M928 192h-832c-17.92 0-32 14.080-32 32s14.080 32 32 32h96v672c0 17.92 14.080 32 32 32h576c17.92 0 32-14.080 32-32v-672h96c17.92 0 32-14.080 32-32s-14.080-32-32-32zM768 896h-128v-512c0-17.92-14.080-32-32-32s-32 14.080-32 32v512h-128v-512c0-17.92-14.080-32-32-32s-32 14.080-32 32v512h-128v-640h512v640z\"\r\n      ],\r\n      \"tags\": [\r\n        \"close3\"\r\n      ],\r\n      \"defaultCode\": 59682,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1011.2 489.6l-224-224c-12.8-12.8-32.64-12.8-45.44 0s-12.8 32.64 0 45.44l201.6 200.96-201.6 201.6c-12.8 12.8-12.8 32.64 0 45.44 6.4 6.4 14.72 9.6 22.4 9.6s16.64-3.2 22.4-9.6l224-224c12.8-12.8 12.8-33.28 0.64-45.44z\",\r\n        \"M282.24 265.6c-12.8-12.8-32.64-12.8-45.44 0l-224 224c-12.8 12.8-12.8 32.64 0 45.44l224 224c6.4 5.76 14.72 8.96 23.040 8.96s16.64-3.2 22.4-9.6c12.8-12.8 12.8-32.64 0-45.44l-201.6-200.96 201.6-201.6c12.16-12.16 12.16-32.64 0-44.8z\",\r\n        \"M616.32 129.28c-16.64-5.12-34.56 5.12-39.040 22.4l-192 704c-4.48 17.28 5.12 34.56 22.4 39.040 2.56 0.64 5.76 1.28 8.32 1.28 14.080 0 26.88-9.6 30.72-23.68l192-704c4.48-16.64-5.12-34.56-22.4-39.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"code\"\r\n      ],\r\n      \"defaultCode\": 59683,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 352c-88.32 0-160 71.68-160 160s71.68 160 160 160c88.32 0 160-71.68 160-160s-71.68-160-160-160zM512 608c-53.12 0-96-42.88-96-96s42.88-96 96-96 96 42.88 96 96-42.88 96-96 96z\",\r\n        \"M967.68 419.84l-69.76-14.080c-8.32-30.72-20.48-60.8-36.48-88.96l36.48-56.32c12.16-12.16 18.56-28.16 18.56-45.44s-7.040-33.28-19.2-45.44l-45.44-44.8c-24.96-24.96-65.92-24.32-85.76-3.2l-58.88 40.32c-26.88-14.72-55.68-26.88-85.12-35.2l-14.080-62.72c0-35.2-28.8-64-64-64h-64c-35.2 0-64 28.8-63.36 57.6l-14.080 69.76c-29.44 8.32-57.6 19.84-85.12 35.2l-53.76-35.84c-12.16-12.16-28.16-19.2-44.8-19.2-15.36-1.28-33.92 6.4-46.080 17.92l-45.44 44.8c-12.16 12.16-18.56 28.16-19.2 45.44 0 17.28 6.4 33.28 14.080 40.32l40.32 61.44c-15.36 28.16-27.52 58.24-36.48 88.96l-65.92 13.44c-35.2 0-64 28.8-64 64v64c0 35.2 27.52 62.080 57.6 63.36l74.88 14.72c8.96 29.44 21.12 58.24 36.48 84.48l-38.4 59.52c-12.16 12.16-18.56 28.16-18.56 45.44s7.040 33.28 19.2 45.44l45.44 44.8c24.96 24.96 65.92 24.32 85.76 3.2l65.92-44.8c24.32 12.8 49.92 23.68 76.8 31.36l14.72 71.68c0 35.2 28.8 64 64 64h64c35.2 0 64-28.8 63.36-57.6l15.36-77.44c26.88-7.68 52.48-17.92 76.8-31.36l60.8 40.96c24.96 24.96 65.28 25.6 90.24 0.64l45.44-44.8c12.16-12.16 19.2-28.16 19.2-45.44 0-16-5.76-30.72-16-42.88l-40.96-62.72c15.36-26.88 27.52-55.040 36.48-84.48l69.12-14.080c35.2 0 64-28.8 64-64v-64c-0-33.92-26.88-62.080-60.16-64zM957.44 548.48l-94.72 18.56c-12.16 2.56-21.76 11.52-24.96 23.68-8.96 36.48-23.68 71.040-44.16 103.040-7.040 10.88-7.040 24.32 0 34.56l57.6 87.040-50.56 40.96-81.92-55.68c-10.24-7.040-23.68-7.68-34.56-0.64-30.080 17.92-62.72 31.36-96 39.040-12.16 2.56-21.76 12.8-23.68 24.96l-20.48 103.68-64.64-6.4-19.2-97.28c-2.56-12.16-12.16-22.4-24.32-24.96-33.92-7.68-66.56-21.12-96.64-39.040-5.12-3.2-10.88-4.48-16.64-4.48-6.4 0-12.8 1.92-17.92 5.76l-87.040 59.52-41.6-49.92 53.76-81.92c7.040-10.88 7.040-24.32 0-34.56-20.48-32-35.2-66.56-44.16-103.040-2.56-12.16-12.16-21.76-24.32-23.68l-101.12-19.84 6.4-64.64 92.8-18.56c12.16-2.56 22.4-12.16 24.96-24.32 7.68-37.76 22.4-73.6 43.52-106.88 6.4-10.88 6.4-24.32 0-34.56l-55.040-83.2 50.56-40.96 76.16 51.84c10.24 7.040 24.32 7.68 35.2 0.64 32-19.84 66.56-34.56 103.68-42.88 12.16-2.56 21.76-12.8 24.32-24.96l17.28-95.36 64.64 6.4 17.92 89.6c2.56 12.16 12.16 22.4 24.32 24.96 36.48 8.32 71.68 22.4 103.68 42.88 10.88 6.4 24.32 6.4 35.2-0.64l80.64-55.68 41.6 49.92-51.2 78.080c-7.040 10.24-7.040 23.68-0.64 34.56 21.12 33.28 35.84 69.12 43.52 106.88 2.56 12.16 12.8 21.76 24.96 24.32l92.8 18.56c1.92 0.64 3.84 0.64 6.4 0.64l-6.4 64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"cog\"\r\n      ],\r\n      \"defaultCode\": 59684,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M416 320h-192c-17.92 0-32 14.080-32 32s14.080 32 32 32h64v352c0 17.92 14.080 32 32 32s32-14.080 32-32v-352h64c17.92 0 32-14.080 32-32s-14.080-32-32-32z\",\r\n        \"M800 320h-192c-17.92 0-32 14.080-32 32s14.080 32 32 32h64v352c0 17.92 14.080 32 32 32s32-14.080 32-32v-352h64c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"cry\"\r\n      ],\r\n      \"defaultCode\": 59685,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M576 688c0 35.2-28.8 64-64 64s-64-28.8-64-64c0-23.040 13.44-42.88 32-54.4v-281.6c0-17.92 14.080-32 32-32s32 14.080 32 32v281.6c18.56 11.52 32 31.36 32 54.4zM512 0c-282.24 0-512 229.76-512 512 0 153.6 67.84 297.6 186.88 395.52 5.76 5.12 13.44 7.040 20.48 7.040 8.96 0 18.56-3.84 24.96-11.52 11.52-13.44 8.96-33.92-4.48-44.8-104.32-85.76-163.84-211.84-163.84-346.24 0-247.040 200.96-448 448-448s448 200.96 448 448c0 130.56-56.32 254.080-155.52 339.2-13.44 11.52-14.72 32-3.2 45.44s32 14.72 45.44 3.2c112.64-97.28 177.28-238.72 177.28-387.84 0-282.24-229.76-512-512-512zM825.6 384c5.12 0 10.24-1.28 14.72-3.84 16-8.32 21.76-27.52 14.080-42.88-66.56-129.28-197.76-209.28-342.4-209.28-136.32 0-264.32 73.6-332.8 192-8.96 15.36-3.2 34.56 12.16 43.52s34.56 3.84 43.52-11.52c56.96-98.56 163.2-160 277.12-160 120.96 0 229.76 66.56 284.8 174.080 5.76 11.52 17.28 17.92 28.8 17.92z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dashboard\"\r\n      ],\r\n      \"defaultCode\": 59686,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M700.16 367.36l-134.4 248.32c5.76 9.6 10.24 20.48 10.24 32 0 35.2-28.8 64-64 64s-64-28.8-64-64c0-34.56 27.52-62.72 62.080-63.36l133.76-247.68c8.32-15.36 28.16-21.12 43.52-12.8s21.12 27.52 12.8 43.52zM512 87.68c-282.24 0-512 229.76-512 512 0 64.64 12.16 128 35.84 187.52 6.4 16.64 24.96 24.32 41.6 17.92s24.32-24.96 17.92-41.6c-21.12-51.2-31.36-106.88-31.36-163.2 0-247.040 200.96-448 448-448s448 200.96 448 448c0 56.96-10.24 112-31.36 164.48-6.4 16.64 1.28 35.2 17.92 41.6 3.84 1.28 7.68 2.56 11.52 2.56 12.8 0 24.96-7.68 29.44-20.48 24.32-60.8 36.48-123.52 36.48-188.16 0-282.88-229.76-512.64-512-512.64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dashboard-2\"\r\n      ],\r\n      \"defaultCode\": 59687,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1026.566 395.228c0-44.271-37.213-81.484-107.148-111.639 64.16-28.231 107.148-64.16 107.148-110.997 0-229.694-1026.566-229.694-1026.566 0 0 45.554 41.704 81.484 107.148 110.997-69.935 29.514-107.148 67.368-107.148 111.639s43.629 84.050 111.639 115.489c-73.143 26.947-111.639 64.16-111.639 110.356s44.271 82.125 113.564 113.564c-74.426 32.722-113.564 68.652-113.564 114.206 0 114.847 256.642 175.158 513.283 175.158s513.283-60.311 513.283-175.158c0-45.554-39.138-84.050-113.564-114.206 69.293-31.439 113.564-66.085 113.564-113.564s-38.496-83.409-111.639-110.356c68.010-31.439 111.639-68.652 111.639-115.489zM64.16 172.591c0-37.855 158.476-110.997 449.123-110.997s449.123 73.143 449.123 110.997c0 21.815-53.253 55.178-154.627 80.201-89.47 19.411-192.249 30.528-297.625 30.528-103.131 0-203.774-10.649-300.891-30.907-91.85-24.644-145.103-58.008-145.103-79.822zM962.406 848.842c0 37.855-158.476 110.997-449.123 110.997s-449.123-73.143-449.123-110.997c0-16.682 39.138-51.328 146.927-78.276 86.899 19.618 186.698 30.859 289.122 30.859 4.596 0 9.187-0.023 13.773-0.068 3.167 0.045 7.735 0.067 12.308 0.067 102.447 0 202.269-11.241 298.299-32.557 98.678 28.646 137.816 62.651 137.816 79.974zM962.406 621.073c0 37.855-158.476 110.997-449.123 110.997s-449.123-73.143-449.123-110.997c0-16.682 39.138-51.328 146.927-78.276 90.753 19.262 195.026 30.292 301.875 30.292s211.121-11.030 311.741-32.013c98.565 28.668 137.702 63.315 137.702 79.997zM513.283 506.226c-290.647 0-449.123-73.143-449.123-110.997 0-16.682 39.138-51.328 146.927-78.276h10.907c87.542 19.545 188.096 30.761 291.264 30.797 1.467 0.005 3.174 0.008 4.881 0.008 101.196 0 199.881-10.752 294.975-31.175l2.363 1.653c107.789 25.664 146.927 59.669 146.927 76.992 0 37.213-158.476 110.997-449.123 110.997z\"\r\n      ],\r\n      \"width\": 1027,\r\n      \"tags\": [\r\n        \"data\"\r\n      ],\r\n      \"defaultCode\": 59688,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M889.905 136.662c-83.409-182.216-798.155-182.216-881.564 0-5.136 5.549-8.299 12.987-8.341 21.165l-0 705.773c0.042 8.186 3.205 15.624 8.36 21.194 41.685 91.729 241.866 139.207 440.763 139.207s399.078-47.479 440.782-139.228c5.136-5.549 8.299-12.987 8.341-21.165l0-705.773c-0.042-8.186-3.205-15.624-8.36-21.194zM834.085 621.073c0 45.554-150.135 110.997-384.962 110.997s-384.962-64.16-384.962-110.997v-131.529c101.772 51.5 221.867 81.664 349.007 81.664 12.646 0 25.222-0.298 37.722-0.889 8.966 0.59 21.542 0.889 34.188 0.889 127.141 0 247.236-30.164 353.52-83.726zM834.085 395.228c0 45.554-150.135 110.997-384.962 110.997s-384.962-66.085-384.962-110.997v-128.321c101.772 51.5 221.867 81.664 349.007 81.664 12.646 0 25.222-0.298 37.722-0.889 8.966 0.59 21.542 0.889 34.188 0.889 127.141 0 247.236-30.164 353.52-83.726zM449.123 61.594c234.827 0 384.962 64.16 384.962 110.997s-150.135 110.997-384.962 110.997-384.962-64.16-384.962-110.997 150.135-110.997 384.962-110.997zM449.123 959.84c-234.827 0-384.962-64.16-384.962-110.997v-133.454c101.817 51.497 221.958 81.657 349.144 81.657 12.598 0 25.127-0.296 37.581-0.881 8.93 0.585 21.459 0.881 34.057 0.881 127.186 0 247.327-30.161 353.662-83.72l-4.518 135.516c0 46.837-150.135 110.997-384.962 110.997z\"\r\n      ],\r\n      \"width\": 898,\r\n      \"tags\": [\r\n        \"data2\"\r\n      ],\r\n      \"defaultCode\": 59689,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M63.36 512.64l170.88 160v-319.36l-170.88 159.36z\",\r\n        \"M32 160h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M32 929.28h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 415.36h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 672h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dedent\"\r\n      ],\r\n      \"defaultCode\": 59690,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 614.4v-460.8c-1.743-49.882-42.6-89.657-92.747-89.657-1.144 0-2.283 0.021-3.417 0.062l-639.836-0.005c-0.97-0.036-2.109-0.057-3.253-0.057-50.147 0-91.003 39.775-92.742 89.498l-0.004 460.959c1.743 49.882 42.6 89.657 92.747 89.657 1.144 0 2.283-0.021 3.417-0.062l31.836 0.005v96c0.068 13.224 8.147 24.544 19.629 29.362 2.039 0.449 4.14 0.661 6.291 0.661s4.252-0.212 6.284-0.617c8.58-0.095 16.487-3.744 22.191-9.561l119.045-115.845h434.56c0.97 0.036 2.109 0.057 3.253 0.057 50.147 0 91.003-39.775 92.742-89.498zM288 640c-8.784 0.129-16.691 3.778-22.395 9.595l-73.605 72.965v-50.56c0-17.673-14.327-32-32-32h-64c-0.671 0.053-1.454 0.084-2.243 0.084-15.061 0-27.537-11.070-29.736-25.517l-0.021-460.967c1.904-14.586 14.253-25.733 29.206-25.733 0.984 0 1.957 0.048 2.916 0.143l639.879-0.010c0.838-0.085 1.81-0.133 2.794-0.133 14.952 0 27.301 11.147 29.19 25.584l0.016 460.949c-1.904 14.586-14.253 25.733-29.206 25.733-0.984 0-1.957-0.048-2.916-0.143zM1024 281.6v460.8c-1.743 49.882-42.6 89.657-92.747 89.657-1.144 0-2.283-0.021-3.417-0.062l-31.836 0.005v96c-0.253 17.479-14.482 31.551-31.997 31.551-8.726 0-16.635-3.492-22.408-9.155l-119.035-118.395h-306.56c-17.673 0-32-14.327-32-32s14.327-32 32-32h320c8.784 0.129 16.691 3.778 22.395 9.595l73.605 72.965v-50.56c0-17.673 14.327-32 32-32h64c0.838 0.085 1.81 0.133 2.794 0.133 14.952 0 27.301-11.147 29.19-25.584l0.016-460.949c-1.904-14.586-14.253-25.733-29.206-25.733-0.984 0-1.957 0.048-2.916 0.143-17.552-0.010-31.879-14.337-31.879-32.010s14.327-32 32-32c0.97-0.036 2.109-0.057 3.253-0.057 50.147 0 91.003 39.775 92.742 89.498zM288 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zM480 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zM672 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dialogue\"\r\n      ],\r\n      \"defaultCode\": 59691,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 614.4v-460.8c-1.743-49.882-42.6-89.657-92.747-89.657-1.144 0-2.283 0.021-3.417 0.062l-639.836-0.005c-0.97-0.036-2.109-0.057-3.253-0.057-50.147 0-91.003 39.775-92.742 89.498l-0.004 460.959c1.743 49.882 42.6 89.657 92.747 89.657 1.144 0 2.283-0.021 3.417-0.062l31.836 0.005v96c0.068 13.224 8.147 24.544 19.629 29.362 2.039 0.449 4.14 0.661 6.291 0.661s4.252-0.212 6.284-0.617c8.58-0.095 16.487-3.744 22.191-9.561l119.045-115.845h434.56c0.97 0.036 2.109 0.057 3.253 0.057 50.147 0 91.003-39.775 92.742-89.498zM288 640c-8.784 0.129-16.691 3.778-22.395 9.595l-73.605 72.965v-50.56c0-17.673-14.327-32-32-32h-64c-0.671 0.053-1.454 0.084-2.243 0.084-15.061 0-27.537-11.070-29.736-25.517l-0.021-460.967c1.904-14.586 14.253-25.733 29.206-25.733 0.984 0 1.957 0.048 2.916 0.143l639.879-0.010c0.838-0.085 1.81-0.133 2.794-0.133 14.952 0 27.301 11.147 29.19 25.584l0.016 460.949c-1.904 14.586-14.253 25.733-29.206 25.733-0.984 0-1.957-0.048-2.916-0.143z\",\r\n        \"M928 192c-17.673 0-32 14.327-32 32s14.327 32 32 32c0.838-0.085 1.81-0.133 2.794-0.133 14.952 0 27.301 11.147 29.19 25.584l0.016 460.949c-1.904 14.586-14.253 25.733-29.206 25.733-0.984 0-1.957-0.048-2.916-0.143l-63.879 0.010c-17.673 0-32 14.327-32 32v50.56l-73.6-73.6c-5.746-5.545-13.578-8.961-22.208-8.961-0.068 0-0.135 0-0.203 0.001l-319.99-0c-17.673 0-32 14.327-32 32s14.327 32 32 32h306.56l118.4 118.4c5.829 6.042 13.997 9.793 23.041 9.793 17.673 0 32-14.327 32-32 0-0.068-0-0.136-0.001-0.204l0-95.99h32c0.97 0.036 2.109 0.057 3.253 0.057 50.147 0 91.003-39.775 92.742-89.498l0.004-460.959c-1.743-49.882-42.6-89.657-92.747-89.657-1.144 0-2.283 0.021-3.417 0.062z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dialogue_empty\"\r\n      ],\r\n      \"defaultCode\": 59692,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M256 352c0-26.24 21.76-48 48-48s48 21.76 48 48c0 26.24-21.76 48-48 48s-48-21.76-48-48zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512zM960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448s448-200.96 448-448zM720 304c-26.24 0-48 21.76-48 48s21.76 48 48 48 48-21.76 48-48c0-26.24-21.76-48-48-48zM512 512c-124.8 0-234.88 94.080-255.36 218.88-3.2 17.28 8.96 33.92 26.24 37.12 1.92 0 3.2 0 5.12 0 15.36 0 28.8-10.88 31.36-26.88 15.36-92.8 99.84-165.12 192.64-165.12 96 0 178.56 71.040 192.64 164.48 2.56 17.28 19.2 29.44 36.48 26.88s29.44-18.56 26.88-36.48c-19.2-124.8-128.64-218.88-256-218.88z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dispirited\"\r\n      ],\r\n      \"defaultCode\": 59693,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 608c-17.673 0-32 14.327-32 32v256c0 17.673-14.327 32-32 32h-832c-17.673 0-32-14.327-32-32v-256c0-17.673-14.327-32-32-32s-32 14.327-32 32v256c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-256c0-17.673-14.327-32-32-32z\",\r\n        \"M492.16 792.96v0c4.964 3.946 11.324 6.331 18.24 6.331s13.276-2.385 18.3-6.378l-0.060 0.046 160-128c8.662-5.818 14.286-15.577 14.286-26.65 0-17.673-14.327-32-32-32-8.512 0-16.248 3.324-21.981 8.744l-104.945 86.386v-637.44c0-17.673-14.327-32-32-32s-32 14.327-32 32v640l-108.16-88.96c-4.98-3.352-11.114-5.35-17.714-5.35-17.673 0-32 14.327-32 32 0 9.161 3.85 17.423 10.019 23.256z\"\r\n      ],\r\n      \"tags\": [\r\n        \"download\"\r\n      ],\r\n      \"defaultCode\": 59694,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M480 640c-17.518-0.203-31.641-14.451-31.641-31.998 0-8.111 3.018-15.517 7.991-21.157l511.97-575.965c5.832-6.065 14.015-9.833 23.079-9.833 17.673 0 32 14.327 32 32 0 7.629-2.67 14.634-7.125 20.133l-511.953 575.94c-5.894 6.686-14.478 10.881-24.042 10.881-0.098 0-0.196-0-0.293-0.001z\",\r\n        \"M864 1024h-704c-88.366 0-160-71.634-160-160v-704c0-88.366 71.634-160 160-160h512c17.673 0 32 14.327 32 32s-14.327 32-32 32h-512c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h704c53.019 0 96-42.981 96-96v-512c0-17.673 14.327-32 32-32s32 14.327 32 32v512c0 88.366-71.634 160-160 160z\"\r\n      ],\r\n      \"tags\": [\r\n        \"edit\"\r\n      ],\r\n      \"defaultCode\": 59695,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1024 928c0 17.92-14.080 32-32 32h-960c-17.92 0-32-14.080-32-32s14.080-32 32-32h960c17.92 0 32 14.080 32 32zM160 768c7.68 0 15.36-2.56 21.76-8.32l704-640c13.44-12.16 14.080-32 1.92-45.44-12.16-12.8-32-14.080-45.44-1.92l-704 640c-12.8 12.16-14.080 32-1.92 45.44 6.4 7.040 14.72 10.24 23.68 10.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"edit2\"\r\n      ],\r\n      \"defaultCode\": 59696,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M320 512c0 35.2-28.8 64-64 64s-64-28.8-64-64c0-35.2 28.8-64 64-64s64 28.8 64 64zM512 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64zM768 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"ellipsis\"\r\n      ],\r\n      \"defaultCode\": 59697,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M914.286 109.714h-804.571c-60.594 0-109.714 49.121-109.714 109.714v585.143c0 60.594 49.121 109.714 109.714 109.714h804.571c60.594 0 109.714-49.121 109.714-109.714v-585.143c0-60.594-49.121-109.714-109.714-109.714zM109.714 182.857h804.571c20.198 0 36.571 16.374 36.571 36.571v91.429l-427.886 261.851c-3.002 1.938-6.669 3.089-10.606 3.089s-7.604-1.152-10.684-3.137l-428.539-261.804v-91.429c0-20.198 16.374-36.571 36.571-36.571zM914.286 841.143h-804.571c-20.198 0-36.571-16.374-36.571-36.571v-408.137l389.851 238.446c13.859 8.557 30.657 13.627 48.64 13.627s34.781-5.070 49.045-13.859l390.178-238.214v408.137c0 20.198-16.374 36.571-36.571 36.571z\"\r\n      ],\r\n      \"tags\": [\r\n        \"email\"\r\n      ],\r\n      \"defaultCode\": 59698,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1024 568.96c0.053-0.67 0.084-1.452 0.084-2.24s-0.030-1.57-0.090-2.343l0.006 0.103-192-480.64c-4.896-11.693-16.216-19.772-29.431-19.84l-576.009-0c-1.447-0.232-3.115-0.364-4.813-0.364-13.426 0-24.92 8.268-29.67 19.99l-192.077 480.215c-0.106 0.96-0.167 2.073-0.167 3.2s0.061 2.24 0.179 3.336c-0.098 0.728-0.147 1.73-0.147 2.744s0.049 2.017 0.145 3.006l-0.010-0.126v256c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-256c0.129-1.056 0.202-2.28 0.202-3.52s-0.074-2.464-0.216-3.665zM245.76 128h532.48l166.4 416h-304.64c-0.069-0.001-0.15-0.001-0.231-0.001-16.32 0-29.787 12.217-31.753 28.005-0.016 53.176-42.997 96.156-96.016 96.156s-96-42.981-96-96c-1.982-15.944-15.449-28.161-31.769-28.161-0.081 0-0.162 0-0.244 0.001l-304.628-0zM960 832c0 17.673-14.327 32-32 32h-832c-17.673 0-32-14.327-32-32v-224h295.68c20.985 65.166 81.083 111.489 152 111.489s131.015-46.323 151.685-110.362l296.635-1.128z\"\r\n      ],\r\n      \"tags\": [\r\n        \"empty\"\r\n      ],\r\n      \"defaultCode\": 59699,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 961.92c-247.040 0-448-200.96-448-448 0-171.52 96-325.76 249.6-401.92 16-7.68 35.2-1.28 42.88 14.72 8.32 16 1.28 35.2-14.080 42.88-132.48 65.28-214.4 197.12-214.4 344.32 0 211.84 172.16 384 384 384s384-172.16 384-384c0-147.84-83.2-279.68-216.32-344.32-16-7.68-22.4-26.88-14.72-42.88s26.88-22.4 42.88-14.72c155.52 75.52 252.16 229.76 252.16 401.92 0 247.040-200.96 448-448 448z\",\r\n        \"M512 384c-17.92 0-32-14.080-32-32v-320c0-17.92 14.080-32 32-32s32 14.080 32 32v320c0 17.92-14.080 32-32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"end\"\r\n      ],\r\n      \"defaultCode\": 59700,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M528 832h-32c-26.24 0-48 21.76-48 48v32c0 26.24 21.76 48 48 48h32c26.24 0 48-21.76 48-48v-32c0-26.24-21.76-48-48-48z\",\r\n        \"M496 704h32c17.92 0 32-14.72 32-32v-576c0-17.92-14.080-32-32-32h-32c-17.92 0-32 14.080-32 32v576c0 17.28 14.080 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"exclamation\"\r\n      ],\r\n      \"defaultCode\": 59701,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM512 672v0c-26.24 0-48 21.76-48 48v0c0 26.24 21.76 48 48 48v0c26.24 0 48-21.76 48-48v0c0-26.24-21.76-48-48-48zM512 256v0c-21.76 0-39.68 17.92-39.68 39.68v304c0 22.4 17.92 40.32 39.68 40.32v0c21.76 0 39.68-17.92 39.68-39.68v-304.64c0.64-21.76-17.92-39.68-39.68-39.68z\"\r\n      ],\r\n      \"tags\": [\r\n        \"exclamation_circle\"\r\n      ],\r\n      \"defaultCode\": 59702,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 706.56c26.51 0 48 21.49 48 48s-21.49 48-48 48c-26.51 0-48-21.49-48-48s21.49-48 48-48z\",\r\n        \"M512 354.56h0.64c21.915 0 39.68 17.765 39.68 39.68v240.64c0 21.915-17.765 39.68-39.68 39.68h-0.64c-21.915 0-39.68-17.765-39.68-39.68v-240.64c0-21.915 17.765-39.68 39.68-39.68z\",\r\n        \"M992 966.4h-960c-17.59-0.109-31.808-14.394-31.808-31.999 0-5.891 1.592-11.411 4.369-16.152l479.918-839.529c6.035-9.116 16.245-15.046 27.84-15.046s21.805 5.93 27.763 14.922l480.077 840.444c2.696 4.59 4.288 10.109 4.288 16.001 0 17.605-14.217 31.89-31.797 31.999zM87.040 902.4h849.92l-424.96-743.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"exclamation_triangle\"\r\n      ],\r\n      \"defaultCode\": 59703,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 896c-282.24 0-512-172.16-512-384s229.76-384 512-384 512 172.16 512 384-229.76 384-512 384zM512 192c-247.040 0-448 143.36-448 320s200.96 320 448 320 448-143.36 448-320-200.96-320-448-320z\",\r\n        \"M512 704c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192s-85.961 192-192 192zM512 384c-70.692 0-128 57.308-128 128s57.308 128 128 128c70.692 0 128-57.308 128-128s-57.308-128-128-128z\"\r\n      ],\r\n      \"tags\": [\r\n        \"eye\"\r\n      ],\r\n      \"defaultCode\": 59704,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M878.080 780.16c85.67-60.244 141.986-157.235 145.903-267.568 0.017-212.432-229.743-384.592-511.983-384.592-1.63-0.015-3.557-0.024-5.486-0.024-111.987 0-217.097 29.44-308.015 81.002l-82.019-73.298c-5.557-4.775-12.839-7.682-20.8-7.682-17.674 0-32.002 14.328-32.002 32.002 0 9.713 4.327 18.415 11.159 24.284l70.443 59.556c-85.42 60.362-141.503 157.337-145.265 267.589-0.015 212.411 229.745 384.571 511.985 384.571 1.63 0.015 3.557 0.024 5.486 0.024 111.987 0 217.097-29.44 308.015-81.002l82.019 73.298c5.557 4.775 12.839 7.682 20.8 7.682 17.674 0 32.002-14.328 32.002-32.002 0-9.713-4.327-18.415-11.159-24.284zM512 192c247.040 0 448 143.36 448 320-4.52 95.007-55.255 177.261-130.072 225.243l-153.448-127.323c17.093-27.942 27.3-61.717 27.52-97.859 0-106.1-85.961-192.061-192-192.061-47.079 0.485-90.013 17.839-123.135 46.294l-132.865-115.414c74.042-37.141 161.336-58.885 253.708-58.885 0.806 0 1.612 0.002 2.418 0.005zM396.8 456.96l188.8 159.36c-20.327 14.208-45.56 22.703-72.778 22.703-70.692 0-128-57.308-128-128 0-19.624 4.416-38.217 12.309-54.839zM437.76 407.68c20.523-14.616 46.104-23.368 73.73-23.368 70.692 0 128 57.308 128 128 0 19.882-4.533 38.706-12.622 55.494zM512 832c-247.040 0-448-143.36-448-320 4.52-95.007 55.255-177.261 130.072-225.243l153.448 127.323c-17.093 27.942-27.3 61.717-27.52 97.859-0 106.1 85.961 192.061 192 192.061 47.079-0.485 90.013-17.839 123.135-46.294l132.865 115.414c-74.042 37.141-161.336 58.885-253.708 58.885-0.806 0-1.612-0.002-2.418-0.005z\"\r\n      ],\r\n      \"tags\": [\r\n        \"eye_slash\"\r\n      ],\r\n      \"defaultCode\": 59705,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 345.6c0 0 0 0 0 0 0-6.4-6.4-12.8-6.4-19.2l-256-256c-6.4-0-12.8-6.4-19.2-6.4 0 0 0 0-6.4 0 0 0 0 0 0 0h-326.4c-51.2 0-89.6 38.4-89.6 89.6v723.2c0 51.2 38.4 89.6 89.6 89.6h524.8c51.2 0 89.6-38.4 89.6-89.6v-531.2c0 6.4 0 6.4 0 0zM608 172.8l147.2 147.2h-147.2v-147.2zM774.4 896h-524.8c-12.8 0-25.6-12.8-25.6-25.6v-716.8c0-12.8 12.8-25.6 25.6-25.6h294.4v224c0 19.2 12.8 32 32 32h224v486.4c0 12.8-12.8 25.6-25.6 25.6z\"\r\n      ],\r\n      \"tags\": [\r\n        \"file\"\r\n      ],\r\n      \"defaultCode\": 59706,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 345.6c0 0 0 0 0 0 0-6.4-6.4-12.8-6.4-19.2l-256-256c-6.4-0-12.8-6.4-19.2-6.4 0 0 0 0-6.4 0 0 0 0 0 0 0h-326.4c-51.2 0-89.6 38.4-89.6 89.6v723.2c0 51.2 38.4 89.6 89.6 89.6h524.8c51.2 0 89.6-38.4 89.6-89.6v-531.2c0 6.4 0 6.4 0 0zM608 172.8l147.2 147.2h-147.2v-147.2zM774.4 896h-524.8c-12.8 0-25.6-12.8-25.6-25.6v-716.8c0-12.8 12.8-25.6 25.6-25.6h294.4v224c0 19.2 12.8 32 32 32h224v486.4c0 12.8-12.8 25.6-25.6 25.6z\",\r\n        \"M640 576h-96v-96c0-19.2-12.8-32-32-32s-32 12.8-32 32v96h-96c-19.2 0-32 12.8-32 32s12.8 32 32 32h96v96c0 19.2 12.8 32 32 32s32-12.8 32-32v-96h96c19.2 0 32-12.8 32-32s-12.8-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"file_plus\"\r\n      ],\r\n      \"defaultCode\": 59707,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 960h-704c-88.366 0-160-71.634-160-160v-640c0-53.019 42.981-96 96-96h256c53.019 0 96 42.981 96 96v32h416c88.366 0 160 71.634 160 160v448c0 88.366-71.634 160-160 160zM96 128c-17.673 0-32 14.327-32 32v640c0 53.019 42.981 96 96 96h704c53.019 0 96-42.981 96-96v-448c0-53.019-42.981-96-96-96h-448c-17.673 0-32-14.327-32-32v-64c0-17.673-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"folder\"\r\n      ],\r\n      \"defaultCode\": 59708,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M928 320h-35.2c-15.408-73.554-79.729-128-156.767-128-0.011 0-0.023 0-0.034 0l-287.998-0v-32c0-53.019-42.981-96-96-96h-256c-53.019 0-96 42.981-96 96v640c0 88.366 71.634 160 160 160h704c0.397 0.006 0.865 0.009 1.334 0.009 51.19 0 92.896-40.608 94.662-91.368l64.004-452.641c0-53.019-42.981-96-96-96zM64 800v-640c0-17.673 14.327-32 32-32h256c17.673 0 32 14.327 32 32v64c0 17.673 14.327 32 32 32h320c41.441 0.12 76.694 26.479 90.029 63.331l-538.029 0.669c-0.397-0.006-0.865-0.009-1.334-0.009-51.19 0-92.896 40.608-94.662 91.368l-64.004 452.641c0.139 9.875 1.767 19.321 4.67 28.19-39.984-12.851-68.461-49.167-68.67-92.165zM896 864c0 17.673-14.327 32-32 32h-640c-0.094 0.001-0.204 0.002-0.315 0.002-16.093 0-29.412-11.88-31.664-27.349l63.979-452.653c0-17.673 14.327-32 32-32h640c0.094-0.001 0.204-0.002 0.315-0.002 16.093 0 29.412 11.88 31.664 27.349z\"\r\n      ],\r\n      \"tags\": [\r\n        \"folder_open\"\r\n      ],\r\n      \"defaultCode\": 59709,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 192h-416v-32c0-51.2-44.8-96-96-96h-256c-51.2 0-96 44.8-96 96v640c0 89.6 70.4 160 160 160h704c89.6 0 160-70.4 160-160v-448c0-89.6-70.4-160-160-160zM960 800c0 51.2-44.8 96-96 96h-704c-51.2 0-96-44.8-96-96v-640c0-19.2 12.8-32 32-32h256c19.2 0 32 12.8 32 32v64c0 19.2 12.8 32 32 32h448c51.2 0 96 44.8 96 96v448z\",\r\n        \"M640 576h-96v-96c0-19.2-12.8-32-32-32s-32 12.8-32 32v96h-96c-19.2 0-32 12.8-32 32s12.8 32 32 32h96v96c0 19.2 12.8 32 32 32s32-12.8 32-32v-96h96c19.2 0 32-12.8 32-32s-12.8-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"folder_plus\"\r\n      ],\r\n      \"defaultCode\": 59710,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M352 0h-320c-17.673 0-32 14.327-32 32v320c0 17.673 14.327 32 32 32s32-14.327 32-32v-288h288c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M992 0h-320c-17.673 0-32 14.327-32 32s14.327 32 32 32h288v288c0 17.673 14.327 32 32 32s32-14.327 32-32v-320c0-17.673-14.327-32-32-32z\",\r\n        \"M352 960h-288v-288c0-17.673-14.327-32-32-32s-32 14.327-32 32v320c0 17.673 14.327 32 32 32h320c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M992 640c-17.673 0-32 14.327-32 32v288h-288c-17.673 0-32 14.327-32 32s14.327 32 32 32h320c17.673 0 32-14.327 32-32v-320c0-17.673-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"full_screen\"\r\n      ],\r\n      \"defaultCode\": 59711,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 960c-4.48 0-8.96-1.28-12.8-3.2-5.12-2.56-125.44-68.48-247.68-176.64-72.32-64-129.92-129.28-171.52-193.92-53.12-82.56-80-165.12-80-245.76 0-152.32 126.72-276.48 282.88-276.48 53.12 0 108.8 19.2 158.080 54.4 28.8 20.48 53.12 45.44 71.040 71.68 17.92-26.24 42.24-51.2 71.040-71.68 49.28-35.2 104.96-54.4 158.080-54.4 156.16 0 282.88 124.16 282.88 276.48 0 80-26.88 162.56-80 245.76-41.6 64.64-99.2 129.92-171.52 193.92-122.24 107.52-242.56 173.44-247.68 176.64-3.84 1.92-8.32 3.2-12.8 3.2v0zM288 128c-123.52 0-224 97.92-224 218.88 0 156.16 124.16 298.88 227.84 390.4 92.8 81.92 186.88 139.52 220.16 158.72 33.28-19.2 127.36-76.8 220.16-158.72 103.68-92.16 227.84-234.24 227.84-390.4 0-120.96-100.48-218.88-224-218.88-89.6 0-176.64 72.32-199.040 136.96-3.84 10.24-13.44 17.28-24.96 17.28s-21.12-7.040-24.96-17.92c-22.4-64-109.44-136.32-199.040-136.32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"heart\"\r\n      ],\r\n      \"defaultCode\": 59712,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M896 443.52c52.48-39.040 96-85.76 124.16-139.52 8.32-15.36 1.92-35.2-13.44-42.88-15.36-8.32-35.2-2.56-42.88 13.44-70.4 133.12-251.52 222.72-451.84 222.72s-381.44-89.6-451.84-222.72c-8.32-16-27.52-21.76-42.88-13.44-16 7.68-21.76 27.52-13.44 42.88 28.16 53.76 71.68 101.12 124.16 139.52l-120.96 151.040c-10.88 14.080-8.96 34.56 5.12 45.44 5.76 4.48 12.8 7.040 19.84 7.040 9.6 0 18.56-3.84 24.96-12.16l125.44-156.16c55.68 31.36 119.68 54.4 188.8 67.84l-80 174.72c-7.68 16 0 35.2 16 42.24 4.48 1.92 8.96 3.2 13.44 3.2 12.16 0 23.68-7.040 29.44-18.56l87.040-191.36c24.32 2.56 49.28 4.48 74.88 4.48 20.48 0 40.32-1.92 60.16-3.2l87.040 190.080c5.12 11.52 16.64 18.56 28.8 18.56 4.48 0 8.96-0.64 13.44-3.2 16-7.040 23.040-26.24 16-42.24l-78.72-172.16c74.88-12.8 143.36-37.12 202.88-71.040l124.8 156.16c6.4 7.68 15.36 12.16 24.96 12.16 7.040 0 14.080-2.56 19.84-7.040 14.080-10.88 16-31.36 5.12-44.8l-120.32-151.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"hide\"\r\n      ],\r\n      \"defaultCode\": 59713,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1013.76 455.68l-480-448c-5.692-5.291-13.347-8.537-21.76-8.537s-16.068 3.247-21.78 8.555l-479.98 447.982c-7.252 5.914-11.845 14.848-11.845 24.855 0 17.673 14.327 32 32 32 9.21 0 17.511-3.891 23.349-10.118l19.856-18.577v508.16c0 17.673 14.327 32 32 32h295.68c17.673 0 32-14.327 32-32v-262.4h157.44v262.4c0 17.673 14.327 32 32 32h295.68c17.673 0 32-14.327 32-32v-508.16l19.84 18.56c5.855 6.245 14.156 10.135 23.365 10.135 17.673 0 32-14.327 32-32 0-10.007-4.594-18.942-11.787-24.81zM885.76 960h-231.040v-262.4c0-17.673-14.327-32-32-32h-221.44c-17.673 0-32 14.327-32 32v262.4h-231.68v-535.68l374.4-348.8 374.4 348.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"home\"\r\n      ],\r\n      \"defaultCode\": 59714,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 160h-704c-88.32 0-160 71.68-160 160v384c0 88.32 71.68 160 160 160h704c88.32 0 160-71.68 160-160v-384c0-88.32-71.68-160-160-160zM960 704c0 53.12-42.88 96-96 96h-704c-53.12 0-96-42.88-96-96v-384c0-53.12 42.88-96 96-96h704c53.12 0 96 42.88 96 96v384zM392.32 520.32c19.2-21.12 31.36-49.28 31.36-80.64 0-65.92-53.76-119.68-119.68-119.68s-119.68 53.76-119.68 119.68c0 31.36 12.16 58.88 31.36 80.64-52.48 30.72-87.68 87.040-87.68 151.68 0 17.92 14.080 32 32 32s32-14.080 32-32c0-62.080 50.56-112 112-112s112 49.92 112 112c0 17.92 14.72 32 32 32s32-14.080 32-32c0-64.64-35.2-120.96-87.68-151.68zM248.32 439.68c0-30.72 24.96-55.68 55.68-55.68s55.68 24.96 55.68 55.68-24.96 56.32-55.68 56.32-55.68-25.6-55.68-56.32zM896 384c0 17.92-14.080 32-32 32h-256c-17.92 0-32-14.080-32-32s14.080-32 32-32h256c17.92 0 32 14.080 32 32zM576 512c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32s-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32zM896 640c0 17.92-14.080 32-32 32h-256c-17.92 0-32-14.080-32-32s14.080-32 32-32h256c17.92 0 32 14.080 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"id\"\r\n      ],\r\n      \"defaultCode\": 59715,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 64h-704c-88.366 0-160 71.634-160 160v576c0 88.366 71.634 160 160 160h704c88.366 0 160-71.634 160-160v-576c0-88.366-71.634-160-160-160zM160 128h704c53.019 0 96 42.981 96 96v240c-51.707-63.449-125.845-106.897-210.161-118.216-115.599-5.944-205.839 86.216-309.519 191.816l-46.72 47.36c-50.586 60.047-125.822 97.934-209.908 97.934-43.553 0-84.731-10.164-121.293-28.25l1.6-430.644c0-53.019 42.981-96 96-96zM864 896h-704c-53.019 0-96-42.981-96-96v-76.16c35.545 13.673 76.665 21.644 119.631 21.76 101.432-1.655 192.232-45.611 255.812-114.938l47.597-48.262c90.88-92.8 168.96-173.44 256-173.44h5.76c64 0 133.76 52.48 215.040 150.4v240.64c0 0.023 0 0.050 0 0.077 0 53.019-42.981 96-96 96-1.35 0-2.694-0.028-4.031-0.083z\",\r\n        \"M256 448c70.692 0 128-57.308 128-128s-57.308-128-128-128c-70.692 0-128 57.308-128 128s57.308 128 128 128zM256 256c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64s28.654-64 64-64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"image\"\r\n      ],\r\n      \"defaultCode\": 59716,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M234.24 512.64l-170.88 160v-319.36l170.88 159.36z\",\r\n        \"M32 160h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M32 929.28h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 415.36h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 672h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"indent\"\r\n      ],\r\n      \"defaultCode\": 59717,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M528 64h-32c-26.24 0-48 21.76-48 48v32c0 26.24 21.76 48 48 48h32c26.24 0 48-21.76 48-48v-32c0-26.24-21.76-48-48-48z\",\r\n        \"M528 320h-32c-17.92 0-32 14.080-32 32v576c0 17.28 14.080 32 32 32h32c17.92 0 32-14.72 32-32v-576c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"info\"\r\n      ],\r\n      \"defaultCode\": 59718,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM560 304v0c0-26.24-21.76-48-48-48v0c-26.24 0-48 21.76-48 48v0c0 26.24 21.76 48 48 48v0c26.24 0 48-21.76 48-48zM552.32 728.32v-304.64c0-21.76-18.56-39.68-40.32-39.68v0c-21.76 0-39.68 17.92-39.68 39.68v304c0 22.4 17.92 40.32 39.68 40.32v0c21.76 0 40.32-17.92 40.32-39.68z\"\r\n      ],\r\n      \"tags\": [\r\n        \"info_circle\"\r\n      ],\r\n      \"defaultCode\": 59719,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M877.44 832l73.6-73.6c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-73.6 73.6-82.56-82.56 73.6-73.6c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-73.6 73.6-128-128c39.68-49.28 64-110.72 64-178.56 0-158.72-129.28-288-288-288s-288 129.28-288 288 129.28 288 288 288c67.84 0 129.28-24.32 178.56-64l374.4 374.4c6.4 6.4 14.72 9.6 22.4 9.6s16.64-3.2 22.4-9.6c12.8-12.8 12.8-32.64 0-45.44l-72.32-72.96zM352 576c-123.52 0-224-100.48-224-224s100.48-224 224-224 224 100.48 224 224-100.48 224-224 224z\"\r\n      ],\r\n      \"tags\": [\r\n        \"key\"\r\n      ],\r\n      \"defaultCode\": 59720,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 832h-928v-297.6l181.12-164.48c12.8 8.32 26.88 14.080 42.88 14.080 14.72 0 27.52-5.12 39.040-11.52l268.16 268.16c-1.28 5.12-3.2 10.24-3.2 15.36 0 44.16 35.84 80 80 80s80-35.84 80-80c0-5.76-1.92-10.24-3.2-15.36l166.4-166.4c8.96 3.2 18.56 5.76 28.8 5.76 44.16-0 80-35.84 80-80s-35.84-80-80-80-80 35.84-80 80c0 10.24 2.56 19.84 5.76 28.8l-158.72 158.72c-11.52-6.4-24.32-11.52-39.040-11.52s-27.52 5.12-39.040 11.52l-268.16-268.16c1.28-5.12 3.2-10.24 3.2-15.36 0-44.16-35.84-80-80-80s-80 35.84-80 80c0 3.84 1.92 7.68 2.56 11.52l-146.56 132.48v-288c0-17.92-14.080-32-32-32s-32 14.080-32 32v704c0 17.92 14.080 32 32 32h960c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"line_chart\"\r\n      ],\r\n      \"defaultCode\": 59721,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M146.286 109.714c0 40.396-32.747 73.143-73.143 73.143s-73.143-32.747-73.143-73.143c0-40.396 32.747-73.143 73.143-73.143s73.143 32.747 73.143 73.143z\",\r\n        \"M987.429 146.286h-658.286c-20.198 0-36.571-16.374-36.571-36.571s16.374-36.571 36.571-36.571h658.286c20.198 0 36.571 16.374 36.571 36.571s-16.374 36.571-36.571 36.571z\",\r\n        \"M146.286 512c0 40.396-32.747 73.143-73.143 73.143s-73.143-32.747-73.143-73.143c0-40.396 32.747-73.143 73.143-73.143s73.143 32.747 73.143 73.143z\",\r\n        \"M987.429 548.571h-658.286c-20.198 0-36.571-16.374-36.571-36.571s16.374-36.571 36.571-36.571h658.286c20.198 0 36.571 16.374 36.571 36.571s-16.374 36.571-36.571 36.571z\",\r\n        \"M146.286 914.286c0 40.396-32.747 73.143-73.143 73.143s-73.143-32.747-73.143-73.143c0-40.396 32.747-73.143 73.143-73.143s73.143 32.747 73.143 73.143z\",\r\n        \"M987.429 950.857h-658.286c-20.198 0-36.571-16.374-36.571-36.571s16.374-36.571 36.571-36.571h658.286c20.198 0 36.571 16.374 36.571 36.571s-16.374 36.571-36.571 36.571z\"\r\n      ],\r\n      \"tags\": [\r\n        \"list\"\r\n      ],\r\n      \"defaultCode\": 59722,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M672 384h-32v-96c0.249-4.374 0.392-9.491 0.392-14.641 0-145.115-112.843-263.874-255.568-273.315-144.372 9.441-257.215 128.2-257.215 273.315 0 5.15 0.142 10.267 0.423 15.348l-0.031 95.294h-32c-53.019 0-96 42.981-96 96v448c0 53.019 42.981 96 96 96h576c53.019 0 96-42.981 96-96v-448c0-53.019-42.981-96-96-96zM192 288c-0.333-4.429-0.523-9.593-0.523-14.802 0-109.812 84.318-199.93 191.742-209.144 108.985 9.214 193.303 99.332 193.303 209.144 0 5.209-0.19 10.373-0.563 15.486l0.040 95.316h-384zM704 928c0 17.673-14.327 32-32 32h-576c-17.673 0-32-14.327-32-32v-448c0-17.673 14.327-32 32-32h576c17.673 0 32 14.327 32 32z\",\r\n        \"M384 608c-17.673 0-32 14.327-32 32v128c0 17.673 14.327 32 32 32s32-14.327 32-32v-128c0-17.673-14.327-32-32-32z\"\r\n      ],\r\n      \"width\": 768,\r\n      \"tags\": [\r\n        \"lock\"\r\n      ],\r\n      \"defaultCode\": 59723,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M736 480h-448c-17.92 0-32 14.080-32 32s14.080 32 32 32h448c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"minus\"\r\n      ],\r\n      \"defaultCode\": 59724,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM768 512c0-17.92-14.080-32-32-32h-448c-17.92 0-32 14.080-32 32s14.080 32 32 32h448c17.92 0 32-14.080 32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"minus_circle\"\r\n      ],\r\n      \"defaultCode\": 59725,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M736 544h-448c-17.673 0-32-14.327-32-32s14.327-32 32-32h448c17.673 0 32 14.327 32 32s-14.327 32-32 32z\",\r\n        \"M864 1024h-704c-88.366 0-160-71.634-160-160v-704c0-88.366 71.634-160 160-160h704c88.366 0 160 71.634 160 160v704c0 88.366-71.634 160-160 160zM160 64c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h704c53.019 0 96-42.981 96-96v-704c0-53.019-42.981-96-96-96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"minus_square\"\r\n      ],\r\n      \"defaultCode\": 59726,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M544 1024h-384c-88.366 0-160-71.634-160-160v-704c0-88.366 71.634-160 160-160h384c88.366 0 160 71.634 160 160v704c0 88.366-71.634 160-160 160zM160 64c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h384c53.019 0 96-42.981 96-96v-704c0-53.019-42.981-96-96-96z\",\r\n        \"M352 896c-35.346 0-64-28.654-64-64s28.654-64 64-64c35.346 0 64 28.654 64 64s-28.654 64-64 64z\",\r\n        \"M416 192h-128c-17.673 0-32-14.327-32-32s14.327-32 32-32h128c17.673 0 32 14.327 32 32s-14.327 32-32 32z\"\r\n      ],\r\n      \"width\": 704,\r\n      \"tags\": [\r\n        \"mobile\"\r\n      ],\r\n      \"defaultCode\": 59727,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1018.88 494.72c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0c-0.64-0.64-0.64-1.28-0.64-1.28s0 0 0 0 0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0v0 0c0 0 0 0 0 0s0 0 0 0c-0.64-0.64-1.28-1.92-1.92-2.56l-160-176c-12.16-12.8-32-14.080-45.44-1.92s-14.080 32-1.92 45.44l111.36 122.24h-376.32v-376.32l122.24 111.36c13.44 12.16 33.28 10.88 45.44-1.92s10.88-33.28-1.92-45.44l-176-160c-1.28-0.64-1.92-1.28-2.56-1.92 0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s-0.64-0.64-1.28-0.64c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0c-10.24-6.4-24.32-6.4-34.56 0 0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0c-0.64 0-0.64 0.64-1.28 0.64 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0c-1.92 0.64-2.56 1.28-3.84 1.92l-176 160c-12.8 12.16-14.080 32-1.92 45.44s32 14.080 45.44 1.92l122.24-111.36v374.4h-375.68l111.36-122.24c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-160 176c-5.12 5.76-8.32 13.44-8.32 21.76s3.2 16 8.32 21.76l160 176c12.16 13.44 32 14.080 45.44 1.92 12.8-12.16 14.080-32 1.92-45.44l-111.36-122.24h375.68v376.96l-122.24-111.36c-12.8-11.52-33.28-10.88-45.44 1.92s-10.88 33.28 1.92 45.44l176 160c6.4 5.76 14.080 8.32 21.76 8.32s15.36-2.56 21.76-8.32l176-160c13.44-12.16 14.080-32 1.92-45.44s-32-14.080-45.44-1.92l-122.24 111.36v-375.68h375.68l-111.36 122.24c-12.16 12.8-10.88 33.28 1.92 45.44s33.28 10.88 45.44-1.92l160-176c0.64-0.64 1.28-1.28 1.92-2.56 0 0 0 0 0 0s0 0 0 0v0 0c0 0 0 0 0 0s0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0.64-0.64 0.64-1.28c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0c3.84-5.76 5.76-11.52 5.76-17.92s-1.92-12.16-5.12-17.28z\"\r\n      ],\r\n      \"tags\": [\r\n        \"move\"\r\n      ],\r\n      \"defaultCode\": 59728,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M211.84 71.68c-5.76-4.48-12.8-7.040-19.84-7.040-16.64 0-32 12.8-32 32v830.080c0 19.2 15.36 32 32 32 7.040 0 14.080-1.92 19.84-7.040l512-415.36c16-12.8 16-37.12 0-49.92l-512-414.72zM224 860.16v-696.32l429.44 348.16-429.44 348.16zM896 96v832c0 17.92-14.080 32-32 32s-32-14.080-32-32v-832c0-17.92 14.080-32 32-32s32 14.080 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"next\"\r\n      ],\r\n      \"defaultCode\": 59729,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M730.24 128h-90.24c-1.713-35.746-31.111-64.080-67.128-64.080-1.151 0-2.295 0.029-3.432 0.086l-6.24-0.006c-1.713-35.746-31.111-64.080-67.128-64.080-1.151 0-2.295 0.029-3.432 0.086l-153.44-0.006c-0.977-0.051-2.121-0.080-3.272-0.080-36.016 0-65.414 28.333-67.122 63.927l-6.406 0.153c-0.795-0.033-1.728-0.052-2.666-0.052-36.135 0-65.671 28.251-67.726 63.871l-90.248 0.182c-0.777-0.022-1.693-0.034-2.611-0.034-53.673 0-97.391 42.627-99.145 95.873l-0.004 704.161c1.759 53.408 45.476 96.034 99.149 96.034 0.918 0 1.833-0.012 2.745-0.037l628.346 0.003c0.777 0.022 1.693 0.034 2.611 0.034 53.673 0 97.391-42.627 99.145-95.873l0.004-704.161c-1.759-53.408-45.476-96.034-99.149-96.034-0.918 0-1.833 0.012-2.745 0.037zM262.4 128h38.4c17.673 0 32-14.327 32-32v-32c0.953-0.348 2.053-0.549 3.2-0.549s2.247 0.201 3.267 0.57l153.533-0.021c3.84 0 6.4 0 6.4 0v32c0 17.673 14.327 32 32 32h38.4c3.84 0 6.4 0 6.4 0v128c-1.043 0.423-2.253 0.669-3.52 0.669s-2.477-0.246-3.585-0.692l-312.895 0.023v-94.080s0 0 0 0 0 0 0 0v-33.92c0.953-0.348 2.053-0.549 3.2-0.549s2.247 0.201 3.267 0.57zM768 928c-1.643 18.062-16.713 32.103-35.064 32.103-0.949 0-1.889-0.038-2.819-0.111l-628.357 0.008c-0.807 0.066-1.747 0.103-2.696 0.103-18.35 0-33.421-14.042-35.053-31.966l-0.010-704.137c1.643-18.062 16.713-32.103 35.064-32.103 0.949 0 1.889 0.038 2.819 0.111l90.117-0.008v64c2.063 35.801 31.6 64.052 67.734 64.052 0.938 0 1.871-0.019 2.799-0.057l307.067 0.004c0.977 0.051 2.121 0.080 3.272 0.080 36.016 0 65.414-28.333 67.122-63.927l0.006-64.153h90.24c0.807-0.066 1.747-0.103 2.696-0.103 18.35 0 33.421 14.042 35.053 31.966z\",\r\n        \"M608 448h-384c-17.673 0-32 14.327-32 32s14.327 32 32 32h384c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M608 576h-384c-17.673 0-32 14.327-32 32s14.327 32 32 32h384c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M608 704h-384c-17.673 0-32 14.327-32 32s14.327 32 32 32h384c17.673 0 32-14.327 32-32s-14.327-32-32-32z\"\r\n      ],\r\n      \"width\": 832,\r\n      \"tags\": [\r\n        \"order\"\r\n      ],\r\n      \"defaultCode\": 59730,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 832h-704c-88.32 0-160-71.68-160-160v-320c0-88.32 71.68-160 160-160h704c88.32 0 160 71.68 160 160v320c0 88.32-71.68 160-160 160zM160 256c-53.12 0-96 42.88-96 96v320c0 53.12 42.88 96 96 96h704c53.12 0 96-42.88 96-96v-320c0-53.12-42.88-96-96-96h-704zM256 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM512 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM768 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"password\"\r\n      ],\r\n      \"defaultCode\": 59731,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M768 160v704c0 17.92-14.080 32-32 32s-32-14.080-32-32v-704c0-17.92 14.080-32 32-32s32 14.080 32 32zM288 128c-17.92 0-32 14.080-32 32v704c0 17.92 14.080 32 32 32s32-14.080 32-32v-704c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pause\"\r\n      ],\r\n      \"defaultCode\": 59732,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 64h-704c-88.366 0-160 71.634-160 160v384c0 88.366 71.634 160 160 160h320v128h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32h448c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192v-128h320c88.366 0 160-71.634 160-160v-384c0-88.366-71.634-160-160-160zM960 608c0 53.019-42.981 96-96 96h-704c-53.019 0-96-42.981-96-96v-384c0-53.019 42.981-96 96-96h704c53.019 0 96 42.981 96 96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pc\"\r\n      ],\r\n      \"defaultCode\": 59733,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M448.64 1024c-247.040 0-448.64-201.6-448.64-448.64 0-232.96 181.76-429.44 414.080-447.36 8.96-0.64 17.92 2.56 24.32 8.32s10.24 14.72 10.24 23.68v415.36h415.36c8.96 0 17.28 3.84 23.68 10.24 5.76 6.4 8.96 15.36 8.32 24.32-17.92 232.32-214.4 414.080-447.36 414.080zM384.64 195.84c-182.4 31.36-320.64 191.36-320.64 379.52 0 211.84 172.8 384.64 384.64 384.64 188.16 0 348.16-138.24 378.88-320.64h-410.88c-17.92 0-32-14.080-32-32v-411.52zM990.080 512h-446.080c-17.92 0-32-14.080-32-32v-446.080c0-16.64 12.8-30.72 29.44-32 11.52-1.28 23.040-1.92 34.56-1.92 247.040 0 448 200.96 448 448 0 11.52-0.64 23.040-1.92 34.56-1.28 16.64-14.72 29.44-32 29.44zM576 448h384c0-211.84-172.16-384-384-384v384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pie_chart\"\r\n      ],\r\n      \"defaultCode\": 59734,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M960 352c0-104.32-92.8-190.72-208-192h-48c0-53.12-42.88-96-96-96h-192c-53.12 0-96 42.88-96 96v64c0 53.12 42.88 96 96 96h192c53.12 0 96-42.88 96-96h48c79.36 0.64 144 58.24 144 128 0 65.28-56.32 118.4-128.64 126.72l10.88-21.76c7.68-16 1.28-35.2-14.080-42.88-16-7.68-35.2-1.28-42.88 14.080l-18.56 37.12c-7.040-46.080-46.72-81.28-94.72-81.28h-192c-53.12 0-96 42.88-96 96h-48.64c-114.56 1.28-207.36 87.68-207.36 192 0 99.2 83.2 180.48 189.44 190.080l-10.24 19.84c-7.68 16-1.28 35.2 14.080 42.88 4.48 2.56 9.6 3.2 14.080 3.2 11.52 0 23.040-6.4 28.8-17.92l19.84-40.32c3.84 50.56 45.44 90.24 96 90.24h192c53.12 0 96-42.88 96-96v-64c0-53.12-42.88-96-96-96h-192c-50.56 0-92.16 39.68-95.36 89.6l-19.84-39.68c-7.68-16-26.88-22.4-42.88-14.080-16 7.68-22.4 26.88-14.080 42.88l7.68 15.36c-69.76-9.6-123.52-62.72-123.52-126.080 0-69.76 64.64-127.36 144-128h48c0 53.12 42.88 96 96 96h192c51.2 0 92.8-40.32 95.36-90.24l17.92 35.2c5.76 11.52 16.64 17.92 28.8 17.92 5.12 0 9.6-1.28 14.080-3.2 16-7.68 22.4-26.88 14.080-42.88l-7.040-14.080c105.6-10.88 188.8-91.52 188.8-190.72zM640 224c0 17.92-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32v-64c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32v64zM384 800c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32v64c0 17.92-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32v-64zM640 544c0 17.92-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32v-64c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32v64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pipeline\"\r\n      ],\r\n      \"defaultCode\": 59735,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM674.56 487.040l-221.44-174.72c-21.12-16.64-51.84-1.28-51.84 25.6v348.8c0 26.88 30.72 41.6 51.84 24.96l220.8-174.080c16.64-13.44 16.64-37.76 0.64-50.56z\"\r\n      ],\r\n      \"tags\": [\r\n        \"play\"\r\n      ],\r\n      \"defaultCode\": 59736,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M788.48 487.040l-512-415.36c-6.4-4.48-13.44-7.040-20.48-7.040-16.64 0-32 12.8-32 32v830.080c0 19.2 15.36 32 32 32 7.040 0 14.080-1.92 19.84-7.040l512-415.36c16-12.16 16-36.48 0.64-49.28zM288 860.16v-696.32l429.44 348.16-429.44 348.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"play2\"\r\n      ],\r\n      \"defaultCode\": 59737,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM435.2 277.76c-6.4-4.48-13.44-7.040-19.84-7.040-16.64 0-32 12.8-32 32v418.56c0 19.2 15.36 32 32 32 7.040 0 14.080-1.92 19.84-7.040l257.92-209.28c16-12.8 16-37.12 0-49.92l-257.92-209.28zM446.72 654.080v-284.16l175.36 142.080-175.36 142.080z\"\r\n      ],\r\n      \"tags\": [\r\n        \"play3\"\r\n      ],\r\n      \"defaultCode\": 59738,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 480h-448v-448c0-17.673-14.327-32-32-32s-32 14.327-32 32v448h-448c-17.673 0-32 14.327-32 32s14.327 32 32 32h448v448c0 17.673 14.327 32 32 32s32-14.327 32-32v-448h448c17.673 0 32-14.327 32-32s-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"plus\"\r\n      ],\r\n      \"defaultCode\": 59739,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM768 512c0 17.92-14.080 32-32 32h-192v192c0 17.92-14.080 32-32 32s-32-14.080-32-32v-192h-192c-17.92 0-32-14.080-32-32s14.080-32 32-32h192v-192c0-17.92 14.080-32 32-32s32 14.080 32 32v192h192c17.92 0 32 14.080 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"plus_circle\"\r\n      ],\r\n      \"defaultCode\": 59740,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M736 480h-192v-192c0-17.673-14.327-32-32-32s-32 14.327-32 32v192h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32h192v192c0 17.673 14.327 32 32 32s32-14.327 32-32v-192h192c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M864 0h-704c-88.366 0-160 71.634-160 160v704c0 88.366 71.634 160 160 160h704c88.366 0 160-71.634 160-160v-704c0-88.366-71.634-160-160-160zM960 864c0 53.019-42.981 96-96 96h-704c-53.019 0-96-42.981-96-96v-704c0-53.019 42.981-96 96-96h704c53.019 0 96 42.981 96 96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"plus_square\"\r\n      ],\r\n      \"defaultCode\": 59741,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M288 1024h-28.16c-53.899-0.59-103.318-19.294-142.574-50.296-16.516-15.857-27.093-38.705-27.093-64.022 0-1.21 0.024-2.415 0.072-3.613 0.182-10.792 2.759-21.11 7.224-30.343-0.191 0.311-0.191 0.164-0.191 0.017 0-16.933 6.576-32.33 17.313-43.777 7.736-9.272 16.58-17.302 26.405-24.001-7.211-11.019-14.852-23.366-21.7-36.202-15.85 18.142-38.597 31.589-64.547 33.971-18.017-1.23-32.714-12.704-38.65-28.47-47.46-128.304 24.22-242.864 79.9-308.144-0.307-2.974-0.482-6.427-0.482-9.92s0.175-6.946 0.516-10.349c-0.35-2.469-0.529-5.83-0.529-9.233 0-17.412 4.698-33.727 12.896-47.746 0.366-21.536 9.823-41.198 24.678-55.195 1.849-186.345 153.301-336.68 339.865-336.68 0.455 0 0.91 0.001 1.365 0.003 95.682 1.136 181.882 41.11 243.684 104.87 59.888 59.839 97.902 141.387 101.189 231.796 20.586 26.507 33.017 59.67 33.017 95.737 0 11.649-1.297 22.996-3.754 33.903 46.914 59.134 123.074 186.494 64.194 315.134-6.86 15.838-22.3 26.746-40.303 26.88l-0.017 0c-25.388-4.282-46.627-19.211-59.306-39.944-7.74 14.345-15.178 26.699-23.349 38.509 13.187 6.364 23.766 15.516 32.569 26.187 10.507 10.879 17.17 25.167 18.079 40.998 4.284 8.969 6.86 19.287 7.047 30.187 0.043 1.090 0.067 2.295 0.067 3.505 0 25.318-10.576 48.165-27.552 64.366-38.797 30.659-88.216 49.363-141.982 49.952-9.311 1.097-19.94 1.722-30.715 1.722-60.737 0-116.835-19.861-162.155-53.442l-30.623 0.521c-43.28 33.235-98.216 53.261-157.829 53.261-3.014 0-6.016-0.051-9.005-0.153zM171.52 867.84l16.64 10.24-35.2 28.16c0.761 7.543 3.528 14.322 7.753 19.942 28.625 20.977 64.619 33.68 103.574 33.818 8.769 1.341 18.846 2.107 29.103 2.107 48.637 0 93.252-17.224 128.077-45.904l9.253-8.683h19.84c5.935 0.428 12.859 0.672 19.84 0.672s13.905-0.244 20.764-0.724l13.156 0.052 10.24 9.6c34.274 28.509 78.75 45.813 127.267 45.813 10.649 0 21.104-0.834 31.302-2.439-0.615 0.152-0.006 0.155 0.603 0.155 38.55 0 74.184-12.485 103.080-33.632 3.367-4.196 5.714-10.125 5.714-16.602 0-1.702-0.162-3.367-0.472-4.979l-35.174-27.996 16.64-8.96c-9.226-7.011-20.159-12.324-32.035-15.235l-51.165-12.925 34.56-39.040c27.198-30.422 47.768-67.37 59.068-108.169l22.852-86.391 37.12 78.72c8.096 17.832 17.726 33.203 29.097 47.094 27.863-99.574-43.177-200.054-76.457-240.374l-12.16-14.080 6.4-17.28c2.851-8.335 4.497-17.938 4.497-27.925 0-23.036-8.756-44.028-23.122-59.827l-8.895-9.527v-12.8c-0.29-155.557-124.137-282.093-278.614-286.71-1.236-0.019-2.193-0.023-3.152-0.023-153.756 0-278.4 124.644-278.4 278.4 0 3.381 0.060 6.747 0.18 10.099l-0.014 18.714-16 12.8c-5.196 2.883-8.655 8.337-8.655 14.599 0 1.176 0.122 2.323 0.354 3.429l3.821 24.852-15.36 7.040c-0.346 2.499-0.543 5.386-0.543 8.32s0.197 5.821 0.58 8.65c0.481 6.257 2.079 12.345 4.583 17.939l7.54 18.211-13.44 14.72c-54.512 50.852-88.494 123.105-88.494 203.295 0 9.997 0.528 19.871 1.558 29.595 11.246-13.525 21.231-27.387 29.431-42.364l37.665-65.087 21.76 72.32c12.199 40.458 32.215 75.37 58.461 104.57l33.059 36.87-48 14.72c-11.391 2.117-21.508 6.366-30.364 12.341zM151.68 435.2v0z\"\r\n      ],\r\n      \"width\": 934,\r\n      \"tags\": [\r\n        \"qq\"\r\n      ],\r\n      \"defaultCode\": 59742,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 320c0 93.44-40.32 181.76-111.36 242.56-12.16 10.24-26.88 19.2-42.88 28.8-59.52 35.2-133.76 79.36-133.76 240.64 0 17.92-14.080 32-32 32s-32-14.080-32-32c0-197.76 103.68-259.2 165.12-295.68 13.44-7.68 24.96-14.72 33.92-22.4 56.32-48.64 88.96-119.040 88.96-193.92 0-141.44-114.56-256-256-256-140.16 0-254.72 113.92-256 253.44 0 17.28-14.72 32-32 32 0 0 0 0 0 0-17.92 0-32-14.72-32-32.64 1.28-174.72 145.28-316.8 320-316.8 176.64 0 320 143.36 320 320zM512 960c-17.92 0-32 14.080-32 32s14.080 32 32 32 32-14.080 32-32c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"question\"\r\n      ],\r\n      \"defaultCode\": 59743,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M709.12 385.92c0 57.6-24.96 112-68.48 149.12-8.96 7.68-19.2 12.8-29.44 18.56-33.28 17.92-67.2 36.48-67.2 118.4 0 17.92-14.080 32-32 32s-32-14.080-32-32c0-120.32 62.72-154.24 100.48-174.080 7.68-4.48 14.72-8.32 18.56-10.88 29.44-25.6 46.080-62.080 46.080-101.12 0-73.6-59.52-133.12-133.12-133.12-72.96 0-132.48 58.88-133.12 131.84 0 17.92-16.64 30.72-32 32-17.92 0-32-14.72-32-32 1.28-108.16 89.6-195.84 197.12-195.84 108.8 0 197.12 88.32 197.12 197.12zM512 768c-17.92 0-32 14.080-32 32s14.080 32 32 32c17.92 0 32-14.080 32-32s-14.080-32-32-32zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512zM960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448s448-200.96 448-448z\"\r\n      ],\r\n      \"tags\": [\r\n        \"question_circle\"\r\n      ],\r\n      \"defaultCode\": 59744,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M714.88 872.32c8.32 16 2.56 35.2-13.44 43.52-64 33.28-133.12 49.92-202.88 49.92-106.24 0-211.84-39.040-293.76-113.28-172.16-156.8-188.8-420.48-42.88-598.4l-122.88 28.16c-17.28 3.84-34.56-6.4-38.4-23.68s6.4-34.56 23.68-38.4l227.84-53.12 53.12 227.84c3.84 17.28-6.4 34.56-23.68 38.4-2.56 0.64-4.48 0.64-7.040 0.64-14.72 0-27.52-10.24-31.36-24.96l-27.52-118.4c-128 151.68-115.2 379.52 32.64 513.92 115.2 104.96 285.44 126.72 423.68 54.4 15.36-8.32 34.56-2.56 42.88 13.44zM1023.36 765.44c-3.84-17.28-21.12-27.52-38.4-23.68l-122.88 28.8c68.48-83.2 103.68-187.52 98.56-296.32-5.76-116.48-55.68-223.36-142.080-302.080-135.040-123.52-334.72-149.12-496-63.36-16 8.32-21.76 27.52-13.44 42.88s27.52 21.76 42.88 13.44c138.24-72.96 308.48-51.2 423.68 54.4 73.6 66.56 116.48 158.080 120.96 257.28 4.48 94.72-26.88 185.6-88.32 257.28l-27.52-119.040c-3.84-17.28-21.12-28.16-38.4-23.68-17.28 3.84-28.16 21.12-23.68 38.4l53.12 227.84 227.84-53.12c16.64-4.48 27.52-21.76 23.68-39.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"refresh\"\r\n      ],\r\n      \"defaultCode\": 59745,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 0h-704c-88.366 0-160 71.634-160 160v704c0 88.366 71.634 160 160 160h704c88.366 0 160-71.634 160-160v-704c0-88.366-71.634-160-160-160zM768 64v320h-512v-320zM960 864c0 53.019-42.981 96-96 96h-704c-53.019 0-96-42.981-96-96v-704c0-53.019 42.981-96 96-96h32v352c0 17.673 14.327 32 32 32h576c17.673 0 32-14.327 32-32v-352h32c53.019 0 96 42.981 96 96z\",\r\n        \"M640 288c17.673 0 32-14.327 32-32v-64c0-17.673-14.327-32-32-32s-32 14.327-32 32v64c0 17.673 14.327 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"save\"\r\n      ],\r\n      \"defaultCode\": 59746,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1014.4 969.6l-228.48-228.48c68.48-78.72 110.080-181.12 110.080-293.12 0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448 112 0 214.4-41.6 293.12-110.080l228.48 228.48c6.4 6.4 14.72 9.6 22.4 9.6s16.64-3.2 22.4-9.6c12.8-12.16 12.8-32.64 0-44.8zM448 832c-211.84 0-384-172.16-384-384s172.16-384 384-384 384 172.16 384 384-172.16 384-384 384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"search\"\r\n      ],\r\n      \"defaultCode\": 59747,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M429.44 943.36c-224 0-428.8-128-428.8-268.8-0.64-3.84-35.84-222.72 345.6-439.040 22.124-11.149 48.219-17.678 75.84-17.678s53.716 6.529 76.828 18.127c24.213 21.163 40.079 53.038 40.079 88.618 0 8.805-0.972 17.383-2.814 25.633l0.146-0.78c27.051-15.459 59.452-24.574 93.982-24.574 44.332 0 85.154 15.025 117.653 40.26 19.027 18.041 31.143 44.011 31.143 72.81 0 16.762-4.104 32.564-11.362 46.459 58.875 18.32 104.369 62.973 124.017 119.697 2.527 12.431 3.74 25.179 3.74 38.21 0 52.53-19.715 100.455-52.15 136.779-95.988 101.736-231.983 165.2-382.8 165.2-10.943 0-21.807-0.334-32.584-0.993zM429.44 282.88c-21.131 0.657-41.053 5.063-59.375 12.572-330.385 187.748-306.065 371.428-306.065 373.348 0 97.92 163.2 210.56 364.8 210.56 8.951 0.616 19.401 0.968 29.932 0.968 130.936 0 249.187-54.309 333.456-141.63 25.432-25.968 41.044-61.37 41.044-100.42 0-6.614-0.448-13.124-1.315-19.5-19.693-44.008-60.745-76.138-109.892-83.012l-36.585-7.125 18.56-53.76c21.12-40.96 6.4-55.040 0-60.16-20.291-13.387-45.183-21.355-71.937-21.355-24.167 0-46.815 6.502-66.29 17.853-16.013 8.622-63.373 33.582-88.973 6.702s-11.52-57.6 0-76.8 0-40.96-12.8-50.56c-7.46-5.008-16.643-7.993-26.523-7.993-1.93 0-3.833 0.114-5.703 0.335z\",\r\n        \"M832 432c4.256 1.883 9.22 2.98 14.44 2.98 14.981 0 27.852-9.030 33.469-21.944 8.223-16.586 12.982-35.845 12.982-56.216 0-70.692-57.308-128-128-128-20.539 0-39.949 4.838-57.151 13.436-11.58 5.696-19.914 18.141-19.914 32.533 0 20.147 16.333 36.48 36.48 36.48 4.424 0 8.664-0.787 12.587-2.23 6.405-2.871 14.171-4.59 22.339-4.59 31.458 0 56.96 25.502 56.96 56.96 0 8.168-1.719 15.934-4.815 22.956-1.74 3.892-2.836 8.855-2.836 14.075 0 14.981 9.030 27.852 21.944 33.469z\",\r\n        \"M759.040 96c-22.811 0.169-44.839 3.194-65.847 8.734-12.4 4.768-22.392 18.193-22.392 33.951 0 20.147 16.333 36.48 36.48 36.48 2.005 0 3.971-0.162 5.888-0.473 13.943-3.707 30.191-5.851 46.941-5.851 106.039 0 192 85.961 192 192 0 23.943-4.383 46.863-12.389 68-0.95 2.385-1.754 6.668-1.754 11.138 0 15.651 9.857 29.001 23.701 34.179 3.957 1.472 8.24 2.276 12.71 2.276 15.651 0 29.001-9.857 34.179-23.701 10.211-27.284 16.074-58.524 16.074-91.133 0-146.812-118.83-265.87-265.556-266.239z\"\r\n      ],\r\n      \"tags\": [\r\n        \"sina\"\r\n      ],\r\n      \"defaultCode\": 59748,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M960 672h-48v-128c0-35.346-28.654-64-64-64h-304v-128h48c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64h-160c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h48v128h-304c-35.346 0-64 28.654-64 64v128h-48c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h160c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64h-48v-128h304v128h-48c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h160c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64h-48v-128h304v128h-48c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h160c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64zM432 288v-160h160v160zM224 896h-160v-160h160zM592 736v160h-160v-160zM960 896h-160v-160h160z\"\r\n      ],\r\n      \"tags\": [\r\n        \"sitemap\"\r\n      ],\r\n      \"defaultCode\": 59749,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M256 352c0-26.24 21.76-48 48-48s48 21.76 48 48c0 26.24-21.76 48-48 48s-48-21.76-48-48zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512zM960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448s448-200.96 448-448zM720 304c-26.24 0-48 21.76-48 48s21.76 48 48 48 48-21.76 48-48c0-26.24-21.76-48-48-48zM740.48 512.64c-17.28-2.56-33.92 9.6-36.48 26.88-13.44 93.44-96 164.48-192 164.48-92.8 0-177.28-72.32-192.64-165.12-2.56-17.28-19.2-29.44-36.48-26.24-17.28 2.56-29.44 19.2-26.24 36.48 20.48 124.8 130.56 218.88 255.36 218.88 127.36 0 236.8-94.080 255.36-219.52 3.2-17.28-8.96-33.28-26.88-35.84z\"\r\n      ],\r\n      \"tags\": [\r\n        \"smile\"\r\n      ],\r\n      \"defaultCode\": 59750,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M307.84 20.48c-1.106-2.442-2.389-4.546-3.892-6.469l0.052-3.771-10.88-5.12-3.84-5.12h-24.32l-6.4 6.4h-3.84l-244.48 231.040c-3.844 5.217-6.153 11.772-6.153 18.866 0 17.673 14.327 32 32 32 5.791 0 11.223-1.538 15.909-4.228l191.844-178.478v886.4c0 17.673 14.327 32 32 32s32-14.327 32-32v-960c0.053-0.67 0.084-1.452 0.084-2.24s-0.030-1.57-0.090-2.343c0.133-0.954 0.205-2.177 0.205-3.417s-0.072-2.464-0.212-3.666z\",\r\n        \"M992 761.6c-5.904-6.86-14.597-11.178-24.299-11.178-8.12 0-15.533 3.024-21.175 8.008l-191.966 164.45v-890.88c0-17.673-14.327-32-32-32s-32 14.327-32 32v960c-0.053 0.67-0.084 1.452-0.084 2.24s0.030 1.57 0.090 2.343c0.093 4.745 1.762 9.185 4.511 12.748l-0.038 3.789c2.363 2.53 5.108 4.663 8.152 6.316l0.168 0.084c3.584 1.586 7.764 2.509 12.16 2.509s8.576-0.923 12.357-2.586l3.643 0.077h5.12l245.12-209.92c10.21-5.483 17.035-16.087 17.035-28.285 0-7.468-2.558-14.339-6.846-19.783z\"\r\n      ],\r\n      \"width\": 1000,\r\n      \"tags\": [\r\n        \"sort\"\r\n      ],\r\n      \"defaultCode\": 59751,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M785.92 1024c-0.131 0.001-0.287 0.002-0.442 0.002-11.603 0-22.485-3.088-31.869-8.486l-241.609-133.595-243.2 133.12c-10.084 6.943-22.561 11.090-36.007 11.090-35.346 0-64-28.654-64-64 0-5.762 0.761-11.346 2.189-16.657l46.618-286.912-198.4-206.72c-13.85-11.813-22.575-29.28-22.575-48.785 0-33.831 26.25-61.532 59.494-63.844l272.841-41.611 122.88-259.2c9.191-24.806 32.648-42.165 60.16-42.165s50.969 17.359 60.016 41.722l121.104 256.443 274.56 43.52c33.402 2.371 59.6 30.050 59.6 63.849 0 19.164-8.423 36.36-21.769 48.090l-199.752 204.862 46.080 289.92c0.909 4.044 1.431 8.689 1.431 13.456 0 35.346-28.654 64-64 64-0.503 0-1.005-0.006-1.505-0.017zM512 817.92c0.131-0.001 0.287-0.002 0.442-0.002 11.603 0 22.485 3.088 31.869 8.486l240.329 133.595-42.88-290.56c-0.662-3.455-1.040-7.429-1.040-11.491 0-17.78 7.25-33.866 18.955-45.464l200.325-205.445-275.2-46.080c-22.469-3.175-40.957-17.628-49.758-37.353l-123.042-259.607-122.88 259.2c-8.963 20.132-27.451 34.585-49.58 37.721l-275.54 41.639 198.4 209.28c11.71 11.603 18.96 27.689 18.96 45.469 0 4.062-0.378 8.036-1.102 11.888l-44.738 290.803 244.48-128c8.774-7.3 19.681-12.328 31.658-14.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"star\"\r\n      ],\r\n      \"defaultCode\": 59752,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M800 192h-576c-17.92 0-32 14.080-32 32v576c0 17.92 14.080 32 32 32h576c17.92 0 32-14.080 32-32v-576c0-17.92-14.080-32-32-32zM768 768h-512v-512h512v512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"stop\"\r\n      ],\r\n      \"defaultCode\": 59753,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM569.6 292.48c-21.76-44.8-91.52-49.28-116.48 4.48l-131.84 429.44c-5.12 16.64 4.48 34.56 21.12 40.32 17.28 5.12 34.56-4.48 39.68-21.12l31.36-105.6c1.28-0.64 1.92 0 2.56 0h192c0.64 0 0.64 0 1.28 0l32.64 105.6c3.84 13.44 16.64 22.4 30.080 22.4 3.2 0 6.4-0.64 9.6-1.28 16.64-5.12 26.24-23.040 21.12-40.32l-133.12-433.92zM432.64 576l76.8-260.48 80 260.48h-156.8z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_application\"\r\n      ],\r\n      \"defaultCode\": 59754,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM722.56 488.32v218.24c0 8.96-7.040 16-16 16h-32c-8.96 0-16-7.040-16-16v-38.4c-38.4 41.6-93.44 65.28-154.88 65.28-106.88 0-215.68-82.56-215.68-241.28 0-140.8 93.44-238.72 226.56-238.72 126.080 0 171.52 68.48 197.12 127.36 1.92 4.48 1.92 9.6-0.64 14.080s-7.040 7.68-11.52 8.96l-33.28 5.12c-7.68 1.28-14.72-3.2-17.28-10.24-22.4-58.88-67.2-88.96-134.4-88.96-94.72 0-161.28 75.52-161.28 183.040 0 105.6 65.92 185.6 152.32 185.6 66.56 0 122.88-39.68 151.040-106.88v-43.52h-139.52c-8.96 0-16-7.68-16-16v-23.68c0-8.96 7.040-16 16-16h189.44c8.32 0 16 7.040 16 16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_Group\"\r\n      ],\r\n      \"defaultCode\": 59755,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM732.16 305.92l3.84 429.44c0 17.92-14.080 32-32 32 0 0 0 0 0 0-17.28 0-32-14.080-32-32l-3.2-409.6-127.36 295.040c-0.64 1.92-1.92 2.56-3.2 4.48s-1.92 3.84-3.84 5.12c-1.92 1.92-4.48 3.84-7.040 5.12-0.64 0.64-1.28 1.28-2.56 1.92 0 0 0 0-0.64 0-2.56 1.28-5.12 1.28-8.32 1.92-1.28 0-2.56 0.64-3.84 0.64s-2.56-0.64-3.84-0.64c-3.2-0.64-5.76-0.64-8.32-1.92 0 0 0 0-0.64 0-1.28-0.64-1.92-1.92-3.2-2.56-2.56-1.28-4.48-2.56-6.4-4.48-1.92-1.28-2.56-3.2-3.84-5.12s-2.56-2.56-3.2-4.48l-127.36-291.84-3.2 407.040c0 17.92-14.72 32-32 32 0 0 0 0 0 0-17.92 0-32-14.72-32-32l6.4-442.88c21.76-45.44 93.44-45.44 114.56 0l103.040 234.88 102.4-234.24c22.4-47.36 93.44-46.080 115.2-1.28l2.56 13.44z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_module\"\r\n      ],\r\n      \"defaultCode\": 59756,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM528 256h-128c-17.92 0-32 14.080-32 32v448c0 17.92 14.080 32 32 32s32-14.080 32-32v-135.68h96c105.6 0 192-77.44 192-172.16s-86.4-172.16-192-172.16zM528 536.32h-96v-216.32h96c70.4 0 128 48.64 128 108.16s-57.6 108.16-128 108.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_process\"\r\n      ],\r\n      \"defaultCode\": 59757,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M384 32v320c0 17.92-14.080 32-32 32h-320c-17.92 0-32-14.080-32-32s14.080-32 32-32h288v-288c0-17.92 14.080-32 32-32s32 14.080 32 32zM672 384h320c17.92 0 32-14.080 32-32s-14.080-32-32-32h-288v-288c0-17.92-14.080-32-32-32s-32 14.080-32 32v320c0 17.92 14.080 32 32 32zM352 640h-320c-17.92 0-32 14.080-32 32s14.080 32 32 32h288v288c0 17.92 14.080 32 32 32s32-14.080 32-32v-320c0-17.92-14.080-32-32-32zM992 640h-320c-17.92 0-32 14.080-32 32v320c0 17.92 14.080 32 32 32s32-14.080 32-32v-288h288c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"un_full_screen\"\r\n      ],\r\n      \"defaultCode\": 59758,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M674.107 381.994h-481.505v-128.401c0-7.704 26.322-192.602 202.874-192.602 0.002-0 0.005-0 0.008-0 95.629 0 174.123 73.361 182.273 166.875 1.735 17.697 15.968 30.872 33.279 30.872 0.28 0 0.559-0.003 0.837-0.010 16.866-1.013 30.194-14.973 30.194-32.045 0-0.697-0.022-1.388-0.066-2.074-8.664-127.56-114.338-227.825-243.43-227.825-0.637 0-1.274 0.002-1.91 0.007-143.111 2.5-259.327 114.695-268.221 256.013l-0.040 129.19h-32.1c-53.186 0-96.301 43.115-96.301 96.301v449.404c0 53.186 43.115 96.301 96.301 96.301h577.806c53.186 0 96.301-43.115 96.301-96.301v-449.404c0-53.186-43.115-96.301-96.301-96.301zM706.207 927.699c0 17.729-14.372 32.1-32.1 32.1h-577.806c-17.729 0-32.1-14.372-32.1-32.1v-449.404c0-17.729 14.372-32.1 32.1-32.1h577.806c17.729 0 32.1 14.372 32.1 32.1z\",\r\n        \"M385.204 606.696c-17.729 0-32.1 14.372-32.1 32.1v128.401c0 17.729 14.372 32.1 32.1 32.1s32.1-14.372 32.1-32.1v-128.401c0-17.729-14.372-32.1-32.1-32.1z\"\r\n      ],\r\n      \"width\": 770,\r\n      \"tags\": [\r\n        \"unlock\"\r\n      ],\r\n      \"defaultCode\": 59759,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 608c-17.673 0-32 14.327-32 32v256c0 17.673-14.327 32-32 32h-832c-17.673 0-32-14.327-32-32v-256c0-17.673-14.327-32-32-32s-32 14.327-32 32v256c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-256c0-17.673-14.327-32-32-32z\",\r\n        \"M371.84 216.96l108.16-86.4v640c0 17.673 14.327 32 32 32s32-14.327 32-32v-640l108.16 86.4c5.459 4.437 12.496 7.125 20.16 7.125 17.72 0 32.085-14.365 32.085-32.085 0-10.056-4.626-19.031-11.866-24.913l-160.059-128.047c-4.964-3.946-11.324-6.331-18.24-6.331s-13.276 2.385-18.3 6.378l0.060-0.046-160 128c-7.299 5.929-11.925 14.904-11.925 24.96 0 17.72 14.365 32.085 32.085 32.085 7.664 0 14.701-2.687 20.219-7.171z\"\r\n      ],\r\n      \"tags\": [\r\n        \"upload\"\r\n      ],\r\n      \"defaultCode\": 59760,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M610.56 551.040c90.080-51.816 149.76-147.521 149.76-257.165 0-163.3-132.38-295.68-295.68-295.68s-295.68 132.38-295.68 295.68c0 109.644 59.68 205.35 148.327 256.404-185.632 63.599-318.087 237.128-318.567 441.663-0 17.731 14.327 32.058 32 32.058s32-14.327 32-32c-0-221.444 179.516-400.96 400.96-400.96s400.96 179.516 400.96 400.96c0 17.673 14.327 32 32 32s32-14.327 32-32c-0.191-204.138-131.816-377.483-314.805-439.988zM232.96 295.040c0.364-127.678 103.951-231.040 231.679-231.040 127.953 0 231.68 103.727 231.68 231.68s-103.726 231.68-231.679 231.68c-127.953-0-231.68-103.727-231.68-231.68z\"\r\n      ],\r\n      \"width\": 930,\r\n      \"tags\": [\r\n        \"user\"\r\n      ],\r\n      \"defaultCode\": 59761,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M603.52 348.8c0 26.51-22.35 48-49.92 48s-49.92-21.49-49.92-48c0-26.51 22.35-48 49.92-48s49.92 21.49 49.92 48z\",\r\n        \"M357.12 348.8c0 26.51-22.35 48-49.92 48s-49.92-21.49-49.92-48c0-26.51 22.35-48 49.92-48s49.92 21.49 49.92 48z\",\r\n        \"M693.12 604.16c0 15.906-13.181 28.8-29.44 28.8s-29.44-12.894-29.44-28.8c0-15.906 13.181-28.8 29.44-28.8s29.44 12.894 29.44 28.8z\",\r\n        \"M951.68 832c43.793-42.406 71.29-101.414 72.318-166.849-4.62-109.698-77.366-201.057-176.746-233.283 5.69-12.101 10.15-26.27 10.15-41.481 0-4.517-0.393-8.942-1.147-13.243-33.854-181.303-212.414-313.143-425.534-313.143-238.72 0-430.72 167.040-430.72 372.48 1.27 107.545 50.574 203.323 127.418 267.051l-16.698 55.509c-2.184 6.799-3.443 14.621-3.443 22.737 0 42.415 34.385 76.8 76.8 76.8 12.448 0 24.204-2.961 34.602-8.218l101.321-52.919c32.821 7.729 70.507 12.16 109.227 12.16 0.075 0 0.15-0 0.225-0l28.148 0c13.101-0.748 25.14-4.697 35.532-11.069 54.24 73.543 140.674 120.548 238.086 120.548 1.681 0 3.36-0.014 5.034-0.042 21.066-0.065 41.852-2.158 61.979-6.094l49.129 26.578c9.959 5.055 21.715 8.017 34.163 8.017 42.415 0 76.8-34.385 76.8-76.8 0-8.116-1.259-15.938-3.592-23.281zM430.72 752.64c-0.172 0-0.375 0-0.578 0-40.822 0-80.279-5.844-117.58-16.741l-3.442 0.741-131.2 67.2 35.2-113.28h-3.2c-86.099-52.047-143.383-144.183-145.913-249.88-0.007-172.52 165.753-312.68 366.713-312.68 5.718-0.332 12.406-0.522 19.139-0.522 163.315 0 300.606 111.423 340 262.397l-14.818 2.444c-183.040 0-327.040 112-327.040 285.44 0.53 26.715 5.174 52.168 13.322 75.997zM872.96 812.8v0l21.76 67.84-81.28-40.96h-3.84c-21.134 6.095-45.41 9.601-70.504 9.601-0.189 0-0.377-0-0.566-0.001-5.887 0.598-12.758 0.939-19.708 0.939-107.090 0-195.277-80.93-206.739-184.966 10.351-106.975 99.066-189.144 206.973-189.144 5.964 0 11.869 0.251 17.706 0.743 4.312-0.492 10.217-0.743 16.181-0.743 107.907 0 196.622 82.17 206.988 187.352-1.707 63.823-35.814 118.445-86.173 148.891z\",\r\n        \"M839.68 604.16c0 15.906-13.181 28.8-29.44 28.8s-29.44-12.894-29.44-28.8c0-15.906 13.181-28.8 29.44-28.8s29.44 12.894 29.44 28.8z\"\r\n      ],\r\n      \"tags\": [\r\n        \"weixin\"\r\n      ],\r\n      \"defaultCode\": 59762,\r\n      \"grid\": 16\r\n    }\r\n  ],\r\n  \"colorThemes\": [],\r\n  \"colorThemeIdx\": 0,\r\n  \"preferences\": {\r\n    \"showGlyphs\": true,\r\n    \"showQuickUse\": true,\r\n    \"showQuickUse2\": true,\r\n    \"showSVGs\": true,\r\n    \"fontPref\": {\r\n      \"prefix\": \"icon-\",\r\n      \"metadata\": {\r\n        \"fontFamily\": \"icomoon\"\r\n      },\r\n      \"metrics\": {\r\n        \"emSize\": 1024,\r\n        \"baseline\": 6.25,\r\n        \"whitespace\": 50\r\n      },\r\n      \"embed\": false\r\n    },\r\n    \"imagePref\": {\r\n      \"prefix\": \"icon-\",\r\n      \"png\": true,\r\n      \"useClassSelector\": true,\r\n      \"color\": 0,\r\n      \"bgColor\": 16777215,\r\n      \"classSelector\": \".icon\"\r\n    },\r\n    \"historySize\": 50,\r\n    \"showCodes\": true,\r\n    \"gridSize\": 16\r\n  },\r\n  \"IcoMoonType\": \"icon-set\"\r\n}"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bkDialog-1.0/css/ui-dialog.css",
    "content": ".bk-dialog-box{\r\n    position: absolute;\r\n    z-index: 10240;\r\n    background: #fff;\r\n    border: 1px solid #ddd;\r\n    outline: 0;\r\n    background-clip: padding-box;\r\n    font-size: 14px;\r\n    color: #333;\r\n    left: 50%;\r\n    top: 50%;\r\n    transform: translate(-50%, -50%);\r\n}\r\n.bk-dialog-mask{\r\n    opacity: 0;\r\n    background: rgb(0, 0, 0);\r\n    position: fixed;\r\n    left: 0px;\r\n    top: 0px;\r\n    width: 100%;\r\n    height: 100%;\r\n    overflow: hidden;\r\n    user-select: none;\r\n    z-index: 1024;\r\n    display: none;\r\n}\r\n.bk-dialog-header{\r\n    border: 0 none;\r\n    text-align: left;\r\n    background: #f8f8f8;\r\n    height: 40px;\r\n    line-height: 40px;\r\n    padding: 0 18px;\r\n    border-bottom: 1px solid #E5E5E5;\r\n}\r\n.bk-dialog-close{\r\n    position: absolute;\r\n    float: right;\r\n    top: 8px;\r\n    right: 10px;\r\n    padding: 0 4px;\r\n    font-size: 21px;\r\n    font-weight: bold;\r\n    line-height: 1;\r\n    color: #000;\r\n    opacity: .7;\r\n    filter: alpha(opacity=70);\r\n    cursor: pointer;\r\n    background: transparent;\r\n    border: 0;\r\n}\r\n.bk-dialog-no-header .bk-dialog-close{\r\n    top: 3px;\r\n    right: 3px;\r\n}\r\n.bk-dialog-title{\r\n    margin: 0;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    text-overflow: ellipsis;\r\n    font-weight: bold;\r\n    cursor: default;\r\n    font-size: 12px;\r\n}\r\n.bk-dialog-content{\r\n    text-align: left;\r\n    padding: 20px;\r\n    min-width: 200px;\r\n}\r\n.bk-dialog-btn{\r\n    font-size: 12px;\r\n    width: auto;\r\n    overflow: visible;\r\n    display: inline-block;\r\n    margin-bottom: 0;\r\n    font-size: 12px;\r\n    font-weight: normal;\r\n    line-height: 18px;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    vertical-align: middle;\r\n    cursor: pointer;\r\n    background-image: none;\r\n    border: 1px solid transparent;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    -o-user-select: none;\r\n    user-select: none;\r\n    min-width: 50px;\r\n}\r\n.bk-dialog-ok{\r\n    color: #ffffff;\r\n    background-color: #4A9BFF;\r\n    border-color: #2180F5;\r\n}\r\n.bk-dialog-cancel{\r\n    color: #333333;\r\n    background-color: #ffffff;\r\n    border-color: #cccccc;\r\n}\r\n.bk-dialog-footer{\r\n    padding: 0 20px 20px 20px;\r\n    text-align: right;\r\n}\r\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bkDialog-1.0/js/dialog.js",
    "content": "(function(){\n    function isString(str){\n        return (typeof str=='string') && str.constructor == String;\n    }\n    function dialog(options){\n        var defaultOptions = {\n            id: '',\n            width: 'auto',\n            title: '',\n            lock: false,\n            fixed: false,\n            zIndex: 1024,\n            quickClose: false,\n            content: '',\n            okVal: '确定',\n            ok: null,\n            cancelVal: '取消',\n            cancel: null,\n            onshow: null,\n            onclose: null\n        };\n        var prev, next, parent, width, height, display, contentDom;\n        var dialogOptions = $.extend({}, defaultOptions, options);\n        var dialogNode = null;\n\n        function _init(){\n\n            var _html = [\n                        '<div class=\"bk-dialog\" style=\"display:none;\" id=\"'+ dialogOptions.id +'\">',\n                        '<div class=\"bk-dialog-mask\"></div>',\n                        '<div class=\"bk-dialog-box\" style=\"width:'+ dialogOptions.width +'px; z-index:'+ dialogOptions.zIndex +'; \">',\n                        '    <div class=\"bk-dialog-header\">',\n                        '        <strong class=\"bk-dialog-title\">'+ dialogOptions.title +'</strong>',\n                        '    </div>',\n                        '        <button class=\"bk-dialog-close\">×</button>',\n                        '    <div class=\"bk-dialog-content\"></div>',\n                        '    <div class=\"bk-dialog-footer\">',\n                        '        <button type=\"button\" class=\"bk-dialog-btn bk-dialog-ok\">'+ dialogOptions.okVal +'</button>',\n                        '        <button type=\"button\" class=\"bk-dialog-btn bk-dialog-cancel\">'+ dialogOptions.cancelVal +'</button>',\n                        '    </div>',\n                        '</div>',\n                        '</div>'\n                        ].join('');\n\n            dialogNode = $(_html);\n            if (dialogOptions.content && isString(dialogOptions.content)){\n                dialogNode.find('.bk-dialog-content').html(dialogOptions.content);\n            }else if(dialogOptions.content.nodeType == 1){\n                contentDom = dialogOptions.content;\n                display = contentDom.style.display;\n                prev = contentDom.previousSibling;\n                next = contentDom.nextSibling;\n                parent = contentDom.parentNode;\n                dialogNode.find('.bk-dialog-content').get(0).appendChild(contentDom);\n                contentDom.style.display = 'block';\n            }\n            if (dialogOptions.id){\n                if ($('#'+dialogOptions.id).length){\n                    $('#'+dialogOptions.id).remove();\n                }\n                dialogNode.attr('id', dialogNode.id);\n            }\n            dialogNode.find('.bk-dialog-close').on('click', function(){\n                _remove();\n            });\n\n            dialogNode.find('.bk-dialog-ok').on('click', function(){\n                if (dialogOptions.ok){\n                    if (dialogOptions.ok() === false){\n                    }else{\n                        _remove();\n                    }\n                }else{\n                    _remove();\n                }\n            });\n\n            dialogNode.find('.bk-dialog-cancel').on('click', function(){\n                dialogOptions.cancel && dialogOptions.cancel();\n                _remove();\n            });\n\n            _render();\n            $('body').append(dialogNode);\n        }\n\n        function _render(){\n            if (!dialogOptions.ok){\n                dialogNode.find('.bk-dialog-ok').remove();\n            }\n            if (!dialogOptions.cancel){\n                dialogNode.find('.bk-dialog-cancel').remove();\n            }\n            if (dialogOptions.cancel === false){\n                dialogNode.find('.bk-dialog-close').remove();\n            }\n            if (dialogOptions.hideClose){\n                dialogNode.find('.bk-dialog-close').remove();\n            }\n            if (!dialogOptions.title){\n                dialogNode.addClass('bk-dialog-no-header').find('.bk-dialog-header').remove();\n            }\n            if (!dialogOptions.ok && !dialogOptions.cancel){\n                dialogNode.find('.bk-dialog-footer').remove();\n            }\n            if (dialogOptions.fixed){\n                dialogNode.find('.bk-dialog-box').css({position: 'fixed'});\n            }\n            if (dialogOptions.quickClose){\n                dialogNode.find('.bk-dialog-mask').show();\n                dialogNode.find('.bk-dialog-box').on('click', function(){\n                    return false;\n                });\n                dialogNode.find('.bk-dialog-mask').on('click', function(){\n                    _close();\n                })\n            }\n            if (dialogOptions.lock){\n                _showModal();\n            }else{\n                _show();\n            }\n\n        }\n\n        function _show(){\n            dialogNode.show();\n            dialogOptions.onshow && dialogOptions.onshow();\n        }\n\n        function _showModal(){\n            dialogNode.show();\n            dialogNode.find('.bk-dialog-mask').css('opacity', '0.7').show();\n            dialogNode.find('.bk-dialog-box').css('position', 'fixed');\n            dialogOptions.onshow && dialogOptions.onshow();\n        }\n\n        function _close(){\n            dialogNode.hide();\n            dialogOptions.onclose && dialogOptions.onclose();\n        }\n\n        function _remove(){\n            dialogNode.remove();\n            _elemBack();\n            dialogOptions.onclose && dialogOptions.onclose();\n        }\n\n        function _content(html){\n            dialogNode.find('.bk-dialog-content').html(html);\n        }\n\n        function _title(text){\n            dialogNode.find('.bk-dialog-title').text(text);\n        }\n\n        function _width(width){\n            dialogNode.width(width);\n        }\n\n        function _height(height){\n            dialogNode.height(height);\n        }\n\n        function _elemBack(){\n            if (contentDom){\n                if (prev && prev.parentNode) {\n                    prev.parentNode.insertBefore(contentDom, prev.nextSibling);\n                } else if (next && prev.parentNode) {\n                    next.parentNode.insertBefore(contentDom, next);\n                } else if (parent) {\n                    parent.appendChild(contentDom);\n                };\n                contentDom.style.display = display;\n            }\n        }\n\n        function Dialog(){\n            _init();\n        }\n        Dialog.prototype = {\n            show: function(){\n                _show();\n                return this;\n            },\n            showModal: function(){\n                _showModal();\n                return this;\n            },\n            close: function(){\n                _close();\n                return this;\n            },\n            remove: function(){\n                _remove();\n                return this;\n            },\n            content: function(html){\n                _content(html);\n                return this;\n            },\n            title: function(text){\n                _text(text);\n                return this;\n            },\n            width: function(width){\n                _width(width);\n                return this;\n            },\n            height: function(height){\n                _height(height);\n                return this;\n            },\n            time: function(sec){\n                if (sec){\n                    setTimeout(function(){\n                        _remove();\n                    }, sec * 1000);\n                }\n            }\n        };\n\n        return new Dialog();\n\n    }\n    window.dialog = dialog;\n    var art = {};\n    art.dialog = dialog;\n    window.art = art;\n})();\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/bootstrap-overrides.css",
    "content": "/* Some overrides from default bootstrap styles */\n\nh1,h2,h3,h4,h5,h6{\n\tfont-weight: normal;\n\tfont-family: 'Microsoft Yahei', 'Open Sans', sans-serif;\n}\n\n/* COMPONENTS */\n\n\n/* labels */\n.label, .badge {\n\tfont-weight: lighter;\n\tfont-size: 90%;\n}\n.label-success, .badge-success {\n\tbackground-color: rgb(129, 189, 130);\n}\n.label-info, .badge-info {\n\tbackground-color: rgb(104, 163, 213);\n}\n\n/* alerts */\n.alert [class^=\"icon-\"], \n.alert [class*=\" icon-\"] {\n\tfont-size: 27px;\n\tposition: relative;\n\ttop: 4px;\n\tmargin-bottom: 8px;\n\tmargin-right: 17px;\n\tdisplay: inline-block;\n\tcolor: #f1c359;\n}\n.alert-success [class^=\"icon-\"], \n.alert-success [class*=\" icon-\"] {\n\tcolor: #81ad53;\n}\n.alert-info [class^=\"icon-\"], \n.alert-info [class*=\" icon-\"] {\n\tcolor: #4993c6;\n}\n.alert-danger [class^=\"icon-\"], \n.alert-danger [class*=\" icon-\"] {\n\tcolor: #d5393e;\n}\n\n\n/* code*/\ncode {\n\tcolor: rgb(78, 153, 223);\n}\n\n\n/* HTML ELEMENTS */\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: \"Open Sans\", Arial;\n}\ninput[type=\"text\"],\ninput[type=\"password\"],\ntextarea {\t\n\tfont-size: 13px;\n\t-webkit-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075);\n\t   -moz-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075);\n\t\t\tbox-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075);\n\n\t/*border: none;\n\t-webkit-box-shadow: inset rgba(112, 112, 112, 0.3) 0 1px 1px,inset rgba(0,0,0,0.3) 0 0 1px,rgba(255,255,255,0.4) 0 1px 0;\n\t-moz-box-shadow: inset rgba(112, 112, 112, 0.3) 0 1px 1px,inset rgba(0,0,0,0.3) 0 0 1px,rgba(255,255,255,0.4) 0 1px 0;\n\tbox-shadow: inset rgba(112, 112, 112, 0.3) 0 1px 1px,inset rgba(0,0,0,0.3) 0 0 1px,rgba(255,255,255,0.4) 0 1px 0;\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;*/\n}\n.inline-input input[type=\"text\"],\n.inline-input input[type=\"password\"],\ninput[type=\"text\"].inline-input,\ninput[type=\"password\"].inline-input {\n\tbackground: #fff;\n\tborder-top: 0 none;\n\tborder-left: 0 none;\n\tborder-right: 0 none;\n\tborder-bottom: 1px solid #d0dde9;\n\tborder-radius: 0;\n\tbox-shadow: none;\n\tborder-color: #dee3ea;\n}\n.inline-input input[type=\"text\"]:focus,\n.inline-input input[type=\"password\"]:focus,\ninput[type=\"text\"].inline-input:focus,\ninput[type=\"password\"].inline-input:focus {\n\tbox-shadow: none;\n\tborder-color: #5d6a80;\n}\n.inline-input input[type=\"text\"]:hover,\n.inline-input input[type=\"password\"]:hover,\ninput[type=\"text\"].inline-input:hover,\ninput[type=\"password\"].inline-input:hover {\n\tborder-color: #959fb0;\n}\n\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ntextarea:focus{\t\n\tborder-color: #A2CEF0;\n\t-webkit-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t   -moz-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t\t\tbox-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\n\t/*-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t   -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t\t\tbox-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);*/\n}\ninput[type=\"reset\"]{\n\ttext-transform: uppercase;\n\tborder:0 none;\n\tbackground: none;\n\ttext-decoration: underline;\n\tfont-size: 12px;\n}\ntextarea{\n\tbackground: #fff;\n\tborder-color: #dee3ea;\n}\nselect{\n\tmargin: 0;\n\theight: 34px;\n\tborder-color: #d0dde9;\n\tborder-radius: 2px;\n\tfont-size: 13px;\n}\ninput[type=\"file\"] {\n\tfont-size: 12px;\n\tline-height: 12px;\n\tdisplay: inline-block;\n}\n\ninput[disabled], textarea[disabled], input[readonly], textarea[readonly] {\n\tcolor: rgb(177, 177, 177);\n}\n/* native placeholders */\ninput:-moz-placeholder,\ntextarea:-moz-placeholder {\n  color: #9ba0a5;\n  font-family: \"Open Sans\", Arial;\n  font-size: 13px;\n}\n\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder {\n  color: #9ba0a5;\n  font-family: \"Open Sans\", Arial;\n  font-size: 12px;\n}\n\ninput::-webkit-input-placeholder,\ntextarea::-webkit-input-placeholder {\n  color: #9ba0a5;\n  font-family: \"Open Sans\", Arial;\n  font-size: 12px;\n}\n\n\n/* PREPEND & APPEND INPUT */\n.input-group input, \n.input-group input, \n.input-group .uneditable-input, \n.input-group .uneditable-input {\n\tborder: 1px solid #d6e2eb;\n}\n.input-group .input-group-addon {\n\tbackground-color: #f2f5f9;\n\tborder: 1px solid #d6e2eb;\n\tpadding: 4px 8px;\n\tfont-size: 13px;\n}\n\n/* NAVBAR */\n.navbar-inverse {\n\tmin-height: 48px;\n\tmargin-bottom: 0px;\n\tborder-radius: 0px;\n\tborder-bottom: 1px solid #191e23;\n\n\tbackground: #2c3742; /* Old browsers */\n\tbackground: -moz-linear-gradient(top,  #2c3742 0%, #28303a 100%); /* FF3.6+ */\n\tbackground: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2c3742), color-stop(100%,#28303a)); /* Chrome,Safari4+ */\n\tbackground: -webkit-linear-gradient(top,  #2c3742 0%,#28303a 100%); /* Chrome10+,Safari5.1+ */\n\tbackground: -o-linear-gradient(top,  #2c3742 0%,#28303a 100%); /* Opera 11.10+ */\n\tbackground: -ms-linear-gradient(top,  #2c3742 0%,#28303a 100%); /* IE10+ */\n\tbackground: linear-gradient(to bottom,  #2c3742 0%,#28303a 100%); /* W3C */\n\tfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2c3742', endColorstr='#28303a',GradientType=0 ); /* IE6-9 */\n}\n/* navbar-nav*/\n.navbar-inverse .navbar-nav {\n\tpadding-right: 20px;\n}\n/* menu toggler */\n/*.navbar-inverse .navbar-toggle {\n\tfloat: left;\n\tmargin-top: 10px;\n\tmargin-left: 15px;\n}*/\n/* navbar brand*/\n.navbar-inverse .navbar-brand {\n\tcolor: #ffffff;\n\ttext-transform: uppercase;\n\tfont-weight: lighter;\n\tpadding: 11px 20px;\n}\n.navbar-inverse .navbar-brand strong {\n\tfont-weight: normal;\n}\n/* navbar links */\n.navbar-inverse .nav > li > a {\n\tpadding: 13px 15px 8px;\n\tborder-left: 1px solid #101417;\n\tcolor: rgb(214, 214, 214);\n\toutline: 0px;\n\theight: 46px;\n\ttransition: background .1s linear;\n\t-moz-transition: background .1s linear; /* Firefox 4 */\n\t-webkit-transition: background .1s linear; /* Safari and Chrome */\n\t-o-transition: background .1s linear;  /* Opera */\n}\n.navbar-inverse .nav > li > a:hover {\n\tbackground: rgba(25, 31, 36,0.6);\n}\n/* dropdown caret */\n.dropdown .caret {\n\tposition: relative;\n\ttop: -1px;\t\n}\n/* dropdown active */\n.dropdown.open > a, \n.dropdown.open > a:hover, \n.dropdown.open > a:focus {\n\tborder-color: #101417;\n}\n/* dropdown menu */\n.dropdown-menu > li > a {\n\tfont-size: 13px;\n\toutline: none;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus,\n.dropdown-submenu:hover > a,\n.dropdown-submenu:focus > a {\n\tbackground: rgb(60, 91, 121) !important;\n}\n\n\n/* PAGINATION */\n.pagination > li > a, .pagination > li > span {\n\tfont-weight: 600;\n}\n.pagination.inverse a,\n.pagination.inverse span {\n\tbackground-color: #333e4a;\n\tcolor: #fff;\n\tborder-top-color: #333e4a;\n\tborder-bottom-color: #333e4a;\n\tborder-right-color: #566676;\n\tborder-left-color: #566676;\n} \n.pagination.inverse a:hover,\n.pagination.inverse span:hover {\n\tbackground-color: #000;\n}\n.pagination.inverse > li.active > a {\n\tcolor: #3b9ff3;\n\tbackground-color: #212b36;\n\tborder-right-color: #212b36;\n\tborder-left-color: #212b36;\n}\n\n/* TABLES*/\n\n.table thead{\n\tborder-top:1px solid #dee3ea;\n}\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: #f5fafc;\n}\n.table th.sortable {\n\tcursor: pointer;\n}\n.table th.sortable:hover {\n\ttext-decoration: underline;\n}\n.table thead th{\n\tfont-weight: bold;\n\tposition: relative;\n\tpadding-bottom: 6px !important;\n\tpadding-top: 6px !important;\n\ttext-transform: uppercase;\n\tfont-size: 11px;\n\tvertical-align: top !important;\n\tborder-bottom: 0px !important;\n}\n.table td{\n\tcolor: #526273;\n\tborder-top-color: #edf2f7 !important;\n\tvertical-align: middle !important;\n}\n.table th.align-right,\n.table td.align-right {\n\ttext-align: right;\n\tpadding-right: 10px !important;\n}\ntable tr.first td{\n\tborder-top: 0 none;\n}\ntable th span.line{\n\tposition: absolute;\n\ttop: 0;\n\tleft: -8px;\n\tborder-left: 1px solid #dee3ea;\n\theight: 10px;\n}\n\n/* modals */\n.modal-backdrop.in {\n\topacity: 0.5 !important;\n}\n\n\n/* override navbar toggle */\n/*@media (max-width: 768px) {\n  .navbar-toggle {\n    display: block !important;\n  }\n}*/\n\n.form-control,\n.input-group-addon{-webkit-border-radius:0; -moz-border-radius:0; border-radius:0;}"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/bootstrap-theme.css",
    "content": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  text-shadow: 0 1px 0 #fff;\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #2d6ca2;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #2d6ca2;\n  border-color: #2b669a;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-color: #e8e8e8;\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-color: #357ebd;\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);\n  background-repeat: repeat-x;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n}\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n}\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);\n  background-image:         linear-gradient(to bottom, #222 0%, #282828 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #3071a9 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #3071a9;\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #3278b3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #3278b3;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -moz-box-sizing: content-box;\n       box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n@media print {\n  * {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 62.5%;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #428bca;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #2a6496;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #999;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 200;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\ncite {\n  font-style: normal;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-muted {\n  color: #999;\n}\n.text-primary {\n  color: #428bca;\n}\na.text-primary:hover {\n  color: #3071a9;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #428bca;\n}\na.bg-primary:hover {\n  background-color: #3071a9;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #999;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  white-space: nowrap;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: 0;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: 0;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: 0;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: 0;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: 0;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: 0;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: 0;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: 0;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  max-width: 100%;\n  background-color: transparent;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-child(odd) > td,\n.table-striped > tbody > tr:nth-child(odd) > th {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover > td,\n.table-hover > tbody > tr:hover > th {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n@media (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-x: scroll;\n    overflow-y: hidden;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  /* IE8-9 */\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n  background-color: #eee;\n  opacity: 1;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\ninput[type=\"date\"] {\n  line-height: 34px;\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  display: block;\n  min-height: 20px;\n  padding-left: 20px;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  display: inline;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\n.radio[disabled],\n.radio-inline[disabled],\n.checkbox[disabled],\n.checkbox-inline[disabled],\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"],\nfieldset[disabled] .radio,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.has-feedback .form-control-feedback {\n  position: absolute;\n  top: 25px;\n  right: 0;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.form-control-static {\n  margin-bottom: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    padding-left: 0;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .control-label,\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.form-horizontal .form-control-static {\n  padding-top: 7px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  top: 0;\n  right: 15px;\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  pointer-events: none;\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #ebebeb;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #3276b1;\n  border-color: #285e8e;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-primary .badge {\n  color: #428bca;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #47a447;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #39b3d7;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ed9c28;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #d2322d;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #428bca;\n  cursor: pointer;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #2a6496;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #999;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-right: 0;\n  padding-left: 0;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height .35s ease;\n          transition: height .35s ease;\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px solid;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #428bca;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #999;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #999;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 1px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus {\n  outline: none;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #999;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #999;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #428bca;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #428bca;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  max-height: 340px;\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: none;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n  .navbar-nav.navbar-right:last-child {\n    margin-right: -15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    padding-left: 0;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-form.navbar-right:last-child {\n    margin-right: -15px;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n  .navbar-text.navbar-right:last-child {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #999;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #999;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #999;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #999;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #999;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #999;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #428bca;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  color: #2a6496;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #999;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #999;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\n.label[href]:hover,\n.label[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #999;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #808080;\n}\n.label-primary {\n  background-color: #428bca;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #3071a9;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #999;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #428bca;\n  background-color: #fff;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.container .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #428bca;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable {\n  padding-right: 35px;\n}\n.alert-dismissable .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #428bca;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media-object {\n  display: block;\n}\n.media-heading {\n  margin: 0 0 5px;\n}\n.media > .pull-left {\n  margin-right: 10px;\n}\n.media > .pull-right {\n  margin-left: 10px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\na.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\na.list-group-item.active,\na.list-group-item.active:hover,\na.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\na.list-group-item.active .list-group-item-heading,\na.list-group-item.active:hover .list-group-item-heading,\na.list-group-item.active:focus .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item.active .list-group-item-text,\na.list-group-item.active:hover .list-group-item-text,\na.list-group-item.active:focus .list-group-item-text {\n  color: #e1edf7;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table {\n  margin-bottom: 0;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  overflow: hidden;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #428bca;\n}\n.panel-primary > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #428bca;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: auto;\n  overflow-y: scroll;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n     -moz-transition:    -moz-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: none;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 20px;\n}\n.modal-footer {\n  padding: 19px 20px 20px;\n  margin-top: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1030;\n  display: block;\n  font-size: 12px;\n  line-height: 1.4;\n  visibility: visible;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1010;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  text-align: left;\n  white-space: normal;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: none;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  margin-left: -10px;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    margin-left: -15px;\n    font-size: 30px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/bootstrap3.0.0.css",
    "content": "/*!\n * Bootstrap v3.0.0\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n/*! normalize.css v2.1.0 | MIT License | git.io/normalize */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nvideo {\n  display: inline-block;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden] {\n  display: none;\n}\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\na:focus {\n  outline: thin dotted;\n}\na:active,\na:hover {\n  outline: 0;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, serif;\n  font-size: 1em;\n}\npre {\n  white-space: pre-wrap;\n}\nq {\n  quotes: \"\\201C\" \"\\201D\" \"\\2018\" \"\\2019\";\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 0;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\nbutton,\ninput,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: 100%;\n  margin: 0;\n}\nbutton,\ninput {\n  line-height: normal;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n  vertical-align: top;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n*,\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 62.5%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #333333;\n  background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\nbutton,\ninput,\nselect[multiple],\ntextarea {\n  background-image: none;\n}\na {\n  color: #428bca;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #2a6496;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.428571429;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0 0 0 0);\n  border: 0;\n}\n@media print {\n  * {\n    text-shadow: none !important;\n    color: #000 !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  @page  {\n    margin: 2cm .5cm;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16.099999999999998px;\n  font-weight: 200;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall {\n  font-size: 85%;\n}\ncite {\n  font-style: normal;\n}\n.text-muted {\n  color: #999999;\n}\n.text-primary {\n  color: #428bca;\n}\n.text-warning {\n  color: #c09853;\n}\n.text-danger {\n  color: #b94a48;\n}\n.text-success {\n  color: #468847;\n}\n.text-info {\n  color: #3a87ad;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-weight: 500;\n  line-height: 1.1;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small {\n  font-weight: normal;\n  line-height: 1;\n  color: #999999;\n}\nh1,\nh2,\nh3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh4,\nh5,\nh6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\nh1 small,\n.h1 small {\n  font-size: 24px;\n}\nh2 small,\n.h2 small {\n  font-size: 18px;\n}\nh3 small,\n.h3 small,\nh4 small,\n.h4 small {\n  font-size: 14px;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.428571429;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n  .dl-horizontal dd:before,\n  .dl-horizontal dd:after {\n    content: \" \";\n    /* 1 */\n  \n    display: table;\n    /* 2 */\n  \n  }\n  .dl-horizontal dd:after {\n    clear: both;\n  }\n  .dl-horizontal dd:before,\n  .dl-horizontal dd:after {\n    content: \" \";\n    /* 1 */\n  \n    display: table;\n    /* 2 */\n  \n  }\n  .dl-horizontal dd:after {\n    clear: both;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999;\n}\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p {\n  font-size: 17.5px;\n  font-weight: 300;\n  line-height: 1.25;\n}\nblockquote p:last-child {\n  margin-bottom: 0;\n}\nblockquote small {\n  display: block;\n  line-height: 1.428571429;\n  color: #999999;\n}\nblockquote small:before {\n  content: '\\2014 \\00A0';\n}\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\nblockquote.pull-right p,\nblockquote.pull-right small {\n  text-align: right;\n}\nblockquote.pull-right small:before {\n  content: '';\n}\nblockquote.pull-right small:after {\n  content: '\\00A0 \\2014';\n}\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.428571429;\n}\ncode,\npre {\n  font-family: Monaco, Menlo, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  white-space: nowrap;\n  border-radius: 4px;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.428571429;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\npre.prettyprint {\n  margin-bottom: 20px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.container:before,\n.container:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.container:after {\n  clear: both;\n}\n.container:before,\n.container:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.container:after {\n  clear: both;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.row:before,\n.row:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.row:after {\n  clear: both;\n}\n.row:before,\n.row:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.row:after {\n  clear: both;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12,\n.col-sm-1,\n.col-sm-2,\n.col-sm-3,\n.col-sm-4,\n.col-sm-5,\n.col-sm-6,\n.col-sm-7,\n.col-sm-8,\n.col-sm-9,\n.col-sm-10,\n.col-sm-11,\n.col-sm-12,\n.col-md-1,\n.col-md-2,\n.col-md-3,\n.col-md-4,\n.col-md-5,\n.col-md-6,\n.col-md-7,\n.col-md-8,\n.col-md-9,\n.col-md-10,\n.col-md-11,\n.col-md-12,\n.col-lg-1,\n.col-lg-2,\n.col-lg-3,\n.col-lg-4,\n.col-lg-5,\n.col-lg-6,\n.col-lg-7,\n.col-lg-8,\n.col-lg-9,\n.col-lg-10,\n.col-lg-11,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11 {\n  float: left;\n}\n.col-xs-1 {\n  width: 8.333333333333332%;\n}\n.col-xs-2 {\n  width: 16.666666666666664%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-4 {\n  width: 33.33333333333333%;\n}\n.col-xs-5 {\n  width: 41.66666666666667%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-7 {\n  width: 58.333333333333336%;\n}\n.col-xs-8 {\n  width: 66.66666666666666%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-10 {\n  width: 83.33333333333334%;\n}\n.col-xs-11 {\n  width: 91.66666666666666%;\n}\n.col-xs-12 {\n  width: 100%;\n}\n@media (min-width: 768px) {\n  .container {\n    max-width: 750px;\n  }\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11 {\n    float: left;\n  }\n  .col-sm-1 {\n    width: 8.333333333333332%;\n  }\n  .col-sm-2 {\n    width: 16.666666666666664%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-4 {\n    width: 33.33333333333333%;\n  }\n  .col-sm-5 {\n    width: 41.66666666666667%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-7 {\n    width: 58.333333333333336%;\n  }\n  .col-sm-8 {\n    width: 66.66666666666666%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-10 {\n    width: 83.33333333333334%;\n  }\n  .col-sm-11 {\n    width: 91.66666666666666%;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-push-1 {\n    left: 8.333333333333332%;\n  }\n  .col-sm-push-2 {\n    left: 16.666666666666664%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333333333%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666666666667%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-7 {\n    left: 58.333333333333336%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666666666666%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333333334%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666666666666%;\n  }\n  .col-sm-pull-1 {\n    right: 8.333333333333332%;\n  }\n  .col-sm-pull-2 {\n    right: 16.666666666666664%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333333333%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666666666667%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-7 {\n    right: 58.333333333333336%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666666666666%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333333334%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666666666666%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.333333333333332%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.666666666666664%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333333333%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666666666667%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.333333333333336%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666666666666%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333333334%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666666666666%;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    max-width: 970px;\n  }\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11 {\n    float: left;\n  }\n  .col-md-1 {\n    width: 8.333333333333332%;\n  }\n  .col-md-2 {\n    width: 16.666666666666664%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-4 {\n    width: 33.33333333333333%;\n  }\n  .col-md-5 {\n    width: 41.66666666666667%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-7 {\n    width: 58.333333333333336%;\n  }\n  .col-md-8 {\n    width: 66.66666666666666%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-10 {\n    width: 83.33333333333334%;\n  }\n  .col-md-11 {\n    width: 91.66666666666666%;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-push-1 {\n    left: 8.333333333333332%;\n  }\n  .col-md-push-2 {\n    left: 16.666666666666664%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333333333%;\n  }\n  .col-md-push-5 {\n    left: 41.66666666666667%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-7 {\n    left: 58.333333333333336%;\n  }\n  .col-md-push-8 {\n    left: 66.66666666666666%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333333334%;\n  }\n  .col-md-push-11 {\n    left: 91.66666666666666%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-pull-1 {\n    right: 8.333333333333332%;\n  }\n  .col-md-pull-2 {\n    right: 16.666666666666664%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333333333%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666666666667%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-7 {\n    right: 58.333333333333336%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666666666666%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333333334%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666666666666%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.333333333333332%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.666666666666664%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333333333%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666666666667%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.333333333333336%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666666666666%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333333334%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666666666666%;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1170px;\n  }\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11 {\n    float: left;\n  }\n  .col-lg-1 {\n    width: 8.333333333333332%;\n  }\n  .col-lg-2 {\n    width: 16.666666666666664%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-4 {\n    width: 33.33333333333333%;\n  }\n  .col-lg-5 {\n    width: 41.66666666666667%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-7 {\n    width: 58.333333333333336%;\n  }\n  .col-lg-8 {\n    width: 66.66666666666666%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-10 {\n    width: 83.33333333333334%;\n  }\n  .col-lg-11 {\n    width: 91.66666666666666%;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-push-1 {\n    left: 8.333333333333332%;\n  }\n  .col-lg-push-2 {\n    left: 16.666666666666664%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333333333%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666666666667%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-7 {\n    left: 58.333333333333336%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666666666666%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333333334%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666666666666%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-pull-1 {\n    right: 8.333333333333332%;\n  }\n  .col-lg-pull-2 {\n    right: 16.666666666666664%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333333333%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666666666667%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-7 {\n    right: 58.333333333333336%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666666666666%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333333334%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666666666666%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.333333333333332%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.666666666666664%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333333333%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666666666667%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.333333333333336%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666666666666%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333333334%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666666666666%;\n  }\n}\ntable {\n  max-width: 100%;\n  background-color: transparent;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  margin-bottom: 20px;\n}\n.table thead > tr > th,\n.table tbody > tr > th,\n.table tfoot > tr > th,\n.table thead > tr > td,\n.table tbody > tr > td,\n.table tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.428571429;\n  vertical-align: top;\n  border-top: 1px solid #dddddd;\n}\n.table thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dddddd;\n}\n.table caption + thead tr:first-child th,\n.table colgroup + thead tr:first-child th,\n.table thead:first-child tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child td {\n  border-top: 0;\n}\n.table tbody + tbody {\n  border-top: 2px solid #dddddd;\n}\n.table .table {\n  background-color: #ffffff;\n}\n.table-condensed thead > tr > th,\n.table-condensed tbody > tr > th,\n.table-condensed tfoot > tr > th,\n.table-condensed thead > tr > td,\n.table-condensed tbody > tr > td,\n.table-condensed tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-child(odd) > td,\n.table-striped > tbody > tr:nth-child(odd) > th {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover > td,\n.table-hover > tbody > tr:hover > th {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td {\n  background-color: #d0e9c6;\n  border-color: #c9e2b3;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n  border-color: #eed3d7;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td {\n  background-color: #ebcccc;\n  border-color: #e6c1c7;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n  border-color: #fbeed5;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td {\n  background-color: #faf2cc;\n  border-color: #f8e5be;\n}\n@media (max-width: 768px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    overflow-x: scroll;\n    border: 1px solid #dddddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n    background-color: #fff;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > thead > tr:last-child > td,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  /* IE8-9 */\n\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\nselect optgroup {\n  font-size: inherit;\n  font-style: inherit;\n  font-family: inherit;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n  height: auto;\n}\n.form-control:-moz-placeholder {\n  color: #999999;\n}\n.form-control::-moz-placeholder {\n  color: #999999;\n}\n.form-control:-ms-input-placeholder {\n  color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999999;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #555555;\n  vertical-align: middle;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\ntextarea.form-control {\n  height: auto;\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  display: block;\n  min-height: 20px;\n  margin-top: 10px;\n  margin-bottom: 10px;\n  padding-left: 20px;\n  vertical-align: middle;\n}\n.radio label,\n.checkbox label {\n  display: inline;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\n.radio[disabled],\n.radio-inline[disabled],\n.checkbox[disabled],\n.checkbox-inline[disabled],\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"],\nfieldset[disabled] .radio,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm {\n  height: auto;\n}\n.input-lg {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 45px;\n  line-height: 45px;\n}\ntextarea.input-lg {\n  height: auto;\n}\n.has-warning .help-block,\n.has-warning .control-label {\n  color: #c09853;\n}\n.has-warning .form-control {\n  border-color: #c09853;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #a47e3c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n}\n.has-warning .input-group-addon {\n  color: #c09853;\n  border-color: #c09853;\n  background-color: #fcf8e3;\n}\n.has-error .help-block,\n.has-error .control-label {\n  color: #b94a48;\n}\n.has-error .form-control {\n  border-color: #b94a48;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #953b39;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n}\n.has-error .input-group-addon {\n  color: #b94a48;\n  border-color: #b94a48;\n  background-color: #f2dede;\n}\n.has-success .help-block,\n.has-success .control-label {\n  color: #468847;\n}\n.has-success .form-control {\n  border-color: #468847;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #356635;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n}\n.has-success .input-group-addon {\n  color: #468847;\n  border-color: #468847;\n  background-color: #dff0d8;\n}\n.form-control-static {\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n}\n.form-horizontal .control-label,\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .form-group {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.form-horizontal .form-group:after {\n  clear: both;\n}\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.form-horizontal .form-group:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.428571429;\n  text-align: center;\n  vertical-align: middle;\n  cursor: pointer;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  white-space: nowrap;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n}\n.btn:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus {\n  color: #333333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  pointer-events: none;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default {\n  color: #333333;\n  background-color: #ffffff;\n  border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  color: #333333;\n  background-color: #ebebeb;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #ffffff;\n  border-color: #cccccc;\n}\n.btn-primary {\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  color: #ffffff;\n  background-color: #3276b1;\n  border-color: #285e8e;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-warning {\n  color: #ffffff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  color: #ffffff;\n  background-color: #ed9c28;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-danger {\n  color: #ffffff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  color: #ffffff;\n  background-color: #d2322d;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-success {\n  color: #ffffff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  color: #ffffff;\n  background-color: #47a447;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-info {\n  color: #ffffff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  color: #ffffff;\n  background-color: #39b3d7;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-link {\n  color: #428bca;\n  font-weight: normal;\n  cursor: pointer;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #2a6496;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #999999;\n  text-decoration: none;\n}\n.btn-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-xs {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs {\n  padding: 1px 5px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../../font/glyphicons-halflings-regular.eot');\n  src: url('../../font/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../font/glyphicons-halflings-regular.woff') format('woff'), url('../../font/glyphicons-halflings-regular.ttf') format('truetype'), url('../../font/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\1f4bc\";\n}\n.glyphicon-calendar:before {\n  content: \"\\1f4c5\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\1f4cc\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\1f4ce\";\n}\n.glyphicon-camera:before {\n  content: \"\\1f4f7\";\n}\n.glyphicon-lock:before {\n  content: \"\\1f512\";\n}\n.glyphicon-bell:before {\n  content: \"\\1f514\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\1f516\";\n}\n.glyphicon-fire:before {\n  content: \"\\1f525\";\n}\n.glyphicon-wrench:before {\n  content: \"\\1f527\";\n}\n.btn-default .caret {\n  border-top-color: #333333;\n}\n.btn-primary .caret,\n.btn-success .caret,\n.btn-warning .caret,\n.btn-danger .caret,\n.btn-info .caret {\n  border-top-color: #fff;\n}\n.dropup .btn-default .caret {\n  border-bottom-color: #333333;\n}\n.dropup .btn-primary .caret,\n.dropup .btn-success .caret,\n.dropup .btn-warning .caret,\n.dropup .btn-danger .caret,\n.dropup .btn-info .caret {\n  border-bottom-color: #fff;\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus {\n  outline: none;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar:before,\n.btn-toolbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-toolbar:after {\n  clear: both;\n}\n.btn-toolbar:before,\n.btn-toolbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-toolbar:after {\n  clear: both;\n}\n.btn-toolbar .btn-group {\n  float: left;\n}\n.btn-toolbar > .btn + .btn,\n.btn-toolbar > .btn-group + .btn,\n.btn-toolbar > .btn + .btn-group,\n.btn-toolbar > .btn-group + .btn-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group-xs > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n  padding: 1px 5px;\n}\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-group-vertical > .btn-group:after {\n  clear: both;\n}\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-group-vertical > .btn-group:after {\n  clear: both;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-bottom-left-radius: 4px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified .btn {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group.col {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-group .form-control {\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 45px;\n  line-height: 45px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -4px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav:before,\n.nav:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.nav:after {\n  clear: both;\n}\n.nav:before,\n.nav:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.nav:after {\n  clear: both;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #999999;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #999999;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #428bca;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.428571429;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  border-bottom: 1px solid #dddddd;\n  margin-right: 0;\n}\n.nav-tabs.nav-justified > .active > a {\n  border-bottom-color: #ffffff;\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 5px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #ffffff;\n  background-color: #428bca;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  border-bottom: 1px solid #dddddd;\n  margin-right: 0;\n}\n.nav-tabs-justified > .active > a {\n  border-bottom-color: #ffffff;\n}\n.tabbable:before,\n.tabbable:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.tabbable:after {\n  clear: both;\n}\n.tabbable:before,\n.tabbable:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.tabbable:after {\n  clear: both;\n}\n.tab-content > .tab-pane,\n.pill-content > .pill-pane {\n  display: none;\n}\n.tab-content > .active,\n.pill-content > .active {\n  display: block;\n}\n.nav .caret {\n  border-top-color: #428bca;\n  border-bottom-color: #428bca;\n}\n.nav a:hover .caret {\n  border-top-color: #2a6496;\n  border-bottom-color: #2a6496;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  z-index: 1000;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n.navbar:before,\n.navbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar:after {\n  clear: both;\n}\n.navbar:before,\n.navbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n.navbar-header:before,\n.navbar-header:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-header:after {\n  clear: both;\n}\n.navbar-header:before,\n.navbar-header:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-header:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  max-height: 340px;\n  overflow-x: visible;\n  padding-right: 15px;\n  padding-left: 15px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse:before,\n.navbar-collapse:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-collapse:after {\n  clear: both;\n}\n.navbar-collapse:before,\n.navbar-collapse:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-collapse:after {\n  clear: both;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-collapse .navbar-nav.navbar-left:first-child {\n    margin-left: -15px;\n  }\n  .navbar-collapse .navbar-nav.navbar-right:last-child {\n    margin-right: -15px;\n  }\n  .navbar-collapse .navbar-text:last-child {\n    margin-right: 0;\n  }\n}\n.container > .navbar-header,\n.container > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  z-index: 1030;\n  top: 0;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 15px;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n  }\n}\n.navbar-form {\n  margin-left: -15px;\n  margin-right: -15px;\n  padding: 10px 15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-nav.pull-right > li > .dropdown-menu,\n.navbar-nav > li > .dropdown-menu.pull-right {\n  left: auto;\n  right: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-text {\n  float: left;\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    margin-left: 15px;\n    margin-right: 15px;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #cccccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #cccccc;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e6e6e6;\n}\n.navbar-default .navbar-nav > .dropdown > a:hover .caret,\n.navbar-default .navbar-nav > .dropdown > a:focus .caret {\n  border-top-color: #333333;\n  border-bottom-color: #333333;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555555;\n}\n.navbar-default .navbar-nav > .open > a .caret,\n.navbar-default .navbar-nav > .open > a:hover .caret,\n.navbar-default .navbar-nav > .open > a:focus .caret {\n  border-top-color: #555555;\n  border-bottom-color: #555555;\n}\n.navbar-default .navbar-nav > .dropdown > a .caret {\n  border-top-color: #777777;\n  border-bottom-color: #777777;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #cccccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333333;\n}\n.navbar-inverse {\n  background-color: #222222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #999999;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #ffffff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #999999;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #999999;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #ffffff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #ffffff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #ffffff;\n}\n.navbar-inverse .navbar-nav > .dropdown > a:hover .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n.navbar-inverse .navbar-nav > .dropdown > a .caret {\n  border-top-color: #999999;\n  border-bottom-color: #999999;\n}\n.navbar-inverse .navbar-nav > .open > a .caret,\n.navbar-inverse .navbar-nav > .open > a:hover .caret,\n.navbar-inverse .navbar-nav > .open > a:focus .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #999999;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #ffffff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #ffffff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #999999;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #ffffff;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #cccccc;\n}\n.breadcrumb > .active {\n  color: #999999;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.428571429;\n  text-decoration: none;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  background-color: #eeeeee;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #428bca;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #999999;\n  background-color: #ffffff;\n  border-color: #dddddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 6px;\n  border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 6px;\n  border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager:before,\n.pager:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.pager:after {\n  clear: both;\n}\n.pager:before,\n.pager:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.pager:after {\n  clear: both;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #999999;\n  background-color: #ffffff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #ffffff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\n.label[href]:hover,\n.label[href]:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.label-default {\n  background-color: #999999;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #808080;\n}\n.label-primary {\n  background-color: #428bca;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #3071a9;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #ffffff;\n  line-height: 1;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #999999;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\na.badge:hover,\na.badge:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #428bca;\n  background-color: #ffffff;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px;\n  margin-bottom: 30px;\n  font-size: 21px;\n  font-weight: 200;\n  line-height: 2.1428571435;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1 {\n  line-height: 1;\n  color: inherit;\n}\n.jumbotron p {\n  line-height: 1.4;\n}\n.container .jumbotron {\n  border-radius: 6px;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  padding: 4px;\n  line-height: 1.428571429;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  display: block;\n}\n.thumbnail > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #428bca;\n}\n.thumbnail > img {\n  margin-left: auto;\n  margin-right: auto;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable {\n  padding-right: 35px;\n}\n.alert-dismissable .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #468847;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #356635;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #3a87ad;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #2d6987;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #fbeed5;\n  color: #c09853;\n}\n.alert-warning hr {\n  border-top-color: #f8e5be;\n}\n.alert-warning .alert-link {\n  color: #a47e3c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #eed3d7;\n  color: #b94a48;\n}\n.alert-danger hr {\n  border-top-color: #e6c1c7;\n}\n.alert-danger .alert-link {\n  color: #953b39;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-moz-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 0 0;\n  }\n  to {\n    background-position: 40px 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  color: #ffffff;\n  text-align: center;\n  background-color: #428bca;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -moz-animation: progress-bar-stripes 2s linear infinite;\n  -ms-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media-object {\n  display: block;\n}\n.media-heading {\n  margin: 0 0 5px;\n}\n.media > .pull-left {\n  margin-right: 10px;\n}\n.media > .pull-right {\n  margin-left: 10px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\na.list-group-item {\n  color: #555555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #e1edf7;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #ffffff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-body:before,\n.panel-body:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.panel-body:after {\n  clear: both;\n}\n.panel-body:before,\n.panel-body:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.panel-body:after {\n  clear: both;\n}\n.panel > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item {\n  border-width: 1px 0;\n}\n.panel > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel > .list-group .list-group-item:last-child {\n  border-bottom: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.panel > .table {\n  margin-bottom: 0;\n}\n.panel > .panel-body + .table {\n  border-top: 1px solid #dddddd;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n}\n.panel-title > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #dddddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n  overflow: hidden;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse .panel-body {\n  border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n  border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #dddddd;\n}\n.panel-default > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #dddddd;\n}\n.panel-primary {\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading {\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #428bca;\n}\n.panel-primary > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #428bca;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #468847;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-warning {\n  border-color: #fbeed5;\n}\n.panel-warning > .panel-heading {\n  color: #c09853;\n  background-color: #fcf8e3;\n  border-color: #fbeed5;\n}\n.panel-warning > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #fbeed5;\n}\n.panel-warning > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #fbeed5;\n}\n.panel-danger {\n  border-color: #eed3d7;\n}\n.panel-danger > .panel-heading {\n  color: #b94a48;\n  background-color: #f2dede;\n  border-color: #eed3d7;\n}\n.panel-danger > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #eed3d7;\n}\n.panel-danger > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #eed3d7;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #3a87ad;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000000;\n  text-shadow: 0 1px 0 #ffffff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px solid #000000;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n  border-bottom: 0 dotted;\n  content: \"\";\n}\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.428571429;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #ffffff;\n  background-color: #428bca;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #ffffff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #428bca;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #999999;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.428571429;\n  color: #999999;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0 dotted;\n  border-bottom: 4px solid #000000;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 1px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1030;\n  display: block;\n  visibility: visible;\n  font-size: 12px;\n  line-height: 1.4;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #ffffff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1010;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  text-align: left;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid #cccccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  white-space: normal;\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover .arrow,\n.popover .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover .arrow {\n  border-width: 11px;\n}\n.popover .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #ffffff;\n}\n.popover.right .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #ffffff;\n}\n.popover.bottom .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n}\n.popover.left .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #ffffff;\n  bottom: -10px;\n}\n.modal-open {\n  overflow: hidden;\n}\nbody.modal-open,\n.modal-open .navbar-fixed-top,\n.modal-open .navbar-fixed-bottom {\n  margin-right: 15px;\n}\n.modal {\n  display: none;\n  overflow: auto;\n  overflow-y: scroll;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-dialog {\n  margin-left: auto;\n  margin-right: auto;\n  width: auto;\n  padding: 10px;\n  z-index: 1050;\n}\n.modal-content {\n  position: relative;\n  background-color: #ffffff;\n  border: 1px solid #999999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: none;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n  background-color: #000000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n  min-height: 16.428571429px;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.428571429;\n}\n.modal-body {\n  position: relative;\n  padding: 20px;\n}\n.modal-footer {\n  margin-top: 15px;\n  padding: 19px 20px 20px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.modal-footer:after {\n  clear: both;\n}\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.modal-footer:after {\n  clear: both;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n@media screen and (min-width: 768px) {\n  .modal-dialog {\n    left: 50%;\n    right: auto;\n    width: 600px;\n    padding-top: 30px;\n    padding-bottom: 30px;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n  line-height: 1;\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n  background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));\n  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));\n  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #ffffff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  margin-left: -10px;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #ffffff;\n  border-radius: 10px;\n  cursor: pointer;\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #ffffff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    margin-left: -15px;\n    font-size: 30px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.clearfix:after {\n  clear: both;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n@media screen and (max-width: 400px) {\n  @-ms-viewport {\n    width: 320px;\n  }\n}\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n.visible-xs {\n  display: none !important;\n}\ntr.visible-xs {\n  display: none !important;\n}\nth.visible-xs,\ntd.visible-xs {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-xs.visible-sm {\n    display: block !important;\n  }\n  tr.visible-xs.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-xs.visible-sm,\n  td.visible-xs.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-xs.visible-md {\n    display: block !important;\n  }\n  tr.visible-xs.visible-md {\n    display: table-row !important;\n  }\n  th.visible-xs.visible-md,\n  td.visible-xs.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-xs.visible-lg {\n    display: block !important;\n  }\n  tr.visible-xs.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-xs.visible-lg,\n  td.visible-xs.visible-lg {\n    display: table-cell !important;\n  }\n}\n.visible-sm {\n  display: none !important;\n}\ntr.visible-sm {\n  display: none !important;\n}\nth.visible-sm,\ntd.visible-sm {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-sm.visible-xs {\n    display: block !important;\n  }\n  tr.visible-sm.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-sm.visible-xs,\n  td.visible-sm.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-sm.visible-md {\n    display: block !important;\n  }\n  tr.visible-sm.visible-md {\n    display: table-row !important;\n  }\n  th.visible-sm.visible-md,\n  td.visible-sm.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-sm.visible-lg {\n    display: block !important;\n  }\n  tr.visible-sm.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-sm.visible-lg,\n  td.visible-sm.visible-lg {\n    display: table-cell !important;\n  }\n}\n.visible-md {\n  display: none !important;\n}\ntr.visible-md {\n  display: none !important;\n}\nth.visible-md,\ntd.visible-md {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-md.visible-xs {\n    display: block !important;\n  }\n  tr.visible-md.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-md.visible-xs,\n  td.visible-md.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-md.visible-sm {\n    display: block !important;\n  }\n  tr.visible-md.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-md.visible-sm,\n  td.visible-md.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-md.visible-lg {\n    display: block !important;\n  }\n  tr.visible-md.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-md.visible-lg,\n  td.visible-md.visible-lg {\n    display: table-cell !important;\n  }\n}\n.visible-lg {\n  display: none !important;\n}\ntr.visible-lg {\n  display: none !important;\n}\nth.visible-lg,\ntd.visible-lg {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-lg.visible-xs {\n    display: block !important;\n  }\n  tr.visible-lg.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-lg.visible-xs,\n  td.visible-lg.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-lg.visible-sm {\n    display: block !important;\n  }\n  tr.visible-lg.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-lg.visible-sm,\n  td.visible-lg.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-lg.visible-md {\n    display: block !important;\n  }\n  tr.visible-lg.visible-md {\n    display: table-row !important;\n  }\n  th.visible-lg.visible-md,\n  td.visible-lg.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n.hidden-xs {\n  display: block !important;\n}\ntr.hidden-xs {\n  display: table-row !important;\n}\nth.hidden-xs,\ntd.hidden-xs {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-xs,\n  td.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-xs.hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-xs.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-xs.hidden-sm,\n  td.hidden-xs.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-xs.hidden-md {\n    display: none !important;\n  }\n  tr.hidden-xs.hidden-md {\n    display: none !important;\n  }\n  th.hidden-xs.hidden-md,\n  td.hidden-xs.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-xs.hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-xs.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-xs.hidden-lg,\n  td.hidden-xs.hidden-lg {\n    display: none !important;\n  }\n}\n.hidden-sm {\n  display: block !important;\n}\ntr.hidden-sm {\n  display: table-row !important;\n}\nth.hidden-sm,\ntd.hidden-sm {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-sm.hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-sm.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-sm.hidden-xs,\n  td.hidden-sm.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-sm,\n  td.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-sm.hidden-md {\n    display: none !important;\n  }\n  tr.hidden-sm.hidden-md {\n    display: none !important;\n  }\n  th.hidden-sm.hidden-md,\n  td.hidden-sm.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-sm.hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-sm.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-sm.hidden-lg,\n  td.hidden-sm.hidden-lg {\n    display: none !important;\n  }\n}\n.hidden-md {\n  display: block !important;\n}\ntr.hidden-md {\n  display: table-row !important;\n}\nth.hidden-md,\ntd.hidden-md {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-md.hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-md.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-md.hidden-xs,\n  td.hidden-md.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-md.hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-md.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-md.hidden-sm,\n  td.hidden-md.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n  tr.hidden-md {\n    display: none !important;\n  }\n  th.hidden-md,\n  td.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-md.hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-md.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-md.hidden-lg,\n  td.hidden-md.hidden-lg {\n    display: none !important;\n  }\n}\n.hidden-lg {\n  display: block !important;\n}\ntr.hidden-lg {\n  display: table-row !important;\n}\nth.hidden-lg,\ntd.hidden-lg {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-lg.hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-lg.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-lg.hidden-xs,\n  td.hidden-lg.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-lg.hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-lg.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-lg.hidden-sm,\n  td.hidden-lg.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-lg.hidden-md {\n    display: none !important;\n  }\n  tr.hidden-lg.hidden-md {\n    display: none !important;\n  }\n  th.hidden-lg.hidden-md,\n  td.hidden-lg.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-lg,\n  td.hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\ntr.visible-print {\n  display: none !important;\n}\nth.visible-print,\ntd.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n  .hidden-print {\n    display: none !important;\n  }\n  tr.hidden-print {\n    display: none !important;\n  }\n  th.hidden-print,\n  td.hidden-print {\n    display: none !important;\n  }\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n  transition: height 0.35s ease;\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/button.css",
    "content": "/*按钮*/\nbody{font-family:\"Microsoft Yahei\";}\n.header{line-height:28px; margin-bottom:16px; margin-top:18px; padding-bottom:4px; border-bottom:1px solid #CCC}\n.header.blue{border-bottom-color:#d5e3ef}\n.header.green{border-bottom-color:#cce2c1}\n.header.purple{border-bottom-color:#e0d1ea}\n.header.orange{border-bottom-color:#fdd0ac}\n.header.orange2{border-bottom-color:#fbd36b}\n.header.red{border-bottom-color:#f3cdc6}\n.header.grey{border-bottom-color:#c3c3c3}\n.header.pink{border-bottom-color:#f2e0eb}\n.header.pink2{border-bottom-color:#e69eb9}\n.header.light-blue{border-bottom-color:#dceefc}\n.header.light-red{border-bottom-color:#fec5c5}\n.header.light-green{border-bottom-color:#d2e7b5}\n.header.brown{border-bottom-color:#df9393}\nh3.smaller {\n\tfont-size: 21px\n}\n.align-left {\n\ttext-align: left !important\n}\n\n.align-right {\n\ttext-align: right !important\n}\n\n.middle {\n\tvertical-align: middle\n}\n\n.align-middle {\n\tvertical-align: middle !important\n}\n\n.align-top {\n\tvertical-align: top !important\n}\n\n.align-bottom {\n\tvertical-align: bottom !important\n}\n.dark {\n\tcolor: #333 !important\n}\n\n.white {\n\tcolor: #fff !important\n}\n\n.red {\n\tcolor: #dd5a43 !important\n}\n\n.red2 {\n\tcolor: #e08374 !important\n}\n\n.light-red {\n\tcolor: #f77 !important\n}\n\n.blue {\n\tcolor: #478fca !important\n}\n\n.light-blue {\n\tcolor: #93cbf9 !important\n}\n\n.green {\n\tcolor: #69aa46 !important\n}\n\n.light-green {\n\tcolor: #b0d877 !important\n}\n\n.orange {\n\tcolor: #ff892a !important\n}\n\n.orange2 {\n\tcolor: #feb902 !important\n}\n\n.light-orange {\n\tcolor: #fcac6f !important\n}\n\n.purple {\n\tcolor: #a069c3 !important\n}\n\n.pink {\n\tcolor: #c6699f !important\n}\n\n.pink2 {\n\tcolor: #d6487e !important\n}\n\n.brown {\n\tcolor: #a52a2a !important\n}\n\n.grey {\n\tcolor: #777 !important\n}\n\n.light-grey {\n\tcolor: #bbb !important\n}\n.lighter {\n\tfont-weight: lighter\n}\n.btn.btn-app {\n\tdisplay: inline-block;\n\twidth: 100px;\n\tfont-size: 18px;\n\tfont-weight: normal;\n\tcolor: #FFF;\n\ttext-align: center;\n\ttext-shadow: 0 -1px -1px rgba(0,0,0,0.2) !important;\n\tborder: none;\n\tborder-radius: 12px;\n\tpadding: 12px 0 8px;\n\tmargin: 2px;\n\tline-height: 1.7;\n\tposition: relative\n}\n.btn-app,.btn-app.btn-default,.btn-app.no-hover:hover,.btn-app.btn-default.no-hover:hover,.btn-app.disabled:hover,.btn-app.btn-default.disabled:hover {\n\tbackground: #b4c2cc !important;\n\tbackground-image: -webkit-linear-gradient(top, #bcc9d5 0, #abbac3 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #bcc9d5 0, #abbac3 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbcc9d5', endColorstr='#ffabbac3', GradientType=0) !important\n}\n\n.btn-app:hover,.btn-app.btn-default:hover {\n\tbackground: #9baebc !important;\n\tbackground-image: -webkit-linear-gradient(top, #a3b5c5 0, #93a6b2 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #a3b5c5 0, #93a6b2 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa3b5c5', endColorstr='#ff93a6b2', GradientType=0) !important\n}\n\n.btn-app.btn-primary,.btn-app.btn-primary.no-hover:hover,.btn-app.btn-primary.disabled:hover {\n\tbackground: #2a8bcb !important;\n\tbackground-image: -webkit-linear-gradient(top, #3b98d6 0, #197ec1 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #3b98d6 0, #197ec1 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b98d6', endColorstr='#ff197ec1', GradientType=0) !important\n}\n\n.btn-app.btn-primary:hover {\n\tbackground: #1d6fa6 !important;\n\tbackground-image: -webkit-linear-gradient(top, #267eb8 0, #136194 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #267eb8 0, #136194 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff267eb8', endColorstr='#ff136194', GradientType=0) !important\n}\n\n.btn-app.btn-info,.btn-app.btn-info.no-hover:hover,.btn-app.btn-info.disabled:hover {\n\tbackground: #68adde !important;\n\tbackground-image: -webkit-linear-gradient(top, #75b5e6 0, #5ba4d5 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #75b5e6 0, #5ba4d5 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff75b5e6', endColorstr='#ff5ba4d5', GradientType=0) !important\n}\n\n.btn-app.btn-info:hover {\n\tbackground: #3f96d4 !important;\n\tbackground-image: -webkit-linear-gradient(top, #4a9ede 0, #348dc9 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #4a9ede 0, #348dc9 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4a9ede', endColorstr='#ff348dc9', GradientType=0) !important\n}\n\n.btn-app.btn-success,.btn-app.btn-success.no-hover:hover,.btn-app.btn-success.disabled:hover {\n\tbackground: #85b558 !important;\n\tbackground-image: -webkit-linear-gradient(top, #8ebf60 0, #7daa50 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #8ebf60 0, #7daa50 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ebf60', endColorstr='#ff7daa50', GradientType=0) !important\n}\n\n.btn-app.btn-success:hover {\n\tbackground: #6c9842 !important;\n\tbackground-image: -webkit-linear-gradient(top, #74a844 0, #648740 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #74a844 0, #648740 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74a844', endColorstr='#ff648740', GradientType=0) !important\n}\n\n.btn-app.btn-danger,.btn-app.btn-danger.no-hover:hover,.btn-app.btn-danger.disabled:hover {\n\tbackground: #d3413b !important;\n\tbackground-image: -webkit-linear-gradient(top, #d55b52 0, #d12723 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #d55b52 0, #d12723 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd55b52', endColorstr='#ffd12723', GradientType=0) !important\n}\n\n.btn-app.btn-danger:hover {\n\tbackground: #b52c26 !important;\n\tbackground-image: -webkit-linear-gradient(top, #c43a30 0, #a51f1c 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #c43a30 0, #a51f1c 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc43a30', endColorstr='#ffa51f1c', GradientType=0) !important\n}\n\n.btn-app.btn-warning,.btn-app.btn-warning.no-hover:hover,.btn-app.btn-warning.disabled:hover {\n\tbackground: #ffb44b !important;\n\tbackground-image: -webkit-linear-gradient(top, #ffbf66 0, #ffa830 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #ffbf66 0, #ffa830 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffbf66', endColorstr='#ffffa830', GradientType=0) !important\n}\n\n.btn-app.btn-warning:hover {\n\tbackground: #fe9e19 !important;\n\tbackground-image: -webkit-linear-gradient(top, #fa3 0, #fc9200 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #fa3 0, #fc9200 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffaa33', endColorstr='#fffc9200', GradientType=0) !important\n}\n\n.btn-app.btn-purple,.btn-app.btn-purple.no-hover:hover,.btn-app.btn-purple.disabled:hover {\n\tbackground: #9889c1 !important;\n\tbackground-image: -webkit-linear-gradient(top, #a696ce 0, #8a7cb4 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #a696ce 0, #8a7cb4 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa696ce', endColorstr='#ff8a7cb4', GradientType=0) !important\n}\n\n.btn-app.btn-purple:hover {\n\tbackground: #7b68af !important;\n\tbackground-image: -webkit-linear-gradient(top, #8973be 0, #6d5ca1 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #8973be 0, #6d5ca1 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8973be', endColorstr='#ff6d5ca1', GradientType=0) !important\n}\n\n.btn-app.btn-pink,.btn-app.btn-pink.no-hover:hover,.btn-app.btn-pink.disabled:hover {\n\tbackground: #d54c7e !important;\n\tbackground-image: -webkit-linear-gradient(top, #db5e8c 0, #ce3970 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #db5e8c 0, #ce3970 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdb5e8c', endColorstr='#ffce3970', GradientType=0) !important\n}\n\n.btn-app.btn-pink:hover {\n\tbackground: #be2f64 !important;\n\tbackground-image: -webkit-linear-gradient(top, #d2346e 0, #aa2a59 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #d2346e 0, #aa2a59 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd2346e', endColorstr='#ffaa2a59', GradientType=0) !important\n}\n\n.btn-app.btn-inverse,.btn-app.btn-inverse.no-hover:hover,.btn-app.btn-inverse.disabled:hover {\n\tbackground: #444 !important;\n\tbackground-image: -webkit-linear-gradient(top, #555 0, #333 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #555 0, #333 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0) !important\n}\n\n.btn-app.btn-inverse:hover {\n\tbackground: #2b2b2b !important;\n\tbackground-image: -webkit-linear-gradient(top, #3b3b3b 0, #1a1a1a 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #3b3b3b 0, #1a1a1a 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b3b3b', endColorstr='#ff1a1a1a', GradientType=0) !important\n}\n\n.btn-app.btn-grey,.btn-app.btn-grey.no-hover:hover,.btn-app.btn-grey.disabled:hover {\n\tbackground: #797979 !important;\n\tbackground-image: -webkit-linear-gradient(top, #898989 0, #696969 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #898989 0, #696969 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff898989', endColorstr='#ff696969', GradientType=0) !important\n}\n\n.btn-app.btn-grey:hover {\n\tbackground: #6c6c6c !important;\n\tbackground-image: -webkit-linear-gradient(top, #7c7c7c 0, #5c5c5c 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #7c7c7c 0, #5c5c5c 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7c7c7c', endColorstr='#ff5c5c5c', GradientType=0) !important\n}\n\n.btn.btn-app.btn-light {\n\tcolor: #5a5a5a !important;\n\ttext-shadow: 0 1px 1px #EEE !important\n}\n\n.btn.btn-app.btn-light,.btn.btn-app.btn-light.no-hover:hover,.btn.btn-app.btn-light.disabled:hover {\n\tbackground: #ededed !important;\n\tbackground-image: -webkit-linear-gradient(top, #f4f4f4 0, #e6e6e6 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #f4f4f4 0, #e6e6e6 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe6e6e6', GradientType=0) !important\n}\n\n.btn.btn-app.btn-light:hover {\n\tbackground: #e0e0e0 !important;\n\tbackground-image: -webkit-linear-gradient(top, #e7e7e7 0, #d9d9d9 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #e7e7e7 0, #d9d9d9 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe7e7e7', endColorstr='#ffd9d9d9', GradientType=0) !important\n}\n\n.btn.btn-app.btn-yellow {\n\tcolor: #963 !important;\n\ttext-shadow: 0 -1px 0 rgba(255,255,255,0.4) !important\n}\n\n.btn.btn-app.btn-yellow,.btn.btn-app.btn-yellow.no-hover:hover,.btn.btn-app.btn-yellow.disabled:hover {\n\tbackground: #fee088 !important;\n\tbackground-image: -webkit-linear-gradient(top, #ffe8a5 0, #fcd76a 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #ffe8a5 0, #fcd76a 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe8a5', endColorstr='#fffcd76a', GradientType=0) !important\n}\n\n.btn.btn-app.btn-yellow:hover {\n\tbackground: #fdd96e !important;\n\tbackground-image: -webkit-linear-gradient(top, #ffe18b 0, #fbd051 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #ffe18b 0, #fbd051 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe18b', endColorstr='#fffbd051', GradientType=0) !important\n}\n.btn.btn-app.btn-sm {\n\twidth: 80px;\n\tfont-size: 16px;\n\tborder-radius: 10px;\n\tline-height: 1.5\n}\n.btn.btn-app.no-radius {\n\tborder-radius: 0\n}\n.ace-icon {\n\ttext-align: center\n}\n.btn>.ace-icon {\n\tmargin-right: 4px\n}\n.btn>.ace-icon.icon-on-right {\n\tmargin-right: 0;\n\tmargin-left: 4px\n}\n.btn.btn-app>.ace-icon {\n\tdisplay: block;\n\tfont-size: 42px;\n\tmargin: 0 0 4px;\n\tline-height: 36px;\n\tmin-width: 0;\n\tpadding: 0\n}\n.btn.btn-app.btn-xs {\n\twidth: 64px;\n\tfont-size: 15px;\n\tborder-radius: 8px;\n\tpadding-bottom: 7px;\n\tpadding-top: 8px;\n\tline-height: 1.45\n}\n.btn.btn-app.btn-sm>.ace-icon {\n\tdisplay: block;\n\tfont-size: 32px;\n\tline-height: 30px;\n\tmargin: 0 0 3px\n}\n.btn.btn-app.btn-xs>.ace-icon {\n\tdisplay: block;\n\tfont-size: 24px;\n\tline-height: 24px;\n\tmargin: 0\n}\n.btn.btn-app.radius-4{\n\tborder-radius: 4px\n}\n.bigger-110 {\n\tfont-size: 110% !important\n}\n.bigger-120 {\n\tfont-size: 120% !important\n}\n.bigger-125 {\n\tfont-size: 125% !important\n}\n.bigger-150 {\n\tfont-size: 150% !important\n}\n.bigger-160 {\n\tfont-size: 160% !important\n}\n.bigger-200 {\n\tfont-size: 200% !important\n}\n.bigger-230 {\n\tfont-size: 230% !important\n}\n.btn.btn-app>.badge,.btn.btn-app>.label {\n\tposition: absolute !important;\n\ttop: -2px;\n\tright: -2px;\n\tpadding: 1px 3px;\n\ttext-align: center;\n\tfont-size: 12px;\n\tcolor: #FFF\n}\n.badge {\n\ttext-shadow: none;\n\tfont-size: 12px;\n\tpadding-top: 1px;\n\tpadding-bottom: 3px;\n\tfont-weight: normal;\n\tline-height: 15px;\n\tbackground-color: #abbac3 !important\n}\n.btn.btn-app.radius-4>.badge,.btn.btn-app.no-radius>.badge {\n\tborder-radius: 3px\n}\n.label-pink,.badge-pink {\n\tbackground-color: #d6487e !important\n}\n.btn.btn-app>.badge.badge-left,.btn.btn-app>.label.badge-left,.btn.btn-app>.badge.label-left,.btn.btn-app>.label.label-left {\n\tright: auto;\n\tleft: -2px\n}\n.label-warning,.badge-warning {\n\tbackground-color: #f89406 !important\n}\n.btn.btn-app>.badge,.btn.btn-app>.label {\n\tposition: absolute !important;\n\ttop: -2px;\n\tright: -2px;\n\tpadding: 1px 3px;\n\ttext-align: center;\n\tfont-size: 12px;\n\tcolor: #FFF\n}\n.btn.btn-app>.label {\n\tpadding: 1px 6px 3px;\n\tfont-size: 13px\n}\n.label {\n\tborder-radius: 0;\n\ttext-shadow: none;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tbackground-color: #abbac3 !important\n}\n.label-inverse,.badge-inverse {\n\tbackground-color: #333 !important\n}\n.label.arrowed,.label.arrowed-in {\n\tposition: relative;\n\tz-index: 1\n}\n.label.arrowed:before,.label.arrowed-in:before {\n\tdisplay: inline-block;\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tz-index: -1;\n\tborder: 1px solid transparent;\n\tborder-right-color: #abbac3;\n\t-moz-border-right-colors: #abbac3\n}\n\n.label.arrowed-in:before {\n\tborder-color: #abbac3;\n\tborder-left-color: transparent !important;\n\t-moz-border-left-colors: none !important\n}\n.label.arrowed-in:before {\n\tleft: -5px;\n\tborder-width: 10px 5px\n}\n.label-inverse.arrowed-in:before {\n\tborder-color: #333;\n\t-moz-border-right-colors: #333\n}\n.label {\n\tfont-size: 12px;\n\tline-height: 1.15;\n\theight: 20px\n}\n.hr {\n\tdisplay: block;\n\theight: 0;\n\toverflow: hidden;\n\tfont-size: 0;\n\tborder-width: 1px 0 0 0;\n\tborder-top: 1px solid #E3E3E3;\n\tmargin: 12px 0;\n\tborder-top-color: rgba(0,0,0,0.11)\n}\n\n.hr-double {\n\theight: 3px;\n\tborder-top: 1px solid #E3E3E3;\n\tborder-bottom: 1px solid #E3E3E3;\n\tborder-top-color: rgba(0,0,0,0.11);\n\tborder-bottom-color: rgba(0,0,0,0.11)\n}\n\n.hr.dotted,.hr-dotted {\n\tborder-style: dotted\n}\n\n.hr-32,.hr32 {\n\tmargin: 32px 0\n}\n\n.hr-30,.hr30 {\n\tmargin: 30px 0\n}\n\n.hr-28,.hr28 {\n\tmargin: 28px 0\n}\n\n.hr-26,.hr26 {\n\tmargin: 26px 0\n}\n\n.hr-24,.hr24 {\n\tmargin: 24px 0\n}\n\n.hr-22,.hr22 {\n\tmargin: 22px 0\n}\n\n.hr-20,.hr20 {\n\tmargin: 20px 0\n}\n\n.hr-18,.hr18 {\n\tmargin: 18px 0\n}\n\n.hr-16,.hr16 {\n\tmargin: 16px 0\n}\n\n.hr-14,.hr14 {\n\tmargin: 14px 0\n}\n\n.hr-12,.hr12 {\n\tmargin: 12px 0\n}\n\n.hr-10,.hr10 {\n\tmargin: 10px 0\n}\n\n.hr-8,.hr8 {\n\tmargin: 8px 0\n}\n\n.hr-6,.hr6 {\n\tmargin: 6px 0\n}\n\n.hr-4,.hr4 {\n\tmargin: 4px 0\n}\n\n.hr-2,.hr2 {\n\tmargin: 2px 0\n}\n.space {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0\n}\n.space-2 {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0;\n\tmargin: 2px 0 1px\n}\n.space-4 {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0;\n\tmargin: 4px 0 3px\n}\n.space-6 {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0;\n\tmargin: 6px 0 5px\n}\n.btn {\n\tdisplay: inline-block;\n\tcolor: #FFF !important;\n\ttext-shadow: 0 -1px 0 rgba(0,0,0,0.25) !important;\n\tbackground-image: none !important;\n\tborder: 5px solid #FFF;\n\tborder-radius: 0;\n\tbox-shadow: none !important;\n\t-webkit-transition: all ease .15s;\n\ttransition: all ease .15s;\n\tcursor: pointer;\n\tvertical-align: middle;\n\tmargin: 0;\n\tposition: relative\n}\n.btn-lg {\n\tborder-width: 5px;\n\tline-height: 1.35;\n\tpadding: 7px 16px\n}\n\n.btn-sm {\n\tborder-width: 4px;\n\tfont-size: 13px;\n\tpadding: 4px 9px;\n\tline-height: 1.39\n}\n\n.btn-xs {\n\tborder-width: 3px\n}\n\n.btn-minier {\n\tpadding: 0 4px;\n\tline-height: 18px;\n\tborder-width: 2px;\n\tfont-size: 12px\n}\n\nbutton.btn:active {\n\ttop: 1px\n}\n\n.btn,.btn-default,.btn:focus,.btn-default:focus {\n\tbackground-color: #abbac3 !important;\n\tborder-color: #abbac3\n}\n.btn:hover,.btn-default:hover,.btn:active,.btn-default:active,.open .btn.dropdown-toggle,.open .btn-default.dropdown-toggle {\n\tbackground-color: #8b9aa3 !important;\n\tborder-color: #abbac3\n}\n\n.btn.no-border:hover,.btn-default.no-border:hover,.btn.no-border:active,.btn-default.no-border:active {\n\tborder-color: #8b9aa3\n}\n.btn.no-hover:hover,.btn-default.no-hover:hover,.btn.no-hover:active,.btn-default.no-hover:active {\n\tbackground-color: #abbac3 !important\n}\n\n.btn.active,.btn-default.active {\n\tbackground-color: #9baab3 !important;\n\tborder-color: #8799a4\n}\n\n.btn.no-border.active,.btn-default.no-border.active {\n\tbackground-color: #92a3ac !important;\n\tborder-color: #92a3ac\n}\n\n.btn.disabled,.btn-default.disabled,.btn[disabled],.btn-default[disabled],fieldset[disabled] .btn,fieldset[disabled] .btn-default,.btn.disabled:hover,.btn-default.disabled:hover,.btn[disabled]:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn:hover,fieldset[disabled] .btn-default:hover,.btn.disabled:focus,.btn-default.disabled:focus,.btn[disabled]:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn:focus,fieldset[disabled] .btn-default:focus,.btn.disabled:active,.btn-default.disabled:active,.btn[disabled]:active,.btn-default[disabled]:active,fieldset[disabled] .btn:active,fieldset[disabled] .btn-default:active,.btn.disabled.active,.btn-default.disabled.active,.btn[disabled].active,.btn-default[disabled].active,fieldset[disabled] .btn.active,fieldset[disabled] .btn-default.active {\n\tbackground-color: #abbac3 !important;\n\tborder-color: #abbac3\n}\n\n.btn-primary,.btn-primary:focus {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-primary:hover,.btn-primary:active,.open .btn-primary.dropdown-toggle {\n\tbackground-color: #1b6aaa !important;\n\tborder-color: #428bca\n}\n\n.btn-primary.no-border:hover,.btn-primary.no-border:active {\n\tborder-color: #1b6aaa\n}\n\n.btn-primary.no-hover:hover,.btn-primary.no-hover:active {\n\tbackground-color: #428bca !important\n}\n\n.btn-primary.active {\n\tbackground-color: #2f7bba !important;\n\tborder-color: #27689d\n}\n\n.btn-primary.no-border.active {\n\tbackground-color: #2b72ae !important;\n\tborder-color: #2b72ae\n}\n\n.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-info,.btn-info:focus {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info:hover,.btn-info:active,.open .btn-info.dropdown-toggle {\n\tbackground-color: #4f99c6 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info.no-border:hover,.btn-info.no-border:active {\n\tborder-color: #4f99c6\n}\n\n.btn-info.no-hover:hover,.btn-info.no-hover:active {\n\tbackground-color: #6fb3e0 !important\n}\n\n.btn-info.active {\n\tbackground-color: #5fa6d3 !important;\n\tborder-color: #4396cb\n}\n\n.btn-info.no-border.active {\n\tbackground-color: #539fd0 !important;\n\tborder-color: #539fd0\n}\n\n.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info2,.btn-info2:focus {\n\tbackground-color: #95c6e5 !important;\n\tborder-color: #95c6e5\n}\n\n.btn-info2:hover,.btn-info2:active,.open .btn-info2.dropdown-toggle {\n\tbackground-color: #67a6ce !important;\n\tborder-color: #95c6e5\n}\n\n.btn-info2.no-border:hover,.btn-info2.no-border:active {\n\tborder-color: #67a6ce\n}\n\n.btn-info2.no-hover:hover,.btn-info2.no-hover:active {\n\tbackground-color: #95c6e5 !important\n}\n\n.btn-info2.active {\n\tbackground-color: #7eb6da !important;\n\tborder-color: #62a6d1\n}\n\n.btn-info2.no-border.active {\n\tbackground-color: #72afd6 !important;\n\tborder-color: #72afd6\n}\n\n.btn-info2.disabled,.btn-info2[disabled],fieldset[disabled] .btn-info2,.btn-info2.disabled:hover,.btn-info2[disabled]:hover,fieldset[disabled] .btn-info2:hover,.btn-info2.disabled:focus,.btn-info2[disabled]:focus,fieldset[disabled] .btn-info2:focus,.btn-info2.disabled:active,.btn-info2[disabled]:active,fieldset[disabled] .btn-info2:active,.btn-info2.disabled.active,.btn-info2[disabled].active,fieldset[disabled] .btn-info2.active {\n\tbackground-color: #95c6e5 !important;\n\tborder-color: #95c6e5\n}\n\n.btn-success,.btn-success:focus {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-success:hover,.btn-success:active,.open .btn-success.dropdown-toggle {\n\tbackground-color: #629b58 !important;\n\tborder-color: #87b87f\n}\n\n.btn-success.no-border:hover,.btn-success.no-border:active {\n\tborder-color: #629b58\n}\n\n.btn-success.no-hover:hover,.btn-success.no-hover:active {\n\tbackground-color: #87b87f !important\n}\n\n.btn-success.active {\n\tbackground-color: #75aa6c !important;\n\tborder-color: #629959\n}\n\n.btn-success.no-border.active {\n\tbackground-color: #6ba462 !important;\n\tborder-color: #6ba462\n}\n\n.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-warning,.btn-warning:focus {\n\tbackground-color: #ffb752 !important;\n\tborder-color: #ffb752\n}\n\n.btn-warning:hover,.btn-warning:active,.open .btn-warning.dropdown-toggle {\n\tbackground-color: #e59729 !important;\n\tborder-color: #ffb752\n}\n\n.btn-warning.no-border:hover,.btn-warning.no-border:active {\n\tborder-color: #e59729\n}\n\n.btn-warning.no-hover:hover,.btn-warning.no-hover:active {\n\tbackground-color: #ffb752 !important\n}\n\n.btn-warning.active {\n\tbackground-color: #f2a73e !important;\n\tborder-color: #f0981c\n}\n\n.btn-warning.no-border.active {\n\tbackground-color: #f1a02f !important;\n\tborder-color: #f1a02f\n}\n\n.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active {\n\tbackground-color: #ffb752 !important;\n\tborder-color: #ffb752\n}\n\n.btn-danger,.btn-danger:focus {\n\tbackground-color: #d15b47 !important;\n\tborder-color: #d15b47\n}\n\n.btn-danger:hover,.btn-danger:active,.open .btn-danger.dropdown-toggle {\n\tbackground-color: #b74635 !important;\n\tborder-color: #d15b47\n}\n\n.btn-danger.no-border:hover,.btn-danger.no-border:active {\n\tborder-color: #b74635\n}\n\n.btn-danger.no-hover:hover,.btn-danger.no-hover:active {\n\tbackground-color: #d15b47 !important\n}\n\n.btn-danger.active {\n\tbackground-color: #c4513e !important;\n\tborder-color: #aa4434\n}\n\n.btn-danger.no-border.active {\n\tbackground-color: #ba4b39 !important;\n\tborder-color: #ba4b39\n}\n\n.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active {\n\tbackground-color: #d15b47 !important;\n\tborder-color: #d15b47\n}\n\n.btn-inverse,.btn-inverse:focus {\n\tbackground-color: #555 !important;\n\tborder-color: #555\n}\n\n.btn-inverse:hover,.btn-inverse:active,.open .btn-inverse.dropdown-toggle {\n\tbackground-color: #303030 !important;\n\tborder-color: #555\n}\n\n.btn-inverse.no-border:hover,.btn-inverse.no-border:active {\n\tborder-color: #303030\n}\n\n.btn-inverse.no-hover:hover,.btn-inverse.no-hover:active {\n\tbackground-color: #555 !important\n}\n\n.btn-inverse.active {\n\tbackground-color: #434343 !important;\n\tborder-color: #313131\n}\n\n.btn-inverse.no-border.active {\n\tbackground-color: #3b3b3b !important;\n\tborder-color: #3b3b3b\n}\n\n.btn-inverse.disabled,.btn-inverse[disabled],fieldset[disabled] .btn-inverse,.btn-inverse.disabled:hover,.btn-inverse[disabled]:hover,fieldset[disabled] .btn-inverse:hover,.btn-inverse.disabled:focus,.btn-inverse[disabled]:focus,fieldset[disabled] .btn-inverse:focus,.btn-inverse.disabled:active,.btn-inverse[disabled]:active,fieldset[disabled] .btn-inverse:active,.btn-inverse.disabled.active,.btn-inverse[disabled].active,fieldset[disabled] .btn-inverse.active {\n\tbackground-color: #555 !important;\n\tborder-color: #555\n}\n\n.btn-pink,.btn-pink:focus {\n\tbackground-color: #d6487e !important;\n\tborder-color: #d6487e\n}\n\n.btn-pink:hover,.btn-pink:active,.open .btn-pink.dropdown-toggle {\n\tbackground-color: #b73766 !important;\n\tborder-color: #d6487e\n}\n\n.btn-pink.no-border:hover,.btn-pink.no-border:active {\n\tborder-color: #b73766\n}\n\n.btn-pink.no-hover:hover,.btn-pink.no-hover:active {\n\tbackground-color: #d6487e !important\n}\n\n.btn-pink.active {\n\tbackground-color: #c74072 !important;\n\tborder-color: #af3462\n}\n\n.btn-pink.no-border.active {\n\tbackground-color: #be386a !important;\n\tborder-color: #be386a\n}\n\n.btn-pink.disabled,.btn-pink[disabled],fieldset[disabled] .btn-pink,.btn-pink.disabled:hover,.btn-pink[disabled]:hover,fieldset[disabled] .btn-pink:hover,.btn-pink.disabled:focus,.btn-pink[disabled]:focus,fieldset[disabled] .btn-pink:focus,.btn-pink.disabled:active,.btn-pink[disabled]:active,fieldset[disabled] .btn-pink:active,.btn-pink.disabled.active,.btn-pink[disabled].active,fieldset[disabled] .btn-pink.active {\n\tbackground-color: #d6487e !important;\n\tborder-color: #d6487e\n}\n\n.btn-purple,.btn-purple:focus {\n\tbackground-color: #9585bf !important;\n\tborder-color: #9585bf\n}\n\n.btn-purple:hover,.btn-purple:active,.open .btn-purple.dropdown-toggle {\n\tbackground-color: #7461aa !important;\n\tborder-color: #9585bf\n}\n\n.btn-purple.no-border:hover,.btn-purple.no-border:active {\n\tborder-color: #7461aa\n}\n\n.btn-purple.no-hover:hover,.btn-purple.no-hover:active {\n\tbackground-color: #9585bf !important\n}\n\n.btn-purple.active {\n\tbackground-color: #8573b5 !important;\n\tborder-color: #705ca8\n}\n\n.btn-purple.no-border.active {\n\tbackground-color: #7c69af !important;\n\tborder-color: #7c69af\n}\n\n.btn-purple.disabled,.btn-purple[disabled],fieldset[disabled] .btn-purple,.btn-purple.disabled:hover,.btn-purple[disabled]:hover,fieldset[disabled] .btn-purple:hover,.btn-purple.disabled:focus,.btn-purple[disabled]:focus,fieldset[disabled] .btn-purple:focus,.btn-purple.disabled:active,.btn-purple[disabled]:active,fieldset[disabled] .btn-purple:active,.btn-purple.disabled.active,.btn-purple[disabled].active,fieldset[disabled] .btn-purple.active {\n\tbackground-color: #9585bf !important;\n\tborder-color: #9585bf\n}\n\n.btn-grey,.btn-grey:focus {\n\tbackground-color: #a0a0a0 !important;\n\tborder-color: #a0a0a0\n}\n\n.btn-grey:hover,.btn-grey:active,.open .btn-grey.dropdown-toggle {\n\tbackground-color: #888 !important;\n\tborder-color: #a0a0a0\n}\n\n.btn-grey.no-border:hover,.btn-grey.no-border:active {\n\tborder-color: #888\n}\n\n.btn-grey.no-hover:hover,.btn-grey.no-hover:active {\n\tbackground-color: #a0a0a0 !important\n}\n\n.btn-grey.active {\n\tbackground-color: #949494 !important;\n\tborder-color: #828282\n}\n\n.btn-grey.no-border.active {\n\tbackground-color: #8c8c8c !important;\n\tborder-color: #8c8c8c\n}\n\n.btn-grey.disabled,.btn-grey[disabled],fieldset[disabled] .btn-grey,.btn-grey.disabled:hover,.btn-grey[disabled]:hover,fieldset[disabled] .btn-grey:hover,.btn-grey.disabled:focus,.btn-grey[disabled]:focus,fieldset[disabled] .btn-grey:focus,.btn-grey.disabled:active,.btn-grey[disabled]:active,fieldset[disabled] .btn-grey:active,.btn-grey.disabled.active,.btn-grey[disabled].active,fieldset[disabled] .btn-grey.active {\n\tbackground-color: #a0a0a0 !important;\n\tborder-color: #a0a0a0\n}\n\n.btn-yellow {\n\tcolor: #963 !important;\n\ttext-shadow: 0 -1px 0 rgba(255,255,255,0.4) !important\n}\n\n.btn-yellow,.btn-yellow:focus {\n\tbackground-color: #fee188 !important;\n\tborder-color: #fee188\n}\n\n.btn-yellow:hover,.btn-yellow:active,.open .btn-yellow.dropdown-toggle {\n\tbackground-color: #f7d05b !important;\n\tborder-color: #fee188\n}\n\n.btn-yellow.no-border:hover,.btn-yellow.no-border:active {\n\tborder-color: #f7d05b\n}\n\n.btn-yellow.no-hover:hover,.btn-yellow.no-hover:active {\n\tbackground-color: #fee188 !important\n}\n\n.btn-yellow.active {\n\tbackground-color: #fbd972 !important;\n\tborder-color: #f9cf4f\n}\n\n.btn-yellow.no-border.active {\n\tbackground-color: #fad463 !important;\n\tborder-color: #fad463\n}\n\n.btn-yellow.disabled,.btn-yellow[disabled],fieldset[disabled] .btn-yellow,.btn-yellow.disabled:hover,.btn-yellow[disabled]:hover,fieldset[disabled] .btn-yellow:hover,.btn-yellow.disabled:focus,.btn-yellow[disabled]:focus,fieldset[disabled] .btn-yellow:focus,.btn-yellow.disabled:active,.btn-yellow[disabled]:active,fieldset[disabled] .btn-yellow:active,.btn-yellow.disabled.active,.btn-yellow[disabled].active,fieldset[disabled] .btn-yellow.active {\n\tbackground-color: #fee188 !important;\n\tborder-color: #fee188\n}\n\n.btn-light {\n\tcolor: #888 !important;\n\ttext-shadow: 0 -1px 0 rgba(250,250,250,0.25) !important\n}\n\n.btn-light,.btn-light:focus {\n\tbackground-color: #e7e7e7 !important;\n\tborder-color: #e7e7e7\n}\n\n.btn-light:hover,.btn-light:active,.open .btn-light.dropdown-toggle {\n\tbackground-color: #d9d9d9 !important;\n\tborder-color: #e7e7e7\n}\n\n.btn-light.no-border:hover,.btn-light.no-border:active {\n\tborder-color: #d9d9d9\n}\n\n.btn-light.no-hover:hover,.btn-light.no-hover:active {\n\tbackground-color: #e7e7e7 !important\n}\n\n.btn-light.active {\n\tbackground-color: #e0e0e0 !important;\n\tborder-color: #cecece\n}\n\n.btn-light.no-border.active {\n\tbackground-color: #d8d8d8 !important;\n\tborder-color: #d8d8d8\n}\n\n.btn-light.disabled,.btn-light[disabled],fieldset[disabled] .btn-light,.btn-light.disabled:hover,.btn-light[disabled]:hover,fieldset[disabled] .btn-light:hover,.btn-light.disabled:focus,.btn-light[disabled]:focus,fieldset[disabled] .btn-light:focus,.btn-light.disabled:active,.btn-light[disabled]:active,fieldset[disabled] .btn-light:active,.btn-light.disabled.active,.btn-light[disabled].active,fieldset[disabled] .btn-light.active {\n\tbackground-color: #e7e7e7 !important;\n\tborder-color: #e7e7e7\n}\n.btn.btn-link {\n\tborder: none !important;\n\tbackground: transparent none !important;\n\tcolor: #08c !important;\n\ttext-shadow: none !important;\n\tpadding: 4px 12px !important;\n\tline-height: 20px !important\n}\n\n.btn.btn-link:hover {\n\tbackground: none !important;\n\ttext-shadow: none !important\n}\n\n.btn.btn-link.active {\n\tbackground: none !important;\n\ttext-decoration: underline;\n\tcolor: #009ceb !important\n}\n\n.btn.btn-link.active:after {\n\tdisplay: none\n}\n.btn-group>.btn,.btn-group+.btn {\n\tmargin: 0 1px 0 0;\n\tborder-width: 3px\n}\n.btn-group>.btn+.btn.dropdown-toggle {\n\tpadding-right: 3px;\n\tpadding-left: 3px\n}\n.btn.btn-white {\n\ttext-shadow: none !important;\n\tbackground-color: #FFF !important\n}\n.btn.btn-white.no-hover:hover,.btn.btn-white.no-hover:active {\n\tbackground-color: #FFF !important\n}\n\n.btn.btn-white:focus,.btn.btn-white.active {\n\tbox-shadow: inset 1px 1px 2px 0 rgba(0,0,0,0.1) !important\n}\n\n.btn.btn-white:focus.btn-bold,.btn.btn-white.active.btn-bold {\n\tbox-shadow: inset 1px 1px 3px 0 rgba(0,0,0,0.15) !important\n}\n\n.btn.btn-white.active:after {\n\tdisplay: none\n}\n\n.btn.btn-white {\n\tborder-color: #ccc;\n\tcolor: #444 !important\n}\n\n.btn.btn-white:hover,.btn.btn-white:focus,.btn.btn-white.active,.btn.btn-white:active,.open .btn.btn-white.dropdown-toggle {\n\tbackground-color: #ebebeb !important;\n\tborder-color: #ccc\n}\n\n.btn.btn-white:hover {\n\tcolor: #3a3434 !important\n}\n\n.btn.btn-white.no-border:hover,.btn.btn-white.no-border:active {\n\tborder-color: #ccc\n}\n\n.btn.btn-white.disabled,.btn.btn-white[disabled],fieldset[disabled] .btn.btn-white,.btn.btn-white.disabled:hover,.btn.btn-white[disabled]:hover,fieldset[disabled] .btn.btn-white:hover,.btn.btn-white.disabled:focus,.btn.btn-white[disabled]:focus,fieldset[disabled] .btn.btn-white:focus,.btn.btn-white.disabled:active,.btn.btn-white[disabled]:active,fieldset[disabled] .btn.btn-white:active,.btn.btn-white.disabled.active,.btn.btn-white[disabled].active,fieldset[disabled] .btn.btn-white.active {\n\tborder-color: #ccc\n}\n\n.btn-white.btn-default {\n\tborder-color: #abbac3;\n\tcolor: #80909a !important\n}\n\n.btn-white.btn-default:hover,.btn-white.btn-default:focus,.btn-white.btn-default.active,.btn-white.btn-default:active,.open .btn-white.btn-default.dropdown-toggle {\n\tbackground-color: #eff2f4 !important;\n\tborder-color: #abbac3\n}\n\n.btn-white.btn-default:hover {\n\tcolor: #6b8595 !important\n}\n\n.btn-white.btn-default.no-border:hover,.btn-white.btn-default.no-border:active {\n\tborder-color: #abbac3\n}\n\n.btn-white.btn-default.disabled,.btn-white.btn-default[disabled],fieldset[disabled] .btn-white.btn-default,.btn-white.btn-default.disabled:hover,.btn-white.btn-default[disabled]:hover,fieldset[disabled] .btn-white.btn-default:hover,.btn-white.btn-default.disabled:focus,.btn-white.btn-default[disabled]:focus,fieldset[disabled] .btn-white.btn-default:focus,.btn-white.btn-default.disabled:active,.btn-white.btn-default[disabled]:active,fieldset[disabled] .btn-white.btn-default:active,.btn-white.btn-default.disabled.active,.btn-white.btn-default[disabled].active,fieldset[disabled] .btn-white.btn-default.active {\n\tborder-color: #abbac3\n}\n\n.btn-white.btn-primary {\n\tborder-color: #8aafce;\n\tcolor: #6688a6 !important\n}\n\n.btn-white.btn-primary:hover,.btn-white.btn-primary:focus,.btn-white.btn-primary.active,.btn-white.btn-primary:active,.open .btn-white.btn-primary.dropdown-toggle {\n\tbackground-color: #eaf2f8 !important;\n\tborder-color: #8aafce\n}\n\n.btn-white.btn-primary:hover {\n\tcolor: #537c9f !important\n}\n\n.btn-white.btn-primary.no-border:hover,.btn-white.btn-primary.no-border:active {\n\tborder-color: #8aafce\n}\n\n.btn-white.btn-primary.disabled,.btn-white.btn-primary[disabled],fieldset[disabled] .btn-white.btn-primary,.btn-white.btn-primary.disabled:hover,.btn-white.btn-primary[disabled]:hover,fieldset[disabled] .btn-white.btn-primary:hover,.btn-white.btn-primary.disabled:focus,.btn-white.btn-primary[disabled]:focus,fieldset[disabled] .btn-white.btn-primary:focus,.btn-white.btn-primary.disabled:active,.btn-white.btn-primary[disabled]:active,fieldset[disabled] .btn-white.btn-primary:active,.btn-white.btn-primary.disabled.active,.btn-white.btn-primary[disabled].active,fieldset[disabled] .btn-white.btn-primary.active {\n\tborder-color: #8aafce\n}\n\n.btn-white.btn-success {\n\tborder-color: #a7c9a1;\n\tcolor: #81a87b !important\n}\n\n.btn-white.btn-success:hover,.btn-white.btn-success:focus,.btn-white.btn-success.active,.btn-white.btn-success:active,.open .btn-white.btn-success.dropdown-toggle {\n\tbackground-color: #edf4eb !important;\n\tborder-color: #a7c9a1\n}\n\n.btn-white.btn-success:hover {\n\tcolor: #6ea465 !important\n}\n\n.btn-white.btn-success.no-border:hover,.btn-white.btn-success.no-border:active {\n\tborder-color: #a7c9a1\n}\n\n.btn-white.btn-success.disabled,.btn-white.btn-success[disabled],fieldset[disabled] .btn-white.btn-success,.btn-white.btn-success.disabled:hover,.btn-white.btn-success[disabled]:hover,fieldset[disabled] .btn-white.btn-success:hover,.btn-white.btn-success.disabled:focus,.btn-white.btn-success[disabled]:focus,fieldset[disabled] .btn-white.btn-success:focus,.btn-white.btn-success.disabled:active,.btn-white.btn-success[disabled]:active,fieldset[disabled] .btn-white.btn-success:active,.btn-white.btn-success.disabled.active,.btn-white.btn-success[disabled].active,fieldset[disabled] .btn-white.btn-success.active {\n\tborder-color: #a7c9a1\n}\n\n.btn-white.btn-danger {\n\tborder-color: #d7a59d;\n\tcolor: #b7837a !important\n}\n\n.btn-white.btn-danger:hover,.btn-white.btn-danger:focus,.btn-white.btn-danger.active,.btn-white.btn-danger:active,.open .btn-white.btn-danger.dropdown-toggle {\n\tbackground-color: #fbf4f3 !important;\n\tborder-color: #d7a59d\n}\n\n.btn-white.btn-danger:hover {\n\tcolor: #b46f64 !important\n}\n\n.btn-white.btn-danger.no-border:hover,.btn-white.btn-danger.no-border:active {\n\tborder-color: #d7a59d\n}\n\n.btn-white.btn-danger.disabled,.btn-white.btn-danger[disabled],fieldset[disabled] .btn-white.btn-danger,.btn-white.btn-danger.disabled:hover,.btn-white.btn-danger[disabled]:hover,fieldset[disabled] .btn-white.btn-danger:hover,.btn-white.btn-danger.disabled:focus,.btn-white.btn-danger[disabled]:focus,fieldset[disabled] .btn-white.btn-danger:focus,.btn-white.btn-danger.disabled:active,.btn-white.btn-danger[disabled]:active,fieldset[disabled] .btn-white.btn-danger:active,.btn-white.btn-danger.disabled.active,.btn-white.btn-danger[disabled].active,fieldset[disabled] .btn-white.btn-danger.active {\n\tborder-color: #d7a59d\n}\n\n.btn-white.btn-warning {\n\tborder-color: #e7b979;\n\tcolor: #daa458 !important\n}\n\n.btn-white.btn-warning:hover,.btn-white.btn-warning:focus,.btn-white.btn-warning.active,.btn-white.btn-warning:active,.open .btn-white.btn-warning.dropdown-toggle {\n\tbackground-color: #fef7ec !important;\n\tborder-color: #e7b979\n}\n\n.btn-white.btn-warning:hover {\n\tcolor: #db9a3d !important\n}\n\n.btn-white.btn-warning.no-border:hover,.btn-white.btn-warning.no-border:active {\n\tborder-color: #e7b979\n}\n\n.btn-white.btn-warning.disabled,.btn-white.btn-warning[disabled],fieldset[disabled] .btn-white.btn-warning,.btn-white.btn-warning.disabled:hover,.btn-white.btn-warning[disabled]:hover,fieldset[disabled] .btn-white.btn-warning:hover,.btn-white.btn-warning.disabled:focus,.btn-white.btn-warning[disabled]:focus,fieldset[disabled] .btn-white.btn-warning:focus,.btn-white.btn-warning.disabled:active,.btn-white.btn-warning[disabled]:active,fieldset[disabled] .btn-white.btn-warning:active,.btn-white.btn-warning.disabled.active,.btn-white.btn-warning[disabled].active,fieldset[disabled] .btn-white.btn-warning.active {\n\tborder-color: #e7b979\n}\n\n.btn-white.btn-info {\n\tborder-color: #8fbcd9;\n\tcolor: #70a0c1 !important\n}\n\n.btn-white.btn-info:hover,.btn-white.btn-info:focus,.btn-white.btn-info.active,.btn-white.btn-info:active,.open .btn-white.btn-info.dropdown-toggle {\n\tbackground-color: #eef5fa !important;\n\tborder-color: #8fbcd9\n}\n\n.btn-white.btn-info:hover {\n\tcolor: #5896bf !important\n}\n\n.btn-white.btn-info.no-border:hover,.btn-white.btn-info.no-border:active {\n\tborder-color: #8fbcd9\n}\n\n.btn-white.btn-info.disabled,.btn-white.btn-info[disabled],fieldset[disabled] .btn-white.btn-info,.btn-white.btn-info.disabled:hover,.btn-white.btn-info[disabled]:hover,fieldset[disabled] .btn-white.btn-info:hover,.btn-white.btn-info.disabled:focus,.btn-white.btn-info[disabled]:focus,fieldset[disabled] .btn-white.btn-info:focus,.btn-white.btn-info.disabled:active,.btn-white.btn-info[disabled]:active,fieldset[disabled] .btn-white.btn-info:active,.btn-white.btn-info.disabled.active,.btn-white.btn-info[disabled].active,fieldset[disabled] .btn-white.btn-info.active {\n\tborder-color: #8fbcd9\n}\n\n.btn-white.btn-inverse {\n\tborder-color: #959595;\n\tcolor: #555 !important\n}\n\n.btn-white.btn-inverse:hover,.btn-white.btn-inverse:focus,.btn-white.btn-inverse.active,.btn-white.btn-inverse:active,.open .btn-white.btn-inverse.dropdown-toggle {\n\tbackground-color: #e4e4e4 !important;\n\tborder-color: #959595\n}\n\n.btn-white.btn-inverse:hover {\n\tcolor: #4c4545 !important\n}\n\n.btn-white.btn-inverse.no-border:hover,.btn-white.btn-inverse.no-border:active {\n\tborder-color: #959595\n}\n\n.btn-white.btn-inverse.disabled,.btn-white.btn-inverse[disabled],fieldset[disabled] .btn-white.btn-inverse,.btn-white.btn-inverse.disabled:hover,.btn-white.btn-inverse[disabled]:hover,fieldset[disabled] .btn-white.btn-inverse:hover,.btn-white.btn-inverse.disabled:focus,.btn-white.btn-inverse[disabled]:focus,fieldset[disabled] .btn-white.btn-inverse:focus,.btn-white.btn-inverse.disabled:active,.btn-white.btn-inverse[disabled]:active,fieldset[disabled] .btn-white.btn-inverse:active,.btn-white.btn-inverse.disabled.active,.btn-white.btn-inverse[disabled].active,fieldset[disabled] .btn-white.btn-inverse.active {\n\tborder-color: #959595\n}\n\n.btn-white.btn-pink {\n\tborder-color: #d299ae;\n\tcolor: #af6f87 !important\n}\n\n.btn-white.btn-pink:hover,.btn-white.btn-pink:focus,.btn-white.btn-pink.active,.btn-white.btn-pink:active,.open .btn-white.btn-pink.dropdown-toggle {\n\tbackground-color: #fbeff4 !important;\n\tborder-color: #d299ae\n}\n\n.btn-white.btn-pink:hover {\n\tcolor: #ac5978 !important\n}\n\n.btn-white.btn-pink.no-border:hover,.btn-white.btn-pink.no-border:active {\n\tborder-color: #d299ae\n}\n\n.btn-white.btn-pink.disabled,.btn-white.btn-pink[disabled],fieldset[disabled] .btn-white.btn-pink,.btn-white.btn-pink.disabled:hover,.btn-white.btn-pink[disabled]:hover,fieldset[disabled] .btn-white.btn-pink:hover,.btn-white.btn-pink.disabled:focus,.btn-white.btn-pink[disabled]:focus,fieldset[disabled] .btn-white.btn-pink:focus,.btn-white.btn-pink.disabled:active,.btn-white.btn-pink[disabled]:active,fieldset[disabled] .btn-white.btn-pink:active,.btn-white.btn-pink.disabled.active,.btn-white.btn-pink[disabled].active,fieldset[disabled] .btn-white.btn-pink.active {\n\tborder-color: #d299ae\n}\n\n.btn-white.btn-purple {\n\tborder-color: #b7b1c6;\n\tcolor: #7d6fa2 !important\n}\n\n.btn-white.btn-purple:hover,.btn-white.btn-purple:focus,.btn-white.btn-purple.active,.btn-white.btn-purple:active,.open .btn-white.btn-purple.dropdown-toggle {\n\tbackground-color: #efedf5 !important;\n\tborder-color: #b7b1c6\n}\n\n.btn-white.btn-purple:hover {\n\tcolor: #6d5b9c !important\n}\n\n.btn-white.btn-purple.no-border:hover,.btn-white.btn-purple.no-border:active {\n\tborder-color: #b7b1c6\n}\n\n.btn-white.btn-purple.disabled,.btn-white.btn-purple[disabled],fieldset[disabled] .btn-white.btn-purple,.btn-white.btn-purple.disabled:hover,.btn-white.btn-purple[disabled]:hover,fieldset[disabled] .btn-white.btn-purple:hover,.btn-white.btn-purple.disabled:focus,.btn-white.btn-purple[disabled]:focus,fieldset[disabled] .btn-white.btn-purple:focus,.btn-white.btn-purple.disabled:active,.btn-white.btn-purple[disabled]:active,fieldset[disabled] .btn-white.btn-purple:active,.btn-white.btn-purple.disabled.active,.btn-white.btn-purple[disabled].active,fieldset[disabled] .btn-white.btn-purple.active {\n\tborder-color: #b7b1c6\n}\n\n.btn-white.btn-yellow {\n\tborder-color: #ecd181;\n\tcolor: #d3a61a !important\n}\n\n.btn-white.btn-yellow:hover,.btn-white.btn-yellow:focus,.btn-white.btn-yellow.active,.btn-white.btn-yellow:active,.open .btn-white.btn-yellow.dropdown-toggle {\n\tbackground-color: #fdf7e4 !important;\n\tborder-color: #ecd181\n}\n\n.btn-white.btn-yellow:hover {\n\tcolor: #c29712 !important\n}\n\n.btn-white.btn-yellow.no-border:hover,.btn-white.btn-yellow.no-border:active {\n\tborder-color: #ecd181\n}\n\n.btn-white.btn-yellow.disabled,.btn-white.btn-yellow[disabled],fieldset[disabled] .btn-white.btn-yellow,.btn-white.btn-yellow.disabled:hover,.btn-white.btn-yellow[disabled]:hover,fieldset[disabled] .btn-white.btn-yellow:hover,.btn-white.btn-yellow.disabled:focus,.btn-white.btn-yellow[disabled]:focus,fieldset[disabled] .btn-white.btn-yellow:focus,.btn-white.btn-yellow.disabled:active,.btn-white.btn-yellow[disabled]:active,fieldset[disabled] .btn-white.btn-yellow:active,.btn-white.btn-yellow.disabled.active,.btn-white.btn-yellow[disabled].active,fieldset[disabled] .btn-white.btn-yellow.active {\n\tborder-color: #ecd181\n}\n\n.btn-white.btn-grey {\n\tborder-color: #c6c6c6;\n\tcolor: #8c8c8c !important\n}\n\n.btn-white.btn-grey:hover,.btn-white.btn-grey:focus,.btn-white.btn-grey.active,.btn-white.btn-grey:active,.open .btn-white.btn-grey.dropdown-toggle {\n\tbackground-color: #ededed !important;\n\tborder-color: #c6c6c6\n}\n\n.btn-white.btn-grey:hover {\n\tcolor: #857979 !important\n}\n\n.btn-white.btn-grey.no-border:hover,.btn-white.btn-grey.no-border:active {\n\tborder-color: #c6c6c6\n}\n\n.btn-white.btn-grey.disabled,.btn-white.btn-grey[disabled],fieldset[disabled] .btn-white.btn-grey,.btn-white.btn-grey.disabled:hover,.btn-white.btn-grey[disabled]:hover,fieldset[disabled] .btn-white.btn-grey:hover,.btn-white.btn-grey.disabled:focus,.btn-white.btn-grey[disabled]:focus,fieldset[disabled] .btn-white.btn-grey:focus,.btn-white.btn-grey.disabled:active,.btn-white.btn-grey[disabled]:active,fieldset[disabled] .btn-white.btn-grey:active,.btn-white.btn-grey.disabled.active,.btn-white.btn-grey[disabled].active,fieldset[disabled] .btn-white.btn-grey.active {\n\tborder-color: #c6c6c6\n}\n\n.btn.btn-white {\n\tborder-width: 1px\n}\n.btn.btn-bold {\n\tborder-bottom-width: 2px\n}\n.btn.btn-round {\n\tborder-bottom-width: 2px;\n\tborder-radius: 4px !important\n}\n\n.btn-primary,.btn-primary:focus {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-primary:hover,.btn-primary:active,.open .btn-primary.dropdown-toggle {\n\tbackground-color: #1b6aaa !important;\n\tborder-color: #428bca\n}\n\n.btn-primary.no-border:hover,.btn-primary.no-border:active {\n\tborder-color: #1b6aaa\n}\n\n.btn-primary.no-hover:hover,.btn-primary.no-hover:active {\n\tbackground-color: #428bca !important\n}\n\n.btn-primary.active {\n\tbackground-color: #2f7bba !important;\n\tborder-color: #27689d\n}\n\n.btn-primary.no-border.active {\n\tbackground-color: #2b72ae !important;\n\tborder-color: #2b72ae\n}\n\n.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-info,.btn-info:focus {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info:hover,.btn-info:active,.open .btn-info.dropdown-toggle {\n\tbackground-color: #4f99c6 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info.no-border:hover,.btn-info.no-border:active {\n\tborder-color: #4f99c6\n}\n\n.btn-info.no-hover:hover,.btn-info.no-hover:active {\n\tbackground-color: #6fb3e0 !important\n}\n\n.btn-info.active {\n\tbackground-color: #5fa6d3 !important;\n\tborder-color: #4396cb\n}\n\n.btn-info.no-border.active {\n\tbackground-color: #539fd0 !important;\n\tborder-color: #539fd0\n}\n\n.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n.btn-success,.btn-success:focus {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-success:hover,.btn-success:active,.open .btn-success.dropdown-toggle {\n\tbackground-color: #629b58 !important;\n\tborder-color: #87b87f\n}\n\n.btn-success.no-border:hover,.btn-success.no-border:active {\n\tborder-color: #629b58\n}\n\n.btn-success.no-hover:hover,.btn-success.no-hover:active {\n\tbackground-color: #87b87f !important\n}\n\n.btn-success.active {\n\tbackground-color: #75aa6c !important;\n\tborder-color: #629959\n}\n\n.btn-success.no-border.active {\n\tbackground-color: #6ba462 !important;\n\tborder-color: #6ba462\n}\n\n.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-group>.btn,.btn-group>.btn+.btn {\n\tmargin: 0 1px 0 0\n}\n.btn-group>.btn-sm,.btn-group+.btn-sm {\n\tborder-width: 2px\n}\n.btn-group>.btn-xs,.btn-group+.btn-xs {\n\tborder-width: 1px\n}\n.btn-group>.btn:first-child {\n\tmargin: 0 1px 0 0\n}\n.btn-group>.btn:first-child,.btn-group>.btn:last-child {\n\tborder-radius: 0\n}\n.btn-group.btn-corner>.btn:first-child {\n\tborder-bottom-left-radius: 8px !important;\n\tborder-top-left-radius: 8px !important\n}\n\n.btn-group.btn-corner>.btn:last-child {\n\tborder-bottom-right-radius: 8px !important;\n\tborder-top-right-radius: 8px !important\n}\n\n.btn-group.btn-corner>.btn.btn-sm:first-child {\n\tborder-bottom-left-radius: 6px !important;\n\tborder-top-left-radius: 6px !important\n}\n\n.btn-group.btn-corner>.btn.btn-sm:last-child {\n\tborder-bottom-right-radius: 6px !important;\n\tborder-top-right-radius: 6px !important\n}\n\n.btn-group.btn-corner>.btn.btn-xs:first-child {\n\tborder-bottom-left-radius: 4px !important;\n\tborder-top-left-radius: 4px !important\n}\n\n.btn-group.btn-corner>.btn.btn-xs:last-child {\n\tborder-bottom-right-radius: 4px !important;\n\tborder-top-right-radius: 4px !important\n}\n.btn-group-vertical>.btn,.btn-group-vertical>.btn+.btn {\n\tmargin: 1px 0 0 !important\n}\n\n.btn-group-vertical>.btn:first-child {\n\tmargin-top: 0 !important\n}\n.btn>.icon-only.ace-icon {\n\tmargin: 0 !important;\n\ttext-align: center;\n\tpadding: 0\n}\n\n.dropdown-menu {\n\tborder-radius: 0 !important;\n\t-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)\n}\n\n.dropdown-menu>li>a {\n\tfont-size: 13px;\n\tpadding-left: 11px;\n\tpadding-right: 11px;\n\tmargin-bottom: 1px;\n\tmargin-top: 1px\n}\n\n.dropdown-menu.dropdown-only-icon {\n\tmin-width: 50px\n}\n\n.dropdown-menu.dropdown-only-icon>li {\n\tmargin: 0 4px\n}\n\n.dropdown-menu.dropdown-only-icon>li>a .ace-icon {\n\twidth: 18px;\n\tdisplay: inline-block;\n\ttext-align: center\n}\n\n.dropdown-menu.dropdown-only-icon>li>a .icon-2x {\n\twidth: 36px\n}\n\n.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:active,.dropdown-menu>li.active>a,.dropdown-menu>li.active>a:hover,.dropdown-menu .dropdown-submenu:hover>a {\n\tbackground: #4f99c6;\n\tcolor: #fff\n}\n\n.dropdown-default>li>a:hover,.dropdown-default>li>a:focus,.dropdown-default>li>a:active,.dropdown-default>li.active>a,.dropdown-default>li.active>a:hover,.dropdown-default .dropdown-submenu:hover>a {\n\tbackground: #abbac3;\n\tcolor: #fff\n}\n\n.dropdown-info>li>a:hover,.dropdown-info>li>a:focus,.dropdown-info>li>a:active,.dropdown-info>li.active>a,.dropdown-info>li.active>a:hover,.dropdown-info .dropdown-submenu:hover>a {\n\tbackground: #6fb3e0;\n\tcolor: #fff\n}\n\n.dropdown-primary>li>a:hover,.dropdown-primary>li>a:focus,.dropdown-primary>li>a:active,.dropdown-primary>li.active>a,.dropdown-primary>li.active>a:hover,.dropdown-primary .dropdown-submenu:hover>a {\n\tbackground: #428bca;\n\tcolor: #fff\n}\n\n.dropdown-success>li>a:hover,.dropdown-success>li>a:focus,.dropdown-success>li>a:active,.dropdown-success>li.active>a,.dropdown-success>li.active>a:hover,.dropdown-success .dropdown-submenu:hover>a {\n\tbackground: #87b87f;\n\tcolor: #fff\n}\n\n.dropdown-warning>li>a:hover,.dropdown-warning>li>a:focus,.dropdown-warning>li>a:active,.dropdown-warning>li.active>a,.dropdown-warning>li.active>a:hover,.dropdown-warning .dropdown-submenu:hover>a {\n\tbackground: #ffa24d;\n\tcolor: #fff\n}\n\n.dropdown-danger>li>a:hover,.dropdown-danger>li>a:focus,.dropdown-danger>li>a:active,.dropdown-danger>li.active>a,.dropdown-danger>li.active>a:hover,.dropdown-danger .dropdown-submenu:hover>a {\n\tbackground: #d15b47;\n\tcolor: #fff\n}\n\n.dropdown-inverse>li>a:hover,.dropdown-inverse>li>a:focus,.dropdown-inverse>li>a:active,.dropdown-inverse>li.active>a,.dropdown-inverse>li.active>a:hover,.dropdown-inverse .dropdown-submenu:hover>a {\n\tbackground: #555;\n\tcolor: #fff\n}\n\n.dropdown-purple>li>a:hover,.dropdown-purple>li>a:focus,.dropdown-purple>li>a:active,.dropdown-purple>li.active>a,.dropdown-purple>li.active>a:hover,.dropdown-purple .dropdown-submenu:hover>a {\n\tbackground: #9585bf;\n\tcolor: #fff\n}\n\n.dropdown-pink>li>a:hover,.dropdown-pink>li>a:focus,.dropdown-pink>li>a:active,.dropdown-pink>li.active>a,.dropdown-pink>li.active>a:hover,.dropdown-pink .dropdown-submenu:hover>a {\n\tbackground: #d6487e;\n\tcolor: #fff\n}\n\n.dropdown-grey>li>a:hover,.dropdown-grey>li>a:focus,.dropdown-grey>li>a:active,.dropdown-grey>li.active>a,.dropdown-grey>li.active>a:hover,.dropdown-grey .dropdown-submenu:hover>a {\n\tbackground: #a0a0a0;\n\tcolor: #fff\n}\n\n.dropdown-light>li>a:hover,.dropdown-light>li>a:focus,.dropdown-light>li>a:active,.dropdown-light>li.active>a,.dropdown-light>li.active>a:hover,.dropdown-light .dropdown-submenu:hover>a {\n\tbackground: #e7e7e7;\n\tcolor: #333\n}\n\n.dropdown-lighter>li>a:hover,.dropdown-lighter>li>a:focus,.dropdown-lighter>li>a:active,.dropdown-lighter>li.active>a,.dropdown-lighter>li.active>a:hover,.dropdown-lighter .dropdown-submenu:hover>a {\n\tbackground: #efefef;\n\tcolor: #444\n}\n\n.dropdown-lightest>li>a:hover,.dropdown-lightest>li>a:focus,.dropdown-lightest>li>a:active,.dropdown-lightest>li.active>a,.dropdown-lightest>li.active>a:hover,.dropdown-lightest .dropdown-submenu:hover>a {\n\tbackground: #f3f3f3;\n\tcolor: #444\n}\n\n.dropdown-yellow>li>a:hover,.dropdown-yellow>li>a:focus,.dropdown-yellow>li>a:active,.dropdown-yellow>li.active>a,.dropdown-yellow>li.active>a:hover,.dropdown-yellow .dropdown-submenu:hover>a {\n\tbackground: #fee188;\n\tcolor: #444\n}\n\n.dropdown-yellow2>li>a:hover,.dropdown-yellow2>li>a:focus,.dropdown-yellow2>li>a:active,.dropdown-yellow2>li.active>a,.dropdown-yellow2>li.active>a:hover,.dropdown-yellow2 .dropdown-submenu:hover>a {\n\tbackground: #f9e8b3;\n\tcolor: #444\n}\n\n.dropdown-light-blue>li>a:hover,.dropdown-light-blue>li>a:focus,.dropdown-light-blue>li>a:active,.dropdown-light-blue>li.active>a,.dropdown-light-blue>li.active>a:hover,.dropdown-light-blue .dropdown-submenu:hover>a {\n\tbackground: #ecf3f9;\n\tcolor: #456\n}\n\n.dropdown-light .dropdown-submenu:hover>a:after,.dropdown-lighter .dropdown-submenu:hover>a:after,.dropdown-lightest .dropdown-submenu:hover>a:after {\n\tborder-left-color: #444\n}\n\n.label {\n\tborder-radius: 0;\n\ttext-shadow: none;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tbackground-color: #abbac3 !important\n}\n.label-grey,.badge-grey {\n\tbackground-color: #a0a0a0 !important\n}\n\n.label-info,.badge-info {\n\tbackground-color: #3a87ad !important\n}\n\n.label-primary,.badge-primary {\n\tbackground-color: #428bca !important\n}\n\n.label-success,.badge-success {\n\tbackground-color: #82af6f !important\n}\n\n.label-danger,.badge-danger {\n\tbackground-color: #d15b47 !important\n}\n\n.label-important,.badge-important {\n\tbackground-color: #d15b47 !important\n}\n\n.label-inverse,.badge-inverse {\n\tbackground-color: #333 !important\n}\n\n.label-warning,.badge-warning {\n\tbackground-color: #f89406 !important\n}\n\n.label-pink,.badge-pink {\n\tbackground-color: #d6487e !important\n}\n\n.label-purple,.badge-purple {\n\tbackground-color: #9585bf !important\n}\n\n.label-yellow,.badge-yellow {\n\tbackground-color: #fee188 !important\n}\n\n.label-light,.badge-light {\n\tbackground-color: #e7e7e7 !important\n}\n\n.badge-yellow,.label-yellow {\n\tcolor: #996633 !important;\n\tborder-color: #fee188\n}\n\n.badge-light,.label-light {\n\tcolor: #888 !important\n}\n\n.label.arrowed,.label.arrowed-in {\n\tposition: relative;\n\tz-index: 1\n}\n\n.label.arrowed:before,.label.arrowed-in:before {\n\tdisplay: inline-block;\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tz-index: -1;\n\tborder: 1px solid transparent;\n\tborder-right-color: #abbac3;\n\t-moz-border-right-colors: #abbac3\n}\n\n.label.arrowed-in:before {\n\tborder-color: #abbac3;\n\tborder-left-color: transparent !important;\n\t-moz-border-left-colors: none !important\n}\n\n.label.arrowed-right,.label.arrowed-in-right {\n\tposition: relative;\n\tz-index: 1\n}\n\n.label.arrowed-right:after,.label.arrowed-in-right:after {\n\tdisplay: inline-block;\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tz-index: -1;\n\tborder: 1px solid transparent;\n\tborder-left-color: #abbac3;\n\t-moz-border-left-colors: #abbac3\n}\n\n.label.arrowed-in-right:after {\n\tborder-color: #abbac3;\n\tborder-right-color: transparent !important;\n\t-moz-border-right-colors: none !important\n}\n\n.label-info.arrowed:before {\n\tborder-right-color: #3a87ad;\n\t-moz-border-right-colors: #3a87ad\n}\n\n.label-info.arrowed-in:before {\n\tborder-color: #3a87ad;\n\t-moz-border-right-colors: #3a87ad\n}\n\n.label-info.arrowed-right:after {\n\tborder-left-color: #3a87ad;\n\t-moz-border-left-colors: #3a87ad\n}\n\n.label-info.arrowed-in-right:after {\n\tborder-color: #3a87ad;\n\t-moz-border-left-colors: #3a87ad\n}\n\n.label-primary.arrowed:before {\n\tborder-right-color: #428bca;\n\t-moz-border-right-colors: #428bca\n}\n\n.label-primary.arrowed-in:before {\n\tborder-color: #428bca;\n\t-moz-border-right-colors: #428bca\n}\n\n.label-primary.arrowed-right:after {\n\tborder-left-color: #428bca;\n\t-moz-border-left-colors: #428bca\n}\n\n.label-primary.arrowed-in-right:after {\n\tborder-color: #428bca;\n\t-moz-border-left-colors: #428bca\n}\n\n.label-success.arrowed:before {\n\tborder-right-color: #82af6f;\n\t-moz-border-right-colors: #82af6f\n}\n\n.label-success.arrowed-in:before {\n\tborder-color: #82af6f;\n\t-moz-border-right-colors: #82af6f\n}\n\n.label-success.arrowed-right:after {\n\tborder-left-color: #82af6f;\n\t-moz-border-left-colors: #82af6f\n}\n\n.label-success.arrowed-in-right:after {\n\tborder-color: #82af6f;\n\t-moz-border-left-colors: #82af6f\n}\n\n.label-warning.arrowed:before {\n\tborder-right-color: #f89406;\n\t-moz-border-right-colors: #f89406\n}\n\n.label-warning.arrowed-in:before {\n\tborder-color: #f89406;\n\t-moz-border-right-colors: #f89406\n}\n\n.label-warning.arrowed-right:after {\n\tborder-left-color: #f89406;\n\t-moz-border-left-colors: #f89406\n}\n\n.label-warning.arrowed-in-right:after {\n\tborder-color: #f89406;\n\t-moz-border-left-colors: #f89406\n}\n\n.label-important.arrowed:before {\n\tborder-right-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-important.arrowed-in:before {\n\tborder-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-important.arrowed-right:after {\n\tborder-left-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-important.arrowed-in-right:after {\n\tborder-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-danger.arrowed:before {\n\tborder-right-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-danger.arrowed-in:before {\n\tborder-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-danger.arrowed-right:after {\n\tborder-left-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-danger.arrowed-in-right:after {\n\tborder-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-inverse.arrowed:before {\n\tborder-right-color: #333;\n\t-moz-border-right-colors: #333\n}\n\n.label-inverse.arrowed-in:before {\n\tborder-color: #333;\n\t-moz-border-right-colors: #333\n}\n\n.label-inverse.arrowed-right:after {\n\tborder-left-color: #333;\n\t-moz-border-left-colors: #333\n}\n\n.label-inverse.arrowed-in-right:after {\n\tborder-color: #333;\n\t-moz-border-left-colors: #333\n}\n\n.label-pink.arrowed:before {\n\tborder-right-color: #d6487e;\n\t-moz-border-right-colors: #d6487e\n}\n\n.label-pink.arrowed-in:before {\n\tborder-color: #d6487e;\n\t-moz-border-right-colors: #d6487e\n}\n\n.label-pink.arrowed-right:after {\n\tborder-left-color: #d6487e;\n\t-moz-border-left-colors: #d6487e\n}\n\n.label-pink.arrowed-in-right:after {\n\tborder-color: #d6487e;\n\t-moz-border-left-colors: #d6487e\n}\n\n.label-purple.arrowed:before {\n\tborder-right-color: #9585bf;\n\t-moz-border-right-colors: #9585bf\n}\n\n.label-purple.arrowed-in:before {\n\tborder-color: #9585bf;\n\t-moz-border-right-colors: #9585bf\n}\n\n.label-purple.arrowed-right:after {\n\tborder-left-color: #9585bf;\n\t-moz-border-left-colors: #9585bf\n}\n\n.label-purple.arrowed-in-right:after {\n\tborder-color: #9585bf;\n\t-moz-border-left-colors: #9585bf\n}\n\n.label-yellow.arrowed:before {\n\tborder-right-color: #fee188;\n\t-moz-border-right-colors: #fee188\n}\n\n.label-yellow.arrowed-in:before {\n\tborder-color: #fee188;\n\t-moz-border-right-colors: #fee188\n}\n\n.label-yellow.arrowed-right:after {\n\tborder-left-color: #fee188;\n\t-moz-border-left-colors: #fee188\n}\n\n.label-yellow.arrowed-in-right:after {\n\tborder-color: #fee188;\n\t-moz-border-left-colors: #fee188\n}\n\n.label-light.arrowed:before {\n\tborder-right-color: #e7e7e7;\n\t-moz-border-right-colors: #e7e7e7\n}\n\n.label-light.arrowed-in:before {\n\tborder-color: #e7e7e7;\n\t-moz-border-right-colors: #e7e7e7\n}\n\n.label-light.arrowed-right:after {\n\tborder-left-color: #e7e7e7;\n\t-moz-border-left-colors: #e7e7e7\n}\n\n.label-light.arrowed-in-right:after {\n\tborder-color: #e7e7e7;\n\t-moz-border-left-colors: #e7e7e7\n}\n\n.label-grey.arrowed:before {\n\tborder-right-color: #a0a0a0;\n\t-moz-border-right-colors: #a0a0a0\n}\n\n.label-grey.arrowed-in:before {\n\tborder-color: #a0a0a0;\n\t-moz-border-right-colors: #a0a0a0\n}\n\n.label-grey.arrowed-right:after {\n\tborder-left-color: #a0a0a0;\n\t-moz-border-left-colors: #a0a0a0\n}\n\n.label-grey.arrowed-in-right:after {\n\tborder-color: #a0a0a0;\n\t-moz-border-left-colors: #a0a0a0\n}\n.label {\n\tfont-size: 12px;\n\tline-height: 1.15;\n\theight: 20px\n}\n\n.label.arrowed {\n\tmargin-left: 5px\n}\n\n.label.arrowed:before {\n\tleft: -10px;\n\tborder-width: 10px 5px\n}\n\n.label.arrowed-in {\n\tmargin-left: 5px\n}\n\n.label.arrowed-in:before {\n\tleft: -5px;\n\tborder-width: 10px 5px\n}\n\n.label.arrowed-right {\n\tmargin-right: 5px\n}\n\n.label.arrowed-right:after {\n\tright: -10px;\n\tborder-width: 10px 5px\n}\n\n.label.arrowed-in-right {\n\tmargin-right: 5px\n}\n\n.label.arrowed-in-right:after {\n\tright: -5px;\n\tborder-width: 10px 5px\n}\n\n.label-lg {\n\tpadding: 0.3em 0.6em 0.4em;\n\tfont-size: 13px;\n\tline-height: 1.1;\n\theight: 24px\n}\n\n.label-lg.arrowed {\n\tmargin-left: 6px\n}\n\n.label-lg.arrowed:before {\n\tleft: -12px;\n\tborder-width: 12px 6px\n}\n\n.label-lg.arrowed-in {\n\tmargin-left: 6px\n}\n\n.label-lg.arrowed-in:before {\n\tleft: -6px;\n\tborder-width: 12px 6px\n}\n\n.label-lg.arrowed-right {\n\tmargin-right: 6px\n}\n\n.label-lg.arrowed-right:after {\n\tright: -12px;\n\tborder-width: 12px 6px\n}\n\n.label-lg.arrowed-in-right {\n\tmargin-right: 6px\n}\n\n.label-lg.arrowed-in-right:after {\n\tright: -6px;\n\tborder-width: 12px 6px\n}\n\n.label-xlg {\n\tpadding: 0.3em 0.7em 0.4em;\n\tfont-size: 14px;\n\tline-height: 1.3;\n\theight: 28px\n}\n\n.label-xlg.arrowed {\n\tmargin-left: 7px\n}\n\n.label-xlg.arrowed:before {\n\tleft: -14px;\n\tborder-width: 14px 7px\n}\n\n.label-xlg.arrowed-in {\n\tmargin-left: 7px\n}\n\n.label-xlg.arrowed-in:before {\n\tleft: -7px;\n\tborder-width: 14px 7px\n}\n\n.label-xlg.arrowed-right {\n\tmargin-right: 7px\n}\n\n.label-xlg.arrowed-right:after {\n\tright: -14px;\n\tborder-width: 14px 7px\n}\n\n.label-xlg.arrowed-in-right {\n\tmargin-right: 7px\n}\n\n.label-xlg.arrowed-in-right:after {\n\tright: -7px;\n\tborder-width: 14px 7px\n}\n\n.label-sm {\n\tpadding: 0.2em 0.4em 0.3em;\n\tfont-size: 11px;\n\tline-height: 1;\n\theight: 18px\n}\n\n.label-sm.arrowed {\n\tmargin-left: 4px\n}\n\n.label-sm.arrowed:before {\n\tleft: -8px;\n\tborder-width: 9px 4px\n}\n\n.label-sm.arrowed-in {\n\tmargin-left: 4px\n}\n\n.label-sm.arrowed-in:before {\n\tleft: -4px;\n\tborder-width: 9px 4px\n}\n\n.label-sm.arrowed-right {\n\tmargin-right: 4px\n}\n\n.label-sm.arrowed-right:after {\n\tright: -8px;\n\tborder-width: 9px 4px\n}\n\n.label-sm.arrowed-in-right {\n\tmargin-right: 4px\n}\n\n.label-sm.arrowed-in-right:after {\n\tright: -4px;\n\tborder-width: 9px 4px\n}\n\n.pagination>li>span,.pager>li>span {\n\tborder-width: 1px;\n\tborder-radius: 0 !important\n}\n\n.pagination>li>a,.pager>li>a {\n\tborder-width: 1px;\n\tborder-color: #d4dfe3;\n\tborder-radius: 0 !important;\n\tcolor: #2283c5;\n\tbackground-color: #fafafa;\n\tmargin: 0 -1px 0 0;\n\tposition: relative;\n\tz-index: auto\n}\n\n.pagination>li>a:hover,.pager>li>a:hover {\n\tcolor: #1c6ca2;\n\tbackground-color: #eaeff2;\n\tborder-color: #c1d1d7;\n\tz-index: 1\n}\n\n.pagination>li>a:focus,.pager>li>a:focus {\n\tbackground-color: #eaeef2\n}\n\n.pagination>li.disabled>a,.pager>li.disabled>a,.pagination>li.disabled>a:hover,.pager>li.disabled>a:hover {\n\tbackground-color: #f9f9f9;\n\tborder-color: #d9d9d9;\n\tz-index: auto\n}\n\n.pagination>li.active>a,.pagination>li.active>a:hover {\n\tbackground-color: #6faed9;\n\tborder-color: #6faed9;\n\tcolor: #fff;\n\ttext-shadow: 0 -1px 0 rgba(0,0,0,0.25);\n\tz-index: 2\n}\n\n.list-unstyled>li>.ace-icon:first-child,.list-inline>li>.ace-icon:first-child {\n\twidth: 18px;\n\ttext-align: center\n}\n.kendo-list>li{margin-bottom:8px;}"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/docs.css",
    "content": "/*!\n * Bootstrap Docs (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under the Creative Commons Attribution 3.0 Unported License. For\n * details, see http://creativecommons.org/licenses/by/3.0/.\n */\nhtml{width:100%; min-width:1024px;}\nbody {\n\tposition: relative\n}\n\n.table code {\n\tfont-size: 13px;\n\tfont-weight: 400\n}\n\n.btn-outline {\n\tcolor: #563d7c;\n\tbackground-color: transparent;\n\tborder-color: #563d7c\n}\n\n.btn-outline:hover,.btn-outline:focus,.btn-outline:active {\n\tcolor: #fff;\n\tbackground-color: #563d7c;\n\tborder-color: #563d7c\n}\n\n.btn-outline-inverse {\n\tcolor: #fff;\n\tbackground-color: transparent;\n\tborder-color: #cdbfe3\n}\n\n.btn-outline-inverse:hover,.btn-outline-inverse:focus,.btn-outline-inverse:active {\n\tcolor: #563d7c;\n\ttext-shadow: none;\n\tbackground-color: #fff;\n\tborder-color: #fff\n}\n\n.bs-docs-booticon {\n\tdisplay: block;\n\tfont-weight: 500;\n\tcolor: #fff;\n\tbackground-color: #563d7c;\n\tborder-radius: 15%;\n\tcursor: default;\n\ttext-align: center\n}\n\n.bs-docs-booticon-sm {\n\twidth: 30px;\n\theight: 30px;\n\tfont-size: 20px;\n\tline-height: 28px\n}\n\n.bs-docs-booticon-lg {\n\twidth: 144px;\n\theight: 144px;\n\tfont-size: 108px;\n\tline-height: 140px\n}\n\n.bs-docs-booticon-inverse {\n\tcolor: #563d7c;\n\tbackground-color: #fff\n}\n\n.bs-docs-booticon-outline {\n\tbackground-color: transparent;\n\tborder: 1px solid #cdbfe3\n}\n\n.bs-docs-nav {\n\tmargin-bottom: 0;\n\tbackground-color: #fff;\n\tborder-bottom: 1px solid #563d7c\n}\n\n.bs-home-nav .bs-nav-b {\n\tdisplay: none\n}\n\n.bs-docs-nav .navbar-brand,.bs-docs-nav .navbar-nav>li>a {\n\tcolor: #563d7c;\n\tfont-weight: 500\n}\n\n.bs-docs-nav .navbar-nav>li>a:hover,.bs-docs-nav .navbar-nav>.active>a,.bs-docs-nav .navbar-nav>.active>a:hover {\n\tcolor: #463265;\n\tbackground-color: #f9f9f9\n}\n\n.bs-docs-nav .navbar-toggle .icon-bar {\n\tbackground-color: #563d7c\n}\n\n.bs-docs-nav .navbar-header .navbar-toggle {\n\tborder-color: #fff\n}\n\n.bs-docs-nav .navbar-header .navbar-toggle:hover,.bs-docs-nav .navbar-header .navbar-toggle:focus {\n\tbackground-color: #f9f9f9;\n\tborder-color: #f9f9f9\n}\n\n.bs-docs-footer {\n\tpadding-top: 40px;\n\tpadding-bottom: 40px;\n\tmargin-top: 100px;\n\tcolor: #777;\n\ttext-align: center;\n\tborder-top: 1px solid #e5e5e5\n}\n\n.bs-docs-footer-links {\n\tmargin-top: 20px;\n\tpadding-left: 0;\n\tcolor: #999\n}\n\n.bs-docs-footer-links li {\n\tdisplay: inline;\n\tpadding: 0 2px\n}\n\n.bs-docs-footer-links li:first-child {\n\tpadding-left: 0\n}\n\n@media (min-width:768px) {\n\t.bs-docs-footer p {\n\t\tmargin-bottom: 0\n\t}\n}\n\n.bs-docs-social {\n\tmargin-bottom: 20px;\n\ttext-align: center\n}\n\n.bs-docs-social-buttons {\n\tdisplay: inline-block;\n\tmargin-bottom: 0;\n\tpadding-left: 0;\n\tlist-style: none\n}\n\n.bs-docs-social-buttons li {\n\tdisplay: inline-block;\n\tline-height: 1;\n\tpadding: 5px 8px\n}\n\n.bs-docs-social-buttons .twitter-follow-button {\n\twidth: 225px!important\n}\n\n.bs-docs-social-buttons .twitter-share-button {\n\twidth: 98px!important\n}\n\n.github-btn {\n\tborder: 0;\n\toverflow: hidden\n}\n\n.bs-docs-masthead,.bs-docs-header {\n\tposition: relative;\n\tpadding: 30px 15px;\n\tcolor: #cdbfe3;\n\ttext-align: center;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\tbackground-color: #6f5499;\n\tbackground-image: -webkit-linear-gradient(top,#563d7c 0,#6f5499 100%);\n\tbackground-image: linear-gradient(to bottom,#563d7c 0,#6f5499 100%);\n\tbackground-repeat: repeat-x;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0)\n}\n\n.bs-docs-masthead .bs-docs-booticon {\n\tmargin: 0 auto 30px\n}\n\n.bs-docs-masthead h1 {\n\tfont-weight: 300;\n\tline-height: 1;\n\tcolor: #fff\n}\n\n.bs-docs-masthead .lead {\n\tmargin: 0 auto 30px;\n\tfont-size: 20px;\n\tcolor: #fff\n}\n\n.bs-docs-masthead .version {\n\tmargin-top: -15px;\n\tmargin-bottom: 30px;\n\tcolor: #9783b9\n}\n\n.bs-docs-masthead .btn {\n\twidth: 100%;\n\tpadding: 15px 30px;\n\tfont-size: 20px\n}\n\n@media (min-width:480px) {\n\t.bs-docs-masthead .btn {\n\t\twidth: auto\n\t}\n}\n\n@media (min-width:768px) {\n\t.bs-docs-masthead {\n\t\tpadding-top: 80px;\n\t\tpadding-bottom: 80px\n\t}\n\n\t.bs-docs-masthead h1 {\n\t\tfont-size: 60px\n\t}\n\n\t.bs-docs-masthead .lead {\n\t\tfont-size: 24px\n\t}\n}\n\n@media (min-width:992px) {\n\t.bs-docs-masthead .lead {\n\t\twidth: 80%;\n\t\tfont-size: 30px\n\t}\n}\n\n.bs-docs-header {\n\tmargin-bottom: 40px;\n\tfont-size: 20px\n}\n\n.bs-docs-header h1 {\n\tmargin-top: 0;\n\tcolor: #fff\n}\n\n.bs-docs-header p {\n\tmargin-bottom: 0;\n\tfont-weight: 300;\n\tline-height: 1.4\n}\n\n.bs-docs-header .container {\n\tposition: relative\n}\n\n@media (min-width:768px) {\n\t.bs-docs-header {\n\t\tpadding-top: 60px;\n\t\tpadding-bottom: 60px;\n\t\tfont-size: 24px;\n\t\ttext-align: left\n\t}\n\n\t.bs-docs-header h1 {\n\t\tfont-size: 60px;\n\t\tline-height: 1\n\t}\n}\n\n@media (min-width:992px) {\n\t.bs-docs-header h1,.bs-docs-header p {\n\t\tmargin-right: 380px\n\t}\n}\n\n.carbonad {\n\twidth: auto!important;\n\tmargin: 30px -30px -31px!important;\n\tpadding: 20px!important;\n\toverflow: hidden;\n\theight: auto!important;\n\tfont-size: 13px!important;\n\tline-height: 16px!important;\n\ttext-align: left;\n\tbackground: transparent!important;\n\tborder: solid #866ab3!important;\n\tborder-width: 1px 0!important\n}\n\n.carbonad-img {\n\tmargin: 0!important\n}\n\n.carbonad-text,.carbonad-tag {\n\tfloat: none!important;\n\tdisplay: block!important;\n\twidth: auto!important;\n\theight: auto!important;\n\tmargin-left: 145px!important;\n\tfont-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif!important\n}\n\n.carbonad-text {\n\tpadding-top: 0!important\n}\n\n.carbonad-tag {\n\tcolor: inherit!important;\n\ttext-align: left!important\n}\n\n.carbonad-text a,.carbonad-tag a {\n\tcolor: #fff!important\n}\n\n.carbonad #azcarbon>img {\n\tdisplay: none\n}\n\n@media (min-width:480px) {\n\t.carbonad {\n\t\twidth: 330px!important;\n\t\tmargin: 20px auto!important;\n\t\tborder-radius: 4px;\n\t\tborder-width: 1px!important\n\t}\n\n\t.bs-docs-masthead .carbonad {\n\t\tmargin: 50px auto 0!important\n\t}\n}\n\n@media (min-width:768px) {\n\t.carbonad {\n\t\tmargin-left: 0!important;\n\t\tmargin-right: 0!important\n\t}\n}\n\n@media (min-width:992px) {\n\t.carbonad {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 15px;\n\t\tmargin: 0!important;\n\t\tpadding: 15px!important;\n\t\twidth: 330px!important\n\t}\n\n\t.bs-docs-masthead .carbonad {\n\t\tposition: static\n\t}\n}\n\n.bs-docs-featurette {\n\tpadding-top: 40px;\n\tpadding-bottom: 40px;\n\tfont-size: 16px;\n\tline-height: 1.5;\n\tcolor: #555;\n\ttext-align: center;\n\tbackground-color: #fff;\n\tborder-bottom: 1px solid #e5e5e5\n}\n\n.bs-docs-featurette+.bs-docs-footer {\n\tmargin-top: 0;\n\tborder-top: 0\n}\n\n.bs-docs-featurette-title {\n\tfont-size: 30px;\n\tfont-weight: 400;\n\tcolor: #333;\n\tmargin-bottom: 5px\n}\n\n.half-rule {\n\twidth: 100px;\n\tmargin: 40px auto\n}\n\n.bs-docs-featurette h3 {\n\tfont-weight: 400;\n\tcolor: #333;\n\tmargin-bottom: 5px\n}\n\n.bs-docs-featurette-img {\n\tdisplay: block;\n\tmargin-bottom: 20px;\n\tcolor: #333\n}\n\n.bs-docs-featurette-img:hover {\n\ttext-decoration: none;\n\tcolor: #428bca\n}\n\n.bs-docs-featurette-img img {\n\tdisplay: block;\n\tmargin-bottom: 15px\n}\n\n.bs-docs-featured-sites {\n\tmargin-left: -1px;\n\tmargin-right: -1px\n}\n\n.bs-docs-featured-sites .col-sm-3 {\n\tpadding-left: 1px;\n\tpadding-right: 1px\n}\n\n@media (min-width:480px) {\n\t.bs-docs-featurette .img-responsive {\n\t\tmargin-top: 30px\n\t}\n}\n\n@media (min-width:768px) {\n\t.bs-docs-featurette {\n\t\tpadding-top: 100px;\n\t\tpadding-bottom: 100px\n\t}\n\n\t.bs-docs-featurette-title {\n\t\tfont-size: 40px\n\t}\n\n\t.bs-docs-featurette .lead {\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t\tmax-width: 80%\n\t}\n\n\t.bs-docs-featured-sites .col-sm-3:first-child img {\n\t\tborder-top-left-radius: 4px;\n\t\tborder-bottom-left-radius: 4px\n\t}\n\n\t.bs-docs-featured-sites .col-sm-3:last-child img {\n\t\tborder-top-right-radius: 4px;\n\t\tborder-bottom-right-radius: 4px\n\t}\n\n\t.bs-docs-featurette .img-responsive {\n\t\tmargin-top: 0\n\t}\n}\n\n.bs-docs-sidebar.affix {\n\tposition: static\n}\n\n@media (min-width:768px) {\n\t.bs-docs-sidebar {\n\t\tpadding-left: 20px\n\t}\n}\n\n.bs-docs-sidenav {\n\tmargin-top: 20px;\n\tmargin-bottom: 20px\n}\n\n.bs-docs-sidebar .nav>li>a {\n\tdisplay: block;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tcolor: #999;\n\tpadding: 4px 20px\n}\n\n.bs-docs-sidebar .nav>li>a:hover,.bs-docs-sidebar .nav>li>a:focus {\n\tpadding-left: 19px;\n\tcolor: #563d7c;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n\tborder-left: 1px solid #563d7c\n}\n\n.bs-docs-sidebar .nav>.active>a,.bs-docs-sidebar .nav>.active:hover>a,.bs-docs-sidebar .nav>.active:focus>a {\n\tpadding-left: 18px;\n\tfont-weight: 700;\n\tcolor: #563d7c;\n\tbackground-color: transparent;\n\tborder-left: 2px solid #563d7c\n}\n\n.bs-docs-sidebar .nav .nav {\n\tdisplay: none;\n\tpadding-bottom: 10px\n}\n\n.bs-docs-sidebar .nav .nav>li>a {\n\tpadding-top: 1px;\n\tpadding-bottom: 1px;\n\tpadding-left: 30px;\n\tfont-size: 12px;\n\tfont-weight: 400\n}\n\n.bs-docs-sidebar .nav .nav>li>a:hover,.bs-docs-sidebar .nav .nav>li>a:focus {\n\tpadding-left: 29px\n}\n\n.bs-docs-sidebar .nav .nav>.active>a,.bs-docs-sidebar .nav .nav>.active:hover>a,.bs-docs-sidebar .nav .nav>.active:focus>a {\n\tfont-weight: 500;\n\tpadding-left: 28px\n}\n\n.back-to-top {\n\tdisplay: none;\n\tmargin-top: 10px;\n\tmargin-left: 10px;\n\tpadding: 4px 10px;\n\tfont-size: 12px;\n\tfont-weight: 500;\n\tcolor: #999\n}\n\n.back-to-top:hover {\n\ttext-decoration: none;\n\tcolor: #563d7c\n}\n\n@media (min-width:768px) {\n\t.back-to-top {\n\t\tdisplay: block\n\t}\n}\n\n@media (min-width:992px) {\n\t.bs-docs-sidebar .nav>.active>ul {\n\t\tdisplay: block\n\t}\n\n\t.bs-docs-sidebar.affix,.bs-docs-sidebar.affix-bottom {\n\t\twidth: 213px\n\t}\n\n\t.bs-docs-sidebar.affix {\n\t\tposition: fixed;\n\t\ttop: 20px\n\t}\n\n\t.bs-docs-sidebar.affix-bottom {\n\t\tposition: absolute\n\t}\n\n\t.bs-docs-sidebar.affix-bottom .bs-docs-sidenav,.bs-docs-sidebar.affix .bs-docs-sidenav {\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 0\n\t}\n}\n\n@media (min-width:1200px) {\n\t.bs-docs-sidebar.affix-bottom,.bs-docs-sidebar.affix {\n\t\twidth: 263px\n\t}\n}\n\n.bs-docs-section {\n\tmargin-bottom: 40px\n}\n\n.bs-docs-section:last-child {\n\tmargin-bottom: 0\n}\n\nh1[id] {\n\tmargin-top: 0;\n\tpadding-top: 20px\n}\n\n.bs-callout {\n\tmargin: 20px 0;\n\tpadding: 20px;\n\tborder-left: 3px solid #eee\n}\n\n.bs-callout h4 {\n\tmargin-top: 0;\n\tmargin-bottom: 5px\n}\n\n.bs-callout p:last-child {\n\tmargin-bottom: 0\n}\n\n.bs-callout code {\n\tbackground-color: #fff;\n\tborder-radius: 3px\n}\n\n.bs-callout-danger {\n\tbackground-color: #fdf7f7;\n\tborder-color: #d9534f\n}\n\n.bs-callout-danger h4 {\n\tcolor: #d9534f\n}\n\n.bs-callout-warning {\n\tbackground-color: #fcf8f2;\n\tborder-color: #f0ad4e\n}\n\n.bs-callout-warning h4 {\n\tcolor: #f0ad4e\n}\n\n.bs-callout-info {\n\tbackground-color: #f4f8fa;\n\tborder-color: #5bc0de\n}\n\n.bs-callout-info h4 {\n\tcolor: #5bc0de\n}\n\n.color-swatches {\n\tmargin: 0 -5px;\n\toverflow: hidden\n}\n\n.color-swatch {\n\tfloat: left;\n\twidth: 60px;\n\theight: 60px;\n\tmargin: 0 5px;\n\tborder-radius: 3px\n}\n\n@media (min-width:768px) {\n\t.color-swatch {\n\t\twidth: 100px;\n\t\theight: 100px\n\t}\n}\n\n.color-swatches .gray-darker {\n\tbackground-color: #222\n}\n\n.color-swatches .gray-dark {\n\tbackground-color: #333\n}\n\n.color-swatches .gray {\n\tbackground-color: #555\n}\n\n.color-swatches .gray-light {\n\tbackground-color: #999\n}\n\n.color-swatches .gray-lighter {\n\tbackground-color: #eee\n}\n\n.color-swatches .brand-primary {\n\tbackground-color: #428bca\n}\n\n.color-swatches .brand-success {\n\tbackground-color: #5cb85c\n}\n\n.color-swatches .brand-warning {\n\tbackground-color: #f0ad4e\n}\n\n.color-swatches .brand-danger {\n\tbackground-color: #d9534f\n}\n\n.color-swatches .brand-info {\n\tbackground-color: #5bc0de\n}\n\n.color-swatches .bs-purple {\n\tbackground-color: #563d7c\n}\n\n.color-swatches .bs-purple-light {\n\tbackground-color: #c7bfd3\n}\n\n.color-swatches .bs-purple-lighter {\n\tbackground-color: #e5e1ea\n}\n\n.color-swatches .bs-gray {\n\tbackground-color: #f9f9f9\n}\n\n.bs-team .team-member {\n\tcolor: #555;\n\tline-height: 32px\n}\n\n.bs-team .team-member:hover {\n\tcolor: #333;\n\ttext-decoration: none\n}\n\n.bs-team .github-btn {\n\tfloat: right;\n\tmargin-top: 6px;\n\twidth: 180px;\n\theight: 20px\n}\n\n.bs-team img {\n\tfloat: left;\n\twidth: 32px;\n\tmargin-right: 10px;\n\tborder-radius: 4px\n}\n\n.show-grid {\n\tmargin-bottom: 15px\n}\n\n.show-grid [class^=col-] {\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n\tbackground-color: #eee;\n\tbackground-color: rgba(86,61,124,.15);\n\tborder: 1px solid #ddd;\n\tborder: 1px solid rgba(86,61,124,.2)\n}\n\n.bs-example {\n\tposition: relative;\n\tpadding: 45px 15px 15px;\n\tmargin: 0 -15px 15px;\n\tbackground-color: #fafafa;\n\tbox-shadow: inset 0 3px 6px rgba(0,0,0,.05);\n\tborder-color: #e5e5e5 #eee #eee;\n\tborder-style: solid;\n\tborder-width: 1px 0\n}\n\n.bs-example:after {\n\tcontent: \"Example\";\n\tposition: absolute;\n\ttop: 15px;\n\tleft: 15px;\n\tfont-size: 12px;\n\tfont-weight: 700;\n\tcolor: #bbb;\n\ttext-transform: uppercase;\n\tletter-spacing: 1px\n}\n\n.bs-example+.highlight {\n\tmargin: -15px -15px 15px;\n\tborder-radius: 0;\n\tborder-width: 0 0 1px\n}\n\n@media (min-width:768px) {\n\t.bs-example {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t\tbackground-color: #fff;\n\t\tborder-width: 1px;\n\t\tborder-color: #ddd;\n\t\tborder-radius: 4px;\n\t\tbox-shadow: none\n\t}\n\n\t.bs-example+.highlight {\n\t\tmargin-top: -16px;\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t\tborder-width: 1px;\n\t\tborder-bottom-left-radius: 4px;\n\t\tborder-bottom-right-radius: 4px\n\t}\n}\n\n.bs-example .container {\n\twidth: auto\n}\n\n.bs-example>p:last-child,.bs-example>ul:last-child,.bs-example>ol:last-child,.bs-example>blockquote:last-child,.bs-example>.form-control:last-child,.bs-example>.table:last-child,.bs-example>.navbar:last-child,.bs-example>.jumbotron:last-child,.bs-example>.alert:last-child,.bs-example>.panel:last-child,.bs-example>.list-group:last-child,.bs-example>.well:last-child,.bs-example>.progress:last-child,.bs-example>.table-responsive:last-child>.table {\n\tmargin-bottom: 0\n}\n\n.bs-example>p>.close {\n\tfloat: none\n}\n\n.bs-example-type .table .type-info {\n\tcolor: #999;\n\tvertical-align: middle\n}\n\n.bs-example-type .table td {\n\tpadding: 15px 0;\n\tborder-color: #eee\n}\n\n.bs-example-type .table tr:first-child td {\n\tborder-top: 0\n}\n\n.bs-example-type h1,.bs-example-type h2,.bs-example-type h3,.bs-example-type h4,.bs-example-type h5,.bs-example-type h6 {\n\tmargin: 0\n}\n\n.bs-example-bg-classes p {\n\tpadding: 15px\n}\n\n.bs-example>.img-circle,.bs-example>.img-rounded,.bs-example>.img-thumbnail {\n\tmargin: 5px\n}\n\n.bs-example>.table-responsive>.table {\n\tbackground-color: #fff\n}\n\n.bs-example>.btn,.bs-example>.btn-group {\n\tmargin-top: 5px;\n\tmargin-bottom: 5px\n}\n\n.bs-example>.btn-toolbar+.btn-toolbar {\n\tmargin-top: 10px\n}\n\n.bs-example-control-sizing select,.bs-example-control-sizing input[type=text]+input[type=text] {\n\tmargin-top: 10px\n}\n\n.bs-example-form .input-group {\n\tmargin-bottom: 10px\n}\n\n.bs-example>textarea.form-control {\n\tresize: vertical\n}\n\n.bs-example>.list-group {\n\tmax-width: 400px\n}\n\n.bs-example .navbar:last-child {\n\tmargin-bottom: 0\n}\n\n.bs-navbar-top-example,.bs-navbar-bottom-example {\n\tz-index: 1;\n\tpadding: 0;\n\toverflow: hidden\n}\n\n.bs-navbar-top-example .navbar-header,.bs-navbar-bottom-example .navbar-header {\n\tmargin-left: 0\n}\n\n.bs-navbar-top-example .navbar-fixed-top,.bs-navbar-bottom-example .navbar-fixed-bottom {\n\tposition: relative;\n\tmargin-left: 0;\n\tmargin-right: 0\n}\n\n.bs-navbar-top-example {\n\tpadding-bottom: 45px\n}\n\n.bs-navbar-top-example:after {\n\ttop: auto;\n\tbottom: 15px\n}\n\n.bs-navbar-top-example .navbar-fixed-top {\n\ttop: -1px\n}\n\n.bs-navbar-bottom-example {\n\tpadding-top: 45px\n}\n\n.bs-navbar-bottom-example .navbar-fixed-bottom {\n\tbottom: -1px\n}\n\n.bs-navbar-bottom-example .navbar {\n\tmargin-bottom: 0\n}\n\n@media (min-width:768px) {\n\t.bs-navbar-top-example .navbar-fixed-top,.bs-navbar-bottom-example .navbar-fixed-bottom {\n\t\tposition: absolute\n\t}\n\n\t.bs-navbar-top-example {\n\t\tborder-radius: 0 0 4px 4px\n\t}\n\n\t.bs-navbar-bottom-example {\n\t\tborder-radius: 4px 4px 0 0\n\t}\n}\n\n.bs-example .pagination {\n\tmargin-top: 10px;\n\tmargin-bottom: 10px\n}\n\n.bs-example>.pager {\n\tmargin-top: 0\n}\n\n.bs-example-modal {\n\tbackground-color: #f5f5f5\n}\n\n.bs-example-modal .modal {\n\tposition: relative;\n\ttop: auto;\n\tright: auto;\n\tleft: auto;\n\tbottom: auto;\n\tz-index: 1;\n\tdisplay: block\n}\n\n.bs-example-modal .modal-dialog {\n\tleft: auto;\n\tmargin-left: auto;\n\tmargin-right: auto\n}\n\n.bs-example>.dropdown>.dropdown-menu {\n\tposition: static;\n\tdisplay: block;\n\tmargin-bottom: 5px\n}\n\n.bs-example-tabs .nav-tabs {\n\tmargin-bottom: 15px\n}\n\n.bs-example-tooltips {\n\ttext-align: center\n}\n\n.bs-example-tooltips>.btn {\n\tmargin-top: 5px;\n\tmargin-bottom: 5px\n}\n\n.bs-example-popover {\n\tpadding-bottom: 24px;\n\tbackground-color: #f9f9f9\n}\n\n.bs-example-popover .popover {\n\tposition: relative;\n\tdisplay: block;\n\tfloat: left;\n\twidth: 260px;\n\tmargin: 20px\n}\n\n.scrollspy-example {\n\tposition: relative;\n\theight: 200px;\n\tmargin-top: 10px;\n\toverflow: auto\n}\n\n.highlight {\n\tpadding: 9px 14px;\n\tmargin-bottom: 14px;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\tborder-radius: 4px\n}\n\n.highlight pre {\n\tpadding: 0;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\tbackground-color: transparent;\n\tborder: 0;\n\twhite-space: nowrap\n}\n\n.highlight pre code {\n\tfont-size: inherit;\n\tcolor: #333\n}\n\n.highlight pre .lineno {\n\tdisplay: inline-block;\n\twidth: 22px;\n\tpadding-right: 5px;\n\tmargin-right: 10px;\n\ttext-align: right;\n\tcolor: #bebec5\n}\n\n.table-responsive .highlight pre {\n\twhite-space: normal\n}\n\n.bs-table th small,.responsive-utilities th small {\n\tdisplay: block;\n\tfont-weight: 400;\n\tcolor: #999\n}\n\n.responsive-utilities tbody th {\n\tfont-weight: 400\n}\n\n.responsive-utilities td {\n\ttext-align: center\n}\n\n.responsive-utilities td.is-visible {\n\tcolor: #468847;\n\tbackground-color: #dff0d8!important\n}\n\n.responsive-utilities td.is-hidden {\n\tcolor: #ccc;\n\tbackground-color: #f9f9f9!important\n}\n\n.responsive-utilities-test {\n\tmargin-top: 5px\n}\n\n.responsive-utilities-test .col-xs-6 {\n\tmargin-bottom: 10px\n}\n\n.responsive-utilities-test span {\n\tdisplay: block;\n\tpadding: 15px 10px;\n\tfont-size: 14px;\n\tfont-weight: 700;\n\tline-height: 1.1;\n\ttext-align: center;\n\tborder-radius: 4px\n}\n\n.visible-on .col-xs-6 .hidden-xs,.visible-on .col-xs-6 .hidden-sm,.visible-on .col-xs-6 .hidden-md,.visible-on .col-xs-6 .hidden-lg,.hidden-on .col-xs-6 .hidden-xs,.hidden-on .col-xs-6 .hidden-sm,.hidden-on .col-xs-6 .hidden-md,.hidden-on .col-xs-6 .hidden-lg {\n\tcolor: #999;\n\tborder: 1px solid #ddd\n}\n\n.visible-on .col-xs-6 .visible-xs,.visible-on .col-xs-6 .visible-sm,.visible-on .col-xs-6 .visible-md,.visible-on .col-xs-6 .visible-lg,.hidden-on .col-xs-6 .visible-xs,.hidden-on .col-xs-6 .visible-sm,.hidden-on .col-xs-6 .visible-md,.hidden-on .col-xs-6 .visible-lg {\n\tcolor: #468847;\n\tbackground-color: #dff0d8;\n\tborder: 1px solid #d6e9c6\n}\n\n.bs-glyphicons {\n\tmargin: 0 -19px 20px -16px;\n\toverflow: hidden\n}\n\n.bs-glyphicons-list {\n\tpadding-left: 0;\n\tlist-style: none\n}\n\n.bs-glyphicons li {\n\tfloat: left;\n\twidth: 25%;\n\theight: 115px;\n\tpadding: 10px;\n\tfont-size: 10px;\n\tline-height: 1.4;\n\ttext-align: center;\n\tborder: 1px solid #fff;\n\tbackground-color: #f9f9f9\n}\n\n.bs-glyphicons .glyphicon {\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tfont-size: 24px\n}\n\n.bs-glyphicons .glyphicon-class {\n\tdisplay: block;\n\ttext-align: center;\n\tword-wrap: break-word\n}\n\n.bs-glyphicons li:hover {\n\tcolor: #fff;\n\tbackground-color: #563d7c\n}\n\n@media (min-width:768px) {\n\t.bs-glyphicons {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0\n\t}\n\n\t.bs-glyphicons li {\n\t\twidth: 12.5%;\n\t\tfont-size: 12px\n\t}\n}\n\n.bs-customizer .toggle {\n\tfloat: right;\n\tmargin-top: 25px\n}\n\n.bs-customizer label {\n\tmargin-top: 10px;\n\tfont-weight: 500;\n\tcolor: #555\n}\n\n.bs-customizer h2 {\n\tmargin-top: 0;\n\tmargin-bottom: 5px;\n\tpadding-top: 30px\n}\n\n.bs-customizer h3 {\n\tmargin-bottom: 0\n}\n\n.bs-customizer h4 {\n\tmargin-top: 15px;\n\tmargin-bottom: 0\n}\n\n.bs-customizer .bs-callout h4 {\n\tmargin-top: 0;\n\tmargin-bottom: 5px\n}\n\n.bs-customizer input[type=text] {\n\tfont-family: Menlo,Monaco,Consolas,\"Courier New\",monospace;\n\tbackground-color: #fafafa\n}\n\n.bs-customizer .help-block {\n\tfont-size: 12px;\n\tmargin-bottom: 5px\n}\n\n#less-section label {\n\tfont-weight: 400\n}\n\n.bs-customizer-input {\n\tfloat: left;\n\twidth: 33.333333%;\n\tpadding-left: 15px;\n\tpadding-right: 15px\n}\n\n.bs-customize-download .btn-outline {\n\tpadding: 20px\n}\n\n.bs-customizer-alert {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tz-index: 1030;\n\tpadding: 15px 0;\n\tcolor: #fff;\n\tbackground-color: #d9534f;\n\tbox-shadow: inset 0 1px 0 rgba(255,255,255,.25);\n\tborder-bottom: 1px solid #b94441\n}\n\n.bs-customizer-alert .close {\n\tmargin-top: -4px;\n\tfont-size: 24px\n}\n\n.bs-customizer-alert p {\n\tmargin-bottom: 0\n}\n\n.bs-customizer-alert .glyphicon {\n\tmargin-right: 5px\n}\n\n.bs-customizer-alert pre {\n\tmargin: 10px 0 0;\n\tcolor: #fff;\n\tbackground-color: #a83c3a;\n\tborder-color: #973634;\n\tbox-shadow: inset 0 2px 4px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)\n}\n\n.bs-brand-logos {\n\tdisplay: table;\n\twidth: 100%;\n\tmargin-bottom: 15px;\n\toverflow: hidden;\n\tcolor: #563d7c;\n\tbackground-color: #f9f9f9;\n\tborder-radius: 4px\n}\n\n.bs-brand-item {\n\tpadding: 60px 0;\n\ttext-align: center\n}\n\n.bs-brand-item+.bs-brand-item {\n\tborder-top: 1px solid #fff\n}\n\n.bs-brand-logos .inverse {\n\tcolor: #fff;\n\tbackground-color: #563d7c\n}\n\n.bs-brand-item h1,.bs-brand-item h3 {\n\tmargin-top: 0;\n\tmargin-bottom: 0\n}\n\n.bs-brand-item .bs-docs-booticon {\n\tmargin-left: auto;\n\tmargin-right: auto\n}\n\n.bs-brand-item .glyphicon {\n\twidth: 30px;\n\theight: 30px;\n\tmargin: 10px auto -10px;\n\tline-height: 30px;\n\tcolor: #fff;\n\tborder-radius: 50%\n}\n\n.bs-brand-item .glyphicon-ok {\n\tbackground-color: #5cb85c\n}\n\n.bs-brand-item .glyphicon-remove {\n\tbackground-color: #d9534f\n}\n\n@media (min-width:768px) {\n\t.bs-brand-item {\n\t\tdisplay: table-cell;\n\t\twidth: 1%\n\t}\n\n\t.bs-brand-item+.bs-brand-item {\n\t\tborder-top: 0;\n\t\tborder-left: 1px solid #fff\n\t}\n\n\t.bs-brand-item h1 {\n\t\tfont-size: 60px\n\t}\n}\n\n.bs-examples .thumbnail {\n\tmargin-bottom: 10px\n}\n\n.bs-examples h4 {\n\tmargin-bottom: 5px\n}\n\n.bs-examples p {\n\tmargin-bottom: 20px\n}\n\n#focusedInput {\n\tborder-color: #ccc;\n\tborder-color: rgba(82,168,236,.8);\n\toutline: 0;\n\toutline: thin dotted \\9;\n\t-moz-box-shadow: 0 0 8px rgba(82,168,236,.6);\n\tbox-shadow: 0 0 8px rgba(82,168,236,.6)\n}\n\n.hll {\n\tbackground-color: #ffc\n}\n\n.c {\n\tcolor: #999\n}\n\n.err {\n\tcolor: #A00;\n\tbackground-color: #FAA\n}\n\n.k {\n\tcolor: #069\n}\n\n.o {\n\tcolor: #555\n}\n\n.cm {\n\tcolor: #999\n}\n\n.cp {\n\tcolor: #099\n}\n\n.c1 {\n\tcolor: #999\n}\n\n.cs {\n\tcolor: #999\n}\n\n.gd {\n\tbackground-color: #FCC;\n\tborder: 1px solid #C00\n}\n\n.ge {\n\tfont-style: italic\n}\n\n.gr {\n\tcolor: red\n}\n\n.gh {\n\tcolor: #030\n}\n\n.gi {\n\tbackground-color: #CFC;\n\tborder: 1px solid #0C0\n}\n\n.go {\n\tcolor: #AAA\n}\n\n.gp {\n\tcolor: #009\n}\n\n.gu {\n\tcolor: #030\n}\n\n.gt {\n\tcolor: #9C6\n}\n\n.kc {\n\tcolor: #069\n}\n\n.kd {\n\tcolor: #069\n}\n\n.kn {\n\tcolor: #069\n}\n\n.kp {\n\tcolor: #069\n}\n\n.kr {\n\tcolor: #069\n}\n\n.kt {\n\tcolor: #078\n}\n\n.m {\n\tcolor: #F60\n}\n\n.s {\n\tcolor: #d44950\n}\n\n.na {\n\tcolor: #4f9fcf\n}\n\n.nb {\n\tcolor: #366\n}\n\n.nc {\n\tcolor: #0A8\n}\n\n.no {\n\tcolor: #360\n}\n\n.nd {\n\tcolor: #99F\n}\n\n.ni {\n\tcolor: #999\n}\n\n.ne {\n\tcolor: #C00\n}\n\n.nf {\n\tcolor: #C0F\n}\n\n.nl {\n\tcolor: #99F\n}\n\n.nn {\n\tcolor: #0CF\n}\n\n.nt {\n\tcolor: #2f6f9f\n}\n\n.nv {\n\tcolor: #033\n}\n\n.ow {\n\tcolor: #000\n}\n\n.w {\n\tcolor: #bbb\n}\n\n.mf {\n\tcolor: #F60\n}\n\n.mh {\n\tcolor: #F60\n}\n\n.mi {\n\tcolor: #F60\n}\n\n.mo {\n\tcolor: #F60\n}\n\n.sb {\n\tcolor: #C30\n}\n\n.sc {\n\tcolor: #C30\n}\n\n.sd {\n\tcolor: #C30;\n\tfont-style: italic\n}\n\n.s2 {\n\tcolor: #C30\n}\n\n.se {\n\tcolor: #C30\n}\n\n.sh {\n\tcolor: #C30\n}\n\n.si {\n\tcolor: #A00\n}\n\n.sx {\n\tcolor: #C30\n}\n\n.sr {\n\tcolor: #3AA\n}\n\n.s1 {\n\tcolor: #C30\n}\n\n.ss {\n\tcolor: #FC3\n}\n\n.bp {\n\tcolor: #366\n}\n\n.vc {\n\tcolor: #033\n}\n\n.vg {\n\tcolor: #033\n}\n\n.vi {\n\tcolor: #033\n}\n\n.il {\n\tcolor: #F60\n}\n\n.css .o,.css .o+.nt,.css .nt+.nt {\n\tcolor: #999\n}\n\n.docs-container{padding-top:50px; padding-bottom:30px;}\n\n@media (min-width: 992px) and (max-width: 1200px){\n\t.navbar-right{display:none;}\n}\n@media (min-width:768px) and (max-width: 992px){\n\t.navbar-right{display:none;}\n\t.nav>li>a{padding-left:7px; padding-right:8px;}\n}\n.navbar-collapse{max-height:600px;}\n\n@media (max-width: 768px) {\n\t.navbar-nav{float:left; margin:0;}\t\n\t.navbar-nav>li{float:left;}\n\t.bs-example{margin:0; margin-bottom:15px; border-width:1px; -webkit-box-shadow:none; -moz-box-shadow:none; box-shadow:none; border-color:#ddd; -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px;}\n}\n@media (min-width: 768px) and (max-width: 1200px){\n\t.container{width:970px;}\t\n}"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/css/extend.css",
    "content": "/*\n *通用组件\n *更新时间:2014-5-7\n*/\n\n/*横向导航*/\nbody{font-family:\"Microsoft Yahei\";}\n.nav-wrap-theme1 header.navbar{position:relative; border-bottom:3px solid #3498db; z-index:1; clear:both; border-radius:0;}\n.header{position:relative; height:80px; padding:0;}\n.header .logo{margin-top:17px;}\n.header .logo a{color:#438bca; font-size:34px;}\n.header .logo a:hover{text-decoration:none;}\n.navigation{float:right; padding:0; margin:0; list-style:none; height:80px; position:relative; z-index:10;}\n.navigation > li{float:left; position:relative;}\n.navigation > li > a{color:#898989; font-size:14px; text-decoration:none; height:80px; line-height:80px; display:inline-block; position:relative; padding:0 15px;}\n.navigation > li > a:hover,\n.navigation > li > a.active{background:#3498db; color:#fff;}\n\n.nav-wrap-theme2 .navbar{border:0; border-radius:0;}\n.nav-wrap-theme2 .navbar .container{height:75px; width:100%;}\n.nav-wrap-theme2 .navbar .navbar-brand{display:block; height:initial; padding:15px 15px 0;}\n.nav-wrap-theme2 .navbar .navbar-brand img{height:45px;}\n.nav-wrap-theme2 .navbar-nav>li{vertical-align:top; padding:0; list-style:none;}\n.nav-wrap-theme2 .navbar-nav>li>a{display:block;}\n.nav-wrap-theme2 .navbar .navbar-nav > li > a{padding:0; text-decoration:none;}\n.nav-wrap-theme2 .navbar li a{font-size:12px; -ms-filter:\"Progid:DXImageTransform.Microsoft.Alpha(Opacity=70)\"; filter:alpha(opacity=70); -moz-opacity:.7; -khtml-opacity:.7; opacity:.7;}\n.nav-wrap-theme2 .navbar li a:hover{color:#fff; -ms-filter:\"Progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\"; filter:alpha(opacity=100); -moz-opacity:1; -khtml-opacity:1; opacity:1;}\n[class^=\"nav-icon-\"], [class*=\" nav-icon-\"]{display:inline-block; width:14px; height:14px; margin-top:1px; line-height:14px; vertical-align:text-top; line-height:14px; vertical-align:text-top;}\n.nav-wrap-theme2 .navbar #primary-nav{padding:0; margin-top:20px; margin-left:10px; margin-right:10px;}\n.nav-wrap-theme2 .navbar #primary-nav > li > a{text-align:center;  width:68px;}\n.nav-wrap-theme2 .navbar #primary-nav > li > a > i{display:block; font-size:22px;}\n.nav-wrap-theme2 .navbar #primary-nav > li > a > span{display:block;}\n.nav-wrap-theme2 .navbar #secondary-nav{padding:0; margin-top:26px;}\n.nav-wrap-theme2 .navbar #secondary-nav > li{margin-right:10px;}\n.nav-wrap-theme2 .navbar #secondary-nav > li > a{display:block; vertical-align:top;}\n.nav-wrap-theme2 .navbar #secondary-nav > li > a > i{margin-right:4px; font-size:16px; color:#fff;}\n\n#main-navbar .navbar-inner{min-height:40px; background:#418ce4; background-image:-webkit-gradient(linear,0 0,0 100%,from(#52aded),to(#418ce4)); background-image:-webkit-line-gradient(top,#52aded,#418ce4); background-image:-o-linear-gradient(top,#52aded,#418ce4); background-image:linear-gradient(to bottom,#52aded,#418ce4); background-repeat:repeat-x; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52aded',endColorstr='#ff418ce4',GradientType=0); border-bottom:1px solid #185aa7; -webkit-box-shadow:rgba(255,255,255,.25) 0 1px 0 inset; -moz-box-shadow:rgba(255,255,255,.25) 0 1px 0 inset; box-shadow:rgba(255,255,255,.25) 0 1px 0 inset;}\n#main-navbar .logo{display:block; float:left; margin:6px 15px 0 0; filter:alpha(opacity=100); opacity:1; -webkit-transition:opacity .2s; -moz-transition:opacity .2s; -o-transition:opacity .2s; transition:opacity .2s; font-size:20px; color:#fff; text-decoration:none;}\n#main-navbar .logo:hover{filter:alpha(opacity=70); opacity:.7; text-decoration:none;}\n#main-navbar .nav{position:relative; left:0; display:block; float:left; margin-right:10px;}\n#main-navbar .nav>li,\n#main-navbar .messages>li{display:inline-block; float:left;}\n#main-navbar .nav>li>a{font-size:12px; font-weight:600;}\n#main-navbar .nav>li>a,\n#main-navbar .messages>li>a{display:block; color:#fff; height:40px; line-height:40px; padding:0 15px; text-decoration:none;}\n#main-navbar .messages>li>a{padding:0 12px 0 0;}\n#main-navbar .nav>li>a:hover,\n#main-navbar .messages>li>a:hover{background:none; filter:alpha(opacity=70); opacity:.7;}\n#main-navbar .nav>li.active>a,\n#main-navbar .messages>li.active>a,\n#main-navbar .nav>li.open>a,\n#main-navbar .message>li.open>a,\n#main-navbar .nav>li.open>a:hover,\n#main-navbar .message>li.open>a:hover{background:rgba(0,0,0,.15); -webkit-box-shadow:rgba(0,0,0,.1) 0 1px 5px inset; -moz-box-shadow:rgba(0,0,0,.1) 0 1px 5px inset; box-shadow:rgba(0,0,0,.1) 0 1px 5px inset; opacity:1; filter:alpha(opacity=100); -webkit-transition:opacity 0s; -moz-transition:opacity 0s; -o-transition:opacity 0s; transition:opacity 0s;}\n.dropdown-menu li>a:hover{border:0; color:#fff; background:#3690e6; filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}\n.navbar .nav>li>.dropdown-menu:before{content:''; display:inline-block; border-left:7px solid transparent; border-right:7px solid transparent; border-bottom:7px solid #ccc; border-bottom-color:#c0c0c0; position:absolute; top:-7px; left:9px;}\n.navbar .nav>li>.dropdown-menu::after{content:''; display:inline-block; border-left:6px solid transparent; border-right:6px solid transparent; border-bottom:6px solid #fff; position:absolute; top:-6px; left:10px;}\n.navbar .pull-right>li>.dropdown-menu:before,\n.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto; right:12px;}\n.navbar .pull-right>li>.dropdown-menu:after,\n.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto; right:13px;}\n.navbar .divider-vertical{height:40px; border-right:1px solid #fff;}\n#main-navbar .separator,\n#main-navbar .divider-vertical{background:0; border:0; margin:0; background-color:rgba(255,255,255,.15); border-left:1px solid rgba(0,0,0,.2); width:2px;}\n.navbar-search{position:relative; margin-top:5px;}\n#main-navbar .navbar-search input{outline:0; border:0; height:26px; line-height:26px; margin-top:2px; padding:0 10px; background:rgba(255,255,255,.5); color:#0b2a4e;}\n#main-navbar .navbar-search input:focus{background:#fff;}\n.navbar-search .search-query{font-size:13px; font-weight:normal; -webkit-border-radius:15px; -moz-border-radius:15px; border-radius:15px;}\n#main-navbar .messages{list-style:none;}\n#main-navbar .messages i{margin-right:4px;}\n#main-navbar .separator{height:16px; margin-top:12px;}\n#main-navbar .nav>li>a.usermenu>img{display:inline-block; margin-top:9px; height:23px; vertical-align:top; width:23px; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px;}\n\n/*横向导航四*/\n.mod-nav{position:fixed; top:0; left:0; width:100%; height:80px; background:#3c404d; z-index:999;}\n.mod-nav .inner{position:relative; width:1000px; height:80px; margin:0 auto;}\n.mod-nav .inner ul{display:inline-block; overflow:hidden; height:80px; list-style:none;}\n.mod-nav .inner li{float:left; position:relative; display:inline-block; width:140px; height:80px;}\n.mod-nav .inner li.nav-on,\n.mod-nav .inner li:hover{background:-moz-linear-gradient(top,#343846 0,#181B23 100%); background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#343846),color-stop(100%,#181B23)); background:-webkit-linear-gradient(top,#343846 0,#181B23 100%); background:-o-linear-gradient(top,#343846 0,#181B23 100%); background:-ms-linear-gradient(top,#343846 0,#181B23 100%); background:linear-gradient(top,#343846 0,#181B23 100%); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#343846', endColorstr='#181B23',GradientType=0); -ms-filter:\"progid:DXImageTransform.Microsoft.gradient(startColorStr='#343846', EndColorStr='#181B23')\";}\n.mod-nav .nav-item a{display:inline-block; width:140px; line-height:80px; text-align:center; font-size:16px; color:#fff; text-decoration:none;}\n.mod-nav .nav-item a:hover{text-decoration:none;}\n.mod-nav .inner li.nav-on a,\n.mod-nav .inner li:hover a{color:#9edb48;}\n.mod-nav .nav-item i{position:relative; top:3px; display:inline-block; margin-right:4px; width:18px; height:18px; overflow:hidden; background:url(../../sample/navs/images/open_platform_v3_wiki_new.png) no-repeat;}\n.mod-nav .nav-item i.ico-n-app{background-position:-227px -139px;}\n.mod-nav .nav-item i.ico-n-www{background-position:-246px -139px;}\n.mod-nav .nav-item i.ico-n-home{background-position:-208px -139px;}\n.mod-nav li.nav-on i.icon-n-app,\n.mod-nav li:hover i.ico-n-app{background-position:-519px 0;}\n.mod-nav li.nav-on i.icon-n-www,\n.mod-nav li:hover i.ico-n-www{background-position:-519px -19px;}\n.mod-nav li.nav-on i.ico-n-home,\n.mod-nav li:hover i.ico-n-home{background-position:-500px -19px;}\n\n/*纵向菜单*/\n/*纵向导航一*/\n#sidebar{position:relative; top:0; left:0; width:100%; background:#e5e8eb; height:100%; overflow:hidden;}\n#sidebar .navbar{border-radius:0; background:transparent; border:none; padding-top:20%;}\n#sidebar .navbar-header,\n#sidebar .navbar-nav,\n#sidebar .navbar-nav li{float:none; margin-left:-10px;}\n#sidebar .navbar-brand{padding-top:10px; padding-bottom:20%; padding-left:30px; color:#777; font-size:28px;}\n#sidebar .navbar-collapse{padding-left:20px;}\n#sidebar .navbar-nav{margin:7.5px -15px;}\n#sidebar .navbar-default .navbar-nav>.active>a,\n.navbar-default .navbar-nav>.active>a:hover,\n.navbar-default .navbar-nav>.active>a:focus{color:#3498db; background:none;}\n#sidebar .navbar-default .navbar-nav>li>a{font-size:13px; font-weight:300; letter-spacing:1.5px; padding-left:30px;}\n#sidebar .navbar-default .navbar-nav>li>a:hover{background:rgba(38,41,46,.2);}\n\n/*纵向导航二*/\n.sidebar{width:100%;/*float: left;*/ display:block;\tbackground:#111; color:#eee; position:relative;}\n.sidebar .navbar-header{float:none; border-bottom:1px solid #222;}\n.sidebar .navbar-header a{color:#fff; font-weight:400;}\n.sidebar ul{padding:0; margin:0; list-style-type:none;}\n.sidebar ul li{list-style-type:none;}\n.sidebar .sidebar-inner{display:block; width:100%; margin:0 auto; position:relative; z-index:60; background:#111;}\n.sidebar .navi li i{margin-right:5px;}\n.sidebar .navi li span i{margin:0px;}\n.sidebar .navi > li > a{display:block; padding:12px 20px; font-size:15px; line-height:25px; color:#fff; text-decoration:none; border-bottom:1px solid #222; background-color:#111;}\n.sidebar .navi > li > a:hover, .sidebar .navi > li.open > a{border-bottom:1px solid #222; background-color:#222; color:#fff;}\n.sidebar .navi li ul{display:none; background:#181818;}\n.sidebar .navi li.open ul{display:block;}\n.sidebar .navi li ul li a{display:block; background:none; padding:10px 0px; padding-left:42px; text-decoration:none; color:#999; border-bottom:1px solid #222;}\n.sidebar .navi li ul li.active a{background:#050505; border-bottom:1px solid #222;}\n.sidebar .navi li ul li.active a:hover{background:#050505;}\n.sidebar .navi li ul li a:hover{background:#131313; border-bottom:1px solid #222;}\n\n/* Sidebar colors */\n.sidebar .navi > li.nlightblue > a:hover, \n.sidebar .navi > li.open.nlightblue > a, \n.sidebar .navi > li.current.nlightblue > a{background:#52b9e9 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.nblue > a:hover, \n.sidebar .navi > li.open.nblue > a,\n.sidebar .navi > li.current.nblue > a{background:#1171a3 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.ngreen > a:hover, \n.sidebar .navi > li.open.ngreen > a,\n.sidebar .navi > li.current.ngreen > a{background:#43c83c !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.norange > a:hover, \n.sidebar .navi > li.open.norange > a,\n.sidebar .navi > li.current.norange > a{background:#f88529 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.nred > a:hover, \n.sidebar .navi > li.open.nred > a,\n.sidebar .navi > li.current.nred > a{background:#fa3031 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.nviolet > a:hover, \n.sidebar .navi > li.open.nviolet > a,\n.sidebar .navi > li.current.nviolet > a{background:#932ab6 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .sidebar-search{padding:15px 5px;}\n.sidebar .sidebar-search form{margin:10px;}\n.sidebar .sidebar-search .form-control{border:0; border-radius:0;}\n.sidebar .sidebar-search .form-control:focus{border-color:#ccc; outline:0;}\n\n/*纵向导航三*/\n#sidebar-wrapper{background:#61b0e9;}\n#sidebar-wrapper .sidebar-header{height:50px; background:#3a4450;}\n#sidebar-wrapper .sidebar-header .navbar-brand{color:#fff;}\n/* Sidebar Mini-Search */\n.search-mini-wrapper{width:100%; height:50px; background:#61b0e9; overflow:hidden;}\n.search-mini{position:relative; margin:10px 0 10px 0;}\n.search-mini input{border:0; margin:0 8px; padding:5px 6px; width:192px; line-height:20px; background:#3a4450; color:#ffffff; vertical-align:middle;}\n.search-mini button{position:absolute; width:36px; height:30px; padding:0; border:0; margin:0; background:#3a4450; color:#ffffff; top:0; right:10px; font-size:18px;}\n.sidebar-menu a:hover{text-decoration:none;}\n.sidebar-menu li > a,\n.sidebar-menu li > div > a{position:relative;}\n.sidebar-menu,\n.sidebar-menu ul,\n.sidebar-menu li{position:relative; list-style:none; padding:0; margin:0; min-width:134px;}\n.sidebar-menu > li,\n.sidebar-menu > li > div{width:100%;}\n.sidebar-menu li > a{white-space:nowrap;}\n.sidebar-menu li > div > a > i + span{position:relative; top:-4px;}\n.sidebar-menu li > div > a > span{position:relative; top:6px;}\n.sidebar-menu > li > div{position:relative; background:#61b0e9;}\n.sidebar-menu > li > div > a{display:block; padding:10px; color:#ffffff;}\n.sidebar-menu > li > div > a > i{margin-right:10px; font-size:28px; line-height:28px; font-weight:normal;}\n.sidebar-menu > li:hover > div > a,\n.sidebar-menu > li.open > div > a{background:#6bbef6;}\n.sidebar-menu > li.parent > div > ul > li > a > span{margin-left:6px;}\n.sidebar-menu > li.parent > div > a > span:before{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#61b0e9 #61b0e9 #61b0e9 #ffffff; margin-left:4px; margin-right:2px;}\n.sidebar-menu > li.parent:hover > div > a > span:before,\n.sidebar-menu > li.parent.open > div > a > span:before{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#6bbef6 #6bbef6 #6bbef6 #ffffff;}\n.sidebar-menu > li.active > div > a{background:#ffffff; color:#20202f;}\n.sidebar-menu > li.parent.active > div > a > span:before{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#20202f #ffffff #ffffff #ffffff; position:relative; top:1px;}\n.sidebar-menu ul{display:none;}\n.sidebar-menu ul > li > a{display:block; padding:5px;}\n.sidebar-menu > li.parent li.parent > a > span:after{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#6bbef6 #6bbef6 #6bbef6 #ffffff; margin-left:8px;}\n.sidebar-menu .active > div > ul{display:block; padding-bottom:10px; background:#fff;}\n.sidebar-menu .active > div > ul > li.active > a{color:#20202f; border-color:#20202f;}\n.sidebar-menu .active > div > ul > li > a{margin-left:64px; color:#61b0e9; border-color:#61b0e9;}\n.sidebar-menu .active > div > ul > li > a:hover,\n.sidebar-menu .active > div > ul > li.active > a{border-left:8px solid; padding-left:7px; margin-left:54px;}\n.sidebar-menu li ul [class^=\"fa-\"],\n.sidebar-menu li ul [class*=\"fa-\"]{display:inline-block; width:18px; text-align:center;}\n/* submenu-right */\n.sidebar-menu > li.parent.inactive.open > div > ul{display:block; position:absolute; top:0 !important; left:100% !important; padding:10px 0; background:#6bbef6; z-index:99;}\n.sidebar-menu > li.parent.inactive.open > div > ul > li > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li > div > a{padding:5px 16px; color:#ffffff;}\n.sidebar-menu > li.parent.inactive.open > div > ul > li:hover > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a:hover{padding-left:8px !important; border-left:8px solid #aedcfb;}\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > div > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a:hover,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > div > a:hover{color:#20202f; border-color:#20202f;}\n\n/*数据类表格*/\n.panel-default > .panel-heading{color:#767676; background:#f6f6f6;}\n.table > thead > tr > th,\n.table > tbody > tr > td{color:#767676;}\n\n.table > .k-grid-header > tr > th > a{text-decoration:none; color:#767676;}\n.k-icon{display:inline-block; width:16px; height:16px; overflow:hidden; background-repeat:no-repeat; font-size:0; line-height:0; text-align:center; -ms-high-contrast-adjust:none;}\n.k-grid-header .k-header .k-icon{position:static;}\n.k-grid-header .k-link>.k-icon{vertical-align:text-top;}\n.k-icon{background-image:url('../../kendoui_web_2014_1_318/styles/Metro/sprite.png'); border-color:transparent;}\n.k-icon{opacity:1;}\n.k-i-arrow-s{background-position:0 -32px;}\n\n.widget{border: 1px solid #c9c9c9;border-radius: 3px;margin-top: 10px;margin-bottom: 20px;background: #fafafa;}\n.widget .table *{border-color:#e8e8e8 !important;}\n.widget .table.table-bordered{margin-bottom:0px;border:0px;}\n.widget .table.table-bordered tr th{border-top:0px;border-left:0px;}\n.widget .table.table-bordered tr th:last-child{border-right:0px;}\n.widget .table.table-bordered tr:first-child td{border-top:0px;}\n.widget .table.table-bordered tr:last-child td{border-bottom:0px;}\n.widget .table.table-bordered td{border-right:1px solid #ddd;}\n.widget .table.table-bordered tr td:first-child{border-left:0px;}\n.widget .table.table-bordered td:last-child{border-right:0px;}\n.widget .widget-head,.modal-header{background-color:#f8f8f8;background:-webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f2f2f2)); background:-webkit-linear-gradient(top, #f8f8f8, #f2f2f2); background:-moz-linear-gradient(top, #f8f8f8, #f2f2f2); background:-ms-linear-gradient(top, #f8f8f8, #f2f2f2); background:-o-linear-gradient(top, #f8f8f8, #f2f2f2); background:linear-gradient(top, #f8f8f8, #f2f2f2); border-top-right-radius:3px; border-top-left-radius:3px; text-shadow:0px 1px #fff; border-bottom:1px solid #ccc; border-top:1px solid #fff; color:#666; font-size:13px; font-weight:bold; padding:8px 15px;}\n.widget .widget-head .widget-icons i{font-size:14px; margin:0px 4px;}\n.widget .widget-head .widget-icons a{color:#aaa;}\n.widget .widget-head .widget-icons a:hover{color:#999;}\n.widget.wblack .widget-head .widget-icons i{font-size:14px; margin:0px 4px;}\n.widget .widget-foot, .modal-footer{background-color:#f8f8f8; background:-webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f2f2f2)); background:-webkit-linear-gradient(top, #f8f8f8, #f2f2f2); background:-moz-linear-gradient(top, #f8f8f8, #f2f2f2); background:-ms-linear-gradient(top, #f8f8f8, #f2f2f2); background:-o-linear-gradient(top, #f8f8f8, #f2f2f2); background:linear-gradient(top, #f8f8f8, #f2f2f2); border-bottom-right-radius:3px; border-bottom-left-radius:3px; text-shadow:0px 1px #fff; border-bottom:1px solid #fff; border-top:1px solid #ccc; padding:8px 15px; font-size:12px; color:#555; box-shadow:inset 0px 1px 1px #fff;}\n.pagination li a{color:#777;}\n\n/*数据类表单*/\n/*.row:after{clear:both; content:\".\"; display:block; height:0; line-height:0; font-size:0; visibility:hidden;}\n.row{zoom:1;}*/\nlabel{color:#767676;}\n.form-wrap .btn{-webkit-border-radius:0 !important; -moz-border-radius:0 !important; border-radius:0 !important;}\n.form-control{-webkit-border-radius:0 !important; -moz-border-radius:0 !important; border-radius:0 !important;}\n\n.btn.btn-primary{background-color:#00acec; border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);}\n.blue-background{background-color:#00acec !important;}\n.box{position:relative; margin-bottom:20px;}\n.box .box-header{font-size:21px; font-weight:200; line-height:30px; padding:10px 15px;}\n.box .box-header .title{float:left; color:#fff;}\n.box .box-header .actions{float:right; margin-top:-3px;}\n.box .box-header .actions .btn-link{color:#fff; text-decoration:none; text-shadow:none;}\n.box .box-content{display:block; padding:10px; border:1px solid #ddd; background:#fff; -webkit-box-shadow:0 1px 3px rgba(0,0,0,.055); -moz-box-shadow:0 1px 3px rgba(0,0,0,.055); box-shadow:0 1px 3px rgba(0,0,0,.055);}\n/*表单验证*/\ninput.error, select.error{border:1px solid #b94a48; -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075); -moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075); box-shadow:inset 0 1px 1px rgba(0,0,0,.075);}\nspan.error{display:block; margin-top:5px; color:#b94a48;}\n\n/*新版examples*/\n.examples-container{padding-top:50px; padding-bottom:30px;}\n.examples-container .example-title{ margin:18px 15px 16px; padding-bottom:4px; border-bottom:1px solid #ccc; font-size:20px; line-height:28px;}\n.examples-container ul{list-style:none; padding:0;}\n.examples-container li{float:left; width:370px; margin-left:15px;}\n.examples-container li .thumbnail{margin-bottom:10px;}\n.examples-container li h4{margin-bottom:20px; text-align:center; font-size:14px;}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') { throw new Error('Bootstrap\\'s JavaScript requires jQuery') }\n\n/* ========================================================================\n * Bootstrap: transition.js v3.1.1\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      'WebkitTransition' : 'webkitTransitionEnd',\n      'MozTransition'    : 'transitionend',\n      'OTransition'      : 'oTransitionEnd otransitionend',\n      'transition'       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false, $el = this\n    $(this).one($.support.transition.end, function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.1.1\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.hasClass('alert') ? $this : $this.parent()\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      $parent.trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one($.support.transition.end, removeElement)\n        .emulateTransitionEnd(150) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.alert\n\n  $.fn.alert = function (option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.1.1\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (!data.resetText) $el.data('resetText', $el[val]())\n\n    $el[val](data[state] || this.options[state])\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  var old = $.fn.button\n\n  $.fn.button = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {\n    var $btn = $(e.target)\n    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n    $btn.button('toggle')\n    e.preventDefault()\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.1.1\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      =\n    this.sliding     =\n    this.interval    =\n    this.$active     =\n    this.$items      = null\n\n    this.options.pause == 'hover' && this.$element\n      .on('mouseenter', $.proxy(this.pause, this))\n      .on('mouseleave', $.proxy(this.cycle, this))\n  }\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true\n  }\n\n  Carousel.prototype.cycle =  function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getActiveIndex = function () {\n    this.$active = this.$element.find('.item.active')\n    this.$items  = this.$active.parent().children()\n\n    return this.$items.index(this.$active)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getActiveIndex()\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) })\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || $active[type]()\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var fallback  = type == 'next' ? 'first' : 'last'\n    var that      = this\n\n    if (!$next.length) {\n      if (!this.options.wrap) return\n      $next = this.$element.find('.item')[fallback]()\n    }\n\n    if ($next.hasClass('active')) return this.sliding = false\n\n    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n    this.$element.trigger(e)\n    if (e.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      this.$element.one('slid.bs.carousel', function () {\n        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n        $nextIndicator && $nextIndicator.addClass('active')\n      })\n    }\n\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one($.support.transition.end, function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)\n        })\n        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger('slid.bs.carousel')\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.carousel\n\n  $.fn.carousel = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n    var $this   = $(this), href\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    $target.carousel(options)\n\n    if (slideIndex = $this.attr('data-slide-to')) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  })\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      $carousel.carousel($carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.1.1\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.transitioning = null\n\n    if (this.options.parent) this.$parent = $(this.options.parent)\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n    if (actives && actives.length) {\n      var hasData = actives.data('bs.collapse')\n      if (hasData && hasData.transitioning) return\n      actives.collapse('hide')\n      hasData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')\n      [dimension](0)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')\n        [dimension]('auto')\n      this.transitioning = 0\n      this.$element.trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one($.support.transition.end, $.proxy(complete, this))\n      .emulateTransitionEnd(350)\n      [dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element\n      [dimension](this.$element[dimension]())\n      [0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse')\n      .removeClass('in')\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .trigger('hidden.bs.collapse')\n        .removeClass('collapsing')\n        .addClass('collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one($.support.transition.end, $.proxy(complete, this))\n      .emulateTransitionEnd(350)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.collapse\n\n  $.fn.collapse = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && option == 'show') option = !option\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {\n    var $this   = $(this), href\n    var target  = $this.attr('data-target')\n        || e.preventDefault()\n        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n    var $target = $(target)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n    var parent  = $this.attr('data-parent')\n    var $parent = parent && $(parent)\n\n    if (!data || !data.transitioning) {\n      if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n    }\n\n    $target.collapse(option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.1.1\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=dropdown]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n\n      $this.focus()\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27)/.test(e.keyCode)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive || (isActive && e.keyCode == 27)) {\n      if (e.which == 27) $parent.find(toggle).focus()\n      return $this.click()\n    }\n\n    var desc = ' li:not(.divider):visible a'\n    var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index($items.filter(':focus'))\n\n    if (e.keyCode == 38 && index > 0)                 index--                        // up\n    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).focus()\n  }\n\n  function clearMenus(e) {\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $parent = getParent($(this))\n      var relatedTarget = { relatedTarget: this }\n      if (!$parent.hasClass('open')) return\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n      if (e.isDefaultPrevented()) return\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown = function (option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.1.1\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options   = options\n    this.$element  = $(element)\n    this.$backdrop =\n    this.isShown   = null\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.escape()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(document.body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$element.find('.modal-dialog') // wait for modal to slide in\n          .one($.support.transition.end, function () {\n            that.$element.focus().trigger(e)\n          })\n          .emulateTransitionEnd(300) :\n        that.$element.focus().trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one($.support.transition.end, $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(300) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.focus()\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keyup.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.removeBackdrop()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(document.body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus.call(this.$element[0])\n          : this.hide.call(this)\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one($.support.transition.end, callback)\n          .emulateTransitionEnd(150) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one($.support.transition.end, callback)\n          .emulateTransitionEnd(150) :\n        callback()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.modal\n\n  $.fn.modal = function (option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) //strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target\n      .modal(option, this)\n      .one('hide', function () {\n        $this.is(':visible') && $this.focus()\n      })\n  })\n\n  $(document)\n    .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.1.1\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       =\n    this.options    =\n    this.enabled    =\n    this.timeout    =\n    this.hoverState =\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled  = true\n    this.type     = type\n    this.$element = $(element)\n    this.options  = this.getOptions(options)\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n      var that = this;\n\n      var $tip = this.tip()\n\n      this.setContent()\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var $parent = this.$element.parent()\n\n        var orgPlacement = placement\n        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop\n        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()\n        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left\n\n        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :\n                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :\n                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :\n                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n      this.hoverState = null\n\n      var complete = function() {\n        that.$element.trigger('shown.bs.' + that.type)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one($.support.transition.end, complete)\n          .emulateTransitionEnd(150) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var replace\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      replace = true\n      offset.top = offset.top + height - actualHeight\n    }\n\n    if (/bottom|top/.test(placement)) {\n      var delta = 0\n\n      if (offset.left < 0) {\n        delta       = offset.left * -2\n        offset.left = 0\n\n        $tip.offset(offset)\n\n        actualWidth  = $tip[0].offsetWidth\n        actualHeight = $tip[0].offsetHeight\n      }\n\n      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n    } else {\n      this.replaceArrow(actualHeight - height, actualHeight, 'top')\n    }\n\n    if (replace) $tip.offset(offset)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\n    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function () {\n    var that = this\n    var $tip = this.tip()\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element.trigger('hidden.bs.' + that.type)\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && this.$tip.hasClass('fade') ?\n      $tip\n        .one($.support.transition.end, complete)\n        .emulateTransitionEnd(150) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function () {\n    var el = this.$element[0]\n    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n      width: el.offsetWidth,\n      height: el.offsetHeight\n    }, this.$element.offset())\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.tip = function () {\n    return this.$tip = this.$tip || $(this.options.template)\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')\n  }\n\n  Tooltip.prototype.validate = function () {\n    if (!this.$element[0].parentNode) {\n      this.hide()\n      this.$element = null\n      this.options  = null\n    }\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    clearTimeout(this.timeout)\n    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && option == 'destroy') return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.1.1\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content')[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return this.$arrow = this.$arrow || this.tip().find('.arrow')\n  }\n\n  Popover.prototype.tip = function () {\n    if (!this.$tip) this.$tip = $(this.options.template)\n    return this.$tip\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  var old = $.fn.popover\n\n  $.fn.popover = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && option == 'destroy') return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.1.1\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    var href\n    var process  = $.proxy(this.process, this)\n\n    this.$element       = $(element).is('body') ? $(window) : $(element)\n    this.$body          = $('body')\n    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target\n      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n      || '') + ' .nav li > a'\n    this.offsets        = $([])\n    this.targets        = $([])\n    this.activeTarget   = null\n\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n    this.offsets = $([])\n    this.targets = $([])\n\n    var self     = this\n    var $targets = this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        self.offsets.push(this[0])\n        self.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n    var maxScroll    = scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets.last()[0]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop <= offsets[0]) {\n      return activeTarget != (i = targets[0]) && this.activate(i)\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n        && this.activate( targets[i] )\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n\n    var selector = this.selector +\n        '[data-target=\"' + target + '\"],' +\n        this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      $spy.scrollspy($spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.1.1\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var previous = $ul.find('.active:last a')[0]\n    var e        = $.Event('show.bs.tab', {\n      relatedTarget: previous\n    })\n\n    $this.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.parent('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: previous\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && $active.hasClass('fade')\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n\n      element.addClass('active')\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu')) {\n        element.closest('li.dropdown').addClass('active')\n      }\n\n      callback && callback()\n    }\n\n    transition ?\n      $active\n        .one($.support.transition.end, next)\n        .emulateTransitionEnd(150) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  var old = $.fn.tab\n\n  $.fn.tab = function ( option ) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n    e.preventDefault()\n    $(this).tab('show')\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.1.1\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n    this.$window = $(window)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      =\n    this.unpin        =\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.RESET = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$window.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var scrollHeight = $(document).height()\n    var scrollTop    = this.$window.scrollTop()\n    var position     = this.$element.offset()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n\n    if (this.affixed == 'top') position.top += scrollTop\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :\n                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :\n                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false\n\n    if (this.affixed === affix) return\n    if (this.unpin) this.$element.css('top', '')\n\n    var affixType = 'affix' + (affix ? '-' + affix : '')\n    var e         = $.Event(affixType + '.bs.affix')\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    this.affixed = affix\n    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n    this.$element\n      .removeClass(Affix.RESET)\n      .addClass(affixType)\n      .trigger($.Event(affixType.replace('affix', 'affixed')))\n\n    if (affix == 'bottom') {\n      this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.affix\n\n  $.fn.affix = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop)    data.offset.top    = data.offsetTop\n\n      $spy.affix(data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/bootstrap-3.1.1/js/html5shiv.js",
    "content": "/*\n HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n*/\n(function(l,f){function m(){var a=e.elements;return\"string\"==typeof a?a.split(\" \"):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();\na.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+m().join().replace(/[\\w\\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c(\"'+a+'\")'})+\");return n}\")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement(\"p\");d=d.getElementsByTagName(\"head\")[0]||d.documentElement;c.innerHTML=\"x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>\";\nc=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o=\"_html5shiv\",h=0,n={},g;(function(){try{var a=f.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\";j=\"hidden\"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement(\"a\");var c=f.createDocumentFragment();b=\"undefined\"==typeof c.cloneNode||\n\"undefined\"==typeof c.createDocumentFragment||\"undefined\"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||\"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video\",version:\"3.7.0\",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:\"default\",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);\nif(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);"
  },
  {
    "path": "paas-ce/paas/login/static/assets/gt.js",
    "content": "window.initGeetest=function(e){var t={};function s(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,s),o.l=!0,o.exports}return s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)s.d(n,o,function(t){return e[t]}.bind(null,o));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e[\"default\"]}:function(){return e};return s.d(t,\"a\",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p=\"\",s(s.s=4)}([function(e,t,s){\"use strict\";e.exports={NETWORK_ERROR:\"Network Error\",PREFIX:\"geetest_\",INIT:\"init\",READY:\"ready\",SUCCESS:\"success\",START_COMPUTE:\"start_compute\",START_DETECT:\"start_detect\",BIND:\"bind\",CLICK_ERROR:\"click_error\",BACK:\"back\",CLOSE:\"close\",COMPUTE_2:\"compute_2\",COMPUTE_1:\"compute_1\",DETECT:\"detect\",WAIT_COMPUTE:\"wait_compute\",RADAR_SUCCESS:\"radar_success\",RADAR_ERROR:\"radar_error\",RADAR_NEXT:\"radar_click\",RADAR_NEXT_READY:\"radar_click_ready\",RADAR_NEXT_HIDE:\"radar_click_hide\",ERROR:\"error\",NOT_COMPATIBLE:\"not_compatible\",RESET:\"reset\",FLOAT:\"float\",POPUP:\"popup\",CUSTOM:\"custom\",csstext_wind:'.geetest_holder.geetest_wind{position:relative;width:260px;min-width:260px;height:44px}.geetest_holder.geetest_wind *{font-family:\"PingFangSC-Regular\", \"Open Sans\", Arial, \"Hiragino Sans GB\", \"Microsoft YaHei\", \"STHeiti\", \"WenQuanYi Micro Hei\", SimSun, sans-serif;box-sizing:border-box}.geetest_holder.geetest_wind .geetest_btn{position:relative;width:100%;height:100%}.geetest_holder.geetest_wind .geetest_ghost_success{position:absolute;_position:fixed;right:0;top:0;height:100%;width:0;overflow:hidden;-moz-transition:all .3s linear;-o-transition:all .3s linear;-webkit-transition:all .3s linear;transition:all .3s linear}.geetest_holder.geetest_wind .geetest_radar_btn,.geetest_holder.geetest_wind .geetest_success_btn{position:absolute;top:0;border:1px solid #ccc;border-radius:2px;width:100%;min-width:160px;height:100%;cursor:pointer;opacity:1}.geetest_holder.geetest_wind .geetest_success_btn{cursor:default;border-color:#26C267}.geetest_holder.geetest_wind .geetest_radar_btn{left:0;background-image:linear-gradient(180deg, #ffffff 0%,#f3f3f3 100%);background-color:#ffffff\\\\9}.geetest_holder.geetest_wind .geetest_radar_btn:hover{background-image:linear-gradient(0deg, #ffffff 0%,#f3f3f3 100%);background-color:#ffffff\\\\9}.geetest_holder.geetest_wind .geetest_offline{display:none;position:absolute;right:0;top:0;border:4px solid #FE984C;border-bottom-color:transparent;border-left-color:transparent;width:0;height:0;_border-width:0;_background:#FE984C;_height:6px;_width:6px;font-size:0}.geetest_holder.geetest_wind.geetest_fallback .geetest_offline{display:block}.geetest_holder.geetest_wind .geetest_success_btn{position:absolute;right:0;*right:-2px;top:0;background:#EEFFF5;-moz-transition:width ease;-o-transition:width ease;-webkit-transition:width ease;transition:width ease}.geetest_holder.geetest_wind .geetest_success_btn:hover{background:#EEFFF5}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box{position:absolute;top:9px;left:7px;border-radius:50%;width:24px;height:24px}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_show{position:relative;left:0;top:0;width:24px;height:24px;background-color:#EEFFF5;display:none \\\\9}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_show .geetest_success_pie{position:absolute;left:50%;top:0;border:2px solid #80D6AC;border-left:none;border-radius:0 100% 100% 0 / 0 50% 50% 0;width:50%;height:100%;-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg);-moz-transform-origin:0 50%;-ms-transform-origin:0 50%;-webkit-transform-origin:0 50%;transform-origin:0 50%}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_show .geetest_success_filter{position:absolute;left:0;top:0;border:2px solid #80D6AC;border-right:none;border-radius:100% 0 0 100% / 50% 0 0 50%;width:50%;height:100%;-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg);-moz-transform-origin:100% 50%;-ms-transform-origin:100% 50%;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_show .geetest_success_mask{border:none;border-radius:0;background-color:#EEFFF5;position:absolute;left:50%;top:0;width:50%;height:100%;-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg);-moz-transform-origin:0 50%;-ms-transform-origin:0 50%;-webkit-transform-origin:0 50%;transform-origin:0 50%}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_correct{position:absolute;right:-4px;top:-4px;border-radius:50%;width:28px;height:28px;overflow:hidden;-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_correct .geetest_success_icon{position:absolute;top:6px;right:6px;width:18px;height:18px;-moz-transform:translate(-28px, 28px);-ms-transform:translate(-28px, 28px);-webkit-transform:translate(-28px, 28px);transform:translate(-28px, 28px)}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_correct .geetest_success_icon::after{content:\\'\\';width:2px;height:7px;background:#26C267;position:absolute;transform:rotate(-45deg);left:3px;top:8px;border-radius:1px}.geetest_holder.geetest_wind .geetest_success_btn .geetest_success_box .geetest_success_correct .geetest_success_icon::before{transform:rotate(45deg);content:\"\";width:2px;height:15px;background:#26C267;right:6px;top:1px;position:absolute;border-radius:1px}.geetest_holder.geetest_wind .geetest_radar{position:absolute;margin:6px;width:30px;height:30px;-moz-transition:all .5s ease;-o-transition:all .5s ease;-webkit-transition:all .5s ease;transition:all .5s ease}.geetest_holder.geetest_wind .geetest_radar .geetest_sector,.geetest_holder.geetest_wind .geetest_radar .geetest_ring,.geetest_holder.geetest_wind .geetest_radar .geetest_dot,.geetest_holder.geetest_wind .geetest_radar .geetest_cross,.geetest_holder.geetest_wind .geetest_radar .geetest_scan,.geetest_holder.geetest_wind .geetest_radar .geetest_status{position:absolute;border-radius:50%;width:100%;height:100%;-moz-transform:scale(0.4);-ms-transform:scale(0.4);-webkit-transform:scale(0.4);transform:scale(0.4);-moz-transition:all .5s ease;-o-transition:all .5s ease;-webkit-transition:all .5s ease;transition:all .5s ease}.geetest_holder.geetest_wind .geetest_radar .geetest_sector{box-shadow:inset 0 0 0 1px #3873ff;background-color:#80A6FC;background-image:linear-gradient(115deg, rgba(0,0,0,0) 50%,#c6d5f8 50%),linear-gradient(65deg, #c6d5f8 50%,rgba(0,0,0,0) 50%);opacity:0;-moz-transition:all ease;-o-transition:all ease;-webkit-transition:all ease;transition:all ease}.geetest_holder.geetest_wind .geetest_radar .geetest_ring{box-shadow:inset 0 0 0 1px #3873ff;background:#C6D5F8}.geetest_holder.geetest_wind .geetest_radar .geetest_cross{overflow:hidden}.geetest_holder.geetest_wind .geetest_radar .geetest_cross .geetest_v,.geetest_holder.geetest_wind .geetest_radar .geetest_cross .geetest_h{position:absolute;left:50%;top:50%;background:#F8F8F8;-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.geetest_holder.geetest_wind .geetest_radar .geetest_cross .geetest_v{width:100%;height:4px}.geetest_holder.geetest_wind .geetest_radar .geetest_cross .geetest_h{width:4px;height:100%}.geetest_holder.geetest_wind .geetest_radar .geetest_scan{overflow:hidden}.geetest_holder.geetest_wind .geetest_radar .geetest_scan .geetest_h{position:absolute;top:-6%;width:100%;height:6%;background:#aedbfb;opacity:0;box-shadow:0 0 1px #aedbfb;-moz-transition:opacity .5s ease;-o-transition:opacity .5s ease;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.geetest_holder.geetest_wind .geetest_radar .geetest_status{opacity:0;background:#DD725E;-moz-transform:scale(0);-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0)}.geetest_holder.geetest_wind .geetest_radar .geetest_status .geetest_bg{position:absolute;top:40%;left:0;border-radius:50%;height:20%;width:0;background:#eee;-moz-transition:all 1s ease;-o-transition:all 1s ease;-webkit-transition:all 1s ease;transition:all 1s ease}.geetest_holder.geetest_wind .geetest_radar .geetest_status .geetest_hook{position:absolute;border-radius:50%;width:100%;height:100%;background-size:cover}.geetest_holder.geetest_wind .geetest_radar_tip,.geetest_holder.geetest_wind .geetest_success_radar_tip{position:absolute;top:0;left:0;box-sizing:border-box;padding:0 46px 0 46px;height:42px;width:100%;line-height:42px;font-size:14px;color:#666;white-space:nowrap;text-align:left;-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.geetest_holder.geetest_wind .geetest_radar_tip .geetest_reset_tip_content,.geetest_holder.geetest_wind .geetest_success_radar_tip .geetest_reset_tip_content{margin-left:5px;color:#005aff;cursor:pointer;display:none}.geetest_holder.geetest_wind .geetest_radar_tip .geetest_radar_error_code,.geetest_holder.geetest_wind .geetest_success_radar_tip .geetest_radar_error_code{display:none}.geetest_holder.geetest_wind .geetest_radar_tip.geetest_multi_line{white-space:normal;word-break:break-all;line-height:20px}.geetest_holder.geetest_wind .geetest_radar_tip.geetest_reversal{padding:0 46px 0 46px;direction:rtl;text-align:right}.geetest_holder.geetest_wind .geetest_success_radar_tip{color:#18A452}.geetest_holder.geetest_wind .geetest_success_radar_tip.geetest_reversal_success{padding:0 46px 0 46px;direction:rtl;text-align:right}.geetest_holder.geetest_wind .geetest_success_radar_tip_timeinfo{margin-left:10px;font-size:12px}.geetest_holder.geetest_wind .geetest_logo,.geetest_holder.geetest_wind .geetest_success_logo{position:absolute;right:12px;width:20px;height:20px;top:11px}.geetest_holder.geetest_wind .geetest_wait{top:0;position:absolute;margin:17px 12px;font-size:0;opacity:0;-moz-transition:opacity .5s ease;-o-transition:opacity .5s ease;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.geetest_holder.geetest_wind .geetest_wait .geetest_wait_dot{width:5px;height:5px;background:#b1babe;border-radius:50%;display:inline-block;margin:2px;vertical-align:top}.geetest_holder.geetest_wind.geetest_ready .geetest_slide,.geetest_holder.geetest_wind.geetest_reset .geetest_slide,.geetest_holder.geetest_wind.geetest_radar_click_hide .geetest_slide,.geetest_holder.geetest_wind.geetest_slide_click_hide .geetest_slide{display:none}.geetest_holder.geetest_wind.geetest_ready .geetest_radar .geetest_dot,.geetest_holder.geetest_wind.geetest_reset .geetest_radar .geetest_dot,.geetest_holder.geetest_wind.geetest_radar_click_hide .geetest_radar .geetest_dot,.geetest_holder.geetest_wind.geetest_slide_click_hide .geetest_radar .geetest_dot{background:#AFBABF}.geetest_holder.geetest_wind.geetest_radar_click_hide .geetest_radar .geetest_dot,.geetest_holder.geetest_wind.geetest_slide_click_hide .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_ready .geetest_slide{display:none}.geetest_holder.geetest_wind.geetest_ready .geetest_radar .geetest_dot{background:#AFBABF}.geetest_holder.geetest_wind.geetest_start_detect .geetest_radar .geetest_ring{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.geetest_holder.geetest_wind.geetest_start_detect .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_detect .geetest_radar .geetest_sector{opacity:1}.geetest_holder.geetest_wind.geetest_detect .geetest_radar .geetest_ring{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.geetest_holder.geetest_wind.geetest_detect .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_wait_compute .geetest_radar .geetest_ring{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);-moz-animation:geetest_wait_compute 0.8s linear infinite both;-webkit-animation:geetest_wait_compute 0.8s linear infinite both;animation:geetest_wait_compute 0.8s linear infinite both}@keyframes geetest_wait_compute{60%{-moz-transform:scale(0.75);-ms-transform:scale(0.75);-webkit-transform:scale(0.75);transform:scale(0.75)}}@-webkit-keyframes geetest_wait_compute{60%{-moz-transform:scale(0.75);-ms-transform:scale(0.75);-webkit-transform:scale(0.75);transform:scale(0.75)}}.geetest_holder.geetest_wind.geetest_wait_compute .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_start_compute .geetest_radar .geetest_ring{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.geetest_holder.geetest_wind.geetest_start_compute .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_compute_1 .geetest_radar .geetest_ring{box-shadow:inset 0 0 0 2px #3873ff;-moz-transform:scale(0.4);-ms-transform:scale(0.4);-webkit-transform:scale(0.4);transform:scale(0.4)}.geetest_holder.geetest_wind.geetest_compute_1 .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_compute_2 .geetest_radar .geetest_ring{box-shadow:inset 0 0 0 2px #3873ff;-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background:#F8F8F8}.geetest_holder.geetest_wind.geetest_compute_2 .geetest_radar .geetest_cross{width:100%;height:100%;-moz-transform:scale(1.1) rotate(90deg);-ms-transform:scale(1.1) rotate(90deg);-webkit-transform:scale(1.1) rotate(90deg);transform:scale(1.1) rotate(90deg)}.geetest_holder.geetest_wind.geetest_compute_2 .geetest_radar .geetest_dot{background:#3873ff}.geetest_holder.geetest_wind.geetest_compute_2 .geetest_radar .geetest_scan{-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.geetest_holder.geetest_wind.geetest_compute_2 .geetest_radar .geetest_scan .geetest_h{opacity:1;-moz-animation:geetest_scan 1.5s linear infinite both;-webkit-animation:geetest_scan 1.5s linear infinite both;animation:geetest_scan 1.5s linear infinite both}@keyframes geetest_scan{50%{top:100%}}@-webkit-keyframes geetest_scan{50%{top:100%}}.geetest_holder.geetest_wind.geetest_radar_success .geetest_radar_btn{cursor:default}.geetest_holder.geetest_wind.geetest_radar_success .geetest_radar .geetest_cross{display:none}.geetest_holder.geetest_wind.geetest_radar_success .geetest_ring{opacity:0}.geetest_holder.geetest_wind .geetest_ghost_success.geetest_success_animate{width:100%}.geetest_holder.geetest_wind .geetest_ghost_success.geetest_success_animate .geetest_success_icon{-moz-animation:geetest_success_correct 0.7s ease both;-webkit-animation:geetest_success_correct 0.7s ease both;animation:geetest_success_correct 0.7s ease both}@keyframes geetest_success_correct{0%{-moz-transform:translate(-28px, 28px);-ms-transform:translate(-28px, 28px);-webkit-transform:translate(-28px, 28px);transform:translate(-28px, 28px)}30%{-moz-transform:translate(-28px, 28px);-ms-transform:translate(-28px, 28px);-webkit-transform:translate(-28px, 28px);transform:translate(-28px, 28px)}90%{-moz-transform:translate(3px, -2px);-ms-transform:translate(3px, -2px);-webkit-transform:translate(3px, -2px);transform:translate(3px, -2px)}100%{-moz-transform:translate(1px, 0);-ms-transform:translate(1px, 0);-webkit-transform:translate(1px, 0);transform:translate(1px, 0)}}@-webkit-keyframes geetest_success_correct{0%{-moz-transform:translate(-28px, 28px);-ms-transform:translate(-28px, 28px);-webkit-transform:translate(-28px, 28px);transform:translate(-28px, 28px)}30%{-moz-transform:translate(-28px, 28px);-ms-transform:translate(-28px, 28px);-webkit-transform:translate(-28px, 28px);transform:translate(-28px, 28px)}90%{-moz-transform:translate(3px, -2px);-ms-transform:translate(3px, -2px);-webkit-transform:translate(3px, -2px);transform:translate(3px, -2px)}100%{-moz-transform:translate(1px, 0);-ms-transform:translate(1px, 0);-webkit-transform:translate(1px, 0);transform:translate(1px, 0)}}.geetest_holder.geetest_wind .geetest_ghost_success.geetest_success_animate .geetest_success_pie{-moz-animation:geetest_success_pie 0.7s ease both;-webkit-animation:geetest_success_pie 0.7s ease both;animation:geetest_success_pie 0.7s ease both}@keyframes geetest_success_pie{25%{-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg)}100%{-moz-transform:rotate(-275deg);-ms-transform:rotate(-275deg);-webkit-transform:rotate(-275deg);transform:rotate(-275deg)}}@-webkit-keyframes geetest_success_pie{25%{-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg)}100%{-moz-transform:rotate(-275deg);-ms-transform:rotate(-275deg);-webkit-transform:rotate(-275deg);transform:rotate(-275deg)}}.geetest_holder.geetest_wind .geetest_ghost_success.geetest_success_animate .geetest_success_mask{-moz-animation:geetest_success_mask 0.7s linear both;-webkit-animation:geetest_success_mask 0.7s linear both;animation:geetest_success_mask 0.7s linear both}@keyframes geetest_success_mask{50.9%{opacity:1}51%{opacity:0}100%{opacity:0}}@-webkit-keyframes geetest_success_mask{50.9%{opacity:1}51%{opacity:0}100%{opacity:0}}.geetest_holder.geetest_wind .geetest_ghost_success.geetest_success_animate .geetest_success_filter{-moz-animation:geetest_success_filter 0.7s linear both;-webkit-animation:geetest_success_filter 0.7s linear both;animation:geetest_success_filter 0.7s linear both}@keyframes geetest_success_filter{50.9%{opacity:0}51%{opacity:1}100%{opacity:1}}@-webkit-keyframes geetest_success_filter{50.9%{opacity:0}51%{opacity:1}100%{opacity:1}}.geetest_holder.geetest_wind.geetest_radar_error .geetest_radar_btn{border-color:#ccc;background:#eee;cursor:default}.geetest_holder.geetest_wind.geetest_radar_error .geetest_radar .geetest_status{-moz-transform:scale(0.6);-ms-transform:scale(0.6);-webkit-transform:scale(0.6);transform:scale(0.6);opacity:1}.geetest_holder.geetest_wind.geetest_radar_error .geetest_radar .geetest_status .geetest_bg{width:100%}.geetest_holder.geetest_wind.geetest_radar_error .geetest_radar_tip{color:#666}.geetest_holder.geetest_wind.geetest_radar_error .geetest_radar_tip .geetest_reset_tip_content{display:inline}.geetest_holder.geetest_wind.geetest_radar_error .geetest_radar_tip .geetest_radar_error_code{display:block;font-size:12px;position:absolute;bottom:0;right:1px;color:#c3c3c3;line-height:1}.geetest_holder.geetest_wind.geetest_radar_click .geetest_radar_btn{background:#eaeaea}.geetest_holder.geetest_wind.geetest_radar_click .geetest_dot{background:#AFBABF}.geetest_holder.geetest_wind.geetest_radar_click .geetest_radar_tip{opacity:.4}.geetest_holder.geetest_wind.geetest_radar_click_ready .geetest_radar_btn{background:#eaeaea;cursor:default}.geetest_holder.geetest_wind.geetest_radar_click_ready .geetest_slide{display:none}.geetest_holder.geetest_wind.geetest_radar_click_ready .geetest_radar{opacity:0}.geetest_holder.geetest_wind.geetest_radar_click_ready .geetest_cross{display:none}.geetest_holder.geetest_wind.geetest_radar_click_ready .geetest_radar_tip{opacity:.4}.geetest_holder.geetest_wind.geetest_radar_click_ready .geetest_wait{opacity:1}.geetest_holder.geetest_wind.geetest_radar_click_hide .geetest_cross{display:none}.geetest_holder.geetest_wind .geetest_ie_radar{display:none}.geetest_holder.geetest_wind .geetest_slide{display:none}.geetest_holder.geetest_wind.geetest_ie .geetest_radar{display:none}.geetest_holder.geetest_wind.geetest_ie .geetest_ie_radar{display:block;position:absolute;top:16px;left:16px;width:12px;height:12px;border-radius:50%;background-color:#AFBABF;font-size:0}.geetest_holder.geetest_wind.geetest_ie.geetest_not_compatible .geetest_ie_radar,.geetest_holder.geetest_wind.geetest_ie.geetest_radar_success .geetest_ie_radar,.geetest_holder.geetest_wind.geetest_ie.geetest_radar_error .geetest_ie_radar{top:14px;left:14px;width:16px;height:16px;background-color:#fff}.geetest_holder.geetest_wind.geetest_ie .geetest_wait{visibility:hidden}.geetest_holder.geetest_wind.geetest_ie.geetest_radar_click_ready .geetest_wait,.geetest_holder.geetest_wind.geetest_ie.geetest_slide_click_ready .geetest_wait{visibility:visible}.geetest_holder.geetest_wind.geetest_ie.geetest_radar_click_ready .geetest_ie_radar,.geetest_holder.geetest_wind.geetest_ie.geetest_slide_click_ready .geetest_ie_radar{display:none}.geetest_holder.geetest_wind.geetest_ie .geetest_success_icon{transform:none !important}.geetest_wind.geetest_fullpage_click{position:absolute;display:none;opacity:0;z-index:2147483647;-moz-transition:opacity .3s ease;-o-transition:opacity .3s ease;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.geetest_wind.geetest_fullpage_click .geetest_fullpage_ghost{position:fixed;height:100%;width:100%;left:0;top:0}.geetest_wind.geetest_fullpage_click .geetest_fullpage_click_wrap{position:absolute}.geetest_wind.geetest_fullpage_click .geetest_fullpage_click_wrap.geetest_shake{-moz-animation:geetest_shake 0.2s linear infinite both;-webkit-animation:geetest_shake 0.2s linear infinite both;animation:geetest_shake 0.2s linear infinite both}@keyframes geetest_shake{25%{margin-left:-6px}75%{margin-left:6px}100%{margin-left:0}}@-webkit-keyframes geetest_shake{25%{margin-left:-6px}75%{margin-left:6px}100%{margin-left:0}}.geetest_wind.geetest_fullpage_click .geetest_fullpage_click_box{border-radius:2px}.geetest_wind.geetest_fullpage_click.geetest_float{font-size:0}.geetest_wind.geetest_fullpage_click.geetest_float .geetest_fullpage_pointer{margin-left:-15px}.geetest_wind.geetest_fullpage_click.geetest_float .geetest_fullpage_pointer .geetest_fullpage_pointer_out{position:absolute;border:8px solid #cccccc;border-color:transparent #cccccc transparent transparent;_display:none}.geetest_wind.geetest_fullpage_click.geetest_float .geetest_fullpage_pointer .geetest_fullpage_pointer_in{position:absolute;border:7px solid #fff;margin:1px 0 1px 2px;border-color:transparent #fff transparent transparent;_display:none}.geetest_wind.geetest_fullpage_click.geetest_float .geetest_fullpage_click_box{position:absolute;box-shadow:0 0 10px #cccccc;border:1px solid #cccccc;left:0;background:white;margin:-10px 5px 5px 0}.geetest_wind.geetest_fullpage_click.geetest_float.geetest_slide .geetest_fullpage_click_box{max-width:320px}.geetest_wind.geetest_fullpage_click.geetest_popup{width:100%;height:100%;left:0;top:0}.geetest_wind.geetest_fullpage_click.geetest_popup .geetest_fullpage_ghost{background:rgba(0,0,0,0.5);background:#AAAAAA \\\\9}.geetest_wind.geetest_fullpage_click.geetest_popup .geetest_fullpage_click_wrap{position:fixed;top:50%;left:50%;max-width:356px;min-width:260px;width:80%;width:356px \\\\9;margin-left:-178px \\\\9;margin-top:-245px \\\\9;_margin-left:0;_margin-top:0;-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.geetest_wind.geetest_goto{position:fixed;display:none;opacity:0;width:100%;height:100%;left:0;top:0;z-index:2147483647;-moz-transition:opacity .3s ease;-o-transition:opacity .3s ease;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.geetest_wind.geetest_goto .geetest_goto_ghost{position:fixed;height:100%;width:100%;left:0;top:0;background:rgba(0,0,0,0.5)}.geetest_wind.geetest_goto .geetest_goto_wrap{position:fixed;top:50%;left:50%;width:95%;max-width:300px;border-radius:2px;overflow:hidden;font-size:16px;-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.geetest_wind.geetest_goto .geetest_goto_wrap .geetest_goto_content{position:relative;background-color:white;box-sizing:border-box;height:0;width:100%;padding-bottom:41.33%;border-bottom:1px solid #e8e8e8;color:#383838;text-align:center}.geetest_wind.geetest_goto .geetest_goto_wrap .geetest_goto_content .geetest_goto_content_tip{position:absolute;width:80%;line-height:16px;top:50%;left:50%;-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.geetest_wind.geetest_goto .geetest_goto_wrap a.geetest_goto_confirm,.geetest_wind.geetest_goto .geetest_goto_wrap .geetest_goto_cancel{box-sizing:border-box;width:50%;display:inline-block;vertical-align:top;background-color:#f6f6f6;height:46px;line-height:46px;text-align:center}.geetest_wind.geetest_goto .geetest_goto_wrap a.geetest_goto_confirm{color:#0169eb;text-decoration:none}.geetest_wind.geetest_goto .geetest_goto_wrap .geetest_goto_cancel{color:#383838;border-right:1px solid #e8e8e8}.geetest_wind.geetest_panel{display:none;opacity:0;position:fixed;z-index:2147483647;left:0;top:0;height:100%;width:100%;-moz-transition:opacity .5s;-o-transition:opacity .5s;-webkit-transition:opacity .5s;transition:opacity .5s}.geetest_wind.geetest_panel *{font-family:\"PingFangSC-Regular\", \"Open Sans\", Arial, \"Hiragino Sans GB\", \"Microsoft YaHei\", \"STHeiti\", \"WenQuanYi Micro Hei\", SimSun, sans-serif}.geetest_wind.geetest_panel .geetest_panel_ghost{position:absolute;left:0;top:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);background-color:black;_width:2000px;_height:1000px}@media all and (orientation: portrait){.geetest_wind.geetest_panel .geetest_panel_ghost{font-family:\"portrait\"}}@media all and (orientation: landscape){.geetest_wind.geetest_panel .geetest_panel_ghost{font-family:\"landscape\"}}.geetest_wind.geetest_panel .geetest_panel_box{position:absolute;top:50%;left:50%;width:220px;height:150px;margin-left:-110px;margin-top:-70px;box-shadow:0 1px 8px rgba(128,128,128,0.3);border:1px solid #d1d1d1;border-radius:2px;overflow:hidden;background-color:white;-moz-transition:width .5s ease,height .5s ease;-o-transition:width .5s ease,height .5s ease;-webkit-transition:width .5s ease,height .5s ease;transition:width .5s ease,height .5s ease;-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);-moz-transform:translate3d(-50%, -50%, 0);-ms-transform:translate3d(-50%, -50%, 0);-webkit-transform:translate3d(-50%, -50%, 0);transform:translate3d(-50%, -50%, 0);_top:0;_left:0;_margin-left:0;_margin-top:0}.geetest_wind.geetest_panel .geetest_panel_box:last-child{margin-left:0 !important;margin-top:0 !important}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_offline{display:none;position:absolute;right:0;top:0;border:4px solid #FE984C;border-bottom-color:transparent;border-left-color:transparent;width:0;height:0;_border-width:0;_background:#FE984C;_height:6px;_width:6px;font-size:0}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error{width:100%;height:113px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_temp,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading .geetest_panel_loading_title,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading .geetest_panel_loading_content,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_title,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_title,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_content{text-align:center;font-size:14px;height:14px;line-height:14px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error{display:none}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading{padding:29px 0 0 0;height:84px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading .geetest_panel_loading_icon{margin:0 auto;width:32px;height:32px;background-size:contain}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading .geetest_panel_loading_title{margin:10px 0 0 0;color:#0088f6}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_loading .geetest_panel_loading_content{margin:8px 0 0 0;color:#595959}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success{padding:40px 0 0 0;height:73px;box-sizing:content-box}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box{margin:0 auto;width:24px;height:24px;position:relative}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box *{box-sizing:border-box}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_show{position:relative;left:0;top:0;width:24px;height:24px;display:none \\\\9}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_show .geetest_panel_success_pie{position:absolute;left:50%;top:0;border:2px solid #80D6AC;border-left:none;border-radius:0 100% 100% 0 / 0 50% 50% 0;width:50%;height:100%;-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg);-moz-transform-origin:0 50%;-ms-transform-origin:0 50%;-webkit-transform-origin:0 50%;transform-origin:0 50%}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_show .geetest_panel_success_filter{position:absolute;left:0;top:0;border:2px solid #80D6AC;border-right:none;border-radius:100% 0 0 100% / 50% 0 0 50%;width:50%;height:100%;-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg);-moz-transform-origin:100% 50%;-ms-transform-origin:100% 50%;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_show .geetest_panel_success_mask{border:none;border-radius:0;background-color:#ffffff;position:absolute;left:50%;top:0;width:50%;height:100%;-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-webkit-transform:rotate(25deg);transform:rotate(25deg);-moz-transform-origin:0 50%;-ms-transform-origin:0 50%;-webkit-transform-origin:0 50%;transform-origin:0 50%}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_correct{position:absolute;right:-4px;top:-4px;border-radius:50%;width:28px;height:28px;overflow:hidden;-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_correct .geetest_panel_success_icon{position:absolute;top:6px;right:6px;width:18px;height:18px;-moz-transform:translate(-28px, 28px);-ms-transform:translate(-28px, 28px);-webkit-transform:translate(-28px, 28px);transform:translate(-28px, 28px)}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_correct .geetest_panel_success_icon::after{content:\\'\\';width:2px;height:7px;background:#26C267;position:absolute;transform:rotate(-45deg);left:3px;top:8px;border-radius:1px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_box .geetest_panel_success_correct .geetest_panel_success_icon::before{transform:rotate(45deg);content:\"\";width:2px;height:15px;background:#26C267;right:6px;top:1px;position:absolute;border-radius:1px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_success .geetest_panel_success_title{margin:10px 0 0 0;color:#00aa00}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error{padding:18px 0 0 0;height:90px;position:relative}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_icon{margin:0 auto;width:18px;height:18px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_title{margin:10px 0 0 0;color:#595959}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_content{margin:14px auto 0;color:#FFFFFF;cursor:pointer;font-size:12px;text-align:center;width:202px;height:32px;background:#8A9DCA;text-decoration:none;border-radius:3px;line-height:32px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_content:hover{background-color:#A0B1D9}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_code{position:absolute;right:9px;top:9px;width:20px;height:17px;background:rgba(222,113,91,0.25);border-radius:2px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_error .geetest_panel_error_code .geetest_panel_error_code_text{transform:scale(0.8);font-size:12px;color:#DE715B;text-align:center}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_footer{border-top:0.5px solid #efefef;padding:12px 0 8px;width:100%;height:11px;text-align:center;margin-top:7px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_footer .geetest_panel_footer_logo,.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_footer .geetest_panel_footer_copyright{display:inline-block;vertical-align:top;line-height:11px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_footer .geetest_panel_footer_logo{margin-right:-6px;width:11px;height:11px;margin-left:10px}.geetest_wind.geetest_panel .geetest_panel_box .geetest_panel_footer .geetest_panel_footer_copyright{color:#9AA4B1;font-size:10px;transform:scale(0.8)}.geetest_wind.geetest_panel .geetest_panel_box.geetest_shake{-moz-animation:geetest_shake 0.2s linear infinite both;-webkit-animation:geetest_shake 0.2s linear infinite both;animation:geetest_shake 0.2s linear infinite both}.geetest_wind.geetest_panel .geetest_panel_box.geetest_panelshowslide{width:278px;height:285px;margin-left:-139px;margin-top:-143px}.geetest_wind.geetest_panel .geetest_panel_box.geetest_panelshowbeeline{width:300px;height:150px;margin-left:-139px;margin-top:-143px}.geetest_wind.geetest_panel .geetest_panel_box.geetest_panelshowclick{width:320px;height:410px;margin-left:-160px;margin-top:-205px}.geetest_wind.geetest_panel .geetest_panel_box.geetest_ie6panelshowclick{width:348px;height:445px;marginLeft:-174px;marginTop:-223px}.geetest_wind.geetest_panel .geetest_panel_box.geetest_no_logo .geetest_panel_error{padding:34px 0 0}.geetest_wind.geetest_panel .geetest_panel_box.geetest_no_logo .geetest_panel_loading{padding:47px 0 0 0}.geetest_wind.geetest_panel .geetest_panel_box.geetest_no_logo .geetest_panel_error_content{margin:33px auto 0}.geetest_wind.geetest_panel.geetest_fallback .geetest_panel_offline{display:block}.geetest_wind.geetest_panel.geetest_ie .geetest_panel_success_icon{-moz-transform:none !important;-ms-transform:none !important;-webkit-transform:none !important;transform:none !important}.geetest_wind.geetest_panel .geetest_panel_success.geetest_success_animate .geetest_panel_success_icon{-moz-animation:geetest_success_correct 0.7s ease both;-webkit-animation:geetest_success_correct 0.7s ease both;animation:geetest_success_correct 0.7s ease both}.geetest_wind.geetest_panel .geetest_panel_success.geetest_success_animate .geetest_panel_success_pie{-moz-animation:geetest_success_pie 0.7s ease both;-webkit-animation:geetest_success_pie 0.7s ease both;animation:geetest_success_pie 0.7s ease both}.geetest_wind.geetest_panel .geetest_panel_success.geetest_success_animate .geetest_panel_success_mask{-moz-animation:geetest_success_mask 0.7s linear both;-webkit-animation:geetest_success_mask 0.7s linear both;animation:geetest_success_mask 0.7s linear both}.geetest_wind.geetest_panel .geetest_panel_success.geetest_success_animate .geetest_panel_success_filter{-moz-animation:geetest_success_filter 0.7s linear both;-webkit-animation:geetest_success_filter 0.7s linear both;animation:geetest_success_filter 0.7s linear both}'}},function(e,t,s){\"use strict\";var n=s(3),o=n.isNumber,r=n.isFunction,a=s(0).PREFIX;function i(e){this._arr=e||[]}function _(e){this._obj=e}function l(e){this._ele=\"string\"==typeof e?document.createElement(e):e}function g(e,t){this._e=t,this._ele=e}i.prototype={_get:function(e){return this._arr[e]},_getLen:function(){return this._arr.length},_slice:function(e,t){return new i(o(t)?this._arr.slice(e,t):this._arr.slice(e))},_push:function(e){return this._arr.push(e),this},_splice:function(e,t){return this._arr.splice(e,t||1)},_join:function(e){return this._arr.join(e)},_concat:function(e){return new i(this._arr.concat(e))},_map:function(e){var t=this._arr;if(t.map)return new i(t.map(e));for(var s=[],n=0,o=t.length;n<o;n+=1)s[n]=e(t[n],n,this);return new i(s)},_filter:function(e){var t=this._arr;if(t.filter)return new i(t.filter(e));for(var s=[],n=0,o=t.length;n<o;n+=1)e(t[n],n,this)&&s.push(t[n]);return new i(s)},_indexOf:function(e){var t=this._arr;if(!t.indexOf){for(var s=0,n=t.length;s<n;s+=1)if(t[s]===e)return s;return-1}return t.indexOf(e)},_forEach:function(e){var t=this,s=t._arr;if(!s.forEach)for(var n=arguments[1],o=0;o<s.length;o++)o in s&&e.call(n,s[o],o,t);return s.forEach(e)}},i._isArray=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)},_.prototype={_each:function(e){var t=this._obj;for(var s in t)t.hasOwnProperty(s)&&e(s,t[s]);return this},_isEmpty:function(){var e=this._obj;for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}},l.prototype={_eventList:{down:[\"mousedown\",\"touchstart\",\"pointerdown\",\"MSPointerDown\"],move:[\"mousemove\",\"touchmove\",\"pointermove\",\"MSPointerMove\"],up:[\"mouseup\",\"touchend\",\"pointerup\",\"MSPointerUp\"],enter:[\"mouseenter\"],leave:[\"mouseleave\"],cancel:[\"touchcancel\"],click:[\"click\"],scroll:[\"scroll\"],resize:[\"resize\"],blur:[\"blur\"],focus:[\"focus\"],unload:[\"unload\"],input:[\"input\"],keyup:[\"keyup\"],ended:[\"ended\"],keydown:[\"keydown\"],beforeunload:[\"beforeunload\"],focusin:[\"focusin\"],pageshow:[\"pageshow\"]},_clear:function(){var e=this._ele;return e.innerHTML=\"\",\"input\"===e.tagName.toLocaleLowerCase()&&(e.value=\"\"),this},_hide:function(){return this._setStyles({display:\"none\"})},_show:function(){return this._setStyles({display:\"block\"})},_opacity:function(e){return this._setStyles({opacity:e})},_getAttr:function(e){return this._ele.getAttribute(e)},_setAttrs:function(e){var t=this._ele;return new _(e)._each((function(e,s){t.setAttribute(e,s)})),this},_removeAttrs:function(e){var t=this._ele;return new i(e)._map((function(e){t.removeAttribute(e)})),this},_setProps:function(e){var t=this._ele;return new _(e)._each((function(e,s){t[e]=s})),this},_setStyles:function(e){var t=this._ele;return new _(e)._each((function(e,s){t.style[e]=s})),this},setStyles:function(e){var t=this._ele;return new _(e)._each((function(e,s){t.style[e]=s})),this},_getParentNode:function(){return new l(this._ele.parentNode)},_appendTo:function(e){return e._ele.appendChild(this._ele),this},_moveTo:function(e){var t=this,s=t._ele;return s.parentNode.removeChild(s),t._appendTo(e),t},_appendBefore:function(e){return e._ele.parentNode.insertBefore(this._ele,e._ele),this},_appendChild:function(e){return e._appendTo(this),this},_remove:function(){var e=this._ele,t=e.parentNode;return t&&t.removeChild(e),this},_toggleClass:function(e){var t=this,s=t._ele;return-1===new i(s.className?s.className.split(\" \"):[])._indexOf(a+e)?t._addClass(e):t._removeClass(e),t},_addClass:function(e){var t=this._ele,s=new i(t.className?t.className.split(\" \"):[]);return e=a+e,-1==s._indexOf(e)&&(s._push(e),t.className=s._join(\" \")),this},_getChildren:function(){return this._ele.children},_right:function(){var e=this._ele;return e&&e.style&&e.style.right||0},_removeClass:function(e){var t=this._ele,s=new i(t.className.split(\" \"));e=a+e;var n=s._indexOf(e);return n>-1&&(s._splice(n),t.className=s._join(\" \")),this},_replaceClass:function(e,t){return this._removeClass(t)._addClass(e),this},_addEvent0:function(e,t){var s=this,n=s._ele,o=s._eventList[e],r=function(e){t(new g(s,e))};return new i(o)._map((function(e){if(document.addEventListener)n.addEventListener(e,r);else if(document.attachEvent)n.attachEvent(\"on\"+e,r);else{var o=n[\"on\"+e];n[\"on\"+e]=function(e){t(new g(s,e)),\"function\"==typeof o&&o.call(this,e)}}})),{_destroy:function(){new i(o)._map((function(e){document.removeEventListener?n.removeEventListener(e,r):document.detachEvent?n.detachEvent(\"on\"+e,r):n[\"on\"+e]=null}))}}},_addEvent:function(e,t){var s=this,n=s._addEvent0(e,t);return s._eventHandlers=s._eventHandlers||{},s._eventHandlers[e]?s._eventHandlers[e].push(n):s._eventHandlers[e]=[n],s},_removeEvents:function(e){var t=this;if(t._eventHandlers)if(e){if(t._eventHandlers[e]&&t._eventHandlers[e].length>0)for(var s=t._eventHandlers[e].length-1;s>=0;s--)t._eventHandlers[e][s]._destroy()}else for(var n in t._eventHandlers)if(t._eventHandlers[n]&&t._eventHandlers[n].length>0)for(s=t._eventHandlers[n].length-1;s>=0;s--)t._eventHandlers[n][s]._destroy();return t},_getBoundingClientRect:function(e){var t=this._ele.getBoundingClientRect();return 1!==(e=e||1)&&(t.x=t.x*e,t.y=t.y*e,t.top=t.top*e,t.left=t.left*e,t.right=t.right*e,t.bottom=t.bottom*e,t.width=t.width*e,t.height=t.height*e),t},_getCoords:function(e){var t=this._getBoundingClientRect(),s=document.body,n=document.documentElement,o=window.pageYOffset||n.scrollTop||s.scrollTop,r=window.pageXOffset||n.scrollLeft||s.scrollLeft,a=n.clientTop||s.clientTop||0,i=n.clientLeft||s.clientLeft||0,_=t.top+o-a,l=t.left+r-i;return{top:Math.round(_),left:Math.round(l),width:t.right-t.left,height:t.bottom-t.top}},_text:function(e){var t=this,s=t._ele;return t._clear(),s.appendChild(document.createTextNode(e)),t},_html:function(e){return this._ele.innerHTML=e,this},_style:function(e){var t=this._ele;return document.getElementsByTagName(\"head\")[0].appendChild(t),t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e)),this},_clone:function(e){var t,s,n=this,o=n._ele,r=!((s=document.createElement(\"canvas\")).getContext&&s.getContext(\"2d\"));if(e){if(r){var a=document.createElement(\"div\");a.innerHTML=o.outerHTML,t=new l(a.childNodes[0])}else t=new l(n._ele.cloneNode(!0));o.id=\"origin_\"+o.id,t._removeAttrs([\"href\"])}else(t=new l(n._ele.cloneNode(!1)))._addClass(\"sandbox\");return t},_click:function(){return this._ele.click(),this},_play:function(){return this._ele.play(),this},_replay:function(){var e=this;return e._ele.currentTime=0,e._ele.play(),e},_pause:function(){var e=this;return e._ele.currentTime=0,e._ele.pause(),e},_getValue:function(){return this._ele.value},_focus:function(){return this._ele.focus(),this},_width:function(){var e=this._getBoundingClientRect();return e.right-e.left},_getComputedStyle:function(e){var t=this._ele;return window.getComputedStyle?window.getComputedStyle(t)[e]:t.currentStyle[e]},_fixOverflow:function(){var e,t,s;try{for(var n=this._ele,o=n;o.parentNode!=document.body&&n.offsetTop-o.parentNode.offsetTop<160;)o=o.parentNode,\"hidden\"==(t=\"overflow\",s=void 0,(e=o).currentStyle?s=e.currentStyle[t]:window.getComputedStyle&&(s=window.getComputedStyle(e,null).getPropertyValue(t)),s)&&(o.style.overflow=\"visible\")}catch(r){}return this},_getElementLeft:function(){for(var e=this._ele,t=e.offsetLeft,s=e.offsetParent;null!==s;)t+=s.offsetLeft,s=s.offsetParent;return t},_getElementTop:function(){for(var e=this._ele,t=e.offsetTop,s=e.offsetParent;null!==s;)t+=s.offsetTop,s=s.offsetParent;return t}},l.$=function(e){var t,s;\"string\"==typeof e?\"#\"===e[0]?t=document.getElementById(e.slice(1)):\"querySelector\"in document?t=document.querySelector(e):r(window.jQuery)&&(t=window.jQuery(e)[0]):t=e.length?e[0]:e;try{s=Node.ELEMENT_NODE}catch(n){s=1}try{if(t.nodeType===s)return new l(t)}catch(n){return!1}},g.prototype={_getX:function(){var e=this._e;if(o(e.clientX))return e.clientX;var t=e.changedTouches&&e.changedTouches[0];return t?t.clientX:-1},_getY:function(){var e=this._e;if(o(e.clientY))return e.clientY;var t=e.changedTouches&&e.changedTouches[0];return t?t.clientY:-1},_preventDefault:function(){var e=this._e;return e.cancelable&&r(e.preventDefault)?e.preventDefault():e.returnValue=!1,this},_stopPropagation:function(){var e=this._e;return r(e.stopPropagation)&&e.stopPropagation(),this}},e.exports={_Element:l,_assign:function(e){if(\"function\"==typeof Object.assign)return Object.assign.apply(Object,arguments);if(null==e)throw new Error(\"Cannot convert undefined or null to object\");e=Object(e);for(var t=1;t<arguments.length;t++){var s=arguments[t];if(null!==s)for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n])}return e},_Array:i,_Object:_}},function(e,t,s){\"use strict\";var n=window.document,o=n.body||n.getElementsByTagName(\"body\")[0],r=n.head||n.getElementsByTagName(\"head\")[0],a=/Mobi/i.test(navigator.userAgent),i=/msie 6\\.0/i.test(navigator.userAgent);e.exports={MOBILE:a,head:r,getCSS3:function(){return!!o&&(\"transition\"in o.style||\"webkitTransition\"in o.style||\"mozTransition\"in o.style||\"msTransition\"in o.style)},body:o,IE6:i}},function(e,t,s){\"use strict\";e.exports={isNumber:function(e){return\"number\"==typeof e},isFunction:function(e){return\"function\"==typeof e},isObject:function(e){return\"object\"==typeof e&&null!==e},isBoolean:function(e){return\"boolean\"==typeof e},isString:function(e){return\"string\"==typeof e}}},function(e,t,s){\"use strict\";var n=s(5);if(\"undefined\"==typeof window)throw new Error(\"Geetest requires browser environment\");var o=window.document,r=window.Math,a=o.getElementsByTagName(\"head\")[0];function i(e){this._obj=e}function _(e){var t=this;new i(e)._each((function(e,s){t[e]=s}))}i.prototype={_each:function(e){var t=this._obj;for(var s in t)t.hasOwnProperty(s)&&e(s,t[s]);return this}},_.prototype={api_server:\"api.geetest.com\",protocol:\"http://\",typePath:\"/gettype.php\",_extend:function(e){var t=this;new i(e)._each((function(e,s){t[e]=s}))}};var l=function(e){return\"object\"==typeof e&&null!==e},g=/Mobi/i.test(navigator.userAgent)?3:0,c={},d={},p=function(e,t,s,n){t=function(e){return e.replace(/^https?:\\/\\/|\\/$/g,\"\")}(t);var o=function(e){return 0!==(e=e.replace(/\\/+/g,\"/\")).indexOf(\"/\")&&(e=\"/\"+e),e}(s)+function(e){if(!e)return\"\";var t=\"?\";return new i(e)._each((function(e,s){(function(e){return\"string\"==typeof e}(s)||function(e){return\"number\"==typeof e}(s)||function(e){return\"boolean\"==typeof e}(s))&&(t=t+encodeURIComponent(e)+\"=\"+encodeURIComponent(s)+\"&\")})),\"?\"===t&&(t=\"\"),t.replace(/&$/,\"\")}(n);return t&&(o=e+t+o),o},u=function(e,t,s,n,r,i,_){!function l(g){!function(e,t){var s=o.createElement(\"script\");s.charset=\"UTF-8\",s.async=!0,/static\\.geetest\\.com/g.test(e)&&(s.crossOrigin=\"anonymous\"),s.onerror=function(){t(!0)};var n=!1;s.onload=s.onreadystatechange=function(){n||s.readyState&&\"loaded\"!==s.readyState&&\"complete\"!==s.readyState||(n=!0,setTimeout((function(){t(!1)}),0))},s.src=e,a.appendChild(s)}(p(s,n[g],r,i),(function(o){if(o)if(g>=n.length-1){if(_(!0),t){e.error_code=508;var a=s+n[g]+r;h(e,a)}}else l(g+1);else _(!1)}))}(0)},f=function(e,t,s,n){if(l(s.getLib))return s._extend(s.getLib),void n(s);if(s.offline)n({type:\"fullpage\",offline:!0});else{var o=\"geetest_\"+(parseInt(1e4*r.random())+(new Date).valueOf());window[o]=function(e){\"success\"==e.status?n(e.data):e.status?n({type:\"fullpage\",offline:!0}):n(e),window[o]=undefined;try{delete window[o]}catch(t){}},u(s,!0,s.protocol,e,t,{gt:s.gt,callback:o},(function(e){e&&n({type:\"fullpage\",offline:!0})}))}},h=function(e,t){var s,n,o,r,a,i,_;u(e,!1,e.protocol,[\"monitor.geetest.com\"],\"/monitor/send\",{time:(s=new Date,n=s.getFullYear(),o=s.getMonth()+1,r=s.getDate(),a=s.getHours(),i=s.getMinutes(),_=s.getSeconds(),o>=1&&o<=9&&(o=\"0\"+o),r>=0&&r<=9&&(r=\"0\"+r),a>=0&&a<=9&&(a=\"0\"+a),i>=0&&i<=9&&(i=\"0\"+i),_>=0&&_<=9&&(_=\"0\"+_),n+\"-\"+o+\"-\"+r+\" \"+a+\":\"+i+\":\"+_),captcha_id:e.gt,challenge:e.challenge,pt:g,exception_url:t,error_code:e.error_code},(function(e){}))},m=function(e,t){var s={networkError:\"网络错误\",gtTypeError:\"gt字段不是字符串类型\"};if(\"function\"!=typeof t.onError)throw new Error(s[e]);t.onError(s[e])};(window.Geetest||o.getElementById(\"gt_lib\"))&&(d.slide=\"loaded\");e.exports=function(e,t){var s=new _(e);e.https?s.protocol=\"https://\":e.protocol||(s.protocol=window.location.protocol+\"//\"),\"050cffef4ae57b5d5e529fea9540b0d1\"!==e.gt&&\"3bd38408ae4af923ed36e13819b14d42\"!==e.gt||(s.apiserver=\"yumchina.geetest.com/\",s.api_server=\"yumchina.geetest.com\"),e.gt&&(window.GeeGT=e.gt),e.challenge&&(window.GeeChallenge=e.challenge),l(e.getType)&&s._extend(e.getType),f([s.api_server||s.apiserver],s.typePath,s,(function(e){var o=e.type;if(e.offline)t(new n(s));else{var r=function(){s._extend(e),t(new window.Geetest(s))};c[o]=c[o]||[];var a=d[o]||\"init\";\"init\"===a?(d[o]=\"loading\",c[o].push(r),u(s,!0,s.protocol,e.static_servers||e.domains,e[o]||e.path,null,(function(e){if(e)d[o]=\"fail\",m(\"networkError\",s);else{d[o]=\"loaded\";for(var t=c[o],n=0,r=t.length;n<r;n+=1){var a=t[n];\"function\"==typeof a&&a()}c[o]=[]}}))):\"loaded\"===a?r():\"fail\"===a?m(\"networkError\",s):\"loading\"===a&&c[o].push(r)}}))}},function(e,t,s){\"use strict\";var n=s(1)._assign,o=s(2).MOBILE,r=s(6),a=s(7),i=s(11),_=s(0),l=_.READY,g=_.BACK,c=_.COMPUTE_2,d=_.RADAR_SUCCESS,p=_.RADAR_ERROR,u=_.RADAR_NEXT,f=_.RADAR_NEXT_READY,h=_.RADAR_NEXT_HIDE,m=_.NOT_COMPATIBLE,w=_.INIT,b=_.SUCCESS;function x(e){var t=this;t._config=n({},{challenge:\"\",gt:\"\",type:\"fullpage\",product:\"popup\",lang:\"zh-cn\",width:300,logo:!0,theme:\"wind\"},e),t._event=new r,t._status=new i((function(e,s){t._onStatusChange(e,s)})),t._status._set(w)}x.prototype={_init:function(){var e=this._config;\"float\"!==e.product&&\"popup\"!==e.product&&\"custom\"!==e.product&&\"bind\"!==e.product&&(e.product=\"float\"),o&&\"float\"===e.product&&(e.product=\"popup\"),this._ui=new a(this)},_fullpageHandler:function(e){var t,s=this._config;if(\"success\"===e.result){var n=e.validate.split(\"|\")[0];this._result={geetest_challenge:s.challenge,geetest_validate:n,geetest_seccode:n+\"|jordan\"},this._scoretime=e.score,t=d}this._status._set(t)},_getValidate:function(){return this._result},_resetValidate:function(){this._result=null},_onStatusChange:function(e,t){var s=this._ui,n=this._status,o=this._event,r=this._config,a=\"bind\"===r.product;if(!n._equal(t)&&t!==m)if(n._equal(w)||(s&&s._onChangeStatus(e,t),s&&s._tip()),n._equal(w))this._initP=this._init(),n._set(l),setTimeout((function(){o._emitEvent(w)}),0);else if(n._equal(u))s._next(this._nextType);else if(n._equal(f))s._showNext(),a&&r.pure&&o._emitEvent(f);else if(n._equal(h))s._hideNext(),o._emitEvent(CLOSE);else if(n._equal([d]))s._success(this._result),setTimeout((function(){a&&(s._panelHide(),r.pure&&setTimeout((function(){s._panelRemove()}),300)),o._emitEvent(b)}),400);else if(n._equal(c))a&&!r.pure&&s._panelShowLoading(),s._compute();else if(n._equal(g))return},_addEvent:function(e,t){return this._event._addEvent(e,t),this},_destroy:function(){this._ui&&this._ui._destroy()},_verify:function(){var e=this._ui,t=this._config,s=this._status;\"bind\"===t.product&&(s._equal(l)?s._set(c):s._equal(h)?s._set(f):s._equal([p,d])&&(e&&e._reset(),s._set(c)))},_bindForm:function(e){this._ui._bindForm(e)},appendTo:function(e){return\"bind\"===this._config.product||this._ui._appendTo(e),this},destroy:function(){this._destroy()},getValidate:function(){return this._getValidate()},onReady:function(e){return this._addEvent(w,e),this},onSuccess:function(e){return this._addEvent(b,e),this},onClose:function(e){return this._addEvent(CLOSE,e),this},verify:function(){return this._verify(),this},reset:function(){return this._ui&&this._ui._reset(),this},bindForm:function(e){return this._bindForm(e),this}},x.type=\"fullpage\",e.exports=x},function(e,t,s){\"use strict\";function n(){this._events={}}n.prototype={_addEvent:function(e,t){return this._events[e]?this._events[e].push(t):this._events[e]=[t],this},_emitEvent:function(e,t){var s=this._events[e];if(s){for(var n=0,o=s.length;n<o;n+=1)s[n](t);return this}},_destroy:function(){this._events={}}},e.exports=n},function(e,t,s){\"use strict\";var n=s(8),o=s(9).make_$,r=s(2),a=r.MOBILE,i=r.IE6,_=r.getCSS3,l=s(10),g=l.compile,c=l.template,d=s(0).csstext_wind,p=s(1),u=p._Element,f=p._Array,h=s(2),m=h.body,w=h.head,b=s(0),x=b.READY,v=b.START_COMPUTE,y=b.START_DETECT,k=b.BACK,E=b.COMPUTE_2,C=b.COMPUTE_1,T=b.DETECT,A=b.WAIT_COMPUTE,z=b.RADAR_SUCCESS,S=b.RADAR_ERROR,R=b.RADAR_NEXT,O=b.RADAR_NEXT_READY,P=b.RADAR_NEXT_HIDE,F=b.NOT_COMPATIBLE,N=b.RESET;function D(e){var t,s=this,r=e._config;s._status=e._status,s._captcha=e,s._config=r,s._userConfig=e._userConfig,s._lang=n(r),s.$=o(),s._css3=_(),s._css3_move=null,s._setDelay=function(e){return s._css3?e:0},t=s._css3?\".holder.\"+r.theme:\".holder.ie.\"+r.theme,r.offline&&(t+=\".fallback\"),s._dom=g(t,c,s.$),s._win=new u(window),s._doc=new u(document),s._init()}D.prototype={_WIDTH:260,_MAX:200,_MIN:0,_INTERVAL:54e4,_tip:function(){var e=this._lang,t=this._status,s=this.$;if(s){var n=!1;if(t._equal([x,P])?n=\"ready\":t._equal([C,E])?n=\"fullpage\":t._equal([z])?n=\"success\":t._equal([S])?n=\"error\":t._equal([R])?n=\"next\":t._equal([O])?n=\"next_ready\":t._equal(F)&&(n=\"not_compatible\"),n){if(s(\".radar_tip\")._setAttrs({tabIndex:\"0\",\"aria-label\":e[n]})._setStyles({\"outline-width\":0}),t._equal(z))s(\".success_radar_tip_content\")._text(e[n]);else if(t._equal([S])){var o=this._captcha._errObj;if(o&&o.code){var r=this._config,a=/(\\d+)$/.exec(o.code);\"bind\"===r.product?(s(\".panel_error_title\")._text(o.user_error||\"\"),a&&s(\".panel_error_code_text\")._text(a[0]||\"\")):(s(\".radar_tip_content\")._text(o.user_error||\"\"),a&&s(\".radar_error_code\")._text(a[0]||\"\"))}else s(\".radar_tip_content\")._text(e[n])}else s(\".radar_tip_content\")._text(e[n]);this._errorTip&&t._equal(S)&&(s(\".radar_tip_content\")._text(\"error\"),this._errorTip=!1)}}},_init:function(){var e=this;e._scale=1,e._energy=0,e._zoom(),e._skinP=e._loadSkin();var t=e.$,s=e._config,n=e._lang,o=e._captcha,r=e._status;return\"bind\"===s.product?s.logo||t(\".panel_footer\")._setStyles({display:\"none\"}):a&&s.logo||(s.logo?(t(\".logo\")._setProps({target:\"_blank\",href:s.homepage}),t(\".success_logo\")._setProps({target:\"_blank\",href:s.homepage})):(t(\".logo\")._hide(),t(\".success_logo\")._hide())),s.logo&&a&&\"bind\"!==s.product?(t(\".goto\")._addClass(s.theme)._moveTo(new u(m)),t(\".goto_content_tip\")._text(n.goto_homepage),t(\".goto_confirm\")._text(n.goto_confirm)._setProps({href:s.homepage}),t(\".goto_cancel\")._text(n.goto_cancel),t(\".goto\")._hide()):t(\".goto\")._hide(),\"bind\"===s.product&&(t(\".panel\")._hide()._addClass(s.theme)._moveTo(new u(m)),s.offline&&t(\".panel\")._addClass(\"fallback\"),e._css3||t(\".panel\")._addClass(\"ie\"),t(\".panel_loading_content\")._text(n.loading_content),t(\".panel_success_title\")._text(n.success_title),t(\".panel_error_title\")._text(n.error_title),t(\".panel_error_content\")._text(n.error_content),t(\".panel_footer_copyright\")._text(n.copyright),t(\".panel_ghost\")._addEvent(\"click\",(function(){r._equal([z,S])?(e._panelHide(),r._equal(S)&&o._closePanel()):r._equal(O)&&r._set(P)}))),\"bind\"!==s.product&&new f([\"ar\",\"fa\",\"iw\",\"ur\"])._indexOf(s.lang)>-1&&(t(\".radar_tip\")._addClass(\"reversal\"),t(\".success_radar_tip\")._addClass(\"reversal_success\")),t(\".reset_tip_content\")._text(n.reset),e},_addEvent:function(){var e,t,s,n=this,o=n.$,r=n._status,i=n._captcha;n._logo_click=!1,a?(new f([o(\".logo\"),o(\".success_logo\")])._map((function(e){e._addEvent(\"click\",(function(){n._logo_click=!0,o(\".goto\")._show(),setTimeout((function(){o(\".goto\")._opacity(1)}),300)}))})),new f([o(\".goto_cancel\"),o(\".goto_ghost\")])._map((function(e){e._addEvent(\"click\",(function(){n._logo_click=!1,o(\".goto\")._opacity(0),setTimeout((function(){o(\".goto\")._hide()}),300)}))}))):(o(\".logo\")._addEvent(\"click\",(function(e){n._logo_click=!0,setTimeout((function(){n._logo_click=!1}),10)})),o(\".success_logo\")._addEvent(\"click\",(function(e){n._logo_click=!0,setTimeout((function(){n._logo_click=!1}),10)}))),n._css3&&(n._css3_move=(e=function(e){if(r._equal(x))r._set(y),setTimeout((function(){r._equal(y)&&r._set(T)}),500);else if(r._equal(A)&&a){if(n._logo_click)return;r._set(v),setTimeout((function(){r._equal(v)&&(r._set(C),n._fullpage())}),10)}r._equal([y,T])&&n._rotate(e)},t=null,(s=function(s){t=setTimeout((function(){e(s)}),10)}).cancel=function(){clearTimeout(t),t=null},s),n._doc._addEvent(\"move\",n._css3_move));var _=function(){n._logo_click||(\"function\"!=typeof n._captcha._validateCallback||n._captcha._validateCallback())&&(r._equal([A,y,T])?(r._set(v),setTimeout((function(){r._equal(v)&&(r._set(C),n._fullpage())}),10)):r._equal([x])&&(r._set(C),n._fullpage()))};return o(\".holder\")._addEvent(\"keydown\",(function(e){13===e._e.keyCode&&(i._by=1,_())}))._addEvent(\"click\",(function(e){i._by=0,_()}))._addEvent(\"enter\",(function(){r._equal([x,y,T])&&r._set(A)}))._addEvent(\"leave\",(function(){r._equal([x,y,T,A])&&r._set(T)})),o(\".reset_tip_content\")._addEvent(\"click\",(function(){n._captcha._errObj&&\"error_21\"===n._captcha._errObj.code?n._refreshPage():n._reset()._then((function(){r._set(E)}))})),n},_rotate:function(e){var t=this.$,s=t(\".dot\"),n=t(\".sector\"),o=e._getX(),r=e._getY(),a=s._getBoundingClientRect(),i=o-(a.left+8),_=a.top+8-r,l=180*Math.atan(i/_)/Math.PI;_<0&&(l+=180),n._setStyles({transform:\"rotate(\"+l+\"deg)\"})},_fullpage:function(){var e=this._status;e._equal(C)&&e._set(E)},_compute:function(){var e=this._config;this._captcha._fullpageHandler({result:\"success\",validate:e.challenge})},_reset:function(){var e=this._status,t=this.$,s=e._get();if(!e._equal([z,S,k]))return this;e._set(N),this._captcha._resetValidate(),s===z&&(this._clearForm(),t(\".ghost_success\")._hide(),this._css3&&setTimeout((function(){t(\".ghost_success\")._removeClass(\"success_animate\")._show()}),10)),e._set(x)},_zoom:function(){var e=this._config;return this._dom._setStyles({width:e.width||toRem(this._WIDTH)}),this},_loadSkin:function(){var e=new u(\"style\");e.type=\"text/css\",e._style(d),e._appendTo(new u(w))},_onChangeStatus:function(e,t){var s=this.$;if(e===z)if(s(\".holder\")._replaceClass(e,t||null),this._css3)s(\".ghost_success\")._addClass(\"success_animate\"),s(\".panel_success\")._addClass(\"success_animate\"),s(\".success_btn\")._setStyles({width:s(\".holder\")._width()+\"px\"}),setTimeout((function(){s(\".success_btn\")._setStyles({width:\"100%\"})}),2e3);else{var n=this._config;\"bind\"===n.product&&n.pure||(s(\".panel_success\")._show()._addClass(\"success_animate\"),s(\".ghost_success\")._show()._addClass(\"success_animate\"))}else s(\".holder\")._replaceClass(e,t||null);return this},_appendTo:function(e){this._config;return this._box||this._button||(this._box=u.$(e),this._addEvent(),this._dom._appendTo(this._box)),this},_bindForm:function(e){var t=this.$;if(this._form=u.$(e),this._form)return t(\".form\")._moveTo(this._form),this},_bindButton:function(e){if(this._button||this._box)return this;var t=this._status;if(this._button=u.$(e),!this._button)return this;this._button._addEvent(\"click\",(function(){t._equal([x])&&t._set(E)}))},_success:function(e){var t=this,s=t._config;\"bind\"===s.product&&(s.pure||(t._panelShowSuccess(),t._panelRemove())),t._setForm(e)},_setForm:function(e){var t=this.$;t(\".challenge\")._setAttrs({value:e.geetest_challenge}),t(\".validate\")._setAttrs({value:e.geetest_validate}),t(\".seccode\")._setAttrs({value:e.geetest_seccode})},_clearForm:function(){var e=this.$;return e(\".challenge\")._removeAttrs([\"value\"]),e(\".validate\")._removeAttrs([\"value\"]),e(\".seccode\")._removeAttrs([\"value\"]),this},_panelShow:function(){var e=this.$;e(\".panel_loading\")._hide(),e(\".panel_success\")._hide(),e(\".panel_error\")._hide(),e(\".panel_footer\")._hide(),e(\".panel_next\")._hide(),e(\".panel\")._show(),setTimeout((function(){e(\".panel\")._opacity(1)}),10),i&&e(\".panel_box\")._setStyles({marginLeft:\"0\",marginTop:\"0\"})},_panelRemove:function(){var e=this.$;e(\".panel_box\")._removeClass(\"panelshowclick\"),e(\".panel_box\")._removeClass(\"ie6panelshowclick\"),e(\".panel_box\")._removeClass(\"panelshowslide\"),e(\".panel_box\")._removeClass(\"panelshowbeeline\"),e(\".panel_box\")._setStyles({width:\"\",height:\"\"})},_panelHide:function(){var e=this.$;e(\".panel\")._opacity(0),setTimeout((function(){e(\".panel\")._hide()}),300)},_destroy:function(){var e=this._config,t=this.$;switch(this._win._removeEvents(),this._doc._removeEvents(),this._css3_move&&this._css3_move.cancel(),e.product){case\"bind\":t(\".panel\")._remove();break;case\"popup\":case\"float\":t(\".holder\")._remove(),t(\".fullpage_click\")._remove();break;case\"custom\":t(\".holder\")._remove()}},_panelShowPanel:function(){var e=this.$;this._panelShow(),e(\".panel_next\")._hide()},_panelShowLoading:function(){var e=this.$;this._config.area&&this._panelBindLoading(),this._panelShowPanel(),e(\".panel_loading\")._show(),this._show_panel_footer()},_panelBindLoading:function(){var e=this._config,t=this.$,s=u.$(e.area);if(!s)return throwError(getError(\"api_appendTo\",this._captcha));var n=s._getCoords(),o=t(\".panel\");o&&o._setStyles({position:\"absolute\",left:toRem(n.left),top:toRem(n.top),width:toRem(n.width),height:toRem(n.height)})},_panelShowSuccess:function(){var e=this.$;this._panelShowPanel(),e(\".panel_success\")._show(),this._show_panel_footer()},_show_panel_footer:function(){var e=this.$;this._config.logo?e(\".panel_footer\")._show():(e(\".panel_box\")._addClass(\"no_logo\"),e(\".panel_footer\")._hide())},_refreshPage:function(){var e=this._lang.refresh_page||\"\";window.confirm(e)&&window.location.reload()}},e.exports=D},function(e,t,s){\"use strict\";var n=s(1)._Array;e.exports=function(e){var t,s=e.i18n_labels,o={\"zh-cn\":(t={ready:\"点击按钮进行验证\",fullpage:\"智能检测中\",success:\"验证成功\",error:\"网络故障\",reset:\"请点击重试\",next:\"正在加载验证\",next_ready:\"请完成验证\"},t.error=\"网络故障\",t.goto_homepage=\"是否前往验证服务Geetest官网？\",t.goto_confirm=\"前往\",t.goto_cancel=\"取消\",t.loading_content=\"智能验证检测中\",t.success_title=\"通过验证\",t.error_title=\"网络超时\",t.error_content=\"请点击此处重试\",t.copyright=\"由极验提供技术支持\",t.refresh_page=\"页面出现错误啦！要继续操作，请刷新此页面。\",t),en:{ready:\"Click to pass\",fullpage:\"Detecting\",success:\"Succeeded\",error:\"Network failure\",reset:\"Click to retry\",next:\"Loading\",next_ready:\"Please finish it\",goto_homepage:\"Going to Geetest（verification service provider）？\",goto_confirm:\"Yes\",goto_cancel:\"Cancel\",loading_content:\"Detecting\",success_title:\"Success\",error_title:\"Network timeout\",error_content:\"Click to retry\",copyright:\"Provided by Geetest\",refresh_page:\"An error occured. Please refresh and try again!\"},\"zh-hk\":{ready:\"點擊按鈕進行驗證\",fullpage:\"智能檢測中\",success:\"驗證成功\",error:\"網絡故障\",reset:\"請點擊重試\",next:\"正在加載驗證\",next_ready:\"請完成驗證\",goto_homepage:\"是否前往驗證服務Geetest官網？\",goto_confirm:\"前往\",goto_cancel:\"取消\",loading_content:\"智能驗證檢測中\",success_title:\"通過驗證\",error_title:\"網絡超時\",error_content:\"請點擊此處重試\",copyright:\"由極驗提供技術支持\",refresh_page:\"頁面出現錯誤啦！要繼續操作，請刷新此頁面。\"}};for(var r in s)if(\"object\"==typeof s&&s.hasOwnProperty(r))return s;return e&&e.offline&&new n([\"zh-cn\",\"en\",\"zh-hk\"])._indexOf(e.lang)>-1?o[e.lang]:o[\"zh-cn\"]}},function(e,t,s){\"use strict\";var n=s(0).PREFIX;e.exports={make_$:function(){var e={};return function(t,s){if(!s)return e[t.replace(n,\"\")];e[t]=s}}}},function(e,t,s){\"use strict\";var n=s(1),o=n._Array,r=n._Element,a=n._Object,i=s(3),_=i.isString,l=(i.isNumber,s(0).PREFIX);e.exports={compile:function g(e,t,s){var n=e.split(\".\"),i=n[0]||\"div\",c=new o(n)._slice(1)._map((function(e){return l+e}))._join(\" \"),d=new r(i);return s(\".\"+n[1],d),\"input\"==i?d._setAttrs({type:\"hidden\",name:c}):d._setProps({className:c}),_(t)?d._setAttrs({textContent:t}):new a(t)._each((function(e,t){d._appendChild(g(e,t,s))})),d},template:{\".form\":{\"input.challenge\":{},\"input.validate\":{},\"input.seccode\":{}},\".btn\":{\".radar_btn\":{\".radar\":{\".ring\":{\".small\":{}},\".sector\":{\".small\":{}},\".cross\":{\".h\":{},\".v\":{}},\".dot\":{},\".scan\":{\".h\":{}},\".status\":{\".bg\":{},\".hook\":{}}},\".ie_radar\":{},\".radar_tip\":{\"span.radar_tip_content\":{},\"span.reset_tip_content\":{},\"span.radar_error_code\":{}},\"a.logo\":{},\".other_offline.offline\":{}},\".ghost_success\":{\".success_btn\":{\".success_box\":{\".success_show\":{\".success_pie\":{},\".success_filter\":{},\".success_mask\":{}},\".success_correct\":{\".success_icon\":{}}},\".success_radar_tip\":{\"span.success_radar_tip_content\":{},\"span.success_radar_tip_timeinfo\":{}},\"a.success_logo\":{},\".success_offline.offline\":{}}},\".slide_icon\":{}},\".wait\":{\"span.wait_dot.dot_1\":{},\"span.wait_dot.dot_2\":{},\"span.wait_dot.dot_3\":{}},\".fullpage_click\":{\".fullpage_ghost\":{},\".fullpage_click_wrap\":{\".fullpage_click_box\":{},\".fullpage_pointer\":{\".fullpage_pointer_out\":{},\".fullpage_pointer_in\":{}}}},\".goto\":{\".goto_ghost\":{},\".goto_wrap\":{\".goto_content\":{\".goto_content_tip\":{}},\".goto_cancel\":{},\"a.goto_confirm\":{}}},\".panel\":{\".panel_ghost\":{},\".panel_box\":{\".other_offline.panel_offline\":{},\".panel_loading\":{\".panel_loading_icon\":{},\".panel_loading_content\":{}},\".panel_success\":{\".panel_success_box\":{\".panel_success_show\":{\".panel_success_pie\":{},\".panel_success_filter\":{},\".panel_success_mask\":{}},\".panel_success_correct\":{\".panel_success_icon\":{}}},\".panel_success_title\":{}},\".panel_error\":{\".panel_error_icon\":{},\".panel_error_title\":{},\".panel_error_content\":{},\".panel_error_code\":{\".panel_error_code_text\":{}}},\".panel_footer\":{\".panel_footer_logo\":{},\".panel_footer_copyright\":{}},\".panel_next\":{}}}}}},function(e,t,s){\"use strict\";var n=s(1)._Array;function o(e){this._onChange=e}o.prototype={_set:function(e){var t=this;return t._prevStatus=t._status,t._status=e,t._onChange(t._status,t._prevStatus),t},_get:function(){return this._status},_equal:function(e){for(var t=n._isArray(e)?e:[e],s=0,o=t.length;s<o;s+=1)if(t[s]===this._get())return!0;return!1}},e.exports=o}]);"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/.gitignore",
    "content": ".idea\n\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/CONTRIBUTING.md",
    "content": "Contributing to Select2\n=======================\nLooking to contribute something to Select2? **Here's how you can help.**\n\nPlease take a moment to review this document in order to make the contribution\nprocess easy and effective for everyone involved.\n\nFollowing these guidelines helps to communicate that you respect the time of\nthe developers managing and developing this open source project. In return,\nthey should reciprocate that respect in addressing your issue or assessing\npatches and features.\n\nUsing the issue tracker\n-----------------------\nWhen [reporting bugs][reporting-bugs] or\n[requesting features][requesting-features], the\n[issue tracker on GitHub][issue-tracker] is the recommended channel to use.\n\nThe issue tracker **is not** a place for support requests. The\n[mailing list][mailing-list] or [IRC channel][irc-channel] are better places to\nget help.\n\nReporting bugs with Select2\n---------------------------\nWe really appreciate clear bug reports that _consistently_ show an issue\n_within Select2_.\n\nThe ideal bug report follows these guidelines:\n\n1. **Use the [GitHub issue search][issue-search]**  &mdash; Check if the issue\n   has already been reported.\n2. **Check if the issue has been fixed**  &mdash; Try to reproduce the problem\n   using the code in the `master` branch.\n3. **Isolate the problem**  &mdash; Try to create an\n   [isolated test case][isolated-case] that consistently reproduces the problem.\n\nPlease try to be as detailed as possible in your bug report, especially if an\nisolated test case cannot be made. Some useful questions to include the answer\nto are:\n\n- What steps can be used to reproduce the issue?\n- What is the bug and what is the expected outcome?\n- What browser(s) and Operating System have you tested with?\n- Does the bug happen consistently across all tested browsers?\n- What version of jQuery are you using? And what version of Select2?\n- Are you using Select2 with other plugins?\n\nAll of these questions will help people fix and identify any potential bugs.\n\nRequesting features in Select2\n------------------------------\nSelect2 is a large library that carries with it a lot of functionality. Because\nof this, many feature requests will not be implemented in the core library.\n\nBefore starting work on a major feature for Select2, **contact the\n[community][community] first** or you may risk spending a considerable amount of\ntime on something which the project developers are not interested in bringing\ninto the project.\n\n### Select2 4.0\n\nMany feature requests will be closed off until 4.0, where Select2 plans to adopt\na more flexible API.  If you are interested in helping with the development of\nthe next major Select2 release, please send a message to the\n[mailing list][mailing-list] or [irc channel][irc-channel] for more information.\n\nTriaging issues and pull requests\n---------------------------------\nAnyone can help the project maintainers triage issues and review pull requests.\n\n### Handling new issues\n\nSelect2 regularly receives new issues which need to be tested and organized.\n\nWhen a new issue that comes in that is similar to another existing issue, it\nshould be checked to make sure it is not a duplicate.  Duplicates issues should\nbe marked by replying to the issue with \"Duplicate of #[issue number]\" where\n`[issue number]` is the url or issue number for the existing issue.  This will\nallow the project maintainers to quickly close off additional issues and keep\nthe discussion focused within a single issue.\n\nIf you can test issues that are reported to Select2 that contain test cases and\nconfirm under what conditions bugs happen, that will allow others to identify\nwhat causes a bug quicker.\n\n### Reviewing pull requests\n\nIt is very common for pull requests to be opened for issues that contain a clear\nsolution to the problem.  These pull requests should be rigorously reviewed by\nthe community before being accepted.  If you are not sure about a piece of\nsubmitted code, or know of a better way to do something, do not hesitate to make\na comment on the pull request.\n\nIt should also be made clear that **all code contributed to Select** must be\nlicensable under the [Apache 2 or GPL 2 licenses][licensing].  Code that cannot\nbe released under either of these licenses **cannot be accepted** into the\nproject.\n\n[community]: https://github.com/ivaynberg/select2#community\n[reporting-bugs]: #reporting-bugs-with-select2\n[requesting-features]: #requesting-features-in-select2\n[issue-tracker]: https://github.com/ivaynberg/select2/issues\n[mailing-list]: https://github.com/ivaynberg/select2#mailing-list\n[irc-channel]: https://github.com/ivaynberg/select2#irc-channel\n[issue-search]: https://github.com/ivaynberg/select2/search?q=&type=Issues\n[isolated-case]: http://css-tricks.com/6263-reduced-test-cases/\n[licensing]: https://github.com/ivaynberg/select2#copyright-and-license\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/LICENSE",
    "content": "Copyright 2014 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License.\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/README.md",
    "content": "Select2\n=======\n\nSelect2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\n\nTo get started, checkout examples and documentation at http://ivaynberg.github.com/select2\n\nUse cases\n---------\n\n* Enhancing native selects with search.\n* Enhancing native selects with a better multi-select interface.\n* Loading data from JavaScript: easily load items via ajax and have them searchable.\n* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction.\n* Tagging: ability to add new items on the fly.\n* Working with large, remote datasets: ability to partially load a dataset based on the search term.\n* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.\n* Templating: support for custom rendering of results and selections.\n\nBrowser compatibility\n---------------------\n* IE 8+\n* Chrome 8+\n* Firefox 10+\n* Safari 3+\n* Opera 10.6+\n\nUsage\n-----\nYou can source Select2 directly from a CDN like [JSDliver](http://www.jsdelivr.com/#!select2) or [CDNJS](http://www.cdnjs.com/libraries/select2), [download it from this GitHub repo](https://github.com/ivaynberg/select2/tags), or use one of the integrations below.\n\nIntegrations\n------------\n\n* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org))\n* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)\n* [AngularUI](http://angular-ui.github.io/#ui-select) ([AngularJS](https://angularjs.org/))\n* [Django](https://github.com/applegrew/django-select2)\n* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin)\n* [Symfony2](https://github.com/avocode/FormExtensions)\n* [Bootstrap 2](https://github.com/t0m/select2-bootstrap-css) and [Bootstrap 3](https://github.com/t0m/select2-bootstrap-css/tree/bootstrap3) (CSS skins)\n* [Meteor](https://github.com/nate-strauser/meteor-select2) (modern reactive JavaScript framework; + [Bootstrap 3 skin](https://github.com/esperadomedia/meteor-select2-bootstrap3-css/))\n* [Meteor](https://jquery-select2.meteor.com)\n* [Yii 2.x](http://demos.krajee.com/widgets#select2)\n* [Yii 1.x](https://github.com/tonybolzan/yii-select2)\n* [AtmosphereJS](https://atmospherejs.com/package/jquery-select2)\n\n### Example Integrations\n\n* [Knockout.js](https://github.com/ivaynberg/select2/wiki/Knockout.js-Integration)\n* [Socket.IO](https://github.com/ivaynberg/select2/wiki/Socket.IO-Integration)\n* [PHP](https://github.com/ivaynberg/select2/wiki/PHP-Example)\n* [.Net MVC] (https://github.com/ivaynberg/select2/wiki/.Net-MVC-Example)\n\nInternationalization (i18n)\n---------------------------\n\nSelect2 supports multiple languages by simply including the right language JS\nfile (`select2_locale_it.js`, `select2_locale_nl.js`, etc.) after `select2.js`.\n\nMissing a language? Just copy `select2_locale_en.js.template`, translate\nit, and make a pull request back to Select2 here on GitHub.\n\nDocumentation\n-------------\n\nThe documentation for Select2 is available [through GitHub Pages](https://ivaynberg.github.io/select2/) and is located within this repository in the [`gh-pages` branch](https://github.com/ivaynberg/select2/tree/gh-pages).\n\nCommunity\n---------\n\n### Bug tracker\n\nHave a bug? Please create an issue here on GitHub!\n\nhttps://github.com/ivaynberg/select2/issues\n\n### Mailing list\n\nHave a question? Ask on our mailing list!\n\nselect2@googlegroups.com\n\nhttps://groups.google.com/d/forum/select2\n\n### IRC channel\n\nNeed help implementing Select2 in your project? Ask in our IRC channel!\n\n**Network:** [Freenode](https://freenode.net/) (`chat.freenode.net`)\n\n**Channel:** `#select2`\n\n**Web access:** https://webchat.freenode.net/?channels=select2\n\nCopyright and license\n---------------------\n\nCopyright 2012 Igor Vaynberg\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License.\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/bower.json",
    "content": "{\n    \"name\": \"select2\",\n    \"version\": \"3.5.2\",\n    \"main\": [\"select2.js\", \"select2.css\", \"select2.png\", \"select2x2.png\", \"select2-spinner.gif\"],\n    \"dependencies\": {\n        \"jquery\": \">= 1.7.1\"\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/component.json",
    "content": "{\n  \"name\": \"select2\",\n  \"repo\": \"ivaynberg/select2\",\n  \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n  \"version\": \"3.5.2\",\n  \"demo\": \"http://ivaynberg.github.io/select2/\",\n  \"keywords\": [\n    \"jquery\"\n  ],\n  \"main\": \"select2.js\",\n  \"styles\": [\n    \"select2.css\",\n    \"select2-bootstrap.css\"\n  ],\n  \"scripts\": [\n    \"select2.js\",\n    \"select2_locale_ar.js\",\n    \"select2_locale_bg.js\",\n    \"select2_locale_ca.js\",\n    \"select2_locale_cs.js\",\n    \"select2_locale_da.js\",\n    \"select2_locale_de.js\",\n    \"select2_locale_el.js\",\n    \"select2_locale_es.js\",\n    \"select2_locale_et.js\",\n    \"select2_locale_eu.js\",\n    \"select2_locale_fa.js\",\n    \"select2_locale_fi.js\",\n    \"select2_locale_fr.js\",\n    \"select2_locale_gl.js\",\n    \"select2_locale_he.js\",\n    \"select2_locale_hr.js\",\n    \"select2_locale_hu.js\",\n    \"select2_locale_id.js\",\n    \"select2_locale_is.js\",\n    \"select2_locale_it.js\",\n    \"select2_locale_ja.js\",\n    \"select2_locale_ka.js\",\n    \"select2_locale_ko.js\",\n    \"select2_locale_lt.js\",\n    \"select2_locale_lv.js\",\n    \"select2_locale_mk.js\",\n    \"select2_locale_ms.js\",\n    \"select2_locale_nl.js\",\n    \"select2_locale_no.js\",\n    \"select2_locale_pl.js\",\n    \"select2_locale_pt-BR.js\",\n    \"select2_locale_pt-PT.js\",\n    \"select2_locale_ro.js\",\n    \"select2_locale_ru.js\",\n    \"select2_locale_sk.js\",\n    \"select2_locale_sv.js\",\n    \"select2_locale_th.js\",\n    \"select2_locale_tr.js\",\n    \"select2_locale_uk.js\",\n    \"select2_locale_vi.js\",\n    \"select2_locale_zh-CN.js\",\n    \"select2_locale_zh-TW.js\"\n  ],\n  \"images\": [\n    \"select2-spinner.gif\",\n    \"select2.png\",\n    \"select2x2.png\"\n  ],\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/composer.json",
    "content": "{\n  \"name\":\n  \"ivaynberg/select2\",\n  \"description\": \"Select2 is a jQuery based replacement for select boxes.\",\n  \"version\": \"3.5.2\",\n  \"type\": \"component\",\n  \"homepage\": \"http://ivaynberg.github.io/select2/\",\n  \"license\": \"Apache-2.0\",\n  \"require\": {\n    \"robloach/component-installer\": \"*\",\n    \"components/jquery\": \">=1.7.1\"\n  },\n  \"extra\": {\n    \"component\": {\n      \"scripts\": [\n        \"select2.js\"\n      ],\n      \"files\": [\n        \"select2.js\",\n        \"select2_locale_*.js\",\n        \"select2.css\",\n        \"select2-bootstrap.css\",\n        \"select2-spinner.gif\",\n        \"select2.png\",\n        \"select2x2.png\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/release.sh",
    "content": "#!/bin/bash\nset -e\n\necho -n \"Enter the version for this release: \"\n\nread ver\n\nif [ ! $ver ]; then\n\techo \"Invalid version.\"\n\texit\nfi\n\nname=\"select2\"\njs=\"$name.js\"\nmini=\"$name.min.js\"\ncss=\"$name.css\"\nrelease=\"$name-$ver\"\ntag=\"$ver\"\nbranch=\"build-$ver\"\ncurbranch=`git branch | grep \"*\" | sed \"s/* //\"`\ntimestamp=$(date)\ntokens=\"s/@@ver@@/$ver/g;s/\\@@timestamp@@/$timestamp/g\"\nremote=\"origin\"\n\necho \"Pulling from origin\"\n\ngit pull\n\necho \"Updating Version Identifiers\"\n\nsed -E -e \"s/\\\"version\\\": \\\"([0-9\\.]+)\\\",/\\\"version\\\": \\\"$ver\\\",/g\" -i -- bower.json select2.jquery.json component.json composer.json package.json\n\ngit add bower.json\ngit add select2.jquery.json\ngit add component.json\ngit add composer.json\ngit add package.json\n\ngit commit -m \"modified version identifiers in descriptors for release $ver\"\ngit push\n\ngit branch \"$branch\"\ngit checkout \"$branch\"\n\necho \"Tokenizing...\"\n\nfind . -name \"$js\" | xargs -I{} sed -e \"$tokens\" -i -- {}\nfind . -name \"$css\" | xargs -I{} sed -e \"$tokens\" -i -- {}\n\nsed -e \"s/latest/$ver/g\" -i -- bower.json\n\ngit add \"$js\"\ngit add \"$css\"\n\necho \"Minifying...\"\n\necho \"/*\" > \"$mini\"\ncat LICENSE | sed \"$tokens\" >> \"$mini\"\necho \"*/\" >> \"$mini\"\n\ncurl -s \\\n\t--data-urlencode \"js_code@$js\" \\\n\thttp://marijnhaverbeke.nl/uglifyjs \\\n\t>> \"$mini\"\n\ngit add \"$mini\"\n\ngit commit -m \"release $ver\"\n\necho \"Tagging...\"\ngit tag -a \"$tag\" -m \"tagged version $ver\"\ngit push \"$remote\" --tags\n\necho \"Cleaning Up...\"\n\ngit checkout \"$curbranch\"\ngit branch -D \"$branch\"\n\necho \"Done\"\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2-2.0.css",
    "content": ".select2-container .select2-choice {\n  height: 36px;\n  border-radius: 1px;\n  border-color: #ccc;\n}\n.select2-container .select2-choice > .select2-chosen {\n  font-size: 14px;\n  line-height: 34px;\n}\n.select2-container .select2-choice .select2-arrow {\n  width: 34px;\n  border: none;\n}\n.select2-container .select2-choice .select2-arrow b {\n  background-image: url(\"triangle.png\");\n  background-repeat: no-repeat;\n  background-size: 10px 6px;\n  background-position: 50% 50%;\n}\n.select2-container-multi.select2-container-active .select2-choices {\n  border-color: #57a3f1;\n}\n.select2-dropdown-open .select2-choice {\n  border-color: #57a3f1;\n  background-color: #fff;\n}\n.select2-drop-active {\n  border: 1px solid #ddd;\n  box-shadow: 2px 3px 3px rgba(0, 0, 0, 0.11);\n  border-radius: 3px;\n  margin-top: 5px;\n}\n.select2-results {\n  margin: 0;\n  padding: 0;\n}\n.select2-results li {\n  padding: 14px 15px;\n  cursor: pointer;\n  border-bottom: 1px solid #f3f3f3;\n}\n.select2-results li.select2-result-with-children {\n  padding-left: 0;\n  padding-right: 0;\n  padding-bottom: 0;\n}\n.select2-results li.select2-result-with-children > .select2-result-label {\n  padding-left: 5px;\n  padding-bottom: 5px;\n}\n.select2-results .select2-result-label {\n  padding: 0;\n  line-height: 1;\n}\n.select2-results .select2-highlighted {\n  background-color: #f3f3f3;\n  color: #666;\n}\n.select2-results .select2-no-results {\n  padding: 14px 15px;\n}\n.select2-drop {\n  color: #666;\n}\n.select2-search {\n  padding: 14px 15px;\n}\n.select2-search input {\n  margin: 0;\n  border-top: none;\n  border-left: none;\n  border-right: none;\n}\n.select2-result-with-children li {\n  border-bottom: none;\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2-2.0.scss",
    "content": "$basic: #ccc;\n$focus: #57a3f1;\n$hoverItemColor: #f3f3f3;\n$optsColor: #666;\n$selecteItemBorder: #e5e5e5;\n$resultsTextColor: #666;\n$global: '.select2';\n\n#{$global}{\n\t&-container{\n\t\t#{$global}-choice{\n\t\t\theight: 36px;\n\t\t\tborder-radius: 1px;\n\t\t\tborder-color: $basic;\n\t\t\t& > #{$global}-chosen{\n\t\t\t\tfont-size: 14px;\n\t\t\t\tline-height: 34px;\n\t\t\t}\n\t\t\t#{$global}-arrow{\n\t\t\t\twidth: 34px;\n\t\t\t\tborder: none;\n\t\t\t\tb{\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\timage: url(\"triangle.png\");\n\t\t\t\t\t\trepeat: no-repeat;\n\t\t\t\t\t\tsize: 10px 6px;\n\t\t\t\t\t\tposition: 50% 50%;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&-multi{\n\t\t\t&#{$global}-container-active{\n\t\t\t\t#{$global}-choices{\n\t\t\t\t\tborder-color: $focus;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&-dropdown-open{\n\t\t#{$global}-choice{\n\t\t\tborder-color: $focus;\n\t\t\tbackground-color: #fff;\n\t\t}\n\t}\n\t&-drop-active{\n\t\tborder: 1px solid #ddd;\n\t\tbox-shadow: 2px 3px 3px rgba(0, 0, 0, 0.11);\n\t\tborder-radius: 3px;\n\t\tmargin-top: 5px;\n\t}\n\t&-results{\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tli{\n\t\t\tpadding: 14px 15px;\n\t\t\tcursor: pointer;\n\t\t\tborder-bottom: 1px solid $hoverItemColor;\n\t\t\t&#{$global}-result-with-children{\n\t\t\t\tpadding-left: 0;\n\t\t\t\tpadding-right: 0;\n\t\t\t\tpadding-bottom: 0;\n\t\t\t\t& > #{$global}-result-label{\n\t\t\t\t\tpadding-left: 5px;\n\t\t\t\t\tpadding-bottom: 5px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#{$global}-result-label{\n\t\t\tpadding: 0;\n\t\t\tline-height: 1;\n\t\t}\n\t\t#{$global}-highlighted{\n\t\t\tbackground-color: $hoverItemColor;\n\t\t\tcolor: $resultsTextColor;\n\t\t}\n\t\t#{$global}-no-results{\n\t\t\tpadding: 14px 15px;\n\t\t}\n\t}\n\t&-drop{\n\t\tcolor: $resultsTextColor;\n\t}\n\t&-search{\n\t\tpadding: 14px 15px;\n\t\tinput{\n\t\t    margin: 0;\n\t\t    border-top: none;\n\t\t    border-left: none;\n\t\t    border-right: none;\n\t\t}\n\t}\n\t&-result-with-children{\n\t\tli{\n\t\t\tborder-bottom: none;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2-bootstrap.css",
    "content": ".form-control .select2-choice {\n    border: 0;\n    border-radius: 2px;\n}\n\n.form-control .select2-choice .select2-arrow {\n    border-radius: 0 2px 2px 0;   \n}\n\n.form-control.select2-container {\n    height: auto !important;\n    padding: 0;\n}\n\n.form-control.select2-container.select2-dropdown-open {\n    border-color: #5897FB;\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control .select2-container.select2-dropdown-open .select2-choices {\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control.select2-container .select2-choices {\n    border: 0 !important;\n    border-radius: 3px;\n}\n\n.control-group.warning .select2-container .select2-choice,\n.control-group.warning .select2-container .select2-choices,\n.control-group.warning .select2-container-active .select2-choice,\n.control-group.warning .select2-container-active .select2-choices,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.warning .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #C09853 !important;\n}\n\n.control-group.warning .select2-container .select2-choice div {\n    border-left: 1px solid #C09853 !important;\n    background: #FCF8E3 !important;\n}\n\n.control-group.error .select2-container .select2-choice,\n.control-group.error .select2-container .select2-choices,\n.control-group.error .select2-container-active .select2-choice,\n.control-group.error .select2-container-active .select2-choices,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.error .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #B94A48 !important;\n}\n\n.control-group.error .select2-container .select2-choice div {\n    border-left: 1px solid #B94A48 !important;\n    background: #F2DEDE !important;\n}\n\n.control-group.info .select2-container .select2-choice,\n.control-group.info .select2-container .select2-choices,\n.control-group.info .select2-container-active .select2-choice,\n.control-group.info .select2-container-active .select2-choices,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.info .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #3A87AD !important;\n}\n\n.control-group.info .select2-container .select2-choice div {\n    border-left: 1px solid #3A87AD !important;\n    background: #D9EDF7 !important;\n}\n\n.control-group.success .select2-container .select2-choice,\n.control-group.success .select2-container .select2-choices,\n.control-group.success .select2-container-active .select2-choice,\n.control-group.success .select2-container-active .select2-choices,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.success .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #468847 !important;\n}\n\n.control-group.success .select2-container .select2-choice div {\n    border-left: 1px solid #468847 !important;\n    background: #DFF0D8 !important;\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2.css",
    "content": "/*\nVersion: 3.5.2 Timestamp: Sat Nov  1 14:43:36 EDT 2014\n*/\n.select2-container {\n    margin: 0;\n    position: relative;\n    display: inline-block;\n    /* inline-block for ie7 */\n    zoom: 1;\n    *display: inline;\n    vertical-align: middle;\n}\n.select2-container.form-control{\n    border: none;\n    padding: 0;\n}\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n     -moz-box-sizing: border-box; /* firefox */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 30px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #ccc;\n    white-space: nowrap;\n    line-height: 28px;\n    color: #444;\n    text-decoration: none;\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n    padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #ccc;\n\n\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n    margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    float: none;\n    width: auto;\n    font-size: 12px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n    margin-left: 26px;\n    margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n    display: none;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 24px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n    display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    border: 0;\n    margin: 0;\n    padding: 0;\n    position: fixed;\n    left: 0;\n    top: 0;\n    min-height: 100%;\n    min-width: 100%;\n    height: auto;\n    width: auto;\n    opacity: 0;\n    z-index: 9998;\n    /* styles required for IE to work */\n    background-color: #fff;\n    filter: alpha(opacity=0);\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top: -1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #ccc;\n    border-top: 0;\n\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #ccc;\n    border-bottom: 0;\n\n}\n\n.select2-drop-active {\n    border: 1px solid #66afe9;\n    border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n    border-top: 1px solid #66afe9;\n}\n\n.select2-drop-auto-width {\n    border-top: 1px solid #ccc;\n    width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n    padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n    display: inline-block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n    border-left: 1px solid #ccc;\n    background-clip: padding-box;\n    background: #fff;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n    left: 0;\n    right: auto;\n\n    border-left: none;\n    border-right: 1px solid #ccc;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n    background-position: 2px 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding-left: 4px;\n    padding-right: 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n    margin-top: 3px;\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #ccc;\n\n    -webkit-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n    padding: 4px 5px 4px 20px;\n\n    background: #fff url('select2.png') no-repeat -37px -22px;\n    background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n    margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #66afe9;\n    outline: none;\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n\n    background-color: #eee;\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n    border: 1px solid #66afe9;\n    border-top-color: transparent;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n    border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n    padding: 0 4px 0 0;\n    margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n    padding-left: 0;\n}\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    min-height: 1em;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: #fff;\n    color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n    padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n    background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0 5px 0 0;\n    position: relative;\n\n    border: 1px solid #ccc;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n    padding: 0 0 0 5px;\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #66afe9;\n    outline: none;\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n    float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 5px 5px 5px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #ccc;\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n    margin: 3px 5px 3px 0;\n    padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 5px;\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n    right: auto;\n    left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n    left: auto;\n    right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {    display: none;\n    background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n    clip: rect(0 0 0 0) !important;\n    width: 1px !important;\n    height: 1px !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n    outline: 0 !important;\n    left: 0px !important;\n    top: 0px !important;\n}\n\n.select2-display-none {\n    display: none;\n}\n\n.select2-measure-scrollbar {\n    position: absolute;\n    top: -10000px;\n    left: -10000px;\n    width: 100px;\n    height: 100px;\n    overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx)  {\n    .select2-search input,\n    .select2-search-choice-close,\n    .select2-container .select2-choice abbr,\n    .select2-container .select2-choice .select2-arrow b {\n        background-image: url('select2x2.png') !important;\n        background-repeat: no-repeat !important;\n        background-size: 60px 40px !important;\n    }\n\n    .select2-search input {\n        background-position: 100% -21px !important;\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2.jquery.json",
    "content": "{\n    \"name\": \"select2\",\n    \"title\": \"Select2\",\n    \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n    \"keywords\": [\n        \"select\",\n        \"autocomplete\",\n        \"typeahead\",\n        \"dropdown\",\n        \"multiselect\",\n        \"tag\",\n        \"tagging\"\n    ],\n    \"version\": \"3.5.2\",\n    \"author\": {\n        \"name\": \"Igor Vaynberg\",\n        \"url\": \"https://github.com/ivaynberg\"\n    },\n    \"licenses\": [\n        {\n            \"type\": \"Apache\",\n            \"url\": \"http://www.apache.org/licenses/LICENSE-2.0\"\n        },\n        {\n            \"type\": \"GPL v2\",\n            \"url\": \"http://www.gnu.org/licenses/gpl-2.0.html\"\n        }\n    ],\n    \"bugs\": \"https://github.com/ivaynberg/select2/issues\",\n    \"homepage\": \"http://ivaynberg.github.com/select2\",\n    \"docs\": \"http://ivaynberg.github.com/select2/\",\n    \"download\": \"https://github.com/ivaynberg/select2/tags\",\n    \"dependencies\": {\n        \"jquery\": \">=1.7.1\"\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2.js",
    "content": "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: 3.5.2 Timestamp: Sat Nov  1 14:43:36 EDT 2014\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n(function ($) {\n    if(typeof $.fn.each2 == \"undefined\") {\n        $.extend($.fn, {\n            /*\n            * 4-10 times faster .each replacement\n            * use it carefully, as it overrides jQuery context of element on each iteration\n            */\n            each2 : function (c) {\n                var j = $([0]), i = -1, l = this.length;\n                while (\n                    ++i < l\n                    && (j.context = j[0] = this[i])\n                    && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n                );\n                return this;\n            }\n        });\n    }\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    },\n    MEASURE_SCROLLBAR_TEMPLATE = \"<div class='select2-measure-scrollbar'></div>\",\n\n    DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\",\"\\u0386\":\"\\u0391\",\"\\u0388\":\"\\u0395\",\"\\u0389\":\"\\u0397\",\"\\u038A\":\"\\u0399\",\"\\u03AA\":\"\\u0399\",\"\\u038C\":\"\\u039F\",\"\\u038E\":\"\\u03A5\",\"\\u03AB\":\"\\u03A5\",\"\\u038F\":\"\\u03A9\",\"\\u03AC\":\"\\u03B1\",\"\\u03AD\":\"\\u03B5\",\"\\u03AE\":\"\\u03B7\",\"\\u03AF\":\"\\u03B9\",\"\\u03CA\":\"\\u03B9\",\"\\u0390\":\"\\u03B9\",\"\\u03CC\":\"\\u03BF\",\"\\u03CD\":\"\\u03C5\",\"\\u03CB\":\"\\u03C5\",\"\\u03B0\":\"\\u03C5\",\"\\u03C9\":\"\\u03C9\",\"\\u03C2\":\"\\u03C3\"};\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n\n    function reinsertElement(element) {\n        var placeholder = $(document.createTextNode(''));\n\n        element.before(placeholder);\n        placeholder.before(element);\n        placeholder.remove();\n    }\n\n    function stripDiacritics(str) {\n        // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n        function match(a) {\n            return DIACRITICS[a] || a;\n        }\n\n        return str.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    function measureScrollbar () {\n        var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\n        $template.appendTo(document.body);\n\n        var dim = {\n            width: $template.width() - $template[0].clientWidth,\n            height: $template.height() - $template[0].clientHeight\n        };\n        $template.remove();\n\n        return dim;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        // Check whether 'a' or 'b' is a string (primitive or object).\n        // The concatenation of an empty string (+'') converts its argument to a string's primitive.\n        if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\n        if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, transforming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator, transform) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = transform(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.on(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.on(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n        element.on(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.on(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);\n            if (isVisible && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function getCursorInfo(el) {\n        el = $(el)[0];\n        var offset = 0;\n        var length = 0;\n        if ('selectionStart' in el) {\n            offset = el.selectionStart;\n            length = el.selectionEnd - offset;\n        } else if ('selection' in document) {\n            el.focus();\n            var sel = document.selection.createRange();\n            length = document.selection.createRange().text.length;\n            sel.moveStart('character', -el.value.length);\n            offset = sel.text.length - length;\n        }\n        return { offset: offset, length: length };\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n            var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n            sizer = $(document.createElement(\"div\")).css({\n                position: \"absolute\",\n                left: \"-10000px\",\n                top: \"-10000px\",\n                display: \"none\",\n                fontSize: style.fontSize,\n                fontFamily: style.fontFamily,\n                fontStyle: style.fontStyle,\n                fontWeight: style.fontWeight,\n                letterSpacing: style.letterSpacing,\n                textTransform: style.textTransform,\n                whiteSpace: \"nowrap\"\n            });\n            sizer.attr(\"class\",\"select2-sizer\");\n            $(document.body).append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = $.trim(dest.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n\n        classes = $.trim(src.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n\n                    if (adapted) {\n                        replacements.push(adapted);\n                    }\n                }\n            });\n        }\n\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    function defaultEscapeMarkup(markup) {\n        var replace_map = {\n            '\\\\': '&#92;',\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#39;',\n            \"/\": '&#47;'\n        };\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n            return replace_map[match];\n        });\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration parameters\n     * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                var data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.fn.select2.ajaxDefaults.transport,\n                    // deprecated - to be removed in 4.0  - use params instead\n                    deprecated = {\n                        type: options.type || 'GET', // set type of request (GET or POST)\n                        cache: options.cache || false,\n                        jsonpCallback: options.jsonpCallback||undefined,\n                        dataType: options.dataType||\"json\"\n                    },\n                    params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if (handler && typeof handler.abort === \"function\") { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    success: function (data) {\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        // added query as third paramter to keep backwards compatibility\n                        var results = options.results(data, query.page, query);\n                        query.callback(results);\n                    },\n                    error: function(jqXHR, textStatus, errorThrown){\n                        var results = {\n                            hasError: true,\n                            jqXHR: jqXHR,\n                            textStatus: textStatus,\n                            errorThrown: errorThrown\n                        };\n\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n         if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n         if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            var result = isFunc ? data(query) : data;\n            if ($.isArray(result)) {\n                $(result).each(function () {\n                    var isObject = this.text !== undefined,\n                        text = isObject ? this.text : this;\n                    if (t === \"\" || query.matcher(t, text)) {\n                        filtered.results.push(isObject ? this : {id: this, text: this});\n                    }\n                });\n                query.callback(filtered);\n            }\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        if (typeof(formatter) === 'string') return true;\n        throw new Error(formatterName +\" must be a string, function, or falsy value\");\n    }\n\n  /**\n   * Returns a given value\n   * If given a function, returns its output\n   *\n   * @param val string|function\n   * @param context value of \"this\" to be passed to function\n   * @returns {*}\n   */\n    function evaluate(val, context) {\n        if ($.isFunction(val)) {\n            var args = Array.prototype.slice.call(arguments, 2);\n            return val.apply(context, args);\n        }\n        return val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice.call(this, token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    function cleanupJQueryElements() {\n        var self = this;\n\n        $.each(arguments, function (i, element) {\n            self[element].remove();\n            self[element] = null;\n        });\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\";\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                opts.element.data(\"select2\").destroy();\n            }\n\n            this.container = this.createContainer();\n\n            this.liveRegion = $('.select2-hidden-accessible');\n            if (this.liveRegion.length == 0) {\n                this.liveRegion = $(\"<span>\", {\n                        role: \"status\",\n                        \"aria-live\": \"polite\"\n                    })\n                    .addClass(\"select2-hidden-accessible\")\n                    .appendTo(document.body);\n            }\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerEventName= this.containerId\n                .replace(/([.])/g, '_')\n                .replace(/([;&,\\-\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            this.container.attr(\"title\", opts.element.attr(\"title\"));\n\n            this.body = $(document.body);\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.attr(\"style\", opts.element.attr(\"style\"));\n            this.container.css(evaluate(opts.containerCss, this.opts.element));\n            this.container.addClass(evaluate(opts.containerCssClass, this.opts.element));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabindex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .attr(\"tabindex\", \"-1\")\n                .before(this.container)\n                .on(\"click.select2\", killEvent); // do not leak click events\n\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n\n            syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element));\n            this.dropdown.data(\"select2\", this);\n            this.dropdown.on(\"click\", killEvent);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            this.queryCount = 0;\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            this.container.on(\"click\", killEvent);\n\n            installFilteredMouseMove(this.results);\n\n            this.dropdown.on(\"mousemove-filtered\", resultsSelector, this.bind(this.highlightUnderEvent));\n            this.dropdown.on(\"touchstart touchmove touchend\", resultsSelector, this.bind(function (event) {\n                this._touchEvent = true;\n                this.highlightUnderEvent(event);\n            }));\n            this.dropdown.on(\"touchmove\", resultsSelector, this.bind(this.touchMoved));\n            this.dropdown.on(\"touchstart touchend\", resultsSelector, this.bind(this.clearTouchMoved));\n\n            // Waiting for a click event on touch devices to select option and hide dropdown\n            // otherwise click will be triggered on an underlying element\n            this.dropdown.on('click', this.bind(function (event) {\n                if (this._touchEvent) {\n                    this._touchEvent = false;\n                    this.selectHighlighted();\n                }\n            }));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\n\n            // do not propagate change event from the search field out of the component\n            $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n            $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop();\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.on(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.\n            this.dropdown.on(\"click mouseup mousedown touchstart touchend focusin\", function (e) { e.stopPropagation(); });\n\n            this.nextSearchTerm = undefined;\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.maximumInputLength !== null) {\n                this.search.attr(\"maxlength\", opts.maximumInputLength);\n            }\n\n            var disabled = opts.element.prop(\"disabled\");\n            if (disabled === undefined) disabled = false;\n            this.enable(!disabled);\n\n            var readonly = opts.element.prop(\"readonly\");\n            if (readonly === undefined) readonly = false;\n            this.readonly(readonly);\n\n            // Calculate size of scrollbar\n            scrollBarDimensions = scrollBarDimensions || measureScrollbar();\n\n            this.autofocus = opts.element.prop(\"autofocus\");\n            opts.element.prop(\"autofocus\", false);\n            if (this.autofocus) this.focus();\n\n            this.search.attr(\"placeholder\", opts.searchInputPlaceholder);\n        },\n\n        // abstract\n        destroy: function () {\n            var element=this.opts.element, select2 = element.data(\"select2\"), self = this;\n\n            this.close();\n\n            if (element.length && element[0].detachEvent && self._sync) {\n                element.each(function () {\n                    if (self._sync) {\n                        this.detachEvent(\"onpropertychange\", self._sync);\n                    }\n                });\n            }\n            if (this.propertyObserver) {\n                this.propertyObserver.disconnect();\n                this.propertyObserver = null;\n            }\n            this._sync = null;\n\n            if (select2 !== undefined) {\n                select2.container.remove();\n                select2.liveRegion.remove();\n                select2.dropdown.remove();\n                element\n                    .show()\n                    .removeData(\"select2\")\n                    .off(\".select2\")\n                    .prop(\"autofocus\", this.autofocus || false);\n                if (this.elementTabIndex) {\n                    element.attr({tabindex: this.elementTabIndex});\n                } else {\n                    element.removeAttr(\"tabindex\");\n                }\n                element.show();\n            }\n\n            cleanupJQueryElements.call(this,\n                \"container\",\n                \"liveRegion\",\n                \"dropdown\",\n                \"results\",\n                \"search\"\n            );\n        },\n\n        // abstract\n        optionToData: function(element) {\n            if (element.is(\"option\")) {\n                return {\n                    id:element.prop(\"value\"),\n                    text:element.text(),\n                    element: element.get(),\n                    css: element.attr(\"class\"),\n                    disabled: element.prop(\"disabled\"),\n                    locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\n                };\n            } else if (element.is(\"optgroup\")) {\n                return {\n                    text:element.attr(\"label\"),\n                    children:[],\n                    element: element.get(),\n                    css: element.attr(\"class\")\n                };\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl, self = this;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate, id=this.opts.id, liveRegion=this.liveRegion;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        // collect the created nodes for bulk append\n                        var nodes = [];\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n                            node.attr(\"role\", \"presentation\");\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n                            label.attr(\"id\", \"select2-result-label-\" + nextUid());\n                            label.attr(\"role\", \"option\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                                node.append(label);\n                            }\n\n\n                            if (compound) {\n\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            nodes.push(node[0]);\n                        }\n\n                        // bulk append the created nodes\n                        container.append(nodes);\n                        liveRegion.text(opts.formatMatches(results.length));\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.data(\"select2Tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, placeholderOption, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push(self.optionToData(element));\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group=self.optionToData(element);\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        placeholderOption = this.getPlaceholderOption();\n                        if (placeholderOption) {\n                            children=children.not(placeholderOption);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and their id is hardcoded\n                opts.id=function(e) { return e.id; };\n            } else {\n                if (!(\"query\" in opts)) {\n\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator, opts.transformVal)).each(function () {\n                                    var obj = { id: this, text: this },\n                                        tags = opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });\n                                    data.push(obj);\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            if (opts.createSearchChoicePosition === 'top') {\n                opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };\n            }\n            else if (opts.createSearchChoicePosition === 'bottom') {\n                opts.createSearchChoicePosition = function(list, item) { list.push(item); };\n            }\n            else if (typeof(opts.createSearchChoicePosition) !== \"function\")  {\n                throw \"invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function\";\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, observer, self = this;\n\n            el.on(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            this._sync = this.bind(function () {\n\n                // sync enabled state\n                var disabled = el.prop(\"disabled\");\n                if (disabled === undefined) disabled = false;\n                this.enable(!disabled);\n\n                var readonly = el.prop(\"readonly\");\n                if (readonly === undefined) readonly = false;\n                this.readonly(readonly);\n\n                if (this.container) {\n                    syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                    this.container.addClass(evaluate(this.opts.containerCssClass, this.opts.element));\n                }\n\n                if (this.dropdown) {\n                    syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                    this.dropdown.addClass(evaluate(this.opts.dropdownCssClass, this.opts.element));\n                }\n\n            });\n\n            // IE8-10 (IE9/10 won't fire propertyChange via attachEventListener)\n            if (el.length && el[0].attachEvent) {\n                el.each(function() {\n                    this.attachEvent(\"onpropertychange\", self._sync);\n                });\n            }\n\n            // safari, chrome, firefox, IE11\n            observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;\n            if (observer !== undefined) {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new observer(function (mutations) {\n                    $.each(mutations, self._sync);\n                });\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        // abstract\n        triggerSelect: function(data) {\n            var evt = $.Event(\"select2-selecting\", { val: this.id(data), object: data, choice: data });\n            this.opts.element.trigger(evt);\n            return !evt.isDefaultPrevented();\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignores the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        //abstract\n        isInterfaceEnabled: function()\n        {\n            return this.enabledInterface === true;\n        },\n\n        // abstract\n        enableInterface: function() {\n            var enabled = this._enabled && !this._readonly,\n                disabled = !enabled;\n\n            if (enabled === this.enabledInterface) return false;\n\n            this.container.toggleClass(\"select2-container-disabled\", disabled);\n            this.close();\n            this.enabledInterface = enabled;\n\n            return true;\n        },\n\n        // abstract\n        enable: function(enabled) {\n            if (enabled === undefined) enabled = true;\n            if (this._enabled === enabled) return;\n            this._enabled = enabled;\n\n            this.opts.element.prop(\"disabled\", !enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        disable: function() {\n            this.enable(false);\n        },\n\n        // abstract\n        readonly: function(enabled) {\n            if (enabled === undefined) enabled = false;\n            if (this._readonly === enabled) return;\n            this._readonly = enabled;\n\n            this.opts.element.prop(\"readonly\", enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        opened: function () {\n            return (this.container) ? this.container.hasClass(\"select2-dropdown-open\") : false;\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var $dropdown = this.dropdown,\n                container = this.container,\n                offset = container.offset(),\n                height = container.outerHeight(false),\n                width = container.outerWidth(false),\n                dropHeight = $dropdown.outerHeight(false),\n                $window = $(window),\n                windowWidth = $window.width(),\n                windowHeight = $window.height(),\n                viewPortRight = $window.scrollLeft() + windowWidth,\n                viewportBottom = $window.scrollTop() + windowHeight,\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(),\n                dropWidth = $dropdown.outerWidth(false),\n                enoughRoomOnRight = function() {\n                    return dropLeft + dropWidth <= viewPortRight;\n                },\n                enoughRoomOnLeft = function() {\n                    return offset.left + viewPortRight + container.outerWidth(false)  > dropWidth;\n                },\n                aboveNow = $dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                changeDirection,\n                css,\n                resultsListNode;\n\n            // always prefer the current above/below alignment, unless there is not enough room\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) {\n                    changeDirection = true;\n                    above = false;\n                }\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) {\n                    changeDirection = true;\n                    above = true;\n                }\n            }\n\n            //if we are changing direction we need to get positions when dropdown is hidden;\n            if (changeDirection) {\n                $dropdown.hide();\n                offset = this.container.offset();\n                height = this.container.outerHeight(false);\n                width = this.container.outerWidth(false);\n                dropHeight = $dropdown.outerHeight(false);\n                viewPortRight = $window.scrollLeft() + windowWidth;\n                viewportBottom = $window.scrollTop() + windowHeight;\n                dropTop = offset.top + height;\n                dropLeft = offset.left;\n                dropWidth = $dropdown.outerWidth(false);\n                $dropdown.show();\n\n                // fix so the cursor does not move to the left within the search-textbox in IE\n                this.focusSearch();\n            }\n\n            if (this.opts.dropdownAutoWidth) {\n                resultsListNode = $('.select2-results', $dropdown)[0];\n                $dropdown.addClass('select2-drop-auto-width');\n                $dropdown.css('width', '');\n                // Add scrollbar width to dropdown if vertical scrollbar is present\n                dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);\n                dropWidth > width ? width = dropWidth : dropWidth = width;\n                dropHeight = $dropdown.outerHeight(false);\n            }\n            else {\n                this.container.removeClass('select2-drop-auto-width');\n            }\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body.scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n            if (this.body.css('position') !== 'static') {\n                bodyOffset = this.body.offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            if (!enoughRoomOnRight() && enoughRoomOnLeft()) {\n                dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;\n            }\n\n            css =  {\n                left: dropLeft,\n                width: width\n            };\n\n            if (above) {\n                css.top = offset.top - dropHeight;\n                css.bottom = 'auto';\n                this.container.addClass(\"select2-drop-above\");\n                $dropdown.addClass(\"select2-drop-above\");\n            }\n            else {\n                css.top = dropTop;\n                css.bottom = 'auto';\n                this.container.removeClass(\"select2-drop-above\");\n                $dropdown.removeClass(\"select2-drop-above\");\n            }\n            css = $.extend(css, evaluate(this.opts.dropdownCss, this.opts.element));\n\n            $dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            if (this._enabled === false || this._readonly === true) return false;\n\n            event = $.Event(\"select2-opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            this.opening();\n\n            // Only bind the document mousemove when the dropdown is visible\n            $document.on(\"mousemove.select2Event\", function (e) {\n                lastMousePosition.x = e.pageX;\n                lastMousePosition.y = e.pageY;\n            });\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n            this.clearDropdownAlignmentPreference();\n\n            if(this.dropdown[0] !== this.body.children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body);\n            }\n\n            // create the dropdown mask if doesn't already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length === 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body);\n                mask.on(\"mousedown touchstart click\", function (e) {\n                    // Prevent IE from generating a click event on the body\n                    reinsertElement(mask);\n\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close();\n                        e.preventDefault();\n                        e.stopPropagation();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.show();\n\n            this.positionDropdown();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).on(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    if (that.opened()) that.positionDropdown();\n                });\n            });\n\n\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\").removeClass(\"select2-container-active\");\n            this.results.empty();\n\n            // Now that the dropdown is closed, unbind the global document mousemove event\n            $document.off(\"mousemove.select2Event\");\n\n            this.clearSearch();\n            this.search.removeClass(\"select2-active\");\n            this.opts.element.trigger($.Event(\"select2-close\"));\n        },\n\n        /**\n         * Opens control, sets input value, and updates results.\n         */\n        // abstract\n        externalSearch: function (term) {\n            this.open();\n            this.search.val(term);\n            this.updateResults(false);\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize, this.opts.element);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more, topOffset;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices().find('.select2-result-label');\n\n            child = $(children[index]);\n\n            topOffset = (child.offset() || {}).top || 0;\n\n            hb = topOffset + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(false);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = topOffset - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            return this.results.find(\".select2-result-selectable:not(.select2-disabled):not(.select2-selected)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.removeHighlight();\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            // ensure assistive technology can determine the active choice\n            this.search.attr(\"aria-activedescendant\", choice.find(\".select2-result-label\").attr(\"id\"));\n\n            this.ensureHighlightVisible();\n\n            this.liveRegion.text(choice.text());\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"select2-highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        removeHighlight: function() {\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n        },\n\n        touchMoved: function() {\n            this._touchMoved = true;\n        },\n\n        clearTouchMoved: function() {\n          this._touchMoved = false;\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n                var choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove all highlights\n                this.removeHighlight();\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n\n                    if (data.more===true) {\n                        more.detach().appendTo(results).html(self.opts.escapeMarkup(evaluate(self.opts.formatLoadMore, self.opts.element, page+1)));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                    this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search,\n                results = this.results,\n                opts = this.opts,\n                data,\n                self = this,\n                input,\n                term = search.val(),\n                lastTerm = $.data(this.container, \"select2-last-term\"),\n                // sequence number used to drop out-of-order responses\n                queryNumber;\n\n            // prevent duplicate queries against the same term\n            if (initial !== true && lastTerm && equal(term, lastTerm)) return;\n\n            $.data(this.container, \"select2-last-term\", term);\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            function postRender() {\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n                if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {\n                    self.liveRegion.text(results.text());\n                }\n                else {\n                    self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable:not(\".select2-selected\")').length));\n                }\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            queryNumber = ++this.queryCount;\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n                    render(\"<li class='select2-selection-limit'>\" + evaluate(opts.formatSelectionTooBig, opts.element, maxSelSize) + \"</li>\");\n                    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooShort, opts.element, search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                if (initial && this.showSearch) this.showSearch(true);\n                return;\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooLong, opts.element, search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            if (opts.formatSearching && this.findHighlightableChoices().length === 0) {\n                render(\"<li class='select2-searching'>\" + evaluate(opts.formatSearching, opts.element) + \"</li>\");\n            }\n\n            search.addClass(\"select2-active\");\n\n            this.removeHighlight();\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore old responses\n                if (queryNumber != this.queryCount) {\n                  return;\n                }\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) {\n                    this.search.removeClass(\"select2-active\");\n                    return;\n                }\n\n                // handle ajax error\n                if(data.hasError !== undefined && checkFormatter(opts.formatAjaxError, \"formatAjaxError\")) {\n                    render(\"<li class='select2-ajax-error'>\" + evaluate(opts.formatAjaxError, opts.element, data.jqXHR, data.textStatus, data.errorThrown) + \"</li>\");\n                    return;\n                }\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(self, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            this.opts.createSearchChoicePosition(data.results, def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatNoMatches, opts.element, search.val()) + \"</li>\");\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + opts.escapeMarkup(evaluate(opts.formatLoadMore, opts.element, this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n\n                this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            if (this._touchMoved) {\n              this.clearTouchMoved();\n              return;\n            }\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            } else if (options && options.noFocus) {\n                this.close();\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            var placeholderOption;\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder ||\n                ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);\n        },\n\n        // abstract\n        getPlaceholderOption: function() {\n            if (this.select) {\n                var firstOption = this.select.children('option').first();\n                if (this.opts.placeholderOption !== undefined ) {\n                    //Determine the placeholder option based on the specified placeholderOption setting\n                    return (this.opts.placeholderOption === \"first\" && firstOption) ||\n                           (typeof this.opts.placeholderOption === \"function\" && this.opts.placeholderOption(this.select));\n                } else if ($.trim(firstOption.text()) === \"\" && firstOption.val() === \"\") {\n                    //No explicit placeholder option specified, use the first if it's blank\n                    return firstOption;\n                }\n            }\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l, attr;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (style !== undefined) {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            attr = attrs[i].replace(/\\s/g, '');\n                            matches = attr.match(/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>\",\n                \"   <span class='select2-chosen'>&#160;</span><abbr class='select2-search-choice-close'></abbr>\",\n                \"   <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>\",\n                \"</a>\",\n                \"<label for='' class='select2-offscreen'></label>\",\n                \"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />\",\n                \"<div class='select2-drop select2-display-none'>\",\n                \"   <div class='select2-search'>\",\n                \"       <label for='' class='select2-offscreen'></label>\",\n                \"       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'\",\n                \"       aria-autocomplete='list' />\",\n                \"   </div>\",\n                \"   <ul class='select2-results' role='listbox'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // single\n        opening: function () {\n            var el, range, len;\n\n            if (this.opts.minimumResultsForSearch >= 0) {\n                this.showSearch(true);\n            }\n\n            this.parent.opening.apply(this, arguments);\n\n            if (this.showSearchInput !== false) {\n                // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\n                // all other browsers handle this just fine\n\n                this.search.val(this.focusser.val());\n            }\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n                // move the cursor to the end after focussing, otherwise it will be at the beginning and\n                // new text will appear *before* focusser.val()\n                el = this.search.get(0);\n                if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                } else if (el.setSelectionRange) {\n                    len = this.search.val().length;\n                    el.setSelectionRange(len, len);\n                }\n            }\n\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() === \"\") {\n                if(this.nextSearchTerm != undefined){\n                    this.search.val(this.nextSearchTerm);\n                    this.search.select();\n                }\n            }\n\n            this.focusser.prop(\"disabled\", true).val(\"\");\n            this.updateResults(true);\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // single\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.prop(\"disabled\", false);\n                if (this.opts.shouldFocusInput(this)) {\n                    this.focusser.focus();\n                }\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        destroy: function() {\n            $(\"label[for='\" + this.focusser.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"selection\",\n                \"focusser\"\n            );\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown,\n                idSuffix = nextUid(),\n                elementLabel;\n\n            if (this.opts.minimumResultsForSearch < 0) {\n                this.showSearch(false);\n            } else {\n                this.showSearch(true);\n            }\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            // add aria associations\n            selection.find(\".select2-chosen\").attr(\"id\", \"select2-chosen-\"+idSuffix);\n            this.focusser.attr(\"aria-labelledby\", \"select2-chosen-\"+idSuffix);\n            this.results.attr(\"id\", \"select2-results-\"+idSuffix);\n            this.search.attr(\"aria-owns\", \"select2-results-\"+idSuffix);\n\n            // rewrite labels from original element to focusser\n            this.focusser.attr(\"id\", \"s2id_autogen\"+idSuffix);\n\n            elementLabel = $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\");\n            this.opts.element.focus(this.bind(function () { this.focus(); }));\n\n            this.focusser.prev()\n                .text(elementLabel.text())\n                .attr('for', this.focusser.attr('id'));\n\n            // Ensure the original element retains an accessible name\n            var originalTitle = this.opts.element.attr(\"title\");\n            this.opts.element.attr(\"title\", (originalTitle || elementLabel.text()));\n\n            this.focusser.attr(\"tabindex\", this.elementTabIndex);\n\n            // write label for search field using the label from the focusser element\n            this.search.attr(\"id\", this.focusser.attr('id') + '_search');\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.focusser.attr('id') + \"']\").text())\n                .attr('for', this.search.attr('id'));\n\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                // filter 229 keyCodes (input method editor is processing key input)\n                if (229 == e.keyCode) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus: true});\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body.get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        if (this.opened()) {\n                            this.search.focus();\n                        }\n                    }), 0);\n                }\n            }));\n\n            this.focusser.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n\n                    if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\n\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.on(\"keyup-change input\", this.bind(function(e) {\n                if (this.opts.minimumResultsForSearch >= 0) {\n                    e.stopPropagation();\n                    if (this.opened()) return;\n                    this.open();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", \"abbr\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) {\n                    return;\n                }\n\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n\n                if (this.selection) {\n                    this.selection.focus();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", this.bind(function (e) {\n                // Prevent IE from generating a click event on the body\n                reinsertElement(selection);\n\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.isInterfaceEnabled()) {\n                    this.open();\n                }\n\n                killEvent(e);\n            }));\n\n            dropdown.on(\"mousedown touchstart\", this.bind(function() {\n                if (this.opts.shouldFocusInput(this)) {\n                    this.search.focus();\n                }\n            }));\n\n            selection.on(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            })).on(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                    this.opts.element.trigger($.Event(\"select2-blur\"));\n                }\n            }));\n            this.search.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.hide();\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                var evt = $.Event(\"select2-clearing\");\n                this.opts.element.trigger(evt);\n                if (evt.isDefaultPrevented()) {\n                    return;\n                }\n                var placeholderOption = this.getPlaceholderOption();\n                this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\n                this.selection.find(\".select2-chosen\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.isPlaceholderOptionSelected()) {\n                this.updateSelection(null);\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                        self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val());\n                    }\n                });\n            }\n        },\n\n        isPlaceholderOptionSelected: function() {\n            var placeholderOption;\n            if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered\n            return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\n                || (this.opts.element.val() === \"\")\n                || (this.opts.element.val() === undefined)\n                || (this.opts.element.val() === null);\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\"option\").filter(function() { return this.selected && !this.disabled });\n                    // a single select box always has a value, no need to null check 'selected'\n                    callback(self.optionToData(selected));\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without a valid placeholder option ignore it\n            if (this.select) {\n                if (this.getPlaceholderOption() === undefined) {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\n\n                // check for a placeholder option if attached to a select\n                if (this.select && this.getPlaceholderOption() === undefined) return;\n\n                this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.container.removeClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                if (initial === true && selected >= 0) {\n                    this.highlight(selected);\n                } else {\n                    this.highlight(0);\n                }\n            }\n\n            // hide the search box if this is the first we got the results and there are enough of them for search\n\n            if (initial === true) {\n                var min = this.opts.minimumResultsForSearch;\n                if (min >= 0) {\n                    this.showSearch(countResults(data.results) >= min);\n                }\n            }\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            if (this.showSearchInput === showSearchInput) return;\n\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\n        },\n\n        // single\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data)) { return; }\n\n            var old = this.opts.element.val(),\n                oldData = this.data();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\n\n            this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n            this.close();\n\n            if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n\n            if (!equal(old, this.id(data))) {\n                this.triggerChange({ added: data, removed: oldData });\n            }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            if (data !== null) {\n                formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\n            }\n            if (formatted !== undefined) {\n                container.append(formatted);\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, container);\n            if (cssClass !== undefined) {\n                container.addClass(cssClass);\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.container.addClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        val: function () {\n            var val,\n                triggerChange = false,\n                data = null,\n                self = this,\n                oldData = this.data();\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            if (this.select) {\n                this.select\n                    .val(val)\n                    .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n                        data = self.optionToData(elm);\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange({added: data, removed:oldData});\n                }\n            } else {\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    return;\n                }\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange({added: data, removed:oldData});\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data,\n                triggerChange = false;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (arguments.length > 1) {\n                    triggerChange = arguments[1];\n                }\n                if (!value) {\n                    this.clear(triggerChange);\n                } else {\n                    data = this.data();\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                    if (triggerChange) {\n                        this.triggerChange({added: value, removed:data});\n                    }\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"<ul class='select2-choices'>\",\n                \"  <li class='select2-search-field'>\",\n                \"    <label for='' class='select2-offscreen'></label>\",\n                \"    <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>\",\n                \"  </li>\",\n                \"</ul>\",\n                \"<div class='select2-drop select2-drop-multi select2-display-none'>\",\n                \"   <ul class='select2-results'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            // TODO validate placeholder is a string if specified\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\"option\").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {\n                        data.push(self.optionToData(elm));\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator, opts.transformVal);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            // reorder matches based on the order they appear in the ids array because right now\n                            // they are in the order in which they appear in data array\n                            var ordered = [];\n                            for (var i = 0; i < ids.length; i++) {\n                                var id = ids[i];\n                                for (var j = 0; j < matches.length; j++) {\n                                    var match = matches[j];\n                                    if (equal(id, opts.id(match))) {\n                                        ordered.push(match);\n                                        matches.splice(j, 1);\n                                        break;\n                                    }\n                                }\n                            }\n                            callback(ordered);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // multi\n        selectChoice: function (choice) {\n\n            var selected = this.container.find(\".select2-search-choice-focus\");\n            if (selected.length && choice && choice[0] == selected[0]) {\n\n            } else {\n                if (selected.length) {\n                    this.opts.element.trigger(\"choice-deselected\", selected);\n                }\n                selected.removeClass(\"select2-search-choice-focus\");\n                if (choice && choice.length) {\n                    this.close();\n                    choice.addClass(\"select2-search-choice-focus\");\n                    this.opts.element.trigger(\"choice-selected\", choice);\n                }\n            }\n        },\n\n        // multi\n        destroy: function() {\n            $(\"label[for='\" + this.search.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"searchContainer\",\n                \"selection\"\n            );\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            var _this = this;\n            this.selection.on(\"click\", \".select2-container:not(.select2-container-disabled) .select2-search-choice:not(.select2-locked)\", function (e) {\n                _this.search[0].focus();\n                _this.selectChoice($(this));\n            });\n\n            // rewrite labels from original element to focusser\n            this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\").text())\n                .attr('for', this.search.attr('id'));\n            this.opts.element.focus(this.bind(function () { this.focus(); }));\n\n            this.search.on(\"input paste\", this.bind(function() {\n                if (this.search.attr('placeholder') && this.search.val().length == 0) return;\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.attr(\"tabindex\", this.elementTabIndex);\n\n            this.keydowns = 0;\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                ++this.keydowns;\n                var selected = selection.find(\".select2-search-choice-focus\");\n                var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\n                var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\n                var pos = getCursorInfo(this.search);\n\n                if (selected.length &&\n                    (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\n                    var selectedChoice = selected;\n                    if (e.which == KEY.LEFT && prev.length) {\n                        selectedChoice = prev;\n                    }\n                    else if (e.which == KEY.RIGHT) {\n                        selectedChoice = next.length ? next : null;\n                    }\n                    else if (e.which === KEY.BACKSPACE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = prev.length ? prev : next;\n                        }\n                    } else if (e.which == KEY.DELETE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = next.length ? next : null;\n                        }\n                    } else if (e.which == KEY.ENTER) {\n                        selectedChoice = null;\n                    }\n\n                    this.selectChoice(selectedChoice);\n                    killEvent(e);\n                    if (!selectedChoice || !selectedChoice.length) {\n                        this.open();\n                    }\n                    return;\n                } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\n                    || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\n\n                    this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\n                    killEvent(e);\n                    return;\n                } else {\n                    this.selectChoice(null);\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus:true});\n                        this.close();\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n\n                if (e.which === KEY.ENTER) {\n                    // prevent form from being submitted\n                    killEvent(e);\n                }\n\n            }));\n\n            this.search.on(\"keyup\", this.bind(function (e) {\n                this.keydowns = 0;\n                this.resizeSearch();\n            })\n            );\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                this.selectChoice(null);\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n                this.opts.element.trigger($.Event(\"select2-blur\"));\n            }));\n\n            this.container.on(\"click\", selector, this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.selectChoice(null);\n                this.clearPlaceholder();\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.on(\"focus\", selector, this.bind(function () {\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.hide();\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.search.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder(),\n                maxWidth = this.getMaxSearchWidth();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.clearPlaceholder(); // should be done before super so placeholder is not used to search\n            this.resizeSearch();\n\n            this.parent.opening.apply(this, arguments);\n\n            this.focusSearch();\n\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() === \"\") {\n                if(this.nextSearchTerm != undefined){\n                    this.search.val(this.nextSearchTerm);\n                    this.search.select();\n                }\n            }\n\n            this.updateResults(true);\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n            }\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = [], filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (indexOf(self.id(this), ids) < 0) {\n                    ids.push(self.id(this));\n                    filtered.push(this);\n                }\n            });\n            data = filtered;\n\n            this.selection.find(\".select2-search-choice\").remove();\n            $(data).each(function () {\n                self.addSelectedChoice(this);\n            });\n            self.postprocessResults();\n        },\n\n        // multi\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data) || data.text === \"\") { return; }\n\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            // keep track of the search's value before it gets cleared\n            this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n\n            this.clearSearch();\n            this.updateResults();\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    } else {\n                        // initializes search's value with nextSearchTerm and update search result\n                        if(this.nextSearchTerm != undefined){\n                            this.search.val(this.nextSearchTerm);\n                            this.updateResults();\n                            this.search.select();\n                        }\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                val = this.getVal(),\n                formatted,\n                cssClass;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith($(\"<div></div>\").html(formatted));\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\n            if (cssClass != undefined) {\n                choice.addClass(cssClass);\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .on(\"mousedown\", killEvent)\n                  .on(\"click dblclick\", this.bind(function (e) {\n                  if (!this.isInterfaceEnabled()) return;\n\n                  this.unselect($(e.target));\n                  this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                  killEvent(e);\n                  this.close();\n                  this.focusSearch();\n              })).on(\"focus\", this.bind(function () {\n                  if (!this.isInterfaceEnabled()) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            val.push(id);\n            this.setVal(val);\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            var evt = $.Event(\"select2-removing\");\n            evt.val = this.id(data);\n            evt.choice = data;\n            this.opts.element.trigger(evt);\n\n            if (evt.isDefaultPrevented()) {\n                return false;\n            }\n\n            while((index = indexOf(this.id(data), val)) >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n\n            selected.remove();\n\n            this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n\n            return true;\n        },\n\n        // multi\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesn't have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1 && noHighlightUpdate !== false && this.opts.closeOnSelect === true){\n                self.highlight(0);\n            }\n\n            //If all results are chosen render formatNoMatches\n            if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\n                if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\n                    if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\n                        this.results.append(\"<li class='select2-no-results'>\" + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + \"</li>\");\n                    }\n                }\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n                sideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(Math.floor(searchWidth));\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator, this.opts.transformVal);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            var unique;\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                unique = [];\n                // filter out duplicates\n                $(val).each(function () {\n                    if (indexOf(this, unique) < 0) unique.push(this);\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        buildChangeDetails: function (old, current) {\n            var current = current.slice(0),\n                old = old.slice(0);\n\n            // remove intersection from each array\n            for (var i = 0; i < current.length; i++) {\n                for (var j = 0; j < old.length; j++) {\n                    if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\n                        current.splice(i, 1);\n                        if(i>0){\n                            i--;\n                        }\n                        old.splice(j, 1);\n                        j--;\n                    }\n                }\n            }\n\n            return {added: current, removed: old};\n        },\n\n\n        // multi\n        val: function (val, triggerChange) {\n            var oldData, self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            oldData=this.data();\n            if (!oldData.length) oldData=[];\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange({added: this.data(), removed: oldData});\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(oldData, this.data()));\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$.map(data, self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange(self.buildChangeDetails(oldData, self.data()));\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values, triggerChange) {\n            var self=this, ids, old;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .children(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                old = this.data();\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(old, this.data()));\n                }\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            method, value, multiple,\n            allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\n            valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\n            propertyMethods = [\"val\", \"data\"],\n            methodsMap = { search: \"externalSearch\" };\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.prop(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new window.Select2[\"class\"].multi() : new window.Select2[\"class\"].single();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n\n                method=args[0];\n\n                if (method === \"container\") {\n                    value = select2.container;\n                } else if (method === \"dropdown\") {\n                    value = select2.dropdown;\n                } else {\n                    if (methodsMap[method]) method = methodsMap[method];\n\n                    value = select2[method].apply(select2, args.slice(1));\n                }\n                if (indexOf(args[0], valueMethods) >= 0\n                    || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {\n                    return false; // abort the iteration, ready to return first matched value\n                }\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(this.text(result), query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        transformVal: function(val) {\n            return $.trim(val);\n        },\n        formatSelection: function (data, container, escapeMarkup) {\n            return data ? escapeMarkup(this.text(data)) : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return data.css;},\n        formatSelectionCssClass: function(data, container) {return undefined;},\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e == undefined ? null : e.id; },\n        text: function (e) {\n          if (e && this.data && this.data.text) {\n            if ($.isFunction(this.data.text)) {\n              return this.data.text(e);\n            } else {\n              return e[this.data.text];\n            }\n          } else {\n            return e.text;\n          }\n        },\n        matcher: function(term, text) {\n            return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: defaultEscapeMarkup,\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; },\n        nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },\n        searchInputPlaceholder: '',\n        createSearchChoicePosition: 'top',\n        shouldFocusInput: function (instance) {\n            // Attempt to detect touch devices\n            var supportsTouchEvents = (('ontouchstart' in window) ||\n                                       (navigator.msMaxTouchPoints > 0));\n\n            // Only devices which support touch events should be special cased\n            if (!supportsTouchEvents) {\n                return true;\n            }\n\n            // Never focus the input if search is disabled\n            if (instance.opts.minimumResultsForSearch < 0) {\n                return false;\n            }\n\n            return true;\n        }\n    };\n\n    $.fn.select2.locales = [];\n\n    $.fn.select2.locales['en'] = {\n         formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n         formatNoMatches: function () { return \"No matches found\"; },\n         formatAjaxError: function (jqXHR, textStatus, errorThrown) { return \"Loading failed\"; },\n         formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n         formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n         formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n         formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n         formatSearching: function () { return \"Searching…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n\n    $.fn.select2.ajaxDefaults = {\n        transport: $.ajax,\n        params: {\n            type: \"GET\",\n            cache: false,\n            dataType: \"json\"\n        }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch,\n            escapeMarkup: defaultEscapeMarkup,\n            stripDiacritics: stripDiacritics\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ar.js",
    "content": "/**\n * Select2 Arabic translation.\n *\n * Author: Adel KEDJOUR <adel@kedjour.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ar'] = {\n        formatNoMatches: function () { return \"لم يتم العثور على مطابقات\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return \"الرجاء إدخال حرف واحد على الأكثر\"; } return n == 2 ? \"الرجاء إدخال حرفين على الأكثر\" : \"الرجاء إدخال \" + n + \" على الأكثر\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return \"الرجاء إدخال حرف واحد على الأقل\"; } return n == 2 ? \"الرجاء إدخال حرفين على الأقل\" : \"الرجاء إدخال \" + n + \" على الأقل \"; },\n        formatSelectionTooBig: function (limit) { if (limit == 1){ return \"يمكنك أن تختار إختيار واحد فقط\"; } return limit == 2 ? \"يمكنك أن تختار إختيارين فقط\" : \"يمكنك أن تختار \" + limit + \" إختيارات فقط\"; },\n        formatLoadMore: function (pageNumber) { return \"تحميل المزيد من النتائج…\"; },\n        formatSearching: function () { return \"البحث…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ar']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_az.js",
    "content": "/**\n * Select2 Azerbaijani translation.\n *\n * Author: Farhad Safarov <farhad.safarov@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n     $.fn.select2.locales['az'] = {\n        formatMatches: function (matches) { return matches + \" nəticə mövcuddur, hərəkət etdirmək üçün yuxarı və aşağı düymələrindən istifadə edin.\"; },\n        formatNoMatches: function () { return \"Nəticə tapılmadı\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return n + \" simvol daxil edin\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return n + \" simvol silin\"; },\n        formatSelectionTooBig: function (limit) { return \"Sadəcə \" + limit + \" element seçə bilərsiniz\"; },\n        formatLoadMore: function (pageNumber) { return \"Daha çox nəticə yüklənir…\"; },\n        formatSearching: function () { return \"Axtarılır…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['az']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_bg.js",
    "content": "/**\n * Select2 Bulgarian translation.\n * \n * @author  Lubomir Vikev <lubomirvikev@gmail.com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['bg'] = {\n        formatNoMatches: function () { return \"Няма намерени съвпадения\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Моля въведете още \" + n + \" символ\" + (n > 1 ? \"а\" : \"\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Моля въведете с \" + n + \" по-малко символ\" + (n > 1 ? \"а\" : \"\"); },\n        formatSelectionTooBig: function (limit) { return \"Можете да направите до \" + limit + (limit > 1 ? \" избора\" : \" избор\"); },\n        formatLoadMore: function (pageNumber) { return \"Зареждат се още…\"; },\n        formatSearching: function () { return \"Търсене…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['bg']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ca.js",
    "content": "/**\n * Select2 Catalan translation.\n * \n * Author: David Planella <david.planella@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ca'] = {\n        formatNoMatches: function () { return \"No s'ha trobat cap coincidència\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduïu \" + n + \" caràcter\" + (n == 1 ? \"\" : \"s\") + \" més\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Introduïu \" + n + \" caràcter\" + (n == 1? \"\" : \"s\") + \"menys\"; },\n        formatSelectionTooBig: function (limit) { return \"Només podeu seleccionar \" + limit + \" element\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"S'estan carregant més resultats…\"; },\n        formatSearching: function () { return \"S'està cercant…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ca']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_cs.js",
    "content": "/**\n * Select2 Czech translation.\n * \n * Author: Michal Marek <ahoj@michal-marek.cz>\n * Author - sklonovani: David Vallner <david@vallner.net>\n */\n(function ($) {\n    \"use strict\";\n    // use text for the numbers 2 through 4\n    var smallNumbers = {\n        2: function(masc) { return (masc ? \"dva\" : \"dvě\"); },\n        3: function() { return \"tři\"; },\n        4: function() { return \"čtyři\"; }\n    }\n    $.fn.select2.locales['cs'] = {\n        formatNoMatches: function () { return \"Nenalezeny žádné položky\"; },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n == 1) {\n                return \"Prosím zadejte ještě jeden znak\";\n            } else if (n <= 4) {\n                return \"Prosím zadejte ještě další \"+smallNumbers[n](true)+\" znaky\";\n            } else {\n                return \"Prosím zadejte ještě dalších \"+n+\" znaků\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n == 1) {\n                return \"Prosím zadejte o jeden znak méně\";\n            } else if (n <= 4) {\n                return \"Prosím zadejte o \"+smallNumbers[n](true)+\" znaky méně\";\n            } else {\n                return \"Prosím zadejte o \"+n+\" znaků méně\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit == 1) {\n                return \"Můžete zvolit jen jednu položku\";\n            } else if (limit <= 4) {\n                return \"Můžete zvolit maximálně \"+smallNumbers[limit](false)+\" položky\";\n            } else {\n                return \"Můžete zvolit maximálně \"+limit+\" položek\";\n            }\n        },\n        formatLoadMore: function (pageNumber) { return \"Načítají se další výsledky…\"; },\n        formatSearching: function () { return \"Vyhledávání…\"; }\n    };\n\n\t$.extend($.fn.select2.defaults, $.fn.select2.locales['cs']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_da.js",
    "content": "/**\n * Select2 Danish translation.\n *\n * Author: Anders Jenbo <anders@jenbo.dk>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['da'] = {\n        formatNoMatches: function () { return \"Ingen resultater fundet\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Angiv venligst \" + n + \" tegn mere\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Angiv venligst \" + n + \" tegn mindre\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan kun vælge \" + limit + \" emne\" + (limit === 1 ? \"\" : \"r\"); },\n        formatLoadMore: function (pageNumber) { return \"Indlæser flere resultater…\"; },\n        formatSearching: function () { return \"Søger…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['da']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_de.js",
    "content": "/**\n * Select2 German translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['de'] = {\n        formatNoMatches: function () { return \"Keine Übereinstimmungen gefunden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Bitte \" + n + \" Zeichen mehr eingeben\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Bitte \" + n + \" Zeichen weniger eingeben\"; },\n        formatSelectionTooBig: function (limit) { return \"Sie können nur \" + limit + \" Eintr\" + (limit === 1 ? \"ag\" : \"äge\") + \" auswählen\"; },\n        formatLoadMore: function (pageNumber) { return \"Lade mehr Ergebnisse…\"; },\n        formatSearching: function () { return \"Suche…\"; },\n        formatMatches: function (matches) { return matches + \" Ergebnis \" + (matches > 1 ? \"se\" : \"\") + \" verfügbar, zum Navigieren die Hoch-/Runter-Pfeiltasten verwenden.\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['de']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_el.js",
    "content": "/**\n * Select2 Greek translation.\n * \n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['el'] = {\n        formatNoMatches: function () { return \"Δεν βρέθηκαν αποτελέσματα\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Παρακαλούμε εισάγετε \" + n + \" περισσότερο\" + (n > 1 ? \"υς\" : \"\") + \" χαρακτήρ\" + (n > 1 ? \"ες\" : \"α\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Παρακαλούμε διαγράψτε \" + n + \" χαρακτήρ\" + (n > 1 ? \"ες\" : \"α\"); },\n        formatSelectionTooBig: function (limit) { return \"Μπορείτε να επιλέξετε μόνο \" + limit + \" αντικείμεν\" + (limit > 1 ? \"α\" : \"ο\"); },\n        formatLoadMore: function (pageNumber) { return \"Φόρτωση περισσότερων…\"; },\n        formatSearching: function () { return \"Αναζήτηση…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['el']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_en.js.template",
    "content": "/**\n * Select2 <Language> translation.\n *\n * Author: Your Name <your@email>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['en'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n        formatNoMatches: function () { return \"No matches found\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n        formatSearching: function () { return \"Searching…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_es.js",
    "content": "/**\n * Select2 Spanish translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['es'] = {\n    \tformatMatches: function (matches) { if (matches === 1) { return \"Un resultado disponible, presione enter para seleccionarlo.\"; } return matches + \" resultados disponibles, use las teclas de dirección para navegar.\"; },\n        formatNoMatches: function () { return \"No se encontraron resultados\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Por favor, introduzca \" + n + \" car\" + (n == 1? \"ácter\" : \"acteres\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Por favor, elimine \" + n + \" car\" + (n == 1? \"ácter\" : \"acteres\"); },\n        formatSelectionTooBig: function (limit) { return \"Sólo puede seleccionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Cargando más resultados…\"; },\n        formatSearching: function () { return \"Buscando…\"; },\n        formatAjaxError: function() { return \"La carga falló\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['es']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_et.js",
    "content": "/**\n * Select2 Estonian translation.\n *\n * Author: Kuldar Kalvik <kuldar@kalvik.ee>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['et'] = {\n        formatNoMatches: function () { return \"Tulemused puuduvad\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Sisesta \" + n + \" täht\" + (n == 1 ? \"\" : \"e\") + \" rohkem\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Sisesta \" + n + \" täht\" + (n == 1? \"\" : \"e\") + \" vähem\"; },\n        formatSelectionTooBig: function (limit) { return \"Saad vaid \" + limit + \" tulemus\" + (limit == 1 ? \"e\" : \"t\") + \" valida\"; },\n        formatLoadMore: function (pageNumber) { return \"Laen tulemusi..\"; },\n        formatSearching: function () { return \"Otsin..\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['et']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_eu.js",
    "content": "/**\n * Select2 Basque translation.\n *\n * Author: Julen Ruiz Aizpuru <julenx at gmail dot com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['eu'] = {\n        formatNoMatches: function () {\n          return \"Ez da bat datorrenik aurkitu\";\n        },\n        formatInputTooShort: function (input, min) {\n          var n = min - input.length;\n          if (n === 1) {\n            return \"Idatzi karaktere bat gehiago\";\n          } else {\n            return \"Idatzi \" + n + \" karaktere gehiago\";\n          }\n        },\n        formatInputTooLong: function (input, max) {\n          var n = input.length - max;\n          if (n === 1) {\n            return \"Idatzi karaktere bat gutxiago\";\n          } else {\n            return \"Idatzi \" + n + \" karaktere gutxiago\";\n          }\n        },\n        formatSelectionTooBig: function (limit) {\n          if (limit === 1 ) {\n            return \"Elementu bakarra hauta dezakezu\";\n          } else {\n            return limit + \" elementu hauta ditzakezu soilik\";\n          }\n        },\n        formatLoadMore: function (pageNumber) {\n          return \"Emaitza gehiago kargatzen…\";\n        },\n        formatSearching: function () {\n          return \"Bilatzen…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['eu']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_fa.js",
    "content": "/**\n * Select2 Persian translation.\n * \n * Author: Ali Choopan <choopan@arsh.co>\n * Author: Ebrahim Byagowi <ebrahim@gnu.org>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['fa'] = {\n        formatMatches: function (matches) { return matches + \" نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید.\"; },\n        formatNoMatches: function () { return \"نتیجه‌ای یافت نشد.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"لطفاً \" + n + \" نویسه بیشتر وارد نمایید\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"لطفاً \" + n + \" نویسه را حذف کنید.\"; },\n        formatSelectionTooBig: function (limit) { return \"شما فقط می‌توانید \" + limit + \" مورد را انتخاب کنید\"; },\n        formatLoadMore: function (pageNumber) { return \"در حال بارگیری موارد بیشتر…\"; },\n        formatSearching: function () { return \"در حال جستجو…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fa']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_fi.js",
    "content": "/**\n * Select2 Finnish translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['fi'] = {\n        formatNoMatches: function () {\n            return \"Ei tuloksia\";\n        },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            return \"Ole hyvä ja anna \" + n + \" merkkiä lisää\";\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            return \"Ole hyvä ja anna \" + n + \" merkkiä vähemmän\";\n        },\n        formatSelectionTooBig: function (limit) {\n            return \"Voit valita ainoastaan \" + limit + \" kpl\";\n        },\n        formatLoadMore: function (pageNumber) {\n            return \"Ladataan lisää tuloksia…\";\n        },\n        formatSearching: function () {\n            return \"Etsitään…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fi']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_fr.js",
    "content": "/**\n * Select2 French translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['fr'] = {\n        formatMatches: function (matches) { return matches + \" résultats sont disponibles, utilisez les flèches haut et bas pour naviguer.\"; },\n        formatNoMatches: function () { return \"Aucun résultat trouvé\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Saisissez \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" supplémentaire\" + (n == 1? \"\" : \"s\") ; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Supprimez \" + n + \" caractère\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"Vous pouvez seulement sélectionner \" + limit + \" élément\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Chargement de résultats supplémentaires…\"; },\n        formatSearching: function () { return \"Recherche en cours…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fr']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_gl.js",
    "content": "/**\n * Select2 Galician translation\n * \n * Author: Leandro Regueiro <leandro.regueiro@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['gl'] = {\n        formatNoMatches: function () {\n            return \"Non se atoparon resultados\";\n        },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n === 1) {\n                return \"Engada un carácter\";\n            } else {\n                return \"Engada \" + n + \" caracteres\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n === 1) {\n                return \"Elimine un carácter\";\n            } else {\n                return \"Elimine \" + n + \" caracteres\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit === 1 ) {\n                return \"Só pode seleccionar un elemento\";\n            } else {\n                return \"Só pode seleccionar \" + limit + \" elementos\";\n            }\n        },\n        formatLoadMore: function (pageNumber) {\n            return \"Cargando máis resultados…\";\n        },\n        formatSearching: function () {\n            return \"Buscando…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['gl']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_he.js",
    "content": "/**\n* Select2 Hebrew translation.\n*\n* Author: Yakir Sitbon <http://www.yakirs.net/>\n*/\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['he'] = {\n        formatNoMatches: function () { return \"לא נמצאו התאמות\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"נא להזין עוד \" + n + \" תווים נוספים\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"נא להזין פחות \" + n + \" תווים\"; },\n        formatSelectionTooBig: function (limit) { return \"ניתן לבחור \" + limit + \" פריטים\"; },\n        formatLoadMore: function (pageNumber) { return \"טוען תוצאות נוספות…\"; },\n        formatSearching: function () { return \"מחפש…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['he']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_hr.js",
    "content": "/**\n * Select2 Croatian translation.\n *\n * @author  Edi Modrić <edi.modric@gmail.com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['hr'] = {\n        formatNoMatches: function () { return \"Nema rezultata\"; },\n        formatInputTooShort: function (input, min) { return \"Unesite još\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Unesite\" + character(input.length - max) + \" manje\"; },\n        formatSelectionTooBig: function (limit) { return \"Maksimalan broj odabranih stavki je \" + limit; },\n        formatLoadMore: function (pageNumber) { return \"Učitavanje rezultata…\"; },\n        formatSearching: function () { return \"Pretraga…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['hr']);\n\n    function character (n) {\n        return \" \" + n + \" znak\" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? \"a\" : \"\" : \"ova\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_hu.js",
    "content": "/**\n * Select2 Hungarian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['hu'] = {\n        formatNoMatches: function () { return \"Nincs találat.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Túl rövid. Még \" + n + \" karakter hiányzik.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Túl hosszú. \" + n + \" karakterrel több, mint kellene.\"; },\n        formatSelectionTooBig: function (limit) { return \"Csak \" + limit + \" elemet lehet kiválasztani.\"; },\n        formatLoadMore: function (pageNumber) { return \"Töltés…\"; },\n        formatSearching: function () { return \"Keresés…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['hu']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_id.js",
    "content": "/**\n * Select2 Indonesian translation.\n * \n * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['id'] = {\n        formatNoMatches: function () { return \"Tidak ada data yang sesuai\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Masukkan \" + n + \" huruf lagi\" + (n == 1 ? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Hapus \" + n + \" huruf\" + (n == 1 ? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"Anda hanya dapat memilih \" + limit + \" pilihan\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Mengambil data…\"; },\n        formatSearching: function () { return \"Mencari…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['id']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_is.js",
    "content": "/**\n * Select2 Icelandic translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['is'] = {\n        formatNoMatches: function () { return \"Ekkert fannst\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vinsamlegast skrifið \" + n + \" staf\" + (n > 1 ? \"i\" : \"\") + \" í viðbót\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vinsamlegast styttið texta um \" + n + \" staf\" + (n > 1 ? \"i\" : \"\"); },\n        formatSelectionTooBig: function (limit) { return \"Þú getur aðeins valið \" + limit + \" atriði\"; },\n        formatLoadMore: function (pageNumber) { return \"Sæki fleiri niðurstöður…\"; },\n        formatSearching: function () { return \"Leita…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['is']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_it.js",
    "content": "/**\n * Select2 Italian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['it'] = {\n        formatNoMatches: function () { return \"Nessuna corrispondenza trovata\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Inserisci ancora \" + n + \" caratter\" + (n == 1? \"e\" : \"i\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Inserisci \" + n + \" caratter\" + (n == 1? \"e\" : \"i\") + \" in meno\"; },\n        formatSelectionTooBig: function (limit) { return \"Puoi selezionare solo \" + limit + \" element\" + (limit == 1 ? \"o\" : \"i\"); },\n        formatLoadMore: function (pageNumber) { return \"Caricamento in corso…\"; },\n        formatSearching: function () { return \"Ricerca…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['it']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ja.js",
    "content": "/**\n * Select2 Japanese translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ja'] = {\n        formatNoMatches: function () { return \"該当なし\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"後\" + n + \"文字入れてください\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"検索文字列が\" + n + \"文字長すぎます\"; },\n        formatSelectionTooBig: function (limit) { return \"最多で\" + limit + \"項目までしか選択できません\"; },\n        formatLoadMore: function (pageNumber) { return \"読込中･･･\"; },\n        formatSearching: function () { return \"検索中･･･\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ja']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ka.js",
    "content": "/**\n * Select2 Georgian (Kartuli) translation.\n * \n * Author: Dimitri Kurashvili dimakura@gmail.com\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ka'] = {\n        formatNoMatches: function () { return \"ვერ მოიძებნა\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"გთხოვთ შეიყვანოთ კიდევ \" + n + \" სიმბოლო\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"გთხოვთ წაშალოთ \" + n + \" სიმბოლო\"; },\n        formatSelectionTooBig: function (limit) { return \"თქვენ შეგიძლიათ მხოლოდ \" + limit + \" ჩანაწერის მონიშვნა\"; },\n        formatLoadMore: function (pageNumber) { return \"შედეგის ჩატვირთვა…\"; },\n        formatSearching: function () { return \"ძებნა…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ka']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ko.js",
    "content": "/**\n * Select2 Korean translation.\n * \n * @author  Swen Mun <longfinfunnel@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ko'] = {\n        formatNoMatches: function () { return \"결과 없음\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"너무 짧습니다. \"+n+\"글자 더 입력해주세요.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"너무 깁니다. \"+n+\"글자 지워주세요.\"; },\n        formatSelectionTooBig: function (limit) { return \"최대 \"+limit+\"개까지만 선택하실 수 있습니다.\"; },\n        formatLoadMore: function (pageNumber) { return \"불러오는 중…\"; },\n        formatSearching: function () { return \"검색 중…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ko']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_lt.js",
    "content": "/**\n * Select2 Lithuanian translation.\n * \n * @author  CRONUS Karmalakas <cronus dot karmalakas at gmail dot com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['lt'] = {\n        formatNoMatches: function () { return \"Atitikmenų nerasta\"; },\n        formatInputTooShort: function (input, min) { return \"Įrašykite dar\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Pašalinkite\" + character(input.length - max); },\n        formatSelectionTooBig: function (limit) {\n        \treturn \"Jūs galite pasirinkti tik \" + limit + \" element\" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? \"ų\" : limit%10 > 1 ? \"us\" : \"ą\");\n        },\n        formatLoadMore: function (pageNumber) { return \"Kraunama daugiau rezultatų…\"; },\n        formatSearching: function () { return \"Ieškoma…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['lt']);\n\n    function character (n) {\n        return \" \" + n + \" simbol\" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? \"ių\" : n%10 > 1 ? \"ius\" : \"į\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_lv.js",
    "content": "/**\n * Select2 Latvian translation.\n *\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['lv'] = {\n        formatNoMatches: function () { return \"Sakritību nav\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Lūdzu ievadiet vēl \" + n + \" simbol\" + (n == 11 ? \"us\" : n%10 == 1 ? \"u\" : \"us\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Lūdzu ievadiet par \" + n + \" simbol\" + (n == 11 ? \"iem\" : n%10 == 1 ? \"u\" : \"iem\") + \" mazāk\"; },\n        formatSelectionTooBig: function (limit) { return \"Jūs varat izvēlēties ne vairāk kā \" + limit + \" element\" + (limit == 11 ? \"us\" : limit%10 == 1 ? \"u\" : \"us\"); },\n        formatLoadMore: function (pageNumber) { return \"Datu ielāde…\"; },\n        formatSearching: function () { return \"Meklēšana…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['lv']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_mk.js",
    "content": "/**\n * Select2 Macedonian translation.\n * \n * Author: Marko Aleksic <psybaron@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['mk'] = {\n        formatNoMatches: function () { return \"Нема пронајдено совпаѓања\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Ве молиме внесете уште \" + n + \" карактер\" + (n == 1 ? \"\" : \"и\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Ве молиме внесете \" + n + \" помалку карактер\" + (n == 1? \"\" : \"и\"); },\n        formatSelectionTooBig: function (limit) { return \"Можете да изберете само \" + limit + \" ставк\" + (limit == 1 ? \"а\" : \"и\"); },\n        formatLoadMore: function (pageNumber) { return \"Вчитување резултати…\"; },\n        formatSearching: function () { return \"Пребарување…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['mk']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ms.js",
    "content": "/**\n * Select2 Malay translation.\n * \n * Author: Kepoweran <kepoweran@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ms'] = {\n        formatNoMatches: function () { return \"Tiada padanan yang ditemui\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Sila masukkan \" + n + \" aksara lagi\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Sila hapuskan \" + n + \" aksara\"; },\n        formatSelectionTooBig: function (limit) { return \"Anda hanya boleh memilih \" + limit + \" pilihan\"; },\n        formatLoadMore: function (pageNumber) { return \"Sedang memuatkan keputusan…\"; },\n        formatSearching: function () { return \"Mencari…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ms']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_nb.js",
    "content": "/**\n * Select2 Norwegian Bokmål translation.\n *\n * Author: Torgeir Veimo <torgeir.veimo@gmail.com>\n * Author: Bjørn Johansen <post@bjornjohansen.no>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['nb'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Ett resultat er tilgjengelig, trykk enter for å velge det.\"; } return matches + \" resultater er tilgjengelig. Bruk piltastene opp og ned for å navigere.\"; },\n        formatNoMatches: function () { return \"Ingen treff\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vennligst skriv inn \" + n + (n>1 ? \" flere tegn\" : \" tegn til\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vennligst fjern \" + n + \" tegn\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan velge maks \" + limit + \" elementer\"; },\n        formatLoadMore: function (pageNumber) { return \"Laster flere resultater …\"; },\n        formatSearching: function () { return \"Søker …\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['no']);\n})(jQuery);\n\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_nl.js",
    "content": "/**\n * Select2 Dutch translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['nl'] = {\n        formatNoMatches: function () { return \"Geen resultaten gevonden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vul nog \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" in\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Haal \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" weg\"; },\n        formatSelectionTooBig: function (limit) { return \"Maximaal \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\") + \" toegestaan\"; },\n        formatLoadMore: function (pageNumber) { return \"Meer resultaten laden…\"; },\n        formatSearching: function () { return \"Zoeken…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['nl']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_pl.js",
    "content": "/**\n * Select2 Polish translation.\n *\n * @author  Jan Kondratowicz <jan@kondratowicz.pl>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n * @author  Michał Połtyn <mike@poltyn.com>\n * @author  Damian Zajkowski <damian.zajkowski@gmail.com>\n */\n(function($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pl'] = {\n        formatNoMatches: function() {\n            return \"Brak wyników\";\n        },\n        formatInputTooShort: function(input, min) {\n            return \"Wpisz co najmniej\" + character(min - input.length, \"znak\", \"i\");\n        },\n        formatInputTooLong: function(input, max) {\n            return \"Wpisana fraza jest za długa o\" + character(input.length - max, \"znak\", \"i\");\n        },\n        formatSelectionTooBig: function(limit) {\n            return \"Możesz zaznaczyć najwyżej\" + character(limit, \"element\", \"y\");\n        },\n        formatLoadMore: function(pageNumber) {\n            return \"Ładowanie wyników…\";\n        },\n        formatSearching: function() {\n            return \"Szukanie…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pl']);\n\n    function character(n, word, pluralSuffix) {\n        //Liczba pojedyncza - brak suffiksu\n        //jeden znak\n        //jeden element\n        var suffix = '';\n        if (n > 1 && n < 5) {\n            //Liczaba mnoga ilość od 2 do 4 - własny suffiks\n            //Dwa znaki, trzy znaki, cztery znaki.\n            //Dwa elementy, trzy elementy, cztery elementy\n            suffix = pluralSuffix;\n        } else if (n == 0 || n >= 5) {\n            //Ilość 0 suffiks ów\n            //Liczaba mnoga w ilości 5 i więcej - suffiks ów (nie poprawny dla wszystkich wyrazów, np. 100 wiadomości)\n            //Zero znaków, Pięć znaków, sześć znaków, siedem znaków, osiem znaków.\n            //Zero elementów Pięć elementów, sześć elementów, siedem elementów, osiem elementów.\n            suffix = 'ów';\n        }\n        return \" \" + n + \" \" + word + suffix;\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_pt-BR.js",
    "content": "/**\n * Select2 Brazilian Portuguese translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pt-BR'] = {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatAjaxError: function () { return \"Erro na busca\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Digite \" + (min == 1 ? \"\" : \"mais\") + \" \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Carregando mais resultados…\"; },\n        formatSearching: function () { return \"Buscando…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-BR']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_pt-PT.js",
    "content": "/**\n * Select2 Portuguese (Portugal) translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pt-PT'] = {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduza \" + n + \" car\" + (n == 1 ? \"ácter\" : \"acteres\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" car\" + (n == 1 ? \"ácter\" : \"acteres\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"A carregar mais resultados…\"; },\n        formatSearching: function () { return \"A pesquisar…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-PT']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ro.js",
    "content": "/**\n * Select2 Romanian translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ro'] = {\n        formatNoMatches: function () { return \"Nu a fost găsit nimic\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vă rugăm să introduceți incă \" + n + \" caracter\" + (n == 1 ? \"\" : \"e\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vă rugăm să introduceți mai puțin de \" + n + \" caracter\" + (n == 1? \"\" : \"e\"); },\n        formatSelectionTooBig: function (limit) { return \"Aveți voie să selectați cel mult \" + limit + \" element\" + (limit == 1 ? \"\" : \"e\"); },\n        formatLoadMore: function (pageNumber) { return \"Se încarcă…\"; },\n        formatSearching: function () { return \"Căutare…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ro']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_rs.js",
    "content": "/**\n * Select2 Serbian translation.\n *\n * @author  Limon Monte <limon.monte@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['rs'] = {\n        formatNoMatches: function () { return \"Ništa nije pronađeno\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Ukucajte bar još \" + n + \" simbol\" + (n % 10 == 1 && n % 100 != 11 ? \"\" : \"a\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Obrišite \" + n + \" simbol\" + (n % 10 == 1 && n % 100 != 11\t ? \"\" : \"a\"); },\n        formatSelectionTooBig: function (limit) { return \"Možete izabrati samo \" + limit + \" stavk\" + (limit % 10 == 1 && limit % 100 != 11\t ? \"u\" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? \"e\" : \"i\")); },\n        formatLoadMore: function (pageNumber) { return \"Preuzimanje još rezultata…\"; },\n        formatSearching: function () { return \"Pretraga…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['rs']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ru.js",
    "content": "/**\n * Select2 Russian translation.\n *\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ru'] = {\n        formatNoMatches: function () { return \"Совпадений не найдено\"; },\n        formatInputTooShort: function (input, min) { return \"Пожалуйста, введите еще хотя бы\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Пожалуйста, введите на\" + character(input.length - max) + \" меньше\"; },\n        formatSelectionTooBig: function (limit) { return \"Вы можете выбрать не более \" + limit + \" элемент\" + (limit%10 == 1 && limit%100 != 11 ? \"а\" : \"ов\"); },\n        formatLoadMore: function (pageNumber) { return \"Загрузка данных…\"; },\n        formatSearching: function () { return \"Поиск…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ru']);\n\n    function character (n) {\n        return \" \" + n + \" символ\" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? \"a\" : \"\" : \"ов\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_sk.js",
    "content": "/**\n * Select2 Slovak translation.\n *\n * Author: David Vallner <david@vallner.net>\n */\n(function ($) {\n    \"use strict\";\n    // use text for the numbers 2 through 4\n    var smallNumbers = {\n        2: function(masc) { return (masc ? \"dva\" : \"dve\"); },\n        3: function() { return \"tri\"; },\n        4: function() { return \"štyri\"; }\n    };\n    $.fn.select2.locales['sk'] = {\n        formatNoMatches: function () { return \"Nenašli sa žiadne položky\"; },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n == 1) {\n                return \"Prosím, zadajte ešte jeden znak\";\n            } else if (n <= 4) {\n                return \"Prosím, zadajte ešte ďalšie \"+smallNumbers[n](true)+\" znaky\";\n            } else {\n                return \"Prosím, zadajte ešte ďalších \"+n+\" znakov\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n == 1) {\n                return \"Prosím, zadajte o jeden znak menej\";\n            } else if (n >= 2 && n <= 4) {\n                return \"Prosím, zadajte o \"+smallNumbers[n](true)+\" znaky menej\";\n            } else {\n                return \"Prosím, zadajte o \"+n+\" znakov menej\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit == 1) {\n                return \"Môžete zvoliť len jednu položku\";\n            } else if (limit >= 2 && limit <= 4) {\n                return \"Môžete zvoliť najviac \"+smallNumbers[limit](false)+\" položky\";\n            } else {\n                return \"Môžete zvoliť najviac \"+limit+\" položiek\";\n            }\n        },\n        formatLoadMore: function (pageNumber) { return \"Načítavajú sa ďalšie výsledky…\"; },\n        formatSearching: function () { return \"Vyhľadávanie…\"; }\n    };\n\n\t$.extend($.fn.select2.defaults, $.fn.select2.locales['sk']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_sv.js",
    "content": "/**\n * Select2 Swedish translation.\n *\n * Author: Jens Rantil <jens.rantil@telavox.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['sv'] = {\n        formatNoMatches: function () { return \"Inga träffar\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Var god skriv in \" + n + (n>1 ? \" till tecken\" : \" tecken till\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Var god sudda ut \" + n + \" tecken\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan max välja \" + limit + \" element\"; },\n        formatLoadMore: function (pageNumber) { return \"Laddar fler resultat…\"; },\n        formatSearching: function () { return \"Söker…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['sv']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_th.js",
    "content": "/**\n * Select2 Thai translation.\n *\n * Author: Atsawin Chaowanakritsanakul <joke@nakhon.net>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['th'] = {\n        formatNoMatches: function () { return \"ไม่พบข้อมูล\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"โปรดพิมพ์เพิ่มอีก \" + n + \" ตัวอักษร\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"โปรดลบออก \" + n + \" ตัวอักษร\"; },\n        formatSelectionTooBig: function (limit) { return \"คุณสามารถเลือกได้ไม่เกิน \" + limit + \" รายการ\"; },\n        formatLoadMore: function (pageNumber) { return \"กำลังค้นข้อมูลเพิ่ม…\"; },\n        formatSearching: function () { return \"กำลังค้นข้อมูล…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['th']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_tr.js",
    "content": "/**\n * Select2 Turkish translation.\n * \n * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['tr'] = {\n        formatNoMatches: function () { return \"Sonuç bulunamadı\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"En az \" + n + \" karakter daha girmelisiniz\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return n + \" karakter azaltmalısınız\"; },\n        formatSelectionTooBig: function (limit) { return \"Sadece \" + limit + \" seçim yapabilirsiniz\"; },\n        formatLoadMore: function (pageNumber) { return \"Daha fazla…\"; },\n        formatSearching: function () { return \"Aranıyor…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['tr']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_ug-CN.js",
    "content": "/**\n * Select2 Uyghur translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['ug-CN'] = {\n        formatNoMatches: function () { return \"ماس كېلىدىغان ئۇچۇر تېپىلمىدى\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"يەنە \" + n + \" ھەرپ كىرگۈزۈڭ\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"\" + n + \"ھەرپ ئۆچۈرۈڭ\";},\n        formatSelectionTooBig: function (limit) { return \"ئەڭ كۆپ بولغاندا\" + limit + \" تال ئۇچۇر تاللىيالايسىز\"; },\n        formatLoadMore: function (pageNumber) { return \"ئۇچۇرلار ئوقۇلىۋاتىدۇ…\"; },\n        formatSearching: function () { return \"ئىزدەۋاتىدۇ…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ug-CN']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_uk.js",
    "content": "/**\n * Select2 Ukrainian translation.\n * \n * @author  bigmihail <bigmihail@bigmir.net>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['uk'] = {\n        formatMatches: function (matches) { return character(matches, \"результат\") + \" знайдено, використовуйте клавіші зі стрілками вверх та вниз для навігації.\"; },\n        formatNoMatches: function () { return \"Нічого не знайдено\"; },\n        formatInputTooShort: function (input, min) { return \"Введіть буль ласка ще \" + character(min - input.length, \"символ\"); },\n        formatInputTooLong: function (input, max) { return \"Введіть буль ласка на \" + character(input.length - max, \"символ\") + \" менше\"; },\n        formatSelectionTooBig: function (limit) { return \"Ви можете вибрати лише \" + character(limit, \"елемент\"); },\n        formatLoadMore: function (pageNumber) { return \"Завантаження даних…\"; },\n        formatSearching: function () { return \"Пошук…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['uk']);\n\n    function character (n, word) {\n        return n + \" \" + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? \"и\" : \"\" : \"ів\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_vi.js",
    "content": "/**\n * Select2 Vietnamese translation.\n * \n * Author: Long Nguyen <olragon@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['vi'] = {\n        formatNoMatches: function () { return \"Không tìm thấy kết quả\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vui lòng nhập nhiều hơn \" + n + \" ký tự\" + (n == 1 ? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vui lòng nhập ít hơn \" + n + \" ký tự\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"Chỉ có thể chọn được \" + limit + \" tùy chọn\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Đang lấy thêm kết quả…\"; },\n        formatSearching: function () { return \"Đang tìm…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['vi']);\n})(jQuery);\n\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_zh-CN.js",
    "content": "/**\n * Select2 Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['zh-CN'] = {\n        formatNoMatches: function () { return \"没有找到匹配项\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"请再输入\" + n + \"个字符\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"请删掉\" + n + \"个字符\";},\n        formatSelectionTooBig: function (limit) { return \"你只能选择最多\" + limit + \"项\"; },\n        formatLoadMore: function (pageNumber) { return \"加载结果中…\"; },\n        formatSearching: function () { return \"搜索中…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-CN']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/assets/select2-3.5.2/select2_locale_zh-TW.js",
    "content": "/**\n * Select2 Traditional Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['zh-TW'] = {\n        formatNoMatches: function () { return \"沒有找到相符的項目\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"請再輸入\" + n + \"個字元\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"請刪掉\" + n + \"個字元\";},\n        formatSelectionTooBig: function (limit) { return \"你只能選擇最多\" + limit + \"項\"; },\n        formatLoadMore: function (pageNumber) { return \"載入中…\"; },\n        formatSearching: function () { return \"搜尋中…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-TW']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/login/static/css/base.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nhtml {\n\t-ms-text-size-adjust:100%;\n\t-webkit-text-size-adjust:100%;\n\toverflow-y: scroll;\n}\n\n\n/*webkit滚动条样式*/\n::-webkit-scrollbar-track-piece{background-color:#f5f5f5;border-left:1px solid #d2d2d2}\n::-webkit-scrollbar{width:13px;height:13px}\n::-webkit-scrollbar-thumb{background-color:#c2c2c2;background-clip:padding-box;border:1px solid #979797;min-height:28px}\n::-webkit-scrollbar-thumb:hover{border:1px solid #636363;background-color:#929292}\n\nbody {\n\t-webkit-font-smoothing:antialiased;\n\tline-height:1.6\n}\ninput,textarea,button,a {\n\toutline:0\n}\nbody,h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,fieldset,textarea {\n\tmargin:0\n}\nfieldset,legend,textarea,input {\n\tpadding:0\n}\nul,ol {\n\tpadding-left:0;\n\tlist-style-type:none\n}\na img,fieldset {\n\tborder:0\n}\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary {\n\tdisplay:block\n}\naudio,canvas,video {\n\tdisplay:inline-block\n}\naudio:not([controls]) {\n\tdisplay:none;\n\theight:0\n}\n[hidden] {\n\tdisplay:none\n}\nsvg:not(:root) {\n\toverflow:hidden\n}\nfigure {\n\tmargin:0\n}\nbutton,input,select,textarea {\n\tfont-family:inherit;\n\tfont-size:100%;\n\tmargin:0\n}\nbutton,select {\n\ttext-transform:none\n}\nbutton,html input[type=\"button\"],input[type=\"reset\"],input[type=\"submit\"] {\n\tcursor:pointer;\n\t-webkit-appearance:button\n}\nbutton[disabled],html input[disabled] {\n\tcursor:default\n}\ninput[type=\"checkbox\"],input[type=\"radio\"] {\n\tbox-sizing:border-box;\n\tpadding:0\n}\ninput[type=\"search\"] {\n\tbox-sizing:content-box;\n\t-moz-box-sizing:content-box;\n\t-webkit-appearance:textfield;\n\t-webkit-box-sizing:content-box\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration {\n\t-webkit-appearance:none\n}\n\nbutton::-moz-focus-inner,input::-moz-focus-inner {\n\tborder:0;\n\tpadding:0\n}\ntextarea {\n\toverflow:auto;\n\tvertical-align:top;\n\tresize:none\n}\ninput:-webkit-autofill,textarea:-webkit-autofill,select:-webkit-autofill {\n\tbox-shadow:inset 0 0 0 1000px #fff;\n\t-moz-box-shadow:inset 0 0 0 1000px #fff;\n\t-webkit-box-shadow:inset 0 0 0 1000px #fff\n}\nselect {\n\tborder-radius:0;\n\t-webkit-border-radius:0\n}\nbody {\n\tline-height:1.6;\n\tfont-family:\"Helvetica Neue\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",\"黑体\",Arial,sans-serif,\"\\xe8\\x93\\x9d\\xe9\\xb2\\xb8\\xe6\\x99\\xba\\xe8\\x90\\xa5\";\n\tcolor:#222;\n\tfont-size:14px\n}\ntextarea,input {\n\tcolor:#222\n}\ntextarea::-webkit-input-placeholder,input::-webkit-input-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea:-moz-placeholder,input:-moz-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea::-moz-placeholder,input::-moz-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea:-ms-input-placeholder,input:-ms-input-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea {\n\tresize:none;\n\toverflow-y:auto\n}\na {\n\tcolor:#459ae9;\n\ttext-decoration:none\n}\na:hover {\n\ttext-decoration:underline\n}\nbutton,input,select,textarea {\n\t*font-family:\"Helvetica Neue\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",\"黑体\",Arial,sans-serif\n}\n.page_pay_qrcode .main_bd {\n\tpadding:50px 80px\n}\n.page_appmsg_edit .main_bd {\n\tpadding:50px 30px 0\n}\n.page_tpl_edit .main_bd {\n\tpadding:50px\n}\n.page_media_list .main_bd {\n\tpadding:20px 0 40px 0\n}\n.page_mass_list .main_bd {\n\tpadding-bottom:40px\n}\n.container_box {\n\tmin-height:650px\n}\n.container_box.float_layout {\n\toverflow:hidden;\n\t*zoom:1\n}\n.container_box.float_layout .col_side {\n\twidth:208px;\n\tpadding-bottom:9999em;\n\tmargin-bottom:-9999em\n}\n.container_box.float_layout .col_main {\n\toverflow:hidden;\n\t*zoom:1\n}\n.container_box.float_layout.side_l .col_side {\n\tfloat:left\n}\n.container_box.float_layout.side_r .col_side {\n\tfloat:right\n}\n.container_box.cell_layout {\n\t*overflow:hidden\n}\n.container_box.cell_layout .col_side,.container_box.cell_layout .col_main {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.container_box.cell_layout .col_side {\n\twidth:208px;\n\tmax-width:208px\n}\n.container_box.cell_layout .col_main {\n\twidth:990px;\n\theight:650px\n}\n.container_box.cell_layout .col_side {\n\t*float:left;\n\t*width:208px;\n\t*padding-bottom:9999em;\n\t*margin-bottom:-9999em\n}\n.container_box.cell_layout .col_main {\n\t*zoom:1;\n\t*width:auto;\n\t*height:auto\n}\n.container_box.cell_layout.side_r .col_side {\n\t*float:right\n}\n.col_ext {\n\twidth:20%\n}\n.container_hd,.main_hd {\n\tline-height:40px\n}\n.container_hd .info,.main_hd .info {\n\tmargin-top:-40px;\n\ttext-align:right\n}\n.container_hd h2,.main_hd h2 {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.container_hd .extra_info,.main_hd .extra_info {\n\tmargin-top:-40px;\n\ttext-align:right\n}\n.ft.links {\n\tfont-size:12px;\n}\n.ft .links_item {\n\tborder-left-color:#f1f1f1\n}\n.ft .links_item a {\n\tcolor:#fff;\n}\n\n.ft a {\n\tcolor:#fff;\n}\n\n.foot {\n\tpadding:24px 0;\n\tcolor:#fff;\n\ttext-align:center;\n\tbackground-color:#999\n}\n.copyright {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1\n}\n.page {\n\twidth:100%;\n\tmargin-left:auto;\n\tmargin-right:auto\n}\n.body {\n\twidth:1200px;\n\tmargin-left:auto;\n\tmargin-right:auto;\n\tpadding:36px 0 88px\n}\n.container_box {\n\tborder:1px solid #d9dadc;\n\tbackground-color:#fff\n}\n.container_box.simple {\n\toverflow:hidden;\n\tbackground-color:#fff\n}\n.container_hd h2,.main_hd h2 {\n\tfont-size:16px;\n\tpadding:0 30px;\n\tline-height:75px\n}\n.container_hd .extra_info,.main_hd .extra_info {\n\tline-height:43px;\n\tmargin-top:-43px;\n\tpadding-right:30px\n}\n.container_hd .extra_info.align_title,.main_hd .extra_info.align_title {\n\tmargin-top:-75px;\n\tline-height:75px\n}\n.container_hd .extra_info.align_nav,.main_hd .extra_info.align_nav {\n\tmargin-top:-80px;\n\tline-height:80px\n}\n.container_hd .title_tab,.main_hd .title_tab {\n\tmargin-top:-14px\n}\n.page_news .container_hd h2,.page_simple .container_hd h2,.page_news .main_hd h2,.page_simple .main_hd h2 {\n\tline-height:52px;\n\tbackground-color:#f4f5f9\n}\n.page_news .container_hd .extra_info.align_title,.page_simple .container_hd .extra_info.align_title,.page_news .main_hd .extra_info.align_title,.page_simple .main_hd .extra_info.align_title {\n\tmargin-top:-52px;\n\tline-height:52px\n}\n.container_bd,.main_bd {\n\tpadding-bottom:30px\n}\n.inner_container_box {\n\t*zoom:1;\n\t*overflow:hidden;\n\tbackground-color:#fff;\n\tborder:1px solid #e7e7eb\n}\n.inner_container_box:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.inner_container_box .bd {\n\tmin-height:530px\n}\n.inner_container_box.split {\n\tborder-width:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.inner_container_box.split .bd {\n\tborder:1px solid #d9dadc;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px\n}\n.inner_container_box.cell_layout {\n\t*position:relative\n}\n.inner_container_box.cell_layout .inner_side,.inner_container_box.cell_layout .inner_main {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.inner_container_box.cell_layout .inner_side {\n\twidth:27%;\n\tmax-width:240px\n}\n.inner_container_box.cell_layout .inner_main {\n\twidth:2000px\n}\n.inner_container_box.cell_layout .inner_main {\n\t*zoom:1;\n\t*width:auto\n}\n.inner_container_box.cell_layout .inner_side {\n\t*position:absolute;\n\t*top:0;\n\t*width:240px\n}\n.inner_container_box.cell_layout.side_r .inner_side {\n\t*right:0\n}\n.inner_container_box.cell_layout.side_r .inner_main {\n\t*margin-right:240px\n}\n.inner_container_box.cell_layout.side_l .inner_side {\n\t*left:0\n}\n.inner_container_box.cell_layout.side_l .inner_main {\n\t*margin-left:240px\n}\n.col_side {\n\tbackground-color:#fff\n}\n.col_side,.inner_side {\n\t*padding-bottom:9999em;\n\t*margin-bottom:-9999em;\n\tmin-height:1px\n}\n.col_side_primary {\n\twidth:208px\n}\n.col_main_primary {\n\toverflow:hidden;\n\t*zoom:1\n}\n.side_l .col_side {\n\t*float:left;\n\tborder-right:1px solid #e7e7eb\n}\n.side_l .col_side_primary {\n\tfloat:left;\n\tborder-right:1px solid #e7e7eb;\n\tmargin-right:-1px\n}\n.side_l .col_main_primary {\n\tborder-left:1px solid #e7e7eb\n}\n.side_l.inner_container_box .inner_side {\n\tborder-right:1px solid #e7e7eb\n}\n.side_r .col_side {\n\t*float:right;\n\tborder-left:1px solid #e7e7eb\n}\n.side_r .col_side_primary {\n\tfloat:right;\n\tborder-left:1px solid #e7e7eb;\n\tmargin-left:-1px\n}\n.side_r .col_main_primary {\n\tborder-right:1px solid #e7e7eb\n}\n.side_r.inner_container_box .inner_side {\n\tborder-left:1px solid #e7e7eb\n}\n.grid_line {\n\t*zoom:1\n}\n.grid_line:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.grid_item {\n\tfloat:left\n}\n.grid_item.no_extra {\n\tfloat:none;\n\twidth:auto;\n\toverflow:hidden;\n\t*zoom:1;\n\t*overflow:visible\n}\n.grid_item.no_extra_flex {\n\tfloat:none;\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tfloat:none;\n\twidth:auto;\n\t*display:block;\n\t*zoom:1\n}\n.grid_item.no_extra_flex:after {\n\tcontent:\" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \";\n\tvisibility:hidden;\n\tclear:both;\n\theight:0!important;\n\tdisplay:block;\n\tline-height:0\n}\n.size1of1 {\n\twidth:100%\n}\n.size1of2 {\n\twidth:50%\n}\n.size1of3 {\n\twidth:33.33%\n}\n.size1of4 {\n\twidth:25%\n}\n.size1of5 {\n\twidth:20%\n}\n.size1of6 {\n\twidth:16.66%\n}\n.size1of7 {\n\twidth:14.28%\n}\n.size1of8 {\n\twidth:12.5%\n}\n.icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 0 no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tmargin-top:-0.2em;\n\t*margin-top:0\n}\n.icon_radio.selected,.selected .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -26px no-repeat\n}\n.icon_radio.selected.disabled,.selected.disabled .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -52px no-repeat\n}\n.icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -78px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tmargin-top:-0.2em;\n\t*margin-top:0\n}\n.icon_checkbox.selected,.selected .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -104px no-repeat\n}\n.icon_checkbox.disabled,.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -130px no-repeat\n}\n.icon_checkbox.selected.disabled,.selected.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -156px no-repeat\n}\n.frm_tab {\n\toverflow:hidden;\n\t*zoom:1\n}\n.frm_tab_navs {\n\t*zoom:1\n}\n.frm_tab_navs:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\t62r:both\n}\n.frm_tab_nav {\n\tfloat:left;\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\twidth:auto;\n\tpadding-left:36px;\n\tpadding-right:36px;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tmargin-right:-1px\n}\n.frm_tab_nav button {\n\tcolor:#222\n}\n.frm_tab_nav:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.frm_tab_nav:hover button {\n\tcolor:#222\n}\n.frm_tab_nav:hover {\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.frm_tab_nav.selected {\n\tbackground:0;\n\tbackground-color:#888;\n\tborder-color:#e7e7eb;\n\tbox-shadow:inset 0 3px 8px #555;\n\t-moz-box-shadow:inset 0 3px 8px #555;\n\t-webkit-box-shadow:inset 0 3px 8px #555;\n\tcolor:#fff\n}\n.frm_tab_panel {\n\tpadding:10px 0\n}\n.frm_tab_split {\n\tposition:relative;\n\tmargin-top:20px;\n\tborder-bottom:1px solid #e7e7eb;\n\tbox-shadow:0 1px 0 0 #fff;\n\t-moz-box-shadow:0 1px 0 0 #fff;\n\t-webkit-box-shadow:0 1px 0 0 #fff\n}\n.frm_tab_split .arrow_stop {\n\tposition:relative\n}\n.frm_tab_split .arrow {\n\tposition:absolute;\n\tleft:0;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:12px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-top-width:0;\n\tborder-bottom-color:#e7e7eb;\n\tborder-bottom-style:solid\n}\n.frm_tab_split .arrow_out {\n\ttop:-12px;\n\tborder-bottom-color:#e7e7eb\n}\n.frm_tab_split .arrow_in {\n\ttop:-10px;\n\tborder-bottom-color:#fff\n}\n.frm_tab_split .arrow_extra {\n\ttop:-11px;\n\tborder-bottom-color:#fff\n}\n.frm_tab_tips {\n\tpadding-top:4px;\n\tcolor:#8d8d8d\n}\n.form_wrp.simple {\n\ttext-align:center\n}\n.form_wrp.simple .form {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left\n}\n.form.tips_inline .frm_tips {\n\twidth:auto;\n\tdisplay:inline-block\n}\n.frm_vertical_lh {\n\tline-height:32px\n}\n.frm_vertical_pt {\n\tpadding-top:.3em\n}\n.frm_fieldset {\n\tpadding-top:25px;\n\tpadding-top:0\\9\n}\n.frm_fieldset.no_legend {\n\tpadding-top:25px\n}\n.frm_legend {\n\tdisplay:block;\n\twidth:100%;\n\t*margin-left:-0.35em;\n\tmargin-bottom:25px \\9;\n\tpadding-bottom:5px\n}\n.frm_legend .tips {\n\tcolor:#8d8d8d;\n\tmargin-left:14px\n}\n.frm_desc {\n\tcolor:#222\n}\n.frm_tips {\n\twidth:300px;\n\tpadding-top:4px;\n\tcolor:#8d8d8d\n}\n.frm_msg {\n\tdisplay:none;\n\toverflow:hidden;\n\t*zoom:1;\n\twidth:300px\n}\n.frm_msg i {\n\tfloat:left;\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-right:3px\n}\n.frm_msg.success {\n\tcolor:#7fba4f\n}\n.frm_msg.fail {\n\tcolor:#e15f63\n}\n.frm_control_group {\n\t*zoom:1;\n\tpadding-bottom:25px\n}\n.frm_control_group:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.frm_control_group.show_value {\n\tpadding-bottom:15px\n}\n.frm_control_group.show_value .frm_input_box {\n\theight:auto;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\tpadding:0;\n\tborder-width:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tbackground:0;\n\tline-height:1.6;\n\tvertical-align:top;\n\tmargin-top:.3em\n}\n.frm_label {\n\tfloat:left;\n\twidth:5em;\n\tmargin-top:.3em;\n\tmargin-right:1em;\n\tfont-size:14px\n}\n.frm_label_tips {\n\tdisplay:block;\n\tcolor:#8d8d8d\n}\n.frm_controls {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tfloat:none;\n\twidth:auto;\n\t*display:block;\n\t*zoom:1\n}\n.frm_controls:after {\n\tcontent:\" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \";\n\tvisibility:hidden;\n\tclear:both;\n\theight:0!important;\n\tdisplay:block;\n\tline-height:0\n}\n.frm_input,.frm_textarea {\n\twidth:100%;\n\tbackground-color:transparent;\n\tborder:0;\n\toutline:0\n}\n.frm_input {\n\theight:22px;\n\t*line-height:22px;\n\tmargin:4px 0\n}\n.frm_textarea {\n\theight:100px\n}\n.frm_input_box {\n\tdisplay:inline-block;\n\tposition:relative;\n\theight:30px;\n\tline-height:30px;\n\tvertical-align:middle;\n\twidth:278px;\n\tfont-size:14px;\n\tpadding:0 10px;\n\tborder:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#fff\n}\n.frm_input_box .frm_input_append {\n\t*height:30px;\n\tfont-size:0\n}\n.frm_input_box.search {\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.frm_input_box.append {\n\tpadding-right:30px\n}\n.frm_input_box.append .frm_input_append {\n\tposition:absolute;\n\ttop:0;\n\tright:.8em\n}\n.frm_input_box.prepend {\n\tpadding-left:30px\n}\n.frm_input_box.prepend .frm_input_append {\n\tposition:absolute;\n\ttop:0;\n\tleft:.8em\n}\n.frm_input_box.with_counter .frm_counter {\n\twidth:50px;\n\tcolor:#8d8d8d;\n\tfont-size:14px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.frm_input_box.with_counter.warn .frm_counter {\n\tcolor:#e15f63\n}\n.frm_input_box.counter_in {\n\tpadding-right:70px\n}\n.frm_input_box.counter_in .frm_counter {\n\tright:0;\n\ttext-align:right;\n\tpadding-right:10px\n}\n.frm_input_box.counter_out {\n\tpadding-right:10px\n}\n.frm_input_box.counter_out .frm_counter {\n\tright:-60px;\n\tpadding-left:10px\n}\n.frm_input_box.vcode {\n\twidth:157px\n}\n.frm_input_box.zone {\n\twidth:72px;\n\tmargin-right:5px\n}\n.frm_input_box.phone {\n\twidth:175px\n}\n.frm_textarea_box {\n\tdisplay:inline-block;\n\twidth:288px;\n\tpadding:4px 0 4px 10px;\n\tfont-size:14px;\n\tborder:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#fff\n}\n.disabled.frm_input_box,.disabled.frm_textarea_box {\n\tbackground-color:#eee\n}\n.disabled .frm_input_box,.disabled .frm_textarea_box {\n\tbackground-color:#eee\n}\n.focus.frm_input_box,.focus.frm_textarea_box,.focus.frm_select_box {\n\tborder-color:#4a9bdf;\n\tbox-shadow:0 0 5px #aedcfa;\n\t-moz-box-shadow:0 0 5px #aedcfa;\n\t-webkit-box-shadow:0 0 5px #aedcfa\n}\n.focus.frm_select_box {\n\t*border-color:transparent\n}\n.frm_radio,.frm_checkbox {\n\tposition:absolute;\n\tleft:-999em\n}\n.frm_radio_label,.frm_checkbox_label {\n\tdisplay:inline-block;\n\ttext-align:left;\n\tcursor:pointer;\n\tmargin-right:1em\n}\n.frm_radio_label.no_extra,.frm_checkbox_label.no_extra {\n\tmargin-right:0\n}\n.frm_radio_label.disabled,.frm_checkbox_label.disabled {\n\tcolor:#999;\n\tcursor:default\n}\n.icon_radio {\n\tmargin-right:4px\n}\n.icon_checkbox {\n\tmargin-right:4px\n}\n.frm_select_box {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tposition:relative;\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\tvertical-align:middle;\n\tfont-size:14px;\n\t*top:.6em;\n\t*margin-right:5px;\n\tpadding:4px 0;\n\tborder:1px solid #e7e7eb;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px;\n\t*background-color:transparent;\n\t*border-color:transparent;\n\t*padding-top:0;\n\t*padding-bottom:0\n}\n.frm_select_box button {\n\tcolor:#222\n}\n.frm_select_box:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.frm_select_box:hover button {\n\tcolor:#222\n}\n.frm_select_label {\n\t*margin-top:-0.2em\n}\n.frm_select {\n\tposition:relative;\n\tz-index:1;\n\theight:22px;\n\tpadding:0 30px 0 10px;\n\tline-height:22px;\n\tbackground-color:transparent;\n\tborder:0;\n\toutline:0\n}\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n\t.frm_select_box {\n\tpadding:0\n}\n.frm_select_box:after {\n\tcontent:\" \";\n\tposition:absolute;\n\tright:15px;\n\ttop:50%;\n\tmargin-top:-2px;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:4px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-bottom-width:0;\n\tborder-top-color:#777;\n\tborder-top-style:solid\n}\n.frm_select {\n\t-webkit-appearance:none;\n\theight:32px\n}\n}.frm_input_box.search .frm_input_append {\n\tborder-left:1px solid #e7e7eb;\n\tright:0;\n\twidth:30px;\n\ttext-align:center\n}\n.frm_input_box.search .search_gray {\n\tmargin-top:-0.2em\n}\n.frm_input_box.disabled .frm_input,.frm_input_box .frm_input[disabled] {\n\tcolor:#8d8d8d\n}\n.frm_control {\n\tmargin-bottom:25px\n}\n.icon_radio,.icon_checkbox {\n\tmargin-right:3px;\n\tmargin-top:-2px;\n\t*margin-top:0\n}\n.icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -182px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_radio.selected,.selected .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -208px no-repeat\n}\n.icon_radio.disabled,.disabled .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -234px no-repeat\n}\n.icon_radio.selected.disabled,.selected.disabled .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -260px no-repeat\n}\n.icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -286px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_checkbox.selected,.selected .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -312px no-repeat\n}\n.icon_checkbox.disabled,.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -338px no-repeat\n}\n.icon_checkbox.selected.disabled,.selected.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -364px no-repeat\n}\n.tab_navs {\n\t*zoom:1;\n\ttext-align:center;\n\tline-height:30px;\n\tborder-bottom:1px solid #e7e7eb;\n\tbox-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);\n\t-moz-box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);\n\t-webkit-box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5)\n}\n.tab_navs:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.tab_nav {\n\tfloat:left;\n\tfont-size:14px\n}\n.tab_nav a {\n\tdisplay:block;\n\t*height:1%;\n\ttext-decoration:none;\n\tcolor:#222;\n\toutline:0;\n\tpadding:0 20px\n}\n.tab_nav.selected {\n\tbackground-color:#d4d5d5\n}\n.mt .tab_nav a {\n\tborder-right:1px solid #e7e7eb\n}\n.mt .tab_nav.selected {\n\tborder-top:3px solid #757474;\n\tposition:relative;\n\ttop:-1px\n}\n.mt .tab_nav.selected a {\n\tposition:relative;\n\tbackground-color:#d4d5d5;\n\tline-height:29px;\n\tmargin-bottom:-2px\n}\n.mt .tab_nav.no_extra a {\n\tborder-right-width:0\n}\n.title_tab .tab_navs {\n\tline-height:40px;\n\tborder-bottom-color:#e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.title_tab .tab_nav {\n\tmargin-bottom:-1px\n}\n.title_tab .tab_nav a {\n\tpadding:0 21px\n}\n.title_tab .tab_nav.first a {\n\tpadding-left:30px\n}\n.title_tab .tab_nav:hover {\n\tborder-bottom:3px solid #a0a3ab\n}\n.title_tab .tab_nav.selected {\n\tbackground:0;\n\tborder-bottom:3px solid #44b549\n}\n.tips_box {\n\tpadding:6px 15px;\n\tbackground-color:#e0eaf6;\n\tborder:0;\n\tcolor:#222;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.tips_box .em {\n\tcolor:#e15f63\n}\n.tips_box_primary {\n\tpadding:6px 15px;\n\tbackground-color:#f1f1f1;\n\tborder:1px solid #d1d1d1;\n\tcolor:#666;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px\n}\n.tips_box_primary .em {\n\tcolor:#e15f63\n}\n.disabled_box {\n\tpadding:.4em .8em;\n\tfont-size:14px;\n\tborder:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#f4f5f9\n}\n.notices_box {\n\tline-height:40px;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#fff;\n\tborder:1px solid #e7e7eb\n}\n.msg_box {\n\tline-height:36px;\n\ttext-align:center\n}\n.msg_box .inner {\n\tbackground-color:#c8e7fc\n}\n.msg_box a {\n\tdisplay:block;\n\tcolor:#6d7f8b\n}\n.empty_tips {\n\tpadding:100px 0;\n\ttext-align:center;\n\tfont-size:14px;\n\tcolor:#8d8d8d\n}\n.mini_tips i {\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-top:-3px;\n\tmargin-right:3px;\n\t*margin-top:0\n}\n.mini_tips .icon_mini_tips {\n\t*margin-top:2px\n}\n.mini_tips.warn {\n\tcolor:#e15f63\n}\n.mini_tips.success {\n\tcolor:#7fba4f\n}\n.mini_tips.weak_text {\n\tcolor:#8d8d8d\n}\n.mini_tips.icon_after i {\n\tmargin-right:0;\n\tmargin-left:3px\n}\n.article_box.inset {\n\tborder:1px solid #e7e7eb;\n\tbackground-color:#f4f5f9;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\theight:500px;\n\toverflow-y:auto\n}\n.article_box.inset .inner {\n\tpadding-left:50px;\n\tpadding-right:50px\n}\n.article_box .inner {\n\tpadding:90px 75px\n}\n.article_box h3 {\n\ttext-align:center;\n\tfont-size:22px;\n\tpadding-bottom:14px\n}\n.article_box h4 {\n\tpadding-bottom:14px;\n\tfont-weight:700;\n\tfont-size:16px\n}\n.article_box h5 {\n\tpadding-bottom:14px;\n\tfont-weight:700;\n\tfont-size:16px\n}\n.article_box h6 {\n\tpadding-bottom:14px;\n\tfont-weight:700;\n\tfont-size:14px\n}\n.article_box ul.disc {\n\tpadding-left:20px;\n\tlist-style-type:disc\n}\n.article_box dl,.article_box li,.article_box p {\n\tpadding-bottom:14px;\n\tfont-size:14px\n}\n.article_box pre {\n\twhite-space:pre-wrap\n}\n.article_box strong {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.article_box .media {\n\ttext-align:center;\n\tpadding-bottom:28px\n}\n.article_box .img_wrp {\n\tdisplay:inline-block;\n\tmax-width:750px\n}\n.article_box .img_wrp img {\n\twidth:100%;\n\t*width:auto;\n\t*max-width:100%;\n\tvertical-align:top\n}\n.article_box .img_wrp .mobile_width {\n\twidth:175px\n}\n.article_box .sign,.article_box .company_sign {\n\tpadding-top:4em;\n\ttext-align:right\n}\n.article_box .sign.strong,.article_box .company_sign.strong {\n\tfont-weight:700;\n\tfont-size:16px\n}\n.article_box .no_extra {\n\tpadding-bottom:0\n}\n.text_box h4 {\n\tfont-size:16px;\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-bottom:10px\n}\n.text_box .spacing {\n\tmargin-top:10px\n}\n.mod_hd,.mod_ft {\n\t*zoom:1\n}\n.mod_hd:after,.mod_ft:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.mod_info {\n\tfloat:left\n}\n.mod_opr {\n\ttext-align:right\n}\n.mod_opr .btn {\n\tmargin-top:-0.2em\n}\n.global_mod .global_extra {\n\ttext-align:right\n}\n.global_mod.mt_layout {\n\tline-height:30px\n}\n.global_mod.mt_layout .global_extra {\n\tmargin-top:-30px\n}\n.global_mod.float_layout {\n\t*zoom:1\n}\n.global_mod.float_layout:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.global_mod.float_layout .global_info {\n\tfloat:left\n}\n.vm_box {\n\tdisplay:inline-block;\n\theight:100%;\n\tvertical-align:middle\n}\n.msg_box {\n\tdisplay:none\n}\n.tips_box_tl {\n\tpadding:6px 15px;\n\tbackground-color:#e0eaf6;\n\ttext-align:left\n}\n.mini_tips a {\n\tcolor:#222\n}\n.article_box h3 {\n\tpadding-bottom:1em;\n\tfont-size:18px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.article_box h4,.article_box h5,.article_box h6 {\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.news_box.inset {\n\tborder:1px solid #e7e7eb;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\theight:500px;\n\toverflow-y:auto\n}\n.news_box.inset .inner {\n\tpadding-left:50px;\n\tpadding-right:50px\n}\n.news_box .inner {\n\tpadding:90px 75px\n}\n.news_box pre {\n\twhite-space:pre-wrap\n}\n.news_box h3 {\n\tpadding-bottom:1em;\n\ttext-align:center;\n\tfont-size:18px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.news_box h4,.news_box h5,.news_box h6 {\n\tpadding-bottom:1em;\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.news_box p,.news_box .table_wrp {\n\tpadding-bottom:1em;\n\tfont-size:14px\n}\n.news_box ol,.news_box ul {\n\tpadding-bottom:14px\n}\n.news_box li p {\n\tpadding-bottom:0\n}\n.news_box strong {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.news_box .em_text {\n\tfont-weight:700\n}\n.news_box .warn_text {\n\tcolor:#e15f63\n}\n.news_box img {\n\tmax-width:100%\n}\n.news_box .media {\n\ttext-align:center;\n\tpadding-bottom:2em\n}\n.news_box .img_wrp {\n\tdisplay:inline-block;\n\tmax-width:750px\n}\n.news_box .img_wrp img {\n\twidth:100%;\n\t*width:auto;\n\t*max-width:100%;\n\tvertical-align:top\n}\n.news_box .img_wrp .mobile_width {\n\twidth:175px\n}\n.news_box .sign,.news_box .company_sign {\n\tpadding-top:4em;\n\ttext-align:right\n}\n.news_box .sign.strong,.news_box .company_sign.strong {\n\tfont-weight:700;\n\tfont-size:16px\n}\n.news_box .no_extra {\n\tpadding-bottom:0\n}\n.highlight_box {\n\tpadding:9px 30px;\n/*\tbackground-color:#f4f5f9;*/\n\tmargin-bottom:20px;\n\tline-height:1.6;\n\t*zoom:1\n}\n.highlight_box .opr {\n\tfloat:right;\n\tpadding:7px 0 0 2em\n}\n.highlight_box .opr.opr_desc {\n\tpadding-top:0;\n\tcolor:#8d8d8d\n}\n.highlight_box .links {\n\tmargin-left:-1em\n}\n.highlight_box .links .links_item {\n\tvertical-align:middle;\n\tmargin-top:-0.2em;\n\tborder-left-color:#d9dadc\n}\n.highlight_box .links .links_item:hover a {\n\tcolor:#222\n}\n.highlight_box .links .selected a {\n\tcolor:#222\n}\n.highlight_box .title {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.highlight_box .title .icon_common.new {\n\theight:14px;\n\tmargin-top:0\n}\n.highlight_box .desc {\n\tcolor:#8d8d8d;\n\toverflow:hidden\n}\n.highlight_box.border {\n\t/*border-top:1px solid #e7e7eb*/\n/*\tborder-bottom:1px solid #e7e7eb*/\n}\n.highlight_box.icon_wrap {\n\tposition:relative;\n\tpadding-top:14px;\n\tpadding-bottom:14px\n}\n.highlight_box.icon_wrap .icon {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\twidth:48px;\n\theight:48px;\n\tposition:absolute;\n\ttop:12px\n}\n.highlight_box.icon_wrap .icon.lock {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -390px no-repeat;\n\twidth:48px;\n\theight:48px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.highlight_box.icon_wrap .icon.unlock {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -448px no-repeat;\n\twidth:48px;\n\theight:48px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.highlight_box.icon_wrap .title,.highlight_box.icon_wrap .desc {\n\tpadding-left:60px\n}\n.highlight_box.icon_small .icon {\n\tmargin-left:-10px\n}\n.highlight_box.icon_small .title,.highlight_box.icon_small .desc {\n\tpadding-left:40px\n}\n.highlight_box.page_global_tips {\n\tmargin:-12px 30px 20px\n}\n.tool_bar {\n\t*zoom:1;\n\tmargin-top:40px;\n\tpadding-top:20px\n}\n.tool_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.tool_bar .btn {\n\tmargin-right:1em\n}\n.tool_bar.with_form {\n\tmargin-top:15px\n}\n.tool_bar.border {\n\tborder-top:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.tool_bar.tc .btn {\n\tmargin-left:.5em;\n\tmargin-right:.5em\n}\n.tool_bar.tr .btn {\n\tmargin-left:1em;\n\tmargin-right:0\n}\n.tool_area {\n\t*zoom:1\n}\n.tool_area:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.title_bar {\n\t*zoom:1\n}\n.title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.title_bar .info {\n\tfloat:left\n}\n.title_bar .opr {\n\tfloat:right\n}\n.parent_title_bar {\n\t*zoom:1;\n\tline-height:35px;\n\tborder-bottom:2px solid #e7e7eb\n}\n.parent_title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.parent_title_bar h3 {\n\tfont-size:16px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.sub_title_bar {\n\t*zoom:1;\n\tline-height:38px;\n\tpadding:0 20px\n}\n.sub_title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.sub_title_bar .info {\n\tfloat:left\n}\n.sub_title_bar .opr {\n\tfloat:right\n}\n.sub_title_bar h3 {\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.sub_title_bar h4 {\n\tfloat:left;\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.tool_bar {\n\tpadding-bottom:50px;\n\tpadding-top:20px\n}\n.tool_bar.simple_gap {\n\tmargin-left:20px;\n\tmargin-bottom:20px\n}\n.title_bar {\n\tpadding:0 20px;\n\tbackground-color:#f4f5f9;\n\tborder-bottom:1px solid #e7e7eb;\n\tline-height:40px\n}\n.title_bar h3 {\n\tfont-size:14px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.global_title_bar {\n\t*zoom:1;\n\tbackground-color:#f4f5f9;\n\tfont-size:16px;\n\tborder-bottom:1px solid #e7e7eb\n}\n.global_title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.global_title_bar .info {\n\tfloat:left\n}\n.global_title_bar .opr {\n\tfloat:right\n}\n.parent_title_bar {\n\tborder-width:1px\n}\n.sub_title_bar {\n\tpadding:0 30px;\n\tline-height:55px\n}\n.sub_title_bar.default {\n\tbackground-color:#f4f5f9;\n\tborder-bottom:1px solid #e7e7eb\n}\n.sub_title_bar.light {\n\tbackground-color:#f4f5f9;\n\tborder-bottom:1px solid #e7e7eb\n}\n.sub_title_bar.in_dialog {\n\tbackground-color:#fff;\n\tpadding:0 20px;\n\tborder-bottom:1px solid #e7e7eb\n}\n.sub_title_bar.dark {\n\tbackground-color:#dfdfdf;\n\tbackground-image:-moz-linear-gradient(top,#dfdfdf 0,#dfdfdf 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#dfdfdf),to(#dfdfdf));\n\tbackground-image:-webkit-linear-gradient(top,#dfdfdf 0,#dfdfdf 100%);\n\tbackground-image:-o-linear-gradient(top,#dfdfdf 0,#dfdfdf 100%);\n\tbackground-image:linear-gradient(to bottom,#dfdfdf 0,#dfdfdf 100%);\n\tborder-bottom:1px solid #bebebe;\n\tbox-shadow:inset 0 1px 0 0 #ebebeb,0 1px 2px #ddd;\n\t-moz-box-shadow:inset 0 1px 0 0 #ebebeb,0 1px 2px #ddd;\n\t-webkit-box-shadow:inset 0 1px 0 0 #ebebeb,0 1px 2px #ddd\n}\n.sub_title_bar.global {\n\tpadding:0;\n\tfont-size:16px\n}\n.sub_title_bar.no_extra {\n\tbackground:0;\n\tborder-bottom-width:0;\n\tline-height:normal;\n\tpadding:0\n}\n.tool_area {\n\tpadding:0 30px\n}\nbutton.btn {\n\theight:32px;\n\tline-height:28px\n}\n.btn button {\n\tdisplay:block;\n\theight:100%;\n\tbackground-color:transparent;\n\tborder:0;\n\toutline:0;\n\toverflow:visible;\n\tpadding:0 22px\n}\n.btn.btn_input {\n\tpadding:0\n}\n.btn.btn_input.btn_vcode {\n\tmargin-left:5px\n}\n.btn.btn_input.btn_vcode button {\n\twidth:110px;\n\tpadding:0\n}\n.btn.btn_vcode {\n\tpadding:0;\n\twidth:110px;\n\tmargin-left:5px\n}\n.btn {\n\tdisplay:inline-block;\n\toverflow:visible;\n\tpadding:0 22px;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\tvertical-align:middle;\n\ttext-align:center;\n\ttext-decoration:none;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px;\n\tfont-size:14px;\n\tborder-width:1px;\n\tborder-style:solid;\n\tcursor:pointer\n}\n.btn:hover {\n\ttext-decoration:none\n}\n.btn.btn_mini {\n\theight:21px;\n\tline-height:21px;\n\t*line-height:19px;\n\tpadding:0 10px\n}\n.btn.btn_small {\n\theight:25px;\n\tline-height:25px;\n\t*line-height:23px;\n\tpadding:0 12px\n}\n.btn.btn_large {\n\theight:38px;\n\tline-height:38px;\n\t*line-height:36px;\n\tpadding:0 70px\n}\n.btn.btn_p20 {\n\tpadding:0 20px\n}\n.btn.btn_p30 {\n\tpadding:0 30px\n}\n.btn.btn_w125 {\n\twidth:125px;\n\tpadding:0\n}\n.btn.btn_w150 {\n\twidth:150px;\n\tpadding:0\n}\n.btn.btn_w220 {\n\twidth:220px;\n\tpadding:0\n}\n.btn_default {\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222\n}\n.btn_default button {\n\tcolor:#222\n}\n.btn_default:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.btn_default:hover button {\n\tcolor:#222\n}\n.btn_warn {\n\tbackground-color:#f24d4d;\n\tbackground-image:-moz-linear-gradient(top,#f24d4d 0,#f24d4d 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#f24d4d),to(#f24d4d));\n\tbackground-image:-webkit-linear-gradient(top,#f24d4d 0,#f24d4d 100%);\n\tbackground-image:-o-linear-gradient(top,#f24d4d 0,#f24d4d 100%);\n\tbackground-image:linear-gradient(to bottom,#f24d4d 0,#f24d4d 100%);\n\tborder-color:#f24d4d;\n\tcolor:#fff\n}\n.btn_warn button {\n\tcolor:#fff\n}\n.btn_warn:hover {\n\tbackground-color:#d43d3d;\n\tbackground-image:-moz-linear-gradient(top,#d43d3d 0,#d43d3d 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#d43d3d),to(#d43d3d));\n\tbackground-image:-webkit-linear-gradient(top,#d43d3d 0,#d43d3d 100%);\n\tbackground-image:-o-linear-gradient(top,#d43d3d 0,#d43d3d 100%);\n\tbackground-image:linear-gradient(to bottom,#d43d3d 0,#d43d3d 100%);\n\tborder-color:#d43d3d;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#fff\n}\n.btn_warn:hover button {\n\tcolor:#fff\n}\n.btn_primary {\n\tbackground-color:#44b549;\n\tbackground-image:-moz-linear-gradient(top,#44b549 0,#44b549 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#44b549),to(#44b549));\n\tbackground-image:-webkit-linear-gradient(top,#44b549 0,#44b549 100%);\n\tbackground-image:-o-linear-gradient(top,#44b549 0,#44b549 100%);\n\tbackground-image:linear-gradient(to bottom,#44b549 0,#44b549 100%);\n\tborder-color:#44b549;\n\tcolor:#fff\n}\n.btn_primary button {\n\tcolor:#fff\n}\n.btn_primary:hover {\n\tbackground-color:#2f9833;\n\tbackground-image:-moz-linear-gradient(top,#2f9833 0,#2f9833 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#2f9833),to(#2f9833));\n\tbackground-image:-webkit-linear-gradient(top,#2f9833 0,#2f9833 100%);\n\tbackground-image:-o-linear-gradient(top,#2f9833 0,#2f9833 100%);\n\tbackground-image:linear-gradient(to bottom,#2f9833 0,#2f9833 100%);\n\tborder-color:#2f9833;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#fff\n}\n.btn_primary:hover button {\n\tcolor:#fff\n}\n.btn_disabled {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_disabled button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_disabled:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa\n}\n.btn_disabled:hover button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_loading {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa;\n\tcursor:default;\n\tposition:relative;\n\tpadding-left:42px;\n\tpadding-right:30px\n}\n.btn_loading button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_loading:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa\n}\n.btn_loading:hover button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_loading button {\n\tposition:relative;\n\tpadding-left:42px;\n\tpadding-right:30px\n}\n.btn_loading i {\n\tposition:absolute;\n\ttop:50%;\n\tleft:16px;\n\tmargin-top:-8px;\n\tbackground:transparent url(../img/base/icon16_loading_light1e5b3a.gif) no-repeat 0 0;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.btn {\n\tmin-width:60px\n}\n.btn.btn_input {\n\tmin-width:104px\n}\n.btn.btn_input button {\n\twidth:100%\n}\n.btn.btn_loading {\n\tmin-width:32px\n}\n.btn.btn_add i {\n\tmargin-right:3px;\n\tmargin-top:-2px;\n\t*margin-top:2px\n}\n.btn.btn_add .add_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -506px no-repeat\n}\n.btn.btn_disabled .add_white {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -530px no-repeat\n}\n.btn.btn_small {\n\tmin-width:0\n}\n.icon_msg {\n\twidth:56px;\n\theight:56px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -554px no-repeat\n}\n.icon_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -620px no-repeat\n}\n.icon_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -686px no-repeat\n}\n.icon_msg.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -752px no-repeat\n}\n.icon_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -818px no-repeat\n}\n.icon_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -884px no-repeat\n}\n.icon_msg_mini {\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg_mini.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -950px no-repeat\n}\n.icon_msg_mini.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -976px no-repeat\n}\n.icon_msg_mini.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1002px no-repeat\n}\n.icon_msg_mini.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1028px no-repeat\n}\n.icon_msg_mini.ask {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1054px no-repeat\n}\n.icon_msg_small {\n\twidth:32px;\n\theight:32px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg_small.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1080px no-repeat\n}\n.icon_msg_small.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1122px no-repeat\n}\n.icon_msg_small.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1164px no-repeat\n}\n.icon_msg_small.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1206px no-repeat\n}\n.icon_msg_small.ask {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1248px no-repeat\n}\n.icon37_msg {\n\twidth:37px;\n\theight:37px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon37_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1290px no-repeat\n}\n.icon37_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1337px no-repeat\n}\n.icon37_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1384px no-repeat\n}\n.icon37_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1431px no-repeat\n}\n.icon37_msg.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1478px no-repeat\n}\n.icon37_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1525px no-repeat\n}\n.icon20_msg {\n\twidth:20px;\n\theight:20px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon20_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1572px no-repeat\n}\n.icon20_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1602px no-repeat\n}\n.icon20_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1632px no-repeat\n}\n.icon20_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1662px no-repeat\n}\n.icon18_msg {\n\twidth:18px;\n\theight:18px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon18_msg.ask {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1692px no-repeat\n}\n.icon18_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1720px no-repeat\n}\n.icon18_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1748px no-repeat\n}\n.icon18_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1776px no-repeat\n}\n.icon18_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1804px no-repeat\n}\n.icon18_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1832px no-repeat\n}\n.page_msg .inner {\n\tposition:relative;\n\t*zoom:1;\n\tbackground-color:#e0eaf6\n}\n.page_msg .inner:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.page_msg .msg_icon_wrp,.page_msg .msg_icon_wrapper {\n\tfloat:left;\n\tmargin-right:10px;\n\tfont-size:0\n}\n.page_msg .msg_content {\n\toverflow:hidden;\n\t*zoom:1;\n\tpadding-top:5px\n}\n.page_msg .msg_opr {\n\tdisplay:none;\n\tposition:absolute;\n\tright:10px;\n\ttop:50%;\n\tmargin-top:-10px\n}\n.page_msg h4 {\n\tfont-size:16px;\n\tfont-weight:700\n}\n.page_msg p {\n\tfont-size:14px;\n\tcolor:#8d8d8d\n}\n.page_msg .spacing {\n\tpadding:.5em 0 2em\n}\n.page_msg .line_break_before {\n\tpadding-top:1em\n}\n.page_msg .icon_dot {\n\tmargin-right:5px;\n\tmargin-top:-0.2em;\n\tcolor:#8d8d8d\n}\n.page_msg.large .inner {\n\tpadding:12px 70px\n}\n.page_msg.small .inner {\n\tpadding:40px\n}\n.page_msg.mini .inner {\n\tpadding:9px 20px\n}\n.page_msg.mini .msg_icon_wrp {\n\tmargin-top:3px;\n\tmargin-right:6px\n}\n.page_msg.mini .msg_content {\n\tpadding-top:0\n}\n.page_msg.single_line .msg_content {\n\tpadding-top:15px\n}\n.page_msg.default .inner {\n\tbackground-color:transparent;\n\tborder:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.page_msg.simple {\n\ttext-align:center\n}\n.page_msg.simple .inner {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left;\n\tmin-width:55%\n}\n.icon_msg {\n\twidth:46px;\n\theight:46px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1860px no-repeat\n}\n.icon_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1916px no-repeat\n}\n.icon_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1972px no-repeat\n}\n.icon_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2028px no-repeat\n}\n.icon_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2084px no-repeat\n}\n.icon_msg.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2140px no-repeat\n}\n.icon_msg_primary {\n\twidth:46px;\n\theight:46px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg_primary.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2196px no-repeat\n}\n.icon_msg_primary.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2252px no-repeat\n}\n.icon_msg_primary.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2308px no-repeat\n}\n.icon_msg_primary.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2364px no-repeat\n}\n.icon_msg_primary.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2420px no-repeat\n}\n.page_msg.mini p {\n\tcolor:#222\n}\n.page_msg.mini .msg_icon_wrapper,.page_msg.mini .msg_icon_wrp {\n\tmargin-top:4px\n}\n.page_msg.single_line .msg_content {\n\tpadding-top:10px\n}\n.page_msg h4 {\n\tfont-size:14px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.page_msg .msg_content {\n\tpadding-top:0\n}\n.popover_close {\n\tdisplay:none;\n\tposition:absolute;\n\tright:10px;\n\ttop:22px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2476px no-repeat\n}\n.popover_close:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2502px no-repeat\n}\n.popover {\n\twidth:257px;\n\tposition:absolute;\n\tmargin-top:12px;\n\tz-index:999\n}\n.popover .popover_inner {\n\tborder:1px solid #d9dadc;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\tpadding:30px 25px;\n\tbackground-color:#fff;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.popover .popover_arrow {\n\tposition:absolute;\n\tleft:50%;\n\tmargin-left:-8px;\n\tmargin-top:-8px;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:8px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-top-width:0;\n\tborder-bottom-color:#d9dadc;\n\tborder-bottom-style:solid\n}\n.popover .popover_arrow_out {\n\ttop:0\n}\n.popover .popover_arrow_in {\n\tborder-bottom-color:#fff;\n\ttop:1px\n}\n.popover .popover_title {\n\tfont-size:14px;\n\tfont-weight:700\n}\n.popover .popover_tips {\n\tcolor:#8d8d8d\n}\n.popover .popover_bar {\n\ttext-align:center;\n\tmargin-top:20px\n}\n.popover .popover_bar .btn {\n\tmargin:0 .3em\n}\n.popover.simple .popover_bar {\n\ttext-align:left\n}\n.popover.simple .btn {\n\tmargin-left:0;\n\tmargin-right:.6em\n}\n.popover.pos_left .popover_arrow {\n\tleft:42px\n}\n.popover.pos_right .popover_arrow {\n\tleft:auto;\n\tright:28px\n}\n.popover.normal_flow {\n\tposition:relative;\n\twidth:auto;\n\tz-index:0\n}\n.popover.normal_flow .popover_inner {\n\tpadding:14px 20px;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-color:#e7e7eb\n}\n.popover.normal_flow .popover_content {\n\twidth:auto\n}\n.popover.normal_flow .popover_arrow_out {\n\tborder-bottom-color:#e7e7eb\n}\n.popover.arrow_left {\n\tmargin-left:8px;\n\tmargin-top:0\n}\n.popover.arrow_left .popover_arrow {\n\ttop:25px;\n\tleft:0;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:8px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-left-width:0;\n\tborder-right-color:#d9dadc;\n\tborder-right-style:solid\n}\n.popover.arrow_left .popover_arrow_in {\n\tleft:1px;\n\tborder-right-color:#fff\n}\n.popover.z_top {\n\tz-index:10000\n}\n.popover {\n\twidth:280px\n}\n.popover .popover_title {\n\tfont-weight:400;\n\tfont-style:normal;\n\tpadding-bottom:5px\n}\n.popover .frm_input_box {\n\tdisplay:block;\n\twidth:auto\n}\n.popover .popover_bar {\n\ttext-align:justify;\n\ttext-justify:distribute-all-lines;\n\tfont-size:0\n}\n.popover .popover_bar:after {\n\tdisplay:inline-block;\n\twidth:100%;\n\theight:0;\n\tfont-size:0;\n\tmargin:0;\n\tpadding:0;\n\toverflow:hidden;\n\tcontent:\".\"\n}\n.popover .popover_bar .tj_item {\n\tfont-size:14px;\n\ttext-align:left;\n\ttext-justify:auto\n}\n.popover .popover_bar .btn {\n\tmargin:0\n}\n.copylink_wrp {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1\n}\n.copylink {\n\tdisplay:inline-block\n}\n.icon_goback {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2528px no-repeat;\n\twidth:26px;\n\theight:26px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_goback:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2564px no-repeat\n}\n.page_nav {\n\tmargin:20px 30px\n}\n.page_nav .icon_goback {\n\tmargin-right:.5em\n}\n.page_nav a {\n\tcolor:#8d8d8d\n}\n.page_nav a:hover {\n\tcolor:#459ae9\n}\n.page_nav.title_bottom {\n\tmargin-top:0\n}\n.gototop {\n\tposition:fixed;\n\tbottom:100px;\n\tleft:0;\n\tright:0\n}\n.gototop_inner {\n\twidth:1200px;\n\tmargin-left:auto;\n\tmargin-right:auto;\n\ttext-align:right\n}\n.gototop_tips {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2600px no-repeat;\n\twidth:47px;\n\theight:47px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tcursor:pointer;\n\tline-height:200px;\n\toverflow:hidden;\n\tmargin-right:-80px\n}\n.page_tips {\n\tposition:fixed;\n\ttop:0;\n\tleft:0;\n\ttext-align:center;\n\twidth:100%;\n\tz-index:10000\n}\n.page_tips .inner {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tmin-width:250px;\n\tpadding:5px 30px;\n\tcolor:#fff\n}\n.page_tips.success .inner {\n\tbackground-color:#44b549\n}\n.page_tips.error .inner {\n\tbackground-color:#eaa000\n}\n.mask {\n\tposition:fixed;\n\ttop:0;\n\tleft:0;\n\twidth:100%;\n\theight:100%;\n\tfilter:alpha(opacity = 75);\n\t-moz-opacity:.75;\n\t-khtml-opacity:.75;\n\topacity:.75;\n\tbackground-color:#000;\n\tz-index:9998\n}\n.table_wrp.list {\n\tpadding:20px\n}\n.table_wrp.list .table {\n\tborder-top-width:0\n}\n.table_wrp.list .table_cell {\n\tvertical-align:top;\n\tpadding-left:20px;\n\tpadding-right:20px\n}\n.table_wrp.list .tbody .table_cell {\n\tpadding-top:15px;\n\tpadding-bottom:15px\n}\n.table_wrp.with_border .table {\n\tborder:1px solid #e7e7eb\n}\n.table {\n\twidth:100%;\n\tfont-size:14px;\n\tbackground-color:#fff;\n\ttext-align:center;\n\tborder-top:1px solid #e7e7eb;\n\tborder-bottom:1px solid #e7e7eb\n}\n.table_cell {\n\tpadding:0;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.thead {\n\tbackground-color:#f4f5f9\n}\n.thead .table_cell {\n\tline-height:32px;\n\tborder-left:1px solid #e7e7eb;\n\tborder-bottom:1px solid #e7e7eb\n}\n.thead .table_cell:first-child {\n\tborder-left-width:0\n}\n.tbody tr:hover,.tbody tr.even {\n\tbackground-color:transparent\n}\n.tbody tr.empty_item:hover {\n\tbackground:0\n}\n.tbody tr:first-child .table_cell {\n\tborder-top-width:0\n}\n.tbody .table_cell {\n\tpadding-top:6px;\n\tpadding-bottom:6px;\n\tborder-top:1px solid #e7e7eb\n}\n.thead .table_cell {\n\tborder-left-width:0\n}\n.tbody .table_cell.hd_dropdown_area {\n\tpadding-left:30px\n}\n.links_item {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tpadding:0 1em;\n\tline-height:1em;\n\t*line-height:18px;\n\tborder-left:1px solid #797979\n}\n.links_item.no_extra {\n\tborder-left-width:0\n}\n.links_item:first-child {\n\tborder-left-width:0\n}\n.links_item a {\n\tdisplay:block;\n\tcolor:#797979\n}\n.links.tab_links {\n\tmargin-left:-1em\n}\n.links.tab_links .links_item {\n\tborder-left-color:#d9dadc\n}\n.links.tab_links .links_item:hover a {\n\tcolor:#222\n}\n.links.tab_links .selected a {\n\tcolor:#222\n}\n.faq {\n\twidth:178px;\n\tmargin-top:-60px;\n\tpadding-left:20px;\n\tfont-size:0\n}\n.faq .links {\n\ttext-align:center\n}\n.faq .links_item {\n\tpadding:0 .5em;\n\tfont-size:12px;\n\tborder-left-color:#8d8d8d\n}\n.faq .links_item a {\n\tcolor:#8d8d8d\n}\n.faq .links_item a:hover {\n\tcolor:#459ae9\n}\n.faq .links_item.no_extra {\n\tpadding-left:0\n}\n.faq .tail {\n\tcolor:#8d8d8d;\n\tfont-size:12px;\n\tline-height:30px;\n\tword-break: normal;\n\tword-wrap: normal;\n}\n.pop_closed {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2657px no-repeat\n}\n.pop_closed:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2683px no-repeat\n}\n.dialog_wrp {\n\tposition:fixed;\n\ttop:50%;\n\tleft:50%;\n\twidth:726px;\n\tz-index:3\n}\n.dialog_wrp.label_block .frm_control_group {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1\n}\n.dialog_wrp.label_block .frm_label {\n\tfloat:none;\n\tfont-size:14px;\n\tmargin-bottom:.5em\n}\n.dialog_wrp.label_block .frm_input_box,.dialog_wrp.label_block .frm_label,.dialog_wrp.label_block .frm_tips,.dialog_wrp.label_block .frm_msg {\n\twidth:auto\n}\n.dialog_wrp.label_block .frm_input_box,.dialog_wrp.label_block .frm_label {\n\tdisplay:block\n}\n.dialog_wrp.label_block .frm_controls {\n\tpadding-left:0\n}\n.dialog_wrp.align_edge .dialog_bd {\n\tpadding:0\n}\n.dialog_wrp.simple .dialog_bd {\n\ttext-align:center\n}\n.dialog {\n\toverflow:hidden;\n\tborder:1px solid transparent;\n\tbackground-color:#fff;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.dialog_hd {\n\tposition:relative;\n\tpadding:0 20px;\n\tline-height:38px;\n\theight:38px;\n\tbackground-color:#f4f5f9;\n\tbackground-image:-moz-linear-gradient(top,#f4f5f9 0,#f4f5f9 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#f4f5f9),to(#f4f5f9));\n\tbackground-image:-webkit-linear-gradient(top,#f4f5f9 0,#f4f5f9 100%);\n\tbackground-image:-o-linear-gradient(top,#f4f5f9 0,#f4f5f9 100%);\n\tbackground-image:linear-gradient(to bottom,#f4f5f9 0,#f4f5f9 100%);\n\tborder-bottom:1px solid #e7e7eb\n}\n.dialog_hd h3 {\n\tcolor:#222\n}\n.dialog_hd .pop_closed {\n\tposition:absolute;\n\ttop:50%;\n\tmargin-top:-8px;\n\tright:20px;\n\twidth:16px;\n\theight:16px;\n\tline-height:999em;\n\toverflow:hidden\n}\n.dialog_bd {\n\tpadding:55px 45px\n}\n.dialog_ft {\n\tmargin:0;\n\tpadding:25px 0;\n\ttext-align:center;\n\tborder-top:1px solid transparent;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.dialog_ft .btn {\n\tmargin-left:.3em;\n\tmargin-right:.3em\n}\n.dialog_content_list {\n\theight:420px;\n\tpadding:0 120px;\n\toverflow-y:scroll;\n\tposition:relative\n}\n.simple_dialog_content {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left;\n\twidth:420px\n}\n.simple_dialog_content .frm_input_box,.simple_dialog_content .frm_textarea_box {\n\tdisplay:block\n}\n.simple_dialog_content .frm_input_box,.simple_dialog_content .frm_textarea_box,.simple_dialog_content .frm_tips,.simple_dialog_content .frm_msg {\n\twidth:auto\n}\n.dialog_wrp {\n\tz-index:9999\n}\n.dialog {\n\tborder-width:0;\n\toverflow:visible\n}\n.dialog_ft {\n\tpadding:16px 0;\n\tbackground-color:#f4f5f9\n}\n.dialog_bd {\n\tmin-height:110px\n}\n.dialog_hd {\n\tline-height:52px;\n\theight:52px;\n\tborder-bottom-width:0\n}\n.dialog_hd h3 {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.tc_dialog_content {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left;\n\twidth:420px\n}\n.has_ft_desc .dialog_bd {\n\tposition:relative\n}\n.has_ft_desc .dialog_ft_desc {\n\tposition:absolute;\n\tbottom:-40px;\n\tleft:20px\n}\n.pop_closed {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2709px no-repeat\n}\n.pop_closed:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2735px no-repeat\n}\n.ml1e {\n\tmargin-left:1em\n}\n.dialog_process .form {\n\tpadding-left:45px;\n\tpadding-right:45px\n}\n.dialog_process .dialog_bd {\n\tpadding:0 0 55px\n}\n.dialog_process .processor_bar {\n\tmargin-bottom:45px\n}\n.safe_check .form .inner {\n\twidth:425px;\n\tmargin:0 auto\n}\n.safe_check .form .frm_hd {\n\tmargin-bottom:1.5em\n}\n.safe_check .form .frm_hd .frm_title {\n\tmargin-bottom:0;\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.safe_check .form .frm_hd .frm_desc {\n\tcolor:#8d8d8d\n}\n.safe_check .form .frm_label {\n\tfloat:left;\n\twidth:5em;\n\tmargin-bottom:0;\n\tfont-size:14px\n}\n.safe_check .form .frm_radio_block_desc {\n\tpadding-left:23px\n}\n.safe_check .form .page_msg {\n\tmargin-left:-14em\n}\n.safe_check .form_width_auto .inner {\n\twidth:auto;\n\tmax-width:500px;\n\tmargin:0 auto\n}\n.safe_check .form_owner_info .frm_label {\n\twidth:8em\n}\n.safe_check .form_owner_info .inner {\n\twidth:500px\n}\n.safe_check .tool_bar {\n\tpadding-bottom:0\n}\n.safe_check .tool_bar.tc {\n\tpadding-left:0;\n\ttext-align:center\n}\n.page_msg .extra_msg h4 {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.qrcode_scan .js_status {\n\twidth:280px\n}\n.qrcode_scan .qrcode_wrp {\n\twidth:280px;\n\theight:280px\n}\n.bubbleTips {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tvertical-align:middle;\n\tposition:relative\n}\n.bubbleTips.warn {\n\tcolor:#e15f63\n}\n.bubbleTips.success {\n\tcolor:#7fba4f\n}\n.bubble_left {\n\tmargin-left:.5em\n}\n.bubble_left .bubbleTips_arrow.in {\n\tleft:-5px\n}\n.bubble_left .bubbleTips_arrow.out {\n\tborder-right-color:#e7e7eb;\n\tleft:-6px\n}\n.bubble_right {\n\tmargin-right:.5em\n}\n.bubble_right .bubbleTips_arrow {\n\tborder-left-width:6px;\n\tborder-right-color:transparent;\n\tborder-right-style:dashed;\n\tborder-right-width:0;\n\tborder-left-color:#fff;\n\tborder-left-style:solid\n}\n.bubble_right .bubbleTips_arrow.in {\n\tright:-5px\n}\n.bubble_right .bubbleTips_arrow.out {\n\tborder-left-color:#e7e7eb;\n\tright:-6px\n}\n.bubble_top {\n\tmargin-top:.5em\n}\n.bubble_top .bubbleTips_arrow {\n\tborder-left-width:6px;\n\tborder-right-color:transparent;\n\tborder-right-style:dashed;\n\tborder-top-width:0;\n\tborder-bottom-color:#fff;\n\tborder-bottom-style:solid;\n\tleft:50%;\n\tmargin-left:-6px\n}\n.bubble_top .bubbleTips_arrow.in {\n\ttop:1px\n}\n.bubble_top .bubbleTips_arrow.out {\n\tborder-bottom-color:#e7e7eb;\n\ttop:0\n}\n.bubble_bottom {\n\tmargin-bottom:.5em\n}\n.bubble_bottom .bubbleTips_arrow {\n\tborder-left-width:6px;\n\tborder-right-color:transparent;\n\tborder-right-style:dashed;\n\tborder-bottom-width:0;\n\tborder-top-color:#fff;\n\tborder-top-style:solid;\n\tleft:50%;\n\tmargin-left:-6px\n}\n.bubble_bottom .bubbleTips_arrow.in {\n\tbottom:1px\n}\n.bubble_bottom .bubbleTips_arrow.out {\n\tborder-top-color:#e7e7eb;\n\tbottom:0\n}\n.bubbleTips_inner {\n\tpadding:4.5px 12px;\n\tborder:1px solid #e7e7eb;\n\tline-height:21px;\n\tbackground-color:#fff;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.bubbleTips_arrow {\n\tposition:absolute;\n\ttop:50%;\n\tmargin-top:-6px;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:6px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-left-width:0;\n\tborder-right-color:#fff;\n\tborder-right-style:solid\n}\n.icon20_common {\n\twidth:20px;\n\theight:20px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:300px;\n\toverflow:hidden\n}\n.icon20_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2761px no-repeat\n}\n.icon36_common {\n\twidth:36px;\n\theight:36px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:300px;\n\toverflow:hidden\n}\n.icon36_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2791px no-repeat\n}\n.create_access {\n\tdisplay:block;\n\tborder:2px dotted #d9dadc;\n\tline-height:80px;\n\ttext-align:center;\n\tmargin-bottom:20px\n}\n.create_access i {\n\tcursor:pointer\n}\n.create_access a {\n\tdisplay:none;\n\tvertical-align:middle;\n\tmargin-left:10px;\n\tmargin-right:10px;\n\tcolor:#d9d9d9;\n\tfont-size:14px;\n\tline-height:normal\n}\n.create_access a strong {\n\tdisplay:block;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.create_access:hover {\n\tborder-color:#b3b3b3\n}\n.create_access:hover .add_gray {\n\tdisplay:none\n}\n.create_access:hover a {\n\tdisplay:inline-block\n}\n.create_access:hover a:hover {\n\tcolor:#b3b3b3\n}\n.create_access_primary {\n\tdisplay:block;\n\tborder:2px dotted #d9dadc;\n\tline-height:60px;\n\tfont-size:0;\n\ttext-align:center;\n\tmargin-bottom:20px\n}\n.create_access_primary i {\n\tcursor:pointer\n}\n.create_access_primary:hover {\n\tborder-color:#b3b3b3\n}\n.create_access_primary:hover .icon20_common {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2837px no-repeat\n}\n.create_access_primary:hover .icon36_common {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2867px no-repeat\n}\n.create_access_primary:hover .icon42_common {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2913px no-repeat\n}\n.icon_menu {\n\twidth:23px;\n\theight:23px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_menu.manage {\n\tbackground:transparent url(../img/base/icon_menu_manage.png?__sprite) no-repeat 0 0\n}\n.icon_menu.function {\n\tbackground:transparent url(../img/base/icon_menu_function.png?__sprite) no-repeat 0 0\n}\n.icon_menu.statistics {\n\tbackground:transparent url(../img/base/icon_menu_statistics.png?__sprite) no-repeat 0 0\n}\n.icon_menu.service {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2965px no-repeat\n}\n.icon_menu.setting {\n\tbackground:transparent url(../img/base/icon_menu_setting.png?__sprite) no-repeat 0 0\n}\n.icon_menu.appcenter {\n\tbackground:transparent url(../img/base/icon_menu_appcenter.png?__sprite) no-repeat 0 0\n}\n.icon_menu.guide {\n\tbackground:transparent url(../img/base/icon_menu_guide.png?__sprite) no-repeat 0 0\n}\n.icon_menu.store {\n\tbackground:transparent url(../img/base/icon_menu_store.png?__sprite) no-repeat 0 0\n}\n.icon_menu.adclient {\n\tbackground:transparent url(../img/base/icon_menu_adclient.png?__sprite) no-repeat 0 0\n}\n.icon_menu.adhost {\n\tbackground:transparent url(../img/base/icon_menu_adhost.png?__sprite) no-repeat 0 0\n}\n.icon_menu.advert {\n\tbackground:transparent url(../img/base/icon_menu_advert.png?__sprite) no-repeat 0 0\n}\n.icon_menu.task {\n\tbackground:transparent url(../img/base/icon_menu_task.png?__sprite) no-repeat 0 0\n}\n.icon_menu.tool {\n\tbackground:transparent url(../img/base/icon_menu_tool.png?__sprite) no-repeat 0 0\n}\n.icon_menu.log {\n\tbackground:transparent url(../img/base/icon_menu_log.png?__sprite) no-repeat 0 0\n}\n.icon_menu.access {\n\tbackground:transparent url(../img/base/icon_menu_access.png?__sprite) no-repeat 0 0\n}\n.icon_menu.monitor {\n\tbackground:transparent url(../img/base/icon_menu_monitor.png?__sprite) no-repeat 0 0\n}\n.icon_menu.user {\n\tbackground:transparent url(../img/base/icon_menu_user.png?__sprite) no-repeat 0 0\n}\n.icon_menu.db {\n\tbackground:transparent url(../img/base/icon_menu_db.png?__sprite) no-repeat 0 0\n}\n\n.icon_menu.sample {\n\tbackground:transparent url(../img/base/icon_menu_sample.png?__sprite) no-repeat 0 0\n}\n.icon_menu.service {\n\tbackground:transparent url(../img/base/icon_menu_service.png?__sprite) no-repeat 0 0\n}\n\n.selected .icon_menu.manage {\n\tbackground:transparent url(../img/base/icon_menu_manage_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.function {\n\tbackground:transparent url(../img/base/icon_menu_function_selected.png?__sprite) no-repeat 0 0\n}\n\n.selected .icon_menu.sample {\n\tbackground:transparent url(../img/base/icon_menu_sample_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.service {\n\tbackground:transparent url(../img/base/icon_menu_service_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.statistics {\n\tbackground:transparent url(../img/base/icon_menu_statistics_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.service {\n\tbackground:transparent url(../img/base/icon_menu_service_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.setting {\n\tbackground:transparent url(../img/base/icon_menu_setting_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.appcenter {\n\tbackground:transparent url(../img/base/icon_menu_appcenter_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.guide {\n\tbackground:transparent url(../img/base/icon_menu_guide_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.store {\n\tbackground:transparent url(../img/base/icon_menu_store_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.adhost {\n\tbackground:transparent url(../img/base/icon_menu_adhost_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.advert {\n\tbackground:transparent url(../img/base/icon_menu_advert_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.task {\n\tbackground:transparent url(../img/base/icon_menu_task_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.tool {\n\tbackground:transparent url(../img/base/icon_menu_tool_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.log {\n\tbackground:transparent url(../img/base/icon_menu_log_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.access {\n\tbackground:transparent url(../img/base/icon_menu_access_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.monitor {\n\tbackground:transparent url(../img/base/icon_menu_monitor_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.user {\n\tbackground:transparent url(../img/base/icon_menu_user_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.db {\n\tbackground:transparent url(../img/base/icon_menu_db_selected.png?__sprite) no-repeat 0 0\n}\n.icon_menu_switch {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2993px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.closed .icon_menu_switch {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3019px no-repeat\n}\n.closed.selected .icon_menu_switch {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3045px no-repeat\n}\n.menu_box {\n\tmargin-bottom:150px\n}\n.menu {\n\tpadding-top:8px\n}\n.menu.closed .menu_item {\n\tdisplay:none\n}\n.menu_title {\n\tposition:relative;\n\tpadding:0 30px 0;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tline-height:34px;\n\tcolor:#8d8d8d;\n\tfont-weight: normal;\n}\n.menu_title .new {\n\tmargin-left:3px\n}\n.menu_title a {\n\tdisplay:block;\n\tpadding:0 30px 0;\n\tcolor:#222;\n\ttext-decoration:none\n}\n.menu_title a:hover {\n\ttext-decoration:none\n}\n.menu_title.clickable {\n\tpadding:0\n}\n.menu_title.clickable i {\n\tcursor:pointer\n}\n.menu_title.clickable:hover {\n\tbackground-color:#f4f5f9\n}\n.menu_title.selected {\n\tbackground-color:#44b549;\n\tcolor:#fff\n}\n.menu_title.selected:hover {\n\tbackground-color:#44b549\n}\n.menu_title.selected a {\n\tcolor:#fff\n}\n.menu_item {\n\tline-height:34px\n}\n.menu_item a {\n\t/*display:block;*/\n\tpadding:0 0 0 63px;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tcolor:#222\n}\n.menu_item a:hover {\n\ttext-decoration:none\n}\n.icon_menu {\n\tmargin-right:10px;\n\t*margin-top:.2em\n}\n.icon_menu_switch {\n\tposition:absolute;\n\tright:16px;\n\ttop:50%;\n\tmargin-top:-9px\n}\n.menu {\n\tpadding-bottom:6px;\n\tborder-top:1px solid #e7e7eb\n}\n.menu.no_extra {\n\tborder-top-width:0;\n\tmargin-top:13px\n}\n.menu.extra {\n\tborder-bottom:1px solid #e7e7eb\n}\n.menu_title {\n\tmargin-bottom:0\n}\n.menu_item:hover {\n\tbackground-color:#f4f5f9\n}\n.menu_item.selected {\n\tbackground-color:#44b549;\n\tcolor:#fff\n}\n.menu_item.selected a {\n\tcolor:#fff\n}\n.menu_plugins {\n\tpadding:10px 0\n}\n.menu_plugins .btn_plugins_add {\n\tdisplay:block;\n\tline-height:34px;\n\tcolor:#8d8d8d;\n\tpadding-left:41px;\n\twidth:121px;\n\tmargin:0 auto;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3071px no-repeat;\n\tcursor:pointer\n}\n.menu_plugins .btn_plugins_add:hover {\n\ttext-decoration:none;\n\tcolor:#222;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3115px no-repeat\n}\n.menu_plugins .btn_plugins_add i {\n\tmargin-right:5px\n}\n.menu_primary_box {\n\twidth:208px\n}\n.menu_primary_item {\n\tline-height:32px\n}\n.menu_primary_item:hover {\n\tbackground-color:#f4f5f9\n}\n.menu_primary_item.selected {\n\tbackground-color:#44b549\n}\n.menu_primary_item.selected .menu_primary_link {\n\tcolor:#fff\n}\n.menu_primary_item.sub .menu_primary_link strong {\n\tmargin-left:28px\n}\n.menu_primary_link {\n\tdisplay:block;\n\tcolor:#222\n}\n.menu_primary_link:hover {\n\ttext-decoration:none\n}\n.menu_primary_link strong {\n\tdisplay:block;\n\tcursor:pointer;\n\tmargin:0 14px;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.inner_menu_box.sorting .inner_menu_item {\n\tbackground-color:#fff\n}\n.inner_menu_box.sorting .menu_opr {\n\tdisplay:block\n}\n.inner_menu_box.gray .inner_menu.dragging dt.inner_menu_item {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_box.gray .inner_menu_item:hover,.inner_menu_box.gray .inner_menu_item.selected {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_box.gray.sorting .inner_menu_item {\n\tbackground-color:#fff\n}\n.inner_menu_box.gray.sorting .inner_menu_item.dragging {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_box.with_switch .icon_dot {\n\tposition:absolute;\n\ttop:50%;\n\tleft:25px;\n\tmargin-top:-14px;\n\t-webkit-transform:scale(0.8);\n\tfont-size:10px\n}\n.inner_menu_box.with_switch dt .inner_menu_link {\n\tpadding-left:20px\n}\n.inner_menu_box.with_switch dd .inner_menu_link {\n\tpadding-left:36px\n}\n.inner_menu {\n\tborder-top:1px solid #e7e7eb\n}\n.inner_menu:first-child {\n\tborder-top-width:0\n}\n.inner_menu .menu_opr {\n\tdisplay:none;\n\tposition:absolute;\n\ttop:0;\n\tright:1em\n}\n.inner_menu .menu_opr a {\n\tdisplay:inline-block;\n\tmargin-left:.5em;\n\tmargin-top:-0.2em\n}\n.inner_menu .menu_opr a.no_extra {\n\tmargin-left:0\n}\n.inner_menu.no_extra {\n\tborder-top-width:0\n}\n.inner_menu_item {\n\tposition:relative;\n\tline-height:32px\n}\n.inner_menu_item:hover,.inner_menu_item.selected {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_item:hover .menu_opr,.inner_menu_item.selected .menu_opr {\n\tdisplay:block\n}\n.inner_menu_item:hover a,.inner_menu_item.selected a {\n\ttext-decoration:none\n}\n.inner_menu_link {\n\tdisplay:block;\n\tcolor:#222;\n\tpadding-left:1em;\n\ttext-decoration:none\n}\ndd .inner_menu_link {\n\tpadding-left:2em\n}\n.inner_menu_link strong {\n\tdisplay:inline-block;\n\tmargin-top:-2px;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tmax-width:80px;\n\tfont-weight:400;\n\tfont-style:normal;\n\tvertical-align:middle;\n\tcursor:pointer\n}\n.drag_placeholder {\n\tmargin:8px;\n\theight:80px;\n\tborder:1px solid #e7e7eb\n}\n.sub_drag_placeholder {\n\tmargin:8px;\n\theight:32px;\n\tborder:1px solid #e7e7eb\n}\n.icon_common.new {\n\tmargin-left:3px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3159px no-repeat;\n\twidth:18px;\n\theight:12px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_common.beta {\n\tmargin-top:-5px;\n\tmargin-left:3px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3178px no-repeat;\n\twidth:25px;\n\theight:12px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_dot {\n\tdisplay:inline-block;\n\tfont-weight:400;\n\tfont-style:normal;\n\tvertical-align:middle;\n\tfont-size:8px;\n\tcolor:#d5d5d5\n}\n.icon_dropdown_switch {\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:5px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-bottom-width:0;\n\tborder-top-color:#c6c6c6;\n\tborder-top-style:solid;\n\toverflow:hidden\n}\n.icon_dropdown_switch.highlight {\n\tborder-top-color:#a0a0a0\n}\n.open .icon_dropdown_switch,.single_up .icon_dropdown_switch,.icon_dropdown_switch.single_up {\n\tborder-top-color:transparent;\n\tborder-top-style:dashed;\n\tborder-bottom-width:5px;\n\tborder-bottom-color:#c6c6c6;\n\tborder-bottom-style:solid;\n\tborder-top-width:0\n}\n.open .icon_dropdown_switch.highlight,.single_up .icon_dropdown_switch.highlight,.icon_dropdown_switch.single_up.highlight {\n\tborder-bottom-color:#a0a0a0\n}\n.icon_rank {\n\tposition:relative;\n\twidth:5px;\n\tdisplay:inline-block;\n\twidth:14px;\n\theight:14px\n}\n.icon_rank .single_up {\n\tposition:absolute;\n\ttop:1px;\n\tright:0\n}\n.icon_rank .single_down {\n\tposition:absolute;\n\ttop:7px;\n\tright:0\n}\n.icon_rank:hover .single_down {\n\tborder-top-color:#a0a0a0\n}\n.icon_rank:hover .single_up {\n\tborder-bottom-color:#a0a0a0\n}\n.icon12_del {\n\tdisplay:inline-block;\n\ttext-decoration:none;\n\tvertical-align:middle;\n\tfont-weight:400;\n\tfont-style:normal;\n\tcursor:pointer;\n\tfont-size:12px;\n\tcolor:#b3b3b3\n}\n.icon12_del:hover {\n\tcolor:#545454\n}\n.icon_card_selected {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3201px no-repeat;\n\twidth:46px;\n\theight:46px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_verify {\n\twidth:82px;\n\theight:30px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_verify.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3257px no-repeat\n}\n.icon_verify.fail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3297px no-repeat\n}\n.icon_verify_checked {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3337px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_wxverify_status {\n\tdisplay:inline-block;\n\tvertical-align:middle\n}\n.icon_wxverify_status.name_waiting {\n\twidth:86px;\n\theight:24px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3363px no-repeat\n}\n.icon_wxverify_status.file_success {\n\twidth:96px;\n\theight:24px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3397px no-repeat\n}\n.icon_loading_small {\n\twidth:30px;\n\theight:30px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_loading_small.dark {\n\tbackground:transparent url(../img/base/icon30_loading_gray_dark1e5b3a.png) no-repeat 0 0\n}\n.icon_loading_small.light {\n\tbackground:transparent url(../img/base/icon30_loading_gray_ligth1e5b3a.png) no-repeat 0 0\n}\n.icon32_loading {\n\twidth:32px;\n\theight:32px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon32_loading.dark {\n\tbackground:transparent url(../img/base/icon32_loading_dark1e5b3a.gif) no-repeat 0 0\n}\n.icon32_loading.light {\n\tbackground:transparent url(../img/base/icon32_loading_light1e5b3a.gif) no-repeat 0 0\n}\n.icon13_common {\n\twidth:13px;\n\theight:13px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon13_common.arrow_right_gray {\n\tbackground:transparent url(../img/base/icon13_arrow_right_gray1e5b3a.png) no-repeat 0 0\n}\n.icon14_common {\n\twidth:14px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon14_common.rank_gray {\n\tcursor:pointer;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3431px no-repeat\n}\n.icon14_common.rank_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3455px no-repeat\n}\n.single_up .icon14_common.rank_gray,.icon14_common.rank_gray.single_up {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3479px no-repeat\n}\n.single_up .icon14_common.rank_gray:hover,.icon14_common.rank_gray.single_up:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3503px no-repeat\n}\n.single_down .icon14_common.rank_gray,.icon14_common.rank_gray.single_down {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3527px no-repeat\n}\n.single_down .icon14_common.rank_gray:hover,.icon14_common.rank_gray.single_down:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3551px no-repeat\n}\n.icon14_common.add_white {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3575px no-repeat\n}\n.icon14_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3599px no-repeat\n}\n.icon14_common.add_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3623px no-repeat\n}\n.icon14_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3647px no-repeat\n}\n.icon14_common.edit_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3671px no-repeat\n}\n.icon14_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3695px no-repeat\n}\n.icon14_common.del_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3719px no-repeat\n}\n.icon14_common.sort_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3743px no-repeat\n}\n.icon14_common.sort_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3767px no-repeat\n}\n.icon14_common.add_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3791px no-repeat\n}\n.icon14_common.switch_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3815px no-repeat\n}\n.icon14_common.switch_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3839px no-repeat\n}\na:hover .icon14_common.switch_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3863px no-repeat\n}\n.icon_mini_tips {\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_mini_tips.document_link {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3887px no-repeat\n}\n.icon16_common {\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon16_common.close {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3913px no-repeat\n}\n.icon16_common.close:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3939px no-repeat\n}\n.icon16_common.close_flat {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3965px no-repeat\n}\n.icon16_common.close_flat:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3991px no-repeat\n}\n.icon16_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4017px no-repeat\n}\n.icon16_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4043px no-repeat\n}\n.icon16_common.enter_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4069px no-repeat\n}\n.icon16_common.enter_gray.frm_input_append {\n\tmargin-top:-8px\n}\n.icon16_common.star_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4095px no-repeat\n}\n.icon16_common.star_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4120px no-repeat\n}\n.icon16_common.star_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4146px no-repeat\n}\n.icon16_common.star_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4172px no-repeat\n}\n.icon16_common.star_orange:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4200px no-repeat\n}\n.icon16_common.woman_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4226px no-repeat\n}\n.icon16_common.man_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4252px no-repeat\n}\n.icon16_common.reply_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4278px no-repeat\n}\n.icon16_common.reply_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4304px no-repeat\n}\n.icon16_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4330px no-repeat\n}\n.icon16_common.del_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4356px no-repeat\n}\n.icon16_common.search_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4382px no-repeat\n}\n.icon16_common.sort_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4408px no-repeat\n}\n.icon16_common.sort_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4434px no-repeat\n}\n.icon16_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4460px no-repeat\n}\n.icon16_common.add_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4486px no-repeat\n}\n.icon16_common.save_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4512px no-repeat\n}\n.icon16_common.save_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4538px no-repeat\n}\n.icon18_common {\n\twidth:18px;\n\theight:18px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon18_common.woman_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4564px no-repeat\n}\n.icon18_common.man_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4592px no-repeat\n}\n.icon18_common.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4620px no-repeat\n}\n.icon18_common.add_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4648px no-repeat\n}\n.selected .icon18_common.add_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4676px no-repeat\n}\n.icon18_common.add_white {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4704px no-repeat\n}\n.icon18_common.del_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4732px no-repeat\n}\n.icon18_common.del_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4760px no-repeat\n}\n.icon18_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4788px no-repeat\n}\na:hover .icon18_common.del_gray,.icon18_common.del_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4816px no-repeat\n}\n.icon18_common.link_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4844px no-repeat\n}\n.icon18_common.link_gray:hover,.hover .icon18_common.link_gray,a:hover .icon18_common.link_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4872px no-repeat\n}\n.icon18_common.download_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4900px no-repeat\n}\n.icon18_common.download_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4928px no-repeat\n}\n.icon18_common.upload_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4956px no-repeat\n}\n.icon18_common.upload_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4984px no-repeat\n}\n.icon18_common.download_simple_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5012px no-repeat\n}\n.icon18_common.download_simple_gray:hover,a:hover .icon18_common.download_simple_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5040px no-repeat\n}\n.icon18_common.download_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5068px no-repeat\n}\n.icon18_common.download_gray:hover,a:hover .icon18_common.download_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5096px no-repeat\n}\n.icon18_common.move_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5124px no-repeat\n}\n.icon18_common.move_gray:hover,a:hover .icon18_common.move_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5152px no-repeat\n}\n.icon18_common.reply_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5180px no-repeat\n}\n.icon18_common.reply_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5208px no-repeat\n}\n.icon18_common.star_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5236px no-repeat\n}\n.icon18_common.star_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5264px no-repeat\n}\n.icon18_common.save_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5292px no-repeat\n}\n.icon18_common.save_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5320px no-repeat\n}\n.icon18_common.edit_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5348px no-repeat\n}\n.icon18_common.edit_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5376px no-repeat\n}\n.selected .icon18_common.edit_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5404px no-repeat\n}\n.icon18_common.zoomout_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5432px no-repeat\n}\n.icon18_common.zoomout_gray:hover,a:hover .icon18_common.zoomout_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5460px no-repeat\n}\n.icon18_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5488px no-repeat\n}\n.icon18_common.edit_gray:hover,a:hover .icon18_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5516px no-repeat\n}\n.icon18_common.star_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5544px no-repeat\n}\n.icon18_common.save_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5572px no-repeat\n}\n.icon18_common.save_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5600px no-repeat\n}\n.icon18_common.qrcode_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5628px no-repeat\n}\n.icon18_common.qrcode_gray:hover,a:hover .icon18_common.qrcode_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5656px no-repeat\n}\n.icon20_common {\n\twidth:20px;\n\theight:20px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon20_common.reply_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5684px no-repeat\n}\n.icon20_common.reply_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5714px no-repeat\n}\n.icon20_common.speaker {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5744px no-repeat\n}\n.icon21_common {\n\twidth:21px;\n\theight:21px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon21_common.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5770px no-repeat\n}\n.icon21_common.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5801px no-repeat\n}\n.icon21_common.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5832px no-repeat\n}\n.icon22_common {\n\twidth:22px;\n\theight:22px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon22_common.checked {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5863px no-repeat\n}\n.icon22_common.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5895px no-repeat\n}\n.icon22_common.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5927px no-repeat\n}\n.icon22_common.fail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5959px no-repeat\n}\n.icon24_common {\n\twidth:24px;\n\theight:24px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon24_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5991px no-repeat\n}\n.icon28_common {\n\twidth:28px;\n\theight:28px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon28_common.upload_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -6025px no-repeat\n}\nbody {\n\tmin-width:1200px;\n\tbackground:#e7e8eb\n}\n\n/*主页顶部样式*/\n.main-header{height: 41px;padding:0px 0 0 20px;margin:6px -15px 20px -15px;clear:both;font-weight:400;font-size:16px;display:block;color:#5b5b5b;border-bottom:1px solid #ddd}\n\n/* 分页样式 （暂时）*/\n#page .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:12px;line-height:18px;*line-height:18px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}\n#page .btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}\n#page .btn:active,.btn.active{background-color:#cccccc \\9;}\n#page .btn:first-child{*margin-left:0;}\n#page .btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}\n#page .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}\n/*#page .btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \\9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}*/\n#page .btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \\9;background-image:none;outline:0;}\n#page .btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}\n#page .btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}\n#page .btn-group+.btn-group{margin-left:5px;}\n#page .btn-toolbar{font-size:0;margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px;}\n#page .btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n#page .btn-group>.btn+.btn{margin-left:-1px;}\n#page .btn-group>.btn,.btn-group>.dropdown-menu{font-size:12px;}\n#page .btn-group>.btn-mini{font-size:11px;}\n#page .btn-group>.btn-small{font-size:12px;}\n#page .btn-group>.btn-large{font-size:16px;}\n#page .btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:0px;-moz-border-radius-topleft:0px;border-top-left-radius:0px;-webkit-border-bottom-left-radius:0px;-moz-border-radius-bottomleft:0px;border-bottom-left-radius:0px;}\n#page .btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:0px;-moz-border-radius-topright:0px;border-top-right-radius:0px;-webkit-border-bottom-right-radius:0px;-moz-border-radius-bottomright:0px;border-bottom-right-radius:0px;}\n#page .btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:0px;-moz-border-radius-topleft:0px;border-top-left-radius:0px;-webkit-border-bottom-left-radius:0px;-moz-border-radius-bottomleft:0px;border-bottom-left-radius:0px;}\n#page .btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:0px;-moz-border-radius-topright:0px;border-top-right-radius:0px;-webkit-border-bottom-right-radius:0px;-moz-border-radius-bottomright:0px;border-bottom-right-radius:0px;}\n#page .btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}\n#page .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}\n#page .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}\n#page .btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}\n#page .btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}\n#page .btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}\n#page .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}\n#page .btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}\n#page .btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}\n#page .btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}\n#page .btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}\n#page .btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}\n#page .btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}\n#page .btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}\n#page .btn .caret{margin-top:8px;margin-left:0;}\n#page .btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;}\n#page .btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}\n#page .dropup .btn-large .caret{border-bottom-width:5px;}\n#page .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}\n#page .btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}\n#page .btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n#page .btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px;}\n#page .btn-group-vertical .btn:first-child{-webkit-border-radius:0px 0px 0 0;-moz-border-radius:0px 0px 0 0;border-radius:0px 0px 0 0;}\n#page .btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 0px 0px;-moz-border-radius:0 0 0px 0px;border-radius:0 0 0px 0px;}\n#page .btn-group-vertical .btn-large:first-child{-webkit-border-radius:0px 0px 0 0;-moz-border-radius:0px 0px 0 0;border-radius:0px 0px 0 0;}\n#page .btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 0px 0px;-moz-border-radius:0 0 0px 0px;border-radius:0 0 0px 0px;}\n\n/***************** button 样式**********************************/\n\n.btn{position:relative;display:inline-block;padding:0px 30px;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;-webkit-appearance:none;font-size:15px;font-weight:bold;text-align:center}\n.btn{color:#fff;cursor:pointer;margin-bottom:10px}\n.btn-black{background-color:#595b61}\n.btn-blue{background-color:#015991}\n.btn-red{background-color:#ee5315}\n.btn-green{background-color:#38be35}\n.btn-azure{background-color:#13b8d5}\n.btn-purple{background-color:#7b4aa9}\n.btn:hover, .btn:focus{color:#fff;text-decoration:none;outline:0}\n.btn-black:hover{background-color:#4e5055}\n.btn-blue:hover{background-color:#015083}\n.btn-red:hover{background-color:#d3470f}\n.btn-green:hover{background-color:rgba(56,190,53,.8)}\n.btn-azure:hover{background-color:rgba(19,184,213,.8)}\n.btn-purple:hover{background-color:rgba(123,74,169,.8)}\n.btn-min-w{min-width:30px}\n.btn-wxl{width:350px}\n.btn-wl{width:272px}\n.btn-wm{width:130px}\n.btn-l{padding:.7em .9em .72em;font-size:22px;font-weight:normal}\n.btn-disabled{opacity: 0.5;}\n\n\n/*增加按钮*/\n.btn.btn-white{border-width:1px; text-shadow: none !important; background-color: #FFF !important;}\n.btn.btn-bold{border-bottom-width:2px;}\n.btn.btn-round{border-bottom-width:2px; border-radius:4px !important;}\n.btn-white.btn-default{border-color:#abbac3; color:#80909a !important;}\n.btn-white.btn-info{border-color:#8fbcd9; color:#70a0c1 !important;}\n.btn-white.btn-warning{border-color:#e7b979; color:#daa458 !important;}\n.bigger-120{font-size:120% !important;}\n.blue{color:#478fca !important;}\n.orange{color:#ff892a !important;}\n.red2{color:#e08374 !important;}\n\n.btn-white.btn-default:hover,\n.btn-white.btn-default:focus,\n.btn-white.btn-default:active{background-color:#eff2f4 !important; border-color:#abbac3;}\n.btn-white.btn-default:hover{color:#6b8595 !important;}\n.btn-white.btn-info:hover,\n.btn-white.btn-info:focus,\n.btn-white.btn-info:active{background-color:#eef5fa !important; border-color:#8fbcd9;}\n.btn-white.btn-info:hover{color:#5896bf !important;}\n.btn-white.btn-warning:hover,\n.btn-white.btn-warning:focus,\n.btn-white.btn-warning:active{background-color:#fef7ec !important; border-color:#e7b979;}\n.btn-white.btn-warning:hover{color:#db9a3d !important;}\n.btn.btn-c-white{border:0 !important;}\n.btn-w-120{width:120px; height:38px; font-size:15px;}\n.btn-c-white{color:#fff !important; text-shadow:none !important;}\n\n\n/*表格样式*/\ntable{margin:0}\ntable tr th,table tr td{padding-left:15px;padding-right:15px}\n\n.table>thead>tr>th{vertical-align:top;border-bottom:1px solid #ddd}\n.table-message tr.unread{font-weight:600;background:#fffce0}\n.table-hover>tbody>tr:hover.unread>td{background:#fcf5bf}\n/*sortable theme bootstrap css*/\ntable[data-sortable]{border-collapse:collapse;border-spacing:0}\ntable[data-sortable] th{vertical-align:bottom;font-weight:bold}\ntable[data-sortable] th,table[data-sortable] td{text-align:left;padding:10px}\ntable[data-sortable] th:not([data-sortable=\"false\"]){-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;cursor:pointer}\ntable[data-sortable] th:after{content:\"\";visibility:hidden;display:inline-block;vertical-align:inherit;height:0;width:0;border-width:5px;border-style:solid;border-color:transparent;margin-right:1px;margin-left:10px;float:right}\ntable[data-sortable] th[data-sorted=\"true\"]:after{visibility:visible}\ntable[data-sortable] th[data-sorted-direction=\"descending\"]:after{border-top-color:inherit;margin-top:8px}\ntable[data-sortable] th[data-sorted-direction=\"ascending\"]:after{border-bottom-color:inherit;margin-top:3px}\ntable[data-sortable].sortable-theme-bootstrap{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background:white}\ntable[data-sortable].sortable-theme-bootstrap thead th{border-bottom:2px solid #e0e0e0}\ntable[data-sortable].sortable-theme-bootstrap tbody td{border-top:1px solid #e0e0e0}\ntable[data-sortable].sortable-theme-bootstrap th[data-sorted=\"true\"]{color:#3a87ad;background:#d9edf7;border-bottom-color:#bce8f1}\ntable[data-sortable].sortable-theme-bootstrap th[data-sorted=\"true\"][data-sorted-direction=\"descending\"]:after{border-top-color:#3a87ad}\ntable[data-sortable].sortable-theme-bootstrap th[data-sorted=\"true\"][data-sorted-direction=\"ascending\"]:after{border-bottom-color:#3a87ad}\ntable[data-sortable].sortable-theme-bootstrap.sortable-theme-bootstrap-striped tbody>tr:nth-child(odd)>td{background-color:#f9f9f9}\n\n\n\n/*表格相关样式*/\n.table-message>tbody>tr>td>a{display:block;color:#5b5b5b}\n.table-message>tbody>tr>td>a:hover{text-decoration:none}\n.data-table-toolbar{margin:15px 0}\n.data-table-toolbar span.paging-status{font-weight:bold;margin:10px 10px 0 0}\n.data-table-toolbar{margin:15px 0;padding:0 15px}\n.toolbar-btn-action{text-align:right}\n\n.box-info{position:relative;padding:15px;background:#fff;color:#5b5b5b;margin-bottom:20px}\n.box-info:hover{color:#393e48}\n.box-info:before,.box-info:after{display:table;content:\" \"}\n.box-info:after{clear:both}\n/* 无应用时提示样式 */\n.app-tip p{padding:9px 15px 15px 15px;margin:5px -15px 20px -15px;font-weight:400;font-size:16px;display:block;color:#5b5b5b;border-bottom:1px solid #ddd}\n.app-tip p.no-style{padding:0;margin:20px 0 10px 0;margin-top:20px;margin-bottom:10px;font-size:30px;border-bottom:0}\n\n/* 表格上方搜索框css  */\n.form-control{font-size:13px;border-radius:0;border-color:#ddd;}\n.form-inline .form-control {display: inline-block;width: auto;vertical-align: middle;}\n.form-control:focus{border-color:#dadada}\n\n/*多列表单*/\n.form-columns .form-group{width:100%; margin-bottom:15px;}\n.form-columns .form-group .control-label{float:left; width:15%; text-align:right; line-height:34px;font-weight: 500;}\n.form-columns .form-group .controls{float:left; width:80%; min-height: 45px; margin-left:14px;}\n.form-columns .form-group .controls input[type=\"text\"],\n.form-columns .form-group .controls input[type=\"password\"],\n.form-columns .form-group .controls select{width:270px;}\n.form-columns .form-group .controls textarea{width:50%;}\n.form-columns .form-group .controls textarea{resize:none; overflow:hidden;}\n.form-columns .form-group .required{margin-left:4px; color:#f00;}\n.form-columns .form-group .controls .required{margin-left:4px; color:#f00;}\n.form-columns .radio-inline input[type=\"radio\"],\n.form-columns .checkbox-inline input[type=\"checkbox\"]{margin-left:-16px;}\n/*表单填写行hover样式*/\n.form-group:hover > label{color:#66afe9;}\n.form-group:hover .form-control{border-color:#66afe9; outline:0; -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6); box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);}\n/* 表单错误提示信息 */\nspan.error{display:inline; margin-top:5px; color:#b94a48;}\n/*表单帮组信息*/\n.form-group .help-block {border-bottom: none;color: #AAA6A6;font-size: 14px;}\n\n/*加载中*/\n.loading{position:absolute; top:50%; left:50%; margin-top:-190px; margin-left:-254px; background:url(../img/loading.gif) no-repeat;}\n.icon-loading{display:inline-block; vertical-align:middle; width:16px; height:16px; background:url(../img/btn_loading.gif) no-repeat;}\n\n/* app 创建流程图 css*/\n.create_flow  .btn-default{background:#fff !important; color:#333 !important; border:1px solid #ccc !important;}\n.create_flow  .btn-default:hover{background:#ebebeb !important; border:1px solid #adadad !important;}\n.create_flow .easywizardsteps{list-style:none;height: 62px;overflow:hidden;margin:0;padding:0;border-bottom:1px solid #ccc;margin-bottom:20px;background:#fafafa}\n.create_flow .easywizardsteps li{font-size:18px;display:inline-block;padding:15px 20px;color:#b0b1b3;margin-right:0}\n.create_flow .easywizardsteps li span{font-size:20px;padding:2px 10px;border-radius:50%;margin-top:-5px}\n.create_flow .easywizardsteps li.current span{background:#65bd77;color:#fff}\n.create_flow .easywizardsteps li.current{color:#2c7439;background:#fff;height: 62px}\n.create_flow .easywizardbuttons li.current{color:#2c7439;background:#fff;width: 1048px;height: 62px;}\n.create_flow .easyWizardButtons{overflow:hidden;padding:10px}\n.create_flow .easywizardbuttons button,.create_flow .easywizardbuttons .submit{cursor:pointer}\n.create_flow .easywizardbuttons .prev{float:left}\n.create_flow .easywizardbuttons .next,.create_flow .easywizardbuttons .submit{float:right}\n.create_flow .notes{padding:15px;border:1px dashed #ddd}\n.create_flow section.step{padding:0 30px}\n@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){.create_flow .icheckbox_minimal-grey,.create_flow .iradio_minimal-grey{background-image:url(grey@2x.png);-webkit-background-size:200px 20px;background-size:200px 20px}\n}\n\n/*流程图 wizard css*/\n#dev-flow #fuelux-wizard{margin-top:60px}\n#dev-flow .wizard-steps{list-style:none;display:block;width:100%;padding:0;margin:12px 0 0;position:relative;left:-40px}\n#dev-flow .wizard-steps li{display:block;text-align:center;float:left;min-width:33%;max-width:33%}\n#dev-flow .wizard-steps li:before{display:block;content:\"\";width:100%;height:1px;font-size:0;overflow:hidden;border-top:3px solid #e5e8ed;position:relative;top:12px;z-index:1}\n#dev-flow .wizard-steps li:first-child:before{max-width:50%;left:50%}\n#dev-flow .wizard-steps li:last-child:before{max-width:50%;width:50%}\n#dev-flow .wizard-steps li.last-child:before{max-width:50%;width:50%}\n#dev-flow .wizard-steps li.active:before,#dev-flow .wizard-steps li.complete:before,#dev-flow .wizard-steps li.active .step,#dev-flow .wizard-steps li.complete .step{border-color:#65BD77;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#dev-flow .wizard-steps li .step{text-align:center;border:2px solid #e5e8ed;color:#d8dce6;font-size:19px;border-radius:32px;line-height:12px;padding:7px 15px;background-color:#FFF;position:relative;z-index:2;display:inline}\n#dev-flow .wizard-steps li.complete .title,#dev-flow .wizard-steps li.active .title{color:#2b3d53}\n#dev-flow .wizard-steps li .title{display:block;max-width:100%;color:#b1bcc5;font-size:16px;z-index:104;text-align:center;table-layout:fixed;word-wrap:break-word;position:relative;top:-76px;line-height:15px}\n#dev-flow .wizard-steps li .title.active{color:#F3BA41;font-weight: bold;}\n#dev-flow .wizard-steps li .step.active{background-color:#F7CB17;color:#fff;}\n#dev-flow .step-content{margin-top:40px;margin-left:60px}\n#dev-flow .step-content .step-pane{display:none;min-height:267px}\n#dev-flow .step-content .active{display:block}\n#dev-flow .form-wrapper .field-box{margin-bottom:25px;margin-left:0;float:left;width:100%}\n#dev-flow .form-wrapper .field-box:last-child{margin-bottom:0}\n#dev-flow .form-wrapper label{display:inline-block;float:left;font-weight:600;cursor:auto;font-size:12px;width:120px;text-align:left;position:relative;top:2px;color:#333;}\n#dev-flow .form-wrapper input[type=\"text\"]{width:100%}\n#dev-flow .step-content .form-wrapper input[type=\"text\"]{width:400px;}\n#dev-flow .form-wrapper.payment-info label{width:150px}\n#dev-flow .form-wrapper .alert-msg{display:block;margin-left:120px;margin-bottom:-4px;margin-top:10px}\n#dev-flow .form-wrapper .alert-msg i{font-size:14px}\n#dev-flow .form-wrapper .field-box.error label,#dev-flow .form-wrapper .field-box.error .alert-msg{color:#c73939}\n#dev-flow .form-wrapper .field-box.error input{border-color:#c73939}\n#dev-flow .form-wrapper .field-box.success label,#dev-flow .form-wrapper .field-box.success .alert-msg{color:#379e48}\n#dev-flow .form-wrapper .field-box.success input{border-color:#379e48}\n#dev-flow .wizard-actions{float:right;margin-top:30px;margin-right:130px}\n#dev-flow .wizard-actions .btn-next{margin-left:15px}\n#dev-flow .wizard-actions .btn-finish{display:none;margin-left:15px}\n#dev-flow .wizard-steps li .step.error{background-color: #D5CCCE;color:#fff;}\n#dev-flow .wizard-steps li.error .step{border-color: #F00;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#dev-flow .wizard-steps li.error:before{\n\tborder-top-color: rgb(255, 0, 0);\n}\n@media(max-width:979px){#dev-flow .step-content{margin-left:0}\n}\n@media(max-width:600px){#dev-flow .wizard-steps{left:0}\n#dev-flow .form-wrapper input[type=\"text\"]{width:200px}\n}\n\n/*提测流程*/\n#release-flow .fuelux-wizard{margin-top:60px}\n#release-flow .wizard-steps{list-style:none;display:block;width:100%;padding:0;margin:12px 0 0;position:relative;left:-40px}\n#release-flow .wizard-steps li{display:block;text-align:center;float:left;min-width:33%;max-width:33%}\n#release-flow .wizard-steps li:before{display:block;content:\"\";width:100%;height:1px;font-size:0;overflow:hidden;border-top:3px solid #e5e8ed;position:relative;top:12px;z-index:1}\n#release-flow .wizard-steps li:first-child:before{max-width:50%;left:50%}\n#release-flow .wizard-steps li:last-child:before{max-width:50%;width:50%}\n#release-flow .wizard-steps li.last-child:before{max-width:50%;width:50%}\n#release-flow .wizard-steps li.active:before,#release-flow .wizard-steps li.complete:before,#release-flow .wizard-steps li.active .step,#release-flow .wizard-steps li.complete .step{border-color:#65BD77;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#release-flow .wizard-steps li .step{text-align:center;border:2px solid #e5e8ed;color:#d8dce6;font-size:19px;border-radius:32px;line-height:12px;padding:7px 15px;background-color:#FFF;position:relative;z-index:2;display:inline}\n#release-flow .wizard-steps li.complete .title,#release-flow .wizard-steps li.active .title{color:#2b3d53}\n#release-flow .wizard-steps li .title{display:block;max-width:100%;color:#b1bcc5;font-size:16px;z-index:104;text-align:center;table-layout:fixed;word-wrap:break-word;position:relative;top:-76px;line-height:15px}\n#release-flow .wizard-steps li .title.active{color:#F3BA41;font-weight: bold;}\n#release-flow .wizard-steps li .step.active{background-color:#F7CB17;color:#fff;}\n#release-flow .step-content{margin-top:40px;margin-left:60px}\n#release-flow .step-content .step-pane{display:none;min-height:267px}\n#release-flow .step-content .active{display:block}\n#release-flow .form-wrapper .field-box{margin-bottom:25px;margin-left:0;float:left;width:100%}\n#release-flow .form-wrapper .field-box:last-child{margin-bottom:0}\n#release-flow .form-wrapper label{display:inline-block;float:left;font-weight:600;cursor:auto;font-size:12px;width:120px;text-align:left;position:relative;top:2px;color:#333;}\n#release-flow .form-wrapper input[type=\"text\"]{width:100%}\n#release-flow .step-content .form-wrapper input[type=\"text\"]{width:400px;}\n#release-flow .form-wrapper.payment-info label{width:150px}\n#release-flow .form-wrapper .alert-msg{display:block;margin-left:120px;margin-bottom:-4px;margin-top:10px}\n#release-flow .form-wrapper .alert-msg i{font-size:14px}\n#release-flow .form-wrapper .field-box.error label,#release-flow .form-wrapper .field-box.error .alert-msg{color:#c73939}\n#release-flow .form-wrapper .field-box.error input{border-color:#c73939}\n#release-flow .form-wrapper .field-box.success label,#release-flow .form-wrapper .field-box.success .alert-msg{color:#379e48}\n#release-flow .form-wrapper .field-box.success input{border-color:#379e48}\n#release-flow .wizard-actions{float:right;margin-top:30px;margin-right:130px}\n#release-flow .wizard-actions .btn-next{margin-left:15px}\n#release-flow .wizard-actions .btn-finish{display:none;margin-left:15px}\n#release-flow .wizard-steps li .step.error{background-color: #D5CCCE;color:#fff;}\n#release-flow .wizard-steps li.error .step{border-color: #F00;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#release-flow .wizard-steps li.error:before{\n\tborder-top-color: rgb(255, 0, 0);\n}\n@media(max-width:979px){#release-flow .step-content{margin-left:0}\n}\n@media(max-width:600px){#release-flow .wizard-steps{left:0}\n#release-flow .form-wrapper input[type=\"text\"]{width:200px}\n}\n\n\n/*bootstrip 样式重写*/\n.alert{border-radius: 0px;}\n\n/*快样式*/\n.the-notes {\n\tpadding: 25px 25px 25px 30px;\n\tborder-left: 4px solid #909090;\n\tmargin-bottom: 20px;\n\theight: inherit;\n\tmargin-top: 20px;\n\tbackground: #f2f2f2;\n}\n\n.the-notes.success {\nborder-left-color: #65bd77;\n}\n\n\n.the-notes.warning {\nborder-left-color: #f7cb17;\n}\n\n.the-notes.danger{\nborder-left-color:#d9534f;\n}\n\n.the-notes.info{\nborder-left-color:#4393d8;\n}\n\n/*公用css*/\n/* 文本样式定义--begin\n --------------------------------*/\n.t_s20 {font-size:20px}\n.t_s19 {font-size:19px}\n.t_s18 {font-size:18px}\n.t_s17 {font-size:17px}\n.t_s16 {font-size:16px}\n.t_s15 {font-size:15px}\n.t_s14 {font-size:14px}\n.t_s13 {font-size:13px}\n.t_s12 {font-size:12px}\n.t_l {text-align:left}\n.t_c {text-align:center}\n.t_r {text-align:right}\n.t_b {font-weight:bold}\n.t_it {font-style:italic}\n.t_n {font-weight:normal}\n.t_no {text-decoration:none}\n.t_udl {text-decoration:underline}\n.t_del {text-decoration:line-through}\n.t_unbr {overflow:hidden; text-overflow:ellipsis; white-space:nowrap}\n.t_br {word-wrap:break-word; word-break:normal}\n.t_unbr_auto{ white-space:nowrap; overflow:visible;}\n.align {font-size:12px}\n.align label input {display:block}\n.align label {display:block; margin-left:20px !important; margin-left:11px; margin-top:-16px}\n/* 文本字体大小--end\n --------------------------------*/\n.t_white{color:#FFF;}\n.t_white a{color:#FFF;}\n.t_white .active a,.t_white .active a:hover{color:#555555}\n.t_blue{color:#2985c2}\n.t_red{color:#ff0000}\n.t_yellow{color:#ff9900}\n.t_succes,.t_success,.t_green{color: #468847}\n.t_error{color: #b94a48}\n.t_help{color: #c09853}\n.t_info{color: #3a87ad}\n.t_silver{color:#999999}\n\n\n/* 外边距定义--begin\n --------------------------------*/\n.mg60 {margin:60px;}\n.mg55 {margin:55px;}\n.mg50 {margin:50px;}\n.mg45 {margin:45px;}\n.mg40 {margin:40px;}\n.mg30 {margin:30px}\n.mg25 {margin:25px}\n.mg20 {margin:20px}\n.mg15 {margin:15px}\n.mg10 {margin:10px}\n.mg5 {margin:5px}\n.mg4 {margin:4px}\n.mg3 {margin:3px}\n.mg2 {margin:2px}\n.mg1 {margin:1px}\n.mg0 {margin:0}\n\n.mtb50 {margin:50px 0}\n.mtb45 {margin:45px 0}\n.mtb40 {margin:40px 0}\n.mtb35 {margin:35px 0}\n.mtb30 {margin:30px 0}\n.mtb25 {margin:25px 0}\n.mtb20 {margin:20px 0}\n.mtb15 {margin:15px 0}\n.mtb10 {margin:10px 0}\n.mtb5 {margin:5px 0}\n.mtb4 {margin:4px 0}\n.mtb3 {margin:3px 0}\n.mtb2 {margin:2px 0}\n.mtb1 {margin:1px 0}\n\n.mtr {margin:-2px 15px 0 0}\n.mlr60 {margin:0 60px}\n.mlr55 {margin:0 55px}\n.mlr50 {margin:0 50px}\n.mlr45 {margin:0 45px}\n.mlr40 {margin:0 40px}\n.mlr35 {margin:0 35px}\n.mlr30 {margin:0 30px}\n.mlr25 {margin:0 25px}\n.mlr20 {margin:0 20px}\n.mlr15 {margin:0 15px}\n.mlr10 {margin:0 10px}\n.mlr5 {margin:0 5px}\n.mlr4 {margin:0 4px}\n.mlr3 {margin:0 3px}\n.mlr2 {margin:0 2px}\n.mlr1 {margin:0 1px}\n\n.mt55 {margin-top:55px; *padding-top:55px}\n.mt50 {margin-top:50px}\n.mt40 {margin-top:40px; *padding-top:40px}\n.mt36 {margin-top:36px; *padding-top:36px}\n.mt35 {margin-top:35px}\n.mt30 {margin-top:30px}\n.mt25 {margin-top:25px}\n.mt20 {margin-top:20px}\n.mt15 {margin-top:15px}\n.mt10 {margin-top:10px}\n.mt5 {margin-top:5px}\n.mt4 {margin-top:4px}\n.mt3{margin-top:3px}\n.mt2{margin-top:2px}\n.mt1{margin-top:1px}\n.mt0 {margin-top:0}\n\n.mr50 {margin-right:50px}\n.mr45 {margin-right:45px}\n.mr40 {margin-right:40px}\n.mr35 {margin-right:35px}\n.mr30 {margin-right:30px}\n.mr25 {margin-right:25px}\n.mr20 {margin-right:20px}\n.mr15 {margin-right:15px}\n.mr10 {margin-right:10px}\n.mr5 {margin-right:5px}\n.mr4 {margin-right:4px}\n.mr3 {margin-right:3px}\n.mr2 {margin-right:2px}\n.mr1 {margin-right:1px}\n.mr0 {margin-right:0}\n\n.mb50 {margin-bottom:50px}\n.mb45 {margin-bottom:45px}\n.mb40 {margin-bottom:40px}\n.mb35 {margin-bottom:35px}\n.mb30 {margin-bottom:30px}\n.mb25 {margin-bottom:25px}\n.mb20 {margin-bottom:20px}\n.mb15 {margin-bottom:15px}\n.mb10 {margin-bottom:10px}\n.mb5 {margin-bottom:5px}\n.mb4 {margin-bottom:4px}\n.mb3 {margin-bottom:3px}\n.mb2 {margin-bottom:2px}\n.mb1 {margin-bottom:1px}\n.mb0 {margin-bottom:0}\n\n.ml50 {margin-left:50px}\n.ml45 {margin-left:45px}\n.ml40 {margin-left:40px}\n.ml35 {margin-left:35px}\n.ml30 {margin-left:30px}\n.ml25 {margin-left:25px}\n.ml20 {margin-left:20px}\n.ml15 {margin-left:15px}\n.ml10 {margin-left:10px}\n.ml5 {margin-left:5px}\n.ml4 {margin-left:4px}\n.ml3 {margin-left:3px}\n.ml2 {margin-left:2px}\n.ml1 {margin-left:1px}\n.ml0 {margin-left:0px}\n\n.m_t4 {margin-top:-4px}\n.m_l14{margin-left:-14px}\n.m_c {margin:0 auto; width:600px}\n.m_c50 {margin:0 auto; width:50%}\n.mlr_auto {margin:0 auto}\n.mr_nav {margin-top:-37px; margin-right:10px}\n/* 外边距定义--end\n --------------------------------*/\n.cursor_point{cursor:pointer}\n.cursor_default{cursor:default}\n/* 内边距定义--begin\n --------------------------------*/\n.pg60 {padding:60px}\n.pg55 {padding:55px}\n.pg50 {padding:50px}\n.pg45 {padding:45px}\n.pg40 {padding:40px}\n.pg35 {padding:35px}\n.pg30 {padding:30px}\n.pg25 {padding:25px}\n.pg20 {padding:20px}\n.pg15 {padding:15px}\n.pg10 {padding:10px}\n.pg5 {padding:5px}\n.pg4 {padding:4px}\n.pg3 {padding:3px}\n.pg2 {padding:2px}\n.pg1 {padding:1px}\n.pg0 {padding:0px}\n\n.ptb60 {padding:60px 0}\n.ptb55 {padding:55px 0}\n.ptb50 {padding:50px 0}\n.ptb45 {padding:45px 0}\n.ptb40 {padding:40px 0}\n.ptb35 {padding:35px 0}\n.ptb30 {padding:30px 0}\n.ptb25 {padding:25px 0}\n.ptb20 {padding:20px 0}\n.ptb15 {padding:15px 0}\n.ptb10 {padding:10px 0}\n.ptb5 {padding:5px 0}\n.ptb4 {padding:4px 0}\n.ptb3 {padding:3px 0}\n.ptb2 {padding:2px 0}\n.ptb1 {padding:1px 0}\n\n.plr60 {padding:0 60px}\n.plr55 {padding:0 55px}\n.plr50 {padding:0 50px}\n.plr45 {padding:0 45px}\n.plr40 {padding:0 40px}\n.plr35 {padding:0 35px}\n.plr30 {padding:0 30px}\n.plr25 {padding:0 25px}\n.plr20 {padding:0 20px}\n.plr15 {padding:0 15px}\n.plr10 {padding:0 10px}\n.plr5 {padding:0 5px}\n.plr4 {padding:0 4px}\n.plr3 {padding:0 3px}\n.plr2 {padding:0 2px}\n.plr1 {padding:0 1px}\n\n.pt60{padding-top:60px}\n.pt55{padding-top:55px}\n.pt50{padding-top:50px}\n.pt45{padding-top:45px}\n.pt40{padding-top:40px}\n.pt35 {padding-top:35px}\n.pt25 {padding-top:25px}\n.pt20 {padding-top:20px}\n.pt15 {padding-top:15px}\n.pt10 {padding-top:10px}\n.pt5 {padding-top:5px}\n.pt4 {padding-top:4px}\n.pt3 {padding-top:3px}\n.pt2 {padding-top:2px}\n.pt1 {padding-top:1px}\n.pt0 {padding-top:0}\n\n.pr60 {padding-right:60px}\n.pr55 {padding-right:55px}\n.pr50 {padding-right:50px}\n.pr45 {padding-right:45px}\n.pr40 {padding-right:40px}\n.pr35 {padding-right:35px}\n.pr30 {padding-right:30px}\n.pr25 {padding-right:25px}\n.pr20 {padding-right:20px}\n.pr15 {padding-right:15px}\n.pr10 {padding-right:10px}\n.pr5 {padding-right:5px}\n.pr4 {padding-right:5px}\n.pr3 {padding-right:5px}\n.pr2 {padding-right:5px}\n.pr1 {padding-right:1px}\n.pr0 {padding-right:0px}\n\n.pb60 {padding-bottom:60px}\n.pb55 {padding-bottom:55px}\n.pb50 {padding-bottom:50px}\n.pb45 {padding-bottom:45px}\n.pb40 {padding-bottom:40px}\n.pb35 {padding-bottom:35px}\n.pb30 {padding-bottom:30px}\n.pb25 {padding-bottom:25px}\n.pb20 {padding-bottom:20px}\n.pb15 {padding-bottom:15px}\n.pb10 {padding-bottom:10px}\n.pb5 {padding-bottom:5px}\n.pb4 {padding-bottom:4px}\n.pb3 {padding-bottom:3px}\n.pb2 {padding-bottom:2px}\n.pb1 {padding-bottom:1px}\n.pb0 {padding-bottom:0px}\n\n.pl60 {padding-left:60px}\n.pl55 {padding-left:55px}\n.pl50 {padding-left:50px}\n.pl45 {padding-left:45px}\n.pl40 {padding-left:40px}\n.pt37 {padding-top:36px}\n.pl35 {padding-left:35px}\n.pt30 {padding-top:30px}\n.pl25 {padding-left:25px}\n.pl20 {padding-left:20px}\n.pl15 {padding-left:15px}\n.pl10 {padding-left:10px}\n.pl5 {padding-left:5px}\n.pl4 {padding-left:4px}\n.pl3 {padding-left:3px}\n.pl2 {padding-left:2px}\n.pl1 {padding-left:1px}\n.pl0 {padding-left:0px}\n.p_all {padding:5px 15px}\n/* 内边距定义--end\n --------------------------------*/\n\n/* 浮动元素--begin\n --------------------------------*/\n .f_r {float:right}\n .f_l {float:left}\n .f_no {float:none}\n .f_l10 {float:left; width:10%}\n .f_l90 {float:left; width:90%}\n/* 浮动元素--end\n --------------------------------*/\n\n/* 清楚浮动--begin\n --------------------------------*/\n .c_r {clear:right}\n .c_l {clear:left}\n .c_b {clear:both}\n\n.icon-loading {\ndisplay: inline-block;\nvertical-align: middle;\nwidth: 16px;\nheight: 16px;\nbackground: url(../bootstrap3.1.1/img/btn_loading.gif) no-repeat;\n}\n\na:hover{text-decoration: none;}\n\n\n/*.arrow {\n\tcolor:#ff5c03;\n\tfont-size:13px;\n\tmargin-right:2px;\n\tdisplay:inline-block;\n\tposition:absolute;\n\ttop:16px;\n\tright:20px;\n\twidth:0;\n\theight:0;\n\tborder-style:solid;\n\tborder-width:4px;\n\tborder-color:#c2c0be #fff #fff\n}\na:hover .arrow {\n\ttop:16px;\n\tborder-color:#c2c0be #f4f5f9 #f4f5f9\n}\n.uparrow {\n\tborder-color:#fff #fff #c2c0be;\n\ttop:12px;\n}\na:hover .uparrow {\n\ttop:12px;\n\tborder-color:#f4f5f9 #f4f5f9 #c2c0be;\n}\n.none {\n\tdisplay:none;\n}*/\n\n/*提示信息图标*/\n.intro dt .ico_intro {\n\tbackground: url(\"../img/base/page_service_package_intro_z21b651.png\") 0 0 no-repeat;\n}\n.intro dt .ico {\n\twidth: 16px;\n\theight: 16px;\n\tdisplay: inline-block;\n\tmargin: 6px 8px 0 0;\n}\n\n.intro:first-child {\nborder-top-width: 0;\n}\n.intro {\npadding: 0 60px;\nborder: 0;\nmargin-top: 40px;\n}\n.intro dt h3 {\ndisplay: inline-block;\nheight: 26px;\nline-height: 26px;\nvertical-align: top;\nfont-size: 14px;\nfont-weight: normal;\n}\n.intro dd {\npadding-left: 24px;\nmargin: 0;\nfont-size: 14px;\nline-height: 1.8em;\ncolor: #8d8d8d;\n}\n\n/*返回顶部*/\n.return_btn{\n\toutline: none;\n\tposition: fixed;\n\tleft: 10px;\n\tbottom: 155px;\n    text-align: center;\n    line-height: 44px;\n    color: #fff;\n    display: block;\n    height: 44px;\n    z-index: 2;\n    width: 44px;\n    cursor: pointer;\n    /*text-indent: -99999px;*/\n    /*background: rgba(0,0,0,.4) url(../img/return_top.png) no-repeat center center;*/\n    background: #ccc;\n    /*background: rgba(0,0,0,.4);*/\n}\n\n.return_btn:hover{\n\tbackground-color: rgba(0,0,0,.7);\n}\n\n.return_top{\n\tbottom: 155px;\n}\n.return_bottom{\n\tbottom: 110px;\n}\n\n/*new_fun_icon*/\n.new_fun_icon{\n\tdisplay: inline-block;\n\twidth: 17px;\n\theight: 9px;\n\tbackground: url(../img/new.png) no-repeat;\n\tmargin-left: 6px;\n}\n.new_fun_dot{\n\tdisplay: inline-block;\n\twidth: 11px;\n\theight: 11px;\n\tbackground: url(../img/icon_dots.png) no-repeat;\n\tmargin-left: 6px;\n}\n/* base app css*/\n.app_name{width: 135px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;padding-left:10px;line-height: 27px;}\n.back:hover{color:#85C3FF!important }\n.col_main {padding-bottom:40px;}\n#pro-test a{color: #459ae9;text-decoration: none;padding:0;}\n#pro-test a:hover, #pro-test a:focus {color: #2a6496;}\n\n/*服务状态*/\n.service_table th{\n\tbackground: #f7f7f7;\n}\n.service_table td{\n\ttext-align: left;\n\tcolor: #666;\n\tvertical-align: middle;\n\tpadding: 12px 8px !important;\n\tline-height: 30px !important;\n}\n.service_icon{\n\twidth: 30px;\n\theight: 30px;\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tvertical-align: middle;\n}\n.service_icon img{\n\twidth: 30px;\n}\n.service_status{\n\twidth: 12px;\n\theight: 12px;\n\tdisplay: inline-block;\n\tmargin-right: 5px;\n\tvertical-align: middle;\n\tborder-radius: 50%;\n}\n.service_status.running{\n\tbackground: #44b549;\n}\n.service_status.stop{\n\tbackground: red;\n}\n.service_status.disabled{\n\tbackground: #ccc;\n}\n.btn.service_btn{\n\tpadding: 0 !important;\n\twidth: 50px;\n\tborder-radius: 20px;\n}\n.btn.service_btn.primary{\n\tbackground: #13b8d5;\n}\n.btn.service_btn.info{\n\tbackground: #fff;\n\tcolor: #555;\n\tborder: 1px solid #ddd;\n}\n.btn.service_btn.set{\n\tbackground: #44b549;\n}\n.btn.service_btn.unset{\n\tbackground: #df5a5a ;\n}\n\n/* IE和Firefox中div定位样式 */\n.top_left {max-width:400px; top:0; left:0; position:fixed; z-index:9999}\n.top_right {max-width:400px; top:0; right:0; position:fixed; z-index:9999}\n.bottom_left {max-width:400px; bottom:0; left:0; position:fixed; z-index:9999}\n.bottom_right {max-width:400px; bottom:0; right:0; position:fixed; z-index:9999}\n.top_center {max-width:400px; top:0; left:50%; position:fixed; margin-left:-150px; z-index:9999}\n.bottom_center {max-width:400px; bottom:0; left:50%; position:fixed; margin-left:-150px; z-index:9999}\n.label{border-radius: 0px;}\n\n/*图标 icon*/\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n\tfont-weight: bold;\n}\n\n[class^=\"icon-\"]:last-child,\n[class*=\" icon-\"]:last-child {\n  *margin-left: 0;\n}\n/*===================================================*\\\n * 异常页面的样式\n\\*===================================================*/\n.king-errorpage-middle {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  margin-top: -185px;\n  margin-left: -268px;\n}\n.king-errorpage-middle .king-exception-box img {\n  vertical-align: middle;\n  display: inherit;\n  margin: 0 auto;\n}\n.king-errorpage-middle .king-exception-box h1 {\n  font-weight: normal;\n  line-height: 1.1;\n  font-size: 28px;\n  margin: 26px 0;\n  color: #2b2c2d;\n}\n.king-errorpage-middle .king-exception-box p {\n  font-size: 16px;\n  color: #505152;\n}\n.king-errorpage-middle .king-exception-box .king-403-btn1, .king-errorpage-middle .king-exception-box .king-403-btn2 {\n  font-size: 14px;\n}\n.king-errorpage-middle .king-exception-box .king-403-btn2 {\n  background: #5CB85C;\n}\n.king-errorpage-middle .king-exception-box .king-login-back {\n  font-size: 12px;\n}\n.king-errorpage-middle .king-exception-box .king-login-back span {\n  color: #5d9cec;\n}\n.king-errorpage-middle .king-exception-box .king-login-back a {\n  padding: 3px 10px;\n  font-size: 14px;\n}\n\n.king-500-page, .king-401-page, .king-login-page, .king-403-page {\n  width: 536px;\n  text-align: center;\n  margin: auto;\n  font-family: STHeiti, \"微软雅黑\", Arial;\n}\n\n.king-login-fail {\n  width: 536px;\n  height: 300px;\n  text-align: center;\n  margin: auto;\n}\n.king-login-fail .login-tip {\n  margin-top: 20px;\n  font-size: 14px;\n}\n.king-login-fail .login-tip a {\n  font-size: 14px;\n  margin-left: 10px;\n}\n\n.king-500-page1 {\n  font-family: STHeiti, \"微软雅黑\", Arial;\n  color: #616161;\n}\n.king-500-page1 .error-number {\n  font-size: 100px;\n}\n.king-500-page1 .error-title {\n  font-size: 14px;\n  font-weight: bold;\n  margin: 15px 0;\n}\n.king-500-page1 .error-tip {\n  font-size: 12px;\n}\n.king-500-page1 .error-tip a {\n  color: #616161;\n  display: inline;\n  background: none;\n  padding: 0;\n  margin: 0;\n  font-size: 12px;\n}\n\n.JColResizer.table th, .JColResizer.table td {\n  overflow: hidden;\n  padding-left: 8px !important;\n  padding-right: 8px !important;\n}\n\n.JCLRgripDrag {\n  border: 0 !important;\n}\n.password_label{\n\twidth: 100px;\n}\n.password_input{\n\twidth: 200px;\n\theight: 30px;\n\tmargin-bottom: 10px;\n\tdisplay: inline-block;\n}\n/*IE 10 */\n.dev_user_table select[disabled]::-ms-expand{\n    display: none;\n}\n.dev_user_table select[disabled]{\n    /* Chrome */\n    -webkit-appearance: none;\n    /* Firefox */\n    -moz-appearance: none;\n    text-indent: 0.01px;\n    text-overflow: ' '; /* space */\n}\n\n/* 服务器信息页面样式 */\n.dev_center_wrap{padding: 30px}\n.dev_center_module{margin-bottom: 30px;}\n.dev_center_module .dev_module_title{padding-bottom: 15px; border-bottom: 1px solid #ddd; margin-bottom: 15px;}\n.dev_center_module .table th{background: #fafafa;}\n.dev_center_module .table td{text-align: left; font-size: 12px; color: #333; vertical-align: middle; padding: 10px;}\n.user_introduce_box{margin: 0;  vertical-align: middle; font-size: 13px; line-height: 28px; color: #666; background: none; white-space: pre-wrap; word-wrap: break-word; white-space : normal ;  border-radius: 0; border-top: 0; display: block;}\n.user_introduce_box p:before{content: ' '; width:3px; border-radius: 50%; height: 3px; margin-right: 7px; display: inline-block; background: #999; vertical-align: middle;}\n.dev_user_table .user_useage{display: none;}\n.dev_user_opera{ font-size: 16px; margin-right: 12px; vertical-align: middle; color: #44b549;}\n.dev_user_opera .fa{ font-size: 18px;}\n.user_del_btn{color: #fd7e7e;}\n.dev_user_table input{border-left-color: red; display: inline-block; color: #333 !important;  height: 32px; box-shadow: none; transition: none; padding:3px;}\n.dev_user_table input:focus{border-color: #5bc0de; box-shadow: none;}\n.dev_user_table button{border: none; margin-right:5px; border-radius: 0; padding: 5px 10px; display: none;}\n.dev_user_table input[disabled]{background: none; border: 1px solid #fff;  color: #333 !important;  box-shadow: none; cursor: default;}\n.dev_user_table select[disabled]{background: none; border: 1px solid #fff;  color: #333 !important;  box-shadow: none; cursor: default;}\n.dev_user_table .user_edit_status button{display: inline-block;}\n.dev_user_table .user_edit_status .dev_user_opera{display: none;}\n.dev_user_table .user_edit_status td{background: #fafafa;}\n.dev_center_module .user_add_btn,.user_btn,.dev_center_module .user_check_btn{ border-radius: 0; display: inline-block !important; font-size: 12px; padding: 0; height: 28px; line-height: 20px; padding: 4px 10px; margin: 0 0 0 15px; float: right; border: none;}\n.dev_center_module .glyphicon{margin-right: 3px;}\n.dev_user_table{margin-bottom: 0;}\n.dev_user_table .user_key_box{position: relative;}\n.dev_user_table .user_prefix{position: absolute; left: 3px; top: 8px;}\n.dev_user_table .user_key{padding-left: 48px;}\n.alert{background-color: #e1f4e2 !important; font-size: 14px; line-height: 20px;}\n.alert p {font-size: 12px;color: #666;margin-bottom: 0;}\n"
  },
  {
    "path": "paas-ce/paas/login/static/css/bk.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n\nhtml,body{margin:0;padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=\"button\"],input[type=\"reset\"],input[type=\"submit\"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=\"checkbox\"],input[type=\"radio\"]{box-sizing:border-box;padding:0}input[type=\"number\"]::-webkit-inner-spin-button,input[type=\"number\"]::-webkit-outer-spin-button{height:auto}::-ms-clear,::-ms-reveal{display:none}input[type=\"text\"]::-ms-clear{display:none}input[type=\"text\"]::-ms-reveal{display:none}input[type=\"search\"]{-webkit-appearance:textfield;box-sizing:content-box}input[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}@font-face{font-family:'PingFang Light';src:url(\"../fonts/pingfanglight/PingFang Light_0.eot\");src:local(\"☺\"),url(\"../fonts/pingfanglight/PingFang Light_0.woff\") format(\"woff\"),url(\"../fonts/pingfanglight/PingFang Light_0.ttf\") format(\"truetype\"),url(\"../fonts/pingfanglight/PingFang Light_0.svg\") format(\"svg\");font-weight:normal;font-style:normal}.f10{font-size:10px !important}.f11{font-size:11px !important}.f12{font-size:12px !important}.f13{font-size:13px !important}.f14{font-size:14px !important}.f15{font-size:15px !important}.f16{font-size:16px !important}.f17{font-size:17px !important}.f18{font-size:18px !important}.f19{font-size:19px !important}.f20{font-size:20px !important}.f21{font-size:21px !important}.f22{font-size:22px !important}.f23{font-size:23px !important}.f24{font-size:24px !important}.f25{font-size:25px !important}.f26{font-size:26px !important}.f27{font-size:27px !important}.f28{font-size:28px !important}.f29{font-size:29px !important}.f30{font-size:30px !important}.f31{font-size:31px !important}.f32{font-size:32px !important}.f33{font-size:33px !important}.f34{font-size:34px !important}.f35{font-size:35px !important}.f36{font-size:36px !important}.f37{font-size:37px !important}.f38{font-size:38px !important}.f39{font-size:39px !important}.f40{font-size:40px !important}.m0{margin:0px !important}.m5{margin:5px !important}.m10{margin:10px !important}.m15{margin:15px !important}.m20{margin:20px !important}.m25{margin:25px !important}.m30{margin:30px !important}.m35{margin:35px !important}.m40{margin:40px !important}.m45{margin:45px !important}.m50{margin:50px !important}.mt0{margin-top:0px !important}.mt5{margin-top:5px !important}.mt10{margin-top:10px !important}.mt15{margin-top:15px !important}.mt20{margin-top:20px !important}.mt25{margin-top:25px !important}.mt30{margin-top:30px !important}.mt35{margin-top:35px !important}.mt40{margin-top:40px !important}.mt45{margin-top:45px !important}.mt50{margin-top:50px !important}.mb0{margin-bottom:0px !important}.mb5{margin-bottom:5px !important}.mb10{margin-bottom:10px !important}.mb15{margin-bottom:15px !important}.mb20{margin-bottom:20px !important}.mb25{margin-bottom:25px !important}.mb30{margin-bottom:30px !important}.mb35{margin-bottom:35px !important}.mb40{margin-bottom:40px !important}.mb45{margin-bottom:45px !important}.mb50{margin-bottom:50px !important}.ml0{margin-left:0px !important}.ml5{margin-left:5px !important}.ml10{margin-left:10px !important}.ml15{margin-left:15px !important}.ml20{margin-left:20px !important}.ml25{margin-left:25px !important}.ml30{margin-left:30px !important}.ml35{margin-left:35px !important}.ml40{margin-left:40px !important}.ml45{margin-left:45px !important}.ml50{margin-left:50px !important}.mr0{margin-right:0px !important}.mr5{margin-right:5px !important}.mr10{margin-right:10px !important}.mr15{margin-right:15px !important}.mr20{margin-right:20px !important}.mr25{margin-right:25px !important}.mr30{margin-right:30px !important}.mr35{margin-right:35px !important}.mr40{margin-right:40px !important}.mr45{margin-right:45px !important}.mr50{margin-right:50px !important}.p0{padding:0px !important}.p5{padding:5px !important}.p10{padding:10px !important}.p15{padding:15px !important}.p20{padding:20px !important}.p25{padding:25px !important}.p30{padding:30px !important}.p35{padding:35px !important}.p40{padding:40px !important}.p45{padding:45px !important}.p50{padding:50px !important}.pt0{padding-top:0px !important}.pt5{padding-top:5px !important}.pt10{padding-top:10px !important}.pt15{padding-top:15px !important}.pt20{padding-top:20px !important}.pt25{padding-top:25px !important}.pt30{padding-top:30px !important}.pt35{padding-top:35px !important}.pt40{padding-top:40px !important}.pt45{padding-top:45px !important}.pt50{padding-top:50px !important}.pb0{padding-bottom:0px !important}.pb5{padding-bottom:5px !important}.pb10{padding-bottom:10px !important}.pb15{padding-bottom:15px !important}.pb20{padding-bottom:20px !important}.pb25{padding-bottom:25px !important}.pb30{padding-bottom:30px !important}.pb35{padding-bottom:35px !important}.pb40{padding-bottom:40px !important}.pb45{padding-bottom:45px !important}.pb50{padding-bottom:50px !important}.pl0{padding-left:0px !important}.pl5{padding-left:5px !important}.pl10{padding-left:10px !important}.pl15{padding-left:15px !important}.pl20{padding-left:20px !important}.pl25{padding-left:25px !important}.pl30{padding-left:30px !important}.pl35{padding-left:35px !important}.pl40{padding-left:40px !important}.pl45{padding-left:45px !important}.pl50{padding-left:50px !important}.pr0{padding-right:0px !important}.pr5{padding-right:5px !important}.pr10{padding-right:10px !important}.pr15{padding-right:15px !important}.pr20{padding-right:20px !important}.pr25{padding-right:25px !important}.pr30{padding-right:30px !important}.pr35{padding-right:35px !important}.pr40{padding-right:40px !important}.pr45{padding-right:45px !important}.pr50{padding-right:50px !important}.bk-bg-default{background-color:#fafafa}.bk-bg-info{background-color:#88c3ff}.bk-bg-primary{background-color:#3c96ff}.bk-bg-warning{background-color:#ffb400}.bk-bg-danger{background-color:#ff5656}.bk-bg-success{background-color:#30d878}.bk-text-default{color:#888}.bk-text-info{color:#88c3ff}.bk-text-primary{color:#3c96ff}.bk-text-warning{color:#ffb400}.bk-text-danger{color:#ff5656}.bk-text-success{color:#30d878}.bk-text-main{color:#737987}.bk-text-minor{color:#c3cdd7}.bk-text-yahei{font-family:\"Microsoft Yahei\"}.bk-text-pingfang{font-family:'PingFang Light'}.fb{font-weight:bold !important}.fn{font-weight:normal !important}.lh150{line-height:150% !important}.lh180{line-height:180% !important}.lh200{line-height:200% !important}.unl{text-decoration:underline !important}.no_unl{text-decoration:none !important}.tl{text-align:left !important}.tc{text-align:center !important}.tr{text-align:right !important}.bc{margin-left:auto !important;margin-right:auto !important}.fl{float:left !important}.fr{float:right !important}.cb{clear:both !important}.cl{clear:left !important}.cr{clear:right !important}.clearfix:after{content:'.';display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-block}.clearfix{display:block;zoom:1}.vm{vertical-align:middle !important}.pr{position:relative !important}.pa{position:absolute !important}.abs-right{position:absolute !important}.zoom{zoom:1}.hidden{visibility:hidden !important}.none{display:none !important}.h50{height:50px !important}.h80{height:80px !important}.h100{height:100px !important}.h200{height:200px !important}.h{height:100% !important}.bk-has-submenu{position:relative}.bk-has-submenu:hover .bk-submenu{display:block}.bk-has-submenu .bk-submenu{display:none;position:absolute;width:100%;left:0;right:0;padding:0}.bk-has-submenu .bk-submenu>li{display:block}.transition-effect{transition:all linear .2s}.fade-enter-active,.fade-leave-active{transition:opacity linear .2s}.fade-enter,.fade-leave-active{opacity:0}.fade-show-enter-active,.fade-show-leave-active{transition:opacity linear .2s, margin linear .2s}.fade-show-enter,.fade-show-leave-active{opacity:0;margin-top:-20px}.displacement-fade-show-enter-active,.displacement-fade-show-leave-active{transition:opacity linear .2s, margin linear .2s}.displacement-fade-show-enter,.displacement-fade-show-leave-active{opacity:0;margin-top:-50px}.fade-center-enter-active,.fade-center-leave-active{transition:opacity linear .2s, transform linear .2s;transform-origin:center center}.fade-center-enter,.fade-center-leave-active{opacity:0;transform:translate(50%, -50%) scale(0, 0) !important}.slide-leave .bk-sideslider-wrapper,.slide-enter-active .bk-sideslider-wrapper{transition:all linear .2s;right:0}.slide-enter .bk-sideslider-wrapper.left,.slide-leave-active .bk-sideslider-wrapper.left{left:-100%}.slide-enter .bk-sideslider-wrapper.right,.slide-leave-active .bk-sideslider-wrapper.right{right:-100%}.slide-fade-enter-active,.fade-leave-active{transition:transform linear .2s, opacity linear .2s}.slide-fade-enter{opacity:0;transform:translateX(20%)}.slide-fade-leave-active{opacity:0;transform:translateX(-20%)}.toggle-slide-enter-active,.toggle-slide-leave-active{transition:transform 0.3s cubic-bezier(0.23, 1, 0.23, 1),opacity 0.5s cubic-bezier(0.23, 1, 0.23, 1);transform-origin:center top}.toggle-slide-enter,.toggle-slide-leave-active{transform:translateZ(0) scaleY(0);opacity:0}.bk-button{height:36px;line-height:34px;display:inline-block;white-space:nowrap;outline:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;padding:0 19px;text-align:center;vertical-align:middle;font-size:14px;background:#fff;border:1px solid #c3cdd7;border-radius:2px;box-sizing:border-box;color:#737987;text-decoration:none;transition:background-color ease 0.3s;-webkit-transition:background-color ease 0.3s}.bk-button:hover,.bk-button.hover{background-color:#fafafa;color:#737987;text-decoration:none}.bk-button:active,.bk-button.active{background-color:#eee;color:#737987;text-decoration:none}.bk-button.bk-iconed{min-width:36px;width:36px;padding:0}.bk-button.is-disabled,.bk-button[disabled]{background-color:#fafafa !important;border-color:#e6e6e6 !important;color:#cccccc !important;cursor:default !important}.bk-button.is-loading{color:#fff;background-color:#fff !important;position:relative;cursor:default}.bk-button.is-loading span{opacity:0}.bk-button.is-loading .bk-icon{opacity:0}.bk-button.is-loading .bk-icon{display:none}.bk-button.is-loading::before{content:\"\";display:block;width:28px;height:4px;position:absolute;left:50%;top:50%;background-image:url(../images/loading-point1.png);background-position:0 0;background-repeat:no-repeat;transform:translate(-50%, -50%);animation:bk-button-loading1 1s infinite linear;-ms-animation:bk-button-loading1 1s infinite linear;-moz-animation:bk-button-loading1 1s infinite linear;-webkit-animation:bk-button-loading1 1s infinite linear}.bk-button.is-selected{background-color:#3c96ff !important;border-color:#3c96ff !important;color:#fff !important;position:relative;z-index:1;cursor:default}.bk-button.is-outline{color:#737987;border-color:#c3cdd7;background-color:#fff}.bk-button.is-outline:hover,.bk-button.is-outline.hover{background-color:#fff;border-color:#3c96ff;color:#3c96ff}.bk-button.is-outline:active,.bk-button.is-outline.active{background-color:#fff;border-color:#0978e2;color:#0978e2}.bk-button.is-icon{min-width:36px;padding:0 9px}.bk-button.is-icon.bk-button-mini{min-width:24px;padding:0 3px}.bk-button.is-icon.bk-button-small{min-width:32px;padding:0 7px}.bk-button.is-icon.bk-button-large{min-width:42px;padding:0 7px}.bk-button.is-icon.bk-button-larger{min-width:54px;padding:0 7px}.bk-button.bk-button-mini{height:24px;line-height:22px;padding:0 11px;font-size:12px}.bk-button.bk-button-mini.bk-iconed{min-width:24px;width:24px;padding:0}.bk-button.bk-button-small{height:32px;line-height:30px;padding:0 14px}.bk-button.bk-button-small.bk-iconed{min-width:32px;width:32px;padding:0}.bk-button.bk-button-large{height:42px;line-height:40px;padding:0 19px}.bk-button.bk-button-large.bk-iconed{min-width:42px;width:42px;padding:0}.bk-button.bk-button-larger{height:54px;line-height:52px;padding:0 20px;min-width:150px;font-size:18px}.bk-button.bk-button-larger.bk-iconed{min-width:54px;width:54px;padding:0}.bk-button.bk-default.is-loading{position:relative}.bk-button.bk-default.is-loading::before{content:\"\";display:block;width:28px;height:4px;position:absolute;left:50%;top:50%;background-image:url(../images/loading-point7.png);background-position:0 0;background-repeat:no-repeat;transform:translate(-50%, -50%);animation:bk-button-loading2 1s infinite linear;-ms-animation:bk-button-loading2 1s infinite linear;-moz-animation:bk-button-loading2 1s infinite linear;-webkit-animation:bk-button-loading2 1s infinite linear}.bk-button.bk-info{background:#88c3ff;border-color:#88c3ff;color:#fff}.bk-button.bk-info:hover,.bk-button.bk-info.hover{background-color:#7ab9fa;border-color:#7ab9fa;opacity:1}.bk-button.bk-info:active,.bk-button.bk-info.active{background-color:#6eb5fe;border-color:#6eb5fe}.bk-button.bk-info.is-loading{color:#88c3ff;background-color:#88c3ff !important;border-color:#88c3ff !important}.bk-button.bk-info.is-selected{background-color:#6eb5fe !important;border-color:#6eb5fe !important;color:#fff !important;position:relative;z-index:1;cursor:default}.bk-button.bk-info.is-outline{color:#88c3ff;border-color:#88c3ff;background-color:#fff}.bk-button.bk-info.is-outline:hover,.bk-button.bk-info.is-outline.hover{background-color:#7ab9fa;border-color:#7ab9fa;color:#fff}.bk-button.bk-info.is-outline.active,.bk-button.bk-info.is-outline:active{background-color:#6eb5fe;border-color:#6eb5fe;color:#fff}.bk-button.bk-primary{background:#3c96ff;border-color:#3c96ff;color:#fff}.bk-button.bk-primary:hover,.bk-button.bk-primary.hover{background-color:#0082ff;border-color:#0082ff;opacity:1}.bk-button.bk-primary:active,.bk-button.bk-primary.active{background-color:#0978e2;border-color:#0978e2}.bk-button.bk-primary.is-loading{color:#3c96ff;background-color:#3c96ff !important;border-color:#3c96ff !important}.bk-button.bk-primary.is-selected{background-color:#0978e2 !important;border-color:#0978e2 !important;color:#fff !important;position:relative;z-index:1;cursor:default}.bk-button.bk-primary.is-outline{color:#3c96ff;border-color:#3c96ff;background-color:#fff}.bk-button.bk-primary.is-outline:hover,.bk-button.bk-primary.is-outline.hover{background-color:#0082ff;border-color:#0082ff;color:#fff}.bk-button.bk-primary.is-outline.active,.bk-button.bk-primary.is-outline:active{background-color:#0978e2;border-color:#0978e2;color:#fff}.bk-button.bk-success{background:#30d878;border-color:#30d878;color:#fff}.bk-button.bk-success:hover,.bk-button.bk-success.hover{background-color:#00c873;border-color:#00c873;opacity:1}.bk-button.bk-success:active,.bk-button.bk-success.active{background-color:#00ae64;border-color:#00ae64}.bk-button.bk-success.is-loading{color:#30d878;background-color:#30d878 !important;border-color:#30d878 !important}.bk-button.bk-success.is-selected{background-color:#00ae64 !important;border-color:#00ae64 !important;color:#fff !important;position:relative;z-index:1;cursor:default}.bk-button.bk-success.is-outline{color:#30d878;border-color:#30d878;background-color:#fff}.bk-button.bk-success.is-outline:hover,.bk-button.bk-success.is-outline.hover{background-color:#00c873;border-color:#00c873;color:#fff}.bk-button.bk-success.is-outline.active,.bk-button.bk-success.is-outline:active{background-color:#00ae64;border-color:#00ae64;color:#fff}.bk-button.bk-warning{background:#ffb400;border-color:#ffb400;color:#fff}.bk-button.bk-warning:hover,.bk-button.bk-warning.hover{background-color:#ff9600;border-color:#ff9600;opacity:1}.bk-button.bk-warning:active,.bk-button.bk-warning.active{background-color:#e38601;border-color:#e38601}.bk-button.bk-warning.is-loading{color:#ffb400;background-color:#ffb400 !important;border-color:#ffb400 !important}.bk-button.bk-warning.is-selected{background-color:#e38601 !important;border-color:#e38601 !important;color:#fff !important;position:relative;z-index:1;cursor:default}.bk-button.bk-warning.is-outline{color:#ffb400;border-color:#ffb400;background-color:#fff}.bk-button.bk-warning.is-outline:hover,.bk-button.bk-warning.is-outline.hover{background-color:#ff9600;border-color:#ff9600;color:#fff}.bk-button.bk-warning.is-outline.active,.bk-button.bk-warning.is-outline:active{background-color:#e38601;border-color:#e38601;color:#fff}.bk-button.bk-danger{background:#ff5656;border-color:#ff5656;color:#fff}.bk-button.bk-danger:hover,.bk-button.bk-danger.hover{background-color:#f72239;border-color:#f72239;opacity:1}.bk-button.bk-danger:active,.bk-button.bk-danger.active{background-color:#cb2537;border-color:#cb2537}.bk-button.bk-danger.is-loading{color:#ff5656;background-color:#ff5656 !important;border-color:#ff5656 !important}.bk-button.bk-danger.is-selected{background-color:#cb2537 !important;border-color:#cb2537 !important;color:#fff !important;position:relative;z-index:1;cursor:default}.bk-button.bk-danger.is-outline{color:#ff5656;border-color:#ff5656;background-color:#fff}.bk-button.bk-danger.is-outline:hover,.bk-button.bk-danger.is-outline.hover{background-color:#f72239;border-color:#f72239;color:#fff}.bk-button.bk-danger.is-outline.active,.bk-button.bk-danger.is-outline:active{background-color:#cb2537;border-color:#cb2537;color:#fff}.bk-button .bk-icon{width:16px;height:16px;line-height:16px;min-width:16px;display:inline-block}.bk-button .bk-icon+span{margin-left:7px}.bk-button span+.bk-icon{margin-left:7px}.bk-button-group{font-size:0;margin-left:1px;display:inline-block}.bk-button-group .bk-button{margin:0 0 0 -1px;border-radius:0}.bk-button-group .bk-button.hover,.bk-button-group .bk-button:hover{position:relative;z-index:1}.bk-button-group .bk-button:first-child{border-radius:2px 0 0 2px}.bk-button-group .bk-button:last-child{border-radius:0 2px 2px 0}.bk-text-button{border:none;background:none;color:#3c96ff;cursor:pointer;text-decoration:none}.bk-text-button .bk-icon{width:16px;min-width:16px;margin-right:5px;display:inline-block}.bk-text-button+.bk-text-button{margin-left:15px}.bk-text-button:hover{color:#0082ff;text-decoration:none}.bk-text-button.is-disabled{color:#e6e6e6 !important;cursor:not-allowed}.bk-text-button.bk-default{color:#737987}.bk-text-button.bk-default:hover{color:#5c606b}.bk-text-button.bk-info{color:#88c3ff}.bk-text-button.bk-info:hover{color:#7ab9fa}.bk-text-button.bk-primary{color:#3c96ff}.bk-text-button.bk-primary:hover{color:#0082ff}.bk-text-button.bk-success{color:#30d878}.bk-text-button.bk-success:hover{color:#00c873}.bk-text-button.bk-warning{color:#ffb400}.bk-text-button.bk-warning:hover{color:#ff9600}.bk-text-button.bk-danger{color:#ff5656}.bk-text-button.bk-danger:hover{color:#f72239}.bk-text-button .bk-icon{width:16px;min-width:16px}.bk-icon-button{min-width:36px;height:36px;line-height:34px;display:inline-block;white-space:nowrap;outline:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;padding:0;text-align:center;vertical-align:middle;font-size:14px;background:#fff;border:1px solid #c3cdd7;border-radius:2px;color:#737987;overflow:hidden;text-decoration:none;box-sizing:border-box}.bk-icon-button:hover,.bk-icon-button.hover{background-color:#fafafa;color:#737987;text-decoration:none;opacity:1}.bk-icon-button:active,.bk-icon-button.active{background-color:#eee;color:#737987;text-decoration:none;opacity:1}.bk-icon-button.is-disabled,.bk-icon-button[disabled]{background-color:#ffffff !important;border-color:#e5e5e5 !important;color:#e6e6e6 !important;cursor:default}.bk-icon-button.is-disabled .bk-text,.bk-icon-button[disabled] .bk-text{background-color:#ffffff !important;border-color:#e5e5e5 !important;color:#e6e6e6 !important;cursor:default}.bk-icon-button.is-loading{position:relative}.bk-icon-button.is-loading .bk-icon{font-family:\"yahei\" !important;position:relative}.bk-icon-button.is-loading .bk-icon::before{content:\"\";display:block;width:12px;height:12px;position:absolute;left:50%;top:50%;background:url(../images/loading_circle2.png) no-repeat 0 0;margin:-6px 0 0 -6px;animation:bk-icon-button-loading 0.8s infinite linear;-ms-animation:bk-icon-button-loading 0.8s infinite linear;-moz-animation:bk-icon-button-loading 0.8s infinite linear;-webkit-animation:bk-icon-button-loading 0.8s infinite linear}.bk-icon-button.is-loading:hover .bk-icon::before{background-image:url(../images/loading_circle1.png)}.bk-icon-button.bk-default.is-loading:hover .bk-icon::before{background-image:url(../images/loading_circle2.png)}.bk-icon-button.bk-info{background:#fafafa;color:#88c3ff}.bk-icon-button.bk-info:hover,.bk-icon-button.bk-info.hover{background-color:#7ab9fa;border-color:#7ab9fa;color:#fff;opacity:1}.bk-icon-button.bk-info:hover .bk-text,.bk-icon-button.bk-info.hover .bk-text{color:#fff;background-color:#9ccbfb;border-color:#9ccbfb}.bk-icon-button.bk-info:active,.bk-icon-button.bk-info.active{background-color:#6eb5fe;border-color:#6eb5fe;color:#fff;opacity:1}.bk-icon-button.bk-info:active .bk-text,.bk-icon-button.bk-info.active .bk-text{color:#fff;background-color:#a1cffe;border-color:#a1cffe}.bk-icon-button.bk-primary{background:#fafafa;color:#3c96ff}.bk-icon-button.bk-primary:hover,.bk-icon-button.bk-primary.hover{background-color:#0082ff;border-color:#0082ff;color:#fff;opacity:1}.bk-icon-button.bk-primary:hover .bk-text,.bk-icon-button.bk-primary.hover .bk-text{color:#fff;background-color:#2494ff;border-color:#2494ff}.bk-icon-button.bk-primary:active,.bk-icon-button.bk-primary.active{background-color:#0978e2;border-color:#0978e2;color:#fff;opacity:1}.bk-icon-button.bk-primary:active .bk-text,.bk-icon-button.bk-primary.active .bk-text{color:#fff;background-color:#2891f6;border-color:#2891f6}.bk-icon-button.bk-success{background:#fafafa;color:#30d878}.bk-icon-button.bk-success:hover,.bk-icon-button.bk-success.hover{background-color:#00c873;border-color:#00c873;color:#fff;opacity:1}.bk-icon-button.bk-success:hover .bk-text,.bk-icon-button.bk-success.hover .bk-text{color:#fff;background-color:#00ec88;border-color:#00ec88}.bk-icon-button.bk-success:active,.bk-icon-button.bk-success.active{background-color:#00ae64;border-color:#00ae64;color:#fff;opacity:1}.bk-icon-button.bk-success:active .bk-text,.bk-icon-button.bk-success.active .bk-text{color:#fff;background-color:#00e181;border-color:#00e181}.bk-icon-button.bk-warning{background:#fafafa;color:#ffb400}.bk-icon-button.bk-warning:hover,.bk-icon-button.bk-warning.hover{background-color:#ff9600;border-color:#ff9600;color:#fff;opacity:1}.bk-icon-button.bk-warning:hover .bk-text,.bk-icon-button.bk-warning.hover .bk-text{color:#fff;background-color:#ffa524;border-color:#ffa524}.bk-icon-button.bk-warning:active,.bk-icon-button.bk-warning.active{background-color:#e38601;border-color:#e38601;color:#fff;opacity:1}.bk-icon-button.bk-warning:active .bk-text,.bk-icon-button.bk-warning.active .bk-text{color:#fff;background-color:#fea019;border-color:#fea019}.bk-icon-button.bk-danger{background:#fafafa;color:#ff5656}.bk-icon-button.bk-danger:hover,.bk-icon-button.bk-danger.hover{background-color:#f72239;border-color:#f72239;color:#fff;opacity:1}.bk-icon-button.bk-danger:hover .bk-text,.bk-icon-button.bk-danger.hover .bk-text{color:#fff;background-color:#f84458;border-color:#f84458}.bk-icon-button.bk-danger:active,.bk-icon-button.bk-danger.active{background-color:#cb2537;border-color:#cb2537;color:#fff;opacity:1}.bk-icon-button.bk-danger:active .bk-text,.bk-icon-button.bk-danger.active .bk-text{color:#fff;background-color:#dd4656;border-color:#dd4656}.bk-icon-button .bk-icon{display:inline-block;width:34px;height:34px;line-height:34px;text-align:center;vertical-align:middle;float:left;margin-top:0}.bk-icon-button .bk-text{display:inline-block;height:36px;line-height:36px;padding:0 10px;font-style:normal;border-left:1px solid #c3cdd7;min-width:70px;vertical-align:middle;float:left;color:#666}.bk-icon-button.bk-button-mini{min-width:24px;height:24px;line-height:22px;font-size:12px}.bk-icon-button.bk-button-mini .bk-icon{width:24px;height:24px;line-height:22px}.bk-icon-button.bk-button-mini .bk-text{height:24px;line-height:22px;padding:0 5px;min-width:30px}.bk-icon-button.bk-button-small{min-width:32px;height:32px;line-height:30px}.bk-icon-button.bk-button-small .bk-icon{width:32px;height:32px;line-height:30px}.bk-icon-button.bk-button-small .bk-text{height:32px;line-height:30px;min-width:60px}.bk-icon-button.bk-button-large{min-width:42px;height:42px;line-height:40px}.bk-icon-button.bk-button-large .bk-icon{width:42px;height:42px;line-height:40px}.bk-icon-button.bk-button-large .bk-text{height:42px;line-height:40px;min-width:80px}.bk-radio-group{display:inline-block;margin-left:1px}.bk-radio-group .bk-radio-button{float:left;margin-left:-1px;min-width:100px;height:36px;line-height:34px;white-space:nowrap;outline:none;cursor:pointer;padding:0 15px;text-align:center;vertical-align:middle;font-size:14px;background:#fff;border:1px solid #d6d6d6;box-sizing:border-box;color:#737987;position:relative}.bk-radio-group .bk-radio-button:nth-of-type(1){border-top-left-radius:2px;border-bottom-left-radius:2px}.bk-radio-group .bk-radio-button:nth-last-of-type(1){border-top-right-radius:2px;border-bottom-right-radius:2px}.bk-radio-group .bk-radio-button:hover{background-color:#fafafa;color:#737987;text-decoration:none;opacity:1}.bk-radio-group .bk-radio-button.is-checked{color:#fff;background:#3c96ff;border-color:#3c96ff;z-index:10}.bk-radio-group .bk-radio-button.is-disabled,.bk-radio-group .bk-radio-button[disabled]{background-color:#ffffff !important;border-color:#e5e5e5 !important;color:#e6e6e6 !important;cursor:not-allowed}.bk-radio-group.bk-radio-mini .bk-radio-button{height:24px;line-height:22px;padding:0 7px;min-width:50px;font-size:12px}.bk-radio-group.bk-radio-small .bk-radio-button{height:32px;line-height:30px;padding:0 10px;min-width:80px}.bk-radio-group.bk-radio-large .bk-radio-button{height:42px;line-height:40px;padding:0 16px;min-width:120px}@keyframes bk-button-loading1{0%{background-image:url(../images/loading-point1.png)}50%{background-image:url(../images/loading-point2.png)}100%{background-image:url(../images/loading-point3.png)}}@-ms-keyframes bk-button-loading1{0%{background-image:url(../images/loading-point1.png)}50%{background-image:url(../images/loading-point2.png)}100%{background-image:url(../images/loading-point3.png)}}@-moz-keyframes bk-button-loading1{0%{background-image:url(../images/loading-point1.png)}50%{background-image:url(../images/loading-point2.png)}100%{background-image:url(../images/loading-point3.png)}}@-webkit-keyframes bk-button-loading1{0%{background-image:url(../images/loading-point1.png)}50%{background-image:url(../images/loading-point2.png)}100%{background-image:url(../images/loading-point3.png)}}@keyframes bk-button-loading2{0%{background-image:url(../images/loading-point7.png)}50%{background-image:url(../images/loading-point8.png)}100%{background-image:url(../images/loading-point9.png)}}@-webkit-keyframes bk-button-loading2{0%{background-image:url(../images/loading-point7.png)}50%{background-image:url(../images/loading-point8.png)}100%{background-image:url(../images/loading-point9.png)}}@keyframes bk-icon-button-loading{from{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes bk-icon-button-loading{from{transform:rotate(0)}to{transform:rotate(360deg)}}.bk-panel .bk-panel-header:before,.bk-panel .bk-panel-footer:before,.bk-panel.bk-panel-title-btns .bk-panel-header:before,.bk-horz-nav:before,.bk-horz-nav11:before,.bk-tab2 .bk-tab2-head:before,.bk-tab2 .bk-tab2-head .bk-tab2-nav:before,.bk-panel .bk-panel-header:after,.bk-panel .bk-panel-footer:after,.bk-panel.bk-panel-title-btns .bk-panel-header:after,.bk-horz-nav:after,.bk-horz-nav11:after,.bk-tab2 .bk-tab2-head:after,.bk-tab2 .bk-tab2-head .bk-tab2-nav:after{content:'';display:table;line-height:0}.bk-panel .bk-panel-header:after,.bk-panel .bk-panel-footer:after,.bk-panel.bk-panel-title-btns .bk-panel-header:after,.bk-horz-nav:after,.bk-horz-nav11:after,.bk-tab2 .bk-tab2-head:after,.bk-tab2 .bk-tab2-head .bk-tab2-nav:after{clear:both}.bk-panel{border:1px solid #e6e6e6;background-color:#fff;border-radius:2px;overflow:hidden}.bk-panel .bk-panel-header{padding:15px;border-bottom:1px solid #e6e6e6}.bk-panel .bk-panel-action{height:32px;line-height:32px;display:inline-block}.bk-panel .bk-panel-info{height:32px;line-height:32px;display:inline-block}.bk-panel .bk-panel-info .panel-title{font-size:20px;color:#737987;margin-right:10px;display:inline-block}.bk-panel .bk-panel-info .panel-subtitle{font-size:12px;color:#cccccc;display:inline-block}.bk-panel .bk-panel-footer{box-shadow:0 -1px 0 #e6e6e6;background-color:#fafafa}.bk-panel.bk-panel-title-btns .bk-panel-header .panel-title{float:left;height:34px;line-height:34px}.bk-panel.bk-panel-title-btns .bk-panel-header .panel-btns{float:right}.bk-panel .bk-table{border:none !important}.bk-panel .bk-table.has-thead-bordered th:first-child,.bk-panel .bk-table.table-bordered th:first-child{border-left:none}.bk-panel .bk-table.has-thead-bordered th:last-child,.bk-panel .bk-table.table-bordered th:last-child{border-right:none}.bk-panel .bk-table.has-thead-bordered tr td:first-child,.bk-panel .bk-table.table-bordered tr td:first-child{border-left:none}.bk-panel .bk-table.has-thead-bordered tr td:last-child,.bk-panel .bk-table.table-bordered tr td:last-child{border-right:none}.bk-collapse-panel{box-shadow:none;margin-bottom:0;border-radius:2px;overflow:hidden;border:1px solid #e6e6e6}.bk-collapse-panel .panel-header{height:38px;line-height:38px;background:#fafafa;padding-left:15px;text-align:left}.bk-collapse-panel .panel-header .panel-title{padding:0;margin:0;font-weight:bold;font-size:14px;line-height:38px;display:inline-block;vertical-align:middle;color:#57a3f1}.bk-collapse-panel [data-toggle=\"collapse\"]{cursor:pointer}.bk-collapse-panel .panel-body{border-top:1px solid #e6e6e6}.bk-collapse-panel .panel-icon{width:16px;height:16px;margin-right:5px;display:inline-block;vertical-align:middle}.bk-collapse-panel .panel-icon.panel-spread{background:url(../images/shrink.png) no-repeat}.bk-collapse-panel .panel-icon.panel-spread.collapsed{background:url(../images/spread.png) no-repeat}.bk-collapse-panel .bk-table{margin:0;border:none !important}.bk-collapse-panel .bk-table thead th{border-top:none}.bk-collapse-panel .bk-table tbody{border-bottom:none}.bk-collapse-panel .bk-table tbody tr:first-child td{border-top:none}.bk-collapse-panel .bk-table tbody tr:last-child td{border-bottom:none}.bk-table .bk-collapse-panel{border:none}.bk-mask{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,0.3);z-index:9998}.bk-side-panel{top:0;bottom:0;right:-100%;left:auto;width:500px;max-height:none;position:absolute;background-color:#fff;overflow-y:auto;-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0);-webkit-transition:all linear .5s;transition:all linear .5s}.bk-side-panel.panel-hide{right:-100%}.bk-side-panel.panel-show{right:0}.bk-side-panel .side-panel-header{display:table;width:100%;height:60px;border-bottom:1px solid #e6e6e6;line-height:1}.bk-side-panel .side-panel-header i{width:30px;background-color:#ff6666;color:#fff;text-align:center;cursor:pointer;display:table-cell;vertical-align:middle}.bk-side-panel .side-panel-header span{padding-left:20px;font-size:16px;color:#666;font-weight:bold;display:table-cell;vertical-align:middle}.bk-side-panel .side-panel-body{padding-top:40px}.bk-side-panel .side-panel-body .sub-title{margin-bottom:30px;border-left:4px solid #57a3f1;padding-left:10px;font-size:16px;color:#666}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.bk-table{width:100%;max-width:100%;border-top:1px solid #e6e6e6;border-bottom:1px solid #e6e6e6;text-align:left}.bk-table>thead>tr>th,.bk-table>thead>tr>td,.bk-table>tbody>tr>th,.bk-table>tbody>tr>td{line-height:20px;padding:10px 20px;vertical-align:top;border-top:1px solid #e6e6e6}.bk-table>tfoot{border-top:1px solid #ddd}.bk-table>thead>tr>th{background-color:#fafafa;vertical-align:bottom;border-bottom:1px solid #e6e6e6;color:#666;font-size:14px}.bk-table>tbody>tr>td{color:#888;font-size:12px}.bk-table>caption+thead>tr:first-child>th,.bk-table>caption+thead>tr:first-child>td,.bk-table>colgroup+thead>tr:first-child>th,.bk-table>colgroup+thead>tr:first-child>td,.bk-table>thead:first-child>tr:first-child>th,.bk-table>thead:first-child>tr:first-child>td{border-top:0}.bk-table>tbody+tbody{border-top:2px solid #e6e6e6}.bk-table.has-thead-bordered{border:1px solid #e6e6e6}.bk-table.has-thead-bordered>thead>tr>th,.bk-table.has-thead-bordered>tbody>tr>th,.bk-table.has-thead-bordered>tfoot>tr>th{border:1px solid #e6e6e6;border-bottom:none}.bk-table.has-table-bordered{border:1px solid #e6e6e6}.bk-table.has-table-bordered>thead>tr>td,.bk-table.has-table-bordered>tbody>tr>td{border:1px solid #e6e6e6}.bk-table.has-table-bordered>thead>tr>th,.bk-table.has-table-bordered>tbody>tr>th,.bk-table.has-table-bordered>tfoot>tr>th{border:1px solid #e6e6e6;border-bottom:none}.bk-table.has-table-bordered>thead>tr>th,.bk-table.has-table-bordered>thead>tr>td{border-bottom-width:2px}.bk-table.has-table-striped>tbody>tr:nth-child(2n+2){background-color:#fafafa}.bk-table.has-table-hover>tbody>tr:hover{background-color:#f5f5f5}.bk-table-sortable{position:relative}.bk-sort-box{position:absolute;right:5px;top:15px;margin-left:5px;cursor:pointer;display:inline-block;width:20px;height:10px;font-size:10px}.bk-sort-box .ascing{position:absolute;top:-7px}.bk-sort-box .descing{position:absolute;bottom:-7px}.bk-sort-box .cur-sort{color:#57a3f1;font-weight:bold}.bk-dot-loading,.bk-loading1{position:relative;width:75px;height:14px;margin:auto;display:inline-block}.bk-dot-loading .point,.bk-loading1 .point{position:absolute;top:0;width:14px;height:14px;animation-name:scale-animate;-webkit-animation-name:scale-animate;animation-duration:.8s;-webkit-animation-duration:.8s;animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;animation-direction:normal;-webkit-animation-direction:normal;transform:scale(0.6);-webkit-transform:scale(0.6);border-radius:19px;-webkit-border-radius:19px}.bk-dot-loading .point1,.bk-loading1 .point1{background-color:#fd6154;left:0;animation-delay:0.1s;-webkit-animation-delay:0.1s}.bk-dot-loading .point2,.bk-loading1 .point2{background-color:#ffb726;left:20px;animation-delay:0.25s;-webkit-animation-delay:0.25s}.bk-dot-loading .point3,.bk-loading1 .point3{background-color:#4cd084;left:40px;animation-delay:0.4s;-webkit-animation-delay:0.4s}.bk-dot-loading .point4,.bk-loading1 .point4{background-color:#57a3f1;left:60px;animation-delay:0.55s;-webkit-animation-delay:0.55s}.bk-dot-loading.bk-black .point1,.bk-dot-loading.bk-black .point2,.bk-dot-loading.bk-black .point3,.bk-dot-loading.bk-black .point4,.bk-loading1.bk-black .point1,.bk-loading1.bk-black .point2,.bk-loading1.bk-black .point3,.bk-loading1.bk-black .point4{background:#39424e}@keyframes scale-animate{0%{transform:scale(1)}100%{transform:scale(0.6)}}@-webkit-keyframes scale-animate{0%{-webkit-transform:scale(1)}100%{-webkit-transform:scale(0.6)}}@-o-keyframes scale-animate{0%{-o-transform:scale(1)}100%{-o-transform:scale(0.6)}}@-ms-keyframes scale-animate{.bk-dot-loading 0%,.bk-loading1 0%{-ms-transform:scale(0.1)}.bk-dot-loading 100%,.bk-loading1 100%{-ms-transform:scale(0.1)}}@-moz-keyframes scale-animate{0%{-moz-transform:scale(0.1)}100%{-moz-transform:scale(0.1)}}.bk-spin-loading,.bk-loading2{width:39px;height:39px;position:relative;margin:auto;display:inline-block;vertical-align:middle}.bk-spin-loading .rotate,.bk-loading2 .rotate{position:absolute;top:77%;right:43%;background-color:none;background-color:#39424e\\9\\0;width:6px;height:8px;transform-origin:50% -10px;-o-transform-origin:50% -10px;-ms-transform-origin:50% -10px;-webkit-transform-origin:50% -10px;-moz-transform-origin:50% -10px;border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;-webkit-border-radius:8px;-moz-border-radius:8px;transform:scale(0.4);-o-transform:scale(0.4);-ms-transform:scale(0.4);-webkit-transform:scale(0.4);-moz-transform:scale(0.4);animation-name:fade;-o-animation-name:fade;-ms-animation-name:fade;-webkit-animation-name:fade;-moz-animation-name:fade;animation-duration:1.2s;-o-animation-duration:1.2s;-ms-animation-duration:1.2s;-webkit-animation-duration:1.2s;-moz-animation-duration:1.2s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-direction:normal;-o-animation-direction:normal;-ms-animation-direction:normal;-webkit-animation-direction:normal;-moz-animation-direction:normal}.bk-spin-loading.bk-spin-loading-success .rotate,.bk-loading2.bk-spin-loading-success .rotate{background:#30d878\\9\\0;animation-name:fadeSuccess;-o-animation-name:fadeSuccess;-ms-animation-name:fadeSuccess;-webkit-animation-name:fadeSuccess;-moz-animation-name:fadeSuccess}.bk-spin-loading.bk-spin-loading-danger .rotate,.bk-loading2.bk-spin-loading-danger .rotate{background:#ff5656\\9\\0;animation-name:fadeDanger;-o-animation-name:fadeDanger;-ms-animation-name:fadeDanger;-webkit-animation-name:fadeDanger;-moz-animation-name:fadeDanger}.bk-spin-loading.bk-spin-loading-warning .rotate,.bk-loading2.bk-spin-loading-warning .rotate{background:#ffb400\\9\\0;animation-name:fadeWarning;-o-animation-name:fadeWarning;-ms-animation-name:fadeWarning;-webkit-animation-name:fadeWarning;-moz-animation-name:fadeWarning}.bk-spin-loading.bk-spin-loading-primary .rotate,.bk-loading2.bk-spin-loading-primary .rotate{background:#3c96ff\\9\\0;animation-name:fadePrimary;-o-animation-name:fadePrimary;-ms-animation-name:fadePrimary;-webkit-animation-name:fadePrimary;-moz-animation-name:fadePrimary}.bk-spin-loading.bk-spin-loading-white .rotate,.bk-loading2.bk-spin-loading-white .rotate{background:#fff\\9\\0;animation-name:fadeWhite;-o-animation-name:fadeWhite;-ms-animation-name:fadeWhite;-webkit-animation-name:fadeWhite;-moz-animation-name:fadeWhite}.bk-spin-loading .rotate1,.bk-loading2 .rotate1{animation-delay:.45s;-o-animation-delay:.45s;-ms-animation-delay:.45s;-webkit-animation-delay:.45s;-moz-animation-delay:.45s;transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg)}.bk-spin-loading .rotate2,.bk-loading2 .rotate2{animation-delay:.6s;-o-animation-delay:.6s;-ms-animation-delay:.6s;-webkit-animation-delay:.6s;-moz-animation-delay:.6s;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg)}.bk-spin-loading .rotate3,.bk-loading2 .rotate3{animation-delay:.75s;-o-animation-delay:.75s;-ms-animation-delay:.75s;-webkit-animation-delay:.75s;-moz-animation-delay:.75s;transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg)}.bk-spin-loading .rotate4,.bk-loading2 .rotate4{animation-delay:.9s;-o-animation-delay:.9s;-ms-animation-delay:.9s;-webkit-animation-delay:.9s;-moz-animation-delay:.9s;transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg)}.bk-spin-loading .rotate5,.bk-loading2 .rotate5{animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s;transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg)}.bk-spin-loading .rotate6,.bk-loading2 .rotate6{animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s;transform:rotate(135deg);-o-transform:rotate(135deg);-ms-transform:rotate(135deg);-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg)}.bk-spin-loading .rotate7,.bk-loading2 .rotate7{animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s;transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg)}.bk-spin-loading .rotate8,.bk-loading2 .rotate8{animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s;transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg)}.bk-spin-loading.bk-spin-loading-large,.bk-loading2.bk-spin-loading-large{width:69px;height:69px}.bk-spin-loading.bk-spin-loading-large .rotate,.bk-loading2.bk-spin-loading-large .rotate{width:10px;height:14px;transform-origin:50% -18px;-o-transform-origin:50% -18px;-ms-transform-origin:50% -18px;-webkit-transform-origin:50% -18px;-moz-transform-origin:50% -18px}.bk-spin-loading.bk-spin-loading-small,.bk-loading2.bk-spin-loading-small{width:27px;height:27px}.bk-spin-loading.bk-spin-loading-small .rotate,.bk-loading2.bk-spin-loading-small .rotate{width:4px;height:5px;transform-origin:50% -7px;-o-transform-origin:50% -7px;-ms-transform-origin:50% -7px;-webkit-transform-origin:50% -7px;-moz-transform-origin:50% -7px}.bk-spin-loading.bk-spin-loading-mini,.bk-loading2.bk-spin-loading-mini{width:16px;height:16px}.bk-spin-loading.bk-spin-loading-mini .rotate,.bk-loading2.bk-spin-loading-mini .rotate{width:2px;height:3px;transform-origin:50% -4px;-o-transform-origin:50% -4px;-ms-transform-origin:50% -4px;-webkit-transform-origin:50% -4px;-moz-transform-origin:50% -4px}@keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@-o-keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@-ms-keyframes fade{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#39424e}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@-moz-keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@-o-keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@-ms-keyframes fadeSuccess{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#30d878}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@-moz-keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@-o-keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@-ms-keyframes fadePrimary{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#3c96ff}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@-moz-keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@-o-keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@-ms-keyframes fadeDanger{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#ff5656}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@-moz-keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@-o-keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@-ms-keyframes fadeWarning{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#ffb400}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@-moz-keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}@-o-keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}@-ms-keyframes fadeWhite{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#fff}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}@-moz-keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}.bk-loading-box,.bk-loading{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;background-color:rgba(255,255,255,0.9);z-index:1000}.bk-loading-box .bk-loading-wrapper,.bk-loading .bk-loading-wrapper{text-align:center;line-height:1;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-loading-box-title,.bk-loading-title{text-align:center;font-size:14px;color:#737987;line-height:initial;margin-top:5px}.bk-message-box{min-height:255px;text-align:center;overflow-x:hidden}.bk-message-box .message{font-size:16px;color:#999}.bk-message-box .message.warning-message{margin-top:60px;padding-top:60px;background:url(../images/message_warning_icon.png) no-repeat center top}.bk-message-box .message.empty-message{margin-top:110px}.bk-message-box .message.loading-message{margin-top:110px}.bk-dot-loading,.bk-loading1{position:relative;width:75px;height:14px;margin:auto;display:inline-block}.bk-dot-loading .point,.bk-loading1 .point{position:absolute;top:0;width:14px;height:14px;animation-name:scale-animate;-webkit-animation-name:scale-animate;animation-duration:.8s;-webkit-animation-duration:.8s;animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;animation-direction:normal;-webkit-animation-direction:normal;transform:scale(0.6);-webkit-transform:scale(0.6);border-radius:19px;-webkit-border-radius:19px}.bk-dot-loading .point1,.bk-loading1 .point1{background-color:#fd6154;left:0;animation-delay:0.1s;-webkit-animation-delay:0.1s}.bk-dot-loading .point2,.bk-loading1 .point2{background-color:#ffb726;left:20px;animation-delay:0.25s;-webkit-animation-delay:0.25s}.bk-dot-loading .point3,.bk-loading1 .point3{background-color:#4cd084;left:40px;animation-delay:0.4s;-webkit-animation-delay:0.4s}.bk-dot-loading .point4,.bk-loading1 .point4{background-color:#57a3f1;left:60px;animation-delay:0.55s;-webkit-animation-delay:0.55s}.bk-dot-loading.bk-black .point1,.bk-dot-loading.bk-black .point2,.bk-dot-loading.bk-black .point3,.bk-dot-loading.bk-black .point4,.bk-loading1.bk-black .point1,.bk-loading1.bk-black .point2,.bk-loading1.bk-black .point3,.bk-loading1.bk-black .point4{background:#39424e}@keyframes scale-animate{0%{transform:scale(1)}100%{transform:scale(0.6)}}@-webkit-keyframes scale-animate{0%{-webkit-transform:scale(1)}100%{-webkit-transform:scale(0.6)}}@-o-keyframes scale-animate{0%{-o-transform:scale(1)}100%{-o-transform:scale(0.6)}}@-ms-keyframes scale-animate{.bk-dot-loading 0%,.bk-loading1 0%{-ms-transform:scale(0.1)}.bk-dot-loading 100%,.bk-loading1 100%{-ms-transform:scale(0.1)}}@-moz-keyframes scale-animate{0%{-moz-transform:scale(0.1)}100%{-moz-transform:scale(0.1)}}.bk-spin-loading,.bk-loading2{width:39px;height:39px;position:relative;margin:auto;display:inline-block;vertical-align:middle}.bk-spin-loading .rotate,.bk-loading2 .rotate{position:absolute;top:77%;right:43%;background-color:none;background-color:#39424e\\9\\0;width:6px;height:8px;transform-origin:50% -10px;-o-transform-origin:50% -10px;-ms-transform-origin:50% -10px;-webkit-transform-origin:50% -10px;-moz-transform-origin:50% -10px;border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;-webkit-border-radius:8px;-moz-border-radius:8px;transform:scale(0.4);-o-transform:scale(0.4);-ms-transform:scale(0.4);-webkit-transform:scale(0.4);-moz-transform:scale(0.4);animation-name:fade;-o-animation-name:fade;-ms-animation-name:fade;-webkit-animation-name:fade;-moz-animation-name:fade;animation-duration:1.2s;-o-animation-duration:1.2s;-ms-animation-duration:1.2s;-webkit-animation-duration:1.2s;-moz-animation-duration:1.2s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-direction:normal;-o-animation-direction:normal;-ms-animation-direction:normal;-webkit-animation-direction:normal;-moz-animation-direction:normal}.bk-spin-loading.bk-spin-loading-success .rotate,.bk-loading2.bk-spin-loading-success .rotate{background:#30d878\\9\\0;animation-name:fadeSuccess;-o-animation-name:fadeSuccess;-ms-animation-name:fadeSuccess;-webkit-animation-name:fadeSuccess;-moz-animation-name:fadeSuccess}.bk-spin-loading.bk-spin-loading-danger .rotate,.bk-loading2.bk-spin-loading-danger .rotate{background:#ff5656\\9\\0;animation-name:fadeDanger;-o-animation-name:fadeDanger;-ms-animation-name:fadeDanger;-webkit-animation-name:fadeDanger;-moz-animation-name:fadeDanger}.bk-spin-loading.bk-spin-loading-warning .rotate,.bk-loading2.bk-spin-loading-warning .rotate{background:#ffb400\\9\\0;animation-name:fadeWarning;-o-animation-name:fadeWarning;-ms-animation-name:fadeWarning;-webkit-animation-name:fadeWarning;-moz-animation-name:fadeWarning}.bk-spin-loading.bk-spin-loading-primary .rotate,.bk-loading2.bk-spin-loading-primary .rotate{background:#3c96ff\\9\\0;animation-name:fadePrimary;-o-animation-name:fadePrimary;-ms-animation-name:fadePrimary;-webkit-animation-name:fadePrimary;-moz-animation-name:fadePrimary}.bk-spin-loading.bk-spin-loading-white .rotate,.bk-loading2.bk-spin-loading-white .rotate{background:#fff\\9\\0;animation-name:fadeWhite;-o-animation-name:fadeWhite;-ms-animation-name:fadeWhite;-webkit-animation-name:fadeWhite;-moz-animation-name:fadeWhite}.bk-spin-loading .rotate1,.bk-loading2 .rotate1{animation-delay:.45s;-o-animation-delay:.45s;-ms-animation-delay:.45s;-webkit-animation-delay:.45s;-moz-animation-delay:.45s;transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg)}.bk-spin-loading .rotate2,.bk-loading2 .rotate2{animation-delay:.6s;-o-animation-delay:.6s;-ms-animation-delay:.6s;-webkit-animation-delay:.6s;-moz-animation-delay:.6s;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg)}.bk-spin-loading .rotate3,.bk-loading2 .rotate3{animation-delay:.75s;-o-animation-delay:.75s;-ms-animation-delay:.75s;-webkit-animation-delay:.75s;-moz-animation-delay:.75s;transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg)}.bk-spin-loading .rotate4,.bk-loading2 .rotate4{animation-delay:.9s;-o-animation-delay:.9s;-ms-animation-delay:.9s;-webkit-animation-delay:.9s;-moz-animation-delay:.9s;transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg)}.bk-spin-loading .rotate5,.bk-loading2 .rotate5{animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s;transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg)}.bk-spin-loading .rotate6,.bk-loading2 .rotate6{animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s;transform:rotate(135deg);-o-transform:rotate(135deg);-ms-transform:rotate(135deg);-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg)}.bk-spin-loading .rotate7,.bk-loading2 .rotate7{animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s;transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg)}.bk-spin-loading .rotate8,.bk-loading2 .rotate8{animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s;transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg)}.bk-spin-loading.bk-spin-loading-large,.bk-loading2.bk-spin-loading-large{width:69px;height:69px}.bk-spin-loading.bk-spin-loading-large .rotate,.bk-loading2.bk-spin-loading-large .rotate{width:10px;height:14px;transform-origin:50% -18px;-o-transform-origin:50% -18px;-ms-transform-origin:50% -18px;-webkit-transform-origin:50% -18px;-moz-transform-origin:50% -18px}.bk-spin-loading.bk-spin-loading-small,.bk-loading2.bk-spin-loading-small{width:27px;height:27px}.bk-spin-loading.bk-spin-loading-small .rotate,.bk-loading2.bk-spin-loading-small .rotate{width:4px;height:5px;transform-origin:50% -7px;-o-transform-origin:50% -7px;-ms-transform-origin:50% -7px;-webkit-transform-origin:50% -7px;-moz-transform-origin:50% -7px}.bk-spin-loading.bk-spin-loading-mini,.bk-loading2.bk-spin-loading-mini{width:16px;height:16px}.bk-spin-loading.bk-spin-loading-mini .rotate,.bk-loading2.bk-spin-loading-mini .rotate{width:2px;height:3px;transform-origin:50% -4px;-o-transform-origin:50% -4px;-ms-transform-origin:50% -4px;-webkit-transform-origin:50% -4px;-moz-transform-origin:50% -4px}@keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@-o-keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@-ms-keyframes fade{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#39424e}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@-moz-keyframes fade{0%{background-color:#39424e}100%{background-color:none}}@keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@-o-keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@-ms-keyframes fadeSuccess{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#30d878}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@-moz-keyframes fadeSuccess{0%{background-color:#30d878}100%{background-color:none}}@keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@-o-keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@-ms-keyframes fadePrimary{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#3c96ff}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@-moz-keyframes fadePrimary{0%{background-color:#3c96ff}100%{background-color:none}}@keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@-o-keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@-ms-keyframes fadeDanger{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#ff5656}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@-moz-keyframes fadeDanger{0%{background-color:#ff5656}100%{background-color:none}}@keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@-o-keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@-ms-keyframes fadeWarning{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#ffb400}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@-moz-keyframes fadeWarning{0%{background-color:#ffb400}100%{background-color:none}}@keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}@-o-keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}@-ms-keyframes fadeWhite{.bk-spin-loading 0%,.bk-loading2 0%{background-color:#fff}.bk-spin-loading 100%,.bk-loading2 100%{background-color:none}}@-webkit-keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}@-moz-keyframes fadeWhite{0%{background-color:#fff}100%{background-color:none}}.bk-loading-box,.bk-loading{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;background-color:rgba(255,255,255,0.9);z-index:1000}.bk-loading-box .bk-loading-wrapper,.bk-loading .bk-loading-wrapper{text-align:center;line-height:1;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-loading-box-title,.bk-loading-title{text-align:center;font-size:14px;color:#737987;line-height:initial;margin-top:5px}.bk-page{height:36px;display:inline-block}.bk-page .bk-icon{font-size:14px}.bk-page>ul{margin:0;padding:0;display:inline-block;overflow:hidden;height:36px}.bk-page a{text-decoration:none}.bk-page.bk-page-small{height:32px}.bk-page.bk-page-small>ul{height:32px}.bk-page.bk-page-small .page-item{height:32px;min-width:32px;line-height:32px;margin-right:4px}.bk-page.bk-page-small .page-item .page-button{line-height:32px}.bk-page.bk-page-small .bk-icon{font-size:10px}.bk-page.bk-page-compact .page-item{margin-right:-1px;border-radius:0}.bk-page.bk-page-compact .page-item:hover{position:relative;z-index:1}.bk-page.bk-page-compact .page-item:first-child{border-radius:2px 0 0 2px}.bk-page.bk-page-compact .page-item:last-child{border-radius:0 2px 2px 0}.bk-page.bk-page-compact .page-item.cur-page{position:relative;z-index:1}.bk-page.bk-compact-page .page-item{min-width:32px;height:32px;line-height:32px;margin-right:-1px;border-radius:0}.bk-page.bk-compact-page .page-item.page-omit{line-height:26px}.bk-page.bk-compact-page .page-item:hover{position:relative;z-index:1}.bk-page.bk-compact-page .page-item:first-child{border-radius:2px 0 0 2px}.bk-page.bk-compact-page .page-item:last-child{border-radius:0 2px 2px 0}.bk-page.bk-compact-page .page-item.cur-page{position:relative;z-index:1}.bk-page.bk-compact-page .bk-icon{font-size:10px}.bk-page .page-item{min-width:36px;height:36px;line-height:36px;text-align:center;display:inline-block;vertical-align:middle;font-size:14px;float:left;margin-right:10px;border:1px solid #c3cdd7;box-sizing:border-box;border-radius:2px;overflow:hidden}.bk-page .page-item:hover{border-color:#3c96ff}.bk-page .page-item.disabled{border-color:#c3cdd7 !important}.bk-page .page-item.disabled .page-button{cursor:not-allowed;background:#fafafa}.bk-page .page-item.page-omit{border:none;min-width:auto;line-height:28px}.bk-page .page-item.page-omit>span{margin-top:-5px;display:inline-block}.bk-page .page-item .page-button{display:block;color:#737987;background:#fff}.bk-page .page-item .page-button:hover{color:#3c96ff}.bk-page .page-item.cur-page{border-color:#3c96ff}.bk-page .page-item.cur-page .page-button{background:#3c96ff;color:#fff}.bk-page .page-item:last-child{margin-right:0}.bk-form.bk-inline-form{display:inline-block}.bk-form.bk-inline-form .bk-form-item{display:inline-block;margin-bottom:0;margin-left:10px}.bk-form.bk-inline-form .bk-form-item:first-child{margin-left:0}.bk-form.bk-inline-form .bk-form-item+.bk-form-item{margin-top:0}.bk-form.bk-inline-form .bk-label{width:auto;display:inline-block;padding:10px 15px 10px 0}.bk-form.bk-inline-form.is-required>.bk-label:after{right:5px}.bk-form.bk-inline-form .bk-form-content{display:inline-block;margin-left:0}.bk-form.bk-form-vertical .bk-label{width:auto;text-align:left}.bk-form.bk-form-vertical .bk-form-content{clear:both;margin-left:0 !important}.bk-form.bk-form-vertical .bk-form-item+.bk-form-item{margin-top:8px}.bk-form.bk-form-vertical .bk-form-item.bk-form-action{margin-top:20px}.bk-form.bk-form-vertical .bk-form-tip{padding:0;margin:10px 0 0 0;position:relative;height:auto;line-height:1;left:0}.bk-form.bk-form-vertical .bk-form-tip .bk-tip-text{float:none;vertical-align:middle}.bk-form.bk-form-vertical .bk-form-tip .bk-badge{margin-right:5px}.bk-form .bk-label{width:150px;text-align:right;vertical-align:middle;float:left;font-size:14px;font-weight:normal;color:#666;line-height:1;box-sizing:border-box;padding:10px 28px 10px 0}.bk-form .bk-form-content{width:auto;margin-left:150px;position:relative}.bk-form .bk-form-content>.bk-tip-text{font-size:14px;color:#737987;margin:10px 0 0 0}.bk-form .bk-form-content>.bk-form-tip{padding:0;margin:10px 0 0 0;position:relative;height:auto;line-height:1;left:0}.bk-form .bk-form-content>.bk-form-tip .bk-tip-text{float:none;vertical-align:middle}.bk-form .bk-form-content>.bk-form-tip .bk-badge{margin-right:5px}.bk-form ::placeholder{color:#c3cdd7}.bk-form::after,.bk-form .bk-form-item::before{display:table;content:\"\";clear:both;visibility:hidden;font-size:0}.bk-form input:-webkit-autofill,.bk-form textarea:-webkit-autofill,.bk-form select:-webkit-autofill{background:#fff !important}.bk-form-item{position:relative}.bk-form-item label{margin-bottom:0}.bk-form-item+.bk-form-item{margin-top:20px}.bk-form-item.is-required .bk-label{position:relative}.bk-form-item.is-required .bk-label:after{content:'*';color:#ff5656;position:relative;margin:2px -7px 0 2px;display:inline-block;vertical-align:middle}.bk-form-item.is-readonly input[type=\"text\"],.bk-form-item.is-readonly input[type=\"password\"],.bk-form-item.is-readonly textarea,.bk-form-item.is-readonly select{background-color:#fafafa}.bk-form-item.is-disabled input[type=\"text\"],.bk-form-item.is-disabled input[type=\"password\"],.bk-form-item.is-disabled textarea,.bk-form-item.is-disabled select{background-color:#fafafa}.bk-form-item.is-danger input[type=\"text\"],.bk-form-item.is-danger input[type=\"password\"],.bk-form-item.is-danger textarea,.bk-form-item.is-danger select,.bk-form-item.is-error input[type=\"text\"],.bk-form-item.is-error input[type=\"password\"],.bk-form-item.is-error textarea,.bk-form-item.is-error select{border-color:#ff5656}.bk-form-item.is-warning input[type=\"text\"],.bk-form-item.is-warning input[type=\"password\"],.bk-form-item.is-warning textarea,.bk-form-item.is-warning select{border-color:#ffb400}.bk-form-item.is-success input[type=\"text\"],.bk-form-item.is-success input[type=\"password\"],.bk-form-item.is-success textarea,.bk-form-item.is-success select{border-color:#30d878}.bk-form-item input.bk-success+.bk-form-tip .bk-tip-text,.bk-form-item select.bk-success+.bk-form-tip .bk-tip-text,.bk-form-item textarea.bk-success+.bk-form-tip .bk-tip-text,.bk-form-item input.is-success+.bk-form-tip .bk-tip-text,.bk-form-item select.is-success+.bk-form-tip .bk-tip-text,.bk-form-item textarea.is-success+.bk-form-tip .bk-tip-text{color:#30d878}.bk-form-item input.bk-error,.bk-form-item select.bk-error,.bk-form-item textarea.bk-error,.bk-form-item input.is-danger,.bk-form-item select.is-danger,.bk-form-item textarea.is-danger{border-color:#ff5656;background-color:#fff4f4;color:#ff5656}.bk-form-item input.bk-error::placeholder,.bk-form-item select.bk-error::placeholder,.bk-form-item textarea.bk-error::placeholder,.bk-form-item input.is-danger::placeholder,.bk-form-item select.is-danger::placeholder,.bk-form-item textarea.is-danger::placeholder{color:#ff5656}.bk-form-item input.bk-error+.bk-form-tip .bk-tip-text,.bk-form-item select.bk-error+.bk-form-tip .bk-tip-text,.bk-form-item textarea.bk-error+.bk-form-tip .bk-tip-text,.bk-form-item input.is-danger+.bk-form-tip .bk-tip-text,.bk-form-item select.is-danger+.bk-form-tip .bk-tip-text,.bk-form-item textarea.is-danger+.bk-form-tip .bk-tip-text{color:#ff5656}.bk-form-input,.bk-form-password,.bk-form-select,.bk-form-textarea{box-sizing:border-box;height:36px;line-height:1;color:#666;background-color:#fff;border-radius:2px;width:100%;box-sizing:border-box;border:1px solid #c3cdd7;padding:0 10px;font-size:14px;text-align:left;vertical-align:middle;outline:none;resize:none;transition:border linear .2s}.bk-form-input:focus,.bk-form-password:focus,.bk-form-select:focus,.bk-form-textarea:focus{border-color:#3c96ff !important;background-color:#fff !important;color:#737987 !important}.bk-form-input:focus::placeholder,.bk-form-password:focus::placeholder,.bk-form-select:focus::placeholder,.bk-form-textarea:focus::placeholder{color:#c3cdd7 !important}.bk-form-input::placeholder,.bk-form-password::placeholder,.bk-form-select::placeholder,.bk-form-textarea::placeholder{color:#c3cdd7}.bk-form-input[disabled],.bk-form-input[readonly],.bk-form-password[disabled],.bk-form-password[readonly],.bk-form-select[disabled],.bk-form-select[readonly],.bk-form-textarea[disabled],.bk-form-textarea[readonly]{background-color:#fafafa}.bk-form-input[disabled],.bk-form-password[disabled],.bk-form-select[disabled],.bk-form-textarea[disabled]{color:#ccc}.bk-form-select{line-height:32px;padding-left:0\\9\\0;padding-right:0\\9\\0}.bk-form-textarea{min-height:70px;padding:10px}.bk-form-mini .bk-form-input,.bk-form-mini .bk-form-password,.bk-form-mini .bk-form-select,.bk-form-mini .bk-form-textarea{height:24px;font-size:12px}.bk-form-small .bk-form-input,.bk-form-small .bk-form-password,.bk-form-small .bk-form-select,.bk-form-small .bk-form-textarea{height:32px;font-size:12px}.bk-form-large .bk-form-input,.bk-form-large .bk-form-password,.bk-form-large .bk-form-select,.bk-form-large .bk-form-textarea{height:42px;font-size:14px}.bk-form-larger .bk-form-input,.bk-form-larger .bk-form-password,.bk-form-larger .bk-form-select,.bk-form-larger .bk-form-textarea{height:54px;font-size:18px}.bk-form-tip{height:36px;line-height:36px;padding:0 10px 0 35px;position:relative;position:absolute;left:100%;top:0}.bk-form-tip .bk-badge{vertical-align:middle}.bk-form-tip .bk-tip-text{float:left;font-size:14px;color:#737987;display:inline-block;padding:0;margin:0;white-space:nowrap}.bk-form-radio{font-size:14px;color:#666666;margin-right:30px;line-height:18px;display:inline-block;padding:7px 0}.bk-form-radio .bk-radio-text{font-style:normal;font-weight:normal;cursor:pointer;vertical-align:middle}.bk-form-radio input[type=radio]{width:18px;height:18px;outline:none;visibility:visible;cursor:pointer;vertical-align:middle;background-color:#fff;background-image:url(../images/bk_check.png);display:inline-block;background-position:0 0;-webkit-appearance:none;margin:0 5px 0 0}.bk-form-radio input[type=radio]:checked{background-position:-33px 0}.bk-form-radio input[type=radio]:checked[disabled]{color:#ccc;background-position:-99px 0}.bk-form-radio input[type=radio][disabled]{background-position:-66px 0;cursor:default}.bk-form-radio input[type=radio][disabled]+.bk-radio-text{color:#ccc;cursor:default}.bk-form-radio.bk-radio-small input[type=radio]{width:14px;height:14px;background-position:0 -33px}.bk-form-radio.bk-radio-small input[type=radio]:checked{background-position:-33px -33px}.bk-form-radio.bk-radio-small input[type=radio]:checked[disabled]{background-position:-99px -33px}.bk-form-radio.bk-radio-small input[type=radio][disabled]{background-position:-66px -33px}.bk-form-checkbox{font-size:14px;color:#666666;margin-right:30px;line-height:18px;display:inline-block;padding:7px 0}.bk-form-checkbox .bk-checkbox-text{font-style:normal;font-weight:normal;cursor:pointer;vertical-align:middle}.bk-form-checkbox input[type=checkbox]{width:18px;height:18px;outline:none;visibility:visible;cursor:pointer;vertical-align:middle;background:#fff;background-image:url(../images/bk_check.png);display:inline-block;background-position:0 -62px;-webkit-appearance:none;margin:0 5px 0 0}.bk-form-checkbox input[type=checkbox]:checked{background-position:-33px -62px}.bk-form-checkbox input[type=checkbox]:checked[disabled]{color:#ccc;background-position:-99px -62px}.bk-form-checkbox input[type=checkbox][disabled]{background-position:-66px -62px;cursor:default}.bk-form-checkbox input[type=checkbox][disabled]+.bk-checkbox-text{color:#ccc;cursor:default}.bk-form-checkbox.bk-checkbox-small input[type=checkbox]{width:14px;height:14px;background-position:0 -95px}.bk-form-checkbox.bk-checkbox-small input[type=checkbox]:checked{background-position:-33px -95px}.bk-form-checkbox.bk-checkbox-small input[type=checkbox]:checked[disabled]{background-position:-99px -95px}.bk-form-checkbox.bk-checkbox-small input[type=checkbox][disabled]{background-position:-66px -95px}.bk-radio{box-sizing:border-box;display:inline-block;cursor:pointer;height:34px;padding:8px 0;position:relative}.bk-radio.bk-radio-small input[type='radio']{width:14px;height:14px}.bk-radio.bk-radio-small .bk-radio-control{width:14px;height:14px}.bk-radio.bk-radio-small .bk-radio-text{line-height:14px}.bk-radio input[type='radio']{width:18px;height:18px;opacity:0;vertical-align:middle}.bk-radio .bk-radio-control{width:18px;height:18px;border-radius:50%;border:1px solid #cdcdcd;box-sizing:border-box;display:inline-block;position:absolute;left:0;top:50%;margin-top:-9px}.bk-radio .bk-radio-text{color:#666;font-size:12px;line-height:18px;padding:0 32px 0 7px;vertical-align:top}.bk-radio input:checked ~ .bk-radio-control:after,.bk-radio input[checked=\"checked\"] ~ .bk-radio-control:after{content:\"\";width:50%;height:50%;background:url(../images/radio.png);background-size:cover;border-radius:80px;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-radio input[disabled] ~ .bk-radio-control{cursor:not-allowed}.bk-radio input[disabled] ~ .bk-radio-text{color:#ccc;cursor:not-allowed}.bk-radio input[disabled][checked] ~ .bk-radio-control:after{content:\"\";width:50%;height:50%;background:#ccc;border-radius:80px;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-checkbox{box-sizing:border-box;cursor:pointer;height:34px;position:relative;display:inline-block;padding:8px 0}.bk-checkbox.bk-checkbox-small input[type='checkbox']{width:14px;height:14px}.bk-checkbox.bk-checkbox-small .bk-checkbox-control{width:14px;height:14px}.bk-checkbox.bk-checkbox-small .bk-checkbox-text{line-height:14px}.bk-checkbox input[type='checkbox']{width:18px;height:18px;opacity:0}.bk-checkbox .bk-checkbox-control{width:18px;height:18px;border:1px solid #cdcdcd;box-sizing:border-box;display:inline-block;position:absolute;left:0;top:50%;margin-top:-9px}.bk-checkbox .bk-checkbox-text{color:#666;font-size:12px;line-height:18px;padding:0 32px 0 7px;vertical-align:top}.bk-checkbox input:checked ~ .bk-checkbox-control:after,.bk-checkbox input[checked=\"checked\"] ~ .bk-checkbox-control:after{content:\"\";width:50%;height:50%;background:url(../images/checkbox.png) no-repeat;background-size:cover;background-position:center center;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-checkbox input[disabled] ~ .bk-checkbox-control{cursor:not-allowed}.bk-checkbox input[disabled] ~ .bk-checkbox-text{color:#ccc;cursor:not-allowed}.bk-checkbox input[disabled][checked] ~ .bk-checkbox-control:after{content:\"\";width:50%;height:50%;background:url(../images/checkbox-disabled.png) no-repeat;background-size:cover;background-position:center center;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-badge{min-width:18px;height:18px;box-sizing:border-box;padding:0 2px;border-radius:18px;border:1px solid #c3cdd7;background-color:#fff;display:inline-block;font-size:12px;color:#888;line-height:16px;text-align:center;position:relative}.bk-badge .icon,.bk-badge .bk-icon{position:absolute;left:50%;top:50%;margin-top:0;transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%)}.bk-badge.bk-danger{background-color:#ff5656;border-color:#ff5656;color:#fff}.bk-badge.bk-warning{background-color:#ffb400;border-color:#ffb400;color:#fff}.bk-badge.bk-success{background-color:#30d878;border-color:#30d878;color:#fff}.bk-badge.bk-primary{background-color:#3c96ff;border-color:#3c96ff;color:#fff}.bk-badge.bk-info{background-color:#88c3ff;border-color:#88c3ff;color:#fff}.bk-badge-wrapper{position:relative;display:inline-block}.bk-badge-wrapper .bk-badge.pinned{position:absolute}.bk-badge-wrapper .bk-badge.pinned.top-right{top:0;right:0;transform:translate(50%, -50%) scale(1, 1)}.bk-badge-wrapper .bk-badge.pinned.top-right.fade-center-enter,.bk-badge-wrapper .bk-badge.pinned.top-right.fade-center-leave-active{opacity:0;transform:translate(50%, -50%) scale(0, 0)}.bk-badge-wrapper .bk-badge.pinned.bottom-right{bottom:0;right:0;transform:translate(50%, 50%) scale(1, 1)}.bk-badge-wrapper .bk-badge.pinned.bottom-right.fade-center-enter,.bk-badge-wrapper .bk-badge.pinned.bottom-right.fade-center-leave-active{opacity:0;transform:translate(50%, 50%) scale(0, 0)}.bk-badge-wrapper .bk-badge.pinned.top-left{top:0;left:0;transform:translate(-50%, -50%) scale(1, 1)}.bk-badge-wrapper .bk-badge.pinned.top-left.fade-center-enter,.bk-badge-wrapper .bk-badge.pinned.top-left.fade-center-leave-active{opacity:0;transform:translate(-50%, -50%) scale(0, 0)}.bk-badge-wrapper .bk-badge.pinned.bottom-left{bottom:0;left:0;transform:translate(-50%, 50%) scale(1, 1)}.bk-badge-wrapper .bk-badge.pinned.bottom-left.fade-center-enter,.bk-badge-wrapper .bk-badge.pinned.bottom-left.fade-center-leave-active{opacity:0;transform:translate(-50%, 50%) scale(0, 0)}.bk-badge-wrapper .bk-badge.dot{width:8px;height:8px;min-width:8px}.bk-badge-wrapper .bk-badge .bk-icon{display:block;transform:scale(0.8);line-height:18px}.bk-intro{color:#666666;border:1px solid #c3cdd7;font-size:12px;overflow:hidden;padding:5px 10px;cursor:default;background:#f7f7f7;border-radius:2px}.bk-intro strong{color:#ff7979;font-weight:normal}.bk-intro .bk-intro-title{font-weight:bold;font-size:12px;margin:0 0 10px 0;line-height:20px}.bk-intro .bk-intro-text{margin:0;padding:0;line-height:22px}.bk-intro.bk-info{color:#55a9ff;border:#eef6ff 1px solid;background:#fff}.bk-intro.bk-primary{color:#097bff;border:#a2cdff 1px solid;background:#fff}.bk-intro.bk-warning{color:#cc9000;border:#ffd266 1px solid;background:#fff}.bk-intro.bk-danger{color:#ff2323;border:#ffbcbc 1px solid;background:#fff}.bk-intro.bk-success{color:#22b360;border:#b1f0cc 1px solid;background:#fff}.bk-step4{margin-top:20px}.bk-title{display:inline-block;vertical-align:middle;text-align:center;padding:10px 0;color:#666}.bk-flows{display:table;width:100%;display:flex;-ms-display:flex;-moz-display:flex;-webkit-display:flex}.bk-flows .bk-icon{font-size:18px}.bk-flow{display:table-cell;flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1;text-align:center;position:relative}.bk-flow::after{content:\"\";width:100%;height:2px;background:#ccc;position:absolute;left:50%;top:17px}.bk-flow .bk-flow-number{position:relative;z-index:1;display:inline-block;width:36px;height:36px;line-height:32px;color:#ccc;text-align:center;background:#fff;border-radius:50%;border:2px solid #ccc;padding:0;font-size:18px;font-family:arial}.bk-flow .bk-flow-icon{position:relative;z-index:1;display:inline-block;width:36px;height:36px;line-height:32px;color:#ccc;text-align:center;background:#fff;border-radius:50%;border:2px solid #ccc;padding:0;font-size:20px}.bk-flow .bk-flow-title{display:block;color:#ccc;font-size:14px;margin-top:10px}.bk-flow .bk-flow-text{position:relative;z-index:1;display:inline-block;width:180px;height:42px;line-height:38px;border-radius:21px;border:2px solid #ccc;color:#ccc;font-size:16px;background:#fff}.bk-flow .bk-flow-tips{text-align:left;width:180px;margin:10px auto 0;padding-left:25px;color:#ccc;font-size:14px}.bk-flow .bk-flow-tips p.tip-done{color:#666}.bk-flow .bk-flow-tips p.tip-done i{color:#4dc86f}.bk-flow .bk-flow-tips p.tip-error{color:#666}.bk-flow .bk-flow-tips p.tip-error i{color:#ff7979}.bk-flow:last-of-type::after{display:none}.bk-vertical{min-height:80px;position:relative;overflow:hidden}.bk-vertical::after{content:\"\";width:2px;height:100%;background:#ccc;position:absolute;left:17px;top:10px}.bk-vertical .bk-flow-number{position:relative;z-index:1;display:inline-block;width:36px;height:36px;line-height:32px;color:#ccc;text-align:center;background:#fff;border-radius:50%;border:2px solid #ccc;padding:0;font-size:18px;font-family:arial;float:left}.bk-vertical .bk-flow-icon{position:relative;z-index:1;display:inline-block;width:36px;height:36px;line-height:32px;color:#ccc;text-align:center;background:#fff;border-radius:50%;border:2px solid #ccc;padding:0;font-size:20px;float:left}.bk-vertical .bk-vertical-text{text-align:left;margin:12px 10px 0 10px;line-height:14px;color:#ccc;float:left}.bk-vertical .bk-vertical-text h5{margin:0 0 20px 0}.bk-vertical .bk-vertical-text p.done{color:#5bd18b}.bk-vertical .bk-vertical-text p.current{color:#666}.bk-vertical:last-of-type{height:36px}.bk-vertical:last-of-type::after{display:none}.done .bk-flow-number,.done .bk-flow-icon,.done .bk-flow-text{background:#5bd18b;border-color:#5bd18b;color:#fff}.done::after{background:#5bd18b}.done .bk-flow-title,.done .bk-flow-tips,.done .bk-vertical-text{color:#666}.done .bk-flow-tips i{color:#4dc86f}.current .bk-flow-number,.current .bk-flow-icon,.current .bk-flow-text{border-color:#5bd18b;color:#5bd18b;border-width:2px}.current .bk-flow-title{color:#666}.current .bk-vertical-text{color:#666}.bk-flow-content .bk-flow::after{top:20px}.king-layout-container{background:#ececec;height:100%}.king-layout-container .hide{display:none !important}.king-layout-container a{text-decoration:none}.king-layout-container .king-horizontal-nav1{padding:0 32px}.king-layout-container .item-pull-right{padding-right:18px}.king-layout-container .item-pull-right li .logout span{color:#646464}.king-layout-container .item-pull-right li a{color:#646464;padding:0}.king-layout-container .item-pull-right li a:hover{background:none}.king-layout-container .item-pull-right li .img-rounded{border-radius:50%}.king-layout-header{background:rgba(0,0,0,0.75);padding:0 50px;height:64px;line-height:64px}.king-layout-header .logo{width:120px;height:31px;background:#333;border-radius:6px;margin:16px 24px 16px 0;float:left}.king-layout-header .king-menu-list{border:0;box-shadow:none;z-index:0;color:rgba(255,255,255,0.67);background:#404040}.king-layout-header .king-menu-list li{float:left;margin:0;margin-top:-1px;padding:0 20px;position:relative;display:block;white-space:nowrap}.king-layout-header .king-menu-list li.king-menu-on a{color:#fff}.king-layout-header .king-menu-list li.king-menu-on a:hover{opacity:1}.king-layout-header .king-menu-list a{color:rgba(255,255,255,0.67);-webkit-transition:all .3s ease;transition:all .3s ease}.king-layout-header .king-menu-list a:hover{color:#fff}.king-flexible-setting{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;overflow:auto;padding:0 !important}.king-layout-main{-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;padding:0 50px;height:100%}.king-layout-main .king-breadcrumb{color:rgba(0,0,0,0.43);font-size:12px;padding:12px 0px}.king-layout-main .king-breadcrumb .king-breadcrumb-separator{margin:0 8px;color:#d9d9d9}.king-layout-main .king-breadcrumb span:last-child{font-weight:bold;color:rgba(0,0,0,0.65)}.king-layout-main .king-layout-content{background:#fff;padding:24px;min-height:280px}.king-layout-main .king-layout-content.king-layout-has-slider{padding:24px 0px !important}.king-layout-main .king-layout-content.king-layout-has-slider .king-layout-slider{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-transition:all .3s ease;transition:all .3s ease;position:relative;border-right:1px solid #e9e9e9}.king-layout-main .king-layout-content.king-layout-has-slider .king-layout-content{-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;padding:0px 24px;min-height:280px}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-submenu-title{margin:0;padding:0px 16px 0 28px;position:relative;display:block;white-space:nowrap;font-size:12px;line-height:42px;height:42px;overflow:hidden;text-overflow:ellipsis;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-submenu-title:hover{color:#4A9BFF}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-inline{outline:none;margin-bottom:0;padding-left:0;list-style:none;color:rgba(0,0,0,0.65);background:#fff;line-height:46px}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-inline.king-menu-item-list{border-right:0}.king-layout-main .king-layout-content.king-layout-has-slider .submenu-icon{margin-right:8px}.king-layout-main .king-layout-content.king-layout-has-slider .up-down-icon{margin-top:15px;-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transition:transform .3s ease;transition:transform .3s ease}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-item-list{display:none}.king-layout-main .king-layout-content.king-layout-has-slider .default-list{display:block}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-item{padding-left:48px;font-size:12px;-webkit-transition:all .3s ease;transition:all .3s ease;cursor:pointer}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-item.king-menu-item-selected{color:#4A9BFF;border-right:3px solid #4A9BFF;-webkit-transform:translateZ(0);transform:translateZ(0);background-color:#ecf6fd}.king-layout-main .king-layout-content.king-layout-has-slider .king-menu-item:hover{color:#4A9BFF}.king-layout-main .king-layout-content .show-items .up-down-icon{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transition:transform .3s ease;transition:transform .3s ease}.king-layout-main .king-layout-content .king-slider-content{padding:0px 24px;min-height:280px;color:rgba(0,0,0,0.65);font-size:14px}.king-layout-main .king-flexible-nav{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-transition:all .3s ease;transition:all .3s ease;position:relative;background:rgba(0,0,0,0.75)}.king-layout-main .king-flexible-nav.king-layout-sider-collapsed{-webkit-box-flex:0;-webkit-flex:0 0 64px;-ms-flex:0 0 64px;flex:0 0 64px}.king-layout-main .king-flexible-nav.king-layout-sider-collapsed .logo{margin:16px;background:url(http://magicbox.bk.tencent.com/static_api/v3/bk/images/logo.png) no-repeat left center;background-size:78px 24px;-webkit-transition:all .3s ease;transition:all .3s ease}.king-layout-main .king-flexible-nav.king-layout-sider-collapsed .logo img{height:24px;-webkit-transition:all .3s ease;transition:all .3s ease}.king-layout-main .king-flexible-nav.king-layout-sider-collapsed li span{-webkit-transition:all .3s ease;transition:all .3s ease;font-size:16px}.king-layout-main .king-flexible-nav .logo{width:auto;height:32px;margin:16px 24px;background:url(http://magicbox.bk.tencent.com/static_api/v3/bk/images/logo.png) no-repeat}.king-layout-main .king-flexible-nav .flexible-list{margin:0;padding:0}.king-layout-main .king-flexible-nav .flexible-list li{padding:0px 16px 0 24px;font-size:12px;line-height:42px;height:42px;overflow:hidden;text-overflow:ellipsis;color:#fff;cursor:pointer;color:rgba(255,255,255,0.67)}.king-layout-main .king-flexible-nav .flexible-list li:hover{color:#fff}.king-layout-main .king-flexible-nav .flexible-list li:hover a{-webkit-transition:all .3s ease;transition:all .3s ease;color:#fff}.king-layout-main .king-flexible-nav .flexible-list li.king-selected-nav{background-color:#4A9BFF}.king-layout-main .king-flexible-nav .flexible-list li.king-selected-nav span{color:#fff}.king-layout-main .king-flexible-nav .flexible-list li.king-selected-nav a{color:#fff !important;opacity:1}.king-layout-main .king-flexible-nav .flexible-list span{margin-right:8px;-webkit-transition:all .3s ease;transition:all .3s ease}.king-layout-main .king-flexible-nav .flexible-list a{-webkit-transition:all .3s ease;transition:all .3s ease;color:rgba(255,255,255,0.67)}.king-layout-main .king-flexible-nav .king-layout-sider-trigger{position:absolute;text-align:center;width:100%;bottom:0;cursor:pointer;height:48px;line-height:48px;background:rgba(75,75,75,0.8);color:#fff}.king-layout-main .king-flexible-nav .king-layout-sider-trigger .open-icon{display:inline-block;width:22px;height:14px;background:url(./images/nav-min.png)}.king-layout-main .king-flexible-content{-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;height:100%}.king-layout-main .king-flexible-content .right-layout-main{height:100%;display:flex;flex-direction:column;-webkit-box-flex:1;flex:auto}.king-layout-main .king-flexible-content .right-layout-main .king-breadcrumb{margin:0 16px;margin:0 16px;-webkit-box-flex:0;flex:0 0 40px}.king-layout-main .king-flexible-content .right-layout-main .king-layout-footer{padding:8px 50px 24px;-webkit-box-flex:1;flex:0 0 50px}.king-layout-main .king-flexible-content .right-layout-content{-webkit-box-flex:1;flex:auto;overflow:auto;margin-bottom:16px}.king-layout-main .king-flexible-content .right-layout-content .right-content-main{padding:24px;background:#fff;min-height:360px;margin:0 16px}.king-layout-main .king-flexible-content .right-layout-header{background:#fff;padding:0px;height:64px;line-height:64px;-webkit-box-flex:1;flex:0 0 64px}.king-layout-main .king-flexible-content .right-layout-header .king-layout-sider-trigger{display:inline-block;padding:0 16px}.king-layout-main .king-flexible-content .right-layout-header .king-layout-sider-trigger span{cursor:pointer}.king-layout-main .king-flexible-content .right-layout-header .king-layout-sider-trigger .open-icon{display:inline-block;width:22px;height:14px;background:url(../images/nav-min.png)}.king-layout-main .king-flexible-content .right-layout-header .king-layout-sider-trigger .close-icon{display:inline-block;width:22px;height:14px;background:url(../images/nav-min.png);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.king-layout-footer{text-align:center;padding:24px 50px;color:rgba(0,0,0,0.65);font-size:12px;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.bk-panel .bk-panel-header:before,.bk-panel .bk-panel-footer:before,.bk-panel.bk-panel-title-btns .bk-panel-header:before,.bk-horz-nav:before,.bk-horz-nav11:before,.bk-tab2 .bk-tab2-head:before,.bk-tab2 .bk-tab2-head .bk-tab2-nav:before,.bk-panel .bk-panel-header:after,.bk-panel .bk-panel-footer:after,.bk-panel.bk-panel-title-btns .bk-panel-header:after,.bk-horz-nav:after,.bk-horz-nav11:after,.bk-tab2 .bk-tab2-head:after,.bk-tab2 .bk-tab2-head .bk-tab2-nav:after{content:'';display:table;line-height:0}.bk-panel .bk-panel-header:after,.bk-panel .bk-panel-footer:after,.bk-panel.bk-panel-title-btns .bk-panel-header:after,.bk-horz-nav:after,.bk-horz-nav11:after,.bk-tab2 .bk-tab2-head:after,.bk-tab2 .bk-tab2-head .bk-tab2-nav:after{clear:both}.bk-horz-nav1{min-height:45px;width:100%;height:45px;margin-bottom:0px;background-color:#333;line-height:45px;z-index:100}.bk-horz-nav1 .navbar-container{overflow:hidden}.bk-horz-nav1 .logo{height:30px;margin-top:8px}.bk-horz-nav1 .navbar-brand{width:216px;height:45px;padding:0 0 0 18px;border-right:1px solid #222222;line-height:45px;font-size:22px;color:#FFFFFF}.bk-horz-nav1 .navbar-brand h1{display:inline;margin:0px;padding:0px;font-size:22px;font-weight:400;line-height:inherit}.bk-horz-nav1 .fa-leaf{margin-right:6px;font-size:24px}.bk-horz-nav1 .img-rounded{width:30px;height:30px;border-radius:30px}.bk-horz-nav1 li a{padding:0 18px 0 15px;height:45px;line-height:45px;display:inline-block;color:#FFF}.bk-horz-nav1 .nav>li img{margin-right:6px}.bk-horz-nav1 .nav>li>a:hover,.bk-horz-nav1 .nav>li>a:focus{background-color:#191818}.bk-horz-nav1 .nav>li.active a{background-color:#191818}.bk-horz-nav1 .product-select{width:422px}.bk-horz-nav1 .product-select select{border-radius:2px}.bk-horz-nav1 .product-select .control-label{float:left;width:102px;color:#FFF;text-align:right}.bk-horz-nav1 .product-select .control-select{float:left;width:320px}.bk-horz-nav,.bk-horz-nav11{height:72px;line-height:72px;padding:0 15px 0 35px;background-color:#313b4c}.bk-horz-nav>*,.bk-horz-nav11>*{height:100%}.bk-horz-nav.bk-horz-nav-min,.bk-horz-nav11.bk-horz-nav-min{height:60px;line-height:60px}.bk-horz-nav.bk-horz-nav-min .bk-nav-links li>a,.bk-horz-nav11.bk-horz-nav-min .bk-nav-links li>a{line-height:60px}.bk-horz-nav.bk-horz-nav-min .bk-nav-links .bk-submenu,.bk-horz-nav11.bk-horz-nav-min .bk-nav-links .bk-submenu{top:60px}.bk-horz-nav .bk-nav-logo,.bk-horz-nav11 .bk-nav-logo{color:#fff;font-size:18px;float:left}.bk-horz-nav .bk-nav-logo>img,.bk-horz-nav11 .bk-nav-logo>img{vertical-align:middle;margin-right:15px;height:30px;margin-top:-5px}.bk-horz-nav .bk-nav-links,.bk-horz-nav11 .bk-nav-links{margin:0;padding:0;list-style:none;font-size:0;float:right}.bk-horz-nav .bk-nav-links>li,.bk-horz-nav11 .bk-nav-links>li{display:inline-block;font-size:14px}.bk-horz-nav .bk-nav-links>li:hover,.bk-horz-nav11 .bk-nav-links>li:hover{background-color:#283242}.bk-horz-nav .bk-nav-links>li:hover>a,.bk-horz-nav11 .bk-nav-links>li:hover>a{color:#bfcbda}.bk-horz-nav .bk-nav-links>li.active,.bk-horz-nav11 .bk-nav-links>li.active{background-color:#283242}.bk-horz-nav .bk-nav-links>li.active>a,.bk-horz-nav11 .bk-nav-links>li.active>a{color:#bfcbda}.bk-horz-nav .bk-nav-links>li.bk-has-submenu>a:after,.bk-horz-nav11 .bk-nav-links>li.bk-has-submenu>a:after{content:'';display:inline-block;margin-left:8px;vertical-align:middle;border-top:7px solid #8292a7;border-left:5px solid transparent;border-right:5px solid transparent}.bk-horz-nav .bk-nav-links>li>a,.bk-horz-nav11 .bk-nav-links>li>a{display:block;padding:0 22px;text-decoration:none;color:#8292a7;line-height:72px}.bk-horz-nav .bk-nav-links .bk-submenu,.bk-horz-nav11 .bk-nav-links .bk-submenu{top:72px;box-shadow:0 0 3px 1px rgba(60,60,60,0.3);z-index:10}.bk-horz-nav .bk-nav-links .bk-submenu>li,.bk-horz-nav11 .bk-nav-links .bk-submenu>li{border-bottom:1px solid #f3f3f3}.bk-horz-nav .bk-nav-links .bk-submenu>li:last-child,.bk-horz-nav11 .bk-nav-links .bk-submenu>li:last-child{border-bottom:none}.bk-horz-nav .bk-nav-links .bk-submenu>li>a,.bk-horz-nav11 .bk-nav-links .bk-submenu>li>a{display:block;height:45px;line-height:45px;text-align:center;text-decoration:none;font-size:14px;color:#666;background-color:#fff}.bk-horz-nav .bk-nav-links .bk-submenu>li>a:hover,.bk-horz-nav11 .bk-nav-links .bk-submenu>li>a:hover{background-color:#f3f3f3}.bk-horz-nav .bk-nav-user,.bk-horz-nav11 .bk-nav-user{float:right;padding-left:20px;padding-right:20px;color:#8292a7;cursor:pointer}.bk-horz-nav .bk-nav-user:hover,.bk-horz-nav11 .bk-nav-user:hover{color:#bfcbda}.bk-horz-nav .bk-nav-user>img,.bk-horz-nav11 .bk-nav-user>img{width:36px;height:36px;border-radius:50%;vertical-align:middle}.bk-has-submenu{position:relative}.bk-has-submenu:hover .bk-submenu{display:block}.bk-has-submenu .bk-submenu{display:none;position:absolute;z-index:10;width:100%;left:0;right:0;padding:0}.bk-has-submenu .bk-submenu>li{display:block}.bk-layout{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;overflow:auto;background:#f7f7f7}.bk-layout.bk-layout-has-sidebar{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.bk-layout.bk-layout-has-sidebar .bk-sidebar{float:left}.bk-sidebar{height:100%;background:#313541;color:#8691b7}.bk-sidebar a{text-decoration:none}.bk-sidebar .slide-switch{line-height:60px;padding:0 20px;text-align:right;border-bottom:1px solid #363b47;cursor:pointer}.bk-sidebar .slide-switch svg{width:22px}.bk-sidebar ul{margin:0;padding:0}.bk-sidebar a{color:#8691b7}.bk-sidebar .nav-list li{position:relative;z-index:100}.bk-sidebar .open>a{background:#2b2e39;border-left:4px solid #616ed6}.slide-close .slide-switch .bk-icon{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);display:inline-block}.bk-sidebar li:hover>a{border-left:4px solid #616ed6}.bk-sidebar li>a{display:block;height:60px;line-height:60px;padding:0 20px 0 30px;border-bottom:1px solid #363b47;border-left:4px solid transparent}.slide-open li>a,.slide-close li>a{padding:0}.nav-list .bk-icon{font-size:22px}.nav-list .icon-box{display:inline-block;width:55px;text-align:center}.slide-open li>a .icon-box{padding:0 4px 0 15px}.slide-close li>a .icon-box{padding:0}.nav-list .nav-name{position:absolute;left:60px;top:0;height:60px;padding-left:20px;border-bottom:1px solid #363b47;overflow:hidden}.copyright{text-align:center;position:absolute;left:20px;bottom:24px;font-size:10px;overflow:hidden}.slide-open .nav-list .nav-name{min-width:80px;opacity:1}.slide-close .nav-list .nav-name{width:0;opacity:0;visibility:hidden}.slide-close .copyright{left:-260px}.slide-close li:hover .nav-name{width:150px;opacity:1;visibility:visible;background:#2b2e39;text-indent:35px;padding-left:0}.slide-close li:hover .flex-subnavs{display:block !important}.slide-open{width:240px;overflow:hidden}.slide-close{width:60px}.slide-close .flex-subnavs{position:absolute;left:60px;top:60px;width:150px}.flex-subnavs a{display:block;height:42px;line-height:42px;font-size:14px;overflow:hidden}.flex-subnavs a.on,.flex-subnavs a:hover{color:#FFF}.flex-subnavs a.on i,.flex-subnavs a:hover i{border:2px solid #FFF}.flex-subnavs a i{display:inline-block;width:10px;height:10px;border:2px solid #8691b7;border-radius:50%;margin-right:10px;vertical-align:middle}.slide-close .flex-subnavs a{padding-left:20px;background:#2b2e39}.slide-open .flex-subnavs{display:none;padding-left:60px;background:#2b2e39}.slide-close .flex-subnavs{display:none}.bk-sidebar2{box-sizing:border-box;min-height:400px;margin:0;border:1px solid #eee}.bk-sidebar2 .sidebar-inner ul{text-align:left;padding:0;margin:0}.bk-sidebar2 .sidebar-inner ul li.first-menu{list-style-type:none;list-style:none;border:1px solid #eeeeee;margin-top:-1px;border-left:none;border-right:none;background:#fcfcfc}.bk-sidebar2 .sidebar-inner ul li.first-menu:hover>a{color:#57a3f1}.bk-sidebar2 .sidebar-inner ul li.first-menu>a{padding:0 25px;height:50px;line-height:50px;text-decoration:none;color:#979797;font-size:14px;transition:0.5s all;display:inline-block;width:100%;box-sizing:border-box}.bk-sidebar2 .sidebar-inner ul li.first-menu>a>i{padding-right:16px}.bk-sidebar2 .sidebar-inner ul li.first-menu>a.on{color:#57a3f1}.bk-sidebar2 .sidebar-inner ul li.first-menu .pull-right{float:right;-webkit-transition:-webkit-transform 0.5s all;-moz-transition:-moz-transform 0.5s all;-o-transition:-o-transform 0.5s all;-ms-transition:-ms-transform 0.5s all;transition:0.5s all}.bk-sidebar2 .sidebar-inner ul li.first-menu .rate{display:inline-block;-webkit-transform:rotateZ(180deg);-moz-transform:rotateZ(180deg);-o-transform:rotateZ(180deg);-ms-transform:rotateZ(180deg);transform:rotateZ(180deg)}.bk-sidebar2 .sidebar-inner ul li.first-menu i{font-size:25px;vertical-align:middle}.bk-sidebar2 .sidebar-inner ul li.first-menu i.angle{font-size:14px;font-weight:bold;cursor:pointer}.bk-sidebar2 .sidebar-inner ul.second-menu{background:#fff;display:none;padding:10px 0}.bk-sidebar2 .sidebar-inner ul.second-menu li{list-style-type:none;list-style:none;line-height:1}.bk-sidebar2 .sidebar-inner ul.second-menu li:hover a{color:#57a3f1;background:#f2f6fa}.bk-sidebar2 .sidebar-inner ul.second-menu a{text-decoration:none;padding-left:66px;color:#979797;font-size:14px;height:36px;line-height:36px;display:block}.bk-footer{padding:25px 0 30px 0;margin-top:20px;border-top:1px solid #e6e6e6;text-align:center;color:#666;font-size:12px}.bk-footer a{color:#666;text-decoration:none}.bk-footer .bk-footer-links li{display:inline-block;font-size:12px}.bk-footer .bk-footer-links li a:after{content:'|';padding:0 6px}.bk-footer .bk-footer-links li:last-child a:after{content:'';padding:0}.bk-tab{background:#fff;color:#8a8a8a;font-size:14px;width:100%;border:1px solid #eee;vertical-align:middle;box-sizing:border-box;overflow:hidden;border-radius:2px}.bk-tab .bk-tab-head{overflow:hidden;border-bottom:1px solid #eee;position:relative}.bk-tab .bk-tab-head .bk-tab-nav{float:left;position:relative;cursor:pointer;list-style:none;overflow:hidden;margin:0;padding:0}.bk-tab .bk-tab-head .bk-tab-nav>li{height:48px;line-height:48px;text-align:center;float:left;font-size:14px;padding:0 35px;border-right:1px solid #eee}.bk-tab .bk-tab-head .bk-tab-nav>li.active{background:#3c96ff;color:#fff;border:none}.bk-tab .bk-tab-head .bk-tab-act{position:absolute;right:20px;top:50%;transform:translateY(-50%)}.bk-tab .bk-tab-content .bk-tab-pane{display:none}.bk-tab .bk-tab-content .bk-tab-pane.active{display:block}.bk-panel .bk-panel-header:before,.bk-panel .bk-panel-footer:before,.bk-panel.bk-panel-title-btns .bk-panel-header:before,.bk-horz-nav:before,.bk-horz-nav11:before,.bk-tab2 .bk-tab2-head:before,.bk-tab2 .bk-tab2-head .bk-tab2-nav:before,.bk-panel .bk-panel-header:after,.bk-panel .bk-panel-footer:after,.bk-panel.bk-panel-title-btns .bk-panel-header:after,.bk-horz-nav:after,.bk-horz-nav11:after,.bk-tab2 .bk-tab2-head:after,.bk-tab2 .bk-tab2-head .bk-tab2-nav:after{content:'';display:table;line-height:0}.bk-panel .bk-panel-header:after,.bk-panel .bk-panel-footer:after,.bk-panel.bk-panel-title-btns .bk-panel-header:after,.bk-horz-nav:after,.bk-horz-nav11:after,.bk-tab2 .bk-tab2-head:after,.bk-tab2 .bk-tab2-head .bk-tab2-nav:after{clear:both}.bk-tab2{border:1px solid #c3cdd7;border-radius:2px;background:#fff}.bk-tab2 .bk-tab2-head{position:relative;border-bottom:1px solid #c3cdd7;height:58px}.bk-tab2 .bk-tab2-head.is-fill{background:#fafbfd}.bk-tab2 .bk-tab2-head.is-fill .bk-tab2-nav{width:100%}.bk-tab2 .bk-tab2-head.is-fill .bk-tab2-nav>li{border-left:1px solid #fafbfd;border-right:1px solid #fafbfd}.bk-tab2 .bk-tab2-head.is-fill .bk-tab2-nav>li.active{background:#fff;border-color:#c3cdd7}.bk-tab2 .bk-tab2-head.is-fill .bk-tab2-nav>li.active:first-child{border-left-color:#fff}.bk-tab2 .bk-tab2-head.is-fill .bk-tab2-nav>li.active::after{bottom:-1px;left:0;height:1px;background:#fff}.bk-tab2 .bk-tab2-head .bk-tab2-nav{float:left;list-style:none;margin:0;padding:0}.bk-tab2 .bk-tab2-head .bk-tab2-nav>li{position:relative;float:left;height:57px;line-height:57px;padding:0 20px;color:#737987;font-size:14px;cursor:pointer}.bk-tab2 .bk-tab2-head .bk-tab2-nav>li::after{content:'';display:inline-block;position:absolute;bottom:-1px;left:0;width:100%;opacity:0;height:0;background:#3c96ff}.bk-tab2 .bk-tab2-head .bk-tab2-nav>li.active{color:#3c96ff}.bk-tab2 .bk-tab2-head .bk-tab2-nav>li.active::after{opacity:1;height:3px}.bk-tab2 .bk-tab2-head .bk-tab2-act,.bk-tab2 .bk-tab2-head .bk-tab2-action{height:100%;display:table;position:absolute;right:20px}.bk-tab2 .bk-tab2-head .bk-tab2-act .action-wrapper,.bk-tab2 .bk-tab2-head .bk-tab2-action .action-wrapper{display:table-cell;vertical-align:middle}.bk-tab2.bk-tab2-small .bk-tab2-head{height:43px}.bk-tab2.bk-tab2-small .bk-tab2-head .bk-tab2-nav>li{height:42px;line-height:42px;padding:0 15px}.bk-tab2 .bk-tab2-content .bk-tab2-pane{display:none;opacity:0}.bk-tab2 .bk-tab2-content .bk-tab2-pane.active{opacity:1;display:block}.bk-tag{display:inline-block;background-color:#fafafa;color:#c3cdd7;font-size:12px;border:1px solid #c3cdd7;vertical-align:middle;box-sizing:border-box;overflow:hidden;border-radius:2px;white-space:nowrap;padding:0 9px;height:21px;line-height:19px}.bk-tag.is-round{border-radius:21px;padding:0 14px}.bk-tag.is-text{border-color:#fff;background-color:#fff}.bk-tag.is-fill{background-color:#c3cdd7;color:#fff}.bk-tag.bk-gray{background-color:#fafbfd;border-color:#ebf0f5;color:#c3cdd7}.bk-tag.bk-gray.is-fill{background-color:#ebf0f5;color:#c3cdd7}.bk-tag.bk-gray.is-text{border-color:#fff;background-color:#fff;color:#c3cdd7}.bk-tag.bk-light-gray{background-color:#e7edf2;border-color:#737987;color:#c3cdd7}.bk-tag.bk-light-gray.is-fill{background-color:#737987;color:#fff}.bk-tag.bk-light-gray.is-text{border-color:#fff;background-color:#fff;color:#c3cdd7}.bk-tag.bk-info{background-color:#6eb5fe;border-color:#88c3ff;color:#88c3ff}.bk-tag.bk-info.is-fill{background-color:#88c3ff;color:#fff}.bk-tag.bk-info.is-text{border-color:#fff;background-color:#fff;color:#88c3ff}.bk-tag.bk-danger{background-color:#ffe0e0;border-color:#ff5656;color:#ff5656}.bk-tag.bk-danger.is-fill{background-color:#ff5656;color:#fff}.bk-tag.bk-danger.is-text{border-color:#fff;background-color:#fff;color:#ff5656}.bk-tag.bk-warning{background-color:#fff3da;border-color:#ffb400;color:#ffb400}.bk-tag.bk-warning.is-fill{background-color:#ffb400;color:#fff}.bk-tag.bk-warning.is-text{border-color:#fff;background-color:#fff;color:#ffb400}.bk-tag.bk-success{background-color:#d5fde5;border-color:#30d878;color:#30d878}.bk-tag.bk-success.is-fill{background-color:#30d878;color:#fff}.bk-tag.bk-success.is-text{border-color:#fff;background-color:#fff;color:#30d878}.bk-tag.bk-primary{background-color:#e1f3ff;border-color:#3c96ff;color:#3c96ff}.bk-tag.bk-primary.is-fill{background-color:#3c96ff;color:#fff}.bk-tag.bk-primary.is-text{border-color:#fff;background-color:#fff;color:#3c96ff}.bk-tree{color:#737987;font-size:12px;line-height:32px;background-color:#fff}.bk-tree ul{padding:0;list-style:none;display:none}.bk-tree>ul{display:block}.bk-tree li{position:relative;margin-left:28px}.bk-tree a{color:#737987;text-decoration:none}.bk-tree a:hover{color:#3c96ff}.bk-tree .tree-content .folder::before{content:\"\";width:1px;height:100%;border-left:1px dashed #c3cdd7;position:absolute;left:7px;top:22px}.bk-tree .tree-content .folder:last-of-type::before{height:calc(100% - 37px)}.bk-tree .tree-content .folder.open>a .tree-icon{background-position:0 -23px}.bk-tree .tree-content .folder.open>ul{display:block}.bk-tree .tree-icon{display:inline-block;vertical-align:-2px;width:16px;height:16px;background:url(../images/tree-icon.jpg) no-repeat 0 0;margin-right:6px}.bk-tree .tree-secondary .file .tree-icon{background-position:0 -47px}.bk-tree .tree-secondary .file.open a{color:#3c96ff}.bk-tree .tree-secondary .file.open .tree-icon{background-position:0 -71px}.bk-tree .tree-secondary .folder::after,.bk-tree .tree-secondary .file::after{content:\"\";width:20px;height:1px;border-top:1px dashed #c3cdd7;position:absolute;left:-20px;top:16px}.bk-tree .tree-secondary .folder:before{height:calc(100% - 37px)}.bk-tree .tree-secondary .folder:last-of-type::before{border-left:1px dashed #c3cdd7}.bk-switcher{width:54px;height:28px;line-height:28px;position:relative;border-radius:50px;display:inline-block;vertical-align:middle;transition:all .4s ease;background-color:#c3cdd7}.bk-switcher:after{left:2px;top:2px;content:\"\";height:24px;width:24px;border-radius:100px;display:block;transition:all .3s ease;position:absolute;cursor:pointer;background:#fff;box-shadow:0 0 3px rgba(0,0,0,0.2)}.bk-switcher .switcher-label{width:30px;height:28px;font-size:12px;color:#fff;transition:all ease 0.3s;font-weight:normal;display:none;margin:0 0 0 26px;text-align:center;vertical-align:top}.bk-switcher .switcher-label .on-text{display:none}.bk-switcher .switcher-label .off-text{display:inline-block}.bk-switcher.bk-switcher-small .switcher-label{margin-left:25px}.bk-switcher.show-label{width:61px}.bk-switcher.show-label .switcher-label{display:inline-block}.bk-switcher.is-disabled{cursor:default;background-color:#eee !important}.bk-switcher.is-disabled input[type=checkbox]{cursor:not-allowed}.bk-switcher.is-checked{background:#30d878}.bk-switcher.is-checked:after{left:100%;top:2px;margin-left:-26px}.bk-switcher.is-checked .switcher-label{margin-left:4px}.bk-switcher.is-checked .switcher-label .on-text{display:inline-block}.bk-switcher.is-checked .switcher-label .off-text{display:none}.bk-switcher.bk-switcher-outline{background:#fff;border:1px solid #c3cdd7}.bk-switcher.bk-switcher-outline:after{width:22px;height:22px;box-shadow:none;background-color:#c3cdd7}.bk-switcher.bk-switcher-outline .switcher-label{height:26px;color:#c3cdd7;margin-left:24px}.bk-switcher.bk-switcher-outline.is-checked{border:1px solid #30d878}.bk-switcher.bk-switcher-outline.is-checked:after{margin-left:-24px;background-color:#30d878}.bk-switcher.bk-switcher-outline.is-checked .switcher-label{color:#30d878;margin-left:4px}.bk-switcher.bk-switcher-outline.is-disabled{background-color:#fff !important;border-color:#eee !important}.bk-switcher.bk-switcher-outline.is-disabled .switcher-label{color:#eee}.bk-switcher.bk-switcher-outline.is-disabled:after{background-color:#eee}.bk-switcher.bk-switcher-outline.bk-switcher-small:after{width:18px;height:18px}.bk-switcher.bk-switcher-outline.bk-switcher-small.is-checked:after{margin-left:-20px}.bk-switcher.bk-switcher-square{border-radius:2px}.bk-switcher.bk-switcher-square:after{border-radius:2px}.bk-switcher.bk-switcher-square .switcher-label{width:35px}.bk-switcher.bk-switcher-small{width:44px;height:24px;line-height:22px}.bk-switcher.bk-switcher-small .switcher-label{font-size:12px;display:none !important}.bk-switcher.bk-switcher-small:after{width:20px;height:20px}.bk-switcher.bk-switcher-small.is-checked:after{left:100%;top:2px;margin-left:-22px}.bk-switcher input[type=checkbox],.bk-switcher input[type=radio]{opacity:0;width:100%;height:100%;position:absolute;z-index:1;cursor:pointer;left:0;top:0;margin:0}.bk-selector{position:relative;width:100%}.bk-selector .bk-form-checkbox{padding:0}.bk-selector .no-search-result{font-size:12px;padding:10px}.bk-selector ul,.bk-selector li{margin:0;padding:0}.bk-selector.open{border-color:#3c96ff}.bk-selector.open .bk-selector-icon{transform:rotate(180deg)}.bk-selector-wrapper{position:relative;width:100%}.bk-selector-input{width:100%;height:36px;line-height:36px;padding:0 10px;border:1px solid #c3cdd7;border-radius:2px;font-size:14px;color:#666;outline:none;box-shadow:none;cursor:pointer;transition:border linear .2s}.bk-selector-input:hover:not([disabled=\"disabled\"]){border-color:#0082ff}.bk-selector-input:hover+.bk-icon{color:#3c96ff}.bk-selector-input.placeholder{color:#c3cdd7}.bk-selector-input.active{border-color:#0082ff !important}.bk-selector-input.active+.bk-icon{color:#3c96ff}.bk-selector-input[disabled=\"disabled\"]{color:#aaa;cursor:not-allowed;background:#fafafa}.bk-selector-icon{position:absolute;top:12px;right:10px;font-size:12px;transition:all linear .2s;cursor:pointer}.bk-selector-icon.clear-icon{top:10px;right:7px;width:18px;height:18px;line-height:18px;border-radius:50%;background-color:#ddd;color:#fff;text-align:center;font-size:12px;transition:backgroundColor linear .2s}.bk-selector-icon.clear-icon:hover{background-color:#ccc}.bk-selector-icon.clear-icon:before{display:block;transform:scale(0.7)}.bk-selector .bk-selector-list{position:absolute;top:40px;left:0;right:0;box-shadow:0 0 1px 1px rgba(0,0,0,0.1);background-color:#fff;z-index:100;overflow-y:hidden}.bk-selector .bk-selector-list>ul{max-height:160px;padding:0;margin:0;list-style:none;overflow-y:auto}.bk-selector .bk-selector-list>ul::-webkit-scrollbar{width:6px;height:5px}.bk-selector .bk-selector-list>ul::-webkit-scrollbar-thumb{border-radius:20px;background:#a5a5a5;-webkit-box-shadow:inset 0 0 6px rgba(204,204,204,0.3)}.bk-selector .bk-selector-node{position:relative;width:100%;border-left:#c3cdd7;border-right:#c3cdd7;background-color:#fff;cursor:pointer}.bk-selector .bk-selector-node.bk-selector-sub-node{padding-left:10px}.bk-selector .bk-selector-node:hover,.bk-selector .bk-selector-node.bk-selector-selected{background-color:#eef6fe;color:#3c96ff}.bk-selector .bk-selector-node:hover .bk-selector-tools,.bk-selector .bk-selector-node.bk-selector-selected .bk-selector-tools{display:block}.bk-selector .bk-selector-node .text{padding:0 10px;line-height:42px;font-size:14px}.bk-selector .bk-selector-node .bk-selector-tools{position:absolute;display:none;top:10px;right:0;font-size:12px}.bk-selector .bk-selector-node .bk-selector-tools .bk-selector-list-icon{margin-right:14px}.bk-selector-create-item{cursor:pointer;height:42px;line-height:42px;font-size:14px;background:#fafbfd;padding-left:10px;border-top:1px solid #e5e5e5}.bk-selector-create-item .text{font-style:normal;text-align:left;color:#737987}.bk-selector-multi-label{display:block;line-height:42px;cursor:pointer}.bk-selector-search-item{position:relative;border-bottom:1px solid #e5e5e5;cursor:default;padding:5px}.bk-selector-search-item:hover{color:#666;background-color:#fff}.bk-selector-search-item>.bk-icon{position:absolute;right:14px;top:5px;height:30px;line-height:30px;color:#ccc}.bk-selector-search-item>input{width:100%;height:32px;line-height:32px;padding:10px;font-size:14px;box-shadow:none;outline:none;background-color:#fafbfd;border:1px solid #dde4eb;border-radius:2px;color:#737987}.bk-selector .bk-selector-group-name{height:40px;line-height:40px;background:#fafbfd;padding-left:10px;font-weight:bold;font-size:14px;color:#737987;border-bottom:1px solid #dde4eb;border-top:1px solid #dde4eb}.bk-selector .bk-selector-list-item:first-child .bk-selector-group-name{border-top:none}.bk-dropdown{position:relative;width:100%}.bk-dropdown .bk-form-checkbox{padding:0}.bk-dropdown.open{border-color:#3c96ff}.bk-dropdown.open .bk-dropdown-icon{transform:rotate(180deg)}.bk-dropdown-icon{cursor:pointer}.bk-dropdown-wrapper{position:relative;width:100%}.bk-dropdown-selector,.bk-dropdown-input{width:100%;height:36px;line-height:36px;padding:0 10px;border:1px solid #ccc;border-radius:2px;font-size:14px;color:#737987;outline:none;box-shadow:none;cursor:pointer;transition:border linear .2s}.bk-dropdown-selector:hover:not([disabled=\"disabled\"]),.bk-dropdown-input:hover:not([disabled=\"disabled\"]){border-color:#0082ff}.bk-dropdown-selector.placeholder,.bk-dropdown-input.placeholder{color:#ccc}.bk-dropdown-selector.active,.bk-dropdown-input.active{border-color:#0082ff !important}.bk-dropdown-selector[disabled=\"disabled\"],.bk-dropdown-input[disabled=\"disabled\"]{color:#aaa;cursor:not-allowed;background:#fafafa}.bk-dropdown-icon{position:absolute;top:13px;right:10px;font-size:12px;color:#d3d3d3;transition:transform linear .2s}.bk-dropdown-icon.clear-icon{top:10px;right:7px;width:18px;height:18px;line-height:18px;border-radius:50%;background-color:#ddd;color:#fff;text-align:center;font-size:12px;transition:backgroundColor linear .2s}.bk-dropdown-icon.clear-icon:hover{background-color:#ccc}.bk-dropdown-icon.clear-icon:before{display:block;transform:scale(0.7)}.bk-dropdown .bk-dropdown-list{position:absolute;top:40px;left:0;right:0;box-shadow:0 0 1px 1px rgba(0,0,0,0.1);z-index:100;max-height:160px;overflow-y:auto}.bk-dropdown .bk-dropdown-list::-webkit-scrollbar{width:6px;height:5px}.bk-dropdown .bk-dropdown-list::-webkit-scrollbar-thumb{border-radius:20px;background:#a5a5a5;-webkit-box-shadow:inset 0 0 6px rgba(204,204,204,0.3)}.bk-dropdown .bk-dropdown-list ul{padding:0;margin:0;list-style:none}.bk-dropdown .bk-dropdown-list-item{position:relative;width:100%;border-left:#c3cdd7;border-right:#c3cdd7;background-color:#fff;cursor:pointer}.bk-dropdown .bk-dropdown-list-item:first-child{border-top:#c3cdd7}.bk-dropdown .bk-dropdown-list-item:last-child{border-bottom:#c3cdd7}.bk-dropdown .bk-dropdown-list-item:hover,.bk-dropdown .bk-dropdown-list-item.bk-dropdown-selected{background-color:#eef6fe}.bk-dropdown .bk-dropdown-list-item:hover .bk-dropdown-tools,.bk-dropdown .bk-dropdown-list-item.bk-dropdown-selected .bk-dropdown-tools{display:block}.bk-dropdown .bk-dropdown-list-item .text{padding:0 10px;line-height:42px;font-size:14px}.bk-dropdown .bk-dropdown-list-item .bk-dropdown-tools{position:absolute;display:none;top:10px;right:0;font-size:12px}.bk-dropdown .bk-dropdown-list-item .bk-dropdown-tools .bk-selector-list-icon{margin-right:14px}.bk-dropdown-create-item .text{text-align:left;color:#eef6fe}.bk-dropdown-create-item .text:hover{color:#fff}.bk-dropdown-multi-label{display:block;line-height:42px;cursor:pointer}.bk-dropdown-search-item{position:relative;border-bottom:1px solid #e5e5e5;cursor:default;height:32px}.bk-dropdown-search-item:hover{color:#666;background-color:#fff}.bk-dropdown-search-item>i{position:absolute;left:10px;top:0;height:30px;line-height:30px;color:#ccc}.bk-dropdown-search-item>input{position:absolute;top:0;right:0;bottom:0;left:30px;width:calc(100% - 30px);height:30px;padding:10px;font-size:14px;border:none;box-shadow:none;outline:none;background-color:#fff;color:#737987}.bk-select{position:relative;width:100%}.bk-select.open .bk-select-input{border-color:#0082ff}.bk-select.open .bk-select-icon{transform:rotate(180deg);color:#0082ff}.bk-select.multiple .bk-select-list-item,.bk-select.multiple .bk-select-list-item.selected{background-color:transparent;color:#737987}.bk-select.multiple .bk-select-list-item:hover,.bk-select.multiple .bk-select-list-item.selected:hover{background-color:#eef6fe;color:#737987}.bk-select-wrapper{position:relative;width:100%}.bk-select-input{width:100%;height:36px;line-height:36px;padding:0 10px;border:1px solid #c3cdd7;border-radius:2px;font-size:14px;color:#666;outline:none;box-shadow:none;cursor:pointer;transition:border linear .2s}.bk-select-input:hover:not([disabled=\"disabled\"]){border-color:#0082ff}.bk-select-input:hover+.bk-icon{color:#3c96ff}.bk-select-input.placeholder{color:#c3cdd7}.bk-select-input.active{border-color:#0082ff !important}.bk-select-input.active+.bk-icon{color:#3c96ff}.bk-select-input[disabled=\"disabled\"]{color:#aaa;cursor:not-allowed;background:#fafafa}.bk-select-icon{position:absolute;top:12px;right:10px;font-size:12px;transition:all linear .2s;cursor:pointer}.bk-select-list{position:absolute;top:40px;left:0;right:0;width:100%;box-shadow:0 0 1px 1px rgba(0,0,0,0.1);background-color:#fff;z-index:100;overflow-y:hidden}.bk-select-list .bk-select-list-item{position:relative;width:100%;height:42px;padding:10px 12px;line-height:1.5;border-left:#c3cdd7;border-right:#c3cdd7;background-color:#fff;cursor:pointer;font-size:14px}.bk-select-list .bk-select-list-item:hover,.bk-select-list .bk-select-list-item.selected{background-color:#eef6fe;color:#3c96ff}.bk-select-list .bk-select-list-item.disabled{color:#aaa;cursor:not-allowed;background:#fafafa}.bk-select-list>ul{max-height:210px;overflow-y:auto}.bk-select-list>ul::-webkit-scrollbar{width:6px;height:5px}.bk-select-list>ul::-webkit-scrollbar-thumb{border-radius:20px;background:#a5a5a5;-webkit-box-shadow:inset 0 0 6px rgba(204,204,204,0.3)}.bk-select-list-filter{position:relative;border-bottom:1px solid #c3cdd7;cursor:default;padding:5px}.bk-select-list-filter .bk-select-filter-input{width:100%;height:32px;line-height:32px;padding:10px 30px 10px 10px;font-size:14px;box-shadow:none;outline:none;background-color:#fafbfd;border:1px solid #dde4eb;border-radius:2px;color:#737987}.bk-select-list-filter .bk-icon{position:absolute;top:50%;right:14px;transform:translateY(-50%);color:#ccc}.bk-select-group .bk-select-list-item{padding-left:20px}.bk-select .bk-select-group-name{height:40px;line-height:1.5;background-color:#fafbfd;padding:8px 10px;font-weight:bold;font-size:14px;color:#737987;border-bottom:1px solid #dde4eb;border-top:1px solid #dde4eb}.bk-select ul{margin:0;padding:0}.bk-select li{list-style:none}.bk-select .bk-form-checkbox{padding:0;margin:0}.bk-dropdown-menu{display:inline-block;position:relative}.bk-dropdown-menu .bk-dropdown-trigger .bk-icon{transition:all ease 0.2s}.bk-dropdown-menu .bk-dropdown-trigger .bk-icon.icon-flip{transform:rotate(180deg)}.bk-dropdown-menu .bk-dropdown-content{min-width:100%;height:auto;background:#fff;padding:0;margin:0;position:absolute;z-index:50;border-radius:2px;border:1px solid #c3cdd7;box-sizing:border-box;opacity:0;transition:all ease 0.3s;box-shadow:0 2px 6px rgba(51,60,72,0.1);display:none}.bk-dropdown-menu .bk-dropdown-content.is-show{opacity:1;display:inline-block;overflow:auto;height:auto}.bk-dropdown-menu .bk-dropdown-content.left-align{left:0}.bk-dropdown-menu .bk-dropdown-content.right-align{right:0}.bk-dropdown-menu .bk-dropdown-content.center-align{left:50%;transform:translateX(-50%)}.bk-dropdown-menu .bk-dropdown-list{width:100%;max-height:166px;list-style:none;padding:0;margin:0}.bk-dropdown-menu .bk-dropdown-list::-webkit-scrollbar{width:4px;height:4px}.bk-dropdown-menu .bk-dropdown-list::-webkit-scrollbar-thumb{border-radius:20px;background:#dde4eb;-webkit-box-shadow:inset 0 0 6px rgba(204,204,204,0.3)}.bk-dropdown-menu .bk-dropdown-list>li a{display:block;line-height:41px;padding:0 15px;color:#737987;font-size:14px;text-decoration:none;white-space:nowrap}.bk-dropdown-menu .bk-dropdown-list>li a:hover{background:#ebf4ff;color:#3c96ff}.bk-dropdown-menu .bk-dropdown-list>li .bk-icon{margin-right:5px}.bk-dialog{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;background-color:rgba(0,0,0,0.6);z-index:2000;font-family:\"Microsoft YaHei\",Helvetica,Arial,sans-serif}.bk-dialog-wrapper{display:table;width:100%;height:100%}.bk-dialog-position{display:table-cell;vertical-align:middle}.bk-dialog-style{position:relative;width:400px;margin:0 auto;background-color:#fff;border-radius:2px;box-shadow:0 0 7px 3px rgba(0,0,0,0.1)}.bk-dialog-tool{position:absolute;top:0;right:0}.bk-dialog-tool .bk-dialog-mark{cursor:pointer}.bk-dialog .bk-dialog-close{display:block;width:27px;height:27px;line-height:27px;text-align:center;margin:4px 4px 0 0;border-radius:50%;background-repeat:no-repeat;background-size:11px 11px;background-position:50% 50%;cursor:pointer;display:inline-block}.bk-dialog .bk-dialog-close:hover{background-color:#f3f3f3}.bk-dialog .bk-dialog-mark{display:block;width:27px;height:27px;line-height:27px;margin:4px 4px 0 0;border-radius:50%;text-align:center;font-size:12px;color:#4c4c4c}.bk-dialog .bk-dialog-mark:hover{background-color:#f3f3f3}.bk-dialog-header{padding:40px 30px 10px;color:#333;font-size:22px}.bk-dialog-header .bk-dialog-title{margin:0}.bk-dialog-body{padding:15px 65px;color:#666;font-size:14px;line-height:1.5}.bk-dialog-footer{text-align:center;padding:20px 65px 40px}.bk-dialog-footer.bk-d-footer{height:60px;line-height:60px;padding:0;border-top:1px solid #e5e5e5;background-color:#fafafa}.bk-dialog-footer .bk-dialog-outer{padding:0 10px 0 0;text-align:right}.bk-dialog-footer .bk-dialog-outer button{width:72px;height:36px;line-height:34px;min-width:72px;margin-right:10px;margin-top:12px}.bk-dialog-footer .bk-dialog-outer button.bk-dialog-btn-cancel{margin-left:0;background-color:#fff}.bk-dialog-title{text-align:center;font-size:22px;color:#333}.bk-dialog-subtitle{color:#666}.bk-dialog-default-status{padding:40px 0}.bk-dialog-default-status.bk-dialog-warning-body{padding-bottom:15px}.bk-dialog-default-status.bk-dialog-warning{padding-bottom:35px}.bk-dialog-default-status ~ .bk-dialog-footer{padding-top:0}.bk-dialog-default-status .bk-dialog-mark{display:block;margin:0 auto}.bk-dialog-default-status .bk-dialog-mark.bk-dialog-loading{width:58px;height:58px;line-height:58px;font-size:30px;border-radius:50%;animation:loading linear 1s infinite}.bk-dialog-default-status .bk-dialog-mark.bk-dialog-warning,.bk-dialog-default-status .bk-dialog-mark.bk-dialog-error,.bk-dialog-default-status .bk-dialog-mark.bk-dialog-success{width:58px;height:58px;line-height:58px;font-size:30px;color:#fff;border-radius:50%}.bk-dialog-default-status .bk-dialog-mark.bk-dialog-warning{background-color:#ffc200}.bk-dialog-default-status .bk-dialog-mark.bk-dialog-error{background-color:#ff5454}.bk-dialog-default-status .bk-dialog-mark.bk-dialog-success{background-color:#5bd18a}.bk-dialog-default-status .bk-dialog-title{margin:20px 20px 0 20px}.bk-dialog-default-status .bk-dialog-subtitle{margin:16px 20px 0 20px}.bk-dialog-error-text{color:#ff7979}.bk-dialog-primary-text{color:#6793ee}.bk-dialog-btn{width:110px;height:36px;box-shadow:none;outline:none;border-radius:2px;background-color:#fff;font-size:14px;border:1px solid #c3cdd7;cursor:pointer;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.bk-dialog-btn:hover{background-color:#fafafa;opacity:1}.bk-dialog-btn:active{background-color:#eee;opacity:1}.bk-dialog-btn.bk-btn-info{color:#fff;background-color:#88c3ff;border-color:#88c3ff}.bk-dialog-btn.bk-btn-info:hover{background-color:#7ab9fa;border-color:#7ab9fa}.bk-dialog-btn.bk-btn-info:active{background-color:#6eb5fe;border-color:#6eb5fe}.bk-dialog-btn.bk-btn-primary{color:#fff;background-color:#3c96ff;border-color:#3c96ff}.bk-dialog-btn.bk-btn-primary:hover{background-color:#0082ff;border-color:#0082ff}.bk-dialog-btn.bk-btn-primary:active{background-color:#0978e2;border-color:#0978e2}.bk-dialog-btn.bk-btn-danger{color:#fff;background-color:#ff5656;border-color:#ff5656}.bk-dialog-btn.bk-btn-danger:hover{background-color:#f72239;border-color:#f72239}.bk-dialog-btn.bk-btn-danger:active{background-color:#cb2537;border-color:#cb2537}.bk-dialog-btn.bk-btn-success{color:#fff;background-color:#30d878;border-color:#30d878}.bk-dialog-btn.bk-btn-success:hover{background-color:#00c873;border-color:#00c873}.bk-dialog-btn.bk-btn-success:active{background-color:#00ae64;border-color:#00ae64}.bk-dialog-btn.bk-btn-warning{color:#fff;background-color:#ffb400;border-color:#ffb400}.bk-dialog-btn.bk-btn-warning:hover{background-color:#ff9600;border-color:#ff9600}.bk-dialog-btn.bk-btn-warning:active{background-color:#e38601;border-color:#e38601}.bk-dialog-btn-confirm{margin-right:10px;color:#fff}.bk-dialog-btn-cancel{margin-left:10px;color:#666}.bk-dialog-row{text-align:center}.bk-dialog h1{margin:0;padding:0;font-weight:normal}.bk-dialog h2{margin:0;padding:0;font-weight:normal}.bk-dialog h3{margin:0;padding:0;font-weight:normal}.bk-dialog h4{margin:0;padding:0;font-weight:normal}.bk-dialog h5{margin:0;padding:0;font-weight:normal}.bk-dialog h6{margin:0;padding:0;font-weight:normal}.bk-dialog p{margin:0}.bk-dialog a{text-decoration:none}.bk-dialog .hidden{display:none}@keyframes loading{from{transform:rotate(0)}to{transform:rotate(360deg)}}.bk-number{display:inline-block}.bk-number .bk-number-content{color:#666;background-color:#fff;border-radius:2px;width:300px;box-sizing:border-box;border:1px solid #c3cdd7;padding:0  10px;font-size:14px;text-align:left;vertical-align:middle}.bk-number .bk-number-content.disabled{background:#fafafa}.bk-number .bk-number-content.disabled .bk-number-input{color:#ccc}.bk-number .bk-number-content.disabled .bk-number-icon-content{cursor:not-allowed}.bk-number .bk-number-content.bk-number-larger{height:36px;line-height:36px}.bk-number .bk-number-content.bk-number-larger .bk-number-icon-content{margin-top:3px !important}.bk-number .bk-number-content.bk-number-small{height:32px;line-height:32px}.bk-number .bk-number-content.bk-number-small .bk-number-icon-content{margin-top:1px !important}.bk-number .bk-number-content .bk-number-input{width:94%;-moz-appearance:textfield;border:none;outline:none;background:none;height:100%}.bk-number .bk-number-content input::-webkit-outer-spin-button,.bk-number .bk-number-content input::-webkit-inner-spin-button{-webkit-appearance:none !important;margin:0}.bk-number .bk-number-content .bk-number-icon-content{line-height:1;cursor:pointer}.bk-number .bk-number-content .bk-number-icon-content i{font-size:12px;font-weight:bold;color:#c3cdd7}.bk-sideslider-show{overflow-y:hidden !important}.bk-sideslider-show body{overflow-y:hidden !important}.bk-sideslider-show.has-sideslider-padding{padding-right:17px !important}.bk-sideslider{position:fixed;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,0.6);z-index:1500;transition:all linear .2s}.bk-sideslider-wrapper{position:absolute;top:0;bottom:0;padding-bottom:20px;background-color:#fff;transition:all linear .2s;overflow-y:auto}.bk-sideslider-wrapper.left{left:0}.bk-sideslider-wrapper.right{right:0}.bk-sideslider-header{width:100%;height:60px}.bk-sideslider-header:before,.bk-sideslider-header:after{content:'';display:table;line-height:0}.bk-sideslider-header:after{clear:both}.bk-sideslider-closer{width:30px;height:60px;line-height:60px;background-color:#ff6666;text-align:center;color:#fff;cursor:pointer}.bk-sideslider-closer span{display:block;margin-top:22px}.bk-sideslider-title{height:60px;line-height:60px;border-bottom:1px solid #e6e6e6;font-size:16px;font-weight:bold;color:#666}.bk-exception{text-align:center;width:400px;margin:50px auto 0}.bk-exception .exception-text{font-size:20px;color:#979797;margin:32px 0;font-weight:normal}.bk-exception.bk-exception-center{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);-webkit-transform:translate(-50%, -50%);-o-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);margin:0}html,body{margin:0;padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=\"button\"],input[type=\"reset\"],input[type=\"submit\"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=\"checkbox\"],input[type=\"radio\"]{box-sizing:border-box;padding:0}input[type=\"number\"]::-webkit-inner-spin-button,input[type=\"number\"]::-webkit-outer-spin-button{height:auto}::-ms-clear,::-ms-reveal{display:none}input[type=\"text\"]::-ms-clear{display:none}input[type=\"text\"]::-ms-reveal{display:none}input[type=\"search\"]{-webkit-appearance:textfield;box-sizing:content-box}input[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}.bk-timeline>ul{list-style:none;padding-left:6px}.bk-timeline .bk-timeline-dot{position:relative;border-left:2px solid #57a3f1;padding-left:14px;padding-bottom:25px;font-size:0}.bk-timeline .bk-timeline-dot::before{content:'';display:inline-block;width:8px;height:8px;background:#fff;border:2px solid #5ba5f1;border-radius:50%;position:absolute;top:0;left:-7px}.bk-timeline .bk-timeline-dot .bk-timeline-time{font-size:12px;color:#999999;padding-bottom:10px;display:inline-block;margin-top:-2px}.bk-timeline .bk-timeline-dot .bk-timeline-content{font-size:14px;color:#666666}.bk-timeline .bk-timeline-dot:last-child::after{content:'';display:inline-block;width:8px;height:8px;background:#fff;border:2px solid #5ba5f1;border-radius:100%;position:absolute;bottom:0;left:-7px}.bk-message{z-index:2500;position:fixed;top:3px;left:50%;padding:0 35px 0 10px;transform:translateX(-50%);transition:all linear .2s;min-width:240px;min-height:42px;border:1px solid #fff;border-radius:3px;background-color:#fff;box-shadow:0px 2px 4px rgba(0,0,0,0.1)}.bk-message:before,.bk-message:after{content:'';display:table;line-height:0}.bk-message:after{clear:both}.bk-message-icon{float:left;width:20px;height:20px;line-height:22px;margin:10px 10px 0 0;text-align:center;font-size:12px;border-radius:50%}.bk-message-content{float:left;min-height:42px;padding:14px 0;line-height:1;font-size:14px;font-weight:bold}.bk-message-close{position:absolute;right:3px;top:9px;width:26px;height:26px;cursor:pointer;font-size:14px;text-align:center;line-height:26px}.bk-message.error{background-color:#fbdddd;border-color:#ffcdcd}.bk-message.error .bk-message-icon{background-color:#ff5656;color:#fbdddd}.bk-message.error .bk-message-content{color:#ff5656}.bk-message.error .bk-message-close{color:#f5a1a1}.bk-message.warning{background-color:#ffeeca;border-color:#ffe4ae}.bk-message.warning .bk-message-icon{background-color:#ffb400;color:#ffeeca}.bk-message.warning .bk-message-content{color:#ffb400}.bk-message.warning .bk-message-close{color:#ffca5d}.bk-message.success{background-color:#d5fde5;border-color:#bff3d4}.bk-message.success .bk-message-icon{background-color:#30d878;color:#d5fde5}.bk-message.success .bk-message-content{color:#30d878}.bk-message.success .bk-message-close{color:#98e7b8}.bk-message.primary{background-color:#e1f3ff;border-color:#bfdfff}.bk-message.primary .bk-message-icon{color:#3c96ff;font-size:16px;margin-top:13px}.bk-message.primary .bk-message-content{color:#3c96ff}.bk-message.primary .bk-message-close{color:#8ec3f7}.bk-message.dom-version{top:-50px}.bk-tooltips{position:absolute}.bk-tooltips-wrapper{padding:6px 12px;background-color:#333;border:1px solid #000;border-radius:3px;color:#fff;line-height:1.5;font-size:12px;font-weight:normal}.bk-tooltips-wrapper span{display:inline-block}.bk-tooltips-wrapper a{padding:6px 18px;display:inline-block;border-right:solid 1px #000000;cursor:pointer}.bk-tooltips-wrapper a:last-child{border-right:none}.bk-tooltips-wrapper a:hover{background-color:#000000}.bk-tooltips-default{padding:0}.bk-tooltips-arrow{position:absolute;display:block;width:10px;height:12px}.bk-tooltips-arrow:before{content:'';position:absolute;top:-1px;left:3px;border-right:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;z-index:20}.bk-tooltips-arrow:after{content:'';position:absolute;top:-3px;left:2px;border-right:8px solid #000;border-top:9px solid transparent;border-bottom:9px solid transparent;z-index:10}.bk-tooltips.top .bk-tooltips-arrow{bottom:-10px;left:50%;transform:translateX(-50%) rotate(270deg)}.bk-tooltips.right .bk-tooltips-arrow{top:50%;left:-9px;transform:translateY(-50%)}.bk-tooltips.bottom .bk-tooltips-arrow{top:-10px;left:50%;transform:translateX(-50%) rotate(90deg)}.bk-tooltips.left .bk-tooltips-arrow{top:50%;left:calc(100% - 1px);transform:translateY(-50%) rotate(180deg)}.bk-mark-show{width:160px;height:75px;border:1px solid #c3cdd7;border-radius:2px;position:relative;margin-right:20px;display:inline-block}.bk-mark{font-size:12px;color:#fff;position:absolute;top:10px;left:-1px;padding:4px 8px;background:#c3cdd7;border-radius:0 2px 2px 0;-o-border-radius:0 2px 2px 0;-ms-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;-moz-border-radius:0 2px 2px 0}.bk-mark.bk-success{background:#30d878}.bk-mark.bk-warning{background:#ffb400}.bk-mark.bk-danger{background:#ff5656}.bk-mark.bk-primary{background:#3c96ff}.bk-mark-corner{width:46px;height:46px;position:absolute;right:-2px;top:-2px;border-radius:0px 2px 0 0;-o-border-radius:0px 2px 0 0;-ms-border-radius:0px 2px 0 0;-webkit-border-radius:0px 2px 0 0;-moz-border-radius:0px 2px 0 0;font-size:12px;color:#fff}.bk-mark-corner:before{content:\"\";width:0px;height:0;border:23px solid;position:absolute;left:0;top:0;border-color:#c3cdd7 #c3cdd7 transparent transparent}.bk-mark-corner p{margin:0;transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);position:absolute;right:-6px;top:7px;width:40px;text-align:center;height:16px;overflow:hidden}.bk-mark-corner.bk-mark-left{left:-2px;border-radius:2px 0 0 0;-o-border-radius:2px 0 0 0;-ms-border-radius:2px 0 0 0;-webkit-border-radius:2px 0 0 0;-moz-border-radius:2px 0 0 0}.bk-mark-corner.bk-mark-left:before{border-color:#c3cdd7 transparent transparent #c3cdd7}.bk-mark-corner.bk-mark-left p{left:-6px;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg)}.bk-mark-corner.bk-mark-left.bk-success:before{border-color:#30d878 transparent transparent #30d878}.bk-mark-corner.bk-mark-left.bk-warning:before{border-color:#ffb400 transparent transparent #ffb400}.bk-mark-corner.bk-mark-left.bk-danger:before{border-color:#ff5656 transparent transparent #ff5656}.bk-mark-corner.bk-mark-left.bk-primary:before{border-color:#3c96ff transparent transparent #3c96ff}.bk-mark-corner.bk-success:before{border-color:#30d878 #30d878 transparent transparent}.bk-mark-corner.bk-warning:before{border-color:#ffb400 #ffb400 transparent transparent}.bk-mark-corner.bk-danger:before{border-color:#ff5656 #ff5656 transparent transparent}.bk-mark-corner.bk-primary:before{border-color:#3c96ff #3c96ff transparent transparent}.bk-process{display:flex;position:relative}.bk-process .bk-process-toggle{position:absolute;right:0;top:0;width:24px;height:24px;line-height:24px;border-radius:50%;text-align:center;border:1px solid #c3cdd7;font-size:12px;color:#737987;text-decoration:none}.bk-process .bk-process-toggle.active,.bk-process .bk-process-toggle:hover{color:#fff;background:#3c96ff;border-color:#3c96ff}.bk-process>ul{display:table;width:100%;display:flex;-ms-display:flex;-moz-display:flex;-webkit-display:flex;margin:auto;padding:0}.bk-process li{background:#dde4eb;display:table-cell;flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1;text-align:center;height:24px;line-height:24px;position:relative;font-size:12px;color:#737987}.bk-process li i{display:none}.bk-process li:first-of-type{border-radius:13px 0 0 13px}.bk-process li:last-of-type{border-radius:0 13px 13px 0}.bk-process li:last-of-type::before{display:none}.bk-process li:last-of-type::after{display:none}.bk-process li::before{content:\"\";width:0;height:0;border:12px solid;border-color:transparent transparent transparent #fff;position:absolute;right:-25px;top:0;z-index:1}.bk-process li::after{content:\"\";width:0;height:0;border:12px solid;border-color:transparent transparent transparent #dde4eb;position:absolute;right:-23px;top:0;z-index:1}.bk-process li .bk-process-step{display:none;color:#737987;font-size:12px}.bk-process li .bk-process-step dd{margin:0;line-height:32px}.bk-process li .bk-process-step i{display:none}.bk-process li .bk-process-step .success i{display:inline-block;color:#30d878}.bk-process li.bk-process-success{background:#30d878;color:#fff}.bk-process li.bk-process-success::after{border-color:transparent transparent transparent #30d878}.bk-process li.bk-process-success .bk-process-step i{color:#30d878}.bk-process li.bk-process-success i{display:inline-block}.bk-process li.bk-process-current{background:#3c96ff;color:#fff}.bk-process li.bk-process-current::after{border-color:transparent transparent transparent #3c96ff}.bk-process li.bk-process-current>.bk-spin-loading{vertical-align:-3px}html,body{margin:0;padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=\"button\"],input[type=\"reset\"],input[type=\"submit\"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=\"checkbox\"],input[type=\"radio\"]{box-sizing:border-box;padding:0}input[type=\"number\"]::-webkit-inner-spin-button,input[type=\"number\"]::-webkit-outer-spin-button{height:auto}::-ms-clear,::-ms-reveal{display:none}input[type=\"text\"]::-ms-clear{display:none}input[type=\"text\"]::-ms-reveal{display:none}input[type=\"search\"]{-webkit-appearance:textfield;box-sizing:content-box}input[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}.bk-toolbox{text-align:center;display:inline-block;position:relative}.bk-toolbox-icon{position:relative;cursor:pointer}.bk-toolbox-wrapper{visibility:hidden;position:absolute;top:-40px;left:0;border:1px solid #000;border-radius:3px}.bk-toolbox-wrapper .bk-toolbox-inner{position:relative;display:flex}.bk-toolbox-wrapper .bk-toolbox-inner a{padding:0 16px;color:#ffffff;background-color:#323233;line-height:30px;display:inline-block;border-right:1px solid #000;text-decoration:none;white-space:nowrap;flex:1;font-size:12px;font-weight:normal}.bk-toolbox-wrapper .bk-toolbox-inner a:last-child{border-right:none}.bk-toolbox-wrapper .bk-toolbox-inner a:hover{background-color:#000000}.bk-toolbox-wrapper:after{content:\"\";position:absolute;left:50%;top:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #333}.bk-toolbox.is-show .bk-toolbox-wrapper{visibility:visible}.bk-date{width:260px;height:36px;border-radius:2px;position:relative;cursor:pointer}.bk-date input[name=\"date-select\"]{display:block;width:100%;height:36px;border:1px solid #c3cdd7;line-height:36px;font-size:14px;outline:none;border-radius:2px;padding:0 36px 0 10px;color:#999;cursor:pointer}.bk-date input[name=\"date-select\"]:focus{border:1px solid #3c96ff}.bk-date input[disabled]{background:#fafafa;color:#CCC;cursor:not-allowed}.bk-date input::-webkit-input-placeholder{color:#c3cdd7}.bk-date:after{content:'';width:36px;height:36px;position:absolute;right:0;top:0;border-left:1px solid #c3cdd7;background:url(\"../images/date/bk-date-icon.png\") no-repeat center center;cursor:pointer}.bk-date .date-dropdown-panel{position:absolute;width:100%;left:0;top:38px;border:1px solid #c3cdd7;-webkit-box-shadow:0 3px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 3px 10px rgba(0,0,0,0.1);-ms-box-shadow:0 3px 10px rgba(0,0,0,0.1);box-shadow:0 3px 10px rgba(0,0,0,0.1);border-radius:2px;background:#FFF;padding:15px 16px 0 16px;cursor:default}.bk-date .date-dropdown-panel.has-sidebar{min-width:660px}.bk-date .date-range-view{background:#ebf4ff}.bk-date .daterange-dropdown-panel{min-width:522px;padding:0}.bk-date .date-top-bar{text-align:center;line-height:16px}.bk-date .date-top-bar span{display:inline-block;vertical-align:middle}.bk-date .date-top-bar .current-date{font-size:14px;color:#737987;font-weight:bold}.bk-date .date-top-bar .year-switch-icon{width:16px;height:16px;margin-top:2px;cursor:pointer}.bk-date .date-top-bar .year-switch-icon:before{content:'';float:left;width:8px;height:16px;background:url(\"../images/date/switch-icon.png\") no-repeat center center}.bk-date .date-top-bar .year-switch-icon:after{content:'';float:left;width:8px;height:16px;background:url(\"../images/date/switch-icon.png\") no-repeat center center}.bk-date .date-top-bar .year-switch-icon:hover:before{background:url(\"../images/date/switch-icon-on.png\") no-repeat center center}.bk-date .date-top-bar .year-switch-icon:hover:after{background:url(\"../images/date/switch-icon-on.png\") no-repeat center center}.bk-date .date-top-bar .month-switch-icon{width:8px;height:16px;background:url(\"../images/date/switch-icon.png\") no-repeat center center;margin-top:2px;cursor:pointer}.bk-date .date-top-bar .month-switch-icon:hover{background:url(\"../images/date/switch-icon-on.png\") no-repeat center center}.bk-date .date-top-bar .next-year,.bk-date .date-top-bar .next-month{transform:rotate(180deg)}.bk-date .date-top-bar .next-month,.bk-date .date-top-bar .pre-year{margin-right:12px}.bk-date .date-select-panel{margin:16px 0}.bk-date .date-select-panel dl{font-size:0;letter-spacing:-5px}.bk-date .date-select-panel dl .date-item-view,.bk-date .date-select-panel dl .date-table-item{display:inline-block;width:32px;height:32px;font-size:12px;color:#737987;text-align:center;line-height:32px;letter-spacing:0}.bk-date .date-select-panel dl .date-disable-item{color:#c3cdd7;cursor:not-allowed}.bk-date .date-select-panel dl .date-table-item:hover,.bk-date .date-select-panel dl .date-table-item.selected{background:#3c96ff;color:#FFF;cursor:pointer}.bk-date .date-select-panel dl .date-range-view{background:#ebf4ff}.bk-date .date-select-panel dl .today{color:#3c96ff}.bk-date .date-select-panel dl dd{display:inline-block;margin:0}.bk-date .time-set-panel{height:40px;background:#fafbfd;border-top:1px solid #c3cdd7;margin:0 -16px;font-size:0;letter-spacing:-5px}.bk-date .time-set-panel .time-item{display:inline-block;font-size:14px;line-height:40px;letter-spacing:0;color:#737987;width:33.333%;border-left:1px solid #c3cdd7;padding:0 8px 0 18px}.bk-date .time-set-panel .time-item:first-child{border-left:0}.bk-date .time-set-panel .time-item input::-webkit-outer-spin-button,.bk-date .time-set-panel .time-item input::-webkit-inner-spin-button{-webkit-appearance:none}.bk-date .time-set-panel .time-item input[type=\"number\"]{width:30px;-moz-appearance:textfield;border:none;outline:none;background:none}.bk-date .time-set-panel .time-option{margin-top:8px}.bk-date .time-set-panel i{display:block;width:10px;height:6px;background:url(\"../images/date/time-icon.png\");cursor:pointer}.bk-date .time-set-panel i:hover{background:url(\"../images/date/time-icon-on.png\")}.bk-date .time-set-panel i.up{margin-bottom:10px}.bk-date .time-set-panel i.down{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.bk-date .date-select-container{width:260px;height:auto;padding:15px 16px 0 16px;border-right:1px solid #dde4eb}.bk-date .date-select-container:last-child{border-right:none}.bk-date .range-config{width:138px;padding:6px 0}.bk-date .range-config a{display:block;font-size:14px;color:#737987;text-decoration:none;line-height:16px;padding:8px 16px}.bk-date .range-config a.active{background:#ebf4ff}.bk-date .range-config a:hover{color:#3c96ff}.bk-date .range-action{padding:6px 0}.bk-date .range-action a{display:inline-block;font-size:14px;color:#3c96ff;text-decoration:none;line-height:16px;padding:8px 0 8px 16px}.bk-date .range-action a.active{background:#ebf4ff}.bk-date .range-action a:hover{color:#3c96ff}body{font-family:\"Microsoft Yahei\";color:#737987}\n"
  },
  {
    "path": "paas-ce/paas/login/static/css/layout_head.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.head .inner {\n\t*zoom:1;\n\theight:60px\n}\n.head .inner:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.head .inner.wrp {\n\twidth:1200px;\n\tmargin-left:auto;\n\tmargin-right:auto\n}\n.head_box {\n\tposition:relative;\n\tbackground-color:#fff;\n\tborder-top:4px solid #44b549;\n\tborder-bottom:1px solid #d9dadc\n}\n.icon_subscribe_label {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 0 no-repeat;\n\twidth:38px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_service_label {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -24px no-repeat;\n\twidth:38px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_verify_label {\n\twidth:37px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_verify_label.fail {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -48px no-repeat\n}\n.icon_verify_label.success {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -72px no-repeat\n}\n.icon_inbox {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -96px no-repeat;\n\twidth:20px;\n\theight:15px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_dot_notices {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -121px no-repeat;\n\twidth:10px;\n\theight:10px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.account {\n\tfloat:right;\n\tpadding-top:10px\n}\n.account_meta {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tvertical-align:bottom\n}\n.account_faq {\n\tpadding-top:18px\n}\n.account {\n\tfont-size:0\n}\n.account_meta {\n\tfont-size:14px\n}\n.account_meta_primary a {\n\tcolor:#222\n}\n.account_meta_primary a:hover {\n\tcolor:#459ae9\n}\n.account_info {\n\tposition:relative;\n\tmargin-right:8px;\n}\n.account_info .avatar {\n\twidth:38px;\n\theight:38px;\n\tbackground-color:#f0f0f0;\n\tborder-radius: 50%;\n}\n.account_info .type_wrp {\n\tposition:absolute;\n\ttop:2px;\n\tleft:0\n}\n.account_info .type_wrp .type {\n\tvertical-align:top\n}\n.account_info .nickname {\n\tdisplay:inline-block;\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-top:6px;\n\tfloat: right;\n\tmargin-left: 5px;\n\tcolor: #555;\n}\n.account_info .crown {\n    position: absolute;\n    width: 12px;\n    height: 11px;\n    display: inline-block;\n    background: url(../img/crown.png);\n    top: -5px;\n    left: 23px;\n}\n.account_inbox {\n\tposition:relative;\n\tfont-size:11px;\n\tz-index:1;\n\ttop:2px\n}\n.account_inbox .icon_inbox {\n\tmargin-left:3px\n}\n.account_inbox .icon_dot_notices {\n\tmargin-top:-14px;\n\tmargin-left:-10px;\n\t*margin-top:-11px\n}\n.account_inbox.on .account_inbox_switch {\n\tposition:relative;\n\tz-index:1;\n\tborder-color:#d9dadc;\n\tbackground-color:#fff\n}\n.account_inbox_switch {\n\tdisplay:block;\n\twidth:35px;\n\theight:28px;\n\tline-height:28px;\n\ttext-align:center;\n\tborder:1px solid transparent;\n\tborder-bottom-width:0\n}\n.account_inbox_switch:hover {\n\ttext-decoration:none\n}\n.account_inbox_switch i.icon_common {\n\tcursor:pointer;\n\tvertical-align:top;\n\tmargin-top:16px\n}\n.account_inbox_switch i.inbox {\n\t*margin-top:6px\n}\n.account_inbox_switch i.notices {\n\t*margin-top:6px;\n\tmargin-left:-12px\n}\n.account_message_box {\n\tposition:absolute;\n\ttop:100%;\n\tright:0;\n\tmargin-top:-1px;\n\tpadding:16px 0;\n\tborder:1px solid #d9dadc;\n\tbackground-color:#fff\n}\n.account_message_box ul {\n\twidth:190px\n}\n.account_message_box li {\n\tmin-height:32px\n}\n.account_message_link {\n\tposition:relative;\n\tdisplay:block;\n\tline-height:32px;\n\tpadding-left:18px\n}\n.account_message_link strong {\n\tdisplay:block;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tmargin-right:18px;\n\tfont-weight:400;\n\tfont-style:normal;\n\tcursor:pointer\n}\n.account_message_link .read_more {\n\tposition:absolute;\n\tright:1em;\n\ttop:0;\n\tcolor:#459ae9;\n\tcursor:pointer\n}\n.account_message_link:hover {\n\tbackground-color:#eee;\n\ttext-decoration:none\n}\n.account .account_message_link {\n\tcolor:#8d8d8d\n}\n.btn.btn_inbox_closed {\n\tdisplay:block;\n\tmargin:10px 18px 0;\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\twidth:auto;\n\tpadding-left:0;\n\tpadding-right:0;\n\tfont-size:11px\n}\n.btn.btn_inbox_closed button {\n\tcolor:#222\n}\n.btn.btn_inbox_closed:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.btn.btn_inbox_closed:hover button {\n\tcolor:#222\n}\n.btn.btn_inbox_closed:hover {\n\tcolor:#222\n}\n.account_logout{\n\tfloat: right;\n}\n.account_logout a {\n\tdisplay:inline-block;\n\tmargin-left:5px;\n\tpadding-left:14px;\n\tline-height:16px;\n\tmargin-top:10px;\n\tpadding-left:14px;\n\tborder-left:1px solid #e7e7eb\n}\n.account_faq a {\n\tdisplay:inline-block\n}\n.logo_qcloud, .logo_tencent, .logo_bk{\n\tfloat:left;\n\tpadding-top:10px;\n}\n\n/*qcloud*/\n.logo_qcloud a {\n\tdisplay:block;\n\twidth: 378px;\n\theight:40px;\n\toverflow:hidden;\n\ttext-decoration:none;\n\t*background:transparent url(\"../img/logo/bg_logo.png\") 0 0 no-repeat;\n\t*line-height:120px\n}\n.logo_qcloud a:before {\n\tdisplay:inline-block;\n\tcontent:url(\"../img/logo/bg_logo.png\")\n}\n\n/*tencent*/\n\n.logo_tencent a {\n\tdisplay:block;\n\twidth:278px;\n\theight:40px;\n\toverflow:hidden;\n\ttext-decoration:none;\n\t*background:transparent url(\"../img/logo/bg_logo.png\") 0 0 no-repeat;\n\t*line-height:120px\n}\n.logo_tencent a:before {\n\tdisplay:inline-block;\n\tcontent:url(\"../img/logo/bg_logo.png\")\n}\n\n/*消息提示*/\n.head_notice_box{\n\tdisplay: inline-block;\n\twidth: 60px;\n\tfont-size: 18px;\n\tcolor: #555;\n\ttext-align: center;\n\tposition: relative;\n\toverflow: hidden;\n\tmargin-top: -5px;\n}\n.head_notice_box a{\n\tcolor: #999;\n}\n.head_notice_box a:hover{\n\tcolor: #459ae9;\n}\n.head_notice_box .icon_dot_notices{\n    height: 11px;\n    width: 11px;\n    overflow: hidden;\n    position: absolute;\n    right: 16px;\n    top: 3px;\n    background: url(../img/icon_dots.png) no-repeat center center;\n}\n.head_notice_box .notice_num{\n\tbackground-color: #f86868;\n    border-radius: 50%;\n    color: #fff;\n    font-size: 8px;\n    height: 18px;\n    line-height: 18px;\n    overflow: hidden;\n    position: absolute;\n    right: 9px;\n    text-align: center;\n    top: 0;\n    width: 18px;\n    font-family: arial;\n}\n.body.page_index{\n\tmin-height:calc(100% - 170px) \n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/css/login.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n* {\n  box-sizing: border-box; }\n\nbody,\ndiv,\ndl,\ndt,\ndd,\nul,\nol,\nli,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ni,\npre,\nform,\nfieldset,\ninput,\nblockquote,\nth,\ntd,\np,\nspan,\nbutton,\ntextarea,\nb {\n  margin: 0;\n  padding: 0; }\n\nhtml, body {\n  font-size: 14px;\n  font-family: \"Microsoft YaHei\";\n  height: 100%;\n  position: relative; }\n\na {\n  text-decoration: none;\n  -webkit-transition: all .5s;\n  -moz-transition: all .5s;\n  -ms-transition: all .5s;\n  transition: all .5s; }\n\nbutton {\n  text-decoration: none;\n  -webkit-transition: all .5s;\n  -moz-transition: all .5s;\n  -ms-transition: all .5s;\n  transition: all .5s; }\n\na:hover {\n  text-decoration: none; }\n\nul,\nol,\nli {\n  list-style: none; }\n\nh1, h2, h3, h4, h5, h6 {\n  font-weight: normal; }\n\ninput::-webkit-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\ninput:-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\ninput::-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\ninput:-ms-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\n\ntextarea::-webkit-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\ntextarea:-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\ntextarea::-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\ntextarea:-ms-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7; }\n\n.pb110 {\n  padding-bottom: 110px; }\n\n.clearfix:before,\n.clearfix:after {\n  content: \"\";\n  display: table; }\n\n.clearfix:after {\n  clear: both; }\n\n.clearfix {\n  *zoom: 1; }\n\n.hide {\n  display: none !important;\n  visibility: hidden; }\n\ninput[type=number] {\n  -moz-appearance: textfield; }\n\ninput, select {\n  background: none; }\n\ninput[disabled] {\n  background: none; }\n\ninput[type=number]::-webkit-inner-spin-button,\ninput[type=number]::-webkit-outer-spin-button {\n  -webkit-appearance: none;\n  margin: 0; }\n\n.page-content {\n  height: 100%;\n  width: 100%;\n  position: relative;\n  background: url(../img/logo/bg.png) no-repeat center;\n  margin: 0 auto;\n  background-size: 100% 100%; }\n  .page-content .login-from {\n    width: 400px;\n    min-height: 400px;\n    border-radius: 2px;\n    position: absolute;\n    top: 17%;\n    left: 50%;\n    margin-left: -200px;\n    z-index: 100;\n    overflow: hidden; }\n    .page-content .login-from .logo-title {\n      width: 100%;\n      height: 121px;\n      border-radius: 2px 2px 0px 0px;\n      background: #313b4c;\n      text-align: center;\n      line-height: 121px; }\n      .page-content .login-from .logo-title img {\n        vertical-align: middle; }\n    .page-content .login-from .from-detail {\n      position: relative;\n      background: #fff;\n      height: 279px; }\n      .page-content .login-from .from-detail .is-danger-tip {\n        position: absolute;\n        color: #ff5656;\n        top: 25px;\n        left: 55px;\n        padding-right: 55px;\n        padding-bottom: 5px;\n        font-size: 12px; }\n        .page-content .login-from .from-detail .is-danger-tip .icon-exclamation-circle-shape {\n          margin-right: 10px; }\n    .page-content .login-from .form-login {\n      width: 100%;\n      padding: 58px 55px 0 56px; }\n      .page-content .login-from .form-login.is-danger .group-control i {\n        color: #ff5656; }\n      .page-content .login-from .form-login.is-danger .group-control input {\n        border-color: #ff5656;\n        color: #ff5656; }\n        .page-content .login-from .form-login.is-danger .group-control input:focus {\n          border-color: #ff5656; }\n        .page-content .login-from .form-login.is-danger .group-control input::-webkit-input-placeholder {\n          color: #ff5656; }\n        .page-content .login-from .form-login.is-danger .group-control input:-moz-placeholder {\n          color: #ff5656; }\n        .page-content .login-from .form-login.is-danger .group-control input::-moz-placeholder {\n          color: #ff5656; }\n        .page-content .login-from .form-login.is-danger .group-control input:-ms-input-placeholder {\n          color: #ff5656; }\n      .page-content .login-from .form-login.certificate-expired .group-control i {\n        color: #cad3dc; }\n      .page-content .login-from .form-login.certificate-expired .group-control input {\n        border-color: #dde4eb;\n        color: #cad3dc; }\n        .page-content .login-from .form-login.certificate-expired .group-control input:focus {\n          border-color: #ff5656; }\n        .page-content .login-from .form-login.certificate-expired .group-control input::-webkit-input-placeholder {\n          color: #cad3dc; }\n        .page-content .login-from .form-login.certificate-expired .group-control input:-moz-placeholder {\n          color: #cad3dc; }\n        .page-content .login-from .form-login.certificate-expired .group-control input::-moz-placeholder {\n          color: #cad3dc; }\n        .page-content .login-from .form-login.certificate-expired .group-control input:-ms-input-placeholder {\n          color: #cad3dc; }\n      .page-content .login-from .form-login.certificate-expired .btn-content .login-btn {\n        background: #313b4c;\n        cursor: not-allowed; }\n        .page-content .login-from .form-login.certificate-expired .btn-content .login-btn:hover {\n          background: #344157; }\n      .page-content .login-from .form-login .group-control {\n        width: 289px;\n        height: 37px;\n        border-radius: 2px;\n        position: relative; }\n        .page-content .login-from .form-login .group-control i {\n          position: absolute;\n          font-size: 16px;\n          top: 11px;\n          left: 14px;\n          color: #aaaaaa; }\n        .page-content .login-from .form-login .group-control + .group-control {\n          margin-top: 15px; }\n        .page-content .login-from .form-login .group-control input {\n          width: 100%;\n          height: 100%;\n          outline: none;\n          border: solid 1px #eaeaea;\n          padding: 0 20px 0 40px;\n          color: #737987;\n          border-radius: 2px; }\n          .page-content .login-from .form-login .group-control input:focus {\n            border-color: #3c96ff; }\n          .page-content .login-from .form-login .group-control input::-webkit-input-placeholder {\n            color: #aaa; }\n          .page-content .login-from .form-login .group-control input:-moz-placeholder {\n            color: #aaa; }\n          .page-content .login-from .form-login .group-control input::-moz-placeholder {\n            color: #aaa; }\n          .page-content .login-from .form-login .group-control input:-ms-input-placeholder {\n            color: #aaa; }\n      .page-content .login-from .form-login .btn-content {\n        font-size: 0;\n        padding-top: 30px; }\n        .page-content .login-from .form-login .btn-content .login-btn {\n          width: 160px;\n          height: 42px;\n          display: inline-block;\n          background-color: #344157;\n          border-radius: 2px;\n          outline: none;\n          border: none;\n          font-size: 16px;\n          line-height: 18px;\n          letter-spacing: 0px;\n          color: #ffffff;\n          cursor: pointer;\n          float: left; }\n          .page-content .login-from .form-login .btn-content .login-btn:hover {\n            background: #2e3b4f; }\n        .page-content .login-from .form-login .btn-content .protocol-btn {\n          font-size: 14px;\n          line-height: 0;\n          letter-spacing: 0px;\n          color: #5c7ac6;\n          display: inline-block;\n          margin-left: 42px;\n          cursor: pointer;\n          margin-top: 21px;\n          float: right; }\n          .page-content .login-from .form-login .btn-content .protocol-btn:hover {\n            color: #526eb5; }\n\n.footer {\n  width: 100%;\n  position: absolute;\n  bottom: 3%;\n  color: #bfcbd7;\n  font-size: 12px;\n  text-align: center; }\n  .footer .logo-qt {\n    margin-bottom: 10px; }\n  .footer .logo-qt .img-logo {\n    position: relative;\n    top: 4px;\n    margin-right: 8px; }\n  .footer a {\n    color: #bfcbd7;\n    margin: 0 5px; }\n  .footer a:hover {\n    color: #fff; }\n  .footer .follow-us {\n    position: relative; }\n  .footer .follow-us:hover .qr-box {\n    display: inline-block;\n    padding-bottom: 20px; }\n  .footer .qr-box {\n    display: none;\n    left: -25px;\n    top: -110px; }\n  .footer .qr {\n    padding: 4px;\n    border: 1px solid #e4e4e4;\n    background: #fff;\n    display: inline-block; }\n  .footer .qr-caret {\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top: 7px solid #fff;\n    top: 101px;\n    left: 42px;\n    position: absolute; }\n  .footer .follow-us:hover .qr-box {\n    display: inline-block; }\n  .footer a:hover {\n    color: #fff; }\n  .footer .qr-box {\n    position: absolute;\n    top: 0;\n    margin-top: -118px; }\n\n.protocol-pop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: none;\n  z-index: 101; }\n  .protocol-pop .protocol-detail {\n    width: 1200px;\n    height: 700px;\n    background-color: #ffffff;\n    border-radius: 2px;\n    top: 10%;\n    left: 50%;\n    margin-left: -600px;\n    position: absolute;\n    padding: 59px 23px 40px 37px; }\n    .protocol-pop .protocol-detail .del-text {\n      position: absolute;\n      top: 0;\n      right: 0;\n      width: 27px;\n      height: 27px;\n      line-height: 26px;\n      border-radius: 50%;\n      text-align: center;\n      margin: 4px 4px 0 0;\n      background-repeat: no-repeat;\n      background-size: 11px 11px;\n      background-position: 50% 50%;\n      cursor: pointer;\n      display: inline-block; }\n      .protocol-pop .protocol-detail .del-text:hover {\n        background-color: #f3f3f3; }\n      .protocol-pop .protocol-detail .del-text > i {\n        font-size: 10px;\n        color: #50525f;\n        font-weight: bold; }\n    .protocol-pop .protocol-detail .detail-content {\n      height: 536px;\n      overflow-y: auto; }\n      .protocol-pop .protocol-detail .detail-content::-webkit-scrollbar {\n        width: 6px;\n        height: 5px; }\n        .protocol-pop .protocol-detail .detail-content::-webkit-scrollbar-thumb {\n          border-radius: 20px;\n          background: #a5a5a5;\n          box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3); }\n      .protocol-pop .protocol-detail .detail-content > .title {\n        text-align: center;\n        font-size: 32px;\n        font-weight: normal;\n        font-stretch: normal;\n        line-height: 36px;\n        letter-spacing: 1px;\n        color: #4f515e;\n        position: relative;\n        margin-bottom: 67px; }\n        .protocol-pop .protocol-detail .detail-content > .title:after {\n          content: '';\n          position: absolute;\n          width: 30px;\n          height: 2px;\n          background: #5c7ac6;\n          top: 46px;\n          left: 50%;\n          margin-left: -15px; }\n      .protocol-pop .protocol-detail .detail-content .detail-list {\n        padding-right: 23px; }\n        .protocol-pop .protocol-detail .detail-content .detail-list > .title {\n          font-weight: bold; }\n        .protocol-pop .protocol-detail .detail-content .detail-list P {\n          text-align: left;\n          font-size: 12px;\n          line-height: 32px;\n          letter-spacing: 0;\n          color: #7b7d8a; }\n    .protocol-pop .protocol-detail .consent-content {\n      text-align: center;\n      margin-top: 25px; }\n      .protocol-pop .protocol-detail .consent-content .consent-btn {\n        width: 160px;\n        height: 42px;\n        display: inline-block;\n        background-color: #5c7ac6;\n        border-radius: 2px;\n        border: none;\n        font-size: 16px;\n        font-weight: normal;\n        font-stretch: normal;\n        line-height: 18px;\n        letter-spacing: 0px;\n        color: #ffffff; }\n        .protocol-pop .protocol-detail .consent-content .consent-btn:hover {\n          background: #526eb5; }\n\n.error-message-content {\n  position: fixed;\n  top: 0;\n  width: 100%;\n  height: 40px;\n  line-height: 40px;\n  text-align: center;\n  display: none; }\n  .error-message-content i {\n    cursor: pointer; }\n  .error-message-content.is-chrome {\n    background: #f8f6db; }\n  .error-message-content.is-certificate {\n    background: #fbd9d9;\n    color: #ff5656; }\n  .error-message-content span {\n    color: #ff5656;\n    display: inline-block;\n    margin-right: 20px; }\n  .error-message-content i {\n    color: #ff5656;\n    display: inline-block; }\n\n\n\n/*# sourceMappingURL=login.css.map */\n"
  },
  {
    "path": "paas-ce/paas/login/static/css/login2106031748.min.css.bak",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\na,\na:hover,\nbutton {\n  text-decoration: none;\n}\n.page-content,\nbody,\nhtml {\n  height: 100%;\n  position: relative;\n}\n* {\n  box-sizing: border-box;\n}\nb,\nblockquote,\nbody,\nbutton,\ndd,\ndiv,\ndl,\ndt,\nfieldset,\nform,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ni,\ninput,\nli,\nol,\np,\npre,\nspan,\ntd,\ntextarea,\nth,\nul {\n  margin: 0;\n  padding: 0;\n}\nbody,\nhtml {\n  font-size: 14px;\n  font-family: \"Microsoft YaHei\";\n}\na,\nbutton {\n  -webkit-transition: all 0.5s;\n  -moz-transition: all 0.5s;\n  -ms-transition: all 0.5s;\n  transition: all 0.5s;\n}\nli,\nol,\nul {\n  list-style: none;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-weight: 400;\n}\ninput::-webkit-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ninput:-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ninput::-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ninput:-ms-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ntextarea::-webkit-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ntextarea:-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ntextarea::-moz-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\ntextarea:-ms-input-placeholder {\n  font-family: \"Microsoft YaHei\";\n  color: #c3cdd7;\n}\n.pb110 {\n  padding-bottom: 110px;\n}\n.clearfix:after,\n.clearfix:before {\n  content: \"\";\n  display: table;\n}\n.clearfix:after {\n  clear: both;\n}\n.hide {\n  display: none !important;\n  visibility: hidden;\n}\ninput[type=\"number\"] {\n  -moz-appearance: textfield;\n}\ninput,\ninput[disabled],\nselect {\n  background: 0 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  -webkit-appearance: none;\n  margin: 0;\n}\n.page-content {\n  width: 100%;\n  /*background: url(../img/bg_image.jpg) center no-repeat;*/\n  background: #E2F6EE;\n  margin: 0 auto;\n  background-size: 100% 100%;\n}\n.page-content .header{\n    width: 100%;\n    height: 70px;\n    background-color: #fff;\ndisplay: flex;\nalign-items: center;\n}\n.page-content .header .logo{\nmargin-left: 200px;   \n \n}\n.page-content .left-img{\n    margin-top: 150px;\n    margin-left: 180px;\n}\n.page-content .login-from {\n  width: 380px;\n  min-height: 400px;\n  border-radius: 5px;\n  position: absolute;\n  top: 17%;\n  left: 55%;\n  /* margin-left: -200px; */\n  z-index: 100;\n  overflow: hidden;\n}\n.page-content .login-from .logo-title {\n  width: 100%;\n  height: 110px;\n  border-radius: 2px 2px 0 0;\n  /* background: #313b4c; */\n  background-color: #fff;\n  text-align: center;\n  font-size: 30px;\n  line-height: 121px;\n}\n.page-content .login-from .logo-title img {\n  vertical-align: middle;\n}\n.page-content .login-from .from-detail {\n  position: relative;\n  background: #fff;\n  height: 279px;\n}\n.page-content .login-from .from-detail .is-danger-tip {\n  position: absolute;\n  color: #ff5656;\n  top: 25px;\n  left: 55px;\n  font-size: 12px;\n}\n.page-content\n  .login-from\n  .from-detail\n  .is-danger-tip\n  .icon-exclamation-circle-shape {\n  margin-right: 10px;\n}\n.page-content .login-from .form-login {\n  width: 100%;\n  padding: 58px 55px 0 56px;\n}\n.page-content .login-from .form-login.is-danger .group-control i {\n  color: #ff5656;\n}\n.page-content .login-from .form-login.is-danger .group-control input {\n  border-color: #ff5656;\n  color: #ff5656;\n}\n.page-content .login-from .form-login.is-danger .group-control input:focus {\n  border-color: #ff5656;\n}\n.page-content\n  .login-from\n  .form-login.is-danger\n  .group-control\n  input::-webkit-input-placeholder {\n  color: #ff5656;\n}\n.page-content\n  .login-from\n  .form-login.is-danger\n  .group-control\n  input:-moz-placeholder {\n  color: #ff5656;\n}\n.page-content\n  .login-from\n  .form-login.is-danger\n  .group-control\n  input::-moz-placeholder {\n  color: #ff5656;\n}\n.page-content\n  .login-from\n  .form-login.is-danger\n  .group-control\n  input:-ms-input-placeholder {\n  color: #ff5656;\n}\n.page-content .login-from .form-login.certificate-expired .group-control i {\n  color: #cad3dc;\n}\n.page-content .login-from .form-login.certificate-expired .group-control input {\n  border-color: #dde4eb;\n  color: #cad3dc;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .group-control\n  input:focus {\n  border-color: #ff5656;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .group-control\n  input::-webkit-input-placeholder {\n  color: #cad3dc;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .group-control\n  input:-moz-placeholder {\n  color: #cad3dc;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .group-control\n  input::-moz-placeholder {\n  color: #cad3dc;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .group-control\n  input:-ms-input-placeholder {\n  color: #cad3dc;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .btn-content\n  .login-btn {\n  background: #00BC6A;\n  cursor: not-allowed;\n}\n.page-content\n  .login-from\n  .form-login.certificate-expired\n  .btn-content\n  .login-btn:hover {\n  background: #00BC6A;\n}\n.page-content .login-from .form-login .group-control {\n  width: 289px;\n  height: 37px;\n  border-radius: 2px;\n  position: relative;\n}\n.page-content .login-from .form-login .group-control i {\n  position: absolute;\n  font-size: 16px;\n  top: 11px;\n  left: 14px;\n  color: #aaa;\n}\n.page-content .login-from .form-login .group-control + .group-control {\n  margin-top: 15px;\n}\n.page-content .login-from .form-login .group-control input {\n  width: 100%;\n  height: 100%;\n  outline: 0;\n  border: 1px solid #eaeaea;\n  padding: 0 20px 0 40px;\n  color: #737987;\n  border-radius: 5px;\n}\n.page-content .login-from .form-login .group-control input:focus {\n  border-color: #3c96ff;\n}\n.page-content\n  .login-from\n  .form-login\n  .group-control\n  input::-webkit-input-placeholder {\n  color: #aaa;\n}\n.page-content .login-from .form-login .group-control input:-moz-placeholder {\n  color: #aaa;\n}\n.page-content .login-from .form-login .group-control input::-moz-placeholder {\n  color: #aaa;\n}\n.page-content\n  .login-from\n  .form-login\n  .group-control\n  input:-ms-input-placeholder {\n  color: #aaa;\n}\n.page-content .login-from .form-login .btn-content {\n  font-size: 0;\n  padding-top: 30px;\n}\n.page-content .login-from .form-login .btn-content .login-btn {\n  width: 289px;\n  height: 40px;\n  display: inline-block;\n  background: #00BC6A;\ntext-align: center;\n  border-radius: 3px;\n  outline: 0;\n  border: none;\n  font-size: 16px;\n  line-height: 18px;\n  letter-spacing: 0;\n  color: #fff;\n  cursor: pointer;\n  /* float: left; */\n}\n.page-content .login-from .form-login .btn-content .login-btn:hover {\n    background: #00BC6A;\n}\n.page-content .login-from .form-login .btn-content .protocol-btn {\n  font-size: 14px;\n  line-height: 0;\n  letter-spacing: 0;\n  color: #5c7ac6;\n  display: inline-block;\n  margin-left: 42px;\n  cursor: pointer;\n  margin-top: 21px;\n  float: right;\n}\n.page-content .login-from .form-login .btn-content .protocol-btn:hover {\n  color: #526eb5;\n}\n.footer {\n  width: 100%;\n  position: absolute;\n  bottom: 3%;\n  color: #bfcbd7;\n  font-size: 12px;\n  text-align: center;\n}\n.footer .logo-qt {\n  margin-bottom: 10px;\n}\n.footer .logo-qt .img-logo {\n  position: relative;\n  top: 4px;\n  margin-right: 8px;\n}\n.footer a {\n  color: #bfcbd7;\n  margin: 0 5px;\n}\n.footer .follow-us {\n  position: relative;\n}\n.footer .follow-us:hover .qr-box {\n  padding-bottom: 20px;\n}\n.footer .qr-box {\n  display: none;\n  left: -25px;\n}\n.footer .follow-us:hover .qr-box,\n.footer .qr {\n  display: inline-block;\n}\n.footer .qr {\n  padding: 4px;\n  border: 1px solid #e4e4e4;\n  background: #fff;\n}\n.footer .qr-caret {\n  width: 0;\n  height: 0;\n  border: 7px solid transparent;\n  border-top: 7px solid #fff;\n  top: 101px;\n  left: 42px;\n  position: absolute;\n}\n.footer a:hover {\n  color: #fff;\n}\n.footer .qr-box {\n  position: absolute;\n  top: 0;\n  margin-top: -118px;\n}\n.protocol-pop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: none;\n  z-index: 101;\n}\n.protocol-pop .protocol-detail {\n  width: 1200px;\n  height: 700px;\n  background-color: #fff;\n  border-radius: 2px;\n  top: 10%;\n  left: 50%;\n  margin-left: -600px;\n  position: absolute;\n  padding: 59px 23px 40px 37px;\n}\n.protocol-pop .protocol-detail .del-text {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 27px;\n  height: 27px;\n  line-height: 26px;\n  border-radius: 50%;\n  text-align: center;\n  margin: 4px 4px 0 0;\n  background-repeat: no-repeat;\n  background-size: 11px 11px;\n  background-position: 50% 50%;\n  cursor: pointer;\n  display: inline-block;\n}\n.protocol-pop .protocol-detail .del-text:hover {\n  background-color: #f3f3f3;\n}\n.protocol-pop .protocol-detail .del-text > i {\n  font-size: 10px;\n  color: #50525f;\n  font-weight: 700;\n}\n.protocol-pop .protocol-detail .detail-content {\n  height: 536px;\n  overflow-y: auto;\n}\n.protocol-pop .protocol-detail .detail-content::-webkit-scrollbar {\n  width: 6px;\n  height: 5px;\n}\n.protocol-pop .protocol-detail .detail-content::-webkit-scrollbar-thumb {\n  border-radius: 20px;\n  background: #a5a5a5;\n  box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\n.protocol-pop .protocol-detail .detail-content > .title {\n  text-align: center;\n  font-size: 32px;\n  font-weight: 400;\n  font-stretch: normal;\n  line-height: 36px;\n  letter-spacing: 1px;\n  color: #4f515e;\n  position: relative;\n  margin-bottom: 67px;\n}\n.protocol-pop .protocol-detail .detail-content > .title:after {\n  content: \"\";\n  position: absolute;\n  width: 30px;\n  height: 2px;\n  background: #5c7ac6;\n  top: 46px;\n  left: 50%;\n  margin-left: -15px;\n}\n.protocol-pop .protocol-detail .detail-content .detail-list {\n  padding-right: 23px;\n}\n.protocol-pop .protocol-detail .detail-content .detail-list > .title {\n  font-weight: 700;\n}\n.protocol-pop .protocol-detail .detail-content .detail-list p {\n  text-align: left;\n  font-size: 12px;\n  line-height: 32px;\n  letter-spacing: 0;\n  color: #7b7d8a;\n}\n.protocol-pop .protocol-detail .consent-content {\n  text-align: center;\n  margin-top: 25px;\n}\n.protocol-pop .protocol-detail .consent-content .consent-btn {\n  width: 160px;\n  height: 42px;\n  display: inline-block;\n  background-color: #5c7ac6;\n  border-radius: 2px;\n  border: none;\n  font-size: 16px;\n  font-weight: 400;\n  font-stretch: normal;\n  line-height: 18px;\n  letter-spacing: 0;\n  color: #fff;\n}\n.protocol-pop .protocol-detail .consent-content .consent-btn:hover {\n  background: #526eb5;\n}\n.error-message-content {\n  position: fixed;\n  top: 0;\n  width: 100%;\n  height: 40px;\n  line-height: 40px;\n  text-align: center;\n  display: none;\n}\n.error-message-content i {\n  cursor: pointer;\n  color: #ff5656;\n  display: inline-block;\n}\n.error-message-content.is-chrome {\n  background: #f8f6db;\n}\n.error-message-content.is-certificate {\n  background: #fbd9d9;\n  color: #ff5656;\n}\n.error-message-content span {\n  color: #ff5656;\n  display: inline-block;\n  margin-right: 20px;\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/css/scss/login.scss",
    "content": "// 样式重置\n@mixin scrollbar {                 // 页面滚动条\n    &::-webkit-scrollbar {\n        width: 6px;\n        height: 5px;\n        &-thumb {\n            border-radius: 20px;\n            background: #a5a5a5;\n            box-shadow: inset 0 0 6px hsla(0,0%,80%,.3);\n        }\n    }\n}\n*{\n    box-sizing:border-box;\n}\nbody, \ndiv,\ndl,\ndt,\ndd, \nul,\nol, \nli,\nh1,\nh2,\nh3,\nh4,\nh5, \nh6, \ni, \npre,\nform, \nfieldset, \ninput,\nblockquote, \nth,\ntd,\np, \nspan, \nbutton, \ntextarea, \nb {\n  margin: 0;\n  padding: 0;\n}\nhtml,body{\n    font-size:14px;\n    font-family:\"Microsoft YaHei\";\n    height:100%;\n    position: relative;\n}\na {\n    text-decoration: none;\n    -webkit-transition: all .5s;\n    -moz-transition: all .5s;\n    -ms-transition: all .5s;\n    transition: all .5s;\n}\nbutton {\n    text-decoration: none;\n    -webkit-transition: all .5s;\n    -moz-transition: all .5s;\n    -ms-transition: all .5s;\n    transition: all .5s;\n}\na:hover {\n    text-decoration: none; }\n\nul,\nol,\nli {\n    list-style: none; \n}\nh1,h2,h3,h4,h5,h6{\n    font-weight:normal;\n}\ninput{\n    &::-webkit-input-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }    \n    &:-moz-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }                 \n    &::-moz-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }                 \n    &:-ms-input-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }\n}\ntextarea{\n    &::-webkit-input-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }    \n    &:-moz-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }                 \n    &::-moz-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }                 \n    &:-ms-input-placeholder{\n        font-family: \"Microsoft YaHei\";\n        color: #c3cdd7;\n    }\n}\n.pb110{\n    padding-bottom: 110px;\n}\n.clearfix:before,\n.clearfix:after {\n    content: \"\";\n    display: table; }\n\n.clearfix:after {\n    clear: both; }\n\n.clearfix {\n    *zoom: 1; }\n.hide{\n    display: none!important;\n    visibility: hidden;\n}\ninput[type=number] {\n    -moz-appearance:textfield;\n}\ninput,select{\n    background:none;\n}\ninput[disabled]{\n    background:none;\n}\ninput[type=number]::-webkit-inner-spin-button,\ninput[type=number]::-webkit-outer-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n}\n.page-content{\n    height:100%;\n    width: 100%;\n    position: relative;\n    background: url(../img/logo/bg.png) no-repeat center;\n    margin: 0 auto;\n    background-size: 100% 100%;\n    .login-from{\n        width: 400px;\n        min-height: 400px;\n        border-radius: 2px;\n        position: absolute;\n        top: 17%;\n        left: 50%;\n        margin-left: -200px;\n        z-index: 100;\n        overflow: hidden;\n        .logo-title{\n            width: 100%;\n            height: 121px;\n            border-radius: 2px 2px 0px 0px;\n            background: #313b4c;\n            text-align: center;\n            line-height: 121px;\n            img{\n                vertical-align: middle;\n            }\n        }\n        .from-detail{\n            position: relative;\n            background: #fff;\n            height: 279px;\n            .is-danger-tip{ \n                position: absolute;\n                color: #ff5656;\n                top: 25px;\n                left: 55px;\n                padding-right: 55px;\n                padding-bottom: 5px;\n                font-size: 12px;\n                .icon-exclamation-circle-shape{\n                    margin-right: 10px;\n                }\n            }\n        }\n        .form-login{\n            width: 100%;\n            padding: 58px 55px 0 56px;\n            &.is-danger{\n               .group-control{\n                    i{\n                        color: #ff5656;\n                    }\n                    input{\n                        border-color: #ff5656;\n                        color: #ff5656;\n                        &:focus{\n                            border-color:#ff5656;\n                        }\n                        &::-webkit-input-placeholder{\n                            color: #ff5656;\n                        }    \n                        &:-moz-placeholder{\n                            color: #ff5656;\n                        }                 \n                        &::-moz-placeholder{\n                            color: #ff5656;\n                        }                 \n                        &:-ms-input-placeholder{\n                            color: #ff5656;\n                        }\n                    }\n               } \n            }\n            &.certificate-expired{\n                .group-control{\n                    i{\n                        color: #cad3dc;\n                    }\n                    input{\n                        border-color: #dde4eb;\n                        color: #cad3dc;\n                        &:focus{\n                            border-color:#ff5656;\n                        }\n                        &::-webkit-input-placeholder{\n                            color: #cad3dc;\n                        }    \n                        &:-moz-placeholder{\n                            color: #cad3dc;\n                        }                 \n                        &::-moz-placeholder{\n                            color: #cad3dc;\n                        }                 \n                        &:-ms-input-placeholder{\n                            color: #cad3dc;\n                        }\n                    }\n                }\n                .btn-content{\n                    .login-btn{\n                        background: #313b4c;\n                        cursor: not-allowed;\n                        &:hover{\n                            background: #344157;\n                        }\n                    }\n\n                }\n            }\n            .group-control{\n                width: 289px;\n                height: 37px;\n                border-radius: 2px;\n                position: relative;\n                i{\n                    position: absolute;\n                    font-size: 16px;\n                    top: 11px;\n                    left: 14px;\n                    color: #aaaaaa;\n                }\n                +.group-control{\n                    margin-top: 15px;\n                }\n                input{\n                    width: 100%;\n                    height: 100%;\n                    outline: none;\n                    border: solid 1px #eaeaea;\n                    padding: 0 20px 0 40px;\n                    color: #737987;\n                    border-radius: 2px;\n                    &:focus{\n                        border-color:#3c96ff;\n                    }\n                    &::-webkit-input-placeholder{\n                        color: #aaa;\n                    }    \n                    &:-moz-placeholder{\n                        color: #aaa;\n                    }                 \n                    &::-moz-placeholder{\n                        color: #aaa;\n                    }                 \n                    &:-ms-input-placeholder{\n                        color: #aaa;\n                    }\n                }\n            }\n            .btn-content{\n                font-size: 0;\n                padding-top: 30px;\n                .login-btn{\n                    width: 160px;\n                    height: 42px;\n                    display: inline-block;\n                    background-color: #344157;\n                    border-radius: 2px;\n                    outline: none;\n                    border: none;\n                    font-size: 16px;\n                    line-height: 18px;\n                    letter-spacing: 0px;\n                    color: #ffffff; \n                    cursor: pointer;\n                    float: left;\n                    &:hover{\n                        background: #2e3b4f;\n                    }\n                }\n                .protocol-btn{\n                    font-size: 14px;\n                    line-height: 0;\n                    letter-spacing: 0px;\n                    color: #5c7ac6;\n                    display: inline-block;\n                    margin-left: 42px;\n                    cursor: pointer;\n                    margin-top: 21px;\n                    float: right;\n                    &:hover{\n                        color: #526eb5;\n                    }\n                }\n\n            }\n        }\n    }\n}\n// 页脚样式调整\n.footer{\n    width: 100%;\n    position: absolute;\n    bottom: 3%; \n    color: #bfcbd7;\n    font-size: 12px;\n    text-align: center;\n    .logo-qt {\n        margin-bottom: 10px;\n    }\n    .logo-qt .img-logo {\n        position: relative;\n        top: 4px;\n        margin-right: 8px;\n    }\n    a {\n        color: #bfcbd7;\n        margin: 0 5px;\n    }\n    a:hover {\n        color: #fff;\n    }\n    .follow-us {\n        position: relative;\n    }\n    .follow-us:hover .qr-box {\n        display: inline-block;\n        padding-bottom: 20px;\n    }\n    .qr-box {\n        display: none;\n        left: -25px;\n        top: -110px;\n    }\n    .qr {\n        padding: 4px;\n        border: 1px solid #e4e4e4;\n        background: #fff;\n        display: inline-block;\n    }\n    .qr-caret {\n        width: 0;\n        height: 0;\n        border: 7px solid transparent;\n        border-top: 7px solid #fff;\n        top: 101px;\n        left: 42px;\n        position: absolute;\n    }\n    .follow-us:hover .qr-box {\n        display: inline-block;\n    }\n    a:hover {\n        color: #fff;\n    }\n    .qr-box{\n        position: absolute;\n        top: 0;\n        margin-top: -118px;\n    }\n}\n// 协议\n.protocol-pop{\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    display: none;\n    z-index: 101;\n    .protocol-detail{\n        width: 1200px;\n        height: 700px;\n        background-color: #ffffff;\n        border-radius: 2px;\n        top: 10%;\n        left: 50%;\n        margin-left: -600px;\n        position: absolute;\n        padding: 59px 23px 40px 37px;\n        .del-text{\n            position: absolute;\n            top: 0;\n            right: 0;\n            width: 27px;\n            height: 27px;\n            line-height: 26px;\n            border-radius: 50%;\n            text-align: center;\n            margin: 4px 4px 0 0;\n            background-repeat: no-repeat;\n            background-size: 11px 11px;\n            background-position: 50% 50%;\n            cursor: pointer;\n            display: inline-block;\n            &:hover{\n                background-color: #f3f3f3;\n            }\n            >i{\n                font-size: 10px;\n                color: #50525f;\n                font-weight: bold;\n            }\n        }\n        .detail-content{\n            height: 536px;\n            overflow-y: auto;\n            @include scrollbar;\n             >.title{\n                text-align: center;\n                font-size: 32px;\n                font-weight: normal;\n                font-stretch: normal;\n                line-height: 36px;\n                letter-spacing: 1px;\n                color: #4f515e;\n                position: relative;\n                margin-bottom: 67px;\n                &:after{\n                    content: '';\n                    position: absolute;\n                    width: 30px;\n                    height: 2px;\n                    background: #5c7ac6;\n                    top: 46px;\n                    left: 50%;\n                    margin-left: -15px;\n                }\n\n            }\n            .detail-list{\n                padding-right: 23px;\n                >.title{\n                    font-weight: bold;\n                }\n                P{\n                    text-align: left;\n                    font-size: 12px;\n                    line-height: 32px;\n                    letter-spacing: 0;\n                    color: #7b7d8a;\n                }\n            }\n        }\n        .consent-content{\n            text-align: center;\n            margin-top: 25px;\n            .consent-btn{\n                width: 160px;\n                height: 42px;\n                display: inline-block;\n                background-color: #5c7ac6;\n                border-radius: 2px;\n                border: none;\n                font-size: 16px;\n                font-weight: normal;\n                font-stretch: normal;\n                line-height: 18px;\n                letter-spacing: 0px;\n                color: #ffffff;\n                &:hover{\n                    background: #526eb5;\n                }\n            }\n        }\n    }\n}\n// 错误提示\n.error-message-content{\n    position: fixed;\n    top: 0;\n    width: 100%;\n    height: 40px;\n    line-height: 40px;\n    text-align: center;\n    display: none;\n    i{\n        cursor: pointer;\n    }\n    &.is-chrome{\n        background: #f8f6db;\n    }\n    &.is-certificate{\n        background: #fbd9d9;\n        color: #ff5656;\n    }\n    span{\n        color: #ff5656;\n        display: inline-block;\n        margin-right: 20px;\n    }\n    i{\n        color: #ff5656;\n        display: inline-block;\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/login/static/js/csrftoken.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/**\n * ajax全局设置\n */\n$.ajaxSetup({\n  //    timeout: 8000,\n  cache: false,\n  statusCode: {\n    // 401未授权\n    401: function(xhr) {\n      // 重新加载页面后跳转到登录页面，重新获取登录态\n      window.location.reload();\n      },\n      // 402 权限验证不通过\n      402:function(xhr){\n        var _src = xhr.responseText;\n        ajax_content = '<iframe name=\"access_control_iframe\" frameborder=\"0\" src=\"'+_src+'\"></iframe>';\n        art.dialog({id: 'bktips'}).close();\n        art.dialog({\n            id: 'bktips',\n            title: gettext(\"提示\"),\n            lock: true,\n            content: ajax_content\n      });\n        return;\n      },\n      500: function(xhr, textStatus) {\n        art.dialog({id: 'bktips'}).close();\n          // 异常\n          art.dialog({\n              id: 'bktips',\n              title: gettext(\"提示\"),\n              lock: true,\n              content: gettext(\"系统出现异常：\")+textStatus+\"---\"+xhr.status+'===='\n        });\n      }\n  },\n});\n// AJAX请求，获取csrftoken\n$('html').ajaxSend(function(event, xhr, settings) {\n    function getCookie(name) {\n        var cookieValue = null;\n        if (document.cookie && document.cookie != '') {\n            var cookies = document.cookie.split(';');\n            for (var i = 0; i < cookies.length; i++) {\n                var cookie = jQuery.trim(cookies[i]);\n                // Does this cookie string begin with the name we want?\n                if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                    break;\n                }\n            }\n        }\n        return cookieValue;\n    }\n    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {\n    \t// 引用jquery cookie使用\n    \t//var csrftoken = $.cookie('bkcsrftoken');\n        // Only send the token to relative URLs i.e. locally.\n    \tvar csrftoken = getCookie('bklogin_csrftoken');\n    \txhr.setRequestHeader(\"X-CSRFToken\", csrftoken);\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/login/static/js/language.js",
    "content": "\nconst i18n_language = {\n\tzh_CN: {\n\t\thelp_center: \"帮助中心\",\n\t\tpassword_login: \"密码登录\",\n\t\tLDAP_login: \"LDAP登录\",\n\n\t\tpassword_login_title: \"欢迎使用密码登录\",\n\t\tlogin_message1: \"请先完成验证码验证\",\n\t\tlogin_message2: \"账户或者密码错误，请重新输入\",\n\t\tpassword_login_placeholder1: \"请输入用户名\",\n\t\tpassword_login_placeholder2: \"请输入用户密码\",\n\t\tpassword_login_message3: \"正在加载验证码\",\n\t\tpassword_login_btn: \"立即登录\",\n\t\tpassword_login_other: \"其他登录方式\",\n\n\t\tLDAP_login_title: \"欢迎使用LDAP登录\",\n\t\tLDAP_login_placeholder1: \"请输入登录域\",\n\t\tLDAP_login_placeholder2: \"请输入LDAP用户名\",\n\t\tLDAP_login_placeholder3: \"请输入密码\",\n\n\t\tWeChat_Work: \"企业微信\",\n\t\tOAuth: \"OAuth\",\n\t\tSSO: \"SSO\",\n\t\tback_btn: \"返回\",\n\t\tMFABing_title: \"绑定 MFA 设备\",\n\t\tMFABing_message1: \"管理员已开启强制所有用户绑定MFA功能，请完成以下操作以免影响使用。\",\n\t\tMFABing_first_step: \"第一步：获取身份验证器\",\n\t\tMFABing_first_step_message1: \"扫描下载iOS版\",\n\t\tMFABing_first_step_message2: \"扫描下载Android版\",\n\t\tMFABing_first_step_message3: \"开启Google身份认证后，每次登录时都需要进行验证。\",\n\n\t\tMFABing_first_action_title: '方法1. 安装阿里云、华为云APP',\n\t\tMFABing_first_action_usage: '使用步骤：',\n\t\tMFABing_first_action_ali: '阿里云：打开阿里云APP > 点击“右上角+号”> 选择【虚拟MFA】',\n\t\tMFABing_first_action_huawei: '华为云：打开华为云APP > 点击“我的”> 选择【MFA】',\n\t\tMFABing_first_action_title2: '方法2. 微信搜索小程序“腾讯身份验证器”',\n\t\tMFABing_first_action_tx: '授权打开“腾讯身份验证器”小程序 > 点击【二维码激活】 > 然后扫描下方“第二步”展示的二维码',\n\t\tMFABing_second_step: \"第二步：使用阿里云APP、华为云APP、腾讯身份验证器小程序扫描以下二维码\",\n\n\t\tMFABing_second_step_message1: \"扫不了码？试试账号&密钥方式获取\",\n\t\tMFABing_second_step_account_number: \"账号：\",\n\t\tMFABing_second_step_secret_key: \"密钥：\",\n\t\tMFABing_second_step_copy: \"复制\",\n\t\tMFABing_third_step: \"第三步：输入授权码\",\n\t\tMFABing_third_authorization_code: \"请输入6位授权码\",\n\t\tMFABing_message2: \"认证失败，请检查您的验证码是否正确\",\n\t\tMFABind_submit: \"确定绑定\",\n\n\t\tMFA_title1: \"账号保护已开启，请根据提示完成以下操作\",\n\t\tMFA_first_step: \"第一步：\",\n\t\tMFA_first_message: \"请使用阿里云APP、华为云APP、微信搜索小程序腾讯身份验证器三种方式获取动态验证码\",\n\t\tMFA_second_step: \"第二步：\",\n\t\tMFA_second_message: \"请输入6位动态码\",\n\t\tMFA_message1: \"您已开启7天免认证登录，请点击确定按钮直接登录！\",\n\t\tMFA_dynamicCode: \"请输入6位动态码\",\n\t\tMFA_message2: \"请确认您的验证码是否正确\",\n\t\tMFA_laissez_passer: \"7天内免验证\",\n\t\tMFA_submit: \"确定\",\n\t\tMFA_message3: \"如无法提供安全码，请联系管理员解除双因素验证后继续操作。\",\n\n\t\tChrome: \"您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果\",\n\t\twait: \"正在加载验证码......\",\n\t},\n\tzh_TW: {\n\t\thelp_center: \"幫助中心\",\n\t\tpassword_login: \"密碼登錄\",\n\t\tLDAP_login: \"LDAP登錄\",\n\n\t\tpassword_login_title: \"歡迎使用密碼登錄\",\n\t\tlogin_message1: \"請先完成驗證碼驗證\",\n\t\tlogin_message2: \"賬戶或者密碼錯誤，請重新輸入\",\n\t\tpassword_login_placeholder1: \"請輸入用戶名\",\n\t\tpassword_login_placeholder2: \"請輸入用戶密碼\",\n\t\tpassword_login_message3: \"正在加載驗證碼\",\n\t\tpassword_login_btn: \"立即登錄\",\n\t\tpassword_login_other: \"其他登錄方式\",\n\n\t\tLDAP_login_title: \"歡迎使用LDAP登錄\",\n\t\tLDAP_login_placeholder1: \"請輸入登陸域\",\n\t\tLDAP_login_placeholder2: \"請輸入LDAP用戶名\",\n\t\tLDAP_login_placeholder3: \"請輸入密碼\",\n\n\t\tWeChat_Work: \"企業微信\",\n\t\tOAuth: \"OAuth\",\n\t\tSSO: \"SSO\",\n\t\tback_btn: \"返回\",\n\t\tMFABing_title: \"綁定 MFA 設備\",\n\t\tMFABing_message1: \"管理員已開啟強製所有用戶綁定MFA功能，請完成以下操作以免影響使用。\",\n\t\tMFABing_first_step: \"第一步：取得身份驗證器\",\n\t\tMFABing_first_step_message1: \"掃描下載iOS版\",\n\t\tMFABing_first_step_message2: \"掃描下載Android版\",\n\t\tMFABing_first_step_message3: \"開啟Google身份認證後，每次登錄時都需要進行驗證。\",\n\n\t\tMFABing_first_action_title: '方法1. 安裝阿里雲、華為雲APP',\n\t\tMFABing_first_action_usage: '使用步驟：',\n\t\tMFABing_first_action_ali: '阿里雲：開啟阿里雲APP > 點選「右上角+號」> 選擇【虛擬MFA】',\n\t\tMFABing_first_action_huawei: '華為雲：開啟華為雲APP > 點選「我的」> 選擇【MFA】',\n\t\tMFABing_first_action_title2: '方法2. 微信搜尋小程式「騰訊身份驗證器」',\n\t\tMFABing_first_action_tx: '授權開啟「騰訊身分驗證器」小程式 > 點選【二維碼啟動】 > 然後掃描下方「第二步」所顯示的二維碼',\n\t\tMFABing_second_step: \"第二步：使用阿里雲APP、華為雲APP、騰訊身份驗證器小程式掃描以下二維碼\",\n\n\t\tMFABing_second_step_message1: \"掃不了碼？試試賬號&密鑰方式獲取\",\n\t\tMFABing_second_step_account_number: \"賬號：\",\n\t\tMFABing_second_step_secret_key: \"密鑰：\",\n\t\tMFABing_second_step_copy: \"復製\",\n\t\tMFABing_third_step: \"第三步：輸入授權碼\",\n\t\tMFABing_third_authorization_code: \"請輸入6位授權碼\",\n\t\tMFABing_message2: \"認證失敗，請檢查您的驗證碼是否正確\",\n\t\tMFABind_submit: \"確定綁定\",\n\n\t\tMFA_title1: \"賬號保護已開啟，請根據提示完成以下操作\",\n\t\tMFA_first_step: \"第一步：\",\n\t\tMFA_first_message: \"請使用阿里雲APP、華為雲APP、微信搜尋小程式騰訊身份驗證器三種方式取得動態驗證碼\",\n\t\tMFA_second_step: \"第二步：\",\n\t\tMFA_second_message: \"請輸入6位動態碼\",\n\t\tMFA_message1: \"您已開啟7天免認證登錄，請點擊確定按鈕直接登錄！\",\n\t\tMFA_dynamicCode: \"請輸入6位動態碼\",\n\t\tMFA_message2: \"請確認您的驗證碼是否正確\",\n\t\tMFA_laissez_passer: \"7天內免驗證\",\n\t\tMFA_submit: \"確定\",\n\t\tMFA_message3: \"如無法提供安全碼，請聯系管理員解除雙因素驗證後繼續操作。\",\n\n\t\tChrome: \"您的瀏覽器非Chrome，建議您使用最新版本的Chrome瀏覽，以保證最好的體驗效果\",\n\t\twait: \"正在加載驗證碼......\",\n\t},\n\ten: {\n\t\thelp_center: \"Help\",\n\t\tpassword_login: \"Password\",\n\t\tLDAP_login: \"LDAP\",\n\n\t\tpassword_login_title: \"Welcome to login with password\",\n\t\tlogin_message1: \"Please complete verification code verification first\",\n\t\tlogin_message2: \"Account or password error, please re-enter\",\n\t\tpassword_login_placeholder1: \"Please enter the username\",\n\t\tpassword_login_placeholder2: \"Please enter the password\",\n\t\tpassword_login_message3: \"Loading verification code\",\n\t\tpassword_login_btn: \"Login\",\n\t\tpassword_login_other: \"Other\",\n\n\t\tLDAP_login_title: \"Welcome to LDAP Login\",\n\t\tLDAP_login_placeholder1: \"Please enter login domain\",\n\t\tLDAP_login_placeholder2: \"Please enter LDAP username\",\n\t\tLDAP_login_placeholder3: \"Please enter the password\",\n\n\t\tWeChat_Work: \"WeChat Work\",\n\t\tOAuth: \"OAuth\",\n\t\tSSO: \"SSO\",\n\t\tback_btn: \"Back\",\n\t\tMFABing_title: \"Bind MFA device\",\n\t\tMFABing_message1: \"The administrator has enabled the function of forcing all users to bind MFA. Please complete the following operations to avoid affecting the use.\",\n\t\tMFABing_first_step: \"Step 1: Get an Authenticator\",\n\t\tMFABing_first_step_message1: \"Scan and download iOS version\",\n\t\tMFABing_first_step_message2: \"Scan and download Android version\",\n\t\tMFABing_first_step_message3: \"After Google authentication is enabled, you need to verify each time you log in.\",\n\n\t\tMFABing_first_action_title: 'Method 1. Install Alibaba Cloud and Huawei Cloud APP',\n\t\tMFABing_first_action_usage: 'Usage steps:',\n\t\tMFABing_first_action_ali: 'Alibaba Cloud: Open the Alibaba Cloud APP > Click the \"+\" in the upper right corner > Select [Virtual MFA]',\n\t\tMFABing_first_action_huawei: 'Huawei Cloud: Open Huawei Cloud APP > Click \"My\" > Select [MFA]',\n\t\tMFABing_first_action_title2: 'Method 2. WeChat search applet \"Tencent Identity Authenticator\"',\n\t\tMFABing_first_action_tx: 'Authorize to open the \"Tencent Identity Authenticator\" applet > Click [QR Code Activation] > Then scan the QR code displayed in the \"Second Step\" below',\n\t\tMFABing_second_step: \"Second step: Use Alibaba Cloud APP, Huawei Cloud APP, and Tencent Identity Authenticator applet to scan the following QR code\",\n\t\tMFABing_second_step_message1: \"Can't scan the code? Try account&key access\",\n\t\tMFABing_second_step_account_number: \"Account Number：\",\n\t\tMFABing_second_step_secret_key: \"Secret Key：\",\n\t\tMFABing_second_step_copy: \"Copy\",\n\t\tMFABing_third_step: \"Step 3: Enter the authorization code\",\n\t\tMFABing_third_authorization_code: \"Please enter 6-digit authorization code\",\n\t\tMFABing_message2: \"Authentication failed. Please check whether your verification code is correct\",\n\t\tMFABind_submit: \"Determine binding\",\n\n\t\tMFA_title1: \"Account protection has been enabled, please complete the following operations according to the prompt\",\n\t\tMFA_first_step: \"Step 1：\",\n\t\tMFA_first_message: \"Please use Alibaba Cloud APP, Huawei Cloud APP, WeChat search applet Tencent Identity Authenticator to obtain the dynamic verification code.\",\n\t\tMFA_second_step: \"Step 1：\",\n\t\tMFA_second_message: \"Please enter 6-digit dynamic code\",\n\t\tMFA_message1: \"You have been logged in without authentication for 7 days, please click the OK button to log in directly!\",\n\t\tMFA_dynamicCode: \"Please enter 6-digit dynamic code\",\n\t\tMFA_message2: \"Please confirm whether your verification code is correct\",\n\t\tMFA_laissez_passer: \"No verification within 7 days\",\n\t\tMFA_submit: \"OK\",\n\t\tMFA_message3: \"If the security code cannot be provided, please contact the administrator to cancel the two-factor verification and continue the operation.\",\n\n\t\tChrome: \"Your browser is not Chrome. It is recommended that you use the latest version of Chrome to ensure the best experience\",\n\t\twait: \"Loading......\",\n\t}\n}\n\n"
  },
  {
    "path": "paas-ce/paas/login/static/js/login.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nfunction getCookie(name) {\n    var cookieValue = null;\n    if (document.cookie && document.cookie != '') {\n        var cookies = document.cookie.split(';');\n        for (var i = 0; i < cookies.length; i++) {\n            var cookie = jQuery.trim(cookies[i]);\n            // Does this cookie string begin with the name we want?\n            if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                break;\n            }\n        }\n    }\n    return cookieValue;\n}\nfunction refresh_token(){\n    var csrftoken = getCookie('bklogin_csrftoken');\n    $('input[name=\"csrfmiddlewaretoken\"]').val(csrftoken);\n    return true;\n}\n\n\n$(document).ready(function(){\n    // 点击查看协议\n    $('.btn-content .protocol-btn').click(function(event) {\n        $('.protocol-pop').show();\n    });\n\n    // 关闭协议弹窗\n    $('.protocol-pop .close').click(function(event) {\n        $('.protocol-pop').hide();\n    });\n\n    $('.consent-content .consent-btn').click(function(){\n        $('.protocol-pop').hide();\n    });\n\n\n    // 判断当前的浏览器是谷歌 及证书验证过期\n    $('#close-chrome').click(function() {\n        $('.is-chrome').hide();\n    })\n    var isChrome = navigator.userAgent.toLowerCase().match(/chrome/) != null;\n    if (!isChrome) {\n        $('.is-chrome').show();\n    } else {\n        $('.is-chrome').hide();\n    }\n\n});\n"
  },
  {
    "path": "paas-ce/paas/login/static/js/users.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/*\n * 用户管理\n */\n//enter键触发搜索\nfunction enter_keyword(e){\n    if(e.keyCode=='13'){\n        $('#serach_user').click();\n    }\n}\n// 检查是否有用户信息在编辑中状态\nfunction is_user_edit_status(){\n    if($(\"#user_table_div table tbody tr.user_edit_status\").length > 0){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: gettext('不可同时修改多个用户信息，请先保存编辑中的用户信息')}).time(5);\n        return true;\n    }\n    return false;\n}\n// 选择用户角色\n$(\"#search_role\").on('onchange', function(){\n    get_user(1);\n})\n// 查询用户\n$(\"#serach_user\").on('click', function(){\n    get_user(1);\n})\nfunction get_user(page){\n    var search_data = $(\"#search_data\").val();\n    var search_role = $(\"#search_role\").val();\n    var url = site_url + 'accounts/user/list/query/';\n    $.get(url, {\n        'page': page,\n        'search_data': search_data,\n        'search_role': search_role\n    }, function(data){\n        $(\"#user_table_div\").html(data);\n    })\n}\n\nfunction get_all_users(page){\n    var url = site_url + 'accounts/user/list/query/';\n    $.get(url, {\n        'page': page,\n        'search_data': '',\n        'search_role': ''\n    }, function(data){\n        $(\"#user_table_div\").html(data);\n    })\n}\n\n\n //添加用户\n$('.user_add_btn').on('click',function(){\n    if(is_user_edit_status())return false;\n    var tpl = [\n            '<tr class=\"user_record user_edit_status\">',\n            '   <td>',\n            '       <input class=\"form-control u_username\" placeholder=\"'+ gettext('请输入用户名') +'\"/>',\n            '   </td>',\n            '    <td>',\n            '        <input class=\"form-control u_chname\" placeholder=\"'+ gettext('请输入姓名') +'\"/>',\n            '   </td>',\n            '   <td>',\n            '       <input class=\"form-control u_phone\" placeholder=\"'+ gettext('请输入联系电话') +'\"/>',\n            '   </td>',\n            '   <td>',\n            '       <input class=\"form-control u_email\" placeholder=\"'+ gettext('请输入邮箱') +'\"/>',\n            '   </td>',\n            '   <td>',\n            '       <select class=\"form-control u_role\" style=\"width:90px\">',\n            '           <option value=\"0\">'+ gettext(\"普通用户\") +'</option>',\n            '           <option value=\"1\">'+ gettext(\"管理员\") +'</option>',\n            '           <option value=\"2\">'+ gettext(\"开发者\") +'</option>',\n            '           <option value=\"3\">'+ gettext(\"职能化用户\") +'</option>',\n            '           <option value=\"4\">'+ gettext(\"审计员\") +'</option>',\n            '       </select>',\n            '   </td>',\n            '   <td>',\n            '       <button type=\"button\" class=\"btn-xs user_cancel_btn\">'+ gettext('取消') + '</button> ',\n            '       <button type=\"button\" class=\"btn-info btn-xs user_save_btn\">'+ gettext('保存') +'</button>',\n            '       <a href=\"###\" title=\"'+ gettext('编辑') +'\" class=\"dev_user_opera user_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>',\n            '       <a href=\"###\" title=\"'+ gettext('删除') +'\" class=\"dev_user_opera user_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>',\n            '      <a href=\"###\" title=\"'+ gettext('重置密码') +'\" class=\"dev_user_opera user_rest_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-lock\"></span></a>',\n            '   </td>',\n            '</tr>'\n              ].join('');\n\n        $('#no_record_row').hide();\n        //$(tpl).insertTo('#user_table');\n        $('#user_table').prepend($(tpl));\n    return false;\n});\n// 导出用户数据\n$(\".user_export_btn\").on('click', function(){\n    window.location.href = site_url + 'accounts/user/export/';\n})\n// 批量导入用户\n$('.user_import_btn').on('click', function(){\n    $(\"#data_files\").val('');\n    art.dialog({\n        id: \"bktips\",\n        title:gettext(\"批量导入用户\"),\n        lock: true,\n        width: 560,\n        content: $(\"#user_import_div\").get(0),\n    })\n    // 导入用户\n    $('#user_import_div').on('click', '.import_btn', function(){\n        var user_file = $(\"#data_files\").val();\n        if(user_file){\n            $(\"#sumbit_import\").click();\n        }else{\n            $(\"#error_msg\").text(gettext('请选择一个文件'));\n        }\n    })\n    $(\"#error_msg\").text('');\n})\n// 保存\n$('#user_table_div').on('click','.user_save_btn',function(){\n    var btn_obj = $(this);\n    var curRecord = $(this).closest('.user_record');\n    var user_id = curRecord.attr('user_id');\n    var u_username = $.trim(curRecord.find('.u_username').val());\n    var u_chname = $.trim(curRecord.find('.u_chname').val());\n    var u_phone = $.trim(curRecord.find('.u_phone').val());\n    var u_email = $.trim(curRecord.find('.u_email').val());\n    var u_role = $.trim(curRecord.find('.u_role').val());\n\n    if (!u_username.match(/^[A-Za-z0-9][A-Za-z0-9._]{2,18}[A-Za-z0-9]$/)){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: gettext('用户名只能包含数字、字母、下划线和点，且长度在4-20个字符, 且必须以字母或数字开头')});\n        curRecord.find('.u_username').focus();\n        return false;\n    }\n    if (!u_chname.match(/^[\\u4e00-\\u9fa5a-zA-Z0-9_]{1,16}$/)){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: gettext('中文名只能包含数字、字母、中文汉字、下划线，长度在1-16个字符')});\n        curRecord.find('.u_chname').focus();\n        return false;\n    }\n    if (!u_phone.match(/^\\d{10,11}$/)){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: gettext('仅支持中国大陆手机号码（11位数字）')});\n        curRecord.find('.u_phone').focus();\n        return false;\n    }\n    if (!u_email.match(/^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*@([A-Za-z0-9]+[-.])+[A-Za-z0-9]{2,5}$/)){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: gettext('请输入正确的邮箱格式')});\n        curRecord.find('.u_email').focus();\n        return false;\n    }\n    if (!u_role){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: gettext('请选择角色')});\n        curRecord.find('.u_role').focus();\n        return false;\n    }\n\n    if (user_id){\n        // 有记录id则进行修改\n        var url = site_url + 'accounts/user/' + user_id + '/';\n        $.ajax({\n            url: url,\n            type: \"PUT\",\n            data: {username: u_username, chname: u_chname, phone: u_phone, role: u_role, email: u_email},\n            success: function(data){\n                if (data.result){\n                    art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: gettext('保存成功')}).time(1);\n                    curRecord.find('input').attr('disabled','disabled');\n                    curRecord.find('select').attr('disabled','disabled');\n                    curRecord.removeClass('user_edit_status');\n                    var cur_page = $(\"#current_page\").val();\n                    get_user(cur_page);\n                    // get_all_users(1);\n                }else{\n                    art.dialog({id: 'bktips', width: 300, icon: 'error', lock: true, content: data.message});\n                }\n            },\n            dataType: \"json\"\n        })\n    }else{\n        // 没有记录id则进行添加\n        var url = site_url + 'accounts/user/';\n        $.post(url, {username: u_username, chname: u_chname, phone: u_phone, role: u_role, email: u_email}, function(data){\n            if (data.result){\n                art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: gettext('添加成功')}).time(1);\n                user_data = data.data;\n                curRecord.attr('user_id', user_data.user_id);\n\n                curRecord.find('input').attr('disabled','disabled');\n                curRecord.find('select').attr('disabled','disabled');\n                curRecord.removeClass('user_edit_status');\n                // get_user(1);\n                get_all_users(1);\n            }else{\n                art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message});\n                //curRecord.remove();\n            }\n        }, 'json');\n    }\n    return false;\n});\n//编辑\n$('#user_table_div').on('click','.user_edit_btn',function(){\n    if(is_user_edit_status())return false;\n    var curRecord = $(this).closest('.user_record');\n    curRecord.addClass('user_edit_status');\n    curRecord.find('input').removeAttr('disabled');\n    curRecord.find('.u_username').attr('disabled','disabled');\n    curRecord.find('select').removeAttr('disabled');\n\n    var u_username = $.trim(curRecord.find('.u_username').val());\n    var u_chname = $.trim(curRecord.find('.u_chname').val());\n    var u_phone = $.trim(curRecord.find('.u_phone').val());\n    var u_role = $.trim(curRecord.find('.u_role').val());\n    var u_email = $.trim(curRecord.find('.u_email').val());\n\n    // 编辑时修改 placeholder\n    curRecord.find('.u_username').attr('placeholder', gettext('请输入用户名'));\n    curRecord.find('.u_chname').attr('placeholder', gettext('请输入中文名'));\n    curRecord.find('.u_phone').attr('placeholder', gettext('请输入手机号'));\n    curRecord.find('.u_email').attr('placeholder', gettext('请输入邮箱'));\n\n    //保存旧值\n    curRecord.attr('data-old-username',u_username);\n    curRecord.attr('data-old-chname',u_chname);\n    curRecord.attr('data-old-phone',u_phone);\n    curRecord.attr('data-old-role',u_role);\n    curRecord.attr('data-old-email',u_email);\n\n    return false;\n});\n// 取消编辑\n$('#user_table_div').on('click','.user_cancel_btn',function(){\n    var curRecord = $(this).closest('.user_record');\n    curRecord.removeClass('user_edit_status');\n\n    curRecord.find('input').attr('disabled','disabled');\n    curRecord.find('select').attr('disabled','disabled');\n\n    // 取消编辑时修改 placeholder 为： --\n    curRecord.find('.u_username').attr('placeholder', '--');\n    curRecord.find('.u_chname').attr('placeholder', '--');\n    curRecord.find('.u_phone').attr('placeholder', '--');\n    curRecord.find('.u_email').attr('placeholder', '--');\n\n    //显示旧值\n    var u_username = curRecord.attr('data-old-username');\n    var u_chname = curRecord.attr('data-old-chname');\n    var u_phone = curRecord.attr('data-old-phone');\n    var u_role = curRecord.attr('data-old-role');\n    var u_email = curRecord.attr('data-old-email');\n\n    if (u_username || u_chname || u_phone || u_email){\n        curRecord.find('.u_username').val(u_username);\n        curRecord.find('.u_chname').val(u_chname);\n        curRecord.find('.u_phone').val(u_phone);\n        curRecord.find('.u_role').val(u_role);\n        curRecord.find('.u_email').val(u_email);\n    }else{\n        curRecord.remove();\n    }\n    // 判断是否为最后一行\n    var record_len = $(\"#user_table\").find('.user_record').length;\n    if(record_len == 0){\n        $(\"#no_record_row\").show();\n    }\n    return false;\n});\n//删除\n$('#user_table_div').on('click','.user_del_btn',function(){\n    var curRecord = $(this).closest('.user_record');\n\n    var user_id = curRecord.attr('user_id');\n    var u_username = curRecord.find('.u_username').val();\n    var u_chname = curRecord.find('.u_chname').val();\n\n    console.log(user_id);\n    if (user_id){\n        var url = site_url + 'accounts/user/' + user_id + '/';\n        var content = \"<div class='t_s14'>\" + gettext(\"您确定删除该用户吗?\") + \"<br>\" + gettext(\"用户名 : \")+ u_username + \"</div>\";\n        var width = 340;\n        art.dialog({\n            title: gettext(\"删除确认\"),\n            width: width,\n            icon: 'question',\n            lock: true,\n            content: content,\n            ok: function(){\n                art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: gettext('正在进行删除操作，请稍后...')});\n                $.ajax({\n                    url: url,\n                    type: \"DELETE\",\n                    success: function(data){\n                        art.dialog({id: 'bktips'}).close();\n                        if(data.result){\n                            art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: data.message}).time(2);\n                            curRecord.remove();\n                            // get_user(1);\n                            get_all_users(1);\n                        }else{\n                            art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message});\n                        }\n                    },\n                    dataType: \"json\"\n                });\n            },\n            cancel: function(){},\n            okVal: gettext(\"确认删除\"),\n            cancelVal: gettext(\"取消\")\n        });\n    }\n});\n// 重置密码\n$('#user_table_div').on('click','.user_rest_btn',function(){\n        $('.error_tip').hide();\n        $(\".password_input\").val('');\n        $(\"#password_tip\").text('');\n        var curRecord = $(this).closest('.user_record');\n\n        var user_id = curRecord.attr('user_id');\n        var username = curRecord.find('.u_username').val();\n        art.dialog({\n            id: \"bkpwd\",\n            title:gettext(\"重置密码\"),\n            lock: true,\n            width: 505,\n            content: $(\"#change_password_div\").get(0),\n            cancelVal: gettext(\"取消\"),\n            cancel: function(){\n            },\n            okVal: gettext(\"重置密码\"),\n            ok: function(){\n                var flag = true;\n                $('.error_tip').hide();\n                $(\"#pattern_tip\").css('color', 'black');\n                $(\".password_input\").each(function(){\n                    var curl_val = $.trim($(this).val());\n                    if(!curl_val){\n                        $(this).next('.error_tip').show();\n                        $(this).focus();\n                        flag = false;\n                        return false;\n                    }\n                    // 第一个密码需要验证格式\n                    if (!curl_val.match(/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9!@#\\$%\\^\\*\\(\\)-_\\+=]{8,20}$/) && $(this).attr('name')=='password1'){\n                        $(\"#pattern_tip\").css('color', 'red');\n                        $(this).focus();\n                        flag = false;\n                        return false;\n                    }\n                });\n                if(!flag){\n                    return false;\n                }\n                var password1 = $.trim($(\"#id_password1\").val());\n                var password2 = $.trim($(\"#id_password2\").val());\n                if(password1 != password2){\n                    $(\"#password_tip\").text(gettext('两次输入的新密码不一致'));\n                    flag = false;\n                }\n                if(!flag){\n                    return false;\n                }else{\n                    var url = site_url + 'accounts/user/' + user_id + \"/password/\";\n                    var post_flag = true;\n                    $.ajax({\n                        url: url,\n                        type: 'PUT',\n                        data: {'new_password1':password1, 'new_password2':password2},\n                        success: function(data){\n                            if(!data.result){\n                                $(\"#password_tip\").text(data.message);\n                                post_flag = false;\n                            }\n                        },\n                        dataType: 'json',\n                        async: false,\n                    });\n                    // 出错则不关闭当前对话框\n                    if(!post_flag){\n                      return false;\n                    }else{\n                        art.dialog({width: 300,icon: 'succeed',lock: true,content: gettext('密码重置成功')}).time(2);\n                    }\n                }\n            }\n        });\n})\n"
  },
  {
    "path": "paas-ce/paas/login/static/modal/icon/iconfont.css",
    "content": "@font-face {\n  font-family: \"iconfont\";\n  src: url('iconfont.eot?t=1578621765768');\n  /* IE9 */\n  src: url('iconfont.eot?t=1578621765768#iefix') format('embedded-opentype'),\n    /* IE6-IE8 */\n    url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAKQAAsAAAAABlAAAAJEAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcApcdgE2AiQDCAsGAAQgBYRtBy8bmwURBTzJfgy4G0zqdEmtvjWxID7fRc6gRcrMzB8P/6293jczu0FQiConEtglBWIjYqsAja5QbBTKsvD/aHOMhqVcSKxIRu07M+5gHz8cs9mypRg1RKvNaNOGR4DBixDBSC8tku3mE/dO/wT6IKsHlONeNNakSV1AXRxIAe6FUWQllMfWMHaBS7hPoNWIJbE72T+lWWEtC8Sj6u51zbmworBcs1DX7C3iqUpzepyeeBJ+Pv5ZjmaSKrMajtHeLZuf2i7Ihw245BMiBHS4QsYSCnGqNn3EyIJxWWu6mGBftcHPutHwXWKvf56oWdXtYAgq7knpqm41l+C2xhrC9KhfjhhSZ980xxZnXs+FL0+9xNtcn361vyO4fv7MoXiInx+Ryyb6Wk7pUCD4f6x8e2T11zwq4Mvafy+0Ff28NO/OE/wWZc+eoqstZyqqsnYwGTpdU6tWNGB/rx9jLQP3kA/NBkZ4mwynyJpNkYVdQqXNCmrNNtCKXDQ93KaPZIvSggU3gNDtjqTTO2TdXmRh36gM+qLWHTZanQk9s81MVE5JTDTmkB6gyrgnx62dqHaGxaZNZFYd8iuUqopB4PrF3BR7lHNsUNsi1JqAJHcwAY9h2zIMkmvMtFtqPUSeR3UvcjPuDMcOCSU0lAOpA1DJsB75wzWn9P4ZVNhoJWRLV01+BUlKNTkIuPwe5NTQ9+q6l2eUrUJI0wggEuuACZiFWi0GhvpZNZTRXOWI5CDi2f2or8Fd39R93RFoZVlT2FOy6mbLCg0DAAA=') format('woff2'),\n    url('iconfont.woff?t=1578621765768') format('woff'),\n    url('iconfont.ttf?t=1578621765768') format('truetype'),\n    /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */\n    url('iconfont.svg?t=1578621765768#iconfont') format('svg');\n  /* iOS 4.1- */\n}\n\n.iconfont {\n  font-family: \"iconfont\" !important;\n  font-size: 20px;\n  font-style: normal;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-close:before {\n  content: \"\\e606\";\n}"
  },
  {
    "path": "paas-ce/paas/login/static/modal/icon/iconfont.js",
    "content": "!function(l){var e,d='<svg><symbol id=\"icon-close\" viewBox=\"0 0 1024 1024\"><path d=\"M562.28 513.001l197.101-197.082c13.61-13.609 13.587-35.657-0.022-49.268-13.609-13.609-35.657-13.621-49.268-0.011L513.005 463.728 315.908 266.641c-13.61-13.61-35.658-13.61-49.268 0-13.609 13.609-13.609 35.669 0 49.278l197.083 197.088-197.082 197.085c-13.609 13.609-13.609 35.668 0 49.279 13.609 13.609 35.657 13.586 49.245 0l197.109-197.09 197.073 197.078c13.633 13.621 35.681 13.609 49.29 0s13.633-35.658 0.022-49.268l-197.1-197.09z\"  ></path></symbol></svg>',t=(e=document.getElementsByTagName(\"script\"))[e.length-1].getAttribute(\"data-injectcss\");if(t&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(e){console&&console.log(e)}}!function(e){if(document.addEventListener)if(~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState))setTimeout(e,0);else{var t=function(){document.removeEventListener(\"DOMContentLoaded\",t,!1),e()};document.addEventListener(\"DOMContentLoaded\",t,!1)}else document.attachEvent&&(o=e,i=l.document,c=!1,(d=function(){try{i.documentElement.doScroll(\"left\")}catch(e){return void setTimeout(d,50)}n()})(),i.onreadystatechange=function(){\"complete\"==i.readyState&&(i.onreadystatechange=null,n())});function n(){c||(c=!0,o())}var o,i,c,d}(function(){var e,t,n,o,i,c;(e=document.createElement(\"div\")).innerHTML=d,d=null,(t=e.getElementsByTagName(\"svg\")[0])&&(t.setAttribute(\"aria-hidden\",\"true\"),t.style.position=\"absolute\",t.style.width=0,t.style.height=0,t.style.overflow=\"hidden\",n=t,(o=document.body).firstChild?(i=n,(c=o.firstChild).parentNode.insertBefore(i,c)):o.appendChild(n))})}(window);"
  },
  {
    "path": "paas-ce/paas/login/static/modal/modal.css",
    "content": ".modal-fade-enter-active {\r\n  animation: dialog-fade-in .3s;\r\n}\r\n\r\n.modal-fade-leave-active {\r\n  animation: dialog-fade-out .3s;\r\n}\r\n\r\n@keyframes dialog-fade-in {\r\n  0% {\r\n    transform: translate3d(0, -20px, 0);\r\n    opacity: 0;\r\n  }\r\n\r\n  100% {\r\n    transform: translate3d(0, 0, 0);\r\n    opacity: 1;\r\n  }\r\n}\r\n\r\n@keyframes dialog-fade-out {\r\n  0% {\r\n    transform: translate3d(0, 0, 0);\r\n    opacity: 1;\r\n  }\r\n\r\n  100% {\r\n    transform: translate3d(0, -20px, 0);\r\n    opacity: 0;\r\n  }\r\n}\r\n\r\n.m-modal__wrapper {\r\n  display:none;\r\n  position: fixed;\r\n  top: 0;\r\n  right: 0;\r\n  bottom: 0;\r\n  left: 0;\r\n  overflow: auto;\r\n  margin: 0;\r\n  background: rgba(0, 0, 0, .5);\r\n  z-index:101;\r\n}\r\n\r\n.m-modal__container {\r\n  width: 25%;\r\n  position: relative;\r\n  margin: 0 auto 50px;\r\n  background: #fff;\r\n  border-radius: 2px;\r\n  box-shadow: 0 1px 3px rgba(0, 0, 0, .3);\r\n  box-sizing: border-box;\r\n  margin-top: 15vh;\r\n  animation: dialog-fade-in .3s;\r\n  z-index: 102;\r\n}\r\n\r\n.m-modal__header {\r\n  padding: 20px 20px 10px;\r\n}\r\n\r\n.m-modal__title {\r\n  line-height: 24px;\r\n  font-size: 18px;\r\n  color: #303133;\r\n}\r\n\r\nbutton {\r\n  -webkit-appearance: button;\r\n  -webkit-writing-mode: horizontal-tb !important;\r\n  text-rendering: auto;\r\n  letter-spacing: normal;\r\n  word-spacing: normal;\r\n  text-transform: none;\r\n  text-indent: 0px;\r\n  text-shadow: none;\r\n  display: inline-block;\r\n  text-align: center;\r\n  align-items: flex-start;\r\n  cursor: default;\r\n  box-sizing: border-box;\r\n  margin: 0;\r\n}\r\n\r\n.m-modal__headerbtn {\r\n  position: absolute;\r\n  top: 20px;\r\n  right: 20px;\r\n  padding: 0;\r\n  background: transparent;\r\n  border: none;\r\n  outline: none;\r\n  cursor: pointer;\r\n  font-size: 16px;\r\n}\r\n\r\n.m-modal__close {\r\n  color: #909399;\r\n}\r\n\r\n.m-modal__headerbtn:hover .m-modal__close {\r\n  color: #409EFF;\r\n}\r\n\r\n.m-modal__body {\r\n  padding: 30px 20px;\r\n  color: #606266;\r\n  font-size: 14px;\r\n  word-break: break-all;\r\n}\r\n\r\n.m-modal__footer {\r\n  padding: 10px 20px 20px;\r\n  text-align: right;\r\n  box-sizing: border-box;\r\n}\r\n\r\n.m-modal__footer button:first-child {\r\n  margin-right: 10px;\r\n}\r\n\r\n.m-modal-button {\r\n  display: inline-block;\r\n  line-height: 1;\r\n  white-space: nowrap;\r\n  cursor: pointer;\r\n  background: #fff;\r\n  border: 1px solid #dcdfe6;\r\n  color: #606266;\r\n  -webkit-appearance: none;\r\n  text-align: center;\r\n  box-sizing: border-box;\r\n  outline: none;\r\n  margin: 0;\r\n  transition: .1s;\r\n  font-weight: 500;\r\n  -moz-user-select: none;\r\n  -webkit-user-select: none;\r\n  -ms-user-select: none;\r\n  padding: 12px 20px;\r\n  font-size: 14px;\r\n  border-radius: 4px;\r\n}\r\n\r\n.m-modal-button+.m-modal-button {\r\n  margin-left: 10px;\r\n}\r\n\r\n.m-modal-button:focus,\r\n.m-modal-button:hover {\r\n  color: #409eff;\r\n  border-color: #c6e2ff;\r\n  background-color: #ecf5ff;\r\n}\r\n\r\n.m-modal--primary {\r\n  color: #fff;\r\n  background-color: #409eff;\r\n  border-color: #409eff;\r\n}\r\n\r\n.m-modal--primary:focus,\r\n.m-modal--primary:hover {\r\n  background: #66b1ff;\r\n  border-color: #66b1ff;\r\n  color: #fff;\r\n}\r\n#qywxCode{\r\n text-align:center;\r\n}\r\n\r\n.other_login{\r\n display:flex;\r\n align-items:center;\r\n justify-content:space-between;\r\n padding-top:20px;\r\n}\r\n.other_login>.other_login_line{\r\n width:80px;\r\n height:1px;\r\n background:#eeeeee;\r\n}\r\n\r\n.qywxbox{\r\n display:flex;\r\n align-items:center;\r\n justify-content:space-between;\r\n margin-top:15px;\r\n}\r\n.qywxbox>div{\r\n display:flex;\r\n align-items:center;\r\n}\r\n.qywxbox>.qywxbox_enable{\r\n cursor:pointer;\r\n color:#333;\r\n}\r\n.qywxbox>.qywxbox_enable:hover{\r\n color:#0ba360;\r\n}\r\n.qywxbox>.qywxbox_disabled{\r\n cursor:not-allowed;\r\n color:#888;\r\n}\r\n\r\n.qywxbox img{\r\n width:20px;\r\n/* height:20px;*/\r\n}\r\n.qywxbox span{\r\n padding-left:2px;\r\n}\r\n\r\n\r\n.oauth_box,.sso_box{\r\n  position:relative;\r\n}\r\n.oauth_box:hover>.auth_select_box{\r\n\topacity:1;\r\n\tz-index:10;\r\n\ttop:20px;\r\n}\r\n.sso_box:hover>.auth_select_box{\r\n\topacity:1;\r\n\tz-index:10;\r\n\ttop:20px;\r\n}\r\n.auth_select_box{\r\n\tposition:absolute;\r\n\ttop:10px;\r\n\tleft:0;\r\n\tbox-shadow:0px 0px 6px 0px rgba(12, 34, 65, 0.2);\r\n\tbackground:#ffffff;\r\n\tmin-width:100px;\r\n\tmax-width:130px;\r\n\tz-index:-10;\r\n\tborder-radius:2px;\r\n\ttransition:all .2s;\r\n\topacity:0;\r\n\t\r\n}\r\n.auth_select_box>div{\r\n\tpadding:5px 10px;\r\n\ttransition:all .3s;\r\n\tdisplay:flex;\r\n\tflex-direction:row;\r\n\talign-items:center;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\t\r\n\tcolor:#333333;\r\n}\r\n.auth_select_box>div>img{\r\n\twidth:20px;\r\n\tpadding-right:3px;\r\n}\r\n.auth_select_box>div>span{\r\n\toverflow: hidden;\r\n\twhite-space: nowrap;\r\n\ttext-overflow: ellipsis;\t\r\n}\r\n.auth_select_box>div:hover{\r\n\tbackground:#cce3d5;\r\n\tcolor:#0ba360;\r\n}\r\n.auth_select_box>.disabled_auth:hover{\r\n\tcolor:#888888;\r\n\tcursor:not-allowed;\r\n\tbackground:#ffffff;\r\n}\r\n.auth_select_box>.disabled_auth{\r\n\tcolor:#888888;\r\n}\r\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/@ant-design/icons-vue-ym-L-X2r.js",
    "content": "/**\n* @vue/shared v3.5.22\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function An(e){const t=Object.create(null);for(const r of e.split(\",\"))t[r]=1;return r=>r in t}const Z={},yt=[],Ne=()=>{},to=()=>!1,Ar=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Mn=e=>e.startsWith(\"onUpdate:\"),ae=Object.assign,Tn=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},Zs=Object.prototype.hasOwnProperty,q=(e,t)=>Zs.call(e,t),L=Array.isArray,_t=e=>Mr(e)===\"[object Map]\",ro=e=>Mr(e)===\"[object Set]\",R=e=>typeof e==\"function\",re=e=>typeof e==\"string\",it=e=>typeof e==\"symbol\",Q=e=>e!==null&&typeof e==\"object\",no=e=>(Q(e)||R(e))&&R(e.then)&&R(e.catch),io=Object.prototype.toString,Mr=e=>io.call(e),Qs=e=>Mr(e).slice(8,-1),ao=e=>Mr(e)===\"[object Object]\",En=e=>re(e)&&e!==\"NaN\"&&e[0]!==\"-\"&&\"\"+parseInt(e,10)===e,Dt=An(\",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"),Tr=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},Ys=/-\\w/g,xe=Tr(e=>e.replace(Ys,t=>t.slice(1).toUpperCase())),Xs=/\\B([A-Z])/g,bt=Tr(e=>e.replace(Xs,\"-$1\").toLowerCase()),Er=Tr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ur=Tr(e=>e?`on${Er(e)}`:\"\"),tt=(e,t)=>!Object.is(e,t),Wr=(e,...t)=>{for(let r=0;r<e.length;r++)e[r](...t)},oo=(e,t,r,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:r})},ks=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ks=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ei;const $r=()=>ei||(ei=typeof globalThis<\"u\"?globalThis:typeof self<\"u\"?self:typeof window<\"u\"?window:typeof global<\"u\"?global:{});function $n(e){if(L(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],i=re(n)?nc(n):$n(n);if(i)for(const a in i)t[a]=i[a]}return t}else if(re(e)||Q(e))return e}const ec=/;(?![^(]*\\))/g,tc=/:([^]+)/,rc=/\\/\\*[^]*?\\*\\//g;function nc(e){const t={};return e.replace(rc,\"\").split(ec).forEach(r=>{if(r){const n=r.split(tc);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Hn(e){let t=\"\";if(re(e))t=e;else if(L(e))for(let r=0;r<e.length;r++){const n=Hn(e[r]);n&&(t+=n+\" \")}else if(Q(e))for(const r in e)e[r]&&(t+=r+\" \");return t.trim()}const ic=\"itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly\",ac=An(ic);function lo(e){return!!e||e===\"\"}const so=e=>!!(e&&e.__v_isRef===!0),oc=e=>re(e)?e:e==null?\"\":L(e)||Q(e)&&(e.toString===io||!R(e.toString))?so(e)?oc(e.value):JSON.stringify(e,co,2):String(e),co=(e,t)=>so(t)?co(e,t.value):_t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,i],a)=>(r[qr(n,a)+\" =>\"]=i,r),{})}:ro(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>qr(r))}:it(t)?qr(t):Q(t)&&!L(t)&&!ao(t)?String(t):t,qr=(e,t=\"\")=>{var r;return it(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**\n* @vue/reactivity v3.5.22\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let ue;class fo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ue,!t&&ue&&(this.index=(ue.scopes||(ue.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].pause();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].resume();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].resume()}}run(t){if(this._active){const r=ue;try{return ue=this,t()}finally{ue=r}}}on(){++this._on===1&&(this.prevScope=ue,ue=this)}off(){this._on>0&&--this._on===0&&(ue=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(this.effects.length=0,r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.cleanups.length=0,this.scopes){for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function Fd(e){return new fo(e)}function lc(){return ue}function zd(e,t=!1){ue&&ue.cleanups.push(e)}let K;const Gr=new WeakSet;class uo{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ue&&ue.active&&ue.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Gr.has(this)&&(Gr.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||po(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ti(this),go(this);const t=K,r=Me;K=this,Me=!0;try{return this.fn()}finally{bo(this),K=t,Me=r,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Rn(t);this.deps=this.depsTail=void 0,ti(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Gr.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){cn(this)&&this.run()}get dirty(){return cn(this)}}let ho=0,Rt,Ft;function po(e,t=!1){if(e.flags|=8,t){e.next=Ft,Ft=e;return}e.next=Rt,Rt=e}function Ln(){ho++}function Dn(){if(--ho>0)return;if(Ft){let t=Ft;for(Ft=void 0;t;){const r=t.next;t.next=void 0,t.flags&=-9,t=r}}let e;for(;Rt;){let t=Rt;for(Rt=void 0;t;){const r=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=r}}if(e)throw e}function go(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function bo(e){let t,r=e.depsTail,n=r;for(;n;){const i=n.prevDep;n.version===-1?(n===r&&(r=i),Rn(n),sc(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=r}function cn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(mo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function mo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Gt)||(e.globalVersion=Gt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!cn(e))))return;e.flags|=2;const t=e.dep,r=K,n=Me;K=e,Me=!0;try{go(e);const i=e.fn(e._value);(t.version===0||tt(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{K=r,Me=n,bo(e),e.flags&=-3}}function Rn(e,t=!1){const{dep:r,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),r.subs===e&&(r.subs=n,!n&&r.computed)){r.computed.flags&=-5;for(let a=r.computed.deps;a;a=a.nextDep)Rn(a,!0)}!t&&!--r.sc&&r.map&&r.map.delete(r.key)}function sc(e){const{prevDep:t,nextDep:r}=e;t&&(t.nextDep=r,e.prevDep=void 0),r&&(r.prevDep=t,e.nextDep=void 0)}let Me=!0;const vo=[];function Je(){vo.push(Me),Me=!1}function Ze(){const e=vo.pop();Me=e===void 0?!0:e}function ti(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const r=K;K=void 0;try{t()}finally{K=r}}}let Gt=0;class cc{constructor(t,r){this.sub=t,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Hr{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!K||!Me||K===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==K)r=this.activeLink=new cc(K,this),K.deps?(r.prevDep=K.depsTail,K.depsTail.nextDep=r,K.depsTail=r):K.deps=K.depsTail=r,Oo(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const n=r.nextDep;n.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=n),r.prevDep=K.depsTail,r.nextDep=void 0,K.depsTail.nextDep=r,K.depsTail=r,K.deps===r&&(K.deps=n)}return r}trigger(t){this.version++,Gt++,this.notify(t)}notify(t){Ln();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{Dn()}}}function Oo(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Oo(n)}const r=e.dep.subs;r!==e&&(e.prevSub=r,r&&(r.nextSub=e)),e.dep.subs=e}}const br=new WeakMap,pt=Symbol(\"\"),fn=Symbol(\"\"),Jt=Symbol(\"\");function de(e,t,r){if(Me&&K){let n=br.get(e);n||br.set(e,n=new Map);let i=n.get(r);i||(n.set(r,i=new Hr),i.map=n,i.key=r),i.track()}}function qe(e,t,r,n,i,a){const o=br.get(e);if(!o){Gt++;return}const l=s=>{s&&s.trigger()};if(Ln(),t===\"clear\")o.forEach(l);else{const s=L(e),d=s&&En(r);if(s&&r===\"length\"){const f=Number(n);o.forEach((h,g)=>{(g===\"length\"||g===Jt||!it(g)&&g>=f)&&l(h)})}else switch((r!==void 0||o.has(void 0))&&l(o.get(r)),d&&l(o.get(Jt)),t){case\"add\":s?d&&l(o.get(\"length\")):(l(o.get(pt)),_t(e)&&l(o.get(fn)));break;case\"delete\":s||(l(o.get(pt)),_t(e)&&l(o.get(fn)));break;case\"set\":_t(e)&&l(o.get(pt));break}}Dn()}function fc(e,t){const r=br.get(e);return r&&r.get(t)}function mt(e){const t=U(e);return t===e?t:(de(t,\"iterate\",Jt),Ce(e)?t:t.map(se))}function Lr(e){return de(e=U(e),\"iterate\",Jt),e}const uc={__proto__:null,[Symbol.iterator](){return Jr(this,Symbol.iterator,se)},concat(...e){return mt(this).concat(...e.map(t=>L(t)?mt(t):t))},entries(){return Jr(this,\"entries\",e=>(e[1]=se(e[1]),e))},every(e,t){return Be(this,\"every\",e,t,void 0,arguments)},filter(e,t){return Be(this,\"filter\",e,t,r=>r.map(se),arguments)},find(e,t){return Be(this,\"find\",e,t,se,arguments)},findIndex(e,t){return Be(this,\"findIndex\",e,t,void 0,arguments)},findLast(e,t){return Be(this,\"findLast\",e,t,se,arguments)},findLastIndex(e,t){return Be(this,\"findLastIndex\",e,t,void 0,arguments)},forEach(e,t){return Be(this,\"forEach\",e,t,void 0,arguments)},includes(...e){return Zr(this,\"includes\",e)},indexOf(...e){return Zr(this,\"indexOf\",e)},join(e){return mt(this).join(e)},lastIndexOf(...e){return Zr(this,\"lastIndexOf\",e)},map(e,t){return Be(this,\"map\",e,t,void 0,arguments)},pop(){return Tt(this,\"pop\")},push(...e){return Tt(this,\"push\",e)},reduce(e,...t){return ri(this,\"reduce\",e,t)},reduceRight(e,...t){return ri(this,\"reduceRight\",e,t)},shift(){return Tt(this,\"shift\")},some(e,t){return Be(this,\"some\",e,t,void 0,arguments)},splice(...e){return Tt(this,\"splice\",e)},toReversed(){return mt(this).toReversed()},toSorted(e){return mt(this).toSorted(e)},toSpliced(...e){return mt(this).toSpliced(...e)},unshift(...e){return Tt(this,\"unshift\",e)},values(){return Jr(this,\"values\",se)}};function Jr(e,t,r){const n=Lr(e),i=n[t]();return n!==e&&!Ce(e)&&(i._next=i.next,i.next=()=>{const a=i._next();return a.done||(a.value=r(a.value)),a}),i}const dc=Array.prototype;function Be(e,t,r,n,i,a){const o=Lr(e),l=o!==e&&!Ce(e),s=o[t];if(s!==dc[t]){const h=s.apply(e,a);return l?se(h):h}let d=r;o!==e&&(l?d=function(h,g){return r.call(this,se(h),g,e)}:r.length>2&&(d=function(h,g){return r.call(this,h,g,e)}));const f=s.call(o,d,n);return l&&i?i(f):f}function ri(e,t,r,n){const i=Lr(e);let a=r;return i!==e&&(Ce(e)?r.length>3&&(a=function(o,l,s){return r.call(this,o,l,s,e)}):a=function(o,l,s){return r.call(this,o,se(l),s,e)}),i[t](a,...n)}function Zr(e,t,r){const n=U(e);de(n,\"iterate\",Jt);const i=n[t](...r);return(i===-1||i===!1)&&Nn(r[0])?(r[0]=U(r[0]),n[t](...r)):i}function Tt(e,t,r=[]){Je(),Ln();const n=U(e)[t].apply(e,r);return Dn(),Ze(),n}const hc=An(\"__proto__,__v_isRef,__isVue\"),yo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==\"arguments\"&&e!==\"caller\").map(e=>Symbol[e]).filter(it));function pc(e){it(e)||(e=String(e));const t=U(this);return de(t,\"has\",e),t.hasOwnProperty(e)}class _o{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){if(r===\"__v_skip\")return t.__v_skip;const i=this._isReadonly,a=this._isShallow;if(r===\"__v_isReactive\")return!i;if(r===\"__v_isReadonly\")return i;if(r===\"__v_isShallow\")return a;if(r===\"__v_raw\")return n===(i?a?Pc:Co:a?Po:wo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=L(t);if(!i){let s;if(o&&(s=uc[r]))return s;if(r===\"hasOwnProperty\")return pc}const l=Reflect.get(t,r,le(t)?t:n);if((it(r)?yo.has(r):hc(r))||(i||de(t,\"get\",r),a))return l;if(le(l)){const s=o&&En(r)?l:l.value;return i&&Q(s)?dn(s):s}return Q(l)?i?dn(l):Dr(l):l}}class So extends _o{constructor(t=!1){super(!1,t)}set(t,r,n,i){let a=t[r];if(!this._isShallow){const s=rt(a);if(!Ce(n)&&!rt(n)&&(a=U(a),n=U(n)),!L(t)&&le(a)&&!le(n))return s||(a.value=n),!0}const o=L(t)&&En(r)?Number(r)<t.length:q(t,r),l=Reflect.set(t,r,n,le(t)?t:i);return t===U(i)&&(o?tt(n,a)&&qe(t,\"set\",r,n):qe(t,\"add\",r,n)),l}deleteProperty(t,r){const n=q(t,r);t[r];const i=Reflect.deleteProperty(t,r);return i&&n&&qe(t,\"delete\",r,void 0),i}has(t,r){const n=Reflect.has(t,r);return(!it(r)||!yo.has(r))&&de(t,\"has\",r),n}ownKeys(t){return de(t,\"iterate\",L(t)?\"length\":pt),Reflect.ownKeys(t)}}class gc extends _o{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const bc=new So,mc=new gc,vc=new So(!0);const un=e=>e,rr=e=>Reflect.getPrototypeOf(e);function Oc(e,t,r){return function(...n){const i=this.__v_raw,a=U(i),o=_t(a),l=e===\"entries\"||e===Symbol.iterator&&o,s=e===\"keys\"&&o,d=i[e](...n),f=r?un:t?mr:se;return!t&&de(a,\"iterate\",s?fn:pt),{next(){const{value:h,done:g}=d.next();return g?{value:h,done:g}:{value:l?[f(h[0]),f(h[1])]:f(h),done:g}},[Symbol.iterator](){return this}}}}function nr(e){return function(...t){return e===\"delete\"?!1:e===\"clear\"?void 0:this}}function yc(e,t){const r={get(i){const a=this.__v_raw,o=U(a),l=U(i);e||(tt(i,l)&&de(o,\"get\",i),de(o,\"get\",l));const{has:s}=rr(o),d=t?un:e?mr:se;if(s.call(o,i))return d(a.get(i));if(s.call(o,l))return d(a.get(l));a!==o&&a.get(i)},get size(){const i=this.__v_raw;return!e&&de(U(i),\"iterate\",pt),i.size},has(i){const a=this.__v_raw,o=U(a),l=U(i);return e||(tt(i,l)&&de(o,\"has\",i),de(o,\"has\",l)),i===l?a.has(i):a.has(i)||a.has(l)},forEach(i,a){const o=this,l=o.__v_raw,s=U(l),d=t?un:e?mr:se;return!e&&de(s,\"iterate\",pt),l.forEach((f,h)=>i.call(a,d(f),d(h),o))}};return ae(r,e?{add:nr(\"add\"),set:nr(\"set\"),delete:nr(\"delete\"),clear:nr(\"clear\")}:{add(i){!t&&!Ce(i)&&!rt(i)&&(i=U(i));const a=U(this);return rr(a).has.call(a,i)||(a.add(i),qe(a,\"add\",i,i)),this},set(i,a){!t&&!Ce(a)&&!rt(a)&&(a=U(a));const o=U(this),{has:l,get:s}=rr(o);let d=l.call(o,i);d||(i=U(i),d=l.call(o,i));const f=s.call(o,i);return o.set(i,a),d?tt(a,f)&&qe(o,\"set\",i,a):qe(o,\"add\",i,a),this},delete(i){const a=U(this),{has:o,get:l}=rr(a);let s=o.call(a,i);s||(i=U(i),s=o.call(a,i)),l&&l.call(a,i);const d=a.delete(i);return s&&qe(a,\"delete\",i,void 0),d},clear(){const i=U(this),a=i.size!==0,o=i.clear();return a&&qe(i,\"clear\",void 0,void 0),o}}),[\"keys\",\"values\",\"entries\",Symbol.iterator].forEach(i=>{r[i]=Oc(i,e,t)}),r}function Fn(e,t){const r=yc(e,t);return(n,i,a)=>i===\"__v_isReactive\"?!e:i===\"__v_isReadonly\"?e:i===\"__v_raw\"?n:Reflect.get(q(r,i)&&i in n?r:n,i,a)}const _c={get:Fn(!1,!1)},Sc={get:Fn(!1,!0)},wc={get:Fn(!0,!1)};const wo=new WeakMap,Po=new WeakMap,Co=new WeakMap,Pc=new WeakMap;function Cc(e){switch(e){case\"Object\":case\"Array\":return 1;case\"Map\":case\"Set\":case\"WeakMap\":case\"WeakSet\":return 2;default:return 0}}function xc(e){return e.__v_skip||!Object.isExtensible(e)?0:Cc(Qs(e))}function Dr(e){return rt(e)?e:zn(e,!1,bc,_c,wo)}function jc(e){return zn(e,!1,vc,Sc,Po)}function dn(e){return zn(e,!0,mc,wc,Co)}function zn(e,t,r,n,i){if(!Q(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=xc(e);if(a===0)return e;const o=i.get(e);if(o)return o;const l=new Proxy(e,a===2?n:r);return i.set(e,l),l}function St(e){return rt(e)?St(e.__v_raw):!!(e&&e.__v_isReactive)}function rt(e){return!!(e&&e.__v_isReadonly)}function Ce(e){return!!(e&&e.__v_isShallow)}function Nn(e){return e?!!e.__v_raw:!1}function U(e){const t=e&&e.__v_raw;return t?U(t):e}function Ac(e){return!q(e,\"__v_skip\")&&Object.isExtensible(e)&&oo(e,\"__v_skip\",!0),e}const se=e=>Q(e)?Dr(e):e,mr=e=>Q(e)?dn(e):e;function le(e){return e?e.__v_isRef===!0:!1}function ur(e){return xo(e,!1)}function Mc(e){return xo(e,!0)}function xo(e,t){return le(e)?e:new Tc(e,t)}class Tc{constructor(t,r){this.dep=new Hr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?t:U(t),this._value=r?t:se(t),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(t){const r=this._rawValue,n=this.__v_isShallow||Ce(t)||rt(t);t=n?t:U(t),tt(t,r)&&(this._rawValue=t,this._value=n?t:se(t),this.dep.trigger())}}function Nd(e){e.dep&&e.dep.trigger()}function jo(e){return le(e)?e.value:e}function Id(e){return R(e)?e():jo(e)}const Ec={get:(e,t,r)=>t===\"__v_raw\"?e:jo(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const i=e[t];return le(i)&&!le(r)?(i.value=r,!0):Reflect.set(e,t,r,n)}};function Ao(e){return St(e)?e:new Proxy(e,Ec)}class $c{constructor(t){this.__v_isRef=!0,this._value=void 0;const r=this.dep=new Hr,{get:n,set:i}=t(r.track.bind(r),r.trigger.bind(r));this._get=n,this._set=i}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Bd(e){return new $c(e)}function Vd(e){const t=L(e)?new Array(e.length):{};for(const r in e)t[r]=Mo(e,r);return t}class Hc{constructor(t,r,n){this._object=t,this._key=r,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return fc(U(this._object),this._key)}}class Lc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ud(e,t,r){return le(e)?e:R(e)?new Lc(e):Q(e)&&arguments.length>1?Mo(e,t,r):ur(e)}function Mo(e,t,r){const n=e[t];return le(n)?n:new Hc(e,t,r)}class Dc{constructor(t,r,n){this.fn=t,this.setter=r,this._value=void 0,this.dep=new Hr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Gt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&K!==this)return po(this,!0),!0}get value(){const t=this.dep.track();return mo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Rc(e,t,r=!1){let n,i;return R(e)?n=e:(n=e.get,i=e.set),new Dc(n,i,r)}const ir={},vr=new WeakMap;let ut;function Fc(e,t=!1,r=ut){if(r){let n=vr.get(r);n||vr.set(r,n=[]),n.push(e)}}function zc(e,t,r=Z){const{immediate:n,deep:i,once:a,scheduler:o,augmentJob:l,call:s}=r,d=T=>i?T:Ce(T)||i===!1||i===0?Ge(T,1):Ge(T);let f,h,g,y,j=!1,M=!1;if(le(e)?(h=()=>e.value,j=Ce(e)):St(e)?(h=()=>d(e),j=!0):L(e)?(M=!0,j=e.some(T=>St(T)||Ce(T)),h=()=>e.map(T=>{if(le(T))return T.value;if(St(T))return d(T);if(R(T))return s?s(T,2):T()})):R(e)?t?h=s?()=>s(e,2):e:h=()=>{if(g){Je();try{g()}finally{Ze()}}const T=ut;ut=f;try{return s?s(e,3,[y]):e(y)}finally{ut=T}}:h=Ne,t&&i){const T=h,V=i===!0?1/0:i;h=()=>Ge(T(),V)}const z=lc(),D=()=>{f.stop(),z&&z.active&&Tn(z.effects,f)};if(a&&t){const T=t;t=(...V)=>{T(...V),D()}}let N=M?new Array(e.length).fill(ir):ir;const W=T=>{if(!(!(f.flags&1)||!f.dirty&&!T))if(t){const V=f.run();if(i||j||(M?V.some((J,ie)=>tt(J,N[ie])):tt(V,N))){g&&g();const J=ut;ut=f;try{const ie=[V,N===ir?void 0:M&&N[0]===ir?[]:N,y];N=V,s?s(t,3,ie):t(...ie)}finally{ut=J}}}else f.run()};return l&&l(W),f=new uo(h),f.scheduler=o?()=>o(W,!1):W,y=T=>Fc(T,!1,f),g=f.onStop=()=>{const T=vr.get(f);if(T){if(s)s(T,4);else for(const V of T)V();vr.delete(f)}},t?n?W(!0):N=f.run():o?o(W.bind(null,!0),!0):f.run(),D.pause=f.pause.bind(f),D.resume=f.resume.bind(f),D.stop=D,D}function Ge(e,t=1/0,r){if(t<=0||!Q(e)||e.__v_skip||(r=r||new Map,(r.get(e)||0)>=t))return e;if(r.set(e,t),t--,le(e))Ge(e.value,t,r);else if(L(e))for(let n=0;n<e.length;n++)Ge(e[n],t,r);else if(ro(e)||_t(e))e.forEach(n=>{Ge(n,t,r)});else if(ao(e)){for(const n in e)Ge(e[n],t,r);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ge(e[n],t,r)}return e}/**\n* @vue/runtime-core v3.5.22\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function kt(e,t,r,n){try{return n?e(...n):e()}catch(i){Rr(i,t,r)}}function Te(e,t,r,n){if(R(e)){const i=kt(e,t,r,n);return i&&no(i)&&i.catch(a=>{Rr(a,t,r)}),i}if(L(e)){const i=[];for(let a=0;a<e.length;a++)i.push(Te(e[a],t,r,n));return i}}function Rr(e,t,r,n=!0){const i=t?t.vnode:null,{errorHandler:a,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||Z;if(t){let l=t.parent;const s=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${r}`;for(;l;){const f=l.ec;if(f){for(let h=0;h<f.length;h++)if(f[h](e,s,d)===!1)return}l=l.parent}if(a){Je(),kt(a,null,10,[e,s,d]),Ze();return}}Nc(e,r,i,n,o)}function Nc(e,t,r,n=!0,i=!1){if(i)throw e;console.error(e)}const be=[];let Fe=-1;const wt=[];let ke=null,vt=0;const To=Promise.resolve();let Or=null;function Eo(e){const t=Or||To;return e?t.then(this?e.bind(this):e):t}function Ic(e){let t=Fe+1,r=be.length;for(;t<r;){const n=t+r>>>1,i=be[n],a=Zt(i);a<e||a===e&&i.flags&2?t=n+1:r=n}return t}function In(e){if(!(e.flags&1)){const t=Zt(e),r=be[be.length-1];!r||!(e.flags&2)&&t>=Zt(r)?be.push(e):be.splice(Ic(t),0,e),e.flags|=1,$o()}}function $o(){Or||(Or=To.then(Lo))}function Bc(e){L(e)?wt.push(...e):ke&&e.id===-1?ke.splice(vt+1,0,e):e.flags&1||(wt.push(e),e.flags|=1),$o()}function ni(e,t,r=Fe+1){for(;r<be.length;r++){const n=be[r];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;be.splice(r,1),r--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function Ho(e){if(wt.length){const t=[...new Set(wt)].sort((r,n)=>Zt(r)-Zt(n));if(wt.length=0,ke){ke.push(...t);return}for(ke=t,vt=0;vt<ke.length;vt++){const r=ke[vt];r.flags&4&&(r.flags&=-2),r.flags&8||r(),r.flags&=-2}ke=null,vt=0}}const Zt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Lo(e){try{for(Fe=0;Fe<be.length;Fe++){const t=be[Fe];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),kt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Fe<be.length;Fe++){const t=be[Fe];t&&(t.flags&=-2)}Fe=-1,be.length=0,Ho(),Or=null,(be.length||wt.length)&&Lo()}}let Se=null,Do=null;function yr(e){const t=Se;return Se=e,Do=e&&e.type.__scopeId||null,t}function Vc(e,t=Se,r){if(!t||e._n)return e;const n=(...i)=>{n._d&&wr(-1);const a=yr(t);let o;try{o=e(...i)}finally{yr(a),n._d&&wr(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Wd(e,t){if(Se===null)return e;const r=Br(Se),n=e.dirs||(e.dirs=[]);for(let i=0;i<t.length;i++){let[a,o,l,s=Z]=t[i];a&&(R(a)&&(a={mounted:a,updated:a}),a.deep&&Ge(o),n.push({dir:a,instance:r,value:o,oldValue:void 0,arg:l,modifiers:s}))}return e}function st(e,t,r,n){const i=e.dirs,a=t&&t.dirs;for(let o=0;o<i.length;o++){const l=i[o];a&&(l.oldValue=a[o].value);let s=l.dir[n];s&&(Je(),Te(s,r,8,[e.el,l,e,t]),Ze())}}const Ro=Symbol(\"_vte\"),Fo=e=>e.__isTeleport,zt=e=>e&&(e.disabled||e.disabled===\"\"),ii=e=>e&&(e.defer||e.defer===\"\"),ai=e=>typeof SVGElement<\"u\"&&e instanceof SVGElement,oi=e=>typeof MathMLElement==\"function\"&&e instanceof MathMLElement,hn=(e,t)=>{const r=e&&e.to;return re(r)?t?t(r):null:r},zo={name:\"Teleport\",__isTeleport:!0,process(e,t,r,n,i,a,o,l,s,d){const{mc:f,pc:h,pbc:g,o:{insert:y,querySelector:j,createText:M,createComment:z}}=d,D=zt(t.props);let{shapeFlag:N,children:W,dynamicChildren:T}=t;if(e==null){const V=t.el=M(\"\"),J=t.anchor=M(\"\");y(V,r,n),y(J,r,n);const ie=(H,I)=>{N&16&&f(W,H,I,i,a,o,l,s)},ne=()=>{const H=t.target=hn(t.props,j),I=No(H,t,M,y);H&&(o!==\"svg\"&&ai(H)?o=\"svg\":o!==\"mathml\"&&oi(H)&&(o=\"mathml\"),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(H),D||(ie(H,I),dr(t,!1)))};D&&(ie(r,J),dr(t,!0)),ii(t.props)?(t.el.__isMounted=!1,ge(()=>{ne(),delete t.el.__isMounted},a)):ne()}else{if(ii(t.props)&&e.el.__isMounted===!1){ge(()=>{zo.process(e,t,r,n,i,a,o,l,s,d)},a);return}t.el=e.el,t.targetStart=e.targetStart;const V=t.anchor=e.anchor,J=t.target=e.target,ie=t.targetAnchor=e.targetAnchor,ne=zt(e.props),H=ne?r:J,I=ne?V:ie;if(o===\"svg\"||ai(J)?o=\"svg\":(o===\"mathml\"||oi(J))&&(o=\"mathml\"),T?(g(e.dynamicChildren,T,H,i,a,o,l),Wn(e,t,!0)):s||h(e,t,H,I,i,a,o,l,!1),D)ne?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ar(t,r,V,d,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Y=t.target=hn(t.props,j);Y&&ar(t,Y,null,d,0)}else ne&&ar(t,J,ie,d,1);dr(t,D)}},remove(e,t,r,{um:n,o:{remove:i}},a){const{shapeFlag:o,children:l,anchor:s,targetStart:d,targetAnchor:f,target:h,props:g}=e;if(h&&(i(d),i(f)),a&&i(s),o&16){const y=a||!zt(g);for(let j=0;j<l.length;j++){const M=l[j];n(M,t,r,y,!!M.dynamicChildren)}}},move:ar,hydrate:Uc};function ar(e,t,r,{o:{insert:n},m:i},a=2){a===0&&n(e.targetAnchor,t,r);const{el:o,anchor:l,shapeFlag:s,children:d,props:f}=e,h=a===2;if(h&&n(o,t,r),(!h||zt(f))&&s&16)for(let g=0;g<d.length;g++)i(d[g],t,r,2);h&&n(l,t,r)}function Uc(e,t,r,n,i,a,{o:{nextSibling:o,parentNode:l,querySelector:s,insert:d,createText:f}},h){function g(M,z,D,N){z.anchor=h(o(M),z,l(M),r,n,i,a),z.targetStart=D,z.targetAnchor=N}const y=t.target=hn(t.props,s),j=zt(t.props);if(y){const M=y._lpa||y.firstChild;if(t.shapeFlag&16)if(j)g(e,t,M,M&&o(M));else{t.anchor=o(e);let z=M;for(;z;){if(z&&z.nodeType===8){if(z.data===\"teleport start anchor\")t.targetStart=z;else if(z.data===\"teleport anchor\"){t.targetAnchor=z,y._lpa=t.targetAnchor&&o(t.targetAnchor);break}}z=o(z)}t.targetAnchor||No(y,t,f,d),h(M&&o(M),t,y,r,n,i,a)}dr(t,j)}else j&&t.shapeFlag&16&&g(e,t,e,o(e));return t.anchor&&o(t.anchor)}const qd=zo;function dr(e,t){const r=e.ctx;if(r&&r.ut){let n,i;for(t?(n=e.el,i=e.anchor):(n=e.targetStart,i=e.targetAnchor);n&&n!==i;)n.nodeType===1&&n.setAttribute(\"data-v-owner\",r.uid),n=n.nextSibling;r.ut()}}function No(e,t,r,n){const i=t.targetStart=r(\"\"),a=t.targetAnchor=r(\"\");return i[Ro]=a,e&&(n(i,e),n(a,e)),a}const We=Symbol(\"_leaveCb\"),or=Symbol(\"_enterCb\");function Io(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Jo(()=>{e.isMounted=!0}),Qo(()=>{e.isUnmounting=!0}),e}const Pe=[Function,Array],Bo={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Pe,onEnter:Pe,onAfterEnter:Pe,onEnterCancelled:Pe,onBeforeLeave:Pe,onLeave:Pe,onAfterLeave:Pe,onLeaveCancelled:Pe,onBeforeAppear:Pe,onAppear:Pe,onAfterAppear:Pe,onAppearCancelled:Pe},Vo=e=>{const t=e.subTree;return t.component?Vo(t.component):t},Wc={name:\"BaseTransition\",props:Bo,setup(e,{slots:t}){const r=xt(),n=Io();return()=>{const i=t.default&&Bn(t.default(),!0);if(!i||!i.length)return;const a=Uo(i),o=U(e),{mode:l}=o;if(n.isLeaving)return Qr(a);const s=li(a);if(!s)return Qr(a);let d=Qt(s,o,n,r,h=>d=h);s.type!==me&&gt(s,d);let f=r.subTree&&li(r.subTree);if(f&&f.type!==me&&!dt(f,s)&&Vo(r).type!==me){let h=Qt(f,o,n,r);if(gt(f,h),l===\"out-in\"&&s.type!==me)return n.isLeaving=!0,h.afterLeave=()=>{n.isLeaving=!1,r.job.flags&8||r.update(),delete h.afterLeave,f=void 0},Qr(a);l===\"in-out\"&&s.type!==me?h.delayLeave=(g,y,j)=>{const M=Wo(n,f);M[String(f.key)]=f,g[We]=()=>{y(),g[We]=void 0,delete d.delayedLeave,f=void 0},d.delayedLeave=()=>{j(),delete d.delayedLeave,f=void 0}}:f=void 0}else f&&(f=void 0);return a}}};function Uo(e){let t=e[0];if(e.length>1){for(const r of e)if(r.type!==me){t=r;break}}return t}const qc=Wc;function Wo(e,t){const{leavingVNodes:r}=e;let n=r.get(t.type);return n||(n=Object.create(null),r.set(t.type,n)),n}function Qt(e,t,r,n,i){const{appear:a,mode:o,persisted:l=!1,onBeforeEnter:s,onEnter:d,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:g,onLeave:y,onAfterLeave:j,onLeaveCancelled:M,onBeforeAppear:z,onAppear:D,onAfterAppear:N,onAppearCancelled:W}=t,T=String(e.key),V=Wo(r,e),J=(H,I)=>{H&&Te(H,n,9,I)},ie=(H,I)=>{const Y=I[1];J(H,I),L(H)?H.every(A=>A.length<=1)&&Y():H.length<=1&&Y()},ne={mode:o,persisted:l,beforeEnter(H){let I=s;if(!r.isMounted)if(a)I=z||s;else return;H[We]&&H[We](!0);const Y=V[T];Y&&dt(e,Y)&&Y.el[We]&&Y.el[We](),J(I,[H])},enter(H){let I=d,Y=f,A=h;if(!r.isMounted)if(a)I=D||d,Y=N||f,A=W||h;else return;let ee=!1;const fe=H[or]=Ie=>{ee||(ee=!0,Ie?J(A,[H]):J(Y,[H]),ne.delayedLeave&&ne.delayedLeave(),H[or]=void 0)};I?ie(I,[H,fe]):fe()},leave(H,I){const Y=String(e.key);if(H[or]&&H[or](!0),r.isUnmounting)return I();J(g,[H]);let A=!1;const ee=H[We]=fe=>{A||(A=!0,I(),fe?J(M,[H]):J(j,[H]),H[We]=void 0,V[Y]===e&&delete V[Y])};V[Y]=e,y?ie(y,[H,ee]):ee()},clone(H){const I=Qt(H,t,r,n,i);return i&&i(I),I}};return ne}function Qr(e){if(Fr(e))return e=nt(e),e.children=null,e}function li(e){if(!Fr(e))return Fo(e.type)&&e.children?Uo(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&R(r.default))return r.default()}}function gt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,gt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Bn(e,t=!1,r){let n=[],i=0;for(let a=0;a<e.length;a++){let o=e[a];const l=r==null?o.key:String(r)+String(o.key!=null?o.key:a);o.type===Ae?(o.patchFlag&128&&i++,n=n.concat(Bn(o.children,t,l))):(t||o.type!==me)&&n.push(l!=null?nt(o,{key:l}):o)}if(i>1)for(let a=0;a<n.length;a++)n[a].patchFlag=-2;return n}function Gc(e,t){return R(e)?ae({name:e.name},t,{setup:e}):e}function qo(e){e.ids=[e.ids[0]+e.ids[2]+++\"-\",0,0]}function Gd(e){const t=xt(),r=Mc(null);if(t){const i=t.refs===Z?t.refs={}:t.refs;Object.defineProperty(i,e,{enumerable:!0,get:()=>r.value,set:a=>r.value=a})}return r}const _r=new WeakMap;function Nt(e,t,r,n,i=!1){if(L(e)){e.forEach((j,M)=>Nt(j,t&&(L(t)?t[M]:t),r,n,i));return}if(It(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Nt(e,t,r,n.component.subTree);return}const a=n.shapeFlag&4?Br(n.component):n.el,o=i?null:a,{i:l,r:s}=e,d=t&&t.r,f=l.refs===Z?l.refs={}:l.refs,h=l.setupState,g=U(h),y=h===Z?to:j=>q(g,j);if(d!=null&&d!==s){if(si(t),re(d))f[d]=null,y(d)&&(h[d]=null);else if(le(d)){d.value=null;const j=t;j.k&&(f[j.k]=null)}}if(R(s))kt(s,l,12,[o,f]);else{const j=re(s),M=le(s);if(j||M){const z=()=>{if(e.f){const D=j?y(s)?h[s]:f[s]:s.value;if(i)L(D)&&Tn(D,a);else if(L(D))D.includes(a)||D.push(a);else if(j)f[s]=[a],y(s)&&(h[s]=f[s]);else{const N=[a];s.value=N,e.k&&(f[e.k]=N)}}else j?(f[s]=o,y(s)&&(h[s]=o)):M&&(s.value=o,e.k&&(f[e.k]=o))};if(o){const D=()=>{z(),_r.delete(e)};D.id=-1,_r.set(e,D),ge(D,r)}else si(e),z()}}}function si(e){const t=_r.get(e);t&&(t.flags|=8,_r.delete(e))}$r().requestIdleCallback;$r().cancelIdleCallback;const It=e=>!!e.type.__asyncLoader,Fr=e=>e.type.__isKeepAlive;function Jc(e,t){Go(e,\"a\",t)}function Zc(e,t){Go(e,\"da\",t)}function Go(e,t,r=he){const n=e.__wdc||(e.__wdc=()=>{let i=r;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(zr(t,n,r),r){let i=r.parent;for(;i&&i.parent;)Fr(i.parent.vnode)&&Qc(n,t,r,i),i=i.parent}}function Qc(e,t,r,n){const i=zr(t,e,n,!0);Yo(()=>{Tn(n[t],i)},r)}function zr(e,t,r=he,n=!1){if(r){const i=r[e]||(r[e]=[]),a=t.__weh||(t.__weh=(...o)=>{Je();const l=Kt(r),s=Te(t,r,e,o);return l(),Ze(),s});return n?i.unshift(a):i.push(a),a}}const Qe=e=>(t,r=he)=>{(!Xt||e===\"sp\")&&zr(e,(...n)=>t(...n),r)},Yc=Qe(\"bm\"),Jo=Qe(\"m\"),Xc=Qe(\"bu\"),Zo=Qe(\"u\"),Qo=Qe(\"bum\"),Yo=Qe(\"um\"),kc=Qe(\"sp\"),Kc=Qe(\"rtg\"),ef=Qe(\"rtc\");function tf(e,t=he){zr(\"ec\",e,t)}const Xo=\"components\",rf=\"directives\",ko=Symbol.for(\"v-ndc\");function Jd(e){return re(e)?Ko(Xo,e,!1)||e:e||ko}function Zd(e){return Ko(rf,e)}function Ko(e,t,r=!0,n=!1){const i=Se||he;if(i){const a=i.type;if(e===Xo){const l=Zf(a,!1);if(l&&(l===t||l===xe(t)||l===Er(xe(t))))return a}const o=ci(i[e]||a[e],t)||ci(i.appContext[e],t);return!o&&n?a:o}}function ci(e,t){return e&&(e[t]||e[xe(t)]||e[Er(xe(t))])}function Qd(e,t,r,n){let i;const a=r,o=L(e);if(o||re(e)){const l=o&&St(e);let s=!1,d=!1;l&&(s=!Ce(e),d=rt(e),e=Lr(e)),i=new Array(e.length);for(let f=0,h=e.length;f<h;f++)i[f]=t(s?d?mr(se(e[f])):se(e[f]):e[f],f,void 0,a)}else if(typeof e==\"number\"){i=new Array(e);for(let l=0;l<e;l++)i[l]=t(l+1,l,void 0,a)}else if(Q(e))if(e[Symbol.iterator])i=Array.from(e,(l,s)=>t(l,s,void 0,a));else{const l=Object.keys(e);i=new Array(l.length);for(let s=0,d=l.length;s<d;s++){const f=l[s];i[s]=t(e[f],f,s,a)}}else i=[];return i}const pn=e=>e?vl(e)?Br(e):pn(e.parent):null,Bt=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>pn(e.parent),$root:e=>pn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>tl(e),$forceUpdate:e=>e.f||(e.f=()=>{In(e.update)}),$nextTick:e=>e.n||(e.n=Eo.bind(e.proxy)),$watch:e=>xf.bind(e)}),Yr=(e,t)=>e!==Z&&!e.__isScriptSetup&&q(e,t),nf={get({_:e},t){if(t===\"__v_skip\")return!0;const{ctx:r,setupState:n,data:i,props:a,accessCache:o,type:l,appContext:s}=e;let d;if(t[0]!==\"$\"){const y=o[t];if(y!==void 0)switch(y){case 1:return n[t];case 2:return i[t];case 4:return r[t];case 3:return a[t]}else{if(Yr(n,t))return o[t]=1,n[t];if(i!==Z&&q(i,t))return o[t]=2,i[t];if((d=e.propsOptions[0])&&q(d,t))return o[t]=3,a[t];if(r!==Z&&q(r,t))return o[t]=4,r[t];gn&&(o[t]=0)}}const f=Bt[t];let h,g;if(f)return t===\"$attrs\"&&de(e.attrs,\"get\",\"\"),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(r!==Z&&q(r,t))return o[t]=4,r[t];if(g=s.config.globalProperties,q(g,t))return g[t]},set({_:e},t,r){const{data:n,setupState:i,ctx:a}=e;return Yr(i,t)?(i[t]=r,!0):n!==Z&&q(n,t)?(n[t]=r,!0):q(e.props,t)||t[0]===\"$\"&&t.slice(1)in e?!1:(a[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:i,propsOptions:a,type:o}},l){let s,d;return!!(r[l]||e!==Z&&l[0]!==\"$\"&&q(e,l)||Yr(t,l)||(s=a[0])&&q(s,l)||q(n,l)||q(Bt,l)||q(i.config.globalProperties,l)||(d=o.__cssModules)&&d[l])},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:q(r,\"value\")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function Yd(){return af().attrs}function af(e){const t=xt();return t.setupContext||(t.setupContext=yl(t))}function fi(e){return L(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let gn=!0;function of(e){const t=tl(e),r=e.proxy,n=e.ctx;gn=!1,t.beforeCreate&&ui(t.beforeCreate,e,\"bc\");const{data:i,computed:a,methods:o,watch:l,provide:s,inject:d,created:f,beforeMount:h,mounted:g,beforeUpdate:y,updated:j,activated:M,deactivated:z,beforeDestroy:D,beforeUnmount:N,destroyed:W,unmounted:T,render:V,renderTracked:J,renderTriggered:ie,errorCaptured:ne,serverPrefetch:H,expose:I,inheritAttrs:Y,components:A,directives:ee,filters:fe}=t;if(d&&lf(d,n,null),o)for(const te in o){const X=o[te];R(X)&&(n[te]=X.bind(r))}if(i){const te=i.call(r,r);Q(te)&&(e.data=Dr(te))}if(gn=!0,a)for(const te in a){const X=a[te],ot=R(X)?X.bind(r,r):R(X.get)?X.get.bind(r,r):Ne,er=!R(X)&&R(X.set)?X.set.bind(r):Ne,lt=Yf({get:ot,set:er});Object.defineProperty(n,te,{enumerable:!0,configurable:!0,get:()=>lt.value,set:Ee=>lt.value=Ee})}if(l)for(const te in l)el(l[te],n,r,te);if(s){const te=R(s)?s.call(r):s;Reflect.ownKeys(te).forEach(X=>{hf(X,te[X])})}f&&ui(f,e,\"c\");function oe(te,X){L(X)?X.forEach(ot=>te(ot.bind(r))):X&&te(X.bind(r))}if(oe(Yc,h),oe(Jo,g),oe(Xc,y),oe(Zo,j),oe(Jc,M),oe(Zc,z),oe(tf,ne),oe(ef,J),oe(Kc,ie),oe(Qo,N),oe(Yo,T),oe(kc,H),L(I))if(I.length){const te=e.exposed||(e.exposed={});I.forEach(X=>{Object.defineProperty(te,X,{get:()=>r[X],set:ot=>r[X]=ot,enumerable:!0})})}else e.exposed||(e.exposed={});V&&e.render===Ne&&(e.render=V),Y!=null&&(e.inheritAttrs=Y),A&&(e.components=A),ee&&(e.directives=ee),H&&qo(e)}function lf(e,t,r=Ne){L(e)&&(e=bn(e));for(const n in e){const i=e[n];let a;Q(i)?\"default\"in i?a=Vt(i.from||n,i.default,!0):a=Vt(i.from||n):a=Vt(i),le(a)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>a.value,set:o=>a.value=o}):t[n]=a}}function ui(e,t,r){Te(L(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function el(e,t,r,n){let i=n.includes(\".\")?dl(r,n):()=>r[n];if(re(e)){const a=t[e];R(a)&&kr(i,a)}else if(R(e))kr(i,e.bind(r));else if(Q(e))if(L(e))e.forEach(a=>el(a,t,r,n));else{const a=R(e.handler)?e.handler.bind(r):t[e.handler];R(a)&&kr(i,a,e)}}function tl(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,l=a.get(t);let s;return l?s=l:!i.length&&!r&&!n?s=t:(s={},i.length&&i.forEach(d=>Sr(s,d,o,!0)),Sr(s,t,o)),Q(t)&&a.set(t,s),s}function Sr(e,t,r,n=!1){const{mixins:i,extends:a}=t;a&&Sr(e,a,r,!0),i&&i.forEach(o=>Sr(e,o,r,!0));for(const o in t)if(!(n&&o===\"expose\")){const l=sf[o]||r&&r[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const sf={data:di,props:hi,emits:hi,methods:Ht,computed:Ht,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Ht,directives:Ht,watch:ff,provide:di,inject:cf};function di(e,t){return t?e?function(){return ae(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function cf(e,t){return Ht(bn(e),bn(t))}function bn(e){if(L(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function pe(e,t){return e?[...new Set([].concat(e,t))]:t}function Ht(e,t){return e?ae(Object.create(null),e,t):t}function hi(e,t){return e?L(e)&&L(t)?[...new Set([...e,...t])]:ae(Object.create(null),fi(e),fi(t??{})):t}function ff(e,t){if(!e)return t;if(!t)return e;const r=ae(Object.create(null),e);for(const n in t)r[n]=pe(e[n],t[n]);return r}function rl(){return{app:null,config:{isNativeTag:to,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let uf=0;function df(e,t){return function(n,i=null){R(n)||(n=ae({},n)),i!=null&&!Q(i)&&(i=null);const a=rl(),o=new WeakSet,l=[];let s=!1;const d=a.app={_uid:uf++,_component:n,_props:i,_container:null,_context:a,_instance:null,version:Xf,get config(){return a.config},set config(f){},use(f,...h){return o.has(f)||(f&&R(f.install)?(o.add(f),f.install(d,...h)):R(f)&&(o.add(f),f(d,...h))),d},mixin(f){return a.mixins.includes(f)||a.mixins.push(f),d},component(f,h){return h?(a.components[f]=h,d):a.components[f]},directive(f,h){return h?(a.directives[f]=h,d):a.directives[f]},mount(f,h,g){if(!s){const y=d._ceVNode||w(n,i);return y.appContext=a,g===!0?g=\"svg\":g===!1&&(g=void 0),e(y,f,g),s=!0,d._container=f,f.__vue_app__=d,Br(y.component)}},onUnmount(f){l.push(f)},unmount(){s&&(Te(l,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(f,h){return a.provides[f]=h,d},runWithContext(f){const h=Pt;Pt=d;try{return f()}finally{Pt=h}}};return d}}let Pt=null;function hf(e,t){if(he){let r=he.provides;const n=he.parent&&he.parent.provides;n===r&&(r=he.provides=Object.create(n)),r[e]=t}}function Vt(e,t,r=!1){const n=xt();if(n||Pt){let i=Pt?Pt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return r&&R(t)?t.call(n&&n.proxy):t}}const nl={},il=()=>Object.create(nl),al=e=>Object.getPrototypeOf(e)===nl;function pf(e,t,r,n=!1){const i={},a=il();e.propsDefaults=Object.create(null),ol(e,t,i,a);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);r?e.props=n?i:jc(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function gf(e,t,r,n){const{props:i,attrs:a,vnode:{patchFlag:o}}=e,l=U(i),[s]=e.propsOptions;let d=!1;if((n||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let h=0;h<f.length;h++){let g=f[h];if(Nr(e.emitsOptions,g))continue;const y=t[g];if(s)if(q(a,g))y!==a[g]&&(a[g]=y,d=!0);else{const j=xe(g);i[j]=mn(s,l,j,y,e,!1)}else y!==a[g]&&(a[g]=y,d=!0)}}}else{ol(e,t,i,a)&&(d=!0);let f;for(const h in l)(!t||!q(t,h)&&((f=bt(h))===h||!q(t,f)))&&(s?r&&(r[h]!==void 0||r[f]!==void 0)&&(i[h]=mn(s,l,h,void 0,e,!0)):delete i[h]);if(a!==l)for(const h in a)(!t||!q(t,h))&&(delete a[h],d=!0)}d&&qe(e.attrs,\"set\",\"\")}function ol(e,t,r,n){const[i,a]=e.propsOptions;let o=!1,l;if(t)for(let s in t){if(Dt(s))continue;const d=t[s];let f;i&&q(i,f=xe(s))?!a||!a.includes(f)?r[f]=d:(l||(l={}))[f]=d:Nr(e.emitsOptions,s)||(!(s in n)||d!==n[s])&&(n[s]=d,o=!0)}if(a){const s=U(r),d=l||Z;for(let f=0;f<a.length;f++){const h=a[f];r[h]=mn(i,s,h,d[h],e,!q(d,h))}}return o}function mn(e,t,r,n,i,a){const o=e[r];if(o!=null){const l=q(o,\"default\");if(l&&n===void 0){const s=o.default;if(o.type!==Function&&!o.skipFactory&&R(s)){const{propsDefaults:d}=i;if(r in d)n=d[r];else{const f=Kt(i);n=d[r]=s.call(null,t),f()}}else n=s;i.ce&&i.ce._setProp(r,n)}o[0]&&(a&&!l?n=!1:o[1]&&(n===\"\"||n===bt(r))&&(n=!0))}return n}const bf=new WeakMap;function ll(e,t,r=!1){const n=r?bf:t.propsCache,i=n.get(e);if(i)return i;const a=e.props,o={},l=[];let s=!1;if(!R(e)){const f=h=>{s=!0;const[g,y]=ll(h,t,!0);ae(o,g),y&&l.push(...y)};!r&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!a&&!s)return Q(e)&&n.set(e,yt),yt;if(L(a))for(let f=0;f<a.length;f++){const h=xe(a[f]);pi(h)&&(o[h]=Z)}else if(a)for(const f in a){const h=xe(f);if(pi(h)){const g=a[f],y=o[h]=L(g)||R(g)?{type:g}:ae({},g),j=y.type;let M=!1,z=!0;if(L(j))for(let D=0;D<j.length;++D){const N=j[D],W=R(N)&&N.name;if(W===\"Boolean\"){M=!0;break}else W===\"String\"&&(z=!1)}else M=R(j)&&j.name===\"Boolean\";y[0]=M,y[1]=z,(M||q(y,\"default\"))&&l.push(h)}}const d=[o,l];return Q(e)&&n.set(e,d),d}function pi(e){return e[0]!==\"$\"&&!Dt(e)}const Vn=e=>e===\"_\"||e===\"_ctx\"||e===\"$stable\",Un=e=>L(e)?e.map(ze):[ze(e)],mf=(e,t,r)=>{if(t._n)return t;const n=Vc((...i)=>Un(t(...i)),r);return n._c=!1,n},sl=(e,t,r)=>{const n=e._ctx;for(const i in e){if(Vn(i))continue;const a=e[i];if(R(a))t[i]=mf(i,a,n);else if(a!=null){const o=Un(a);t[i]=()=>o}}},cl=(e,t)=>{const r=Un(t);e.slots.default=()=>r},fl=(e,t,r)=>{for(const n in t)(r||!Vn(n))&&(e[n]=t[n])},vf=(e,t,r)=>{const n=e.slots=il();if(e.vnode.shapeFlag&32){const i=t._;i?(fl(n,t,r),r&&oo(n,\"_\",i,!0)):sl(t,n)}else t&&cl(e,t)},Of=(e,t,r)=>{const{vnode:n,slots:i}=e;let a=!0,o=Z;if(n.shapeFlag&32){const l=t._;l?r&&l===1?a=!1:fl(i,t,r):(a=!t.$stable,sl(t,i)),o=t}else t&&(cl(e,t),o={default:1});if(a)for(const l in i)!Vn(l)&&o[l]==null&&delete i[l]},ge=Lf;function yf(e){return _f(e)}function _f(e,t){const r=$r();r.__VUE__=!0;const{insert:n,remove:i,patchProp:a,createElement:o,createText:l,createComment:s,setText:d,setElementText:f,parentNode:h,nextSibling:g,setScopeId:y=Ne,insertStaticContent:j}=e,M=(c,u,p,v=null,b=null,m=null,P=void 0,S=null,_=!!u.dynamicChildren)=>{if(c===u)return;c&&!dt(c,u)&&(v=tr(c),Ee(c,b,m,!0),c=null),u.patchFlag===-2&&(_=!1,u.dynamicChildren=null);const{type:O,ref:$,shapeFlag:C}=u;switch(O){case Ir:z(c,u,p,v);break;case me:D(c,u,p,v);break;case Kr:c==null&&N(u,p,v,P);break;case Ae:A(c,u,p,v,b,m,P,S,_);break;default:C&1?V(c,u,p,v,b,m,P,S,_):C&6?ee(c,u,p,v,b,m,P,S,_):(C&64||C&128)&&O.process(c,u,p,v,b,m,P,S,_,At)}$!=null&&b?Nt($,c&&c.ref,m,u||c,!u):$==null&&c&&c.ref!=null&&Nt(c.ref,null,m,c,!0)},z=(c,u,p,v)=>{if(c==null)n(u.el=l(u.children),p,v);else{const b=u.el=c.el;u.children!==c.children&&d(b,u.children)}},D=(c,u,p,v)=>{c==null?n(u.el=s(u.children||\"\"),p,v):u.el=c.el},N=(c,u,p,v)=>{[c.el,c.anchor]=j(c.children,u,p,v,c.el,c.anchor)},W=({el:c,anchor:u},p,v)=>{let b;for(;c&&c!==u;)b=g(c),n(c,p,v),c=b;n(u,p,v)},T=({el:c,anchor:u})=>{let p;for(;c&&c!==u;)p=g(c),i(c),c=p;i(u)},V=(c,u,p,v,b,m,P,S,_)=>{u.type===\"svg\"?P=\"svg\":u.type===\"math\"&&(P=\"mathml\"),c==null?J(u,p,v,b,m,P,S,_):H(c,u,b,m,P,S,_)},J=(c,u,p,v,b,m,P,S)=>{let _,O;const{props:$,shapeFlag:C,transition:E,dirs:F}=c;if(_=c.el=o(c.type,m,$&&$.is,$),C&8?f(_,c.children):C&16&&ne(c.children,_,null,v,b,Xr(c,m),P,S),F&&st(c,null,v,\"created\"),ie(_,c,c.scopeId,P,v),$){for(const k in $)k!==\"value\"&&!Dt(k)&&a(_,k,null,$[k],m,v);\"value\"in $&&a(_,\"value\",null,$.value,m),(O=$.onVnodeBeforeMount)&&De(O,v,c)}F&&st(c,null,v,\"beforeMount\");const B=Sf(b,E);B&&E.beforeEnter(_),n(_,u,p),((O=$&&$.onVnodeMounted)||B||F)&&ge(()=>{O&&De(O,v,c),B&&E.enter(_),F&&st(c,null,v,\"mounted\")},b)},ie=(c,u,p,v,b)=>{if(p&&y(c,p),v)for(let m=0;m<v.length;m++)y(c,v[m]);if(b){let m=b.subTree;if(u===m||pl(m.type)&&(m.ssContent===u||m.ssFallback===u)){const P=b.vnode;ie(c,P,P.scopeId,P.slotScopeIds,b.parent)}}},ne=(c,u,p,v,b,m,P,S,_=0)=>{for(let O=_;O<c.length;O++){const $=c[O]=S?Ke(c[O]):ze(c[O]);M(null,$,u,p,v,b,m,P,S)}},H=(c,u,p,v,b,m,P)=>{const S=u.el=c.el;let{patchFlag:_,dynamicChildren:O,dirs:$}=u;_|=c.patchFlag&16;const C=c.props||Z,E=u.props||Z;let F;if(p&&ct(p,!1),(F=E.onVnodeBeforeUpdate)&&De(F,p,u,c),$&&st(u,c,p,\"beforeUpdate\"),p&&ct(p,!0),(C.innerHTML&&E.innerHTML==null||C.textContent&&E.textContent==null)&&f(S,\"\"),O?I(c.dynamicChildren,O,S,p,v,Xr(u,b),m):P||X(c,u,S,null,p,v,Xr(u,b),m,!1),_>0){if(_&16)Y(S,C,E,p,b);else if(_&2&&C.class!==E.class&&a(S,\"class\",null,E.class,b),_&4&&a(S,\"style\",C.style,E.style,b),_&8){const B=u.dynamicProps;for(let k=0;k<B.length;k++){const G=B[k],ve=C[G],Oe=E[G];(Oe!==ve||G===\"value\")&&a(S,G,ve,Oe,b,p)}}_&1&&c.children!==u.children&&f(S,u.children)}else!P&&O==null&&Y(S,C,E,p,b);((F=E.onVnodeUpdated)||$)&&ge(()=>{F&&De(F,p,u,c),$&&st(u,c,p,\"updated\")},v)},I=(c,u,p,v,b,m,P)=>{for(let S=0;S<u.length;S++){const _=c[S],O=u[S],$=_.el&&(_.type===Ae||!dt(_,O)||_.shapeFlag&198)?h(_.el):p;M(_,O,$,null,v,b,m,P,!0)}},Y=(c,u,p,v,b)=>{if(u!==p){if(u!==Z)for(const m in u)!Dt(m)&&!(m in p)&&a(c,m,u[m],null,b,v);for(const m in p){if(Dt(m))continue;const P=p[m],S=u[m];P!==S&&m!==\"value\"&&a(c,m,S,P,b,v)}\"value\"in p&&a(c,\"value\",u.value,p.value,b)}},A=(c,u,p,v,b,m,P,S,_)=>{const O=u.el=c?c.el:l(\"\"),$=u.anchor=c?c.anchor:l(\"\");let{patchFlag:C,dynamicChildren:E,slotScopeIds:F}=u;F&&(S=S?S.concat(F):F),c==null?(n(O,p,v),n($,p,v),ne(u.children||[],p,$,b,m,P,S,_)):C>0&&C&64&&E&&c.dynamicChildren?(I(c.dynamicChildren,E,p,b,m,P,S),(u.key!=null||b&&u===b.subTree)&&Wn(c,u,!0)):X(c,u,p,$,b,m,P,S,_)},ee=(c,u,p,v,b,m,P,S,_)=>{u.slotScopeIds=S,c==null?u.shapeFlag&512?b.ctx.activate(u,p,v,P,_):fe(u,p,v,b,m,P,_):Ie(c,u,_)},fe=(c,u,p,v,b,m,P)=>{const S=c.component=Wf(c,v,b);if(Fr(c)&&(S.ctx.renderer=At),qf(S,!1,P),S.asyncDep){if(b&&b.registerDep(S,oe,P),!c.el){const _=S.subTree=w(me);D(null,_,u,p),c.placeholder=_.el}}else oe(S,c,u,p,b,m,P)},Ie=(c,u,p)=>{const v=u.component=c.component;if($f(c,u,p))if(v.asyncDep&&!v.asyncResolved){te(v,u,p);return}else v.next=u,v.update();else u.el=c.el,v.vnode=u},oe=(c,u,p,v,b,m,P)=>{const S=()=>{if(c.isMounted){let{next:C,bu:E,u:F,parent:B,vnode:k}=c;{const He=ul(c);if(He){C&&(C.el=k.el,te(c,C,P)),He.asyncDep.then(()=>{c.isUnmounted||S()});return}}let G=C,ve;ct(c,!1),C?(C.el=k.el,te(c,C,P)):C=k,E&&Wr(E),(ve=C.props&&C.props.onVnodeBeforeUpdate)&&De(ve,B,C,k),ct(c,!0);const Oe=bi(c),$e=c.subTree;c.subTree=Oe,M($e,Oe,h($e.el),tr($e),c,b,m),C.el=Oe.el,G===null&&Hf(c,Oe.el),F&&ge(F,b),(ve=C.props&&C.props.onVnodeUpdated)&&ge(()=>De(ve,B,C,k),b)}else{let C;const{el:E,props:F}=u,{bm:B,m:k,parent:G,root:ve,type:Oe}=c,$e=It(u);ct(c,!1),B&&Wr(B),!$e&&(C=F&&F.onVnodeBeforeMount)&&De(C,G,u),ct(c,!0);{ve.ce&&ve.ce._def.shadowRoot!==!1&&ve.ce._injectChildStyle(Oe);const He=c.subTree=bi(c);M(null,He,p,v,c,b,m),u.el=He.el}if(k&&ge(k,b),!$e&&(C=F&&F.onVnodeMounted)){const He=u;ge(()=>De(C,G,He),b)}(u.shapeFlag&256||G&&It(G.vnode)&&G.vnode.shapeFlag&256)&&c.a&&ge(c.a,b),c.isMounted=!0,u=p=v=null}};c.scope.on();const _=c.effect=new uo(S);c.scope.off();const O=c.update=_.run.bind(_),$=c.job=_.runIfDirty.bind(_);$.i=c,$.id=c.uid,_.scheduler=()=>In($),ct(c,!0),O()},te=(c,u,p)=>{u.component=c;const v=c.vnode.props;c.vnode=u,c.next=null,gf(c,u.props,v,p),Of(c,u.children,p),Je(),ni(c),Ze()},X=(c,u,p,v,b,m,P,S,_=!1)=>{const O=c&&c.children,$=c?c.shapeFlag:0,C=u.children,{patchFlag:E,shapeFlag:F}=u;if(E>0){if(E&128){er(O,C,p,v,b,m,P,S,_);return}else if(E&256){ot(O,C,p,v,b,m,P,S,_);return}}F&8?($&16&&jt(O,b,m),C!==O&&f(p,C)):$&16?F&16?er(O,C,p,v,b,m,P,S,_):jt(O,b,m,!0):($&8&&f(p,\"\"),F&16&&ne(C,p,v,b,m,P,S,_))},ot=(c,u,p,v,b,m,P,S,_)=>{c=c||yt,u=u||yt;const O=c.length,$=u.length,C=Math.min(O,$);let E;for(E=0;E<C;E++){const F=u[E]=_?Ke(u[E]):ze(u[E]);M(c[E],F,p,null,b,m,P,S,_)}O>$?jt(c,b,m,!0,!1,C):ne(u,p,v,b,m,P,S,_,C)},er=(c,u,p,v,b,m,P,S,_)=>{let O=0;const $=u.length;let C=c.length-1,E=$-1;for(;O<=C&&O<=E;){const F=c[O],B=u[O]=_?Ke(u[O]):ze(u[O]);if(dt(F,B))M(F,B,p,null,b,m,P,S,_);else break;O++}for(;O<=C&&O<=E;){const F=c[C],B=u[E]=_?Ke(u[E]):ze(u[E]);if(dt(F,B))M(F,B,p,null,b,m,P,S,_);else break;C--,E--}if(O>C){if(O<=E){const F=E+1,B=F<$?u[F].el:v;for(;O<=E;)M(null,u[O]=_?Ke(u[O]):ze(u[O]),p,B,b,m,P,S,_),O++}}else if(O>E)for(;O<=C;)Ee(c[O],b,m,!0),O++;else{const F=O,B=O,k=new Map;for(O=B;O<=E;O++){const ye=u[O]=_?Ke(u[O]):ze(u[O]);ye.key!=null&&k.set(ye.key,O)}let G,ve=0;const Oe=E-B+1;let $e=!1,He=0;const Mt=new Array(Oe);for(O=0;O<Oe;O++)Mt[O]=0;for(O=F;O<=C;O++){const ye=c[O];if(ve>=Oe){Ee(ye,b,m,!0);continue}let Le;if(ye.key!=null)Le=k.get(ye.key);else for(G=B;G<=E;G++)if(Mt[G-B]===0&&dt(ye,u[G])){Le=G;break}Le===void 0?Ee(ye,b,m,!0):(Mt[Le-B]=O+1,Le>=He?He=Le:$e=!0,M(ye,u[Le],p,null,b,m,P,S,_),ve++)}const Xn=$e?wf(Mt):yt;for(G=Xn.length-1,O=Oe-1;O>=0;O--){const ye=B+O,Le=u[ye],kn=u[ye+1],Kn=ye+1<$?kn.el||kn.placeholder:v;Mt[O]===0?M(null,Le,p,Kn,b,m,P,S,_):$e&&(G<0||O!==Xn[G]?lt(Le,p,Kn,2):G--)}}},lt=(c,u,p,v,b=null)=>{const{el:m,type:P,transition:S,children:_,shapeFlag:O}=c;if(O&6){lt(c.component.subTree,u,p,v);return}if(O&128){c.suspense.move(u,p,v);return}if(O&64){P.move(c,u,p,At);return}if(P===Ae){n(m,u,p);for(let C=0;C<_.length;C++)lt(_[C],u,p,v);n(c.anchor,u,p);return}if(P===Kr){W(c,u,p);return}if(v!==2&&O&1&&S)if(v===0)S.beforeEnter(m),n(m,u,p),ge(()=>S.enter(m),b);else{const{leave:C,delayLeave:E,afterLeave:F}=S,B=()=>{c.ctx.isUnmounted?i(m):n(m,u,p)},k=()=>{m._isLeaving&&m[We](!0),C(m,()=>{B(),F&&F()})};E?E(m,B,k):k()}else n(m,u,p)},Ee=(c,u,p,v=!1,b=!1)=>{const{type:m,props:P,ref:S,children:_,dynamicChildren:O,shapeFlag:$,patchFlag:C,dirs:E,cacheIndex:F}=c;if(C===-2&&(b=!1),S!=null&&(Je(),Nt(S,null,p,c,!0),Ze()),F!=null&&(u.renderCache[F]=void 0),$&256){u.ctx.deactivate(c);return}const B=$&1&&E,k=!It(c);let G;if(k&&(G=P&&P.onVnodeBeforeUnmount)&&De(G,u,c),$&6)Js(c.component,p,v);else{if($&128){c.suspense.unmount(p,v);return}B&&st(c,null,u,\"beforeUnmount\"),$&64?c.type.remove(c,u,p,At,v):O&&!O.hasOnce&&(m!==Ae||C>0&&C&64)?jt(O,u,p,!1,!0):(m===Ae&&C&384||!b&&$&16)&&jt(_,u,p),v&&Qn(c)}(k&&(G=P&&P.onVnodeUnmounted)||B)&&ge(()=>{G&&De(G,u,c),B&&st(c,null,u,\"unmounted\")},p)},Qn=c=>{const{type:u,el:p,anchor:v,transition:b}=c;if(u===Ae){Gs(p,v);return}if(u===Kr){T(c);return}const m=()=>{i(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(c.shapeFlag&1&&b&&!b.persisted){const{leave:P,delayLeave:S}=b,_=()=>P(p,m);S?S(c.el,m,_):_()}else m()},Gs=(c,u)=>{let p;for(;c!==u;)p=g(c),i(c),c=p;i(u)},Js=(c,u,p)=>{const{bum:v,scope:b,job:m,subTree:P,um:S,m:_,a:O}=c;gi(_),gi(O),v&&Wr(v),b.stop(),m&&(m.flags|=8,Ee(P,c,u,p)),S&&ge(S,u),ge(()=>{c.isUnmounted=!0},u)},jt=(c,u,p,v=!1,b=!1,m=0)=>{for(let P=m;P<c.length;P++)Ee(c[P],u,p,v,b)},tr=c=>{if(c.shapeFlag&6)return tr(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=g(c.anchor||c.el),p=u&&u[Ro];return p?g(p):u};let Vr=!1;const Yn=(c,u,p)=>{c==null?u._vnode&&Ee(u._vnode,null,null,!0):M(u._vnode||null,c,u,null,null,null,p),u._vnode=c,Vr||(Vr=!0,ni(),Ho(),Vr=!1)},At={p:M,um:Ee,m:lt,r:Qn,mt:fe,mc:ne,pc:X,pbc:I,n:tr,o:e};return{render:Yn,hydrate:void 0,createApp:df(Yn)}}function Xr({type:e,props:t},r){return r===\"svg\"&&e===\"foreignObject\"||r===\"mathml\"&&e===\"annotation-xml\"&&t&&t.encoding&&t.encoding.includes(\"html\")?void 0:r}function ct({effect:e,job:t},r){r?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Sf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Wn(e,t,r=!1){const n=e.children,i=t.children;if(L(n)&&L(i))for(let a=0;a<n.length;a++){const o=n[a];let l=i[a];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=i[a]=Ke(i[a]),l.el=o.el),!r&&l.patchFlag!==-2&&Wn(o,l)),l.type===Ir&&l.patchFlag!==-1&&(l.el=o.el),l.type===me&&!l.el&&(l.el=o.el)}}function wf(e){const t=e.slice(),r=[0];let n,i,a,o,l;const s=e.length;for(n=0;n<s;n++){const d=e[n];if(d!==0){if(i=r[r.length-1],e[i]<d){t[n]=i,r.push(n);continue}for(a=0,o=r.length-1;a<o;)l=a+o>>1,e[r[l]]<d?a=l+1:o=l;d<e[r[a]]&&(a>0&&(t[n]=r[a-1]),r[a]=n)}}for(a=r.length,o=r[a-1];a-- >0;)r[a]=o,o=t[o];return r}function ul(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ul(t)}function gi(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Pf=Symbol.for(\"v-scx\"),Cf=()=>Vt(Pf);function Xd(e,t){return qn(e,null,t)}function kr(e,t,r){return qn(e,t,r)}function qn(e,t,r=Z){const{immediate:n,deep:i,flush:a,once:o}=r,l=ae({},r),s=t&&n||!t&&a!==\"post\";let d;if(Xt){if(a===\"sync\"){const y=Cf();d=y.__watcherHandles||(y.__watcherHandles=[])}else if(!s){const y=()=>{};return y.stop=Ne,y.resume=Ne,y.pause=Ne,y}}const f=he;l.call=(y,j,M)=>Te(y,f,j,M);let h=!1;a===\"post\"?l.scheduler=y=>{ge(y,f&&f.suspense)}:a!==\"sync\"&&(h=!0,l.scheduler=(y,j)=>{j?y():In(y)}),l.augmentJob=y=>{t&&(y.flags|=4),h&&(y.flags|=2,f&&(y.id=f.uid,y.i=f))};const g=zc(e,t,l);return Xt&&(d?d.push(g):s&&g()),g}function xf(e,t,r){const n=this.proxy,i=re(e)?e.includes(\".\")?dl(n,e):()=>n[e]:e.bind(n,n);let a;R(t)?a=t:(a=t.handler,r=t);const o=Kt(this),l=qn(i,a.bind(n),r);return o(),l}function dl(e,t){const r=t.split(\".\");return()=>{let n=e;for(let i=0;i<r.length&&n;i++)n=n[r[i]];return n}}const jf=(e,t)=>t===\"modelValue\"||t===\"model-value\"?e.modelModifiers:e[`${t}Modifiers`]||e[`${xe(t)}Modifiers`]||e[`${bt(t)}Modifiers`];function Af(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Z;let i=r;const a=t.startsWith(\"update:\"),o=a&&jf(n,t.slice(7));o&&(o.trim&&(i=r.map(f=>re(f)?f.trim():f)),o.number&&(i=r.map(ks)));let l,s=n[l=Ur(t)]||n[l=Ur(xe(t))];!s&&a&&(s=n[l=Ur(bt(t))]),s&&Te(s,e,6,i);const d=n[l+\"Once\"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Te(d,e,6,i)}}const Mf=new WeakMap;function hl(e,t,r=!1){const n=r?Mf:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const a=e.emits;let o={},l=!1;if(!R(e)){const s=d=>{const f=hl(d,t,!0);f&&(l=!0,ae(o,f))};!r&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!a&&!l?(Q(e)&&n.set(e,null),null):(L(a)?a.forEach(s=>o[s]=null):ae(o,a),Q(e)&&n.set(e,o),o)}function Nr(e,t){return!e||!Ar(t)?!1:(t=t.slice(2).replace(/Once$/,\"\"),q(e,t[0].toLowerCase()+t.slice(1))||q(e,bt(t))||q(e,t))}function bi(e){const{type:t,vnode:r,proxy:n,withProxy:i,propsOptions:[a],slots:o,attrs:l,emit:s,render:d,renderCache:f,props:h,data:g,setupState:y,ctx:j,inheritAttrs:M}=e,z=yr(e);let D,N;try{if(r.shapeFlag&4){const T=i||n,V=T;D=ze(d.call(V,T,f,h,y,g,j)),N=l}else{const T=t;D=ze(T.length>1?T(h,{attrs:l,slots:o,emit:s}):T(h,null)),N=t.props?l:Tf(l)}}catch(T){Ut.length=0,Rr(T,e,1),D=w(me)}let W=D;if(N&&M!==!1){const T=Object.keys(N),{shapeFlag:V}=W;T.length&&V&7&&(a&&T.some(Mn)&&(N=Ef(N,a)),W=nt(W,N,!1,!0))}return r.dirs&&(W=nt(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(r.dirs):r.dirs),r.transition&&gt(W,r.transition),D=W,yr(z),D}const Tf=e=>{let t;for(const r in e)(r===\"class\"||r===\"style\"||Ar(r))&&((t||(t={}))[r]=e[r]);return t},Ef=(e,t)=>{const r={};for(const n in e)(!Mn(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function $f(e,t,r){const{props:n,children:i,component:a}=e,{props:o,children:l,patchFlag:s}=t,d=a.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&s>=0){if(s&1024)return!0;if(s&16)return n?mi(n,o,d):!!o;if(s&8){const f=t.dynamicProps;for(let h=0;h<f.length;h++){const g=f[h];if(o[g]!==n[g]&&!Nr(d,g))return!0}}}else return(i||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?mi(n,o,d):!0:!!o;return!1}function mi(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let i=0;i<n.length;i++){const a=n[i];if(t[a]!==e[a]&&!Nr(r,a))return!0}return!1}function Hf({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const pl=e=>e.__isSuspense;function Lf(e,t){t&&t.pendingBranch?L(e)?t.effects.push(...e):t.effects.push(e):Bc(e)}const Ae=Symbol.for(\"v-fgt\"),Ir=Symbol.for(\"v-txt\"),me=Symbol.for(\"v-cmt\"),Kr=Symbol.for(\"v-stc\"),Ut=[];let we=null;function Df(e=!1){Ut.push(we=e?null:[])}function Rf(){Ut.pop(),we=Ut[Ut.length-1]||null}let Yt=1;function wr(e,t=!1){Yt+=e,e<0&&we&&t&&(we.hasOnce=!0)}function gl(e){return e.dynamicChildren=Yt>0?we||yt:null,Rf(),Yt>0&&we&&we.push(e),e}function kd(e,t,r,n,i,a){return gl(ml(e,t,r,n,i,a,!0))}function Ff(e,t,r,n,i){return gl(w(e,t,r,n,i,!0))}function Pr(e){return e?e.__v_isVNode===!0:!1}function dt(e,t){return e.type===t.type&&e.key===t.key}const bl=({key:e})=>e??null,hr=({ref:e,ref_key:t,ref_for:r})=>(typeof e==\"number\"&&(e=\"\"+e),e!=null?re(e)||le(e)||R(e)?{i:Se,r:e,k:t,f:!!r}:e:null);function ml(e,t=null,r=null,n=0,i=null,a=e===Ae?0:1,o=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&bl(t),ref:t&&hr(t),scopeId:Do,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Se};return l?(Gn(s,r),a&128&&e.normalize(s)):r&&(s.shapeFlag|=re(r)?8:16),Yt>0&&!o&&we&&(s.patchFlag>0||a&6)&&s.patchFlag!==32&&we.push(s),s}const w=zf;function zf(e,t=null,r=null,n=0,i=null,a=!1){if((!e||e===ko)&&(e=me),Pr(e)){const l=nt(e,t,!0);return r&&Gn(l,r),Yt>0&&!a&&we&&(l.shapeFlag&6?we[we.indexOf(e)]=l:we.push(l)),l.patchFlag=-2,l}if(Qf(e)&&(e=e.__vccOpts),t){t=Nf(t);let{class:l,style:s}=t;l&&!re(l)&&(t.class=Hn(l)),Q(s)&&(Nn(s)&&!L(s)&&(s=ae({},s)),t.style=$n(s))}const o=re(e)?1:pl(e)?128:Fo(e)?64:Q(e)?4:R(e)?2:0;return ml(e,t,r,n,i,o,a,!0)}function Nf(e){return e?Nn(e)||al(e)?ae({},e):e:null}function nt(e,t,r=!1,n=!1){const{props:i,ref:a,patchFlag:o,children:l,transition:s}=e,d=t?Bf(i||{},t):i,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&bl(d),ref:t&&t.ref?r&&a?L(a)?a.concat(hr(t)):[a,hr(t)]:hr(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:s,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return s&&n&&gt(f,s.clone(f)),f}function If(e=\" \",t=0){return w(Ir,null,e,t)}function Kd(e=\"\",t=!1){return t?(Df(),Ff(me,null,e)):w(me,null,e)}function ze(e){return e==null||typeof e==\"boolean\"?w(me):L(e)?w(Ae,null,e.slice()):Pr(e)?Ke(e):w(Ir,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function Gn(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(L(t))r=16;else if(typeof t==\"object\")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),Gn(e,i()),i._c&&(i._d=!0));return}else{r=32;const i=t._;!i&&!al(t)?t._ctx=Se:i===3&&Se&&(Se.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else R(t)?(t={default:t,_ctx:Se},r=32):(t=String(t),n&64?(r=16,t=[If(t)]):r=8);e.children=t,e.shapeFlag|=r}function Bf(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const i in n)if(i===\"class\")t.class!==n.class&&(t.class=Hn([t.class,n.class]));else if(i===\"style\")t.style=$n([t.style,n.style]);else if(Ar(i)){const a=t[i],o=n[i];o&&a!==o&&!(L(a)&&a.includes(o))&&(t[i]=a?[].concat(a,o):o)}else i!==\"\"&&(t[i]=n[i])}return t}function De(e,t,r,n=null){Te(e,t,7,[r,n])}const Vf=rl();let Uf=0;function Wf(e,t,r){const n=e.type,i=(t?t.appContext:e.appContext)||Vf,a={uid:Uf++,vnode:e,type:n,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new fo(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),ids:t?t.ids:[\"\",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:ll(n,i),emitsOptions:hl(n,i),emit:null,emitted:null,propsDefaults:Z,inheritAttrs:n.inheritAttrs,ctx:Z,data:Z,props:Z,attrs:Z,slots:Z,refs:Z,setupState:Z,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return a.ctx={_:a},a.root=t?t.root:a,a.emit=Af.bind(null,a),e.ce&&e.ce(a),a}let he=null;const xt=()=>he||Se;let Cr,vn;{const e=$r(),t=(r,n)=>{let i;return(i=e[r])||(i=e[r]=[]),i.push(n),a=>{i.length>1?i.forEach(o=>o(a)):i[0](a)}};Cr=t(\"__VUE_INSTANCE_SETTERS__\",r=>he=r),vn=t(\"__VUE_SSR_SETTERS__\",r=>Xt=r)}const Kt=e=>{const t=he;return Cr(e),e.scope.on(),()=>{e.scope.off(),Cr(t)}},vi=()=>{he&&he.scope.off(),Cr(null)};function vl(e){return e.vnode.shapeFlag&4}let Xt=!1;function qf(e,t=!1,r=!1){t&&vn(t);const{props:n,children:i}=e.vnode,a=vl(e);pf(e,n,a,t),vf(e,i,r||t);const o=a?Gf(e,t):void 0;return t&&vn(!1),o}function Gf(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,nf);const{setup:n}=r;if(n){Je();const i=e.setupContext=n.length>1?yl(e):null,a=Kt(e),o=kt(n,e,0,[e.props,i]),l=no(o);if(Ze(),a(),(l||e.sp)&&!It(e)&&qo(e),l){if(o.then(vi,vi),t)return o.then(s=>{Oi(e,s)}).catch(s=>{Rr(s,e,0)});e.asyncDep=o}else Oi(e,o)}else Ol(e)}function Oi(e,t,r){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Q(t)&&(e.setupState=Ao(t)),Ol(e)}function Ol(e,t,r){const n=e.type;e.render||(e.render=n.render||Ne);{const i=Kt(e);Je();try{of(e)}finally{Ze(),i()}}}const Jf={get(e,t){return de(e,\"get\",\"\"),e[t]}};function yl(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,Jf),slots:e.slots,emit:e.emit,expose:t}}function Br(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ao(Ac(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Bt)return Bt[r](e)},has(t,r){return r in t||r in Bt}})):e.proxy}function Zf(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function Qf(e){return R(e)&&\"__vccOpts\"in e}const Yf=(e,t)=>Rc(e,t,Xt);function On(e,t,r){try{wr(-1);const n=arguments.length;return n===2?Q(t)&&!L(t)?Pr(t)?w(e,null,[t]):w(e,t):w(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):n===3&&Pr(r)&&(r=[r]),w(e,t,r))}finally{wr(1)}}const Xf=\"3.5.22\";/**\n* @vue/runtime-dom v3.5.22\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let yn;const yi=typeof window<\"u\"&&window.trustedTypes;if(yi)try{yn=yi.createPolicy(\"vue\",{createHTML:e=>e})}catch{}const _l=yn?e=>yn.createHTML(e):e=>e,kf=\"http://www.w3.org/2000/svg\",Kf=\"http://www.w3.org/1998/Math/MathML\",Ue=typeof document<\"u\"?document:null,_i=Ue&&Ue.createElement(\"template\"),eu={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const i=t===\"svg\"?Ue.createElementNS(kf,e):t===\"mathml\"?Ue.createElementNS(Kf,e):r?Ue.createElement(e,{is:r}):Ue.createElement(e);return e===\"select\"&&n&&n.multiple!=null&&i.setAttribute(\"multiple\",n.multiple),i},createText:e=>Ue.createTextNode(e),createComment:e=>Ue.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ue.querySelector(e),setScopeId(e,t){e.setAttribute(t,\"\")},insertStaticContent(e,t,r,n,i,a){const o=r?r.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),r),!(i===a||!(i=i.nextSibling)););else{_i.innerHTML=_l(n===\"svg\"?`<svg>${e}</svg>`:n===\"mathml\"?`<math>${e}</math>`:e);const l=_i.content;if(n===\"svg\"||n===\"mathml\"){const s=l.firstChild;for(;s.firstChild;)l.appendChild(s.firstChild);l.removeChild(s)}t.insertBefore(l,r)}return[o?o.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},Ye=\"transition\",Et=\"animation\",Ct=Symbol(\"_vtc\"),Sl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wl=ae({},Bo,Sl),tu=e=>(e.displayName=\"Transition\",e.props=wl,e),eh=tu((e,{slots:t})=>On(qc,Pl(e),t)),ft=(e,t=[])=>{L(e)?e.forEach(r=>r(...t)):e&&e(...t)},Si=e=>e?L(e)?e.some(t=>t.length>1):e.length>1:!1;function Pl(e){const t={};for(const A in e)A in Sl||(t[A]=e[A]);if(e.css===!1)return t;const{name:r=\"v\",type:n,duration:i,enterFromClass:a=`${r}-enter-from`,enterActiveClass:o=`${r}-enter-active`,enterToClass:l=`${r}-enter-to`,appearFromClass:s=a,appearActiveClass:d=o,appearToClass:f=l,leaveFromClass:h=`${r}-leave-from`,leaveActiveClass:g=`${r}-leave-active`,leaveToClass:y=`${r}-leave-to`}=e,j=ru(i),M=j&&j[0],z=j&&j[1],{onBeforeEnter:D,onEnter:N,onEnterCancelled:W,onLeave:T,onLeaveCancelled:V,onBeforeAppear:J=D,onAppear:ie=N,onAppearCancelled:ne=W}=t,H=(A,ee,fe,Ie)=>{A._enterCancelled=Ie,Xe(A,ee?f:l),Xe(A,ee?d:o),fe&&fe()},I=(A,ee)=>{A._isLeaving=!1,Xe(A,h),Xe(A,y),Xe(A,g),ee&&ee()},Y=A=>(ee,fe)=>{const Ie=A?ie:N,oe=()=>H(ee,A,fe);ft(Ie,[ee,oe]),wi(()=>{Xe(ee,A?s:a),Re(ee,A?f:l),Si(Ie)||Pi(ee,n,M,oe)})};return ae(t,{onBeforeEnter(A){ft(D,[A]),Re(A,a),Re(A,o)},onBeforeAppear(A){ft(J,[A]),Re(A,s),Re(A,d)},onEnter:Y(!1),onAppear:Y(!0),onLeave(A,ee){A._isLeaving=!0;const fe=()=>I(A,ee);Re(A,h),A._enterCancelled?(Re(A,g),_n(A)):(_n(A),Re(A,g)),wi(()=>{A._isLeaving&&(Xe(A,h),Re(A,y),Si(T)||Pi(A,n,z,fe))}),ft(T,[A,fe])},onEnterCancelled(A){H(A,!1,void 0,!0),ft(W,[A])},onAppearCancelled(A){H(A,!0,void 0,!0),ft(ne,[A])},onLeaveCancelled(A){I(A),ft(V,[A])}})}function ru(e){if(e==null)return null;if(Q(e))return[en(e.enter),en(e.leave)];{const t=en(e);return[t,t]}}function en(e){return Ks(e)}function Re(e,t){t.split(/\\s+/).forEach(r=>r&&e.classList.add(r)),(e[Ct]||(e[Ct]=new Set)).add(t)}function Xe(e,t){t.split(/\\s+/).forEach(n=>n&&e.classList.remove(n));const r=e[Ct];r&&(r.delete(t),r.size||(e[Ct]=void 0))}function wi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let nu=0;function Pi(e,t,r,n){const i=e._endId=++nu,a=()=>{i===e._endId&&n()};if(r!=null)return setTimeout(a,r);const{type:o,timeout:l,propCount:s}=Cl(e,t);if(!o)return n();const d=o+\"end\";let f=0;const h=()=>{e.removeEventListener(d,g),a()},g=y=>{y.target===e&&++f>=s&&h()};setTimeout(()=>{f<s&&h()},l+1),e.addEventListener(d,g)}function Cl(e,t){const r=window.getComputedStyle(e),n=j=>(r[j]||\"\").split(\", \"),i=n(`${Ye}Delay`),a=n(`${Ye}Duration`),o=Ci(i,a),l=n(`${Et}Delay`),s=n(`${Et}Duration`),d=Ci(l,s);let f=null,h=0,g=0;t===Ye?o>0&&(f=Ye,h=o,g=a.length):t===Et?d>0&&(f=Et,h=d,g=s.length):(h=Math.max(o,d),f=h>0?o>d?Ye:Et:null,g=f?f===Ye?a.length:s.length:0);const y=f===Ye&&/\\b(?:transform|all)(?:,|$)/.test(n(`${Ye}Property`).toString());return{type:f,timeout:h,propCount:g,hasTransform:y}}function Ci(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((r,n)=>xi(r)+xi(e[n])))}function xi(e){return e===\"auto\"?0:Number(e.slice(0,-1).replace(\",\",\".\"))*1e3}function _n(e){return(e?e.ownerDocument:document).body.offsetHeight}function iu(e,t,r){const n=e[Ct];n&&(t=(t?[t,...n]:[...n]).join(\" \")),t==null?e.removeAttribute(\"class\"):r?e.setAttribute(\"class\",t):e.className=t}const xr=Symbol(\"_vod\"),xl=Symbol(\"_vsh\"),th={name:\"show\",beforeMount(e,{value:t},{transition:r}){e[xr]=e.style.display===\"none\"?\"\":e.style.display,r&&t?r.beforeEnter(e):$t(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),$t(e,!0),n.enter(e)):n.leave(e,()=>{$t(e,!1)}):$t(e,t))},beforeUnmount(e,{value:t}){$t(e,t)}};function $t(e,t){e.style.display=t?e[xr]:\"none\",e[xl]=!t}const au=Symbol(\"\"),ou=/(?:^|;)\\s*display\\s*:/;function lu(e,t,r){const n=e.style,i=re(r);let a=!1;if(r&&!i){if(t)if(re(t))for(const o of t.split(\";\")){const l=o.slice(0,o.indexOf(\":\")).trim();r[l]==null&&pr(n,l,\"\")}else for(const o in t)r[o]==null&&pr(n,o,\"\");for(const o in r)o===\"display\"&&(a=!0),pr(n,o,r[o])}else if(i){if(t!==r){const o=n[au];o&&(r+=\";\"+o),n.cssText=r,a=ou.test(r)}}else t&&e.removeAttribute(\"style\");xr in e&&(e[xr]=a?n.display:\"\",e[xl]&&(n.display=\"none\"))}const ji=/\\s*!important$/;function pr(e,t,r){if(L(r))r.forEach(n=>pr(e,t,n));else if(r==null&&(r=\"\"),t.startsWith(\"--\"))e.setProperty(t,r);else{const n=su(e,t);ji.test(r)?e.setProperty(bt(n),r.replace(ji,\"\"),\"important\"):e[n]=r}}const Ai=[\"Webkit\",\"Moz\",\"ms\"],tn={};function su(e,t){const r=tn[t];if(r)return r;let n=xe(t);if(n!==\"filter\"&&n in e)return tn[t]=n;n=Er(n);for(let i=0;i<Ai.length;i++){const a=Ai[i]+n;if(a in e)return tn[t]=a}return t}const Mi=\"http://www.w3.org/1999/xlink\";function Ti(e,t,r,n,i,a=ac(t)){n&&t.startsWith(\"xlink:\")?r==null?e.removeAttributeNS(Mi,t.slice(6,t.length)):e.setAttributeNS(Mi,t,r):r==null||a&&!lo(r)?e.removeAttribute(t):e.setAttribute(t,a?\"\":it(r)?String(r):r)}function Ei(e,t,r,n,i){if(t===\"innerHTML\"||t===\"textContent\"){r!=null&&(e[t]=t===\"innerHTML\"?_l(r):r);return}const a=e.tagName;if(t===\"value\"&&a!==\"PROGRESS\"&&!a.includes(\"-\")){const l=a===\"OPTION\"?e.getAttribute(\"value\")||\"\":e.value,s=r==null?e.type===\"checkbox\"?\"on\":\"\":String(r);(l!==s||!(\"_value\"in e))&&(e.value=s),r==null&&e.removeAttribute(t),e._value=r;return}let o=!1;if(r===\"\"||r==null){const l=typeof e[t];l===\"boolean\"?r=lo(r):r==null&&l===\"string\"?(r=\"\",o=!0):l===\"number\"&&(r=0,o=!0)}try{e[t]=r}catch{}o&&e.removeAttribute(i||t)}function cu(e,t,r,n){e.addEventListener(t,r,n)}function fu(e,t,r,n){e.removeEventListener(t,r,n)}const $i=Symbol(\"_vei\");function uu(e,t,r,n,i=null){const a=e[$i]||(e[$i]={}),o=a[t];if(n&&o)o.value=n;else{const[l,s]=du(t);if(n){const d=a[t]=gu(n,i);cu(e,l,d,s)}else o&&(fu(e,l,o,s),a[t]=void 0)}}const Hi=/(?:Once|Passive|Capture)$/;function du(e){let t;if(Hi.test(e)){t={};let n;for(;n=e.match(Hi);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===\":\"?e.slice(3):bt(e.slice(2)),t]}let rn=0;const hu=Promise.resolve(),pu=()=>rn||(hu.then(()=>rn=0),rn=Date.now());function gu(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;Te(bu(n,r.value),t,5,[n])};return r.value=e,r.attached=pu(),r}function bu(e,t){if(L(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Li=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,mu=(e,t,r,n,i,a)=>{const o=i===\"svg\";t===\"class\"?iu(e,n,o):t===\"style\"?lu(e,r,n):Ar(t)?Mn(t)||uu(e,t,r,n,a):(t[0]===\".\"?(t=t.slice(1),!0):t[0]===\"^\"?(t=t.slice(1),!1):vu(e,t,n,o))?(Ei(e,t,n),!e.tagName.includes(\"-\")&&(t===\"value\"||t===\"checked\"||t===\"selected\")&&Ti(e,t,n,o,a,t!==\"value\")):e._isVueCE&&(/[A-Z]/.test(t)||!re(n))?Ei(e,xe(t),n,a,t):(t===\"true-value\"?e._trueValue=n:t===\"false-value\"&&(e._falseValue=n),Ti(e,t,n,o))};function vu(e,t,r,n){if(n)return!!(t===\"innerHTML\"||t===\"textContent\"||t in e&&Li(t)&&R(r));if(t===\"spellcheck\"||t===\"draggable\"||t===\"translate\"||t===\"autocorrect\"||t===\"form\"||t===\"list\"&&e.tagName===\"INPUT\"||t===\"type\"&&e.tagName===\"TEXTAREA\")return!1;if(t===\"width\"||t===\"height\"){const i=e.tagName;if(i===\"IMG\"||i===\"VIDEO\"||i===\"CANVAS\"||i===\"SOURCE\")return!1}return Li(t)&&re(r)?!1:t in e}const jl=new WeakMap,Al=new WeakMap,jr=Symbol(\"_moveCb\"),Di=Symbol(\"_enterCb\"),Ou=e=>(delete e.props.mode,e),yu=Ou({name:\"TransitionGroup\",props:ae({},wl,{tag:String,moveClass:String}),setup(e,{slots:t}){const r=xt(),n=Io();let i,a;return Zo(()=>{if(!i.length)return;const o=e.moveClass||`${e.name||\"v\"}-move`;if(!Pu(i[0].el,r.vnode.el,o)){i=[];return}i.forEach(_u),i.forEach(Su);const l=i.filter(wu);_n(r.vnode.el),l.forEach(s=>{const d=s.el,f=d.style;Re(d,o),f.transform=f.webkitTransform=f.transitionDuration=\"\";const h=d[jr]=g=>{g&&g.target!==d||(!g||g.propertyName.endsWith(\"transform\"))&&(d.removeEventListener(\"transitionend\",h),d[jr]=null,Xe(d,o))};d.addEventListener(\"transitionend\",h)}),i=[]}),()=>{const o=U(e),l=Pl(o);let s=o.tag||Ae;if(i=[],a)for(let d=0;d<a.length;d++){const f=a[d];f.el&&f.el instanceof Element&&(i.push(f),gt(f,Qt(f,l,n,r)),jl.set(f,f.el.getBoundingClientRect()))}a=t.default?Bn(t.default()):[];for(let d=0;d<a.length;d++){const f=a[d];f.key!=null&&gt(f,Qt(f,l,n,r))}return w(s,null,a)}}}),rh=yu;function _u(e){const t=e.el;t[jr]&&t[jr](),t[Di]&&t[Di]()}function Su(e){Al.set(e,e.el.getBoundingClientRect())}function wu(e){const t=jl.get(e),r=Al.get(e),n=t.left-r.left,i=t.top-r.top;if(n||i){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${n}px,${i}px)`,a.transitionDuration=\"0s\",e}}function Pu(e,t,r){const n=e.cloneNode(),i=e[Ct];i&&i.forEach(l=>{l.split(/\\s+/).forEach(s=>s&&n.classList.remove(s))}),r.split(/\\s+/).forEach(l=>l&&n.classList.add(l)),n.style.display=\"none\";const a=t.nodeType===1?t:t.parentNode;a.appendChild(n);const{hasTransform:o}=Cl(n);return a.removeChild(n),o}const Cu=[\"ctrl\",\"shift\",\"alt\",\"meta\"],xu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>\"button\"in e&&e.button!==0,middle:e=>\"button\"in e&&e.button!==1,right:e=>\"button\"in e&&e.button!==2,exact:(e,t)=>Cu.some(r=>e[`${r}Key`]&&!t.includes(r))},nh=(e,t)=>{const r=e._withMods||(e._withMods={}),n=t.join(\".\");return r[n]||(r[n]=(i,...a)=>{for(let o=0;o<t.length;o++){const l=xu[t[o]];if(l&&l(i,t))return}return e(i,...a)})},ju=ae({patchProp:mu},eu);let Ri;function Ml(){return Ri||(Ri=yf(ju))}const ih=(...e)=>{Ml().render(...e)},ah=(...e)=>{const t=Ml().createApp(...e),{mount:r}=t;return t.mount=n=>{const i=Mu(n);if(!i)return;const a=t._component;!R(a)&&!a.render&&!a.template&&(a.template=i.innerHTML),i.nodeType===1&&(i.textContent=\"\");const o=r(i,!1,Au(i));return i instanceof Element&&(i.removeAttribute(\"v-cloak\"),i.setAttribute(\"data-v-app\",\"\")),o},t};function Au(e){if(e instanceof SVGElement)return\"svg\";if(typeof MathMLElement==\"function\"&&e instanceof MathMLElement)return\"mathml\"}function Mu(e){return re(e)?document.querySelector(e):e}function ce(e,t){Tu(e)&&(e=\"100%\");var r=Eu(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function lr(e){return Math.min(1,Math.max(0,e))}function Tu(e){return typeof e==\"string\"&&e.indexOf(\".\")!==-1&&parseFloat(e)===1}function Eu(e){return typeof e==\"string\"&&e.indexOf(\"%\")!==-1}function Tl(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function sr(e){return e<=1?\"\".concat(Number(e)*100,\"%\"):e}function ht(e){return e.length===1?\"0\"+e:String(e)}function $u(e,t,r){return{r:ce(e,255)*255,g:ce(t,255)*255,b:ce(r,255)*255}}function Fi(e,t,r){e=ce(e,255),t=ce(t,255),r=ce(r,255);var n=Math.max(e,t,r),i=Math.min(e,t,r),a=0,o=0,l=(n+i)/2;if(n===i)o=0,a=0;else{var s=n-i;switch(o=l>.5?s/(2-n-i):s/(n+i),n){case e:a=(t-r)/s+(t<r?6:0);break;case t:a=(r-e)/s+2;break;case r:a=(e-t)/s+4;break}a/=6}return{h:a,s:o,l}}function nn(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*(6*r):r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function Hu(e,t,r){var n,i,a;if(e=ce(e,360),t=ce(t,100),r=ce(r,100),t===0)i=r,a=r,n=r;else{var o=r<.5?r*(1+t):r+t-r*t,l=2*r-o;n=nn(l,o,e+1/3),i=nn(l,o,e),a=nn(l,o,e-1/3)}return{r:n*255,g:i*255,b:a*255}}function Sn(e,t,r){e=ce(e,255),t=ce(t,255),r=ce(r,255);var n=Math.max(e,t,r),i=Math.min(e,t,r),a=0,o=n,l=n-i,s=n===0?0:l/n;if(n===i)a=0;else{switch(n){case e:a=(t-r)/l+(t<r?6:0);break;case t:a=(r-e)/l+2;break;case r:a=(e-t)/l+4;break}a/=6}return{h:a,s,v:o}}function Lu(e,t,r){e=ce(e,360)*6,t=ce(t,100),r=ce(r,100);var n=Math.floor(e),i=e-n,a=r*(1-t),o=r*(1-i*t),l=r*(1-(1-i)*t),s=n%6,d=[r,o,a,a,l,r][s],f=[l,r,r,o,a,a][s],h=[a,a,l,r,r,o][s];return{r:d*255,g:f*255,b:h*255}}function wn(e,t,r,n){var i=[ht(Math.round(e).toString(16)),ht(Math.round(t).toString(16)),ht(Math.round(r).toString(16))];return n&&i[0].startsWith(i[0].charAt(1))&&i[1].startsWith(i[1].charAt(1))&&i[2].startsWith(i[2].charAt(1))?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(\"\")}function Du(e,t,r,n,i){var a=[ht(Math.round(e).toString(16)),ht(Math.round(t).toString(16)),ht(Math.round(r).toString(16)),ht(Ru(n))];return i&&a[0].startsWith(a[0].charAt(1))&&a[1].startsWith(a[1].charAt(1))&&a[2].startsWith(a[2].charAt(1))&&a[3].startsWith(a[3].charAt(1))?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join(\"\")}function Ru(e){return Math.round(parseFloat(e)*255).toString(16)}function zi(e){return _e(e)/255}function _e(e){return parseInt(e,16)}function Fu(e){return{r:e>>16,g:(e&65280)>>8,b:e&255}}var Pn={aliceblue:\"#f0f8ff\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",aquamarine:\"#7fffd4\",azure:\"#f0ffff\",beige:\"#f5f5dc\",bisque:\"#ffe4c4\",black:\"#000000\",blanchedalmond:\"#ffebcd\",blue:\"#0000ff\",blueviolet:\"#8a2be2\",brown:\"#a52a2a\",burlywood:\"#deb887\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",cornflowerblue:\"#6495ed\",cornsilk:\"#fff8dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",darkkhaki:\"#bdb76b\",darkmagenta:\"#8b008b\",darkolivegreen:\"#556b2f\",darkorange:\"#ff8c00\",darkorchid:\"#9932cc\",darkred:\"#8b0000\",darksalmon:\"#e9967a\",darkseagreen:\"#8fbc8f\",darkslateblue:\"#483d8b\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",darkturquoise:\"#00ced1\",darkviolet:\"#9400d3\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1e90ff\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",forestgreen:\"#228b22\",fuchsia:\"#ff00ff\",gainsboro:\"#dcdcdc\",ghostwhite:\"#f8f8ff\",goldenrod:\"#daa520\",gold:\"#ffd700\",gray:\"#808080\",green:\"#008000\",greenyellow:\"#adff2f\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",ivory:\"#fffff0\",khaki:\"#f0e68c\",lavenderblush:\"#fff0f5\",lavender:\"#e6e6fa\",lawngreen:\"#7cfc00\",lemonchiffon:\"#fffacd\",lightblue:\"#add8e6\",lightcoral:\"#f08080\",lightcyan:\"#e0ffff\",lightgoldenrodyellow:\"#fafad2\",lightgray:\"#d3d3d3\",lightgreen:\"#90ee90\",lightgrey:\"#d3d3d3\",lightpink:\"#ffb6c1\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",lightskyblue:\"#87cefa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#b0c4de\",lightyellow:\"#ffffe0\",lime:\"#00ff00\",limegreen:\"#32cd32\",linen:\"#faf0e6\",magenta:\"#ff00ff\",maroon:\"#800000\",mediumaquamarine:\"#66cdaa\",mediumblue:\"#0000cd\",mediumorchid:\"#ba55d3\",mediumpurple:\"#9370db\",mediumseagreen:\"#3cb371\",mediumslateblue:\"#7b68ee\",mediumspringgreen:\"#00fa9a\",mediumturquoise:\"#48d1cc\",mediumvioletred:\"#c71585\",midnightblue:\"#191970\",mintcream:\"#f5fffa\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",navajowhite:\"#ffdead\",navy:\"#000080\",oldlace:\"#fdf5e6\",olive:\"#808000\",olivedrab:\"#6b8e23\",orange:\"#ffa500\",orangered:\"#ff4500\",orchid:\"#da70d6\",palegoldenrod:\"#eee8aa\",palegreen:\"#98fb98\",paleturquoise:\"#afeeee\",palevioletred:\"#db7093\",papayawhip:\"#ffefd5\",peachpuff:\"#ffdab9\",peru:\"#cd853f\",pink:\"#ffc0cb\",plum:\"#dda0dd\",powderblue:\"#b0e0e6\",purple:\"#800080\",rebeccapurple:\"#663399\",red:\"#ff0000\",rosybrown:\"#bc8f8f\",royalblue:\"#4169e1\",saddlebrown:\"#8b4513\",salmon:\"#fa8072\",sandybrown:\"#f4a460\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",sienna:\"#a0522d\",silver:\"#c0c0c0\",skyblue:\"#87ceeb\",slateblue:\"#6a5acd\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#fffafa\",springgreen:\"#00ff7f\",steelblue:\"#4682b4\",tan:\"#d2b48c\",teal:\"#008080\",thistle:\"#d8bfd8\",tomato:\"#ff6347\",turquoise:\"#40e0d0\",violet:\"#ee82ee\",wheat:\"#f5deb3\",white:\"#ffffff\",whitesmoke:\"#f5f5f5\",yellow:\"#ffff00\",yellowgreen:\"#9acd32\"};function Ot(e){var t={r:0,g:0,b:0},r=1,n=null,i=null,a=null,o=!1,l=!1;return typeof e==\"string\"&&(e=Iu(e)),typeof e==\"object\"&&(Ve(e.r)&&Ve(e.g)&&Ve(e.b)?(t=$u(e.r,e.g,e.b),o=!0,l=String(e.r).substr(-1)===\"%\"?\"prgb\":\"rgb\"):Ve(e.h)&&Ve(e.s)&&Ve(e.v)?(n=sr(e.s),i=sr(e.v),t=Lu(e.h,n,i),o=!0,l=\"hsv\"):Ve(e.h)&&Ve(e.s)&&Ve(e.l)&&(n=sr(e.s),a=sr(e.l),t=Hu(e.h,n,a),o=!0,l=\"hsl\"),Object.prototype.hasOwnProperty.call(e,\"a\")&&(r=e.a)),r=Tl(r),{ok:o,format:e.format||l,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}var zu=\"[-\\\\+]?\\\\d+%?\",Nu=\"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\",et=\"(?:\".concat(Nu,\")|(?:\").concat(zu,\")\"),an=\"[\\\\s|\\\\(]+(\".concat(et,\")[,|\\\\s]+(\").concat(et,\")[,|\\\\s]+(\").concat(et,\")\\\\s*\\\\)?\"),on=\"[\\\\s|\\\\(]+(\".concat(et,\")[,|\\\\s]+(\").concat(et,\")[,|\\\\s]+(\").concat(et,\")[,|\\\\s]+(\").concat(et,\")\\\\s*\\\\)?\"),je={CSS_UNIT:new RegExp(et),rgb:new RegExp(\"rgb\"+an),rgba:new RegExp(\"rgba\"+on),hsl:new RegExp(\"hsl\"+an),hsla:new RegExp(\"hsla\"+on),hsv:new RegExp(\"hsv\"+an),hsva:new RegExp(\"hsva\"+on),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Iu(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(Pn[e])e=Pn[e],t=!0;else if(e===\"transparent\")return{r:0,g:0,b:0,a:0,format:\"name\"};var r=je.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=je.rgba.exec(e),r?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=je.hsl.exec(e),r?{h:r[1],s:r[2],l:r[3]}:(r=je.hsla.exec(e),r?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=je.hsv.exec(e),r?{h:r[1],s:r[2],v:r[3]}:(r=je.hsva.exec(e),r?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=je.hex8.exec(e),r?{r:_e(r[1]),g:_e(r[2]),b:_e(r[3]),a:zi(r[4]),format:t?\"name\":\"hex8\"}:(r=je.hex6.exec(e),r?{r:_e(r[1]),g:_e(r[2]),b:_e(r[3]),format:t?\"name\":\"hex\"}:(r=je.hex4.exec(e),r?{r:_e(r[1]+r[1]),g:_e(r[2]+r[2]),b:_e(r[3]+r[3]),a:zi(r[4]+r[4]),format:t?\"name\":\"hex8\"}:(r=je.hex3.exec(e),r?{r:_e(r[1]+r[1]),g:_e(r[2]+r[2]),b:_e(r[3]+r[3]),format:t?\"name\":\"hex\"}:!1)))))))))}function Ve(e){return!!je.CSS_UNIT.exec(String(e))}var oh=(function(){function e(t,r){t===void 0&&(t=\"\"),r===void 0&&(r={});var n;if(t instanceof e)return t;typeof t==\"number\"&&(t=Fu(t)),this.originalInput=t;var i=Ot(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(n=r.format)!==null&&n!==void 0?n:i.format,this.gradientType=r.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),r,n,i,a=t.r/255,o=t.g/255,l=t.b/255;return a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),l<=.03928?i=l/12.92:i=Math.pow((l+.055)/1.055,2.4),.2126*r+.7152*n+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=Tl(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=Sn(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=Sn(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?\"hsv(\".concat(r,\", \").concat(n,\"%, \").concat(i,\"%)\"):\"hsva(\".concat(r,\", \").concat(n,\"%, \").concat(i,\"%, \").concat(this.roundA,\")\")},e.prototype.toHsl=function(){var t=Fi(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=Fi(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?\"hsl(\".concat(r,\", \").concat(n,\"%, \").concat(i,\"%)\"):\"hsla(\".concat(r,\", \").concat(n,\"%, \").concat(i,\"%, \").concat(this.roundA,\")\")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),wn(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),\"#\"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),Du(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),\"#\"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),r=Math.round(this.g),n=Math.round(this.b);return this.a===1?\"rgb(\".concat(t,\", \").concat(r,\", \").concat(n,\")\"):\"rgba(\".concat(t,\", \").concat(r,\", \").concat(n,\", \").concat(this.roundA,\")\")},e.prototype.toPercentageRgb=function(){var t=function(r){return\"\".concat(Math.round(ce(r,255)*100),\"%\")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(r){return Math.round(ce(r,255)*100)};return this.a===1?\"rgb(\".concat(t(this.r),\"%, \").concat(t(this.g),\"%, \").concat(t(this.b),\"%)\"):\"rgba(\".concat(t(this.r),\"%, \").concat(t(this.g),\"%, \").concat(t(this.b),\"%, \").concat(this.roundA,\")\")},e.prototype.toName=function(){if(this.a===0)return\"transparent\";if(this.a<1)return!1;for(var t=\"#\"+wn(this.r,this.g,this.b,!1),r=0,n=Object.entries(Pn);r<n.length;r++){var i=n[r],a=i[0],o=i[1];if(t===o)return a}return!1},e.prototype.toString=function(t){var r=!!t;t=t??this.format;var n=!1,i=this.a<1&&this.a>=0,a=!r&&i&&(t.startsWith(\"hex\")||t===\"name\");return a?t===\"name\"&&this.a===0?this.toName():this.toRgbString():(t===\"rgb\"&&(n=this.toRgbString()),t===\"prgb\"&&(n=this.toPercentageRgbString()),(t===\"hex\"||t===\"hex6\")&&(n=this.toHexString()),t===\"hex3\"&&(n=this.toHexString(!0)),t===\"hex4\"&&(n=this.toHex8String(!0)),t===\"hex8\"&&(n=this.toHex8String()),t===\"name\"&&(n=this.toName()),t===\"hsl\"&&(n=this.toHslString()),t===\"hsv\"&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l+=t/100,r.l=lr(r.l),new e(r)},e.prototype.brighten=function(t){t===void 0&&(t=10);var r=this.toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(255*-(t/100)))),r.g=Math.max(0,Math.min(255,r.g-Math.round(255*-(t/100)))),r.b=Math.max(0,Math.min(255,r.b-Math.round(255*-(t/100)))),new e(r)},e.prototype.darken=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l-=t/100,r.l=lr(r.l),new e(r)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix(\"white\",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix(\"black\",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s-=t/100,r.s=lr(r.s),new e(r)},e.prototype.saturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s+=t/100,r.s=lr(r.s),new e(r)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var r=this.toHsl(),n=(r.h+t)%360;return r.h=n<0?360+n:n,new e(r)},e.prototype.mix=function(t,r){r===void 0&&(r=50);var n=this.toRgb(),i=new e(t).toRgb(),a=r/100,o={r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a};return new e(o)},e.prototype.analogous=function(t,r){t===void 0&&(t=6),r===void 0&&(r=30);var n=this.toHsl(),i=360/r,a=[this];for(n.h=(n.h-(i*t>>1)+720)%360;--t;)n.h=(n.h+i)%360,a.push(new e(n));return a},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var r=this.toHsv(),n=r.h,i=r.s,a=r.v,o=[],l=1/t;t--;)o.push(new e({h:n,s:i,v:a})),a=(a+l)%1;return o},e.prototype.splitcomplement=function(){var t=this.toHsl(),r=t.h;return[this,new e({h:(r+72)%360,s:t.s,l:t.l}),new e({h:(r+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var r=this.toRgb(),n=new e(t).toRgb(),i=r.a+n.a*(1-r.a);return new e({r:(r.r*r.a+n.r*n.a*(1-r.a))/i,g:(r.g*r.a+n.g*n.a*(1-r.a))/i,b:(r.b*r.a+n.b*n.a*(1-r.a))/i,a:i})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var r=this.toHsl(),n=r.h,i=[this],a=360/t,o=1;o<t;o++)i.push(new e({h:(n+o*a)%360,s:r.s,l:r.l}));return i},e.prototype.equals=function(t){return this.toRgbString()===new e(t).toRgbString()},e})(),cr=2,Ni=.16,Bu=.05,Vu=.05,Uu=.15,El=5,$l=4,Wu=[{index:7,opacity:.15},{index:6,opacity:.25},{index:5,opacity:.3},{index:5,opacity:.45},{index:5,opacity:.65},{index:5,opacity:.85},{index:4,opacity:.9},{index:3,opacity:.95},{index:2,opacity:.97},{index:1,opacity:.98}];function Ii(e){var t=e.r,r=e.g,n=e.b,i=Sn(t,r,n);return{h:i.h*360,s:i.s,v:i.v}}function fr(e){var t=e.r,r=e.g,n=e.b;return\"#\".concat(wn(t,r,n,!1))}function qu(e,t,r){var n=r/100,i={r:(t.r-e.r)*n+e.r,g:(t.g-e.g)*n+e.g,b:(t.b-e.b)*n+e.b};return i}function Bi(e,t,r){var n;return Math.round(e.h)>=60&&Math.round(e.h)<=240?n=r?Math.round(e.h)-cr*t:Math.round(e.h)+cr*t:n=r?Math.round(e.h)+cr*t:Math.round(e.h)-cr*t,n<0?n+=360:n>=360&&(n-=360),n}function Vi(e,t,r){if(e.h===0&&e.s===0)return e.s;var n;return r?n=e.s-Ni*t:t===$l?n=e.s+Ni:n=e.s+Bu*t,n>1&&(n=1),r&&t===El&&n>.1&&(n=.1),n<.06&&(n=.06),Number(n.toFixed(2))}function Ui(e,t,r){var n;return r?n=e.v+Vu*t:n=e.v-Uu*t,n>1&&(n=1),Number(n.toFixed(2))}function Cn(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[],n=Ot(e),i=El;i>0;i-=1){var a=Ii(n),o=fr(Ot({h:Bi(a,i,!0),s:Vi(a,i,!0),v:Ui(a,i,!0)}));r.push(o)}r.push(fr(n));for(var l=1;l<=$l;l+=1){var s=Ii(n),d=fr(Ot({h:Bi(s,l),s:Vi(s,l),v:Ui(s,l)}));r.push(d)}return t.theme===\"dark\"?Wu.map(function(f){var h=f.index,g=f.opacity,y=fr(qu(Ot(t.backgroundColor||\"#141414\"),Ot(r[h]),g*100));return y}):r}var ln={red:\"#F5222D\",volcano:\"#FA541C\",orange:\"#FA8C16\",gold:\"#FAAD14\",yellow:\"#FADB14\",lime:\"#A0D911\",green:\"#52C41A\",cyan:\"#13C2C2\",blue:\"#1890FF\",geekblue:\"#2F54EB\",purple:\"#722ED1\",magenta:\"#EB2F96\",grey:\"#666666\"},Wt={},sn={};Object.keys(ln).forEach(function(e){Wt[e]=Cn(ln[e]),Wt[e].primary=Wt[e][5],sn[e]=Cn(ln[e],{theme:\"dark\",backgroundColor:\"#141414\"}),sn[e].primary=sn[e][5]});var lh=Wt.gold,Gu=Wt.blue,Ju={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"}}]},name:\"down\",theme:\"outlined\"},Zu=Symbol(\"iconContext\"),Hl=function(){return Vt(Zu,{prefixCls:ur(\"anticon\"),rootClassName:ur(\"\"),csp:ur()})};function Jn(){return!!(typeof window<\"u\"&&window.document&&window.document.createElement)}function Qu(e,t){return e&&e.contains?e.contains(t):!1}var Wi=\"data-vc-order\",Yu=\"vc-icon-key\",xn=new Map;function Ll(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.mark;return t?t.startsWith(\"data-\")?t:\"data-\".concat(t):Yu}function Zn(e){if(e.attachTo)return e.attachTo;var t=document.querySelector(\"head\");return t||document.body}function Xu(e){return e===\"queue\"?\"prependQueue\":e?\"prepend\":\"append\"}function Dl(e){return Array.from((xn.get(e)||e).children).filter(function(t){return t.tagName===\"STYLE\"})}function Rl(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Jn())return null;var r=t.csp,n=t.prepend,i=document.createElement(\"style\");i.setAttribute(Wi,Xu(n)),r&&r.nonce&&(i.nonce=r.nonce),i.innerHTML=e;var a=Zn(t),o=a.firstChild;if(n){if(n===\"queue\"){var l=Dl(a).filter(function(s){return[\"prepend\",\"prependQueue\"].includes(s.getAttribute(Wi))});if(l.length)return a.insertBefore(i,l[l.length-1].nextSibling),i}a.insertBefore(i,o)}else a.appendChild(i);return i}function ku(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Zn(t);return Dl(r).find(function(n){return n.getAttribute(Ll(t))===e})}function Ku(e,t){var r=xn.get(e);if(!r||!Qu(document,r)){var n=Rl(\"\",t),i=n.parentNode;xn.set(e,i),e.removeChild(n)}}function e1(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=Zn(r);Ku(n,r);var i=ku(t,r);if(i)return r.csp&&r.csp.nonce&&i.nonce!==r.csp.nonce&&(i.nonce=r.csp.nonce),i.innerHTML!==e&&(i.innerHTML=e),i;var a=Rl(e,r);return a.setAttribute(Ll(r),t),a}function qi(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){t1(e,i,r[i])})}return e}function t1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gi(e){return typeof e==\"object\"&&typeof e.name==\"string\"&&typeof e.theme==\"string\"&&(typeof e.icon==\"object\"||typeof e.icon==\"function\")}function jn(e,t,r){return r?On(e.tag,qi({key:t},r,e.attrs),(e.children||[]).map(function(n,i){return jn(n,\"\".concat(t,\"-\").concat(e.tag,\"-\").concat(i))})):On(e.tag,qi({key:t},e.attrs),(e.children||[]).map(function(n,i){return jn(n,\"\".concat(t,\"-\").concat(e.tag,\"-\").concat(i))}))}function Fl(e){return Cn(e)[0]}function zl(e){return e?Array.isArray(e)?e:[e]:[]}var r1=`\n.anticon {\n  display: inline-block;\n  color: inherit;\n  font-style: normal;\n  line-height: 0;\n  text-align: center;\n  text-transform: none;\n  vertical-align: -0.125em;\n  text-rendering: optimizeLegibility;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n  line-height: 1;\n}\n\n.anticon svg {\n  display: inline-block;\n}\n\n.anticon::before {\n  display: none;\n}\n\n.anticon .anticon-icon {\n  display: block;\n}\n\n.anticon[tabindex] {\n  cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n  display: inline-block;\n  -webkit-animation: loadingCircle 1s infinite linear;\n  animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes loadingCircle {\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n`;function Nl(e){return e&&e.getRootNode&&e.getRootNode()}function n1(e){return Jn()?Nl(e)instanceof ShadowRoot:!1}function i1(e){return n1(e)?Nl(e):null}var a1=function(){var t=Hl(),r=t.prefixCls,n=t.csp,i=xt(),a=r1;r&&(a=a.replace(/anticon/g,r.value)),Eo(function(){if(Jn()){var o=i.vnode.el,l=i1(o);e1(a,\"@ant-design-vue-icons\",{prepend:!0,csp:n.value,attachTo:l})}})},o1=[\"icon\",\"primaryColor\",\"secondaryColor\"];function l1(e,t){if(e==null)return{};var r=s1(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function s1(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,a;for(a=0;a<n.length;a++)i=n[a],!(t.indexOf(i)>=0)&&(r[i]=e[i]);return r}function gr(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){c1(e,i,r[i])})}return e}function c1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var qt=Dr({primaryColor:\"#333\",secondaryColor:\"#E6E6E6\",calculated:!1});function f1(e){var t=e.primaryColor,r=e.secondaryColor;qt.primaryColor=t,qt.secondaryColor=r||Fl(t),qt.calculated=!!r}function u1(){return gr({},qt)}var at=function(t,r){var n=gr({},t,r.attrs),i=n.icon,a=n.primaryColor,o=n.secondaryColor,l=l1(n,o1),s=qt;if(a&&(s={primaryColor:a,secondaryColor:o||Fl(a)}),Gi(i),!Gi(i))return null;var d=i;return d&&typeof d.icon==\"function\"&&(d=gr({},d,{icon:d.icon(s.primaryColor,s.secondaryColor)})),jn(d.icon,\"svg-\".concat(d.name),gr({},l,{\"data-icon\":d.name,width:\"1em\",height:\"1em\",fill:\"currentColor\",\"aria-hidden\":\"true\"}))};at.props={icon:Object,primaryColor:String,secondaryColor:String,focusable:String};at.inheritAttrs=!1;at.displayName=\"IconBase\";at.getTwoToneColors=u1;at.setTwoToneColors=f1;function d1(e,t){return b1(e)||g1(e,t)||p1(e,t)||h1()}function h1(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function p1(e,t){if(e){if(typeof e==\"string\")return Ji(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r===\"Object\"&&e.constructor&&(r=e.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(e);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ji(e,t)}}function Ji(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function g1(e,t){var r=e==null?null:typeof Symbol<\"u\"&&e[Symbol.iterator]||e[\"@@iterator\"];if(r!=null){var n=[],i=!0,a=!1,o,l;try{for(r=r.call(e);!(i=(o=r.next()).done)&&(n.push(o.value),!(t&&n.length===t));i=!0);}catch(s){a=!0,l=s}finally{try{!i&&r.return!=null&&r.return()}finally{if(a)throw l}}return n}}function b1(e){if(Array.isArray(e))return e}function Il(e){var t=zl(e),r=d1(t,2),n=r[0],i=r[1];return at.setTwoToneColors({primaryColor:n,secondaryColor:i})}function m1(){var e=at.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor}var v1=Gc({name:\"InsertStyles\",setup:function(){return a1(),function(){return null}}}),O1=[\"class\",\"icon\",\"spin\",\"rotate\",\"tabindex\",\"twoToneColor\",\"onClick\"];function y1(e,t){return P1(e)||w1(e,t)||S1(e,t)||_1()}function _1(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S1(e,t){if(e){if(typeof e==\"string\")return Zi(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r===\"Object\"&&e.constructor&&(r=e.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(e);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Zi(e,t)}}function Zi(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function w1(e,t){var r=e==null?null:typeof Symbol<\"u\"&&e[Symbol.iterator]||e[\"@@iterator\"];if(r!=null){var n=[],i=!0,a=!1,o,l;try{for(r=r.call(e);!(i=(o=r.next()).done)&&(n.push(o.value),!(t&&n.length===t));i=!0);}catch(s){a=!0,l=s}finally{try{!i&&r.return!=null&&r.return()}finally{if(a)throw l}}return n}}function P1(e){if(Array.isArray(e))return e}function Qi(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Lt(e,i,r[i])})}return e}function Lt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function C1(e,t){if(e==null)return{};var r=x1(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function x1(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,a;for(a=0;a<n.length;a++)i=n[a],!(t.indexOf(i)>=0)&&(r[i]=e[i]);return r}Il(Gu.primary);var x=function(t,r){var n,i=Qi({},t,r.attrs),a=i.class,o=i.icon,l=i.spin,s=i.rotate,d=i.tabindex,f=i.twoToneColor,h=i.onClick,g=C1(i,O1),y=Hl(),j=y.prefixCls,M=y.rootClassName,z=(n={},Lt(n,M.value,!!M.value),Lt(n,j.value,!0),Lt(n,\"\".concat(j.value,\"-\").concat(o.name),!!o.name),Lt(n,\"\".concat(j.value,\"-spin\"),!!l||o.name===\"loading\"),n),D=d;D===void 0&&h&&(D=-1);var N=s?{msTransform:\"rotate(\".concat(s,\"deg)\"),transform:\"rotate(\".concat(s,\"deg)\")}:void 0,W=zl(f),T=y1(W,2),V=T[0],J=T[1];return w(\"span\",Qi({role:\"img\",\"aria-label\":o.name},g,{onClick:h,class:[z,a],tabindex:D}),[w(at,{icon:o,primaryColor:V,secondaryColor:J,style:N},null),w(v1,null,null)])};x.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:[String,Array]};x.displayName=\"AntdIcon\";x.inheritAttrs=!1;x.getTwoToneColor=m1;x.setTwoToneColor=Il;function Yi(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){j1(e,i,r[i])})}return e}function j1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Bl=function(t,r){var n=Yi({},t,r.attrs);return w(x,Yi({},n,{icon:Ju}),null)};Bl.displayName=\"DownOutlined\";Bl.inheritAttrs=!1;var A1={icon:{tag:\"svg\",attrs:{viewBox:\"0 0 1024 1024\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"}}]},name:\"loading\",theme:\"outlined\"};function Xi(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){M1(e,i,r[i])})}return e}function M1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Vl=function(t,r){var n=Xi({},t,r.attrs);return w(x,Xi({},n,{icon:A1}),null)};Vl.displayName=\"LoadingOutlined\";Vl.inheritAttrs=!1;var T1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"}}]},name:\"check\",theme:\"outlined\"};function ki(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){E1(e,i,r[i])})}return e}function E1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ul=function(t,r){var n=ki({},t,r.attrs);return w(x,ki({},n,{icon:T1}),null)};Ul.displayName=\"CheckOutlined\";Ul.inheritAttrs=!1;var $1={icon:{tag:\"svg\",attrs:{\"fill-rule\":\"evenodd\",viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\"}}]},name:\"close\",theme:\"outlined\"};function Ki(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){H1(e,i,r[i])})}return e}function H1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Wl=function(t,r){var n=Ki({},t,r.attrs);return w(x,Ki({},n,{icon:$1}),null)};Wl.displayName=\"CloseOutlined\";Wl.inheritAttrs=!1;var L1={icon:{tag:\"svg\",attrs:{\"fill-rule\":\"evenodd\",viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\"}}]},name:\"close-circle\",theme:\"filled\"};function ea(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){D1(e,i,r[i])})}return e}function D1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ql=function(t,r){var n=ea({},t,r.attrs);return w(x,ea({},n,{icon:L1}),null)};ql.displayName=\"CloseCircleFilled\";ql.inheritAttrs=!1;var R1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"}}]},name:\"search\",theme:\"outlined\"};function ta(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){F1(e,i,r[i])})}return e}function F1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Gl=function(t,r){var n=ta({},t,r.attrs);return w(x,ta({},n,{icon:R1}),null)};Gl.displayName=\"SearchOutlined\";Gl.inheritAttrs=!1;var z1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z\"}},{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"}}]},name:\"check-circle\",theme:\"outlined\"};function ra(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){N1(e,i,r[i])})}return e}function N1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Jl=function(t,r){var n=ra({},t,r.attrs);return w(x,ra({},n,{icon:z1}),null)};Jl.displayName=\"CheckCircleOutlined\";Jl.inheritAttrs=!1;var I1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"}},{tag:\"path\",attrs:{d:\"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z\"}}]},name:\"exclamation-circle\",theme:\"outlined\"};function na(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){B1(e,i,r[i])})}return e}function B1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Zl=function(t,r){var n=na({},t,r.attrs);return w(x,na({},n,{icon:I1}),null)};Zl.displayName=\"ExclamationCircleOutlined\";Zl.inheritAttrs=!1;var V1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"}},{tag:\"path\",attrs:{d:\"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z\"}}]},name:\"info-circle\",theme:\"outlined\"};function ia(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){U1(e,i,r[i])})}return e}function U1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ql=function(t,r){var n=ia({},t,r.attrs);return w(x,ia({},n,{icon:V1}),null)};Ql.displayName=\"InfoCircleOutlined\";Ql.inheritAttrs=!1;var W1={icon:{tag:\"svg\",attrs:{\"fill-rule\":\"evenodd\",viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z\"}}]},name:\"close-circle\",theme:\"outlined\"};function aa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){q1(e,i,r[i])})}return e}function q1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Yl=function(t,r){var n=aa({},t,r.attrs);return w(x,aa({},n,{icon:W1}),null)};Yl.displayName=\"CloseCircleOutlined\";Yl.inheritAttrs=!1;var G1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"}}]},name:\"check-circle\",theme:\"filled\"};function oa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){J1(e,i,r[i])})}return e}function J1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Xl=function(t,r){var n=oa({},t,r.attrs);return w(x,oa({},n,{icon:G1}),null)};Xl.displayName=\"CheckCircleFilled\";Xl.inheritAttrs=!1;var Z1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"}}]},name:\"exclamation-circle\",theme:\"filled\"};function la(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Q1(e,i,r[i])})}return e}function Q1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var kl=function(t,r){var n=la({},t,r.attrs);return w(x,la({},n,{icon:Z1}),null)};kl.displayName=\"ExclamationCircleFilled\";kl.inheritAttrs=!1;var Y1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"}}]},name:\"info-circle\",theme:\"filled\"};function sa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){X1(e,i,r[i])})}return e}function X1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Kl=function(t,r){var n=sa({},t,r.attrs);return w(x,sa({},n,{icon:Y1}),null)};Kl.displayName=\"InfoCircleFilled\";Kl.inheritAttrs=!1;var k1={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"}}]},name:\"ellipsis\",theme:\"outlined\"};function ca(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){K1(e,i,r[i])})}return e}function K1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var es=function(t,r){var n=ca({},t,r.attrs);return w(x,ca({},n,{icon:k1}),null)};es.displayName=\"EllipsisOutlined\";es.inheritAttrs=!1;var e0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"}}]},name:\"right\",theme:\"outlined\"};function fa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){t0(e,i,r[i])})}return e}function t0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ts=function(t,r){var n=fa({},t,r.attrs);return w(x,fa({},n,{icon:e0}),null)};ts.displayName=\"RightOutlined\";ts.inheritAttrs=!1;var r0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"}},{tag:\"path\",attrs:{d:\"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\"}}]},name:\"plus\",theme:\"outlined\"};function ua(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){n0(e,i,r[i])})}return e}function n0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var rs=function(t,r){var n=ua({},t,r.attrs);return w(x,ua({},n,{icon:r0}),null)};rs.displayName=\"PlusOutlined\";rs.inheritAttrs=!1;var i0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"}}]},name:\"left\",theme:\"outlined\"};function da(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){a0(e,i,r[i])})}return e}function a0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ns=function(t,r){var n=da({},t,r.attrs);return w(x,da({},n,{icon:i0}),null)};ns.displayName=\"LeftOutlined\";ns.inheritAttrs=!1;var o0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"}},{tag:\"path\",attrs:{d:\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\"}}]},name:\"question-circle\",theme:\"outlined\"};function ha(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){l0(e,i,r[i])})}return e}function l0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var is=function(t,r){var n=ha({},t,r.attrs);return w(x,ha({},n,{icon:o0}),null)};is.displayName=\"QuestionCircleOutlined\";is.inheritAttrs=!1;var s0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"}}]},name:\"calendar\",theme:\"outlined\"};function pa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){c0(e,i,r[i])})}return e}function c0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var as=function(t,r){var n=pa({},t,r.attrs);return w(x,pa({},n,{icon:s0}),null)};as.displayName=\"CalendarOutlined\";as.inheritAttrs=!1;var f0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"}},{tag:\"path\",attrs:{d:\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"}}]},name:\"clock-circle\",theme:\"outlined\"};function ga(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){u0(e,i,r[i])})}return e}function u0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var os=function(t,r){var n=ga({},t,r.attrs);return w(x,ga({},n,{icon:f0}),null)};os.displayName=\"ClockCircleOutlined\";os.inheritAttrs=!1;var d0={icon:{tag:\"svg\",attrs:{viewBox:\"0 0 1024 1024\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"}}]},name:\"swap-right\",theme:\"outlined\"};function ba(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){h0(e,i,r[i])})}return e}function h0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ls=function(t,r){var n=ba({},t,r.attrs);return w(x,ba({},n,{icon:d0}),null)};ls.displayName=\"SwapRightOutlined\";ls.inheritAttrs=!1;var p0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"}}]},name:\"file-text\",theme:\"outlined\"};function ma(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){g0(e,i,r[i])})}return e}function g0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ss=function(t,r){var n=ma({},t,r.attrs);return w(x,ma({},n,{icon:p0}),null)};ss.displayName=\"FileTextOutlined\";ss.inheritAttrs=!1;var b0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z\"}}]},name:\"vertical-align-top\",theme:\"outlined\"};function va(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){m0(e,i,r[i])})}return e}function m0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var cs=function(t,r){var n=va({},t,r.attrs);return w(x,va({},n,{icon:b0}),null)};cs.displayName=\"VerticalAlignTopOutlined\";cs.inheritAttrs=!1;var v0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"}}]},name:\"eye\",theme:\"outlined\"};function Oa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){O0(e,i,r[i])})}return e}function O0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var fs=function(t,r){var n=Oa({},t,r.attrs);return w(x,Oa({},n,{icon:v0}),null)};fs.displayName=\"EyeOutlined\";fs.inheritAttrs=!1;var y0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"}},{tag:\"path\",attrs:{d:\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"}}]},name:\"eye-invisible\",theme:\"outlined\"};function ya(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){_0(e,i,r[i])})}return e}function _0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var us=function(t,r){var n=ya({},t,r.attrs);return w(x,ya({},n,{icon:y0}),null)};us.displayName=\"EyeInvisibleOutlined\";us.inheritAttrs=!1;var S0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"defs\",attrs:{},children:[{tag:\"style\",attrs:{}}]},{tag:\"path\",attrs:{d:\"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z\"}},{tag:\"path\",attrs:{d:\"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z\"}}]},name:\"rotate-left\",theme:\"outlined\"};function _a(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){w0(e,i,r[i])})}return e}function w0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ds=function(t,r){var n=_a({},t,r.attrs);return w(x,_a({},n,{icon:S0}),null)};ds.displayName=\"RotateLeftOutlined\";ds.inheritAttrs=!1;var P0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"defs\",attrs:{},children:[{tag:\"style\",attrs:{}}]},{tag:\"path\",attrs:{d:\"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-.4-12.6 6.1l-.2 64c-118.6.5-235.8 53.4-314.6 154.2A399.75 399.75 0 00123.5 631h74.9c-.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z\"}},{tag:\"path\",attrs:{d:\"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H396V494h440v326z\"}}]},name:\"rotate-right\",theme:\"outlined\"};function Sa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){C0(e,i,r[i])})}return e}function C0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var hs=function(t,r){var n=Sa({},t,r.attrs);return w(x,Sa({},n,{icon:P0}),null)};hs.displayName=\"RotateRightOutlined\";hs.inheritAttrs=!1;var x0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\"}}]},name:\"zoom-in\",theme:\"outlined\"};function wa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){j0(e,i,r[i])})}return e}function j0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ps=function(t,r){var n=wa({},t,r.attrs);return w(x,wa({},n,{icon:x0}),null)};ps.displayName=\"ZoomInOutlined\";ps.inheritAttrs=!1;var A0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\"}}]},name:\"zoom-out\",theme:\"outlined\"};function Pa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){M0(e,i,r[i])})}return e}function M0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var gs=function(t,r){var n=Pa({},t,r.attrs);return w(x,Pa({},n,{icon:A0}),null)};gs.displayName=\"ZoomOutOutlined\";gs.inheritAttrs=!1;var T0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"}}]},name:\"swap\",theme:\"outlined\"};function Ca(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){E0(e,i,r[i])})}return e}function E0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var bs=function(t,r){var n=Ca({},t,r.attrs);return w(x,Ca({},n,{icon:T0}),null)};bs.displayName=\"SwapOutlined\";bs.inheritAttrs=!1;var $0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"}}]},name:\"up\",theme:\"outlined\"};function xa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){H0(e,i,r[i])})}return e}function H0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ms=function(t,r){var n=xa({},t,r.attrs);return w(x,xa({},n,{icon:$0}),null)};ms.displayName=\"UpOutlined\";ms.inheritAttrs=!1;var L0={icon:{tag:\"svg\",attrs:{viewBox:\"0 0 1024 1024\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z\"}}]},name:\"bars\",theme:\"outlined\"};function ja(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){D0(e,i,r[i])})}return e}function D0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var vs=function(t,r){var n=ja({},t,r.attrs);return w(x,ja({},n,{icon:L0}),null)};vs.displayName=\"BarsOutlined\";vs.inheritAttrs=!1;var R0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\"}}]},name:\"double-left\",theme:\"outlined\"};function Aa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){F0(e,i,r[i])})}return e}function F0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Os=function(t,r){var n=Aa({},t,r.attrs);return w(x,Aa({},n,{icon:R0}),null)};Os.displayName=\"DoubleLeftOutlined\";Os.inheritAttrs=!1;var z0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"}}]},name:\"double-right\",theme:\"outlined\"};function Ma(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){N0(e,i,r[i])})}return e}function N0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ys=function(t,r){var n=Ma({},t,r.attrs);return w(x,Ma({},n,{icon:z0}),null)};ys.displayName=\"DoubleRightOutlined\";ys.inheritAttrs=!1;var I0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"}}]},name:\"arrow-left\",theme:\"outlined\"};function Ta(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){B0(e,i,r[i])})}return e}function B0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var _s=function(t,r){var n=Ta({},t,r.attrs);return w(x,Ta({},n,{icon:I0}),null)};_s.displayName=\"ArrowLeftOutlined\";_s.inheritAttrs=!1;var V0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 000-48.4z\"}}]},name:\"arrow-right\",theme:\"outlined\"};function Ea(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){U0(e,i,r[i])})}return e}function U0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ss=function(t,r){var n=Ea({},t,r.attrs);return w(x,Ea({},n,{icon:V0}),null)};Ss.displayName=\"ArrowRightOutlined\";Ss.inheritAttrs=!1;var W0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"}}]},name:\"star\",theme:\"filled\"};function $a(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){q0(e,i,r[i])})}return e}function q0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ws=function(t,r){var n=$a({},t,r.attrs);return w(x,$a({},n,{icon:W0}),null)};ws.displayName=\"StarFilled\";ws.inheritAttrs=!1;var G0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"}}]},name:\"warning\",theme:\"filled\"};function Ha(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){J0(e,i,r[i])})}return e}function J0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ps=function(t,r){var n=Ha({},t,r.attrs);return w(x,Ha({},n,{icon:G0}),null)};Ps.displayName=\"WarningFilled\";Ps.inheritAttrs=!1;var Z0={icon:{tag:\"svg\",attrs:{viewBox:\"0 0 1024 1024\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"}}]},name:\"caret-down\",theme:\"outlined\"};function La(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Q0(e,i,r[i])})}return e}function Q0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Cs=function(t,r){var n=La({},t,r.attrs);return w(x,La({},n,{icon:Z0}),null)};Cs.displayName=\"CaretDownOutlined\";Cs.inheritAttrs=!1;var Y0={icon:{tag:\"svg\",attrs:{viewBox:\"0 0 1024 1024\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"}}]},name:\"caret-up\",theme:\"outlined\"};function Da(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){X0(e,i,r[i])})}return e}function X0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var xs=function(t,r){var n=Da({},t,r.attrs);return w(x,Da({},n,{icon:Y0}),null)};xs.displayName=\"CaretUpOutlined\";xs.inheritAttrs=!1;var k0={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"}}]},name:\"filter\",theme:\"filled\"};function Ra(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){K0(e,i,r[i])})}return e}function K0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var js=function(t,r){var n=Ra({},t,r.attrs);return w(x,Ra({},n,{icon:k0}),null)};js.displayName=\"FilterFilled\";js.inheritAttrs=!1;var ed={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"}}]},name:\"file\",theme:\"outlined\"};function Fa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){td(e,i,r[i])})}return e}function td(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var As=function(t,r){var n=Fa({},t,r.attrs);return w(x,Fa({},n,{icon:ed}),null)};As.displayName=\"FileOutlined\";As.inheritAttrs=!1;var rd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"}},{tag:\"path\",attrs:{d:\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"}}]},name:\"minus-square\",theme:\"outlined\"};function za(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){nd(e,i,r[i])})}return e}function nd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ms=function(t,r){var n=za({},t,r.attrs);return w(x,za({},n,{icon:rd}),null)};Ms.displayName=\"MinusSquareOutlined\";Ms.inheritAttrs=!1;var id={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"}},{tag:\"path\",attrs:{d:\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"}}]},name:\"plus-square\",theme:\"outlined\"};function Na(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){ad(e,i,r[i])})}return e}function ad(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ts=function(t,r){var n=Na({},t,r.attrs);return w(x,Na({},n,{icon:id}),null)};Ts.displayName=\"PlusSquareOutlined\";Ts.inheritAttrs=!1;var od={icon:{tag:\"svg\",attrs:{viewBox:\"0 0 1024 1024\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"}}]},name:\"caret-down\",theme:\"filled\"};function Ia(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){ld(e,i,r[i])})}return e}function ld(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Es=function(t,r){var n=Ia({},t,r.attrs);return w(x,Ia({},n,{icon:od}),null)};Es.displayName=\"CaretDownFilled\";Es.inheritAttrs=!1;var sd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\"}}]},name:\"folder-open\",theme:\"outlined\"};function Ba(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){cd(e,i,r[i])})}return e}function cd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var $s=function(t,r){var n=Ba({},t,r.attrs);return w(x,Ba({},n,{icon:sd}),null)};$s.displayName=\"FolderOpenOutlined\";$s.inheritAttrs=!1;var fd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\"}}]},name:\"folder\",theme:\"outlined\"};function Va(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){ud(e,i,r[i])})}return e}function ud(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Hs=function(t,r){var n=Va({},t,r.attrs);return w(x,Va({},n,{icon:fd}),null)};Hs.displayName=\"FolderOutlined\";Hs.inheritAttrs=!1;var dd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"}}]},name:\"delete\",theme:\"outlined\"};function Ua(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){hd(e,i,r[i])})}return e}function hd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ls=function(t,r){var n=Ua({},t,r.attrs);return w(x,Ua({},n,{icon:dd}),null)};Ls.displayName=\"DeleteOutlined\";Ls.inheritAttrs=!1;var pd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 000 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z\"}}]},name:\"enter\",theme:\"outlined\"};function Wa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){gd(e,i,r[i])})}return e}function gd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ds=function(t,r){var n=Wa({},t,r.attrs);return w(x,Wa({},n,{icon:pd}),null)};Ds.displayName=\"EnterOutlined\";Ds.inheritAttrs=!1;var bd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"}}]},name:\"copy\",theme:\"outlined\"};function qa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){md(e,i,r[i])})}return e}function md(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Rs=function(t,r){var n=qa({},t,r.attrs);return w(x,qa({},n,{icon:bd}),null)};Rs.displayName=\"CopyOutlined\";Rs.inheritAttrs=!1;var vd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"}}]},name:\"edit\",theme:\"outlined\"};function Ga(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Od(e,i,r[i])})}return e}function Od(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Fs=function(t,r){var n=Ga({},t,r.attrs);return w(x,Ga({},n,{icon:vd}),null)};Fs.displayName=\"EditOutlined\";Fs.inheritAttrs=!1;var yd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"}}]},name:\"paper-clip\",theme:\"outlined\"};function Ja(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){_d(e,i,r[i])})}return e}function _d(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var zs=function(t,r){var n=Ja({},t,r.attrs);return w(x,Ja({},n,{icon:yd}),null)};zs.displayName=\"PaperClipOutlined\";zs.inheritAttrs=!1;var Sd={icon:function(t,r){return{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z\",fill:t}},{tag:\"path\",attrs:{d:\"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z\",fill:r}},{tag:\"path\",attrs:{d:\"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 110 176 88 88 0 010-176z\",fill:r}},{tag:\"path\",attrs:{d:\"M276 368a28 28 0 1056 0 28 28 0 10-56 0z\",fill:r}},{tag:\"path\",attrs:{d:\"M304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\",fill:t}}]}},name:\"picture\",theme:\"twotone\"};function Za(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){wd(e,i,r[i])})}return e}function wd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ns=function(t,r){var n=Za({},t,r.attrs);return w(x,Za({},n,{icon:Sd}),null)};Ns.displayName=\"PictureTwoTone\";Ns.inheritAttrs=!1;var Pd={icon:function(t,r){return{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\",fill:r}},{tag:\"path\",attrs:{d:\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\",fill:t}}]}},name:\"file\",theme:\"twotone\"};function Qa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Cd(e,i,r[i])})}return e}function Cd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Is=function(t,r){var n=Qa({},t,r.attrs);return w(x,Qa({},n,{icon:Pd}),null)};Is.displayName=\"FileTwoTone\";Is.inheritAttrs=!1;var xd={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"}}]},name:\"download\",theme:\"outlined\"};function Ya(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){jd(e,i,r[i])})}return e}function jd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Bs=function(t,r){var n=Ya({},t,r.attrs);return w(x,Ya({},n,{icon:xd}),null)};Bs.displayName=\"DownloadOutlined\";Bs.inheritAttrs=!1;var Ad={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0010-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 003.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 00-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 01887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 01-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 01115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 01540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 00540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 01-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 00-81.5 55.9A373.86 373.86 0 01137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 01-107.6 69.2z\"}}]},name:\"global\",theme:\"outlined\"};function Xa(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Md(e,i,r[i])})}return e}function Md(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Vs=function(t,r){var n=Xa({},t,r.attrs);return w(x,Xa({},n,{icon:Ad}),null)};Vs.displayName=\"GlobalOutlined\";Vs.inheritAttrs=!1;var Td={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z\"}}]},name:\"lock\",theme:\"outlined\"};function ka(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Ed(e,i,r[i])})}return e}function Ed(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Us=function(t,r){var n=ka({},t,r.attrs);return w(x,ka({},n,{icon:Td}),null)};Us.displayName=\"LockOutlined\";Us.inheritAttrs=!1;var $d={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\"}}]},name:\"reload\",theme:\"outlined\"};function Ka(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Hd(e,i,r[i])})}return e}function Hd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ws=function(t,r){var n=Ka({},t,r.attrs);return w(x,Ka({},n,{icon:$d}),null)};Ws.displayName=\"ReloadOutlined\";Ws.inheritAttrs=!1;var Ld={icon:{tag:\"svg\",attrs:{viewBox:\"64 64 896 896\",focusable:\"false\"},children:[{tag:\"path\",attrs:{d:\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"}}]},name:\"user\",theme:\"outlined\"};function eo(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==\"function\"&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),n.forEach(function(i){Dd(e,i,r[i])})}return e}function Dd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var qs=function(t,r){var n=eo({},t,r.attrs);return w(x,eo({},n,{icon:Ld}),null)};qs.displayName=\"UserOutlined\";qs.inheritAttrs=!1;export{Ql as $,Qo as A,oh as B,me as C,Cn as D,Nd as E,Ae as F,eh as G,Wd as H,Zd as I,nt as J,ih as K,th as L,nh as M,Yc as N,qd as O,If as P,Vd as Q,U as R,ql as S,Ir as T,Vl as U,Ul as V,Wl as W,Gl as X,Bl as Y,Zl as Z,Yl as _,ur as a,Ff as a$,Jl as a0,kl as a1,Kl as a2,Xl as a3,es as a4,ts as a5,Yd as a6,Xc as a7,rs as a8,is as a9,Cs as aA,As as aB,Es as aC,Ms as aD,Ts as aE,$s as aF,Hs as aG,js as aH,Ls as aI,lh as aJ,Ds as aK,ah as aL,Fs as aM,Rs as aN,Bs as aO,Ns as aP,Is as aQ,zs as aR,Ws as aS,kd as aT,Df as aU,ml as aV,Kd as aW,Hn as aX,$n as aY,oc as aZ,Gd as a_,rh as aa,ns as ab,os as ac,as as ad,ls as ae,ss as af,Jc as ag,Zc as ah,cs as ai,fs as aj,us as ak,bs as al,gs as am,ps as an,hs as ao,ds as ap,ms as aq,vs as ar,ys as as,Os as at,Ss as au,_s as av,ln as aw,ws as ax,Ps as ay,xs as az,Jo as b,Vc as b0,qs as b1,Us as b2,Qd as b3,Vs as b4,Jd as b5,Bd as c,xt as d,Yf as e,Id as f,lc as g,Dr as h,Fd as i,le as j,Gc as k,On as l,Vt as m,Eo as n,zd as o,Yo as p,w as q,dn as r,Mc as s,Ud as t,jo as u,Pr as v,kr as w,Zo as x,hf as y,Xd as z};\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/@vueuse/core-B6fUiQ3R.js",
    "content": "import{t as te,r as V,a as U,c as ne,g as re,o as oe,b as K,n as D,w as j,d as G,e as P,f as A,s as H,h as L,u as ie}from\"../@ant-design/icons-vue-ym-L-X2r.js\";function z(e,n){return re()?(oe(e,n),!0):!1}const I=typeof window<\"u\"&&typeof document<\"u\";typeof WorkerGlobalScope<\"u\"&&globalThis instanceof WorkerGlobalScope;const se=e=>e!=null,ae=Object.prototype.toString,ue=e=>ae.call(e)===\"[object Object]\",le=()=>{};function q(...e){if(e.length!==1)return te(...e);const n=e[0];return typeof n==\"function\"?V(ne(()=>({get:n,set:le}))):U(n)}function ce(e,n){function r(...u){return new Promise((o,f)=>{Promise.resolve(e(()=>n.apply(this,u),{fn:n,thisArg:this,args:u})).then(o).catch(f)})}return r}const B=e=>e();function fe(e=B,n={}){const{initialState:r=\"active\"}=n,u=q(r===\"active\");function o(){u.value=!1}function f(){u.value=!0}const y=(...t)=>{u.value&&e(...t)};return{isActive:V(u),pause:o,resume:f,eventFilter:y}}function T(e){return Array.isArray(e)?e:[e]}function de(e){return G()}function pe(e,n,r={}){const{eventFilter:u=B,...o}=r;return j(e,ce(u,n),o)}function he(e,n,r={}){const{eventFilter:u,initialState:o=\"active\",...f}=r,{eventFilter:y,pause:t,resume:l,isActive:s}=fe(u,{initialState:o});return{stop:pe(e,n,{...f,eventFilter:y}),pause:t,resume:l,isActive:s}}const Q=he;function ve(e,n=!0,r){de()?K(e,r):n?e():D(e)}function ye(e,n,r){return j(e,n,{...r,immediate:!0})}const F=I?window:void 0,me=I?window.document:void 0;function X(e){var n;const r=A(e);return(n=r?.$el)!==null&&n!==void 0?n:r}function k(...e){const n=[],r=()=>{n.forEach(t=>t()),n.length=0},u=(t,l,s,h)=>(t.addEventListener(l,s,h),()=>t.removeEventListener(l,s,h)),o=P(()=>{const t=T(A(e[0])).filter(l=>l!=null);return t.every(l=>typeof l!=\"string\")?t:void 0}),f=ye(()=>{var t,l;return[(t=(l=o.value)===null||l===void 0?void 0:l.map(s=>X(s)))!==null&&t!==void 0?t:[F].filter(s=>s!=null),T(A(o.value?e[1]:e[0])),T(ie(o.value?e[2]:e[1])),A(o.value?e[3]:e[2])]},([t,l,s,h])=>{if(r(),!t?.length||!l?.length||!s?.length)return;const a=ue(h)?{...h}:h;n.push(...t.flatMap(m=>l.flatMap(O=>s.map(M=>u(m,O,M,a)))))},{flush:\"post\"}),y=()=>{f(),r()};return z(r),y}function ge(){const e=H(!1),n=G();return n&&K(()=>{e.value=!0},n),e}function Se(e){const n=ge();return P(()=>(n.value,!!e()))}function be(e,n,r={}){const{window:u=F,...o}=r;let f;const y=Se(()=>u&&\"MutationObserver\"in u),t=()=>{f&&(f.disconnect(),f=void 0)},l=j(P(()=>{const a=T(A(e)).map(X).filter(se);return new Set(a)}),a=>{t(),y.value&&a.size&&(f=new MutationObserver(n),a.forEach(m=>f.observe(m,o)))},{immediate:!0,flush:\"post\"}),s=()=>f?.takeRecords(),h=()=>{l(),t()};return z(h),{isSupported:y,stop:h,takeRecords:s}}const C=typeof globalThis<\"u\"?globalThis:typeof window<\"u\"?window:typeof global<\"u\"?global:typeof self<\"u\"?self:{},R=\"__vueuse_ssr_handlers__\",we=Oe();function Oe(){return R in C||(C[R]=C[R]||{}),C[R]}function $e(e,n){return we[e]||n}function Ee(e){return e==null?\"any\":e instanceof Set?\"set\":e instanceof Map?\"map\":e instanceof Date?\"date\":typeof e==\"boolean\"?\"boolean\":typeof e==\"string\"?\"string\":typeof e==\"object\"?\"object\":Number.isNaN(e)?\"any\":\"number\"}const Ae={boolean:{read:e=>e===\"true\",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},J=\"vueuse-storage\";function Fe(e,n,r,u={}){var o;const{flush:f=\"pre\",deep:y=!0,listenToStorageChanges:t=!0,writeDefaults:l=!0,mergeDefaults:s=!1,shallow:h,window:a=F,eventFilter:m,onError:O=i=>{console.error(i)},initOnMounted:M}=u,$=(h?H:U)(typeof n==\"function\"?n():n),g=P(()=>A(e));if(!r)try{r=$e(\"getDefaultStorage\",()=>F?.localStorage)()}catch(i){O(i)}if(!r)return $;const b=A(n),N=Ee(b),E=(o=u.serializer)!==null&&o!==void 0?o:Ae[N],{pause:d,resume:c}=Q($,i=>Z(i),{flush:f,deep:y,eventFilter:m});j(g,()=>W(),{flush:f});let p=!1;const w=i=>{M&&!p||W(i)},Y=i=>{M&&!p||ee(i)};a&&t&&(r instanceof Storage?k(a,\"storage\",w,{passive:!0}):k(a,J,Y)),M?ve(()=>{p=!0,W()}):W();function x(i,v){if(a){const S={key:g.value,oldValue:i,newValue:v,storageArea:r};a.dispatchEvent(r instanceof Storage?new StorageEvent(\"storage\",S):new CustomEvent(J,{detail:S}))}}function Z(i){try{const v=r.getItem(g.value);if(i==null)x(v,null),r.removeItem(g.value);else{const S=E.write(i);v!==S&&(r.setItem(g.value,S),x(v,S))}}catch(v){O(v)}}function _(i){const v=i?i.newValue:r.getItem(g.value);if(v==null)return l&&b!=null&&r.setItem(g.value,E.write(b)),b;if(!i&&s){const S=E.read(v);return typeof s==\"function\"?s(S,b):N===\"object\"&&!Array.isArray(S)?{...b,...S}:S}else return typeof v!=\"string\"?v:E.read(v)}function W(i){if(!(i&&i.storageArea!==r)){if(i&&i.key==null){$.value=b;return}if(!(i&&i.key!==g.value)){d();try{const v=E.write($.value);(i===void 0||i?.newValue!==v)&&($.value=_(i))}catch(v){O(v)}finally{i?D(c):c()}}}}function ee(i){W(i.detail)}return $}function Ne(e=null,n={}){var r,u;const{document:o=me,restoreOnUnmount:f=a=>a}=n,y=(r=o?.title)!==null&&r!==void 0?r:\"\",t=q((u=e??o?.title)!==null&&u!==void 0?u:null),l=!!(e&&typeof e==\"function\");function s(a){if(!(\"titleTemplate\"in n))return a;const m=n.titleTemplate||\"%s\";return typeof m==\"function\"?m(a):A(m).replace(/%s/g,a)}if(j(t,(a,m)=>{a!==m&&o&&(o.title=s(a??\"\"))},{immediate:!0}),n.observe&&!n.titleTemplate&&o&&!l){var h;be((h=o.head)===null||h===void 0?void 0:h.querySelector(\"title\"),()=>{o&&o.title!==t.value&&(t.value=s(o.title))},{childList:!0})}return z(()=>{if(f){const a=f(y,t.value||\"\");a!=null&&o&&(o.title=a)}}),t}function We(e=\"history\",n={}){const{initialValue:r={},removeNullishValues:u=!0,removeFalsyValues:o=!1,write:f=!0,writeMode:y=\"replace\",window:t=F,stringify:l=d=>d.toString()}=n;if(!t)return L(r);const s=L({});function h(){if(e===\"history\")return t.location.search||\"\";if(e===\"hash\"){const d=t.location.hash||\"\",c=d.indexOf(\"?\");return c>0?d.slice(c):\"\"}else return(t.location.hash||\"\").replace(/^#/,\"\")}function a(d){const c=l(d);if(e===\"history\")return`${c?`?${c}`:\"\"}${t.location.hash||\"\"}`;if(e===\"hash-params\")return`${t.location.search||\"\"}${c?`#${c}`:\"\"}`;const p=t.location.hash||\"#\",w=p.indexOf(\"?\");return w>0?`${t.location.search||\"\"}${p.slice(0,w)}${c?`?${c}`:\"\"}`:`${t.location.search||\"\"}${p}${c?`?${c}`:\"\"}`}function m(){return new URLSearchParams(h())}function O(d){const c=new Set(Object.keys(s));for(const p of d.keys()){const w=d.getAll(p);s[p]=w.length>1?w:d.get(p)||\"\",c.delete(p)}Array.from(c).forEach(p=>delete s[p])}const{pause:M,resume:$}=Q(s,()=>{const d=new URLSearchParams(\"\");Object.keys(s).forEach(c=>{const p=s[c];Array.isArray(p)?p.forEach(w=>d.append(c,w)):u&&p==null||o&&!p?d.delete(c):d.set(c,p)}),g(d,!1)},{deep:!0});function g(d,c,p=!0){M(),c&&O(d),y===\"replace\"?t.history.replaceState(t.history.state,t.document.title,t.location.pathname+a(d)):p&&t.history.pushState(t.history.state,t.document.title,t.location.pathname+a(d)),D(()=>$())}function b(){f&&g(m(),!0,!1)}const N={passive:!0};k(t,\"popstate\",b,N),e!==\"history\"&&k(t,\"hashchange\",b,N);const E=m();return E.keys().next().value?O(E):Object.assign(s,r),s}export{We as a,Ne as b,z as t,Fe as u};\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/@vueuse/integrations-iJ2WoaAF.js",
    "content": "import{t as j}from\"./core-B6fUiQ3R.js\";import{s as D}from\"../@ant-design/icons-vue-ym-L-X2r.js\";var w={};/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */var _;function N(){if(_)return w;_=1,w.parse=d,w.serialize=b;var o=Object.prototype.toString,r=Object.prototype.hasOwnProperty,i=/^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/,t=/^(\"?)[\\u0021\\u0023-\\u002B\\u002D-\\u003A\\u003C-\\u005B\\u005D-\\u007E]*\\1$/,u=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,p=/^[\\u0020-\\u003A\\u003D-\\u007E]*$/;function d(n,c){if(typeof n!=\"string\")throw new TypeError(\"argument str must be a string\");var e={},h=n.length;if(h<2)return e;var O=c&&c.decode||A,s=0,l=0,f=0;do{if(l=n.indexOf(\"=\",s),l===-1)break;if(f=n.indexOf(\";\",s),f===-1)f=h;else if(l>f){s=n.lastIndexOf(\";\",l-1)+1;continue}var C=g(n,s,l),y=a(n,l,C),k=n.slice(C,y);if(!r.call(e,k)){var v=g(n,l+1,f),E=a(n,f,v);n.charCodeAt(v)===34&&n.charCodeAt(E-1)===34&&(v++,E--);var T=n.slice(v,E);e[k]=x(T,O)}s=f+1}while(s<h);return e}function g(n,c,e){do{var h=n.charCodeAt(c);if(h!==32&&h!==9)return c}while(++c<e);return e}function a(n,c,e){for(;c>e;){var h=n.charCodeAt(--c);if(h!==32&&h!==9)return c+1}return e}function b(n,c,e){var h=e&&e.encode||encodeURIComponent;if(typeof h!=\"function\")throw new TypeError(\"option encode is invalid\");if(!i.test(n))throw new TypeError(\"argument name is invalid\");var O=h(c);if(!t.test(O))throw new TypeError(\"argument val is invalid\");var s=n+\"=\"+O;if(!e)return s;if(e.maxAge!=null){var l=Math.floor(e.maxAge);if(!isFinite(l))throw new TypeError(\"option maxAge is invalid\");s+=\"; Max-Age=\"+l}if(e.domain){if(!u.test(e.domain))throw new TypeError(\"option domain is invalid\");s+=\"; Domain=\"+e.domain}if(e.path){if(!p.test(e.path))throw new TypeError(\"option path is invalid\");s+=\"; Path=\"+e.path}if(e.expires){var f=e.expires;if(!L(f)||isNaN(f.valueOf()))throw new TypeError(\"option expires is invalid\");s+=\"; Expires=\"+f.toUTCString()}if(e.httpOnly&&(s+=\"; HttpOnly\"),e.secure&&(s+=\"; Secure\"),e.partitioned&&(s+=\"; Partitioned\"),e.priority){var C=typeof e.priority==\"string\"?e.priority.toLowerCase():e.priority;switch(C){case\"low\":s+=\"; Priority=Low\";break;case\"medium\":s+=\"; Priority=Medium\";break;case\"high\":s+=\"; Priority=High\";break;default:throw new TypeError(\"option priority is invalid\")}}if(e.sameSite){var y=typeof e.sameSite==\"string\"?e.sameSite.toLowerCase():e.sameSite;switch(y){case!0:s+=\"; SameSite=Strict\";break;case\"lax\":s+=\"; SameSite=Lax\";break;case\"strict\":s+=\"; SameSite=Strict\";break;case\"none\":s+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return s}function A(n){return n.indexOf(\"%\")!==-1?decodeURIComponent(n):n}function L(n){return o.call(n)===\"[object Date]\"}function x(n,c){try{return c(n)}catch{return n}}return w}var m=N();function I(){const o=typeof global>\"u\"?void 0:global.TEST_HAS_DOCUMENT_COOKIE;return typeof o==\"boolean\"?o:typeof document==\"object\"&&typeof document.cookie==\"string\"}function P(o){return typeof o==\"string\"?m.parse(o):typeof o==\"object\"&&o!==null?o:{}}function S(o,r={}){const i=U(o);if(!r.doNotParse)try{return JSON.parse(i)}catch{}return o}function U(o){return o&&o[0]===\"j\"&&o[1]===\":\"?o.substr(2):o}class z{constructor(r,i={}){this.changeListeners=[],this.HAS_DOCUMENT_COOKIE=!1,this.update=()=>{if(!this.HAS_DOCUMENT_COOKIE)return;const u=this.cookies;this.cookies=m.parse(document.cookie),this._checkChanges(u)};const t=typeof document>\"u\"?\"\":document.cookie;this.cookies=P(r||t),this.defaultSetOptions=i,this.HAS_DOCUMENT_COOKIE=I()}_emitChange(r){for(let i=0;i<this.changeListeners.length;++i)this.changeListeners[i](r)}_checkChanges(r){new Set(Object.keys(r).concat(Object.keys(this.cookies))).forEach(t=>{r[t]!==this.cookies[t]&&this._emitChange({name:t,value:S(this.cookies[t])})})}_startPolling(){this.pollingInterval=setInterval(this.update,300)}_stopPolling(){this.pollingInterval&&clearInterval(this.pollingInterval)}get(r,i={}){return i.doNotUpdate||this.update(),S(this.cookies[r],i)}getAll(r={}){r.doNotUpdate||this.update();const i={};for(let t in this.cookies)i[t]=S(this.cookies[t],r);return i}set(r,i,t){t?t=Object.assign(Object.assign({},this.defaultSetOptions),t):t=this.defaultSetOptions;const u=typeof i==\"string\"?i:JSON.stringify(i);this.cookies=Object.assign(Object.assign({},this.cookies),{[r]:u}),this.HAS_DOCUMENT_COOKIE&&(document.cookie=m.serialize(r,u,t)),this._emitChange({name:r,value:i,options:t})}remove(r,i){const t=i=Object.assign(Object.assign(Object.assign({},this.defaultSetOptions),i),{expires:new Date(1970,1,1,0,0,1),maxAge:0});this.cookies=Object.assign({},this.cookies),delete this.cookies[r],this.HAS_DOCUMENT_COOKIE&&(document.cookie=m.serialize(r,\"\",t)),this._emitChange({name:r,value:void 0,options:i})}addChangeListener(r){this.changeListeners.push(r),this.HAS_DOCUMENT_COOKIE&&this.changeListeners.length===1&&(typeof window==\"object\"&&\"cookieStore\"in window?window.cookieStore.addEventListener(\"change\",this.update):this._startPolling())}removeChangeListener(r){const i=this.changeListeners.indexOf(r);i>=0&&this.changeListeners.splice(i,1),this.HAS_DOCUMENT_COOKIE&&this.changeListeners.length===0&&(typeof window==\"object\"&&\"cookieStore\"in window?window.cookieStore.removeEventListener(\"change\",this.update):this._stopPolling())}}function R(o,{doNotParse:r=!1,autoUpdateDependencies:i=!1}={},t=new z){const u=i?[...o||[]]:o;let p=t.getAll({doNotParse:!0});const d=D(0),g=()=>{const a=t.getAll({doNotParse:!0});M(u||null,a,p)&&d.value++,p=a};return t.addChangeListener(g),j(()=>{t.removeChangeListener(g)}),{get:(...a)=>(i&&u&&!u.includes(a[0])&&u.push(a[0]),d.value,t.get(a[0],{doNotParse:r,...a[1]})),getAll:(...a)=>(d.value,t.getAll({doNotParse:r,...a[0]})),set:(...a)=>t.set(...a),remove:(...a)=>t.remove(...a),addChangeListener:(...a)=>t.addChangeListener(...a),removeChangeListener:(...a)=>t.removeChangeListener(...a)}}function M(o,r,i){if(!o)return!0;for(const t of o)if(r[t]!==i[t])return!0;return!1}export{R as u};\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/axios-R-lXtGyY.js",
    "content": "function ze(e,t){return function(){return e.apply(t,arguments)}}const{toString:ht}=Object.prototype,{getPrototypeOf:be}=Object,{iterator:re,toStringTag:Je}=Symbol,se=(e=>t=>{const n=ht.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),P=e=>(e=e.toLowerCase(),t=>se(t)===e),oe=e=>t=>typeof t===e,{isArray:M}=Array,I=oe(\"undefined\");function V(e){return e!==null&&!I(e)&&e.constructor!==null&&!I(e.constructor)&&T(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ve=P(\"ArrayBuffer\");function mt(e){let t;return typeof ArrayBuffer<\"u\"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ve(e.buffer),t}const yt=oe(\"string\"),T=oe(\"function\"),We=oe(\"number\"),W=e=>e!==null&&typeof e==\"object\",bt=e=>e===!0||e===!1,Y=e=>{if(se(e)!==\"object\")return!1;const t=be(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Je in e)&&!(re in e)},wt=e=>{if(!W(e)||V(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},Et=P(\"Date\"),gt=P(\"File\"),St=P(\"Blob\"),Rt=P(\"FileList\"),Ot=e=>W(e)&&T(e.pipe),Tt=e=>{let t;return e&&(typeof FormData==\"function\"&&e instanceof FormData||T(e.append)&&((t=se(e))===\"formdata\"||t===\"object\"&&T(e.toString)&&e.toString()===\"[object FormData]\"))},At=P(\"URLSearchParams\"),[xt,Ct,Nt,Pt]=[\"ReadableStream\",\"Request\",\"Response\",\"Headers\"].map(P),Ft=e=>e.trim?e.trim():e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\");function K(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>\"u\")return;let r,s;if(typeof e!=\"object\"&&(e=[e]),M(e))for(r=0,s=e.length;r<s;r++)t.call(null,e[r],r,e);else{if(V(e))return;const i=n?Object.getOwnPropertyNames(e):Object.keys(e),o=i.length;let c;for(r=0;r<o;r++)c=i[r],t.call(null,e[c],c,e)}}function Ke(e,t){if(V(e))return null;t=t.toLowerCase();const n=Object.keys(e);let r=n.length,s;for(;r-- >0;)if(s=n[r],t===s.toLowerCase())return s;return null}const D=typeof globalThis<\"u\"?globalThis:typeof self<\"u\"?self:typeof window<\"u\"?window:global,ve=e=>!I(e)&&e!==D;function pe(){const{caseless:e,skipUndefined:t}=ve(this)&&this||{},n={},r=(s,i)=>{const o=e&&Ke(n,i)||i;Y(n[o])&&Y(s)?n[o]=pe(n[o],s):Y(s)?n[o]=pe({},s):M(s)?n[o]=s.slice():(!t||!I(s))&&(n[o]=s)};for(let s=0,i=arguments.length;s<i;s++)arguments[s]&&K(arguments[s],r);return n}const _t=(e,t,n,{allOwnKeys:r}={})=>(K(t,(s,i)=>{n&&T(s)?e[i]=ze(s,n):e[i]=s},{allOwnKeys:r}),e),Ut=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Lt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,\"super\",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Bt=(e,t,n,r)=>{let s,i,o;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)o=s[i],(!r||r(o,e,t))&&!c[o]&&(t[o]=e[o],c[o]=!0);e=n!==!1&&be(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Dt=e=>{if(!e)return null;if(M(e))return e;let t=e.length;if(!We(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},jt=(e=>t=>e&&t instanceof e)(typeof Uint8Array<\"u\"&&be(Uint8Array)),qt=(e,t)=>{const r=(e&&e[re]).call(e);let s;for(;(s=r.next())&&!s.done;){const i=s.value;t.call(e,i[0],i[1])}},Ht=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},It=P(\"HTMLFormElement\"),Mt=e=>e.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Ce=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),$t=P(\"RegExp\"),Xe=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};K(n,(s,i)=>{let o;(o=t(s,i,e))!==!1&&(r[i]=o||s)}),Object.defineProperties(e,r)},zt=e=>{Xe(e,(t,n)=>{if(T(e)&&[\"arguments\",\"caller\",\"callee\"].indexOf(n)!==-1)return!1;const r=e[n];if(T(r)){if(t.enumerable=!1,\"writable\"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error(\"Can not rewrite read-only method '\"+n+\"'\")})}})},Jt=(e,t)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return M(e)?r(e):r(String(e).split(t)),n},Vt=()=>{},Wt=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function Kt(e){return!!(e&&T(e.append)&&e[Je]===\"FormData\"&&e[re])}const vt=e=>{const t=new Array(10),n=(r,s)=>{if(W(r)){if(t.indexOf(r)>=0)return;if(V(r))return r;if(!(\"toJSON\"in r)){t[s]=r;const i=M(r)?[]:{};return K(r,(o,c)=>{const d=n(o,s+1);!I(d)&&(i[c]=d)}),t[s]=void 0,i}}return r};return n(e,0)},Xt=P(\"AsyncFunction\"),Gt=e=>e&&(W(e)||T(e))&&T(e.then)&&T(e.catch),Ge=((e,t)=>e?setImmediate:t?((n,r)=>(D.addEventListener(\"message\",({source:s,data:i})=>{s===D&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),D.postMessage(n,\"*\")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate==\"function\",T(D.postMessage)),Qt=typeof queueMicrotask<\"u\"?queueMicrotask.bind(D):typeof process<\"u\"&&process.nextTick||Ge,Zt=e=>e!=null&&T(e[re]),a={isArray:M,isArrayBuffer:Ve,isBuffer:V,isFormData:Tt,isArrayBufferView:mt,isString:yt,isNumber:We,isBoolean:bt,isObject:W,isPlainObject:Y,isEmptyObject:wt,isReadableStream:xt,isRequest:Ct,isResponse:Nt,isHeaders:Pt,isUndefined:I,isDate:Et,isFile:gt,isBlob:St,isRegExp:$t,isFunction:T,isStream:Ot,isURLSearchParams:At,isTypedArray:jt,isFileList:Rt,forEach:K,merge:pe,extend:_t,trim:Ft,stripBOM:Ut,inherits:Lt,toFlatObject:Bt,kindOf:se,kindOfTest:P,endsWith:kt,toArray:Dt,forEachEntry:qt,matchAll:Ht,isHTMLForm:It,hasOwnProperty:Ce,hasOwnProp:Ce,reduceDescriptors:Xe,freezeMethods:zt,toObjectSet:Jt,toCamelCase:Mt,noop:Vt,toFiniteNumber:Wt,findKey:Ke,global:D,isContextDefined:ve,isSpecCompliantForm:Kt,toJSONObject:vt,isAsyncFn:Xt,isThenable:Gt,setImmediate:Ge,asap:Qt,isIterable:Zt};function y(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name=\"AxiosError\",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(y,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const Qe=y.prototype,Ze={};[\"ERR_BAD_OPTION_VALUE\",\"ERR_BAD_OPTION\",\"ECONNABORTED\",\"ETIMEDOUT\",\"ERR_NETWORK\",\"ERR_FR_TOO_MANY_REDIRECTS\",\"ERR_DEPRECATED\",\"ERR_BAD_RESPONSE\",\"ERR_BAD_REQUEST\",\"ERR_CANCELED\",\"ERR_NOT_SUPPORT\",\"ERR_INVALID_URL\"].forEach(e=>{Ze[e]={value:e}});Object.defineProperties(y,Ze);Object.defineProperty(Qe,\"isAxiosError\",{value:!0});y.from=(e,t,n,r,s,i)=>{const o=Object.create(Qe);a.toFlatObject(e,o,function(l){return l!==Error.prototype},f=>f!==\"isAxiosError\");const c=e&&e.message?e.message:\"Error\",d=t==null&&e?e.code:t;return y.call(o,c,d,n,r,s),e&&o.cause==null&&Object.defineProperty(o,\"cause\",{value:e,configurable:!0}),o.name=e&&e.name||\"Error\",i&&Object.assign(o,i),o};const Yt=null;function he(e){return a.isPlainObject(e)||a.isArray(e)}function Ye(e){return a.endsWith(e,\"[]\")?e.slice(0,-2):e}function Ne(e,t,n){return e?e.concat(t).map(function(s,i){return s=Ye(s),!n&&i?\"[\"+s+\"]\":s}).join(n?\".\":\"\"):t}function en(e){return a.isArray(e)&&!e.some(he)}const tn=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function ie(e,t,n){if(!a.isObject(e))throw new TypeError(\"target must be an object\");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,p){return!a.isUndefined(p[m])});const r=n.metaTokens,s=n.visitor||l,i=n.dots,o=n.indexes,d=(n.Blob||typeof Blob<\"u\"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError(\"visitor must be a function\");function f(u){if(u===null)return\"\";if(a.isDate(u))return u.toISOString();if(a.isBoolean(u))return u.toString();if(!d&&a.isBlob(u))throw new y(\"Blob is not supported. Use a Buffer instead.\");return a.isArrayBuffer(u)||a.isTypedArray(u)?d&&typeof Blob==\"function\"?new Blob([u]):Buffer.from(u):u}function l(u,m,p){let E=u;if(u&&!p&&typeof u==\"object\"){if(a.endsWith(m,\"{}\"))m=r?m:m.slice(0,-2),u=JSON.stringify(u);else if(a.isArray(u)&&en(u)||(a.isFileList(u)||a.endsWith(m,\"[]\"))&&(E=a.toArray(u)))return m=Ye(m),E.forEach(function(g,O){!(a.isUndefined(g)||g===null)&&t.append(o===!0?Ne([m],O,i):o===null?m:m+\"[]\",f(g))}),!1}return he(u)?!0:(t.append(Ne(p,m,i),f(u)),!1)}const h=[],b=Object.assign(tn,{defaultVisitor:l,convertValue:f,isVisitable:he});function S(u,m){if(!a.isUndefined(u)){if(h.indexOf(u)!==-1)throw Error(\"Circular reference detected in \"+m.join(\".\"));h.push(u),a.forEach(u,function(E,x){(!(a.isUndefined(E)||E===null)&&s.call(t,E,a.isString(x)?x.trim():x,m,b))===!0&&S(E,m?m.concat(x):[x])}),h.pop()}}if(!a.isObject(e))throw new TypeError(\"data must be an object\");return S(e),t}function Pe(e){const t={\"!\":\"%21\",\"'\":\"%27\",\"(\":\"%28\",\")\":\"%29\",\"~\":\"%7E\",\"%20\":\"+\",\"%00\":\"\\0\"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function we(e,t){this._pairs=[],e&&ie(e,this,t)}const et=we.prototype;et.append=function(t,n){this._pairs.push([t,n])};et.toString=function(t){const n=t?function(r){return t.call(this,r,Pe)}:Pe;return this._pairs.map(function(s){return n(s[0])+\"=\"+n(s[1])},\"\").join(\"&\")};function nn(e){return encodeURIComponent(e).replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\")}function tt(e,t,n){if(!t)return e;const r=n&&n.encode||nn;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(t,n):i=a.isURLSearchParams(t)?t.toString():new we(t,n).toString(r),i){const o=e.indexOf(\"#\");o!==-1&&(e=e.slice(0,o)),e+=(e.indexOf(\"?\")===-1?\"?\":\"&\")+i}return e}class Fe{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const nt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rn=typeof URLSearchParams<\"u\"?URLSearchParams:we,sn=typeof FormData<\"u\"?FormData:null,on=typeof Blob<\"u\"?Blob:null,an={isBrowser:!0,classes:{URLSearchParams:rn,FormData:sn,Blob:on},protocols:[\"http\",\"https\",\"file\",\"blob\",\"url\",\"data\"]},Ee=typeof window<\"u\"&&typeof document<\"u\",me=typeof navigator==\"object\"&&navigator||void 0,cn=Ee&&(!me||[\"ReactNative\",\"NativeScript\",\"NS\"].indexOf(me.product)<0),ln=typeof WorkerGlobalScope<\"u\"&&self instanceof WorkerGlobalScope&&typeof self.importScripts==\"function\",un=Ee&&window.location.href||\"http://localhost\",fn=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Ee,hasStandardBrowserEnv:cn,hasStandardBrowserWebWorkerEnv:ln,navigator:me,origin:un},Symbol.toStringTag,{value:\"Module\"})),R={...fn,...an};function dn(e,t){return ie(e,new R.classes.URLSearchParams,{visitor:function(n,r,s,i){return R.isNode&&a.isBuffer(n)?(this.append(r,n.toString(\"base64\")),!1):i.defaultVisitor.apply(this,arguments)},...t})}function pn(e){return a.matchAll(/\\w+|\\[(\\w*)]/g,e).map(t=>t[0]===\"[]\"?\"\":t[1]||t[0])}function hn(e){const t={},n=Object.keys(e);let r;const s=n.length;let i;for(r=0;r<s;r++)i=n[r],t[i]=e[i];return t}function rt(e){function t(n,r,s,i){let o=n[i++];if(o===\"__proto__\")return!0;const c=Number.isFinite(+o),d=i>=n.length;return o=!o&&a.isArray(s)?s.length:o,d?(a.hasOwnProp(s,o)?s[o]=[s[o],r]:s[o]=r,!c):((!s[o]||!a.isObject(s[o]))&&(s[o]=[]),t(n,r,s[o],i)&&a.isArray(s[o])&&(s[o]=hn(s[o])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(pn(r),s,n,0)}),n}return null}function mn(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!==\"SyntaxError\")throw r}return(n||JSON.stringify)(e)}const v={transitional:nt,adapter:[\"xhr\",\"http\",\"fetch\"],transformRequest:[function(t,n){const r=n.getContentType()||\"\",s=r.indexOf(\"application/json\")>-1,i=a.isObject(t);if(i&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(rt(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType(\"application/x-www-form-urlencoded;charset=utf-8\",!1),t.toString();let c;if(i){if(r.indexOf(\"application/x-www-form-urlencoded\")>-1)return dn(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf(\"multipart/form-data\")>-1){const d=this.env&&this.env.FormData;return ie(c?{\"files[]\":t}:t,d&&new d,this.formSerializer)}}return i||s?(n.setContentType(\"application/json\",!1),mn(t)):t}],transformResponse:[function(t){const n=this.transitional||v.transitional,r=n&&n.forcedJSONParsing,s=this.responseType===\"json\";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const o=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t,this.parseReviver)}catch(c){if(o)throw c.name===\"SyntaxError\"?y.from(c,y.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,maxBodyLength:-1,env:{FormData:R.classes.FormData,Blob:R.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:\"application/json, text/plain, */*\",\"Content-Type\":void 0}}};a.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\"],e=>{v.headers[e]={}});const yn=a.toObjectSet([\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"]),bn=e=>{const t={};let n,r,s;return e&&e.split(`\n`).forEach(function(o){s=o.indexOf(\":\"),n=o.substring(0,s).trim().toLowerCase(),r=o.substring(s+1).trim(),!(!n||t[n]&&yn[n])&&(n===\"set-cookie\"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+\", \"+r:r)}),t},_e=Symbol(\"internals\");function J(e){return e&&String(e).trim().toLowerCase()}function ee(e){return e===!1||e==null?e:a.isArray(e)?e.map(ee):String(e)}function wn(e){const t=Object.create(null),n=/([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const En=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ue(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function gn(e){return e.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function Sn(e,t){const n=a.toCamelCase(\" \"+t);[\"get\",\"set\",\"has\"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,i,o){return this[r].call(this,t,s,i,o)},configurable:!0})})}let A=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function i(c,d,f){const l=J(d);if(!l)throw new Error(\"header name must be a non-empty string\");const h=a.findKey(s,l);(!h||s[h]===void 0||f===!0||f===void 0&&s[h]!==!1)&&(s[h||d]=ee(c))}const o=(c,d)=>a.forEach(c,(f,l)=>i(f,l,d));if(a.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(a.isString(t)&&(t=t.trim())&&!En(t))o(bn(t),n);else if(a.isObject(t)&&a.isIterable(t)){let c={},d,f;for(const l of t){if(!a.isArray(l))throw TypeError(\"Object iterator must return a key-value pair\");c[f=l[0]]=(d=c[f])?a.isArray(d)?[...d,l[1]]:[d,l[1]]:l[1]}o(c,n)}else t!=null&&i(n,t,r);return this}get(t,n){if(t=J(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return wn(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError(\"parser must be boolean|regexp|function\")}}}has(t,n){if(t=J(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||ue(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function i(o){if(o=J(o),o){const c=a.findKey(r,o);c&&(!n||ue(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(i):i(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!t||ue(this,this[i],i,t,!0))&&(delete this[i],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,i)=>{const o=a.findKey(r,i);if(o){n[o]=ee(s),delete n[i];return}const c=t?gn(i):String(i).trim();c!==i&&delete n[i],n[c]=ee(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(\", \"):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+\": \"+n).join(`\n`)}getSetCookie(){return this.get(\"set-cookie\")||[]}get[Symbol.toStringTag](){return\"AxiosHeaders\"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[_e]=this[_e]={accessors:{}}).accessors,s=this.prototype;function i(o){const c=J(o);r[c]||(Sn(s,o),r[c]=!0)}return a.isArray(t)?t.forEach(i):i(t),this}};A.accessor([\"Content-Type\",\"Content-Length\",\"Accept\",\"Accept-Encoding\",\"User-Agent\",\"Authorization\"]);a.reduceDescriptors(A.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(A);function fe(e,t){const n=this||v,r=t||n,s=A.from(r.headers);let i=r.data;return a.forEach(e,function(c){i=c.call(n,i,s.normalize(),t?t.status:void 0)}),s.normalize(),i}function st(e){return!!(e&&e.__CANCEL__)}function $(e,t,n){y.call(this,e??\"canceled\",y.ERR_CANCELED,t,n),this.name=\"CanceledError\"}a.inherits($,y,{__CANCEL__:!0});function ot(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new y(\"Request failed with status code \"+n.status,[y.ERR_BAD_REQUEST,y.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Rn(e){const t=/^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(e);return t&&t[1]||\"\"}function On(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,i=0,o;return t=t!==void 0?t:1e3,function(d){const f=Date.now(),l=r[i];o||(o=f),n[s]=d,r[s]=f;let h=i,b=0;for(;h!==s;)b+=n[h++],h=h%e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),f-o<t)return;const S=l&&f-l;return S?Math.round(b*1e3/S):void 0}}function Tn(e,t){let n=0,r=1e3/t,s,i;const o=(f,l=Date.now())=>{n=l,s=null,i&&(clearTimeout(i),i=null),e(...f)};return[(...f)=>{const l=Date.now(),h=l-n;h>=r?o(f,l):(s=f,i||(i=setTimeout(()=>{i=null,o(s)},r-h)))},()=>s&&o(s)]}const ne=(e,t,n=3)=>{let r=0;const s=On(50,250);return Tn(i=>{const o=i.loaded,c=i.lengthComputable?i.total:void 0,d=o-r,f=s(d),l=o<=c;r=o;const h={loaded:o,total:c,progress:c?o/c:void 0,bytes:d,rate:f||void 0,estimated:f&&c&&l?(c-o)/f:void 0,event:i,lengthComputable:c!=null,[t?\"download\":\"upload\"]:!0};e(h)},n)},Ue=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Le=e=>(...t)=>a.asap(()=>e(...t)),An=R.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,R.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(R.origin),R.navigator&&/(msie|trident)/i.test(R.navigator.userAgent)):()=>!0,xn=R.hasStandardBrowserEnv?{write(e,t,n,r,s,i,o){if(typeof document>\"u\")return;const c=[`${e}=${encodeURIComponent(t)}`];a.isNumber(n)&&c.push(`expires=${new Date(n).toUTCString()}`),a.isString(r)&&c.push(`path=${r}`),a.isString(s)&&c.push(`domain=${s}`),i===!0&&c.push(\"secure\"),a.isString(o)&&c.push(`SameSite=${o}`),document.cookie=c.join(\"; \")},read(e){if(typeof document>\"u\")return null;const t=document.cookie.match(new RegExp(\"(?:^|; )\"+e+\"=([^;]*)\"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,\"\",Date.now()-864e5,\"/\")}}:{write(){},read(){return null},remove(){}};function Cn(e){return/^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(e)}function Nn(e,t){return t?e.replace(/\\/?\\/$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}function it(e,t,n){let r=!Cn(t);return e&&(r||n==!1)?Nn(e,t):t}const Be=e=>e instanceof A?{...e}:e;function q(e,t){t=t||{};const n={};function r(f,l,h,b){return a.isPlainObject(f)&&a.isPlainObject(l)?a.merge.call({caseless:b},f,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(f,l,h,b){if(a.isUndefined(l)){if(!a.isUndefined(f))return r(void 0,f,h,b)}else return r(f,l,h,b)}function i(f,l){if(!a.isUndefined(l))return r(void 0,l)}function o(f,l){if(a.isUndefined(l)){if(!a.isUndefined(f))return r(void 0,f)}else return r(void 0,l)}function c(f,l,h){if(h in t)return r(f,l);if(h in e)return r(void 0,f)}const d={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:c,headers:(f,l,h)=>s(Be(f),Be(l),h,!0)};return a.forEach(Object.keys({...e,...t}),function(l){const h=d[l]||s,b=h(e[l],t[l],l);a.isUndefined(b)&&h!==c||(n[l]=b)}),n}const at=e=>{const t=q({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:c}=t;if(t.headers=o=A.from(o),t.url=tt(it(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&o.set(\"Authorization\",\"Basic \"+btoa((c.username||\"\")+\":\"+(c.password?unescape(encodeURIComponent(c.password)):\"\"))),a.isFormData(n)){if(R.hasStandardBrowserEnv||R.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(a.isFunction(n.getHeaders)){const d=n.getHeaders(),f=[\"content-type\",\"content-length\"];Object.entries(d).forEach(([l,h])=>{f.includes(l.toLowerCase())&&o.set(l,h)})}}if(R.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&An(t.url))){const d=s&&i&&xn.read(i);d&&o.set(s,d)}return t},Pn=typeof XMLHttpRequest<\"u\",Fn=Pn&&function(e){return new Promise(function(n,r){const s=at(e);let i=s.data;const o=A.from(s.headers).normalize();let{responseType:c,onUploadProgress:d,onDownloadProgress:f}=s,l,h,b,S,u;function m(){S&&S(),u&&u(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener(\"abort\",l)}let p=new XMLHttpRequest;p.open(s.method.toUpperCase(),s.url,!0),p.timeout=s.timeout;function E(){if(!p)return;const g=A.from(\"getAllResponseHeaders\"in p&&p.getAllResponseHeaders()),N={data:!c||c===\"text\"||c===\"json\"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:g,config:e,request:p};ot(function(C){n(C),m()},function(C){r(C),m()},N),p=null}\"onloadend\"in p?p.onloadend=E:p.onreadystatechange=function(){!p||p.readyState!==4||p.status===0&&!(p.responseURL&&p.responseURL.indexOf(\"file:\")===0)||setTimeout(E)},p.onabort=function(){p&&(r(new y(\"Request aborted\",y.ECONNABORTED,e,p)),p=null)},p.onerror=function(O){const N=O&&O.message?O.message:\"Network Error\",B=new y(N,y.ERR_NETWORK,e,p);B.event=O||null,r(B),p=null},p.ontimeout=function(){let O=s.timeout?\"timeout of \"+s.timeout+\"ms exceeded\":\"timeout exceeded\";const N=s.transitional||nt;s.timeoutErrorMessage&&(O=s.timeoutErrorMessage),r(new y(O,N.clarifyTimeoutError?y.ETIMEDOUT:y.ECONNABORTED,e,p)),p=null},i===void 0&&o.setContentType(null),\"setRequestHeader\"in p&&a.forEach(o.toJSON(),function(O,N){p.setRequestHeader(N,O)}),a.isUndefined(s.withCredentials)||(p.withCredentials=!!s.withCredentials),c&&c!==\"json\"&&(p.responseType=s.responseType),f&&([b,u]=ne(f,!0),p.addEventListener(\"progress\",b)),d&&p.upload&&([h,S]=ne(d),p.upload.addEventListener(\"progress\",h),p.upload.addEventListener(\"loadend\",S)),(s.cancelToken||s.signal)&&(l=g=>{p&&(r(!g||g.type?new $(null,e,p):g),p.abort(),p=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener(\"abort\",l)));const x=Rn(s.url);if(x&&R.protocols.indexOf(x)===-1){r(new y(\"Unsupported protocol \"+x+\":\",y.ERR_BAD_REQUEST,e));return}p.send(i||null)})},_n=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const i=function(f){if(!s){s=!0,c();const l=f instanceof Error?f:this.reason;r.abort(l instanceof y?l:new $(l instanceof Error?l.message:l))}};let o=t&&setTimeout(()=>{o=null,i(new y(`timeout ${t} of ms exceeded`,y.ETIMEDOUT))},t);const c=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(i):f.removeEventListener(\"abort\",i)}),e=null)};e.forEach(f=>f.addEventListener(\"abort\",i));const{signal:d}=r;return d.unsubscribe=()=>a.asap(c),d}},Un=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},Ln=async function*(e,t){for await(const n of Bn(e))yield*Un(n,t)},Bn=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},ke=(e,t,n,r)=>{const s=Ln(e,t);let i=0,o,c=d=>{o||(o=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:f,value:l}=await s.next();if(f){c(),d.close();return}let h=l.byteLength;if(n){let b=i+=h;n(b)}d.enqueue(new Uint8Array(l))}catch(f){throw c(f),f}},cancel(d){return c(d),s.return()}},{highWaterMark:2})},De=64*1024,{isFunction:Z}=a,kn=(({Request:e,Response:t})=>({Request:e,Response:t}))(a.global),{ReadableStream:je,TextEncoder:qe}=a.global,He=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Dn=e=>{e=a.merge.call({skipUndefined:!0},kn,e);const{fetch:t,Request:n,Response:r}=e,s=t?Z(t):typeof fetch==\"function\",i=Z(n),o=Z(r);if(!s)return!1;const c=s&&Z(je),d=s&&(typeof qe==\"function\"?(u=>m=>u.encode(m))(new qe):async u=>new Uint8Array(await new n(u).arrayBuffer())),f=i&&c&&He(()=>{let u=!1;const m=new n(R.origin,{body:new je,method:\"POST\",get duplex(){return u=!0,\"half\"}}).headers.has(\"Content-Type\");return u&&!m}),l=o&&c&&He(()=>a.isReadableStream(new r(\"\").body)),h={stream:l&&(u=>u.body)};s&&[\"text\",\"arrayBuffer\",\"blob\",\"formData\",\"stream\"].forEach(u=>{!h[u]&&(h[u]=(m,p)=>{let E=m&&m[u];if(E)return E.call(m);throw new y(`Response type '${u}' is not supported`,y.ERR_NOT_SUPPORT,p)})});const b=async u=>{if(u==null)return 0;if(a.isBlob(u))return u.size;if(a.isSpecCompliantForm(u))return(await new n(R.origin,{method:\"POST\",body:u}).arrayBuffer()).byteLength;if(a.isArrayBufferView(u)||a.isArrayBuffer(u))return u.byteLength;if(a.isURLSearchParams(u)&&(u=u+\"\"),a.isString(u))return(await d(u)).byteLength},S=async(u,m)=>{const p=a.toFiniteNumber(u.getContentLength());return p??b(m)};return async u=>{let{url:m,method:p,data:E,signal:x,cancelToken:g,timeout:O,onDownloadProgress:N,onUploadProgress:B,responseType:C,headers:ce,withCredentials:X=\"same-origin\",fetchOptions:Se}=at(u),Re=t||fetch;C=C?(C+\"\").toLowerCase():\"text\";let G=_n([x,g&&g.toAbortSignal()],O),z=null;const k=G&&G.unsubscribe&&(()=>{G.unsubscribe()});let Oe;try{if(B&&f&&p!==\"get\"&&p!==\"head\"&&(Oe=await S(ce,E))!==0){let L=new n(m,{method:\"POST\",body:E,duplex:\"half\"}),H;if(a.isFormData(E)&&(H=L.headers.get(\"content-type\"))&&ce.setContentType(H),L.body){const[le,Q]=Ue(Oe,ne(Le(B)));E=ke(L.body,De,le,Q)}}a.isString(X)||(X=X?\"include\":\"omit\");const F=i&&\"credentials\"in n.prototype,Te={...Se,signal:G,method:p.toUpperCase(),headers:ce.normalize().toJSON(),body:E,duplex:\"half\",credentials:F?X:void 0};z=i&&new n(m,Te);let U=await(i?Re(z,Se):Re(m,Te));const Ae=l&&(C===\"stream\"||C===\"response\");if(l&&(N||Ae&&k)){const L={};[\"status\",\"statusText\",\"headers\"].forEach(xe=>{L[xe]=U[xe]});const H=a.toFiniteNumber(U.headers.get(\"content-length\")),[le,Q]=N&&Ue(H,ne(Le(N),!0))||[];U=new r(ke(U.body,De,le,()=>{Q&&Q(),k&&k()}),L)}C=C||\"text\";let pt=await h[a.findKey(h,C)||\"text\"](U,u);return!Ae&&k&&k(),await new Promise((L,H)=>{ot(L,H,{data:pt,headers:A.from(U.headers),status:U.status,statusText:U.statusText,config:u,request:z})})}catch(F){throw k&&k(),F&&F.name===\"TypeError\"&&/Load failed|fetch/i.test(F.message)?Object.assign(new y(\"Network Error\",y.ERR_NETWORK,u,z),{cause:F.cause||F}):y.from(F,F&&F.code,u,z)}}},jn=new Map,ct=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:s}=t,i=[r,s,n];let o=i.length,c=o,d,f,l=jn;for(;c--;)d=i[c],f=l.get(d),f===void 0&&l.set(d,f=c?new Map:Dn(t)),l=f;return f};ct();const ge={http:Yt,xhr:Fn,fetch:{get:ct}};a.forEach(ge,(e,t)=>{if(e){try{Object.defineProperty(e,\"name\",{value:t})}catch{}Object.defineProperty(e,\"adapterName\",{value:t})}});const Ie=e=>`- ${e}`,qn=e=>a.isFunction(e)||e===null||e===!1;function Hn(e,t){e=a.isArray(e)?e:[e];const{length:n}=e;let r,s;const i={};for(let o=0;o<n;o++){r=e[o];let c;if(s=r,!qn(r)&&(s=ge[(c=String(r)).toLowerCase()],s===void 0))throw new y(`Unknown adapter '${c}'`);if(s&&(a.isFunction(s)||(s=s.get(t))))break;i[c||\"#\"+o]=s}if(!s){const o=Object.entries(i).map(([d,f])=>`adapter ${d} `+(f===!1?\"is not supported by the environment\":\"is not available in the build\"));let c=n?o.length>1?`since :\n`+o.map(Ie).join(`\n`):\" \"+Ie(o[0]):\"as no adapter specified\";throw new y(\"There is no suitable adapter to dispatch the request \"+c,\"ERR_NOT_SUPPORT\")}return s}const lt={getAdapter:Hn,adapters:ge};function de(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new $(null,e)}function Me(e){return de(e),e.headers=A.from(e.headers),e.data=fe.call(e,e.transformRequest),[\"post\",\"put\",\"patch\"].indexOf(e.method)!==-1&&e.headers.setContentType(\"application/x-www-form-urlencoded\",!1),lt.getAdapter(e.adapter||v.adapter,e)(e).then(function(r){return de(e),r.data=fe.call(e,e.transformResponse,r),r.headers=A.from(r.headers),r},function(r){return st(r)||(de(e),r&&r.response&&(r.response.data=fe.call(e,e.transformResponse,r.response),r.response.headers=A.from(r.response.headers))),Promise.reject(r)})}const ut=\"1.13.1\",ae={};[\"object\",\"boolean\",\"number\",\"function\",\"string\",\"symbol\"].forEach((e,t)=>{ae[e]=function(r){return typeof r===e||\"a\"+(t<1?\"n \":\" \")+e}});const $e={};ae.transitional=function(t,n,r){function s(i,o){return\"[Axios v\"+ut+\"] Transitional option '\"+i+\"'\"+o+(r?\". \"+r:\"\")}return(i,o,c)=>{if(t===!1)throw new y(s(o,\" has been removed\"+(n?\" in \"+n:\"\")),y.ERR_DEPRECATED);return n&&!$e[o]&&($e[o]=!0,console.warn(s(o,\" has been deprecated since v\"+n+\" and will be removed in the near future\"))),t?t(i,o,c):!0}};ae.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function In(e,t,n){if(typeof e!=\"object\")throw new y(\"options must be an object\",y.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const i=r[s],o=t[i];if(o){const c=e[i],d=c===void 0||o(c,i,e);if(d!==!0)throw new y(\"option \"+i+\" must be \"+d,y.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new y(\"Unknown option \"+i,y.ERR_BAD_OPTION)}}const te={assertOptions:In,validators:ae},_=te.validators;let j=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Fe,response:new Fe}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.stack.replace(/^.+\\n/,\"\"):\"\";try{r.stack?i&&!String(r.stack).endsWith(i.replace(/^.+\\n.+\\n/,\"\"))&&(r.stack+=`\n`+i):r.stack=i}catch{}}throw r}}_request(t,n){typeof t==\"string\"?(n=n||{},n.url=t):n=t||{},n=q(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&te.assertOptions(r,{silentJSONParsing:_.transitional(_.boolean),forcedJSONParsing:_.transitional(_.boolean),clarifyTimeoutError:_.transitional(_.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:te.assertOptions(s,{encode:_.function,serialize:_.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),te.assertOptions(n,{baseUrl:_.spelling(\"baseURL\"),withXsrfToken:_.spelling(\"withXSRFToken\")},!0),n.method=(n.method||this.defaults.method||\"get\").toLowerCase();let o=i&&a.merge(i.common,i[n.method]);i&&a.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],u=>{delete i[u]}),n.headers=A.concat(o,i);const c=[];let d=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen==\"function\"&&m.runWhen(n)===!1||(d=d&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const f=[];this.interceptors.response.forEach(function(m){f.push(m.fulfilled,m.rejected)});let l,h=0,b;if(!d){const u=[Me.bind(this),void 0];for(u.unshift(...c),u.push(...f),b=u.length,l=Promise.resolve(n);h<b;)l=l.then(u[h++],u[h++]);return l}b=c.length;let S=n;for(;h<b;){const u=c[h++],m=c[h++];try{S=u(S)}catch(p){m.call(this,p);break}}try{l=Me.call(this,S)}catch(u){return Promise.reject(u)}for(h=0,b=f.length;h<b;)l=l.then(f[h++],f[h++]);return l}getUri(t){t=q(this.defaults,t);const n=it(t.baseURL,t.url,t.allowAbsoluteUrls);return tt(n,t.params,t.paramsSerializer)}};a.forEach([\"delete\",\"get\",\"head\",\"options\"],function(t){j.prototype[t]=function(n,r){return this.request(q(r||{},{method:t,url:n,data:(r||{}).data}))}});a.forEach([\"post\",\"put\",\"patch\"],function(t){function n(r){return function(i,o,c){return this.request(q(c||{},{method:t,headers:r?{\"Content-Type\":\"multipart/form-data\"}:{},url:i,data:o}))}}j.prototype[t]=n(),j.prototype[t+\"Form\"]=n(!0)});let Mn=class ft{constructor(t){if(typeof t!=\"function\")throw new TypeError(\"executor must be a function.\");let n;this.promise=new Promise(function(i){n=i});const r=this;this.promise.then(s=>{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(c=>{r.subscribe(c),i=c}).then(s);return o.cancel=function(){r.unsubscribe(i)},o},t(function(i,o,c){r.reason||(r.reason=new $(i,o,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new ft(function(s){t=s}),cancel:t}}};function $n(e){return function(n){return e.apply(null,n)}}function zn(e){return a.isObject(e)&&e.isAxiosError===!0}const ye={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ye).forEach(([e,t])=>{ye[t]=e});function dt(e){const t=new j(e),n=ze(j.prototype.request,t);return a.extend(n,j.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return dt(q(e,s))},n}const w=dt(v);w.Axios=j;w.CanceledError=$;w.CancelToken=Mn;w.isCancel=st;w.VERSION=ut;w.toFormData=ie;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(t){return Promise.all(t)};w.spread=$n;w.isAxiosError=zn;w.mergeConfig=q;w.AxiosHeaders=A;w.formToJSON=e=>rt(a.isHTMLForm(e)?new FormData(e):e);w.getAdapter=lt.getAdapter;w.HttpStatusCode=ye;w.default=w;const{Axios:Wn,AxiosError:Kn,CanceledError:vn,isCancel:Xn,CancelToken:Gn,VERSION:Qn,all:Zn,Cancel:Yn,isAxiosError:er,spread:tr,toFormData:nr,AxiosHeaders:rr,HttpStatusCode:sr,formToJSON:or,getAdapter:ir,mergeConfig:ar}=w;export{w as a};\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/index-Bd2G45Id.js",
    "content": "import{i as PI,a as Z,s as ee,e as I,w as pe,j as Fl,k as ne,l as wa,F as He,d as fn,m as nt,b as Be,p as Mn,q as f,T as Di,v as gn,C as YS,h as gt,x as Wn,y as et,u as Ne,z as ze,A as ot,B as vt,D as Ac,E as qS,n as it,G as cn,H as xn,I as TI,J as Mo,K as zl,t as Ve,L as On,M as Yf,N as _m,O as Im,P as bt,Q as Wo,R as jt,S as Vn,U as eo,V as Iu,W as Kn,X as Pu,Y as _a,Z as ZS,_ as QS,$ as JS,a0 as e$,a1 as gl,a2 as _r,a3 as hl,a4 as Pm,a5 as Ao,a6 as OI,a7 as Tm,g as EI,o as MI,a8 as AI,a9 as DI,aa as Tu,ab as Hl,ac as t$,ad as n$,ae as RI,af as o$,ag as Om,ah as kI,ai as NI,aj as Em,ak as BI,al as uh,am as LI,an as FI,ao as zI,ap as HI,aq as jI,ar as WI,as as dh,at as fh,au as Ir,av as VI,aw as qf,ax as KI,ay as GI,az as XI,aA as UI,aB as l$,aC as YI,aD as qI,aE as ZI,aF as QI,aG as JI,aH as eP,aI as r$,aJ as tP,aK as nP,aL as a$,aM as oP,aN as lP,aO as rP,aP,aQ as iP,aR as sP,aS as cP,aT as dt,aU as Ke,aV as Ie,aW as zn,aX as Nd,aY as Bs,aZ as Ye,a_ as Ou,a$ as Bt,b0 as tt,b1 as Mm,b2 as Am,b3 as Go,b4 as i$,b5 as uP}from\"./@ant-design/icons-vue-ym-L-X2r.js\";import{u as dP}from\"./less-sScrWPmR.js\";import{i as Dm,a as s$,u as Bd,p as c$,b as u$,d as Rm,c as Ls,f as fP,o as pP,e as mP,g as vP,h as gP,j as hP}from\"./lodash-CQd0-CO8.js\";import{a as Zf}from\"./axios-R-lXtGyY.js\";import{u as km,a as si,b as bP}from\"./@vueuse/core-B6fUiQ3R.js\";import{u as d$}from\"./@vueuse/integrations-iJ2WoaAF.js\";(function(){const t=document.createElement(\"link\").relList;if(t&&t.supports&&t.supports(\"modulepreload\"))return;for(const l of document.querySelectorAll('link[rel=\"modulepreload\"]'))o(l);new MutationObserver(l=>{for(const r of l)if(r.type===\"childList\")for(const a of r.addedNodes)a.tagName===\"LINK\"&&a.rel===\"modulepreload\"&&o(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const r={};return l.integrity&&(r.integrity=l.integrity),l.referrerPolicy&&(r.referrerPolicy=l.referrerPolicy),l.crossOrigin===\"use-credentials\"?r.credentials=\"include\":l.crossOrigin===\"anonymous\"?r.credentials=\"omit\":r.credentials=\"same-origin\",r}function o(l){if(l.ep)return;l.ep=!0;const r=n(l);fetch(l.href,r)}})();/*!\n  * shared v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */function yP(e,t){typeof console<\"u\"&&(console.warn(\"[intlify] \"+e),t&&console.warn(t.stack))}const Dc=typeof window<\"u\",Wl=(e,t=!1)=>t?Symbol.for(e):Symbol(e),SP=(e,t,n)=>$P({l:e,k:t,s:n}),$P=e=>JSON.stringify(e).replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\").replace(/\\u0027/g,\"\\\\u0027\"),ln=e=>typeof e==\"number\"&&isFinite(e),CP=e=>Nm(e)===\"[object Date]\",pa=e=>Nm(e)===\"[object RegExp]\",Eu=e=>St(e)&&Object.keys(e).length===0,sn=Object.assign,xP=Object.create,At=(e=null)=>xP(e);let ph;const cr=()=>ph||(ph=typeof globalThis<\"u\"?globalThis:typeof self<\"u\"?self:typeof window<\"u\"?window:typeof global<\"u\"?global:At());function mh(e){return e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\").replace(/\\//g,\"&#x2F;\").replace(/=/g,\"&#x3D;\")}function vh(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")}function wP(e){return e=e.replace(/(\\w+)\\s*=\\s*\"([^\"]*)\"/g,(o,l,r)=>`${l}=\"${vh(r)}\"`),e=e.replace(/(\\w+)\\s*=\\s*'([^']*)'/g,(o,l,r)=>`${l}='${vh(r)}'`),/\\s*on\\w+\\s*=\\s*[\"']?[^\"'>]+[\"']?/gi.test(e)&&(e=e.replace(/(\\s+)(on)(\\w+\\s*=)/gi,\"$1&#111;n$3\")),[/(\\s+(?:href|src|action|formaction)\\s*=\\s*[\"']?)\\s*javascript:/gi,/(style\\s*=\\s*[\"'][^\"']*url\\s*\\(\\s*)javascript:/gi].forEach(o=>{e=e.replace(o,\"$1javascript&#58;\")}),e}const _P=Object.prototype.hasOwnProperty;function To(e,t){return _P.call(e,t)}const Kt=Array.isArray,Ft=e=>typeof e==\"function\",Ge=e=>typeof e==\"string\",Pt=e=>typeof e==\"boolean\",Tt=e=>e!==null&&typeof e==\"object\",IP=e=>Tt(e)&&Ft(e.then)&&Ft(e.catch),f$=Object.prototype.toString,Nm=e=>f$.call(e),St=e=>Nm(e)===\"[object Object]\",PP=e=>e==null?\"\":Kt(e)||St(e)&&e.toString===f$?JSON.stringify(e,null,2):String(e);function Bm(e,t=\"\"){return e.reduce((n,o,l)=>l===0?n+o:n+t+o,\"\")}const ls=e=>!Tt(e)||Kt(e);function Fs(e,t){if(ls(e)||ls(t))throw new Error(\"Invalid value\");const n=[{src:e,des:t}];for(;n.length;){const{src:o,des:l}=n.pop();Object.keys(o).forEach(r=>{r!==\"__proto__\"&&(Tt(o[r])&&!Tt(l[r])&&(l[r]=Array.isArray(o[r])?[]:At()),ls(l[r])||ls(o[r])?l[r]=o[r]:n.push({src:o[r],des:l[r]}))})}}/*!\n  * message-compiler v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */function TP(e,t,n){return{line:e,column:t,offset:n}}function Qf(e,t,n){return{start:e,end:t}}const Et={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14},OP=17;function Mu(e,t,n={}){const{domain:o,messages:l,args:r}=n,a=e,i=new SyntaxError(String(a));return i.code=e,t&&(i.location=t),i.domain=o,i}function EP(e){throw e}const No=\" \",MP=\"\\r\",yn=`\n`,AP=\"\\u2028\",DP=\"\\u2029\";function RP(e){const t=e;let n=0,o=1,l=1,r=0;const a=x=>t[x]===MP&&t[x+1]===yn,i=x=>t[x]===yn,s=x=>t[x]===DP,c=x=>t[x]===AP,u=x=>a(x)||i(x)||s(x)||c(x),d=()=>n,p=()=>o,m=()=>l,g=()=>r,v=x=>a(x)||s(x)||c(x)?yn:t[x],y=()=>v(n),b=()=>v(n+r);function S(){return r=0,u(n)&&(o++,l=0),a(n)&&n++,n++,l++,t[n]}function $(){return a(n+r)&&r++,r++,t[n+r]}function w(){n=0,o=1,l=1,r=0}function C(x=0){r=x}function _(){const x=n+r;for(;x!==n;)S();r=0}return{index:d,line:p,column:m,peekOffset:g,charAt:v,currentChar:y,currentPeek:b,next:S,peek:$,reset:w,resetPeek:C,skipToPeek:_}}const Zo=void 0,kP=\".\",gh=\"'\",NP=\"tokenizer\";function BP(e,t={}){const n=t.location!==!1,o=RP(e),l=()=>o.index(),r=()=>TP(o.line(),o.column(),o.index()),a=r(),i=l(),s={currentType:13,offset:i,startLoc:a,endLoc:a,lastType:13,lastOffset:i,lastStartLoc:a,lastEndLoc:a,braceNest:0,inLinked:!1,text:\"\"},c=()=>s,{onError:u}=t;function d(X,U,ie,...ve){const me=c();if(U.column+=ie,U.offset+=ie,u){const he=n?Qf(me.startLoc,U):null,se=Mu(X,he,{domain:NP,args:ve});u(se)}}function p(X,U,ie){X.endLoc=r(),X.currentType=U;const ve={type:U};return n&&(ve.loc=Qf(X.startLoc,X.endLoc)),ie!=null&&(ve.value=ie),ve}const m=X=>p(X,13);function g(X,U){return X.currentChar()===U?(X.next(),U):(d(Et.EXPECTED_TOKEN,r(),0,U),\"\")}function v(X){let U=\"\";for(;X.currentPeek()===No||X.currentPeek()===yn;)U+=X.currentPeek(),X.peek();return U}function y(X){const U=v(X);return X.skipToPeek(),U}function b(X){if(X===Zo)return!1;const U=X.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U===95}function S(X){if(X===Zo)return!1;const U=X.charCodeAt(0);return U>=48&&U<=57}function $(X,U){const{currentType:ie}=U;if(ie!==2)return!1;v(X);const ve=b(X.currentPeek());return X.resetPeek(),ve}function w(X,U){const{currentType:ie}=U;if(ie!==2)return!1;v(X);const ve=X.currentPeek()===\"-\"?X.peek():X.currentPeek(),me=S(ve);return X.resetPeek(),me}function C(X,U){const{currentType:ie}=U;if(ie!==2)return!1;v(X);const ve=X.currentPeek()===gh;return X.resetPeek(),ve}function _(X,U){const{currentType:ie}=U;if(ie!==7)return!1;v(X);const ve=X.currentPeek()===\".\";return X.resetPeek(),ve}function x(X,U){const{currentType:ie}=U;if(ie!==8)return!1;v(X);const ve=b(X.currentPeek());return X.resetPeek(),ve}function P(X,U){const{currentType:ie}=U;if(!(ie===7||ie===11))return!1;v(X);const ve=X.currentPeek()===\":\";return X.resetPeek(),ve}function E(X,U){const{currentType:ie}=U;if(ie!==9)return!1;const ve=()=>{const he=X.currentPeek();return he===\"{\"?b(X.peek()):he===\"@\"||he===\"|\"||he===\":\"||he===\".\"||he===No||!he?!1:he===yn?(X.peek(),ve()):O(X,!1)},me=ve();return X.resetPeek(),me}function M(X){v(X);const U=X.currentPeek()===\"|\";return X.resetPeek(),U}function O(X,U=!0){const ie=(me=!1,he=\"\")=>{const se=X.currentPeek();return se===\"{\"||se===\"@\"||!se?me:se===\"|\"?!(he===No||he===yn):se===No?(X.peek(),ie(!0,No)):se===yn?(X.peek(),ie(!0,yn)):!0},ve=ie();return U&&X.resetPeek(),ve}function R(X,U){const ie=X.currentChar();return ie===Zo?Zo:U(ie)?(X.next(),ie):null}function D(X){const U=X.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U>=48&&U<=57||U===95||U===36}function z(X){return R(X,D)}function T(X){const U=X.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U>=48&&U<=57||U===95||U===36||U===45}function k(X){return R(X,T)}function B(X){const U=X.charCodeAt(0);return U>=48&&U<=57}function L(X){return R(X,B)}function N(X){const U=X.charCodeAt(0);return U>=48&&U<=57||U>=65&&U<=70||U>=97&&U<=102}function F(X){return R(X,N)}function j(X){let U=\"\",ie=\"\";for(;U=L(X);)ie+=U;return ie}function H(X){let U=\"\";for(;;){const ie=X.currentChar();if(ie===\"{\"||ie===\"}\"||ie===\"@\"||ie===\"|\"||!ie)break;if(ie===No||ie===yn)if(O(X))U+=ie,X.next();else{if(M(X))break;U+=ie,X.next()}else U+=ie,X.next()}return U}function K(X){y(X);let U=\"\",ie=\"\";for(;U=k(X);)ie+=U;const ve=X.currentChar();if(ve&&ve!==\"}\"&&ve!==Zo&&ve!==No&&ve!==yn&&ve!==\"　\"){const me=Y(X);return d(Et.INVALID_TOKEN_IN_PLACEHOLDER,r(),0,ie+me),ie+me}return X.currentChar()===Zo&&d(Et.UNTERMINATED_CLOSING_BRACE,r(),0),ie}function G(X){y(X);let U=\"\";return X.currentChar()===\"-\"?(X.next(),U+=`-${j(X)}`):U+=j(X),X.currentChar()===Zo&&d(Et.UNTERMINATED_CLOSING_BRACE,r(),0),U}function V(X){return X!==gh&&X!==yn}function q(X){y(X),g(X,\"'\");let U=\"\",ie=\"\";for(;U=R(X,V);)U===\"\\\\\"?ie+=Q(X):ie+=U;const ve=X.currentChar();return ve===yn||ve===Zo?(d(Et.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,r(),0),ve===yn&&(X.next(),g(X,\"'\")),ie):(g(X,\"'\"),ie)}function Q(X){const U=X.currentChar();switch(U){case\"\\\\\":case\"'\":return X.next(),`\\\\${U}`;case\"u\":return oe(X,U,4);case\"U\":return oe(X,U,6);default:return d(Et.UNKNOWN_ESCAPE_SEQUENCE,r(),0,U),\"\"}}function oe(X,U,ie){g(X,U);let ve=\"\";for(let me=0;me<ie;me++){const he=F(X);if(!he){d(Et.INVALID_UNICODE_ESCAPE_SEQUENCE,r(),0,`\\\\${U}${ve}${X.currentChar()}`);break}ve+=he}return`\\\\${U}${ve}`}function le(X){return X!==\"{\"&&X!==\"}\"&&X!==No&&X!==yn}function Y(X){y(X);let U=\"\",ie=\"\";for(;U=R(X,le);)ie+=U;return ie}function J(X){let U=\"\",ie=\"\";for(;U=z(X);)ie+=U;return ie}function ce(X){const U=ie=>{const ve=X.currentChar();return ve===\"{\"||ve===\"@\"||ve===\"|\"||ve===\"(\"||ve===\")\"||!ve||ve===No?ie:(ie+=ve,X.next(),U(ie))};return U(\"\")}function ue(X){y(X);const U=g(X,\"|\");return y(X),U}function be(X,U){let ie=null;switch(X.currentChar()){case\"{\":return U.braceNest>=1&&d(Et.NOT_ALLOW_NEST_PLACEHOLDER,r(),0),X.next(),ie=p(U,2,\"{\"),y(X),U.braceNest++,ie;case\"}\":return U.braceNest>0&&U.currentType===2&&d(Et.EMPTY_PLACEHOLDER,r(),0),X.next(),ie=p(U,3,\"}\"),U.braceNest--,U.braceNest>0&&y(X),U.inLinked&&U.braceNest===0&&(U.inLinked=!1),ie;case\"@\":return U.braceNest>0&&d(Et.UNTERMINATED_CLOSING_BRACE,r(),0),ie=Ce(X,U)||m(U),U.braceNest=0,ie;default:{let me=!0,he=!0,se=!0;if(M(X))return U.braceNest>0&&d(Et.UNTERMINATED_CLOSING_BRACE,r(),0),ie=p(U,1,ue(X)),U.braceNest=0,U.inLinked=!1,ie;if(U.braceNest>0&&(U.currentType===4||U.currentType===5||U.currentType===6))return d(Et.UNTERMINATED_CLOSING_BRACE,r(),0),U.braceNest=0,ge(X,U);if(me=$(X,U))return ie=p(U,4,K(X)),y(X),ie;if(he=w(X,U))return ie=p(U,5,G(X)),y(X),ie;if(se=C(X,U))return ie=p(U,6,q(X)),y(X),ie;if(!me&&!he&&!se)return ie=p(U,12,Y(X)),d(Et.INVALID_TOKEN_IN_PLACEHOLDER,r(),0,ie.value),y(X),ie;break}}return ie}function Ce(X,U){const{currentType:ie}=U;let ve=null;const me=X.currentChar();switch((ie===7||ie===8||ie===11||ie===9)&&(me===yn||me===No)&&d(Et.INVALID_LINKED_FORMAT,r(),0),me){case\"@\":return X.next(),ve=p(U,7,\"@\"),U.inLinked=!0,ve;case\".\":return y(X),X.next(),p(U,8,\".\");case\":\":return y(X),X.next(),p(U,9,\":\");default:return M(X)?(ve=p(U,1,ue(X)),U.braceNest=0,U.inLinked=!1,ve):_(X,U)||P(X,U)?(y(X),Ce(X,U)):x(X,U)?(y(X),p(U,11,J(X))):E(X,U)?(y(X),me===\"{\"?be(X,U)||ve:p(U,10,ce(X))):(ie===7&&d(Et.INVALID_LINKED_FORMAT,r(),0),U.braceNest=0,U.inLinked=!1,ge(X,U))}}function ge(X,U){let ie={type:13};if(U.braceNest>0)return be(X,U)||m(U);if(U.inLinked)return Ce(X,U)||m(U);switch(X.currentChar()){case\"{\":return be(X,U)||m(U);case\"}\":return d(Et.UNBALANCED_CLOSING_BRACE,r(),0),X.next(),p(U,3,\"}\");case\"@\":return Ce(X,U)||m(U);default:{if(M(X))return ie=p(U,1,ue(X)),U.braceNest=0,U.inLinked=!1,ie;if(O(X))return p(U,0,H(X));break}}return ie}function Se(){const{currentType:X,offset:U,startLoc:ie,endLoc:ve}=s;return s.lastType=X,s.lastOffset=U,s.lastStartLoc=ie,s.lastEndLoc=ve,s.offset=l(),s.startLoc=r(),o.currentChar()===Zo?p(s,13):ge(o,s)}return{nextToken:Se,currentOffset:l,currentPosition:r,context:c}}const LP=\"parser\",FP=/(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;function zP(e,t,n){switch(e){case\"\\\\\\\\\":return\"\\\\\";case\"\\\\'\":return\"'\";default:{const o=parseInt(t||n,16);return o<=55295||o>=57344?String.fromCodePoint(o):\"�\"}}}function HP(e={}){const t=e.location!==!1,{onError:n}=e;function o(b,S,$,w,...C){const _=b.currentPosition();if(_.offset+=w,_.column+=w,n){const x=t?Qf($,_):null,P=Mu(S,x,{domain:LP,args:C});n(P)}}function l(b,S,$){const w={type:b};return t&&(w.start=S,w.end=S,w.loc={start:$,end:$}),w}function r(b,S,$,w){t&&(b.end=S,b.loc&&(b.loc.end=$))}function a(b,S){const $=b.context(),w=l(3,$.offset,$.startLoc);return w.value=S,r(w,b.currentOffset(),b.currentPosition()),w}function i(b,S){const $=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=l(5,w,C);return _.index=parseInt(S,10),b.nextToken(),r(_,b.currentOffset(),b.currentPosition()),_}function s(b,S){const $=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=l(4,w,C);return _.key=S,b.nextToken(),r(_,b.currentOffset(),b.currentPosition()),_}function c(b,S){const $=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=l(9,w,C);return _.value=S.replace(FP,zP),b.nextToken(),r(_,b.currentOffset(),b.currentPosition()),_}function u(b){const S=b.nextToken(),$=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=l(8,w,C);return S.type!==11?(o(b,Et.UNEXPECTED_EMPTY_LINKED_MODIFIER,$.lastStartLoc,0),_.value=\"\",r(_,w,C),{nextConsumeToken:S,node:_}):(S.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,$.lastStartLoc,0,Bo(S)),_.value=S.value||\"\",r(_,b.currentOffset(),b.currentPosition()),{node:_})}function d(b,S){const $=b.context(),w=l(7,$.offset,$.startLoc);return w.value=S,r(w,b.currentOffset(),b.currentPosition()),w}function p(b){const S=b.context(),$=l(6,S.offset,S.startLoc);let w=b.nextToken();if(w.type===8){const C=u(b);$.modifier=C.node,w=C.nextConsumeToken||b.nextToken()}switch(w.type!==9&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(w)),w=b.nextToken(),w.type===2&&(w=b.nextToken()),w.type){case 10:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(w)),$.key=d(b,w.value||\"\");break;case 4:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(w)),$.key=s(b,w.value||\"\");break;case 5:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(w)),$.key=i(b,w.value||\"\");break;case 6:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(w)),$.key=c(b,w.value||\"\");break;default:{o(b,Et.UNEXPECTED_EMPTY_LINKED_KEY,S.lastStartLoc,0);const C=b.context(),_=l(7,C.offset,C.startLoc);return _.value=\"\",r(_,C.offset,C.startLoc),$.key=_,r($,C.offset,C.startLoc),{nextConsumeToken:w,node:$}}}return r($,b.currentOffset(),b.currentPosition()),{node:$}}function m(b){const S=b.context(),$=S.currentType===1?b.currentOffset():S.offset,w=S.currentType===1?S.endLoc:S.startLoc,C=l(2,$,w);C.items=[];let _=null;do{const E=_||b.nextToken();switch(_=null,E.type){case 0:E.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(E)),C.items.push(a(b,E.value||\"\"));break;case 5:E.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(E)),C.items.push(i(b,E.value||\"\"));break;case 4:E.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(E)),C.items.push(s(b,E.value||\"\"));break;case 6:E.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Bo(E)),C.items.push(c(b,E.value||\"\"));break;case 7:{const M=p(b);C.items.push(M.node),_=M.nextConsumeToken||null;break}}}while(S.currentType!==13&&S.currentType!==1);const x=S.currentType===1?S.lastOffset:b.currentOffset(),P=S.currentType===1?S.lastEndLoc:b.currentPosition();return r(C,x,P),C}function g(b,S,$,w){const C=b.context();let _=w.items.length===0;const x=l(1,S,$);x.cases=[],x.cases.push(w);do{const P=m(b);_||(_=P.items.length===0),x.cases.push(P)}while(C.currentType!==13);return _&&o(b,Et.MUST_HAVE_MESSAGES_IN_PLURAL,$,0),r(x,b.currentOffset(),b.currentPosition()),x}function v(b){const S=b.context(),{offset:$,startLoc:w}=S,C=m(b);return S.currentType===13?C:g(b,$,w,C)}function y(b){const S=BP(b,sn({},e)),$=S.context(),w=l(0,$.offset,$.startLoc);return t&&w.loc&&(w.loc.source=b),w.body=v(S),e.onCacheKey&&(w.cacheKey=e.onCacheKey(b)),$.currentType!==13&&o(S,Et.UNEXPECTED_LEXICAL_ANALYSIS,$.lastStartLoc,0,b[$.offset]||\"\"),r(w,S.currentOffset(),S.currentPosition()),w}return{parse:y}}function Bo(e){if(e.type===13)return\"EOF\";const t=(e.value||\"\").replace(/\\r?\\n/gu,\"\\\\n\");return t.length>10?t.slice(0,9)+\"…\":t}function jP(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:r=>(n.helpers.add(r),r)}}function hh(e,t){for(let n=0;n<e.length;n++)Lm(e[n],t)}function Lm(e,t){switch(e.type){case 1:hh(e.cases,t),t.helper(\"plural\");break;case 2:hh(e.items,t);break;case 6:{Lm(e.key,t),t.helper(\"linked\"),t.helper(\"type\");break}case 5:t.helper(\"interpolate\"),t.helper(\"list\");break;case 4:t.helper(\"interpolate\"),t.helper(\"named\");break}}function WP(e,t={}){const n=jP(e);n.helper(\"normalize\"),e.body&&Lm(e.body,n);const o=n.context();e.helpers=Array.from(o.helpers)}function VP(e){const t=e.body;return t.type===2?bh(t):t.cases.forEach(n=>bh(n)),e}function bh(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n<e.items.length;n++){const o=e.items[n];if(!(o.type===3||o.type===9)||o.value==null)break;t.push(o.value)}if(t.length===e.items.length){e.static=Bm(t);for(let n=0;n<e.items.length;n++){const o=e.items[n];(o.type===3||o.type===9)&&delete o.value}}}}function Kr(e){switch(e.t=e.type,e.type){case 0:{const t=e;Kr(t.body),t.b=t.body,delete t.body;break}case 1:{const t=e,n=t.cases;for(let o=0;o<n.length;o++)Kr(n[o]);t.c=n,delete t.cases;break}case 2:{const t=e,n=t.items;for(let o=0;o<n.length;o++)Kr(n[o]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{const t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{const t=e;Kr(t.key),t.k=t.key,delete t.key,t.modifier&&(Kr(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{const t=e;t.i=t.index,delete t.index;break}case 4:{const t=e;t.k=t.key,delete t.key;break}}delete e.type}function KP(e,t){const{filename:n,breakLineCode:o,needIndent:l}=t,r=t.location!==!1,a={filename:n,code:\"\",column:1,line:1,offset:0,map:void 0,breakLineCode:o,needIndent:l,indentLevel:0};r&&e.loc&&(a.source=e.loc.source);const i=()=>a;function s(v,y){a.code+=v}function c(v,y=!0){const b=y?o:\"\";s(l?b+\"  \".repeat(v):b)}function u(v=!0){const y=++a.indentLevel;v&&c(y)}function d(v=!0){const y=--a.indentLevel;v&&c(y)}function p(){c(a.indentLevel)}return{context:i,push:s,indent:u,deindent:d,newline:p,helper:v=>`_${v}`,needIndent:()=>a.needIndent}}function GP(e,t){const{helper:n}=e;e.push(`${n(\"linked\")}(`),ma(e,t.key),t.modifier?(e.push(\", \"),ma(e,t.modifier),e.push(\", _type\")):e.push(\", undefined, _type\"),e.push(\")\")}function XP(e,t){const{helper:n,needIndent:o}=e;e.push(`${n(\"normalize\")}([`),e.indent(o());const l=t.items.length;for(let r=0;r<l&&(ma(e,t.items[r]),r!==l-1);r++)e.push(\", \");e.deindent(o()),e.push(\"])\")}function UP(e,t){const{helper:n,needIndent:o}=e;if(t.cases.length>1){e.push(`${n(\"plural\")}([`),e.indent(o());const l=t.cases.length;for(let r=0;r<l&&(ma(e,t.cases[r]),r!==l-1);r++)e.push(\", \");e.deindent(o()),e.push(\"])\")}}function YP(e,t){t.body?ma(e,t.body):e.push(\"null\")}function ma(e,t){const{helper:n}=e;switch(t.type){case 0:YP(e,t);break;case 1:UP(e,t);break;case 2:XP(e,t);break;case 6:GP(e,t);break;case 8:e.push(JSON.stringify(t.value),t);break;case 7:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n(\"interpolate\")}(${n(\"list\")}(${t.index}))`,t);break;case 4:e.push(`${n(\"interpolate\")}(${n(\"named\")}(${JSON.stringify(t.key)}))`,t);break;case 9:e.push(JSON.stringify(t.value),t);break;case 3:e.push(JSON.stringify(t.value),t);break}}const qP=(e,t={})=>{const n=Ge(t.mode)?t.mode:\"normal\",o=Ge(t.filename)?t.filename:\"message.intl\";t.sourceMap;const l=t.breakLineCode!=null?t.breakLineCode:n===\"arrow\"?\";\":`\n`,r=t.needIndent?t.needIndent:n!==\"arrow\",a=e.helpers||[],i=KP(e,{filename:o,breakLineCode:l,needIndent:r});i.push(n===\"normal\"?\"function __msg__ (ctx) {\":\"(ctx) => {\"),i.indent(r),a.length>0&&(i.push(`const { ${Bm(a.map(u=>`${u}: _${u}`),\", \")} } = ctx`),i.newline()),i.push(\"return \"),ma(i,e),i.deindent(r),i.push(\"}\"),delete e.helpers;const{code:s,map:c}=i.context();return{ast:e,code:s,map:c?c.toJSON():void 0}};function ZP(e,t={}){const n=sn({},t),o=!!n.jit,l=!!n.minify,r=n.optimize==null?!0:n.optimize,i=HP(n).parse(e);return o?(r&&VP(i),l&&Kr(i),{ast:i,code:\"\"}):(WP(i,n),qP(i,n))}/*!\n  * core-base v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */function QP(){typeof __INTLIFY_PROD_DEVTOOLS__!=\"boolean\"&&(cr().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=\"boolean\"&&(cr().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Vo(e){return Tt(e)&&Fm(e)===0&&(To(e,\"b\")||To(e,\"body\"))}const p$=[\"b\",\"body\"];function JP(e){return Vl(e,p$)}const m$=[\"c\",\"cases\"];function eT(e){return Vl(e,m$,[])}const v$=[\"s\",\"static\"];function tT(e){return Vl(e,v$)}const g$=[\"i\",\"items\"];function nT(e){return Vl(e,g$,[])}const h$=[\"t\",\"type\"];function Fm(e){return Vl(e,h$)}const b$=[\"v\",\"value\"];function rs(e,t){const n=Vl(e,b$);if(n!=null)return n;throw ci(t)}const y$=[\"m\",\"modifier\"];function oT(e){return Vl(e,y$)}const S$=[\"k\",\"key\"];function lT(e){const t=Vl(e,S$);if(t)return t;throw ci(6)}function Vl(e,t,n){for(let o=0;o<t.length;o++){const l=t[o];if(To(e,l)&&e[l]!=null)return e[l]}return n}const $$=[...p$,...m$,...v$,...g$,...S$,...y$,...b$,...h$];function ci(e){return new Error(`unhandled node type: ${e}`)}function Ld(e){return n=>rT(n,e)}function rT(e,t){const n=JP(t);if(n==null)throw ci(0);if(Fm(n)===1){const r=eT(n);return e.plural(r.reduce((a,i)=>[...a,yh(e,i)],[]))}else return yh(e,n)}function yh(e,t){const n=tT(t);if(n!=null)return e.type===\"text\"?n:e.normalize([n]);{const o=nT(t).reduce((l,r)=>[...l,Jf(e,r)],[]);return e.normalize(o)}}function Jf(e,t){const n=Fm(t);switch(n){case 3:return rs(t,n);case 9:return rs(t,n);case 4:{const o=t;if(To(o,\"k\")&&o.k)return e.interpolate(e.named(o.k));if(To(o,\"key\")&&o.key)return e.interpolate(e.named(o.key));throw ci(n)}case 5:{const o=t;if(To(o,\"i\")&&ln(o.i))return e.interpolate(e.list(o.i));if(To(o,\"index\")&&ln(o.index))return e.interpolate(e.list(o.index));throw ci(n)}case 6:{const o=t,l=oT(o),r=lT(o);return e.linked(Jf(e,r),l?Jf(e,l):void 0,e.type)}case 7:return rs(t,n);case 8:return rs(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const aT=e=>e;let as=At();function iT(e,t={}){let n=!1;const o=t.onError||EP;return t.onError=l=>{n=!0,o(l)},{...ZP(e,t),detectError:n}}function sT(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&Ge(e)){Pt(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||aT)(e),l=as[o];if(l)return l;const{ast:r,detectError:a}=iT(e,{...t,location:!1,jit:!0}),i=Ld(r);return a?i:as[o]=i}else{const n=e.cacheKey;if(n){const o=as[n];return o||(as[n]=Ld(e))}else return Ld(e)}}let ui=null;function cT(e){ui=e}function uT(e,t,n){ui&&ui.emit(\"i18n:init\",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const dT=fT(\"function:translate\");function fT(e){return t=>ui&&ui.emit(e,t)}const rl={INVALID_ARGUMENT:OP,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},pT=24;function al(e){return Mu(e,null,void 0)}function zm(e,t){return t.locale!=null?Sh(t.locale):Sh(e.locale)}let Fd;function Sh(e){if(Ge(e))return e;if(Ft(e)){if(e.resolvedOnce&&Fd!=null)return Fd;if(e.constructor.name===\"Function\"){const t=e();if(IP(t))throw al(rl.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Fd=t}else throw al(rl.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw al(rl.NOT_SUPPORT_LOCALE_TYPE)}function mT(e,t,n){return[...new Set([n,...Kt(t)?t:Tt(t)?Object.keys(t):Ge(t)?[t]:[n]])]}function C$(e,t,n){const o=Ge(n)?n:di,l=e;l.__localeChainCache||(l.__localeChainCache=new Map);let r=l.__localeChainCache.get(o);if(!r){r=[];let a=[n];for(;Kt(a);)a=$h(r,a,t);const i=Kt(t)||!St(t)?t:t.default?t.default:null;a=Ge(i)?[i]:i,Kt(a)&&$h(r,a,!1),l.__localeChainCache.set(o,r)}return r}function $h(e,t,n){let o=!0;for(let l=0;l<t.length&&Pt(o);l++){const r=t[l];Ge(r)&&(o=vT(e,t[l],n))}return o}function vT(e,t,n){let o;const l=t.split(\"-\");do{const r=l.join(\"-\");o=gT(e,r,n),l.splice(-1,1)}while(l.length&&o===!0);return o}function gT(e,t,n){let o=!1;if(!e.includes(t)&&(o=!0,t)){o=t[t.length-1]!==\"!\";const l=t.replace(/!/g,\"\");e.push(l),(Kt(n)||St(n))&&n[l]&&(o=n[l])}return o}const Kl=[];Kl[0]={w:[0],i:[3,0],\"[\":[4],o:[7]};Kl[1]={w:[1],\".\":[2],\"[\":[4],o:[7]};Kl[2]={w:[2],i:[3,0],0:[3,0]};Kl[3]={i:[3,0],0:[3,0],w:[1,1],\".\":[2,1],\"[\":[4,1],o:[7,1]};Kl[4]={\"'\":[5,0],'\"':[6,0],\"[\":[4,2],\"]\":[1,3],o:8,l:[4,0]};Kl[5]={\"'\":[4,0],o:8,l:[5,0]};Kl[6]={'\"':[4,0],o:8,l:[6,0]};const hT=/^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;function bT(e){return hT.test(e)}function yT(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function ST(e){if(e==null)return\"o\";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return\"i\";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return\"w\"}return\"i\"}function $T(e){const t=e.trim();return e.charAt(0)===\"0\"&&isNaN(parseInt(e))?!1:bT(t)?yT(t):\"*\"+t}function CT(e){const t=[];let n=-1,o=0,l=0,r,a,i,s,c,u,d;const p=[];p[0]=()=>{a===void 0?a=i:a+=i},p[1]=()=>{a!==void 0&&(t.push(a),a=void 0)},p[2]=()=>{p[0](),l++},p[3]=()=>{if(l>0)l--,o=4,p[0]();else{if(l=0,a===void 0||(a=$T(a),a===!1))return!1;p[1]()}};function m(){const g=e[n+1];if(o===5&&g===\"'\"||o===6&&g==='\"')return n++,i=\"\\\\\"+g,p[0](),!0}for(;o!==null;)if(n++,r=e[n],!(r===\"\\\\\"&&m())){if(s=ST(r),d=Kl[o],c=d[s]||d.l||8,c===8||(o=c[0],c[1]!==void 0&&(u=p[c[1]],u&&(i=r,u()===!1))))return;if(o===7)return t}}const Ch=new Map;function xT(e,t){return Tt(e)?e[t]:null}function wT(e,t){if(!Tt(e))return null;let n=Ch.get(t);if(n||(n=CT(t),n&&Ch.set(t,n)),!n)return null;const o=n.length;let l=e,r=0;for(;r<o;){const a=n[r];if($$.includes(a)&&Vo(l))return null;const i=l[a];if(i===void 0||Ft(l))return null;l=i,r++}return l}const _T=\"11.1.12\",Au=-1,di=\"en-US\",xh=\"\",wh=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function IT(){return{upper:(e,t)=>t===\"text\"&&Ge(e)?e.toUpperCase():t===\"vnode\"&&Tt(e)&&\"__v_isVNode\"in e?e.children.toUpperCase():e,lower:(e,t)=>t===\"text\"&&Ge(e)?e.toLowerCase():t===\"vnode\"&&Tt(e)&&\"__v_isVNode\"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===\"text\"&&Ge(e)?wh(e):t===\"vnode\"&&Tt(e)&&\"__v_isVNode\"in e?wh(e.children):e}}let x$;function PT(e){x$=e}let w$;function TT(e){w$=e}let _$;function OT(e){_$=e}let I$=null;const ET=e=>{I$=e},MT=()=>I$;let P$=null;const _h=e=>{P$=e},AT=()=>P$;let Ih=0;function DT(e={}){const t=Ft(e.onWarn)?e.onWarn:yP,n=Ge(e.version)?e.version:_T,o=Ge(e.locale)||Ft(e.locale)?e.locale:di,l=Ft(o)?di:o,r=Kt(e.fallbackLocale)||St(e.fallbackLocale)||Ge(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:l,a=St(e.messages)?e.messages:zd(l),i=St(e.datetimeFormats)?e.datetimeFormats:zd(l),s=St(e.numberFormats)?e.numberFormats:zd(l),c=sn(At(),e.modifiers,IT()),u=e.pluralRules||At(),d=Ft(e.missing)?e.missing:null,p=Pt(e.missingWarn)||pa(e.missingWarn)?e.missingWarn:!0,m=Pt(e.fallbackWarn)||pa(e.fallbackWarn)?e.fallbackWarn:!0,g=!!e.fallbackFormat,v=!!e.unresolving,y=Ft(e.postTranslation)?e.postTranslation:null,b=St(e.processor)?e.processor:null,S=Pt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,$=!!e.escapeParameter,w=Ft(e.messageCompiler)?e.messageCompiler:x$,C=Ft(e.messageResolver)?e.messageResolver:w$||xT,_=Ft(e.localeFallbacker)?e.localeFallbacker:_$||mT,x=Tt(e.fallbackContext)?e.fallbackContext:void 0,P=e,E=Tt(P.__datetimeFormatters)?P.__datetimeFormatters:new Map,M=Tt(P.__numberFormatters)?P.__numberFormatters:new Map,O=Tt(P.__meta)?P.__meta:{};Ih++;const R={version:n,cid:Ih,locale:o,fallbackLocale:r,messages:a,modifiers:c,pluralRules:u,missing:d,missingWarn:p,fallbackWarn:m,fallbackFormat:g,unresolving:v,postTranslation:y,processor:b,warnHtmlMessage:S,escapeParameter:$,messageCompiler:w,messageResolver:C,localeFallbacker:_,fallbackContext:x,onWarn:t,__meta:O};return R.datetimeFormats=i,R.numberFormats=s,R.__datetimeFormatters=E,R.__numberFormatters=M,__INTLIFY_PROD_DEVTOOLS__&&uT(R,n,O),R}const zd=e=>({[e]:At()});function Hm(e,t,n,o,l){const{missing:r,onWarn:a}=e;if(r!==null){const i=r(e,n,t,l);return Ge(i)?i:t}else return t}function za(e,t,n){const o=e;o.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function RT(e,t){return e===t?!1:e.split(\"-\")[0]===t.split(\"-\")[0]}function kT(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let o=n+1;o<t.length;o++)if(RT(e,t[o]))return!0;return!1}function Ph(e,...t){const{datetimeFormats:n,unresolving:o,fallbackLocale:l,onWarn:r,localeFallbacker:a}=e,{__datetimeFormatters:i}=e,[s,c,u,d]=ep(...t),p=Pt(u.missingWarn)?u.missingWarn:e.missingWarn;Pt(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const m=!!u.part,g=zm(e,u),v=a(e,l,g);if(!Ge(s)||s===\"\")return new Intl.DateTimeFormat(g,d).format(c);let y={},b,S=null;const $=\"datetime format\";for(let _=0;_<v.length&&(b=v[_],y=n[b]||{},S=y[s],!St(S));_++)Hm(e,s,b,p,$);if(!St(S)||!Ge(b))return o?Au:s;let w=`${b}__${s}`;Eu(d)||(w=`${w}__${JSON.stringify(d)}`);let C=i.get(w);return C||(C=new Intl.DateTimeFormat(b,sn({},S,d)),i.set(w,C)),m?C.formatToParts(c):C.format(c)}const T$=[\"localeMatcher\",\"weekday\",\"era\",\"year\",\"month\",\"day\",\"hour\",\"minute\",\"second\",\"timeZoneName\",\"formatMatcher\",\"hour12\",\"timeZone\",\"dateStyle\",\"timeStyle\",\"calendar\",\"dayPeriod\",\"numberingSystem\",\"hourCycle\",\"fractionalSecondDigits\"];function ep(...e){const[t,n,o,l]=e,r=At();let a=At(),i;if(Ge(t)){const s=t.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);if(!s)throw al(rl.INVALID_ISO_DATE_ARGUMENT);const c=s[3]?s[3].trim().startsWith(\"T\")?`${s[1].trim()}${s[3].trim()}`:`${s[1].trim()}T${s[3].trim()}`:s[1].trim();i=new Date(c);try{i.toISOString()}catch{throw al(rl.INVALID_ISO_DATE_ARGUMENT)}}else if(CP(t)){if(isNaN(t.getTime()))throw al(rl.INVALID_DATE_ARGUMENT);i=t}else if(ln(t))i=t;else throw al(rl.INVALID_ARGUMENT);return Ge(n)?r.key=n:St(n)&&Object.keys(n).forEach(s=>{T$.includes(s)?a[s]=n[s]:r[s]=n[s]}),Ge(o)?r.locale=o:St(o)&&(a=o),St(l)&&(a=l),[r.key||\"\",i,r,a]}function Th(e,t,n){const o=e;for(const l in n){const r=`${t}__${l}`;o.__datetimeFormatters.has(r)&&o.__datetimeFormatters.delete(r)}}function Oh(e,...t){const{numberFormats:n,unresolving:o,fallbackLocale:l,onWarn:r,localeFallbacker:a}=e,{__numberFormatters:i}=e,[s,c,u,d]=tp(...t),p=Pt(u.missingWarn)?u.missingWarn:e.missingWarn;Pt(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const m=!!u.part,g=zm(e,u),v=a(e,l,g);if(!Ge(s)||s===\"\")return new Intl.NumberFormat(g,d).format(c);let y={},b,S=null;const $=\"number format\";for(let _=0;_<v.length&&(b=v[_],y=n[b]||{},S=y[s],!St(S));_++)Hm(e,s,b,p,$);if(!St(S)||!Ge(b))return o?Au:s;let w=`${b}__${s}`;Eu(d)||(w=`${w}__${JSON.stringify(d)}`);let C=i.get(w);return C||(C=new Intl.NumberFormat(b,sn({},S,d)),i.set(w,C)),m?C.formatToParts(c):C.format(c)}const O$=[\"localeMatcher\",\"style\",\"currency\",\"currencyDisplay\",\"currencySign\",\"useGrouping\",\"minimumIntegerDigits\",\"minimumFractionDigits\",\"maximumFractionDigits\",\"minimumSignificantDigits\",\"maximumSignificantDigits\",\"compactDisplay\",\"notation\",\"signDisplay\",\"unit\",\"unitDisplay\",\"roundingMode\",\"roundingPriority\",\"roundingIncrement\",\"trailingZeroDisplay\"];function tp(...e){const[t,n,o,l]=e,r=At();let a=At();if(!ln(t))throw al(rl.INVALID_ARGUMENT);const i=t;return Ge(n)?r.key=n:St(n)&&Object.keys(n).forEach(s=>{O$.includes(s)?a[s]=n[s]:r[s]=n[s]}),Ge(o)?r.locale=o:St(o)&&(a=o),St(l)&&(a=l),[r.key||\"\",i,r,a]}function Eh(e,t,n){const o=e;for(const l in n){const r=`${t}__${l}`;o.__numberFormatters.has(r)&&o.__numberFormatters.delete(r)}}const NT=e=>e,BT=e=>\"\",LT=\"text\",FT=e=>e.length===0?\"\":Bm(e),zT=PP;function Mh(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function HT(e){const t=ln(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(ln(e.named.count)||ln(e.named.n))?ln(e.named.count)?e.named.count:ln(e.named.n)?e.named.n:t:t}function jT(e,t){t.count||(t.count=e),t.n||(t.n=e)}function WT(e={}){const t=e.locale,n=HT(e),o=Tt(e.pluralRules)&&Ge(t)&&Ft(e.pluralRules[t])?e.pluralRules[t]:Mh,l=Tt(e.pluralRules)&&Ge(t)&&Ft(e.pluralRules[t])?Mh:void 0,r=b=>b[o(n,b.length,l)],a=e.list||[],i=b=>a[b],s=e.named||At();ln(e.pluralIndex)&&jT(n,s);const c=b=>s[b];function u(b,S){const $=Ft(e.messages)?e.messages(b,!!S):Tt(e.messages)?e.messages[b]:!1;return $||(e.parent?e.parent.message(b):BT)}const d=b=>e.modifiers?e.modifiers[b]:NT,p=St(e.processor)&&Ft(e.processor.normalize)?e.processor.normalize:FT,m=St(e.processor)&&Ft(e.processor.interpolate)?e.processor.interpolate:zT,g=St(e.processor)&&Ge(e.processor.type)?e.processor.type:LT,y={list:i,named:c,plural:r,linked:(b,...S)=>{const[$,w]=S;let C=\"text\",_=\"\";S.length===1?Tt($)?(_=$.modifier||_,C=$.type||C):Ge($)&&(_=$||_):S.length===2&&(Ge($)&&(_=$||_),Ge(w)&&(C=w||C));const x=u(b,!0)(y),P=C===\"vnode\"&&Kt(x)&&_?x[0]:x;return _?d(_)(P,C):P},message:u,type:g,interpolate:m,normalize:p,values:sn(At(),a,s)};return y}const Ah=()=>\"\",po=e=>Ft(e);function Dh(e,...t){const{fallbackFormat:n,postTranslation:o,unresolving:l,messageCompiler:r,fallbackLocale:a,messages:i}=e,[s,c]=np(...t),u=Pt(c.missingWarn)?c.missingWarn:e.missingWarn,d=Pt(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,p=Pt(c.escapeParameter)?c.escapeParameter:e.escapeParameter,m=!!c.resolvedMessage,g=Ge(c.default)||Pt(c.default)?Pt(c.default)?r?s:()=>s:c.default:n?r?s:()=>s:null,v=n||g!=null&&(Ge(g)||Ft(g)),y=zm(e,c);p&&VT(c);let[b,S,$]=m?[s,y,i[y]||At()]:E$(e,s,y,a,d,u),w=b,C=s;if(!m&&!(Ge(w)||Vo(w)||po(w))&&v&&(w=g,C=w),!m&&(!(Ge(w)||Vo(w)||po(w))||!Ge(S)))return l?Au:s;let _=!1;const x=()=>{_=!0},P=po(w)?w:M$(e,s,S,w,C,x);if(_)return w;const E=XT(e,S,$,c),M=WT(E),O=KT(e,P,M);let R=o?o(O,s):O;if(p&&Ge(R)&&(R=wP(R)),__INTLIFY_PROD_DEVTOOLS__){const D={timestamp:Date.now(),key:Ge(s)?s:po(w)?w.key:\"\",locale:S||(po(w)?w.locale:\"\"),format:Ge(w)?w:po(w)?w.source:\"\",message:R};D.meta=sn({},e.__meta,MT()||{}),dT(D)}return R}function VT(e){Kt(e.list)?e.list=e.list.map(t=>Ge(t)?mh(t):t):Tt(e.named)&&Object.keys(e.named).forEach(t=>{Ge(e.named[t])&&(e.named[t]=mh(e.named[t]))})}function E$(e,t,n,o,l,r){const{messages:a,onWarn:i,messageResolver:s,localeFallbacker:c}=e,u=c(e,o,n);let d=At(),p,m=null;const g=\"translate\";for(let v=0;v<u.length&&(p=u[v],d=a[p]||At(),(m=s(d,t))===null&&(m=d[t]),!(Ge(m)||Vo(m)||po(m)));v++)if(!kT(p,u)){const y=Hm(e,t,p,r,g);y!==t&&(m=y)}return[m,p,d]}function M$(e,t,n,o,l,r){const{messageCompiler:a,warnHtmlMessage:i}=e;if(po(o)){const c=o;return c.locale=c.locale||n,c.key=c.key||t,c}if(a==null){const c=()=>o;return c.locale=n,c.key=t,c}const s=a(o,GT(e,n,l,o,i,r));return s.locale=n,s.key=t,s.source=o,s}function KT(e,t,n){return t(n)}function np(...e){const[t,n,o]=e,l=At();if(!Ge(t)&&!ln(t)&&!po(t)&&!Vo(t))throw al(rl.INVALID_ARGUMENT);const r=ln(t)?String(t):(po(t),t);return ln(n)?l.plural=n:Ge(n)?l.default=n:St(n)&&!Eu(n)?l.named=n:Kt(n)&&(l.list=n),ln(o)?l.plural=o:Ge(o)?l.default=o:St(o)&&sn(l,o),[r,l]}function GT(e,t,n,o,l,r){return{locale:t,key:n,warnHtmlMessage:l,onError:a=>{throw r&&r(a),a},onCacheKey:a=>SP(t,n,a)}}function XT(e,t,n,o){const{modifiers:l,pluralRules:r,messageResolver:a,fallbackLocale:i,fallbackWarn:s,missingWarn:c,fallbackContext:u}=e,p={locale:t,modifiers:l,pluralRules:r,messages:(m,g)=>{let v=a(n,m);if(v==null&&(u||g)){const[,,y]=E$(u||e,m,t,i,s,c);v=a(y,m)}if(Ge(v)||Vo(v)){let y=!1;const S=M$(e,m,t,v,m,()=>{y=!0});return y?Ah:S}else return po(v)?v:Ah}};return e.processor&&(p.processor=e.processor),o.list&&(p.list=o.list),o.named&&(p.named=o.named),ln(o.plural)&&(p.pluralIndex=o.plural),p}QP();/*!\n  * vue-i18n v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */const UT=\"11.1.12\";function YT(){typeof __VUE_I18N_FULL_INSTALL__!=\"boolean\"&&(cr().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!=\"boolean\"&&(cr().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=\"boolean\"&&(cr().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!=\"boolean\"&&(cr().__INTLIFY_PROD_DEVTOOLS__=!1)}const Hn={UNEXPECTED_RETURN_TYPE:pT,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32};function to(e,...t){return Mu(e,null,void 0)}const op=Wl(\"__translateVNode\"),lp=Wl(\"__datetimeParts\"),rp=Wl(\"__numberParts\"),A$=Wl(\"__setPluralRules\"),D$=Wl(\"__injectWithOption\"),ap=Wl(\"__dispose\");function fi(e){if(!Tt(e)||Vo(e))return e;for(const t in e)if(To(e,t))if(!t.includes(\".\"))Tt(e[t])&&fi(e[t]);else{const n=t.split(\".\"),o=n.length-1;let l=e,r=!1;for(let a=0;a<o;a++){if(n[a]===\"__proto__\")throw new Error(`unsafe key: ${n[a]}`);if(n[a]in l||(l[n[a]]=At()),!Tt(l[n[a]])){r=!0;break}l=l[n[a]]}if(r||(Vo(l)?$$.includes(n[o])||delete e[t]:(l[n[o]]=e[t],delete e[t])),!Vo(l)){const a=l[n[o]];Tt(a)&&fi(a)}}return e}function jm(e,t){const{messages:n,__i18n:o,messageResolver:l,flatJson:r}=t,a=St(n)?n:Kt(o)?At():{[e]:At()};if(Kt(o)&&o.forEach(i=>{if(\"locale\"in i&&\"resource\"in i){const{locale:s,resource:c}=i;s?(a[s]=a[s]||At(),Fs(c,a[s])):Fs(c,a)}else Ge(i)&&Fs(JSON.parse(i),a)}),l==null&&r)for(const i in a)To(a,i)&&fi(a[i]);return a}function R$(e){return e.type}function k$(e,t,n){let o=Tt(t.messages)?t.messages:At();\"__i18nGlobal\"in n&&(o=jm(e.locale.value,{messages:o,__i18n:n.__i18nGlobal}));const l=Object.keys(o);l.length&&l.forEach(r=>{e.mergeLocaleMessage(r,o[r])});{if(Tt(t.datetimeFormats)){const r=Object.keys(t.datetimeFormats);r.length&&r.forEach(a=>{e.mergeDateTimeFormat(a,t.datetimeFormats[a])})}if(Tt(t.numberFormats)){const r=Object.keys(t.numberFormats);r.length&&r.forEach(a=>{e.mergeNumberFormat(a,t.numberFormats[a])})}}}function Rh(e){return f(Di,null,e,0)}const kh=\"__INTLIFY_META__\",Nh=()=>[],qT=()=>!1;let Bh=0;function Lh(e){return(t,n,o,l)=>e(n,o,fn()||void 0,l)}const ZT=()=>{const e=fn();let t=null;return e&&(t=R$(e)[kh])?{[kh]:t}:null};function Wm(e={}){const{__root:t,__injectWithOption:n}=e,o=t===void 0,l=e.flatJson,r=Dc?Z:ee;let a=Pt(e.inheritLocale)?e.inheritLocale:!0;const i=r(t&&a?t.locale.value:Ge(e.locale)?e.locale:di),s=r(t&&a?t.fallbackLocale.value:Ge(e.fallbackLocale)||Kt(e.fallbackLocale)||St(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i.value),c=r(jm(i.value,e)),u=r(St(e.datetimeFormats)?e.datetimeFormats:{[i.value]:{}}),d=r(St(e.numberFormats)?e.numberFormats:{[i.value]:{}});let p=t?t.missingWarn:Pt(e.missingWarn)||pa(e.missingWarn)?e.missingWarn:!0,m=t?t.fallbackWarn:Pt(e.fallbackWarn)||pa(e.fallbackWarn)?e.fallbackWarn:!0,g=t?t.fallbackRoot:Pt(e.fallbackRoot)?e.fallbackRoot:!0,v=!!e.fallbackFormat,y=Ft(e.missing)?e.missing:null,b=Ft(e.missing)?Lh(e.missing):null,S=Ft(e.postTranslation)?e.postTranslation:null,$=t?t.warnHtmlMessage:Pt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter;const C=t?t.modifiers:St(e.modifiers)?e.modifiers:{};let _=e.pluralRules||t&&t.pluralRules,x;x=(()=>{o&&_h(null);const se={version:UT,locale:i.value,fallbackLocale:s.value,messages:c.value,modifiers:C,pluralRules:_,missing:b===null?void 0:b,missingWarn:p,fallbackWarn:m,fallbackFormat:v,unresolving:!0,postTranslation:S===null?void 0:S,warnHtmlMessage:$,escapeParameter:w,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:\"vue\"}};se.datetimeFormats=u.value,se.numberFormats=d.value,se.__datetimeFormatters=St(x)?x.__datetimeFormatters:void 0,se.__numberFormatters=St(x)?x.__numberFormatters:void 0;const te=DT(se);return o&&_h(te),te})(),za(x,i.value,s.value);function E(){return[i.value,s.value,c.value,u.value,d.value]}const M=I({get:()=>i.value,set:se=>{x.locale=se,i.value=se}}),O=I({get:()=>s.value,set:se=>{x.fallbackLocale=se,s.value=se,za(x,i.value,se)}}),R=I(()=>c.value),D=I(()=>u.value),z=I(()=>d.value);function T(){return Ft(S)?S:null}function k(se){S=se,x.postTranslation=se}function B(){return y}function L(se){se!==null&&(b=Lh(se)),y=se,x.missing=b}const N=(se,te,ae,fe,Pe,Oe)=>{E();let Re;try{__INTLIFY_PROD_DEVTOOLS__,o||(x.fallbackContext=t?AT():void 0),Re=se(x)}finally{__INTLIFY_PROD_DEVTOOLS__,o||(x.fallbackContext=void 0)}if(ae!==\"translate exists\"&&ln(Re)&&Re===Au||ae===\"translate exists\"&&!Re){const[$e,xe]=te();return t&&g?fe(t):Pe($e)}else{if(Oe(Re))return Re;throw to(Hn.UNEXPECTED_RETURN_TYPE)}};function F(...se){return N(te=>Reflect.apply(Dh,null,[te,...se]),()=>np(...se),\"translate\",te=>Reflect.apply(te.t,te,[...se]),te=>te,te=>Ge(te))}function j(...se){const[te,ae,fe]=se;if(fe&&!Tt(fe))throw to(Hn.INVALID_ARGUMENT);return F(te,ae,sn({resolvedMessage:!0},fe||{}))}function H(...se){return N(te=>Reflect.apply(Ph,null,[te,...se]),()=>ep(...se),\"datetime format\",te=>Reflect.apply(te.d,te,[...se]),()=>xh,te=>Ge(te)||Kt(te))}function K(...se){return N(te=>Reflect.apply(Oh,null,[te,...se]),()=>tp(...se),\"number format\",te=>Reflect.apply(te.n,te,[...se]),()=>xh,te=>Ge(te)||Kt(te))}function G(se){return se.map(te=>Ge(te)||ln(te)||Pt(te)?Rh(String(te)):te)}const q={normalize:G,interpolate:se=>se,type:\"vnode\"};function Q(...se){return N(te=>{let ae;const fe=te;try{fe.processor=q,ae=Reflect.apply(Dh,null,[fe,...se])}finally{fe.processor=null}return ae},()=>np(...se),\"translate\",te=>te[op](...se),te=>[Rh(te)],te=>Kt(te))}function oe(...se){return N(te=>Reflect.apply(Oh,null,[te,...se]),()=>tp(...se),\"number format\",te=>te[rp](...se),Nh,te=>Ge(te)||Kt(te))}function le(...se){return N(te=>Reflect.apply(Ph,null,[te,...se]),()=>ep(...se),\"datetime format\",te=>te[lp](...se),Nh,te=>Ge(te)||Kt(te))}function Y(se){_=se,x.pluralRules=_}function J(se,te){return N(()=>{if(!se)return!1;const ae=Ge(te)?te:i.value,fe=be(ae),Pe=x.messageResolver(fe,se);return Vo(Pe)||po(Pe)||Ge(Pe)},()=>[se],\"translate exists\",ae=>Reflect.apply(ae.te,ae,[se,te]),qT,ae=>Pt(ae))}function ce(se){let te=null;const ae=C$(x,s.value,i.value);for(let fe=0;fe<ae.length;fe++){const Pe=c.value[ae[fe]]||{},Oe=x.messageResolver(Pe,se);if(Oe!=null){te=Oe;break}}return te}function ue(se){const te=ce(se);return te??(t?t.tm(se)||{}:{})}function be(se){return c.value[se]||{}}function Ce(se,te){if(l){const ae={[se]:te};for(const fe in ae)To(ae,fe)&&fi(ae[fe]);te=ae[se]}c.value[se]=te,x.messages=c.value}function ge(se,te){c.value[se]=c.value[se]||{};const ae={[se]:te};if(l)for(const fe in ae)To(ae,fe)&&fi(ae[fe]);te=ae[se],Fs(te,c.value[se]),x.messages=c.value}function Se(se){return u.value[se]||{}}function X(se,te){u.value[se]=te,x.datetimeFormats=u.value,Th(x,se,te)}function U(se,te){u.value[se]=sn(u.value[se]||{},te),x.datetimeFormats=u.value,Th(x,se,te)}function ie(se){return d.value[se]||{}}function ve(se,te){d.value[se]=te,x.numberFormats=d.value,Eh(x,se,te)}function me(se,te){d.value[se]=sn(d.value[se]||{},te),x.numberFormats=d.value,Eh(x,se,te)}Bh++,t&&Dc&&(pe(t.locale,se=>{a&&(i.value=se,x.locale=se,za(x,i.value,s.value))}),pe(t.fallbackLocale,se=>{a&&(s.value=se,x.fallbackLocale=se,za(x,i.value,s.value))}));const he={id:Bh,locale:M,fallbackLocale:O,get inheritLocale(){return a},set inheritLocale(se){a=se,se&&t&&(i.value=t.locale.value,s.value=t.fallbackLocale.value,za(x,i.value,s.value))},get availableLocales(){return Object.keys(c.value).sort()},messages:R,get modifiers(){return C},get pluralRules(){return _||{}},get isGlobal(){return o},get missingWarn(){return p},set missingWarn(se){p=se,x.missingWarn=p},get fallbackWarn(){return m},set fallbackWarn(se){m=se,x.fallbackWarn=m},get fallbackRoot(){return g},set fallbackRoot(se){g=se},get fallbackFormat(){return v},set fallbackFormat(se){v=se,x.fallbackFormat=v},get warnHtmlMessage(){return $},set warnHtmlMessage(se){$=se,x.warnHtmlMessage=se},get escapeParameter(){return w},set escapeParameter(se){w=se,x.escapeParameter=se},t:F,getLocaleMessage:be,setLocaleMessage:Ce,mergeLocaleMessage:ge,getPostTranslationHandler:T,setPostTranslationHandler:k,getMissingHandler:B,setMissingHandler:L,[A$]:Y};return he.datetimeFormats=D,he.numberFormats=z,he.rt=j,he.te=J,he.tm=ue,he.d=H,he.n=K,he.getDateTimeFormat=Se,he.setDateTimeFormat=X,he.mergeDateTimeFormat=U,he.getNumberFormat=ie,he.setNumberFormat=ve,he.mergeNumberFormat=me,he[D$]=n,he[op]=Q,he[lp]=le,he[rp]=oe,he}function QT(e){const t=Ge(e.locale)?e.locale:di,n=Ge(e.fallbackLocale)||Kt(e.fallbackLocale)||St(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,o=Ft(e.missing)?e.missing:void 0,l=Pt(e.silentTranslationWarn)||pa(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,r=Pt(e.silentFallbackWarn)||pa(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=Pt(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,s=St(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=Ft(e.postTranslation)?e.postTranslation:void 0,d=Ge(e.warnHtmlInMessage)?e.warnHtmlInMessage!==\"off\":!0,p=!!e.escapeParameterHtml,m=Pt(e.sync)?e.sync:!0;let g=e.messages;if(St(e.sharedMessages)){const C=e.sharedMessages;g=Object.keys(C).reduce((x,P)=>{const E=x[P]||(x[P]={});return sn(E,C[P]),x},g||{})}const{__i18n:v,__root:y,__injectWithOption:b}=e,S=e.datetimeFormats,$=e.numberFormats,w=e.flatJson;return{locale:t,fallbackLocale:n,messages:g,flatJson:w,datetimeFormats:S,numberFormats:$,missing:o,missingWarn:l,fallbackWarn:r,fallbackRoot:a,fallbackFormat:i,modifiers:s,pluralRules:c,postTranslation:u,warnHtmlMessage:d,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:m,__i18n:v,__root:y,__injectWithOption:b}}function ip(e={}){const t=Wm(QT(e)),{__extender:n}=e,o={id:t.id,get locale(){return t.locale.value},set locale(l){t.locale.value=l},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(l){t.fallbackLocale.value=l},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(l){t.setMissingHandler(l)},get silentTranslationWarn(){return Pt(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(l){t.missingWarn=Pt(l)?!l:l},get silentFallbackWarn(){return Pt(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(l){t.fallbackWarn=Pt(l)?!l:l},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(l){t.fallbackFormat=l},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(l){t.setPostTranslationHandler(l)},get sync(){return t.inheritLocale},set sync(l){t.inheritLocale=l},get warnHtmlInMessage(){return t.warnHtmlMessage?\"warn\":\"off\"},set warnHtmlInMessage(l){t.warnHtmlMessage=l!==\"off\"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(l){t.escapeParameter=l},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...l){return Reflect.apply(t.t,t,[...l])},rt(...l){return Reflect.apply(t.rt,t,[...l])},te(l,r){return t.te(l,r)},tm(l){return t.tm(l)},getLocaleMessage(l){return t.getLocaleMessage(l)},setLocaleMessage(l,r){t.setLocaleMessage(l,r)},mergeLocaleMessage(l,r){t.mergeLocaleMessage(l,r)},d(...l){return Reflect.apply(t.d,t,[...l])},getDateTimeFormat(l){return t.getDateTimeFormat(l)},setDateTimeFormat(l,r){t.setDateTimeFormat(l,r)},mergeDateTimeFormat(l,r){t.mergeDateTimeFormat(l,r)},n(...l){return Reflect.apply(t.n,t,[...l])},getNumberFormat(l){return t.getNumberFormat(l)},setNumberFormat(l,r){t.setNumberFormat(l,r)},mergeNumberFormat(l,r){t.mergeNumberFormat(l,r)}};return o.__extender=n,o}function JT(e,t,n){return{beforeCreate(){const o=fn();if(!o)throw to(Hn.UNEXPECTED_ERROR);const l=this.$options;if(l.i18n){const r=l.i18n;if(l.__i18n&&(r.__i18n=l.__i18n),r.__root=t,this===this.$root)this.$i18n=Fh(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=ip(r);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(l.__i18n)if(this===this.$root)this.$i18n=Fh(e,l);else{this.$i18n=ip({__i18n:l.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}else this.$i18n=e;l.__i18nGlobal&&k$(t,l,l),this.$t=(...r)=>this.$i18n.t(...r),this.$rt=(...r)=>this.$i18n.rt(...r),this.$te=(r,a)=>this.$i18n.te(r,a),this.$d=(...r)=>this.$i18n.d(...r),this.$n=(...r)=>this.$i18n.n(...r),this.$tm=r=>this.$i18n.tm(r),n.__setInstance(o,this.$i18n)},mounted(){},unmounted(){const o=fn();if(!o)throw to(Hn.UNEXPECTED_ERROR);const l=this.$i18n;delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,l.__disposer&&(l.__disposer(),delete l.__disposer,delete l.__extender),n.__deleteInstance(o),delete this.$i18n}}}function Fh(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[A$](t.pluralizationRules||e.pluralizationRules);const n=jm(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(o=>e.mergeLocaleMessage(o,n[o])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(o=>e.mergeDateTimeFormat(o,t.datetimeFormats[o])),t.numberFormats&&Object.keys(t.numberFormats).forEach(o=>e.mergeNumberFormat(o,t.numberFormats[o])),e}const Vm={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===\"parent\"||e===\"global\",default:\"parent\"},i18n:{type:Object}};function eO({slots:e},t){return t.length===1&&t[0]===\"default\"?(e.default?e.default():[]).reduce((o,l)=>[...o,...l.type===He?l.children:[l]],[]):t.reduce((n,o)=>{const l=e[o];return l&&(n[o]=l()),n},At())}function N$(){return He}const tO=ne({name:\"i18n-t\",props:sn({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>ln(e)||!isNaN(e)}},Vm),setup(e,t){const{slots:n,attrs:o}=t,l=e.i18n||bl({useScope:e.scope,__useComponent:!0});return()=>{const r=Object.keys(n).filter(d=>d[0]!==\"_\"),a=At();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=Ge(e.plural)?+e.plural:e.plural);const i=eO(t,r),s=l[op](e.keypath,i,a),c=sn(At(),o),u=Ge(e.tag)||Tt(e.tag)?e.tag:N$();return wa(u,c,s)}}}),zh=tO;function nO(e){return Kt(e)&&!Ge(e[0])}function B$(e,t,n,o){const{slots:l,attrs:r}=t;return()=>{const a={part:!0};let i=At();e.locale&&(a.locale=e.locale),Ge(e.format)?a.key=e.format:Tt(e.format)&&(Ge(e.format.key)&&(a.key=e.format.key),i=Object.keys(e.format).reduce((p,m)=>n.includes(m)?sn(At(),p,{[m]:e.format[m]}):p,At()));const s=o(e.value,a,i);let c=[a.key];Kt(s)?c=s.map((p,m)=>{const g=l[p.type],v=g?g({[p.type]:p.value,index:m,parts:s}):[p.value];return nO(v)&&(v[0].key=`${p.type}-${m}`),v}):Ge(s)&&(c=[s]);const u=sn(At(),r),d=Ge(e.tag)||Tt(e.tag)?e.tag:N$();return wa(d,u,c)}}const oO=ne({name:\"i18n-n\",props:sn({value:{type:Number,required:!0},format:{type:[String,Object]}},Vm),setup(e,t){const n=e.i18n||bl({useScope:e.scope,__useComponent:!0});return B$(e,t,O$,(...o)=>n[rp](...o))}}),Hh=oO;function lO(e,t){const n=e;if(e.mode===\"composition\")return n.__getInstance(t)||e.global;{const o=n.__getInstance(t);return o!=null?o.__composer:e.global.__composer}}function rO(e){const t=a=>{const{instance:i,value:s}=a;if(!i||!i.$)throw to(Hn.UNEXPECTED_ERROR);const c=lO(e,i.$),u=jh(s);return[Reflect.apply(c.t,c,[...Wh(u)]),c]};return{created:(a,i)=>{const[s,c]=t(i);Dc&&e.global===c&&(a.__i18nWatcher=pe(c.locale,()=>{i.instance&&i.instance.$forceUpdate()})),a.__composer=c,a.textContent=s},unmounted:a=>{Dc&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:i})=>{if(a.__composer){const s=a.__composer,c=jh(i);a.textContent=Reflect.apply(s.t,s,[...Wh(c)])}},getSSRProps:a=>{const[i]=t(a);return{textContent:i}}}}function jh(e){if(Ge(e))return{path:e};if(St(e)){if(!(\"path\"in e))throw to(Hn.REQUIRED_VALUE,\"path\");return e}else throw to(Hn.INVALID_VALUE)}function Wh(e){const{path:t,locale:n,args:o,choice:l,plural:r}=e,a={},i=o||{};return Ge(n)&&(a.locale=n),ln(l)&&(a.plural=l),ln(r)&&(a.plural=r),[t,i,a]}function aO(e,t,...n){const o=St(n[0])?n[0]:{};(Pt(o.globalInstall)?o.globalInstall:!0)&&([zh.name,\"I18nT\"].forEach(r=>e.component(r,zh)),[Hh.name,\"I18nN\"].forEach(r=>e.component(r,Hh)),[Kh.name,\"I18nD\"].forEach(r=>e.component(r,Kh))),e.directive(\"t\",rO(t))}const iO=Wl(\"global-vue-i18n\");function sO(e={}){const t=__VUE_I18N_LEGACY_API__&&Pt(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=Pt(e.globalInjection)?e.globalInjection:!0,o=new Map,[l,r]=cO(e,t),a=Wl(\"\");function i(d){return o.get(d)||null}function s(d,p){o.set(d,p)}function c(d){o.delete(d)}const u={get mode(){return __VUE_I18N_LEGACY_API__&&t?\"legacy\":\"composition\"},async install(d,...p){if(d.__VUE_I18N_SYMBOL__=a,d.provide(d.__VUE_I18N_SYMBOL__,u),St(p[0])){const v=p[0];u.__composerExtend=v.__composerExtend,u.__vueI18nExtend=v.__vueI18nExtend}let m=null;!t&&n&&(m=hO(d,u.global)),__VUE_I18N_FULL_INSTALL__&&aO(d,u,...p),__VUE_I18N_LEGACY_API__&&t&&d.mixin(JT(r,r.__composer,u));const g=d.unmount;d.unmount=()=>{m&&m(),u.dispose(),g()}},get global(){return r},dispose(){l.stop()},__instances:o,__getInstance:i,__setInstance:s,__deleteInstance:c};return u}function bl(e={}){const t=fn();if(t==null)throw to(Hn.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw to(Hn.NOT_INSTALLED);const n=uO(t),o=fO(n),l=R$(t),r=dO(e,l);if(r===\"global\")return k$(o,e,l),o;if(r===\"parent\"){let s=pO(n,t,e.__useComponent);return s==null&&(s=o),s}const a=n;let i=a.__getInstance(t);if(i==null){const s=sn({},e);\"__i18n\"in l&&(s.__i18n=l.__i18n),o&&(s.__root=o),i=Wm(s),a.__composerExtend&&(i[ap]=a.__composerExtend(i)),vO(a,t,i),a.__setInstance(t,i)}return i}function cO(e,t){const n=PI(),o=__VUE_I18N_LEGACY_API__&&t?n.run(()=>ip(e)):n.run(()=>Wm(e));if(o==null)throw to(Hn.UNEXPECTED_ERROR);return[n,o]}function uO(e){const t=nt(e.isCE?iO:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw to(e.isCE?Hn.NOT_INSTALLED_WITH_PROVIDE:Hn.UNEXPECTED_ERROR);return t}function dO(e,t){return Eu(e)?\"__i18n\"in t?\"local\":\"global\":e.useScope?e.useScope:\"local\"}function fO(e){return e.mode===\"composition\"?e.global:e.global.__composer}function pO(e,t,n=!1){let o=null;const l=t.root;let r=mO(t,n);for(;r!=null;){const a=e;if(e.mode===\"composition\")o=a.__getInstance(r);else if(__VUE_I18N_LEGACY_API__){const i=a.__getInstance(r);i!=null&&(o=i.__composer,n&&o&&!o[D$]&&(o=null))}if(o!=null||l===r)break;r=r.parent}return o}function mO(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function vO(e,t,n){Be(()=>{},t),Mn(()=>{const o=n;e.__deleteInstance(t);const l=o[ap];l&&(l(),delete o[ap])},t)}const gO=[\"locale\",\"fallbackLocale\",\"availableLocales\"],Vh=[\"t\",\"rt\",\"d\",\"n\",\"tm\",\"te\"];function hO(e,t){const n=Object.create(null);return gO.forEach(l=>{const r=Object.getOwnPropertyDescriptor(t,l);if(!r)throw to(Hn.UNEXPECTED_ERROR);const a=Fl(r.value)?{get(){return r.value.value},set(i){r.value.value=i}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,l,a)}),e.config.globalProperties.$i18n=n,Vh.forEach(l=>{const r=Object.getOwnPropertyDescriptor(t,l);if(!r||!r.value)throw to(Hn.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${l}`,r)}),()=>{delete e.config.globalProperties.$i18n,Vh.forEach(l=>{delete e.config.globalProperties[`$${l}`]})}}const bO=ne({name:\"i18n-d\",props:sn({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Vm),setup(e,t){const n=e.i18n||bl({useScope:e.scope,__useComponent:!0});return B$(e,t,T$,(...o)=>n[lp](...o))}}),Kh=bO;YT();PT(sT);TT(wT);OT(C$);if(__INTLIFY_PROD_DEVTOOLS__){const e=cr();e.__INTLIFY__=!0,cT(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}function pi(e){\"@babel/helpers - typeof\";return pi=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},pi(e)}function yO(e,t){if(pi(e)!=\"object\"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var o=n.call(e,t);if(pi(o)!=\"object\")return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(t===\"string\"?String:Number)(e)}function SO(e){var t=yO(e,\"string\");return pi(t)==\"symbol\"?t:t+\"\"}function $O(e,t,n){return(t=SO(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Gh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,o)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Gh(Object(n),!0).forEach(function(o){$O(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gh(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},h.apply(null,arguments)}const sp=e=>typeof e==\"function\",CO=Array.isArray,xO=e=>typeof e==\"string\",wO=e=>e!==null&&typeof e==\"object\",_O=/^on[^a-z]/,IO=e=>_O.test(e),Km=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},PO=/-(\\w)/g,Ia=Km(e=>e.replace(PO,(t,n)=>n?n.toUpperCase():\"\")),TO=/\\B([A-Z])/g,OO=Km(e=>e.replace(TO,\"-$1\").toLowerCase()),EO=Km(e=>e.charAt(0).toUpperCase()+e.slice(1)),MO=Object.prototype.hasOwnProperty,Xh=(e,t)=>MO.call(e,t);function AO(e,t,n,o){const l=e[n];if(l!=null){const r=Xh(l,\"default\");if(r&&o===void 0){const a=l.default;o=l.type!==Function&&sp(a)?a():a}l.type===Boolean&&(!Xh(t,n)&&!r?o=!1:o===\"\"&&(o=!0))}return o}function DO(e){return Object.keys(e).reduce((t,n)=>((n.startsWith(\"data-\")||n.startsWith(\"aria-\"))&&(t[n]=e[n]),t),{})}function or(e){return typeof e==\"number\"?`${e}px`:e}function Yr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof e==\"function\"?e(t):e??n}function RO(e){let t;const n=new Promise(l=>{t=e(()=>{l(!0)})}),o=()=>{t?.()};return o.then=(l,r)=>n.then(l,r),o.promise=n,o}function re(){const e=[];for(let t=0;t<arguments.length;t++){const n=t<0||arguments.length<=t?void 0:arguments[t];if(n){if(xO(n))e.push(n);else if(CO(n))for(let o=0;o<n.length;o++){const l=re(n[o]);l&&e.push(l)}else if(wO(n))for(const o in n)n[o]&&e.push(o)}}return e.join(\" \")}var L$=(function(){if(typeof Map<\"u\")return Map;function e(t,n){var o=-1;return t.some(function(l,r){return l[0]===n?(o=r,!0):!1}),o}return(function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(n){var o=e(this.__entries__,n),l=this.__entries__[o];return l&&l[1]},t.prototype.set=function(n,o){var l=e(this.__entries__,n);~l?this.__entries__[l][1]=o:this.__entries__.push([n,o])},t.prototype.delete=function(n){var o=this.__entries__,l=e(o,n);~l&&o.splice(l,1)},t.prototype.has=function(n){return!!~e(this.__entries__,n)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(n,o){o===void 0&&(o=null);for(var l=0,r=this.__entries__;l<r.length;l++){var a=r[l];n.call(o,a[1],a[0])}},t})()})(),cp=typeof window<\"u\"&&typeof document<\"u\"&&window.document===document,Rc=(function(){return typeof global<\"u\"&&global.Math===Math?global:typeof self<\"u\"&&self.Math===Math?self:typeof window<\"u\"&&window.Math===Math?window:Function(\"return this\")()})(),kO=(function(){return typeof requestAnimationFrame==\"function\"?requestAnimationFrame.bind(Rc):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)}})(),NO=2;function BO(e,t){var n=!1,o=!1,l=0;function r(){n&&(n=!1,e()),o&&i()}function a(){kO(r)}function i(){var s=Date.now();if(n){if(s-l<NO)return;o=!0}else n=!0,o=!1,setTimeout(a,t);l=s}return i}var LO=20,FO=[\"top\",\"right\",\"bottom\",\"left\",\"width\",\"height\",\"size\",\"weight\"],zO=typeof MutationObserver<\"u\",HO=(function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=BO(this.refresh.bind(this),LO)}return e.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},e.prototype.removeObserver=function(t){var n=this.observers_,o=n.indexOf(t);~o&&n.splice(o,1),!n.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){var t=this.updateObservers_();t&&this.refresh()},e.prototype.updateObservers_=function(){var t=this.observers_.filter(function(n){return n.gatherActive(),n.hasActive()});return t.forEach(function(n){return n.broadcastActive()}),t.length>0},e.prototype.connect_=function(){!cp||this.connected_||(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),zO?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!cp||!this.connected_||(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var n=t.propertyName,o=n===void 0?\"\":n,l=FO.some(function(r){return!!~o.indexOf(r)});l&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e})(),F$=function(e,t){for(var n=0,o=Object.keys(t);n<o.length;n++){var l=o[n];Object.defineProperty(e,l,{value:t[l],enumerable:!1,writable:!1,configurable:!0})}return e},va=function(e){var t=e&&e.ownerDocument&&e.ownerDocument.defaultView;return t||Rc},z$=Du(0,0,0,0);function kc(e){return parseFloat(e)||0}function Uh(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce(function(o,l){var r=e[\"border-\"+l+\"-width\"];return o+kc(r)},0)}function jO(e){for(var t=[\"top\",\"right\",\"bottom\",\"left\"],n={},o=0,l=t;o<l.length;o++){var r=l[o],a=e[\"padding-\"+r];n[r]=kc(a)}return n}function WO(e){var t=e.getBBox();return Du(0,0,t.width,t.height)}function VO(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return z$;var o=va(e).getComputedStyle(e),l=jO(o),r=l.left+l.right,a=l.top+l.bottom,i=kc(o.width),s=kc(o.height);if(o.boxSizing===\"border-box\"&&(Math.round(i+r)!==t&&(i-=Uh(o,\"left\",\"right\")+r),Math.round(s+a)!==n&&(s-=Uh(o,\"top\",\"bottom\")+a)),!GO(e)){var c=Math.round(i+r)-t,u=Math.round(s+a)-n;Math.abs(c)!==1&&(i-=c),Math.abs(u)!==1&&(s-=u)}return Du(l.left,l.top,i,s)}var KO=(function(){return typeof SVGGraphicsElement<\"u\"?function(e){return e instanceof va(e).SVGGraphicsElement}:function(e){return e instanceof va(e).SVGElement&&typeof e.getBBox==\"function\"}})();function GO(e){return e===va(e).document.documentElement}function XO(e){return cp?KO(e)?WO(e):VO(e):z$}function UO(e){var t=e.x,n=e.y,o=e.width,l=e.height,r=typeof DOMRectReadOnly<\"u\"?DOMRectReadOnly:Object,a=Object.create(r.prototype);return F$(a,{x:t,y:n,width:o,height:l,top:n,right:t+o,bottom:l+n,left:t}),a}function Du(e,t,n,o){return{x:e,y:t,width:n,height:o}}var YO=(function(){function e(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=Du(0,0,0,0),this.target=t}return e.prototype.isActive=function(){var t=XO(this.target);return this.contentRect_=t,t.width!==this.broadcastWidth||t.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},e})(),qO=(function(){function e(t,n){var o=UO(n);F$(this,{target:t,contentRect:o})}return e})(),ZO=(function(){function e(t,n,o){if(this.activeObservations_=[],this.observations_=new L$,typeof t!=\"function\")throw new TypeError(\"The callback provided as parameter 1 is not a function.\");this.callback_=t,this.controller_=n,this.callbackCtx_=o}return e.prototype.observe=function(t){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(!(typeof Element>\"u\"||!(Element instanceof Object))){if(!(t instanceof va(t).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var n=this.observations_;n.has(t)||(n.set(t,new YO(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(!(typeof Element>\"u\"||!(Element instanceof Object))){if(!(t instanceof va(t).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var n=this.observations_;n.has(t)&&(n.delete(t),n.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&t.activeObservations_.push(n)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,n=this.activeObservations_.map(function(o){return new qO(o.target,o.broadcastRect())});this.callback_.call(t,n,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e})(),H$=typeof WeakMap<\"u\"?new WeakMap:new L$,j$=(function(){function e(t){if(!(this instanceof e))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=HO.getInstance(),o=new ZO(t,n,this);H$.set(this,o)}return e})();[\"observe\",\"unobserve\",\"disconnect\"].forEach(function(e){j$.prototype[e]=function(){var t;return(t=H$.get(this))[e].apply(t,arguments)}});var Gm=(function(){return typeof Rc.ResizeObserver<\"u\"?Rc.ResizeObserver:j$})();const up=e=>e!=null&&e!==\"\",Je=(e,t)=>{const n=h({},e);return Object.keys(t).forEach(o=>{const l=n[o];if(l)l.type||l.default?l.default=t[o]:l.def?l.def(t[o]):n[o]={type:l,default:t[o]};else throw new Error(`not have ${o} prop`)}),n},Xm=e=>{const t=Object.keys(e),n={},o={},l={};for(let r=0,a=t.length;r<a;r++){const i=t[r];IO(i)?(n[i[2].toLowerCase()+i.slice(3)]=e[i],o[i]=e[i]):l[i]=e[i]}return{onEvents:o,events:n,extraAttrs:l}},QO=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n={},o=/;(?![^(]*\\))/g,l=/:(.+)/;return typeof e==\"object\"?e:(e.split(o).forEach(function(r){if(r){const a=r.split(l);if(a.length>1){const i=t?Ia(a[0].trim()):a[0].trim();n[i]=a[1].trim()}}}),n)},ol=(e,t)=>e[t]!==void 0,W$=Symbol(\"skipFlatten\"),xt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const n=Array.isArray(e)?e:[e],o=[];return n.forEach(l=>{Array.isArray(l)?o.push(...xt(l,t)):l&&l.type===He?l.key===W$?o.push(l):o.push(...xt(l.children,t)):l&&gn(l)?t&&!Ri(l)?o.push(l):t||o.push(l):up(l)&&o.push(l)}),o},Ru=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"default\",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(gn(e))return e.type===He?t===\"default\"?xt(e.children):[]:e.children&&e.children[t]?xt(e.children[t](n)):[];{const o=e.$slots[t]&&e.$slots[t](n);return xt(o)}},Tn=e=>{var t;let n=((t=e?.vnode)===null||t===void 0?void 0:t.el)||e&&(e.$el||e);for(;n&&!n.tagName;)n=n.nextSibling;return n},V$=e=>{const t={};if(e.$&&e.$.vnode){const n=e.$.vnode.props||{};Object.keys(e.$props).forEach(o=>{const l=e.$props[o],r=OO(o);(l!==void 0||r in n)&&(t[o]=l)})}else if(gn(e)&&typeof e.type==\"object\"){const n=e.props||{},o={};Object.keys(n).forEach(r=>{o[Ia(r)]=n[r]});const l=e.type.props||{};Object.keys(l).forEach(r=>{const a=AO(l,o,r,o[r]);(a!==void 0||r in o)&&(t[r]=a)})}return t},K$=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"default\",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,l;if(e.$){const r=e[t];if(r!==void 0)return typeof r==\"function\"&&o?r(n):r;l=e.$slots[t],l=o&&l?l(n):l}else if(gn(e)){const r=e.props&&e.props[t];if(r!==void 0&&e.props!==null)return typeof r==\"function\"&&o?r(n):r;e.type===He?l=e.children:e.children&&e.children[t]&&(l=e.children[t],l=o&&l?l(n):l)}return Array.isArray(l)&&(l=xt(l),l=l.length===1?l[0]:l,l=l.length===0?void 0:l),l};function Yh(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return e.$?n=h(h({},n),e.$attrs):n=h(h({},n),e.props),Xm(n)[t?\"onEvents\":\"events\"]}function JO(e){const n=((gn(e)?e.props:e.$attrs)||{}).class||{};let o={};return typeof n==\"string\"?n.split(\" \").forEach(l=>{o[l.trim()]=!0}):Array.isArray(n)?re(n).split(\" \").forEach(l=>{o[l.trim()]=!0}):o=h(h({},o),n),o}function G$(e,t){let o=((gn(e)?e.props:e.$attrs)||{}).style||{};return typeof o==\"string\"&&(o=QO(o,t)),o}function eE(e){return e.length===1&&e[0].type===He}function tE(e){return e==null||e===\"\"||Array.isArray(e)&&e.length===0}function Ri(e){return e&&(e.type===YS||e.type===He&&e.children.length===0||e.type===Di&&e.children.trim()===\"\")}function nE(e){return e&&e.type===Di}function kt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const t=[];return e.forEach(n=>{Array.isArray(n)?t.push(...n):n?.type===He?t.push(...kt(n.children)):t.push(n)}),t.filter(n=>!Ri(n))}function Ha(e){if(e){const t=kt(e);return t.length?t:void 0}else return e}function Gt(e){return Array.isArray(e)&&e.length===1&&(e=e[0]),e&&e.__v_isVNode&&typeof e.type!=\"symbol\"}function Qt(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"default\";var o,l;return(o=t[n])!==null&&o!==void 0?o:(l=e[n])===null||l===void 0?void 0:l.call(e)}const bo=ne({compatConfig:{MODE:3},name:\"ResizeObserver\",props:{disabled:Boolean,onResize:Function},emits:[\"resize\"],setup(e,t){let{slots:n}=t;const o=gt({width:0,height:0,offsetHeight:0,offsetWidth:0});let l=null,r=null;const a=()=>{r&&(r.disconnect(),r=null)},i=u=>{const{onResize:d}=e,p=u[0].target,{width:m,height:g}=p.getBoundingClientRect(),{offsetWidth:v,offsetHeight:y}=p,b=Math.floor(m),S=Math.floor(g);if(o.width!==b||o.height!==S||o.offsetWidth!==v||o.offsetHeight!==y){const $={width:b,height:S,offsetWidth:v,offsetHeight:y};h(o,$),d&&Promise.resolve().then(()=>{d(h(h({},$),{offsetWidth:v,offsetHeight:y}),p)})}},s=fn(),c=()=>{const{disabled:u}=e;if(u){a();return}const d=Tn(s);d!==l&&(a(),l=d),!r&&d&&(r=new Gm(i),r.observe(d))};return Be(()=>{c()}),Wn(()=>{c()}),Mn(()=>{a()}),pe(()=>e.disabled,()=>{c()},{flush:\"post\"}),()=>{var u;return(u=n.default)===null||u===void 0?void 0:u.call(n)[0]}}});let X$=e=>setTimeout(e,16),U$=e=>clearTimeout(e);typeof window<\"u\"&&\"requestAnimationFrame\"in window&&(X$=e=>window.requestAnimationFrame(e),U$=e=>window.cancelAnimationFrame(e));let qh=0;const Um=new Map;function Y$(e){Um.delete(e)}function Qe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;qh+=1;const n=qh;function o(l){if(l===0)Y$(n),e();else{const r=X$(()=>{o(l-1)});Um.set(n,r)}}return o(t),n}Qe.cancel=e=>{const t=Um.get(e);return Y$(t),U$(t)};function dp(e){let t;const n=l=>()=>{t=null,e(...l)},o=function(){if(t==null){for(var l=arguments.length,r=new Array(l),a=0;a<l;a++)r[a]=arguments[a];t=Qe(n(r))}};return o.cancel=()=>{Qe.cancel(t),t=null},o}const hn=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t},oE=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t},Dt=e=>{const t=e;return t.install=function(n){n.component(t.displayName||t.name,e)},e};function yr(){return{type:[Function,Array]}}function De(e){return{type:Object,default:e}}function ye(e){return{type:Boolean,default:e}}function de(e){return{type:Function,default:e}}function wt(e,t){return{validator:()=>!0,default:e}}function $n(){return{validator:()=>!0}}function ct(e){return{type:Array,default:e}}function ke(e){return{type:String,default:e}}function Fe(e,t){return e?{type:e,default:t}:wt(t)}let qt=!1;try{const e=Object.defineProperty({},\"passive\",{get(){qt=!0}});window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}catch{}function Rt(e,t,n,o){if(e&&e.addEventListener){let l=o;l===void 0&&qt&&(t===\"touchstart\"||t===\"touchmove\"||t===\"wheel\")&&(l={passive:!1}),e.addEventListener(t,n,l)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(t,n)}}}function is(e){return e!==window?e.getBoundingClientRect():{top:0,bottom:window.innerHeight}}function Zh(e,t,n){if(n!==void 0&&t.top>e.top-n)return`${n+t.top}px`}function Qh(e,t,n){if(n!==void 0&&t.bottom<e.bottom+n){const o=window.innerHeight-t.bottom;return`${n+o}px`}}const q$=[\"resize\",\"scroll\",\"touchstart\",\"touchmove\",\"touchend\",\"pageshow\",\"load\"];let Za=[];function Jh(e,t){if(!e)return;let n=Za.find(o=>o.target===e);n?n.affixList.push(t):(n={target:e,affixList:[t],eventHandlers:{}},Za.push(n),q$.forEach(o=>{n.eventHandlers[o]=Rt(e,o,()=>{n.affixList.forEach(l=>{const{lazyUpdatePosition:r}=l.exposed;r()},(o===\"touchstart\"||o===\"touchmove\")&&qt?{passive:!0}:!1)})}))}function e0(e){const t=Za.find(n=>{const o=n.affixList.some(l=>l===e);return o&&(n.affixList=n.affixList.filter(l=>l!==e)),o});t&&t.affixList.length===0&&(Za=Za.filter(n=>n!==t),q$.forEach(n=>{const o=t.eventHandlers[n];o&&o.remove&&o.remove()}))}const Ym=\"anticon\",Z$=Symbol(\"GlobalFormContextKey\"),lE=e=>{et(Z$,e)},rE=()=>nt(Z$,{validateMessages:I(()=>{})}),aE=()=>({iconPrefixCls:String,getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:De(),input:De(),autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:De(),pageHeader:De(),componentSize:{type:String},componentDisabled:{type:Boolean,default:void 0},direction:{type:String,default:\"ltr\"},space:De(),virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:De(),pagination:De(),theme:De(),select:De(),wave:De()}),qm=Symbol(\"configProvider\"),Q$={getPrefixCls:(e,t)=>t||(e?`ant-${e}`:\"ant\"),iconPrefixCls:I(()=>Ym),getPopupContainer:I(()=>()=>document.body),direction:I(()=>\"ltr\")},ku=()=>nt(qm,Q$),iE=e=>et(qm,e),J$=Symbol(\"DisabledContextKey\"),jn=()=>nt(J$,Z(void 0)),eC=e=>{const t=jn();return et(J$,I(()=>{var n;return(n=e.value)!==null&&n!==void 0?n:t.value})),e},tC={items_per_page:\"/ page\",jump_to:\"Go to\",jump_to_confirm:\"confirm\",page:\"\",prev_page:\"Previous Page\",next_page:\"Next Page\",prev_5:\"Previous 5 Pages\",next_5:\"Next 5 Pages\",prev_3:\"Previous 3 Pages\",next_3:\"Next 3 Pages\"},sE={locale:\"en_US\",today:\"Today\",now:\"Now\",backToToday:\"Back to today\",ok:\"Ok\",clear:\"Clear\",month:\"Month\",year:\"Year\",timeSelect:\"select time\",dateSelect:\"select date\",weekSelect:\"Choose a week\",monthSelect:\"Choose a month\",yearSelect:\"Choose a year\",decadeSelect:\"Choose a decade\",yearFormat:\"YYYY\",dateFormat:\"M/D/YYYY\",dayFormat:\"D\",dateTimeFormat:\"M/D/YYYY HH:mm:ss\",monthBeforeYear:!0,previousMonth:\"Previous month (PageUp)\",nextMonth:\"Next month (PageDown)\",previousYear:\"Last year (Control + left)\",nextYear:\"Next year (Control + right)\",previousDecade:\"Last decade\",nextDecade:\"Next decade\",previousCentury:\"Last century\",nextCentury:\"Next century\"},nC={placeholder:\"Select time\",rangePlaceholder:[\"Start time\",\"End time\"]},mi={lang:h({placeholder:\"Select date\",yearPlaceholder:\"Select year\",quarterPlaceholder:\"Select quarter\",monthPlaceholder:\"Select month\",weekPlaceholder:\"Select week\",rangePlaceholder:[\"Start date\",\"End date\"],rangeYearPlaceholder:[\"Start year\",\"End year\"],rangeQuarterPlaceholder:[\"Start quarter\",\"End quarter\"],rangeMonthPlaceholder:[\"Start month\",\"End month\"],rangeWeekPlaceholder:[\"Start week\",\"End week\"]},sE),timePickerLocale:h({},nC)},Xn=\"${label} is not a valid ${type}\",En={locale:\"en\",Pagination:tC,DatePicker:mi,TimePicker:nC,Calendar:mi,global:{placeholder:\"Please select\"},Table:{filterTitle:\"Filter menu\",filterConfirm:\"OK\",filterReset:\"Reset\",filterEmptyText:\"No filters\",filterCheckall:\"Select all items\",filterSearchPlaceholder:\"Search in filters\",emptyText:\"No data\",selectAll:\"Select current page\",selectInvert:\"Invert current page\",selectNone:\"Clear all data\",selectionAll:\"Select all data\",sortTitle:\"Sort\",expand:\"Expand row\",collapse:\"Collapse row\",triggerDesc:\"Click to sort descending\",triggerAsc:\"Click to sort ascending\",cancelSort:\"Click to cancel sorting\"},Tour:{Next:\"Next\",Previous:\"Previous\",Finish:\"Finish\"},Modal:{okText:\"OK\",cancelText:\"Cancel\",justOkText:\"OK\"},Popconfirm:{okText:\"OK\",cancelText:\"Cancel\"},Transfer:{titles:[\"\",\"\"],searchPlaceholder:\"Search here\",itemUnit:\"item\",itemsUnit:\"items\",remove:\"Remove\",selectCurrent:\"Select current page\",removeCurrent:\"Remove current page\",selectAll:\"Select all data\",removeAll:\"Remove all data\",selectInvert:\"Invert current page\"},Upload:{uploading:\"Uploading...\",removeFile:\"Remove file\",uploadError:\"Upload error\",previewFile:\"Preview file\",downloadFile:\"Download file\"},Empty:{description:\"No data\"},Icon:{icon:\"icon\"},Text:{edit:\"Edit\",copy:\"Copy\",copied:\"Copied\",expand:\"Expand\"},PageHeader:{back:\"Back\"},Form:{optional:\"(optional)\",defaultValidateMessages:{default:\"Field validation error for ${label}\",required:\"Please enter ${label}\",enum:\"${label} must be one of [${enum}]\",whitespace:\"${label} cannot be a blank character\",date:{format:\"${label} date format is invalid\",parse:\"${label} cannot be converted to a date\",invalid:\"${label} is an invalid date\"},types:{string:Xn,method:Xn,array:Xn,object:Xn,number:Xn,date:Xn,boolean:Xn,integer:Xn,float:Xn,regexp:Xn,email:Xn,url:Xn,hex:Xn},string:{len:\"${label} must be ${len} characters\",min:\"${label} must be at least ${min} characters\",max:\"${label} must be up to ${max} characters\",range:\"${label} must be between ${min}-${max} characters\"},number:{len:\"${label} must be equal to ${len}\",min:\"${label} must be minimum ${min}\",max:\"${label} must be maximum ${max}\",range:\"${label} must be between ${min}-${max}\"},array:{len:\"Must be ${len} ${label}\",min:\"At least ${min} ${label}\",max:\"At most ${max} ${label}\",range:\"The amount of ${label} must be between ${min}-${max}\"},pattern:{mismatch:\"${label} does not match the pattern ${pattern}\"}}},Image:{preview:\"Preview\"},QRCode:{expired:\"QR code expired\",refresh:\"Refresh\",scanned:\"Scanned\"}},Pr=ne({compatConfig:{MODE:3},name:\"LocaleReceiver\",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup(e,t){let{slots:n}=t;const o=nt(\"localeData\",{}),l=I(()=>{const{componentName:a=\"global\",defaultLocale:i}=e,s=i||En[a||\"global\"],{antLocale:c}=o,u=a&&c?c[a]:{};return h(h({},typeof s==\"function\"?s():s),u||{})}),r=I(()=>{const{antLocale:a}=o,i=a&&a.locale;return a&&a.exist&&!i?En.locale:i});return()=>{const a=e.children||n.default,{antLocale:i}=o;return a?.(l.value,r.value,i)}}});function $o(e,t,n){const o=nt(\"localeData\",{});return[I(()=>{const{antLocale:r}=o,a=Ne(t)||En[e||\"global\"],i=e&&r?r[e]:{};return h(h(h({},typeof a==\"function\"?a():a),i||{}),Ne(n)||{})})]}function Zm(e){for(var t=0,n,o=0,l=e.length;l>=4;++o,l-=4)n=e.charCodeAt(o)&255|(e.charCodeAt(++o)&255)<<8|(e.charCodeAt(++o)&255)<<16|(e.charCodeAt(++o)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(l){case 3:t^=(e.charCodeAt(o+2)&255)<<16;case 2:t^=(e.charCodeAt(o+1)&255)<<8;case 1:t^=e.charCodeAt(o)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}const t0=\"%\";class cE{constructor(t){this.cache=new Map,this.instanceId=t}get(t){return this.cache.get(Array.isArray(t)?t.join(t0):t)||null}update(t,n){const o=Array.isArray(t)?t.join(t0):t,l=this.cache.get(o),r=n(l);r===null?this.cache.delete(o):this.cache.set(o,r)}}const oC=\"data-token-hash\",fr=\"data-css-hash\",qr=\"__cssinjs_instance__\";function vi(){const e=Math.random().toString(12).slice(2);if(typeof document<\"u\"&&document.head&&document.body){const t=document.body.querySelectorAll(`style[${fr}]`)||[],{firstChild:n}=document.head;Array.from(t).forEach(l=>{l[qr]=l[qr]||e,l[qr]===e&&document.head.insertBefore(l,n)});const o={};Array.from(document.querySelectorAll(`style[${fr}]`)).forEach(l=>{var r;const a=l.getAttribute(fr);o[a]?l[qr]===e&&((r=l.parentNode)===null||r===void 0||r.removeChild(l)):o[a]=!0})}return new cE(e)}const lC=Symbol(\"StyleContextKey\"),uE=()=>{var e,t,n;const o=fn();let l;if(o&&o.appContext){const r=(n=(t=(e=o.appContext)===null||e===void 0?void 0:e.config)===null||t===void 0?void 0:t.globalProperties)===null||n===void 0?void 0:n.__ANTDV_CSSINJS_CACHE__;r?l=r:(l=vi(),o.appContext.config.globalProperties&&(o.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__=l))}else l=vi();return l},rC={cache:vi(),defaultCache:!0,hashPriority:\"low\"},Nu=()=>{const e=uE();return nt(lC,ee(h(h({},rC),{cache:e})))},dE=e=>{const t=Nu(),n=ee(h(h({},rC),{cache:vi()}));return pe([()=>Ne(e),t],()=>{const o=h({},t.value),l=Ne(e);Object.keys(l).forEach(a=>{const i=l[a];l[a]!==void 0&&(o[a]=i)});const{cache:r}=l;o.cache=o.cache||vi(),o.defaultCache=!r&&t.value.defaultCache,n.value=o},{immediate:!0}),et(lC,n),n},fE=()=>({autoClear:ye(),mock:ke(),cache:De(),defaultCache:ye(),hashPriority:ke(),container:Fe(),ssrInline:ye(),transformers:ct(),linters:ct()}),pE=Dt(ne({name:\"AStyleProvider\",inheritAttrs:!1,props:fE(),setup(e,t){let{slots:n}=t;return dE(e),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}));function aC(e,t,n,o){const l=Nu(),r=ee(\"\"),a=ee();ze(()=>{r.value=[e,...t.value].join(\"%\")});const i=s=>{l.value.cache.update(s,c=>{const[u=0,d]=c||[];return u-1===0?(o?.(d,!1),null):[u-1,d]})};return pe(r,(s,c)=>{c&&i(c),l.value.cache.update(s,u=>{const[d=0,p]=u||[],g=p||n();return[d+1,g]}),a.value=l.value.cache.get(r.value)[1]},{immediate:!0}),ot(()=>{i(r.value)}),a}function wn(){return!!(typeof window<\"u\"&&window.document&&window.document.createElement)}function Ol(e,t){return e&&e.contains?e.contains(t):!1}const n0=\"data-vc-order\",mE=\"vc-util-key\",fp=new Map;function iC(){let{mark:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e?e.startsWith(\"data-\")?e:`data-${e}`:mE}function Bu(e){return e.attachTo?e.attachTo:document.querySelector(\"head\")||document.body}function vE(e){return e===\"queue\"?\"prependQueue\":e?\"prepend\":\"append\"}function sC(e){return Array.from((fp.get(e)||e).children).filter(t=>t.tagName===\"STYLE\")}function cC(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!wn())return null;const{csp:n,prepend:o}=t,l=document.createElement(\"style\");l.setAttribute(n0,vE(o)),n?.nonce&&(l.nonce=n?.nonce),l.innerHTML=e;const r=Bu(t),{firstChild:a}=r;if(o){if(o===\"queue\"){const i=sC(r).filter(s=>[\"prepend\",\"prependQueue\"].includes(s.getAttribute(n0)));if(i.length)return r.insertBefore(l,i[i.length-1].nextSibling),l}r.insertBefore(l,a)}else r.appendChild(l);return l}function uC(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n=Bu(t);return sC(n).find(o=>o.getAttribute(iC(t))===e)}function Nc(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n=uC(e,t);n&&Bu(t).removeChild(n)}function gE(e,t){const n=fp.get(e);if(!n||!Ol(document,n)){const o=cC(\"\",t),{parentNode:l}=o;fp.set(e,l),e.removeChild(o)}}function gi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var o,l,r;const a=Bu(n);gE(a,n);const i=uC(t,n);if(i)return!((o=n.csp)===null||o===void 0)&&o.nonce&&i.nonce!==((l=n.csp)===null||l===void 0?void 0:l.nonce)&&(i.nonce=(r=n.csp)===null||r===void 0?void 0:r.nonce),i.innerHTML!==e&&(i.innerHTML=e),i;const s=cC(e,n);return s.setAttribute(iC(n),t),s}function hE(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}class ga{constructor(){this.cache=new Map,this.keys=[],this.cacheCallTimes=0}size(){return this.keys.length}internalGet(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o={map:this.cache};return t.forEach(l=>{var r;o?o=(r=o?.map)===null||r===void 0?void 0:r.get(l):o=void 0}),o?.value&&n&&(o.value[1]=this.cacheCallTimes++),o?.value}get(t){var n;return(n=this.internalGet(t,!0))===null||n===void 0?void 0:n[0]}has(t){return!!this.internalGet(t)}set(t,n){if(!this.has(t)){if(this.size()+1>ga.MAX_CACHE_SIZE+ga.MAX_CACHE_OFFSET){const[l]=this.keys.reduce((r,a)=>{const[,i]=r;return this.internalGet(a)[1]<i?[a,this.internalGet(a)[1]]:r},[this.keys[0],this.cacheCallTimes]);this.delete(l)}this.keys.push(t)}let o=this.cache;t.forEach((l,r)=>{if(r===t.length-1)o.set(l,{value:[n,this.cacheCallTimes++]});else{const a=o.get(l);a?a.map||(a.map=new Map):o.set(l,{map:new Map}),o=o.get(l).map}})}deleteByPath(t,n){var o;const l=t.get(n[0]);if(n.length===1)return l.map?t.set(n[0],{map:l.map}):t.delete(n[0]),(o=l.value)===null||o===void 0?void 0:o[0];const r=this.deleteByPath(l.map,n.slice(1));return(!l.map||l.map.size===0)&&!l.value&&t.delete(n[0]),r}delete(t){if(this.has(t))return this.keys=this.keys.filter(n=>!hE(n,t)),this.deleteByPath(this.cache,t)}}ga.MAX_CACHE_SIZE=20;ga.MAX_CACHE_OFFSET=5;let o0={};function bE(e,t){}function yE(e,t){}function dC(e,t,n){!t&&!o0[n]&&(e(!1,n),o0[n]=!0)}function Qm(e,t){dC(bE,e,t)}function SE(e,t){dC(yE,e,t)}function $E(){}let no=$E,l0=0;class fC{constructor(t){this.derivatives=Array.isArray(t)?t:[t],this.id=l0,t.length===0&&no(t.length>0),l0+=1}getDerivativeToken(t){return this.derivatives.reduce((n,o)=>o(t,n),void 0)}}const Hd=new ga;function pC(e){const t=Array.isArray(e)?e:[e];return Hd.has(t)||Hd.set(t,new fC(t)),Hd.get(t)}const r0=new WeakMap;function Bc(e){let t=r0.get(e)||\"\";return t||(Object.keys(e).forEach(n=>{const o=e[n];t+=n,o instanceof fC?t+=o.id:o&&typeof o==\"object\"?t+=Bc(o):t+=o}),r0.set(e,t)),t}function CE(e,t){return Zm(`${t}_${Bc(e)}`)}const Qa=`random-${Date.now()}-${Math.random()}`.replace(/\\./g,\"\"),mC=\"_bAmBoO_\";function xE(e,t,n){var o,l;if(wn()){gi(e,Qa);const r=document.createElement(\"div\");r.style.position=\"fixed\",r.style.left=\"0\",r.style.top=\"0\",t?.(r),document.body.appendChild(r);const a=n?n(r):(o=getComputedStyle(r).content)===null||o===void 0?void 0:o.includes(mC);return(l=r.parentNode)===null||l===void 0||l.removeChild(r),Nc(Qa),a}return!1}let jd;function wE(){return jd===void 0&&(jd=xE(`@layer ${Qa} { .${Qa} { content: \"${mC}\"!important; } }`,e=>{e.className=Qa})),jd}const a0={},_E=\"css\",lr=new Map;function IE(e){lr.set(e,(lr.get(e)||0)+1)}function PE(e,t){typeof document<\"u\"&&document.querySelectorAll(`style[${oC}=\"${e}\"]`).forEach(o=>{var l;o[qr]===t&&((l=o.parentNode)===null||l===void 0||l.removeChild(o))})}const TE=0;function OE(e,t){lr.set(e,(lr.get(e)||0)-1);const n=Array.from(lr.keys()),o=n.filter(l=>(lr.get(l)||0)<=0);n.length-o.length>TE&&o.forEach(l=>{PE(l,t),lr.delete(l)})}const EE=(e,t,n,o)=>{const l=n.getDerivativeToken(e);let r=h(h({},l),t);return o&&(r=o(r)),r};function ME(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Z({});const o=Nu(),l=I(()=>h({},...t.value)),r=I(()=>Bc(l.value)),a=I(()=>Bc(n.value.override||a0));return aC(\"token\",I(()=>[n.value.salt||\"\",e.value.id,r.value,a.value]),()=>{const{salt:s=\"\",override:c=a0,formatToken:u,getComputedToken:d}=n.value,p=d?d(l.value,c,e.value):EE(l.value,c,e.value,u),m=CE(p,s);p._tokenKey=m,IE(m);const g=`${_E}-${Zm(m)}`;return p._hashId=g,[p,g]},s=>{var c;OE(s[0]._tokenKey,(c=o.value)===null||c===void 0?void 0:c.cache.instanceId)})}var vC=\"comm\",gC=\"rule\",hC=\"decl\",AE=\"@import\",DE=\"@namespace\",RE=\"@keyframes\",kE=\"@layer\",bC=Math.abs,Jm=String.fromCharCode;function yC(e){return e.trim()}function zs(e,t,n){return e.replace(t,n)}function NE(e,t,n){return e.indexOf(t,n)}function ta(e,t){return e.charCodeAt(t)|0}function ha(e,t,n){return e.slice(t,n)}function Ho(e){return e.length}function BE(e){return e.length}function ss(e,t){return t.push(e),e}var Lu=1,ba=1,SC=0,yo=0,on=0,Pa=\"\";function ev(e,t,n,o,l,r,a,i){return{value:e,root:t,parent:n,type:o,props:l,children:r,line:Lu,column:ba,length:a,return:\"\",siblings:i}}function LE(){return on}function FE(){return on=yo>0?ta(Pa,--yo):0,ba--,on===10&&(ba=1,Lu--),on}function Oo(){return on=yo<SC?ta(Pa,yo++):0,ba++,on===10&&(ba=1,Lu++),on}function El(){return ta(Pa,yo)}function Hs(){return yo}function Fu(e,t){return ha(Pa,e,t)}function hi(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function zE(e){return Lu=ba=1,SC=Ho(Pa=e),yo=0,[]}function HE(e){return Pa=\"\",e}function Wd(e){return yC(Fu(yo-1,pp(e===91?e+2:e===40?e+1:e)))}function jE(e){for(;(on=El())&&on<33;)Oo();return hi(e)>2||hi(on)>3?\"\":\" \"}function WE(e,t){for(;--t&&Oo()&&!(on<48||on>102||on>57&&on<65||on>70&&on<97););return Fu(e,Hs()+(t<6&&El()==32&&Oo()==32))}function pp(e){for(;Oo();)switch(on){case e:return yo;case 34:case 39:e!==34&&e!==39&&pp(on);break;case 40:e===41&&pp(e);break;case 92:Oo();break}return yo}function VE(e,t){for(;Oo()&&e+on!==57;)if(e+on===84&&El()===47)break;return\"/*\"+Fu(t,yo-1)+\"*\"+Jm(e===47?e:Oo())}function KE(e){for(;!hi(El());)Oo();return Fu(e,yo)}function GE(e){return HE(js(\"\",null,null,null,[\"\"],e=zE(e),0,[0],e))}function js(e,t,n,o,l,r,a,i,s){for(var c=0,u=0,d=a,p=0,m=0,g=0,v=1,y=1,b=1,S=0,$=\"\",w=l,C=r,_=o,x=$;y;)switch(g=S,S=Oo()){case 40:if(g!=108&&ta(x,d-1)==58){NE(x+=zs(Wd(S),\"&\",\"&\\f\"),\"&\\f\",bC(c?i[c-1]:0))!=-1&&(b=-1);break}case 34:case 39:case 91:x+=Wd(S);break;case 9:case 10:case 13:case 32:x+=jE(g);break;case 92:x+=WE(Hs()-1,7);continue;case 47:switch(El()){case 42:case 47:ss(XE(VE(Oo(),Hs()),t,n,s),s),(hi(g||1)==5||hi(El()||1)==5)&&Ho(x)&&ha(x,-1,void 0)!==\" \"&&(x+=\" \");break;default:x+=\"/\"}break;case 123*v:i[c++]=Ho(x)*b;case 125*v:case 59:case 0:switch(S){case 0:case 125:y=0;case 59+u:b==-1&&(x=zs(x,/\\f/g,\"\")),m>0&&(Ho(x)-d||v===0&&g===47)&&ss(m>32?s0(x+\";\",o,n,d-1,s):s0(zs(x,\" \",\"\")+\";\",o,n,d-2,s),s);break;case 59:x+=\";\";default:if(ss(_=i0(x,t,n,c,u,l,i,$,w=[],C=[],d,r),r),S===123)if(u===0)js(x,t,_,_,w,r,d,i,C);else{switch(p){case 99:if(ta(x,3)===110)break;case 108:if(ta(x,2)===97)break;default:u=0;case 100:case 109:case 115:}u?js(e,_,_,o&&ss(i0(e,_,_,0,0,l,i,$,l,w=[],d,C),C),l,C,d,i,o?w:C):js(x,_,_,_,[\"\"],C,0,i,C)}}c=u=m=0,v=b=1,$=x=\"\",d=a;break;case 58:d=1+Ho(x),m=g;default:if(v<1){if(S==123)--v;else if(S==125&&v++==0&&FE()==125)continue}switch(x+=Jm(S),S*v){case 38:b=u>0?1:(x+=\"\\f\",-1);break;case 44:i[c++]=(Ho(x)-1)*b,b=1;break;case 64:El()===45&&(x+=Wd(Oo())),p=El(),u=d=Ho($=x+=KE(Hs())),S++;break;case 45:g===45&&Ho(x)==2&&(v=0)}}return r}function i0(e,t,n,o,l,r,a,i,s,c,u,d){for(var p=l-1,m=l===0?r:[\"\"],g=BE(m),v=0,y=0,b=0;v<o;++v)for(var S=0,$=ha(e,p+1,p=bC(y=a[v])),w=e;S<g;++S)(w=yC(y>0?m[S]+\" \"+$:zs($,/&\\f/g,m[S])))&&(s[b++]=w);return ev(e,t,n,l===0?gC:i,s,c,u,d)}function XE(e,t,n,o){return ev(e,t,n,vC,Jm(LE()),ha(e,2,-2),0,o)}function s0(e,t,n,o,l){return ev(e,t,n,hC,ha(e,0,o),ha(e,o+1,-1),o,l)}function mp(e,t){for(var n=\"\",o=0;o<e.length;o++)n+=t(e[o],o,e,t)||\"\";return n}function UE(e,t,n,o){switch(e.type){case kE:if(e.children.length)break;case AE:case DE:case hC:return e.return=e.return||e.value;case vC:return\"\";case RE:return e.return=e.value+\"{\"+mp(e.children,o)+\"}\";case gC:if(!Ho(e.value=e.props.join(\",\")))return\"\"}return Ho(n=mp(e.children,o))?e.return=e.value+\"{\"+n+\"}\":\"\"}const c0=\"data-ant-cssinjs-cache-path\",YE=\"_FILE_STYLE__\";let pr,$C=!0;function qE(){var e;if(!pr&&(pr={},wn())){const t=document.createElement(\"div\");t.className=c0,t.style.position=\"fixed\",t.style.visibility=\"hidden\",t.style.top=\"-9999px\",document.body.appendChild(t);let n=getComputedStyle(t).content||\"\";n=n.replace(/^\"/,\"\").replace(/\"$/,\"\"),n.split(\";\").forEach(l=>{const[r,a]=l.split(\":\");pr[r]=a});const o=document.querySelector(`style[${c0}]`);o&&($C=!1,(e=o.parentNode)===null||e===void 0||e.removeChild(o)),document.body.removeChild(t)}}function ZE(e){return qE(),!!pr[e]}function QE(e){const t=pr[e];let n=null;if(t&&wn())if($C)n=YE;else{const o=document.querySelector(`style[${fr}=\"${pr[e]}\"]`);o?n=o.innerHTML:delete pr[e]}return[n,t]}const u0=wn(),JE=\"_skip_check_\",CC=\"_multi_value_\";function d0(e){return mp(GE(e),UE).replace(/\\{%%%\\:[^;];}/g,\";\")}function eM(e){return typeof e==\"object\"&&e&&(JE in e||CC in e)}function tM(e,t,n){if(!t)return e;const o=`.${t}`,l=n===\"low\"?`:where(${o})`:o;return e.split(\",\").map(a=>{var i;const s=a.trim().split(/\\s+/);let c=s[0]||\"\";const u=((i=c.match(/^\\w+/))===null||i===void 0?void 0:i[0])||\"\";return c=`${u}${l}${c.slice(u.length)}`,[c,...s.slice(1)].join(\" \")}).join(\",\")}const f0=new Set,vp=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{root:n,injectHash:o,parentSelectors:l}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{root:!0,parentSelectors:[]};const{hashId:r,layer:a,path:i,hashPriority:s,transformers:c=[],linters:u=[]}=t;let d=\"\",p={};function m(y){const b=y.getName(r);if(!p[b]){const[S]=vp(y.style,t,{root:!1,parentSelectors:l});p[b]=`@keyframes ${y.getName(r)}${S}`}}function g(y){let b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return y.forEach(S=>{Array.isArray(S)?g(S,b):S&&b.push(S)}),b}if(g(Array.isArray(e)?e:[e]).forEach(y=>{const b=typeof y==\"string\"&&!n?{}:y;if(typeof b==\"string\")d+=`${b}\n`;else if(b._keyframe)m(b);else{const S=c.reduce(($,w)=>{var C;return((C=w?.visit)===null||C===void 0?void 0:C.call(w,$))||$},b);Object.keys(S).forEach($=>{var w;const C=S[$];if(typeof C==\"object\"&&C&&($!==\"animationName\"||!C._keyframe)&&!eM(C)){let _=!1,x=$.trim(),P=!1;(n||o)&&r?x.startsWith(\"@\")?_=!0:x=tM($,r,s):n&&!r&&(x===\"&\"||x===\"\")&&(x=\"\",P=!0);const[E,M]=vp(C,t,{root:P,injectHash:_,parentSelectors:[...l,x]});p=h(h({},p),M),d+=`${x}${E}`}else{let _=function(P,E){const M=P.replace(/[A-Z]/g,R=>`-${R.toLowerCase()}`);let O=E;!dP[P]&&typeof O==\"number\"&&O!==0&&(O=`${O}px`),P===\"animationName\"&&E?._keyframe&&(m(E),O=E.getName(r)),d+=`${M}:${O};`};const x=(w=C?.value)!==null&&w!==void 0?w:C;typeof C==\"object\"&&C?.[CC]&&Array.isArray(x)?x.forEach(P=>{_($,P)}):_($,x)}})}}),!n)d=`{${d}}`;else if(a&&wE()){const y=a.split(\",\");d=`@layer ${y[y.length-1].trim()} {${d}}`,y.length>1&&(d=`@layer ${a}{%%%:%}${d}`)}return[d,p]};function nM(e,t){return Zm(`${e.join(\"%\")}${t}`)}function gp(e,t){const n=Nu(),o=I(()=>e.value.token._tokenKey),l=I(()=>[o.value,...e.value.path]);let r=u0;return aC(\"style\",l,()=>{const{path:a,hashId:i,layer:s,nonce:c,clientOnly:u,order:d=0}=e.value,p=l.value.join(\"|\");if(ZE(p)){const[x,P]=QE(p);if(x)return[x,o.value,P,{},u,d]}const m=t(),{hashPriority:g,container:v,transformers:y,linters:b,cache:S}=n.value,[$,w]=vp(m,{hashId:i,hashPriority:g,layer:s,path:a.join(\"-\"),transformers:y,linters:b}),C=d0($),_=nM(l.value,C);if(r){const x={mark:fr,prepend:\"queue\",attachTo:v,priority:d},P=typeof c==\"function\"?c():c;P&&(x.csp={nonce:P});const E=gi(C,_,x);E[qr]=S.instanceId,E.setAttribute(oC,o.value),Object.keys(w).forEach(M=>{f0.has(M)||(f0.add(M),gi(d0(w[M]),`_effect-${M}`,{mark:fr,prepend:\"queue\",attachTo:v}))})}return[C,o.value,_,w,u,d]},(a,i)=>{let[,,s]=a;(i||n.value.autoClear)&&u0&&Nc(s,{mark:fr})}),a=>a}class rt{constructor(t,n){this._keyframe=!0,this.name=t,this.style=n}getName(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\";return t?`${t}-${this.name}`:this.name}}const oM={StyleProvider:pE},xC=\"4.2.6\",bi=[\"blue\",\"purple\",\"cyan\",\"green\",\"magenta\",\"pink\",\"red\",\"orange\",\"yellow\",\"volcano\",\"geekblue\",\"lime\",\"gold\"],lM=e=>{const{controlHeight:t}=e;return{controlHeightSM:t*.75,controlHeightXS:t*.5,controlHeightLG:t*1.25}};function rM(e){const{sizeUnit:t,sizeStep:n}=e;return{sizeXXL:t*(n+8),sizeXL:t*(n+4),sizeLG:t*(n+2),sizeMD:t*(n+1),sizeMS:t*n,size:t*n,sizeSM:t*(n-1),sizeXS:t*(n-2),sizeXXS:t*(n-3)}}const wC={blue:\"#1677ff\",purple:\"#722ED1\",cyan:\"#13C2C2\",green:\"#52C41A\",magenta:\"#EB2F96\",pink:\"#eb2f96\",red:\"#F5222D\",orange:\"#FA8C16\",yellow:\"#FADB14\",volcano:\"#FA541C\",geekblue:\"#2F54EB\",gold:\"#FAAD14\",lime:\"#A0D911\"},zu=h(h({},wC),{colorPrimary:\"#1677ff\",colorSuccess:\"#52c41a\",colorWarning:\"#faad14\",colorError:\"#ff4d4f\",colorInfo:\"#1677ff\",colorTextBase:\"\",colorBgBase:\"\",fontFamily:`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,fontSize:14,lineWidth:1,lineType:\"solid\",motionUnit:.1,motionBase:0,motionEaseOutCirc:\"cubic-bezier(0.08, 0.82, 0.17, 1)\",motionEaseInOutCirc:\"cubic-bezier(0.78, 0.14, 0.15, 0.86)\",motionEaseOut:\"cubic-bezier(0.215, 0.61, 0.355, 1)\",motionEaseInOut:\"cubic-bezier(0.645, 0.045, 0.355, 1)\",motionEaseOutBack:\"cubic-bezier(0.12, 0.4, 0.29, 1.46)\",motionEaseInBack:\"cubic-bezier(0.71, -0.46, 0.88, 0.6)\",motionEaseInQuint:\"cubic-bezier(0.755, 0.05, 0.855, 0.06)\",motionEaseOutQuint:\"cubic-bezier(0.23, 1, 0.32, 1)\",borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacityImage:1,wireframe:!1});function aM(e,t){let{generateColorPalettes:n,generateNeutralColorPalettes:o}=t;const{colorSuccess:l,colorWarning:r,colorError:a,colorInfo:i,colorPrimary:s,colorBgBase:c,colorTextBase:u}=e,d=n(s),p=n(l),m=n(r),g=n(a),v=n(i),y=o(c,u);return h(h({},y),{colorPrimaryBg:d[1],colorPrimaryBgHover:d[2],colorPrimaryBorder:d[3],colorPrimaryBorderHover:d[4],colorPrimaryHover:d[5],colorPrimary:d[6],colorPrimaryActive:d[7],colorPrimaryTextHover:d[8],colorPrimaryText:d[9],colorPrimaryTextActive:d[10],colorSuccessBg:p[1],colorSuccessBgHover:p[2],colorSuccessBorder:p[3],colorSuccessBorderHover:p[4],colorSuccessHover:p[4],colorSuccess:p[6],colorSuccessActive:p[7],colorSuccessTextHover:p[8],colorSuccessText:p[9],colorSuccessTextActive:p[10],colorErrorBg:g[1],colorErrorBgHover:g[2],colorErrorBorder:g[3],colorErrorBorderHover:g[4],colorErrorHover:g[5],colorError:g[6],colorErrorActive:g[7],colorErrorTextHover:g[8],colorErrorText:g[9],colorErrorTextActive:g[10],colorWarningBg:m[1],colorWarningBgHover:m[2],colorWarningBorder:m[3],colorWarningBorderHover:m[4],colorWarningHover:m[4],colorWarning:m[6],colorWarningActive:m[7],colorWarningTextHover:m[8],colorWarningText:m[9],colorWarningTextActive:m[10],colorInfoBg:v[1],colorInfoBgHover:v[2],colorInfoBorder:v[3],colorInfoBorderHover:v[4],colorInfoHover:v[4],colorInfo:v[6],colorInfoActive:v[7],colorInfoTextHover:v[8],colorInfoText:v[9],colorInfoTextActive:v[10],colorBgMask:new vt(\"#000\").setAlpha(.45).toRgbString(),colorWhite:\"#fff\"})}const iM=e=>{let t=e,n=e,o=e,l=e;return e<6&&e>=5?t=e+1:e<16&&e>=6?t=e+2:e>=16&&(t=16),e<7&&e>=5?n=4:e<8&&e>=7?n=5:e<14&&e>=8?n=6:e<16&&e>=14?n=7:e>=16&&(n=8),e<6&&e>=2?o=1:e>=6&&(o=2),e>4&&e<8?l=4:e>=8&&(l=6),{borderRadius:e>16?16:e,borderRadiusXS:o,borderRadiusSM:n,borderRadiusLG:t,borderRadiusOuter:l}};function sM(e){const{motionUnit:t,motionBase:n,borderRadius:o,lineWidth:l}=e;return h({motionDurationFast:`${(n+t).toFixed(1)}s`,motionDurationMid:`${(n+t*2).toFixed(1)}s`,motionDurationSlow:`${(n+t*3).toFixed(1)}s`,lineWidthBold:l+1},iM(o))}const Qo=(e,t)=>new vt(e).setAlpha(t).toRgbString(),ja=(e,t)=>new vt(e).darken(t).toHexString(),cM=e=>{const t=Ac(e);return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[4],6:t[5],7:t[6],8:t[4],9:t[5],10:t[6]}},uM=(e,t)=>{const n=e||\"#fff\",o=t||\"#000\";return{colorBgBase:n,colorTextBase:o,colorText:Qo(o,.88),colorTextSecondary:Qo(o,.65),colorTextTertiary:Qo(o,.45),colorTextQuaternary:Qo(o,.25),colorFill:Qo(o,.15),colorFillSecondary:Qo(o,.06),colorFillTertiary:Qo(o,.04),colorFillQuaternary:Qo(o,.02),colorBgLayout:ja(n,4),colorBgContainer:ja(n,0),colorBgElevated:ja(n,0),colorBgSpotlight:Qo(o,.85),colorBorder:ja(n,15),colorBorderSecondary:ja(n,6)}};function dM(e){const t=new Array(10).fill(null).map((n,o)=>{const l=o-1,r=e*Math.pow(2.71828,l/5),a=o>1?Math.floor(r):Math.ceil(r);return Math.floor(a/2)*2});return t[1]=e,t.map(n=>{const o=n+8;return{size:n,lineHeight:o/n}})}const fM=e=>{const t=dM(e),n=t.map(l=>l.size),o=t.map(l=>l.lineHeight);return{fontSizeSM:n[0],fontSize:n[1],fontSizeLG:n[2],fontSizeXL:n[3],fontSizeHeading1:n[6],fontSizeHeading2:n[5],fontSizeHeading3:n[4],fontSizeHeading4:n[3],fontSizeHeading5:n[2],lineHeight:o[1],lineHeightLG:o[2],lineHeightSM:o[0],lineHeightHeading1:o[6],lineHeightHeading2:o[5],lineHeightHeading3:o[4],lineHeightHeading4:o[3],lineHeightHeading5:o[2]}};function pM(e){const t=Object.keys(wC).map(n=>{const o=Ac(e[n]);return new Array(10).fill(1).reduce((l,r,a)=>(l[`${n}-${a+1}`]=o[a],l),{})}).reduce((n,o)=>(n=h(h({},n),o),n),{});return h(h(h(h(h(h(h({},e),t),aM(e,{generateColorPalettes:cM,generateNeutralColorPalettes:uM})),fM(e.fontSize)),rM(e)),lM(e)),sM(e))}function Vd(e){return e>=0&&e<=255}function cs(e,t){const{r:n,g:o,b:l,a:r}=new vt(e).toRgb();if(r<1)return e;const{r:a,g:i,b:s}=new vt(t).toRgb();for(let c=.01;c<=1;c+=.01){const u=Math.round((n-a*(1-c))/c),d=Math.round((o-i*(1-c))/c),p=Math.round((l-s*(1-c))/c);if(Vd(u)&&Vd(d)&&Vd(p))return new vt({r:u,g:d,b:p,a:Math.round(c*100)/100}).toRgbString()}return new vt({r:n,g:o,b:l,a:1}).toRgbString()}var mM=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function vM(e){const{override:t}=e,n=mM(e,[\"override\"]),o=h({},t);Object.keys(zu).forEach(m=>{delete o[m]});const l=h(h({},n),o),r=480,a=576,i=768,s=992,c=1200,u=1600,d=2e3;return h(h(h({},l),{colorLink:l.colorInfoText,colorLinkHover:l.colorInfoHover,colorLinkActive:l.colorInfoActive,colorFillContent:l.colorFillSecondary,colorFillContentHover:l.colorFill,colorFillAlter:l.colorFillQuaternary,colorBgContainerDisabled:l.colorFillTertiary,colorBorderBg:l.colorBgContainer,colorSplit:cs(l.colorBorderSecondary,l.colorBgContainer),colorTextPlaceholder:l.colorTextQuaternary,colorTextDisabled:l.colorTextQuaternary,colorTextHeading:l.colorText,colorTextLabel:l.colorTextSecondary,colorTextDescription:l.colorTextTertiary,colorTextLightSolid:l.colorWhite,colorHighlight:l.colorError,colorBgTextHover:l.colorFillSecondary,colorBgTextActive:l.colorFill,colorIcon:l.colorTextTertiary,colorIconHover:l.colorText,colorErrorOutline:cs(l.colorErrorBg,l.colorBgContainer),colorWarningOutline:cs(l.colorWarningBg,l.colorBgContainer),fontSizeIcon:l.fontSizeSM,lineWidth:l.lineWidth,controlOutlineWidth:l.lineWidth*2,controlInteractiveSize:l.controlHeight/2,controlItemBgHover:l.colorFillTertiary,controlItemBgActive:l.colorPrimaryBg,controlItemBgActiveHover:l.colorPrimaryBgHover,controlItemBgActiveDisabled:l.colorFill,controlTmpOutline:l.colorFillQuaternary,controlOutline:cs(l.colorPrimaryBg,l.colorBgContainer),lineType:l.lineType,borderRadius:l.borderRadius,borderRadiusXS:l.borderRadiusXS,borderRadiusSM:l.borderRadiusSM,borderRadiusLG:l.borderRadiusLG,fontWeightStrong:600,opacityLoading:.65,linkDecoration:\"none\",linkHoverDecoration:\"none\",linkFocusDecoration:\"none\",controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:l.sizeXXS,paddingXS:l.sizeXS,paddingSM:l.sizeSM,padding:l.size,paddingMD:l.sizeMD,paddingLG:l.sizeLG,paddingXL:l.sizeXL,paddingContentHorizontalLG:l.sizeLG,paddingContentVerticalLG:l.sizeMS,paddingContentHorizontal:l.sizeMS,paddingContentVertical:l.sizeSM,paddingContentHorizontalSM:l.size,paddingContentVerticalSM:l.sizeXS,marginXXS:l.sizeXXS,marginXS:l.sizeXS,marginSM:l.sizeSM,margin:l.size,marginMD:l.sizeMD,marginLG:l.sizeLG,marginXL:l.sizeXL,marginXXL:l.sizeXXL,boxShadow:`\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,boxShadowSecondary:`\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowTertiary:`\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,screenXS:r,screenXSMin:r,screenXSMax:a-1,screenSM:a,screenSMMin:a,screenSMMax:i-1,screenMD:i,screenMDMin:i,screenMDMax:s-1,screenLG:s,screenLGMin:s,screenLGMax:c-1,screenXL:c,screenXLMin:c,screenXLMax:u-1,screenXXL:u,screenXXLMin:u,screenXXLMax:d-1,screenXXXL:d,screenXXXLMin:d,boxShadowPopoverArrow:\"3px 3px 7px rgba(0, 0, 0, 0.1)\",boxShadowCard:`\n      0 1px 2px -2px ${new vt(\"rgba(0, 0, 0, 0.16)\").toRgbString()},\n      0 3px 6px 0 ${new vt(\"rgba(0, 0, 0, 0.12)\").toRgbString()},\n      0 5px 12px 4px ${new vt(\"rgba(0, 0, 0, 0.09)\").toRgbString()}\n    `,boxShadowDrawerRight:`\n      -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowDrawerLeft:`\n      6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowDrawerUp:`\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowDrawerDown:`\n      0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowTabsOverflowLeft:\"inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)\",boxShadowTabsOverflowRight:\"inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)\",boxShadowTabsOverflowTop:\"inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)\",boxShadowTabsOverflowBottom:\"inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)\"}),o)}const Hu=e=>({color:e.colorLink,textDecoration:\"none\",outline:\"none\",cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,\"&:focus, &:hover\":{color:e.colorLinkHover},\"&:active\":{color:e.colorLinkActive}}),tv=(e,t,n,o,l)=>{const r=e/2,a=0,i=r,s=n*1/Math.sqrt(2),c=r-n*(1-1/Math.sqrt(2)),u=r-t*(1/Math.sqrt(2)),d=n*(Math.sqrt(2)-1)+t*(1/Math.sqrt(2)),p=2*r-u,m=d,g=2*r-s,v=c,y=2*r-a,b=i,S=r*Math.sqrt(2)+n*(Math.sqrt(2)-2),$=n*(Math.sqrt(2)-1);return{pointerEvents:\"none\",width:e,height:e,overflow:\"hidden\",\"&::after\":{content:'\"\"',position:\"absolute\",width:S,height:S,bottom:0,insetInline:0,margin:\"auto\",borderRadius:{_skip_check_:!0,value:`0 0 ${t}px 0`},transform:\"translateY(50%) rotate(-135deg)\",boxShadow:l,zIndex:0,background:\"transparent\"},\"&::before\":{position:\"absolute\",bottom:0,insetInlineStart:0,width:e,height:e/2,background:o,clipPath:{_multi_value_:!0,value:[`polygon(${$}px 100%, 50% ${$}px, ${2*r-$}px 100%, ${$}px 100%)`,`path('M ${a} ${i} A ${n} ${n} 0 0 0 ${s} ${c} L ${u} ${d} A ${t} ${t} 0 0 1 ${p} ${m} L ${g} ${v} A ${n} ${n} 0 0 0 ${y} ${b} Z')`]},content:'\"\"'}}};function Lc(e,t){return bi.reduce((n,o)=>{const l=e[`${o}-1`],r=e[`${o}-3`],a=e[`${o}-6`],i=e[`${o}-7`];return h(h({},n),t(o,{lightColor:l,lightBorderColor:r,darkColor:a,textColor:i}))},{})}const Xt={overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\"},qe=e=>({boxSizing:\"border-box\",margin:0,padding:0,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,listStyle:\"none\",fontFamily:e.fontFamily}),Tr=()=>({display:\"inline-flex\",alignItems:\"center\",color:\"inherit\",fontStyle:\"normal\",lineHeight:0,textAlign:\"center\",textTransform:\"none\",verticalAlign:\"-0.125em\",textRendering:\"optimizeLegibility\",\"-webkit-font-smoothing\":\"antialiased\",\"-moz-osx-font-smoothing\":\"grayscale\",\"> *\":{lineHeight:1},svg:{display:\"inline-block\"}}),Do=()=>({\"&::before\":{display:\"table\",content:'\"\"'},\"&::after\":{display:\"table\",clear:\"both\",content:'\"\"'}}),gM=e=>({a:{color:e.colorLink,textDecoration:e.linkDecoration,backgroundColor:\"transparent\",outline:\"none\",cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,\"-webkit-text-decoration-skip\":\"objects\",\"&:hover\":{color:e.colorLinkHover},\"&:active\":{color:e.colorLinkActive},\"&:active,\\n  &:hover\":{textDecoration:e.linkHoverDecoration,outline:0},\"&:focus\":{textDecoration:e.linkFocusDecoration,outline:0},\"&[disabled]\":{color:e.colorTextDisabled,cursor:\"not-allowed\"}}}),hM=(e,t)=>{const{fontFamily:n,fontSize:o}=e,l=`[class^=\"${t}\"], [class*=\" ${t}\"]`;return{[l]:{fontFamily:n,fontSize:o,boxSizing:\"border-box\",\"&::before, &::after\":{boxSizing:\"border-box\"},[l]:{boxSizing:\"border-box\",\"&::before, &::after\":{boxSizing:\"border-box\"}}}}},fl=e=>({outline:`${e.lineWidthBold}px solid ${e.colorPrimaryBorder}`,outlineOffset:1,transition:\"outline-offset 0s, outline 0s\"}),pl=e=>({\"&:focus-visible\":h({},fl(e))});function Xe(e,t,n){return o=>{const l=I(()=>o?.value),[r,a,i]=yl(),{getPrefixCls:s,iconPrefixCls:c}=ku(),u=I(()=>s()),d=I(()=>({theme:r.value,token:a.value,hashId:i.value,path:[\"Shared\",u.value]}));gp(d,()=>[{\"&\":gM(a.value)}]);const p=I(()=>({theme:r.value,token:a.value,hashId:i.value,path:[e,l.value,c.value]}));return[gp(p,()=>{const{token:m,flush:g}=yM(a.value),v=typeof n==\"function\"?n(m):n,y=h(h({},v),a.value[e]),b=`.${l.value}`,S=Le(m,{componentCls:b,prefixCls:l.value,iconCls:`.${c.value}`,antCls:`.${u.value}`},y),$=t(S,{hashId:i.value,prefixCls:l.value,rootPrefixCls:u.value,iconPrefixCls:c.value,overrideComponentToken:a.value[e]});return g(e,y),[hM(a.value,l.value),$]}),i]}}const _C=typeof CSSINJS_STATISTIC<\"u\";let hp=!0;function Le(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!_C)return h({},...t);hp=!1;const o={};return t.forEach(l=>{Object.keys(l).forEach(a=>{Object.defineProperty(o,a,{configurable:!0,enumerable:!0,get:()=>l[a]})})}),hp=!0,o}function bM(){}function yM(e){let t,n=e,o=bM;return _C&&(t=new Set,n=new Proxy(e,{get(l,r){return hp&&t.add(r),l[r]}}),o=(l,r)=>{Array.from(t)}),{token:n,keys:t,flush:o}}const SM=pC(pM),IC={token:zu,hashed:!0},PC=Symbol(\"DesignTokenContext\"),bp=ee(),$M=e=>{et(PC,e),pe(e,()=>{bp.value=Ne(e),qS(bp)},{immediate:!0,deep:!0})},CM=ne({props:{value:De()},setup(e,t){let{slots:n}=t;return $M(I(()=>e.value)),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}});function yl(){const e=nt(PC,I(()=>bp.value||IC)),t=I(()=>`${xC}-${e.value.hashed||\"\"}`),n=I(()=>e.value.theme||SM),o=ME(n,I(()=>[zu,e.value.token]),I(()=>({salt:t.value,override:h({override:e.value.token},e.value.components),formatToken:vM})));return[n,I(()=>o.value[0]),I(()=>e.value.hashed?o.value[1]:\"\")]}const nv=ne({compatConfig:{MODE:3},setup(){const[,e]=yl(),t=I(()=>new vt(e.value.colorBgBase).toHsl().l<.5?{opacity:.65}:{});return()=>f(\"svg\",{style:t.value,width:\"184\",height:\"152\",viewBox:\"0 0 184 152\",xmlns:\"http://www.w3.org/2000/svg\"},[f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"g\",{transform:\"translate(24 31.67)\"},[f(\"ellipse\",{\"fill-opacity\":\".8\",fill:\"#F5F5F7\",cx:\"67.797\",cy:\"106.89\",rx:\"67.797\",ry:\"12.668\"},null),f(\"path\",{d:\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",fill:\"#AEB8C2\"},null),f(\"path\",{d:\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",fill:\"url(#linearGradient-1)\",transform:\"translate(13.56)\"},null),f(\"path\",{d:\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",fill:\"#F5F5F7\"},null),f(\"path\",{d:\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",fill:\"#DCE0E6\"},null)]),f(\"path\",{d:\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",fill:\"#DCE0E6\"},null),f(\"g\",{transform:\"translate(149.65 15.383)\",fill:\"#FFF\"},[f(\"ellipse\",{cx:\"20.654\",cy:\"3.167\",rx:\"2.849\",ry:\"2.815\"},null),f(\"path\",{d:\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"},null)])])])}});nv.PRESENTED_IMAGE_DEFAULT=!0;const TC=ne({compatConfig:{MODE:3},setup(){const[,e]=yl(),t=I(()=>{const{colorFill:n,colorFillTertiary:o,colorFillQuaternary:l,colorBgContainer:r}=e.value;return{borderColor:new vt(n).onBackground(r).toHexString(),shadowColor:new vt(o).onBackground(r).toHexString(),contentColor:new vt(l).onBackground(r).toHexString()}});return()=>f(\"svg\",{width:\"64\",height:\"41\",viewBox:\"0 0 64 41\",xmlns:\"http://www.w3.org/2000/svg\"},[f(\"g\",{transform:\"translate(0 1)\",fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"ellipse\",{fill:t.value.shadowColor,cx:\"32\",cy:\"33\",rx:\"32\",ry:\"7\"},null),f(\"g\",{\"fill-rule\":\"nonzero\",stroke:t.value.borderColor},[f(\"path\",{d:\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"},null),f(\"path\",{d:\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",fill:t.value.contentColor},null)])])])}});TC.PRESENTED_IMAGE_SIMPLE=!0;const xM=e=>{const{componentCls:t,margin:n,marginXS:o,marginXL:l,fontSize:r,lineHeight:a}=e;return{[t]:{marginInline:o,fontSize:r,lineHeight:a,textAlign:\"center\",[`${t}-image`]:{height:e.emptyImgHeight,marginBottom:o,opacity:e.opacityImage,img:{height:\"100%\"},svg:{height:\"100%\",margin:\"auto\"}},[`${t}-footer`]:{marginTop:n},\"&-normal\":{marginBlock:l,color:e.colorTextDisabled,[`${t}-image`]:{height:e.emptyImgHeightMD}},\"&-small\":{marginBlock:o,color:e.colorTextDisabled,[`${t}-image`]:{height:e.emptyImgHeightSM}}}}},wM=Xe(\"Empty\",e=>{const{componentCls:t,controlHeightLG:n}=e,o=Le(e,{emptyImgCls:`${t}-img`,emptyImgHeight:n*2.5,emptyImgHeightMD:n,emptyImgHeightSM:n*.875});return[xM(o)]});var _M=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const IM=()=>({prefixCls:String,imageStyle:De(),image:wt(),description:wt()}),ov=ne({name:\"AEmpty\",compatConfig:{MODE:3},inheritAttrs:!1,props:IM(),setup(e,t){let{slots:n={},attrs:o}=t;const{direction:l,prefixCls:r}=Te(\"empty\",e),[a,i]=wM(r);return()=>{var s,c;const u=r.value,d=h(h({},e),o),{image:p=((s=n.image)===null||s===void 0?void 0:s.call(n))||wa(nv),description:m=((c=n.description)===null||c===void 0?void 0:c.call(n))||void 0,imageStyle:g,class:v=\"\"}=d,y=_M(d,[\"image\",\"description\",\"imageStyle\",\"class\"]),b=typeof p==\"function\"?p():p,S=typeof b==\"object\"&&\"type\"in b&&b.type.PRESENTED_IMAGE_SIMPLE;return a(f(Pr,{componentName:\"Empty\",children:$=>{const w=typeof m<\"u\"?m:$.description,C=typeof w==\"string\"?w:\"empty\";let _=null;return typeof b==\"string\"?_=f(\"img\",{alt:C,src:b},null):_=b,f(\"div\",A({class:re(u,v,i.value,{[`${u}-normal`]:S,[`${u}-rtl`]:l.value===\"rtl\"})},y),[f(\"div\",{class:`${u}-image`,style:g},[_]),w&&f(\"p\",{class:`${u}-description`},[w]),n.default&&f(\"div\",{class:`${u}-footer`},[kt(n.default())])])}},null))}}});ov.PRESENTED_IMAGE_DEFAULT=()=>wa(nv);ov.PRESENTED_IMAGE_SIMPLE=()=>wa(TC);const Ln=Dt(ov),lv=e=>{const{prefixCls:t}=Te(\"empty\",e);return(o=>{switch(o){case\"Table\":case\"List\":return f(Ln,{image:Ln.PRESENTED_IMAGE_SIMPLE},null);case\"Select\":case\"TreeSelect\":case\"Cascader\":case\"Transfer\":case\"Mentions\":return f(Ln,{image:Ln.PRESENTED_IMAGE_SIMPLE,class:`${t.value}-small`},null);default:return f(Ln,null,null)}})(e.componentName)};function PM(e){return f(lv,{componentName:e},null)}const OC=Symbol(\"SizeContextKey\"),EC=()=>nt(OC,Z(void 0)),MC=e=>{const t=EC();return et(OC,I(()=>e.value||t.value)),e},Te=(e,t)=>{const n=EC(),o=jn(),l=nt(qm,h(h({},Q$),{renderEmpty:x=>wa(lv,{componentName:x})})),r=I(()=>l.getPrefixCls(e,t.prefixCls)),a=I(()=>{var x,P;return(x=t.direction)!==null&&x!==void 0?x:(P=l.direction)===null||P===void 0?void 0:P.value}),i=I(()=>{var x;return(x=t.iconPrefixCls)!==null&&x!==void 0?x:l.iconPrefixCls.value}),s=I(()=>l.getPrefixCls()),c=I(()=>{var x;return(x=l.autoInsertSpaceInButton)===null||x===void 0?void 0:x.value}),u=l.renderEmpty,d=l.space,p=l.pageHeader,m=l.form,g=I(()=>{var x,P;return(x=t.getTargetContainer)!==null&&x!==void 0?x:(P=l.getTargetContainer)===null||P===void 0?void 0:P.value}),v=I(()=>{var x,P,E;return(P=(x=t.getContainer)!==null&&x!==void 0?x:t.getPopupContainer)!==null&&P!==void 0?P:(E=l.getPopupContainer)===null||E===void 0?void 0:E.value}),y=I(()=>{var x,P;return(x=t.dropdownMatchSelectWidth)!==null&&x!==void 0?x:(P=l.dropdownMatchSelectWidth)===null||P===void 0?void 0:P.value}),b=I(()=>{var x;return(t.virtual===void 0?((x=l.virtual)===null||x===void 0?void 0:x.value)!==!1:t.virtual!==!1)&&y.value!==!1}),S=I(()=>t.size||n.value),$=I(()=>{var x,P,E;return(x=t.autocomplete)!==null&&x!==void 0?x:(E=(P=l.input)===null||P===void 0?void 0:P.value)===null||E===void 0?void 0:E.autocomplete}),w=I(()=>{var x;return(x=t.disabled)!==null&&x!==void 0?x:o.value}),C=I(()=>{var x;return(x=t.csp)!==null&&x!==void 0?x:l.csp}),_=I(()=>{var x,P;return(x=t.wave)!==null&&x!==void 0?x:(P=l.wave)===null||P===void 0?void 0:P.value});return{configProvider:l,prefixCls:r,direction:a,size:S,getTargetContainer:g,getPopupContainer:v,space:d,pageHeader:p,form:m,autoInsertSpaceInButton:c,renderEmpty:u,virtual:b,dropdownMatchSelectWidth:y,rootPrefixCls:s,getPrefixCls:l.getPrefixCls,autocomplete:$,csp:C,iconPrefixCls:i,disabled:w,select:l.select,wave:_}};function lt(e,t){const n=h({},e);for(let o=0;o<t.length;o+=1){const l=t[o];delete n[l]}return n}const TM=e=>{const{componentCls:t}=e;return{[t]:{position:\"fixed\",zIndex:e.zIndexPopup}}},OM=Xe(\"Affix\",e=>{const t=Le(e,{zIndexPopup:e.zIndexBase+10});return[TM(t)]});function EM(){return typeof window<\"u\"?window:null}var Zr;(function(e){e[e.None=0]=\"None\",e[e.Prepare=1]=\"Prepare\"})(Zr||(Zr={}));const MM=()=>({offsetTop:Number,offsetBottom:Number,target:{type:Function,default:EM},prefixCls:String,onChange:Function,onTestUpdatePosition:Function}),AM=ne({compatConfig:{MODE:3},name:\"AAffix\",inheritAttrs:!1,props:MM(),setup(e,t){let{slots:n,emit:o,expose:l,attrs:r}=t;const a=ee(),i=ee(),s=gt({affixStyle:void 0,placeholderStyle:void 0,status:Zr.None,lastAffix:!1,prevTarget:null,timeout:null}),c=fn(),u=I(()=>e.offsetBottom===void 0&&e.offsetTop===void 0?0:e.offsetTop),d=I(()=>e.offsetBottom),p=()=>{const{status:$,lastAffix:w}=s,{target:C}=e;if($!==Zr.Prepare||!i.value||!a.value||!C)return;const _=C();if(!_)return;const x={status:Zr.None},P=is(a.value);if(P.top===0&&P.left===0&&P.width===0&&P.height===0)return;const E=is(_),M=Zh(P,E,u.value),O=Qh(P,E,d.value);if(!(P.top===0&&P.left===0&&P.width===0&&P.height===0)){if(M!==void 0){const R=`${P.width}px`,D=`${P.height}px`;x.affixStyle={position:\"fixed\",top:M,width:R,height:D},x.placeholderStyle={width:R,height:D}}else if(O!==void 0){const R=`${P.width}px`,D=`${P.height}px`;x.affixStyle={position:\"fixed\",bottom:O,width:R,height:D},x.placeholderStyle={width:R,height:D}}x.lastAffix=!!x.affixStyle,w!==x.lastAffix&&o(\"change\",x.lastAffix),h(s,x)}},m=()=>{h(s,{status:Zr.Prepare,affixStyle:void 0,placeholderStyle:void 0})},g=dp(()=>{m()}),v=dp(()=>{const{target:$}=e,{affixStyle:w}=s;if($&&w){const C=$();if(C&&a.value){const _=is(C),x=is(a.value),P=Zh(x,_,u.value),E=Qh(x,_,d.value);if(P!==void 0&&w.top===P||E!==void 0&&w.bottom===E)return}}m()});l({updatePosition:g,lazyUpdatePosition:v}),pe(()=>e.target,$=>{const w=$?.()||null;s.prevTarget!==w&&(e0(c),w&&(Jh(w,c),g()),s.prevTarget=w)}),pe(()=>[e.offsetTop,e.offsetBottom],g),Be(()=>{const{target:$}=e;$&&(s.timeout=setTimeout(()=>{Jh($(),c),g()}))}),Wn(()=>{p()}),Mn(()=>{clearTimeout(s.timeout),e0(c),g.cancel(),v.cancel()});const{prefixCls:y}=Te(\"affix\",e),[b,S]=OM(y);return()=>{var $;const{affixStyle:w,placeholderStyle:C,status:_}=s,x=re({[y.value]:w,[S.value]:!0}),P=lt(e,[\"prefixCls\",\"offsetTop\",\"offsetBottom\",\"target\",\"onChange\",\"onTestUpdatePosition\"]);return b(f(bo,{onResize:g},{default:()=>[f(\"div\",A(A(A({},P),r),{},{ref:a,\"data-measure-status\":_}),[w&&f(\"div\",{style:C,\"aria-hidden\":\"true\"},null),f(\"div\",{class:x,ref:i,style:w},[($=n.default)===null||$===void 0?void 0:$.call(n)])])]}))}}}),AC=Dt(AM);function p0(e){return typeof e==\"object\"&&e!=null&&e.nodeType===1}function m0(e,t){return(!t||e!==\"hidden\")&&e!==\"visible\"&&e!==\"clip\"}function Kd(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return m0(n.overflowY,t)||m0(n.overflowX,t)||(function(o){var l=(function(r){if(!r.ownerDocument||!r.ownerDocument.defaultView)return null;try{return r.ownerDocument.defaultView.frameElement}catch{return null}})(o);return!!l&&(l.clientHeight<o.scrollHeight||l.clientWidth<o.scrollWidth)})(e)}return!1}function us(e,t,n,o,l,r,a,i){return r<e&&a>t||r>e&&a<t?0:r<=e&&i<=n||a>=t&&i>=n?r-e-o:a>t&&i<n||r<e&&i>n?a-t+l:0}var v0=function(e,t){var n=window,o=t.scrollMode,l=t.block,r=t.inline,a=t.boundary,i=t.skipOverflowHiddenElements,s=typeof a==\"function\"?a:function(be){return be!==a};if(!p0(e))throw new TypeError(\"Invalid target\");for(var c,u,d=document.scrollingElement||document.documentElement,p=[],m=e;p0(m)&&s(m);){if((m=(u=(c=m).parentElement)==null?c.getRootNode().host||null:u)===d){p.push(m);break}m!=null&&m===document.body&&Kd(m)&&!Kd(document.documentElement)||m!=null&&Kd(m,i)&&p.push(m)}for(var g=n.visualViewport?n.visualViewport.width:innerWidth,v=n.visualViewport?n.visualViewport.height:innerHeight,y=window.scrollX||pageXOffset,b=window.scrollY||pageYOffset,S=e.getBoundingClientRect(),$=S.height,w=S.width,C=S.top,_=S.right,x=S.bottom,P=S.left,E=l===\"start\"||l===\"nearest\"?C:l===\"end\"?x:C+$/2,M=r===\"center\"?P+w/2:r===\"end\"?_:P,O=[],R=0;R<p.length;R++){var D=p[R],z=D.getBoundingClientRect(),T=z.height,k=z.width,B=z.top,L=z.right,N=z.bottom,F=z.left;if(o===\"if-needed\"&&C>=0&&P>=0&&x<=v&&_<=g&&C>=B&&x<=N&&P>=F&&_<=L)return O;var j=getComputedStyle(D),H=parseInt(j.borderLeftWidth,10),K=parseInt(j.borderTopWidth,10),G=parseInt(j.borderRightWidth,10),V=parseInt(j.borderBottomWidth,10),q=0,Q=0,oe=\"offsetWidth\"in D?D.offsetWidth-D.clientWidth-H-G:0,le=\"offsetHeight\"in D?D.offsetHeight-D.clientHeight-K-V:0,Y=\"offsetWidth\"in D?D.offsetWidth===0?0:k/D.offsetWidth:0,J=\"offsetHeight\"in D?D.offsetHeight===0?0:T/D.offsetHeight:0;if(d===D)q=l===\"start\"?E:l===\"end\"?E-v:l===\"nearest\"?us(b,b+v,v,K,V,b+E,b+E+$,$):E-v/2,Q=r===\"start\"?M:r===\"center\"?M-g/2:r===\"end\"?M-g:us(y,y+g,g,H,G,y+M,y+M+w,w),q=Math.max(0,q+b),Q=Math.max(0,Q+y);else{q=l===\"start\"?E-B-K:l===\"end\"?E-N+V+le:l===\"nearest\"?us(B,N,T,K,V+le,E,E+$,$):E-(B+T/2)+le/2,Q=r===\"start\"?M-F-H:r===\"center\"?M-(F+k/2)+oe/2:r===\"end\"?M-L+G+oe:us(F,L,k,H,G+oe,M,M+w,w);var ce=D.scrollLeft,ue=D.scrollTop;E+=ue-(q=Math.max(0,Math.min(ue+q/J,D.scrollHeight-T/J+le))),M+=ce-(Q=Math.max(0,Math.min(ce+Q/Y,D.scrollWidth-k/Y+oe)))}O.push({el:D,top:q,left:Q})}return O};function DC(e){return e===Object(e)&&Object.keys(e).length!==0}function DM(e,t){t===void 0&&(t=\"auto\");var n=\"scrollBehavior\"in document.body.style;e.forEach(function(o){var l=o.el,r=o.top,a=o.left;l.scroll&&n?l.scroll({top:r,left:a,behavior:t}):(l.scrollTop=r,l.scrollLeft=a)})}function RM(e){return e===!1?{block:\"end\",inline:\"nearest\"}:DC(e)?e:{block:\"start\",inline:\"nearest\"}}function RC(e,t){var n=e.isConnected||e.ownerDocument.documentElement.contains(e);if(DC(t)&&typeof t.behavior==\"function\")return t.behavior(n?v0(e,t):[]);if(n){var o=RM(t);return DM(v0(e,o),o.behavior)}}function kM(e,t,n,o){const l=n-t;return e/=o/2,e<1?l/2*e*e*e+t:l/2*((e-=2)*e*e+2)+t}function yp(e){return e!=null&&e===e.window}function rv(e,t){var n,o;if(typeof window>\"u\")return 0;const l=\"scrollTop\";let r=0;return yp(e)?r=e.scrollY:e instanceof Document?r=e.documentElement[l]:(e instanceof HTMLElement||e)&&(r=e[l]),e&&!yp(e)&&typeof r!=\"number\"&&(r=(o=((n=e.ownerDocument)!==null&&n!==void 0?n:e).documentElement)===null||o===void 0?void 0:o[l]),r}function av(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{getContainer:n=()=>window,callback:o,duration:l=450}=t,r=n(),a=rv(r),i=Date.now(),s=()=>{const u=Date.now()-i,d=kM(u>l?l:u,a,e,l);yp(r)?r.scrollTo(window.scrollX,d):r instanceof Document?r.documentElement.scrollTop=d:r.scrollTop=d,u<l?Qe(s):typeof o==\"function\"&&o()};Qe(s)}function ds(){}const kC=Symbol(\"anchorContextKey\"),NM=e=>{et(kC,e)},BM=()=>nt(kC,{registerLink:ds,unregisterLink:ds,scrollTo:ds,activeLink:I(()=>\"\"),handleClick:ds,direction:I(()=>\"vertical\")}),LM=e=>{const{componentCls:t,holderOffsetBlock:n,motionDurationSlow:o,lineWidthBold:l,colorPrimary:r,lineType:a,colorSplit:i}=e;return{[`${t}-wrapper`]:{marginBlockStart:-n,paddingBlockStart:n,backgroundColor:\"transparent\",[t]:h(h({},qe(e)),{position:\"relative\",paddingInlineStart:l,[`${t}-link`]:{paddingBlock:e.anchorPaddingBlock,paddingInline:`${e.anchorPaddingInline}px 0`,\"&-title\":h(h({},Xt),{position:\"relative\",display:\"block\",marginBlockEnd:e.anchorTitleBlock,color:e.colorText,transition:`all ${e.motionDurationSlow}`,\"&:only-child\":{marginBlockEnd:0}}),[`&-active > ${t}-link-title`]:{color:e.colorPrimary},[`${t}-link`]:{paddingBlock:e.anchorPaddingBlockSecondary}}}),[`&:not(${t}-wrapper-horizontal)`]:{[t]:{\"&::before\":{position:\"absolute\",left:{_skip_check_:!0,value:0},top:0,height:\"100%\",borderInlineStart:`${l}px ${a} ${i}`,content:'\" \"'},[`${t}-ink`]:{position:\"absolute\",left:{_skip_check_:!0,value:0},display:\"none\",transform:\"translateY(-50%)\",transition:`top ${o} ease-in-out`,width:l,backgroundColor:r,[`&${t}-ink-visible`]:{display:\"inline-block\"}}}},[`${t}-fixed ${t}-ink ${t}-ink`]:{display:\"none\"}}}},FM=e=>{const{componentCls:t,motionDurationSlow:n,lineWidthBold:o,colorPrimary:l}=e;return{[`${t}-wrapper-horizontal`]:{position:\"relative\",\"&::before\":{position:\"absolute\",left:{_skip_check_:!0,value:0},right:{_skip_check_:!0,value:0},bottom:0,borderBottom:`1px ${e.lineType} ${e.colorSplit}`,content:'\" \"'},[t]:{overflowX:\"scroll\",position:\"relative\",display:\"flex\",scrollbarWidth:\"none\",\"&::-webkit-scrollbar\":{display:\"none\"},[`${t}-link:first-of-type`]:{paddingInline:0},[`${t}-ink`]:{position:\"absolute\",bottom:0,transition:`left ${n} ease-in-out, width ${n} ease-in-out`,height:o,backgroundColor:l}}}}},zM=Xe(\"Anchor\",e=>{const{fontSize:t,fontSizeLG:n,padding:o,paddingXXS:l}=e,r=Le(e,{holderOffsetBlock:l,anchorPaddingBlock:l,anchorPaddingBlockSecondary:l/2,anchorPaddingInline:o,anchorTitleBlock:t/14*3,anchorBallSize:n/2});return[LM(r),FM(r)]}),HM=()=>({prefixCls:String,href:String,title:wt(),target:String,customTitleProps:De()}),iv=ne({compatConfig:{MODE:3},name:\"AAnchorLink\",inheritAttrs:!1,props:Je(HM(),{href:\"#\"}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t,l=null;const{handleClick:r,scrollTo:a,unregisterLink:i,registerLink:s,activeLink:c}=BM(),{prefixCls:u}=Te(\"anchor\",e),d=p=>{const{href:m}=e;r(p,{title:l,href:m}),a(m)};return pe(()=>e.href,(p,m)=>{it(()=>{i(m),s(p)})}),Be(()=>{s(e.href)}),ot(()=>{i(e.href)}),()=>{var p;const{href:m,target:g,title:v=n.title,customTitleProps:y={}}=e,b=u.value;l=typeof v==\"function\"?v(y):v;const S=c.value===m,$=re(`${b}-link`,{[`${b}-link-active`]:S},o.class),w=re(`${b}-link-title`,{[`${b}-link-title-active`]:S});return f(\"div\",A(A({},o),{},{class:$}),[f(\"a\",{class:w,href:m,title:typeof l==\"string\"?l:\"\",target:g,onClick:d},[n.customTitle?n.customTitle(y):l]),(p=n.default)===null||p===void 0?void 0:p.call(n)])}}});function jM(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function NC(e,t,n){return n&&jM(e,n),e}function Ws(){return(Ws=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function BC(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function LC(e,t){if(e==null)return{};var n,o,l={},r=Object.keys(e);for(o=0;o<r.length;o++)t.indexOf(n=r[o])>=0||(l[n]=e[n]);return l}function g0(e){return((t=e)!=null&&typeof t==\"object\"&&Array.isArray(t)===!1)==1&&Object.prototype.toString.call(e)===\"[object Object]\";var t}var FC=Object.prototype,zC=FC.toString,WM=FC.hasOwnProperty,HC=/^\\s*function (\\w+)/;function h0(e){var t,n=(t=e?.type)!==null&&t!==void 0?t:e;if(n){var o=n.toString().match(HC);return o?o[1]:\"\"}return\"\"}var Sr=function(e){var t,n;return g0(e)!==!1&&typeof(t=e.constructor)==\"function\"&&g0(n=t.prototype)!==!1&&n.hasOwnProperty(\"isPrototypeOf\")!==!1},VM=function(e){return e},Qn=VM,yi=function(e,t){return WM.call(e,t)},KM=Number.isInteger||function(e){return typeof e==\"number\"&&isFinite(e)&&Math.floor(e)===e},ya=Array.isArray||function(e){return zC.call(e)===\"[object Array]\"},Sa=function(e){return zC.call(e)===\"[object Function]\"},Fc=function(e){return Sr(e)&&yi(e,\"_vueTypes_name\")},jC=function(e){return Sr(e)&&(yi(e,\"type\")||[\"_vueTypes_name\",\"validator\",\"default\",\"required\"].some(function(t){return yi(e,t)}))};function sv(e,t){return Object.defineProperty(e.bind(t),\"__original\",{value:e})}function Or(e,t,n){var o,l=!0,r=\"\";o=Sr(e)?e:{type:e};var a=Fc(o)?o._vueTypes_name+\" - \":\"\";if(jC(o)&&o.type!==null){if(o.type===void 0||o.type===!0||!o.required&&t===void 0)return l;ya(o.type)?(l=o.type.some(function(d){return Or(d,t)===!0}),r=o.type.map(function(d){return h0(d)}).join(\" or \")):l=(r=h0(o))===\"Array\"?ya(t):r===\"Object\"?Sr(t):r===\"String\"||r===\"Number\"||r===\"Boolean\"||r===\"Function\"?(function(d){if(d==null)return\"\";var p=d.constructor.toString().match(HC);return p?p[1]:\"\"})(t)===r:t instanceof o.type}if(!l){var i=a+'value \"'+t+'\" should be of type \"'+r+'\"';return i}if(yi(o,\"validator\")&&Sa(o.validator)){var s=Qn,c=[];if(Qn=function(d){c.push(d)},l=o.validator(t),Qn=s,!l){var u=(c.length>1?\"* \":\"\")+c.join(`\n* `);return c.length=0,u}}return l}function oo(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(l){return l!==void 0||this.default?Sa(l)||Or(this,l)===!0?(this.default=ya(l)?function(){return[].concat(l)}:Sr(l)?function(){return Object.assign({},l)}:l,this):(Qn(this._vueTypes_name+' - invalid default value: \"'+l+'\"'),this):this}}}),o=n.validator;return Sa(o)&&(n.validator=sv(o,n)),n}function Xo(e,t){var n=oo(e,t);return Object.defineProperty(n,\"validate\",{value:function(o){return Sa(this.validator)&&Qn(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info:\n`+JSON.stringify(this)),this.validator=sv(o,this),this}})}function b0(e,t,n){var o,l,r=(o=t,l={},Object.getOwnPropertyNames(o).forEach(function(d){l[d]=Object.getOwnPropertyDescriptor(o,d)}),Object.defineProperties({},l));if(r._vueTypes_name=e,!Sr(n))return r;var a,i,s=n.validator,c=LC(n,[\"validator\"]);if(Sa(s)){var u=r.validator;u&&(u=(i=(a=u).__original)!==null&&i!==void 0?i:a),r.validator=sv(u?function(d){return u.call(this,d)&&s.call(this,d)}:s,r)}return Object.assign(r,c)}function ju(e){return e.replace(/^(?!\\s*$)/gm,\"  \")}var GM=function(){return Xo(\"any\",{})},XM=function(){return Xo(\"function\",{type:Function})},UM=function(){return Xo(\"boolean\",{type:Boolean})},YM=function(){return Xo(\"string\",{type:String})},qM=function(){return Xo(\"number\",{type:Number})},ZM=function(){return Xo(\"array\",{type:Array})},QM=function(){return Xo(\"object\",{type:Object})},JM=function(){return oo(\"integer\",{type:Number,validator:function(e){return KM(e)}})},e3=function(){return oo(\"symbol\",{validator:function(e){return typeof e==\"symbol\"}})};function t3(e,t){if(t===void 0&&(t=\"custom validation failed\"),typeof e!=\"function\")throw new TypeError(\"[VueTypes error]: You must provide a function as argument\");return oo(e.name||\"<<anonymous function>>\",{validator:function(n){var o=e(n);return o||Qn(this._vueTypes_name+\" - \"+t),o}})}function n3(e){if(!ya(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument.\");var t='oneOf - value should be one of \"'+e.join('\", \"')+'\".',n=e.reduce(function(o,l){if(l!=null){var r=l.constructor;o.indexOf(r)===-1&&o.push(r)}return o},[]);return oo(\"oneOf\",{type:n.length>0?n:void 0,validator:function(o){var l=e.indexOf(o)!==-1;return l||Qn(t),l}})}function o3(e){if(!ya(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument\");for(var t=!1,n=[],o=0;o<e.length;o+=1){var l=e[o];if(jC(l)){if(Fc(l)&&l._vueTypes_name===\"oneOf\"){n=n.concat(l.type);continue}if(Sa(l.validator)&&(t=!0),l.type!==!0&&l.type){n=n.concat(l.type);continue}}n.push(l)}return n=n.filter(function(r,a){return n.indexOf(r)===a}),oo(\"oneOfType\",t?{type:n,validator:function(r){var a=[],i=e.some(function(s){var c=Or(Fc(s)&&s._vueTypes_name===\"oneOf\"?s.type||null:s,r);return typeof c==\"string\"&&a.push(c),c===!0});return i||Qn(\"oneOfType - provided value does not match any of the \"+a.length+` passed-in validators:\n`+ju(a.join(`\n`))),i}}:{type:n})}function l3(e){return oo(\"arrayOf\",{type:Array,validator:function(t){var n,o=t.every(function(l){return(n=Or(e,l))===!0});return o||Qn(`arrayOf - value validation error:\n`+ju(n)),o}})}function r3(e){return oo(\"instanceOf\",{type:e})}function a3(e){return oo(\"objectOf\",{type:Object,validator:function(t){var n,o=Object.keys(t).every(function(l){return(n=Or(e,t[l]))===!0});return o||Qn(`objectOf - value validation error:\n`+ju(n)),o}})}function i3(e){var t=Object.keys(e),n=t.filter(function(l){var r;return!!(!((r=e[l])===null||r===void 0)&&r.required)}),o=oo(\"shape\",{type:Object,validator:function(l){var r=this;if(!Sr(l))return!1;var a=Object.keys(l);if(n.length>0&&n.some(function(s){return a.indexOf(s)===-1})){var i=n.filter(function(s){return a.indexOf(s)===-1});return Qn(i.length===1?'shape - required property \"'+i[0]+'\" is not defined.':'shape - required properties \"'+i.join('\", \"')+'\" are not defined.'),!1}return a.every(function(s){if(t.indexOf(s)===-1)return r._vueTypes_isLoose===!0||(Qn('shape - shape definition does not include a \"'+s+'\" property. Allowed keys: \"'+t.join('\", \"')+'\".'),!1);var c=Or(e[s],l[s]);return typeof c==\"string\"&&Qn('shape - \"'+s+`\" property validation error:\n `+ju(c)),c===!0})}});return Object.defineProperty(o,\"_vueTypes_isLoose\",{writable:!0,value:!1}),Object.defineProperty(o,\"loose\",{get:function(){return this._vueTypes_isLoose=!0,this}}),o}var Lo=(function(){function e(){}return e.extend=function(t){var n=this;if(ya(t))return t.forEach(function(d){return n.extend(d)}),this;var o=t.name,l=t.validate,r=l!==void 0&&l,a=t.getter,i=a!==void 0&&a,s=LC(t,[\"name\",\"validate\",\"getter\"]);if(yi(this,o))throw new TypeError('[VueTypes error]: Type \"'+o+'\" already defined');var c,u=s.type;return Fc(u)?(delete s.type,Object.defineProperty(this,o,i?{get:function(){return b0(o,u,s)}}:{value:function(){var d,p=b0(o,u,s);return p.validator&&(p.validator=(d=p.validator).bind.apply(d,[p].concat([].slice.call(arguments)))),p}})):(c=i?{get:function(){var d=Object.assign({},s);return r?Xo(o,d):oo(o,d)},enumerable:!0}:{value:function(){var d,p,m=Object.assign({},s);return d=r?Xo(o,m):oo(o,m),m.validator&&(d.validator=(p=m.validator).bind.apply(p,[d].concat([].slice.call(arguments)))),d},enumerable:!0},Object.defineProperty(this,o,c))},NC(e,null,[{key:\"any\",get:function(){return GM()}},{key:\"func\",get:function(){return XM().def(this.defaults.func)}},{key:\"bool\",get:function(){return UM().def(this.defaults.bool)}},{key:\"string\",get:function(){return YM().def(this.defaults.string)}},{key:\"number\",get:function(){return qM().def(this.defaults.number)}},{key:\"array\",get:function(){return ZM().def(this.defaults.array)}},{key:\"object\",get:function(){return QM().def(this.defaults.object)}},{key:\"integer\",get:function(){return JM().def(this.defaults.integer)}},{key:\"symbol\",get:function(){return e3()}}]),e})();function WC(e){var t;return e===void 0&&(e={func:function(){},bool:!0,string:\"\",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=(function(n){function o(){return n.apply(this,arguments)||this}return BC(o,n),NC(o,null,[{key:\"sensibleDefaults\",get:function(){return Ws({},this.defaults)},set:function(l){this.defaults=l!==!1?Ws({},l!==!0?l:e):{}}}]),o})(Lo)).defaults=Ws({},e),t}Lo.defaults={},Lo.custom=t3,Lo.oneOf=n3,Lo.instanceOf=r3,Lo.oneOfType=o3,Lo.arrayOf=l3,Lo.objectOf=a3,Lo.shape=i3,Lo.utils={validate:function(e,t){return Or(t,e)===!0},toType:function(e,t,n){return n===void 0&&(n=!1),n?Xo(e,t):oo(e,t)}};(function(e){function t(){return e.apply(this,arguments)||this}return BC(t,e),t})(WC());const W=WC({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});W.extend([{name:\"looseBool\",getter:!0,type:Boolean,default:void 0},{name:\"style\",getter:!0,type:[String,Object],default:void 0},{name:\"VueNode\",getter:!0,type:null}]);function VC(e){return e.default=void 0,e}const Ot=(e,t,n)=>{Qm(e,`[ant-design-vue: ${t}] ${n}`)};function s3(){return window}function y0(e,t){if(!e.getClientRects().length)return 0;const n=e.getBoundingClientRect();return n.width||n.height?t===window?(t=e.ownerDocument.documentElement,n.top-t.clientTop):n.top-t.getBoundingClientRect().top:n.top}const S0=/#([\\S ]+)$/,c3=()=>({prefixCls:String,offsetTop:Number,bounds:Number,affix:{type:Boolean,default:!0},showInkInFixed:{type:Boolean,default:!1},getContainer:Function,wrapperClass:String,wrapperStyle:{type:Object,default:void 0},getCurrentAnchor:Function,targetOffset:Number,items:ct(),direction:W.oneOf([\"vertical\",\"horizontal\"]).def(\"vertical\"),onChange:Function,onClick:Function}),rr=ne({compatConfig:{MODE:3},name:\"AAnchor\",inheritAttrs:!1,props:c3(),setup(e,t){let{emit:n,attrs:o,slots:l,expose:r}=t;const{prefixCls:a,getTargetContainer:i,direction:s}=Te(\"anchor\",e),c=I(()=>{var x;return(x=e.direction)!==null&&x!==void 0?x:\"vertical\"}),u=Z(null),d=Z(),p=gt({links:[],scrollContainer:null,scrollEvent:null,animating:!1}),m=Z(null),g=I(()=>{const{getContainer:x}=e;return x||i?.value||s3}),v=function(){let x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5;const E=[],M=g.value();return p.links.forEach(O=>{const R=S0.exec(O.toString());if(!R)return;const D=document.getElementById(R[1]);if(D){const z=y0(D,M);z<x+P&&E.push({link:O,top:z})}}),E.length?E.reduce((R,D)=>D.top>R.top?D:R).link:\"\"},y=x=>{const{getCurrentAnchor:P}=e;m.value!==x&&(m.value=typeof P==\"function\"?P(x):x,n(\"change\",x))},b=x=>{const{offsetTop:P,targetOffset:E}=e;y(x);const M=S0.exec(x);if(!M)return;const O=document.getElementById(M[1]);if(!O)return;const R=g.value(),D=rv(R),z=y0(O,R);let T=D+z;T-=E!==void 0?E:P||0,p.animating=!0,av(T,{callback:()=>{p.animating=!1},getContainer:g.value})};r({scrollTo:b});const S=()=>{if(p.animating)return;const{offsetTop:x,bounds:P,targetOffset:E}=e,M=v(E!==void 0?E:x||0,P);y(M)},$=()=>{const x=d.value.querySelector(`.${a.value}-link-title-active`);if(x&&u.value){const P=c.value===\"horizontal\";u.value.style.top=P?\"\":`${x.offsetTop+x.clientHeight/2}px`,u.value.style.height=P?\"\":`${x.clientHeight}px`,u.value.style.left=P?`${x.offsetLeft}px`:\"\",u.value.style.width=P?`${x.clientWidth}px`:\"\",P&&RC(x,{scrollMode:\"if-needed\",block:\"nearest\"})}};NM({registerLink:x=>{p.links.includes(x)||p.links.push(x)},unregisterLink:x=>{const P=p.links.indexOf(x);P!==-1&&p.links.splice(P,1)},activeLink:m,scrollTo:b,handleClick:(x,P)=>{n(\"click\",x,P)},direction:c}),Be(()=>{it(()=>{const x=g.value();p.scrollContainer=x,p.scrollEvent=Rt(p.scrollContainer,\"scroll\",S),S()})}),ot(()=>{p.scrollEvent&&p.scrollEvent.remove()}),Wn(()=>{if(p.scrollEvent){const x=g.value();p.scrollContainer!==x&&(p.scrollContainer=x,p.scrollEvent.remove(),p.scrollEvent=Rt(p.scrollContainer,\"scroll\",S),S())}$()});const w=x=>Array.isArray(x)?x.map(P=>{const{children:E,key:M,href:O,target:R,class:D,style:z,title:T}=P;return f(iv,{key:M,href:O,target:R,class:D,style:z,title:T,customTitleProps:P},{default:()=>[c.value===\"vertical\"?w(E):null],customTitle:l.customTitle})}):null,[C,_]=zM(a);return()=>{var x;const{offsetTop:P,affix:E,showInkInFixed:M}=e,O=a.value,R=re(`${O}-ink`,{[`${O}-ink-visible`]:m.value}),D=re(_.value,e.wrapperClass,`${O}-wrapper`,{[`${O}-wrapper-horizontal`]:c.value===\"horizontal\",[`${O}-rtl`]:s.value===\"rtl\"}),z=re(O,{[`${O}-fixed`]:!E&&!M}),T=h({maxHeight:P?`calc(100vh - ${P}px)`:\"100vh\"},e.wrapperStyle),k=f(\"div\",{class:D,style:T,ref:d},[f(\"div\",{class:z},[f(\"span\",{class:R,ref:u},null),Array.isArray(e.items)?w(e.items):(x=l.default)===null||x===void 0?void 0:x.call(l)])]);return C(E?f(AC,A(A({},o),{},{offsetTop:P,target:g.value}),{default:()=>[k]}):k)}}});rr.Link=iv;rr.install=function(e){return e.component(rr.name,rr),e.component(rr.Link.name,rr.Link),e};function $0(e,t){const{key:n}=e;let o;return\"value\"in e&&({value:o}=e),n??(o!==void 0?o:`rc-index-key-${t}`)}function KC(e,t){const{label:n,value:o,options:l}=e||{};return{label:n||(t?\"children\":\"label\"),value:o||\"value\",options:l||\"options\"}}function u3(e){let{fieldNames:t,childrenAsData:n}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const o=[],{label:l,value:r,options:a}=KC(t,!1);function i(s,c){s.forEach(u=>{const d=u[l];if(c||!(a in u)){const p=u[r];o.push({key:$0(u,o.length),groupOption:c,data:u,label:d,value:p})}else{let p=d;p===void 0&&n&&(p=u.label),o.push({key:$0(u,o.length),group:!0,data:u,label:p}),i(u[a],!0)}})}return i(e,!1),o}function Sp(e){const t=h({},e);return\"props\"in t||Object.defineProperty(t,\"props\",{get(){return t}}),t}function d3(e,t){if(!t||!t.length)return null;let n=!1;function o(r,a){let[i,...s]=a;if(!i)return[r];const c=r.split(i);return n=n||c.length>1,c.reduce((u,d)=>[...u,...o(d,s)],[]).filter(u=>u)}const l=o(e,t);return n?l:null}function f3(){return\"\"}function p3(e){return e?e.ownerDocument:window.document}function GC(){}const XC=()=>({action:W.oneOfType([W.string,W.arrayOf(W.string)]).def([]),showAction:W.any.def([]),hideAction:W.any.def([]),getPopupClassNameFromAlign:W.any.def(f3),onPopupVisibleChange:Function,afterPopupVisibleChange:W.func.def(GC),popup:W.any,arrow:W.bool.def(!0),popupStyle:{type:Object,default:void 0},prefixCls:W.string.def(\"rc-trigger-popup\"),popupClassName:W.string.def(\"\"),popupPlacement:String,builtinPlacements:W.object,popupTransitionName:String,popupAnimation:W.any,mouseEnterDelay:W.number.def(0),mouseLeaveDelay:W.number.def(.1),zIndex:Number,focusDelay:W.number.def(0),blurDelay:W.number.def(.15),getPopupContainer:Function,getDocument:W.func.def(p3),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:W.object.def(()=>({})),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function}),cv={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,arrow:{type:Boolean,default:!0},animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},m3=h(h({},cv),{mobile:{type:Object}}),v3=h(h({},cv),{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function uv(e){let{prefixCls:t,animation:n,transitionName:o}=e;return n?{name:`${t}-${n}`}:o?{name:o}:{}}function UC(e){const{prefixCls:t,visible:n,zIndex:o,mask:l,maskAnimation:r,maskTransitionName:a}=e;if(!l)return null;let i={};return(a||r)&&(i=uv({prefixCls:t,transitionName:a,animation:r})),f(cn,A({appear:!0},i),{default:()=>[xn(f(\"div\",{style:{zIndex:o},class:`${t}-mask`},null),[[TI(\"if\"),n]])]})}UC.displayName=\"Mask\";const g3=ne({compatConfig:{MODE:3},name:\"MobilePopupInner\",inheritAttrs:!1,props:m3,emits:[\"mouseenter\",\"mouseleave\",\"mousedown\",\"touchstart\",\"align\"],setup(e,t){let{expose:n,slots:o}=t;const l=Z();return n({forceAlign:()=>{},getElement:()=>l.value}),()=>{var r;const{zIndex:a,visible:i,prefixCls:s,mobile:{popupClassName:c,popupStyle:u,popupMotion:d={},popupRender:p}={}}=e,m=h({zIndex:a},u);let g=xt((r=o.default)===null||r===void 0?void 0:r.call(o));g.length>1&&(g=f(\"div\",{class:`${s}-content`},[g])),p&&(g=p(g));const v=re(s,c);return f(cn,A({ref:l},d),{default:()=>[i?f(\"div\",{class:v,style:m},[g]):null]})}}});var h3=function(e,t,n,o){function l(r){return r instanceof n?r:new n(function(a){a(r)})}return new(n||(n=Promise))(function(r,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?r(u.value):l(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})};const C0=[\"measure\",\"align\",null,\"motion\"],b3=(e,t)=>{const n=ee(null),o=ee(),l=ee(!1);function r(s){l.value||(n.value=s)}function a(){Qe.cancel(o.value)}function i(s){a(),o.value=Qe(()=>{let c=n.value;switch(n.value){case\"align\":c=\"motion\";break;case\"motion\":c=\"stable\";break}r(c),s?.()})}return pe(e,()=>{r(\"measure\")},{immediate:!0,flush:\"post\"}),Be(()=>{pe(n,()=>{switch(n.value){case\"measure\":t();break}n.value&&(o.value=Qe(()=>h3(void 0,void 0,void 0,function*(){const s=C0.indexOf(n.value),c=C0[s+1];c&&s!==-1&&r(c)})))},{immediate:!0,flush:\"post\"})}),ot(()=>{l.value=!0,a()}),[n,i]},y3=e=>{const t=ee({width:0,height:0});function n(l){t.value={width:l.offsetWidth,height:l.offsetHeight}}return[I(()=>{const l={};if(e.value){const{width:r,height:a}=t.value;e.value.indexOf(\"height\")!==-1&&a?l.height=`${a}px`:e.value.indexOf(\"minHeight\")!==-1&&a&&(l.minHeight=`${a}px`),e.value.indexOf(\"width\")!==-1&&r?l.width=`${r}px`:e.value.indexOf(\"minWidth\")!==-1&&r&&(l.minWidth=`${r}px`)}return l}),n]};function x0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,o)}return n}function w0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?x0(Object(n),!0).forEach(function(o){S3(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x0(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function $p(e){\"@babel/helpers - typeof\";return $p=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},$p(e)}function S3(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Wa,$3={Webkit:\"-webkit-\",Moz:\"-moz-\",ms:\"-ms-\",O:\"-o-\"};function zc(){if(Wa!==void 0)return Wa;Wa=\"\";var e=document.createElement(\"p\").style,t=\"Transform\";for(var n in $3)n+t in e&&(Wa=n);return Wa}function YC(){return zc()?\"\".concat(zc(),\"TransitionProperty\"):\"transitionProperty\"}function Wu(){return zc()?\"\".concat(zc(),\"Transform\"):\"transform\"}function _0(e,t){var n=YC();n&&(e.style[n]=t,n!==\"transitionProperty\"&&(e.style.transitionProperty=t))}function Gd(e,t){var n=Wu();n&&(e.style[n]=t,n!==\"transform\"&&(e.style.transform=t))}function C3(e){return e.style.transitionProperty||e.style[YC()]}function x3(e){var t=window.getComputedStyle(e,null),n=t.getPropertyValue(\"transform\")||t.getPropertyValue(Wu());if(n&&n!==\"none\"){var o=n.replace(/[^0-9\\-.,]/g,\"\").split(\",\");return{x:parseFloat(o[12]||o[4],0),y:parseFloat(o[13]||o[5],0)}}return{x:0,y:0}}var w3=/matrix\\((.*)\\)/,_3=/matrix3d\\((.*)\\)/;function I3(e,t){var n=window.getComputedStyle(e,null),o=n.getPropertyValue(\"transform\")||n.getPropertyValue(Wu());if(o&&o!==\"none\"){var l,r=o.match(w3);if(r)r=r[1],l=r.split(\",\").map(function(i){return parseFloat(i,10)}),l[4]=t.x,l[5]=t.y,Gd(e,\"matrix(\".concat(l.join(\",\"),\")\"));else{var a=o.match(_3)[1];l=a.split(\",\").map(function(i){return parseFloat(i,10)}),l[12]=t.x,l[13]=t.y,Gd(e,\"matrix3d(\".concat(l.join(\",\"),\")\"))}}else Gd(e,\"translateX(\".concat(t.x,\"px) translateY(\").concat(t.y,\"px) translateZ(0)\"))}var P3=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,ki;function I0(e){var t=e.style.display;e.style.display=\"none\",e.offsetHeight,e.style.display=t}function na(e,t,n){var o=n;if($p(t)===\"object\"){for(var l in t)t.hasOwnProperty(l)&&na(e,l,t[l]);return}if(typeof o<\"u\"){typeof o==\"number\"&&(o=\"\".concat(o,\"px\")),e.style[t]=o;return}return ki(e,t)}function T3(e){var t,n,o,l=e.ownerDocument,r=l.body,a=l&&l.documentElement;return t=e.getBoundingClientRect(),n=Math.floor(t.left),o=Math.floor(t.top),n-=a.clientLeft||r.clientLeft||0,o-=a.clientTop||r.clientTop||0,{left:n,top:o}}function qC(e,t){var n=e[\"page\".concat(t?\"Y\":\"X\",\"Offset\")],o=\"scroll\".concat(t?\"Top\":\"Left\");if(typeof n!=\"number\"){var l=e.document;n=l.documentElement[o],typeof n!=\"number\"&&(n=l.body[o])}return n}function ZC(e){return qC(e)}function QC(e){return qC(e,!0)}function Si(e){var t=T3(e),n=e.ownerDocument,o=n.defaultView||n.parentWindow;return t.left+=ZC(o),t.top+=QC(o),t}function dv(e){return e!=null&&e==e.window}function JC(e){return dv(e)?e.document:e.nodeType===9?e:e.ownerDocument}function O3(e,t,n){var o=n,l=\"\",r=JC(e);return o=o||r.defaultView.getComputedStyle(e,null),o&&(l=o.getPropertyValue(t)||o[t]),l}var E3=new RegExp(\"^(\".concat(P3,\")(?!px)[a-z%]+$\"),\"i\"),M3=/^(top|right|bottom|left)$/,Xd=\"currentStyle\",Ud=\"runtimeStyle\",ql=\"left\",A3=\"px\";function D3(e,t){var n=e[Xd]&&e[Xd][t];if(E3.test(n)&&!M3.test(t)){var o=e.style,l=o[ql],r=e[Ud][ql];e[Ud][ql]=e[Xd][ql],o[ql]=t===\"fontSize\"?\"1em\":n||0,n=o.pixelLeft+A3,o[ql]=l,e[Ud][ql]=r}return n===\"\"?\"auto\":n}typeof window<\"u\"&&(ki=window.getComputedStyle?O3:D3);function fs(e,t){return e===\"left\"?t.useCssRight?\"right\":e:t.useCssBottom?\"bottom\":e}function P0(e){if(e===\"left\")return\"right\";if(e===\"right\")return\"left\";if(e===\"top\")return\"bottom\";if(e===\"bottom\")return\"top\"}function T0(e,t,n){na(e,\"position\")===\"static\"&&(e.style.position=\"relative\");var o=-999,l=-999,r=fs(\"left\",n),a=fs(\"top\",n),i=P0(r),s=P0(a);r!==\"left\"&&(o=999),a!==\"top\"&&(l=999);var c=\"\",u=Si(e);(\"left\"in t||\"top\"in t)&&(c=C3(e)||\"\",_0(e,\"none\")),\"left\"in t&&(e.style[i]=\"\",e.style[r]=\"\".concat(o,\"px\")),\"top\"in t&&(e.style[s]=\"\",e.style[a]=\"\".concat(l,\"px\")),I0(e);var d=Si(e),p={};for(var m in t)if(t.hasOwnProperty(m)){var g=fs(m,n),v=m===\"left\"?o:l,y=u[m]-d[m];g===m?p[g]=v+y:p[g]=v-y}na(e,p),I0(e),(\"left\"in t||\"top\"in t)&&_0(e,c);var b={};for(var S in t)if(t.hasOwnProperty(S)){var $=fs(S,n),w=t[S]-u[S];S===$?b[$]=p[$]+w:b[$]=p[$]-w}na(e,b)}function R3(e,t){var n=Si(e),o=x3(e),l={x:o.x,y:o.y};\"left\"in t&&(l.x=o.x+t.left-n.left),\"top\"in t&&(l.y=o.y+t.top-n.top),I3(e,l)}function k3(e,t,n){if(n.ignoreShake){var o=Si(e),l=o.left.toFixed(0),r=o.top.toFixed(0),a=t.left.toFixed(0),i=t.top.toFixed(0);if(l===a&&r===i)return}n.useCssRight||n.useCssBottom?T0(e,t,n):n.useCssTransform&&Wu()in document.body.style?R3(e,t):T0(e,t,n)}function fv(e,t){for(var n=0;n<e.length;n++)t(e[n])}function e1(e){return ki(e,\"boxSizing\")===\"border-box\"}var N3=[\"margin\",\"border\",\"padding\"],Cp=-1,B3=2,xp=1,L3=0;function F3(e,t,n){var o={},l=e.style,r;for(r in t)t.hasOwnProperty(r)&&(o[r]=l[r],l[r]=t[r]);n.call(e);for(r in t)t.hasOwnProperty(r)&&(l[r]=o[r])}function Xa(e,t,n){var o=0,l,r,a;for(r=0;r<t.length;r++)if(l=t[r],l)for(a=0;a<n.length;a++){var i=void 0;l===\"border\"?i=\"\".concat(l).concat(n[a],\"Width\"):i=l+n[a],o+=parseFloat(ki(e,i))||0}return o}var jo={getParent:function(t){var n=t;do n.nodeType===11&&n.host?n=n.host:n=n.parentNode;while(n&&n.nodeType!==1&&n.nodeType!==9);return n}};fv([\"Width\",\"Height\"],function(e){jo[\"doc\".concat(e)]=function(t){var n=t.document;return Math.max(n.documentElement[\"scroll\".concat(e)],n.body[\"scroll\".concat(e)],jo[\"viewport\".concat(e)](n))},jo[\"viewport\".concat(e)]=function(t){var n=\"client\".concat(e),o=t.document,l=o.body,r=o.documentElement,a=r[n];return o.compatMode===\"CSS1Compat\"&&a||l&&l[n]||a}});function O0(e,t,n){var o=n;if(dv(e))return t===\"width\"?jo.viewportWidth(e):jo.viewportHeight(e);if(e.nodeType===9)return t===\"width\"?jo.docWidth(e):jo.docHeight(e);var l=t===\"width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],r=Math.floor(t===\"width\"?e.getBoundingClientRect().width:e.getBoundingClientRect().height),a=e1(e),i=0;(r==null||r<=0)&&(r=void 0,i=ki(e,t),(i==null||Number(i)<0)&&(i=e.style[t]||0),i=Math.floor(parseFloat(i))||0),o===void 0&&(o=a?xp:Cp);var s=r!==void 0||a,c=r||i;return o===Cp?s?c-Xa(e,[\"border\",\"padding\"],l):i:s?o===xp?c:c+(o===B3?-Xa(e,[\"border\"],l):Xa(e,[\"margin\"],l)):i+Xa(e,N3.slice(o),l)}var z3={position:\"absolute\",visibility:\"hidden\",display:\"block\"};function E0(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var o,l=t[0];return l.offsetWidth!==0?o=O0.apply(void 0,t):F3(l,z3,function(){o=O0.apply(void 0,t)}),o}fv([\"width\",\"height\"],function(e){var t=e.charAt(0).toUpperCase()+e.slice(1);jo[\"outer\".concat(t)]=function(o,l){return o&&E0(o,e,l?L3:xp)};var n=e===\"width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"];jo[e]=function(o,l){var r=l;if(r!==void 0){if(o){var a=e1(o);return a&&(r+=Xa(o,[\"padding\",\"border\"],n)),na(o,e,r)}return}return o&&E0(o,e,Cp)}});function t1(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var ut={getWindow:function(t){if(t&&t.document&&t.setTimeout)return t;var n=t.ownerDocument||t;return n.defaultView||n.parentWindow},getDocument:JC,offset:function(t,n,o){if(typeof n<\"u\")k3(t,n,o||{});else return Si(t)},isWindow:dv,each:fv,css:na,clone:function(t){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);var l=t.overflow;if(l)for(n in t)t.hasOwnProperty(n)&&(o.overflow[n]=t.overflow[n]);return o},mix:t1,getWindowScrollLeft:function(t){return ZC(t)},getWindowScrollTop:function(t){return QC(t)},merge:function(){for(var t={},n=0;n<arguments.length;n++)ut.mix(t,n<0||arguments.length<=n?void 0:arguments[n]);return t},viewportWidth:0,viewportHeight:0};t1(ut,jo);var Yd=ut.getParent;function wp(e){if(ut.isWindow(e)||e.nodeType===9)return null;var t=ut.getDocument(e),n=t.body,o,l=ut.css(e,\"position\"),r=l===\"fixed\"||l===\"absolute\";if(!r)return e.nodeName.toLowerCase()===\"html\"?null:Yd(e);for(o=Yd(e);o&&o!==n&&o.nodeType!==9;o=Yd(o))if(l=ut.css(o,\"position\"),l!==\"static\")return o;return null}var M0=ut.getParent;function H3(e){if(ut.isWindow(e)||e.nodeType===9)return!1;var t=ut.getDocument(e),n=t.body,o=null;for(o=M0(e);o&&o!==n&&o!==t;o=M0(o)){var l=ut.css(o,\"position\");if(l===\"fixed\")return!0}return!1}function pv(e,t){for(var n={left:0,right:1/0,top:0,bottom:1/0},o=wp(e),l=ut.getDocument(e),r=l.defaultView||l.parentWindow,a=l.body,i=l.documentElement;o;){if((navigator.userAgent.indexOf(\"MSIE\")===-1||o.clientWidth!==0)&&o!==a&&o!==i&&ut.css(o,\"overflow\")!==\"visible\"){var s=ut.offset(o);s.left+=o.clientLeft,s.top+=o.clientTop,n.top=Math.max(n.top,s.top),n.right=Math.min(n.right,s.left+o.clientWidth),n.bottom=Math.min(n.bottom,s.top+o.clientHeight),n.left=Math.max(n.left,s.left)}else if(o===a||o===i)break;o=wp(o)}var c=null;if(!ut.isWindow(e)&&e.nodeType!==9){c=e.style.position;var u=ut.css(e,\"position\");u===\"absolute\"&&(e.style.position=\"fixed\")}var d=ut.getWindowScrollLeft(r),p=ut.getWindowScrollTop(r),m=ut.viewportWidth(r),g=ut.viewportHeight(r),v=i.scrollWidth,y=i.scrollHeight,b=window.getComputedStyle(a);if(b.overflowX===\"hidden\"&&(v=r.innerWidth),b.overflowY===\"hidden\"&&(y=r.innerHeight),e.style&&(e.style.position=c),t||H3(e))n.left=Math.max(n.left,d),n.top=Math.max(n.top,p),n.right=Math.min(n.right,d+m),n.bottom=Math.min(n.bottom,p+g);else{var S=Math.max(v,d+m);n.right=Math.min(n.right,S);var $=Math.max(y,p+g);n.bottom=Math.min(n.bottom,$)}return n.top>=0&&n.left>=0&&n.bottom>n.top&&n.right>n.left?n:null}function j3(e,t,n,o){var l=ut.clone(e),r={width:t.width,height:t.height};return o.adjustX&&l.left<n.left&&(l.left=n.left),o.resizeWidth&&l.left>=n.left&&l.left+r.width>n.right&&(r.width-=l.left+r.width-n.right),o.adjustX&&l.left+r.width>n.right&&(l.left=Math.max(n.right-r.width,n.left)),o.adjustY&&l.top<n.top&&(l.top=n.top),o.resizeHeight&&l.top>=n.top&&l.top+r.height>n.bottom&&(r.height-=l.top+r.height-n.bottom),o.adjustY&&l.top+r.height>n.bottom&&(l.top=Math.max(n.bottom-r.height,n.top)),ut.mix(l,r)}function mv(e){var t,n,o;if(!ut.isWindow(e)&&e.nodeType!==9)t=ut.offset(e),n=ut.outerWidth(e),o=ut.outerHeight(e);else{var l=ut.getWindow(e);t={left:ut.getWindowScrollLeft(l),top:ut.getWindowScrollTop(l)},n=ut.viewportWidth(l),o=ut.viewportHeight(l)}return t.width=n,t.height=o,t}function A0(e,t){var n=t.charAt(0),o=t.charAt(1),l=e.width,r=e.height,a=e.left,i=e.top;return n===\"c\"?i+=r/2:n===\"b\"&&(i+=r),o===\"c\"?a+=l/2:o===\"r\"&&(a+=l),{left:a,top:i}}function ps(e,t,n,o,l){var r=A0(t,n[1]),a=A0(e,n[0]),i=[a.left-r.left,a.top-r.top];return{left:Math.round(e.left-i[0]+o[0]-l[0]),top:Math.round(e.top-i[1]+o[1]-l[1])}}function D0(e,t,n){return e.left<n.left||e.left+t.width>n.right}function R0(e,t,n){return e.top<n.top||e.top+t.height>n.bottom}function W3(e,t,n){return e.left>n.right||e.left+t.width<n.left}function V3(e,t,n){return e.top>n.bottom||e.top+t.height<n.top}function ms(e,t,n){var o=[];return ut.each(e,function(l){o.push(l.replace(t,function(r){return n[r]}))}),o}function vs(e,t){return e[t]=-e[t],e}function k0(e,t){var n;return/%$/.test(e)?n=parseInt(e.substring(0,e.length-1),10)/100*t:n=parseInt(e,10),n||0}function N0(e,t){e[0]=k0(e[0],t.width),e[1]=k0(e[1],t.height)}function n1(e,t,n,o){var l=n.points,r=n.offset||[0,0],a=n.targetOffset||[0,0],i=n.overflow,s=n.source||e;r=[].concat(r),a=[].concat(a),i=i||{};var c={},u=0,d=!!(i&&i.alwaysByViewport),p=pv(s,d),m=mv(s);N0(r,m),N0(a,t);var g=ps(m,t,l,r,a),v=ut.merge(m,g);if(p&&(i.adjustX||i.adjustY)&&o){if(i.adjustX&&D0(g,m,p)){var y=ms(l,/[lr]/gi,{l:\"r\",r:\"l\"}),b=vs(r,0),S=vs(a,0),$=ps(m,t,y,b,S);W3($,m,p)||(u=1,l=y,r=b,a=S)}if(i.adjustY&&R0(g,m,p)){var w=ms(l,/[tb]/gi,{t:\"b\",b:\"t\"}),C=vs(r,1),_=vs(a,1),x=ps(m,t,w,C,_);V3(x,m,p)||(u=1,l=w,r=C,a=_)}u&&(g=ps(m,t,l,r,a),ut.mix(v,g));var P=D0(g,m,p),E=R0(g,m,p);if(P||E){var M=l;P&&(M=ms(l,/[lr]/gi,{l:\"r\",r:\"l\"})),E&&(M=ms(l,/[tb]/gi,{t:\"b\",b:\"t\"})),l=M,r=n.offset||[0,0],a=n.targetOffset||[0,0]}c.adjustX=i.adjustX&&P,c.adjustY=i.adjustY&&E,(c.adjustX||c.adjustY)&&(v=j3(g,m,p,c))}return v.width!==m.width&&ut.css(s,\"width\",ut.width(s)+v.width-m.width),v.height!==m.height&&ut.css(s,\"height\",ut.height(s)+v.height-m.height),ut.offset(s,{left:v.left,top:v.top},{useCssRight:n.useCssRight,useCssBottom:n.useCssBottom,useCssTransform:n.useCssTransform,ignoreShake:n.ignoreShake}),{points:l,offset:r,targetOffset:a,overflow:c}}function K3(e,t){var n=pv(e,t),o=mv(e);return!n||o.left+o.width<=n.left||o.top+o.height<=n.top||o.left>=n.right||o.top>=n.bottom}function vv(e,t,n){var o=n.target||t,l=mv(o),r=!K3(o,n.overflow&&n.overflow.alwaysByViewport);return n1(e,l,n,r)}vv.__getOffsetParent=wp;vv.__getVisibleRectForElement=pv;function G3(e,t,n){var o,l,r=ut.getDocument(e),a=r.defaultView||r.parentWindow,i=ut.getWindowScrollLeft(a),s=ut.getWindowScrollTop(a),c=ut.viewportWidth(a),u=ut.viewportHeight(a);\"pageX\"in t?o=t.pageX:o=i+t.clientX,\"pageY\"in t?l=t.pageY:l=s+t.clientY;var d={left:o,top:l,width:0,height:0},p=o>=0&&o<=i+c&&l>=0&&l<=s+u,m=[n.points[0],\"cc\"];return n1(e,d,w0(w0({},n),{},{points:m}),p)}function ft(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,l=e;if(Array.isArray(e)&&(l=kt(e)[0]),!l)return null;const r=Mo(l,t,o);return r.props=n?h(h({},r.props),t):r.props,no(typeof r.props.class!=\"object\"),r}function X3(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(o=>ft(o,t,n))}function Ja(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(Array.isArray(e))return e.map(l=>Ja(l,t,n,o));{if(!gn(e))return e;const l=ft(e,t,n,o);return Array.isArray(l.children)&&(l.children=Ja(l.children)),l}}function U3(e,t,n){zl(Mo(e,h({},t)),n)}const o1=e=>(e||[]).some(t=>gn(t)?!(t.type===YS||t.type===He&&!o1(t.children)):!0)?e:null;function Vu(e,t,n,o){var l;const r=(l=e[t])===null||l===void 0?void 0:l.call(e,n);return o1(r)?r:o?.()}const Ku=e=>{if(!e)return!1;if(e.offsetParent)return!0;if(e.getBBox){const t=e.getBBox();if(t.width||t.height)return!0}if(e.getBoundingClientRect){const t=e.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function Y3(e,t){return e===t?!0:!e||!t?!1:\"pageX\"in t&&\"pageY\"in t?e.pageX===t.pageX&&e.pageY===t.pageY:\"clientX\"in t&&\"clientY\"in t?e.clientX===t.clientX&&e.clientY===t.clientY:!1}function q3(e,t){e!==document.activeElement&&Ol(t,e)&&typeof e.focus==\"function\"&&e.focus()}function B0(e,t){let n=null,o=null;function l(a){let[{target:i}]=a;if(!document.documentElement.contains(i))return;const{width:s,height:c}=i.getBoundingClientRect(),u=Math.floor(s),d=Math.floor(c);(n!==u||o!==d)&&Promise.resolve().then(()=>{t({width:u,height:d})}),n=u,o=d}const r=new Gm(l);return e&&r.observe(e),()=>{r.disconnect()}}const Z3=(e,t)=>{let n=!1,o=null;function l(){clearTimeout(o)}function r(a){if(!n||a===!0){if(e()===!1)return;n=!0,l(),o=setTimeout(()=>{n=!1},t.value)}else l(),o=setTimeout(()=>{n=!1,r()},t.value)}return[r,()=>{n=!1,l()}]},Q3={align:Object,target:[Object,Function],onAlign:Function,monitorBufferTime:Number,monitorWindowResize:Boolean,disabled:Boolean};function L0(e){return typeof e!=\"function\"?null:e()}function F0(e){return typeof e!=\"object\"||!e?null:e}const J3=ne({compatConfig:{MODE:3},name:\"Align\",props:Q3,emits:[\"align\"],setup(e,t){let{expose:n,slots:o}=t;const l=Z({}),r=Z(),[a,i]=Z3(()=>{const{disabled:p,target:m,align:g,onAlign:v}=e;if(!p&&m&&r.value){const y=r.value;let b;const S=L0(m),$=F0(m);l.value.element=S,l.value.point=$,l.value.align=g;const{activeElement:w}=document;return S&&Ku(S)?b=vv(y,S,g):$&&(b=G3(y,$,g)),q3(w,y),v&&b&&v(y,b),!0}return!1},I(()=>e.monitorBufferTime)),s=Z({cancel:()=>{}}),c=Z({cancel:()=>{}}),u=()=>{const p=e.target,m=L0(p),g=F0(p);r.value!==c.value.element&&(c.value.cancel(),c.value.element=r.value,c.value.cancel=B0(r.value,a)),(l.value.element!==m||!Y3(l.value.point,g)||!Dm(l.value.align,e.align))&&(a(),s.value.element!==m&&(s.value.cancel(),s.value.element=m,s.value.cancel=B0(m,a)))};Be(()=>{it(()=>{u()})}),Wn(()=>{it(()=>{u()})}),pe(()=>e.disabled,p=>{p?i():a()},{immediate:!0,flush:\"post\"});const d=Z(null);return pe(()=>e.monitorWindowResize,p=>{p?d.value||(d.value=Rt(window,\"resize\",a)):d.value&&(d.value.remove(),d.value=null)},{flush:\"post\"}),Mn(()=>{s.value.cancel(),c.value.cancel(),d.value&&d.value.remove(),i()}),n({forceAlign:()=>a(!0)}),()=>{const p=o?.default();return p?ft(p[0],{ref:r},!0,!0):null}}});hn(\"bottomLeft\",\"bottomRight\",\"topLeft\",\"topRight\");const gv=e=>e!==void 0&&(e===\"topLeft\"||e===\"topRight\")?\"slide-down\":\"slide-up\",So=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return h(e?{name:e,appear:!0,enterFromClass:`${e}-enter ${e}-enter-prepare ${e}-enter-start`,enterActiveClass:`${e}-enter ${e}-enter-prepare`,enterToClass:`${e}-enter ${e}-enter-active`,leaveFromClass:` ${e}-leave`,leaveActiveClass:`${e}-leave ${e}-leave-active`,leaveToClass:`${e}-leave ${e}-leave-active`}:{css:!1},t)},Gu=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return h(e?{name:e,appear:!0,appearActiveClass:`${e}`,appearToClass:`${e}-appear ${e}-appear-active`,enterFromClass:`${e}-appear ${e}-enter ${e}-appear-prepare ${e}-enter-prepare`,enterActiveClass:`${e}`,enterToClass:`${e}-enter ${e}-appear ${e}-appear-active ${e}-enter-active`,leaveActiveClass:`${e} ${e}-leave`,leaveToClass:`${e}-leave-active`}:{css:!1},t)},_n=(e,t,n)=>n!==void 0?n:`${e}-${t}`,eA=ne({compatConfig:{MODE:3},name:\"PopupInner\",inheritAttrs:!1,props:cv,emits:[\"mouseenter\",\"mouseleave\",\"mousedown\",\"touchstart\",\"align\"],setup(e,t){let{expose:n,attrs:o,slots:l}=t;const r=ee(),a=ee(),i=ee(),[s,c]=y3(Ve(e,\"stretch\")),u=()=>{e.stretch&&c(e.getRootDomNode())},d=ee(!1);let p;pe(()=>e.visible,_=>{clearTimeout(p),_?p=setTimeout(()=>{d.value=e.visible}):d.value=!1},{immediate:!0});const[m,g]=b3(d,u),v=ee(),y=()=>e.point?e.point:e.getRootDomNode,b=()=>{var _;(_=r.value)===null||_===void 0||_.forceAlign()},S=(_,x)=>{var P;const E=e.getClassNameFromAlign(x),M=i.value;i.value!==E&&(i.value=E),m.value===\"align\"&&(M!==E?Promise.resolve().then(()=>{b()}):g(()=>{var O;(O=v.value)===null||O===void 0||O.call(v)}),(P=e.onAlign)===null||P===void 0||P.call(e,_,x))},$=I(()=>{const _=typeof e.animation==\"object\"?e.animation:uv(e);return[\"onAfterEnter\",\"onAfterLeave\"].forEach(x=>{const P=_[x];_[x]=E=>{g(),m.value=\"stable\",P?.(E)}}),_}),w=()=>new Promise(_=>{v.value=_});pe([$,m],()=>{!$.value&&m.value===\"motion\"&&g()},{immediate:!0}),n({forceAlign:b,getElement:()=>a.value.$el||a.value});const C=I(()=>{var _;return!(!((_=e.align)===null||_===void 0)&&_.points&&(m.value===\"align\"||m.value===\"stable\"))});return()=>{var _;const{zIndex:x,align:P,prefixCls:E,destroyPopupOnHide:M,onMouseenter:O,onMouseleave:R,onTouchstart:D=()=>{},onMousedown:z}=e,T=m.value,k=[h(h({},s.value),{zIndex:x,opacity:T===\"motion\"||T===\"stable\"||!d.value?null:0,pointerEvents:!d.value&&T!==\"stable\"?\"none\":null}),o.style];let B=xt((_=l.default)===null||_===void 0?void 0:_.call(l,{visible:e.visible}));B.length>1&&(B=f(\"div\",{class:`${E}-content`},[B]));const L=re(E,o.class,i.value,!e.arrow&&`${E}-arrow-hidden`),F=d.value||!e.visible?So($.value.name,$.value):{};return f(cn,A(A({ref:a},F),{},{onBeforeEnter:w}),{default:()=>!M||e.visible?xn(f(J3,{target:y(),key:\"popup\",ref:r,monitorWindowResize:!0,disabled:C.value,align:P,onAlign:S},{default:()=>f(\"div\",{class:L,onMouseenter:O,onMouseleave:R,onMousedown:Yf(z,[\"capture\"]),[qt?\"onTouchstartPassive\":\"onTouchstart\"]:Yf(D,[\"capture\"]),style:k},[B])}),[[On,d.value]]):null})}}}),tA=ne({compatConfig:{MODE:3},name:\"Popup\",inheritAttrs:!1,props:v3,setup(e,t){let{attrs:n,slots:o,expose:l}=t;const r=ee(!1),a=ee(!1),i=ee(),s=ee();return pe([()=>e.visible,()=>e.mobile],()=>{r.value=e.visible,e.visible&&e.mobile&&(a.value=!0)},{immediate:!0,flush:\"post\"}),l({forceAlign:()=>{var c;(c=i.value)===null||c===void 0||c.forceAlign()},getElement:()=>{var c;return(c=i.value)===null||c===void 0?void 0:c.getElement()}}),()=>{const c=h(h(h({},e),n),{visible:r.value}),u=a.value?f(g3,A(A({},c),{},{mobile:e.mobile,ref:i}),{default:o.default}):f(eA,A(A({},c),{},{ref:i}),{default:o.default});return f(\"div\",{ref:s},[f(UC,c,null),u])}}});function nA(e,t,n){return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}function z0(e,t,n){const o=e[t]||{};return h(h({},o),n)}function oA(e,t,n,o){const{points:l}=n,r=Object.keys(e);for(let a=0;a<r.length;a+=1){const i=r[a];if(nA(e[i].points,l,o))return`${t}-placement-${i}`}return\"\"}const Er={methods:{setState(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=typeof e==\"function\"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){const o=this.getDerivedStateFromProps(V$(this),h(h({},this.$data),n));if(o===null)return;n=h(h({},n),o||{})}h(this.$data,n),this._.isMounted&&this.$forceUpdate(),it(()=>{t&&t()})},__emit(){const e=[].slice.call(arguments,0);let t=e[0];t=`on${t[0].toUpperCase()}${t.substring(1)}`;const n=this.$props[t]||this.$attrs[t];if(e.length&&n)if(Array.isArray(n))for(let o=0,l=n.length;o<l;o++)n[o](...e.slice(1));else n(...e.slice(1))}}},l1=Symbol(\"PortalContextKey\"),hv=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};et(l1,{inTriggerContext:t.inTriggerContext,shouldRender:I(()=>{const{sPopupVisible:n,popupRef:o,forceRender:l,autoDestroy:r}=e||{};let a=!1;return(n||o||l)&&(a=!0),!n&&r&&(a=!1),a})})},lA=()=>{hv({},{inTriggerContext:!1});const e=nt(l1,{shouldRender:I(()=>!1),inTriggerContext:!1});return{shouldRender:I(()=>e.shouldRender.value||e.inTriggerContext===!1)}},r1=ne({compatConfig:{MODE:3},name:\"Portal\",inheritAttrs:!1,props:{getContainer:W.func.isRequired,didUpdate:Function},setup(e,t){let{slots:n}=t,o=!0,l;const{shouldRender:r}=lA();function a(){r.value&&(l=e.getContainer())}_m(()=>{o=!1,a()}),Be(()=>{l||a()});const i=pe(r,()=>{r.value&&!l&&(l=e.getContainer()),l&&i()});return Wn(()=>{it(()=>{var s;r.value&&((s=e.didUpdate)===null||s===void 0||s.call(e,e))})}),()=>{var s;return r.value?o?(s=n.default)===null||s===void 0?void 0:s.call(n):l?f(Im,{to:l},n):null:null}}});let qd;function Hc(e){if(typeof document>\"u\")return 0;if(qd===void 0){const t=document.createElement(\"div\");t.style.width=\"100%\",t.style.height=\"200px\";const n=document.createElement(\"div\"),o=n.style;o.position=\"absolute\",o.top=\"0\",o.left=\"0\",o.pointerEvents=\"none\",o.visibility=\"hidden\",o.width=\"200px\",o.height=\"150px\",o.overflow=\"hidden\",n.appendChild(t),document.body.appendChild(n);const l=t.offsetWidth;n.style.overflow=\"scroll\";let r=t.offsetWidth;l===r&&(r=n.clientWidth),document.body.removeChild(n),qd=l-r}return qd}function H0(e){const t=e.match(/^(.*)px$/),n=Number(t?.[1]);return Number.isNaN(n)?Hc():n}function rA(e){if(typeof document>\"u\"||!e||!(e instanceof Element))return{width:0,height:0};const{width:t,height:n}=getComputedStyle(e,\"::-webkit-scrollbar\");return{width:H0(t),height:H0(n)}}const aA=`vc-util-locker-${Date.now()}`;let j0=0;function iA(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}function sA(e){const t=I(()=>!!e&&!!e.value);j0+=1;const n=`${aA}_${j0}`;ze(o=>{if(wn()){if(t.value){const l=Hc(),r=iA();gi(`\nhtml body {\n  overflow-y: hidden;\n  ${r?`width: calc(100% - ${l}px);`:\"\"}\n}`,n)}else Nc(n);o(()=>{Nc(n)})}},{flush:\"post\"})}let Zl=0;const Vs=wn(),W0=e=>{if(!Vs)return null;if(e){if(typeof e==\"string\")return document.querySelectorAll(e)[0];if(typeof e==\"function\")return e();if(typeof e==\"object\"&&e instanceof window.HTMLElement)return e}return document.body},Ni=ne({compatConfig:{MODE:3},name:\"PortalWrapper\",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:W.any,visible:{type:Boolean,default:void 0},autoLock:ye(),didUpdate:Function},setup(e,t){let{slots:n}=t;const o=ee(),l=ee(),r=ee(),a=ee(1),i=wn()&&document.createElement(\"div\"),s=()=>{var m,g;o.value===i&&((g=(m=o.value)===null||m===void 0?void 0:m.parentNode)===null||g===void 0||g.removeChild(o.value)),o.value=null};let c=null;const u=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)||o.value&&!o.value.parentNode?(c=W0(e.getContainer),c?(c.appendChild(o.value),!0):!1):!0},d=()=>Vs?(o.value||(o.value=i,u(!0)),p(),o.value):null,p=()=>{const{wrapperClassName:m}=e;o.value&&m&&m!==o.value.className&&(o.value.className=m)};return Wn(()=>{p(),u()}),sA(I(()=>e.autoLock&&e.visible&&wn()&&(o.value===document.body||o.value===i))),Be(()=>{let m=!1;pe([()=>e.visible,()=>e.getContainer],(g,v)=>{let[y,b]=g,[S,$]=v;Vs&&(c=W0(e.getContainer),c===document.body&&(y&&!S?Zl+=1:m&&(Zl-=1))),m&&(typeof b==\"function\"&&typeof $==\"function\"?b.toString()!==$.toString():b!==$)&&s(),m=!0},{immediate:!0,flush:\"post\"}),it(()=>{u()||(r.value=Qe(()=>{a.value+=1}))})}),ot(()=>{const{visible:m}=e;Vs&&c===document.body&&(Zl=m&&Zl?Zl-1:Zl),s(),Qe.cancel(r.value)}),()=>{const{forceRender:m,visible:g}=e;let v=null;const y={getOpenCount:()=>Zl,getContainer:d};return a.value&&(m||g||l.value)&&(v=f(r1,{getContainer:d,ref:l,didUpdate:e.didUpdate},{default:()=>{var b;return(b=n.default)===null||b===void 0?void 0:b.call(n,y)}})),v}}}),cA=[\"onClick\",\"onMousedown\",\"onTouchstart\",\"onMouseenter\",\"onMouseleave\",\"onFocus\",\"onBlur\",\"onContextmenu\"],Mr=ne({compatConfig:{MODE:3},name:\"Trigger\",mixins:[Er],inheritAttrs:!1,props:XC(),setup(e){const t=I(()=>{const{popupPlacement:l,popupAlign:r,builtinPlacements:a}=e;return l&&a?z0(a,l,r):r}),n=ee(null),o=l=>{n.value=l};return{vcTriggerContext:nt(\"vcTriggerContext\",{}),popupRef:n,setPopupRef:o,triggerRef:ee(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data(){const e=this.$props;let t;return this.popupVisible!==void 0?t=!!e.popupVisible:t=!!e.defaultPopupVisible,cA.forEach(n=>{this[`fire${n}`]=o=>{this.fireEvents(n,o)}}),{prevPopupVisible:t,sPopupVisible:t,point:null}},watch:{popupVisible(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created(){et(\"vcTriggerContext\",{onPopupMouseDown:this.onPopupMouseDown,onPopupMouseenter:this.onPopupMouseenter,onPopupMouseleave:this.onPopupMouseleave}),hv(this)},deactivated(){this.setPopupVisible(!1)},mounted(){this.$nextTick(()=>{this.updatedCal()})},updated(){this.$nextTick(()=>{this.updatedCal()})},beforeUnmount(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),Qe.cancel(this.attachId)},methods:{updatedCal(){const e=this.$props;if(this.$data.sPopupVisible){let n;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(n=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=Rt(n,\"mousedown\",this.onDocumentClick)),this.touchOutsideHandler||(n=n||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=Rt(n,\"touchstart\",this.onDocumentClick,qt?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(n=n||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=Rt(n,\"scroll\",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=Rt(window,\"blur\",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter(e){const{mouseEnterDelay:t}=this.$props;this.fireEvents(\"onMouseenter\",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove(e){this.fireEvents(\"onMousemove\",e),this.setPoint(e)},onMouseleave(e){this.fireEvents(\"onMouseleave\",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter(){const{vcTriggerContext:e={}}=this;e.onPopupMouseenter&&e.onPopupMouseenter(),this.clearDelayTimer()},onPopupMouseleave(e){var t;if(e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&Ol((t=this.popupRef)===null||t===void 0?void 0:t.getElement(),e.relatedTarget))return;this.isMouseLeaveToHide()&&this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay);const{vcTriggerContext:n={}}=this;n.onPopupMouseleave&&n.onPopupMouseleave(e)},onFocus(e){this.fireEvents(\"onFocus\",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown(e){this.fireEvents(\"onMousedown\",e),this.preClickTime=Date.now()},onTouchstart(e){this.fireEvents(\"onTouchstart\",e),this.preTouchTime=Date.now()},onBlur(e){Ol(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents(\"onBlur\",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu(e){e.preventDefault(),this.fireEvents(\"onContextmenu\",e),this.setPopupVisible(!0,e)},onContextmenuClose(){this.isContextmenuToShow()&&this.close()},onClick(e){if(this.fireEvents(\"onClick\",e),this.focusTime){let n;if(this.preClickTime&&this.preTouchTime?n=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?n=this.preClickTime:this.preTouchTime&&(n=this.preTouchTime),Math.abs(n-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();const t=!this.$data.sPopupVisible;(this.isClickToHide()&&!t||t&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown(){const{vcTriggerContext:e={}}=this;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(()=>{this.hasPopupMouseDown=!1},0),e.onPopupMouseDown&&e.onPopupMouseDown(...arguments)},onDocumentClick(e){if(this.$props.mask&&!this.$props.maskClosable)return;const t=e.target,n=this.getRootDomNode(),o=this.getPopupDomNode();(!Ol(n,t)||this.isContextMenuOnly())&&!Ol(o,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)},getPopupDomNode(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode(){var e,t,n,o;const{getTriggerDOMNode:l}=this.$props;if(l){const r=((t=(e=this.triggerRef)===null||e===void 0?void 0:e.$el)===null||t===void 0?void 0:t.nodeName)===\"#comment\"?null:Tn(this.triggerRef);return Tn(l(r))}try{const r=((o=(n=this.triggerRef)===null||n===void 0?void 0:n.$el)===null||o===void 0?void 0:o.nodeName)===\"#comment\"?null:Tn(this.triggerRef);if(r)return r}catch{}return Tn(this)},handleGetPopupClassFromAlign(e){const t=[],n=this.$props,{popupPlacement:o,builtinPlacements:l,prefixCls:r,alignPoint:a,getPopupClassNameFromAlign:i}=n;return o&&l&&t.push(oA(l,r,e,a)),i&&t.push(i(e)),t.join(\" \")},getPopupAlign(){const e=this.$props,{popupPlacement:t,popupAlign:n,builtinPlacements:o}=e;return t&&o?z0(o,t,n):n},getComponent(){const e={};this.isMouseEnterToShow()&&(e.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(e.onMouseleave=this.onPopupMouseleave),e.onMousedown=this.onPopupMouseDown,e[qt?\"onTouchstartPassive\":\"onTouchstart\"]=this.onPopupMouseDown;const{handleGetPopupClassFromAlign:t,getRootDomNode:n,$attrs:o}=this,{prefixCls:l,destroyPopupOnHide:r,popupClassName:a,popupAnimation:i,popupTransitionName:s,popupStyle:c,mask:u,maskAnimation:d,maskTransitionName:p,zIndex:m,stretch:g,alignPoint:v,mobile:y,arrow:b,forceRender:S}=this.$props,{sPopupVisible:$,point:w}=this.$data,C=h(h({prefixCls:l,arrow:b,destroyPopupOnHide:r,visible:$,point:v?w:null,align:this.align,animation:i,getClassNameFromAlign:t,stretch:g,getRootDomNode:n,mask:u,zIndex:m,transitionName:s,maskAnimation:d,maskTransitionName:p,class:a,style:c,onAlign:o.onPopupAlign||GC},e),{ref:this.setPopupRef,mobile:y,forceRender:S});return f(tA,C,{default:this.$slots.popup||(()=>K$(this,\"popup\"))})},attachParent(e){Qe.cancel(this.attachId);const{getPopupContainer:t,getDocument:n}=this.$props,o=this.getRootDomNode();let l;t?(o||t.length===0)&&(l=t(o)):l=n(this.getRootDomNode()).body,l?l.appendChild(e):this.attachId=Qe(()=>{this.attachParent(e)})},getContainer(){const{$props:e}=this,{getDocument:t}=e,n=t(this.getRootDomNode()).createElement(\"div\");return n.style.position=\"absolute\",n.style.top=\"0\",n.style.left=\"0\",n.style.width=\"100%\",this.attachParent(n),n},setPopupVisible(e,t){const{alignPoint:n,sPopupVisible:o,onPopupVisibleChange:l}=this;this.clearDelayTimer(),o!==e&&(ol(this,\"popupVisible\")||this.setState({sPopupVisible:e,prevPopupVisible:o}),l&&l(e)),n&&t&&e&&this.setPoint(t)},setPoint(e){const{alignPoint:t}=this.$props;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible(e,t,n){const o=t*1e3;if(this.clearDelayTimer(),o){const l=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=setTimeout(()=>{this.setPopupVisible(e,l),this.clearDelayTimer()},o)}else this.setPopupVisible(e,n)},clearDelayTimer(){this.delayTimer&&(clearTimeout(this.delayTimer),this.delayTimer=null)},clearOutsideHandler(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains(e){let t=()=>{};const n=Yh(this);return this.childOriginEvents[e]&&n[e]?this[`fire${e}`]:(t=this.childOriginEvents[e]||n[e]||t,t)},isClickToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"click\")!==-1||t.indexOf(\"click\")!==-1},isContextMenuOnly(){const{action:e}=this.$props;return e===\"contextmenu\"||e.length===1&&e[0]===\"contextmenu\"},isContextmenuToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"contextmenu\")!==-1||t.indexOf(\"contextmenu\")!==-1},isClickToHide(){const{action:e,hideAction:t}=this.$props;return e.indexOf(\"click\")!==-1||t.indexOf(\"click\")!==-1},isMouseEnterToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"hover\")!==-1||t.indexOf(\"mouseenter\")!==-1},isMouseLeaveToHide(){const{action:e,hideAction:t}=this.$props;return e.indexOf(\"hover\")!==-1||t.indexOf(\"mouseleave\")!==-1},isFocusToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"focus\")!==-1||t.indexOf(\"focus\")!==-1},isBlurToHide(){const{action:e,hideAction:t}=this.$props;return e.indexOf(\"focus\")!==-1||t.indexOf(\"blur\")!==-1},forcePopupAlign(){var e;this.$data.sPopupVisible&&((e=this.popupRef)===null||e===void 0||e.forceAlign())},fireEvents(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);const n=this.$props[e]||this.$attrs[e];n&&n(t)},close(){this.setPopupVisible(!1)}},render(){const{$attrs:e}=this,t=kt(Ru(this)),{alignPoint:n,getPopupContainer:o}=this.$props,l=t[0];this.childOriginEvents=Yh(l);const r={key:\"trigger\"};this.isContextmenuToShow()?r.onContextmenu=this.onContextmenu:r.onContextmenu=this.createTwoChains(\"onContextmenu\"),this.isClickToHide()||this.isClickToShow()?(r.onClick=this.onClick,r.onMousedown=this.onMousedown,r[qt?\"onTouchstartPassive\":\"onTouchstart\"]=this.onTouchstart):(r.onClick=this.createTwoChains(\"onClick\"),r.onMousedown=this.createTwoChains(\"onMousedown\"),r[qt?\"onTouchstartPassive\":\"onTouchstart\"]=this.createTwoChains(\"onTouchstart\")),this.isMouseEnterToShow()?(r.onMouseenter=this.onMouseenter,n&&(r.onMousemove=this.onMouseMove)):r.onMouseenter=this.createTwoChains(\"onMouseenter\"),this.isMouseLeaveToHide()?r.onMouseleave=this.onMouseleave:r.onMouseleave=this.createTwoChains(\"onMouseleave\"),this.isFocusToShow()||this.isBlurToHide()?(r.onFocus=this.onFocus,r.onBlur=this.onBlur):(r.onFocus=this.createTwoChains(\"onFocus\"),r.onBlur=c=>{c&&(!c.relatedTarget||!Ol(c.target,c.relatedTarget))&&this.createTwoChains(\"onBlur\")(c)});const a=re(l&&l.props&&l.props.class,e.class);a&&(r.class=a);const i=ft(l,h(h({},r),{ref:\"triggerRef\"}),!0,!0),s=f(Ni,{key:\"portal\",getContainer:o&&(()=>o(this.getRootDomNode())),didUpdate:this.handlePortalUpdate,visible:this.$data.sPopupVisible},{default:this.getComponent});return f(He,null,[i,s])}});var uA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const dA=e=>{const t=e===!0?0:1;return{bottomLeft:{points:[\"tl\",\"bl\"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:[\"tr\",\"br\"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:[\"bl\",\"tl\"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:[\"br\",\"tr\"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},fA=ne({name:\"SelectTrigger\",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:W.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:W.oneOfType([Number,Boolean]).def(!0),popupElement:W.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function,onPopupFocusin:Function,onPopupFocusout:Function},setup(e,t){let{slots:n,attrs:o,expose:l}=t;const r=I(()=>{const{dropdownMatchSelectWidth:i}=e;return dA(i)}),a=Z();return l({getPopupElement:()=>a.value}),()=>{const i=h(h({},e),o),{empty:s=!1}=i,c=uA(i,[\"empty\"]),{visible:u,dropdownAlign:d,prefixCls:p,popupElement:m,dropdownClassName:g,dropdownStyle:v,direction:y=\"ltr\",placement:b,dropdownMatchSelectWidth:S,containerWidth:$,dropdownRender:w,animation:C,transitionName:_,getPopupContainer:x,getTriggerDOMNode:P,onPopupVisibleChange:E,onPopupMouseEnter:M,onPopupFocusin:O,onPopupFocusout:R}=c,D=`${p}-dropdown`;let z=m;w&&(z=w({menuNode:m,props:e}));const T=C?`${D}-${C}`:_,k=h({minWidth:`${$}px`},v);return typeof S==\"number\"?k.width=`${S}px`:S&&(k.width=`${$}px`),f(Mr,A(A({},e),{},{showAction:E?[\"click\"]:[],hideAction:E?[\"click\"]:[],popupPlacement:b||(y===\"rtl\"?\"bottomRight\":\"bottomLeft\"),builtinPlacements:r.value,prefixCls:D,popupTransitionName:T,popupAlign:d,popupVisible:u,getPopupContainer:x,popupClassName:re(g,{[`${D}-empty`]:s}),popupStyle:k,getTriggerDOMNode:P,onPopupVisibleChange:E}),{default:n.default,popup:()=>f(\"div\",{ref:a,onMouseenter:M,onFocusin:O,onFocusout:R},[z])})}}}),we={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,N:78,P:80,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,SEMICOLON:186,EQUALS:187,WIN_KEY:224},$r=(e,t)=>{let{slots:n}=t;var o;const{class:l,customizeIcon:r,customizeIconProps:a,onMousedown:i,onClick:s}=e;let c;return typeof r==\"function\"?c=r(a):c=gn(r)?Mo(r):r,f(\"span\",{class:l,onMousedown:u=>{u.preventDefault(),i&&i(u)},style:{userSelect:\"none\",WebkitUserSelect:\"none\"},unselectable:\"on\",onClick:s,\"aria-hidden\":!0},[c!==void 0?c:f(\"span\",{class:l.split(/\\s+/).map(u=>`${u}-icon`)},[(o=n.default)===null||o===void 0?void 0:o.call(n)])])};$r.inheritAttrs=!1;$r.displayName=\"TransBtn\";$r.props={class:String,customizeIcon:W.any,customizeIconProps:W.any,onMousedown:Function,onClick:Function};var pA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const mA=ne({compatConfig:{MODE:3},props:{disabled:W.looseBool,type:W.string,value:W.any,tag:{type:String,default:\"input\"},size:W.string,onChange:Function,onInput:Function,onBlur:Function,onFocus:Function,onKeydown:Function,onCompositionstart:Function,onCompositionend:Function,onKeyup:Function,onPaste:Function,onMousedown:Function},emits:[\"change\",\"input\",\"blur\",\"keydown\",\"focus\",\"compositionstart\",\"compositionend\",\"keyup\",\"paste\",\"mousedown\"],setup(e,t){let{expose:n}=t;const o=ee(null);return n({focus:()=>{o.value&&o.value.focus()},blur:()=>{o.value&&o.value.blur()},input:o,setSelectionRange:(s,c,u)=>{var d;(d=o.value)===null||d===void 0||d.setSelectionRange(s,c,u)},select:()=>{var s;(s=o.value)===null||s===void 0||s.select()},getSelectionStart:()=>{var s;return(s=o.value)===null||s===void 0?void 0:s.selectionStart},getSelectionEnd:()=>{var s;return(s=o.value)===null||s===void 0?void 0:s.selectionEnd},getScrollTop:()=>{var s;return(s=o.value)===null||s===void 0?void 0:s.scrollTop}}),()=>{const{tag:s,value:c}=e,u=pA(e,[\"tag\",\"value\"]);return f(s,A(A({},u),{},{ref:o,value:c}),null)}}});function vA(){const e=document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight;return{width:e,height:t}}function jc(e){const t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.scrollX||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.scrollY||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}}function gA(e){return Array.prototype.slice.apply(e).map(n=>`${n}: ${e.getPropertyValue(n)};`).join(\"\")}function hA(e){return Object.keys(e).reduce((t,n)=>{const o=e[n];return typeof o>\"u\"||o===null||(t+=`${n}: ${e[n]};`),t},\"\")}var bA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Ta=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:{disabled:W.looseBool,type:W.string,value:W.any,lazy:W.bool.def(!0),tag:{type:String,default:\"input\"},size:W.string,style:W.oneOfType([String,Object]),class:W.string},emits:[\"change\",\"input\",\"blur\",\"keydown\",\"focus\",\"compositionstart\",\"compositionend\",\"keyup\",\"paste\",\"mousedown\"],setup(e,t){let{emit:n,attrs:o,expose:l}=t;const r=ee(null),a=Z(),i=Z(!1);pe([()=>e.value,i],()=>{i.value||(a.value=e.value)},{immediate:!0});const s=x=>{n(\"change\",x)},c=x=>{i.value=!0,x.target.composing=!0,n(\"compositionstart\",x)},u=x=>{i.value=!1,x.target.composing=!1,n(\"compositionend\",x);const P=document.createEvent(\"HTMLEvents\");P.initEvent(\"input\",!0,!0),x.target.dispatchEvent(P),s(x)},d=x=>{if(i.value&&e.lazy){a.value=x.target.value;return}n(\"input\",x)},p=x=>{n(\"blur\",x)},m=x=>{n(\"focus\",x)},g=()=>{r.value&&r.value.focus()},v=()=>{r.value&&r.value.blur()},y=x=>{n(\"keydown\",x)},b=x=>{n(\"keyup\",x)},S=(x,P,E)=>{var M;(M=r.value)===null||M===void 0||M.setSelectionRange(x,P,E)},$=()=>{var x;(x=r.value)===null||x===void 0||x.select()};l({focus:g,blur:v,input:I(()=>{var x;return(x=r.value)===null||x===void 0?void 0:x.input}),setSelectionRange:S,select:$,getSelectionStart:()=>{var x;return(x=r.value)===null||x===void 0?void 0:x.getSelectionStart()},getSelectionEnd:()=>{var x;return(x=r.value)===null||x===void 0?void 0:x.getSelectionEnd()},getScrollTop:()=>{var x;return(x=r.value)===null||x===void 0?void 0:x.getScrollTop()}});const w=x=>{n(\"mousedown\",x)},C=x=>{n(\"paste\",x)},_=I(()=>e.style&&typeof e.style!=\"string\"?hA(e.style):e.style);return()=>{const{style:x,lazy:P}=e,E=bA(e,[\"style\",\"lazy\"]);return f(mA,A(A(A({},E),o),{},{style:_.value,onInput:d,onChange:s,onBlur:p,onFocus:m,ref:r,value:a.value,onCompositionstart:c,onCompositionend:u,onKeyup:b,onKeydown:y,onPaste:C,onMousedown:w}),null)}}}),yA={inputRef:W.any,prefixCls:String,id:String,inputElement:W.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:W.oneOfType([W.number,W.string]),attrs:W.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},a1=ne({compatConfig:{MODE:3},name:\"SelectInput\",inheritAttrs:!1,props:yA,setup(e){let t=null;const n=nt(\"VCSelectContainerEvent\");return()=>{var o;const{prefixCls:l,id:r,inputElement:a,disabled:i,tabindex:s,autofocus:c,autocomplete:u,editable:d,activeDescendantId:p,value:m,onKeydown:g,onMousedown:v,onChange:y,onPaste:b,onCompositionstart:S,onCompositionend:$,onFocus:w,onBlur:C,open:_,inputRef:x,attrs:P}=e;let E=a||f(Ta,null,null);const M=E.props||{},{onKeydown:O,onInput:R,onFocus:D,onBlur:z,onMousedown:T,onCompositionstart:k,onCompositionend:B,style:L}=M;return E=ft(E,h(h(h(h(h({type:\"search\"},M),{id:r,ref:x,disabled:i,tabindex:s,lazy:!1,autocomplete:u||\"off\",autofocus:c,class:re(`${l}-selection-search-input`,(o=E?.props)===null||o===void 0?void 0:o.class),role:\"combobox\",\"aria-expanded\":_,\"aria-haspopup\":\"listbox\",\"aria-owns\":`${r}_list`,\"aria-autocomplete\":\"list\",\"aria-controls\":`${r}_list`,\"aria-activedescendant\":p}),P),{value:d?m:\"\",readonly:!d,unselectable:d?null:\"on\",style:h(h({},L),{opacity:d?null:0}),onKeydown:N=>{g(N),O&&O(N)},onMousedown:N=>{v(N),T&&T(N)},onInput:N=>{y(N),R&&R(N)},onCompositionstart(N){S(N),k&&k(N)},onCompositionend(N){$(N),B&&B(N)},onPaste:b,onFocus:function(){clearTimeout(t),D&&D(arguments.length<=0?void 0:arguments[0]),w&&w(arguments.length<=0?void 0:arguments[0]),n?.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var N=arguments.length,F=new Array(N),j=0;j<N;j++)F[j]=arguments[j];t=setTimeout(()=>{z&&z(F[0]),C&&C(F[0]),n?.blur(F[0])},100)}}),E.type===\"textarea\"?{}:{type:\"search\"}),!0,!0),E}}}),SA=`accept acceptcharset accesskey action allowfullscreen allowtransparency\nalt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge\ncharset checked classid classname colspan cols content contenteditable contextmenu\ncontrols coords crossorigin data datetime default defer dir disabled download draggable\nenctype form formaction formenctype formmethod formnovalidate formtarget frameborder\nheaders height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity\nis keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media\nmediagroup method min minlength multiple muted name novalidate nonce open\noptimum pattern placeholder poster preload radiogroup readonly rel required\nreversed role rowspan rows sandbox scope scoped scrolling seamless selected\nshape size sizes span spellcheck src srcdoc srclang srcset start step style\nsummary tabindex target title type usemap value width wmode wrap`,$A=`onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown\n    onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick\n    onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown\n    onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel\n    onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough\n    onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata\n    onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`,V0=`${SA} ${$A}`.split(/[\\s\\n]+/),CA=\"aria-\",xA=\"data-\";function K0(e,t){return e.indexOf(t)===0}function Gl(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n;t===!1?n={aria:!0,data:!0,attr:!0}:t===!0?n={aria:!0}:n=h({},t);const o={};return Object.keys(e).forEach(l=>{(n.aria&&(l===\"role\"||K0(l,CA))||n.data&&K0(l,xA)||n.attr&&(V0.includes(l)||V0.includes(l.toLowerCase())))&&(o[l]=e[l])}),o}const i1=Symbol(\"OverflowContextProviderKey\"),_p=ne({compatConfig:{MODE:3},name:\"OverflowContextProvider\",inheritAttrs:!1,props:{value:{type:Object}},setup(e,t){let{slots:n}=t;return et(i1,I(()=>e.value)),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),wA=()=>nt(i1,I(()=>null));var _A=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Br=void 0,Ks=ne({compatConfig:{MODE:3},name:\"Item\",props:{prefixCls:String,item:W.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:W.any,invalidate:Boolean},setup(e,t){let{slots:n,expose:o}=t;const l=I(()=>e.responsive&&!e.display),r=Z();o({itemNodeRef:r});function a(i){e.registerSize(e.itemKey,i)}return Mn(()=>{a(null)}),()=>{var i;const{prefixCls:s,invalidate:c,item:u,renderItem:d,responsive:p,registerSize:m,itemKey:g,display:v,order:y,component:b=\"div\"}=e,S=_A(e,[\"prefixCls\",\"invalidate\",\"item\",\"renderItem\",\"responsive\",\"registerSize\",\"itemKey\",\"display\",\"order\",\"component\"]),$=(i=n.default)===null||i===void 0?void 0:i.call(n),w=d&&u!==Br?d(u):$;let C;c||(C={opacity:l.value?0:1,height:l.value?0:Br,overflowY:l.value?\"hidden\":Br,order:p?y:Br,pointerEvents:l.value?\"none\":Br,position:l.value?\"absolute\":Br});const _={};return l.value&&(_[\"aria-hidden\"]=!0),f(bo,{disabled:!p,onResize:x=>{let{offsetWidth:P}=x;a(P)}},{default:()=>f(b,A(A(A({class:re(!c&&s),style:C},_),S),{},{ref:r}),{default:()=>[w]})})}}});var Zd=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const IA=ne({compatConfig:{MODE:3},name:\"RawItem\",inheritAttrs:!1,props:{component:W.any,title:W.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},role:String,tabindex:Number},setup(e,t){let{slots:n,attrs:o}=t;const l=wA();return()=>{var r;if(!l.value){const{component:d=\"div\"}=e,p=Zd(e,[\"component\"]);return f(d,A(A({},p),o),{default:()=>[(r=n.default)===null||r===void 0?void 0:r.call(n)]})}const a=l.value,{className:i}=a,s=Zd(a,[\"className\"]),{class:c}=o,u=Zd(o,[\"class\"]);return f(_p,{value:null},{default:()=>[f(Ks,A(A(A({class:re(i,c)},s),u),e),n)]})}}});var PA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const s1=\"responsive\",c1=\"invalidate\";function TA(e){return`+ ${e.length} ...`}const OA=()=>({id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:W.any,component:String,itemComponent:W.any,onVisibleChange:Function,ssr:String,onMousedown:Function,role:String}),dl=ne({name:\"Overflow\",inheritAttrs:!1,props:OA(),emits:[\"visibleChange\"],setup(e,t){let{attrs:n,emit:o,slots:l}=t;const r=I(()=>e.ssr===\"full\"),a=ee(null),i=I(()=>a.value||0),s=ee(new Map),c=ee(0),u=ee(0),d=ee(0),p=ee(null),m=ee(null),g=I(()=>m.value===null&&r.value?Number.MAX_SAFE_INTEGER:m.value||0),v=ee(!1),y=I(()=>`${e.prefixCls}-item`),b=I(()=>Math.max(c.value,u.value)),S=I(()=>!!(e.data.length&&e.maxCount===s1)),$=I(()=>e.maxCount===c1),w=I(()=>S.value||typeof e.maxCount==\"number\"&&e.data.length>e.maxCount),C=I(()=>{let T=e.data;return S.value?a.value===null&&r.value?T=e.data:T=e.data.slice(0,Math.min(e.data.length,i.value/e.itemWidth)):typeof e.maxCount==\"number\"&&(T=e.data.slice(0,e.maxCount)),T}),_=I(()=>S.value?e.data.slice(g.value+1):e.data.slice(C.value.length)),x=(T,k)=>{var B;return typeof e.itemKey==\"function\"?e.itemKey(T):(B=e.itemKey&&T?.[e.itemKey])!==null&&B!==void 0?B:k},P=I(()=>e.renderItem||(T=>T)),E=(T,k)=>{m.value=T,k||(v.value=T<e.data.length-1,o(\"visibleChange\",T))},M=(T,k)=>{a.value=k.clientWidth},O=(T,k)=>{const B=new Map(s.value);k===null?B.delete(T):B.set(T,k),s.value=B},R=(T,k)=>{c.value=u.value,u.value=k},D=(T,k)=>{d.value=k},z=T=>s.value.get(x(C.value[T],T));return pe([i,s,u,d,()=>e.itemKey,C],()=>{if(i.value&&b.value&&C.value){let T=d.value;const k=C.value.length,B=k-1;if(!k){E(0),p.value=null;return}for(let L=0;L<k;L+=1){const N=z(L);if(N===void 0){E(L-1,!0);break}if(T+=N,B===0&&T<=i.value||L===B-1&&T+z(B)<=i.value){E(B),p.value=null;break}else if(T+b.value>i.value){E(L-1),p.value=T-N-d.value+u.value;break}}e.suffix&&z(0)+d.value>i.value&&(p.value=null)}}),()=>{const T=v.value&&!!_.value.length,{itemComponent:k,renderRawItem:B,renderRawRest:L,renderRest:N,prefixCls:F=\"rc-overflow\",suffix:j,component:H=\"div\",id:K,onMousedown:G}=e,{class:V,style:q}=n,Q=PA(n,[\"class\",\"style\"]);let oe={};p.value!==null&&S.value&&(oe={position:\"absolute\",left:`${p.value}px`,top:0});const le={prefixCls:y.value,responsive:S.value,component:k,invalidate:$.value},Y=B?(be,Ce)=>{const ge=x(be,Ce);return f(_p,{key:ge,value:h(h({},le),{order:Ce,item:be,itemKey:ge,registerSize:O,display:Ce<=g.value})},{default:()=>[B(be,Ce)]})}:(be,Ce)=>{const ge=x(be,Ce);return f(Ks,A(A({},le),{},{order:Ce,key:ge,item:be,renderItem:P.value,itemKey:ge,registerSize:O,display:Ce<=g.value}),null)};let J=()=>null;const ce={order:T?g.value:Number.MAX_SAFE_INTEGER,className:`${y.value} ${y.value}-rest`,registerSize:R,display:T};if(L)L&&(J=()=>f(_p,{value:h(h({},le),ce)},{default:()=>[L(_.value)]}));else{const be=N||TA;J=()=>f(Ks,A(A({},le),ce),{default:()=>typeof be==\"function\"?be(_.value):be})}const ue=()=>{var be;return f(H,A({id:K,class:re(!$.value&&F,V),style:q,onMousedown:G,role:e.role},Q),{default:()=>[C.value.map(Y),w.value?J():null,j&&f(Ks,A(A({},le),{},{order:g.value,class:`${y.value}-suffix`,registerSize:D,display:!0,style:oe}),{default:()=>j}),(be=l.default)===null||be===void 0?void 0:be.call(l)]})};return f(bo,{disabled:!S.value,onResize:M},{default:ue})}}});dl.Item=IA;dl.RESPONSIVE=s1;dl.INVALIDATE=c1;const u1=Symbol(\"TreeSelectLegacyContextPropsKey\");function EA(e){return et(u1,e)}function Xu(){return nt(u1,{})}const MA={id:String,prefixCls:String,values:W.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:W.any,placeholder:W.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:W.oneOfType([W.number,W.string]),compositionStatus:Boolean,removeIcon:W.any,choiceTransitionName:String,maxTagCount:W.oneOfType([W.number,W.string]),maxTagTextLength:Number,maxTagPlaceholder:W.any.def(()=>e=>`+ ${e.length} ...`),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},G0=e=>{e.preventDefault(),e.stopPropagation()},AA=ne({name:\"MultipleSelectSelector\",inheritAttrs:!1,props:MA,setup(e){const t=ee(),n=ee(0),o=ee(!1),l=Xu(),r=I(()=>`${e.prefixCls}-selection`),a=I(()=>e.open||e.mode===\"tags\"?e.searchValue:\"\"),i=I(()=>e.mode===\"tags\"||e.showSearch&&(e.open||o.value)),s=Z(\"\");ze(()=>{s.value=a.value}),Be(()=>{pe(s,()=>{n.value=t.value.scrollWidth},{flush:\"post\",immediate:!0})});function c(g,v,y,b,S){return f(\"span\",{class:re(`${r.value}-item`,{[`${r.value}-item-disabled`]:y}),title:typeof g==\"string\"||typeof g==\"number\"?g.toString():void 0},[f(\"span\",{class:`${r.value}-item-content`},[v]),b&&f($r,{class:`${r.value}-item-remove`,onMousedown:G0,onClick:S,customizeIcon:e.removeIcon},{default:()=>[bt(\"×\")]})])}function u(g,v,y,b,S,$){var w;const C=x=>{G0(x),e.onToggleOpen(!open)};let _=$;return l.keyEntities&&(_=((w=l.keyEntities[g])===null||w===void 0?void 0:w.node)||{}),f(\"span\",{key:g,onMousedown:C},[e.tagRender({label:v,value:g,disabled:y,closable:b,onClose:S,option:_})])}function d(g){const{disabled:v,label:y,value:b,option:S}=g,$=!e.disabled&&!v;let w=y;if(typeof e.maxTagTextLength==\"number\"&&(typeof y==\"string\"||typeof y==\"number\")){const _=String(w);_.length>e.maxTagTextLength&&(w=`${_.slice(0,e.maxTagTextLength)}...`)}const C=_=>{var x;_&&_.stopPropagation(),(x=e.onRemove)===null||x===void 0||x.call(e,g)};return typeof e.tagRender==\"function\"?u(b,w,v,$,C,S):c(y,w,v,$,C)}function p(g){const{maxTagPlaceholder:v=b=>`+ ${b.length} ...`}=e,y=typeof v==\"function\"?v(g):v;return c(y,y,!1)}const m=g=>{const v=g.target.composing;s.value=g.target.value,v||e.onInputChange(g)};return()=>{const{id:g,prefixCls:v,values:y,open:b,inputRef:S,placeholder:$,disabled:w,autofocus:C,autocomplete:_,activeDescendantId:x,tabindex:P,compositionStatus:E,onInputPaste:M,onInputKeyDown:O,onInputMouseDown:R,onInputCompositionStart:D,onInputCompositionEnd:z}=e,T=f(\"div\",{class:`${r.value}-search`,style:{width:n.value+\"px\"},key:\"input\"},[f(a1,{inputRef:S,open:b,prefixCls:v,id:g,inputElement:null,disabled:w,autofocus:C,autocomplete:_,editable:i.value,activeDescendantId:x,value:s.value,onKeydown:O,onMousedown:R,onChange:m,onPaste:M,onCompositionstart:D,onCompositionend:z,tabindex:P,attrs:Gl(e,!0),onFocus:()=>o.value=!0,onBlur:()=>o.value=!1},null),f(\"span\",{ref:t,class:`${r.value}-search-mirror`,\"aria-hidden\":!0},[s.value,bt(\" \")])]),k=f(dl,{prefixCls:`${r.value}-overflow`,data:y,renderItem:d,renderRest:p,suffix:T,itemKey:\"key\",maxCount:e.maxTagCount,key:\"overflow\"},null);return f(He,null,[k,!y.length&&!a.value&&!E&&f(\"span\",{class:`${r.value}-placeholder`},[$])])}}}),DA={inputElement:W.any,id:String,prefixCls:String,values:W.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:W.any,placeholder:W.any,compositionStatus:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:W.oneOfType([W.number,W.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},bv=ne({name:\"SingleSelector\",setup(e){const t=ee(!1),n=I(()=>e.mode===\"combobox\"),o=I(()=>n.value||e.showSearch),l=I(()=>{let u=e.searchValue||\"\";return n.value&&e.activeValue&&!t.value&&(u=e.activeValue),u}),r=Xu();pe([n,()=>e.activeValue],()=>{n.value&&(t.value=!1)},{immediate:!0});const a=I(()=>e.mode!==\"combobox\"&&!e.open&&!e.showSearch?!1:!!l.value||e.compositionStatus),i=I(()=>{const u=e.values[0];return u&&(typeof u.label==\"string\"||typeof u.label==\"number\")?u.label.toString():void 0}),s=()=>{if(e.values[0])return null;const u=a.value?{visibility:\"hidden\"}:void 0;return f(\"span\",{class:`${e.prefixCls}-selection-placeholder`,style:u},[e.placeholder])},c=u=>{u.target.composing||(t.value=!0,e.onInputChange(u))};return()=>{var u,d,p,m;const{inputElement:g,prefixCls:v,id:y,values:b,inputRef:S,disabled:$,autofocus:w,autocomplete:C,activeDescendantId:_,open:x,tabindex:P,optionLabelRender:E,onInputKeyDown:M,onInputMouseDown:O,onInputPaste:R,onInputCompositionStart:D,onInputCompositionEnd:z}=e,T=b[0];let k=null;if(T&&r.customSlots){const B=(u=T.key)!==null&&u!==void 0?u:T.value,L=((d=r.keyEntities[B])===null||d===void 0?void 0:d.node)||{};k=r.customSlots[(p=L.slots)===null||p===void 0?void 0:p.title]||r.customSlots.title||T.label,typeof k==\"function\"&&(k=k(L))}else k=E&&T?E(T.option):T?.label;return f(He,null,[f(\"span\",{class:`${v}-selection-search`},[f(a1,{inputRef:S,prefixCls:v,id:y,open:x,inputElement:g,disabled:$,autofocus:w,autocomplete:C,editable:o.value,activeDescendantId:_,value:l.value,onKeydown:M,onMousedown:O,onChange:c,onPaste:R,onCompositionstart:D,onCompositionend:z,tabindex:P,attrs:Gl(e,!0)},null)]),!n.value&&T&&!a.value&&f(\"span\",{class:`${v}-selection-item`,title:i.value},[f(He,{key:(m=T.key)!==null&&m!==void 0?m:T.value},[k])]),s()])}}});bv.props=DA;bv.inheritAttrs=!1;function RA(e){return![we.ESC,we.SHIFT,we.BACKSPACE,we.TAB,we.WIN_KEY,we.ALT,we.META,we.WIN_KEY_RIGHT,we.CTRL,we.SEMICOLON,we.EQUALS,we.CAPS_LOCK,we.CONTEXT_MENU,we.F1,we.F2,we.F3,we.F4,we.F5,we.F6,we.F7,we.F8,we.F9,we.F10,we.F11,we.F12].includes(e)}function d1(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,t=null,n;ot(()=>{clearTimeout(n)});function o(l){(l||t===null)&&(t=l),clearTimeout(n),n=setTimeout(()=>{t=null},e)}return[()=>t,o]}function $i(){const e=t=>{e.current=t};return e}const kA=ne({name:\"Selector\",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:W.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:W.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:W.oneOfType([W.number,W.string]),disabled:{type:Boolean,default:void 0},placeholder:W.any,removeIcon:W.any,maxTagCount:W.oneOfType([W.number,W.string]),maxTagTextLength:Number,maxTagPlaceholder:W.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup(e,t){let{expose:n}=t;const o=$i(),l=Z(!1),[r,a]=d1(0),i=b=>{const{which:S}=b;(S===we.UP||S===we.DOWN)&&b.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(b),S===we.ENTER&&e.mode===\"tags\"&&!l.value&&!e.open&&e.onSearchSubmit(b.target.value),RA(S)&&e.onToggleOpen(!0)},s=()=>{a(!0)};let c=null;const u=b=>{e.onSearch(b,!0,l.value)!==!1&&e.onToggleOpen(!0)},d=()=>{l.value=!0},p=b=>{l.value=!1,e.mode!==\"combobox\"&&u(b.target.value)},m=b=>{let{target:{value:S}}=b;if(e.tokenWithEnter&&c&&/[\\r\\n]/.test(c)){const $=c.replace(/[\\r\\n]+$/,\"\").replace(/\\r\\n/g,\" \").replace(/[\\r\\n]/g,\" \");S=S.replace($,c)}c=null,u(S)},g=b=>{const{clipboardData:S}=b;c=S.getData(\"text\")},v=b=>{let{target:S}=b;S!==o.current&&(document.body.style.msTouchAction!==void 0?setTimeout(()=>{o.current.focus()}):o.current.focus())},y=b=>{const S=r();b.target!==o.current&&!S&&b.preventDefault(),(e.mode!==\"combobox\"&&(!e.showSearch||!S)||!e.open)&&(e.open&&e.onSearch(\"\",!0,!1),e.onToggleOpen())};return n({focus:()=>{o.current.focus()},blur:()=>{o.current.blur()}}),()=>{const{prefixCls:b,domRef:S,mode:$}=e,w={inputRef:o,onInputKeyDown:i,onInputMouseDown:s,onInputChange:m,onInputPaste:g,compositionStatus:l.value,onInputCompositionStart:d,onInputCompositionEnd:p},C=$===\"multiple\"||$===\"tags\"?f(AA,A(A({},e),w),null):f(bv,A(A({},e),w),null);return f(\"div\",{ref:S,class:`${b}-selector`,onClick:v,onMousedown:y},[C])}}});function NA(e,t,n){function o(l){var r,a,i;let s=l.target;s.shadowRoot&&l.composed&&(s=l.composedPath()[0]||s);const c=[(r=e[0])===null||r===void 0?void 0:r.value,(i=(a=e[1])===null||a===void 0?void 0:a.value)===null||i===void 0?void 0:i.getPopupElement()];t.value&&c.every(u=>u&&!u.contains(s)&&u!==s)&&n(!1)}Be(()=>{window.addEventListener(\"mousedown\",o)}),ot(()=>{window.removeEventListener(\"mousedown\",o)})}function BA(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10;const t=ee(!1);let n;const o=()=>{clearTimeout(n)};return Be(()=>{o()}),[t,(r,a)=>{o(),n=setTimeout(()=>{t.value=r,a&&a()},e)},o]}const f1=Symbol(\"BaseSelectContextKey\");function LA(e){return et(f1,e)}function Bi(){return nt(f1,{})}const yv=()=>{if(typeof navigator>\"u\"||typeof window>\"u\")return!1;const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(e?.substring(0,4))};function Wc(e){if(!Fl(e))return gt(e);const t=new Proxy({},{get(n,o,l){return Reflect.get(e.value,o,l)},set(n,o,l){return e.value[o]=l,!0},deleteProperty(n,o){return Reflect.deleteProperty(e.value,o)},has(n,o){return Reflect.has(e.value,o)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return gt(t)}var FA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const zA=[\"value\",\"onChange\",\"removeIcon\",\"placeholder\",\"autofocus\",\"maxTagCount\",\"maxTagTextLength\",\"maxTagPlaceholder\",\"choiceTransitionName\",\"onInputKeyDown\",\"onPopupScroll\",\"tabindex\",\"OptionList\",\"notFoundContent\"],HA=()=>({prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:W.any,emptyOptions:Boolean}),Uu=()=>({showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:W.any,placeholder:W.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:W.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:W.any,clearIcon:W.any,removeIcon:W.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}),jA=()=>h(h({},HA()),Uu());function p1(e){return e===\"tags\"||e===\"multiple\"}const Sv=ne({compatConfig:{MODE:3},name:\"BaseSelect\",inheritAttrs:!1,props:Je(jA(),{showAction:[],notFoundContent:\"Not Found\"}),setup(e,t){let{attrs:n,expose:o,slots:l}=t;const r=I(()=>p1(e.mode)),a=I(()=>e.showSearch!==void 0?e.showSearch:r.value||e.mode===\"combobox\"),i=ee(!1);Be(()=>{i.value=yv()});const s=Xu(),c=ee(null),u=$i(),d=ee(null),p=ee(null),m=ee(null),g=Z(!1),[v,y,b]=BA();o({focus:()=>{var Y;(Y=p.value)===null||Y===void 0||Y.focus()},blur:()=>{var Y;(Y=p.value)===null||Y===void 0||Y.blur()},scrollTo:Y=>{var J;return(J=m.value)===null||J===void 0?void 0:J.scrollTo(Y)}});const w=I(()=>{var Y;if(e.mode!==\"combobox\")return e.searchValue;const J=(Y=e.displayValues[0])===null||Y===void 0?void 0:Y.value;return typeof J==\"string\"||typeof J==\"number\"?String(J):\"\"}),C=e.open!==void 0?e.open:e.defaultOpen,_=ee(C),x=ee(C),P=Y=>{_.value=e.open!==void 0?e.open:Y,x.value=_.value};pe(()=>e.open,()=>{P(e.open)});const E=I(()=>!e.notFoundContent&&e.emptyOptions);ze(()=>{x.value=_.value,(e.disabled||E.value&&x.value&&e.mode===\"combobox\")&&(x.value=!1)});const M=I(()=>E.value?!1:x.value),O=Y=>{const J=Y!==void 0?Y:!x.value;x.value!==J&&!e.disabled&&(P(J),e.onDropdownVisibleChange&&e.onDropdownVisibleChange(J),!J&&H.value&&(H.value=!1,y(!1,()=>{F.value=!1,g.value=!1})))},R=I(()=>(e.tokenSeparators||[]).some(Y=>[`\n`,`\\r\n`].includes(Y))),D=(Y,J,ce)=>{var ue,be;let Ce=!0,ge=Y;(ue=e.onActiveValueChange)===null||ue===void 0||ue.call(e,null);const Se=ce?null:d3(Y,e.tokenSeparators);return e.mode!==\"combobox\"&&Se&&(ge=\"\",(be=e.onSearchSplit)===null||be===void 0||be.call(e,Se),O(!1),Ce=!1),e.onSearch&&w.value!==ge&&e.onSearch(ge,{source:J?\"typing\":\"effect\"}),Ce},z=Y=>{var J;!Y||!Y.trim()||(J=e.onSearch)===null||J===void 0||J.call(e,Y,{source:\"submit\"})};pe(x,()=>{!x.value&&!r.value&&e.mode!==\"combobox\"&&D(\"\",!1,!1)},{immediate:!0,flush:\"post\"}),pe(()=>e.disabled,()=>{_.value&&e.disabled&&P(!1),e.disabled&&!g.value&&y(!1)},{immediate:!0});const[T,k]=d1(),B=function(Y){var J;const ce=T(),{which:ue}=Y;if(ue===we.ENTER&&(e.mode!==\"combobox\"&&Y.preventDefault(),x.value||O(!0)),k(!!w.value),ue===we.BACKSPACE&&!ce&&r.value&&!w.value&&e.displayValues.length){const Se=[...e.displayValues];let X=null;for(let U=Se.length-1;U>=0;U-=1){const ie=Se[U];if(!ie.disabled){Se.splice(U,1),X=ie;break}}X&&e.onDisplayValuesChange(Se,{type:\"remove\",values:[X]})}for(var be=arguments.length,Ce=new Array(be>1?be-1:0),ge=1;ge<be;ge++)Ce[ge-1]=arguments[ge];x.value&&m.value&&m.value.onKeydown(Y,...Ce),(J=e.onKeydown)===null||J===void 0||J.call(e,Y,...Ce)},L=function(Y){for(var J=arguments.length,ce=new Array(J>1?J-1:0),ue=1;ue<J;ue++)ce[ue-1]=arguments[ue];x.value&&m.value&&m.value.onKeyup(Y,...ce),e.onKeyup&&e.onKeyup(Y,...ce)},N=Y=>{const J=e.displayValues.filter(ce=>ce!==Y);e.onDisplayValuesChange(J,{type:\"remove\",values:[Y]})},F=ee(!1),j=function(){y(!0),e.disabled||(e.onFocus&&!F.value&&e.onFocus(...arguments),e.showAction&&e.showAction.includes(\"focus\")&&O(!0)),F.value=!0},H=Z(!1),K=function(){if(H.value||(g.value=!0,y(!1,()=>{F.value=!1,g.value=!1,O(!1)}),e.disabled))return;const Y=w.value;Y&&(e.mode===\"tags\"?e.onSearch(Y,{source:\"submit\"}):e.mode===\"multiple\"&&e.onSearch(\"\",{source:\"blur\"})),e.onBlur&&e.onBlur(...arguments)},G=()=>{H.value=!0},V=()=>{H.value=!1};et(\"VCSelectContainerEvent\",{focus:j,blur:K});const q=[];Be(()=>{q.forEach(Y=>clearTimeout(Y)),q.splice(0,q.length)}),ot(()=>{q.forEach(Y=>clearTimeout(Y)),q.splice(0,q.length)});const Q=function(Y){var J,ce;const{target:ue}=Y,be=(J=d.value)===null||J===void 0?void 0:J.getPopupElement();if(be&&be.contains(ue)){const X=setTimeout(()=>{var U;const ie=q.indexOf(X);ie!==-1&&q.splice(ie,1),b(),!i.value&&!be.contains(document.activeElement)&&((U=p.value)===null||U===void 0||U.focus())});q.push(X)}for(var Ce=arguments.length,ge=new Array(Ce>1?Ce-1:0),Se=1;Se<Ce;Se++)ge[Se-1]=arguments[Se];(ce=e.onMousedown)===null||ce===void 0||ce.call(e,Y,...ge)},oe=ee(null),le=()=>{};return Be(()=>{pe(M,()=>{var Y;if(M.value){const J=Math.ceil((Y=c.value)===null||Y===void 0?void 0:Y.offsetWidth);oe.value!==J&&!Number.isNaN(J)&&(oe.value=J)}},{immediate:!0,flush:\"post\"})}),NA([c,d],M,O),LA(Wc(h(h({},Wo(e)),{open:x,triggerOpen:M,showSearch:a,multiple:r,toggleOpen:O}))),()=>{const Y=h(h({},e),n),{prefixCls:J,id:ce,open:ue,defaultOpen:be,mode:Ce,showSearch:ge,searchValue:Se,onSearch:X,allowClear:U,clearIcon:ie,showArrow:ve,inputIcon:me,disabled:he,loading:se,getInputElement:te,getPopupContainer:ae,placement:fe,animation:Pe,transitionName:Oe,dropdownStyle:Re,dropdownClassName:$e,dropdownMatchSelectWidth:xe,dropdownRender:_e,dropdownAlign:Me,showAction:je,direction:Ae,tokenSeparators:We,tagRender:at,optionLabelRender:pt,onPopupScroll:st,onDropdownVisibleChange:mt,onFocus:ht,onBlur:Yt,onKeyup:en,onKeydown:rn,onMousedown:Wt,onClear:bn,omitDomProps:An,getRawInputElement:ro,displayValues:Co,onDisplayValuesChange:Dn,emptyOptions:Yl,activeDescendantId:Ee,activeValue:Ze,OptionList:Ue}=Y,It=FA(Y,[\"prefixCls\",\"id\",\"open\",\"defaultOpen\",\"mode\",\"showSearch\",\"searchValue\",\"onSearch\",\"allowClear\",\"clearIcon\",\"showArrow\",\"inputIcon\",\"disabled\",\"loading\",\"getInputElement\",\"getPopupContainer\",\"placement\",\"animation\",\"transitionName\",\"dropdownStyle\",\"dropdownClassName\",\"dropdownMatchSelectWidth\",\"dropdownRender\",\"dropdownAlign\",\"showAction\",\"direction\",\"tokenSeparators\",\"tagRender\",\"optionLabelRender\",\"onPopupScroll\",\"onDropdownVisibleChange\",\"onFocus\",\"onBlur\",\"onKeyup\",\"onKeydown\",\"onMousedown\",\"onClear\",\"omitDomProps\",\"getRawInputElement\",\"displayValues\",\"onDisplayValuesChange\",\"emptyOptions\",\"activeDescendantId\",\"activeValue\",\"OptionList\"]),tn=Ce===\"combobox\"&&te&&te()||null,Vt=typeof ro==\"function\"&&ro(),Rn=h({},It);let pn;Vt&&(pn=wo=>{O(wo)}),zA.forEach(wo=>{delete Rn[wo]}),An?.forEach(wo=>{delete Rn[wo]});const ko=ve!==void 0?ve:se||!r.value&&Ce!==\"combobox\";let Gn;ko&&(Gn=f($r,{class:re(`${J}-arrow`,{[`${J}-arrow-loading`]:se}),customizeIcon:me,customizeIconProps:{loading:se,searchValue:w.value,open:x.value,focused:v.value,showSearch:a.value}},null));let ao;const Nt=()=>{bn?.(),Dn([],{type:\"clear\",values:Co}),D(\"\",!1,!1)};!he&&U&&(Co.length||w.value)&&(ao=f($r,{class:`${J}-clear`,onMousedown:Nt,customizeIcon:ie},{default:()=>[bt(\"×\")]}));const xo=f(Ue,{ref:m},h(h({},s.customSlots),{option:l.option})),io=re(J,n.class,{[`${J}-focused`]:v.value,[`${J}-multiple`]:r.value,[`${J}-single`]:!r.value,[`${J}-allow-clear`]:U,[`${J}-show-arrow`]:ko,[`${J}-disabled`]:he,[`${J}-loading`]:se,[`${J}-open`]:x.value,[`${J}-customize-input`]:tn,[`${J}-show-search`]:a.value}),Cl=f(fA,{ref:d,disabled:he,prefixCls:J,visible:M.value,popupElement:xo,containerWidth:oe.value,animation:Pe,transitionName:Oe,dropdownStyle:Re,dropdownClassName:$e,direction:Ae,dropdownMatchSelectWidth:xe,dropdownRender:_e,dropdownAlign:Me,placement:fe,getPopupContainer:ae,empty:Yl,getTriggerDOMNode:()=>u.current,onPopupVisibleChange:pn,onPopupMouseEnter:le,onPopupFocusin:G,onPopupFocusout:V},{default:()=>Vt?Gt(Vt)&&ft(Vt,{ref:u},!1,!0):f(kA,A(A({},e),{},{domRef:u,prefixCls:J,inputElement:tn,ref:p,id:ce,showSearch:a.value,mode:Ce,activeDescendantId:Ee,tagRender:at,optionLabelRender:pt,values:Co,open:x.value,onToggleOpen:O,activeValue:Ze,searchValue:w.value,onSearch:D,onSearchSubmit:z,onRemove:N,tokenWithEnter:R.value}),null)});let xl;return Vt?xl=Cl:xl=f(\"div\",A(A({},Rn),{},{class:io,ref:c,onMousedown:Q,onKeydown:B,onKeyup:L}),[v.value&&!x.value&&f(\"span\",{style:{width:0,height:0,position:\"absolute\",overflow:\"hidden\",opacity:0},\"aria-live\":\"polite\"},[`${Co.map(wo=>{let{label:Nr,value:_o}=wo;return[\"number\",\"string\"].includes(typeof Nr)?Nr:_o}).join(\", \")}`]),Cl,Gn,ao]),xl}}}),Yu=(e,t)=>{let{height:n,offset:o,prefixCls:l,onInnerResize:r}=e,{slots:a}=t;var i;let s={},c={display:\"flex\",flexDirection:\"column\"};return o!==void 0&&(s={height:`${n}px`,position:\"relative\",overflow:\"hidden\"},c=h(h({},c),{transform:`translateY(${o}px)`,position:\"absolute\",left:0,right:0,top:0})),f(\"div\",{style:s},[f(bo,{onResize:u=>{let{offsetHeight:d}=u;d&&r&&r()}},{default:()=>[f(\"div\",{style:c,class:re({[`${l}-holder-inner`]:l})},[(i=a.default)===null||i===void 0?void 0:i.call(a)])]})])};Yu.displayName=\"Filter\";Yu.inheritAttrs=!1;Yu.props={prefixCls:String,height:Number,offset:Number,onInnerResize:Function};const m1=(e,t)=>{let{setRef:n}=e,{slots:o}=t;var l;const r=xt((l=o.default)===null||l===void 0?void 0:l.call(o));return r&&r.length?Mo(r[0],{ref:n}):r};m1.props={setRef:{type:Function,default:()=>{}}};const WA=20;function X0(e){return\"touches\"in e?e.touches[0].pageY:e.pageY}const VA=ne({compatConfig:{MODE:3},name:\"ScrollBar\",inheritAttrs:!1,props:{prefixCls:String,scrollTop:Number,scrollHeight:Number,height:Number,count:Number,onScroll:{type:Function},onStartMove:{type:Function},onStopMove:{type:Function}},setup(){return{moveRaf:null,scrollbarRef:$i(),thumbRef:$i(),visibleTimeout:null,state:gt({dragging:!1,pageY:null,startTop:null,visible:!1})}},watch:{scrollTop:{handler(){this.delayHidden()},flush:\"post\"}},mounted(){var e,t;(e=this.scrollbarRef.current)===null||e===void 0||e.addEventListener(\"touchstart\",this.onScrollbarTouchStart,qt?{passive:!1}:!1),(t=this.thumbRef.current)===null||t===void 0||t.addEventListener(\"touchstart\",this.onMouseDown,qt?{passive:!1}:!1)},beforeUnmount(){this.removeEvents(),clearTimeout(this.visibleTimeout)},methods:{delayHidden(){clearTimeout(this.visibleTimeout),this.state.visible=!0,this.visibleTimeout=setTimeout(()=>{this.state.visible=!1},2e3)},onScrollbarTouchStart(e){e.preventDefault()},onContainerMouseDown(e){e.stopPropagation(),e.preventDefault()},patchEvents(){window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"mouseup\",this.onMouseUp),this.thumbRef.current.addEventListener(\"touchmove\",this.onMouseMove,qt?{passive:!1}:!1),this.thumbRef.current.addEventListener(\"touchend\",this.onMouseUp)},removeEvents(){window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"mouseup\",this.onMouseUp),this.scrollbarRef.current.removeEventListener(\"touchstart\",this.onScrollbarTouchStart,qt?{passive:!1}:!1),this.thumbRef.current&&(this.thumbRef.current.removeEventListener(\"touchstart\",this.onMouseDown,qt?{passive:!1}:!1),this.thumbRef.current.removeEventListener(\"touchmove\",this.onMouseMove,qt?{passive:!1}:!1),this.thumbRef.current.removeEventListener(\"touchend\",this.onMouseUp)),Qe.cancel(this.moveRaf)},onMouseDown(e){const{onStartMove:t}=this.$props;h(this.state,{dragging:!0,pageY:X0(e),startTop:this.getTop()}),t(),this.patchEvents(),e.stopPropagation(),e.preventDefault()},onMouseMove(e){const{dragging:t,pageY:n,startTop:o}=this.state,{onScroll:l}=this.$props;if(Qe.cancel(this.moveRaf),t){const r=X0(e)-n,a=o+r,i=this.getEnableScrollRange(),s=this.getEnableHeightRange(),c=s?a/s:0,u=Math.ceil(c*i);this.moveRaf=Qe(()=>{l(u)})}},onMouseUp(){const{onStopMove:e}=this.$props;this.state.dragging=!1,e(),this.removeEvents()},getSpinHeight(){const{height:e,scrollHeight:t}=this.$props;let n=e/t*100;return n=Math.max(n,WA),n=Math.min(n,e/2),Math.floor(n)},getEnableScrollRange(){const{scrollHeight:e,height:t}=this.$props;return e-t||0},getEnableHeightRange(){const{height:e}=this.$props,t=this.getSpinHeight();return e-t||0},getTop(){const{scrollTop:e}=this.$props,t=this.getEnableScrollRange(),n=this.getEnableHeightRange();return e===0||t===0?0:e/t*n},showScroll(){const{height:e,scrollHeight:t}=this.$props;return t>e}},render(){const{dragging:e,visible:t}=this.state,{prefixCls:n}=this.$props,o=this.getSpinHeight()+\"px\",l=this.getTop()+\"px\",r=this.showScroll(),a=r&&t;return f(\"div\",{ref:this.scrollbarRef,class:re(`${n}-scrollbar`,{[`${n}-scrollbar-show`]:r}),style:{width:\"8px\",top:0,bottom:0,right:0,position:\"absolute\",display:a?void 0:\"none\"},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[f(\"div\",{ref:this.thumbRef,class:re(`${n}-scrollbar-thumb`,{[`${n}-scrollbar-thumb-moving`]:e}),style:{width:\"100%\",height:o,top:l,left:0,position:\"absolute\",background:\"rgba(0, 0, 0, 0.5)\",borderRadius:\"99px\",cursor:\"pointer\",userSelect:\"none\"},onMousedown:this.onMouseDown},null)])}});function KA(e,t,n,o){const l=new Map,r=new Map,a=Z(Symbol(\"update\"));pe(e,()=>{a.value=Symbol(\"update\")});let i;function s(){Qe.cancel(i)}function c(){s(),i=Qe(()=>{l.forEach((d,p)=>{if(d&&d.offsetParent){const{offsetHeight:m}=d;r.get(p)!==m&&(a.value=Symbol(\"update\"),r.set(p,d.offsetHeight))}})})}function u(d,p){const m=t(d);l.get(m),p?(l.set(m,p.$el||p),c()):l.delete(m)}return Mn(()=>{s()}),[u,c,r,a]}function GA(e,t,n,o,l,r,a,i){let s;return c=>{if(c==null){i();return}Qe.cancel(s);const u=t.value,d=o.itemHeight;if(typeof c==\"number\")a(c);else if(c&&typeof c==\"object\"){let p;const{align:m}=c;\"index\"in c?{index:p}=c:p=u.findIndex(y=>l(y)===c.key);const{offset:g=0}=c,v=(y,b)=>{if(y<0||!e.value)return;const S=e.value.clientHeight;let $=!1,w=b;if(S){const C=b||m;let _=0,x=0,P=0;const E=Math.min(u.length,p);for(let R=0;R<=E;R+=1){const D=l(u[R]);x=_;const z=n.get(D);P=x+(z===void 0?d:z),_=P,R===p&&z===void 0&&($=!0)}const M=e.value.scrollTop;let O=null;switch(C){case\"top\":O=x-g;break;case\"bottom\":O=P-S+g;break;default:{const R=M+S;x<M?w=\"top\":P>R&&(w=\"bottom\")}}O!==null&&O!==M&&a(O)}s=Qe(()=>{$&&r(),v(y-1,w)},2)};v(5)}}}const XA=typeof navigator==\"object\"&&/Firefox/i.test(navigator.userAgent),v1=(e,t)=>{let n=!1,o=null;function l(){clearTimeout(o),n=!0,o=setTimeout(()=>{n=!1},50)}return function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=r<0&&e.value||r>0&&t.value;return a&&i?(clearTimeout(o),n=!1):(!i||n)&&l(),!n&&i}};function UA(e,t,n,o){let l=0,r=null,a=null,i=!1;const s=v1(t,n);function c(d){if(!e.value)return;Qe.cancel(r);const{deltaY:p}=d;l+=p,a=p,!s(p)&&(XA||d.preventDefault(),r=Qe(()=>{o(l*(i?10:1)),l=0}))}function u(d){e.value&&(i=d.detail===a)}return[c,u]}const YA=14/15;function qA(e,t,n){let o=!1,l=0,r=null,a=null;const i=()=>{r&&(r.removeEventListener(\"touchmove\",s),r.removeEventListener(\"touchend\",c))},s=p=>{if(o){const m=Math.ceil(p.touches[0].pageY);let g=l-m;l=m,n(g)&&p.preventDefault(),clearInterval(a),a=setInterval(()=>{g*=YA,(!n(g,!0)||Math.abs(g)<=.1)&&clearInterval(a)},16)}},c=()=>{o=!1,i()},u=p=>{i(),p.touches.length===1&&!o&&(o=!0,l=Math.ceil(p.touches[0].pageY),r=p.target,r.addEventListener(\"touchmove\",s,{passive:!1}),r.addEventListener(\"touchend\",c))},d=()=>{};Be(()=>{document.addEventListener(\"touchmove\",d,{passive:!1}),pe(e,p=>{t.value.removeEventListener(\"touchstart\",u),i(),clearInterval(a),p&&t.value.addEventListener(\"touchstart\",u,{passive:!1})},{immediate:!0})}),ot(()=>{document.removeEventListener(\"touchmove\",d)})}var ZA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const QA=[],JA={overflowY:\"auto\",overflowAnchor:\"none\"};function e4(e,t,n,o,l,r){let{getKey:a}=r;return e.slice(t,n+1).map((i,s)=>{const c=t+s,u=l(i,c,{}),d=a(i);return f(m1,{key:d,setRef:p=>o(i,p)},{default:()=>[u]})})}const g1=ne({compatConfig:{MODE:3},name:\"List\",inheritAttrs:!1,props:{prefixCls:String,data:W.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup(e,t){let{expose:n}=t;const o=I(()=>{const{height:N,itemHeight:F,virtual:j}=e;return!!(j!==!1&&N&&F)}),l=I(()=>{const{height:N,itemHeight:F,data:j}=e;return o.value&&j&&F*j.length>N}),r=gt({scrollTop:0,scrollMoving:!1}),a=I(()=>e.data||QA),i=ee([]);pe(a,()=>{i.value=jt(a.value).slice()},{immediate:!0});const s=ee(N=>{});pe(()=>e.itemKey,N=>{typeof N==\"function\"?s.value=N:s.value=F=>F?.[N]},{immediate:!0});const c=ee(),u=ee(),d=ee(),p=N=>s.value(N),m={getKey:p};function g(N){let F;typeof N==\"function\"?F=N(r.scrollTop):F=N;const j=_(F);c.value&&(c.value.scrollTop=j),r.scrollTop=j}const[v,y,b,S]=KA(i,p),$=gt({scrollHeight:void 0,start:0,end:0,offset:void 0}),w=ee(0);Be(()=>{it(()=>{var N;w.value=((N=u.value)===null||N===void 0?void 0:N.offsetHeight)||0})}),Wn(()=>{it(()=>{var N;w.value=((N=u.value)===null||N===void 0?void 0:N.offsetHeight)||0})}),pe([o,i],()=>{o.value||h($,{scrollHeight:void 0,start:0,end:i.value.length-1,offset:void 0})},{immediate:!0}),pe([o,i,w,l],()=>{o.value&&!l.value&&h($,{scrollHeight:w.value,start:0,end:i.value.length-1,offset:void 0}),c.value&&(r.scrollTop=c.value.scrollTop)},{immediate:!0}),pe([l,o,()=>r.scrollTop,i,S,()=>e.height,w],()=>{if(!o.value||!l.value)return;let N=0,F,j,H;const K=i.value.length,G=i.value,V=r.scrollTop,{itemHeight:q,height:Q}=e,oe=V+Q;for(let le=0;le<K;le+=1){const Y=G[le],J=p(Y);let ce=b.get(J);ce===void 0&&(ce=q);const ue=N+ce;F===void 0&&ue>=V&&(F=le,j=N),H===void 0&&ue>oe&&(H=le),N=ue}F===void 0&&(F=0,j=0,H=Math.ceil(Q/q)),H===void 0&&(H=K-1),H=Math.min(H+1,K),h($,{scrollHeight:N,start:F,end:H,offset:j})},{immediate:!0});const C=I(()=>$.scrollHeight-e.height);function _(N){let F=N;return Number.isNaN(C.value)||(F=Math.min(F,C.value)),F=Math.max(F,0),F}const x=I(()=>r.scrollTop<=0),P=I(()=>r.scrollTop>=C.value),E=v1(x,P);function M(N){g(N)}function O(N){var F;const{scrollTop:j}=N.currentTarget;j!==r.scrollTop&&g(j),(F=e.onScroll)===null||F===void 0||F.call(e,N)}const[R,D]=UA(o,x,P,N=>{g(F=>F+N)});qA(o,c,(N,F)=>E(N,F)?!1:(R({preventDefault(){},deltaY:N}),!0));function z(N){o.value&&N.preventDefault()}const T=()=>{c.value&&(c.value.removeEventListener(\"wheel\",R,qt?{passive:!1}:!1),c.value.removeEventListener(\"DOMMouseScroll\",D),c.value.removeEventListener(\"MozMousePixelScroll\",z))};ze(()=>{it(()=>{c.value&&(T(),c.value.addEventListener(\"wheel\",R,qt?{passive:!1}:!1),c.value.addEventListener(\"DOMMouseScroll\",D),c.value.addEventListener(\"MozMousePixelScroll\",z))})}),ot(()=>{T()});const k=GA(c,i,b,e,p,y,g,()=>{var N;(N=d.value)===null||N===void 0||N.delayHidden()});n({scrollTo:k});const B=I(()=>{let N=null;return e.height&&(N=h({[e.fullHeight?\"height\":\"maxHeight\"]:e.height+\"px\"},JA),o.value&&(N.overflowY=\"hidden\",r.scrollMoving&&(N.pointerEvents=\"none\"))),N});return pe([()=>$.start,()=>$.end,i],()=>{if(e.onVisibleChange){const N=i.value.slice($.start,$.end+1);e.onVisibleChange(N,i.value)}},{flush:\"post\"}),{state:r,mergedData:i,componentStyle:B,onFallbackScroll:O,onScrollBar:M,componentRef:c,useVirtual:o,calRes:$,collectHeight:y,setInstance:v,sharedConfig:m,scrollBarRef:d,fillerInnerRef:u,delayHideScrollBar:()=>{var N;(N=d.value)===null||N===void 0||N.delayHidden()}}},render(){const e=h(h({},this.$props),this.$attrs),{prefixCls:t=\"rc-virtual-list\",height:n,itemHeight:o,fullHeight:l,data:r,itemKey:a,virtual:i,component:s=\"div\",onScroll:c,children:u=this.$slots.default,style:d,class:p}=e,m=ZA(e,[\"prefixCls\",\"height\",\"itemHeight\",\"fullHeight\",\"data\",\"itemKey\",\"virtual\",\"component\",\"onScroll\",\"children\",\"style\",\"class\"]),g=re(t,p),{scrollTop:v}=this.state,{scrollHeight:y,offset:b,start:S,end:$}=this.calRes,{componentStyle:w,onFallbackScroll:C,onScrollBar:_,useVirtual:x,collectHeight:P,sharedConfig:E,setInstance:M,mergedData:O,delayHideScrollBar:R}=this;return f(\"div\",A({style:h(h({},d),{position:\"relative\"}),class:g},m),[f(s,{class:`${t}-holder`,style:w,ref:\"componentRef\",onScroll:C,onMouseenter:R},{default:()=>[f(Yu,{prefixCls:t,height:y,offset:b,onInnerResize:P,ref:\"fillerInnerRef\"},{default:()=>e4(O,S,$,M,u,E)})]}),x&&f(VA,{ref:\"scrollBarRef\",prefixCls:t,scrollTop:v,height:n,scrollHeight:y,count:O.length,onScroll:_,onStartMove:()=>{this.state.scrollMoving=!0},onStopMove:()=>{this.state.scrollMoving=!1}},null)])}});function $v(e,t,n){const o=Z(e());return pe(t,(l,r)=>{n?n(l,r)&&(o.value=e()):o.value=e()}),o}function t4(){return/(mac\\sos|macintosh)/i.test(navigator.appVersion)}const h1=Symbol(\"SelectContextKey\");function n4(e){return et(h1,e)}function o4(){return nt(h1,{})}var l4=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function U0(e){return typeof e==\"string\"||typeof e==\"number\"}const r4=ne({compatConfig:{MODE:3},name:\"OptionList\",inheritAttrs:!1,setup(e,t){let{expose:n,slots:o}=t;const l=Bi(),r=o4(),a=I(()=>`${l.prefixCls}-item`),i=$v(()=>r.flattenOptions,[()=>l.open,()=>r.flattenOptions],C=>C[0]),s=$i(),c=C=>{C.preventDefault()},u=C=>{s.current&&s.current.scrollTo(typeof C==\"number\"?{index:C}:C)},d=function(C){let _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const x=i.value.length;for(let P=0;P<x;P+=1){const E=(C+P*_+x)%x,{group:M,data:O}=i.value[E];if(!M&&!O.disabled)return E}return-1},p=gt({activeIndex:d(0)}),m=function(C){let _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;p.activeIndex=C;const x={source:_?\"keyboard\":\"mouse\"},P=i.value[C];if(!P){r.onActiveValue(null,-1,x);return}r.onActiveValue(P.value,C,x)};pe([()=>i.value.length,()=>l.searchValue],()=>{m(r.defaultActiveFirstOption!==!1?d(0):-1)},{immediate:!0});const g=C=>r.rawValues.has(C)&&l.mode!==\"combobox\";pe([()=>l.open,()=>l.searchValue],()=>{if(!l.multiple&&l.open&&r.rawValues.size===1){const C=Array.from(r.rawValues)[0],_=jt(i.value).findIndex(x=>{let{data:P}=x;return P[r.fieldNames.value]===C});_!==-1&&(m(_),it(()=>{u(_)}))}l.open&&it(()=>{var C;(C=s.current)===null||C===void 0||C.scrollTo(void 0)})},{immediate:!0,flush:\"post\"});const v=C=>{C!==void 0&&r.onSelect(C,{selected:!r.rawValues.has(C)}),l.multiple||l.toggleOpen(!1)},y=C=>typeof C.label==\"function\"?C.label():C.label;function b(C){const _=i.value[C];if(!_)return null;const x=_.data||{},{value:P}=x,{group:E}=_,M=Gl(x,!0),O=y(_);return _?f(\"div\",A(A({\"aria-label\":typeof O==\"string\"&&!E?O:null},M),{},{key:C,role:E?\"presentation\":\"option\",id:`${l.id}_list_${C}`,\"aria-selected\":g(P)}),[P]):null}return n({onKeydown:C=>{const{which:_,ctrlKey:x}=C;switch(_){case we.N:case we.P:case we.UP:case we.DOWN:{let P=0;if(_===we.UP?P=-1:_===we.DOWN?P=1:t4()&&x&&(_===we.N?P=1:_===we.P&&(P=-1)),P!==0){const E=d(p.activeIndex+P,P);u(E),m(E,!0)}break}case we.ENTER:{const P=i.value[p.activeIndex];P&&!P.data.disabled?v(P.value):v(void 0),l.open&&C.preventDefault();break}case we.ESC:l.toggleOpen(!1),l.open&&C.stopPropagation()}},onKeyup:()=>{},scrollTo:C=>{u(C)}}),()=>{const{id:C,notFoundContent:_,onPopupScroll:x}=l,{menuItemSelectedIcon:P,fieldNames:E,virtual:M,listHeight:O,listItemHeight:R}=r,D=o.option,{activeIndex:z}=p,T=Object.keys(E).map(k=>E[k]);return i.value.length===0?f(\"div\",{role:\"listbox\",id:`${C}_list`,class:`${a.value}-empty`,onMousedown:c},[_]):f(He,null,[f(\"div\",{role:\"listbox\",id:`${C}_list`,style:{height:0,width:0,overflow:\"hidden\"}},[b(z-1),b(z),b(z+1)]),f(g1,{itemKey:\"key\",ref:s,data:i.value,height:O,itemHeight:R,fullHeight:!1,onMousedown:c,onScroll:x,virtual:M},{default:(k,B)=>{var L;const{group:N,groupOption:F,data:j,value:H}=k,{key:K}=j,G=typeof k.label==\"function\"?k.label():k.label;if(N){const ie=(L=j.title)!==null&&L!==void 0?L:U0(G)&&G;return f(\"div\",{class:re(a.value,`${a.value}-group`),title:ie},[D?D(j):G!==void 0?G:K])}const{disabled:V,title:q,children:Q,style:oe,class:le,className:Y}=j,J=l4(j,[\"disabled\",\"title\",\"children\",\"style\",\"class\",\"className\"]),ce=lt(J,T),ue=g(H),be=`${a.value}-option`,Ce=re(a.value,be,le,Y,{[`${be}-grouped`]:F,[`${be}-active`]:z===B&&!V,[`${be}-disabled`]:V,[`${be}-selected`]:ue}),ge=y(k),Se=!P||typeof P==\"function\"||ue,X=typeof ge==\"number\"?ge:ge||H;let U=U0(X)?X.toString():void 0;return q!==void 0&&(U=q),f(\"div\",A(A({},ce),{},{\"aria-selected\":ue,class:Ce,title:U,onMousemove:ie=>{J.onMousemove&&J.onMousemove(ie),!(z===B||V)&&m(B)},onClick:ie=>{V||v(H),J.onClick&&J.onClick(ie)},style:oe}),[f(\"div\",{class:`${be}-content`},[D?D(j):X]),Gt(P)||ue,Se&&f($r,{class:`${a.value}-option-state`,customizeIcon:P,customizeIconProps:{isSelected:ue}},{default:()=>[ue?\"✓\":null]})])}})])}}});var a4=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function i4(e){const t=e,{key:n,children:o}=t,l=t.props,{value:r,disabled:a}=l,i=a4(l,[\"value\",\"disabled\"]),s=o?.default;return h({key:n,value:r!==void 0?r:n,children:s,disabled:a||a===\"\"},i)}function b1(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return xt(e).map((o,l)=>{var r;if(!Gt(o)||!o.type)return null;const{type:{isSelectOptGroup:a},key:i,children:s,props:c}=o;if(t||!a)return i4(o);const u=s&&s.default?s.default():void 0,d=c?.label||((r=s.label)===null||r===void 0?void 0:r.call(s))||i;return h(h({key:`__RC_SELECT_GRP__${i===null?l:String(i)}__`},c),{label:d,options:b1(u||[])})}).filter(o=>o)}function s4(e,t,n){const o=ee(),l=ee(),r=ee(),a=ee([]);return pe([e,t],()=>{e.value?a.value=jt(e.value).slice():a.value=b1(t.value)},{immediate:!0,deep:!0}),ze(()=>{const i=a.value,s=new Map,c=new Map,u=n.value;function d(p){let m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(let g=0;g<p.length;g+=1){const v=p[g];!v[u.options]||m?(s.set(v[u.value],v),c.set(v[u.label],v)):d(v[u.options],!0)}}d(i),o.value=i,l.value=s,r.value=c}),{options:o,valueOptions:l,labelOptions:r}}let Y0=0;const c4=wn();function u4(){let e;return c4?(e=Y0,Y0+=1):e=\"TEST_OR_SSR\",e}function Cv(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z(\"\");const t=`rc_select_${u4()}`;return e.value||t}function y1(e){return Array.isArray(e)?e:e!==void 0?[e]:[]}function Qd(e,t){return y1(e).join(\"\").toUpperCase().includes(t)}const d4=(e,t,n,o,l)=>I(()=>{const r=n.value,a=l?.value,i=o?.value;if(!r||i===!1)return e.value;const{options:s,label:c,value:u}=t.value,d=[],p=typeof i==\"function\",m=r.toUpperCase(),g=p?i:(y,b)=>a?Qd(b[a],m):b[s]?Qd(b[c!==\"children\"?c:\"label\"],m):Qd(b[u],m),v=p?y=>Sp(y):y=>y;return e.value.forEach(y=>{if(y[s]){if(g(r,v(y)))d.push(y);else{const S=y[s].filter($=>g(r,v($)));S.length&&d.push(h(h({},y),{[s]:S}))}return}g(r,v(y))&&d.push(y)}),d}),f4=(e,t)=>{const n=ee({values:new Map,options:new Map});return[I(()=>{const{values:r,options:a}=n.value,i=e.value.map(u=>{var d;return u.label===void 0?h(h({},u),{label:(d=r.get(u.value))===null||d===void 0?void 0:d.label}):u}),s=new Map,c=new Map;return i.forEach(u=>{s.set(u.value,u),c.set(u.value,t.value.get(u.value)||a.get(u.value))}),n.value.values=s,n.value.options=c,i}),r=>t.value.get(r)||n.value.options.get(r)]};function Mt(e,t){const{defaultValue:n,value:o=Z()}=t||{};let l=typeof e==\"function\"?e():e;o.value!==void 0&&(l=Ne(o)),n!==void 0&&(l=typeof n==\"function\"?n():n);const r=Z(l),a=Z(l);ze(()=>{let s=o.value!==void 0?o.value:r.value;t.postState&&(s=t.postState(s)),a.value=s});function i(s){const c=a.value;r.value=s,jt(a.value)!==s&&t.onChange&&t.onChange(s,c)}return pe(o,()=>{r.value=o.value}),[a,i]}function yt(e){const t=typeof e==\"function\"?e():e,n=Z(t);function o(l){n.value=l}return[n,o]}const p4=[\"inputValue\"];function S1(){return h(h({},Uu()),{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:W.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:W.any,defaultValue:W.any,onChange:Function,children:Array})}function m4(e){return!e||typeof e!=\"object\"}const v4=ne({compatConfig:{MODE:3},name:\"VcSelect\",inheritAttrs:!1,props:Je(S1(),{prefixCls:\"vc-select\",autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup(e,t){let{expose:n,attrs:o,slots:l}=t;const r=Cv(Ve(e,\"id\")),a=I(()=>p1(e.mode)),i=I(()=>!!(!e.options&&e.children)),s=I(()=>e.filterOption===void 0&&e.mode===\"combobox\"?!1:e.filterOption),c=I(()=>KC(e.fieldNames,i.value)),[u,d]=Mt(\"\",{value:I(()=>e.searchValue!==void 0?e.searchValue:e.inputValue),postState:le=>le||\"\"}),p=s4(Ve(e,\"options\"),Ve(e,\"children\"),c),{valueOptions:m,labelOptions:g,options:v}=p,y=le=>y1(le).map(J=>{var ce,ue;let be,Ce,ge,Se;m4(J)?be=J:(ge=J.key,Ce=J.label,be=(ce=J.value)!==null&&ce!==void 0?ce:ge);const X=m.value.get(be);return X&&(Ce===void 0&&(Ce=X?.[e.optionLabelProp||c.value.label]),ge===void 0&&(ge=(ue=X?.key)!==null&&ue!==void 0?ue:be),Se=X?.disabled),{label:Ce,value:be,key:ge,disabled:Se,option:X}}),[b,S]=Mt(e.defaultValue,{value:Ve(e,\"value\")}),$=I(()=>{var le;const Y=y(b.value);return e.mode===\"combobox\"&&!(!((le=Y[0])===null||le===void 0)&&le.value)?[]:Y}),[w,C]=f4($,m),_=I(()=>{if(!e.mode&&w.value.length===1){const le=w.value[0];if(le.value===null&&(le.label===null||le.label===void 0))return[]}return w.value.map(le=>{var Y;return h(h({},le),{label:(Y=typeof le.label==\"function\"?le.label():le.label)!==null&&Y!==void 0?Y:le.value})})}),x=I(()=>new Set(w.value.map(le=>le.value)));ze(()=>{var le;if(e.mode===\"combobox\"){const Y=(le=w.value[0])===null||le===void 0?void 0:le.value;Y!=null&&d(String(Y))}},{flush:\"post\"});const P=(le,Y)=>{const J=Y??le;return{[c.value.value]:le,[c.value.label]:J}},E=ee();ze(()=>{if(e.mode!==\"tags\"){E.value=v.value;return}const le=v.value.slice(),Y=J=>m.value.has(J);[...w.value].sort((J,ce)=>J.value<ce.value?-1:1).forEach(J=>{const ce=J.value;Y(ce)||le.push(P(ce,J.label))}),E.value=le});const M=d4(E,c,u,s,Ve(e,\"optionFilterProp\")),O=I(()=>e.mode!==\"tags\"||!u.value||M.value.some(le=>le[e.optionFilterProp||\"value\"]===u.value)?M.value:[P(u.value),...M.value]),R=I(()=>e.filterSort?[...O.value].sort((le,Y)=>e.filterSort(le,Y)):O.value),D=I(()=>u3(R.value,{fieldNames:c.value,childrenAsData:i.value})),z=le=>{const Y=y(le);if(S(Y),e.onChange&&(Y.length!==w.value.length||Y.some((J,ce)=>{var ue;return((ue=w.value[ce])===null||ue===void 0?void 0:ue.value)!==J?.value}))){const J=e.labelInValue?Y.map(ue=>h(h({},ue),{originLabel:ue.label,label:typeof ue.label==\"function\"?ue.label():ue.label})):Y.map(ue=>ue.value),ce=Y.map(ue=>Sp(C(ue.value)));e.onChange(a.value?J:J[0],a.value?ce:ce[0])}},[T,k]=yt(null),[B,L]=yt(0),N=I(()=>e.defaultActiveFirstOption!==void 0?e.defaultActiveFirstOption:e.mode!==\"combobox\"),F=function(le,Y){let{source:J=\"keyboard\"}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};L(Y),e.backfill&&e.mode===\"combobox\"&&le!==null&&J===\"keyboard\"&&k(String(le))},j=(le,Y)=>{const J=()=>{var ce;const ue=C(le),be=ue?.[c.value.label];return[e.labelInValue?{label:typeof be==\"function\"?be():be,originLabel:be,value:le,key:(ce=ue?.key)!==null&&ce!==void 0?ce:le}:le,Sp(ue)]};if(Y&&e.onSelect){const[ce,ue]=J();e.onSelect(ce,ue)}else if(!Y&&e.onDeselect){const[ce,ue]=J();e.onDeselect(ce,ue)}},H=(le,Y)=>{let J;const ce=a.value?Y.selected:!0;ce?J=a.value?[...w.value,le]:[le]:J=w.value.filter(ue=>ue.value!==le),z(J),j(le,ce),e.mode===\"combobox\"?k(\"\"):(!a.value||e.autoClearSearchValue)&&(d(\"\"),k(\"\"))},K=(le,Y)=>{z(le),(Y.type===\"remove\"||Y.type===\"clear\")&&Y.values.forEach(J=>{j(J.value,!1)})},G=(le,Y)=>{var J;if(d(le),k(null),Y.source===\"submit\"){const ce=(le||\"\").trim();if(ce){const ue=Array.from(new Set([...x.value,ce]));z(ue),j(ce,!0),d(\"\")}return}Y.source!==\"blur\"&&(e.mode===\"combobox\"&&z(le),(J=e.onSearch)===null||J===void 0||J.call(e,le))},V=le=>{let Y=le;e.mode!==\"tags\"&&(Y=le.map(ce=>{const ue=g.value.get(ce);return ue?.value}).filter(ce=>ce!==void 0));const J=Array.from(new Set([...x.value,...Y]));z(J),J.forEach(ce=>{j(ce,!0)})},q=I(()=>e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1);n4(Wc(h(h({},p),{flattenOptions:D,onActiveValue:F,defaultActiveFirstOption:N,onSelect:H,menuItemSelectedIcon:Ve(e,\"menuItemSelectedIcon\"),rawValues:x,fieldNames:c,virtual:q,listHeight:Ve(e,\"listHeight\"),listItemHeight:Ve(e,\"listItemHeight\"),childrenAsData:i})));const Q=Z();n({focus(){var le;(le=Q.value)===null||le===void 0||le.focus()},blur(){var le;(le=Q.value)===null||le===void 0||le.blur()},scrollTo(le){var Y;(Y=Q.value)===null||Y===void 0||Y.scrollTo(le)}});const oe=I(()=>lt(e,[\"id\",\"mode\",\"prefixCls\",\"backfill\",\"fieldNames\",\"inputValue\",\"searchValue\",\"onSearch\",\"autoClearSearchValue\",\"onSelect\",\"onDeselect\",\"dropdownMatchSelectWidth\",\"filterOption\",\"filterSort\",\"optionFilterProp\",\"optionLabelProp\",\"options\",\"children\",\"defaultActiveFirstOption\",\"menuItemSelectedIcon\",\"virtual\",\"listHeight\",\"listItemHeight\",\"value\",\"defaultValue\",\"labelInValue\",\"onChange\"]));return()=>f(Sv,A(A(A({},oe.value),o),{},{id:r,prefixCls:e.prefixCls,ref:Q,omitDomProps:p4,mode:e.mode,displayValues:_.value,onDisplayValuesChange:K,searchValue:u.value,onSearch:G,onSearchSplit:V,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:r4,emptyOptions:!D.value.length,activeValue:T.value,activeDescendantId:`${r}_list_${B.value}`}),l)}}),xv=()=>null;xv.isSelectOption=!0;xv.displayName=\"ASelectOption\";const wv=()=>null;wv.isSelectOptGroup=!0;wv.displayName=\"ASelectOptGroup\";function _v(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{loading:n,multiple:o,prefixCls:l,hasFeedback:r,feedbackIcon:a,showArrow:i}=e,s=e.suffixIcon||t.suffixIcon&&t.suffixIcon(),c=e.clearIcon||t.clearIcon&&t.clearIcon(),u=e.menuItemSelectedIcon||t.menuItemSelectedIcon&&t.menuItemSelectedIcon(),d=e.removeIcon||t.removeIcon&&t.removeIcon(),p=c??f(Vn,null,null),m=b=>f(He,null,[i!==!1&&b,r&&a]);let g=null;if(s!==void 0)g=m(s);else if(n)g=m(f(eo,{spin:!0},null));else{const b=`${l}-suffix`;g=S=>{let{open:$,showSearch:w}=S;return m($&&w?f(Pu,{class:b},null):f(_a,{class:b},null))}}let v=null;u!==void 0?v=u:o?v=f(Iu,null,null):v=null;let y=null;return d!==void 0?y=d:y=f(Kn,null,null),{clearIcon:p,suffixIcon:g,itemIcon:v,removeIcon:y}}function Iv(e){const t=Symbol(\"contextKey\");return{useProvide:(l,r)=>{const a=gt({});return et(t,a),ze(()=>{h(a,l,r||{})}),a},useInject:()=>nt(t,e)||{}}}const Vc=Symbol(\"ContextProps\"),Kc=Symbol(\"InternalContextProps\"),g4=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:I(()=>!0);const n=Z(new Map),o=(r,a)=>{n.value.set(r,a),n.value=new Map(n.value)},l=r=>{n.value.delete(r),n.value=new Map(n.value)};pe([t,n],()=>{}),et(Vc,e),et(Kc,{addFormItemField:o,removeFormItemField:l})},Ip={id:I(()=>{}),onFieldBlur:()=>{},onFieldChange:()=>{},clearValidate:()=>{}},Pp={addFormItemField:()=>{},removeFormItemField:()=>{}},Jt=()=>{const e=nt(Kc,Pp),t=Symbol(\"FormItemFieldKey\"),n=fn();return e.addFormItemField(t,n.type),ot(()=>{e.removeFormItemField(t)}),et(Kc,Pp),et(Vc,Ip),nt(Vc,Ip)},Gc=ne({compatConfig:{MODE:3},name:\"AFormItemRest\",setup(e,t){let{slots:n}=t;return et(Kc,Pp),et(Vc,Ip),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),un=Iv({}),Xc=ne({name:\"NoFormStatus\",setup(e,t){let{slots:n}=t;return un.useProvide({}),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}});function Cn(e,t,n){return re({[`${e}-status-success`]:t===\"success\",[`${e}-status-warning`]:t===\"warning\",[`${e}-status-error`]:t===\"error\",[`${e}-status-validating`]:t===\"validating\",[`${e}-has-feedback`]:n})}const Ro=(e,t)=>t||e,h4=e=>{const{componentCls:t}=e;return{[t]:{display:\"inline-flex\",\"&-block\":{display:\"flex\",width:\"100%\"},\"&-vertical\":{flexDirection:\"column\"}}}},b4=e=>{const{componentCls:t}=e;return{[t]:{display:\"inline-flex\",\"&-rtl\":{direction:\"rtl\"},\"&-vertical\":{flexDirection:\"column\"},\"&-align\":{flexDirection:\"column\",\"&-center\":{alignItems:\"center\"},\"&-start\":{alignItems:\"flex-start\"},\"&-end\":{alignItems:\"flex-end\"},\"&-baseline\":{alignItems:\"baseline\"}},[`${t}-item`]:{\"&:empty\":{display:\"none\"}}}}},$1=Xe(\"Space\",e=>[b4(e),h4(e)]),y4=()=>({compactSize:String,compactDirection:W.oneOf(hn(\"horizontal\",\"vertical\")).def(\"horizontal\"),isFirstItem:ye(),isLastItem:ye()}),qu=Iv(null),Xl=(e,t)=>{const n=qu.useInject(),o=I(()=>{if(!n||s$(n))return\"\";const{compactDirection:l,isFirstItem:r,isLastItem:a}=n,i=l===\"vertical\"?\"-vertical-\":\"-\";return re({[`${e.value}-compact${i}item`]:!0,[`${e.value}-compact${i}first-item`]:r,[`${e.value}-compact${i}last-item`]:a,[`${e.value}-compact${i}item-rtl`]:t.value===\"rtl\"})});return{compactSize:I(()=>n?.compactSize),compactDirection:I(()=>n?.compactDirection),compactItemClassnames:o}},Ci=ne({name:\"NoCompactStyle\",setup(e,t){let{slots:n}=t;return qu.useProvide(null),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),S4=()=>({prefixCls:String,size:{type:String},direction:W.oneOf(hn(\"horizontal\",\"vertical\")).def(\"horizontal\"),align:W.oneOf(hn(\"start\",\"end\",\"center\",\"baseline\")),block:{type:Boolean,default:void 0}}),$4=ne({name:\"CompactItem\",props:y4(),setup(e,t){let{slots:n}=t;return qu.useProvide(e),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),Uc=ne({name:\"ASpaceCompact\",inheritAttrs:!1,props:S4(),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:l,direction:r}=Te(\"space-compact\",e),a=qu.useInject(),[i,s]=$1(l),c=I(()=>re(l.value,s.value,{[`${l.value}-rtl`]:r.value===\"rtl\",[`${l.value}-block`]:e.block,[`${l.value}-vertical`]:e.direction===\"vertical\"}));return()=>{var u;const d=xt(((u=o.default)===null||u===void 0?void 0:u.call(o))||[]);return d.length===0?null:i(f(\"div\",A(A({},n),{},{class:[c.value,n.class]}),[d.map((p,m)=>{var g;const v=p&&p.key||`${l.value}-item-${m}`,y=!a||s$(a);return f($4,{key:v,compactSize:(g=e.size)!==null&&g!==void 0?g:\"middle\",compactDirection:e.direction,isFirstItem:m===0&&(y||a?.isFirstItem),isLastItem:m===d.length-1&&(y||a?.isLastItem)},{default:()=>[p]})})]))}}}),C4=e=>({animationDuration:e,animationFillMode:\"both\"}),x4=e=>({animationDuration:e,animationFillMode:\"both\"}),Li=function(e,t,n,o){const r=(arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1)?\"&\":\"\";return{[`\n      ${r}${e}-enter,\n      ${r}${e}-appear\n    `]:h(h({},C4(o)),{animationPlayState:\"paused\"}),[`${r}${e}-leave`]:h(h({},x4(o)),{animationPlayState:\"paused\"}),[`\n      ${r}${e}-enter${e}-enter-active,\n      ${r}${e}-appear${e}-appear-active\n    `]:{animationName:t,animationPlayState:\"running\"},[`${r}${e}-leave${e}-leave-active`]:{animationName:n,animationPlayState:\"running\",pointerEvents:\"none\"}}},w4=new rt(\"antFadeIn\",{\"0%\":{opacity:0},\"100%\":{opacity:1}}),_4=new rt(\"antFadeOut\",{\"0%\":{opacity:1},\"100%\":{opacity:0}}),Pv=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const{antCls:n}=e,o=`${n}-fade`,l=t?\"&\":\"\";return[Li(o,w4,_4,e.motionDurationMid,t),{[`\n        ${l}${o}-enter,\n        ${l}${o}-appear\n      `]:{opacity:0,animationTimingFunction:\"linear\"},[`${l}${o}-leave`]:{animationTimingFunction:\"linear\"}}]},I4=new rt(\"antMoveDownIn\",{\"0%\":{transform:\"translate3d(0, 100%, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),P4=new rt(\"antMoveDownOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(0, 100%, 0)\",transformOrigin:\"0 0\",opacity:0}}),T4=new rt(\"antMoveLeftIn\",{\"0%\":{transform:\"translate3d(-100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),O4=new rt(\"antMoveLeftOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(-100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0}}),E4=new rt(\"antMoveRightIn\",{\"0%\":{transform:\"translate3d(100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),M4=new rt(\"antMoveRightOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0}}),A4=new rt(\"antMoveUpIn\",{\"0%\":{transform:\"translate3d(0, -100%, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),D4=new rt(\"antMoveUpOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(0, -100%, 0)\",transformOrigin:\"0 0\",opacity:0}}),R4={\"move-up\":{inKeyframes:A4,outKeyframes:D4},\"move-down\":{inKeyframes:I4,outKeyframes:P4},\"move-left\":{inKeyframes:T4,outKeyframes:O4},\"move-right\":{inKeyframes:E4,outKeyframes:M4}},$a=(e,t)=>{const{antCls:n}=e,o=`${n}-${t}`,{inKeyframes:l,outKeyframes:r}=R4[t];return[Li(o,l,r,e.motionDurationMid),{[`\n        ${o}-enter,\n        ${o}-appear\n      `]:{opacity:0,animationTimingFunction:e.motionEaseOutCirc},[`${o}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},Zu=new rt(\"antSlideUpIn\",{\"0%\":{transform:\"scaleY(0.8)\",transformOrigin:\"0% 0%\",opacity:0},\"100%\":{transform:\"scaleY(1)\",transformOrigin:\"0% 0%\",opacity:1}}),Qu=new rt(\"antSlideUpOut\",{\"0%\":{transform:\"scaleY(1)\",transformOrigin:\"0% 0%\",opacity:1},\"100%\":{transform:\"scaleY(0.8)\",transformOrigin:\"0% 0%\",opacity:0}}),Ju=new rt(\"antSlideDownIn\",{\"0%\":{transform:\"scaleY(0.8)\",transformOrigin:\"100% 100%\",opacity:0},\"100%\":{transform:\"scaleY(1)\",transformOrigin:\"100% 100%\",opacity:1}}),ed=new rt(\"antSlideDownOut\",{\"0%\":{transform:\"scaleY(1)\",transformOrigin:\"100% 100%\",opacity:1},\"100%\":{transform:\"scaleY(0.8)\",transformOrigin:\"100% 100%\",opacity:0}}),k4=new rt(\"antSlideLeftIn\",{\"0%\":{transform:\"scaleX(0.8)\",transformOrigin:\"0% 0%\",opacity:0},\"100%\":{transform:\"scaleX(1)\",transformOrigin:\"0% 0%\",opacity:1}}),N4=new rt(\"antSlideLeftOut\",{\"0%\":{transform:\"scaleX(1)\",transformOrigin:\"0% 0%\",opacity:1},\"100%\":{transform:\"scaleX(0.8)\",transformOrigin:\"0% 0%\",opacity:0}}),B4=new rt(\"antSlideRightIn\",{\"0%\":{transform:\"scaleX(0.8)\",transformOrigin:\"100% 0%\",opacity:0},\"100%\":{transform:\"scaleX(1)\",transformOrigin:\"100% 0%\",opacity:1}}),L4=new rt(\"antSlideRightOut\",{\"0%\":{transform:\"scaleX(1)\",transformOrigin:\"100% 0%\",opacity:1},\"100%\":{transform:\"scaleX(0.8)\",transformOrigin:\"100% 0%\",opacity:0}}),F4={\"slide-up\":{inKeyframes:Zu,outKeyframes:Qu},\"slide-down\":{inKeyframes:Ju,outKeyframes:ed},\"slide-left\":{inKeyframes:k4,outKeyframes:N4},\"slide-right\":{inKeyframes:B4,outKeyframes:L4}},Uo=(e,t)=>{const{antCls:n}=e,o=`${n}-${t}`,{inKeyframes:l,outKeyframes:r}=F4[t];return[Li(o,l,r,e.motionDurationMid),{[`\n      ${o}-enter,\n      ${o}-appear\n    `]:{transform:\"scale(0)\",transformOrigin:\"0% 0%\",opacity:0,animationTimingFunction:e.motionEaseOutQuint},[`${o}-leave`]:{animationTimingFunction:e.motionEaseInQuint}}]},Tv=new rt(\"antZoomIn\",{\"0%\":{transform:\"scale(0.2)\",opacity:0},\"100%\":{transform:\"scale(1)\",opacity:1}}),z4=new rt(\"antZoomOut\",{\"0%\":{transform:\"scale(1)\"},\"100%\":{transform:\"scale(0.2)\",opacity:0}}),q0=new rt(\"antZoomBigIn\",{\"0%\":{transform:\"scale(0.8)\",opacity:0},\"100%\":{transform:\"scale(1)\",opacity:1}}),Z0=new rt(\"antZoomBigOut\",{\"0%\":{transform:\"scale(1)\"},\"100%\":{transform:\"scale(0.8)\",opacity:0}}),H4=new rt(\"antZoomUpIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 0%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"50% 0%\"}}),j4=new rt(\"antZoomUpOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"50% 0%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 0%\",opacity:0}}),W4=new rt(\"antZoomLeftIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"0% 50%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"0% 50%\"}}),V4=new rt(\"antZoomLeftOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"0% 50%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"0% 50%\",opacity:0}}),K4=new rt(\"antZoomRightIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"100% 50%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"100% 50%\"}}),G4=new rt(\"antZoomRightOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"100% 50%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"100% 50%\",opacity:0}}),X4=new rt(\"antZoomDownIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 100%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"50% 100%\"}}),U4=new rt(\"antZoomDownOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"50% 100%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 100%\",opacity:0}}),Y4={zoom:{inKeyframes:Tv,outKeyframes:z4},\"zoom-big\":{inKeyframes:q0,outKeyframes:Z0},\"zoom-big-fast\":{inKeyframes:q0,outKeyframes:Z0},\"zoom-left\":{inKeyframes:W4,outKeyframes:V4},\"zoom-right\":{inKeyframes:K4,outKeyframes:G4},\"zoom-up\":{inKeyframes:H4,outKeyframes:j4},\"zoom-down\":{inKeyframes:X4,outKeyframes:U4}},Oa=(e,t)=>{const{antCls:n}=e,o=`${n}-${t}`,{inKeyframes:l,outKeyframes:r}=Y4[t];return[Li(o,l,r,t===\"zoom-big-fast\"?e.motionDurationFast:e.motionDurationMid),{[`\n        ${o}-enter,\n        ${o}-appear\n      `]:{transform:\"scale(0)\",opacity:0,animationTimingFunction:e.motionEaseOutCirc,\"&-prepare\":{transform:\"none\"}},[`${o}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},Fi=e=>({[e.componentCls]:{[`${e.antCls}-motion-collapse-legacy`]:{overflow:\"hidden\",\"&-active\":{transition:`height ${e.motionDurationMid} ${e.motionEaseInOut},\n        opacity ${e.motionDurationMid} ${e.motionEaseInOut} !important`}},[`${e.antCls}-motion-collapse`]:{overflow:\"hidden\",transition:`height ${e.motionDurationMid} ${e.motionEaseInOut},\n        opacity ${e.motionDurationMid} ${e.motionEaseInOut} !important`}}}),Q0=e=>{const{controlPaddingHorizontal:t}=e;return{position:\"relative\",display:\"block\",minHeight:e.controlHeight,padding:`${(e.controlHeight-e.fontSize*e.lineHeight)/2}px ${t}px`,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,lineHeight:e.lineHeight,boxSizing:\"border-box\"}},q4=e=>{const{antCls:t,componentCls:n}=e,o=`${n}-item`;return[{[`${n}-dropdown`]:h(h({},qe(e)),{position:\"absolute\",top:-9999,zIndex:e.zIndexPopup,boxSizing:\"border-box\",padding:e.paddingXXS,overflow:\"hidden\",fontSize:e.fontSize,fontVariant:\"initial\",backgroundColor:e.colorBgElevated,borderRadius:e.borderRadiusLG,outline:\"none\",boxShadow:e.boxShadowSecondary,[`\n            &${t}-slide-up-enter${t}-slide-up-enter-active${n}-dropdown-placement-bottomLeft,\n            &${t}-slide-up-appear${t}-slide-up-appear-active${n}-dropdown-placement-bottomLeft\n          `]:{animationName:Zu},[`\n            &${t}-slide-up-enter${t}-slide-up-enter-active${n}-dropdown-placement-topLeft,\n            &${t}-slide-up-appear${t}-slide-up-appear-active${n}-dropdown-placement-topLeft\n          `]:{animationName:Ju},[`&${t}-slide-up-leave${t}-slide-up-leave-active${n}-dropdown-placement-bottomLeft`]:{animationName:Qu},[`&${t}-slide-up-leave${t}-slide-up-leave-active${n}-dropdown-placement-topLeft`]:{animationName:ed},\"&-hidden\":{display:\"none\"},\"&-empty\":{color:e.colorTextDisabled},[`${o}-empty`]:h(h({},Q0(e)),{color:e.colorTextDisabled}),[`${o}`]:h(h({},Q0(e)),{cursor:\"pointer\",transition:`background ${e.motionDurationSlow} ease`,borderRadius:e.borderRadiusSM,\"&-group\":{color:e.colorTextDescription,fontSize:e.fontSizeSM,cursor:\"default\"},\"&-option\":{display:\"flex\",\"&-content\":h({flex:\"auto\"},Xt),\"&-state\":{flex:\"none\"},[`&-active:not(${o}-option-disabled)`]:{backgroundColor:e.controlItemBgHover},[`&-selected:not(${o}-option-disabled)`]:{color:e.colorText,fontWeight:e.fontWeightStrong,backgroundColor:e.controlItemBgActive,[`${o}-option-state`]:{color:e.colorPrimary}},\"&-disabled\":{[`&${o}-option-selected`]:{backgroundColor:e.colorBgContainerDisabled},color:e.colorTextDisabled,cursor:\"not-allowed\"},\"&-grouped\":{paddingInlineStart:e.controlPaddingHorizontal*2}}}),\"&-rtl\":{direction:\"rtl\"}})},Uo(e,\"slide-up\"),Uo(e,\"slide-down\"),$a(e,\"move-up\"),$a(e,\"move-down\")]},Lr=2;function C1(e){let{controlHeightSM:t,controlHeight:n,lineWidth:o}=e;const l=(n-t)/2-o,r=Math.ceil(l/2);return[l,r]}function Jd(e,t){const{componentCls:n,iconCls:o}=e,l=`${n}-selection-overflow`,r=e.controlHeightSM,[a]=C1(e),i=t?`${n}-${t}`:\"\";return{[`${n}-multiple${i}`]:{fontSize:e.fontSize,[l]:{position:\"relative\",display:\"flex\",flex:\"auto\",flexWrap:\"wrap\",maxWidth:\"100%\",\"&-item\":{flex:\"none\",alignSelf:\"center\",maxWidth:\"100%\",display:\"inline-flex\"}},[`${n}-selector`]:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",padding:`${a-Lr}px ${Lr*2}px`,borderRadius:e.borderRadius,[`${n}-show-search&`]:{cursor:\"text\"},[`${n}-disabled&`]:{background:e.colorBgContainerDisabled,cursor:\"not-allowed\"},\"&:after\":{display:\"inline-block\",width:0,margin:`${Lr}px 0`,lineHeight:`${r}px`,content:'\"\\\\a0\"'}},[`\n        &${n}-show-arrow ${n}-selector,\n        &${n}-allow-clear ${n}-selector\n      `]:{paddingInlineEnd:e.fontSizeIcon+e.controlPaddingHorizontal},[`${n}-selection-item`]:{position:\"relative\",display:\"flex\",flex:\"none\",boxSizing:\"border-box\",maxWidth:\"100%\",height:r,marginTop:Lr,marginBottom:Lr,lineHeight:`${r-e.lineWidth*2}px`,background:e.colorFillSecondary,border:`${e.lineWidth}px solid ${e.colorSplit}`,borderRadius:e.borderRadiusSM,cursor:\"default\",transition:`font-size ${e.motionDurationSlow}, line-height ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,userSelect:\"none\",marginInlineEnd:Lr*2,paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS/2,[`${n}-disabled&`]:{color:e.colorTextDisabled,borderColor:e.colorBorder,cursor:\"not-allowed\"},\"&-content\":{display:\"inline-block\",marginInlineEnd:e.paddingXS/2,overflow:\"hidden\",whiteSpace:\"pre\",textOverflow:\"ellipsis\"},\"&-remove\":h(h({},Tr()),{display:\"inline-block\",color:e.colorIcon,fontWeight:\"bold\",fontSize:10,lineHeight:\"inherit\",cursor:\"pointer\",[`> ${o}`]:{verticalAlign:\"-0.2em\"},\"&:hover\":{color:e.colorIconHover}})},[`${l}-item + ${l}-item`]:{[`${n}-selection-search`]:{marginInlineStart:0}},[`${n}-selection-search`]:{display:\"inline-flex\",position:\"relative\",maxWidth:\"100%\",marginInlineStart:e.inputPaddingHorizontalBase-a,\"\\n          &-input,\\n          &-mirror\\n        \":{height:r,fontFamily:e.fontFamily,lineHeight:`${r}px`,transition:`all ${e.motionDurationSlow}`},\"&-input\":{width:\"100%\",minWidth:4.1},\"&-mirror\":{position:\"absolute\",top:0,insetInlineStart:0,insetInlineEnd:\"auto\",zIndex:999,whiteSpace:\"pre\",visibility:\"hidden\"}},[`${n}-selection-placeholder `]:{position:\"absolute\",top:\"50%\",insetInlineStart:e.inputPaddingHorizontalBase,insetInlineEnd:e.inputPaddingHorizontalBase,transform:\"translateY(-50%)\",transition:`all ${e.motionDurationSlow}`}}}}function Z4(e){const{componentCls:t}=e,n=Le(e,{controlHeight:e.controlHeightSM,controlHeightSM:e.controlHeightXS,borderRadius:e.borderRadiusSM,borderRadiusSM:e.borderRadiusXS}),[,o]=C1(e);return[Jd(e),Jd(n,\"sm\"),{[`${t}-multiple${t}-sm`]:{[`${t}-selection-placeholder`]:{insetInlineStart:e.controlPaddingHorizontalSM-e.lineWidth,insetInlineEnd:\"auto\"},[`${t}-selection-search`]:{marginInlineStart:o}}},Jd(Le(e,{fontSize:e.fontSizeLG,controlHeight:e.controlHeightLG,controlHeightSM:e.controlHeight,borderRadius:e.borderRadiusLG,borderRadiusSM:e.borderRadius}),\"lg\")]}function ef(e,t){const{componentCls:n,inputPaddingHorizontalBase:o,borderRadius:l}=e,r=e.controlHeight-e.lineWidth*2,a=Math.ceil(e.fontSize*1.25),i=t?`${n}-${t}`:\"\";return{[`${n}-single${i}`]:{fontSize:e.fontSize,[`${n}-selector`]:h(h({},qe(e)),{display:\"flex\",borderRadius:l,[`${n}-selection-search`]:{position:\"absolute\",top:0,insetInlineStart:o,insetInlineEnd:o,bottom:0,\"&-input\":{width:\"100%\"}},[`\n          ${n}-selection-item,\n          ${n}-selection-placeholder\n        `]:{padding:0,lineHeight:`${r}px`,transition:`all ${e.motionDurationSlow}`,\"@supports (-moz-appearance: meterbar)\":{lineHeight:`${r}px`}},[`${n}-selection-item`]:{position:\"relative\",userSelect:\"none\"},[`${n}-selection-placeholder`]:{transition:\"none\",pointerEvents:\"none\"},[[\"&:after\",`${n}-selection-item:after`,`${n}-selection-placeholder:after`].join(\",\")]:{display:\"inline-block\",width:0,visibility:\"hidden\",content:'\"\\\\a0\"'}}),[`\n        &${n}-show-arrow ${n}-selection-item,\n        &${n}-show-arrow ${n}-selection-placeholder\n      `]:{paddingInlineEnd:a},[`&${n}-open ${n}-selection-item`]:{color:e.colorTextPlaceholder},[`&:not(${n}-customize-input)`]:{[`${n}-selector`]:{width:\"100%\",height:e.controlHeight,padding:`0 ${o}px`,[`${n}-selection-search-input`]:{height:r},\"&:after\":{lineHeight:`${r}px`}}},[`&${n}-customize-input`]:{[`${n}-selector`]:{\"&:after\":{display:\"none\"},[`${n}-selection-search`]:{position:\"static\",width:\"100%\"},[`${n}-selection-placeholder`]:{position:\"absolute\",insetInlineStart:0,insetInlineEnd:0,padding:`0 ${o}px`,\"&:after\":{display:\"none\"}}}}}}}function Q4(e){const{componentCls:t}=e,n=e.controlPaddingHorizontalSM-e.lineWidth;return[ef(e),ef(Le(e,{controlHeight:e.controlHeightSM,borderRadius:e.borderRadiusSM}),\"sm\"),{[`${t}-single${t}-sm`]:{[`&:not(${t}-customize-input)`]:{[`${t}-selection-search`]:{insetInlineStart:n,insetInlineEnd:n},[`${t}-selector`]:{padding:`0 ${n}px`},[`&${t}-show-arrow ${t}-selection-search`]:{insetInlineEnd:n+e.fontSize*1.5},[`\n            &${t}-show-arrow ${t}-selection-item,\n            &${t}-show-arrow ${t}-selection-placeholder\n          `]:{paddingInlineEnd:e.fontSize*1.5}}}},ef(Le(e,{controlHeight:e.controlHeightLG,fontSize:e.fontSizeLG,borderRadius:e.borderRadiusLG}),\"lg\")]}function J4(e,t,n){const{focusElCls:o,focus:l,borderElCls:r}=n,a=r?\"> *\":\"\",i=[\"hover\",l?\"focus\":null,\"active\"].filter(Boolean).map(s=>`&:${s} ${a}`).join(\",\");return{[`&-item:not(${t}-last-item)`]:{marginInlineEnd:-e.lineWidth},\"&-item\":h(h({[i]:{zIndex:2}},o?{[`&${o}`]:{zIndex:2}}:{}),{[`&[disabled] ${a}`]:{zIndex:0}})}}function eD(e,t,n){const{borderElCls:o}=n,l=o?`> ${o}`:\"\";return{[`&-item:not(${t}-first-item):not(${t}-last-item) ${l}`]:{borderRadius:0},[`&-item:not(${t}-last-item)${t}-first-item`]:{[`& ${l}, &${e}-sm ${l}, &${e}-lg ${l}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&-item:not(${t}-first-item)${t}-last-item`]:{[`& ${l}, &${e}-sm ${l}, &${e}-lg ${l}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}function Ea(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{focus:!0};const{componentCls:n}=e,o=`${n}-compact`;return{[o]:h(h({},J4(e,o,t)),eD(n,o,t))}}const tD=e=>{const{componentCls:t}=e;return{position:\"relative\",backgroundColor:e.colorBgContainer,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,input:{cursor:\"pointer\"},[`${t}-show-search&`]:{cursor:\"text\",input:{cursor:\"auto\",color:\"inherit\"}},[`${t}-disabled&`]:{color:e.colorTextDisabled,background:e.colorBgContainerDisabled,cursor:\"not-allowed\",[`${t}-multiple&`]:{background:e.colorBgContainerDisabled},input:{cursor:\"not-allowed\"}}}},tf=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{componentCls:o,borderHoverColor:l,outlineColor:r,antCls:a}=t,i=n?{[`${o}-selector`]:{borderColor:l}}:{};return{[e]:{[`&:not(${o}-disabled):not(${o}-customize-input):not(${a}-pagination-size-changer)`]:h(h({},i),{[`${o}-focused& ${o}-selector`]:{borderColor:l,boxShadow:`0 0 0 ${t.controlOutlineWidth}px ${r}`,borderInlineEndWidth:`${t.controlLineWidth}px !important`,outline:0},[`&:hover ${o}-selector`]:{borderColor:l,borderInlineEndWidth:`${t.controlLineWidth}px !important`}})}}},nD=e=>{const{componentCls:t}=e;return{[`${t}-selection-search-input`]:{margin:0,padding:0,background:\"transparent\",border:\"none\",outline:\"none\",appearance:\"none\",\"&::-webkit-search-cancel-button\":{display:\"none\",\"-webkit-appearance\":\"none\"}}}},oD=e=>{const{componentCls:t,inputPaddingHorizontalBase:n,iconCls:o}=e;return{[t]:h(h({},qe(e)),{position:\"relative\",display:\"inline-block\",cursor:\"pointer\",[`&:not(${t}-customize-input) ${t}-selector`]:h(h({},tD(e)),nD(e)),[`${t}-selection-item`]:h({flex:1,fontWeight:\"normal\"},Xt),[`${t}-selection-placeholder`]:h(h({},Xt),{flex:1,color:e.colorTextPlaceholder,pointerEvents:\"none\"}),[`${t}-arrow`]:h(h({},Tr()),{position:\"absolute\",top:\"50%\",insetInlineStart:\"auto\",insetInlineEnd:n,height:e.fontSizeIcon,marginTop:-e.fontSizeIcon/2,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,lineHeight:1,textAlign:\"center\",pointerEvents:\"none\",display:\"flex\",alignItems:\"center\",[o]:{verticalAlign:\"top\",transition:`transform ${e.motionDurationSlow}`,\"> svg\":{verticalAlign:\"top\"},[`&:not(${t}-suffix)`]:{pointerEvents:\"auto\"}},[`${t}-disabled &`]:{cursor:\"not-allowed\"},\"> *:not(:last-child)\":{marginInlineEnd:8}}),[`${t}-clear`]:{position:\"absolute\",top:\"50%\",insetInlineStart:\"auto\",insetInlineEnd:n,zIndex:1,display:\"inline-block\",width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:-e.fontSizeIcon/2,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:\"normal\",lineHeight:1,textAlign:\"center\",textTransform:\"none\",background:e.colorBgContainer,cursor:\"pointer\",opacity:0,transition:`color ${e.motionDurationMid} ease, opacity ${e.motionDurationSlow} ease`,textRendering:\"auto\",\"&:before\":{display:\"block\"},\"&:hover\":{color:e.colorTextTertiary}},\"&:hover\":{[`${t}-clear`]:{opacity:1}}}),[`${t}-has-feedback`]:{[`${t}-clear`]:{insetInlineEnd:n+e.fontSize+e.paddingXXS}}}},lD=e=>{const{componentCls:t}=e;return[{[t]:{[`&-borderless ${t}-selector`]:{backgroundColor:\"transparent !important\",borderColor:\"transparent !important\",boxShadow:\"none !important\"},[`&${t}-in-form-item`]:{width:\"100%\"}}},oD(e),Q4(e),Z4(e),q4(e),{[`${t}-rtl`]:{direction:\"rtl\"}},tf(t,Le(e,{borderHoverColor:e.colorPrimaryHover,outlineColor:e.controlOutline})),tf(`${t}-status-error`,Le(e,{borderHoverColor:e.colorErrorHover,outlineColor:e.colorErrorOutline}),!0),tf(`${t}-status-warning`,Le(e,{borderHoverColor:e.colorWarningHover,outlineColor:e.colorWarningOutline}),!0),Ea(e,{borderElCls:`${t}-selector`,focusElCls:`${t}-focused`})]},Ov=Xe(\"Select\",(e,t)=>{let{rootPrefixCls:n}=t;const o=Le(e,{rootPrefixCls:n,inputPaddingHorizontalBase:e.paddingSM-1});return[lD(o)]},e=>({zIndexPopup:e.zIndexPopupBase+50})),td=()=>h(h({},lt(S1(),[\"inputIcon\",\"mode\",\"getInputElement\",\"getRawInputElement\",\"backfill\"])),{value:Fe([Array,Object,String,Number]),defaultValue:Fe([Array,Object,String,Number]),notFoundContent:W.any,suffixIcon:W.any,itemIcon:W.any,size:ke(),mode:ke(),bordered:ye(!0),transitionName:String,choiceTransitionName:ke(\"\"),popupClassName:String,dropdownClassName:String,placement:ke(),status:ke(),\"onUpdate:value\":de()}),J0=\"SECRET_COMBOBOX_MODE_DO_NOT_USE\",nn=ne({compatConfig:{MODE:3},name:\"ASelect\",Option:xv,OptGroup:wv,inheritAttrs:!1,props:Je(td(),{listHeight:256,listItemHeight:24}),SECRET_COMBOBOX_MODE_DO_NOT_USE:J0,slots:Object,setup(e,t){let{attrs:n,emit:o,slots:l,expose:r}=t;const a=Z(),i=Jt(),s=un.useInject(),c=I(()=>Ro(s.status,e.status)),u=()=>{var j;(j=a.value)===null||j===void 0||j.focus()},d=()=>{var j;(j=a.value)===null||j===void 0||j.blur()},p=j=>{var H;(H=a.value)===null||H===void 0||H.scrollTo(j)},m=I(()=>{const{mode:j}=e;if(j!==\"combobox\")return j===J0?\"combobox\":j}),{prefixCls:g,direction:v,renderEmpty:y,size:b,getPrefixCls:S,getPopupContainer:$,disabled:w,select:C}=Te(\"select\",e),{compactSize:_,compactItemClassnames:x}=Xl(g,v),P=I(()=>_.value||b.value),E=jn(),M=I(()=>{var j;return(j=w.value)!==null&&j!==void 0?j:E.value}),[O,R]=Ov(g),D=I(()=>S()),z=I(()=>e.placement!==void 0?e.placement:v.value===\"rtl\"?\"bottomRight\":\"bottomLeft\"),T=I(()=>_n(D.value,gv(z.value),e.transitionName)),k=I(()=>re({[`${g.value}-lg`]:P.value===\"large\",[`${g.value}-sm`]:P.value===\"small\",[`${g.value}-rtl`]:v.value===\"rtl\",[`${g.value}-borderless`]:!e.bordered,[`${g.value}-in-form-item`]:s.isFormItemInput},Cn(g.value,c.value,s.hasFeedback),x.value,R.value)),B=function(){for(var j=arguments.length,H=new Array(j),K=0;K<j;K++)H[K]=arguments[K];o(\"update:value\",H[0]),o(\"change\",...H),i.onFieldChange()},L=j=>{o(\"blur\",j),i.onFieldBlur()};r({blur:d,focus:u,scrollTo:p});const N=I(()=>m.value===\"multiple\"||m.value===\"tags\"),F=I(()=>e.showArrow!==void 0?e.showArrow:e.loading||!(N.value||m.value===\"combobox\"));return()=>{var j,H,K,G;const{notFoundContent:V,listHeight:q=256,listItemHeight:Q=24,popupClassName:oe,dropdownClassName:le,virtual:Y,dropdownMatchSelectWidth:J,id:ce=i.id.value,placeholder:ue=(j=l.placeholder)===null||j===void 0?void 0:j.call(l),showArrow:be}=e,{hasFeedback:Ce,feedbackIcon:ge}=s;let Se;V!==void 0?Se=V:l.notFoundContent?Se=l.notFoundContent():m.value===\"combobox\"?Se=null:Se=y?.(\"Select\")||f(lv,{componentName:\"Select\"},null);const{suffixIcon:X,itemIcon:U,removeIcon:ie,clearIcon:ve}=_v(h(h({},e),{multiple:N.value,prefixCls:g.value,hasFeedback:Ce,feedbackIcon:ge,showArrow:F.value}),l),me=lt(e,[\"prefixCls\",\"suffixIcon\",\"itemIcon\",\"removeIcon\",\"clearIcon\",\"size\",\"bordered\",\"status\"]),he=re(oe||le,{[`${g.value}-dropdown-${v.value}`]:v.value===\"rtl\"},R.value);return O(f(v4,A(A(A({ref:a,virtual:Y,dropdownMatchSelectWidth:J},me),n),{},{showSearch:(H=e.showSearch)!==null&&H!==void 0?H:(K=C?.value)===null||K===void 0?void 0:K.showSearch,placeholder:ue,listHeight:q,listItemHeight:Q,mode:m.value,prefixCls:g.value,direction:v.value,inputIcon:X,menuItemSelectedIcon:U,removeIcon:ie,clearIcon:ve,notFoundContent:Se,class:[k.value,n.class],getPopupContainer:$?.value,dropdownClassName:he,onChange:B,onBlur:L,id:ce,dropdownRender:me.dropdownRender||l.dropdownRender,transitionName:T.value,children:(G=l.default)===null||G===void 0?void 0:G.call(l),tagRender:e.tagRender||l.tagRender,optionLabelRender:l.optionLabel,maxTagPlaceholder:e.maxTagPlaceholder||l.maxTagPlaceholder,showArrow:Ce||be,disabled:M.value}),{option:l.option}))}}});nn.install=function(e){return e.component(nn.name,nn),e.component(nn.Option.displayName,nn.Option),e.component(nn.OptGroup.displayName,nn.OptGroup),e};const Ev=nn.Option,rD=nn.OptGroup,Dl=()=>null;Dl.isSelectOption=!0;Dl.displayName=\"AAutoCompleteOption\";const oa=()=>null;oa.isSelectOptGroup=!0;oa.displayName=\"AAutoCompleteOptGroup\";function aD(e){var t,n;return((t=e?.type)===null||t===void 0?void 0:t.isSelectOption)||((n=e?.type)===null||n===void 0?void 0:n.isSelectOptGroup)}const iD=()=>h(h({},lt(td(),[\"loading\",\"mode\",\"optionLabelProp\",\"labelInValue\"])),{dataSource:Array,dropdownMenuStyle:{type:Object,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},prefixCls:String,showSearch:{type:Boolean,default:void 0},transitionName:String,choiceTransitionName:{type:String,default:\"zoom\"},autofocus:{type:Boolean,default:void 0},backfill:{type:Boolean,default:void 0},filterOption:{type:[Boolean,Function],default:!1},defaultActiveFirstOption:{type:Boolean,default:!0},status:String}),sD=Dl,cD=oa,nf=ne({compatConfig:{MODE:3},name:\"AAutoComplete\",inheritAttrs:!1,props:iD(),slots:Object,setup(e,t){let{slots:n,attrs:o,expose:l}=t;no(!e.dropdownClassName);const r=Z(),a=()=>{var u;const d=xt((u=n.default)===null||u===void 0?void 0:u.call(n));return d.length?d[0]:void 0};l({focus:()=>{var u;(u=r.value)===null||u===void 0||u.focus()},blur:()=>{var u;(u=r.value)===null||u===void 0||u.blur()}});const{prefixCls:c}=Te(\"select\",e);return()=>{var u,d,p;const{size:m,dataSource:g,notFoundContent:v=(u=n.notFoundContent)===null||u===void 0?void 0:u.call(n)}=e;let y;const{class:b}=o,S={[b]:!!b,[`${c.value}-lg`]:m===\"large\",[`${c.value}-sm`]:m===\"small\",[`${c.value}-show-search`]:!0,[`${c.value}-auto-complete`]:!0};if(e.options===void 0){const w=((d=n.dataSource)===null||d===void 0?void 0:d.call(n))||((p=n.options)===null||p===void 0?void 0:p.call(n))||[];w.length&&aD(w[0])?y=w:y=g?g.map(C=>{if(Gt(C))return C;switch(typeof C){case\"string\":return f(Dl,{key:C,value:C},{default:()=>[C]});case\"object\":return f(Dl,{key:C.value,value:C.value},{default:()=>[C.text]});default:throw new Error(\"AutoComplete[dataSource] only supports type `string[] | Object[]`.\")}}):[]}const $=lt(h(h(h({},e),o),{mode:nn.SECRET_COMBOBOX_MODE_DO_NOT_USE,getInputElement:a,notFoundContent:v,class:S,popupClassName:e.popupClassName||e.dropdownClassName,ref:r}),[\"dataSource\",\"loading\"]);return f(nn,$,A({default:()=>[y]},lt(n,[\"default\",\"dataSource\",\"options\"])))}}}),uD=h(nf,{Option:Dl,OptGroup:oa,install(e){return e.component(nf.name,nf),e.component(Dl.displayName,Dl),e.component(oa.displayName,oa),e}}),gs=(e,t,n,o,l)=>({backgroundColor:e,border:`${o.lineWidth}px ${o.lineType} ${t}`,[`${l}-icon`]:{color:n}}),dD=e=>{const{componentCls:t,motionDurationSlow:n,marginXS:o,marginSM:l,fontSize:r,fontSizeLG:a,lineHeight:i,borderRadiusLG:s,motionEaseInOutCirc:c,alertIconSizeLG:u,colorText:d,paddingContentVerticalSM:p,alertPaddingHorizontal:m,paddingMD:g,paddingContentHorizontalLG:v}=e;return{[t]:h(h({},qe(e)),{position:\"relative\",display:\"flex\",alignItems:\"center\",padding:`${p}px ${m}px`,wordWrap:\"break-word\",borderRadius:s,[`&${t}-rtl`]:{direction:\"rtl\"},[`${t}-content`]:{flex:1,minWidth:0},[`${t}-icon`]:{marginInlineEnd:o,lineHeight:0},\"&-description\":{display:\"none\",fontSize:r,lineHeight:i},\"&-message\":{color:d},[`&${t}-motion-leave`]:{overflow:\"hidden\",opacity:1,transition:`max-height ${n} ${c}, opacity ${n} ${c},\n        padding-top ${n} ${c}, padding-bottom ${n} ${c},\n        margin-bottom ${n} ${c}`},[`&${t}-motion-leave-active`]:{maxHeight:0,marginBottom:\"0 !important\",paddingTop:0,paddingBottom:0,opacity:0}}),[`${t}-with-description`]:{alignItems:\"flex-start\",paddingInline:v,paddingBlock:g,[`${t}-icon`]:{marginInlineEnd:l,fontSize:u,lineHeight:0},[`${t}-message`]:{display:\"block\",marginBottom:o,color:d,fontSize:a},[`${t}-description`]:{display:\"block\"}},[`${t}-banner`]:{marginBottom:0,border:\"0 !important\",borderRadius:0}}},fD=e=>{const{componentCls:t,colorSuccess:n,colorSuccessBorder:o,colorSuccessBg:l,colorWarning:r,colorWarningBorder:a,colorWarningBg:i,colorError:s,colorErrorBorder:c,colorErrorBg:u,colorInfo:d,colorInfoBorder:p,colorInfoBg:m}=e;return{[t]:{\"&-success\":gs(l,o,n,e,t),\"&-info\":gs(m,p,d,e,t),\"&-warning\":gs(i,a,r,e,t),\"&-error\":h(h({},gs(u,c,s,e,t)),{[`${t}-description > pre`]:{margin:0,padding:0}})}}},pD=e=>{const{componentCls:t,iconCls:n,motionDurationMid:o,marginXS:l,fontSizeIcon:r,colorIcon:a,colorIconHover:i}=e;return{[t]:{\"&-action\":{marginInlineStart:l},[`${t}-close-icon`]:{marginInlineStart:l,padding:0,overflow:\"hidden\",fontSize:r,lineHeight:`${r}px`,backgroundColor:\"transparent\",border:\"none\",outline:\"none\",cursor:\"pointer\",[`${n}-close`]:{color:a,transition:`color ${o}`,\"&:hover\":{color:i}}},\"&-close-text\":{color:a,transition:`color ${o}`,\"&:hover\":{color:i}}}}},mD=e=>[dD(e),fD(e),pD(e)],vD=Xe(\"Alert\",e=>{const{fontSizeHeading3:t}=e,n=Le(e,{alertIconSizeLG:t,alertPaddingHorizontal:12});return[mD(n)]}),gD={success:hl,info:_r,error:Vn,warning:gl},hD={success:e$,info:JS,error:QS,warning:ZS},bD=hn(\"success\",\"info\",\"warning\",\"error\"),yD=()=>({type:W.oneOf(bD),closable:{type:Boolean,default:void 0},closeText:W.any,message:W.any,description:W.any,afterClose:Function,showIcon:{type:Boolean,default:void 0},prefixCls:String,banner:{type:Boolean,default:void 0},icon:W.any,closeIcon:W.any,onClose:Function}),SD=ne({compatConfig:{MODE:3},name:\"AAlert\",inheritAttrs:!1,props:yD(),setup(e,t){let{slots:n,emit:o,attrs:l,expose:r}=t;const{prefixCls:a,direction:i}=Te(\"alert\",e),[s,c]=vD(a),u=ee(!1),d=ee(!1),p=ee(),m=b=>{b.preventDefault();const S=p.value;S.style.height=`${S.offsetHeight}px`,S.style.height=`${S.offsetHeight}px`,u.value=!0,o(\"close\",b)},g=()=>{var b;u.value=!1,d.value=!0,(b=e.afterClose)===null||b===void 0||b.call(e)},v=I(()=>{const{type:b}=e;return b!==void 0?b:e.banner?\"warning\":\"info\"});r({animationEnd:g});const y=ee({});return()=>{var b,S,$,w,C,_,x,P,E,M;const{banner:O,closeIcon:R=(b=n.closeIcon)===null||b===void 0?void 0:b.call(n)}=e;let{closable:D,showIcon:z}=e;const T=(S=e.closeText)!==null&&S!==void 0?S:($=n.closeText)===null||$===void 0?void 0:$.call(n),k=(w=e.description)!==null&&w!==void 0?w:(C=n.description)===null||C===void 0?void 0:C.call(n),B=(_=e.message)!==null&&_!==void 0?_:(x=n.message)===null||x===void 0?void 0:x.call(n),L=(P=e.icon)!==null&&P!==void 0?P:(E=n.icon)===null||E===void 0?void 0:E.call(n),N=(M=n.action)===null||M===void 0?void 0:M.call(n);z=O&&z===void 0?!0:z;const F=(k?hD:gD)[v.value]||null;T&&(D=!0);const j=a.value,H=re(j,{[`${j}-${v.value}`]:!0,[`${j}-closing`]:u.value,[`${j}-with-description`]:!!k,[`${j}-no-icon`]:!z,[`${j}-banner`]:!!O,[`${j}-closable`]:D,[`${j}-rtl`]:i.value===\"rtl\",[c.value]:!0}),K=D?f(\"button\",{type:\"button\",onClick:m,class:`${j}-close-icon`,tabindex:0},[T?f(\"span\",{class:`${j}-close-text`},[T]):R===void 0?f(Kn,null,null):R]):null,G=L&&(Gt(L)?ft(L,{class:`${j}-icon`}):f(\"span\",{class:`${j}-icon`},[L]))||f(F,{class:`${j}-icon`},null),V=So(`${j}-motion`,{appear:!1,css:!0,onAfterLeave:g,onBeforeLeave:q=>{q.style.maxHeight=`${q.offsetHeight}px`},onLeave:q=>{q.style.maxHeight=\"0px\"}});return s(d.value?null:f(cn,V,{default:()=>[xn(f(\"div\",A(A({role:\"alert\"},l),{},{style:[l.style,y.value],class:[l.class,H],\"data-show\":!u.value,ref:p}),[z?G:null,f(\"div\",{class:`${j}-content`},[B?f(\"div\",{class:`${j}-message`},[B]):null,k?f(\"div\",{class:`${j}-description`},[k]):null]),N?f(\"div\",{class:`${j}-action`},[N]):null,K]),[[On,!u.value]])]}))}}}),lo=Dt(SD),il=[\"xxxl\",\"xxl\",\"xl\",\"lg\",\"md\",\"sm\",\"xs\"],$D=e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`,xxxl:`{min-width: ${e.screenXXXL}px}`});function Mv(){const[,e]=yl();return I(()=>{const t=$D(e.value),n=new Map;let o=-1,l={};return{matchHandlers:{},dispatch(r){return l=r,n.forEach(a=>a(l)),n.size>=1},subscribe(r){return n.size||this.register(),o+=1,n.set(o,r),r(l),o},unsubscribe(r){n.delete(r),n.size||this.unregister()},unregister(){Object.keys(t).forEach(r=>{const a=t[r],i=this.matchHandlers[a];i?.mql.removeListener(i?.listener)}),n.clear()},register(){Object.keys(t).forEach(r=>{const a=t[r],i=c=>{let{matches:u}=c;this.dispatch(h(h({},l),{[r]:u}))},s=window.matchMedia(a);s.addListener(i),this.matchHandlers[a]={mql:s,listener:i},i(s)})},responsiveMap:t}})}function Ma(){const e=ee({});let t=null;const n=Mv();return Be(()=>{t=n.value.subscribe(o=>{e.value=o})}),Mn(()=>{n.value.unsubscribe(t)}),e}function qn(e){const t=ee();return ze(()=>{t.value=e()},{flush:\"sync\"}),t}const CD=e=>{const{antCls:t,componentCls:n,iconCls:o,avatarBg:l,avatarColor:r,containerSize:a,containerSizeLG:i,containerSizeSM:s,textFontSize:c,textFontSizeLG:u,textFontSizeSM:d,borderRadius:p,borderRadiusLG:m,borderRadiusSM:g,lineWidth:v,lineType:y}=e,b=(S,$,w)=>({width:S,height:S,lineHeight:`${S-v*2}px`,borderRadius:\"50%\",[`&${n}-square`]:{borderRadius:w},[`${n}-string`]:{position:\"absolute\",left:{_skip_check_:!0,value:\"50%\"},transformOrigin:\"0 center\"},[`&${n}-icon`]:{fontSize:$,[`> ${o}`]:{margin:0}}});return{[n]:h(h(h(h({},qe(e)),{position:\"relative\",display:\"inline-block\",overflow:\"hidden\",color:r,whiteSpace:\"nowrap\",textAlign:\"center\",verticalAlign:\"middle\",background:l,border:`${v}px ${y} transparent`,\"&-image\":{background:\"transparent\"},[`${t}-image-img`]:{display:\"block\"}}),b(a,c,p)),{\"&-lg\":h({},b(i,u,m)),\"&-sm\":h({},b(s,d,g)),\"> img\":{display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"cover\"}})}},xD=e=>{const{componentCls:t,groupBorderColor:n,groupOverlapping:o,groupSpace:l}=e;return{[`${t}-group`]:{display:\"inline-flex\",[`${t}`]:{borderColor:n},\"> *:not(:first-child)\":{marginInlineStart:o}},[`${t}-group-popover`]:{[`${t} + ${t}`]:{marginInlineStart:l}}}},x1=Xe(\"Avatar\",e=>{const{colorTextLightSolid:t,colorTextPlaceholder:n}=e,o=Le(e,{avatarBg:n,avatarColor:t});return[CD(o),xD(o)]},e=>{const{controlHeight:t,controlHeightLG:n,controlHeightSM:o,fontSize:l,fontSizeLG:r,fontSizeXL:a,fontSizeHeading3:i,marginXS:s,marginXXS:c,colorBorderBg:u}=e;return{containerSize:t,containerSizeLG:n,containerSizeSM:o,textFontSize:Math.round((r+a)/2),textFontSizeLG:i,textFontSizeSM:l,groupSpace:c,groupOverlapping:-s,groupBorderColor:u}}),w1=Symbol(\"AvatarContextKey\"),wD=()=>nt(w1,{}),_D=e=>et(w1,e),ID=()=>({prefixCls:String,shape:{type:String,default:\"circle\"},size:{type:[Number,String,Object],default:()=>\"default\"},src:String,srcset:String,icon:W.any,alt:String,gap:Number,draggable:{type:Boolean,default:void 0},crossOrigin:String,loadError:{type:Function}}),mr=ne({compatConfig:{MODE:3},name:\"AAvatar\",inheritAttrs:!1,props:ID(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const l=ee(!0),r=ee(!1),a=ee(1),i=ee(null),s=ee(null),{prefixCls:c}=Te(\"avatar\",e),[u,d]=x1(c),p=wD(),m=I(()=>e.size===\"default\"?p.size:e.size),g=Ma(),v=qn(()=>{if(typeof e.size!=\"object\")return;const $=il.find(C=>g.value[C]);return e.size[$]}),y=$=>v.value?{width:`${v.value}px`,height:`${v.value}px`,lineHeight:`${v.value}px`,fontSize:`${$?v.value/2:18}px`}:{},b=()=>{if(!i.value||!s.value)return;const $=i.value.offsetWidth,w=s.value.offsetWidth;if($!==0&&w!==0){const{gap:C=4}=e;C*2<w&&(a.value=w-C*2<$?(w-C*2)/$:1)}},S=()=>{const{loadError:$}=e;$?.()!==!1&&(l.value=!1)};return pe(()=>e.src,()=>{it(()=>{l.value=!0,a.value=1})}),pe(()=>e.gap,()=>{it(()=>{b()})}),Be(()=>{it(()=>{b(),r.value=!0})}),()=>{var $,w;const{shape:C,src:_,alt:x,srcset:P,draggable:E,crossOrigin:M}=e,O=($=p.shape)!==null&&$!==void 0?$:C,R=Qt(n,e,\"icon\"),D=c.value,z={[`${o.class}`]:!!o.class,[D]:!0,[`${D}-lg`]:m.value===\"large\",[`${D}-sm`]:m.value===\"small\",[`${D}-${O}`]:!0,[`${D}-image`]:_&&l.value,[`${D}-icon`]:R,[d.value]:!0},T=typeof m.value==\"number\"?{width:`${m.value}px`,height:`${m.value}px`,lineHeight:`${m.value}px`,fontSize:R?`${m.value/2}px`:\"18px\"}:{},k=(w=n.default)===null||w===void 0?void 0:w.call(n);let B;if(_&&l.value)B=f(\"img\",{draggable:E,src:_,srcset:P,onError:S,alt:x,crossorigin:M},null);else if(R)B=R;else if(r.value||a.value!==1){const L=`scale(${a.value}) translateX(-50%)`,N={msTransform:L,WebkitTransform:L,transform:L},F=typeof m.value==\"number\"?{lineHeight:`${m.value}px`}:{};B=f(bo,{onResize:b},{default:()=>[f(\"span\",{class:`${D}-string`,ref:i,style:h(h({},F),N)},[k])]})}else B=f(\"span\",{class:`${D}-string`,ref:i,style:{opacity:0}},[k]);return u(f(\"span\",A(A({},o),{},{ref:s,class:z,style:[T,y(!!R),o.style]}),[B]))}}}),so={adjustX:1,adjustY:1},co=[0,0],_1={left:{points:[\"cr\",\"cl\"],overflow:so,offset:[-4,0],targetOffset:co},right:{points:[\"cl\",\"cr\"],overflow:so,offset:[4,0],targetOffset:co},top:{points:[\"bc\",\"tc\"],overflow:so,offset:[0,-4],targetOffset:co},bottom:{points:[\"tc\",\"bc\"],overflow:so,offset:[0,4],targetOffset:co},topLeft:{points:[\"bl\",\"tl\"],overflow:so,offset:[0,-4],targetOffset:co},leftTop:{points:[\"tr\",\"tl\"],overflow:so,offset:[-4,0],targetOffset:co},topRight:{points:[\"br\",\"tr\"],overflow:so,offset:[0,-4],targetOffset:co},rightTop:{points:[\"tl\",\"tr\"],overflow:so,offset:[4,0],targetOffset:co},bottomRight:{points:[\"tr\",\"br\"],overflow:so,offset:[0,4],targetOffset:co},rightBottom:{points:[\"bl\",\"br\"],overflow:so,offset:[4,0],targetOffset:co},bottomLeft:{points:[\"tl\",\"bl\"],overflow:so,offset:[0,4],targetOffset:co},leftBottom:{points:[\"br\",\"bl\"],overflow:so,offset:[-4,0],targetOffset:co}},PD={prefixCls:String,id:String,overlayInnerStyle:W.any},TD=ne({compatConfig:{MODE:3},name:\"TooltipContent\",props:PD,setup(e,t){let{slots:n}=t;return()=>{var o;return f(\"div\",{class:`${e.prefixCls}-inner`,id:e.id,role:\"tooltip\",style:e.overlayInnerStyle},[(o=n.overlay)===null||o===void 0?void 0:o.call(n)])}}});var OD=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function eb(){}const ED=ne({compatConfig:{MODE:3},name:\"Tooltip\",inheritAttrs:!1,props:{trigger:W.any.def([\"hover\"]),defaultVisible:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},placement:W.string.def(\"right\"),transitionName:String,animation:W.any,afterVisibleChange:W.func.def(()=>{}),overlayStyle:{type:Object,default:void 0},overlayClassName:String,prefixCls:W.string.def(\"rc-tooltip\"),mouseEnterDelay:W.number.def(.1),mouseLeaveDelay:W.number.def(.1),getPopupContainer:Function,destroyTooltipOnHide:{type:Boolean,default:!1},align:W.object.def(()=>({})),arrowContent:W.any.def(null),tipId:String,builtinPlacements:W.object,overlayInnerStyle:{type:Object,default:void 0},popupVisible:{type:Boolean,default:void 0},onVisibleChange:Function,onPopupAlign:Function,arrow:{type:Boolean,default:!0}},setup(e,t){let{slots:n,attrs:o,expose:l}=t;const r=ee(),a=()=>{const{prefixCls:u,tipId:d,overlayInnerStyle:p}=e;return[e.arrow?f(\"div\",{class:`${u}-arrow`,key:\"arrow\"},[Qt(n,e,\"arrowContent\")]):null,f(TD,{key:\"content\",prefixCls:u,id:d,overlayInnerStyle:p},{overlay:n.overlay})]};l({getPopupDomNode:()=>r.value.getPopupDomNode(),triggerDOM:r,forcePopupAlign:()=>{var u;return(u=r.value)===null||u===void 0?void 0:u.forcePopupAlign()}});const s=ee(!1),c=ee(!1);return ze(()=>{const{destroyTooltipOnHide:u}=e;if(typeof u==\"boolean\")s.value=u;else if(u&&typeof u==\"object\"){const{keepParent:d}=u;s.value=d===!0,c.value=d===!1}}),()=>{const{overlayClassName:u,trigger:d,mouseEnterDelay:p,mouseLeaveDelay:m,overlayStyle:g,prefixCls:v,afterVisibleChange:y,transitionName:b,animation:S,placement:$,align:w,destroyTooltipOnHide:C,defaultVisible:_}=e,x=OD(e,[\"overlayClassName\",\"trigger\",\"mouseEnterDelay\",\"mouseLeaveDelay\",\"overlayStyle\",\"prefixCls\",\"afterVisibleChange\",\"transitionName\",\"animation\",\"placement\",\"align\",\"destroyTooltipOnHide\",\"defaultVisible\"]),P=h({},x);e.visible!==void 0&&(P.popupVisible=e.visible);const E=h(h(h({popupClassName:u,prefixCls:v,action:d,builtinPlacements:_1,popupPlacement:$,popupAlign:w,afterPopupVisibleChange:y,popupTransitionName:b,popupAnimation:S,defaultPopupVisible:_,destroyPopupOnHide:s.value,autoDestroy:c.value,mouseLeaveDelay:m,popupStyle:g,mouseEnterDelay:p},P),o),{onPopupVisibleChange:e.onVisibleChange||eb,onPopupAlign:e.onPopupAlign||eb,ref:r,arrow:!!e.arrow,popup:a()});return f(Mr,E,{default:n.default})}}}),Av=()=>({trigger:[String,Array],open:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},placement:String,color:String,transitionName:String,overlayStyle:De(),overlayInnerStyle:De(),overlayClassName:String,openClassName:String,prefixCls:String,mouseEnterDelay:Number,mouseLeaveDelay:Number,getPopupContainer:Function,arrowPointAtCenter:{type:Boolean,default:void 0},arrow:{type:[Boolean,Object],default:!0},autoAdjustOverflow:{type:[Boolean,Object],default:void 0},destroyTooltipOnHide:{type:Boolean,default:void 0},align:De(),builtinPlacements:De(),children:Array,onVisibleChange:Function,\"onUpdate:visible\":Function,onOpenChange:Function,\"onUpdate:open\":Function}),MD={adjustX:1,adjustY:1},tb={adjustX:0,adjustY:0},AD=[0,0];function nb(e){return typeof e==\"boolean\"?e?MD:tb:h(h({},tb),e)}function Dv(e){const{arrowWidth:t=4,horizontalArrowShift:n=16,verticalArrowShift:o=8,autoAdjustOverflow:l,arrowPointAtCenter:r}=e,a={left:{points:[\"cr\",\"cl\"],offset:[-4,0]},right:{points:[\"cl\",\"cr\"],offset:[4,0]},top:{points:[\"bc\",\"tc\"],offset:[0,-4]},bottom:{points:[\"tc\",\"bc\"],offset:[0,4]},topLeft:{points:[\"bl\",\"tc\"],offset:[-(n+t),-4]},leftTop:{points:[\"tr\",\"cl\"],offset:[-4,-(o+t)]},topRight:{points:[\"br\",\"tc\"],offset:[n+t,-4]},rightTop:{points:[\"tl\",\"cr\"],offset:[4,-(o+t)]},bottomRight:{points:[\"tr\",\"bc\"],offset:[n+t,4]},rightBottom:{points:[\"bl\",\"cr\"],offset:[4,o+t]},bottomLeft:{points:[\"tl\",\"bc\"],offset:[-(n+t),4]},leftBottom:{points:[\"br\",\"cl\"],offset:[-4,o+t]}};return Object.keys(a).forEach(i=>{a[i]=r?h(h({},a[i]),{overflow:nb(l),targetOffset:AD}):h(h({},_1[i]),{overflow:nb(l)}),a[i].ignoreShake=!0}),a}function Yc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];for(let t=0,n=e.length;t<n;t++)if(e[t]!==void 0)return e[t]}const DD=bi.map(e=>`${e}-inverse`),RD=[\"success\",\"processing\",\"error\",\"default\",\"warning\"];function nd(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)?[...DD,...bi].includes(e):bi.includes(e)}function kD(e){return RD.includes(e)}function ND(e,t){const n=nd(t),o=re({[`${e}-${t}`]:t&&n}),l={},r={};return t&&!n&&(l.background=t,r[\"--antd-arrow-background-color\"]=t),{className:o,overlayStyle:l,arrowStyle:r}}function hs(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";return e.map(n=>`${t}${n}`).join(\",\")}const Rv=8;function I1(e){const t=Rv,{sizePopupArrow:n,contentRadius:o,borderRadiusOuter:l,limitVerticalRadius:r}=e,a=n/2-Math.ceil(l*(Math.sqrt(2)-1)),i=(o>12?o+2:12)-a,s=r?t-a:i;return{dropdownArrowOffset:i,dropdownArrowOffsetVertical:s}}function kv(e,t){const{componentCls:n,sizePopupArrow:o,marginXXS:l,borderRadiusXS:r,borderRadiusOuter:a,boxShadowPopoverArrow:i}=e,{colorBg:s,showArrowCls:c,contentRadius:u=e.borderRadiusLG,limitVerticalRadius:d}=t,{dropdownArrowOffsetVertical:p,dropdownArrowOffset:m}=I1({sizePopupArrow:o,contentRadius:u,borderRadiusOuter:a,limitVerticalRadius:d}),g=o/2+l;return{[n]:{[`${n}-arrow`]:[h(h({position:\"absolute\",zIndex:1,display:\"block\"},tv(o,r,a,s,i)),{\"&:before\":{background:s}})],[[`&-placement-top ${n}-arrow`,`&-placement-topLeft ${n}-arrow`,`&-placement-topRight ${n}-arrow`].join(\",\")]:{bottom:0,transform:\"translateY(100%) rotate(180deg)\"},[`&-placement-top ${n}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%) translateY(100%) rotate(180deg)\"},[`&-placement-topLeft ${n}-arrow`]:{left:{_skip_check_:!0,value:m}},[`&-placement-topRight ${n}-arrow`]:{right:{_skip_check_:!0,value:m}},[[`&-placement-bottom ${n}-arrow`,`&-placement-bottomLeft ${n}-arrow`,`&-placement-bottomRight ${n}-arrow`].join(\",\")]:{top:0,transform:\"translateY(-100%)\"},[`&-placement-bottom ${n}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%) translateY(-100%)\"},[`&-placement-bottomLeft ${n}-arrow`]:{left:{_skip_check_:!0,value:m}},[`&-placement-bottomRight ${n}-arrow`]:{right:{_skip_check_:!0,value:m}},[[`&-placement-left ${n}-arrow`,`&-placement-leftTop ${n}-arrow`,`&-placement-leftBottom ${n}-arrow`].join(\",\")]:{right:{_skip_check_:!0,value:0},transform:\"translateX(100%) rotate(90deg)\"},[`&-placement-left ${n}-arrow`]:{top:{_skip_check_:!0,value:\"50%\"},transform:\"translateY(-50%) translateX(100%) rotate(90deg)\"},[`&-placement-leftTop ${n}-arrow`]:{top:p},[`&-placement-leftBottom ${n}-arrow`]:{bottom:p},[[`&-placement-right ${n}-arrow`,`&-placement-rightTop ${n}-arrow`,`&-placement-rightBottom ${n}-arrow`].join(\",\")]:{left:{_skip_check_:!0,value:0},transform:\"translateX(-100%) rotate(-90deg)\"},[`&-placement-right ${n}-arrow`]:{top:{_skip_check_:!0,value:\"50%\"},transform:\"translateY(-50%) translateX(-100%) rotate(-90deg)\"},[`&-placement-rightTop ${n}-arrow`]:{top:p},[`&-placement-rightBottom ${n}-arrow`]:{bottom:p},[hs([\"&-placement-topLeft\",\"&-placement-top\",\"&-placement-topRight\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingBottom:g},[hs([\"&-placement-bottomLeft\",\"&-placement-bottom\",\"&-placement-bottomRight\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingTop:g},[hs([\"&-placement-leftTop\",\"&-placement-left\",\"&-placement-leftBottom\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingRight:{_skip_check_:!0,value:g}},[hs([\"&-placement-rightTop\",\"&-placement-right\",\"&-placement-rightBottom\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingLeft:{_skip_check_:!0,value:g}}}}}const BD=e=>{const{componentCls:t,tooltipMaxWidth:n,tooltipColor:o,tooltipBg:l,tooltipBorderRadius:r,zIndexPopup:a,controlHeight:i,boxShadowSecondary:s,paddingSM:c,paddingXS:u,tooltipRadiusOuter:d}=e;return[{[t]:h(h(h(h({},qe(e)),{position:\"absolute\",zIndex:a,display:\"block\",\"&\":[{width:\"max-content\"},{width:\"intrinsic\"}],maxWidth:n,visibility:\"visible\",\"&-hidden\":{display:\"none\"},\"--antd-arrow-background-color\":l,[`${t}-inner`]:{minWidth:i,minHeight:i,padding:`${c/2}px ${u}px`,color:o,textAlign:\"start\",textDecoration:\"none\",wordWrap:\"break-word\",backgroundColor:l,borderRadius:r,boxShadow:s},[[\"&-placement-left\",\"&-placement-leftTop\",\"&-placement-leftBottom\",\"&-placement-right\",\"&-placement-rightTop\",\"&-placement-rightBottom\"].join(\",\")]:{[`${t}-inner`]:{borderRadius:Math.min(r,Rv)}},[`${t}-content`]:{position:\"relative\"}}),Lc(e,(p,m)=>{let{darkColor:g}=m;return{[`&${t}-${p}`]:{[`${t}-inner`]:{backgroundColor:g},[`${t}-arrow`]:{\"--antd-arrow-background-color\":g}}}})),{\"&-rtl\":{direction:\"rtl\"}})},kv(Le(e,{borderRadiusOuter:d}),{colorBg:\"var(--antd-arrow-background-color)\",showArrowCls:\"\",contentRadius:r,limitVerticalRadius:!0}),{[`${t}-pure`]:{position:\"relative\",maxWidth:\"none\"}}]},LD=(e,t)=>Xe(\"Tooltip\",o=>{if(t?.value===!1)return[];const{borderRadius:l,colorTextLightSolid:r,colorBgDefault:a,borderRadiusOuter:i}=o,s=Le(o,{tooltipMaxWidth:250,tooltipColor:r,tooltipBorderRadius:l,tooltipBg:a,tooltipRadiusOuter:i>4?4:i});return[BD(s),Oa(o,\"zoom-big-fast\")]},o=>{let{zIndexPopupBase:l,colorBgSpotlight:r}=o;return{zIndexPopup:l+70,colorBgDefault:r}})(e),FD=(e,t)=>{const n={},o=h({},e);return t.forEach(l=>{e&&l in e&&(n[l]=e[l],delete o[l])}),{picked:n,omitted:o}},P1=()=>h(h({},Av()),{title:W.any}),T1=()=>({trigger:\"hover\",align:{},placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0}),zD=ne({compatConfig:{MODE:3},name:\"ATooltip\",inheritAttrs:!1,props:Je(P1(),{trigger:\"hover\",align:{},placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0}),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:l,expose:r}=t;const{prefixCls:a,getPopupContainer:i,direction:s,rootPrefixCls:c}=Te(\"tooltip\",e),u=I(()=>{var M;return(M=e.open)!==null&&M!==void 0?M:e.visible}),d=Z(Yc([e.open,e.visible])),p=Z();let m;pe(u,M=>{Qe.cancel(m),m=Qe(()=>{d.value=!!M})});const g=()=>{var M;const O=(M=e.title)!==null&&M!==void 0?M:n.title;return!O&&O!==0},v=M=>{const O=g();u.value===void 0&&(d.value=O?!1:M),O||(o(\"update:visible\",M),o(\"visibleChange\",M),o(\"update:open\",M),o(\"openChange\",M))};r({getPopupDomNode:()=>p.value.getPopupDomNode(),open:d,forcePopupAlign:()=>{var M;return(M=p.value)===null||M===void 0?void 0:M.forcePopupAlign()}});const b=I(()=>{var M;const{builtinPlacements:O,autoAdjustOverflow:R,arrow:D,arrowPointAtCenter:z}=e;let T=z;return typeof D==\"object\"&&(T=(M=D.pointAtCenter)!==null&&M!==void 0?M:z),O||Dv({arrowPointAtCenter:T,autoAdjustOverflow:R})}),S=M=>M||M===\"\",$=M=>{const O=M.type;if(typeof O==\"object\"&&M.props&&((O.__ANT_BUTTON===!0||O===\"button\")&&S(M.props.disabled)||O.__ANT_SWITCH===!0&&(S(M.props.disabled)||S(M.props.loading))||O.__ANT_RADIO===!0&&S(M.props.disabled))){const{picked:R,omitted:D}=FD(G$(M),[\"position\",\"left\",\"right\",\"top\",\"bottom\",\"float\",\"display\",\"zIndex\"]),z=h(h({display:\"inline-block\"},R),{cursor:\"not-allowed\",lineHeight:1,width:M.props&&M.props.block?\"100%\":void 0}),T=h(h({},D),{pointerEvents:\"none\"}),k=ft(M,{style:T},!0);return f(\"span\",{style:z,class:`${a.value}-disabled-compatible-wrapper`},[k])}return M},w=()=>{var M,O;return(M=e.title)!==null&&M!==void 0?M:(O=n.title)===null||O===void 0?void 0:O.call(n)},C=(M,O)=>{const R=b.value,D=Object.keys(R).find(z=>{var T,k;return R[z].points[0]===((T=O.points)===null||T===void 0?void 0:T[0])&&R[z].points[1]===((k=O.points)===null||k===void 0?void 0:k[1])});if(D){const z=M.getBoundingClientRect(),T={top:\"50%\",left:\"50%\"};D.indexOf(\"top\")>=0||D.indexOf(\"Bottom\")>=0?T.top=`${z.height-O.offset[1]}px`:(D.indexOf(\"Top\")>=0||D.indexOf(\"bottom\")>=0)&&(T.top=`${-O.offset[1]}px`),D.indexOf(\"left\")>=0||D.indexOf(\"Right\")>=0?T.left=`${z.width-O.offset[0]}px`:(D.indexOf(\"right\")>=0||D.indexOf(\"Left\")>=0)&&(T.left=`${-O.offset[0]}px`),M.style.transformOrigin=`${T.left} ${T.top}`}},_=I(()=>ND(a.value,e.color)),x=I(()=>l[\"data-popover-inject\"]),[P,E]=LD(a,I(()=>!x.value));return()=>{var M,O;const{openClassName:R,overlayClassName:D,overlayStyle:z,overlayInnerStyle:T}=e;let k=(O=kt((M=n.default)===null||M===void 0?void 0:M.call(n)))!==null&&O!==void 0?O:null;k=k.length===1?k[0]:k;let B=d.value;if(u.value===void 0&&g()&&(B=!1),!k)return null;const L=$(Gt(k)&&!eE(k)?k:f(\"span\",null,[k])),N=re({[R||`${a.value}-open`]:!0,[L.props&&L.props.class]:L.props&&L.props.class}),F=re(D,{[`${a.value}-rtl`]:s.value===\"rtl\"},_.value.className,E.value),j=h(h({},_.value.overlayStyle),T),H=_.value.arrowStyle,K=h(h(h({},l),e),{prefixCls:a.value,arrow:!!e.arrow,getPopupContainer:i?.value,builtinPlacements:b.value,visible:B,ref:p,overlayClassName:F,overlayStyle:h(h({},H),z),overlayInnerStyle:j,onVisibleChange:v,onPopupAlign:C,transitionName:_n(c.value,\"zoom-big-fast\",e.transitionName)});return P(f(ED,K,{default:()=>[d.value?ft(L,{class:N}):L],arrowContent:()=>f(\"span\",{class:`${a.value}-arrow-content`},null),overlay:w}))}}}),Fn=Dt(zD),HD=e=>{const{componentCls:t,popoverBg:n,popoverColor:o,width:l,fontWeightStrong:r,popoverPadding:a,boxShadowSecondary:i,colorTextHeading:s,borderRadiusLG:c,zIndexPopup:u,marginXS:d,colorBgElevated:p}=e;return[{[t]:h(h({},qe(e)),{position:\"absolute\",top:0,left:{_skip_check_:!0,value:0},zIndex:u,fontWeight:\"normal\",whiteSpace:\"normal\",textAlign:\"start\",cursor:\"auto\",userSelect:\"text\",\"--antd-arrow-background-color\":p,\"&-rtl\":{direction:\"rtl\"},\"&-hidden\":{display:\"none\"},[`${t}-content`]:{position:\"relative\"},[`${t}-inner`]:{backgroundColor:n,backgroundClip:\"padding-box\",borderRadius:c,boxShadow:i,padding:a},[`${t}-title`]:{minWidth:l,marginBottom:d,color:s,fontWeight:r},[`${t}-inner-content`]:{color:o}})},kv(e,{colorBg:\"var(--antd-arrow-background-color)\"}),{[`${t}-pure`]:{position:\"relative\",maxWidth:\"none\",[`${t}-content`]:{display:\"inline-block\"}}}]},jD=e=>{const{componentCls:t}=e;return{[t]:bi.map(n=>{const o=e[`${n}-6`];return{[`&${t}-${n}`]:{\"--antd-arrow-background-color\":o,[`${t}-inner`]:{backgroundColor:o},[`${t}-arrow`]:{background:\"transparent\"}}}})}},WD=e=>{const{componentCls:t,lineWidth:n,lineType:o,colorSplit:l,paddingSM:r,controlHeight:a,fontSize:i,lineHeight:s,padding:c}=e,u=a-Math.round(i*s),d=u/2,p=u/2-n,m=c;return{[t]:{[`${t}-inner`]:{padding:0},[`${t}-title`]:{margin:0,padding:`${d}px ${m}px ${p}px`,borderBottom:`${n}px ${o} ${l}`},[`${t}-inner-content`]:{padding:`${r}px ${m}px`}}}},VD=Xe(\"Popover\",e=>{const{colorBgElevated:t,colorText:n,wireframe:o}=e,l=Le(e,{popoverBg:t,popoverColor:n,popoverPadding:12});return[HD(l),jD(l),o&&WD(l),Oa(l,\"zoom-big\")]},e=>{let{zIndexPopupBase:t}=e;return{zIndexPopup:t+30,width:177}}),KD=()=>h(h({},Av()),{content:wt(),title:wt()}),GD=ne({compatConfig:{MODE:3},name:\"APopover\",inheritAttrs:!1,props:Je(KD(),h(h({},T1()),{trigger:\"hover\",placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup(e,t){let{expose:n,slots:o,attrs:l}=t;const r=Z();no(e.visible===void 0),n({getPopupDomNode:()=>{var p,m;return(m=(p=r.value)===null||p===void 0?void 0:p.getPopupDomNode)===null||m===void 0?void 0:m.call(p)}});const{prefixCls:a,configProvider:i}=Te(\"popover\",e),[s,c]=VD(a),u=I(()=>i.getPrefixCls()),d=()=>{var p,m;const{title:g=kt((p=o.title)===null||p===void 0?void 0:p.call(o)),content:v=kt((m=o.content)===null||m===void 0?void 0:m.call(o))}=e,y=!!(Array.isArray(g)?g.length:g),b=!!(Array.isArray(v)?v.length:g);return!y&&!b?null:f(He,null,[y&&f(\"div\",{class:`${a.value}-title`},[g]),f(\"div\",{class:`${a.value}-inner-content`},[v])])};return()=>{const p=re(e.overlayClassName,c.value);return s(f(Fn,A(A(A({},lt(e,[\"title\",\"content\"])),l),{},{prefixCls:a.value,ref:r,overlayClassName:p,transitionName:_n(u.value,\"zoom-big\",e.transitionName),\"data-popover-inject\":!0}),{title:d,default:o.default}))}}}),Nv=Dt(GD),XD=()=>({prefixCls:String,maxCount:Number,maxStyle:{type:Object,default:void 0},maxPopoverPlacement:{type:String,default:\"top\"},maxPopoverTrigger:String,size:{type:[Number,String,Object],default:\"default\"},shape:{type:String,default:\"circle\"}}),qc=ne({compatConfig:{MODE:3},name:\"AAvatarGroup\",inheritAttrs:!1,props:XD(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"avatar\",e),a=I(()=>`${l.value}-group`),[i,s]=x1(l);return ze(()=>{const c={size:e.size,shape:e.shape};_D(c)}),()=>{const{maxPopoverPlacement:c=\"top\",maxCount:u,maxStyle:d,maxPopoverTrigger:p=\"hover\",shape:m}=e,g={[a.value]:!0,[`${a.value}-rtl`]:r.value===\"rtl\",[`${o.class}`]:!!o.class,[s.value]:!0},v=Qt(n,e),y=xt(v).map((S,$)=>ft(S,{key:`avatar-key-${$}`})),b=y.length;if(u&&u<b){const S=y.slice(0,u),$=y.slice(u,b);return S.push(f(Nv,{key:\"avatar-popover-key\",content:$,trigger:p,placement:c,overlayClassName:`${a.value}-popover`},{default:()=>[f(mr,{style:d,shape:m},{default:()=>[`+${b-u}`]})]})),i(f(\"div\",A(A({},o),{},{class:g,style:o.style}),[S]))}return i(f(\"div\",A(A({},o),{},{class:g,style:o.style}),[y]))}}});mr.Group=qc;mr.install=function(e){return e.component(mr.name,mr),e.component(qc.name,qc),e};function ob(e){let{prefixCls:t,value:n,current:o,offset:l=0}=e,r;return l&&(r={position:\"absolute\",top:`${l}00%`,left:0}),f(\"p\",{style:r,class:re(`${t}-only-unit`,{current:o})},[n])}function UD(e,t,n){let o=e,l=0;for(;(o+10)%10!==t;)o+=n,l+=n;return l}const YD=ne({compatConfig:{MODE:3},name:\"SingleNumber\",props:{prefixCls:String,value:String,count:Number},setup(e){const t=I(()=>Number(e.value)),n=I(()=>Math.abs(e.count)),o=gt({prevValue:t.value,prevCount:n.value}),l=()=>{o.prevValue=t.value,o.prevCount=n.value},r=Z();return pe(t,()=>{clearTimeout(r.value),r.value=setTimeout(()=>{l()},1e3)},{flush:\"post\"}),Mn(()=>{clearTimeout(r.value)}),()=>{let a,i={};const s=t.value;if(o.prevValue===s||Number.isNaN(s)||Number.isNaN(o.prevValue))a=[ob(h(h({},e),{current:!0}))],i={transition:\"none\"};else{a=[];const c=s+10,u=[];for(let m=s;m<=c;m+=1)u.push(m);const d=u.findIndex(m=>m%10===o.prevValue);a=u.map((m,g)=>{const v=m%10;return ob(h(h({},e),{value:v,offset:g-d,current:g===d}))});const p=o.prevCount<n.value?1:-1;i={transform:`translateY(${-UD(o.prevValue,s,p)}00%)`}}return f(\"span\",{class:`${e.prefixCls}-only`,style:i,onTransitionend:()=>l()},[a])}}});var qD=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const ZD={prefixCls:String,count:W.any,component:String,title:W.any,show:Boolean},QD=ne({compatConfig:{MODE:3},name:\"ScrollNumber\",inheritAttrs:!1,props:ZD,setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:l}=Te(\"scroll-number\",e);return()=>{var r;const a=h(h({},e),n),{prefixCls:i,count:s,title:c,show:u,component:d=\"sup\",class:p,style:m}=a,g=qD(a,[\"prefixCls\",\"count\",\"title\",\"show\",\"component\",\"class\",\"style\"]),v=h(h({},g),{style:m,\"data-show\":e.show,class:re(l.value,p),title:c});let y=s;if(s&&Number(s)%1===0){const S=String(s).split(\"\");y=S.map(($,w)=>f(YD,{prefixCls:l.value,count:Number(s),value:$,key:S.length-w},null))}m&&m.borderColor&&(v.style=h(h({},m),{boxShadow:`0 0 0 1px ${m.borderColor} inset`}));const b=kt((r=o.default)===null||r===void 0?void 0:r.call(o));return b&&b.length?ft(b,{class:re(`${l.value}-custom-component`)},!1):f(d,v,{default:()=>[y]})}}}),JD=new rt(\"antStatusProcessing\",{\"0%\":{transform:\"scale(0.8)\",opacity:.5},\"100%\":{transform:\"scale(2.4)\",opacity:0}}),eR=new rt(\"antZoomBadgeIn\",{\"0%\":{transform:\"scale(0) translate(50%, -50%)\",opacity:0},\"100%\":{transform:\"scale(1) translate(50%, -50%)\"}}),tR=new rt(\"antZoomBadgeOut\",{\"0%\":{transform:\"scale(1) translate(50%, -50%)\"},\"100%\":{transform:\"scale(0) translate(50%, -50%)\",opacity:0}}),nR=new rt(\"antNoWrapperZoomBadgeIn\",{\"0%\":{transform:\"scale(0)\",opacity:0},\"100%\":{transform:\"scale(1)\"}}),oR=new rt(\"antNoWrapperZoomBadgeOut\",{\"0%\":{transform:\"scale(1)\"},\"100%\":{transform:\"scale(0)\",opacity:0}}),lR=new rt(\"antBadgeLoadingCircle\",{\"0%\":{transformOrigin:\"50%\"},\"100%\":{transform:\"translate(50%, -50%) rotate(360deg)\",transformOrigin:\"50%\"}}),rR=e=>{const{componentCls:t,iconCls:n,antCls:o,badgeFontHeight:l,badgeShadowSize:r,badgeHeightSm:a,motionDurationSlow:i,badgeStatusSize:s,marginXS:c,badgeRibbonOffset:u}=e,d=`${o}-scroll-number`,p=`${o}-ribbon`,m=`${o}-ribbon-wrapper`,g=Lc(e,(y,b)=>{let{darkColor:S}=b;return{[`&${t} ${t}-color-${y}`]:{background:S,[`&:not(${t}-count)`]:{color:S}}}}),v=Lc(e,(y,b)=>{let{darkColor:S}=b;return{[`&${p}-color-${y}`]:{background:S,color:S}}});return{[t]:h(h(h(h({},qe(e)),{position:\"relative\",display:\"inline-block\",width:\"fit-content\",lineHeight:1,[`${t}-count`]:{zIndex:e.badgeZIndex,minWidth:e.badgeHeight,height:e.badgeHeight,color:e.badgeTextColor,fontWeight:e.badgeFontWeight,fontSize:e.badgeFontSize,lineHeight:`${e.badgeHeight}px`,whiteSpace:\"nowrap\",textAlign:\"center\",background:e.badgeColor,borderRadius:e.badgeHeight/2,boxShadow:`0 0 0 ${r}px ${e.badgeShadowColor}`,transition:`background ${e.motionDurationMid}`,a:{color:e.badgeTextColor},\"a:hover\":{color:e.badgeTextColor},\"a:hover &\":{background:e.badgeColorHover}},[`${t}-count-sm`]:{minWidth:a,height:a,fontSize:e.badgeFontSizeSm,lineHeight:`${a}px`,borderRadius:a/2},[`${t}-multiple-words`]:{padding:`0 ${e.paddingXS}px`},[`${t}-dot`]:{zIndex:e.badgeZIndex,width:e.badgeDotSize,minWidth:e.badgeDotSize,height:e.badgeDotSize,background:e.badgeColor,borderRadius:\"100%\",boxShadow:`0 0 0 ${r}px ${e.badgeShadowColor}`},[`${t}-dot${d}`]:{transition:`background ${i}`},[`${t}-count, ${t}-dot, ${d}-custom-component`]:{position:\"absolute\",top:0,insetInlineEnd:0,transform:\"translate(50%, -50%)\",transformOrigin:\"100% 0%\",[`&${n}-spin`]:{animationName:lR,animationDuration:\"1s\",animationIterationCount:\"infinite\",animationTimingFunction:\"linear\"}},[`&${t}-status`]:{lineHeight:\"inherit\",verticalAlign:\"baseline\",[`${t}-status-dot`]:{position:\"relative\",top:-1,display:\"inline-block\",width:s,height:s,verticalAlign:\"middle\",borderRadius:\"50%\"},[`${t}-status-success`]:{backgroundColor:e.colorSuccess},[`${t}-status-processing`]:{overflow:\"visible\",color:e.colorPrimary,backgroundColor:e.colorPrimary,\"&::after\":{position:\"absolute\",top:0,insetInlineStart:0,width:\"100%\",height:\"100%\",borderWidth:r,borderStyle:\"solid\",borderColor:\"inherit\",borderRadius:\"50%\",animationName:JD,animationDuration:e.badgeProcessingDuration,animationIterationCount:\"infinite\",animationTimingFunction:\"ease-in-out\",content:'\"\"'}},[`${t}-status-default`]:{backgroundColor:e.colorTextPlaceholder},[`${t}-status-error`]:{backgroundColor:e.colorError},[`${t}-status-warning`]:{backgroundColor:e.colorWarning},[`${t}-status-text`]:{marginInlineStart:c,color:e.colorText,fontSize:e.fontSize}}}),g),{[`${t}-zoom-appear, ${t}-zoom-enter`]:{animationName:eR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack,animationFillMode:\"both\"},[`${t}-zoom-leave`]:{animationName:tR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack,animationFillMode:\"both\"},[`&${t}-not-a-wrapper`]:{[`${t}-zoom-appear, ${t}-zoom-enter`]:{animationName:nR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack},[`${t}-zoom-leave`]:{animationName:oR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack},[`&:not(${t}-status)`]:{verticalAlign:\"middle\"},[`${d}-custom-component, ${t}-count`]:{transform:\"none\"},[`${d}-custom-component, ${d}`]:{position:\"relative\",top:\"auto\",display:\"block\",transformOrigin:\"50% 50%\"}},[`${d}`]:{overflow:\"hidden\",[`${d}-only`]:{position:\"relative\",display:\"inline-block\",height:e.badgeHeight,transition:`all ${e.motionDurationSlow} ${e.motionEaseOutBack}`,WebkitTransformStyle:\"preserve-3d\",WebkitBackfaceVisibility:\"hidden\",[`> p${d}-only-unit`]:{height:e.badgeHeight,margin:0,WebkitTransformStyle:\"preserve-3d\",WebkitBackfaceVisibility:\"hidden\"}},[`${d}-symbol`]:{verticalAlign:\"top\"}},\"&-rtl\":{direction:\"rtl\",[`${t}-count, ${t}-dot, ${d}-custom-component`]:{transform:\"translate(-50%, -50%)\"}}}),[`${m}`]:{position:\"relative\"},[`${p}`]:h(h(h(h({},qe(e)),{position:\"absolute\",top:c,padding:`0 ${e.paddingXS}px`,color:e.colorPrimary,lineHeight:`${l}px`,whiteSpace:\"nowrap\",backgroundColor:e.colorPrimary,borderRadius:e.borderRadiusSM,[`${p}-text`]:{color:e.colorTextLightSolid},[`${p}-corner`]:{position:\"absolute\",top:\"100%\",width:u,height:u,color:\"currentcolor\",border:`${u/2}px solid`,transform:e.badgeRibbonCornerTransform,transformOrigin:\"top\",filter:e.badgeRibbonCornerFilter}}),v),{[`&${p}-placement-end`]:{insetInlineEnd:-u,borderEndEndRadius:0,[`${p}-corner`]:{insetInlineEnd:0,borderInlineEndColor:\"transparent\",borderBlockEndColor:\"transparent\"}},[`&${p}-placement-start`]:{insetInlineStart:-u,borderEndStartRadius:0,[`${p}-corner`]:{insetInlineStart:0,borderBlockEndColor:\"transparent\",borderInlineStartColor:\"transparent\"}},\"&-rtl\":{direction:\"rtl\"}})}},O1=Xe(\"Badge\",e=>{const{fontSize:t,lineHeight:n,fontSizeSM:o,lineWidth:l,marginXS:r,colorBorderBg:a}=e,i=Math.round(t*n),s=l,c=\"auto\",u=i-2*s,d=e.colorBgContainer,p=\"normal\",m=o,g=e.colorError,v=e.colorErrorHover,y=t,b=o/2,S=o,$=o/2,w=Le(e,{badgeFontHeight:i,badgeShadowSize:s,badgeZIndex:c,badgeHeight:u,badgeTextColor:d,badgeFontWeight:p,badgeFontSize:m,badgeColor:g,badgeColorHover:v,badgeShadowColor:a,badgeHeightSm:y,badgeDotSize:b,badgeFontSizeSm:S,badgeStatusSize:$,badgeProcessingDuration:\"1.2s\",badgeRibbonOffset:r,badgeRibbonCornerTransform:\"scaleY(0.75)\",badgeRibbonCornerFilter:\"brightness(75%)\"});return[rR(w)]});var aR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const iR=()=>({prefix:String,color:{type:String},text:W.any,placement:{type:String,default:\"end\"}}),Zc=ne({compatConfig:{MODE:3},name:\"ABadgeRibbon\",inheritAttrs:!1,props:iR(),slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:l,direction:r}=Te(\"ribbon\",e),[a,i]=O1(l),s=I(()=>nd(e.color,!1)),c=I(()=>[l.value,`${l.value}-placement-${e.placement}`,{[`${l.value}-rtl`]:r.value===\"rtl\",[`${l.value}-color-${e.color}`]:s.value}]);return()=>{var u,d;const{class:p,style:m}=n,g=aR(n,[\"class\",\"style\"]),v={},y={};return e.color&&!s.value&&(v.background=e.color,y.color=e.color),a(f(\"div\",A({class:`${l.value}-wrapper ${i.value}`},g),[(u=o.default)===null||u===void 0?void 0:u.call(o),f(\"div\",{class:[c.value,p,i.value],style:h(h({},v),m)},[f(\"span\",{class:`${l.value}-text`},[e.text||((d=o.text)===null||d===void 0?void 0:d.call(o))]),f(\"div\",{class:`${l.value}-corner`,style:y},null)])]))}}}),Qc=e=>!isNaN(parseFloat(e))&&isFinite(e),sR=()=>({count:W.any.def(null),showZero:{type:Boolean,default:void 0},overflowCount:{type:Number,default:99},dot:{type:Boolean,default:void 0},prefixCls:String,scrollNumberPrefixCls:String,status:{type:String},size:{type:String,default:\"default\"},color:String,text:W.any,offset:Array,numberStyle:{type:Object,default:void 0},title:String}),ei=ne({compatConfig:{MODE:3},name:\"ABadge\",Ribbon:Zc,inheritAttrs:!1,props:sR(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"badge\",e),[a,i]=O1(l),s=I(()=>e.count>e.overflowCount?`${e.overflowCount}+`:e.count),c=I(()=>s.value===\"0\"||s.value===0),u=I(()=>e.count===null||c.value&&!e.showZero),d=I(()=>(e.status!==null&&e.status!==void 0||e.color!==null&&e.color!==void 0)&&u.value),p=I(()=>e.dot&&!c.value),m=I(()=>p.value?\"\":s.value),g=I(()=>(m.value===null||m.value===void 0||m.value===\"\"||c.value&&!e.showZero)&&!p.value),v=Z(e.count),y=Z(m.value),b=Z(p.value);pe([()=>e.count,m,p],()=>{g.value||(v.value=e.count,y.value=m.value,b.value=p.value)},{immediate:!0});const S=I(()=>nd(e.color,!1)),$=I(()=>({[`${l.value}-status-dot`]:d.value,[`${l.value}-status-${e.status}`]:!!e.status,[`${l.value}-color-${e.color}`]:S.value})),w=I(()=>e.color&&!S.value?{background:e.color,color:e.color}:{}),C=I(()=>({[`${l.value}-dot`]:b.value,[`${l.value}-count`]:!b.value,[`${l.value}-count-sm`]:e.size===\"small\",[`${l.value}-multiple-words`]:!b.value&&y.value&&y.value.toString().length>1,[`${l.value}-status-${e.status}`]:!!e.status,[`${l.value}-color-${e.color}`]:S.value}));return()=>{var _,x;const{offset:P,title:E,color:M}=e,O=o.style,R=Qt(n,e,\"text\"),D=l.value,z=v.value;let T=xt((_=n.default)===null||_===void 0?void 0:_.call(n));T=T.length?T:null;const k=!!(!g.value||n.count),B=(()=>{if(!P)return h({},O);const G={marginTop:Qc(P[1])?`${P[1]}px`:P[1]};return r.value===\"rtl\"?G.left=`${parseInt(P[0],10)}px`:G.right=`${-parseInt(P[0],10)}px`,h(h({},G),O)})(),L=E??(typeof z==\"string\"||typeof z==\"number\"?z:void 0),N=k||!R?null:f(\"span\",{class:`${D}-status-text`},[R]),F=typeof z==\"object\"||z===void 0&&n.count?ft(z??((x=n.count)===null||x===void 0?void 0:x.call(n)),{style:B},!1):null,j=re(D,{[`${D}-status`]:d.value,[`${D}-not-a-wrapper`]:!T,[`${D}-rtl`]:r.value===\"rtl\"},o.class,i.value);if(!T&&d.value){const G=B.color;return a(f(\"span\",A(A({},o),{},{class:j,style:B}),[f(\"span\",{class:$.value,style:w.value},null),f(\"span\",{style:{color:G},class:`${D}-status-text`},[R])]))}const H=So(T?`${D}-zoom`:\"\",{appear:!1});let K=h(h({},B),e.numberStyle);return M&&!S.value&&(K=K||{},K.background=M),a(f(\"span\",A(A({},o),{},{class:j}),[T,f(cn,H,{default:()=>[xn(f(QD,{prefixCls:e.scrollNumberPrefixCls,show:k,class:C.value,count:y.value,title:L,style:K,key:\"scrollNumber\"},{default:()=>[F]}),[[On,k]])]}),N]))}}});ei.install=function(e){return e.component(ei.name,ei),e.component(Zc.name,Zc),e};const Fr={adjustX:1,adjustY:1},zr=[0,0],cR={topLeft:{points:[\"bl\",\"tl\"],overflow:Fr,offset:[0,-4],targetOffset:zr},topCenter:{points:[\"bc\",\"tc\"],overflow:Fr,offset:[0,-4],targetOffset:zr},topRight:{points:[\"br\",\"tr\"],overflow:Fr,offset:[0,-4],targetOffset:zr},bottomLeft:{points:[\"tl\",\"bl\"],overflow:Fr,offset:[0,4],targetOffset:zr},bottomCenter:{points:[\"tc\",\"bc\"],overflow:Fr,offset:[0,4],targetOffset:zr},bottomRight:{points:[\"tr\",\"br\"],overflow:Fr,offset:[0,4],targetOffset:zr}};var uR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const E1=ne({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:W.string.def(\"rc-dropdown\"),transitionName:String,overlayClassName:W.string.def(\"\"),openClassName:String,animation:W.any,align:W.object,overlayStyle:{type:Object,default:void 0},placement:W.string.def(\"bottomLeft\"),overlay:W.any,trigger:W.oneOfType([W.string,W.arrayOf(W.string)]).def(\"hover\"),alignPoint:{type:Boolean,default:void 0},showAction:W.array,hideAction:W.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:W.number.def(.15),mouseLeaveDelay:W.number.def(.1)},emits:[\"visibleChange\",\"overlayClick\"],setup(e,t){let{slots:n,emit:o,expose:l}=t;const r=Z(!!e.visible);pe(()=>e.visible,m=>{m!==void 0&&(r.value=m)});const a=Z();l({triggerRef:a});const i=m=>{e.visible===void 0&&(r.value=!1),o(\"overlayClick\",m)},s=m=>{e.visible===void 0&&(r.value=m),o(\"visibleChange\",m)},c=()=>{var m;const g=(m=n.overlay)===null||m===void 0?void 0:m.call(n),v={prefixCls:`${e.prefixCls}-menu`,onClick:i};return f(He,{key:W$},[e.arrow&&f(\"div\",{class:`${e.prefixCls}-arrow`},null),ft(g,v,!1)])},u=I(()=>{const{minOverlayWidthMatchTrigger:m=!e.alignPoint}=e;return m}),d=()=>{var m;const g=(m=n.default)===null||m===void 0?void 0:m.call(n);return r.value&&g?ft(g[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):g},p=I(()=>!e.hideAction&&e.trigger.indexOf(\"contextmenu\")!==-1?[\"click\"]:e.hideAction);return()=>{const{prefixCls:m,arrow:g,showAction:v,overlayStyle:y,trigger:b,placement:S,align:$,getPopupContainer:w,transitionName:C,animation:_,overlayClassName:x}=e,P=uR(e,[\"prefixCls\",\"arrow\",\"showAction\",\"overlayStyle\",\"trigger\",\"placement\",\"align\",\"getPopupContainer\",\"transitionName\",\"animation\",\"overlayClassName\"]);return f(Mr,A(A({},P),{},{prefixCls:m,ref:a,popupClassName:re(x,{[`${m}-show-arrow`]:g}),popupStyle:y,builtinPlacements:cR,action:b,showAction:v,hideAction:p.value||[],popupPlacement:S,popupAlign:$,popupTransitionName:C,popupAnimation:_,popupVisible:r.value,stretch:u.value?\"minWidth\":\"\",onPopupVisibleChange:s,getPopupContainer:w}),{popup:c,default:d})}}}),dR=e=>{const{componentCls:t,colorPrimary:n}=e;return{[t]:{position:\"absolute\",background:\"transparent\",pointerEvents:\"none\",boxSizing:\"border-box\",color:`var(--wave-color, ${n})`,boxShadow:\"0 0 0 0 currentcolor\",opacity:.2,\"&.wave-motion-appear\":{transition:[`box-shadow 0.4s ${e.motionEaseOutCirc}`,`opacity 2s ${e.motionEaseOutCirc}`].join(\",\"),\"&-active\":{boxShadow:\"0 0 0 6px currentcolor\",opacity:0}}}}},fR=Xe(\"Wave\",e=>[dR(e)]);function pR(e){const t=(e||\"\").match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);return t&&t[1]&&t[2]&&t[3]?!(t[1]===t[2]&&t[2]===t[3]):!0}function of(e){return e&&e!==\"#fff\"&&e!==\"#ffffff\"&&e!==\"rgb(255, 255, 255)\"&&e!==\"rgba(255, 255, 255, 1)\"&&pR(e)&&!/rgba\\((?:\\d*, ){3}0\\)/.test(e)&&e!==\"transparent\"}function mR(e){const{borderTopColor:t,borderColor:n,backgroundColor:o}=getComputedStyle(e);return of(t)?t:of(n)?n:of(o)?o:null}function lf(e){return Number.isNaN(e)?0:e}const vR=ne({props:{target:De(),className:String},setup(e){const t=ee(null),[n,o]=yt(null),[l,r]=yt([]),[a,i]=yt(0),[s,c]=yt(0),[u,d]=yt(0),[p,m]=yt(0),[g,v]=yt(!1);function y(){const{target:x}=e,P=getComputedStyle(x);o(mR(x));const E=P.position===\"static\",{borderLeftWidth:M,borderTopWidth:O}=P;i(E?x.offsetLeft:lf(-parseFloat(M))),c(E?x.offsetTop:lf(-parseFloat(O))),d(x.offsetWidth),m(x.offsetHeight);const{borderTopLeftRadius:R,borderTopRightRadius:D,borderBottomLeftRadius:z,borderBottomRightRadius:T}=P;r([R,D,T,z].map(k=>lf(parseFloat(k))))}let b,S,$;const w=()=>{clearTimeout($),Qe.cancel(S),b?.disconnect()},C=()=>{var x;const P=(x=t.value)===null||x===void 0?void 0:x.parentElement;P&&(zl(null,P),P.parentElement&&P.parentElement.removeChild(P))};Be(()=>{w(),$=setTimeout(()=>{C()},5e3);const{target:x}=e;x&&(S=Qe(()=>{y(),v(!0)}),typeof ResizeObserver<\"u\"&&(b=new ResizeObserver(y),b.observe(x)))}),ot(()=>{w()});const _=x=>{x.propertyName===\"opacity\"&&C()};return()=>{if(!g.value)return null;const x={left:`${a.value}px`,top:`${s.value}px`,width:`${u.value}px`,height:`${p.value}px`,borderRadius:l.value.map(P=>`${P}px`).join(\" \")};return n&&(x[\"--wave-color\"]=n.value),f(cn,{appear:!0,name:\"wave-motion\",appearFromClass:\"wave-motion-appear\",appearActiveClass:\"wave-motion-appear\",appearToClass:\"wave-motion-appear wave-motion-appear-active\"},{default:()=>[f(\"div\",{ref:t,class:e.className,style:x,onTransitionend:_},null)]})}}});function gR(e,t){const n=document.createElement(\"div\");return n.style.position=\"absolute\",n.style.left=\"0px\",n.style.top=\"0px\",e?.insertBefore(n,e?.firstChild),zl(f(vR,{target:e,className:t},null),n),()=>{zl(null,n),n.parentElement&&n.parentElement.removeChild(n)}}function hR(e,t){const n=fn();let o;function l(){var r;const a=Tn(n);o?.(),!(!((r=t?.value)===null||r===void 0)&&r.disabled||!a)&&(o=gR(a,e.value))}return ot(()=>{o?.()}),l}const Bv=ne({compatConfig:{MODE:3},name:\"Wave\",props:{disabled:Boolean},setup(e,t){let{slots:n}=t;const o=fn(),{prefixCls:l,wave:r}=Te(\"wave\",e),[,a]=fR(l),i=hR(I(()=>re(l.value,a.value)),r);let s;const c=()=>{Tn(o).removeEventListener(\"click\",s,!0)};return Be(()=>{pe(()=>e.disabled,()=>{c(),it(()=>{const u=Tn(o);u?.removeEventListener(\"click\",s,!0),!(!u||u.nodeType!==1||e.disabled)&&(s=d=>{d.target.tagName===\"INPUT\"||!Ku(d.target)||!u.getAttribute||u.getAttribute(\"disabled\")||u.disabled||u.className.includes(\"disabled\")||u.className.includes(\"-leave\")||i()},u.addEventListener(\"click\",s,!0))})},{immediate:!0,flush:\"post\"})}),ot(()=>{c()}),()=>{var u;return(u=n.default)===null||u===void 0?void 0:u.call(n)[0]}}});function Jc(e){return e===\"danger\"?{danger:!0}:{type:e}}const M1=()=>({prefixCls:String,type:String,htmlType:{type:String,default:\"button\"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:()=>!1},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:W.any,href:String,target:String,title:String,onClick:yr(),onMousedown:yr()}),lb=e=>{e&&(e.style.width=\"0px\",e.style.opacity=\"0\",e.style.transform=\"scale(0)\")},rb=e=>{it(()=>{e&&(e.style.width=`${e.scrollWidth}px`,e.style.opacity=\"1\",e.style.transform=\"scale(1)\")})},ab=e=>{e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)},bR=ne({compatConfig:{MODE:3},name:\"LoadingIcon\",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup(e){return()=>{const{existIcon:t,prefixCls:n,loading:o}=e;if(t)return f(\"span\",{class:`${n}-loading-icon`},[f(eo,null,null)]);const l=!!o;return f(cn,{name:`${n}-loading-icon-motion`,onBeforeEnter:lb,onEnter:rb,onAfterEnter:ab,onBeforeLeave:rb,onLeave:r=>{setTimeout(()=>{lb(r)})},onAfterLeave:ab},{default:()=>[l?f(\"span\",{class:`${n}-loading-icon`},[f(eo,null,null)]):null]})}}}),ib=(e,t)=>({[`> span, > ${e}`]:{\"&:not(:last-child)\":{[`&, & > ${e}`]:{\"&:not(:disabled)\":{borderInlineEndColor:t}}},\"&:not(:first-child)\":{[`&, & > ${e}`]:{\"&:not(:disabled)\":{borderInlineStartColor:t}}}}}),yR=e=>{const{componentCls:t,fontSize:n,lineWidth:o,colorPrimaryHover:l,colorErrorHover:r}=e;return{[`${t}-group`]:[{position:\"relative\",display:\"inline-flex\",[`> span, > ${t}`]:{\"&:not(:last-child)\":{[`&, & > ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},\"&:not(:first-child)\":{marginInlineStart:-o,[`&, & > ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}},[t]:{position:\"relative\",zIndex:1,\"&:hover,\\n          &:focus,\\n          &:active\":{zIndex:2},\"&[disabled]\":{zIndex:0}},[`${t}-icon-only`]:{fontSize:n}},ib(`${t}-primary`,l),ib(`${t}-danger`,r)]}};function SR(e,t){return{[`&-item:not(${t}-last-item)`]:{marginBottom:-e.lineWidth},\"&-item\":{\"&:hover,&:focus,&:active\":{zIndex:2},\"&[disabled]\":{zIndex:0}}}}function $R(e,t){return{[`&-item:not(${t}-first-item):not(${t}-last-item)`]:{borderRadius:0},[`&-item${t}-first-item:not(${t}-last-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderEndEndRadius:0,borderEndStartRadius:0}},[`&-item${t}-last-item:not(${t}-first-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderStartStartRadius:0,borderStartEndRadius:0}}}}function CR(e){const t=`${e.componentCls}-compact-vertical`;return{[t]:h(h({},SR(e,t)),$R(e.componentCls,t))}}const xR=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:{outline:\"none\",position:\"relative\",display:\"inline-block\",fontWeight:400,whiteSpace:\"nowrap\",textAlign:\"center\",backgroundImage:\"none\",backgroundColor:\"transparent\",border:`${e.lineWidth}px ${e.lineType} transparent`,cursor:\"pointer\",transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,userSelect:\"none\",touchAction:\"manipulation\",lineHeight:e.lineHeight,color:e.colorText,\"> span\":{display:\"inline-block\"},[`> ${n} + span, > span + ${n}`]:{marginInlineStart:e.marginXS},\"> a\":{color:\"currentColor\"},\"&:not(:disabled)\":h({},pl(e)),[`&-icon-only${t}-compact-item`]:{flex:\"none\"},[`&-compact-item${t}-primary`]:{[`&:not([disabled]) + ${t}-compact-item${t}-primary:not([disabled])`]:{position:\"relative\",\"&:before\":{position:\"absolute\",top:-e.lineWidth,insetInlineStart:-e.lineWidth,display:\"inline-block\",width:e.lineWidth,height:`calc(100% + ${e.lineWidth*2}px)`,backgroundColor:e.colorPrimaryHover,content:'\"\"'}}},\"&-compact-vertical-item\":{[`&${t}-primary`]:{[`&:not([disabled]) + ${t}-compact-vertical-item${t}-primary:not([disabled])`]:{position:\"relative\",\"&:before\":{position:\"absolute\",top:-e.lineWidth,insetInlineStart:-e.lineWidth,display:\"inline-block\",width:`calc(100% + ${e.lineWidth*2}px)`,height:e.lineWidth,backgroundColor:e.colorPrimaryHover,content:'\"\"'}}}}}}},ml=(e,t)=>({\"&:not(:disabled)\":{\"&:hover\":e,\"&:active\":t}}),wR=e=>({minWidth:e.controlHeight,paddingInlineStart:0,paddingInlineEnd:0,borderRadius:\"50%\"}),_R=e=>({borderRadius:e.controlHeight,paddingInlineStart:e.controlHeight/2,paddingInlineEnd:e.controlHeight/2}),Tp=e=>({cursor:\"not-allowed\",borderColor:e.colorBorder,color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,boxShadow:\"none\"}),eu=(e,t,n,o,l,r,a)=>({[`&${e}-background-ghost`]:h(h({color:t||void 0,backgroundColor:\"transparent\",borderColor:n||void 0,boxShadow:\"none\"},ml(h({backgroundColor:\"transparent\"},r),h({backgroundColor:\"transparent\"},a))),{\"&:disabled\":{cursor:\"not-allowed\",color:o||void 0,borderColor:l||void 0}})}),Lv=e=>({\"&:disabled\":h({},Tp(e))}),A1=e=>h({},Lv(e)),tu=e=>({\"&:disabled\":{cursor:\"not-allowed\",color:e.colorTextDisabled}}),D1=e=>h(h(h(h(h({},A1(e)),{backgroundColor:e.colorBgContainer,borderColor:e.colorBorder,boxShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlTmpOutline}`}),ml({color:e.colorPrimaryHover,borderColor:e.colorPrimaryHover},{color:e.colorPrimaryActive,borderColor:e.colorPrimaryActive})),eu(e.componentCls,e.colorBgContainer,e.colorBgContainer,e.colorTextDisabled,e.colorBorder)),{[`&${e.componentCls}-dangerous`]:h(h(h({color:e.colorError,borderColor:e.colorError},ml({color:e.colorErrorHover,borderColor:e.colorErrorBorderHover},{color:e.colorErrorActive,borderColor:e.colorErrorActive})),eu(e.componentCls,e.colorError,e.colorError,e.colorTextDisabled,e.colorBorder)),Lv(e))}),IR=e=>h(h(h(h(h({},A1(e)),{color:e.colorTextLightSolid,backgroundColor:e.colorPrimary,boxShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlOutline}`}),ml({color:e.colorTextLightSolid,backgroundColor:e.colorPrimaryHover},{color:e.colorTextLightSolid,backgroundColor:e.colorPrimaryActive})),eu(e.componentCls,e.colorPrimary,e.colorPrimary,e.colorTextDisabled,e.colorBorder,{color:e.colorPrimaryHover,borderColor:e.colorPrimaryHover},{color:e.colorPrimaryActive,borderColor:e.colorPrimaryActive})),{[`&${e.componentCls}-dangerous`]:h(h(h({backgroundColor:e.colorError,boxShadow:`0 ${e.controlOutlineWidth}px 0 ${e.colorErrorOutline}`},ml({backgroundColor:e.colorErrorHover},{backgroundColor:e.colorErrorActive})),eu(e.componentCls,e.colorError,e.colorError,e.colorTextDisabled,e.colorBorder,{color:e.colorErrorHover,borderColor:e.colorErrorHover},{color:e.colorErrorActive,borderColor:e.colorErrorActive})),Lv(e))}),PR=e=>h(h({},D1(e)),{borderStyle:\"dashed\"}),TR=e=>h(h(h({color:e.colorLink},ml({color:e.colorLinkHover},{color:e.colorLinkActive})),tu(e)),{[`&${e.componentCls}-dangerous`]:h(h({color:e.colorError},ml({color:e.colorErrorHover},{color:e.colorErrorActive})),tu(e))}),OR=e=>h(h(h({},ml({color:e.colorText,backgroundColor:e.colorBgTextHover},{color:e.colorText,backgroundColor:e.colorBgTextActive})),tu(e)),{[`&${e.componentCls}-dangerous`]:h(h({color:e.colorError},tu(e)),ml({color:e.colorErrorHover,backgroundColor:e.colorErrorBg},{color:e.colorErrorHover,backgroundColor:e.colorErrorBg}))}),ER=e=>h(h({},Tp(e)),{[`&${e.componentCls}:hover`]:h({},Tp(e))}),MR=e=>{const{componentCls:t}=e;return{[`${t}-default`]:D1(e),[`${t}-primary`]:IR(e),[`${t}-dashed`]:PR(e),[`${t}-link`]:TR(e),[`${t}-text`]:OR(e),[`${t}-disabled`]:ER(e)}},Fv=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";const{componentCls:n,iconCls:o,controlHeight:l,fontSize:r,lineHeight:a,lineWidth:i,borderRadius:s,buttonPaddingHorizontal:c}=e,u=Math.max(0,(l-r*a)/2-i),d=c-i,p=`${n}-icon-only`;return[{[`${n}${t}`]:{fontSize:r,height:l,padding:`${u}px ${d}px`,borderRadius:s,[`&${p}`]:{width:l,paddingInlineStart:0,paddingInlineEnd:0,[`&${n}-round`]:{width:\"auto\"},\"> span\":{transform:\"scale(1.143)\"}},[`&${n}-loading`]:{opacity:e.opacityLoading,cursor:\"default\"},[`${n}-loading-icon`]:{transition:`width ${e.motionDurationSlow} ${e.motionEaseInOut}, opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`},[`&:not(${p}) ${n}-loading-icon > ${o}`]:{marginInlineEnd:e.marginXS}}},{[`${n}${n}-circle${t}`]:wR(e)},{[`${n}${n}-round${t}`]:_R(e)}]},AR=e=>Fv(e),DR=e=>{const t=Le(e,{controlHeight:e.controlHeightSM,padding:e.paddingXS,buttonPaddingHorizontal:8,borderRadius:e.borderRadiusSM});return Fv(t,`${e.componentCls}-sm`)},RR=e=>{const t=Le(e,{controlHeight:e.controlHeightLG,fontSize:e.fontSizeLG,borderRadius:e.borderRadiusLG});return Fv(t,`${e.componentCls}-lg`)},kR=e=>{const{componentCls:t}=e;return{[t]:{[`&${t}-block`]:{width:\"100%\"}}}},NR=Xe(\"Button\",e=>{const{controlTmpOutline:t,paddingContentHorizontal:n}=e,o=Le(e,{colorOutlineDefault:t,buttonPaddingHorizontal:n});return[xR(o),DR(o),AR(o),RR(o),kR(o),MR(o),yR(o),Ea(e,{focus:!1}),CR(e)]}),BR=()=>({prefixCls:String,size:{type:String}}),R1=Iv(),nu=ne({compatConfig:{MODE:3},name:\"AButtonGroup\",props:BR(),setup(e,t){let{slots:n}=t;const{prefixCls:o,direction:l}=Te(\"btn-group\",e),[,,r]=yl();R1.useProvide(gt({size:I(()=>e.size)}));const a=I(()=>{const{size:i}=e;let s=\"\";switch(i){case\"large\":s=\"lg\";break;case\"small\":s=\"sm\";break;case\"middle\":case void 0:break;default:Ot(!i,\"Button.Group\",\"Invalid prop `size`.\")}return{[`${o.value}`]:!0,[`${o.value}-${s}`]:s,[`${o.value}-rtl`]:l.value===\"rtl\",[r.value]:!0}});return()=>{var i;return f(\"div\",{class:a.value},[xt((i=n.default)===null||i===void 0?void 0:i.call(n))])}}}),sb=/^[\\u4e00-\\u9fa5]{2}$/,cb=sb.test.bind(sb);function bs(e){return e===\"text\"||e===\"link\"}const _t=ne({compatConfig:{MODE:3},name:\"AButton\",inheritAttrs:!1,__ANT_BUTTON:!0,props:Je(M1(),{type:\"default\"}),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:l,expose:r}=t;const{prefixCls:a,autoInsertSpaceInButton:i,direction:s,size:c}=Te(\"btn\",e),[u,d]=NR(a),p=R1.useInject(),m=jn(),g=I(()=>{var T;return(T=e.disabled)!==null&&T!==void 0?T:m.value}),v=ee(null),y=ee(void 0);let b=!1;const S=ee(!1),$=ee(!1),w=I(()=>i.value!==!1),{compactSize:C,compactItemClassnames:_}=Xl(a,s),x=I(()=>typeof e.loading==\"object\"&&e.loading.delay?e.loading.delay||!0:!!e.loading);pe(x,T=>{clearTimeout(y.value),typeof x.value==\"number\"?y.value=setTimeout(()=>{S.value=T},x.value):S.value=T},{immediate:!0});const P=I(()=>{const{type:T,shape:k=\"default\",ghost:B,block:L,danger:N}=e,F=a.value,j={large:\"lg\",small:\"sm\",middle:void 0},H=C.value||p?.size||c.value,K=H&&j[H]||\"\";return[_.value,{[d.value]:!0,[`${F}`]:!0,[`${F}-${k}`]:k!==\"default\"&&k,[`${F}-${T}`]:T,[`${F}-${K}`]:K,[`${F}-loading`]:S.value,[`${F}-background-ghost`]:B&&!bs(T),[`${F}-two-chinese-chars`]:$.value&&w.value,[`${F}-block`]:L,[`${F}-dangerous`]:!!N,[`${F}-rtl`]:s.value===\"rtl\"}]}),E=()=>{const T=v.value;if(!T||i.value===!1)return;const k=T.textContent;b&&cb(k)?$.value||($.value=!0):$.value&&($.value=!1)},M=T=>{if(S.value||g.value){T.preventDefault();return}l(\"click\",T)},O=T=>{l(\"mousedown\",T)},R=(T,k)=>{const B=k?\" \":\"\";if(T.type===Di){let L=T.children.trim();return cb(L)&&(L=L.split(\"\").join(B)),f(\"span\",null,[L])}return T};return ze(()=>{Ot(!(e.ghost&&bs(e.type)),\"Button\",\"`link` or `text` button can't be a `ghost` button.\")}),Be(E),Wn(E),ot(()=>{y.value&&clearTimeout(y.value)}),r({focus:()=>{var T;(T=v.value)===null||T===void 0||T.focus()},blur:()=>{var T;(T=v.value)===null||T===void 0||T.blur()}}),()=>{var T,k;const{icon:B=(T=n.icon)===null||T===void 0?void 0:T.call(n)}=e,L=xt((k=n.default)===null||k===void 0?void 0:k.call(n));b=L.length===1&&!B&&!bs(e.type);const{type:N,htmlType:F,href:j,title:H,target:K}=e,G=S.value?\"loading\":B,V=h(h({},o),{title:H,disabled:g.value,class:[P.value,o.class,{[`${a.value}-icon-only`]:L.length===0&&!!G}],onClick:M,onMousedown:O});g.value||delete V.disabled;const q=B&&!S.value?B:f(bR,{existIcon:!!B,prefixCls:a.value,loading:!!S.value},null),Q=L.map(le=>R(le,b&&w.value));if(j!==void 0)return u(f(\"a\",A(A({},V),{},{href:j,target:K,ref:v}),[q,Q]));let oe=f(\"button\",A(A({},V),{},{ref:v,type:F}),[q,Q]);if(!bs(N)){const le=(function(){return oe})();oe=f(Bv,{ref:\"wave\",disabled:!!S.value},{default:()=>[le]})}return u(oe)}}});_t.Group=nu;_t.install=function(e){return e.component(_t.name,_t),e.component(nu.name,nu),e};const k1=()=>({arrow:Fe([Boolean,Object]),trigger:{type:[Array,String]},menu:De(),overlay:W.any,visible:ye(),open:ye(),disabled:ye(),danger:ye(),autofocus:ye(),align:De(),getPopupContainer:Function,prefixCls:String,transitionName:String,placement:String,overlayClassName:String,overlayStyle:De(),forceRender:ye(),mouseEnterDelay:Number,mouseLeaveDelay:Number,openClassName:String,minOverlayWidthMatchTrigger:ye(),destroyPopupOnHide:ye(),onVisibleChange:{type:Function},\"onUpdate:visible\":{type:Function},onOpenChange:{type:Function},\"onUpdate:open\":{type:Function}}),rf=M1(),LR=()=>h(h({},k1()),{type:rf.type,size:String,htmlType:rf.htmlType,href:String,disabled:ye(),prefixCls:String,icon:W.any,title:String,loading:rf.loading,onClick:yr()}),FR=e=>{const{componentCls:t,antCls:n,paddingXS:o,opacityLoading:l}=e;return{[`${t}-button`]:{whiteSpace:\"nowrap\",[`&${n}-btn-group > ${n}-btn`]:{[`&-loading, &-loading + ${n}-btn`]:{cursor:\"default\",pointerEvents:\"none\",opacity:l},[`&:last-child:not(:first-child):not(${n}-btn-icon-only)`]:{paddingInline:o}}}}},zR=e=>{const{componentCls:t,menuCls:n,colorError:o,colorTextLightSolid:l}=e,r=`${n}-item`;return{[`${t}, ${t}-menu-submenu`]:{[`${n} ${r}`]:{[`&${r}-danger:not(${r}-disabled)`]:{color:o,\"&:hover\":{color:l,backgroundColor:o}}}}}},HR=e=>{const{componentCls:t,menuCls:n,zIndexPopup:o,dropdownArrowDistance:l,dropdownArrowOffset:r,sizePopupArrow:a,antCls:i,iconCls:s,motionDurationMid:c,dropdownPaddingVertical:u,fontSize:d,dropdownEdgeChildPadding:p,colorTextDisabled:m,fontSizeIcon:g,controlPaddingHorizontal:v,colorBgElevated:y,boxShadowPopoverArrow:b}=e;return[{[t]:h(h({},qe(e)),{position:\"absolute\",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:o,display:\"block\",\"&::before\":{position:\"absolute\",insetBlock:-l+a/2,zIndex:-9999,opacity:1e-4,content:'\"\"'},[`${t}-wrap`]:{position:\"relative\",[`${i}-btn > ${s}-down`]:{fontSize:g},[`${s}-down::before`]:{transition:`transform ${c}`}},[`${t}-wrap-open`]:{[`${s}-down::before`]:{transform:\"rotate(180deg)\"}},\"\\n        &-hidden,\\n        &-menu-hidden,\\n        &-menu-submenu-hidden\\n      \":{display:\"none\"},[`\n        &-show-arrow${t}-placement-topLeft,\n        &-show-arrow${t}-placement-top,\n        &-show-arrow${t}-placement-topRight\n      `]:{paddingBottom:l},[`\n        &-show-arrow${t}-placement-bottomLeft,\n        &-show-arrow${t}-placement-bottom,\n        &-show-arrow${t}-placement-bottomRight\n      `]:{paddingTop:l},[`${t}-arrow`]:h({position:\"absolute\",zIndex:1,display:\"block\"},tv(a,e.borderRadiusXS,e.borderRadiusOuter,y,b)),[`\n        &-placement-top > ${t}-arrow,\n        &-placement-topLeft > ${t}-arrow,\n        &-placement-topRight > ${t}-arrow\n      `]:{bottom:l,transform:\"translateY(100%) rotate(180deg)\"},[`&-placement-top > ${t}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%) translateY(100%) rotate(180deg)\"},[`&-placement-topLeft > ${t}-arrow`]:{left:{_skip_check_:!0,value:r}},[`&-placement-topRight > ${t}-arrow`]:{right:{_skip_check_:!0,value:r}},[`\n          &-placement-bottom > ${t}-arrow,\n          &-placement-bottomLeft > ${t}-arrow,\n          &-placement-bottomRight > ${t}-arrow\n        `]:{top:l,transform:\"translateY(-100%)\"},[`&-placement-bottom > ${t}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateY(-100%) translateX(-50%)\"},[`&-placement-bottomLeft > ${t}-arrow`]:{left:{_skip_check_:!0,value:r}},[`&-placement-bottomRight > ${t}-arrow`]:{right:{_skip_check_:!0,value:r}},[`&${i}-slide-down-enter${i}-slide-down-enter-active${t}-placement-bottomLeft,\n          &${i}-slide-down-appear${i}-slide-down-appear-active${t}-placement-bottomLeft,\n          &${i}-slide-down-enter${i}-slide-down-enter-active${t}-placement-bottom,\n          &${i}-slide-down-appear${i}-slide-down-appear-active${t}-placement-bottom,\n          &${i}-slide-down-enter${i}-slide-down-enter-active${t}-placement-bottomRight,\n          &${i}-slide-down-appear${i}-slide-down-appear-active${t}-placement-bottomRight`]:{animationName:Zu},[`&${i}-slide-up-enter${i}-slide-up-enter-active${t}-placement-topLeft,\n          &${i}-slide-up-appear${i}-slide-up-appear-active${t}-placement-topLeft,\n          &${i}-slide-up-enter${i}-slide-up-enter-active${t}-placement-top,\n          &${i}-slide-up-appear${i}-slide-up-appear-active${t}-placement-top,\n          &${i}-slide-up-enter${i}-slide-up-enter-active${t}-placement-topRight,\n          &${i}-slide-up-appear${i}-slide-up-appear-active${t}-placement-topRight`]:{animationName:Ju},[`&${i}-slide-down-leave${i}-slide-down-leave-active${t}-placement-bottomLeft,\n          &${i}-slide-down-leave${i}-slide-down-leave-active${t}-placement-bottom,\n          &${i}-slide-down-leave${i}-slide-down-leave-active${t}-placement-bottomRight`]:{animationName:Qu},[`&${i}-slide-up-leave${i}-slide-up-leave-active${t}-placement-topLeft,\n          &${i}-slide-up-leave${i}-slide-up-leave-active${t}-placement-top,\n          &${i}-slide-up-leave${i}-slide-up-leave-active${t}-placement-topRight`]:{animationName:ed}})},{[`${t} ${n}`]:{position:\"relative\",margin:0},[`${n}-submenu-popup`]:{position:\"absolute\",zIndex:o,background:\"transparent\",boxShadow:\"none\",transformOrigin:\"0 0\",\"ul,li\":{listStyle:\"none\"},ul:{marginInline:\"0.3em\"}},[`${t}, ${t}-menu-submenu`]:{[n]:h(h({padding:p,listStyleType:\"none\",backgroundColor:y,backgroundClip:\"padding-box\",borderRadius:e.borderRadiusLG,outline:\"none\",boxShadow:e.boxShadowSecondary},pl(e)),{[`${n}-item-group-title`]:{padding:`${u}px ${v}px`,color:e.colorTextDescription,transition:`all ${c}`},[`${n}-item`]:{position:\"relative\",display:\"flex\",alignItems:\"center\",borderRadius:e.borderRadiusSM},[`${n}-item-icon`]:{minWidth:d,marginInlineEnd:e.marginXS,fontSize:e.fontSizeSM},[`${n}-title-content`]:{flex:\"auto\",\"> a\":{color:\"inherit\",transition:`all ${c}`,\"&:hover\":{color:\"inherit\"},\"&::after\":{position:\"absolute\",inset:0,content:'\"\"'}}},[`${n}-item, ${n}-submenu-title`]:h(h({clear:\"both\",margin:0,padding:`${u}px ${v}px`,color:e.colorText,fontWeight:\"normal\",fontSize:d,lineHeight:e.lineHeight,cursor:\"pointer\",transition:`all ${c}`,\"&:hover, &-active\":{backgroundColor:e.controlItemBgHover}},pl(e)),{\"&-selected\":{color:e.colorPrimary,backgroundColor:e.controlItemBgActive,\"&:hover, &-active\":{backgroundColor:e.controlItemBgActiveHover}},\"&-disabled\":{color:m,cursor:\"not-allowed\",\"&:hover\":{color:m,backgroundColor:y,cursor:\"not-allowed\"},a:{pointerEvents:\"none\"}},\"&-divider\":{height:1,margin:`${e.marginXXS}px 0`,overflow:\"hidden\",lineHeight:0,backgroundColor:e.colorSplit},[`${t}-menu-submenu-expand-icon`]:{position:\"absolute\",insetInlineEnd:e.paddingXS,[`${t}-menu-submenu-arrow-icon`]:{marginInlineEnd:\"0 !important\",color:e.colorTextDescription,fontSize:g,fontStyle:\"normal\"}}}),[`${n}-item-group-list`]:{margin:`0 ${e.marginXS}px`,padding:0,listStyle:\"none\"},[`${n}-submenu-title`]:{paddingInlineEnd:v+e.fontSizeSM},[`${n}-submenu-vertical`]:{position:\"relative\"},[`${n}-submenu${n}-submenu-disabled ${t}-menu-submenu-title`]:{[`&, ${t}-menu-submenu-arrow-icon`]:{color:m,backgroundColor:y,cursor:\"not-allowed\"}},[`${n}-submenu-selected ${t}-menu-submenu-title`]:{color:e.colorPrimary}})}},[Uo(e,\"slide-up\"),Uo(e,\"slide-down\"),$a(e,\"move-up\"),$a(e,\"move-down\"),Oa(e,\"zoom-big\")]]},N1=Xe(\"Dropdown\",(e,t)=>{let{rootPrefixCls:n}=t;const{marginXXS:o,sizePopupArrow:l,controlHeight:r,fontSize:a,lineHeight:i,paddingXXS:s,componentCls:c,borderRadiusOuter:u,borderRadiusLG:d}=e,p=(r-a*i)/2,{dropdownArrowOffset:m}=I1({sizePopupArrow:l,contentRadius:d,borderRadiusOuter:u}),g=Le(e,{menuCls:`${c}-menu`,rootPrefixCls:n,dropdownArrowDistance:l/2+o,dropdownArrowOffset:m,dropdownPaddingVertical:p,dropdownEdgeChildPadding:s});return[HR(g),FR(g),zR(g)]},e=>({zIndexPopup:e.zIndexPopupBase+50}));var jR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const WR=_t.Group,xi=ne({compatConfig:{MODE:3},name:\"ADropdownButton\",inheritAttrs:!1,__ANT_BUTTON:!0,props:Je(LR(),{trigger:\"hover\",placement:\"bottomRight\",type:\"default\"}),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:l}=t;const r=p=>{l(\"update:visible\",p),l(\"visibleChange\",p),l(\"update:open\",p),l(\"openChange\",p)},{prefixCls:a,direction:i,getPopupContainer:s}=Te(\"dropdown\",e),c=I(()=>`${a.value}-button`),[u,d]=N1(a);return()=>{var p,m;const g=h(h({},e),o),{type:v=\"default\",disabled:y,danger:b,loading:S,htmlType:$,class:w=\"\",overlay:C=(p=n.overlay)===null||p===void 0?void 0:p.call(n),trigger:_,align:x,open:P,visible:E,onVisibleChange:M,placement:O=i.value===\"rtl\"?\"bottomLeft\":\"bottomRight\",href:R,title:D,icon:z=((m=n.icon)===null||m===void 0?void 0:m.call(n))||f(Pm,null,null),mouseEnterDelay:T,mouseLeaveDelay:k,overlayClassName:B,overlayStyle:L,destroyPopupOnHide:N,onClick:F,\"onUpdate:open\":j}=g,H=jR(g,[\"type\",\"disabled\",\"danger\",\"loading\",\"htmlType\",\"class\",\"overlay\",\"trigger\",\"align\",\"open\",\"visible\",\"onVisibleChange\",\"placement\",\"href\",\"title\",\"icon\",\"mouseEnterDelay\",\"mouseLeaveDelay\",\"overlayClassName\",\"overlayStyle\",\"destroyPopupOnHide\",\"onClick\",\"onUpdate:open\"]),K={align:x,disabled:y,trigger:y?[]:_,placement:O,getPopupContainer:s?.value,onOpenChange:r,mouseEnterDelay:T,mouseLeaveDelay:k,open:P??E,overlayClassName:B,overlayStyle:L,destroyPopupOnHide:N},G=f(_t,{danger:b,type:v,disabled:y,loading:S,onClick:F,htmlType:$,href:R,title:D},{default:n.default}),V=f(_t,{danger:b,type:v,icon:z},null);return u(f(WR,A(A({},H),{},{class:re(c.value,w,d.value)}),{default:()=>[n.leftButton?n.leftButton({button:G}):G,f(vo,K,{default:()=>[n.rightButton?n.rightButton({button:V}):V],overlay:()=>C})]}))}}}),B1=Symbol(\"OverrideContextKey\"),L1=()=>nt(B1,void 0),zv=e=>{var t,n,o;const{prefixCls:l,mode:r,selectable:a,validator:i,onClick:s,expandIcon:c}=L1()||{};et(B1,{prefixCls:I(()=>{var u,d;return(d=(u=e.prefixCls)===null||u===void 0?void 0:u.value)!==null&&d!==void 0?d:l?.value}),mode:I(()=>{var u,d;return(d=(u=e.mode)===null||u===void 0?void 0:u.value)!==null&&d!==void 0?d:r?.value}),selectable:I(()=>{var u,d;return(d=(u=e.selectable)===null||u===void 0?void 0:u.value)!==null&&d!==void 0?d:a?.value}),validator:(t=e.validator)!==null&&t!==void 0?t:i,onClick:(n=e.onClick)!==null&&n!==void 0?n:s,expandIcon:(o=e.expandIcon)!==null&&o!==void 0?o:c?.value})},vo=ne({compatConfig:{MODE:3},name:\"ADropdown\",inheritAttrs:!1,props:Je(k1(),{mouseEnterDelay:.15,mouseLeaveDelay:.1,placement:\"bottomLeft\",trigger:\"hover\"}),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:l}=t;const{prefixCls:r,rootPrefixCls:a,direction:i,getPopupContainer:s}=Te(\"dropdown\",e),[c,u]=N1(r),d=I(()=>{const{placement:y=\"\",transitionName:b}=e;return b!==void 0?b:y.includes(\"top\")?`${a.value}-slide-down`:`${a.value}-slide-up`});zv({prefixCls:I(()=>`${r.value}-menu`),expandIcon:I(()=>f(\"span\",{class:`${r.value}-menu-submenu-arrow`},[f(Ao,{class:`${r.value}-menu-submenu-arrow-icon`},null)])),mode:I(()=>\"vertical\"),selectable:I(()=>!1),onClick:()=>{},validator:y=>{let{mode:b}=y}});const p=()=>{var y,b,S;const $=e.overlay||((y=n.overlay)===null||y===void 0?void 0:y.call(n)),w=Array.isArray($)?$[0]:$;if(!w)return null;const C=w.props||{};Ot(!C.mode||C.mode===\"vertical\",\"Dropdown\",`mode=\"${C.mode}\" is not supported for Dropdown's Menu.`);const{selectable:_=!1,expandIcon:x=(S=(b=w.children)===null||b===void 0?void 0:b.expandIcon)===null||S===void 0?void 0:S.call(b)}=C,P=typeof x<\"u\"&&Gt(x)?x:f(\"span\",{class:`${r.value}-menu-submenu-arrow`},[f(Ao,{class:`${r.value}-menu-submenu-arrow-icon`},null)]);return Gt(w)?ft(w,{mode:\"vertical\",selectable:_,expandIcon:()=>P}):w},m=I(()=>{const y=e.placement;if(!y)return i.value===\"rtl\"?\"bottomRight\":\"bottomLeft\";if(y.includes(\"Center\")){const b=y.slice(0,y.indexOf(\"Center\"));return Ot(!y.includes(\"Center\"),\"Dropdown\",`You are using '${y}' placement in Dropdown, which is deprecated. Try to use '${b}' instead.`),b}return y}),g=I(()=>typeof e.visible==\"boolean\"?e.visible:e.open),v=y=>{l(\"update:visible\",y),l(\"visibleChange\",y),l(\"update:open\",y),l(\"openChange\",y)};return()=>{var y,b;const{arrow:S,trigger:$,disabled:w,overlayClassName:C}=e,_=(y=n.default)===null||y===void 0?void 0:y.call(n)[0],x=ft(_,h({class:re((b=_?.props)===null||b===void 0?void 0:b.class,{[`${r.value}-rtl`]:i.value===\"rtl\"},`${r.value}-trigger`)},w?{disabled:w}:{})),P=re(C,u.value,{[`${r.value}-rtl`]:i.value===\"rtl\"}),E=w?[]:$;let M;E&&E.includes(\"contextmenu\")&&(M=!0);const O=Dv({arrowPointAtCenter:typeof S==\"object\"&&S.pointAtCenter,autoAdjustOverflow:!0}),R=lt(h(h(h({},e),o),{visible:g.value,builtinPlacements:O,overlayClassName:P,arrow:!!S,alignPoint:M,prefixCls:r.value,getPopupContainer:s?.value,transitionName:d.value,trigger:E,onVisibleChange:v,placement:m.value}),[\"overlay\",\"onUpdate:visible\"]);return c(f(E1,R,{default:()=>[x],overlay:p}))}}});vo.Button=xi;var VR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const KR=()=>({prefixCls:String,href:String,separator:W.any,dropdownProps:De(),overlay:W.any,onClick:yr()}),wi=ne({compatConfig:{MODE:3},name:\"ABreadcrumbItem\",inheritAttrs:!1,__ANT_BREADCRUMB_ITEM:!0,props:KR(),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:l}=t;const{prefixCls:r}=Te(\"breadcrumb\",e),a=(s,c)=>{const u=Qt(n,e,\"overlay\");return u?f(vo,A(A({},e.dropdownProps),{},{overlay:u,placement:\"bottom\"}),{default:()=>[f(\"span\",{class:`${c}-overlay-link`},[s,f(_a,null,null)])]}):s},i=s=>{l(\"click\",s)};return()=>{var s;const c=(s=Qt(n,e,\"separator\"))!==null&&s!==void 0?s:\"/\",u=Qt(n,e),{class:d,style:p}=o,m=VR(o,[\"class\",\"style\"]);let g;return e.href!==void 0?g=f(\"a\",A({class:`${r.value}-link`,onClick:i},m),[u]):g=f(\"span\",A({class:`${r.value}-link`,onClick:i},m),[u]),g=a(g,r.value),u!=null?f(\"li\",{class:d,style:p},[g,c&&f(\"span\",{class:`${r.value}-separator`},[c])]):null}}});function GR(e,t,n,o){let l;if(l!==void 0)return!!l;if(e===t)return!0;if(typeof e!=\"object\"||!e||typeof t!=\"object\"||!t)return!1;const r=Object.keys(e),a=Object.keys(t);if(r.length!==a.length)return!1;const i=Object.prototype.hasOwnProperty.bind(t);for(let s=0;s<r.length;s++){const c=r[s];if(!i(c))return!1;const u=e[c],d=t[c];if(l=void 0,l===!1||l===void 0&&u!==d)return!1}return!0}function Gr(e,t){return GR(jt(e),jt(t))}const F1=Symbol(\"menuContextKey\"),z1=e=>{et(F1,e)},Sl=()=>nt(F1),H1=Symbol(\"ForceRenderKey\"),XR=e=>{et(H1,e)},j1=()=>nt(H1,!1),W1=Symbol(\"menuFirstLevelContextKey\"),V1=e=>{et(W1,e)},UR=()=>nt(W1,!0),ou=ne({compatConfig:{MODE:3},name:\"MenuContextProvider\",inheritAttrs:!1,props:{mode:{type:String,default:void 0},overflowDisabled:{type:Boolean,default:void 0}},setup(e,t){let{slots:n}=t;const o=Sl(),l=h({},o);return e.mode!==void 0&&(l.mode=Ve(e,\"mode\")),e.overflowDisabled!==void 0&&(l.overflowDisabled=Ve(e,\"overflowDisabled\")),z1(l),()=>{var r;return(r=n.default)===null||r===void 0?void 0:r.call(n)}}}),K1=Symbol(\"siderCollapsed\"),G1=Symbol(\"siderHookProvider\"),ys=\"$$__vc-menu-more__key\",X1=Symbol(\"KeyPathContext\"),Hv=()=>nt(X1,{parentEventKeys:I(()=>[]),parentKeys:I(()=>[]),parentInfo:{}}),YR=(e,t,n)=>{const{parentEventKeys:o,parentKeys:l}=Hv(),r=I(()=>[...o.value,e]),a=I(()=>[...l.value,t]);return et(X1,{parentEventKeys:r,parentKeys:a,parentInfo:n}),a},U1=Symbol(\"measure\"),ub=ne({compatConfig:{MODE:3},setup(e,t){let{slots:n}=t;return et(U1,!0),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),jv=()=>nt(U1,!1);function Y1(e){const{mode:t,rtl:n,inlineIndent:o}=Sl();return I(()=>t.value!==\"inline\"?null:n.value?{paddingRight:`${e.value*o.value}px`}:{paddingLeft:`${e.value*o.value}px`})}let qR=0;const ZR=()=>({id:String,role:String,disabled:Boolean,danger:Boolean,title:{type:[String,Boolean],default:void 0},icon:W.any,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,originItemValue:De()}),Eo=ne({compatConfig:{MODE:3},name:\"AMenuItem\",inheritAttrs:!1,props:ZR(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:l}=t;const r=fn(),a=jv(),i=typeof r.vnode.key==\"symbol\"?String(r.vnode.key):r.vnode.key;Ot(typeof r.vnode.key!=\"symbol\",\"MenuItem\",`MenuItem \\`:key=\"${String(i)}\"\\` not support Symbol type`);const s=`menu_item_${++qR}_$$_${i}`,{parentEventKeys:c,parentKeys:u}=Hv(),{prefixCls:d,activeKeys:p,disabled:m,changeActiveKeys:g,rtl:v,inlineCollapsed:y,siderCollapsed:b,onItemClick:S,selectedKeys:$,registerMenuInfo:w,unRegisterMenuInfo:C}=Sl(),_=UR(),x=ee(!1),P=I(()=>[...u.value,i]);w(s,{eventKey:s,key:i,parentEventKeys:c,parentKeys:u,isLeaf:!0}),ot(()=>{C(s)}),pe(p,()=>{x.value=!!p.value.find(j=>j===i)},{immediate:!0});const M=I(()=>m.value||e.disabled),O=I(()=>$.value.includes(i)),R=I(()=>{const j=`${d.value}-item`;return{[`${j}`]:!0,[`${j}-danger`]:e.danger,[`${j}-active`]:x.value,[`${j}-selected`]:O.value,[`${j}-disabled`]:M.value}}),D=j=>({key:i,eventKey:s,keyPath:P.value,eventKeyPath:[...c.value,s],domEvent:j,item:h(h({},e),l)}),z=j=>{if(M.value)return;const H=D(j);o(\"click\",j),S(H)},T=j=>{M.value||(g(P.value),o(\"mouseenter\",j))},k=j=>{M.value||(g([]),o(\"mouseleave\",j))},B=j=>{if(o(\"keydown\",j),j.which===we.ENTER){const H=D(j);o(\"click\",j),S(H)}},L=j=>{g(P.value),o(\"focus\",j)},N=(j,H)=>{const K=f(\"span\",{class:`${d.value}-title-content`},[H]);return(!j||Gt(H)&&H.type===\"span\")&&H&&y.value&&_&&typeof H==\"string\"?f(\"div\",{class:`${d.value}-inline-collapsed-noicon`},[H.charAt(0)]):K},F=Y1(I(()=>P.value.length));return()=>{var j,H,K,G,V;if(a)return null;const q=(j=e.title)!==null&&j!==void 0?j:(H=n.title)===null||H===void 0?void 0:H.call(n),Q=xt((K=n.default)===null||K===void 0?void 0:K.call(n)),oe=Q.length;let le=q;typeof q>\"u\"?le=_&&oe?Q:\"\":q===!1&&(le=\"\");const Y={title:le};!b.value&&!y.value&&(Y.title=null,Y.open=!1);const J={};e.role===\"option\"&&(J[\"aria-selected\"]=O.value);const ce=(G=e.icon)!==null&&G!==void 0?G:(V=n.icon)===null||V===void 0?void 0:V.call(n,e);return f(Fn,A(A({},Y),{},{placement:v.value?\"left\":\"right\",overlayClassName:`${d.value}-inline-collapsed-tooltip`}),{default:()=>[f(dl.Item,A(A(A({component:\"li\"},l),{},{id:e.id,style:h(h({},l.style||{}),F.value),class:[R.value,{[`${l.class}`]:!!l.class,[`${d.value}-item-only-child`]:(ce?oe+1:oe)===1}],role:e.role||\"menuitem\",tabindex:e.disabled?null:-1,\"data-menu-id\":i,\"aria-disabled\":e.disabled},J),{},{onMouseenter:T,onMouseleave:k,onClick:z,onKeydown:B,onFocus:L,title:typeof q==\"string\"?q:void 0}),{default:()=>[ft(typeof ce==\"function\"?ce(e.originItemValue):ce,{class:`${d.value}-item-icon`},!1),N(ce,Q)]})]})}}}),Ml={adjustX:1,adjustY:1},QR={topLeft:{points:[\"bl\",\"tl\"],overflow:Ml,offset:[0,-7]},bottomLeft:{points:[\"tl\",\"bl\"],overflow:Ml,offset:[0,7]},leftTop:{points:[\"tr\",\"tl\"],overflow:Ml,offset:[-4,0]},rightTop:{points:[\"tl\",\"tr\"],overflow:Ml,offset:[4,0]}},JR={topLeft:{points:[\"bl\",\"tl\"],overflow:Ml,offset:[0,-7]},bottomLeft:{points:[\"tl\",\"bl\"],overflow:Ml,offset:[0,7]},rightTop:{points:[\"tr\",\"tl\"],overflow:Ml,offset:[-4,0]},leftTop:{points:[\"tl\",\"tr\"],overflow:Ml,offset:[4,0]}},e5={horizontal:\"bottomLeft\",vertical:\"rightTop\",\"vertical-left\":\"rightTop\",\"vertical-right\":\"leftTop\"},db=ne({compatConfig:{MODE:3},name:\"PopupTrigger\",inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:Object,emits:[\"visibleChange\"],setup(e,t){let{slots:n,emit:o}=t;const l=ee(!1),{getPopupContainer:r,rtl:a,subMenuOpenDelay:i,subMenuCloseDelay:s,builtinPlacements:c,triggerSubMenuAction:u,forceSubMenuRender:d,motion:p,defaultMotions:m,rootClassName:g}=Sl(),v=j1(),y=I(()=>a.value?h(h({},JR),c.value):h(h({},QR),c.value)),b=I(()=>e5[e.mode]),S=ee();pe(()=>e.visible,C=>{Qe.cancel(S.value),S.value=Qe(()=>{l.value=C})},{immediate:!0}),ot(()=>{Qe.cancel(S.value)});const $=C=>{o(\"visibleChange\",C)},w=I(()=>{var C,_;const x=p.value||((C=m.value)===null||C===void 0?void 0:C[e.mode])||((_=m.value)===null||_===void 0?void 0:_.other),P=typeof x==\"function\"?x():x;return P?So(P.name,{css:!0}):void 0});return()=>{const{prefixCls:C,popupClassName:_,mode:x,popupOffset:P,disabled:E}=e;return f(Mr,{prefixCls:C,popupClassName:re(`${C}-popup`,{[`${C}-rtl`]:a.value},_,g.value),stretch:x===\"horizontal\"?\"minWidth\":null,getPopupContainer:r.value,builtinPlacements:y.value,popupPlacement:b.value,popupVisible:l.value,popupAlign:P&&{offset:P},action:E?[]:[u.value],mouseEnterDelay:i.value,mouseLeaveDelay:s.value,onPopupVisibleChange:$,forceRender:v||d.value,popupAnimation:w.value},{popup:n.popup,default:n.default})}}}),Wv=(e,t)=>{let{slots:n,attrs:o}=t;var l;const{prefixCls:r,mode:a}=Sl();return f(\"ul\",A(A({},o),{},{class:re(r.value,`${r.value}-sub`,`${r.value}-${a.value===\"inline\"?\"inline\":\"vertical\"}`),\"data-menu-list\":!0}),[(l=n.default)===null||l===void 0?void 0:l.call(n)])};Wv.displayName=\"SubMenuList\";const t5=ne({compatConfig:{MODE:3},name:\"InlineSubMenuList\",inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup(e,t){let{slots:n}=t;const o=I(()=>\"inline\"),{motion:l,mode:r,defaultMotions:a}=Sl(),i=I(()=>r.value===o.value),s=Z(!i.value),c=I(()=>i.value?e.open:!1);pe(r,()=>{i.value&&(s.value=!1)},{flush:\"post\"});const u=I(()=>{var d,p;const m=l.value||((d=a.value)===null||d===void 0?void 0:d[o.value])||((p=a.value)===null||p===void 0?void 0:p.other),g=typeof m==\"function\"?m():m;return h(h({},g),{appear:e.keyPath.length<=1})});return()=>{var d;return s.value?null:f(ou,{mode:o.value},{default:()=>[f(cn,u.value,{default:()=>[xn(f(Wv,{id:e.id},{default:()=>[(d=n.default)===null||d===void 0?void 0:d.call(n)]}),[[On,c.value]])]})]})}}});let fb=0;const n5=()=>({icon:W.any,title:W.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,theme:String,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function,originItemValue:De()}),Cr=ne({compatConfig:{MODE:3},name:\"ASubMenu\",inheritAttrs:!1,props:n5(),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:l}=t;var r,a;V1(!1);const i=jv(),s=fn(),c=typeof s.vnode.key==\"symbol\"?String(s.vnode.key):s.vnode.key;Ot(typeof s.vnode.key!=\"symbol\",\"SubMenu\",`SubMenu \\`:key=\"${String(c)}\"\\` not support Symbol type`);const u=up(c)?c:`sub_menu_${++fb}_$$_not_set_key`,d=(r=e.eventKey)!==null&&r!==void 0?r:up(c)?`sub_menu_${++fb}_$$_${c}`:u,{parentEventKeys:p,parentInfo:m,parentKeys:g}=Hv(),v=I(()=>[...g.value,u]),y=ee([]),b={eventKey:d,key:u,parentEventKeys:p,childrenEventKeys:y,parentKeys:g};(a=m.childrenEventKeys)===null||a===void 0||a.value.push(d),ot(()=>{var U;m.childrenEventKeys&&(m.childrenEventKeys.value=(U=m.childrenEventKeys)===null||U===void 0?void 0:U.value.filter(ie=>ie!=d))}),YR(d,u,b);const{prefixCls:S,activeKeys:$,disabled:w,changeActiveKeys:C,mode:_,inlineCollapsed:x,openKeys:P,overflowDisabled:E,onOpenChange:M,registerMenuInfo:O,unRegisterMenuInfo:R,selectedSubMenuKeys:D,expandIcon:z,theme:T}=Sl(),k=c!=null,B=!i&&(j1()||!k);XR(B),(i&&k||!i&&!k||B)&&(O(d,b),ot(()=>{R(d)}));const L=I(()=>`${S.value}-submenu`),N=I(()=>w.value||e.disabled),F=ee(),j=ee(),H=I(()=>P.value.includes(u)),K=I(()=>!E.value&&H.value),G=I(()=>D.value.includes(u)),V=ee(!1);pe($,()=>{V.value=!!$.value.find(U=>U===u)},{immediate:!0});const q=U=>{N.value||(l(\"titleClick\",U,u),_.value===\"inline\"&&M(u,!H.value))},Q=U=>{N.value||(C(v.value),l(\"mouseenter\",U))},oe=U=>{N.value||(C([]),l(\"mouseleave\",U))},le=Y1(I(()=>v.value.length)),Y=U=>{_.value!==\"inline\"&&M(u,U)},J=()=>{C(v.value)},ce=d&&`${d}-popup`,ue=I(()=>re(S.value,`${S.value}-${e.theme||T.value}`,e.popupClassName)),be=(U,ie)=>{if(!ie)return x.value&&!g.value.length&&U&&typeof U==\"string\"?f(\"div\",{class:`${S.value}-inline-collapsed-noicon`},[U.charAt(0)]):f(\"span\",{class:`${S.value}-title-content`},[U]);const ve=Gt(U)&&U.type===\"span\";return f(He,null,[ft(typeof ie==\"function\"?ie(e.originItemValue):ie,{class:`${S.value}-item-icon`},!1),ve?U:f(\"span\",{class:`${S.value}-title-content`},[U])])},Ce=I(()=>_.value!==\"inline\"&&v.value.length>1?\"vertical\":_.value),ge=I(()=>_.value===\"horizontal\"?\"vertical\":_.value),Se=I(()=>Ce.value===\"horizontal\"?\"vertical\":Ce.value),X=()=>{var U,ie;const ve=L.value,me=(U=e.icon)!==null&&U!==void 0?U:(ie=n.icon)===null||ie===void 0?void 0:ie.call(n,e),he=e.expandIcon||n.expandIcon||z.value,se=be(Qt(n,e,\"title\"),me);return f(\"div\",{style:le.value,class:`${ve}-title`,tabindex:N.value?null:-1,ref:F,title:typeof se==\"string\"?se:null,\"data-menu-id\":u,\"aria-expanded\":K.value,\"aria-haspopup\":!0,\"aria-controls\":ce,\"aria-disabled\":N.value,onClick:q,onFocus:J},[se,_.value!==\"horizontal\"&&he?he(h(h({},e),{isOpen:K.value})):f(\"i\",{class:`${ve}-arrow`},null)])};return()=>{var U;if(i)return k?(U=n.default)===null||U===void 0?void 0:U.call(n):null;const ie=L.value;let ve=()=>null;if(!E.value&&_.value!==\"inline\"){const me=_.value===\"horizontal\"?[0,8]:[10,0];ve=()=>f(db,{mode:Ce.value,prefixCls:ie,visible:!e.internalPopupClose&&K.value,popupClassName:ue.value,popupOffset:e.popupOffset||me,disabled:N.value,onVisibleChange:Y},{default:()=>[X()],popup:()=>f(ou,{mode:Se.value},{default:()=>[f(Wv,{id:ce,ref:j},{default:n.default})]})})}else ve=()=>f(db,null,{default:X});return f(ou,{mode:ge.value},{default:()=>[f(dl.Item,A(A({component:\"li\"},o),{},{role:\"none\",class:re(ie,`${ie}-${_.value}`,o.class,{[`${ie}-open`]:K.value,[`${ie}-active`]:V.value,[`${ie}-selected`]:G.value,[`${ie}-disabled`]:N.value}),onMouseenter:Q,onMouseleave:oe,\"data-submenu-id\":u}),{default:()=>f(He,null,[ve(),!E.value&&f(t5,{id:ce,open:K.value,keyPath:v.value},{default:n.default})])})]})}}});function q1(e,t){return e.classList?e.classList.contains(t):` ${e.className} `.indexOf(` ${t} `)>-1}function lu(e,t){e.classList?e.classList.add(t):q1(e,t)||(e.className=`${e.className} ${t}`)}function ru(e,t){if(e.classList)e.classList.remove(t);else if(q1(e,t)){const n=e.className;e.className=` ${n} `.replace(` ${t} `,\" \")}}const zi=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"ant-motion-collapse\",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:t,css:!0,onBeforeEnter:n=>{n.style.height=\"0px\",n.style.opacity=\"0\",lu(n,e)},onEnter:n=>{it(()=>{n.style.height=`${n.scrollHeight}px`,n.style.opacity=\"1\"})},onAfterEnter:n=>{n&&(ru(n,e),n.style.height=null,n.style.opacity=null)},onBeforeLeave:n=>{lu(n,e),n.style.height=`${n.offsetHeight}px`,n.style.opacity=null},onLeave:n=>{setTimeout(()=>{n.style.height=\"0px\",n.style.opacity=\"0\"})},onAfterLeave:n=>{n&&(ru(n,e),n.style&&(n.style.height=null,n.style.opacity=null))}}},o5=()=>({title:W.any,originItemValue:De()}),_i=ne({compatConfig:{MODE:3},name:\"AMenuItemGroup\",inheritAttrs:!1,props:o5(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l}=Sl(),r=I(()=>`${l.value}-item-group`),a=jv();return()=>{var i,s;return a?(i=n.default)===null||i===void 0?void 0:i.call(n):f(\"li\",A(A({},o),{},{onClick:c=>c.stopPropagation(),class:r.value}),[f(\"div\",{title:typeof e.title==\"string\"?e.title:void 0,class:`${r.value}-title`},[Qt(n,e,\"title\")]),f(\"ul\",{class:`${r.value}-list`},[(s=n.default)===null||s===void 0?void 0:s.call(n)])])}}}),l5=()=>({prefixCls:String,dashed:Boolean}),Ii=ne({compatConfig:{MODE:3},name:\"AMenuDivider\",props:l5(),setup(e){const{prefixCls:t}=Sl(),n=I(()=>({[`${t.value}-item-divider`]:!0,[`${t.value}-item-divider-dashed`]:!!e.dashed}));return()=>f(\"li\",{class:n.value},null)}});var r5=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function Op(e,t,n){return(e||[]).map((o,l)=>{if(o&&typeof o==\"object\"){const r=o,{label:a,children:i,key:s,type:c}=r,u=r5(r,[\"label\",\"children\",\"key\",\"type\"]),d=s??`tmp-${l}`,p=n?n.parentKeys.slice():[],m=[],g={eventKey:d,key:d,parentEventKeys:Z(p),parentKeys:Z(p),childrenEventKeys:Z(m),isLeaf:!1};if(i||c===\"group\"){if(c===\"group\"){const y=Op(i,t,n);return f(_i,A(A({key:d},u),{},{title:a,originItemValue:o}),{default:()=>[y]})}t.set(d,g),n&&n.childrenEventKeys.push(d);const v=Op(i,t,{childrenEventKeys:m,parentKeys:[].concat(p,d)});return f(Cr,A(A({key:d},u),{},{title:a,originItemValue:o}),{default:()=>[v]})}return c===\"divider\"?f(Ii,A({key:d},u),null):(g.isLeaf=!0,t.set(d,g),f(Eo,A(A({key:d},u),{},{originItemValue:o}),{default:()=>[a]}))}return null}).filter(o=>o)}function a5(e){const t=ee([]),n=ee(!1),o=ee(new Map);return pe(()=>e.items,()=>{const l=new Map;n.value=!1,e.items?(n.value=!0,t.value=Op(e.items,l)):t.value=void 0,o.value=l},{immediate:!0,deep:!0}),{itemsNodes:t,store:o,hasItmes:n}}const i5=e=>{const{componentCls:t,motionDurationSlow:n,menuHorizontalHeight:o,colorSplit:l,lineWidth:r,lineType:a,menuItemPaddingInline:i}=e;return{[`${t}-horizontal`]:{lineHeight:`${o}px`,border:0,borderBottom:`${r}px ${a} ${l}`,boxShadow:\"none\",\"&::after\":{display:\"block\",clear:\"both\",height:0,content:'\"\\\\20\"'},[`${t}-item, ${t}-submenu`]:{position:\"relative\",display:\"inline-block\",verticalAlign:\"bottom\",paddingInline:i},[`> ${t}-item:hover,\n        > ${t}-item-active,\n        > ${t}-submenu ${t}-submenu-title:hover`]:{backgroundColor:\"transparent\"},[`${t}-item, ${t}-submenu-title`]:{transition:[`border-color ${n}`,`background ${n}`].join(\",\")},[`${t}-submenu-arrow`]:{display:\"none\"}}}},s5=e=>{let{componentCls:t,menuArrowOffset:n}=e;return{[`${t}-rtl`]:{direction:\"rtl\"},[`${t}-submenu-rtl`]:{transformOrigin:\"100% 0\"},[`${t}-rtl${t}-vertical,\n    ${t}-submenu-rtl ${t}-vertical`]:{[`${t}-submenu-arrow`]:{\"&::before\":{transform:`rotate(-45deg) translateY(-${n})`},\"&::after\":{transform:`rotate(45deg) translateY(${n})`}}}}},pb=e=>h({},fl(e)),mb=(e,t)=>{const{componentCls:n,colorItemText:o,colorItemTextSelected:l,colorGroupTitle:r,colorItemBg:a,colorSubItemBg:i,colorItemBgSelected:s,colorActiveBarHeight:c,colorActiveBarWidth:u,colorActiveBarBorderSize:d,motionDurationSlow:p,motionEaseInOut:m,motionEaseOut:g,menuItemPaddingInline:v,motionDurationMid:y,colorItemTextHover:b,lineType:S,colorSplit:$,colorItemTextDisabled:w,colorDangerItemText:C,colorDangerItemTextHover:_,colorDangerItemTextSelected:x,colorDangerItemBgActive:P,colorDangerItemBgSelected:E,colorItemBgHover:M,menuSubMenuBg:O,colorItemTextSelectedHorizontal:R,colorItemBgSelectedHorizontal:D}=e;return{[`${n}-${t}`]:{color:o,background:a,[`&${n}-root:focus-visible`]:h({},pb(e)),[`${n}-item-group-title`]:{color:r},[`${n}-submenu-selected`]:{[`> ${n}-submenu-title`]:{color:l}},[`${n}-item-disabled, ${n}-submenu-disabled`]:{color:`${w} !important`},[`${n}-item:hover, ${n}-submenu-title:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:b}},[`&:not(${n}-horizontal)`]:{[`${n}-item:not(${n}-item-selected)`]:{\"&:hover\":{backgroundColor:M},\"&:active\":{backgroundColor:s}},[`${n}-submenu-title`]:{\"&:hover\":{backgroundColor:M},\"&:active\":{backgroundColor:s}}},[`${n}-item-danger`]:{color:C,[`&${n}-item:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:_}},[`&${n}-item:active`]:{background:P}},[`${n}-item a`]:{\"&, &:hover\":{color:\"inherit\"}},[`${n}-item-selected`]:{color:l,[`&${n}-item-danger`]:{color:x},\"a, a:hover\":{color:\"inherit\"}},[`& ${n}-item-selected`]:{backgroundColor:s,[`&${n}-item-danger`]:{backgroundColor:E}},[`${n}-item, ${n}-submenu-title`]:{[`&:not(${n}-item-disabled):focus-visible`]:h({},pb(e))},[`&${n}-submenu > ${n}`]:{backgroundColor:O},[`&${n}-popup > ${n}`]:{backgroundColor:a},[`&${n}-horizontal`]:h(h({},t===\"dark\"?{borderBottom:0}:{}),{[`> ${n}-item, > ${n}-submenu`]:{top:d,marginTop:-d,marginBottom:0,borderRadius:0,\"&::after\":{position:\"absolute\",insetInline:v,bottom:0,borderBottom:`${c}px solid transparent`,transition:`border-color ${p} ${m}`,content:'\"\"'},\"&:hover, &-active, &-open\":{\"&::after\":{borderBottomWidth:c,borderBottomColor:R}},\"&-selected\":{color:R,backgroundColor:D,\"&::after\":{borderBottomWidth:c,borderBottomColor:R}}}}),[`&${n}-root`]:{[`&${n}-inline, &${n}-vertical`]:{borderInlineEnd:`${d}px ${S} ${$}`}},[`&${n}-inline`]:{[`${n}-sub${n}-inline`]:{background:i},[`${n}-item, ${n}-submenu-title`]:d&&u?{width:`calc(100% + ${d}px)`}:{},[`${n}-item`]:{position:\"relative\",\"&::after\":{position:\"absolute\",insetBlock:0,insetInlineEnd:0,borderInlineEnd:`${u}px solid ${l}`,transform:\"scaleY(0.0001)\",opacity:0,transition:[`transform ${y} ${g}`,`opacity ${y} ${g}`].join(\",\"),content:'\"\"'},[`&${n}-item-danger`]:{\"&::after\":{borderInlineEndColor:x}}},[`${n}-selected, ${n}-item-selected`]:{\"&::after\":{transform:\"scaleY(1)\",opacity:1,transition:[`transform ${y} ${m}`,`opacity ${y} ${m}`].join(\",\")}}}}}},vb=e=>{const{componentCls:t,menuItemHeight:n,itemMarginInline:o,padding:l,menuArrowSize:r,marginXS:a,marginXXS:i}=e,s=l+r+a;return{[`${t}-item`]:{position:\"relative\"},[`${t}-item, ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`,paddingInline:l,overflow:\"hidden\",textOverflow:\"ellipsis\",marginInline:o,marginBlock:i,width:`calc(100% - ${o*2}px)`},[`${t}-submenu`]:{paddingBottom:.02},[`> ${t}-item,\n            > ${t}-submenu > ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`},[`${t}-item-group-list ${t}-submenu-title,\n            ${t}-submenu-title`]:{paddingInlineEnd:s}}},c5=e=>{const{componentCls:t,iconCls:n,menuItemHeight:o,colorTextLightSolid:l,dropdownWidth:r,controlHeightLG:a,motionDurationMid:i,motionEaseOut:s,paddingXL:c,fontSizeSM:u,fontSizeLG:d,motionDurationSlow:p,paddingXS:m,boxShadowSecondary:g}=e,v={height:o,lineHeight:`${o}px`,listStylePosition:\"inside\",listStyleType:\"disc\"};return[{[t]:{\"&-inline, &-vertical\":h({[`&${t}-root`]:{boxShadow:\"none\"}},vb(e))},[`${t}-submenu-popup`]:{[`${t}-vertical`]:h(h({},vb(e)),{boxShadow:g})}},{[`${t}-submenu-popup ${t}-vertical${t}-sub`]:{minWidth:r,maxHeight:`calc(100vh - ${a*2.5}px)`,padding:\"0\",overflow:\"hidden\",borderInlineEnd:0,\"&:not([class*='-active'])\":{overflowX:\"hidden\",overflowY:\"auto\"}}},{[`${t}-inline`]:{width:\"100%\",[`&${t}-root`]:{[`${t}-item, ${t}-submenu-title`]:{display:\"flex\",alignItems:\"center\",transition:[`border-color ${p}`,`background ${p}`,`padding ${i} ${s}`].join(\",\"),[`> ${t}-title-content`]:{flex:\"auto\",minWidth:0,overflow:\"hidden\",textOverflow:\"ellipsis\"},\"> *\":{flex:\"none\"}}},[`${t}-sub${t}-inline`]:{padding:0,border:0,borderRadius:0,boxShadow:\"none\",[`& > ${t}-submenu > ${t}-submenu-title`]:v,[`& ${t}-item-group-title`]:{paddingInlineStart:c}},[`${t}-item`]:v}},{[`${t}-inline-collapsed`]:{width:o*2,[`&${t}-root`]:{[`${t}-item, ${t}-submenu ${t}-submenu-title`]:{[`> ${t}-inline-collapsed-noicon`]:{fontSize:d,textAlign:\"center\"}}},[`> ${t}-item,\n          > ${t}-item-group > ${t}-item-group-list > ${t}-item,\n          > ${t}-item-group > ${t}-item-group-list > ${t}-submenu > ${t}-submenu-title,\n          > ${t}-submenu > ${t}-submenu-title`]:{insetInlineStart:0,paddingInline:`calc(50% - ${u}px)`,textOverflow:\"clip\",[`\n            ${t}-submenu-arrow,\n            ${t}-submenu-expand-icon\n          `]:{opacity:0},[`${t}-item-icon, ${n}`]:{margin:0,fontSize:d,lineHeight:`${o}px`,\"+ span\":{display:\"inline-block\",opacity:0}}},[`${t}-item-icon, ${n}`]:{display:\"inline-block\"},\"&-tooltip\":{pointerEvents:\"none\",[`${t}-item-icon, ${n}`]:{display:\"none\"},\"a, a:hover\":{color:l}},[`${t}-item-group-title`]:h(h({},Xt),{paddingInline:m})}}]},gb=e=>{const{componentCls:t,fontSize:n,motionDurationSlow:o,motionDurationMid:l,motionEaseInOut:r,motionEaseOut:a,iconCls:i,controlHeightSM:s}=e;return{[`${t}-item, ${t}-submenu-title`]:{position:\"relative\",display:\"block\",margin:0,whiteSpace:\"nowrap\",cursor:\"pointer\",transition:[`border-color ${o}`,`background ${o}`,`padding ${o} ${r}`].join(\",\"),[`${t}-item-icon, ${i}`]:{minWidth:n,fontSize:n,transition:[`font-size ${l} ${a}`,`margin ${o} ${r}`,`color ${o}`].join(\",\"),\"+ span\":{marginInlineStart:s-n,opacity:1,transition:[`opacity ${o} ${r}`,`margin ${o}`,`color ${o}`].join(\",\")}},[`${t}-item-icon`]:h({},Tr()),[`&${t}-item-only-child`]:{[`> ${i}, > ${t}-item-icon`]:{marginInlineEnd:0}}},[`${t}-item-disabled, ${t}-submenu-disabled`]:{background:\"none !important\",cursor:\"not-allowed\",\"&::after\":{borderColor:\"transparent !important\"},a:{color:\"inherit !important\"},[`> ${t}-submenu-title`]:{color:\"inherit !important\",cursor:\"not-allowed\"}}}},hb=e=>{const{componentCls:t,motionDurationSlow:n,motionEaseInOut:o,borderRadius:l,menuArrowSize:r,menuArrowOffset:a}=e;return{[`${t}-submenu`]:{\"&-expand-icon, &-arrow\":{position:\"absolute\",top:\"50%\",insetInlineEnd:e.margin,width:r,color:\"currentcolor\",transform:\"translateY(-50%)\",transition:`transform ${n} ${o}, opacity ${n}`},\"&-arrow\":{\"&::before, &::after\":{position:\"absolute\",width:r*.6,height:r*.15,backgroundColor:\"currentcolor\",borderRadius:l,transition:[`background ${n} ${o}`,`transform ${n} ${o}`,`top ${n} ${o}`,`color ${n} ${o}`].join(\",\"),content:'\"\"'},\"&::before\":{transform:`rotate(45deg) translateY(-${a})`},\"&::after\":{transform:`rotate(-45deg) translateY(${a})`}}}}},u5=e=>{const{antCls:t,componentCls:n,fontSize:o,motionDurationSlow:l,motionDurationMid:r,motionEaseInOut:a,lineHeight:i,paddingXS:s,padding:c,colorSplit:u,lineWidth:d,zIndexPopup:p,borderRadiusLG:m,radiusSubMenuItem:g,menuArrowSize:v,menuArrowOffset:y,lineType:b,menuPanelMaskInset:S}=e;return[{\"\":{[`${n}`]:h(h({},Do()),{\"&-hidden\":{display:\"none\"}})},[`${n}-submenu-hidden`]:{display:\"none\"}},{[n]:h(h(h(h(h(h(h({},qe(e)),Do()),{marginBottom:0,paddingInlineStart:0,fontSize:o,lineHeight:0,listStyle:\"none\",outline:\"none\",transition:`width ${l} cubic-bezier(0.2, 0, 0, 1) 0s`,\"ul, ol\":{margin:0,padding:0,listStyle:\"none\"},\"&-overflow\":{display:\"flex\",[`${n}-item`]:{flex:\"none\"}},[`${n}-item, ${n}-submenu, ${n}-submenu-title`]:{borderRadius:e.radiusItem},[`${n}-item-group-title`]:{padding:`${s}px ${c}px`,fontSize:o,lineHeight:i,transition:`all ${l}`},[`&-horizontal ${n}-submenu`]:{transition:[`border-color ${l} ${a}`,`background ${l} ${a}`].join(\",\")},[`${n}-submenu, ${n}-submenu-inline`]:{transition:[`border-color ${l} ${a}`,`background ${l} ${a}`,`padding ${r} ${a}`].join(\",\")},[`${n}-submenu ${n}-sub`]:{cursor:\"initial\",transition:[`background ${l} ${a}`,`padding ${l} ${a}`].join(\",\")},[`${n}-title-content`]:{transition:`color ${l}`},[`${n}-item a`]:{\"&::before\":{position:\"absolute\",inset:0,backgroundColor:\"transparent\",content:'\"\"'}},[`${n}-item-divider`]:{overflow:\"hidden\",lineHeight:0,borderColor:u,borderStyle:b,borderWidth:0,borderTopWidth:d,marginBlock:d,padding:0,\"&-dashed\":{borderStyle:\"dashed\"}}}),gb(e)),{[`${n}-item-group`]:{[`${n}-item-group-list`]:{margin:0,padding:0,[`${n}-item, ${n}-submenu-title`]:{paddingInline:`${o*2}px ${c}px`}}},\"&-submenu\":{\"&-popup\":{position:\"absolute\",zIndex:p,background:\"transparent\",borderRadius:m,boxShadow:\"none\",transformOrigin:\"0 0\",\"&::before\":{position:\"absolute\",inset:`${S}px 0 0`,zIndex:-1,width:\"100%\",height:\"100%\",opacity:0,content:'\"\"'}},\"&-placement-rightTop::before\":{top:0,insetInlineStart:S},[`> ${n}`]:h(h(h({borderRadius:m},gb(e)),hb(e)),{[`${n}-item, ${n}-submenu > ${n}-submenu-title`]:{borderRadius:g},[`${n}-submenu-title::after`]:{transition:`transform ${l} ${a}`}})}}),hb(e)),{[`&-inline-collapsed ${n}-submenu-arrow,\n        &-inline ${n}-submenu-arrow`]:{\"&::before\":{transform:`rotate(-45deg) translateX(${y})`},\"&::after\":{transform:`rotate(45deg) translateX(-${y})`}},[`${n}-submenu-open${n}-submenu-inline > ${n}-submenu-title > ${n}-submenu-arrow`]:{transform:`translateY(-${v*.2}px)`,\"&::after\":{transform:`rotate(-45deg) translateX(-${y})`},\"&::before\":{transform:`rotate(45deg) translateX(${y})`}}})},{[`${t}-layout-header`]:{[n]:{lineHeight:\"inherit\"}}}]},d5=(e,t)=>Xe(\"Menu\",(o,l)=>{let{overrideComponentToken:r}=l;if(t?.value===!1)return[];const{colorBgElevated:a,colorPrimary:i,colorError:s,colorErrorHover:c,colorTextLightSolid:u}=o,{controlHeightLG:d,fontSize:p}=o,m=p/7*5,g=Le(o,{menuItemHeight:d,menuItemPaddingInline:o.margin,menuArrowSize:m,menuHorizontalHeight:d*1.15,menuArrowOffset:`${m*.25}px`,menuPanelMaskInset:-7,menuSubMenuBg:a}),v=new vt(u).setAlpha(.65).toRgbString(),y=Le(g,{colorItemText:v,colorItemTextHover:u,colorGroupTitle:v,colorItemTextSelected:u,colorItemBg:\"#001529\",colorSubItemBg:\"#000c17\",colorItemBgActive:\"transparent\",colorItemBgSelected:i,colorActiveBarWidth:0,colorActiveBarHeight:0,colorActiveBarBorderSize:0,colorItemTextDisabled:new vt(u).setAlpha(.25).toRgbString(),colorDangerItemText:s,colorDangerItemTextHover:c,colorDangerItemTextSelected:u,colorDangerItemBgActive:s,colorDangerItemBgSelected:s,menuSubMenuBg:\"#001529\",colorItemTextSelectedHorizontal:u,colorItemBgSelectedHorizontal:i},h({},r));return[u5(g),i5(g),c5(g),mb(g,\"light\"),mb(y,\"dark\"),s5(g),Fi(g),Uo(g,\"slide-up\"),Uo(g,\"slide-down\"),Oa(g,\"zoom-big\")]},o=>{const{colorPrimary:l,colorError:r,colorTextDisabled:a,colorErrorBg:i,colorText:s,colorTextDescription:c,colorBgContainer:u,colorFillAlter:d,colorFillContent:p,lineWidth:m,lineWidthBold:g,controlItemBgActive:v,colorBgTextHover:y}=o;return{dropdownWidth:160,zIndexPopup:o.zIndexPopupBase+50,radiusItem:o.borderRadiusLG,radiusSubMenuItem:o.borderRadiusSM,colorItemText:s,colorItemTextHover:s,colorItemTextHoverHorizontal:l,colorGroupTitle:c,colorItemTextSelected:l,colorItemTextSelectedHorizontal:l,colorItemBg:u,colorItemBgHover:y,colorItemBgActive:p,colorSubItemBg:d,colorItemBgSelected:v,colorItemBgSelectedHorizontal:\"transparent\",colorActiveBarWidth:0,colorActiveBarHeight:g,colorActiveBarBorderSize:m,colorItemTextDisabled:a,colorDangerItemText:r,colorDangerItemTextHover:r,colorDangerItemTextSelected:r,colorDangerItemBgActive:i,colorDangerItemBgSelected:i,itemMarginInline:o.marginXXS}})(e),f5=()=>({id:String,prefixCls:String,items:Array,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},tabindex:{type:[Number,String]},motion:Object,role:String,theme:{type:String,default:\"light\"},mode:{type:String,default:\"vertical\"},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:0},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:\"hover\"},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,\"onUpdate:openKeys\":Function,\"onUpdate:selectedKeys\":Function,\"onUpdate:activeKey\":Function}),bb=[],Ht=ne({compatConfig:{MODE:3},name:\"AMenu\",inheritAttrs:!1,props:f5(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:l}=t;const{direction:r,getPrefixCls:a}=Te(\"menu\",e),i=L1(),s=I(()=>{var Q;return a(\"menu\",e.prefixCls||((Q=i?.prefixCls)===null||Q===void 0?void 0:Q.value))}),[c,u]=d5(s,I(()=>!i)),d=ee(new Map),p=nt(K1,Z(void 0)),m=I(()=>p.value!==void 0?p.value:e.inlineCollapsed),{itemsNodes:g}=a5(e),v=ee(!1);Be(()=>{v.value=!0}),ze(()=>{Ot(!(e.inlineCollapsed===!0&&e.mode!==\"inline\"),\"Menu\",\"`inlineCollapsed` should only be used when `mode` is inline.\"),Ot(!(p.value!==void 0&&e.inlineCollapsed===!0),\"Menu\",\"`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.\")});const y=Z([]),b=Z([]),S=Z({});pe(d,()=>{const Q={};for(const oe of d.value.values())Q[oe.key]=oe;S.value=Q},{flush:\"post\"}),ze(()=>{if(e.activeKey!==void 0){let Q=[];const oe=e.activeKey?S.value[e.activeKey]:void 0;oe&&e.activeKey!==void 0?Q=Bd([].concat(Ne(oe.parentKeys),e.activeKey)):Q=[],Gr(y.value,Q)||(y.value=Q)}}),pe(()=>e.selectedKeys,Q=>{Q&&(b.value=Q.slice())},{immediate:!0,deep:!0});const $=Z([]);pe([S,b],()=>{let Q=[];b.value.forEach(oe=>{const le=S.value[oe];le&&(Q=Q.concat(Ne(le.parentKeys)))}),Q=Bd(Q),Gr($.value,Q)||($.value=Q)},{immediate:!0});const w=Q=>{if(e.selectable){const{key:oe}=Q,le=b.value.includes(oe);let Y;e.multiple?le?Y=b.value.filter(ce=>ce!==oe):Y=[...b.value,oe]:Y=[oe];const J=h(h({},Q),{selectedKeys:Y});Gr(Y,b.value)||(e.selectedKeys===void 0&&(b.value=Y),o(\"update:selectedKeys\",Y),le&&e.multiple?o(\"deselect\",J):o(\"select\",J))}M.value!==\"inline\"&&!e.multiple&&C.value.length&&D(bb)},C=Z([]);pe(()=>e.openKeys,function(){let Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:C.value;Gr(C.value,Q)||(C.value=Q.slice())},{immediate:!0,deep:!0});let _;const x=Q=>{clearTimeout(_),_=setTimeout(()=>{e.activeKey===void 0&&(y.value=Q),o(\"update:activeKey\",Q[Q.length-1])})},P=I(()=>!!e.disabled),E=I(()=>r.value===\"rtl\"),M=Z(\"vertical\"),O=ee(!1);ze(()=>{var Q;(e.mode===\"inline\"||e.mode===\"vertical\")&&m.value?(M.value=\"vertical\",O.value=m.value):(M.value=e.mode,O.value=!1),!((Q=i?.mode)===null||Q===void 0)&&Q.value&&(M.value=i.mode.value)});const R=I(()=>M.value===\"inline\"),D=Q=>{C.value=Q,o(\"update:openKeys\",Q),o(\"openChange\",Q)},z=Z(C.value),T=ee(!1);pe(C,()=>{R.value&&(z.value=C.value)},{immediate:!0}),pe(R,()=>{if(!T.value){T.value=!0;return}R.value?C.value=z.value:D(bb)},{immediate:!0});const k=I(()=>({[`${s.value}`]:!0,[`${s.value}-root`]:!0,[`${s.value}-${M.value}`]:!0,[`${s.value}-inline-collapsed`]:O.value,[`${s.value}-rtl`]:E.value,[`${s.value}-${e.theme}`]:!0})),B=I(()=>a()),L=I(()=>({horizontal:{name:`${B.value}-slide-up`},inline:zi(`${B.value}-motion-collapse`),other:{name:`${B.value}-zoom-big`}}));V1(!0);const N=function(){let Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const oe=[],le=d.value;return Q.forEach(Y=>{const{key:J,childrenEventKeys:ce}=le.get(Y);oe.push(J,...N(Ne(ce)))}),oe},F=Q=>{var oe;o(\"click\",Q),w(Q),(oe=i?.onClick)===null||oe===void 0||oe.call(i)},j=(Q,oe)=>{var le;const Y=((le=S.value[Q])===null||le===void 0?void 0:le.childrenEventKeys)||[];let J=C.value.filter(ce=>ce!==Q);if(oe)J.push(Q);else if(M.value!==\"inline\"){const ce=N(Ne(Y));J=Bd(J.filter(ue=>!ce.includes(ue)))}Gr(C,J)||D(J)},H=(Q,oe)=>{d.value.set(Q,oe),d.value=new Map(d.value)},K=Q=>{d.value.delete(Q),d.value=new Map(d.value)},G=Z(0),V=I(()=>{var Q;return e.expandIcon||n.expandIcon||!((Q=i?.expandIcon)===null||Q===void 0)&&Q.value?oe=>{let le=e.expandIcon||n.expandIcon;return le=typeof le==\"function\"?le(oe):le,ft(le,{class:`${s.value}-submenu-expand-icon`},!1)}:null});z1({prefixCls:s,activeKeys:y,openKeys:C,selectedKeys:b,changeActiveKeys:x,disabled:P,rtl:E,mode:M,inlineIndent:I(()=>e.inlineIndent),subMenuCloseDelay:I(()=>e.subMenuCloseDelay),subMenuOpenDelay:I(()=>e.subMenuOpenDelay),builtinPlacements:I(()=>e.builtinPlacements),triggerSubMenuAction:I(()=>e.triggerSubMenuAction),getPopupContainer:I(()=>e.getPopupContainer),inlineCollapsed:O,theme:I(()=>e.theme),siderCollapsed:p,defaultMotions:I(()=>v.value?L.value:null),motion:I(()=>v.value?e.motion:null),overflowDisabled:ee(void 0),onOpenChange:j,onItemClick:F,registerMenuInfo:H,unRegisterMenuInfo:K,selectedSubMenuKeys:$,expandIcon:V,forceSubMenuRender:I(()=>e.forceSubMenuRender),rootClassName:u});const q=()=>{var Q;return g.value||xt((Q=n.default)===null||Q===void 0?void 0:Q.call(n))};return()=>{var Q;const oe=q(),le=G.value>=oe.length-1||M.value!==\"horizontal\"||e.disabledOverflow,Y=ce=>M.value!==\"horizontal\"||e.disabledOverflow?ce:ce.map((ue,be)=>f(ou,{key:ue.key,overflowDisabled:be>G.value},{default:()=>ue})),J=((Q=n.overflowedIndicator)===null||Q===void 0?void 0:Q.call(n))||f(Pm,null,null);return c(f(dl,A(A({},l),{},{onMousedown:e.onMousedown,prefixCls:`${s.value}-overflow`,component:\"ul\",itemComponent:Eo,class:[k.value,l.class,u.value],role:\"menu\",id:e.id,data:Y(oe),renderRawItem:ce=>ce,renderRawRest:ce=>{const ue=ce.length,be=ue?oe.slice(-ue):null;return f(He,null,[f(Cr,{eventKey:ys,key:ys,title:J,disabled:le,internalPopupClose:ue===0},{default:()=>be}),f(ub,null,{default:()=>[f(Cr,{eventKey:ys,key:ys,title:J,disabled:le,internalPopupClose:ue===0},{default:()=>be})]})])},maxCount:M.value!==\"horizontal\"||e.disabledOverflow?dl.INVALIDATE:dl.RESPONSIVE,ssr:\"full\",\"data-menu-list\":!0,onVisibleChange:ce=>{G.value=ce}}),{default:()=>[f(Im,{to:\"body\"},{default:()=>[f(\"div\",{style:{display:\"none\"},\"aria-hidden\":!0},[f(ub,null,{default:()=>[Y(q())]})])]})]}))}}});Ht.install=function(e){return e.component(Ht.name,Ht),e.component(Eo.name,Eo),e.component(Cr.name,Cr),e.component(Ii.name,Ii),e.component(_i.name,_i),e};Ht.Item=Eo;Ht.Divider=Ii;Ht.SubMenu=Cr;Ht.ItemGroup=_i;const p5=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:h(h({},qe(e)),{color:e.breadcrumbBaseColor,fontSize:e.breadcrumbFontSize,[n]:{fontSize:e.breadcrumbIconFontSize},ol:{display:\"flex\",flexWrap:\"wrap\",margin:0,padding:0,listStyle:\"none\"},a:h({color:e.breadcrumbLinkColor,transition:`color ${e.motionDurationMid}`,padding:`0 ${e.paddingXXS}px`,borderRadius:e.borderRadiusSM,height:e.lineHeight*e.fontSize,display:\"inline-block\",marginInline:-e.marginXXS,\"&:hover\":{color:e.breadcrumbLinkColorHover,backgroundColor:e.colorBgTextHover}},pl(e)),\"li:last-child\":{color:e.breadcrumbLastItemColor,[`& > ${t}-separator`]:{display:\"none\"}},[`${t}-separator`]:{marginInline:e.breadcrumbSeparatorMargin,color:e.breadcrumbSeparatorColor},[`${t}-link`]:{[`\n          > ${n} + span,\n          > ${n} + a\n        `]:{marginInlineStart:e.marginXXS}},[`${t}-overlay-link`]:{borderRadius:e.borderRadiusSM,height:e.lineHeight*e.fontSize,display:\"inline-block\",padding:`0 ${e.paddingXXS}px`,marginInline:-e.marginXXS,[`> ${n}`]:{marginInlineStart:e.marginXXS,fontSize:e.fontSizeIcon},\"&:hover\":{color:e.breadcrumbLinkColorHover,backgroundColor:e.colorBgTextHover,a:{color:e.breadcrumbLinkColorHover}},a:{\"&:hover\":{backgroundColor:\"transparent\"}}},[`&${e.componentCls}-rtl`]:{direction:\"rtl\"}})}},m5=Xe(\"Breadcrumb\",e=>{const t=Le(e,{breadcrumbBaseColor:e.colorTextDescription,breadcrumbFontSize:e.fontSize,breadcrumbIconFontSize:e.fontSize,breadcrumbLinkColor:e.colorTextDescription,breadcrumbLinkColorHover:e.colorText,breadcrumbLastItemColor:e.colorText,breadcrumbSeparatorMargin:e.marginXS,breadcrumbSeparatorColor:e.colorTextDescription});return[p5(t)]}),v5=()=>({prefixCls:String,routes:{type:Array},params:W.any,separator:W.any,itemRender:{type:Function}});function g5(e,t){if(!e.breadcrumbName)return null;const n=Object.keys(t).join(\"|\");return e.breadcrumbName.replace(new RegExp(`:(${n})`,\"g\"),(l,r)=>t[r]||l)}function yb(e){const{route:t,params:n,routes:o,paths:l}=e,r=o.indexOf(t)===o.length-1,a=g5(t,n);return r?f(\"span\",null,[a]):f(\"a\",{href:`#/${l.join(\"/\")}`},[a])}const vr=ne({compatConfig:{MODE:3},name:\"ABreadcrumb\",inheritAttrs:!1,props:v5(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"breadcrumb\",e),[a,i]=m5(l),s=(d,p)=>(d=(d||\"\").replace(/^\\//,\"\"),Object.keys(p).forEach(m=>{d=d.replace(`:${m}`,p[m])}),d),c=(d,p,m)=>{const g=[...d],v=s(p||\"\",m);return v&&g.push(v),g},u=d=>{let{routes:p=[],params:m={},separator:g,itemRender:v=yb}=d;const y=[];return p.map(b=>{const S=s(b.path,m);S&&y.push(S);const $=[...y];let w=null;b.children&&b.children.length&&(w=f(Ht,{items:b.children.map(_=>({key:_.path||_.breadcrumbName,label:v({route:_,params:m,routes:p,paths:c($,_.path,m)})}))},null));const C={separator:g};return w&&(C.overlay=w),f(wi,A(A({},C),{},{key:S||b.breadcrumbName}),{default:()=>[v({route:b,params:m,routes:p,paths:$})]})})};return()=>{var d;let p;const{routes:m,params:g={}}=e,v=xt(Qt(n,e)),y=(d=Qt(n,e,\"separator\"))!==null&&d!==void 0?d:\"/\",b=e.itemRender||n.itemRender||yb;m&&m.length>0?p=u({routes:m,params:g,separator:y,itemRender:b}):v.length&&(p=v.map(($,w)=>(no(typeof $.type==\"object\"&&($.type.__ANT_BREADCRUMB_ITEM||$.type.__ANT_BREADCRUMB_SEPARATOR)),Mo($,{separator:y,key:w}))));const S={[l.value]:!0,[`${l.value}-rtl`]:r.value===\"rtl\",[`${o.class}`]:!!o.class,[i.value]:!0};return a(f(\"nav\",A(A({},o),{},{class:S}),[f(\"ol\",null,[p])]))}}});var h5=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const b5=()=>({prefixCls:String}),au=ne({compatConfig:{MODE:3},name:\"ABreadcrumbSeparator\",__ANT_BREADCRUMB_SEPARATOR:!0,inheritAttrs:!1,props:b5(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l}=Te(\"breadcrumb\",e);return()=>{var r;const{separator:a,class:i}=o,s=h5(o,[\"separator\",\"class\"]),c=xt((r=n.default)===null||r===void 0?void 0:r.call(n));return f(\"span\",A({class:[`${l.value}-separator`,i]},s),[c.length>0?c:\"/\"])}}});vr.Item=wi;vr.Separator=au;vr.install=function(e){return e.component(vr.name,vr),e.component(wi.name,wi),e.component(au.name,au),e};function $l(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var Gs={exports:{}},y5=Gs.exports,Sb;function S5(){return Sb||(Sb=1,(function(e,t){(function(n,o){e.exports=o()})(y5,function(){var n=1e3,o=6e4,l=36e5,r=\"millisecond\",a=\"second\",i=\"minute\",s=\"hour\",c=\"day\",u=\"week\",d=\"month\",p=\"quarter\",m=\"year\",g=\"date\",v=\"Invalid Date\",y=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,b=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,S={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(z){var T=[\"th\",\"st\",\"nd\",\"rd\"],k=z%100;return\"[\"+z+(T[(k-20)%10]||T[k]||T[0])+\"]\"}},$=function(z,T,k){var B=String(z);return!B||B.length>=T?z:\"\"+Array(T+1-B.length).join(k)+z},w={s:$,z:function(z){var T=-z.utcOffset(),k=Math.abs(T),B=Math.floor(k/60),L=k%60;return(T<=0?\"+\":\"-\")+$(B,2,\"0\")+\":\"+$(L,2,\"0\")},m:function z(T,k){if(T.date()<k.date())return-z(k,T);var B=12*(k.year()-T.year())+(k.month()-T.month()),L=T.clone().add(B,d),N=k-L<0,F=T.clone().add(B+(N?-1:1),d);return+(-(B+(k-L)/(N?L-F:F-L))||0)},a:function(z){return z<0?Math.ceil(z)||0:Math.floor(z)},p:function(z){return{M:d,y:m,w:u,d:c,D:g,h:s,m:i,s:a,ms:r,Q:p}[z]||String(z||\"\").toLowerCase().replace(/s$/,\"\")},u:function(z){return z===void 0}},C=\"en\",_={};_[C]=S;var x=\"$isDayjsObject\",P=function(z){return z instanceof R||!(!z||!z[x])},E=function z(T,k,B){var L;if(!T)return C;if(typeof T==\"string\"){var N=T.toLowerCase();_[N]&&(L=N),k&&(_[N]=k,L=N);var F=T.split(\"-\");if(!L&&F.length>1)return z(F[0])}else{var j=T.name;_[j]=T,L=j}return!B&&L&&(C=L),L||!B&&C},M=function(z,T){if(P(z))return z.clone();var k=typeof T==\"object\"?T:{};return k.date=z,k.args=arguments,new R(k)},O=w;O.l=E,O.i=P,O.w=function(z,T){return M(z,{locale:T.$L,utc:T.$u,x:T.$x,$offset:T.$offset})};var R=(function(){function z(k){this.$L=E(k.locale,null,!0),this.parse(k),this.$x=this.$x||k.x||{},this[x]=!0}var T=z.prototype;return T.parse=function(k){this.$d=(function(B){var L=B.date,N=B.utc;if(L===null)return new Date(NaN);if(O.u(L))return new Date;if(L instanceof Date)return new Date(L);if(typeof L==\"string\"&&!/Z$/i.test(L)){var F=L.match(y);if(F){var j=F[2]-1||0,H=(F[7]||\"0\").substring(0,3);return N?new Date(Date.UTC(F[1],j,F[3]||1,F[4]||0,F[5]||0,F[6]||0,H)):new Date(F[1],j,F[3]||1,F[4]||0,F[5]||0,F[6]||0,H)}}return new Date(L)})(k),this.init()},T.init=function(){var k=this.$d;this.$y=k.getFullYear(),this.$M=k.getMonth(),this.$D=k.getDate(),this.$W=k.getDay(),this.$H=k.getHours(),this.$m=k.getMinutes(),this.$s=k.getSeconds(),this.$ms=k.getMilliseconds()},T.$utils=function(){return O},T.isValid=function(){return this.$d.toString()!==v},T.isSame=function(k,B){var L=M(k);return this.startOf(B)<=L&&L<=this.endOf(B)},T.isAfter=function(k,B){return M(k)<this.startOf(B)},T.isBefore=function(k,B){return this.endOf(B)<M(k)},T.$g=function(k,B,L){return O.u(k)?this[B]:this.set(L,k)},T.unix=function(){return Math.floor(this.valueOf()/1e3)},T.valueOf=function(){return this.$d.getTime()},T.startOf=function(k,B){var L=this,N=!!O.u(B)||B,F=O.p(k),j=function(le,Y){var J=O.w(L.$u?Date.UTC(L.$y,Y,le):new Date(L.$y,Y,le),L);return N?J:J.endOf(c)},H=function(le,Y){return O.w(L.toDate()[le].apply(L.toDate(\"s\"),(N?[0,0,0,0]:[23,59,59,999]).slice(Y)),L)},K=this.$W,G=this.$M,V=this.$D,q=\"set\"+(this.$u?\"UTC\":\"\");switch(F){case m:return N?j(1,0):j(31,11);case d:return N?j(1,G):j(0,G+1);case u:var Q=this.$locale().weekStart||0,oe=(K<Q?K+7:K)-Q;return j(N?V-oe:V+(6-oe),G);case c:case g:return H(q+\"Hours\",0);case s:return H(q+\"Minutes\",1);case i:return H(q+\"Seconds\",2);case a:return H(q+\"Milliseconds\",3);default:return this.clone()}},T.endOf=function(k){return this.startOf(k,!1)},T.$set=function(k,B){var L,N=O.p(k),F=\"set\"+(this.$u?\"UTC\":\"\"),j=(L={},L[c]=F+\"Date\",L[g]=F+\"Date\",L[d]=F+\"Month\",L[m]=F+\"FullYear\",L[s]=F+\"Hours\",L[i]=F+\"Minutes\",L[a]=F+\"Seconds\",L[r]=F+\"Milliseconds\",L)[N],H=N===c?this.$D+(B-this.$W):B;if(N===d||N===m){var K=this.clone().set(g,1);K.$d[j](H),K.init(),this.$d=K.set(g,Math.min(this.$D,K.daysInMonth())).$d}else j&&this.$d[j](H);return this.init(),this},T.set=function(k,B){return this.clone().$set(k,B)},T.get=function(k){return this[O.p(k)]()},T.add=function(k,B){var L,N=this;k=Number(k);var F=O.p(B),j=function(G){var V=M(N);return O.w(V.date(V.date()+Math.round(G*k)),N)};if(F===d)return this.set(d,this.$M+k);if(F===m)return this.set(m,this.$y+k);if(F===c)return j(1);if(F===u)return j(7);var H=(L={},L[i]=o,L[s]=l,L[a]=n,L)[F]||1,K=this.$d.getTime()+k*H;return O.w(K,this)},T.subtract=function(k,B){return this.add(-1*k,B)},T.format=function(k){var B=this,L=this.$locale();if(!this.isValid())return L.invalidDate||v;var N=k||\"YYYY-MM-DDTHH:mm:ssZ\",F=O.z(this),j=this.$H,H=this.$m,K=this.$M,G=L.weekdays,V=L.months,q=L.meridiem,Q=function(Y,J,ce,ue){return Y&&(Y[J]||Y(B,N))||ce[J].slice(0,ue)},oe=function(Y){return O.s(j%12||12,Y,\"0\")},le=q||function(Y,J,ce){var ue=Y<12?\"AM\":\"PM\";return ce?ue.toLowerCase():ue};return N.replace(b,function(Y,J){return J||(function(ce){switch(ce){case\"YY\":return String(B.$y).slice(-2);case\"YYYY\":return O.s(B.$y,4,\"0\");case\"M\":return K+1;case\"MM\":return O.s(K+1,2,\"0\");case\"MMM\":return Q(L.monthsShort,K,V,3);case\"MMMM\":return Q(V,K);case\"D\":return B.$D;case\"DD\":return O.s(B.$D,2,\"0\");case\"d\":return String(B.$W);case\"dd\":return Q(L.weekdaysMin,B.$W,G,2);case\"ddd\":return Q(L.weekdaysShort,B.$W,G,3);case\"dddd\":return G[B.$W];case\"H\":return String(j);case\"HH\":return O.s(j,2,\"0\");case\"h\":return oe(1);case\"hh\":return oe(2);case\"a\":return le(j,H,!0);case\"A\":return le(j,H,!1);case\"m\":return String(H);case\"mm\":return O.s(H,2,\"0\");case\"s\":return String(B.$s);case\"ss\":return O.s(B.$s,2,\"0\");case\"SSS\":return O.s(B.$ms,3,\"0\");case\"Z\":return F}return null})(Y)||F.replace(\":\",\"\")})},T.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},T.diff=function(k,B,L){var N,F=this,j=O.p(B),H=M(k),K=(H.utcOffset()-this.utcOffset())*o,G=this-H,V=function(){return O.m(F,H)};switch(j){case m:N=V()/12;break;case d:N=V();break;case p:N=V()/3;break;case u:N=(G-K)/6048e5;break;case c:N=(G-K)/864e5;break;case s:N=G/l;break;case i:N=G/o;break;case a:N=G/n;break;default:N=G}return L?N:O.a(N)},T.daysInMonth=function(){return this.endOf(d).$D},T.$locale=function(){return _[this.$L]},T.locale=function(k,B){if(!k)return this.$L;var L=this.clone(),N=E(k,B,!0);return N&&(L.$L=N),L},T.clone=function(){return O.w(this.$d,this)},T.toDate=function(){return new Date(this.valueOf())},T.toJSON=function(){return this.isValid()?this.toISOString():null},T.toISOString=function(){return this.$d.toISOString()},T.toString=function(){return this.$d.toUTCString()},z})(),D=R.prototype;return M.prototype=D,[[\"$ms\",r],[\"$s\",a],[\"$m\",i],[\"$H\",s],[\"$W\",c],[\"$M\",d],[\"$y\",m],[\"$D\",g]].forEach(function(z){D[z[1]]=function(T){return this.$g(T,z[0],z[1])}}),M.extend=function(z,T){return z.$i||(z(T,R,M),z.$i=!0),M},M.locale=E,M.isDayjs=P,M.unix=function(z){return M(1e3*z)},M.en=_[C],M.Ls=_,M.p={},M})})(Gs)),Gs.exports}var $5=S5();const an=$l($5);var Xs={exports:{}},C5=Xs.exports,$b;function x5(){return $b||($b=1,(function(e,t){(function(n,o){e.exports=o()})(C5,function(){return function(n,o){o.prototype.weekday=function(l){var r=this.$locale().weekStart||0,a=this.$W,i=(a<r?a+7:a)-r;return this.$utils().u(l)?i:this.subtract(i,\"day\").add(l,\"day\")}}})})(Xs)),Xs.exports}var w5=x5();const _5=$l(w5);var Us={exports:{}},I5=Us.exports,Cb;function P5(){return Cb||(Cb=1,(function(e,t){(function(n,o){e.exports=o()})(I5,function(){return function(n,o,l){var r=o.prototype,a=function(d){return d&&(d.indexOf?d:d.s)},i=function(d,p,m,g,v){var y=d.name?d:d.$locale(),b=a(y[p]),S=a(y[m]),$=b||S.map(function(C){return C.slice(0,g)});if(!v)return $;var w=y.weekStart;return $.map(function(C,_){return $[(_+(w||0))%7]})},s=function(){return l.Ls[l.locale()]},c=function(d,p){return d.formats[p]||(function(m){return m.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(g,v,y){return v||y.slice(1)})})(d.formats[p.toUpperCase()])},u=function(){var d=this;return{months:function(p){return p?p.format(\"MMMM\"):i(d,\"months\")},monthsShort:function(p){return p?p.format(\"MMM\"):i(d,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(p){return p?p.format(\"dddd\"):i(d,\"weekdays\")},weekdaysMin:function(p){return p?p.format(\"dd\"):i(d,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(p){return p?p.format(\"ddd\"):i(d,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(p){return c(d.$locale(),p)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return u.bind(this)()},l.localeData=function(){var d=s();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return l.weekdays()},weekdaysShort:function(){return l.weekdaysShort()},weekdaysMin:function(){return l.weekdaysMin()},months:function(){return l.months()},monthsShort:function(){return l.monthsShort()},longDateFormat:function(p){return c(d,p)},meridiem:d.meridiem,ordinal:d.ordinal}},l.months=function(){return i(s(),\"months\")},l.monthsShort=function(){return i(s(),\"monthsShort\",\"months\",3)},l.weekdays=function(d){return i(s(),\"weekdays\",null,null,d)},l.weekdaysShort=function(d){return i(s(),\"weekdaysShort\",\"weekdays\",3,d)},l.weekdaysMin=function(d){return i(s(),\"weekdaysMin\",\"weekdays\",2,d)}}})})(Us)),Us.exports}var T5=P5();const O5=$l(T5);var Ys={exports:{}},E5=Ys.exports,xb;function M5(){return xb||(xb=1,(function(e,t){(function(n,o){e.exports=o()})(E5,function(){var n=\"week\",o=\"year\";return function(l,r,a){var i=r.prototype;i.week=function(s){if(s===void 0&&(s=null),s!==null)return this.add(7*(s-this.week()),\"day\");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var u=a(this).startOf(o).add(1,o).date(c),d=a(this).endOf(n);if(u.isBefore(d))return 1}var p=a(this).startOf(o).date(c).startOf(n).subtract(1,\"millisecond\"),m=this.diff(p,n,!0);return m<0?a(this).startOf(\"week\").week():Math.ceil(m)},i.weeks=function(s){return s===void 0&&(s=null),this.week(s)}}})})(Ys)),Ys.exports}var A5=M5();const D5=$l(A5);var qs={exports:{}},R5=qs.exports,wb;function k5(){return wb||(wb=1,(function(e,t){(function(n,o){e.exports=o()})(R5,function(){return function(n,o){o.prototype.weekYear=function(){var l=this.month(),r=this.week(),a=this.year();return r===1&&l===11?a+1:l===0&&r>=52?a-1:a}}})})(qs)),qs.exports}var N5=k5();const B5=$l(N5);var Zs={exports:{}},L5=Zs.exports,_b;function F5(){return _b||(_b=1,(function(e,t){(function(n,o){e.exports=o()})(L5,function(){var n=\"month\",o=\"quarter\";return function(l,r){var a=r.prototype;a.quarter=function(c){return this.$utils().u(c)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(c-1))};var i=a.add;a.add=function(c,u){return c=Number(c),this.$utils().p(u)===o?this.add(3*c,n):i.bind(this)(c,u)};var s=a.startOf;a.startOf=function(c,u){var d=this.$utils(),p=!!d.u(u)||u;if(d.p(c)===o){var m=this.quarter()-1;return p?this.month(3*m).startOf(n).startOf(\"day\"):this.month(3*m+2).endOf(n).endOf(\"day\")}return s.bind(this)(c,u)}}})})(Zs)),Zs.exports}var z5=F5();const H5=$l(z5);var Qs={exports:{}},j5=Qs.exports,Ib;function W5(){return Ib||(Ib=1,(function(e,t){(function(n,o){e.exports=o()})(j5,function(){return function(n,o){var l=o.prototype,r=l.format;l.format=function(a){var i=this,s=this.$locale();if(!this.isValid())return r.bind(this)(a);var c=this.$utils(),u=(a||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(d){switch(d){case\"Q\":return Math.ceil((i.$M+1)/3);case\"Do\":return s.ordinal(i.$D);case\"gggg\":return i.weekYear();case\"GGGG\":return i.isoWeekYear();case\"wo\":return s.ordinal(i.week(),\"W\");case\"w\":case\"ww\":return c.s(i.week(),d===\"w\"?1:2,\"0\");case\"W\":case\"WW\":return c.s(i.isoWeek(),d===\"W\"?1:2,\"0\");case\"k\":case\"kk\":return c.s(String(i.$H===0?24:i.$H),d===\"k\"?1:2,\"0\");case\"X\":return Math.floor(i.$d.getTime()/1e3);case\"x\":return i.$d.getTime();case\"z\":return\"[\"+i.offsetName()+\"]\";case\"zzz\":return\"[\"+i.offsetName(\"long\")+\"]\";default:return d}});return r.bind(this)(u)}}})})(Qs)),Qs.exports}var V5=W5();const K5=$l(V5);var Js={exports:{}},G5=Js.exports,Pb;function X5(){return Pb||(Pb=1,(function(e,t){(function(n,o){e.exports=o()})(G5,function(){var n={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},o=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,l=/\\d/,r=/\\d\\d/,a=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,s={},c=function(y){return(y=+y)+(y>68?1900:2e3)},u=function(y){return function(b){this[y]=+b}},d=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(y){(this.zone||(this.zone={})).offset=(function(b){if(!b||b===\"Z\")return 0;var S=b.match(/([+-]|\\d\\d)/g),$=60*S[1]+(+S[2]||0);return $===0?0:S[0]===\"+\"?-$:$})(y)}],p=function(y){var b=s[y];return b&&(b.indexOf?b:b.s.concat(b.f))},m=function(y,b){var S,$=s.meridiem;if($){for(var w=1;w<=24;w+=1)if(y.indexOf($(w,0,b))>-1){S=w>12;break}}else S=y===(b?\"pm\":\"PM\");return S},g={A:[i,function(y){this.afternoon=m(y,!1)}],a:[i,function(y){this.afternoon=m(y,!0)}],Q:[l,function(y){this.month=3*(y-1)+1}],S:[l,function(y){this.milliseconds=100*+y}],SS:[r,function(y){this.milliseconds=10*+y}],SSS:[/\\d{3}/,function(y){this.milliseconds=+y}],s:[a,u(\"seconds\")],ss:[a,u(\"seconds\")],m:[a,u(\"minutes\")],mm:[a,u(\"minutes\")],H:[a,u(\"hours\")],h:[a,u(\"hours\")],HH:[a,u(\"hours\")],hh:[a,u(\"hours\")],D:[a,u(\"day\")],DD:[r,u(\"day\")],Do:[i,function(y){var b=s.ordinal,S=y.match(/\\d+/);if(this.day=S[0],b)for(var $=1;$<=31;$+=1)b($).replace(/\\[|\\]/g,\"\")===y&&(this.day=$)}],w:[a,u(\"week\")],ww:[r,u(\"week\")],M:[a,u(\"month\")],MM:[r,u(\"month\")],MMM:[i,function(y){var b=p(\"months\"),S=(p(\"monthsShort\")||b.map(function($){return $.slice(0,3)})).indexOf(y)+1;if(S<1)throw new Error;this.month=S%12||S}],MMMM:[i,function(y){var b=p(\"months\").indexOf(y)+1;if(b<1)throw new Error;this.month=b%12||b}],Y:[/[+-]?\\d+/,u(\"year\")],YY:[r,function(y){this.year=c(y)}],YYYY:[/\\d{4}/,u(\"year\")],Z:d,ZZ:d};function v(y){var b,S;b=y,S=s&&s.formats;for(var $=(y=b.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(M,O,R){var D=R&&R.toUpperCase();return O||S[R]||n[R]||S[D].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(z,T,k){return T||k.slice(1)})})).match(o),w=$.length,C=0;C<w;C+=1){var _=$[C],x=g[_],P=x&&x[0],E=x&&x[1];$[C]=E?{regex:P,parser:E}:_.replace(/^\\[|\\]$/g,\"\")}return function(M){for(var O={},R=0,D=0;R<w;R+=1){var z=$[R];if(typeof z==\"string\")D+=z.length;else{var T=z.regex,k=z.parser,B=M.slice(D),L=T.exec(B)[0];k.call(O,L),M=M.replace(L,\"\")}}return(function(N){var F=N.afternoon;if(F!==void 0){var j=N.hours;F?j<12&&(N.hours+=12):j===12&&(N.hours=0),delete N.afternoon}})(O),O}}return function(y,b,S){S.p.customParseFormat=!0,y&&y.parseTwoDigitYear&&(c=y.parseTwoDigitYear);var $=b.prototype,w=$.parse;$.parse=function(C){var _=C.date,x=C.utc,P=C.args;this.$u=x;var E=P[1];if(typeof E==\"string\"){var M=P[2]===!0,O=P[3]===!0,R=M||O,D=P[2];O&&(D=P[2]),s=this.$locale(),!M&&D&&(s=S.Ls[D]),this.$d=(function(B,L,N,F){try{if([\"x\",\"X\"].indexOf(L)>-1)return new Date((L===\"X\"?1e3:1)*B);var j=v(L)(B),H=j.year,K=j.month,G=j.day,V=j.hours,q=j.minutes,Q=j.seconds,oe=j.milliseconds,le=j.zone,Y=j.week,J=new Date,ce=G||(H||K?1:J.getDate()),ue=H||J.getFullYear(),be=0;H&&!K||(be=K>0?K-1:J.getMonth());var Ce,ge=V||0,Se=q||0,X=Q||0,U=oe||0;return le?new Date(Date.UTC(ue,be,ce,ge,Se,X,U+60*le.offset*1e3)):N?new Date(Date.UTC(ue,be,ce,ge,Se,X,U)):(Ce=new Date(ue,be,ce,ge,Se,X,U),Y&&(Ce=F(Ce).week(Y).toDate()),Ce)}catch{return new Date(\"\")}})(_,E,x,S),this.init(),D&&D!==!0&&(this.$L=this.locale(D).$L),R&&_!=this.format(E)&&(this.$d=new Date(\"\")),s={}}else if(E instanceof Array)for(var z=E.length,T=1;T<=z;T+=1){P[1]=E[T-1];var k=S.apply(this,P);if(k.isValid()){this.$d=k.$d,this.$L=k.$L,this.init();break}T===z&&(this.$d=new Date(\"\"))}else w.call(this,C)}}})})(Js)),Js.exports}var U5=X5();const Y5=$l(U5);an.extend(Y5);an.extend(K5);an.extend(_5);an.extend(O5);an.extend(D5);an.extend(B5);an.extend(H5);an.extend((e,t)=>{const n=t.prototype,o=n.format;n.format=function(r){const a=(r||\"\").replace(\"Wo\",\"wo\");return o.bind(this)(a)}});const q5={bn_BD:\"bn-bd\",by_BY:\"be\",en_GB:\"en-gb\",en_US:\"en\",fr_BE:\"fr\",fr_CA:\"fr-ca\",hy_AM:\"hy-am\",kmr_IQ:\"ku\",nl_BE:\"nl-be\",pt_BR:\"pt-br\",zh_CN:\"zh-cn\",zh_HK:\"zh-hk\",zh_TW:\"zh-tw\"},Ql=e=>q5[e]||e.split(\"_\")[0],Tb=()=>{SE(!1,\"Not match any format. Please help to fire a issue about this.\")},Z5=/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|k{1,2}|S/g;function Ob(e,t,n){const o=[...new Set(e.split(n))];let l=0;for(let r=0;r<o.length;r++){const a=o[r];if(l+=a.length,l>t)return a;l+=n.length}}const Eb=(e,t)=>{if(!e)return null;if(an.isDayjs(e))return e;const n=t.matchAll(Z5);let o=an(e,t);if(n===null)return o;for(const l of n){const r=l[0],a=l.index;if(r===\"Q\"){const i=e.slice(a-1,a),s=Ob(e,a,i).match(/\\d+/)[0];o=o.quarter(parseInt(s))}if(r.toLowerCase()===\"wo\"){const i=e.slice(a-1,a),s=Ob(e,a,i).match(/\\d+/)[0];o=o.week(parseInt(s))}r.toLowerCase()===\"ww\"&&(o=o.week(parseInt(e.slice(a,a+r.length)))),r.toLowerCase()===\"w\"&&(o=o.week(parseInt(e.slice(a,a+r.length+1))))}return o},Vv={getNow:()=>an(),getFixedDate:e=>an(e,[\"YYYY-M-DD\",\"YYYY-MM-DD\"]),getEndDate:e=>e.endOf(\"month\"),getWeekDay:e=>{const t=e.locale(\"en\");return t.weekday()+t.localeData().firstDayOfWeek()},getYear:e=>e.year(),getMonth:e=>e.month(),getDate:e=>e.date(),getHour:e=>e.hour(),getMinute:e=>e.minute(),getSecond:e=>e.second(),addYear:(e,t)=>e.add(t,\"year\"),addMonth:(e,t)=>e.add(t,\"month\"),addDate:(e,t)=>e.add(t,\"day\"),setYear:(e,t)=>e.year(t),setMonth:(e,t)=>e.month(t),setDate:(e,t)=>e.date(t),setHour:(e,t)=>e.hour(t),setMinute:(e,t)=>e.minute(t),setSecond:(e,t)=>e.second(t),isAfter:(e,t)=>e.isAfter(t),isValidate:e=>e.isValid(),locale:{getWeekFirstDay:e=>an().locale(Ql(e)).localeData().firstDayOfWeek(),getWeekFirstDate:(e,t)=>t.locale(Ql(e)).weekday(0),getWeek:(e,t)=>t.locale(Ql(e)).week(),getShortWeekDays:e=>an().locale(Ql(e)).localeData().weekdaysMin(),getShortMonths:e=>an().locale(Ql(e)).localeData().monthsShort(),format:(e,t,n)=>t.locale(Ql(e)).format(n),parse:(e,t,n)=>{const o=Ql(e);for(let l=0;l<n.length;l+=1){const r=n[l],a=t;if(r.includes(\"wo\")||r.includes(\"Wo\")){const s=a.split(\"-\")[0],c=a.split(\"-\")[1],u=an(s,\"YYYY\").startOf(\"year\").locale(o);for(let d=0;d<=52;d+=1){const p=u.add(d,\"week\");if(p.format(\"Wo\")===c)return p}return Tb(),null}const i=an(a,r,!0).locale(o);if(i.isValid())return i}return t||Tb(),null}},toDate:(e,t)=>Array.isArray(e)?e.map(n=>Eb(n,t)):Eb(e,t),toString:(e,t)=>Array.isArray(e)?e.map(n=>an.isDayjs(n)?n.format(t):n):an.isDayjs(e)?e.format(t):e};function Ut(e){const t=OI();return h(h({},e),t)}const Z1=Symbol(\"PanelContextProps\"),Kv=e=>{et(Z1,e)},Yo=()=>nt(Z1,{}),Ss={visibility:\"hidden\"};function Ul(e,t){let{slots:n}=t;var o;const l=Ut(e),{prefixCls:r,prevIcon:a=\"‹\",nextIcon:i=\"›\",superPrevIcon:s=\"«\",superNextIcon:c=\"»\",onSuperPrev:u,onSuperNext:d,onPrev:p,onNext:m}=l,{hideNextBtn:g,hidePrevBtn:v}=Yo();return f(\"div\",{class:r},[u&&f(\"button\",{type:\"button\",onClick:u,tabindex:-1,class:`${r}-super-prev-btn`,style:v.value?Ss:{}},[s]),p&&f(\"button\",{type:\"button\",onClick:p,tabindex:-1,class:`${r}-prev-btn`,style:v.value?Ss:{}},[a]),f(\"div\",{class:`${r}-view`},[(o=n.default)===null||o===void 0?void 0:o.call(n)]),m&&f(\"button\",{type:\"button\",onClick:m,tabindex:-1,class:`${r}-next-btn`,style:g.value?Ss:{}},[i]),d&&f(\"button\",{type:\"button\",onClick:d,tabindex:-1,class:`${r}-super-next-btn`,style:g.value?Ss:{}},[c])])}Ul.displayName=\"Header\";Ul.inheritAttrs=!1;function Gv(e){const t=Ut(e),{prefixCls:n,generateConfig:o,viewDate:l,onPrevDecades:r,onNextDecades:a}=t,{hideHeader:i}=Yo();if(i)return null;const s=`${n}-header`,c=o.getYear(l),u=Math.floor(c/sl)*sl,d=u+sl-1;return f(Ul,A(A({},t),{},{prefixCls:s,onSuperPrev:r,onSuperNext:a}),{default:()=>[u,bt(\"-\"),d]})}Gv.displayName=\"DecadeHeader\";Gv.inheritAttrs=!1;function Q1(e,t,n,o,l){let r=e.setHour(t,n);return r=e.setMinute(r,o),r=e.setSecond(r,l),r}function ec(e,t,n){if(!n)return t;let o=t;return o=e.setHour(o,e.getHour(n)),o=e.setMinute(o,e.getMinute(n)),o=e.setSecond(o,e.getSecond(n)),o}function Q5(e,t,n,o,l,r){const a=Math.floor(e/o)*o;if(a<e)return[a,60-l,60-r];const i=Math.floor(t/l)*l;if(i<t)return[a,i,60-r];const s=Math.floor(n/r)*r;return[a,i,s]}function J5(e,t){const n=e.getYear(t),o=e.getMonth(t)+1,l=e.getEndDate(e.getFixedDate(`${n}-${o}-01`)),r=e.getDate(l),a=o<10?`0${o}`:`${o}`;return`${n}-${a}-${r}`}function Ar(e){const{prefixCls:t,disabledDate:n,onSelect:o,picker:l,rowNum:r,colNum:a,prefixColumn:i,rowClassName:s,baseDate:c,getCellClassName:u,getCellText:d,getCellNode:p,getCellDate:m,generateConfig:g,titleCell:v,headerCells:y}=Ut(e),{onDateMouseenter:b,onDateMouseleave:S,mode:$}=Yo(),w=`${t}-cell`,C=[];for(let _=0;_<r;_+=1){const x=[];let P;for(let E=0;E<a;E+=1){const M=_*a+E,O=m(c,M),R=Dp({cellDate:O,mode:$.value,disabledDate:n,generateConfig:g});E===0&&(P=O,i&&x.push(i(P)));const D=v&&v(O);x.push(f(\"td\",{key:E,title:D,class:re(w,h({[`${w}-disabled`]:R,[`${w}-start`]:d(O)===1||l===\"year\"&&Number(D)%10===0,[`${w}-end`]:D===J5(g,O)||l===\"year\"&&Number(D)%10===9},u(O))),onClick:z=>{z.stopPropagation(),R||o(O)},onMouseenter:()=>{!R&&b&&b(O)},onMouseleave:()=>{!R&&S&&S(O)}},[p?p(O):f(\"div\",{class:`${w}-inner`},[d(O)])]))}C.push(f(\"tr\",{key:_,class:s&&s(P)},[x]))}return f(\"div\",{class:`${t}-body`},[f(\"table\",{class:`${t}-content`},[y&&f(\"thead\",null,[f(\"tr\",null,[y])]),f(\"tbody\",null,[C])])])}Ar.displayName=\"PanelBody\";Ar.inheritAttrs=!1;const Ep=3,Mb=4;function Xv(e){const t=Ut(e),n=Io-1,{prefixCls:o,viewDate:l,generateConfig:r}=t,a=`${o}-cell`,i=r.getYear(l),s=Math.floor(i/Io)*Io,c=Math.floor(i/sl)*sl,u=c+sl-1,d=r.setYear(l,c-Math.ceil((Ep*Mb*Io-sl)/2)),p=m=>{const g=r.getYear(m),v=g+n;return{[`${a}-in-view`]:c<=g&&v<=u,[`${a}-selected`]:g===s}};return f(Ar,A(A({},t),{},{rowNum:Mb,colNum:Ep,baseDate:d,getCellText:m=>{const g=r.getYear(m);return`${g}-${g+n}`},getCellClassName:p,getCellDate:(m,g)=>r.addYear(m,g*Io)}),null)}Xv.displayName=\"DecadeBody\";Xv.inheritAttrs=!1;const $s=new Map;function ek(e,t){let n;function o(){Ku(e)?t():n=Qe(()=>{o()})}return o(),()=>{Qe.cancel(n)}}function Mp(e,t,n){if($s.get(e)&&Qe.cancel($s.get(e)),n<=0){$s.set(e,Qe(()=>{e.scrollTop=t}));return}const l=(t-e.scrollTop)/n*10;$s.set(e,Qe(()=>{e.scrollTop+=l,e.scrollTop!==t&&Mp(e,t,n-10)}))}function Aa(e,t){let{onLeftRight:n,onCtrlLeftRight:o,onUpDown:l,onPageUpDown:r,onEnter:a}=t;const{which:i,ctrlKey:s,metaKey:c}=e;switch(i){case we.LEFT:if(s||c){if(o)return o(-1),!0}else if(n)return n(-1),!0;break;case we.RIGHT:if(s||c){if(o)return o(1),!0}else if(n)return n(1),!0;break;case we.UP:if(l)return l(-1),!0;break;case we.DOWN:if(l)return l(1),!0;break;case we.PAGE_UP:if(r)return r(-1),!0;break;case we.PAGE_DOWN:if(r)return r(1),!0;break;case we.ENTER:if(a)return a(),!0;break}return!1}function J1(e,t,n,o){let l=e;if(!l)switch(t){case\"time\":l=o?\"hh:mm:ss a\":\"HH:mm:ss\";break;case\"week\":l=\"gggg-wo\";break;case\"month\":l=\"YYYY-MM\";break;case\"quarter\":l=\"YYYY-[Q]Q\";break;case\"year\":l=\"YYYY\";break;default:l=n?\"YYYY-MM-DD HH:mm:ss\":\"YYYY-MM-DD\"}return l}function ex(e,t,n){const o=e===\"time\"?8:10,l=typeof t==\"function\"?t(n.getNow()).length:t.length;return Math.max(o,l)+2}let Va=null;const Cs=new Set;function tk(e){return!Va&&typeof window<\"u\"&&window.addEventListener&&(Va=t=>{[...Cs].forEach(n=>{n(t)})},window.addEventListener(\"mousedown\",Va)),Cs.add(e),()=>{Cs.delete(e),Cs.size===0&&(window.removeEventListener(\"mousedown\",Va),Va=null)}}function nk(e){var t;const n=e.target;return e.composed&&n.shadowRoot&&((t=e.composedPath)===null||t===void 0?void 0:t.call(e)[0])||n}const ok=e=>e===\"month\"||e===\"date\"?\"year\":e,lk=e=>e===\"date\"?\"month\":e,rk=e=>e===\"month\"||e===\"date\"?\"quarter\":e,ak=e=>e===\"date\"?\"week\":e,ik={year:ok,month:lk,quarter:rk,week:ak,time:null,date:null};function tx(e,t){return e.some(n=>n&&n.contains(t))}const Io=10,sl=Io*10;function Uv(e){const t=Ut(e),{prefixCls:n,onViewDateChange:o,generateConfig:l,viewDate:r,operationRef:a,onSelect:i,onPanelChange:s}=t,c=`${n}-decade-panel`;a.value={onKeydown:p=>Aa(p,{onLeftRight:m=>{i(l.addYear(r,m*Io),\"key\")},onCtrlLeftRight:m=>{i(l.addYear(r,m*sl),\"key\")},onUpDown:m=>{i(l.addYear(r,m*Io*Ep),\"key\")},onEnter:()=>{s(\"year\",r)}})};const u=p=>{const m=l.addYear(r,p*sl);o(m),s(null,m)},d=p=>{i(p,\"mouse\"),s(\"year\",p)};return f(\"div\",{class:c},[f(Gv,A(A({},t),{},{prefixCls:n,onPrevDecades:()=>{u(-1)},onNextDecades:()=>{u(1)}}),null),f(Xv,A(A({},t),{},{prefixCls:n,onSelect:d}),null)])}Uv.displayName=\"DecadePanel\";Uv.inheritAttrs=!1;const tc=7;function Dr(e,t){if(!e&&!t)return!0;if(!e||!t)return!1}function sk(e,t,n){const o=Dr(t,n);if(typeof o==\"boolean\")return o;const l=Math.floor(e.getYear(t)/10),r=Math.floor(e.getYear(n)/10);return l===r}function od(e,t,n){const o=Dr(t,n);return typeof o==\"boolean\"?o:e.getYear(t)===e.getYear(n)}function Ap(e,t){return Math.floor(e.getMonth(t)/3)+1}function nx(e,t,n){const o=Dr(t,n);return typeof o==\"boolean\"?o:od(e,t,n)&&Ap(e,t)===Ap(e,n)}function Yv(e,t,n){const o=Dr(t,n);return typeof o==\"boolean\"?o:od(e,t,n)&&e.getMonth(t)===e.getMonth(n)}function cl(e,t,n){const o=Dr(t,n);return typeof o==\"boolean\"?o:e.getYear(t)===e.getYear(n)&&e.getMonth(t)===e.getMonth(n)&&e.getDate(t)===e.getDate(n)}function ck(e,t,n){const o=Dr(t,n);return typeof o==\"boolean\"?o:e.getHour(t)===e.getHour(n)&&e.getMinute(t)===e.getMinute(n)&&e.getSecond(t)===e.getSecond(n)}function ox(e,t,n,o){const l=Dr(n,o);return typeof l==\"boolean\"?l:e.locale.getWeek(t,n)===e.locale.getWeek(t,o)}function la(e,t,n){return cl(e,t,n)&&ck(e,t,n)}function xs(e,t,n,o){return!t||!n||!o?!1:!cl(e,t,o)&&!cl(e,n,o)&&e.isAfter(o,t)&&e.isAfter(n,o)}function uk(e,t,n){const o=t.locale.getWeekFirstDay(e),l=t.setDate(n,1),r=t.getWeekDay(l);let a=t.addDate(l,o-r);return t.getMonth(a)===t.getMonth(n)&&t.getDate(a)>1&&(a=t.addDate(a,-7)),a}function ti(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(t){case\"year\":return n.addYear(e,o*10);case\"quarter\":case\"month\":return n.addYear(e,o);default:return n.addMonth(e,o)}}function vn(e,t){let{generateConfig:n,locale:o,format:l}=t;return typeof l==\"function\"?l(e):n.locale.format(o.locale,e,l)}function lx(e,t){let{generateConfig:n,locale:o,formatList:l}=t;return!e||typeof l[0]==\"function\"?null:n.locale.parse(o.locale,e,l)}function Dp(e){let{cellDate:t,mode:n,disabledDate:o,generateConfig:l}=e;if(!o)return!1;const r=(a,i,s)=>{let c=i;for(;c<=s;){let u;switch(a){case\"date\":{if(u=l.setDate(t,c),!o(u))return!1;break}case\"month\":{if(u=l.setMonth(t,c),!Dp({cellDate:u,mode:\"month\",generateConfig:l,disabledDate:o}))return!1;break}case\"year\":{if(u=l.setYear(t,c),!Dp({cellDate:u,mode:\"year\",generateConfig:l,disabledDate:o}))return!1;break}}c+=1}return!0};switch(n){case\"date\":case\"week\":return o(t);case\"month\":{const i=l.getDate(l.getEndDate(t));return r(\"date\",1,i)}case\"quarter\":{const a=Math.floor(l.getMonth(t)/3)*3,i=a+2;return r(\"month\",a,i)}case\"year\":return r(\"month\",0,11);case\"decade\":{const a=l.getYear(t),i=Math.floor(a/Io)*Io,s=i+Io-1;return r(\"year\",i,s)}}}function qv(e){const t=Ut(e),{hideHeader:n}=Yo();if(n.value)return null;const{prefixCls:o,generateConfig:l,locale:r,value:a,format:i}=t,s=`${o}-header`;return f(Ul,{prefixCls:s},{default:()=>[a?vn(a,{locale:r,format:i,generateConfig:l}):\" \"]})}qv.displayName=\"TimeHeader\";qv.inheritAttrs=!1;const ws=ne({name:\"TimeUnitColumn\",props:[\"prefixCls\",\"units\",\"onSelect\",\"value\",\"active\",\"hideDisabledOptions\"],setup(e){const{open:t}=Yo(),n=ee(null),o=Z(new Map),l=Z();return pe(()=>e.value,()=>{const r=o.value.get(e.value);r&&t.value!==!1&&Mp(n.value,r.offsetTop,120)}),ot(()=>{var r;(r=l.value)===null||r===void 0||r.call(l)}),pe(t,()=>{var r;(r=l.value)===null||r===void 0||r.call(l),it(()=>{if(t.value){const a=o.value.get(e.value);a&&(l.value=ek(a,()=>{Mp(n.value,a.offsetTop,0)}))}})},{immediate:!0,flush:\"post\"}),()=>{const{prefixCls:r,units:a,onSelect:i,value:s,active:c,hideDisabledOptions:u}=e,d=`${r}-cell`;return f(\"ul\",{class:re(`${r}-column`,{[`${r}-column-active`]:c}),ref:n,style:{position:\"relative\"}},[a.map(p=>u&&p.disabled?null:f(\"li\",{key:p.value,ref:m=>{o.value.set(p.value,m)},class:re(d,{[`${d}-disabled`]:p.disabled,[`${d}-selected`]:s===p.value}),onClick:()=>{p.disabled||i(p.value)}},[f(\"div\",{class:`${d}-inner`},[p.label])]))])}}});function rx(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"0\",o=String(e);for(;o.length<t;)o=`${n}${e}`;return o}const dk=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t};function ax(e){return e==null?[]:Array.isArray(e)?e:[e]}function ix(e){const t={};return Object.keys(e).forEach(n=>{(n.startsWith(\"data-\")||n.startsWith(\"aria-\")||n===\"role\"||n===\"name\")&&!n.startsWith(\"data-__\")&&(t[n]=e[n])}),t}function $t(e,t){return e?e[t]:null}function fo(e,t,n){const o=[$t(e,0),$t(e,1)];return o[n]=typeof t==\"function\"?t(o[n]):t,!o[0]&&!o[1]?null:o}function af(e,t,n,o){const l=[];for(let r=e;r<=t;r+=n)l.push({label:rx(r,2),value:r,disabled:(o||[]).includes(r)});return l}const fk=ne({compatConfig:{MODE:3},name:\"TimeBody\",inheritAttrs:!1,props:[\"generateConfig\",\"prefixCls\",\"operationRef\",\"activeColumnIndex\",\"value\",\"showHour\",\"showMinute\",\"showSecond\",\"use12Hours\",\"hourStep\",\"minuteStep\",\"secondStep\",\"disabledHours\",\"disabledMinutes\",\"disabledSeconds\",\"disabledTime\",\"hideDisabledOptions\",\"onSelect\"],setup(e){const t=I(()=>e.value?e.generateConfig.getHour(e.value):-1),n=I(()=>e.use12Hours?t.value>=12:!1),o=I(()=>e.use12Hours?t.value%12:t.value),l=I(()=>e.value?e.generateConfig.getMinute(e.value):-1),r=I(()=>e.value?e.generateConfig.getSecond(e.value):-1),a=Z(e.generateConfig.getNow()),i=Z(),s=Z(),c=Z();Tm(()=>{a.value=e.generateConfig.getNow()}),ze(()=>{if(e.disabledTime){const y=e.disabledTime(a);[i.value,s.value,c.value]=[y.disabledHours,y.disabledMinutes,y.disabledSeconds]}else[i.value,s.value,c.value]=[e.disabledHours,e.disabledMinutes,e.disabledSeconds]});const u=(y,b,S,$)=>{let w=e.value||e.generateConfig.getNow();const C=Math.max(0,b),_=Math.max(0,S),x=Math.max(0,$);return w=Q1(e.generateConfig,w,!e.use12Hours||!y?C:C+12,_,x),w},d=I(()=>{var y;return af(0,23,(y=e.hourStep)!==null&&y!==void 0?y:1,i.value&&i.value())}),p=I(()=>{if(!e.use12Hours)return[!1,!1];const y=[!0,!0];return d.value.forEach(b=>{let{disabled:S,value:$}=b;S||($>=12?y[1]=!1:y[0]=!1)}),y}),m=I(()=>e.use12Hours?d.value.filter(n.value?y=>y.value>=12:y=>y.value<12).map(y=>{const b=y.value%12,S=b===0?\"12\":rx(b,2);return h(h({},y),{label:S,value:b})}):d.value),g=I(()=>{var y;return af(0,59,(y=e.minuteStep)!==null&&y!==void 0?y:1,s.value&&s.value(t.value))}),v=I(()=>{var y;return af(0,59,(y=e.secondStep)!==null&&y!==void 0?y:1,c.value&&c.value(t.value,l.value))});return()=>{const{prefixCls:y,operationRef:b,activeColumnIndex:S,showHour:$,showMinute:w,showSecond:C,use12Hours:_,hideDisabledOptions:x,onSelect:P}=e,E=[],M=`${y}-content`,O=`${y}-time-panel`;b.value={onUpDown:z=>{const T=E[S];if(T){const k=T.units.findIndex(L=>L.value===T.value),B=T.units.length;for(let L=1;L<B;L+=1){const N=T.units[(k+z*L+B)%B];if(N.disabled!==!0){T.onSelect(N.value);break}}}}};function R(z,T,k,B,L){z!==!1&&E.push({node:ft(T,{prefixCls:O,value:k,active:S===E.length,onSelect:L,units:B,hideDisabledOptions:x}),onSelect:L,value:k,units:B})}R($,f(ws,{key:\"hour\"},null),o.value,m.value,z=>{P(u(n.value,z,l.value,r.value),\"mouse\")}),R(w,f(ws,{key:\"minute\"},null),l.value,g.value,z=>{P(u(n.value,o.value,z,r.value),\"mouse\")}),R(C,f(ws,{key:\"second\"},null),r.value,v.value,z=>{P(u(n.value,o.value,l.value,z),\"mouse\")});let D=-1;return typeof n.value==\"boolean\"&&(D=n.value?1:0),R(_===!0,f(ws,{key:\"12hours\"},null),D,[{label:\"AM\",value:0,disabled:p.value[0]},{label:\"PM\",value:1,disabled:p.value[1]}],z=>{P(u(!!z,o.value,l.value,r.value),\"mouse\")}),f(\"div\",{class:M},[E.map(z=>{let{node:T}=z;return T})])}}}),pk=e=>e.filter(t=>t!==!1).length;function ld(e){const t=Ut(e),{generateConfig:n,format:o=\"HH:mm:ss\",prefixCls:l,active:r,operationRef:a,showHour:i,showMinute:s,showSecond:c,use12Hours:u=!1,onSelect:d,value:p}=t,m=`${l}-time-panel`,g=Z(),v=Z(-1),y=pk([i,s,c,u]);return a.value={onKeydown:b=>Aa(b,{onLeftRight:S=>{v.value=(v.value+S+y)%y},onUpDown:S=>{v.value===-1?v.value=0:g.value&&g.value.onUpDown(S)},onEnter:()=>{d(p||n.getNow(),\"key\"),v.value=-1}}),onBlur:()=>{v.value=-1}},f(\"div\",{class:re(m,{[`${m}-active`]:r})},[f(qv,A(A({},t),{},{format:o,prefixCls:l}),null),f(fk,A(A({},t),{},{prefixCls:l,activeColumnIndex:v.value,operationRef:g}),null)])}ld.displayName=\"TimePanel\";ld.inheritAttrs=!1;function rd(e){let{cellPrefixCls:t,generateConfig:n,rangedValue:o,hoverRangedValue:l,isInView:r,isSameCell:a,offsetCell:i,today:s,value:c}=e;function u(d){const p=i(d,-1),m=i(d,1),g=$t(o,0),v=$t(o,1),y=$t(l,0),b=$t(l,1),S=xs(n,y,b,d);function $(E){return a(g,E)}function w(E){return a(v,E)}const C=a(y,d),_=a(b,d),x=(S||_)&&(!r(p)||w(p)),P=(S||C)&&(!r(m)||$(m));return{[`${t}-in-view`]:r(d),[`${t}-in-range`]:xs(n,g,v,d),[`${t}-range-start`]:$(d),[`${t}-range-end`]:w(d),[`${t}-range-start-single`]:$(d)&&!v,[`${t}-range-end-single`]:w(d)&&!g,[`${t}-range-start-near-hover`]:$(d)&&(a(p,y)||xs(n,y,b,p)),[`${t}-range-end-near-hover`]:w(d)&&(a(m,b)||xs(n,y,b,m)),[`${t}-range-hover`]:S,[`${t}-range-hover-start`]:C,[`${t}-range-hover-end`]:_,[`${t}-range-hover-edge-start`]:x,[`${t}-range-hover-edge-end`]:P,[`${t}-range-hover-edge-start-near-range`]:x&&a(p,v),[`${t}-range-hover-edge-end-near-range`]:P&&a(m,g),[`${t}-today`]:a(s,d),[`${t}-selected`]:a(c,d)}}return u}const sx=Symbol(\"RangeContextProps\"),mk=e=>{et(sx,e)},Hi=()=>nt(sx,{rangedValue:Z(),hoverRangedValue:Z(),inRange:Z(),panelPosition:Z()}),vk=ne({compatConfig:{MODE:3},name:\"PanelContextProvider\",inheritAttrs:!1,props:{value:{type:Object,default:()=>({})}},setup(e,t){let{slots:n}=t;const o={rangedValue:Z(e.value.rangedValue),hoverRangedValue:Z(e.value.hoverRangedValue),inRange:Z(e.value.inRange),panelPosition:Z(e.value.panelPosition)};return mk(o),pe(()=>e.value,()=>{Object.keys(e.value).forEach(l=>{o[l]&&(o[l].value=e.value[l])})}),()=>{var l;return(l=n.default)===null||l===void 0?void 0:l.call(n)}}});function ad(e){const t=Ut(e),{prefixCls:n,generateConfig:o,prefixColumn:l,locale:r,rowCount:a,viewDate:i,value:s,dateRender:c}=t,{rangedValue:u,hoverRangedValue:d}=Hi(),p=uk(r.locale,o,i),m=`${n}-cell`,g=o.locale.getWeekFirstDay(r.locale),v=o.getNow(),y=[],b=r.shortWeekDays||(o.locale.getShortWeekDays?o.locale.getShortWeekDays(r.locale):[]);l&&y.push(f(\"th\",{key:\"empty\",\"aria-label\":\"empty cell\"},null));for(let w=0;w<tc;w+=1)y.push(f(\"th\",{key:w},[b[(w+g)%tc]]));const S=rd({cellPrefixCls:m,today:v,value:s,generateConfig:o,rangedValue:l?null:u.value,hoverRangedValue:l?null:d.value,isSameCell:(w,C)=>cl(o,w,C),isInView:w=>Yv(o,w,i),offsetCell:(w,C)=>o.addDate(w,C)}),$=c?w=>c({current:w,today:v}):void 0;return f(Ar,A(A({},t),{},{rowNum:a,colNum:tc,baseDate:p,getCellNode:$,getCellText:o.getDate,getCellClassName:S,getCellDate:o.addDate,titleCell:w=>vn(w,{locale:r,format:\"YYYY-MM-DD\",generateConfig:o}),headerCells:y}),null)}ad.displayName=\"DateBody\";ad.inheritAttrs=!1;ad.props=[\"prefixCls\",\"generateConfig\",\"value?\",\"viewDate\",\"locale\",\"rowCount\",\"onSelect\",\"dateRender?\",\"disabledDate?\",\"prefixColumn?\",\"rowClassName?\"];function Zv(e){const t=Ut(e),{prefixCls:n,generateConfig:o,locale:l,viewDate:r,onNextMonth:a,onPrevMonth:i,onNextYear:s,onPrevYear:c,onYearClick:u,onMonthClick:d}=t,{hideHeader:p}=Yo();if(p.value)return null;const m=`${n}-header`,g=l.shortMonths||(o.locale.getShortMonths?o.locale.getShortMonths(l.locale):[]),v=o.getMonth(r),y=f(\"button\",{type:\"button\",key:\"year\",onClick:u,tabindex:-1,class:`${n}-year-btn`},[vn(r,{locale:l,format:l.yearFormat,generateConfig:o})]),b=f(\"button\",{type:\"button\",key:\"month\",onClick:d,tabindex:-1,class:`${n}-month-btn`},[l.monthFormat?vn(r,{locale:l,format:l.monthFormat,generateConfig:o}):g[v]]),S=l.monthBeforeYear?[b,y]:[y,b];return f(Ul,A(A({},t),{},{prefixCls:m,onSuperPrev:c,onPrev:i,onNext:a,onSuperNext:s}),{default:()=>[S]})}Zv.displayName=\"DateHeader\";Zv.inheritAttrs=!1;const gk=6;function ji(e){const t=Ut(e),{prefixCls:n,panelName:o=\"date\",keyboardConfig:l,active:r,operationRef:a,generateConfig:i,value:s,viewDate:c,onViewDateChange:u,onPanelChange:d,onSelect:p}=t,m=`${n}-${o}-panel`;a.value={onKeydown:y=>Aa(y,h({onLeftRight:b=>{p(i.addDate(s||c,b),\"key\")},onCtrlLeftRight:b=>{p(i.addYear(s||c,b),\"key\")},onUpDown:b=>{p(i.addDate(s||c,b*tc),\"key\")},onPageUpDown:b=>{p(i.addMonth(s||c,b),\"key\")}},l))};const g=y=>{const b=i.addYear(c,y);u(b),d(null,b)},v=y=>{const b=i.addMonth(c,y);u(b),d(null,b)};return f(\"div\",{class:re(m,{[`${m}-active`]:r})},[f(Zv,A(A({},t),{},{prefixCls:n,value:s,viewDate:c,onPrevYear:()=>{g(-1)},onNextYear:()=>{g(1)},onPrevMonth:()=>{v(-1)},onNextMonth:()=>{v(1)},onMonthClick:()=>{d(\"month\",c)},onYearClick:()=>{d(\"year\",c)}}),null),f(ad,A(A({},t),{},{onSelect:y=>p(y,\"mouse\"),prefixCls:n,value:s,viewDate:c,rowCount:gk}),null)])}ji.displayName=\"DatePanel\";ji.inheritAttrs=!1;const Ab=dk(\"date\",\"time\");function Qv(e){const t=Ut(e),{prefixCls:n,operationRef:o,generateConfig:l,value:r,defaultValue:a,disabledTime:i,showTime:s,onSelect:c}=t,u=`${n}-datetime-panel`,d=Z(null),p=Z({}),m=Z({}),g=typeof s==\"object\"?h({},s):{};function v($){const w=Ab.indexOf(d.value)+$;return Ab[w]||null}const y=$=>{m.value.onBlur&&m.value.onBlur($),d.value=null};o.value={onKeydown:$=>{if($.which===we.TAB){const w=v($.shiftKey?-1:1);return d.value=w,w&&$.preventDefault(),!0}if(d.value){const w=d.value===\"date\"?p:m;return w.value&&w.value.onKeydown&&w.value.onKeydown($),!0}return[we.LEFT,we.RIGHT,we.UP,we.DOWN].includes($.which)?(d.value=\"date\",!0):!1},onBlur:y,onClose:y};const b=($,w)=>{let C=$;w===\"date\"&&!r&&g.defaultValue?(C=l.setHour(C,l.getHour(g.defaultValue)),C=l.setMinute(C,l.getMinute(g.defaultValue)),C=l.setSecond(C,l.getSecond(g.defaultValue))):w===\"time\"&&!r&&a&&(C=l.setYear(C,l.getYear(a)),C=l.setMonth(C,l.getMonth(a)),C=l.setDate(C,l.getDate(a))),c&&c(C,\"mouse\")},S=i?i(r||null):{};return f(\"div\",{class:re(u,{[`${u}-active`]:d.value})},[f(ji,A(A({},t),{},{operationRef:p,active:d.value===\"date\",onSelect:$=>{b(ec(l,$,!r&&typeof s==\"object\"?s.defaultValue:null),\"date\")}}),null),f(ld,A(A(A(A({},t),{},{format:void 0},g),S),{},{disabledTime:null,defaultValue:void 0,operationRef:m,active:d.value===\"time\",onSelect:$=>{b($,\"time\")}}),null)])}Qv.displayName=\"DatetimePanel\";Qv.inheritAttrs=!1;function Jv(e){const t=Ut(e),{prefixCls:n,generateConfig:o,locale:l,value:r}=t,a=`${n}-cell`,i=u=>f(\"td\",{key:\"week\",class:re(a,`${a}-week`)},[o.locale.getWeek(l.locale,u)]),s=`${n}-week-panel-row`,c=u=>re(s,{[`${s}-selected`]:ox(o,l.locale,r,u)});return f(ji,A(A({},t),{},{panelName:\"week\",prefixColumn:i,rowClassName:c,keyboardConfig:{onLeftRight:null}}),null)}Jv.displayName=\"WeekPanel\";Jv.inheritAttrs=!1;function eg(e){const t=Ut(e),{prefixCls:n,generateConfig:o,locale:l,viewDate:r,onNextYear:a,onPrevYear:i,onYearClick:s}=t,{hideHeader:c}=Yo();if(c.value)return null;const u=`${n}-header`;return f(Ul,A(A({},t),{},{prefixCls:u,onSuperPrev:i,onSuperNext:a}),{default:()=>[f(\"button\",{type:\"button\",onClick:s,class:`${n}-year-btn`},[vn(r,{locale:l,format:l.yearFormat,generateConfig:o})])]})}eg.displayName=\"MonthHeader\";eg.inheritAttrs=!1;const cx=3,hk=4;function tg(e){const t=Ut(e),{prefixCls:n,locale:o,value:l,viewDate:r,generateConfig:a,monthCellRender:i}=t,{rangedValue:s,hoverRangedValue:c}=Hi(),u=`${n}-cell`,d=rd({cellPrefixCls:u,value:l,generateConfig:a,rangedValue:s.value,hoverRangedValue:c.value,isSameCell:(v,y)=>Yv(a,v,y),isInView:()=>!0,offsetCell:(v,y)=>a.addMonth(v,y)}),p=o.shortMonths||(a.locale.getShortMonths?a.locale.getShortMonths(o.locale):[]),m=a.setMonth(r,0),g=i?v=>i({current:v,locale:o}):void 0;return f(Ar,A(A({},t),{},{rowNum:hk,colNum:cx,baseDate:m,getCellNode:g,getCellText:v=>o.monthFormat?vn(v,{locale:o,format:o.monthFormat,generateConfig:a}):p[a.getMonth(v)],getCellClassName:d,getCellDate:a.addMonth,titleCell:v=>vn(v,{locale:o,format:\"YYYY-MM\",generateConfig:a})}),null)}tg.displayName=\"MonthBody\";tg.inheritAttrs=!1;function ng(e){const t=Ut(e),{prefixCls:n,operationRef:o,onViewDateChange:l,generateConfig:r,value:a,viewDate:i,onPanelChange:s,onSelect:c}=t,u=`${n}-month-panel`;o.value={onKeydown:p=>Aa(p,{onLeftRight:m=>{c(r.addMonth(a||i,m),\"key\")},onCtrlLeftRight:m=>{c(r.addYear(a||i,m),\"key\")},onUpDown:m=>{c(r.addMonth(a||i,m*cx),\"key\")},onEnter:()=>{s(\"date\",a||i)}})};const d=p=>{const m=r.addYear(i,p);l(m),s(null,m)};return f(\"div\",{class:u},[f(eg,A(A({},t),{},{prefixCls:n,onPrevYear:()=>{d(-1)},onNextYear:()=>{d(1)},onYearClick:()=>{s(\"year\",i)}}),null),f(tg,A(A({},t),{},{prefixCls:n,onSelect:p=>{c(p,\"mouse\"),s(\"date\",p)}}),null)])}ng.displayName=\"MonthPanel\";ng.inheritAttrs=!1;function og(e){const t=Ut(e),{prefixCls:n,generateConfig:o,locale:l,viewDate:r,onNextYear:a,onPrevYear:i,onYearClick:s}=t,{hideHeader:c}=Yo();if(c.value)return null;const u=`${n}-header`;return f(Ul,A(A({},t),{},{prefixCls:u,onSuperPrev:i,onSuperNext:a}),{default:()=>[f(\"button\",{type:\"button\",onClick:s,class:`${n}-year-btn`},[vn(r,{locale:l,format:l.yearFormat,generateConfig:o})])]})}og.displayName=\"QuarterHeader\";og.inheritAttrs=!1;const bk=4,yk=1;function lg(e){const t=Ut(e),{prefixCls:n,locale:o,value:l,viewDate:r,generateConfig:a}=t,{rangedValue:i,hoverRangedValue:s}=Hi(),c=`${n}-cell`,u=rd({cellPrefixCls:c,value:l,generateConfig:a,rangedValue:i.value,hoverRangedValue:s.value,isSameCell:(p,m)=>nx(a,p,m),isInView:()=>!0,offsetCell:(p,m)=>a.addMonth(p,m*3)}),d=a.setDate(a.setMonth(r,0),1);return f(Ar,A(A({},t),{},{rowNum:yk,colNum:bk,baseDate:d,getCellText:p=>vn(p,{locale:o,format:o.quarterFormat||\"[Q]Q\",generateConfig:a}),getCellClassName:u,getCellDate:(p,m)=>a.addMonth(p,m*3),titleCell:p=>vn(p,{locale:o,format:\"YYYY-[Q]Q\",generateConfig:a})}),null)}lg.displayName=\"QuarterBody\";lg.inheritAttrs=!1;function rg(e){const t=Ut(e),{prefixCls:n,operationRef:o,onViewDateChange:l,generateConfig:r,value:a,viewDate:i,onPanelChange:s,onSelect:c}=t,u=`${n}-quarter-panel`;o.value={onKeydown:p=>Aa(p,{onLeftRight:m=>{c(r.addMonth(a||i,m*3),\"key\")},onCtrlLeftRight:m=>{c(r.addYear(a||i,m),\"key\")},onUpDown:m=>{c(r.addYear(a||i,m),\"key\")}})};const d=p=>{const m=r.addYear(i,p);l(m),s(null,m)};return f(\"div\",{class:u},[f(og,A(A({},t),{},{prefixCls:n,onPrevYear:()=>{d(-1)},onNextYear:()=>{d(1)},onYearClick:()=>{s(\"year\",i)}}),null),f(lg,A(A({},t),{},{prefixCls:n,onSelect:p=>{c(p,\"mouse\")}}),null)])}rg.displayName=\"QuarterPanel\";rg.inheritAttrs=!1;function ag(e){const t=Ut(e),{prefixCls:n,generateConfig:o,viewDate:l,onPrevDecade:r,onNextDecade:a,onDecadeClick:i}=t,{hideHeader:s}=Yo();if(s.value)return null;const c=`${n}-header`,u=o.getYear(l),d=Math.floor(u/Al)*Al,p=d+Al-1;return f(Ul,A(A({},t),{},{prefixCls:c,onSuperPrev:r,onSuperNext:a}),{default:()=>[f(\"button\",{type:\"button\",onClick:i,class:`${n}-decade-btn`},[d,bt(\"-\"),p])]})}ag.displayName=\"YearHeader\";ag.inheritAttrs=!1;const Rp=3,Db=4;function ig(e){const t=Ut(e),{prefixCls:n,value:o,viewDate:l,locale:r,generateConfig:a}=t,{rangedValue:i,hoverRangedValue:s}=Hi(),c=`${n}-cell`,u=a.getYear(l),d=Math.floor(u/Al)*Al,p=d+Al-1,m=a.setYear(l,d-Math.ceil((Rp*Db-Al)/2)),g=y=>{const b=a.getYear(y);return d<=b&&b<=p},v=rd({cellPrefixCls:c,value:o,generateConfig:a,rangedValue:i.value,hoverRangedValue:s.value,isSameCell:(y,b)=>od(a,y,b),isInView:g,offsetCell:(y,b)=>a.addYear(y,b)});return f(Ar,A(A({},t),{},{rowNum:Db,colNum:Rp,baseDate:m,getCellText:a.getYear,getCellClassName:v,getCellDate:a.addYear,titleCell:y=>vn(y,{locale:r,format:\"YYYY\",generateConfig:a})}),null)}ig.displayName=\"YearBody\";ig.inheritAttrs=!1;const Al=10;function sg(e){const t=Ut(e),{prefixCls:n,operationRef:o,onViewDateChange:l,generateConfig:r,value:a,viewDate:i,sourceMode:s,onSelect:c,onPanelChange:u}=t,d=`${n}-year-panel`;o.value={onKeydown:m=>Aa(m,{onLeftRight:g=>{c(r.addYear(a||i,g),\"key\")},onCtrlLeftRight:g=>{c(r.addYear(a||i,g*Al),\"key\")},onUpDown:g=>{c(r.addYear(a||i,g*Rp),\"key\")},onEnter:()=>{u(s===\"date\"?\"date\":\"month\",a||i)}})};const p=m=>{const g=r.addYear(i,m*10);l(g),u(null,g)};return f(\"div\",{class:d},[f(ag,A(A({},t),{},{prefixCls:n,onPrevDecade:()=>{p(-1)},onNextDecade:()=>{p(1)},onDecadeClick:()=>{u(\"decade\",i)}}),null),f(ig,A(A({},t),{},{prefixCls:n,onSelect:m=>{u(s===\"date\"?\"date\":\"month\",m),c(m,\"mouse\")}}),null)])}sg.displayName=\"YearPanel\";sg.inheritAttrs=!1;function ux(e,t,n){return n?f(\"div\",{class:`${e}-footer-extra`},[n(t)]):null}function dx(e){let{prefixCls:t,components:n={},needConfirmButton:o,onNow:l,onOk:r,okDisabled:a,showNow:i,locale:s}=e,c,u;if(o){const d=n.button||\"button\";l&&i!==!1&&(c=f(\"li\",{class:`${t}-now`},[f(\"a\",{class:`${t}-now-btn`,onClick:l},[s.now])])),u=o&&f(\"li\",{class:`${t}-ok`},[f(d,{disabled:a,onClick:p=>{p.stopPropagation(),r&&r()}},{default:()=>[s.ok]})])}return!c&&!u?null:f(\"ul\",{class:`${t}-ranges`},[c,u])}function Sk(){return ne({name:\"PickerPanel\",inheritAttrs:!1,props:{prefixCls:String,locale:Object,generateConfig:Object,value:Object,defaultValue:Object,pickerValue:Object,defaultPickerValue:Object,disabledDate:Function,mode:String,picker:{type:String,default:\"date\"},tabindex:{type:[Number,String],default:0},showNow:{type:Boolean,default:void 0},showTime:[Boolean,Object],showToday:Boolean,renderExtraFooter:Function,dateRender:Function,hideHeader:{type:Boolean,default:void 0},onSelect:Function,onChange:Function,onPanelChange:Function,onMousedown:Function,onPickerValueChange:Function,onOk:Function,components:Object,direction:String,hourStep:{type:Number,default:1},minuteStep:{type:Number,default:1},secondStep:{type:Number,default:1}},setup(e,t){let{attrs:n}=t;const o=I(()=>e.picker===\"date\"&&!!e.showTime||e.picker===\"time\"),l=I(()=>24%e.hourStep===0),r=I(()=>60%e.minuteStep===0),a=I(()=>60%e.secondStep===0),i=Yo(),{operationRef:s,onSelect:c,hideRanges:u,defaultOpenValue:d}=i,{inRange:p,panelPosition:m,rangedValue:g,hoverRangedValue:v}=Hi(),y=Z({}),[b,S]=Mt(null,{value:Ve(e,\"value\"),defaultValue:e.defaultValue,postState:B=>!B&&d?.value&&e.picker===\"time\"?d.value:B}),[$,w]=Mt(null,{value:Ve(e,\"pickerValue\"),defaultValue:e.defaultPickerValue||b.value,postState:B=>{const{generateConfig:L,showTime:N,defaultValue:F}=e,j=L.getNow();return B?!b.value&&e.showTime?typeof N==\"object\"?ec(L,Array.isArray(B)?B[0]:B,N.defaultValue||j):F?ec(L,Array.isArray(B)?B[0]:B,F):ec(L,Array.isArray(B)?B[0]:B,j):B:j}}),C=B=>{w(B),e.onPickerValueChange&&e.onPickerValueChange(B)},_=B=>{const L=ik[e.picker];return L?L(B):B},[x,P]=Mt(()=>e.picker===\"time\"?\"time\":_(\"date\"),{value:Ve(e,\"mode\")});pe(()=>e.picker,()=>{P(e.picker)});const E=Z(x.value),M=B=>{E.value=B},O=(B,L)=>{const{onPanelChange:N,generateConfig:F}=e,j=_(B||x.value);M(x.value),P(j),N&&(x.value!==j||la(F,$.value,$.value))&&N(L,j)},R=function(B,L){let N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{picker:F,generateConfig:j,onSelect:H,onChange:K,disabledDate:G}=e;(x.value===F||N)&&(S(B),H&&H(B),c&&c(B,L),K&&!la(j,B,b.value)&&!G?.(B)&&K(B))},D=B=>y.value&&y.value.onKeydown?([we.LEFT,we.RIGHT,we.UP,we.DOWN,we.PAGE_UP,we.PAGE_DOWN,we.ENTER].includes(B.which)&&B.preventDefault(),y.value.onKeydown(B)):!1,z=B=>{y.value&&y.value.onBlur&&y.value.onBlur(B)},T=()=>{const{generateConfig:B,hourStep:L,minuteStep:N,secondStep:F}=e,j=B.getNow(),H=Q5(B.getHour(j),B.getMinute(j),B.getSecond(j),l.value?L:1,r.value?N:1,a.value?F:1),K=Q1(B,j,H[0],H[1],H[2]);R(K,\"submit\")},k=I(()=>{const{prefixCls:B,direction:L}=e;return re(`${B}-panel`,{[`${B}-panel-has-range`]:g&&g.value&&g.value[0]&&g.value[1],[`${B}-panel-has-range-hover`]:v&&v.value&&v.value[0]&&v.value[1],[`${B}-panel-rtl`]:L===\"rtl\"})});return Kv(h(h({},i),{mode:x,hideHeader:I(()=>{var B;return e.hideHeader!==void 0?e.hideHeader:(B=i.hideHeader)===null||B===void 0?void 0:B.value}),hidePrevBtn:I(()=>p.value&&m.value===\"right\"),hideNextBtn:I(()=>p.value&&m.value===\"left\")})),pe(()=>e.value,()=>{e.value&&w(e.value)}),()=>{const{prefixCls:B=\"ant-picker\",locale:L,generateConfig:N,disabledDate:F,picker:j=\"date\",tabindex:H=0,showNow:K,showTime:G,showToday:V,renderExtraFooter:q,onMousedown:Q,onOk:oe,components:le}=e;s&&m.value!==\"right\"&&(s.value={onKeydown:D,onClose:()=>{y.value&&y.value.onClose&&y.value.onClose()}});let Y;const J=h(h(h({},n),e),{operationRef:y,prefixCls:B,viewDate:$.value,value:b.value,onViewDateChange:C,sourceMode:E.value,onPanelChange:O,disabledDate:F});switch(delete J.onChange,delete J.onSelect,x.value){case\"decade\":Y=f(Uv,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"year\":Y=f(sg,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"month\":Y=f(ng,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"quarter\":Y=f(rg,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"week\":Y=f(Jv,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"time\":delete J.showTime,Y=f(ld,A(A(A({},J),typeof G==\"object\"?G:null),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;default:G?Y=f(Qv,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null):Y=f(ji,A(A({},J),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null)}let ce,ue;u?.value||(ce=ux(B,x.value,q),ue=dx({prefixCls:B,components:le,needConfirmButton:o.value,okDisabled:!b.value||F&&F(b.value),locale:L,showNow:K,onNow:o.value&&T,onOk:()=>{b.value&&(R(b.value,\"submit\",!0),oe&&oe(b.value))}}));let be;if(V&&x.value===\"date\"&&j===\"date\"&&!G){const Ce=N.getNow(),ge=`${B}-today-btn`,Se=F&&F(Ce);be=f(\"a\",{class:re(ge,Se&&`${ge}-disabled`),\"aria-disabled\":Se,onClick:()=>{Se||R(Ce,\"mouse\",!0)}},[L.today])}return f(\"div\",{tabindex:H,class:re(k.value,n.class),style:n.style,onKeydown:D,onBlur:z,onMousedown:Q},[Y,ce||ue||be?f(\"div\",{class:`${B}-footer`},[ce,ue,be]):null])}}})}const $k=Sk(),cg=e=>f($k,e),Ck={bottomLeft:{points:[\"tl\",\"bl\"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:[\"tr\",\"br\"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:[\"bl\",\"tl\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:[\"br\",\"tr\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function fx(e,t){let{slots:n}=t;const{prefixCls:o,popupStyle:l,visible:r,dropdownClassName:a,dropdownAlign:i,transitionName:s,getPopupContainer:c,range:u,popupPlacement:d,direction:p}=Ut(e),m=`${o}-dropdown`;return f(Mr,{showAction:[],hideAction:[],popupPlacement:d!==void 0?d:p===\"rtl\"?\"bottomRight\":\"bottomLeft\",builtinPlacements:Ck,prefixCls:m,popupTransitionName:s,popupAlign:i,popupVisible:r,popupClassName:re(a,{[`${m}-range`]:u,[`${m}-rtl`]:p===\"rtl\"}),popupStyle:l,getPopupContainer:c},{default:n.default,popup:n.popupElement})}const px=ne({name:\"PresetPanel\",props:{prefixCls:String,presets:{type:Array,default:()=>[]},onClick:Function,onHover:Function},setup(e){return()=>e.presets.length?f(\"div\",{class:`${e.prefixCls}-presets`},[f(\"ul\",null,[e.presets.map((t,n)=>{let{label:o,value:l}=t;return f(\"li\",{key:n,onClick:r=>{r.stopPropagation(),e.onClick(l)},onMouseenter:()=>{var r;(r=e.onHover)===null||r===void 0||r.call(e,l)},onMouseleave:()=>{var r;(r=e.onHover)===null||r===void 0||r.call(e,null)}},[o])})])]):null}});function kp(e){let{open:t,value:n,isClickOutside:o,triggerOpen:l,forwardKeydown:r,onKeydown:a,blurToCancel:i,onSubmit:s,onCancel:c,onFocus:u,onBlur:d}=e;const p=ee(!1),m=ee(!1),g=ee(!1),v=ee(!1),y=ee(!1),b=I(()=>({onMousedown:()=>{p.value=!0,l(!0)},onKeydown:$=>{if(a($,()=>{y.value=!0}),!y.value){switch($.which){case we.ENTER:{t.value?s()!==!1&&(p.value=!0):l(!0),$.preventDefault();return}case we.TAB:{p.value&&t.value&&!$.shiftKey?(p.value=!1,$.preventDefault()):!p.value&&t.value&&!r($)&&$.shiftKey&&(p.value=!0,$.preventDefault());return}case we.ESC:{p.value=!0,c();return}}!t.value&&![we.SHIFT].includes($.which)?l(!0):p.value||r($)}},onFocus:$=>{p.value=!0,m.value=!0,u&&u($)},onBlur:$=>{if(g.value||!o(document.activeElement)){g.value=!1;return}i.value?setTimeout(()=>{let{activeElement:w}=document;for(;w&&w.shadowRoot;)w=w.shadowRoot.activeElement;o(w)&&c()},0):t.value&&(l(!1),v.value&&s()),m.value=!1,d&&d($)}}));pe(t,()=>{v.value=!1}),pe(n,()=>{v.value=!0});const S=ee();return Be(()=>{S.value=tk($=>{const w=nk($);if(t.value){const C=o(w);C?(!m.value||C)&&l(!1):(g.value=!0,Qe(()=>{g.value=!1}))}})}),ot(()=>{S.value&&S.value()}),[b,{focused:m,typing:p}]}function Np(e){let{valueTexts:t,onTextChange:n}=e;const o=Z(\"\");function l(a){o.value=a,n(a)}function r(){o.value=t.value[0]}return pe(()=>[...t.value],function(a){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];a.join(\"||\")!==i.join(\"||\")&&t.value.every(s=>s!==o.value)&&r()},{immediate:!0}),[o,l,r]}function iu(e,t){let{formatList:n,generateConfig:o,locale:l}=t;const r=$v(()=>{if(!e.value)return[[\"\"],\"\"];let s=\"\";const c=[];for(let u=0;u<n.value.length;u+=1){const d=n.value[u],p=vn(e.value,{generateConfig:o.value,locale:l.value,format:d});c.push(p),u===0&&(s=p)}return[c,s]},[e,n],(s,c)=>c[0]!==s[0]||!Gr(c[1],s[1])),a=I(()=>r.value[0]),i=I(()=>r.value[1]);return[a,i]}function Bp(e,t){let{formatList:n,generateConfig:o,locale:l}=t;const r=Z(null);let a;function i(d){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(Qe.cancel(a),p){r.value=d;return}a=Qe(()=>{r.value=d})}const[,s]=iu(r,{formatList:n,generateConfig:o,locale:l});function c(d){i(d)}function u(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;i(null,d)}return pe(e,()=>{u(!0)}),ot(()=>{Qe.cancel(a)}),[s,c,u]}function mx(e,t){return I(()=>e?.value?e.value:t?.value?(Qm(!1,\"`ranges` is deprecated. Please use `presets` instead.\"),Object.keys(t.value).map(o=>{const l=t.value[o],r=typeof l==\"function\"?l():l;return{label:o,value:r}})):[])}function xk(){return ne({name:\"Picker\",inheritAttrs:!1,props:[\"prefixCls\",\"id\",\"tabindex\",\"dropdownClassName\",\"dropdownAlign\",\"popupStyle\",\"transitionName\",\"generateConfig\",\"locale\",\"inputReadOnly\",\"allowClear\",\"autofocus\",\"showTime\",\"showNow\",\"showHour\",\"showMinute\",\"showSecond\",\"picker\",\"format\",\"use12Hours\",\"value\",\"defaultValue\",\"open\",\"defaultOpen\",\"defaultOpenValue\",\"suffixIcon\",\"presets\",\"clearIcon\",\"disabled\",\"disabledDate\",\"placeholder\",\"getPopupContainer\",\"panelRender\",\"inputRender\",\"onChange\",\"onOpenChange\",\"onPanelChange\",\"onFocus\",\"onBlur\",\"onMousedown\",\"onMouseup\",\"onMouseenter\",\"onMouseleave\",\"onContextmenu\",\"onClick\",\"onKeydown\",\"onSelect\",\"direction\",\"autocomplete\",\"showToday\",\"renderExtraFooter\",\"dateRender\",\"minuteStep\",\"hourStep\",\"secondStep\",\"hideDisabledOptions\"],setup(e,t){let{attrs:n,expose:o}=t;const l=Z(null),r=I(()=>e.presets),a=mx(r),i=I(()=>{var F;return(F=e.picker)!==null&&F!==void 0?F:\"date\"}),s=I(()=>i.value===\"date\"&&!!e.showTime||i.value===\"time\"),c=I(()=>ax(J1(e.format,i.value,e.showTime,e.use12Hours))),u=Z(null),d=Z(null),p=Z(null),[m,g]=Mt(null,{value:Ve(e,\"value\"),defaultValue:e.defaultValue}),v=Z(m.value),y=F=>{v.value=F},b=Z(null),[S,$]=Mt(!1,{value:Ve(e,\"open\"),defaultValue:e.defaultOpen,postState:F=>e.disabled?!1:F,onChange:F=>{e.onOpenChange&&e.onOpenChange(F),!F&&b.value&&b.value.onClose&&b.value.onClose()}}),[w,C]=iu(v,{formatList:c,generateConfig:Ve(e,\"generateConfig\"),locale:Ve(e,\"locale\")}),[_,x,P]=Np({valueTexts:w,onTextChange:F=>{const j=lx(F,{locale:e.locale,formatList:c.value,generateConfig:e.generateConfig});j&&(!e.disabledDate||!e.disabledDate(j))&&y(j)}}),E=F=>{const{onChange:j,generateConfig:H,locale:K}=e;y(F),g(F),j&&!la(H,m.value,F)&&j(F,F?vn(F,{generateConfig:H,locale:K,format:c.value[0]}):\"\")},M=F=>{e.disabled&&F||$(F)},O=F=>S.value&&b.value&&b.value.onKeydown?b.value.onKeydown(F):!1,R=function(){e.onMouseup&&e.onMouseup(...arguments),l.value&&(l.value.focus(),M(!0))},[D,{focused:z,typing:T}]=kp({blurToCancel:s,open:S,value:_,triggerOpen:M,forwardKeydown:O,isClickOutside:F=>!tx([u.value,d.value,p.value],F),onSubmit:()=>!v.value||e.disabledDate&&e.disabledDate(v.value)?!1:(E(v.value),M(!1),P(),!0),onCancel:()=>{M(!1),y(m.value),P()},onKeydown:(F,j)=>{var H;(H=e.onKeydown)===null||H===void 0||H.call(e,F,j)},onFocus:F=>{var j;(j=e.onFocus)===null||j===void 0||j.call(e,F)},onBlur:F=>{var j;(j=e.onBlur)===null||j===void 0||j.call(e,F)}});pe([S,w],()=>{S.value||(y(m.value),!w.value.length||w.value[0]===\"\"?x(\"\"):C.value!==_.value&&P())}),pe(i,()=>{S.value||P()}),pe(m,()=>{y(m.value)});const[k,B,L]=Bp(_,{formatList:c,generateConfig:Ve(e,\"generateConfig\"),locale:Ve(e,\"locale\")}),N=(F,j)=>{(j===\"submit\"||j!==\"key\"&&!s.value)&&(E(F),M(!1))};return Kv({operationRef:b,hideHeader:I(()=>i.value===\"time\"),onSelect:N,open:S,defaultOpenValue:Ve(e,\"defaultOpenValue\"),onDateMouseenter:B,onDateMouseleave:L}),o({focus:()=>{l.value&&l.value.focus()},blur:()=>{l.value&&l.value.blur()}}),()=>{const{prefixCls:F=\"rc-picker\",id:j,tabindex:H,dropdownClassName:K,dropdownAlign:G,popupStyle:V,transitionName:q,generateConfig:Q,locale:oe,inputReadOnly:le,allowClear:Y,autofocus:J,picker:ce=\"date\",defaultOpenValue:ue,suffixIcon:be,clearIcon:Ce,disabled:ge,placeholder:Se,getPopupContainer:X,panelRender:U,onMousedown:ie,onMouseenter:ve,onMouseleave:me,onContextmenu:he,onClick:se,onSelect:te,direction:ae,autocomplete:fe=\"off\"}=e,Pe=h(h(h({},e),n),{class:re({[`${F}-panel-focused`]:!T.value}),style:void 0,pickerValue:void 0,onPickerValueChange:void 0,onChange:null});let Oe=f(\"div\",{class:`${F}-panel-layout`},[f(px,{prefixCls:F,presets:a.value,onClick:Ae=>{E(Ae),M(!1)}},null),f(cg,A(A({},Pe),{},{generateConfig:Q,value:v.value,locale:oe,tabindex:-1,onSelect:Ae=>{te?.(Ae),y(Ae)},direction:ae,onPanelChange:(Ae,We)=>{const{onPanelChange:at}=e;L(!0),at?.(Ae,We)}}),null)]);U&&(Oe=U(Oe));const Re=f(\"div\",{class:`${F}-panel-container`,ref:u,onMousedown:Ae=>{Ae.preventDefault()}},[Oe]);let $e;be&&($e=f(\"span\",{class:`${F}-suffix`},[be]));let xe;Y&&m.value&&!ge&&(xe=f(\"span\",{onMousedown:Ae=>{Ae.preventDefault(),Ae.stopPropagation()},onMouseup:Ae=>{Ae.preventDefault(),Ae.stopPropagation(),E(null),M(!1)},class:`${F}-clear`,role:\"button\"},[Ce||f(\"span\",{class:`${F}-clear-btn`},null)]));const _e=h(h(h(h({id:j,tabindex:H,disabled:ge,readonly:le||typeof c.value[0]==\"function\"||!T.value,value:k.value||_.value,onInput:Ae=>{x(Ae.target.value)},autofocus:J,placeholder:Se,ref:l,title:_.value},D.value),{size:ex(ce,c.value[0],Q)}),ix(e)),{autocomplete:fe}),Me=e.inputRender?e.inputRender(_e):f(\"input\",_e,null),je=ae===\"rtl\"?\"bottomRight\":\"bottomLeft\";return f(\"div\",{ref:p,class:re(F,n.class,{[`${F}-disabled`]:ge,[`${F}-focused`]:z.value,[`${F}-rtl`]:ae===\"rtl\"}),style:n.style,onMousedown:ie,onMouseup:R,onMouseenter:ve,onMouseleave:me,onContextmenu:he,onClick:se},[f(\"div\",{class:re(`${F}-input`,{[`${F}-input-placeholder`]:!!k.value}),ref:d},[Me,$e,xe]),f(fx,{visible:S.value,popupStyle:V,prefixCls:F,dropdownClassName:K,dropdownAlign:G,getPopupContainer:X,transitionName:q,popupPlacement:je,direction:ae},{default:()=>[f(\"div\",{style:{pointerEvents:\"none\",position:\"absolute\",top:0,bottom:0,left:0,right:0}},null)],popupElement:()=>Re})])}}})}const wk=xk();function _k(e,t){let{picker:n,locale:o,selectedValue:l,disabledDate:r,disabled:a,generateConfig:i}=e;const s=I(()=>$t(l.value,0)),c=I(()=>$t(l.value,1));function u(v){return i.value.locale.getWeekFirstDate(o.value.locale,v)}function d(v){const y=i.value.getYear(v),b=i.value.getMonth(v);return y*100+b}function p(v){const y=i.value.getYear(v),b=Ap(i.value,v);return y*10+b}return[v=>{var y;if(r&&(!((y=r?.value)===null||y===void 0)&&y.call(r,v)))return!0;if(a[1]&&c)return!cl(i.value,v,c.value)&&i.value.isAfter(v,c.value);if(t.value[1]&&c.value)switch(n.value){case\"quarter\":return p(v)>p(c.value);case\"month\":return d(v)>d(c.value);case\"week\":return u(v)>u(c.value);default:return!cl(i.value,v,c.value)&&i.value.isAfter(v,c.value)}return!1},v=>{var y;if(!((y=r.value)===null||y===void 0)&&y.call(r,v))return!0;if(a[0]&&s)return!cl(i.value,v,c.value)&&i.value.isAfter(s.value,v);if(t.value[0]&&s.value)switch(n.value){case\"quarter\":return p(v)<p(s.value);case\"month\":return d(v)<d(s.value);case\"week\":return u(v)<u(s.value);default:return!cl(i.value,v,s.value)&&i.value.isAfter(s.value,v)}return!1}]}function Ik(e,t,n,o){const l=ti(e,n,o,1);function r(a){return a(e,t)?\"same\":a(l,t)?\"closing\":\"far\"}switch(n){case\"year\":return r((a,i)=>sk(o,a,i));case\"quarter\":case\"month\":return r((a,i)=>od(o,a,i));default:return r((a,i)=>Yv(o,a,i))}}function Pk(e,t,n,o){const l=$t(e,0),r=$t(e,1);if(t===0)return l;if(l&&r)switch(Ik(l,r,n,o)){case\"same\":return l;case\"closing\":return l;default:return ti(r,n,o,-1)}return l}function Tk(e){let{values:t,picker:n,defaultDates:o,generateConfig:l}=e;const r=Z([$t(o,0),$t(o,1)]),a=Z(null),i=I(()=>$t(t.value,0)),s=I(()=>$t(t.value,1)),c=m=>r.value[m]?r.value[m]:$t(a.value,m)||Pk(t.value,m,n.value,l.value)||i.value||s.value||l.value.getNow(),u=Z(null),d=Z(null);ze(()=>{u.value=c(0),d.value=c(1)});function p(m,g){if(m){let v=fo(a.value,m,g);r.value=fo(r.value,null,g)||[null,null];const y=(g+1)%2;$t(t.value,y)||(v=fo(v,m,y)),a.value=v}else(i.value||s.value)&&(a.value=null)}return[u,d,p]}function vx(e){return EI()?(MI(e),!0):!1}function Ok(e){return typeof e==\"function\"?e():Ne(e)}function ug(e){var t;const n=Ok(e);return(t=n?.$el)!==null&&t!==void 0?t:n}function Ek(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;fn()?Be(e):t?e():it(e)}function gx(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=ee(),o=()=>n.value=!!e();return o(),Ek(o,t),n}var sf;const hx=typeof window<\"u\";hx&&(!((sf=window?.navigator)===null||sf===void 0)&&sf.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);const bx=hx?window:void 0;var Mk=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function Ak(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{window:o=bx}=n,l=Mk(n,[\"window\"]);let r;const a=gx(()=>o&&\"ResizeObserver\"in o),i=()=>{r&&(r.disconnect(),r=void 0)},s=pe(()=>ug(e),u=>{i(),a.value&&o&&u&&(r=new ResizeObserver(t),r.observe(u,l))},{immediate:!0,flush:\"post\"}),c=()=>{i(),s()};return vx(c),{isSupported:a,stop:c}}function Ka(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{width:0,height:0},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{box:o=\"content-box\"}=n,l=ee(t.width),r=ee(t.height);return Ak(e,a=>{let[i]=a;const s=o===\"border-box\"?i.borderBoxSize:o===\"content-box\"?i.contentBoxSize:i.devicePixelContentBoxSize;s?(l.value=s.reduce((c,u)=>{let{inlineSize:d}=u;return c+d},0),r.value=s.reduce((c,u)=>{let{blockSize:d}=u;return c+d},0)):(l.value=i.contentRect.width,r.value=i.contentRect.height)},n),pe(()=>ug(e),a=>{l.value=a?t.width:0,r.value=a?t.height:0}),{width:l,height:r}}function Rb(e,t){return e&&e[0]&&e[1]&&t.isAfter(e[0],e[1])?[e[1],e[0]]:e}function kb(e,t,n,o){return!!(e||o&&o[t]||n[(t+1)%2])}function Dk(){return ne({name:\"RangerPicker\",inheritAttrs:!1,props:[\"prefixCls\",\"id\",\"popupStyle\",\"dropdownClassName\",\"transitionName\",\"dropdownAlign\",\"getPopupContainer\",\"generateConfig\",\"locale\",\"placeholder\",\"autofocus\",\"disabled\",\"format\",\"picker\",\"showTime\",\"showNow\",\"showHour\",\"showMinute\",\"showSecond\",\"use12Hours\",\"separator\",\"value\",\"defaultValue\",\"defaultPickerValue\",\"open\",\"defaultOpen\",\"disabledDate\",\"disabledTime\",\"dateRender\",\"panelRender\",\"ranges\",\"allowEmpty\",\"allowClear\",\"suffixIcon\",\"clearIcon\",\"pickerRef\",\"inputReadOnly\",\"mode\",\"renderExtraFooter\",\"onChange\",\"onOpenChange\",\"onPanelChange\",\"onCalendarChange\",\"onFocus\",\"onBlur\",\"onMousedown\",\"onMouseup\",\"onMouseenter\",\"onMouseleave\",\"onClick\",\"onOk\",\"onKeydown\",\"components\",\"order\",\"direction\",\"activePickerIndex\",\"autocomplete\",\"minuteStep\",\"hourStep\",\"secondStep\",\"hideDisabledOptions\",\"disabledMinutes\",\"presets\",\"prevIcon\",\"nextIcon\",\"superPrevIcon\",\"superNextIcon\"],setup(e,t){let{attrs:n,expose:o}=t;const l=I(()=>e.picker===\"date\"&&!!e.showTime||e.picker===\"time\"),r=I(()=>e.presets),a=I(()=>e.ranges),i=mx(r,a),s=Z({}),c=Z(null),u=Z(null),d=Z(null),p=Z(null),m=Z(null),g=Z(null),v=Z(null),y=Z(null),b=I(()=>ax(J1(e.format,e.picker,e.showTime,e.use12Hours))),[S,$]=Mt(0,{value:Ve(e,\"activePickerIndex\")}),w=Z(null),C=I(()=>{const{disabled:Ee}=e;return Array.isArray(Ee)?Ee:[Ee||!1,Ee||!1]}),[_,x]=Mt(null,{value:Ve(e,\"value\"),defaultValue:e.defaultValue,postState:Ee=>e.picker===\"time\"&&!e.order?Ee:Rb(Ee,e.generateConfig)}),[P,E,M]=Tk({values:_,picker:Ve(e,\"picker\"),defaultDates:e.defaultPickerValue,generateConfig:Ve(e,\"generateConfig\")}),[O,R]=Mt(_.value,{postState:Ee=>{let Ze=Ee;if(C.value[0]&&C.value[1])return Ze;for(let Ue=0;Ue<2;Ue+=1)C.value[Ue]&&!$t(Ze,Ue)&&!$t(e.allowEmpty,Ue)&&(Ze=fo(Ze,e.generateConfig.getNow(),Ue));return Ze}}),[D,z]=Mt([e.picker,e.picker],{value:Ve(e,\"mode\")});pe(()=>e.picker,()=>{z([e.picker,e.picker])});const T=(Ee,Ze)=>{var Ue;z(Ee),(Ue=e.onPanelChange)===null||Ue===void 0||Ue.call(e,Ze,Ee)},[k,B]=_k({picker:Ve(e,\"picker\"),selectedValue:O,locale:Ve(e,\"locale\"),disabled:C,disabledDate:Ve(e,\"disabledDate\"),generateConfig:Ve(e,\"generateConfig\")},s),[L,N]=Mt(!1,{value:Ve(e,\"open\"),defaultValue:e.defaultOpen,postState:Ee=>C.value[S.value]?!1:Ee,onChange:Ee=>{var Ze;(Ze=e.onOpenChange)===null||Ze===void 0||Ze.call(e,Ee),!Ee&&w.value&&w.value.onClose&&w.value.onClose()}}),F=I(()=>L.value&&S.value===0),j=I(()=>L.value&&S.value===1),H=Z(0),K=Z(0),G=Z(0),{width:V}=Ka(c);pe([L,V],()=>{!L.value&&c.value&&(G.value=V.value)});const{width:q}=Ka(u),{width:Q}=Ka(y),{width:oe}=Ka(d),{width:le}=Ka(m);pe([S,L,q,Q,oe,le,()=>e.direction],()=>{K.value=0,S.value?d.value&&m.value&&(K.value=oe.value+le.value,q.value&&Q.value&&K.value>q.value-Q.value-(e.direction===\"rtl\"||y.value.offsetLeft>K.value?0:y.value.offsetLeft)&&(H.value=K.value)):S.value===0&&(H.value=0)},{immediate:!0});const Y=Z();function J(Ee,Ze){if(Ee)clearTimeout(Y.value),s.value[Ze]=!0,$(Ze),N(Ee),L.value||M(null,Ze);else if(S.value===Ze){N(Ee);const Ue=s.value;Y.value=setTimeout(()=>{Ue===s.value&&(s.value={})})}}function ce(Ee){J(!0,Ee),setTimeout(()=>{const Ze=[g,v][Ee];Ze.value&&Ze.value.focus()},0)}function ue(Ee,Ze){let Ue=Ee,It=$t(Ue,0),tn=$t(Ue,1);const{generateConfig:Vt,locale:Rn,picker:pn,order:ko,onCalendarChange:Gn,allowEmpty:ao,onChange:Nt,showTime:xo}=e;It&&tn&&Vt.isAfter(It,tn)&&(pn===\"week\"&&!ox(Vt,Rn.locale,It,tn)||pn===\"quarter\"&&!nx(Vt,It,tn)||pn!==\"week\"&&pn!==\"quarter\"&&pn!==\"time\"&&!(xo?la(Vt,It,tn):cl(Vt,It,tn))?(Ze===0?(Ue=[It,null],tn=null):(It=null,Ue=[null,tn]),s.value={[Ze]:!0}):(pn!==\"time\"||ko!==!1)&&(Ue=Rb(Ue,Vt))),R(Ue);const io=Ue&&Ue[0]?vn(Ue[0],{generateConfig:Vt,locale:Rn,format:b.value[0]}):\"\",Cl=Ue&&Ue[1]?vn(Ue[1],{generateConfig:Vt,locale:Rn,format:b.value[0]}):\"\";Gn&&Gn(Ue,[io,Cl],{range:Ze===0?\"start\":\"end\"});const xl=kb(It,0,C.value,ao),wo=kb(tn,1,C.value,ao);(Ue===null||xl&&wo)&&(x(Ue),Nt&&(!la(Vt,$t(_.value,0),It)||!la(Vt,$t(_.value,1),tn))&&Nt(Ue,[io,Cl]));let _o=null;Ze===0&&!C.value[1]?_o=1:Ze===1&&!C.value[0]&&(_o=0),_o!==null&&_o!==S.value&&(!s.value[_o]||!$t(Ue,_o))&&$t(Ue,Ze)?ce(_o):J(!1,Ze)}const be=Ee=>L&&w.value&&w.value.onKeydown?w.value.onKeydown(Ee):!1,Ce={formatList:b,generateConfig:Ve(e,\"generateConfig\"),locale:Ve(e,\"locale\")},[ge,Se]=iu(I(()=>$t(O.value,0)),Ce),[X,U]=iu(I(()=>$t(O.value,1)),Ce),ie=(Ee,Ze)=>{const Ue=lx(Ee,{locale:e.locale,formatList:b.value,generateConfig:e.generateConfig});Ue&&!(Ze===0?k:B)(Ue)&&(R(fo(O.value,Ue,Ze)),M(Ue,Ze))},[ve,me,he]=Np({valueTexts:ge,onTextChange:Ee=>ie(Ee,0)}),[se,te,ae]=Np({valueTexts:X,onTextChange:Ee=>ie(Ee,1)}),[fe,Pe]=yt(null),[Oe,Re]=yt(null),[$e,xe,_e]=Bp(ve,Ce),[Me,je,Ae]=Bp(se,Ce),We=Ee=>{Re(fo(O.value,Ee,S.value)),S.value===0?xe(Ee):je(Ee)},at=()=>{Re(fo(O.value,null,S.value)),S.value===0?_e():Ae()},pt=(Ee,Ze)=>({forwardKeydown:be,onBlur:Ue=>{var It;(It=e.onBlur)===null||It===void 0||It.call(e,Ue)},isClickOutside:Ue=>!tx([u.value,d.value,p.value,c.value],Ue),onFocus:Ue=>{var It;$(Ee),(It=e.onFocus)===null||It===void 0||It.call(e,Ue)},triggerOpen:Ue=>{J(Ue,Ee)},onSubmit:()=>{if(!O.value||e.disabledDate&&e.disabledDate(O.value[Ee]))return!1;ue(O.value,Ee),Ze()},onCancel:()=>{J(!1,Ee),R(_.value),Ze()}}),[st,{focused:mt,typing:ht}]=kp(h(h({},pt(0,he)),{blurToCancel:l,open:F,value:ve,onKeydown:(Ee,Ze)=>{var Ue;(Ue=e.onKeydown)===null||Ue===void 0||Ue.call(e,Ee,Ze)}})),[Yt,{focused:en,typing:rn}]=kp(h(h({},pt(1,ae)),{blurToCancel:l,open:j,value:se,onKeydown:(Ee,Ze)=>{var Ue;(Ue=e.onKeydown)===null||Ue===void 0||Ue.call(e,Ee,Ze)}})),Wt=Ee=>{var Ze;(Ze=e.onClick)===null||Ze===void 0||Ze.call(e,Ee),!L.value&&!g.value.contains(Ee.target)&&!v.value.contains(Ee.target)&&(C.value[0]?C.value[1]||ce(1):ce(0))},bn=Ee=>{var Ze;(Ze=e.onMousedown)===null||Ze===void 0||Ze.call(e,Ee),L.value&&(mt.value||en.value)&&!g.value.contains(Ee.target)&&!v.value.contains(Ee.target)&&Ee.preventDefault()},An=I(()=>{var Ee;return!((Ee=_.value)===null||Ee===void 0)&&Ee[0]?vn(_.value[0],{locale:e.locale,format:\"YYYYMMDDHHmmss\",generateConfig:e.generateConfig}):\"\"}),ro=I(()=>{var Ee;return!((Ee=_.value)===null||Ee===void 0)&&Ee[1]?vn(_.value[1],{locale:e.locale,format:\"YYYYMMDDHHmmss\",generateConfig:e.generateConfig}):\"\"});pe([L,ge,X],()=>{L.value||(R(_.value),!ge.value.length||ge.value[0]===\"\"?me(\"\"):Se.value!==ve.value&&he(),!X.value.length||X.value[0]===\"\"?te(\"\"):U.value!==se.value&&ae())}),pe([An,ro],()=>{R(_.value)}),o({focus:()=>{g.value&&g.value.focus()},blur:()=>{g.value&&g.value.blur(),v.value&&v.value.blur()}});const Co=I(()=>L.value&&Oe.value&&Oe.value[0]&&Oe.value[1]&&e.generateConfig.isAfter(Oe.value[1],Oe.value[0])?Oe.value:null);function Dn(){let Ee=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Ze=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{generateConfig:Ue,showTime:It,dateRender:tn,direction:Vt,disabledTime:Rn,prefixCls:pn,locale:ko}=e;let Gn=It;if(It&&typeof It==\"object\"&&It.defaultValue){const Nt=It.defaultValue;Gn=h(h({},It),{defaultValue:$t(Nt,S.value)||void 0})}let ao=null;return tn&&(ao=Nt=>{let{current:xo,today:io}=Nt;return tn({current:xo,today:io,info:{range:S.value?\"end\":\"start\"}})}),f(vk,{value:{inRange:!0,panelPosition:Ee,rangedValue:fe.value||O.value,hoverRangedValue:Co.value}},{default:()=>[f(cg,A(A(A({},e),Ze),{},{dateRender:ao,showTime:Gn,mode:D.value[S.value],generateConfig:Ue,style:void 0,direction:Vt,disabledDate:S.value===0?k:B,disabledTime:Nt=>Rn?Rn(Nt,S.value===0?\"start\":\"end\"):!1,class:re({[`${pn}-panel-focused`]:S.value===0?!ht.value:!rn.value}),value:$t(O.value,S.value),locale:ko,tabIndex:-1,onPanelChange:(Nt,xo)=>{S.value===0&&_e(!0),S.value===1&&Ae(!0),T(fo(D.value,xo,S.value),fo(O.value,Nt,S.value));let io=Nt;Ee===\"right\"&&D.value[S.value]===xo&&(io=ti(io,xo,Ue,-1)),M(io,S.value)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:S.value===0?$t(O.value,1):$t(O.value,0)}),null)]})}const Yl=(Ee,Ze)=>{const Ue=fo(O.value,Ee,S.value);Ze===\"submit\"||Ze!==\"key\"&&!l.value?(ue(Ue,S.value),S.value===0?_e():Ae()):R(Ue)};return Kv({operationRef:w,hideHeader:I(()=>e.picker===\"time\"),onDateMouseenter:We,onDateMouseleave:at,hideRanges:I(()=>!0),onSelect:Yl,open:L}),()=>{const{prefixCls:Ee=\"rc-picker\",id:Ze,popupStyle:Ue,dropdownClassName:It,transitionName:tn,dropdownAlign:Vt,getPopupContainer:Rn,generateConfig:pn,locale:ko,placeholder:Gn,autofocus:ao,picker:Nt=\"date\",showTime:xo,separator:io=\"~\",disabledDate:Cl,panelRender:xl,allowClear:wo,suffixIcon:Nr,clearIcon:_o,inputReadOnly:Ed,renderExtraFooter:hI,onMouseenter:bI,onMouseleave:yI,onMouseup:SI,onOk:nh,components:$I,direction:Fa,autocomplete:oh=\"off\"}=e,CI=Fa===\"rtl\"?{right:`${K.value}px`}:{left:`${K.value}px`};function xI(){let kn;const wl=ux(Ee,D.value[S.value],hI),ih=dx({prefixCls:Ee,components:$I,needConfirmButton:l.value,okDisabled:!$t(O.value,S.value)||Cl&&Cl(O.value[S.value]),locale:ko,onOk:()=>{$t(O.value,S.value)&&(ue(O.value,S.value),nh&&nh(O.value))}});if(Nt!==\"time\"&&!xo){const _l=S.value===0?P.value:E.value,II=ti(_l,Nt,pn),Rd=D.value[S.value]===Nt,sh=Dn(Rd?\"left\":!1,{pickerValue:_l,onPickerValueChange:kd=>{M(kd,S.value)}}),ch=Dn(\"right\",{pickerValue:II,onPickerValueChange:kd=>{M(ti(kd,Nt,pn,-1),S.value)}});Fa===\"rtl\"?kn=f(He,null,[ch,Rd&&sh]):kn=f(He,null,[sh,Rd&&ch])}else kn=Dn();let Dd=f(\"div\",{class:`${Ee}-panel-layout`},[f(px,{prefixCls:Ee,presets:i.value,onClick:_l=>{ue(_l,null),J(!1,S.value)},onHover:_l=>{Pe(_l)}},null),f(\"div\",null,[f(\"div\",{class:`${Ee}-panels`},[kn]),(wl||ih)&&f(\"div\",{class:`${Ee}-footer`},[wl,ih])])]);return xl&&(Dd=xl(Dd)),f(\"div\",{class:`${Ee}-panel-container`,style:{marginLeft:`${H.value}px`},ref:u,onMousedown:_l=>{_l.preventDefault()}},[Dd])}const wI=f(\"div\",{class:re(`${Ee}-range-wrapper`,`${Ee}-${Nt}-range-wrapper`),style:{minWidth:`${G.value}px`}},[f(\"div\",{ref:y,class:`${Ee}-range-arrow`,style:CI},null),xI()]);let lh;Nr&&(lh=f(\"span\",{class:`${Ee}-suffix`},[Nr]));let rh;wo&&($t(_.value,0)&&!C.value[0]||$t(_.value,1)&&!C.value[1])&&(rh=f(\"span\",{onMousedown:kn=>{kn.preventDefault(),kn.stopPropagation()},onMouseup:kn=>{kn.preventDefault(),kn.stopPropagation();let wl=_.value;C.value[0]||(wl=fo(wl,null,0)),C.value[1]||(wl=fo(wl,null,1)),ue(wl,null),J(!1,S.value)},class:`${Ee}-clear`},[_o||f(\"span\",{class:`${Ee}-clear-btn`},null)]));const ah={size:ex(Nt,b.value[0],pn)};let Md=0,Ad=0;d.value&&p.value&&m.value&&(S.value===0?Ad=d.value.offsetWidth:(Md=K.value,Ad=p.value.offsetWidth));const _I=Fa===\"rtl\"?{right:`${Md}px`}:{left:`${Md}px`};return f(\"div\",A({ref:c,class:re(Ee,`${Ee}-range`,n.class,{[`${Ee}-disabled`]:C.value[0]&&C.value[1],[`${Ee}-focused`]:S.value===0?mt.value:en.value,[`${Ee}-rtl`]:Fa===\"rtl\"}),style:n.style,onClick:Wt,onMouseenter:bI,onMouseleave:yI,onMousedown:bn,onMouseup:SI},ix(e)),[f(\"div\",{class:re(`${Ee}-input`,{[`${Ee}-input-active`]:S.value===0,[`${Ee}-input-placeholder`]:!!$e.value}),ref:d},[f(\"input\",A(A(A({id:Ze,disabled:C.value[0],readonly:Ed||typeof b.value[0]==\"function\"||!ht.value,value:$e.value||ve.value,onInput:kn=>{me(kn.target.value)},autofocus:ao,placeholder:$t(Gn,0)||\"\",ref:g},st.value),ah),{},{autocomplete:oh}),null)]),f(\"div\",{class:`${Ee}-range-separator`,ref:m},[io]),f(\"div\",{class:re(`${Ee}-input`,{[`${Ee}-input-active`]:S.value===1,[`${Ee}-input-placeholder`]:!!Me.value}),ref:p},[f(\"input\",A(A(A({disabled:C.value[1],readonly:Ed||typeof b.value[0]==\"function\"||!rn.value,value:Me.value||se.value,onInput:kn=>{te(kn.target.value)},placeholder:$t(Gn,1)||\"\",ref:v},Yt.value),ah),{},{autocomplete:oh}),null)]),f(\"div\",{class:`${Ee}-active-bar`,style:h(h({},_I),{width:`${Ad}px`,position:\"absolute\"})},null),lh,rh,f(fx,{visible:L.value,popupStyle:Ue,prefixCls:Ee,dropdownClassName:It,dropdownAlign:Vt,getPopupContainer:Rn,transitionName:tn,range:!0,direction:Fa},{default:()=>[f(\"div\",{style:{pointerEvents:\"none\",position:\"absolute\",top:0,bottom:0,left:0,right:0}},null)],popupElement:()=>wI})])}}})}const Rk=Dk();var kk=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Nk={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:W.any,required:Boolean},yx=ne({compatConfig:{MODE:3},name:\"Checkbox\",inheritAttrs:!1,props:Je(Nk,{prefixCls:\"rc-checkbox\",type:\"checkbox\",defaultChecked:!1}),emits:[\"click\",\"change\"],setup(e,t){let{attrs:n,emit:o,expose:l}=t;const r=Z(e.checked===void 0?e.defaultChecked:e.checked),a=Z();pe(()=>e.checked,()=>{r.value=e.checked}),l({focus(){var u;(u=a.value)===null||u===void 0||u.focus()},blur(){var u;(u=a.value)===null||u===void 0||u.blur()}});const i=Z(),s=u=>{if(e.disabled)return;e.checked===void 0&&(r.value=u.target.checked),u.shiftKey=i.value;const d={target:h(h({},e),{checked:u.target.checked}),stopPropagation(){u.stopPropagation()},preventDefault(){u.preventDefault()},nativeEvent:u};e.checked!==void 0&&(a.value.checked=!!e.checked),o(\"change\",d),i.value=!1},c=u=>{o(\"click\",u),i.value=u.shiftKey};return()=>{const{prefixCls:u,name:d,id:p,type:m,disabled:g,readonly:v,tabindex:y,autofocus:b,value:S,required:$}=e,w=kk(e,[\"prefixCls\",\"name\",\"id\",\"type\",\"disabled\",\"readonly\",\"tabindex\",\"autofocus\",\"value\",\"required\"]),{class:C,onFocus:_,onBlur:x,onKeydown:P,onKeypress:E,onKeyup:M}=n,O=h(h({},w),n),R=Object.keys(O).reduce((T,k)=>((k.startsWith(\"data-\")||k.startsWith(\"aria-\")||k===\"role\")&&(T[k]=O[k]),T),{}),D=re(u,C,{[`${u}-checked`]:r.value,[`${u}-disabled`]:g}),z=h(h({name:d,id:p,type:m,readonly:v,disabled:g,tabindex:y,class:`${u}-input`,checked:!!r.value,autofocus:b,value:S},R),{onChange:s,onClick:c,onFocus:_,onBlur:x,onKeydown:P,onKeypress:E,onKeyup:M,required:$});return f(\"span\",{class:D},[f(\"input\",A({ref:a},z),null),f(\"span\",{class:`${u}-inner`},null)])}}}),Sx=Symbol(\"radioGroupContextKey\"),Bk=e=>{et(Sx,e)},Lk=()=>nt(Sx,void 0),$x=Symbol(\"radioOptionTypeContextKey\"),Fk=e=>{et($x,e)},zk=()=>nt($x,void 0),Hk=new rt(\"antRadioEffect\",{\"0%\":{transform:\"scale(1)\",opacity:.5},\"100%\":{transform:\"scale(1.6)\",opacity:0}}),jk=e=>{const{componentCls:t,antCls:n}=e,o=`${t}-group`;return{[o]:h(h({},qe(e)),{display:\"inline-block\",fontSize:0,[`&${o}-rtl`]:{direction:\"rtl\"},[`${n}-badge ${n}-badge-count`]:{zIndex:1},[`> ${n}-badge:not(:first-child) > ${n}-button-wrapper`]:{borderInlineStart:\"none\"}})}},Wk=e=>{const{componentCls:t,radioWrapperMarginRight:n,radioCheckedColor:o,radioSize:l,motionDurationSlow:r,motionDurationMid:a,motionEaseInOut:i,motionEaseInOutCirc:s,radioButtonBg:c,colorBorder:u,lineWidth:d,radioDotSize:p,colorBgContainerDisabled:m,colorTextDisabled:g,paddingXS:v,radioDotDisabledColor:y,lineType:b,radioDotDisabledSize:S,wireframe:$,colorWhite:w}=e,C=`${t}-inner`;return{[`${t}-wrapper`]:h(h({},qe(e)),{position:\"relative\",display:\"inline-flex\",alignItems:\"baseline\",marginInlineStart:0,marginInlineEnd:n,cursor:\"pointer\",[`&${t}-wrapper-rtl`]:{direction:\"rtl\"},\"&-disabled\":{cursor:\"not-allowed\",color:e.colorTextDisabled},\"&::after\":{display:\"inline-block\",width:0,overflow:\"hidden\",content:'\"\\\\a0\"'},[`${t}-checked::after`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:\"100%\",height:\"100%\",border:`${d}px ${b} ${o}`,borderRadius:\"50%\",visibility:\"hidden\",animationName:Hk,animationDuration:r,animationTimingFunction:i,animationFillMode:\"both\",content:'\"\"'},[t]:h(h({},qe(e)),{position:\"relative\",display:\"inline-block\",outline:\"none\",cursor:\"pointer\",alignSelf:\"center\"}),[`${t}-wrapper:hover &,\n        &:hover ${C}`]:{borderColor:o},[`${t}-input:focus-visible + ${C}`]:h({},fl(e)),[`${t}:hover::after, ${t}-wrapper:hover &::after`]:{visibility:\"visible\"},[`${t}-inner`]:{\"&::after\":{boxSizing:\"border-box\",position:\"absolute\",insetBlockStart:\"50%\",insetInlineStart:\"50%\",display:\"block\",width:l,height:l,marginBlockStart:l/-2,marginInlineStart:l/-2,backgroundColor:$?o:w,borderBlockStart:0,borderInlineStart:0,borderRadius:l,transform:\"scale(0)\",opacity:0,transition:`all ${r} ${s}`,content:'\"\"'},boxSizing:\"border-box\",position:\"relative\",insetBlockStart:0,insetInlineStart:0,display:\"block\",width:l,height:l,backgroundColor:c,borderColor:u,borderStyle:\"solid\",borderWidth:d,borderRadius:\"50%\",transition:`all ${a}`},[`${t}-input`]:{position:\"absolute\",insetBlockStart:0,insetInlineEnd:0,insetBlockEnd:0,insetInlineStart:0,zIndex:1,cursor:\"pointer\",opacity:0},[`${t}-checked`]:{[C]:{borderColor:o,backgroundColor:$?c:o,\"&::after\":{transform:`scale(${p/l})`,opacity:1,transition:`all ${r} ${s}`}}},[`${t}-disabled`]:{cursor:\"not-allowed\",[C]:{backgroundColor:m,borderColor:u,cursor:\"not-allowed\",\"&::after\":{backgroundColor:y}},[`${t}-input`]:{cursor:\"not-allowed\"},[`${t}-disabled + span`]:{color:g,cursor:\"not-allowed\"},[`&${t}-checked`]:{[C]:{\"&::after\":{transform:`scale(${S/l})`}}}},[`span${t} + *`]:{paddingInlineStart:v,paddingInlineEnd:v}})}},Vk=e=>{const{radioButtonColor:t,controlHeight:n,componentCls:o,lineWidth:l,lineType:r,colorBorder:a,motionDurationSlow:i,motionDurationMid:s,radioButtonPaddingHorizontal:c,fontSize:u,radioButtonBg:d,fontSizeLG:p,controlHeightLG:m,controlHeightSM:g,paddingXS:v,borderRadius:y,borderRadiusSM:b,borderRadiusLG:S,radioCheckedColor:$,radioButtonCheckedBg:w,radioButtonHoverColor:C,radioButtonActiveColor:_,radioSolidCheckedColor:x,colorTextDisabled:P,colorBgContainerDisabled:E,radioDisabledButtonCheckedColor:M,radioDisabledButtonCheckedBg:O}=e;return{[`${o}-button-wrapper`]:{position:\"relative\",display:\"inline-block\",height:n,margin:0,paddingInline:c,paddingBlock:0,color:t,fontSize:u,lineHeight:`${n-l*2}px`,background:d,border:`${l}px ${r} ${a}`,borderBlockStartWidth:l+.02,borderInlineStartWidth:0,borderInlineEndWidth:l,cursor:\"pointer\",transition:[`color ${s}`,`background ${s}`,`border-color ${s}`,`box-shadow ${s}`].join(\",\"),a:{color:t},[`> ${o}-button`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,zIndex:-1,width:\"100%\",height:\"100%\"},\"&:not(:first-child)\":{\"&::before\":{position:\"absolute\",insetBlockStart:-l,insetInlineStart:-l,display:\"block\",boxSizing:\"content-box\",width:1,height:\"100%\",paddingBlock:l,paddingInline:0,backgroundColor:a,transition:`background-color ${i}`,content:'\"\"'}},\"&:first-child\":{borderInlineStart:`${l}px ${r} ${a}`,borderStartStartRadius:y,borderEndStartRadius:y},\"&:last-child\":{borderStartEndRadius:y,borderEndEndRadius:y},\"&:first-child:last-child\":{borderRadius:y},[`${o}-group-large &`]:{height:m,fontSize:p,lineHeight:`${m-l*2}px`,\"&:first-child\":{borderStartStartRadius:S,borderEndStartRadius:S},\"&:last-child\":{borderStartEndRadius:S,borderEndEndRadius:S}},[`${o}-group-small &`]:{height:g,paddingInline:v-l,paddingBlock:0,lineHeight:`${g-l*2}px`,\"&:first-child\":{borderStartStartRadius:b,borderEndStartRadius:b},\"&:last-child\":{borderStartEndRadius:b,borderEndEndRadius:b}},\"&:hover\":{position:\"relative\",color:$},\"&:has(:focus-visible)\":h({},fl(e)),[`${o}-inner, input[type='checkbox'], input[type='radio']`]:{width:0,height:0,opacity:0,pointerEvents:\"none\"},[`&-checked:not(${o}-button-wrapper-disabled)`]:{zIndex:1,color:$,background:w,borderColor:$,\"&::before\":{backgroundColor:$},\"&:first-child\":{borderColor:$},\"&:hover\":{color:C,borderColor:C,\"&::before\":{backgroundColor:C}},\"&:active\":{color:_,borderColor:_,\"&::before\":{backgroundColor:_}}},[`${o}-group-solid &-checked:not(${o}-button-wrapper-disabled)`]:{color:x,background:$,borderColor:$,\"&:hover\":{color:x,background:C,borderColor:C},\"&:active\":{color:x,background:_,borderColor:_}},\"&-disabled\":{color:P,backgroundColor:E,borderColor:a,cursor:\"not-allowed\",\"&:first-child, &:hover\":{color:P,backgroundColor:E,borderColor:a}},[`&-disabled${o}-button-wrapper-checked`]:{color:M,backgroundColor:O,borderColor:a,boxShadow:\"none\"}}}},Cx=Xe(\"Radio\",e=>{const{padding:t,lineWidth:n,controlItemBgActiveDisabled:o,colorTextDisabled:l,colorBgContainer:r,fontSizeLG:a,controlOutline:i,colorPrimaryHover:s,colorPrimaryActive:c,colorText:u,colorPrimary:d,marginXS:p,controlOutlineWidth:m,colorTextLightSolid:g,wireframe:v}=e,y=`0 0 0 ${m}px ${i}`,b=y,S=a,$=4,w=S-$*2,C=v?w:S-($+n)*2,_=d,x=u,P=s,E=c,M=t-n,D=Le(e,{radioFocusShadow:y,radioButtonFocusShadow:b,radioSize:S,radioDotSize:C,radioDotDisabledSize:w,radioCheckedColor:_,radioDotDisabledColor:l,radioSolidCheckedColor:g,radioButtonBg:r,radioButtonCheckedBg:r,radioButtonColor:x,radioButtonHoverColor:P,radioButtonActiveColor:E,radioButtonPaddingHorizontal:M,radioDisabledButtonCheckedBg:o,radioDisabledButtonCheckedColor:l,radioWrapperMarginRight:p});return[jk(D),Wk(D),Vk(D)]});var Kk=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const xx=()=>({prefixCls:String,checked:ye(),disabled:ye(),isGroup:ye(),value:W.any,name:String,id:String,autofocus:ye(),onChange:de(),onFocus:de(),onBlur:de(),onClick:de(),\"onUpdate:checked\":de(),\"onUpdate:value\":de()}),In=ne({compatConfig:{MODE:3},name:\"ARadio\",inheritAttrs:!1,props:xx(),setup(e,t){let{emit:n,expose:o,slots:l,attrs:r}=t;const a=Jt(),i=un.useInject(),s=zk(),c=Lk(),u=jn(),d=I(()=>{var P;return(P=v.value)!==null&&P!==void 0?P:u.value}),p=Z(),{prefixCls:m,direction:g,disabled:v}=Te(\"radio\",e),y=I(()=>c?.optionType.value===\"button\"||s===\"button\"?`${m.value}-button`:m.value),b=jn(),[S,$]=Cx(m);o({focus:()=>{p.value.focus()},blur:()=>{p.value.blur()}});const _=P=>{const E=P.target.checked;n(\"update:checked\",E),n(\"update:value\",E),n(\"change\",P),a.onFieldChange()},x=P=>{n(\"change\",P),c&&c.onChange&&c.onChange(P)};return()=>{var P;const E=c,{prefixCls:M,id:O=a.id.value}=e,R=Kk(e,[\"prefixCls\",\"id\"]),D=h(h({prefixCls:y.value,id:O},lt(R,[\"onUpdate:checked\",\"onUpdate:value\"])),{disabled:(P=v.value)!==null&&P!==void 0?P:b.value});E?(D.name=E.name.value,D.onChange=x,D.checked=e.value===E.value.value,D.disabled=d.value||E.disabled.value):D.onChange=_;const z=re({[`${y.value}-wrapper`]:!0,[`${y.value}-wrapper-checked`]:D.checked,[`${y.value}-wrapper-disabled`]:D.disabled,[`${y.value}-wrapper-rtl`]:g.value===\"rtl\",[`${y.value}-wrapper-in-form-item`]:i.isFormItemInput},r.class,$.value);return S(f(\"label\",A(A({},r),{},{class:z}),[f(yx,A(A({},D),{},{type:\"radio\",ref:p}),null),l.default&&f(\"span\",null,[l.default()])]))}}}),Gk=()=>({prefixCls:String,value:W.any,size:ke(),options:ct(),disabled:ye(),name:String,buttonStyle:ke(\"outline\"),id:String,optionType:ke(\"default\"),onChange:de(),\"onUpdate:value\":de()}),dg=ne({compatConfig:{MODE:3},name:\"ARadioGroup\",inheritAttrs:!1,props:Gk(),setup(e,t){let{slots:n,emit:o,attrs:l}=t;const r=Jt(),{prefixCls:a,direction:i,size:s}=Te(\"radio\",e),[c,u]=Cx(a),d=Z(e.value),p=Z(!1);return pe(()=>e.value,g=>{d.value=g,p.value=!1}),Bk({onChange:g=>{const v=d.value,{value:y}=g.target;\"value\"in e||(d.value=y),!p.value&&y!==v&&(p.value=!0,o(\"update:value\",y),o(\"change\",g),r.onFieldChange()),it(()=>{p.value=!1})},value:d,disabled:I(()=>e.disabled),name:I(()=>e.name),optionType:I(()=>e.optionType)}),()=>{var g;const{options:v,buttonStyle:y,id:b=r.id.value}=e,S=`${a.value}-group`,$=re(S,`${S}-${y}`,{[`${S}-${s.value}`]:s.value,[`${S}-rtl`]:i.value===\"rtl\"},l.class,u.value);let w=null;return v&&v.length>0?w=v.map(C=>{if(typeof C==\"string\"||typeof C==\"number\")return f(In,{key:C,prefixCls:a.value,disabled:e.disabled,value:C,checked:d.value===C},{default:()=>[C]});const{value:_,disabled:x,label:P}=C;return f(In,{key:`radio-group-value-options-${_}`,prefixCls:a.value,disabled:x||e.disabled,value:_,checked:d.value===_},{default:()=>[P]})}):w=(g=n.default)===null||g===void 0?void 0:g.call(n),c(f(\"div\",A(A({},l),{},{class:$,id:b}),[w]))}}}),su=ne({compatConfig:{MODE:3},name:\"ARadioButton\",inheritAttrs:!1,props:xx(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l}=Te(\"radio\",e);return Fk(\"button\"),()=>{var r;return f(In,A(A(A({},o),e),{},{prefixCls:l.value}),{default:()=>[(r=n.default)===null||r===void 0?void 0:r.call(n)]})}}});In.Group=dg;In.Button=su;In.install=function(e){return e.component(In.name,In),e.component(In.Group.name,In.Group),e.component(In.Button.name,In.Button),e};const Xk=10,Uk=20;function wx(e){const{fullscreen:t,validRange:n,generateConfig:o,locale:l,prefixCls:r,value:a,onChange:i,divRef:s}=e,c=o.getYear(a||o.getNow());let u=c-Xk,d=u+Uk;n&&(u=o.getYear(n[0]),d=o.getYear(n[1])+1);const p=l&&l.year===\"年\"?\"年\":\"\",m=[];for(let g=u;g<d;g++)m.push({label:`${g}${p}`,value:g});return f(nn,{size:t?void 0:\"small\",options:m,value:c,class:`${r}-year-select`,onChange:g=>{let v=o.setYear(a,g);if(n){const[y,b]=n,S=o.getYear(v),$=o.getMonth(v);S===o.getYear(b)&&$>o.getMonth(b)&&(v=o.setMonth(v,o.getMonth(b))),S===o.getYear(y)&&$<o.getMonth(y)&&(v=o.setMonth(v,o.getMonth(y)))}i(v)},getPopupContainer:()=>s.value},null)}wx.inheritAttrs=!1;function _x(e){const{prefixCls:t,fullscreen:n,validRange:o,value:l,generateConfig:r,locale:a,onChange:i,divRef:s}=e,c=r.getMonth(l||r.getNow());let u=0,d=11;if(o){const[g,v]=o,y=r.getYear(l);r.getYear(v)===y&&(d=r.getMonth(v)),r.getYear(g)===y&&(u=r.getMonth(g))}const p=a.shortMonths||r.locale.getShortMonths(a.locale),m=[];for(let g=u;g<=d;g+=1)m.push({label:p[g],value:g});return f(nn,{size:n?void 0:\"small\",class:`${t}-month-select`,value:c,options:m,onChange:g=>{i(r.setMonth(l,g))},getPopupContainer:()=>s.value},null)}_x.inheritAttrs=!1;function Ix(e){const{prefixCls:t,locale:n,mode:o,fullscreen:l,onModeChange:r}=e;return f(dg,{onChange:a=>{let{target:{value:i}}=a;r(i)},value:o,size:l?void 0:\"small\",class:`${t}-mode-switch`},{default:()=>[f(su,{value:\"month\"},{default:()=>[n.month]}),f(su,{value:\"year\"},{default:()=>[n.year]})]})}Ix.inheritAttrs=!1;const Yk=ne({name:\"CalendarHeader\",inheritAttrs:!1,props:[\"mode\",\"prefixCls\",\"value\",\"validRange\",\"generateConfig\",\"locale\",\"mode\",\"fullscreen\"],setup(e,t){let{attrs:n}=t;const o=Z(null),l=un.useInject();return un.useProvide(l,{isFormItemInput:!1}),()=>{const r=h(h({},e),n),{prefixCls:a,fullscreen:i,mode:s,onChange:c,onModeChange:u}=r,d=h(h({},r),{fullscreen:i,divRef:o});return f(\"div\",{class:`${a}-header`,ref:o},[f(wx,A(A({},d),{},{onChange:p=>{c(p,\"year\")}}),null),s===\"month\"&&f(_x,A(A({},d),{},{onChange:p=>{c(p,\"month\")}}),null),f(Ix,A(A({},d),{},{onModeChange:u}),null)])}}}),fg=e=>({\"&::-moz-placeholder\":{opacity:1},\"&::placeholder\":{color:e,userSelect:\"none\"},\"&:placeholder-shown\":{textOverflow:\"ellipsis\"}}),Da=e=>({borderColor:e.inputBorderHoverColor,borderInlineEndWidth:e.lineWidth}),jl=e=>({borderColor:e.inputBorderHoverColor,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`,borderInlineEndWidth:e.lineWidth,outline:0}),pg=e=>({color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,boxShadow:\"none\",cursor:\"not-allowed\",opacity:1,\"&:hover\":h({},Da(Le(e,{inputBorderHoverColor:e.colorBorder})))}),Px=e=>{const{inputPaddingVerticalLG:t,fontSizeLG:n,lineHeightLG:o,borderRadiusLG:l,inputPaddingHorizontalLG:r}=e;return{padding:`${t}px ${r}px`,fontSize:n,lineHeight:o,borderRadius:l}},mg=e=>({padding:`${e.inputPaddingVerticalSM}px ${e.controlPaddingHorizontalSM-1}px`,borderRadius:e.borderRadiusSM}),Wi=(e,t)=>{const{componentCls:n,colorError:o,colorWarning:l,colorErrorOutline:r,colorWarningOutline:a,colorErrorBorderHover:i,colorWarningBorderHover:s}=e;return{[`&-status-error:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:o,\"&:hover\":{borderColor:i},\"&:focus, &-focused\":h({},jl(Le(e,{inputBorderActiveColor:o,inputBorderHoverColor:o,controlOutline:r}))),[`${n}-prefix`]:{color:o}},[`&-status-warning:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:l,\"&:hover\":{borderColor:s},\"&:focus, &-focused\":h({},jl(Le(e,{inputBorderActiveColor:l,inputBorderHoverColor:l,controlOutline:a}))),[`${n}-prefix`]:{color:l}}}},Rr=e=>h(h({position:\"relative\",display:\"inline-block\",width:\"100%\",minWidth:0,padding:`${e.inputPaddingVertical}px ${e.inputPaddingHorizontal}px`,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,backgroundColor:e.colorBgContainer,backgroundImage:\"none\",borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:e.colorBorder,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid}`},fg(e.colorTextPlaceholder)),{\"&:hover\":h({},Da(e)),\"&:focus, &-focused\":h({},jl(e)),\"&-disabled, &[disabled]\":h({},pg(e)),\"&-borderless\":{\"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]\":{backgroundColor:\"transparent\",border:\"none\",boxShadow:\"none\"}},\"textarea&\":{maxWidth:\"100%\",height:\"auto\",minHeight:e.controlHeight,lineHeight:e.lineHeight,verticalAlign:\"bottom\",transition:`all ${e.motionDurationSlow}, height 0s`,resize:\"vertical\"},\"&-lg\":h({},Px(e)),\"&-sm\":h({},mg(e)),\"&-rtl\":{direction:\"rtl\"},\"&-textarea-rtl\":{direction:\"rtl\"}}),Tx=e=>{const{componentCls:t,antCls:n}=e;return{position:\"relative\",display:\"table\",width:\"100%\",borderCollapse:\"separate\",borderSpacing:0,\"&[class*='col-']\":{paddingInlineEnd:e.paddingXS,\"&:last-child\":{paddingInlineEnd:0}},[`&-lg ${t}, &-lg > ${t}-group-addon`]:h({},Px(e)),[`&-sm ${t}, &-sm > ${t}-group-addon`]:h({},mg(e)),[`> ${t}`]:{display:\"table-cell\",\"&:not(:first-child):not(:last-child)\":{borderRadius:0}},[`${t}-group`]:{\"&-addon, &-wrap\":{display:\"table-cell\",width:1,whiteSpace:\"nowrap\",verticalAlign:\"middle\",\"&:not(:first-child):not(:last-child)\":{borderRadius:0}},\"&-wrap > *\":{display:\"block !important\"},\"&-addon\":{position:\"relative\",padding:`0 ${e.inputPaddingHorizontal}px`,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,textAlign:\"center\",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,transition:`all ${e.motionDurationSlow}`,lineHeight:1,[`${n}-select`]:{margin:`-${e.inputPaddingVertical+1}px -${e.inputPaddingHorizontal}px`,[`&${n}-select-single:not(${n}-select-customize-input)`]:{[`${n}-select-selector`]:{backgroundColor:\"inherit\",border:`${e.lineWidth}px ${e.lineType} transparent`,boxShadow:\"none\"}},\"&-open, &-focused\":{[`${n}-select-selector`]:{color:e.colorPrimary}}},[`${n}-cascader-picker`]:{margin:`-9px -${e.inputPaddingHorizontal}px`,backgroundColor:\"transparent\",[`${n}-cascader-input`]:{textAlign:\"start\",border:0,boxShadow:\"none\"}}},\"&-addon:first-child\":{borderInlineEnd:0},\"&-addon:last-child\":{borderInlineStart:0}},[`${t}`]:{float:\"inline-start\",width:\"100%\",marginBottom:0,textAlign:\"inherit\",\"&:focus\":{zIndex:1,borderInlineEndWidth:1},\"&:hover\":{zIndex:1,borderInlineEndWidth:1,[`${t}-search-with-button &`]:{zIndex:0}}},[`> ${t}:first-child, ${t}-group-addon:first-child`]:{borderStartEndRadius:0,borderEndEndRadius:0,[`${n}-select ${n}-select-selector`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}-affix-wrapper`]:{[`&:not(:first-child) ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0},[`&:not(:last-child) ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}:last-child, ${t}-group-addon:last-child`]:{borderStartStartRadius:0,borderEndStartRadius:0,[`${n}-select ${n}-select-selector`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`${t}-affix-wrapper`]:{\"&:not(:last-child)\":{borderStartEndRadius:0,borderEndEndRadius:0,[`${t}-search &`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius}},[`&:not(:first-child), ${t}-search &:not(:first-child)`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`&${t}-group-compact`]:h(h({display:\"block\"},Do()),{[`${t}-group-addon, ${t}-group-wrap, > ${t}`]:{\"&:not(:first-child):not(:last-child)\":{borderInlineEndWidth:e.lineWidth,\"&:hover\":{zIndex:1},\"&:focus\":{zIndex:1}}},\"& > *\":{display:\"inline-block\",float:\"none\",verticalAlign:\"top\",borderRadius:0},[`& > ${t}-affix-wrapper`]:{display:\"inline-flex\"},[`& > ${n}-picker-range`]:{display:\"inline-flex\"},\"& > *:not(:last-child)\":{marginInlineEnd:-e.lineWidth,borderInlineEndWidth:e.lineWidth},[`${t}`]:{float:\"none\"},[`& > ${n}-select > ${n}-select-selector,\n      & > ${n}-select-auto-complete ${t},\n      & > ${n}-cascader-picker ${t},\n      & > ${t}-group-wrapper ${t}`]:{borderInlineEndWidth:e.lineWidth,borderRadius:0,\"&:hover\":{zIndex:1},\"&:focus\":{zIndex:1}},[`& > ${n}-select-focused`]:{zIndex:1},[`& > ${n}-select > ${n}-select-arrow`]:{zIndex:1},[`& > *:first-child,\n      & > ${n}-select:first-child > ${n}-select-selector,\n      & > ${n}-select-auto-complete:first-child ${t},\n      & > ${n}-cascader-picker:first-child ${t}`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius},[`& > *:last-child,\n      & > ${n}-select:last-child > ${n}-select-selector,\n      & > ${n}-cascader-picker:last-child ${t},\n      & > ${n}-cascader-picker-focused:last-child ${t}`]:{borderInlineEndWidth:e.lineWidth,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius},[`& > ${n}-select-auto-complete ${t}`]:{verticalAlign:\"top\"},[`${t}-group-wrapper + ${t}-group-wrapper`]:{marginInlineStart:-e.lineWidth,[`${t}-affix-wrapper`]:{borderRadius:0}},[`${t}-group-wrapper:not(:last-child)`]:{[`&${t}-search > ${t}-group`]:{[`& > ${t}-group-addon > ${t}-search-button`]:{borderRadius:0},[`& > ${t}`]:{borderStartStartRadius:e.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:e.borderRadius}}}}),[`&&-sm ${n}-btn`]:{fontSize:e.fontSizeSM,height:e.controlHeightSM,lineHeight:\"normal\"},[`&&-lg ${n}-btn`]:{fontSize:e.fontSizeLG,height:e.controlHeightLG,lineHeight:\"normal\"},[`&&-lg ${n}-select-single ${n}-select-selector`]:{height:`${e.controlHeightLG}px`,[`${n}-select-selection-item, ${n}-select-selection-placeholder`]:{lineHeight:`${e.controlHeightLG-2}px`},[`${n}-select-selection-search-input`]:{height:`${e.controlHeightLG}px`}},[`&&-sm ${n}-select-single ${n}-select-selector`]:{height:`${e.controlHeightSM}px`,[`${n}-select-selection-item, ${n}-select-selection-placeholder`]:{lineHeight:`${e.controlHeightSM-2}px`},[`${n}-select-selection-search-input`]:{height:`${e.controlHeightSM}px`}}}},qk=e=>{const{componentCls:t,controlHeightSM:n,lineWidth:o}=e,r=(n-o*2-16)/2;return{[t]:h(h(h(h({},qe(e)),Rr(e)),Wi(e,t)),{'&[type=\"color\"]':{height:e.controlHeight,[`&${t}-lg`]:{height:e.controlHeightLG},[`&${t}-sm`]:{height:n,paddingTop:r,paddingBottom:r}}})}},Zk=e=>{const{componentCls:t}=e;return{[`${t}-clear-icon`]:{margin:0,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,verticalAlign:-1,cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,\"&:hover\":{color:e.colorTextTertiary},\"&:active\":{color:e.colorText},\"&-hidden\":{visibility:\"hidden\"},\"&-has-suffix\":{margin:`0 ${e.inputAffixPadding}px`}},\"&-textarea-with-clear-btn\":{padding:\"0 !important\",border:\"0 !important\",[`${t}-clear-icon`]:{position:\"absolute\",insetBlockStart:e.paddingXS,insetInlineEnd:e.paddingXS,zIndex:1}}}},Qk=e=>{const{componentCls:t,inputAffixPadding:n,colorTextDescription:o,motionDurationSlow:l,colorIcon:r,colorIconHover:a,iconCls:i}=e;return{[`${t}-affix-wrapper`]:h(h(h(h(h({},Rr(e)),{display:\"inline-flex\",[`&:not(${t}-affix-wrapper-disabled):hover`]:h(h({},Da(e)),{zIndex:1,[`${t}-search-with-button &`]:{zIndex:0}}),\"&-focused, &:focus\":{zIndex:1},\"&-disabled\":{[`${t}[disabled]`]:{background:\"transparent\"}},[`> input${t}`]:{padding:0,fontSize:\"inherit\",border:\"none\",borderRadius:0,outline:\"none\",\"&:focus\":{boxShadow:\"none !important\"}},\"&::before\":{width:0,visibility:\"hidden\",content:'\"\\\\a0\"'},[`${t}`]:{\"&-prefix, &-suffix\":{display:\"flex\",flex:\"none\",alignItems:\"center\",\"> *:not(:last-child)\":{marginInlineEnd:e.paddingXS}},\"&-show-count-suffix\":{color:o},\"&-show-count-has-suffix\":{marginInlineEnd:e.paddingXXS},\"&-prefix\":{marginInlineEnd:n},\"&-suffix\":{marginInlineStart:n}}}),Zk(e)),{[`${i}${t}-password-icon`]:{color:r,cursor:\"pointer\",transition:`all ${l}`,\"&:hover\":{color:a}}}),Wi(e,`${t}-affix-wrapper`))}},Jk=e=>{const{componentCls:t,colorError:n,colorSuccess:o,borderRadiusLG:l,borderRadiusSM:r}=e;return{[`${t}-group`]:h(h(h({},qe(e)),Tx(e)),{\"&-rtl\":{direction:\"rtl\"},\"&-wrapper\":{display:\"inline-block\",width:\"100%\",textAlign:\"start\",verticalAlign:\"top\",\"&-rtl\":{direction:\"rtl\"},\"&-lg\":{[`${t}-group-addon`]:{borderRadius:l}},\"&-sm\":{[`${t}-group-addon`]:{borderRadius:r}},\"&-status-error\":{[`${t}-group-addon`]:{color:n,borderColor:n}},\"&-status-warning\":{[`${t}-group-addon:last-child`]:{color:o,borderColor:o}}}})}},eN=e=>{const{componentCls:t,antCls:n}=e,o=`${t}-search`;return{[o]:{[`${t}`]:{\"&:hover, &:focus\":{borderColor:e.colorPrimaryHover,[`+ ${t}-group-addon ${o}-button:not(${n}-btn-primary)`]:{borderInlineStartColor:e.colorPrimaryHover}}},[`${t}-affix-wrapper`]:{borderRadius:0},[`${t}-lg`]:{lineHeight:e.lineHeightLG-2e-4},[`> ${t}-group`]:{[`> ${t}-group-addon:last-child`]:{insetInlineStart:-1,padding:0,border:0,[`${o}-button`]:{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius,borderEndStartRadius:0},[`${o}-button:not(${n}-btn-primary)`]:{color:e.colorTextDescription,\"&:hover\":{color:e.colorPrimaryHover},\"&:active\":{color:e.colorPrimaryActive},[`&${n}-btn-loading::before`]:{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0}}}},[`${o}-button`]:{height:e.controlHeight,\"&:hover, &:focus\":{zIndex:1}},[`&-large ${o}-button`]:{height:e.controlHeightLG},[`&-small ${o}-button`]:{height:e.controlHeightSM},\"&-rtl\":{direction:\"rtl\"},[`&${t}-compact-item`]:{[`&:not(${t}-compact-last-item)`]:{[`${t}-group-addon`]:{[`${t}-search-button`]:{marginInlineEnd:-e.lineWidth,borderRadius:0}}},[`&:not(${t}-compact-first-item)`]:{[`${t},${t}-affix-wrapper`]:{borderRadius:0}},[`> ${t}-group-addon ${t}-search-button,\n        > ${t},\n        ${t}-affix-wrapper`]:{\"&:hover,&:focus,&:active\":{zIndex:2}},[`> ${t}-affix-wrapper-focused`]:{zIndex:2}}}}};function kr(e){return Le(e,{inputAffixPadding:e.paddingXXS,inputPaddingVertical:Math.max(Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,3),inputPaddingVerticalLG:Math.ceil((e.controlHeightLG-e.fontSizeLG*e.lineHeightLG)/2*10)/10-e.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((e.controlHeightSM-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,0),inputPaddingHorizontal:e.paddingSM-e.lineWidth,inputPaddingHorizontalSM:e.paddingXS-e.lineWidth,inputPaddingHorizontalLG:e.controlPaddingHorizontal-e.lineWidth,inputBorderHoverColor:e.colorPrimaryHover,inputBorderActiveColor:e.colorPrimaryHover})}const tN=e=>{const{componentCls:t,inputPaddingHorizontal:n,paddingLG:o}=e,l=`${t}-textarea`;return{[l]:{position:\"relative\",[`${l}-suffix`]:{position:\"absolute\",top:0,insetInlineEnd:n,bottom:0,zIndex:1,display:\"inline-flex\",alignItems:\"center\",margin:\"auto\"},\"&-status-error,\\n        &-status-warning,\\n        &-status-success,\\n        &-status-validating\":{[`&${l}-has-feedback`]:{[`${t}`]:{paddingInlineEnd:o}}},\"&-show-count\":{[`> ${t}`]:{height:\"100%\"},\"&::after\":{color:e.colorTextDescription,whiteSpace:\"nowrap\",content:\"attr(data-count)\",pointerEvents:\"none\",float:\"right\"}},\"&-rtl\":{\"&::after\":{float:\"left\"}}}}},vg=Xe(\"Input\",e=>{const t=kr(e);return[qk(t),tN(t),Qk(t),Jk(t),eN(t),Ea(t)]}),cf=(e,t,n,o)=>{const{lineHeight:l}=e,r=Math.floor(n*l)+2,a=Math.max((t-r)/2,0),i=Math.max(t-r-a,0);return{padding:`${a}px ${o}px ${i}px`}},nN=e=>{const{componentCls:t,pickerCellCls:n,pickerCellInnerCls:o,pickerPanelCellHeight:l,motionDurationSlow:r,borderRadiusSM:a,motionDurationMid:i,controlItemBgHover:s,lineWidth:c,lineType:u,colorPrimary:d,controlItemBgActive:p,colorTextLightSolid:m,controlHeightSM:g,pickerDateHoverRangeBorderColor:v,pickerCellBorderGap:y,pickerBasicCellHoverWithRangeColor:b,pickerPanelCellWidth:S,colorTextDisabled:$,colorBgContainerDisabled:w}=e;return{\"&::before\":{position:\"absolute\",top:\"50%\",insetInlineStart:0,insetInlineEnd:0,zIndex:1,height:l,transform:\"translateY(-50%)\",transition:`all ${r}`,content:'\"\"'},[o]:{position:\"relative\",zIndex:2,display:\"inline-block\",minWidth:l,height:l,lineHeight:`${l}px`,borderRadius:a,transition:`background ${i}, border ${i}`},[`&:hover:not(${n}-in-view),\n    &:hover:not(${n}-selected):not(${n}-range-start):not(${n}-range-end):not(${n}-range-hover-start):not(${n}-range-hover-end)`]:{[o]:{background:s}},[`&-in-view${n}-today ${o}`]:{\"&::before\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:1,border:`${c}px ${u} ${d}`,borderRadius:a,content:'\"\"'}},[`&-in-view${n}-in-range`]:{position:\"relative\",\"&::before\":{background:p}},[`&-in-view${n}-selected ${o},\n      &-in-view${n}-range-start ${o},\n      &-in-view${n}-range-end ${o}`]:{color:m,background:d},[`&-in-view${n}-range-start:not(${n}-range-start-single),\n      &-in-view${n}-range-end:not(${n}-range-end-single)`]:{\"&::before\":{background:p}},[`&-in-view${n}-range-start::before`]:{insetInlineStart:\"50%\"},[`&-in-view${n}-range-end::before`]:{insetInlineEnd:\"50%\"},[`&-in-view${n}-range-hover-start:not(${n}-in-range):not(${n}-range-start):not(${n}-range-end),\n      &-in-view${n}-range-hover-end:not(${n}-in-range):not(${n}-range-start):not(${n}-range-end),\n      &-in-view${n}-range-hover-start${n}-range-start-single,\n      &-in-view${n}-range-hover-start${n}-range-start${n}-range-end${n}-range-end-near-hover,\n      &-in-view${n}-range-hover-end${n}-range-start${n}-range-end${n}-range-start-near-hover,\n      &-in-view${n}-range-hover-end${n}-range-end-single,\n      &-in-view${n}-range-hover:not(${n}-in-range)`]:{\"&::after\":{position:\"absolute\",top:\"50%\",zIndex:0,height:g,borderTop:`${c}px dashed ${v}`,borderBottom:`${c}px dashed ${v}`,transform:\"translateY(-50%)\",transition:`all ${r}`,content:'\"\"'}},\"&-range-hover-start::after,\\n      &-range-hover-end::after,\\n      &-range-hover::after\":{insetInlineEnd:0,insetInlineStart:y},[`&-in-view${n}-in-range${n}-range-hover::before,\n      &-in-view${n}-range-start${n}-range-hover::before,\n      &-in-view${n}-range-end${n}-range-hover::before,\n      &-in-view${n}-range-start:not(${n}-range-start-single)${n}-range-hover-start::before,\n      &-in-view${n}-range-end:not(${n}-range-end-single)${n}-range-hover-end::before,\n      ${t}-panel\n      > :not(${t}-date-panel)\n      &-in-view${n}-in-range${n}-range-hover-start::before,\n      ${t}-panel\n      > :not(${t}-date-panel)\n      &-in-view${n}-in-range${n}-range-hover-end::before`]:{background:b},[`&-in-view${n}-range-start:not(${n}-range-start-single):not(${n}-range-end) ${o}`]:{borderStartStartRadius:a,borderEndStartRadius:a,borderStartEndRadius:0,borderEndEndRadius:0},[`&-in-view${n}-range-end:not(${n}-range-end-single):not(${n}-range-start) ${o}`]:{borderStartStartRadius:0,borderEndStartRadius:0,borderStartEndRadius:a,borderEndEndRadius:a},[`&-range-hover${n}-range-end::after`]:{insetInlineStart:\"50%\"},[`tr > &-in-view${n}-range-hover:first-child::after,\n      tr > &-in-view${n}-range-hover-end:first-child::after,\n      &-in-view${n}-start${n}-range-hover-edge-start${n}-range-hover-edge-start-near-range::after,\n      &-in-view${n}-range-hover-edge-start:not(${n}-range-hover-edge-start-near-range)::after,\n      &-in-view${n}-range-hover-start::after`]:{insetInlineStart:(S-l)/2,borderInlineStart:`${c}px dashed ${v}`,borderStartStartRadius:c,borderEndStartRadius:c},[`tr > &-in-view${n}-range-hover:last-child::after,\n      tr > &-in-view${n}-range-hover-start:last-child::after,\n      &-in-view${n}-end${n}-range-hover-edge-end${n}-range-hover-edge-end-near-range::after,\n      &-in-view${n}-range-hover-edge-end:not(${n}-range-hover-edge-end-near-range)::after,\n      &-in-view${n}-range-hover-end::after`]:{insetInlineEnd:(S-l)/2,borderInlineEnd:`${c}px dashed ${v}`,borderStartEndRadius:c,borderEndEndRadius:c},\"&-disabled\":{color:$,pointerEvents:\"none\",[o]:{background:\"transparent\"},\"&::before\":{background:w}},[`&-disabled${n}-today ${o}::before`]:{borderColor:$}}},Ox=e=>{const{componentCls:t,pickerCellInnerCls:n,pickerYearMonthCellWidth:o,pickerControlIconSize:l,pickerPanelCellWidth:r,paddingSM:a,paddingXS:i,paddingXXS:s,colorBgContainer:c,lineWidth:u,lineType:d,borderRadiusLG:p,colorPrimary:m,colorTextHeading:g,colorSplit:v,pickerControlIconBorderWidth:y,colorIcon:b,pickerTextHeight:S,motionDurationMid:$,colorIconHover:w,fontWeightStrong:C,pickerPanelCellHeight:_,pickerCellPaddingVertical:x,colorTextDisabled:P,colorText:E,fontSize:M,pickerBasicCellHoverWithRangeColor:O,motionDurationSlow:R,pickerPanelWithoutTimeCellHeight:D,pickerQuarterPanelContentHeight:z,colorLink:T,colorLinkActive:k,colorLinkHover:B,pickerDateHoverRangeBorderColor:L,borderRadiusSM:N,colorTextLightSolid:F,borderRadius:j,controlItemBgHover:H,pickerTimePanelColumnHeight:K,pickerTimePanelColumnWidth:G,pickerTimePanelCellHeight:V,controlItemBgActive:q,marginXXS:Q}=e,oe=r*7+a*2+4,le=(oe-i*2)/3-o-a;return{[t]:{\"&-panel\":{display:\"inline-flex\",flexDirection:\"column\",textAlign:\"center\",background:c,border:`${u}px ${d} ${v}`,borderRadius:p,outline:\"none\",\"&-focused\":{borderColor:m},\"&-rtl\":{direction:\"rtl\",[`${t}-prev-icon,\n              ${t}-super-prev-icon`]:{transform:\"rotate(45deg)\"},[`${t}-next-icon,\n              ${t}-super-next-icon`]:{transform:\"rotate(-135deg)\"}}},\"&-decade-panel,\\n        &-year-panel,\\n        &-quarter-panel,\\n        &-month-panel,\\n        &-week-panel,\\n        &-date-panel,\\n        &-time-panel\":{display:\"flex\",flexDirection:\"column\",width:oe},\"&-header\":{display:\"flex\",padding:`0 ${i}px`,color:g,borderBottom:`${u}px ${d} ${v}`,\"> *\":{flex:\"none\"},button:{padding:0,color:b,lineHeight:`${S}px`,background:\"transparent\",border:0,cursor:\"pointer\",transition:`color ${$}`},\"> button\":{minWidth:\"1.6em\",fontSize:M,\"&:hover\":{color:w}},\"&-view\":{flex:\"auto\",fontWeight:C,lineHeight:`${S}px`,button:{color:\"inherit\",fontWeight:\"inherit\",verticalAlign:\"top\",\"&:not(:first-child)\":{marginInlineStart:i},\"&:hover\":{color:m}}}},\"&-prev-icon,\\n        &-next-icon,\\n        &-super-prev-icon,\\n        &-super-next-icon\":{position:\"relative\",display:\"inline-block\",width:l,height:l,\"&::before\":{position:\"absolute\",top:0,insetInlineStart:0,display:\"inline-block\",width:l,height:l,border:\"0 solid currentcolor\",borderBlockStartWidth:y,borderBlockEndWidth:0,borderInlineStartWidth:y,borderInlineEndWidth:0,content:'\"\"'}},\"&-super-prev-icon,\\n        &-super-next-icon\":{\"&::after\":{position:\"absolute\",top:Math.ceil(l/2),insetInlineStart:Math.ceil(l/2),display:\"inline-block\",width:l,height:l,border:\"0 solid currentcolor\",borderBlockStartWidth:y,borderBlockEndWidth:0,borderInlineStartWidth:y,borderInlineEndWidth:0,content:'\"\"'}},\"&-prev-icon,\\n        &-super-prev-icon\":{transform:\"rotate(-45deg)\"},\"&-next-icon,\\n        &-super-next-icon\":{transform:\"rotate(135deg)\"},\"&-content\":{width:\"100%\",tableLayout:\"fixed\",borderCollapse:\"collapse\",\"th, td\":{position:\"relative\",minWidth:_,fontWeight:\"normal\"},th:{height:_+x*2,color:E,verticalAlign:\"middle\"}},\"&-cell\":h({padding:`${x}px 0`,color:P,cursor:\"pointer\",\"&-in-view\":{color:E}},nN(e)),[`&-date-panel ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-start ${n},\n        &-date-panel ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-end ${n}`]:{\"&::after\":{position:\"absolute\",top:0,bottom:0,zIndex:-1,background:O,transition:`all ${R}`,content:'\"\"'}},[`&-date-panel\n        ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-start\n        ${n}::after`]:{insetInlineEnd:-(r-_)/2,insetInlineStart:0},[`&-date-panel ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-end ${n}::after`]:{insetInlineEnd:0,insetInlineStart:-(r-_)/2},[`&-range-hover${t}-range-start::after`]:{insetInlineEnd:\"50%\"},\"&-decade-panel,\\n        &-year-panel,\\n        &-quarter-panel,\\n        &-month-panel\":{[`${t}-content`]:{height:D*4},[n]:{padding:`0 ${i}px`}},\"&-quarter-panel\":{[`${t}-content`]:{height:z}},[`&-panel ${t}-footer`]:{borderTop:`${u}px ${d} ${v}`},\"&-footer\":{width:\"min-content\",minWidth:\"100%\",lineHeight:`${S-2*u}px`,textAlign:\"center\",\"&-extra\":{padding:`0 ${a}`,lineHeight:`${S-2*u}px`,textAlign:\"start\",\"&:not(:last-child)\":{borderBottom:`${u}px ${d} ${v}`}}},\"&-now\":{textAlign:\"start\"},\"&-today-btn\":{color:T,\"&:hover\":{color:B},\"&:active\":{color:k},[`&${t}-today-btn-disabled`]:{color:P,cursor:\"not-allowed\"}},\"&-decade-panel\":{[n]:{padding:`0 ${i/2}px`},[`${t}-cell::before`]:{display:\"none\"}},\"&-year-panel,\\n        &-quarter-panel,\\n        &-month-panel\":{[`${t}-body`]:{padding:`0 ${i}px`},[n]:{width:o},[`${t}-cell-range-hover-start::after`]:{insetInlineStart:le,borderInlineStart:`${u}px dashed ${L}`,borderStartStartRadius:N,borderBottomStartRadius:N,borderStartEndRadius:0,borderBottomEndRadius:0,[`${t}-panel-rtl &`]:{insetInlineEnd:le,borderInlineEnd:`${u}px dashed ${L}`,borderStartStartRadius:0,borderBottomStartRadius:0,borderStartEndRadius:N,borderBottomEndRadius:N}},[`${t}-cell-range-hover-end::after`]:{insetInlineEnd:le,borderInlineEnd:`${u}px dashed ${L}`,borderStartStartRadius:0,borderEndStartRadius:0,borderStartEndRadius:j,borderEndEndRadius:j,[`${t}-panel-rtl &`]:{insetInlineStart:le,borderInlineStart:`${u}px dashed ${L}`,borderStartStartRadius:j,borderEndStartRadius:j,borderStartEndRadius:0,borderEndEndRadius:0}}},\"&-week-panel\":{[`${t}-body`]:{padding:`${i}px ${a}px`},[`${t}-cell`]:{[`&:hover ${n},\n            &-selected ${n},\n            ${n}`]:{background:\"transparent !important\"}},\"&-row\":{td:{transition:`background ${$}`,\"&:first-child\":{borderStartStartRadius:N,borderEndStartRadius:N},\"&:last-child\":{borderStartEndRadius:N,borderEndEndRadius:N}},\"&:hover td\":{background:H},\"&-selected td,\\n            &-selected:hover td\":{background:m,[`&${t}-cell-week`]:{color:new vt(F).setAlpha(.5).toHexString()},[`&${t}-cell-today ${n}::before`]:{borderColor:F},[n]:{color:F}}}},\"&-date-panel\":{[`${t}-body`]:{padding:`${i}px ${a}px`},[`${t}-content`]:{width:r*7,th:{width:r}}},\"&-datetime-panel\":{display:\"flex\",[`${t}-time-panel`]:{borderInlineStart:`${u}px ${d} ${v}`},[`${t}-date-panel,\n          ${t}-time-panel`]:{transition:`opacity ${R}`},\"&-active\":{[`${t}-date-panel,\n            ${t}-time-panel`]:{opacity:.3,\"&-active\":{opacity:1}}}},\"&-time-panel\":{width:\"auto\",minWidth:\"auto\",direction:\"ltr\",[`${t}-content`]:{display:\"flex\",flex:\"auto\",height:K},\"&-column\":{flex:\"1 0 auto\",width:G,margin:`${s}px 0`,padding:0,overflowY:\"hidden\",textAlign:\"start\",listStyle:\"none\",transition:`background ${$}`,overflowX:\"hidden\",\"&::after\":{display:\"block\",height:K-V,content:'\"\"'},\"&:not(:first-child)\":{borderInlineStart:`${u}px ${d} ${v}`},\"&-active\":{background:new vt(q).setAlpha(.2).toHexString()},\"&:hover\":{overflowY:\"auto\"},\"> li\":{margin:0,padding:0,[`&${t}-time-panel-cell`]:{marginInline:Q,[`${t}-time-panel-cell-inner`]:{display:\"block\",width:G-2*Q,height:V,margin:0,paddingBlock:0,paddingInlineEnd:0,paddingInlineStart:(G-V)/2,color:E,lineHeight:`${V}px`,borderRadius:N,cursor:\"pointer\",transition:`background ${$}`,\"&:hover\":{background:H}},\"&-selected\":{[`${t}-time-panel-cell-inner`]:{background:q}},\"&-disabled\":{[`${t}-time-panel-cell-inner`]:{color:P,background:\"transparent\",cursor:\"not-allowed\"}}}}}},[`&-datetime-panel ${t}-time-panel-column:after`]:{height:K-V+s*2}}}},oN=e=>{const{componentCls:t,colorBgContainer:n,colorError:o,colorErrorOutline:l,colorWarning:r,colorWarningOutline:a}=e;return{[t]:{[`&-status-error${t}`]:{\"&, &:not([disabled]):hover\":{backgroundColor:n,borderColor:o},\"&-focused, &:focus\":h({},jl(Le(e,{inputBorderActiveColor:o,inputBorderHoverColor:o,controlOutline:l}))),[`${t}-active-bar`]:{background:o}},[`&-status-warning${t}`]:{\"&, &:not([disabled]):hover\":{backgroundColor:n,borderColor:r},\"&-focused, &:focus\":h({},jl(Le(e,{inputBorderActiveColor:r,inputBorderHoverColor:r,controlOutline:a}))),[`${t}-active-bar`]:{background:r}}}}},lN=e=>{const{componentCls:t,antCls:n,boxShadowPopoverArrow:o,controlHeight:l,fontSize:r,inputPaddingHorizontal:a,colorBgContainer:i,lineWidth:s,lineType:c,colorBorder:u,borderRadius:d,motionDurationMid:p,colorBgContainerDisabled:m,colorTextDisabled:g,colorTextPlaceholder:v,controlHeightLG:y,fontSizeLG:b,controlHeightSM:S,inputPaddingHorizontalSM:$,paddingXS:w,marginXS:C,colorTextDescription:_,lineWidthBold:x,lineHeight:P,colorPrimary:E,motionDurationSlow:M,zIndexPopup:O,paddingXXS:R,paddingSM:D,pickerTextHeight:z,controlItemBgActive:T,colorPrimaryBorder:k,sizePopupArrow:B,borderRadiusXS:L,borderRadiusOuter:N,colorBgElevated:F,borderRadiusLG:j,boxShadowSecondary:H,borderRadiusSM:K,colorSplit:G,controlItemBgHover:V,presetsWidth:q,presetsMaxWidth:Q}=e;return[{[t]:h(h(h({},qe(e)),cf(e,l,r,a)),{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",background:i,lineHeight:1,border:`${s}px ${c} ${u}`,borderRadius:d,transition:`border ${p}, box-shadow ${p}`,\"&:hover, &-focused\":h({},Da(e)),\"&-focused\":h({},jl(e)),[`&${t}-disabled`]:{background:m,borderColor:u,cursor:\"not-allowed\",[`${t}-suffix`]:{color:g}},[`&${t}-borderless`]:{backgroundColor:\"transparent !important\",borderColor:\"transparent !important\",boxShadow:\"none !important\"},[`${t}-input`]:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",width:\"100%\",\"> input\":h(h({},Rr(e)),{flex:\"auto\",minWidth:1,height:\"auto\",padding:0,background:\"transparent\",border:0,\"&:focus\":{boxShadow:\"none\"},\"&[disabled]\":{background:\"transparent\"}}),\"&:hover\":{[`${t}-clear`]:{opacity:1}},\"&-placeholder\":{\"> input\":{color:v}}},\"&-large\":h(h({},cf(e,y,b,a)),{[`${t}-input > input`]:{fontSize:b}}),\"&-small\":h({},cf(e,S,r,$)),[`${t}-suffix`]:{display:\"flex\",flex:\"none\",alignSelf:\"center\",marginInlineStart:w/2,color:g,lineHeight:1,pointerEvents:\"none\",\"> *\":{verticalAlign:\"top\",\"&:not(:last-child)\":{marginInlineEnd:C}}},[`${t}-clear`]:{position:\"absolute\",top:\"50%\",insetInlineEnd:0,color:g,lineHeight:1,background:i,transform:\"translateY(-50%)\",cursor:\"pointer\",opacity:0,transition:`opacity ${p}, color ${p}`,\"> *\":{verticalAlign:\"top\"},\"&:hover\":{color:_}},[`${t}-separator`]:{position:\"relative\",display:\"inline-block\",width:\"1em\",height:b,color:g,fontSize:b,verticalAlign:\"top\",cursor:\"default\",[`${t}-focused &`]:{color:_},[`${t}-range-separator &`]:{[`${t}-disabled &`]:{cursor:\"not-allowed\"}}},\"&-range\":{position:\"relative\",display:\"inline-flex\",[`${t}-clear`]:{insetInlineEnd:a},\"&:hover\":{[`${t}-clear`]:{opacity:1}},[`${t}-active-bar`]:{bottom:-s,height:x,marginInlineStart:a,background:E,opacity:0,transition:`all ${M} ease-out`,pointerEvents:\"none\"},[`&${t}-focused`]:{[`${t}-active-bar`]:{opacity:1}},[`${t}-range-separator`]:{alignItems:\"center\",padding:`0 ${w}px`,lineHeight:1},[`&${t}-small`]:{[`${t}-clear`]:{insetInlineEnd:$},[`${t}-active-bar`]:{marginInlineStart:$}}},\"&-dropdown\":h(h(h({},qe(e)),Ox(e)),{position:\"absolute\",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:O,[`&${t}-dropdown-hidden`]:{display:\"none\"},[`&${t}-dropdown-placement-bottomLeft`]:{[`${t}-range-arrow`]:{top:0,display:\"block\",transform:\"translateY(-100%)\"}},[`&${t}-dropdown-placement-topLeft`]:{[`${t}-range-arrow`]:{bottom:0,display:\"block\",transform:\"translateY(100%) rotate(180deg)\"}},[`&${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-topLeft,\n          &${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-topRight,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-topLeft,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-topRight`]:{animationName:Ju},[`&${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-bottomLeft,\n          &${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-bottomRight,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-bottomLeft,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-bottomRight`]:{animationName:Zu},[`&${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-topLeft,\n          &${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-topRight`]:{animationName:ed},[`&${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-bottomLeft,\n          &${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-bottomRight`]:{animationName:Qu},[`${t}-panel > ${t}-time-panel`]:{paddingTop:R},[`${t}-ranges`]:{marginBottom:0,padding:`${R}px ${D}px`,overflow:\"hidden\",lineHeight:`${z-2*s-w/2}px`,textAlign:\"start\",listStyle:\"none\",display:\"flex\",justifyContent:\"space-between\",\"> li\":{display:\"inline-block\"},[`${t}-preset > ${n}-tag-blue`]:{color:E,background:T,borderColor:k,cursor:\"pointer\"},[`${t}-ok`]:{marginInlineStart:\"auto\"}},[`${t}-range-wrapper`]:{display:\"flex\",position:\"relative\"},[`${t}-range-arrow`]:h({position:\"absolute\",zIndex:1,display:\"none\",marginInlineStart:a*1.5,transition:`left ${M} ease-out`},tv(B,L,N,F,o)),[`${t}-panel-container`]:{overflow:\"hidden\",verticalAlign:\"top\",background:F,borderRadius:j,boxShadow:H,transition:`margin ${M}`,[`${t}-panel-layout`]:{display:\"flex\",flexWrap:\"nowrap\",alignItems:\"stretch\"},[`${t}-presets`]:{display:\"flex\",flexDirection:\"column\",minWidth:q,maxWidth:Q,ul:{height:0,flex:\"auto\",listStyle:\"none\",overflow:\"auto\",margin:0,padding:w,borderInlineEnd:`${s}px ${c} ${G}`,li:h(h({},Xt),{borderRadius:K,paddingInline:w,paddingBlock:(S-Math.round(r*P))/2,cursor:\"pointer\",transition:`all ${M}`,\"+ li\":{marginTop:C},\"&:hover\":{background:V}})}},[`${t}-panels`]:{display:\"inline-flex\",flexWrap:\"nowrap\",direction:\"ltr\",[`${t}-panel`]:{borderWidth:`0 0 ${s}px`},\"&:last-child\":{[`${t}-panel`]:{borderWidth:0}}},[`${t}-panel`]:{verticalAlign:\"top\",background:\"transparent\",borderRadius:0,borderWidth:0,[`${t}-content,\n            table`]:{textAlign:\"center\"},\"&-focused\":{borderColor:u}}}}),\"&-dropdown-range\":{padding:`${B*2/3}px 0`,\"&-hidden\":{display:\"none\"}},\"&-rtl\":{direction:\"rtl\",[`${t}-separator`]:{transform:\"rotate(180deg)\"},[`${t}-footer`]:{\"&-extra\":{direction:\"rtl\"}}}})},Uo(e,\"slide-up\"),Uo(e,\"slide-down\"),$a(e,\"move-up\"),$a(e,\"move-down\")]},Ex=e=>{const{componentCls:n,controlHeightLG:o,controlHeightSM:l,colorPrimary:r,paddingXXS:a}=e;return{pickerCellCls:`${n}-cell`,pickerCellInnerCls:`${n}-cell-inner`,pickerTextHeight:o,pickerPanelCellWidth:l*1.5,pickerPanelCellHeight:l,pickerDateHoverRangeBorderColor:new vt(r).lighten(20).toHexString(),pickerBasicCellHoverWithRangeColor:new vt(r).lighten(35).toHexString(),pickerPanelWithoutTimeCellHeight:o*1.65,pickerYearMonthCellWidth:o*1.5,pickerTimePanelColumnHeight:224,pickerTimePanelColumnWidth:o*1.4,pickerTimePanelCellHeight:28,pickerQuarterPanelContentHeight:o*1.4,pickerCellPaddingVertical:a,pickerCellBorderGap:2,pickerControlIconSize:7,pickerControlIconBorderWidth:1.5}},Mx=Xe(\"DatePicker\",e=>{const t=Le(kr(e),Ex(e));return[lN(t),oN(t),Ea(e,{focusElCls:`${e.componentCls}-focused`})]},e=>({presetsWidth:120,presetsMaxWidth:200,zIndexPopup:e.zIndexPopupBase+50})),rN=e=>{const{calendarCls:t,componentCls:n,calendarFullBg:o,calendarFullPanelBg:l,calendarItemActiveBg:r}=e;return{[t]:h(h(h({},Ox(e)),qe(e)),{background:o,\"&-rtl\":{direction:\"rtl\"},[`${t}-header`]:{display:\"flex\",justifyContent:\"flex-end\",padding:`${e.paddingSM}px 0`,[`${t}-year-select`]:{minWidth:e.yearControlWidth},[`${t}-month-select`]:{minWidth:e.monthControlWidth,marginInlineStart:e.marginXS},[`${t}-mode-switch`]:{marginInlineStart:e.marginXS}}}),[`${t} ${n}-panel`]:{background:l,border:0,borderTop:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,borderRadius:0,[`${n}-month-panel, ${n}-date-panel`]:{width:\"auto\"},[`${n}-body`]:{padding:`${e.paddingXS}px 0`},[`${n}-content`]:{width:\"100%\"}},[`${t}-mini`]:{borderRadius:e.borderRadiusLG,[`${t}-header`]:{paddingInlineEnd:e.paddingXS,paddingInlineStart:e.paddingXS},[`${n}-panel`]:{borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`},[`${n}-content`]:{height:e.miniContentHeight,th:{height:\"auto\",padding:0,lineHeight:`${e.weekHeight}px`}},[`${n}-cell::before`]:{pointerEvents:\"none\"}},[`${t}${t}-full`]:{[`${n}-panel`]:{display:\"block\",width:\"100%\",textAlign:\"end\",background:o,border:0,[`${n}-body`]:{\"th, td\":{padding:0},th:{height:\"auto\",paddingInlineEnd:e.paddingSM,paddingBottom:e.paddingXXS,lineHeight:`${e.weekHeight}px`}}},[`${n}-cell`]:{\"&::before\":{display:\"none\"},\"&:hover\":{[`${t}-date`]:{background:e.controlItemBgHover}},[`${t}-date-today::before`]:{display:\"none\"},[`&-in-view${n}-cell-selected`]:{[`${t}-date, ${t}-date-today`]:{background:r}},\"&-selected, &-selected:hover\":{[`${t}-date, ${t}-date-today`]:{[`${t}-date-value`]:{color:e.colorPrimary}}}},[`${t}-date`]:{display:\"block\",width:\"auto\",height:\"auto\",margin:`0 ${e.marginXS/2}px`,padding:`${e.paddingXS/2}px ${e.paddingXS}px 0`,border:0,borderTop:`${e.lineWidthBold}px ${e.lineType} ${e.colorSplit}`,borderRadius:0,transition:`background ${e.motionDurationSlow}`,\"&-value\":{lineHeight:`${e.dateValueHeight}px`,transition:`color ${e.motionDurationSlow}`},\"&-content\":{position:\"static\",width:\"auto\",height:e.dateContentHeight,overflowY:\"auto\",color:e.colorText,lineHeight:e.lineHeight,textAlign:\"start\"},\"&-today\":{borderColor:e.colorPrimary,[`${t}-date-value`]:{color:e.colorText}}}},[`@media only screen and (max-width: ${e.screenXS}px) `]:{[`${t}`]:{[`${t}-header`]:{display:\"block\",[`${t}-year-select`]:{width:\"50%\"},[`${t}-month-select`]:{width:`calc(50% - ${e.paddingXS}px)`},[`${t}-mode-switch`]:{width:\"100%\",marginTop:e.marginXS,marginInlineStart:0,\"> label\":{width:\"50%\",textAlign:\"center\"}}}}}}},aN=Xe(\"Calendar\",e=>{const t=`${e.componentCls}-calendar`,n=Le(kr(e),Ex(e),{calendarCls:t,pickerCellInnerCls:`${e.componentCls}-cell-inner`,calendarFullBg:e.colorBgContainer,calendarFullPanelBg:e.colorBgContainer,calendarItemActiveBg:e.controlItemBgActive,dateValueHeight:e.controlHeightSM,weekHeight:e.controlHeightSM*.75,dateContentHeight:(e.fontSizeSM*e.lineHeightSM+e.marginXS)*3+e.lineWidth*2});return[rN(n)]},{yearControlWidth:80,monthControlWidth:70,miniContentHeight:256});function iN(e){function t(r,a){return r&&a&&e.getYear(r)===e.getYear(a)}function n(r,a){return t(r,a)&&e.getMonth(r)===e.getMonth(a)}function o(r,a){return n(r,a)&&e.getDate(r)===e.getDate(a)}const l=ne({name:\"ACalendar\",inheritAttrs:!1,props:{prefixCls:String,locale:{type:Object,default:void 0},validRange:{type:Array,default:void 0},disabledDate:{type:Function,default:void 0},dateFullCellRender:{type:Function,default:void 0},dateCellRender:{type:Function,default:void 0},monthFullCellRender:{type:Function,default:void 0},monthCellRender:{type:Function,default:void 0},headerRender:{type:Function,default:void 0},value:{type:[Object,String],default:void 0},defaultValue:{type:[Object,String],default:void 0},mode:{type:String,default:void 0},fullscreen:{type:Boolean,default:void 0},onChange:{type:Function,default:void 0},\"onUpdate:value\":{type:Function,default:void 0},onPanelChange:{type:Function,default:void 0},onSelect:{type:Function,default:void 0},valueFormat:{type:String,default:void 0}},slots:Object,setup(r,a){let{emit:i,slots:s,attrs:c}=a;const u=r,{prefixCls:d,direction:p}=Te(\"picker\",u),[m,g]=aN(d),v=I(()=>`${d.value}-calendar`),y=T=>u.valueFormat?e.toString(T,u.valueFormat):T,b=I(()=>u.value?u.valueFormat?e.toDate(u.value,u.valueFormat):u.value:u.value===\"\"?void 0:u.value),S=I(()=>u.defaultValue?u.valueFormat?e.toDate(u.defaultValue,u.valueFormat):u.defaultValue:u.defaultValue===\"\"?void 0:u.defaultValue),[$,w]=Mt(()=>b.value||e.getNow(),{defaultValue:S.value,value:b}),[C,_]=Mt(\"month\",{value:Ve(u,\"mode\")}),x=I(()=>C.value===\"year\"?\"month\":\"date\"),P=I(()=>T=>{var k;return(u.validRange?e.isAfter(u.validRange[0],T)||e.isAfter(T,u.validRange[1]):!1)||!!(!((k=u.disabledDate)===null||k===void 0)&&k.call(u,T))}),E=(T,k)=>{i(\"panelChange\",y(T),k)},M=T=>{if(w(T),!o(T,$.value)){(x.value===\"date\"&&!n(T,$.value)||x.value===\"month\"&&!t(T,$.value))&&E(T,C.value);const k=y(T);i(\"update:value\",k),i(\"change\",k)}},O=T=>{_(T),E($.value,T)},R=(T,k)=>{M(T),i(\"select\",y(T),{source:k})},D=I(()=>{const{locale:T}=u,k=h(h({},mi),T);return k.lang=h(h({},k.lang),(T||{}).lang),k}),[z]=$o(\"Calendar\",D);return()=>{const T=e.getNow(),{dateFullCellRender:k=s?.dateFullCellRender,dateCellRender:B=s?.dateCellRender,monthFullCellRender:L=s?.monthFullCellRender,monthCellRender:N=s?.monthCellRender,headerRender:F=s?.headerRender,fullscreen:j=!0,validRange:H}=u,K=V=>{let{current:q}=V;return k?k({current:q}):f(\"div\",{class:re(`${d.value}-cell-inner`,`${v.value}-date`,{[`${v.value}-date-today`]:o(T,q)})},[f(\"div\",{class:`${v.value}-date-value`},[String(e.getDate(q)).padStart(2,\"0\")]),f(\"div\",{class:`${v.value}-date-content`},[B&&B({current:q})])])},G=(V,q)=>{let{current:Q}=V;if(L)return L({current:Q});const oe=q.shortMonths||e.locale.getShortMonths(q.locale);return f(\"div\",{class:re(`${d.value}-cell-inner`,`${v.value}-date`,{[`${v.value}-date-today`]:n(T,Q)})},[f(\"div\",{class:`${v.value}-date-value`},[oe[e.getMonth(Q)]]),f(\"div\",{class:`${v.value}-date-content`},[N&&N({current:Q})])])};return m(f(\"div\",A(A({},c),{},{class:re(v.value,{[`${v.value}-full`]:j,[`${v.value}-mini`]:!j,[`${v.value}-rtl`]:p.value===\"rtl\"},c.class,g.value)}),[F?F({value:$.value,type:C.value,onChange:V=>{R(V,\"customize\")},onTypeChange:O}):f(Yk,{prefixCls:v.value,value:$.value,generateConfig:e,mode:C.value,fullscreen:j,locale:z.value.lang,validRange:H,onChange:R,onModeChange:O},null),f(cg,{value:$.value,prefixCls:d.value,locale:z.value.lang,generateConfig:e,dateRender:K,monthCellRender:V=>G(V,z.value.lang),onSelect:V=>{R(V,x.value)},mode:x.value,picker:x.value,disabledDate:P.value,hideHeader:!0},null)]))}}});return l.install=function(r){return r.component(l.name,l),r},l}const sN=iN(Vv),cN=Dt(sN);function uN(e){const t=ee(),n=ee(!1);function o(){for(var l=arguments.length,r=new Array(l),a=0;a<l;a++)r[a]=arguments[a];n.value||(Qe.cancel(t.value),t.value=Qe(()=>{e(...r)}))}return ot(()=>{n.value=!0,Qe.cancel(t.value)}),o}function dN(e){const t=ee([]),n=ee(typeof e==\"function\"?e():e),o=uN(()=>{let r=n.value;t.value.forEach(a=>{r=a(r)}),t.value=[],n.value=r});function l(r){t.value.push(r),o()}return[n,l]}const fN=ne({compatConfig:{MODE:3},name:\"TabNode\",props:{id:{type:String},prefixCls:{type:String},tab:{type:Object},active:{type:Boolean},closable:{type:Boolean},editable:{type:Object},onClick:{type:Function},onResize:{type:Function},renderWrapper:{type:Function},removeAriaLabel:{type:String},onFocus:{type:Function}},emits:[\"click\",\"resize\",\"remove\",\"focus\"],setup(e,t){let{expose:n,attrs:o}=t;const l=Z();function r(s){var c;!((c=e.tab)===null||c===void 0)&&c.disabled||e.onClick(s)}n({domRef:l});function a(s){var c;s.preventDefault(),s.stopPropagation(),e.editable.onEdit(\"remove\",{key:(c=e.tab)===null||c===void 0?void 0:c.key,event:s})}const i=I(()=>{var s;return e.editable&&e.closable!==!1&&!(!((s=e.tab)===null||s===void 0)&&s.disabled)});return()=>{var s;const{prefixCls:c,id:u,active:d,tab:{key:p,tab:m,disabled:g,closeIcon:v},renderWrapper:y,removeAriaLabel:b,editable:S,onFocus:$}=e,w=`${c}-tab`,C=f(\"div\",{key:p,ref:l,class:re(w,{[`${w}-with-remove`]:i.value,[`${w}-active`]:d,[`${w}-disabled`]:g}),style:o.style,onClick:r},[f(\"div\",{role:\"tab\",\"aria-selected\":d,id:u&&`${u}-tab-${p}`,class:`${w}-btn`,\"aria-controls\":u&&`${u}-panel-${p}`,\"aria-disabled\":g,tabindex:g?null:0,onClick:_=>{_.stopPropagation(),r(_)},onKeydown:_=>{[we.SPACE,we.ENTER].includes(_.which)&&(_.preventDefault(),r(_))},onFocus:$},[typeof m==\"function\"?m():m]),i.value&&f(\"button\",{type:\"button\",\"aria-label\":b||\"remove\",tabindex:0,class:`${w}-remove`,onClick:_=>{_.stopPropagation(),a(_)}},[v?.()||((s=S.removeIcon)===null||s===void 0?void 0:s.call(S))||\"×\"])]);return y?y(C):C}}}),Nb={width:0,height:0,left:0,top:0};function pN(e,t){const n=Z(new Map);return ze(()=>{var o,l;const r=new Map,a=e.value,i=t.value.get((o=a[0])===null||o===void 0?void 0:o.key)||Nb,s=i.left+i.width;for(let c=0;c<a.length;c+=1){const{key:u}=a[c];let d=t.value.get(u);d||(d=t.value.get((l=a[c-1])===null||l===void 0?void 0:l.key)||Nb);const p=r.get(u)||h({},d);p.right=s-p.left-p.width,r.set(u,p)}n.value=new Map(r)}),n}const Ax=ne({compatConfig:{MODE:3},name:\"AddButton\",inheritAttrs:!1,props:{prefixCls:String,editable:{type:Object},locale:{type:Object,default:void 0}},setup(e,t){let{expose:n,attrs:o}=t;const l=Z();return n({domRef:l}),()=>{const{prefixCls:r,editable:a,locale:i}=e;return!a||a.showAdd===!1?null:f(\"button\",{ref:l,type:\"button\",class:`${r}-nav-add`,style:o.style,\"aria-label\":i?.addAriaLabel||\"Add tab\",onClick:s=>{a.onEdit(\"add\",{event:s})}},[a.addIcon?a.addIcon():\"+\"])}}}),mN={prefixCls:{type:String},id:{type:String},tabs:{type:Object},rtl:{type:Boolean},tabBarGutter:{type:Number},activeKey:{type:[String,Number]},mobile:{type:Boolean},moreIcon:W.any,moreTransitionName:{type:String},editable:{type:Object},locale:{type:Object,default:void 0},removeAriaLabel:String,onTabClick:{type:Function},popupClassName:String,getPopupContainer:de()},vN=ne({compatConfig:{MODE:3},name:\"OperationNode\",inheritAttrs:!1,props:mN,emits:[\"tabClick\"],slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const[l,r]=yt(!1),[a,i]=yt(null),s=m=>{const g=e.tabs.filter(b=>!b.disabled);let v=g.findIndex(b=>b.key===a.value)||0;const y=g.length;for(let b=0;b<y;b+=1){v=(v+m+y)%y;const S=g[v];if(!S.disabled){i(S.key);return}}},c=m=>{const{which:g}=m;if(!l.value){[we.DOWN,we.SPACE,we.ENTER].includes(g)&&(r(!0),m.preventDefault());return}switch(g){case we.UP:s(-1),m.preventDefault();break;case we.DOWN:s(1),m.preventDefault();break;case we.ESC:r(!1);break;case we.SPACE:case we.ENTER:a.value!==null&&e.onTabClick(a.value,m);break}},u=I(()=>`${e.id}-more-popup`),d=I(()=>a.value!==null?`${u.value}-${a.value}`:null),p=(m,g)=>{m.preventDefault(),m.stopPropagation(),e.editable.onEdit(\"remove\",{key:g,event:m})};return Be(()=>{pe(a,()=>{const m=document.getElementById(d.value);m&&m.scrollIntoView&&m.scrollIntoView(!1)},{flush:\"post\",immediate:!0})}),pe(l,()=>{l.value||i(null)}),zv({}),()=>{var m;const{prefixCls:g,id:v,tabs:y,locale:b,mobile:S,moreIcon:$=((m=o.moreIcon)===null||m===void 0?void 0:m.call(o))||f(Pm,null,null),moreTransitionName:w,editable:C,tabBarGutter:_,rtl:x,onTabClick:P,popupClassName:E}=e;if(!y.length)return null;const M=`${g}-dropdown`,O=b?.dropdownAriaLabel,R={[x?\"marginRight\":\"marginLeft\"]:_};y.length||(R.visibility=\"hidden\",R.order=1);const D=re({[`${M}-rtl`]:x,[`${E}`]:!0}),z=S?null:f(E1,{prefixCls:M,trigger:[\"hover\"],visible:l.value,transitionName:w,onVisibleChange:r,overlayClassName:D,mouseEnterDelay:.1,mouseLeaveDelay:.1,getPopupContainer:e.getPopupContainer},{overlay:()=>f(Ht,{onClick:T=>{let{key:k,domEvent:B}=T;P(k,B),r(!1)},id:u.value,tabindex:-1,role:\"listbox\",\"aria-activedescendant\":d.value,selectedKeys:[a.value],\"aria-label\":O!==void 0?O:\"expanded dropdown\"},{default:()=>[y.map(T=>{var k,B;const L=C&&T.closable!==!1&&!T.disabled;return f(Eo,{key:T.key,id:`${u.value}-${T.key}`,role:\"option\",\"aria-controls\":v&&`${v}-panel-${T.key}`,disabled:T.disabled},{default:()=>[f(\"span\",null,[typeof T.tab==\"function\"?T.tab():T.tab]),L&&f(\"button\",{type:\"button\",\"aria-label\":e.removeAriaLabel||\"remove\",tabindex:0,class:`${M}-menu-item-remove`,onClick:N=>{N.stopPropagation(),p(N,T.key)}},[((k=T.closeIcon)===null||k===void 0?void 0:k.call(T))||((B=C.removeIcon)===null||B===void 0?void 0:B.call(C))||\"×\"])]})})]}),default:()=>f(\"button\",{type:\"button\",class:`${g}-nav-more`,style:R,tabindex:-1,\"aria-hidden\":\"true\",\"aria-haspopup\":\"listbox\",\"aria-controls\":u.value,id:`${v}-more`,\"aria-expanded\":l.value,onKeydown:c},[$])});return f(\"div\",{class:re(`${g}-nav-operations`,n.class),style:n.style},[z,f(Ax,{prefixCls:g,locale:b,editable:C},null)])}}}),Dx=Symbol(\"tabsContextKey\"),gN=e=>{et(Dx,e)},Rx=()=>nt(Dx,{tabs:Z([]),prefixCls:Z()}),hN=.1,Bb=.01,nc=20,Lb=Math.pow(.995,nc);function bN(e,t){const[n,o]=yt(),[l,r]=yt(0),[a,i]=yt(0),[s,c]=yt(),u=Z();function d(C){const{screenX:_,screenY:x}=C.touches[0];o({x:_,y:x}),clearInterval(u.value)}function p(C){if(!n.value)return;C.preventDefault();const{screenX:_,screenY:x}=C.touches[0],P=_-n.value.x,E=x-n.value.y;t(P,E),o({x:_,y:x});const M=Date.now();i(M-l.value),r(M),c({x:P,y:E})}function m(){if(!n.value)return;const C=s.value;if(o(null),c(null),C){const _=C.x/a.value,x=C.y/a.value,P=Math.abs(_),E=Math.abs(x);if(Math.max(P,E)<hN)return;let M=_,O=x;u.value=setInterval(()=>{if(Math.abs(M)<Bb&&Math.abs(O)<Bb){clearInterval(u.value);return}M*=Lb,O*=Lb,t(M*nc,O*nc)},nc)}}const g=Z();function v(C){const{deltaX:_,deltaY:x}=C;let P=0;const E=Math.abs(_),M=Math.abs(x);E===M?P=g.value===\"x\"?_:x:E>M?(P=_,g.value=\"x\"):(P=x,g.value=\"y\"),t(-P,-P)&&C.preventDefault()}const y=Z({onTouchStart:d,onTouchMove:p,onTouchEnd:m,onWheel:v});function b(C){y.value.onTouchStart(C)}function S(C){y.value.onTouchMove(C)}function $(C){y.value.onTouchEnd(C)}function w(C){y.value.onWheel(C)}Be(()=>{var C,_;document.addEventListener(\"touchmove\",S,{passive:!1}),document.addEventListener(\"touchend\",$,{passive:!1}),(C=e.value)===null||C===void 0||C.addEventListener(\"touchstart\",b,{passive:!1}),(_=e.value)===null||_===void 0||_.addEventListener(\"wheel\",w,{passive:!1})}),ot(()=>{document.removeEventListener(\"touchmove\",S),document.removeEventListener(\"touchend\",$)})}function Fb(e,t){const n=Z(e);function o(l){const r=typeof l==\"function\"?l(n.value):l;r!==n.value&&t(r,n.value),n.value=r}return[n,o]}const gg=()=>{const e=Z(new Map),t=n=>o=>{e.value.set(n,o)};return Tm(()=>{e.value=new Map}),[t,e]},zb={width:0,height:0,left:0,top:0,right:0},yN=()=>({id:{type:String},tabPosition:{type:String},activeKey:{type:[String,Number]},rtl:{type:Boolean},animated:De(),editable:De(),moreIcon:W.any,moreTransitionName:{type:String},mobile:{type:Boolean},tabBarGutter:{type:Number},renderTabBar:{type:Function},locale:De(),popupClassName:String,getPopupContainer:de(),onTabClick:{type:Function},onTabScroll:{type:Function}}),SN=(e,t)=>{const{offsetWidth:n,offsetHeight:o,offsetTop:l,offsetLeft:r}=e,{width:a,height:i,x:s,y:c}=e.getBoundingClientRect();return Math.abs(a-n)<1?[a,i,s-t.x,c-t.y]:[n,o,r,l]},Hb=ne({compatConfig:{MODE:3},name:\"TabNavList\",inheritAttrs:!1,props:yN(),slots:Object,emits:[\"tabClick\",\"tabScroll\"],setup(e,t){let{attrs:n,slots:o}=t;const{tabs:l,prefixCls:r}=Rx(),a=ee(),i=ee(),s=ee(),c=ee(),[u,d]=gg(),p=I(()=>e.tabPosition===\"top\"||e.tabPosition===\"bottom\"),[m,g]=Fb(0,(X,U)=>{p.value&&e.onTabScroll&&e.onTabScroll({direction:X>U?\"left\":\"right\"})}),[v,y]=Fb(0,(X,U)=>{!p.value&&e.onTabScroll&&e.onTabScroll({direction:X>U?\"top\":\"bottom\"})}),[b,S]=yt(0),[$,w]=yt(0),[C,_]=yt(null),[x,P]=yt(null),[E,M]=yt(0),[O,R]=yt(0),[D,z]=dN(new Map),T=pN(l,D),k=I(()=>`${r.value}-nav-operations-hidden`),B=ee(0),L=ee(0);ze(()=>{p.value?e.rtl?(B.value=0,L.value=Math.max(0,b.value-C.value)):(B.value=Math.min(0,C.value-b.value),L.value=0):(B.value=Math.min(0,x.value-$.value),L.value=0)});const N=X=>X<B.value?B.value:X>L.value?L.value:X,F=ee(),[j,H]=yt(),K=()=>{H(Date.now())},G=()=>{clearTimeout(F.value)},V=(X,U)=>{X(ie=>N(ie+U))};bN(a,(X,U)=>{if(p.value){if(C.value>=b.value)return!1;V(g,X)}else{if(x.value>=$.value)return!1;V(y,U)}return G(),K(),!0}),pe(j,()=>{G(),j.value&&(F.value=setTimeout(()=>{H(0)},100))});const q=function(){let X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activeKey;const U=T.value.get(X)||{width:0,height:0,left:0,right:0,top:0};if(p.value){let ie=m.value;e.rtl?U.right<m.value?ie=U.right:U.right+U.width>m.value+C.value&&(ie=U.right+U.width-C.value):U.left<-m.value?ie=-U.left:U.left+U.width>-m.value+C.value&&(ie=-(U.left+U.width-C.value)),y(0),g(N(ie))}else{let ie=v.value;U.top<-v.value?ie=-U.top:U.top+U.height>-v.value+x.value&&(ie=-(U.top+U.height-x.value)),g(0),y(N(ie))}},Q=ee(0),oe=ee(0);ze(()=>{let X,U,ie,ve,me,he;const se=T.value;[\"top\",\"bottom\"].includes(e.tabPosition)?(X=\"width\",ve=C.value,me=b.value,he=E.value,U=e.rtl?\"right\":\"left\",ie=Math.abs(m.value)):(X=\"height\",ve=x.value,me=b.value,he=O.value,U=\"top\",ie=-v.value);let te=ve;me+he>ve&&me<ve&&(te=ve-he);const ae=l.value;if(!ae.length)return[Q.value,oe.value]=[0,0];const fe=ae.length;let Pe=fe;for(let Re=0;Re<fe;Re+=1){const $e=se.get(ae[Re].key)||zb;if($e[U]+$e[X]>ie+te){Pe=Re-1;break}}let Oe=0;for(let Re=fe-1;Re>=0;Re-=1)if((se.get(ae[Re].key)||zb)[U]<ie){Oe=Re+1;break}return[Q.value,oe.value]=[Oe,Pe]});const le=()=>{z(()=>{var X;const U=new Map,ie=(X=i.value)===null||X===void 0?void 0:X.getBoundingClientRect();return l.value.forEach(ve=>{let{key:me}=ve;const he=d.value.get(me),se=he?.$el||he;if(se){const[te,ae,fe,Pe]=SN(se,ie);U.set(me,{width:te,height:ae,left:fe,top:Pe})}}),U})};pe(()=>l.value.map(X=>X.key).join(\"%%\"),()=>{le()},{flush:\"post\"});const Y=()=>{var X,U,ie,ve,me;const he=((X=a.value)===null||X===void 0?void 0:X.offsetWidth)||0,se=((U=a.value)===null||U===void 0?void 0:U.offsetHeight)||0,te=((ie=c.value)===null||ie===void 0?void 0:ie.$el)||{},ae=te.offsetWidth||0,fe=te.offsetHeight||0;_(he),P(se),M(ae),R(fe);const Pe=(((ve=i.value)===null||ve===void 0?void 0:ve.offsetWidth)||0)-ae,Oe=(((me=i.value)===null||me===void 0?void 0:me.offsetHeight)||0)-fe;S(Pe),w(Oe),le()},J=I(()=>[...l.value.slice(0,Q.value),...l.value.slice(oe.value+1)]),[ce,ue]=yt(),be=I(()=>T.value.get(e.activeKey)),Ce=ee(),ge=()=>{Qe.cancel(Ce.value)};pe([be,p,()=>e.rtl],()=>{const X={};be.value&&(p.value?(e.rtl?X.right=or(be.value.right):X.left=or(be.value.left),X.width=or(be.value.width)):(X.top=or(be.value.top),X.height=or(be.value.height))),ge(),Ce.value=Qe(()=>{ue(X)})}),pe([()=>e.activeKey,be,T,p],()=>{q()},{flush:\"post\"}),pe([()=>e.rtl,()=>e.tabBarGutter,()=>e.activeKey,()=>l.value],()=>{Y()},{flush:\"post\"});const Se=X=>{let{position:U,prefixCls:ie,extra:ve}=X;if(!ve)return null;const me=ve?.({position:U});return me?f(\"div\",{class:`${ie}-extra-content`},[me]):null};return ot(()=>{G(),ge()}),()=>{const{id:X,animated:U,activeKey:ie,rtl:ve,editable:me,locale:he,tabPosition:se,tabBarGutter:te,onTabClick:ae}=e,{class:fe,style:Pe}=n,Oe=r.value,Re=!!J.value.length,$e=`${Oe}-nav-wrap`;let xe,_e,Me,je;p.value?ve?(_e=m.value>0,xe=m.value+C.value<b.value):(xe=m.value<0,_e=-m.value+C.value<b.value):(Me=v.value<0,je=-v.value+x.value<$.value);const Ae={};se===\"top\"||se===\"bottom\"?Ae[ve?\"marginRight\":\"marginLeft\"]=typeof te==\"number\"?`${te}px`:te:Ae.marginTop=typeof te==\"number\"?`${te}px`:te;const We=l.value.map((at,pt)=>{const{key:st}=at;return f(fN,{id:X,prefixCls:Oe,key:st,tab:at,style:pt===0?void 0:Ae,closable:at.closable,editable:me,active:st===ie,removeAriaLabel:he?.removeAriaLabel,ref:u(st),onClick:mt=>{ae(st,mt)},onFocus:()=>{q(st),K(),a.value&&(ve||(a.value.scrollLeft=0),a.value.scrollTop=0)}},o)});return f(\"div\",{role:\"tablist\",class:re(`${Oe}-nav`,fe),style:Pe,onKeydown:()=>{K()}},[f(Se,{position:\"left\",prefixCls:Oe,extra:o.leftExtra},null),f(bo,{onResize:Y},{default:()=>[f(\"div\",{class:re($e,{[`${$e}-ping-left`]:xe,[`${$e}-ping-right`]:_e,[`${$e}-ping-top`]:Me,[`${$e}-ping-bottom`]:je}),ref:a},[f(bo,{onResize:Y},{default:()=>[f(\"div\",{ref:i,class:`${Oe}-nav-list`,style:{transform:`translate(${m.value}px, ${v.value}px)`,transition:j.value?\"none\":void 0}},[We,f(Ax,{ref:c,prefixCls:Oe,locale:he,editable:me,style:h(h({},We.length===0?void 0:Ae),{visibility:Re?\"hidden\":null})},null),f(\"div\",{class:re(`${Oe}-ink-bar`,{[`${Oe}-ink-bar-animated`]:U.inkBar}),style:ce.value},null)])]})])]}),f(vN,A(A({},e),{},{removeAriaLabel:he?.removeAriaLabel,ref:s,prefixCls:Oe,tabs:J.value,class:!Re&&k.value}),c$(o,[\"moreIcon\"])),f(Se,{position:\"right\",prefixCls:Oe,extra:o.rightExtra},null),f(Se,{position:\"right\",prefixCls:Oe,extra:o.tabBarExtraContent},null)])}}}),$N=ne({compatConfig:{MODE:3},name:\"TabPanelList\",inheritAttrs:!1,props:{activeKey:{type:[String,Number]},id:{type:String},rtl:{type:Boolean},animated:{type:Object,default:void 0},tabPosition:{type:String},destroyInactiveTabPane:{type:Boolean}},setup(e){const{tabs:t,prefixCls:n}=Rx();return()=>{const{id:o,activeKey:l,animated:r,tabPosition:a,rtl:i,destroyInactiveTabPane:s}=e,c=r.tabPane,u=n.value,d=t.value.findIndex(p=>p.key===l);return f(\"div\",{class:`${u}-content-holder`},[f(\"div\",{class:[`${u}-content`,`${u}-content-${a}`,{[`${u}-content-animated`]:c}],style:d&&c?{[i?\"marginRight\":\"marginLeft\"]:`-${d}00%`}:null},[t.value.map(p=>ft(p.node,{key:p.key,prefixCls:u,tabKey:p.key,id:o,animated:c,active:p.key===l,destroyInactiveTabPane:s}))])])}}}),CN=e=>{const{componentCls:t,motionDurationSlow:n}=e;return[{[t]:{[`${t}-switch`]:{\"&-appear, &-enter\":{transition:\"none\",\"&-start\":{opacity:0},\"&-active\":{opacity:1,transition:`opacity ${n}`}},\"&-leave\":{position:\"absolute\",transition:\"none\",inset:0,\"&-start\":{opacity:1},\"&-active\":{opacity:0,transition:`opacity ${n}`}}}}},[Uo(e,\"slide-up\"),Uo(e,\"slide-down\")]]},xN=e=>{const{componentCls:t,tabsCardHorizontalPadding:n,tabsCardHeadBackground:o,tabsCardGutter:l,colorSplit:r}=e;return{[`${t}-card`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{margin:0,padding:n,background:o,border:`${e.lineWidth}px ${e.lineType} ${r}`,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOut}`},[`${t}-tab-active`]:{color:e.colorPrimary,background:e.colorBgContainer},[`${t}-ink-bar`]:{visibility:\"hidden\"}},[`&${t}-top, &${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab + ${t}-tab`]:{marginLeft:{_skip_check_:!0,value:`${l}px`}}}},[`&${t}-top`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`},[`${t}-tab-active`]:{borderBottomColor:e.colorBgContainer}}},[`&${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`},[`${t}-tab-active`]:{borderTopColor:e.colorBgContainer}}},[`&${t}-left, &${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab + ${t}-tab`]:{marginTop:`${l}px`}}},[`&${t}-left`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`${e.borderRadiusLG}px 0 0 ${e.borderRadiusLG}px`}},[`${t}-tab-active`]:{borderRightColor:{_skip_check_:!0,value:e.colorBgContainer}}}},[`&${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px 0`}},[`${t}-tab-active`]:{borderLeftColor:{_skip_check_:!0,value:e.colorBgContainer}}}}}}},wN=e=>{const{componentCls:t,tabsHoverColor:n,dropdownEdgeChildVerticalPadding:o}=e;return{[`${t}-dropdown`]:h(h({},qe(e)),{position:\"absolute\",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:e.zIndexPopup,display:\"block\",\"&-hidden\":{display:\"none\"},[`${t}-dropdown-menu`]:{maxHeight:e.tabsDropdownHeight,margin:0,padding:`${o}px 0`,overflowX:\"hidden\",overflowY:\"auto\",textAlign:{_skip_check_:!0,value:\"left\"},listStyleType:\"none\",backgroundColor:e.colorBgContainer,backgroundClip:\"padding-box\",borderRadius:e.borderRadiusLG,outline:\"none\",boxShadow:e.boxShadowSecondary,\"&-item\":h(h({},Xt),{display:\"flex\",alignItems:\"center\",minWidth:e.tabsDropdownWidth,margin:0,padding:`${e.paddingXXS}px ${e.paddingSM}px`,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,lineHeight:e.lineHeight,cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,\"> span\":{flex:1,whiteSpace:\"nowrap\"},\"&-remove\":{flex:\"none\",marginLeft:{_skip_check_:!0,value:e.marginSM},color:e.colorTextDescription,fontSize:e.fontSizeSM,background:\"transparent\",border:0,cursor:\"pointer\",\"&:hover\":{color:n}},\"&:hover\":{background:e.controlItemBgHover},\"&-disabled\":{\"&, &:hover\":{color:e.colorTextDisabled,background:\"transparent\",cursor:\"not-allowed\"}}})}})}},_N=e=>{const{componentCls:t,margin:n,colorSplit:o}=e;return{[`${t}-top, ${t}-bottom`]:{flexDirection:\"column\",[`> ${t}-nav, > div > ${t}-nav`]:{margin:`0 0 ${n}px 0`,\"&::before\":{position:\"absolute\",right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},borderBottom:`${e.lineWidth}px ${e.lineType} ${o}`,content:\"''\"},[`${t}-ink-bar`]:{height:e.lineWidthBold,\"&-animated\":{transition:`width ${e.motionDurationSlow}, left ${e.motionDurationSlow},\n            right ${e.motionDurationSlow}`}},[`${t}-nav-wrap`]:{\"&::before, &::after\":{top:0,bottom:0,width:e.controlHeight},\"&::before\":{left:{_skip_check_:!0,value:0},boxShadow:e.boxShadowTabsOverflowLeft},\"&::after\":{right:{_skip_check_:!0,value:0},boxShadow:e.boxShadowTabsOverflowRight},[`&${t}-nav-wrap-ping-left::before`]:{opacity:1},[`&${t}-nav-wrap-ping-right::after`]:{opacity:1}}}},[`${t}-top`]:{[`> ${t}-nav,\n        > div > ${t}-nav`]:{\"&::before\":{bottom:0},[`${t}-ink-bar`]:{bottom:0}}},[`${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{order:1,marginTop:`${n}px`,marginBottom:0,\"&::before\":{top:0},[`${t}-ink-bar`]:{top:0}},[`> ${t}-content-holder, > div > ${t}-content-holder`]:{order:0}},[`${t}-left, ${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{flexDirection:\"column\",minWidth:e.controlHeight*1.25,[`${t}-tab`]:{padding:`${e.paddingXS}px ${e.paddingLG}px`,textAlign:\"center\"},[`${t}-tab + ${t}-tab`]:{margin:`${e.margin}px 0 0 0`},[`${t}-nav-wrap`]:{flexDirection:\"column\",\"&::before, &::after\":{right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},height:e.controlHeight},\"&::before\":{top:0,boxShadow:e.boxShadowTabsOverflowTop},\"&::after\":{bottom:0,boxShadow:e.boxShadowTabsOverflowBottom},[`&${t}-nav-wrap-ping-top::before`]:{opacity:1},[`&${t}-nav-wrap-ping-bottom::after`]:{opacity:1}},[`${t}-ink-bar`]:{width:e.lineWidthBold,\"&-animated\":{transition:`height ${e.motionDurationSlow}, top ${e.motionDurationSlow}`}},[`${t}-nav-list, ${t}-nav-operations`]:{flex:\"1 0 auto\",flexDirection:\"column\"}}},[`${t}-left`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-ink-bar`]:{right:{_skip_check_:!0,value:0}}},[`> ${t}-content-holder, > div > ${t}-content-holder`]:{marginLeft:{_skip_check_:!0,value:`-${e.lineWidth}px`},borderLeft:{_skip_check_:!0,value:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},[`> ${t}-content > ${t}-tabpane`]:{paddingLeft:{_skip_check_:!0,value:e.paddingLG}}}},[`${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{order:1,[`${t}-ink-bar`]:{left:{_skip_check_:!0,value:0}}},[`> ${t}-content-holder, > div > ${t}-content-holder`]:{order:0,marginRight:{_skip_check_:!0,value:-e.lineWidth},borderRight:{_skip_check_:!0,value:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},[`> ${t}-content > ${t}-tabpane`]:{paddingRight:{_skip_check_:!0,value:e.paddingLG}}}}}},IN=e=>{const{componentCls:t,padding:n}=e;return{[t]:{\"&-small\":{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${e.paddingXS}px 0`,fontSize:e.fontSize}}},\"&-large\":{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${n}px 0`,fontSize:e.fontSizeLG}}}},[`${t}-card`]:{[`&${t}-small`]:{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${e.paddingXXS*1.5}px ${n}px`}},[`&${t}-bottom`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:`0 0 ${e.borderRadius}px ${e.borderRadius}px`}},[`&${t}-top`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:`${e.borderRadius}px ${e.borderRadius}px 0 0`}},[`&${t}-right`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`0 ${e.borderRadius}px ${e.borderRadius}px 0`}}},[`&${t}-left`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`${e.borderRadius}px 0 0 ${e.borderRadius}px`}}}},[`&${t}-large`]:{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${e.paddingXS}px ${n}px ${e.paddingXXS*1.5}px`}}}}}},PN=e=>{const{componentCls:t,tabsActiveColor:n,tabsHoverColor:o,iconCls:l,tabsHorizontalGutter:r}=e,a=`${t}-tab`;return{[a]:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",padding:`${e.paddingSM}px 0`,fontSize:`${e.fontSize}px`,background:\"transparent\",border:0,outline:\"none\",cursor:\"pointer\",\"&-btn, &-remove\":h({\"&:focus:not(:focus-visible), &:active\":{color:n}},pl(e)),\"&-btn\":{outline:\"none\",transition:\"all 0.3s\"},\"&-remove\":{flex:\"none\",marginRight:{_skip_check_:!0,value:-e.marginXXS},marginLeft:{_skip_check_:!0,value:e.marginXS},color:e.colorTextDescription,fontSize:e.fontSizeSM,background:\"transparent\",border:\"none\",outline:\"none\",cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,\"&:hover\":{color:e.colorTextHeading}},\"&:hover\":{color:o},[`&${a}-active ${a}-btn`]:{color:e.colorPrimary,textShadow:e.tabsActiveTextShadow},[`&${a}-disabled`]:{color:e.colorTextDisabled,cursor:\"not-allowed\"},[`&${a}-disabled ${a}-btn, &${a}-disabled ${t}-remove`]:{\"&:focus, &:active\":{color:e.colorTextDisabled}},[`& ${a}-remove ${l}`]:{margin:0},[l]:{marginRight:{_skip_check_:!0,value:e.marginSM}}},[`${a} + ${a}`]:{margin:{_skip_check_:!0,value:`0 0 0 ${r}px`}}}},TN=e=>{const{componentCls:t,tabsHorizontalGutter:n,iconCls:o,tabsCardGutter:l}=e;return{[`${t}-rtl`]:{direction:\"rtl\",[`${t}-nav`]:{[`${t}-tab`]:{margin:{_skip_check_:!0,value:`0 0 0 ${n}px`},[`${t}-tab:last-of-type`]:{marginLeft:{_skip_check_:!0,value:0}},[o]:{marginRight:{_skip_check_:!0,value:0},marginLeft:{_skip_check_:!0,value:`${e.marginSM}px`}},[`${t}-tab-remove`]:{marginRight:{_skip_check_:!0,value:`${e.marginXS}px`},marginLeft:{_skip_check_:!0,value:`-${e.marginXXS}px`},[o]:{margin:0}}}},[`&${t}-left`]:{[`> ${t}-nav`]:{order:1},[`> ${t}-content-holder`]:{order:0}},[`&${t}-right`]:{[`> ${t}-nav`]:{order:0},[`> ${t}-content-holder`]:{order:1}},[`&${t}-card${t}-top, &${t}-card${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab + ${t}-tab`]:{marginRight:{_skip_check_:!0,value:`${l}px`},marginLeft:{_skip_check_:!0,value:0}}}}},[`${t}-dropdown-rtl`]:{direction:\"rtl\"},[`${t}-menu-item`]:{[`${t}-dropdown-rtl`]:{textAlign:{_skip_check_:!0,value:\"right\"}}}}},ON=e=>{const{componentCls:t,tabsCardHorizontalPadding:n,tabsCardHeight:o,tabsCardGutter:l,tabsHoverColor:r,tabsActiveColor:a,colorSplit:i}=e;return{[t]:h(h(h(h({},qe(e)),{display:\"flex\",[`> ${t}-nav, > div > ${t}-nav`]:{position:\"relative\",display:\"flex\",flex:\"none\",alignItems:\"center\",[`${t}-nav-wrap`]:{position:\"relative\",display:\"flex\",flex:\"auto\",alignSelf:\"stretch\",overflow:\"hidden\",whiteSpace:\"nowrap\",transform:\"translate(0)\",\"&::before, &::after\":{position:\"absolute\",zIndex:1,opacity:0,transition:`opacity ${e.motionDurationSlow}`,content:\"''\",pointerEvents:\"none\"}},[`${t}-nav-list`]:{position:\"relative\",display:\"flex\",transition:`opacity ${e.motionDurationSlow}`},[`${t}-nav-operations`]:{display:\"flex\",alignSelf:\"stretch\"},[`${t}-nav-operations-hidden`]:{position:\"absolute\",visibility:\"hidden\",pointerEvents:\"none\"},[`${t}-nav-more`]:{position:\"relative\",padding:n,background:\"transparent\",border:0,\"&::after\":{position:\"absolute\",right:{_skip_check_:!0,value:0},bottom:0,left:{_skip_check_:!0,value:0},height:e.controlHeightLG/8,transform:\"translateY(100%)\",content:\"''\"}},[`${t}-nav-add`]:h({minWidth:`${o}px`,marginLeft:{_skip_check_:!0,value:`${l}px`},padding:`0 ${e.paddingXS}px`,background:\"transparent\",border:`${e.lineWidth}px ${e.lineType} ${i}`,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`,outline:\"none\",cursor:\"pointer\",color:e.colorText,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOut}`,\"&:hover\":{color:r},\"&:active, &:focus:not(:focus-visible)\":{color:a}},pl(e))},[`${t}-extra-content`]:{flex:\"none\"},[`${t}-ink-bar`]:{position:\"absolute\",background:e.colorPrimary,pointerEvents:\"none\"}}),PN(e)),{[`${t}-content`]:{position:\"relative\",display:\"flex\",width:\"100%\",\"&-animated\":{transition:\"margin 0.3s\"}},[`${t}-content-holder`]:{flex:\"auto\",minWidth:0,minHeight:0},[`${t}-tabpane`]:{outline:\"none\",flex:\"none\",width:\"100%\"}}),[`${t}-centered`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-nav-wrap`]:{[`&:not([class*='${t}-nav-wrap-ping'])`]:{justifyContent:\"center\"}}}}}},EN=Xe(\"Tabs\",e=>{const t=e.controlHeightLG,n=Le(e,{tabsHoverColor:e.colorPrimaryHover,tabsActiveColor:e.colorPrimaryActive,tabsCardHorizontalPadding:`${(t-Math.round(e.fontSize*e.lineHeight))/2-e.lineWidth}px ${e.padding}px`,tabsCardHeight:t,tabsCardGutter:e.marginXXS/2,tabsHorizontalGutter:32,tabsCardHeadBackground:e.colorFillAlter,dropdownEdgeChildVerticalPadding:e.paddingXXS,tabsActiveTextShadow:\"0 0 0.25px currentcolor\",tabsDropdownHeight:200,tabsDropdownWidth:120});return[IN(n),TN(n),_N(n),wN(n),xN(n),ON(n),CN(n)]},e=>({zIndexPopup:e.zIndexPopupBase+50}));let jb=0;const kx=()=>({prefixCls:{type:String},id:{type:String},popupClassName:String,getPopupContainer:de(),activeKey:{type:[String,Number]},defaultActiveKey:{type:[String,Number]},direction:ke(),animated:Fe([Boolean,Object]),renderTabBar:de(),tabBarGutter:{type:Number},tabBarStyle:De(),tabPosition:ke(),destroyInactiveTabPane:ye(),hideAdd:Boolean,type:ke(),size:ke(),centered:Boolean,onEdit:de(),onChange:de(),onTabClick:de(),onTabScroll:de(),\"onUpdate:activeKey\":de(),locale:De(),onPrevClick:de(),onNextClick:de(),tabBarExtraContent:W.any});function MN(e){return e.map(t=>{if(Gt(t)){const n=h({},t.props||{});for(const[p,m]of Object.entries(n))delete n[p],n[Ia(p)]=m;const o=t.children||{},l=t.key!==void 0?t.key:void 0,{tab:r=o.tab,disabled:a,forceRender:i,closable:s,animated:c,active:u,destroyInactiveTabPane:d}=n;return h(h({key:l},n),{node:t,closeIcon:o.closeIcon,tab:r,disabled:a===\"\"||a,forceRender:i===\"\"||i,closable:s===\"\"||s,animated:c===\"\"||c,active:u===\"\"||u,destroyInactiveTabPane:d===\"\"||d})}return null}).filter(t=>t)}const AN=ne({compatConfig:{MODE:3},name:\"InternalTabs\",inheritAttrs:!1,props:h(h({},Je(kx(),{tabPosition:\"top\",animated:{inkBar:!0,tabPane:!1}})),{tabs:ct()}),slots:Object,setup(e,t){let{attrs:n,slots:o}=t;Ot(e.onPrevClick===void 0&&e.onNextClick===void 0,\"Tabs\",\"`onPrevClick / @prevClick` and `onNextClick / @nextClick` has been removed. Please use `onTabScroll / @tabScroll` instead.\"),Ot(e.tabBarExtraContent===void 0,\"Tabs\",\"`tabBarExtraContent` prop has been removed. Please use `rightExtra` slot instead.\"),Ot(o.tabBarExtraContent===void 0,\"Tabs\",\"`tabBarExtraContent` slot is deprecated. Please use `rightExtra` slot instead.\");const{prefixCls:l,direction:r,size:a,rootPrefixCls:i,getPopupContainer:s}=Te(\"tabs\",e),[c,u]=EN(l),d=I(()=>r.value===\"rtl\"),p=I(()=>{const{animated:x,tabPosition:P}=e;return x===!1||[\"left\",\"right\"].includes(P)?{inkBar:!1,tabPane:!1}:x===!0?{inkBar:!0,tabPane:!0}:h({inkBar:!0,tabPane:!1},typeof x==\"object\"?x:{})}),[m,g]=yt(!1);Be(()=>{g(yv())});const[v,y]=Mt(()=>{var x;return(x=e.tabs[0])===null||x===void 0?void 0:x.key},{value:I(()=>e.activeKey),defaultValue:e.defaultActiveKey}),[b,S]=yt(()=>e.tabs.findIndex(x=>x.key===v.value));ze(()=>{var x;let P=e.tabs.findIndex(E=>E.key===v.value);P===-1&&(P=Math.max(0,Math.min(b.value,e.tabs.length-1)),y((x=e.tabs[P])===null||x===void 0?void 0:x.key)),S(P)});const[$,w]=Mt(null,{value:I(()=>e.id)}),C=I(()=>m.value&&![\"left\",\"right\"].includes(e.tabPosition)?\"top\":e.tabPosition);Be(()=>{e.id||(w(`rc-tabs-${jb}`),jb+=1)});const _=(x,P)=>{var E,M;(E=e.onTabClick)===null||E===void 0||E.call(e,x,P);const O=x!==v.value;y(x),O&&((M=e.onChange)===null||M===void 0||M.call(e,x))};return gN({tabs:I(()=>e.tabs),prefixCls:l}),()=>{const{id:x,type:P,tabBarGutter:E,tabBarStyle:M,locale:O,destroyInactiveTabPane:R,renderTabBar:D=o.renderTabBar,onTabScroll:z,hideAdd:T,centered:k}=e,B={id:$.value,activeKey:v.value,animated:p.value,tabPosition:C.value,rtl:d.value,mobile:m.value};let L;P===\"editable-card\"&&(L={onEdit:(H,K)=>{let{key:G,event:V}=K;var q;(q=e.onEdit)===null||q===void 0||q.call(e,H===\"add\"?V:G,H)},removeIcon:()=>f(Kn,null,null),addIcon:o.addIcon?o.addIcon:()=>f(AI,null,null),showAdd:T!==!0});let N;const F=h(h({},B),{moreTransitionName:`${i.value}-slide-up`,editable:L,locale:O,tabBarGutter:E,onTabClick:_,onTabScroll:z,style:M,getPopupContainer:s.value,popupClassName:re(e.popupClassName,u.value)});D?N=D(h(h({},F),{DefaultTabBar:Hb})):N=f(Hb,F,c$(o,[\"moreIcon\",\"leftExtra\",\"rightExtra\",\"tabBarExtraContent\"]));const j=l.value;return c(f(\"div\",A(A({},n),{},{id:x,class:re(j,`${j}-${C.value}`,{[u.value]:!0,[`${j}-${a.value}`]:a.value,[`${j}-card`]:[\"card\",\"editable-card\"].includes(P),[`${j}-editable-card`]:P===\"editable-card\",[`${j}-centered`]:k,[`${j}-mobile`]:m.value,[`${j}-editable`]:P===\"editable-card\",[`${j}-rtl`]:d.value},n.class)}),[N,f($N,A(A({destroyInactiveTabPane:R},B),{},{animated:p.value}),null)]))}}}),Rl=ne({compatConfig:{MODE:3},name:\"ATabs\",inheritAttrs:!1,props:Je(kx(),{tabPosition:\"top\",animated:{inkBar:!0,tabPane:!1}}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:l}=t;const r=a=>{l(\"update:activeKey\",a),l(\"change\",a)};return()=>{var a;const i=MN(xt((a=o.default)===null||a===void 0?void 0:a.call(o)));return f(AN,A(A(A({},lt(e,[\"onUpdate:activeKey\"])),n),{},{onChange:r,tabs:i}),o)}}}),DN=()=>({tab:W.any,disabled:{type:Boolean},forceRender:{type:Boolean},closable:{type:Boolean},animated:{type:Boolean},active:{type:Boolean},destroyInactiveTabPane:{type:Boolean},prefixCls:{type:String},tabKey:{type:[String,Number]},id:{type:String}}),Pi=ne({compatConfig:{MODE:3},name:\"ATabPane\",inheritAttrs:!1,__ANT_TAB_PANE:!0,props:DN(),slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const l=Z(e.forceRender);pe([()=>e.active,()=>e.destroyInactiveTabPane],()=>{e.active?l.value=!0:e.destroyInactiveTabPane&&(l.value=!1)},{immediate:!0});const r=I(()=>e.active?{}:e.animated?{visibility:\"hidden\",height:0,overflowY:\"hidden\"}:{display:\"none\"});return()=>{var a;const{prefixCls:i,forceRender:s,id:c,active:u,tabKey:d}=e;return f(\"div\",{id:c&&`${c}-panel-${d}`,role:\"tabpanel\",tabindex:u?0:-1,\"aria-labelledby\":c&&`${c}-tab-${d}`,\"aria-hidden\":!u,style:[r.value,n.style],class:[`${i}-tabpane`,u&&`${i}-tabpane-active`,n.class]},[(u||l.value||s)&&((a=o.default)===null||a===void 0?void 0:a.call(o))])}}});Rl.TabPane=Pi;Rl.install=function(e){return e.component(Rl.name,Rl),e.component(Pi.name,Pi),e};const RN=e=>{const{antCls:t,componentCls:n,cardHeadHeight:o,cardPaddingBase:l,cardHeadTabsMarginBottom:r}=e;return h(h({display:\"flex\",justifyContent:\"center\",flexDirection:\"column\",minHeight:o,marginBottom:-1,padding:`0 ${l}px`,color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG,background:\"transparent\",borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorderSecondary}`,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`},Do()),{\"&-wrapper\":{width:\"100%\",display:\"flex\",alignItems:\"center\"},\"&-title\":h(h({display:\"inline-block\",flex:1},Xt),{[`\n          > ${n}-typography,\n          > ${n}-typography-edit-content\n        `]:{insetInlineStart:0,marginTop:0,marginBottom:0}}),[`${t}-tabs-top`]:{clear:\"both\",marginBottom:r,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,\"&-bar\":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorderSecondary}`}}})},kN=e=>{const{cardPaddingBase:t,colorBorderSecondary:n,cardShadow:o,lineWidth:l}=e;return{width:\"33.33%\",padding:t,border:0,borderRadius:0,boxShadow:`\n      ${l}px 0 0 0 ${n},\n      0 ${l}px 0 0 ${n},\n      ${l}px ${l}px 0 0 ${n},\n      ${l}px 0 0 0 ${n} inset,\n      0 ${l}px 0 0 ${n} inset;\n    `,transition:`all ${e.motionDurationMid}`,\"&-hoverable:hover\":{position:\"relative\",zIndex:1,boxShadow:o}}},NN=e=>{const{componentCls:t,iconCls:n,cardActionsLiMargin:o,cardActionsIconSize:l,colorBorderSecondary:r}=e;return h(h({margin:0,padding:0,listStyle:\"none\",background:e.colorBgContainer,borderTop:`${e.lineWidth}px ${e.lineType} ${r}`,display:\"flex\",borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px `},Do()),{\"& > li\":{margin:o,color:e.colorTextDescription,textAlign:\"center\",\"> span\":{position:\"relative\",display:\"block\",minWidth:e.cardActionsIconSize*2,fontSize:e.fontSize,lineHeight:e.lineHeight,cursor:\"pointer\",\"&:hover\":{color:e.colorPrimary,transition:`color ${e.motionDurationMid}`},[`a:not(${t}-btn), > ${n}`]:{display:\"inline-block\",width:\"100%\",color:e.colorTextDescription,lineHeight:`${e.fontSize*e.lineHeight}px`,transition:`color ${e.motionDurationMid}`,\"&:hover\":{color:e.colorPrimary}},[`> ${n}`]:{fontSize:l,lineHeight:`${l*e.lineHeight}px`}},\"&:not(:last-child)\":{borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${r}`}}})},BN=e=>h(h({margin:`-${e.marginXXS}px 0`,display:\"flex\"},Do()),{\"&-avatar\":{paddingInlineEnd:e.padding},\"&-detail\":{overflow:\"hidden\",flex:1,\"> div:not(:last-child)\":{marginBottom:e.marginXS}},\"&-title\":h({color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG},Xt),\"&-description\":{color:e.colorTextDescription}}),LN=e=>{const{componentCls:t,cardPaddingBase:n,colorFillAlter:o}=e;return{[`${t}-head`]:{padding:`0 ${n}px`,background:o,\"&-title\":{fontSize:e.fontSize}},[`${t}-body`]:{padding:`${e.padding}px ${n}px`}}},FN=e=>{const{componentCls:t}=e;return{overflow:\"hidden\",[`${t}-body`]:{userSelect:\"none\"}}},zN=e=>{const{componentCls:t,cardShadow:n,cardHeadPadding:o,colorBorderSecondary:l,boxShadow:r,cardPaddingBase:a}=e;return{[t]:h(h({},qe(e)),{position:\"relative\",background:e.colorBgContainer,borderRadius:e.borderRadiusLG,[`&:not(${t}-bordered)`]:{boxShadow:r},[`${t}-head`]:RN(e),[`${t}-extra`]:{marginInlineStart:\"auto\",color:\"\",fontWeight:\"normal\",fontSize:e.fontSize},[`${t}-body`]:h({padding:a,borderRadius:` 0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`},Do()),[`${t}-grid`]:kN(e),[`${t}-cover`]:{\"> *\":{display:\"block\",width:\"100%\"},img:{borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`}},[`${t}-actions`]:NN(e),[`${t}-meta`]:BN(e)}),[`${t}-bordered`]:{border:`${e.lineWidth}px ${e.lineType} ${l}`,[`${t}-cover`]:{marginTop:-1,marginInlineStart:-1,marginInlineEnd:-1}},[`${t}-hoverable`]:{cursor:\"pointer\",transition:`box-shadow ${e.motionDurationMid}, border-color ${e.motionDurationMid}`,\"&:hover\":{borderColor:\"transparent\",boxShadow:n}},[`${t}-contain-grid`]:{[`${t}-body`]:{display:\"flex\",flexWrap:\"wrap\"},[`&:not(${t}-loading) ${t}-body`]:{marginBlockStart:-e.lineWidth,marginInlineStart:-e.lineWidth,padding:0}},[`${t}-contain-tabs`]:{[`> ${t}-head`]:{[`${t}-head-title, ${t}-extra`]:{paddingTop:o}}},[`${t}-type-inner`]:LN(e),[`${t}-loading`]:FN(e),[`${t}-rtl`]:{direction:\"rtl\"}}},HN=e=>{const{componentCls:t,cardPaddingSM:n,cardHeadHeightSM:o}=e;return{[`${t}-small`]:{[`> ${t}-head`]:{minHeight:o,padding:`0 ${n}px`,fontSize:e.fontSize,[`> ${t}-head-wrapper`]:{[`> ${t}-extra`]:{fontSize:e.fontSize}}},[`> ${t}-body`]:{padding:n}},[`${t}-small${t}-contain-tabs`]:{[`> ${t}-head`]:{[`${t}-head-title, ${t}-extra`]:{minHeight:o,paddingTop:0,display:\"flex\",alignItems:\"center\"}}}}},jN=Xe(\"Card\",e=>{const t=Le(e,{cardShadow:e.boxShadowCard,cardHeadHeight:e.fontSizeLG*e.lineHeightLG+e.padding*2,cardHeadHeightSM:e.fontSize*e.lineHeight+e.paddingXS*2,cardHeadPadding:e.padding,cardPaddingBase:e.paddingLG,cardHeadTabsMarginBottom:-e.padding-e.lineWidth,cardActionsLiMargin:`${e.paddingSM}px 0`,cardActionsIconSize:e.fontSize,cardPaddingSM:12});return[zN(t),HN(t)]}),WN=()=>({prefixCls:String,width:{type:[Number,String]}}),id=ne({compatConfig:{MODE:3},name:\"SkeletonTitle\",props:WN(),setup(e){return()=>{const{prefixCls:t,width:n}=e,o=typeof n==\"number\"?`${n}px`:n;return f(\"h3\",{class:t,style:{width:o}},null)}}}),VN=()=>({prefixCls:String,width:{type:[Number,String,Array]},rows:Number}),KN=ne({compatConfig:{MODE:3},name:\"SkeletonParagraph\",props:VN(),setup(e){const t=n=>{const{width:o,rows:l=2}=e;if(Array.isArray(o))return o[n];if(l-1===n)return o};return()=>{const{prefixCls:n,rows:o}=e,l=[...Array(o)].map((r,a)=>{const i=t(a);return f(\"li\",{key:a,style:{width:typeof i==\"number\"?`${i}px`:i}},null)});return f(\"ul\",{class:n},[l])}}}),sd=()=>({prefixCls:String,size:[String,Number],shape:String,active:{type:Boolean,default:void 0}}),Vi=e=>{const{prefixCls:t,size:n,shape:o}=e,l=re({[`${t}-lg`]:n===\"large\",[`${t}-sm`]:n===\"small\"}),r=re({[`${t}-circle`]:o===\"circle\",[`${t}-square`]:o===\"square\",[`${t}-round`]:o===\"round\"}),a=typeof n==\"number\"?{width:`${n}px`,height:`${n}px`,lineHeight:`${n}px`}:{};return f(\"span\",{class:re(t,l,r),style:a},null)};Vi.displayName=\"SkeletonElement\";const GN=new rt(\"ant-skeleton-loading\",{\"0%\":{transform:\"translateX(-37.5%)\"},\"100%\":{transform:\"translateX(37.5%)\"}}),cd=e=>({height:e,lineHeight:`${e}px`}),ra=e=>h({width:e},cd(e)),XN=e=>({position:\"relative\",zIndex:0,overflow:\"hidden\",background:\"transparent\",\"&::after\":{position:\"absolute\",top:0,insetInlineEnd:\"-150%\",bottom:0,insetInlineStart:\"-150%\",background:e.skeletonLoadingBackground,animationName:GN,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:\"ease\",animationIterationCount:\"infinite\",content:'\"\"'}}),uf=e=>h({width:e*5,minWidth:e*5},cd(e)),UN=e=>{const{skeletonAvatarCls:t,color:n,controlHeight:o,controlHeightLG:l,controlHeightSM:r}=e;return{[`${t}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:n},ra(o)),[`${t}${t}-circle`]:{borderRadius:\"50%\"},[`${t}${t}-lg`]:h({},ra(l)),[`${t}${t}-sm`]:h({},ra(r))}},YN=e=>{const{controlHeight:t,borderRadiusSM:n,skeletonInputCls:o,controlHeightLG:l,controlHeightSM:r,color:a}=e;return{[`${o}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:a,borderRadius:n},uf(t)),[`${o}-lg`]:h({},uf(l)),[`${o}-sm`]:h({},uf(r))}},Wb=e=>h({width:e},cd(e)),qN=e=>{const{skeletonImageCls:t,imageSizeBase:n,color:o,borderRadiusSM:l}=e;return{[`${t}`]:h(h({display:\"flex\",alignItems:\"center\",justifyContent:\"center\",verticalAlign:\"top\",background:o,borderRadius:l},Wb(n*2)),{[`${t}-path`]:{fill:\"#bfbfbf\"},[`${t}-svg`]:h(h({},Wb(n)),{maxWidth:n*4,maxHeight:n*4}),[`${t}-svg${t}-svg-circle`]:{borderRadius:\"50%\"}}),[`${t}${t}-circle`]:{borderRadius:\"50%\"}}},df=(e,t,n)=>{const{skeletonButtonCls:o}=e;return{[`${n}${o}-circle`]:{width:t,minWidth:t,borderRadius:\"50%\"},[`${n}${o}-round`]:{borderRadius:t}}},ff=e=>h({width:e*2,minWidth:e*2},cd(e)),ZN=e=>{const{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:o,controlHeightLG:l,controlHeightSM:r,color:a}=e;return h(h(h(h(h({[`${n}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:a,borderRadius:t,width:o*2,minWidth:o*2},ff(o))},df(e,o,n)),{[`${n}-lg`]:h({},ff(l))}),df(e,l,`${n}-lg`)),{[`${n}-sm`]:h({},ff(r))}),df(e,r,`${n}-sm`))},QN=e=>{const{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:o,skeletonParagraphCls:l,skeletonButtonCls:r,skeletonInputCls:a,skeletonImageCls:i,controlHeight:s,controlHeightLG:c,controlHeightSM:u,color:d,padding:p,marginSM:m,borderRadius:g,skeletonTitleHeight:v,skeletonBlockRadius:y,skeletonParagraphLineHeight:b,controlHeightXS:S,skeletonParagraphMarginTop:$}=e;return{[`${t}`]:{display:\"table\",width:\"100%\",[`${t}-header`]:{display:\"table-cell\",paddingInlineEnd:p,verticalAlign:\"top\",[`${n}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:d},ra(s)),[`${n}-circle`]:{borderRadius:\"50%\"},[`${n}-lg`]:h({},ra(c)),[`${n}-sm`]:h({},ra(u))},[`${t}-content`]:{display:\"table-cell\",width:\"100%\",verticalAlign:\"top\",[`${o}`]:{width:\"100%\",height:v,background:d,borderRadius:y,[`+ ${l}`]:{marginBlockStart:u}},[`${l}`]:{padding:0,\"> li\":{width:\"100%\",height:b,listStyle:\"none\",background:d,borderRadius:y,\"+ li\":{marginBlockStart:S}}},[`${l}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:\"61%\"}},[`&-round ${t}-content`]:{[`${o}, ${l} > li`]:{borderRadius:g}}},[`${t}-with-avatar ${t}-content`]:{[`${o}`]:{marginBlockStart:m,[`+ ${l}`]:{marginBlockStart:$}}},[`${t}${t}-element`]:h(h(h(h({display:\"inline-block\",width:\"auto\"},ZN(e)),UN(e)),YN(e)),qN(e)),[`${t}${t}-block`]:{width:\"100%\",[`${r}`]:{width:\"100%\"},[`${a}`]:{width:\"100%\"}},[`${t}${t}-active`]:{[`\n        ${o},\n        ${l} > li,\n        ${n},\n        ${r},\n        ${a},\n        ${i}\n      `]:h({},XN(e))}}},Ki=Xe(\"Skeleton\",e=>{const{componentCls:t}=e,n=Le(e,{skeletonAvatarCls:`${t}-avatar`,skeletonTitleCls:`${t}-title`,skeletonParagraphCls:`${t}-paragraph`,skeletonButtonCls:`${t}-button`,skeletonInputCls:`${t}-input`,skeletonImageCls:`${t}-image`,imageSizeBase:e.controlHeight*1.5,skeletonTitleHeight:e.controlHeight/2,skeletonBlockRadius:e.borderRadiusSM,skeletonParagraphLineHeight:e.controlHeight/2,skeletonParagraphMarginTop:e.marginLG+e.marginXXS,borderRadius:100,skeletonLoadingBackground:`linear-gradient(90deg, ${e.color} 25%, ${e.colorGradientEnd} 37%, ${e.color} 63%)`,skeletonLoadingMotionDuration:\"1.4s\"});return[QN(n)]},e=>{const{colorFillContent:t,colorFill:n}=e;return{color:t,colorGradientEnd:n}}),JN=()=>({active:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},prefixCls:String,avatar:{type:[Boolean,Object],default:void 0},title:{type:[Boolean,Object],default:void 0},paragraph:{type:[Boolean,Object],default:void 0},round:{type:Boolean,default:void 0}});function pf(e){return e&&typeof e==\"object\"?e:{}}function e8(e,t){return e&&!t?{size:\"large\",shape:\"square\"}:{size:\"large\",shape:\"circle\"}}function t8(e,t){return!e&&t?{width:\"38%\"}:e&&t?{width:\"50%\"}:{}}function n8(e,t){const n={};return(!e||!t)&&(n.width=\"61%\"),!e&&t?n.rows=3:n.rows=2,n}const Sn=ne({compatConfig:{MODE:3},name:\"ASkeleton\",props:Je(JN(),{avatar:!1,title:!0,paragraph:!0}),setup(e,t){let{slots:n}=t;const{prefixCls:o,direction:l}=Te(\"skeleton\",e),[r,a]=Ki(o);return()=>{var i;const{loading:s,avatar:c,title:u,paragraph:d,active:p,round:m}=e,g=o.value;if(s||e.loading===void 0){const v=!!c||c===\"\",y=!!u||u===\"\",b=!!d||d===\"\";let S;if(v){const C=h(h({prefixCls:`${g}-avatar`},e8(y,b)),pf(c));S=f(\"div\",{class:`${g}-header`},[f(Vi,C,null)])}let $;if(y||b){let C;if(y){const x=h(h({prefixCls:`${g}-title`},t8(v,b)),pf(u));C=f(id,x,null)}let _;if(b){const x=h(h({prefixCls:`${g}-paragraph`},n8(v,y)),pf(d));_=f(KN,x,null)}$=f(\"div\",{class:`${g}-content`},[C,_])}const w=re(g,{[`${g}-with-avatar`]:v,[`${g}-active`]:p,[`${g}-rtl`]:l.value===\"rtl\",[`${g}-round`]:m,[a.value]:!0});return r(f(\"div\",{class:w},[S,$]))}return(i=n.default)===null||i===void 0?void 0:i.call(n)}}}),o8=()=>h(h({},sd()),{size:String,block:Boolean}),hg=ne({compatConfig:{MODE:3},name:\"ASkeletonButton\",props:Je(o8(),{size:\"default\"}),setup(e){const{prefixCls:t}=Te(\"skeleton\",e),[n,o]=Ki(t),l=I(()=>re(t.value,`${t.value}-element`,{[`${t.value}-active`]:e.active,[`${t.value}-block`]:e.block},o.value));return()=>n(f(\"div\",{class:l.value},[f(Vi,A(A({},e),{},{prefixCls:`${t.value}-button`}),null)]))}}),ud=ne({compatConfig:{MODE:3},name:\"ASkeletonInput\",props:h(h({},lt(sd(),[\"shape\"])),{size:String,block:Boolean}),setup(e){const{prefixCls:t}=Te(\"skeleton\",e),[n,o]=Ki(t),l=I(()=>re(t.value,`${t.value}-element`,{[`${t.value}-active`]:e.active,[`${t.value}-block`]:e.block},o.value));return()=>n(f(\"div\",{class:l.value},[f(Vi,A(A({},e),{},{prefixCls:`${t.value}-input`}),null)]))}}),l8=\"M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z\",bg=ne({compatConfig:{MODE:3},name:\"ASkeletonImage\",props:lt(sd(),[\"size\",\"shape\",\"active\"]),setup(e){const{prefixCls:t}=Te(\"skeleton\",e),[n,o]=Ki(t),l=I(()=>re(t.value,`${t.value}-element`,o.value));return()=>n(f(\"div\",{class:l.value},[f(\"div\",{class:`${t.value}-image`},[f(\"svg\",{viewBox:\"0 0 1098 1024\",xmlns:\"http://www.w3.org/2000/svg\",class:`${t.value}-image-svg`},[f(\"path\",{d:l8,class:`${t.value}-image-path`},null)])])]))}}),r8=()=>h(h({},sd()),{shape:String}),yg=ne({compatConfig:{MODE:3},name:\"ASkeletonAvatar\",props:Je(r8(),{size:\"default\",shape:\"circle\"}),setup(e){const{prefixCls:t}=Te(\"skeleton\",e),[n,o]=Ki(t),l=I(()=>re(t.value,`${t.value}-element`,{[`${t.value}-active`]:e.active},o.value));return()=>n(f(\"div\",{class:l.value},[f(Vi,A(A({},e),{},{prefixCls:`${t.value}-avatar`}),null)]))}});Sn.Button=hg;Sn.Avatar=yg;Sn.Input=ud;Sn.Image=bg;Sn.Title=id;Sn.install=function(e){return e.component(Sn.name,Sn),e.component(Sn.Button.name,hg),e.component(Sn.Avatar.name,yg),e.component(Sn.Input.name,ud),e.component(Sn.Image.name,bg),e.component(Sn.Title.name,id),e};const{TabPane:a8}=Rl,i8=()=>({prefixCls:String,title:W.any,extra:W.any,bordered:{type:Boolean,default:!0},bodyStyle:{type:Object,default:void 0},headStyle:{type:Object,default:void 0},loading:{type:Boolean,default:!1},hoverable:{type:Boolean,default:!1},type:{type:String},size:{type:String},actions:W.any,tabList:{type:Array},tabBarExtraContent:W.any,activeTabKey:String,defaultActiveTabKey:String,cover:W.any,onTabChange:{type:Function}}),gr=ne({compatConfig:{MODE:3},name:\"ACard\",inheritAttrs:!1,props:i8(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r,size:a}=Te(\"card\",e),[i,s]=jN(l),c=p=>p.map((g,v)=>gn(g)&&!Ri(g)||!gn(g)?f(\"li\",{style:{width:`${100/p.length}%`},key:`action-${v}`},[f(\"span\",null,[g])]):null),u=p=>{var m;(m=e.onTabChange)===null||m===void 0||m.call(e,p)},d=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],m;return p.forEach(g=>{g&&u$(g.type)&&g.type.__ANT_CARD_GRID&&(m=!0)}),m};return()=>{var p,m,g,v,y,b;const{headStyle:S={},bodyStyle:$={},loading:w,bordered:C=!0,type:_,tabList:x,hoverable:P,activeTabKey:E,defaultActiveTabKey:M,tabBarExtraContent:O=Ha((p=n.tabBarExtraContent)===null||p===void 0?void 0:p.call(n)),title:R=Ha((m=n.title)===null||m===void 0?void 0:m.call(n)),extra:D=Ha((g=n.extra)===null||g===void 0?void 0:g.call(n)),actions:z=Ha((v=n.actions)===null||v===void 0?void 0:v.call(n)),cover:T=Ha((y=n.cover)===null||y===void 0?void 0:y.call(n))}=e,k=xt((b=n.default)===null||b===void 0?void 0:b.call(n)),B=l.value,L={[`${B}`]:!0,[s.value]:!0,[`${B}-loading`]:w,[`${B}-bordered`]:C,[`${B}-hoverable`]:!!P,[`${B}-contain-grid`]:d(k),[`${B}-contain-tabs`]:x&&x.length,[`${B}-${a.value}`]:a.value,[`${B}-type-${_}`]:!!_,[`${B}-rtl`]:r.value===\"rtl\"},N=f(Sn,{loading:!0,active:!0,paragraph:{rows:4},title:!1},{default:()=>[k]}),F=E!==void 0,j={size:\"large\",[F?\"activeKey\":\"defaultActiveKey\"]:F?E:M,onChange:u,class:`${B}-head-tabs`};let H;const K=x&&x.length?f(Rl,j,{default:()=>[x.map(Q=>{const{tab:oe,slots:le}=Q,Y=le?.tab;Ot(!le,\"Card\",\"tabList slots is deprecated, Please use `customTab` instead.\");let J=oe!==void 0?oe:n[Y]?n[Y](Q):null;return J=Vu(n,\"customTab\",Q,()=>[J]),f(a8,{tab:J,key:Q.key,disabled:Q.disabled},null)})],rightExtra:O?()=>O:null}):null;(R||D||K)&&(H=f(\"div\",{class:`${B}-head`,style:S},[f(\"div\",{class:`${B}-head-wrapper`},[R&&f(\"div\",{class:`${B}-head-title`},[R]),D&&f(\"div\",{class:`${B}-extra`},[D])]),K]));const G=T?f(\"div\",{class:`${B}-cover`},[T]):null,V=f(\"div\",{class:`${B}-body`,style:$},[w?N:k]),q=z&&z.length?f(\"ul\",{class:`${B}-actions`},[c(z)]):null;return i(f(\"div\",A(A({ref:\"cardContainerRef\"},o),{},{class:[L,o.class]}),[H,G,k&&k.length?V:null,q]))}}}),s8=()=>({prefixCls:String,title:$n(),description:$n(),avatar:$n()}),cu=ne({compatConfig:{MODE:3},name:\"ACardMeta\",props:s8(),slots:Object,setup(e,t){let{slots:n}=t;const{prefixCls:o}=Te(\"card\",e);return()=>{const l={[`${o.value}-meta`]:!0},r=Qt(n,e,\"avatar\"),a=Qt(n,e,\"title\"),i=Qt(n,e,\"description\"),s=r?f(\"div\",{class:`${o.value}-meta-avatar`},[r]):null,c=a?f(\"div\",{class:`${o.value}-meta-title`},[a]):null,u=i?f(\"div\",{class:`${o.value}-meta-description`},[i]):null,d=c||u?f(\"div\",{class:`${o.value}-meta-detail`},[c,u]):null;return f(\"div\",{class:l},[s,d])}}}),c8=()=>({prefixCls:String,hoverable:{type:Boolean,default:!0}}),uu=ne({compatConfig:{MODE:3},name:\"ACardGrid\",__ANT_CARD_GRID:!0,props:c8(),setup(e,t){let{slots:n}=t;const{prefixCls:o}=Te(\"card\",e),l=I(()=>({[`${o.value}-grid`]:!0,[`${o.value}-grid-hoverable`]:e.hoverable}));return()=>{var r;return f(\"div\",{class:l.value},[(r=n.default)===null||r===void 0?void 0:r.call(n)])}}});gr.Meta=cu;gr.Grid=uu;gr.install=function(e){return e.component(gr.name,gr),e.component(cu.name,cu),e.component(uu.name,uu),e};const u8=()=>({prefixCls:String,activeKey:Fe([Array,Number,String]),defaultActiveKey:Fe([Array,Number,String]),accordion:ye(),destroyInactivePanel:ye(),bordered:ye(),expandIcon:de(),openAnimation:W.object,expandIconPosition:ke(),collapsible:ke(),ghost:ye(),onChange:de(),\"onUpdate:activeKey\":de()}),Nx=()=>({openAnimation:W.object,prefixCls:String,header:W.any,headerClass:String,showArrow:ye(),isActive:ye(),destroyInactivePanel:ye(),disabled:ye(),accordion:ye(),forceRender:ye(),expandIcon:de(),extra:W.any,panelKey:Fe(),collapsible:ke(),role:String,onItemClick:de()}),d8=e=>{const{componentCls:t,collapseContentBg:n,padding:o,collapseContentPaddingHorizontal:l,collapseHeaderBg:r,collapseHeaderPadding:a,collapsePanelBorderRadius:i,lineWidth:s,lineType:c,colorBorder:u,colorText:d,colorTextHeading:p,colorTextDisabled:m,fontSize:g,lineHeight:v,marginSM:y,paddingSM:b,motionDurationSlow:S,fontSizeIcon:$}=e,w=`${s}px ${c} ${u}`;return{[t]:h(h({},qe(e)),{backgroundColor:r,border:w,borderBottom:0,borderRadius:`${i}px`,\"&-rtl\":{direction:\"rtl\"},[`& > ${t}-item`]:{borderBottom:w,\"&:last-child\":{[`\n            &,\n            & > ${t}-header`]:{borderRadius:`0 0 ${i}px ${i}px`}},[`> ${t}-header`]:{position:\"relative\",display:\"flex\",flexWrap:\"nowrap\",alignItems:\"flex-start\",padding:a,color:p,lineHeight:v,cursor:\"pointer\",transition:`all ${S}, visibility 0s`,[`> ${t}-header-text`]:{flex:\"auto\"},\"&:focus\":{outline:\"none\"},[`${t}-expand-icon`]:{height:g*v,display:\"flex\",alignItems:\"center\",paddingInlineEnd:y},[`${t}-arrow`]:h(h({},Tr()),{fontSize:$,svg:{transition:`transform ${S}`}}),[`${t}-header-text`]:{marginInlineEnd:\"auto\"}},[`${t}-header-collapsible-only`]:{cursor:\"default\",[`${t}-header-text`]:{flex:\"none\",cursor:\"pointer\"},[`${t}-expand-icon`]:{cursor:\"pointer\"}},[`${t}-icon-collapsible-only`]:{cursor:\"default\",[`${t}-expand-icon`]:{cursor:\"pointer\"}},[`&${t}-no-arrow`]:{[`> ${t}-header`]:{paddingInlineStart:b}}},[`${t}-content`]:{color:d,backgroundColor:n,borderTop:w,[`& > ${t}-content-box`]:{padding:`${o}px ${l}px`},\"&-hidden\":{display:\"none\"}},[`${t}-item:last-child`]:{[`> ${t}-content`]:{borderRadius:`0 0 ${i}px ${i}px`}},[`& ${t}-item-disabled > ${t}-header`]:{\"\\n          &,\\n          & > .arrow\\n        \":{color:m,cursor:\"not-allowed\"}},[`&${t}-icon-position-end`]:{[`& > ${t}-item`]:{[`> ${t}-header`]:{[`${t}-expand-icon`]:{order:1,paddingInlineEnd:0,paddingInlineStart:y}}}}})}},f8=e=>{const{componentCls:t}=e,n=`> ${t}-item > ${t}-header ${t}-arrow svg`;return{[`${t}-rtl`]:{[n]:{transform:\"rotate(180deg)\"}}}},p8=e=>{const{componentCls:t,collapseHeaderBg:n,paddingXXS:o,colorBorder:l}=e;return{[`${t}-borderless`]:{backgroundColor:n,border:0,[`> ${t}-item`]:{borderBottom:`1px solid ${l}`},[`\n        > ${t}-item:last-child,\n        > ${t}-item:last-child ${t}-header\n      `]:{borderRadius:0},[`> ${t}-item:last-child`]:{borderBottom:0},[`> ${t}-item > ${t}-content`]:{backgroundColor:\"transparent\",borderTop:0},[`> ${t}-item > ${t}-content > ${t}-content-box`]:{paddingTop:o}}}},m8=e=>{const{componentCls:t,paddingSM:n}=e;return{[`${t}-ghost`]:{backgroundColor:\"transparent\",border:0,[`> ${t}-item`]:{borderBottom:0,[`> ${t}-content`]:{backgroundColor:\"transparent\",border:0,[`> ${t}-content-box`]:{paddingBlock:n}}}}}},v8=Xe(\"Collapse\",e=>{const t=Le(e,{collapseContentBg:e.colorBgContainer,collapseHeaderBg:e.colorFillAlter,collapseHeaderPadding:`${e.paddingSM}px ${e.padding}px`,collapsePanelBorderRadius:e.borderRadiusLG,collapseContentPaddingHorizontal:16});return[d8(t),p8(t),m8(t),f8(t),Fi(t)]});function Vb(e){let t=e;if(!Array.isArray(t)){const n=typeof t;t=n===\"number\"||n===\"string\"?[t]:[]}return t.map(n=>String(n))}const ni=ne({compatConfig:{MODE:3},name:\"ACollapse\",inheritAttrs:!1,props:Je(u8(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,expandIconPosition:\"start\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:l}=t;const r=Z(Vb(Yc([e.activeKey,e.defaultActiveKey])));pe(()=>e.activeKey,()=>{r.value=Vb(e.activeKey)},{deep:!0});const{prefixCls:a,direction:i,rootPrefixCls:s}=Te(\"collapse\",e),[c,u]=v8(a),d=I(()=>{const{expandIconPosition:b}=e;return b!==void 0?b:i.value===\"rtl\"?\"end\":\"start\"}),p=b=>{const{expandIcon:S=o.expandIcon}=e,$=S?S(b):f(Ao,{rotate:b.isActive?90:void 0},null);return f(\"div\",{class:[`${a.value}-expand-icon`,u.value],onClick:()=>[\"header\",\"icon\"].includes(e.collapsible)&&g(b.panelKey)},[Gt(Array.isArray(S)?$[0]:$)?ft($,{class:`${a.value}-arrow`},!1):$])},m=b=>{e.activeKey===void 0&&(r.value=b);const S=e.accordion?b[0]:b;l(\"update:activeKey\",S),l(\"change\",S)},g=b=>{let S=r.value;if(e.accordion)S=S[0]===b?[]:[b];else{S=[...S];const $=S.indexOf(b);$>-1?S.splice($,1):S.push(b)}m(S)},v=(b,S)=>{var $,w,C;if(Ri(b))return;const _=r.value,{accordion:x,destroyInactivePanel:P,collapsible:E,openAnimation:M}=e,O=M||zi(`${s.value}-motion-collapse`),R=String(($=b.key)!==null&&$!==void 0?$:S),{header:D=(C=(w=b.children)===null||w===void 0?void 0:w.header)===null||C===void 0?void 0:C.call(w),headerClass:z,collapsible:T,disabled:k}=b.props||{};let B=!1;x?B=_[0]===R:B=_.indexOf(R)>-1;let L=T??E;(k||k===\"\")&&(L=\"disabled\");const N={key:R,panelKey:R,header:D,headerClass:z,isActive:B,prefixCls:a.value,destroyInactivePanel:P,openAnimation:O,accordion:x,onItemClick:L===\"disabled\"?null:g,expandIcon:p,collapsible:L};return ft(b,N)},y=()=>{var b;return xt((b=o.default)===null||b===void 0?void 0:b.call(o)).map(v)};return()=>{const{accordion:b,bordered:S,ghost:$}=e,w=re(a.value,{[`${a.value}-borderless`]:!S,[`${a.value}-icon-position-${d.value}`]:!0,[`${a.value}-rtl`]:i.value===\"rtl\",[`${a.value}-ghost`]:!!$,[n.class]:!!n.class},u.value);return c(f(\"div\",A(A({class:w},DO(n)),{},{style:n.style,role:b?\"tablist\":null}),[y()]))}}}),g8=ne({compatConfig:{MODE:3},name:\"PanelContent\",props:Nx(),setup(e,t){let{slots:n}=t;const o=ee(!1);return ze(()=>{(e.isActive||e.forceRender)&&(o.value=!0)}),()=>{var l;if(!o.value)return null;const{prefixCls:r,isActive:a,role:i}=e;return f(\"div\",{class:re(`${r}-content`,{[`${r}-content-active`]:a,[`${r}-content-inactive`]:!a}),role:i},[f(\"div\",{class:`${r}-content-box`},[(l=n.default)===null||l===void 0?void 0:l.call(n)])])}}}),du=ne({compatConfig:{MODE:3},name:\"ACollapsePanel\",inheritAttrs:!1,props:Je(Nx(),{showArrow:!0,isActive:!1,onItemClick(){},headerClass:\"\",forceRender:!1}),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:l}=t;Ot(e.disabled===void 0,\"Collapse.Panel\",'`disabled` is deprecated. Please use `collapsible=\"disabled\"` instead.');const{prefixCls:r}=Te(\"collapse\",e),a=()=>{o(\"itemClick\",e.panelKey)},i=s=>{(s.key===\"Enter\"||s.keyCode===13||s.which===13)&&a()};return()=>{var s,c;const{header:u=(s=n.header)===null||s===void 0?void 0:s.call(n),headerClass:d,isActive:p,showArrow:m,destroyInactivePanel:g,accordion:v,forceRender:y,openAnimation:b,expandIcon:S=n.expandIcon,extra:$=(c=n.extra)===null||c===void 0?void 0:c.call(n),collapsible:w}=e,C=w===\"disabled\",_=r.value,x=re(`${_}-header`,{[d]:d,[`${_}-header-collapsible-only`]:w===\"header\",[`${_}-icon-collapsible-only`]:w===\"icon\"}),P=re({[`${_}-item`]:!0,[`${_}-item-active`]:p,[`${_}-item-disabled`]:C,[`${_}-no-arrow`]:!m,[`${l.class}`]:!!l.class});let E=f(\"i\",{class:\"arrow\"},null);m&&typeof S==\"function\"&&(E=S(e));const M=xn(f(g8,{prefixCls:_,isActive:p,forceRender:y,role:v?\"tabpanel\":null},{default:n.default}),[[On,p]]),O=h({appear:!1,css:!1},b);return f(\"div\",A(A({},l),{},{class:P}),[f(\"div\",{class:x,onClick:()=>![\"header\",\"icon\"].includes(w)&&a(),role:v?\"tab\":\"button\",tabindex:C?-1:0,\"aria-expanded\":p,onKeypress:i},[m&&E,f(\"span\",{onClick:()=>w===\"header\"&&a(),class:`${_}-header-text`},[u]),$&&f(\"div\",{class:`${_}-extra`},[$])]),f(cn,O,{default:()=>[!g||p?M:null]})])}}});ni.Panel=du;ni.install=function(e){return e.component(ni.name,ni),e.component(du.name,du),e};const h8=function(e){return e.replace(/[A-Z]/g,function(t){return\"-\"+t.toLowerCase()}).toLowerCase()},b8=function(e){return/[height|width]$/.test(e)},Kb=function(e){let t=\"\";const n=Object.keys(e);return n.forEach(function(o,l){let r=e[o];o=h8(o),b8(o)&&typeof r==\"number\"&&(r=r+\"px\"),r===!0?t+=o:r===!1?t+=\"not \"+o:t+=\"(\"+o+\": \"+r+\")\",l<n.length-1&&(t+=\" and \")}),t};function mf(e){let t=\"\";return typeof e==\"string\"?e:e instanceof Array?(e.forEach(function(n,o){t+=Kb(n),o<e.length-1&&(t+=\", \")}),t):Kb(e)}const Bx={accessibility:{type:Boolean,default:!0},adaptiveHeight:{type:Boolean,default:!1},afterChange:W.any.def(null),arrows:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},autoplaySpeed:W.number.def(3e3),beforeChange:W.any.def(null),centerMode:{type:Boolean,default:!1},centerPadding:W.string.def(\"50px\"),cssEase:W.string.def(\"ease\"),dots:{type:Boolean,default:!1},dotsClass:W.string.def(\"slick-dots\"),draggable:{type:Boolean,default:!0},unslick:{type:Boolean,default:!1},easing:W.string.def(\"linear\"),edgeFriction:W.number.def(.35),fade:{type:Boolean,default:!1},focusOnSelect:{type:Boolean,default:!1},infinite:{type:Boolean,default:!0},initialSlide:W.number.def(0),lazyLoad:W.any.def(null),verticalSwiping:{type:Boolean,default:!1},asNavFor:W.any.def(null),pauseOnDotsHover:{type:Boolean,default:!1},pauseOnFocus:{type:Boolean,default:!1},pauseOnHover:{type:Boolean,default:!0},responsive:W.array,rows:W.number.def(1),rtl:{type:Boolean,default:!1},slide:W.string.def(\"div\"),slidesPerRow:W.number.def(1),slidesToScroll:W.number.def(1),slidesToShow:W.number.def(1),speed:W.number.def(500),swipe:{type:Boolean,default:!0},swipeEvent:W.any.def(null),swipeToSlide:{type:Boolean,default:!1},touchMove:{type:Boolean,default:!0},touchThreshold:W.number.def(5),useCSS:{type:Boolean,default:!0},useTransform:{type:Boolean,default:!0},variableWidth:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},waitForAnimate:{type:Boolean,default:!0},children:W.array,__propsSymbol__:W.any},y8={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0};function Lp(e,t,n){return Math.max(t,Math.min(e,n))}const aa=e=>{[\"touchstart\",\"touchmove\",\"wheel\"].includes(e.type)||e.preventDefault()},fu=e=>{const t=[],n=Lx(e),o=Fx(e);for(let l=n;l<o;l++)e.lazyLoadedList.indexOf(l)<0&&t.push(l);return t},Lx=e=>e.currentSlide-S8(e),Fx=e=>e.currentSlide+$8(e),S8=e=>e.centerMode?Math.floor(e.slidesToShow/2)+(parseInt(e.centerPadding)>0?1:0):0,$8=e=>e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow,Fp=e=>e&&e.offsetWidth||0,Sg=e=>e&&e.offsetHeight||0,zx=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n;const o=e.startX-e.curX,l=e.startY-e.curY,r=Math.atan2(l,o);return n=Math.round(r*180/Math.PI),n<0&&(n=360-Math.abs(n)),n<=45&&n>=0||n<=360&&n>=315?\"left\":n>=135&&n<=225?\"right\":t===!0?n>=35&&n<=135?\"up\":\"down\":\"vertical\"},dd=e=>{let t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t},vf=(e,t)=>{const n={};return t.forEach(o=>n[o]=e[o]),n},C8=e=>{const t=e.children.length,n=e.listRef,o=Math.ceil(Fp(n)),l=e.trackRef,r=Math.ceil(Fp(l));let a;if(e.vertical)a=o;else{let m=e.centerMode&&parseInt(e.centerPadding)*2;typeof e.centerPadding==\"string\"&&e.centerPadding.slice(-1)===\"%\"&&(m*=o/100),a=Math.ceil((o-m)/e.slidesToShow)}const i=n&&Sg(n.querySelector('[data-index=\"0\"]')),s=i*e.slidesToShow;let c=e.currentSlide===void 0?e.initialSlide:e.currentSlide;e.rtl&&e.currentSlide===void 0&&(c=t-1-e.initialSlide);let u=e.lazyLoadedList||[];const d=fu(h(h({},e),{currentSlide:c,lazyLoadedList:u}));u=u.concat(d);const p={slideCount:t,slideWidth:a,listWidth:o,trackWidth:r,currentSlide:c,slideHeight:i,listHeight:s,lazyLoadedList:u};return e.autoplaying===null&&e.autoplay&&(p.autoplaying=\"playing\"),p},x8=e=>{const{waitForAnimate:t,animating:n,fade:o,infinite:l,index:r,slideCount:a,lazyLoad:i,currentSlide:s,centerMode:c,slidesToScroll:u,slidesToShow:d,useCSS:p}=e;let{lazyLoadedList:m}=e;if(t&&n)return{};let g=r,v,y,b,S={},$={};const w=l?r:Lp(r,0,a-1);if(o){if(!l&&(r<0||r>=a))return{};r<0?g=r+a:r>=a&&(g=r-a),i&&m.indexOf(g)<0&&(m=m.concat(g)),S={animating:!0,currentSlide:g,lazyLoadedList:m,targetSlide:g},$={animating:!1,targetSlide:g}}else v=g,g<0?(v=g+a,l?a%u!==0&&(v=a-a%u):v=0):!dd(e)&&g>s?g=v=s:c&&g>=a?(g=l?a:a-1,v=l?0:a-1):g>=a&&(v=g-a,l?a%u!==0&&(v=0):v=a-d),!l&&g+d>=a&&(v=a-d),y=Oi(h(h({},e),{slideIndex:g})),b=Oi(h(h({},e),{slideIndex:v})),l||(y===b&&(g=v),y=b),i&&(m=m.concat(fu(h(h({},e),{currentSlide:g})))),p?(S={animating:!0,currentSlide:v,trackStyle:Hx(h(h({},e),{left:y})),lazyLoadedList:m,targetSlide:w},$={animating:!1,currentSlide:v,trackStyle:Ti(h(h({},e),{left:b})),swipeLeft:null,targetSlide:w}):S={currentSlide:v,trackStyle:Ti(h(h({},e),{left:b})),lazyLoadedList:m,targetSlide:w};return{state:S,nextState:$}},w8=(e,t)=>{let n,o,l;const{slidesToScroll:r,slidesToShow:a,slideCount:i,currentSlide:s,targetSlide:c,lazyLoad:u,infinite:d}=e,m=i%r!==0?0:(i-s)%r;if(t.message===\"previous\")o=m===0?r:a-m,l=s-o,u&&!d&&(n=s-o,l=n===-1?i-1:n),d||(l=c-r);else if(t.message===\"next\")o=m===0?r:m,l=s+o,u&&!d&&(l=(s+r)%i+m),d||(l=c+r);else if(t.message===\"dots\")l=t.index*t.slidesToScroll;else if(t.message===\"children\"){if(l=t.index,d){const g=M8(h(h({},e),{targetSlide:l}));l>t.currentSlide&&g===\"left\"?l=l-i:l<t.currentSlide&&g===\"right\"&&(l=l+i)}}else t.message===\"index\"&&(l=Number(t.index));return l},_8=(e,t,n)=>e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\")||!t?\"\":e.keyCode===37?n?\"next\":\"previous\":e.keyCode===39?n?\"previous\":\"next\":\"\",I8=(e,t,n)=>(e.target.tagName===\"IMG\"&&aa(e),!t||!n&&e.type.indexOf(\"mouse\")!==-1?\"\":{dragging:!0,touchObject:{startX:e.touches?e.touches[0].pageX:e.clientX,startY:e.touches?e.touches[0].pageY:e.clientY,curX:e.touches?e.touches[0].pageX:e.clientX,curY:e.touches?e.touches[0].pageY:e.clientY}}),P8=(e,t)=>{const{scrolling:n,animating:o,vertical:l,swipeToSlide:r,verticalSwiping:a,rtl:i,currentSlide:s,edgeFriction:c,edgeDragged:u,onEdge:d,swiped:p,swiping:m,slideCount:g,slidesToScroll:v,infinite:y,touchObject:b,swipeEvent:S,listHeight:$,listWidth:w}=t;if(n)return;if(o)return aa(e);l&&r&&a&&aa(e);let C,_={};const x=Oi(t);b.curX=e.touches?e.touches[0].pageX:e.clientX,b.curY=e.touches?e.touches[0].pageY:e.clientY,b.swipeLength=Math.round(Math.sqrt(Math.pow(b.curX-b.startX,2)));const P=Math.round(Math.sqrt(Math.pow(b.curY-b.startY,2)));if(!a&&!m&&P>10)return{scrolling:!0};a&&(b.swipeLength=P);let E=(i?-1:1)*(b.curX>b.startX?1:-1);a&&(E=b.curY>b.startY?1:-1);const M=Math.ceil(g/v),O=zx(t.touchObject,a);let R=b.swipeLength;return y||(s===0&&(O===\"right\"||O===\"down\")||s+1>=M&&(O===\"left\"||O===\"up\")||!dd(t)&&(O===\"left\"||O===\"up\"))&&(R=b.swipeLength*c,u===!1&&d&&(d(O),_.edgeDragged=!0)),!p&&S&&(S(O),_.swiped=!0),l?C=x+R*($/w)*E:i?C=x-R*E:C=x+R*E,a&&(C=x+R*E),_=h(h({},_),{touchObject:b,swipeLeft:C,trackStyle:Ti(h(h({},t),{left:C}))}),Math.abs(b.curX-b.startX)<Math.abs(b.curY-b.startY)*.8||b.swipeLength>10&&(_.swiping=!0,aa(e)),_},T8=(e,t)=>{const{dragging:n,swipe:o,touchObject:l,listWidth:r,touchThreshold:a,verticalSwiping:i,listHeight:s,swipeToSlide:c,scrolling:u,onSwipe:d,targetSlide:p,currentSlide:m,infinite:g}=t;if(!n)return o&&aa(e),{};const v=i?s/a:r/a,y=zx(l,i),b={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(u||!l.swipeLength)return b;if(l.swipeLength>v){aa(e),d&&d(y);let S,$;const w=g?m:p;switch(y){case\"left\":case\"up\":$=w+Xb(t),S=c?Gb(t,$):$,b.currentDirection=0;break;case\"right\":case\"down\":$=w-Xb(t),S=c?Gb(t,$):$,b.currentDirection=1;break;default:S=w}b.triggerSlideHandler=S}else{const S=Oi(t);b.trackStyle=Hx(h(h({},t),{left:S}))}return b},O8=e=>{const t=e.infinite?e.slideCount*2:e.slideCount;let n=e.infinite?e.slidesToShow*-1:0,o=e.infinite?e.slidesToShow*-1:0;const l=[];for(;n<t;)l.push(n),n=o+e.slidesToScroll,o+=Math.min(e.slidesToScroll,e.slidesToShow);return l},Gb=(e,t)=>{const n=O8(e);let o=0;if(t>n[n.length-1])t=n[n.length-1];else for(const l in n){if(t<n[l]){t=o;break}o=n[l]}return t},Xb=e=>{const t=e.centerMode?e.slideWidth*Math.floor(e.slidesToShow/2):0;if(e.swipeToSlide){let n;const o=e.listRef,l=o.querySelectorAll&&o.querySelectorAll(\".slick-slide\")||[];if(Array.from(l).every(i=>{if(e.vertical){if(i.offsetTop+Sg(i)/2>e.swipeLeft*-1)return n=i,!1}else if(i.offsetLeft-t+Fp(i)/2>e.swipeLeft*-1)return n=i,!1;return!0}),!n)return 0;const r=e.rtl===!0?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-r)||1}else return e.slidesToScroll},$g=(e,t)=>t.reduce((n,o)=>n&&e.hasOwnProperty(o),!0)?null:console.error(\"Keys Missing:\",e),Ti=e=>{$g(e,[\"left\",\"variableWidth\",\"slideCount\",\"slidesToShow\",\"slideWidth\"]);let t,n;const o=e.slideCount+2*e.slidesToShow;e.vertical?n=o*e.slideHeight:t=E8(e)*e.slideWidth;let l={opacity:1,transition:\"\",WebkitTransition:\"\"};if(e.useTransform){const r=e.vertical?\"translate3d(0px, \"+e.left+\"px, 0px)\":\"translate3d(\"+e.left+\"px, 0px, 0px)\",a=e.vertical?\"translate3d(0px, \"+e.left+\"px, 0px)\":\"translate3d(\"+e.left+\"px, 0px, 0px)\",i=e.vertical?\"translateY(\"+e.left+\"px)\":\"translateX(\"+e.left+\"px)\";l=h(h({},l),{WebkitTransform:r,transform:a,msTransform:i})}else e.vertical?l.top=e.left:l.left=e.left;return e.fade&&(l={opacity:1}),t&&(l.width=t+\"px\"),n&&(l.height=n+\"px\"),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?l.marginTop=e.left+\"px\":l.marginLeft=e.left+\"px\"),l},Hx=e=>{$g(e,[\"left\",\"variableWidth\",\"slideCount\",\"slidesToShow\",\"slideWidth\",\"speed\",\"cssEase\"]);const t=Ti(e);return e.useTransform?(t.WebkitTransition=\"-webkit-transform \"+e.speed+\"ms \"+e.cssEase,t.transition=\"transform \"+e.speed+\"ms \"+e.cssEase):e.vertical?t.transition=\"top \"+e.speed+\"ms \"+e.cssEase:t.transition=\"left \"+e.speed+\"ms \"+e.cssEase,t},Oi=e=>{if(e.unslick)return 0;$g(e,[\"slideIndex\",\"trackRef\",\"infinite\",\"centerMode\",\"slideCount\",\"slidesToShow\",\"slidesToScroll\",\"slideWidth\",\"listWidth\",\"variableWidth\",\"slideHeight\"]);const{slideIndex:t,trackRef:n,infinite:o,centerMode:l,slideCount:r,slidesToShow:a,slidesToScroll:i,slideWidth:s,listWidth:c,variableWidth:u,slideHeight:d,fade:p,vertical:m}=e;let g=0,v,y,b=0;if(p||e.slideCount===1)return 0;let S=0;if(o?(S=-ul(e),r%i!==0&&t+i>r&&(S=-(t>r?a-(t-r):r%i)),l&&(S+=parseInt(a/2))):(r%i!==0&&t+i>r&&(S=a-r%i),l&&(S=parseInt(a/2))),g=S*s,b=S*d,m?v=t*d*-1+b:v=t*s*-1+g,u===!0){let $;const w=n;if($=t+ul(e),y=w&&w.childNodes[$],v=y?y.offsetLeft*-1:0,l===!0){$=o?t+ul(e):t,y=w&&w.children[$],v=0;for(let C=0;C<$;C++)v-=w&&w.children[C]&&w.children[C].offsetWidth;v-=parseInt(e.centerPadding),v+=y&&(c-y.offsetWidth)/2}}return v},ul=e=>e.unslick||!e.infinite?0:e.variableWidth?e.slideCount:e.slidesToShow+(e.centerMode?1:0),oc=e=>e.unslick||!e.infinite?0:e.slideCount,E8=e=>e.slideCount===1?1:ul(e)+e.slideCount+oc(e),M8=e=>e.targetSlide>e.currentSlide?e.targetSlide>e.currentSlide+A8(e)?\"left\":\"right\":e.targetSlide<e.currentSlide-D8(e)?\"right\":\"left\",A8=e=>{let{slidesToShow:t,centerMode:n,rtl:o,centerPadding:l}=e;if(n){let r=(t-1)/2+1;return parseInt(l)>0&&(r+=1),o&&t%2===0&&(r+=1),r}return o?0:t-1},D8=e=>{let{slidesToShow:t,centerMode:n,rtl:o,centerPadding:l}=e;if(n){let r=(t-1)/2+1;return parseInt(l)>0&&(r+=1),!o&&t%2===0&&(r+=1),r}return o?t-1:0},Ub=()=>!!(typeof window<\"u\"&&window.document&&window.document.createElement),gf=e=>{let t,n,o,l;e.rtl?l=e.slideCount-1-e.index:l=e.index;const r=l<0||l>=e.slideCount;e.centerMode?(o=Math.floor(e.slidesToShow/2),n=(l-e.currentSlide)%e.slideCount===0,l>e.currentSlide-o-1&&l<=e.currentSlide+o&&(t=!0)):t=e.currentSlide<=l&&l<e.currentSlide+e.slidesToShow;let a;return e.targetSlide<0?a=e.targetSlide+e.slideCount:e.targetSlide>=e.slideCount?a=e.targetSlide-e.slideCount:a=e.targetSlide,{\"slick-slide\":!0,\"slick-active\":t,\"slick-center\":n,\"slick-cloned\":r,\"slick-current\":l===a}},R8=function(e){const t={};return(e.variableWidth===void 0||e.variableWidth===!1)&&(t.width=e.slideWidth+(typeof e.slideWidth==\"number\"?\"px\":\"\")),e.fade&&(t.position=\"relative\",e.vertical?t.top=-e.index*parseInt(e.slideHeight)+\"px\":t.left=-e.index*parseInt(e.slideWidth)+\"px\",t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition=\"opacity \"+e.speed+\"ms \"+e.cssEase+\", visibility \"+e.speed+\"ms \"+e.cssEase)),t},hf=(e,t)=>e.key+\"-\"+t,k8=function(e,t){let n;const o=[],l=[],r=[],a=t.length,i=Lx(e),s=Fx(e);return t.forEach((c,u)=>{let d;const p={message:\"children\",index:u,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(u)>=0?d=c:d=f(\"div\");const m=R8(h(h({},e),{index:u})),g=d.props.class||\"\";let v=gf(h(h({},e),{index:u}));if(o.push(Ja(d,{key:\"original\"+hf(d,u),tabindex:\"-1\",\"data-index\":u,\"aria-hidden\":!v[\"slick-active\"],class:re(v,g),style:h(h({outline:\"none\"},d.props.style||{}),m),onClick:()=>{e.focusOnSelect&&e.focusOnSelect(p)}})),e.infinite&&e.fade===!1){const y=a-u;y<=ul(e)&&a!==e.slidesToShow&&(n=-y,n>=i&&(d=c),v=gf(h(h({},e),{index:n})),l.push(Ja(d,{key:\"precloned\"+hf(d,n),class:re(v,g),tabindex:\"-1\",\"data-index\":n,\"aria-hidden\":!v[\"slick-active\"],style:h(h({},d.props.style||{}),m),onClick:()=>{e.focusOnSelect&&e.focusOnSelect(p)}}))),a!==e.slidesToShow&&(n=a+u,n<s&&(d=c),v=gf(h(h({},e),{index:n})),r.push(Ja(d,{key:\"postcloned\"+hf(d,n),tabindex:\"-1\",\"data-index\":n,\"aria-hidden\":!v[\"slick-active\"],class:re(v,g),style:h(h({},d.props.style||{}),m),onClick:()=>{e.focusOnSelect&&e.focusOnSelect(p)}})))}}),e.rtl?l.concat(o,r).reverse():l.concat(o,r)},jx=(e,t)=>{let{attrs:n,slots:o}=t;const l=k8(n,xt(o?.default())),{onMouseenter:r,onMouseover:a,onMouseleave:i}=n,s={onMouseenter:r,onMouseover:a,onMouseleave:i},c=h({class:\"slick-track\",style:n.trackStyle},s);return f(\"div\",c,[l])};jx.inheritAttrs=!1;const N8=function(e){let t;return e.infinite?t=Math.ceil(e.slideCount/e.slidesToScroll):t=Math.ceil((e.slideCount-e.slidesToShow)/e.slidesToScroll)+1,t},Wx=(e,t)=>{let{attrs:n}=t;const{slideCount:o,slidesToScroll:l,slidesToShow:r,infinite:a,currentSlide:i,appendDots:s,customPaging:c,clickHandler:u,dotsClass:d,onMouseenter:p,onMouseover:m,onMouseleave:g}=n,v=N8({slideCount:o,slidesToScroll:l,slidesToShow:r,infinite:a}),y={onMouseenter:p,onMouseover:m,onMouseleave:g};let b=[];for(let S=0;S<v;S++){let E=function(M){M&&M.preventDefault(),u(P)};const $=(S+1)*l-1,w=a?$:Lp($,0,o-1),C=w-(l-1),_=a?C:Lp(C,0,o-1),x=re({\"slick-active\":a?i>=_&&i<=w:i===_}),P={message:\"dots\",index:S,slidesToScroll:l,currentSlide:i};b=b.concat(f(\"li\",{key:S,class:x},[ft(c({i:S}),{onClick:E})]))}return ft(s({dots:b}),h({class:d},y))};Wx.inheritAttrs=!1;function Vx(){}function Kx(e,t,n){n&&n.preventDefault(),t(e,n)}const Gx=(e,t)=>{let{attrs:n}=t;const{clickHandler:o,infinite:l,currentSlide:r,slideCount:a,slidesToShow:i}=n,s={\"slick-arrow\":!0,\"slick-prev\":!0};let c=function(m){Kx({message:\"previous\"},o,m)};!l&&(r===0||a<=i)&&(s[\"slick-disabled\"]=!0,c=Vx);const u={key:\"0\",\"data-role\":\"none\",class:s,style:{display:\"block\"},onClick:c},d={currentSlide:r,slideCount:a};let p;return n.prevArrow?p=ft(n.prevArrow(h(h({},u),d)),{key:\"0\",class:s,style:{display:\"block\"},onClick:c},!1):p=f(\"button\",A({key:\"0\",type:\"button\"},u),[\" \",bt(\"Previous\")]),p};Gx.inheritAttrs=!1;const Xx=(e,t)=>{let{attrs:n}=t;const{clickHandler:o,currentSlide:l,slideCount:r}=n,a={\"slick-arrow\":!0,\"slick-next\":!0};let i=function(d){Kx({message:\"next\"},o,d)};dd(n)||(a[\"slick-disabled\"]=!0,i=Vx);const s={key:\"1\",\"data-role\":\"none\",class:re(a),style:{display:\"block\"},onClick:i},c={currentSlide:l,slideCount:r};let u;return n.nextArrow?u=ft(n.nextArrow(h(h({},s),c)),{key:\"1\",class:re(a),style:{display:\"block\"},onClick:i},!1):u=f(\"button\",A({key:\"1\",type:\"button\"},s),[\" \",bt(\"Next\")]),u};Xx.inheritAttrs=!1;var B8=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function Un(){}const L8={name:\"InnerSlider\",mixins:[Er],inheritAttrs:!1,props:h({},Bx),data(){this.preProps=h({},this.$props),this.list=null,this.track=null,this.callbackTimers=[],this.clickable=!0,this.debouncedResize=null;const e=this.ssrInit();return h(h(h({},y8),{currentSlide:this.initialSlide,slideCount:this.children.length}),e)},watch:{autoplay(e,t){!t&&e?this.handleAutoPlay(\"playing\"):e?this.handleAutoPlay(\"update\"):this.pause(\"paused\")},__propsSymbol__(){const e=this.$props,t=h(h({listRef:this.list,trackRef:this.track},e),this.$data);let n=!1;for(const o of Object.keys(this.preProps)){if(!e.hasOwnProperty(o)){n=!0;break}if(!(typeof e[o]==\"object\"||typeof e[o]==\"function\"||typeof e[o]==\"symbol\")&&e[o]!==this.preProps[o]){n=!0;break}}this.updateState(t,n,()=>{this.currentSlide>=e.children.length&&this.changeSlide({message:\"index\",index:e.children.length-e.slidesToShow,currentSlide:this.currentSlide}),!this.preProps.autoplay&&e.autoplay?this.handleAutoPlay(\"playing\"):e.autoplay?this.handleAutoPlay(\"update\"):this.pause(\"paused\")}),this.preProps=h({},e)}},mounted(){if(this.__emit(\"init\"),this.lazyLoad){const e=fu(h(h({},this.$props),this.$data));e.length>0&&(this.setState(t=>({lazyLoadedList:t.lazyLoadedList.concat(e)})),this.__emit(\"lazyLoad\",e))}this.$nextTick(()=>{const e=h({listRef:this.list,trackRef:this.track,children:this.children},this.$props);this.updateState(e,!0,()=>{this.adaptHeight(),this.autoplay&&this.handleAutoPlay(\"playing\")}),this.lazyLoad===\"progressive\"&&(this.lazyLoadTimer=setInterval(this.progressiveLazyLoad,1e3)),this.ro=new Gm(()=>{this.animating?(this.onWindowResized(!1),this.callbackTimers.push(setTimeout(()=>this.onWindowResized(),this.speed))):this.onWindowResized()}),this.ro.observe(this.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"),t=>{t.onfocus=this.$props.pauseOnFocus?this.onSlideFocus:null,t.onblur=this.$props.pauseOnFocus?this.onSlideBlur:null}),window.addEventListener?window.addEventListener(\"resize\",this.onWindowResized):window.attachEvent(\"onresize\",this.onWindowResized)})},beforeUnmount(){var e;this.animationEndCallback&&clearTimeout(this.animationEndCallback),this.lazyLoadTimer&&clearInterval(this.lazyLoadTimer),this.callbackTimers.length&&(this.callbackTimers.forEach(t=>clearTimeout(t)),this.callbackTimers=[]),window.addEventListener?window.removeEventListener(\"resize\",this.onWindowResized):window.detachEvent(\"onresize\",this.onWindowResized),this.autoplayTimer&&clearInterval(this.autoplayTimer),(e=this.ro)===null||e===void 0||e.disconnect()},updated(){if(this.checkImagesLoad(),this.__emit(\"reInit\"),this.lazyLoad){const e=fu(h(h({},this.$props),this.$data));e.length>0&&(this.setState(t=>({lazyLoadedList:t.lazyLoadedList.concat(e)})),this.__emit(\"lazyLoad\"))}this.adaptHeight()},methods:{listRefHandler(e){this.list=e},trackRefHandler(e){this.track=e},adaptHeight(){if(this.adaptiveHeight&&this.list){const e=this.list.querySelector(`[data-index=\"${this.currentSlide}\"]`);this.list.style.height=Sg(e)+\"px\"}},onWindowResized(e){this.debouncedResize&&this.debouncedResize.cancel(),this.debouncedResize=Rm(()=>this.resizeWindow(e),50),this.debouncedResize()},resizeWindow(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(!!!this.track)return;const n=h(h({listRef:this.list,trackRef:this.track,children:this.children},this.$props),this.$data);this.updateState(n,e,()=>{this.autoplay?this.handleAutoPlay(\"update\"):this.pause(\"paused\")}),this.setState({animating:!1}),clearTimeout(this.animationEndCallback),delete this.animationEndCallback},updateState(e,t,n){const o=C8(e);e=h(h(h({},e),o),{slideIndex:o.currentSlide});const l=Oi(e);e=h(h({},e),{left:l});const r=Ti(e);(t||this.children.length!==e.children.length)&&(o.trackStyle=r),this.setState(o,n)},ssrInit(){const e=this.children;if(this.variableWidth){let s=0,c=0;const u=[],d=ul(h(h(h({},this.$props),this.$data),{slideCount:e.length})),p=oc(h(h(h({},this.$props),this.$data),{slideCount:e.length}));e.forEach(g=>{var v,y;const b=((y=(v=g.props.style)===null||v===void 0?void 0:v.width)===null||y===void 0?void 0:y.split(\"px\")[0])||0;u.push(b),s+=b});for(let g=0;g<d;g++)c+=u[u.length-1-g],s+=u[u.length-1-g];for(let g=0;g<p;g++)s+=u[g];for(let g=0;g<this.currentSlide;g++)c+=u[g];const m={width:s+\"px\",left:-c+\"px\"};if(this.centerMode){const g=`${u[this.currentSlide]}px`;m.left=`calc(${m.left} + (100% - ${g}) / 2 ) `}return{trackStyle:m}}const t=e.length,n=h(h(h({},this.$props),this.$data),{slideCount:t}),o=ul(n)+oc(n)+t,l=100/this.slidesToShow*o,r=100/o;let a=-r*(ul(n)+this.currentSlide)*l/100;this.centerMode&&(a+=(100-r*l/100)/2);const i={width:l+\"%\",left:a+\"%\"};return{slideWidth:r+\"%\",trackStyle:i}},checkImagesLoad(){const e=this.list&&this.list.querySelectorAll&&this.list.querySelectorAll(\".slick-slide img\")||[],t=e.length;let n=0;Array.prototype.forEach.call(e,o=>{const l=()=>++n&&n>=t&&this.onWindowResized();if(!o.onclick)o.onclick=()=>o.parentNode.focus();else{const r=o.onclick;o.onclick=()=>{r(),o.parentNode.focus()}}o.onload||(this.$props.lazyLoad?o.onload=()=>{this.adaptHeight(),this.callbackTimers.push(setTimeout(this.onWindowResized,this.speed))}:(o.onload=l,o.onerror=()=>{l(),this.__emit(\"lazyLoadError\")}))})},progressiveLazyLoad(){const e=[],t=h(h({},this.$props),this.$data);for(let n=this.currentSlide;n<this.slideCount+oc(t);n++)if(this.lazyLoadedList.indexOf(n)<0){e.push(n);break}for(let n=this.currentSlide-1;n>=-ul(t);n--)if(this.lazyLoadedList.indexOf(n)<0){e.push(n);break}e.length>0?(this.setState(n=>({lazyLoadedList:n.lazyLoadedList.concat(e)})),this.__emit(\"lazyLoad\",e)):this.lazyLoadTimer&&(clearInterval(this.lazyLoadTimer),delete this.lazyLoadTimer)},slideHandler(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const{asNavFor:n,beforeChange:o,speed:l,afterChange:r}=this.$props,{state:a,nextState:i}=x8(h(h(h({index:e},this.$props),this.$data),{trackRef:this.track,useCSS:this.useCSS&&!t}));if(!a)return;o&&o(this.currentSlide,a.currentSlide);const s=a.lazyLoadedList.filter(c=>this.lazyLoadedList.indexOf(c)<0);this.$attrs.onLazyLoad&&s.length>0&&this.__emit(\"lazyLoad\",s),!this.$props.waitForAnimate&&this.animationEndCallback&&(clearTimeout(this.animationEndCallback),r&&r(this.currentSlide),delete this.animationEndCallback),this.setState(a,()=>{n&&this.asNavForIndex!==e&&(this.asNavForIndex=e,n.innerSlider.slideHandler(e)),i&&(this.animationEndCallback=setTimeout(()=>{const{animating:c}=i,u=B8(i,[\"animating\"]);this.setState(u,()=>{this.callbackTimers.push(setTimeout(()=>this.setState({animating:c}),10)),r&&r(a.currentSlide),delete this.animationEndCallback})},l))})},changeSlide(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=h(h({},this.$props),this.$data),o=w8(n,e);if(!(o!==0&&!o)&&(t===!0?this.slideHandler(o,t):this.slideHandler(o),this.$props.autoplay&&this.handleAutoPlay(\"update\"),this.$props.focusOnSelect)){const l=this.list.querySelectorAll(\".slick-current\");l[0]&&l[0].focus()}},clickHandler(e){this.clickable===!1&&(e.stopPropagation(),e.preventDefault()),this.clickable=!0},keyHandler(e){const t=_8(e,this.accessibility,this.rtl);t!==\"\"&&this.changeSlide({message:t})},selectHandler(e){this.changeSlide(e)},disableBodyScroll(){const e=t=>{t=t||window.event,t.preventDefault&&t.preventDefault(),t.returnValue=!1};window.ontouchmove=e},enableBodyScroll(){window.ontouchmove=null},swipeStart(e){this.verticalSwiping&&this.disableBodyScroll();const t=I8(e,this.swipe,this.draggable);t!==\"\"&&this.setState(t)},swipeMove(e){const t=P8(e,h(h(h({},this.$props),this.$data),{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));t&&(t.swiping&&(this.clickable=!1),this.setState(t))},swipeEnd(e){const t=T8(e,h(h(h({},this.$props),this.$data),{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));if(!t)return;const n=t.triggerSlideHandler;delete t.triggerSlideHandler,this.setState(t),n!==void 0&&(this.slideHandler(n),this.$props.verticalSwiping&&this.enableBodyScroll())},touchEnd(e){this.swipeEnd(e),this.clickable=!0},slickPrev(){this.callbackTimers.push(setTimeout(()=>this.changeSlide({message:\"previous\"}),0))},slickNext(){this.callbackTimers.push(setTimeout(()=>this.changeSlide({message:\"next\"}),0))},slickGoTo(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=Number(e),isNaN(e))return\"\";this.callbackTimers.push(setTimeout(()=>this.changeSlide({message:\"index\",index:e,currentSlide:this.currentSlide},t),0))},play(){let e;if(this.rtl)e=this.currentSlide-this.slidesToScroll;else if(dd(h(h({},this.$props),this.$data)))e=this.currentSlide+this.slidesToScroll;else return!1;this.slideHandler(e)},handleAutoPlay(e){this.autoplayTimer&&clearInterval(this.autoplayTimer);const t=this.autoplaying;if(e===\"update\"){if(t===\"hovered\"||t===\"focused\"||t===\"paused\")return}else if(e===\"leave\"){if(t===\"paused\"||t===\"focused\")return}else if(e===\"blur\"&&(t===\"paused\"||t===\"hovered\"))return;this.autoplayTimer=setInterval(this.play,this.autoplaySpeed+50),this.setState({autoplaying:\"playing\"})},pause(e){this.autoplayTimer&&(clearInterval(this.autoplayTimer),this.autoplayTimer=null);const t=this.autoplaying;e===\"paused\"?this.setState({autoplaying:\"paused\"}):e===\"focused\"?(t===\"hovered\"||t===\"playing\")&&this.setState({autoplaying:\"focused\"}):t===\"playing\"&&this.setState({autoplaying:\"hovered\"})},onDotsOver(){this.autoplay&&this.pause(\"hovered\")},onDotsLeave(){this.autoplay&&this.autoplaying===\"hovered\"&&this.handleAutoPlay(\"leave\")},onTrackOver(){this.autoplay&&this.pause(\"hovered\")},onTrackLeave(){this.autoplay&&this.autoplaying===\"hovered\"&&this.handleAutoPlay(\"leave\")},onSlideFocus(){this.autoplay&&this.pause(\"focused\")},onSlideBlur(){this.autoplay&&this.autoplaying===\"focused\"&&this.handleAutoPlay(\"blur\")},customPaging(e){let{i:t}=e;return f(\"button\",null,[t+1])},appendDots(e){let{dots:t}=e;return f(\"ul\",{style:{display:\"block\"}},[t])}},render(){const e=re(\"slick-slider\",this.$attrs.class,{\"slick-vertical\":this.vertical,\"slick-initialized\":!0}),t=h(h({},this.$props),this.$data);let n=vf(t,[\"fade\",\"cssEase\",\"speed\",\"infinite\",\"centerMode\",\"focusOnSelect\",\"currentSlide\",\"lazyLoad\",\"lazyLoadedList\",\"rtl\",\"slideWidth\",\"slideHeight\",\"listHeight\",\"vertical\",\"slidesToShow\",\"slidesToScroll\",\"slideCount\",\"trackStyle\",\"variableWidth\",\"unslick\",\"centerPadding\",\"targetSlide\",\"useCSS\"]);const{pauseOnHover:o}=this.$props;n=h(h({},n),{focusOnSelect:this.focusOnSelect&&this.clickable?this.selectHandler:null,ref:this.trackRefHandler,onMouseleave:o?this.onTrackLeave:Un,onMouseover:o?this.onTrackOver:Un});let l;if(this.dots===!0&&this.slideCount>=this.slidesToShow){let y=vf(t,[\"dotsClass\",\"slideCount\",\"slidesToShow\",\"currentSlide\",\"slidesToScroll\",\"clickHandler\",\"children\",\"infinite\",\"appendDots\"]);y.customPaging=this.customPaging,y.appendDots=this.appendDots;const{customPaging:b,appendDots:S}=this.$slots;b&&(y.customPaging=b),S&&(y.appendDots=S);const{pauseOnDotsHover:$}=this.$props;y=h(h({},y),{clickHandler:this.changeSlide,onMouseover:$?this.onDotsOver:Un,onMouseleave:$?this.onDotsLeave:Un}),l=f(Wx,y,null)}let r,a;const i=vf(t,[\"infinite\",\"centerMode\",\"currentSlide\",\"slideCount\",\"slidesToShow\"]);i.clickHandler=this.changeSlide;const{prevArrow:s,nextArrow:c}=this.$slots;s&&(i.prevArrow=s),c&&(i.nextArrow=c),this.arrows&&(r=f(Gx,i,null),a=f(Xx,i,null));let u=null;this.vertical&&(u={height:typeof this.listHeight==\"number\"?`${this.listHeight}px`:this.listHeight});let d=null;this.vertical===!1?this.centerMode===!0&&(d={padding:\"0px \"+this.centerPadding}):this.centerMode===!0&&(d={padding:this.centerPadding+\" 0px\"});const p=h(h({},u),d),m=this.touchMove;let g={ref:this.listRefHandler,class:\"slick-list\",style:p,onClick:this.clickHandler,onMousedown:m?this.swipeStart:Un,onMousemove:this.dragging&&m?this.swipeMove:Un,onMouseup:m?this.swipeEnd:Un,onMouseleave:this.dragging&&m?this.swipeEnd:Un,[qt?\"onTouchstartPassive\":\"onTouchstart\"]:m?this.swipeStart:Un,[qt?\"onTouchmovePassive\":\"onTouchmove\"]:this.dragging&&m?this.swipeMove:Un,onTouchend:m?this.touchEnd:Un,onTouchcancel:this.dragging&&m?this.swipeEnd:Un,onKeydown:this.accessibility?this.keyHandler:Un},v={class:e,dir:\"ltr\",style:this.$attrs.style};return this.unslick&&(g={class:\"slick-list\",ref:this.listRefHandler},v={class:e}),f(\"div\",v,[this.unslick?\"\":r,f(\"div\",g,[f(jx,n,{default:()=>[this.children]})]),this.unslick?\"\":a,this.unslick?\"\":l])}},F8=ne({name:\"Slider\",mixins:[Er],inheritAttrs:!1,props:h({},Bx),data(){return this._responsiveMediaHandlers=[],{breakpoint:null}},mounted(){if(this.responsive){const e=this.responsive.map(n=>n.breakpoint);e.sort((n,o)=>n-o),e.forEach((n,o)=>{let l;o===0?l=mf({minWidth:0,maxWidth:n}):l=mf({minWidth:e[o-1]+1,maxWidth:n}),Ub()&&this.media(l,()=>{this.setState({breakpoint:n})})});const t=mf({minWidth:e.slice(-1)[0]});Ub()&&this.media(t,()=>{this.setState({breakpoint:null})})}},beforeUnmount(){this._responsiveMediaHandlers.forEach(function(e){e.mql.removeListener(e.listener)})},methods:{innerSliderRefHandler(e){this.innerSlider=e},media(e,t){const n=window.matchMedia(e),o=l=>{let{matches:r}=l;r&&t()};n.addListener(o),o(n),this._responsiveMediaHandlers.push({mql:n,query:e,listener:o})},slickPrev(){var e;(e=this.innerSlider)===null||e===void 0||e.slickPrev()},slickNext(){var e;(e=this.innerSlider)===null||e===void 0||e.slickNext()},slickGoTo(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var n;(n=this.innerSlider)===null||n===void 0||n.slickGoTo(e,t)},slickPause(){var e;(e=this.innerSlider)===null||e===void 0||e.pause(\"paused\")},slickPlay(){var e;(e=this.innerSlider)===null||e===void 0||e.handleAutoPlay(\"play\")}},render(){var e;let t,n;this.breakpoint?(n=this.responsive.filter(i=>i.breakpoint===this.breakpoint),t=n[0].settings===\"unslick\"?\"unslick\":h(h({},this.$props),n[0].settings)):t=h({},this.$props),t.centerMode&&(t.slidesToScroll>1,t.slidesToScroll=1),t.fade&&(t.slidesToShow>1,t.slidesToScroll>1,t.slidesToShow=1,t.slidesToScroll=1);let o=Ru(this)||[];o=o.filter(i=>typeof i==\"string\"?!!i.trim():!!i),t.variableWidth&&(t.rows>1||t.slidesPerRow>1)&&(console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\"),t.variableWidth=!1);const l=[];let r=null;for(let i=0;i<o.length;i+=t.rows*t.slidesPerRow){const s=[];for(let c=i;c<i+t.rows*t.slidesPerRow;c+=t.slidesPerRow){const u=[];for(let d=c;d<c+t.slidesPerRow&&(t.variableWidth&&(!((e=o[d].props)===null||e===void 0)&&e.style)&&(r=o[d].props.style.width),!(d>=o.length));d+=1)u.push(ft(o[d],{key:100*i+10*c+d,tabindex:-1,style:{width:`${100/t.slidesPerRow}%`,display:\"inline-block\"}}));s.push(f(\"div\",{key:10*i+c},[u]))}t.variableWidth?l.push(f(\"div\",{key:i,style:{width:r}},[s])):l.push(f(\"div\",{key:i},[s]))}if(t===\"unslick\"){const i=\"regular slider \"+(this.className||\"\");return f(\"div\",{class:i},[o])}else l.length<=t.slidesToShow&&(t.unslick=!0);const a=h(h(h({},this.$attrs),t),{children:l,ref:this.innerSliderRefHandler});return f(L8,A(A({},a),{},{__propsSymbol__:[]}),this.$slots)}}),z8=e=>{const{componentCls:t,antCls:n,carouselArrowSize:o,carouselDotOffset:l,marginXXS:r}=e,a=-o*1.25,i=r;return{[t]:h(h({},qe(e)),{\".slick-slider\":{position:\"relative\",display:\"block\",boxSizing:\"border-box\",touchAction:\"pan-y\",WebkitTouchCallout:\"none\",WebkitTapHighlightColor:\"transparent\",\".slick-track, .slick-list\":{transform:\"translate3d(0, 0, 0)\",touchAction:\"pan-y\"}},\".slick-list\":{position:\"relative\",display:\"block\",margin:0,padding:0,overflow:\"hidden\",\"&:focus\":{outline:\"none\"},\"&.dragging\":{cursor:\"pointer\"},\".slick-slide\":{pointerEvents:\"none\",[`input${n}-radio-input, input${n}-checkbox-input`]:{visibility:\"hidden\"},\"&.slick-active\":{pointerEvents:\"auto\",[`input${n}-radio-input, input${n}-checkbox-input`]:{visibility:\"visible\"}},\"> div > div\":{verticalAlign:\"bottom\"}}},\".slick-track\":{position:\"relative\",top:0,insetInlineStart:0,display:\"block\",\"&::before, &::after\":{display:\"table\",content:'\"\"'},\"&::after\":{clear:\"both\"}},\".slick-slide\":{display:\"none\",float:\"left\",height:\"100%\",minHeight:1,img:{display:\"block\"},\"&.dragging img\":{pointerEvents:\"none\"}},\".slick-initialized .slick-slide\":{display:\"block\"},\".slick-vertical .slick-slide\":{display:\"block\",height:\"auto\"},\".slick-arrow.slick-hidden\":{display:\"none\"},\".slick-prev, .slick-next\":{position:\"absolute\",top:\"50%\",display:\"block\",width:o,height:o,marginTop:-o/2,padding:0,color:\"transparent\",fontSize:0,lineHeight:0,background:\"transparent\",border:0,outline:\"none\",cursor:\"pointer\",\"&:hover, &:focus\":{color:\"transparent\",background:\"transparent\",outline:\"none\",\"&::before\":{opacity:1}},\"&.slick-disabled::before\":{opacity:.25}},\".slick-prev\":{insetInlineStart:a,\"&::before\":{content:'\"←\"'}},\".slick-next\":{insetInlineEnd:a,\"&::before\":{content:'\"→\"'}},\".slick-dots\":{position:\"absolute\",insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:15,display:\"flex !important\",justifyContent:\"center\",paddingInlineStart:0,listStyle:\"none\",\"&-bottom\":{bottom:l},\"&-top\":{top:l,bottom:\"auto\"},li:{position:\"relative\",display:\"inline-block\",flex:\"0 1 auto\",boxSizing:\"content-box\",width:e.dotWidth,height:e.dotHeight,marginInline:i,padding:0,textAlign:\"center\",textIndent:-999,verticalAlign:\"top\",transition:`all ${e.motionDurationSlow}`,button:{position:\"relative\",display:\"block\",width:\"100%\",height:e.dotHeight,padding:0,color:\"transparent\",fontSize:0,background:e.colorBgContainer,border:0,borderRadius:1,outline:\"none\",cursor:\"pointer\",opacity:.3,transition:`all ${e.motionDurationSlow}`,\"&: hover, &:focus\":{opacity:.75},\"&::after\":{position:\"absolute\",inset:-i,content:'\"\"'}},\"&.slick-active\":{width:e.dotWidthActive,\"& button\":{background:e.colorBgContainer,opacity:1},\"&: hover, &:focus\":{opacity:1}}}}})}},H8=e=>{const{componentCls:t,carouselDotOffset:n,marginXXS:o}=e,l={width:e.dotHeight,height:e.dotWidth};return{[`${t}-vertical`]:{\".slick-dots\":{top:\"50%\",bottom:\"auto\",flexDirection:\"column\",width:e.dotHeight,height:\"auto\",margin:0,transform:\"translateY(-50%)\",\"&-left\":{insetInlineEnd:\"auto\",insetInlineStart:n},\"&-right\":{insetInlineEnd:n,insetInlineStart:\"auto\"},li:h(h({},l),{margin:`${o}px 0`,verticalAlign:\"baseline\",button:l,\"&.slick-active\":h(h({},l),{button:l})})}}}},j8=e=>{const{componentCls:t}=e;return[{[`${t}-rtl`]:{direction:\"rtl\",\".slick-dots\":{[`${t}-rtl&`]:{flexDirection:\"row-reverse\"}}}},{[`${t}-vertical`]:{\".slick-dots\":{[`${t}-rtl&`]:{flexDirection:\"column\"}}}}]},W8=Xe(\"Carousel\",e=>{const{controlHeightLG:t,controlHeightSM:n}=e,o=Le(e,{carouselArrowSize:t/2,carouselDotOffset:n/2});return[z8(o),H8(o),j8(o)]},{dotWidth:16,dotHeight:3,dotWidthActive:24});var V8=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const K8=()=>({effect:ke(),dots:ye(!0),vertical:ye(),autoplay:ye(),easing:String,beforeChange:de(),afterChange:de(),prefixCls:String,accessibility:ye(),nextArrow:W.any,prevArrow:W.any,pauseOnHover:ye(),adaptiveHeight:ye(),arrows:ye(!1),autoplaySpeed:Number,centerMode:ye(),centerPadding:String,cssEase:String,dotsClass:String,draggable:ye(!1),fade:ye(),focusOnSelect:ye(),infinite:ye(),initialSlide:Number,lazyLoad:ke(),rtl:ye(),slide:String,slidesToShow:Number,slidesToScroll:Number,speed:Number,swipe:ye(),swipeToSlide:ye(),swipeEvent:de(),touchMove:ye(),touchThreshold:Number,variableWidth:ye(),useCSS:ye(),slickGoTo:Number,responsive:Array,dotPosition:ke(),verticalSwiping:ye(!1)}),G8=ne({compatConfig:{MODE:3},name:\"ACarousel\",inheritAttrs:!1,props:K8(),setup(e,t){let{slots:n,attrs:o,expose:l}=t;const r=Z();l({goTo:function(g){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var y;(y=r.value)===null||y===void 0||y.slickGoTo(g,v)},autoplay:g=>{var v,y;(y=(v=r.value)===null||v===void 0?void 0:v.innerSlider)===null||y===void 0||y.handleAutoPlay(g)},prev:()=>{var g;(g=r.value)===null||g===void 0||g.slickPrev()},next:()=>{var g;(g=r.value)===null||g===void 0||g.slickNext()},innerSlider:I(()=>{var g;return(g=r.value)===null||g===void 0?void 0:g.innerSlider})}),ze(()=>{no(e.vertical===void 0)});const{prefixCls:i,direction:s}=Te(\"carousel\",e),[c,u]=W8(i),d=I(()=>e.dotPosition?e.dotPosition:e.vertical!==void 0&&e.vertical?\"right\":\"bottom\"),p=I(()=>d.value===\"left\"||d.value===\"right\"),m=I(()=>{const g=\"slick-dots\";return re({[g]:!0,[`${g}-${d.value}`]:!0,[`${e.dotsClass}`]:!!e.dotsClass})});return()=>{const{dots:g,arrows:v,draggable:y,effect:b}=e,{class:S,style:$}=o,w=V8(o,[\"class\",\"style\"]),C=b===\"fade\"?!0:e.fade,_=re(i.value,{[`${i.value}-rtl`]:s.value===\"rtl\",[`${i.value}-vertical`]:p.value,[`${S}`]:!!S},u.value);return c(f(\"div\",{class:_,style:$},[f(F8,A(A(A({ref:r},e),w),{},{dots:!!g,dotsClass:m.value,arrows:v,draggable:y,fade:C,vertical:p.value}),n)]))}}}),X8=Dt(G8),Cg=\"__RC_CASCADER_SPLIT__\",Ux=\"SHOW_PARENT\",Yx=\"SHOW_CHILD\";function kl(e){return e.join(Cg)}function Qr(e){return e.map(kl)}function U8(e){return e.split(Cg)}function Y8(e){const{label:t,value:n,children:o}=e||{},l=n||\"value\";return{label:t||\"label\",value:l,key:l,children:o||\"children\"}}function Ua(e,t){var n,o;return(n=e.isLeaf)!==null&&n!==void 0?n:!(!((o=e[t.children])===null||o===void 0)&&o.length)}function q8(e){const t=e.parentElement;if(!t)return;const n=e.offsetTop-t.offsetTop;n-t.scrollTop<0?t.scrollTo({top:n}):n+e.offsetHeight-t.scrollTop>t.offsetHeight&&t.scrollTo({top:n+e.offsetHeight-t.offsetHeight})}const qx=Symbol(\"TreeContextKey\"),Z8=ne({compatConfig:{MODE:3},name:\"TreeContext\",props:{value:{type:Object}},setup(e,t){let{slots:n}=t;return et(qx,I(()=>e.value)),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),xg=()=>nt(qx,I(()=>({}))),Zx=Symbol(\"KeysStateKey\"),Q8=e=>{et(Zx,e)},Qx=()=>nt(Zx,{expandedKeys:ee([]),selectedKeys:ee([]),loadedKeys:ee([]),loadingKeys:ee([]),checkedKeys:ee([]),halfCheckedKeys:ee([]),expandedKeysSet:I(()=>new Set),selectedKeysSet:I(()=>new Set),loadedKeysSet:I(()=>new Set),loadingKeysSet:I(()=>new Set),checkedKeysSet:I(()=>new Set),halfCheckedKeysSet:I(()=>new Set),flattenNodes:ee([])}),J8=e=>{let{prefixCls:t,level:n,isStart:o,isEnd:l}=e;const r=`${t}-indent-unit`,a=[];for(let i=0;i<n;i+=1)a.push(f(\"span\",{key:i,class:{[r]:!0,[`${r}-start`]:o[i],[`${r}-end`]:l[i]}},null));return f(\"span\",{\"aria-hidden\":\"true\",class:`${t}-indent`},[a])},Jx={eventKey:[String,Number],prefixCls:String,title:W.any,data:{type:Object,default:void 0},parent:{type:Object,default:void 0},isStart:{type:Array},isEnd:{type:Array},active:{type:Boolean,default:void 0},onMousemove:{type:Function},isLeaf:{type:Boolean,default:void 0},checkable:{type:Boolean,default:void 0},selectable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},disableCheckbox:{type:Boolean,default:void 0},icon:W.any,switcherIcon:W.any,domRef:{type:Function}},e6={prefixCls:{type:String},motion:{type:Object},focusable:{type:Boolean},activeItem:{type:Object},focused:{type:Boolean},tabindex:{type:Number},checkable:{type:Boolean},selectable:{type:Boolean},disabled:{type:Boolean},height:{type:Number},itemHeight:{type:Number},virtual:{type:Boolean},onScroll:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},onBlur:{type:Function},onActiveChange:{type:Function},onContextmenu:{type:Function},onListChangeStart:{type:Function},onListChangeEnd:{type:Function}},ew=()=>({prefixCls:String,focusable:{type:Boolean,default:void 0},activeKey:[Number,String],tabindex:Number,children:W.any,treeData:{type:Array},fieldNames:{type:Object},showLine:{type:[Boolean,Object],default:void 0},showIcon:{type:Boolean,default:void 0},icon:W.any,selectable:{type:Boolean,default:void 0},expandAction:[String,Boolean],disabled:{type:Boolean,default:void 0},multiple:{type:Boolean,default:void 0},checkable:{type:Boolean,default:void 0},checkStrictly:{type:Boolean,default:void 0},draggable:{type:[Function,Boolean]},defaultExpandParent:{type:Boolean,default:void 0},autoExpandParent:{type:Boolean,default:void 0},defaultExpandAll:{type:Boolean,default:void 0},defaultExpandedKeys:{type:Array},expandedKeys:{type:Array},defaultCheckedKeys:{type:Array},checkedKeys:{type:[Object,Array]},defaultSelectedKeys:{type:Array},selectedKeys:{type:Array},allowDrop:{type:Function},dropIndicatorRender:{type:Function},onFocus:{type:Function},onBlur:{type:Function},onKeydown:{type:Function},onContextmenu:{type:Function},onClick:{type:Function},onDblclick:{type:Function},onScroll:{type:Function},onExpand:{type:Function},onCheck:{type:Function},onSelect:{type:Function},onLoad:{type:Function},loadData:{type:Function},loadedKeys:{type:Array},onMouseenter:{type:Function},onMouseleave:{type:Function},onRightClick:{type:Function},onDragstart:{type:Function},onDragenter:{type:Function},onDragover:{type:Function},onDragleave:{type:Function},onDragend:{type:Function},onDrop:{type:Function},onActiveChange:{type:Function},filterTreeNode:{type:Function},motion:W.any,switcherIcon:W.any,height:Number,itemHeight:Number,virtual:{type:Boolean,default:void 0},direction:{type:String},rootClassName:String,rootStyle:Object});var t6=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Yb=\"open\",qb=\"close\",n6=\"---\",zp=ne({compatConfig:{MODE:3},name:\"ATreeNode\",inheritAttrs:!1,props:Jx,isTreeNode:1,setup(e,t){let{attrs:n,slots:o,expose:l}=t;\"slots\"in e.data,`${Object.keys(e.data.slots||{}).map(te=>\"`v-slot:\"+te+\"` \")}`;const r=ee(!1),a=xg(),{expandedKeysSet:i,selectedKeysSet:s,loadedKeysSet:c,loadingKeysSet:u,checkedKeysSet:d,halfCheckedKeysSet:p}=Qx(),{dragOverNodeKey:m,dropPosition:g,keyEntities:v}=a.value,y=I(()=>lc(e.eventKey,{expandedKeysSet:i.value,selectedKeysSet:s.value,loadedKeysSet:c.value,loadingKeysSet:u.value,checkedKeysSet:d.value,halfCheckedKeysSet:p.value,dragOverNodeKey:m,dropPosition:g,keyEntities:v})),b=qn(()=>y.value.expanded),S=qn(()=>y.value.selected),$=qn(()=>y.value.checked),w=qn(()=>y.value.loaded),C=qn(()=>y.value.loading),_=qn(()=>y.value.halfChecked),x=qn(()=>y.value.dragOver),P=qn(()=>y.value.dragOverGapTop),E=qn(()=>y.value.dragOverGapBottom),M=qn(()=>y.value.pos),O=ee(),R=I(()=>{const{eventKey:te}=e,{keyEntities:ae}=a.value,{children:fe}=ae[te]||{};return!!(fe||[]).length}),D=I(()=>{const{isLeaf:te}=e,{loadData:ae}=a.value,fe=R.value;return te===!1?!1:te||!ae&&!fe||ae&&w.value&&!fe}),z=I(()=>D.value?null:b.value?Yb:qb),T=I(()=>{const{disabled:te}=e,{disabled:ae}=a.value;return!!(ae||te)}),k=I(()=>{const{checkable:te}=e,{checkable:ae}=a.value;return!ae||te===!1?!1:ae}),B=I(()=>{const{selectable:te}=e,{selectable:ae}=a.value;return typeof te==\"boolean\"?te:ae}),L=I(()=>{const{data:te,active:ae,checkable:fe,disableCheckbox:Pe,disabled:Oe,selectable:Re}=e;return h(h({active:ae,checkable:fe,disableCheckbox:Pe,disabled:Oe,selectable:Re},te),{dataRef:te,data:te,isLeaf:D.value,checked:$.value,expanded:b.value,loading:C.value,selected:S.value,halfChecked:_.value})}),N=fn(),F=I(()=>{const{eventKey:te}=e,{keyEntities:ae}=a.value,{parent:fe}=ae[te]||{};return h(h({},rc(h({},e,y.value))),{parent:fe})}),j=gt({eventData:F,eventKey:I(()=>e.eventKey),selectHandle:O,pos:M,key:N.vnode.key});l(j);const H=te=>{const{onNodeDoubleClick:ae}=a.value;ae(te,F.value)},K=te=>{if(T.value)return;const{onNodeSelect:ae}=a.value;te.preventDefault(),ae(te,F.value)},G=te=>{if(T.value)return;const{disableCheckbox:ae}=e,{onNodeCheck:fe}=a.value;if(!k.value||ae)return;te.preventDefault();const Pe=!$.value;fe(te,F.value,Pe)},V=te=>{const{onNodeClick:ae}=a.value;ae(te,F.value),B.value?K(te):G(te)},q=te=>{const{onNodeMouseEnter:ae}=a.value;ae(te,F.value)},Q=te=>{const{onNodeMouseLeave:ae}=a.value;ae(te,F.value)},oe=te=>{const{onNodeContextMenu:ae}=a.value;ae(te,F.value)},le=te=>{const{onNodeDragStart:ae}=a.value;te.stopPropagation(),r.value=!0,ae(te,j);try{te.dataTransfer.setData(\"text/plain\",\"\")}catch{}},Y=te=>{const{onNodeDragEnter:ae}=a.value;te.preventDefault(),te.stopPropagation(),ae(te,j)},J=te=>{const{onNodeDragOver:ae}=a.value;te.preventDefault(),te.stopPropagation(),ae(te,j)},ce=te=>{const{onNodeDragLeave:ae}=a.value;te.stopPropagation(),ae(te,j)},ue=te=>{const{onNodeDragEnd:ae}=a.value;te.stopPropagation(),r.value=!1,ae(te,j)},be=te=>{const{onNodeDrop:ae}=a.value;te.preventDefault(),te.stopPropagation(),r.value=!1,ae(te,j)},Ce=te=>{const{onNodeExpand:ae}=a.value;C.value||ae(te,F.value)},ge=()=>{const{data:te}=e,{draggable:ae}=a.value;return!!(ae&&(!ae.nodeDraggable||ae.nodeDraggable(te)))},Se=()=>{const{draggable:te,prefixCls:ae}=a.value;return te&&te?.icon?f(\"span\",{class:`${ae}-draggable-icon`},[te.icon]):null},X=()=>{var te,ae,fe;const{switcherIcon:Pe=o.switcherIcon||((te=a.value.slots)===null||te===void 0?void 0:te[(fe=(ae=e.data)===null||ae===void 0?void 0:ae.slots)===null||fe===void 0?void 0:fe.switcherIcon])}=e,{switcherIcon:Oe}=a.value,Re=Pe||Oe;return typeof Re==\"function\"?Re(L.value):Re},U=()=>{const{loadData:te,onNodeLoad:ae}=a.value;C.value||te&&b.value&&!D.value&&!R.value&&!w.value&&ae(F.value)};Be(()=>{U()}),Wn(()=>{U()});const ie=()=>{const{prefixCls:te}=a.value,ae=X();if(D.value)return ae!==!1?f(\"span\",{class:re(`${te}-switcher`,`${te}-switcher-noop`)},[ae]):null;const fe=re(`${te}-switcher`,`${te}-switcher_${b.value?Yb:qb}`);return ae!==!1?f(\"span\",{onClick:Ce,class:fe},[ae]):null},ve=()=>{var te,ae;const{disableCheckbox:fe}=e,{prefixCls:Pe}=a.value,Oe=T.value;return k.value?f(\"span\",{class:re(`${Pe}-checkbox`,$.value&&`${Pe}-checkbox-checked`,!$.value&&_.value&&`${Pe}-checkbox-indeterminate`,(Oe||fe)&&`${Pe}-checkbox-disabled`),onClick:G},[(ae=(te=a.value).customCheckable)===null||ae===void 0?void 0:ae.call(te)]):null},me=()=>{const{prefixCls:te}=a.value;return f(\"span\",{class:re(`${te}-iconEle`,`${te}-icon__${z.value||\"docu\"}`,C.value&&`${te}-icon_loading`)},null)},he=()=>{const{disabled:te,eventKey:ae}=e,{draggable:fe,dropLevelOffset:Pe,dropPosition:Oe,prefixCls:Re,indent:$e,dropIndicatorRender:xe,dragOverNodeKey:_e,direction:Me}=a.value;return!te&&fe!==!1&&_e===ae?xe({dropPosition:Oe,dropLevelOffset:Pe,indent:$e,prefixCls:Re,direction:Me}):null},se=()=>{var te,ae,fe,Pe,Oe,Re;const{icon:$e=o.icon,data:xe}=e,_e=o.title||((te=a.value.slots)===null||te===void 0?void 0:te[(fe=(ae=e.data)===null||ae===void 0?void 0:ae.slots)===null||fe===void 0?void 0:fe.title])||((Pe=a.value.slots)===null||Pe===void 0?void 0:Pe.title)||e.title,{prefixCls:Me,showIcon:je,icon:Ae,loadData:We}=a.value,at=T.value,pt=`${Me}-node-content-wrapper`;let st;if(je){const Yt=$e||((Oe=a.value.slots)===null||Oe===void 0?void 0:Oe[(Re=xe?.slots)===null||Re===void 0?void 0:Re.icon])||Ae;st=Yt?f(\"span\",{class:re(`${Me}-iconEle`,`${Me}-icon__customize`)},[typeof Yt==\"function\"?Yt(L.value):Yt]):me()}else We&&C.value&&(st=me());let mt;typeof _e==\"function\"?mt=_e(L.value):mt=_e,mt=mt===void 0?n6:mt;const ht=f(\"span\",{class:`${Me}-title`},[mt]);return f(\"span\",{ref:O,title:typeof _e==\"string\"?_e:\"\",class:re(`${pt}`,`${pt}-${z.value||\"normal\"}`,!at&&(S.value||r.value)&&`${Me}-node-selected`),onMouseenter:q,onMouseleave:Q,onContextmenu:oe,onClick:V,onDblclick:H},[st,ht,he()])};return()=>{const te=h(h({},e),n),{eventKey:ae,isLeaf:fe,isStart:Pe,isEnd:Oe,domRef:Re,active:$e,data:xe,onMousemove:_e,selectable:Me}=te,je=t6(te,[\"eventKey\",\"isLeaf\",\"isStart\",\"isEnd\",\"domRef\",\"active\",\"data\",\"onMousemove\",\"selectable\"]),{prefixCls:Ae,filterTreeNode:We,keyEntities:at,dropContainerKey:pt,dropTargetKey:st,draggingNodeKey:mt}=a.value,ht=T.value,Yt=Gl(je,{aria:!0,data:!0}),{level:en}=at[ae]||{},rn=Oe[Oe.length-1],Wt=ge(),bn=!ht&&Wt,An=mt===ae,ro=Me!==void 0?{\"aria-selected\":!!Me}:void 0;return f(\"div\",A(A({ref:Re,class:re(n.class,`${Ae}-treenode`,{[`${Ae}-treenode-disabled`]:ht,[`${Ae}-treenode-switcher-${b.value?\"open\":\"close\"}`]:!fe,[`${Ae}-treenode-checkbox-checked`]:$.value,[`${Ae}-treenode-checkbox-indeterminate`]:_.value,[`${Ae}-treenode-selected`]:S.value,[`${Ae}-treenode-loading`]:C.value,[`${Ae}-treenode-active`]:$e,[`${Ae}-treenode-leaf-last`]:rn,[`${Ae}-treenode-draggable`]:bn,dragging:An,\"drop-target\":st===ae,\"drop-container\":pt===ae,\"drag-over\":!ht&&x.value,\"drag-over-gap-top\":!ht&&P.value,\"drag-over-gap-bottom\":!ht&&E.value,\"filter-node\":We&&We(F.value)}),style:n.style,draggable:bn,\"aria-grabbed\":An,onDragstart:bn?le:void 0,onDragenter:Wt?Y:void 0,onDragover:Wt?J:void 0,onDragleave:Wt?ce:void 0,onDrop:Wt?be:void 0,onDragend:Wt?ue:void 0,onMousemove:_e},ro),Yt),[f(J8,{prefixCls:Ae,level:en,isStart:Pe,isEnd:Oe},null),Se(),ie(),ve(),se()])}}});function Fo(e,t){if(!e)return[];const n=e.slice(),o=n.indexOf(t);return o>=0&&n.splice(o,1),n}function el(e,t){const n=(e||[]).slice();return n.indexOf(t)===-1&&n.push(t),n}function wg(e){return e.split(\"-\")}function tw(e,t){return`${e}-${t}`}function o6(e){return e&&e.type&&e.type.isTreeNode}function l6(e,t){const n=[],o=t[e];function l(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(a=>{let{key:i,children:s}=a;n.push(i),l(s)})}return l(o.children),n}function r6(e){if(e.parent){const t=wg(e.pos);return Number(t[t.length-1])===e.parent.children.length-1}return!1}function a6(e){const t=wg(e.pos);return Number(t[t.length-1])===0}function Zb(e,t,n,o,l,r,a,i,s,c){var u;const{clientX:d,clientY:p}=e,{top:m,height:g}=e.target.getBoundingClientRect(),y=((c===\"rtl\"?-1:1)*((l?.x||0)-d)-12)/o;let b=i[n.eventKey];if(p<m+g/2){const M=a.findIndex(D=>D.key===b.key),O=M<=0?0:M-1,R=a[O].key;b=i[R]}const S=b.key,$=b,w=b.key;let C=0,_=0;if(!s.has(S))for(let M=0;M<y&&r6(b);M+=1)b=b.parent,_+=1;const x=t.eventData,P=b.node;let E=!0;return a6(b)&&b.level===0&&p<m+g/2&&r({dragNode:x,dropNode:P,dropPosition:-1})&&b.key===n.eventKey?C=-1:($.children||[]).length&&s.has(w)?r({dragNode:x,dropNode:P,dropPosition:0})?C=0:E=!1:_===0?y>-1.5?r({dragNode:x,dropNode:P,dropPosition:1})?C=1:E=!1:r({dragNode:x,dropNode:P,dropPosition:0})?C=0:r({dragNode:x,dropNode:P,dropPosition:1})?C=1:E=!1:r({dragNode:x,dropNode:P,dropPosition:1})?C=1:E=!1,{dropPosition:C,dropLevelOffset:_,dropTargetKey:b.key,dropTargetPos:b.pos,dragOverNodeKey:w,dropContainerKey:C===0?null:((u=b.parent)===null||u===void 0?void 0:u.key)||null,dropAllowed:E}}function Qb(e,t){if(!e)return;const{multiple:n}=t;return n?e.slice():e.length?[e[0]]:e}function bf(e){if(!e)return null;let t;if(Array.isArray(e))t={checkedKeys:e,halfCheckedKeys:void 0};else if(typeof e==\"object\")t={checkedKeys:e.checked||void 0,halfCheckedKeys:e.halfChecked||void 0};else return null;return t}function Hp(e,t){const n=new Set;function o(l){if(n.has(l))return;const r=t[l];if(!r)return;n.add(l);const{parent:a,node:i}=r;i.disabled||a&&o(a.key)}return(e||[]).forEach(l=>{o(l)}),[...n]}var i6=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function Gi(e,t){return e??t}function fd(e){const{title:t,_title:n,key:o,children:l}=e||{},r=t||\"title\";return{title:r,_title:n||[r],key:o||\"key\",children:l||\"children\"}}function jp(e){function t(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return kt(n).map(l=>{var r,a,i,s;if(!o6(l))return null;const c=l.children||{},u=l.key,d={};for(const[M,O]of Object.entries(l.props))d[Ia(M)]=O;const{isLeaf:p,checkable:m,selectable:g,disabled:v,disableCheckbox:y}=d,b={isLeaf:p||p===\"\"||void 0,checkable:m||m===\"\"||void 0,selectable:g||g===\"\"||void 0,disabled:v||v===\"\"||void 0,disableCheckbox:y||y===\"\"||void 0},S=h(h({},d),b),{title:$=(r=c.title)===null||r===void 0?void 0:r.call(c,S),icon:w=(a=c.icon)===null||a===void 0?void 0:a.call(c,S),switcherIcon:C=(i=c.switcherIcon)===null||i===void 0?void 0:i.call(c,S)}=d,_=i6(d,[\"title\",\"icon\",\"switcherIcon\"]),x=(s=c.default)===null||s===void 0?void 0:s.call(c),P=h(h(h({},_),{title:$,icon:w,switcherIcon:C,key:u,isLeaf:p}),b),E=t(x);return E.length&&(P.children=E),P})}return t(e)}function s6(e,t,n){const{_title:o,key:l,children:r}=fd(n),a=new Set(t===!0?[]:t),i=[];function s(c){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return c.map((d,p)=>{const m=tw(u?u.pos:\"0\",p),g=Gi(d[l],m);let v;for(let b=0;b<o.length;b+=1){const S=o[b];if(d[S]!==void 0){v=d[S];break}}const y=h(h({},lt(d,[...o,l,r])),{title:v,key:g,parent:u,pos:m,children:null,data:d,isStart:[...u?u.isStart:[],p===0],isEnd:[...u?u.isEnd:[],p===c.length-1]});return i.push(y),t===!0||a.has(g)?y.children=s(d[r]||[],y):y.children=[],y})}return s(e),i}function c6(e,t,n){let o={};typeof n==\"object\"?o=n:o={externalGetKey:n},o=o||{};const{childrenPropName:l,externalGetKey:r,fieldNames:a}=o,{key:i,children:s}=fd(a),c=l||s;let u;r?typeof r==\"string\"?u=p=>p[r]:typeof r==\"function\"&&(u=p=>r(p)):u=(p,m)=>Gi(p[i],m);function d(p,m,g,v){const y=p?p[c]:e,b=p?tw(g.pos,m):\"0\",S=p?[...v,p]:[];if(p){const $=u(p,b),w={node:p,index:m,pos:b,key:$,parentPos:g.node?g.pos:null,level:g.level+1,nodes:S};t(w)}y&&y.forEach(($,w)=>{d($,w,{node:p,pos:b,level:g?g.level+1:-1},S)})}d(null)}function Xi(e){let{initWrapper:t,processEntity:n,onProcessFinished:o,externalGetKey:l,childrenPropName:r,fieldNames:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;const s=l||i,c={},u={};let d={posEntities:c,keyEntities:u};return t&&(d=t(d)||d),c6(e,p=>{const{node:m,index:g,pos:v,key:y,parentPos:b,level:S,nodes:$}=p,w={node:m,nodes:$,index:g,key:y,pos:v,level:S},C=Gi(y,v);c[v]=w,u[C]=w,w.parent=c[b],w.parent&&(w.parent.children=w.parent.children||[],w.parent.children.push(w)),n&&n(w,d)},{externalGetKey:s,childrenPropName:r,fieldNames:a}),o&&o(d),d}function lc(e,t){let{expandedKeysSet:n,selectedKeysSet:o,loadedKeysSet:l,loadingKeysSet:r,checkedKeysSet:a,halfCheckedKeysSet:i,dragOverNodeKey:s,dropPosition:c,keyEntities:u}=t;const d=u[e];return{eventKey:e,expanded:n.has(e),selected:o.has(e),loaded:l.has(e),loading:r.has(e),checked:a.has(e),halfChecked:i.has(e),pos:String(d?d.pos:\"\"),parent:d.parent,dragOver:s===e&&c===0,dragOverGapTop:s===e&&c===-1,dragOverGapBottom:s===e&&c===1}}function rc(e){const{data:t,expanded:n,selected:o,checked:l,loaded:r,loading:a,halfChecked:i,dragOver:s,dragOverGapTop:c,dragOverGapBottom:u,pos:d,active:p,eventKey:m}=e,g=h(h({dataRef:t},t),{expanded:n,selected:o,checked:l,loaded:r,loading:a,halfChecked:i,dragOver:s,dragOverGapTop:c,dragOverGapBottom:u,pos:d,active:p,eventKey:m,key:m});return\"props\"in g||Object.defineProperty(g,\"props\",{get(){return e}}),g}const u6=(e,t)=>I(()=>Xi(e.value,{fieldNames:t.value,initWrapper:o=>h(h({},o),{pathKeyEntities:{}}),processEntity:(o,l)=>{const r=o.nodes.map(a=>a[t.value.value]).join(Cg);l.pathKeyEntities[r]=o,o.key=r}}).pathKeyEntities);function d6(e){const t=ee(!1),n=Z({});return ze(()=>{if(!e.value){t.value=!1,n.value={};return}let o={matchInputWidth:!0,limit:50};e.value&&typeof e.value==\"object\"&&(o=h(h({},o),e.value)),o.limit<=0&&delete o.limit,t.value=!0,n.value=o}),{showSearch:t,searchConfig:n}}const oi=\"__rc_cascader_search_mark__\",f6=(e,t,n)=>{let{label:o}=n;return t.some(l=>String(l[o]).toLowerCase().includes(e.toLowerCase()))},p6=e=>{let{path:t,fieldNames:n}=e;return t.map(o=>o[n.label]).join(\" / \")},m6=(e,t,n,o,l,r)=>I(()=>{const{filter:a=f6,render:i=p6,limit:s=50,sort:c}=l.value,u=[];if(!e.value)return[];function d(p,m){p.forEach(g=>{if(!c&&s>0&&u.length>=s)return;const v=[...m,g],y=g[n.value.children];(!y||y.length===0||r.value)&&a(e.value,v,{label:n.value.label})&&u.push(h(h({},g),{[n.value.label]:i({inputValue:e.value,path:v,prefixCls:o.value,fieldNames:n.value}),[oi]:v})),y&&d(g[n.value.children],v)})}return d(t.value,[]),c&&u.sort((p,m)=>c(p[oi],m[oi],e.value,n.value)),s>0?u.slice(0,s):u});function Jb(e,t,n){const o=new Set(e);return e.filter(l=>{const r=t[l],a=r?r.parent:null,i=r?r.children:null;return n===Yx?!(i&&i.some(s=>s.key&&o.has(s.key))):!(a&&!a.node.disabled&&o.has(a.key))})}function Ei(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var l;let r=t;const a=[];for(let i=0;i<e.length;i+=1){const s=e[i],c=r?.findIndex(d=>{const p=d[n.value];return o?String(p)===String(s):p===s}),u=c!==-1?r?.[c]:null;a.push({value:(l=u?.[n.value])!==null&&l!==void 0?l:s,index:c,option:u}),r=u?.[n.children]}return a}const v6=(e,t,n)=>I(()=>{const o=[],l=[];return n.value.forEach(r=>{Ei(r,e.value,t.value).every(i=>i.option)?l.push(r):o.push(r)}),[l,o]});function nw(e,t){const n=new Set;return e.forEach(o=>{t.has(o)||n.add(o)}),n}function g6(e){const{disabled:t,disableCheckbox:n,checkable:o}=e||{};return!!(t||n)||o===!1}function h6(e,t,n,o){const l=new Set(e),r=new Set;for(let i=0;i<=n;i+=1)(t.get(i)||new Set).forEach(c=>{const{key:u,node:d,children:p=[]}=c;l.has(u)&&!o(d)&&p.filter(m=>!o(m.node)).forEach(m=>{l.add(m.key)})});const a=new Set;for(let i=n;i>=0;i-=1)(t.get(i)||new Set).forEach(c=>{const{parent:u,node:d}=c;if(o(d)||!c.parent||a.has(c.parent.key))return;if(o(c.parent.node)){a.add(u.key);return}let p=!0,m=!1;(u.children||[]).filter(g=>!o(g.node)).forEach(g=>{let{key:v}=g;const y=l.has(v);p&&!y&&(p=!1),!m&&(y||r.has(v))&&(m=!0)}),p&&l.add(u.key),m&&r.add(u.key),a.add(u.key)});return{checkedKeys:Array.from(l),halfCheckedKeys:Array.from(nw(r,l))}}function b6(e,t,n,o,l){const r=new Set(e);let a=new Set(t);for(let s=0;s<=o;s+=1)(n.get(s)||new Set).forEach(u=>{const{key:d,node:p,children:m=[]}=u;!r.has(d)&&!a.has(d)&&!l(p)&&m.filter(g=>!l(g.node)).forEach(g=>{r.delete(g.key)})});a=new Set;const i=new Set;for(let s=o;s>=0;s-=1)(n.get(s)||new Set).forEach(u=>{const{parent:d,node:p}=u;if(l(p)||!u.parent||i.has(u.parent.key))return;if(l(u.parent.node)){i.add(d.key);return}let m=!0,g=!1;(d.children||[]).filter(v=>!l(v.node)).forEach(v=>{let{key:y}=v;const b=r.has(y);m&&!b&&(m=!1),!g&&(b||a.has(y))&&(g=!0)}),m||r.delete(d.key),g&&a.add(d.key),i.add(d.key)});return{checkedKeys:Array.from(r),halfCheckedKeys:Array.from(nw(a,r))}}function go(e,t,n,o,l,r){let a;r?a=r:a=g6;const i=new Set(e.filter(c=>!!n[c]));let s;return t===!0?s=h6(i,l,o,a):s=b6(i,t.halfCheckedKeys,l,o,a),s}const y6=(e,t,n,o,l)=>I(()=>{const r=l.value||(a=>{let{labels:i}=a;const s=o.value?i.slice(-1):i,c=\" / \";return s.every(u=>[\"string\",\"number\"].includes(typeof u))?s.join(c):s.reduce((u,d,p)=>{const m=Gt(d)?ft(d,{key:p}):d;return p===0?[m]:[...u,c,m]},[])});return e.value.map(a=>{const i=Ei(a,t.value,n.value),s=r({labels:i.map(u=>{let{option:d,value:p}=u;var m;return(m=d?.[n.value.label])!==null&&m!==void 0?m:p}),selectedOptions:i.map(u=>{let{option:d}=u;return d})}),c=kl(a);return{label:s,value:c,key:c,valueCells:a}})}),ow=Symbol(\"CascaderContextKey\"),S6=e=>{et(ow,e)},pd=()=>nt(ow),$6=()=>{const e=Bi(),{values:t}=pd(),[n,o]=yt([]);return pe(()=>e.open,()=>{if(e.open&&!e.multiple){const l=t.value[0];o(l||[])}},{immediate:!0}),[n,o]},C6=(e,t,n,o,l,r)=>{const a=Bi(),i=I(()=>a.direction===\"rtl\"),[s,c,u]=[Z([]),Z(),Z([])];ze(()=>{let v=-1,y=t.value;const b=[],S=[],$=o.value.length;for(let C=0;C<$&&y;C+=1){const _=y.findIndex(x=>x[n.value.value]===o.value[C]);if(_===-1)break;v=_,b.push(v),S.push(o.value[C]),y=y[v][n.value.children]}let w=t.value;for(let C=0;C<b.length-1;C+=1)w=w[b[C]][n.value.children];[s.value,c.value,u.value]=[S,v,w]});const d=v=>{l(v)},p=v=>{const y=u.value.length;let b=c.value;b===-1&&v<0&&(b=y);for(let S=0;S<y;S+=1){b=(b+v+y)%y;const $=u.value[b];if($&&!$.disabled){const w=$[n.value.value],C=s.value.slice(0,-1).concat(w);d(C);return}}},m=()=>{if(s.value.length>1){const v=s.value.slice(0,-1);d(v)}else a.toggleOpen(!1)},g=()=>{var v;const b=(((v=u.value[c.value])===null||v===void 0?void 0:v[n.value.children])||[]).find(S=>!S.disabled);if(b){const S=[...s.value,b[n.value.value]];d(S)}};e.expose({onKeydown:v=>{const{which:y}=v;switch(y){case we.UP:case we.DOWN:{let b=0;y===we.UP?b=-1:y===we.DOWN&&(b=1),b!==0&&p(b);break}case we.LEFT:{i.value?g():m();break}case we.RIGHT:{i.value?m():g();break}case we.BACKSPACE:{a.searchValue||m();break}case we.ENTER:{if(s.value.length){const b=u.value[c.value],S=b?.[oi]||[];S.length?r(S.map($=>$[n.value.value]),S[S.length-1]):r(s.value,b)}break}case we.ESC:a.toggleOpen(!1),open&&v.stopPropagation()}},onKeyup:()=>{}})};function md(e){let{prefixCls:t,checked:n,halfChecked:o,disabled:l,onClick:r}=e;const{customSlots:a,checkable:i}=pd(),s=i.value!==!1?a.value.checkable:i.value,c=typeof s==\"function\"?s():typeof s==\"boolean\"?null:s;return f(\"span\",{class:{[t]:!0,[`${t}-checked`]:n,[`${t}-indeterminate`]:!n&&o,[`${t}-disabled`]:l},onClick:r},[c])}md.props=[\"prefixCls\",\"checked\",\"halfChecked\",\"disabled\",\"onClick\"];md.displayName=\"Checkbox\";md.inheritAttrs=!1;const lw=\"__cascader_fix_label__\";function vd(e){let{prefixCls:t,multiple:n,options:o,activeValue:l,prevValuePath:r,onToggleOpen:a,onSelect:i,onActive:s,checkedSet:c,halfCheckedSet:u,loadingKeys:d,isSelectable:p}=e;var m,g,v,y,b,S;const $=`${t}-menu`,w=`${t}-menu-item`,{fieldNames:C,changeOnSelect:_,expandTrigger:x,expandIcon:P,loadingIcon:E,dropdownMenuColumnStyle:M,customSlots:O}=pd(),R=(m=P.value)!==null&&m!==void 0?m:(v=(g=O.value).expandIcon)===null||v===void 0?void 0:v.call(g),D=(y=E.value)!==null&&y!==void 0?y:(S=(b=O.value).loadingIcon)===null||S===void 0?void 0:S.call(b),z=x.value===\"hover\";return f(\"ul\",{class:$,role:\"menu\"},[o.map(T=>{var k;const{disabled:B}=T,L=T[oi],N=(k=T[lw])!==null&&k!==void 0?k:T[C.value.label],F=T[C.value.value],j=Ua(T,C.value),H=L?L.map(Y=>Y[C.value.value]):[...r,F],K=kl(H),G=d.includes(K),V=c.has(K),q=u.has(K),Q=()=>{!B&&(!z||!j)&&s(H)},oe=()=>{p(T)&&i(H,j)};let le;return typeof T.title==\"string\"?le=T.title:typeof N==\"string\"&&(le=N),f(\"li\",{key:K,class:[w,{[`${w}-expand`]:!j,[`${w}-active`]:l===F,[`${w}-disabled`]:B,[`${w}-loading`]:G}],style:M.value,role:\"menuitemcheckbox\",title:le,\"aria-checked\":V,\"data-path-key\":K,onClick:()=>{Q(),(!n||j)&&oe()},onDblclick:()=>{_.value&&a(!1)},onMouseenter:()=>{z&&Q()},onMousedown:Y=>{Y.preventDefault()}},[n&&f(md,{prefixCls:`${t}-checkbox`,checked:V,halfChecked:q,disabled:B,onClick:Y=>{Y.stopPropagation(),oe()}},null),f(\"div\",{class:`${w}-content`},[N]),!G&&R&&!j&&f(\"div\",{class:`${w}-expand-icon`},[ft(R)]),G&&D&&f(\"div\",{class:`${w}-loading-icon`},[ft(D)])])})])}vd.props=[\"prefixCls\",\"multiple\",\"options\",\"activeValue\",\"prevValuePath\",\"onToggleOpen\",\"onSelect\",\"onActive\",\"checkedSet\",\"halfCheckedSet\",\"loadingKeys\",\"isSelectable\"];vd.displayName=\"Column\";vd.inheritAttrs=!1;const x6=ne({compatConfig:{MODE:3},name:\"OptionList\",inheritAttrs:!1,setup(e,t){const{attrs:n,slots:o}=t,l=Bi(),r=Z(),a=I(()=>l.direction===\"rtl\"),{options:i,values:s,halfValues:c,fieldNames:u,changeOnSelect:d,onSelect:p,searchOptions:m,dropdownPrefixCls:g,loadData:v,expandTrigger:y,customSlots:b}=pd(),S=I(()=>g.value||l.prefixCls),$=ee([]),w=k=>{if(!v.value||l.searchValue)return;const L=Ei(k,i.value,u.value).map(F=>{let{option:j}=F;return j}),N=L[L.length-1];if(N&&!Ua(N,u.value)){const F=kl(k);$.value=[...$.value,F],v.value(L)}};ze(()=>{$.value.length&&$.value.forEach(k=>{const B=U8(k),L=Ei(B,i.value,u.value,!0).map(F=>{let{option:j}=F;return j}),N=L[L.length-1];(!N||N[u.value.children]||Ua(N,u.value))&&($.value=$.value.filter(F=>F!==k))})});const C=I(()=>new Set(Qr(s.value))),_=I(()=>new Set(Qr(c.value))),[x,P]=$6(),E=k=>{P(k),w(k)},M=k=>{const{disabled:B}=k,L=Ua(k,u.value);return!B&&(L||d.value||l.multiple)},O=function(k,B){let L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;p(k),!l.multiple&&(B||d.value&&(y.value===\"hover\"||L))&&l.toggleOpen(!1)},R=I(()=>l.searchValue?m.value:i.value),D=I(()=>{const k=[{options:R.value}];let B=R.value;for(let L=0;L<x.value.length;L+=1){const N=x.value[L],F=B.find(H=>H[u.value.value]===N),j=F?.[u.value.children];if(!j?.length)break;B=j,k.push({options:j})}return k});C6(t,R,u,x,E,(k,B)=>{M(B)&&O(k,Ua(B,u.value),!0)});const T=k=>{k.preventDefault()};return Be(()=>{pe(x,k=>{var B;for(let L=0;L<k.length;L+=1){const N=k.slice(0,L+1),F=kl(N),j=(B=r.value)===null||B===void 0?void 0:B.querySelector(`li[data-path-key=\"${F.replace(/\\\\{0,2}\"/g,'\\\\\"')}\"]`);j&&q8(j)}},{flush:\"post\",immediate:!0})}),()=>{var k,B,L,N,F;const{notFoundContent:j=((k=o.notFoundContent)===null||k===void 0?void 0:k.call(o))||((L=(B=b.value).notFoundContent)===null||L===void 0?void 0:L.call(B)),multiple:H,toggleOpen:K}=l,G=!(!((F=(N=D.value[0])===null||N===void 0?void 0:N.options)===null||F===void 0)&&F.length),V=[{[u.value.value]:\"__EMPTY__\",[lw]:j,disabled:!0}],q=h(h({},n),{multiple:!G&&H,onSelect:O,onActive:E,onToggleOpen:K,checkedSet:C.value,halfCheckedSet:_.value,loadingKeys:$.value,isSelectable:M}),oe=(G?[{options:V}]:D.value).map((le,Y)=>{const J=x.value.slice(0,Y),ce=x.value[Y];return f(vd,A(A({key:Y},q),{},{prefixCls:S.value,options:le.options,prevValuePath:J,activeValue:ce}),null)});return f(\"div\",{class:[`${S.value}-menus`,{[`${S.value}-menu-empty`]:G,[`${S.value}-rtl`]:a.value}],onMousedown:T,ref:r},[oe])}}});function gd(e){const t=Z(0),n=ee();return ze(()=>{const o=new Map;let l=0;const r=e.value||{};for(const a in r)if(Object.prototype.hasOwnProperty.call(r,a)){const i=r[a],{level:s}=i;let c=o.get(s);c||(c=new Set,o.set(s,c)),c.add(i),l=Math.max(l,s)}t.value=l,n.value=o}),{maxLevel:t,levelEntities:n}}function w6(){return h(h({},lt(Uu(),[\"tokenSeparators\",\"mode\",\"showSearch\"])),{id:String,prefixCls:String,fieldNames:De(),children:Array,value:{type:[String,Number,Array]},defaultValue:{type:[String,Number,Array]},changeOnSelect:{type:Boolean,default:void 0},displayRender:Function,checkable:{type:Boolean,default:void 0},showCheckedStrategy:{type:String,default:Ux},showSearch:{type:[Boolean,Object],default:void 0},searchValue:String,onSearch:Function,expandTrigger:String,options:Array,dropdownPrefixCls:String,loadData:Function,popupVisible:{type:Boolean,default:void 0},dropdownClassName:String,dropdownMenuColumnStyle:{type:Object,default:void 0},popupStyle:{type:Object,default:void 0},dropdownStyle:{type:Object,default:void 0},popupPlacement:String,placement:String,onPopupVisibleChange:Function,onDropdownVisibleChange:Function,expandIcon:W.any,loadingIcon:W.any})}function rw(){return h(h({},w6()),{onChange:Function,customSlots:Object})}function _6(e){return Array.isArray(e)&&Array.isArray(e[0])}function ey(e){return e?_6(e)?e:(e.length===0?[]:[e]).map(t=>Array.isArray(t)?t:[t]):[]}const I6=ne({compatConfig:{MODE:3},name:\"Cascader\",inheritAttrs:!1,props:Je(rw(),{}),setup(e,t){let{attrs:n,expose:o,slots:l}=t;const r=Cv(Ve(e,\"id\")),a=I(()=>!!e.checkable),[i,s]=Mt(e.defaultValue,{value:I(()=>e.value),postState:ey}),c=I(()=>Y8(e.fieldNames)),u=I(()=>e.options||[]),d=u6(u,c),p=Y=>{const J=d.value;return Y.map(ce=>{const{nodes:ue}=J[ce];return ue.map(be=>be[c.value.value])})},[m,g]=Mt(\"\",{value:I(()=>e.searchValue),postState:Y=>Y||\"\"}),v=(Y,J)=>{g(Y),J.source!==\"blur\"&&e.onSearch&&e.onSearch(Y)},{showSearch:y,searchConfig:b}=d6(Ve(e,\"showSearch\")),S=m6(m,u,c,I(()=>e.dropdownPrefixCls||e.prefixCls),b,Ve(e,\"changeOnSelect\")),$=v6(u,c,i),[w,C,_]=[Z([]),Z([]),Z([])],{maxLevel:x,levelEntities:P}=gd(d);ze(()=>{const[Y,J]=$.value;if(!a.value||!i.value.length){[w.value,C.value,_.value]=[Y,[],J];return}const ce=Qr(Y),ue=d.value,{checkedKeys:be,halfCheckedKeys:Ce}=go(ce,!0,ue,x.value,P.value);[w.value,C.value,_.value]=[p(be),p(Ce),J]});const E=I(()=>{const Y=Qr(w.value),J=Jb(Y,d.value,e.showCheckedStrategy);return[..._.value,...p(J)]}),M=y6(E,u,c,a,Ve(e,\"displayRender\")),O=Y=>{if(s(Y),e.onChange){const J=ey(Y),ce=J.map(Ce=>Ei(Ce,u.value,c.value).map(ge=>ge.option)),ue=a.value?J:J[0],be=a.value?ce:ce[0];e.onChange(ue,be)}},R=Y=>{if(g(\"\"),!a.value)O(Y);else{const J=kl(Y),ce=Qr(w.value),ue=Qr(C.value),be=ce.includes(J),Ce=_.value.some(X=>kl(X)===J);let ge=w.value,Se=_.value;if(Ce&&!be)Se=_.value.filter(X=>kl(X)!==J);else{const X=be?ce.filter(ve=>ve!==J):[...ce,J];let U;be?{checkedKeys:U}=go(X,{halfCheckedKeys:ue},d.value,x.value,P.value):{checkedKeys:U}=go(X,!0,d.value,x.value,P.value);const ie=Jb(U,d.value,e.showCheckedStrategy);ge=p(ie)}O([...Se,...ge])}},D=(Y,J)=>{if(J.type===\"clear\"){O([]);return}const{valueCells:ce}=J.values[0];R(ce)},z=I(()=>e.open!==void 0?e.open:e.popupVisible),T=I(()=>e.dropdownStyle||e.popupStyle||{}),k=I(()=>e.placement||e.popupPlacement),B=Y=>{var J,ce;(J=e.onDropdownVisibleChange)===null||J===void 0||J.call(e,Y),(ce=e.onPopupVisibleChange)===null||ce===void 0||ce.call(e,Y)},{changeOnSelect:L,checkable:N,dropdownPrefixCls:F,loadData:j,expandTrigger:H,expandIcon:K,loadingIcon:G,dropdownMenuColumnStyle:V,customSlots:q,dropdownClassName:Q}=Wo(e);S6({options:u,fieldNames:c,values:w,halfValues:C,changeOnSelect:L,onSelect:R,checkable:N,searchOptions:S,dropdownPrefixCls:F,loadData:j,expandTrigger:H,expandIcon:K,loadingIcon:G,dropdownMenuColumnStyle:V,customSlots:q});const oe=Z();o({focus(){var Y;(Y=oe.value)===null||Y===void 0||Y.focus()},blur(){var Y;(Y=oe.value)===null||Y===void 0||Y.blur()},scrollTo(Y){var J;(J=oe.value)===null||J===void 0||J.scrollTo(Y)}});const le=I(()=>lt(e,[\"id\",\"prefixCls\",\"fieldNames\",\"defaultValue\",\"value\",\"changeOnSelect\",\"onChange\",\"displayRender\",\"checkable\",\"searchValue\",\"onSearch\",\"showSearch\",\"expandTrigger\",\"options\",\"dropdownPrefixCls\",\"loadData\",\"popupVisible\",\"open\",\"dropdownClassName\",\"dropdownMenuColumnStyle\",\"popupPlacement\",\"placement\",\"onDropdownVisibleChange\",\"onPopupVisibleChange\",\"expandIcon\",\"loadingIcon\",\"customSlots\",\"showCheckedStrategy\",\"children\"]));return()=>{const Y=!(m.value?S.value:u.value).length,{dropdownMatchSelectWidth:J=!1}=e,ce=m.value&&b.value.matchInputWidth||Y?{}:{minWidth:\"auto\"};return f(Sv,A(A(A({},le.value),n),{},{ref:oe,id:r,prefixCls:e.prefixCls,dropdownMatchSelectWidth:J,dropdownStyle:h(h({},T.value),ce),displayValues:M.value,onDisplayValuesChange:D,mode:a.value?\"multiple\":void 0,searchValue:m.value,onSearch:v,showSearch:y.value,OptionList:x6,emptyOptions:Y,open:z.value,dropdownClassName:Q.value,placement:k.value,onDropdownVisibleChange:B,getRawInputElement:()=>{var ue;return(ue=l.default)===null||ue===void 0?void 0:ue.call(l)}}),l)}}}),aw=()=>wn()&&window.document.documentElement,iw=e=>{if(wn()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(o=>o in n.style)}return!1},P6=(e,t)=>{if(!iw(e))return!1;const n=document.createElement(\"div\"),o=n.style[e];return n.style[e]=t,n.style[e]!==o};function _g(e,t){return!Array.isArray(e)&&t!==void 0?P6(e,t):iw(e)}let _s;const T6=()=>{if(!aw())return!1;if(_s!==void 0)return _s;const e=document.createElement(\"div\");return e.style.display=\"flex\",e.style.flexDirection=\"column\",e.style.rowGap=\"1px\",e.appendChild(document.createElement(\"div\")),e.appendChild(document.createElement(\"div\")),document.body.appendChild(e),_s=e.scrollHeight===1,document.body.removeChild(e),_s},sw=()=>{const e=ee(!1);return Be(()=>{e.value=T6()}),e},cw=Symbol(\"rowContextKey\"),O6=e=>{et(cw,e)},E6=()=>nt(cw,{gutter:I(()=>{}),wrap:I(()=>{}),supportFlexGap:I(()=>{})}),M6=e=>{const{componentCls:t}=e;return{[t]:{display:\"flex\",flexFlow:\"row wrap\",minWidth:0,\"&::before, &::after\":{display:\"flex\"},\"&-no-wrap\":{flexWrap:\"nowrap\"},\"&-start\":{justifyContent:\"flex-start\"},\"&-center\":{justifyContent:\"center\"},\"&-end\":{justifyContent:\"flex-end\"},\"&-space-between\":{justifyContent:\"space-between\"},\"&-space-around \":{justifyContent:\"space-around\"},\"&-space-evenly \":{justifyContent:\"space-evenly\"},\"&-top\":{alignItems:\"flex-start\"},\"&-middle\":{alignItems:\"center\"},\"&-bottom\":{alignItems:\"flex-end\"}}}},A6=e=>{const{componentCls:t}=e;return{[t]:{position:\"relative\",maxWidth:\"100%\",minHeight:1}}},D6=(e,t)=>{const{componentCls:n,gridColumns:o}=e,l={};for(let r=o;r>=0;r--)r===0?(l[`${n}${t}-${r}`]={display:\"none\"},l[`${n}-push-${r}`]={insetInlineStart:\"auto\"},l[`${n}-pull-${r}`]={insetInlineEnd:\"auto\"},l[`${n}${t}-push-${r}`]={insetInlineStart:\"auto\"},l[`${n}${t}-pull-${r}`]={insetInlineEnd:\"auto\"},l[`${n}${t}-offset-${r}`]={marginInlineEnd:0},l[`${n}${t}-order-${r}`]={order:0}):(l[`${n}${t}-${r}`]={display:\"block\",flex:`0 0 ${r/o*100}%`,maxWidth:`${r/o*100}%`},l[`${n}${t}-push-${r}`]={insetInlineStart:`${r/o*100}%`},l[`${n}${t}-pull-${r}`]={insetInlineEnd:`${r/o*100}%`},l[`${n}${t}-offset-${r}`]={marginInlineStart:`${r/o*100}%`},l[`${n}${t}-order-${r}`]={order:r});return l},Wp=(e,t)=>D6(e,t),R6=(e,t,n)=>({[`@media (min-width: ${t}px)`]:h({},Wp(e,n))}),k6=Xe(\"Grid\",e=>[M6(e)]),N6=Xe(\"Grid\",e=>{const t=Le(e,{gridColumns:24}),n={\"-sm\":t.screenSMMin,\"-md\":t.screenMDMin,\"-lg\":t.screenLGMin,\"-xl\":t.screenXLMin,\"-xxl\":t.screenXXLMin};return[A6(t),Wp(t,\"\"),Wp(t,\"-xs\"),Object.keys(n).map(o=>R6(t,n[o],o)).reduce((o,l)=>h(h({},o),l),{})]}),B6=()=>({align:Fe([String,Object]),justify:Fe([String,Object]),prefixCls:String,gutter:Fe([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),Ig=ne({compatConfig:{MODE:3},name:\"ARow\",inheritAttrs:!1,props:B6(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"row\",e),[a,i]=k6(l);let s;const c=Mv(),u=Z({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),d=Z({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),p=$=>I(()=>{if(typeof e[$]==\"string\")return e[$];if(typeof e[$]!=\"object\")return\"\";for(let w=0;w<il.length;w++){const C=il[w];if(!d.value[C])continue;const _=e[$][C];if(_!==void 0)return _}return\"\"}),m=p(\"align\"),g=p(\"justify\"),v=sw();Be(()=>{s=c.value.subscribe($=>{d.value=$;const w=e.gutter||0;(!Array.isArray(w)&&typeof w==\"object\"||Array.isArray(w)&&(typeof w[0]==\"object\"||typeof w[1]==\"object\"))&&(u.value=$)})}),ot(()=>{c.value.unsubscribe(s)});const y=I(()=>{const $=[void 0,void 0],{gutter:w=0}=e;return(Array.isArray(w)?w:[w,void 0]).forEach((_,x)=>{if(typeof _==\"object\")for(let P=0;P<il.length;P++){const E=il[P];if(u.value[E]&&_[E]!==void 0){$[x]=_[E];break}}else $[x]=_}),$});O6({gutter:y,supportFlexGap:v,wrap:I(()=>e.wrap)});const b=I(()=>re(l.value,{[`${l.value}-no-wrap`]:e.wrap===!1,[`${l.value}-${g.value}`]:g.value,[`${l.value}-${m.value}`]:m.value,[`${l.value}-rtl`]:r.value===\"rtl\"},o.class,i.value)),S=I(()=>{const $=y.value,w={},C=$[0]!=null&&$[0]>0?`${$[0]/-2}px`:void 0,_=$[1]!=null&&$[1]>0?`${$[1]/-2}px`:void 0;return C&&(w.marginLeft=C,w.marginRight=C),v.value?w.rowGap=`${$[1]}px`:_&&(w.marginTop=_,w.marginBottom=_),w});return()=>{var $;return a(f(\"div\",A(A({},o),{},{class:b.value,style:h(h({},S.value),o.style)}),[($=n.default)===null||$===void 0?void 0:$.call(n)]))}}});function ur(){return ur=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},ur.apply(this,arguments)}function L6(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Mi(e,t)}function Vp(e){return Vp=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Vp(e)}function Mi(e,t){return Mi=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,l){return o.__proto__=l,o},Mi(e,t)}function F6(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ac(e,t,n){return F6()?ac=Reflect.construct.bind():ac=function(l,r,a){var i=[null];i.push.apply(i,r);var s=Function.bind.apply(l,i),c=new s;return a&&Mi(c,a.prototype),c},ac.apply(null,arguments)}function z6(e){return Function.toString.call(e).indexOf(\"[native code]\")!==-1}function Kp(e){var t=typeof Map==\"function\"?new Map:void 0;return Kp=function(o){if(o===null||!z6(o))return o;if(typeof o!=\"function\")throw new TypeError(\"Super expression must either be null or a function\");if(typeof t<\"u\"){if(t.has(o))return t.get(o);t.set(o,l)}function l(){return ac(o,arguments,Vp(this).constructor)}return l.prototype=Object.create(o.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),Mi(l,o)},Kp(e)}var H6=/%[sdj%]/g,j6=function(){};function Gp(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var o=n.field;t[o]=t[o]||[],t[o].push(n)}),t}function Zn(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];var l=0,r=n.length;if(typeof e==\"function\")return e.apply(null,n);if(typeof e==\"string\"){var a=e.replace(H6,function(i){if(i===\"%%\")return\"%\";if(l>=r)return i;switch(i){case\"%s\":return String(n[l++]);case\"%d\":return Number(n[l++]);case\"%j\":try{return JSON.stringify(n[l++])}catch{return\"[Circular]\"}break;default:return i}});return a}return e}function W6(e){return e===\"string\"||e===\"url\"||e===\"hex\"||e===\"email\"||e===\"date\"||e===\"pattern\"}function dn(e,t){return!!(e==null||t===\"array\"&&Array.isArray(e)&&!e.length||W6(t)&&typeof e==\"string\"&&!e)}function V6(e,t,n){var o=[],l=0,r=e.length;function a(i){o.push.apply(o,i||[]),l++,l===r&&n(o)}e.forEach(function(i){t(i,a)})}function ty(e,t,n){var o=0,l=e.length;function r(a){if(a&&a.length){n(a);return}var i=o;o=o+1,i<l?t(e[i],r):n([])}r([])}function K6(e){var t=[];return Object.keys(e).forEach(function(n){t.push.apply(t,e[n]||[])}),t}var ny=(function(e){L6(t,e);function t(n,o){var l;return l=e.call(this,\"Async Validation Error\")||this,l.errors=n,l.fields=o,l}return t})(Kp(Error));function G6(e,t,n,o,l){if(t.first){var r=new Promise(function(p,m){var g=function(b){return o(b),b.length?m(new ny(b,Gp(b))):p(l)},v=K6(e);ty(v,n,g)});return r.catch(function(p){return p}),r}var a=t.firstFields===!0?Object.keys(e):t.firstFields||[],i=Object.keys(e),s=i.length,c=0,u=[],d=new Promise(function(p,m){var g=function(y){if(u.push.apply(u,y),c++,c===s)return o(u),u.length?m(new ny(u,Gp(u))):p(l)};i.length||(o(u),p(l)),i.forEach(function(v){var y=e[v];a.indexOf(v)!==-1?ty(y,n,g):V6(y,n,g)})});return d.catch(function(p){return p}),d}function X6(e){return!!(e&&e.message!==void 0)}function U6(e,t){for(var n=e,o=0;o<t.length;o++){if(n==null)return n;n=n[t[o]]}return n}function oy(e,t){return function(n){var o;return e.fullFields?o=U6(t,e.fullFields):o=t[n.field||e.fullField],X6(n)?(n.field=n.field||e.fullField,n.fieldValue=o,n):{message:typeof n==\"function\"?n():n,fieldValue:o,field:n.field||e.fullField}}}function ly(e,t){if(t){for(var n in t)if(t.hasOwnProperty(n)){var o=t[n];typeof o==\"object\"&&typeof e[n]==\"object\"?e[n]=ur({},e[n],o):e[n]=o}}return e}var uw=function(t,n,o,l,r,a){t.required&&(!o.hasOwnProperty(t.field)||dn(n,a||t.type))&&l.push(Zn(r.messages.required,t.fullField))},Y6=function(t,n,o,l,r){(/^\\s+$/.test(n)||n===\"\")&&l.push(Zn(r.messages.whitespace,t.fullField))},Is,q6=function(){if(Is)return Is;var e=\"[a-fA-F\\\\d:]\",t=function(w){return w&&w.includeBoundaries?\"(?:(?<=\\\\s|^)(?=\"+e+\")|(?<=\"+e+\")(?=\\\\s|$))\":\"\"},n=\"(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}\",o=\"[a-fA-F\\\\d]{1,4}\",l=(`\n(?:\n(?:`+o+\":){7}(?:\"+o+`|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n(?:`+o+\":){6}(?:\"+n+\"|:\"+o+`|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\n(?:`+o+\":){5}(?::\"+n+\"|(?::\"+o+`){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\n(?:`+o+\":){4}(?:(?::\"+o+\"){0,1}:\"+n+\"|(?::\"+o+`){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\n(?:`+o+\":){3}(?:(?::\"+o+\"){0,2}:\"+n+\"|(?::\"+o+`){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\n(?:`+o+\":){2}(?:(?::\"+o+\"){0,3}:\"+n+\"|(?::\"+o+`){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\n(?:`+o+\":){1}(?:(?::\"+o+\"){0,4}:\"+n+\"|(?::\"+o+`){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::`+o+\"){0,5}:\"+n+\"|(?::\"+o+`){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\n`).replace(/\\s*\\/\\/.*$/gm,\"\").replace(/\\n/g,\"\").trim(),r=new RegExp(\"(?:^\"+n+\"$)|(?:^\"+l+\"$)\"),a=new RegExp(\"^\"+n+\"$\"),i=new RegExp(\"^\"+l+\"$\"),s=function(w){return w&&w.exact?r:new RegExp(\"(?:\"+t(w)+n+t(w)+\")|(?:\"+t(w)+l+t(w)+\")\",\"g\")};s.v4=function($){return $&&$.exact?a:new RegExp(\"\"+t($)+n+t($),\"g\")},s.v6=function($){return $&&$.exact?i:new RegExp(\"\"+t($)+l+t($),\"g\")};var c=\"(?:(?:[a-z]+:)?//)\",u=\"(?:\\\\S+(?::\\\\S*)?@)?\",d=s.v4().source,p=s.v6().source,m=\"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\",g=\"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\",v=\"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\",y=\"(?::\\\\d{2,5})?\",b='(?:[/?#][^\\\\s\"]*)?',S=\"(?:\"+c+\"|www\\\\.)\"+u+\"(?:localhost|\"+d+\"|\"+p+\"|\"+m+g+v+\")\"+y+b;return Is=new RegExp(\"(?:^\"+S+\"$)\",\"i\"),Is},ry={email:/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Ya={integer:function(t){return Ya.number(t)&&parseInt(t,10)===t},float:function(t){return Ya.number(t)&&!Ya.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime==\"function\"&&typeof t.getMonth==\"function\"&&typeof t.getYear==\"function\"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t==\"number\"},object:function(t){return typeof t==\"object\"&&!Ya.array(t)},method:function(t){return typeof t==\"function\"},email:function(t){return typeof t==\"string\"&&t.length<=320&&!!t.match(ry.email)},url:function(t){return typeof t==\"string\"&&t.length<=2048&&!!t.match(q6())},hex:function(t){return typeof t==\"string\"&&!!t.match(ry.hex)}},Z6=function(t,n,o,l,r){if(t.required&&n===void 0){uw(t,n,o,l,r);return}var a=[\"integer\",\"float\",\"array\",\"regexp\",\"object\",\"method\",\"email\",\"number\",\"date\",\"url\",\"hex\"],i=t.type;a.indexOf(i)>-1?Ya[i](n)||l.push(Zn(r.messages.types[i],t.fullField,t.type)):i&&typeof n!==t.type&&l.push(Zn(r.messages.types[i],t.fullField,t.type))},Q6=function(t,n,o,l,r){var a=typeof t.len==\"number\",i=typeof t.min==\"number\",s=typeof t.max==\"number\",c=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,u=n,d=null,p=typeof n==\"number\",m=typeof n==\"string\",g=Array.isArray(n);if(p?d=\"number\":m?d=\"string\":g&&(d=\"array\"),!d)return!1;g&&(u=n.length),m&&(u=n.replace(c,\"_\").length),a?u!==t.len&&l.push(Zn(r.messages[d].len,t.fullField,t.len)):i&&!s&&u<t.min?l.push(Zn(r.messages[d].min,t.fullField,t.min)):s&&!i&&u>t.max?l.push(Zn(r.messages[d].max,t.fullField,t.max)):i&&s&&(u<t.min||u>t.max)&&l.push(Zn(r.messages[d].range,t.fullField,t.min,t.max))},Hr=\"enum\",J6=function(t,n,o,l,r){t[Hr]=Array.isArray(t[Hr])?t[Hr]:[],t[Hr].indexOf(n)===-1&&l.push(Zn(r.messages[Hr],t.fullField,t[Hr].join(\", \")))},eB=function(t,n,o,l,r){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||l.push(Zn(r.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern==\"string\"){var a=new RegExp(t.pattern);a.test(n)||l.push(Zn(r.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},Ct={required:uw,whitespace:Y6,type:Z6,range:Q6,enum:J6,pattern:eB},tB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n,\"string\")&&!t.required)return o();Ct.required(t,n,l,a,r,\"string\"),dn(n,\"string\")||(Ct.type(t,n,l,a,r),Ct.range(t,n,l,a,r),Ct.pattern(t,n,l,a,r),t.whitespace===!0&&Ct.whitespace(t,n,l,a,r))}o(a)},nB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&Ct.type(t,n,l,a,r)}o(a)},oB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(n===\"\"&&(n=void 0),dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&(Ct.type(t,n,l,a,r),Ct.range(t,n,l,a,r))}o(a)},lB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&Ct.type(t,n,l,a,r)}o(a)},rB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),dn(n)||Ct.type(t,n,l,a,r)}o(a)},aB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&(Ct.type(t,n,l,a,r),Ct.range(t,n,l,a,r))}o(a)},iB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&(Ct.type(t,n,l,a,r),Ct.range(t,n,l,a,r))}o(a)},sB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(n==null&&!t.required)return o();Ct.required(t,n,l,a,r,\"array\"),n!=null&&(Ct.type(t,n,l,a,r),Ct.range(t,n,l,a,r))}o(a)},cB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&Ct.type(t,n,l,a,r)}o(a)},uB=\"enum\",dB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r),n!==void 0&&Ct[uB](t,n,l,a,r)}o(a)},fB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n,\"string\")&&!t.required)return o();Ct.required(t,n,l,a,r),dn(n,\"string\")||Ct.pattern(t,n,l,a,r)}o(a)},pB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n,\"date\")&&!t.required)return o();if(Ct.required(t,n,l,a,r),!dn(n,\"date\")){var s;n instanceof Date?s=n:s=new Date(n),Ct.type(t,s,l,a,r),s&&Ct.range(t,s.getTime(),l,a,r)}}o(a)},mB=function(t,n,o,l,r){var a=[],i=Array.isArray(n)?\"array\":typeof n;Ct.required(t,n,l,a,r,i),o(a)},yf=function(t,n,o,l,r){var a=t.type,i=[],s=t.required||!t.required&&l.hasOwnProperty(t.field);if(s){if(dn(n,a)&&!t.required)return o();Ct.required(t,n,l,i,r,a),dn(n,a)||Ct.type(t,n,l,i,r)}o(i)},vB=function(t,n,o,l,r){var a=[],i=t.required||!t.required&&l.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();Ct.required(t,n,l,a,r)}o(a)},li={string:tB,method:nB,number:oB,boolean:lB,regexp:rB,integer:aB,float:iB,array:sB,object:cB,enum:dB,pattern:fB,date:pB,url:yf,hex:yf,email:yf,required:mB,any:vB};function Xp(){return{default:\"Validation error on field %s\",required:\"%s is required\",enum:\"%s must be one of %s\",whitespace:\"%s cannot be empty\",date:{format:\"%s date %s is invalid for format %s\",parse:\"%s date could not be parsed, %s is invalid \",invalid:\"%s date %s is invalid\"},types:{string:\"%s is not a %s\",method:\"%s is not a %s (function)\",array:\"%s is not an %s\",object:\"%s is not an %s\",number:\"%s is not a %s\",date:\"%s is not a %s\",boolean:\"%s is not a %s\",integer:\"%s is not an %s\",float:\"%s is not a %s\",regexp:\"%s is not a valid %s\",email:\"%s is not a valid %s\",url:\"%s is not a valid %s\",hex:\"%s is not a valid %s\"},string:{len:\"%s must be exactly %s characters\",min:\"%s must be at least %s characters\",max:\"%s cannot be longer than %s characters\",range:\"%s must be between %s and %s characters\"},number:{len:\"%s must equal %s\",min:\"%s cannot be less than %s\",max:\"%s cannot be greater than %s\",range:\"%s must be between %s and %s\"},array:{len:\"%s must be exactly %s in length\",min:\"%s cannot be less than %s in length\",max:\"%s cannot be greater than %s in length\",range:\"%s must be between %s and %s in length\"},pattern:{mismatch:\"%s value %s does not match pattern %s\"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var Up=Xp(),Ui=(function(){function e(n){this.rules=null,this._messages=Up,this.define(n)}var t=e.prototype;return t.define=function(o){var l=this;if(!o)throw new Error(\"Cannot configure a schema with no rules\");if(typeof o!=\"object\"||Array.isArray(o))throw new Error(\"Rules must be an object\");this.rules={},Object.keys(o).forEach(function(r){var a=o[r];l.rules[r]=Array.isArray(a)?a:[a]})},t.messages=function(o){return o&&(this._messages=ly(Xp(),o)),this._messages},t.validate=function(o,l,r){var a=this;l===void 0&&(l={}),r===void 0&&(r=function(){});var i=o,s=l,c=r;if(typeof s==\"function\"&&(c=s,s={}),!this.rules||Object.keys(this.rules).length===0)return c&&c(null,i),Promise.resolve(i);function u(v){var y=[],b={};function S(w){if(Array.isArray(w)){var C;y=(C=y).concat.apply(C,w)}else y.push(w)}for(var $=0;$<v.length;$++)S(v[$]);y.length?(b=Gp(y),c(y,b)):c(null,i)}if(s.messages){var d=this.messages();d===Up&&(d=Xp()),ly(d,s.messages),s.messages=d}else s.messages=this.messages();var p={},m=s.keys||Object.keys(this.rules);m.forEach(function(v){var y=a.rules[v],b=i[v];y.forEach(function(S){var $=S;typeof $.transform==\"function\"&&(i===o&&(i=ur({},i)),b=i[v]=$.transform(b)),typeof $==\"function\"?$={validator:$}:$=ur({},$),$.validator=a.getValidationMethod($),$.validator&&($.field=v,$.fullField=$.fullField||v,$.type=a.getType($),p[v]=p[v]||[],p[v].push({rule:$,value:b,source:i,field:v}))})});var g={};return G6(p,s,function(v,y){var b=v.rule,S=(b.type===\"object\"||b.type===\"array\")&&(typeof b.fields==\"object\"||typeof b.defaultField==\"object\");S=S&&(b.required||!b.required&&v.value),b.field=v.field;function $(_,x){return ur({},x,{fullField:b.fullField+\".\"+_,fullFields:b.fullFields?[].concat(b.fullFields,[_]):[_]})}function w(_){_===void 0&&(_=[]);var x=Array.isArray(_)?_:[_];!s.suppressWarning&&x.length&&e.warning(\"async-validator:\",x),x.length&&b.message!==void 0&&(x=[].concat(b.message));var P=x.map(oy(b,i));if(s.first&&P.length)return g[b.field]=1,y(P);if(!S)y(P);else{if(b.required&&!v.value)return b.message!==void 0?P=[].concat(b.message).map(oy(b,i)):s.error&&(P=[s.error(b,Zn(s.messages.required,b.field))]),y(P);var E={};b.defaultField&&Object.keys(v.value).map(function(R){E[R]=b.defaultField}),E=ur({},E,v.rule.fields);var M={};Object.keys(E).forEach(function(R){var D=E[R],z=Array.isArray(D)?D:[D];M[R]=z.map($.bind(null,R))});var O=new e(M);O.messages(s.messages),v.rule.options&&(v.rule.options.messages=s.messages,v.rule.options.error=s.error),O.validate(v.value,v.rule.options||s,function(R){var D=[];P&&P.length&&D.push.apply(D,P),R&&R.length&&D.push.apply(D,R),y(D.length?D:null)})}}var C;if(b.asyncValidator)C=b.asyncValidator(b,v.value,w,v.source,s);else if(b.validator){try{C=b.validator(b,v.value,w,v.source,s)}catch(_){console.error?.(_),s.suppressValidatorError||setTimeout(function(){throw _},0),w(_.message)}C===!0?w():C===!1?w(typeof b.message==\"function\"?b.message(b.fullField||b.field):b.message||(b.fullField||b.field)+\" fails\"):C instanceof Array?w(C):C instanceof Error&&w(C.message)}C&&C.then&&C.then(function(){return w()},function(_){return w(_)})},function(v){u(v)},i)},t.getType=function(o){if(o.type===void 0&&o.pattern instanceof RegExp&&(o.type=\"pattern\"),typeof o.validator!=\"function\"&&o.type&&!li.hasOwnProperty(o.type))throw new Error(Zn(\"Unknown rule type %s\",o.type));return o.type||\"string\"},t.getValidationMethod=function(o){if(typeof o.validator==\"function\")return o.validator;var l=Object.keys(o),r=l.indexOf(\"message\");return r!==-1&&l.splice(r,1),l.length===1&&l[0]===\"required\"?li.required:li[this.getType(o)]||void 0},e})();Ui.register=function(t,n){if(typeof n!=\"function\")throw new Error(\"Cannot register a validator by type, validator is not a function\");li[t]=n};Ui.warning=j6;Ui.messages=Up;Ui.validators=li;function Nl(e){return e==null?[]:Array.isArray(e)?e:[e]}function dw(e,t){let n=e;for(let o=0;o<t.length;o+=1){if(n==null)return;n=n[t[o]]}return n}function fw(e,t,n,o){if(!t.length)return n;const[l,...r]=t;let a;return!e&&typeof l==\"number\"?a=[]:Array.isArray(e)?a=[...e]:a=h({},e),o&&n===void 0&&r.length===1?delete a[l][r[0]]:a[l]=fw(a[l],r,n,o),a}function gB(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return t.length&&o&&n===void 0&&!dw(e,t.slice(0,-1))?e:fw(e,t,n,o)}function Yp(e){return Nl(e)}function hB(e,t){return dw(e,t)}function bB(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return gB(e,t,n,o)}function yB(e,t){return e&&e.some(n=>$B(n,t))}function ay(e){return typeof e==\"object\"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}function pw(e,t){const n=Array.isArray(e)?[...e]:h({},e);return t&&Object.keys(t).forEach(o=>{const l=n[o],r=t[o],a=ay(l)&&ay(r);n[o]=a?pw(l,r||{}):r}),n}function SB(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return n.reduce((l,r)=>pw(l,r),e)}function iy(e,t){let n={};return t.forEach(o=>{const l=hB(e,o);n=bB(n,o,l)}),n}function $B(e,t){return!e||!t||e.length!==t.length?!1:e.every((n,o)=>t[o]===n)}const Yn=\"'${name}' is not a valid ${type}\",hd={default:\"Validation error on field '${name}'\",required:\"'${name}' is required\",enum:\"'${name}' must be one of [${enum}]\",whitespace:\"'${name}' cannot be empty\",date:{format:\"'${name}' is invalid for format date\",parse:\"'${name}' could not be parsed as date\",invalid:\"'${name}' is invalid date\"},types:{string:Yn,method:Yn,array:Yn,object:Yn,number:Yn,date:Yn,boolean:Yn,integer:Yn,float:Yn,regexp:Yn,email:Yn,url:Yn,hex:Yn},string:{len:\"'${name}' must be exactly ${len} characters\",min:\"'${name}' must be at least ${min} characters\",max:\"'${name}' cannot be longer than ${max} characters\",range:\"'${name}' must be between ${min} and ${max} characters\"},number:{len:\"'${name}' must equal ${len}\",min:\"'${name}' cannot be less than ${min}\",max:\"'${name}' cannot be greater than ${max}\",range:\"'${name}' must be between ${min} and ${max}\"},array:{len:\"'${name}' must be exactly ${len} in length\",min:\"'${name}' cannot be less than ${min} in length\",max:\"'${name}' cannot be greater than ${max} in length\",range:\"'${name}' must be between ${min} and ${max} in length\"},pattern:{mismatch:\"'${name}' does not match pattern ${pattern}\"}};var bd=function(e,t,n,o){function l(r){return r instanceof n?r:new n(function(a){a(r)})}return new(n||(n=Promise))(function(r,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?r(u.value):l(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})};const CB=Ui;function xB(e,t){return e.replace(/\\$\\{\\w+\\}/g,n=>{const o=n.slice(2,-1);return t[o]})}function qp(e,t,n,o,l){return bd(this,void 0,void 0,function*(){const r=h({},n);delete r.ruleIndex,delete r.trigger;let a=null;r&&r.type===\"array\"&&r.defaultField&&(a=r.defaultField,delete r.defaultField);const i=new CB({[e]:[r]}),s=SB({},hd,o.validateMessages);i.messages(s);let c=[];try{yield Promise.resolve(i.validate({[e]:t},h({},o)))}catch(p){p.errors?c=p.errors.map((m,g)=>{let{message:v}=m;return Gt(v)?Mo(v,{key:`error_${g}`}):v}):(console.error(p),c=[s.default()])}if(!c.length&&a)return(yield Promise.all(t.map((m,g)=>qp(`${e}.${g}`,m,a,o,l)))).reduce((m,g)=>[...m,...g],[]);const u=h(h(h({},n),{name:e,enum:(n.enum||[]).join(\", \")}),l);return c.map(p=>typeof p==\"string\"?xB(p,u):p)})}function mw(e,t,n,o,l,r){const a=e.join(\".\"),i=n.map((c,u)=>{const d=c.validator,p=h(h({},c),{ruleIndex:u});return d&&(p.validator=(m,g,v)=>{let y=!1;const S=d(m,g,function(){for(var $=arguments.length,w=new Array($),C=0;C<$;C++)w[C]=arguments[C];Promise.resolve().then(()=>{y||v(...w)})});y=S&&typeof S.then==\"function\"&&typeof S.catch==\"function\",y&&S.then(()=>{v()}).catch($=>{v($||\" \")})}),p}).sort((c,u)=>{let{warningOnly:d,ruleIndex:p}=c,{warningOnly:m,ruleIndex:g}=u;return!!d==!!m?p-g:d?1:-1});let s;if(l===!0)s=new Promise((c,u)=>bd(this,void 0,void 0,function*(){for(let d=0;d<i.length;d+=1){const p=i[d],m=yield qp(a,t,p,o,r);if(m.length){u([{errors:m,rule:p}]);return}}c([])}));else{const c=i.map(u=>qp(a,t,u,o,r).then(d=>({errors:d,rule:u})));s=(l?_B(c):wB(c)).then(u=>Promise.reject(u))}return s.catch(c=>c),s}function wB(e){return bd(this,void 0,void 0,function*(){return Promise.all(e).then(t=>[].concat(...t))})}function _B(e){return bd(this,void 0,void 0,function*(){let t=0;return new Promise(n=>{e.forEach(o=>{o.then(l=>{l.errors.length&&n([l]),t+=1,t===e.length&&n([])})})})})}const vw=Symbol(\"formContextKey\"),gw=e=>{et(vw,e)},Pg=()=>nt(vw,{name:I(()=>{}),labelAlign:I(()=>\"right\"),vertical:I(()=>!1),addField:(e,t)=>{},removeField:e=>{},model:I(()=>{}),rules:I(()=>{}),colon:I(()=>{}),labelWrap:I(()=>{}),labelCol:I(()=>{}),requiredMark:I(()=>!1),validateTrigger:I(()=>{}),onValidate:()=>{},validateMessages:I(()=>hd)}),hw=Symbol(\"formItemPrefixContextKey\"),IB=e=>{et(hw,e)},PB=()=>nt(hw,{prefixCls:I(()=>\"\")});function TB(e){return typeof e==\"number\"?`${e} ${e} auto`:/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(e)?`0 0 ${e}`:e}const OB=()=>({span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}),EB=[\"xs\",\"sm\",\"md\",\"lg\",\"xl\",\"xxl\"],yd=ne({compatConfig:{MODE:3},name:\"ACol\",inheritAttrs:!1,props:OB(),setup(e,t){let{slots:n,attrs:o}=t;const{gutter:l,supportFlexGap:r,wrap:a}=E6(),{prefixCls:i,direction:s}=Te(\"col\",e),[c,u]=N6(i),d=I(()=>{const{span:m,order:g,offset:v,push:y,pull:b}=e,S=i.value;let $={};return EB.forEach(w=>{let C={};const _=e[w];typeof _==\"number\"?C.span=_:typeof _==\"object\"&&(C=_||{}),$=h(h({},$),{[`${S}-${w}-${C.span}`]:C.span!==void 0,[`${S}-${w}-order-${C.order}`]:C.order||C.order===0,[`${S}-${w}-offset-${C.offset}`]:C.offset||C.offset===0,[`${S}-${w}-push-${C.push}`]:C.push||C.push===0,[`${S}-${w}-pull-${C.pull}`]:C.pull||C.pull===0,[`${S}-rtl`]:s.value===\"rtl\"})}),re(S,{[`${S}-${m}`]:m!==void 0,[`${S}-order-${g}`]:g,[`${S}-offset-${v}`]:v,[`${S}-push-${y}`]:y,[`${S}-pull-${b}`]:b},$,o.class,u.value)}),p=I(()=>{const{flex:m}=e,g=l.value,v={};if(g&&g[0]>0){const y=`${g[0]/2}px`;v.paddingLeft=y,v.paddingRight=y}if(g&&g[1]>0&&!r.value){const y=`${g[1]/2}px`;v.paddingTop=y,v.paddingBottom=y}return m&&(v.flex=TB(m),a.value===!1&&!v.minWidth&&(v.minWidth=0)),v});return()=>{var m;return c(f(\"div\",A(A({},o),{},{class:d.value,style:[p.value,o.style]}),[(m=n.default)===null||m===void 0?void 0:m.call(n)]))}}}),Tg=(e,t)=>{let{slots:n,emit:o,attrs:l}=t;var r,a,i,s,c;const{prefixCls:u,htmlFor:d,labelCol:p,labelAlign:m,colon:g,required:v,requiredMark:y}=h(h({},e),l),[b]=$o(\"Form\"),S=(r=e.label)!==null&&r!==void 0?r:(a=n.label)===null||a===void 0?void 0:a.call(n);if(!S)return null;const{vertical:$,labelAlign:w,labelCol:C,labelWrap:_,colon:x}=Pg(),P=p||C?.value||{},E=m||w?.value,M=`${u}-item-label`,O=re(M,E===\"left\"&&`${M}-left`,P.class,{[`${M}-wrap`]:!!_.value});let R=S;const D=g===!0||x?.value!==!1&&g!==!1;if(D&&!$.value&&typeof S==\"string\"&&S.trim()!==\"\"&&(R=S.replace(/[:|：]\\s*$/,\"\")),e.tooltip||n.tooltip){const k=f(\"span\",{class:`${u}-item-tooltip`},[f(Fn,{title:e.tooltip},{default:()=>[f(DI,null,null)]})]);R=f(He,null,[R,n.tooltip?(i=n.tooltip)===null||i===void 0?void 0:i.call(n,{class:`${u}-item-tooltip`}):k])}y===\"optional\"&&!v&&(R=f(He,null,[R,f(\"span\",{class:`${u}-item-optional`},[((s=b.value)===null||s===void 0?void 0:s.optional)||((c=En.Form)===null||c===void 0?void 0:c.optional)])]));const T=re({[`${u}-item-required`]:v,[`${u}-item-required-mark-optional`]:y===\"optional\",[`${u}-item-no-colon`]:!D});return f(yd,A(A({},P),{},{class:O}),{default:()=>[f(\"label\",{for:d,class:T,title:typeof S==\"string\"?S:\"\",onClick:k=>o(\"click\",k)},[R])]})};Tg.displayName=\"FormItemLabel\";Tg.inheritAttrs=!1;const MB=e=>{const{componentCls:t}=e,n=`${t}-show-help`,o=`${t}-show-help-item`;return{[n]:{transition:`opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`,\"&-appear, &-enter\":{opacity:0,\"&-active\":{opacity:1}},\"&-leave\":{opacity:1,\"&-active\":{opacity:0}},[o]:{overflow:\"hidden\",transition:`height ${e.motionDurationSlow} ${e.motionEaseInOut},\n                     opacity ${e.motionDurationSlow} ${e.motionEaseInOut},\n                     transform ${e.motionDurationSlow} ${e.motionEaseInOut} !important`,[`&${o}-appear, &${o}-enter`]:{transform:\"translateY(-5px)\",opacity:0,\"&-active\":{transform:\"translateY(0)\",opacity:1}},[`&${o}-leave-active`]:{transform:\"translateY(-5px)\"}}}}},AB=e=>({legend:{display:\"block\",width:\"100%\",marginBottom:e.marginLG,padding:0,color:e.colorTextDescription,fontSize:e.fontSizeLG,lineHeight:\"inherit\",border:0,borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},label:{fontSize:e.fontSize},'input[type=\"search\"]':{boxSizing:\"border-box\"},'input[type=\"radio\"], input[type=\"checkbox\"]':{lineHeight:\"normal\"},'input[type=\"file\"]':{display:\"block\"},'input[type=\"range\"]':{display:\"block\",width:\"100%\"},\"select[multiple], select[size]\":{height:\"auto\"},\"input[type='file']:focus,\\n  input[type='radio']:focus,\\n  input[type='checkbox']:focus\":{outline:0,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`},output:{display:\"block\",paddingTop:15,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight}}),sy=(e,t)=>{const{formItemCls:n}=e;return{[n]:{[`${n}-label > label`]:{height:t},[`${n}-control-input`]:{minHeight:t}}}},DB=e=>{const{componentCls:t}=e;return{[e.componentCls]:h(h(h({},qe(e)),AB(e)),{[`${t}-text`]:{display:\"inline-block\",paddingInlineEnd:e.paddingSM},\"&-small\":h({},sy(e,e.controlHeightSM)),\"&-large\":h({},sy(e,e.controlHeightLG))})}},RB=e=>{const{formItemCls:t,iconCls:n,componentCls:o,rootPrefixCls:l}=e;return{[t]:h(h({},qe(e)),{marginBottom:e.marginLG,verticalAlign:\"top\",\"&-with-help\":{transition:\"none\"},[`&-hidden,\n        &-hidden.${l}-row`]:{display:\"none\"},\"&-has-warning\":{[`${t}-split`]:{color:e.colorError}},\"&-has-error\":{[`${t}-split`]:{color:e.colorWarning}},[`${t}-label`]:{display:\"inline-block\",flexGrow:0,overflow:\"hidden\",whiteSpace:\"nowrap\",textAlign:\"end\",verticalAlign:\"middle\",\"&-left\":{textAlign:\"start\"},\"&-wrap\":{overflow:\"unset\",lineHeight:`${e.lineHeight} - 0.25em`,whiteSpace:\"unset\"},\"> label\":{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",maxWidth:\"100%\",height:e.controlHeight,color:e.colorTextHeading,fontSize:e.fontSize,[`> ${n}`]:{fontSize:e.fontSize,verticalAlign:\"top\"},[`&${t}-required:not(${t}-required-mark-optional)::before`]:{display:\"inline-block\",marginInlineEnd:e.marginXXS,color:e.colorError,fontSize:e.fontSize,fontFamily:\"SimSun, sans-serif\",lineHeight:1,content:'\"*\"',[`${o}-hide-required-mark &`]:{display:\"none\"}},[`${t}-optional`]:{display:\"inline-block\",marginInlineStart:e.marginXXS,color:e.colorTextDescription,[`${o}-hide-required-mark &`]:{display:\"none\"}},[`${t}-tooltip`]:{color:e.colorTextDescription,cursor:\"help\",writingMode:\"horizontal-tb\",marginInlineStart:e.marginXXS},\"&::after\":{content:'\":\"',position:\"relative\",marginBlock:0,marginInlineStart:e.marginXXS/2,marginInlineEnd:e.marginXS},[`&${t}-no-colon::after`]:{content:'\" \"'}}},[`${t}-control`]:{display:\"flex\",flexDirection:\"column\",flexGrow:1,[`&:first-child:not([class^=\"'${l}-col-'\"]):not([class*=\"' ${l}-col-'\"])`]:{width:\"100%\"},\"&-input\":{position:\"relative\",display:\"flex\",alignItems:\"center\",minHeight:e.controlHeight,\"&-content\":{flex:\"auto\",maxWidth:\"100%\"}}},[t]:{\"&-explain, &-extra\":{clear:\"both\",color:e.colorTextDescription,fontSize:e.fontSize,lineHeight:e.lineHeight},\"&-explain-connected\":{width:\"100%\"},\"&-extra\":{minHeight:e.controlHeightSM,transition:`color ${e.motionDurationMid} ${e.motionEaseOut}`},\"&-explain\":{\"&-error\":{color:e.colorError},\"&-warning\":{color:e.colorWarning}}},[`&-with-help ${t}-explain`]:{height:\"auto\",opacity:1},[`${t}-feedback-icon`]:{fontSize:e.fontSize,textAlign:\"center\",visibility:\"visible\",animationName:Tv,animationDuration:e.motionDurationMid,animationTimingFunction:e.motionEaseOutBack,pointerEvents:\"none\",\"&-success\":{color:e.colorSuccess},\"&-error\":{color:e.colorError},\"&-warning\":{color:e.colorWarning},\"&-validating\":{color:e.colorPrimary}}})}},kB=e=>{const{componentCls:t,formItemCls:n,rootPrefixCls:o}=e;return{[`${t}-horizontal`]:{[`${n}-label`]:{flexGrow:0},[`${n}-control`]:{flex:\"1 1 0\",minWidth:0},[`${n}-label.${o}-col-24 + ${n}-control`]:{minWidth:\"unset\"}}}},NB=e=>{const{componentCls:t,formItemCls:n}=e;return{[`${t}-inline`]:{display:\"flex\",flexWrap:\"wrap\",[n]:{flex:\"none\",flexWrap:\"nowrap\",marginInlineEnd:e.margin,marginBottom:0,\"&-with-help\":{marginBottom:e.marginLG},[`> ${n}-label,\n        > ${n}-control`]:{display:\"inline-block\",verticalAlign:\"top\"},[`> ${n}-label`]:{flex:\"none\"},[`${t}-text`]:{display:\"inline-block\"},[`${n}-has-feedback`]:{display:\"inline-block\"}}}}},Xr=e=>({margin:0,padding:`0 0 ${e.paddingXS}px`,whiteSpace:\"initial\",textAlign:\"start\",\"> label\":{margin:0,\"&::after\":{display:\"none\"}}}),BB=e=>{const{componentCls:t,formItemCls:n}=e;return{[`${n} ${n}-label`]:Xr(e),[t]:{[n]:{flexWrap:\"wrap\",[`${n}-label,\n          ${n}-control`]:{flex:\"0 0 100%\",maxWidth:\"100%\"}}}}},LB=e=>{const{componentCls:t,formItemCls:n,rootPrefixCls:o}=e;return{[`${t}-vertical`]:{[n]:{\"&-row\":{flexDirection:\"column\"},\"&-label > label\":{height:\"auto\"},[`${t}-item-control`]:{width:\"100%\"}}},[`${t}-vertical ${n}-label,\n      .${o}-col-24${n}-label,\n      .${o}-col-xl-24${n}-label`]:Xr(e),[`@media (max-width: ${e.screenXSMax}px)`]:[BB(e),{[t]:{[`.${o}-col-xs-24${n}-label`]:Xr(e)}}],[`@media (max-width: ${e.screenSMMax}px)`]:{[t]:{[`.${o}-col-sm-24${n}-label`]:Xr(e)}},[`@media (max-width: ${e.screenMDMax}px)`]:{[t]:{[`.${o}-col-md-24${n}-label`]:Xr(e)}},[`@media (max-width: ${e.screenLGMax}px)`]:{[t]:{[`.${o}-col-lg-24${n}-label`]:Xr(e)}}}},Og=Xe(\"Form\",(e,t)=>{let{rootPrefixCls:n}=t;const o=Le(e,{formItemCls:`${e.componentCls}-item`,rootPrefixCls:n});return[DB(o),RB(o),MB(o),kB(o),NB(o),LB(o),Fi(o),Tv]}),FB=ne({compatConfig:{MODE:3},name:\"ErrorList\",inheritAttrs:!1,props:[\"errors\",\"help\",\"onErrorVisibleChanged\",\"helpStatus\",\"warnings\"],setup(e,t){let{attrs:n}=t;const{prefixCls:o,status:l}=PB(),r=I(()=>`${o.value}-item-explain`),a=I(()=>!!(e.errors&&e.errors.length)),i=Z(l.value),[,s]=Og(o);return pe([a,l],()=>{a.value&&(i.value=l.value)}),()=>{var c,u;const d=zi(`${o.value}-show-help-item`),p=Gu(`${o.value}-show-help-item`,d);return p.role=\"alert\",p.class=[s.value,r.value,n.class,`${o.value}-show-help`],f(cn,A(A({},So(`${o.value}-show-help`)),{},{onAfterEnter:()=>e.onErrorVisibleChanged(!0),onAfterLeave:()=>e.onErrorVisibleChanged(!1)}),{default:()=>[xn(f(Tu,A(A({},p),{},{tag:\"div\"}),{default:()=>[(u=e.errors)===null||u===void 0?void 0:u.map((m,g)=>f(\"div\",{key:g,class:i.value?`${r.value}-${i.value}`:\"\"},[m]))]}),[[On,!!(!((c=e.errors)===null||c===void 0)&&c.length)]])]})}}}),zB=ne({compatConfig:{MODE:3},slots:Object,inheritAttrs:!1,props:[\"prefixCls\",\"errors\",\"hasFeedback\",\"onDomErrorVisibleChange\",\"wrapperCol\",\"help\",\"extra\",\"status\",\"marginBottom\",\"onErrorVisibleChanged\"],setup(e,t){let{slots:n}=t;const o=Pg(),{wrapperCol:l}=o,r=h({},o);return delete r.labelCol,delete r.wrapperCol,gw(r),IB({prefixCls:I(()=>e.prefixCls),status:I(()=>e.status)}),()=>{var a,i,s;const{prefixCls:c,wrapperCol:u,marginBottom:d,onErrorVisibleChanged:p,help:m=(a=n.help)===null||a===void 0?void 0:a.call(n),errors:g=kt((i=n.errors)===null||i===void 0?void 0:i.call(n)),extra:v=(s=n.extra)===null||s===void 0?void 0:s.call(n)}=e,y=`${c}-item`,b=u||l?.value||{},S=re(`${y}-control`,b.class);return f(yd,A(A({},b),{},{class:S}),{default:()=>{var $;return f(He,null,[f(\"div\",{class:`${y}-control-input`},[f(\"div\",{class:`${y}-control-input-content`},[($=n.default)===null||$===void 0?void 0:$.call(n)])]),d!==null||g.length?f(\"div\",{style:{display:\"flex\",flexWrap:\"nowrap\"}},[f(FB,{errors:g,help:m,class:`${y}-explain-connected`,onErrorVisibleChanged:p},null),!!d&&f(\"div\",{style:{width:0,height:`${d}px`}},null)]):null,v?f(\"div\",{class:`${y}-extra`},[v]):null])}})}}});function HB(e){const t=ee(e.value.slice());let n=null;return ze(()=>{clearTimeout(n),n=setTimeout(()=>{t.value=e.value},e.value.length?0:10)}),t}hn(\"success\",\"warning\",\"error\",\"validating\",\"\");const jB={success:hl,warning:gl,error:Vn,validating:eo};function Sf(e,t,n){let o=e;const l=t;let r=0;try{for(let a=l.length;r<a-1&&!(!o&&!n);++r){const i=l[r];if(i in o)o=o[i];else{if(n)throw Error(\"please transfer a valid name path to form item!\");break}}if(n&&!o)throw Error(\"please transfer a valid name path to form item!\")}catch{console.error(\"please transfer a valid name path to form item!\")}return{o,k:l[r],v:o?o[l[r]]:void 0}}const WB=()=>({htmlFor:String,prefixCls:String,label:W.any,help:W.any,extra:W.any,labelCol:{type:Object},wrapperCol:{type:Object},hasFeedback:{type:Boolean,default:!1},colon:{type:Boolean,default:void 0},labelAlign:String,prop:{type:[String,Number,Array]},name:{type:[String,Number,Array]},rules:[Array,Object],autoLink:{type:Boolean,default:!0},required:{type:Boolean,default:void 0},validateFirst:{type:Boolean,default:void 0},validateStatus:W.oneOf(hn(\"\",\"success\",\"warning\",\"error\",\"validating\")),validateTrigger:{type:[String,Array]},messageVariables:{type:Object},hidden:Boolean,noStyle:Boolean,tooltip:String});let VB=0;const KB=\"form_item\",Yi=ne({compatConfig:{MODE:3},name:\"AFormItem\",inheritAttrs:!1,__ANT_NEW_FORM_ITEM:!0,props:WB(),slots:Object,setup(e,t){let{slots:n,attrs:o,expose:l}=t;e.prop;const r=`form-item-${++VB}`,{prefixCls:a}=Te(\"form\",e),[i,s]=Og(a),c=ee(),u=Pg(),d=I(()=>e.name||e.prop),p=ee([]),m=ee(!1),g=ee(),v=I(()=>{const V=d.value;return Yp(V)}),y=I(()=>{if(v.value.length){const V=u.name.value,q=v.value.join(\"_\");return V?`${V}_${q}`:`${KB}_${q}`}else return}),b=()=>{const V=u.model.value;if(!(!V||!d.value))return Sf(V,v.value,!0).v},S=I(()=>b()),$=ee(Ls(S.value)),w=I(()=>{let V=e.validateTrigger!==void 0?e.validateTrigger:u.validateTrigger.value;return V=V===void 0?\"change\":V,Nl(V)}),C=I(()=>{let V=u.rules.value;const q=e.rules,Q=e.required!==void 0?{required:!!e.required,trigger:w.value}:[],oe=Sf(V,v.value);V=V?oe.o[oe.k]||oe.v:[];const le=[].concat(q||V||[]);return fP(le,Y=>Y.required)?le:le.concat(Q)}),_=I(()=>{const V=C.value;let q=!1;return V&&V.length&&V.every(Q=>Q.required?(q=!0,!1):!0),q||e.required}),x=ee();ze(()=>{x.value=e.validateStatus});const P=I(()=>{let V={};return typeof e.label==\"string\"?V.label=e.label:e.name&&(V.label=String(e.name)),e.messageVariables&&(V=h(h({},V),e.messageVariables)),V}),E=V=>{if(v.value.length===0)return;const{validateFirst:q=!1}=e,{triggerName:Q}=V||{};let oe=C.value;if(Q&&(oe=oe.filter(Y=>{const{trigger:J}=Y;return!J&&!w.value.length?!0:Nl(J||w.value).includes(Q)})),!oe.length)return Promise.resolve();const le=mw(v.value,S.value,oe,h({validateMessages:u.validateMessages.value},V),q,P.value);return x.value=\"validating\",p.value=[],le.catch(Y=>Y).then(function(){let Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(x.value===\"validating\"){const J=Y.filter(ce=>ce&&ce.errors.length);x.value=J.length?\"error\":\"success\",p.value=J.map(ce=>ce.errors),u.onValidate(d.value,!p.value.length,p.value.length?jt(p.value[0]):null)}}),le},M=()=>{E({triggerName:\"blur\"})},O=()=>{if(m.value){m.value=!1;return}E({triggerName:\"change\"})},R=()=>{x.value=e.validateStatus,m.value=!1,p.value=[]},D=()=>{var V;x.value=e.validateStatus,m.value=!0,p.value=[];const q=u.model.value||{},Q=S.value,oe=Sf(q,v.value,!0);Array.isArray(Q)?oe.o[oe.k]=[].concat((V=$.value)!==null&&V!==void 0?V:[]):oe.o[oe.k]=$.value,it(()=>{m.value=!1})},z=I(()=>e.htmlFor===void 0?y.value:e.htmlFor),T=()=>{const V=z.value;if(!V||!g.value)return;const q=g.value.$el.querySelector(`[id=\"${V}\"]`);q&&q.focus&&q.focus()};l({onFieldBlur:M,onFieldChange:O,clearValidate:R,resetField:D}),g4({id:y,onFieldBlur:()=>{e.autoLink&&M()},onFieldChange:()=>{e.autoLink&&O()},clearValidate:R},I(()=>!!(e.autoLink&&u.model.value&&d.value)));let k=!1;pe(d,V=>{V?k||(k=!0,u.addField(r,{fieldValue:S,fieldId:y,fieldName:d,resetField:D,clearValidate:R,namePath:v,validateRules:E,rules:C})):(k=!1,u.removeField(r))},{immediate:!0}),ot(()=>{u.removeField(r)});const B=HB(p),L=I(()=>e.validateStatus!==void 0?e.validateStatus:B.value.length?\"error\":x.value),N=I(()=>({[`${a.value}-item`]:!0,[s.value]:!0,[`${a.value}-item-has-feedback`]:L.value&&e.hasFeedback,[`${a.value}-item-has-success`]:L.value===\"success\",[`${a.value}-item-has-warning`]:L.value===\"warning\",[`${a.value}-item-has-error`]:L.value===\"error\",[`${a.value}-item-is-validating`]:L.value===\"validating\",[`${a.value}-item-hidden`]:e.hidden})),F=gt({});un.useProvide(F),ze(()=>{let V;if(e.hasFeedback){const q=L.value&&jB[L.value];V=q?f(\"span\",{class:re(`${a.value}-item-feedback-icon`,`${a.value}-item-feedback-icon-${L.value}`)},[f(q,null,null)]):null}h(F,{status:L.value,hasFeedback:e.hasFeedback,feedbackIcon:V,isFormItemInput:!0})});const j=ee(null),H=ee(!1),K=()=>{if(c.value){const V=getComputedStyle(c.value);j.value=parseInt(V.marginBottom,10)}};Be(()=>{pe(H,()=>{H.value&&K()},{flush:\"post\",immediate:!0})});const G=V=>{V||(j.value=null)};return()=>{var V,q;if(e.noStyle)return(V=n.default)===null||V===void 0?void 0:V.call(n);const Q=(q=e.help)!==null&&q!==void 0?q:n.help?kt(n.help()):null,oe=!!(Q!=null&&Array.isArray(Q)&&Q.length||B.value.length);return H.value=oe,i(f(\"div\",{class:[N.value,oe?`${a.value}-item-with-help`:\"\",o.class],ref:c},[f(Ig,A(A({},o),{},{class:`${a.value}-item-row`,key:\"row\"}),{default:()=>{var le,Y;return f(He,null,[f(Tg,A(A({},e),{},{htmlFor:z.value,required:_.value,requiredMark:u.requiredMark.value,prefixCls:a.value,onClick:T,label:e.label}),{label:n.label,tooltip:n.tooltip}),f(zB,A(A({},e),{},{errors:Q!=null?Nl(Q):B.value,marginBottom:j.value,prefixCls:a.value,status:L.value,ref:g,help:Q,extra:(le=e.extra)!==null&&le!==void 0?le:(Y=n.extra)===null||Y===void 0?void 0:Y.call(n),onErrorVisibleChanged:G}),{default:n.default})])}}),!!j.value&&f(\"div\",{class:`${a.value}-margin-offset`,style:{marginBottom:`-${j.value}px`}},null)]))}}});function bw(e){let t=!1,n=e.length;const o=[];return e.length?new Promise((l,r)=>{e.forEach((a,i)=>{a.catch(s=>(t=!0,s)).then(s=>{n-=1,o[i]=s,!(n>0)&&(t&&r(o),l(o))})})}):Promise.resolve([])}function cy(e){let t=!1;return e&&e.length&&e.every(n=>n.required?(t=!0,!1):!0),t}function uy(e){return e==null?[]:Array.isArray(e)?e:[e]}function $f(e,t,n){let o=e;t=t.replace(/\\[(\\w+)\\]/g,\".$1\"),t=t.replace(/^\\./,\"\");const l=t.split(\".\");let r=0;for(let a=l.length;r<a-1&&!(!o&&!n);++r){const i=l[r];if(i in o)o=o[i];else{if(n)throw new Error(\"please transfer a valid name path to validate!\");break}}return{o,k:l[r],v:o?o[l[r]]:null,isValid:o&&l[r]in o}}function GB(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Z({}),n=arguments.length>2?arguments[2]:void 0;const o=Ls(Ne(e)),l=gt({}),r=ee([]),a=$=>{h(Ne(e),h(h({},Ls(o)),$)),it(()=>{Object.keys(l).forEach(w=>{l[w]={autoLink:!1,required:cy(Ne(t)[w])}})})},i=function(){let $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],w=arguments.length>1?arguments[1]:void 0;return w.length?$.filter(C=>{const _=uy(C.trigger||\"change\");return mP(_,w).length}):$};let s=null;const c=function($){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},C=arguments.length>2?arguments[2]:void 0;const _=[],x={};for(let M=0;M<$.length;M++){const O=$[M],R=$f(Ne(e),O,C);if(!R.isValid)continue;x[O]=R.v;const D=i(Ne(t)[O],uy(w&&w.trigger));D.length&&_.push(u(O,R.v,D,w||{}).then(()=>({name:O,errors:[],warnings:[]})).catch(z=>{const T=[],k=[];return z.forEach(B=>{let{rule:{warningOnly:L},errors:N}=B;L?k.push(...N):T.push(...N)}),T.length?Promise.reject({name:O,errors:T,warnings:k}):{name:O,errors:T,warnings:k}}))}const P=bw(_);s=P;const E=P.then(()=>s===P?Promise.resolve(x):Promise.reject([])).catch(M=>{const O=M.filter(R=>R&&R.errors.length);return O.length?Promise.reject({values:x,errorFields:O,outOfDate:s!==P}):Promise.resolve(x)});return E.catch(M=>M),E},u=function($,w,C){let _=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const x=mw([$],w,C,h({validateMessages:hd},_),!!_.validateFirst);return l[$]?(l[$].validateStatus=\"validating\",x.catch(P=>P).then(function(){let P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];var E;if(l[$].validateStatus===\"validating\"){const M=P.filter(O=>O&&O.errors.length);l[$].validateStatus=M.length?\"error\":\"success\",l[$].help=M.length?M.map(O=>O.errors):null,(E=n?.onValidate)===null||E===void 0||E.call(n,$,!M.length,M.length?jt(l[$].help[0]):null)}}),x):x.catch(P=>P)},d=($,w)=>{let C=[],_=!0;$?Array.isArray($)?C=$:C=[$]:(_=!1,C=r.value);const x=c(C,w||{},_);return x.catch(P=>P),x},p=$=>{let w=[];$?Array.isArray($)?w=$:w=[$]:w=r.value,w.forEach(C=>{l[C]&&h(l[C],{validateStatus:\"\",help:null})})},m=$=>{const w={autoLink:!1},C=[],_=Array.isArray($)?$:[$];for(let x=0;x<_.length;x++){const P=_[x];P?.validateStatus===\"error\"&&(w.validateStatus=\"error\",P.help&&C.push(P.help)),w.required=w.required||P?.required}return w.help=C,w};let g=o,v=!0;const y=$=>{const w=[];r.value.forEach(C=>{const _=$f($,C,!1),x=$f(g,C,!1);(v&&n?.immediate&&_.isValid||!Dm(_.v,x.v))&&w.push(C)}),d(w,{trigger:\"change\"}),v=!1,g=Ls(jt($))},b=n?.debounce;let S=!0;return pe(t,()=>{r.value=t?Object.keys(Ne(t)):[],!S&&n&&n.validateOnRuleChange&&d(),S=!1},{deep:!0,immediate:!0}),pe(r,()=>{const $={};r.value.forEach(w=>{$[w]=h({},l[w],{autoLink:!1,required:cy(Ne(t)[w])}),delete l[w]});for(const w in l)Object.prototype.hasOwnProperty.call(l,w)&&delete l[w];h(l,$)},{immediate:!0}),pe(e,b&&b.wait?Rm(y,b.wait,pP(b,[\"wait\"])):y,{immediate:n&&!!n.immediate,deep:!0}),{modelRef:e,rulesRef:t,initialModel:o,validateInfos:l,resetFields:a,validate:d,validateField:u,mergeValidateInfo:m,clearValidate:p}}const XB=()=>({layout:W.oneOf(hn(\"horizontal\",\"inline\",\"vertical\")),labelCol:De(),wrapperCol:De(),colon:ye(),labelAlign:ke(),labelWrap:ye(),prefixCls:String,requiredMark:Fe([String,Boolean]),hideRequiredMark:ye(),model:W.object,rules:De(),validateMessages:De(),validateOnRuleChange:ye(),scrollToFirstError:wt(),onSubmit:de(),name:String,validateTrigger:Fe([String,Array]),size:ke(),disabled:ye(),onValuesChange:de(),onFieldsChange:de(),onFinish:de(),onFinishFailed:de(),onValidate:de()});function UB(e,t){return Dm(Nl(e),Nl(t))}const Po=ne({compatConfig:{MODE:3},name:\"AForm\",inheritAttrs:!1,props:Je(XB(),{layout:\"horizontal\",hideRequiredMark:!1,colon:!0}),Item:Yi,useForm:GB,setup(e,t){let{emit:n,slots:o,expose:l,attrs:r}=t;const{prefixCls:a,direction:i,form:s,size:c,disabled:u}=Te(\"form\",e),d=I(()=>e.requiredMark===\"\"||e.requiredMark),p=I(()=>{var B;return d.value!==void 0?d.value:s&&((B=s.value)===null||B===void 0?void 0:B.requiredMark)!==void 0?s.value.requiredMark:!e.hideRequiredMark});MC(c),eC(u);const m=I(()=>{var B,L;return(B=e.colon)!==null&&B!==void 0?B:(L=s.value)===null||L===void 0?void 0:L.colon}),{validateMessages:g}=rE(),v=I(()=>h(h(h({},hd),g.value),e.validateMessages)),[y,b]=Og(a),S=I(()=>re(a.value,{[`${a.value}-${e.layout}`]:!0,[`${a.value}-hide-required-mark`]:p.value===!1,[`${a.value}-rtl`]:i.value===\"rtl\",[`${a.value}-${c.value}`]:c.value},b.value)),$=Z(),w={},C=(B,L)=>{w[B]=L},_=B=>{delete w[B]},x=B=>{const L=!!B,N=L?Nl(B).map(Yp):[];return L?Object.values(w).filter(F=>N.findIndex(j=>UB(j,F.fieldName.value))>-1):Object.values(w)},P=B=>{e.model&&x(B).forEach(L=>{L.resetField()})},E=B=>{x(B).forEach(L=>{L.clearValidate()})},M=B=>{const{scrollToFirstError:L}=e;if(n(\"finishFailed\",B),L&&B.errorFields.length){let N={};typeof L==\"object\"&&(N=L),R(B.errorFields[0].name,N)}},O=function(){return T(...arguments)},R=function(B){let L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const N=x(B?[B]:void 0);if(N.length){const F=N[0].fieldId.value,j=F?document.getElementById(F):null;j&&RC(j,h({scrollMode:\"if-needed\",block:\"nearest\"},L))}},D=function(){let B=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(B===!0){const L=[];return Object.values(w).forEach(N=>{let{namePath:F}=N;L.push(F.value)}),iy(e.model,L)}else return iy(e.model,B)},z=(B,L)=>{if(!e.model)return Promise.reject(\"Form `model` is required for validateFields to work.\");const N=!!B,F=N?Nl(B).map(Yp):[],j=[];Object.values(w).forEach(G=>{var V;if(N||F.push(G.namePath.value),!(!((V=G.rules)===null||V===void 0)&&V.value.length))return;const q=G.namePath.value;if(!N||yB(F,q)){const Q=G.validateRules(h({validateMessages:v.value},L));j.push(Q.then(()=>({name:q,errors:[],warnings:[]})).catch(oe=>{const le=[],Y=[];return oe.forEach(J=>{let{rule:{warningOnly:ce},errors:ue}=J;ce?Y.push(...ue):le.push(...ue)}),le.length?Promise.reject({name:q,errors:le,warnings:Y}):{name:q,errors:le,warnings:Y}}))}});const H=bw(j);$.value=H;const K=H.then(()=>$.value===H?Promise.resolve(D(F)):Promise.reject([])).catch(G=>{const V=G.filter(q=>q&&q.errors.length);return Promise.reject({values:D(F),errorFields:V,outOfDate:$.value!==H})});return K.catch(G=>G),K},T=function(){return z(...arguments)},k=B=>{B.preventDefault(),B.stopPropagation(),n(\"submit\",B),e.model&&z().then(N=>{n(\"finish\",N)}).catch(N=>{M(N)})};return l({resetFields:P,clearValidate:E,validateFields:z,getFieldsValue:D,validate:O,scrollToField:R}),gw({model:I(()=>e.model),name:I(()=>e.name),labelAlign:I(()=>e.labelAlign),labelCol:I(()=>e.labelCol),labelWrap:I(()=>e.labelWrap),wrapperCol:I(()=>e.wrapperCol),vertical:I(()=>e.layout===\"vertical\"),colon:m,requiredMark:p,validateTrigger:I(()=>e.validateTrigger),rules:I(()=>e.rules),addField:C,removeField:_,onValidate:(B,L,N)=>{n(\"validate\",B,L,N)},validateMessages:v}),pe(()=>e.rules,()=>{e.validateOnRuleChange&&z()}),()=>{var B;return y(f(\"form\",A(A({},r),{},{onSubmit:k,class:[S.value,r.class]}),[(B=o.default)===null||B===void 0?void 0:B.call(o)]))}}});Po.useInjectFormItemContext=Jt;Po.ItemRest=Gc;Po.install=function(e){return e.component(Po.name,Po),e.component(Po.Item.name,Po.Item),e.component(Gc.name,Gc),e};const YB=new rt(\"antCheckboxEffect\",{\"0%\":{transform:\"scale(1)\",opacity:.5},\"100%\":{transform:\"scale(1.6)\",opacity:0}}),qB=e=>{const{checkboxCls:t}=e,n=`${t}-wrapper`;return[{[`${t}-group`]:h(h({},qe(e)),{display:\"inline-flex\",flexWrap:\"wrap\",columnGap:e.marginXS,[`> ${e.antCls}-row`]:{flex:1}}),[n]:h(h({},qe(e)),{display:\"inline-flex\",alignItems:\"baseline\",cursor:\"pointer\",\"&:after\":{display:\"inline-block\",width:0,overflow:\"hidden\",content:\"'\\\\a0'\"},[`& + ${n}`]:{marginInlineStart:0},[`&${n}-in-form-item`]:{'input[type=\"checkbox\"]':{width:14,height:14}}}),[t]:h(h({},qe(e)),{position:\"relative\",whiteSpace:\"nowrap\",lineHeight:1,cursor:\"pointer\",alignSelf:\"center\",[`${t}-input`]:{position:\"absolute\",inset:0,zIndex:1,cursor:\"pointer\",opacity:0,margin:0,[`&:focus-visible + ${t}-inner`]:h({},fl(e))},[`${t}-inner`]:{boxSizing:\"border-box\",position:\"relative\",top:0,insetInlineStart:0,display:\"block\",width:e.checkboxSize,height:e.checkboxSize,direction:\"ltr\",backgroundColor:e.colorBgContainer,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,borderCollapse:\"separate\",transition:`all ${e.motionDurationSlow}`,\"&:after\":{boxSizing:\"border-box\",position:\"absolute\",top:\"50%\",insetInlineStart:\"21.5%\",display:\"table\",width:e.checkboxSize/14*5,height:e.checkboxSize/14*8,border:`${e.lineWidthBold}px solid ${e.colorWhite}`,borderTop:0,borderInlineStart:0,transform:\"rotate(45deg) scale(0) translate(-50%,-50%)\",opacity:0,content:'\"\"',transition:`all ${e.motionDurationFast} ${e.motionEaseInBack}, opacity ${e.motionDurationFast}`}},\"& + span\":{paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS}})},{[t]:{\"&-indeterminate\":{[`${t}-inner`]:{\"&:after\":{top:\"50%\",insetInlineStart:\"50%\",width:e.fontSizeLG/2,height:e.fontSizeLG/2,backgroundColor:e.colorPrimary,border:0,transform:\"translate(-50%, -50%) scale(1)\",opacity:1,content:'\"\"'}}}}},{[`${n}:hover ${t}:after`]:{visibility:\"visible\"},[`\n        ${n}:not(${n}-disabled),\n        ${t}:not(${t}-disabled)\n      `]:{[`&:hover ${t}-inner`]:{borderColor:e.colorPrimary}},[`${n}:not(${n}-disabled)`]:{[`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:\"transparent\"},[`&:hover ${t}-checked:not(${t}-disabled):after`]:{borderColor:e.colorPrimaryHover}}},{[`${t}-checked`]:{[`${t}-inner`]:{backgroundColor:e.colorPrimary,borderColor:e.colorPrimary,\"&:after\":{opacity:1,transform:\"rotate(45deg) scale(1) translate(-50%,-50%)\",transition:`all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`}},\"&:after\":{position:\"absolute\",top:0,insetInlineStart:0,width:\"100%\",height:\"100%\",borderRadius:e.borderRadiusSM,visibility:\"hidden\",border:`${e.lineWidthBold}px solid ${e.colorPrimary}`,animationName:YB,animationDuration:e.motionDurationSlow,animationTimingFunction:\"ease-in-out\",animationFillMode:\"backwards\",content:'\"\"',transition:`all ${e.motionDurationSlow}`}},[`\n        ${n}-checked:not(${n}-disabled),\n        ${t}-checked:not(${t}-disabled)\n      `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:\"transparent\"},[`&:hover ${t}:after`]:{borderColor:e.colorPrimaryHover}}},{[`${n}-disabled`]:{cursor:\"not-allowed\"},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:\"not-allowed\",pointerEvents:\"none\"},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,\"&:after\":{borderColor:e.colorTextDisabled}},\"&:after\":{display:\"none\"},\"& + span\":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function Sd(e,t){const n=Le(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize});return[qB(n)]}const yw=Xe(\"Checkbox\",(e,t)=>{let{prefixCls:n}=t;return[Sd(n,e)]}),ZB=e=>{const{prefixCls:t,componentCls:n,antCls:o}=e,l=`${n}-menu-item`,r=`\n    &${l}-expand ${l}-expand-icon,\n    ${l}-loading-icon\n  `,a=Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2);return[{[n]:{width:e.controlWidth}},{[`${n}-dropdown`]:[Sd(`${t}-checkbox`,e),{[`&${o}-select-dropdown`]:{padding:0}},{[n]:{\"&-checkbox\":{top:0,marginInlineEnd:e.paddingXS},\"&-menus\":{display:\"flex\",flexWrap:\"nowrap\",alignItems:\"flex-start\",[`&${n}-menu-empty`]:{[`${n}-menu`]:{width:\"100%\",height:\"auto\",[l]:{color:e.colorTextDisabled}}}},\"&-menu\":{flexGrow:1,minWidth:e.controlItemWidth,height:e.dropdownHeight,margin:0,padding:e.paddingXXS,overflow:\"auto\",verticalAlign:\"top\",listStyle:\"none\",\"-ms-overflow-style\":\"-ms-autohiding-scrollbar\",\"&:not(:last-child)\":{borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},\"&-item\":h(h({},Xt),{display:\"flex\",flexWrap:\"nowrap\",alignItems:\"center\",padding:`${a}px ${e.paddingSM}px`,lineHeight:e.lineHeight,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`,borderRadius:e.borderRadiusSM,\"&:hover\":{background:e.controlItemBgHover},\"&-disabled\":{color:e.colorTextDisabled,cursor:\"not-allowed\",\"&:hover\":{background:\"transparent\"},[r]:{color:e.colorTextDisabled}},[`&-active:not(${l}-disabled)`]:{\"&, &:hover\":{fontWeight:e.fontWeightStrong,backgroundColor:e.controlItemBgActive}},\"&-content\":{flex:\"auto\"},[r]:{marginInlineStart:e.paddingXXS,color:e.colorTextDescription,fontSize:e.fontSizeIcon},\"&-keyword\":{color:e.colorHighlight}})}}}]},{[`${n}-dropdown-rtl`]:{direction:\"rtl\"}},Ea(e)]},QB=Xe(\"Cascader\",e=>[ZB(e)],{controlWidth:184,controlItemWidth:111,dropdownHeight:180});var JB=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function eL(e,t,n){const o=e.toLowerCase().split(t).reduce((a,i,s)=>s===0?[i]:[...a,t,i],[]),l=[];let r=0;return o.forEach((a,i)=>{const s=r+a.length;let c=e.slice(r,s);r=s,i%2===1&&(c=f(\"span\",{class:`${n}-menu-item-keyword`,key:\"seperator\"},[c])),l.push(c)}),l}const tL=e=>{let{inputValue:t,path:n,prefixCls:o,fieldNames:l}=e;const r=[],a=t.toLowerCase();return n.forEach((i,s)=>{s!==0&&r.push(\" / \");let c=i[l.label];const u=typeof c;(u===\"string\"||u===\"number\")&&(c=eL(String(c),a,o)),r.push(c)}),r};function nL(){return h(h({},lt(rw(),[\"customSlots\",\"checkable\",\"options\"])),{multiple:{type:Boolean,default:void 0},size:String,bordered:{type:Boolean,default:void 0},placement:{type:String},suffixIcon:W.any,status:String,options:Array,popupClassName:String,dropdownClassName:String,\"onUpdate:value\":Function})}const oL=ne({compatConfig:{MODE:3},name:\"ACascader\",inheritAttrs:!1,props:Je(nL(),{bordered:!0,choiceTransitionName:\"\",allowClear:!0}),setup(e,t){let{attrs:n,expose:o,slots:l,emit:r}=t;const a=Jt(),i=un.useInject(),s=I(()=>Ro(i.status,e.status)),{prefixCls:c,rootPrefixCls:u,getPrefixCls:d,direction:p,getPopupContainer:m,renderEmpty:g,size:v,disabled:y}=Te(\"cascader\",e),b=I(()=>d(\"select\",e.prefixCls)),{compactSize:S,compactItemClassnames:$}=Xl(b,p),w=I(()=>S.value||v.value),C=jn(),_=I(()=>{var L;return(L=y.value)!==null&&L!==void 0?L:C.value}),[x,P]=Ov(b),[E]=QB(c),M=I(()=>p.value===\"rtl\"),O=I(()=>{if(!e.showSearch)return e.showSearch;let L={render:tL};return typeof e.showSearch==\"object\"&&(L=h(h({},L),e.showSearch)),L}),R=I(()=>re(e.popupClassName||e.dropdownClassName,`${c.value}-dropdown`,{[`${c.value}-dropdown-rtl`]:M.value},P.value)),D=Z();o({focus(){var L;(L=D.value)===null||L===void 0||L.focus()},blur(){var L;(L=D.value)===null||L===void 0||L.blur()}});const z=function(){for(var L=arguments.length,N=new Array(L),F=0;F<L;F++)N[F]=arguments[F];r(\"update:value\",N[0]),r(\"change\",...N),a.onFieldChange()},T=function(){for(var L=arguments.length,N=new Array(L),F=0;F<L;F++)N[F]=arguments[F];r(\"blur\",...N),a.onFieldBlur()},k=I(()=>e.showArrow!==void 0?e.showArrow:e.loading||!e.multiple),B=I(()=>e.placement!==void 0?e.placement:p.value===\"rtl\"?\"bottomRight\":\"bottomLeft\");return()=>{var L,N;const{notFoundContent:F=(L=l.notFoundContent)===null||L===void 0?void 0:L.call(l),expandIcon:j=(N=l.expandIcon)===null||N===void 0?void 0:N.call(l),multiple:H,bordered:K,allowClear:G,choiceTransitionName:V,transitionName:q,id:Q=a.id.value}=e,oe=JB(e,[\"notFoundContent\",\"expandIcon\",\"multiple\",\"bordered\",\"allowClear\",\"choiceTransitionName\",\"transitionName\",\"id\"]),le=F||g(\"Cascader\");let Y=j;j||(Y=M.value?f(Hl,null,null):f(Ao,null,null));const J=f(\"span\",{class:`${b.value}-menu-item-loading-icon`},[f(eo,{spin:!0},null)]),{suffixIcon:ce,removeIcon:ue,clearIcon:be}=_v(h(h({},e),{hasFeedback:i.hasFeedback,feedbackIcon:i.feedbackIcon,multiple:H,prefixCls:b.value,showArrow:k.value}),l);return E(x(f(I6,A(A(A({},oe),n),{},{id:Q,prefixCls:b.value,class:[c.value,{[`${b.value}-lg`]:w.value===\"large\",[`${b.value}-sm`]:w.value===\"small\",[`${b.value}-rtl`]:M.value,[`${b.value}-borderless`]:!K,[`${b.value}-in-form-item`]:i.isFormItemInput},Cn(b.value,s.value,i.hasFeedback),$.value,n.class,P.value],disabled:_.value,direction:p.value,placement:B.value,notFoundContent:le,allowClear:G,showSearch:O.value,expandIcon:Y,inputIcon:ce,removeIcon:ue,clearIcon:be,loadingIcon:J,checkable:!!H,dropdownClassName:R.value,dropdownPrefixCls:c.value,choiceTransitionName:_n(u.value,\"\",V),transitionName:_n(u.value,gv(B.value),q),getPopupContainer:m?.value,customSlots:h(h({},l),{checkable:()=>f(\"span\",{class:`${c.value}-checkbox-inner`},null)}),tagRender:e.tagRender||l.tagRender,displayRender:e.displayRender||l.displayRender,maxTagPlaceholder:e.maxTagPlaceholder||l.maxTagPlaceholder,showArrow:i.hasFeedback||e.showArrow,onChange:z,onBlur:T,ref:D}),l)))}}}),lL=Dt(h(oL,{SHOW_CHILD:Yx,SHOW_PARENT:Ux})),rL=()=>({name:String,prefixCls:String,options:ct([]),disabled:Boolean,id:String}),aL=()=>h(h({},rL()),{defaultValue:ct(),value:ct(),onChange:de(),\"onUpdate:value\":de()}),iL=()=>({prefixCls:String,defaultChecked:ye(),checked:ye(),disabled:ye(),isGroup:ye(),value:W.any,name:String,id:String,indeterminate:ye(),type:ke(\"checkbox\"),autofocus:ye(),onChange:de(),\"onUpdate:checked\":de(),onClick:de(),skipGroup:ye(!1)}),sL=()=>h(h({},iL()),{indeterminate:ye(!1)}),Sw=Symbol(\"CheckboxGroupContext\");var dy=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Jn=ne({compatConfig:{MODE:3},name:\"ACheckbox\",inheritAttrs:!1,__ANT_CHECKBOX:!0,props:sL(),setup(e,t){let{emit:n,attrs:o,slots:l,expose:r}=t;const a=Jt(),i=un.useInject(),{prefixCls:s,direction:c,disabled:u}=Te(\"checkbox\",e),d=jn(),[p,m]=yw(s),g=nt(Sw,void 0),v=Symbol(\"checkboxUniId\"),y=I(()=>g?.disabled.value||u.value);ze(()=>{!e.skipGroup&&g&&g.registerValue(v,e.value)}),ot(()=>{g&&g.cancelValue(v)}),Be(()=>{no(!!(e.checked!==void 0||g||e.value===void 0))});const b=C=>{const _=C.target.checked;n(\"update:checked\",_),n(\"change\",C),a.onFieldChange()},S=Z();return r({focus:()=>{var C;(C=S.value)===null||C===void 0||C.focus()},blur:()=>{var C;(C=S.value)===null||C===void 0||C.blur()}}),()=>{var C;const _=xt((C=l.default)===null||C===void 0?void 0:C.call(l)),{indeterminate:x,skipGroup:P,id:E=a.id.value}=e,M=dy(e,[\"indeterminate\",\"skipGroup\",\"id\"]),{onMouseenter:O,onMouseleave:R,onInput:D,class:z,style:T}=o,k=dy(o,[\"onMouseenter\",\"onMouseleave\",\"onInput\",\"class\",\"style\"]),B=h(h(h(h({},M),{id:E,prefixCls:s.value}),k),{disabled:y.value});g&&!P?(B.onChange=function(){for(var j=arguments.length,H=new Array(j),K=0;K<j;K++)H[K]=arguments[K];n(\"change\",...H),g.toggleOption({label:_,value:e.value})},B.name=g.name.value,B.checked=g.mergedValue.value.includes(e.value),B.disabled=y.value||d.value,B.indeterminate=x):B.onChange=b;const L=re({[`${s.value}-wrapper`]:!0,[`${s.value}-rtl`]:c.value===\"rtl\",[`${s.value}-wrapper-checked`]:B.checked,[`${s.value}-wrapper-disabled`]:B.disabled,[`${s.value}-wrapper-in-form-item`]:i.isFormItemInput},z,m.value),N=re({[`${s.value}-indeterminate`]:x},m.value);return p(f(\"label\",{class:L,style:T,onMouseenter:O,onMouseleave:R},[f(yx,A(A({\"aria-checked\":x?\"mixed\":void 0},B),{},{class:N,ref:S}),null),_.length?f(\"span\",null,[_]):null]))}}}),pu=ne({compatConfig:{MODE:3},name:\"ACheckboxGroup\",inheritAttrs:!1,props:aL(),setup(e,t){let{slots:n,attrs:o,emit:l,expose:r}=t;const a=Jt(),{prefixCls:i,direction:s}=Te(\"checkbox\",e),c=I(()=>`${i.value}-group`),[u,d]=yw(c),p=Z((e.value===void 0?e.defaultValue:e.value)||[]);pe(()=>e.value,()=>{p.value=e.value||[]});const m=I(()=>e.options.map(w=>typeof w==\"string\"||typeof w==\"number\"?{label:w,value:w}:w)),g=Z(Symbol()),v=Z(new Map),y=w=>{v.value.delete(w),g.value=Symbol()},b=(w,C)=>{v.value.set(w,C),g.value=Symbol()},S=Z(new Map);return pe(g,()=>{const w=new Map;for(const C of v.value.values())w.set(C,!0);S.value=w}),et(Sw,{cancelValue:y,registerValue:b,toggleOption:w=>{const C=p.value.indexOf(w.value),_=[...p.value];C===-1?_.push(w.value):_.splice(C,1),e.value===void 0&&(p.value=_);const x=_.filter(P=>S.value.has(P)).sort((P,E)=>{const M=m.value.findIndex(R=>R.value===P),O=m.value.findIndex(R=>R.value===E);return M-O});l(\"update:value\",x),l(\"change\",x),a.onFieldChange()},mergedValue:p,name:I(()=>e.name),disabled:I(()=>e.disabled)}),r({mergedValue:p}),()=>{var w;const{id:C=a.id.value}=e;let _=null;return m.value&&m.value.length>0&&(_=m.value.map(x=>{var P;return f(Jn,{prefixCls:i.value,key:x.value.toString(),disabled:\"disabled\"in x?x.disabled:e.disabled,indeterminate:x.indeterminate,value:x.value,checked:p.value.indexOf(x.value)!==-1,onChange:x.onChange,class:`${c.value}-item`},{default:()=>[n.label!==void 0?(P=n.label)===null||P===void 0?void 0:P.call(n,x):x.label]})})),u(f(\"div\",A(A({},o),{},{class:[c.value,{[`${c.value}-rtl`]:s.value===\"rtl\"},o.class,d.value],id:C}),[_||((w=n.default)===null||w===void 0?void 0:w.call(n))]))}}});Jn.Group=pu;Jn.install=function(e){return e.component(Jn.name,Jn),e.component(pu.name,pu),e};const cL={useBreakpoint:Ma},uL=Dt(yd),dL=e=>{const{componentCls:t,commentBg:n,commentPaddingBase:o,commentNestIndent:l,commentFontSizeBase:r,commentFontSizeSm:a,commentAuthorNameColor:i,commentAuthorTimeColor:s,commentActionColor:c,commentActionHoverColor:u,commentActionsMarginBottom:d,commentActionsMarginTop:p,commentContentDetailPMarginBottom:m}=e;return{[t]:{position:\"relative\",backgroundColor:n,[`${t}-inner`]:{display:\"flex\",padding:o},[`${t}-avatar`]:{position:\"relative\",flexShrink:0,marginRight:e.marginSM,cursor:\"pointer\",img:{width:\"32px\",height:\"32px\",borderRadius:\"50%\"}},[`${t}-content`]:{position:\"relative\",flex:\"1 1 auto\",minWidth:\"1px\",fontSize:r,wordWrap:\"break-word\",\"&-author\":{display:\"flex\",flexWrap:\"wrap\",justifyContent:\"flex-start\",marginBottom:e.marginXXS,fontSize:r,\"& > a,& > span\":{paddingRight:e.paddingXS,fontSize:a,lineHeight:\"18px\"},\"&-name\":{color:i,fontSize:r,transition:`color ${e.motionDurationSlow}`,\"> *\":{color:i,\"&:hover\":{color:i}}},\"&-time\":{color:s,whiteSpace:\"nowrap\",cursor:\"auto\"}},\"&-detail p\":{marginBottom:m,whiteSpace:\"pre-wrap\"}},[`${t}-actions`]:{marginTop:p,marginBottom:d,paddingLeft:0,\"> li\":{display:\"inline-block\",color:c,\"> span\":{marginRight:\"10px\",color:c,fontSize:a,cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,userSelect:\"none\",\"&:hover\":{color:u}}}},[`${t}-nested`]:{marginLeft:l},\"&-rtl\":{direction:\"rtl\"}}}},fL=Xe(\"Comment\",e=>{const t=Le(e,{commentBg:\"inherit\",commentPaddingBase:`${e.paddingMD}px 0`,commentNestIndent:\"44px\",commentFontSizeBase:e.fontSize,commentFontSizeSm:e.fontSizeSM,commentAuthorNameColor:e.colorTextTertiary,commentAuthorTimeColor:e.colorTextPlaceholder,commentActionColor:e.colorTextTertiary,commentActionHoverColor:e.colorTextSecondary,commentActionsMarginBottom:\"inherit\",commentActionsMarginTop:e.marginSM,commentContentDetailPMarginBottom:\"inherit\"});return[dL(t)]}),pL=()=>({actions:Array,author:W.any,avatar:W.any,content:W.any,prefixCls:String,datetime:W.any}),mL=ne({compatConfig:{MODE:3},name:\"AComment\",inheritAttrs:!1,props:pL(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"comment\",e),[a,i]=fL(l),s=(u,d)=>f(\"div\",{class:`${u}-nested`},[d]),c=u=>!u||!u.length?null:u.map((p,m)=>f(\"li\",{key:`action-${m}`},[p]));return()=>{var u,d,p,m,g,v,y,b,S,$,w;const C=l.value,_=(u=e.actions)!==null&&u!==void 0?u:(d=n.actions)===null||d===void 0?void 0:d.call(n),x=(p=e.author)!==null&&p!==void 0?p:(m=n.author)===null||m===void 0?void 0:m.call(n),P=(g=e.avatar)!==null&&g!==void 0?g:(v=n.avatar)===null||v===void 0?void 0:v.call(n),E=(y=e.content)!==null&&y!==void 0?y:(b=n.content)===null||b===void 0?void 0:b.call(n),M=(S=e.datetime)!==null&&S!==void 0?S:($=n.datetime)===null||$===void 0?void 0:$.call(n),O=f(\"div\",{class:`${C}-avatar`},[typeof P==\"string\"?f(\"img\",{src:P,alt:\"comment-avatar\"},null):P]),R=_?f(\"ul\",{class:`${C}-actions`},[c(Array.isArray(_)?_:[_])]):null,D=f(\"div\",{class:`${C}-content-author`},[x&&f(\"span\",{class:`${C}-content-author-name`},[x]),M&&f(\"span\",{class:`${C}-content-author-time`},[M])]),z=f(\"div\",{class:`${C}-content`},[D,f(\"div\",{class:`${C}-content-detail`},[E]),R]),T=f(\"div\",{class:`${C}-inner`},[O,z]),k=xt((w=n.default)===null||w===void 0?void 0:w.call(n));return a(f(\"div\",A(A({},o),{},{class:[C,{[`${C}-rtl`]:r.value===\"rtl\"},o.class,i.value]}),[T,k&&k.length?s(C,k):null]))}}}),vL=Dt(mL);let ic=h({},En.Modal);function gL(e){e?ic=h(h({},ic),e):ic=h({},En.Modal)}function hL(){return ic}const Zp=\"internalMark\",sc=ne({compatConfig:{MODE:3},name:\"ALocaleProvider\",props:{locale:{type:Object},ANT_MARK__:String},setup(e,t){let{slots:n}=t;no(e.ANT_MARK__===Zp);const o=gt({antLocale:h(h({},e.locale),{exist:!0}),ANT_MARK__:Zp});return et(\"localeData\",o),pe(()=>e.locale,l=>{gL(l&&l.Modal),o.antLocale=h(h({},l),{exist:!0})},{immediate:!0}),()=>{var l;return(l=n.default)===null||l===void 0?void 0:l.call(n)}}});sc.install=function(e){return e.component(sc.name,sc),e};const $w=Dt(sc),Cw=ne({name:\"Notice\",inheritAttrs:!1,props:[\"prefixCls\",\"duration\",\"updateMark\",\"noticeKey\",\"closeIcon\",\"closable\",\"props\",\"onClick\",\"onClose\",\"holder\",\"visible\"],setup(e,t){let{attrs:n,slots:o}=t,l,r=!1;const a=I(()=>e.duration===void 0?4.5:e.duration),i=()=>{a.value&&!r&&(l=setTimeout(()=>{c()},a.value*1e3))},s=()=>{l&&(clearTimeout(l),l=null)},c=d=>{d&&d.stopPropagation(),s();const{onClose:p,noticeKey:m}=e;p&&p(m)},u=()=>{s(),i()};return Be(()=>{i()}),Mn(()=>{r=!0,s()}),pe([a,()=>e.updateMark,()=>e.visible],(d,p)=>{let[m,g,v]=d,[y,b,S]=p;(m!==y||g!==b||v!==S&&S)&&u()},{flush:\"post\"}),()=>{var d,p;const{prefixCls:m,closable:g,closeIcon:v=(d=o.closeIcon)===null||d===void 0?void 0:d.call(o),onClick:y,holder:b}=e,{class:S,style:$}=n,w=`${m}-notice`,C=Object.keys(n).reduce((x,P)=>((P.startsWith(\"data-\")||P.startsWith(\"aria-\")||P===\"role\")&&(x[P]=n[P]),x),{}),_=f(\"div\",A({class:re(w,S,{[`${w}-closable`]:g}),style:$,onMouseenter:s,onMouseleave:i,onClick:y},C),[f(\"div\",{class:`${w}-content`},[(p=o.default)===null||p===void 0?void 0:p.call(o)]),g?f(\"a\",{tabindex:0,onClick:c,class:`${w}-close`},[v||f(\"span\",{class:`${w}-close-x`},null)]):null]);return b?f(Im,{to:b},{default:()=>_}):_}}});var bL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};let fy=0;const yL=Date.now();function py(){const e=fy;return fy+=1,`rcNotification_${yL}_${e}`}const mu=ne({name:\"Notification\",inheritAttrs:!1,props:[\"prefixCls\",\"transitionName\",\"animation\",\"maxCount\",\"closeIcon\",\"hashId\"],setup(e,t){let{attrs:n,expose:o,slots:l}=t;const r=new Map,a=Z([]),i=I(()=>{const{prefixCls:u,animation:d=\"fade\"}=e;let p=e.transitionName;return!p&&d&&(p=`${u}-${d}`),Gu(p)}),s=(u,d)=>{const p=u.key||py(),m=h(h({},u),{key:p}),{maxCount:g}=e,v=a.value.map(b=>b.notice.key).indexOf(p),y=a.value.concat();v!==-1?y.splice(v,1,{notice:m,holderCallback:d}):(g&&a.value.length>=g&&(m.key=y[0].notice.key,m.updateMark=py(),m.userPassKey=p,y.shift()),y.push({notice:m,holderCallback:d})),a.value=y},c=u=>{a.value=jt(a.value).filter(d=>{let{notice:{key:p,userPassKey:m}}=d;return(m||p)!==u})};return o({add:s,remove:c,notices:a}),()=>{var u;const{prefixCls:d,closeIcon:p=(u=l.closeIcon)===null||u===void 0?void 0:u.call(l,{prefixCls:d})}=e,m=a.value.map((v,y)=>{let{notice:b,holderCallback:S}=v;const $=y===a.value.length-1?b.updateMark:void 0,{key:w,userPassKey:C}=b,{content:_}=b,x=h(h(h({prefixCls:d,closeIcon:typeof p==\"function\"?p({prefixCls:d}):p},b),b.props),{key:w,noticeKey:C||w,updateMark:$,onClose:P=>{var E;c(P),(E=b.onClose)===null||E===void 0||E.call(b)},onClick:b.onClick});return S?f(\"div\",{key:w,class:`${d}-hook-holder`,ref:P=>{typeof w>\"u\"||(P?(r.set(w,P),S(P,x)):r.delete(w))}},null):f(Cw,A(A({},x),{},{class:re(x.class,e.hashId)}),{default:()=>[typeof _==\"function\"?_({prefixCls:d}):_]})}),g={[d]:1,[n.class]:!!n.class,[e.hashId]:!0};return f(\"div\",{class:g,style:n.style||{top:\"65px\",left:\"50%\"}},[f(Tu,A({tag:\"div\"},i.value),{default:()=>[m]})])}}});mu.newInstance=function(t,n){const o=t||{},{name:l=\"notification\",getContainer:r,appContext:a,prefixCls:i,rootPrefixCls:s,transitionName:c,hasTransitionName:u,useStyle:d}=o,p=bL(o,[\"name\",\"getContainer\",\"appContext\",\"prefixCls\",\"rootPrefixCls\",\"transitionName\",\"hasTransitionName\",\"useStyle\"]),m=document.createElement(\"div\");r?r().appendChild(m):document.body.appendChild(m);const g=ne({compatConfig:{MODE:3},name:\"NotificationWrapper\",setup(y,b){let{attrs:S}=b;const $=ee(),w=I(()=>mn.getPrefixCls(l,i)),[,C]=d(w);return Be(()=>{n({notice(_){var x;(x=$.value)===null||x===void 0||x.add(_)},removeNotice(_){var x;(x=$.value)===null||x===void 0||x.remove(_)},destroy(){zl(null,m),m.parentNode&&m.parentNode.removeChild(m)},component:$})}),()=>{const _=mn,x=_.getRootPrefixCls(s,w.value),P=u?c:`${w.value}-${c}`;return f(Bl,A(A({},_),{},{prefixCls:x}),{default:()=>[f(mu,A(A({ref:$},S),{},{prefixCls:w.value,transitionName:P,hashId:C.value}),null)]})}}}),v=f(g,p);v.appContext=a||v.appContext,zl(v,m)};let my=0;const SL=Date.now();function vy(){const e=my;return my+=1,`rcNotification_${SL}_${e}`}const $L=ne({name:\"HookNotification\",inheritAttrs:!1,props:[\"prefixCls\",\"transitionName\",\"animation\",\"maxCount\",\"closeIcon\",\"hashId\",\"remove\",\"notices\",\"getStyles\",\"getClassName\",\"onAllRemoved\",\"getContainer\"],setup(e,t){let{attrs:n,slots:o}=t;const l=new Map,r=I(()=>e.notices),a=I(()=>{let u=e.transitionName;if(!u&&e.animation)switch(typeof e.animation){case\"string\":u=e.animation;break;case\"function\":u=e.animation().name;break;case\"object\":u=e.animation.name;break;default:u=`${e.prefixCls}-fade`;break}return Gu(u)}),i=u=>e.remove(u),s=Z({});pe(r,()=>{const u={};Object.keys(s.value).forEach(d=>{u[d]=[]}),e.notices.forEach(d=>{const{placement:p=\"topRight\"}=d.notice;p&&(u[p]=u[p]||[],u[p].push(d))}),s.value=u});const c=I(()=>Object.keys(s.value));return()=>{var u;const{prefixCls:d,closeIcon:p=(u=o.closeIcon)===null||u===void 0?void 0:u.call(o,{prefixCls:d})}=e,m=c.value.map(g=>{var v,y;const b=s.value[g],S=(v=e.getClassName)===null||v===void 0?void 0:v.call(e,g),$=(y=e.getStyles)===null||y===void 0?void 0:y.call(e,g),w=b.map((x,P)=>{let{notice:E,holderCallback:M}=x;const O=P===r.value.length-1?E.updateMark:void 0,{key:R,userPassKey:D}=E,{content:z}=E,T=h(h(h({prefixCls:d,closeIcon:typeof p==\"function\"?p({prefixCls:d}):p},E),E.props),{key:R,noticeKey:D||R,updateMark:O,onClose:k=>{var B;i(k),(B=E.onClose)===null||B===void 0||B.call(E)},onClick:E.onClick});return M?f(\"div\",{key:R,class:`${d}-hook-holder`,ref:k=>{typeof R>\"u\"||(k?(l.set(R,k),M(k,T)):l.delete(R))}},null):f(Cw,A(A({},T),{},{class:re(T.class,e.hashId)}),{default:()=>[typeof z==\"function\"?z({prefixCls:d}):z]})}),C={[d]:1,[`${d}-${g}`]:1,[n.class]:!!n.class,[e.hashId]:!0,[S]:!!S};function _(){var x;b.length>0||(Reflect.deleteProperty(s.value,g),(x=e.onAllRemoved)===null||x===void 0||x.call(e))}return f(\"div\",{key:g,class:C,style:n.style||$||{top:\"65px\",left:\"50%\"}},[f(Tu,A(A({tag:\"div\"},a.value),{},{onAfterLeave:_}),{default:()=>[w]})])});return f(r1,{getContainer:e.getContainer},{default:()=>[m]})}}});var CL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const xL=()=>document.body;let gy=0;function wL(){const e={};for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return n.forEach(l=>{l&&Object.keys(l).forEach(r=>{const a=l[r];a!==void 0&&(e[r]=a)})}),e}function xw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{getContainer:t=xL,motion:n,prefixCls:o,maxCount:l,getClassName:r,getStyles:a,onAllRemoved:i}=e,s=CL(e,[\"getContainer\",\"motion\",\"prefixCls\",\"maxCount\",\"getClassName\",\"getStyles\",\"onAllRemoved\"]),c=ee([]),u=ee(),d=(b,S)=>{const $=b.key||vy(),w=h(h({},b),{key:$}),C=c.value.map(x=>x.notice.key).indexOf($),_=c.value.concat();C!==-1?_.splice(C,1,{notice:w,holderCallback:S}):(l&&c.value.length>=l&&(w.key=_[0].notice.key,w.updateMark=vy(),w.userPassKey=$,_.shift()),_.push({notice:w,holderCallback:S})),c.value=_},p=b=>{c.value=c.value.filter(S=>{let{notice:{key:$,userPassKey:w}}=S;return(w||$)!==b})},m=()=>{c.value=[]},g=()=>f($L,{ref:u,prefixCls:o,maxCount:l,notices:c.value,remove:p,getClassName:r,getStyles:a,animation:n,hashId:e.hashId,onAllRemoved:i,getContainer:t},null),v=ee([]),y={open:b=>{const S=wL(s,b);(S.key===null||S.key===void 0)&&(S.key=`vc-notification-${gy}`,gy+=1),v.value=[...v.value,{type:\"open\",config:S}]},close:b=>{v.value=[...v.value,{type:\"close\",key:b}]},destroy:()=>{v.value=[...v.value,{type:\"destroy\"}]}};return pe(v,()=>{v.value.length&&(v.value.forEach(b=>{switch(b.type){case\"open\":d(b.config);break;case\"close\":p(b.key);break;case\"destroy\":m();break}}),v.value=[])}),[y,g]}const _L=e=>{const{componentCls:t,iconCls:n,boxShadowSecondary:o,colorBgElevated:l,colorSuccess:r,colorError:a,colorWarning:i,colorInfo:s,fontSizeLG:c,motionEaseInOutCirc:u,motionDurationSlow:d,marginXS:p,paddingXS:m,borderRadiusLG:g,zIndexPopup:v,messageNoticeContentPadding:y}=e,b=new rt(\"MessageMoveIn\",{\"0%\":{padding:0,transform:\"translateY(-100%)\",opacity:0},\"100%\":{padding:m,transform:\"translateY(0)\",opacity:1}}),S=new rt(\"MessageMoveOut\",{\"0%\":{maxHeight:e.height,padding:m,opacity:1},\"100%\":{maxHeight:0,padding:0,opacity:0}});return[{[t]:h(h({},qe(e)),{position:\"fixed\",top:p,left:\"50%\",transform:\"translateX(-50%)\",width:\"100%\",pointerEvents:\"none\",zIndex:v,[`${t}-move-up`]:{animationFillMode:\"forwards\"},[`\n        ${t}-move-up-appear,\n        ${t}-move-up-enter\n      `]:{animationName:b,animationDuration:d,animationPlayState:\"paused\",animationTimingFunction:u},[`\n        ${t}-move-up-appear${t}-move-up-appear-active,\n        ${t}-move-up-enter${t}-move-up-enter-active\n      `]:{animationPlayState:\"running\"},[`${t}-move-up-leave`]:{animationName:S,animationDuration:d,animationPlayState:\"paused\",animationTimingFunction:u},[`${t}-move-up-leave${t}-move-up-leave-active`]:{animationPlayState:\"running\"},\"&-rtl\":{direction:\"rtl\",span:{direction:\"rtl\"}}})},{[`${t}-notice`]:{padding:m,textAlign:\"center\",[n]:{verticalAlign:\"text-bottom\",marginInlineEnd:p,fontSize:c},[`${t}-notice-content`]:{display:\"inline-block\",padding:y,background:l,borderRadius:g,boxShadow:o,pointerEvents:\"all\"},[`${t}-success ${n}`]:{color:r},[`${t}-error ${n}`]:{color:a},[`${t}-warning ${n}`]:{color:i},[`\n        ${t}-info ${n},\n        ${t}-loading ${n}`]:{color:s}}},{[`${t}-notice-pure-panel`]:{padding:0,textAlign:\"start\"}}]},ww=Xe(\"Message\",e=>{const t=Le(e,{messageNoticeContentPadding:`${(e.controlHeightLG-e.fontSize*e.lineHeight)/2}px ${e.paddingSM}px`});return[_L(t)]},e=>({height:150,zIndexPopup:e.zIndexPopupBase+10})),IL={info:f(_r,null,null),success:f(hl,null,null),error:f(Vn,null,null),warning:f(gl,null,null),loading:f(eo,null,null)},PL=ne({name:\"PureContent\",inheritAttrs:!1,props:[\"prefixCls\",\"type\",\"icon\"],setup(e,t){let{slots:n}=t;return()=>{var o;return f(\"div\",{class:re(`${e.prefixCls}-custom-content`,`${e.prefixCls}-${e.type}`)},[e.icon||IL[e.type],f(\"span\",null,[(o=n.default)===null||o===void 0?void 0:o.call(n)])])}}});var TL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const OL=8,EL=3,ML=ne({name:\"Holder\",inheritAttrs:!1,props:[\"top\",\"prefixCls\",\"getContainer\",\"maxCount\",\"duration\",\"rtl\",\"transitionName\",\"onAllRemoved\",\"animation\",\"staticGetContainer\"],setup(e,t){let{expose:n}=t;var o,l;const{getPrefixCls:r,getPopupContainer:a}=Te(\"message\",e),i=I(()=>r(\"message\",e.prefixCls)),[,s]=ww(i),c=()=>{var v;const y=(v=e.top)!==null&&v!==void 0?v:OL;return{left:\"50%\",transform:\"translateX(-50%)\",top:typeof y==\"number\"?`${y}px`:y}},u=()=>re(s.value,e.rtl?`${i.value}-rtl`:\"\"),d=()=>{var v;return uv({prefixCls:i.value,animation:(v=e.animation)!==null&&v!==void 0?v:\"move-up\",transitionName:e.transitionName})},p=f(\"span\",{class:`${i.value}-close-x`},[f(Kn,{class:`${i.value}-close-icon`},null)]),[m,g]=xw({getStyles:c,prefixCls:i.value,getClassName:u,motion:d,closable:!1,closeIcon:p,duration:(o=e.duration)!==null&&o!==void 0?o:EL,getContainer:(l=e.staticGetContainer)!==null&&l!==void 0?l:a.value,maxCount:e.maxCount,onAllRemoved:e.onAllRemoved});return n(h(h({},m),{prefixCls:i,hashId:s})),g}});let hy=0;function AL(e){const t=ee(null),n=Symbol(\"messageHolderKey\"),o=s=>{var c;(c=t.value)===null||c===void 0||c.close(s)},l=s=>{if(!t.value){const C=()=>{};return C.then=()=>{},C}const{open:c,prefixCls:u,hashId:d}=t.value,p=`${u}-notice`,{content:m,icon:g,type:v,key:y,class:b,onClose:S}=s,$=TL(s,[\"content\",\"icon\",\"type\",\"key\",\"class\",\"onClose\"]);let w=y;return w==null&&(hy+=1,w=`antd-message-${hy}`),RO(C=>(c(h(h({},$),{key:w,content:()=>f(PL,{prefixCls:u,type:v,icon:typeof g==\"function\"?g():g},{default:()=>[typeof m==\"function\"?m():m]}),placement:\"top\",class:re(v&&`${p}-${v}`,d,b),onClose:()=>{S?.(),C()}})),()=>{o(w)}))},a={open:l,destroy:s=>{var c;s!==void 0?o(s):(c=t.value)===null||c===void 0||c.destroy()}};return[\"info\",\"success\",\"warning\",\"error\",\"loading\"].forEach(s=>{const c=(u,d,p)=>{let m;u&&typeof u==\"object\"&&\"content\"in u?m=u:m={content:u};let g,v;typeof d==\"function\"?v=d:(g=d,v=p);const y=h(h({onClose:v,duration:g},m),{type:s});return l(y)};a[s]=c}),[a,()=>f(ML,A(A({key:n},e),{},{ref:t}),null)]}function _w(e){return AL(e)}let Iw=3,Pw,Pn,DL=1,Tw=\"\",Ow=\"move-up\",Ew=!1,Mw=()=>document.body,Aw,Dw=!1;function RL(){return DL++}function kL(e){e.top!==void 0&&(Pw=e.top,Pn=null),e.duration!==void 0&&(Iw=e.duration),e.prefixCls!==void 0&&(Tw=e.prefixCls),e.getContainer!==void 0&&(Mw=e.getContainer,Pn=null),e.transitionName!==void 0&&(Ow=e.transitionName,Pn=null,Ew=!0),e.maxCount!==void 0&&(Aw=e.maxCount,Pn=null),e.rtl!==void 0&&(Dw=e.rtl)}function NL(e,t){if(Pn){t(Pn);return}mu.newInstance({appContext:e.appContext,prefixCls:e.prefixCls||Tw,rootPrefixCls:e.rootPrefixCls,transitionName:Ow,hasTransitionName:Ew,style:{top:Pw},getContainer:Mw||e.getPopupContainer,maxCount:Aw,name:\"message\",useStyle:ww},n=>{if(Pn){t(Pn);return}Pn=n,t(n)})}const Rw={info:_r,success:hl,error:Vn,warning:gl,loading:eo},BL=Object.keys(Rw);function LL(e){const t=e.duration!==void 0?e.duration:Iw,n=e.key||RL(),o=new Promise(r=>{const a=()=>(typeof e.onClose==\"function\"&&e.onClose(),r(!0));NL(e,i=>{i.notice({key:n,duration:t,style:e.style||{},class:e.class,content:s=>{let{prefixCls:c}=s;const u=Rw[e.type],d=u?f(u,null,null):\"\",p=re(`${c}-custom-content`,{[`${c}-${e.type}`]:e.type,[`${c}-rtl`]:Dw===!0});return f(\"div\",{class:p},[typeof e.icon==\"function\"?e.icon():e.icon||d,f(\"span\",null,[typeof e.content==\"function\"?e.content():e.content])])},onClose:a,onClick:e.onClick})})}),l=()=>{Pn&&Pn.removeNotice(n)};return l.then=(r,a)=>o.then(r,a),l.promise=o,l}function FL(e){return Object.prototype.toString.call(e)===\"[object Object]\"&&!!e.content}const ho={open:LL,config:kL,destroy(e){if(Pn)if(e){const{removeNotice:t}=Pn;t(e)}else{const{destroy:t}=Pn;t(),Pn=null}}};function zL(e,t){e[t]=(n,o,l)=>FL(n)?e.open(h(h({},n),{type:t})):(typeof o==\"function\"&&(l=o,o=void 0),e.open({content:n,duration:o,type:t,onClose:l}))}BL.forEach(e=>zL(ho,e));ho.warn=ho.warning;ho.useMessage=_w;const HL=e=>{const{componentCls:t,width:n,notificationMarginEdge:o}=e,l=new rt(\"antNotificationTopFadeIn\",{\"0%\":{marginTop:\"-100%\",opacity:0},\"100%\":{marginTop:0,opacity:1}}),r=new rt(\"antNotificationBottomFadeIn\",{\"0%\":{marginBottom:\"-100%\",opacity:0},\"100%\":{marginBottom:0,opacity:1}}),a=new rt(\"antNotificationLeftFadeIn\",{\"0%\":{right:{_skip_check_:!0,value:n},opacity:0},\"100%\":{right:{_skip_check_:!0,value:0},opacity:1}});return{[`&${t}-top, &${t}-bottom`]:{marginInline:0},[`&${t}-top`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:l}},[`&${t}-bottom`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:r}},[`&${t}-topLeft, &${t}-bottomLeft`]:{marginInlineEnd:0,marginInlineStart:o,[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:a}}}},jL=e=>{const{iconCls:t,componentCls:n,boxShadowSecondary:o,fontSizeLG:l,notificationMarginBottom:r,borderRadiusLG:a,colorSuccess:i,colorInfo:s,colorWarning:c,colorError:u,colorTextHeading:d,notificationBg:p,notificationPadding:m,notificationMarginEdge:g,motionDurationMid:v,motionEaseInOut:y,fontSize:b,lineHeight:S,width:$,notificationIconSize:w}=e,C=`${n}-notice`,_=new rt(\"antNotificationFadeIn\",{\"0%\":{left:{_skip_check_:!0,value:$},opacity:0},\"100%\":{left:{_skip_check_:!0,value:0},opacity:1}}),x=new rt(\"antNotificationFadeOut\",{\"0%\":{maxHeight:e.animationMaxHeight,marginBottom:r,opacity:1},\"100%\":{maxHeight:0,marginBottom:0,paddingTop:0,paddingBottom:0,opacity:0}});return[{[n]:h(h(h(h({},qe(e)),{position:\"fixed\",zIndex:e.zIndexPopup,marginInlineEnd:g,[`${n}-hook-holder`]:{position:\"relative\"},[`&${n}-top, &${n}-bottom`]:{[`${n}-notice`]:{marginInline:\"auto auto\"}},[`&${n}-topLeft, &${n}-bottomLeft`]:{[`${n}-notice`]:{marginInlineEnd:\"auto\",marginInlineStart:0}},[`${n}-fade-enter, ${n}-fade-appear`]:{animationDuration:e.motionDurationMid,animationTimingFunction:y,animationFillMode:\"both\",opacity:0,animationPlayState:\"paused\"},[`${n}-fade-leave`]:{animationTimingFunction:y,animationFillMode:\"both\",animationDuration:v,animationPlayState:\"paused\"},[`${n}-fade-enter${n}-fade-enter-active, ${n}-fade-appear${n}-fade-appear-active`]:{animationName:_,animationPlayState:\"running\"},[`${n}-fade-leave${n}-fade-leave-active`]:{animationName:x,animationPlayState:\"running\"}}),HL(e)),{\"&-rtl\":{direction:\"rtl\",[`${n}-notice-btn`]:{float:\"left\"}}})},{[C]:{position:\"relative\",width:$,maxWidth:`calc(100vw - ${g*2}px)`,marginBottom:r,marginInlineStart:\"auto\",padding:m,overflow:\"hidden\",lineHeight:S,wordWrap:\"break-word\",background:p,borderRadius:a,boxShadow:o,[`${n}-close-icon`]:{fontSize:b,cursor:\"pointer\"},[`${C}-message`]:{marginBottom:e.marginXS,color:d,fontSize:l,lineHeight:e.lineHeightLG},[`${C}-description`]:{fontSize:b},[`&${C}-closable ${C}-message`]:{paddingInlineEnd:e.paddingLG},[`${C}-with-icon ${C}-message`]:{marginBottom:e.marginXS,marginInlineStart:e.marginSM+w,fontSize:l},[`${C}-with-icon ${C}-description`]:{marginInlineStart:e.marginSM+w,fontSize:b},[`${C}-icon`]:{position:\"absolute\",fontSize:w,lineHeight:0,[`&-success${t}`]:{color:i},[`&-info${t}`]:{color:s},[`&-warning${t}`]:{color:c},[`&-error${t}`]:{color:u}},[`${C}-close`]:{position:\"absolute\",top:e.notificationPaddingVertical,insetInlineEnd:e.notificationPaddingHorizontal,color:e.colorIcon,outline:\"none\",width:e.notificationCloseButtonSize,height:e.notificationCloseButtonSize,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",\"&:hover\":{color:e.colorIconHover,backgroundColor:e.wireframe?\"transparent\":e.colorFillContent}},[`${C}-btn`]:{float:\"right\",marginTop:e.marginSM}}},{[`${C}-pure-panel`]:{margin:0}}]},kw=Xe(\"Notification\",e=>{const t=e.paddingMD,n=e.paddingLG,o=Le(e,{notificationBg:e.colorBgElevated,notificationPaddingVertical:t,notificationPaddingHorizontal:n,notificationPadding:`${e.paddingMD}px ${e.paddingContentHorizontalLG}px`,notificationMarginBottom:e.margin,notificationMarginEdge:e.marginLG,animationMaxHeight:150,notificationIconSize:e.fontSizeLG*e.lineHeightLG,notificationCloseButtonSize:e.controlHeightLG*.55});return[jL(o)]},e=>({zIndexPopup:e.zIndexPopupBase+50,width:384}));function WL(e,t){return t||f(\"span\",{class:`${e}-close-x`},[f(Kn,{class:`${e}-close-icon`},null)])}f(_r,null,null),f(hl,null,null),f(Vn,null,null),f(gl,null,null),f(eo,null,null);const VL={success:hl,info:_r,error:Vn,warning:gl};function KL(e){let{prefixCls:t,icon:n,type:o,message:l,description:r,btn:a}=e,i=null;if(n)i=f(\"span\",{class:`${t}-icon`},[Yr(n)]);else if(o){const s=VL[o];i=f(s,{class:`${t}-icon ${t}-icon-${o}`},null)}return f(\"div\",{class:re({[`${t}-with-icon`]:i}),role:\"alert\"},[i,f(\"div\",{class:`${t}-message`},[l]),f(\"div\",{class:`${t}-description`},[r]),a&&f(\"div\",{class:`${t}-btn`},[a])])}function Nw(e,t,n){let o;switch(t=typeof t==\"number\"?`${t}px`:t,n=typeof n==\"number\"?`${n}px`:n,e){case\"top\":o={left:\"50%\",transform:\"translateX(-50%)\",right:\"auto\",top:t,bottom:\"auto\"};break;case\"topLeft\":o={left:0,top:t,bottom:\"auto\"};break;case\"topRight\":o={right:0,top:t,bottom:\"auto\"};break;case\"bottom\":o={left:\"50%\",transform:\"translateX(-50%)\",right:\"auto\",top:\"auto\",bottom:n};break;case\"bottomLeft\":o={left:0,top:\"auto\",bottom:n};break;default:o={right:0,top:\"auto\",bottom:n};break}return o}function GL(e){return{name:`${e}-fade`}}var XL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const by=24,UL=4.5,YL=ne({name:\"Holder\",inheritAttrs:!1,props:[\"prefixCls\",\"class\",\"type\",\"icon\",\"content\",\"onAllRemoved\"],setup(e,t){let{expose:n}=t;const{getPrefixCls:o,getPopupContainer:l}=Te(\"notification\",e),r=I(()=>e.prefixCls||o(\"notification\")),a=p=>{var m,g;return Nw(p,(m=e.top)!==null&&m!==void 0?m:by,(g=e.bottom)!==null&&g!==void 0?g:by)},[,i]=kw(r),s=()=>re(i.value,{[`${r.value}-rtl`]:e.rtl}),c=()=>GL(r.value),[u,d]=xw({prefixCls:r.value,getStyles:a,getClassName:s,motion:c,closable:!0,closeIcon:WL(r.value),duration:UL,getContainer:()=>{var p,m;return((p=e.getPopupContainer)===null||p===void 0?void 0:p.call(e))||((m=l.value)===null||m===void 0?void 0:m.call(l))||document.body},maxCount:e.maxCount,hashId:i.value,onAllRemoved:e.onAllRemoved});return n(h(h({},u),{prefixCls:r.value,hashId:i})),d}});function qL(e){const t=ee(null),n=Symbol(\"notificationHolderKey\"),o=i=>{if(!t.value)return;const{open:s,prefixCls:c,hashId:u}=t.value,d=`${c}-notice`,{message:p,description:m,icon:g,type:v,btn:y,class:b}=i,S=XL(i,[\"message\",\"description\",\"icon\",\"type\",\"btn\",\"class\"]);return s(h(h({placement:\"topRight\"},S),{content:()=>f(KL,{prefixCls:d,icon:typeof g==\"function\"?g():g,type:v,message:typeof p==\"function\"?p():p,description:typeof m==\"function\"?m():m,btn:typeof y==\"function\"?y():y},null),class:re(v&&`${d}-${v}`,u,b)}))},r={open:o,destroy:i=>{var s,c;i!==void 0?(s=t.value)===null||s===void 0||s.close(i):(c=t.value)===null||c===void 0||c.destroy()}};return[\"success\",\"info\",\"warning\",\"error\"].forEach(i=>{r[i]=s=>o(h(h({},s),{type:i}))}),[r,()=>f(YL,A(A({key:n},e),{},{ref:t}),null)]}function Bw(e){return qL(e)}const ar={};let Lw=4.5,Fw=\"24px\",zw=\"24px\",Qp=\"\",Hw=\"topRight\",jw=()=>document.body,Ww=null,Jp=!1,Vw;function ZL(e){const{duration:t,placement:n,bottom:o,top:l,getContainer:r,closeIcon:a,prefixCls:i}=e;i!==void 0&&(Qp=i),t!==void 0&&(Lw=t),n!==void 0&&(Hw=n),o!==void 0&&(zw=typeof o==\"number\"?`${o}px`:o),l!==void 0&&(Fw=typeof l==\"number\"?`${l}px`:l),r!==void 0&&(jw=r),a!==void 0&&(Ww=a),e.rtl!==void 0&&(Jp=e.rtl),e.maxCount!==void 0&&(Vw=e.maxCount)}function QL(e,t){let{prefixCls:n,placement:o=Hw,getContainer:l=jw,top:r,bottom:a,closeIcon:i=Ww,appContext:s}=e;const{getPrefixCls:c}=uF(),u=c(\"notification\",n||Qp),d=`${u}-${o}-${Jp}`,p=ar[d];if(p){Promise.resolve(p).then(g=>{t(g)});return}const m=re(`${u}-${o}`,{[`${u}-rtl`]:Jp===!0});mu.newInstance({name:\"notification\",prefixCls:n||Qp,useStyle:kw,class:m,style:Nw(o,r??Fw,a??zw),appContext:s,getContainer:l,closeIcon:g=>{let{prefixCls:v}=g;return f(\"span\",{class:`${v}-close-x`},[Yr(i,{},f(Kn,{class:`${v}-close-icon`},null))])},maxCount:Vw,hasTransitionName:!0},g=>{ar[d]=g,t(g)})}const JL={success:e$,info:JS,error:QS,warning:ZS};function eF(e){const{icon:t,type:n,description:o,message:l,btn:r}=e,a=e.duration===void 0?Lw:e.duration;QL(e,i=>{i.notice({content:s=>{let{prefixCls:c}=s;const u=`${c}-notice`;let d=null;if(t)d=()=>f(\"span\",{class:`${u}-icon`},[Yr(t)]);else if(n){const p=JL[n];d=()=>f(p,{class:`${u}-icon ${u}-icon-${n}`},null)}return f(\"div\",{class:d?`${u}-with-icon`:\"\"},[d&&d(),f(\"div\",{class:`${u}-message`},[!o&&d?f(\"span\",{class:`${u}-message-single-line-auto-margin`},null):null,Yr(l)]),f(\"div\",{class:`${u}-description`},[Yr(o)]),r?f(\"span\",{class:`${u}-btn`},[Yr(r)]):null])},duration:a,closable:!0,onClose:e.onClose,onClick:e.onClick,key:e.key,style:e.style||{},class:e.class})})}const vl={open:eF,close(e){Object.keys(ar).forEach(t=>Promise.resolve(ar[t]).then(n=>{n.removeNotice(e)}))},config:ZL,destroy(){Object.keys(ar).forEach(e=>{Promise.resolve(ar[e]).then(t=>{t.destroy()}),delete ar[e]})}},tF=[\"success\",\"info\",\"warning\",\"error\"];tF.forEach(e=>{vl[e]=t=>vl.open(h(h({},t),{type:e}))});vl.warn=vl.warning;vl.useNotification=Bw;const nF=`-ant-${Date.now()}-${Math.random()}`;function oF(e,t){const n={},o=(a,i)=>{let s=a.clone();return s=i?.(s)||s,s.toRgbString()},l=(a,i)=>{const s=new vt(a),c=Ac(s.toRgbString());n[`${i}-color`]=o(s),n[`${i}-color-disabled`]=c[1],n[`${i}-color-hover`]=c[4],n[`${i}-color-active`]=c[6],n[`${i}-color-outline`]=s.clone().setAlpha(.2).toRgbString(),n[`${i}-color-deprecated-bg`]=c[0],n[`${i}-color-deprecated-border`]=c[2]};if(t.primaryColor){l(t.primaryColor,\"primary\");const a=new vt(t.primaryColor),i=Ac(a.toRgbString());i.forEach((c,u)=>{n[`primary-${u+1}`]=c}),n[\"primary-color-deprecated-l-35\"]=o(a,c=>c.lighten(35)),n[\"primary-color-deprecated-l-20\"]=o(a,c=>c.lighten(20)),n[\"primary-color-deprecated-t-20\"]=o(a,c=>c.tint(20)),n[\"primary-color-deprecated-t-50\"]=o(a,c=>c.tint(50)),n[\"primary-color-deprecated-f-12\"]=o(a,c=>c.setAlpha(c.getAlpha()*.12));const s=new vt(i[0]);n[\"primary-color-active-deprecated-f-30\"]=o(s,c=>c.setAlpha(c.getAlpha()*.3)),n[\"primary-color-active-deprecated-d-02\"]=o(s,c=>c.darken(2))}return t.successColor&&l(t.successColor,\"success\"),t.warningColor&&l(t.warningColor,\"warning\"),t.errorColor&&l(t.errorColor,\"error\"),t.infoColor&&l(t.infoColor,\"info\"),`\n  :root {\n    ${Object.keys(n).map(a=>`--${e}-${a}: ${n[a]};`).join(`\n`)}\n  }\n  `.trim()}function lF(e,t){const n=oF(e,t);wn()&&gi(n,`${nF}-dynamic-theme`)}const rF=e=>{const[t,n]=yl();return gp(I(()=>({theme:t.value,token:n.value,hashId:\"\",path:[\"ant-design-icons\",e.value]})),()=>[{[`.${e.value}`]:h(h({},Tr()),{[`.${e.value} .${e.value}-icon`]:{display:\"block\"}})}])};function aF(e,t){const n=I(()=>e?.value||{}),o=I(()=>n.value.inherit===!1||!t?.value?IC:t.value);return I(()=>{if(!e?.value)return t?.value;const r=h({},o.value.components);return Object.keys(e.value.components||{}).forEach(a=>{r[a]=h(h({},r[a]),e.value.components[a])}),h(h(h({},o.value),n.value),{token:h(h({},o.value.token),n.value.token),components:r})})}var iF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const sF=\"ant\";function ia(){return mn.prefixCls||sF}function Kw(){return mn.iconPrefixCls||Ym}const Eg=gt({}),mn=gt({});ze(()=>{h(mn,Eg),mn.prefixCls=ia(),mn.iconPrefixCls=Kw(),mn.getPrefixCls=(e,t)=>t||(e?`${mn.prefixCls}-${e}`:mn.prefixCls),mn.getRootPrefixCls=()=>mn.prefixCls?mn.prefixCls:ia()});let Cf;const cF=e=>{Cf&&Cf(),Cf=ze(()=>{h(Eg,gt(e)),h(mn,gt(e))}),e.theme&&lF(ia(),e.theme)},uF=()=>({getPrefixCls:(e,t)=>t||(e?`${ia()}-${e}`:ia()),getIconPrefixCls:Kw,getRootPrefixCls:()=>mn.prefixCls?mn.prefixCls:ia()}),Bl=ne({compatConfig:{MODE:3},name:\"AConfigProvider\",inheritAttrs:!1,props:aE(),setup(e,t){let{slots:n}=t;const o=ku(),l=(T,k)=>{const{prefixCls:B=\"ant\"}=e;if(k)return k;const L=B||o.getPrefixCls(\"\");return T?`${L}-${T}`:L},r=I(()=>e.iconPrefixCls||o.iconPrefixCls.value||Ym),a=I(()=>r.value!==o.iconPrefixCls.value),i=I(()=>{var T;return e.csp||((T=o.csp)===null||T===void 0?void 0:T.value)}),s=rF(r),c=aF(I(()=>e.theme),I(()=>{var T;return(T=o.theme)===null||T===void 0?void 0:T.value})),u=T=>(e.renderEmpty||n.renderEmpty||o.renderEmpty||PM)(T),d=I(()=>{var T,k;return(T=e.autoInsertSpaceInButton)!==null&&T!==void 0?T:(k=o.autoInsertSpaceInButton)===null||k===void 0?void 0:k.value}),p=I(()=>{var T;return e.locale||((T=o.locale)===null||T===void 0?void 0:T.value)});pe(p,()=>{Eg.locale=p.value},{immediate:!0});const m=I(()=>{var T;return e.direction||((T=o.direction)===null||T===void 0?void 0:T.value)}),g=I(()=>{var T,k;return(T=e.space)!==null&&T!==void 0?T:(k=o.space)===null||k===void 0?void 0:k.value}),v=I(()=>{var T,k;return(T=e.virtual)!==null&&T!==void 0?T:(k=o.virtual)===null||k===void 0?void 0:k.value}),y=I(()=>{var T,k;return(T=e.dropdownMatchSelectWidth)!==null&&T!==void 0?T:(k=o.dropdownMatchSelectWidth)===null||k===void 0?void 0:k.value}),b=I(()=>{var T;return e.getTargetContainer!==void 0?e.getTargetContainer:(T=o.getTargetContainer)===null||T===void 0?void 0:T.value}),S=I(()=>{var T;return e.getPopupContainer!==void 0?e.getPopupContainer:(T=o.getPopupContainer)===null||T===void 0?void 0:T.value}),$=I(()=>{var T;return e.pageHeader!==void 0?e.pageHeader:(T=o.pageHeader)===null||T===void 0?void 0:T.value}),w=I(()=>{var T;return e.input!==void 0?e.input:(T=o.input)===null||T===void 0?void 0:T.value}),C=I(()=>{var T;return e.pagination!==void 0?e.pagination:(T=o.pagination)===null||T===void 0?void 0:T.value}),_=I(()=>{var T;return e.form!==void 0?e.form:(T=o.form)===null||T===void 0?void 0:T.value}),x=I(()=>{var T;return e.select!==void 0?e.select:(T=o.select)===null||T===void 0?void 0:T.value}),P=I(()=>e.componentSize),E=I(()=>e.componentDisabled),M=I(()=>{var T,k;return(T=e.wave)!==null&&T!==void 0?T:(k=o.wave)===null||k===void 0?void 0:k.value}),O={csp:i,autoInsertSpaceInButton:d,locale:p,direction:m,space:g,virtual:v,dropdownMatchSelectWidth:y,getPrefixCls:l,iconPrefixCls:r,theme:I(()=>{var T,k;return(T=c.value)!==null&&T!==void 0?T:(k=o.theme)===null||k===void 0?void 0:k.value}),renderEmpty:u,getTargetContainer:b,getPopupContainer:S,pageHeader:$,input:w,pagination:C,form:_,select:x,componentSize:P,componentDisabled:E,transformCellText:I(()=>e.transformCellText),wave:M},R=I(()=>{const T=c.value||{},{algorithm:k,token:B}=T,L=iF(T,[\"algorithm\",\"token\"]),N=k&&(!Array.isArray(k)||k.length>0)?pC(k):void 0;return h(h({},L),{theme:N,token:h(h({},zu),B)})}),D=I(()=>{var T,k;let B={};return p.value&&(B=((T=p.value.Form)===null||T===void 0?void 0:T.defaultValidateMessages)||((k=En.Form)===null||k===void 0?void 0:k.defaultValidateMessages)||{}),e.form&&e.form.validateMessages&&(B=h(h({},B),e.form.validateMessages)),B});iE(O),lE({validateMessages:D}),MC(P),eC(E);const z=T=>{var k,B;let L=a.value?s((k=n.default)===null||k===void 0?void 0:k.call(n)):(B=n.default)===null||B===void 0?void 0:B.call(n);if(e.theme){const N=(function(){return L})();L=f(CM,{value:R.value},{default:()=>[N]})}return f($w,{locale:p.value||T,ANT_MARK__:Zp},{default:()=>[L]})};return ze(()=>{m.value&&(ho.config({rtl:m.value===\"rtl\"}),vl.config({rtl:m.value===\"rtl\"}))}),()=>f(Pr,{children:(T,k,B)=>z(B)},null)}});Bl.config=cF;Bl.install=function(e){e.component(Bl.name,Bl)};const dF=(e,t)=>{let{attrs:n,slots:o}=t;return f(_t,A(A({size:\"small\",type:\"primary\"},e),n),o)},Ps=(e,t,n)=>{const o=EO(n);return{[`${e.componentCls}-${t}`]:{color:e[`color${n}`],background:e[`color${o}Bg`],borderColor:e[`color${o}Border`],[`&${e.componentCls}-borderless`]:{borderColor:\"transparent\"}}}},fF=e=>Lc(e,(t,n)=>{let{textColor:o,lightBorderColor:l,lightColor:r,darkColor:a}=n;return{[`${e.componentCls}-${t}`]:{color:o,background:r,borderColor:l,\"&-inverse\":{color:e.colorTextLightSolid,background:a,borderColor:a},[`&${e.componentCls}-borderless`]:{borderColor:\"transparent\"}}}}),pF=e=>{const{paddingXXS:t,lineWidth:n,tagPaddingHorizontal:o,componentCls:l}=e,r=o-n,a=t-n;return{[l]:h(h({},qe(e)),{display:\"inline-block\",height:\"auto\",marginInlineEnd:e.marginXS,paddingInline:r,fontSize:e.tagFontSize,lineHeight:`${e.tagLineHeight}px`,whiteSpace:\"nowrap\",background:e.tagDefaultBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:\"start\",[`&${l}-rtl`]:{direction:\"rtl\"},\"&, a, a:hover\":{color:e.tagDefaultColor},[`${l}-close-icon`]:{marginInlineStart:a,color:e.colorTextDescription,fontSize:e.tagIconSize,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`,\"&:hover\":{color:e.colorTextHeading}},[`&${l}-has-color`]:{borderColor:\"transparent\",[`&, a, a:hover, ${e.iconCls}-close, ${e.iconCls}-close:hover`]:{color:e.colorTextLightSolid}},\"&-checkable\":{backgroundColor:\"transparent\",borderColor:\"transparent\",cursor:\"pointer\",[`&:not(${l}-checkable-checked):hover`]:{color:e.colorPrimary,backgroundColor:e.colorFillSecondary},\"&:active, &-checked\":{color:e.colorTextLightSolid},\"&-checked\":{backgroundColor:e.colorPrimary,\"&:hover\":{backgroundColor:e.colorPrimaryHover}},\"&:active\":{backgroundColor:e.colorPrimaryActive}},\"&-hidden\":{display:\"none\"},[`> ${e.iconCls} + span, > span + ${e.iconCls}`]:{marginInlineStart:r}}),[`${l}-borderless`]:{borderColor:\"transparent\",background:e.tagBorderlessBg}}},Gw=Xe(\"Tag\",e=>{const{fontSize:t,lineHeight:n,lineWidth:o,fontSizeIcon:l}=e,r=Math.round(t*n),a=e.fontSizeSM,i=r-o*2,s=e.colorFillAlter,c=e.colorText,u=Le(e,{tagFontSize:a,tagLineHeight:i,tagDefaultBg:s,tagDefaultColor:c,tagIconSize:l-2*o,tagPaddingHorizontal:8,tagBorderlessBg:e.colorFillTertiary});return[pF(u),fF(u),Ps(u,\"success\",\"Success\"),Ps(u,\"processing\",\"Info\"),Ps(u,\"error\",\"Error\"),Ps(u,\"warning\",\"Warning\")]}),mF=()=>({prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},\"onUpdate:checked\":Function}),vu=ne({compatConfig:{MODE:3},name:\"ACheckableTag\",inheritAttrs:!1,props:mF(),setup(e,t){let{slots:n,emit:o,attrs:l}=t;const{prefixCls:r}=Te(\"tag\",e),[a,i]=Gw(r),s=u=>{const{checked:d}=e;o(\"update:checked\",!d),o(\"change\",!d),o(\"click\",u)},c=I(()=>re(r.value,i.value,{[`${r.value}-checkable`]:!0,[`${r.value}-checkable-checked`]:e.checked}));return()=>{var u;return a(f(\"span\",A(A({},l),{},{class:[c.value,l.class],onClick:s}),[(u=n.default)===null||u===void 0?void 0:u.call(n)]))}}}),vF=()=>({prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:W.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},onClick:yr(),\"onUpdate:visible\":Function,icon:W.any,bordered:{type:Boolean,default:!0}}),sa=ne({compatConfig:{MODE:3},name:\"ATag\",inheritAttrs:!1,props:vF(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:l}=t;const{prefixCls:r,direction:a}=Te(\"tag\",e),[i,s]=Gw(r),c=ee(!0);ze(()=>{e.visible!==void 0&&(c.value=e.visible)});const u=g=>{g.stopPropagation(),o(\"update:visible\",!1),o(\"close\",g),!g.defaultPrevented&&e.visible===void 0&&(c.value=!1)},d=I(()=>nd(e.color)||kD(e.color)),p=I(()=>re(r.value,s.value,{[`${r.value}-${e.color}`]:d.value,[`${r.value}-has-color`]:e.color&&!d.value,[`${r.value}-hidden`]:!c.value,[`${r.value}-rtl`]:a.value===\"rtl\",[`${r.value}-borderless`]:!e.bordered})),m=g=>{o(\"click\",g)};return()=>{var g,v,y;const{icon:b=(g=n.icon)===null||g===void 0?void 0:g.call(n),color:S,closeIcon:$=(v=n.closeIcon)===null||v===void 0?void 0:v.call(n),closable:w=!1}=e,C=()=>w?$?f(\"span\",{class:`${r.value}-close-icon`,onClick:u},[$]):f(Kn,{class:`${r.value}-close-icon`,onClick:u},null):null,_={backgroundColor:S&&!d.value?S:void 0},x=b||null,P=(y=n.default)===null||y===void 0?void 0:y.call(n),E=x?f(He,null,[x,f(\"span\",null,[P])]):P,M=e.onClick!==void 0,O=f(\"span\",A(A({},l),{},{onClick:m,class:[p.value,l.class],style:[_,l.style]}),[E,C()]);return i(M?f(Bv,null,{default:()=>[O]}):O)}}});sa.CheckableTag=vu;sa.install=function(e){return e.component(sa.name,sa),e.component(vu.name,vu),e};function gF(e,t){let{slots:n,attrs:o}=t;return f(sa,A(A({color:\"blue\"},e),o),n)}function hF(e,t,n){return n!==void 0?n:t===\"year\"&&e.lang.yearPlaceholder?e.lang.yearPlaceholder:t===\"quarter\"&&e.lang.quarterPlaceholder?e.lang.quarterPlaceholder:t===\"month\"&&e.lang.monthPlaceholder?e.lang.monthPlaceholder:t===\"week\"&&e.lang.weekPlaceholder?e.lang.weekPlaceholder:t===\"time\"&&e.timePickerLocale.placeholder?e.timePickerLocale.placeholder:e.lang.placeholder}function bF(e,t,n){return n!==void 0?n:t===\"year\"&&e.lang.yearPlaceholder?e.lang.rangeYearPlaceholder:t===\"month\"&&e.lang.monthPlaceholder?e.lang.rangeMonthPlaceholder:t===\"week\"&&e.lang.weekPlaceholder?e.lang.rangeWeekPlaceholder:t===\"time\"&&e.timePickerLocale.placeholder?e.timePickerLocale.rangePlaceholder:e.lang.rangePlaceholder}function Xw(e,t){const n={adjustX:1,adjustY:1};switch(t){case\"bottomLeft\":return{points:[\"tl\",\"bl\"],offset:[0,4],overflow:n};case\"bottomRight\":return{points:[\"tr\",\"br\"],offset:[0,4],overflow:n};case\"topLeft\":return{points:[\"bl\",\"tl\"],offset:[0,-4],overflow:n};case\"topRight\":return{points:[\"br\",\"tr\"],offset:[0,-4],overflow:n};default:return{points:e===\"rtl\"?[\"tr\",\"br\"]:[\"tl\",\"bl\"],offset:[0,4],overflow:n}}}function gu(){return{id:String,dropdownClassName:String,popupClassName:String,popupStyle:De(),transitionName:String,placeholder:String,allowClear:ye(),autofocus:ye(),disabled:ye(),tabindex:Number,open:ye(),defaultOpen:ye(),inputReadOnly:ye(),format:Fe([String,Function,Array]),getPopupContainer:de(),panelRender:de(),onChange:de(),\"onUpdate:value\":de(),onOk:de(),onOpenChange:de(),\"onUpdate:open\":de(),onFocus:de(),onBlur:de(),onMousedown:de(),onMouseup:de(),onMouseenter:de(),onMouseleave:de(),onClick:de(),onContextmenu:de(),onKeydown:de(),role:String,name:String,autocomplete:String,direction:ke(),showToday:ye(),showTime:Fe([Boolean,Object]),locale:De(),size:ke(),bordered:ye(),dateRender:de(),disabledDate:de(),mode:ke(),picker:ke(),valueFormat:String,placement:ke(),status:ke(),disabledHours:de(),disabledMinutes:de(),disabledSeconds:de()}}function Uw(){return{defaultPickerValue:Fe([Object,String]),defaultValue:Fe([Object,String]),value:Fe([Object,String]),presets:ct(),disabledTime:de(),renderExtraFooter:de(),showNow:ye(),monthCellRender:de(),monthCellContentRender:de()}}function Yw(){return{allowEmpty:ct(),dateRender:de(),defaultPickerValue:ct(),defaultValue:ct(),value:ct(),presets:ct(),disabledTime:de(),disabled:Fe([Boolean,Array]),renderExtraFooter:de(),separator:{type:String},showTime:Fe([Boolean,Object]),ranges:De(),placeholder:ct(),mode:ct(),onChange:de(),\"onUpdate:value\":de(),onCalendarChange:de(),onPanelChange:de(),onOk:de()}}var yF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function SF(e,t){function n(c,u){const d=h(h(h({},gu()),Uw()),t);return ne({compatConfig:{MODE:3},name:u,inheritAttrs:!1,props:d,slots:Object,setup(p,m){let{slots:g,expose:v,attrs:y,emit:b}=m;const S=p,$=Jt(),w=un.useInject(),{prefixCls:C,direction:_,getPopupContainer:x,size:P,rootPrefixCls:E,disabled:M}=Te(\"picker\",S),{compactSize:O,compactItemClassnames:R}=Xl(C,_),D=I(()=>O.value||P.value),[z,T]=Mx(C),k=Z();v({focus:()=>{var oe;(oe=k.value)===null||oe===void 0||oe.focus()},blur:()=>{var oe;(oe=k.value)===null||oe===void 0||oe.blur()}});const B=oe=>S.valueFormat?e.toString(oe,S.valueFormat):oe,L=(oe,le)=>{const Y=B(oe);b(\"update:value\",Y),b(\"change\",Y,le),$.onFieldChange()},N=oe=>{b(\"update:open\",oe),b(\"openChange\",oe)},F=oe=>{b(\"focus\",oe)},j=oe=>{b(\"blur\",oe),$.onFieldBlur()},H=(oe,le)=>{const Y=B(oe);b(\"panelChange\",Y,le)},K=oe=>{const le=B(oe);b(\"ok\",le)},[G]=$o(\"DatePicker\",mi),V=I(()=>S.value?S.valueFormat?e.toDate(S.value,S.valueFormat):S.value:S.value===\"\"?void 0:S.value),q=I(()=>S.defaultValue?S.valueFormat?e.toDate(S.defaultValue,S.valueFormat):S.defaultValue:S.defaultValue===\"\"?void 0:S.defaultValue),Q=I(()=>S.defaultPickerValue?S.valueFormat?e.toDate(S.defaultPickerValue,S.valueFormat):S.defaultPickerValue:S.defaultPickerValue===\"\"?void 0:S.defaultPickerValue);return()=>{var oe,le,Y,J,ce,ue;const be=h(h({},G.value),S.locale),Ce=h(h({},S),y),{bordered:ge=!0,placeholder:Se,suffixIcon:X=(oe=g.suffixIcon)===null||oe===void 0?void 0:oe.call(g),showToday:U=!0,transitionName:ie,allowClear:ve=!0,dateRender:me=g.dateRender,renderExtraFooter:he=g.renderExtraFooter,monthCellRender:se=g.monthCellRender||S.monthCellContentRender||g.monthCellContentRender,clearIcon:te=(le=g.clearIcon)===null||le===void 0?void 0:le.call(g),id:ae=$.id.value}=Ce,fe=yF(Ce,[\"bordered\",\"placeholder\",\"suffixIcon\",\"showToday\",\"transitionName\",\"allowClear\",\"dateRender\",\"renderExtraFooter\",\"monthCellRender\",\"clearIcon\",\"id\"]),Pe=Ce.showTime===\"\"?!0:Ce.showTime,{format:Oe}=Ce;let Re={};c&&(Re.picker=c);const $e=c||Ce.picker||\"date\";Re=h(h(h({},Re),Pe?hu(h({format:Oe,picker:$e},typeof Pe==\"object\"?Pe:{})):{}),$e===\"time\"?hu(h(h({format:Oe},fe),{picker:$e})):{});const xe=C.value,_e=f(He,null,[X||(c===\"time\"?f(t$,null,null):f(n$,null,null)),w.hasFeedback&&w.feedbackIcon]);return z(f(wk,A(A(A({monthCellRender:se,dateRender:me,renderExtraFooter:he,ref:k,placeholder:hF(be,$e,Se),suffixIcon:_e,dropdownAlign:Xw(_.value,S.placement),clearIcon:te||f(Vn,null,null),allowClear:ve,transitionName:ie||`${E.value}-slide-up`},fe),Re),{},{id:ae,picker:$e,value:V.value,defaultValue:q.value,defaultPickerValue:Q.value,showToday:U,locale:be.lang,class:re({[`${xe}-${D.value}`]:D.value,[`${xe}-borderless`]:!ge},Cn(xe,Ro(w.status,S.status),w.hasFeedback),y.class,T.value,R.value),disabled:M.value,prefixCls:xe,getPopupContainer:y.getCalendarContainer||x.value,generateConfig:e,prevIcon:((Y=g.prevIcon)===null||Y===void 0?void 0:Y.call(g))||f(\"span\",{class:`${xe}-prev-icon`},null),nextIcon:((J=g.nextIcon)===null||J===void 0?void 0:J.call(g))||f(\"span\",{class:`${xe}-next-icon`},null),superPrevIcon:((ce=g.superPrevIcon)===null||ce===void 0?void 0:ce.call(g))||f(\"span\",{class:`${xe}-super-prev-icon`},null),superNextIcon:((ue=g.superNextIcon)===null||ue===void 0?void 0:ue.call(g))||f(\"span\",{class:`${xe}-super-next-icon`},null),components:qw,direction:_.value,dropdownClassName:re(T.value,S.popupClassName,S.dropdownClassName),onChange:L,onOpenChange:N,onFocus:F,onBlur:j,onPanelChange:H,onOk:K}),null))}}})}const o=n(void 0,\"ADatePicker\"),l=n(\"week\",\"AWeekPicker\"),r=n(\"month\",\"AMonthPicker\"),a=n(\"year\",\"AYearPicker\"),i=n(\"time\",\"TimePicker\"),s=n(\"quarter\",\"AQuarterPicker\");return{DatePicker:o,WeekPicker:l,MonthPicker:r,YearPicker:a,TimePicker:i,QuarterPicker:s}}var $F=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function CF(e,t){return ne({compatConfig:{MODE:3},name:\"ARangePicker\",inheritAttrs:!1,props:h(h(h({},gu()),Yw()),t),slots:Object,setup(o,l){let{expose:r,slots:a,attrs:i,emit:s}=l;const c=o,u=Jt(),d=un.useInject(),{prefixCls:p,direction:m,getPopupContainer:g,size:v,rootPrefixCls:y,disabled:b}=Te(\"picker\",c),{compactSize:S,compactItemClassnames:$}=Xl(p,m),w=I(()=>S.value||v.value),[C,_]=Mx(p),x=Z();r({focus:()=>{var F;(F=x.value)===null||F===void 0||F.focus()},blur:()=>{var F;(F=x.value)===null||F===void 0||F.blur()}});const P=F=>c.valueFormat?e.toString(F,c.valueFormat):F,E=(F,j)=>{const H=P(F);s(\"update:value\",H),s(\"change\",H,j),u.onFieldChange()},M=F=>{s(\"update:open\",F),s(\"openChange\",F)},O=F=>{s(\"focus\",F)},R=F=>{s(\"blur\",F),u.onFieldBlur()},D=(F,j)=>{const H=P(F);s(\"panelChange\",H,j)},z=F=>{const j=P(F);s(\"ok\",j)},T=(F,j,H)=>{const K=P(F);s(\"calendarChange\",K,j,H)},[k]=$o(\"DatePicker\",mi),B=I(()=>c.value&&c.valueFormat?e.toDate(c.value,c.valueFormat):c.value),L=I(()=>c.defaultValue&&c.valueFormat?e.toDate(c.defaultValue,c.valueFormat):c.defaultValue),N=I(()=>c.defaultPickerValue&&c.valueFormat?e.toDate(c.defaultPickerValue,c.valueFormat):c.defaultPickerValue);return()=>{var F,j,H,K,G,V,q;const Q=h(h({},k.value),c.locale),oe=h(h({},c),i),{prefixCls:le,bordered:Y=!0,placeholder:J,suffixIcon:ce=(F=a.suffixIcon)===null||F===void 0?void 0:F.call(a),picker:ue=\"date\",transitionName:be,allowClear:Ce=!0,dateRender:ge=a.dateRender,renderExtraFooter:Se=a.renderExtraFooter,separator:X=(j=a.separator)===null||j===void 0?void 0:j.call(a),clearIcon:U=(H=a.clearIcon)===null||H===void 0?void 0:H.call(a),id:ie=u.id.value}=oe,ve=$F(oe,[\"prefixCls\",\"bordered\",\"placeholder\",\"suffixIcon\",\"picker\",\"transitionName\",\"allowClear\",\"dateRender\",\"renderExtraFooter\",\"separator\",\"clearIcon\",\"id\"]);delete ve[\"onUpdate:value\"],delete ve[\"onUpdate:open\"];const{format:me,showTime:he}=oe;let se={};se=h(h(h({},se),he?hu(h({format:me,picker:ue},he)):{}),ue===\"time\"?hu(h(h({format:me},lt(ve,[\"disabledTime\"])),{picker:ue})):{});const te=p.value,ae=f(He,null,[ce||(ue===\"time\"?f(t$,null,null):f(n$,null,null)),d.hasFeedback&&d.feedbackIcon]);return C(f(Rk,A(A(A({dateRender:ge,renderExtraFooter:Se,separator:X||f(\"span\",{\"aria-label\":\"to\",class:`${te}-separator`},[f(RI,null,null)]),ref:x,dropdownAlign:Xw(m.value,c.placement),placeholder:bF(Q,ue,J),suffixIcon:ae,clearIcon:U||f(Vn,null,null),allowClear:Ce,transitionName:be||`${y.value}-slide-up`},ve),se),{},{disabled:b.value,id:ie,value:B.value,defaultValue:L.value,defaultPickerValue:N.value,picker:ue,class:re({[`${te}-${w.value}`]:w.value,[`${te}-borderless`]:!Y},Cn(te,Ro(d.status,c.status),d.hasFeedback),i.class,_.value,$.value),locale:Q.lang,prefixCls:te,getPopupContainer:i.getCalendarContainer||g.value,generateConfig:e,prevIcon:((K=a.prevIcon)===null||K===void 0?void 0:K.call(a))||f(\"span\",{class:`${te}-prev-icon`},null),nextIcon:((G=a.nextIcon)===null||G===void 0?void 0:G.call(a))||f(\"span\",{class:`${te}-next-icon`},null),superPrevIcon:((V=a.superPrevIcon)===null||V===void 0?void 0:V.call(a))||f(\"span\",{class:`${te}-super-prev-icon`},null),superNextIcon:((q=a.superNextIcon)===null||q===void 0?void 0:q.call(a))||f(\"span\",{class:`${te}-super-next-icon`},null),components:qw,direction:m.value,dropdownClassName:re(_.value,c.popupClassName,c.dropdownClassName),onChange:E,onOpenChange:M,onFocus:O,onBlur:R,onPanelChange:D,onOk:z,onCalendarChange:T}),null))}}})}const qw={button:dF,rangeItem:gF};function xF(e){return e?Array.isArray(e)?e:[e]:[]}function hu(e){const{format:t,picker:n,showHour:o,showMinute:l,showSecond:r,use12Hours:a}=e,i=xF(t)[0],s=h({},e);return i&&typeof i==\"string\"&&(!i.includes(\"s\")&&r===void 0&&(s.showSecond=!1),!i.includes(\"m\")&&l===void 0&&(s.showMinute=!1),!i.includes(\"H\")&&!i.includes(\"h\")&&o===void 0&&(s.showHour=!1),(i.includes(\"a\")||i.includes(\"A\"))&&a===void 0&&(s.use12Hours=!0)),n===\"time\"?s:(typeof i==\"function\"&&delete s.format,{showTime:s})}function Zw(e,t){const{DatePicker:n,WeekPicker:o,MonthPicker:l,YearPicker:r,TimePicker:a,QuarterPicker:i}=SF(e,t),s=CF(e,t);return{DatePicker:n,WeekPicker:o,MonthPicker:l,YearPicker:r,TimePicker:a,QuarterPicker:i,RangePicker:s}}const{DatePicker:xf,WeekPicker:cc,MonthPicker:uc,YearPicker:wF,TimePicker:_F,QuarterPicker:dc,RangePicker:fc}=Zw(Vv),IF=h(xf,{WeekPicker:cc,MonthPicker:uc,YearPicker:wF,RangePicker:fc,TimePicker:_F,QuarterPicker:dc,install:e=>(e.component(xf.name,xf),e.component(fc.name,fc),e.component(uc.name,uc),e.component(cc.name,cc),e.component(dc.name,dc),e)});function Ts(e){return e!=null}const wf=e=>{const{itemPrefixCls:t,component:n,span:o,labelStyle:l,contentStyle:r,bordered:a,label:i,content:s,colon:c}=e,u=n;return a?f(u,{class:[{[`${t}-item-label`]:Ts(i),[`${t}-item-content`]:Ts(s)}],colSpan:o},{default:()=>[Ts(i)&&f(\"span\",{style:l},[i]),Ts(s)&&f(\"span\",{style:r},[s])]}):f(u,{class:[`${t}-item`],colSpan:o},{default:()=>[f(\"div\",{class:`${t}-item-container`},[(i||i===0)&&f(\"span\",{class:[`${t}-item-label`,{[`${t}-item-no-colon`]:!c}],style:l},[i]),(s||s===0)&&f(\"span\",{class:`${t}-item-content`,style:r},[s])])]})},PF=e=>{const t=(c,u,d)=>{let{colon:p,prefixCls:m,bordered:g}=u,{component:v,type:y,showLabel:b,showContent:S,labelStyle:$,contentStyle:w}=d;return c.map((C,_)=>{var x,P;const E=C.props||{},{prefixCls:M=m,span:O=1,labelStyle:R=E[\"label-style\"],contentStyle:D=E[\"content-style\"],label:z=(P=(x=C.children)===null||x===void 0?void 0:x.label)===null||P===void 0?void 0:P.call(x)}=E,T=Ru(C),k=JO(C),B=G$(C),{key:L}=C;return typeof v==\"string\"?f(wf,{key:`${y}-${String(L)||_}`,class:k,style:B,labelStyle:h(h({},$),R),contentStyle:h(h({},w),D),span:O,colon:p,component:v,itemPrefixCls:M,bordered:g,label:b?z:null,content:S?T:null},null):[f(wf,{key:`label-${String(L)||_}`,class:k,style:h(h(h({},$),B),R),span:1,colon:p,component:v[0],itemPrefixCls:M,bordered:g,label:z},null),f(wf,{key:`content-${String(L)||_}`,class:k,style:h(h(h({},w),B),D),span:O*2-1,component:v[1],itemPrefixCls:M,bordered:g,content:T},null)]})},{prefixCls:n,vertical:o,row:l,index:r,bordered:a}=e,{labelStyle:i,contentStyle:s}=nt(e_,{labelStyle:Z({}),contentStyle:Z({})});return o?f(He,null,[f(\"tr\",{key:`label-${r}`,class:`${n}-row`},[t(l,e,{component:\"th\",type:\"label\",showLabel:!0,labelStyle:i.value,contentStyle:s.value})]),f(\"tr\",{key:`content-${r}`,class:`${n}-row`},[t(l,e,{component:\"td\",type:\"content\",showContent:!0,labelStyle:i.value,contentStyle:s.value})])]):f(\"tr\",{key:r,class:`${n}-row`},[t(l,e,{component:a?[\"th\",\"td\"]:\"td\",type:\"item\",showLabel:!0,showContent:!0,labelStyle:i.value,contentStyle:s.value})])},TF=e=>{const{componentCls:t,descriptionsSmallPadding:n,descriptionsDefaultPadding:o,descriptionsMiddlePadding:l,descriptionsBg:r}=e;return{[`&${t}-bordered`]:{[`${t}-view`]:{border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"> table\":{tableLayout:\"auto\",borderCollapse:\"collapse\"}},[`${t}-item-label, ${t}-item-content`]:{padding:o,borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"&:last-child\":{borderInlineEnd:\"none\"}},[`${t}-item-label`]:{backgroundColor:r,\"&::after\":{display:\"none\"}},[`${t}-row`]:{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"&:last-child\":{borderBottom:\"none\"}},[`&${t}-middle`]:{[`${t}-item-label, ${t}-item-content`]:{padding:l}},[`&${t}-small`]:{[`${t}-item-label, ${t}-item-content`]:{padding:n}}}}},OF=e=>{const{componentCls:t,descriptionsExtraColor:n,descriptionItemPaddingBottom:o,descriptionsItemLabelColonMarginRight:l,descriptionsItemLabelColonMarginLeft:r,descriptionsTitleMarginBottom:a}=e;return{[t]:h(h(h({},qe(e)),TF(e)),{\"&-rtl\":{direction:\"rtl\"},[`${t}-header`]:{display:\"flex\",alignItems:\"center\",marginBottom:a},[`${t}-title`]:h(h({},Xt),{flex:\"auto\",color:e.colorText,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}),[`${t}-extra`]:{marginInlineStart:\"auto\",color:n,fontSize:e.fontSize},[`${t}-view`]:{width:\"100%\",borderRadius:e.borderRadiusLG,table:{width:\"100%\",tableLayout:\"fixed\"}},[`${t}-row`]:{\"> th, > td\":{paddingBottom:o},\"&:last-child\":{borderBottom:\"none\"}},[`${t}-item-label`]:{color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:\"start\",\"&::after\":{content:'\":\"',position:\"relative\",top:-.5,marginInline:`${r}px ${l}px`},[`&${t}-item-no-colon::after`]:{content:'\"\"'}},[`${t}-item-no-label`]:{\"&::after\":{margin:0,content:'\"\"'}},[`${t}-item-content`]:{display:\"table-cell\",flex:1,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,wordBreak:\"break-word\",overflowWrap:\"break-word\"},[`${t}-item`]:{paddingBottom:0,verticalAlign:\"top\",\"&-container\":{display:\"flex\",[`${t}-item-label`]:{display:\"inline-flex\",alignItems:\"baseline\"},[`${t}-item-content`]:{display:\"inline-flex\",alignItems:\"baseline\"}}},\"&-middle\":{[`${t}-row`]:{\"> th, > td\":{paddingBottom:e.paddingSM}}},\"&-small\":{[`${t}-row`]:{\"> th, > td\":{paddingBottom:e.paddingXS}}}})}},EF=Xe(\"Descriptions\",e=>{const t=e.colorFillAlter,n=e.fontSizeSM*e.lineHeightSM,o=e.colorText,l=`${e.paddingXS}px ${e.padding}px`,r=`${e.padding}px ${e.paddingLG}px`,a=`${e.paddingSM}px ${e.paddingLG}px`,i=e.padding,s=e.marginXS,c=e.marginXXS/2,u=Le(e,{descriptionsBg:t,descriptionsTitleMarginBottom:n,descriptionsExtraColor:o,descriptionItemPaddingBottom:i,descriptionsSmallPadding:l,descriptionsDefaultPadding:r,descriptionsMiddlePadding:a,descriptionsItemLabelColonMarginRight:s,descriptionsItemLabelColonMarginLeft:c});return[OF(u)]});W.any;const MF=()=>({prefixCls:String,label:W.any,labelStyle:{type:Object,default:void 0},contentStyle:{type:Object,default:void 0},span:{type:Number,default:1}}),Qw=ne({compatConfig:{MODE:3},name:\"ADescriptionsItem\",props:MF(),setup(e,t){let{slots:n}=t;return()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),Jw={xxxl:3,xxl:3,xl:3,lg:3,md:3,sm:2,xs:1};function AF(e,t){if(typeof e==\"number\")return e;if(typeof e==\"object\")for(let n=0;n<il.length;n++){const o=il[n];if(t[o]&&e[o]!==void 0)return e[o]||Jw[o]}return 3}function yy(e,t,n){let o=e;return(n===void 0||n>t)&&(o=ft(e,{span:t})),o}function DF(e,t){const n=xt(e),o=[];let l=[],r=t;return n.forEach((a,i)=>{var s;const c=(s=a.props)===null||s===void 0?void 0:s.span,u=c||1;if(i===n.length-1){l.push(yy(a,r,c)),o.push(l);return}u<r?(r-=u,l.push(a)):(l.push(yy(a,r,u)),o.push(l),r=t,l=[])}),o}const RF=()=>({prefixCls:String,bordered:{type:Boolean,default:void 0},size:{type:String,default:\"default\"},title:W.any,extra:W.any,column:{type:[Number,Object],default:()=>Jw},layout:String,colon:{type:Boolean,default:void 0},labelStyle:{type:Object,default:void 0},contentStyle:{type:Object,default:void 0}}),e_=Symbol(\"descriptionsContext\"),Ur=ne({compatConfig:{MODE:3},name:\"ADescriptions\",inheritAttrs:!1,props:RF(),slots:Object,Item:Qw,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"descriptions\",e);let a;const i=Z({}),[s,c]=EF(l),u=Mv();_m(()=>{a=u.value.subscribe(p=>{typeof e.column==\"object\"&&(i.value=p)})}),ot(()=>{u.value.unsubscribe(a)}),et(e_,{labelStyle:Ve(e,\"labelStyle\"),contentStyle:Ve(e,\"contentStyle\")});const d=I(()=>AF(e.column,i.value));return()=>{var p,m,g;const{size:v,bordered:y=!1,layout:b=\"horizontal\",colon:S=!0,title:$=(p=n.title)===null||p===void 0?void 0:p.call(n),extra:w=(m=n.extra)===null||m===void 0?void 0:m.call(n)}=e,C=(g=n.default)===null||g===void 0?void 0:g.call(n),_=DF(C,d.value);return s(f(\"div\",A(A({},o),{},{class:[l.value,{[`${l.value}-${v}`]:v!==\"default\",[`${l.value}-bordered`]:!!y,[`${l.value}-rtl`]:r.value===\"rtl\"},o.class,c.value]}),[($||w)&&f(\"div\",{class:`${l.value}-header`},[$&&f(\"div\",{class:`${l.value}-title`},[$]),w&&f(\"div\",{class:`${l.value}-extra`},[w])]),f(\"div\",{class:`${l.value}-view`},[f(\"table\",null,[f(\"tbody\",null,[_.map((x,P)=>f(PF,{key:P,index:P,colon:S,prefixCls:l.value,vertical:b===\"vertical\",bordered:y,row:x},null))])])])]))}}});Ur.install=function(e){return e.component(Ur.name,Ur),e.component(Ur.Item.name,Ur.Item),e};const kF=e=>{const{componentCls:t,sizePaddingEdgeHorizontal:n,colorSplit:o,lineWidth:l}=e;return{[t]:h(h({},qe(e)),{borderBlockStart:`${l}px solid ${o}`,\"&-vertical\":{position:\"relative\",top:\"-0.06em\",display:\"inline-block\",height:\"0.9em\",margin:`0 ${e.dividerVerticalGutterMargin}px`,verticalAlign:\"middle\",borderTop:0,borderInlineStart:`${l}px solid ${o}`},\"&-horizontal\":{display:\"flex\",clear:\"both\",width:\"100%\",minWidth:\"100%\",margin:`${e.dividerHorizontalGutterMargin}px 0`},[`&-horizontal${t}-with-text`]:{display:\"flex\",alignItems:\"center\",margin:`${e.dividerHorizontalWithTextGutterMargin}px 0`,color:e.colorTextHeading,fontWeight:500,fontSize:e.fontSizeLG,whiteSpace:\"nowrap\",textAlign:\"center\",borderBlockStart:`0 ${o}`,\"&::before, &::after\":{position:\"relative\",width:\"50%\",borderBlockStart:`${l}px solid transparent`,borderBlockStartColor:\"inherit\",borderBlockEnd:0,transform:\"translateY(50%)\",content:\"''\"}},[`&-horizontal${t}-with-text-left`]:{\"&::before\":{width:\"5%\"},\"&::after\":{width:\"95%\"}},[`&-horizontal${t}-with-text-right`]:{\"&::before\":{width:\"95%\"},\"&::after\":{width:\"5%\"}},[`${t}-inner-text`]:{display:\"inline-block\",padding:\"0 1em\"},\"&-dashed\":{background:\"none\",borderColor:o,borderStyle:\"dashed\",borderWidth:`${l}px 0 0`},[`&-horizontal${t}-with-text${t}-dashed`]:{\"&::before, &::after\":{borderStyle:\"dashed none none\"}},[`&-vertical${t}-dashed`]:{borderInlineStartWidth:l,borderInlineEnd:0,borderBlockStart:0,borderBlockEnd:0},[`&-plain${t}-with-text`]:{color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize},[`&-horizontal${t}-with-text-left${t}-no-default-orientation-margin-left`]:{\"&::before\":{width:0},\"&::after\":{width:\"100%\"},[`${t}-inner-text`]:{paddingInlineStart:n}},[`&-horizontal${t}-with-text-right${t}-no-default-orientation-margin-right`]:{\"&::before\":{width:\"100%\"},\"&::after\":{width:0},[`${t}-inner-text`]:{paddingInlineEnd:n}}})}},NF=Xe(\"Divider\",e=>{const t=Le(e,{dividerVerticalGutterMargin:e.marginXS,dividerHorizontalWithTextGutterMargin:e.margin,dividerHorizontalGutterMargin:e.marginLG});return[kF(t)]},{sizePaddingEdgeHorizontal:0}),BF=()=>({prefixCls:String,type:{type:String,default:\"horizontal\"},dashed:{type:Boolean,default:!1},orientation:{type:String,default:\"center\"},plain:{type:Boolean,default:!1},orientationMargin:[String,Number]}),LF=ne({name:\"ADivider\",inheritAttrs:!1,compatConfig:{MODE:3},props:BF(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"divider\",e),[a,i]=NF(l),s=I(()=>e.orientation===\"left\"&&e.orientationMargin!=null),c=I(()=>e.orientation===\"right\"&&e.orientationMargin!=null),u=I(()=>{const{type:m,dashed:g,plain:v}=e,y=l.value;return{[y]:!0,[i.value]:!!i.value,[`${y}-${m}`]:!0,[`${y}-dashed`]:!!g,[`${y}-plain`]:!!v,[`${y}-rtl`]:r.value===\"rtl\",[`${y}-no-default-orientation-margin-left`]:s.value,[`${y}-no-default-orientation-margin-right`]:c.value}}),d=I(()=>{const m=typeof e.orientationMargin==\"number\"?`${e.orientationMargin}px`:e.orientationMargin;return h(h({},s.value&&{marginLeft:m}),c.value&&{marginRight:m})}),p=I(()=>e.orientation.length>0?\"-\"+e.orientation:e.orientation);return()=>{var m;const g=xt((m=n.default)===null||m===void 0?void 0:m.call(n));return a(f(\"div\",A(A({},o),{},{class:[u.value,g.length?`${l.value}-with-text ${l.value}-with-text${p.value}`:\"\",o.class],role:\"separator\"}),[g.length?f(\"span\",{class:`${l.value}-inner-text`,style:d.value},[g]):null]))}}}),FF=Dt(LF);vo.Button=xi;vo.install=function(e){return e.component(vo.name,vo),e.component(xi.name,xi),e};const t_=()=>({prefixCls:String,width:W.oneOfType([W.string,W.number]),height:W.oneOfType([W.string,W.number]),style:{type:Object,default:void 0},class:String,rootClassName:String,rootStyle:De(),placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:ct(),autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},motion:de(),maskMotion:De()}),zF=()=>h(h({},t_()),{forceRender:{type:Boolean,default:void 0},getContainer:W.oneOfType([W.string,W.func,W.object,W.looseBool])}),HF=()=>h(h({},t_()),{getContainer:Function,getOpenCount:Function,scrollLocker:W.any,inline:Boolean});function jF(e){return Array.isArray(e)?e:[e]}const WF={transition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\"};Object.keys(WF).filter(e=>{if(typeof document>\"u\")return!1;const t=document.getElementsByTagName(\"html\")[0];return e in(t?t.style:{})})[0];const VF=!(typeof window<\"u\"&&window.document&&window.document.createElement);var KF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Sy=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:HF(),emits:[\"close\",\"handleClick\",\"change\"],setup(e,t){let{emit:n,slots:o}=t;const l=ee(),r=ee(),a=ee(),i=ee(),s=ee();let c=[];`${Number((Date.now()+Math.random()).toString().replace(\".\",Math.round(Math.random()*9).toString())).toString(16)}`,Be(()=>{it(()=>{var b;const{open:S,getContainer:$,showMask:w,autofocus:C}=e,_=$?.();g(e),S&&(_&&(_.parentNode,document.body),it(()=>{C&&u()}),w&&((b=e.scrollLocker)===null||b===void 0||b.lock()))})}),pe(()=>e.level,()=>{g(e)},{flush:\"post\"}),pe(()=>e.open,()=>{const{open:b,getContainer:S,scrollLocker:$,showMask:w,autofocus:C}=e,_=S?.();_&&(_.parentNode,document.body),b?(C&&u(),w&&$?.lock()):$?.unLock()},{flush:\"post\"}),Mn(()=>{var b;const{open:S}=e;S&&(document.body.style.touchAction=\"\"),(b=e.scrollLocker)===null||b===void 0||b.unLock()}),pe(()=>e.placement,b=>{b&&(s.value=null)});const u=()=>{var b,S;(S=(b=r.value)===null||b===void 0?void 0:b.focus)===null||S===void 0||S.call(b)},d=b=>{n(\"close\",b)},p=b=>{b.keyCode===we.ESC&&(b.stopPropagation(),d(b))},m=()=>{const{open:b,afterVisibleChange:S}=e;S&&S(!!b)},g=b=>{let{level:S,getContainer:$}=b;if(VF)return;const w=$?.(),C=w?w.parentNode:null;c=[],S===\"all\"?(C?Array.prototype.slice.call(C.children):[]).forEach(x=>{x.nodeName!==\"SCRIPT\"&&x.nodeName!==\"STYLE\"&&x.nodeName!==\"LINK\"&&x!==w&&c.push(x)}):S&&jF(S).forEach(_=>{document.querySelectorAll(_).forEach(x=>{c.push(x)})})},v=b=>{n(\"handleClick\",b)},y=ee(!1);return pe(r,()=>{it(()=>{y.value=!0})}),()=>{var b,S;const{width:$,height:w,open:C,prefixCls:_,placement:x,level:P,levelMove:E,ease:M,duration:O,getContainer:R,onChange:D,afterVisibleChange:z,showMask:T,maskClosable:k,maskStyle:B,keyboard:L,getOpenCount:N,scrollLocker:F,contentWrapperStyle:j,style:H,class:K,rootClassName:G,rootStyle:V,maskMotion:q,motion:Q,inline:oe}=e,le=KF(e,[\"width\",\"height\",\"open\",\"prefixCls\",\"placement\",\"level\",\"levelMove\",\"ease\",\"duration\",\"getContainer\",\"onChange\",\"afterVisibleChange\",\"showMask\",\"maskClosable\",\"maskStyle\",\"keyboard\",\"getOpenCount\",\"scrollLocker\",\"contentWrapperStyle\",\"style\",\"class\",\"rootClassName\",\"rootStyle\",\"maskMotion\",\"motion\",\"inline\"]),Y=C&&y.value,J=re(_,{[`${_}-${x}`]:!0,[`${_}-open`]:Y,[`${_}-inline`]:oe,\"no-mask\":!T,[G]:!0}),ce=typeof Q==\"function\"?Q(x):Q;return f(\"div\",A(A({},lt(le,[\"autofocus\"])),{},{tabindex:-1,class:J,style:V,ref:r,onKeydown:Y&&L?p:void 0}),[f(cn,q,{default:()=>[T&&xn(f(\"div\",{class:`${_}-mask`,onClick:k?d:void 0,style:B,ref:a},null),[[On,Y]])]}),f(cn,A(A({},ce),{},{onAfterEnter:m,onAfterLeave:m}),{default:()=>[xn(f(\"div\",{class:`${_}-content-wrapper`,style:[j],ref:l},[f(\"div\",{class:[`${_}-content`,K],style:H,ref:s},[(b=o.default)===null||b===void 0?void 0:b.call(o)]),o.handler?f(\"div\",{onClick:v,ref:i},[(S=o.handler)===null||S===void 0?void 0:S.call(o)]):null]),[[On,Y]])]})])}}});var $y=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const GF=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:Je(zF(),{prefixCls:\"drawer\",placement:\"left\",getContainer:\"body\",level:\"all\",duration:\".3s\",ease:\"cubic-bezier(0.78, 0.14, 0.15, 0.86)\",afterVisibleChange:()=>{},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:\"\",keyboard:!0,forceRender:!1,autofocus:!0}),emits:[\"handleClick\",\"close\"],setup(e,t){let{emit:n,slots:o}=t;const l=Z(null),r=i=>{n(\"handleClick\",i)},a=i=>{n(\"close\",i)};return()=>{const{getContainer:i,wrapperClassName:s,rootClassName:c,rootStyle:u,forceRender:d}=e,p=$y(e,[\"getContainer\",\"wrapperClassName\",\"rootClassName\",\"rootStyle\",\"forceRender\"]);let m=null;if(!i)return f(Sy,A(A({},p),{},{rootClassName:c,rootStyle:u,open:e.open,onClose:a,onHandleClick:r,inline:!0}),o);const g=!!o.handler||d;return(g||e.open||l.value)&&(m=f(Ni,{autoLock:!0,visible:e.open,forceRender:g,getContainer:i,wrapperClassName:s},{default:v=>{var{visible:y,afterClose:b}=v,S=$y(v,[\"visible\",\"afterClose\"]);return f(Sy,A(A(A({ref:l},p),S),{},{rootClassName:c,rootStyle:u,open:y!==void 0?y:e.open,afterVisibleChange:b!==void 0?b:e.afterVisibleChange,onClose:a,onHandleClick:r}),o)}})),m}}}),XF=e=>{const{componentCls:t,motionDurationSlow:n}=e,o={\"&-enter, &-appear, &-leave\":{\"&-start\":{transition:\"none\"},\"&-active\":{transition:`all ${n}`}}};return{[t]:{[`${t}-mask-motion`]:{\"&-enter, &-appear, &-leave\":{\"&-active\":{transition:`all ${n}`}},\"&-enter, &-appear\":{opacity:0,\"&-active\":{opacity:1}},\"&-leave\":{opacity:1,\"&-active\":{opacity:0}}},[`${t}-panel-motion`]:{\"&-left\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateX(-100%) !important\"},\"&-active\":{transform:\"translateX(0)\"}},\"&-leave\":{transform:\"translateX(0)\",\"&-active\":{transform:\"translateX(-100%)\"}}}],\"&-right\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateX(100%) !important\"},\"&-active\":{transform:\"translateX(0)\"}},\"&-leave\":{transform:\"translateX(0)\",\"&-active\":{transform:\"translateX(100%)\"}}}],\"&-top\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateY(-100%) !important\"},\"&-active\":{transform:\"translateY(0)\"}},\"&-leave\":{transform:\"translateY(0)\",\"&-active\":{transform:\"translateY(-100%)\"}}}],\"&-bottom\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateY(100%) !important\"},\"&-active\":{transform:\"translateY(0)\"}},\"&-leave\":{transform:\"translateY(0)\",\"&-active\":{transform:\"translateY(100%)\"}}}]}}}},UF=e=>{const{componentCls:t,zIndexPopup:n,colorBgMask:o,colorBgElevated:l,motionDurationSlow:r,motionDurationMid:a,padding:i,paddingLG:s,fontSizeLG:c,lineHeightLG:u,lineWidth:d,lineType:p,colorSplit:m,marginSM:g,colorIcon:v,colorIconHover:y,colorText:b,fontWeightStrong:S,drawerFooterPaddingVertical:$,drawerFooterPaddingHorizontal:w}=e,C=`${t}-content-wrapper`;return{[t]:{position:\"fixed\",inset:0,zIndex:n,pointerEvents:\"none\",\"&-pure\":{position:\"relative\",background:l,[`&${t}-left`]:{boxShadow:e.boxShadowDrawerLeft},[`&${t}-right`]:{boxShadow:e.boxShadowDrawerRight},[`&${t}-top`]:{boxShadow:e.boxShadowDrawerUp},[`&${t}-bottom`]:{boxShadow:e.boxShadowDrawerDown}},\"&-inline\":{position:\"absolute\"},[`${t}-mask`]:{position:\"absolute\",inset:0,zIndex:n,background:o,pointerEvents:\"auto\"},[C]:{position:\"absolute\",zIndex:n,transition:`all ${r}`,\"&-hidden\":{display:\"none\"}},[`&-left > ${C}`]:{top:0,bottom:0,left:{_skip_check_:!0,value:0},boxShadow:e.boxShadowDrawerLeft},[`&-right > ${C}`]:{top:0,right:{_skip_check_:!0,value:0},bottom:0,boxShadow:e.boxShadowDrawerRight},[`&-top > ${C}`]:{top:0,insetInline:0,boxShadow:e.boxShadowDrawerUp},[`&-bottom > ${C}`]:{bottom:0,insetInline:0,boxShadow:e.boxShadowDrawerDown},[`${t}-content`]:{width:\"100%\",height:\"100%\",overflow:\"auto\",background:l,pointerEvents:\"auto\"},[`${t}-wrapper-body`]:{display:\"flex\",flexDirection:\"column\",width:\"100%\",height:\"100%\"},[`${t}-header`]:{display:\"flex\",flex:0,alignItems:\"center\",padding:`${i}px ${s}px`,fontSize:c,lineHeight:u,borderBottom:`${d}px ${p} ${m}`,\"&-title\":{display:\"flex\",flex:1,alignItems:\"center\",minWidth:0,minHeight:0}},[`${t}-extra`]:{flex:\"none\"},[`${t}-close`]:{display:\"inline-block\",marginInlineEnd:g,color:v,fontWeight:S,fontSize:c,fontStyle:\"normal\",lineHeight:1,textAlign:\"center\",textTransform:\"none\",textDecoration:\"none\",background:\"transparent\",border:0,outline:0,cursor:\"pointer\",transition:`color ${a}`,textRendering:\"auto\",\"&:focus, &:hover\":{color:y,textDecoration:\"none\"}},[`${t}-title`]:{flex:1,margin:0,color:b,fontWeight:e.fontWeightStrong,fontSize:c,lineHeight:u},[`${t}-body`]:{flex:1,minWidth:0,minHeight:0,padding:s,overflow:\"auto\"},[`${t}-footer`]:{flexShrink:0,padding:`${$}px ${w}px`,borderTop:`${d}px ${p} ${m}`},\"&-rtl\":{direction:\"rtl\"}}}},YF=Xe(\"Drawer\",e=>{const t=Le(e,{drawerFooterPaddingVertical:e.paddingXS,drawerFooterPaddingHorizontal:e.padding});return[UF(t),XF(t)]},e=>({zIndexPopup:e.zIndexPopupBase}));var qF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const ZF=[\"top\",\"right\",\"bottom\",\"left\"],Cy={distance:180},QF=()=>({autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:W.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:{type:[String,Function,Boolean,Object],default:void 0},maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:De(),rootClassName:String,rootStyle:De(),size:{type:String},drawerStyle:De(),headerStyle:De(),bodyStyle:De(),contentWrapperStyle:{type:Object,default:void 0},title:W.any,visible:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},width:W.oneOfType([W.string,W.number]),height:W.oneOfType([W.string,W.number]),zIndex:Number,prefixCls:String,push:W.oneOfType([W.looseBool,{type:Object}]),placement:W.oneOf(ZF),keyboard:{type:Boolean,default:void 0},extra:W.any,footer:W.any,footerStyle:De(),level:W.any,levelMove:{type:[Number,Array,Function]},handle:W.any,afterVisibleChange:Function,onAfterVisibleChange:Function,onAfterOpenChange:Function,\"onUpdate:visible\":Function,\"onUpdate:open\":Function,onClose:Function}),JF=ne({compatConfig:{MODE:3},name:\"ADrawer\",inheritAttrs:!1,props:Je(QF(),{closable:!0,placement:\"right\",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:Cy}),slots:Object,setup(e,t){let{emit:n,slots:o,attrs:l}=t;const r=ee(!1),a=ee(!1),i=ee(null),s=ee(!1),c=ee(!1),u=I(()=>{var N;return(N=e.open)!==null&&N!==void 0?N:e.visible});pe(u,()=>{u.value?s.value=!0:c.value=!1},{immediate:!0}),pe([u,s],()=>{u.value&&s.value&&(c.value=!0)},{immediate:!0});const d=nt(\"parentDrawerOpts\",null),{prefixCls:p,getPopupContainer:m,direction:g}=Te(\"drawer\",e),[v,y]=YF(p),b=I(()=>e.getContainer===void 0&&m?.value?()=>m.value(document.body):e.getContainer);Ot(!e.afterVisibleChange,\"Drawer\",\"`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead\"),et(\"parentDrawerOpts\",{setPush:()=>{r.value=!0},setPull:()=>{r.value=!1,it(()=>{w()})}}),Be(()=>{u.value&&d&&d.setPush()}),Mn(()=>{d&&d.setPull()}),pe(c,()=>{d&&(c.value?d.setPush():d.setPull())},{flush:\"post\"});const w=()=>{var N,F;(F=(N=i.value)===null||N===void 0?void 0:N.domFocus)===null||F===void 0||F.call(N)},C=N=>{n(\"update:visible\",!1),n(\"update:open\",!1),n(\"close\",N)},_=N=>{var F;N||(a.value===!1&&(a.value=!0),e.destroyOnClose&&(s.value=!1)),(F=e.afterVisibleChange)===null||F===void 0||F.call(e,N),n(\"afterVisibleChange\",N),n(\"afterOpenChange\",N)},x=I(()=>{const{push:N,placement:F}=e;let j;return typeof N==\"boolean\"?j=N?Cy.distance:0:j=N.distance,j=parseFloat(String(j||0)),F===\"left\"||F===\"right\"?`translateX(${F===\"left\"?j:-j}px)`:F===\"top\"||F===\"bottom\"?`translateY(${F===\"top\"?j:-j}px)`:null}),P=I(()=>{var N;return(N=e.width)!==null&&N!==void 0?N:e.size===\"large\"?736:378}),E=I(()=>{var N;return(N=e.height)!==null&&N!==void 0?N:e.size===\"large\"?736:378}),M=I(()=>{const{mask:N,placement:F}=e;if(!c.value&&!N)return{};const j={};return F===\"left\"||F===\"right\"?j.width=Qc(P.value)?`${P.value}px`:P.value:j.height=Qc(E.value)?`${E.value}px`:E.value,j}),O=I(()=>{const{zIndex:N,contentWrapperStyle:F}=e,j=M.value;return[{zIndex:N,transform:r.value?x.value:void 0},h({},F),j]}),R=N=>{const{closable:F,headerStyle:j}=e,H=Qt(o,e,\"extra\"),K=Qt(o,e,\"title\");return!K&&!F?null:f(\"div\",{class:re(`${N}-header`,{[`${N}-header-close-only`]:F&&!K&&!H}),style:j},[f(\"div\",{class:`${N}-header-title`},[D(N),K&&f(\"div\",{class:`${N}-title`},[K])]),H&&f(\"div\",{class:`${N}-extra`},[H])])},D=N=>{var F;const{closable:j}=e,H=o.closeIcon?(F=o.closeIcon)===null||F===void 0?void 0:F.call(o):e.closeIcon;return j&&f(\"button\",{key:\"closer\",onClick:C,\"aria-label\":\"Close\",class:`${N}-close`},[H===void 0?f(Kn,null,null):H])},z=N=>{var F;if(a.value&&!e.forceRender&&!s.value)return null;const{bodyStyle:j,drawerStyle:H}=e;return f(\"div\",{class:`${N}-wrapper-body`,style:H},[R(N),f(\"div\",{key:\"body\",class:`${N}-body`,style:j},[(F=o.default)===null||F===void 0?void 0:F.call(o)]),T(N)])},T=N=>{const F=Qt(o,e,\"footer\");if(!F)return null;const j=`${N}-footer`;return f(\"div\",{class:j,style:e.footerStyle},[F])},k=I(()=>re({\"no-mask\":!e.mask,[`${p.value}-rtl`]:g.value===\"rtl\"},e.rootClassName,y.value)),B=I(()=>So(_n(p.value,\"mask-motion\"))),L=N=>So(_n(p.value,`panel-motion-${N}`));return()=>{const{width:N,height:F,placement:j,mask:H,forceRender:K}=e,G=qF(e,[\"width\",\"height\",\"placement\",\"mask\",\"forceRender\"]),V=h(h(h({},l),lt(G,[\"size\",\"closeIcon\",\"closable\",\"destroyOnClose\",\"drawerStyle\",\"headerStyle\",\"bodyStyle\",\"title\",\"push\",\"onAfterVisibleChange\",\"onClose\",\"onUpdate:visible\",\"onUpdate:open\",\"visible\"])),{forceRender:K,onClose:C,afterVisibleChange:_,handler:!1,prefixCls:p.value,open:c.value,showMask:H,placement:j,ref:i});return v(f(Ci,null,{default:()=>[f(GF,A(A({},V),{},{maskMotion:B.value,motion:L,width:P.value,height:E.value,getContainer:b.value,rootClassName:k.value,rootStyle:e.rootStyle,contentWrapperStyle:O.value}),{handler:e.handle?()=>e.handle:o.handle,default:()=>z(p.value)})]}))}}}),e7=Dt(JF),Mg=()=>({prefixCls:String,description:W.any,type:ke(\"default\"),shape:ke(\"circle\"),tooltip:W.any,href:String,target:String,badge:De(),onClick:de()}),t7=()=>({prefixCls:ke()}),n7=()=>h(h({},Mg()),{trigger:ke(),open:ye(),onOpenChange:de(),\"onUpdate:open\":de()}),o7=()=>h(h({},Mg()),{prefixCls:String,duration:Number,target:de(),visibilityHeight:Number,onClick:de()}),l7=ne({compatConfig:{MODE:3},name:\"AFloatButtonContent\",inheritAttrs:!1,props:t7(),setup(e,t){let{attrs:n,slots:o}=t;return()=>{var l;const{prefixCls:r}=e,a=kt((l=o.description)===null||l===void 0?void 0:l.call(o));return f(\"div\",A(A({},n),{},{class:[n.class,`${r}-content`]}),[o.icon||a.length?f(He,null,[o.icon&&f(\"div\",{class:`${r}-icon`},[o.icon()]),a.length?f(\"div\",{class:`${r}-description`},[a]):null]):f(\"div\",{class:`${r}-icon`},[f(o$,null,null)])])}}}),n_=Symbol(\"floatButtonGroupContext\"),r7=e=>(et(n_,e),e),o_=()=>nt(n_,{shape:Z()}),xy=e=>e===0?0:e-Math.sqrt(Math.pow(e,2)/2),a7=e=>{const{componentCls:t,floatButtonSize:n,motionDurationSlow:o,motionEaseInOutCirc:l}=e,r=`${t}-group`,a=new rt(\"antFloatButtonMoveDownIn\",{\"0%\":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),i=new rt(\"antFloatButtonMoveDownOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:\"0 0\",opacity:0}});return[{[`${r}-wrap`]:h({},Li(`${r}-wrap`,a,i,o,!0))},{[`${r}-wrap`]:{[`\n          &${r}-wrap-enter,\n          &${r}-wrap-appear\n        `]:{opacity:0,animationTimingFunction:l},[`&${r}-wrap-leave`]:{animationTimingFunction:l}}}]},i7=e=>{const{antCls:t,componentCls:n,floatButtonSize:o,margin:l,borderRadiusLG:r,borderRadiusSM:a,badgeOffset:i,floatButtonBodyPadding:s}=e,c=`${n}-group`;return{[c]:h(h({},qe(e)),{zIndex:99,display:\"block\",border:\"none\",position:\"fixed\",width:o,height:\"auto\",boxShadow:\"none\",minHeight:o,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,borderRadius:r,[`${c}-wrap`]:{zIndex:-1,display:\"block\",position:\"relative\",marginBottom:l},[`&${c}-rtl`]:{direction:\"rtl\"},[n]:{position:\"static\"}}),[`${c}-circle`]:{[`${n}-circle:not(:last-child)`]:{marginBottom:e.margin,[`${n}-body`]:{width:o,height:o,borderRadius:\"50%\"}}},[`${c}-square`]:{[`${n}-square`]:{borderRadius:0,padding:0,\"&:first-child\":{borderStartStartRadius:r,borderStartEndRadius:r},\"&:last-child\":{borderEndStartRadius:r,borderEndEndRadius:r},\"&:not(:last-child)\":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-badge`]:{[`${t}-badge-count`]:{top:-(s+i),insetInlineEnd:-(s+i)}}},[`${c}-wrap`]:{display:\"block\",borderRadius:r,boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:\"none\",marginTop:0,borderRadius:0,padding:s,\"&:first-child\":{borderStartStartRadius:r,borderStartEndRadius:r},\"&:last-child\":{borderEndStartRadius:r,borderEndEndRadius:r},\"&:not(:last-child)\":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize}}}},[`${c}-circle-shadow`]:{boxShadow:\"none\"},[`${c}-square-shadow`]:{boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:\"none\",padding:s,[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize,borderRadius:a}}}}},s7=e=>{const{antCls:t,componentCls:n,floatButtonBodyPadding:o,floatButtonIconSize:l,floatButtonSize:r,borderRadiusLG:a,badgeOffset:i,dotOffsetInSquare:s,dotOffsetInCircle:c}=e;return{[n]:h(h({},qe(e)),{border:\"none\",position:\"fixed\",cursor:\"pointer\",zIndex:99,display:\"block\",justifyContent:\"center\",alignItems:\"center\",width:r,height:r,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,boxShadow:e.boxShadowSecondary,\"&-pure\":{position:\"relative\",inset:\"auto\"},\"&:empty\":{display:\"none\"},[`${t}-badge`]:{width:\"100%\",height:\"100%\",[`${t}-badge-count`]:{transform:\"translate(0, 0)\",transformOrigin:\"center\",top:-i,insetInlineEnd:-i}},[`${n}-body`]:{width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",transition:`all ${e.motionDurationMid}`,[`${n}-content`]:{overflow:\"hidden\",textAlign:\"center\",minHeight:r,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",padding:`${o/2}px ${o}px`,[`${n}-icon`]:{textAlign:\"center\",margin:\"auto\",width:l,fontSize:l,lineHeight:1}}}}),[`${n}-rtl`]:{direction:\"rtl\"},[`${n}-circle`]:{height:r,borderRadius:\"50%\",[`${t}-badge`]:{[`${t}-badge-dot`]:{top:c,insetInlineEnd:c}},[`${n}-body`]:{borderRadius:\"50%\"}},[`${n}-square`]:{height:\"auto\",minHeight:r,borderRadius:a,[`${t}-badge`]:{[`${t}-badge-dot`]:{top:s,insetInlineEnd:s}},[`${n}-body`]:{height:\"auto\",borderRadius:a}},[`${n}-default`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,[`${n}-body`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,\"&:hover\":{backgroundColor:e.colorFillContent},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorText},[`${n}-description`]:{display:\"flex\",alignItems:\"center\",lineHeight:`${e.fontSizeLG}px`,color:e.colorText,fontSize:e.fontSizeSM}}}},[`${n}-primary`]:{backgroundColor:e.colorPrimary,[`${n}-body`]:{backgroundColor:e.colorPrimary,transition:`background-color ${e.motionDurationMid}`,\"&:hover\":{backgroundColor:e.colorPrimaryHover},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorTextLightSolid},[`${n}-description`]:{display:\"flex\",alignItems:\"center\",lineHeight:`${e.fontSizeLG}px`,color:e.colorTextLightSolid,fontSize:e.fontSizeSM}}}}}},Ag=Xe(\"FloatButton\",e=>{const{colorTextLightSolid:t,colorBgElevated:n,controlHeightLG:o,marginXXL:l,marginLG:r,fontSize:a,fontSizeIcon:i,controlItemBgHover:s,paddingXXS:c,borderRadiusLG:u}=e,d=Le(e,{floatButtonBackgroundColor:n,floatButtonColor:t,floatButtonHoverBackgroundColor:s,floatButtonFontSize:a,floatButtonIconSize:i*1.5,floatButtonSize:o,floatButtonInsetBlockEnd:l,floatButtonInsetInlineEnd:r,floatButtonBodySize:o-c*2,floatButtonBodyPadding:c,badgeOffset:c*1.5,dotOffsetInCircle:xy(o/2),dotOffsetInSquare:xy(u)});return[i7(d),s7(d),Pv(e),a7(d)]});var c7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Dg=\"float-btn\",Ll=ne({compatConfig:{MODE:3},name:\"AFloatButton\",inheritAttrs:!1,props:Je(Mg(),{type:\"default\",shape:\"circle\"}),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:l,direction:r}=Te(Dg,e),[a,i]=Ag(l),{shape:s}=o_(),c=Z(null),u=I(()=>s?.value||e.shape);return()=>{var d;const{prefixCls:p,type:m=\"default\",shape:g=\"circle\",description:v=(d=o.description)===null||d===void 0?void 0:d.call(o),tooltip:y,badge:b={}}=e,S=c7(e,[\"prefixCls\",\"type\",\"shape\",\"description\",\"tooltip\",\"badge\"]),$=re(l.value,`${l.value}-${m}`,`${l.value}-${u.value}`,{[`${l.value}-rtl`]:r.value===\"rtl\"},n.class,i.value),w=f(Fn,{placement:\"left\"},{title:o.tooltip||y?()=>o.tooltip&&o.tooltip()||y:void 0,default:()=>f(ei,b,{default:()=>[f(\"div\",{class:`${l.value}-body`},[f(l7,{prefixCls:l.value},{icon:o.icon,description:()=>v})])]})});return a(e.href?f(\"a\",A(A(A({ref:c},n),S),{},{class:$}),[w]):f(\"button\",A(A(A({ref:c},n),S),{},{class:$,type:\"button\"}),[w]))}}}),bu=ne({compatConfig:{MODE:3},name:\"AFloatButtonGroup\",inheritAttrs:!1,props:Je(n7(),{type:\"default\",shape:\"circle\"}),setup(e,t){let{attrs:n,slots:o,emit:l}=t;const{prefixCls:r,direction:a}=Te(Dg,e),[i,s]=Ag(r),[c,u]=Mt(!1,{value:I(()=>e.open)}),d=Z(null),p=Z(null);r7({shape:I(()=>e.shape)});const m={onMouseenter(){var b;u(!0),l(\"update:open\",!0),(b=e.onOpenChange)===null||b===void 0||b.call(e,!0)},onMouseleave(){var b;u(!1),l(\"update:open\",!1),(b=e.onOpenChange)===null||b===void 0||b.call(e,!1)}},g=I(()=>e.trigger===\"hover\"?m:{}),v=()=>{var b;const S=!c.value;l(\"update:open\",S),(b=e.onOpenChange)===null||b===void 0||b.call(e,S),u(S)},y=b=>{var S,$,w;if(!((S=d.value)===null||S===void 0)&&S.contains(b.target)){!(($=Tn(p.value))===null||$===void 0)&&$.contains(b.target)&&v();return}u(!1),l(\"update:open\",!1),(w=e.onOpenChange)===null||w===void 0||w.call(e,!1)};return pe(I(()=>e.trigger),b=>{wn()&&(document.removeEventListener(\"click\",y),b===\"click\"&&document.addEventListener(\"click\",y))},{immediate:!0}),ot(()=>{document.removeEventListener(\"click\",y)}),()=>{var b;const{shape:S=\"circle\",type:$=\"default\",tooltip:w,description:C,trigger:_}=e,x=`${r.value}-group`,P=re(x,s.value,n.class,{[`${x}-rtl`]:a.value===\"rtl\",[`${x}-${S}`]:S,[`${x}-${S}-shadow`]:!_}),E=re(s.value,`${x}-wrap`),M=So(`${x}-wrap`);return i(f(\"div\",A(A({ref:d},n),{},{class:P},g.value),[_&&[\"click\",\"hover\"].includes(_)?f(He,null,[f(cn,M,{default:()=>[xn(f(\"div\",{class:E},[o.default&&o.default()]),[[On,c.value]])]}),f(Ll,{ref:p,type:$,shape:S,tooltip:w,description:C},{icon:()=>{var O,R;return c.value?((O=o.closeIcon)===null||O===void 0?void 0:O.call(o))||f(Kn,null,null):((R=o.icon)===null||R===void 0?void 0:R.call(o))||f(o$,null,null)},tooltip:o.tooltip,description:o.description})]):(b=o.default)===null||b===void 0?void 0:b.call(o)]))}}}),yu=ne({compatConfig:{MODE:3},name:\"ABackTop\",inheritAttrs:!1,props:Je(o7(),{visibilityHeight:400,target:()=>window,duration:450,type:\"default\",shape:\"circle\"}),setup(e,t){let{slots:n,attrs:o,emit:l}=t;const{prefixCls:r,direction:a}=Te(Dg,e),[i]=Ag(r),s=Z(),c=gt({visible:e.visibilityHeight===0,scrollEvent:null}),u=()=>s.value&&s.value.ownerDocument?s.value.ownerDocument:window,d=y=>{const{target:b=u,duration:S}=e;av(0,{getContainer:b,duration:S}),l(\"click\",y)},p=dp(y=>{const{visibilityHeight:b}=e,S=rv(y.target);c.visible=S>=b}),m=()=>{const{target:y}=e,S=(y||u)();p({target:S}),S?.addEventListener(\"scroll\",p)},g=()=>{const{target:y}=e,S=(y||u)();p.cancel(),S?.removeEventListener(\"scroll\",p)};pe(()=>e.target,()=>{g(),it(()=>{m()})}),Be(()=>{it(()=>{m()})}),Om(()=>{it(()=>{m()})}),kI(()=>{g()}),ot(()=>{g()});const v=o_();return()=>{const{description:y,type:b,shape:S,tooltip:$,badge:w}=e,C=h(h({},o),{shape:v?.shape.value||S,onClick:d,class:{[`${r.value}`]:!0,[`${o.class}`]:o.class,[`${r.value}-rtl`]:a.value===\"rtl\"},description:y,type:b,tooltip:$,badge:w}),_=So(\"fade\");return i(f(cn,_,{default:()=>[xn(f(Ll,A(A({},C),{},{ref:s}),{icon:()=>{var x;return((x=n.icon)===null||x===void 0?void 0:x.call(n))||f(NI,null,null)}}),[[On,c.visible]])]}))}}});Ll.Group=bu;Ll.BackTop=yu;Ll.install=function(e){return e.component(Ll.name,Ll),e.component(bu.name,bu),e.component(yu.name,yu),e};const ri=e=>e!=null&&(Array.isArray(e)?kt(e).length:!0);function Rg(e){return ri(e.prefix)||ri(e.suffix)||ri(e.allowClear)}function pc(e){return ri(e.addonBefore)||ri(e.addonAfter)}function em(e){return typeof e>\"u\"||e===null?\"\":String(e)}function ai(e,t,n,o){if(!n)return;const l=t;if(t.type===\"click\"){Object.defineProperty(l,\"target\",{writable:!0}),Object.defineProperty(l,\"currentTarget\",{writable:!0});const r=e.cloneNode(!0);l.target=r,l.currentTarget=r,r.value=\"\",n(l);return}if(o!==void 0){Object.defineProperty(l,\"target\",{writable:!0}),Object.defineProperty(l,\"currentTarget\",{writable:!0}),l.target=e,l.currentTarget=e,e.value=o,n(l);return}n(l)}function l_(e,t){if(!e)return;e.focus(t);const{cursor:n}=t||{};if(n){const o=e.value.length;switch(n){case\"start\":e.setSelectionRange(0,0);break;case\"end\":e.setSelectionRange(o,o);break;default:e.setSelectionRange(0,o)}}}const u7=()=>({addonBefore:W.any,addonAfter:W.any,prefix:W.any,suffix:W.any,clearIcon:W.any,affixWrapperClassName:String,groupClassName:String,wrapperClassName:String,inputClassName:String,allowClear:{type:Boolean,default:void 0}}),r_=()=>h(h({},u7()),{value:{type:[String,Number,Symbol],default:void 0},defaultValue:{type:[String,Number,Symbol],default:void 0},inputElement:W.any,prefixCls:String,disabled:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},triggerFocus:Function,readonly:{type:Boolean,default:void 0},handleReset:Function,hidden:{type:Boolean,default:void 0}}),a_=()=>h(h({},r_()),{id:String,placeholder:{type:[String,Number]},autocomplete:String,type:ke(\"text\"),name:String,size:{type:String},autofocus:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,\"onUpdate:value\":Function,onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object,hidden:{type:Boolean,default:void 0},status:String}),d7=ne({name:\"BaseInput\",inheritAttrs:!1,props:r_(),setup(e,t){let{slots:n,attrs:o}=t;const l=Z(),r=i=>{var s;if(!((s=l.value)===null||s===void 0)&&s.contains(i.target)){const{triggerFocus:c}=e;c?.()}},a=()=>{var i;const{allowClear:s,value:c,disabled:u,readonly:d,handleReset:p,suffix:m=n.suffix,prefixCls:g}=e;if(!s)return null;const v=!u&&!d&&c,y=`${g}-clear-icon`,b=((i=n.clearIcon)===null||i===void 0?void 0:i.call(n))||\"*\";return f(\"span\",{onClick:p,onMousedown:S=>S.preventDefault(),class:re({[`${y}-hidden`]:!v,[`${y}-has-suffix`]:!!m},y),role:\"button\",tabindex:-1},[b])};return()=>{var i,s;const{focused:c,value:u,disabled:d,allowClear:p,readonly:m,hidden:g,prefixCls:v,prefix:y=(i=n.prefix)===null||i===void 0?void 0:i.call(n),suffix:b=(s=n.suffix)===null||s===void 0?void 0:s.call(n),addonAfter:S=n.addonAfter,addonBefore:$=n.addonBefore,inputElement:w,affixWrapperClassName:C,wrapperClassName:_,groupClassName:x}=e;let P=ft(w,{value:u,hidden:g});if(Rg({prefix:y,suffix:b,allowClear:p})){const E=`${v}-affix-wrapper`,M=re(E,{[`${E}-disabled`]:d,[`${E}-focused`]:c,[`${E}-readonly`]:m,[`${E}-input-with-clear-btn`]:b&&p&&u},!pc({addonAfter:S,addonBefore:$})&&o.class,C),O=(b||p)&&f(\"span\",{class:`${v}-suffix`},[a(),b]);P=f(\"span\",{class:M,style:o.style,hidden:!pc({addonAfter:S,addonBefore:$})&&g,onMousedown:r,ref:l},[y&&f(\"span\",{class:`${v}-prefix`},[y]),ft(w,{style:null,value:u,hidden:null}),O])}if(pc({addonAfter:S,addonBefore:$})){const E=`${v}-group`,M=`${E}-addon`,O=re(`${v}-wrapper`,E,_),R=re(`${v}-group-wrapper`,o.class,x);return f(\"span\",{class:R,style:o.style,hidden:g},[f(\"span\",{class:O},[$&&f(\"span\",{class:M},[$]),ft(P,{style:null,hidden:null}),S&&f(\"span\",{class:M},[S])])])}return P}}});var f7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const p7=ne({name:\"VCInput\",inheritAttrs:!1,props:a_(),setup(e,t){let{slots:n,attrs:o,expose:l,emit:r}=t;const a=ee(e.value===void 0?e.defaultValue:e.value),i=ee(!1),s=ee(),c=ee();pe(()=>e.value,()=>{a.value=e.value}),pe(()=>e.disabled,()=>{e.disabled&&(i.value=!1)});const u=x=>{s.value&&l_(s.value.input,x)},d=()=>{var x;(x=s.value.input)===null||x===void 0||x.blur()},p=(x,P,E)=>{var M;(M=s.value.input)===null||M===void 0||M.setSelectionRange(x,P,E)},m=()=>{var x;(x=s.value.input)===null||x===void 0||x.select()};l({focus:u,blur:d,input:I(()=>{var x;return(x=s.value.input)===null||x===void 0?void 0:x.input}),stateValue:a,setSelectionRange:p,select:m});const g=x=>{r(\"change\",x)},v=(x,P)=>{a.value!==x&&(e.value===void 0?a.value=x:it(()=>{var E;s.value.input.value!==a.value&&((E=c.value)===null||E===void 0||E.$forceUpdate())}),it(()=>{P&&P()}))},y=x=>{const{value:P}=x.target;if(a.value===P)return;const E=x.target.value;ai(s.value.input,x,g),v(E)},b=x=>{x.keyCode===13&&r(\"pressEnter\",x),r(\"keydown\",x)},S=x=>{i.value=!0,r(\"focus\",x)},$=x=>{i.value=!1,r(\"blur\",x)},w=x=>{ai(s.value.input,x,g),v(\"\",()=>{u()})},C=()=>{var x,P;const{addonBefore:E=n.addonBefore,addonAfter:M=n.addonAfter,disabled:O,valueModifiers:R={},htmlSize:D,autocomplete:z,prefixCls:T,inputClassName:k,prefix:B=(x=n.prefix)===null||x===void 0?void 0:x.call(n),suffix:L=(P=n.suffix)===null||P===void 0?void 0:P.call(n),allowClear:N,type:F=\"text\"}=e,j=lt(e,[\"prefixCls\",\"onPressEnter\",\"addonBefore\",\"addonAfter\",\"prefix\",\"suffix\",\"allowClear\",\"defaultValue\",\"size\",\"bordered\",\"htmlSize\",\"lazy\",\"showCount\",\"valueModifiers\",\"showCount\",\"affixWrapperClassName\",\"groupClassName\",\"inputClassName\",\"wrapperClassName\"]),H=h(h(h({},j),o),{autocomplete:z,onChange:y,onInput:y,onFocus:S,onBlur:$,onKeydown:b,class:re(T,{[`${T}-disabled`]:O},k,!pc({addonAfter:M,addonBefore:E})&&!Rg({prefix:B,suffix:L,allowClear:N})&&o.class),ref:s,key:\"ant-input\",size:D,type:F,lazy:e.lazy});return R.lazy&&delete H.onInput,H.autofocus||delete H.autofocus,f(Ta,lt(H,[\"size\"]),null)},_=()=>{var x;const{maxlength:P,suffix:E=(x=n.suffix)===null||x===void 0?void 0:x.call(n),showCount:M,prefixCls:O}=e,R=Number(P)>0;if(E||M){const D=[...em(a.value)].length,z=typeof M==\"object\"?M.formatter({count:D,maxlength:P}):`${D}${R?` / ${P}`:\"\"}`;return f(He,null,[!!M&&f(\"span\",{class:re(`${O}-show-count-suffix`,{[`${O}-show-count-has-suffix`]:!!E})},[z]),E])}return null};return Be(()=>{}),()=>{const{prefixCls:x,disabled:P}=e,E=f7(e,[\"prefixCls\",\"disabled\"]);return f(d7,A(A(A({},E),o),{},{ref:c,prefixCls:x,inputElement:C(),handleReset:w,value:em(a.value),focused:i.value,triggerFocus:u,suffix:_(),disabled:P}),n)}}}),$d=()=>lt(a_(),[\"wrapperClassName\",\"groupClassName\",\"inputClassName\",\"affixWrapperClassName\"]),i_=()=>h(h({},lt($d(),[\"prefix\",\"addonBefore\",\"addonAfter\",\"suffix\"])),{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:yr(),onCompositionend:yr(),valueModifiers:Object});var m7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Lt=ne({compatConfig:{MODE:3},name:\"AInput\",inheritAttrs:!1,props:$d(),setup(e,t){let{slots:n,attrs:o,expose:l,emit:r}=t;const a=Z(),i=Jt(),s=un.useInject(),c=I(()=>Ro(s.status,e.status)),{direction:u,prefixCls:d,size:p,autocomplete:m}=Te(\"input\",e),{compactSize:g,compactItemClassnames:v}=Xl(d,u),y=I(()=>g.value||p.value),[b,S]=vg(d),$=jn();l({focus:D=>{var z;(z=a.value)===null||z===void 0||z.focus(D)},blur:()=>{var D;(D=a.value)===null||D===void 0||D.blur()},input:a,setSelectionRange:(D,z,T)=>{var k;(k=a.value)===null||k===void 0||k.setSelectionRange(D,z,T)},select:()=>{var D;(D=a.value)===null||D===void 0||D.select()}});const P=Z([]),E=()=>{P.value.push(setTimeout(()=>{var D,z,T,k;!((D=a.value)===null||D===void 0)&&D.input&&((z=a.value)===null||z===void 0?void 0:z.input.getAttribute(\"type\"))===\"password\"&&(!((T=a.value)===null||T===void 0)&&T.input.hasAttribute(\"value\"))&&((k=a.value)===null||k===void 0||k.input.removeAttribute(\"value\"))}))};Be(()=>{E()}),Tm(()=>{P.value.forEach(D=>clearTimeout(D))}),ot(()=>{P.value.forEach(D=>clearTimeout(D))});const M=D=>{E(),r(\"blur\",D),i.onFieldBlur()},O=D=>{E(),r(\"focus\",D)},R=D=>{r(\"update:value\",D.target.value),r(\"change\",D),r(\"input\",D),i.onFieldChange()};return()=>{var D,z,T,k,B,L;const{hasFeedback:N,feedbackIcon:F}=s,{allowClear:j,bordered:H=!0,prefix:K=(D=n.prefix)===null||D===void 0?void 0:D.call(n),suffix:G=(z=n.suffix)===null||z===void 0?void 0:z.call(n),addonAfter:V=(T=n.addonAfter)===null||T===void 0?void 0:T.call(n),addonBefore:q=(k=n.addonBefore)===null||k===void 0?void 0:k.call(n),id:Q=(B=i.id)===null||B===void 0?void 0:B.value}=e,oe=m7(e,[\"allowClear\",\"bordered\",\"prefix\",\"suffix\",\"addonAfter\",\"addonBefore\",\"id\"]),le=(N||G)&&f(He,null,[G,N&&F]),Y=d.value,J=Rg({prefix:K,suffix:G})||!!N,ce=n.clearIcon||(()=>f(Vn,null,null));return b(f(p7,A(A(A({},o),lt(oe,[\"onUpdate:value\",\"onChange\",\"onInput\"])),{},{onChange:R,id:Q,disabled:(L=e.disabled)!==null&&L!==void 0?L:$.value,ref:a,prefixCls:Y,autocomplete:m.value,onBlur:M,onFocus:O,prefix:K,suffix:le,allowClear:j,addonAfter:V&&f(Ci,null,{default:()=>[f(Xc,null,{default:()=>[V]})]}),addonBefore:q&&f(Ci,null,{default:()=>[f(Xc,null,{default:()=>[q]})]}),class:[o.class,v.value],inputClassName:re({[`${Y}-sm`]:y.value===\"small\",[`${Y}-lg`]:y.value===\"large\",[`${Y}-rtl`]:u.value===\"rtl\",[`${Y}-borderless`]:!H},!J&&Cn(Y,c.value),S.value),affixWrapperClassName:re({[`${Y}-affix-wrapper-sm`]:y.value===\"small\",[`${Y}-affix-wrapper-lg`]:y.value===\"large\",[`${Y}-affix-wrapper-rtl`]:u.value===\"rtl\",[`${Y}-affix-wrapper-borderless`]:!H},Cn(`${Y}-affix-wrapper`,c.value,N),S.value),wrapperClassName:re({[`${Y}-group-rtl`]:u.value===\"rtl\"},S.value),groupClassName:re({[`${Y}-group-wrapper-sm`]:y.value===\"small\",[`${Y}-group-wrapper-lg`]:y.value===\"large\",[`${Y}-group-wrapper-rtl`]:u.value===\"rtl\"},Cn(`${Y}-group-wrapper`,c.value,N),S.value)}),h(h({},n),{clearIcon:ce})))}}}),s_=ne({compatConfig:{MODE:3},name:\"AInputGroup\",inheritAttrs:!1,props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0}},setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r,getPrefixCls:a}=Te(\"input-group\",e),i=un.useInject();un.useProvide(i,{isFormItemInput:!1});const s=I(()=>a(\"input\")),[c,u]=vg(s),d=I(()=>{const p=l.value;return{[`${p}`]:!0,[u.value]:!0,[`${p}-lg`]:e.size===\"large\",[`${p}-sm`]:e.size===\"small\",[`${p}-compact`]:e.compact,[`${p}-rtl`]:r.value===\"rtl\"}});return()=>{var p;return c(f(\"span\",A(A({},o),{},{class:re(d.value,o.class)}),[(p=n.default)===null||p===void 0?void 0:p.call(n)]))}}});var v7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const c_=ne({compatConfig:{MODE:3},name:\"AInputSearch\",inheritAttrs:!1,props:h(h({},$d()),{inputPrefixCls:String,enterButton:W.any,onSearch:{type:Function}}),setup(e,t){let{slots:n,attrs:o,expose:l,emit:r}=t;const a=ee(),i=ee(!1);l({focus:()=>{var C;(C=a.value)===null||C===void 0||C.focus()},blur:()=>{var C;(C=a.value)===null||C===void 0||C.blur()}});const u=C=>{r(\"update:value\",C.target.value),C&&C.target&&C.type===\"click\"&&r(\"search\",C.target.value,C),r(\"change\",C)},d=C=>{var _;document.activeElement===((_=a.value)===null||_===void 0?void 0:_.input)&&C.preventDefault()},p=C=>{var _,x;r(\"search\",(x=(_=a.value)===null||_===void 0?void 0:_.input)===null||x===void 0?void 0:x.stateValue,C)},m=C=>{i.value||e.loading||p(C)},g=C=>{i.value=!0,r(\"compositionstart\",C)},v=C=>{i.value=!1,r(\"compositionend\",C)},{prefixCls:y,getPrefixCls:b,direction:S,size:$}=Te(\"input-search\",e),w=I(()=>b(\"input\",e.inputPrefixCls));return()=>{var C,_,x,P;const{disabled:E,loading:M,addonAfter:O=(C=n.addonAfter)===null||C===void 0?void 0:C.call(n),suffix:R=(_=n.suffix)===null||_===void 0?void 0:_.call(n)}=e,D=v7(e,[\"disabled\",\"loading\",\"addonAfter\",\"suffix\"]);let{enterButton:z=(P=(x=n.enterButton)===null||x===void 0?void 0:x.call(n))!==null&&P!==void 0?P:!1}=e;z=z||z===\"\";const T=typeof z==\"boolean\"?f(Pu,null,null):null,k=`${y.value}-button`,B=Array.isArray(z)?z[0]:z;let L;const N=B.type&&u$(B.type)&&B.type.__ANT_BUTTON;if(N||B.tagName===\"button\")L=ft(B,h({onMousedown:d,onClick:p,key:\"enterButton\"},N?{class:k,size:$.value}:{}),!1);else{const j=T&&!z;L=f(_t,{class:k,type:z?\"primary\":void 0,size:$.value,disabled:E,key:\"enterButton\",onMousedown:d,onClick:p,loading:M,icon:j?T:null},{default:()=>[j?null:T||z]})}O&&(L=[L,O]);const F=re(y.value,{[`${y.value}-rtl`]:S.value===\"rtl\",[`${y.value}-${$.value}`]:!!$.value,[`${y.value}-with-button`]:!!z},o.class);return f(Lt,A(A(A({ref:a},lt(D,[\"onUpdate:value\",\"onSearch\",\"enterButton\"])),o),{},{onPressEnter:m,onCompositionstart:g,onCompositionend:v,size:$.value,prefixCls:w.value,addonAfter:L,suffix:R,onChange:u,class:F,disabled:E}),n)}}}),wy=e=>e!=null&&(Array.isArray(e)?kt(e).length:!0);function g7(e){return wy(e.addonBefore)||wy(e.addonAfter)}const h7=[\"text\",\"input\"],b7=ne({compatConfig:{MODE:3},name:\"ClearableLabeledInput\",inheritAttrs:!1,props:{prefixCls:String,inputType:W.oneOf(hn(\"text\",\"input\")),value:wt(),defaultValue:wt(),allowClear:{type:Boolean,default:void 0},element:wt(),handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:wt(),prefix:wt(),addonBefore:wt(),addonAfter:wt(),readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean,status:String,hashId:String},setup(e,t){let{slots:n,attrs:o}=t;const l=un.useInject(),r=i=>{const{value:s,disabled:c,readonly:u,handleReset:d,suffix:p=n.suffix}=e,m=!c&&!u&&s,g=`${i}-clear-icon`;return f(Vn,{onClick:d,onMousedown:v=>v.preventDefault(),class:re({[`${g}-hidden`]:!m,[`${g}-has-suffix`]:!!p},g),role:\"button\"},null)},a=(i,s)=>{const{value:c,allowClear:u,direction:d,bordered:p,hidden:m,status:g,addonAfter:v=n.addonAfter,addonBefore:y=n.addonBefore,hashId:b}=e,{status:S,hasFeedback:$}=l;if(!u)return ft(s,{value:c,disabled:e.disabled});const w=re(`${i}-affix-wrapper`,`${i}-affix-wrapper-textarea-with-clear-btn`,Cn(`${i}-affix-wrapper`,Ro(S,g),$),{[`${i}-affix-wrapper-rtl`]:d===\"rtl\",[`${i}-affix-wrapper-borderless`]:!p,[`${o.class}`]:!g7({addonAfter:v,addonBefore:y})&&o.class},b);return f(\"span\",{class:w,style:o.style,hidden:m},[ft(s,{style:null,value:c,disabled:e.disabled}),r(i)])};return()=>{var i;const{prefixCls:s,inputType:c,element:u=(i=n.element)===null||i===void 0?void 0:i.call(n)}=e;return c===h7[0]?a(s,u):null}}}),y7=`\n  min-height:0 !important;\n  max-height:none !important;\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important;\n  pointer-events: none !important;\n`,S7=[\"letter-spacing\",\"line-height\",\"padding-top\",\"padding-bottom\",\"font-family\",\"font-weight\",\"font-size\",\"font-variant\",\"text-rendering\",\"text-transform\",\"width\",\"text-indent\",\"padding-left\",\"padding-right\",\"border-width\",\"box-sizing\",\"word-break\",\"white-space\"],_f={};let uo;function $7(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=e.getAttribute(\"id\")||e.getAttribute(\"data-reactid\")||e.getAttribute(\"name\");if(t&&_f[n])return _f[n];const o=window.getComputedStyle(e),l=o.getPropertyValue(\"box-sizing\")||o.getPropertyValue(\"-moz-box-sizing\")||o.getPropertyValue(\"-webkit-box-sizing\"),r=parseFloat(o.getPropertyValue(\"padding-bottom\"))+parseFloat(o.getPropertyValue(\"padding-top\")),a=parseFloat(o.getPropertyValue(\"border-bottom-width\"))+parseFloat(o.getPropertyValue(\"border-top-width\")),s={sizingStyle:S7.map(c=>`${c}:${o.getPropertyValue(c)}`).join(\";\"),paddingSize:r,borderSize:a,boxSizing:l};return t&&n&&(_f[n]=s),s}function C7(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;uo||(uo=document.createElement(\"textarea\"),uo.setAttribute(\"tab-index\",\"-1\"),uo.setAttribute(\"aria-hidden\",\"true\"),document.body.appendChild(uo)),e.getAttribute(\"wrap\")?uo.setAttribute(\"wrap\",e.getAttribute(\"wrap\")):uo.removeAttribute(\"wrap\");const{paddingSize:l,borderSize:r,boxSizing:a,sizingStyle:i}=$7(e,t);uo.setAttribute(\"style\",`${i};${y7}`),uo.value=e.value||e.placeholder||\"\";let s,c,u,d=uo.scrollHeight;if(a===\"border-box\"?d+=r:a===\"content-box\"&&(d-=l),n!==null||o!==null){uo.value=\" \";const m=uo.scrollHeight-l;n!==null&&(s=m*n,a===\"border-box\"&&(s=s+l+r),d=Math.max(s,d)),o!==null&&(c=m*o,a===\"border-box\"&&(c=c+l+r),u=d>c?\"\":\"hidden\",d=Math.min(c,d))}const p={height:`${d}px`,overflowY:u,resize:\"none\"};return s&&(p.minHeight=`${s}px`),c&&(p.maxHeight=`${c}px`),p}const If=0,Pf=1,Tf=2,x7=ne({compatConfig:{MODE:3},name:\"ResizableTextArea\",inheritAttrs:!1,props:i_(),setup(e,t){let{attrs:n,emit:o,expose:l}=t,r,a;const i=Z(),s=Z({}),c=Z(Tf);ot(()=>{Qe.cancel(r),Qe.cancel(a)});const u=()=>{try{if(i.value&&document.activeElement===i.value.input){const _=i.value.getSelectionStart(),x=i.value.getSelectionEnd(),P=i.value.getScrollTop();i.value.setSelectionRange(_,x),i.value.setScrollTop(P)}}catch{}},d=Z(),p=Z();ze(()=>{const _=e.autoSize||e.autosize;_?(d.value=_.minRows,p.value=_.maxRows):(d.value=void 0,p.value=void 0)});const m=I(()=>!!(e.autoSize||e.autosize)),g=()=>{c.value=If};pe([()=>e.value,d,p,m],()=>{m.value&&g()},{immediate:!0});const v=Z();pe([c,i],()=>{if(i.value)if(c.value===If)c.value=Pf;else if(c.value===Pf){const _=C7(i.value.input,!1,d.value,p.value);c.value=Tf,v.value=_}else u()},{immediate:!0,flush:\"post\"});const y=fn(),b=Z(),S=()=>{Qe.cancel(b.value)},$=_=>{c.value===Tf&&(o(\"resize\",_),m.value&&(S(),b.value=Qe(()=>{g()})))};ot(()=>{S()}),l({resizeTextarea:()=>{g()},textArea:I(()=>{var _;return(_=i.value)===null||_===void 0?void 0:_.input}),instance:y}),no(e.autosize===void 0);const C=()=>{const{prefixCls:_,disabled:x}=e,P=lt(e,[\"prefixCls\",\"onPressEnter\",\"autoSize\",\"autosize\",\"defaultValue\",\"allowClear\",\"type\",\"maxlength\",\"valueModifiers\"]),E=re(_,n.class,{[`${_}-disabled`]:x}),M=m.value?v.value:null,O=[n.style,s.value,M],R=h(h(h({},P),n),{style:O,class:E});return(c.value===If||c.value===Pf)&&O.push({overflowX:\"hidden\",overflowY:\"hidden\"}),R.autofocus||delete R.autofocus,R.rows===0&&delete R.rows,f(bo,{onResize:$,disabled:!m.value},{default:()=>[f(Ta,A(A({},R),{},{ref:i,tag:\"textarea\"}),null)]})};return()=>C()}});function u_(e,t){return[...e||\"\"].slice(0,t).join(\"\")}function _y(e,t,n,o){let l=n;return e?l=u_(n,o):[...t||\"\"].length<n.length&&[...n||\"\"].length>o&&(l=t),l}const kg=ne({compatConfig:{MODE:3},name:\"ATextarea\",inheritAttrs:!1,props:i_(),setup(e,t){let{attrs:n,expose:o,emit:l}=t;var r;const a=Jt(),i=un.useInject(),s=I(()=>Ro(i.status,e.status)),c=ee((r=e.value)!==null&&r!==void 0?r:e.defaultValue),u=ee(),d=ee(\"\"),{prefixCls:p,size:m,direction:g}=Te(\"input\",e),[v,y]=vg(p),b=jn(),S=I(()=>e.showCount===\"\"||e.showCount||!1),$=I(()=>Number(e.maxlength)>0),w=ee(!1),C=ee(),_=ee(0),x=N=>{w.value=!0,C.value=d.value,_.value=N.currentTarget.selectionStart,l(\"compositionstart\",N)},P=N=>{var F;w.value=!1;let j=N.currentTarget.value;if($.value){const H=_.value>=e.maxlength+1||_.value===((F=C.value)===null||F===void 0?void 0:F.length);j=_y(H,C.value,j,e.maxlength)}j!==d.value&&(R(j),ai(N.currentTarget,N,T,j)),l(\"compositionend\",N)},E=fn();pe(()=>e.value,()=>{var N;\"value\"in E.vnode.props,c.value=(N=e.value)!==null&&N!==void 0?N:\"\"});const M=N=>{var F;l_((F=u.value)===null||F===void 0?void 0:F.textArea,N)},O=()=>{var N,F;(F=(N=u.value)===null||N===void 0?void 0:N.textArea)===null||F===void 0||F.blur()},R=(N,F)=>{c.value!==N&&(e.value===void 0?c.value=N:it(()=>{var j,H,K;u.value.textArea.value!==d.value&&((K=(j=u.value)===null||j===void 0?void 0:(H=j.instance).update)===null||K===void 0||K.call(H))}),it(()=>{F&&F()}))},D=N=>{N.keyCode===13&&l(\"pressEnter\",N),l(\"keydown\",N)},z=N=>{const{onBlur:F}=e;F?.(N),a.onFieldBlur()},T=N=>{l(\"update:value\",N.target.value),l(\"change\",N),l(\"input\",N),a.onFieldChange()},k=N=>{ai(u.value.textArea,N,T),R(\"\",()=>{M()})},B=N=>{let F=N.target.value;if(c.value!==F){if($.value){const j=N.target,H=j.selectionStart>=e.maxlength+1||j.selectionStart===F.length||!j.selectionStart;F=_y(H,d.value,F,e.maxlength)}ai(N.currentTarget,N,T,F),R(F)}},L=()=>{var N,F;const{class:j}=n,{bordered:H=!0}=e,K=h(h(h({},lt(e,[\"allowClear\"])),n),{class:[{[`${p.value}-borderless`]:!H,[`${j}`]:j&&!S.value,[`${p.value}-sm`]:m.value===\"small\",[`${p.value}-lg`]:m.value===\"large\"},Cn(p.value,s.value),y.value],disabled:b.value,showCount:null,prefixCls:p.value,onInput:B,onChange:B,onBlur:z,onKeydown:D,onCompositionstart:x,onCompositionend:P});return!((N=e.valueModifiers)===null||N===void 0)&&N.lazy&&delete K.onInput,f(x7,A(A({},K),{},{id:(F=K?.id)!==null&&F!==void 0?F:a.id.value,ref:u,maxlength:e.maxlength,lazy:e.lazy}),null)};return o({focus:M,blur:O,resizableTextArea:u}),ze(()=>{let N=em(c.value);!w.value&&$.value&&(e.value===null||e.value===void 0)&&(N=u_(N,e.maxlength)),d.value=N}),()=>{var N;const{maxlength:F,bordered:j=!0,hidden:H}=e,{style:K,class:G}=n,V=h(h(h({},e),n),{prefixCls:p.value,inputType:\"text\",handleReset:k,direction:g.value,bordered:j,style:S.value?void 0:K,hashId:y.value,disabled:(N=e.disabled)!==null&&N!==void 0?N:b.value});let q=f(b7,A(A({},V),{},{value:d.value,status:e.status}),{element:L});if(S.value||i.hasFeedback){const Q=[...d.value].length;let oe=\"\";typeof S.value==\"object\"?oe=S.value.formatter({value:d.value,count:Q,maxlength:F}):oe=`${Q}${$.value?` / ${F}`:\"\"}`,q=f(\"div\",{hidden:H,class:re(`${p.value}-textarea`,{[`${p.value}-textarea-rtl`]:g.value===\"rtl\",[`${p.value}-textarea-show-count`]:S.value,[`${p.value}-textarea-in-form-item`]:i.isFormItemInput},`${p.value}-textarea-show-count`,G,y.value),style:K,\"data-count\":typeof oe!=\"object\"?oe:void 0},[q,i.hasFeedback&&f(\"span\",{class:`${p.value}-textarea-suffix`},[i.feedbackIcon])])}return v(q)}}});var w7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const _7={click:\"onClick\",hover:\"onMouseover\"},I7=e=>e?f(Em,null,null):f(BI,null,null),qi=ne({compatConfig:{MODE:3},name:\"AInputPassword\",inheritAttrs:!1,props:h(h({},$d()),{prefixCls:String,inputPrefixCls:String,action:{type:String,default:\"click\"},visibilityToggle:{type:Boolean,default:!0},visible:{type:Boolean,default:void 0},\"onUpdate:visible\":Function,iconRender:Function}),setup(e,t){let{slots:n,attrs:o,expose:l,emit:r}=t;const a=ee(!1),i=()=>{const{disabled:y}=e;y||(a.value=!a.value,r(\"update:visible\",a.value))};ze(()=>{e.visible!==void 0&&(a.value=!!e.visible)});const s=ee();l({focus:()=>{var y;(y=s.value)===null||y===void 0||y.focus()},blur:()=>{var y;(y=s.value)===null||y===void 0||y.blur()}});const d=y=>{const{action:b,iconRender:S=n.iconRender||I7}=e,$=_7[b]||\"\",w=S(a.value),C={[$]:i,class:`${y}-icon`,key:\"passwordIcon\",onMousedown:_=>{_.preventDefault()},onMouseup:_=>{_.preventDefault()}};return ft(Gt(w)?w:f(\"span\",null,[w]),C)},{prefixCls:p,getPrefixCls:m}=Te(\"input-password\",e),g=I(()=>m(\"input\",e.inputPrefixCls)),v=()=>{const{size:y,visibilityToggle:b}=e,S=w7(e,[\"size\",\"visibilityToggle\"]),$=b&&d(p.value),w=re(p.value,o.class,{[`${p.value}-${y}`]:!!y}),C=h(h(h({},lt(S,[\"suffix\",\"iconRender\",\"action\"])),o),{type:a.value?\"text\":\"password\",class:w,prefixCls:g.value,suffix:$});return y&&(C.size=y),f(Lt,A({ref:s},C),n)};return()=>v()}});Lt.Group=s_;Lt.Search=c_;Lt.TextArea=kg;Lt.Password=qi;Lt.install=function(e){return e.component(Lt.name,Lt),e.component(Lt.Group.name,Lt.Group),e.component(Lt.Search.name,Lt.Search),e.component(Lt.TextArea.name,Lt.TextArea),e.component(Lt.Password.name,Lt.Password),e};function Cd(){return{keyboard:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},afterClose:Function,closable:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},destroyOnClose:{type:Boolean,default:void 0},mousePosition:W.shape({x:Number,y:Number}).loose,title:W.any,footer:W.any,transitionName:String,maskTransitionName:String,animation:W.any,maskAnimation:W.any,wrapStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},maskStyle:{type:Object,default:void 0},prefixCls:String,wrapClassName:String,rootClassName:String,width:[String,Number],height:[String,Number],zIndex:Number,bodyProps:W.any,maskProps:W.any,wrapProps:W.any,getContainer:W.any,dialogStyle:{type:Object,default:void 0},dialogClass:String,closeIcon:W.any,forceRender:{type:Boolean,default:void 0},getOpenCount:Function,focusTriggerAfterClose:{type:Boolean,default:void 0},onClose:Function,modalRender:Function}}function Iy(e,t,n){let o=t;return!o&&n&&(o=`${e}-${n}`),o}let Py=-1;function P7(){return Py+=1,Py}function Ty(e,t){let n=e[`page${t?\"Y\":\"X\"}Offset`];const o=`scroll${t?\"Top\":\"Left\"}`;if(typeof n!=\"number\"){const l=e.document;n=l.documentElement[o],typeof n!=\"number\"&&(n=l.body[o])}return n}function T7(e){const t=e.getBoundingClientRect(),n={left:t.left,top:t.top},o=e.ownerDocument,l=o.defaultView||o.parentWindow;return n.left+=Ty(l),n.top+=Ty(l,!0),n}const O7={width:0,height:0,overflow:\"hidden\",outline:\"none\"},E7={outline:\"none\"},M7=ne({compatConfig:{MODE:3},name:\"DialogContent\",inheritAttrs:!1,props:h(h({},Cd()),{motionName:String,ariaId:String,onVisibleChanged:Function,onMousedown:Function,onMouseup:Function}),setup(e,t){let{expose:n,slots:o,attrs:l}=t;const r=Z(),a=Z(),i=Z();n({focus:()=>{var p;(p=r.value)===null||p===void 0||p.focus({preventScroll:!0})},changeActive:p=>{const{activeElement:m}=document;p&&m===a.value?r.value.focus({preventScroll:!0}):!p&&m===r.value&&a.value.focus({preventScroll:!0})}});const s=Z(),c=I(()=>{const{width:p,height:m}=e,g={};return p!==void 0&&(g.width=typeof p==\"number\"?`${p}px`:p),m!==void 0&&(g.height=typeof m==\"number\"?`${m}px`:m),s.value&&(g.transformOrigin=s.value),g}),u=()=>{it(()=>{if(i.value){const p=T7(i.value);s.value=e.mousePosition?`${e.mousePosition.x-p.left}px ${e.mousePosition.y-p.top}px`:\"\"}})},d=p=>{e.onVisibleChanged(p)};return()=>{var p,m,g,v;const{prefixCls:y,footer:b=(p=o.footer)===null||p===void 0?void 0:p.call(o),title:S=(m=o.title)===null||m===void 0?void 0:m.call(o),ariaId:$,closable:w,closeIcon:C=(g=o.closeIcon)===null||g===void 0?void 0:g.call(o),onClose:_,bodyStyle:x,bodyProps:P,onMousedown:E,onMouseup:M,visible:O,modalRender:R=o.modalRender,destroyOnClose:D,motionName:z}=e;let T;b&&(T=f(\"div\",{class:`${y}-footer`},[b]));let k;S&&(k=f(\"div\",{class:`${y}-header`},[f(\"div\",{class:`${y}-title`,id:$},[S])]));let B;w&&(B=f(\"button\",{type:\"button\",onClick:_,\"aria-label\":\"Close\",class:`${y}-close`},[C||f(\"span\",{class:`${y}-close-x`},null)]));const L=f(\"div\",{class:`${y}-content`},[B,k,f(\"div\",A({class:`${y}-body`,style:x},P),[(v=o.default)===null||v===void 0?void 0:v.call(o)]),T]),N=So(z);return f(cn,A(A({},N),{},{onBeforeEnter:u,onAfterEnter:()=>d(!0),onAfterLeave:()=>d(!1)}),{default:()=>[O||!D?xn(f(\"div\",A(A({},l),{},{ref:i,key:\"dialog-element\",role:\"document\",style:[c.value,l.style],class:[y,l.class],onMousedown:E,onMouseup:M}),[f(\"div\",{tabindex:0,ref:r,style:E7},[R?R({originVNode:L}):L]),f(\"div\",{tabindex:0,ref:a,style:O7},null)]),[[On,O]]):null]})}}}),A7=ne({compatConfig:{MODE:3},name:\"DialogMask\",props:{prefixCls:String,visible:Boolean,motionName:String,maskProps:Object},setup(e,t){return()=>{const{prefixCls:n,visible:o,maskProps:l,motionName:r}=e,a=So(r);return f(cn,a,{default:()=>[xn(f(\"div\",A({class:`${n}-mask`},l),null),[[On,o]])]})}}}),Oy=ne({compatConfig:{MODE:3},name:\"VcDialog\",inheritAttrs:!1,props:Je(h(h({},Cd()),{getOpenCount:Function,scrollLocker:Object}),{mask:!0,visible:!1,keyboard:!0,closable:!0,maskClosable:!0,destroyOnClose:!1,prefixCls:\"rc-dialog\",getOpenCount:()=>null,focusTriggerAfterClose:!0}),setup(e,t){let{attrs:n,slots:o}=t;const l=ee(),r=ee(),a=ee(),i=ee(e.visible),s=ee(`vcDialogTitle${P7()}`),c=b=>{var S,$;if(b)Ol(r.value,document.activeElement)||(l.value=document.activeElement,(S=a.value)===null||S===void 0||S.focus());else{const w=i.value;if(i.value=!1,e.mask&&l.value&&e.focusTriggerAfterClose){try{l.value.focus({preventScroll:!0})}catch{}l.value=null}w&&(($=e.afterClose)===null||$===void 0||$.call(e))}},u=b=>{var S;(S=e.onClose)===null||S===void 0||S.call(e,b)},d=ee(!1),p=ee(),m=()=>{clearTimeout(p.value),d.value=!0},g=()=>{p.value=setTimeout(()=>{d.value=!1})},v=b=>{if(!e.maskClosable)return null;d.value?d.value=!1:r.value===b.target&&u(b)},y=b=>{if(e.keyboard&&b.keyCode===we.ESC){b.stopPropagation(),u(b);return}e.visible&&b.keyCode===we.TAB&&a.value.changeActive(!b.shiftKey)};return pe(()=>e.visible,()=>{e.visible&&(i.value=!0)},{flush:\"post\"}),ot(()=>{var b;clearTimeout(p.value),(b=e.scrollLocker)===null||b===void 0||b.unLock()}),ze(()=>{var b,S;(b=e.scrollLocker)===null||b===void 0||b.unLock(),i.value&&((S=e.scrollLocker)===null||S===void 0||S.lock())}),()=>{const{prefixCls:b,mask:S,visible:$,maskTransitionName:w,maskAnimation:C,zIndex:_,wrapClassName:x,rootClassName:P,wrapStyle:E,closable:M,maskProps:O,maskStyle:R,transitionName:D,animation:z,wrapProps:T,title:k=o.title}=e,{style:B,class:L}=n;return f(\"div\",A({class:[`${b}-root`,P]},Gl(e,{data:!0})),[f(A7,{prefixCls:b,visible:S&&$,motionName:Iy(b,w,C),style:h({zIndex:_},R),maskProps:O},null),f(\"div\",A({tabIndex:-1,onKeydown:y,class:re(`${b}-wrap`,x),ref:r,onClick:v,role:\"dialog\",\"aria-labelledby\":k?s.value:null,style:h(h({zIndex:_},E),{display:i.value?null:\"none\"})},T),[f(M7,A(A({},lt(e,[\"scrollLocker\"])),{},{style:B,class:L,onMousedown:m,onMouseup:g,ref:a,closable:M,ariaId:s.value,prefixCls:b,visible:$,onClose:u,onVisibleChanged:c,motionName:Iy(b,D,z)}),o)])])}}}),D7=Cd(),d_=ne({compatConfig:{MODE:3},name:\"DialogWrap\",inheritAttrs:!1,props:Je(D7,{visible:!1}),setup(e,t){let{attrs:n,slots:o}=t;const l=Z(e.visible);return hv({},{inTriggerContext:!1}),pe(()=>e.visible,()=>{e.visible&&(l.value=!0)},{flush:\"post\"}),()=>{const{visible:r,getContainer:a,forceRender:i,destroyOnClose:s=!1,afterClose:c}=e;let u=h(h(h({},e),n),{ref:\"_component\",key:\"dialog\"});return a===!1?f(Oy,A(A({},u),{},{getOpenCount:()=>2}),o):!i&&s&&!l.value?null:f(Ni,{autoLock:!0,visible:r,forceRender:i,getContainer:a},{default:d=>(u=h(h(h({},u),d),{afterClose:()=>{c?.(),l.value=!1}}),f(Oy,u,o))})}}});function R7(e){const t=Z(null),n=gt(h({},e)),o=Z([]),l=r=>{t.value===null&&(o.value=[],t.value=Qe(()=>{let a;o.value.forEach(i=>{a=h(h({},a),i)}),h(n,a),t.value=null})),o.value.push(r)};return Be(()=>{t.value&&Qe.cancel(t.value)}),[n,l]}function Ey(e,t,n,o){const l=t+n,r=(n-o)/2;if(n>o){if(t>0)return{[e]:r};if(t<0&&l<o)return{[e]:-r}}else if(t<0||l>o)return{[e]:t<0?r:-r};return{}}function k7(e,t,n,o){const{width:l,height:r}=vA();let a=null;return e<=l&&t<=r?a={x:0,y:0}:(e>l||t>r)&&(a=h(h({},Ey(\"x\",n,e,l)),Ey(\"y\",o,t,r))),a}var N7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const My=Symbol(\"previewGroupContext\"),Ng={provide:e=>{et(My,e)},inject:()=>nt(My,{isPreviewGroup:ee(!1),previewUrls:I(()=>new Map),setPreviewUrls:()=>{},current:Z(null),setCurrent:()=>{},setShowPreview:()=>{},setMousePosition:()=>{},registerImage:null,rootClassName:\"\"})},B7=()=>({previewPrefixCls:String,preview:{type:[Boolean,Object],default:!0},icons:{type:Object,default:()=>({})}}),f_=ne({compatConfig:{MODE:3},name:\"PreviewGroup\",inheritAttrs:!1,props:B7(),setup(e,t){let{slots:n}=t;const o=I(()=>{const C={visible:void 0,onVisibleChange:()=>{},getContainer:void 0,current:0};return typeof e.preview==\"object\"?v_(e.preview,C):C}),l=gt(new Map),r=Z(),a=I(()=>o.value.visible),i=I(()=>o.value.getContainer),s=(C,_)=>{var x,P;(P=(x=o.value).onVisibleChange)===null||P===void 0||P.call(x,C,_)},[c,u]=Mt(!!a.value,{value:a,onChange:s}),d=Z(null),p=I(()=>a.value!==void 0),m=I(()=>Array.from(l.keys())),g=I(()=>m.value[o.value.current]),v=I(()=>new Map(Array.from(l).filter(C=>{let[,{canPreview:_}]=C;return!!_}).map(C=>{let[_,{url:x}]=C;return[_,x]}))),y=function(C,_){let x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;l.set(C,{url:_,canPreview:x})},b=C=>{r.value=C},S=C=>{d.value=C},$=function(C,_){let x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const P=()=>{l.delete(C)};return l.set(C,{url:_,canPreview:x}),P},w=C=>{C?.stopPropagation(),u(!1),S(null)};return pe(g,C=>{b(C)},{immediate:!0,flush:\"post\"}),ze(()=>{c.value&&p.value&&b(g.value)},{flush:\"post\"}),Ng.provide({isPreviewGroup:ee(!0),previewUrls:v,setPreviewUrls:y,current:r,setCurrent:b,setShowPreview:u,setMousePosition:S,registerImage:$}),()=>{const C=N7(o.value,[]);return f(He,null,[n.default&&n.default(),f(p_,A(A({},C),{},{\"ria-hidden\":!c.value,visible:c.value,prefixCls:e.previewPrefixCls,onClose:w,mousePosition:d.value,src:v.value.get(r.value),icons:e.icons,getContainer:i.value}),null)])}}}),Jl={x:0,y:0},L7=h(h({},Cd()),{src:String,alt:String,rootClassName:String,icons:{type:Object,default:()=>({})}}),p_=ne({compatConfig:{MODE:3},name:\"Preview\",inheritAttrs:!1,props:L7,emits:[\"close\",\"afterClose\"],setup(e,t){let{emit:n,attrs:o}=t;const{rotateLeft:l,rotateRight:r,zoomIn:a,zoomOut:i,close:s,left:c,right:u,flipX:d,flipY:p}=gt(e.icons),m=ee(1),g=ee(0),v=gt({x:1,y:1}),[y,b]=R7(Jl),S=()=>n(\"close\"),$=ee(),w=gt({originX:0,originY:0,deltaX:0,deltaY:0}),C=ee(!1),_=Ng.inject(),{previewUrls:x,current:P,isPreviewGroup:E,setCurrent:M}=_,O=I(()=>x.value.size),R=I(()=>Array.from(x.value.keys())),D=I(()=>R.value.indexOf(P.value)),z=I(()=>E.value?x.value.get(P.value):e.src),T=I(()=>E.value&&O.value>1),k=ee({wheelDirection:0}),B=()=>{m.value=1,g.value=0,v.x=1,v.y=1,b(Jl),n(\"afterClose\")},L=Se=>{Se?m.value+=.5:m.value++,b(Jl)},N=Se=>{m.value>1&&(Se?m.value-=.5:m.value--),b(Jl)},F=()=>{g.value+=90},j=()=>{g.value-=90},H=()=>{v.x=-v.x},K=()=>{v.y=-v.y},G=Se=>{Se.preventDefault(),Se.stopPropagation(),D.value>0&&M(R.value[D.value-1])},V=Se=>{Se.preventDefault(),Se.stopPropagation(),D.value<O.value-1&&M(R.value[D.value+1])},q=re({[`${e.prefixCls}-moving`]:C.value}),Q=`${e.prefixCls}-operations-operation`,oe=`${e.prefixCls}-operations-icon`,le=[{icon:s,onClick:S,type:\"close\"},{icon:a,onClick:()=>L(),type:\"zoomIn\"},{icon:i,onClick:()=>N(),type:\"zoomOut\",disabled:I(()=>m.value===1)},{icon:r,onClick:F,type:\"rotateRight\"},{icon:l,onClick:j,type:\"rotateLeft\"},{icon:d,onClick:H,type:\"flipX\"},{icon:p,onClick:K,type:\"flipY\"}],Y=()=>{if(e.visible&&C.value){const Se=$.value.offsetWidth*m.value,X=$.value.offsetHeight*m.value,{left:U,top:ie}=jc($.value),ve=g.value%180!==0;C.value=!1;const me=k7(ve?X:Se,ve?Se:X,U,ie);me&&b(h({},me))}},J=Se=>{Se.button===0&&(Se.preventDefault(),Se.stopPropagation(),w.deltaX=Se.pageX-y.x,w.deltaY=Se.pageY-y.y,w.originX=y.x,w.originY=y.y,C.value=!0)},ce=Se=>{e.visible&&C.value&&b({x:Se.pageX-w.deltaX,y:Se.pageY-w.deltaY})},ue=Se=>{if(!e.visible)return;Se.preventDefault();const X=Se.deltaY;k.value={wheelDirection:X}},be=Se=>{!e.visible||!T.value||(Se.preventDefault(),Se.keyCode===we.LEFT?D.value>0&&M(R.value[D.value-1]):Se.keyCode===we.RIGHT&&D.value<O.value-1&&M(R.value[D.value+1]))},Ce=()=>{e.visible&&(m.value!==1&&(m.value=1),(y.x!==Jl.x||y.y!==Jl.y)&&b(Jl))};let ge=()=>{};return Be(()=>{pe([()=>e.visible,C],()=>{ge();let Se,X;const U=Rt(window,\"mouseup\",Y,!1),ie=Rt(window,\"mousemove\",ce,!1),ve=Rt(window,\"wheel\",ue,{passive:!1}),me=Rt(window,\"keydown\",be,!1);try{window.top!==window.self&&(Se=Rt(window.top,\"mouseup\",Y,!1),X=Rt(window.top,\"mousemove\",ce,!1))}catch{}ge=()=>{U.remove(),ie.remove(),ve.remove(),me.remove(),Se&&Se.remove(),X&&X.remove()}},{flush:\"post\",immediate:!0}),pe([k],()=>{const{wheelDirection:Se}=k.value;Se>0?N(!0):Se<0&&L(!0)})}),Mn(()=>{ge()}),()=>{const{visible:Se,prefixCls:X,rootClassName:U}=e;return f(d_,A(A({},o),{},{transitionName:e.transitionName,maskTransitionName:e.maskTransitionName,closable:!1,keyboard:!0,prefixCls:X,onClose:S,afterClose:B,visible:Se,wrapClassName:q,rootClassName:U,getContainer:e.getContainer}),{default:()=>[f(\"div\",{class:[`${e.prefixCls}-operations-wrapper`,U]},[f(\"ul\",{class:`${e.prefixCls}-operations`},[le.map(ie=>{let{icon:ve,onClick:me,type:he,disabled:se}=ie;return f(\"li\",{class:re(Q,{[`${e.prefixCls}-operations-operation-disabled`]:se&&se?.value}),onClick:me,key:he},[Mo(ve,{class:oe})])})])]),f(\"div\",{class:`${e.prefixCls}-img-wrapper`,style:{transform:`translate3d(${y.x}px, ${y.y}px, 0)`}},[f(\"img\",{onMousedown:J,onDblclick:Ce,ref:$,class:`${e.prefixCls}-img`,src:z.value,alt:e.alt,style:{transform:`scale3d(${v.x*m.value}, ${v.y*m.value}, 1) rotate(${g.value}deg)`}},null)]),T.value&&f(\"div\",{class:re(`${e.prefixCls}-switch-left`,{[`${e.prefixCls}-switch-left-disabled`]:D.value<=0}),onClick:G},[c]),T.value&&f(\"div\",{class:re(`${e.prefixCls}-switch-right`,{[`${e.prefixCls}-switch-right-disabled`]:D.value>=O.value-1}),onClick:V},[u])]})}}});var F7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const m_=()=>({src:String,wrapperClassName:String,wrapperStyle:{type:Object,default:void 0},rootClassName:String,prefixCls:String,previewPrefixCls:String,width:[Number,String],height:[Number,String],previewMask:{type:[Boolean,Function],default:void 0},placeholder:W.any,fallback:String,preview:{type:[Boolean,Object],default:!0},onClick:{type:Function},onError:{type:Function}}),v_=(e,t)=>{const n=h({},e);return Object.keys(t).forEach(o=>{e[o]===void 0&&(n[o]=t[o])}),n};let z7=0;const g_=ne({compatConfig:{MODE:3},name:\"VcImage\",inheritAttrs:!1,props:m_(),emits:[\"click\",\"error\"],setup(e,t){let{attrs:n,slots:o,emit:l}=t;const r=I(()=>e.prefixCls),a=I(()=>`${r.value}-preview`),i=I(()=>{const L={visible:void 0,onVisibleChange:()=>{},getContainer:void 0};return typeof e.preview==\"object\"?v_(e.preview,L):L}),s=I(()=>{var L;return(L=i.value.src)!==null&&L!==void 0?L:e.src}),c=I(()=>e.placeholder&&e.placeholder!==!0||o.placeholder),u=I(()=>i.value.visible),d=I(()=>i.value.getContainer),p=I(()=>u.value!==void 0),m=(L,N)=>{var F,j;(j=(F=i.value).onVisibleChange)===null||j===void 0||j.call(F,L,N)},[g,v]=Mt(!!u.value,{value:u,onChange:m}),y=Z(c.value?\"loading\":\"normal\");pe(()=>e.src,()=>{y.value=c.value?\"loading\":\"normal\"});const b=Z(null),S=I(()=>y.value===\"error\"),$=Ng.inject(),{isPreviewGroup:w,setCurrent:C,setShowPreview:_,setMousePosition:x,registerImage:P}=$,E=Z(z7++),M=I(()=>e.preview&&!S.value),O=()=>{y.value=\"normal\"},R=L=>{y.value=\"error\",l(\"error\",L)},D=L=>{if(!p.value){const{left:N,top:F}=jc(L.target);w.value?(C(E.value),x({x:N,y:F})):b.value={x:N,y:F}}w.value?_(!0):v(!0),l(\"click\",L)},z=()=>{v(!1),p.value||(b.value=null)},T=Z(null);pe(()=>T,()=>{y.value===\"loading\"&&T.value.complete&&(T.value.naturalWidth||T.value.naturalHeight)&&O()});let k=()=>{};Be(()=>{pe([s,M],()=>{if(k(),!w.value)return()=>{};k=P(E.value,s.value,M.value),M.value||k()},{flush:\"post\",immediate:!0})}),Mn(()=>{k()});const B=L=>vP(L)?L+\"px\":L;return()=>{const{prefixCls:L,wrapperClassName:N,fallback:F,src:j,placeholder:H,wrapperStyle:K,rootClassName:G,width:V,height:q,crossorigin:Q,decoding:oe,alt:le,sizes:Y,srcset:J,usemap:ce,class:ue,style:be}=h(h({},e),n),Ce=i.value,{icons:ge,maskClassName:Se}=Ce,X=F7(Ce,[\"icons\",\"maskClassName\"]),U=re(L,N,G,{[`${L}-error`]:S.value}),ie=S.value&&F?F:s.value,ve={crossorigin:Q,decoding:oe,alt:le,sizes:Y,srcset:J,usemap:ce,width:V,height:q,class:re(`${L}-img`,{[`${L}-img-placeholder`]:H===!0},ue),style:h({height:B(q)},be)};return f(He,null,[f(\"div\",{class:U,onClick:M.value?D:me=>{l(\"click\",me)},style:h({width:B(V),height:B(q)},K)},[f(\"img\",A(A(A({},ve),S.value&&F?{src:F}:{onLoad:O,onError:R,src:j}),{},{ref:T}),null),y.value===\"loading\"&&f(\"div\",{\"aria-hidden\":\"true\",class:`${L}-placeholder`},[H||o.placeholder&&o.placeholder()]),o.previewMask&&M.value&&f(\"div\",{class:[`${L}-mask`,Se]},[o.previewMask()])]),!w.value&&M.value&&f(p_,A(A({},X),{},{\"aria-hidden\":!g.value,visible:g.value,prefixCls:a.value,onClose:z,mousePosition:b.value,src:ie,alt:le,getContainer:d.value,icons:ge,rootClassName:G}),null)])}}});g_.PreviewGroup=f_;function Ay(e){return{position:e,top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0}}const h_=e=>{const{componentCls:t}=e;return[{[`${t}-root`]:{[`${t}${e.antCls}-zoom-enter, ${t}${e.antCls}-zoom-appear`]:{transform:\"none\",opacity:0,animationDuration:e.motionDurationSlow,userSelect:\"none\"},[`${t}${e.antCls}-zoom-leave ${t}-content`]:{pointerEvents:\"none\"},[`${t}-mask`]:h(h({},Ay(\"fixed\")),{zIndex:e.zIndexPopupBase,height:\"100%\",backgroundColor:e.colorBgMask,[`${t}-hidden`]:{display:\"none\"}}),[`${t}-wrap`]:h(h({},Ay(\"fixed\")),{overflow:\"auto\",outline:0,WebkitOverflowScrolling:\"touch\"})}},{[`${t}-root`]:Pv(e)}]},H7=e=>{const{componentCls:t}=e;return[{[`${t}-root`]:{[`${t}-wrap`]:{zIndex:e.zIndexPopupBase,position:\"fixed\",inset:0,overflow:\"auto\",outline:0,WebkitOverflowScrolling:\"touch\"},[`${t}-wrap-rtl`]:{direction:\"rtl\"},[`${t}-centered`]:{textAlign:\"center\",\"&::before\":{display:\"inline-block\",width:0,height:\"100%\",verticalAlign:\"middle\",content:'\"\"'},[t]:{top:0,display:\"inline-block\",paddingBottom:0,textAlign:\"start\",verticalAlign:\"middle\"}},[`@media (max-width: ${e.screenSMMax})`]:{[t]:{maxWidth:\"calc(100vw - 16px)\",margin:`${e.marginXS} auto`},[`${t}-centered`]:{[t]:{flex:1}}}}},{[t]:h(h({},qe(e)),{pointerEvents:\"none\",position:\"relative\",top:100,width:\"auto\",maxWidth:`calc(100vw - ${e.margin*2}px)`,margin:\"0 auto\",paddingBottom:e.paddingLG,[`${t}-title`]:{margin:0,color:e.modalHeadingColor,fontWeight:e.fontWeightStrong,fontSize:e.modalHeaderTitleFontSize,lineHeight:e.modalHeaderTitleLineHeight,wordWrap:\"break-word\"},[`${t}-content`]:{position:\"relative\",backgroundColor:e.modalContentBg,backgroundClip:\"padding-box\",border:0,borderRadius:e.borderRadiusLG,boxShadow:e.boxShadowSecondary,pointerEvents:\"auto\",padding:`${e.paddingMD}px ${e.paddingContentHorizontalLG}px`},[`${t}-close`]:h({position:\"absolute\",top:(e.modalHeaderCloseSize-e.modalCloseBtnSize)/2,insetInlineEnd:(e.modalHeaderCloseSize-e.modalCloseBtnSize)/2,zIndex:e.zIndexPopupBase+10,padding:0,color:e.modalCloseColor,fontWeight:e.fontWeightStrong,lineHeight:1,textDecoration:\"none\",background:\"transparent\",borderRadius:e.borderRadiusSM,width:e.modalConfirmIconSize,height:e.modalConfirmIconSize,border:0,outline:0,cursor:\"pointer\",transition:`color ${e.motionDurationMid}, background-color ${e.motionDurationMid}`,\"&-x\":{display:\"block\",fontSize:e.fontSizeLG,fontStyle:\"normal\",lineHeight:`${e.modalCloseBtnSize}px`,textAlign:\"center\",textTransform:\"none\",textRendering:\"auto\"},\"&:hover\":{color:e.modalIconHoverColor,backgroundColor:e.wireframe?\"transparent\":e.colorFillContent,textDecoration:\"none\"},\"&:active\":{backgroundColor:e.wireframe?\"transparent\":e.colorFillContentHover}},pl(e)),[`${t}-header`]:{color:e.colorText,background:e.modalHeaderBg,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`,marginBottom:e.marginXS},[`${t}-body`]:{fontSize:e.fontSize,lineHeight:e.lineHeight,wordWrap:\"break-word\"},[`${t}-footer`]:{textAlign:\"end\",background:e.modalFooterBg,marginTop:e.marginSM,[`${e.antCls}-btn + ${e.antCls}-btn:not(${e.antCls}-dropdown-trigger)`]:{marginBottom:0,marginInlineStart:e.marginXS}},[`${t}-open`]:{overflow:\"hidden\"}})},{[`${t}-pure-panel`]:{top:\"auto\",padding:0,display:\"flex\",flexDirection:\"column\",[`${t}-content,\n          ${t}-body,\n          ${t}-confirm-body-wrapper`]:{display:\"flex\",flexDirection:\"column\",flex:\"auto\"},[`${t}-confirm-body`]:{marginBottom:\"auto\"}}}]},j7=e=>{const{componentCls:t}=e,n=`${t}-confirm`;return{[n]:{\"&-rtl\":{direction:\"rtl\"},[`${e.antCls}-modal-header`]:{display:\"none\"},[`${n}-body-wrapper`]:h({},Do()),[`${n}-body`]:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",[`${n}-title`]:{flex:\"0 0 100%\",display:\"block\",overflow:\"hidden\",color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:e.modalHeaderTitleFontSize,lineHeight:e.modalHeaderTitleLineHeight,[`+ ${n}-content`]:{marginBlockStart:e.marginXS,flexBasis:\"100%\",maxWidth:`calc(100% - ${e.modalConfirmIconSize+e.marginSM}px)`}},[`${n}-content`]:{color:e.colorText,fontSize:e.fontSize},[`> ${e.iconCls}`]:{flex:\"none\",marginInlineEnd:e.marginSM,fontSize:e.modalConfirmIconSize,[`+ ${n}-title`]:{flex:1},[`+ ${n}-title + ${n}-content`]:{marginInlineStart:e.modalConfirmIconSize+e.marginSM}}},[`${n}-btns`]:{textAlign:\"end\",marginTop:e.marginSM,[`${e.antCls}-btn + ${e.antCls}-btn`]:{marginBottom:0,marginInlineStart:e.marginXS}}},[`${n}-error ${n}-body > ${e.iconCls}`]:{color:e.colorError},[`${n}-warning ${n}-body > ${e.iconCls},\n        ${n}-confirm ${n}-body > ${e.iconCls}`]:{color:e.colorWarning},[`${n}-info ${n}-body > ${e.iconCls}`]:{color:e.colorInfo},[`${n}-success ${n}-body > ${e.iconCls}`]:{color:e.colorSuccess},[`${t}-zoom-leave ${t}-btns`]:{pointerEvents:\"none\"}}},W7=e=>{const{componentCls:t}=e;return{[`${t}-root`]:{[`${t}-wrap-rtl`]:{direction:\"rtl\",[`${t}-confirm-body`]:{direction:\"rtl\"}}}}},V7=e=>{const{componentCls:t,antCls:n}=e,o=`${t}-confirm`;return{[t]:{[`${t}-content`]:{padding:0},[`${t}-header`]:{padding:e.modalHeaderPadding,borderBottom:`${e.modalHeaderBorderWidth}px ${e.modalHeaderBorderStyle} ${e.modalHeaderBorderColorSplit}`,marginBottom:0},[`${t}-body`]:{padding:e.modalBodyPadding},[`${t}-footer`]:{padding:`${e.modalFooterPaddingVertical}px ${e.modalFooterPaddingHorizontal}px`,borderTop:`${e.modalFooterBorderWidth}px ${e.modalFooterBorderStyle} ${e.modalFooterBorderColorSplit}`,borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`,marginTop:0}},[o]:{[`${n}-modal-body`]:{padding:`${e.padding*2}px ${e.padding*2}px ${e.paddingLG}px`},[`${o}-body`]:{[`> ${e.iconCls}`]:{marginInlineEnd:e.margin,[`+ ${o}-title + ${o}-content`]:{marginInlineStart:e.modalConfirmIconSize+e.margin}}},[`${o}-btns`]:{marginTop:e.marginLG}}}},K7=Xe(\"Modal\",e=>{const t=e.padding,n=e.fontSizeHeading5,o=e.lineHeightHeading5,l=Le(e,{modalBodyPadding:e.paddingLG,modalHeaderBg:e.colorBgElevated,modalHeaderPadding:`${t}px ${e.paddingLG}px`,modalHeaderBorderWidth:e.lineWidth,modalHeaderBorderStyle:e.lineType,modalHeaderTitleLineHeight:o,modalHeaderTitleFontSize:n,modalHeaderBorderColorSplit:e.colorSplit,modalHeaderCloseSize:o*n+t*2,modalContentBg:e.colorBgElevated,modalHeadingColor:e.colorTextHeading,modalCloseColor:e.colorTextDescription,modalFooterBg:\"transparent\",modalFooterBorderColorSplit:e.colorSplit,modalFooterBorderStyle:e.lineType,modalFooterPaddingVertical:e.paddingXS,modalFooterPaddingHorizontal:e.padding,modalFooterBorderWidth:e.lineWidth,modalConfirmTitleFontSize:e.fontSizeLG,modalIconHoverColor:e.colorIconHover,modalConfirmIconSize:e.fontSize*e.lineHeight,modalCloseBtnSize:e.controlHeightLG*.55});return[H7(l),j7(l),W7(l),h_(l),e.wireframe&&V7(l),Oa(l,\"zoom\")]}),tm=e=>({position:e||\"absolute\",inset:0}),G7=e=>{const{iconCls:t,motionDurationSlow:n,paddingXXS:o,marginXXS:l,prefixCls:r}=e;return{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#fff\",background:new vt(\"#000\").setAlpha(.5).toRgbString(),cursor:\"pointer\",opacity:0,transition:`opacity ${n}`,[`.${r}-mask-info`]:h(h({},Xt),{padding:`0 ${o}px`,[t]:{marginInlineEnd:l,svg:{verticalAlign:\"baseline\"}}})}},X7=e=>{const{previewCls:t,modalMaskBg:n,paddingSM:o,previewOperationColorDisabled:l,motionDurationSlow:r}=e,a=new vt(n).setAlpha(.1),i=a.clone().setAlpha(.2);return{[`${t}-operations`]:h(h({},qe(e)),{display:\"flex\",flexDirection:\"row-reverse\",alignItems:\"center\",color:e.previewOperationColor,listStyle:\"none\",background:a.toRgbString(),pointerEvents:\"auto\",\"&-operation\":{marginInlineStart:o,padding:o,cursor:\"pointer\",transition:`all ${r}`,userSelect:\"none\",\"&:hover\":{background:i.toRgbString()},\"&-disabled\":{color:l,pointerEvents:\"none\"},\"&:last-of-type\":{marginInlineStart:0}},\"&-progress\":{position:\"absolute\",left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%)\"},\"&-icon\":{fontSize:e.previewOperationSize}})}},U7=e=>{const{modalMaskBg:t,iconCls:n,previewOperationColorDisabled:o,previewCls:l,zIndexPopup:r,motionDurationSlow:a}=e,i=new vt(t).setAlpha(.1),s=i.clone().setAlpha(.2);return{[`${l}-switch-left, ${l}-switch-right`]:{position:\"fixed\",insetBlockStart:\"50%\",zIndex:r+1,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:e.imagePreviewSwitchSize,height:e.imagePreviewSwitchSize,marginTop:-e.imagePreviewSwitchSize/2,color:e.previewOperationColor,background:i.toRgbString(),borderRadius:\"50%\",transform:\"translateY(-50%)\",cursor:\"pointer\",transition:`all ${a}`,pointerEvents:\"auto\",userSelect:\"none\",\"&:hover\":{background:s.toRgbString()},\"&-disabled\":{\"&, &:hover\":{color:o,background:\"transparent\",cursor:\"not-allowed\",[`> ${n}`]:{cursor:\"not-allowed\"}}},[`> ${n}`]:{fontSize:e.previewOperationSize}},[`${l}-switch-left`]:{insetInlineStart:e.marginSM},[`${l}-switch-right`]:{insetInlineEnd:e.marginSM}}},Y7=e=>{const{motionEaseOut:t,previewCls:n,motionDurationSlow:o,componentCls:l}=e;return[{[`${l}-preview-root`]:{[n]:{height:\"100%\",textAlign:\"center\",pointerEvents:\"none\"},[`${n}-body`]:h(h({},tm()),{overflow:\"hidden\"}),[`${n}-img`]:{maxWidth:\"100%\",maxHeight:\"100%\",verticalAlign:\"middle\",transform:\"scale3d(1, 1, 1)\",cursor:\"grab\",transition:`transform ${o} ${t} 0s`,userSelect:\"none\",pointerEvents:\"auto\",\"&-wrapper\":h(h({},tm()),{transition:`transform ${o} ${t} 0s`,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",\"&::before\":{display:\"inline-block\",width:1,height:\"50%\",marginInlineEnd:-1,content:'\"\"'}})},[`${n}-moving`]:{[`${n}-preview-img`]:{cursor:\"grabbing\",\"&-wrapper\":{transitionDuration:\"0s\"}}}}},{[`${l}-preview-root`]:{[`${n}-wrap`]:{zIndex:e.zIndexPopup}}},{[`${l}-preview-operations-wrapper`]:{position:\"fixed\",insetBlockStart:0,insetInlineEnd:0,zIndex:e.zIndexPopup+1,width:\"100%\"},\"&\":[X7(e),U7(e)]}]},q7=e=>{const{componentCls:t}=e;return{[t]:{position:\"relative\",display:\"inline-block\",[`${t}-img`]:{width:\"100%\",height:\"auto\",verticalAlign:\"middle\"},[`${t}-img-placeholder`]:{backgroundColor:e.colorBgContainerDisabled,backgroundImage:\"url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')\",backgroundRepeat:\"no-repeat\",backgroundPosition:\"center center\",backgroundSize:\"30%\"},[`${t}-mask`]:h({},G7(e)),[`${t}-mask:hover`]:{opacity:1},[`${t}-placeholder`]:h({},tm())}}},Z7=e=>{const{previewCls:t}=e;return{[`${t}-root`]:Oa(e,\"zoom\"),\"&\":Pv(e,!0)}},b_=Xe(\"Image\",e=>{const t=`${e.componentCls}-preview`,n=Le(e,{previewCls:t,modalMaskBg:new vt(\"#000\").setAlpha(.45).toRgbString(),imagePreviewSwitchSize:e.controlHeightLG});return[q7(n),Y7(n),h_(Le(n,{componentCls:t})),Z7(n)]},e=>({zIndexPopup:e.zIndexPopupBase+80,previewOperationColor:new vt(e.colorTextLightSolid).toRgbString(),previewOperationColorDisabled:new vt(e.colorTextLightSolid).setAlpha(.25).toRgbString(),previewOperationSize:e.fontSizeIcon*1.5})),y_={rotateLeft:f(HI,null,null),rotateRight:f(zI,null,null),zoomIn:f(FI,null,null),zoomOut:f(LI,null,null),close:f(Kn,null,null),left:f(Hl,null,null),right:f(Ao,null,null),flipX:f(uh,null,null),flipY:f(uh,{rotate:90},null)},Q7=()=>({previewPrefixCls:String,preview:wt()}),S_=ne({compatConfig:{MODE:3},name:\"AImagePreviewGroup\",inheritAttrs:!1,props:Q7(),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:l,rootPrefixCls:r}=Te(\"image\",e),a=I(()=>`${l.value}-preview`),[i,s]=b_(l),c=I(()=>{const{preview:u}=e;if(u===!1)return u;const d=typeof u==\"object\"?u:{};return h(h({},d),{rootClassName:s.value,transitionName:_n(r.value,\"zoom\",d.transitionName),maskTransitionName:_n(r.value,\"fade\",d.maskTransitionName)})});return()=>i(f(f_,A(A({},h(h({},n),e)),{},{preview:c.value,icons:y_,previewPrefixCls:a.value}),o))}}),ir=ne({name:\"AImage\",inheritAttrs:!1,props:m_(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,rootPrefixCls:r,configProvider:a}=Te(\"image\",e),[i,s]=b_(l),c=I(()=>{const{preview:u}=e;if(u===!1)return u;const d=typeof u==\"object\"?u:{};return h(h({icons:y_},d),{transitionName:_n(r.value,\"zoom\",d.transitionName),maskTransitionName:_n(r.value,\"fade\",d.maskTransitionName)})});return()=>{var u,d;const p=((d=(u=a.locale)===null||u===void 0?void 0:u.value)===null||d===void 0?void 0:d.Image)||En.Image,m=()=>f(\"div\",{class:`${l.value}-mask-info`},[f(Em,null,null),p?.preview]),{previewMask:g=n.previewMask||m}=e;return i(f(g_,A(A({},h(h(h({},o),e),{prefixCls:l.value})),{},{preview:c.value,rootClassName:re(e.rootClassName,s.value)}),h(h({},n),{previewMask:typeof g==\"function\"?g:null})))}}});ir.PreviewGroup=S_;ir.install=function(e){return e.component(ir.name,ir),e.component(ir.PreviewGroup.name,ir.PreviewGroup),e};function nm(){return typeof BigInt==\"function\"}function ii(e){let t=e.trim(),n=t.startsWith(\"-\");n&&(t=t.slice(1)),t=t.replace(/(\\.\\d*[^0])0*$/,\"$1\").replace(/\\.0*$/,\"\").replace(/^0+/,\"\"),t.startsWith(\".\")&&(t=`0${t}`);const o=t||\"0\",l=o.split(\".\"),r=l[0]||\"0\",a=l[1]||\"0\";r===\"0\"&&a===\"0\"&&(n=!1);const i=n?\"-\":\"\";return{negative:n,negativeStr:i,trimStr:o,integerStr:r,decimalStr:a,fullStr:`${i}${o}`}}function Bg(e){const t=String(e);return!Number.isNaN(Number(t))&&t.includes(\"e\")}function Ai(e){const t=String(e);if(Bg(e)){let n=Number(t.slice(t.indexOf(\"e-\")+2));const o=t.match(/\\.(\\d+)/);return o?.[1]&&(n+=o[1].length),n}return t.includes(\".\")&&Fg(t)?t.length-t.indexOf(\".\")-1:0}function Lg(e){let t=String(e);if(Bg(e)){if(e>Number.MAX_SAFE_INTEGER)return String(nm()?BigInt(e).toString():Number.MAX_SAFE_INTEGER);if(e<Number.MIN_SAFE_INTEGER)return String(nm()?BigInt(e).toString():Number.MIN_SAFE_INTEGER);t=e.toFixed(Ai(t))}return ii(t).fullStr}function Fg(e){return typeof e==\"number\"?!Number.isNaN(e):e?/^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(e)||/^\\s*-?\\d+\\.\\s*$/.test(e)||/^\\s*-?\\.\\d+\\s*$/.test(e):!1}function $_(e){return!e&&e!==0&&!Number.isNaN(e)||!String(e).trim()}class sr{constructor(t){if(this.origin=\"\",$_(t)){this.empty=!0;return}this.origin=String(t),this.number=Number(t)}negate(){return new sr(-this.toNumber())}add(t){if(this.isInvalidate())return new sr(t);const n=Number(t);if(Number.isNaN(n))return this;const o=this.number+n;if(o>Number.MAX_SAFE_INTEGER)return new sr(Number.MAX_SAFE_INTEGER);if(o<Number.MIN_SAFE_INTEGER)return new sr(Number.MIN_SAFE_INTEGER);const l=Math.max(Ai(this.number),Ai(n));return new sr(o.toFixed(l))}isEmpty(){return this.empty}isNaN(){return Number.isNaN(this.number)}isInvalidate(){return this.isEmpty()||this.isNaN()}equals(t){return this.toNumber()===t?.toNumber()}lessEquals(t){return this.add(t.negate().toString()).toNumber()<=0}toNumber(){return this.number}toString(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)?this.isInvalidate()?\"\":Lg(this.number):this.origin}}class Jr{constructor(t){if(this.origin=\"\",$_(t)){this.empty=!0;return}if(this.origin=String(t),t===\"-\"||Number.isNaN(t)){this.nan=!0;return}let n=t;if(Bg(n)&&(n=Number(n)),n=typeof n==\"string\"?n:Lg(n),Fg(n)){const o=ii(n);this.negative=o.negative;const l=o.trimStr.split(\".\");this.integer=BigInt(l[0]);const r=l[1]||\"0\";this.decimal=BigInt(r),this.decimalLen=r.length}else this.nan=!0}getMark(){return this.negative?\"-\":\"\"}getIntegerStr(){return this.integer.toString()}getDecimalStr(){return this.decimal.toString().padStart(this.decimalLen,\"0\")}alignDecimal(t){const n=`${this.getMark()}${this.getIntegerStr()}${this.getDecimalStr().padEnd(t,\"0\")}`;return BigInt(n)}negate(){const t=new Jr(this.toString());return t.negative=!t.negative,t}add(t){if(this.isInvalidate())return new Jr(t);const n=new Jr(t);if(n.isInvalidate())return this;const o=Math.max(this.getDecimalStr().length,n.getDecimalStr().length),l=this.alignDecimal(o),r=n.alignDecimal(o),a=(l+r).toString(),{negativeStr:i,trimStr:s}=ii(a),c=`${i}${s.padStart(o+1,\"0\")}`;return new Jr(`${c.slice(0,-o)}.${c.slice(-o)}`)}isEmpty(){return this.empty}isNaN(){return this.nan}isInvalidate(){return this.isEmpty()||this.isNaN()}equals(t){return this.toString()===t?.toString()}lessEquals(t){return this.add(t.negate().toString()).toNumber()<=0}toNumber(){return this.isNaN()?NaN:Number(this.toString())}toString(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)?this.isInvalidate()?\"\":ii(`${this.getMark()}${this.getIntegerStr()}.${this.getDecimalStr()}`).fullStr:this.origin}}function zo(e){return nm()?new Jr(e):new sr(e)}function om(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===\"\")return\"\";const{negativeStr:l,integerStr:r,decimalStr:a}=ii(e),i=`${t}${a}`,s=`${l}${r}`;if(n>=0){const c=Number(a[n]);if(c>=5&&!o){const u=zo(e).add(`${l}0.${\"0\".repeat(n)}${10-c}`);return om(u.toString(),t,n,o)}return n===0?s:`${s}${t}${a.padEnd(n,\"0\").slice(0,n)}`}return i===\".0\"?s:`${s}${i}`}const J7=200,ez=600,tz=ne({compatConfig:{MODE:3},name:\"StepHandler\",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:de()},slots:Object,setup(e,t){let{slots:n,emit:o}=t;const l=Z(),r=(i,s)=>{i.preventDefault(),o(\"step\",s);function c(){o(\"step\",s),l.value=setTimeout(c,J7)}l.value=setTimeout(c,ez)},a=()=>{clearTimeout(l.value)};return ot(()=>{a()}),()=>{if(yv())return null;const{prefixCls:i,upDisabled:s,downDisabled:c}=e,u=`${i}-handler`,d=re(u,`${u}-up`,{[`${u}-up-disabled`]:s}),p=re(u,`${u}-down`,{[`${u}-down-disabled`]:c}),m={unselectable:\"on\",role:\"button\",onMouseup:a,onMouseleave:a},{upNode:g,downNode:v}=n;return f(\"div\",{class:`${u}-wrap`},[f(\"span\",A(A({},m),{},{onMousedown:y=>{r(y,!0)},\"aria-label\":\"Increase Value\",\"aria-disabled\":s,class:d}),[g?.()||f(\"span\",{unselectable:\"on\",class:`${i}-handler-up-inner`},null)]),f(\"span\",A(A({},m),{},{onMousedown:y=>{r(y,!1)},\"aria-label\":\"Decrease Value\",\"aria-disabled\":c,class:p}),[v?.()||f(\"span\",{unselectable:\"on\",class:`${i}-handler-down-inner`},null)])])}}});function nz(e,t){const n=Z(null);function o(){try{const{selectionStart:r,selectionEnd:a,value:i}=e.value,s=i.substring(0,r),c=i.substring(a);n.value={start:r,end:a,value:i,beforeTxt:s,afterTxt:c}}catch{}}function l(){if(e.value&&n.value&&t.value)try{const{value:r}=e.value,{beforeTxt:a,afterTxt:i,start:s}=n.value;let c=r.length;if(r.endsWith(i))c=r.length-n.value.afterTxt.length;else if(r.startsWith(a))c=a.length;else{const u=a[s-1],d=r.indexOf(u,s-1);d!==-1&&(c=d+1)}e.value.setSelectionRange(c,c)}catch(r){`${r.message}`}}return[o,l]}const oz=()=>{const e=ee(0),t=()=>{Qe.cancel(e.value)};return ot(()=>{t()}),n=>{t(),e.value=Qe(()=>{n()})}};var lz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Dy=(e,t)=>e||t.isEmpty()?t.toString():t.toNumber(),Ry=e=>{const t=zo(e);return t.isInvalidate()?null:t},C_=()=>({stringMode:ye(),defaultValue:Fe([String,Number]),value:Fe([String,Number]),prefixCls:ke(),min:Fe([String,Number]),max:Fe([String,Number]),step:Fe([String,Number],1),tabindex:Number,controls:ye(!0),readonly:ye(),disabled:ye(),autofocus:ye(),keyboard:ye(!0),parser:de(),formatter:de(),precision:Number,decimalSeparator:String,onInput:de(),onChange:de(),onPressEnter:de(),onStep:de(),onBlur:de(),onFocus:de()}),rz=ne({compatConfig:{MODE:3},name:\"InnerInputNumber\",inheritAttrs:!1,props:h(h({},C_()),{lazy:Boolean}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:l,expose:r}=t;const a=ee(),i=ee(!1),s=ee(!1),c=ee(!1),u=ee(zo(e.value));function d(H){e.value===void 0&&(u.value=H)}const p=(H,K)=>{if(!K)return e.precision>=0?e.precision:Math.max(Ai(H),Ai(e.step))},m=H=>{const K=String(H);if(e.parser)return e.parser(K);let G=K;return e.decimalSeparator&&(G=G.replace(e.decimalSeparator,\".\")),G.replace(/[^\\w.-]+/g,\"\")},g=ee(\"\"),v=(H,K)=>{if(e.formatter)return e.formatter(H,{userTyping:K,input:String(g.value)});let G=typeof H==\"number\"?Lg(H):H;if(!K){const V=p(G,K);if(Fg(G)&&(e.decimalSeparator||V>=0)){const q=e.decimalSeparator||\".\";G=om(G,q,V)}}return G},y=(()=>{const H=e.value;return u.value.isInvalidate()&&[\"string\",\"number\"].includes(typeof H)?Number.isNaN(H)?\"\":H:v(u.value.toString(),!1)})();g.value=y;function b(H,K){g.value=v(H.isInvalidate()?H.toString(!1):H.toString(!K),K)}const S=I(()=>Ry(e.max)),$=I(()=>Ry(e.min)),w=I(()=>!S.value||!u.value||u.value.isInvalidate()?!1:S.value.lessEquals(u.value)),C=I(()=>!$.value||!u.value||u.value.isInvalidate()?!1:u.value.lessEquals($.value)),[_,x]=nz(a,i),P=H=>S.value&&!H.lessEquals(S.value)?S.value:$.value&&!$.value.lessEquals(H)?$.value:null,E=H=>!P(H),M=(H,K)=>{var G;let V=H,q=E(V)||V.isEmpty();if(!V.isEmpty()&&!K&&(V=P(V)||V,q=!0),!e.readonly&&!e.disabled&&q){const Q=V.toString(),oe=p(Q,K);return oe>=0&&(V=zo(om(Q,\".\",oe))),V.equals(u.value)||(d(V),(G=e.onChange)===null||G===void 0||G.call(e,V.isEmpty()?null:Dy(e.stringMode,V)),e.value===void 0&&b(V,K)),V}return u.value},O=oz(),R=H=>{var K;if(_(),g.value=H,!c.value){const G=m(H),V=zo(G);V.isNaN()||M(V,!0)}(K=e.onInput)===null||K===void 0||K.call(e,H),O(()=>{let G=H;e.parser||(G=H.replace(/。/g,\".\")),G!==H&&R(G)})},D=()=>{c.value=!0},z=()=>{c.value=!1,R(a.value.value)},T=H=>{R(H.target.value)},k=H=>{var K,G;if(H&&w.value||!H&&C.value)return;s.value=!1;let V=zo(e.step);H||(V=V.negate());const q=(u.value||zo(0)).add(V.toString()),Q=M(q,!1);(K=e.onStep)===null||K===void 0||K.call(e,Dy(e.stringMode,Q),{offset:e.step,type:H?\"up\":\"down\"}),(G=a.value)===null||G===void 0||G.focus()},B=H=>{const K=zo(m(g.value));let G=K;K.isNaN()?G=u.value:G=M(K,H),e.value!==void 0?b(u.value,!1):G.isNaN()||b(G,!1)},L=()=>{s.value=!0},N=H=>{var K;const{which:G}=H;s.value=!0,G===we.ENTER&&(c.value||(s.value=!1),B(!1),(K=e.onPressEnter)===null||K===void 0||K.call(e,H)),e.keyboard!==!1&&!c.value&&[we.UP,we.DOWN].includes(G)&&(k(we.UP===G),H.preventDefault())},F=()=>{s.value=!1},j=H=>{B(!1),i.value=!1,s.value=!1,l(\"blur\",H)};return pe(()=>e.precision,()=>{u.value.isInvalidate()||b(u.value,!1)},{flush:\"post\"}),pe(()=>e.value,()=>{const H=zo(e.value);u.value=H;const K=zo(m(g.value));(!H.equals(K)||!s.value||e.formatter)&&b(H,s.value)},{flush:\"post\"}),pe(g,()=>{e.formatter&&x()},{flush:\"post\"}),pe(()=>e.disabled,H=>{H&&(i.value=!1)}),r({focus:()=>{var H;(H=a.value)===null||H===void 0||H.focus()},blur:()=>{var H;(H=a.value)===null||H===void 0||H.blur()}}),()=>{const H=h(h({},n),e),{prefixCls:K=\"rc-input-number\",min:G,max:V,step:q=1,defaultValue:Q,value:oe,disabled:le,readonly:Y,keyboard:J,controls:ce=!0,autofocus:ue,stringMode:be,parser:Ce,formatter:ge,precision:Se,decimalSeparator:X,onChange:U,onInput:ie,onPressEnter:ve,onStep:me,lazy:he,class:se,style:te}=H,ae=lz(H,[\"prefixCls\",\"min\",\"max\",\"step\",\"defaultValue\",\"value\",\"disabled\",\"readonly\",\"keyboard\",\"controls\",\"autofocus\",\"stringMode\",\"parser\",\"formatter\",\"precision\",\"decimalSeparator\",\"onChange\",\"onInput\",\"onPressEnter\",\"onStep\",\"lazy\",\"class\",\"style\"]),{upHandler:fe,downHandler:Pe}=o,Oe=`${K}-input`,Re={};return he?Re.onChange=T:Re.onInput=T,f(\"div\",{class:re(K,se,{[`${K}-focused`]:i.value,[`${K}-disabled`]:le,[`${K}-readonly`]:Y,[`${K}-not-a-number`]:u.value.isNaN(),[`${K}-out-of-range`]:!u.value.isInvalidate()&&!E(u.value)}),style:te,onKeydown:N,onKeyup:F},[ce&&f(tz,{prefixCls:K,upDisabled:w.value,downDisabled:C.value,onStep:k},{upNode:fe,downNode:Pe}),f(\"div\",{class:`${Oe}-wrap`},[f(\"input\",A(A(A({autofocus:ue,autocomplete:\"off\",role:\"spinbutton\",\"aria-valuemin\":G,\"aria-valuemax\":V,\"aria-valuenow\":u.value.isInvalidate()?null:u.value.toString(),step:q},ae),{},{ref:a,class:Oe,value:g.value,disabled:le,readonly:Y,onFocus:$e=>{i.value=!0,l(\"focus\",$e)}},Re),{},{onBlur:j,onCompositionstart:D,onCompositionend:z,onBeforeinput:L}),null)])])}}});function Of(e){return e!=null}const az=e=>{const{componentCls:t,lineWidth:n,lineType:o,colorBorder:l,borderRadius:r,fontSizeLG:a,controlHeightLG:i,controlHeightSM:s,colorError:c,inputPaddingHorizontalSM:u,colorTextDescription:d,motionDurationMid:p,colorPrimary:m,controlHeight:g,inputPaddingHorizontal:v,colorBgContainer:y,colorTextDisabled:b,borderRadiusSM:S,borderRadiusLG:$,controlWidth:w,handleVisible:C}=e;return[{[t]:h(h(h(h({},qe(e)),Rr(e)),Wi(e,t)),{display:\"inline-block\",width:w,margin:0,padding:0,border:`${n}px ${o} ${l}`,borderRadius:r,\"&-rtl\":{direction:\"rtl\",[`${t}-input`]:{direction:\"rtl\"}},\"&-lg\":{padding:0,fontSize:a,borderRadius:$,[`input${t}-input`]:{height:i-2*n}},\"&-sm\":{padding:0,borderRadius:S,[`input${t}-input`]:{height:s-2*n,padding:`0 ${u}px`}},\"&:hover\":h({},Da(e)),\"&-focused\":h({},jl(e)),\"&-disabled\":h(h({},pg(e)),{[`${t}-input`]:{cursor:\"not-allowed\"}}),\"&-out-of-range\":{input:{color:c}},\"&-group\":h(h(h({},qe(e)),Tx(e)),{\"&-wrapper\":{display:\"inline-block\",textAlign:\"start\",verticalAlign:\"top\",[`${t}-affix-wrapper`]:{width:\"100%\"},\"&-lg\":{[`${t}-group-addon`]:{borderRadius:$}},\"&-sm\":{[`${t}-group-addon`]:{borderRadius:S}}}}),[t]:{\"&-input\":h(h({width:\"100%\",height:g-2*n,padding:`0 ${v}px`,textAlign:\"start\",backgroundColor:\"transparent\",border:0,borderRadius:r,outline:0,transition:`all ${p} linear`,appearance:\"textfield\",color:e.colorText,fontSize:\"inherit\",verticalAlign:\"top\"},fg(e.colorTextPlaceholder)),{'&[type=\"number\"]::-webkit-inner-spin-button, &[type=\"number\"]::-webkit-outer-spin-button':{margin:0,webkitAppearance:\"none\",appearance:\"none\"}})}})},{[t]:{[`&:hover ${t}-handler-wrap, &-focused ${t}-handler-wrap`]:{opacity:1},[`${t}-handler-wrap`]:{position:\"absolute\",insetBlockStart:0,insetInlineEnd:0,width:e.handleWidth,height:\"100%\",background:y,borderStartStartRadius:0,borderStartEndRadius:r,borderEndEndRadius:r,borderEndStartRadius:0,opacity:C===!0?1:0,display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",transition:`opacity ${p} linear ${p}`,[`${t}-handler`]:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"auto\",height:\"40%\",[`\n              ${t}-handler-up-inner,\n              ${t}-handler-down-inner\n            `]:{marginInlineEnd:0,fontSize:e.handleFontSize}}},[`${t}-handler`]:{height:\"50%\",overflow:\"hidden\",color:d,fontWeight:\"bold\",lineHeight:0,textAlign:\"center\",cursor:\"pointer\",borderInlineStart:`${n}px ${o} ${l}`,transition:`all ${p} linear`,\"&:active\":{background:e.colorFillAlter},\"&:hover\":{height:\"60%\",[`\n              ${t}-handler-up-inner,\n              ${t}-handler-down-inner\n            `]:{color:m}},\"&-up-inner, &-down-inner\":h(h({},Tr()),{color:d,transition:`all ${p} linear`,userSelect:\"none\"})},[`${t}-handler-up`]:{borderStartEndRadius:r},[`${t}-handler-down`]:{borderBlockStart:`${n}px ${o} ${l}`,borderEndEndRadius:r},\"&-disabled, &-readonly\":{[`${t}-handler-wrap`]:{display:\"none\"},[`${t}-input`]:{color:\"inherit\"}},[`\n          ${t}-handler-up-disabled,\n          ${t}-handler-down-disabled\n        `]:{cursor:\"not-allowed\"},[`\n          ${t}-handler-up-disabled:hover &-handler-up-inner,\n          ${t}-handler-down-disabled:hover &-handler-down-inner\n        `]:{color:b}}},{[`${t}-borderless`]:{borderColor:\"transparent\",boxShadow:\"none\",[`${t}-handler-down`]:{borderBlockStartWidth:0}}}]},iz=e=>{const{componentCls:t,inputPaddingHorizontal:n,inputAffixPadding:o,controlWidth:l,borderRadiusLG:r,borderRadiusSM:a}=e;return{[`${t}-affix-wrapper`]:h(h(h({},Rr(e)),Wi(e,`${t}-affix-wrapper`)),{position:\"relative\",display:\"inline-flex\",width:l,padding:0,paddingInlineStart:n,\"&-lg\":{borderRadius:r},\"&-sm\":{borderRadius:a},[`&:not(${t}-affix-wrapper-disabled):hover`]:h(h({},Da(e)),{zIndex:1}),\"&-focused, &:focus\":{zIndex:1},\"&-disabled\":{[`${t}[disabled]`]:{background:\"transparent\"}},[`> div${t}`]:{width:\"100%\",border:\"none\",outline:\"none\",[`&${t}-focused`]:{boxShadow:\"none !important\"}},[`input${t}-input`]:{padding:0},\"&::before\":{width:0,visibility:\"hidden\",content:'\"\\\\a0\"'},[`${t}-handler-wrap`]:{zIndex:2},[t]:{\"&-prefix, &-suffix\":{display:\"flex\",flex:\"none\",alignItems:\"center\",pointerEvents:\"none\"},\"&-prefix\":{marginInlineEnd:o},\"&-suffix\":{position:\"absolute\",insetBlockStart:0,insetInlineEnd:0,zIndex:1,height:\"100%\",marginInlineEnd:n,marginInlineStart:o}}})}},sz=Xe(\"InputNumber\",e=>{const t=kr(e);return[az(t),iz(t),Ea(t)]},e=>({controlWidth:90,handleWidth:e.controlHeightSM-e.lineWidth*2,handleFontSize:e.fontSize/2,handleVisible:\"auto\"}));var cz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const ky=C_(),uz=()=>h(h({},ky),{size:ke(),bordered:ye(!0),placeholder:String,name:String,id:String,type:String,addonBefore:W.any,addonAfter:W.any,prefix:W.any,\"onUpdate:value\":ky.onChange,valueModifiers:Object,status:ke()}),Ef=ne({compatConfig:{MODE:3},name:\"AInputNumber\",inheritAttrs:!1,props:uz(),slots:Object,setup(e,t){let{emit:n,expose:o,attrs:l,slots:r}=t;var a;const i=Jt(),s=un.useInject(),c=I(()=>Ro(s.status,e.status)),{prefixCls:u,size:d,direction:p,disabled:m}=Te(\"input-number\",e),{compactSize:g,compactItemClassnames:v}=Xl(u,p),y=jn(),b=I(()=>{var D;return(D=m.value)!==null&&D!==void 0?D:y.value}),[S,$]=sz(u),w=I(()=>g.value||d.value),C=ee((a=e.value)!==null&&a!==void 0?a:e.defaultValue),_=ee(!1);pe(()=>e.value,()=>{C.value=e.value});const x=ee(null),P=()=>{var D;(D=x.value)===null||D===void 0||D.focus()};o({focus:P,blur:()=>{var D;(D=x.value)===null||D===void 0||D.blur()}});const M=D=>{e.value===void 0&&(C.value=D),n(\"update:value\",D),n(\"change\",D),i.onFieldChange()},O=D=>{_.value=!1,n(\"blur\",D),i.onFieldBlur()},R=D=>{_.value=!0,n(\"focus\",D)};return()=>{var D,z,T,k;const{hasFeedback:B,isFormItemInput:L,feedbackIcon:N}=s,F=(D=e.id)!==null&&D!==void 0?D:i.id.value,j=h(h(h({},l),e),{id:F,disabled:b.value}),{class:H,bordered:K,readonly:G,style:V,addonBefore:q=(z=r.addonBefore)===null||z===void 0?void 0:z.call(r),addonAfter:Q=(T=r.addonAfter)===null||T===void 0?void 0:T.call(r),prefix:oe=(k=r.prefix)===null||k===void 0?void 0:k.call(r),valueModifiers:le={}}=j,Y=cz(j,[\"class\",\"bordered\",\"readonly\",\"style\",\"addonBefore\",\"addonAfter\",\"prefix\",\"valueModifiers\"]),J=u.value,ce=re({[`${J}-lg`]:w.value===\"large\",[`${J}-sm`]:w.value===\"small\",[`${J}-rtl`]:p.value===\"rtl\",[`${J}-readonly`]:G,[`${J}-borderless`]:!K,[`${J}-in-form-item`]:L},Cn(J,c.value),H,v.value,$.value);let ue=f(rz,A(A({},lt(Y,[\"size\",\"defaultValue\"])),{},{ref:x,lazy:!!le.lazy,value:C.value,class:ce,prefixCls:J,readonly:G,onChange:M,onBlur:O,onFocus:R}),{upHandler:r.upIcon?()=>f(\"span\",{class:`${J}-handler-up-inner`},[r.upIcon()]):()=>f(jI,{class:`${J}-handler-up-inner`},null),downHandler:r.downIcon?()=>f(\"span\",{class:`${J}-handler-down-inner`},[r.downIcon()]):()=>f(_a,{class:`${J}-handler-down-inner`},null)});const be=Of(q)||Of(Q),Ce=Of(oe);if(Ce||B){const ge=re(`${J}-affix-wrapper`,Cn(`${J}-affix-wrapper`,c.value,B),{[`${J}-affix-wrapper-focused`]:_.value,[`${J}-affix-wrapper-disabled`]:b.value,[`${J}-affix-wrapper-sm`]:w.value===\"small\",[`${J}-affix-wrapper-lg`]:w.value===\"large\",[`${J}-affix-wrapper-rtl`]:p.value===\"rtl\",[`${J}-affix-wrapper-readonly`]:G,[`${J}-affix-wrapper-borderless`]:!K,[`${H}`]:!be&&H},$.value);ue=f(\"div\",{class:ge,style:V,onClick:P},[Ce&&f(\"span\",{class:`${J}-prefix`},[oe]),ue,B&&f(\"span\",{class:`${J}-suffix`},[N])])}if(be){const ge=`${J}-group`,Se=`${ge}-addon`,X=q?f(\"div\",{class:Se},[q]):null,U=Q?f(\"div\",{class:Se},[Q]):null,ie=re(`${J}-wrapper`,ge,{[`${ge}-rtl`]:p.value===\"rtl\"},$.value),ve=re(`${J}-group-wrapper`,{[`${J}-group-wrapper-sm`]:w.value===\"small\",[`${J}-group-wrapper-lg`]:w.value===\"large\",[`${J}-group-wrapper-rtl`]:p.value===\"rtl\"},Cn(`${u}-group-wrapper`,c.value,B),H,$.value);ue=f(\"div\",{class:ve,style:V},[f(\"div\",{class:ie},[X&&f(Ci,null,{default:()=>[f(Xc,null,{default:()=>[X]})]}),ue,U&&f(Ci,null,{default:()=>[f(Xc,null,{default:()=>[U]})]})])])}return S(ft(ue,{style:V}))}}}),dz=h(Ef,{install:e=>(e.component(Ef.name,Ef),e)}),fz=e=>{const{componentCls:t,colorBgContainer:n,colorBgBody:o,colorText:l}=e;return{[`${t}-sider-light`]:{background:n,[`${t}-sider-trigger`]:{color:l,background:n},[`${t}-sider-zero-width-trigger`]:{color:l,background:n,border:`1px solid ${o}`,borderInlineStart:0}}}},pz=e=>{const{antCls:t,componentCls:n,colorText:o,colorTextLightSolid:l,colorBgHeader:r,colorBgBody:a,colorBgTrigger:i,layoutHeaderHeight:s,layoutHeaderPaddingInline:c,layoutHeaderColor:u,layoutFooterPadding:d,layoutTriggerHeight:p,layoutZeroTriggerSize:m,motionDurationMid:g,motionDurationSlow:v,fontSize:y,borderRadius:b}=e;return{[n]:h(h({display:\"flex\",flex:\"auto\",flexDirection:\"column\",color:o,minHeight:0,background:a,\"&, *\":{boxSizing:\"border-box\"},[`&${n}-has-sider`]:{flexDirection:\"row\",[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:\"0 0 auto\"},[`${n}-header`]:{height:s,paddingInline:c,color:u,lineHeight:`${s}px`,background:r,[`${t}-menu`]:{lineHeight:\"inherit\"}},[`${n}-footer`]:{padding:d,color:o,fontSize:y,background:a},[`${n}-content`]:{flex:\"auto\",minHeight:0},[`${n}-sider`]:{position:\"relative\",minWidth:0,background:r,transition:`all ${g}, background 0s`,\"&-children\":{height:\"100%\",marginTop:-.1,paddingTop:.1,[`${t}-menu${t}-menu-inline-collapsed`]:{width:\"auto\"}},\"&-has-trigger\":{paddingBottom:p},\"&-right\":{order:1},\"&-trigger\":{position:\"fixed\",bottom:0,zIndex:1,height:p,color:l,lineHeight:`${p}px`,textAlign:\"center\",background:i,cursor:\"pointer\",transition:`all ${g}`},\"&-zero-width\":{\"> *\":{overflow:\"hidden\"},\"&-trigger\":{position:\"absolute\",top:s,insetInlineEnd:-m,zIndex:1,width:m,height:m,color:l,fontSize:e.fontSizeXL,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:r,borderStartStartRadius:0,borderStartEndRadius:b,borderEndEndRadius:b,borderEndStartRadius:0,cursor:\"pointer\",transition:`background ${v} ease`,\"&::after\":{position:\"absolute\",inset:0,background:\"transparent\",transition:`all ${v}`,content:'\"\"'},\"&:hover::after\":{background:\"rgba(255, 255, 255, 0.2)\"},\"&-right\":{insetInlineStart:-m,borderStartStartRadius:b,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:b}}}}},fz(e)),{\"&-rtl\":{direction:\"rtl\"}})}},mz=Xe(\"Layout\",e=>{const{colorText:t,controlHeightSM:n,controlHeight:o,controlHeightLG:l,marginXXS:r}=e,a=l*1.25,i=Le(e,{layoutHeaderHeight:o*2,layoutHeaderPaddingInline:a,layoutHeaderColor:t,layoutFooterPadding:`${n}px ${a}px`,layoutTriggerHeight:l+r*2,layoutZeroTriggerSize:l});return[pz(i)]},e=>{const{colorBgLayout:t}=e;return{colorBgHeader:\"#001529\",colorBgBody:t,colorBgTrigger:\"#002140\"}}),zg=()=>({prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String});function xd(e){let{suffixCls:t,tagName:n,name:o}=e;return l=>ne({compatConfig:{MODE:3},name:o,props:zg(),setup(a,i){let{slots:s}=i;const{prefixCls:c}=Te(t,a);return()=>{const u=h(h({},a),{prefixCls:c.value,tagName:n});return f(l,u,s)}}})}const Hg=ne({compatConfig:{MODE:3},props:zg(),setup(e,t){let{slots:n}=t;return()=>f(e.tagName,{class:e.prefixCls},n)}}),vz=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:zg(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"\",e),[a,i]=mz(l),s=Z([]);et(G1,{addSider:d=>{s.value=[...s.value,d]},removeSider:d=>{s.value=s.value.filter(p=>p!==d)}});const u=I(()=>{const{prefixCls:d,hasSider:p}=e;return{[i.value]:!0,[`${d}`]:!0,[`${d}-has-sider`]:typeof p==\"boolean\"?p:s.value.length>0,[`${d}-rtl`]:r.value===\"rtl\"}});return()=>{const{tagName:d}=e;return a(f(d,h(h({},o),{class:[u.value,o.class]}),n))}}}),Mf=xd({suffixCls:\"layout\",tagName:\"section\",name:\"ALayout\"})(vz),mc=xd({suffixCls:\"layout-header\",tagName:\"header\",name:\"ALayoutHeader\"})(Hg),vc=xd({suffixCls:\"layout-footer\",tagName:\"footer\",name:\"ALayoutFooter\"})(Hg),gc=xd({suffixCls:\"layout-content\",tagName:\"main\",name:\"ALayoutContent\"})(Hg),Ny={xs:\"479.98px\",sm:\"575.98px\",md:\"767.98px\",lg:\"991.98px\",xl:\"1199.98px\",xxl:\"1599.98px\",xxxl:\"1999.98px\"},gz=()=>({prefixCls:String,collapsible:{type:Boolean,default:void 0},collapsed:{type:Boolean,default:void 0},defaultCollapsed:{type:Boolean,default:void 0},reverseArrow:{type:Boolean,default:void 0},zeroWidthTriggerStyle:{type:Object,default:void 0},trigger:W.any,width:W.oneOfType([W.number,W.string]),collapsedWidth:W.oneOfType([W.number,W.string]),breakpoint:W.oneOf(hn(\"xs\",\"sm\",\"md\",\"lg\",\"xl\",\"xxl\",\"xxxl\")),theme:W.oneOf(hn(\"light\",\"dark\")).def(\"dark\"),onBreakpoint:Function,onCollapse:Function}),hz=(()=>{let e=0;return function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\";return e+=1,`${t}${e}`}})(),hc=ne({compatConfig:{MODE:3},name:\"ALayoutSider\",inheritAttrs:!1,props:Je(gz(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:[\"breakpoint\",\"update:collapsed\",\"collapse\"],setup(e,t){let{emit:n,attrs:o,slots:l}=t;const{prefixCls:r}=Te(\"layout-sider\",e),a=nt(G1,void 0),i=ee(!!(e.collapsed!==void 0?e.collapsed:e.defaultCollapsed)),s=ee(!1);pe(()=>e.collapsed,()=>{i.value=!!e.collapsed}),et(K1,i);const c=(v,y)=>{e.collapsed===void 0&&(i.value=v),n(\"update:collapsed\",v),n(\"collapse\",v,y)},u=ee(v=>{s.value=v.matches,n(\"breakpoint\",v.matches),i.value!==v.matches&&c(v.matches,\"responsive\")});let d;function p(v){return u.value(v)}const m=hz(\"ant-sider-\");a&&a.addSider(m),Be(()=>{pe(()=>e.breakpoint,()=>{try{d?.removeEventListener(\"change\",p)}catch{d?.removeListener(p)}if(typeof window<\"u\"){const{matchMedia:v}=window;if(v&&e.breakpoint&&e.breakpoint in Ny){d=v(`(max-width: ${Ny[e.breakpoint]})`);try{d.addEventListener(\"change\",p)}catch{d.addListener(p)}p(d)}}},{immediate:!0})}),ot(()=>{try{d?.removeEventListener(\"change\",p)}catch{d?.removeListener(p)}a&&a.removeSider(m)});const g=()=>{c(!i.value,\"clickTrigger\")};return()=>{var v,y;const b=r.value,{collapsedWidth:S,width:$,reverseArrow:w,zeroWidthTriggerStyle:C,trigger:_=(v=l.trigger)===null||v===void 0?void 0:v.call(l),collapsible:x,theme:P}=e,E=i.value?S:$,M=Qc(E)?`${E}px`:String(E),O=parseFloat(String(S||0))===0?f(\"span\",{onClick:g,class:re(`${b}-zero-width-trigger`,`${b}-zero-width-trigger-${w?\"right\":\"left\"}`),style:C},[_||f(WI,null,null)]):null,R={expanded:w?f(Ao,null,null):f(Hl,null,null),collapsed:w?f(Hl,null,null):f(Ao,null,null)},D=i.value?\"collapsed\":\"expanded\",z=R[D],T=_!==null?O||f(\"div\",{class:`${b}-trigger`,onClick:g,style:{width:M}},[_||z]):null,k=[o.style,{flex:`0 0 ${M}`,maxWidth:M,minWidth:M,width:M}],B=re(b,`${b}-${P}`,{[`${b}-collapsed`]:!!i.value,[`${b}-has-trigger`]:x&&_!==null&&!O,[`${b}-below`]:!!s.value,[`${b}-zero-width`]:parseFloat(M)===0},o.class);return f(\"aside\",A(A({},o),{},{class:B,style:k}),[f(\"div\",{class:`${b}-children`},[(y=l.default)===null||y===void 0?void 0:y.call(l)]),x||s.value&&O?T:null])}}}),bz=mc,yz=vc,Sz=hc,$z=gc,Cz=h(Mf,{Header:mc,Footer:vc,Content:gc,Sider:hc,install:e=>(e.component(Mf.name,Mf),e.component(mc.name,mc),e.component(vc.name,vc),e.component(hc.name,hc),e.component(gc.name,gc),e)});function xz(e,t,n){var o=n||{},l=o.noTrailing,r=l===void 0?!1:l,a=o.noLeading,i=a===void 0?!1:a,s=o.debounceMode,c=s===void 0?void 0:s,u,d=!1,p=0;function m(){u&&clearTimeout(u)}function g(y){var b=y||{},S=b.upcomingOnly,$=S===void 0?!1:S;m(),d=!$}function v(){for(var y=arguments.length,b=new Array(y),S=0;S<y;S++)b[S]=arguments[S];var $=this,w=Date.now()-p;if(d)return;function C(){p=Date.now(),t.apply($,b)}function _(){u=void 0}!i&&c&&!u&&C(),m(),c===void 0&&w>e?i?(p=Date.now(),r||(u=setTimeout(c?_:C,e))):C():r!==!0&&(u=setTimeout(c?_:C,c===void 0?e-w:e))}return v.cancel=g,v}function wz(e,t,n){var o={},l=o.atBegin,r=l===void 0?!1:l;return xz(e,t,{debounceMode:r!==!1})}const _z=new rt(\"antSpinMove\",{to:{opacity:1}}),Iz=new rt(\"antRotate\",{to:{transform:\"rotate(405deg)\"}}),Pz=e=>({[`${e.componentCls}`]:h(h({},qe(e)),{position:\"absolute\",display:\"none\",color:e.colorPrimary,textAlign:\"center\",verticalAlign:\"middle\",opacity:0,transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`,\"&-spinning\":{position:\"static\",display:\"inline-block\",opacity:1},\"&-nested-loading\":{position:\"relative\",[`> div > ${e.componentCls}`]:{position:\"absolute\",top:0,insetInlineStart:0,zIndex:4,display:\"block\",width:\"100%\",height:\"100%\",maxHeight:e.contentHeight,[`${e.componentCls}-dot`]:{position:\"absolute\",top:\"50%\",insetInlineStart:\"50%\",margin:-e.spinDotSize/2},[`${e.componentCls}-text`]:{position:\"absolute\",top:\"50%\",width:\"100%\",paddingTop:(e.spinDotSize-e.fontSize)/2+2,textShadow:`0 1px 2px ${e.colorBgContainer}`},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSize/2)-10},\"&-sm\":{[`${e.componentCls}-dot`]:{margin:-e.spinDotSizeSM/2},[`${e.componentCls}-text`]:{paddingTop:(e.spinDotSizeSM-e.fontSize)/2+2},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSizeSM/2)-10}},\"&-lg\":{[`${e.componentCls}-dot`]:{margin:-(e.spinDotSizeLG/2)},[`${e.componentCls}-text`]:{paddingTop:(e.spinDotSizeLG-e.fontSize)/2+2},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSizeLG/2)-10}}},[`${e.componentCls}-container`]:{position:\"relative\",transition:`opacity ${e.motionDurationSlow}`,\"&::after\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:10,width:\"100%\",height:\"100%\",background:e.colorBgContainer,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'\"\"',pointerEvents:\"none\"}},[`${e.componentCls}-blur`]:{clear:\"both\",opacity:.5,userSelect:\"none\",pointerEvents:\"none\",\"&::after\":{opacity:.4,pointerEvents:\"auto\"}}},\"&-tip\":{color:e.spinDotDefault},[`${e.componentCls}-dot`]:{position:\"relative\",display:\"inline-block\",fontSize:e.spinDotSize,width:\"1em\",height:\"1em\",\"&-item\":{position:\"absolute\",display:\"block\",width:(e.spinDotSize-e.marginXXS/2)/2,height:(e.spinDotSize-e.marginXXS/2)/2,backgroundColor:e.colorPrimary,borderRadius:\"100%\",transform:\"scale(0.75)\",transformOrigin:\"50% 50%\",opacity:.3,animationName:_z,animationDuration:\"1s\",animationIterationCount:\"infinite\",animationTimingFunction:\"linear\",animationDirection:\"alternate\",\"&:nth-child(1)\":{top:0,insetInlineStart:0},\"&:nth-child(2)\":{top:0,insetInlineEnd:0,animationDelay:\"0.4s\"},\"&:nth-child(3)\":{insetInlineEnd:0,bottom:0,animationDelay:\"0.8s\"},\"&:nth-child(4)\":{bottom:0,insetInlineStart:0,animationDelay:\"1.2s\"}},\"&-spin\":{transform:\"rotate(45deg)\",animationName:Iz,animationDuration:\"1.2s\",animationIterationCount:\"infinite\",animationTimingFunction:\"linear\"}},[`&-sm ${e.componentCls}-dot`]:{fontSize:e.spinDotSizeSM,i:{width:(e.spinDotSizeSM-e.marginXXS/2)/2,height:(e.spinDotSizeSM-e.marginXXS/2)/2}},[`&-lg ${e.componentCls}-dot`]:{fontSize:e.spinDotSizeLG,i:{width:(e.spinDotSizeLG-e.marginXXS)/2,height:(e.spinDotSizeLG-e.marginXXS)/2}},[`&${e.componentCls}-show-text ${e.componentCls}-text`]:{display:\"block\"}})}),Tz=Xe(\"Spin\",e=>{const t=Le(e,{spinDotDefault:e.colorTextDescription,spinDotSize:e.controlHeightLG/2,spinDotSizeSM:e.controlHeightLG*.35,spinDotSizeLG:e.controlHeight});return[Pz(t)]},{contentHeight:400});var Oz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Ez=()=>({prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:W.any,delay:Number,indicator:W.any});let bc=null;function Mz(e,t){return!!e&&!!t&&!isNaN(Number(t))}function Az(e){const t=e.indicator;bc=typeof t==\"function\"?t:()=>f(t,null,null)}const Ko=ne({compatConfig:{MODE:3},name:\"ASpin\",inheritAttrs:!1,props:Je(Ez(),{size:\"default\",spinning:!0,wrapperClassName:\"\"}),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:l,size:r,direction:a}=Te(\"spin\",e),[i,s]=Tz(l),c=ee(e.spinning&&!Mz(e.spinning,e.delay));let u;return pe([()=>e.spinning,()=>e.delay],()=>{u?.cancel(),u=wz(e.delay,()=>{c.value=e.spinning}),u?.()},{immediate:!0,flush:\"post\"}),ot(()=>{u?.cancel()}),()=>{var d,p;const{class:m}=n,g=Oz(n,[\"class\"]),{tip:v=(d=o.tip)===null||d===void 0?void 0:d.call(o)}=e,y=(p=o.default)===null||p===void 0?void 0:p.call(o),b={[s.value]:!0,[l.value]:!0,[`${l.value}-sm`]:r.value===\"small\",[`${l.value}-lg`]:r.value===\"large\",[`${l.value}-spinning`]:c.value,[`${l.value}-show-text`]:!!v,[`${l.value}-rtl`]:a.value===\"rtl\",[m]:!!m};function S(w){const C=`${w}-dot`;let _=Qt(o,e,\"indicator\");return _===null?null:(Array.isArray(_)&&(_=_.length===1?_[0]:_),gn(_)?Mo(_,{class:C}):bc&&gn(bc())?Mo(bc(),{class:C}):f(\"span\",{class:`${C} ${w}-dot-spin`},[f(\"i\",{class:`${w}-dot-item`},null),f(\"i\",{class:`${w}-dot-item`},null),f(\"i\",{class:`${w}-dot-item`},null),f(\"i\",{class:`${w}-dot-item`},null)]))}const $=f(\"div\",A(A({},g),{},{class:b,\"aria-live\":\"polite\",\"aria-busy\":c.value}),[S(l.value),v?f(\"div\",{class:`${l.value}-text`},[v]):null]);if(y&&kt(y).length){const w={[`${l.value}-container`]:!0,[`${l.value}-blur`]:c.value};return i(f(\"div\",{class:[`${l.value}-nested-loading`,e.wrapperClassName,s.value]},[c.value&&f(\"div\",{key:\"loading\"},[$]),f(\"div\",{class:w,key:\"container\"},[y])]))}return i($)}}});Ko.setDefaultIndicator=Az;Ko.install=function(e){return e.component(Ko.name,Ko),e};const Dz=ne({name:\"MiniSelect\",compatConfig:{MODE:3},inheritAttrs:!1,props:td(),Option:nn.Option,setup(e,t){let{attrs:n,slots:o}=t;return()=>{const l=h(h(h({},e),{size:\"small\"}),n);return f(nn,l,o)}}}),Rz=ne({name:\"MiddleSelect\",inheritAttrs:!1,props:td(),Option:nn.Option,setup(e,t){let{attrs:n,slots:o}=t;return()=>{const l=h(h(h({},e),{size:\"middle\"}),n);return f(nn,l,o)}}}),er=ne({compatConfig:{MODE:3},name:\"Pager\",inheritAttrs:!1,props:{rootPrefixCls:String,page:Number,active:{type:Boolean,default:void 0},last:{type:Boolean,default:void 0},locale:W.object,showTitle:{type:Boolean,default:void 0},itemRender:{type:Function,default:()=>{}},onClick:{type:Function},onKeypress:{type:Function}},eimt:[\"click\",\"keypress\"],setup(e,t){let{emit:n,attrs:o}=t;const l=()=>{n(\"click\",e.page)},r=a=>{n(\"keypress\",a,l,e.page)};return()=>{const{showTitle:a,page:i,itemRender:s}=e,{class:c,style:u}=o,d=`${e.rootPrefixCls}-item`,p=re(d,`${d}-${e.page}`,{[`${d}-active`]:e.active,[`${d}-disabled`]:!e.page},c);return f(\"li\",{onClick:l,onKeypress:r,title:a?String(i):null,tabindex:\"0\",class:p,style:u},[s({page:i,type:\"page\",originalElement:f(\"a\",{rel:\"nofollow\"},[i])})])}}}),nr={ENTER:13,ARROW_UP:38,ARROW_DOWN:40},kz=ne({compatConfig:{MODE:3},props:{disabled:{type:Boolean,default:void 0},changeSize:Function,quickGo:Function,selectComponentClass:W.any,current:Number,pageSizeOptions:W.array.def([\"10\",\"20\",\"50\",\"100\"]),pageSize:Number,buildOptionText:Function,locale:W.object,rootPrefixCls:String,selectPrefixCls:String,goButton:W.any},setup(e){const t=Z(\"\"),n=I(()=>!t.value||isNaN(t.value)?void 0:Number(t.value)),o=s=>`${s.value} ${e.locale.items_per_page}`,l=s=>{const{value:c}=s.target;t.value!==c&&(t.value=c)},r=s=>{const{goButton:c,quickGo:u,rootPrefixCls:d}=e;if(!(c||t.value===\"\"))if(s.relatedTarget&&(s.relatedTarget.className.indexOf(`${d}-item-link`)>=0||s.relatedTarget.className.indexOf(`${d}-item`)>=0)){t.value=\"\";return}else u(n.value),t.value=\"\"},a=s=>{t.value!==\"\"&&(s.keyCode===nr.ENTER||s.type===\"click\")&&(e.quickGo(n.value),t.value=\"\")},i=I(()=>{const{pageSize:s,pageSizeOptions:c}=e;return c.some(u=>u.toString()===s.toString())?c:c.concat([s.toString()]).sort((u,d)=>{const p=isNaN(Number(u))?0:Number(u),m=isNaN(Number(d))?0:Number(d);return p-m})});return()=>{const{rootPrefixCls:s,locale:c,changeSize:u,quickGo:d,goButton:p,selectComponentClass:m,selectPrefixCls:g,pageSize:v,disabled:y}=e,b=`${s}-options`;let S=null,$=null,w=null;if(!u&&!d)return null;if(u&&m){const C=e.buildOptionText||o,_=i.value.map((x,P)=>f(m.Option,{key:P,value:x},{default:()=>[C({value:x})]}));S=f(m,{disabled:y,prefixCls:g,showSearch:!1,class:`${b}-size-changer`,optionLabelProp:\"children\",value:(v||i.value[0]).toString(),onChange:x=>u(Number(x)),getPopupContainer:x=>x.parentNode},{default:()=>[_]})}return d&&(p&&(w=typeof p==\"boolean\"?f(\"button\",{type:\"button\",onClick:a,onKeyup:a,disabled:y,class:`${b}-quick-jumper-button`},[c.jump_to_confirm]):f(\"span\",{onClick:a,onKeyup:a},[p])),$=f(\"div\",{class:`${b}-quick-jumper`},[c.jump_to,f(Ta,{disabled:y,type:\"text\",value:t.value,onInput:l,onChange:l,onKeyup:a,onBlur:r},null),c.page,w])),f(\"li\",{class:`${b}`},[S,$])}}}),Nz={items_per_page:\"条/页\",jump_to:\"跳至\",jump_to_confirm:\"确定\",page:\"页\",prev_page:\"上一页\",next_page:\"下一页\",prev_5:\"向前 5 页\",next_5:\"向后 5 页\",prev_3:\"向前 3 页\",next_3:\"向后 3 页\"};var Bz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function Lz(e){return typeof e==\"number\"&&isFinite(e)&&Math.floor(e)===e}function Fz(e){let{originalElement:t}=e;return t}function Jo(e,t,n){const o=typeof e>\"u\"?t.statePageSize:e;return Math.floor((n.total-1)/o)+1}const zz=ne({compatConfig:{MODE:3},name:\"Pagination\",mixins:[Er],inheritAttrs:!1,props:{disabled:{type:Boolean,default:void 0},prefixCls:W.string.def(\"rc-pagination\"),selectPrefixCls:W.string.def(\"rc-select\"),current:Number,defaultCurrent:W.number.def(1),total:W.number.def(0),pageSize:Number,defaultPageSize:W.number.def(10),hideOnSinglePage:{type:Boolean,default:!1},showSizeChanger:{type:Boolean,default:void 0},showLessItems:{type:Boolean,default:!1},selectComponentClass:W.any,showPrevNextJumpers:{type:Boolean,default:!0},showQuickJumper:W.oneOfType([W.looseBool,W.object]).def(!1),showTitle:{type:Boolean,default:!0},pageSizeOptions:W.arrayOf(W.oneOfType([W.number,W.string])),buildOptionText:Function,showTotal:Function,simple:{type:Boolean,default:void 0},locale:W.object.def(Nz),itemRender:W.func.def(Fz),prevIcon:W.any,nextIcon:W.any,jumpPrevIcon:W.any,jumpNextIcon:W.any,totalBoundaryShowSizeChanger:W.number.def(50)},data(){const e=this.$props;let t=Yc([this.current,this.defaultCurrent]);const n=Yc([this.pageSize,this.defaultPageSize]);return t=Math.min(t,Jo(n,void 0,e)),{stateCurrent:t,stateCurrentInputValue:t,statePageSize:n}},watch:{current(e){this.setState({stateCurrent:e,stateCurrentInputValue:e})},pageSize(e){const t={};let n=this.stateCurrent;const o=Jo(e,this.$data,this.$props);n=n>o?o:n,ol(this,\"current\")||(t.stateCurrent=n,t.stateCurrentInputValue=n),t.statePageSize=e,this.setState(t)},stateCurrent(e,t){this.$nextTick(()=>{if(this.$refs.paginationNode){const n=this.$refs.paginationNode.querySelector(`.${this.prefixCls}-item-${t}`);n&&document.activeElement===n&&n.blur()}})},total(){const e={},t=Jo(this.pageSize,this.$data,this.$props);if(ol(this,\"current\")){const n=Math.min(this.current,t);e.stateCurrent=n,e.stateCurrentInputValue=n}else{let n=this.stateCurrent;n===0&&t>0?n=1:n=Math.min(this.stateCurrent,t),e.stateCurrent=n}this.setState(e)}},methods:{getJumpPrevPage(){return Math.max(1,this.stateCurrent-(this.showLessItems?3:5))},getJumpNextPage(){return Math.min(Jo(void 0,this.$data,this.$props),this.stateCurrent+(this.showLessItems?3:5))},getItemIcon(e,t){const{prefixCls:n}=this.$props;return K$(this,e,this.$props)||f(\"button\",{type:\"button\",\"aria-label\":t,class:`${n}-item-link`},null)},getValidValue(e){const t=e.target.value,n=Jo(void 0,this.$data,this.$props),{stateCurrentInputValue:o}=this.$data;let l;return t===\"\"?l=t:isNaN(Number(t))?l=o:t>=n?l=n:l=Number(t),l},isValid(e){return Lz(e)&&e!==this.stateCurrent},shouldDisplayQuickJumper(){const{showQuickJumper:e,pageSize:t,total:n}=this.$props;return n<=t?!1:e},handleKeyDown(e){(e.keyCode===nr.ARROW_UP||e.keyCode===nr.ARROW_DOWN)&&e.preventDefault()},handleKeyUp(e){const t=this.getValidValue(e),n=this.stateCurrentInputValue;t!==n&&this.setState({stateCurrentInputValue:t}),e.keyCode===nr.ENTER?this.handleChange(t):e.keyCode===nr.ARROW_UP?this.handleChange(t-1):e.keyCode===nr.ARROW_DOWN&&this.handleChange(t+1)},changePageSize(e){let t=this.stateCurrent;const n=t,o=Jo(e,this.$data,this.$props);t=t>o?o:t,o===0&&(t=this.stateCurrent),typeof e==\"number\"&&(ol(this,\"pageSize\")||this.setState({statePageSize:e}),ol(this,\"current\")||this.setState({stateCurrent:t,stateCurrentInputValue:t})),this.__emit(\"update:pageSize\",e),t!==n&&this.__emit(\"update:current\",t),this.__emit(\"showSizeChange\",t,e),this.__emit(\"change\",t,e)},handleChange(e){const{disabled:t}=this.$props;let n=e;if(this.isValid(n)&&!t){const o=Jo(void 0,this.$data,this.$props);return n>o?n=o:n<1&&(n=1),ol(this,\"current\")||this.setState({stateCurrent:n,stateCurrentInputValue:n}),this.__emit(\"update:current\",n),this.__emit(\"change\",n,this.statePageSize),n}return this.stateCurrent},prev(){this.hasPrev()&&this.handleChange(this.stateCurrent-1)},next(){this.hasNext()&&this.handleChange(this.stateCurrent+1)},jumpPrev(){this.handleChange(this.getJumpPrevPage())},jumpNext(){this.handleChange(this.getJumpNextPage())},hasPrev(){return this.stateCurrent>1},hasNext(){return this.stateCurrent<Jo(void 0,this.$data,this.$props)},getShowSizeChanger(){const{showSizeChanger:e,total:t,totalBoundaryShowSizeChanger:n}=this.$props;return typeof e<\"u\"?e:t>n},runIfEnter(e,t){if(e.key===\"Enter\"||e.charCode===13){e.preventDefault();for(var n=arguments.length,o=new Array(n>2?n-2:0),l=2;l<n;l++)o[l-2]=arguments[l];t(...o)}},runIfEnterPrev(e){this.runIfEnter(e,this.prev)},runIfEnterNext(e){this.runIfEnter(e,this.next)},runIfEnterJumpPrev(e){this.runIfEnter(e,this.jumpPrev)},runIfEnterJumpNext(e){this.runIfEnter(e,this.jumpNext)},handleGoTO(e){(e.keyCode===nr.ENTER||e.type===\"click\")&&this.handleChange(this.stateCurrentInputValue)},renderPrev(e){const{itemRender:t}=this.$props,n=t({page:e,type:\"prev\",originalElement:this.getItemIcon(\"prevIcon\",\"prev page\")}),o=!this.hasPrev();return Gt(n)?ft(n,o?{disabled:o}:{}):n},renderNext(e){const{itemRender:t}=this.$props,n=t({page:e,type:\"next\",originalElement:this.getItemIcon(\"nextIcon\",\"next page\")}),o=!this.hasNext();return Gt(n)?ft(n,o?{disabled:o}:{}):n}},render(){const{prefixCls:e,disabled:t,hideOnSinglePage:n,total:o,locale:l,showQuickJumper:r,showLessItems:a,showTitle:i,showTotal:s,simple:c,itemRender:u,showPrevNextJumpers:d,jumpPrevIcon:p,jumpNextIcon:m,selectComponentClass:g,selectPrefixCls:v,pageSizeOptions:y}=this.$props,{stateCurrent:b,statePageSize:S}=this,$=Xm(this.$attrs).extraAttrs,{class:w}=$,C=Bz($,[\"class\"]);if(n===!0&&this.total<=S)return null;const _=Jo(void 0,this.$data,this.$props),x=[];let P=null,E=null,M=null,O=null,R=null;const D=r&&r.goButton,z=a?1:2,T=b-1>0?b-1:0,k=b+1<_?b+1:_,B=this.hasPrev(),L=this.hasNext();if(c)return D&&(typeof D==\"boolean\"?R=f(\"button\",{type:\"button\",onClick:this.handleGoTO,onKeyup:this.handleGoTO},[l.jump_to_confirm]):R=f(\"span\",{onClick:this.handleGoTO,onKeyup:this.handleGoTO},[D]),R=f(\"li\",{title:i?`${l.jump_to}${b}/${_}`:null,class:`${e}-simple-pager`},[R])),f(\"ul\",A({class:re(`${e} ${e}-simple`,{[`${e}-disabled`]:t},w)},C),[f(\"li\",{title:i?l.prev_page:null,onClick:this.prev,tabindex:B?0:null,onKeypress:this.runIfEnterPrev,class:re(`${e}-prev`,{[`${e}-disabled`]:!B}),\"aria-disabled\":!B},[this.renderPrev(T)]),f(\"li\",{title:i?`${b}/${_}`:null,class:`${e}-simple-pager`},[f(Ta,{type:\"text\",value:this.stateCurrentInputValue,disabled:t,onKeydown:this.handleKeyDown,onKeyup:this.handleKeyUp,onInput:this.handleKeyUp,onChange:this.handleKeyUp,size:\"3\"},null),f(\"span\",{class:`${e}-slash`},[bt(\"／\")]),_]),f(\"li\",{title:i?l.next_page:null,onClick:this.next,tabindex:L?0:null,onKeypress:this.runIfEnterNext,class:re(`${e}-next`,{[`${e}-disabled`]:!L}),\"aria-disabled\":!L},[this.renderNext(k)]),R]);if(_<=3+z*2){const K={locale:l,rootPrefixCls:e,showTitle:i,itemRender:u,onClick:this.handleChange,onKeypress:this.runIfEnter};_||x.push(f(er,A(A({},K),{},{key:\"noPager\",page:1,class:`${e}-item-disabled`}),null));for(let G=1;G<=_;G+=1){const V=b===G;x.push(f(er,A(A({},K),{},{key:G,page:G,active:V}),null))}}else{const K=a?l.prev_3:l.prev_5,G=a?l.next_3:l.next_5;d&&(P=f(\"li\",{title:this.showTitle?K:null,key:\"prev\",onClick:this.jumpPrev,tabindex:\"0\",onKeypress:this.runIfEnterJumpPrev,class:re(`${e}-jump-prev`,{[`${e}-jump-prev-custom-icon`]:!!p})},[u({page:this.getJumpPrevPage(),type:\"jump-prev\",originalElement:this.getItemIcon(\"jumpPrevIcon\",\"prev page\")})]),E=f(\"li\",{title:this.showTitle?G:null,key:\"next\",tabindex:\"0\",onClick:this.jumpNext,onKeypress:this.runIfEnterJumpNext,class:re(`${e}-jump-next`,{[`${e}-jump-next-custom-icon`]:!!m})},[u({page:this.getJumpNextPage(),type:\"jump-next\",originalElement:this.getItemIcon(\"jumpNextIcon\",\"next page\")})])),O=f(er,{locale:l,last:!0,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:_,page:_,active:!1,showTitle:i,itemRender:u},null),M=f(er,{locale:l,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:1,page:1,active:!1,showTitle:i,itemRender:u},null);let V=Math.max(1,b-z),q=Math.min(b+z,_);b-1<=z&&(q=1+z*2),_-b<=z&&(V=_-z*2);for(let Q=V;Q<=q;Q+=1){const oe=b===Q;x.push(f(er,{locale:l,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:Q,page:Q,active:oe,showTitle:i,itemRender:u},null))}b-1>=z*2&&b!==3&&(x[0]=f(er,{locale:l,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:V,page:V,class:`${e}-item-after-jump-prev`,active:!1,showTitle:this.showTitle,itemRender:u},null),x.unshift(P)),_-b>=z*2&&b!==_-2&&(x[x.length-1]=f(er,{locale:l,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:q,page:q,class:`${e}-item-before-jump-next`,active:!1,showTitle:this.showTitle,itemRender:u},null),x.push(E)),V!==1&&x.unshift(M),q!==_&&x.push(O)}let N=null;s&&(N=f(\"li\",{class:`${e}-total-text`},[s(o,[o===0?0:(b-1)*S+1,b*S>o?o:b*S])]));const F=!B||!_,j=!L||!_,H=this.buildOptionText||this.$slots.buildOptionText;return f(\"ul\",A(A({unselectable:\"on\",ref:\"paginationNode\"},C),{},{class:re({[`${e}`]:!0,[`${e}-disabled`]:t},w)}),[N,f(\"li\",{title:i?l.prev_page:null,onClick:this.prev,tabindex:F?null:0,onKeypress:this.runIfEnterPrev,class:re(`${e}-prev`,{[`${e}-disabled`]:F}),\"aria-disabled\":F},[this.renderPrev(T)]),x,f(\"li\",{title:i?l.next_page:null,onClick:this.next,tabindex:j?null:0,onKeypress:this.runIfEnterNext,class:re(`${e}-next`,{[`${e}-disabled`]:j}),\"aria-disabled\":j},[this.renderNext(k)]),f(kz,{disabled:t,locale:l,rootPrefixCls:e,selectComponentClass:g,selectPrefixCls:v,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:b,pageSize:S,pageSizeOptions:y,buildOptionText:H||null,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:D},null)])}}),Hz=e=>{const{componentCls:t}=e;return{[`${t}-disabled`]:{\"&, &:hover\":{cursor:\"not-allowed\",[`${t}-item-link`]:{color:e.colorTextDisabled,cursor:\"not-allowed\"}},\"&:focus-visible\":{cursor:\"not-allowed\",[`${t}-item-link`]:{color:e.colorTextDisabled,cursor:\"not-allowed\"}}},[`&${t}-disabled`]:{cursor:\"not-allowed\",[`&${t}-mini`]:{[`\n          &:hover ${t}-item:not(${t}-item-active),\n          &:active ${t}-item:not(${t}-item-active),\n          &:hover ${t}-item-link,\n          &:active ${t}-item-link\n        `]:{backgroundColor:\"transparent\"}},[`${t}-item`]:{cursor:\"not-allowed\",\"&:hover, &:active\":{backgroundColor:\"transparent\"},a:{color:e.colorTextDisabled,backgroundColor:\"transparent\",border:\"none\",cursor:\"not-allowed\"},\"&-active\":{borderColor:e.colorBorder,backgroundColor:e.paginationItemDisabledBgActive,\"&:hover, &:active\":{backgroundColor:e.paginationItemDisabledBgActive},a:{color:e.paginationItemDisabledColorActive}}},[`${t}-item-link`]:{color:e.colorTextDisabled,cursor:\"not-allowed\",\"&:hover, &:active\":{backgroundColor:\"transparent\"},[`${t}-simple&`]:{backgroundColor:\"transparent\",\"&:hover, &:active\":{backgroundColor:\"transparent\"}}},[`${t}-simple-pager`]:{color:e.colorTextDisabled},[`${t}-jump-prev, ${t}-jump-next`]:{[`${t}-item-link-icon`]:{opacity:0},[`${t}-item-ellipsis`]:{opacity:1}}},[`&${t}-simple`]:{[`${t}-prev, ${t}-next`]:{[`&${t}-disabled ${t}-item-link`]:{\"&:hover, &:active\":{backgroundColor:\"transparent\"}}}}}},jz=e=>{const{componentCls:t}=e;return{[`&${t}-mini ${t}-total-text, &${t}-mini ${t}-simple-pager`]:{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`},[`&${t}-mini ${t}-item`]:{minWidth:e.paginationItemSizeSM,height:e.paginationItemSizeSM,margin:0,lineHeight:`${e.paginationItemSizeSM-2}px`},[`&${t}-mini ${t}-item:not(${t}-item-active)`]:{backgroundColor:\"transparent\",borderColor:\"transparent\",\"&:hover\":{backgroundColor:e.colorBgTextHover},\"&:active\":{backgroundColor:e.colorBgTextActive}},[`&${t}-mini ${t}-prev, &${t}-mini ${t}-next`]:{minWidth:e.paginationItemSizeSM,height:e.paginationItemSizeSM,margin:0,lineHeight:`${e.paginationItemSizeSM}px`,[`&:hover ${t}-item-link`]:{backgroundColor:e.colorBgTextHover},[`&:active ${t}-item-link`]:{backgroundColor:e.colorBgTextActive},[`&${t}-disabled:hover ${t}-item-link`]:{backgroundColor:\"transparent\"}},[`\n    &${t}-mini ${t}-prev ${t}-item-link,\n    &${t}-mini ${t}-next ${t}-item-link\n    `]:{backgroundColor:\"transparent\",borderColor:\"transparent\",\"&::after\":{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`}},[`&${t}-mini ${t}-jump-prev, &${t}-mini ${t}-jump-next`]:{height:e.paginationItemSizeSM,marginInlineEnd:0,lineHeight:`${e.paginationItemSizeSM}px`},[`&${t}-mini ${t}-options`]:{marginInlineStart:e.paginationMiniOptionsMarginInlineStart,\"&-size-changer\":{top:e.paginationMiniOptionsSizeChangerTop},\"&-quick-jumper\":{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`,input:h(h({},mg(e)),{width:e.paginationMiniQuickJumperInputWidth,height:e.controlHeightSM})}}}},Wz=e=>{const{componentCls:t}=e;return{[`\n    &${t}-simple ${t}-prev,\n    &${t}-simple ${t}-next\n    `]:{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`,verticalAlign:\"top\",[`${t}-item-link`]:{height:e.paginationItemSizeSM,backgroundColor:\"transparent\",border:0,\"&:hover\":{backgroundColor:e.colorBgTextHover},\"&:active\":{backgroundColor:e.colorBgTextActive},\"&::after\":{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`}}},[`&${t}-simple ${t}-simple-pager`]:{display:\"inline-block\",height:e.paginationItemSizeSM,marginInlineEnd:e.marginXS,input:{boxSizing:\"border-box\",height:\"100%\",marginInlineEnd:e.marginXS,padding:`0 ${e.paginationItemPaddingInline}px`,textAlign:\"center\",backgroundColor:e.paginationItemInputBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,outline:\"none\",transition:`border-color ${e.motionDurationMid}`,color:\"inherit\",\"&:hover\":{borderColor:e.colorPrimary},\"&:focus\":{borderColor:e.colorPrimaryHover,boxShadow:`${e.inputOutlineOffset}px 0 ${e.controlOutlineWidth}px ${e.controlOutline}`},\"&[disabled]\":{color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,cursor:\"not-allowed\"}}}}},Vz=e=>{const{componentCls:t}=e;return{[`${t}-jump-prev, ${t}-jump-next`]:{outline:0,[`${t}-item-container`]:{position:\"relative\",[`${t}-item-link-icon`]:{color:e.colorPrimary,fontSize:e.fontSizeSM,opacity:0,transition:`all ${e.motionDurationMid}`,\"&-svg\":{top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,margin:\"auto\"}},[`${t}-item-ellipsis`]:{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,display:\"block\",margin:\"auto\",color:e.colorTextDisabled,fontFamily:\"Arial, Helvetica, sans-serif\",letterSpacing:e.paginationEllipsisLetterSpacing,textAlign:\"center\",textIndent:e.paginationEllipsisTextIndent,opacity:1,transition:`all ${e.motionDurationMid}`}},\"&:hover\":{[`${t}-item-link-icon`]:{opacity:1},[`${t}-item-ellipsis`]:{opacity:0}},\"&:focus-visible\":h({[`${t}-item-link-icon`]:{opacity:1},[`${t}-item-ellipsis`]:{opacity:0}},fl(e))},[`\n    ${t}-prev,\n    ${t}-jump-prev,\n    ${t}-jump-next\n    `]:{marginInlineEnd:e.marginXS},[`\n    ${t}-prev,\n    ${t}-next,\n    ${t}-jump-prev,\n    ${t}-jump-next\n    `]:{display:\"inline-block\",minWidth:e.paginationItemSize,height:e.paginationItemSize,color:e.colorText,fontFamily:e.paginationFontFamily,lineHeight:`${e.paginationItemSize}px`,textAlign:\"center\",verticalAlign:\"middle\",listStyle:\"none\",borderRadius:e.borderRadius,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`},[`${t}-prev, ${t}-next`]:{fontFamily:\"Arial, Helvetica, sans-serif\",outline:0,button:{color:e.colorText,cursor:\"pointer\",userSelect:\"none\"},[`${t}-item-link`]:{display:\"block\",width:\"100%\",height:\"100%\",padding:0,fontSize:e.fontSizeSM,textAlign:\"center\",backgroundColor:\"transparent\",border:`${e.lineWidth}px ${e.lineType} transparent`,borderRadius:e.borderRadius,outline:\"none\",transition:`all ${e.motionDurationMid}`},[`&:focus-visible ${t}-item-link`]:h({},fl(e)),[`&:hover ${t}-item-link`]:{backgroundColor:e.colorBgTextHover},[`&:active ${t}-item-link`]:{backgroundColor:e.colorBgTextActive},[`&${t}-disabled:hover`]:{[`${t}-item-link`]:{backgroundColor:\"transparent\"}}},[`${t}-slash`]:{marginInlineEnd:e.paginationSlashMarginInlineEnd,marginInlineStart:e.paginationSlashMarginInlineStart},[`${t}-options`]:{display:\"inline-block\",marginInlineStart:e.margin,verticalAlign:\"middle\",\"&-size-changer.-select\":{display:\"inline-block\",width:\"auto\"},\"&-quick-jumper\":{display:\"inline-block\",height:e.controlHeight,marginInlineStart:e.marginXS,lineHeight:`${e.controlHeight}px`,verticalAlign:\"top\",input:h(h({},Rr(e)),{width:e.controlHeightLG*1.25,height:e.controlHeight,boxSizing:\"border-box\",margin:0,marginInlineStart:e.marginXS,marginInlineEnd:e.marginXS})}}}},Kz=e=>{const{componentCls:t}=e;return{[`${t}-item`]:h(h({display:\"inline-block\",minWidth:e.paginationItemSize,height:e.paginationItemSize,marginInlineEnd:e.marginXS,fontFamily:e.paginationFontFamily,lineHeight:`${e.paginationItemSize-2}px`,textAlign:\"center\",verticalAlign:\"middle\",listStyle:\"none\",backgroundColor:\"transparent\",border:`${e.lineWidth}px ${e.lineType} transparent`,borderRadius:e.borderRadius,outline:0,cursor:\"pointer\",userSelect:\"none\",a:{display:\"block\",padding:`0 ${e.paginationItemPaddingInline}px`,color:e.colorText,transition:\"none\",\"&:hover\":{textDecoration:\"none\"}},[`&:not(${t}-item-active)`]:{\"&:hover\":{transition:`all ${e.motionDurationMid}`,backgroundColor:e.colorBgTextHover},\"&:active\":{backgroundColor:e.colorBgTextActive}}},pl(e)),{\"&-active\":{fontWeight:e.paginationFontWeightActive,backgroundColor:e.paginationItemBgActive,borderColor:e.colorPrimary,a:{color:e.colorPrimary},\"&:hover\":{borderColor:e.colorPrimaryHover},\"&:hover a\":{color:e.colorPrimaryHover}}})}},Gz=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h(h(h(h({},qe(e)),{\"ul, ol\":{margin:0,padding:0,listStyle:\"none\"},\"&::after\":{display:\"block\",clear:\"both\",height:0,overflow:\"hidden\",visibility:\"hidden\",content:'\"\"'},[`${t}-total-text`]:{display:\"inline-block\",height:e.paginationItemSize,marginInlineEnd:e.marginXS,lineHeight:`${e.paginationItemSize-2}px`,verticalAlign:\"middle\"}}),Kz(e)),Vz(e)),Wz(e)),jz(e)),Hz(e)),{[`@media only screen and (max-width: ${e.screenLG}px)`]:{[`${t}-item`]:{\"&-after-jump-prev, &-before-jump-next\":{display:\"none\"}}},[`@media only screen and (max-width: ${e.screenSM}px)`]:{[`${t}-options`]:{display:\"none\"}}}),[`&${e.componentCls}-rtl`]:{direction:\"rtl\"}}},Xz=e=>{const{componentCls:t}=e;return{[`${t}${t}-disabled`]:{\"&, &:hover\":{[`${t}-item-link`]:{borderColor:e.colorBorder}},\"&:focus-visible\":{[`${t}-item-link`]:{borderColor:e.colorBorder}},[`${t}-item, ${t}-item-link`]:{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,[`&:hover:not(${t}-item-active)`]:{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,a:{color:e.colorTextDisabled}},[`&${t}-item-active`]:{backgroundColor:e.paginationItemDisabledBgActive}},[`${t}-prev, ${t}-next`]:{\"&:hover button\":{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,color:e.colorTextDisabled},[`${t}-item-link`]:{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder}}},[t]:{[`${t}-prev, ${t}-next`]:{\"&:hover button\":{borderColor:e.colorPrimaryHover,backgroundColor:e.paginationItemBg},[`${t}-item-link`]:{backgroundColor:e.paginationItemLinkBg,borderColor:e.colorBorder},[`&:hover ${t}-item-link`]:{borderColor:e.colorPrimary,backgroundColor:e.paginationItemBg,color:e.colorPrimary},[`&${t}-disabled`]:{[`${t}-item-link`]:{borderColor:e.colorBorder,color:e.colorTextDisabled}}},[`${t}-item`]:{backgroundColor:e.paginationItemBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,[`&:hover:not(${t}-item-active)`]:{borderColor:e.colorPrimary,backgroundColor:e.paginationItemBg,a:{color:e.colorPrimary}},\"&-active\":{borderColor:e.colorPrimary}}}}},Uz=Xe(\"Pagination\",e=>{const t=Le(e,{paginationItemSize:e.controlHeight,paginationFontFamily:e.fontFamily,paginationItemBg:e.colorBgContainer,paginationItemBgActive:e.colorBgContainer,paginationFontWeightActive:e.fontWeightStrong,paginationItemSizeSM:e.controlHeightSM,paginationItemInputBg:e.colorBgContainer,paginationMiniOptionsSizeChangerTop:0,paginationItemDisabledBgActive:e.controlItemBgActiveDisabled,paginationItemDisabledColorActive:e.colorTextDisabled,paginationItemLinkBg:e.colorBgContainer,inputOutlineOffset:\"0 0\",paginationMiniOptionsMarginInlineStart:e.marginXXS/2,paginationMiniQuickJumperInputWidth:e.controlHeightLG*1.1,paginationItemPaddingInline:e.marginXXS*1.5,paginationEllipsisLetterSpacing:e.marginXXS/2,paginationSlashMarginInlineStart:e.marginXXS,paginationSlashMarginInlineEnd:e.marginSM,paginationEllipsisTextIndent:\"0.13em\"},kr(e));return[Gz(t),e.wireframe&&Xz(t)]});var Yz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const qz=()=>({total:Number,defaultCurrent:Number,disabled:ye(),current:Number,defaultPageSize:Number,pageSize:Number,hideOnSinglePage:ye(),showSizeChanger:ye(),pageSizeOptions:ct(),buildOptionText:de(),showQuickJumper:Fe([Boolean,Object]),showTotal:de(),size:ke(),simple:ye(),locale:Object,prefixCls:String,selectPrefixCls:String,totalBoundaryShowSizeChanger:Number,selectComponentClass:String,itemRender:de(),role:String,responsive:Boolean,showLessItems:ye(),onChange:de(),onShowSizeChange:de(),\"onUpdate:current\":de(),\"onUpdate:pageSize\":de()}),Zz=ne({compatConfig:{MODE:3},name:\"APagination\",inheritAttrs:!1,props:qz(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,configProvider:r,direction:a,size:i}=Te(\"pagination\",e),[s,c]=Uz(l),u=I(()=>r.getPrefixCls(\"select\",e.selectPrefixCls)),d=Ma(),[p]=$o(\"Pagination\",tC,Ve(e,\"locale\")),m=g=>{const v=f(\"span\",{class:`${g}-item-ellipsis`},[bt(\"•••\")]),y=f(\"button\",{class:`${g}-item-link`,type:\"button\",tabindex:-1},[a.value===\"rtl\"?f(Ao,null,null):f(Hl,null,null)]),b=f(\"button\",{class:`${g}-item-link`,type:\"button\",tabindex:-1},[a.value===\"rtl\"?f(Hl,null,null):f(Ao,null,null)]),S=f(\"a\",{rel:\"nofollow\",class:`${g}-item-link`},[f(\"div\",{class:`${g}-item-container`},[a.value===\"rtl\"?f(dh,{class:`${g}-item-link-icon`},null):f(fh,{class:`${g}-item-link-icon`},null),v])]),$=f(\"a\",{rel:\"nofollow\",class:`${g}-item-link`},[f(\"div\",{class:`${g}-item-container`},[a.value===\"rtl\"?f(fh,{class:`${g}-item-link-icon`},null):f(dh,{class:`${g}-item-link-icon`},null),v])]);return{prevIcon:y,nextIcon:b,jumpPrevIcon:S,jumpNextIcon:$}};return()=>{var g;const{itemRender:v=n.itemRender,buildOptionText:y=n.buildOptionText,selectComponentClass:b,responsive:S}=e,$=Yz(e,[\"itemRender\",\"buildOptionText\",\"selectComponentClass\",\"responsive\"]),w=i.value===\"small\"||!!(!((g=d.value)===null||g===void 0)&&g.xs&&!i.value&&S),C=h(h(h(h(h({},$),m(l.value)),{prefixCls:l.value,selectPrefixCls:u.value,selectComponentClass:b||(w?Dz:Rz),locale:p.value,buildOptionText:y}),o),{class:re({[`${l.value}-mini`]:w,[`${l.value}-rtl`]:a.value===\"rtl\"},o.class,c.value),itemRender:v});return s(f(zz,C,null))}}}),wd=Dt(Zz),Qz=()=>({avatar:W.any,description:W.any,prefixCls:String,title:W.any}),x_=ne({compatConfig:{MODE:3},name:\"AListItemMeta\",props:Qz(),displayName:\"AListItemMeta\",__ANT_LIST_ITEM_META:!0,slots:Object,setup(e,t){let{slots:n}=t;const{prefixCls:o}=Te(\"list\",e);return()=>{var l,r,a,i,s,c;const u=`${o.value}-item-meta`,d=(l=e.title)!==null&&l!==void 0?l:(r=n.title)===null||r===void 0?void 0:r.call(n),p=(a=e.description)!==null&&a!==void 0?a:(i=n.description)===null||i===void 0?void 0:i.call(n),m=(s=e.avatar)!==null&&s!==void 0?s:(c=n.avatar)===null||c===void 0?void 0:c.call(n),g=f(\"div\",{class:`${o.value}-item-meta-content`},[d&&f(\"h4\",{class:`${o.value}-item-meta-title`},[d]),p&&f(\"div\",{class:`${o.value}-item-meta-description`},[p])]);return f(\"div\",{class:u},[m&&f(\"div\",{class:`${o.value}-item-meta-avatar`},[m]),(d||p)&&g])}}}),w_=Symbol(\"ListContextKey\");var Jz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const eH=()=>({prefixCls:String,extra:W.any,actions:W.array,grid:Object,colStyle:{type:Object,default:void 0}}),__=ne({compatConfig:{MODE:3},name:\"AListItem\",inheritAttrs:!1,Meta:x_,props:eH(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{itemLayout:l,grid:r}=nt(w_,{grid:Z(),itemLayout:Z()}),{prefixCls:a}=Te(\"list\",e),i=()=>{var c;const u=((c=n.default)===null||c===void 0?void 0:c.call(n))||[];let d;return u.forEach(p=>{nE(p)&&!Ri(p)&&(d=!0)}),d&&u.length>1},s=()=>{var c,u;const d=(c=e.extra)!==null&&c!==void 0?c:(u=n.extra)===null||u===void 0?void 0:u.call(n);return l.value===\"vertical\"?!!d:!i()};return()=>{var c,u,d,p,m;const{class:g}=o,v=Jz(o,[\"class\"]),y=a.value,b=(c=e.extra)!==null&&c!==void 0?c:(u=n.extra)===null||u===void 0?void 0:u.call(n),S=(d=n.default)===null||d===void 0?void 0:d.call(n);let $=(p=e.actions)!==null&&p!==void 0?p:xt((m=n.actions)===null||m===void 0?void 0:m.call(n));$=$&&!Array.isArray($)?[$]:$;const w=$&&$.length>0&&f(\"ul\",{class:`${y}-item-action`,key:\"actions\"},[$.map((x,P)=>f(\"li\",{key:`${y}-item-action-${P}`},[x,P!==$.length-1&&f(\"em\",{class:`${y}-item-action-split`},null)]))]),C=r.value?\"div\":\"li\",_=f(C,A(A({},v),{},{class:re(`${y}-item`,{[`${y}-item-no-flex`]:!s()},g)}),{default:()=>[l.value===\"vertical\"&&b?[f(\"div\",{class:`${y}-item-main`,key:\"content\"},[S,w]),f(\"div\",{class:`${y}-item-extra`,key:\"extra\"},[b])]:[S,w,ft(b,{key:\"extra\"})]]});return r.value?f(yd,{flex:1,style:e.colStyle},{default:()=>[_]}):_}}}),tH=e=>{const{listBorderedCls:t,componentCls:n,paddingLG:o,margin:l,padding:r,listItemPaddingSM:a,marginLG:i,borderRadiusLG:s}=e;return{[`${t}`]:{border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:s,[`${n}-header,${n}-footer,${n}-item`]:{paddingInline:o},[`${n}-pagination`]:{margin:`${l}px ${i}px`}},[`${t}${n}-sm`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:a}},[`${t}${n}-lg`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:`${r}px ${o}px`}}}},nH=e=>{const{componentCls:t,screenSM:n,screenMD:o,marginLG:l,marginSM:r,margin:a}=e;return{[`@media screen and (max-width:${o})`]:{[`${t}`]:{[`${t}-item`]:{[`${t}-item-action`]:{marginInlineStart:l}}},[`${t}-vertical`]:{[`${t}-item`]:{[`${t}-item-extra`]:{marginInlineStart:l}}}},[`@media screen and (max-width: ${n})`]:{[`${t}`]:{[`${t}-item`]:{flexWrap:\"wrap\",[`${t}-action`]:{marginInlineStart:r}}},[`${t}-vertical`]:{[`${t}-item`]:{flexWrap:\"wrap-reverse\",[`${t}-item-main`]:{minWidth:e.contentWidth},[`${t}-item-extra`]:{margin:`auto auto ${a}px`}}}}}},oH=e=>{const{componentCls:t,antCls:n,controlHeight:o,minHeight:l,paddingSM:r,marginLG:a,padding:i,listItemPadding:s,colorPrimary:c,listItemPaddingSM:u,listItemPaddingLG:d,paddingXS:p,margin:m,colorText:g,colorTextDescription:v,motionDurationSlow:y,lineWidth:b}=e;return{[`${t}`]:h(h({},qe(e)),{position:\"relative\",\"*\":{outline:\"none\"},[`${t}-header, ${t}-footer`]:{background:\"transparent\",paddingBlock:r},[`${t}-pagination`]:{marginBlockStart:a,textAlign:\"end\",[`${n}-pagination-options`]:{textAlign:\"start\"}},[`${t}-spin`]:{minHeight:l,textAlign:\"center\"},[`${t}-items`]:{margin:0,padding:0,listStyle:\"none\"},[`${t}-item`]:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",padding:s,color:g,[`${t}-item-meta`]:{display:\"flex\",flex:1,alignItems:\"flex-start\",maxWidth:\"100%\",[`${t}-item-meta-avatar`]:{marginInlineEnd:i},[`${t}-item-meta-content`]:{flex:\"1 0\",width:0,color:g},[`${t}-item-meta-title`]:{marginBottom:e.marginXXS,color:g,fontSize:e.fontSize,lineHeight:e.lineHeight,\"> a\":{color:g,transition:`all ${y}`,\"&:hover\":{color:c}}},[`${t}-item-meta-description`]:{color:v,fontSize:e.fontSize,lineHeight:e.lineHeight}},[`${t}-item-action`]:{flex:\"0 0 auto\",marginInlineStart:e.marginXXL,padding:0,fontSize:0,listStyle:\"none\",\"& > li\":{position:\"relative\",display:\"inline-block\",padding:`0 ${p}px`,color:v,fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:\"center\",\"&:first-child\":{paddingInlineStart:0}},[`${t}-item-action-split`]:{position:\"absolute\",insetBlockStart:\"50%\",insetInlineEnd:0,width:b,height:Math.ceil(e.fontSize*e.lineHeight)-e.marginXXS*2,transform:\"translateY(-50%)\",backgroundColor:e.colorSplit}}},[`${t}-empty`]:{padding:`${i}px 0`,color:v,fontSize:e.fontSizeSM,textAlign:\"center\"},[`${t}-empty-text`]:{padding:i,color:e.colorTextDisabled,fontSize:e.fontSize,textAlign:\"center\"},[`${t}-item-no-flex`]:{display:\"block\"}}),[`${t}-grid ${n}-col > ${t}-item`]:{display:\"block\",maxWidth:\"100%\",marginBlockEnd:m,paddingBlock:0,borderBlockEnd:\"none\"},[`${t}-vertical ${t}-item`]:{alignItems:\"initial\",[`${t}-item-main`]:{display:\"block\",flex:1},[`${t}-item-extra`]:{marginInlineStart:a},[`${t}-item-meta`]:{marginBlockEnd:i,[`${t}-item-meta-title`]:{marginBlockEnd:r,color:g,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}},[`${t}-item-action`]:{marginBlockStart:i,marginInlineStart:\"auto\",\"> li\":{padding:`0 ${i}px`,\"&:first-child\":{paddingInlineStart:0}}}},[`${t}-split ${t}-item`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"&:last-child\":{borderBlockEnd:\"none\"}},[`${t}-split ${t}-header`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-split${t}-empty ${t}-footer`]:{borderTop:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-loading ${t}-spin-nested-loading`]:{minHeight:o},[`${t}-split${t}-something-after-last-item ${n}-spin-container > ${t}-items > ${t}-item:last-child`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-lg ${t}-item`]:{padding:d},[`${t}-sm ${t}-item`]:{padding:u},[`${t}:not(${t}-vertical)`]:{[`${t}-item-no-flex`]:{[`${t}-item-action`]:{float:\"right\"}}}}},lH=Xe(\"List\",e=>{const t=Le(e,{listBorderedCls:`${e.componentCls}-bordered`,minHeight:e.controlHeightLG,listItemPadding:`${e.paddingContentVertical}px ${e.paddingContentHorizontalLG}px`,listItemPaddingSM:`${e.paddingContentVerticalSM}px ${e.paddingContentHorizontal}px`,listItemPaddingLG:`${e.paddingContentVerticalLG}px ${e.paddingContentHorizontalLG}px`});return[oH(t),tH(t),nH(t)]},{contentWidth:220}),rH=()=>({bordered:ye(),dataSource:ct(),extra:$n(),grid:De(),itemLayout:String,loading:Fe([Boolean,Object]),loadMore:$n(),pagination:Fe([Boolean,Object]),prefixCls:String,rowKey:Fe([String,Number,Function]),renderItem:de(),size:String,split:ye(),header:$n(),footer:$n(),locale:De()}),Pl=ne({compatConfig:{MODE:3},name:\"AList\",inheritAttrs:!1,Item:__,props:Je(rH(),{dataSource:[],bordered:!1,split:!0,loading:!1,pagination:!1}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;var l,r;et(w_,{grid:Ve(e,\"grid\"),itemLayout:Ve(e,\"itemLayout\")});const a={current:1,total:0},{prefixCls:i,direction:s,renderEmpty:c}=Te(\"list\",e),[u,d]=lH(i),p=I(()=>e.pagination&&typeof e.pagination==\"object\"?e.pagination:{}),m=Z((l=p.value.defaultCurrent)!==null&&l!==void 0?l:1),g=Z((r=p.value.defaultPageSize)!==null&&r!==void 0?r:10);pe(p,()=>{\"current\"in p.value&&(m.value=p.value.current),\"pageSize\"in p.value&&(g.value=p.value.pageSize)});const v=[],y=D=>(z,T)=>{m.value=z,g.value=T,p.value[D]&&p.value[D](z,T)},b=y(\"onChange\"),S=y(\"onShowSizeChange\"),$=I(()=>typeof e.loading==\"boolean\"?{spinning:e.loading}:e.loading),w=I(()=>$.value&&$.value.spinning),C=I(()=>{let D=\"\";switch(e.size){case\"large\":D=\"lg\";break;case\"small\":D=\"sm\";break}return D}),_=I(()=>({[`${i.value}`]:!0,[`${i.value}-vertical`]:e.itemLayout===\"vertical\",[`${i.value}-${C.value}`]:C.value,[`${i.value}-split`]:e.split,[`${i.value}-bordered`]:e.bordered,[`${i.value}-loading`]:w.value,[`${i.value}-grid`]:!!e.grid,[`${i.value}-rtl`]:s.value===\"rtl\"})),x=I(()=>{const D=h(h(h({},a),{total:e.dataSource.length,current:m.value,pageSize:g.value}),e.pagination||{}),z=Math.ceil(D.total/D.pageSize);return D.current>z&&(D.current=z),D}),P=I(()=>{let D=[...e.dataSource];return e.pagination&&e.dataSource.length>(x.value.current-1)*x.value.pageSize&&(D=[...e.dataSource].splice((x.value.current-1)*x.value.pageSize,x.value.pageSize)),D}),E=Ma(),M=qn(()=>{for(let D=0;D<il.length;D+=1){const z=il[D];if(E.value[z])return z}}),O=I(()=>{if(!e.grid)return;const D=M.value&&e.grid[M.value]?e.grid[M.value]:e.grid.column;if(D)return{width:`${100/D}%`,maxWidth:`${100/D}%`}}),R=(D,z)=>{var T;const k=(T=e.renderItem)!==null&&T!==void 0?T:n.renderItem;if(!k)return null;let B;const L=typeof e.rowKey;return L===\"function\"?B=e.rowKey(D):L===\"string\"||L===\"number\"?B=D[e.rowKey]:B=D.key,B||(B=`list-item-${z}`),v[z]=B,k({item:D,index:z})};return()=>{var D,z,T,k,B,L,N,F;const j=(D=e.loadMore)!==null&&D!==void 0?D:(z=n.loadMore)===null||z===void 0?void 0:z.call(n),H=(T=e.footer)!==null&&T!==void 0?T:(k=n.footer)===null||k===void 0?void 0:k.call(n),K=(B=e.header)!==null&&B!==void 0?B:(L=n.header)===null||L===void 0?void 0:L.call(n),G=xt((N=n.default)===null||N===void 0?void 0:N.call(n)),V=!!(j||e.pagination||H),q=re(h(h({},_.value),{[`${i.value}-something-after-last-item`]:V}),o.class,d.value),Q=e.pagination?f(\"div\",{class:`${i.value}-pagination`},[f(wd,A(A({},x.value),{},{onChange:b,onShowSizeChange:S}),null)]):null;let oe=w.value&&f(\"div\",{style:{minHeight:\"53px\"}},null);if(P.value.length>0){v.length=0;const Y=P.value.map((ce,ue)=>R(ce,ue)),J=Y.map((ce,ue)=>f(\"div\",{key:v[ue],style:O.value},[ce]));oe=e.grid?f(Ig,{gutter:e.grid.gutter},{default:()=>[J]}):f(\"ul\",{class:`${i.value}-items`},[Y])}else!G.length&&!w.value&&(oe=f(\"div\",{class:`${i.value}-empty-text`},[((F=e.locale)===null||F===void 0?void 0:F.emptyText)||c(\"List\")]));const le=x.value.position||\"bottom\";return u(f(\"div\",A(A({},o),{},{class:q}),[(le===\"top\"||le===\"both\")&&Q,K&&f(\"div\",{class:`${i.value}-header`},[K]),f(Ko,$.value,{default:()=>[oe,G]}),H&&f(\"div\",{class:`${i.value}-footer`},[H]),j||(le===\"bottom\"||le===\"both\")&&Q]))}}});Pl.install=function(e){return e.component(Pl.name,Pl),e.component(Pl.Item.name,Pl.Item),e.component(Pl.Item.Meta.name,Pl.Item.Meta),e};function aH(e){const{selectionStart:t}=e;return e.value.slice(0,t)}function iH(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";return(Array.isArray(t)?t:[t]).reduce((o,l)=>{const r=e.lastIndexOf(l);return r>o.location?{location:r,prefix:l}:o},{location:-1,prefix:\"\"})}function By(e){return(e||\"\").toLowerCase()}function sH(e,t,n){const o=e[0];if(!o||o===n)return e;let l=e;const r=t.length;for(let a=0;a<r;a+=1)if(By(l[a])!==By(t[a])){l=l.slice(a);break}else a===r-1&&(l=l.slice(r));return l}function cH(e,t){const{measureLocation:n,prefix:o,targetText:l,selectionStart:r,split:a}=t;let i=e.slice(0,n);i[i.length-a.length]===a&&(i=i.slice(0,i.length-a.length)),i&&(i=`${i}${a}`);let s=sH(e.slice(r),l.slice(r-n-o.length),a);s.slice(0,a.length)===a&&(s=s.slice(a.length));const c=`${i}${o}${l}${a}`;return{text:`${c}${s}`,selectionLocation:c.length}}function uH(e,t){e.setSelectionRange(t,t),e.blur(),e.focus()}function dH(e,t){const{split:n}=t;return!n||e.indexOf(n)===-1}function fH(e,t){let{value:n=\"\"}=t;const o=e.toLowerCase();return n.toLowerCase().indexOf(o)!==-1}const I_=Symbol(\"MentionsContextKey\");function pH(){}const mH=ne({compatConfig:{MODE:3},name:\"DropdownMenu\",props:{prefixCls:String,options:{type:Array,default:()=>[]}},setup(e,t){let{slots:n}=t;const{activeIndex:o,setActiveIndex:l,selectOption:r,onFocus:a=pH,loading:i}=nt(I_,{activeIndex:ee(),loading:ee(!1)});let s;const c=u=>{clearTimeout(s),s=setTimeout(()=>{a(u)})};return ot(()=>{clearTimeout(s)}),()=>{var u;const{prefixCls:d,options:p}=e,m=p[o.value]||{};return f(Ht,{prefixCls:`${d}-menu`,activeKey:m.value,onSelect:g=>{let{key:v}=g;const y=p.find(b=>{let{value:S}=b;return S===v});r(y)},onMousedown:c},{default:()=>[!i.value&&p.map((g,v)=>{var y,b;const{value:S,disabled:$,label:w=g.value,class:C,style:_}=g;return f(Eo,{key:S,disabled:$,onMouseenter:()=>{l(v)},class:C,style:_},{default:()=>[(b=(y=n.option)===null||y===void 0?void 0:y.call(n,g))!==null&&b!==void 0?b:typeof w==\"function\"?w(g):w]})}),!i.value&&p.length===0?f(Eo,{key:\"notFoundContent\",disabled:!0},{default:()=>[(u=n.notFoundContent)===null||u===void 0?void 0:u.call(n)]}):null,i.value&&f(Eo,{key:\"loading\",disabled:!0},{default:()=>[f(Ko,{size:\"small\"},null)]})]})}}}),vH={bottomRight:{points:[\"tl\",\"br\"],offset:[0,4],overflow:{adjustX:0,adjustY:1}},bottomLeft:{points:[\"tr\",\"bl\"],offset:[0,4],overflow:{adjustX:0,adjustY:1}},topRight:{points:[\"bl\",\"tr\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topLeft:{points:[\"br\",\"tl\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}},gH=ne({compatConfig:{MODE:3},name:\"KeywordTrigger\",props:{loading:{type:Boolean,default:void 0},options:{type:Array,default:()=>[]},prefixCls:String,placement:String,visible:{type:Boolean,default:void 0},transitionName:String,getPopupContainer:Function,direction:String,dropdownClassName:String},setup(e,t){let{slots:n}=t;const o=()=>`${e.prefixCls}-dropdown`,l=()=>{const{options:a}=e;return f(mH,{prefixCls:o(),options:a},{notFoundContent:n.notFoundContent,option:n.option})},r=I(()=>{const{placement:a,direction:i}=e;let s=\"topRight\";return i===\"rtl\"?s=a===\"top\"?\"topLeft\":\"bottomLeft\":s=a===\"top\"?\"topRight\":\"bottomRight\",s});return()=>{const{visible:a,transitionName:i,getPopupContainer:s}=e;return f(Mr,{prefixCls:o(),popupVisible:a,popup:l(),popupClassName:e.dropdownClassName,popupPlacement:r.value,popupTransitionName:i,builtinPlacements:vH,getPopupContainer:s},{default:n.default})}}}),hH=hn(\"top\",\"bottom\"),P_={autofocus:{type:Boolean,default:void 0},prefix:W.oneOfType([W.string,W.arrayOf(W.string)]),prefixCls:String,value:String,disabled:{type:Boolean,default:void 0},split:String,transitionName:String,placement:W.oneOf(hH),character:W.any,characterRender:Function,filterOption:{type:[Boolean,Function]},validateSearch:Function,getPopupContainer:{type:Function},options:ct(),loading:{type:Boolean,default:void 0},rows:[Number,String],direction:{type:String}},T_=h(h({},P_),{dropdownClassName:String}),O_={prefix:\"@\",split:\" \",rows:1,validateSearch:dH,filterOption:()=>fH};Je(T_,O_);var Ly=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function Fy(){}const bH=ne({compatConfig:{MODE:3},name:\"Mentions\",inheritAttrs:!1,props:Je(T_,O_),emits:[\"change\",\"select\",\"search\",\"focus\",\"blur\",\"pressenter\"],setup(e,t){let{emit:n,attrs:o,expose:l,slots:r}=t;const a=Z(null),i=Z(null),s=Z(),c=gt({value:e.value||\"\",measuring:!1,measureLocation:0,measureText:null,measurePrefix:\"\",activeIndex:0,isFocus:!1});ze(()=>{c.value=e.value});const u=O=>{n(\"change\",O)},d=O=>{let{target:{value:R}}=O;u(R)},p=(O,R,D)=>{h(c,{measuring:!0,measureText:O,measurePrefix:R,measureLocation:D,activeIndex:0})},m=O=>{h(c,{measuring:!1,measureLocation:0,measureText:null}),O?.()},g=O=>{const{which:R}=O;if(c.measuring){if(R===we.UP||R===we.DOWN){const D=P.value.length,z=R===we.UP?-1:1,T=(c.activeIndex+z+D)%D;c.activeIndex=T,O.preventDefault()}else if(R===we.ESC)m();else if(R===we.ENTER){if(O.preventDefault(),!P.value.length){m();return}const D=P.value[c.activeIndex];C(D)}}},v=O=>{const{key:R,which:D}=O,{measureText:z,measuring:T}=c,{prefix:k,validateSearch:B}=e,L=O.target;if(L.composing)return;const N=aH(L),{location:F,prefix:j}=iH(N,k);if([we.ESC,we.UP,we.DOWN,we.ENTER].indexOf(D)===-1)if(F!==-1){const H=N.slice(F+j.length),K=B(H,e),G=!!x(H).length;K?(R===j||R===\"Shift\"||T||H!==z&&G)&&p(H,j,F):T&&m(),K&&n(\"search\",H,j)}else T&&m()},y=O=>{c.measuring||n(\"pressenter\",O)},b=O=>{$(O)},S=O=>{w(O)},$=O=>{clearTimeout(s.value);const{isFocus:R}=c;!R&&O&&n(\"focus\",O),c.isFocus=!0},w=O=>{s.value=setTimeout(()=>{c.isFocus=!1,m(),n(\"blur\",O)},100)},C=O=>{const{split:R}=e,{value:D=\"\"}=O,{text:z,selectionLocation:T}=cH(c.value,{measureLocation:c.measureLocation,targetText:D,prefix:c.measurePrefix,selectionStart:i.value.getSelectionStart(),split:R});u(z),m(()=>{uH(i.value.input,T)}),n(\"select\",O,c.measurePrefix)},_=O=>{c.activeIndex=O},x=O=>{const R=O||c.measureText||\"\",{filterOption:D}=e;return e.options.filter(T=>D?D(R,T):!0)},P=I(()=>x());return l({blur:()=>{i.value.blur()},focus:()=>{i.value.focus()}}),et(I_,{activeIndex:Ve(c,\"activeIndex\"),setActiveIndex:_,selectOption:C,onFocus:$,onBlur:w,loading:Ve(e,\"loading\")}),Wn(()=>{it(()=>{c.measuring&&(a.value.scrollTop=i.value.getScrollTop())})}),()=>{const{measureLocation:O,measurePrefix:R,measuring:D}=c,{prefixCls:z,placement:T,transitionName:k,getPopupContainer:B,direction:L}=e,N=Ly(e,[\"prefixCls\",\"placement\",\"transitionName\",\"getPopupContainer\",\"direction\"]),{class:F,style:j}=o,H=Ly(o,[\"class\",\"style\"]),K=lt(N,[\"value\",\"prefix\",\"split\",\"validateSearch\",\"filterOption\",\"options\",\"loading\"]),G=h(h(h({},K),H),{onChange:Fy,onSelect:Fy,value:c.value,onInput:d,onBlur:S,onKeydown:g,onKeyup:v,onFocus:b,onPressenter:y});return f(\"div\",{class:re(z,F),style:j},[f(Ta,A(A({},G),{},{ref:i,tag:\"textarea\"}),null),D&&f(\"div\",{ref:a,class:`${z}-measure`},[c.value.slice(0,O),f(gH,{prefixCls:z,transitionName:k,dropdownClassName:e.dropdownClassName,placement:T,options:D?P.value:[],visible:!0,direction:L,getPopupContainer:B},{default:()=>[f(\"span\",null,[R])],notFoundContent:r.notFoundContent,option:r.option}),c.value.slice(O+R.length)])])}}}),yH={value:String,disabled:Boolean,payload:De()},E_=h(h({},yH),{label:wt([])}),M_={name:\"Option\",props:E_,render(e,t){let{slots:n}=t;var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}};ne(h({compatConfig:{MODE:3}},M_));const SH=e=>{const{componentCls:t,colorTextDisabled:n,controlItemBgHover:o,controlPaddingHorizontal:l,colorText:r,motionDurationSlow:a,lineHeight:i,controlHeight:s,inputPaddingHorizontal:c,inputPaddingVertical:u,fontSize:d,colorBgElevated:p,borderRadiusLG:m,boxShadowSecondary:g}=e,v=Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2);return{[t]:h(h(h(h(h({},qe(e)),Rr(e)),{position:\"relative\",display:\"inline-block\",height:\"auto\",padding:0,overflow:\"hidden\",lineHeight:i,whiteSpace:\"pre-wrap\",verticalAlign:\"bottom\"}),Wi(e,t)),{\"&-disabled\":{\"> textarea\":h({},pg(e))},\"&-focused\":h({},jl(e)),[`&-affix-wrapper ${t}-suffix`]:{position:\"absolute\",top:0,insetInlineEnd:c,bottom:0,zIndex:1,display:\"inline-flex\",alignItems:\"center\",margin:\"auto\"},[`> textarea, ${t}-measure`]:{color:r,boxSizing:\"border-box\",minHeight:s-2,margin:0,padding:`${u}px ${c}px`,overflow:\"inherit\",overflowX:\"hidden\",overflowY:\"auto\",fontWeight:\"inherit\",fontSize:\"inherit\",fontFamily:\"inherit\",fontStyle:\"inherit\",fontVariant:\"inherit\",fontSizeAdjust:\"inherit\",fontStretch:\"inherit\",lineHeight:\"inherit\",direction:\"inherit\",letterSpacing:\"inherit\",whiteSpace:\"inherit\",textAlign:\"inherit\",verticalAlign:\"top\",wordWrap:\"break-word\",wordBreak:\"inherit\",tabSize:\"inherit\"},\"> textarea\":h({width:\"100%\",border:\"none\",outline:\"none\",resize:\"none\",backgroundColor:\"inherit\"},fg(e.colorTextPlaceholder)),[`${t}-measure`]:{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:-1,color:\"transparent\",pointerEvents:\"none\",\"> span\":{display:\"inline-block\",minHeight:\"1em\"}},\"&-dropdown\":h(h({},qe(e)),{position:\"absolute\",top:-9999,insetInlineStart:-9999,zIndex:e.zIndexPopup,boxSizing:\"border-box\",fontSize:d,fontVariant:\"initial\",backgroundColor:p,borderRadius:m,outline:\"none\",boxShadow:g,\"&-hidden\":{display:\"none\"},[`${t}-dropdown-menu`]:{maxHeight:e.dropdownHeight,marginBottom:0,paddingInlineStart:0,overflow:\"auto\",listStyle:\"none\",outline:\"none\",\"&-item\":h(h({},Xt),{position:\"relative\",display:\"block\",minWidth:e.controlItemWidth,padding:`${v}px ${l}px`,color:r,fontWeight:\"normal\",lineHeight:i,cursor:\"pointer\",transition:`background ${a} ease`,\"&:hover\":{backgroundColor:o},\"&:first-child\":{borderStartStartRadius:m,borderStartEndRadius:m,borderEndStartRadius:0,borderEndEndRadius:0},\"&:last-child\":{borderStartStartRadius:0,borderStartEndRadius:0,borderEndStartRadius:m,borderEndEndRadius:m},\"&-disabled\":{color:n,cursor:\"not-allowed\",\"&:hover\":{color:n,backgroundColor:o,cursor:\"not-allowed\"}},\"&-selected\":{color:r,fontWeight:e.fontWeightStrong,backgroundColor:o},\"&-active\":{backgroundColor:o}})}})})}},$H=Xe(\"Mentions\",e=>{const t=kr(e);return[SH(t)]},e=>({dropdownHeight:250,controlItemWidth:100,zIndexPopup:e.zIndexPopupBase+50}));var zy=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function CH(){return!0}const xH=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{prefix:n=\"@\",split:o=\" \"}=t,l=Array.isArray(n)?n:[n];return e.split(o).map(function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\",a=null;return l.some(i=>r.slice(0,i.length)===i?(a=i,!0):!1),a!==null?{prefix:a,value:r.slice(a.length)}:null}).filter(r=>!!r&&!!r.value)},wH=()=>h(h({},P_),{loading:{type:Boolean,default:void 0},onFocus:{type:Function},onBlur:{type:Function},onSelect:{type:Function},onChange:{type:Function},onPressenter:{type:Function},\"onUpdate:value\":{type:Function},notFoundContent:W.any,defaultValue:String,id:String,status:String}),Af=ne({compatConfig:{MODE:3},name:\"AMentions\",inheritAttrs:!1,props:wH(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:l,expose:r}=t;var a,i;const{prefixCls:s,renderEmpty:c,direction:u}=Te(\"mentions\",e),[d,p]=$H(s),m=ee(!1),g=ee(null),v=ee((i=(a=e.value)!==null&&a!==void 0?a:e.defaultValue)!==null&&i!==void 0?i:\"\"),y=Jt(),b=un.useInject(),S=I(()=>Ro(b.status,e.status));zv({prefixCls:I(()=>`${s.value}-menu`),mode:I(()=>\"vertical\"),selectable:I(()=>!1),onClick:()=>{},validator:R=>{let{mode:D}=R}}),pe(()=>e.value,R=>{v.value=R});const $=R=>{m.value=!0,o(\"focus\",R)},w=R=>{m.value=!1,o(\"blur\",R),y.onFieldBlur()},C=function(){for(var R=arguments.length,D=new Array(R),z=0;z<R;z++)D[z]=arguments[z];o(\"select\",...D),m.value=!0},_=R=>{e.value===void 0&&(v.value=R),o(\"update:value\",R),o(\"change\",R),y.onFieldChange()},x=()=>{const R=e.notFoundContent;return R!==void 0?R:n.notFoundContent?n.notFoundContent():c(\"Select\")},P=()=>{var R;return xt(((R=n.default)===null||R===void 0?void 0:R.call(n))||[]).map(D=>{var z,T;return h(h({},V$(D)),{label:(T=(z=D.children)===null||z===void 0?void 0:z.default)===null||T===void 0?void 0:T.call(z)})})};r({focus:()=>{g.value.focus()},blur:()=>{g.value.blur()}});const O=I(()=>e.loading?CH:e.filterOption);return()=>{const{disabled:R,getPopupContainer:D,rows:z=1,id:T=y.id.value}=e,k=zy(e,[\"disabled\",\"getPopupContainer\",\"rows\",\"id\"]),{hasFeedback:B,feedbackIcon:L}=b,{class:N}=l,F=zy(l,[\"class\"]),j=lt(k,[\"defaultValue\",\"onUpdate:value\",\"prefixCls\"]),H=re({[`${s.value}-disabled`]:R,[`${s.value}-focused`]:m.value,[`${s.value}-rtl`]:u.value===\"rtl\"},Cn(s.value,S.value),!B&&N,p.value),K=h(h(h(h({prefixCls:s.value},j),{disabled:R,direction:u.value,filterOption:O.value,getPopupContainer:D,options:e.loading?[{value:\"ANTDV_SEARCHING\",disabled:!0,label:f(Ko,{size:\"small\"},null)}]:e.options||P(),class:H}),F),{rows:z,onChange:_,onSelect:C,onFocus:$,onBlur:w,ref:g,value:v.value,id:T}),G=f(bH,A(A({},K),{},{dropdownClassName:p.value}),{notFoundContent:x,option:n.option});return d(B?f(\"div\",{class:re(`${s.value}-affix-wrapper`,Cn(`${s.value}-affix-wrapper`,S.value,B),N,p.value)},[G,f(\"span\",{class:`${s.value}-suffix`},[L])]):G)}}}),yc=ne(h(h({compatConfig:{MODE:3}},M_),{name:\"AMentionsOption\",props:E_})),_H=h(Af,{Option:yc,getMentions:xH,install:e=>(e.component(Af.name,Af),e.component(yc.name,yc),e)});var IH=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};let lm;const PH=e=>{lm={x:e.pageX,y:e.pageY},setTimeout(()=>lm=null,100)};aw()&&Rt(document.documentElement,\"click\",PH,!0);const TH=()=>({prefixCls:String,visible:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},confirmLoading:{type:Boolean,default:void 0},title:W.any,closable:{type:Boolean,default:void 0},closeIcon:W.any,onOk:Function,onCancel:Function,\"onUpdate:visible\":Function,\"onUpdate:open\":Function,onChange:Function,afterClose:Function,centered:{type:Boolean,default:void 0},width:[String,Number],footer:W.any,okText:W.any,okType:String,cancelText:W.any,icon:W.any,maskClosable:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},okButtonProps:De(),cancelButtonProps:De(),destroyOnClose:{type:Boolean,default:void 0},wrapClassName:String,maskTransitionName:String,transitionName:String,getContainer:{type:[String,Function,Boolean,Object],default:void 0},zIndex:Number,bodyStyle:De(),maskStyle:De(),mask:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},wrapProps:Object,focusTriggerAfterClose:{type:Boolean,default:void 0},modalRender:Function,mousePosition:De()}),Zt=ne({compatConfig:{MODE:3},name:\"AModal\",inheritAttrs:!1,props:Je(TH(),{width:520,confirmLoading:!1,okType:\"primary\"}),setup(e,t){let{emit:n,slots:o,attrs:l}=t;const[r]=$o(\"Modal\"),{prefixCls:a,rootPrefixCls:i,direction:s,getPopupContainer:c}=Te(\"modal\",e),[u,d]=K7(a);no(e.visible===void 0);const p=v=>{n(\"update:visible\",!1),n(\"update:open\",!1),n(\"cancel\",v),n(\"change\",!1)},m=v=>{n(\"ok\",v)},g=()=>{var v,y;const{okText:b=(v=o.okText)===null||v===void 0?void 0:v.call(o),okType:S,cancelText:$=(y=o.cancelText)===null||y===void 0?void 0:y.call(o),confirmLoading:w}=e;return f(He,null,[f(_t,A({onClick:p},e.cancelButtonProps),{default:()=>[$||r.value.cancelText]}),f(_t,A(A({},Jc(S)),{},{loading:w,onClick:m},e.okButtonProps),{default:()=>[b||r.value.okText]})])};return()=>{var v,y;const{prefixCls:b,visible:S,open:$,wrapClassName:w,centered:C,getContainer:_,closeIcon:x=(v=o.closeIcon)===null||v===void 0?void 0:v.call(o),focusTriggerAfterClose:P=!0}=e,E=IH(e,[\"prefixCls\",\"visible\",\"open\",\"wrapClassName\",\"centered\",\"getContainer\",\"closeIcon\",\"focusTriggerAfterClose\"]),M=re(w,{[`${a.value}-centered`]:!!C,[`${a.value}-wrap-rtl`]:s.value===\"rtl\"});return u(f(d_,A(A(A({},E),l),{},{rootClassName:d.value,class:re(d.value,l.class),getContainer:_||c?.value,prefixCls:a.value,wrapClassName:M,visible:$??S,onClose:p,focusTriggerAfterClose:P,transitionName:_n(i.value,\"zoom\",e.transitionName),maskTransitionName:_n(i.value,\"fade\",e.maskTransitionName),mousePosition:(y=E.mousePosition)!==null&&y!==void 0?y:lm}),h(h({},o),{footer:o.footer||g,closeIcon:()=>f(\"span\",{class:`${a.value}-close-x`},[x||f(Kn,{class:`${a.value}-close-icon`},null)])})))}}}),A_=()=>{const e=ee(!1);return ot(()=>{e.value=!0}),e},OH={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:De(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function Hy(e){return!!(e&&e.then)}const rm=ne({compatConfig:{MODE:3},name:\"ActionButton\",props:OH,setup(e,t){let{slots:n}=t;const o=ee(!1),l=ee(),r=ee(!1);let a;const i=A_();Be(()=>{e.autofocus&&(a=setTimeout(()=>{var d,p;return(p=(d=Tn(l.value))===null||d===void 0?void 0:d.focus)===null||p===void 0?void 0:p.call(d)}))}),ot(()=>{clearTimeout(a)});const s=function(){for(var d,p=arguments.length,m=new Array(p),g=0;g<p;g++)m[g]=arguments[g];(d=e.close)===null||d===void 0||d.call(e,...m)},c=d=>{Hy(d)&&(r.value=!0,d.then(function(){i.value||(r.value=!1),s(...arguments),o.value=!1},p=>(i.value||(r.value=!1),o.value=!1,Promise.reject(p))))},u=d=>{const{actionFn:p}=e;if(o.value)return;if(o.value=!0,!p){s();return}let m;if(e.emitEvent){if(m=p(d),e.quitOnNullishReturnValue&&!Hy(m)){o.value=!1,s(d);return}}else if(p.length)m=p(e.close),o.value=!1;else if(m=p(),!m){s();return}c(m)};return()=>{const{type:d,prefixCls:p,buttonProps:m}=e;return f(_t,A(A(A({},Jc(d)),{},{onClick:u,loading:r.value,prefixCls:p},m),{},{ref:l}),n)}}});function jr(e){return typeof e==\"function\"?e():e}const D_=ne({name:\"ConfirmDialog\",inheritAttrs:!1,props:[\"icon\",\"onCancel\",\"onOk\",\"close\",\"closable\",\"zIndex\",\"afterClose\",\"visible\",\"open\",\"keyboard\",\"centered\",\"getContainer\",\"maskStyle\",\"okButtonProps\",\"cancelButtonProps\",\"okType\",\"prefixCls\",\"okCancel\",\"width\",\"mask\",\"maskClosable\",\"okText\",\"cancelText\",\"autoFocusButton\",\"transitionName\",\"maskTransitionName\",\"type\",\"title\",\"content\",\"direction\",\"rootPrefixCls\",\"bodyStyle\",\"closeIcon\",\"modalRender\",\"focusTriggerAfterClose\",\"wrapClassName\",\"confirmPrefixCls\",\"footer\"],setup(e,t){let{attrs:n}=t;const[o]=$o(\"Modal\");return()=>{const{icon:l,onCancel:r,onOk:a,close:i,okText:s,closable:c=!1,zIndex:u,afterClose:d,keyboard:p,centered:m,getContainer:g,maskStyle:v,okButtonProps:y,cancelButtonProps:b,okCancel:S,width:$=416,mask:w=!0,maskClosable:C=!1,type:_,open:x,title:P,content:E,direction:M,closeIcon:O,modalRender:R,focusTriggerAfterClose:D,rootPrefixCls:z,bodyStyle:T,wrapClassName:k,footer:B}=e;let L=l;if(!l&&l!==null)switch(_){case\"info\":L=f(_r,null,null);break;case\"success\":L=f(hl,null,null);break;case\"error\":L=f(Vn,null,null);break;default:L=f(gl,null,null)}const N=e.okType||\"primary\",F=e.prefixCls||\"ant-modal\",j=`${F}-confirm`,H=n.style||{},K=S??_===\"confirm\",G=e.autoFocusButton===null?!1:e.autoFocusButton||\"ok\",V=`${F}-confirm`,q=re(V,`${V}-${e.type}`,{[`${V}-rtl`]:M===\"rtl\"},n.class),Q=o.value,oe=K&&f(rm,{actionFn:r,close:i,autofocus:G===\"cancel\",buttonProps:b,prefixCls:`${z}-btn`},{default:()=>[jr(e.cancelText)||Q.cancelText]});return f(Zt,{prefixCls:F,class:q,wrapClassName:re({[`${V}-centered`]:!!m},k),onCancel:le=>i?.({triggerCancel:!0},le),open:x,title:\"\",footer:\"\",transitionName:_n(z,\"zoom\",e.transitionName),maskTransitionName:_n(z,\"fade\",e.maskTransitionName),mask:w,maskClosable:C,maskStyle:v,style:H,bodyStyle:T,width:$,zIndex:u,afterClose:d,keyboard:p,centered:m,getContainer:g,closable:c,closeIcon:O,modalRender:R,focusTriggerAfterClose:D},{default:()=>[f(\"div\",{class:`${j}-body-wrapper`},[f(\"div\",{class:`${j}-body`},[jr(L),P===void 0?null:f(\"span\",{class:`${j}-title`},[jr(P)]),f(\"div\",{class:`${j}-content`},[jr(E)])]),B!==void 0?jr(B):f(\"div\",{class:`${j}-btns`},[oe,f(rm,{type:N,actionFn:a,close:i,autofocus:G===\"ok\",buttonProps:y,prefixCls:`${z}-btn`},{default:()=>[jr(s)||(K?Q.okText:Q.justOkText)]})])])]})}}}),dr=[],Zi=e=>{const t=document.createDocumentFragment();let n=h(h({},lt(e,[\"parentContext\",\"appContext\"])),{close:r,open:!0}),o=null;function l(){o&&(zl(null,t),o=null);for(var c=arguments.length,u=new Array(c),d=0;d<c;d++)u[d]=arguments[d];const p=u.some(m=>m&&m.triggerCancel);e.onCancel&&p&&e.onCancel(()=>{},...u.slice(1));for(let m=0;m<dr.length;m++)if(dr[m]===r){dr.splice(m,1);break}}function r(){for(var c=arguments.length,u=new Array(c),d=0;d<c;d++)u[d]=arguments[d];n=h(h({},n),{open:!1,afterClose:()=>{typeof e.afterClose==\"function\"&&e.afterClose(),l.apply(this,u)}}),n.visible&&delete n.visible,a(n)}function a(c){typeof c==\"function\"?n=c(n):n=h(h({},n),c),o&&U3(o,n,t)}const i=c=>{const u=mn,d=u.prefixCls,p=c.prefixCls||`${d}-modal`,m=u.iconPrefixCls,g=hL();return f(Bl,A(A({},u),{},{prefixCls:d}),{default:()=>[f(D_,A(A({},c),{},{rootPrefixCls:d,prefixCls:p,iconPrefixCls:m,locale:g,cancelText:c.cancelText||g.cancelText}),null)]})};function s(c){const u=f(i,h({},c));return u.appContext=e.parentContext||e.appContext||u.appContext,zl(u,t),u}return o=s(n),dr.push(r),{destroy:r,update:a}};function R_(e){return h(h({},e),{type:\"warning\"})}function k_(e){return h(h({},e),{type:\"info\"})}function N_(e){return h(h({},e),{type:\"success\"})}function B_(e){return h(h({},e),{type:\"error\"})}function L_(e){return h(h({},e),{type:\"confirm\"})}const EH=()=>({config:Object,afterClose:Function,destroyAction:Function,open:Boolean}),MH=ne({name:\"HookModal\",inheritAttrs:!1,props:Je(EH(),{config:{width:520,okType:\"primary\"}}),setup(e,t){let{expose:n}=t;var o;const l=I(()=>e.open),r=I(()=>e.config),{direction:a,getPrefixCls:i}=ku(),s=i(\"modal\"),c=i(),u=()=>{var g,v;e?.afterClose(),(v=(g=r.value).afterClose)===null||v===void 0||v.call(g)},d=function(){e.destroyAction(...arguments)};n({destroy:d});const p=(o=r.value.okCancel)!==null&&o!==void 0?o:r.value.type===\"confirm\",[m]=$o(\"Modal\",En.Modal);return()=>f(D_,A(A({prefixCls:s,rootPrefixCls:c},r.value),{},{close:d,open:l.value,afterClose:u,okText:r.value.okText||(p?m?.value.okText:m?.value.justOkText),direction:r.value.direction||a.value,cancelText:r.value.cancelText||m?.value.cancelText}),null)}});let jy=0;const AH=ne({name:\"ElementsHolder\",inheritAttrs:!1,setup(e,t){let{expose:n}=t;const o=ee([]);return n({addModal:r=>(o.value.push(r),o.value=o.value.slice(),()=>{o.value=o.value.filter(a=>a!==r)})}),()=>o.value.map(r=>r())}});function F_(){const e=ee(null),t=ee([]);pe(t,()=>{t.value.length&&([...t.value].forEach(a=>{a()}),t.value=[])},{immediate:!0});const n=r=>function(i){var s;jy+=1;const c=ee(!0),u=ee(null),d=ee(Ne(i)),p=ee({});pe(()=>i,$=>{y(h(h({},Fl($)?$.value:$),p.value))});const m=function(){c.value=!1;for(var $=arguments.length,w=new Array($),C=0;C<$;C++)w[C]=arguments[C];const _=w.some(x=>x&&x.triggerCancel);d.value.onCancel&&_&&d.value.onCancel(()=>{},...w.slice(1))};let g;const v=()=>f(MH,{key:`modal-${jy}`,config:r(d.value),ref:u,open:c.value,destroyAction:m,afterClose:()=>{g?.()}},null);g=(s=e.value)===null||s===void 0?void 0:s.addModal(v),g&&dr.push(g);const y=$=>{d.value=h(h({},d.value),$)};return{destroy:()=>{u.value?m():t.value=[...t.value,m]},update:$=>{p.value=$,u.value?y($):t.value=[...t.value,()=>y($)]}}},o=I(()=>({info:n(k_),success:n(N_),error:n(B_),warning:n(R_),confirm:n(L_)})),l=Symbol(\"modalHolderKey\");return[o.value,()=>f(AH,{key:l,ref:e},null)]}function z_(e){return Zi(R_(e))}Zt.useModal=F_;Zt.info=function(t){return Zi(k_(t))};Zt.success=function(t){return Zi(N_(t))};Zt.error=function(t){return Zi(B_(t))};Zt.warning=z_;Zt.warn=z_;Zt.confirm=function(t){return Zi(L_(t))};Zt.destroyAll=function(){for(;dr.length;){const t=dr.pop();t&&t()}};Zt.install=function(e){return e.component(Zt.name,Zt),e};const H_=e=>{const{value:t,formatter:n,precision:o,decimalSeparator:l,groupSeparator:r=\"\",prefixCls:a}=e;let i;if(typeof n==\"function\")i=n({value:t});else{const s=String(t),c=s.match(/^(-?)(\\d*)(\\.(\\d+))?$/);if(!c)i=s;else{const u=c[1];let d=c[2]||\"0\",p=c[4]||\"\";d=d.replace(/\\B(?=(\\d{3})+(?!\\d))/g,r),typeof o==\"number\"&&(p=p.padEnd(o,\"0\").slice(0,o>0?o:0)),p&&(p=`${l}${p}`),i=[f(\"span\",{key:\"int\",class:`${a}-content-value-int`},[u,d]),p&&f(\"span\",{key:\"decimal\",class:`${a}-content-value-decimal`},[p])]}}return f(\"span\",{class:`${a}-content-value`},[i])};H_.displayName=\"StatisticNumber\";const DH=e=>{const{componentCls:t,marginXXS:n,padding:o,colorTextDescription:l,statisticTitleFontSize:r,colorTextHeading:a,statisticContentFontSize:i,statisticFontFamily:s}=e;return{[`${t}`]:h(h({},qe(e)),{[`${t}-title`]:{marginBottom:n,color:l,fontSize:r},[`${t}-skeleton`]:{paddingTop:o},[`${t}-content`]:{color:a,fontSize:i,fontFamily:s,[`${t}-content-value`]:{display:\"inline-block\",direction:\"ltr\"},[`${t}-content-prefix, ${t}-content-suffix`]:{display:\"inline-block\"},[`${t}-content-prefix`]:{marginInlineEnd:n},[`${t}-content-suffix`]:{marginInlineStart:n}}})}},RH=Xe(\"Statistic\",e=>{const{fontSizeHeading3:t,fontSize:n,fontFamily:o}=e,l=Le(e,{statisticTitleFontSize:n,statisticContentFontSize:t,statisticFontFamily:o});return[DH(l)]}),j_=()=>({prefixCls:String,decimalSeparator:String,groupSeparator:String,format:String,value:Fe([Number,String,Object]),valueStyle:{type:Object,default:void 0},valueRender:de(),formatter:wt(),precision:Number,prefix:$n(),suffix:$n(),title:$n(),loading:ye()}),ll=ne({compatConfig:{MODE:3},name:\"AStatistic\",inheritAttrs:!1,props:Je(j_(),{decimalSeparator:\".\",groupSeparator:\",\",loading:!1}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"statistic\",e),[a,i]=RH(l);return()=>{var s,c,u,d,p,m,g;const{value:v=0,valueStyle:y,valueRender:b}=e,S=l.value,$=(s=e.title)!==null&&s!==void 0?s:(c=n.title)===null||c===void 0?void 0:c.call(n),w=(u=e.prefix)!==null&&u!==void 0?u:(d=n.prefix)===null||d===void 0?void 0:d.call(n),C=(p=e.suffix)!==null&&p!==void 0?p:(m=n.suffix)===null||m===void 0?void 0:m.call(n),_=(g=e.formatter)!==null&&g!==void 0?g:n.formatter;let x=f(H_,A({\"data-for-update\":Date.now()},h(h({},e),{prefixCls:S,value:v,formatter:_})),null);return b&&(x=b(x)),a(f(\"div\",A(A({},o),{},{class:[S,{[`${S}-rtl`]:r.value===\"rtl\"},o.class,i.value]}),[$&&f(\"div\",{class:`${S}-title`},[$]),f(Sn,{paragraph:!1,loading:e.loading},{default:()=>[f(\"div\",{style:y,class:`${S}-content`},[w&&f(\"span\",{class:`${S}-content-prefix`},[w]),x,C&&f(\"span\",{class:`${S}-content-suffix`},[C])])]})]))}}}),kH=[[\"Y\",1e3*60*60*24*365],[\"M\",1e3*60*60*24*30],[\"D\",1e3*60*60*24],[\"H\",1e3*60*60],[\"m\",1e3*60],[\"s\",1e3],[\"S\",1]];function NH(e,t){let n=e;const o=/\\[[^\\]]*]/g,l=(t.match(o)||[]).map(s=>s.slice(1,-1)),r=t.replace(o,\"[]\"),a=kH.reduce((s,c)=>{let[u,d]=c;if(s.includes(u)){const p=Math.floor(n/d);return n-=p*d,s.replace(new RegExp(`${u}+`,\"g\"),m=>{const g=m.length;return p.toString().padStart(g,\"0\")})}return s},r);let i=0;return a.replace(o,()=>{const s=l[i];return i+=1,s})}function BH(e,t){const{format:n=\"\"}=t,o=new Date(e).getTime(),l=Date.now(),r=Math.max(o-l,0);return NH(r,n)}const LH=1e3/30;function Df(e){return new Date(e).getTime()}const FH=()=>h(h({},j_()),{value:Fe([Number,String,Object]),format:String,onFinish:Function,onChange:Function}),zH=ne({compatConfig:{MODE:3},name:\"AStatisticCountdown\",props:Je(FH(),{format:\"HH:mm:ss\"}),setup(e,t){let{emit:n,slots:o}=t;const l=Z(),r=Z(),a=()=>{const{value:d}=e;Df(d)>=Date.now()?i():s()},i=()=>{if(l.value)return;const d=Df(e.value);l.value=setInterval(()=>{r.value.$forceUpdate(),d>Date.now()&&n(\"change\",d-Date.now()),a()},LH)},s=()=>{const{value:d}=e;l.value&&(clearInterval(l.value),l.value=void 0,Df(d)<Date.now()&&n(\"finish\"))},c=d=>{let{value:p,config:m}=d;const{format:g}=e;return BH(p,h(h({},m),{format:g}))},u=d=>d;return Be(()=>{a()}),Wn(()=>{a()}),ot(()=>{s()}),()=>{const d=e.value;return f(ll,A({ref:r},h(h({},lt(e,[\"onFinish\",\"onChange\"])),{value:d,valueRender:u,formatter:c})),o)}}});ll.Countdown=zH;ll.install=function(e){return e.component(ll.name,ll),e.component(ll.Countdown.name,ll.Countdown),e};const HH=ll.Countdown;var jH=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const WH={border:0,background:\"transparent\",padding:0,lineHeight:\"inherit\",display:\"inline-block\"},Su=ne({compatConfig:{MODE:3},name:\"TransButton\",inheritAttrs:!1,props:{noStyle:{type:Boolean,default:void 0},onClick:Function,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0}},setup(e,t){let{slots:n,emit:o,attrs:l,expose:r}=t;const a=ee(),i=p=>{const{keyCode:m}=p;m===we.ENTER&&p.preventDefault()},s=p=>{const{keyCode:m}=p;m===we.ENTER&&o(\"click\",p)},c=p=>{o(\"click\",p)},u=()=>{a.value&&a.value.focus()},d=()=>{a.value&&a.value.blur()};return Be(()=>{e.autofocus&&u()}),r({focus:u,blur:d}),()=>{var p;const{noStyle:m,disabled:g}=e,v=jH(e,[\"noStyle\",\"disabled\"]);let y={};return m||(y=h({},WH)),g&&(y.pointerEvents=\"none\"),f(\"div\",A(A(A({role:\"button\",tabindex:0,ref:a},v),l),{},{onClick:c,onKeydown:i,onKeyup:s,style:h(h({},y),l.style||{})}),[(p=n.default)===null||p===void 0?void 0:p.call(n)])}}}),VH={small:8,middle:16,large:24},KH=()=>({prefixCls:String,size:{type:[String,Number,Array]},direction:W.oneOf(hn(\"horizontal\",\"vertical\")).def(\"horizontal\"),align:W.oneOf(hn(\"start\",\"end\",\"center\",\"baseline\")),wrap:ye()});function GH(e){return typeof e==\"string\"?VH[e]:e||0}const ca=ne({compatConfig:{MODE:3},name:\"ASpace\",inheritAttrs:!1,props:KH(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,space:r,direction:a}=Te(\"space\",e),[i,s]=$1(l),c=sw(),u=I(()=>{var b,S,$;return($=(b=e.size)!==null&&b!==void 0?b:(S=r?.value)===null||S===void 0?void 0:S.size)!==null&&$!==void 0?$:\"small\"}),d=Z(),p=Z();pe(u,()=>{[d.value,p.value]=(Array.isArray(u.value)?u.value:[u.value,u.value]).map(b=>GH(b))},{immediate:!0});const m=I(()=>e.align===void 0&&e.direction===\"horizontal\"?\"center\":e.align),g=I(()=>re(l.value,s.value,`${l.value}-${e.direction}`,{[`${l.value}-rtl`]:a.value===\"rtl\",[`${l.value}-align-${m.value}`]:m.value})),v=I(()=>a.value===\"rtl\"?\"marginLeft\":\"marginRight\"),y=I(()=>{const b={};return c.value&&(b.columnGap=`${d.value}px`,b.rowGap=`${p.value}px`),h(h({},b),e.wrap&&{flexWrap:\"wrap\",marginBottom:`${-p.value}px`})});return()=>{var b,S;const{wrap:$,direction:w=\"horizontal\"}=e,C=(b=n.default)===null||b===void 0?void 0:b.call(n),_=kt(C),x=_.length;if(x===0)return null;const P=(S=n.split)===null||S===void 0?void 0:S.call(n),E=`${l.value}-item`,M=d.value,O=x-1;return f(\"div\",A(A({},o),{},{class:[g.value,o.class],style:[y.value,o.style]}),[_.map((R,D)=>{let z=C.indexOf(R);z===-1&&(z=`$$space-${D}`);let T={};return c.value||(w===\"vertical\"?D<O&&(T={marginBottom:`${M/(P?2:1)}px`}):T=h(h({},D<O&&{[v.value]:`${M/(P?2:1)}px`}),$&&{paddingBottom:`${p.value}px`})),i(f(He,{key:z},[f(\"div\",{class:E,style:T},[R]),D<O&&P&&f(\"span\",{class:`${E}-split`,style:T},[P])]))})])}}});ca.Compact=Uc;ca.install=function(e){return e.component(ca.name,ca),e.component(Uc.name,Uc),e};const XH=e=>{const{componentCls:t,antCls:n}=e;return{[t]:h(h({},qe(e)),{position:\"relative\",padding:`${e.pageHeaderPaddingVertical}px ${e.pageHeaderPadding}px`,backgroundColor:e.colorBgContainer,[`&${t}-ghost`]:{backgroundColor:e.pageHeaderGhostBg},\"&.has-footer\":{paddingBottom:0},[`${t}-back`]:{marginRight:e.marginMD,fontSize:e.fontSizeLG,lineHeight:1,\"&-button\":h(h({},Hu(e)),{color:e.pageHeaderBackColor,cursor:\"pointer\"})},[`${n}-divider-vertical`]:{height:\"14px\",margin:`0 ${e.marginSM}`,verticalAlign:\"middle\"},[`${n}-breadcrumb + &-heading`]:{marginTop:e.marginXS},[`${t}-heading`]:{display:\"flex\",justifyContent:\"space-between\",\"&-left\":{display:\"flex\",alignItems:\"center\",margin:`${e.marginXS/2}px 0`,overflow:\"hidden\"},\"&-title\":h({marginRight:e.marginSM,marginBottom:0,color:e.colorTextHeading,fontWeight:600,fontSize:e.pageHeaderHeadingTitle,lineHeight:`${e.controlHeight}px`},Xt),[`${n}-avatar`]:{marginRight:e.marginSM},\"&-sub-title\":h({marginRight:e.marginSM,color:e.colorTextDescription,fontSize:e.pageHeaderHeadingSubTitle,lineHeight:e.lineHeight},Xt),\"&-extra\":{margin:`${e.marginXS/2}px 0`,whiteSpace:\"nowrap\",\"> *\":{marginLeft:e.marginSM,whiteSpace:\"unset\"},\"> *:first-child\":{marginLeft:0}}},[`${t}-content`]:{paddingTop:e.pageHeaderContentPaddingVertical},[`${t}-footer`]:{marginTop:e.marginMD,[`${n}-tabs`]:{[`> ${n}-tabs-nav`]:{margin:0,\"&::before\":{border:\"none\"}},[`${n}-tabs-tab`]:{paddingTop:e.paddingXS,paddingBottom:e.paddingXS,fontSize:e.pageHeaderTabFontSize}}},[`${t}-compact ${t}-heading`]:{flexWrap:\"wrap\"},[`&${e.componentCls}-rtl`]:{direction:\"rtl\"}})}},UH=Xe(\"PageHeader\",e=>{const t=Le(e,{pageHeaderPadding:e.paddingLG,pageHeaderPaddingVertical:e.paddingMD,pageHeaderPaddingBreadcrumb:e.paddingSM,pageHeaderContentPaddingVertical:e.paddingSM,pageHeaderBackColor:e.colorTextBase,pageHeaderGhostBg:\"transparent\",pageHeaderHeadingTitle:e.fontSizeHeading4,pageHeaderHeadingSubTitle:e.fontSize,pageHeaderTabFontSize:e.fontSizeLG});return[XH(t)]}),YH=()=>({backIcon:$n(),prefixCls:String,title:$n(),subTitle:$n(),breadcrumb:W.object,tags:$n(),footer:$n(),extra:$n(),avatar:De(),ghost:{type:Boolean,default:void 0},onBack:Function}),qH=ne({compatConfig:{MODE:3},name:\"APageHeader\",inheritAttrs:!1,props:YH(),slots:Object,setup(e,t){let{emit:n,slots:o,attrs:l}=t;const{prefixCls:r,direction:a,pageHeader:i}=Te(\"page-header\",e),[s,c]=UH(r),u=ee(!1),d=A_(),p=w=>{let{width:C}=w;d.value||(u.value=C<768)},m=I(()=>{var w,C,_;return(_=(w=e.ghost)!==null&&w!==void 0?w:(C=i?.value)===null||C===void 0?void 0:C.ghost)!==null&&_!==void 0?_:!0}),g=()=>{var w,C,_;return(_=(w=e.backIcon)!==null&&w!==void 0?w:(C=o.backIcon)===null||C===void 0?void 0:C.call(o))!==null&&_!==void 0?_:a.value===\"rtl\"?f(Ir,null,null):f(VI,null,null)},v=w=>!w||!e.onBack?null:f(Pr,{componentName:\"PageHeader\",children:C=>{let{back:_}=C;return f(\"div\",{class:`${r.value}-back`},[f(Su,{onClick:x=>{n(\"back\",x)},class:`${r.value}-back-button`,\"aria-label\":_},{default:()=>[w]})])}},null),y=()=>{var w;return e.breadcrumb?f(vr,e.breadcrumb,null):(w=o.breadcrumb)===null||w===void 0?void 0:w.call(o)},b=()=>{var w,C,_,x,P,E,M,O,R;const{avatar:D}=e,z=(w=e.title)!==null&&w!==void 0?w:(C=o.title)===null||C===void 0?void 0:C.call(o),T=(_=e.subTitle)!==null&&_!==void 0?_:(x=o.subTitle)===null||x===void 0?void 0:x.call(o),k=(P=e.tags)!==null&&P!==void 0?P:(E=o.tags)===null||E===void 0?void 0:E.call(o),B=(M=e.extra)!==null&&M!==void 0?M:(O=o.extra)===null||O===void 0?void 0:O.call(o),L=`${r.value}-heading`,N=z||T||k||B;if(!N)return null;const F=g(),j=v(F);return f(\"div\",{class:L},[(j||D||N)&&f(\"div\",{class:`${L}-left`},[j,D?f(mr,D,null):(R=o.avatar)===null||R===void 0?void 0:R.call(o),z&&f(\"span\",{class:`${L}-title`,title:typeof z==\"string\"?z:void 0},[z]),T&&f(\"span\",{class:`${L}-sub-title`,title:typeof T==\"string\"?T:void 0},[T]),k&&f(\"span\",{class:`${L}-tags`},[k])]),B&&f(\"span\",{class:`${L}-extra`},[f(ca,null,{default:()=>[B]})])])},S=()=>{var w,C;const _=(w=e.footer)!==null&&w!==void 0?w:kt((C=o.footer)===null||C===void 0?void 0:C.call(o));return tE(_)?null:f(\"div\",{class:`${r.value}-footer`},[_])},$=w=>f(\"div\",{class:`${r.value}-content`},[w]);return()=>{var w,C;const _=((w=e.breadcrumb)===null||w===void 0?void 0:w.routes)||o.breadcrumb,x=e.footer||o.footer,P=xt((C=o.default)===null||C===void 0?void 0:C.call(o)),E=re(r.value,{\"has-breadcrumb\":_,\"has-footer\":x,[`${r.value}-ghost`]:m.value,[`${r.value}-rtl`]:a.value===\"rtl\",[`${r.value}-compact`]:u.value},l.class,c.value);return s(f(bo,{onResize:p},{default:()=>[f(\"div\",A(A({},l),{},{class:E}),[y(),b(),P.length?$(P):null,S()])]}))}}}),ZH=Dt(qH),QH=e=>{const{componentCls:t,iconCls:n,zIndexPopup:o,colorText:l,colorWarning:r,marginXS:a,fontSize:i,fontWeightStrong:s,lineHeight:c}=e;return{[t]:{zIndex:o,[`${t}-inner-content`]:{color:l},[`${t}-message`]:{position:\"relative\",marginBottom:a,color:l,fontSize:i,display:\"flex\",flexWrap:\"nowrap\",alignItems:\"start\",[`> ${t}-message-icon ${n}`]:{color:r,fontSize:i,flex:\"none\",lineHeight:1,paddingTop:(Math.round(i*c)-i)/2},\"&-title\":{flex:\"auto\",marginInlineStart:a},\"&-title-only\":{fontWeight:s}},[`${t}-description`]:{position:\"relative\",marginInlineStart:i+a,marginBottom:a,color:l,fontSize:i},[`${t}-buttons`]:{textAlign:\"end\",button:{marginInlineStart:a}}}}},JH=Xe(\"Popconfirm\",e=>QH(e),e=>{const{zIndexPopupBase:t}=e;return{zIndexPopup:t+60}});var e9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const t9=()=>h(h({},Av()),{prefixCls:String,content:wt(),title:wt(),description:wt(),okType:ke(\"primary\"),disabled:{type:Boolean,default:!1},okText:wt(),cancelText:wt(),icon:wt(),okButtonProps:De(),cancelButtonProps:De(),showCancel:{type:Boolean,default:!0},onConfirm:Function,onCancel:Function}),n9=ne({compatConfig:{MODE:3},name:\"APopconfirm\",inheritAttrs:!1,props:Je(t9(),h(h({},T1()),{trigger:\"click\",placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0,okType:\"primary\",disabled:!1})),slots:Object,setup(e,t){let{slots:n,emit:o,expose:l,attrs:r}=t;const a=Z();no(e.visible===void 0),l({getPopupDomNode:()=>{var _,x;return(x=(_=a.value)===null||_===void 0?void 0:_.getPopupDomNode)===null||x===void 0?void 0:x.call(_)}});const[i,s]=Mt(!1,{value:Ve(e,\"open\")}),c=(_,x)=>{e.open===void 0&&s(_),o(\"update:open\",_),o(\"openChange\",_,x)},u=_=>{c(!1,_)},d=_=>{var x;return(x=e.onConfirm)===null||x===void 0?void 0:x.call(e,_)},p=_=>{var x;c(!1,_),(x=e.onCancel)===null||x===void 0||x.call(e,_)},m=_=>{_.keyCode===we.ESC&&i&&c(!1,_)},g=_=>{const{disabled:x}=e;x||c(_)},{prefixCls:v,getPrefixCls:y}=Te(\"popconfirm\",e),b=I(()=>y()),S=I(()=>y(\"btn\")),[$]=JH(v),[w]=$o(\"Popconfirm\",En.Popconfirm),C=()=>{var _,x,P,E,M;const{okButtonProps:O,cancelButtonProps:R,title:D=(_=n.title)===null||_===void 0?void 0:_.call(n),description:z=(x=n.description)===null||x===void 0?void 0:x.call(n),cancelText:T=(P=n.cancel)===null||P===void 0?void 0:P.call(n),okText:k=(E=n.okText)===null||E===void 0?void 0:E.call(n),okType:B,icon:L=((M=n.icon)===null||M===void 0?void 0:M.call(n))||f(gl,null,null),showCancel:N=!0}=e,{cancelButton:F,okButton:j}=n,H=h({onClick:p,size:\"small\"},R),K=h(h(h({onClick:d},Jc(B)),{size:\"small\"}),O);return f(\"div\",{class:`${v.value}-inner-content`},[f(\"div\",{class:`${v.value}-message`},[L&&f(\"span\",{class:`${v.value}-message-icon`},[L]),f(\"div\",{class:[`${v.value}-message-title`,{[`${v.value}-message-title-only`]:!!z}]},[D])]),z&&f(\"div\",{class:`${v.value}-description`},[z]),f(\"div\",{class:`${v.value}-buttons`},[N?F?F(H):f(_t,H,{default:()=>[T||w.value.cancelText]}):null,j?j(K):f(rm,{buttonProps:h(h({size:\"small\"},Jc(B)),O),actionFn:d,close:u,prefixCls:S.value,quitOnNullishReturnValue:!0,emitEvent:!0},{default:()=>[k||w.value.okText]})])])};return()=>{var _;const{placement:x,overlayClassName:P,trigger:E=\"click\"}=e,M=e9(e,[\"placement\",\"overlayClassName\",\"trigger\"]),O=lt(M,[\"title\",\"content\",\"cancelText\",\"okText\",\"onUpdate:open\",\"onConfirm\",\"onCancel\",\"prefixCls\"]),R=re(v.value,P);return $(f(Nv,A(A(A({},O),r),{},{trigger:E,placement:x,onOpenChange:g,open:i.value,overlayClassName:R,transitionName:_n(b.value,\"zoom-big\",e.transitionName),ref:a,\"data-popover-inject\":!0}),{default:()=>[X3(((_=n.default)===null||_===void 0?void 0:_.call(n))||[],{onKeydown:D=>{m(D)}},!1)],content:C}))}}}),o9=Dt(n9),l9=[\"normal\",\"exception\",\"active\",\"success\"],_d=()=>({prefixCls:String,type:ke(),percent:Number,format:de(),status:ke(),showInfo:ye(),strokeWidth:Number,strokeLinecap:ke(),strokeColor:wt(),trailColor:String,width:Number,success:De(),gapDegree:Number,gapPosition:ke(),size:Fe([String,Number,Array]),steps:Number,successPercent:Number,title:String,progressStatus:ke()});function hr(e){return!e||e<0?0:e>100?100:e}function $u(e){let{success:t,successPercent:n}=e,o=n;return t&&\"progress\"in t&&(Ot(!1,\"Progress\",\"`success.progress` is deprecated. Please use `success.percent` instead.\"),o=t.progress),t&&\"percent\"in t&&(o=t.percent),o}function r9(e){let{percent:t,success:n,successPercent:o}=e;const l=hr($u({success:n,successPercent:o}));return[l,hr(hr(t)-l)]}function a9(e){let{success:t={},strokeColor:n}=e;const{strokeColor:o}=t;return[o||qf.green,n||null]}const Id=(e,t,n)=>{var o,l,r,a;let i=-1,s=-1;if(t===\"step\"){const c=n.steps,u=n.strokeWidth;typeof e==\"string\"||typeof e>\"u\"?(i=e===\"small\"?2:14,s=u??8):typeof e==\"number\"?[i,s]=[e,e]:[i=14,s=8]=e,i*=c}else if(t===\"line\"){const c=n?.strokeWidth;typeof e==\"string\"||typeof e>\"u\"?s=c||(e===\"small\"?6:8):typeof e==\"number\"?[i,s]=[e,e]:[i=-1,s=8]=e}else(t===\"circle\"||t===\"dashboard\")&&(typeof e==\"string\"||typeof e>\"u\"?[i,s]=e===\"small\"?[60,60]:[120,120]:typeof e==\"number\"?[i,s]=[e,e]:(i=(l=(o=e[0])!==null&&o!==void 0?o:e[1])!==null&&l!==void 0?l:120,s=(a=(r=e[0])!==null&&r!==void 0?r:e[1])!==null&&a!==void 0?a:120));return{width:i,height:s}};var i9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const s9=()=>h(h({},_d()),{strokeColor:wt(),direction:ke()}),c9=e=>{let t=[];return Object.keys(e).forEach(n=>{const o=parseFloat(n.replace(/%/g,\"\"));isNaN(o)||t.push({key:o,value:e[n]})}),t=t.sort((n,o)=>n.key-o.key),t.map(n=>{let{key:o,value:l}=n;return`${l} ${o}%`}).join(\", \")},u9=(e,t)=>{const{from:n=qf.blue,to:o=qf.blue,direction:l=t===\"rtl\"?\"to left\":\"to right\"}=e,r=i9(e,[\"from\",\"to\",\"direction\"]);if(Object.keys(r).length!==0){const a=c9(r);return{backgroundImage:`linear-gradient(${l}, ${a})`}}return{backgroundImage:`linear-gradient(${l}, ${n}, ${o})`}},d9=ne({compatConfig:{MODE:3},name:\"ProgressLine\",inheritAttrs:!1,props:s9(),setup(e,t){let{slots:n,attrs:o}=t;const l=I(()=>{const{strokeColor:m,direction:g}=e;return m&&typeof m!=\"string\"?u9(m,g):{backgroundColor:m}}),r=I(()=>e.strokeLinecap===\"square\"||e.strokeLinecap===\"butt\"?0:void 0),a=I(()=>e.trailColor?{backgroundColor:e.trailColor}:void 0),i=I(()=>{var m;return(m=e.size)!==null&&m!==void 0?m:[-1,e.strokeWidth||(e.size===\"small\"?6:8)]}),s=I(()=>Id(i.value,\"line\",{strokeWidth:e.strokeWidth})),c=I(()=>{const{percent:m}=e;return h({width:`${hr(m)}%`,height:`${s.value.height}px`,borderRadius:r.value},l.value)}),u=I(()=>$u(e)),d=I(()=>{const{success:m}=e;return{width:`${hr(u.value)}%`,height:`${s.value.height}px`,borderRadius:r.value,backgroundColor:m?.strokeColor}}),p={width:s.value.width<0?\"100%\":s.value.width,height:`${s.value.height}px`};return()=>{var m;return f(He,null,[f(\"div\",A(A({},o),{},{class:[`${e.prefixCls}-outer`,o.class],style:[o.style,p]}),[f(\"div\",{class:`${e.prefixCls}-inner`,style:a.value},[f(\"div\",{class:`${e.prefixCls}-bg`,style:c.value},null),u.value!==void 0?f(\"div\",{class:`${e.prefixCls}-success-bg`,style:d.value},null):null])]),(m=n.default)===null||m===void 0?void 0:m.call(n)])}}}),f9={percent:0,prefixCls:\"vc-progress\",strokeColor:\"#2db7f5\",strokeLinecap:\"round\",strokeWidth:1,trailColor:\"#D9D9D9\",trailWidth:1},p9=e=>{const t=Z(null);return Wn(()=>{const n=Date.now();let o=!1;e.value.forEach(l=>{const r=l?.$el||l;if(!r)return;o=!0;const a=r.style;a.transitionDuration=\".3s, .3s, .3s, .06s\",t.value&&n-t.value<100&&(a.transitionDuration=\"0s, 0s\")}),o&&(t.value=Date.now())}),e},m9={gapDegree:Number,gapPosition:{type:String},percent:{type:[Array,Number]},prefixCls:String,strokeColor:{type:[Object,String,Array]},strokeLinecap:{type:String},strokeWidth:Number,trailColor:String,trailWidth:Number,transition:String};var v9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};let Wy=0;function Vy(e){return+e.replace(\"%\",\"\")}function Ky(e){return Array.isArray(e)?e:[e]}function Gy(e,t,n,o){let l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5?arguments[5]:void 0;const a=50-o/2;let i=0,s=-a,c=0,u=-2*a;switch(r){case\"left\":i=-a,s=0,c=2*a,u=0;break;case\"right\":i=a,s=0,c=-2*a,u=0;break;case\"bottom\":s=a,u=2*a;break}const d=`M 50,50 m ${i},${s}\n   a ${a},${a} 0 1 1 ${c},${-u}\n   a ${a},${a} 0 1 1 ${-c},${u}`,p=Math.PI*2*a,m={stroke:n,strokeDasharray:`${t/100*(p-l)}px ${p}px`,strokeDashoffset:`-${l/2+e/100*(p-l)}px`,transition:\"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s\"};return{pathString:d,pathStyle:m}}const g9=ne({compatConfig:{MODE:3},name:\"VCCircle\",props:Je(m9,f9),setup(e){Wy+=1;const t=Z(Wy),n=I(()=>Ky(e.percent)),o=I(()=>Ky(e.strokeColor)),[l,r]=gg();p9(r);const a=()=>{const{prefixCls:i,strokeWidth:s,strokeLinecap:c,gapDegree:u,gapPosition:d}=e;let p=0;return n.value.map((m,g)=>{const v=o.value[g]||o.value[o.value.length-1],y=Object.prototype.toString.call(v)===\"[object Object]\"?`url(#${i}-gradient-${t.value})`:\"\",{pathString:b,pathStyle:S}=Gy(p,m,v,s,u,d);p+=m;const $={key:g,d:b,stroke:y,\"stroke-linecap\":c,\"stroke-width\":s,opacity:m===0?0:1,\"fill-opacity\":\"0\",class:`${i}-circle-path`,style:S};return f(\"path\",A({ref:l(g)},$),null)})};return()=>{const{prefixCls:i,strokeWidth:s,trailWidth:c,gapDegree:u,gapPosition:d,trailColor:p,strokeLinecap:m,strokeColor:g}=e,v=v9(e,[\"prefixCls\",\"strokeWidth\",\"trailWidth\",\"gapDegree\",\"gapPosition\",\"trailColor\",\"strokeLinecap\",\"strokeColor\"]),{pathString:y,pathStyle:b}=Gy(0,100,p,s,u,d);delete v.percent;const S=o.value.find(w=>Object.prototype.toString.call(w)===\"[object Object]\"),$={d:y,stroke:p,\"stroke-linecap\":m,\"stroke-width\":c||s,\"fill-opacity\":\"0\",class:`${i}-circle-trail`,style:b};return f(\"svg\",A({class:`${i}-circle`,viewBox:\"0 0 100 100\"},v),[S&&f(\"defs\",null,[f(\"linearGradient\",{id:`${i}-gradient-${t.value}`,x1:\"100%\",y1:\"0%\",x2:\"0%\",y2:\"0%\"},[Object.keys(S).sort((w,C)=>Vy(w)-Vy(C)).map((w,C)=>f(\"stop\",{key:C,offset:w,\"stop-color\":S[w]},null))])]),f(\"path\",$,null),a().reverse()])}}}),h9=()=>h(h({},_d()),{strokeColor:wt()}),b9=3,y9=e=>b9/e*100,S9=ne({compatConfig:{MODE:3},name:\"ProgressCircle\",inheritAttrs:!1,props:Je(h9(),{trailColor:null}),setup(e,t){let{slots:n,attrs:o}=t;const l=I(()=>{var v;return(v=e.width)!==null&&v!==void 0?v:120}),r=I(()=>{var v;return(v=e.size)!==null&&v!==void 0?v:[l.value,l.value]}),a=I(()=>Id(r.value,\"circle\")),i=I(()=>{if(e.gapDegree||e.gapDegree===0)return e.gapDegree;if(e.type===\"dashboard\")return 75}),s=I(()=>({width:`${a.value.width}px`,height:`${a.value.height}px`,fontSize:`${a.value.width*.15+6}px`})),c=I(()=>{var v;return(v=e.strokeWidth)!==null&&v!==void 0?v:Math.max(y9(a.value.width),6)}),u=I(()=>e.gapPosition||e.type===\"dashboard\"&&\"bottom\"||void 0),d=I(()=>r9(e)),p=I(()=>Object.prototype.toString.call(e.strokeColor)===\"[object Object]\"),m=I(()=>a9({success:e.success,strokeColor:e.strokeColor})),g=I(()=>({[`${e.prefixCls}-inner`]:!0,[`${e.prefixCls}-circle-gradient`]:p.value}));return()=>{var v;const y=f(g9,{percent:d.value,strokeWidth:c.value,trailWidth:c.value,strokeColor:m.value,strokeLinecap:e.strokeLinecap,trailColor:e.trailColor,prefixCls:e.prefixCls,gapDegree:i.value,gapPosition:u.value},null);return f(\"div\",A(A({},o),{},{class:[g.value,o.class],style:[o.style,s.value]}),[a.value.width<=20?f(Fn,null,{default:()=>[f(\"span\",null,[y])],title:n.default}):f(He,null,[y,(v=n.default)===null||v===void 0?void 0:v.call(n)])])}}}),$9=()=>h(h({},_d()),{steps:Number,strokeColor:Fe(),trailColor:String}),C9=ne({compatConfig:{MODE:3},name:\"Steps\",props:$9(),setup(e,t){let{slots:n}=t;const o=I(()=>Math.round(e.steps*((e.percent||0)/100))),l=I(()=>{var i;return(i=e.size)!==null&&i!==void 0?i:[e.size===\"small\"?2:14,e.strokeWidth||8]}),r=I(()=>Id(l.value,\"step\",{steps:e.steps,strokeWidth:e.strokeWidth||8})),a=I(()=>{const{steps:i,strokeColor:s,trailColor:c,prefixCls:u}=e,d=[];for(let p=0;p<i;p+=1){const m=Array.isArray(s)?s[p]:s,g={[`${u}-steps-item`]:!0,[`${u}-steps-item-active`]:p<=o.value-1};d.push(f(\"div\",{key:p,class:g,style:{backgroundColor:p<=o.value-1?m:c,width:`${r.value.width/i}px`,height:`${r.value.height}px`}},null))}return d});return()=>{var i;return f(\"div\",{class:`${e.prefixCls}-steps-outer`},[a.value,(i=n.default)===null||i===void 0?void 0:i.call(n)])}}}),x9=new rt(\"antProgressActive\",{\"0%\":{transform:\"translateX(-100%) scaleX(0)\",opacity:.1},\"20%\":{transform:\"translateX(-100%) scaleX(0)\",opacity:.5},to:{transform:\"translateX(0) scaleX(1)\",opacity:0}}),w9=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:h(h({},qe(e)),{display:\"inline-block\",\"&-rtl\":{direction:\"rtl\"},\"&-line\":{position:\"relative\",width:\"100%\",fontSize:e.fontSize,marginInlineEnd:e.marginXS,marginBottom:e.marginXS},[`${t}-outer`]:{display:\"inline-block\",width:\"100%\"},[`&${t}-show-info`]:{[`${t}-outer`]:{marginInlineEnd:`calc(-2em - ${e.marginXS}px)`,paddingInlineEnd:`calc(2em + ${e.paddingXS}px)`}},[`${t}-inner`]:{position:\"relative\",display:\"inline-block\",width:\"100%\",overflow:\"hidden\",verticalAlign:\"middle\",backgroundColor:e.progressRemainingColor,borderRadius:e.progressLineRadius},[`${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorInfo}},[`${t}-success-bg, ${t}-bg`]:{position:\"relative\",backgroundColor:e.colorInfo,borderRadius:e.progressLineRadius,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`},[`${t}-success-bg`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,backgroundColor:e.colorSuccess},[`${t}-text`]:{display:\"inline-block\",width:\"2em\",marginInlineStart:e.marginXS,color:e.progressInfoTextColor,lineHeight:1,whiteSpace:\"nowrap\",textAlign:\"start\",verticalAlign:\"middle\",wordBreak:\"normal\",[n]:{fontSize:e.fontSize}},[`&${t}-status-active`]:{[`${t}-bg::before`]:{position:\"absolute\",inset:0,backgroundColor:e.colorBgContainer,borderRadius:e.progressLineRadius,opacity:0,animationName:x9,animationDuration:e.progressActiveMotionDuration,animationTimingFunction:e.motionEaseOutQuint,animationIterationCount:\"infinite\",content:'\"\"'}},[`&${t}-status-exception`]:{[`${t}-bg`]:{backgroundColor:e.colorError},[`${t}-text`]:{color:e.colorError}},[`&${t}-status-exception ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorError}},[`&${t}-status-success`]:{[`${t}-bg`]:{backgroundColor:e.colorSuccess},[`${t}-text`]:{color:e.colorSuccess}},[`&${t}-status-success ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorSuccess}}})}},_9=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:{[`${t}-circle-trail`]:{stroke:e.progressRemainingColor},[`&${t}-circle ${t}-inner`]:{position:\"relative\",lineHeight:1,backgroundColor:\"transparent\"},[`&${t}-circle ${t}-text`]:{position:\"absolute\",insetBlockStart:\"50%\",insetInlineStart:0,width:\"100%\",margin:0,padding:0,color:e.colorText,lineHeight:1,whiteSpace:\"normal\",textAlign:\"center\",transform:\"translateY(-50%)\",[n]:{fontSize:`${e.fontSize/e.fontSizeSM}em`}},[`${t}-circle&-status-exception`]:{[`${t}-text`]:{color:e.colorError}},[`${t}-circle&-status-success`]:{[`${t}-text`]:{color:e.colorSuccess}}},[`${t}-inline-circle`]:{lineHeight:1,[`${t}-inner`]:{verticalAlign:\"bottom\"}}}},I9=e=>{const{componentCls:t}=e;return{[t]:{[`${t}-steps`]:{display:\"inline-block\",\"&-outer\":{display:\"flex\",flexDirection:\"row\",alignItems:\"center\"},\"&-item\":{flexShrink:0,minWidth:e.progressStepMinWidth,marginInlineEnd:e.progressStepMarginInlineEnd,backgroundColor:e.progressRemainingColor,transition:`all ${e.motionDurationSlow}`,\"&-active\":{backgroundColor:e.colorInfo}}}}}},P9=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:{[`${t}-small&-line, ${t}-small&-line ${t}-text ${n}`]:{fontSize:e.fontSizeSM}}}},T9=Xe(\"Progress\",e=>{const t=e.marginXXS/2,n=Le(e,{progressLineRadius:100,progressInfoTextColor:e.colorText,progressDefaultColor:e.colorInfo,progressRemainingColor:e.colorFillSecondary,progressStepMarginInlineEnd:t,progressStepMinWidth:t,progressActiveMotionDuration:\"2.4s\"});return[w9(n),_9(n),I9(n),P9(n)]});var O9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const E9=ne({compatConfig:{MODE:3},name:\"AProgress\",inheritAttrs:!1,props:Je(_d(),{type:\"line\",percent:0,showInfo:!0,trailColor:null,size:\"default\",strokeLinecap:\"round\"}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"progress\",e),[a,i]=T9(l),s=I(()=>Array.isArray(e.strokeColor)?e.strokeColor[0]:e.strokeColor),c=I(()=>{const{percent:g=0}=e,v=$u(e);return parseInt(v!==void 0?v.toString():g.toString(),10)}),u=I(()=>{const{status:g}=e;return!l9.includes(g)&&c.value>=100?\"success\":g||\"normal\"}),d=I(()=>{const{type:g,showInfo:v,size:y}=e,b=l.value;return{[b]:!0,[`${b}-inline-circle`]:g===\"circle\"&&Id(y,\"circle\").width<=20,[`${b}-${g===\"dashboard\"&&\"circle\"||g}`]:!0,[`${b}-status-${u.value}`]:!0,[`${b}-show-info`]:v,[`${b}-${y}`]:y,[`${b}-rtl`]:r.value===\"rtl\",[i.value]:!0}}),p=I(()=>typeof e.strokeColor==\"string\"||Array.isArray(e.strokeColor)?e.strokeColor:void 0),m=()=>{const{showInfo:g,format:v,type:y,percent:b,title:S}=e,$=$u(e);if(!g)return null;let w;const C=v||n?.format||(x=>`${x}%`),_=y===\"line\";return v||n?.format||u.value!==\"exception\"&&u.value!==\"success\"?w=C(hr(b),hr($)):u.value===\"exception\"?w=_?f(Vn,null,null):f(Kn,null,null):u.value===\"success\"&&(w=_?f(hl,null,null):f(Iu,null,null)),f(\"span\",{class:`${l.value}-text`,title:S===void 0&&typeof w==\"string\"?w:void 0},[w])};return()=>{const{type:g,steps:v,title:y}=e,{class:b}=o,S=O9(o,[\"class\"]),$=m();let w;return g===\"line\"?w=v?f(C9,A(A({},e),{},{strokeColor:p.value,prefixCls:l.value,steps:v}),{default:()=>[$]}):f(d9,A(A({},e),{},{strokeColor:s.value,prefixCls:l.value,direction:r.value}),{default:()=>[$]}):(g===\"circle\"||g===\"dashboard\")&&(w=f(S9,A(A({},e),{},{prefixCls:l.value,strokeColor:s.value,progressStatus:u.value}),{default:()=>[$]})),a(f(\"div\",A(A({role:\"progressbar\"},S),{},{class:[d.value,b],title:y}),[w]))}}}),jg=Dt(E9);function M9(e){let t=e.scrollX;const n=\"scrollLeft\";if(typeof t!=\"number\"){const o=e.document;t=o.documentElement[n],typeof t!=\"number\"&&(t=o.body[n])}return t}function A9(e){let t,n;const o=e.ownerDocument,{body:l}=o,r=o&&o.documentElement,a=e.getBoundingClientRect();return t=a.left,n=a.top,t-=r.clientLeft||l.clientLeft||0,n-=r.clientTop||l.clientTop||0,{left:t,top:n}}function D9(e){const t=A9(e),n=e.ownerDocument,o=n.defaultView||n.parentWindow;return t.left+=M9(o),t.left}const R9={value:Number,index:Number,prefixCls:String,allowHalf:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},character:W.any,characterRender:Function,focused:{type:Boolean,default:void 0},count:Number,onClick:Function,onHover:Function},k9=ne({compatConfig:{MODE:3},name:\"Star\",inheritAttrs:!1,props:R9,emits:[\"hover\",\"click\"],setup(e,t){let{emit:n}=t;const o=i=>{const{index:s}=e;n(\"hover\",i,s)},l=i=>{const{index:s}=e;n(\"click\",i,s)},r=i=>{const{index:s}=e;i.keyCode===13&&n(\"click\",i,s)},a=I(()=>{const{prefixCls:i,index:s,value:c,allowHalf:u,focused:d}=e,p=s+1;let m=i;return c===0&&s===0&&d?m+=` ${i}-focused`:u&&c+.5>=p&&c<p?(m+=` ${i}-half ${i}-active`,d&&(m+=` ${i}-focused`)):(m+=p<=c?` ${i}-full`:` ${i}-zero`,p===c&&d&&(m+=` ${i}-focused`)),m});return()=>{const{disabled:i,prefixCls:s,characterRender:c,character:u,index:d,count:p,value:m}=e,g=typeof u==\"function\"?u({disabled:i,prefixCls:s,index:d,count:p,value:m}):u;let v=f(\"li\",{class:a.value},[f(\"div\",{onClick:i?null:l,onKeydown:i?null:r,onMousemove:i?null:o,role:\"radio\",\"aria-checked\":m>d?\"true\":\"false\",\"aria-posinset\":d+1,\"aria-setsize\":p,tabindex:i?-1:0},[f(\"div\",{class:`${s}-first`},[g]),f(\"div\",{class:`${s}-second`},[g])])]);return c&&(v=c(v,e)),v}}}),N9=e=>{const{componentCls:t}=e;return{[`${t}-star`]:{position:\"relative\",display:\"inline-block\",color:\"inherit\",cursor:\"pointer\",\"&:not(:last-child)\":{marginInlineEnd:e.marginXS},\"> div\":{transition:`all ${e.motionDurationMid}, outline 0s`,\"&:hover\":{transform:e.rateStarHoverScale},\"&:focus\":{outline:0},\"&:focus-visible\":{outline:`${e.lineWidth}px dashed ${e.rateStarColor}`,transform:e.rateStarHoverScale}},\"&-first, &-second\":{color:e.defaultColor,transition:`all ${e.motionDurationMid}`,userSelect:\"none\",[e.iconCls]:{verticalAlign:\"middle\"}},\"&-first\":{position:\"absolute\",top:0,insetInlineStart:0,width:\"50%\",height:\"100%\",overflow:\"hidden\",opacity:0},[`&-half ${t}-star-first, &-half ${t}-star-second`]:{opacity:1},[`&-half ${t}-star-first, &-full ${t}-star-second`]:{color:\"inherit\"}}}},B9=e=>({[`&-rtl${e.componentCls}`]:{direction:\"rtl\"}}),L9=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h({},qe(e)),{display:\"inline-block\",margin:0,padding:0,color:e.rateStarColor,fontSize:e.rateStarSize,lineHeight:\"unset\",listStyle:\"none\",outline:\"none\",[`&-disabled${t} ${t}-star`]:{cursor:\"default\",\"&:hover\":{transform:\"scale(1)\"}}}),N9(e)),{[`+ ${t}-text`]:{display:\"inline-block\",marginInlineStart:e.marginXS,fontSize:e.fontSize}}),B9(e))}},F9=Xe(\"Rate\",e=>{const{colorFillContent:t}=e,n=Le(e,{rateStarColor:e[\"yellow-6\"],rateStarSize:e.controlHeightLG*.5,rateStarHoverScale:\"scale(1.1)\",defaultColor:t});return[L9(n)]}),z9=()=>({prefixCls:String,count:Number,value:Number,allowHalf:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},tooltips:Array,disabled:{type:Boolean,default:void 0},character:W.any,autofocus:{type:Boolean,default:void 0},tabindex:W.oneOfType([W.number,W.string]),direction:String,id:String,onChange:Function,onHoverChange:Function,\"onUpdate:value\":Function,onFocus:Function,onBlur:Function,onKeydown:Function}),H9=ne({compatConfig:{MODE:3},name:\"ARate\",inheritAttrs:!1,props:Je(z9(),{value:0,count:5,allowHalf:!1,allowClear:!0,tabindex:0,direction:\"ltr\"}),setup(e,t){let{slots:n,attrs:o,emit:l,expose:r}=t;const{prefixCls:a,direction:i}=Te(\"rate\",e),[s,c]=F9(a),u=Jt(),d=Z(),[p,m]=gg(),g=gt({value:e.value,focused:!1,cleanedValue:null,hoverValue:void 0});pe(()=>e.value,()=>{g.value=e.value});const v=O=>Tn(m.value.get(O)),y=(O,R)=>{const D=i.value===\"rtl\";let z=O+1;if(e.allowHalf){const T=v(O),k=D9(T),B=T.clientWidth;(D&&R-k>B/2||!D&&R-k<B/2)&&(z-=.5)}return z},b=O=>{e.value===void 0&&(g.value=O),l(\"update:value\",O),l(\"change\",O),u.onFieldChange()},S=(O,R)=>{const D=y(R,O.pageX);D!==g.cleanedValue&&(g.hoverValue=D,g.cleanedValue=null),l(\"hoverChange\",D)},$=()=>{g.hoverValue=void 0,g.cleanedValue=null,l(\"hoverChange\",void 0)},w=(O,R)=>{const{allowClear:D}=e,z=y(R,O.pageX);let T=!1;D&&(T=z===g.value),$(),b(T?0:z),g.cleanedValue=T?z:null},C=O=>{g.focused=!0,l(\"focus\",O)},_=O=>{g.focused=!1,l(\"blur\",O),u.onFieldBlur()},x=O=>{const{keyCode:R}=O,{count:D,allowHalf:z}=e,T=i.value===\"rtl\";R===we.RIGHT&&g.value<D&&!T?(z?g.value+=.5:g.value+=1,b(g.value),O.preventDefault()):R===we.LEFT&&g.value>0&&!T||R===we.RIGHT&&g.value>0&&T?(z?g.value-=.5:g.value-=1,b(g.value),O.preventDefault()):R===we.LEFT&&g.value<D&&T&&(z?g.value+=.5:g.value+=1,b(g.value),O.preventDefault()),l(\"keydown\",O)},P=()=>{e.disabled||d.value.focus()};r({focus:P,blur:()=>{e.disabled||d.value.blur()}}),Be(()=>{const{autofocus:O,disabled:R}=e;O&&!R&&P()});const M=(O,R)=>{let{index:D}=R;const{tooltips:z}=e;return z?f(Fn,{title:z[D]},{default:()=>[O]}):O};return()=>{const{count:O,allowHalf:R,disabled:D,tabindex:z,id:T=u.id.value}=e,{class:k,style:B}=o,L=[],N=D?`${a.value}-disabled`:\"\",F=e.character||n.character||(()=>f(KI,null,null));for(let H=0;H<O;H++)L.push(f(k9,{ref:p(H),key:H,index:H,count:O,disabled:D,prefixCls:`${a.value}-star`,allowHalf:R,value:g.hoverValue===void 0?g.value:g.hoverValue,onClick:w,onHover:S,character:F,characterRender:M,focused:g.focused},null));const j=re(a.value,N,k,{[c.value]:!0,[`${a.value}-rtl`]:i.value===\"rtl\"});return s(f(\"ul\",A(A({},o),{},{id:T,class:j,style:B,onMouseleave:D?null:$,tabindex:D?-1:z,onFocus:D?null:C,onBlur:D?null:_,onKeydown:D?null:x,ref:d,role:\"radiogroup\"}),[L]))}}}),j9=Dt(H9),W9=()=>f(\"svg\",{width:\"252\",height:\"294\"},[f(\"defs\",null,[f(\"path\",{d:\"M0 .387h251.772v251.772H0z\"},null)]),f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"g\",{transform:\"translate(0 .012)\"},[f(\"mask\",{fill:\"#fff\"},null),f(\"path\",{d:\"M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321\",fill:\"#E4EBF7\",mask:\"url(#b)\"},null)]),f(\"path\",{d:\"M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66\",fill:\"#FFF\"},null),f(\"path\",{d:\"M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175\",fill:\"#FFF\"},null),f(\"path\",{d:\"M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932\",fill:\"#FFF\"},null),f(\"path\",{d:\"M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382\",fill:\"#FFF\"},null),f(\"path\",{d:\"M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{stroke:\"#FFF\",\"stroke-width\":\"2\",d:\"M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39\"},null),f(\"path\",{d:\"M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742\",fill:\"#FFF\"},null),f(\"path\",{d:\"M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48\",fill:\"#1890FF\"},null),f(\"path\",{d:\"M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894\",fill:\"#FFF\"},null),f(\"path\",{d:\"M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682\",fill:\"#FFF\"},null),f(\"path\",{d:\"M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165\",fill:\"#7BB2F9\"},null),f(\"path\",{d:\"M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M107.275 222.1s2.773-1.11 6.102-3.884\",stroke:\"#648BD8\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038\",fill:\"#192064\"},null),f(\"path\",{d:\"M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81\",fill:\"#FFF\"},null),f(\"path\",{d:\"M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642\",fill:\"#192064\"},null),f(\"path\",{d:\"M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z\",fill:\"#520038\"},null),f(\"path\",{d:\"M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254\",fill:\"#552950\"},null),f(\"path\",{stroke:\"#DB836E\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",d:\"M110.13 74.84l-.896 1.61-.298 4.357h-2.228\"},null),f(\"path\",{d:\"M110.846 74.481s1.79-.716 2.506.537\",stroke:\"#5C2552\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67\",stroke:\"#DB836E\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M103.287 72.93s1.83 1.113 4.137.954\",stroke:\"#5C2552\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639\",stroke:\"#DB836E\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.101\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M129.405 122.865s-5.272 7.403-9.422 10.768\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M119.306 107.329s.452 4.366-2.127 32.062\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.101\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01\",fill:\"#F2D7AD\"},null),f(\"path\",{d:\"M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92\",fill:\"#F4D19D\"},null),f(\"path\",{d:\"M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z\",fill:\"#F2D7AD\"},null),f(\"path\",{fill:\"#CC9B6E\",d:\"M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z\"},null),f(\"path\",{d:\"M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83\",fill:\"#F4D19D\"},null),f(\"path\",{fill:\"#CC9B6E\",d:\"M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z\"},null),f(\"path\",{fill:\"#CC9B6E\",d:\"M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z\"},null),f(\"path\",{d:\"M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044\",stroke:\"#DB836E\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617\",stroke:\"#DB836E\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754\",stroke:\"#DB836E\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647\",fill:\"#5BA02E\"},null),f(\"path\",{d:\"M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647\",fill:\"#92C110\"},null),f(\"path\",{d:\"M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187\",fill:\"#F2D7AD\"},null),f(\"path\",{d:\"M88.979 89.48s7.776 5.384 16.6 2.842\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.101\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null)])]),V9=()=>f(\"svg\",{width:\"254\",height:\"294\"},[f(\"defs\",null,[f(\"path\",{d:\"M0 .335h253.49v253.49H0z\"},null),f(\"path\",{d:\"M0 293.665h253.49V.401H0z\"},null)]),f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"g\",{transform:\"translate(0 .067)\"},[f(\"mask\",{fill:\"#fff\"},null),f(\"path\",{d:\"M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134\",fill:\"#E4EBF7\",mask:\"url(#b)\"},null)]),f(\"path\",{d:\"M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671\",fill:\"#FFF\"},null),f(\"path\",{d:\"M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238\",fill:\"#FFF\"},null),f(\"path\",{d:\"M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775\",fill:\"#FFF\"},null),f(\"path\",{d:\"M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68\",fill:\"#FF603B\"},null),f(\"path\",{d:\"M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733\",fill:\"#FFF\"},null),f(\"path\",{d:\"M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235\",fill:\"#FFF\"},null),f(\"path\",{d:\"M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z\",fill:\"#520038\"},null),f(\"path\",{d:\"M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26\",fill:\"#552950\"},null),f(\"path\",{stroke:\"#DB836E\",\"stroke-width\":\"1.063\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",d:\"M99.206 73.644l-.9 1.62-.3 4.38h-2.24\"},null),f(\"path\",{d:\"M99.926 73.284s1.8-.72 2.52.54\",stroke:\"#5C2552\",\"stroke-width\":\"1.117\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68\",stroke:\"#DB836E\",\"stroke-width\":\"1.117\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M92.326 71.724s1.84 1.12 4.16.96\",stroke:\"#5C2552\",\"stroke-width\":\"1.117\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954\",stroke:\"#DB836E\",\"stroke-width\":\"1.063\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.136\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583\",fill:\"#FFF\"},null),f(\"path\",{d:\"M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575\",fill:\"#FFF\"},null),f(\"path\",{d:\"M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69\",fill:\"#7BB2F9\"},null),f(\"path\",{d:\"M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034\",stroke:\"#648BD8\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M96.973 219.373s2.882-1.153 6.34-4.034\",stroke:\"#648BD8\",\"stroke-width\":\"1.032\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07\",stroke:\"#648BD8\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62\",fill:\"#192064\"},null),f(\"path\",{d:\"M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843\",fill:\"#FFF\"},null),f(\"path\",{d:\"M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668\",fill:\"#192064\"},null),f(\"path\",{d:\"M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513\",stroke:\"#648BD8\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593\",stroke:\"#DB836E\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762\",stroke:\"#E59788\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12\",stroke:\"#E59788\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M109.278 112.533s3.38-3.613 7.575-4.662\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M107.375 123.006s9.697-2.745 11.445-.88\",stroke:\"#E59788\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955\",stroke:\"#BFCDDD\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01\",fill:\"#A3B4C6\"},null),f(\"path\",{d:\"M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813\",fill:\"#A3B4C6\"},null),f(\"mask\",{fill:\"#fff\"},null),f(\"path\",{fill:\"#A3B4C6\",mask:\"url(#d)\",d:\"M154.098 190.096h70.513v-84.617h-70.513z\"},null),f(\"path\",{d:\"M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208\",fill:\"#BFCDDD\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802\",fill:\"#FFF\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209\",fill:\"#BFCDDD\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751\",stroke:\"#7C90A5\",\"stroke-width\":\"1.124\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802\",fill:\"#FFF\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407\",fill:\"#BFCDDD\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M177.259 207.217v11.52M201.05 207.217v11.52\",stroke:\"#A3B4C6\",\"stroke-width\":\"1.124\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422\",fill:\"#5BA02E\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423\",fill:\"#92C110\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209\",fill:\"#F2D7AD\",mask:\"url(#d)\"},null)])]),K9=()=>f(\"svg\",{width:\"251\",height:\"294\"},[f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"path\",{d:\"M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023\",fill:\"#E4EBF7\"},null),f(\"path\",{d:\"M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65\",fill:\"#FFF\"},null),f(\"path\",{d:\"M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126\",fill:\"#FFF\"},null),f(\"path\",{d:\"M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873\",fill:\"#FFF\"},null),f(\"path\",{d:\"M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375\",fill:\"#FFF\"},null),f(\"path\",{d:\"M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{stroke:\"#FFF\",\"stroke-width\":\"2\",d:\"M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668\"},null),f(\"path\",{d:\"M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321\",fill:\"#A26EF4\"},null),f(\"path\",{d:\"M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734\",fill:\"#FFF\"},null),f(\"path\",{d:\"M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717\",fill:\"#FFF\"},null),f(\"path\",{d:\"M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61\",fill:\"#5BA02E\"},null),f(\"path\",{d:\"M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611\",fill:\"#92C110\"},null),f(\"path\",{d:\"M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17\",fill:\"#F2D7AD\"},null),f(\"path\",{d:\"M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085\",fill:\"#FFF\"},null),f(\"path\",{d:\"M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929\",fill:\"#FFF\"},null),f(\"path\",{d:\"M78.18 94.656s.911 7.41-4.914 13.078\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437\",stroke:\"#E4EBF7\",\"stroke-width\":\".932\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103\",fill:\"#5C2552\"},null),f(\"path\",{d:\"M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145\",fill:\"#FFC6A0\"},null),f(\"path\",{stroke:\"#DB836E\",\"stroke-width\":\"1.145\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",d:\"M100.843 77.099l1.701-.928-1.015-4.324.674-1.406\"},null),f(\"path\",{d:\"M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32\",fill:\"#552950\"},null),f(\"path\",{d:\"M91.132 86.786s5.269 4.957 12.679 2.327\",stroke:\"#DB836E\",\"stroke-width\":\"1.145\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25\",fill:\"#DB836E\"},null),f(\"path\",{d:\"M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073\",stroke:\"#5C2552\",\"stroke-width\":\"1.526\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254\",stroke:\"#DB836E\",\"stroke-width\":\"1.145\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M66.508 86.763s-1.598 8.83-6.697 14.078\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.114\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M128.31 87.934s3.013 4.121 4.06 11.785\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M64.09 84.816s-6.03 9.912-13.607 9.903\",stroke:\"#DB836E\",\"stroke-width\":\".795\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M130.532 85.488s4.588 5.757 11.619 6.214\",stroke:\"#DB836E\",\"stroke-width\":\".75\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M121.708 105.73s-.393 8.564-1.34 13.612\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M115.784 161.512s-3.57-1.488-2.678-7.14\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954\",fill:\"#7BB2F9\"},null),f(\"path\",{d:\"M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M108.459 220.905s2.759-1.104 6.07-3.863\",stroke:\"#648BD8\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017\",fill:\"#192064\"},null),f(\"path\",{d:\"M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806\",fill:\"#FFF\"},null),f(\"path\",{d:\"M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64\",fill:\"#192064\"},null),f(\"path\",{d:\"M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null)])]),G9=e=>{const{componentCls:t,lineHeightHeading3:n,iconCls:o,padding:l,paddingXL:r,paddingXS:a,paddingLG:i,marginXS:s,lineHeight:c}=e;return{[t]:{padding:`${i*2}px ${r}px`,\"&-rtl\":{direction:\"rtl\"}},[`${t} ${t}-image`]:{width:e.imageWidth,height:e.imageHeight,margin:\"auto\"},[`${t} ${t}-icon`]:{marginBottom:i,textAlign:\"center\",[`& > ${o}`]:{fontSize:e.resultIconFontSize}},[`${t} ${t}-title`]:{color:e.colorTextHeading,fontSize:e.resultTitleFontSize,lineHeight:n,marginBlock:s,textAlign:\"center\"},[`${t} ${t}-subtitle`]:{color:e.colorTextDescription,fontSize:e.resultSubtitleFontSize,lineHeight:c,textAlign:\"center\"},[`${t} ${t}-content`]:{marginTop:i,padding:`${i}px ${l*2.5}px`,backgroundColor:e.colorFillAlter},[`${t} ${t}-extra`]:{margin:e.resultExtraMargin,textAlign:\"center\",\"& > *\":{marginInlineEnd:a,\"&:last-child\":{marginInlineEnd:0}}}}},X9=e=>{const{componentCls:t,iconCls:n}=e;return{[`${t}-success ${t}-icon > ${n}`]:{color:e.resultSuccessIconColor},[`${t}-error ${t}-icon > ${n}`]:{color:e.resultErrorIconColor},[`${t}-info ${t}-icon > ${n}`]:{color:e.resultInfoIconColor},[`${t}-warning ${t}-icon > ${n}`]:{color:e.resultWarningIconColor}}},U9=e=>[G9(e),X9(e)],Y9=e=>U9(e),q9=Xe(\"Result\",e=>{const{paddingLG:t,fontSizeHeading3:n}=e,o=e.fontSize,l=`${t}px 0 0 0`,r=e.colorInfo,a=e.colorError,i=e.colorSuccess,s=e.colorWarning,c=Le(e,{resultTitleFontSize:n,resultSubtitleFontSize:o,resultIconFontSize:n*3,resultExtraMargin:l,resultInfoIconColor:r,resultErrorIconColor:a,resultSuccessIconColor:i,resultWarningIconColor:s});return[Y9(c)]},{imageWidth:250,imageHeight:295}),Z9={success:hl,error:Vn,info:gl,warning:GI},Qi={404:W9,500:V9,403:K9},Q9=Object.keys(Qi),J9=()=>({prefixCls:String,icon:W.any,status:{type:[Number,String],default:\"info\"},title:W.any,subTitle:W.any,extra:W.any}),ej=(e,t)=>{let{status:n,icon:o}=t;if(Q9.includes(`${n}`)){const a=Qi[n];return f(\"div\",{class:`${e}-icon ${e}-image`},[f(a,null,null)])}const l=Z9[n],r=o||f(l,null,null);return f(\"div\",{class:`${e}-icon`},[r])},tj=(e,t)=>t&&f(\"div\",{class:`${e}-extra`},[t]),br=ne({compatConfig:{MODE:3},name:\"AResult\",inheritAttrs:!1,props:J9(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"result\",e),[a,i]=q9(l),s=I(()=>re(l.value,i.value,`${l.value}-${e.status}`,{[`${l.value}-rtl`]:r.value===\"rtl\"}));return()=>{var c,u,d,p,m,g,v,y;const b=(c=e.title)!==null&&c!==void 0?c:(u=n.title)===null||u===void 0?void 0:u.call(n),S=(d=e.subTitle)!==null&&d!==void 0?d:(p=n.subTitle)===null||p===void 0?void 0:p.call(n),$=(m=e.icon)!==null&&m!==void 0?m:(g=n.icon)===null||g===void 0?void 0:g.call(n),w=(v=e.extra)!==null&&v!==void 0?v:(y=n.extra)===null||y===void 0?void 0:y.call(n),C=l.value;return a(f(\"div\",A(A({},o),{},{class:[s.value,o.class]}),[ej(C,{status:e.status,icon:$}),f(\"div\",{class:`${C}-title`},[b]),S&&f(\"div\",{class:`${C}-subtitle`},[S]),tj(C,w),n.default&&f(\"div\",{class:`${C}-content`},[n.default()])]))}}});br.PRESENTED_IMAGE_403=Qi[403];br.PRESENTED_IMAGE_404=Qi[404];br.PRESENTED_IMAGE_500=Qi[500];br.install=function(e){return e.component(br.name,br),e};const nj=Dt(Ig),Wg=(e,t)=>{let{attrs:n}=t;const{included:o,vertical:l,style:r,class:a}=n;let{length:i,offset:s,reverse:c}=n;i<0&&(c=!c,i=Math.abs(i),s=100-s);const u=l?{[c?\"top\":\"bottom\"]:`${s}%`,[c?\"bottom\":\"top\"]:\"auto\",height:`${i}%`}:{[c?\"right\":\"left\"]:`${s}%`,[c?\"left\":\"right\"]:\"auto\",width:`${i}%`},d=h(h({},r),u);return o?f(\"div\",{class:a,style:d},null):null};Wg.inheritAttrs=!1;const oj=(e,t,n,o,l,r)=>{const a=Object.keys(t).map(parseFloat).sort((i,s)=>i-s);if(n&&o)for(let i=l;i<=r;i+=o)a.indexOf(i)===-1&&a.push(i);return a},W_=(e,t)=>{let{attrs:n}=t;const{prefixCls:o,vertical:l,reverse:r,marks:a,dots:i,step:s,included:c,lowerBound:u,upperBound:d,max:p,min:m,dotStyle:g,activeDotStyle:v}=n,y=p-m,b=oj(l,a,i,s,m,p).map(S=>{const $=`${Math.abs(S-m)/y*100}%`,w=!c&&S===d||c&&S<=d&&S>=u;let C=l?h(h({},g),{[r?\"top\":\"bottom\"]:$}):h(h({},g),{[r?\"right\":\"left\"]:$});w&&(C=h(h({},C),v));const _=re({[`${o}-dot`]:!0,[`${o}-dot-active`]:w,[`${o}-dot-reverse`]:r});return f(\"span\",{class:_,style:C,key:S},null)});return f(\"div\",{class:`${o}-step`},[b])};W_.inheritAttrs=!1;const V_=(e,t)=>{let{attrs:n,slots:o}=t;const{class:l,vertical:r,reverse:a,marks:i,included:s,upperBound:c,lowerBound:u,max:d,min:p,onClickLabel:m}=n,g=Object.keys(i),v=o.mark,y=d-p,b=g.map(parseFloat).sort((S,$)=>S-$).map(S=>{const $=typeof i[S]==\"function\"?i[S]():i[S],w=typeof $==\"object\"&&!Gt($);let C=w?$.label:$;if(!C&&C!==0)return null;v&&(C=v({point:S,label:C}));const _=!s&&S===c||s&&S<=c&&S>=u,x=re({[`${l}-text`]:!0,[`${l}-text-active`]:_}),P={marginBottom:\"-50%\",[a?\"top\":\"bottom\"]:`${(S-p)/y*100}%`},E={transform:`translateX(${a?\"50%\":\"-50%\"})`,msTransform:`translateX(${a?\"50%\":\"-50%\"})`,[a?\"right\":\"left\"]:`${(S-p)/y*100}%`},M=r?P:E,O=w?h(h({},M),$.style):M,R={[qt?\"onTouchstartPassive\":\"onTouchstart\"]:D=>m(D,S)};return f(\"span\",A({class:x,style:O,key:S,onMousedown:D=>m(D,S)},R),[C])});return f(\"div\",{class:l},[b])};V_.inheritAttrs=!1;const K_=ne({compatConfig:{MODE:3},name:\"Handle\",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:W.oneOfType([W.number,W.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup(e,t){let{attrs:n,emit:o,expose:l}=t;const r=ee(!1),a=ee(),i=()=>{document.activeElement===a.value&&(r.value=!0)},s=y=>{r.value=!1,o(\"blur\",y)},c=()=>{r.value=!1},u=()=>{var y;(y=a.value)===null||y===void 0||y.focus()},d=()=>{var y;(y=a.value)===null||y===void 0||y.blur()},p=()=>{r.value=!0,u()},m=y=>{y.preventDefault(),u(),o(\"mousedown\",y)};l({focus:u,blur:d,clickFocus:p,ref:a});let g=null;Be(()=>{g=Rt(document,\"mouseup\",i)}),ot(()=>{g?.remove()});const v=I(()=>{const{vertical:y,offset:b,reverse:S}=e;return y?{[S?\"top\":\"bottom\"]:`${b}%`,[S?\"bottom\":\"top\"]:\"auto\",transform:S?null:\"translateY(+50%)\"}:{[S?\"right\":\"left\"]:`${b}%`,[S?\"left\":\"right\"]:\"auto\",transform:`translateX(${S?\"+\":\"-\"}50%)`}});return()=>{const{prefixCls:y,disabled:b,min:S,max:$,value:w,tabindex:C,ariaLabel:_,ariaLabelledBy:x,ariaValueTextFormatter:P,onMouseenter:E,onMouseleave:M}=e,O=re(n.class,{[`${y}-handle-click-focused`]:r.value}),R={\"aria-valuemin\":S,\"aria-valuemax\":$,\"aria-valuenow\":w,\"aria-disabled\":!!b},D=[n.style,v.value];let z=C||0;(b||C===null)&&(z=null);let T;P&&(T=P(w));const k=h(h(h(h({},n),{role:\"slider\",tabindex:z}),R),{class:O,onBlur:s,onKeydown:c,onMousedown:m,onMouseenter:E,onMouseleave:M,ref:a,style:D});return f(\"div\",A(A({},k),{},{\"aria-label\":_,\"aria-labelledby\":x,\"aria-valuetext\":T}),null)}}});function Rf(e,t){try{return Object.keys(t).some(n=>e.target===t[n].ref)}catch{return!1}}function G_(e,t){let{min:n,max:o}=t;return e<n||e>o}function Xy(e){return e.touches.length>1||e.type.toLowerCase()===\"touchend\"&&e.touches.length>0}function Uy(e,t){let{marks:n,step:o,min:l,max:r}=t;const a=Object.keys(n).map(parseFloat);if(o!==null){const s=Math.pow(10,X_(o)),c=Math.floor((r*s-l*s)/(o*s)),u=Math.min((e-l)/o,c),d=Math.round(u)*o+l;a.push(d)}const i=a.map(s=>Math.abs(e-s));return a[i.indexOf(Math.min(...i))]}function X_(e){const t=e.toString();let n=0;return t.indexOf(\".\")>=0&&(n=t.length-t.indexOf(\".\")-1),n}function Yy(e,t){let n=1;return window.visualViewport&&(n=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(e?t.clientY:t.pageX)/n}function qy(e,t){let n=1;return window.visualViewport&&(n=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(e?t.touches[0].clientY:t.touches[0].pageX)/n}function Zy(e,t){const n=t.getBoundingClientRect();return e?n.top+n.height*.5:window.scrollX+n.left+n.width*.5}function Vg(e,t){let{max:n,min:o}=t;return e<=o?o:e>=n?n:e}function U_(e,t){const{step:n}=t,o=isFinite(Uy(e,t))?Uy(e,t):0;return n===null?o:parseFloat(o.toFixed(X_(n)))}function Ca(e){e.stopPropagation(),e.preventDefault()}function lj(e,t,n){const o={increase:(a,i)=>a+i,decrease:(a,i)=>a-i},l=o[e](Object.keys(n.marks).indexOf(JSON.stringify(t)),1),r=Object.keys(n.marks)[l];return n.step?o[e](t,n.step):Object.keys(n.marks).length&&n.marks[r]?n.marks[r]:t}function Y_(e,t,n){const o=\"increase\",l=\"decrease\";let r=o;switch(e.keyCode){case we.UP:r=t&&n?l:o;break;case we.RIGHT:r=!t&&n?l:o;break;case we.DOWN:r=t&&n?o:l;break;case we.LEFT:r=!t&&n?o:l;break;case we.END:return(a,i)=>i.max;case we.HOME:return(a,i)=>i.min;case we.PAGE_UP:return(a,i)=>a+i.step*2;case we.PAGE_DOWN:return(a,i)=>a-i.step*2;default:return}return(a,i)=>lj(r,a,i)}var rj=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function tr(){}function q_(e){const t={id:String,min:Number,max:Number,step:Number,marks:W.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:W.object,maximumTrackStyle:W.object,handleStyle:W.oneOfType([W.object,W.arrayOf(W.object)]),trackStyle:W.oneOfType([W.object,W.arrayOf(W.object)]),railStyle:W.object,dotStyle:W.object,activeDotStyle:W.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return ne({compatConfig:{MODE:3},name:\"CreateSlider\",mixins:[Er,e],inheritAttrs:!1,props:Je(t,{prefixCls:\"rc-slider\",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:[\"change\",\"blur\",\"focus\"],data(){const{step:n,max:o,min:l}=this;return this.handlesRefs={},{}},mounted(){this.$nextTick(()=>{this.document=this.sliderRef&&this.sliderRef.ownerDocument;const{autofocus:n,disabled:o}=this;n&&!o&&this.focus()})},beforeUnmount(){this.$nextTick(()=>{this.removeDocumentEvents()})},methods:{defaultHandle(n){var{index:o,directives:l,className:r,style:a}=n,i=rj(n,[\"index\",\"directives\",\"className\",\"style\"]);if(delete i.dragging,i.value===null)return null;const s=h(h({},i),{class:r,style:a,key:o});return f(K_,s,null)},onDown(n,o){let l=o;const{draggableTrack:r,vertical:a}=this.$props,{bounds:i}=this.$data,s=r&&this.positionGetValue?this.positionGetValue(l)||[]:[],c=Rf(n,this.handlesRefs);if(this.dragTrack=r&&i.length>=2&&!c&&!s.map((u,d)=>{const p=d?!0:u>=i[d];return d===s.length-1?u<=i[d]:p}).some(u=>!u),this.dragTrack)this.dragOffset=l,this.startBounds=[...i];else{if(!c)this.dragOffset=0;else{const u=Zy(a,n.target);this.dragOffset=l-u,l=u}this.onStart(l)}},onMouseDown(n){if(n.button!==0)return;this.removeDocumentEvents();const o=this.$props.vertical,l=Yy(o,n);this.onDown(n,l),this.addDocumentMouseEvents()},onTouchStart(n){if(Xy(n))return;const o=this.vertical,l=qy(o,n);this.onDown(n,l),this.addDocumentTouchEvents(),Ca(n)},onFocus(n){const{vertical:o}=this;if(Rf(n,this.handlesRefs)&&!this.dragTrack){const l=Zy(o,n.target);this.dragOffset=0,this.onStart(l),Ca(n),this.$emit(\"focus\",n)}},onBlur(n){this.dragTrack||this.onEnd(),this.$emit(\"blur\",n)},onMouseUp(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove(n){if(!this.sliderRef){this.onEnd();return}const o=Yy(this.vertical,n);this.onMove(n,o-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove(n){if(Xy(n)||!this.sliderRef){this.onEnd();return}const o=qy(this.vertical,n);this.onMove(n,o-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown(n){this.sliderRef&&Rf(n,this.handlesRefs)&&this.onKeyboard(n)},onClickMarkLabel(n,o){n.stopPropagation(),this.onChange({sValue:o}),this.setState({sValue:o},()=>this.onEnd(!0))},getSliderStart(){const n=this.sliderRef,{vertical:o,reverse:l}=this,r=n.getBoundingClientRect();return o?l?r.bottom:r.top:window.scrollX+(l?r.right:r.left)},getSliderLength(){const n=this.sliderRef;if(!n)return 0;const o=n.getBoundingClientRect();return this.vertical?o.height:o.width},addDocumentTouchEvents(){this.onTouchMoveListener=Rt(this.document,\"touchmove\",this.onTouchMove),this.onTouchUpListener=Rt(this.document,\"touchend\",this.onEnd)},addDocumentMouseEvents(){this.onMouseMoveListener=Rt(this.document,\"mousemove\",this.onMouseMove),this.onMouseUpListener=Rt(this.document,\"mouseup\",this.onEnd)},removeDocumentEvents(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus(){var n;this.$props.disabled||(n=this.handlesRefs[0])===null||n===void 0||n.focus()},blur(){this.$props.disabled||Object.keys(this.handlesRefs).forEach(n=>{var o,l;(l=(o=this.handlesRefs[n])===null||o===void 0?void 0:o.blur)===null||l===void 0||l.call(o)})},calcValue(n){const{vertical:o,min:l,max:r}=this,a=Math.abs(Math.max(n,0)/this.getSliderLength());return o?(1-a)*(r-l)+l:a*(r-l)+l},calcValueByPos(n){const l=(this.reverse?-1:1)*(n-this.getSliderStart());return this.trimAlignValue(this.calcValue(l))},calcOffset(n){const{min:o,max:l}=this,r=(n-o)/(l-o);return Math.max(0,r*100)},saveSlider(n){this.sliderRef=n},saveHandle(n,o){this.handlesRefs[n]=o}},render(){const{prefixCls:n,marks:o,dots:l,step:r,included:a,disabled:i,vertical:s,reverse:c,min:u,max:d,maximumTrackStyle:p,railStyle:m,dotStyle:g,activeDotStyle:v,id:y}=this,{class:b,style:S}=this.$attrs,{tracks:$,handles:w}=this.renderSlider(),C=re(n,b,{[`${n}-with-marks`]:Object.keys(o).length,[`${n}-disabled`]:i,[`${n}-vertical`]:s,[`${n}-horizontal`]:!s}),_={vertical:s,marks:o,included:a,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:d,min:u,reverse:c,class:`${n}-mark`,onClickLabel:i?tr:this.onClickMarkLabel},x={[qt?\"onTouchstartPassive\":\"onTouchstart\"]:i?tr:this.onTouchStart};return f(\"div\",A(A({id:y,ref:this.saveSlider,tabindex:\"-1\",class:C},x),{},{onMousedown:i?tr:this.onMouseDown,onMouseup:i?tr:this.onMouseUp,onKeydown:i?tr:this.onKeyDown,onFocus:i?tr:this.onFocus,onBlur:i?tr:this.onBlur,style:S}),[f(\"div\",{class:`${n}-rail`,style:h(h({},p),m)},null),$,f(W_,{prefixCls:n,vertical:s,reverse:c,marks:o,dots:l,step:r,included:a,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:d,min:u,dotStyle:g,activeDotStyle:v},null),w,f(V_,_,{mark:this.$slots.mark}),Ru(this)])}})}const aj=ne({compatConfig:{MODE:3},name:\"Slider\",mixins:[Er],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:W.oneOfType([W.number,W.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:[\"beforeChange\",\"afterChange\",\"change\"],data(){const e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler(e){this.setChangeValue(e)},deep:!0},min(){const{sValue:e}=this;this.setChangeValue(e)},max(){const{sValue:e}=this;this.setChangeValue(e)}},methods:{setChangeValue(e){const t=e!==void 0?e:this.sValue,n=this.trimAlignValue(t,this.$props);n!==this.sValue&&(this.setState({sValue:n}),G_(t,this.$props)&&this.$emit(\"change\",n))},onChange(e){const t=!ol(this,\"value\"),n=e.sValue>this.max?h(h({},e),{sValue:this.max}):e;t&&this.setState(n);const o=n.sValue;this.$emit(\"change\",o)},onStart(e){this.setState({dragging:!0});const{sValue:t}=this;this.$emit(\"beforeChange\",t);const n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e,n!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:n}))},onEnd(e){const{dragging:t}=this;this.removeDocumentEvents(),(t||e)&&this.$emit(\"afterChange\",this.sValue),this.setState({dragging:!1})},onMove(e,t){Ca(e);const{sValue:n}=this,o=this.calcValueByPos(t);o!==n&&this.onChange({sValue:o})},onKeyboard(e){const{reverse:t,vertical:n}=this.$props,o=Y_(e,n,t);if(o){Ca(e);const{sValue:l}=this,r=o(l,this.$props),a=this.trimAlignValue(r);if(a===l)return;this.onChange({sValue:a}),this.$emit(\"afterChange\",a),this.onEnd()}},getLowerBound(){const e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound(){return this.$data.sValue<this.$props.startPoint?this.$props.startPoint:this.$data.sValue},trimAlignValue(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;const n=h(h({},this.$props),t),o=Vg(e,n);return U_(o,n)},getTrack(e){let{prefixCls:t,reverse:n,vertical:o,included:l,minimumTrackStyle:r,mergedTrackStyle:a,length:i,offset:s}=e;return f(Wg,{class:`${t}-track`,vertical:o,included:l,offset:s,reverse:n,length:i,style:h(h({},r),a)},null)},renderSlider(){const{prefixCls:e,vertical:t,included:n,disabled:o,minimumTrackStyle:l,trackStyle:r,handleStyle:a,tabindex:i,ariaLabelForHandle:s,ariaLabelledByForHandle:c,ariaValueTextFormatterForHandle:u,min:d,max:p,startPoint:m,reverse:g,handle:v,defaultHandle:y}=this,b=v||y,{sValue:S,dragging:$}=this,w=this.calcOffset(S),C=b({class:`${e}-handle`,prefixCls:e,vertical:t,offset:w,value:S,dragging:$,disabled:o,min:d,max:p,reverse:g,index:0,tabindex:i,ariaLabel:s,ariaLabelledBy:c,ariaValueTextFormatter:u,style:a[0]||a,ref:P=>this.saveHandle(0,P),onFocus:this.onFocus,onBlur:this.onBlur}),_=m!==void 0?this.calcOffset(m):0,x=r[0]||r;return{tracks:this.getTrack({prefixCls:e,reverse:g,vertical:t,included:n,offset:_,minimumTrackStyle:l,mergedTrackStyle:x,length:w-_}),handles:C}}}}),ij=q_(aj),Ga=e=>{let{value:t,handle:n,bounds:o,props:l}=e;const{allowCross:r,pushable:a}=l,i=Number(a),s=Vg(t,l);let c=s;return!r&&n!=null&&o!==void 0&&(n>0&&s<=o[n-1]+i&&(c=o[n-1]+i),n<o.length-1&&s>=o[n+1]-i&&(c=o[n+1]-i)),U_(c,l)},sj={defaultValue:W.arrayOf(W.number),value:W.arrayOf(W.number),count:Number,pushable:VC(W.oneOfType([W.looseBool,W.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:W.arrayOf(W.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},cj=ne({compatConfig:{MODE:3},name:\"Range\",mixins:[Er],inheritAttrs:!1,props:Je(sj,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:[\"beforeChange\",\"afterChange\",\"change\"],displayName:\"Range\",data(){const{count:e,min:t,max:n}=this,o=Array(...Array(e+1)).map(()=>t),l=ol(this,\"defaultValue\")?this.defaultValue:o;let{value:r}=this;r===void 0&&(r=l);const a=r.map((s,c)=>Ga({value:s,handle:c,props:this.$props}));return{sHandle:null,recent:a[0]===n?0:a.length-1,bounds:a}},watch:{value:{handler(e){const{bounds:t}=this;this.setChangeValue(e||t)},deep:!0},min(){const{value:e}=this;this.setChangeValue(e||this.bounds)},max(){const{value:e}=this;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue(e){const{bounds:t}=this;let n=e.map((o,l)=>Ga({value:o,handle:l,bounds:t,props:this.$props}));if(t.length===n.length){if(n.every((o,l)=>o===t[l]))return null}else n=e.map((o,l)=>Ga({value:o,handle:l,props:this.$props}));if(this.setState({bounds:n}),e.some(o=>G_(o,this.$props))){const o=e.map(l=>Vg(l,this.$props));this.$emit(\"change\",o)}},onChange(e){if(!ol(this,\"value\"))this.setState(e);else{const l={};[\"sHandle\",\"recent\"].forEach(r=>{e[r]!==void 0&&(l[r]=e[r])}),Object.keys(l).length&&this.setState(l)}const o=h(h({},this.$data),e).bounds;this.$emit(\"change\",o)},positionGetValue(e){const t=this.getValue(),n=this.calcValueByPos(e),o=this.getClosestBound(n),l=this.getBoundNeedMoving(n,o),r=t[l];if(n===r)return null;const a=[...t];return a[l]=n,a},onStart(e){const{bounds:t}=this;this.$emit(\"beforeChange\",t);const n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e;const o=this.getClosestBound(n);this.prevMovedHandleIndex=this.getBoundNeedMoving(n,o),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});const l=t[this.prevMovedHandleIndex];if(n===l)return;const r=[...t];r[this.prevMovedHandleIndex]=n,this.onChange({bounds:r})},onEnd(e){const{sHandle:t}=this;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit(\"afterChange\",this.bounds),this.setState({sHandle:null})},onMove(e,t,n,o){Ca(e);const{$data:l,$props:r}=this,a=r.max||100,i=r.min||0;if(n){let p=r.vertical?-t:t;p=r.reverse?-p:p;const m=a-Math.max(...o),g=i-Math.min(...o),v=Math.min(Math.max(p/(this.getSliderLength()/100),g),m),y=o.map(b=>Math.floor(Math.max(Math.min(b+v,a),i)));l.bounds.map((b,S)=>b===y[S]).some(b=>!b)&&this.onChange({bounds:y});return}const{bounds:s,sHandle:c}=this,u=this.calcValueByPos(t),d=s[c];u!==d&&this.moveTo(u)},onKeyboard(e){const{reverse:t,vertical:n}=this.$props,o=Y_(e,n,t);if(o){Ca(e);const{bounds:l,sHandle:r}=this,a=l[r===null?this.recent:r],i=o(a,this.$props),s=Ga({value:i,handle:r,bounds:l,props:this.$props});if(s===a)return;this.moveTo(s,!0)}},getClosestBound(e){const{bounds:t}=this;let n=0;for(let o=1;o<t.length-1;o+=1)e>=t[o]&&(n=o);return Math.abs(t[n+1]-e)<Math.abs(t[n]-e)&&(n+=1),n},getBoundNeedMoving(e,t){const{bounds:n,recent:o}=this;let l=t;const r=n[t+1]===n[t];return r&&n[o]===n[t]&&(l=o),r&&e!==n[t+1]&&(l=e<n[t+1]?t:t+1),l},getLowerBound(){return this.bounds[0]},getUpperBound(){const{bounds:e}=this;return e[e.length-1]},getPoints(){const{marks:e,step:t,min:n,max:o}=this,l=this.internalPointsCache;if(!l||l.marks!==e||l.step!==t){const r=h({},e);if(t!==null)for(let i=n;i<=o;i+=t)r[i]=i;const a=Object.keys(r).map(parseFloat);a.sort((i,s)=>i-s),this.internalPointsCache={marks:e,step:t,points:a}}return this.internalPointsCache.points},moveTo(e,t){const n=[...this.bounds],{sHandle:o,recent:l}=this,r=o===null?l:o;n[r]=e;let a=r;this.$props.pushable!==!1?this.pushSurroundingHandles(n,a):this.$props.allowCross&&(n.sort((i,s)=>i-s),a=n.indexOf(e)),this.onChange({recent:a,sHandle:a,bounds:n}),t&&(this.$emit(\"afterChange\",n),this.setState({},()=>{this.handlesRefs[a].focus()}),this.onEnd())},pushSurroundingHandles(e,t){const n=e[t],{pushable:o}=this,l=Number(o);let r=0;if(e[t+1]-n<l&&(r=1),n-e[t-1]<l&&(r=-1),r===0)return;const a=t+r,i=r*(e[a]-n);this.pushHandle(e,a,r,l-i)||(e[t]=e[a]-r*l)},pushHandle(e,t,n,o){const l=e[t];let r=e[t];for(;n*(r-l)<o;){if(!this.pushHandleOnePoint(e,t,n))return e[t]=l,!1;r=e[t]}return!0},pushHandleOnePoint(e,t,n){const o=this.getPoints(),r=o.indexOf(e[t])+n;if(r>=o.length||r<0)return!1;const a=t+n,i=o[r],{pushable:s}=this,c=Number(s),u=n*(e[a]-i);return this.pushHandle(e,a,n,c-u)?(e[t]=i,!0):!1},trimAlignValue(e){const{sHandle:t,bounds:n}=this;return Ga({value:e,handle:t,bounds:n,props:this.$props})},ensureValueNotConflict(e,t,n){let{allowCross:o,pushable:l}=n;const r=this.$data||{},{bounds:a}=r;if(e=e===void 0?r.sHandle:e,l=Number(l),!o&&e!=null&&a!==void 0){if(e>0&&t<=a[e-1]+l)return a[e-1]+l;if(e<a.length-1&&t>=a[e+1]-l)return a[e+1]-l}return t},getTrack(e){let{bounds:t,prefixCls:n,reverse:o,vertical:l,included:r,offsets:a,trackStyle:i}=e;return t.slice(0,-1).map((s,c)=>{const u=c+1,d=re({[`${n}-track`]:!0,[`${n}-track-${u}`]:!0});return f(Wg,{class:d,vertical:l,reverse:o,included:r,offset:a[u-1],length:a[u]-a[u-1],style:i[c],key:u},null)})},renderSlider(){const{sHandle:e,bounds:t,prefixCls:n,vertical:o,included:l,disabled:r,min:a,max:i,reverse:s,handle:c,defaultHandle:u,trackStyle:d,handleStyle:p,tabindex:m,ariaLabelGroupForHandles:g,ariaLabelledByGroupForHandles:v,ariaValueTextFormatterGroupForHandles:y}=this,b=c||u,S=t.map(C=>this.calcOffset(C)),$=`${n}-handle`,w=t.map((C,_)=>{let x=m[_]||0;(r||m[_]===null)&&(x=null);const P=e===_;return b({class:re({[$]:!0,[`${$}-${_+1}`]:!0,[`${$}-dragging`]:P}),prefixCls:n,vertical:o,dragging:P,offset:S[_],value:C,index:_,tabindex:x,min:a,max:i,reverse:s,disabled:r,style:p[_],ref:E=>this.saveHandle(_,E),onFocus:this.onFocus,onBlur:this.onBlur,ariaLabel:g[_],ariaLabelledBy:v[_],ariaValueTextFormatter:y[_]})});return{tracks:this.getTrack({bounds:t,prefixCls:n,reverse:s,vertical:o,included:l,offsets:S,trackStyle:d}),handles:w}}}}),uj=q_(cj),dj=ne({compatConfig:{MODE:3},name:\"SliderTooltip\",inheritAttrs:!1,props:P1(),setup(e,t){let{attrs:n,slots:o}=t;const l=Z(null),r=Z(null);function a(){Qe.cancel(r.value),r.value=null}function i(){r.value=Qe(()=>{var c;(c=l.value)===null||c===void 0||c.forcePopupAlign(),r.value=null})}const s=()=>{a(),e.open&&i()};return pe([()=>e.open,()=>e.title],()=>{s()},{flush:\"post\",immediate:!0}),Om(()=>{s()}),ot(()=>{a()}),()=>f(Fn,A(A({ref:l},e),n),o)}}),fj=e=>{const{componentCls:t,controlSize:n,dotSize:o,marginFull:l,marginPart:r,colorFillContentHover:a}=e;return{[t]:h(h({},qe(e)),{position:\"relative\",height:n,margin:`${r}px ${l}px`,padding:0,cursor:\"pointer\",touchAction:\"none\",\"&-vertical\":{margin:`${l}px ${r}px`},[`${t}-rail`]:{position:\"absolute\",backgroundColor:e.colorFillTertiary,borderRadius:e.borderRadiusXS,transition:`background-color ${e.motionDurationMid}`},[`${t}-track`]:{position:\"absolute\",backgroundColor:e.colorPrimaryBorder,borderRadius:e.borderRadiusXS,transition:`background-color ${e.motionDurationMid}`},\"&:hover\":{[`${t}-rail`]:{backgroundColor:e.colorFillSecondary},[`${t}-track`]:{backgroundColor:e.colorPrimaryBorderHover},[`${t}-dot`]:{borderColor:a},[`${t}-handle::after`]:{boxShadow:`0 0 0 ${e.handleLineWidth}px ${e.colorPrimaryBorderHover}`},[`${t}-dot-active`]:{borderColor:e.colorPrimary}},[`${t}-handle`]:{position:\"absolute\",width:e.handleSize,height:e.handleSize,outline:\"none\",[`${t}-dragging`]:{zIndex:1},\"&::before\":{content:'\"\"',position:\"absolute\",insetInlineStart:-e.handleLineWidth,insetBlockStart:-e.handleLineWidth,width:e.handleSize+e.handleLineWidth*2,height:e.handleSize+e.handleLineWidth*2,backgroundColor:\"transparent\"},\"&::after\":{content:'\"\"',position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:e.handleSize,height:e.handleSize,backgroundColor:e.colorBgElevated,boxShadow:`0 0 0 ${e.handleLineWidth}px ${e.colorPrimaryBorder}`,borderRadius:\"50%\",cursor:\"pointer\",transition:`\n            inset-inline-start ${e.motionDurationMid},\n            inset-block-start ${e.motionDurationMid},\n            width ${e.motionDurationMid},\n            height ${e.motionDurationMid},\n            box-shadow ${e.motionDurationMid}\n          `},\"&:hover, &:active, &:focus\":{\"&::before\":{insetInlineStart:-((e.handleSizeHover-e.handleSize)/2+e.handleLineWidthHover),insetBlockStart:-((e.handleSizeHover-e.handleSize)/2+e.handleLineWidthHover),width:e.handleSizeHover+e.handleLineWidthHover*2,height:e.handleSizeHover+e.handleLineWidthHover*2},\"&::after\":{boxShadow:`0 0 0 ${e.handleLineWidthHover}px ${e.colorPrimary}`,width:e.handleSizeHover,height:e.handleSizeHover,insetInlineStart:(e.handleSize-e.handleSizeHover)/2,insetBlockStart:(e.handleSize-e.handleSizeHover)/2}}},[`${t}-mark`]:{position:\"absolute\",fontSize:e.fontSize},[`${t}-mark-text`]:{position:\"absolute\",display:\"inline-block\",color:e.colorTextDescription,textAlign:\"center\",wordBreak:\"keep-all\",cursor:\"pointer\",userSelect:\"none\",\"&-active\":{color:e.colorText}},[`${t}-step`]:{position:\"absolute\",background:\"transparent\",pointerEvents:\"none\"},[`${t}-dot`]:{position:\"absolute\",width:o,height:o,backgroundColor:e.colorBgElevated,border:`${e.handleLineWidth}px solid ${e.colorBorderSecondary}`,borderRadius:\"50%\",cursor:\"pointer\",transition:`border-color ${e.motionDurationSlow}`,\"&-active\":{borderColor:e.colorPrimaryBorder}},[`&${t}-disabled`]:{cursor:\"not-allowed\",[`${t}-rail`]:{backgroundColor:`${e.colorFillSecondary} !important`},[`${t}-track`]:{backgroundColor:`${e.colorTextDisabled} !important`},[`\n          ${t}-dot\n        `]:{backgroundColor:e.colorBgElevated,borderColor:e.colorTextDisabled,boxShadow:\"none\",cursor:\"not-allowed\"},[`${t}-handle::after`]:{backgroundColor:e.colorBgElevated,cursor:\"not-allowed\",width:e.handleSize,height:e.handleSize,boxShadow:`0 0 0 ${e.handleLineWidth}px ${new vt(e.colorTextDisabled).onBackground(e.colorBgContainer).toHexString()}`,insetInlineStart:0,insetBlockStart:0},[`\n          ${t}-mark-text,\n          ${t}-dot\n        `]:{cursor:\"not-allowed !important\"}}})}},Z_=(e,t)=>{const{componentCls:n,railSize:o,handleSize:l,dotSize:r}=e,a=t?\"paddingBlock\":\"paddingInline\",i=t?\"width\":\"height\",s=t?\"height\":\"width\",c=t?\"insetBlockStart\":\"insetInlineStart\",u=t?\"top\":\"insetInlineStart\";return{[a]:o,[s]:o*3,[`${n}-rail`]:{[i]:\"100%\",[s]:o},[`${n}-track`]:{[s]:o},[`${n}-handle`]:{[c]:(o*3-l)/2},[`${n}-mark`]:{insetInlineStart:0,top:0,[u]:l,[i]:\"100%\"},[`${n}-step`]:{insetInlineStart:0,top:0,[u]:o,[i]:\"100%\",[s]:o},[`${n}-dot`]:{position:\"absolute\",[c]:(o-r)/2}}},pj=e=>{const{componentCls:t,marginPartWithMark:n}=e;return{[`${t}-horizontal`]:h(h({},Z_(e,!0)),{[`&${t}-with-marks`]:{marginBottom:n}})}},mj=e=>{const{componentCls:t}=e;return{[`${t}-vertical`]:h(h({},Z_(e,!1)),{height:\"100%\"})}},vj=Xe(\"Slider\",e=>{const t=Le(e,{marginPart:(e.controlHeight-e.controlSize)/2,marginFull:e.controlSize/2,marginPartWithMark:e.controlHeightLG-e.controlSize});return[fj(t),pj(t),mj(t)]},e=>{const n=e.controlHeightLG/4,o=e.controlHeightSM/2,l=e.lineWidth+1,r=e.lineWidth+3;return{controlSize:n,railSize:4,handleSize:n,handleSizeHover:o,dotSize:8,handleLineWidth:l,handleLineWidthHover:r}});var Qy=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const gj=e=>typeof e==\"number\"?e.toString():\"\",hj=()=>({id:String,prefixCls:String,tooltipPrefixCls:String,range:Fe([Boolean,Object]),reverse:ye(),min:Number,max:Number,step:Fe([Object,Number]),marks:De(),dots:ye(),value:Fe([Array,Number]),defaultValue:Fe([Array,Number]),included:ye(),disabled:ye(),vertical:ye(),tipFormatter:Fe([Function,Object],()=>gj),tooltipOpen:ye(),tooltipVisible:ye(),tooltipPlacement:ke(),getTooltipPopupContainer:de(),autofocus:ye(),handleStyle:Fe([Array,Object]),trackStyle:Fe([Array,Object]),onChange:de(),onAfterChange:de(),onFocus:de(),onBlur:de(),\"onUpdate:value\":de()}),bj=ne({compatConfig:{MODE:3},name:\"ASlider\",inheritAttrs:!1,props:hj(),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:l,expose:r}=t;const{prefixCls:a,rootPrefixCls:i,direction:s,getPopupContainer:c,configProvider:u}=Te(\"slider\",e),[d,p]=vj(a),m=Jt(),g=Z(),v=Z({}),y=(x,P)=>{v.value[x]=P},b=I(()=>e.tooltipPlacement?e.tooltipPlacement:e.vertical?s.value===\"rtl\"?\"left\":\"right\":\"top\"),S=()=>{var x;(x=g.value)===null||x===void 0||x.focus()},$=()=>{var x;(x=g.value)===null||x===void 0||x.blur()},w=x=>{l(\"update:value\",x),l(\"change\",x),m.onFieldChange()},C=x=>{l(\"blur\",x)};r({focus:S,blur:$});const _=x=>{var{tooltipPrefixCls:P}=x,E=x.info,{value:M,dragging:O,index:R}=E,D=Qy(E,[\"value\",\"dragging\",\"index\"]);const{tipFormatter:z,tooltipOpen:T=e.tooltipVisible,getTooltipPopupContainer:k}=e,B=z?v.value[R]||O:!1,L=T||T===void 0&&B;return f(dj,{prefixCls:P,title:z?z(M):\"\",open:L,placement:b.value,transitionName:`${i.value}-zoom-down`,key:R,overlayClassName:`${a.value}-tooltip`,getPopupContainer:k||c?.value},{default:()=>[f(K_,A(A({},D),{},{value:M,onMouseenter:()=>y(R,!0),onMouseleave:()=>y(R,!1)}),null)]})};return()=>{const{tooltipPrefixCls:x,range:P,id:E=m.id.value}=e,M=Qy(e,[\"tooltipPrefixCls\",\"range\",\"id\"]),O=u.getPrefixCls(\"tooltip\",x),R=re(n.class,{[`${a.value}-rtl`]:s.value===\"rtl\"},p.value);s.value===\"rtl\"&&!M.vertical&&(M.reverse=!M.reverse);let D;return typeof P==\"object\"&&(D=P.draggableTrack),d(P?f(uj,A(A(A({},n),M),{},{step:M.step,draggableTrack:D,class:R,ref:g,handle:z=>_({tooltipPrefixCls:O,prefixCls:a.value,info:z}),prefixCls:a.value,onChange:w,onBlur:C}),{mark:o.mark}):f(ij,A(A(A({},n),M),{},{id:E,step:M.step,class:R,ref:g,handle:z=>_({tooltipPrefixCls:O,prefixCls:a.value,info:z}),prefixCls:a.value,onChange:w,onBlur:C}),{mark:o.mark}))}}}),yj=Dt(bj);function Jy(e){return typeof e==\"string\"}function Sj(){}const Q_=()=>({prefixCls:String,itemWidth:String,active:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},status:ke(),iconPrefix:String,icon:W.any,adjustMarginRight:String,stepNumber:Number,stepIndex:Number,description:W.any,title:W.any,subTitle:W.any,progressDot:VC(W.oneOfType([W.looseBool,W.func])),tailContent:W.any,icons:W.shape({finish:W.any,error:W.any}).loose,onClick:de(),onStepClick:de(),stepIcon:de(),itemRender:de(),__legacy:ye()}),J_=ne({compatConfig:{MODE:3},name:\"Step\",inheritAttrs:!1,props:Q_(),setup(e,t){let{slots:n,emit:o,attrs:l}=t;const r=i=>{o(\"click\",i),o(\"stepClick\",e.stepIndex)},a=i=>{let{icon:s,title:c,description:u}=i;const{prefixCls:d,stepNumber:p,status:m,iconPrefix:g,icons:v,progressDot:y=n.progressDot,stepIcon:b=n.stepIcon}=e;let S;const $=re(`${d}-icon`,`${g}icon`,{[`${g}icon-${s}`]:s&&Jy(s),[`${g}icon-check`]:!s&&m===\"finish\"&&(v&&!v.finish||!v),[`${g}icon-cross`]:!s&&m===\"error\"&&(v&&!v.error||!v)}),w=f(\"span\",{class:`${d}-icon-dot`},null);return y?typeof y==\"function\"?S=f(\"span\",{class:`${d}-icon`},[y({iconDot:w,index:p-1,status:m,title:c,description:u,prefixCls:d})]):S=f(\"span\",{class:`${d}-icon`},[w]):s&&!Jy(s)?S=f(\"span\",{class:`${d}-icon`},[s]):v&&v.finish&&m===\"finish\"?S=f(\"span\",{class:`${d}-icon`},[v.finish]):v&&v.error&&m===\"error\"?S=f(\"span\",{class:`${d}-icon`},[v.error]):s||m===\"finish\"||m===\"error\"?S=f(\"span\",{class:$},null):S=f(\"span\",{class:`${d}-icon`},[p]),b&&(S=b({index:p-1,status:m,title:c,description:u,node:S})),S};return()=>{var i,s,c,u;const{prefixCls:d,itemWidth:p,active:m,status:g=\"wait\",tailContent:v,adjustMarginRight:y,disabled:b,title:S=(i=n.title)===null||i===void 0?void 0:i.call(n),description:$=(s=n.description)===null||s===void 0?void 0:s.call(n),subTitle:w=(c=n.subTitle)===null||c===void 0?void 0:c.call(n),icon:C=(u=n.icon)===null||u===void 0?void 0:u.call(n),onClick:_,onStepClick:x}=e,P=g||\"wait\",E=re(`${d}-item`,`${d}-item-${P}`,{[`${d}-item-custom`]:C,[`${d}-item-active`]:m,[`${d}-item-disabled`]:b===!0}),M={};p&&(M.width=p),y&&(M.marginRight=y);const O={onClick:_||Sj};x&&!b&&(O.role=\"button\",O.tabindex=0,O.onClick=r);const R=f(\"div\",A(A({},lt(l,[\"__legacy\"])),{},{class:[E,l.class],style:[l.style,M]}),[f(\"div\",A(A({},O),{},{class:`${d}-item-container`}),[f(\"div\",{class:`${d}-item-tail`},[v]),f(\"div\",{class:`${d}-item-icon`},[a({icon:C,title:S,description:$})]),f(\"div\",{class:`${d}-item-content`},[f(\"div\",{class:`${d}-item-title`},[S,w&&f(\"div\",{title:typeof w==\"string\"?w:void 0,class:`${d}-item-subtitle`},[w])]),$&&f(\"div\",{class:`${d}-item-description`},[$])])])]);return e.itemRender?e.itemRender(R):R}}});var $j=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Cj=ne({compatConfig:{MODE:3},name:\"Steps\",props:{type:W.string.def(\"default\"),prefixCls:W.string.def(\"vc-steps\"),iconPrefix:W.string.def(\"vc\"),direction:W.string.def(\"horizontal\"),labelPlacement:W.string.def(\"horizontal\"),status:ke(\"process\"),size:W.string.def(\"\"),progressDot:W.oneOfType([W.looseBool,W.func]).def(void 0),initial:W.number.def(0),current:W.number.def(0),items:W.array.def(()=>[]),icons:W.shape({finish:W.any,error:W.any}).loose,stepIcon:de(),isInline:W.looseBool,itemRender:de()},emits:[\"change\"],setup(e,t){let{slots:n,emit:o}=t;const l=i=>{const{current:s}=e;s!==i&&o(\"change\",i)},r=(i,s,c)=>{const{prefixCls:u,iconPrefix:d,status:p,current:m,initial:g,icons:v,stepIcon:y=n.stepIcon,isInline:b,itemRender:S,progressDot:$=n.progressDot}=e,w=b||$,C=h(h({},i),{class:\"\"}),_=g+s,x={active:_===m,stepNumber:_+1,stepIndex:_,key:_,prefixCls:u,iconPrefix:d,progressDot:w,stepIcon:y,icons:v,onStepClick:l};return p===\"error\"&&s===m-1&&(C.class=`${u}-next-error`),C.status||(_===m?C.status=p:_<m?C.status=\"finish\":C.status=\"wait\"),b&&(C.icon=void 0,C.subTitle=void 0),c?c(h(h({},C),x)):(S&&(C.itemRender=P=>S(C,P)),f(J_,A(A(A({},C),x),{},{__legacy:!1}),null))},a=(i,s)=>r(h({},i.props),s,c=>ft(i,c));return()=>{var i;const{prefixCls:s,direction:c,type:u,labelPlacement:d,iconPrefix:p,status:m,size:g,current:v,progressDot:y=n.progressDot,initial:b,icons:S,items:$,isInline:w,itemRender:C}=e,_=$j(e,[\"prefixCls\",\"direction\",\"type\",\"labelPlacement\",\"iconPrefix\",\"status\",\"size\",\"current\",\"progressDot\",\"initial\",\"icons\",\"items\",\"isInline\",\"itemRender\"]),x=u===\"navigation\",P=w||y,E=w?\"horizontal\":c,M=w?void 0:g,O=P?\"vertical\":d,R=re(s,`${s}-${c}`,{[`${s}-${M}`]:M,[`${s}-label-${O}`]:E===\"horizontal\",[`${s}-dot`]:!!P,[`${s}-navigation`]:x,[`${s}-inline`]:w});return f(\"div\",A({class:R},_),[$.filter(D=>D).map((D,z)=>r(D,z)),kt((i=n.default)===null||i===void 0?void 0:i.call(n)).map(a)])}}}),xj=e=>{const{componentCls:t,stepsIconCustomTop:n,stepsIconCustomSize:o,stepsIconCustomFontSize:l}=e;return{[`${t}-item-custom`]:{[`> ${t}-item-container > ${t}-item-icon`]:{height:\"auto\",background:\"none\",border:0,[`> ${t}-icon`]:{top:n,width:o,height:o,fontSize:l,lineHeight:`${o}px`}}},[`&:not(${t}-vertical)`]:{[`${t}-item-custom`]:{[`${t}-item-icon`]:{width:\"auto\",background:\"none\"}}}}},wj=e=>{const{componentCls:t,stepsIconSize:n,lineHeight:o,stepsSmallIconSize:l}=e;return{[`&${t}-label-vertical`]:{[`${t}-item`]:{overflow:\"visible\",\"&-tail\":{marginInlineStart:n/2+e.controlHeightLG,padding:`${e.paddingXXS}px ${e.paddingLG}px`},\"&-content\":{display:\"block\",width:(n/2+e.controlHeightLG)*2,marginTop:e.marginSM,textAlign:\"center\"},\"&-icon\":{display:\"inline-block\",marginInlineStart:e.controlHeightLG},\"&-title\":{paddingInlineEnd:0,paddingInlineStart:0,\"&::after\":{display:\"none\"}},\"&-subtitle\":{display:\"block\",marginBottom:e.marginXXS,marginInlineStart:0,lineHeight:o}},[`&${t}-small:not(${t}-dot)`]:{[`${t}-item`]:{\"&-icon\":{marginInlineStart:e.controlHeightLG+(n-l)/2}}}}}},_j=e=>{const{componentCls:t,stepsNavContentMaxWidth:n,stepsNavArrowColor:o,stepsNavActiveColor:l,motionDurationSlow:r}=e;return{[`&${t}-navigation`]:{paddingTop:e.paddingSM,[`&${t}-small`]:{[`${t}-item`]:{\"&-container\":{marginInlineStart:-e.marginSM}}},[`${t}-item`]:{overflow:\"visible\",textAlign:\"center\",\"&-container\":{display:\"inline-block\",height:\"100%\",marginInlineStart:-e.margin,paddingBottom:e.paddingSM,textAlign:\"start\",transition:`opacity ${r}`,[`${t}-item-content`]:{maxWidth:n},[`${t}-item-title`]:h(h({maxWidth:\"100%\",paddingInlineEnd:0},Xt),{\"&::after\":{display:\"none\"}})},[`&:not(${t}-item-active)`]:{[`${t}-item-container[role='button']`]:{cursor:\"pointer\",\"&:hover\":{opacity:.85}}},\"&:last-child\":{flex:1,\"&::after\":{display:\"none\"}},\"&::after\":{position:\"absolute\",top:`calc(50% - ${e.paddingSM/2}px)`,insetInlineStart:\"100%\",display:\"inline-block\",width:e.fontSizeIcon,height:e.fontSizeIcon,borderTop:`${e.lineWidth}px ${e.lineType} ${o}`,borderBottom:\"none\",borderInlineStart:\"none\",borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${o}`,transform:\"translateY(-50%) translateX(-50%) rotate(45deg)\",content:'\"\"'},\"&::before\":{position:\"absolute\",bottom:0,insetInlineStart:\"50%\",display:\"inline-block\",width:0,height:e.lineWidthBold,backgroundColor:l,transition:`width ${r}, inset-inline-start ${r}`,transitionTimingFunction:\"ease-out\",content:'\"\"'}},[`${t}-item${t}-item-active::before`]:{insetInlineStart:0,width:\"100%\"}},[`&${t}-navigation${t}-vertical`]:{[`> ${t}-item`]:{marginInlineEnd:0,\"&::before\":{display:\"none\"},[`&${t}-item-active::before`]:{top:0,insetInlineEnd:0,insetInlineStart:\"unset\",display:\"block\",width:e.lineWidth*3,height:`calc(100% - ${e.marginLG}px)`},\"&::after\":{position:\"relative\",insetInlineStart:\"50%\",display:\"block\",width:e.controlHeight*.25,height:e.controlHeight*.25,marginBottom:e.marginXS,textAlign:\"center\",transform:\"translateY(-50%) translateX(-50%) rotate(135deg)\"},[`> ${t}-item-container > ${t}-item-tail`]:{visibility:\"hidden\"}}},[`&${t}-navigation${t}-horizontal`]:{[`> ${t}-item > ${t}-item-container > ${t}-item-tail`]:{visibility:\"hidden\"}}}},Ij=e=>{const{antCls:t,componentCls:n}=e;return{[`&${n}-with-progress`]:{[`${n}-item`]:{paddingTop:e.paddingXXS,[`&-process ${n}-item-container ${n}-item-icon ${n}-icon`]:{color:e.processIconColor}},[`&${n}-vertical > ${n}-item `]:{paddingInlineStart:e.paddingXXS,[`> ${n}-item-container > ${n}-item-tail`]:{top:e.marginXXS,insetInlineStart:e.stepsIconSize/2-e.lineWidth+e.paddingXXS}},[`&, &${n}-small`]:{[`&${n}-horizontal ${n}-item:first-child`]:{paddingBottom:e.paddingXXS,paddingInlineStart:e.paddingXXS}},[`&${n}-small${n}-vertical > ${n}-item > ${n}-item-container > ${n}-item-tail`]:{insetInlineStart:e.stepsSmallIconSize/2-e.lineWidth+e.paddingXXS},[`&${n}-label-vertical`]:{[`${n}-item ${n}-item-tail`]:{top:e.margin-2*e.lineWidth}},[`${n}-item-icon`]:{position:\"relative\",[`${t}-progress`]:{position:\"absolute\",insetBlockStart:(e.stepsIconSize-e.stepsProgressSize-e.lineWidth*2)/2,insetInlineStart:(e.stepsIconSize-e.stepsProgressSize-e.lineWidth*2)/2}}}}},Pj=e=>{const{componentCls:t,descriptionWidth:n,lineHeight:o,stepsCurrentDotSize:l,stepsDotSize:r,motionDurationSlow:a}=e;return{[`&${t}-dot, &${t}-dot${t}-small`]:{[`${t}-item`]:{\"&-title\":{lineHeight:o},\"&-tail\":{top:Math.floor((e.stepsDotSize-e.lineWidth*3)/2),width:\"100%\",marginTop:0,marginBottom:0,marginInline:`${n/2}px 0`,padding:0,\"&::after\":{width:`calc(100% - ${e.marginSM*2}px)`,height:e.lineWidth*3,marginInlineStart:e.marginSM}},\"&-icon\":{width:r,height:r,marginInlineStart:(e.descriptionWidth-r)/2,paddingInlineEnd:0,lineHeight:`${r}px`,background:\"transparent\",border:0,[`${t}-icon-dot`]:{position:\"relative\",float:\"left\",width:\"100%\",height:\"100%\",borderRadius:100,transition:`all ${a}`,\"&::after\":{position:\"absolute\",top:-e.marginSM,insetInlineStart:(r-e.controlHeightLG*1.5)/2,width:e.controlHeightLG*1.5,height:e.controlHeight,background:\"transparent\",content:'\"\"'}}},\"&-content\":{width:n},[`&-process ${t}-item-icon`]:{position:\"relative\",top:(r-l)/2,width:l,height:l,lineHeight:`${l}px`,background:\"none\",marginInlineStart:(e.descriptionWidth-l)/2},[`&-process ${t}-icon`]:{[`&:first-child ${t}-icon-dot`]:{insetInlineStart:0}}}},[`&${t}-vertical${t}-dot`]:{[`${t}-item-icon`]:{marginTop:(e.controlHeight-r)/2,marginInlineStart:0,background:\"none\"},[`${t}-item-process ${t}-item-icon`]:{marginTop:(e.controlHeight-l)/2,top:0,insetInlineStart:(r-l)/2,marginInlineStart:0},[`${t}-item > ${t}-item-container > ${t}-item-tail`]:{top:(e.controlHeight-r)/2,insetInlineStart:0,margin:0,padding:`${r+e.paddingXS}px 0 ${e.paddingXS}px`,\"&::after\":{marginInlineStart:(r-e.lineWidth)/2}},[`&${t}-small`]:{[`${t}-item-icon`]:{marginTop:(e.controlHeightSM-r)/2},[`${t}-item-process ${t}-item-icon`]:{marginTop:(e.controlHeightSM-l)/2},[`${t}-item > ${t}-item-container > ${t}-item-tail`]:{top:(e.controlHeightSM-r)/2}},[`${t}-item:first-child ${t}-icon-dot`]:{insetInlineStart:0},[`${t}-item-content`]:{width:\"inherit\"}}}},Tj=e=>{const{componentCls:t}=e;return{[`&${t}-rtl`]:{direction:\"rtl\",[`${t}-item`]:{\"&-subtitle\":{float:\"left\"}},[`&${t}-navigation`]:{[`${t}-item::after`]:{transform:\"rotate(-45deg)\"}},[`&${t}-vertical`]:{[`> ${t}-item`]:{\"&::after\":{transform:\"rotate(225deg)\"},[`${t}-item-icon`]:{float:\"right\"}}},[`&${t}-dot`]:{[`${t}-item-icon ${t}-icon-dot, &${t}-small ${t}-item-icon ${t}-icon-dot`]:{float:\"right\"}}}}},Oj=e=>{const{componentCls:t,stepsSmallIconSize:n,fontSizeSM:o,fontSize:l,colorTextDescription:r}=e;return{[`&${t}-small`]:{[`&${t}-horizontal:not(${t}-label-vertical) ${t}-item`]:{paddingInlineStart:e.paddingSM,\"&:first-child\":{paddingInlineStart:0}},[`${t}-item-icon`]:{width:n,height:n,marginTop:0,marginBottom:0,marginInline:`0 ${e.marginXS}px`,fontSize:o,lineHeight:`${n}px`,textAlign:\"center\",borderRadius:n},[`${t}-item-title`]:{paddingInlineEnd:e.paddingSM,fontSize:l,lineHeight:`${n}px`,\"&::after\":{top:n/2}},[`${t}-item-description`]:{color:r,fontSize:l},[`${t}-item-tail`]:{top:n/2-e.paddingXXS},[`${t}-item-custom ${t}-item-icon`]:{width:\"inherit\",height:\"inherit\",lineHeight:\"inherit\",background:\"none\",border:0,borderRadius:0,[`> ${t}-icon`]:{fontSize:n,lineHeight:`${n}px`,transform:\"none\"}}}}},Ej=e=>{const{componentCls:t,stepsSmallIconSize:n,stepsIconSize:o}=e;return{[`&${t}-vertical`]:{display:\"flex\",flexDirection:\"column\",[`> ${t}-item`]:{display:\"block\",flex:\"1 0 auto\",paddingInlineStart:0,overflow:\"visible\",[`${t}-item-icon`]:{float:\"left\",marginInlineEnd:e.margin},[`${t}-item-content`]:{display:\"block\",minHeight:e.controlHeight*1.5,overflow:\"hidden\"},[`${t}-item-title`]:{lineHeight:`${o}px`},[`${t}-item-description`]:{paddingBottom:e.paddingSM}},[`> ${t}-item > ${t}-item-container > ${t}-item-tail`]:{position:\"absolute\",top:0,insetInlineStart:e.stepsIconSize/2-e.lineWidth,width:e.lineWidth,height:\"100%\",padding:`${o+e.marginXXS*1.5}px 0 ${e.marginXXS*1.5}px`,\"&::after\":{width:e.lineWidth,height:\"100%\"}},[`> ${t}-item:not(:last-child) > ${t}-item-container > ${t}-item-tail`]:{display:\"block\"},[` > ${t}-item > ${t}-item-container > ${t}-item-content > ${t}-item-title`]:{\"&::after\":{display:\"none\"}},[`&${t}-small ${t}-item-container`]:{[`${t}-item-tail`]:{position:\"absolute\",top:0,insetInlineStart:e.stepsSmallIconSize/2-e.lineWidth,padding:`${n+e.marginXXS*1.5}px 0 ${e.marginXXS*1.5}px`},[`${t}-item-title`]:{lineHeight:`${n}px`}}}}},Mj=e=>{const{componentCls:t,inlineDotSize:n,inlineTitleColor:o,inlineTailColor:l}=e,r=e.paddingXS+e.lineWidth,a={[`${t}-item-container ${t}-item-content ${t}-item-title`]:{color:o}};return{[`&${t}-inline`]:{width:\"auto\",display:\"inline-flex\",[`${t}-item`]:{flex:\"none\",\"&-container\":{padding:`${r}px ${e.paddingXXS}px 0`,margin:`0 ${e.marginXXS/2}px`,borderRadius:e.borderRadiusSM,cursor:\"pointer\",transition:`background-color ${e.motionDurationMid}`,\"&:hover\":{background:e.controlItemBgHover},\"&[role='button']:hover\":{opacity:1}},\"&-icon\":{width:n,height:n,marginInlineStart:`calc(50% - ${n/2}px)`,[`> ${t}-icon`]:{top:0},[`${t}-icon-dot`]:{borderRadius:e.fontSizeSM/4}},\"&-content\":{width:\"auto\",marginTop:e.marginXS-e.lineWidth},\"&-title\":{color:o,fontSize:e.fontSizeSM,lineHeight:e.lineHeightSM,fontWeight:\"normal\",marginBottom:e.marginXXS/2},\"&-description\":{display:\"none\"},\"&-tail\":{marginInlineStart:0,top:r+n/2,transform:\"translateY(-50%)\",\"&:after\":{width:\"100%\",height:e.lineWidth,borderRadius:0,marginInlineStart:0,background:l}},[`&:first-child ${t}-item-tail`]:{width:\"50%\",marginInlineStart:\"50%\"},[`&:last-child ${t}-item-tail`]:{display:\"block\",width:\"50%\"},\"&-wait\":h({[`${t}-item-icon ${t}-icon ${t}-icon-dot`]:{backgroundColor:e.colorBorderBg,border:`${e.lineWidth}px ${e.lineType} ${l}`}},a),\"&-finish\":h({[`${t}-item-tail::after`]:{backgroundColor:l},[`${t}-item-icon ${t}-icon ${t}-icon-dot`]:{backgroundColor:l,border:`${e.lineWidth}px ${e.lineType} ${l}`}},a),\"&-error\":a,\"&-active, &-process\":h({[`${t}-item-icon`]:{width:n,height:n,marginInlineStart:`calc(50% - ${n/2}px)`,top:0}},a),[`&:not(${t}-item-active) > ${t}-item-container[role='button']:hover`]:{[`${t}-item-title`]:{color:o}}}}}};var ea;(function(e){e.wait=\"wait\",e.process=\"process\",e.finish=\"finish\",e.error=\"error\"})(ea||(ea={}));const Os=(e,t)=>{const n=`${t.componentCls}-item`,o=`${e}IconColor`,l=`${e}TitleColor`,r=`${e}DescriptionColor`,a=`${e}TailColor`,i=`${e}IconBgColor`,s=`${e}IconBorderColor`,c=`${e}DotColor`;return{[`${n}-${e} ${n}-icon`]:{backgroundColor:t[i],borderColor:t[s],[`> ${t.componentCls}-icon`]:{color:t[o],[`${t.componentCls}-icon-dot`]:{background:t[c]}}},[`${n}-${e}${n}-custom ${n}-icon`]:{[`> ${t.componentCls}-icon`]:{color:t[c]}},[`${n}-${e} > ${n}-container > ${n}-content > ${n}-title`]:{color:t[l],\"&::after\":{backgroundColor:t[a]}},[`${n}-${e} > ${n}-container > ${n}-content > ${n}-description`]:{color:t[r]},[`${n}-${e} > ${n}-container > ${n}-tail::after`]:{backgroundColor:t[a]}}},Aj=e=>{const{componentCls:t,motionDurationSlow:n}=e,o=`${t}-item`;return h(h(h(h(h(h({[o]:{position:\"relative\",display:\"inline-block\",flex:1,overflow:\"hidden\",verticalAlign:\"top\",\"&:last-child\":{flex:\"none\",[`> ${o}-container > ${o}-tail, > ${o}-container >  ${o}-content > ${o}-title::after`]:{display:\"none\"}}},[`${o}-container`]:{outline:\"none\"},[`${o}-icon, ${o}-content`]:{display:\"inline-block\",verticalAlign:\"top\"},[`${o}-icon`]:{width:e.stepsIconSize,height:e.stepsIconSize,marginTop:0,marginBottom:0,marginInlineStart:0,marginInlineEnd:e.marginXS,fontSize:e.stepsIconFontSize,fontFamily:e.fontFamily,lineHeight:`${e.stepsIconSize}px`,textAlign:\"center\",borderRadius:e.stepsIconSize,border:`${e.lineWidth}px ${e.lineType} transparent`,transition:`background-color ${n}, border-color ${n}`,[`${t}-icon`]:{position:\"relative\",top:e.stepsIconTop,color:e.colorPrimary,lineHeight:1}},[`${o}-tail`]:{position:\"absolute\",top:e.stepsIconSize/2-e.paddingXXS,insetInlineStart:0,width:\"100%\",\"&::after\":{display:\"inline-block\",width:\"100%\",height:e.lineWidth,background:e.colorSplit,borderRadius:e.lineWidth,transition:`background ${n}`,content:'\"\"'}},[`${o}-title`]:{position:\"relative\",display:\"inline-block\",paddingInlineEnd:e.padding,color:e.colorText,fontSize:e.fontSizeLG,lineHeight:`${e.stepsTitleLineHeight}px`,\"&::after\":{position:\"absolute\",top:e.stepsTitleLineHeight/2,insetInlineStart:\"100%\",display:\"block\",width:9999,height:e.lineWidth,background:e.processTailColor,content:'\"\"'}},[`${o}-subtitle`]:{display:\"inline\",marginInlineStart:e.marginXS,color:e.colorTextDescription,fontWeight:\"normal\",fontSize:e.fontSize},[`${o}-description`]:{color:e.colorTextDescription,fontSize:e.fontSize}},Os(ea.wait,e)),Os(ea.process,e)),{[`${o}-process > ${o}-container > ${o}-title`]:{fontWeight:e.fontWeightStrong}}),Os(ea.finish,e)),Os(ea.error,e)),{[`${o}${t}-next-error > ${t}-item-title::after`]:{background:e.colorError},[`${o}-disabled`]:{cursor:\"not-allowed\"}})},Dj=e=>{const{componentCls:t,motionDurationSlow:n}=e;return{[`& ${t}-item`]:{[`&:not(${t}-item-active)`]:{[`& > ${t}-item-container[role='button']`]:{cursor:\"pointer\",[`${t}-item`]:{[`&-title, &-subtitle, &-description, &-icon ${t}-icon`]:{transition:`color ${n}`}},\"&:hover\":{[`${t}-item`]:{\"&-title, &-subtitle, &-description\":{color:e.colorPrimary}}}},[`&:not(${t}-item-process)`]:{[`& > ${t}-item-container[role='button']:hover`]:{[`${t}-item`]:{\"&-icon\":{borderColor:e.colorPrimary,[`${t}-icon`]:{color:e.colorPrimary}}}}}}},[`&${t}-horizontal:not(${t}-label-vertical)`]:{[`${t}-item`]:{paddingInlineStart:e.padding,whiteSpace:\"nowrap\",\"&:first-child\":{paddingInlineStart:0},[`&:last-child ${t}-item-title`]:{paddingInlineEnd:0},\"&-tail\":{display:\"none\"},\"&-description\":{maxWidth:e.descriptionWidth,whiteSpace:\"normal\"}}}}},Rj=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h(h(h(h(h(h(h(h(h({},qe(e)),{display:\"flex\",width:\"100%\",fontSize:0,textAlign:\"initial\"}),Aj(e)),Dj(e)),xj(e)),Oj(e)),Ej(e)),wj(e)),Pj(e)),_j(e)),Tj(e)),Ij(e)),Mj(e))}},kj=Xe(\"Steps\",e=>{const{wireframe:t,colorTextDisabled:n,fontSizeHeading3:o,fontSize:l,controlHeight:r,controlHeightLG:a,colorTextLightSolid:i,colorText:s,colorPrimary:c,colorTextLabel:u,colorTextDescription:d,colorTextQuaternary:p,colorFillContent:m,controlItemBgActive:g,colorError:v,colorBgContainer:y,colorBorderSecondary:b}=e,S=e.controlHeight,$=e.colorSplit,w=Le(e,{processTailColor:$,stepsNavArrowColor:n,stepsIconSize:S,stepsIconCustomSize:S,stepsIconCustomTop:0,stepsIconCustomFontSize:a/2,stepsIconTop:-.5,stepsIconFontSize:l,stepsTitleLineHeight:r,stepsSmallIconSize:o,stepsDotSize:r/4,stepsCurrentDotSize:a/4,stepsNavContentMaxWidth:\"auto\",processIconColor:i,processTitleColor:s,processDescriptionColor:s,processIconBgColor:c,processIconBorderColor:c,processDotColor:c,waitIconColor:t?n:u,waitTitleColor:d,waitDescriptionColor:d,waitTailColor:$,waitIconBgColor:t?y:m,waitIconBorderColor:t?n:\"transparent\",waitDotColor:n,finishIconColor:c,finishTitleColor:s,finishDescriptionColor:d,finishTailColor:c,finishIconBgColor:t?y:g,finishIconBorderColor:t?c:g,finishDotColor:c,errorIconColor:i,errorTitleColor:v,errorDescriptionColor:v,errorTailColor:$,errorIconBgColor:v,errorIconBorderColor:v,errorDotColor:v,stepsNavActiveColor:c,stepsProgressSize:a,inlineDotSize:6,inlineTitleColor:p,inlineTailColor:b});return[Rj(w)]},{descriptionWidth:140}),Nj=()=>({prefixCls:String,iconPrefix:String,current:Number,initial:Number,percent:Number,responsive:ye(),items:ct(),labelPlacement:ke(),status:ke(),size:ke(),direction:ke(),progressDot:Fe([Boolean,Function]),type:ke(),onChange:de(),\"onUpdate:current\":de()}),kf=ne({compatConfig:{MODE:3},name:\"ASteps\",inheritAttrs:!1,props:Je(Nj(),{current:0,responsive:!0,labelPlacement:\"horizontal\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:l}=t;const{prefixCls:r,direction:a,configProvider:i}=Te(\"steps\",e),[s,c]=kj(r),[,u]=yl(),d=Ma(),p=I(()=>e.responsive&&d.value.xs?\"vertical\":e.direction),m=I(()=>i.getPrefixCls(\"\",e.iconPrefix)),g=$=>{l(\"update:current\",$),l(\"change\",$)},v=I(()=>e.type===\"inline\"),y=I(()=>v.value?void 0:e.percent),b=$=>{let{node:w,status:C}=$;if(C===\"process\"&&e.percent!==void 0){const _=e.size===\"small\"?u.value.controlHeight:u.value.controlHeightLG;return f(\"div\",{class:`${r.value}-progress-icon`},[f(jg,{type:\"circle\",percent:y.value,size:_,strokeWidth:4,format:()=>null},null),w])}return w},S=I(()=>({finish:f(Iu,{class:`${r.value}-finish-icon`},null),error:f(Kn,{class:`${r.value}-error-icon`},null)}));return()=>{const $=re({[`${r.value}-rtl`]:a.value===\"rtl\",[`${r.value}-with-progress`]:y.value!==void 0},n.class,c.value),w=(C,_)=>C.description?f(Fn,{title:C.description},{default:()=>[_]}):_;return s(f(Cj,A(A(A({icons:S.value},n),lt(e,[\"percent\",\"responsive\"])),{},{items:e.items,direction:p.value,prefixCls:r.value,iconPrefix:m.value,class:$,onChange:g,isInline:v.value,itemRender:v.value?w:void 0}),h({stepIcon:b},o)))}}}),Sc=ne(h(h({compatConfig:{MODE:3}},J_),{name:\"AStep\",props:Q_()})),Bj=h(kf,{Step:Sc,install:e=>(e.component(kf.name,kf),e.component(Sc.name,Sc),e)}),Lj=e=>{const{componentCls:t}=e,n=`${t}-inner`;return{[t]:{[`&${t}-small`]:{minWidth:e.switchMinWidthSM,height:e.switchHeightSM,lineHeight:`${e.switchHeightSM}px`,[`${t}-inner`]:{paddingInlineStart:e.switchInnerMarginMaxSM,paddingInlineEnd:e.switchInnerMarginMinSM,[`${n}-checked`]:{marginInlineStart:`calc(-100% + ${e.switchPinSizeSM+e.switchPadding*2}px - ${e.switchInnerMarginMaxSM*2}px)`,marginInlineEnd:`calc(100% - ${e.switchPinSizeSM+e.switchPadding*2}px + ${e.switchInnerMarginMaxSM*2}px)`},[`${n}-unchecked`]:{marginTop:-e.switchHeightSM,marginInlineStart:0,marginInlineEnd:0}},[`${t}-handle`]:{width:e.switchPinSizeSM,height:e.switchPinSizeSM},[`${t}-loading-icon`]:{top:(e.switchPinSizeSM-e.switchLoadingIconSize)/2,fontSize:e.switchLoadingIconSize},[`&${t}-checked`]:{[`${t}-inner`]:{paddingInlineStart:e.switchInnerMarginMinSM,paddingInlineEnd:e.switchInnerMarginMaxSM,[`${n}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${n}-unchecked`]:{marginInlineStart:`calc(100% - ${e.switchPinSizeSM+e.switchPadding*2}px + ${e.switchInnerMarginMaxSM*2}px)`,marginInlineEnd:`calc(-100% + ${e.switchPinSizeSM+e.switchPadding*2}px - ${e.switchInnerMarginMaxSM*2}px)`}},[`${t}-handle`]:{insetInlineStart:`calc(100% - ${e.switchPinSizeSM+e.switchPadding}px)`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${n}`]:{[`${n}-unchecked`]:{marginInlineStart:e.marginXXS/2,marginInlineEnd:-e.marginXXS/2}},[`&${t}-checked ${n}`]:{[`${n}-checked`]:{marginInlineStart:-e.marginXXS/2,marginInlineEnd:e.marginXXS/2}}}}}}},Fj=e=>{const{componentCls:t}=e;return{[t]:{[`${t}-loading-icon${e.iconCls}`]:{position:\"relative\",top:(e.switchPinSize-e.fontSize)/2,color:e.switchLoadingIconColor,verticalAlign:\"top\"},[`&${t}-checked ${t}-loading-icon`]:{color:e.switchColor}}}},zj=e=>{const{componentCls:t}=e,n=`${t}-handle`;return{[t]:{[n]:{position:\"absolute\",top:e.switchPadding,insetInlineStart:e.switchPadding,width:e.switchPinSize,height:e.switchPinSize,transition:`all ${e.switchDuration} ease-in-out`,\"&::before\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:e.colorWhite,borderRadius:e.switchPinSize/2,boxShadow:e.switchHandleShadow,transition:`all ${e.switchDuration} ease-in-out`,content:'\"\"'}},[`&${t}-checked ${n}`]:{insetInlineStart:`calc(100% - ${e.switchPinSize+e.switchPadding}px)`},[`&:not(${t}-disabled):active`]:{[`${n}::before`]:{insetInlineEnd:e.switchHandleActiveInset,insetInlineStart:0},[`&${t}-checked ${n}::before`]:{insetInlineEnd:0,insetInlineStart:e.switchHandleActiveInset}}}}},Hj=e=>{const{componentCls:t}=e,n=`${t}-inner`;return{[t]:{[n]:{display:\"block\",overflow:\"hidden\",borderRadius:100,height:\"100%\",paddingInlineStart:e.switchInnerMarginMax,paddingInlineEnd:e.switchInnerMarginMin,transition:`padding-inline-start ${e.switchDuration} ease-in-out, padding-inline-end ${e.switchDuration} ease-in-out`,[`${n}-checked, ${n}-unchecked`]:{display:\"block\",color:e.colorTextLightSolid,fontSize:e.fontSizeSM,transition:`margin-inline-start ${e.switchDuration} ease-in-out, margin-inline-end ${e.switchDuration} ease-in-out`,pointerEvents:\"none\"},[`${n}-checked`]:{marginInlineStart:`calc(-100% + ${e.switchPinSize+e.switchPadding*2}px - ${e.switchInnerMarginMax*2}px)`,marginInlineEnd:`calc(100% - ${e.switchPinSize+e.switchPadding*2}px + ${e.switchInnerMarginMax*2}px)`},[`${n}-unchecked`]:{marginTop:-e.switchHeight,marginInlineStart:0,marginInlineEnd:0}},[`&${t}-checked ${n}`]:{paddingInlineStart:e.switchInnerMarginMin,paddingInlineEnd:e.switchInnerMarginMax,[`${n}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${n}-unchecked`]:{marginInlineStart:`calc(100% - ${e.switchPinSize+e.switchPadding*2}px + ${e.switchInnerMarginMax*2}px)`,marginInlineEnd:`calc(-100% + ${e.switchPinSize+e.switchPadding*2}px - ${e.switchInnerMarginMax*2}px)`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${n}`]:{[`${n}-unchecked`]:{marginInlineStart:e.switchPadding*2,marginInlineEnd:-e.switchPadding*2}},[`&${t}-checked ${n}`]:{[`${n}-checked`]:{marginInlineStart:-e.switchPadding*2,marginInlineEnd:e.switchPadding*2}}}}}},jj=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h({},qe(e)),{position:\"relative\",display:\"inline-block\",boxSizing:\"border-box\",minWidth:e.switchMinWidth,height:e.switchHeight,lineHeight:`${e.switchHeight}px`,verticalAlign:\"middle\",background:e.colorTextQuaternary,border:\"0\",borderRadius:100,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`,userSelect:\"none\",[`&:hover:not(${t}-disabled)`]:{background:e.colorTextTertiary}}),pl(e)),{[`&${t}-checked`]:{background:e.switchColor,[`&:hover:not(${t}-disabled)`]:{background:e.colorPrimaryHover}},[`&${t}-loading, &${t}-disabled`]:{cursor:\"not-allowed\",opacity:e.switchDisabledOpacity,\"*\":{boxShadow:\"none\",cursor:\"not-allowed\"}},[`&${t}-rtl`]:{direction:\"rtl\"}})}},Wj=Xe(\"Switch\",e=>{const t=e.fontSize*e.lineHeight,n=e.controlHeight/2,o=2,l=t-o*2,r=n-o*2,a=Le(e,{switchMinWidth:l*2+o*4,switchHeight:t,switchDuration:e.motionDurationMid,switchColor:e.colorPrimary,switchDisabledOpacity:e.opacityLoading,switchInnerMarginMin:l/2,switchInnerMarginMax:l+o+o*2,switchPadding:o,switchPinSize:l,switchBg:e.colorBgContainer,switchMinWidthSM:r*2+o*2,switchHeightSM:n,switchInnerMarginMinSM:r/2,switchInnerMarginMaxSM:r+o+o*2,switchPinSizeSM:r,switchHandleShadow:`0 2px 4px 0 ${new vt(\"#00230b\").setAlpha(.2).toRgbString()}`,switchLoadingIconSize:e.fontSizeIcon*.75,switchLoadingIconColor:`rgba(0, 0, 0, ${e.opacityLoading})`,switchHandleActiveInset:\"-30%\"});return[jj(a),Hj(a),zj(a),Fj(a),Lj(a)]}),Vj=hn(\"small\",\"default\"),Kj=()=>({id:String,prefixCls:String,size:W.oneOf(Vj),disabled:{type:Boolean,default:void 0},checkedChildren:W.any,unCheckedChildren:W.any,tabindex:W.oneOfType([W.string,W.number]),autofocus:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},checked:W.oneOfType([W.string,W.number,W.looseBool]),checkedValue:W.oneOfType([W.string,W.number,W.looseBool]).def(!0),unCheckedValue:W.oneOfType([W.string,W.number,W.looseBool]).def(!1),onChange:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onMouseup:{type:Function},\"onUpdate:checked\":{type:Function},onBlur:Function,onFocus:Function}),Gj=ne({compatConfig:{MODE:3},name:\"ASwitch\",__ANT_SWITCH:!0,inheritAttrs:!1,props:Kj(),slots:Object,setup(e,t){let{attrs:n,slots:o,expose:l,emit:r}=t;const a=Jt(),i=jn(),s=I(()=>{var E;return(E=e.disabled)!==null&&E!==void 0?E:i.value});_m(()=>{});const c=Z(e.checked!==void 0?e.checked:n.defaultChecked),u=I(()=>c.value===e.checkedValue);pe(()=>e.checked,()=>{c.value=e.checked});const{prefixCls:d,direction:p,size:m}=Te(\"switch\",e),[g,v]=Wj(d),y=Z(),b=()=>{var E;(E=y.value)===null||E===void 0||E.focus()};l({focus:b,blur:()=>{var E;(E=y.value)===null||E===void 0||E.blur()}}),Be(()=>{it(()=>{e.autofocus&&!s.value&&y.value.focus()})});const $=(E,M)=>{s.value||(r(\"update:checked\",E),r(\"change\",E,M),a.onFieldChange())},w=E=>{r(\"blur\",E)},C=E=>{b();const M=u.value?e.unCheckedValue:e.checkedValue;$(M,E),r(\"click\",M,E)},_=E=>{E.keyCode===we.LEFT?$(e.unCheckedValue,E):E.keyCode===we.RIGHT&&$(e.checkedValue,E),r(\"keydown\",E)},x=E=>{var M;(M=y.value)===null||M===void 0||M.blur(),r(\"mouseup\",E)},P=I(()=>({[`${d.value}-small`]:m.value===\"small\",[`${d.value}-loading`]:e.loading,[`${d.value}-checked`]:u.value,[`${d.value}-disabled`]:s.value,[d.value]:!0,[`${d.value}-rtl`]:p.value===\"rtl\",[v.value]:!0}));return()=>{var E;return g(f(Bv,null,{default:()=>[f(\"button\",A(A(A({},lt(e,[\"prefixCls\",\"checkedChildren\",\"unCheckedChildren\",\"checked\",\"autofocus\",\"checkedValue\",\"unCheckedValue\",\"id\",\"onChange\",\"onUpdate:checked\"])),n),{},{id:(E=e.id)!==null&&E!==void 0?E:a.id.value,onKeydown:_,onClick:C,onBlur:w,onMouseup:x,type:\"button\",role:\"switch\",\"aria-checked\":c.value,disabled:s.value||e.loading,class:[n.class,P.value],ref:y}),[f(\"div\",{class:`${d.value}-handle`},[e.loading?f(eo,{class:`${d.value}-loading-icon`},null):null]),f(\"span\",{class:`${d.value}-inner`},[f(\"span\",{class:`${d.value}-inner-checked`},[Qt(o,e,\"checkedChildren\")]),f(\"span\",{class:`${d.value}-inner-unchecked`},[Qt(o,e,\"unCheckedChildren\")])])])]}))}}}),Xj=Dt(Gj),e2=Symbol(\"TableContextProps\"),Uj=e=>{et(e2,e)},qo=()=>nt(e2,{}),Yj=\"RC_TABLE_KEY\";function t2(e){return e==null?[]:Array.isArray(e)?e:[e]}function n2(e,t){if(!t&&typeof t!=\"number\")return e;const n=t2(t);let o=e;for(let l=0;l<n.length;l+=1){if(!o)return null;const r=n[l];o=o[r]}return o}function Pd(e){const t=[],n={};return e.forEach(o=>{const{key:l,dataIndex:r}=o||{};let a=l||t2(r).join(\"-\")||Yj;for(;n[a];)a=`${a}_next`;n[a]=!0,t.push(a)}),t}function qj(){const e={};function t(r,a){a&&Object.keys(a).forEach(i=>{const s=a[i];s&&typeof s==\"object\"?(r[i]=r[i]||{},t(r[i],s)):r[i]=s})}for(var n=arguments.length,o=new Array(n),l=0;l<n;l++)o[l]=arguments[l];return o.forEach(r=>{t(e,r)}),e}function am(e){return e!=null}const o2=Symbol(\"SlotsContextProps\"),Zj=e=>{et(o2,e)},Kg=()=>nt(o2,I(()=>({}))),l2=Symbol(\"ContextProps\"),Qj=e=>{et(l2,e)},Jj=()=>nt(l2,{onResizeColumn:()=>{}}),ua=\"RC_TABLE_INTERNAL_COL_DEFINE\",r2=Symbol(\"HoverContextProps\"),eW=e=>{et(r2,e)},tW=()=>nt(r2,{startRow:ee(-1),endRow:ee(-1),onHover(){}}),im=ee(!1),nW=()=>{Be(()=>{im.value=im.value||_g(\"position\",\"sticky\")})},oW=()=>im;var lW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function rW(e,t,n,o){const l=e+t-1;return e<=o&&l>=n}function aW(e){return e&&typeof e==\"object\"&&!Array.isArray(e)&&!gn(e)}const Td=ne({name:\"Cell\",props:[\"prefixCls\",\"record\",\"index\",\"renderIndex\",\"dataIndex\",\"customRender\",\"component\",\"colSpan\",\"rowSpan\",\"fixLeft\",\"fixRight\",\"firstFixLeft\",\"lastFixLeft\",\"firstFixRight\",\"lastFixRight\",\"appendNode\",\"additionalProps\",\"ellipsis\",\"align\",\"rowType\",\"isSticky\",\"column\",\"cellType\",\"transformCellText\"],setup(e,t){let{slots:n}=t;const o=Kg(),{onHover:l,startRow:r,endRow:a}=tW(),i=I(()=>{var v,y,b,S;return(b=(v=e.colSpan)!==null&&v!==void 0?v:(y=e.additionalProps)===null||y===void 0?void 0:y.colSpan)!==null&&b!==void 0?b:(S=e.additionalProps)===null||S===void 0?void 0:S.colspan}),s=I(()=>{var v,y,b,S;return(b=(v=e.rowSpan)!==null&&v!==void 0?v:(y=e.additionalProps)===null||y===void 0?void 0:y.rowSpan)!==null&&b!==void 0?b:(S=e.additionalProps)===null||S===void 0?void 0:S.rowspan}),c=qn(()=>{const{index:v}=e;return rW(v,s.value||1,r.value,a.value)}),u=oW(),d=(v,y)=>{var b;const{record:S,index:$,additionalProps:w}=e;S&&l($,$+y-1),(b=w?.onMouseenter)===null||b===void 0||b.call(w,v)},p=v=>{var y;const{record:b,additionalProps:S}=e;b&&l(-1,-1),(y=S?.onMouseleave)===null||y===void 0||y.call(S,v)},m=v=>{const y=kt(v)[0];return gn(y)?y.type===Di?y.children:Array.isArray(y.children)?m(y.children):void 0:y},g=ee(null);return pe([c,()=>e.prefixCls,g],()=>{const v=Tn(g.value);v&&(c.value?lu(v,`${e.prefixCls}-cell-row-hover`):ru(v,`${e.prefixCls}-cell-row-hover`))}),()=>{var v,y,b,S,$,w;const{prefixCls:C,record:_,index:x,renderIndex:P,dataIndex:E,customRender:M,component:O=\"td\",fixLeft:R,fixRight:D,firstFixLeft:z,lastFixLeft:T,firstFixRight:k,lastFixRight:B,appendNode:L=(v=n.appendNode)===null||v===void 0?void 0:v.call(n),additionalProps:N={},ellipsis:F,align:j,rowType:H,isSticky:K,column:G={},cellType:V}=e,q=`${C}-cell`;let Q,oe;const le=(y=n.default)===null||y===void 0?void 0:y.call(n);if(am(le)||V===\"header\")oe=le;else{const te=n2(_,E);if(oe=te,M){const ae=M({text:te,value:te,record:_,index:x,renderIndex:P,column:G.__originColumn__});aW(ae)?(oe=ae.children,Q=ae.props):oe=ae}if(!(ua in G)&&V===\"body\"&&o.value.bodyCell&&!(!((b=G.slots)===null||b===void 0)&&b.customRender)){const ae=Vu(o.value,\"bodyCell\",{text:te,value:te,record:_,index:x,column:G.__originColumn__},()=>{const fe=oe===void 0?te:oe;return[typeof fe==\"object\"&&Gt(fe)||typeof fe!=\"object\"?fe:null]});oe=xt(ae)}e.transformCellText&&(oe=e.transformCellText({text:oe,record:_,index:x,column:G.__originColumn__}))}typeof oe==\"object\"&&!Array.isArray(oe)&&!gn(oe)&&(oe=null),F&&(T||k)&&(oe=f(\"span\",{class:`${q}-content`},[oe])),Array.isArray(oe)&&oe.length===1&&(oe=oe[0]);const Y=Q||{},{colSpan:J,rowSpan:ce,style:ue,class:be}=Y,Ce=lW(Y,[\"colSpan\",\"rowSpan\",\"style\",\"class\"]),ge=(S=J!==void 0?J:i.value)!==null&&S!==void 0?S:1,Se=($=ce!==void 0?ce:s.value)!==null&&$!==void 0?$:1;if(ge===0||Se===0)return null;const X={},U=typeof R==\"number\"&&u.value,ie=typeof D==\"number\"&&u.value;U&&(X.position=\"sticky\",X.left=`${R}px`),ie&&(X.position=\"sticky\",X.right=`${D}px`);const ve={};j&&(ve.textAlign=j);let me;const he=F===!0?{showTitle:!0}:F;he&&(he.showTitle||H===\"header\")&&(typeof oe==\"string\"||typeof oe==\"number\"?me=oe.toString():gn(oe)&&(me=m([oe])));const se=h(h(h({title:me},Ce),N),{colSpan:ge!==1?ge:null,rowSpan:Se!==1?Se:null,class:re(q,{[`${q}-fix-left`]:U&&u.value,[`${q}-fix-left-first`]:z&&u.value,[`${q}-fix-left-last`]:T&&u.value,[`${q}-fix-right`]:ie&&u.value,[`${q}-fix-right-first`]:k&&u.value,[`${q}-fix-right-last`]:B&&u.value,[`${q}-ellipsis`]:F,[`${q}-with-append`]:L,[`${q}-fix-sticky`]:(U||ie)&&K&&u.value},N.class,be),onMouseenter:te=>{d(te,Se)},onMouseleave:p,style:[N.style,ve,X,ue]});return f(O,A(A({},se),{},{ref:g}),{default:()=>[L,oe,(w=n.dragHandle)===null||w===void 0?void 0:w.call(n)]})}}});function Gg(e,t,n,o,l){const r=n[e]||{},a=n[t]||{};let i,s;r.fixed===\"left\"?i=o.left[e]:a.fixed===\"right\"&&(s=o.right[t]);let c=!1,u=!1,d=!1,p=!1;const m=n[t+1],g=n[e-1];return l===\"rtl\"?i!==void 0?p=!(g&&g.fixed===\"left\"):s!==void 0&&(d=!(m&&m.fixed===\"right\")):i!==void 0?c=!(m&&m.fixed===\"left\"):s!==void 0&&(u=!(g&&g.fixed===\"right\")),{fixLeft:i,fixRight:s,lastFixLeft:c,firstFixRight:u,lastFixRight:d,firstFixLeft:p,isSticky:o.isSticky}}const eS={mouse:{move:\"mousemove\",stop:\"mouseup\"},touch:{move:\"touchmove\",stop:\"touchend\"}},tS=50,iW=ne({compatConfig:{MODE:3},name:\"DragHandle\",props:{prefixCls:String,width:{type:Number,required:!0},minWidth:{type:Number,default:tS},maxWidth:{type:Number,default:1/0},column:{type:Object,default:void 0}},setup(e){let t=0,n={remove:()=>{}},o={remove:()=>{}};const l=()=>{n.remove(),o.remove()};Mn(()=>{l()}),ze(()=>{Ot(!isNaN(e.width),\"Table\",\"width must be a number when use resizable\")});const{onResizeColumn:r}=Jj(),a=I(()=>typeof e.minWidth==\"number\"&&!isNaN(e.minWidth)?e.minWidth:tS),i=I(()=>typeof e.maxWidth==\"number\"&&!isNaN(e.maxWidth)?e.maxWidth:1/0),s=fn();let c=0;const u=ee(!1);let d;const p=$=>{let w=0;$.touches?$.touches.length?w=$.touches[0].pageX:w=$.changedTouches[0].pageX:w=$.pageX;const C=t-w;let _=Math.max(c-C,a.value);_=Math.min(_,i.value),Qe.cancel(d),d=Qe(()=>{r(_,e.column.__originColumn__)})},m=$=>{p($)},g=$=>{u.value=!1,p($),l()},v=($,w)=>{u.value=!0,l(),c=s.vnode.el.parentNode.getBoundingClientRect().width,!($ instanceof MouseEvent&&$.which!==1)&&($.stopPropagation&&$.stopPropagation(),t=$.touches?$.touches[0].pageX:$.pageX,n=Rt(document.documentElement,w.move,m),o=Rt(document.documentElement,w.stop,g))},y=$=>{$.stopPropagation(),$.preventDefault(),v($,eS.mouse)},b=$=>{$.stopPropagation(),$.preventDefault(),v($,eS.touch)},S=$=>{$.stopPropagation(),$.preventDefault()};return()=>{const{prefixCls:$}=e,w={[qt?\"onTouchstartPassive\":\"onTouchstart\"]:C=>b(C)};return f(\"div\",A(A({class:`${$}-resize-handle ${u.value?\"dragging\":\"\"}`,onMousedown:y},w),{},{onClick:S}),[f(\"div\",{class:`${$}-resize-handle-line`},null)])}}}),sW=ne({name:\"HeaderRow\",props:[\"cells\",\"stickyOffsets\",\"flattenColumns\",\"rowComponent\",\"cellComponent\",\"index\",\"customHeaderRow\"],setup(e){const t=qo();return()=>{const{prefixCls:n,direction:o}=t,{cells:l,stickyOffsets:r,flattenColumns:a,rowComponent:i,cellComponent:s,customHeaderRow:c,index:u}=e;let d;c&&(d=c(l.map(m=>m.column),u));const p=Pd(l.map(m=>m.column));return f(i,d,{default:()=>[l.map((m,g)=>{const{column:v}=m,y=Gg(m.colStart,m.colEnd,a,r,o);let b;v&&v.customHeaderCell&&(b=m.column.customHeaderCell(v));const S=v;return f(Td,A(A(A({},m),{},{cellType:\"header\",ellipsis:v.ellipsis,align:v.align,component:s,prefixCls:n,key:p[g]},y),{},{additionalProps:b,rowType:\"header\",column:v}),{default:()=>v.title,dragHandle:()=>S.resizable?f(iW,{prefixCls:n,width:S.width,minWidth:S.minWidth,maxWidth:S.maxWidth,column:S},null):null})})]})}}});function cW(e){const t=[];function n(l,r){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;t[a]=t[a]||[];let i=r;return l.filter(Boolean).map(c=>{const u={key:c.key,class:re(c.className,c.class),column:c,colStart:i};let d=1;const p=c.children;return p&&p.length>0&&(d=n(p,i,a+1).reduce((m,g)=>m+g,0),u.hasSubColumns=!0),\"colSpan\"in c&&({colSpan:d}=c),\"rowSpan\"in c&&(u.rowSpan=c.rowSpan),u.colSpan=d,u.colEnd=u.colStart+d-1,t[a].push(u),i+=d,d})}n(e,0);const o=t.length;for(let l=0;l<o;l+=1)t[l].forEach(r=>{!(\"rowSpan\"in r)&&!r.hasSubColumns&&(r.rowSpan=o-l)});return t}const nS=ne({name:\"TableHeader\",inheritAttrs:!1,props:[\"columns\",\"flattenColumns\",\"stickyOffsets\",\"customHeaderRow\"],setup(e){const t=qo(),n=I(()=>cW(e.columns));return()=>{const{prefixCls:o,getComponent:l}=t,{stickyOffsets:r,flattenColumns:a,customHeaderRow:i}=e,s=l([\"header\",\"wrapper\"],\"thead\"),c=l([\"header\",\"row\"],\"tr\"),u=l([\"header\",\"cell\"],\"th\");return f(s,{class:`${o}-thead`},{default:()=>[n.value.map((d,p)=>f(sW,{key:p,flattenColumns:a,cells:d,stickyOffsets:r,rowComponent:c,cellComponent:u,customHeaderRow:i,index:p},null))]})}}}),a2=Symbol(\"ExpandedRowProps\"),uW=e=>{et(a2,e)},dW=()=>nt(a2,{}),i2=ne({name:\"ExpandedRow\",inheritAttrs:!1,props:[\"prefixCls\",\"component\",\"cellComponent\",\"expanded\",\"colSpan\",\"isEmpty\"],setup(e,t){let{slots:n,attrs:o}=t;const l=qo(),r=dW(),{fixHeader:a,fixColumn:i,componentWidth:s,horizonScroll:c}=r;return()=>{const{prefixCls:u,component:d,cellComponent:p,expanded:m,colSpan:g,isEmpty:v}=e;return f(d,{class:o.class,style:{display:m?null:\"none\"}},{default:()=>[f(Td,{component:p,prefixCls:u,colSpan:g},{default:()=>{var y;let b=(y=n.default)===null||y===void 0?void 0:y.call(n);return(v?c.value:i.value)&&(b=f(\"div\",{style:{width:`${s.value-(a.value?l.scrollbarSize:0)}px`,position:\"sticky\",left:0,overflow:\"hidden\"},class:`${u}-expanded-row-fixed`},[b])),b}})]})}}}),fW=ne({name:\"MeasureCell\",props:[\"columnKey\"],setup(e,t){let{emit:n}=t;const o=Z();return Be(()=>{o.value&&n(\"columnResize\",e.columnKey,o.value.offsetWidth)}),()=>f(bo,{onResize:l=>{let{offsetWidth:r}=l;n(\"columnResize\",e.columnKey,r)}},{default:()=>[f(\"td\",{ref:o,style:{padding:0,border:0,height:0}},[f(\"div\",{style:{height:0,overflow:\"hidden\"}},[bt(\" \")])])]})}}),s2=Symbol(\"BodyContextProps\"),pW=e=>{et(s2,e)},c2=()=>nt(s2,{}),mW=ne({name:\"BodyRow\",inheritAttrs:!1,props:[\"record\",\"index\",\"renderIndex\",\"recordKey\",\"expandedKeys\",\"rowComponent\",\"cellComponent\",\"customRow\",\"rowExpandable\",\"indent\",\"rowKey\",\"getRowKey\",\"childrenColumnName\"],setup(e,t){let{attrs:n}=t;const o=qo(),l=c2(),r=ee(!1),a=I(()=>e.expandedKeys&&e.expandedKeys.has(e.recordKey));ze(()=>{a.value&&(r.value=!0)});const i=I(()=>l.expandableType===\"row\"&&(!e.rowExpandable||e.rowExpandable(e.record))),s=I(()=>l.expandableType===\"nest\"),c=I(()=>e.childrenColumnName&&e.record&&e.record[e.childrenColumnName]),u=I(()=>i.value||s.value),d=(y,b)=>{l.onTriggerExpand(y,b)},p=I(()=>{var y;return((y=e.customRow)===null||y===void 0?void 0:y.call(e,e.record,e.index))||{}}),m=function(y){var b,S;l.expandRowByClick&&u.value&&d(e.record,y);for(var $=arguments.length,w=new Array($>1?$-1:0),C=1;C<$;C++)w[C-1]=arguments[C];(S=(b=p.value)===null||b===void 0?void 0:b.onClick)===null||S===void 0||S.call(b,y,...w)},g=I(()=>{const{record:y,index:b,indent:S}=e,{rowClassName:$}=l;return typeof $==\"string\"?$:typeof $==\"function\"?$(y,b,S):\"\"}),v=I(()=>Pd(l.flattenColumns));return()=>{const{class:y,style:b}=n,{record:S,index:$,rowKey:w,indent:C=0,rowComponent:_,cellComponent:x}=e,{prefixCls:P,fixedInfoList:E,transformCellText:M}=o,{flattenColumns:O,expandedRowClassName:R,indentSize:D,expandIcon:z,expandedRowRender:T,expandIconColumnIndex:k}=l,B=f(_,A(A({},p.value),{},{\"data-row-key\":w,class:re(y,`${P}-row`,`${P}-row-level-${C}`,g.value,p.value.class),style:[b,p.value.style],onClick:m}),{default:()=>[O.map((N,F)=>{const{customRender:j,dataIndex:H,className:K}=N,G=v[F],V=E[F];let q;N.customCell&&(q=N.customCell(S,$,N));const Q=F===(k||0)&&s.value?f(He,null,[f(\"span\",{style:{paddingLeft:`${D*C}px`},class:`${P}-row-indent indent-level-${C}`},null),z({prefixCls:P,expanded:a.value,expandable:c.value,record:S,onExpand:d})]):null;return f(Td,A(A({cellType:\"body\",class:K,ellipsis:N.ellipsis,align:N.align,component:x,prefixCls:P,key:G,record:S,index:$,renderIndex:e.renderIndex,dataIndex:H,customRender:j},V),{},{additionalProps:q,column:N,transformCellText:M,appendNode:Q}),null)})]});let L;if(i.value&&(r.value||a.value)){const N=T({record:S,index:$,indent:C+1,expanded:a.value}),F=R&&R(S,$,C);L=f(i2,{expanded:a.value,class:re(`${P}-expanded-row`,`${P}-expanded-row-level-${C+1}`,F),prefixCls:P,component:_,cellComponent:x,colSpan:O.length,isEmpty:!1},{default:()=>[N]})}return f(He,null,[B,L])}}});function u2(e,t,n,o,l,r){const a=[];a.push({record:e,indent:t,index:r});const i=l(e),s=o?.has(i);if(e&&Array.isArray(e[n])&&s)for(let c=0;c<e[n].length;c+=1){const u=u2(e[n][c],t+1,n,o,l,c);a.push(...u)}return a}function vW(e,t,n,o){return I(()=>{const r=t.value,a=n.value,i=e.value;if(a?.size){const s=[];for(let c=0;c<i?.length;c+=1){const u=i[c];s.push(...u2(u,0,r,a,o.value,c))}return s}return i?.map((s,c)=>({record:s,indent:0,index:c}))})}const d2=Symbol(\"ResizeContextProps\"),gW=e=>{et(d2,e)},hW=()=>nt(d2,{onColumnResize:()=>{}}),bW=ne({name:\"TableBody\",props:[\"data\",\"getRowKey\",\"measureColumnWidth\",\"expandedKeys\",\"customRow\",\"rowExpandable\",\"childrenColumnName\"],setup(e,t){let{slots:n}=t;const o=hW(),l=qo(),r=c2(),a=vW(Ve(e,\"data\"),Ve(e,\"childrenColumnName\"),Ve(e,\"expandedKeys\"),Ve(e,\"getRowKey\")),i=ee(-1),s=ee(-1);let c;return eW({startRow:i,endRow:s,onHover:(u,d)=>{clearTimeout(c),c=setTimeout(()=>{i.value=u,s.value=d},100)}}),()=>{var u;const{data:d,getRowKey:p,measureColumnWidth:m,expandedKeys:g,customRow:v,rowExpandable:y,childrenColumnName:b}=e,{onColumnResize:S}=o,{prefixCls:$,getComponent:w}=l,{flattenColumns:C}=r,_=w([\"body\",\"wrapper\"],\"tbody\"),x=w([\"body\",\"row\"],\"tr\"),P=w([\"body\",\"cell\"],\"td\");let E;d.length?E=a.value.map((O,R)=>{const{record:D,indent:z,index:T}=O,k=p(D,R);return f(mW,{key:k,rowKey:k,record:D,recordKey:k,index:R,renderIndex:T,rowComponent:x,cellComponent:P,expandedKeys:g,customRow:v,getRowKey:p,rowExpandable:y,childrenColumnName:b,indent:z},null)}):E=f(i2,{expanded:!0,class:`${$}-placeholder`,prefixCls:$,component:x,cellComponent:P,colSpan:C.length,isEmpty:!0},{default:()=>[(u=n.emptyNode)===null||u===void 0?void 0:u.call(n)]});const M=Pd(C);return f(_,{class:`${$}-tbody`},{default:()=>[m&&f(\"tr\",{\"aria-hidden\":\"true\",class:`${$}-measure-row`,style:{height:0,fontSize:0}},[M.map(O=>f(fW,{key:O,columnKey:O,onColumnResize:S},null))]),E]})}}}),Tl={};var yW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function sm(e){return e.reduce((t,n)=>{const{fixed:o}=n,l=o===!0?\"left\":o,r=n.children;return r&&r.length>0?[...t,...sm(r).map(a=>h({fixed:l},a))]:[...t,h(h({},n),{fixed:l})]},[])}function SW(e){return e.map(t=>{const{fixed:n}=t,o=yW(t,[\"fixed\"]);let l=n;return n===\"left\"?l=\"right\":n===\"right\"&&(l=\"left\"),h({fixed:l},o)})}function $W(e,t){let{prefixCls:n,columns:o,expandable:l,expandedKeys:r,getRowKey:a,onTriggerExpand:i,expandIcon:s,rowExpandable:c,expandIconColumnIndex:u,direction:d,expandRowByClick:p,expandColumnWidth:m,expandFixed:g}=e;const v=Kg(),y=I(()=>{if(l.value){let $=o.value.slice();if(!$.includes(Tl)){const D=u.value||0;D>=0&&$.splice(D,0,Tl)}const w=$.indexOf(Tl);$=$.filter((D,z)=>D!==Tl||z===w);const C=o.value[w];let _;(g.value===\"left\"||g.value)&&!u.value?_=\"left\":(g.value===\"right\"||g.value)&&u.value===o.value.length?_=\"right\":_=C?C.fixed:null;const x=r.value,P=c.value,E=s.value,M=n.value,O=p.value,R={[ua]:{class:`${n.value}-expand-icon-col`,columnType:\"EXPAND_COLUMN\"},title:Vu(v.value,\"expandColumnTitle\",{},()=>[\"\"]),fixed:_,class:`${n.value}-row-expand-icon-cell`,width:m.value,customRender:D=>{let{record:z,index:T}=D;const k=a.value(z,T),B=x.has(k),L=P?P(z):!0,N=E({prefixCls:M,expanded:B,expandable:L,record:z,onExpand:i});return O?f(\"span\",{onClick:F=>F.stopPropagation()},[N]):N}};return $.map(D=>D===Tl?R:D)}return o.value.filter($=>$!==Tl)}),b=I(()=>{let $=y.value;return t.value&&($=t.value($)),$.length||($=[{customRender:()=>null}]),$}),S=I(()=>d.value===\"rtl\"?SW(sm(b.value)):sm(b.value));return[b,S]}function f2(e){const t=ee(e);let n;const o=ee([]);function l(r){o.value.push(r),Qe.cancel(n),n=Qe(()=>{const a=o.value;o.value=[],a.forEach(i=>{t.value=i(t.value)})})}return ot(()=>{Qe.cancel(n)}),[t,l]}function CW(e){const t=Z(null),n=Z();function o(){clearTimeout(n.value)}function l(a){t.value=a,o(),n.value=setTimeout(()=>{t.value=null,n.value=void 0},100)}function r(){return t.value}return ot(()=>{o()}),[l,r]}function xW(e,t,n){return I(()=>{const l=[],r=[];let a=0,i=0;const s=e.value,c=t.value,u=n.value;for(let d=0;d<c;d+=1)if(u===\"rtl\"){r[d]=i,i+=s[d]||0;const p=c-d-1;l[p]=a,a+=s[p]||0}else{l[d]=a,a+=s[d]||0;const p=c-d-1;r[p]=i,i+=s[p]||0}return{left:l,right:r}})}var wW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function p2(e){let{colWidths:t,columns:n,columCount:o}=e;const l=[],r=o||n.length;let a=!1;for(let i=r-1;i>=0;i-=1){const s=t[i],c=n&&n[i],u=c&&c[ua];if(s||u||a){const d=u||{},{columnType:p}=d,m=wW(d,[\"columnType\"]);l.unshift(f(\"col\",A({key:i,style:{width:typeof s==\"number\"?`${s}px`:s}},m),null)),a=!0}}return f(\"colgroup\",null,[l])}function cm(e,t){let{slots:n}=t;var o;return f(\"div\",null,[(o=n.default)===null||o===void 0?void 0:o.call(n)])}cm.displayName=\"Panel\";let _W=0;const IW=ne({name:\"TableSummary\",props:[\"fixed\"],setup(e,t){let{slots:n}=t;const o=qo(),l=`table-summary-uni-key-${++_W}`,r=I(()=>e.fixed===\"\"||e.fixed);return ze(()=>{o.summaryCollect(l,r.value)}),ot(()=>{o.summaryCollect(l,!1)}),()=>{var a;return(a=n.default)===null||a===void 0?void 0:a.call(n)}}}),PW=ne({compatConfig:{MODE:3},name:\"ATableSummaryRow\",setup(e,t){let{slots:n}=t;return()=>{var o;return f(\"tr\",null,[(o=n.default)===null||o===void 0?void 0:o.call(n)])}}}),m2=Symbol(\"SummaryContextProps\"),TW=e=>{et(m2,e)},OW=()=>nt(m2,{}),EW=ne({name:\"ATableSummaryCell\",props:[\"index\",\"colSpan\",\"rowSpan\",\"align\"],setup(e,t){let{attrs:n,slots:o}=t;const l=qo(),r=OW();return()=>{const{index:a,colSpan:i=1,rowSpan:s,align:c}=e,{prefixCls:u,direction:d}=l,{scrollColumnIndex:p,stickyOffsets:m,flattenColumns:g}=r,y=a+i-1+1===p?i+1:i,b=Gg(a,a+y-1,g,m,d);return f(Td,A({class:n.class,index:a,component:\"td\",prefixCls:u,record:null,dataIndex:null,align:c,colSpan:y,rowSpan:s,customRender:()=>{var S;return(S=o.default)===null||S===void 0?void 0:S.call(o)}},b),null)}}}),Es=ne({name:\"TableFooter\",inheritAttrs:!1,props:[\"stickyOffsets\",\"flattenColumns\"],setup(e,t){let{slots:n}=t;const o=qo();return TW(gt({stickyOffsets:Ve(e,\"stickyOffsets\"),flattenColumns:Ve(e,\"flattenColumns\"),scrollColumnIndex:I(()=>{const l=e.flattenColumns.length-1,r=e.flattenColumns[l];return r?.scrollbar?l:null})})),()=>{var l;const{prefixCls:r}=o;return f(\"tfoot\",{class:`${r}-summary`},[(l=n.default)===null||l===void 0?void 0:l.call(n)])}}}),MW=IW;function AW(e){let{prefixCls:t,record:n,onExpand:o,expanded:l,expandable:r}=e;const a=`${t}-row-expand-icon`;if(!r)return f(\"span\",{class:[a,`${t}-row-spaced`]},null);const i=s=>{o(n,s),s.stopPropagation()};return f(\"span\",{class:{[a]:!0,[`${t}-row-expanded`]:l,[`${t}-row-collapsed`]:!l},onClick:i},null)}function DW(e,t,n){const o=[];function l(r){(r||[]).forEach((a,i)=>{o.push(t(a,i)),l(a[n])})}return l(e),o}const RW=ne({name:\"StickyScrollBar\",inheritAttrs:!1,props:[\"offsetScroll\",\"container\",\"scrollBodyRef\",\"scrollBodySizeInfo\"],emits:[\"scroll\"],setup(e,t){let{emit:n,expose:o}=t;const l=qo(),r=ee(0),a=ee(0),i=ee(0);ze(()=>{r.value=e.scrollBodySizeInfo.scrollWidth||0,a.value=e.scrollBodySizeInfo.clientWidth||0,i.value=r.value&&a.value*(a.value/r.value)},{flush:\"post\"});const s=ee(),[c,u]=f2({scrollLeft:0,isHiddenScrollBar:!0}),d=Z({delta:0,x:0}),p=ee(!1),m=()=>{p.value=!1},g=x=>{d.value={delta:x.pageX-c.value.scrollLeft,x:0},p.value=!0,x.preventDefault()},v=x=>{const{buttons:P}=x||window?.event;if(!p.value||P===0){p.value&&(p.value=!1);return}let E=d.value.x+x.pageX-d.value.x-d.value.delta;E<=0&&(E=0),E+i.value>=a.value&&(E=a.value-i.value),n(\"scroll\",{scrollLeft:E/a.value*(r.value+2)}),d.value.x=x.pageX},y=()=>{if(!e.scrollBodyRef.value)return;const x=jc(e.scrollBodyRef.value).top,P=x+e.scrollBodyRef.value.offsetHeight,E=e.container===window?document.documentElement.scrollTop+window.innerHeight:jc(e.container).top+e.container.clientHeight;P-Hc()<=E||x>=E-e.offsetScroll?u(M=>h(h({},M),{isHiddenScrollBar:!0})):u(M=>h(h({},M),{isHiddenScrollBar:!1}))};o({setScrollLeft:x=>{u(P=>h(h({},P),{scrollLeft:x/r.value*a.value||0}))}});let S=null,$=null,w=null,C=null;Be(()=>{S=Rt(document.body,\"mouseup\",m,!1),$=Rt(document.body,\"mousemove\",v,!1),w=Rt(window,\"resize\",y,!1)}),Om(()=>{it(()=>{y()})}),Be(()=>{setTimeout(()=>{pe([i,p],()=>{y()},{immediate:!0,flush:\"post\"})})}),pe(()=>e.container,()=>{C?.remove(),C=Rt(e.container,\"scroll\",y,!1)},{immediate:!0,flush:\"post\"}),ot(()=>{S?.remove(),$?.remove(),C?.remove(),w?.remove()}),pe(()=>h({},c.value),(x,P)=>{x.isHiddenScrollBar!==P?.isHiddenScrollBar&&!x.isHiddenScrollBar&&u(E=>{const M=e.scrollBodyRef.value;return M?h(h({},E),{scrollLeft:M.scrollLeft/M.scrollWidth*M.clientWidth}):E})},{immediate:!0});const _=Hc();return()=>{if(r.value<=a.value||!i.value||c.value.isHiddenScrollBar)return null;const{prefixCls:x}=l;return f(\"div\",{style:{height:`${_}px`,width:`${a.value}px`,bottom:`${e.offsetScroll}px`},class:`${x}-sticky-scroll`},[f(\"div\",{onMousedown:g,ref:s,class:re(`${x}-sticky-scroll-bar`,{[`${x}-sticky-scroll-bar-active`]:p.value}),style:{width:`${i.value}px`,transform:`translate3d(${c.value.scrollLeft}px, 0, 0)`}},null)])}}}),oS=wn()?window:null;function kW(e,t){return I(()=>{const{offsetHeader:n=0,offsetSummary:o=0,offsetScroll:l=0,getContainer:r=()=>oS}=typeof e.value==\"object\"?e.value:{},a=r()||oS,i=!!e.value;return{isSticky:i,stickyClassName:i?`${t.value}-sticky-holder`:\"\",offsetHeader:n,offsetSummary:o,offsetScroll:l,container:a}})}function NW(e,t){return I(()=>{const n=[],o=e.value,l=t.value;for(let r=0;r<l;r+=1){const a=o[r];if(a!==void 0)n[r]=a;else return null}return n})}const lS=ne({name:\"FixedHolder\",inheritAttrs:!1,props:[\"columns\",\"flattenColumns\",\"stickyOffsets\",\"customHeaderRow\",\"noData\",\"maxContentScroll\",\"colWidths\",\"columCount\",\"direction\",\"fixHeader\",\"stickyTopOffset\",\"stickyBottomOffset\",\"stickyClassName\"],emits:[\"scroll\"],setup(e,t){let{attrs:n,slots:o,emit:l}=t;const r=qo(),a=I(()=>r.isSticky&&!e.fixHeader?0:r.scrollbarSize),i=Z(),s=v=>{const{currentTarget:y,deltaX:b}=v;b&&(l(\"scroll\",{currentTarget:y,scrollLeft:y.scrollLeft+b}),v.preventDefault())},c=Z();Be(()=>{it(()=>{c.value=Rt(i.value,\"wheel\",s)})}),ot(()=>{var v;(v=c.value)===null||v===void 0||v.remove()});const u=I(()=>e.flattenColumns.every(v=>v.width&&v.width!==0&&v.width!==\"0px\")),d=Z([]),p=Z([]);ze(()=>{const v=e.flattenColumns[e.flattenColumns.length-1],y={fixed:v?v.fixed:null,scrollbar:!0,customHeaderCell:()=>({class:`${r.prefixCls}-cell-scrollbar`})};d.value=a.value?[...e.columns,y]:e.columns,p.value=a.value?[...e.flattenColumns,y]:e.flattenColumns});const m=I(()=>{const{stickyOffsets:v,direction:y}=e,{right:b,left:S}=v;return h(h({},v),{left:y===\"rtl\"?[...S.map($=>$+a.value),0]:S,right:y===\"rtl\"?b:[...b.map($=>$+a.value),0],isSticky:r.isSticky})}),g=NW(Ve(e,\"colWidths\"),Ve(e,\"columCount\"));return()=>{var v;const{noData:y,columCount:b,stickyTopOffset:S,stickyBottomOffset:$,stickyClassName:w,maxContentScroll:C}=e,{isSticky:_}=r;return f(\"div\",{style:h({overflow:\"hidden\"},_?{top:`${S}px`,bottom:`${$}px`}:{}),ref:i,class:re(n.class,{[w]:!!w})},[f(\"table\",{style:{tableLayout:\"fixed\",visibility:y||g.value?null:\"hidden\"}},[(!y||!C||u.value)&&f(p2,{colWidths:g.value?[...g.value,a.value]:[],columCount:b+1,columns:p.value},null),(v=o.default)===null||v===void 0?void 0:v.call(o,h(h({},e),{stickyOffsets:m.value,columns:d.value,flattenColumns:p.value}))])])}}});function rS(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return gt(gP(n.map(l=>[l,Ve(e,l)])))}const BW=[],LW={},um=\"rc-table-internal-hook\",FW=ne({name:\"VcTable\",inheritAttrs:!1,props:[\"prefixCls\",\"data\",\"columns\",\"rowKey\",\"tableLayout\",\"scroll\",\"rowClassName\",\"title\",\"footer\",\"id\",\"showHeader\",\"components\",\"customRow\",\"customHeaderRow\",\"direction\",\"expandFixed\",\"expandColumnWidth\",\"expandedRowKeys\",\"defaultExpandedRowKeys\",\"expandedRowRender\",\"expandRowByClick\",\"expandIcon\",\"onExpand\",\"onExpandedRowsChange\",\"onUpdate:expandedRowKeys\",\"defaultExpandAllRows\",\"indentSize\",\"expandIconColumnIndex\",\"expandedRowClassName\",\"childrenColumnName\",\"rowExpandable\",\"sticky\",\"transformColumns\",\"internalHooks\",\"internalRefs\",\"canExpandable\",\"onUpdateInternalRefs\",\"transformCellText\"],emits:[\"expand\",\"expandedRowsChange\",\"updateInternalRefs\",\"update:expandedRowKeys\"],setup(e,t){let{attrs:n,slots:o,emit:l}=t;const r=I(()=>e.data||BW),a=I(()=>!!r.value.length),i=I(()=>qj(e.components,{})),s=(ae,fe)=>n2(i.value,ae)||fe,c=I(()=>{const ae=e.rowKey;return typeof ae==\"function\"?ae:fe=>fe&&fe[ae]}),u=I(()=>e.expandIcon||AW),d=I(()=>e.childrenColumnName||\"children\"),p=I(()=>e.expandedRowRender?\"row\":e.canExpandable||r.value.some(ae=>ae&&typeof ae==\"object\"&&ae[d.value])?\"nest\":!1),m=ee([]);ze(()=>{e.defaultExpandedRowKeys&&(m.value=e.defaultExpandedRowKeys),e.defaultExpandAllRows&&(m.value=DW(r.value,c.value,d.value))})();const v=I(()=>new Set(e.expandedRowKeys||m.value||[])),y=ae=>{const fe=c.value(ae,r.value.indexOf(ae));let Pe;const Oe=v.value.has(fe);Oe?(v.value.delete(fe),Pe=[...v.value]):Pe=[...v.value,fe],m.value=Pe,l(\"expand\",!Oe,ae),l(\"update:expandedRowKeys\",Pe),l(\"expandedRowsChange\",Pe)},b=Z(0),[S,$]=$W(h(h({},Wo(e)),{expandable:I(()=>!!e.expandedRowRender),expandedKeys:v,getRowKey:c,onTriggerExpand:y,expandIcon:u}),I(()=>e.internalHooks===um?e.transformColumns:null)),w=I(()=>({columns:S.value,flattenColumns:$.value})),C=Z(),_=Z(),x=Z(),P=Z({scrollWidth:0,clientWidth:0}),E=Z(),[M,O]=yt(!1),[R,D]=yt(!1),[z,T]=f2(new Map),k=I(()=>Pd($.value)),B=I(()=>k.value.map(ae=>z.value.get(ae))),L=I(()=>$.value.length),N=xW(B,L,Ve(e,\"direction\")),F=I(()=>e.scroll&&am(e.scroll.y)),j=I(()=>e.scroll&&am(e.scroll.x)||!!e.expandFixed),H=I(()=>j.value&&$.value.some(ae=>{let{fixed:fe}=ae;return fe})),K=Z(),G=kW(Ve(e,\"sticky\"),Ve(e,\"prefixCls\")),V=gt({}),q=I(()=>{const ae=Object.values(V)[0];return(F.value||G.value.isSticky)&&ae}),Q=(ae,fe)=>{fe?V[ae]=fe:delete V[ae]},oe=Z({}),le=Z({}),Y=Z({});ze(()=>{F.value&&(le.value={overflowY:\"scroll\",maxHeight:or(e.scroll.y)}),j.value&&(oe.value={overflowX:\"auto\"},F.value||(le.value={overflowY:\"hidden\"}),Y.value={width:e.scroll.x===!0?\"auto\":or(e.scroll.x),minWidth:\"100%\"})});const J=(ae,fe)=>{Ku(C.value)&&T(Pe=>{if(Pe.get(ae)!==fe){const Oe=new Map(Pe);return Oe.set(ae,fe),Oe}return Pe})},[ce,ue]=CW();function be(ae,fe){if(!fe)return;if(typeof fe==\"function\"){fe(ae);return}const Pe=fe.$el||fe;Pe.scrollLeft!==ae&&(Pe.scrollLeft=ae)}const Ce=ae=>{let{currentTarget:fe,scrollLeft:Pe}=ae;var Oe;const Re=e.direction===\"rtl\",$e=typeof Pe==\"number\"?Pe:fe.scrollLeft,xe=fe||LW;if((!ue()||ue()===xe)&&(ce(xe),be($e,_.value),be($e,x.value),be($e,E.value),be($e,(Oe=K.value)===null||Oe===void 0?void 0:Oe.setScrollLeft)),fe){const{scrollWidth:_e,clientWidth:Me}=fe;Re?(O(-$e<_e-Me),D(-$e>0)):(O($e>0),D($e<_e-Me))}},ge=()=>{j.value&&x.value?Ce({currentTarget:x.value}):(O(!1),D(!1))};let Se;const X=ae=>{ae!==b.value&&(ge(),b.value=C.value?C.value.offsetWidth:ae)},U=ae=>{let{width:fe}=ae;if(clearTimeout(Se),b.value===0){X(fe);return}Se=setTimeout(()=>{X(fe)},100)};pe([j,()=>e.data,()=>e.columns],()=>{j.value&&ge()},{flush:\"post\"});const[ie,ve]=yt(0);nW(),Be(()=>{it(()=>{var ae,fe;ge(),ve(rA(x.value).width),P.value={scrollWidth:((ae=x.value)===null||ae===void 0?void 0:ae.scrollWidth)||0,clientWidth:((fe=x.value)===null||fe===void 0?void 0:fe.clientWidth)||0}})}),Wn(()=>{it(()=>{var ae,fe;const Pe=((ae=x.value)===null||ae===void 0?void 0:ae.scrollWidth)||0,Oe=((fe=x.value)===null||fe===void 0?void 0:fe.clientWidth)||0;(P.value.scrollWidth!==Pe||P.value.clientWidth!==Oe)&&(P.value={scrollWidth:Pe,clientWidth:Oe})})}),ze(()=>{e.internalHooks===um&&e.internalRefs&&e.onUpdateInternalRefs({body:x.value?x.value.$el||x.value:null})},{flush:\"post\"});const me=I(()=>e.tableLayout?e.tableLayout:H.value?e.scroll.x===\"max-content\"?\"auto\":\"fixed\":F.value||G.value.isSticky||$.value.some(ae=>{let{ellipsis:fe}=ae;return fe})?\"fixed\":\"auto\"),he=()=>{var ae;return a.value?null:((ae=o.emptyText)===null||ae===void 0?void 0:ae.call(o))||\"No Data\"};Uj(gt(h(h({},Wo(rS(e,\"prefixCls\",\"direction\",\"transformCellText\"))),{getComponent:s,scrollbarSize:ie,fixedInfoList:I(()=>$.value.map((ae,fe)=>Gg(fe,fe,$.value,N.value,e.direction))),isSticky:I(()=>G.value.isSticky),summaryCollect:Q}))),pW(gt(h(h({},Wo(rS(e,\"rowClassName\",\"expandedRowClassName\",\"expandRowByClick\",\"expandedRowRender\",\"expandIconColumnIndex\",\"indentSize\"))),{columns:S,flattenColumns:$,tableLayout:me,expandIcon:u,expandableType:p,onTriggerExpand:y}))),gW({onColumnResize:J}),uW({componentWidth:b,fixHeader:F,fixColumn:H,horizonScroll:j});const se=()=>f(bW,{data:r.value,measureColumnWidth:F.value||j.value||G.value.isSticky,expandedKeys:v.value,rowExpandable:e.rowExpandable,getRowKey:c.value,customRow:e.customRow,childrenColumnName:d.value},{emptyNode:he}),te=()=>f(p2,{colWidths:$.value.map(ae=>{let{width:fe}=ae;return fe}),columns:$.value},null);return()=>{var ae;const{prefixCls:fe,scroll:Pe,tableLayout:Oe,direction:Re,title:$e=o.title,footer:xe=o.footer,id:_e,showHeader:Me,customHeaderRow:je}=e,{isSticky:Ae,offsetHeader:We,offsetSummary:at,offsetScroll:pt,stickyClassName:st,container:mt}=G.value,ht=s([\"table\"],\"table\"),Yt=s([\"body\"]),en=(ae=o.summary)===null||ae===void 0?void 0:ae.call(o,{pageData:r.value});let rn=()=>null;const Wt={colWidths:B.value,columCount:$.value.length,stickyOffsets:N.value,customHeaderRow:je,fixHeader:F.value,scroll:Pe};if(F.value||Ae){let ro=()=>null;typeof Yt==\"function\"?(ro=()=>Yt(r.value,{scrollbarSize:ie.value,ref:x,onScroll:Ce}),Wt.colWidths=$.value.map((Dn,Yl)=>{let{width:Ee}=Dn;const Ze=Yl===S.value.length-1?Ee-ie.value:Ee;return typeof Ze==\"number\"&&!Number.isNaN(Ze)?Ze:0})):ro=()=>f(\"div\",{style:h(h({},oe.value),le.value),onScroll:Ce,ref:x,class:re(`${fe}-body`)},[f(ht,{style:h(h({},Y.value),{tableLayout:me.value})},{default:()=>[te(),se(),!q.value&&en&&f(Es,{stickyOffsets:N.value,flattenColumns:$.value},{default:()=>[en]})]})]);const Co=h(h(h({noData:!r.value.length,maxContentScroll:j.value&&Pe.x===\"max-content\"},Wt),w.value),{direction:Re,stickyClassName:st,onScroll:Ce});rn=()=>f(He,null,[Me!==!1&&f(lS,A(A({},Co),{},{stickyTopOffset:We,class:`${fe}-header`,ref:_}),{default:Dn=>f(He,null,[f(nS,Dn,null),q.value===\"top\"&&f(Es,Dn,{default:()=>[en]})])}),ro(),q.value&&q.value!==\"top\"&&f(lS,A(A({},Co),{},{stickyBottomOffset:at,class:`${fe}-summary`,ref:E}),{default:Dn=>f(Es,Dn,{default:()=>[en]})}),Ae&&x.value&&f(RW,{ref:K,offsetScroll:pt,scrollBodyRef:x,onScroll:Ce,container:mt,scrollBodySizeInfo:P.value},null)])}else rn=()=>f(\"div\",{style:h(h({},oe.value),le.value),class:re(`${fe}-content`),onScroll:Ce,ref:x},[f(ht,{style:h(h({},Y.value),{tableLayout:me.value})},{default:()=>[te(),Me!==!1&&f(nS,A(A({},Wt),w.value),null),se(),en&&f(Es,{stickyOffsets:N.value,flattenColumns:$.value},{default:()=>[en]})]})]);const bn=Gl(n,{aria:!0,data:!0}),An=()=>f(\"div\",A(A({},bn),{},{class:re(fe,{[`${fe}-rtl`]:Re===\"rtl\",[`${fe}-ping-left`]:M.value,[`${fe}-ping-right`]:R.value,[`${fe}-layout-fixed`]:Oe===\"fixed\",[`${fe}-fixed-header`]:F.value,[`${fe}-fixed-column`]:H.value,[`${fe}-scroll-horizontal`]:j.value,[`${fe}-has-fix-left`]:$.value[0]&&$.value[0].fixed,[`${fe}-has-fix-right`]:$.value[L.value-1]&&$.value[L.value-1].fixed===\"right\",[n.class]:n.class}),style:n.style,id:_e,ref:C}),[$e&&f(cm,{class:`${fe}-title`},{default:()=>[$e(r.value)]}),f(\"div\",{class:`${fe}-container`},[rn()]),xe&&f(cm,{class:`${fe}-footer`},{default:()=>[xe(r.value)]})]);return j.value?f(bo,{onResize:U},{default:An}):An()}}});function zW(){const e=h({},arguments.length<=0?void 0:arguments[0]);for(let t=1;t<arguments.length;t++){const n=t<0||arguments.length<=t?void 0:arguments[t];n&&Object.keys(n).forEach(o=>{const l=n[o];l!==void 0&&(e[o]=l)})}return e}const dm=10;function HW(e,t){const n={current:e.current,pageSize:e.pageSize};return Object.keys(t&&typeof t==\"object\"?t:{}).forEach(l=>{const r=e[l];typeof r!=\"function\"&&(n[l]=r)}),n}function jW(e,t,n){const o=I(()=>t.value&&typeof t.value==\"object\"?t.value:{}),l=I(()=>o.value.total||0),[r,a]=yt(()=>({current:\"defaultCurrent\"in o.value?o.value.defaultCurrent:1,pageSize:\"defaultPageSize\"in o.value?o.value.defaultPageSize:dm})),i=I(()=>{const u=zW(r.value,o.value,{total:l.value>0?l.value:e.value}),d=Math.ceil((l.value||e.value)/u.pageSize);return u.current>d&&(u.current=d||1),u}),s=(u,d)=>{t.value!==!1&&a({current:u??1,pageSize:d||i.value.pageSize})},c=(u,d)=>{var p,m;t.value&&((m=(p=o.value).onChange)===null||m===void 0||m.call(p,u,d)),s(u,d),n(u,d||i.value.pageSize)};return[I(()=>t.value===!1?{}:h(h({},i.value),{onChange:c})),s]}function WW(e,t,n){const o=ee({});pe([e,t,n],()=>{const r=new Map,a=n.value,i=t.value;function s(c){c.forEach((u,d)=>{const p=a(u,d);r.set(p,u),u&&typeof u==\"object\"&&i in u&&s(u[i]||[])})}s(e.value),o.value={kvMap:r}},{deep:!0,immediate:!0});function l(r){return o.value.kvMap.get(r)}return[l]}const tl={},fm=\"SELECT_ALL\",pm=\"SELECT_INVERT\",mm=\"SELECT_NONE\",VW=[];function v2(e,t){let n=[];return(t||[]).forEach(o=>{n.push(o),o&&typeof o==\"object\"&&e in o&&(n=[...n,...v2(e,o[e])])}),n}function KW(e,t){const n=I(()=>{const E=e.value||{},{checkStrictly:M=!0}=E;return h(h({},E),{checkStrictly:M})}),[o,l]=Mt(n.value.selectedRowKeys||n.value.defaultSelectedRowKeys||VW,{value:I(()=>n.value.selectedRowKeys)}),r=ee(new Map),a=E=>{if(n.value.preserveSelectedRowKeys){const M=new Map;E.forEach(O=>{let R=t.getRecordByKey(O);!R&&r.value.has(O)&&(R=r.value.get(O)),M.set(O,R)}),r.value=M}};ze(()=>{a(o.value)});const i=I(()=>n.value.checkStrictly?null:Xi(t.data.value,{externalGetKey:t.getRowKey.value,childrenPropName:t.childrenColumnName.value}).keyEntities),s=I(()=>v2(t.childrenColumnName.value,t.pageData.value)),c=I(()=>{const E=new Map,M=t.getRowKey.value,O=n.value.getCheckboxProps;return s.value.forEach((R,D)=>{const z=M(R,D),T=(O?O(R):null)||{};E.set(z,T)}),E}),{maxLevel:u,levelEntities:d}=gd(i),p=E=>{var M;return!!(!((M=c.value.get(t.getRowKey.value(E)))===null||M===void 0)&&M.disabled)},m=I(()=>{if(n.value.checkStrictly)return[o.value||[],[]];const{checkedKeys:E,halfCheckedKeys:M}=go(o.value,!0,i.value,u.value,d.value,p);return[E||[],M]}),g=I(()=>m.value[0]),v=I(()=>m.value[1]),y=I(()=>{const E=n.value.type===\"radio\"?g.value.slice(0,1):g.value;return new Set(E)}),b=I(()=>n.value.type===\"radio\"?new Set:new Set(v.value)),[S,$]=yt(null),w=E=>{let M,O;a(E);const{preserveSelectedRowKeys:R,onChange:D}=n.value,{getRecordByKey:z}=t;R?(M=E,O=E.map(T=>r.value.get(T))):(M=[],O=[],E.forEach(T=>{const k=z(T);k!==void 0&&(M.push(T),O.push(k))})),l(M),D?.(M,O)},C=(E,M,O,R)=>{const{onSelect:D}=n.value,{getRecordByKey:z}=t||{};if(D){const T=O.map(k=>z(k));D(z(E),M,T,R)}w(O)},_=I(()=>{const{onSelectInvert:E,onSelectNone:M,selections:O,hideSelectAll:R}=n.value,{data:D,pageData:z,getRowKey:T,locale:k}=t;return!O||R?null:(O===!0?[fm,pm,mm]:O).map(L=>L===fm?{key:\"all\",text:k.value.selectionAll,onSelect(){w(D.value.map((N,F)=>T.value(N,F)).filter(N=>{const F=c.value.get(N);return!F?.disabled||y.value.has(N)}))}}:L===pm?{key:\"invert\",text:k.value.selectInvert,onSelect(){const N=new Set(y.value);z.value.forEach((j,H)=>{const K=T.value(j,H),G=c.value.get(K);G?.disabled||(N.has(K)?N.delete(K):N.add(K))});const F=Array.from(N);E&&(Ot(!1,\"Table\",\"`onSelectInvert` will be removed in future. Please use `onChange` instead.\"),E(F)),w(F)}}:L===mm?{key:\"none\",text:k.value.selectNone,onSelect(){M?.(),w(Array.from(y.value).filter(N=>{const F=c.value.get(N);return F?.disabled}))}}:L)}),x=I(()=>s.value.length);return[E=>{var M;const{onSelectAll:O,onSelectMultiple:R,columnWidth:D,type:z,fixed:T,renderCell:k,hideSelectAll:B,checkStrictly:L}=n.value,{prefixCls:N,getRecordByKey:F,getRowKey:j,expandType:H,getPopupContainer:K}=t;if(!e.value)return E.filter(X=>X!==tl);let G=E.slice();const V=new Set(y.value),q=s.value.map(j.value).filter(X=>!c.value.get(X).disabled),Q=q.every(X=>V.has(X)),oe=q.some(X=>V.has(X)),le=()=>{const X=[];Q?q.forEach(ie=>{V.delete(ie),X.push(ie)}):q.forEach(ie=>{V.has(ie)||(V.add(ie),X.push(ie))});const U=Array.from(V);O?.(!Q,U.map(ie=>F(ie)),X.map(ie=>F(ie))),w(U)};let Y;if(z!==\"radio\"){let X;if(_.value){const he=f(Ht,{getPopupContainer:K.value},{default:()=>[_.value.map((se,te)=>{const{key:ae,text:fe,onSelect:Pe}=se;return f(Ht.Item,{key:ae||te,onClick:()=>{Pe?.(q)}},{default:()=>[fe]})})]});X=f(\"div\",{class:`${N.value}-selection-extra`},[f(vo,{overlay:he,getPopupContainer:K.value},{default:()=>[f(\"span\",null,[f(_a,null,null)])]})])}const U=s.value.map((he,se)=>{const te=j.value(he,se),ae=c.value.get(te)||{};return h({checked:V.has(te)},ae)}).filter(he=>{let{disabled:se}=he;return se}),ie=!!U.length&&U.length===x.value,ve=ie&&U.every(he=>{let{checked:se}=he;return se}),me=ie&&U.some(he=>{let{checked:se}=he;return se});Y=!B&&f(\"div\",{class:`${N.value}-selection`},[f(Jn,{checked:ie?ve:!!x.value&&Q,indeterminate:ie?!ve&&me:!Q&&oe,onChange:le,disabled:x.value===0||ie,\"aria-label\":X?\"Custom selection\":\"Select all\",skipGroup:!0},null),X])}let J;z===\"radio\"?J=X=>{let{record:U,index:ie}=X;const ve=j.value(U,ie),me=V.has(ve);return{node:f(In,A(A({},c.value.get(ve)),{},{checked:me,onClick:he=>he.stopPropagation(),onChange:he=>{V.has(ve)||C(ve,!0,[ve],he.nativeEvent)}}),null),checked:me}}:J=X=>{let{record:U,index:ie}=X;var ve;const me=j.value(U,ie),he=V.has(me),se=b.value.has(me),te=c.value.get(me);let ae;return H.value===\"nest\"?(ae=se,Ot(typeof te?.indeterminate!=\"boolean\",\"Table\",\"set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.\")):ae=(ve=te?.indeterminate)!==null&&ve!==void 0?ve:se,{node:f(Jn,A(A({},te),{},{indeterminate:ae,checked:he,skipGroup:!0,onClick:fe=>fe.stopPropagation(),onChange:fe=>{let{nativeEvent:Pe}=fe;const{shiftKey:Oe}=Pe;let Re=-1,$e=-1;if(Oe&&L){const xe=new Set([S.value,me]);q.some((_e,Me)=>{if(xe.has(_e))if(Re===-1)Re=Me;else return $e=Me,!0;return!1})}if($e!==-1&&Re!==$e&&L){const xe=q.slice(Re,$e+1),_e=[];he?xe.forEach(je=>{V.has(je)&&(_e.push(je),V.delete(je))}):xe.forEach(je=>{V.has(je)||(_e.push(je),V.add(je))});const Me=Array.from(V);R?.(!he,Me.map(je=>F(je)),_e.map(je=>F(je))),w(Me)}else{const xe=g.value;if(L){const _e=he?Fo(xe,me):el(xe,me);C(me,!he,_e,Pe)}else{const _e=go([...xe,me],!0,i.value,u.value,d.value,p),{checkedKeys:Me,halfCheckedKeys:je}=_e;let Ae=Me;if(he){const We=new Set(Me);We.delete(me),Ae=go(Array.from(We),{halfCheckedKeys:je},i.value,u.value,d.value,p).checkedKeys}C(me,!he,Ae,Pe)}}$(me)}}),null),checked:he}};const ce=X=>{let{record:U,index:ie}=X;const{node:ve,checked:me}=J({record:U,index:ie});return k?k(me,U,ie,ve):ve};if(!G.includes(tl))if(G.findIndex(X=>{var U;return((U=X[ua])===null||U===void 0?void 0:U.columnType)===\"EXPAND_COLUMN\"})===0){const[X,...U]=G;G=[X,tl,...U]}else G=[tl,...G];const ue=G.indexOf(tl);G=G.filter((X,U)=>X!==tl||U===ue);const be=G[ue-1],Ce=G[ue+1];let ge=T;ge===void 0&&(Ce?.fixed!==void 0?ge=Ce.fixed:be?.fixed!==void 0&&(ge=be.fixed)),ge&&be&&((M=be[ua])===null||M===void 0?void 0:M.columnType)===\"EXPAND_COLUMN\"&&be.fixed===void 0&&(be.fixed=ge);const Se={fixed:ge,width:D,className:`${N.value}-selection-column`,title:n.value.columnTitle||Y,customRender:ce,[ua]:{class:`${N.value}-selection-col`}};return G.map(X=>X===tl?Se:X)},y]}var GW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function xr(e,t){return\"key\"in e&&e.key!==void 0&&e.key!==null?e.key:e.dataIndex?Array.isArray(e.dataIndex)?e.dataIndex.join(\".\"):e.dataIndex:t}function Ji(e,t){return t?`${t}-${e}`:`${e}`}function Xg(e,t){return typeof e==\"function\"?e(t):e}function g2(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const t=xt(e),n=[];return t.forEach(o=>{var l,r,a,i;if(!o)return;const s=o.key,c=((l=o.props)===null||l===void 0?void 0:l.style)||{},u=((r=o.props)===null||r===void 0?void 0:r.class)||\"\",d=o.props||{};for(const[y,b]of Object.entries(d))d[Ia(y)]=b;const p=o.children||{},{default:m}=p,g=GW(p,[\"default\"]),v=h(h(h({},g),d),{style:c,class:u});if(s&&(v.key=s),!((a=o.type)===null||a===void 0)&&a.__ANT_TABLE_COLUMN_GROUP)v.children=g2(typeof m==\"function\"?m():m);else{const y=(i=o.children)===null||i===void 0?void 0:i.default;v.customRender=v.customRender||y}n.push(v)}),n}const $c=\"ascend\",Nf=\"descend\";function Cu(e){return typeof e.sorter==\"object\"&&typeof e.sorter.multiple==\"number\"?e.sorter.multiple:!1}function aS(e){return typeof e==\"function\"?e:e&&typeof e==\"object\"&&e.compare?e.compare:!1}function XW(e,t){return t?e[e.indexOf(t)+1]:e[0]}function vm(e,t,n){let o=[];function l(r,a){o.push({column:r,key:xr(r,a),multiplePriority:Cu(r),sortOrder:r.sortOrder})}return(e||[]).forEach((r,a)=>{const i=Ji(a,n);r.children?(\"sortOrder\"in r&&l(r,i),o=[...o,...vm(r.children,t,i)]):r.sorter&&(\"sortOrder\"in r?l(r,i):t&&r.defaultSortOrder&&o.push({column:r,key:xr(r,i),multiplePriority:Cu(r),sortOrder:r.defaultSortOrder}))}),o}function h2(e,t,n,o,l,r,a,i){return(t||[]).map((s,c)=>{const u=Ji(c,i);let d=s;if(d.sorter){const p=d.sortDirections||l,m=d.showSorterTooltip===void 0?a:d.showSorterTooltip,g=xr(d,u),v=n.find(E=>{let{key:M}=E;return M===g}),y=v?v.sortOrder:null,b=XW(p,y),S=p.includes($c)&&f(XI,{class:re(`${e}-column-sorter-up`,{active:y===$c}),role:\"presentation\"},null),$=p.includes(Nf)&&f(UI,{role:\"presentation\",class:re(`${e}-column-sorter-down`,{active:y===Nf})},null),{cancelSort:w,triggerAsc:C,triggerDesc:_}=r||{};let x=w;b===Nf?x=_:b===$c&&(x=C);const P=typeof m==\"object\"?m:{title:x};d=h(h({},d),{className:re(d.className,{[`${e}-column-sort`]:y}),title:E=>{const M=f(\"div\",{class:`${e}-column-sorters`},[f(\"span\",{class:`${e}-column-title`},[Xg(s.title,E)]),f(\"span\",{class:re(`${e}-column-sorter`,{[`${e}-column-sorter-full`]:!!(S&&$)})},[f(\"span\",{class:`${e}-column-sorter-inner`},[S,$])])]);return m?f(Fn,P,{default:()=>[M]}):M},customHeaderCell:E=>{const M=s.customHeaderCell&&s.customHeaderCell(E)||{},O=M.onClick,R=M.onKeydown;return M.onClick=D=>{o({column:s,key:g,sortOrder:b,multiplePriority:Cu(s)}),O&&O(D)},M.onKeydown=D=>{D.keyCode===we.ENTER&&(o({column:s,key:g,sortOrder:b,multiplePriority:Cu(s)}),R?.(D))},y&&(M[\"aria-sort\"]=y===\"ascend\"?\"ascending\":\"descending\"),M.class=re(M.class,`${e}-column-has-sorters`),M.tabindex=0,M}})}return\"children\"in d&&(d=h(h({},d),{children:h2(e,d.children,n,o,l,r,a,u)})),d})}function iS(e){const{column:t,sortOrder:n}=e;return{column:t,order:n,field:t.dataIndex,columnKey:t.key}}function sS(e){const t=e.filter(n=>{let{sortOrder:o}=n;return o}).map(iS);return t.length===0&&e.length?h(h({},iS(e[e.length-1])),{column:void 0}):t.length<=1?t[0]||{}:t}function gm(e,t,n){const o=t.slice().sort((a,i)=>i.multiplePriority-a.multiplePriority),l=e.slice(),r=o.filter(a=>{let{column:{sorter:i},sortOrder:s}=a;return aS(i)&&s});return r.length?l.sort((a,i)=>{for(let s=0;s<r.length;s+=1){const c=r[s],{column:{sorter:u},sortOrder:d}=c,p=aS(u);if(p&&d){const m=p(a,i,d);if(m!==0)return d===$c?m:-m}}return 0}).map(a=>{const i=a[n];return i?h(h({},a),{[n]:gm(i,t,n)}):a}):l}function UW(e){let{prefixCls:t,mergedColumns:n,onSorterChange:o,sortDirections:l,tableLocale:r,showSorterTooltip:a}=e;const[i,s]=yt(vm(n.value,!0)),c=I(()=>{let g=!0;const v=vm(n.value,!1);if(!v.length)return i.value;const y=[];function b($){g?y.push($):y.push(h(h({},$),{sortOrder:null}))}let S=null;return v.forEach($=>{S===null?(b($),$.sortOrder&&($.multiplePriority===!1?g=!1:S=!0)):(S&&$.multiplePriority!==!1||(g=!1),b($))}),y}),u=I(()=>{const g=c.value.map(v=>{let{column:y,sortOrder:b}=v;return{column:y,order:b}});return{sortColumns:g,sortColumn:g[0]&&g[0].column,sortOrder:g[0]&&g[0].order}});function d(g){let v;g.multiplePriority===!1||!c.value.length||c.value[0].multiplePriority===!1?v=[g]:v=[...c.value.filter(y=>{let{key:b}=y;return b!==g.key}),g],s(v),o(sS(v),v)}const p=g=>h2(t.value,g,c.value,d,l.value,r.value,a.value),m=I(()=>sS(c.value));return[p,c,u,m]}const YW=e=>{const{keyCode:t}=e;t===we.ENTER&&e.stopPropagation()},qW=(e,t)=>{let{slots:n}=t;var o;return f(\"div\",{onClick:l=>l.stopPropagation(),onKeydown:YW},[(o=n.default)===null||o===void 0?void 0:o.call(n)])},cS=ne({compatConfig:{MODE:3},name:\"FilterSearch\",inheritAttrs:!1,props:{value:ke(),onChange:de(),filterSearch:Fe([Boolean,Function]),tablePrefixCls:ke(),locale:De()},setup(e){return()=>{const{value:t,onChange:n,filterSearch:o,tablePrefixCls:l,locale:r}=e;return o?f(\"div\",{class:`${l}-filter-dropdown-search`},[f(Lt,{placeholder:r.filterSearchPlaceholder,onChange:n,value:t,htmlSize:1,class:`${l}-filter-dropdown-search-input`},{prefix:()=>f(Pu,null,null)})]):null}}});var uS=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const ZW=ne({compatConfig:{MODE:3},name:\"MotionTreeNode\",inheritAttrs:!1,props:h(h({},Jx),{active:Boolean,motion:Object,motionNodes:{type:Array},onMotionStart:Function,onMotionEnd:Function,motionType:String}),setup(e,t){let{attrs:n,slots:o}=t;const l=ee(!0),r=xg(),a=ee(!1),i=I(()=>e.motion?e.motion:zi()),s=(c,u)=>{var d,p,m,g;u===\"appear\"?(p=(d=i.value)===null||d===void 0?void 0:d.onAfterEnter)===null||p===void 0||p.call(d,c):u===\"leave\"&&((g=(m=i.value)===null||m===void 0?void 0:m.onAfterLeave)===null||g===void 0||g.call(m,c)),a.value||e.onMotionEnd(),a.value=!0};return pe(()=>e.motionNodes,()=>{e.motionNodes&&e.motionType===\"hide\"&&l.value&&it(()=>{l.value=!1})},{immediate:!0,flush:\"post\"}),Be(()=>{e.motionNodes&&e.onMotionStart()}),ot(()=>{e.motionNodes&&s()}),()=>{const{motion:c,motionNodes:u,motionType:d,active:p,eventKey:m}=e,g=uS(e,[\"motion\",\"motionNodes\",\"motionType\",\"active\",\"eventKey\"]);return u?f(cn,A(A({},i.value),{},{appear:d===\"show\",onAfterAppear:v=>s(v,\"appear\"),onAfterLeave:v=>s(v,\"leave\")}),{default:()=>[xn(f(\"div\",{class:`${r.value.prefixCls}-treenode-motion`},[u.map(v=>{const y=uS(v.data,[]),{title:b,key:S,isStart:$,isEnd:w}=v;return delete y.children,f(zp,A(A({},y),{},{title:b,active:p,data:v.data,key:S,eventKey:S,isStart:$,isEnd:w}),o)})]),[[On,l.value]])]}):f(zp,A(A({class:n.class,style:n.style},g),{},{active:p,eventKey:m}),o)}}});function QW(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const n=e.length,o=t.length;if(Math.abs(n-o)!==1)return{add:!1,key:null};function l(r,a){const i=new Map;r.forEach(c=>{i.set(c,!0)});const s=a.filter(c=>!i.has(c));return s.length===1?s[0]:null}return n<o?{add:!0,key:l(e,t)}:{add:!1,key:l(t,e)}}function dS(e,t,n){const o=e.findIndex(a=>a.key===n),l=e[o+1],r=t.findIndex(a=>a.key===n);if(l){const a=t.findIndex(i=>i.key===l.key);return t.slice(r+1,a)}return t.slice(r+1)}var fS=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const pS={width:0,height:0,display:\"flex\",overflow:\"hidden\",opacity:0,border:0,padding:0,margin:0},JW=()=>{},wr=`RC_TREE_MOTION_${Math.random()}`,hm={key:wr},b2={key:wr,level:0,index:0,pos:\"0\",node:hm,nodes:[hm]},mS={parent:null,children:[],pos:b2.pos,data:hm,title:null,key:wr,isStart:[],isEnd:[]};function vS(e,t,n,o){return t===!1||!n?e:e.slice(0,Math.ceil(n/o)+1)}function gS(e){const{key:t,pos:n}=e;return Gi(t,n)}function eV(e){let t=String(e.key),n=e;for(;n.parent;)n=n.parent,t=`${n.key} > ${t}`;return t}const tV=ne({compatConfig:{MODE:3},name:\"NodeList\",inheritAttrs:!1,props:e6,setup(e,t){let{expose:n,attrs:o}=t;const l=Z(),r=Z(),{expandedKeys:a,flattenNodes:i}=Qx();n({scrollTo:v=>{l.value.scrollTo(v)},getIndentWidth:()=>r.value.offsetWidth});const s=ee(i.value),c=ee([]),u=Z(null);function d(){s.value=i.value,c.value=[],u.value=null,e.onListChangeEnd()}const p=xg();pe([()=>a.value.slice(),i],(v,y)=>{let[b,S]=v,[$,w]=y;const C=QW($,b);if(C.key!==null){const{virtual:_,height:x,itemHeight:P}=e;if(C.add){const E=w.findIndex(R=>{let{key:D}=R;return D===C.key}),M=vS(dS(w,S,C.key),_,x,P),O=w.slice();O.splice(E+1,0,mS),s.value=O,c.value=M,u.value=\"show\"}else{const E=S.findIndex(R=>{let{key:D}=R;return D===C.key}),M=vS(dS(S,w,C.key),_,x,P),O=S.slice();O.splice(E+1,0,mS),s.value=O,c.value=M,u.value=\"hide\"}}else w!==S&&(s.value=S)}),pe(()=>p.value.dragging,v=>{v||d()});const m=I(()=>e.motion===void 0?s.value:i.value),g=()=>{e.onActiveChange(null)};return()=>{const v=h(h({},e),o),{prefixCls:y,selectable:b,checkable:S,disabled:$,motion:w,height:C,itemHeight:_,virtual:x,focusable:P,activeItem:E,focused:M,tabindex:O,onKeydown:R,onFocus:D,onBlur:z,onListChangeStart:T,onListChangeEnd:k}=v,B=fS(v,[\"prefixCls\",\"selectable\",\"checkable\",\"disabled\",\"motion\",\"height\",\"itemHeight\",\"virtual\",\"focusable\",\"activeItem\",\"focused\",\"tabindex\",\"onKeydown\",\"onFocus\",\"onBlur\",\"onListChangeStart\",\"onListChangeEnd\"]);return f(He,null,[M&&E&&f(\"span\",{style:pS,\"aria-live\":\"assertive\"},[eV(E)]),f(\"div\",null,[f(\"input\",{style:pS,disabled:P===!1||$,tabindex:P!==!1?O:null,onKeydown:R,onFocus:D,onBlur:z,value:\"\",onChange:JW,\"aria-label\":\"for screen reader\"},null)]),f(\"div\",{class:`${y}-treenode`,\"aria-hidden\":!0,style:{position:\"absolute\",pointerEvents:\"none\",visibility:\"hidden\",height:0,overflow:\"hidden\"}},[f(\"div\",{class:`${y}-indent`},[f(\"div\",{ref:r,class:`${y}-indent-unit`},null)])]),f(g1,A(A({},lt(B,[\"onActiveChange\"])),{},{data:m.value,itemKey:gS,height:C,fullHeight:!1,virtual:x,itemHeight:_,prefixCls:`${y}-list`,ref:l,onVisibleChange:(L,N)=>{const F=new Set(L);N.filter(H=>!F.has(H)).some(H=>gS(H)===wr)&&d()}}),{default:L=>{const{pos:N}=L,F=fS(L.data,[]),{title:j,key:H,isStart:K,isEnd:G}=L,V=Gi(H,N);return delete F.key,delete F.children,f(ZW,A(A({},F),{},{eventKey:V,title:j,active:!!E&&H===E.key,data:L.data,isStart:K,isEnd:G,motion:w,motionNodes:H===wr?c.value:null,motionType:u.value,onMotionStart:T,onMotionEnd:d,onMousemove:g}),null)}})])}}});function nV(e){let{dropPosition:t,dropLevelOffset:n,indent:o}=e;const l={pointerEvents:\"none\",position:\"absolute\",right:0,backgroundColor:\"red\",height:\"2px\"};switch(t){case-1:l.top=0,l.left=`${-n*o}px`;break;case 1:l.bottom=0,l.left=`${-n*o}px`;break;case 0:l.bottom=0,l.left=`${o}`;break}return f(\"div\",{style:l},null)}const oV=10,y2=ne({compatConfig:{MODE:3},name:\"Tree\",inheritAttrs:!1,props:Je(ew(),{prefixCls:\"vc-tree\",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,expandAction:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:nV,allowDrop:()=>!0}),setup(e,t){let{attrs:n,slots:o,expose:l}=t;const r=ee(!1);let a={};const i=ee(),s=ee([]),c=ee([]),u=ee([]),d=ee([]),p=ee([]),m=ee([]),g={},v=gt({draggingNodeKey:null,dragChildrenKeys:[],dropTargetKey:null,dropPosition:null,dropContainerKey:null,dropLevelOffset:null,dropTargetPos:null,dropAllowed:!0,dragOverNodeKey:null}),y=ee([]);pe([()=>e.treeData,()=>e.children],()=>{y.value=e.treeData!==void 0?e.treeData.slice():jp(jt(e.children))},{immediate:!0,deep:!0});const b=ee({}),S=ee(!1),$=ee(null),w=ee(!1),C=I(()=>fd(e.fieldNames)),_=ee();let x=null,P=null,E=null;const M=I(()=>({expandedKeysSet:O.value,selectedKeysSet:R.value,loadedKeysSet:D.value,loadingKeysSet:z.value,checkedKeysSet:T.value,halfCheckedKeysSet:k.value,dragOverNodeKey:v.dragOverNodeKey,dropPosition:v.dropPosition,keyEntities:b.value})),O=I(()=>new Set(m.value)),R=I(()=>new Set(s.value)),D=I(()=>new Set(d.value)),z=I(()=>new Set(p.value)),T=I(()=>new Set(c.value)),k=I(()=>new Set(u.value));ze(()=>{if(y.value){const $e=Xi(y.value,{fieldNames:C.value});b.value=h({[wr]:b2},$e.keyEntities)}});let B=!1;pe([()=>e.expandedKeys,()=>e.autoExpandParent,b],($e,xe)=>{let[_e,Me]=$e,[je,Ae]=xe,We=m.value;if(e.expandedKeys!==void 0||B&&Me!==Ae)We=e.autoExpandParent||!B&&e.defaultExpandParent?Hp(e.expandedKeys,b.value):e.expandedKeys;else if(!B&&e.defaultExpandAll){const at=h({},b.value);delete at[wr],We=Object.keys(at).map(pt=>at[pt].key)}else!B&&e.defaultExpandedKeys&&(We=e.autoExpandParent||e.defaultExpandParent?Hp(e.defaultExpandedKeys,b.value):e.defaultExpandedKeys);We&&(m.value=We),B=!0},{immediate:!0});const L=ee([]);ze(()=>{L.value=s6(y.value,m.value,C.value)}),ze(()=>{e.selectable&&(e.selectedKeys!==void 0?s.value=Qb(e.selectedKeys,e):!B&&e.defaultSelectedKeys&&(s.value=Qb(e.defaultSelectedKeys,e)))});const{maxLevel:N,levelEntities:F}=gd(b);ze(()=>{if(e.checkable){let $e;if(e.checkedKeys!==void 0?$e=bf(e.checkedKeys)||{}:!B&&e.defaultCheckedKeys?$e=bf(e.defaultCheckedKeys)||{}:y.value&&($e=bf(e.checkedKeys)||{checkedKeys:c.value,halfCheckedKeys:u.value}),$e){let{checkedKeys:xe=[],halfCheckedKeys:_e=[]}=$e;e.checkStrictly||({checkedKeys:xe,halfCheckedKeys:_e}=go(xe,!0,b.value,N.value,F.value)),c.value=xe,u.value=_e}}}),ze(()=>{e.loadedKeys&&(d.value=e.loadedKeys)});const j=()=>{h(v,{dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})},H=$e=>{_.value.scrollTo($e)};pe(()=>e.activeKey,()=>{e.activeKey!==void 0&&($.value=e.activeKey)},{immediate:!0}),pe($,$e=>{it(()=>{$e!==null&&H({key:$e})})},{immediate:!0,flush:\"post\"});const K=$e=>{e.expandedKeys===void 0&&(m.value=$e)},G=()=>{v.draggingNodeKey!==null&&h(v,{draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),x=null,E=null},V=($e,xe)=>{const{onDragend:_e}=e;v.dragOverNodeKey=null,G(),_e?.({event:$e,node:xe.eventData}),P=null},q=$e=>{V($e,null),window.removeEventListener(\"dragend\",q)},Q=($e,xe)=>{const{onDragstart:_e}=e,{eventKey:Me,eventData:je}=xe;P=xe,x={x:$e.clientX,y:$e.clientY};const Ae=Fo(m.value,Me);v.draggingNodeKey=Me,v.dragChildrenKeys=l6(Me,b.value),i.value=_.value.getIndentWidth(),K(Ae),window.addEventListener(\"dragend\",q),_e&&_e({event:$e,node:je})},oe=($e,xe)=>{const{onDragenter:_e,onExpand:Me,allowDrop:je,direction:Ae}=e,{pos:We,eventKey:at}=xe;if(E!==at&&(E=at),!P){j();return}const{dropPosition:pt,dropLevelOffset:st,dropTargetKey:mt,dropContainerKey:ht,dropTargetPos:Yt,dropAllowed:en,dragOverNodeKey:rn}=Zb($e,P,xe,i.value,x,je,L.value,b.value,O.value,Ae);if(v.dragChildrenKeys.indexOf(mt)!==-1||!en){j();return}if(a||(a={}),Object.keys(a).forEach(Wt=>{clearTimeout(a[Wt])}),P.eventKey!==xe.eventKey&&(a[We]=window.setTimeout(()=>{if(v.draggingNodeKey===null)return;let Wt=m.value.slice();const bn=b.value[xe.eventKey];bn&&(bn.children||[]).length&&(Wt=el(m.value,xe.eventKey)),K(Wt),Me&&Me(Wt,{node:xe.eventData,expanded:!0,nativeEvent:$e})},800)),P.eventKey===mt&&st===0){j();return}h(v,{dragOverNodeKey:rn,dropPosition:pt,dropLevelOffset:st,dropTargetKey:mt,dropContainerKey:ht,dropTargetPos:Yt,dropAllowed:en}),_e&&_e({event:$e,node:xe.eventData,expandedKeys:m.value})},le=($e,xe)=>{const{onDragover:_e,allowDrop:Me,direction:je}=e;if(!P)return;const{dropPosition:Ae,dropLevelOffset:We,dropTargetKey:at,dropContainerKey:pt,dropAllowed:st,dropTargetPos:mt,dragOverNodeKey:ht}=Zb($e,P,xe,i.value,x,Me,L.value,b.value,O.value,je);v.dragChildrenKeys.indexOf(at)!==-1||!st||(P.eventKey===at&&We===0?v.dropPosition===null&&v.dropLevelOffset===null&&v.dropTargetKey===null&&v.dropContainerKey===null&&v.dropTargetPos===null&&v.dropAllowed===!1&&v.dragOverNodeKey===null||j():Ae===v.dropPosition&&We===v.dropLevelOffset&&at===v.dropTargetKey&&pt===v.dropContainerKey&&mt===v.dropTargetPos&&st===v.dropAllowed&&ht===v.dragOverNodeKey||h(v,{dropPosition:Ae,dropLevelOffset:We,dropTargetKey:at,dropContainerKey:pt,dropTargetPos:mt,dropAllowed:st,dragOverNodeKey:ht}),_e&&_e({event:$e,node:xe.eventData}))},Y=($e,xe)=>{E===xe.eventKey&&!$e.currentTarget.contains($e.relatedTarget)&&(j(),E=null);const{onDragleave:_e}=e;_e&&_e({event:$e,node:xe.eventData})},J=function($e,xe){let _e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;var Me;const{dragChildrenKeys:je,dropPosition:Ae,dropTargetKey:We,dropTargetPos:at,dropAllowed:pt}=v;if(!pt)return;const{onDrop:st}=e;if(v.dragOverNodeKey=null,G(),We===null)return;const mt=h(h({},lc(We,jt(M.value))),{active:((Me=fe.value)===null||Me===void 0?void 0:Me.key)===We,data:b.value[We].node});je.indexOf(We);const ht=wg(at),Yt={event:$e,node:rc(mt),dragNode:P?P.eventData:null,dragNodesKeys:[P.eventKey].concat(je),dropToGap:Ae!==0,dropPosition:Ae+Number(ht[ht.length-1])};_e||st?.(Yt),P=null},ce=($e,xe)=>{const{expanded:_e,key:Me}=xe,je=L.value.filter(We=>We.key===Me)[0],Ae=rc(h(h({},lc(Me,M.value)),{data:je.data}));K(_e?Fo(m.value,Me):el(m.value,Me)),he($e,Ae)},ue=($e,xe)=>{const{onClick:_e,expandAction:Me}=e;Me===\"click\"&&ce($e,xe),_e&&_e($e,xe)},be=($e,xe)=>{const{onDblclick:_e,expandAction:Me}=e;(Me===\"doubleclick\"||Me===\"dblclick\")&&ce($e,xe),_e&&_e($e,xe)},Ce=($e,xe)=>{let _e=s.value;const{onSelect:Me,multiple:je}=e,{selected:Ae}=xe,We=xe[C.value.key],at=!Ae;at?je?_e=el(_e,We):_e=[We]:_e=Fo(_e,We);const pt=b.value,st=_e.map(mt=>{const ht=pt[mt];return ht?ht.node:null}).filter(mt=>mt);e.selectedKeys===void 0&&(s.value=_e),Me&&Me(_e,{event:\"select\",selected:at,node:xe,selectedNodes:st,nativeEvent:$e})},ge=($e,xe,_e)=>{const{checkStrictly:Me,onCheck:je}=e,Ae=xe[C.value.key];let We;const at={event:\"check\",node:xe,checked:_e,nativeEvent:$e},pt=b.value;if(Me){const st=_e?el(c.value,Ae):Fo(c.value,Ae),mt=Fo(u.value,Ae);We={checked:st,halfChecked:mt},at.checkedNodes=st.map(ht=>pt[ht]).filter(ht=>ht).map(ht=>ht.node),e.checkedKeys===void 0&&(c.value=st)}else{let{checkedKeys:st,halfCheckedKeys:mt}=go([...c.value,Ae],!0,pt,N.value,F.value);if(!_e){const ht=new Set(st);ht.delete(Ae),{checkedKeys:st,halfCheckedKeys:mt}=go(Array.from(ht),{halfCheckedKeys:mt},pt,N.value,F.value)}We=st,at.checkedNodes=[],at.checkedNodesPositions=[],at.halfCheckedKeys=mt,st.forEach(ht=>{const Yt=pt[ht];if(!Yt)return;const{node:en,pos:rn}=Yt;at.checkedNodes.push(en),at.checkedNodesPositions.push({node:en,pos:rn})}),e.checkedKeys===void 0&&(c.value=st,u.value=mt)}je&&je(We,at)},Se=$e=>{const xe=$e[C.value.key],_e=new Promise((Me,je)=>{const{loadData:Ae,onLoad:We}=e;if(!Ae||D.value.has(xe)||z.value.has(xe))return null;Ae($e).then(()=>{const pt=el(d.value,xe),st=Fo(p.value,xe);We&&We(pt,{event:\"load\",node:$e}),e.loadedKeys===void 0&&(d.value=pt),p.value=st,Me()}).catch(pt=>{const st=Fo(p.value,xe);if(p.value=st,g[xe]=(g[xe]||0)+1,g[xe]>=oV){const mt=el(d.value,xe);e.loadedKeys===void 0&&(d.value=mt),Me()}je(pt)}),p.value=el(p.value,xe)});return _e.catch(()=>{}),_e},X=($e,xe)=>{const{onMouseenter:_e}=e;_e&&_e({event:$e,node:xe})},U=($e,xe)=>{const{onMouseleave:_e}=e;_e&&_e({event:$e,node:xe})},ie=($e,xe)=>{const{onRightClick:_e}=e;_e&&($e.preventDefault(),_e({event:$e,node:xe}))},ve=$e=>{const{onFocus:xe}=e;S.value=!0,xe&&xe($e)},me=$e=>{const{onBlur:xe}=e;S.value=!1,ae(null),xe&&xe($e)},he=($e,xe)=>{let _e=m.value;const{onExpand:Me,loadData:je}=e,{expanded:Ae}=xe,We=xe[C.value.key];if(w.value)return;_e.indexOf(We);const at=!Ae;if(at?_e=el(_e,We):_e=Fo(_e,We),K(_e),Me&&Me(_e,{node:xe,expanded:at,nativeEvent:$e}),at&&je){const pt=Se(xe);pt&&pt.then(()=>{}).catch(st=>{const mt=Fo(m.value,We);K(mt),Promise.reject(st)})}},se=()=>{w.value=!0},te=()=>{setTimeout(()=>{w.value=!1})},ae=$e=>{const{onActiveChange:xe}=e;$.value!==$e&&(e.activeKey!==void 0&&($.value=$e),$e!==null&&H({key:$e}),xe&&xe($e))},fe=I(()=>$.value===null?null:L.value.find($e=>{let{key:xe}=$e;return xe===$.value})||null),Pe=$e=>{let xe=L.value.findIndex(Me=>{let{key:je}=Me;return je===$.value});xe===-1&&$e<0&&(xe=L.value.length),xe=(xe+$e+L.value.length)%L.value.length;const _e=L.value[xe];if(_e){const{key:Me}=_e;ae(Me)}else ae(null)},Oe=I(()=>rc(h(h({},lc($.value,M.value)),{data:fe.value.data,active:!0}))),Re=$e=>{const{onKeydown:xe,checkable:_e,selectable:Me}=e;switch($e.which){case we.UP:{Pe(-1),$e.preventDefault();break}case we.DOWN:{Pe(1),$e.preventDefault();break}}const je=fe.value;if(je&&je.data){const Ae=je.data.isLeaf===!1||!!(je.data.children||[]).length,We=Oe.value;switch($e.which){case we.LEFT:{Ae&&O.value.has($.value)?he({},We):je.parent&&ae(je.parent.key),$e.preventDefault();break}case we.RIGHT:{Ae&&!O.value.has($.value)?he({},We):je.children&&je.children.length&&ae(je.children[0].key),$e.preventDefault();break}case we.ENTER:case we.SPACE:{_e&&!We.disabled&&We.checkable!==!1&&!We.disableCheckbox?ge({},We,!T.value.has($.value)):!_e&&Me&&!We.disabled&&We.selectable!==!1&&Ce({},We);break}}}xe&&xe($e)};return l({onNodeExpand:he,scrollTo:H,onKeydown:Re,selectedKeys:I(()=>s.value),checkedKeys:I(()=>c.value),halfCheckedKeys:I(()=>u.value),loadedKeys:I(()=>d.value),loadingKeys:I(()=>p.value),expandedKeys:I(()=>m.value)}),Mn(()=>{window.removeEventListener(\"dragend\",q),r.value=!0}),Q8({expandedKeys:m,selectedKeys:s,loadedKeys:d,loadingKeys:p,checkedKeys:c,halfCheckedKeys:u,expandedKeysSet:O,selectedKeysSet:R,loadedKeysSet:D,loadingKeysSet:z,checkedKeysSet:T,halfCheckedKeysSet:k,flattenNodes:L}),()=>{const{draggingNodeKey:$e,dropLevelOffset:xe,dropContainerKey:_e,dropTargetKey:Me,dropPosition:je,dragOverNodeKey:Ae}=v,{prefixCls:We,showLine:at,focusable:pt,tabindex:st=0,selectable:mt,showIcon:ht,icon:Yt=o.icon,switcherIcon:en,draggable:rn,checkable:Wt,checkStrictly:bn,disabled:An,motion:ro,loadData:Co,filterTreeNode:Dn,height:Yl,itemHeight:Ee,virtual:Ze,dropIndicatorRender:Ue,onContextmenu:It,onScroll:tn,direction:Vt,rootClassName:Rn,rootStyle:pn}=e,{class:ko,style:Gn}=n,ao=Gl(h(h({},e),n),{aria:!0,data:!0});let Nt;return rn?typeof rn==\"object\"?Nt=rn:typeof rn==\"function\"?Nt={nodeDraggable:rn}:Nt={}:Nt=!1,f(Z8,{value:{prefixCls:We,selectable:mt,showIcon:ht,icon:Yt,switcherIcon:en,draggable:Nt,draggingNodeKey:$e,checkable:Wt,customCheckable:o.checkable,checkStrictly:bn,disabled:An,keyEntities:b.value,dropLevelOffset:xe,dropContainerKey:_e,dropTargetKey:Me,dropPosition:je,dragOverNodeKey:Ae,dragging:$e!==null,indent:i.value,direction:Vt,dropIndicatorRender:Ue,loadData:Co,filterTreeNode:Dn,onNodeClick:ue,onNodeDoubleClick:be,onNodeExpand:he,onNodeSelect:Ce,onNodeCheck:ge,onNodeLoad:Se,onNodeMouseEnter:X,onNodeMouseLeave:U,onNodeContextMenu:ie,onNodeDragStart:Q,onNodeDragEnter:oe,onNodeDragOver:le,onNodeDragLeave:Y,onNodeDragEnd:V,onNodeDrop:J,slots:o}},{default:()=>[f(\"div\",{role:\"tree\",class:re(We,ko,Rn,{[`${We}-show-line`]:at,[`${We}-focused`]:S.value,[`${We}-active-focused`]:$.value!==null}),style:pn},[f(tV,A({ref:_,prefixCls:We,style:Gn,disabled:An,selectable:mt,checkable:!!Wt,motion:ro,height:Yl,itemHeight:Ee,virtual:Ze,focusable:pt,focused:S.value,tabindex:st,activeItem:fe.value,onFocus:ve,onBlur:me,onKeydown:Re,onActiveChange:ae,onListChangeStart:se,onListChangeEnd:te,onContextmenu:It,onScroll:tn},ao),null)])]})}}});function S2(e,t,n,o,l){const{isLeaf:r,expanded:a,loading:i}=n;let s=t;if(i)return f(eo,{class:`${e}-switcher-loading-icon`},null);let c;l&&typeof l==\"object\"&&(c=l.showLeafIcon);let u=null;const d=`${e}-switcher-icon`;return r?l?c&&o?o(n):(typeof l==\"object\"&&!c?u=f(\"span\",{class:`${e}-switcher-leaf-line`},null):u=f(l$,{class:`${e}-switcher-line-icon`},null),u):null:(u=f(YI,{class:d},null),l&&(u=a?f(qI,{class:`${e}-switcher-line-icon`},null):f(ZI,{class:`${e}-switcher-line-icon`},null)),typeof t==\"function\"?s=t(h(h({},n),{defaultIcon:u,switcherCls:d})):Gt(s)&&(s=Mo(s,{class:d})),s||u)}const hS=4;function lV(e){const{dropPosition:t,dropLevelOffset:n,prefixCls:o,indent:l,direction:r=\"ltr\"}=e,a=r===\"ltr\"?\"left\":\"right\",i=r===\"ltr\"?\"right\":\"left\",s={[a]:`${-n*l+hS}px`,[i]:0};switch(t){case-1:s.top=\"-3px\";break;case 1:s.bottom=\"-3px\";break;default:s.bottom=\"-3px\",s[a]=`${l+hS}px`;break}return f(\"div\",{style:s,class:`${o}-drop-indicator`},null)}const rV=new rt(\"ant-tree-node-fx-do-not-use\",{\"0%\":{opacity:0},\"100%\":{opacity:1}}),aV=(e,t)=>({[`.${e}-switcher-icon`]:{display:\"inline-block\",fontSize:10,verticalAlign:\"baseline\",svg:{transition:`transform ${t.motionDurationSlow}`}}}),iV=(e,t)=>({[`.${e}-drop-indicator`]:{position:\"absolute\",zIndex:1,height:2,backgroundColor:t.colorPrimary,borderRadius:1,pointerEvents:\"none\",\"&:after\":{position:\"absolute\",top:-3,insetInlineStart:-6,width:8,height:8,backgroundColor:\"transparent\",border:`${t.lineWidthBold}px solid ${t.colorPrimary}`,borderRadius:\"50%\",content:'\"\"'}}}),sV=(e,t)=>{const{treeCls:n,treeNodeCls:o,treeNodePadding:l,treeTitleHeight:r}=t,a=(r-t.fontSizeLG)/2,i=t.paddingXS;return{[n]:h(h({},qe(t)),{background:t.colorBgContainer,borderRadius:t.borderRadius,transition:`background-color ${t.motionDurationSlow}`,[`&${n}-rtl`]:{[`${n}-switcher`]:{\"&_close\":{[`${n}-switcher-icon`]:{svg:{transform:\"rotate(90deg)\"}}}}},[`&-focused:not(:hover):not(${n}-active-focused)`]:h({},fl(t)),[`${n}-list-holder-inner`]:{alignItems:\"flex-start\"},[`&${n}-block-node`]:{[`${n}-list-holder-inner`]:{alignItems:\"stretch\",[`${n}-node-content-wrapper`]:{flex:\"auto\"},[`${o}.dragging`]:{position:\"relative\",\"&:after\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:l,insetInlineStart:0,border:`1px solid ${t.colorPrimary}`,opacity:0,animationName:rV,animationDuration:t.motionDurationSlow,animationPlayState:\"running\",animationFillMode:\"forwards\",content:'\"\"',pointerEvents:\"none\"}}}},[`${o}`]:{display:\"flex\",alignItems:\"flex-start\",padding:`0 0 ${l}px 0`,outline:\"none\",\"&-rtl\":{direction:\"rtl\"},\"&-disabled\":{[`${n}-node-content-wrapper`]:{color:t.colorTextDisabled,cursor:\"not-allowed\",\"&:hover\":{background:\"transparent\"}}},[`&-active ${n}-node-content-wrapper`]:h({},fl(t)),[`&:not(${o}-disabled).filter-node ${n}-title`]:{color:\"inherit\",fontWeight:500},\"&-draggable\":{[`${n}-draggable-icon`]:{width:r,lineHeight:`${r}px`,textAlign:\"center\",visibility:\"visible\",opacity:.2,transition:`opacity ${t.motionDurationSlow}`,[`${o}:hover &`]:{opacity:.45}},[`&${o}-disabled`]:{[`${n}-draggable-icon`]:{visibility:\"hidden\"}}}},[`${n}-indent`]:{alignSelf:\"stretch\",whiteSpace:\"nowrap\",userSelect:\"none\",\"&-unit\":{display:\"inline-block\",width:r}},[`${n}-draggable-icon`]:{visibility:\"hidden\"},[`${n}-switcher`]:h(h({},aV(e,t)),{position:\"relative\",flex:\"none\",alignSelf:\"stretch\",width:r,margin:0,lineHeight:`${r}px`,textAlign:\"center\",cursor:\"pointer\",userSelect:\"none\",\"&-noop\":{cursor:\"default\"},\"&_close\":{[`${n}-switcher-icon`]:{svg:{transform:\"rotate(-90deg)\"}}},\"&-loading-icon\":{color:t.colorPrimary},\"&-leaf-line\":{position:\"relative\",zIndex:1,display:\"inline-block\",width:\"100%\",height:\"100%\",\"&:before\":{position:\"absolute\",top:0,insetInlineEnd:r/2,bottom:-l,marginInlineStart:-1,borderInlineEnd:`1px solid ${t.colorBorder}`,content:'\"\"'},\"&:after\":{position:\"absolute\",width:r/2*.8,height:r/2,borderBottom:`1px solid ${t.colorBorder}`,content:'\"\"'}}}),[`${n}-checkbox`]:{top:\"initial\",marginInlineEnd:i,marginBlockStart:a},[`${n}-node-content-wrapper, ${n}-checkbox + span`]:{position:\"relative\",zIndex:\"auto\",minHeight:r,margin:0,padding:`0 ${t.paddingXS/2}px`,color:\"inherit\",lineHeight:`${r}px`,background:\"transparent\",borderRadius:t.borderRadius,cursor:\"pointer\",transition:`all ${t.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,\"&:hover\":{backgroundColor:t.controlItemBgHover},[`&${n}-node-selected`]:{backgroundColor:t.controlItemBgActive},[`${n}-iconEle`]:{display:\"inline-block\",width:r,height:r,lineHeight:`${r}px`,textAlign:\"center\",verticalAlign:\"top\",\"&:empty\":{display:\"none\"}}},[`${n}-unselectable ${n}-node-content-wrapper:hover`]:{backgroundColor:\"transparent\"},[`${n}-node-content-wrapper`]:h({lineHeight:`${r}px`,userSelect:\"none\"},iV(e,t)),[`${o}.drop-container`]:{\"> [draggable]\":{boxShadow:`0 0 0 2px ${t.colorPrimary}`}},\"&-show-line\":{[`${n}-indent`]:{\"&-unit\":{position:\"relative\",height:\"100%\",\"&:before\":{position:\"absolute\",top:0,insetInlineEnd:r/2,bottom:-l,borderInlineEnd:`1px solid ${t.colorBorder}`,content:'\"\"'},\"&-end\":{\"&:before\":{display:\"none\"}}}},[`${n}-switcher`]:{background:\"transparent\",\"&-line-icon\":{verticalAlign:\"-0.15em\"}}},[`${o}-leaf-last`]:{[`${n}-switcher`]:{\"&-leaf-line\":{\"&:before\":{top:\"auto !important\",bottom:\"auto !important\",height:`${r/2}px !important`}}}}})}},cV=e=>{const{treeCls:t,treeNodeCls:n,treeNodePadding:o}=e;return{[`${t}${t}-directory`]:{[n]:{position:\"relative\",\"&:before\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:o,insetInlineStart:0,transition:`background-color ${e.motionDurationMid}`,content:'\"\"',pointerEvents:\"none\"},\"&:hover\":{\"&:before\":{background:e.controlItemBgHover}},\"> *\":{zIndex:1},[`${t}-switcher`]:{transition:`color ${e.motionDurationMid}`},[`${t}-node-content-wrapper`]:{borderRadius:0,userSelect:\"none\",\"&:hover\":{background:\"transparent\"},[`&${t}-node-selected`]:{color:e.colorTextLightSolid,background:\"transparent\"}},\"&-selected\":{\"\\n            &:hover::before,\\n            &::before\\n          \":{background:e.colorPrimary},[`${t}-switcher`]:{color:e.colorTextLightSolid},[`${t}-node-content-wrapper`]:{color:e.colorTextLightSolid,background:\"transparent\"}}}}}},$2=(e,t)=>{const n=`.${e}`,o=`${n}-treenode`,l=t.paddingXS/2,r=t.controlHeightSM,a=Le(t,{treeCls:n,treeNodeCls:o,treeNodePadding:l,treeTitleHeight:r});return[sV(e,a),cV(a)]},uV=Xe(\"Tree\",(e,t)=>{let{prefixCls:n}=t;return[{[e.componentCls]:Sd(`${n}-checkbox`,e)},$2(n,e),Fi(e)]}),C2=()=>{const e=ew();return h(h({},e),{showLine:Fe([Boolean,Object]),multiple:ye(),autoExpandParent:ye(),checkStrictly:ye(),checkable:ye(),disabled:ye(),defaultExpandAll:ye(),defaultExpandParent:ye(),defaultExpandedKeys:ct(),expandedKeys:ct(),checkedKeys:Fe([Array,Object]),defaultCheckedKeys:ct(),selectedKeys:ct(),defaultSelectedKeys:ct(),selectable:ye(),loadedKeys:ct(),draggable:ye(),showIcon:ye(),icon:de(),switcherIcon:W.any,prefixCls:String,replaceFields:De(),blockNode:ye(),openAnimation:W.any,onDoubleclick:e.onDblclick,\"onUpdate:selectedKeys\":de(),\"onUpdate:checkedKeys\":de(),\"onUpdate:expandedKeys\":de()})},Cc=ne({compatConfig:{MODE:3},name:\"ATree\",inheritAttrs:!1,props:Je(C2(),{checkable:!1,selectable:!0,showIcon:!1,blockNode:!1}),slots:Object,setup(e,t){let{attrs:n,expose:o,emit:l,slots:r}=t;e.treeData===void 0&&r.default;const{prefixCls:a,direction:i,virtual:s}=Te(\"tree\",e),[c,u]=uV(a),d=Z();o({treeRef:d,onNodeExpand:function(){var y;(y=d.value)===null||y===void 0||y.onNodeExpand(...arguments)},scrollTo:y=>{var b;(b=d.value)===null||b===void 0||b.scrollTo(y)},selectedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.selectedKeys}),checkedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.checkedKeys}),halfCheckedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.halfCheckedKeys}),loadedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.loadedKeys}),loadingKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.loadingKeys}),expandedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.expandedKeys})}),ze(()=>{Ot(e.replaceFields===void 0,\"Tree\",\"`replaceFields` is deprecated, please use fieldNames instead\")});const m=(y,b)=>{l(\"update:checkedKeys\",y),l(\"check\",y,b)},g=(y,b)=>{l(\"update:expandedKeys\",y),l(\"expand\",y,b)},v=(y,b)=>{l(\"update:selectedKeys\",y),l(\"select\",y,b)};return()=>{const{showIcon:y,showLine:b,switcherIcon:S=r.switcherIcon,icon:$=r.icon,blockNode:w,checkable:C,selectable:_,fieldNames:x=e.replaceFields,motion:P=e.openAnimation,itemHeight:E=28,onDoubleclick:M,onDblclick:O}=e,R=h(h(h({},n),lt(e,[\"onUpdate:checkedKeys\",\"onUpdate:expandedKeys\",\"onUpdate:selectedKeys\",\"onDoubleclick\"])),{showLine:!!b,dropIndicatorRender:lV,fieldNames:x,icon:$,itemHeight:E}),D=r.default?kt(r.default()):void 0;return c(f(y2,A(A({},R),{},{virtual:s.value,motion:P,ref:d,prefixCls:a.value,class:re({[`${a.value}-icon-hide`]:!y,[`${a.value}-block-node`]:w,[`${a.value}-unselectable`]:!_,[`${a.value}-rtl`]:i.value===\"rtl\"},n.class,u.value),direction:i.value,checkable:C,selectable:_,switcherIcon:z=>S2(a.value,S,z,r.leafIcon,b),onCheck:m,onExpand:g,onSelect:v,onDblclick:O||M,children:D}),h(h({},r),{checkable:()=>f(\"span\",{class:`${a.value}-checkbox-inner`},null)})))}}});var nl;(function(e){e[e.None=0]=\"None\",e[e.Start=1]=\"Start\",e[e.End=2]=\"End\"})(nl||(nl={}));function Ug(e,t,n){function o(l){const r=l[t.key],a=l[t.children];n(r,l)!==!1&&Ug(a||[],t,n)}e.forEach(o)}function dV(e){let{treeData:t,expandedKeys:n,startKey:o,endKey:l,fieldNames:r={title:\"title\",key:\"key\",children:\"children\"}}=e;const a=[];let i=nl.None;if(o&&o===l)return[o];if(!o||!l)return[];function s(c){return c===o||c===l}return Ug(t,r,c=>{if(i===nl.End)return!1;if(s(c)){if(a.push(c),i===nl.None)i=nl.Start;else if(i===nl.Start)return i=nl.End,!1}else i===nl.Start&&a.push(c);return n.includes(c)}),a}function Bf(e,t,n){const o=[...t],l=[];return Ug(e,n,(r,a)=>{const i=o.indexOf(r);return i!==-1&&(l.push(a),o.splice(i,1)),!!o.length}),l}var fV=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const pV=()=>h(h({},C2()),{expandAction:Fe([Boolean,String])});function mV(e){const{isLeaf:t,expanded:n}=e;return t?f(l$,null,null):n?f(QI,null,null):f(JI,null,null)}const xc=ne({compatConfig:{MODE:3},name:\"ADirectoryTree\",inheritAttrs:!1,props:Je(pV(),{showIcon:!0,expandAction:\"click\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:l,expose:r}=t;var a;const i=Z(e.treeData||jp(kt((a=o.default)===null||a===void 0?void 0:a.call(o))));pe(()=>e.treeData,()=>{i.value=e.treeData}),Wn(()=>{it(()=>{var E;e.treeData===void 0&&o.default&&(i.value=jp(kt((E=o.default)===null||E===void 0?void 0:E.call(o))))})});const s=Z(),c=Z(),u=I(()=>fd(e.fieldNames)),d=Z();r({scrollTo:E=>{var M;(M=d.value)===null||M===void 0||M.scrollTo(E)},selectedKeys:I(()=>{var E;return(E=d.value)===null||E===void 0?void 0:E.selectedKeys}),checkedKeys:I(()=>{var E;return(E=d.value)===null||E===void 0?void 0:E.checkedKeys}),halfCheckedKeys:I(()=>{var E;return(E=d.value)===null||E===void 0?void 0:E.halfCheckedKeys}),loadedKeys:I(()=>{var E;return(E=d.value)===null||E===void 0?void 0:E.loadedKeys}),loadingKeys:I(()=>{var E;return(E=d.value)===null||E===void 0?void 0:E.loadingKeys}),expandedKeys:I(()=>{var E;return(E=d.value)===null||E===void 0?void 0:E.expandedKeys})});const m=()=>{const{keyEntities:E}=Xi(i.value,{fieldNames:u.value});let M;return e.defaultExpandAll?M=Object.keys(E):e.defaultExpandParent?M=Hp(e.expandedKeys||e.defaultExpandedKeys||[],E):M=e.expandedKeys||e.defaultExpandedKeys,M},g=Z(e.selectedKeys||e.defaultSelectedKeys||[]),v=Z(m());pe(()=>e.selectedKeys,()=>{e.selectedKeys!==void 0&&(g.value=e.selectedKeys)},{immediate:!0}),pe(()=>e.expandedKeys,()=>{e.expandedKeys!==void 0&&(v.value=e.expandedKeys)},{immediate:!0});const b=Rm((E,M)=>{const{isLeaf:O}=M;O||E.shiftKey||E.metaKey||E.ctrlKey||d.value.onNodeExpand(E,M)},200,{leading:!0}),S=(E,M)=>{e.expandedKeys===void 0&&(v.value=E),l(\"update:expandedKeys\",E),l(\"expand\",E,M)},$=(E,M)=>{const{expandAction:O}=e;O===\"click\"&&b(E,M),l(\"click\",E,M)},w=(E,M)=>{const{expandAction:O}=e;(O===\"dblclick\"||O===\"doubleclick\")&&b(E,M),l(\"doubleclick\",E,M),l(\"dblclick\",E,M)},C=(E,M)=>{const{multiple:O}=e,{node:R,nativeEvent:D}=M,z=R[u.value.key],T=h(h({},M),{selected:!0}),k=D?.ctrlKey||D?.metaKey,B=D?.shiftKey;let L;O&&k?(L=E,s.value=z,c.value=L,T.selectedNodes=Bf(i.value,L,u.value)):O&&B?(L=Array.from(new Set([...c.value||[],...dV({treeData:i.value,expandedKeys:v.value,startKey:z,endKey:s.value,fieldNames:u.value})])),T.selectedNodes=Bf(i.value,L,u.value)):(L=[z],s.value=z,c.value=L,T.selectedNodes=Bf(i.value,L,u.value)),l(\"update:selectedKeys\",L),l(\"select\",L,T),e.selectedKeys===void 0&&(g.value=L)},_=(E,M)=>{l(\"update:checkedKeys\",E),l(\"check\",E,M)},{prefixCls:x,direction:P}=Te(\"tree\",e);return()=>{const E=re(`${x.value}-directory`,{[`${x.value}-directory-rtl`]:P.value===\"rtl\"},n.class),{icon:M=o.icon,blockNode:O=!0}=e,R=fV(e,[\"icon\",\"blockNode\"]);return f(Cc,A(A(A({},n),{},{icon:M||mV,ref:d,blockNode:O},R),{},{prefixCls:x.value,class:E,expandedKeys:v.value,selectedKeys:g.value,onSelect:C,onClick:$,onDblclick:w,onExpand:S,onCheck:_}),o)}}}),wc=zp,x2=h(Cc,{DirectoryTree:xc,TreeNode:wc,install:e=>(e.component(Cc.name,Cc),e.component(wc.name,wc),e.component(xc.name,xc),e)});function bS(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const o=new Set;function l(r,a){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;const s=o.has(r);if(Qm(!s,\"Warning: There may be circular references\"),s)return!1;if(r===a)return!0;if(n&&i>1)return!1;o.add(r);const c=i+1;if(Array.isArray(r)){if(!Array.isArray(a)||r.length!==a.length)return!1;for(let u=0;u<r.length;u++)if(!l(r[u],a[u],c))return!1;return!0}if(r&&a&&typeof r==\"object\"&&typeof a==\"object\"){const u=Object.keys(r);return u.length!==Object.keys(a).length?!1:u.every(d=>l(r[d],a[d],c))}return!1}return l(e,t)}const{SubMenu:vV,Item:gV}=Ht;function hV(e){return e.some(t=>{let{children:n}=t;return n&&n.length>0})}function w2(e,t){return typeof t==\"string\"||typeof t==\"number\"?t?.toString().toLowerCase().includes(e.trim().toLowerCase()):!1}function _2(e){let{filters:t,prefixCls:n,filteredKeys:o,filterMultiple:l,searchValue:r,filterSearch:a}=e;return t.map((i,s)=>{const c=String(i.value);if(i.children)return f(vV,{key:c||s,title:i.text,popupClassName:`${n}-dropdown-submenu`},{default:()=>[_2({filters:i.children,prefixCls:n,filteredKeys:o,filterMultiple:l,searchValue:r,filterSearch:a})]});const u=l?Jn:In,d=f(gV,{key:i.value!==void 0?c:s},{default:()=>[f(u,{checked:o.includes(c)},null),f(\"span\",null,[i.text])]});return r.trim()?typeof a==\"function\"?a(r,i)?d:void 0:w2(r,i.text)?d:void 0:d})}const bV=ne({name:\"FilterDropdown\",props:[\"tablePrefixCls\",\"prefixCls\",\"dropdownPrefixCls\",\"column\",\"filterState\",\"filterMultiple\",\"filterMode\",\"filterSearch\",\"columnKey\",\"triggerFilter\",\"locale\",\"getPopupContainer\"],setup(e,t){let{slots:n}=t;const o=Kg(),l=I(()=>{var H;return(H=e.filterMode)!==null&&H!==void 0?H:\"menu\"}),r=I(()=>{var H;return(H=e.filterSearch)!==null&&H!==void 0?H:!1}),a=I(()=>e.column.filterDropdownOpen||e.column.filterDropdownVisible),i=I(()=>e.column.onFilterDropdownOpenChange||e.column.onFilterDropdownVisibleChange),s=ee(!1),c=I(()=>{var H;return!!(e.filterState&&(!((H=e.filterState.filteredKeys)===null||H===void 0)&&H.length||e.filterState.forceFiltered))}),u=I(()=>{var H;return Od((H=e.column)===null||H===void 0?void 0:H.filters)}),d=I(()=>{const{filterDropdown:H,slots:K={},customFilterDropdown:G}=e.column;return H||K.filterDropdown&&o.value[K.filterDropdown]||G&&o.value.customFilterDropdown}),p=I(()=>{const{filterIcon:H,slots:K={}}=e.column;return H||K.filterIcon&&o.value[K.filterIcon]||o.value.customFilterIcon}),m=H=>{var K;s.value=H,(K=i.value)===null||K===void 0||K.call(i,H)},g=I(()=>typeof a.value==\"boolean\"?a.value:s.value),v=I(()=>{var H;return(H=e.filterState)===null||H===void 0?void 0:H.filteredKeys}),y=ee([]),b=H=>{let{selectedKeys:K}=H;y.value=K},S=(H,K)=>{let{node:G,checked:V}=K;e.filterMultiple?b({selectedKeys:H}):b({selectedKeys:V&&G.key?[G.key]:[]})};pe(v,()=>{s.value&&b({selectedKeys:v.value||[]})},{immediate:!0});const $=ee([]),w=ee(),C=H=>{w.value=setTimeout(()=>{$.value=H})},_=()=>{clearTimeout(w.value)};ot(()=>{clearTimeout(w.value)});const x=ee(\"\"),P=H=>{const{value:K}=H.target;x.value=K};pe(s,()=>{s.value||(x.value=\"\")});const E=H=>{const{column:K,columnKey:G,filterState:V}=e,q=H&&H.length?H:null;if(q===null&&(!V||!V.filteredKeys)||bS(q,V?.filteredKeys,!0))return null;e.triggerFilter({column:K,key:G,filteredKeys:q})},M=()=>{m(!1),E(y.value)},O=function(){let{confirm:H,closeDropdown:K}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1};H&&E([]),K&&m(!1),x.value=\"\",e.column.filterResetToDefaultFilteredValue?y.value=(e.column.defaultFilteredValue||[]).map(G=>String(G)):y.value=[]},R=function(){let{closeDropdown:H}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0};H&&m(!1),E(y.value)},D=H=>{H&&v.value!==void 0&&(y.value=v.value||[]),m(H),!H&&!d.value&&M()},{direction:z}=Te(\"\",e),T=H=>{if(H.target.checked){const K=u.value;y.value=K}else y.value=[]},k=H=>{let{filters:K}=H;return(K||[]).map((G,V)=>{const q=String(G.value),Q={title:G.text,key:G.value!==void 0?q:V};return G.children&&(Q.children=k({filters:G.children})),Q})},B=H=>{var K;return h(h({},H),{text:H.title,value:H.key,children:((K=H.children)===null||K===void 0?void 0:K.map(G=>B(G)))||[]})},L=I(()=>k({filters:e.column.filters})),N=I(()=>re({[`${e.dropdownPrefixCls}-menu-without-submenu`]:!hV(e.column.filters||[])})),F=()=>{const H=y.value,{column:K,locale:G,tablePrefixCls:V,filterMultiple:q,dropdownPrefixCls:Q,getPopupContainer:oe,prefixCls:le}=e;return(K.filters||[]).length===0?f(Ln,{image:Ln.PRESENTED_IMAGE_SIMPLE,description:G.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:\"16px 0\"}},null):l.value===\"tree\"?f(He,null,[f(cS,{filterSearch:r.value,value:x.value,onChange:P,tablePrefixCls:V,locale:G},null),f(\"div\",{class:`${V}-filter-dropdown-tree`},[q?f(Jn,{class:`${V}-filter-dropdown-checkall`,onChange:T,checked:H.length===u.value.length,indeterminate:H.length>0&&H.length<u.value.length},{default:()=>[G.filterCheckall]}):null,f(x2,{checkable:!0,selectable:!1,blockNode:!0,multiple:q,checkStrictly:!q,class:`${Q}-menu`,onCheck:S,checkedKeys:H,selectedKeys:H,showIcon:!1,treeData:L.value,autoExpandParent:!0,defaultExpandAll:!0,filterTreeNode:x.value.trim()?Y=>typeof r.value==\"function\"?r.value(x.value,B(Y)):w2(x.value,Y.title):void 0},null)])]):f(He,null,[f(cS,{filterSearch:r.value,value:x.value,onChange:P,tablePrefixCls:V,locale:G},null),f(Ht,{multiple:q,prefixCls:`${Q}-menu`,class:N.value,onClick:_,onSelect:b,onDeselect:b,selectedKeys:H,getPopupContainer:oe,openKeys:$.value,onOpenChange:C},{default:()=>_2({filters:K.filters||[],filterSearch:r.value,prefixCls:le,filteredKeys:y.value,filterMultiple:q,searchValue:x.value})})])},j=I(()=>{const H=y.value;return e.column.filterResetToDefaultFilteredValue?bS((e.column.defaultFilteredValue||[]).map(K=>String(K)),H,!0):H.length===0});return()=>{var H;const{tablePrefixCls:K,prefixCls:G,column:V,dropdownPrefixCls:q,locale:Q,getPopupContainer:oe}=e;let le;typeof d.value==\"function\"?le=d.value({prefixCls:`${q}-custom`,setSelectedKeys:ce=>b({selectedKeys:ce}),selectedKeys:y.value,confirm:R,clearFilters:O,filters:V.filters,visible:g.value,column:V.__originColumn__,close:()=>{m(!1)}}):d.value?le=d.value:le=f(He,null,[F(),f(\"div\",{class:`${G}-dropdown-btns`},[f(_t,{type:\"link\",size:\"small\",disabled:j.value,onClick:()=>O()},{default:()=>[Q.filterReset]}),f(_t,{type:\"primary\",size:\"small\",onClick:M},{default:()=>[Q.filterConfirm]})])]);const Y=f(qW,{class:`${G}-dropdown`},{default:()=>[le]});let J;return typeof p.value==\"function\"?J=p.value({filtered:c.value,column:V.__originColumn__}):p.value?J=p.value:J=f(eP,null,null),f(\"div\",{class:`${G}-column`},[f(\"span\",{class:`${K}-column-title`},[(H=n.default)===null||H===void 0?void 0:H.call(n)]),f(vo,{overlay:Y,trigger:[\"click\"],open:g.value,onOpenChange:D,getPopupContainer:oe,placement:z.value===\"rtl\"?\"bottomLeft\":\"bottomRight\"},{default:()=>[f(\"span\",{role:\"button\",tabindex:-1,class:re(`${G}-trigger`,{active:c.value}),onClick:ce=>{ce.stopPropagation()}},[J])]})])}}});function bm(e,t,n){let o=[];return(e||[]).forEach((l,r)=>{var a,i;const s=Ji(r,n),c=l.filterDropdown||((a=l?.slots)===null||a===void 0?void 0:a.filterDropdown)||l.customFilterDropdown;if(l.filters||c||\"onFilter\"in l)if(\"filteredValue\"in l){let u=l.filteredValue;c||(u=(i=u?.map(String))!==null&&i!==void 0?i:u),o.push({column:l,key:xr(l,s),filteredKeys:u,forceFiltered:l.filtered})}else o.push({column:l,key:xr(l,s),filteredKeys:t&&l.defaultFilteredValue?l.defaultFilteredValue:void 0,forceFiltered:l.filtered});\"children\"in l&&(o=[...o,...bm(l.children,t,s)])}),o}function I2(e,t,n,o,l,r,a,i){return n.map((s,c)=>{var u;const d=Ji(c,i),{filterMultiple:p=!0,filterMode:m,filterSearch:g}=s;let v=s;const y=s.filterDropdown||((u=s?.slots)===null||u===void 0?void 0:u.filterDropdown)||s.customFilterDropdown;if(v.filters||y){const b=xr(v,d),S=o.find($=>{let{key:w}=$;return b===w});v=h(h({},v),{title:$=>f(bV,{tablePrefixCls:e,prefixCls:`${e}-filter`,dropdownPrefixCls:t,column:v,columnKey:b,filterState:S,filterMultiple:p,filterMode:m,filterSearch:g,triggerFilter:r,locale:l,getPopupContainer:a},{default:()=>[Xg(s.title,$)]})})}return\"children\"in v&&(v=h(h({},v),{children:I2(e,t,v.children,o,l,r,a,d)})),v})}function Od(e){let t=[];return(e||[]).forEach(n=>{let{value:o,children:l}=n;t.push(o),l&&(t=[...t,...Od(l)])}),t}function yS(e){const t={};return e.forEach(n=>{let{key:o,filteredKeys:l,column:r}=n;var a;const i=r.filterDropdown||((a=r?.slots)===null||a===void 0?void 0:a.filterDropdown)||r.customFilterDropdown,{filters:s}=r;if(i)t[o]=l||null;else if(Array.isArray(l)){const c=Od(s);t[o]=c.filter(u=>l.includes(String(u)))}else t[o]=null}),t}function SS(e,t){return t.reduce((n,o)=>{const{column:{onFilter:l,filters:r},filteredKeys:a}=o;return l&&a&&a.length?n.filter(i=>a.some(s=>{const c=Od(r),u=c.findIndex(p=>String(p)===String(s)),d=u!==-1?c[u]:s;return l(d,i)})):n},e)}function P2(e){return e.flatMap(t=>\"children\"in t?[t,...P2(t.children||[])]:[t])}function yV(e){let{prefixCls:t,dropdownPrefixCls:n,mergedColumns:o,locale:l,onFilterChange:r,getPopupContainer:a}=e;const i=I(()=>P2(o.value)),[s,c]=yt(bm(i.value,!0)),u=I(()=>{const g=bm(i.value,!1);if(g.length===0)return g;let v=!0,y=!0;if(g.forEach(b=>{let{filteredKeys:S}=b;S!==void 0?v=!1:y=!1}),v){const b=(i.value||[]).map((S,$)=>xr(S,Ji($)));return s.value.filter(S=>{let{key:$}=S;return b.includes($)}).map(S=>{const $=i.value[b.findIndex(w=>w===S.key)];return h(h({},S),{column:h(h({},S.column),$),forceFiltered:$.filtered})})}return Ot(y,\"Table\",\"Columns should all contain `filteredValue` or not contain `filteredValue`.\"),g}),d=I(()=>yS(u.value)),p=g=>{const v=u.value.filter(y=>{let{key:b}=y;return b!==g.key});v.push(g),c(v),r(yS(v),v)};return[g=>I2(t.value,n.value,g,u.value,l.value,p,a.value),u,d]}function T2(e,t){return e.map(n=>{const o=h({},n);return o.title=Xg(o.title,t),\"children\"in o&&(o.children=T2(o.children,t)),o})}function SV(e){return[n=>T2(n,e.value)]}function $V(e){return function(n){let{prefixCls:o,onExpand:l,record:r,expanded:a,expandable:i}=n;const s=`${o}-row-expand-icon`;return f(\"button\",{type:\"button\",onClick:c=>{l(r,c),c.stopPropagation()},class:re(s,{[`${s}-spaced`]:!i,[`${s}-expanded`]:i&&a,[`${s}-collapsed`]:i&&!a}),\"aria-label\":a?e.collapse:e.expand,\"aria-expanded\":a},null)}}function O2(e,t){const n=t.value;return e.map(o=>{var l;if(o===tl||o===Tl)return o;const r=h({},o),{slots:a={}}=r;return r.__originColumn__=o,Ot(!(\"slots\"in r),\"Table\",\"`column.slots` is deprecated. Please use `v-slot:headerCell` `v-slot:bodyCell` instead.\"),Object.keys(a).forEach(i=>{const s=a[i];r[i]===void 0&&n[s]&&(r[i]=n[s])}),t.value.headerCell&&!(!((l=o.slots)===null||l===void 0)&&l.title)&&(r.title=Vu(t.value,\"headerCell\",{title:o.title,column:o},()=>[o.title])),\"children\"in r&&Array.isArray(r.children)&&(r.children=O2(r.children,t)),r})}function CV(e){return[n=>O2(n,e)]}const xV=e=>{const{componentCls:t}=e,n=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`,o=(l,r,a)=>({[`&${t}-${l}`]:{[`> ${t}-container`]:{[`> ${t}-content, > ${t}-body`]:{\"> table > tbody > tr > td\":{[`> ${t}-expanded-row-fixed`]:{margin:`-${r}px -${a+e.lineWidth}px`}}}}}});return{[`${t}-wrapper`]:{[`${t}${t}-bordered`]:h(h(h({[`> ${t}-title`]:{border:n,borderBottom:0},[`> ${t}-container`]:{borderInlineStart:n,[`\n            > ${t}-content,\n            > ${t}-header,\n            > ${t}-body,\n            > ${t}-summary\n          `]:{\"> table\":{\"\\n                > thead > tr > th,\\n                > tbody > tr > td,\\n                > tfoot > tr > th,\\n                > tfoot > tr > td\\n              \":{borderInlineEnd:n},\"> thead\":{\"> tr:not(:last-child) > th\":{borderBottom:n},\"> tr > th::before\":{backgroundColor:\"transparent !important\"}},\"\\n                > thead > tr,\\n                > tbody > tr,\\n                > tfoot > tr\\n              \":{[`> ${t}-cell-fix-right-first::after`]:{borderInlineEnd:n}},\"> tbody > tr > td\":{[`> ${t}-expanded-row-fixed`]:{margin:`-${e.tablePaddingVertical}px -${e.tablePaddingHorizontal+e.lineWidth}px`,\"&::after\":{position:\"absolute\",top:0,insetInlineEnd:e.lineWidth,bottom:0,borderInlineEnd:n,content:'\"\"'}}}}},[`\n            > ${t}-content,\n            > ${t}-header\n          `]:{\"> table\":{borderTop:n}}},[`&${t}-scroll-horizontal`]:{[`> ${t}-container > ${t}-body`]:{\"> table > tbody\":{[`\n                > tr${t}-expanded-row,\n                > tr${t}-placeholder\n              `]:{\"> td\":{borderInlineEnd:0}}}}}},o(\"middle\",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle)),o(\"small\",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall)),{[`> ${t}-footer`]:{border:n,borderTop:0}}),[`${t}-cell`]:{[`${t}-container:first-child`]:{borderTop:0},\"&-scrollbar:not([rowspan])\":{boxShadow:`0 ${e.lineWidth}px 0 ${e.lineWidth}px ${e.tableHeaderBg}`}}}}},wV=e=>{const{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-cell-ellipsis`]:h(h({},Xt),{wordBreak:\"keep-all\",[`\n          &${t}-cell-fix-left-last,\n          &${t}-cell-fix-right-first\n        `]:{overflow:\"visible\",[`${t}-cell-content`]:{display:\"block\",overflow:\"hidden\",textOverflow:\"ellipsis\"}},[`${t}-column-title`]:{overflow:\"hidden\",textOverflow:\"ellipsis\",wordBreak:\"keep-all\"}})}}},_V=e=>{const{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-tbody > tr${t}-placeholder`]:{textAlign:\"center\",color:e.colorTextDisabled,\"&:hover > td\":{background:e.colorBgContainer}}}}},IV=e=>{const{componentCls:t,antCls:n,controlInteractiveSize:o,motionDurationSlow:l,lineWidth:r,paddingXS:a,lineType:i,tableBorderColor:s,tableExpandIconBg:c,tableExpandColumnWidth:u,borderRadius:d,fontSize:p,fontSizeSM:m,lineHeight:g,tablePaddingVertical:v,tablePaddingHorizontal:y,tableExpandedRowBg:b,paddingXXS:S}=e,$=o/2-r,w=$*2+r*3,C=`${r}px ${i} ${s}`,_=S-r;return{[`${t}-wrapper`]:{[`${t}-expand-icon-col`]:{width:u},[`${t}-row-expand-icon-cell`]:{textAlign:\"center\",[`${t}-row-expand-icon`]:{display:\"inline-flex\",float:\"none\",verticalAlign:\"sub\"}},[`${t}-row-indent`]:{height:1,float:\"left\"},[`${t}-row-expand-icon`]:h(h({},Hu(e)),{position:\"relative\",float:\"left\",boxSizing:\"border-box\",width:w,height:w,padding:0,color:\"inherit\",lineHeight:`${w}px`,background:c,border:C,borderRadius:d,transform:`scale(${o/w})`,transition:`all ${l}`,userSelect:\"none\",\"&:focus, &:hover, &:active\":{borderColor:\"currentcolor\"},\"&::before, &::after\":{position:\"absolute\",background:\"currentcolor\",transition:`transform ${l} ease-out`,content:'\"\"'},\"&::before\":{top:$,insetInlineEnd:_,insetInlineStart:_,height:r},\"&::after\":{top:_,bottom:_,insetInlineStart:$,width:r,transform:\"rotate(90deg)\"},\"&-collapsed::before\":{transform:\"rotate(-180deg)\"},\"&-collapsed::after\":{transform:\"rotate(0deg)\"},\"&-spaced\":{\"&::before, &::after\":{display:\"none\",content:\"none\"},background:\"transparent\",border:0,visibility:\"hidden\"}}),[`${t}-row-indent + ${t}-row-expand-icon`]:{marginTop:(p*g-r*3)/2-Math.ceil((m*1.4-r*3)/2),marginInlineEnd:a},[`tr${t}-expanded-row`]:{\"&, &:hover\":{\"> td\":{background:b}},[`${n}-descriptions-view`]:{display:\"flex\",table:{flex:\"auto\",width:\"auto\"}}},[`${t}-expanded-row-fixed`]:{position:\"relative\",margin:`-${v}px -${y}px`,padding:`${v}px ${y}px`}}}},PV=e=>{const{componentCls:t,antCls:n,iconCls:o,tableFilterDropdownWidth:l,tableFilterDropdownSearchWidth:r,paddingXXS:a,paddingXS:i,colorText:s,lineWidth:c,lineType:u,tableBorderColor:d,tableHeaderIconColor:p,fontSizeSM:m,tablePaddingHorizontal:g,borderRadius:v,motionDurationSlow:y,colorTextDescription:b,colorPrimary:S,tableHeaderFilterActiveBg:$,colorTextDisabled:w,tableFilterDropdownBg:C,tableFilterDropdownHeight:_,controlItemBgHover:x,controlItemBgActive:P,boxShadowSecondary:E}=e,M=`${n}-dropdown`,O=`${t}-filter-dropdown`,R=`${n}-tree`,D=`${c}px ${u} ${d}`;return[{[`${t}-wrapper`]:{[`${t}-filter-column`]:{display:\"flex\",justifyContent:\"space-between\"},[`${t}-filter-trigger`]:{position:\"relative\",display:\"flex\",alignItems:\"center\",marginBlock:-a,marginInline:`${a}px ${-g/2}px`,padding:`0 ${a}px`,color:p,fontSize:m,borderRadius:v,cursor:\"pointer\",transition:`all ${y}`,\"&:hover\":{color:b,background:$},\"&.active\":{color:S}}}},{[`${n}-dropdown`]:{[O]:h(h({},qe(e)),{minWidth:l,backgroundColor:C,borderRadius:v,boxShadow:E,[`${M}-menu`]:{maxHeight:_,overflowX:\"hidden\",border:0,boxShadow:\"none\",\"&:empty::after\":{display:\"block\",padding:`${i}px 0`,color:w,fontSize:m,textAlign:\"center\",content:'\"Not Found\"'}},[`${O}-tree`]:{paddingBlock:`${i}px 0`,paddingInline:i,[R]:{padding:0},[`${R}-treenode ${R}-node-content-wrapper:hover`]:{backgroundColor:x},[`${R}-treenode-checkbox-checked ${R}-node-content-wrapper`]:{\"&, &:hover\":{backgroundColor:P}}},[`${O}-search`]:{padding:i,borderBottom:D,\"&-input\":{input:{minWidth:r},[o]:{color:w}}},[`${O}-checkall`]:{width:\"100%\",marginBottom:a,marginInlineStart:a},[`${O}-btns`]:{display:\"flex\",justifyContent:\"space-between\",padding:`${i-c}px ${i}px`,overflow:\"hidden\",backgroundColor:\"inherit\",borderTop:D}})}},{[`${n}-dropdown ${O}, ${O}-submenu`]:{[`${n}-checkbox-wrapper + span`]:{paddingInlineStart:i,color:s},\"> ul\":{maxHeight:\"calc(100vh - 130px)\",overflowX:\"hidden\",overflowY:\"auto\"}}}]},TV=e=>{const{componentCls:t,lineWidth:n,colorSplit:o,motionDurationSlow:l,zIndexTableFixed:r,tableBg:a,zIndexTableSticky:i}=e,s=o;return{[`${t}-wrapper`]:{[`\n        ${t}-cell-fix-left,\n        ${t}-cell-fix-right\n      `]:{position:\"sticky !important\",zIndex:r,background:a},[`\n        ${t}-cell-fix-left-first::after,\n        ${t}-cell-fix-left-last::after\n      `]:{position:\"absolute\",top:0,right:{_skip_check_:!0,value:0},bottom:-n,width:30,transform:\"translateX(100%)\",transition:`box-shadow ${l}`,content:'\"\"',pointerEvents:\"none\"},[`${t}-cell-fix-left-all::after`]:{display:\"none\"},[`\n        ${t}-cell-fix-right-first::after,\n        ${t}-cell-fix-right-last::after\n      `]:{position:\"absolute\",top:0,bottom:-n,left:{_skip_check_:!0,value:0},width:30,transform:\"translateX(-100%)\",transition:`box-shadow ${l}`,content:'\"\"',pointerEvents:\"none\"},[`${t}-container`]:{\"&::before, &::after\":{position:\"absolute\",top:0,bottom:0,zIndex:i+1,width:30,transition:`box-shadow ${l}`,content:'\"\"',pointerEvents:\"none\"},\"&::before\":{insetInlineStart:0},\"&::after\":{insetInlineEnd:0}},[`${t}-ping-left`]:{[`&:not(${t}-has-fix-left) ${t}-container`]:{position:\"relative\",\"&::before\":{boxShadow:`inset 10px 0 8px -8px ${s}`}},[`\n          ${t}-cell-fix-left-first::after,\n          ${t}-cell-fix-left-last::after\n        `]:{boxShadow:`inset 10px 0 8px -8px ${s}`},[`${t}-cell-fix-left-last::before`]:{backgroundColor:\"transparent !important\"}},[`${t}-ping-right`]:{[`&:not(${t}-has-fix-right) ${t}-container`]:{position:\"relative\",\"&::after\":{boxShadow:`inset -10px 0 8px -8px ${s}`}},[`\n          ${t}-cell-fix-right-first::after,\n          ${t}-cell-fix-right-last::after\n        `]:{boxShadow:`inset -10px 0 8px -8px ${s}`}}}}},OV=e=>{const{componentCls:t,antCls:n}=e;return{[`${t}-wrapper`]:{[`${t}-pagination${n}-pagination`]:{margin:`${e.margin}px 0`},[`${t}-pagination`]:{display:\"flex\",flexWrap:\"wrap\",rowGap:e.paddingXS,\"> *\":{flex:\"none\"},\"&-left\":{justifyContent:\"flex-start\"},\"&-center\":{justifyContent:\"center\"},\"&-right\":{justifyContent:\"flex-end\"}}}}},EV=e=>{const{componentCls:t,tableRadius:n}=e;return{[`${t}-wrapper`]:{[t]:{[`${t}-title, ${t}-header`]:{borderRadius:`${n}px ${n}px 0 0`},[`${t}-title + ${t}-container`]:{borderStartStartRadius:0,borderStartEndRadius:0,table:{borderRadius:0,\"> thead > tr:first-child\":{\"th:first-child\":{borderRadius:0},\"th:last-child\":{borderRadius:0}}}},\"&-container\":{borderStartStartRadius:n,borderStartEndRadius:n,\"table > thead > tr:first-child\":{\"> *:first-child\":{borderStartStartRadius:n},\"> *:last-child\":{borderStartEndRadius:n}}},\"&-footer\":{borderRadius:`0 0 ${n}px ${n}px`}}}}},MV=e=>{const{componentCls:t}=e;return{[`${t}-wrapper-rtl`]:{direction:\"rtl\",table:{direction:\"rtl\"},[`${t}-pagination-left`]:{justifyContent:\"flex-end\"},[`${t}-pagination-right`]:{justifyContent:\"flex-start\"},[`${t}-row-expand-icon`]:{\"&::after\":{transform:\"rotate(-90deg)\"},\"&-collapsed::before\":{transform:\"rotate(180deg)\"},\"&-collapsed::after\":{transform:\"rotate(0deg)\"}}}}},AV=e=>{const{componentCls:t,antCls:n,iconCls:o,fontSizeIcon:l,paddingXS:r,tableHeaderIconColor:a,tableHeaderIconColorHover:i}=e;return{[`${t}-wrapper`]:{[`${t}-selection-col`]:{width:e.tableSelectionColumnWidth},[`${t}-bordered ${t}-selection-col`]:{width:e.tableSelectionColumnWidth+r*2},[`\n        table tr th${t}-selection-column,\n        table tr td${t}-selection-column\n      `]:{paddingInlineEnd:e.paddingXS,paddingInlineStart:e.paddingXS,textAlign:\"center\",[`${n}-radio-wrapper`]:{marginInlineEnd:0}},[`table tr th${t}-selection-column${t}-cell-fix-left`]:{zIndex:e.zIndexTableFixed+1},[`table tr th${t}-selection-column::after`]:{backgroundColor:\"transparent !important\"},[`${t}-selection`]:{position:\"relative\",display:\"inline-flex\",flexDirection:\"column\"},[`${t}-selection-extra`]:{position:\"absolute\",top:0,zIndex:1,cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,marginInlineStart:\"100%\",paddingInlineStart:`${e.tablePaddingHorizontal/4}px`,[o]:{color:a,fontSize:l,verticalAlign:\"baseline\",\"&:hover\":{color:i}}}}}},DV=e=>{const{componentCls:t}=e,n=(o,l,r,a)=>({[`${t}${t}-${o}`]:{fontSize:a,[`\n        ${t}-title,\n        ${t}-footer,\n        ${t}-thead > tr > th,\n        ${t}-tbody > tr > td,\n        tfoot > tr > th,\n        tfoot > tr > td\n      `]:{padding:`${l}px ${r}px`},[`${t}-filter-trigger`]:{marginInlineEnd:`-${r/2}px`},[`${t}-expanded-row-fixed`]:{margin:`-${l}px -${r}px`},[`${t}-tbody`]:{[`${t}-wrapper:only-child ${t}`]:{marginBlock:`-${l}px`,marginInline:`${e.tableExpandColumnWidth-r}px -${r}px`}},[`${t}-selection-column`]:{paddingInlineStart:`${r/4}px`}}});return{[`${t}-wrapper`]:h(h({},n(\"middle\",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle,e.tableFontSizeMiddle)),n(\"small\",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall,e.tableFontSizeSmall))}},RV=e=>{const{componentCls:t}=e;return{[`${t}-wrapper ${t}-resize-handle`]:{position:\"absolute\",top:0,height:\"100% !important\",bottom:0,left:\" auto !important\",right:\" -8px\",cursor:\"col-resize\",touchAction:\"none\",userSelect:\"auto\",width:\"16px\",zIndex:1,\"&-line\":{display:\"block\",width:\"1px\",marginLeft:\"7px\",height:\"100% !important\",backgroundColor:e.colorPrimary,opacity:0},\"&:hover &-line\":{opacity:1}},[`${t}-wrapper  ${t}-resize-handle.dragging`]:{overflow:\"hidden\",[`${t}-resize-handle-line`]:{opacity:1},\"&:before\":{position:\"absolute\",top:0,bottom:0,content:'\" \"',width:\"200vw\",transform:\"translateX(-50%)\",opacity:0}}}},kV=e=>{const{componentCls:t,marginXXS:n,fontSizeIcon:o,tableHeaderIconColor:l,tableHeaderIconColorHover:r}=e;return{[`${t}-wrapper`]:{[`${t}-thead th${t}-column-has-sorters`]:{outline:\"none\",cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,\"&:hover\":{background:e.tableHeaderSortHoverBg,\"&::before\":{backgroundColor:\"transparent !important\"}},\"&:focus-visible\":{color:e.colorPrimary},[`\n          &${t}-cell-fix-left:hover,\n          &${t}-cell-fix-right:hover\n        `]:{background:e.tableFixedHeaderSortActiveBg}},[`${t}-thead th${t}-column-sort`]:{background:e.tableHeaderSortBg,\"&::before\":{backgroundColor:\"transparent !important\"}},[`td${t}-column-sort`]:{background:e.tableBodySortBg},[`${t}-column-title`]:{position:\"relative\",zIndex:1,flex:1},[`${t}-column-sorters`]:{display:\"flex\",flex:\"auto\",alignItems:\"center\",justifyContent:\"space-between\",\"&::after\":{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",content:'\"\"'}},[`${t}-column-sorter`]:{marginInlineStart:n,color:l,fontSize:0,transition:`color ${e.motionDurationSlow}`,\"&-inner\":{display:\"inline-flex\",flexDirection:\"column\",alignItems:\"center\"},\"&-up, &-down\":{fontSize:o,\"&.active\":{color:e.colorPrimary}},[`${t}-column-sorter-up + ${t}-column-sorter-down`]:{marginTop:\"-0.3em\"}},[`${t}-column-sorters:hover ${t}-column-sorter`]:{color:r}}}},NV=e=>{const{componentCls:t,opacityLoading:n,tableScrollThumbBg:o,tableScrollThumbBgHover:l,tableScrollThumbSize:r,tableScrollBg:a,zIndexTableSticky:i}=e,s=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`;return{[`${t}-wrapper`]:{[`${t}-sticky`]:{\"&-holder\":{position:\"sticky\",zIndex:i,background:e.colorBgContainer},\"&-scroll\":{position:\"sticky\",bottom:0,height:`${r}px !important`,zIndex:i,display:\"flex\",alignItems:\"center\",background:a,borderTop:s,opacity:n,\"&:hover\":{transformOrigin:\"center bottom\"},\"&-bar\":{height:r,backgroundColor:o,borderRadius:100,transition:`all ${e.motionDurationSlow}, transform none`,position:\"absolute\",bottom:0,\"&:hover, &-active\":{backgroundColor:l}}}}}}},$S=e=>{const{componentCls:t,lineWidth:n,tableBorderColor:o}=e,l=`${n}px ${e.lineType} ${o}`;return{[`${t}-wrapper`]:{[`${t}-summary`]:{position:\"relative\",zIndex:e.zIndexTableFixed,background:e.tableBg,\"> tr\":{\"> th, > td\":{borderBottom:l}}},[`div${t}-summary`]:{boxShadow:`0 -${n}px 0 ${o}`}}}},BV=e=>{const{componentCls:t,fontWeightStrong:n,tablePaddingVertical:o,tablePaddingHorizontal:l,lineWidth:r,lineType:a,tableBorderColor:i,tableFontSize:s,tableBg:c,tableRadius:u,tableHeaderTextColor:d,motionDurationMid:p,tableHeaderBg:m,tableHeaderCellSplitColor:g,tableRowHoverBg:v,tableSelectedRowBg:y,tableSelectedRowHoverBg:b,tableFooterTextColor:S,tableFooterBg:$,paddingContentVerticalLG:w}=e,C=`${r}px ${a} ${i}`;return{[`${t}-wrapper`]:h(h({clear:\"both\",maxWidth:\"100%\"},Do()),{[t]:h(h({},qe(e)),{fontSize:s,background:c,borderRadius:`${u}px ${u}px 0 0`}),table:{width:\"100%\",textAlign:\"start\",borderRadius:`${u}px ${u}px 0 0`,borderCollapse:\"separate\",borderSpacing:0},[`\n          ${t}-thead > tr > th,\n          ${t}-tbody > tr > td,\n          tfoot > tr > th,\n          tfoot > tr > td\n        `]:{position:\"relative\",padding:`${w}px ${l}px`,overflowWrap:\"break-word\"},[`${t}-title`]:{padding:`${o}px ${l}px`},[`${t}-thead`]:{\"\\n          > tr > th,\\n          > tr > td\\n        \":{position:\"relative\",color:d,fontWeight:n,textAlign:\"start\",background:m,borderBottom:C,transition:`background ${p} ease`,\"&[colspan]:not([colspan='1'])\":{textAlign:\"center\"},[`&:not(:last-child):not(${t}-selection-column):not(${t}-row-expand-icon-cell):not([colspan])::before`]:{position:\"absolute\",top:\"50%\",insetInlineEnd:0,width:1,height:\"1.6em\",backgroundColor:g,transform:\"translateY(-50%)\",transition:`background-color ${p}`,content:'\"\"'}},\"> tr:not(:last-child) > th[colspan]\":{borderBottom:0}},[`${t}:not(${t}-bordered)`]:{[`${t}-tbody`]:{\"> tr\":{\"> td\":{borderTop:C,borderBottom:\"transparent\"},\"&:last-child > td\":{borderBottom:C},[`&:first-child > td,\n              &${t}-measure-row + tr > td`]:{borderTop:\"none\",borderTopColor:\"transparent\"}}}},[`${t}${t}-bordered`]:{[`${t}-tbody`]:{\"> tr\":{\"> td\":{borderBottom:C}}}},[`${t}-tbody`]:{\"> tr\":{\"> td\":{transition:`background ${p}, border-color ${p}`,[`\n              > ${t}-wrapper:only-child,\n              > ${t}-expanded-row-fixed > ${t}-wrapper:only-child\n            `]:{[t]:{marginBlock:`-${o}px`,marginInline:`${e.tableExpandColumnWidth-l}px -${l}px`,[`${t}-tbody > tr:last-child > td`]:{borderBottom:0,\"&:first-child, &:last-child\":{borderRadius:0}}}}},[`\n            &${t}-row:hover > td,\n            > td${t}-cell-row-hover\n          `]:{background:v},[`&${t}-row-selected`]:{\"> td\":{background:y},\"&:hover > td\":{background:b}}}},[`${t}-footer`]:{padding:`${o}px ${l}px`,color:S,background:$}})}},LV=Xe(\"Table\",e=>{const{controlItemBgActive:t,controlItemBgActiveHover:n,colorTextPlaceholder:o,colorTextHeading:l,colorSplit:r,colorBorderSecondary:a,fontSize:i,padding:s,paddingXS:c,paddingSM:u,controlHeight:d,colorFillAlter:p,colorIcon:m,colorIconHover:g,opacityLoading:v,colorBgContainer:y,borderRadiusLG:b,colorFillContent:S,colorFillSecondary:$,controlInteractiveSize:w}=e,C=new vt(m),_=new vt(g),x=t,P=2,E=new vt($).onBackground(y).toHexString(),M=new vt(S).onBackground(y).toHexString(),O=new vt(p).onBackground(y).toHexString(),R=Le(e,{tableFontSize:i,tableBg:y,tableRadius:b,tablePaddingVertical:s,tablePaddingHorizontal:s,tablePaddingVerticalMiddle:u,tablePaddingHorizontalMiddle:c,tablePaddingVerticalSmall:c,tablePaddingHorizontalSmall:c,tableBorderColor:a,tableHeaderTextColor:l,tableHeaderBg:O,tableFooterTextColor:l,tableFooterBg:O,tableHeaderCellSplitColor:a,tableHeaderSortBg:E,tableHeaderSortHoverBg:M,tableHeaderIconColor:C.clone().setAlpha(C.getAlpha()*v).toRgbString(),tableHeaderIconColorHover:_.clone().setAlpha(_.getAlpha()*v).toRgbString(),tableBodySortBg:O,tableFixedHeaderSortActiveBg:E,tableHeaderFilterActiveBg:S,tableFilterDropdownBg:y,tableRowHoverBg:O,tableSelectedRowBg:x,tableSelectedRowHoverBg:n,zIndexTableFixed:P,zIndexTableSticky:P+1,tableFontSizeMiddle:i,tableFontSizeSmall:i,tableSelectionColumnWidth:d,tableExpandIconBg:y,tableExpandColumnWidth:w+2*e.padding,tableExpandedRowBg:p,tableFilterDropdownWidth:120,tableFilterDropdownHeight:264,tableFilterDropdownSearchWidth:140,tableScrollThumbSize:8,tableScrollThumbBg:o,tableScrollThumbBgHover:l,tableScrollBg:r});return[BV(R),OV(R),$S(R),kV(R),PV(R),xV(R),EV(R),IV(R),$S(R),_V(R),AV(R),TV(R),NV(R),wV(R),DV(R),RV(R),MV(R)]}),FV=[],E2=()=>({prefixCls:ke(),columns:ct(),rowKey:Fe([String,Function]),tableLayout:ke(),rowClassName:Fe([String,Function]),title:de(),footer:de(),id:ke(),showHeader:ye(),components:De(),customRow:de(),customHeaderRow:de(),direction:ke(),expandFixed:Fe([Boolean,String]),expandColumnWidth:Number,expandedRowKeys:ct(),defaultExpandedRowKeys:ct(),expandedRowRender:de(),expandRowByClick:ye(),expandIcon:de(),onExpand:de(),onExpandedRowsChange:de(),\"onUpdate:expandedRowKeys\":de(),defaultExpandAllRows:ye(),indentSize:Number,expandIconColumnIndex:Number,showExpandColumn:ye(),expandedRowClassName:de(),childrenColumnName:ke(),rowExpandable:de(),sticky:Fe([Boolean,Object]),dropdownPrefixCls:String,dataSource:ct(),pagination:Fe([Boolean,Object]),loading:Fe([Boolean,Object]),size:ke(),bordered:ye(),locale:De(),onChange:de(),onResizeColumn:de(),rowSelection:De(),getPopupContainer:de(),scroll:De(),sortDirections:ct(),showSorterTooltip:Fe([Boolean,Object],!0),transformCellText:de()}),zV=ne({name:\"InternalTable\",inheritAttrs:!1,props:Je(h(h({},E2()),{contextSlots:De()}),{rowKey:\"key\"}),setup(e,t){let{attrs:n,slots:o,expose:l,emit:r}=t;Ot(!(typeof e.rowKey==\"function\"&&e.rowKey.length>1),\"Table\",\"`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.\"),Zj(I(()=>e.contextSlots)),Qj({onResizeColumn:(ge,Se)=>{r(\"resizeColumn\",ge,Se)}});const a=Ma(),i=I(()=>{const ge=new Set(Object.keys(a.value).filter(Se=>a.value[Se]));return e.columns.filter(Se=>!Se.responsive||Se.responsive.some(X=>ge.has(X)))}),{size:s,renderEmpty:c,direction:u,prefixCls:d,configProvider:p}=Te(\"table\",e),[m,g]=LV(d),v=I(()=>{var ge;return e.transformCellText||((ge=p.transformCellText)===null||ge===void 0?void 0:ge.value)}),[y]=$o(\"Table\",En.Table,Ve(e,\"locale\")),b=I(()=>e.dataSource||FV),S=I(()=>p.getPrefixCls(\"dropdown\",e.dropdownPrefixCls)),$=I(()=>e.childrenColumnName||\"children\"),w=I(()=>b.value.some(ge=>ge?.[$.value])?\"nest\":e.expandedRowRender?\"row\":null),C=gt({body:null}),_=ge=>{h(C,ge)},x=I(()=>typeof e.rowKey==\"function\"?e.rowKey:ge=>ge?.[e.rowKey]),[P]=WW(b,$,x),E={},M=function(ge,Se){let X=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{pagination:U,scroll:ie,onChange:ve}=e,me=h(h({},E),ge);X&&(E.resetPagination(),me.pagination.current&&(me.pagination.current=1),U&&U.onChange&&U.onChange(1,me.pagination.pageSize)),ie&&ie.scrollToFirstRowOnChange!==!1&&C.body&&av(0,{getContainer:()=>C.body}),ve?.(me.pagination,me.filters,me.sorter,{currentDataSource:SS(gm(b.value,me.sorterStates,$.value),me.filterStates),action:Se})},O=(ge,Se)=>{M({sorter:ge,sorterStates:Se},\"sort\",!1)},[R,D,z,T]=UW({prefixCls:d,mergedColumns:i,onSorterChange:O,sortDirections:I(()=>e.sortDirections||[\"ascend\",\"descend\"]),tableLocale:y,showSorterTooltip:Ve(e,\"showSorterTooltip\")}),k=I(()=>gm(b.value,D.value,$.value)),B=(ge,Se)=>{M({filters:ge,filterStates:Se},\"filter\",!0)},[L,N,F]=yV({prefixCls:d,locale:y,dropdownPrefixCls:S,mergedColumns:i,onFilterChange:B,getPopupContainer:Ve(e,\"getPopupContainer\")}),j=I(()=>SS(k.value,N.value)),[H]=CV(Ve(e,\"contextSlots\")),K=I(()=>{const ge={},Se=F.value;return Object.keys(Se).forEach(X=>{Se[X]!==null&&(ge[X]=Se[X])}),h(h({},z.value),{filters:ge})}),[G]=SV(K),V=(ge,Se)=>{M({pagination:h(h({},E.pagination),{current:ge,pageSize:Se})},\"paginate\")},[q,Q]=jW(I(()=>j.value.length),Ve(e,\"pagination\"),V);ze(()=>{E.sorter=T.value,E.sorterStates=D.value,E.filters=F.value,E.filterStates=N.value,E.pagination=e.pagination===!1?{}:HW(q.value,e.pagination),E.resetPagination=Q});const oe=I(()=>{if(e.pagination===!1||!q.value.pageSize)return j.value;const{current:ge=1,total:Se,pageSize:X=dm}=q.value;return Ot(ge>0,\"Table\",\"`current` should be positive number.\"),j.value.length<Se?j.value.length>X?j.value.slice((ge-1)*X,ge*X):j.value:j.value.slice((ge-1)*X,ge*X)});ze(()=>{it(()=>{const{total:ge,pageSize:Se=dm}=q.value;j.value.length<ge&&j.value.length>Se&&Ot(!1,\"Table\",\"`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.\")})},{flush:\"post\"});const le=I(()=>e.showExpandColumn===!1?-1:w.value===\"nest\"&&e.expandIconColumnIndex===void 0?e.rowSelection?1:0:e.expandIconColumnIndex>0&&e.rowSelection?e.expandIconColumnIndex-1:e.expandIconColumnIndex),Y=Z();pe(()=>e.rowSelection,()=>{Y.value=e.rowSelection?h({},e.rowSelection):e.rowSelection},{deep:!0,immediate:!0});const[J,ce]=KW(Y,{prefixCls:d,data:j,pageData:oe,getRowKey:x,getRecordByKey:P,expandType:w,childrenColumnName:$,locale:y,getPopupContainer:I(()=>e.getPopupContainer)}),ue=(ge,Se,X)=>{let U;const{rowClassName:ie}=e;return typeof ie==\"function\"?U=re(ie(ge,Se,X)):U=re(ie),re({[`${d.value}-row-selected`]:ce.value.has(x.value(ge,Se))},U)};l({selectedKeySet:ce});const be=I(()=>typeof e.indentSize==\"number\"?e.indentSize:15),Ce=ge=>G(J(L(R(H(ge)))));return()=>{var ge;const{expandIcon:Se=o.expandIcon||$V(y.value),pagination:X,loading:U,bordered:ie}=e;let ve,me;if(X!==!1&&(!((ge=q.value)===null||ge===void 0)&&ge.total)){let ae;q.value.size?ae=q.value.size:ae=s.value===\"small\"||s.value===\"middle\"?\"small\":void 0;const fe=Re=>f(wd,A(A({},q.value),{},{class:[`${d.value}-pagination ${d.value}-pagination-${Re}`,q.value.class],size:ae}),null),Pe=u.value===\"rtl\"?\"left\":\"right\",{position:Oe}=q.value;if(Oe!==null&&Array.isArray(Oe)){const Re=Oe.find(_e=>_e.includes(\"top\")),$e=Oe.find(_e=>_e.includes(\"bottom\")),xe=Oe.every(_e=>`${_e}`==\"none\");!Re&&!$e&&!xe&&(me=fe(Pe)),Re&&(ve=fe(Re.toLowerCase().replace(\"top\",\"\"))),$e&&(me=fe($e.toLowerCase().replace(\"bottom\",\"\")))}else me=fe(Pe)}let he;typeof U==\"boolean\"?he={spinning:U}:typeof U==\"object\"&&(he=h({spinning:!0},U));const se=re(`${d.value}-wrapper`,{[`${d.value}-wrapper-rtl`]:u.value===\"rtl\"},n.class,g.value),te=lt(e,[\"columns\"]);return m(f(\"div\",{class:se,style:n.style},[f(Ko,A({spinning:!1},he),{default:()=>[ve,f(FW,A(A(A({},n),te),{},{expandedRowKeys:e.expandedRowKeys,defaultExpandedRowKeys:e.defaultExpandedRowKeys,expandIconColumnIndex:le.value,indentSize:be.value,expandIcon:Se,columns:i.value,direction:u.value,prefixCls:d.value,class:re({[`${d.value}-middle`]:s.value===\"middle\",[`${d.value}-small`]:s.value===\"small\",[`${d.value}-bordered`]:ie,[`${d.value}-empty`]:b.value.length===0}),data:oe.value,rowKey:x.value,rowClassName:ue,internalHooks:um,internalRefs:C,onUpdateInternalRefs:_,transformColumns:Ce,transformCellText:v.value}),h(h({},o),{emptyText:()=>{var ae,fe;return((ae=o.emptyText)===null||ae===void 0?void 0:ae.call(o))||((fe=e.locale)===null||fe===void 0?void 0:fe.emptyText)||c(\"Table\")}})),me]})]))}}}),Lf=ne({name:\"ATable\",inheritAttrs:!1,props:Je(E2(),{rowKey:\"key\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,expose:l}=t;const r=Z();return l({table:r}),()=>{var a;const i=e.columns||g2((a=o.default)===null||a===void 0?void 0:a.call(o));return f(zV,A(A(A({ref:r},n),e),{},{columns:i||[],expandedRowRender:o.expandedRowRender||e.expandedRowRender,contextSlots:h({},o)}),o)}}}),_c=ne({name:\"ATableColumn\",slots:Object,render(){return null}}),Ic=ne({name:\"ATableColumnGroup\",slots:Object,__ANT_TABLE_COLUMN_GROUP:!0,render(){return null}}),xu=PW,wu=EW,Pc=h(MW,{Cell:wu,Row:xu,name:\"ATableSummary\"}),HV=h(Lf,{SELECTION_ALL:fm,SELECTION_INVERT:pm,SELECTION_NONE:mm,SELECTION_COLUMN:tl,EXPAND_COLUMN:Tl,Column:_c,ColumnGroup:Ic,Summary:Pc,install:e=>(e.component(Pc.name,Pc),e.component(wu.name,wu),e.component(xu.name,xu),e.component(Lf.name,Lf),e.component(_c.name,_c),e.component(Ic.name,Ic),e)}),jV={prefixCls:String,placeholder:String,value:String,handleClear:Function,disabled:{type:Boolean,default:void 0},onChange:Function},WV=ne({compatConfig:{MODE:3},name:\"Search\",inheritAttrs:!1,props:Je(jV,{placeholder:\"\"}),emits:[\"change\"],setup(e,t){let{emit:n}=t;const o=l=>{var r;n(\"change\",l),l.target.value===\"\"&&((r=e.handleClear)===null||r===void 0||r.call(e))};return()=>{const{placeholder:l,value:r,prefixCls:a,disabled:i}=e;return f(Lt,{placeholder:l,class:a,value:r,onChange:o,disabled:i,allowClear:!0},{prefix:()=>f(Pu,null,null)})}}});function VV(){}const KV={renderedText:W.any,renderedEl:W.any,item:W.any,checked:ye(),prefixCls:String,disabled:ye(),showRemove:ye(),onClick:Function,onRemove:Function},GV=ne({compatConfig:{MODE:3},name:\"ListItem\",inheritAttrs:!1,props:KV,emits:[\"click\",\"remove\"],setup(e,t){let{emit:n}=t;return()=>{const{renderedText:o,renderedEl:l,item:r,checked:a,disabled:i,prefixCls:s,showRemove:c}=e,u=re({[`${s}-content-item`]:!0,[`${s}-content-item-disabled`]:i||r.disabled});let d;return(typeof o==\"string\"||typeof o==\"number\")&&(d=String(o)),f(Pr,{componentName:\"Transfer\",defaultLocale:En.Transfer},{default:p=>{const m=f(\"span\",{class:`${s}-content-item-text`},[l]);return c?f(\"li\",{class:u,title:d},[m,f(Su,{disabled:i||r.disabled,class:`${s}-content-item-remove`,\"aria-label\":p.remove,onClick:()=>{n(\"remove\",r)}},{default:()=>[f(r$,null,null)]})]):f(\"li\",{class:u,title:d,onClick:i||r.disabled?VV:()=>{n(\"click\",r)}},[f(Jn,{class:`${s}-checkbox`,checked:a,disabled:i||r.disabled},null),m])}})}}}),XV={prefixCls:String,filteredRenderItems:W.array.def([]),selectedKeys:W.array,disabled:ye(),showRemove:ye(),pagination:W.any,onItemSelect:Function,onScroll:Function,onItemRemove:Function};function UV(e){if(!e)return null;const t={pageSize:10,simple:!0,showSizeChanger:!1,showLessItems:!1};return typeof e==\"object\"?h(h({},t),e):t}const YV=ne({compatConfig:{MODE:3},name:\"ListBody\",inheritAttrs:!1,props:XV,emits:[\"itemSelect\",\"itemRemove\",\"scroll\"],setup(e,t){let{emit:n,expose:o}=t;const l=Z(1),r=d=>{const{selectedKeys:p}=e,m=p.indexOf(d.key)>=0;n(\"itemSelect\",d.key,!m)},a=d=>{n(\"itemRemove\",[d.key])},i=d=>{n(\"scroll\",d)},s=I(()=>UV(e.pagination));pe([s,()=>e.filteredRenderItems],()=>{if(s.value){const d=Math.ceil(e.filteredRenderItems.length/s.value.pageSize);l.value=Math.min(l.value,d)}},{immediate:!0});const c=I(()=>{const{filteredRenderItems:d}=e;let p=d;return s.value&&(p=d.slice((l.value-1)*s.value.pageSize,l.value*s.value.pageSize)),p}),u=d=>{l.value=d};return o({items:c}),()=>{const{prefixCls:d,filteredRenderItems:p,selectedKeys:m,disabled:g,showRemove:v}=e;let y=null;s.value&&(y=f(wd,{simple:s.value.simple,showSizeChanger:s.value.showSizeChanger,showLessItems:s.value.showLessItems,size:\"small\",disabled:g,class:`${d}-pagination`,total:p.length,pageSize:s.value.pageSize,current:l.value,onChange:u},null));const b=c.value.map(S=>{let{renderedEl:$,renderedText:w,item:C}=S;const{disabled:_}=C,x=m.indexOf(C.key)>=0;return f(GV,{disabled:g||_,key:C.key,item:C,renderedText:w,renderedEl:$,checked:x,prefixCls:d,onClick:r,onRemove:a,showRemove:v},null)});return f(He,null,[f(\"ul\",{class:re(`${d}-content`,{[`${d}-content-show-remove`]:v}),onScroll:i},[b]),y])}}}),ym=e=>{const t=new Map;return e.forEach((n,o)=>{t.set(n,o)}),t},qV=e=>{const t=new Map;return e.forEach((n,o)=>{let{disabled:l,key:r}=n;l&&t.set(r,o)}),t},ZV=()=>null;function QV(e){return!!(e&&!Gt(e)&&Object.prototype.toString.call(e)===\"[object Object]\")}function Ms(e){return e.filter(t=>!t.disabled).map(t=>t.key)}const JV={prefixCls:String,dataSource:ct([]),filter:String,filterOption:Function,checkedKeys:W.arrayOf(W.string),handleFilter:Function,handleClear:Function,renderItem:Function,showSearch:ye(!1),searchPlaceholder:String,notFoundContent:W.any,itemUnit:String,itemsUnit:String,renderList:W.any,disabled:ye(),direction:ke(),showSelectAll:ye(),remove:String,selectAll:String,selectCurrent:String,selectInvert:String,removeAll:String,removeCurrent:String,selectAllLabel:W.any,showRemove:ye(),pagination:W.any,onItemSelect:Function,onItemSelectAll:Function,onItemRemove:Function,onScroll:Function},CS=ne({compatConfig:{MODE:3},name:\"TransferList\",inheritAttrs:!1,props:JV,slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const l=Z(\"\"),r=Z(),a=Z(),i=(C,_)=>{let x=C?C(_):null;const P=!!x&&kt(x).length>0;return P||(x=f(YV,A(A({},_),{},{ref:a}),null)),{customize:P,bodyContent:x}},s=C=>{const{renderItem:_=ZV}=e,x=_(C),P=QV(x);return{renderedText:P?x.value:x,renderedEl:P?x.label:x,item:C}},c=Z([]),u=Z([]);ze(()=>{const C=[],_=[];e.dataSource.forEach(x=>{const P=s(x),{renderedText:E}=P;if(l.value&&l.value.trim()&&!b(E,x))return null;C.push(x),_.push(P)}),c.value=C,u.value=_});const d=I(()=>{const{checkedKeys:C}=e;if(C.length===0)return\"none\";const _=ym(C);return c.value.every(x=>_.has(x.key)||!!x.disabled)?\"all\":\"part\"}),p=I(()=>Ms(c.value)),m=(C,_)=>Array.from(new Set([...C,...e.checkedKeys])).filter(x=>_.indexOf(x)===-1),g=C=>{let{disabled:_,prefixCls:x}=C;var P;const E=d.value===\"all\";return f(Jn,{disabled:((P=e.dataSource)===null||P===void 0?void 0:P.length)===0||_,checked:E,indeterminate:d.value===\"part\",class:`${x}-checkbox`,onChange:()=>{const O=p.value;e.onItemSelectAll(m(E?[]:O,E?e.checkedKeys:[]))}},null)},v=C=>{var _;const{target:{value:x}}=C;l.value=x,(_=e.handleFilter)===null||_===void 0||_.call(e,C)},y=C=>{var _;l.value=\"\",(_=e.handleClear)===null||_===void 0||_.call(e,C)},b=(C,_)=>{const{filterOption:x}=e;return x?x(l.value,_):C.includes(l.value)},S=(C,_)=>{const{itemsUnit:x,itemUnit:P,selectAllLabel:E}=e;if(E)return typeof E==\"function\"?E({selectedCount:C,totalCount:_}):E;const M=_>1?x:P;return f(He,null,[(C>0?`${C}/`:\"\")+_,bt(\" \"),M])},$=I(()=>Array.isArray(e.notFoundContent)?e.notFoundContent[e.direction===\"left\"?0:1]:e.notFoundContent),w=(C,_,x,P,E,M)=>{const O=E?f(\"div\",{class:`${C}-body-search-wrapper`},[f(WV,{prefixCls:`${C}-search`,onChange:v,handleClear:y,placeholder:_,value:l.value,disabled:M},null)]):null;let R;const{onEvents:D}=Xm(n),{bodyContent:z,customize:T}=i(P,h(h(h({},e),{filteredItems:c.value,filteredRenderItems:u.value,selectedKeys:x}),D));return T?R=f(\"div\",{class:`${C}-body-customize-wrapper`},[z]):R=c.value.length?z:f(\"div\",{class:`${C}-body-not-found`},[$.value]),f(\"div\",{class:E?`${C}-body ${C}-body-with-search`:`${C}-body`,ref:r},[O,R])};return()=>{var C,_;const{prefixCls:x,checkedKeys:P,disabled:E,showSearch:M,searchPlaceholder:O,selectAll:R,selectCurrent:D,selectInvert:z,removeAll:T,removeCurrent:k,renderList:B,onItemSelectAll:L,onItemRemove:N,showSelectAll:F=!0,showRemove:j,pagination:H}=e,K=(C=o.footer)===null||C===void 0?void 0:C.call(o,h({},e)),G=re(x,{[`${x}-with-pagination`]:!!H,[`${x}-with-footer`]:!!K}),V=w(x,O,P,B,M,E),q=K?f(\"div\",{class:`${x}-footer`},[K]):null,Q=!j&&!H&&g({disabled:E,prefixCls:x});let oe=null;j?oe=f(Ht,null,{default:()=>[H&&f(Ht.Item,{key:\"removeCurrent\",onClick:()=>{const Y=Ms((a.value.items||[]).map(J=>J.item));N?.(Y)}},{default:()=>[k]}),f(Ht.Item,{key:\"removeAll\",onClick:()=>{N?.(p.value)}},{default:()=>[T]})]}):oe=f(Ht,null,{default:()=>[f(Ht.Item,{key:\"selectAll\",onClick:()=>{const Y=p.value;L(m(Y,[]))}},{default:()=>[R]}),H&&f(Ht.Item,{onClick:()=>{const Y=Ms((a.value.items||[]).map(J=>J.item));L(m(Y,[]))}},{default:()=>[D]}),f(Ht.Item,{key:\"selectInvert\",onClick:()=>{let Y;H?Y=Ms((a.value.items||[]).map(be=>be.item)):Y=p.value;const J=new Set(P),ce=[],ue=[];Y.forEach(be=>{J.has(be)?ue.push(be):ce.push(be)}),L(m(ce,ue))}},{default:()=>[z]})]});const le=f(vo,{class:`${x}-header-dropdown`,overlay:oe,disabled:E},{default:()=>[f(_a,null,null)]});return f(\"div\",{class:G,style:n.style},[f(\"div\",{class:`${x}-header`},[F?f(He,null,[Q,le]):null,f(\"span\",{class:`${x}-header-selected`},[f(\"span\",null,[S(P.length,c.value.length)]),f(\"span\",{class:`${x}-header-title`},[(_=o.titleText)===null||_===void 0?void 0:_.call(o)])])]),V,q])}}});function xS(){}const Yg=e=>{const{disabled:t,moveToLeft:n=xS,moveToRight:o=xS,leftArrowText:l=\"\",rightArrowText:r=\"\",leftActive:a,rightActive:i,class:s,style:c,direction:u,oneWay:d}=e;return f(\"div\",{class:s,style:c},[f(_t,{type:\"primary\",size:\"small\",disabled:t||!i,onClick:o,icon:u!==\"rtl\"?f(Ao,null,null):f(Hl,null,null)},{default:()=>[r]}),!d&&f(_t,{type:\"primary\",size:\"small\",disabled:t||!a,onClick:n,icon:u!==\"rtl\"?f(Hl,null,null):f(Ao,null,null)},{default:()=>[l]})])};Yg.displayName=\"Operation\";Yg.inheritAttrs=!1;const eK=e=>{const{antCls:t,componentCls:n,listHeight:o,controlHeightLG:l,marginXXS:r,margin:a}=e,i=`${t}-table`,s=`${t}-input`;return{[`${n}-customize-list`]:{[`${n}-list`]:{flex:\"1 1 50%\",width:\"auto\",height:\"auto\",minHeight:o},[`${i}-wrapper`]:{[`${i}-small`]:{border:0,borderRadius:0,[`${i}-selection-column`]:{width:l,minWidth:l}},[`${i}-pagination${i}-pagination`]:{margin:`${a}px 0 ${r}px`}},[`${s}[disabled]`]:{backgroundColor:\"transparent\"}}}},wS=(e,t)=>{const{componentCls:n,colorBorder:o}=e;return{[`${n}-list`]:{borderColor:t,\"&-search:not([disabled])\":{borderColor:o}}}},tK=e=>{const{componentCls:t}=e;return{[`${t}-status-error`]:h({},wS(e,e.colorError)),[`${t}-status-warning`]:h({},wS(e,e.colorWarning))}},nK=e=>{const{componentCls:t,colorBorder:n,colorSplit:o,lineWidth:l,transferItemHeight:r,transferHeaderHeight:a,transferHeaderVerticalPadding:i,transferItemPaddingVertical:s,controlItemBgActive:c,controlItemBgActiveHover:u,colorTextDisabled:d,listHeight:p,listWidth:m,listWidthLG:g,fontSizeIcon:v,marginXS:y,paddingSM:b,lineType:S,iconCls:$,motionDurationSlow:w}=e;return{display:\"flex\",flexDirection:\"column\",width:m,height:p,border:`${l}px ${S} ${n}`,borderRadius:e.borderRadiusLG,\"&-with-pagination\":{width:g,height:\"auto\"},\"&-search\":{[`${$}-search`]:{color:d}},\"&-header\":{display:\"flex\",flex:\"none\",alignItems:\"center\",height:a,padding:`${i-l}px ${b}px ${i}px`,color:e.colorText,background:e.colorBgContainer,borderBottom:`${l}px ${S} ${o}`,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`,\"> *:not(:last-child)\":{marginInlineEnd:4},\"> *\":{flex:\"none\"},\"&-title\":h(h({},Xt),{flex:\"auto\",textAlign:\"end\"}),\"&-dropdown\":h(h({},Tr()),{fontSize:v,transform:\"translateY(10%)\",cursor:\"pointer\",\"&[disabled]\":{cursor:\"not-allowed\"}})},\"&-body\":{display:\"flex\",flex:\"auto\",flexDirection:\"column\",overflow:\"hidden\",fontSize:e.fontSize,\"&-search-wrapper\":{position:\"relative\",flex:\"none\",padding:b}},\"&-content\":{flex:\"auto\",margin:0,padding:0,overflow:\"auto\",listStyle:\"none\",\"&-item\":{display:\"flex\",alignItems:\"center\",minHeight:r,padding:`${s}px ${b}px`,transition:`all ${w}`,\"> *:not(:last-child)\":{marginInlineEnd:y},\"> *\":{flex:\"none\"},\"&-text\":h(h({},Xt),{flex:\"auto\"}),\"&-remove\":{position:\"relative\",color:n,cursor:\"pointer\",transition:`all ${w}`,\"&:hover\":{color:e.colorLinkHover},\"&::after\":{position:\"absolute\",insert:`-${s}px -50%`,content:'\"\"'}},[`&:not(${t}-list-content-item-disabled)`]:{\"&:hover\":{backgroundColor:e.controlItemBgHover,cursor:\"pointer\"},[`&${t}-list-content-item-checked:hover`]:{backgroundColor:u}},\"&-checked\":{backgroundColor:c},\"&-disabled\":{color:d,cursor:\"not-allowed\"}},[`&-show-remove ${t}-list-content-item:not(${t}-list-content-item-disabled):hover`]:{background:\"transparent\",cursor:\"default\"}},\"&-pagination\":{padding:`${e.paddingXS}px 0`,textAlign:\"end\",borderTop:`${l}px ${S} ${o}`},\"&-body-not-found\":{flex:\"none\",width:\"100%\",margin:\"auto 0\",color:d,textAlign:\"center\"},\"&-footer\":{borderTop:`${l}px ${S} ${o}`},\"&-checkbox\":{lineHeight:1}}},oK=e=>{const{antCls:t,iconCls:n,componentCls:o,transferHeaderHeight:l,marginXS:r,marginXXS:a,fontSizeIcon:i,fontSize:s,lineHeight:c}=e;return{[o]:h(h({},qe(e)),{position:\"relative\",display:\"flex\",alignItems:\"stretch\",[`${o}-disabled`]:{[`${o}-list`]:{background:e.colorBgContainerDisabled}},[`${o}-list`]:nK(e),[`${o}-operation`]:{display:\"flex\",flex:\"none\",flexDirection:\"column\",alignSelf:\"center\",margin:`0 ${r}px`,verticalAlign:\"middle\",[`${t}-btn`]:{display:\"block\",\"&:first-child\":{marginBottom:a},[n]:{fontSize:i}}},[`${t}-empty-image`]:{maxHeight:l/2-Math.round(s*c)}})}},lK=e=>{const{componentCls:t}=e;return{[`${t}-rtl`]:{direction:\"rtl\"}}},rK=Xe(\"Transfer\",e=>{const{fontSize:t,lineHeight:n,lineWidth:o,controlHeightLG:l,controlHeight:r}=e,a=Math.round(t*n),i=l,s=r,c=Le(e,{transferItemHeight:s,transferHeaderHeight:i,transferHeaderVerticalPadding:Math.ceil((i-o-a)/2),transferItemPaddingVertical:(s-a)/2});return[oK(c),eK(c),tK(c),lK(c)]},{listWidth:180,listHeight:200,listWidthLG:250}),aK=()=>({id:String,prefixCls:String,dataSource:ct([]),disabled:ye(),targetKeys:ct(),selectedKeys:ct(),render:de(),listStyle:Fe([Function,Object],()=>({})),operationStyle:De(void 0),titles:ct(),operations:ct(),showSearch:ye(!1),filterOption:de(),searchPlaceholder:String,notFoundContent:W.any,locale:De(),rowKey:de(),showSelectAll:ye(),selectAllLabels:ct(),children:de(),oneWay:ye(),pagination:Fe([Object,Boolean]),status:ke(),onChange:de(),onSelectChange:de(),onSearch:de(),onScroll:de(),\"onUpdate:targetKeys\":de(),\"onUpdate:selectedKeys\":de()}),iK=ne({compatConfig:{MODE:3},name:\"ATransfer\",inheritAttrs:!1,props:aK(),slots:Object,setup(e,t){let{emit:n,attrs:o,slots:l,expose:r}=t;const{configProvider:a,prefixCls:i,direction:s}=Te(\"transfer\",e),[c,u]=rK(i),d=Z([]),p=Z([]),m=Jt(),g=un.useInject(),v=I(()=>Ro(g.status,e.status));pe(()=>e.selectedKeys,()=>{var V,q;d.value=((V=e.selectedKeys)===null||V===void 0?void 0:V.filter(Q=>e.targetKeys.indexOf(Q)===-1))||[],p.value=((q=e.selectedKeys)===null||q===void 0?void 0:q.filter(Q=>e.targetKeys.indexOf(Q)>-1))||[]},{immediate:!0});const y=(V,q)=>{const Q={notFoundContent:q(\"Transfer\")},oe=Qt(l,e,\"notFoundContent\");return oe&&(Q.notFoundContent=oe),e.searchPlaceholder!==void 0&&(Q.searchPlaceholder=e.searchPlaceholder),h(h(h({},V),Q),e.locale)},b=V=>{const{targetKeys:q=[],dataSource:Q=[]}=e,oe=V===\"right\"?d.value:p.value,le=qV(Q),Y=oe.filter(be=>!le.has(be)),J=ym(Y),ce=V===\"right\"?Y.concat(q):q.filter(be=>!J.has(be)),ue=V===\"right\"?\"left\":\"right\";V===\"right\"?d.value=[]:p.value=[],n(\"update:targetKeys\",ce),x(ue,[]),n(\"change\",ce,V,Y),m.onFieldChange()},S=()=>{b(\"left\")},$=()=>{b(\"right\")},w=(V,q)=>{x(V,q)},C=V=>w(\"left\",V),_=V=>w(\"right\",V),x=(V,q)=>{V===\"left\"?(e.selectedKeys||(d.value=q),n(\"update:selectedKeys\",[...q,...p.value]),n(\"selectChange\",q,jt(p.value))):(e.selectedKeys||(p.value=q),n(\"update:selectedKeys\",[...q,...d.value]),n(\"selectChange\",jt(d.value),q))},P=(V,q)=>{const Q=q.target.value;n(\"search\",V,Q)},E=V=>{P(\"left\",V)},M=V=>{P(\"right\",V)},O=V=>{n(\"search\",V,\"\")},R=()=>{O(\"left\")},D=()=>{O(\"right\")},z=(V,q,Q)=>{const oe=V===\"left\"?[...d.value]:[...p.value],le=oe.indexOf(q);le>-1&&oe.splice(le,1),Q&&oe.push(q),x(V,oe)},T=(V,q)=>z(\"left\",V,q),k=(V,q)=>z(\"right\",V,q),B=V=>{const{targetKeys:q=[]}=e,Q=q.filter(oe=>!V.includes(oe));n(\"update:targetKeys\",Q),n(\"change\",Q,\"left\",[...V])},L=(V,q)=>{n(\"scroll\",V,q)},N=V=>{L(\"left\",V)},F=V=>{L(\"right\",V)},j=(V,q)=>typeof V==\"function\"?V({direction:q}):V,H=Z([]),K=Z([]);ze(()=>{const{dataSource:V,rowKey:q,targetKeys:Q=[]}=e,oe=[],le=new Array(Q.length),Y=ym(Q);V.forEach(J=>{q&&(J.key=q(J)),Y.has(J.key)?le[Y.get(J.key)]=J:oe.push(J)}),H.value=oe,K.value=le}),r({handleSelectChange:x});const G=V=>{var q,Q,oe,le,Y,J;const{disabled:ce,operations:ue=[],showSearch:be,listStyle:Ce,operationStyle:ge,filterOption:Se,showSelectAll:X,selectAllLabels:U=[],oneWay:ie,pagination:ve,id:me=m.id.value}=e,{class:he,style:se}=o,te=l.children,ae=!te&&ve,fe=a.renderEmpty,Pe=y(V,fe),{footer:Oe}=l,Re=e.render||l.render,$e=p.value.length>0,xe=d.value.length>0,_e=re(i.value,he,{[`${i.value}-disabled`]:ce,[`${i.value}-customize-list`]:!!te,[`${i.value}-rtl`]:s.value===\"rtl\"},Cn(i.value,v.value,g.hasFeedback),u.value),Me=e.titles,je=(oe=(q=Me&&Me[0])!==null&&q!==void 0?q:(Q=l.leftTitle)===null||Q===void 0?void 0:Q.call(l))!==null&&oe!==void 0?oe:(Pe.titles||[\"\",\"\"])[0],Ae=(J=(le=Me&&Me[1])!==null&&le!==void 0?le:(Y=l.rightTitle)===null||Y===void 0?void 0:Y.call(l))!==null&&J!==void 0?J:(Pe.titles||[\"\",\"\"])[1];return f(\"div\",A(A({},o),{},{class:_e,style:se,id:me}),[f(CS,A({key:\"leftList\",prefixCls:`${i.value}-list`,dataSource:H.value,filterOption:Se,style:j(Ce,\"left\"),checkedKeys:d.value,handleFilter:E,handleClear:R,onItemSelect:T,onItemSelectAll:C,renderItem:Re,showSearch:be,renderList:te,onScroll:N,disabled:ce,direction:s.value===\"rtl\"?\"right\":\"left\",showSelectAll:X,selectAllLabel:U[0]||l.leftSelectAllLabel,pagination:ae},Pe),{titleText:()=>je,footer:Oe}),f(Yg,{key:\"operation\",class:`${i.value}-operation`,rightActive:xe,rightArrowText:ue[0],moveToRight:$,leftActive:$e,leftArrowText:ue[1],moveToLeft:S,style:ge,disabled:ce,direction:s.value,oneWay:ie},null),f(CS,A({key:\"rightList\",prefixCls:`${i.value}-list`,dataSource:K.value,filterOption:Se,style:j(Ce,\"right\"),checkedKeys:p.value,handleFilter:M,handleClear:D,onItemSelect:k,onItemSelectAll:_,onItemRemove:B,renderItem:Re,showSearch:be,renderList:te,onScroll:F,disabled:ce,direction:s.value===\"rtl\"?\"left\":\"right\",showSelectAll:X,selectAllLabel:U[1]||l.rightSelectAllLabel,showRemove:ie,pagination:ae},Pe),{titleText:()=>Ae,footer:Oe})])};return()=>c(f(Pr,{componentName:\"Transfer\",defaultLocale:En.Transfer,children:G},null))}}),sK=Dt(iK);function cK(e){return Array.isArray(e)?e:e!==void 0?[e]:[]}function uK(e){const{label:t,value:n,children:o}=e||{},l=n||\"value\";return{_title:t?[t]:[\"title\",\"label\"],value:l,key:l,children:o||\"children\"}}function Sm(e){return e.disabled||e.disableCheckbox||e.checkable===!1}function dK(e,t){const n=[];function o(l){l.forEach(r=>{n.push(r[t.value]);const a=r[t.children];a&&o(a)})}return o(e),n}function _S(e){return e==null}const M2=Symbol(\"TreeSelectContextPropsKey\");function fK(e){return et(M2,e)}function pK(){return nt(M2,{})}const mK={width:0,height:0,display:\"flex\",overflow:\"hidden\",opacity:0,border:0,padding:0,margin:0},vK=ne({compatConfig:{MODE:3},name:\"OptionList\",inheritAttrs:!1,setup(e,t){let{slots:n,expose:o}=t;const l=Bi(),r=Xu(),a=pK(),i=Z(),s=$v(()=>a.treeData,[()=>l.open,()=>a.treeData],C=>C[0]),c=I(()=>{const{checkable:C,halfCheckedKeys:_,checkedKeys:x}=r;return C?{checked:x,halfChecked:_}:null});pe(()=>l.open,()=>{it(()=>{var C;l.open&&!l.multiple&&r.checkedKeys.length&&((C=i.value)===null||C===void 0||C.scrollTo({key:r.checkedKeys[0]}))})},{immediate:!0,flush:\"post\"});const u=I(()=>String(l.searchValue).toLowerCase()),d=C=>u.value?String(C[r.treeNodeFilterProp]).toLowerCase().includes(u.value):!1,p=ee(r.treeDefaultExpandedKeys),m=ee(null);pe(()=>l.searchValue,()=>{l.searchValue&&(m.value=dK(jt(a.treeData),jt(a.fieldNames)))},{immediate:!0});const g=I(()=>r.treeExpandedKeys?r.treeExpandedKeys.slice():l.searchValue?m.value:p.value),v=C=>{var _;p.value=C,m.value=C,(_=r.onTreeExpand)===null||_===void 0||_.call(r,C)},y=C=>{C.preventDefault()},b=(C,_)=>{let{node:x}=_;var P,E;const{checkable:M,checkedKeys:O}=r;M&&Sm(x)||((P=a.onSelect)===null||P===void 0||P.call(a,x.key,{selected:!O.includes(x.key)}),l.multiple||(E=l.toggleOpen)===null||E===void 0||E.call(l,!1))},S=Z(null),$=I(()=>r.keyEntities[S.value]),w=C=>{S.value=C};return o({scrollTo:function(){for(var C,_,x=arguments.length,P=new Array(x),E=0;E<x;E++)P[E]=arguments[E];return(_=(C=i.value)===null||C===void 0?void 0:C.scrollTo)===null||_===void 0?void 0:_.call(C,...P)},onKeydown:C=>{var _;const{which:x}=C;switch(x){case we.UP:case we.DOWN:case we.LEFT:case we.RIGHT:(_=i.value)===null||_===void 0||_.onKeydown(C);break;case we.ENTER:{if($.value){const{selectable:P,value:E}=$.value.node||{};P!==!1&&b(null,{node:{key:S.value},selected:!r.checkedKeys.includes(E)})}break}case we.ESC:l.toggleOpen(!1)}},onKeyup:()=>{}}),()=>{var C;const{prefixCls:_,multiple:x,searchValue:P,open:E,notFoundContent:M=(C=n.notFoundContent)===null||C===void 0?void 0:C.call(n)}=l,{listHeight:O,listItemHeight:R,virtual:D,dropdownMatchSelectWidth:z,treeExpandAction:T}=a,{checkable:k,treeDefaultExpandAll:B,treeIcon:L,showTreeIcon:N,switcherIcon:F,treeLine:j,loadData:H,treeLoadedKeys:K,treeMotion:G,onTreeLoad:V,checkedKeys:q}=r;if(s.value.length===0)return f(\"div\",{role:\"listbox\",class:`${_}-empty`,onMousedown:y},[M]);const Q={fieldNames:a.fieldNames};return K&&(Q.loadedKeys=K),g.value&&(Q.expandedKeys=g.value),f(\"div\",{onMousedown:y},[$.value&&E&&f(\"span\",{style:mK,\"aria-live\":\"assertive\"},[$.value.node.value]),f(y2,A(A({ref:i,focusable:!1,prefixCls:`${_}-tree`,treeData:s.value,height:O,itemHeight:R,virtual:D!==!1&&z!==!1,multiple:x,icon:L,showIcon:N,switcherIcon:F,showLine:j,loadData:P?null:H,motion:G,activeKey:S.value,checkable:k,checkStrictly:!0,checkedKeys:c.value,selectedKeys:k?[]:q,defaultExpandAll:B},Q),{},{onActiveChange:w,onSelect:b,onCheck:b,onExpand:v,onLoad:V,filterTreeNode:d,expandAction:T}),h(h({},n),{checkable:r.customSlots.treeCheckable}))])}}}),gK=\"SHOW_ALL\",A2=\"SHOW_PARENT\",qg=\"SHOW_CHILD\";function IS(e,t,n,o){const l=new Set(e);return t===qg?e.filter(r=>{const a=n[r];return!(a&&a.children&&a.children.some(i=>{let{node:s}=i;return l.has(s[o.value])})&&a.children.every(i=>{let{node:s}=i;return Sm(s)||l.has(s[o.value])}))}):t===A2?e.filter(r=>{const a=n[r],i=a?a.parent:null;return!(i&&!Sm(i.node)&&l.has(i.key))}):e}const Ra=()=>null;Ra.inheritAttrs=!1;Ra.displayName=\"ATreeSelectNode\";Ra.isTreeSelectNode=!0;var hK=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function bK(e){return e&&e.type&&e.type.isTreeSelectNode}function yK(e){function t(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return kt(n).map(o=>{var l,r,a;if(!bK(o))return null;const i=o.children||{},s=o.key,c={};for(const[x,P]of Object.entries(o.props))c[Ia(x)]=P;const{isLeaf:u,checkable:d,selectable:p,disabled:m,disableCheckbox:g}=c,v={isLeaf:u||u===\"\"||void 0,checkable:d||d===\"\"||void 0,selectable:p||p===\"\"||void 0,disabled:m||m===\"\"||void 0,disableCheckbox:g||g===\"\"||void 0},y=h(h({},c),v),{title:b=(l=i.title)===null||l===void 0?void 0:l.call(i,y),switcherIcon:S=(r=i.switcherIcon)===null||r===void 0?void 0:r.call(i,y)}=c,$=hK(c,[\"title\",\"switcherIcon\"]),w=(a=i.default)===null||a===void 0?void 0:a.call(i),C=h(h(h({},$),{title:b,switcherIcon:S,key:s,isLeaf:u}),v),_=t(w);return _.length&&(C.children=_),C})}return t(e)}function $m(e){if(!e)return e;const t=h({},e);return\"props\"in t||Object.defineProperty(t,\"props\",{get(){return t}}),t}function SK(e,t,n,o,l,r){let a=null,i=null;function s(){function c(u){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"0\",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return u.map((m,g)=>{const v=`${d}-${g}`,y=m[r.value],b=n.includes(y),S=c(m[r.children]||[],v,b),$=f(Ra,m,{default:()=>[S.map(w=>w.node)]});if(t===y&&(a=$),b){const w={pos:v,node:$,children:S};return p||i.push(w),w}return null}).filter(m=>m)}i||(i=[],c(o),i.sort((u,d)=>{let{node:{props:{value:p}}}=u,{node:{props:{value:m}}}=d;const g=n.indexOf(p),v=n.indexOf(m);return g-v}))}Object.defineProperty(e,\"triggerNode\",{get(){return s(),a}}),Object.defineProperty(e,\"allCheckedNodes\",{get(){return s(),l?i:i.map(c=>{let{node:u}=c;return u})}})}function $K(e,t){let{id:n,pId:o,rootPId:l}=t;const r={},a=[];return e.map(s=>{const c=h({},s),u=c[n];return r[u]=c,c.key=c.key||u,c}).forEach(s=>{const c=s[o],u=r[c];u&&(u.children=u.children||[],u.children.push(s)),(c===l||!u&&l===null)&&a.push(s)}),a}function CK(e,t,n){const o=ee();return pe([n,e,t],()=>{const l=n.value;e.value?o.value=n.value?$K(jt(e.value),h({id:\"id\",pId:\"pId\",rootPId:null},l!==!0?l:{})):jt(e.value).slice():o.value=yK(jt(t.value))},{immediate:!0,deep:!0}),o}const xK=e=>{const t=ee({valueLabels:new Map}),n=ee();return pe(e,()=>{n.value=jt(e.value)},{immediate:!0}),[I(()=>{const{valueLabels:l}=t.value,r=new Map,a=n.value.map(i=>{var s;const{value:c}=i,u=(s=i.label)!==null&&s!==void 0?s:l.get(c);return r.set(c,u),h(h({},i),{label:u})});return t.value.valueLabels=r,a})]},wK=(e,t)=>{const n=ee(new Map),o=ee({});return ze(()=>{const l=t.value,r=Xi(e.value,{fieldNames:l,initWrapper:a=>h(h({},a),{valueEntities:new Map}),processEntity:(a,i)=>{const s=a.node[l.value];i.valueEntities.set(s,a)}});n.value=r.valueEntities,o.value=r.keyEntities}),{valueEntities:n,keyEntities:o}},_K=(e,t,n,o,l,r)=>{const a=ee([]),i=ee([]);return ze(()=>{let s=e.value.map(d=>{let{value:p}=d;return p}),c=t.value.map(d=>{let{value:p}=d;return p});const u=s.filter(d=>!o.value[d]);n.value&&({checkedKeys:s,halfCheckedKeys:c}=go(s,!0,o.value,l.value,r.value)),a.value=Array.from(new Set([...u,...s])),i.value=c}),[a,i]},IK=(e,t,n)=>{let{treeNodeFilterProp:o,filterTreeNode:l,fieldNames:r}=n;return I(()=>{const{children:a}=r.value,i=t.value,s=o?.value;if(!i||l.value===!1)return e.value;let c;if(typeof l.value==\"function\")c=l.value;else{const d=i.toUpperCase();c=(p,m)=>{const g=m[s];return String(g).toUpperCase().includes(d)}}function u(d){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const m=[];for(let g=0,v=d.length;g<v;g++){const y=d[g],b=y[a],S=p||c(i,$m(y)),$=u(b||[],S);(S||$.length)&&m.push(h(h({},y),{[a]:$}))}return m}return u(e.value)})};function D2(){return h(h({},lt(Uu(),[\"mode\"])),{prefixCls:String,id:String,value:{type:[String,Number,Object,Array]},defaultValue:{type:[String,Number,Object,Array]},onChange:{type:Function},searchValue:String,inputValue:String,onSearch:{type:Function},autoClearSearchValue:{type:Boolean,default:void 0},filterTreeNode:{type:[Boolean,Function],default:void 0},treeNodeFilterProp:String,onSelect:Function,onDeselect:Function,showCheckedStrategy:{type:String},treeNodeLabelProp:String,fieldNames:{type:Object},multiple:{type:Boolean,default:void 0},treeCheckable:{type:Boolean,default:void 0},treeCheckStrictly:{type:Boolean,default:void 0},labelInValue:{type:Boolean,default:void 0},treeData:{type:Array},treeDataSimpleMode:{type:[Boolean,Object],default:void 0},loadData:{type:Function},treeLoadedKeys:{type:Array},onTreeLoad:{type:Function},treeDefaultExpandAll:{type:Boolean,default:void 0},treeExpandedKeys:{type:Array},treeDefaultExpandedKeys:{type:Array},onTreeExpand:{type:Function},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,onDropdownVisibleChange:{type:Function},treeLine:{type:[Boolean,Object],default:void 0},treeIcon:W.any,showTreeIcon:{type:Boolean,default:void 0},switcherIcon:W.any,treeMotion:W.any,children:Array,treeExpandAction:String,showArrow:{type:Boolean,default:void 0},showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},placeholder:W.any,maxTagPlaceholder:{type:Function},dropdownPopupAlign:W.any,customSlots:Object})}function PK(e){return!e||typeof e!=\"object\"}const TK=ne({compatConfig:{MODE:3},name:\"TreeSelect\",inheritAttrs:!1,props:Je(D2(),{treeNodeFilterProp:\"value\",autoClearSearchValue:!0,showCheckedStrategy:qg,listHeight:200,listItemHeight:20,prefixCls:\"vc-tree-select\"}),setup(e,t){let{attrs:n,expose:o,slots:l}=t;const r=Cv(Ve(e,\"id\")),a=I(()=>e.treeCheckable&&!e.treeCheckStrictly),i=I(()=>e.treeCheckable||e.treeCheckStrictly),s=I(()=>e.treeCheckStrictly||e.labelInValue),c=I(()=>i.value||e.multiple),u=I(()=>uK(e.fieldNames)),[d,p]=Mt(\"\",{value:I(()=>e.searchValue!==void 0?e.searchValue:e.inputValue),postState:me=>me||\"\"}),m=me=>{var he;p(me),(he=e.onSearch)===null||he===void 0||he.call(e,me)},g=CK(Ve(e,\"treeData\"),Ve(e,\"children\"),Ve(e,\"treeDataSimpleMode\")),{keyEntities:v,valueEntities:y}=wK(g,u),b=me=>{const he=[],se=[];return me.forEach(te=>{y.value.has(te)?se.push(te):he.push(te)}),{missingRawValues:he,existRawValues:se}},S=IK(g,d,{fieldNames:u,treeNodeFilterProp:Ve(e,\"treeNodeFilterProp\"),filterTreeNode:Ve(e,\"filterTreeNode\")}),$=me=>{if(me){if(e.treeNodeLabelProp)return me[e.treeNodeLabelProp];const{_title:he}=u.value;for(let se=0;se<he.length;se+=1){const te=me[he[se]];if(te!==void 0)return te}}},w=me=>cK(me).map(se=>PK(se)?{value:se}:se),C=me=>w(me).map(se=>{let{label:te}=se;const{value:ae,halfChecked:fe}=se;let Pe;const Oe=y.value.get(ae);return Oe&&(te=te??$(Oe.node),Pe=Oe.node.disabled),{label:te,value:ae,halfChecked:fe,disabled:Pe}}),[_,x]=Mt(e.defaultValue,{value:Ve(e,\"value\")}),P=I(()=>w(_.value)),E=ee([]),M=ee([]);ze(()=>{const me=[],he=[];P.value.forEach(se=>{se.halfChecked?he.push(se):me.push(se)}),E.value=me,M.value=he});const O=I(()=>E.value.map(me=>me.value)),{maxLevel:R,levelEntities:D}=gd(v),[z,T]=_K(E,M,a,v,R,D),k=I(()=>{const se=IS(z.value,e.showCheckedStrategy,v.value,u.value).map(fe=>{var Pe,Oe,Re;return(Re=(Oe=(Pe=v.value[fe])===null||Pe===void 0?void 0:Pe.node)===null||Oe===void 0?void 0:Oe[u.value.value])!==null&&Re!==void 0?Re:fe}).map(fe=>{const Pe=E.value.find(Oe=>Oe.value===fe);return{value:fe,label:Pe?.label}}),te=C(se),ae=te[0];return!c.value&&ae&&_S(ae.value)&&_S(ae.label)?[]:te.map(fe=>{var Pe;return h(h({},fe),{label:(Pe=fe.label)!==null&&Pe!==void 0?Pe:fe.value})})}),[B]=xK(k),L=(me,he,se)=>{const te=C(me);if(x(te),e.autoClearSearchValue&&p(\"\"),e.onChange){let ae=me;a.value&&(ae=IS(me,e.showCheckedStrategy,v.value,u.value).map(je=>{const Ae=y.value.get(je);return Ae?Ae.node[u.value.value]:je}));const{triggerValue:fe,selected:Pe}=he||{triggerValue:void 0,selected:void 0};let Oe=ae;if(e.treeCheckStrictly){const Me=M.value.filter(je=>!ae.includes(je.value));Oe=[...Oe,...Me]}const Re=C(Oe),$e={preValue:E.value,triggerValue:fe};let xe=!0;(e.treeCheckStrictly||se===\"selection\"&&!Pe)&&(xe=!1),SK($e,fe,me,g.value,xe,u.value),i.value?$e.checked=Pe:$e.selected=Pe;const _e=s.value?Re:Re.map(Me=>Me.value);e.onChange(c.value?_e:_e[0],s.value?null:Re.map(Me=>Me.label),$e)}},N=(me,he)=>{let{selected:se,source:te}=he;var ae,fe,Pe;const Oe=jt(v.value),Re=jt(y.value),$e=Oe[me],xe=$e?.node,_e=(ae=xe?.[u.value.value])!==null&&ae!==void 0?ae:me;if(!c.value)L([_e],{selected:!0,triggerValue:_e},\"option\");else{let Me=se?[...O.value,_e]:z.value.filter(je=>je!==_e);if(a.value){const{missingRawValues:je,existRawValues:Ae}=b(Me),We=Ae.map(pt=>Re.get(pt).key);let at;se?{checkedKeys:at}=go(We,!0,Oe,R.value,D.value):{checkedKeys:at}=go(We,{halfCheckedKeys:T.value},Oe,R.value,D.value),Me=[...je,...at.map(pt=>Oe[pt].node[u.value.value])]}L(Me,{selected:se,triggerValue:_e},te||\"option\")}se||!c.value?(fe=e.onSelect)===null||fe===void 0||fe.call(e,_e,$m(xe)):(Pe=e.onDeselect)===null||Pe===void 0||Pe.call(e,_e,$m(xe))},F=me=>{if(e.onDropdownVisibleChange){const he={};Object.defineProperty(he,\"documentClickClose\",{get(){return!1}}),e.onDropdownVisibleChange(me,he)}},j=(me,he)=>{const se=me.map(te=>te.value);if(he.type===\"clear\"){L(se,{},\"selection\");return}he.values.length&&N(he.values[0].value,{selected:!1,source:\"selection\"})},{treeNodeFilterProp:H,loadData:K,treeLoadedKeys:G,onTreeLoad:V,treeDefaultExpandAll:q,treeExpandedKeys:Q,treeDefaultExpandedKeys:oe,onTreeExpand:le,virtual:Y,listHeight:J,listItemHeight:ce,treeLine:ue,treeIcon:be,showTreeIcon:Ce,switcherIcon:ge,treeMotion:Se,customSlots:X,dropdownMatchSelectWidth:U,treeExpandAction:ie}=Wo(e);EA(Wc({checkable:i,loadData:K,treeLoadedKeys:G,onTreeLoad:V,checkedKeys:z,halfCheckedKeys:T,treeDefaultExpandAll:q,treeExpandedKeys:Q,treeDefaultExpandedKeys:oe,onTreeExpand:le,treeIcon:be,treeMotion:Se,showTreeIcon:Ce,switcherIcon:ge,treeLine:ue,treeNodeFilterProp:H,keyEntities:v,customSlots:X})),fK(Wc({virtual:Y,listHeight:J,listItemHeight:ce,treeData:S,fieldNames:u,onSelect:N,dropdownMatchSelectWidth:U,treeExpandAction:ie}));const ve=Z();return o({focus(){var me;(me=ve.value)===null||me===void 0||me.focus()},blur(){var me;(me=ve.value)===null||me===void 0||me.blur()},scrollTo(me){var he;(he=ve.value)===null||he===void 0||he.scrollTo(me)}}),()=>{var me;const he=lt(e,[\"id\",\"prefixCls\",\"customSlots\",\"value\",\"defaultValue\",\"onChange\",\"onSelect\",\"onDeselect\",\"searchValue\",\"inputValue\",\"onSearch\",\"autoClearSearchValue\",\"filterTreeNode\",\"treeNodeFilterProp\",\"showCheckedStrategy\",\"treeNodeLabelProp\",\"multiple\",\"treeCheckable\",\"treeCheckStrictly\",\"labelInValue\",\"fieldNames\",\"treeDataSimpleMode\",\"treeData\",\"children\",\"loadData\",\"treeLoadedKeys\",\"onTreeLoad\",\"treeDefaultExpandAll\",\"treeExpandedKeys\",\"treeDefaultExpandedKeys\",\"onTreeExpand\",\"virtual\",\"listHeight\",\"listItemHeight\",\"onDropdownVisibleChange\",\"treeLine\",\"treeIcon\",\"showTreeIcon\",\"switcherIcon\",\"treeMotion\"]);return f(Sv,A(A(A({ref:ve},n),he),{},{id:r,prefixCls:e.prefixCls,mode:c.value?\"multiple\":void 0,displayValues:B.value,onDisplayValuesChange:j,searchValue:d.value,onSearch:m,OptionList:vK,emptyOptions:!g.value.length,onDropdownVisibleChange:F,tagRender:e.tagRender||l.tagRender,dropdownMatchSelectWidth:(me=e.dropdownMatchSelectWidth)!==null&&me!==void 0?me:!0}),l)}}}),OK=e=>{const{componentCls:t,treePrefixCls:n,colorBgElevated:o}=e,l=`.${n}`;return[{[`${t}-dropdown`]:[{padding:`${e.paddingXS}px ${e.paddingXS/2}px`},$2(n,Le(e,{colorBgContainer:o})),{[l]:{borderRadius:0,\"&-list-holder-inner\":{alignItems:\"stretch\",[`${l}-treenode`]:{[`${l}-node-content-wrapper`]:{flex:\"auto\"}}}}},Sd(`${n}-checkbox`,e),{\"&-rtl\":{direction:\"rtl\",[`${l}-switcher${l}-switcher_close`]:{[`${l}-switcher-icon svg`]:{transform:\"rotate(90deg)\"}}}}]}]};function EK(e,t){return Xe(\"TreeSelect\",n=>{const o=Le(n,{treePrefixCls:t.value});return[OK(o)]})(e)}const PS=(e,t,n)=>n!==void 0?n:`${e}-${t}`;function MK(){return h(h({},lt(D2(),[\"showTreeIcon\",\"treeMotion\",\"inputIcon\",\"getInputElement\",\"treeLine\",\"customSlots\"])),{suffixIcon:W.any,size:ke(),bordered:ye(),treeLine:Fe([Boolean,Object]),replaceFields:De(),placement:ke(),status:ke(),popupClassName:String,dropdownClassName:String,\"onUpdate:value\":de(),\"onUpdate:treeExpandedKeys\":de(),\"onUpdate:searchValue\":de()})}const Ff=ne({compatConfig:{MODE:3},name:\"ATreeSelect\",inheritAttrs:!1,props:Je(MK(),{choiceTransitionName:\"\",listHeight:256,treeIcon:!1,listItemHeight:26,bordered:!0}),slots:Object,setup(e,t){let{attrs:n,slots:o,expose:l,emit:r}=t;e.treeData===void 0&&o.default,Ot(e.multiple!==!1||!e.treeCheckable,\"TreeSelect\",\"`multiple` will always be `true` when `treeCheckable` is true\"),Ot(e.replaceFields===void 0,\"TreeSelect\",\"`replaceFields` is deprecated, please use fieldNames instead\"),Ot(!e.dropdownClassName,\"TreeSelect\",\"`dropdownClassName` is deprecated. Please use `popupClassName` instead.\");const a=Jt(),i=un.useInject(),s=I(()=>Ro(i.status,e.status)),{prefixCls:c,renderEmpty:u,direction:d,virtual:p,dropdownMatchSelectWidth:m,size:g,getPopupContainer:v,getPrefixCls:y,disabled:b}=Te(\"select\",e),{compactSize:S,compactItemClassnames:$}=Xl(c,d),w=I(()=>S.value||g.value),C=jn(),_=I(()=>{var G;return(G=b.value)!==null&&G!==void 0?G:C.value}),x=I(()=>y()),P=I(()=>e.placement!==void 0?e.placement:d.value===\"rtl\"?\"bottomRight\":\"bottomLeft\"),E=I(()=>PS(x.value,gv(P.value),e.transitionName)),M=I(()=>PS(x.value,\"\",e.choiceTransitionName)),O=I(()=>y(\"select-tree\",e.prefixCls)),R=I(()=>y(\"tree-select\",e.prefixCls)),[D,z]=Ov(c),[T]=EK(R,O),k=I(()=>re(e.popupClassName||e.dropdownClassName,`${R.value}-dropdown`,{[`${R.value}-dropdown-rtl`]:d.value===\"rtl\"},z.value)),B=I(()=>!!(e.treeCheckable||e.multiple)),L=I(()=>e.showArrow!==void 0?e.showArrow:e.loading||!B.value),N=Z();l({focus(){var G,V;(V=(G=N.value).focus)===null||V===void 0||V.call(G)},blur(){var G,V;(V=(G=N.value).blur)===null||V===void 0||V.call(G)}});const F=function(){for(var G=arguments.length,V=new Array(G),q=0;q<G;q++)V[q]=arguments[q];r(\"update:value\",V[0]),r(\"change\",...V),a.onFieldChange()},j=G=>{r(\"update:treeExpandedKeys\",G),r(\"treeExpand\",G)},H=G=>{r(\"update:searchValue\",G),r(\"search\",G)},K=G=>{r(\"blur\",G),a.onFieldBlur()};return()=>{var G,V,q;const{notFoundContent:Q=(G=o.notFoundContent)===null||G===void 0?void 0:G.call(o),prefixCls:oe,bordered:le,listHeight:Y,listItemHeight:J,multiple:ce,treeIcon:ue,treeLine:be,showArrow:Ce,switcherIcon:ge=(V=o.switcherIcon)===null||V===void 0?void 0:V.call(o),fieldNames:Se=e.replaceFields,id:X=a.id.value,placeholder:U=(q=o.placeholder)===null||q===void 0?void 0:q.call(o)}=e,{isFormItemInput:ie,hasFeedback:ve,feedbackIcon:me}=i,{suffixIcon:he,removeIcon:se,clearIcon:te}=_v(h(h({},e),{multiple:B.value,showArrow:L.value,hasFeedback:ve,feedbackIcon:me,prefixCls:c.value}),o);let ae;Q!==void 0?ae=Q:ae=u(\"Select\");const fe=lt(e,[\"suffixIcon\",\"itemIcon\",\"removeIcon\",\"clearIcon\",\"switcherIcon\",\"bordered\",\"status\",\"onUpdate:value\",\"onUpdate:treeExpandedKeys\",\"onUpdate:searchValue\"]),Pe=re(!oe&&R.value,{[`${c.value}-lg`]:w.value===\"large\",[`${c.value}-sm`]:w.value===\"small\",[`${c.value}-rtl`]:d.value===\"rtl\",[`${c.value}-borderless`]:!le,[`${c.value}-in-form-item`]:ie},Cn(c.value,s.value,ve),$.value,n.class,z.value),Oe={};return e.treeData===void 0&&o.default&&(Oe.children=xt(o.default())),D(T(f(TK,A(A(A(A({},n),fe),{},{disabled:_.value,virtual:p.value,dropdownMatchSelectWidth:m.value,id:X,fieldNames:Se,ref:N,prefixCls:c.value,class:Pe,listHeight:Y,listItemHeight:J,treeLine:!!be,inputIcon:he,multiple:ce,removeIcon:se,clearIcon:te,switcherIcon:Re=>S2(O.value,ge,Re,o.leafIcon,be),showTreeIcon:ue,notFoundContent:ae,getPopupContainer:v?.value,treeMotion:null,dropdownClassName:k.value,choiceTransitionName:M.value,onChange:F,onBlur:K,onSearch:H,onTreeExpand:j},Oe),{},{transitionName:E.value,customSlots:h(h({},o),{treeCheckable:()=>f(\"span\",{class:`${c.value}-tree-checkbox-inner`},null)}),maxTagPlaceholder:e.maxTagPlaceholder||o.maxTagPlaceholder,placement:P.value,showArrow:ve||Ce,placeholder:U}),h(h({},o),{treeCheckable:()=>f(\"span\",{class:`${c.value}-tree-checkbox-inner`},null)}))))}}}),Cm=Ra,AK=h(Ff,{TreeNode:Ra,SHOW_ALL:gK,SHOW_PARENT:A2,SHOW_CHILD:qg,install:e=>(e.component(Ff.name,Ff),e.component(Cm.displayName,Cm),e)}),zf=()=>({format:String,showNow:ye(),showHour:ye(),showMinute:ye(),showSecond:ye(),use12Hours:ye(),hourStep:Number,minuteStep:Number,secondStep:Number,hideDisabledOptions:ye(),popupClassName:String,status:ke()});function DK(e){const t=Zw(e,h(h({},zf()),{order:{type:Boolean,default:!0}})),{TimePicker:n,RangePicker:o}=t,l=ne({name:\"ATimePicker\",inheritAttrs:!1,props:h(h(h(h({},gu()),Uw()),zf()),{addon:{type:Function}}),slots:Object,setup(a,i){let{slots:s,expose:c,emit:u,attrs:d}=i;const p=a,m=Jt();Ot(!(s.addon||p.addon),\"TimePicker\",\"`addon` is deprecated. Please use `v-slot:renderExtraFooter` instead.\");const g=Z();c({focus:()=>{var w;(w=g.value)===null||w===void 0||w.focus()},blur:()=>{var w;(w=g.value)===null||w===void 0||w.blur()}});const v=(w,C)=>{u(\"update:value\",w),u(\"change\",w,C),m.onFieldChange()},y=w=>{u(\"update:open\",w),u(\"openChange\",w)},b=w=>{u(\"focus\",w)},S=w=>{u(\"blur\",w),m.onFieldBlur()},$=w=>{u(\"ok\",w)};return()=>{const{id:w=m.id.value}=p;return f(n,A(A(A({},d),lt(p,[\"onUpdate:value\",\"onUpdate:open\"])),{},{id:w,dropdownClassName:p.popupClassName,mode:void 0,ref:g,renderExtraFooter:p.addon||s.addon||p.renderExtraFooter||s.renderExtraFooter,onChange:v,onOpenChange:y,onFocus:b,onBlur:S,onOk:$}),s)}}}),r=ne({name:\"ATimeRangePicker\",inheritAttrs:!1,props:h(h(h(h({},gu()),Yw()),zf()),{order:{type:Boolean,default:!0}}),slots:Object,setup(a,i){let{slots:s,expose:c,emit:u,attrs:d}=i;const p=a,m=Z(),g=Jt();c({focus:()=>{var _;(_=m.value)===null||_===void 0||_.focus()},blur:()=>{var _;(_=m.value)===null||_===void 0||_.blur()}});const v=(_,x)=>{u(\"update:value\",_),u(\"change\",_,x),g.onFieldChange()},y=_=>{u(\"update:open\",_),u(\"openChange\",_)},b=_=>{u(\"focus\",_)},S=_=>{u(\"blur\",_),g.onFieldBlur()},$=(_,x)=>{u(\"panelChange\",_,x)},w=_=>{u(\"ok\",_)},C=(_,x,P)=>{u(\"calendarChange\",_,x,P)};return()=>{const{id:_=g.id.value}=p;return f(o,A(A(A({},d),lt(p,[\"onUpdate:open\",\"onUpdate:value\"])),{},{id:_,dropdownClassName:p.popupClassName,picker:\"time\",mode:void 0,ref:m,onChange:v,onOpenChange:y,onFocus:b,onBlur:S,onPanelChange:$,onOk:w,onCalendarChange:C}),s)}}});return{TimePicker:l,TimeRangePicker:r}}const{TimePicker:As,TimeRangePicker:Tc}=DK(Vv),RK=h(As,{TimePicker:As,TimeRangePicker:Tc,install:e=>(e.component(As.name,As),e.component(Tc.name,Tc),e)}),kK=()=>({prefixCls:String,color:String,dot:W.any,pending:ye(),position:W.oneOf(hn(\"left\",\"right\",\"\")).def(\"\"),label:W.any}),xa=ne({compatConfig:{MODE:3},name:\"ATimelineItem\",props:Je(kK(),{color:\"blue\",pending:!1}),slots:Object,setup(e,t){let{slots:n}=t;const{prefixCls:o}=Te(\"timeline\",e),l=I(()=>({[`${o.value}-item`]:!0,[`${o.value}-item-pending`]:e.pending})),r=I(()=>/blue|red|green|gray/.test(e.color||\"\")?void 0:e.color||\"blue\"),a=I(()=>({[`${o.value}-item-head`]:!0,[`${o.value}-item-head-${e.color||\"blue\"}`]:!r.value}));return()=>{var i,s,c;const{label:u=(i=n.label)===null||i===void 0?void 0:i.call(n),dot:d=(s=n.dot)===null||s===void 0?void 0:s.call(n)}=e;return f(\"li\",{class:l.value},[u&&f(\"div\",{class:`${o.value}-item-label`},[u]),f(\"div\",{class:`${o.value}-item-tail`},null),f(\"div\",{class:[a.value,!!d&&`${o.value}-item-head-custom`],style:{borderColor:r.value,color:r.value}},[d]),f(\"div\",{class:`${o.value}-item-content`},[(c=n.default)===null||c===void 0?void 0:c.call(n)])])}}}),NK=e=>{const{componentCls:t}=e;return{[t]:h(h({},qe(e)),{margin:0,padding:0,listStyle:\"none\",[`${t}-item`]:{position:\"relative\",margin:0,paddingBottom:e.timeLineItemPaddingBottom,fontSize:e.fontSize,listStyle:\"none\",\"&-tail\":{position:\"absolute\",insetBlockStart:e.timeLineItemHeadSize,insetInlineStart:(e.timeLineItemHeadSize-e.timeLineItemTailWidth)/2,height:`calc(100% - ${e.timeLineItemHeadSize}px)`,borderInlineStart:`${e.timeLineItemTailWidth}px ${e.lineType} ${e.colorSplit}`},\"&-pending\":{[`${t}-item-head`]:{fontSize:e.fontSizeSM,backgroundColor:\"transparent\"},[`${t}-item-tail`]:{display:\"none\"}},\"&-head\":{position:\"absolute\",width:e.timeLineItemHeadSize,height:e.timeLineItemHeadSize,backgroundColor:e.colorBgContainer,border:`${e.timeLineHeadBorderWidth}px ${e.lineType} transparent`,borderRadius:\"50%\",\"&-blue\":{color:e.colorPrimary,borderColor:e.colorPrimary},\"&-red\":{color:e.colorError,borderColor:e.colorError},\"&-green\":{color:e.colorSuccess,borderColor:e.colorSuccess},\"&-gray\":{color:e.colorTextDisabled,borderColor:e.colorTextDisabled}},\"&-head-custom\":{position:\"absolute\",insetBlockStart:e.timeLineItemHeadSize/2,insetInlineStart:e.timeLineItemHeadSize/2,width:\"auto\",height:\"auto\",marginBlockStart:0,paddingBlock:e.timeLineItemCustomHeadPaddingVertical,lineHeight:1,textAlign:\"center\",border:0,borderRadius:0,transform:\"translate(-50%, -50%)\"},\"&-content\":{position:\"relative\",insetBlockStart:-(e.fontSize*e.lineHeight-e.fontSize)+e.lineWidth,marginInlineStart:e.margin+e.timeLineItemHeadSize,marginInlineEnd:0,marginBlockStart:0,marginBlockEnd:0,wordBreak:\"break-word\"},\"&-last\":{[`> ${t}-item-tail`]:{display:\"none\"},[`> ${t}-item-content`]:{minHeight:e.controlHeightLG*1.2}}},[`&${t}-alternate,\n        &${t}-right,\n        &${t}-label`]:{[`${t}-item`]:{\"&-tail, &-head, &-head-custom\":{insetInlineStart:\"50%\"},\"&-head\":{marginInlineStart:`-${e.marginXXS}px`,\"&-custom\":{marginInlineStart:e.timeLineItemTailWidth/2}},\"&-left\":{[`${t}-item-content`]:{insetInlineStart:`calc(50% - ${e.marginXXS}px)`,width:`calc(50% - ${e.marginSM}px)`,textAlign:\"start\"}},\"&-right\":{[`${t}-item-content`]:{width:`calc(50% - ${e.marginSM}px)`,margin:0,textAlign:\"end\"}}}},[`&${t}-right`]:{[`${t}-item-right`]:{[`${t}-item-tail,\n            ${t}-item-head,\n            ${t}-item-head-custom`]:{insetInlineStart:`calc(100% - ${(e.timeLineItemHeadSize+e.timeLineItemTailWidth)/2}px)`},[`${t}-item-content`]:{width:`calc(100% - ${e.timeLineItemHeadSize+e.marginXS}px)`}}},[`&${t}-pending\n        ${t}-item-last\n        ${t}-item-tail`]:{display:\"block\",height:`calc(100% - ${e.margin}px)`,borderInlineStart:`${e.timeLineItemTailWidth}px dotted ${e.colorSplit}`},[`&${t}-reverse\n        ${t}-item-last\n        ${t}-item-tail`]:{display:\"none\"},[`&${t}-reverse ${t}-item-pending`]:{[`${t}-item-tail`]:{insetBlockStart:e.margin,display:\"block\",height:`calc(100% - ${e.margin}px)`,borderInlineStart:`${e.timeLineItemTailWidth}px dotted ${e.colorSplit}`},[`${t}-item-content`]:{minHeight:e.controlHeightLG*1.2}},[`&${t}-label`]:{[`${t}-item-label`]:{position:\"absolute\",insetBlockStart:-(e.fontSize*e.lineHeight-e.fontSize)+e.timeLineItemTailWidth,width:`calc(50% - ${e.marginSM}px)`,textAlign:\"end\"},[`${t}-item-right`]:{[`${t}-item-label`]:{insetInlineStart:`calc(50% + ${e.marginSM}px)`,width:`calc(50% - ${e.marginSM}px)`,textAlign:\"start\"}}},\"&-rtl\":{direction:\"rtl\",[`${t}-item-head-custom`]:{transform:\"translate(50%, -50%)\"}}})}},BK=Xe(\"Timeline\",e=>{const t=Le(e,{timeLineItemPaddingBottom:e.padding*1.25,timeLineItemHeadSize:10,timeLineItemCustomHeadPaddingVertical:e.paddingXXS,timeLinePaddingInlineEnd:2,timeLineItemTailWidth:e.lineWidthBold,timeLineHeadBorderWidth:e.wireframe?e.lineWidthBold:e.lineWidth*3});return[NK(t)]}),LK=()=>({prefixCls:String,pending:W.any,pendingDot:W.any,reverse:ye(),mode:W.oneOf(hn(\"left\",\"alternate\",\"right\",\"\"))}),da=ne({compatConfig:{MODE:3},name:\"ATimeline\",inheritAttrs:!1,props:Je(LK(),{reverse:!1,mode:\"\"}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"timeline\",e),[a,i]=BK(l),s=(c,u)=>{const d=c.props||{};return e.mode===\"alternate\"?d.position===\"right\"?`${l.value}-item-right`:d.position===\"left\"?`${l.value}-item-left`:u%2===0?`${l.value}-item-left`:`${l.value}-item-right`:e.mode===\"left\"?`${l.value}-item-left`:e.mode===\"right\"?`${l.value}-item-right`:d.position===\"right\"?`${l.value}-item-right`:\"\"};return()=>{var c,u,d;const{pending:p=(c=n.pending)===null||c===void 0?void 0:c.call(n),pendingDot:m=(u=n.pendingDot)===null||u===void 0?void 0:u.call(n),reverse:g,mode:v}=e,y=typeof p==\"boolean\"?null:p,b=kt((d=n.default)===null||d===void 0?void 0:d.call(n)),S=p?f(xa,{pending:!!p,dot:m||f(eo,null,null)},{default:()=>[y]}):null;S&&b.push(S);const $=g?b.reverse():b,w=$.length,C=`${l.value}-item-last`,_=$.map((E,M)=>{const O=M===w-2?C:\"\",R=M===w-1?C:\"\";return Mo(E,{class:re([!g&&p?O:R,s(E,M)])})}),x=$.some(E=>{var M,O;return!!(!((M=E.props)===null||M===void 0)&&M.label||!((O=E.children)===null||O===void 0)&&O.label)}),P=re(l.value,{[`${l.value}-pending`]:!!p,[`${l.value}-reverse`]:!!g,[`${l.value}-${v}`]:!!v&&!x,[`${l.value}-label`]:x,[`${l.value}-rtl`]:r.value===\"rtl\"},o.class,i.value);return a(f(\"ul\",A(A({},o),{},{class:P}),[_]))}}});da.Item=xa;da.install=function(e){return e.component(da.name,da),e.component(xa.name,xa),e};const FK=(e,t,n,o)=>{const{sizeMarginHeadingVerticalEnd:l,fontWeightStrong:r}=o;return{marginBottom:l,color:n,fontWeight:r,fontSize:e,lineHeight:t}},zK=e=>{const t=[1,2,3,4,5],n={};return t.forEach(o=>{n[`\n      h${o}&,\n      div&-h${o},\n      div&-h${o} > textarea,\n      h${o}\n    `]=FK(e[`fontSizeHeading${o}`],e[`lineHeightHeading${o}`],e.colorTextHeading,e)}),n},HK=e=>{const{componentCls:t}=e;return{\"a&, a\":h(h({},Hu(e)),{textDecoration:e.linkDecoration,\"&:active, &:hover\":{textDecoration:e.linkHoverDecoration},[`&[disabled], &${t}-disabled`]:{color:e.colorTextDisabled,cursor:\"not-allowed\",\"&:active, &:hover\":{color:e.colorTextDisabled},\"&:active\":{pointerEvents:\"none\"}}})}},jK=()=>({code:{margin:\"0 0.2em\",paddingInline:\"0.4em\",paddingBlock:\"0.2em 0.1em\",fontSize:\"85%\",background:\"rgba(150, 150, 150, 0.1)\",border:\"1px solid rgba(100, 100, 100, 0.2)\",borderRadius:3},kbd:{margin:\"0 0.2em\",paddingInline:\"0.4em\",paddingBlock:\"0.15em 0.1em\",fontSize:\"90%\",background:\"rgba(150, 150, 150, 0.06)\",border:\"1px solid rgba(100, 100, 100, 0.2)\",borderBottomWidth:2,borderRadius:3},mark:{padding:0,backgroundColor:tP[2]},\"u, ins\":{textDecoration:\"underline\",textDecorationSkipInk:\"auto\"},\"s, del\":{textDecoration:\"line-through\"},strong:{fontWeight:600},\"ul, ol\":{marginInline:0,marginBlock:\"0 1em\",padding:0,li:{marginInline:\"20px 0\",marginBlock:0,paddingInline:\"4px 0\",paddingBlock:0}},ul:{listStyleType:\"circle\",ul:{listStyleType:\"disc\"}},ol:{listStyleType:\"decimal\"},\"pre, blockquote\":{margin:\"1em 0\"},pre:{padding:\"0.4em 0.6em\",whiteSpace:\"pre-wrap\",wordWrap:\"break-word\",background:\"rgba(150, 150, 150, 0.1)\",border:\"1px solid rgba(100, 100, 100, 0.2)\",borderRadius:3,code:{display:\"inline\",margin:0,padding:0,fontSize:\"inherit\",fontFamily:\"inherit\",background:\"transparent\",border:0}},blockquote:{paddingInline:\"0.6em 0\",paddingBlock:0,borderInlineStart:\"4px solid rgba(100, 100, 100, 0.2)\",opacity:.85}}),WK=e=>{const{componentCls:t}=e,o=kr(e).inputPaddingVertical+1;return{\"&-edit-content\":{position:\"relative\",\"div&\":{insetInlineStart:-e.paddingSM,marginTop:-o,marginBottom:`calc(1em - ${o}px)`},[`${t}-edit-content-confirm`]:{position:\"absolute\",insetInlineEnd:e.marginXS+2,insetBlockEnd:e.marginXS,color:e.colorTextDescription,fontWeight:\"normal\",fontSize:e.fontSize,fontStyle:\"normal\",pointerEvents:\"none\"},textarea:{margin:\"0!important\",MozTransition:\"none\",height:\"1em\"}}}},VK=e=>({\"&-copy-success\":{\"\\n    &,\\n    &:hover,\\n    &:focus\":{color:e.colorSuccess}}}),KK=()=>({\"\\n  a&-ellipsis,\\n  span&-ellipsis\\n  \":{display:\"inline-block\",maxWidth:\"100%\"},\"&-single-line\":{whiteSpace:\"nowrap\"},\"&-ellipsis-single-line\":{overflow:\"hidden\",textOverflow:\"ellipsis\",\"a&, span&\":{verticalAlign:\"bottom\"}},\"&-ellipsis-multiple-line\":{display:\"-webkit-box\",overflow:\"hidden\",WebkitLineClamp:3,WebkitBoxOrient:\"vertical\"}}),GK=e=>{const{componentCls:t,sizeMarginHeadingVerticalStart:n}=e;return{[t]:h(h(h(h(h(h(h(h(h({color:e.colorText,wordBreak:\"break-word\",lineHeight:e.lineHeight,[`&${t}-secondary`]:{color:e.colorTextDescription},[`&${t}-success`]:{color:e.colorSuccess},[`&${t}-warning`]:{color:e.colorWarning},[`&${t}-danger`]:{color:e.colorError,\"a&:active, a&:focus\":{color:e.colorErrorActive},\"a&:hover\":{color:e.colorErrorHover}},[`&${t}-disabled`]:{color:e.colorTextDisabled,cursor:\"not-allowed\",userSelect:\"none\"},\"\\n        div&,\\n        p\\n      \":{marginBottom:\"1em\"}},zK(e)),{[`\n      & + h1${t},\n      & + h2${t},\n      & + h3${t},\n      & + h4${t},\n      & + h5${t}\n      `]:{marginTop:n},\"\\n      div,\\n      ul,\\n      li,\\n      p,\\n      h1,\\n      h2,\\n      h3,\\n      h4,\\n      h5\":{\"\\n        + h1,\\n        + h2,\\n        + h3,\\n        + h4,\\n        + h5\\n        \":{marginTop:n}}}),jK()),HK(e)),{[`\n        ${t}-expand,\n        ${t}-edit,\n        ${t}-copy\n      `]:h(h({},Hu(e)),{marginInlineStart:e.marginXXS})}),WK(e)),VK(e)),KK()),{\"&-rtl\":{direction:\"rtl\"}})}},R2=Xe(\"Typography\",e=>[GK(e)],{sizeMarginHeadingVerticalStart:\"1.2em\",sizeMarginHeadingVerticalEnd:\"0.5em\"}),XK=()=>({prefixCls:String,value:String,maxlength:Number,autoSize:{type:[Boolean,Object]},onSave:Function,onCancel:Function,onEnd:Function,onChange:Function,originContent:String,direction:String,component:String}),UK=ne({compatConfig:{MODE:3},name:\"Editable\",inheritAttrs:!1,props:XK(),setup(e,t){let{emit:n,slots:o,attrs:l}=t;const{prefixCls:r}=Wo(e),a=gt({current:e.value||\"\",lastKeyCode:void 0,inComposition:!1,cancelFlag:!1});pe(()=>e.value,S=>{a.current=S});const i=Z();Be(()=>{var S;if(i.value){const $=(S=i.value)===null||S===void 0?void 0:S.resizableTextArea,w=$?.textArea;w.focus();const{length:C}=w.value;w.setSelectionRange(C,C)}});function s(S){i.value=S}function c(S){let{target:{value:$}}=S;a.current=$.replace(/[\\r\\n]/g,\"\"),n(\"change\",a.current)}function u(){a.inComposition=!0}function d(){a.inComposition=!1}function p(S){const{keyCode:$}=S;$===we.ENTER&&S.preventDefault(),!a.inComposition&&(a.lastKeyCode=$)}function m(S){const{keyCode:$,ctrlKey:w,altKey:C,metaKey:_,shiftKey:x}=S;a.lastKeyCode===$&&!a.inComposition&&!w&&!C&&!_&&!x&&($===we.ENTER?(v(),n(\"end\")):$===we.ESC&&(a.current=e.originContent,n(\"cancel\")))}function g(){v()}function v(){n(\"save\",a.current.trim())}const[y,b]=R2(r);return()=>{const S=re({[`${r.value}`]:!0,[`${r.value}-edit-content`]:!0,[`${r.value}-rtl`]:e.direction===\"rtl\",[e.component?`${r.value}-${e.component}`:\"\"]:!0},l.class,b.value);return y(f(\"div\",A(A({},l),{},{class:S}),[f(kg,{ref:s,maxlength:e.maxlength,value:a.current,onChange:c,onKeydown:p,onKeyup:m,onCompositionstart:u,onCompositionend:d,onBlur:g,rows:1,autoSize:e.autoSize===void 0||e.autoSize},null),o.enterIcon?o.enterIcon({className:`${e.prefixCls}-edit-content-confirm`}):f(nP,{class:`${e.prefixCls}-edit-content-confirm`},null)]))}}}),YK=3,qK=8;let Nn;const Hf={padding:0,margin:0,display:\"inline\",lineHeight:\"inherit\"};function k2(e,t){e.setAttribute(\"aria-hidden\",\"true\");const n=window.getComputedStyle(t),o=gA(n);e.setAttribute(\"style\",o),e.style.position=\"fixed\",e.style.left=\"0\",e.style.height=\"auto\",e.style.minHeight=\"auto\",e.style.maxHeight=\"auto\",e.style.paddingTop=\"0\",e.style.paddingBottom=\"0\",e.style.borderTopWidth=\"0\",e.style.borderBottomWidth=\"0\",e.style.top=\"-999999px\",e.style.zIndex=\"-1000\",e.style.textOverflow=\"clip\",e.style.whiteSpace=\"normal\",e.style.webkitLineClamp=\"none\"}function ZK(e){const t=document.createElement(\"div\");k2(t,e),t.appendChild(document.createTextNode(\"text\")),document.body.appendChild(t);const n=t.getBoundingClientRect().height;return document.body.removeChild(t),n}const QK=(e,t,n,o,l)=>{Nn||(Nn=document.createElement(\"div\"),Nn.setAttribute(\"aria-hidden\",\"true\"),document.body.appendChild(Nn));const{rows:r,suffix:a=\"\"}=t,i=ZK(e),s=Math.round(i*r*100)/100;k2(Nn,e);const c=a$({render(){return f(\"div\",{style:Hf},[f(\"span\",{style:Hf},[n,a]),f(\"span\",{style:Hf},[o])])}});c.mount(Nn);function u(){return Math.round(Nn.getBoundingClientRect().height*100)/100-.1<=s}if(u())return c.unmount(),{content:n,text:Nn.innerHTML,ellipsis:!1};const d=Array.prototype.slice.apply(Nn.childNodes[0].childNodes[0].cloneNode(!0).childNodes).filter($=>{let{nodeType:w,data:C}=$;return w!==qK&&C!==\"\"}),p=Array.prototype.slice.apply(Nn.childNodes[0].childNodes[1].cloneNode(!0).childNodes);c.unmount();const m=[];Nn.innerHTML=\"\";const g=document.createElement(\"span\");Nn.appendChild(g);const v=document.createTextNode(l+a);g.appendChild(v),p.forEach($=>{Nn.appendChild($)});function y($){g.insertBefore($,v)}function b($,w){let C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,_=arguments.length>3&&arguments[3]!==void 0?arguments[3]:w.length,x=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;const P=Math.floor((C+_)/2),E=w.slice(0,P);if($.textContent=E,C>=_-1)for(let M=_;M>=C;M-=1){const O=w.slice(0,M);if($.textContent=O,u()||!O)return M===w.length?{finished:!1,vNode:w}:{finished:!0,vNode:O}}return u()?b($,w,P,_,P):b($,w,C,P,x)}function S($){if($.nodeType===YK){const C=$.textContent||\"\",_=document.createTextNode(C);return y(_),b(_,C)}return{finished:!1,vNode:null}}return d.some($=>{const{finished:w,vNode:C}=S($);return C&&m.push(C),w}),{content:m,text:Nn.innerHTML,ellipsis:!0}};var JK=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const eG=()=>({prefixCls:String,direction:String,component:String}),Bn=ne({name:\"ATypography\",inheritAttrs:!1,props:eG(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:l,direction:r}=Te(\"typography\",e),[a,i]=R2(l);return()=>{var s;const c=h(h({},e),o),{prefixCls:u,direction:d,component:p=\"article\"}=c,m=JK(c,[\"prefixCls\",\"direction\",\"component\"]);return a(f(p,A(A({},m),{},{class:re(l.value,{[`${l.value}-rtl`]:r.value===\"rtl\"},o.class,i.value)}),{default:()=>[(s=n.default)===null||s===void 0?void 0:s.call(n)]}))}}}),tG=()=>{const e=document.getSelection();if(!e.rangeCount)return function(){};let t=document.activeElement;const n=[];for(let o=0;o<e.rangeCount;o++)n.push(e.getRangeAt(o));switch(t.tagName.toUpperCase()){case\"INPUT\":case\"TEXTAREA\":t.blur();break;default:t=null;break}return e.removeAllRanges(),function(){e.type===\"Caret\"&&e.removeAllRanges(),e.rangeCount||n.forEach(function(o){e.addRange(o)}),t&&t.focus()}},TS={\"text/plain\":\"Text\",\"text/html\":\"Url\",default:\"Text\"},nG=\"Copy to clipboard: #{key}, Enter\";function oG(e){const t=(/mac os x/i.test(navigator.userAgent)?\"⌘\":\"Ctrl\")+\"+C\";return e.replace(/#{\\s*key\\s*}/g,t)}function lG(e,t){let n,o,l,r,a,i=!1;t||(t={});const s=t.debug||!1;try{if(o=tG(),l=document.createRange(),r=document.getSelection(),a=document.createElement(\"span\"),a.textContent=e,a.style.all=\"unset\",a.style.position=\"fixed\",a.style.top=0,a.style.clip=\"rect(0, 0, 0, 0)\",a.style.whiteSpace=\"pre\",a.style.webkitUserSelect=\"text\",a.style.MozUserSelect=\"text\",a.style.msUserSelect=\"text\",a.style.userSelect=\"text\",a.addEventListener(\"copy\",function(u){if(u.stopPropagation(),t.format)if(u.preventDefault(),typeof u.clipboardData>\"u\"){s&&console.warn(\"unable to use e.clipboardData\"),s&&console.warn(\"trying IE specific stuff\"),window.clipboardData.clearData();const d=TS[t.format]||TS.default;window.clipboardData.setData(d,e)}else u.clipboardData.clearData(),u.clipboardData.setData(t.format,e);t.onCopy&&(u.preventDefault(),t.onCopy(u.clipboardData))}),document.body.appendChild(a),l.selectNodeContents(a),r.addRange(l),!document.execCommand(\"copy\"))throw new Error(\"copy command was unsuccessful\");i=!0}catch(c){s&&console.error(\"unable to copy using execCommand: \",c),s&&console.warn(\"trying IE specific stuff\");try{window.clipboardData.setData(t.format||\"text\",e),t.onCopy&&t.onCopy(window.clipboardData),i=!0}catch(u){s&&console.error(\"unable to copy using clipboardData: \",u),s&&console.error(\"falling back to prompt\"),n=oG(\"message\"in t?t.message:nG),window.prompt(n,e)}}finally{r&&(typeof r.removeRange==\"function\"?r.removeRange(l):r.removeAllRanges()),a&&document.body.removeChild(a),o()}return i}var rG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const aG=_g(\"webkitLineClamp\"),iG=_g(\"textOverflow\"),OS=\"...\",es=()=>({editable:{type:[Boolean,Object],default:void 0},copyable:{type:[Boolean,Object],default:void 0},prefixCls:String,component:String,type:String,disabled:{type:Boolean,default:void 0},ellipsis:{type:[Boolean,Object],default:void 0},code:{type:Boolean,default:void 0},mark:{type:Boolean,default:void 0},underline:{type:Boolean,default:void 0},delete:{type:Boolean,default:void 0},strong:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},content:String,\"onUpdate:content\":Function}),ts=ne({compatConfig:{MODE:3},name:\"TypographyBase\",inheritAttrs:!1,props:es(),setup(e,t){let{slots:n,attrs:o,emit:l}=t;const{prefixCls:r,direction:a}=Te(\"typography\",e),i=gt({copied:!1,ellipsisText:\"\",ellipsisContent:null,isEllipsis:!1,expanded:!1,clientRendered:!1,expandStr:\"\",copyStr:\"\",copiedStr:\"\",editStr:\"\",copyId:void 0,rafId:void 0,prevProps:void 0,originContent:\"\"}),s=Z(),c=Z(),u=I(()=>{const T=e.ellipsis;return T?h({rows:1,expandable:!1},typeof T==\"object\"?T:null):{}});Be(()=>{i.clientRendered=!0,P()}),ot(()=>{clearTimeout(i.copyId),Qe.cancel(i.rafId)}),pe([()=>u.value.rows,()=>e.content],()=>{it(()=>{_()})},{flush:\"post\",deep:!0}),ze(()=>{e.content===void 0&&(no(!e.editable),no(!e.ellipsis))});function d(){var T;return e.ellipsis||e.editable?e.content:(T=Tn(s.value))===null||T===void 0?void 0:T.innerText}function p(T){const{onExpand:k}=u.value;i.expanded=!0,k?.(T)}function m(T){T.preventDefault(),i.originContent=e.content,C(!0)}function g(T){v(T),C(!1)}function v(T){const{onChange:k}=S.value;T!==e.content&&(l(\"update:content\",T),k?.(T))}function y(){var T,k;(k=(T=S.value).onCancel)===null||k===void 0||k.call(T),C(!1)}function b(T){T.preventDefault(),T.stopPropagation();const{copyable:k}=e,B=h({},typeof k==\"object\"?k:null);B.text===void 0&&(B.text=d()),lG(B.text||\"\"),i.copied=!0,it(()=>{B.onCopy&&B.onCopy(T),i.copyId=setTimeout(()=>{i.copied=!1},3e3)})}const S=I(()=>{const T=e.editable;return T?h({},typeof T==\"object\"?T:null):{editing:!1}}),[$,w]=Mt(!1,{value:I(()=>S.value.editing)});function C(T){const{onStart:k}=S.value;T&&k&&k(),w(T)}pe($,T=>{var k;T||(k=c.value)===null||k===void 0||k.focus()},{flush:\"post\"});function _(T){if(T){const{width:k,height:B}=T;if(!k||!B)return}Qe.cancel(i.rafId),i.rafId=Qe(()=>{P()})}const x=I(()=>{const{rows:T,expandable:k,suffix:B,onEllipsis:L,tooltip:N}=u.value;return B||N||e.editable||e.copyable||k||L?!1:T===1?iG:aG}),P=()=>{const{ellipsisText:T,isEllipsis:k}=i,{rows:B,suffix:L,onEllipsis:N}=u.value;if(!B||B<0||!Tn(s.value)||i.expanded||e.content===void 0||x.value)return;const{content:F,text:j,ellipsis:H}=QK(Tn(s.value),{rows:B,suffix:L},e.content,z(!0),OS);(T!==j||i.isEllipsis!==H)&&(i.ellipsisText=j,i.ellipsisContent=F,i.isEllipsis=H,k!==H&&N&&N(H))};function E(T,k){let{mark:B,code:L,underline:N,delete:F,strong:j,keyboard:H}=T,K=k;function G(V,q){if(!V)return;const Q=(function(){return K})();K=f(q,null,{default:()=>[Q]})}return G(j,\"strong\"),G(N,\"u\"),G(F,\"del\"),G(L,\"code\"),G(B,\"mark\"),G(H,\"kbd\"),K}function M(T){const{expandable:k,symbol:B}=u.value;if(!k||!T&&(i.expanded||!i.isEllipsis))return null;const L=(n.ellipsisSymbol?n.ellipsisSymbol():B)||i.expandStr;return f(\"a\",{key:\"expand\",class:`${r.value}-expand`,onClick:p,\"aria-label\":i.expandStr},[L])}function O(){if(!e.editable)return;const{tooltip:T,triggerType:k=[\"icon\"]}=e.editable,B=n.editableIcon?n.editableIcon():f(oP,{role:\"button\"},null),L=n.editableTooltip?n.editableTooltip():i.editStr,N=typeof L==\"string\"?L:\"\";return k.indexOf(\"icon\")!==-1?f(Fn,{key:\"edit\",title:T===!1?\"\":L},{default:()=>[f(Su,{ref:c,class:`${r.value}-edit`,onClick:m,\"aria-label\":N},{default:()=>[B]})]}):null}function R(){if(!e.copyable)return;const{tooltip:T}=e.copyable,k=i.copied?i.copiedStr:i.copyStr,B=n.copyableTooltip?n.copyableTooltip({copied:i.copied}):k,L=typeof B==\"string\"?B:\"\",N=i.copied?f(Iu,null,null):f(lP,null,null),F=n.copyableIcon?n.copyableIcon({copied:!!i.copied}):N;return f(Fn,{key:\"copy\",title:T===!1?\"\":B},{default:()=>[f(Su,{class:[`${r.value}-copy`,{[`${r.value}-copy-success`]:i.copied}],onClick:b,\"aria-label\":L},{default:()=>[F]})]})}function D(){const{class:T,style:k}=o,{maxlength:B,autoSize:L,onEnd:N}=S.value;return f(UK,{class:T,style:k,prefixCls:r.value,value:e.content,originContent:i.originContent,maxlength:B,autoSize:L,onSave:g,onChange:v,onCancel:y,onEnd:N,direction:a.value,component:e.component},{enterIcon:n.editableEnterIcon})}function z(T){return[M(T),O(),R()].filter(k=>k)}return()=>{var T;const{triggerType:k=[\"icon\"]}=S.value,B=e.ellipsis||e.editable?e.content!==void 0?e.content:(T=n.default)===null||T===void 0?void 0:T.call(n):n.default?n.default():e.content;return $.value?D():f(Pr,{componentName:\"Text\",children:L=>{const N=h(h({},e),o),{type:F,disabled:j,content:H,class:K,style:G}=N,V=rG(N,[\"type\",\"disabled\",\"content\",\"class\",\"style\"]),{rows:q,suffix:Q,tooltip:oe}=u.value,{edit:le,copy:Y,copied:J,expand:ce}=L;i.editStr=le,i.copyStr=Y,i.copiedStr=J,i.expandStr=ce;const ue=lt(V,[\"prefixCls\",\"editable\",\"copyable\",\"ellipsis\",\"mark\",\"code\",\"delete\",\"underline\",\"strong\",\"keyboard\",\"onUpdate:content\"]),be=x.value,Ce=q===1&&be,ge=q&&q>1&&be;let Se=B,X;if(q&&i.isEllipsis&&!i.expanded&&!be){const{title:ve}=V;let me=ve||\"\";!ve&&(typeof B==\"string\"||typeof B==\"number\")&&(me=String(B)),me=me?.slice(String(i.ellipsisContent||\"\").length),Se=f(He,null,[jt(i.ellipsisContent),f(\"span\",{title:me,\"aria-hidden\":\"true\"},[OS]),Q])}else Se=f(He,null,[B,Q]);Se=E(e,Se);const U=oe&&q&&i.isEllipsis&&!i.expanded&&!be,ie=n.ellipsisTooltip?n.ellipsisTooltip():oe;return f(bo,{onResize:_,disabled:!q},{default:()=>[f(Bn,A({ref:s,class:[{[`${r.value}-${F}`]:F,[`${r.value}-disabled`]:j,[`${r.value}-ellipsis`]:q,[`${r.value}-single-line`]:q===1&&!i.isEllipsis,[`${r.value}-ellipsis-single-line`]:Ce,[`${r.value}-ellipsis-multiple-line`]:ge},K],style:h(h({},G),{WebkitLineClamp:ge?q:void 0}),\"aria-label\":X,direction:a.value,onClick:k.indexOf(\"text\")!==-1?m:()=>{}},ue),{default:()=>[U?f(Fn,{title:oe===!0?B:ie},{default:()=>[f(\"span\",null,[Se])]}):Se,z()]})]})}},null)}}});var sG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const cG=()=>lt(h(h({},es()),{ellipsis:{type:Boolean,default:void 0}}),[\"component\"]),ka=(e,t)=>{let{slots:n,attrs:o}=t;const l=h(h({},e),o),{ellipsis:r,rel:a}=l,i=sG(l,[\"ellipsis\",\"rel\"]),s=h(h({},i),{rel:a===void 0&&i.target===\"_blank\"?\"noopener noreferrer\":a,ellipsis:!!r,component:\"a\"});return delete s.navigate,f(ts,s,n)};ka.displayName=\"ATypographyLink\";ka.inheritAttrs=!1;ka.props=cG();const uG=()=>lt(es(),[\"component\"]),Na=(e,t)=>{let{slots:n,attrs:o}=t;const l=h(h(h({},e),{component:\"div\"}),o);return f(ts,l,n)};Na.displayName=\"ATypographyParagraph\";Na.inheritAttrs=!1;Na.props=uG();const dG=()=>h(h({},lt(es(),[\"component\"])),{ellipsis:{type:[Boolean,Object],default:void 0}}),Ba=(e,t)=>{let{slots:n,attrs:o}=t;const{ellipsis:l}=e,r=h(h(h({},e),{ellipsis:l&&typeof l==\"object\"?lt(l,[\"expandable\",\"rows\"]):l,component:\"span\"}),o);return f(ts,r,n)};Ba.displayName=\"ATypographyText\";Ba.inheritAttrs=!1;Ba.props=dG();var fG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const pG=oE(1,2,3,4,5),mG=()=>h(h({},lt(es(),[\"component\",\"strong\"])),{level:Number}),La=(e,t)=>{let{slots:n,attrs:o}=t;const{level:l=1}=e,r=fG(e,[\"level\"]);let a;pG.includes(l)?a=`h${l}`:a=\"h1\";const i=h(h(h({},r),{component:a}),o);return f(ts,i,n)};La.displayName=\"ATypographyTitle\";La.inheritAttrs=!1;La.props=mG();Bn.Text=Ba;Bn.Title=La;Bn.Paragraph=Na;Bn.Link=ka;Bn.Base=ts;Bn.install=function(e){return e.component(Bn.name,Bn),e.component(Bn.Text.displayName,Ba),e.component(Bn.Title.displayName,La),e.component(Bn.Paragraph.displayName,Na),e.component(Bn.Link.displayName,ka),e};function vG(e,t){const n=`cannot ${e.method} ${e.action} ${t.status}'`,o=new Error(n);return o.status=t.status,o.method=e.method,o.url=e.action,o}function ES(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}function gG(e){const t=new XMLHttpRequest;e.onProgress&&t.upload&&(t.upload.onprogress=function(r){r.total>0&&(r.percent=r.loaded/r.total*100),e.onProgress(r)});const n=new FormData;e.data&&Object.keys(e.data).forEach(l=>{const r=e.data[l];if(Array.isArray(r)){r.forEach(a=>{n.append(`${l}[]`,a)});return}n.append(l,r)}),e.file instanceof Blob?n.append(e.filename,e.file,e.file.name):n.append(e.filename,e.file),t.onerror=function(r){e.onError(r)},t.onload=function(){return t.status<200||t.status>=300?e.onError(vG(e,t),ES(t)):e.onSuccess(ES(t),t)},t.open(e.method,e.action,!0),e.withCredentials&&\"withCredentials\"in t&&(t.withCredentials=!0);const o=e.headers||{};return o[\"X-Requested-With\"]!==null&&t.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),Object.keys(o).forEach(l=>{o[l]!==null&&t.setRequestHeader(l,o[l])}),t.send(n),{abort(){t.abort()}}}const hG=+new Date;let bG=0;function jf(){return`vc-upload-${hG}-${++bG}`}const Wf=(e,t)=>{if(e&&t){const n=Array.isArray(t)?t:t.split(\",\"),o=e.name||\"\",l=e.type||\"\",r=l.replace(/\\/.*$/,\"\");return n.some(a=>{const i=a.trim();if(/^\\*(\\/\\*)?$/.test(a))return!0;if(i.charAt(0)===\".\"){const s=o.toLowerCase(),c=i.toLowerCase();let u=[c];return(c===\".jpg\"||c===\".jpeg\")&&(u=[\".jpg\",\".jpeg\"]),u.some(d=>s.endsWith(d))}return/\\/\\*$/.test(i)?r===i.replace(/\\/.*$/,\"\"):!!(l===i||/^\\w+$/.test(i))})}return!0};function yG(e,t){const n=e.createReader();let o=[];function l(){n.readEntries(r=>{const a=Array.prototype.slice.apply(r);o=o.concat(a),!a.length?t(o):l()})}l()}const SG=(e,t,n)=>{const o=(l,r)=>{l.path=r||\"\",l.isFile?l.file(a=>{n(a)&&(l.fullPath&&!a.webkitRelativePath&&(Object.defineProperties(a,{webkitRelativePath:{writable:!0}}),a.webkitRelativePath=l.fullPath.replace(/^\\//,\"\"),Object.defineProperties(a,{webkitRelativePath:{writable:!1}})),t([a]))}):l.isDirectory&&yG(l,a=>{a.forEach(i=>{o(i,`${r}${l.name}/`)})})};e.forEach(l=>{o(l.webkitGetAsEntry())})},N2=()=>({capture:[Boolean,String],multipart:{type:Boolean,default:void 0},name:String,disabled:{type:Boolean,default:void 0},componentTag:String,action:[String,Function],method:String,directory:{type:Boolean,default:void 0},data:[Object,Function],headers:Object,accept:String,multiple:{type:Boolean,default:void 0},onBatchStart:Function,onReject:Function,onStart:Function,onError:Function,onSuccess:Function,onProgress:Function,beforeUpload:Function,customRequest:Function,withCredentials:{type:Boolean,default:void 0},openFileDialogOnClick:{type:Boolean,default:void 0},prefixCls:String,id:String,onMouseenter:Function,onMouseleave:Function,onClick:Function});var $G=function(e,t,n,o){function l(r){return r instanceof n?r:new n(function(a){a(r)})}return new(n||(n=Promise))(function(r,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?r(u.value):l(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})},CG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const xG=ne({compatConfig:{MODE:3},name:\"AjaxUploader\",inheritAttrs:!1,props:N2(),setup(e,t){let{slots:n,attrs:o,expose:l}=t;const r=Z(jf()),a={},i=Z();let s=!1;const c=(S,$)=>$G(this,void 0,void 0,function*(){const{beforeUpload:w}=e;let C=S;if(w){try{C=yield w(S,$)}catch{C=!1}if(C===!1)return{origin:S,parsedFile:null,action:null,data:null}}const{action:_}=e;let x;typeof _==\"function\"?x=yield _(S):x=_;const{data:P}=e;let E;typeof P==\"function\"?E=yield P(S):E=P;const M=(typeof C==\"object\"||typeof C==\"string\")&&C?C:S;let O;M instanceof File?O=M:O=new File([M],S.name,{type:S.type});const R=O;return R.uid=S.uid,{origin:S,data:E,parsedFile:R,action:x}}),u=S=>{let{data:$,origin:w,action:C,parsedFile:_}=S;if(!s)return;const{onStart:x,customRequest:P,name:E,headers:M,withCredentials:O,method:R}=e,{uid:D}=w,z=P||gG,T={action:C,filename:E,data:$,file:_,headers:M,withCredentials:O,method:R||\"post\",onProgress:k=>{const{onProgress:B}=e;B?.(k,_)},onSuccess:(k,B)=>{const{onSuccess:L}=e;L?.(k,_,B),delete a[D]},onError:(k,B)=>{const{onError:L}=e;L?.(k,B,_),delete a[D]}};x(w),a[D]=z(T)},d=()=>{r.value=jf()},p=S=>{if(S){const $=S.uid?S.uid:S;a[$]&&a[$].abort&&a[$].abort(),delete a[$]}else Object.keys(a).forEach($=>{a[$]&&a[$].abort&&a[$].abort(),delete a[$]})};Be(()=>{s=!0}),ot(()=>{s=!1,p()});const m=S=>{const $=[...S],w=$.map(C=>(C.uid=jf(),c(C,$)));Promise.all(w).then(C=>{const{onBatchStart:_}=e;_?.(C.map(x=>{let{origin:P,parsedFile:E}=x;return{file:P,parsedFile:E}})),C.filter(x=>x.parsedFile!==null).forEach(x=>{u(x)})})},g=S=>{const{accept:$,directory:w}=e,{files:C}=S.target,_=[...C].filter(x=>!w||Wf(x,$));m(_),d()},v=S=>{const $=i.value;if(!$)return;const{onClick:w}=e;$.click(),w&&w(S)},y=S=>{S.key===\"Enter\"&&v(S)},b=S=>{const{multiple:$}=e;if(S.preventDefault(),S.type!==\"dragover\")if(e.directory)SG(Array.prototype.slice.call(S.dataTransfer.items),m,w=>Wf(w,e.accept));else{const w=hP(Array.prototype.slice.call(S.dataTransfer.files),x=>Wf(x,e.accept));let C=w[0];const _=w[1];$===!1&&(C=C.slice(0,1)),m(C),_.length&&e.onReject&&e.onReject(_)}};return l({abort:p}),()=>{var S;const{componentTag:$,prefixCls:w,disabled:C,id:_,multiple:x,accept:P,capture:E,directory:M,openFileDialogOnClick:O,onMouseenter:R,onMouseleave:D}=e,z=CG(e,[\"componentTag\",\"prefixCls\",\"disabled\",\"id\",\"multiple\",\"accept\",\"capture\",\"directory\",\"openFileDialogOnClick\",\"onMouseenter\",\"onMouseleave\"]),T={[w]:!0,[`${w}-disabled`]:C,[o.class]:!!o.class},k=M?{directory:\"directory\",webkitdirectory:\"webkitdirectory\"}:{};return f($,A(A({},C?{}:{onClick:O?v:()=>{},onKeydown:O?y:()=>{},onMouseenter:R,onMouseleave:D,onDrop:b,onDragover:b,tabindex:\"0\"}),{},{class:T,role:\"button\",style:o.style}),{default:()=>[f(\"input\",A(A(A({},Gl(z,{aria:!0,data:!0})),{},{id:_,type:\"file\",ref:i,onClick:L=>L.stopPropagation(),onCancel:L=>L.stopPropagation(),key:r.value,style:{display:\"none\"},accept:P},k),{},{multiple:x,onChange:g},E!=null?{capture:E}:{}),null),(S=n.default)===null||S===void 0?void 0:S.call(n)]})}}});function Vf(){}const MS=ne({compatConfig:{MODE:3},name:\"Upload\",inheritAttrs:!1,props:Je(N2(),{componentTag:\"span\",prefixCls:\"rc-upload\",data:{},headers:{},name:\"file\",multipart:!1,onStart:Vf,onError:Vf,onSuccess:Vf,multiple:!1,beforeUpload:null,customRequest:null,withCredentials:!1,openFileDialogOnClick:!0}),setup(e,t){let{slots:n,attrs:o,expose:l}=t;const r=Z();return l({abort:i=>{var s;(s=r.value)===null||s===void 0||s.abort(i)}}),()=>f(xG,A(A(A({},e),o),{},{ref:r}),n)}});function B2(){return{capture:Fe([Boolean,String]),type:ke(),name:String,defaultFileList:ct(),fileList:ct(),action:Fe([String,Function]),directory:ye(),data:Fe([Object,Function]),method:ke(),headers:De(),showUploadList:Fe([Boolean,Object]),multiple:ye(),accept:String,beforeUpload:de(),onChange:de(),\"onUpdate:fileList\":de(),onDrop:de(),listType:ke(),onPreview:de(),onDownload:de(),onReject:de(),onRemove:de(),remove:de(),supportServerRender:ye(),disabled:ye(),prefixCls:String,customRequest:de(),withCredentials:ye(),openFileDialogOnClick:ye(),locale:De(),id:String,previewFile:de(),transformFile:de(),iconRender:de(),isImageUrl:de(),progress:De(),itemRender:de(),maxCount:Number,height:Fe([Number,String]),removeIcon:de(),downloadIcon:de(),previewIcon:de()}}function wG(){return{listType:ke(),onPreview:de(),onDownload:de(),onRemove:de(),items:ct(),progress:De(),prefixCls:ke(),showRemoveIcon:ye(),showDownloadIcon:ye(),showPreviewIcon:ye(),removeIcon:de(),downloadIcon:de(),previewIcon:de(),locale:De(void 0),previewFile:de(),iconRender:de(),isImageUrl:de(),appendAction:de(),appendActionVisible:ye(),itemRender:de()}}function Ds(e){return h(h({},e),{lastModified:e.lastModified,lastModifiedDate:e.lastModifiedDate,name:e.name,size:e.size,type:e.type,uid:e.uid,percent:0,originFileObj:e})}function Rs(e,t){const n=[...t],o=n.findIndex(l=>{let{uid:r}=l;return r===e.uid});return o===-1?n.push(e):n[o]=e,n}function Kf(e,t){const n=e.uid!==void 0?\"uid\":\"name\";return t.filter(o=>o[n]===e[n])[0]}function _G(e,t){const n=e.uid!==void 0?\"uid\":\"name\",o=t.filter(l=>l[n]!==e[n]);return o.length===t.length?null:o}const IG=function(){const t=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\").split(\"/\"),o=t[t.length-1].split(/#|\\?/)[0];return(/\\.[^./\\\\]*$/.exec(o)||[\"\"])[0]},L2=e=>e.indexOf(\"image/\")===0,PG=e=>{if(e.type&&!e.thumbUrl)return L2(e.type);const t=e.thumbUrl||e.url||\"\",n=IG(t);return/^data:image\\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)?!0:!(/^data:/.test(t)||n)},Il=200;function TG(e){return new Promise(t=>{if(!e.type||!L2(e.type)){t(\"\");return}const n=document.createElement(\"canvas\");n.width=Il,n.height=Il,n.style.cssText=`position: fixed; left: 0; top: 0; width: ${Il}px; height: ${Il}px; z-index: 9999; display: none;`,document.body.appendChild(n);const o=n.getContext(\"2d\"),l=new Image;if(l.onload=()=>{const{width:r,height:a}=l;let i=Il,s=Il,c=0,u=0;r>a?(s=a*(Il/r),u=-(s-i)/2):(i=r*(Il/a),c=-(i-s)/2),o.drawImage(l,c,u,i,s);const d=n.toDataURL();document.body.removeChild(n),t(d)},l.crossOrigin=\"anonymous\",e.type.startsWith(\"image/svg+xml\")){const r=new FileReader;r.addEventListener(\"load\",()=>{r.result&&(l.src=r.result)}),r.readAsDataURL(e)}else l.src=window.URL.createObjectURL(e)})}const OG=()=>({prefixCls:String,locale:De(void 0),file:De(),items:ct(),listType:ke(),isImgUrl:de(),showRemoveIcon:ye(),showDownloadIcon:ye(),showPreviewIcon:ye(),removeIcon:de(),downloadIcon:de(),previewIcon:de(),iconRender:de(),actionIconRender:de(),itemRender:de(),onPreview:de(),onClose:de(),onDownload:de(),progress:De()}),EG=ne({compatConfig:{MODE:3},name:\"ListItem\",inheritAttrs:!1,props:OG(),setup(e,t){let{slots:n,attrs:o}=t;var l;const r=ee(!1),a=ee();Be(()=>{a.value=setTimeout(()=>{r.value=!0},300)}),ot(()=>{clearTimeout(a.value)});const i=ee((l=e.file)===null||l===void 0?void 0:l.status);pe(()=>{var u;return(u=e.file)===null||u===void 0?void 0:u.status},u=>{u!==\"removed\"&&(i.value=u)});const{rootPrefixCls:s}=Te(\"upload\",e),c=I(()=>So(`${s.value}-fade`));return()=>{var u,d;const{prefixCls:p,locale:m,listType:g,file:v,items:y,progress:b,iconRender:S=n.iconRender,actionIconRender:$=n.actionIconRender,itemRender:w=n.itemRender,isImgUrl:C,showPreviewIcon:_,showRemoveIcon:x,showDownloadIcon:P,previewIcon:E=n.previewIcon,removeIcon:M=n.removeIcon,downloadIcon:O=n.downloadIcon,onPreview:R,onDownload:D,onClose:z}=e,{class:T,style:k}=o,B=S({file:v});let L=f(\"div\",{class:`${p}-text-icon`},[B]);if(g===\"picture\"||g===\"picture-card\")if(i.value===\"uploading\"||!v.thumbUrl&&!v.url){const ue={[`${p}-list-item-thumbnail`]:!0,[`${p}-list-item-file`]:i.value!==\"uploading\"};L=f(\"div\",{class:ue},[B])}else{const ue=C?.(v)?f(\"img\",{src:v.thumbUrl||v.url,alt:v.name,class:`${p}-list-item-image`,crossorigin:v.crossOrigin},null):B,be={[`${p}-list-item-thumbnail`]:!0,[`${p}-list-item-file`]:C&&!C(v)};L=f(\"a\",{class:be,onClick:Ce=>R(v,Ce),href:v.url||v.thumbUrl,target:\"_blank\",rel:\"noopener noreferrer\"},[ue])}const N={[`${p}-list-item`]:!0,[`${p}-list-item-${i.value}`]:!0},F=typeof v.linkProps==\"string\"?JSON.parse(v.linkProps):v.linkProps,j=x?$({customIcon:M?M({file:v}):f(r$,null,null),callback:()=>z(v),prefixCls:p,title:m.removeFile}):null,H=P&&i.value===\"done\"?$({customIcon:O?O({file:v}):f(rP,null,null),callback:()=>D(v),prefixCls:p,title:m.downloadFile}):null,K=g!==\"picture-card\"&&f(\"span\",{key:\"download-delete\",class:[`${p}-list-item-actions`,{picture:g===\"picture\"}]},[H,j]),G=`${p}-list-item-name`,V=v.url?[f(\"a\",A(A({key:\"view\",target:\"_blank\",rel:\"noopener noreferrer\",class:G,title:v.name},F),{},{href:v.url,onClick:ue=>R(v,ue)}),[v.name]),K]:[f(\"span\",{key:\"view\",class:G,onClick:ue=>R(v,ue),title:v.name},[v.name]),K],q={pointerEvents:\"none\",opacity:.5},Q=_?f(\"a\",{href:v.url||v.thumbUrl,target:\"_blank\",rel:\"noopener noreferrer\",style:v.url||v.thumbUrl?void 0:q,onClick:ue=>R(v,ue),title:m.previewFile},[E?E({file:v}):f(Em,null,null)]):null,oe=g===\"picture-card\"&&i.value!==\"uploading\"&&f(\"span\",{class:`${p}-list-item-actions`},[Q,i.value===\"done\"&&H,j]),le=f(\"div\",{class:N},[L,V,oe,r.value&&f(cn,c.value,{default:()=>[xn(f(\"div\",{class:`${p}-list-item-progress`},[\"percent\"in v?f(jg,A(A({},b),{},{type:\"line\",percent:v.percent}),null):null]),[[On,i.value===\"uploading\"]])]})]),Y={[`${p}-list-item-container`]:!0,[`${T}`]:!!T},J=v.response&&typeof v.response==\"string\"?v.response:((u=v.error)===null||u===void 0?void 0:u.statusText)||((d=v.error)===null||d===void 0?void 0:d.message)||m.uploadError,ce=i.value===\"error\"?f(Fn,{title:J,getPopupContainer:ue=>ue.parentNode},{default:()=>[le]}):le;return f(\"div\",{class:Y,style:k},[w?w({originNode:ce,file:v,fileList:y,actions:{download:D.bind(null,v),preview:R.bind(null,v),remove:z.bind(null,v)}}):ce])}}}),MG=(e,t)=>{let{slots:n}=t;var o;return kt((o=n.default)===null||o===void 0?void 0:o.call(n))[0]},AG=ne({compatConfig:{MODE:3},name:\"AUploadList\",props:Je(wG(),{listType:\"text\",progress:{strokeWidth:2,showInfo:!1},showRemoveIcon:!0,showDownloadIcon:!1,showPreviewIcon:!0,previewFile:TG,isImageUrl:PG,items:[],appendActionVisible:!0}),setup(e,t){let{slots:n,expose:o}=t;const l=ee(!1);Be(()=>{l.value==!0});const r=ee([]);pe(()=>e.items,function(){let v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];r.value=v.slice()},{immediate:!0,deep:!0}),ze(()=>{if(e.listType!==\"picture\"&&e.listType!==\"picture-card\")return;let v=!1;(e.items||[]).forEach((y,b)=>{typeof document>\"u\"||typeof window>\"u\"||!window.FileReader||!window.File||!(y.originFileObj instanceof File||y.originFileObj instanceof Blob)||y.thumbUrl!==void 0||(y.thumbUrl=\"\",e.previewFile&&e.previewFile(y.originFileObj).then(S=>{const $=S||\"\";$!==y.thumbUrl&&(r.value[b].thumbUrl=$,v=!0)}))}),v&&qS(r)});const a=(v,y)=>{if(e.onPreview)return y?.preventDefault(),e.onPreview(v)},i=v=>{typeof e.onDownload==\"function\"?e.onDownload(v):v.url&&window.open(v.url)},s=v=>{var y;(y=e.onRemove)===null||y===void 0||y.call(e,v)},c=v=>{let{file:y}=v;const b=e.iconRender||n.iconRender;if(b)return b({file:y,listType:e.listType});const S=y.status===\"uploading\",$=e.isImageUrl&&e.isImageUrl(y)?f(aP,null,null):f(iP,null,null);let w=S?f(eo,null,null):f(sP,null,null);return e.listType===\"picture\"?w=S?f(eo,null,null):$:e.listType===\"picture-card\"&&(w=S?e.locale.uploading:$),w},u=v=>{const{customIcon:y,callback:b,prefixCls:S,title:$}=v,w={type:\"text\",size:\"small\",title:$,onClick:()=>{b()},class:`${S}-list-item-action`};return Gt(y)?f(_t,w,{icon:()=>y}):f(_t,w,{default:()=>[f(\"span\",null,[y])]})};o({handlePreview:a,handleDownload:i});const{prefixCls:d,rootPrefixCls:p}=Te(\"upload\",e),m=I(()=>({[`${d.value}-list`]:!0,[`${d.value}-list-${e.listType}`]:!0})),g=I(()=>{const v=h({},zi(`${p.value}-motion-collapse`));delete v.onAfterAppear,delete v.onAfterEnter,delete v.onAfterLeave;const y=h(h({},Gu(`${d.value}-${e.listType===\"picture-card\"?\"animate-inline\":\"animate\"}`)),{class:m.value,appear:l.value});return e.listType!==\"picture-card\"?h(h({},v),y):y});return()=>{const{listType:v,locale:y,isImageUrl:b,showPreviewIcon:S,showRemoveIcon:$,showDownloadIcon:w,removeIcon:C,previewIcon:_,downloadIcon:x,progress:P,appendAction:E,itemRender:M,appendActionVisible:O}=e,R=E?.(),D=r.value;return f(Tu,A(A({},g.value),{},{tag:\"div\"}),{default:()=>[D.map(z=>{const{uid:T}=z;return f(EG,{key:T,locale:y,prefixCls:d.value,file:z,items:D,progress:P,listType:v,isImgUrl:b,showPreviewIcon:S,showRemoveIcon:$,showDownloadIcon:w,onPreview:a,onDownload:i,onClose:s,removeIcon:C,previewIcon:_,downloadIcon:x,itemRender:M},h(h({},n),{iconRender:c,actionIconRender:u}))}),E?xn(f(MG,{key:\"__ant_upload_appendAction\"},{default:()=>R}),[[On,!!O]]):null]})}}}),DG=e=>{const{componentCls:t,iconCls:n}=e;return{[`${t}-wrapper`]:{[`${t}-drag`]:{position:\"relative\",width:\"100%\",height:\"100%\",textAlign:\"center\",background:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:\"pointer\",transition:`border-color ${e.motionDurationSlow}`,[t]:{padding:`${e.padding}px 0`},[`${t}-btn`]:{display:\"table\",width:\"100%\",height:\"100%\",outline:\"none\"},[`${t}-drag-container`]:{display:\"table-cell\",verticalAlign:\"middle\"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimaryHover},[`p${t}-drag-icon`]:{marginBottom:e.margin,[n]:{color:e.colorPrimary,fontSize:e.uploadThumbnailSize}},[`p${t}-text`]:{margin:`0 0 ${e.marginXXS}px`,color:e.colorTextHeading,fontSize:e.fontSizeLG},[`p${t}-hint`]:{color:e.colorTextDescription,fontSize:e.fontSize},[`&${t}-disabled`]:{cursor:\"not-allowed\",[`p${t}-drag-icon ${n},\n            p${t}-text,\n            p${t}-hint\n          `]:{color:e.colorTextDisabled}}}}}},RG=e=>{const{componentCls:t,antCls:n,iconCls:o,fontSize:l,lineHeight:r}=e,a=`${t}-list-item`,i=`${a}-actions`,s=`${a}-action`,c=Math.round(l*r);return{[`${t}-wrapper`]:{[`${t}-list`]:h(h({},Do()),{lineHeight:e.lineHeight,[a]:{position:\"relative\",height:e.lineHeight*l,marginTop:e.marginXS,fontSize:l,display:\"flex\",alignItems:\"center\",transition:`background-color ${e.motionDurationSlow}`,\"&:hover\":{backgroundColor:e.controlItemBgHover},[`${a}-name`]:h(h({},Xt),{padding:`0 ${e.paddingXS}px`,lineHeight:r,flex:\"auto\",transition:`all ${e.motionDurationSlow}`}),[i]:{[s]:{opacity:0},[`${s}${n}-btn-sm`]:{height:c,border:0,lineHeight:1,\"> span\":{transform:\"scale(1)\"}},[`\n              ${s}:focus,\n              &.picture ${s}\n            `]:{opacity:1},[o]:{color:e.colorTextDescription,transition:`all ${e.motionDurationSlow}`},[`&:hover ${o}`]:{color:e.colorText}},[`${t}-icon ${o}`]:{color:e.colorTextDescription,fontSize:l},[`${a}-progress`]:{position:\"absolute\",bottom:-e.uploadProgressOffset,width:\"100%\",paddingInlineStart:l+e.paddingXS,fontSize:l,lineHeight:0,pointerEvents:\"none\",\"> div\":{margin:0}}},[`${a}:hover ${s}`]:{opacity:1,color:e.colorText},[`${a}-error`]:{color:e.colorError,[`${a}-name, ${t}-icon ${o}`]:{color:e.colorError},[i]:{[`${o}, ${o}:hover`]:{color:e.colorError},[s]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,\"&::before\":{display:\"table\",width:0,height:0,content:'\"\"'}}})}}},AS=new rt(\"uploadAnimateInlineIn\",{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),DS=new rt(\"uploadAnimateInlineOut\",{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),kG=e=>{const{componentCls:t}=e,n=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${n}-appear, ${n}-enter, ${n}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:\"forwards\"},[`${n}-appear, ${n}-enter`]:{animationName:AS},[`${n}-leave`]:{animationName:DS}}},AS,DS]},NG=e=>{const{componentCls:t,iconCls:n,uploadThumbnailSize:o,uploadProgressOffset:l}=e,r=`${t}-list`,a=`${r}-item`;return{[`${t}-wrapper`]:{[`${r}${r}-picture, ${r}${r}-picture-card`]:{[a]:{position:\"relative\",height:o+e.lineWidth*2+e.paddingXS*2,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,\"&:hover\":{background:\"transparent\"},[`${a}-thumbnail`]:h(h({},Xt),{width:o,height:o,lineHeight:`${o+e.paddingSM}px`,textAlign:\"center\",flex:\"none\",[n]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:\"block\",width:\"100%\",height:\"100%\",overflow:\"hidden\"}}),[`${a}-progress`]:{bottom:l,width:`calc(100% - ${e.paddingSM*2}px)`,marginTop:0,paddingInlineStart:o+e.paddingXS}},[`${a}-error`]:{borderColor:e.colorError,[`${a}-thumbnail ${n}`]:{\"svg path[fill='#e6f7ff']\":{fill:e.colorErrorBg},\"svg path[fill='#1890ff']\":{fill:e.colorError}}},[`${a}-uploading`]:{borderStyle:\"dashed\",[`${a}-name`]:{marginBottom:l}}}}}},BG=e=>{const{componentCls:t,iconCls:n,fontSizeLG:o,colorTextLightSolid:l}=e,r=`${t}-list`,a=`${r}-item`,i=e.uploadPicCardSize;return{[`${t}-wrapper${t}-picture-card-wrapper`]:h(h({},Do()),{display:\"inline-block\",width:\"100%\",[`${t}${t}-select`]:{width:i,height:i,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:\"center\",verticalAlign:\"top\",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:\"pointer\",transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",height:\"100%\",textAlign:\"center\"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${r}${r}-picture-card`]:{[`${r}-item-container`]:{display:\"inline-block\",width:i,height:i,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:\"top\"},\"&::after\":{display:\"none\"},[a]:{height:\"100%\",margin:0,\"&::before\":{position:\"absolute\",zIndex:1,width:`calc(100% - ${e.paddingXS*2}px)`,height:`calc(100% - ${e.paddingXS*2}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'\" \"'}},[`${a}:hover`]:{[`&::before, ${a}-actions`]:{opacity:1}},[`${a}-actions`]:{position:\"absolute\",insetInlineStart:0,zIndex:10,width:\"100%\",whiteSpace:\"nowrap\",textAlign:\"center\",opacity:0,transition:`all ${e.motionDurationSlow}`,[`${n}-eye, ${n}-download, ${n}-delete`]:{zIndex:10,width:o,margin:`0 ${e.marginXXS}px`,fontSize:o,cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`}},[`${a}-actions, ${a}-actions:hover`]:{[`${n}-eye, ${n}-download, ${n}-delete`]:{color:new vt(l).setAlpha(.65).toRgbString(),\"&:hover\":{color:l}}},[`${a}-thumbnail, ${a}-thumbnail img`]:{position:\"static\",display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"contain\"},[`${a}-name`]:{display:\"none\",textAlign:\"center\"},[`${a}-file + ${a}-name`]:{position:\"absolute\",bottom:e.margin,display:\"block\",width:`calc(100% - ${e.paddingXS*2}px)`},[`${a}-uploading`]:{[`&${a}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${n}-eye, ${n}-download, ${n}-delete`]:{display:\"none\"}},[`${a}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${e.paddingXS*2}px)`,paddingInlineStart:0}}})}},LG=e=>{const{componentCls:t}=e;return{[`${t}-rtl`]:{direction:\"rtl\"}}},FG=e=>{const{componentCls:t,colorTextDisabled:n}=e;return{[`${t}-wrapper`]:h(h({},qe(e)),{[t]:{outline:0,\"input[type='file']\":{cursor:\"pointer\"}},[`${t}-select`]:{display:\"inline-block\"},[`${t}-disabled`]:{color:n,cursor:\"not-allowed\"}})}},zG=Xe(\"Upload\",e=>{const{fontSizeHeading3:t,fontSize:n,lineHeight:o,lineWidth:l,controlHeightLG:r}=e,a=Math.round(n*o),i=Le(e,{uploadThumbnailSize:t*2,uploadProgressOffset:a/2+l,uploadPicCardSize:r*2.55});return[FG(i),DG(i),NG(i),BG(i),RG(i),kG(i),LG(i),Fi(i)]});var HG=function(e,t,n,o){function l(r){return r instanceof n?r:new n(function(a){a(r)})}return new(n||(n=Promise))(function(r,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?r(u.value):l(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})},jG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const qa=`__LIST_IGNORE_${Date.now()}__`,Oc=ne({compatConfig:{MODE:3},name:\"AUpload\",inheritAttrs:!1,props:Je(B2(),{type:\"select\",multiple:!1,action:\"\",data:{},accept:\"\",showUploadList:!0,listType:\"text\",supportServerRender:!0}),setup(e,t){let{slots:n,attrs:o,expose:l}=t;const r=Jt(),{prefixCls:a,direction:i,disabled:s}=Te(\"upload\",e),[c,u]=zG(a),d=jn(),p=I(()=>{var O;return(O=s.value)!==null&&O!==void 0?O:d.value}),[m,g]=Mt(e.defaultFileList||[],{value:Ve(e,\"fileList\"),postState:O=>{const R=Date.now();return(O??[]).map((D,z)=>(!D.uid&&!Object.isFrozen(D)&&(D.uid=`__AUTO__${R}_${z}__`),D))}}),v=Z(\"drop\"),y=Z(null);Be(()=>{Ot(e.fileList!==void 0||o.value===void 0,\"Upload\",\"`value` is not a valid prop, do you mean `fileList`?\"),Ot(e.transformFile===void 0,\"Upload\",\"`transformFile` is deprecated. Please use `beforeUpload` directly.\"),Ot(e.remove===void 0,\"Upload\",\"`remove` props is deprecated. Please use `remove` event.\")});const b=(O,R,D)=>{var z,T;let k=[...R];e.maxCount===1?k=k.slice(-1):e.maxCount&&(k=k.slice(0,e.maxCount)),g(k);const B={file:O,fileList:k};D&&(B.event=D),(z=e[\"onUpdate:fileList\"])===null||z===void 0||z.call(e,B.fileList),(T=e.onChange)===null||T===void 0||T.call(e,B),r.onFieldChange()},S=(O,R)=>HG(this,void 0,void 0,function*(){const{beforeUpload:D,transformFile:z}=e;let T=O;if(D){const k=yield D(O,R);if(k===!1)return!1;if(delete O[qa],k===qa)return Object.defineProperty(O,qa,{value:!0,configurable:!0}),!1;typeof k==\"object\"&&k&&(T=k)}return z&&(T=yield z(T)),T}),$=O=>{const R=O.filter(T=>!T.file[qa]);if(!R.length)return;const D=R.map(T=>Ds(T.file));let z=[...m.value];D.forEach(T=>{z=Rs(T,z)}),D.forEach((T,k)=>{let B=T;if(R[k].parsedFile)T.status=\"uploading\";else{const{originFileObj:L}=T;let N;try{N=new File([L],L.name,{type:L.type})}catch{N=new Blob([L],{type:L.type}),N.name=L.name,N.lastModifiedDate=new Date,N.lastModified=new Date().getTime()}N.uid=T.uid,B=N}b(B,z)})},w=(O,R,D)=>{try{typeof O==\"string\"&&(O=JSON.parse(O))}catch{}if(!Kf(R,m.value))return;const z=Ds(R);z.status=\"done\",z.percent=100,z.response=O,z.xhr=D;const T=Rs(z,m.value);b(z,T)},C=(O,R)=>{if(!Kf(R,m.value))return;const D=Ds(R);D.status=\"uploading\",D.percent=O.percent;const z=Rs(D,m.value);b(D,z,O)},_=(O,R,D)=>{if(!Kf(D,m.value))return;const z=Ds(D);z.error=O,z.response=R,z.status=\"error\";const T=Rs(z,m.value);b(z,T)},x=O=>{let R;const D=e.onRemove||e.remove;Promise.resolve(typeof D==\"function\"?D(O):D).then(z=>{var T,k;if(z===!1)return;const B=_G(O,m.value);B&&(R=h(h({},O),{status:\"removed\"}),(T=m.value)===null||T===void 0||T.forEach(L=>{const N=R.uid!==void 0?\"uid\":\"name\";L[N]===R[N]&&!Object.isFrozen(L)&&(L.status=\"removed\")}),(k=y.value)===null||k===void 0||k.abort(R),b(R,B))})},P=O=>{var R;v.value=O.type,O.type===\"drop\"&&((R=e.onDrop)===null||R===void 0||R.call(e,O))};l({onBatchStart:$,onSuccess:w,onProgress:C,onError:_,fileList:m,upload:y});const[E]=$o(\"Upload\",En.Upload,I(()=>e.locale)),M=(O,R)=>{const{removeIcon:D,previewIcon:z,downloadIcon:T,previewFile:k,onPreview:B,onDownload:L,isImageUrl:N,progress:F,itemRender:j,iconRender:H,showUploadList:K}=e,{showDownloadIcon:G,showPreviewIcon:V,showRemoveIcon:q}=typeof K==\"boolean\"?{}:K;return K?f(AG,{prefixCls:a.value,listType:e.listType,items:m.value,previewFile:k,onPreview:B,onDownload:L,onRemove:x,showRemoveIcon:!p.value&&q,showPreviewIcon:V,showDownloadIcon:G,removeIcon:D,previewIcon:z,downloadIcon:T,iconRender:H,locale:E.value,isImageUrl:N,progress:F,itemRender:j,appendActionVisible:R,appendAction:O},h({},n)):O?.()};return()=>{var O,R,D;const{listType:z,type:T}=e,{class:k,style:B}=o,L=jG(o,[\"class\",\"style\"]),N=h(h(h({onBatchStart:$,onError:_,onProgress:C,onSuccess:w},L),e),{id:(O=e.id)!==null&&O!==void 0?O:r.id.value,prefixCls:a.value,beforeUpload:S,onChange:void 0,disabled:p.value});delete N.remove,(!n.default||p.value)&&delete N.id;const F={[`${a.value}-rtl`]:i.value===\"rtl\"};if(T===\"drag\"){const G=re(a.value,{[`${a.value}-drag`]:!0,[`${a.value}-drag-uploading`]:m.value.some(V=>V.status===\"uploading\"),[`${a.value}-drag-hover`]:v.value===\"dragover\",[`${a.value}-disabled`]:p.value,[`${a.value}-rtl`]:i.value===\"rtl\"},o.class,u.value);return c(f(\"span\",A(A({},o),{},{class:re(`${a.value}-wrapper`,F,k,u.value)}),[f(\"div\",{class:G,onDrop:P,onDragover:P,onDragleave:P,style:o.style},[f(MS,A(A({},N),{},{ref:y,class:`${a.value}-btn`}),A({default:()=>[f(\"div\",{class:`${a.value}-drag-container`},[(R=n.default)===null||R===void 0?void 0:R.call(n)])]},n))]),M()]))}const j=re(a.value,{[`${a.value}-select`]:!0,[`${a.value}-select-${z}`]:!0,[`${a.value}-disabled`]:p.value,[`${a.value}-rtl`]:i.value===\"rtl\"}),H=xt((D=n.default)===null||D===void 0?void 0:D.call(n)),K=G=>f(\"div\",{class:j,style:G},[f(MS,A(A({},N),{},{ref:y}),n)]);return c(z===\"picture-card\"?f(\"span\",A(A({},o),{},{class:re(`${a.value}-wrapper`,`${a.value}-picture-card-wrapper`,F,o.class,u.value)}),[M(K,!!(H&&H.length))]):f(\"span\",A(A({},o),{},{class:re(`${a.value}-wrapper`,F,o.class,u.value)}),[K(H&&H.length?void 0:{display:\"none\"}),M()]))}}});var RS=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Ec=ne({compatConfig:{MODE:3},name:\"AUploadDragger\",inheritAttrs:!1,props:B2(),setup(e,t){let{slots:n,attrs:o}=t;return()=>{const{height:l}=e,r=RS(e,[\"height\"]),{style:a}=o,i=RS(o,[\"style\"]),s=h(h(h({},r),i),{type:\"drag\",style:h(h({},a),{height:typeof l==\"number\"?`${l}px`:l})});return f(Oc,s,n)}}}),WG=Ec,VG=h(Oc,{Dragger:Ec,LIST_IGNORE:qa,install(e){return e.component(Oc.name,Oc),e.component(Ec.name,Ec),e}});function KG(e){return e.replace(/([A-Z])/g,\"-$1\").toLowerCase()}function GG(e){return Object.keys(e).map(t=>`${KG(t)}: ${e[t]};`).join(\" \")}function kS(){return window.devicePixelRatio||1}function Gf(e,t,n,o){e.translate(t,n),e.rotate(Math.PI/180*Number(o)),e.translate(-t,-n)}const XG=(e,t)=>{let n=!1;return e.removedNodes.length&&(n=Array.from(e.removedNodes).some(o=>o===t)),e.type===\"attributes\"&&e.target===t&&(n=!0),n};var UG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};function YG(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{window:o=bx}=n,l=UG(n,[\"window\"]);let r;const a=gx(()=>o&&\"MutationObserver\"in o),i=()=>{r&&(r.disconnect(),r=void 0)},s=pe(()=>ug(e),u=>{i(),a.value&&o&&u&&(r=new MutationObserver(t),r.observe(u,l))},{immediate:!0}),c=()=>{i(),s()};return vx(c),{isSupported:a,stop:c}}const Xf=2,NS=3,qG=()=>({zIndex:Number,rotate:Number,width:Number,height:Number,image:String,content:Fe([String,Array]),font:De(),rootClassName:String,gap:ct(),offset:ct()}),ZG=ne({name:\"AWatermark\",inheritAttrs:!1,props:Je(qG(),{zIndex:9,rotate:-22,font:{},gap:[100,100]}),setup(e,t){let{slots:n,attrs:o}=t;const[,l]=yl(),r=ee(),a=ee(),i=ee(!1),s=I(()=>{var M,O;return(O=(M=e.gap)===null||M===void 0?void 0:M[0])!==null&&O!==void 0?O:100}),c=I(()=>{var M,O;return(O=(M=e.gap)===null||M===void 0?void 0:M[1])!==null&&O!==void 0?O:100}),u=I(()=>s.value/2),d=I(()=>c.value/2),p=I(()=>{var M,O;return(O=(M=e.offset)===null||M===void 0?void 0:M[0])!==null&&O!==void 0?O:u.value}),m=I(()=>{var M,O;return(O=(M=e.offset)===null||M===void 0?void 0:M[1])!==null&&O!==void 0?O:d.value}),g=I(()=>{var M,O;return(O=(M=e.font)===null||M===void 0?void 0:M.fontSize)!==null&&O!==void 0?O:l.value.fontSizeLG}),v=I(()=>{var M,O;return(O=(M=e.font)===null||M===void 0?void 0:M.fontWeight)!==null&&O!==void 0?O:\"normal\"}),y=I(()=>{var M,O;return(O=(M=e.font)===null||M===void 0?void 0:M.fontStyle)!==null&&O!==void 0?O:\"normal\"}),b=I(()=>{var M,O;return(O=(M=e.font)===null||M===void 0?void 0:M.fontFamily)!==null&&O!==void 0?O:\"sans-serif\"}),S=I(()=>{var M,O;return(O=(M=e.font)===null||M===void 0?void 0:M.color)!==null&&O!==void 0?O:l.value.colorFill}),$=I(()=>{var M;const O={zIndex:(M=e.zIndex)!==null&&M!==void 0?M:9,position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\",backgroundRepeat:\"repeat\"};let R=p.value-u.value,D=m.value-d.value;return R>0&&(O.left=`${R}px`,O.width=`calc(100% - ${R}px)`,R=0),D>0&&(O.top=`${D}px`,O.height=`calc(100% - ${D}px)`,D=0),O.backgroundPosition=`${R}px ${D}px`,O}),w=()=>{a.value&&(a.value.remove(),a.value=void 0)},C=(M,O)=>{var R;r.value&&a.value&&(i.value=!0,a.value.setAttribute(\"style\",GG(h(h({},$.value),{backgroundImage:`url('${M}')`,backgroundSize:`${(s.value+O)*Xf}px`}))),(R=r.value)===null||R===void 0||R.append(a.value),setTimeout(()=>{i.value=!1}))},_=M=>{let O=120,R=64;const D=e.content,z=e.image,T=e.width,k=e.height;if(!z&&M.measureText){M.font=`${Number(g.value)}px ${b.value}`;const B=Array.isArray(D)?D:[D],L=B.map(N=>M.measureText(N).width);O=Math.ceil(Math.max(...L)),R=Number(g.value)*B.length+(B.length-1)*NS}return[T??O,k??R]},x=(M,O,R,D,z)=>{const T=kS(),k=e.content,B=Number(g.value)*T;M.font=`${y.value} normal ${v.value} ${B}px/${z}px ${b.value}`,M.fillStyle=S.value,M.textAlign=\"center\",M.textBaseline=\"top\",M.translate(D/2,0);const L=Array.isArray(k)?k:[k];L?.forEach((N,F)=>{M.fillText(N??\"\",O,R+F*(B+NS*T))})},P=()=>{var M;const O=document.createElement(\"canvas\"),R=O.getContext(\"2d\"),D=e.image,z=(M=e.rotate)!==null&&M!==void 0?M:-22;if(R){a.value||(a.value=document.createElement(\"div\"));const T=kS(),[k,B]=_(R),L=(s.value+k)*T,N=(c.value+B)*T;O.setAttribute(\"width\",`${L*Xf}px`),O.setAttribute(\"height\",`${N*Xf}px`);const F=s.value*T/2,j=c.value*T/2,H=k*T,K=B*T,G=(H+s.value*T)/2,V=(K+c.value*T)/2,q=F+L,Q=j+N,oe=G+L,le=V+N;if(R.save(),Gf(R,G,V,z),D){const Y=new Image;Y.onload=()=>{R.drawImage(Y,F,j,H,K),R.restore(),Gf(R,oe,le,z),R.drawImage(Y,q,Q,H,K),C(O.toDataURL(),k)},Y.crossOrigin=\"anonymous\",Y.referrerPolicy=\"no-referrer\",Y.src=D}else x(R,F,j,H,K),R.restore(),Gf(R,oe,le,z),x(R,q,Q,H,K),C(O.toDataURL(),k)}};return Be(()=>{P()}),pe(()=>[e,l.value.colorFill,l.value.fontSizeLG],()=>{P()},{deep:!0,flush:\"post\"}),ot(()=>{w()}),YG(r,M=>{i.value||M.forEach(O=>{XG(O,a.value)&&(w(),P())})},{attributes:!0,subtree:!0,childList:!0,attributeFilter:[\"style\",\"class\"]}),()=>{var M;return f(\"div\",A(A({},o),{},{ref:r,class:[o.class,e.rootClassName],style:[{position:\"relative\"},o.style]}),[(M=n.default)===null||M===void 0?void 0:M.call(n)])}}}),QG=Dt(ZG);function BS(e,t){return{[`${e}, ${e}:hover, ${e}:focus`]:{color:t.colorTextDisabled,cursor:\"not-allowed\"}}}function LS(e){return{backgroundColor:e.bgColorSelected,boxShadow:e.boxShadow}}const JG=h({overflow:\"hidden\"},Xt),eX=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h({},qe(e)),{display:\"inline-block\",padding:e.segmentedContainerPadding,color:e.labelColor,backgroundColor:e.bgColor,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,[`${t}-group`]:{position:\"relative\",display:\"flex\",alignItems:\"stretch\",justifyItems:\"flex-start\",width:\"100%\"},[`&${t}-rtl`]:{direction:\"rtl\"},[`&${t}-block`]:{display:\"flex\"},[`&${t}-block ${t}-item`]:{flex:1,minWidth:0},[`${t}-item`]:{position:\"relative\",textAlign:\"center\",cursor:\"pointer\",transition:`color ${e.motionDurationMid} ${e.motionEaseInOut}`,borderRadius:e.borderRadiusSM,\"&-selected\":h(h({},LS(e)),{color:e.labelColorHover}),\"&::after\":{content:'\"\"',position:\"absolute\",width:\"100%\",height:\"100%\",top:0,insetInlineStart:0,borderRadius:\"inherit\",transition:`background-color ${e.motionDurationMid}`,pointerEvents:\"none\"},[`&:hover:not(${t}-item-selected):not(${t}-item-disabled)`]:{color:e.labelColorHover,\"&::after\":{backgroundColor:e.bgColorHover}},\"&-label\":h({minHeight:e.controlHeight-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeight-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`},JG),\"&-icon + *\":{marginInlineStart:e.marginSM/2},\"&-input\":{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:0,height:0,opacity:0,pointerEvents:\"none\"}},[`${t}-thumb`]:h(h({},LS(e)),{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:0,height:\"100%\",padding:`${e.paddingXXS}px 0`,borderRadius:e.borderRadiusSM,[`& ~ ${t}-item:not(${t}-item-selected):not(${t}-item-disabled)::after`]:{backgroundColor:\"transparent\"}}),[`&${t}-lg`]:{borderRadius:e.borderRadiusLG,[`${t}-item-label`]:{minHeight:e.controlHeightLG-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightLG-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`,fontSize:e.fontSizeLG},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadius}},[`&${t}-sm`]:{borderRadius:e.borderRadiusSM,[`${t}-item-label`]:{minHeight:e.controlHeightSM-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightSM-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontalSM}px`},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadiusXS}}}),BS(`&-disabled ${t}-item`,e)),BS(`${t}-item-disabled`,e)),{[`${t}-thumb-motion-appear-active`]:{transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOut}, width ${e.motionDurationSlow} ${e.motionEaseInOut}`,willChange:\"transform, width\"}})}},tX=Xe(\"Segmented\",e=>{const{lineWidthBold:t,lineWidth:n,colorTextLabel:o,colorText:l,colorFillSecondary:r,colorBgLayout:a,colorBgElevated:i}=e,s=Le(e,{segmentedPaddingHorizontal:e.controlPaddingHorizontal-n,segmentedPaddingHorizontalSM:e.controlPaddingHorizontalSM-n,segmentedContainerPadding:t,labelColor:o,labelColorHover:l,bgColor:a,bgColorHover:r,bgColorSelected:i});return[eX(s)]}),FS=e=>e?{left:e.offsetLeft,right:e.parentElement.clientWidth-e.clientWidth-e.offsetLeft,width:e.clientWidth}:null,Wr=e=>e!==void 0?`${e}px`:void 0,nX=ne({props:{value:wt(),getValueIndex:wt(),prefixCls:wt(),motionName:wt(),onMotionStart:wt(),onMotionEnd:wt(),direction:wt(),containerRef:wt()},emits:[\"motionStart\",\"motionEnd\"],setup(e,t){let{emit:n}=t;const o=Z(),l=g=>{var v;const y=e.getValueIndex(g),b=(v=e.containerRef.value)===null||v===void 0?void 0:v.querySelectorAll(`.${e.prefixCls}-item`)[y];return b?.offsetParent&&b},r=Z(null),a=Z(null);pe(()=>e.value,(g,v)=>{const y=l(v),b=l(g),S=FS(y),$=FS(b);r.value=S,a.value=$,n(y&&b?\"motionStart\":\"motionEnd\")},{flush:\"post\"});const i=I(()=>{var g,v;return e.direction===\"rtl\"?Wr(-((g=r.value)===null||g===void 0?void 0:g.right)):Wr((v=r.value)===null||v===void 0?void 0:v.left)}),s=I(()=>{var g,v;return e.direction===\"rtl\"?Wr(-((g=a.value)===null||g===void 0?void 0:g.right)):Wr((v=a.value)===null||v===void 0?void 0:v.left)});let c;const u=g=>{clearTimeout(c),it(()=>{g&&(g.style.transform=\"translateX(var(--thumb-start-left))\",g.style.width=\"var(--thumb-start-width)\")})},d=g=>{c=setTimeout(()=>{g&&(lu(g,`${e.motionName}-appear-active`),g.style.transform=\"translateX(var(--thumb-active-left))\",g.style.width=\"var(--thumb-active-width)\")})},p=g=>{r.value=null,a.value=null,g&&(g.style.transform=null,g.style.width=null,ru(g,`${e.motionName}-appear-active`)),n(\"motionEnd\")},m=I(()=>{var g,v;return{\"--thumb-start-left\":i.value,\"--thumb-start-width\":Wr((g=r.value)===null||g===void 0?void 0:g.width),\"--thumb-active-left\":s.value,\"--thumb-active-width\":Wr((v=a.value)===null||v===void 0?void 0:v.width)}});return ot(()=>{clearTimeout(c)}),()=>{const g={ref:o,style:m.value,class:[`${e.prefixCls}-thumb`]};return f(cn,{appear:!0,onBeforeEnter:u,onEnter:d,onAfterEnter:p},{default:()=>[!r.value||!a.value?null:f(\"div\",g,null)]})}}});function oX(e){return e.map(t=>typeof t==\"object\"&&t!==null?t:{label:t?.toString(),title:t?.toString(),value:t})}const lX=()=>({prefixCls:String,options:ct(),block:ye(),disabled:ye(),size:ke(),value:h(h({},Fe([String,Number])),{required:!0}),motionName:String,onChange:de(),\"onUpdate:value\":de()}),F2=(e,t)=>{let{slots:n,emit:o}=t;const{value:l,disabled:r,payload:a,title:i,prefixCls:s,label:c=n.label,checked:u,className:d}=e,p=m=>{r||o(\"change\",m,l)};return f(\"label\",{class:re({[`${s}-item-disabled`]:r},d)},[f(\"input\",{class:`${s}-item-input`,type:\"radio\",disabled:r,checked:u,onChange:p},null),f(\"div\",{class:`${s}-item-label`,title:typeof i==\"string\"?i:\"\"},[typeof c==\"function\"?c({value:l,disabled:r,payload:a,title:i}):c??l])])};F2.inheritAttrs=!1;const rX=ne({name:\"ASegmented\",inheritAttrs:!1,props:Je(lX(),{options:[],motionName:\"thumb-motion\"}),slots:Object,setup(e,t){let{emit:n,slots:o,attrs:l}=t;const{prefixCls:r,direction:a,size:i}=Te(\"segmented\",e),[s,c]=tX(r),u=ee(),d=ee(!1),p=I(()=>oX(e.options)),m=(g,v)=>{e.disabled||(n(\"update:value\",v),n(\"change\",v))};return()=>{const g=r.value;return s(f(\"div\",A(A({},l),{},{class:re(g,{[c.value]:!0,[`${g}-block`]:e.block,[`${g}-disabled`]:e.disabled,[`${g}-lg`]:i.value==\"large\",[`${g}-sm`]:i.value==\"small\",[`${g}-rtl`]:a.value===\"rtl\"},l.class),ref:u}),[f(\"div\",{class:`${g}-group`},[f(nX,{containerRef:u,prefixCls:g,value:e.value,motionName:`${g}-${e.motionName}`,direction:a.value,getValueIndex:v=>p.value.findIndex(y=>y.value===v),onMotionStart:()=>{d.value=!0},onMotionEnd:()=>{d.value=!1}},null),p.value.map(v=>f(F2,A(A({key:v.value,prefixCls:g,checked:v.value===e.value,onChange:m},v),{},{className:re(v.className,`${g}-item`,{[`${g}-item-selected`]:v.value===e.value&&!d.value}),disabled:!!e.disabled||!!v.disabled}),o))])]))}}}),aX=Dt(rX),iX=e=>{const{componentCls:t}=e;return{[t]:h(h({},qe(e)),{display:\"flex\",justifyContent:\"center\",alignItems:\"center\",padding:e.paddingSM,backgroundColor:e.colorWhite,borderRadius:e.borderRadiusLG,border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",[`& > ${t}-mask`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,zIndex:10,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",width:\"100%\",height:\"100%\",color:e.colorText,lineHeight:e.lineHeight,background:e.QRCodeMaskBackgroundColor,textAlign:\"center\",[`& > ${t}-expired , & > ${t}-scanned`]:{color:e.QRCodeTextColor}},\"&-icon\":{marginBlockEnd:e.marginXS,fontSize:e.controlHeight}}),[`${t}-borderless`]:{borderColor:\"transparent\"}}},sX=Xe(\"QRCode\",e=>iX(Le(e,{QRCodeTextColor:\"rgba(0, 0, 0, 0.88)\",QRCodeMaskBackgroundColor:\"rgba(255, 255, 255, 0.96)\"}))),Zg=()=>({size:{type:Number,default:160},value:{type:String,required:!0},type:ke(\"canvas\"),color:String,bgColor:String,includeMargin:Boolean,imageSettings:De()}),cX=()=>h(h({},Zg()),{errorLevel:ke(\"M\"),icon:String,iconSize:{type:Number,default:40},status:ke(\"active\"),bordered:{type:Boolean,default:!0}});/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */var mo;(function(e){class t{static encodeText(i,s){const c=e.QrSegment.makeSegments(i);return t.encodeSegments(c,s)}static encodeBinary(i,s){const c=e.QrSegment.makeBytes(i);return t.encodeSegments([c],s)}static encodeSegments(i,s){let c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:40,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1,p=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;if(!(t.MIN_VERSION<=c&&c<=u&&u<=t.MAX_VERSION)||d<-1||d>7)throw new RangeError(\"Invalid value\");let m,g;for(m=c;;m++){const S=t.getNumDataCodewords(m,s)*8,$=r.getTotalBits(i,m);if($<=S){g=$;break}if(m>=u)throw new RangeError(\"Data too long\")}for(const S of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])p&&g<=t.getNumDataCodewords(m,S)*8&&(s=S);const v=[];for(const S of i){n(S.mode.modeBits,4,v),n(S.numChars,S.mode.numCharCountBits(m),v);for(const $ of S.getData())v.push($)}l(v.length==g);const y=t.getNumDataCodewords(m,s)*8;l(v.length<=y),n(0,Math.min(4,y-v.length),v),n(0,(8-v.length%8)%8,v),l(v.length%8==0);for(let S=236;v.length<y;S^=253)n(S,8,v);const b=[];for(;b.length*8<v.length;)b.push(0);return v.forEach((S,$)=>b[$>>>3]|=S<<7-($&7)),new t(m,s,b,d)}constructor(i,s,c,u){if(this.version=i,this.errorCorrectionLevel=s,this.modules=[],this.isFunction=[],i<t.MIN_VERSION||i>t.MAX_VERSION)throw new RangeError(\"Version value out of range\");if(u<-1||u>7)throw new RangeError(\"Mask value out of range\");this.size=i*4+17;const d=[];for(let m=0;m<this.size;m++)d.push(!1);for(let m=0;m<this.size;m++)this.modules.push(d.slice()),this.isFunction.push(d.slice());this.drawFunctionPatterns();const p=this.addEccAndInterleave(c);if(this.drawCodewords(p),u==-1){let m=1e9;for(let g=0;g<8;g++){this.applyMask(g),this.drawFormatBits(g);const v=this.getPenaltyScore();v<m&&(u=g,m=v),this.applyMask(g)}}l(0<=u&&u<=7),this.mask=u,this.applyMask(u),this.drawFormatBits(u),this.isFunction=[]}getModule(i,s){return 0<=i&&i<this.size&&0<=s&&s<this.size&&this.modules[s][i]}getModules(){return this.modules}drawFunctionPatterns(){for(let c=0;c<this.size;c++)this.setFunctionModule(6,c,c%2==0),this.setFunctionModule(c,6,c%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const i=this.getAlignmentPatternPositions(),s=i.length;for(let c=0;c<s;c++)for(let u=0;u<s;u++)c==0&&u==0||c==0&&u==s-1||c==s-1&&u==0||this.drawAlignmentPattern(i[c],i[u]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(i){const s=this.errorCorrectionLevel.formatBits<<3|i;let c=s;for(let d=0;d<10;d++)c=c<<1^(c>>>9)*1335;const u=(s<<10|c)^21522;l(u>>>15==0);for(let d=0;d<=5;d++)this.setFunctionModule(8,d,o(u,d));this.setFunctionModule(8,7,o(u,6)),this.setFunctionModule(8,8,o(u,7)),this.setFunctionModule(7,8,o(u,8));for(let d=9;d<15;d++)this.setFunctionModule(14-d,8,o(u,d));for(let d=0;d<8;d++)this.setFunctionModule(this.size-1-d,8,o(u,d));for(let d=8;d<15;d++)this.setFunctionModule(8,this.size-15+d,o(u,d));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let i=this.version;for(let c=0;c<12;c++)i=i<<1^(i>>>11)*7973;const s=this.version<<12|i;l(s>>>18==0);for(let c=0;c<18;c++){const u=o(s,c),d=this.size-11+c%3,p=Math.floor(c/3);this.setFunctionModule(d,p,u),this.setFunctionModule(p,d,u)}}drawFinderPattern(i,s){for(let c=-4;c<=4;c++)for(let u=-4;u<=4;u++){const d=Math.max(Math.abs(u),Math.abs(c)),p=i+u,m=s+c;0<=p&&p<this.size&&0<=m&&m<this.size&&this.setFunctionModule(p,m,d!=2&&d!=4)}}drawAlignmentPattern(i,s){for(let c=-2;c<=2;c++)for(let u=-2;u<=2;u++)this.setFunctionModule(i+u,s+c,Math.max(Math.abs(u),Math.abs(c))!=1)}setFunctionModule(i,s,c){this.modules[s][i]=c,this.isFunction[s][i]=!0}addEccAndInterleave(i){const s=this.version,c=this.errorCorrectionLevel;if(i.length!=t.getNumDataCodewords(s,c))throw new RangeError(\"Invalid argument\");const u=t.NUM_ERROR_CORRECTION_BLOCKS[c.ordinal][s],d=t.ECC_CODEWORDS_PER_BLOCK[c.ordinal][s],p=Math.floor(t.getNumRawDataModules(s)/8),m=u-p%u,g=Math.floor(p/u),v=[],y=t.reedSolomonComputeDivisor(d);for(let S=0,$=0;S<u;S++){const w=i.slice($,$+g-d+(S<m?0:1));$+=w.length;const C=t.reedSolomonComputeRemainder(w,y);S<m&&w.push(0),v.push(w.concat(C))}const b=[];for(let S=0;S<v[0].length;S++)v.forEach(($,w)=>{(S!=g-d||w>=m)&&b.push($[S])});return l(b.length==p),b}drawCodewords(i){if(i.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw new RangeError(\"Invalid argument\");let s=0;for(let c=this.size-1;c>=1;c-=2){c==6&&(c=5);for(let u=0;u<this.size;u++)for(let d=0;d<2;d++){const p=c-d,g=(c+1&2)==0?this.size-1-u:u;!this.isFunction[g][p]&&s<i.length*8&&(this.modules[g][p]=o(i[s>>>3],7-(s&7)),s++)}}l(s==i.length*8)}applyMask(i){if(i<0||i>7)throw new RangeError(\"Mask value out of range\");for(let s=0;s<this.size;s++)for(let c=0;c<this.size;c++){let u;switch(i){case 0:u=(c+s)%2==0;break;case 1:u=s%2==0;break;case 2:u=c%3==0;break;case 3:u=(c+s)%3==0;break;case 4:u=(Math.floor(c/3)+Math.floor(s/2))%2==0;break;case 5:u=c*s%2+c*s%3==0;break;case 6:u=(c*s%2+c*s%3)%2==0;break;case 7:u=((c+s)%2+c*s%3)%2==0;break;default:throw new Error(\"Unreachable\")}!this.isFunction[s][c]&&u&&(this.modules[s][c]=!this.modules[s][c])}}getPenaltyScore(){let i=0;for(let d=0;d<this.size;d++){let p=!1,m=0;const g=[0,0,0,0,0,0,0];for(let v=0;v<this.size;v++)this.modules[d][v]==p?(m++,m==5?i+=t.PENALTY_N1:m>5&&i++):(this.finderPenaltyAddHistory(m,g),p||(i+=this.finderPenaltyCountPatterns(g)*t.PENALTY_N3),p=this.modules[d][v],m=1);i+=this.finderPenaltyTerminateAndCount(p,m,g)*t.PENALTY_N3}for(let d=0;d<this.size;d++){let p=!1,m=0;const g=[0,0,0,0,0,0,0];for(let v=0;v<this.size;v++)this.modules[v][d]==p?(m++,m==5?i+=t.PENALTY_N1:m>5&&i++):(this.finderPenaltyAddHistory(m,g),p||(i+=this.finderPenaltyCountPatterns(g)*t.PENALTY_N3),p=this.modules[v][d],m=1);i+=this.finderPenaltyTerminateAndCount(p,m,g)*t.PENALTY_N3}for(let d=0;d<this.size-1;d++)for(let p=0;p<this.size-1;p++){const m=this.modules[d][p];m==this.modules[d][p+1]&&m==this.modules[d+1][p]&&m==this.modules[d+1][p+1]&&(i+=t.PENALTY_N2)}let s=0;for(const d of this.modules)s=d.reduce((p,m)=>p+(m?1:0),s);const c=this.size*this.size,u=Math.ceil(Math.abs(s*20-c*10)/c)-1;return l(0<=u&&u<=9),i+=u*t.PENALTY_N4,l(0<=i&&i<=2568888),i}getAlignmentPatternPositions(){if(this.version==1)return[];{const i=Math.floor(this.version/7)+2,s=this.version==32?26:Math.ceil((this.version*4+4)/(i*2-2))*2,c=[6];for(let u=this.size-7;c.length<i;u-=s)c.splice(1,0,u);return c}}static getNumRawDataModules(i){if(i<t.MIN_VERSION||i>t.MAX_VERSION)throw new RangeError(\"Version number out of range\");let s=(16*i+128)*i+64;if(i>=2){const c=Math.floor(i/7)+2;s-=(25*c-10)*c-55,i>=7&&(s-=36)}return l(208<=s&&s<=29648),s}static getNumDataCodewords(i,s){return Math.floor(t.getNumRawDataModules(i)/8)-t.ECC_CODEWORDS_PER_BLOCK[s.ordinal][i]*t.NUM_ERROR_CORRECTION_BLOCKS[s.ordinal][i]}static reedSolomonComputeDivisor(i){if(i<1||i>255)throw new RangeError(\"Degree out of range\");const s=[];for(let u=0;u<i-1;u++)s.push(0);s.push(1);let c=1;for(let u=0;u<i;u++){for(let d=0;d<s.length;d++)s[d]=t.reedSolomonMultiply(s[d],c),d+1<s.length&&(s[d]^=s[d+1]);c=t.reedSolomonMultiply(c,2)}return s}static reedSolomonComputeRemainder(i,s){const c=s.map(u=>0);for(const u of i){const d=u^c.shift();c.push(0),s.forEach((p,m)=>c[m]^=t.reedSolomonMultiply(p,d))}return c}static reedSolomonMultiply(i,s){if(i>>>8||s>>>8)throw new RangeError(\"Byte out of range\");let c=0;for(let u=7;u>=0;u--)c=c<<1^(c>>>7)*285,c^=(s>>>u&1)*i;return l(c>>>8==0),c}finderPenaltyCountPatterns(i){const s=i[1];l(s<=this.size*3);const c=s>0&&i[2]==s&&i[3]==s*3&&i[4]==s&&i[5]==s;return(c&&i[0]>=s*4&&i[6]>=s?1:0)+(c&&i[6]>=s*4&&i[0]>=s?1:0)}finderPenaltyTerminateAndCount(i,s,c){return i&&(this.finderPenaltyAddHistory(s,c),s=0),s+=this.size,this.finderPenaltyAddHistory(s,c),this.finderPenaltyCountPatterns(c)}finderPenaltyAddHistory(i,s){s[0]==0&&(i+=this.size),s.pop(),s.unshift(i)}}t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(a,i,s){if(i<0||i>31||a>>>i)throw new RangeError(\"Value out of range\");for(let c=i-1;c>=0;c--)s.push(a>>>c&1)}function o(a,i){return(a>>>i&1)!=0}function l(a){if(!a)throw new Error(\"Assertion error\")}class r{static makeBytes(i){const s=[];for(const c of i)n(c,8,s);return new r(r.Mode.BYTE,i.length,s)}static makeNumeric(i){if(!r.isNumeric(i))throw new RangeError(\"String contains non-numeric characters\");const s=[];for(let c=0;c<i.length;){const u=Math.min(i.length-c,3);n(parseInt(i.substring(c,c+u),10),u*3+1,s),c+=u}return new r(r.Mode.NUMERIC,i.length,s)}static makeAlphanumeric(i){if(!r.isAlphanumeric(i))throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");const s=[];let c;for(c=0;c+2<=i.length;c+=2){let u=r.ALPHANUMERIC_CHARSET.indexOf(i.charAt(c))*45;u+=r.ALPHANUMERIC_CHARSET.indexOf(i.charAt(c+1)),n(u,11,s)}return c<i.length&&n(r.ALPHANUMERIC_CHARSET.indexOf(i.charAt(c)),6,s),new r(r.Mode.ALPHANUMERIC,i.length,s)}static makeSegments(i){return i==\"\"?[]:r.isNumeric(i)?[r.makeNumeric(i)]:r.isAlphanumeric(i)?[r.makeAlphanumeric(i)]:[r.makeBytes(r.toUtf8ByteArray(i))]}static makeEci(i){const s=[];if(i<0)throw new RangeError(\"ECI assignment value out of range\");if(i<128)n(i,8,s);else if(i<16384)n(2,2,s),n(i,14,s);else if(i<1e6)n(6,3,s),n(i,21,s);else throw new RangeError(\"ECI assignment value out of range\");return new r(r.Mode.ECI,0,s)}static isNumeric(i){return r.NUMERIC_REGEX.test(i)}static isAlphanumeric(i){return r.ALPHANUMERIC_REGEX.test(i)}constructor(i,s,c){if(this.mode=i,this.numChars=s,this.bitData=c,s<0)throw new RangeError(\"Invalid argument\");this.bitData=c.slice()}getData(){return this.bitData.slice()}static getTotalBits(i,s){let c=0;for(const u of i){const d=u.mode.numCharCountBits(s);if(u.numChars>=1<<d)return 1/0;c+=4+d+u.bitData.length}return c}static toUtf8ByteArray(i){i=encodeURI(i);const s=[];for(let c=0;c<i.length;c++)i.charAt(c)!=\"%\"?s.push(i.charCodeAt(c)):(s.push(parseInt(i.substring(c+1,c+3),16)),c+=2);return s}}r.NUMERIC_REGEX=/^[0-9]*$/,r.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\\/:-]*$/,r.ALPHANUMERIC_CHARSET=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\",e.QrSegment=r})(mo||(mo={}));(function(e){(function(t){class n{constructor(l,r){this.ordinal=l,this.formatBits=r}}n.LOW=new n(0,1),n.MEDIUM=new n(1,0),n.QUARTILE=new n(2,3),n.HIGH=new n(3,2),t.Ecc=n})(e.QrCode||(e.QrCode={}))})(mo||(mo={}));(function(e){(function(t){class n{constructor(l,r){this.modeBits=l,this.numBitsCharCount=r}numCharCountBits(l){return this.numBitsCharCount[Math.floor((l+7)/17)]}}n.NUMERIC=new n(1,[10,12,14]),n.ALPHANUMERIC=new n(2,[9,11,13]),n.BYTE=new n(4,[8,16,16]),n.KANJI=new n(8,[8,10,12]),n.ECI=new n(7,[0,0,0]),t.Mode=n})(e.QrSegment||(e.QrSegment={}))})(mo||(mo={}));const z2={L:mo.QrCode.Ecc.LOW,M:mo.QrCode.Ecc.MEDIUM,Q:mo.QrCode.Ecc.QUARTILE,H:mo.QrCode.Ecc.HIGH},xm=128,H2=\"L\",j2=\"#FFFFFF\",W2=\"#000000\",V2=!1,uX=4,dX=0,fX=.1;function K2(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const n=[];return e.forEach(function(o,l){let r=null;o.forEach(function(a,i){if(!a&&r!==null){n.push(`M${r+t} ${l+t}h${i-r}v1H${r+t}z`),r=null;return}if(i===o.length-1){if(!a)return;r===null?n.push(`M${i+t},${l+t} h1v1H${i+t}z`):n.push(`M${r+t},${l+t} h${i+1-r}v1H${r+t}z`);return}a&&r===null&&(r=i)})}),n.join(\"\")}function G2(e,t){return e.slice().map((n,o)=>o<t.y||o>=t.y+t.h?n:n.map((l,r)=>r<t.x||r>=t.x+t.w?l:!1))}function X2(e,t,n,o){if(o==null)return null;const l=e.length+n*2,r=Math.floor(t*fX),a=l/t,i=(o.width||r)*a,s=(o.height||r)*a,c=o.x==null?e.length/2-i/2:o.x*a,u=o.y==null?e.length/2-s/2:o.y*a;let d=null;if(o.excavate){const p=Math.floor(c),m=Math.floor(u),g=Math.ceil(i+c-p),v=Math.ceil(s+u-m);d={x:p,y:m,w:g,h:v}}return{x:c,y:u,h:s,w:i,excavation:d}}function U2(e,t){return t!=null?Math.floor(t):e?uX:dX}const pX=(function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0})(),mX=ne({name:\"QRCodeCanvas\",inheritAttrs:!1,props:h(h({},Zg()),{level:String,bgColor:String,fgColor:String,marginSize:Number}),setup(e,t){let{attrs:n,expose:o}=t;const l=I(()=>{var s;return(s=e.imageSettings)===null||s===void 0?void 0:s.src}),r=ee(null),a=ee(null),i=ee(!1);return o({toDataURL:(s,c)=>{var u;return(u=r.value)===null||u===void 0?void 0:u.toDataURL(s,c)}}),ze(()=>{const{value:s,size:c=xm,level:u=H2,bgColor:d=j2,fgColor:p=W2,includeMargin:m=V2,marginSize:g,imageSettings:v}=e;if(r.value!=null){const y=r.value,b=y.getContext(\"2d\");if(!b)return;let S=mo.QrCode.encodeText(s,z2[u]).getModules();const $=U2(m,g),w=S.length+$*2,C=X2(S,c,$,v),_=a.value,x=i.value&&C!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;x&&C.excavation!=null&&(S=G2(S,C.excavation));const P=window.devicePixelRatio||1;y.height=y.width=c*P;const E=c/w*P;b.scale(E,E),b.fillStyle=d,b.fillRect(0,0,w,w),b.fillStyle=p,pX?b.fill(new Path2D(K2(S,$))):S.forEach(function(M,O){M.forEach(function(R,D){R&&b.fillRect(D+$,O+$,1,1)})}),x&&b.drawImage(_,C.x+$,C.y+$,C.w,C.h)}},{flush:\"post\"}),pe(l,()=>{i.value=!1}),()=>{var s;const c=(s=e.size)!==null&&s!==void 0?s:xm,u={height:`${c}px`,width:`${c}px`};let d=null;return l.value!=null&&(d=f(\"img\",{src:l.value,key:l.value,style:{display:\"none\"},onLoad:()=>{i.value=!0},ref:a},null)),f(He,null,[f(\"canvas\",A(A({},n),{},{style:[u,n.style],ref:r}),null),d])}}}),vX=ne({name:\"QRCodeSVG\",inheritAttrs:!1,props:h(h({},Zg()),{color:String,level:String,bgColor:String,fgColor:String,marginSize:Number,title:String}),setup(e){let t=null,n=null,o=null,l=null,r=null,a=null;return ze(()=>{const{value:i,size:s=xm,level:c=H2,includeMargin:u=V2,marginSize:d,imageSettings:p}=e;t=mo.QrCode.encodeText(i,z2[c]).getModules(),n=U2(u,d),o=t.length+n*2,l=X2(t,s,n,p),p!=null&&l!=null&&(l.excavation!=null&&(t=G2(t,l.excavation)),a=f(\"image\",{\"xlink:href\":p.src,height:l.h,width:l.w,x:l.x+n,y:l.y+n,preserveAspectRatio:\"none\"},null)),r=K2(t,n)}),()=>{const i=e.bgColor&&j2,s=e.fgColor&&W2;return f(\"svg\",{height:e.size,width:e.size,viewBox:`0 0 ${o} ${o}`},[!!e.title&&f(\"title\",null,[e.title]),f(\"path\",{fill:i,d:`M0,0 h${o}v${o}H0z`,\"shape-rendering\":\"crispEdges\"},null),f(\"path\",{fill:s,d:r,\"shape-rendering\":\"crispEdges\"},null),a])}}}),gX=ne({name:\"AQrcode\",inheritAttrs:!1,props:cX(),emits:[\"refresh\"],setup(e,t){let{emit:n,attrs:o,expose:l}=t;const[r]=$o(\"QRCode\"),{prefixCls:a}=Te(\"qrcode\",e),[i,s]=sX(a),[,c]=yl(),u=Z();l({toDataURL:(p,m)=>{var g;return(g=u.value)===null||g===void 0?void 0:g.toDataURL(p,m)}});const d=I(()=>{const{value:p,icon:m=\"\",size:g=160,iconSize:v=40,color:y=c.value.colorText,bgColor:b=\"transparent\",errorLevel:S=\"M\"}=e,$={src:m,x:void 0,y:void 0,height:v,width:v,excavate:!0};return{value:p,size:g-(c.value.paddingSM+c.value.lineWidth)*2,level:S,bgColor:b,fgColor:y,imageSettings:m?$:void 0}});return()=>{const p=a.value;return i(f(\"div\",A(A({},o),{},{style:[o.style,{width:`${e.size}px`,height:`${e.size}px`,backgroundColor:d.value.bgColor}],class:[s.value,p,{[`${p}-borderless`]:!e.bordered}]}),[e.status!==\"active\"&&f(\"div\",{class:`${p}-mask`},[e.status===\"loading\"&&f(Ko,null,null),e.status===\"expired\"&&f(He,null,[f(\"p\",{class:`${p}-expired`},[r.value.expired]),f(_t,{type:\"link\",onClick:m=>n(\"refresh\",m)},{default:()=>[r.value.refresh],icon:()=>f(cP,null,null)})]),e.status===\"scanned\"&&f(\"p\",{class:`${p}-scanned`},[r.value.scanned])]),e.type===\"canvas\"?f(mX,A({ref:u},d.value),null):f(vX,d.value,null)]))}}}),hX=Dt(gX);function bX(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:o,right:l,bottom:r,left:a}=e.getBoundingClientRect();return o>=0&&a>=0&&l<=t&&r<=n}function yX(e,t,n,o){const[l,r]=yt(void 0);ze(()=>{const u=typeof e.value==\"function\"?e.value():e.value;r(u||null)},{flush:\"post\"});const[a,i]=yt(null),s=()=>{if(!t.value){i(null);return}if(l.value){!bX(l.value)&&t.value&&l.value.scrollIntoView(o.value);const{left:u,top:d,width:p,height:m}=l.value.getBoundingClientRect(),g={left:u,top:d,width:p,height:m,radius:0};JSON.stringify(a.value)!==JSON.stringify(g)&&i(g)}else i(null)};return Be(()=>{pe([t,l],()=>{s()},{flush:\"post\",immediate:!0}),window.addEventListener(\"resize\",s)}),ot(()=>{window.removeEventListener(\"resize\",s)}),[I(()=>{var u,d;if(!a.value)return a.value;const p=((u=n.value)===null||u===void 0?void 0:u.offset)||6,m=((d=n.value)===null||d===void 0?void 0:d.radius)||2;return{left:a.value.left-p,top:a.value.top-p,width:a.value.width+p*2,height:a.value.height+p*2,radius:m}}),l]}const SX=()=>({arrow:Fe([Boolean,Object]),target:Fe([String,Function,Object]),title:Fe([String,Object]),description:Fe([String,Object]),placement:ke(),mask:Fe([Object,Boolean],!0),className:{type:String},style:De(),scrollIntoViewOptions:Fe([Boolean,Object])}),Qg=()=>h(h({},SX()),{prefixCls:{type:String},total:{type:Number},current:{type:Number},onClose:de(),onFinish:de(),renderPanel:de(),onPrev:de(),onNext:de()}),$X=ne({name:\"DefaultPanel\",inheritAttrs:!1,props:Qg(),setup(e,t){let{attrs:n}=t;return()=>{const{prefixCls:o,current:l,total:r,title:a,description:i,onClose:s,onPrev:c,onNext:u,onFinish:d}=e;return f(\"div\",A(A({},n),{},{class:re(`${o}-content`,n.class)}),[f(\"div\",{class:`${o}-inner`},[f(\"button\",{type:\"button\",onClick:s,\"aria-label\":\"Close\",class:`${o}-close`},[f(\"span\",{class:`${o}-close-x`},[bt(\"×\")])]),f(\"div\",{class:`${o}-header`},[f(\"div\",{class:`${o}-title`},[a])]),f(\"div\",{class:`${o}-description`},[i]),f(\"div\",{class:`${o}-footer`},[f(\"div\",{class:`${o}-sliders`},[r>1?[...Array.from({length:r}).keys()].map((p,m)=>f(\"span\",{key:p,class:m===l?\"active\":\"\"},null)):null]),f(\"div\",{class:`${o}-buttons`},[l!==0?f(\"button\",{class:`${o}-prev-btn`,onClick:c},[bt(\"Prev\")]):null,l===r-1?f(\"button\",{class:`${o}-finish-btn`,onClick:d},[bt(\"Finish\")]):f(\"button\",{class:`${o}-next-btn`,onClick:u},[bt(\"Next\")])])])])])}}}),CX=ne({name:\"TourStep\",inheritAttrs:!1,props:Qg(),setup(e,t){let{attrs:n}=t;return()=>{const{current:o,renderPanel:l}=e;return f(He,null,[typeof l==\"function\"?l(h(h({},n),e),o):f($X,A(A({},n),e),null)])}}});let zS=0;const xX=wn();function wX(){let e;return xX?(e=zS,zS+=1):e=\"TEST_OR_SSR\",e}function _X(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z(\"\");const t=`vc_unique_${wX()}`;return e.value||t}const ks={fill:\"transparent\",\"pointer-events\":\"auto\"},IX=ne({name:\"TourMask\",props:{prefixCls:{type:String},pos:De(),rootClassName:{type:String},showMask:ye(),fill:{type:String,default:\"rgba(0,0,0,0.5)\"},open:ye(),animated:Fe([Boolean,Object]),zIndex:{type:Number}},setup(e,t){let{attrs:n}=t;const o=_X();return()=>{const{prefixCls:l,open:r,rootClassName:a,pos:i,showMask:s,fill:c,animated:u,zIndex:d}=e,p=`${l}-mask-${o}`,m=typeof u==\"object\"?u?.placeholder:u;return f(Ni,{visible:r,autoLock:!0},{default:()=>r&&f(\"div\",A(A({},n),{},{class:re(`${l}-mask`,a,n.class),style:[{position:\"fixed\",left:0,right:0,top:0,bottom:0,zIndex:d,pointerEvents:\"none\"},n.style]}),[s?f(\"svg\",{style:{width:\"100%\",height:\"100%\"}},[f(\"defs\",null,[f(\"mask\",{id:p},[f(\"rect\",{x:\"0\",y:\"0\",width:\"100vw\",height:\"100vh\",fill:\"white\"},null),i&&f(\"rect\",{x:i.left,y:i.top,rx:i.radius,width:i.width,height:i.height,fill:\"black\",class:m?`${l}-placeholder-animated`:\"\"},null)])]),f(\"rect\",{x:\"0\",y:\"0\",width:\"100%\",height:\"100%\",fill:c,mask:`url(#${p})`},null),i&&f(He,null,[f(\"rect\",A(A({},ks),{},{x:\"0\",y:\"0\",width:\"100%\",height:i.top}),null),f(\"rect\",A(A({},ks),{},{x:\"0\",y:\"0\",width:i.left,height:\"100%\"}),null),f(\"rect\",A(A({},ks),{},{x:\"0\",y:i.top+i.height,width:\"100%\",height:`calc(100vh - ${i.top+i.height}px)`}),null),f(\"rect\",A(A({},ks),{},{x:i.left+i.width,y:\"0\",width:`calc(100vw - ${i.left+i.width}px)`,height:\"100%\"}),null)])]):null])})}}}),PX=[0,0],HS={left:{points:[\"cr\",\"cl\"],offset:[-8,0]},right:{points:[\"cl\",\"cr\"],offset:[8,0]},top:{points:[\"bc\",\"tc\"],offset:[0,-8]},bottom:{points:[\"tc\",\"bc\"],offset:[0,8]},topLeft:{points:[\"bl\",\"tl\"],offset:[0,-8]},leftTop:{points:[\"tr\",\"tl\"],offset:[-8,0]},topRight:{points:[\"br\",\"tr\"],offset:[0,-8]},rightTop:{points:[\"tl\",\"tr\"],offset:[8,0]},bottomRight:{points:[\"tr\",\"br\"],offset:[0,8]},rightBottom:{points:[\"bl\",\"br\"],offset:[8,0]},bottomLeft:{points:[\"tl\",\"bl\"],offset:[0,8]},leftBottom:{points:[\"br\",\"bl\"],offset:[-8,0]}};function Y2(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const t={};return Object.keys(HS).forEach(n=>{t[n]=h(h({},HS[n]),{autoArrow:e,targetOffset:PX})}),t}Y2();var TX=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const Uf={left:\"50%\",top:\"50%\",width:\"1px\",height:\"1px\"},q2=()=>{const{builtinPlacements:e,popupAlign:t}=XC();return{builtinPlacements:e,popupAlign:t,steps:ct(),open:ye(),defaultCurrent:{type:Number},current:{type:Number},onChange:de(),onClose:de(),onFinish:de(),mask:Fe([Boolean,Object],!0),arrow:Fe([Boolean,Object],!0),rootClassName:{type:String},placement:ke(\"bottom\"),prefixCls:{type:String,default:\"rc-tour\"},renderPanel:de(),gap:De(),animated:Fe([Boolean,Object]),scrollIntoViewOptions:Fe([Boolean,Object],!0),zIndex:{type:Number,default:1001}}},OX=ne({name:\"Tour\",inheritAttrs:!1,props:Je(q2(),{}),setup(e){const{defaultCurrent:t,placement:n,mask:o,scrollIntoViewOptions:l,open:r,gap:a,arrow:i}=Wo(e),s=Z(),[c,u]=Mt(0,{value:I(()=>e.current),defaultValue:t.value}),[d,p]=Mt(void 0,{value:I(()=>e.open),postState:x=>c.value<0||c.value>=e.steps.length?!1:x??!0}),m=ee(d.value);ze(()=>{d.value&&!m.value&&u(0),m.value=d.value});const g=I(()=>e.steps[c.value]||{}),v=I(()=>{var x;return(x=g.value.placement)!==null&&x!==void 0?x:n.value}),y=I(()=>{var x;return d.value&&((x=g.value.mask)!==null&&x!==void 0?x:o.value)}),b=I(()=>{var x;return(x=g.value.scrollIntoViewOptions)!==null&&x!==void 0?x:l.value}),[S,$]=yX(I(()=>g.value.target),r,a,b),w=I(()=>$.value?typeof g.value.arrow>\"u\"?i.value:g.value.arrow:!1),C=I(()=>typeof w.value==\"object\"?w.value.pointAtCenter:!1);pe(C,()=>{var x;(x=s.value)===null||x===void 0||x.forcePopupAlign()}),pe(c,()=>{var x;(x=s.value)===null||x===void 0||x.forcePopupAlign()});const _=x=>{var P;u(x),(P=e.onChange)===null||P===void 0||P.call(e,x)};return()=>{var x;const{prefixCls:P,steps:E,onClose:M,onFinish:O,rootClassName:R,renderPanel:D,animated:z,zIndex:T}=e,k=TX(e,[\"prefixCls\",\"steps\",\"onClose\",\"onFinish\",\"rootClassName\",\"renderPanel\",\"animated\",\"zIndex\"]);if($.value===void 0)return null;const B=()=>{p(!1),M?.(c.value)},L=typeof y.value==\"boolean\"?y.value:!!y.value,N=typeof y.value==\"boolean\"?void 0:y.value,F=()=>$.value||document.body,j=()=>f(CX,A({arrow:w.value,key:\"content\",prefixCls:P,total:E.length,renderPanel:D,onPrev:()=>{_(c.value-1)},onNext:()=>{_(c.value+1)},onClose:B,current:c.value,onFinish:()=>{B(),O?.()}},g.value),null),H=I(()=>{const K=S.value||Uf,G={};return Object.keys(K).forEach(V=>{typeof K[V]==\"number\"?G[V]=`${K[V]}px`:G[V]=K[V]}),G});return d.value?f(He,null,[f(IX,{zIndex:T,prefixCls:P,pos:S.value,showMask:L,style:N?.style,fill:N?.color,open:d.value,animated:z,rootClassName:R},null),f(Mr,A(A({},k),{},{arrow:!!k.arrow,builtinPlacements:g.value.target?(x=k.builtinPlacements)!==null&&x!==void 0?x:Y2(C.value):void 0,ref:s,popupStyle:g.value.target?g.value.style:h(h({},g.value.style),{position:\"fixed\",left:Uf.left,top:Uf.top,transform:\"translate(-50%, -50%)\"}),popupPlacement:v.value,popupVisible:d.value,popupClassName:re(R,g.value.className),prefixCls:P,popup:j,forceRender:!1,destroyPopupOnHide:!0,zIndex:T,mask:!1,getTriggerDOMNode:F}),{default:()=>[f(Ni,{visible:d.value,autoLock:!0},{default:()=>[f(\"div\",{class:re(R,`${P}-target-placeholder`),style:h(h({},H.value),{position:\"fixed\",pointerEvents:\"none\"})},null)]})]})]):null}}}),EX=()=>h(h({},q2()),{steps:{type:Array},prefixCls:{type:String},current:{type:Number},type:{type:String},\"onUpdate:current\":Function}),MX=()=>h(h({},Qg()),{cover:{type:Object},nextButtonProps:{type:Object},prevButtonProps:{type:Object},current:{type:Number},type:{type:String}}),AX=ne({name:\"ATourPanel\",inheritAttrs:!1,props:MX(),setup(e,t){let{attrs:n,slots:o}=t;const{current:l,total:r}=Wo(e),a=I(()=>l.value===r.value-1),i=c=>{var u;const d=e.prevButtonProps;(u=e.onPrev)===null||u===void 0||u.call(e,c),typeof d?.onClick==\"function\"&&d?.onClick()},s=c=>{var u,d;const p=e.nextButtonProps;a.value?(u=e.onFinish)===null||u===void 0||u.call(e,c):(d=e.onNext)===null||d===void 0||d.call(e,c),typeof p?.onClick==\"function\"&&p?.onClick()};return()=>{const{prefixCls:c,title:u,onClose:d,cover:p,description:m,type:g,arrow:v}=e,y=e.prevButtonProps,b=e.nextButtonProps;let S;u&&(S=f(\"div\",{class:`${c}-header`},[f(\"div\",{class:`${c}-title`},[u])]));let $;m&&($=f(\"div\",{class:`${c}-description`},[m]));let w;p&&(w=f(\"div\",{class:`${c}-cover`},[p]));let C;o.indicatorsRender?C=o.indicatorsRender({current:l.value,total:r}):C=[...Array.from({length:r.value}).keys()].map((P,E)=>f(\"span\",{key:P,class:re(E===l.value&&`${c}-indicator-active`,`${c}-indicator`)},null));const _=g===\"primary\"?\"default\":\"primary\",x={type:\"default\",ghost:g===\"primary\"};return f(Pr,{componentName:\"Tour\",defaultLocale:En.Tour},{default:P=>{var E;return f(\"div\",A(A({},n),{},{class:re(g===\"primary\"?`${c}-primary`:\"\",n.class,`${c}-content`)}),[v&&f(\"div\",{class:`${c}-arrow`,key:\"arrow\"},null),f(\"div\",{class:`${c}-inner`},[f(Kn,{class:`${c}-close`,onClick:d},null),w,S,$,f(\"div\",{class:`${c}-footer`},[r.value>1&&f(\"div\",{class:`${c}-indicators`},[C]),f(\"div\",{class:`${c}-buttons`},[l.value!==0?f(_t,A(A(A({},x),y),{},{onClick:i,size:\"small\",class:re(`${c}-prev-btn`,y?.className)}),{default:()=>[sp(y?.children)?y.children():(E=y?.children)!==null&&E!==void 0?E:P.Previous]}):null,f(_t,A(A({type:_},b),{},{onClick:s,size:\"small\",class:re(`${c}-next-btn`,b?.className)}),{default:()=>[sp(b?.children)?b?.children():a.value?P.Finish:P.Next]})])])])])}})}}}),DX=e=>{let{defaultType:t,steps:n,current:o,defaultCurrent:l}=e;const r=Z(l?.value),a=I(()=>o?.value);pe(a,u=>{r.value=u??l?.value},{immediate:!0});const i=u=>{r.value=u},s=I(()=>{var u,d;return typeof r.value==\"number\"?n&&((d=(u=n.value)===null||u===void 0?void 0:u[r.value])===null||d===void 0?void 0:d.type):t?.value});return{currentMergedType:I(()=>{var u;return(u=s.value)!==null&&u!==void 0?u:t?.value}),updateInnerCurrent:i}},RX=e=>{const{componentCls:t,lineHeight:n,padding:o,paddingXS:l,borderRadius:r,borderRadiusXS:a,colorPrimary:i,colorText:s,colorFill:c,indicatorHeight:u,indicatorWidth:d,boxShadowTertiary:p,tourZIndexPopup:m,fontSize:g,colorBgContainer:v,fontWeightStrong:y,marginXS:b,colorTextLightSolid:S,tourBorderRadius:$,colorWhite:w,colorBgTextHover:C,tourCloseSize:_,motionDurationSlow:x,antCls:P}=e;return[{[t]:h(h({},qe(e)),{color:s,position:\"absolute\",zIndex:m,display:\"block\",visibility:\"visible\",fontSize:g,lineHeight:n,width:520,\"--antd-arrow-background-color\":v,\"&-pure\":{maxWidth:\"100%\",position:\"relative\"},[`&${t}-hidden`]:{display:\"none\"},[`${t}-content`]:{position:\"relative\"},[`${t}-inner`]:{textAlign:\"start\",textDecoration:\"none\",borderRadius:$,boxShadow:p,position:\"relative\",backgroundColor:v,border:\"none\",backgroundClip:\"padding-box\",[`${t}-close`]:{position:\"absolute\",top:o,insetInlineEnd:o,color:e.colorIcon,outline:\"none\",width:_,height:_,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",\"&:hover\":{color:e.colorIconHover,backgroundColor:e.wireframe?\"transparent\":e.colorFillContent}},[`${t}-cover`]:{textAlign:\"center\",padding:`${o+_+l}px ${o}px 0`,img:{width:\"100%\"}},[`${t}-header`]:{padding:`${o}px ${o}px ${l}px`,[`${t}-title`]:{lineHeight:n,fontSize:g,fontWeight:y}},[`${t}-description`]:{padding:`0 ${o}px`,lineHeight:n,wordWrap:\"break-word\"},[`${t}-footer`]:{padding:`${l}px ${o}px ${o}px`,textAlign:\"end\",borderRadius:`0 0 ${a}px ${a}px`,display:\"flex\",[`${t}-indicators`]:{display:\"inline-block\",[`${t}-indicator`]:{width:d,height:u,display:\"inline-block\",borderRadius:\"50%\",background:c,\"&:not(:last-child)\":{marginInlineEnd:u},\"&-active\":{background:i}}},[`${t}-buttons`]:{marginInlineStart:\"auto\",[`${P}-btn`]:{marginInlineStart:b}}}},[`${t}-primary, &${t}-primary`]:{\"--antd-arrow-background-color\":i,[`${t}-inner`]:{color:S,textAlign:\"start\",textDecoration:\"none\",backgroundColor:i,borderRadius:r,boxShadow:p,[`${t}-close`]:{color:S},[`${t}-indicators`]:{[`${t}-indicator`]:{background:new vt(S).setAlpha(.15).toRgbString(),\"&-active\":{background:S}}},[`${t}-prev-btn`]:{color:S,borderColor:new vt(S).setAlpha(.15).toRgbString(),backgroundColor:i,\"&:hover\":{backgroundColor:new vt(S).setAlpha(.15).toRgbString(),borderColor:\"transparent\"}},[`${t}-next-btn`]:{color:i,borderColor:\"transparent\",background:w,\"&:hover\":{background:new vt(C).onBackground(w).toRgbString()}}}}}),[`${t}-mask`]:{[`${t}-placeholder-animated`]:{transition:`all ${x}`}},[[\"&-placement-left\",\"&-placement-leftTop\",\"&-placement-leftBottom\",\"&-placement-right\",\"&-placement-rightTop\",\"&-placement-rightBottom\"].join(\",\")]:{[`${t}-inner`]:{borderRadius:Math.min($,Rv)}}},kv(e,{colorBg:\"var(--antd-arrow-background-color)\",contentRadius:$,limitVerticalRadius:!0})]},kX=Xe(\"Tour\",e=>{const{borderRadiusLG:t,fontSize:n,lineHeight:o}=e,l=Le(e,{tourZIndexPopup:e.zIndexPopupBase+70,indicatorWidth:6,indicatorHeight:6,tourBorderRadius:t,tourCloseSize:n*o});return[RX(l)]});var NX=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const BX=ne({name:\"ATour\",inheritAttrs:!1,props:EX(),setup(e,t){let{attrs:n,emit:o,slots:l}=t;const{current:r,type:a,steps:i,defaultCurrent:s}=Wo(e),{prefixCls:c,direction:u}=Te(\"tour\",e),[d,p]=kX(c),{currentMergedType:m,updateInnerCurrent:g}=DX({defaultType:a,steps:i,current:r,defaultCurrent:s});return()=>{const{steps:v,current:y,type:b,rootClassName:S}=e,$=NX(e,[\"steps\",\"current\",\"type\",\"rootClassName\"]),w=re({[`${c.value}-primary`]:m.value===\"primary\",[`${c.value}-rtl`]:u.value===\"rtl\"},p.value,S),C=(P,E)=>f(AX,A(A({},P),{},{type:b,current:E}),{indicatorsRender:l.indicatorsRender}),_=P=>{g(P),o(\"update:current\",P),o(\"change\",P)},x=I(()=>Dv({arrowPointAtCenter:!0,autoAdjustOverflow:!0}));return d(f(OX,A(A(A({},n),$),{},{rootClassName:w,prefixCls:c.value,current:y,defaultCurrent:e.defaultCurrent,animated:!0,renderPanel:C,onChange:_,steps:v,builtinPlacements:x.value}),null))}}}),LX=Dt(BX),Z2=Symbol(\"appConfigContext\"),FX=e=>et(Z2,e),zX=()=>nt(Z2,{}),Q2=Symbol(\"appContext\"),HX=e=>et(Q2,e),jX=gt({message:{},notification:{},modal:{}}),WX=()=>nt(Q2,jX),VX=e=>{const{componentCls:t,colorText:n,fontSize:o,lineHeight:l,fontFamily:r}=e;return{[t]:{color:n,fontSize:o,lineHeight:l,fontFamily:r}}},KX=Xe(\"App\",e=>[VX(e)]),GX=()=>({rootClassName:String,message:De(),notification:De()}),XX=()=>WX(),fa=ne({name:\"AApp\",props:Je(GX(),{}),setup(e,t){let{slots:n}=t;const{prefixCls:o}=Te(\"app\",e),[l,r]=KX(o),a=I(()=>re(r.value,o.value,e.rootClassName)),i=zX(),s=I(()=>({message:h(h({},i.message),e.message),notification:h(h({},i.notification),e.notification)}));FX(s.value);const[c,u]=_w(s.value.message),[d,p]=Bw(s.value.notification),[m,g]=F_(),v=I(()=>({message:c,notification:d,modal:m}));return HX(v.value),()=>{var y;return l(f(\"div\",{class:a.value},[g(),u(),p(),(y=n.default)===null||y===void 0?void 0:y.call(n)]))}}});fa.useApp=XX;fa.install=function(e){e.component(fa.name,fa)};const J2=[\"wrap\",\"nowrap\",\"wrap-reverse\"],eI=[\"flex-start\",\"flex-end\",\"start\",\"end\",\"center\",\"space-between\",\"space-around\",\"space-evenly\",\"stretch\",\"normal\",\"left\",\"right\"],tI=[\"center\",\"start\",\"end\",\"flex-start\",\"flex-end\",\"self-start\",\"self-end\",\"baseline\",\"normal\",\"stretch\"],UX=(e,t)=>{const n={};return J2.forEach(o=>{n[`${e}-wrap-${o}`]=t.wrap===o}),n},YX=(e,t)=>{const n={};return tI.forEach(o=>{n[`${e}-align-${o}`]=t.align===o}),n[`${e}-align-stretch`]=!t.align&&!!t.vertical,n},qX=(e,t)=>{const n={};return eI.forEach(o=>{n[`${e}-justify-${o}`]=t.justify===o}),n};function ZX(e,t){return re(h(h(h({},UX(e,t)),YX(e,t)),qX(e,t)))}const QX=e=>{const{componentCls:t}=e;return{[t]:{display:\"flex\",\"&-vertical\":{flexDirection:\"column\"},\"&-rtl\":{direction:\"rtl\"},\"&:empty\":{display:\"none\"}}}},JX=e=>{const{componentCls:t}=e;return{[t]:{\"&-gap-small\":{gap:e.flexGapSM},\"&-gap-middle\":{gap:e.flexGap},\"&-gap-large\":{gap:e.flexGapLG}}}},eU=e=>{const{componentCls:t}=e,n={};return J2.forEach(o=>{n[`${t}-wrap-${o}`]={flexWrap:o}}),n},tU=e=>{const{componentCls:t}=e,n={};return tI.forEach(o=>{n[`${t}-align-${o}`]={alignItems:o}}),n},nU=e=>{const{componentCls:t}=e,n={};return eI.forEach(o=>{n[`${t}-justify-${o}`]={justifyContent:o}}),n},oU=Xe(\"Flex\",e=>{const t=Le(e,{flexGapSM:e.paddingXS,flexGap:e.padding,flexGapLG:e.paddingLG});return[QX(t),JX(t),eU(t),tU(t),nU(t)]});function jS(e){return[\"small\",\"middle\",\"large\"].includes(e)}const lU=()=>({prefixCls:ke(),vertical:ye(),wrap:ke(),justify:ke(),align:ke(),flex:Fe([Number,String]),gap:Fe([Number,String]),component:wt()});var rU=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var l=0,o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]]);return n};const aU=ne({name:\"AFlex\",inheritAttrs:!1,props:lU(),setup(e,t){let{slots:n,attrs:o}=t;const{flex:l,direction:r}=ku(),{prefixCls:a}=Te(\"flex\",e),[i,s]=oU(a),c=I(()=>{var u;return[a.value,s.value,ZX(a.value,e),{[`${a.value}-rtl`]:r.value===\"rtl\",[`${a.value}-gap-${e.gap}`]:jS(e.gap),[`${a.value}-vertical`]:(u=e.vertical)!==null&&u!==void 0?u:l?.value.vertical}]});return()=>{var u;const{flex:d,gap:p,component:m=\"div\"}=e,g=rU(e,[\"flex\",\"gap\",\"component\"]),v={};return d&&(v.flex=d),p&&!jS(p)&&(v.gap=`${p}px`),i(f(m,A({class:[o.class,c.value],style:[o.style,v]},lt(g,[\"justify\",\"wrap\",\"align\",\"vertical\"])),{default:()=>[(u=n.default)===null||u===void 0?void 0:u.call(n)]}))}}}),iU=Dt(aU),WS=Object.freeze(Object.defineProperty({__proto__:null,Affix:AC,Alert:lo,Anchor:rr,AnchorLink:iv,App:fa,AutoComplete:uD,AutoCompleteOptGroup:cD,AutoCompleteOption:sD,Avatar:mr,AvatarGroup:qc,BackTop:yu,Badge:ei,BadgeRibbon:Zc,Breadcrumb:vr,BreadcrumbItem:wi,BreadcrumbSeparator:au,Button:_t,ButtonGroup:nu,Calendar:cN,Card:gr,CardGrid:uu,CardMeta:cu,Carousel:X8,Cascader:lL,CheckableTag:vu,Checkbox:Jn,CheckboxGroup:pu,Col:uL,Collapse:ni,CollapsePanel:du,Comment:vL,Compact:Uc,ConfigProvider:Bl,DatePicker:IF,Descriptions:Ur,DescriptionsItem:Qw,DirectoryTree:xc,Divider:FF,Drawer:e7,Dropdown:vo,DropdownButton:xi,Empty:Ln,Flex:iU,FloatButton:Ll,FloatButtonGroup:bu,Form:Po,FormItem:Yi,FormItemRest:Gc,Grid:cL,Image:ir,ImagePreviewGroup:S_,Input:Lt,InputGroup:s_,InputNumber:dz,InputPassword:qi,InputSearch:c_,Layout:Cz,LayoutContent:$z,LayoutFooter:yz,LayoutHeader:bz,LayoutSider:Sz,List:Pl,ListItem:__,ListItemMeta:x_,LocaleProvider:$w,Mentions:_H,MentionsOption:yc,Menu:Ht,MenuDivider:Ii,MenuItem:Eo,MenuItemGroup:_i,Modal:Zt,MonthPicker:uc,PageHeader:ZH,Pagination:wd,Popconfirm:o9,Popover:Nv,Progress:jg,QRCode:hX,QuarterPicker:dc,Radio:In,RadioButton:su,RadioGroup:dg,RangePicker:fc,Rate:j9,Result:br,Row:nj,Segmented:aX,Select:nn,SelectOptGroup:rD,SelectOption:Ev,Skeleton:Sn,SkeletonAvatar:yg,SkeletonButton:hg,SkeletonImage:bg,SkeletonInput:ud,SkeletonTitle:id,Slider:yj,Space:ca,Spin:Ko,Statistic:ll,StatisticCountdown:HH,Step:Sc,Steps:Bj,SubMenu:Cr,Switch:Xj,TabPane:Pi,Table:HV,TableColumn:_c,TableColumnGroup:Ic,TableSummary:Pc,TableSummaryCell:wu,TableSummaryRow:xu,Tabs:Rl,Tag:sa,Textarea:kg,TimePicker:RK,TimeRangePicker:Tc,Timeline:da,TimelineItem:xa,Tooltip:Fn,Tour:LX,Transfer:sK,Tree:x2,TreeNode:wc,TreeSelect:AK,TreeSelectNode:Cm,Typography:Bn,TypographyLink:ka,TypographyParagraph:Na,TypographyText:Ba,TypographyTitle:La,Upload:VG,UploadDragger:WG,Watermark:QG,WeekPicker:cc,message:ho,notification:vl},Symbol.toStringTag,{value:\"Module\"})),sU=function(e){return Object.keys(WS).forEach(t=>{const n=WS[t];n.install&&e.use(n)}),e.use(oM.StyleProvider),e.config.globalProperties.$message=ho,e.config.globalProperties.$notification=vl,e.config.globalProperties.$info=Zt.info,e.config.globalProperties.$success=Zt.success,e.config.globalProperties.$error=Zt.error,e.config.globalProperties.$warning=Zt.warning,e.config.globalProperties.$confirm=Zt.confirm,e.config.globalProperties.$destroyAll=Zt.destroyAll,e},cU={version:xC,install:sU},uU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARVJREFUeNpiZAAC7sUJBkCqHogFGGgPHgBxIQvQUpBl++lkKQwoMAGJBDpbCgIOTANgKRgwMQwQGHoWd5pEMmx3LWeIUbahr8V6gnIMtuIaDHLcIkMrqFnwSYJ8BMLYgDyPCFSNOkOVXgBWNUvvHWF4+OUNeRZX6fkzkOu4wy9vkGcxDDz6+oZhyd2jKGIxytbg+AUZfvjlTRQ5Qo4l2mKQq9subUDzqTrU4psYcsRYPPIKEKKCmp+NCyMBgcQgqVsYZ+Ki2GJQYQEqpbCBaCUbMB4yQc0IbAg0QFsfJAFQCICCuO3SRoxUPVotjlo8+AsQbKD8zHJwIQKqQOhq8aX3j4ZuHH8YKIsXDIDlBxgHqtMGEGAACr1LiGWMXAcAAAAASUVORK5CYII=\",dU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArpJREFUeNrkV99Lk2EUPrMYmINRCaMf+yYGNYRGSTflJG8mBIuyK8NFihdGEl6V4B8QiCCELPRiqLRRSGCBFDQho1lQkWGlM5gwC0wZhKGCjaT3OfMd3+ac+z5hizrw8Y7vvHuf8+N5zrsZSFjJvcaLYmmj/NjgypWBAcMG6DDl15qK8pip2q4WUWGsplDA9HcDu62V5NirbOmvtth5j9m4J2fg3dttwKEPzt6gpV+rVP+iZ5P/5UKYOk9d5sDgH/n6PidgyOk5mp3JicOeutqzZgIwBCaDUFtgdpz8kZC2jG2m0iTo5I85kcnEpj1zKzHqO92cUp3UasxoL3V0OUZRcbDDqHDmmXqM8stqBGZD1PLKR31nmqmh3Ent7+6TN/xsS+BdxksnGsValsn55ed3cuxTyFJs5oMBjuxH5z/y57exCC3FV2ltPb6RrYFa7bUcUMtrH639juvr8bKnf1uSnAt28oq2SLs9+Vg8j/TL6dBQa5I0KBsywSpJZPI3cQWQPXzSPEeqxOPUz2qUT51JugHUVlKa0md8RxHvJPkqhm9q1zEOlqWUTO9wXOCDkeE1QaZeQSYQEJUAoRIZO3kfSq4rY2kgjNt6MikXBHQ3HOTP6kCg6XQt7wgY5U7XqFpSXhGEzbSf3IcrOctsMspJTrLPGAShxcQwOGo+wCtG48PoG+r+/IR7iX2QnuvgcSZbcP6TfjnBpuq6kmTRYgimfqyH26LrkkDpFGZuMXnEREIPR75N0HW7izMDoTDhPOVVXBn4Qbgd3U5gceKysPK1B4N0MPgbBJAkGogHv9yDbL3TQZ5quoBBKrUm/ZFxDiJ9oqEqyPY8AhAEw3dwVSIozHzNwLdEGastxyggAGWv1Bc+gsF7MBtkS9zFPtYxwLNJKyc5/X+/uf4l4A8AvlMA4EFDof60/RFgAERVSCJNO8vGAAAAAElFTkSuQmCC\",fU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNpiZAAC7sUJCUAqnoE+YOLX2AUbGIGWFgA5/Qz0BYFMQCKfgf4gH2SxwgBYzMDEMEBg1GK6ARZsgnqCcgz8bFwENR9+eYO6FneaRDLYimsQ1MyzJHGYBDW1fEWRxYTAdtdyML303lEGOW4RhmwNV3D6+PjrG8PUG7sZ2i5tIM9iXHH96Osbhodf3sDl0RMkiF2l5w9Wt+TuEdIthvkIHbRd2ojiG5BFU2/sYpgG9GUW0NfZGm5gcR8ZQ6wWUy1xgXxWfmY5OBRAjkJ2EE0TF8hCGADF72iRSbXEBQKgOKWZxfiKTmLKc5IsvvT+EVGaQYkIVlGg68ElDgOgxt7/AYjiA6MtkJFh8YWBsnjhANg7kXGgOm0AAQYAboBk1uuosVsAAAAASUVORK5CYII=\",nI=\"/login/static/vite-static/1-Cu0bQcwi.jpg\",pU=Object.freeze(Object.defineProperty({__proto__:null,default:nI},Symbol.toStringTag,{value:\"Module\"})),oI=\"/login/static/vite-static/2-h-KgP5Og.jpg\",mU=Object.freeze(Object.defineProperty({__proto__:null,default:oI},Symbol.toStringTag,{value:\"Module\"})),lI=\"/login/static/vite-static/3-Dzoywf6L.jpg\",vU=Object.freeze(Object.defineProperty({__proto__:null,default:lI},Symbol.toStringTag,{value:\"Module\"})),rI=\"/login/static/vite-static/4-CxM5ibIe.jpg\",gU=Object.freeze(Object.defineProperty({__proto__:null,default:rI},Symbol.toStringTag,{value:\"Module\"})),aI=\"/login/static/vite-static/5-D16_oHrq.jpg\",hU=Object.freeze(Object.defineProperty({__proto__:null,default:aI},Symbol.toStringTag,{value:\"Module\"})),iI=\"/login/static/vite-static/6-XI9fi94d.jpg\",bU=Object.freeze(Object.defineProperty({__proto__:null,default:iI},Symbol.toStringTag,{value:\"Module\"})),sI=\"/login/static/vite-static/7-CP3zpZiG.jpg\",yU=Object.freeze(Object.defineProperty({__proto__:null,default:sI},Symbol.toStringTag,{value:\"Module\"})),cI=\"/login/static/vite-static/8-torSmCNe.jpg\",SU=Object.freeze(Object.defineProperty({__proto__:null,default:cI},Symbol.toStringTag,{value:\"Module\"})),uI=\"/login/static/vite-static/9-rdBbNCUu.jpg\",$U=Object.freeze(Object.defineProperty({__proto__:null,default:uI},Symbol.toStringTag,{value:\"Module\"})),dI=\"/login/static/vite-static/10-CYmoEpi7.jpg\",CU=Object.freeze(Object.defineProperty({__proto__:null,default:dI},Symbol.toStringTag,{value:\"Module\"})),fI=\"/login/static/vite-static/11-FPTCMMfA.jpg\",xU=Object.freeze(Object.defineProperty({__proto__:null,default:fI},Symbol.toStringTag,{value:\"Module\"})),pI=\"/login/static/vite-static/12-Lgfgf4_b.jpg\",wU=Object.freeze(Object.defineProperty({__proto__:null,default:pI},Symbol.toStringTag,{value:\"Module\"})),Vr=Math.PI;function VS(e,t){return e+t}function _U(e){return e*e}function KS(e,t,n,o,l,r){e.beginPath(),e.moveTo(t,n),e.arc(t+o/2,n-l+2,l,.72*Vr,2.26*Vr),e.lineTo(t+o,n),e.arc(t+o+l-2,n+o/2,l,1.21*Vr,2.78*Vr),e.lineTo(t+o,n+o),e.lineTo(t,n+o),e.arc(t+l-2,n+o/2,l+.4,2.76*Vr,1.24*Vr,!0),e.lineTo(t,n),e.lineWidth=2,e.fillStyle=\"rgba(255, 255, 255, 0.7)\",e.strokeStyle=\"rgba(255, 255, 255, 0.7)\",e.stroke(),e[r](),e.globalCompositeOperation=\"destination-over\"}function IU(e,t){const n=document.createElement(\"img\");return n.crossOrigin=\"Anonymous\",n.onload=t,n.onerror=()=>{n.src=wm(e)},n.src=wm(e),n}function _u(e,t){return Math.round(Math.random()*(t-e)+e)}function wm(e){const t=e.length;return t>0?e[_u(0,t-1)]:\"https://picsum.photos/300/150?image=\"+_u(0,1084)}function PU(e,t,n={leading:!0,trailing:!0}){const{leading:o,trailing:l,resultCallback:r}=n;let a=0,i=null;const s=function(...c){return new Promise((u,d)=>{const p=new Date().getTime();!a&&!o&&(a=p);const m=t-(p-a);if(m<=0){i&&(clearTimeout(i),i=null);const g=e.apply(this,c);r&&r(g),u(g),a=p;return}l&&!i&&(i=setTimeout(()=>{i=null,a=o?new Date().getTime():0;const g=e.apply(this,c);r&&r(g),u(g)},m))})};return s.cancel=function(){i&&clearTimeout(i),i=null,a=0},s}function TU(){const e=gt({x:0,y:0}),t=Z(!1),n=Z(!1),o=Z(0),l=Z([]);return{origin:e,success:t,isMouseDown:n,timestamp:o,trail:l,start:c=>{t.value||(c instanceof MouseEvent?(e.x=c.clientX,e.y=c.clientY):(e.x=c.changedTouches[0].pageX,e.y=c.changedTouches[0].pageY),n.value=!0,o.value=Date.now())},move:(c,u,d)=>{if(!n.value)return!1;let p=0,m=0;if(u instanceof MouseEvent?(p=u.clientX-e.x,m=u.clientY-e.y):(p=u.changedTouches[0].pageX-e.x,m=u.changedTouches[0].pageY-e.y),p<0||p+38>=c)return!1;d(p),l.value.push(m)},end:(c,u)=>{if(!n.value||(n.value=!1,(c instanceof MouseEvent?c.clientX:c.changedTouches[0].pageX)===e.x))return!1;o.value=Date.now()-o.value,u(o.value)},verify:(c,u,d)=>{const p=l.value,m=p.reduce(VS)/p.length,g=p.map(b=>b-m),v=Math.sqrt(g.map(_U).reduce(VS)/p.length),y=parseInt(c);return d=d<=1?1:d>10?10:d,{spliced:Math.abs(y-u)<=d,TuringTest:m!==v}}}}var OU=(e,t)=>{const n=e.__vccOpts||e;for(const[o,l]of t)n[o]=l;return n};const EU=ne({name:\"SlideVerify\",props:{l:{type:Number,default:42},r:{type:Number,default:10},w:{type:Number,default:310},h:{type:Number,default:155},sliderText:{type:String,default:\"Slide filled right\"},accuracy:{type:Number,default:5},show:{type:Boolean,default:!0},imgs:{type:Array,default:()=>[]},interval:{type:Number,default:50},offset:{type:Number,default:0}},emits:[\"success\",\"again\",\"fail\",\"refresh\"],setup(e,{emit:t}){const{imgs:n,l:o,r:l,w:r,h:a,accuracy:i,interval:s,offset:c}=e,u=Z(!0),d=Z(0),p=Z(0),m=gt({containerActive:!1,containerSuccess:!1,containerFail:!1}),g=gt({iconCls:\"arrow-right\",width:\"0\",left:\"0\"}),v=Z(),y=Z(),b=Z(),S=Z();let $;const{success:w,start:C,move:_,end:x,verify:P}=TU(),E=()=>{var T,k;w.value=!1,m.containerActive=!1,m.containerSuccess=!1,m.containerFail=!1,g.iconCls=\"arrow-right\",g.left=\"0\",g.width=\"0\",v.value.style.left=\"0\",(T=S.value)==null||T.clearRect(0,0,r,a),(k=y.value)==null||k.clearRect(0,0,r,a),v.value.width=r,$.src=wm(n)},M=()=>{E(),t(\"refresh\")};function O(T){g.left=T+\"px\";let k=(r-40-20)/(r-40)*T;v.value.style.left=k+\"px\",m.containerActive=!0,g.width=T+\"px\"}function R(T){const k=v.value.style.left,{spliced:B,TuringTest:L}=P(k,d.value,i);if(B){if(i===-1){m.containerSuccess=!0,g.iconCls=\"success\",w.value=!0,t(\"success\",{timestamp:T,left:parseFloat(k)});return}L?(m.containerSuccess=!0,g.iconCls=\"success\",w.value=!0,t(\"success\",{timestamp:T,left:parseFloat(k)})):(m.containerFail=!0,g.iconCls=\"fail\",t(\"again\"))}else m.containerFail=!0,g.iconCls=\"fail\",t(\"fail\"),setTimeout(()=>{E()},1e3)}const D=PU(T=>{_(r,T,O)},s),z=T=>{x(T,R)};return Be(()=>{var T,k;const B=(T=b.value)==null?void 0:T.getContext(\"2d\"),L=(k=v.value)==null?void 0:k.getContext(\"2d\",{willReadFrequently:!0});S.value=B,y.value=L,$=IU(n,()=>{u.value=!1;const N=o+l*2+3;if(c>0)if(c>=N+10&&c<=r-(N+10))d.value=c;else throw new Error(`offset must be greater than ${N+10} and less than ${r-(N+10)}`);else d.value=_u(N+10,r-(N+10));if(p.value=_u(10+l*2,a-(N+10)),B&&L){KS(B,d.value,p.value,o,l,\"fill\"),KS(L,d.value,p.value,o,l,\"clip\"),B.drawImage($,0,0,r,a),L.drawImage($,0,0,r,a);const F=p.value-l*2-1,j=L.getImageData(d.value,F,N,N);v.value.width=N,L.putImageData(j,0,F)}}),document.addEventListener(\"mousemove\",D),document.addEventListener(\"mouseup\",z)}),ot(()=>{document.removeEventListener(\"mousemove\",D),document.removeEventListener(\"mouseup\",z)}),{block:v,canvas:b,loadBlock:u,containerCls:m,sliderBox:g,refresh:M,sliderDown:C,touchStartEvent:C,touchMoveEvent:D,touchEndEvent:z}}}),MU=[\"width\",\"height\"],AU=[\"width\",\"height\"],DU={class:\"slide-verify-slider-text\"};function RU(e,t,n,o,l,r){return Ke(),dt(\"div\",{id:\"slideVerify\",class:\"slide-verify\",style:Bs({width:e.w+\"px\"}),onselectstart:\"return false;\"},[Ie(\"div\",{class:Nd({\"slider-verify-loading\":e.loadBlock})},null,2),Ie(\"canvas\",{ref:\"canvas\",width:e.w,height:e.h},null,8,MU),e.show?(Ke(),dt(\"div\",{key:0,class:\"slide-verify-refresh-icon\",onClick:t[0]||(t[0]=(...a)=>e.refresh&&e.refresh(...a))},t[5]||(t[5]=[Ie(\"i\",{class:\"iconfont icon-refresh\"},null,-1)]))):zn(\"\",!0),Ie(\"canvas\",{ref:\"block\",width:e.w,height:e.h,class:\"slide-verify-block\"},null,8,AU),Ie(\"div\",{class:Nd([\"slide-verify-slider\",{\"container-active\":e.containerCls.containerActive,\"container-success\":e.containerCls.containerSuccess,\"container-fail\":e.containerCls.containerFail}])},[Ie(\"div\",{class:\"slide-verify-slider-mask\",style:Bs({width:e.sliderBox.width})},[Ie(\"div\",{class:\"slide-verify-slider-mask-item\",style:Bs({left:e.sliderBox.left}),onMousedown:t[1]||(t[1]=(...a)=>e.sliderDown&&e.sliderDown(...a)),onTouchstart:t[2]||(t[2]=(...a)=>e.touchStartEvent&&e.touchStartEvent(...a)),onTouchmove:t[3]||(t[3]=(...a)=>e.touchMoveEvent&&e.touchMoveEvent(...a)),onTouchend:t[4]||(t[4]=(...a)=>e.touchEndEvent&&e.touchEndEvent(...a))},[Ie(\"i\",{class:Nd([\"slide-verify-slider-mask-item-icon\",\"iconfont\",`icon-${e.sliderBox.iconCls}`])},null,2)],36)],4),Ie(\"span\",DU,Ye(e.sliderText),1)],2)],4)}var kU=OU(EU,[[\"render\",RU],[\"__scopeId\",\"data-v-617ae856\"]]);const NU={class:\"flex justify-around my-4\"},Jg={__name:\"index\",emits:[\"success\",\"fail\"],setup(e,{expose:t,emit:n}){const o=n,l=Z(!1),r=Ou(\"SlideVerifyRef\"),a=()=>{l.value=!0,it(()=>{i()})},i=()=>{r.value.refresh()},s=()=>{l.value=!1,o(\"success\"),i()},c=()=>{o(\"fail\")},u=()=>{l.value=!1,c()};return Be(()=>{it(()=>{i()})}),t({showModal:a,refreshValidate:i}),(d,p)=>{const m=Zt;return Ke(),Bt(m,{open:Ne(l),\"onUpdate:open\":p[0]||(p[0]=g=>Fl(l)?l.value=g:null),width:\"400px\",footer:null,centered:\"\",onCancel:u},{default:tt(()=>[Ie(\"div\",NU,[f(Ne(kU),{ref_key:\"SlideVerifyRef\",ref:r,\"slider-text\":\"滑动滑块验证\",imgs:[nI||pU,oI||mU,lI||vU,rI||gU,aI||hU,iI||bU,sI||yU,cI||SU,uI||$U,dI||CU,fI||xU,pI||wU],onSuccess:s,onFail:c},null,8,[\"imgs\"])])]),_:1},8,[\"open\"])}}},GS=!1,BU=\"login\",zt={code:BU,title:\"Template\",isDev:GS,isProd:!GS,baseUrl:window.location.origin+\"/\",baseUrlOfImg:window.location.origin+\"/\"};Zf.defaults.withCredentials=!0;const LU=()=>{const e=Zf.CancelToken.source(),t=Zf.create({baseURL:zt.baseUrl,cancelToken:e.token}),n=o=>(o.response&&vl.error({message:\"错误\",description:o.response.statusText}),Promise.reject(o));return t.interceptors.request.use(o=>o,n),t.interceptors.response.use(o=>{const l=o.config.showMessage==null?!0:o.config.showMessage,{code:r}=o.data;return r==200?o.data:(l&&ho.warning({content:o.data.message}),Promise.reject(o.data))},n),{request:t,cancelSource:e}};window.addEventListener(\"unhandledrejection\",function(e){e.constructor===PromiseRejectionEvent&&(e.preventDefault(),e.stopPropagation())});const mI=LU().request,FU=(e={})=>mI({url:\"login/api/v3/auth-config/\",method:\"get\",params:e}),ns=(e={},t={showMessage:!0})=>{const n={url:\"login/api/v3/login/\",method:\"post\",data:e,...t};return mI(n)},os=e=>{try{return new URL(e),!0}catch{return!1}},zU={class:\"mt-4\"},HU={__name:\"Password\",props:{authData:{type:Object,default:()=>{}}},emits:[\"switchLoginMode\"],setup(e,{emit:t}){const n=t,{t:o}=bl(),l=Z(!1),r=Z(\"\"),a=km(\"OPS_userLoginSetting\",[]),i=Ou(\"SlideVerifyModalRef\"),s=Z({username:\"\",password:\"\"}),c=Z({username:[{required:!0,message:o(\"login_username_pl\"),trigger:\"change\"}],password:[{required:!0,message:o(\"login_pwd_pl\"),trigger:\"change\"}]}),u=m=>{try{const g=a.value.find(y=>y.auth_type==e.authData.auth_type&&y.username==s.value.username);(g?g.show_verify_code:!1)?i.value.showModal():d()}catch(g){console.log(g)}},d=async()=>{try{l.value=!0;const{c_url:m}=si(\"history\"),g={...s.value,auth_type:e.authData.auth_type,c_url:m},{data:v={}}=await ns(g,{showMessage:!1});if(p(!1),[\"start_bind_google_auth\",\"bind_google_auth\",\"verify_google_auth\"].includes(v.google_auth_type))n(\"switchLoginMode\",{google_auth_type:v.google_auth_type,cache_token:v.cache_token,google_auth_url:zt.baseUrlOfImg+v.google_auth_url,google_auth_username:v.google_auth_username,secret:v.secret,show_mfa_days:v.show_mfa_days,...g});else{const y=v.c_url?.replace(/^\\/+/,\"\")||\"\",b=os(v.c_url)?v.c_url:zt.baseUrl+y;window.location.href=b}}catch(m){r.value=m.message,p(m.show_verify_code)}finally{l.value=!1}},p=m=>{const g=a.value.find(v=>v.auth_type==e.authData.auth_type&&v.username==s.value.username);g?g.show_verify_code=m:a.value.push({auth_type:e.authData.auth_type,username:s.value.username,show_verify_code:m})};return Be(()=>{r.value=\"\"}),(m,g)=>{const v=lo,y=Mm,b=Lt,S=Yi,$=Am,w=qi,C=_t,_=Po;return Ke(),dt(\"div\",zU,[r.value?(Ke(),Bt(v,{key:0,class:\"mt-1! mb-4!\",type:\"warning\",\"show-icon\":\"\",message:r.value},null,8,[\"message\"])):zn(\"\",!0),f(_,{name:\"loginForm\",model:s.value,rules:c.value,onFinish:u},{default:tt(()=>[f(S,{name:\"username\"},{default:tt(()=>[f(b,{class:\"py-1.5!\",name:\"username\",autocomplete:\"username\",value:s.value.username,\"onUpdate:value\":g[0]||(g[0]=x=>s.value.username=x),valueModifiers:{trim:!0},placeholder:m.$t(\"login_username_pl\")},{prefix:tt(()=>[f(y,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f(S,{name:\"password\"},{default:tt(()=>[f(w,{class:\"py-1.5!\",name:\"password\",autocomplete:\"current-password\",value:s.value.password,\"onUpdate:value\":g[1]||(g[1]=x=>s.value.password=x),valueModifiers:{trim:!0},placeholder:m.$t(\"login_pwd_pl\")},{prefix:tt(()=>[f($,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f(S,null,{default:tt(()=>[f(C,{class:\"w-full mt-6!\",\"html-type\":\"submit\",size:\"large\",type:\"primary\",shape:\"round\",loading:l.value},{default:tt(()=>[bt(Ye(m.$t(\"login_btn\")),1)]),_:1},8,[\"loading\"])]),_:1})]),_:1},8,[\"model\",\"rules\"]),f(Jg,{ref_key:\"SlideVerifyModalRef\",ref:i,onSuccess:d},null,512)])}}},jU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA8RJREFUeNrsmc1u00AQgDdVezc3Lgj3ARBG4sSlrsSJS9InwD5whrxAf/ICbY6IQ9InaLgjxb1XIsABbjFPwHKFSmHWO4X1ena9NnacQ0baKE7r9Xw7Pzs7ZmwrW9mKTXq17xzxAXwGMA5g+DgoSWCkMK6z78de2j3IiIfw+RKGgPBqPnMBYwxjBlB8vSAS4ARG2OAicgS6aAKoVwIgVn2CFnBRbKFc29xNFeFqQ4CZtQMirXBlcSGh9Hv0+8QyT4Cx1C9ZkCnMEzcLMuIRWoJ+oHCJY29RI0F4CHNisJaY87COq/UqQIhVjxvLOiN+ikCNwPSIlHpF/J/w4YvGc6Z0uwm6nioiox3VAxlxYeqPWkxwtMKMtSXS3eYEzBk899R1mh3l+4QI7HYhhEgXOtQyHsvcTi5uBRCZoULCndqFyMMcoQcwbXErWeSkENhtxIQdRu4neQkxjhxApPnCgn92IcfeFLOjKq9dLRIR1kg6LGQvC1ZxBDkomagLq/BcqePgXjsEccK6Fz2D+a7Brgdd13KtXQdVQTbBGrVkd0P1SrNzCmM/iRh2Agk2geLRs2wjzlz8y3N26hrsqnhY+3QH8SFbzCXWX3O4XgKYU/pN6uTtFkWv+UTGOncB0VNdv2MQyo1CFxB9A4yqVJ0tCDe43MAOIo+sxRK6Oxkbfu+7BPuYsMpaY2V1wwIYPz577HF2DpKxq1onAquELifEueaLHM/OizVADJQgj3tPswbHnUtFSrNCpOQnkJK5Lf0OC6lYpEDH80AN5X0YEYy50nY6UyFwH5nC2McN0se0XNp8oDoojVpGuBAqrieUFCD2S/aYwe2v+/2vN9/UM9QisyLRDJgQZxQh+00UlACyNFSzsW4NQ7OC0i+hql8RaNSEfkPWIOdxgpBCpeFw13C4iZVWZ/GMIP82cD5Nyn0J7jG6p1vVLefxqla/PAchOh2yDjtXTCtaNkxJlZ+Uex7i6gf48CwGwCoJsVO7nkojw+8zWxNb9WWRMb5jGvyfojJevcgq23OEEfCXt2+zUj3de1fInLo1qAaimG9oA1m1tG0U2q+/X2UKBqhUDECc0GeuwI+Z7N6ndPrN0y8tyiR4HH2MCvglLrpg/169FeIBQNS26V9FAShFfYQF3zBLI90EEho2noTJnmxigPdzABX2HoAJ0HX0RZjuPeB3SWhYXqLkldInNQM0KABj2sMurPHD7G+s7rINX0e9hSCm1xocQO7VA+lIAGZVB2RnAzsolPuWvhXYRJAjDWZKVOZb2cpWKsofAQYAT6FOtPw9bhAAAAAASUVORK5CYII=\",WU={class:\"w-full flex items-center flex-col\"},VU=[\"src\",\"alt\"],KU={class:\"text-lg font-bold mt-3\"},GU={class:\"mt-12 mb-10 w-full\"},XU={key:0,class:\"text-gray-500 text-center my-20\"},UU={key:1,id:\"wwlogin\",class:\"mt-4 flex items-center justify-center\"},YU={__name:\"QYWX\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(!1),n=Z(!1),o=Z(\"\"),l=Z(\"\");ze(()=>{t.value&&it(()=>{r()})});const r=()=>{const a=e.authData.account[0]||{},{corp_id:i,agent_id:s,domain:c}=a;if(!i||!s||!c){n.value=!0;return}const u=encodeURIComponent(`${window.location.origin}${window.location.pathname}?auth_type=3&domain=${c}`);window.WwLogin({id:\"wwlogin\",appid:i,agentid:s,redirect_uri:u})};return Be(()=>{o.value=window.OPS_AUTH_TYPE,l.value=window.OPS_ERROR}),(a,i)=>{const s=lo,c=_t,u=Zt;return Ke(),dt(\"div\",WU,[o.value==e.authData.auth_type&&l.value?(Ke(),Bt(s,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:l.value},null,8,[\"message\"])):zn(\"\",!0),Ie(\"img\",{class:\"mt-6 w-[50px]!\",src:jU,alt:a.$t(\"wecom\")},null,8,VU),Ie(\"div\",KU,Ye(a.$t(\"wecom\")),1),Ie(\"div\",GU,[f(c,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:i[0]||(i[0]=d=>t.value=!0)},{default:tt(()=>[bt(Ye(a.$t(\"login_btn\")),1)]),_:1})]),f(u,{open:t.value,\"onUpdate:open\":i[1]||(i[1]=d=>t.value=d),onOk:i[2]||(i[2]=d=>t.value=!1),footer:null,bodyStyle:{padding:0},centered:\"\"},{default:tt(()=>[n.value?(Ke(),dt(\"div\",XU,Ye(a.$t(\"wecom_err\")),1)):(Ke(),dt(\"div\",UU))]),_:1},8,[\"open\"])])}}},eh=(e,t)=>{const n=e.__vccOpts||e;for(const[o,l]of t)n[o]=l;return n},qU={class:\"mt-4\"},ZU={__name:\"LDAP\",props:{authData:{type:Object,default:()=>({})}},emits:[\"switchLoginMode\"],setup(e,{emit:t}){const n=t,{t:o}=bl(),l=Z(!1),r=Z(\"\"),a=Ou(\"SlideVerifyModalRef\"),i=km(\"OPS_userLoginSetting\",[]),s=Z({domain:void 0,username:\"\",password:\"\"}),c=Z({domain:[{required:!0,message:o(\"login_domain_pl\"),trigger:\"change\"}],username:[{required:!0,message:o(\"login_username_pl\"),trigger:\"change\"}],password:[{required:!0,message:o(\"login_pwd_pl\"),trigger:\"change\"}]});ze(()=>{e.authData.account&&e.authData.account.length==1&&(s.value.domain=e.authData.account[0]?.domain)});const u=m=>{try{const g=i.value.find(y=>y.auth_type==e.authData.auth_type&&y.username==s.value.username&&y.domain==s.value.domain);(g?g.show_verify_code:!1)?a.value.showModal():d()}catch(g){console.log(g)}},d=async()=>{try{l.value=!0;const{c_url:m}=si(\"history\"),g={...s.value,auth_type:e.authData.auth_type,c_url:m},{data:v={}}=await ns(g,{showMessage:!1});if(p(!1),[\"start_bind_google_auth\",\"bind_google_auth\",\"verify_google_auth\"].includes(v.google_auth_type))n(\"switchLoginMode\",{google_auth_type:v.google_auth_type,cache_token:v.cache_token,google_auth_url:zt.baseUrlOfImg+v.google_auth_url,google_auth_username:v.google_auth_username,secret:v.secret,show_mfa_days:v.show_mfa_days,...g});else{const y=v.c_url?.replace(/^\\/+/,\"\")||\"\",b=os(v.c_url)?v.c_url:zt.baseUrl+y;window.location.href=b}}catch(m){r.value=m.message,p(m.show_verify_code)}finally{l.value=!1}},p=m=>{const g=i.value.find(v=>v.auth_type==e.authData.auth_type&&v.username==s.value.username&&v.domain==s.value.domain);g?g.show_verify_code=m:i.value.push({auth_type:e.authData.auth_type,username:s.value.username,show_verify_code:m,domain:s.value.domain})};return Be(()=>{r.value=\"\"}),(m,g)=>{const v=lo,y=Ev,b=nn,S=i$,$=Yi,w=Mm,C=Lt,_=Am,x=qi,P=_t,E=Po;return Ke(),dt(\"div\",qU,[Ne(r)?(Ke(),Bt(v,{key:0,class:\"mt-1! mb-4!\",type:\"warning\",\"show-icon\":\"\",message:Ne(r)},null,8,[\"message\"])):zn(\"\",!0),f(E,{name:\"loginForm\",model:Ne(s),rules:Ne(c),onFinish:u},{default:tt(()=>[f($,{name:\"domain\"},{default:tt(()=>[f(b,{name:\"organization\",autocomplete:\"organization\",value:Ne(s).domain,\"onUpdate:value\":g[0]||(g[0]=M=>Ne(s).domain=M),placeholder:m.$t(\"login_domain_pl\")},{default:tt(()=>[(Ke(!0),dt(He,null,Go(e.authData.account||[],M=>(Ke(),Bt(y,{key:M.domain,value:M.domain},{default:tt(()=>[bt(Ye(M.domain),1)]),_:2},1032,[\"value\"]))),128))]),_:1},8,[\"value\",\"placeholder\"]),f(S,{class:\"text-[#8b8b8b]! select_icon\"})]),_:1}),f($,{name:\"username\"},{default:tt(()=>[f(C,{class:\"py-1.5!\",name:\"username\",autocomplete:\"username\",value:Ne(s).username,\"onUpdate:value\":g[1]||(g[1]=M=>Ne(s).username=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_username_pl\")},{prefix:tt(()=>[f(w,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,{name:\"password\"},{default:tt(()=>[f(x,{class:\"py-1.5!\",name:\"password\",autocomplete:\"current-password\",value:Ne(s).password,\"onUpdate:value\":g[2]||(g[2]=M=>Ne(s).password=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_pwd_pl\")},{prefix:tt(()=>[f(_,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,null,{default:tt(()=>[f(P,{class:\"w-full mt-6!\",\"html-type\":\"submit\",size:\"large\",type:\"primary\",shape:\"round\",loading:Ne(l)},{default:tt(()=>[bt(Ye(m.$t(\"login_btn\")),1)]),_:1},8,[\"loading\"])]),_:1})]),_:1},8,[\"model\",\"rules\"]),f(Jg,{ref_key:\"SlideVerifyModalRef\",ref:a,onSuccess:d},null,512)])}}},QU=eh(ZU,[[\"__scopeId\",\"data-v-015cc9d8\"]]),JU={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},eY={class:\"w-full overflow-hidden\"},tY=[\"src\"],nY=[\"title\"],oY={class:\"mt-12 mb-10 w-full\"},lY={class:\"flex items-center flex-1 overflow-hidden\"},rY=[\"src\"],aY={class:\"flex-1 truncate ml-1.5 mr-2\"},iY={__name:\"SSO\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(\"\"),n=Z(\"\"),o=l=>{const r=encodeURIComponent(window.location.origin+window.location.pathname+\"?domain=\"+l.domain+\"&auth_type=8\"),a=l.auth_login_url+`?callback=${r}`;window.location.href=a};return Be(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(l,r)=>{const a=lo,i=_t,s=Ir,c=Ln;return Ke(),dt(\"div\",JU,[Ne(t)==e.authData.auth_type&&Ne(n)?(Ke(),Bt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:Ne(n)},null,8,[\"message\"])):zn(\"\",!0),e.authData.account.length==1?(Ke(),dt(He,{key:1},[Ie(\"div\",eY,[Ie(\"img\",{class:\"mt-6 mx-auto w-[50px]!\",src:Ne(zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,tY),Ie(\"div\",{class:\"text-lg font-bold mt-3 truncate text-center\",title:e.authData.account[0].domain},Ye(e.authData.account[0].domain||\"--\"),9,nY)]),Ie(\"div\",oY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:r[0]||(r[0]=u=>o(e.authData.account[0]))},{default:tt(()=>[bt(Ye(l.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(Ke(!0),dt(He,{key:2},Go(e.authData.account,u=>(Ke(),dt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ie(\"div\",lY,[Ie(\"img\",{class:\"w-6\",src:Ne(zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,rY),Ie(\"span\",aY,Ye(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:tt(()=>[bt(Ye(l.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(Ke(),Bt(c,{key:3,class:\"mt-4\"}))])}}},sY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},cY={class:\"w-full overflow-hidden\"},uY=[\"src\"],dY=[\"title\"],fY={class:\"mt-12 mb-10 w-full\"},pY={class:\"flex items-center flex-1 overflow-hidden\"},mY=[\"src\"],vY={class:\"flex-1 truncate ml-1.5 mr-2\"},gY={__name:\"IDaaS\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(\"\"),n=Z(\"\"),o=l=>{const r=l.auth_login_url;window.location.href=r};return Be(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(l,r)=>{const a=lo,i=_t,s=Ir,c=Ln;return Ke(),dt(\"div\",sY,[t.value==e.authData.auth_type&&n.value?(Ke(),Bt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):zn(\"\",!0),e.authData.account.length==1?(Ke(),dt(He,{key:1},[Ie(\"div\",cY,[Ie(\"img\",{class:\"mt-6 mx-auto w-[50px]!\",src:Ne(zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,uY),Ie(\"div\",{class:\"text-lg font-bold mt-3 truncate text-center\",title:e.authData.account[0].domain},Ye(e.authData.account[0].domain||\"--\"),9,dY)]),Ie(\"div\",fY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:r[0]||(r[0]=u=>o(e.authData.account[0]))},{default:tt(()=>[bt(Ye(l.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(Ke(!0),dt(He,{key:2},Go(e.authData.account,u=>(Ke(),dt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ie(\"div\",pY,[Ie(\"img\",{class:\"w-6\",src:Ne(zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,mY),Ie(\"span\",vY,Ye(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:tt(()=>[bt(Ye(l.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(Ke(),Bt(c,{key:3,class:\"mt-4\"}))])}}},hY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},bY={class:\"w-full overflow-hidden\"},yY=[\"src\"],SY=[\"title\"],$Y={class:\"mt-12 mb-10 w-full\"},CY={class:\"flex items-center flex-1 overflow-hidden\"},xY=[\"src\"],wY={class:\"flex-1 truncate ml-1.5 mr-2\"},_Y={__name:\"OAuth\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(\"\"),n=Z(\"\"),o=l=>{const r=l.auth_login_url;window.location.href=r};return Be(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(l,r)=>{const a=lo,i=_t,s=Ir,c=Ln;return Ke(),dt(\"div\",hY,[t.value==e.authData.auth_type&&n.value?(Ke(),Bt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):zn(\"\",!0),e.authData.account.length==1?(Ke(),dt(He,{key:1},[Ie(\"div\",bY,[Ie(\"img\",{class:\"mt-6 mx-auto w-[50px]!\",src:Ne(zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,yY),Ie(\"div\",{class:\"text-lg font-bold mt-3 truncate text-center\",title:e.authData.account[0].domain},Ye(e.authData.account[0].domain||\"--\"),9,SY)]),Ie(\"div\",$Y,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:r[0]||(r[0]=u=>o(e.authData.account[0]))},{default:tt(()=>[bt(Ye(l.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(Ke(!0),dt(He,{key:2},Go(e.authData.account,u=>(Ke(),dt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ie(\"div\",CY,[Ie(\"img\",{class:\"w-6\",src:Ne(zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,xY),Ie(\"span\",wY,Ye(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:tt(()=>[bt(Ye(l.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(Ke(),Bt(c,{key:3,class:\"mt-4\"}))])}}},IY={class:\"mt-4\"},PY={__name:\"AD\",props:{authData:{type:Object,default:()=>({})}},emits:[\"switchLoginMode\"],setup(e,{emit:t}){const n=t,{t:o}=bl(),l=Z(!1),r=Z(\"\"),a=Ou(\"SlideVerifyModalRef\"),i=km(\"OPS_userLoginSetting\",[]),s=Z({domain:void 0,username:\"\",password:\"\"}),c=Z({domain:[{required:!0,message:o(\"login_domain_pl\"),trigger:\"change\"}],username:[{required:!0,message:o(\"login_username_pl\"),trigger:\"change\"}],password:[{required:!0,message:o(\"login_pwd_pl\"),trigger:\"change\"}]});ze(()=>{e.authData.account&&e.authData.account.length==1&&(s.value.domain=e.authData.account[0]?.domain)});const u=m=>{try{const g=i.value.find(y=>y.auth_type==e.authData.auth_type&&y.username==s.value.username&&y.domain==s.value.domain);(g?g.show_verify_code:!1)?a.value.showModal():d()}catch(g){console.log(g)}},d=async()=>{try{l.value=!0;const{c_url:m}=si(\"history\"),g={...s.value,auth_type:e.authData.auth_type,c_url:m},{data:v={}}=await ns(g,{showMessage:!1});if(p(!1),[\"start_bind_google_auth\",\"bind_google_auth\",\"verify_google_auth\"].includes(v.google_auth_type))n(\"switchLoginMode\",{google_auth_type:v.google_auth_type,cache_token:v.cache_token,google_auth_url:zt.baseUrlOfImg+v.google_auth_url,google_auth_username:v.google_auth_username,secret:v.secret,show_mfa_days:v.show_mfa_days,...g});else{const y=v.c_url?.replace(/^\\/+/,\"\")||\"\",b=os(v.c_url)?v.c_url:zt.baseUrl+y;window.location.href=b}}catch(m){r.value=m.message,p(m.show_verify_code)}finally{l.value=!1}},p=m=>{const g=i.value.find(v=>v.auth_type==e.authData.auth_type&&v.username==s.value.username&&v.domain==s.value.domain);g?g.show_verify_code=m:i.value.push({auth_type:e.authData.auth_type,username:s.value.username,show_verify_code:m,domain:s.value.domain})};return Be(()=>{r.value=\"\"}),(m,g)=>{const v=lo,y=Ev,b=nn,S=i$,$=Yi,w=Mm,C=Lt,_=Am,x=qi,P=_t,E=Po;return Ke(),dt(\"div\",IY,[Ne(r)?(Ke(),Bt(v,{key:0,class:\"mt-1! mb-4!\",type:\"warning\",\"show-icon\":\"\",message:Ne(r)},null,8,[\"message\"])):zn(\"\",!0),f(E,{name:\"loginForm\",model:Ne(s),rules:Ne(c),onFinish:u},{default:tt(()=>[f($,{name:\"domain\"},{default:tt(()=>[f(b,{name:\"organization\",autocomplete:\"organization\",value:Ne(s).domain,\"onUpdate:value\":g[0]||(g[0]=M=>Ne(s).domain=M),placeholder:m.$t(\"login_domain_pl\")},{default:tt(()=>[(Ke(!0),dt(He,null,Go(e.authData.account||[],M=>(Ke(),Bt(y,{key:M.domain,value:M.domain},{default:tt(()=>[bt(Ye(M.domain),1)]),_:2},1032,[\"value\"]))),128))]),_:1},8,[\"value\",\"placeholder\"]),f(S,{class:\"text-[#8b8b8b]! select_icon\"})]),_:1}),f($,{name:\"username\"},{default:tt(()=>[f(C,{class:\"py-1.5!\",name:\"username\",autocomplete:\"username\",value:Ne(s).username,\"onUpdate:value\":g[1]||(g[1]=M=>Ne(s).username=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_username_pl\")},{prefix:tt(()=>[f(w,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,{name:\"password\"},{default:tt(()=>[f(x,{class:\"py-1.5!\",name:\"password\",autocomplete:\"current-password\",value:Ne(s).password,\"onUpdate:value\":g[2]||(g[2]=M=>Ne(s).password=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_pwd_pl\")},{prefix:tt(()=>[f(_,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,null,{default:tt(()=>[f(P,{class:\"w-full mt-6!\",\"html-type\":\"submit\",size:\"large\",type:\"primary\",shape:\"round\",loading:Ne(l)},{default:tt(()=>[bt(Ye(m.$t(\"login_btn\")),1)]),_:1},8,[\"loading\"])]),_:1})]),_:1},8,[\"model\",\"rules\"]),f(Jg,{ref_key:\"SlideVerifyModalRef\",ref:a,onSuccess:d},null,512)])}}},TY=eh(PY,[[\"__scopeId\",\"data-v-fda58afa\"]]),OY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},EY={class:\"w-full overflow-hidden\"},MY=[\"src\"],AY=[\"title\"],DY={class:\"mt-12 mb-10 w-full\"},RY={class:\"flex items-center flex-1 overflow-hidden\"},kY=[\"src\"],NY={class:\"flex-1 truncate ml-1.5 mr-2\"},BY={__name:\"IAM\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(\"\"),n=Z(\"\"),o=l=>{const r=l.auth_login_url;window.location.href=r};return Be(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(l,r)=>{const a=lo,i=_t,s=Ir,c=Ln;return Ke(),dt(\"div\",OY,[t.value==e.authData.auth_type&&n.value?(Ke(),Bt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):zn(\"\",!0),e.authData.account.length==1?(Ke(),dt(He,{key:1},[Ie(\"div\",EY,[Ie(\"img\",{class:\"mt-6 mx-auto w-[50px]!\",src:Ne(zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,MY),Ie(\"div\",{class:\"text-lg font-bold mt-3 truncate text-center\",title:e.authData.account[0].domain},Ye(e.authData.account[0].domain||\"--\"),9,AY)]),Ie(\"div\",DY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:r[0]||(r[0]=u=>o(e.authData.account[0]))},{default:tt(()=>[bt(Ye(l.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(Ke(!0),dt(He,{key:2},Go(e.authData.account,u=>(Ke(),dt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ie(\"div\",RY,[Ie(\"img\",{class:\"w-6\",src:Ne(zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,kY),Ie(\"span\",NY,Ye(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:tt(()=>[bt(Ye(l.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(Ke(),Bt(c,{key:3,class:\"mt-4\"}))])}}},LY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},FY={class:\"w-full overflow-hidden\"},zY=[\"src\"],HY=[\"title\"],jY={class:\"mt-12 mb-10 w-full\"},WY={class:\"flex items-center flex-1 overflow-hidden\"},VY=[\"src\"],KY={class:\"flex-1 truncate ml-1.5 mr-2\"},GY={__name:\"DingTalk\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(\"\"),n=Z(\"\"),o=l=>{const r=l.auth_login_url;window.location.href=r};return Be(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(l,r)=>{const a=lo,i=_t,s=Ir,c=Ln;return Ke(),dt(\"div\",LY,[t.value==e.authData.auth_type&&n.value?(Ke(),Bt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):zn(\"\",!0),e.authData.account.length==1?(Ke(),dt(He,{key:1},[Ie(\"div\",FY,[Ie(\"img\",{class:\"mt-6 mx-auto w-[50px]!\",src:Ne(zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,zY),Ie(\"div\",{class:\"text-lg font-bold mt-3 truncate text-center\",title:e.authData.account[0].domain},Ye(e.authData.account[0].domain||\"--\"),9,HY)]),Ie(\"div\",jY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:r[0]||(r[0]=u=>o(e.authData.account[0]))},{default:tt(()=>[bt(Ye(l.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(Ke(!0),dt(He,{key:2},Go(e.authData.account,u=>(Ke(),dt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ie(\"div\",WY,[Ie(\"img\",{class:\"w-6\",src:Ne(zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,VY),Ie(\"span\",KY,Ye(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:tt(()=>[bt(Ye(l.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(Ke(),Bt(c,{key:3,class:\"mt-4\"}))])}}},XY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},UY={class:\"w-full overflow-hidden\"},YY=[\"src\"],qY=[\"title\"],ZY={class:\"mt-12 mb-10 w-full\"},QY={class:\"flex items-center flex-1 overflow-hidden\"},JY=[\"src\"],eq={class:\"flex-1 truncate ml-1.5 mr-2\"},tq={__name:\"Feishu\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=Z(\"\"),n=Z(\"\"),o=l=>{const r=l.auth_login_url;window.location.href=r};return Be(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(l,r)=>{const a=lo,i=_t,s=Ir,c=Ln;return Ke(),dt(\"div\",XY,[t.value==e.authData.auth_type&&n.value?(Ke(),Bt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):zn(\"\",!0),e.authData.account.length==1?(Ke(),dt(He,{key:1},[Ie(\"div\",UY,[Ie(\"img\",{class:\"mt-6 mx-auto w-[50px]!\",src:Ne(zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,YY),Ie(\"div\",{class:\"text-lg font-bold mt-3 truncate text-center\",title:e.authData.account[0].domain},Ye(e.authData.account[0].domain||\"--\"),9,qY)]),Ie(\"div\",ZY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:r[0]||(r[0]=u=>o(e.authData.account[0]))},{default:tt(()=>[bt(Ye(l.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(Ke(!0),dt(He,{key:2},Go(e.authData.account,u=>(Ke(),dt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ie(\"div\",QY,[Ie(\"img\",{class:\"w-6\",src:Ne(zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,JY),Ie(\"span\",eq,Ye(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:tt(()=>[bt(Ye(l.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(Ke(),Bt(c,{key:3,class:\"mt-4\"}))])}}},nq=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuNJREFUWEftlm1IU2EUx//PNt3UXcyiL2I1o4wywvygg6AiKKOgIqMyNLNICVJW9Cq5+YaBq30IjfBTWBIkGJgjxgpMCiMUkxRMzDQtZ/NlU6febffeuFdmzb2wL2N+2Pl2z3Puc/7nd87z3EsQYiMhzo+wgDCBMIHVScCUrlCJQHIBpATrnuA4rowVodWDwJhSoZBw5CMHxAcr+b99yVMPAeNpilJCiGZlcuneg3AO9oMZHUZEqhKs6RckySmgja89dEZn52P+eZ3gl2Ych6OzHezEH6/1BCyAUj8AbWyBvb0Va18YYC2+itiqGliKcsGaTRDFxmGdodMvtJk7V0C3Gtxi3ARMpSfucgJaAIf+j5LfLId0fwbY6UksNNaDulvlton9UxusqgvLvpj8a0LFC00NkB0+AXsHT2DcPwFzeqKWA274KoEq0YJ+q4f8dgXY8TFYCk5jTW0DZrUaMEMDwms8AZ6EL7MWnYf98wd3Aua0zVkc4UoBJPnjxwvg6EVwtjlE5xS4hc4/ewJbbbXgi9i5G1TlI9h05RAn7ViOY0Z+gDY0e6QgJmXiMRHHDx2X6rP64vuQHckE/d4A22MtKI0OlvxTHgQilftAlekwV62Go7cL4viNkGxLRszFQszpyrD45pWnAJfHnKYoYEEqCMH6lVGSpGREnc0ThpAZ/o64+hY4+3sh2bodzMgQFppfgn6nR1xdI9ipCSzqmyCKT1g6BXsOgJ00w9H3VWihq12uHIGfgpJq0EY9mJ+DoDQPl2aghp8BtSDKZXLVPTh6vghCeIs+dwmO3m44ujvADH4Da5n2fQr4FW/3QMxlFWSZ2bAW5ggz4CLg2on5PYrZylvCo/y6Go6OdtBtRkSdyYPs6EmhbfxJ8WYBERBvUIBIZXAO9IFESiFWbBFa4M3ECZvAzc6AtU4LLSJULJw9XeDsdGACQn4V8zJD+jHydxcEY211/g8Eo1Jfe4YJhAmECfwF3mAvfJ5LW7EAAAAASUVORK5CYII=\";var Mc={exports:{}};/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */var oq=Mc.exports,XS;function lq(){return XS||(XS=1,(function(e,t){(function(o,l){e.exports=l()})(oq,function(){return(function(){var n={686:(function(r,a,i){i.d(a,{default:function(){return j}});var s=i(279),c=i.n(s),u=i(370),d=i.n(u),p=i(817),m=i.n(p);function g(H){try{return document.execCommand(H)}catch{return!1}}var v=function(K){var G=m()(K);return g(\"cut\"),G},y=v;function b(H){var K=document.documentElement.getAttribute(\"dir\")===\"rtl\",G=document.createElement(\"textarea\");G.style.fontSize=\"12pt\",G.style.border=\"0\",G.style.padding=\"0\",G.style.margin=\"0\",G.style.position=\"absolute\",G.style[K?\"right\":\"left\"]=\"-9999px\";var V=window.pageYOffset||document.documentElement.scrollTop;return G.style.top=\"\".concat(V,\"px\"),G.setAttribute(\"readonly\",\"\"),G.value=H,G}var S=function(K,G){var V=b(K);G.container.appendChild(V);var q=m()(V);return g(\"copy\"),V.remove(),q},$=function(K){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},V=\"\";return typeof K==\"string\"?V=S(K,G):K instanceof HTMLInputElement&&![\"text\",\"search\",\"url\",\"tel\",\"password\"].includes(K?.type)?V=S(K.value,G):(V=m()(K),g(\"copy\")),V},w=$;function C(H){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?C=function(G){return typeof G}:C=function(G){return G&&typeof Symbol==\"function\"&&G.constructor===Symbol&&G!==Symbol.prototype?\"symbol\":typeof G},C(H)}var _=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},G=K.action,V=G===void 0?\"copy\":G,q=K.container,Q=K.target,oe=K.text;if(V!==\"copy\"&&V!==\"cut\")throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');if(Q!==void 0)if(Q&&C(Q)===\"object\"&&Q.nodeType===1){if(V===\"copy\"&&Q.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(V===\"cut\"&&(Q.hasAttribute(\"readonly\")||Q.hasAttribute(\"disabled\")))throw new Error(`Invalid \"target\" attribute. You can't cut text from elements with \"readonly\" or \"disabled\" attributes`)}else throw new Error('Invalid \"target\" value, use a valid Element');if(oe)return w(oe,{container:q});if(Q)return V===\"cut\"?y(Q):w(Q,{container:q})},x=_;function P(H){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?P=function(G){return typeof G}:P=function(G){return G&&typeof Symbol==\"function\"&&G.constructor===Symbol&&G!==Symbol.prototype?\"symbol\":typeof G},P(H)}function E(H,K){if(!(H instanceof K))throw new TypeError(\"Cannot call a class as a function\")}function M(H,K){for(var G=0;G<K.length;G++){var V=K[G];V.enumerable=V.enumerable||!1,V.configurable=!0,\"value\"in V&&(V.writable=!0),Object.defineProperty(H,V.key,V)}}function O(H,K,G){return K&&M(H.prototype,K),G&&M(H,G),H}function R(H,K){if(typeof K!=\"function\"&&K!==null)throw new TypeError(\"Super expression must either be null or a function\");H.prototype=Object.create(K&&K.prototype,{constructor:{value:H,writable:!0,configurable:!0}}),K&&D(H,K)}function D(H,K){return D=Object.setPrototypeOf||function(V,q){return V.__proto__=q,V},D(H,K)}function z(H){var K=B();return function(){var V=L(H),q;if(K){var Q=L(this).constructor;q=Reflect.construct(V,arguments,Q)}else q=V.apply(this,arguments);return T(this,q)}}function T(H,K){return K&&(P(K)===\"object\"||typeof K==\"function\")?K:k(H)}function k(H){if(H===void 0)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return H}function B(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function L(H){return L=Object.setPrototypeOf?Object.getPrototypeOf:function(G){return G.__proto__||Object.getPrototypeOf(G)},L(H)}function N(H,K){var G=\"data-clipboard-\".concat(H);if(K.hasAttribute(G))return K.getAttribute(G)}var F=(function(H){R(G,H);var K=z(G);function G(V,q){var Q;return E(this,G),Q=K.call(this),Q.resolveOptions(q),Q.listenClick(V),Q}return O(G,[{key:\"resolveOptions\",value:function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof q.action==\"function\"?q.action:this.defaultAction,this.target=typeof q.target==\"function\"?q.target:this.defaultTarget,this.text=typeof q.text==\"function\"?q.text:this.defaultText,this.container=P(q.container)===\"object\"?q.container:document.body}},{key:\"listenClick\",value:function(q){var Q=this;this.listener=d()(q,\"click\",function(oe){return Q.onClick(oe)})}},{key:\"onClick\",value:function(q){var Q=q.delegateTarget||q.currentTarget,oe=this.action(Q)||\"copy\",le=x({action:oe,container:this.container,target:this.target(Q),text:this.text(Q)});this.emit(le?\"success\":\"error\",{action:oe,text:le,trigger:Q,clearSelection:function(){Q&&Q.focus(),window.getSelection().removeAllRanges()}})}},{key:\"defaultAction\",value:function(q){return N(\"action\",q)}},{key:\"defaultTarget\",value:function(q){var Q=N(\"target\",q);if(Q)return document.querySelector(Q)}},{key:\"defaultText\",value:function(q){return N(\"text\",q)}},{key:\"destroy\",value:function(){this.listener.destroy()}}],[{key:\"copy\",value:function(q){var Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return w(q,Q)}},{key:\"cut\",value:function(q){return y(q)}},{key:\"isSupported\",value:function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[\"copy\",\"cut\"],Q=typeof q==\"string\"?[q]:q,oe=!!document.queryCommandSupported;return Q.forEach(function(le){oe=oe&&!!document.queryCommandSupported(le)}),oe}}]),G})(c()),j=F}),828:(function(r){var a=9;if(typeof Element<\"u\"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(c,u){for(;c&&c.nodeType!==a;){if(typeof c.matches==\"function\"&&c.matches(u))return c;c=c.parentNode}}r.exports=s}),438:(function(r,a,i){var s=i(828);function c(p,m,g,v,y){var b=d.apply(this,arguments);return p.addEventListener(g,b,y),{destroy:function(){p.removeEventListener(g,b,y)}}}function u(p,m,g,v,y){return typeof p.addEventListener==\"function\"?c.apply(null,arguments):typeof g==\"function\"?c.bind(null,document).apply(null,arguments):(typeof p==\"string\"&&(p=document.querySelectorAll(p)),Array.prototype.map.call(p,function(b){return c(b,m,g,v,y)}))}function d(p,m,g,v){return function(y){y.delegateTarget=s(y.target,m),y.delegateTarget&&v.call(p,y)}}r.exports=u}),879:(function(r,a){a.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},a.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s===\"[object NodeList]\"||s===\"[object HTMLCollection]\")&&\"length\"in i&&(i.length===0||a.node(i[0]))},a.string=function(i){return typeof i==\"string\"||i instanceof String},a.fn=function(i){var s=Object.prototype.toString.call(i);return s===\"[object Function]\"}}),370:(function(r,a,i){var s=i(879),c=i(438);function u(g,v,y){if(!g&&!v&&!y)throw new Error(\"Missing required arguments\");if(!s.string(v))throw new TypeError(\"Second argument must be a String\");if(!s.fn(y))throw new TypeError(\"Third argument must be a Function\");if(s.node(g))return d(g,v,y);if(s.nodeList(g))return p(g,v,y);if(s.string(g))return m(g,v,y);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\")}function d(g,v,y){return g.addEventListener(v,y),{destroy:function(){g.removeEventListener(v,y)}}}function p(g,v,y){return Array.prototype.forEach.call(g,function(b){b.addEventListener(v,y)}),{destroy:function(){Array.prototype.forEach.call(g,function(b){b.removeEventListener(v,y)})}}}function m(g,v,y){return c(document.body,g,v,y)}r.exports=u}),817:(function(r){function a(i){var s;if(i.nodeName===\"SELECT\")i.focus(),s=i.value;else if(i.nodeName===\"INPUT\"||i.nodeName===\"TEXTAREA\"){var c=i.hasAttribute(\"readonly\");c||i.setAttribute(\"readonly\",\"\"),i.select(),i.setSelectionRange(0,i.value.length),c||i.removeAttribute(\"readonly\"),s=i.value}else{i.hasAttribute(\"contenteditable\")&&i.focus();var u=window.getSelection(),d=document.createRange();d.selectNodeContents(i),u.removeAllRanges(),u.addRange(d),s=u.toString()}return s}r.exports=a}),279:(function(r){function a(){}a.prototype={on:function(i,s,c){var u=this.e||(this.e={});return(u[i]||(u[i]=[])).push({fn:s,ctx:c}),this},once:function(i,s,c){var u=this;function d(){u.off(i,d),s.apply(c,arguments)}return d._=s,this.on(i,d,c)},emit:function(i){var s=[].slice.call(arguments,1),c=((this.e||(this.e={}))[i]||[]).slice(),u=0,d=c.length;for(u;u<d;u++)c[u].fn.apply(c[u].ctx,s);return this},off:function(i,s){var c=this.e||(this.e={}),u=c[i],d=[];if(u&&s)for(var p=0,m=u.length;p<m;p++)u[p].fn!==s&&u[p].fn._!==s&&d.push(u[p]);return d.length?c[i]=d:delete c[i],this}},r.exports=a,r.exports.TinyEmitter=a})},o={};function l(r){if(o[r])return o[r].exports;var a=o[r]={exports:{}};return n[r](a,a.exports,l),a.exports}return(function(){l.n=function(r){var a=r&&r.__esModule?function(){return r.default}:function(){return r};return l.d(a,{a}),a}})(),(function(){l.d=function(r,a){for(var i in a)l.o(a,i)&&!l.o(r,i)&&Object.defineProperty(r,i,{enumerable:!0,get:a[i]})}})(),(function(){l.o=function(r,a){return Object.prototype.hasOwnProperty.call(r,a)}})(),l(686)})().default})})(Mc)),Mc.exports}var rq=lq();const aq=$l(rq),iq=e=>({toClipboard(t,n){return new Promise((o,l)=>{const r=document.createElement(\"button\"),a=new aq(r,{text:()=>t,action:()=>\"copy\",container:n!==void 0?n:document.body});a.on(\"success\",i=>{a.destroy(),o(i)}),a.on(\"error\",i=>{a.destroy(),l(i)}),document.body.appendChild(r),r.click(),document.body.removeChild(r)})}}),sq={class:\"w-[580px] min-h-[390px]\"},cq={class:\"px-5 py-3 border-b border-gray-200 flex items-center\"},uq={class:\"font-bold mr-2 text-[15px]\"},dq={class:\"px-5 pt-6\"},fq={class:\"font-bold\"},pq={class:\"mt-3 mb-1 text-[#333333]\"},mq={class:\"bg-[#f4f7f9] p-3 rounded-sm leading-6\"},vq={class:\"mt-3 mb-1 text-[#333333] flex items-center\"},gq={class:\"mr-1\"},hq={class:\"bg-[#f4f7f9] p-3 rounded-sm leading-6\"},bq={class:\"font-bold\"},yq={class:\"flex items-center py-3\"},Sq={class:\"w-[120px]! h-[120px] p-2 mr-4\"},$q=[\"src\",\"alt\"],Cq={class:\"flex-1\"},xq={class:\"text-[#666666] mb-1\"},wq={class:\"text-[#666666] mb-1\"},_q={class:\"mr-1\"},Iq={class:\"text-[#333333]\"},Pq={class:\"text-[#666666] flex\"},Tq={class:\"mr-1\"},Oq={class:\"flex-1 text-[#333333]\"},Eq={class:\"flex items-center\"},Mq={class:\"font-bold mr-2\"},Aq={class:\"px-5 py-3 border-t border-gray-200 text-right\"},Dq={class:\"text-[12px] text-gray-600 mr-2\"},Rq={__name:\"BindMfa\",props:{loginFormData:{type:Object,default:()=>({})}},setup(e){const t=Z(void 0),n=Z(!1),{t:o}=bl(),l=async()=>{const{toClipboard:a}=iq();try{await a(e.loginFormData.secret),ho.success(o(\"bind_mfa_copy_success\"))}catch{ho.error(o(\"bind_mfa_copy_fail\"))}},r=async()=>{if(!t.value)return ho.error(o(\"bind_mfa_step3_verify_code_pl\"));const a={...e.loginFormData,verify_code:t.value};a.google_auth_url=void 0;try{n.value=!0;const{data:i={}}=await ns(a),s=i.c_url?.replace(/^\\/+/,\"\")||\"\",c=os(i.c_url)?i.c_url:zt.baseUrl+s;window.location.href=c}catch(i){console.log(i)}finally{n.value=!1}};return(a,i)=>{const s=lo,c=xa,u=Lt,d=da,p=_t;return Ke(),dt(\"div\",sq,[Ie(\"header\",cq,[Ie(\"span\",uq,Ye(a.$t(\"bindmfa_title\")),1),f(s,{class:\"py-1! text-[12px]! flex-1!\",message:a.$t(\"bind_mfa_title_tip\"),type:\"info\",\"show-icon\":\"\",banner:\"\"},null,8,[\"message\"])]),Ie(\"div\",dq,[f(d,null,{default:tt(()=>[f(c,{color:\"green\"},{default:tt(()=>[Ie(\"div\",fq,Ye(a.$t(\"bind_mfa_step1_title\")),1),Ie(\"div\",null,[Ie(\"div\",pq,Ye(a.$t(\"bind_mfa_step1_action1_title\")),1),Ie(\"div\",mq,[Ie(\"div\",null,Ye(a.$t(\"bind_mfa_step1_action1_content1\")),1),Ie(\"div\",null,Ye(a.$t(\"bind_mfa_step1_action1_content2\")),1),Ie(\"div\",null,Ye(a.$t(\"bind_mfa_step1_action1_content3\")),1)])]),Ie(\"div\",null,[Ie(\"div\",vq,[Ie(\"div\",gq,Ye(a.$t(\"bind_mfa_step1_action2_title\")),1),i[1]||(i[1]=Ie(\"img\",{src:nq,alt:\"\"},null,-1))]),Ie(\"div\",hq,[Ie(\"div\",null,Ye(a.$t(\"bind_mfa_step1_action2_content1\")),1),Ie(\"div\",null,Ye(a.$t(\"bind_mfa_step1_action2_content2\")),1)])])]),_:1}),f(c,{color:\"green\"},{default:tt(()=>[Ie(\"div\",bq,Ye(a.$t(\"bind_mfa_step2_title\")),1),Ie(\"div\",yq,[Ie(\"div\",Sq,[Ie(\"img\",{class:\"w-full h-full\",src:e.loginFormData.google_auth_url,alt:a.$t(\"bind_mfa_step2_qrcode\")},null,8,$q)]),Ie(\"div\",Cq,[Ie(\"div\",xq,Ye(a.$t(\"bind_mfa_step2_content1\")),1),Ie(\"div\",wq,[Ie(\"span\",_q,Ye(a.$t(\"bind_mfa_step2_username\")),1),Ie(\"span\",Iq,Ye(e.loginFormData.google_auth_username),1)]),Ie(\"div\",Pq,[Ie(\"span\",Tq,Ye(a.$t(\"bind_mfa_step2_secret\")),1),Ie(\"div\",Oq,[Ie(\"span\",null,Ye(e.loginFormData.secret),1),Ie(\"a\",{type:\"link\",size:\"small\",class:\"font-[12px] ml-2\",onClick:l},Ye(a.$t(\"bind_mfa_copy\")),1)])])])])]),_:1}),f(c,{color:\"green\"},{default:tt(()=>[Ie(\"div\",Eq,[Ie(\"div\",Mq,Ye(a.$t(\"bind_mfa_step3_title\")),1),f(u,{class:\"flex-1\",placeholder:a.$t(\"bind_mfa_step3_verify_code_pl\"),value:Ne(t),\"onUpdate:value\":i[0]||(i[0]=m=>Fl(t)?t.value=m:null)},null,8,[\"placeholder\",\"value\"])])]),_:1})]),_:1})]),Ie(\"footer\",Aq,[Ie(\"span\",Dq,Ye(a.$t(\"bind_mfa_bottom_tip\")),1),f(p,{type:\"primary\",onClick:r,loading:Ne(n)},{default:tt(()=>[bt(Ye(a.$t(\"bind_mfa_bottom_bottom\")),1)]),_:1},8,[\"loading\"])])])}}},kq=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABgJJREFUeF7tm3+IVFUUxz9nzNWdHfBH5I6R6BZBrhZaYialBhWFKZaWWkZpYZJEKmRZ/eEf0ZqBa9gPW0wrLPthaYoUEaSGaWUqae5C2SpFO2ulK8zM6qpz475xlpn1zbz35t3ZnWW6MCzMnnu+53znvvvOOfdcocCjqVUNEcWNwAgU1wgMVjAyC+wB4ChCA3BACd8PLJejhTRRCqH8eKsalzjPFIQ7gaF+MJSiQQJ8ERA2DyiXnX502c01RsCRE6pPqDdzFczRv7RpQy19QoPA2uhp6q7qL6dMYPgmoPGk6ltexmJgiQmDPOioaW1jeVU/afEw5yJRXwRE4uopUSxV0NePEXnPVbQQYGk4KK/mqyMvAo5H1YhEgFoUE/IFNjpP2B5IsHBASPQm6ml4JqA5ph5XsNoTSicJC8yrrJC3vMB5IiASVbUIC7wAdLqsYmU4JAvd4romIBJXH6CY6VZxl8oJG8JBecCNDa4IiMTUZ8A9bhQWkcymcIXc62SPIwHd6pfv6K2LlZCTgG7xzDv9xA57QlYCinm3d/L54oWQ/e1gS4D1nhf2ewUqZvmAYqRdnGBLQCSuvimaIMcUq8L2cFButVkdmV/p8BbFSlO4RaVHWNAxbM5YAVZi05NGpIti+wKzJdASb6MqPYHKICASUy91VlZ3qAn0R4/hA5OfTho14Qp5LoXVToDO5yt64Su1zObA8WjS2YNNcDiS/JxLZEpfEoDqcPJz7QVCBoQKQ0nsDH1T9YR2Aprj6mmlWG4Csr456aT1txka/81Pa9WlUF0JQyuTxOi/JoYIiyuD8orW1U5AJK7q/VZyYm2weAvs+9OEmRfruP4KWD4ZKsp86hcawkGxSnUWAVYNL8EOn2otx+dv9Ksl9/zXp4Emwu8IBBiva4wWAZG4WoHCdQqZDbw7EYCiNhySRRYBTVFVL+K/kNmtCID6cIVUi1W3T9Dod0np+d2MAFSAKonE1XQUH3Y2AQvGJ5/lfkH4/CCs2ePOAlN7gIUmzNAE1KB41h18bim3K2DWKJh/c6auN3fBez86W2GYgGUSialNwBRnaGcJtwTYOXHmHEx4zRnDKAGwWROg094RztDOEn4I+O0feGi9M4ZJAgT2awKUM6w7CbcE3D0Mnr89U+fbe9ztAyYJsLYBkwTo0HfOBndkPTYGHh2TlHXrvJZdO9NcSGycgD9a4P533BFQNz2Z9OixYjt84vJM5+NHYJDBgzijK+BEHCbWuSNgd9rxyu6jsGizu3nb5kL/oDtZN1JGCWg7D+NXOcMOC8OaGZlyN7msQe14Esp6OGO4lTBKgAbVe4DeC3KNh0fDvLGZEm7m6XRY7wEmhzTH1L4cLSuesbYcgpqvc09bNRVGDcqUWb0L3nUIhJbcBpOHezYp14QDRgMhjaT3ganr4PTZ7Ljpz39KyukV2rsnfDrb7POPFQgZDIVTzqzcAR/lOFWwy+ediijTR4LOH4wOYZnRZChlXPQMPLERfv3bjLlXXwZvTINQLzP62rXoZMhkOpxu3s4j8MxWMwa/PAnGXWVGV7oWKx3WX0Ri6rDfdjY789b9AHXf+TN87liYPdqfDrvZuv1uYEiGJgmIqhWI/5KYHZCO8HSkl89YNAHuM5Km2aALteHghZKYqaJoNie3HYYXv/JGwQt3wMRqb3O8SGcURa1VYKAsnsuAb3+H9Xvh579ym3nd5aALJrdc6cUdj7Idy+J6usmDkVzmaBLW/wSnWjOl+pTDrBuSzhd62B6MFPJorKNDx07C+3th6y/J/0waBg+OgsH9Cu16Ur/t0Zj1GHTi4ajGSwU/Jg46PFBnfziqFejj8WAZjV3W+urBi7xEFS2tZ3Mcj1/YDEu3QSLFakm3yGgSSr5JynotFnFTtNfnP1cT9f+Nkk5slnSrbPumWMrN0mlvhtJtl28noZQvTKRIKOa3Q8GvzKRIKOlLU+lvDauvOMHSrmqt1a2vSrrg2lw6CSV9cTKdiJK9OmsXSFk1RsUUleAuA+13uoP1y0CPIr88nS2i7Hh9HhiSrSVHt6woONaZ1+f/Az+GaBdGAeCbAAAAAElFTkSuQmCC\",Nq={class:\"flex flex-col items-center\"},Bq={class:\"text-[#888888] my-4 text-[15px]\"},Lq={class:\"text-[#333333] mb-4\"},Fq={class:\"text-[15px]\"},zq={class:\"text-[#333333] mb-3\"},Hq={class:\"text-[15px]\"},jq={class:\"mt-4\"},Wq={class:\"text-xs text-[#888888] mt-2\"},Vq={__name:\"ValiMfa\",props:{loginFormData:{type:Object,default:()=>({})}},setup(e){const{t}=bl(),n=Z(void 0),o=Z(!1),l=Z(!1),r=async()=>{if(!n.value)return ho.error(t(\"vali_mfa_verify_code_pl\"));const a={...e.loginFormData,verify_code:n.value};e.loginFormData.show_mfa_days&&(a.seven_days_free=o.value?1:0),a.google_auth_url=void 0;try{l.value=!0;const{data:i={}}=await ns(a),s=i.c_url?.replace(/^\\/+/,\"\")||\"\",c=os(i.c_url)?i.c_url:zt.baseUrl+s;window.location.href=c}catch(i){console.log(i)}finally{l.value=!1}};return(a,i)=>{const s=Lt,c=Jn,u=_t;return Ke(),dt(\"div\",null,[Ie(\"div\",Nq,[i[2]||(i[2]=Ie(\"img\",{src:kq,alt:\"\"},null,-1)),Ie(\"div\",Bq,Ye(a.$t(\"vali_mfa_title\")),1)]),Ie(\"div\",Lq,[Ie(\"div\",Fq,Ye(a.$t(\"vali_mfa_step1_title\")),1),Ie(\"div\",null,Ye(a.$t(\"vali_mfa_step1_content\")),1)]),Ie(\"div\",zq,[Ie(\"div\",Hq,Ye(a.$t(\"vali_mfa_step2_title\")),1),Ie(\"div\",null,Ye(a.$t(\"vali_mfa_step2_content\")),1)]),Ie(\"div\",null,[f(s,{value:Ne(n),\"onUpdate:value\":i[0]||(i[0]=d=>Fl(n)?n.value=d:null),valueModifiers:{trim:!0},placeholder:a.$t(\"vali_mfa_verify_code_pl\")},null,8,[\"value\",\"placeholder\"]),e.loginFormData.show_mfa_days?(Ke(),Bt(c,{key:0,class:\"mt-4!\",checked:Ne(o),\"onUpdate:checked\":i[1]||(i[1]=d=>Fl(o)?o.value=d:null)},{default:tt(()=>[bt(Ye(a.$t(\"vali_mfa_seven_checked\")),1)]),_:1},8,[\"checked\"])):zn(\"\",!0)]),Ie(\"div\",jq,[f(u,{class:\"w-full\",size:\"large\",type:\"primary\",loading:Ne(l),onClick:r},{default:tt(()=>[bt(Ye(a.$t(\"submit\")),1)]),_:1},8,[\"loading\"]),Ie(\"div\",Wq,Ye(a.$t(\"vali_mfa_bottom_tip\")),1)])])}}},Kq={document_title:\"Login {'|'} Digital Operations and Maintenance Platform\",demo_tip:\"[Demo User: demo, Password: 123456.coM] Due to permission restrictions, the demo user can only view some features. For full functionality, please deploy the community edition privately.\",header_help:\"Help Center\",login_welcome:\"Welcome to Digital Operations Platform\",login_btn:\"Login\",login_btn_sm:\"Login\",login_username_pl:\"Please enter username\",login_pwd_pl:\"Please enter password\",login_domain_pl:\"Please select login domain\",wecom:\"WeCom\",wecom_err:\"Failed to get parameters, please try again or contact administrator\",bindmfa_title:\"Bind MFA Device\",bind_mfa_title_tip:\"MFA binding is enabled. Please complete the following steps to avoid affecting usage.\",bind_mfa_step1_title:\"Step 1: Get Authenticator\",bind_mfa_step1_action1_title:\"Method 1. Install Alibaba Cloud or Huawei Cloud APP\",bind_mfa_step1_action1_content1:\"Steps\",bind_mfa_step1_action1_content2:'Alibaba Cloud: Open Alibaba Cloud APP > Tap the \"+\" in the top right > Select [Virtual MFA]',bind_mfa_step1_action1_content3:'Huawei Cloud: Open Huawei Cloud APP > Tap \"My\" > Select [MFA]',bind_mfa_step1_action2_title:'Method 2. Search WeChat Mini Program \"Tencent Authenticator\"',bind_mfa_step1_action2_content1:\"Steps\",bind_mfa_step1_action2_content2:'Authorize and open the \"Tencent Authenticator\" mini program > Tap [QR Code Activation] > Then scan the QR code displayed in \"Step 2\" below',bind_mfa_step2_title:\"Step 2: Use Alibaba Cloud APP, Huawei Cloud APP, or Tencent Authenticator Mini Program to scan the following QR code\",bind_mfa_step2_qrcode:\"Authentication QR Code\",bind_mfa_step2_content1:\"Can't scan the code? Try account & secret key method\",bind_mfa_step2_username:\"Account: \",bind_mfa_step2_secret:\"Secret: \",bind_mfa_copy:\"Copy\",bind_mfa_copy_success:\"Copied successfully\",bind_mfa_copy_fail:\"Copy failed, please copy manually\",bind_mfa_step3_title:\"Step 3: Enter authorization code\",bind_mfa_step3_verify_code_pl:\"Please enter 6-digit authorization code\",bind_mfa_bottom_tip:\"Have questions? Please contact administrator\",bind_mfa_bottom_bottom:\"Confirm Binding\",vali_mfa_title:\"Account protection is enabled, please follow the prompts to complete the following operations\",vali_mfa_step1_title:\"Step 1: \",vali_mfa_step1_content:\"Please use one of the three methods: Alibaba Cloud APP, Huawei Cloud APP, or WeChat search mini program Tencent Authenticator to get the dynamic verification code\",vali_mfa_step2_title:\"Step 2: \",vali_mfa_step2_content:\"Please enter the 6-digit dynamic code\",vali_mfa_verify_code_pl:\"Please enter 6-digit dynamic code\",vali_mfa_seven_checked:\"No verification required for 7 days\",submit:\"Confirm\",vali_mfa_bottom_tip:\"Lost dynamic code? Please contact administrator to disable two-factor verification before continuing.\"},Gq={document_title:\"登录 {'|'} 数字化运维平台\",demo_tip:\"【演示用户：demo，密码：123456.coM】演示用户由于权限限制，仅可查看部分功能，完整功能请私有化部署社区版使用。\",header_help:\"帮助中心\",login_welcome:\"欢迎登录数字化运维平台\",login_btn:\"立即登录\",login_btn_sm:\"登录\",login_username_pl:\"请输入用户名\",login_pwd_pl:\"请输入密码\",login_domain_pl:\"请选择登录域\",wecom:\"企业微信\",wecom_err:\"获取参数失败，请重试或联系管理员\",bindmfa_title:\"绑定MFA设备\",bind_mfa_title_tip:\"已开启绑定MFA功能，请完成以下操作以免影响使用。\",bind_mfa_step1_title:\"第一步: 获取身份验证器\",bind_mfa_step1_action1_title:\"方法1.安装阿里云、华为云APP\",bind_mfa_step1_action1_content1:\"使用步骤\",bind_mfa_step1_action1_content2:\"阿里云：打开阿里云APP > 点击“右上角+号”> 选择【虚拟MFA】\",bind_mfa_step1_action1_content3:\"华为云：打开华为云APP > 点击“我的”> 选择【MFA】\",bind_mfa_step1_action2_title:\"方法2.微信搜索小程序“腾讯身份验证器”\",bind_mfa_step1_action2_content1:\"使用步骤\",bind_mfa_step1_action2_content2:\"授权打开“腾讯身份验证器”小程序 > 点击【二维码激活】 > 然后扫描下 方“第二步”展示的二维码\",bind_mfa_step2_title:\"第二步: 使用阿里云APP、华为云APP、腾讯身份验证器小程序扫描以下二维码\",bind_mfa_step2_qrcode:\"身份验证二维码\",bind_mfa_step2_content1:\"扫不了码？试试账号&密钥方式获取\",bind_mfa_step2_username:\"账号: \",bind_mfa_step2_secret:\"密钥: \",bind_mfa_copy:\"复制\",bind_mfa_copy_success:\"复制成功\",bind_mfa_copy_fail:\"复制失败,请手动复制\",bind_mfa_step3_title:\"第三步: 输入授权码\",bind_mfa_step3_verify_code_pl:\"请输入6位授权码\",bind_mfa_bottom_tip:\"有疑问？请联系管理员\",bind_mfa_bottom_bottom:\"确认绑定\",vali_mfa_title:\"账号保护已开启,请根据提示完成以下操作\",vali_mfa_step1_title:\"第一步: \",vali_mfa_step1_content:\"请使用阿里云APP、华为云APP、微信搜索小程序腾讯身份验证器三种方式获取动态验证码\",vali_mfa_step2_title:\"第二步: \",vali_mfa_step2_content:\"请输入6位动态码\",vali_mfa_verify_code_pl:\"请输入6位动态码\",vali_mfa_seven_checked:\"7天内免验证\",submit:\"确定\",vali_mfa_bottom_tip:\"遗失动态码?请联系管理员解除双因素验证后继续操作。\"},Xq={document_title:\"登入 {'|'} 數位化維運平台\",demo_tip:\"【示範使用者：demo，密碼：123456.coM】示範使用者由於權限限制，僅可查看部分功能，完整功能請私有化部署社群版使用。\",header_help:\"幫助中心\",login_welcome:\"歡迎登入數位化維運平台\",login_btn:\"立即登入\",login_btn_sm:\"登入\",login_username_pl:\"請輸入使用者名稱\",login_pwd_pl:\"請輸入密碼\",login_domain_pl:\"請選擇登入網域\",wecom:\"企業微信\",wecom_err:\"取得參數失敗，請重試或聯絡管理員\",bindmfa_title:\"綁定MFA設備\",bind_mfa_title_tip:\"已開啟綁定MFA功能，請完成以下操作以免影響使用。 \",bind_mfa_step1_title:\"第一步: 取得驗證器\",bind_mfa_step1_action1_title:\"方法1.安裝阿里雲、華為雲APP\",bind_mfa_step1_action1_content1:\"使用步驟\",bind_mfa_step1_action1_content2:\"阿里雲：開啟阿里雲APP > 點選「右上角+號」> 選擇【虛擬MFA】\",bind_mfa_step1_action1_content3:\"華為雲：開啟華為雲APP > 點選「我的」> 選擇【MFA】\",bind_mfa_step1_action2_title:\"方法2.微信搜尋小程式「騰訊身份驗證器」\",bind_mfa_step1_action2_content1:\"使用步驟\",bind_mfa_step1_action2_content2:\"授權開啟「騰訊身分驗證器」小程式 > 點選【二維碼啟動】 > 然後掃描下 方「第二步驟」展示的二維碼\",bind_mfa_step2_title:\"第二步: 使用阿里雲APP、華為雲APP、騰訊身份驗證器小程式掃描以下二維碼\",bind_mfa_step2_qrcode:\"驗證二維碼\",bind_mfa_step2_content1:\"掃不了碼？試試帳號&密鑰方式取得\",bind_mfa_step2_username:\"帳號: \",bind_mfa_step2_secret:\"金鑰: \",bind_mfa_copy:\"複製\",bind_mfa_copy_success:\"複製成功\",bind_mfa_copy_fail:\"複製失敗,請手動複製\",bind_mfa_step3_title:\"第三步: 輸入授權碼\",bind_mfa_step3_verify_code_pl:\"請輸入6位授權碼\",bind_mfa_bottom_tip:\"有疑問？請聯絡管理員\",bind_mfa_bottom_bottom:\"確認綁定\",vali_mfa_title:\"帳號保護已開啟,請根據提示完成以下操作\",vali_mfa_step1_title:\"第一步: \",vali_mfa_step1_content:\"請使用阿里雲APP、華為雲APP、微信搜尋小程式騰訊身份驗證器三種方式取得動態驗證碼\",vali_mfa_step2_title:\"第二步: \",vali_mfa_step2_content:\"請輸入6位元動態碼\",vali_mfa_verify_code_pl:\"請輸入6位元動態碼\",vali_mfa_seven_checked:\"7天內免驗證\",submit:\"確定\",vali_mfa_bottom_tip:\"遺失動態碼?請聯絡管理員解除雙重驗證後繼續操作。 \"},vI={en:Kq,\"zh-CN\":Gq,\"zh-TW\":Xq},Uq=Object.keys(vI),Ns=\"opsany_language\",Yq=\"zh-CN\",US=[{key:\"chinese_simplified\",value:\"zh-CN\"},{key:\"chinese_traditional\",value:\"zh-TW\"},{key:\"english\",value:\"en\"}];function gI(){const e=d$(Ns),t=()=>{const o=window.location.pathname;if(o===\"/\")return;const l=[o,o.replace(/\\/$/,\"\"),o+\"/\"];[...new Set(l)].forEach(a=>{a&&a!==\"/\"&&e.remove(Ns,{path:a})})},n=I({get(){const o=e.get(Ns);return US.find(l=>l.key===o)?.value||Yq},set(o){const l=US.find(a=>a.value===o)?.key;t();const r=new Date;r.setDate(r.getDate()+7),e.set(Ns,l,{path:\"/\",expires:r})}});return{locale:n,setLocale:o=>{Uq.includes(o)&&(n.value=o,window.location.reload())}}}const qq={class:\"h-[50px] bg-white flex justify-between items-center shadow-sm\"},Zq=[\"src\"],Qq={class:\"mr-[100px]\"},Jq={class:\"text-[#666666]! mr-3\",href:\"/docs/\"},eZ={class:\"flex items-center\"},tZ=[\"src\",\"alt\"],nZ={key:0,class:\"absolute left-0 top-[50px] w-full\"},oZ={class:\"ml-[20%]\"},lZ=[\"src\"],rZ=[\"src\"],aZ={key:0,class:\"px-[30px] py-[30px] mt-[6%] shadow-xl rounded-lg bg-white w-[380px] min-h-[390px] absolute top-[12%] left-[57%]\"},iZ={class:\"text-xl font-bold mb-3 mt-2\"},sZ={key:1},cZ={key:1,class:\"shadow-xl rounded-lg bg-white absolute top-[12%] left-[57%]\"},uZ={__name:\"login\",setup(e){const{locale:t,setLocale:n}=gI(),o=Z(\"\"),l=Z(!1),r=Z({}),a=Z([{key:\"zh-CN\",title:\"简体中文\",img:uU},{key:\"zh-TW\",title:\"繁體中文\",img:dU},{key:\"en\",title:\"English\",img:fU}]),i=ee([{title:\"密码登录\",key:\"1\",componentKey:HU},{title:\"LDAP\",key:\"2\",componentKey:QU},{title:\"企业微信\",key:\"3\",componentKey:YU},{title:\"OAuth\",key:\"6\",componentKey:_Y},{title:\"AD\",key:\"7\",componentKey:TY},{title:\"SSO\",key:\"8\",componentKey:iY},{title:\"IDaaS\",key:\"9\",componentKey:gY},{title:\"IAM\",key:\"10\",componentKey:BY},{title:\"钉钉\",key:\"11\",componentKey:GY},{title:\"飞书\",key:\"12\",componentKey:tq}]),s=ee([]),c=Z(\"1\"),u=Z(window.location.hostname===\"demo.opsany.com\"),d=async()=>{try{l.value=!0;const{data:v=[]}=await FU({auth_type:\"all\"});v.forEach(S=>{i.value.find($=>$.key==S.auth_type)&&(S.componentKey=i.value.find($=>$.key==S.auth_type).componentKey)}),s.value=v,o.value=v[0]&&v[0].title;const b=si(\"history\").auth_type;if(s.value.find(S=>S.auth_type==b))return;c.value=v[0]?.auth_type||\"1\"}catch(v){console.log(v)}finally{l.value=!1}},p=v=>{r.value=v},m=({key:v})=>{n(v)},g=()=>{d$([\"opsany_language\"]).get(\"opsany_language\")||(t.value=\"zh-CN\")};return Be(()=>{g();const y=si(\"history\").auth_type;i.value.find(b=>b.key==y)&&(c.value=y),d()}),(v,y)=>{const b=_a,S=Eo,$=Ht,w=vo,C=_r,_=lo,x=ud,P=Pi,E=Rl,M=gr;return Ke(),dt(\"div\",{class:\"page-content\",style:Bs({background:\"url(\"+Ne(zt).baseUrlOfImg+\"uploads/login/img/bg_image.png) no-repeat\"})},[Ie(\"header\",qq,[Ie(\"img\",{class:\"h-[50px] ml-[200px]\",src:Ne(zt).baseUrlOfImg+\"uploads/login/img/bk_login.png\",alt:\"\"},null,8,Zq),Ie(\"div\",Qq,[Ie(\"a\",Jq,Ye(v.$t(\"header_help\")),1),f(w,null,{overlay:tt(()=>[f($,{onClick:m},{default:tt(()=>[(Ke(!0),dt(He,null,Go(Ne(a),O=>(Ke(),Bt(S,{key:O.key},{default:tt(()=>[Ie(\"div\",eZ,[Ie(\"img\",{class:\"w-[18px] h-[18px] mr-1\",src:O.img,alt:O.title},null,8,tZ),Ie(\"span\",null,Ye(O.title),1)])]),_:2},1024))),128))]),_:1})]),default:tt(()=>[Ie(\"a\",{class:\"text-[#666666]!\",onClick:y[0]||(y[0]=Yf(()=>{},[\"prevent\"]))},[bt(Ye(Ne(a).find(O=>O.key==Ne(t))?.title)+\" \",1),f(b,{class:\"text-xs\"})])]),_:1})])]),Ne(u)?(Ke(),dt(\"div\",nZ,[f(_,{style:{\"text-align\":\"center\"},type:\"info\"},{message:tt(()=>[f(C,{style:{color:\"#1677ff\"}}),bt(\" \"+Ye(v.$t(\"demo_tip\")),1)]),_:1})])):zn(\"\",!0),Ie(\"div\",null,[Ie(\"div\",oZ,[Ie(\"img\",{class:\"w-[540px] mt-[11%]\",src:Ne(zt).baseUrlOfImg+\"uploads/login/img/home_top_word.png\",alt:\"\"},null,8,lZ),Ie(\"img\",{class:\"w-[540px] mt-[30px]\",src:Ne(zt).baseUrlOfImg+\"uploads/login/img/home_page_picture.png\",alt:\"\"},null,8,rZ)]),!Ne(r).google_auth_type||[\"verify_google_auth\"].includes(Ne(r).google_auth_type)?(Ke(),dt(\"div\",aZ,[Ne(r).google_auth_type==\"verify_google_auth\"?(Ke(),Bt(Vq,{key:0,loginFormData:Ne(r)},null,8,[\"loginFormData\"])):(Ke(),dt(He,{key:1},[Ie(\"div\",iZ,[Ne(l)?(Ke(),Bt(x,{key:0,active:!0})):(Ke(),dt(\"div\",sZ,Ye(Ne(o)||v.$t(\"login_welcome\")),1))]),f(M,{loading:Ne(l),bordered:!1,bodyStyle:{padding:0}},{default:tt(()=>[f(E,{class:\"mt-2\",activeKey:Ne(c),\"onUpdate:activeKey\":y[1]||(y[1]=O=>Fl(c)?c.value=O:null),destroyInactiveTabPane:\"\"},{default:tt(()=>[(Ke(!0),dt(He,null,Go(Ne(s),O=>(Ke(),Bt(P,{key:O.auth_type,tab:O.auth_show_name},{default:tt(()=>[(Ke(),Bt(uP(O.componentKey),{authData:O,onSwitchLoginMode:p},null,40,[\"authData\"]))]),_:2},1032,[\"tab\"]))),128))]),_:1},8,[\"activeKey\"])]),_:1},8,[\"loading\"])],64))])):[\"start_bind_google_auth\",\"bind_google_auth\"].includes(Ne(r).google_auth_type)?(Ke(),dt(\"div\",cZ,[f(Rq,{loginFormData:Ne(r)},null,8,[\"loginFormData\"])])):zn(\"\",!0)])],4)}}},dZ=eh(uZ,[[\"__scopeId\",\"data-v-15ddd85f\"]]),fZ={__name:\"App\",setup(e){const{t}=bl();return bP(t(\"document_title\")),(n,o)=>{const l=fa,r=Bl;return Ke(),Bt(r,{theme:{token:{colorPrimary:\"#0ba360\",borderRadius:2,colorText:\"rgba(0, 0, 0, 0.7)\",colorLink:\"#0ba360\",colorLinkHover:\"#34cb88\",colorLinkActive:\"#0ca763\"},components:{Input:{borderRadius:4},Select:{borderRadius:4}}}},{default:tt(()=>[f(l,{class:\"tw-h-full\"},{default:tt(()=>[f(dZ)]),_:1})]),_:1})}}};function pZ(){const{locale:e}=gI(),t=sO({legacy:!1,locale:e.value,fallbackLocale:\"zh-CN\",messages:vI});return t.global.locale.value=e.value,t}const th=a$(fZ),mZ=pZ();th.use(cU);th.use(mZ);th.mount(\"#app\");\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/index-Cu90Cwu-.css",
    "content": "@font-face{font-family:iconfont;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI8aU3ZAAABjAAAAGBjbWFw/x+9OAAAAgAAAAGqZ2x5ZjE+aEUAAAO4AAABXGhlYWQe2zHlAAAA4AAAADZoaGVhB94DhgAAALwAAAAkaG10eBQAAAAAAAHsAAAAFGxvY2EAiADyAAADrAAAAAxtYXhwARAARgAAARgAAAAgbmFtZRCjPLAAAAUUAAACZ3Bvc3Q1hzJbAAAHfAAAAFAAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAUAAQAAAAEAAD6nqRJfDzz1AAsEAAAAAADd3fb1AAAAAN3d9vUAAP/2BAADCAAAAAgAAgAAAAAAAAABAAAABQA6AAEAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQEAAGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOZU6wkDgP+AAAAD3ACAAAAAAQAAAAAAAAAAAAAAAAACBAAAAAQAAAAEAAAABAAAAAQAAAAAAAAFAAAAAwAAACwAAAAEAAABagABAAAAAABkAAMAAQAAACwAAwAKAAABagAEADgAAAAIAAgAAgAA5lTm1esJ//8AAOZU5tXrCP//AAAAAAAAAAEACAAIAAgAAAAEAAEAAwACAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAABAAAAAAAAAAAQAAOZUAADmVAAAAAQAAObVAADm1QAAAAEAAOsIAADrCAAAAAMAAOsJAADrCQAAAAIAAAAAAAAALgBEAFoArgABAAAAAAMxArEAGwAAJSc3NjQmIg8BJyYiBhQfAQcGFBYyPwEXFjI2NAMi3t4OHCgO3t4OKBwO3t4OHCgO3t4OKByi3t4OKBwO3t4OHCgO3t4OKBwO3t4OHCgAAAEAAAAABAAC4AAFAAAJAgcJAQOt/eD+xlMBjQJzAuD94AFAU/5zAm0AAAAAAQAAAAADfAKAAAgAAAEhFSEHFzcnBwLa/aYCWoU86+c7AcBVhTvq6zwAAAABAAD/9gOBAwgAOQAAASMiJj0BND8BLgEjBgcGBw4BFxYXHgE3Njc2NzQ2OwEyFhUOAy4CPgMWFzc2OwEyFh0BFAYDa9YJDAZMKW47UEVCKCkEJyVBQ59HRCssBg0IKwkMBleQsaiBPxBblq+nPz8GCQ0JDAwB1Q0JDAkGTCsuAScnQkSgRUQpKwclI0BCUAgMDglZmWUbNXinr5hhFDhAQAYMCdUJDQAAABIA3gABAAAAAAAAABMAAAABAAAAAAABAAgAEwABAAAAAAACAAcAGwABAAAAAAADAAgAIgABAAAAAAAEAAgAKgABAAAAAAAFAAsAMgABAAAAAAAGAAgAPQABAAAAAAAKACsARQABAAAAAAALABMAcAADAAEECQAAACYAgwADAAEECQABABAAqQADAAEECQACAA4AuQADAAEECQADABAAxwADAAEECQAEABAA1wADAAEECQAFABYA5wADAAEECQAGABAA/QADAAEECQAKAFYBDQADAAEECQALACYBY0NyZWF0ZWQgYnkgaWNvbmZvbnRpY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFIAZQBnAHUAbABhAHIAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AZgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbgBmAG8AbgB0AEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAQIBAwEEAQUBBgAEZmFpbAdzdWNjZXNzC2Fycm93LXJpZ2h0B3JlZnJlc2gAAA==) format(\"truetype\")}.iconfont[data-v-617ae856]{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-fail[data-v-617ae856]:before{content:\"\"}.icon-success[data-v-617ae856]:before{content:\"\"}.icon-arrow-right[data-v-617ae856]:before{content:\"\"}.icon-refresh[data-v-617ae856]:before{content:\"\"}.slide-verify[data-v-617ae856]{position:relative}.slide-verify-loading[data-v-617ae856]{position:absolute;inset:0;background:#ffffffe6;z-index:999;animation:loading-617ae856 1.5s infinite}.slide-verify-block[data-v-617ae856]{position:absolute;left:0;top:0}.slide-verify-refresh-icon[data-v-617ae856]{position:absolute;right:0;top:0;width:34px;height:34px;cursor:pointer}.slide-verify-refresh-icon .iconfont[data-v-617ae856]{font-size:34px;color:#fff}.slide-verify-slider[data-v-617ae856]{position:relative;text-align:center;width:100%;height:40px;line-height:40px;margin-top:15px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.slide-verify-slider-mask[data-v-617ae856]{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.slide-verify-slider-mask-item[data-v-617ae856]{position:absolute;left:0;top:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;cursor:pointer;transition:background .2s linear;display:flex;align-items:center;justify-content:center}.slide-verify-slider-mask-item[data-v-617ae856]:hover{background:#1991fa}.slide-verify-slider-mask-item:hover .iconfont[data-v-617ae856]{color:#fff}.slide-verify-slider-mask-item-icon[data-v-617ae856]{line-height:1;font-size:30px;color:#303030}.container-active .slide-verify-slider-mask[data-v-617ae856]{height:38px;border-width:1px}.container-active .slide-verify-slider-mask-item[data-v-617ae856]{height:38px;top:-1px;border:1px solid #1991fa}.container-success .slide-verify-slider-mask[data-v-617ae856]{height:38px;border:1px solid #52ccba;background-color:#d2f4ef}.container-success .slide-verify-slider-mask-item[data-v-617ae856]{height:38px;top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.container-success .slide-verify-slider-mask .iconfont[data-v-617ae856]{color:#fff}.container-fail .slide-verify-slider-mask[data-v-617ae856]{height:38px;border:1px solid #f57a7a;background-color:#fce1e1}.container-fail .slide-verify-slider-mask-item[data-v-617ae856]{height:38px;top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.container-fail .slide-verify-slider-mask .iconfont[data-v-617ae856]{color:#fff}.container-active .slide-verify-slider-text[data-v-617ae856],.container-success .slide-verify-slider-text[data-v-617ae856],.container-fail .slide-verify-slider-text[data-v-617ae856]{display:none}@keyframes loading-617ae856{0%{opacity:.7}to{opacity:9}}.select_icon[data-v-015cc9d8]{position:absolute;top:12px;left:12px}[data-v-015cc9d8] .ant-select-single.ant-select-show-arrow .ant-select-selection-item{padding-left:20px;line-height:34px}[data-v-015cc9d8] .ant-select-single:not(.ant-select-customize-input) .ant-select-selector{height:36px!important}[data-v-015cc9d8] .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:36px!important;padding-left:18px}.select_icon[data-v-fda58afa]{position:absolute;top:12px;left:12px}[data-v-fda58afa] .ant-select-single.ant-select-show-arrow .ant-select-selection-item{padding-left:20px;line-height:34px}[data-v-fda58afa] .ant-select-single:not(.ant-select-customize-input) .ant-select-selector{height:36px!important}[data-v-fda58afa] .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:36px!important;padding-left:18px}.page-content[data-v-15ddd85f]{position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;background-size:100% 100%!important}[data-v-15ddd85f] .ant-tabs-top>.ant-tabs-nav:before,[data-v-15ddd85f] .ant-tabs-top>div>.ant-tabs-nav:before{border:none}[data-v-15ddd85f] .ant-card:not(.ant-card-bordered){box-shadow:none}[data-v-15ddd85f] .ant-tabs-tab{padding:8px 0}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-bold:700;--radius-sm:.25rem;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.top-\\[12\\%\\]{top:12%}.top-\\[50px\\]{top:50px}.left-0{left:calc(var(--spacing)*0)}.left-\\[57\\%\\]{left:57%}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.my-4{margin-block:calc(var(--spacing)*4)}.my-20{margin-block:calc(var(--spacing)*20)}.mt-1\\!{margin-top:calc(var(--spacing)*1)!important}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-4\\!{margin-top:calc(var(--spacing)*4)!important}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-6\\!{margin-top:calc(var(--spacing)*6)!important}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-\\[6\\%\\]{margin-top:6%}.mt-\\[11\\%\\]{margin-top:11%}.mt-\\[30px\\]{margin-top:30px}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.mr-\\[100px\\]{margin-right:100px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-4\\!{margin-bottom:calc(var(--spacing)*4)!important}.mb-10{margin-bottom:calc(var(--spacing)*10)}.ml-1\\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-\\[20\\%\\]{margin-left:20%}.ml-\\[200px\\]{margin-left:200px}.flex{display:flex}.flex\\!{display:flex!important}.h-\\[18px\\]{height:18px}.h-\\[50px\\]{height:50px}.h-\\[120px\\]{height:120px}.h-full{height:100%}.max-h-\\[400px\\]{max-height:400px}.min-h-\\[390px\\]{min-height:390px}.w-6{width:calc(var(--spacing)*6)}.w-\\[18px\\]{width:18px}.w-\\[50px\\]\\!{width:50px!important}.w-\\[120px\\]\\!{width:120px!important}.w-\\[380px\\]{width:380px}.w-\\[540px\\]{width:540px}.w-\\[580px\\]{width:580px}.w-full{width:100%}.flex-1{flex:1}.flex-1\\!{flex:1!important}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.bg-\\[\\#f4f7f9\\]{background-color:#f4f7f9}.bg-\\[\\#f5f6f7\\]{background-color:#f5f6f7}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-\\[30px\\]{padding-inline:30px}.py-1\\!{padding-block:calc(var(--spacing)*1)!important}.py-1\\.5\\!{padding-block:calc(var(--spacing)*1.5)!important}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-\\[30px\\]{padding-block:30px}.pt-6{padding-top:calc(var(--spacing)*6)}.text-center{text-align:center}.text-right{text-align:right}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[12px\\]{font-size:12px}.text-\\[12px\\]\\!{font-size:12px!important}.text-\\[15px\\]{font-size:15px}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.font-\\[12px\\]{--tw-font-weight:12px;font-weight:12px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-\\[\\#8b8b8b\\]\\!{color:#8b8b8b!important}.text-\\[\\#333333\\]{color:#333}.text-\\[\\#666666\\]{color:#666}.text-\\[\\#666666\\]\\!{color:#666!important}.text-\\[\\#888888\\]{color:#888}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex=\"-1\"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/index-DpYBPcyk.css",
    "content": "@font-face{font-family:iconfont;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI8aU3ZAAABjAAAAGBjbWFw/x+9OAAAAgAAAAGqZ2x5ZjE+aEUAAAO4AAABXGhlYWQe2zHlAAAA4AAAADZoaGVhB94DhgAAALwAAAAkaG10eBQAAAAAAAHsAAAAFGxvY2EAiADyAAADrAAAAAxtYXhwARAARgAAARgAAAAgbmFtZRCjPLAAAAUUAAACZ3Bvc3Q1hzJbAAAHfAAAAFAAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAUAAQAAAAEAAD6nqRJfDzz1AAsEAAAAAADd3fb1AAAAAN3d9vUAAP/2BAADCAAAAAgAAgAAAAAAAAABAAAABQA6AAEAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQEAAGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOZU6wkDgP+AAAAD3ACAAAAAAQAAAAAAAAAAAAAAAAACBAAAAAQAAAAEAAAABAAAAAQAAAAAAAAFAAAAAwAAACwAAAAEAAABagABAAAAAABkAAMAAQAAACwAAwAKAAABagAEADgAAAAIAAgAAgAA5lTm1esJ//8AAOZU5tXrCP//AAAAAAAAAAEACAAIAAgAAAAEAAEAAwACAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAABAAAAAAAAAAAQAAOZUAADmVAAAAAQAAObVAADm1QAAAAEAAOsIAADrCAAAAAMAAOsJAADrCQAAAAIAAAAAAAAALgBEAFoArgABAAAAAAMxArEAGwAAJSc3NjQmIg8BJyYiBhQfAQcGFBYyPwEXFjI2NAMi3t4OHCgO3t4OKBwO3t4OHCgO3t4OKByi3t4OKBwO3t4OHCgO3t4OKBwO3t4OHCgAAAEAAAAABAAC4AAFAAAJAgcJAQOt/eD+xlMBjQJzAuD94AFAU/5zAm0AAAAAAQAAAAADfAKAAAgAAAEhFSEHFzcnBwLa/aYCWoU86+c7AcBVhTvq6zwAAAABAAD/9gOBAwgAOQAAASMiJj0BND8BLgEjBgcGBw4BFxYXHgE3Njc2NzQ2OwEyFhUOAy4CPgMWFzc2OwEyFh0BFAYDa9YJDAZMKW47UEVCKCkEJyVBQ59HRCssBg0IKwkMBleQsaiBPxBblq+nPz8GCQ0JDAwB1Q0JDAkGTCsuAScnQkSgRUQpKwclI0BCUAgMDglZmWUbNXinr5hhFDhAQAYMCdUJDQAAABIA3gABAAAAAAAAABMAAAABAAAAAAABAAgAEwABAAAAAAACAAcAGwABAAAAAAADAAgAIgABAAAAAAAEAAgAKgABAAAAAAAFAAsAMgABAAAAAAAGAAgAPQABAAAAAAAKACsARQABAAAAAAALABMAcAADAAEECQAAACYAgwADAAEECQABABAAqQADAAEECQACAA4AuQADAAEECQADABAAxwADAAEECQAEABAA1wADAAEECQAFABYA5wADAAEECQAGABAA/QADAAEECQAKAFYBDQADAAEECQALACYBY0NyZWF0ZWQgYnkgaWNvbmZvbnRpY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFIAZQBnAHUAbABhAHIAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AZgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbgBmAG8AbgB0AEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAQIBAwEEAQUBBgAEZmFpbAdzdWNjZXNzC2Fycm93LXJpZ2h0B3JlZnJlc2gAAA==) format(\"truetype\")}.iconfont[data-v-617ae856]{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-fail[data-v-617ae856]:before{content:\"\"}.icon-success[data-v-617ae856]:before{content:\"\"}.icon-arrow-right[data-v-617ae856]:before{content:\"\"}.icon-refresh[data-v-617ae856]:before{content:\"\"}.slide-verify[data-v-617ae856]{position:relative}.slide-verify-loading[data-v-617ae856]{position:absolute;inset:0;background:#ffffffe6;z-index:999;animation:loading-617ae856 1.5s infinite}.slide-verify-block[data-v-617ae856]{position:absolute;left:0;top:0}.slide-verify-refresh-icon[data-v-617ae856]{position:absolute;right:0;top:0;width:34px;height:34px;cursor:pointer}.slide-verify-refresh-icon .iconfont[data-v-617ae856]{font-size:34px;color:#fff}.slide-verify-slider[data-v-617ae856]{position:relative;text-align:center;width:100%;height:40px;line-height:40px;margin-top:15px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.slide-verify-slider-mask[data-v-617ae856]{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.slide-verify-slider-mask-item[data-v-617ae856]{position:absolute;left:0;top:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;cursor:pointer;transition:background .2s linear;display:flex;align-items:center;justify-content:center}.slide-verify-slider-mask-item[data-v-617ae856]:hover{background:#1991fa}.slide-verify-slider-mask-item:hover .iconfont[data-v-617ae856]{color:#fff}.slide-verify-slider-mask-item-icon[data-v-617ae856]{line-height:1;font-size:30px;color:#303030}.container-active .slide-verify-slider-mask[data-v-617ae856]{height:38px;border-width:1px}.container-active .slide-verify-slider-mask-item[data-v-617ae856]{height:38px;top:-1px;border:1px solid #1991fa}.container-success .slide-verify-slider-mask[data-v-617ae856]{height:38px;border:1px solid #52ccba;background-color:#d2f4ef}.container-success .slide-verify-slider-mask-item[data-v-617ae856]{height:38px;top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.container-success .slide-verify-slider-mask .iconfont[data-v-617ae856]{color:#fff}.container-fail .slide-verify-slider-mask[data-v-617ae856]{height:38px;border:1px solid #f57a7a;background-color:#fce1e1}.container-fail .slide-verify-slider-mask-item[data-v-617ae856]{height:38px;top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.container-fail .slide-verify-slider-mask .iconfont[data-v-617ae856]{color:#fff}.container-active .slide-verify-slider-text[data-v-617ae856],.container-success .slide-verify-slider-text[data-v-617ae856],.container-fail .slide-verify-slider-text[data-v-617ae856]{display:none}@keyframes loading-617ae856{0%{opacity:.7}to{opacity:9}}.select_icon[data-v-f32c32d7]{position:absolute;top:12px;left:12px}[data-v-f32c32d7] .ant-select-single.ant-select-show-arrow .ant-select-selection-item{padding-left:20px;line-height:34px}[data-v-f32c32d7] .ant-select-single:not(.ant-select-customize-input) .ant-select-selector{height:36px!important}[data-v-f32c32d7] .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:36px!important;padding-left:18px}.select_icon[data-v-249164ff]{position:absolute;top:12px;left:12px}[data-v-249164ff] .ant-select-single.ant-select-show-arrow .ant-select-selection-item{padding-left:20px;line-height:34px}[data-v-249164ff] .ant-select-single:not(.ant-select-customize-input) .ant-select-selector{height:36px!important}[data-v-249164ff] .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:36px!important;padding-left:18px}.page-content[data-v-2763c877]{position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;background-size:100% 100%!important}[data-v-2763c877] .ant-tabs-top>.ant-tabs-nav:before,[data-v-2763c877] .ant-tabs-top>div>.ant-tabs-nav:before{border:none}[data-v-2763c877] .ant-card:not(.ant-card-bordered){box-shadow:none}[data-v-2763c877] .ant-tabs-tab{padding:8px 0}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-bold:700;--radius-sm:.25rem;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.top-\\[12\\%\\]{top:12%}.left-\\[57\\%\\]{left:57%}.my-2{margin-block:calc(var(--spacing)*2)}.my-4{margin-block:calc(var(--spacing)*4)}.my-20{margin-block:calc(var(--spacing)*20)}.mt-1\\!{margin-top:calc(var(--spacing)*1)!important}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-4\\!{margin-top:calc(var(--spacing)*4)!important}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-6\\!{margin-top:calc(var(--spacing)*6)!important}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-\\[6\\%\\]{margin-top:6%}.mt-\\[11\\%\\]{margin-top:11%}.mt-\\[30px\\]{margin-top:30px}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.mr-\\[100px\\]{margin-right:100px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-4\\!{margin-bottom:calc(var(--spacing)*4)!important}.mb-10{margin-bottom:calc(var(--spacing)*10)}.ml-1\\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-\\[20\\%\\]{margin-left:20%}.ml-\\[200px\\]{margin-left:200px}.flex{display:flex}.flex\\!{display:flex!important}.h-\\[18px\\]{height:18px}.h-\\[50px\\]{height:50px}.h-\\[120px\\]{height:120px}.h-full{height:100%}.max-h-\\[400px\\]{max-height:400px}.min-h-\\[390px\\]{min-height:390px}.w-6{width:calc(var(--spacing)*6)}.w-\\[18px\\]{width:18px}.w-\\[50px\\]\\!{width:50px!important}.w-\\[120px\\]\\!{width:120px!important}.w-\\[380px\\]{width:380px}.w-\\[540px\\]{width:540px}.w-\\[580px\\]{width:580px}.w-full{width:100%}.flex-1{flex:1}.flex-1\\!{flex:1!important}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.bg-\\[\\#f4f7f9\\]{background-color:#f4f7f9}.bg-\\[\\#f5f6f7\\]{background-color:#f5f6f7}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-\\[30px\\]{padding-inline:30px}.py-1\\!{padding-block:calc(var(--spacing)*1)!important}.py-1\\.5\\!{padding-block:calc(var(--spacing)*1.5)!important}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-\\[30px\\]{padding-block:30px}.pt-6{padding-top:calc(var(--spacing)*6)}.text-center{text-align:center}.text-right{text-align:right}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[12px\\]{font-size:12px}.text-\\[12px\\]\\!{font-size:12px!important}.text-\\[15px\\]{font-size:15px}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.font-\\[12px\\]{--tw-font-weight:12px;font-weight:12px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-\\[\\#8b8b8b\\]\\!{color:#8b8b8b!important}.text-\\[\\#333333\\]{color:#333}.text-\\[\\#666666\\]{color:#666}.text-\\[\\#666666\\]\\!{color:#666!important}.text-\\[\\#888888\\]{color:#888}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex=\"-1\"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/index-lljDL13k.js",
    "content": "import{i as PI,a as J,s as ee,e as I,w as pe,j as Lr,k as ne,l as Ca,F as Ve,d as fn,m as Je,b as Ne,p as Mn,q as f,T as Ai,v as gn,C as YS,h as vt,x as Hn,y as Qe,u as Be,z as ze,A as et,B as mt,D as Mc,E as qS,n as it,G as cn,H as xn,I as TI,J as Oo,K as Fr,t as We,L as On,M as Uf,N as wm,O as _m,P as wt,Q as jo,R as zt,S as jn,U as Qn,V as _u,W as Wn,X as Iu,Y as xa,Z as ZS,_ as QS,$ as JS,a0 as e$,a1 as vr,a2 as wa,a3 as gr,a4 as Im,a5 as Eo,a6 as OI,a7 as Pm,g as EI,o as MI,a8 as AI,a9 as DI,aa as Pu,ab as zr,ac as t$,ad as n$,ae as RI,af as o$,ag as Tm,ah as kI,ai as NI,aj as Om,ak as BI,al as uh,am as LI,an as FI,ao as zI,ap as HI,aq as jI,ar as WI,as as dh,at as fh,au as Di,av as VI,aw as Yf,ax as KI,ay as GI,az as XI,aA as UI,aB as r$,aC as YI,aD as qI,aE as ZI,aF as QI,aG as JI,aH as eP,aI as l$,aJ as tP,aK as nP,aL as a$,aM as oP,aN as rP,aO as lP,aP,aQ as iP,aR as sP,aS as cP,aT as xt,aU as tt,aV as Ee,aW as Ao,aX as kd,aY as Ns,aZ as nt,a_ as Tu,a$ as Vt,b0 as rt,b1 as Em,b2 as Mm,b3 as Hr,b4 as i$,b5 as uP}from\"./@ant-design/icons-vue-ym-L-X2r.js\";import{u as dP}from\"./less-sScrWPmR.js\";import{i as Am,a as s$,u as Nd,p as c$,b as u$,d as Dm,c as Bs,f as fP,o as pP,e as mP,g as vP,h as gP,j as hP}from\"./lodash-CQd0-CO8.js\";import{a as qf}from\"./axios-R-lXtGyY.js\";import{u as Rm,a as ii,b as bP}from\"./@vueuse/core-B6fUiQ3R.js\";import{u as d$}from\"./@vueuse/integrations-iJ2WoaAF.js\";(function(){const t=document.createElement(\"link\").relList;if(t&&t.supports&&t.supports(\"modulepreload\"))return;for(const r of document.querySelectorAll('link[rel=\"modulepreload\"]'))o(r);new MutationObserver(r=>{for(const l of r)if(l.type===\"childList\")for(const a of l.addedNodes)a.tagName===\"LINK\"&&a.rel===\"modulepreload\"&&o(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const l={};return r.integrity&&(l.integrity=r.integrity),r.referrerPolicy&&(l.referrerPolicy=r.referrerPolicy),r.crossOrigin===\"use-credentials\"?l.credentials=\"include\":r.crossOrigin===\"anonymous\"?l.credentials=\"omit\":l.credentials=\"same-origin\",l}function o(r){if(r.ep)return;r.ep=!0;const l=n(r);fetch(r.href,l)}})();/*!\n  * shared v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */function yP(e,t){typeof console<\"u\"&&(console.warn(\"[intlify] \"+e),t&&console.warn(t.stack))}const Ac=typeof window<\"u\",Wr=(e,t=!1)=>t?Symbol.for(e):Symbol(e),SP=(e,t,n)=>$P({l:e,k:t,s:n}),$P=e=>JSON.stringify(e).replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\").replace(/\\u0027/g,\"\\\\u0027\"),rn=e=>typeof e==\"number\"&&isFinite(e),CP=e=>km(e)===\"[object Date]\",da=e=>km(e)===\"[object RegExp]\",Ou=e=>bt(e)&&Object.keys(e).length===0,sn=Object.assign,xP=Object.create,At=(e=null)=>xP(e);let ph;const cl=()=>ph||(ph=typeof globalThis<\"u\"?globalThis:typeof self<\"u\"?self:typeof window<\"u\"?window:typeof global<\"u\"?global:At());function mh(e){return e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\").replace(/\\//g,\"&#x2F;\").replace(/=/g,\"&#x3D;\")}function vh(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")}function wP(e){return e=e.replace(/(\\w+)\\s*=\\s*\"([^\"]*)\"/g,(o,r,l)=>`${r}=\"${vh(l)}\"`),e=e.replace(/(\\w+)\\s*=\\s*'([^']*)'/g,(o,r,l)=>`${r}='${vh(l)}'`),/\\s*on\\w+\\s*=\\s*[\"']?[^\"'>]+[\"']?/gi.test(e)&&(e=e.replace(/(\\s+)(on)(\\w+\\s*=)/gi,\"$1&#111;n$3\")),[/(\\s+(?:href|src|action|formaction)\\s*=\\s*[\"']?)\\s*javascript:/gi,/(style\\s*=\\s*[\"'][^\"']*url\\s*\\(\\s*)javascript:/gi].forEach(o=>{e=e.replace(o,\"$1javascript&#58;\")}),e}const _P=Object.prototype.hasOwnProperty;function Io(e,t){return _P.call(e,t)}const Wt=Array.isArray,Lt=e=>typeof e==\"function\",Ke=e=>typeof e==\"string\",Pt=e=>typeof e==\"boolean\",Tt=e=>e!==null&&typeof e==\"object\",IP=e=>Tt(e)&&Lt(e.then)&&Lt(e.catch),f$=Object.prototype.toString,km=e=>f$.call(e),bt=e=>km(e)===\"[object Object]\",PP=e=>e==null?\"\":Wt(e)||bt(e)&&e.toString===f$?JSON.stringify(e,null,2):String(e);function Nm(e,t=\"\"){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,\"\")}const os=e=>!Tt(e)||Wt(e);function Ls(e,t){if(os(e)||os(t))throw new Error(\"Invalid value\");const n=[{src:e,des:t}];for(;n.length;){const{src:o,des:r}=n.pop();Object.keys(o).forEach(l=>{l!==\"__proto__\"&&(Tt(o[l])&&!Tt(r[l])&&(r[l]=Array.isArray(o[l])?[]:At()),os(r[l])||os(o[l])?r[l]=o[l]:n.push({src:o[l],des:r[l]}))})}}/*!\n  * message-compiler v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */function TP(e,t,n){return{line:e,column:t,offset:n}}function Zf(e,t,n){return{start:e,end:t}}const Et={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14},OP=17;function Eu(e,t,n={}){const{domain:o,messages:r,args:l}=n,a=e,i=new SyntaxError(String(a));return i.code=e,t&&(i.location=t),i.domain=o,i}function EP(e){throw e}const ko=\" \",MP=\"\\r\",yn=`\n`,AP=\"\\u2028\",DP=\"\\u2029\";function RP(e){const t=e;let n=0,o=1,r=1,l=0;const a=x=>t[x]===MP&&t[x+1]===yn,i=x=>t[x]===yn,s=x=>t[x]===DP,c=x=>t[x]===AP,u=x=>a(x)||i(x)||s(x)||c(x),d=()=>n,p=()=>o,m=()=>r,g=()=>l,v=x=>a(x)||s(x)||c(x)?yn:t[x],y=()=>v(n),b=()=>v(n+l);function S(){return l=0,u(n)&&(o++,r=0),a(n)&&n++,n++,r++,t[n]}function $(){return a(n+l)&&l++,l++,t[n+l]}function w(){n=0,o=1,r=1,l=0}function C(x=0){l=x}function _(){const x=n+l;for(;x!==n;)S();l=0}return{index:d,line:p,column:m,peekOffset:g,charAt:v,currentChar:y,currentPeek:b,next:S,peek:$,reset:w,resetPeek:C,skipToPeek:_}}const qo=void 0,kP=\".\",gh=\"'\",NP=\"tokenizer\";function BP(e,t={}){const n=t.location!==!1,o=RP(e),r=()=>o.index(),l=()=>TP(o.line(),o.column(),o.index()),a=l(),i=r(),s={currentType:13,offset:i,startLoc:a,endLoc:a,lastType:13,lastOffset:i,lastStartLoc:a,lastEndLoc:a,braceNest:0,inLinked:!1,text:\"\"},c=()=>s,{onError:u}=t;function d(X,U,ie,...ve){const me=c();if(U.column+=ie,U.offset+=ie,u){const he=n?Zf(me.startLoc,U):null,se=Eu(X,he,{domain:NP,args:ve});u(se)}}function p(X,U,ie){X.endLoc=l(),X.currentType=U;const ve={type:U};return n&&(ve.loc=Zf(X.startLoc,X.endLoc)),ie!=null&&(ve.value=ie),ve}const m=X=>p(X,13);function g(X,U){return X.currentChar()===U?(X.next(),U):(d(Et.EXPECTED_TOKEN,l(),0,U),\"\")}function v(X){let U=\"\";for(;X.currentPeek()===ko||X.currentPeek()===yn;)U+=X.currentPeek(),X.peek();return U}function y(X){const U=v(X);return X.skipToPeek(),U}function b(X){if(X===qo)return!1;const U=X.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U===95}function S(X){if(X===qo)return!1;const U=X.charCodeAt(0);return U>=48&&U<=57}function $(X,U){const{currentType:ie}=U;if(ie!==2)return!1;v(X);const ve=b(X.currentPeek());return X.resetPeek(),ve}function w(X,U){const{currentType:ie}=U;if(ie!==2)return!1;v(X);const ve=X.currentPeek()===\"-\"?X.peek():X.currentPeek(),me=S(ve);return X.resetPeek(),me}function C(X,U){const{currentType:ie}=U;if(ie!==2)return!1;v(X);const ve=X.currentPeek()===gh;return X.resetPeek(),ve}function _(X,U){const{currentType:ie}=U;if(ie!==7)return!1;v(X);const ve=X.currentPeek()===\".\";return X.resetPeek(),ve}function x(X,U){const{currentType:ie}=U;if(ie!==8)return!1;v(X);const ve=b(X.currentPeek());return X.resetPeek(),ve}function P(X,U){const{currentType:ie}=U;if(!(ie===7||ie===11))return!1;v(X);const ve=X.currentPeek()===\":\";return X.resetPeek(),ve}function O(X,U){const{currentType:ie}=U;if(ie!==9)return!1;const ve=()=>{const he=X.currentPeek();return he===\"{\"?b(X.peek()):he===\"@\"||he===\"|\"||he===\":\"||he===\".\"||he===ko||!he?!1:he===yn?(X.peek(),ve()):E(X,!1)},me=ve();return X.resetPeek(),me}function M(X){v(X);const U=X.currentPeek()===\"|\";return X.resetPeek(),U}function E(X,U=!0){const ie=(me=!1,he=\"\")=>{const se=X.currentPeek();return se===\"{\"||se===\"@\"||!se?me:se===\"|\"?!(he===ko||he===yn):se===ko?(X.peek(),ie(!0,ko)):se===yn?(X.peek(),ie(!0,yn)):!0},ve=ie();return U&&X.resetPeek(),ve}function R(X,U){const ie=X.currentChar();return ie===qo?qo:U(ie)?(X.next(),ie):null}function D(X){const U=X.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U>=48&&U<=57||U===95||U===36}function z(X){return R(X,D)}function T(X){const U=X.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U>=48&&U<=57||U===95||U===36||U===45}function k(X){return R(X,T)}function B(X){const U=X.charCodeAt(0);return U>=48&&U<=57}function L(X){return R(X,B)}function N(X){const U=X.charCodeAt(0);return U>=48&&U<=57||U>=65&&U<=70||U>=97&&U<=102}function F(X){return R(X,N)}function j(X){let U=\"\",ie=\"\";for(;U=L(X);)ie+=U;return ie}function H(X){let U=\"\";for(;;){const ie=X.currentChar();if(ie===\"{\"||ie===\"}\"||ie===\"@\"||ie===\"|\"||!ie)break;if(ie===ko||ie===yn)if(E(X))U+=ie,X.next();else{if(M(X))break;U+=ie,X.next()}else U+=ie,X.next()}return U}function K(X){y(X);let U=\"\",ie=\"\";for(;U=k(X);)ie+=U;const ve=X.currentChar();if(ve&&ve!==\"}\"&&ve!==qo&&ve!==ko&&ve!==yn&&ve!==\"　\"){const me=Y(X);return d(Et.INVALID_TOKEN_IN_PLACEHOLDER,l(),0,ie+me),ie+me}return X.currentChar()===qo&&d(Et.UNTERMINATED_CLOSING_BRACE,l(),0),ie}function G(X){y(X);let U=\"\";return X.currentChar()===\"-\"?(X.next(),U+=`-${j(X)}`):U+=j(X),X.currentChar()===qo&&d(Et.UNTERMINATED_CLOSING_BRACE,l(),0),U}function V(X){return X!==gh&&X!==yn}function q(X){y(X),g(X,\"'\");let U=\"\",ie=\"\";for(;U=R(X,V);)U===\"\\\\\"?ie+=Z(X):ie+=U;const ve=X.currentChar();return ve===yn||ve===qo?(d(Et.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,l(),0),ve===yn&&(X.next(),g(X,\"'\")),ie):(g(X,\"'\"),ie)}function Z(X){const U=X.currentChar();switch(U){case\"\\\\\":case\"'\":return X.next(),`\\\\${U}`;case\"u\":return oe(X,U,4);case\"U\":return oe(X,U,6);default:return d(Et.UNKNOWN_ESCAPE_SEQUENCE,l(),0,U),\"\"}}function oe(X,U,ie){g(X,U);let ve=\"\";for(let me=0;me<ie;me++){const he=F(X);if(!he){d(Et.INVALID_UNICODE_ESCAPE_SEQUENCE,l(),0,`\\\\${U}${ve}${X.currentChar()}`);break}ve+=he}return`\\\\${U}${ve}`}function re(X){return X!==\"{\"&&X!==\"}\"&&X!==ko&&X!==yn}function Y(X){y(X);let U=\"\",ie=\"\";for(;U=R(X,re);)ie+=U;return ie}function Q(X){let U=\"\",ie=\"\";for(;U=z(X);)ie+=U;return ie}function ce(X){const U=ie=>{const ve=X.currentChar();return ve===\"{\"||ve===\"@\"||ve===\"|\"||ve===\"(\"||ve===\")\"||!ve||ve===ko?ie:(ie+=ve,X.next(),U(ie))};return U(\"\")}function ue(X){y(X);const U=g(X,\"|\");return y(X),U}function be(X,U){let ie=null;switch(X.currentChar()){case\"{\":return U.braceNest>=1&&d(Et.NOT_ALLOW_NEST_PLACEHOLDER,l(),0),X.next(),ie=p(U,2,\"{\"),y(X),U.braceNest++,ie;case\"}\":return U.braceNest>0&&U.currentType===2&&d(Et.EMPTY_PLACEHOLDER,l(),0),X.next(),ie=p(U,3,\"}\"),U.braceNest--,U.braceNest>0&&y(X),U.inLinked&&U.braceNest===0&&(U.inLinked=!1),ie;case\"@\":return U.braceNest>0&&d(Et.UNTERMINATED_CLOSING_BRACE,l(),0),ie=Ce(X,U)||m(U),U.braceNest=0,ie;default:{let me=!0,he=!0,se=!0;if(M(X))return U.braceNest>0&&d(Et.UNTERMINATED_CLOSING_BRACE,l(),0),ie=p(U,1,ue(X)),U.braceNest=0,U.inLinked=!1,ie;if(U.braceNest>0&&(U.currentType===4||U.currentType===5||U.currentType===6))return d(Et.UNTERMINATED_CLOSING_BRACE,l(),0),U.braceNest=0,ge(X,U);if(me=$(X,U))return ie=p(U,4,K(X)),y(X),ie;if(he=w(X,U))return ie=p(U,5,G(X)),y(X),ie;if(se=C(X,U))return ie=p(U,6,q(X)),y(X),ie;if(!me&&!he&&!se)return ie=p(U,12,Y(X)),d(Et.INVALID_TOKEN_IN_PLACEHOLDER,l(),0,ie.value),y(X),ie;break}}return ie}function Ce(X,U){const{currentType:ie}=U;let ve=null;const me=X.currentChar();switch((ie===7||ie===8||ie===11||ie===9)&&(me===yn||me===ko)&&d(Et.INVALID_LINKED_FORMAT,l(),0),me){case\"@\":return X.next(),ve=p(U,7,\"@\"),U.inLinked=!0,ve;case\".\":return y(X),X.next(),p(U,8,\".\");case\":\":return y(X),X.next(),p(U,9,\":\");default:return M(X)?(ve=p(U,1,ue(X)),U.braceNest=0,U.inLinked=!1,ve):_(X,U)||P(X,U)?(y(X),Ce(X,U)):x(X,U)?(y(X),p(U,11,Q(X))):O(X,U)?(y(X),me===\"{\"?be(X,U)||ve:p(U,10,ce(X))):(ie===7&&d(Et.INVALID_LINKED_FORMAT,l(),0),U.braceNest=0,U.inLinked=!1,ge(X,U))}}function ge(X,U){let ie={type:13};if(U.braceNest>0)return be(X,U)||m(U);if(U.inLinked)return Ce(X,U)||m(U);switch(X.currentChar()){case\"{\":return be(X,U)||m(U);case\"}\":return d(Et.UNBALANCED_CLOSING_BRACE,l(),0),X.next(),p(U,3,\"}\");case\"@\":return Ce(X,U)||m(U);default:{if(M(X))return ie=p(U,1,ue(X)),U.braceNest=0,U.inLinked=!1,ie;if(E(X))return p(U,0,H(X));break}}return ie}function Se(){const{currentType:X,offset:U,startLoc:ie,endLoc:ve}=s;return s.lastType=X,s.lastOffset=U,s.lastStartLoc=ie,s.lastEndLoc=ve,s.offset=r(),s.startLoc=l(),o.currentChar()===qo?p(s,13):ge(o,s)}return{nextToken:Se,currentOffset:r,currentPosition:l,context:c}}const LP=\"parser\",FP=/(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;function zP(e,t,n){switch(e){case\"\\\\\\\\\":return\"\\\\\";case\"\\\\'\":return\"'\";default:{const o=parseInt(t||n,16);return o<=55295||o>=57344?String.fromCodePoint(o):\"�\"}}}function HP(e={}){const t=e.location!==!1,{onError:n}=e;function o(b,S,$,w,...C){const _=b.currentPosition();if(_.offset+=w,_.column+=w,n){const x=t?Zf($,_):null,P=Eu(S,x,{domain:LP,args:C});n(P)}}function r(b,S,$){const w={type:b};return t&&(w.start=S,w.end=S,w.loc={start:$,end:$}),w}function l(b,S,$,w){t&&(b.end=S,b.loc&&(b.loc.end=$))}function a(b,S){const $=b.context(),w=r(3,$.offset,$.startLoc);return w.value=S,l(w,b.currentOffset(),b.currentPosition()),w}function i(b,S){const $=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=r(5,w,C);return _.index=parseInt(S,10),b.nextToken(),l(_,b.currentOffset(),b.currentPosition()),_}function s(b,S){const $=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=r(4,w,C);return _.key=S,b.nextToken(),l(_,b.currentOffset(),b.currentPosition()),_}function c(b,S){const $=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=r(9,w,C);return _.value=S.replace(FP,zP),b.nextToken(),l(_,b.currentOffset(),b.currentPosition()),_}function u(b){const S=b.nextToken(),$=b.context(),{lastOffset:w,lastStartLoc:C}=$,_=r(8,w,C);return S.type!==11?(o(b,Et.UNEXPECTED_EMPTY_LINKED_MODIFIER,$.lastStartLoc,0),_.value=\"\",l(_,w,C),{nextConsumeToken:S,node:_}):(S.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,$.lastStartLoc,0,No(S)),_.value=S.value||\"\",l(_,b.currentOffset(),b.currentPosition()),{node:_})}function d(b,S){const $=b.context(),w=r(7,$.offset,$.startLoc);return w.value=S,l(w,b.currentOffset(),b.currentPosition()),w}function p(b){const S=b.context(),$=r(6,S.offset,S.startLoc);let w=b.nextToken();if(w.type===8){const C=u(b);$.modifier=C.node,w=C.nextConsumeToken||b.nextToken()}switch(w.type!==9&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(w)),w=b.nextToken(),w.type===2&&(w=b.nextToken()),w.type){case 10:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(w)),$.key=d(b,w.value||\"\");break;case 4:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(w)),$.key=s(b,w.value||\"\");break;case 5:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(w)),$.key=i(b,w.value||\"\");break;case 6:w.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(w)),$.key=c(b,w.value||\"\");break;default:{o(b,Et.UNEXPECTED_EMPTY_LINKED_KEY,S.lastStartLoc,0);const C=b.context(),_=r(7,C.offset,C.startLoc);return _.value=\"\",l(_,C.offset,C.startLoc),$.key=_,l($,C.offset,C.startLoc),{nextConsumeToken:w,node:$}}}return l($,b.currentOffset(),b.currentPosition()),{node:$}}function m(b){const S=b.context(),$=S.currentType===1?b.currentOffset():S.offset,w=S.currentType===1?S.endLoc:S.startLoc,C=r(2,$,w);C.items=[];let _=null;do{const O=_||b.nextToken();switch(_=null,O.type){case 0:O.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(O)),C.items.push(a(b,O.value||\"\"));break;case 5:O.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(O)),C.items.push(i(b,O.value||\"\"));break;case 4:O.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(O)),C.items.push(s(b,O.value||\"\"));break;case 6:O.value==null&&o(b,Et.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,No(O)),C.items.push(c(b,O.value||\"\"));break;case 7:{const M=p(b);C.items.push(M.node),_=M.nextConsumeToken||null;break}}}while(S.currentType!==13&&S.currentType!==1);const x=S.currentType===1?S.lastOffset:b.currentOffset(),P=S.currentType===1?S.lastEndLoc:b.currentPosition();return l(C,x,P),C}function g(b,S,$,w){const C=b.context();let _=w.items.length===0;const x=r(1,S,$);x.cases=[],x.cases.push(w);do{const P=m(b);_||(_=P.items.length===0),x.cases.push(P)}while(C.currentType!==13);return _&&o(b,Et.MUST_HAVE_MESSAGES_IN_PLURAL,$,0),l(x,b.currentOffset(),b.currentPosition()),x}function v(b){const S=b.context(),{offset:$,startLoc:w}=S,C=m(b);return S.currentType===13?C:g(b,$,w,C)}function y(b){const S=BP(b,sn({},e)),$=S.context(),w=r(0,$.offset,$.startLoc);return t&&w.loc&&(w.loc.source=b),w.body=v(S),e.onCacheKey&&(w.cacheKey=e.onCacheKey(b)),$.currentType!==13&&o(S,Et.UNEXPECTED_LEXICAL_ANALYSIS,$.lastStartLoc,0,b[$.offset]||\"\"),l(w,S.currentOffset(),S.currentPosition()),w}return{parse:y}}function No(e){if(e.type===13)return\"EOF\";const t=(e.value||\"\").replace(/\\r?\\n/gu,\"\\\\n\");return t.length>10?t.slice(0,9)+\"…\":t}function jP(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:l=>(n.helpers.add(l),l)}}function hh(e,t){for(let n=0;n<e.length;n++)Bm(e[n],t)}function Bm(e,t){switch(e.type){case 1:hh(e.cases,t),t.helper(\"plural\");break;case 2:hh(e.items,t);break;case 6:{Bm(e.key,t),t.helper(\"linked\"),t.helper(\"type\");break}case 5:t.helper(\"interpolate\"),t.helper(\"list\");break;case 4:t.helper(\"interpolate\"),t.helper(\"named\");break}}function WP(e,t={}){const n=jP(e);n.helper(\"normalize\"),e.body&&Bm(e.body,n);const o=n.context();e.helpers=Array.from(o.helpers)}function VP(e){const t=e.body;return t.type===2?bh(t):t.cases.forEach(n=>bh(n)),e}function bh(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n<e.items.length;n++){const o=e.items[n];if(!(o.type===3||o.type===9)||o.value==null)break;t.push(o.value)}if(t.length===e.items.length){e.static=Nm(t);for(let n=0;n<e.items.length;n++){const o=e.items[n];(o.type===3||o.type===9)&&delete o.value}}}}function Wl(e){switch(e.t=e.type,e.type){case 0:{const t=e;Wl(t.body),t.b=t.body,delete t.body;break}case 1:{const t=e,n=t.cases;for(let o=0;o<n.length;o++)Wl(n[o]);t.c=n,delete t.cases;break}case 2:{const t=e,n=t.items;for(let o=0;o<n.length;o++)Wl(n[o]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{const t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{const t=e;Wl(t.key),t.k=t.key,delete t.key,t.modifier&&(Wl(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{const t=e;t.i=t.index,delete t.index;break}case 4:{const t=e;t.k=t.key,delete t.key;break}}delete e.type}function KP(e,t){const{filename:n,breakLineCode:o,needIndent:r}=t,l=t.location!==!1,a={filename:n,code:\"\",column:1,line:1,offset:0,map:void 0,breakLineCode:o,needIndent:r,indentLevel:0};l&&e.loc&&(a.source=e.loc.source);const i=()=>a;function s(v,y){a.code+=v}function c(v,y=!0){const b=y?o:\"\";s(r?b+\"  \".repeat(v):b)}function u(v=!0){const y=++a.indentLevel;v&&c(y)}function d(v=!0){const y=--a.indentLevel;v&&c(y)}function p(){c(a.indentLevel)}return{context:i,push:s,indent:u,deindent:d,newline:p,helper:v=>`_${v}`,needIndent:()=>a.needIndent}}function GP(e,t){const{helper:n}=e;e.push(`${n(\"linked\")}(`),fa(e,t.key),t.modifier?(e.push(\", \"),fa(e,t.modifier),e.push(\", _type\")):e.push(\", undefined, _type\"),e.push(\")\")}function XP(e,t){const{helper:n,needIndent:o}=e;e.push(`${n(\"normalize\")}([`),e.indent(o());const r=t.items.length;for(let l=0;l<r&&(fa(e,t.items[l]),l!==r-1);l++)e.push(\", \");e.deindent(o()),e.push(\"])\")}function UP(e,t){const{helper:n,needIndent:o}=e;if(t.cases.length>1){e.push(`${n(\"plural\")}([`),e.indent(o());const r=t.cases.length;for(let l=0;l<r&&(fa(e,t.cases[l]),l!==r-1);l++)e.push(\", \");e.deindent(o()),e.push(\"])\")}}function YP(e,t){t.body?fa(e,t.body):e.push(\"null\")}function fa(e,t){const{helper:n}=e;switch(t.type){case 0:YP(e,t);break;case 1:UP(e,t);break;case 2:XP(e,t);break;case 6:GP(e,t);break;case 8:e.push(JSON.stringify(t.value),t);break;case 7:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n(\"interpolate\")}(${n(\"list\")}(${t.index}))`,t);break;case 4:e.push(`${n(\"interpolate\")}(${n(\"named\")}(${JSON.stringify(t.key)}))`,t);break;case 9:e.push(JSON.stringify(t.value),t);break;case 3:e.push(JSON.stringify(t.value),t);break}}const qP=(e,t={})=>{const n=Ke(t.mode)?t.mode:\"normal\",o=Ke(t.filename)?t.filename:\"message.intl\";t.sourceMap;const r=t.breakLineCode!=null?t.breakLineCode:n===\"arrow\"?\";\":`\n`,l=t.needIndent?t.needIndent:n!==\"arrow\",a=e.helpers||[],i=KP(e,{filename:o,breakLineCode:r,needIndent:l});i.push(n===\"normal\"?\"function __msg__ (ctx) {\":\"(ctx) => {\"),i.indent(l),a.length>0&&(i.push(`const { ${Nm(a.map(u=>`${u}: _${u}`),\", \")} } = ctx`),i.newline()),i.push(\"return \"),fa(i,e),i.deindent(l),i.push(\"}\"),delete e.helpers;const{code:s,map:c}=i.context();return{ast:e,code:s,map:c?c.toJSON():void 0}};function ZP(e,t={}){const n=sn({},t),o=!!n.jit,r=!!n.minify,l=n.optimize==null?!0:n.optimize,i=HP(n).parse(e);return o?(l&&VP(i),r&&Wl(i),{ast:i,code:\"\"}):(WP(i,n),qP(i,n))}/*!\n  * core-base v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */function QP(){typeof __INTLIFY_PROD_DEVTOOLS__!=\"boolean\"&&(cl().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=\"boolean\"&&(cl().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Wo(e){return Tt(e)&&Lm(e)===0&&(Io(e,\"b\")||Io(e,\"body\"))}const p$=[\"b\",\"body\"];function JP(e){return Vr(e,p$)}const m$=[\"c\",\"cases\"];function eT(e){return Vr(e,m$,[])}const v$=[\"s\",\"static\"];function tT(e){return Vr(e,v$)}const g$=[\"i\",\"items\"];function nT(e){return Vr(e,g$,[])}const h$=[\"t\",\"type\"];function Lm(e){return Vr(e,h$)}const b$=[\"v\",\"value\"];function rs(e,t){const n=Vr(e,b$);if(n!=null)return n;throw si(t)}const y$=[\"m\",\"modifier\"];function oT(e){return Vr(e,y$)}const S$=[\"k\",\"key\"];function rT(e){const t=Vr(e,S$);if(t)return t;throw si(6)}function Vr(e,t,n){for(let o=0;o<t.length;o++){const r=t[o];if(Io(e,r)&&e[r]!=null)return e[r]}return n}const $$=[...p$,...m$,...v$,...g$,...S$,...y$,...b$,...h$];function si(e){return new Error(`unhandled node type: ${e}`)}function Bd(e){return n=>lT(n,e)}function lT(e,t){const n=JP(t);if(n==null)throw si(0);if(Lm(n)===1){const l=eT(n);return e.plural(l.reduce((a,i)=>[...a,yh(e,i)],[]))}else return yh(e,n)}function yh(e,t){const n=tT(t);if(n!=null)return e.type===\"text\"?n:e.normalize([n]);{const o=nT(t).reduce((r,l)=>[...r,Qf(e,l)],[]);return e.normalize(o)}}function Qf(e,t){const n=Lm(t);switch(n){case 3:return rs(t,n);case 9:return rs(t,n);case 4:{const o=t;if(Io(o,\"k\")&&o.k)return e.interpolate(e.named(o.k));if(Io(o,\"key\")&&o.key)return e.interpolate(e.named(o.key));throw si(n)}case 5:{const o=t;if(Io(o,\"i\")&&rn(o.i))return e.interpolate(e.list(o.i));if(Io(o,\"index\")&&rn(o.index))return e.interpolate(e.list(o.index));throw si(n)}case 6:{const o=t,r=oT(o),l=rT(o);return e.linked(Qf(e,l),r?Qf(e,r):void 0,e.type)}case 7:return rs(t,n);case 8:return rs(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const aT=e=>e;let ls=At();function iT(e,t={}){let n=!1;const o=t.onError||EP;return t.onError=r=>{n=!0,o(r)},{...ZP(e,t),detectError:n}}function sT(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&Ke(e)){Pt(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||aT)(e),r=ls[o];if(r)return r;const{ast:l,detectError:a}=iT(e,{...t,location:!1,jit:!0}),i=Bd(l);return a?i:ls[o]=i}else{const n=e.cacheKey;if(n){const o=ls[n];return o||(ls[n]=Bd(e))}else return Bd(e)}}let ci=null;function cT(e){ci=e}function uT(e,t,n){ci&&ci.emit(\"i18n:init\",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const dT=fT(\"function:translate\");function fT(e){return t=>ci&&ci.emit(e,t)}const rr={INVALID_ARGUMENT:OP,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},pT=24;function lr(e){return Eu(e,null,void 0)}function Fm(e,t){return t.locale!=null?Sh(t.locale):Sh(e.locale)}let Ld;function Sh(e){if(Ke(e))return e;if(Lt(e)){if(e.resolvedOnce&&Ld!=null)return Ld;if(e.constructor.name===\"Function\"){const t=e();if(IP(t))throw lr(rr.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Ld=t}else throw lr(rr.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw lr(rr.NOT_SUPPORT_LOCALE_TYPE)}function mT(e,t,n){return[...new Set([n,...Wt(t)?t:Tt(t)?Object.keys(t):Ke(t)?[t]:[n]])]}function C$(e,t,n){const o=Ke(n)?n:ui,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let l=r.__localeChainCache.get(o);if(!l){l=[];let a=[n];for(;Wt(a);)a=$h(l,a,t);const i=Wt(t)||!bt(t)?t:t.default?t.default:null;a=Ke(i)?[i]:i,Wt(a)&&$h(l,a,!1),r.__localeChainCache.set(o,l)}return l}function $h(e,t,n){let o=!0;for(let r=0;r<t.length&&Pt(o);r++){const l=t[r];Ke(l)&&(o=vT(e,t[r],n))}return o}function vT(e,t,n){let o;const r=t.split(\"-\");do{const l=r.join(\"-\");o=gT(e,l,n),r.splice(-1,1)}while(r.length&&o===!0);return o}function gT(e,t,n){let o=!1;if(!e.includes(t)&&(o=!0,t)){o=t[t.length-1]!==\"!\";const r=t.replace(/!/g,\"\");e.push(r),(Wt(n)||bt(n))&&n[r]&&(o=n[r])}return o}const Kr=[];Kr[0]={w:[0],i:[3,0],\"[\":[4],o:[7]};Kr[1]={w:[1],\".\":[2],\"[\":[4],o:[7]};Kr[2]={w:[2],i:[3,0],0:[3,0]};Kr[3]={i:[3,0],0:[3,0],w:[1,1],\".\":[2,1],\"[\":[4,1],o:[7,1]};Kr[4]={\"'\":[5,0],'\"':[6,0],\"[\":[4,2],\"]\":[1,3],o:8,l:[4,0]};Kr[5]={\"'\":[4,0],o:8,l:[5,0]};Kr[6]={'\"':[4,0],o:8,l:[6,0]};const hT=/^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;function bT(e){return hT.test(e)}function yT(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function ST(e){if(e==null)return\"o\";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return\"i\";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return\"w\"}return\"i\"}function $T(e){const t=e.trim();return e.charAt(0)===\"0\"&&isNaN(parseInt(e))?!1:bT(t)?yT(t):\"*\"+t}function CT(e){const t=[];let n=-1,o=0,r=0,l,a,i,s,c,u,d;const p=[];p[0]=()=>{a===void 0?a=i:a+=i},p[1]=()=>{a!==void 0&&(t.push(a),a=void 0)},p[2]=()=>{p[0](),r++},p[3]=()=>{if(r>0)r--,o=4,p[0]();else{if(r=0,a===void 0||(a=$T(a),a===!1))return!1;p[1]()}};function m(){const g=e[n+1];if(o===5&&g===\"'\"||o===6&&g==='\"')return n++,i=\"\\\\\"+g,p[0](),!0}for(;o!==null;)if(n++,l=e[n],!(l===\"\\\\\"&&m())){if(s=ST(l),d=Kr[o],c=d[s]||d.l||8,c===8||(o=c[0],c[1]!==void 0&&(u=p[c[1]],u&&(i=l,u()===!1))))return;if(o===7)return t}}const Ch=new Map;function xT(e,t){return Tt(e)?e[t]:null}function wT(e,t){if(!Tt(e))return null;let n=Ch.get(t);if(n||(n=CT(t),n&&Ch.set(t,n)),!n)return null;const o=n.length;let r=e,l=0;for(;l<o;){const a=n[l];if($$.includes(a)&&Wo(r))return null;const i=r[a];if(i===void 0||Lt(r))return null;r=i,l++}return r}const _T=\"11.1.12\",Mu=-1,ui=\"en-US\",xh=\"\",wh=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function IT(){return{upper:(e,t)=>t===\"text\"&&Ke(e)?e.toUpperCase():t===\"vnode\"&&Tt(e)&&\"__v_isVNode\"in e?e.children.toUpperCase():e,lower:(e,t)=>t===\"text\"&&Ke(e)?e.toLowerCase():t===\"vnode\"&&Tt(e)&&\"__v_isVNode\"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===\"text\"&&Ke(e)?wh(e):t===\"vnode\"&&Tt(e)&&\"__v_isVNode\"in e?wh(e.children):e}}let x$;function PT(e){x$=e}let w$;function TT(e){w$=e}let _$;function OT(e){_$=e}let I$=null;const ET=e=>{I$=e},MT=()=>I$;let P$=null;const _h=e=>{P$=e},AT=()=>P$;let Ih=0;function DT(e={}){const t=Lt(e.onWarn)?e.onWarn:yP,n=Ke(e.version)?e.version:_T,o=Ke(e.locale)||Lt(e.locale)?e.locale:ui,r=Lt(o)?ui:o,l=Wt(e.fallbackLocale)||bt(e.fallbackLocale)||Ke(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r,a=bt(e.messages)?e.messages:Fd(r),i=bt(e.datetimeFormats)?e.datetimeFormats:Fd(r),s=bt(e.numberFormats)?e.numberFormats:Fd(r),c=sn(At(),e.modifiers,IT()),u=e.pluralRules||At(),d=Lt(e.missing)?e.missing:null,p=Pt(e.missingWarn)||da(e.missingWarn)?e.missingWarn:!0,m=Pt(e.fallbackWarn)||da(e.fallbackWarn)?e.fallbackWarn:!0,g=!!e.fallbackFormat,v=!!e.unresolving,y=Lt(e.postTranslation)?e.postTranslation:null,b=bt(e.processor)?e.processor:null,S=Pt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,$=!!e.escapeParameter,w=Lt(e.messageCompiler)?e.messageCompiler:x$,C=Lt(e.messageResolver)?e.messageResolver:w$||xT,_=Lt(e.localeFallbacker)?e.localeFallbacker:_$||mT,x=Tt(e.fallbackContext)?e.fallbackContext:void 0,P=e,O=Tt(P.__datetimeFormatters)?P.__datetimeFormatters:new Map,M=Tt(P.__numberFormatters)?P.__numberFormatters:new Map,E=Tt(P.__meta)?P.__meta:{};Ih++;const R={version:n,cid:Ih,locale:o,fallbackLocale:l,messages:a,modifiers:c,pluralRules:u,missing:d,missingWarn:p,fallbackWarn:m,fallbackFormat:g,unresolving:v,postTranslation:y,processor:b,warnHtmlMessage:S,escapeParameter:$,messageCompiler:w,messageResolver:C,localeFallbacker:_,fallbackContext:x,onWarn:t,__meta:E};return R.datetimeFormats=i,R.numberFormats=s,R.__datetimeFormatters=O,R.__numberFormatters=M,__INTLIFY_PROD_DEVTOOLS__&&uT(R,n,E),R}const Fd=e=>({[e]:At()});function zm(e,t,n,o,r){const{missing:l,onWarn:a}=e;if(l!==null){const i=l(e,n,t,r);return Ke(i)?i:t}else return t}function Fa(e,t,n){const o=e;o.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function RT(e,t){return e===t?!1:e.split(\"-\")[0]===t.split(\"-\")[0]}function kT(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let o=n+1;o<t.length;o++)if(RT(e,t[o]))return!0;return!1}function Ph(e,...t){const{datetimeFormats:n,unresolving:o,fallbackLocale:r,onWarn:l,localeFallbacker:a}=e,{__datetimeFormatters:i}=e,[s,c,u,d]=Jf(...t),p=Pt(u.missingWarn)?u.missingWarn:e.missingWarn;Pt(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const m=!!u.part,g=Fm(e,u),v=a(e,r,g);if(!Ke(s)||s===\"\")return new Intl.DateTimeFormat(g,d).format(c);let y={},b,S=null;const $=\"datetime format\";for(let _=0;_<v.length&&(b=v[_],y=n[b]||{},S=y[s],!bt(S));_++)zm(e,s,b,p,$);if(!bt(S)||!Ke(b))return o?Mu:s;let w=`${b}__${s}`;Ou(d)||(w=`${w}__${JSON.stringify(d)}`);let C=i.get(w);return C||(C=new Intl.DateTimeFormat(b,sn({},S,d)),i.set(w,C)),m?C.formatToParts(c):C.format(c)}const T$=[\"localeMatcher\",\"weekday\",\"era\",\"year\",\"month\",\"day\",\"hour\",\"minute\",\"second\",\"timeZoneName\",\"formatMatcher\",\"hour12\",\"timeZone\",\"dateStyle\",\"timeStyle\",\"calendar\",\"dayPeriod\",\"numberingSystem\",\"hourCycle\",\"fractionalSecondDigits\"];function Jf(...e){const[t,n,o,r]=e,l=At();let a=At(),i;if(Ke(t)){const s=t.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);if(!s)throw lr(rr.INVALID_ISO_DATE_ARGUMENT);const c=s[3]?s[3].trim().startsWith(\"T\")?`${s[1].trim()}${s[3].trim()}`:`${s[1].trim()}T${s[3].trim()}`:s[1].trim();i=new Date(c);try{i.toISOString()}catch{throw lr(rr.INVALID_ISO_DATE_ARGUMENT)}}else if(CP(t)){if(isNaN(t.getTime()))throw lr(rr.INVALID_DATE_ARGUMENT);i=t}else if(rn(t))i=t;else throw lr(rr.INVALID_ARGUMENT);return Ke(n)?l.key=n:bt(n)&&Object.keys(n).forEach(s=>{T$.includes(s)?a[s]=n[s]:l[s]=n[s]}),Ke(o)?l.locale=o:bt(o)&&(a=o),bt(r)&&(a=r),[l.key||\"\",i,l,a]}function Th(e,t,n){const o=e;for(const r in n){const l=`${t}__${r}`;o.__datetimeFormatters.has(l)&&o.__datetimeFormatters.delete(l)}}function Oh(e,...t){const{numberFormats:n,unresolving:o,fallbackLocale:r,onWarn:l,localeFallbacker:a}=e,{__numberFormatters:i}=e,[s,c,u,d]=ep(...t),p=Pt(u.missingWarn)?u.missingWarn:e.missingWarn;Pt(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const m=!!u.part,g=Fm(e,u),v=a(e,r,g);if(!Ke(s)||s===\"\")return new Intl.NumberFormat(g,d).format(c);let y={},b,S=null;const $=\"number format\";for(let _=0;_<v.length&&(b=v[_],y=n[b]||{},S=y[s],!bt(S));_++)zm(e,s,b,p,$);if(!bt(S)||!Ke(b))return o?Mu:s;let w=`${b}__${s}`;Ou(d)||(w=`${w}__${JSON.stringify(d)}`);let C=i.get(w);return C||(C=new Intl.NumberFormat(b,sn({},S,d)),i.set(w,C)),m?C.formatToParts(c):C.format(c)}const O$=[\"localeMatcher\",\"style\",\"currency\",\"currencyDisplay\",\"currencySign\",\"useGrouping\",\"minimumIntegerDigits\",\"minimumFractionDigits\",\"maximumFractionDigits\",\"minimumSignificantDigits\",\"maximumSignificantDigits\",\"compactDisplay\",\"notation\",\"signDisplay\",\"unit\",\"unitDisplay\",\"roundingMode\",\"roundingPriority\",\"roundingIncrement\",\"trailingZeroDisplay\"];function ep(...e){const[t,n,o,r]=e,l=At();let a=At();if(!rn(t))throw lr(rr.INVALID_ARGUMENT);const i=t;return Ke(n)?l.key=n:bt(n)&&Object.keys(n).forEach(s=>{O$.includes(s)?a[s]=n[s]:l[s]=n[s]}),Ke(o)?l.locale=o:bt(o)&&(a=o),bt(r)&&(a=r),[l.key||\"\",i,l,a]}function Eh(e,t,n){const o=e;for(const r in n){const l=`${t}__${r}`;o.__numberFormatters.has(l)&&o.__numberFormatters.delete(l)}}const NT=e=>e,BT=e=>\"\",LT=\"text\",FT=e=>e.length===0?\"\":Nm(e),zT=PP;function Mh(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function HT(e){const t=rn(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(rn(e.named.count)||rn(e.named.n))?rn(e.named.count)?e.named.count:rn(e.named.n)?e.named.n:t:t}function jT(e,t){t.count||(t.count=e),t.n||(t.n=e)}function WT(e={}){const t=e.locale,n=HT(e),o=Tt(e.pluralRules)&&Ke(t)&&Lt(e.pluralRules[t])?e.pluralRules[t]:Mh,r=Tt(e.pluralRules)&&Ke(t)&&Lt(e.pluralRules[t])?Mh:void 0,l=b=>b[o(n,b.length,r)],a=e.list||[],i=b=>a[b],s=e.named||At();rn(e.pluralIndex)&&jT(n,s);const c=b=>s[b];function u(b,S){const $=Lt(e.messages)?e.messages(b,!!S):Tt(e.messages)?e.messages[b]:!1;return $||(e.parent?e.parent.message(b):BT)}const d=b=>e.modifiers?e.modifiers[b]:NT,p=bt(e.processor)&&Lt(e.processor.normalize)?e.processor.normalize:FT,m=bt(e.processor)&&Lt(e.processor.interpolate)?e.processor.interpolate:zT,g=bt(e.processor)&&Ke(e.processor.type)?e.processor.type:LT,y={list:i,named:c,plural:l,linked:(b,...S)=>{const[$,w]=S;let C=\"text\",_=\"\";S.length===1?Tt($)?(_=$.modifier||_,C=$.type||C):Ke($)&&(_=$||_):S.length===2&&(Ke($)&&(_=$||_),Ke(w)&&(C=w||C));const x=u(b,!0)(y),P=C===\"vnode\"&&Wt(x)&&_?x[0]:x;return _?d(_)(P,C):P},message:u,type:g,interpolate:m,normalize:p,values:sn(At(),a,s)};return y}const Ah=()=>\"\",co=e=>Lt(e);function Dh(e,...t){const{fallbackFormat:n,postTranslation:o,unresolving:r,messageCompiler:l,fallbackLocale:a,messages:i}=e,[s,c]=tp(...t),u=Pt(c.missingWarn)?c.missingWarn:e.missingWarn,d=Pt(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,p=Pt(c.escapeParameter)?c.escapeParameter:e.escapeParameter,m=!!c.resolvedMessage,g=Ke(c.default)||Pt(c.default)?Pt(c.default)?l?s:()=>s:c.default:n?l?s:()=>s:null,v=n||g!=null&&(Ke(g)||Lt(g)),y=Fm(e,c);p&&VT(c);let[b,S,$]=m?[s,y,i[y]||At()]:E$(e,s,y,a,d,u),w=b,C=s;if(!m&&!(Ke(w)||Wo(w)||co(w))&&v&&(w=g,C=w),!m&&(!(Ke(w)||Wo(w)||co(w))||!Ke(S)))return r?Mu:s;let _=!1;const x=()=>{_=!0},P=co(w)?w:M$(e,s,S,w,C,x);if(_)return w;const O=XT(e,S,$,c),M=WT(O),E=KT(e,P,M);let R=o?o(E,s):E;if(p&&Ke(R)&&(R=wP(R)),__INTLIFY_PROD_DEVTOOLS__){const D={timestamp:Date.now(),key:Ke(s)?s:co(w)?w.key:\"\",locale:S||(co(w)?w.locale:\"\"),format:Ke(w)?w:co(w)?w.source:\"\",message:R};D.meta=sn({},e.__meta,MT()||{}),dT(D)}return R}function VT(e){Wt(e.list)?e.list=e.list.map(t=>Ke(t)?mh(t):t):Tt(e.named)&&Object.keys(e.named).forEach(t=>{Ke(e.named[t])&&(e.named[t]=mh(e.named[t]))})}function E$(e,t,n,o,r,l){const{messages:a,onWarn:i,messageResolver:s,localeFallbacker:c}=e,u=c(e,o,n);let d=At(),p,m=null;const g=\"translate\";for(let v=0;v<u.length&&(p=u[v],d=a[p]||At(),(m=s(d,t))===null&&(m=d[t]),!(Ke(m)||Wo(m)||co(m)));v++)if(!kT(p,u)){const y=zm(e,t,p,l,g);y!==t&&(m=y)}return[m,p,d]}function M$(e,t,n,o,r,l){const{messageCompiler:a,warnHtmlMessage:i}=e;if(co(o)){const c=o;return c.locale=c.locale||n,c.key=c.key||t,c}if(a==null){const c=()=>o;return c.locale=n,c.key=t,c}const s=a(o,GT(e,n,r,o,i,l));return s.locale=n,s.key=t,s.source=o,s}function KT(e,t,n){return t(n)}function tp(...e){const[t,n,o]=e,r=At();if(!Ke(t)&&!rn(t)&&!co(t)&&!Wo(t))throw lr(rr.INVALID_ARGUMENT);const l=rn(t)?String(t):(co(t),t);return rn(n)?r.plural=n:Ke(n)?r.default=n:bt(n)&&!Ou(n)?r.named=n:Wt(n)&&(r.list=n),rn(o)?r.plural=o:Ke(o)?r.default=o:bt(o)&&sn(r,o),[l,r]}function GT(e,t,n,o,r,l){return{locale:t,key:n,warnHtmlMessage:r,onError:a=>{throw l&&l(a),a},onCacheKey:a=>SP(t,n,a)}}function XT(e,t,n,o){const{modifiers:r,pluralRules:l,messageResolver:a,fallbackLocale:i,fallbackWarn:s,missingWarn:c,fallbackContext:u}=e,p={locale:t,modifiers:r,pluralRules:l,messages:(m,g)=>{let v=a(n,m);if(v==null&&(u||g)){const[,,y]=E$(u||e,m,t,i,s,c);v=a(y,m)}if(Ke(v)||Wo(v)){let y=!1;const S=M$(e,m,t,v,m,()=>{y=!0});return y?Ah:S}else return co(v)?v:Ah}};return e.processor&&(p.processor=e.processor),o.list&&(p.list=o.list),o.named&&(p.named=o.named),rn(o.plural)&&(p.pluralIndex=o.plural),p}QP();/*!\n  * vue-i18n v11.1.12\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */const UT=\"11.1.12\";function YT(){typeof __VUE_I18N_FULL_INSTALL__!=\"boolean\"&&(cl().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!=\"boolean\"&&(cl().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=\"boolean\"&&(cl().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!=\"boolean\"&&(cl().__INTLIFY_PROD_DEVTOOLS__=!1)}const Fn={UNEXPECTED_RETURN_TYPE:pT,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32};function Jn(e,...t){return Eu(e,null,void 0)}const np=Wr(\"__translateVNode\"),op=Wr(\"__datetimeParts\"),rp=Wr(\"__numberParts\"),A$=Wr(\"__setPluralRules\"),D$=Wr(\"__injectWithOption\"),lp=Wr(\"__dispose\");function di(e){if(!Tt(e)||Wo(e))return e;for(const t in e)if(Io(e,t))if(!t.includes(\".\"))Tt(e[t])&&di(e[t]);else{const n=t.split(\".\"),o=n.length-1;let r=e,l=!1;for(let a=0;a<o;a++){if(n[a]===\"__proto__\")throw new Error(`unsafe key: ${n[a]}`);if(n[a]in r||(r[n[a]]=At()),!Tt(r[n[a]])){l=!0;break}r=r[n[a]]}if(l||(Wo(r)?$$.includes(n[o])||delete e[t]:(r[n[o]]=e[t],delete e[t])),!Wo(r)){const a=r[n[o]];Tt(a)&&di(a)}}return e}function Hm(e,t){const{messages:n,__i18n:o,messageResolver:r,flatJson:l}=t,a=bt(n)?n:Wt(o)?At():{[e]:At()};if(Wt(o)&&o.forEach(i=>{if(\"locale\"in i&&\"resource\"in i){const{locale:s,resource:c}=i;s?(a[s]=a[s]||At(),Ls(c,a[s])):Ls(c,a)}else Ke(i)&&Ls(JSON.parse(i),a)}),r==null&&l)for(const i in a)Io(a,i)&&di(a[i]);return a}function R$(e){return e.type}function k$(e,t,n){let o=Tt(t.messages)?t.messages:At();\"__i18nGlobal\"in n&&(o=Hm(e.locale.value,{messages:o,__i18n:n.__i18nGlobal}));const r=Object.keys(o);r.length&&r.forEach(l=>{e.mergeLocaleMessage(l,o[l])});{if(Tt(t.datetimeFormats)){const l=Object.keys(t.datetimeFormats);l.length&&l.forEach(a=>{e.mergeDateTimeFormat(a,t.datetimeFormats[a])})}if(Tt(t.numberFormats)){const l=Object.keys(t.numberFormats);l.length&&l.forEach(a=>{e.mergeNumberFormat(a,t.numberFormats[a])})}}}function Rh(e){return f(Ai,null,e,0)}const kh=\"__INTLIFY_META__\",Nh=()=>[],qT=()=>!1;let Bh=0;function Lh(e){return(t,n,o,r)=>e(n,o,fn()||void 0,r)}const ZT=()=>{const e=fn();let t=null;return e&&(t=R$(e)[kh])?{[kh]:t}:null};function jm(e={}){const{__root:t,__injectWithOption:n}=e,o=t===void 0,r=e.flatJson,l=Ac?J:ee;let a=Pt(e.inheritLocale)?e.inheritLocale:!0;const i=l(t&&a?t.locale.value:Ke(e.locale)?e.locale:ui),s=l(t&&a?t.fallbackLocale.value:Ke(e.fallbackLocale)||Wt(e.fallbackLocale)||bt(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i.value),c=l(Hm(i.value,e)),u=l(bt(e.datetimeFormats)?e.datetimeFormats:{[i.value]:{}}),d=l(bt(e.numberFormats)?e.numberFormats:{[i.value]:{}});let p=t?t.missingWarn:Pt(e.missingWarn)||da(e.missingWarn)?e.missingWarn:!0,m=t?t.fallbackWarn:Pt(e.fallbackWarn)||da(e.fallbackWarn)?e.fallbackWarn:!0,g=t?t.fallbackRoot:Pt(e.fallbackRoot)?e.fallbackRoot:!0,v=!!e.fallbackFormat,y=Lt(e.missing)?e.missing:null,b=Lt(e.missing)?Lh(e.missing):null,S=Lt(e.postTranslation)?e.postTranslation:null,$=t?t.warnHtmlMessage:Pt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter;const C=t?t.modifiers:bt(e.modifiers)?e.modifiers:{};let _=e.pluralRules||t&&t.pluralRules,x;x=(()=>{o&&_h(null);const se={version:UT,locale:i.value,fallbackLocale:s.value,messages:c.value,modifiers:C,pluralRules:_,missing:b===null?void 0:b,missingWarn:p,fallbackWarn:m,fallbackFormat:v,unresolving:!0,postTranslation:S===null?void 0:S,warnHtmlMessage:$,escapeParameter:w,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:\"vue\"}};se.datetimeFormats=u.value,se.numberFormats=d.value,se.__datetimeFormatters=bt(x)?x.__datetimeFormatters:void 0,se.__numberFormatters=bt(x)?x.__numberFormatters:void 0;const te=DT(se);return o&&_h(te),te})(),Fa(x,i.value,s.value);function O(){return[i.value,s.value,c.value,u.value,d.value]}const M=I({get:()=>i.value,set:se=>{x.locale=se,i.value=se}}),E=I({get:()=>s.value,set:se=>{x.fallbackLocale=se,s.value=se,Fa(x,i.value,se)}}),R=I(()=>c.value),D=I(()=>u.value),z=I(()=>d.value);function T(){return Lt(S)?S:null}function k(se){S=se,x.postTranslation=se}function B(){return y}function L(se){se!==null&&(b=Lh(se)),y=se,x.missing=b}const N=(se,te,ae,fe,Ie,Te)=>{O();let Re;try{__INTLIFY_PROD_DEVTOOLS__,o||(x.fallbackContext=t?AT():void 0),Re=se(x)}finally{__INTLIFY_PROD_DEVTOOLS__,o||(x.fallbackContext=void 0)}if(ae!==\"translate exists\"&&rn(Re)&&Re===Mu||ae===\"translate exists\"&&!Re){const[$e,xe]=te();return t&&g?fe(t):Ie($e)}else{if(Te(Re))return Re;throw Jn(Fn.UNEXPECTED_RETURN_TYPE)}};function F(...se){return N(te=>Reflect.apply(Dh,null,[te,...se]),()=>tp(...se),\"translate\",te=>Reflect.apply(te.t,te,[...se]),te=>te,te=>Ke(te))}function j(...se){const[te,ae,fe]=se;if(fe&&!Tt(fe))throw Jn(Fn.INVALID_ARGUMENT);return F(te,ae,sn({resolvedMessage:!0},fe||{}))}function H(...se){return N(te=>Reflect.apply(Ph,null,[te,...se]),()=>Jf(...se),\"datetime format\",te=>Reflect.apply(te.d,te,[...se]),()=>xh,te=>Ke(te)||Wt(te))}function K(...se){return N(te=>Reflect.apply(Oh,null,[te,...se]),()=>ep(...se),\"number format\",te=>Reflect.apply(te.n,te,[...se]),()=>xh,te=>Ke(te)||Wt(te))}function G(se){return se.map(te=>Ke(te)||rn(te)||Pt(te)?Rh(String(te)):te)}const q={normalize:G,interpolate:se=>se,type:\"vnode\"};function Z(...se){return N(te=>{let ae;const fe=te;try{fe.processor=q,ae=Reflect.apply(Dh,null,[fe,...se])}finally{fe.processor=null}return ae},()=>tp(...se),\"translate\",te=>te[np](...se),te=>[Rh(te)],te=>Wt(te))}function oe(...se){return N(te=>Reflect.apply(Oh,null,[te,...se]),()=>ep(...se),\"number format\",te=>te[rp](...se),Nh,te=>Ke(te)||Wt(te))}function re(...se){return N(te=>Reflect.apply(Ph,null,[te,...se]),()=>Jf(...se),\"datetime format\",te=>te[op](...se),Nh,te=>Ke(te)||Wt(te))}function Y(se){_=se,x.pluralRules=_}function Q(se,te){return N(()=>{if(!se)return!1;const ae=Ke(te)?te:i.value,fe=be(ae),Ie=x.messageResolver(fe,se);return Wo(Ie)||co(Ie)||Ke(Ie)},()=>[se],\"translate exists\",ae=>Reflect.apply(ae.te,ae,[se,te]),qT,ae=>Pt(ae))}function ce(se){let te=null;const ae=C$(x,s.value,i.value);for(let fe=0;fe<ae.length;fe++){const Ie=c.value[ae[fe]]||{},Te=x.messageResolver(Ie,se);if(Te!=null){te=Te;break}}return te}function ue(se){const te=ce(se);return te??(t?t.tm(se)||{}:{})}function be(se){return c.value[se]||{}}function Ce(se,te){if(r){const ae={[se]:te};for(const fe in ae)Io(ae,fe)&&di(ae[fe]);te=ae[se]}c.value[se]=te,x.messages=c.value}function ge(se,te){c.value[se]=c.value[se]||{};const ae={[se]:te};if(r)for(const fe in ae)Io(ae,fe)&&di(ae[fe]);te=ae[se],Ls(te,c.value[se]),x.messages=c.value}function Se(se){return u.value[se]||{}}function X(se,te){u.value[se]=te,x.datetimeFormats=u.value,Th(x,se,te)}function U(se,te){u.value[se]=sn(u.value[se]||{},te),x.datetimeFormats=u.value,Th(x,se,te)}function ie(se){return d.value[se]||{}}function ve(se,te){d.value[se]=te,x.numberFormats=d.value,Eh(x,se,te)}function me(se,te){d.value[se]=sn(d.value[se]||{},te),x.numberFormats=d.value,Eh(x,se,te)}Bh++,t&&Ac&&(pe(t.locale,se=>{a&&(i.value=se,x.locale=se,Fa(x,i.value,s.value))}),pe(t.fallbackLocale,se=>{a&&(s.value=se,x.fallbackLocale=se,Fa(x,i.value,s.value))}));const he={id:Bh,locale:M,fallbackLocale:E,get inheritLocale(){return a},set inheritLocale(se){a=se,se&&t&&(i.value=t.locale.value,s.value=t.fallbackLocale.value,Fa(x,i.value,s.value))},get availableLocales(){return Object.keys(c.value).sort()},messages:R,get modifiers(){return C},get pluralRules(){return _||{}},get isGlobal(){return o},get missingWarn(){return p},set missingWarn(se){p=se,x.missingWarn=p},get fallbackWarn(){return m},set fallbackWarn(se){m=se,x.fallbackWarn=m},get fallbackRoot(){return g},set fallbackRoot(se){g=se},get fallbackFormat(){return v},set fallbackFormat(se){v=se,x.fallbackFormat=v},get warnHtmlMessage(){return $},set warnHtmlMessage(se){$=se,x.warnHtmlMessage=se},get escapeParameter(){return w},set escapeParameter(se){w=se,x.escapeParameter=se},t:F,getLocaleMessage:be,setLocaleMessage:Ce,mergeLocaleMessage:ge,getPostTranslationHandler:T,setPostTranslationHandler:k,getMissingHandler:B,setMissingHandler:L,[A$]:Y};return he.datetimeFormats=D,he.numberFormats=z,he.rt=j,he.te=Q,he.tm=ue,he.d=H,he.n=K,he.getDateTimeFormat=Se,he.setDateTimeFormat=X,he.mergeDateTimeFormat=U,he.getNumberFormat=ie,he.setNumberFormat=ve,he.mergeNumberFormat=me,he[D$]=n,he[np]=Z,he[op]=re,he[rp]=oe,he}function QT(e){const t=Ke(e.locale)?e.locale:ui,n=Ke(e.fallbackLocale)||Wt(e.fallbackLocale)||bt(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,o=Lt(e.missing)?e.missing:void 0,r=Pt(e.silentTranslationWarn)||da(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,l=Pt(e.silentFallbackWarn)||da(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=Pt(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,s=bt(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=Lt(e.postTranslation)?e.postTranslation:void 0,d=Ke(e.warnHtmlInMessage)?e.warnHtmlInMessage!==\"off\":!0,p=!!e.escapeParameterHtml,m=Pt(e.sync)?e.sync:!0;let g=e.messages;if(bt(e.sharedMessages)){const C=e.sharedMessages;g=Object.keys(C).reduce((x,P)=>{const O=x[P]||(x[P]={});return sn(O,C[P]),x},g||{})}const{__i18n:v,__root:y,__injectWithOption:b}=e,S=e.datetimeFormats,$=e.numberFormats,w=e.flatJson;return{locale:t,fallbackLocale:n,messages:g,flatJson:w,datetimeFormats:S,numberFormats:$,missing:o,missingWarn:r,fallbackWarn:l,fallbackRoot:a,fallbackFormat:i,modifiers:s,pluralRules:c,postTranslation:u,warnHtmlMessage:d,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:m,__i18n:v,__root:y,__injectWithOption:b}}function ap(e={}){const t=jm(QT(e)),{__extender:n}=e,o={id:t.id,get locale(){return t.locale.value},set locale(r){t.locale.value=r},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(r){t.fallbackLocale.value=r},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(r){t.setMissingHandler(r)},get silentTranslationWarn(){return Pt(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(r){t.missingWarn=Pt(r)?!r:r},get silentFallbackWarn(){return Pt(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(r){t.fallbackWarn=Pt(r)?!r:r},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(r){t.fallbackFormat=r},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(r){t.setPostTranslationHandler(r)},get sync(){return t.inheritLocale},set sync(r){t.inheritLocale=r},get warnHtmlInMessage(){return t.warnHtmlMessage?\"warn\":\"off\"},set warnHtmlInMessage(r){t.warnHtmlMessage=r!==\"off\"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(r){t.escapeParameter=r},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...r){return Reflect.apply(t.t,t,[...r])},rt(...r){return Reflect.apply(t.rt,t,[...r])},te(r,l){return t.te(r,l)},tm(r){return t.tm(r)},getLocaleMessage(r){return t.getLocaleMessage(r)},setLocaleMessage(r,l){t.setLocaleMessage(r,l)},mergeLocaleMessage(r,l){t.mergeLocaleMessage(r,l)},d(...r){return Reflect.apply(t.d,t,[...r])},getDateTimeFormat(r){return t.getDateTimeFormat(r)},setDateTimeFormat(r,l){t.setDateTimeFormat(r,l)},mergeDateTimeFormat(r,l){t.mergeDateTimeFormat(r,l)},n(...r){return Reflect.apply(t.n,t,[...r])},getNumberFormat(r){return t.getNumberFormat(r)},setNumberFormat(r,l){t.setNumberFormat(r,l)},mergeNumberFormat(r,l){t.mergeNumberFormat(r,l)}};return o.__extender=n,o}function JT(e,t,n){return{beforeCreate(){const o=fn();if(!o)throw Jn(Fn.UNEXPECTED_ERROR);const r=this.$options;if(r.i18n){const l=r.i18n;if(r.__i18n&&(l.__i18n=r.__i18n),l.__root=t,this===this.$root)this.$i18n=Fh(e,l);else{l.__injectWithOption=!0,l.__extender=n.__vueI18nExtend,this.$i18n=ap(l);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(r.__i18n)if(this===this.$root)this.$i18n=Fh(e,r);else{this.$i18n=ap({__i18n:r.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const l=this.$i18n;l.__extender&&(l.__disposer=l.__extender(this.$i18n))}else this.$i18n=e;r.__i18nGlobal&&k$(t,r,r),this.$t=(...l)=>this.$i18n.t(...l),this.$rt=(...l)=>this.$i18n.rt(...l),this.$te=(l,a)=>this.$i18n.te(l,a),this.$d=(...l)=>this.$i18n.d(...l),this.$n=(...l)=>this.$i18n.n(...l),this.$tm=l=>this.$i18n.tm(l),n.__setInstance(o,this.$i18n)},mounted(){},unmounted(){const o=fn();if(!o)throw Jn(Fn.UNEXPECTED_ERROR);const r=this.$i18n;delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,r.__disposer&&(r.__disposer(),delete r.__disposer,delete r.__extender),n.__deleteInstance(o),delete this.$i18n}}}function Fh(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[A$](t.pluralizationRules||e.pluralizationRules);const n=Hm(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(o=>e.mergeLocaleMessage(o,n[o])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(o=>e.mergeDateTimeFormat(o,t.datetimeFormats[o])),t.numberFormats&&Object.keys(t.numberFormats).forEach(o=>e.mergeNumberFormat(o,t.numberFormats[o])),e}const Wm={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===\"parent\"||e===\"global\",default:\"parent\"},i18n:{type:Object}};function eO({slots:e},t){return t.length===1&&t[0]===\"default\"?(e.default?e.default():[]).reduce((o,r)=>[...o,...r.type===Ve?r.children:[r]],[]):t.reduce((n,o)=>{const r=e[o];return r&&(n[o]=r()),n},At())}function N$(){return Ve}const tO=ne({name:\"i18n-t\",props:sn({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>rn(e)||!isNaN(e)}},Wm),setup(e,t){const{slots:n,attrs:o}=t,r=e.i18n||hr({useScope:e.scope,__useComponent:!0});return()=>{const l=Object.keys(n).filter(d=>d[0]!==\"_\"),a=At();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=Ke(e.plural)?+e.plural:e.plural);const i=eO(t,l),s=r[np](e.keypath,i,a),c=sn(At(),o),u=Ke(e.tag)||Tt(e.tag)?e.tag:N$();return Ca(u,c,s)}}}),zh=tO;function nO(e){return Wt(e)&&!Ke(e[0])}function B$(e,t,n,o){const{slots:r,attrs:l}=t;return()=>{const a={part:!0};let i=At();e.locale&&(a.locale=e.locale),Ke(e.format)?a.key=e.format:Tt(e.format)&&(Ke(e.format.key)&&(a.key=e.format.key),i=Object.keys(e.format).reduce((p,m)=>n.includes(m)?sn(At(),p,{[m]:e.format[m]}):p,At()));const s=o(e.value,a,i);let c=[a.key];Wt(s)?c=s.map((p,m)=>{const g=r[p.type],v=g?g({[p.type]:p.value,index:m,parts:s}):[p.value];return nO(v)&&(v[0].key=`${p.type}-${m}`),v}):Ke(s)&&(c=[s]);const u=sn(At(),l),d=Ke(e.tag)||Tt(e.tag)?e.tag:N$();return Ca(d,u,c)}}const oO=ne({name:\"i18n-n\",props:sn({value:{type:Number,required:!0},format:{type:[String,Object]}},Wm),setup(e,t){const n=e.i18n||hr({useScope:e.scope,__useComponent:!0});return B$(e,t,O$,(...o)=>n[rp](...o))}}),Hh=oO;function rO(e,t){const n=e;if(e.mode===\"composition\")return n.__getInstance(t)||e.global;{const o=n.__getInstance(t);return o!=null?o.__composer:e.global.__composer}}function lO(e){const t=a=>{const{instance:i,value:s}=a;if(!i||!i.$)throw Jn(Fn.UNEXPECTED_ERROR);const c=rO(e,i.$),u=jh(s);return[Reflect.apply(c.t,c,[...Wh(u)]),c]};return{created:(a,i)=>{const[s,c]=t(i);Ac&&e.global===c&&(a.__i18nWatcher=pe(c.locale,()=>{i.instance&&i.instance.$forceUpdate()})),a.__composer=c,a.textContent=s},unmounted:a=>{Ac&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:i})=>{if(a.__composer){const s=a.__composer,c=jh(i);a.textContent=Reflect.apply(s.t,s,[...Wh(c)])}},getSSRProps:a=>{const[i]=t(a);return{textContent:i}}}}function jh(e){if(Ke(e))return{path:e};if(bt(e)){if(!(\"path\"in e))throw Jn(Fn.REQUIRED_VALUE,\"path\");return e}else throw Jn(Fn.INVALID_VALUE)}function Wh(e){const{path:t,locale:n,args:o,choice:r,plural:l}=e,a={},i=o||{};return Ke(n)&&(a.locale=n),rn(r)&&(a.plural=r),rn(l)&&(a.plural=l),[t,i,a]}function aO(e,t,...n){const o=bt(n[0])?n[0]:{};(Pt(o.globalInstall)?o.globalInstall:!0)&&([zh.name,\"I18nT\"].forEach(l=>e.component(l,zh)),[Hh.name,\"I18nN\"].forEach(l=>e.component(l,Hh)),[Kh.name,\"I18nD\"].forEach(l=>e.component(l,Kh))),e.directive(\"t\",lO(t))}const iO=Wr(\"global-vue-i18n\");function sO(e={}){const t=__VUE_I18N_LEGACY_API__&&Pt(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=Pt(e.globalInjection)?e.globalInjection:!0,o=new Map,[r,l]=cO(e,t),a=Wr(\"\");function i(d){return o.get(d)||null}function s(d,p){o.set(d,p)}function c(d){o.delete(d)}const u={get mode(){return __VUE_I18N_LEGACY_API__&&t?\"legacy\":\"composition\"},async install(d,...p){if(d.__VUE_I18N_SYMBOL__=a,d.provide(d.__VUE_I18N_SYMBOL__,u),bt(p[0])){const v=p[0];u.__composerExtend=v.__composerExtend,u.__vueI18nExtend=v.__vueI18nExtend}let m=null;!t&&n&&(m=hO(d,u.global)),__VUE_I18N_FULL_INSTALL__&&aO(d,u,...p),__VUE_I18N_LEGACY_API__&&t&&d.mixin(JT(l,l.__composer,u));const g=d.unmount;d.unmount=()=>{m&&m(),u.dispose(),g()}},get global(){return l},dispose(){r.stop()},__instances:o,__getInstance:i,__setInstance:s,__deleteInstance:c};return u}function hr(e={}){const t=fn();if(t==null)throw Jn(Fn.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Jn(Fn.NOT_INSTALLED);const n=uO(t),o=fO(n),r=R$(t),l=dO(e,r);if(l===\"global\")return k$(o,e,r),o;if(l===\"parent\"){let s=pO(n,t,e.__useComponent);return s==null&&(s=o),s}const a=n;let i=a.__getInstance(t);if(i==null){const s=sn({},e);\"__i18n\"in r&&(s.__i18n=r.__i18n),o&&(s.__root=o),i=jm(s),a.__composerExtend&&(i[lp]=a.__composerExtend(i)),vO(a,t,i),a.__setInstance(t,i)}return i}function cO(e,t){const n=PI(),o=__VUE_I18N_LEGACY_API__&&t?n.run(()=>ap(e)):n.run(()=>jm(e));if(o==null)throw Jn(Fn.UNEXPECTED_ERROR);return[n,o]}function uO(e){const t=Je(e.isCE?iO:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Jn(e.isCE?Fn.NOT_INSTALLED_WITH_PROVIDE:Fn.UNEXPECTED_ERROR);return t}function dO(e,t){return Ou(e)?\"__i18n\"in t?\"local\":\"global\":e.useScope?e.useScope:\"local\"}function fO(e){return e.mode===\"composition\"?e.global:e.global.__composer}function pO(e,t,n=!1){let o=null;const r=t.root;let l=mO(t,n);for(;l!=null;){const a=e;if(e.mode===\"composition\")o=a.__getInstance(l);else if(__VUE_I18N_LEGACY_API__){const i=a.__getInstance(l);i!=null&&(o=i.__composer,n&&o&&!o[D$]&&(o=null))}if(o!=null||r===l)break;l=l.parent}return o}function mO(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function vO(e,t,n){Ne(()=>{},t),Mn(()=>{const o=n;e.__deleteInstance(t);const r=o[lp];r&&(r(),delete o[lp])},t)}const gO=[\"locale\",\"fallbackLocale\",\"availableLocales\"],Vh=[\"t\",\"rt\",\"d\",\"n\",\"tm\",\"te\"];function hO(e,t){const n=Object.create(null);return gO.forEach(r=>{const l=Object.getOwnPropertyDescriptor(t,r);if(!l)throw Jn(Fn.UNEXPECTED_ERROR);const a=Lr(l.value)?{get(){return l.value.value},set(i){l.value.value=i}}:{get(){return l.get&&l.get()}};Object.defineProperty(n,r,a)}),e.config.globalProperties.$i18n=n,Vh.forEach(r=>{const l=Object.getOwnPropertyDescriptor(t,r);if(!l||!l.value)throw Jn(Fn.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,l)}),()=>{delete e.config.globalProperties.$i18n,Vh.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}const bO=ne({name:\"i18n-d\",props:sn({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Wm),setup(e,t){const n=e.i18n||hr({useScope:e.scope,__useComponent:!0});return B$(e,t,T$,(...o)=>n[op](...o))}}),Kh=bO;YT();PT(sT);TT(wT);OT(C$);if(__INTLIFY_PROD_DEVTOOLS__){const e=cl();e.__INTLIFY__=!0,cT(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}function fi(e){\"@babel/helpers - typeof\";return fi=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},fi(e)}function yO(e,t){if(fi(e)!=\"object\"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var o=n.call(e,t);if(fi(o)!=\"object\")return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(t===\"string\"?String:Number)(e)}function SO(e){var t=yO(e,\"string\");return fi(t)==\"symbol\"?t:t+\"\"}function $O(e,t,n){return(t=SO(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Gh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Gh(Object(n),!0).forEach(function(o){$O(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gh(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},h.apply(null,arguments)}const ip=e=>typeof e==\"function\",CO=Array.isArray,xO=e=>typeof e==\"string\",wO=e=>e!==null&&typeof e==\"object\",_O=/^on[^a-z]/,IO=e=>_O.test(e),Vm=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},PO=/-(\\w)/g,_a=Vm(e=>e.replace(PO,(t,n)=>n?n.toUpperCase():\"\")),TO=/\\B([A-Z])/g,OO=Vm(e=>e.replace(TO,\"-$1\").toLowerCase()),EO=Vm(e=>e.charAt(0).toUpperCase()+e.slice(1)),MO=Object.prototype.hasOwnProperty,Xh=(e,t)=>MO.call(e,t);function AO(e,t,n,o){const r=e[n];if(r!=null){const l=Xh(r,\"default\");if(l&&o===void 0){const a=r.default;o=r.type!==Function&&ip(a)?a():a}r.type===Boolean&&(!Xh(t,n)&&!l?o=!1:o===\"\"&&(o=!0))}return o}function DO(e){return Object.keys(e).reduce((t,n)=>((n.startsWith(\"data-\")||n.startsWith(\"aria-\"))&&(t[n]=e[n]),t),{})}function ol(e){return typeof e==\"number\"?`${e}px`:e}function Xl(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof e==\"function\"?e(t):e??n}function RO(e){let t;const n=new Promise(r=>{t=e(()=>{r(!0)})}),o=()=>{t?.()};return o.then=(r,l)=>n.then(r,l),o.promise=n,o}function le(){const e=[];for(let t=0;t<arguments.length;t++){const n=t<0||arguments.length<=t?void 0:arguments[t];if(n){if(xO(n))e.push(n);else if(CO(n))for(let o=0;o<n.length;o++){const r=le(n[o]);r&&e.push(r)}else if(wO(n))for(const o in n)n[o]&&e.push(o)}}return e.join(\" \")}var L$=(function(){if(typeof Map<\"u\")return Map;function e(t,n){var o=-1;return t.some(function(r,l){return r[0]===n?(o=l,!0):!1}),o}return(function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(n){var o=e(this.__entries__,n),r=this.__entries__[o];return r&&r[1]},t.prototype.set=function(n,o){var r=e(this.__entries__,n);~r?this.__entries__[r][1]=o:this.__entries__.push([n,o])},t.prototype.delete=function(n){var o=this.__entries__,r=e(o,n);~r&&o.splice(r,1)},t.prototype.has=function(n){return!!~e(this.__entries__,n)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(n,o){o===void 0&&(o=null);for(var r=0,l=this.__entries__;r<l.length;r++){var a=l[r];n.call(o,a[1],a[0])}},t})()})(),sp=typeof window<\"u\"&&typeof document<\"u\"&&window.document===document,Dc=(function(){return typeof global<\"u\"&&global.Math===Math?global:typeof self<\"u\"&&self.Math===Math?self:typeof window<\"u\"&&window.Math===Math?window:Function(\"return this\")()})(),kO=(function(){return typeof requestAnimationFrame==\"function\"?requestAnimationFrame.bind(Dc):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)}})(),NO=2;function BO(e,t){var n=!1,o=!1,r=0;function l(){n&&(n=!1,e()),o&&i()}function a(){kO(l)}function i(){var s=Date.now();if(n){if(s-r<NO)return;o=!0}else n=!0,o=!1,setTimeout(a,t);r=s}return i}var LO=20,FO=[\"top\",\"right\",\"bottom\",\"left\",\"width\",\"height\",\"size\",\"weight\"],zO=typeof MutationObserver<\"u\",HO=(function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=BO(this.refresh.bind(this),LO)}return e.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},e.prototype.removeObserver=function(t){var n=this.observers_,o=n.indexOf(t);~o&&n.splice(o,1),!n.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){var t=this.updateObservers_();t&&this.refresh()},e.prototype.updateObservers_=function(){var t=this.observers_.filter(function(n){return n.gatherActive(),n.hasActive()});return t.forEach(function(n){return n.broadcastActive()}),t.length>0},e.prototype.connect_=function(){!sp||this.connected_||(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),zO?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!sp||!this.connected_||(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var n=t.propertyName,o=n===void 0?\"\":n,r=FO.some(function(l){return!!~o.indexOf(l)});r&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e})(),F$=function(e,t){for(var n=0,o=Object.keys(t);n<o.length;n++){var r=o[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},pa=function(e){var t=e&&e.ownerDocument&&e.ownerDocument.defaultView;return t||Dc},z$=Au(0,0,0,0);function Rc(e){return parseFloat(e)||0}function Uh(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce(function(o,r){var l=e[\"border-\"+r+\"-width\"];return o+Rc(l)},0)}function jO(e){for(var t=[\"top\",\"right\",\"bottom\",\"left\"],n={},o=0,r=t;o<r.length;o++){var l=r[o],a=e[\"padding-\"+l];n[l]=Rc(a)}return n}function WO(e){var t=e.getBBox();return Au(0,0,t.width,t.height)}function VO(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return z$;var o=pa(e).getComputedStyle(e),r=jO(o),l=r.left+r.right,a=r.top+r.bottom,i=Rc(o.width),s=Rc(o.height);if(o.boxSizing===\"border-box\"&&(Math.round(i+l)!==t&&(i-=Uh(o,\"left\",\"right\")+l),Math.round(s+a)!==n&&(s-=Uh(o,\"top\",\"bottom\")+a)),!GO(e)){var c=Math.round(i+l)-t,u=Math.round(s+a)-n;Math.abs(c)!==1&&(i-=c),Math.abs(u)!==1&&(s-=u)}return Au(r.left,r.top,i,s)}var KO=(function(){return typeof SVGGraphicsElement<\"u\"?function(e){return e instanceof pa(e).SVGGraphicsElement}:function(e){return e instanceof pa(e).SVGElement&&typeof e.getBBox==\"function\"}})();function GO(e){return e===pa(e).document.documentElement}function XO(e){return sp?KO(e)?WO(e):VO(e):z$}function UO(e){var t=e.x,n=e.y,o=e.width,r=e.height,l=typeof DOMRectReadOnly<\"u\"?DOMRectReadOnly:Object,a=Object.create(l.prototype);return F$(a,{x:t,y:n,width:o,height:r,top:n,right:t+o,bottom:r+n,left:t}),a}function Au(e,t,n,o){return{x:e,y:t,width:n,height:o}}var YO=(function(){function e(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=Au(0,0,0,0),this.target=t}return e.prototype.isActive=function(){var t=XO(this.target);return this.contentRect_=t,t.width!==this.broadcastWidth||t.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},e})(),qO=(function(){function e(t,n){var o=UO(n);F$(this,{target:t,contentRect:o})}return e})(),ZO=(function(){function e(t,n,o){if(this.activeObservations_=[],this.observations_=new L$,typeof t!=\"function\")throw new TypeError(\"The callback provided as parameter 1 is not a function.\");this.callback_=t,this.controller_=n,this.callbackCtx_=o}return e.prototype.observe=function(t){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(!(typeof Element>\"u\"||!(Element instanceof Object))){if(!(t instanceof pa(t).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var n=this.observations_;n.has(t)||(n.set(t,new YO(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(!(typeof Element>\"u\"||!(Element instanceof Object))){if(!(t instanceof pa(t).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var n=this.observations_;n.has(t)&&(n.delete(t),n.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&t.activeObservations_.push(n)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,n=this.activeObservations_.map(function(o){return new qO(o.target,o.broadcastRect())});this.callback_.call(t,n,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e})(),H$=typeof WeakMap<\"u\"?new WeakMap:new L$,j$=(function(){function e(t){if(!(this instanceof e))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=HO.getInstance(),o=new ZO(t,n,this);H$.set(this,o)}return e})();[\"observe\",\"unobserve\",\"disconnect\"].forEach(function(e){j$.prototype[e]=function(){var t;return(t=H$.get(this))[e].apply(t,arguments)}});var Km=(function(){return typeof Dc.ResizeObserver<\"u\"?Dc.ResizeObserver:j$})();const cp=e=>e!=null&&e!==\"\",Ze=(e,t)=>{const n=h({},e);return Object.keys(t).forEach(o=>{const r=n[o];if(r)r.type||r.default?r.default=t[o]:r.def?r.def(t[o]):n[o]={type:r,default:t[o]};else throw new Error(`not have ${o} prop`)}),n},Gm=e=>{const t=Object.keys(e),n={},o={},r={};for(let l=0,a=t.length;l<a;l++){const i=t[l];IO(i)?(n[i[2].toLowerCase()+i.slice(3)]=e[i],o[i]=e[i]):r[i]=e[i]}return{onEvents:o,events:n,extraAttrs:r}},QO=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n={},o=/;(?![^(]*\\))/g,r=/:(.+)/;return typeof e==\"object\"?e:(e.split(o).forEach(function(l){if(l){const a=l.split(r);if(a.length>1){const i=t?_a(a[0].trim()):a[0].trim();n[i]=a[1].trim()}}}),n)},nr=(e,t)=>e[t]!==void 0,W$=Symbol(\"skipFlatten\"),$t=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const n=Array.isArray(e)?e:[e],o=[];return n.forEach(r=>{Array.isArray(r)?o.push(...$t(r,t)):r&&r.type===Ve?r.key===W$?o.push(r):o.push(...$t(r.children,t)):r&&gn(r)?t&&!Ri(r)?o.push(r):t||o.push(r):cp(r)&&o.push(r)}),o},Du=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"default\",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(gn(e))return e.type===Ve?t===\"default\"?$t(e.children):[]:e.children&&e.children[t]?$t(e.children[t](n)):[];{const o=e.$slots[t]&&e.$slots[t](n);return $t(o)}},Tn=e=>{var t;let n=((t=e?.vnode)===null||t===void 0?void 0:t.el)||e&&(e.$el||e);for(;n&&!n.tagName;)n=n.nextSibling;return n},V$=e=>{const t={};if(e.$&&e.$.vnode){const n=e.$.vnode.props||{};Object.keys(e.$props).forEach(o=>{const r=e.$props[o],l=OO(o);(r!==void 0||l in n)&&(t[o]=r)})}else if(gn(e)&&typeof e.type==\"object\"){const n=e.props||{},o={};Object.keys(n).forEach(l=>{o[_a(l)]=n[l]});const r=e.type.props||{};Object.keys(r).forEach(l=>{const a=AO(r,o,l,o[l]);(a!==void 0||l in o)&&(t[l]=a)})}return t},K$=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"default\",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,r;if(e.$){const l=e[t];if(l!==void 0)return typeof l==\"function\"&&o?l(n):l;r=e.$slots[t],r=o&&r?r(n):r}else if(gn(e)){const l=e.props&&e.props[t];if(l!==void 0&&e.props!==null)return typeof l==\"function\"&&o?l(n):l;e.type===Ve?r=e.children:e.children&&e.children[t]&&(r=e.children[t],r=o&&r?r(n):r)}return Array.isArray(r)&&(r=$t(r),r=r.length===1?r[0]:r,r=r.length===0?void 0:r),r};function Yh(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return e.$?n=h(h({},n),e.$attrs):n=h(h({},n),e.props),Gm(n)[t?\"onEvents\":\"events\"]}function JO(e){const n=((gn(e)?e.props:e.$attrs)||{}).class||{};let o={};return typeof n==\"string\"?n.split(\" \").forEach(r=>{o[r.trim()]=!0}):Array.isArray(n)?le(n).split(\" \").forEach(r=>{o[r.trim()]=!0}):o=h(h({},o),n),o}function G$(e,t){let o=((gn(e)?e.props:e.$attrs)||{}).style||{};return typeof o==\"string\"&&(o=QO(o,t)),o}function eE(e){return e.length===1&&e[0].type===Ve}function tE(e){return e==null||e===\"\"||Array.isArray(e)&&e.length===0}function Ri(e){return e&&(e.type===YS||e.type===Ve&&e.children.length===0||e.type===Ai&&e.children.trim()===\"\")}function nE(e){return e&&e.type===Ai}function kt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const t=[];return e.forEach(n=>{Array.isArray(n)?t.push(...n):n?.type===Ve?t.push(...kt(n.children)):t.push(n)}),t.filter(n=>!Ri(n))}function za(e){if(e){const t=kt(e);return t.length?t:void 0}else return e}function Kt(e){return Array.isArray(e)&&e.length===1&&(e=e[0]),e&&e.__v_isVNode&&typeof e.type!=\"symbol\"}function Qt(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"default\";var o,r;return(o=t[n])!==null&&o!==void 0?o:(r=e[n])===null||r===void 0?void 0:r.call(e)}const go=ne({compatConfig:{MODE:3},name:\"ResizeObserver\",props:{disabled:Boolean,onResize:Function},emits:[\"resize\"],setup(e,t){let{slots:n}=t;const o=vt({width:0,height:0,offsetHeight:0,offsetWidth:0});let r=null,l=null;const a=()=>{l&&(l.disconnect(),l=null)},i=u=>{const{onResize:d}=e,p=u[0].target,{width:m,height:g}=p.getBoundingClientRect(),{offsetWidth:v,offsetHeight:y}=p,b=Math.floor(m),S=Math.floor(g);if(o.width!==b||o.height!==S||o.offsetWidth!==v||o.offsetHeight!==y){const $={width:b,height:S,offsetWidth:v,offsetHeight:y};h(o,$),d&&Promise.resolve().then(()=>{d(h(h({},$),{offsetWidth:v,offsetHeight:y}),p)})}},s=fn(),c=()=>{const{disabled:u}=e;if(u){a();return}const d=Tn(s);d!==r&&(a(),r=d),!l&&d&&(l=new Km(i),l.observe(d))};return Ne(()=>{c()}),Hn(()=>{c()}),Mn(()=>{a()}),pe(()=>e.disabled,()=>{c()},{flush:\"post\"}),()=>{var u;return(u=n.default)===null||u===void 0?void 0:u.call(n)[0]}}});let X$=e=>setTimeout(e,16),U$=e=>clearTimeout(e);typeof window<\"u\"&&\"requestAnimationFrame\"in window&&(X$=e=>window.requestAnimationFrame(e),U$=e=>window.cancelAnimationFrame(e));let qh=0;const Xm=new Map;function Y$(e){Xm.delete(e)}function qe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;qh+=1;const n=qh;function o(r){if(r===0)Y$(n),e();else{const l=X$(()=>{o(r-1)});Xm.set(n,l)}}return o(t),n}qe.cancel=e=>{const t=Xm.get(e);return Y$(t),U$(t)};function up(e){let t;const n=r=>()=>{t=null,e(...r)},o=function(){if(t==null){for(var r=arguments.length,l=new Array(r),a=0;a<r;a++)l[a]=arguments[a];t=qe(n(l))}};return o.cancel=()=>{qe.cancel(t),t=null},o}const hn=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t},oE=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t},Dt=e=>{const t=e;return t.install=function(n){n.component(t.displayName||t.name,e)},e};function yl(){return{type:[Function,Array]}}function De(e){return{type:Object,default:e}}function ye(e){return{type:Boolean,default:e}}function de(e){return{type:Function,default:e}}function Ct(e,t){return{validator:()=>!0,default:e}}function $n(){return{validator:()=>!0}}function ct(e){return{type:Array,default:e}}function ke(e){return{type:String,default:e}}function Fe(e,t){return e?{type:e,default:t}:Ct(t)}let Yt=!1;try{const e=Object.defineProperty({},\"passive\",{get(){Yt=!0}});window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}catch{}function Rt(e,t,n,o){if(e&&e.addEventListener){let r=o;r===void 0&&Yt&&(t===\"touchstart\"||t===\"touchmove\"||t===\"wheel\")&&(r={passive:!1}),e.addEventListener(t,n,r)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(t,n)}}}function as(e){return e!==window?e.getBoundingClientRect():{top:0,bottom:window.innerHeight}}function Zh(e,t,n){if(n!==void 0&&t.top>e.top-n)return`${n+t.top}px`}function Qh(e,t,n){if(n!==void 0&&t.bottom<e.bottom+n){const o=window.innerHeight-t.bottom;return`${n+o}px`}}const q$=[\"resize\",\"scroll\",\"touchstart\",\"touchmove\",\"touchend\",\"pageshow\",\"load\"];let qa=[];function Jh(e,t){if(!e)return;let n=qa.find(o=>o.target===e);n?n.affixList.push(t):(n={target:e,affixList:[t],eventHandlers:{}},qa.push(n),q$.forEach(o=>{n.eventHandlers[o]=Rt(e,o,()=>{n.affixList.forEach(r=>{const{lazyUpdatePosition:l}=r.exposed;l()},(o===\"touchstart\"||o===\"touchmove\")&&Yt?{passive:!0}:!1)})}))}function e0(e){const t=qa.find(n=>{const o=n.affixList.some(r=>r===e);return o&&(n.affixList=n.affixList.filter(r=>r!==e)),o});t&&t.affixList.length===0&&(qa=qa.filter(n=>n!==t),q$.forEach(n=>{const o=t.eventHandlers[n];o&&o.remove&&o.remove()}))}const Um=\"anticon\",Z$=Symbol(\"GlobalFormContextKey\"),rE=e=>{Qe(Z$,e)},lE=()=>Je(Z$,{validateMessages:I(()=>{})}),aE=()=>({iconPrefixCls:String,getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:De(),input:De(),autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:De(),pageHeader:De(),componentSize:{type:String},componentDisabled:{type:Boolean,default:void 0},direction:{type:String,default:\"ltr\"},space:De(),virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:De(),pagination:De(),theme:De(),select:De(),wave:De()}),Ym=Symbol(\"configProvider\"),Q$={getPrefixCls:(e,t)=>t||(e?`ant-${e}`:\"ant\"),iconPrefixCls:I(()=>Um),getPopupContainer:I(()=>()=>document.body),direction:I(()=>\"ltr\")},Ru=()=>Je(Ym,Q$),iE=e=>Qe(Ym,e),J$=Symbol(\"DisabledContextKey\"),zn=()=>Je(J$,J(void 0)),eC=e=>{const t=zn();return Qe(J$,I(()=>{var n;return(n=e.value)!==null&&n!==void 0?n:t.value})),e},tC={items_per_page:\"/ page\",jump_to:\"Go to\",jump_to_confirm:\"confirm\",page:\"\",prev_page:\"Previous Page\",next_page:\"Next Page\",prev_5:\"Previous 5 Pages\",next_5:\"Next 5 Pages\",prev_3:\"Previous 3 Pages\",next_3:\"Next 3 Pages\"},sE={locale:\"en_US\",today:\"Today\",now:\"Now\",backToToday:\"Back to today\",ok:\"Ok\",clear:\"Clear\",month:\"Month\",year:\"Year\",timeSelect:\"select time\",dateSelect:\"select date\",weekSelect:\"Choose a week\",monthSelect:\"Choose a month\",yearSelect:\"Choose a year\",decadeSelect:\"Choose a decade\",yearFormat:\"YYYY\",dateFormat:\"M/D/YYYY\",dayFormat:\"D\",dateTimeFormat:\"M/D/YYYY HH:mm:ss\",monthBeforeYear:!0,previousMonth:\"Previous month (PageUp)\",nextMonth:\"Next month (PageDown)\",previousYear:\"Last year (Control + left)\",nextYear:\"Next year (Control + right)\",previousDecade:\"Last decade\",nextDecade:\"Next decade\",previousCentury:\"Last century\",nextCentury:\"Next century\"},nC={placeholder:\"Select time\",rangePlaceholder:[\"Start time\",\"End time\"]},pi={lang:h({placeholder:\"Select date\",yearPlaceholder:\"Select year\",quarterPlaceholder:\"Select quarter\",monthPlaceholder:\"Select month\",weekPlaceholder:\"Select week\",rangePlaceholder:[\"Start date\",\"End date\"],rangeYearPlaceholder:[\"Start year\",\"End year\"],rangeQuarterPlaceholder:[\"Start quarter\",\"End quarter\"],rangeMonthPlaceholder:[\"Start month\",\"End month\"],rangeWeekPlaceholder:[\"Start week\",\"End week\"]},sE),timePickerLocale:h({},nC)},Kn=\"${label} is not a valid ${type}\",En={locale:\"en\",Pagination:tC,DatePicker:pi,TimePicker:nC,Calendar:pi,global:{placeholder:\"Please select\"},Table:{filterTitle:\"Filter menu\",filterConfirm:\"OK\",filterReset:\"Reset\",filterEmptyText:\"No filters\",filterCheckall:\"Select all items\",filterSearchPlaceholder:\"Search in filters\",emptyText:\"No data\",selectAll:\"Select current page\",selectInvert:\"Invert current page\",selectNone:\"Clear all data\",selectionAll:\"Select all data\",sortTitle:\"Sort\",expand:\"Expand row\",collapse:\"Collapse row\",triggerDesc:\"Click to sort descending\",triggerAsc:\"Click to sort ascending\",cancelSort:\"Click to cancel sorting\"},Tour:{Next:\"Next\",Previous:\"Previous\",Finish:\"Finish\"},Modal:{okText:\"OK\",cancelText:\"Cancel\",justOkText:\"OK\"},Popconfirm:{okText:\"OK\",cancelText:\"Cancel\"},Transfer:{titles:[\"\",\"\"],searchPlaceholder:\"Search here\",itemUnit:\"item\",itemsUnit:\"items\",remove:\"Remove\",selectCurrent:\"Select current page\",removeCurrent:\"Remove current page\",selectAll:\"Select all data\",removeAll:\"Remove all data\",selectInvert:\"Invert current page\"},Upload:{uploading:\"Uploading...\",removeFile:\"Remove file\",uploadError:\"Upload error\",previewFile:\"Preview file\",downloadFile:\"Download file\"},Empty:{description:\"No data\"},Icon:{icon:\"icon\"},Text:{edit:\"Edit\",copy:\"Copy\",copied:\"Copied\",expand:\"Expand\"},PageHeader:{back:\"Back\"},Form:{optional:\"(optional)\",defaultValidateMessages:{default:\"Field validation error for ${label}\",required:\"Please enter ${label}\",enum:\"${label} must be one of [${enum}]\",whitespace:\"${label} cannot be a blank character\",date:{format:\"${label} date format is invalid\",parse:\"${label} cannot be converted to a date\",invalid:\"${label} is an invalid date\"},types:{string:Kn,method:Kn,array:Kn,object:Kn,number:Kn,date:Kn,boolean:Kn,integer:Kn,float:Kn,regexp:Kn,email:Kn,url:Kn,hex:Kn},string:{len:\"${label} must be ${len} characters\",min:\"${label} must be at least ${min} characters\",max:\"${label} must be up to ${max} characters\",range:\"${label} must be between ${min}-${max} characters\"},number:{len:\"${label} must be equal to ${len}\",min:\"${label} must be minimum ${min}\",max:\"${label} must be maximum ${max}\",range:\"${label} must be between ${min}-${max}\"},array:{len:\"Must be ${len} ${label}\",min:\"At least ${min} ${label}\",max:\"At most ${max} ${label}\",range:\"The amount of ${label} must be between ${min}-${max}\"},pattern:{mismatch:\"${label} does not match the pattern ${pattern}\"}}},Image:{preview:\"Preview\"},QRCode:{expired:\"QR code expired\",refresh:\"Refresh\",scanned:\"Scanned\"}},_l=ne({compatConfig:{MODE:3},name:\"LocaleReceiver\",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup(e,t){let{slots:n}=t;const o=Je(\"localeData\",{}),r=I(()=>{const{componentName:a=\"global\",defaultLocale:i}=e,s=i||En[a||\"global\"],{antLocale:c}=o,u=a&&c?c[a]:{};return h(h({},typeof s==\"function\"?s():s),u||{})}),l=I(()=>{const{antLocale:a}=o,i=a&&a.locale;return a&&a.exist&&!i?En.locale:i});return()=>{const a=e.children||n.default,{antLocale:i}=o;return a?.(r.value,l.value,i)}}});function yo(e,t,n){const o=Je(\"localeData\",{});return[I(()=>{const{antLocale:l}=o,a=Be(t)||En[e||\"global\"],i=e&&l?l[e]:{};return h(h(h({},typeof a==\"function\"?a():a),i||{}),Be(n)||{})})]}function qm(e){for(var t=0,n,o=0,r=e.length;r>=4;++o,r-=4)n=e.charCodeAt(o)&255|(e.charCodeAt(++o)&255)<<8|(e.charCodeAt(++o)&255)<<16|(e.charCodeAt(++o)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(r){case 3:t^=(e.charCodeAt(o+2)&255)<<16;case 2:t^=(e.charCodeAt(o+1)&255)<<8;case 1:t^=e.charCodeAt(o)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}const t0=\"%\";class cE{constructor(t){this.cache=new Map,this.instanceId=t}get(t){return this.cache.get(Array.isArray(t)?t.join(t0):t)||null}update(t,n){const o=Array.isArray(t)?t.join(t0):t,r=this.cache.get(o),l=n(r);l===null?this.cache.delete(o):this.cache.set(o,l)}}const oC=\"data-token-hash\",fl=\"data-css-hash\",Ul=\"__cssinjs_instance__\";function mi(){const e=Math.random().toString(12).slice(2);if(typeof document<\"u\"&&document.head&&document.body){const t=document.body.querySelectorAll(`style[${fl}]`)||[],{firstChild:n}=document.head;Array.from(t).forEach(r=>{r[Ul]=r[Ul]||e,r[Ul]===e&&document.head.insertBefore(r,n)});const o={};Array.from(document.querySelectorAll(`style[${fl}]`)).forEach(r=>{var l;const a=r.getAttribute(fl);o[a]?r[Ul]===e&&((l=r.parentNode)===null||l===void 0||l.removeChild(r)):o[a]=!0})}return new cE(e)}const rC=Symbol(\"StyleContextKey\"),uE=()=>{var e,t,n;const o=fn();let r;if(o&&o.appContext){const l=(n=(t=(e=o.appContext)===null||e===void 0?void 0:e.config)===null||t===void 0?void 0:t.globalProperties)===null||n===void 0?void 0:n.__ANTDV_CSSINJS_CACHE__;l?r=l:(r=mi(),o.appContext.config.globalProperties&&(o.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__=r))}else r=mi();return r},lC={cache:mi(),defaultCache:!0,hashPriority:\"low\"},ku=()=>{const e=uE();return Je(rC,ee(h(h({},lC),{cache:e})))},dE=e=>{const t=ku(),n=ee(h(h({},lC),{cache:mi()}));return pe([()=>Be(e),t],()=>{const o=h({},t.value),r=Be(e);Object.keys(r).forEach(a=>{const i=r[a];r[a]!==void 0&&(o[a]=i)});const{cache:l}=r;o.cache=o.cache||mi(),o.defaultCache=!l&&t.value.defaultCache,n.value=o},{immediate:!0}),Qe(rC,n),n},fE=()=>({autoClear:ye(),mock:ke(),cache:De(),defaultCache:ye(),hashPriority:ke(),container:Fe(),ssrInline:ye(),transformers:ct(),linters:ct()}),pE=Dt(ne({name:\"AStyleProvider\",inheritAttrs:!1,props:fE(),setup(e,t){let{slots:n}=t;return dE(e),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}));function aC(e,t,n,o){const r=ku(),l=ee(\"\"),a=ee();ze(()=>{l.value=[e,...t.value].join(\"%\")});const i=s=>{r.value.cache.update(s,c=>{const[u=0,d]=c||[];return u-1===0?(o?.(d,!1),null):[u-1,d]})};return pe(l,(s,c)=>{c&&i(c),r.value.cache.update(s,u=>{const[d=0,p]=u||[],g=p||n();return[d+1,g]}),a.value=r.value.cache.get(l.value)[1]},{immediate:!0}),et(()=>{i(l.value)}),a}function wn(){return!!(typeof window<\"u\"&&window.document&&window.document.createElement)}function Tr(e,t){return e&&e.contains?e.contains(t):!1}const n0=\"data-vc-order\",mE=\"vc-util-key\",dp=new Map;function iC(){let{mark:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e?e.startsWith(\"data-\")?e:`data-${e}`:mE}function Nu(e){return e.attachTo?e.attachTo:document.querySelector(\"head\")||document.body}function vE(e){return e===\"queue\"?\"prependQueue\":e?\"prepend\":\"append\"}function sC(e){return Array.from((dp.get(e)||e).children).filter(t=>t.tagName===\"STYLE\")}function cC(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!wn())return null;const{csp:n,prepend:o}=t,r=document.createElement(\"style\");r.setAttribute(n0,vE(o)),n?.nonce&&(r.nonce=n?.nonce),r.innerHTML=e;const l=Nu(t),{firstChild:a}=l;if(o){if(o===\"queue\"){const i=sC(l).filter(s=>[\"prepend\",\"prependQueue\"].includes(s.getAttribute(n0)));if(i.length)return l.insertBefore(r,i[i.length-1].nextSibling),r}l.insertBefore(r,a)}else l.appendChild(r);return r}function uC(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n=Nu(t);return sC(n).find(o=>o.getAttribute(iC(t))===e)}function kc(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n=uC(e,t);n&&Nu(t).removeChild(n)}function gE(e,t){const n=dp.get(e);if(!n||!Tr(document,n)){const o=cC(\"\",t),{parentNode:r}=o;dp.set(e,r),e.removeChild(o)}}function vi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var o,r,l;const a=Nu(n);gE(a,n);const i=uC(t,n);if(i)return!((o=n.csp)===null||o===void 0)&&o.nonce&&i.nonce!==((r=n.csp)===null||r===void 0?void 0:r.nonce)&&(i.nonce=(l=n.csp)===null||l===void 0?void 0:l.nonce),i.innerHTML!==e&&(i.innerHTML=e),i;const s=cC(e,n);return s.setAttribute(iC(n),t),s}function hE(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}class ma{constructor(){this.cache=new Map,this.keys=[],this.cacheCallTimes=0}size(){return this.keys.length}internalGet(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o={map:this.cache};return t.forEach(r=>{var l;o?o=(l=o?.map)===null||l===void 0?void 0:l.get(r):o=void 0}),o?.value&&n&&(o.value[1]=this.cacheCallTimes++),o?.value}get(t){var n;return(n=this.internalGet(t,!0))===null||n===void 0?void 0:n[0]}has(t){return!!this.internalGet(t)}set(t,n){if(!this.has(t)){if(this.size()+1>ma.MAX_CACHE_SIZE+ma.MAX_CACHE_OFFSET){const[r]=this.keys.reduce((l,a)=>{const[,i]=l;return this.internalGet(a)[1]<i?[a,this.internalGet(a)[1]]:l},[this.keys[0],this.cacheCallTimes]);this.delete(r)}this.keys.push(t)}let o=this.cache;t.forEach((r,l)=>{if(l===t.length-1)o.set(r,{value:[n,this.cacheCallTimes++]});else{const a=o.get(r);a?a.map||(a.map=new Map):o.set(r,{map:new Map}),o=o.get(r).map}})}deleteByPath(t,n){var o;const r=t.get(n[0]);if(n.length===1)return r.map?t.set(n[0],{map:r.map}):t.delete(n[0]),(o=r.value)===null||o===void 0?void 0:o[0];const l=this.deleteByPath(r.map,n.slice(1));return(!r.map||r.map.size===0)&&!r.value&&t.delete(n[0]),l}delete(t){if(this.has(t))return this.keys=this.keys.filter(n=>!hE(n,t)),this.deleteByPath(this.cache,t)}}ma.MAX_CACHE_SIZE=20;ma.MAX_CACHE_OFFSET=5;let o0={};function bE(e,t){}function yE(e,t){}function dC(e,t,n){!t&&!o0[n]&&(e(!1,n),o0[n]=!0)}function Zm(e,t){dC(bE,e,t)}function SE(e,t){dC(yE,e,t)}function $E(){}let eo=$E,r0=0;class fC{constructor(t){this.derivatives=Array.isArray(t)?t:[t],this.id=r0,t.length===0&&eo(t.length>0),r0+=1}getDerivativeToken(t){return this.derivatives.reduce((n,o)=>o(t,n),void 0)}}const zd=new ma;function pC(e){const t=Array.isArray(e)?e:[e];return zd.has(t)||zd.set(t,new fC(t)),zd.get(t)}const l0=new WeakMap;function Nc(e){let t=l0.get(e)||\"\";return t||(Object.keys(e).forEach(n=>{const o=e[n];t+=n,o instanceof fC?t+=o.id:o&&typeof o==\"object\"?t+=Nc(o):t+=o}),l0.set(e,t)),t}function CE(e,t){return qm(`${t}_${Nc(e)}`)}const Za=`random-${Date.now()}-${Math.random()}`.replace(/\\./g,\"\"),mC=\"_bAmBoO_\";function xE(e,t,n){var o,r;if(wn()){vi(e,Za);const l=document.createElement(\"div\");l.style.position=\"fixed\",l.style.left=\"0\",l.style.top=\"0\",t?.(l),document.body.appendChild(l);const a=n?n(l):(o=getComputedStyle(l).content)===null||o===void 0?void 0:o.includes(mC);return(r=l.parentNode)===null||r===void 0||r.removeChild(l),kc(Za),a}return!1}let Hd;function wE(){return Hd===void 0&&(Hd=xE(`@layer ${Za} { .${Za} { content: \"${mC}\"!important; } }`,e=>{e.className=Za})),Hd}const a0={},_E=\"css\",rl=new Map;function IE(e){rl.set(e,(rl.get(e)||0)+1)}function PE(e,t){typeof document<\"u\"&&document.querySelectorAll(`style[${oC}=\"${e}\"]`).forEach(o=>{var r;o[Ul]===t&&((r=o.parentNode)===null||r===void 0||r.removeChild(o))})}const TE=0;function OE(e,t){rl.set(e,(rl.get(e)||0)-1);const n=Array.from(rl.keys()),o=n.filter(r=>(rl.get(r)||0)<=0);n.length-o.length>TE&&o.forEach(r=>{PE(r,t),rl.delete(r)})}const EE=(e,t,n,o)=>{const r=n.getDerivativeToken(e);let l=h(h({},r),t);return o&&(l=o(l)),l};function ME(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:J({});const o=ku(),r=I(()=>h({},...t.value)),l=I(()=>Nc(r.value)),a=I(()=>Nc(n.value.override||a0));return aC(\"token\",I(()=>[n.value.salt||\"\",e.value.id,l.value,a.value]),()=>{const{salt:s=\"\",override:c=a0,formatToken:u,getComputedToken:d}=n.value,p=d?d(r.value,c,e.value):EE(r.value,c,e.value,u),m=CE(p,s);p._tokenKey=m,IE(m);const g=`${_E}-${qm(m)}`;return p._hashId=g,[p,g]},s=>{var c;OE(s[0]._tokenKey,(c=o.value)===null||c===void 0?void 0:c.cache.instanceId)})}var vC=\"comm\",gC=\"rule\",hC=\"decl\",AE=\"@import\",DE=\"@namespace\",RE=\"@keyframes\",kE=\"@layer\",bC=Math.abs,Qm=String.fromCharCode;function yC(e){return e.trim()}function Fs(e,t,n){return e.replace(t,n)}function NE(e,t,n){return e.indexOf(t,n)}function Jl(e,t){return e.charCodeAt(t)|0}function va(e,t,n){return e.slice(t,n)}function zo(e){return e.length}function BE(e){return e.length}function is(e,t){return t.push(e),e}var Bu=1,ga=1,SC=0,ho=0,on=0,Ia=\"\";function Jm(e,t,n,o,r,l,a,i){return{value:e,root:t,parent:n,type:o,props:r,children:l,line:Bu,column:ga,length:a,return:\"\",siblings:i}}function LE(){return on}function FE(){return on=ho>0?Jl(Ia,--ho):0,ga--,on===10&&(ga=1,Bu--),on}function Po(){return on=ho<SC?Jl(Ia,ho++):0,ga++,on===10&&(ga=1,Bu++),on}function Or(){return Jl(Ia,ho)}function zs(){return ho}function Lu(e,t){return va(Ia,e,t)}function gi(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function zE(e){return Bu=ga=1,SC=zo(Ia=e),ho=0,[]}function HE(e){return Ia=\"\",e}function jd(e){return yC(Lu(ho-1,fp(e===91?e+2:e===40?e+1:e)))}function jE(e){for(;(on=Or())&&on<33;)Po();return gi(e)>2||gi(on)>3?\"\":\" \"}function WE(e,t){for(;--t&&Po()&&!(on<48||on>102||on>57&&on<65||on>70&&on<97););return Lu(e,zs()+(t<6&&Or()==32&&Po()==32))}function fp(e){for(;Po();)switch(on){case e:return ho;case 34:case 39:e!==34&&e!==39&&fp(on);break;case 40:e===41&&fp(e);break;case 92:Po();break}return ho}function VE(e,t){for(;Po()&&e+on!==57;)if(e+on===84&&Or()===47)break;return\"/*\"+Lu(t,ho-1)+\"*\"+Qm(e===47?e:Po())}function KE(e){for(;!gi(Or());)Po();return Lu(e,ho)}function GE(e){return HE(Hs(\"\",null,null,null,[\"\"],e=zE(e),0,[0],e))}function Hs(e,t,n,o,r,l,a,i,s){for(var c=0,u=0,d=a,p=0,m=0,g=0,v=1,y=1,b=1,S=0,$=\"\",w=r,C=l,_=o,x=$;y;)switch(g=S,S=Po()){case 40:if(g!=108&&Jl(x,d-1)==58){NE(x+=Fs(jd(S),\"&\",\"&\\f\"),\"&\\f\",bC(c?i[c-1]:0))!=-1&&(b=-1);break}case 34:case 39:case 91:x+=jd(S);break;case 9:case 10:case 13:case 32:x+=jE(g);break;case 92:x+=WE(zs()-1,7);continue;case 47:switch(Or()){case 42:case 47:is(XE(VE(Po(),zs()),t,n,s),s),(gi(g||1)==5||gi(Or()||1)==5)&&zo(x)&&va(x,-1,void 0)!==\" \"&&(x+=\" \");break;default:x+=\"/\"}break;case 123*v:i[c++]=zo(x)*b;case 125*v:case 59:case 0:switch(S){case 0:case 125:y=0;case 59+u:b==-1&&(x=Fs(x,/\\f/g,\"\")),m>0&&(zo(x)-d||v===0&&g===47)&&is(m>32?s0(x+\";\",o,n,d-1,s):s0(Fs(x,\" \",\"\")+\";\",o,n,d-2,s),s);break;case 59:x+=\";\";default:if(is(_=i0(x,t,n,c,u,r,i,$,w=[],C=[],d,l),l),S===123)if(u===0)Hs(x,t,_,_,w,l,d,i,C);else{switch(p){case 99:if(Jl(x,3)===110)break;case 108:if(Jl(x,2)===97)break;default:u=0;case 100:case 109:case 115:}u?Hs(e,_,_,o&&is(i0(e,_,_,0,0,r,i,$,r,w=[],d,C),C),r,C,d,i,o?w:C):Hs(x,_,_,_,[\"\"],C,0,i,C)}}c=u=m=0,v=b=1,$=x=\"\",d=a;break;case 58:d=1+zo(x),m=g;default:if(v<1){if(S==123)--v;else if(S==125&&v++==0&&FE()==125)continue}switch(x+=Qm(S),S*v){case 38:b=u>0?1:(x+=\"\\f\",-1);break;case 44:i[c++]=(zo(x)-1)*b,b=1;break;case 64:Or()===45&&(x+=jd(Po())),p=Or(),u=d=zo($=x+=KE(zs())),S++;break;case 45:g===45&&zo(x)==2&&(v=0)}}return l}function i0(e,t,n,o,r,l,a,i,s,c,u,d){for(var p=r-1,m=r===0?l:[\"\"],g=BE(m),v=0,y=0,b=0;v<o;++v)for(var S=0,$=va(e,p+1,p=bC(y=a[v])),w=e;S<g;++S)(w=yC(y>0?m[S]+\" \"+$:Fs($,/&\\f/g,m[S])))&&(s[b++]=w);return Jm(e,t,n,r===0?gC:i,s,c,u,d)}function XE(e,t,n,o){return Jm(e,t,n,vC,Qm(LE()),va(e,2,-2),0,o)}function s0(e,t,n,o,r){return Jm(e,t,n,hC,va(e,0,o),va(e,o+1,-1),o,r)}function pp(e,t){for(var n=\"\",o=0;o<e.length;o++)n+=t(e[o],o,e,t)||\"\";return n}function UE(e,t,n,o){switch(e.type){case kE:if(e.children.length)break;case AE:case DE:case hC:return e.return=e.return||e.value;case vC:return\"\";case RE:return e.return=e.value+\"{\"+pp(e.children,o)+\"}\";case gC:if(!zo(e.value=e.props.join(\",\")))return\"\"}return zo(n=pp(e.children,o))?e.return=e.value+\"{\"+n+\"}\":\"\"}const c0=\"data-ant-cssinjs-cache-path\",YE=\"_FILE_STYLE__\";let pl,$C=!0;function qE(){var e;if(!pl&&(pl={},wn())){const t=document.createElement(\"div\");t.className=c0,t.style.position=\"fixed\",t.style.visibility=\"hidden\",t.style.top=\"-9999px\",document.body.appendChild(t);let n=getComputedStyle(t).content||\"\";n=n.replace(/^\"/,\"\").replace(/\"$/,\"\"),n.split(\";\").forEach(r=>{const[l,a]=r.split(\":\");pl[l]=a});const o=document.querySelector(`style[${c0}]`);o&&($C=!1,(e=o.parentNode)===null||e===void 0||e.removeChild(o)),document.body.removeChild(t)}}function ZE(e){return qE(),!!pl[e]}function QE(e){const t=pl[e];let n=null;if(t&&wn())if($C)n=YE;else{const o=document.querySelector(`style[${fl}=\"${pl[e]}\"]`);o?n=o.innerHTML:delete pl[e]}return[n,t]}const u0=wn(),JE=\"_skip_check_\",CC=\"_multi_value_\";function d0(e){return pp(GE(e),UE).replace(/\\{%%%\\:[^;];}/g,\";\")}function eM(e){return typeof e==\"object\"&&e&&(JE in e||CC in e)}function tM(e,t,n){if(!t)return e;const o=`.${t}`,r=n===\"low\"?`:where(${o})`:o;return e.split(\",\").map(a=>{var i;const s=a.trim().split(/\\s+/);let c=s[0]||\"\";const u=((i=c.match(/^\\w+/))===null||i===void 0?void 0:i[0])||\"\";return c=`${u}${r}${c.slice(u.length)}`,[c,...s.slice(1)].join(\" \")}).join(\",\")}const f0=new Set,mp=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{root:n,injectHash:o,parentSelectors:r}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{root:!0,parentSelectors:[]};const{hashId:l,layer:a,path:i,hashPriority:s,transformers:c=[],linters:u=[]}=t;let d=\"\",p={};function m(y){const b=y.getName(l);if(!p[b]){const[S]=mp(y.style,t,{root:!1,parentSelectors:r});p[b]=`@keyframes ${y.getName(l)}${S}`}}function g(y){let b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return y.forEach(S=>{Array.isArray(S)?g(S,b):S&&b.push(S)}),b}if(g(Array.isArray(e)?e:[e]).forEach(y=>{const b=typeof y==\"string\"&&!n?{}:y;if(typeof b==\"string\")d+=`${b}\n`;else if(b._keyframe)m(b);else{const S=c.reduce(($,w)=>{var C;return((C=w?.visit)===null||C===void 0?void 0:C.call(w,$))||$},b);Object.keys(S).forEach($=>{var w;const C=S[$];if(typeof C==\"object\"&&C&&($!==\"animationName\"||!C._keyframe)&&!eM(C)){let _=!1,x=$.trim(),P=!1;(n||o)&&l?x.startsWith(\"@\")?_=!0:x=tM($,l,s):n&&!l&&(x===\"&\"||x===\"\")&&(x=\"\",P=!0);const[O,M]=mp(C,t,{root:P,injectHash:_,parentSelectors:[...r,x]});p=h(h({},p),M),d+=`${x}${O}`}else{let _=function(P,O){const M=P.replace(/[A-Z]/g,R=>`-${R.toLowerCase()}`);let E=O;!dP[P]&&typeof E==\"number\"&&E!==0&&(E=`${E}px`),P===\"animationName\"&&O?._keyframe&&(m(O),E=O.getName(l)),d+=`${M}:${E};`};const x=(w=C?.value)!==null&&w!==void 0?w:C;typeof C==\"object\"&&C?.[CC]&&Array.isArray(x)?x.forEach(P=>{_($,P)}):_($,x)}})}}),!n)d=`{${d}}`;else if(a&&wE()){const y=a.split(\",\");d=`@layer ${y[y.length-1].trim()} {${d}}`,y.length>1&&(d=`@layer ${a}{%%%:%}${d}`)}return[d,p]};function nM(e,t){return qm(`${e.join(\"%\")}${t}`)}function vp(e,t){const n=ku(),o=I(()=>e.value.token._tokenKey),r=I(()=>[o.value,...e.value.path]);let l=u0;return aC(\"style\",r,()=>{const{path:a,hashId:i,layer:s,nonce:c,clientOnly:u,order:d=0}=e.value,p=r.value.join(\"|\");if(ZE(p)){const[x,P]=QE(p);if(x)return[x,o.value,P,{},u,d]}const m=t(),{hashPriority:g,container:v,transformers:y,linters:b,cache:S}=n.value,[$,w]=mp(m,{hashId:i,hashPriority:g,layer:s,path:a.join(\"-\"),transformers:y,linters:b}),C=d0($),_=nM(r.value,C);if(l){const x={mark:fl,prepend:\"queue\",attachTo:v,priority:d},P=typeof c==\"function\"?c():c;P&&(x.csp={nonce:P});const O=vi(C,_,x);O[Ul]=S.instanceId,O.setAttribute(oC,o.value),Object.keys(w).forEach(M=>{f0.has(M)||(f0.add(M),vi(d0(w[M]),`_effect-${M}`,{mark:fl,prepend:\"queue\",attachTo:v}))})}return[C,o.value,_,w,u,d]},(a,i)=>{let[,,s]=a;(i||n.value.autoClear)&&u0&&kc(s,{mark:fl})}),a=>a}class lt{constructor(t,n){this._keyframe=!0,this.name=t,this.style=n}getName(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\";return t?`${t}-${this.name}`:this.name}}const oM={StyleProvider:pE},xC=\"4.2.6\",hi=[\"blue\",\"purple\",\"cyan\",\"green\",\"magenta\",\"pink\",\"red\",\"orange\",\"yellow\",\"volcano\",\"geekblue\",\"lime\",\"gold\"],rM=e=>{const{controlHeight:t}=e;return{controlHeightSM:t*.75,controlHeightXS:t*.5,controlHeightLG:t*1.25}};function lM(e){const{sizeUnit:t,sizeStep:n}=e;return{sizeXXL:t*(n+8),sizeXL:t*(n+4),sizeLG:t*(n+2),sizeMD:t*(n+1),sizeMS:t*n,size:t*n,sizeSM:t*(n-1),sizeXS:t*(n-2),sizeXXS:t*(n-3)}}const wC={blue:\"#1677ff\",purple:\"#722ED1\",cyan:\"#13C2C2\",green:\"#52C41A\",magenta:\"#EB2F96\",pink:\"#eb2f96\",red:\"#F5222D\",orange:\"#FA8C16\",yellow:\"#FADB14\",volcano:\"#FA541C\",geekblue:\"#2F54EB\",gold:\"#FAAD14\",lime:\"#A0D911\"},Fu=h(h({},wC),{colorPrimary:\"#1677ff\",colorSuccess:\"#52c41a\",colorWarning:\"#faad14\",colorError:\"#ff4d4f\",colorInfo:\"#1677ff\",colorTextBase:\"\",colorBgBase:\"\",fontFamily:`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,fontSize:14,lineWidth:1,lineType:\"solid\",motionUnit:.1,motionBase:0,motionEaseOutCirc:\"cubic-bezier(0.08, 0.82, 0.17, 1)\",motionEaseInOutCirc:\"cubic-bezier(0.78, 0.14, 0.15, 0.86)\",motionEaseOut:\"cubic-bezier(0.215, 0.61, 0.355, 1)\",motionEaseInOut:\"cubic-bezier(0.645, 0.045, 0.355, 1)\",motionEaseOutBack:\"cubic-bezier(0.12, 0.4, 0.29, 1.46)\",motionEaseInBack:\"cubic-bezier(0.71, -0.46, 0.88, 0.6)\",motionEaseInQuint:\"cubic-bezier(0.755, 0.05, 0.855, 0.06)\",motionEaseOutQuint:\"cubic-bezier(0.23, 1, 0.32, 1)\",borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacityImage:1,wireframe:!1});function aM(e,t){let{generateColorPalettes:n,generateNeutralColorPalettes:o}=t;const{colorSuccess:r,colorWarning:l,colorError:a,colorInfo:i,colorPrimary:s,colorBgBase:c,colorTextBase:u}=e,d=n(s),p=n(r),m=n(l),g=n(a),v=n(i),y=o(c,u);return h(h({},y),{colorPrimaryBg:d[1],colorPrimaryBgHover:d[2],colorPrimaryBorder:d[3],colorPrimaryBorderHover:d[4],colorPrimaryHover:d[5],colorPrimary:d[6],colorPrimaryActive:d[7],colorPrimaryTextHover:d[8],colorPrimaryText:d[9],colorPrimaryTextActive:d[10],colorSuccessBg:p[1],colorSuccessBgHover:p[2],colorSuccessBorder:p[3],colorSuccessBorderHover:p[4],colorSuccessHover:p[4],colorSuccess:p[6],colorSuccessActive:p[7],colorSuccessTextHover:p[8],colorSuccessText:p[9],colorSuccessTextActive:p[10],colorErrorBg:g[1],colorErrorBgHover:g[2],colorErrorBorder:g[3],colorErrorBorderHover:g[4],colorErrorHover:g[5],colorError:g[6],colorErrorActive:g[7],colorErrorTextHover:g[8],colorErrorText:g[9],colorErrorTextActive:g[10],colorWarningBg:m[1],colorWarningBgHover:m[2],colorWarningBorder:m[3],colorWarningBorderHover:m[4],colorWarningHover:m[4],colorWarning:m[6],colorWarningActive:m[7],colorWarningTextHover:m[8],colorWarningText:m[9],colorWarningTextActive:m[10],colorInfoBg:v[1],colorInfoBgHover:v[2],colorInfoBorder:v[3],colorInfoBorderHover:v[4],colorInfoHover:v[4],colorInfo:v[6],colorInfoActive:v[7],colorInfoTextHover:v[8],colorInfoText:v[9],colorInfoTextActive:v[10],colorBgMask:new mt(\"#000\").setAlpha(.45).toRgbString(),colorWhite:\"#fff\"})}const iM=e=>{let t=e,n=e,o=e,r=e;return e<6&&e>=5?t=e+1:e<16&&e>=6?t=e+2:e>=16&&(t=16),e<7&&e>=5?n=4:e<8&&e>=7?n=5:e<14&&e>=8?n=6:e<16&&e>=14?n=7:e>=16&&(n=8),e<6&&e>=2?o=1:e>=6&&(o=2),e>4&&e<8?r=4:e>=8&&(r=6),{borderRadius:e>16?16:e,borderRadiusXS:o,borderRadiusSM:n,borderRadiusLG:t,borderRadiusOuter:r}};function sM(e){const{motionUnit:t,motionBase:n,borderRadius:o,lineWidth:r}=e;return h({motionDurationFast:`${(n+t).toFixed(1)}s`,motionDurationMid:`${(n+t*2).toFixed(1)}s`,motionDurationSlow:`${(n+t*3).toFixed(1)}s`,lineWidthBold:r+1},iM(o))}const Zo=(e,t)=>new mt(e).setAlpha(t).toRgbString(),Ha=(e,t)=>new mt(e).darken(t).toHexString(),cM=e=>{const t=Mc(e);return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[4],6:t[5],7:t[6],8:t[4],9:t[5],10:t[6]}},uM=(e,t)=>{const n=e||\"#fff\",o=t||\"#000\";return{colorBgBase:n,colorTextBase:o,colorText:Zo(o,.88),colorTextSecondary:Zo(o,.65),colorTextTertiary:Zo(o,.45),colorTextQuaternary:Zo(o,.25),colorFill:Zo(o,.15),colorFillSecondary:Zo(o,.06),colorFillTertiary:Zo(o,.04),colorFillQuaternary:Zo(o,.02),colorBgLayout:Ha(n,4),colorBgContainer:Ha(n,0),colorBgElevated:Ha(n,0),colorBgSpotlight:Zo(o,.85),colorBorder:Ha(n,15),colorBorderSecondary:Ha(n,6)}};function dM(e){const t=new Array(10).fill(null).map((n,o)=>{const r=o-1,l=e*Math.pow(2.71828,r/5),a=o>1?Math.floor(l):Math.ceil(l);return Math.floor(a/2)*2});return t[1]=e,t.map(n=>{const o=n+8;return{size:n,lineHeight:o/n}})}const fM=e=>{const t=dM(e),n=t.map(r=>r.size),o=t.map(r=>r.lineHeight);return{fontSizeSM:n[0],fontSize:n[1],fontSizeLG:n[2],fontSizeXL:n[3],fontSizeHeading1:n[6],fontSizeHeading2:n[5],fontSizeHeading3:n[4],fontSizeHeading4:n[3],fontSizeHeading5:n[2],lineHeight:o[1],lineHeightLG:o[2],lineHeightSM:o[0],lineHeightHeading1:o[6],lineHeightHeading2:o[5],lineHeightHeading3:o[4],lineHeightHeading4:o[3],lineHeightHeading5:o[2]}};function pM(e){const t=Object.keys(wC).map(n=>{const o=Mc(e[n]);return new Array(10).fill(1).reduce((r,l,a)=>(r[`${n}-${a+1}`]=o[a],r),{})}).reduce((n,o)=>(n=h(h({},n),o),n),{});return h(h(h(h(h(h(h({},e),t),aM(e,{generateColorPalettes:cM,generateNeutralColorPalettes:uM})),fM(e.fontSize)),lM(e)),rM(e)),sM(e))}function Wd(e){return e>=0&&e<=255}function ss(e,t){const{r:n,g:o,b:r,a:l}=new mt(e).toRgb();if(l<1)return e;const{r:a,g:i,b:s}=new mt(t).toRgb();for(let c=.01;c<=1;c+=.01){const u=Math.round((n-a*(1-c))/c),d=Math.round((o-i*(1-c))/c),p=Math.round((r-s*(1-c))/c);if(Wd(u)&&Wd(d)&&Wd(p))return new mt({r:u,g:d,b:p,a:Math.round(c*100)/100}).toRgbString()}return new mt({r:n,g:o,b:r,a:1}).toRgbString()}var mM=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function vM(e){const{override:t}=e,n=mM(e,[\"override\"]),o=h({},t);Object.keys(Fu).forEach(m=>{delete o[m]});const r=h(h({},n),o),l=480,a=576,i=768,s=992,c=1200,u=1600,d=2e3;return h(h(h({},r),{colorLink:r.colorInfoText,colorLinkHover:r.colorInfoHover,colorLinkActive:r.colorInfoActive,colorFillContent:r.colorFillSecondary,colorFillContentHover:r.colorFill,colorFillAlter:r.colorFillQuaternary,colorBgContainerDisabled:r.colorFillTertiary,colorBorderBg:r.colorBgContainer,colorSplit:ss(r.colorBorderSecondary,r.colorBgContainer),colorTextPlaceholder:r.colorTextQuaternary,colorTextDisabled:r.colorTextQuaternary,colorTextHeading:r.colorText,colorTextLabel:r.colorTextSecondary,colorTextDescription:r.colorTextTertiary,colorTextLightSolid:r.colorWhite,colorHighlight:r.colorError,colorBgTextHover:r.colorFillSecondary,colorBgTextActive:r.colorFill,colorIcon:r.colorTextTertiary,colorIconHover:r.colorText,colorErrorOutline:ss(r.colorErrorBg,r.colorBgContainer),colorWarningOutline:ss(r.colorWarningBg,r.colorBgContainer),fontSizeIcon:r.fontSizeSM,lineWidth:r.lineWidth,controlOutlineWidth:r.lineWidth*2,controlInteractiveSize:r.controlHeight/2,controlItemBgHover:r.colorFillTertiary,controlItemBgActive:r.colorPrimaryBg,controlItemBgActiveHover:r.colorPrimaryBgHover,controlItemBgActiveDisabled:r.colorFill,controlTmpOutline:r.colorFillQuaternary,controlOutline:ss(r.colorPrimaryBg,r.colorBgContainer),lineType:r.lineType,borderRadius:r.borderRadius,borderRadiusXS:r.borderRadiusXS,borderRadiusSM:r.borderRadiusSM,borderRadiusLG:r.borderRadiusLG,fontWeightStrong:600,opacityLoading:.65,linkDecoration:\"none\",linkHoverDecoration:\"none\",linkFocusDecoration:\"none\",controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:r.sizeXXS,paddingXS:r.sizeXS,paddingSM:r.sizeSM,padding:r.size,paddingMD:r.sizeMD,paddingLG:r.sizeLG,paddingXL:r.sizeXL,paddingContentHorizontalLG:r.sizeLG,paddingContentVerticalLG:r.sizeMS,paddingContentHorizontal:r.sizeMS,paddingContentVertical:r.sizeSM,paddingContentHorizontalSM:r.size,paddingContentVerticalSM:r.sizeXS,marginXXS:r.sizeXXS,marginXS:r.sizeXS,marginSM:r.sizeSM,margin:r.size,marginMD:r.sizeMD,marginLG:r.sizeLG,marginXL:r.sizeXL,marginXXL:r.sizeXXL,boxShadow:`\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,boxShadowSecondary:`\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowTertiary:`\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,screenXS:l,screenXSMin:l,screenXSMax:a-1,screenSM:a,screenSMMin:a,screenSMMax:i-1,screenMD:i,screenMDMin:i,screenMDMax:s-1,screenLG:s,screenLGMin:s,screenLGMax:c-1,screenXL:c,screenXLMin:c,screenXLMax:u-1,screenXXL:u,screenXXLMin:u,screenXXLMax:d-1,screenXXXL:d,screenXXXLMin:d,boxShadowPopoverArrow:\"3px 3px 7px rgba(0, 0, 0, 0.1)\",boxShadowCard:`\n      0 1px 2px -2px ${new mt(\"rgba(0, 0, 0, 0.16)\").toRgbString()},\n      0 3px 6px 0 ${new mt(\"rgba(0, 0, 0, 0.12)\").toRgbString()},\n      0 5px 12px 4px ${new mt(\"rgba(0, 0, 0, 0.09)\").toRgbString()}\n    `,boxShadowDrawerRight:`\n      -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowDrawerLeft:`\n      6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowDrawerUp:`\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowDrawerDown:`\n      0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,boxShadowTabsOverflowLeft:\"inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)\",boxShadowTabsOverflowRight:\"inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)\",boxShadowTabsOverflowTop:\"inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)\",boxShadowTabsOverflowBottom:\"inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)\"}),o)}const zu=e=>({color:e.colorLink,textDecoration:\"none\",outline:\"none\",cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,\"&:focus, &:hover\":{color:e.colorLinkHover},\"&:active\":{color:e.colorLinkActive}}),ev=(e,t,n,o,r)=>{const l=e/2,a=0,i=l,s=n*1/Math.sqrt(2),c=l-n*(1-1/Math.sqrt(2)),u=l-t*(1/Math.sqrt(2)),d=n*(Math.sqrt(2)-1)+t*(1/Math.sqrt(2)),p=2*l-u,m=d,g=2*l-s,v=c,y=2*l-a,b=i,S=l*Math.sqrt(2)+n*(Math.sqrt(2)-2),$=n*(Math.sqrt(2)-1);return{pointerEvents:\"none\",width:e,height:e,overflow:\"hidden\",\"&::after\":{content:'\"\"',position:\"absolute\",width:S,height:S,bottom:0,insetInline:0,margin:\"auto\",borderRadius:{_skip_check_:!0,value:`0 0 ${t}px 0`},transform:\"translateY(50%) rotate(-135deg)\",boxShadow:r,zIndex:0,background:\"transparent\"},\"&::before\":{position:\"absolute\",bottom:0,insetInlineStart:0,width:e,height:e/2,background:o,clipPath:{_multi_value_:!0,value:[`polygon(${$}px 100%, 50% ${$}px, ${2*l-$}px 100%, ${$}px 100%)`,`path('M ${a} ${i} A ${n} ${n} 0 0 0 ${s} ${c} L ${u} ${d} A ${t} ${t} 0 0 1 ${p} ${m} L ${g} ${v} A ${n} ${n} 0 0 0 ${y} ${b} Z')`]},content:'\"\"'}}};function Bc(e,t){return hi.reduce((n,o)=>{const r=e[`${o}-1`],l=e[`${o}-3`],a=e[`${o}-6`],i=e[`${o}-7`];return h(h({},n),t(o,{lightColor:r,lightBorderColor:l,darkColor:a,textColor:i}))},{})}const Gt={overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\"},Ue=e=>({boxSizing:\"border-box\",margin:0,padding:0,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,listStyle:\"none\",fontFamily:e.fontFamily}),Il=()=>({display:\"inline-flex\",alignItems:\"center\",color:\"inherit\",fontStyle:\"normal\",lineHeight:0,textAlign:\"center\",textTransform:\"none\",verticalAlign:\"-0.125em\",textRendering:\"optimizeLegibility\",\"-webkit-font-smoothing\":\"antialiased\",\"-moz-osx-font-smoothing\":\"grayscale\",\"> *\":{lineHeight:1},svg:{display:\"inline-block\"}}),Mo=()=>({\"&::before\":{display:\"table\",content:'\"\"'},\"&::after\":{display:\"table\",clear:\"both\",content:'\"\"'}}),gM=e=>({a:{color:e.colorLink,textDecoration:e.linkDecoration,backgroundColor:\"transparent\",outline:\"none\",cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,\"-webkit-text-decoration-skip\":\"objects\",\"&:hover\":{color:e.colorLinkHover},\"&:active\":{color:e.colorLinkActive},\"&:active,\\n  &:hover\":{textDecoration:e.linkHoverDecoration,outline:0},\"&:focus\":{textDecoration:e.linkFocusDecoration,outline:0},\"&[disabled]\":{color:e.colorTextDisabled,cursor:\"not-allowed\"}}}),hM=(e,t)=>{const{fontFamily:n,fontSize:o}=e,r=`[class^=\"${t}\"], [class*=\" ${t}\"]`;return{[r]:{fontFamily:n,fontSize:o,boxSizing:\"border-box\",\"&::before, &::after\":{boxSizing:\"border-box\"},[r]:{boxSizing:\"border-box\",\"&::before, &::after\":{boxSizing:\"border-box\"}}}}},dr=e=>({outline:`${e.lineWidthBold}px solid ${e.colorPrimaryBorder}`,outlineOffset:1,transition:\"outline-offset 0s, outline 0s\"}),fr=e=>({\"&:focus-visible\":h({},dr(e))});function Ge(e,t,n){return o=>{const r=I(()=>o?.value),[l,a,i]=br(),{getPrefixCls:s,iconPrefixCls:c}=Ru(),u=I(()=>s()),d=I(()=>({theme:l.value,token:a.value,hashId:i.value,path:[\"Shared\",u.value]}));vp(d,()=>[{\"&\":gM(a.value)}]);const p=I(()=>({theme:l.value,token:a.value,hashId:i.value,path:[e,r.value,c.value]}));return[vp(p,()=>{const{token:m,flush:g}=yM(a.value),v=typeof n==\"function\"?n(m):n,y=h(h({},v),a.value[e]),b=`.${r.value}`,S=Le(m,{componentCls:b,prefixCls:r.value,iconCls:`.${c.value}`,antCls:`.${u.value}`},y),$=t(S,{hashId:i.value,prefixCls:r.value,rootPrefixCls:u.value,iconPrefixCls:c.value,overrideComponentToken:a.value[e]});return g(e,y),[hM(a.value,r.value),$]}),i]}}const _C=typeof CSSINJS_STATISTIC<\"u\";let gp=!0;function Le(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!_C)return h({},...t);gp=!1;const o={};return t.forEach(r=>{Object.keys(r).forEach(a=>{Object.defineProperty(o,a,{configurable:!0,enumerable:!0,get:()=>r[a]})})}),gp=!0,o}function bM(){}function yM(e){let t,n=e,o=bM;return _C&&(t=new Set,n=new Proxy(e,{get(r,l){return gp&&t.add(l),r[l]}}),o=(r,l)=>{Array.from(t)}),{token:n,keys:t,flush:o}}const SM=pC(pM),IC={token:Fu,hashed:!0},PC=Symbol(\"DesignTokenContext\"),hp=ee(),$M=e=>{Qe(PC,e),pe(e,()=>{hp.value=Be(e),qS(hp)},{immediate:!0,deep:!0})},CM=ne({props:{value:De()},setup(e,t){let{slots:n}=t;return $M(I(()=>e.value)),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}});function br(){const e=Je(PC,I(()=>hp.value||IC)),t=I(()=>`${xC}-${e.value.hashed||\"\"}`),n=I(()=>e.value.theme||SM),o=ME(n,I(()=>[Fu,e.value.token]),I(()=>({salt:t.value,override:h({override:e.value.token},e.value.components),formatToken:vM})));return[n,I(()=>o.value[0]),I(()=>e.value.hashed?o.value[1]:\"\")]}const tv=ne({compatConfig:{MODE:3},setup(){const[,e]=br(),t=I(()=>new mt(e.value.colorBgBase).toHsl().l<.5?{opacity:.65}:{});return()=>f(\"svg\",{style:t.value,width:\"184\",height:\"152\",viewBox:\"0 0 184 152\",xmlns:\"http://www.w3.org/2000/svg\"},[f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"g\",{transform:\"translate(24 31.67)\"},[f(\"ellipse\",{\"fill-opacity\":\".8\",fill:\"#F5F5F7\",cx:\"67.797\",cy:\"106.89\",rx:\"67.797\",ry:\"12.668\"},null),f(\"path\",{d:\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",fill:\"#AEB8C2\"},null),f(\"path\",{d:\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",fill:\"url(#linearGradient-1)\",transform:\"translate(13.56)\"},null),f(\"path\",{d:\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",fill:\"#F5F5F7\"},null),f(\"path\",{d:\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",fill:\"#DCE0E6\"},null)]),f(\"path\",{d:\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",fill:\"#DCE0E6\"},null),f(\"g\",{transform:\"translate(149.65 15.383)\",fill:\"#FFF\"},[f(\"ellipse\",{cx:\"20.654\",cy:\"3.167\",rx:\"2.849\",ry:\"2.815\"},null),f(\"path\",{d:\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"},null)])])])}});tv.PRESENTED_IMAGE_DEFAULT=!0;const TC=ne({compatConfig:{MODE:3},setup(){const[,e]=br(),t=I(()=>{const{colorFill:n,colorFillTertiary:o,colorFillQuaternary:r,colorBgContainer:l}=e.value;return{borderColor:new mt(n).onBackground(l).toHexString(),shadowColor:new mt(o).onBackground(l).toHexString(),contentColor:new mt(r).onBackground(l).toHexString()}});return()=>f(\"svg\",{width:\"64\",height:\"41\",viewBox:\"0 0 64 41\",xmlns:\"http://www.w3.org/2000/svg\"},[f(\"g\",{transform:\"translate(0 1)\",fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"ellipse\",{fill:t.value.shadowColor,cx:\"32\",cy:\"33\",rx:\"32\",ry:\"7\"},null),f(\"g\",{\"fill-rule\":\"nonzero\",stroke:t.value.borderColor},[f(\"path\",{d:\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"},null),f(\"path\",{d:\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",fill:t.value.contentColor},null)])])])}});TC.PRESENTED_IMAGE_SIMPLE=!0;const xM=e=>{const{componentCls:t,margin:n,marginXS:o,marginXL:r,fontSize:l,lineHeight:a}=e;return{[t]:{marginInline:o,fontSize:l,lineHeight:a,textAlign:\"center\",[`${t}-image`]:{height:e.emptyImgHeight,marginBottom:o,opacity:e.opacityImage,img:{height:\"100%\"},svg:{height:\"100%\",margin:\"auto\"}},[`${t}-footer`]:{marginTop:n},\"&-normal\":{marginBlock:r,color:e.colorTextDisabled,[`${t}-image`]:{height:e.emptyImgHeightMD}},\"&-small\":{marginBlock:o,color:e.colorTextDisabled,[`${t}-image`]:{height:e.emptyImgHeightSM}}}}},wM=Ge(\"Empty\",e=>{const{componentCls:t,controlHeightLG:n}=e,o=Le(e,{emptyImgCls:`${t}-img`,emptyImgHeight:n*2.5,emptyImgHeightMD:n,emptyImgHeightSM:n*.875});return[xM(o)]});var _M=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const IM=()=>({prefixCls:String,imageStyle:De(),image:Ct(),description:Ct()}),nv=ne({name:\"AEmpty\",compatConfig:{MODE:3},inheritAttrs:!1,props:IM(),setup(e,t){let{slots:n={},attrs:o}=t;const{direction:r,prefixCls:l}=Pe(\"empty\",e),[a,i]=wM(l);return()=>{var s,c;const u=l.value,d=h(h({},e),o),{image:p=((s=n.image)===null||s===void 0?void 0:s.call(n))||Ca(tv),description:m=((c=n.description)===null||c===void 0?void 0:c.call(n))||void 0,imageStyle:g,class:v=\"\"}=d,y=_M(d,[\"image\",\"description\",\"imageStyle\",\"class\"]),b=typeof p==\"function\"?p():p,S=typeof b==\"object\"&&\"type\"in b&&b.type.PRESENTED_IMAGE_SIMPLE;return a(f(_l,{componentName:\"Empty\",children:$=>{const w=typeof m<\"u\"?m:$.description,C=typeof w==\"string\"?w:\"empty\";let _=null;return typeof b==\"string\"?_=f(\"img\",{alt:C,src:b},null):_=b,f(\"div\",A({class:le(u,v,i.value,{[`${u}-normal`]:S,[`${u}-rtl`]:r.value===\"rtl\"})},y),[f(\"div\",{class:`${u}-image`,style:g},[_]),w&&f(\"p\",{class:`${u}-description`},[w]),n.default&&f(\"div\",{class:`${u}-footer`},[kt(n.default())])])}},null))}}});nv.PRESENTED_IMAGE_DEFAULT=()=>Ca(tv);nv.PRESENTED_IMAGE_SIMPLE=()=>Ca(TC);const uo=Dt(nv),ov=e=>{const{prefixCls:t}=Pe(\"empty\",e);return(o=>{switch(o){case\"Table\":case\"List\":return f(uo,{image:uo.PRESENTED_IMAGE_SIMPLE},null);case\"Select\":case\"TreeSelect\":case\"Cascader\":case\"Transfer\":case\"Mentions\":return f(uo,{image:uo.PRESENTED_IMAGE_SIMPLE,class:`${t.value}-small`},null);default:return f(uo,null,null)}})(e.componentName)};function PM(e){return f(ov,{componentName:e},null)}const OC=Symbol(\"SizeContextKey\"),EC=()=>Je(OC,J(void 0)),MC=e=>{const t=EC();return Qe(OC,I(()=>e.value||t.value)),e},Pe=(e,t)=>{const n=EC(),o=zn(),r=Je(Ym,h(h({},Q$),{renderEmpty:x=>Ca(ov,{componentName:x})})),l=I(()=>r.getPrefixCls(e,t.prefixCls)),a=I(()=>{var x,P;return(x=t.direction)!==null&&x!==void 0?x:(P=r.direction)===null||P===void 0?void 0:P.value}),i=I(()=>{var x;return(x=t.iconPrefixCls)!==null&&x!==void 0?x:r.iconPrefixCls.value}),s=I(()=>r.getPrefixCls()),c=I(()=>{var x;return(x=r.autoInsertSpaceInButton)===null||x===void 0?void 0:x.value}),u=r.renderEmpty,d=r.space,p=r.pageHeader,m=r.form,g=I(()=>{var x,P;return(x=t.getTargetContainer)!==null&&x!==void 0?x:(P=r.getTargetContainer)===null||P===void 0?void 0:P.value}),v=I(()=>{var x,P,O;return(P=(x=t.getContainer)!==null&&x!==void 0?x:t.getPopupContainer)!==null&&P!==void 0?P:(O=r.getPopupContainer)===null||O===void 0?void 0:O.value}),y=I(()=>{var x,P;return(x=t.dropdownMatchSelectWidth)!==null&&x!==void 0?x:(P=r.dropdownMatchSelectWidth)===null||P===void 0?void 0:P.value}),b=I(()=>{var x;return(t.virtual===void 0?((x=r.virtual)===null||x===void 0?void 0:x.value)!==!1:t.virtual!==!1)&&y.value!==!1}),S=I(()=>t.size||n.value),$=I(()=>{var x,P,O;return(x=t.autocomplete)!==null&&x!==void 0?x:(O=(P=r.input)===null||P===void 0?void 0:P.value)===null||O===void 0?void 0:O.autocomplete}),w=I(()=>{var x;return(x=t.disabled)!==null&&x!==void 0?x:o.value}),C=I(()=>{var x;return(x=t.csp)!==null&&x!==void 0?x:r.csp}),_=I(()=>{var x,P;return(x=t.wave)!==null&&x!==void 0?x:(P=r.wave)===null||P===void 0?void 0:P.value});return{configProvider:r,prefixCls:l,direction:a,size:S,getTargetContainer:g,getPopupContainer:v,space:d,pageHeader:p,form:m,autoInsertSpaceInButton:c,renderEmpty:u,virtual:b,dropdownMatchSelectWidth:y,rootPrefixCls:s,getPrefixCls:r.getPrefixCls,autocomplete:$,csp:C,iconPrefixCls:i,disabled:w,select:r.select,wave:_}};function ot(e,t){const n=h({},e);for(let o=0;o<t.length;o+=1){const r=t[o];delete n[r]}return n}const TM=e=>{const{componentCls:t}=e;return{[t]:{position:\"fixed\",zIndex:e.zIndexPopup}}},OM=Ge(\"Affix\",e=>{const t=Le(e,{zIndexPopup:e.zIndexBase+10});return[TM(t)]});function EM(){return typeof window<\"u\"?window:null}var Yl;(function(e){e[e.None=0]=\"None\",e[e.Prepare=1]=\"Prepare\"})(Yl||(Yl={}));const MM=()=>({offsetTop:Number,offsetBottom:Number,target:{type:Function,default:EM},prefixCls:String,onChange:Function,onTestUpdatePosition:Function}),AM=ne({compatConfig:{MODE:3},name:\"AAffix\",inheritAttrs:!1,props:MM(),setup(e,t){let{slots:n,emit:o,expose:r,attrs:l}=t;const a=ee(),i=ee(),s=vt({affixStyle:void 0,placeholderStyle:void 0,status:Yl.None,lastAffix:!1,prevTarget:null,timeout:null}),c=fn(),u=I(()=>e.offsetBottom===void 0&&e.offsetTop===void 0?0:e.offsetTop),d=I(()=>e.offsetBottom),p=()=>{const{status:$,lastAffix:w}=s,{target:C}=e;if($!==Yl.Prepare||!i.value||!a.value||!C)return;const _=C();if(!_)return;const x={status:Yl.None},P=as(a.value);if(P.top===0&&P.left===0&&P.width===0&&P.height===0)return;const O=as(_),M=Zh(P,O,u.value),E=Qh(P,O,d.value);if(!(P.top===0&&P.left===0&&P.width===0&&P.height===0)){if(M!==void 0){const R=`${P.width}px`,D=`${P.height}px`;x.affixStyle={position:\"fixed\",top:M,width:R,height:D},x.placeholderStyle={width:R,height:D}}else if(E!==void 0){const R=`${P.width}px`,D=`${P.height}px`;x.affixStyle={position:\"fixed\",bottom:E,width:R,height:D},x.placeholderStyle={width:R,height:D}}x.lastAffix=!!x.affixStyle,w!==x.lastAffix&&o(\"change\",x.lastAffix),h(s,x)}},m=()=>{h(s,{status:Yl.Prepare,affixStyle:void 0,placeholderStyle:void 0})},g=up(()=>{m()}),v=up(()=>{const{target:$}=e,{affixStyle:w}=s;if($&&w){const C=$();if(C&&a.value){const _=as(C),x=as(a.value),P=Zh(x,_,u.value),O=Qh(x,_,d.value);if(P!==void 0&&w.top===P||O!==void 0&&w.bottom===O)return}}m()});r({updatePosition:g,lazyUpdatePosition:v}),pe(()=>e.target,$=>{const w=$?.()||null;s.prevTarget!==w&&(e0(c),w&&(Jh(w,c),g()),s.prevTarget=w)}),pe(()=>[e.offsetTop,e.offsetBottom],g),Ne(()=>{const{target:$}=e;$&&(s.timeout=setTimeout(()=>{Jh($(),c),g()}))}),Hn(()=>{p()}),Mn(()=>{clearTimeout(s.timeout),e0(c),g.cancel(),v.cancel()});const{prefixCls:y}=Pe(\"affix\",e),[b,S]=OM(y);return()=>{var $;const{affixStyle:w,placeholderStyle:C,status:_}=s,x=le({[y.value]:w,[S.value]:!0}),P=ot(e,[\"prefixCls\",\"offsetTop\",\"offsetBottom\",\"target\",\"onChange\",\"onTestUpdatePosition\"]);return b(f(go,{onResize:g},{default:()=>[f(\"div\",A(A(A({},P),l),{},{ref:a,\"data-measure-status\":_}),[w&&f(\"div\",{style:C,\"aria-hidden\":\"true\"},null),f(\"div\",{class:x,ref:i,style:w},[($=n.default)===null||$===void 0?void 0:$.call(n)])])]}))}}}),AC=Dt(AM);function p0(e){return typeof e==\"object\"&&e!=null&&e.nodeType===1}function m0(e,t){return(!t||e!==\"hidden\")&&e!==\"visible\"&&e!==\"clip\"}function Vd(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return m0(n.overflowY,t)||m0(n.overflowX,t)||(function(o){var r=(function(l){if(!l.ownerDocument||!l.ownerDocument.defaultView)return null;try{return l.ownerDocument.defaultView.frameElement}catch{return null}})(o);return!!r&&(r.clientHeight<o.scrollHeight||r.clientWidth<o.scrollWidth)})(e)}return!1}function cs(e,t,n,o,r,l,a,i){return l<e&&a>t||l>e&&a<t?0:l<=e&&i<=n||a>=t&&i>=n?l-e-o:a>t&&i<n||l<e&&i>n?a-t+r:0}var v0=function(e,t){var n=window,o=t.scrollMode,r=t.block,l=t.inline,a=t.boundary,i=t.skipOverflowHiddenElements,s=typeof a==\"function\"?a:function(be){return be!==a};if(!p0(e))throw new TypeError(\"Invalid target\");for(var c,u,d=document.scrollingElement||document.documentElement,p=[],m=e;p0(m)&&s(m);){if((m=(u=(c=m).parentElement)==null?c.getRootNode().host||null:u)===d){p.push(m);break}m!=null&&m===document.body&&Vd(m)&&!Vd(document.documentElement)||m!=null&&Vd(m,i)&&p.push(m)}for(var g=n.visualViewport?n.visualViewport.width:innerWidth,v=n.visualViewport?n.visualViewport.height:innerHeight,y=window.scrollX||pageXOffset,b=window.scrollY||pageYOffset,S=e.getBoundingClientRect(),$=S.height,w=S.width,C=S.top,_=S.right,x=S.bottom,P=S.left,O=r===\"start\"||r===\"nearest\"?C:r===\"end\"?x:C+$/2,M=l===\"center\"?P+w/2:l===\"end\"?_:P,E=[],R=0;R<p.length;R++){var D=p[R],z=D.getBoundingClientRect(),T=z.height,k=z.width,B=z.top,L=z.right,N=z.bottom,F=z.left;if(o===\"if-needed\"&&C>=0&&P>=0&&x<=v&&_<=g&&C>=B&&x<=N&&P>=F&&_<=L)return E;var j=getComputedStyle(D),H=parseInt(j.borderLeftWidth,10),K=parseInt(j.borderTopWidth,10),G=parseInt(j.borderRightWidth,10),V=parseInt(j.borderBottomWidth,10),q=0,Z=0,oe=\"offsetWidth\"in D?D.offsetWidth-D.clientWidth-H-G:0,re=\"offsetHeight\"in D?D.offsetHeight-D.clientHeight-K-V:0,Y=\"offsetWidth\"in D?D.offsetWidth===0?0:k/D.offsetWidth:0,Q=\"offsetHeight\"in D?D.offsetHeight===0?0:T/D.offsetHeight:0;if(d===D)q=r===\"start\"?O:r===\"end\"?O-v:r===\"nearest\"?cs(b,b+v,v,K,V,b+O,b+O+$,$):O-v/2,Z=l===\"start\"?M:l===\"center\"?M-g/2:l===\"end\"?M-g:cs(y,y+g,g,H,G,y+M,y+M+w,w),q=Math.max(0,q+b),Z=Math.max(0,Z+y);else{q=r===\"start\"?O-B-K:r===\"end\"?O-N+V+re:r===\"nearest\"?cs(B,N,T,K,V+re,O,O+$,$):O-(B+T/2)+re/2,Z=l===\"start\"?M-F-H:l===\"center\"?M-(F+k/2)+oe/2:l===\"end\"?M-L+G+oe:cs(F,L,k,H,G+oe,M,M+w,w);var ce=D.scrollLeft,ue=D.scrollTop;O+=ue-(q=Math.max(0,Math.min(ue+q/Q,D.scrollHeight-T/Q+re))),M+=ce-(Z=Math.max(0,Math.min(ce+Z/Y,D.scrollWidth-k/Y+oe)))}E.push({el:D,top:q,left:Z})}return E};function DC(e){return e===Object(e)&&Object.keys(e).length!==0}function DM(e,t){t===void 0&&(t=\"auto\");var n=\"scrollBehavior\"in document.body.style;e.forEach(function(o){var r=o.el,l=o.top,a=o.left;r.scroll&&n?r.scroll({top:l,left:a,behavior:t}):(r.scrollTop=l,r.scrollLeft=a)})}function RM(e){return e===!1?{block:\"end\",inline:\"nearest\"}:DC(e)?e:{block:\"start\",inline:\"nearest\"}}function RC(e,t){var n=e.isConnected||e.ownerDocument.documentElement.contains(e);if(DC(t)&&typeof t.behavior==\"function\")return t.behavior(n?v0(e,t):[]);if(n){var o=RM(t);return DM(v0(e,o),o.behavior)}}function kM(e,t,n,o){const r=n-t;return e/=o/2,e<1?r/2*e*e*e+t:r/2*((e-=2)*e*e+2)+t}function bp(e){return e!=null&&e===e.window}function rv(e,t){var n,o;if(typeof window>\"u\")return 0;const r=\"scrollTop\";let l=0;return bp(e)?l=e.scrollY:e instanceof Document?l=e.documentElement[r]:(e instanceof HTMLElement||e)&&(l=e[r]),e&&!bp(e)&&typeof l!=\"number\"&&(l=(o=((n=e.ownerDocument)!==null&&n!==void 0?n:e).documentElement)===null||o===void 0?void 0:o[r]),l}function lv(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{getContainer:n=()=>window,callback:o,duration:r=450}=t,l=n(),a=rv(l),i=Date.now(),s=()=>{const u=Date.now()-i,d=kM(u>r?r:u,a,e,r);bp(l)?l.scrollTo(window.scrollX,d):l instanceof Document?l.documentElement.scrollTop=d:l.scrollTop=d,u<r?qe(s):typeof o==\"function\"&&o()};qe(s)}function us(){}const kC=Symbol(\"anchorContextKey\"),NM=e=>{Qe(kC,e)},BM=()=>Je(kC,{registerLink:us,unregisterLink:us,scrollTo:us,activeLink:I(()=>\"\"),handleClick:us,direction:I(()=>\"vertical\")}),LM=e=>{const{componentCls:t,holderOffsetBlock:n,motionDurationSlow:o,lineWidthBold:r,colorPrimary:l,lineType:a,colorSplit:i}=e;return{[`${t}-wrapper`]:{marginBlockStart:-n,paddingBlockStart:n,backgroundColor:\"transparent\",[t]:h(h({},Ue(e)),{position:\"relative\",paddingInlineStart:r,[`${t}-link`]:{paddingBlock:e.anchorPaddingBlock,paddingInline:`${e.anchorPaddingInline}px 0`,\"&-title\":h(h({},Gt),{position:\"relative\",display:\"block\",marginBlockEnd:e.anchorTitleBlock,color:e.colorText,transition:`all ${e.motionDurationSlow}`,\"&:only-child\":{marginBlockEnd:0}}),[`&-active > ${t}-link-title`]:{color:e.colorPrimary},[`${t}-link`]:{paddingBlock:e.anchorPaddingBlockSecondary}}}),[`&:not(${t}-wrapper-horizontal)`]:{[t]:{\"&::before\":{position:\"absolute\",left:{_skip_check_:!0,value:0},top:0,height:\"100%\",borderInlineStart:`${r}px ${a} ${i}`,content:'\" \"'},[`${t}-ink`]:{position:\"absolute\",left:{_skip_check_:!0,value:0},display:\"none\",transform:\"translateY(-50%)\",transition:`top ${o} ease-in-out`,width:r,backgroundColor:l,[`&${t}-ink-visible`]:{display:\"inline-block\"}}}},[`${t}-fixed ${t}-ink ${t}-ink`]:{display:\"none\"}}}},FM=e=>{const{componentCls:t,motionDurationSlow:n,lineWidthBold:o,colorPrimary:r}=e;return{[`${t}-wrapper-horizontal`]:{position:\"relative\",\"&::before\":{position:\"absolute\",left:{_skip_check_:!0,value:0},right:{_skip_check_:!0,value:0},bottom:0,borderBottom:`1px ${e.lineType} ${e.colorSplit}`,content:'\" \"'},[t]:{overflowX:\"scroll\",position:\"relative\",display:\"flex\",scrollbarWidth:\"none\",\"&::-webkit-scrollbar\":{display:\"none\"},[`${t}-link:first-of-type`]:{paddingInline:0},[`${t}-ink`]:{position:\"absolute\",bottom:0,transition:`left ${n} ease-in-out, width ${n} ease-in-out`,height:o,backgroundColor:r}}}}},zM=Ge(\"Anchor\",e=>{const{fontSize:t,fontSizeLG:n,padding:o,paddingXXS:r}=e,l=Le(e,{holderOffsetBlock:r,anchorPaddingBlock:r,anchorPaddingBlockSecondary:r/2,anchorPaddingInline:o,anchorTitleBlock:t/14*3,anchorBallSize:n/2});return[LM(l),FM(l)]}),HM=()=>({prefixCls:String,href:String,title:Ct(),target:String,customTitleProps:De()}),av=ne({compatConfig:{MODE:3},name:\"AAnchorLink\",inheritAttrs:!1,props:Ze(HM(),{href:\"#\"}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t,r=null;const{handleClick:l,scrollTo:a,unregisterLink:i,registerLink:s,activeLink:c}=BM(),{prefixCls:u}=Pe(\"anchor\",e),d=p=>{const{href:m}=e;l(p,{title:r,href:m}),a(m)};return pe(()=>e.href,(p,m)=>{it(()=>{i(m),s(p)})}),Ne(()=>{s(e.href)}),et(()=>{i(e.href)}),()=>{var p;const{href:m,target:g,title:v=n.title,customTitleProps:y={}}=e,b=u.value;r=typeof v==\"function\"?v(y):v;const S=c.value===m,$=le(`${b}-link`,{[`${b}-link-active`]:S},o.class),w=le(`${b}-link-title`,{[`${b}-link-title-active`]:S});return f(\"div\",A(A({},o),{},{class:$}),[f(\"a\",{class:w,href:m,title:typeof r==\"string\"?r:\"\",target:g,onClick:d},[n.customTitle?n.customTitle(y):r]),(p=n.default)===null||p===void 0?void 0:p.call(n)])}}});function jM(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function NC(e,t,n){return n&&jM(e,n),e}function js(){return(js=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function BC(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function LC(e,t){if(e==null)return{};var n,o,r={},l=Object.keys(e);for(o=0;o<l.length;o++)t.indexOf(n=l[o])>=0||(r[n]=e[n]);return r}function g0(e){return((t=e)!=null&&typeof t==\"object\"&&Array.isArray(t)===!1)==1&&Object.prototype.toString.call(e)===\"[object Object]\";var t}var FC=Object.prototype,zC=FC.toString,WM=FC.hasOwnProperty,HC=/^\\s*function (\\w+)/;function h0(e){var t,n=(t=e?.type)!==null&&t!==void 0?t:e;if(n){var o=n.toString().match(HC);return o?o[1]:\"\"}return\"\"}var Sl=function(e){var t,n;return g0(e)!==!1&&typeof(t=e.constructor)==\"function\"&&g0(n=t.prototype)!==!1&&n.hasOwnProperty(\"isPrototypeOf\")!==!1},VM=function(e){return e},qn=VM,bi=function(e,t){return WM.call(e,t)},KM=Number.isInteger||function(e){return typeof e==\"number\"&&isFinite(e)&&Math.floor(e)===e},ha=Array.isArray||function(e){return zC.call(e)===\"[object Array]\"},ba=function(e){return zC.call(e)===\"[object Function]\"},Lc=function(e){return Sl(e)&&bi(e,\"_vueTypes_name\")},jC=function(e){return Sl(e)&&(bi(e,\"type\")||[\"_vueTypes_name\",\"validator\",\"default\",\"required\"].some(function(t){return bi(e,t)}))};function iv(e,t){return Object.defineProperty(e.bind(t),\"__original\",{value:e})}function Pl(e,t,n){var o,r=!0,l=\"\";o=Sl(e)?e:{type:e};var a=Lc(o)?o._vueTypes_name+\" - \":\"\";if(jC(o)&&o.type!==null){if(o.type===void 0||o.type===!0||!o.required&&t===void 0)return r;ha(o.type)?(r=o.type.some(function(d){return Pl(d,t)===!0}),l=o.type.map(function(d){return h0(d)}).join(\" or \")):r=(l=h0(o))===\"Array\"?ha(t):l===\"Object\"?Sl(t):l===\"String\"||l===\"Number\"||l===\"Boolean\"||l===\"Function\"?(function(d){if(d==null)return\"\";var p=d.constructor.toString().match(HC);return p?p[1]:\"\"})(t)===l:t instanceof o.type}if(!r){var i=a+'value \"'+t+'\" should be of type \"'+l+'\"';return i}if(bi(o,\"validator\")&&ba(o.validator)){var s=qn,c=[];if(qn=function(d){c.push(d)},r=o.validator(t),qn=s,!r){var u=(c.length>1?\"* \":\"\")+c.join(`\n* `);return c.length=0,u}}return r}function to(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(r){return r!==void 0||this.default?ba(r)||Pl(this,r)===!0?(this.default=ha(r)?function(){return[].concat(r)}:Sl(r)?function(){return Object.assign({},r)}:r,this):(qn(this._vueTypes_name+' - invalid default value: \"'+r+'\"'),this):this}}}),o=n.validator;return ba(o)&&(n.validator=iv(o,n)),n}function Ko(e,t){var n=to(e,t);return Object.defineProperty(n,\"validate\",{value:function(o){return ba(this.validator)&&qn(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info:\n`+JSON.stringify(this)),this.validator=iv(o,this),this}})}function b0(e,t,n){var o,r,l=(o=t,r={},Object.getOwnPropertyNames(o).forEach(function(d){r[d]=Object.getOwnPropertyDescriptor(o,d)}),Object.defineProperties({},r));if(l._vueTypes_name=e,!Sl(n))return l;var a,i,s=n.validator,c=LC(n,[\"validator\"]);if(ba(s)){var u=l.validator;u&&(u=(i=(a=u).__original)!==null&&i!==void 0?i:a),l.validator=iv(u?function(d){return u.call(this,d)&&s.call(this,d)}:s,l)}return Object.assign(l,c)}function Hu(e){return e.replace(/^(?!\\s*$)/gm,\"  \")}var GM=function(){return Ko(\"any\",{})},XM=function(){return Ko(\"function\",{type:Function})},UM=function(){return Ko(\"boolean\",{type:Boolean})},YM=function(){return Ko(\"string\",{type:String})},qM=function(){return Ko(\"number\",{type:Number})},ZM=function(){return Ko(\"array\",{type:Array})},QM=function(){return Ko(\"object\",{type:Object})},JM=function(){return to(\"integer\",{type:Number,validator:function(e){return KM(e)}})},e3=function(){return to(\"symbol\",{validator:function(e){return typeof e==\"symbol\"}})};function t3(e,t){if(t===void 0&&(t=\"custom validation failed\"),typeof e!=\"function\")throw new TypeError(\"[VueTypes error]: You must provide a function as argument\");return to(e.name||\"<<anonymous function>>\",{validator:function(n){var o=e(n);return o||qn(this._vueTypes_name+\" - \"+t),o}})}function n3(e){if(!ha(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument.\");var t='oneOf - value should be one of \"'+e.join('\", \"')+'\".',n=e.reduce(function(o,r){if(r!=null){var l=r.constructor;o.indexOf(l)===-1&&o.push(l)}return o},[]);return to(\"oneOf\",{type:n.length>0?n:void 0,validator:function(o){var r=e.indexOf(o)!==-1;return r||qn(t),r}})}function o3(e){if(!ha(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument\");for(var t=!1,n=[],o=0;o<e.length;o+=1){var r=e[o];if(jC(r)){if(Lc(r)&&r._vueTypes_name===\"oneOf\"){n=n.concat(r.type);continue}if(ba(r.validator)&&(t=!0),r.type!==!0&&r.type){n=n.concat(r.type);continue}}n.push(r)}return n=n.filter(function(l,a){return n.indexOf(l)===a}),to(\"oneOfType\",t?{type:n,validator:function(l){var a=[],i=e.some(function(s){var c=Pl(Lc(s)&&s._vueTypes_name===\"oneOf\"?s.type||null:s,l);return typeof c==\"string\"&&a.push(c),c===!0});return i||qn(\"oneOfType - provided value does not match any of the \"+a.length+` passed-in validators:\n`+Hu(a.join(`\n`))),i}}:{type:n})}function r3(e){return to(\"arrayOf\",{type:Array,validator:function(t){var n,o=t.every(function(r){return(n=Pl(e,r))===!0});return o||qn(`arrayOf - value validation error:\n`+Hu(n)),o}})}function l3(e){return to(\"instanceOf\",{type:e})}function a3(e){return to(\"objectOf\",{type:Object,validator:function(t){var n,o=Object.keys(t).every(function(r){return(n=Pl(e,t[r]))===!0});return o||qn(`objectOf - value validation error:\n`+Hu(n)),o}})}function i3(e){var t=Object.keys(e),n=t.filter(function(r){var l;return!!(!((l=e[r])===null||l===void 0)&&l.required)}),o=to(\"shape\",{type:Object,validator:function(r){var l=this;if(!Sl(r))return!1;var a=Object.keys(r);if(n.length>0&&n.some(function(s){return a.indexOf(s)===-1})){var i=n.filter(function(s){return a.indexOf(s)===-1});return qn(i.length===1?'shape - required property \"'+i[0]+'\" is not defined.':'shape - required properties \"'+i.join('\", \"')+'\" are not defined.'),!1}return a.every(function(s){if(t.indexOf(s)===-1)return l._vueTypes_isLoose===!0||(qn('shape - shape definition does not include a \"'+s+'\" property. Allowed keys: \"'+t.join('\", \"')+'\".'),!1);var c=Pl(e[s],r[s]);return typeof c==\"string\"&&qn('shape - \"'+s+`\" property validation error:\n `+Hu(c)),c===!0})}});return Object.defineProperty(o,\"_vueTypes_isLoose\",{writable:!0,value:!1}),Object.defineProperty(o,\"loose\",{get:function(){return this._vueTypes_isLoose=!0,this}}),o}var Bo=(function(){function e(){}return e.extend=function(t){var n=this;if(ha(t))return t.forEach(function(d){return n.extend(d)}),this;var o=t.name,r=t.validate,l=r!==void 0&&r,a=t.getter,i=a!==void 0&&a,s=LC(t,[\"name\",\"validate\",\"getter\"]);if(bi(this,o))throw new TypeError('[VueTypes error]: Type \"'+o+'\" already defined');var c,u=s.type;return Lc(u)?(delete s.type,Object.defineProperty(this,o,i?{get:function(){return b0(o,u,s)}}:{value:function(){var d,p=b0(o,u,s);return p.validator&&(p.validator=(d=p.validator).bind.apply(d,[p].concat([].slice.call(arguments)))),p}})):(c=i?{get:function(){var d=Object.assign({},s);return l?Ko(o,d):to(o,d)},enumerable:!0}:{value:function(){var d,p,m=Object.assign({},s);return d=l?Ko(o,m):to(o,m),m.validator&&(d.validator=(p=m.validator).bind.apply(p,[d].concat([].slice.call(arguments)))),d},enumerable:!0},Object.defineProperty(this,o,c))},NC(e,null,[{key:\"any\",get:function(){return GM()}},{key:\"func\",get:function(){return XM().def(this.defaults.func)}},{key:\"bool\",get:function(){return UM().def(this.defaults.bool)}},{key:\"string\",get:function(){return YM().def(this.defaults.string)}},{key:\"number\",get:function(){return qM().def(this.defaults.number)}},{key:\"array\",get:function(){return ZM().def(this.defaults.array)}},{key:\"object\",get:function(){return QM().def(this.defaults.object)}},{key:\"integer\",get:function(){return JM().def(this.defaults.integer)}},{key:\"symbol\",get:function(){return e3()}}]),e})();function WC(e){var t;return e===void 0&&(e={func:function(){},bool:!0,string:\"\",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=(function(n){function o(){return n.apply(this,arguments)||this}return BC(o,n),NC(o,null,[{key:\"sensibleDefaults\",get:function(){return js({},this.defaults)},set:function(r){this.defaults=r!==!1?js({},r!==!0?r:e):{}}}]),o})(Bo)).defaults=js({},e),t}Bo.defaults={},Bo.custom=t3,Bo.oneOf=n3,Bo.instanceOf=l3,Bo.oneOfType=o3,Bo.arrayOf=r3,Bo.objectOf=a3,Bo.shape=i3,Bo.utils={validate:function(e,t){return Pl(t,e)===!0},toType:function(e,t,n){return n===void 0&&(n=!1),n?Ko(e,t):to(e,t)}};(function(e){function t(){return e.apply(this,arguments)||this}return BC(t,e),t})(WC());const W=WC({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});W.extend([{name:\"looseBool\",getter:!0,type:Boolean,default:void 0},{name:\"style\",getter:!0,type:[String,Object],default:void 0},{name:\"VueNode\",getter:!0,type:null}]);function VC(e){return e.default=void 0,e}const Ot=(e,t,n)=>{Zm(e,`[ant-design-vue: ${t}] ${n}`)};function s3(){return window}function y0(e,t){if(!e.getClientRects().length)return 0;const n=e.getBoundingClientRect();return n.width||n.height?t===window?(t=e.ownerDocument.documentElement,n.top-t.clientTop):n.top-t.getBoundingClientRect().top:n.top}const S0=/#([\\S ]+)$/,c3=()=>({prefixCls:String,offsetTop:Number,bounds:Number,affix:{type:Boolean,default:!0},showInkInFixed:{type:Boolean,default:!1},getContainer:Function,wrapperClass:String,wrapperStyle:{type:Object,default:void 0},getCurrentAnchor:Function,targetOffset:Number,items:ct(),direction:W.oneOf([\"vertical\",\"horizontal\"]).def(\"vertical\"),onChange:Function,onClick:Function}),ll=ne({compatConfig:{MODE:3},name:\"AAnchor\",inheritAttrs:!1,props:c3(),setup(e,t){let{emit:n,attrs:o,slots:r,expose:l}=t;const{prefixCls:a,getTargetContainer:i,direction:s}=Pe(\"anchor\",e),c=I(()=>{var x;return(x=e.direction)!==null&&x!==void 0?x:\"vertical\"}),u=J(null),d=J(),p=vt({links:[],scrollContainer:null,scrollEvent:null,animating:!1}),m=J(null),g=I(()=>{const{getContainer:x}=e;return x||i?.value||s3}),v=function(){let x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5;const O=[],M=g.value();return p.links.forEach(E=>{const R=S0.exec(E.toString());if(!R)return;const D=document.getElementById(R[1]);if(D){const z=y0(D,M);z<x+P&&O.push({link:E,top:z})}}),O.length?O.reduce((R,D)=>D.top>R.top?D:R).link:\"\"},y=x=>{const{getCurrentAnchor:P}=e;m.value!==x&&(m.value=typeof P==\"function\"?P(x):x,n(\"change\",x))},b=x=>{const{offsetTop:P,targetOffset:O}=e;y(x);const M=S0.exec(x);if(!M)return;const E=document.getElementById(M[1]);if(!E)return;const R=g.value(),D=rv(R),z=y0(E,R);let T=D+z;T-=O!==void 0?O:P||0,p.animating=!0,lv(T,{callback:()=>{p.animating=!1},getContainer:g.value})};l({scrollTo:b});const S=()=>{if(p.animating)return;const{offsetTop:x,bounds:P,targetOffset:O}=e,M=v(O!==void 0?O:x||0,P);y(M)},$=()=>{const x=d.value.querySelector(`.${a.value}-link-title-active`);if(x&&u.value){const P=c.value===\"horizontal\";u.value.style.top=P?\"\":`${x.offsetTop+x.clientHeight/2}px`,u.value.style.height=P?\"\":`${x.clientHeight}px`,u.value.style.left=P?`${x.offsetLeft}px`:\"\",u.value.style.width=P?`${x.clientWidth}px`:\"\",P&&RC(x,{scrollMode:\"if-needed\",block:\"nearest\"})}};NM({registerLink:x=>{p.links.includes(x)||p.links.push(x)},unregisterLink:x=>{const P=p.links.indexOf(x);P!==-1&&p.links.splice(P,1)},activeLink:m,scrollTo:b,handleClick:(x,P)=>{n(\"click\",x,P)},direction:c}),Ne(()=>{it(()=>{const x=g.value();p.scrollContainer=x,p.scrollEvent=Rt(p.scrollContainer,\"scroll\",S),S()})}),et(()=>{p.scrollEvent&&p.scrollEvent.remove()}),Hn(()=>{if(p.scrollEvent){const x=g.value();p.scrollContainer!==x&&(p.scrollContainer=x,p.scrollEvent.remove(),p.scrollEvent=Rt(p.scrollContainer,\"scroll\",S),S())}$()});const w=x=>Array.isArray(x)?x.map(P=>{const{children:O,key:M,href:E,target:R,class:D,style:z,title:T}=P;return f(av,{key:M,href:E,target:R,class:D,style:z,title:T,customTitleProps:P},{default:()=>[c.value===\"vertical\"?w(O):null],customTitle:r.customTitle})}):null,[C,_]=zM(a);return()=>{var x;const{offsetTop:P,affix:O,showInkInFixed:M}=e,E=a.value,R=le(`${E}-ink`,{[`${E}-ink-visible`]:m.value}),D=le(_.value,e.wrapperClass,`${E}-wrapper`,{[`${E}-wrapper-horizontal`]:c.value===\"horizontal\",[`${E}-rtl`]:s.value===\"rtl\"}),z=le(E,{[`${E}-fixed`]:!O&&!M}),T=h({maxHeight:P?`calc(100vh - ${P}px)`:\"100vh\"},e.wrapperStyle),k=f(\"div\",{class:D,style:T,ref:d},[f(\"div\",{class:z},[f(\"span\",{class:R,ref:u},null),Array.isArray(e.items)?w(e.items):(x=r.default)===null||x===void 0?void 0:x.call(r)])]);return C(O?f(AC,A(A({},o),{},{offsetTop:P,target:g.value}),{default:()=>[k]}):k)}}});ll.Link=av;ll.install=function(e){return e.component(ll.name,ll),e.component(ll.Link.name,ll.Link),e};function $0(e,t){const{key:n}=e;let o;return\"value\"in e&&({value:o}=e),n??(o!==void 0?o:`rc-index-key-${t}`)}function KC(e,t){const{label:n,value:o,options:r}=e||{};return{label:n||(t?\"children\":\"label\"),value:o||\"value\",options:r||\"options\"}}function u3(e){let{fieldNames:t,childrenAsData:n}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const o=[],{label:r,value:l,options:a}=KC(t,!1);function i(s,c){s.forEach(u=>{const d=u[r];if(c||!(a in u)){const p=u[l];o.push({key:$0(u,o.length),groupOption:c,data:u,label:d,value:p})}else{let p=d;p===void 0&&n&&(p=u.label),o.push({key:$0(u,o.length),group:!0,data:u,label:p}),i(u[a],!0)}})}return i(e,!1),o}function yp(e){const t=h({},e);return\"props\"in t||Object.defineProperty(t,\"props\",{get(){return t}}),t}function d3(e,t){if(!t||!t.length)return null;let n=!1;function o(l,a){let[i,...s]=a;if(!i)return[l];const c=l.split(i);return n=n||c.length>1,c.reduce((u,d)=>[...u,...o(d,s)],[]).filter(u=>u)}const r=o(e,t);return n?r:null}function f3(){return\"\"}function p3(e){return e?e.ownerDocument:window.document}function GC(){}const XC=()=>({action:W.oneOfType([W.string,W.arrayOf(W.string)]).def([]),showAction:W.any.def([]),hideAction:W.any.def([]),getPopupClassNameFromAlign:W.any.def(f3),onPopupVisibleChange:Function,afterPopupVisibleChange:W.func.def(GC),popup:W.any,arrow:W.bool.def(!0),popupStyle:{type:Object,default:void 0},prefixCls:W.string.def(\"rc-trigger-popup\"),popupClassName:W.string.def(\"\"),popupPlacement:String,builtinPlacements:W.object,popupTransitionName:String,popupAnimation:W.any,mouseEnterDelay:W.number.def(0),mouseLeaveDelay:W.number.def(.1),zIndex:Number,focusDelay:W.number.def(0),blurDelay:W.number.def(.15),getPopupContainer:Function,getDocument:W.func.def(p3),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:W.object.def(()=>({})),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function}),sv={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,arrow:{type:Boolean,default:!0},animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},m3=h(h({},sv),{mobile:{type:Object}}),v3=h(h({},sv),{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function cv(e){let{prefixCls:t,animation:n,transitionName:o}=e;return n?{name:`${t}-${n}`}:o?{name:o}:{}}function UC(e){const{prefixCls:t,visible:n,zIndex:o,mask:r,maskAnimation:l,maskTransitionName:a}=e;if(!r)return null;let i={};return(a||l)&&(i=cv({prefixCls:t,transitionName:a,animation:l})),f(cn,A({appear:!0},i),{default:()=>[xn(f(\"div\",{style:{zIndex:o},class:`${t}-mask`},null),[[TI(\"if\"),n]])]})}UC.displayName=\"Mask\";const g3=ne({compatConfig:{MODE:3},name:\"MobilePopupInner\",inheritAttrs:!1,props:m3,emits:[\"mouseenter\",\"mouseleave\",\"mousedown\",\"touchstart\",\"align\"],setup(e,t){let{expose:n,slots:o}=t;const r=J();return n({forceAlign:()=>{},getElement:()=>r.value}),()=>{var l;const{zIndex:a,visible:i,prefixCls:s,mobile:{popupClassName:c,popupStyle:u,popupMotion:d={},popupRender:p}={}}=e,m=h({zIndex:a},u);let g=$t((l=o.default)===null||l===void 0?void 0:l.call(o));g.length>1&&(g=f(\"div\",{class:`${s}-content`},[g])),p&&(g=p(g));const v=le(s,c);return f(cn,A({ref:r},d),{default:()=>[i?f(\"div\",{class:v,style:m},[g]):null]})}}});var h3=function(e,t,n,o){function r(l){return l instanceof n?l:new n(function(a){a(l)})}return new(n||(n=Promise))(function(l,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?l(u.value):r(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})};const C0=[\"measure\",\"align\",null,\"motion\"],b3=(e,t)=>{const n=ee(null),o=ee(),r=ee(!1);function l(s){r.value||(n.value=s)}function a(){qe.cancel(o.value)}function i(s){a(),o.value=qe(()=>{let c=n.value;switch(n.value){case\"align\":c=\"motion\";break;case\"motion\":c=\"stable\";break}l(c),s?.()})}return pe(e,()=>{l(\"measure\")},{immediate:!0,flush:\"post\"}),Ne(()=>{pe(n,()=>{switch(n.value){case\"measure\":t();break}n.value&&(o.value=qe(()=>h3(void 0,void 0,void 0,function*(){const s=C0.indexOf(n.value),c=C0[s+1];c&&s!==-1&&l(c)})))},{immediate:!0,flush:\"post\"})}),et(()=>{r.value=!0,a()}),[n,i]},y3=e=>{const t=ee({width:0,height:0});function n(r){t.value={width:r.offsetWidth,height:r.offsetHeight}}return[I(()=>{const r={};if(e.value){const{width:l,height:a}=t.value;e.value.indexOf(\"height\")!==-1&&a?r.height=`${a}px`:e.value.indexOf(\"minHeight\")!==-1&&a&&(r.minHeight=`${a}px`),e.value.indexOf(\"width\")!==-1&&l?r.width=`${l}px`:e.value.indexOf(\"minWidth\")!==-1&&l&&(r.minWidth=`${l}px`)}return r}),n]};function x0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function w0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?x0(Object(n),!0).forEach(function(o){S3(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x0(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function Sp(e){\"@babel/helpers - typeof\";return Sp=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},Sp(e)}function S3(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ja,$3={Webkit:\"-webkit-\",Moz:\"-moz-\",ms:\"-ms-\",O:\"-o-\"};function Fc(){if(ja!==void 0)return ja;ja=\"\";var e=document.createElement(\"p\").style,t=\"Transform\";for(var n in $3)n+t in e&&(ja=n);return ja}function YC(){return Fc()?\"\".concat(Fc(),\"TransitionProperty\"):\"transitionProperty\"}function ju(){return Fc()?\"\".concat(Fc(),\"Transform\"):\"transform\"}function _0(e,t){var n=YC();n&&(e.style[n]=t,n!==\"transitionProperty\"&&(e.style.transitionProperty=t))}function Kd(e,t){var n=ju();n&&(e.style[n]=t,n!==\"transform\"&&(e.style.transform=t))}function C3(e){return e.style.transitionProperty||e.style[YC()]}function x3(e){var t=window.getComputedStyle(e,null),n=t.getPropertyValue(\"transform\")||t.getPropertyValue(ju());if(n&&n!==\"none\"){var o=n.replace(/[^0-9\\-.,]/g,\"\").split(\",\");return{x:parseFloat(o[12]||o[4],0),y:parseFloat(o[13]||o[5],0)}}return{x:0,y:0}}var w3=/matrix\\((.*)\\)/,_3=/matrix3d\\((.*)\\)/;function I3(e,t){var n=window.getComputedStyle(e,null),o=n.getPropertyValue(\"transform\")||n.getPropertyValue(ju());if(o&&o!==\"none\"){var r,l=o.match(w3);if(l)l=l[1],r=l.split(\",\").map(function(i){return parseFloat(i,10)}),r[4]=t.x,r[5]=t.y,Kd(e,\"matrix(\".concat(r.join(\",\"),\")\"));else{var a=o.match(_3)[1];r=a.split(\",\").map(function(i){return parseFloat(i,10)}),r[12]=t.x,r[13]=t.y,Kd(e,\"matrix3d(\".concat(r.join(\",\"),\")\"))}}else Kd(e,\"translateX(\".concat(t.x,\"px) translateY(\").concat(t.y,\"px) translateZ(0)\"))}var P3=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,ki;function I0(e){var t=e.style.display;e.style.display=\"none\",e.offsetHeight,e.style.display=t}function ea(e,t,n){var o=n;if(Sp(t)===\"object\"){for(var r in t)t.hasOwnProperty(r)&&ea(e,r,t[r]);return}if(typeof o<\"u\"){typeof o==\"number\"&&(o=\"\".concat(o,\"px\")),e.style[t]=o;return}return ki(e,t)}function T3(e){var t,n,o,r=e.ownerDocument,l=r.body,a=r&&r.documentElement;return t=e.getBoundingClientRect(),n=Math.floor(t.left),o=Math.floor(t.top),n-=a.clientLeft||l.clientLeft||0,o-=a.clientTop||l.clientTop||0,{left:n,top:o}}function qC(e,t){var n=e[\"page\".concat(t?\"Y\":\"X\",\"Offset\")],o=\"scroll\".concat(t?\"Top\":\"Left\");if(typeof n!=\"number\"){var r=e.document;n=r.documentElement[o],typeof n!=\"number\"&&(n=r.body[o])}return n}function ZC(e){return qC(e)}function QC(e){return qC(e,!0)}function yi(e){var t=T3(e),n=e.ownerDocument,o=n.defaultView||n.parentWindow;return t.left+=ZC(o),t.top+=QC(o),t}function uv(e){return e!=null&&e==e.window}function JC(e){return uv(e)?e.document:e.nodeType===9?e:e.ownerDocument}function O3(e,t,n){var o=n,r=\"\",l=JC(e);return o=o||l.defaultView.getComputedStyle(e,null),o&&(r=o.getPropertyValue(t)||o[t]),r}var E3=new RegExp(\"^(\".concat(P3,\")(?!px)[a-z%]+$\"),\"i\"),M3=/^(top|right|bottom|left)$/,Gd=\"currentStyle\",Xd=\"runtimeStyle\",qr=\"left\",A3=\"px\";function D3(e,t){var n=e[Gd]&&e[Gd][t];if(E3.test(n)&&!M3.test(t)){var o=e.style,r=o[qr],l=e[Xd][qr];e[Xd][qr]=e[Gd][qr],o[qr]=t===\"fontSize\"?\"1em\":n||0,n=o.pixelLeft+A3,o[qr]=r,e[Xd][qr]=l}return n===\"\"?\"auto\":n}typeof window<\"u\"&&(ki=window.getComputedStyle?O3:D3);function ds(e,t){return e===\"left\"?t.useCssRight?\"right\":e:t.useCssBottom?\"bottom\":e}function P0(e){if(e===\"left\")return\"right\";if(e===\"right\")return\"left\";if(e===\"top\")return\"bottom\";if(e===\"bottom\")return\"top\"}function T0(e,t,n){ea(e,\"position\")===\"static\"&&(e.style.position=\"relative\");var o=-999,r=-999,l=ds(\"left\",n),a=ds(\"top\",n),i=P0(l),s=P0(a);l!==\"left\"&&(o=999),a!==\"top\"&&(r=999);var c=\"\",u=yi(e);(\"left\"in t||\"top\"in t)&&(c=C3(e)||\"\",_0(e,\"none\")),\"left\"in t&&(e.style[i]=\"\",e.style[l]=\"\".concat(o,\"px\")),\"top\"in t&&(e.style[s]=\"\",e.style[a]=\"\".concat(r,\"px\")),I0(e);var d=yi(e),p={};for(var m in t)if(t.hasOwnProperty(m)){var g=ds(m,n),v=m===\"left\"?o:r,y=u[m]-d[m];g===m?p[g]=v+y:p[g]=v-y}ea(e,p),I0(e),(\"left\"in t||\"top\"in t)&&_0(e,c);var b={};for(var S in t)if(t.hasOwnProperty(S)){var $=ds(S,n),w=t[S]-u[S];S===$?b[$]=p[$]+w:b[$]=p[$]-w}ea(e,b)}function R3(e,t){var n=yi(e),o=x3(e),r={x:o.x,y:o.y};\"left\"in t&&(r.x=o.x+t.left-n.left),\"top\"in t&&(r.y=o.y+t.top-n.top),I3(e,r)}function k3(e,t,n){if(n.ignoreShake){var o=yi(e),r=o.left.toFixed(0),l=o.top.toFixed(0),a=t.left.toFixed(0),i=t.top.toFixed(0);if(r===a&&l===i)return}n.useCssRight||n.useCssBottom?T0(e,t,n):n.useCssTransform&&ju()in document.body.style?R3(e,t):T0(e,t,n)}function dv(e,t){for(var n=0;n<e.length;n++)t(e[n])}function e1(e){return ki(e,\"boxSizing\")===\"border-box\"}var N3=[\"margin\",\"border\",\"padding\"],$p=-1,B3=2,Cp=1,L3=0;function F3(e,t,n){var o={},r=e.style,l;for(l in t)t.hasOwnProperty(l)&&(o[l]=r[l],r[l]=t[l]);n.call(e);for(l in t)t.hasOwnProperty(l)&&(r[l]=o[l])}function Ga(e,t,n){var o=0,r,l,a;for(l=0;l<t.length;l++)if(r=t[l],r)for(a=0;a<n.length;a++){var i=void 0;r===\"border\"?i=\"\".concat(r).concat(n[a],\"Width\"):i=r+n[a],o+=parseFloat(ki(e,i))||0}return o}var Ho={getParent:function(t){var n=t;do n.nodeType===11&&n.host?n=n.host:n=n.parentNode;while(n&&n.nodeType!==1&&n.nodeType!==9);return n}};dv([\"Width\",\"Height\"],function(e){Ho[\"doc\".concat(e)]=function(t){var n=t.document;return Math.max(n.documentElement[\"scroll\".concat(e)],n.body[\"scroll\".concat(e)],Ho[\"viewport\".concat(e)](n))},Ho[\"viewport\".concat(e)]=function(t){var n=\"client\".concat(e),o=t.document,r=o.body,l=o.documentElement,a=l[n];return o.compatMode===\"CSS1Compat\"&&a||r&&r[n]||a}});function O0(e,t,n){var o=n;if(uv(e))return t===\"width\"?Ho.viewportWidth(e):Ho.viewportHeight(e);if(e.nodeType===9)return t===\"width\"?Ho.docWidth(e):Ho.docHeight(e);var r=t===\"width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],l=Math.floor(t===\"width\"?e.getBoundingClientRect().width:e.getBoundingClientRect().height),a=e1(e),i=0;(l==null||l<=0)&&(l=void 0,i=ki(e,t),(i==null||Number(i)<0)&&(i=e.style[t]||0),i=Math.floor(parseFloat(i))||0),o===void 0&&(o=a?Cp:$p);var s=l!==void 0||a,c=l||i;return o===$p?s?c-Ga(e,[\"border\",\"padding\"],r):i:s?o===Cp?c:c+(o===B3?-Ga(e,[\"border\"],r):Ga(e,[\"margin\"],r)):i+Ga(e,N3.slice(o),r)}var z3={position:\"absolute\",visibility:\"hidden\",display:\"block\"};function E0(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var o,r=t[0];return r.offsetWidth!==0?o=O0.apply(void 0,t):F3(r,z3,function(){o=O0.apply(void 0,t)}),o}dv([\"width\",\"height\"],function(e){var t=e.charAt(0).toUpperCase()+e.slice(1);Ho[\"outer\".concat(t)]=function(o,r){return o&&E0(o,e,r?L3:Cp)};var n=e===\"width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"];Ho[e]=function(o,r){var l=r;if(l!==void 0){if(o){var a=e1(o);return a&&(l+=Ga(o,[\"padding\",\"border\"],n)),ea(o,e,l)}return}return o&&E0(o,e,$p)}});function t1(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var ut={getWindow:function(t){if(t&&t.document&&t.setTimeout)return t;var n=t.ownerDocument||t;return n.defaultView||n.parentWindow},getDocument:JC,offset:function(t,n,o){if(typeof n<\"u\")k3(t,n,o||{});else return yi(t)},isWindow:uv,each:dv,css:ea,clone:function(t){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);var r=t.overflow;if(r)for(n in t)t.hasOwnProperty(n)&&(o.overflow[n]=t.overflow[n]);return o},mix:t1,getWindowScrollLeft:function(t){return ZC(t)},getWindowScrollTop:function(t){return QC(t)},merge:function(){for(var t={},n=0;n<arguments.length;n++)ut.mix(t,n<0||arguments.length<=n?void 0:arguments[n]);return t},viewportWidth:0,viewportHeight:0};t1(ut,Ho);var Ud=ut.getParent;function xp(e){if(ut.isWindow(e)||e.nodeType===9)return null;var t=ut.getDocument(e),n=t.body,o,r=ut.css(e,\"position\"),l=r===\"fixed\"||r===\"absolute\";if(!l)return e.nodeName.toLowerCase()===\"html\"?null:Ud(e);for(o=Ud(e);o&&o!==n&&o.nodeType!==9;o=Ud(o))if(r=ut.css(o,\"position\"),r!==\"static\")return o;return null}var M0=ut.getParent;function H3(e){if(ut.isWindow(e)||e.nodeType===9)return!1;var t=ut.getDocument(e),n=t.body,o=null;for(o=M0(e);o&&o!==n&&o!==t;o=M0(o)){var r=ut.css(o,\"position\");if(r===\"fixed\")return!0}return!1}function fv(e,t){for(var n={left:0,right:1/0,top:0,bottom:1/0},o=xp(e),r=ut.getDocument(e),l=r.defaultView||r.parentWindow,a=r.body,i=r.documentElement;o;){if((navigator.userAgent.indexOf(\"MSIE\")===-1||o.clientWidth!==0)&&o!==a&&o!==i&&ut.css(o,\"overflow\")!==\"visible\"){var s=ut.offset(o);s.left+=o.clientLeft,s.top+=o.clientTop,n.top=Math.max(n.top,s.top),n.right=Math.min(n.right,s.left+o.clientWidth),n.bottom=Math.min(n.bottom,s.top+o.clientHeight),n.left=Math.max(n.left,s.left)}else if(o===a||o===i)break;o=xp(o)}var c=null;if(!ut.isWindow(e)&&e.nodeType!==9){c=e.style.position;var u=ut.css(e,\"position\");u===\"absolute\"&&(e.style.position=\"fixed\")}var d=ut.getWindowScrollLeft(l),p=ut.getWindowScrollTop(l),m=ut.viewportWidth(l),g=ut.viewportHeight(l),v=i.scrollWidth,y=i.scrollHeight,b=window.getComputedStyle(a);if(b.overflowX===\"hidden\"&&(v=l.innerWidth),b.overflowY===\"hidden\"&&(y=l.innerHeight),e.style&&(e.style.position=c),t||H3(e))n.left=Math.max(n.left,d),n.top=Math.max(n.top,p),n.right=Math.min(n.right,d+m),n.bottom=Math.min(n.bottom,p+g);else{var S=Math.max(v,d+m);n.right=Math.min(n.right,S);var $=Math.max(y,p+g);n.bottom=Math.min(n.bottom,$)}return n.top>=0&&n.left>=0&&n.bottom>n.top&&n.right>n.left?n:null}function j3(e,t,n,o){var r=ut.clone(e),l={width:t.width,height:t.height};return o.adjustX&&r.left<n.left&&(r.left=n.left),o.resizeWidth&&r.left>=n.left&&r.left+l.width>n.right&&(l.width-=r.left+l.width-n.right),o.adjustX&&r.left+l.width>n.right&&(r.left=Math.max(n.right-l.width,n.left)),o.adjustY&&r.top<n.top&&(r.top=n.top),o.resizeHeight&&r.top>=n.top&&r.top+l.height>n.bottom&&(l.height-=r.top+l.height-n.bottom),o.adjustY&&r.top+l.height>n.bottom&&(r.top=Math.max(n.bottom-l.height,n.top)),ut.mix(r,l)}function pv(e){var t,n,o;if(!ut.isWindow(e)&&e.nodeType!==9)t=ut.offset(e),n=ut.outerWidth(e),o=ut.outerHeight(e);else{var r=ut.getWindow(e);t={left:ut.getWindowScrollLeft(r),top:ut.getWindowScrollTop(r)},n=ut.viewportWidth(r),o=ut.viewportHeight(r)}return t.width=n,t.height=o,t}function A0(e,t){var n=t.charAt(0),o=t.charAt(1),r=e.width,l=e.height,a=e.left,i=e.top;return n===\"c\"?i+=l/2:n===\"b\"&&(i+=l),o===\"c\"?a+=r/2:o===\"r\"&&(a+=r),{left:a,top:i}}function fs(e,t,n,o,r){var l=A0(t,n[1]),a=A0(e,n[0]),i=[a.left-l.left,a.top-l.top];return{left:Math.round(e.left-i[0]+o[0]-r[0]),top:Math.round(e.top-i[1]+o[1]-r[1])}}function D0(e,t,n){return e.left<n.left||e.left+t.width>n.right}function R0(e,t,n){return e.top<n.top||e.top+t.height>n.bottom}function W3(e,t,n){return e.left>n.right||e.left+t.width<n.left}function V3(e,t,n){return e.top>n.bottom||e.top+t.height<n.top}function ps(e,t,n){var o=[];return ut.each(e,function(r){o.push(r.replace(t,function(l){return n[l]}))}),o}function ms(e,t){return e[t]=-e[t],e}function k0(e,t){var n;return/%$/.test(e)?n=parseInt(e.substring(0,e.length-1),10)/100*t:n=parseInt(e,10),n||0}function N0(e,t){e[0]=k0(e[0],t.width),e[1]=k0(e[1],t.height)}function n1(e,t,n,o){var r=n.points,l=n.offset||[0,0],a=n.targetOffset||[0,0],i=n.overflow,s=n.source||e;l=[].concat(l),a=[].concat(a),i=i||{};var c={},u=0,d=!!(i&&i.alwaysByViewport),p=fv(s,d),m=pv(s);N0(l,m),N0(a,t);var g=fs(m,t,r,l,a),v=ut.merge(m,g);if(p&&(i.adjustX||i.adjustY)&&o){if(i.adjustX&&D0(g,m,p)){var y=ps(r,/[lr]/gi,{l:\"r\",r:\"l\"}),b=ms(l,0),S=ms(a,0),$=fs(m,t,y,b,S);W3($,m,p)||(u=1,r=y,l=b,a=S)}if(i.adjustY&&R0(g,m,p)){var w=ps(r,/[tb]/gi,{t:\"b\",b:\"t\"}),C=ms(l,1),_=ms(a,1),x=fs(m,t,w,C,_);V3(x,m,p)||(u=1,r=w,l=C,a=_)}u&&(g=fs(m,t,r,l,a),ut.mix(v,g));var P=D0(g,m,p),O=R0(g,m,p);if(P||O){var M=r;P&&(M=ps(r,/[lr]/gi,{l:\"r\",r:\"l\"})),O&&(M=ps(r,/[tb]/gi,{t:\"b\",b:\"t\"})),r=M,l=n.offset||[0,0],a=n.targetOffset||[0,0]}c.adjustX=i.adjustX&&P,c.adjustY=i.adjustY&&O,(c.adjustX||c.adjustY)&&(v=j3(g,m,p,c))}return v.width!==m.width&&ut.css(s,\"width\",ut.width(s)+v.width-m.width),v.height!==m.height&&ut.css(s,\"height\",ut.height(s)+v.height-m.height),ut.offset(s,{left:v.left,top:v.top},{useCssRight:n.useCssRight,useCssBottom:n.useCssBottom,useCssTransform:n.useCssTransform,ignoreShake:n.ignoreShake}),{points:r,offset:l,targetOffset:a,overflow:c}}function K3(e,t){var n=fv(e,t),o=pv(e);return!n||o.left+o.width<=n.left||o.top+o.height<=n.top||o.left>=n.right||o.top>=n.bottom}function mv(e,t,n){var o=n.target||t,r=pv(o),l=!K3(o,n.overflow&&n.overflow.alwaysByViewport);return n1(e,r,n,l)}mv.__getOffsetParent=xp;mv.__getVisibleRectForElement=fv;function G3(e,t,n){var o,r,l=ut.getDocument(e),a=l.defaultView||l.parentWindow,i=ut.getWindowScrollLeft(a),s=ut.getWindowScrollTop(a),c=ut.viewportWidth(a),u=ut.viewportHeight(a);\"pageX\"in t?o=t.pageX:o=i+t.clientX,\"pageY\"in t?r=t.pageY:r=s+t.clientY;var d={left:o,top:r,width:0,height:0},p=o>=0&&o<=i+c&&r>=0&&r<=s+u,m=[n.points[0],\"cc\"];return n1(e,d,w0(w0({},n),{},{points:m}),p)}function dt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,r=e;if(Array.isArray(e)&&(r=kt(e)[0]),!r)return null;const l=Oo(r,t,o);return l.props=n?h(h({},l.props),t):l.props,eo(typeof l.props.class!=\"object\"),l}function X3(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(o=>dt(o,t,n))}function Qa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(Array.isArray(e))return e.map(r=>Qa(r,t,n,o));{if(!gn(e))return e;const r=dt(e,t,n,o);return Array.isArray(r.children)&&(r.children=Qa(r.children)),r}}function U3(e,t,n){Fr(Oo(e,h({},t)),n)}const o1=e=>(e||[]).some(t=>gn(t)?!(t.type===YS||t.type===Ve&&!o1(t.children)):!0)?e:null;function Wu(e,t,n,o){var r;const l=(r=e[t])===null||r===void 0?void 0:r.call(e,n);return o1(l)?l:o?.()}const Vu=e=>{if(!e)return!1;if(e.offsetParent)return!0;if(e.getBBox){const t=e.getBBox();if(t.width||t.height)return!0}if(e.getBoundingClientRect){const t=e.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function Y3(e,t){return e===t?!0:!e||!t?!1:\"pageX\"in t&&\"pageY\"in t?e.pageX===t.pageX&&e.pageY===t.pageY:\"clientX\"in t&&\"clientY\"in t?e.clientX===t.clientX&&e.clientY===t.clientY:!1}function q3(e,t){e!==document.activeElement&&Tr(t,e)&&typeof e.focus==\"function\"&&e.focus()}function B0(e,t){let n=null,o=null;function r(a){let[{target:i}]=a;if(!document.documentElement.contains(i))return;const{width:s,height:c}=i.getBoundingClientRect(),u=Math.floor(s),d=Math.floor(c);(n!==u||o!==d)&&Promise.resolve().then(()=>{t({width:u,height:d})}),n=u,o=d}const l=new Km(r);return e&&l.observe(e),()=>{l.disconnect()}}const Z3=(e,t)=>{let n=!1,o=null;function r(){clearTimeout(o)}function l(a){if(!n||a===!0){if(e()===!1)return;n=!0,r(),o=setTimeout(()=>{n=!1},t.value)}else r(),o=setTimeout(()=>{n=!1,l()},t.value)}return[l,()=>{n=!1,r()}]},Q3={align:Object,target:[Object,Function],onAlign:Function,monitorBufferTime:Number,monitorWindowResize:Boolean,disabled:Boolean};function L0(e){return typeof e!=\"function\"?null:e()}function F0(e){return typeof e!=\"object\"||!e?null:e}const J3=ne({compatConfig:{MODE:3},name:\"Align\",props:Q3,emits:[\"align\"],setup(e,t){let{expose:n,slots:o}=t;const r=J({}),l=J(),[a,i]=Z3(()=>{const{disabled:p,target:m,align:g,onAlign:v}=e;if(!p&&m&&l.value){const y=l.value;let b;const S=L0(m),$=F0(m);r.value.element=S,r.value.point=$,r.value.align=g;const{activeElement:w}=document;return S&&Vu(S)?b=mv(y,S,g):$&&(b=G3(y,$,g)),q3(w,y),v&&b&&v(y,b),!0}return!1},I(()=>e.monitorBufferTime)),s=J({cancel:()=>{}}),c=J({cancel:()=>{}}),u=()=>{const p=e.target,m=L0(p),g=F0(p);l.value!==c.value.element&&(c.value.cancel(),c.value.element=l.value,c.value.cancel=B0(l.value,a)),(r.value.element!==m||!Y3(r.value.point,g)||!Am(r.value.align,e.align))&&(a(),s.value.element!==m&&(s.value.cancel(),s.value.element=m,s.value.cancel=B0(m,a)))};Ne(()=>{it(()=>{u()})}),Hn(()=>{it(()=>{u()})}),pe(()=>e.disabled,p=>{p?i():a()},{immediate:!0,flush:\"post\"});const d=J(null);return pe(()=>e.monitorWindowResize,p=>{p?d.value||(d.value=Rt(window,\"resize\",a)):d.value&&(d.value.remove(),d.value=null)},{flush:\"post\"}),Mn(()=>{s.value.cancel(),c.value.cancel(),d.value&&d.value.remove(),i()}),n({forceAlign:()=>a(!0)}),()=>{const p=o?.default();return p?dt(p[0],{ref:l},!0,!0):null}}});hn(\"bottomLeft\",\"bottomRight\",\"topLeft\",\"topRight\");const vv=e=>e!==void 0&&(e===\"topLeft\"||e===\"topRight\")?\"slide-down\":\"slide-up\",bo=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return h(e?{name:e,appear:!0,enterFromClass:`${e}-enter ${e}-enter-prepare ${e}-enter-start`,enterActiveClass:`${e}-enter ${e}-enter-prepare`,enterToClass:`${e}-enter ${e}-enter-active`,leaveFromClass:` ${e}-leave`,leaveActiveClass:`${e}-leave ${e}-leave-active`,leaveToClass:`${e}-leave ${e}-leave-active`}:{css:!1},t)},Ku=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return h(e?{name:e,appear:!0,appearActiveClass:`${e}`,appearToClass:`${e}-appear ${e}-appear-active`,enterFromClass:`${e}-appear ${e}-enter ${e}-appear-prepare ${e}-enter-prepare`,enterActiveClass:`${e}`,enterToClass:`${e}-enter ${e}-appear ${e}-appear-active ${e}-enter-active`,leaveActiveClass:`${e} ${e}-leave`,leaveToClass:`${e}-leave-active`}:{css:!1},t)},_n=(e,t,n)=>n!==void 0?n:`${e}-${t}`,eA=ne({compatConfig:{MODE:3},name:\"PopupInner\",inheritAttrs:!1,props:sv,emits:[\"mouseenter\",\"mouseleave\",\"mousedown\",\"touchstart\",\"align\"],setup(e,t){let{expose:n,attrs:o,slots:r}=t;const l=ee(),a=ee(),i=ee(),[s,c]=y3(We(e,\"stretch\")),u=()=>{e.stretch&&c(e.getRootDomNode())},d=ee(!1);let p;pe(()=>e.visible,_=>{clearTimeout(p),_?p=setTimeout(()=>{d.value=e.visible}):d.value=!1},{immediate:!0});const[m,g]=b3(d,u),v=ee(),y=()=>e.point?e.point:e.getRootDomNode,b=()=>{var _;(_=l.value)===null||_===void 0||_.forceAlign()},S=(_,x)=>{var P;const O=e.getClassNameFromAlign(x),M=i.value;i.value!==O&&(i.value=O),m.value===\"align\"&&(M!==O?Promise.resolve().then(()=>{b()}):g(()=>{var E;(E=v.value)===null||E===void 0||E.call(v)}),(P=e.onAlign)===null||P===void 0||P.call(e,_,x))},$=I(()=>{const _=typeof e.animation==\"object\"?e.animation:cv(e);return[\"onAfterEnter\",\"onAfterLeave\"].forEach(x=>{const P=_[x];_[x]=O=>{g(),m.value=\"stable\",P?.(O)}}),_}),w=()=>new Promise(_=>{v.value=_});pe([$,m],()=>{!$.value&&m.value===\"motion\"&&g()},{immediate:!0}),n({forceAlign:b,getElement:()=>a.value.$el||a.value});const C=I(()=>{var _;return!(!((_=e.align)===null||_===void 0)&&_.points&&(m.value===\"align\"||m.value===\"stable\"))});return()=>{var _;const{zIndex:x,align:P,prefixCls:O,destroyPopupOnHide:M,onMouseenter:E,onMouseleave:R,onTouchstart:D=()=>{},onMousedown:z}=e,T=m.value,k=[h(h({},s.value),{zIndex:x,opacity:T===\"motion\"||T===\"stable\"||!d.value?null:0,pointerEvents:!d.value&&T!==\"stable\"?\"none\":null}),o.style];let B=$t((_=r.default)===null||_===void 0?void 0:_.call(r,{visible:e.visible}));B.length>1&&(B=f(\"div\",{class:`${O}-content`},[B]));const L=le(O,o.class,i.value,!e.arrow&&`${O}-arrow-hidden`),F=d.value||!e.visible?bo($.value.name,$.value):{};return f(cn,A(A({ref:a},F),{},{onBeforeEnter:w}),{default:()=>!M||e.visible?xn(f(J3,{target:y(),key:\"popup\",ref:l,monitorWindowResize:!0,disabled:C.value,align:P,onAlign:S},{default:()=>f(\"div\",{class:L,onMouseenter:E,onMouseleave:R,onMousedown:Uf(z,[\"capture\"]),[Yt?\"onTouchstartPassive\":\"onTouchstart\"]:Uf(D,[\"capture\"]),style:k},[B])}),[[On,d.value]]):null})}}}),tA=ne({compatConfig:{MODE:3},name:\"Popup\",inheritAttrs:!1,props:v3,setup(e,t){let{attrs:n,slots:o,expose:r}=t;const l=ee(!1),a=ee(!1),i=ee(),s=ee();return pe([()=>e.visible,()=>e.mobile],()=>{l.value=e.visible,e.visible&&e.mobile&&(a.value=!0)},{immediate:!0,flush:\"post\"}),r({forceAlign:()=>{var c;(c=i.value)===null||c===void 0||c.forceAlign()},getElement:()=>{var c;return(c=i.value)===null||c===void 0?void 0:c.getElement()}}),()=>{const c=h(h(h({},e),n),{visible:l.value}),u=a.value?f(g3,A(A({},c),{},{mobile:e.mobile,ref:i}),{default:o.default}):f(eA,A(A({},c),{},{ref:i}),{default:o.default});return f(\"div\",{ref:s},[f(UC,c,null),u])}}});function nA(e,t,n){return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}function z0(e,t,n){const o=e[t]||{};return h(h({},o),n)}function oA(e,t,n,o){const{points:r}=n,l=Object.keys(e);for(let a=0;a<l.length;a+=1){const i=l[a];if(nA(e[i].points,r,o))return`${t}-placement-${i}`}return\"\"}const Tl={methods:{setState(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=typeof e==\"function\"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){const o=this.getDerivedStateFromProps(V$(this),h(h({},this.$data),n));if(o===null)return;n=h(h({},n),o||{})}h(this.$data,n),this._.isMounted&&this.$forceUpdate(),it(()=>{t&&t()})},__emit(){const e=[].slice.call(arguments,0);let t=e[0];t=`on${t[0].toUpperCase()}${t.substring(1)}`;const n=this.$props[t]||this.$attrs[t];if(e.length&&n)if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)n[o](...e.slice(1));else n(...e.slice(1))}}},r1=Symbol(\"PortalContextKey\"),gv=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};Qe(r1,{inTriggerContext:t.inTriggerContext,shouldRender:I(()=>{const{sPopupVisible:n,popupRef:o,forceRender:r,autoDestroy:l}=e||{};let a=!1;return(n||o||r)&&(a=!0),!n&&l&&(a=!1),a})})},rA=()=>{gv({},{inTriggerContext:!1});const e=Je(r1,{shouldRender:I(()=>!1),inTriggerContext:!1});return{shouldRender:I(()=>e.shouldRender.value||e.inTriggerContext===!1)}},l1=ne({compatConfig:{MODE:3},name:\"Portal\",inheritAttrs:!1,props:{getContainer:W.func.isRequired,didUpdate:Function},setup(e,t){let{slots:n}=t,o=!0,r;const{shouldRender:l}=rA();function a(){l.value&&(r=e.getContainer())}wm(()=>{o=!1,a()}),Ne(()=>{r||a()});const i=pe(l,()=>{l.value&&!r&&(r=e.getContainer()),r&&i()});return Hn(()=>{it(()=>{var s;l.value&&((s=e.didUpdate)===null||s===void 0||s.call(e,e))})}),()=>{var s;return l.value?o?(s=n.default)===null||s===void 0?void 0:s.call(n):r?f(_m,{to:r},n):null:null}}});let Yd;function zc(e){if(typeof document>\"u\")return 0;if(Yd===void 0){const t=document.createElement(\"div\");t.style.width=\"100%\",t.style.height=\"200px\";const n=document.createElement(\"div\"),o=n.style;o.position=\"absolute\",o.top=\"0\",o.left=\"0\",o.pointerEvents=\"none\",o.visibility=\"hidden\",o.width=\"200px\",o.height=\"150px\",o.overflow=\"hidden\",n.appendChild(t),document.body.appendChild(n);const r=t.offsetWidth;n.style.overflow=\"scroll\";let l=t.offsetWidth;r===l&&(l=n.clientWidth),document.body.removeChild(n),Yd=r-l}return Yd}function H0(e){const t=e.match(/^(.*)px$/),n=Number(t?.[1]);return Number.isNaN(n)?zc():n}function lA(e){if(typeof document>\"u\"||!e||!(e instanceof Element))return{width:0,height:0};const{width:t,height:n}=getComputedStyle(e,\"::-webkit-scrollbar\");return{width:H0(t),height:H0(n)}}const aA=`vc-util-locker-${Date.now()}`;let j0=0;function iA(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}function sA(e){const t=I(()=>!!e&&!!e.value);j0+=1;const n=`${aA}_${j0}`;ze(o=>{if(wn()){if(t.value){const r=zc(),l=iA();vi(`\nhtml body {\n  overflow-y: hidden;\n  ${l?`width: calc(100% - ${r}px);`:\"\"}\n}`,n)}else kc(n);o(()=>{kc(n)})}},{flush:\"post\"})}let Zr=0;const Ws=wn(),W0=e=>{if(!Ws)return null;if(e){if(typeof e==\"string\")return document.querySelectorAll(e)[0];if(typeof e==\"function\")return e();if(typeof e==\"object\"&&e instanceof window.HTMLElement)return e}return document.body},Ni=ne({compatConfig:{MODE:3},name:\"PortalWrapper\",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:W.any,visible:{type:Boolean,default:void 0},autoLock:ye(),didUpdate:Function},setup(e,t){let{slots:n}=t;const o=ee(),r=ee(),l=ee(),a=ee(1),i=wn()&&document.createElement(\"div\"),s=()=>{var m,g;o.value===i&&((g=(m=o.value)===null||m===void 0?void 0:m.parentNode)===null||g===void 0||g.removeChild(o.value)),o.value=null};let c=null;const u=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)||o.value&&!o.value.parentNode?(c=W0(e.getContainer),c?(c.appendChild(o.value),!0):!1):!0},d=()=>Ws?(o.value||(o.value=i,u(!0)),p(),o.value):null,p=()=>{const{wrapperClassName:m}=e;o.value&&m&&m!==o.value.className&&(o.value.className=m)};return Hn(()=>{p(),u()}),sA(I(()=>e.autoLock&&e.visible&&wn()&&(o.value===document.body||o.value===i))),Ne(()=>{let m=!1;pe([()=>e.visible,()=>e.getContainer],(g,v)=>{let[y,b]=g,[S,$]=v;Ws&&(c=W0(e.getContainer),c===document.body&&(y&&!S?Zr+=1:m&&(Zr-=1))),m&&(typeof b==\"function\"&&typeof $==\"function\"?b.toString()!==$.toString():b!==$)&&s(),m=!0},{immediate:!0,flush:\"post\"}),it(()=>{u()||(l.value=qe(()=>{a.value+=1}))})}),et(()=>{const{visible:m}=e;Ws&&c===document.body&&(Zr=m&&Zr?Zr-1:Zr),s(),qe.cancel(l.value)}),()=>{const{forceRender:m,visible:g}=e;let v=null;const y={getOpenCount:()=>Zr,getContainer:d};return a.value&&(m||g||r.value)&&(v=f(l1,{getContainer:d,ref:r,didUpdate:e.didUpdate},{default:()=>{var b;return(b=n.default)===null||b===void 0?void 0:b.call(n,y)}})),v}}}),cA=[\"onClick\",\"onMousedown\",\"onTouchstart\",\"onMouseenter\",\"onMouseleave\",\"onFocus\",\"onBlur\",\"onContextmenu\"],Ol=ne({compatConfig:{MODE:3},name:\"Trigger\",mixins:[Tl],inheritAttrs:!1,props:XC(),setup(e){const t=I(()=>{const{popupPlacement:r,popupAlign:l,builtinPlacements:a}=e;return r&&a?z0(a,r,l):l}),n=ee(null),o=r=>{n.value=r};return{vcTriggerContext:Je(\"vcTriggerContext\",{}),popupRef:n,setPopupRef:o,triggerRef:ee(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data(){const e=this.$props;let t;return this.popupVisible!==void 0?t=!!e.popupVisible:t=!!e.defaultPopupVisible,cA.forEach(n=>{this[`fire${n}`]=o=>{this.fireEvents(n,o)}}),{prevPopupVisible:t,sPopupVisible:t,point:null}},watch:{popupVisible(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created(){Qe(\"vcTriggerContext\",{onPopupMouseDown:this.onPopupMouseDown,onPopupMouseenter:this.onPopupMouseenter,onPopupMouseleave:this.onPopupMouseleave}),gv(this)},deactivated(){this.setPopupVisible(!1)},mounted(){this.$nextTick(()=>{this.updatedCal()})},updated(){this.$nextTick(()=>{this.updatedCal()})},beforeUnmount(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),qe.cancel(this.attachId)},methods:{updatedCal(){const e=this.$props;if(this.$data.sPopupVisible){let n;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(n=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=Rt(n,\"mousedown\",this.onDocumentClick)),this.touchOutsideHandler||(n=n||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=Rt(n,\"touchstart\",this.onDocumentClick,Yt?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(n=n||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=Rt(n,\"scroll\",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=Rt(window,\"blur\",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter(e){const{mouseEnterDelay:t}=this.$props;this.fireEvents(\"onMouseenter\",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove(e){this.fireEvents(\"onMousemove\",e),this.setPoint(e)},onMouseleave(e){this.fireEvents(\"onMouseleave\",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter(){const{vcTriggerContext:e={}}=this;e.onPopupMouseenter&&e.onPopupMouseenter(),this.clearDelayTimer()},onPopupMouseleave(e){var t;if(e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&Tr((t=this.popupRef)===null||t===void 0?void 0:t.getElement(),e.relatedTarget))return;this.isMouseLeaveToHide()&&this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay);const{vcTriggerContext:n={}}=this;n.onPopupMouseleave&&n.onPopupMouseleave(e)},onFocus(e){this.fireEvents(\"onFocus\",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown(e){this.fireEvents(\"onMousedown\",e),this.preClickTime=Date.now()},onTouchstart(e){this.fireEvents(\"onTouchstart\",e),this.preTouchTime=Date.now()},onBlur(e){Tr(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents(\"onBlur\",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu(e){e.preventDefault(),this.fireEvents(\"onContextmenu\",e),this.setPopupVisible(!0,e)},onContextmenuClose(){this.isContextmenuToShow()&&this.close()},onClick(e){if(this.fireEvents(\"onClick\",e),this.focusTime){let n;if(this.preClickTime&&this.preTouchTime?n=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?n=this.preClickTime:this.preTouchTime&&(n=this.preTouchTime),Math.abs(n-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();const t=!this.$data.sPopupVisible;(this.isClickToHide()&&!t||t&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown(){const{vcTriggerContext:e={}}=this;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(()=>{this.hasPopupMouseDown=!1},0),e.onPopupMouseDown&&e.onPopupMouseDown(...arguments)},onDocumentClick(e){if(this.$props.mask&&!this.$props.maskClosable)return;const t=e.target,n=this.getRootDomNode(),o=this.getPopupDomNode();(!Tr(n,t)||this.isContextMenuOnly())&&!Tr(o,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)},getPopupDomNode(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode(){var e,t,n,o;const{getTriggerDOMNode:r}=this.$props;if(r){const l=((t=(e=this.triggerRef)===null||e===void 0?void 0:e.$el)===null||t===void 0?void 0:t.nodeName)===\"#comment\"?null:Tn(this.triggerRef);return Tn(r(l))}try{const l=((o=(n=this.triggerRef)===null||n===void 0?void 0:n.$el)===null||o===void 0?void 0:o.nodeName)===\"#comment\"?null:Tn(this.triggerRef);if(l)return l}catch{}return Tn(this)},handleGetPopupClassFromAlign(e){const t=[],n=this.$props,{popupPlacement:o,builtinPlacements:r,prefixCls:l,alignPoint:a,getPopupClassNameFromAlign:i}=n;return o&&r&&t.push(oA(r,l,e,a)),i&&t.push(i(e)),t.join(\" \")},getPopupAlign(){const e=this.$props,{popupPlacement:t,popupAlign:n,builtinPlacements:o}=e;return t&&o?z0(o,t,n):n},getComponent(){const e={};this.isMouseEnterToShow()&&(e.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(e.onMouseleave=this.onPopupMouseleave),e.onMousedown=this.onPopupMouseDown,e[Yt?\"onTouchstartPassive\":\"onTouchstart\"]=this.onPopupMouseDown;const{handleGetPopupClassFromAlign:t,getRootDomNode:n,$attrs:o}=this,{prefixCls:r,destroyPopupOnHide:l,popupClassName:a,popupAnimation:i,popupTransitionName:s,popupStyle:c,mask:u,maskAnimation:d,maskTransitionName:p,zIndex:m,stretch:g,alignPoint:v,mobile:y,arrow:b,forceRender:S}=this.$props,{sPopupVisible:$,point:w}=this.$data,C=h(h({prefixCls:r,arrow:b,destroyPopupOnHide:l,visible:$,point:v?w:null,align:this.align,animation:i,getClassNameFromAlign:t,stretch:g,getRootDomNode:n,mask:u,zIndex:m,transitionName:s,maskAnimation:d,maskTransitionName:p,class:a,style:c,onAlign:o.onPopupAlign||GC},e),{ref:this.setPopupRef,mobile:y,forceRender:S});return f(tA,C,{default:this.$slots.popup||(()=>K$(this,\"popup\"))})},attachParent(e){qe.cancel(this.attachId);const{getPopupContainer:t,getDocument:n}=this.$props,o=this.getRootDomNode();let r;t?(o||t.length===0)&&(r=t(o)):r=n(this.getRootDomNode()).body,r?r.appendChild(e):this.attachId=qe(()=>{this.attachParent(e)})},getContainer(){const{$props:e}=this,{getDocument:t}=e,n=t(this.getRootDomNode()).createElement(\"div\");return n.style.position=\"absolute\",n.style.top=\"0\",n.style.left=\"0\",n.style.width=\"100%\",this.attachParent(n),n},setPopupVisible(e,t){const{alignPoint:n,sPopupVisible:o,onPopupVisibleChange:r}=this;this.clearDelayTimer(),o!==e&&(nr(this,\"popupVisible\")||this.setState({sPopupVisible:e,prevPopupVisible:o}),r&&r(e)),n&&t&&e&&this.setPoint(t)},setPoint(e){const{alignPoint:t}=this.$props;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible(e,t,n){const o=t*1e3;if(this.clearDelayTimer(),o){const r=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=setTimeout(()=>{this.setPopupVisible(e,r),this.clearDelayTimer()},o)}else this.setPopupVisible(e,n)},clearDelayTimer(){this.delayTimer&&(clearTimeout(this.delayTimer),this.delayTimer=null)},clearOutsideHandler(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains(e){let t=()=>{};const n=Yh(this);return this.childOriginEvents[e]&&n[e]?this[`fire${e}`]:(t=this.childOriginEvents[e]||n[e]||t,t)},isClickToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"click\")!==-1||t.indexOf(\"click\")!==-1},isContextMenuOnly(){const{action:e}=this.$props;return e===\"contextmenu\"||e.length===1&&e[0]===\"contextmenu\"},isContextmenuToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"contextmenu\")!==-1||t.indexOf(\"contextmenu\")!==-1},isClickToHide(){const{action:e,hideAction:t}=this.$props;return e.indexOf(\"click\")!==-1||t.indexOf(\"click\")!==-1},isMouseEnterToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"hover\")!==-1||t.indexOf(\"mouseenter\")!==-1},isMouseLeaveToHide(){const{action:e,hideAction:t}=this.$props;return e.indexOf(\"hover\")!==-1||t.indexOf(\"mouseleave\")!==-1},isFocusToShow(){const{action:e,showAction:t}=this.$props;return e.indexOf(\"focus\")!==-1||t.indexOf(\"focus\")!==-1},isBlurToHide(){const{action:e,hideAction:t}=this.$props;return e.indexOf(\"focus\")!==-1||t.indexOf(\"blur\")!==-1},forcePopupAlign(){var e;this.$data.sPopupVisible&&((e=this.popupRef)===null||e===void 0||e.forceAlign())},fireEvents(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);const n=this.$props[e]||this.$attrs[e];n&&n(t)},close(){this.setPopupVisible(!1)}},render(){const{$attrs:e}=this,t=kt(Du(this)),{alignPoint:n,getPopupContainer:o}=this.$props,r=t[0];this.childOriginEvents=Yh(r);const l={key:\"trigger\"};this.isContextmenuToShow()?l.onContextmenu=this.onContextmenu:l.onContextmenu=this.createTwoChains(\"onContextmenu\"),this.isClickToHide()||this.isClickToShow()?(l.onClick=this.onClick,l.onMousedown=this.onMousedown,l[Yt?\"onTouchstartPassive\":\"onTouchstart\"]=this.onTouchstart):(l.onClick=this.createTwoChains(\"onClick\"),l.onMousedown=this.createTwoChains(\"onMousedown\"),l[Yt?\"onTouchstartPassive\":\"onTouchstart\"]=this.createTwoChains(\"onTouchstart\")),this.isMouseEnterToShow()?(l.onMouseenter=this.onMouseenter,n&&(l.onMousemove=this.onMouseMove)):l.onMouseenter=this.createTwoChains(\"onMouseenter\"),this.isMouseLeaveToHide()?l.onMouseleave=this.onMouseleave:l.onMouseleave=this.createTwoChains(\"onMouseleave\"),this.isFocusToShow()||this.isBlurToHide()?(l.onFocus=this.onFocus,l.onBlur=this.onBlur):(l.onFocus=this.createTwoChains(\"onFocus\"),l.onBlur=c=>{c&&(!c.relatedTarget||!Tr(c.target,c.relatedTarget))&&this.createTwoChains(\"onBlur\")(c)});const a=le(r&&r.props&&r.props.class,e.class);a&&(l.class=a);const i=dt(r,h(h({},l),{ref:\"triggerRef\"}),!0,!0),s=f(Ni,{key:\"portal\",getContainer:o&&(()=>o(this.getRootDomNode())),didUpdate:this.handlePortalUpdate,visible:this.$data.sPopupVisible},{default:this.getComponent});return f(Ve,null,[i,s])}});var uA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const dA=e=>{const t=e===!0?0:1;return{bottomLeft:{points:[\"tl\",\"bl\"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:[\"tr\",\"br\"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:[\"bl\",\"tl\"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:[\"br\",\"tr\"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},fA=ne({name:\"SelectTrigger\",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:W.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:W.oneOfType([Number,Boolean]).def(!0),popupElement:W.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function,onPopupFocusin:Function,onPopupFocusout:Function},setup(e,t){let{slots:n,attrs:o,expose:r}=t;const l=I(()=>{const{dropdownMatchSelectWidth:i}=e;return dA(i)}),a=J();return r({getPopupElement:()=>a.value}),()=>{const i=h(h({},e),o),{empty:s=!1}=i,c=uA(i,[\"empty\"]),{visible:u,dropdownAlign:d,prefixCls:p,popupElement:m,dropdownClassName:g,dropdownStyle:v,direction:y=\"ltr\",placement:b,dropdownMatchSelectWidth:S,containerWidth:$,dropdownRender:w,animation:C,transitionName:_,getPopupContainer:x,getTriggerDOMNode:P,onPopupVisibleChange:O,onPopupMouseEnter:M,onPopupFocusin:E,onPopupFocusout:R}=c,D=`${p}-dropdown`;let z=m;w&&(z=w({menuNode:m,props:e}));const T=C?`${D}-${C}`:_,k=h({minWidth:`${$}px`},v);return typeof S==\"number\"?k.width=`${S}px`:S&&(k.width=`${$}px`),f(Ol,A(A({},e),{},{showAction:O?[\"click\"]:[],hideAction:O?[\"click\"]:[],popupPlacement:b||(y===\"rtl\"?\"bottomRight\":\"bottomLeft\"),builtinPlacements:l.value,prefixCls:D,popupTransitionName:T,popupAlign:d,popupVisible:u,getPopupContainer:x,popupClassName:le(g,{[`${D}-empty`]:s}),popupStyle:k,getTriggerDOMNode:P,onPopupVisibleChange:O}),{default:n.default,popup:()=>f(\"div\",{ref:a,onMouseenter:M,onFocusin:E,onFocusout:R},[z])})}}}),we={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,N:78,P:80,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,SEMICOLON:186,EQUALS:187,WIN_KEY:224},$l=(e,t)=>{let{slots:n}=t;var o;const{class:r,customizeIcon:l,customizeIconProps:a,onMousedown:i,onClick:s}=e;let c;return typeof l==\"function\"?c=l(a):c=gn(l)?Oo(l):l,f(\"span\",{class:r,onMousedown:u=>{u.preventDefault(),i&&i(u)},style:{userSelect:\"none\",WebkitUserSelect:\"none\"},unselectable:\"on\",onClick:s,\"aria-hidden\":!0},[c!==void 0?c:f(\"span\",{class:r.split(/\\s+/).map(u=>`${u}-icon`)},[(o=n.default)===null||o===void 0?void 0:o.call(n)])])};$l.inheritAttrs=!1;$l.displayName=\"TransBtn\";$l.props={class:String,customizeIcon:W.any,customizeIconProps:W.any,onMousedown:Function,onClick:Function};var pA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const mA=ne({compatConfig:{MODE:3},props:{disabled:W.looseBool,type:W.string,value:W.any,tag:{type:String,default:\"input\"},size:W.string,onChange:Function,onInput:Function,onBlur:Function,onFocus:Function,onKeydown:Function,onCompositionstart:Function,onCompositionend:Function,onKeyup:Function,onPaste:Function,onMousedown:Function},emits:[\"change\",\"input\",\"blur\",\"keydown\",\"focus\",\"compositionstart\",\"compositionend\",\"keyup\",\"paste\",\"mousedown\"],setup(e,t){let{expose:n}=t;const o=ee(null);return n({focus:()=>{o.value&&o.value.focus()},blur:()=>{o.value&&o.value.blur()},input:o,setSelectionRange:(s,c,u)=>{var d;(d=o.value)===null||d===void 0||d.setSelectionRange(s,c,u)},select:()=>{var s;(s=o.value)===null||s===void 0||s.select()},getSelectionStart:()=>{var s;return(s=o.value)===null||s===void 0?void 0:s.selectionStart},getSelectionEnd:()=>{var s;return(s=o.value)===null||s===void 0?void 0:s.selectionEnd},getScrollTop:()=>{var s;return(s=o.value)===null||s===void 0?void 0:s.scrollTop}}),()=>{const{tag:s,value:c}=e,u=pA(e,[\"tag\",\"value\"]);return f(s,A(A({},u),{},{ref:o,value:c}),null)}}});function vA(){const e=document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight;return{width:e,height:t}}function Hc(e){const t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.scrollX||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.scrollY||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}}function gA(e){return Array.prototype.slice.apply(e).map(n=>`${n}: ${e.getPropertyValue(n)};`).join(\"\")}function hA(e){return Object.keys(e).reduce((t,n)=>{const o=e[n];return typeof o>\"u\"||o===null||(t+=`${n}: ${e[n]};`),t},\"\")}var bA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Pa=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:{disabled:W.looseBool,type:W.string,value:W.any,lazy:W.bool.def(!0),tag:{type:String,default:\"input\"},size:W.string,style:W.oneOfType([String,Object]),class:W.string},emits:[\"change\",\"input\",\"blur\",\"keydown\",\"focus\",\"compositionstart\",\"compositionend\",\"keyup\",\"paste\",\"mousedown\"],setup(e,t){let{emit:n,attrs:o,expose:r}=t;const l=ee(null),a=J(),i=J(!1);pe([()=>e.value,i],()=>{i.value||(a.value=e.value)},{immediate:!0});const s=x=>{n(\"change\",x)},c=x=>{i.value=!0,x.target.composing=!0,n(\"compositionstart\",x)},u=x=>{i.value=!1,x.target.composing=!1,n(\"compositionend\",x);const P=document.createEvent(\"HTMLEvents\");P.initEvent(\"input\",!0,!0),x.target.dispatchEvent(P),s(x)},d=x=>{if(i.value&&e.lazy){a.value=x.target.value;return}n(\"input\",x)},p=x=>{n(\"blur\",x)},m=x=>{n(\"focus\",x)},g=()=>{l.value&&l.value.focus()},v=()=>{l.value&&l.value.blur()},y=x=>{n(\"keydown\",x)},b=x=>{n(\"keyup\",x)},S=(x,P,O)=>{var M;(M=l.value)===null||M===void 0||M.setSelectionRange(x,P,O)},$=()=>{var x;(x=l.value)===null||x===void 0||x.select()};r({focus:g,blur:v,input:I(()=>{var x;return(x=l.value)===null||x===void 0?void 0:x.input}),setSelectionRange:S,select:$,getSelectionStart:()=>{var x;return(x=l.value)===null||x===void 0?void 0:x.getSelectionStart()},getSelectionEnd:()=>{var x;return(x=l.value)===null||x===void 0?void 0:x.getSelectionEnd()},getScrollTop:()=>{var x;return(x=l.value)===null||x===void 0?void 0:x.getScrollTop()}});const w=x=>{n(\"mousedown\",x)},C=x=>{n(\"paste\",x)},_=I(()=>e.style&&typeof e.style!=\"string\"?hA(e.style):e.style);return()=>{const{style:x,lazy:P}=e,O=bA(e,[\"style\",\"lazy\"]);return f(mA,A(A(A({},O),o),{},{style:_.value,onInput:d,onChange:s,onBlur:p,onFocus:m,ref:l,value:a.value,onCompositionstart:c,onCompositionend:u,onKeyup:b,onKeydown:y,onPaste:C,onMousedown:w}),null)}}}),yA={inputRef:W.any,prefixCls:String,id:String,inputElement:W.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:W.oneOfType([W.number,W.string]),attrs:W.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},a1=ne({compatConfig:{MODE:3},name:\"SelectInput\",inheritAttrs:!1,props:yA,setup(e){let t=null;const n=Je(\"VCSelectContainerEvent\");return()=>{var o;const{prefixCls:r,id:l,inputElement:a,disabled:i,tabindex:s,autofocus:c,autocomplete:u,editable:d,activeDescendantId:p,value:m,onKeydown:g,onMousedown:v,onChange:y,onPaste:b,onCompositionstart:S,onCompositionend:$,onFocus:w,onBlur:C,open:_,inputRef:x,attrs:P}=e;let O=a||f(Pa,null,null);const M=O.props||{},{onKeydown:E,onInput:R,onFocus:D,onBlur:z,onMousedown:T,onCompositionstart:k,onCompositionend:B,style:L}=M;return O=dt(O,h(h(h(h(h({type:\"search\"},M),{id:l,ref:x,disabled:i,tabindex:s,lazy:!1,autocomplete:u||\"off\",autofocus:c,class:le(`${r}-selection-search-input`,(o=O?.props)===null||o===void 0?void 0:o.class),role:\"combobox\",\"aria-expanded\":_,\"aria-haspopup\":\"listbox\",\"aria-owns\":`${l}_list`,\"aria-autocomplete\":\"list\",\"aria-controls\":`${l}_list`,\"aria-activedescendant\":p}),P),{value:d?m:\"\",readonly:!d,unselectable:d?null:\"on\",style:h(h({},L),{opacity:d?null:0}),onKeydown:N=>{g(N),E&&E(N)},onMousedown:N=>{v(N),T&&T(N)},onInput:N=>{y(N),R&&R(N)},onCompositionstart(N){S(N),k&&k(N)},onCompositionend(N){$(N),B&&B(N)},onPaste:b,onFocus:function(){clearTimeout(t),D&&D(arguments.length<=0?void 0:arguments[0]),w&&w(arguments.length<=0?void 0:arguments[0]),n?.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var N=arguments.length,F=new Array(N),j=0;j<N;j++)F[j]=arguments[j];t=setTimeout(()=>{z&&z(F[0]),C&&C(F[0]),n?.blur(F[0])},100)}}),O.type===\"textarea\"?{}:{type:\"search\"}),!0,!0),O}}}),SA=`accept acceptcharset accesskey action allowfullscreen allowtransparency\nalt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge\ncharset checked classid classname colspan cols content contenteditable contextmenu\ncontrols coords crossorigin data datetime default defer dir disabled download draggable\nenctype form formaction formenctype formmethod formnovalidate formtarget frameborder\nheaders height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity\nis keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media\nmediagroup method min minlength multiple muted name novalidate nonce open\noptimum pattern placeholder poster preload radiogroup readonly rel required\nreversed role rowspan rows sandbox scope scoped scrolling seamless selected\nshape size sizes span spellcheck src srcdoc srclang srcset start step style\nsummary tabindex target title type usemap value width wmode wrap`,$A=`onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown\n    onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick\n    onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown\n    onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel\n    onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough\n    onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata\n    onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`,V0=`${SA} ${$A}`.split(/[\\s\\n]+/),CA=\"aria-\",xA=\"data-\";function K0(e,t){return e.indexOf(t)===0}function Gr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n;t===!1?n={aria:!0,data:!0,attr:!0}:t===!0?n={aria:!0}:n=h({},t);const o={};return Object.keys(e).forEach(r=>{(n.aria&&(r===\"role\"||K0(r,CA))||n.data&&K0(r,xA)||n.attr&&(V0.includes(r)||V0.includes(r.toLowerCase())))&&(o[r]=e[r])}),o}const i1=Symbol(\"OverflowContextProviderKey\"),wp=ne({compatConfig:{MODE:3},name:\"OverflowContextProvider\",inheritAttrs:!1,props:{value:{type:Object}},setup(e,t){let{slots:n}=t;return Qe(i1,I(()=>e.value)),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),wA=()=>Je(i1,I(()=>null));var _A=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const kl=void 0,Vs=ne({compatConfig:{MODE:3},name:\"Item\",props:{prefixCls:String,item:W.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:W.any,invalidate:Boolean},setup(e,t){let{slots:n,expose:o}=t;const r=I(()=>e.responsive&&!e.display),l=J();o({itemNodeRef:l});function a(i){e.registerSize(e.itemKey,i)}return Mn(()=>{a(null)}),()=>{var i;const{prefixCls:s,invalidate:c,item:u,renderItem:d,responsive:p,registerSize:m,itemKey:g,display:v,order:y,component:b=\"div\"}=e,S=_A(e,[\"prefixCls\",\"invalidate\",\"item\",\"renderItem\",\"responsive\",\"registerSize\",\"itemKey\",\"display\",\"order\",\"component\"]),$=(i=n.default)===null||i===void 0?void 0:i.call(n),w=d&&u!==kl?d(u):$;let C;c||(C={opacity:r.value?0:1,height:r.value?0:kl,overflowY:r.value?\"hidden\":kl,order:p?y:kl,pointerEvents:r.value?\"none\":kl,position:r.value?\"absolute\":kl});const _={};return r.value&&(_[\"aria-hidden\"]=!0),f(go,{disabled:!p,onResize:x=>{let{offsetWidth:P}=x;a(P)}},{default:()=>f(b,A(A(A({class:le(!c&&s),style:C},_),S),{},{ref:l}),{default:()=>[w]})})}}});var qd=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const IA=ne({compatConfig:{MODE:3},name:\"RawItem\",inheritAttrs:!1,props:{component:W.any,title:W.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},role:String,tabindex:Number},setup(e,t){let{slots:n,attrs:o}=t;const r=wA();return()=>{var l;if(!r.value){const{component:d=\"div\"}=e,p=qd(e,[\"component\"]);return f(d,A(A({},p),o),{default:()=>[(l=n.default)===null||l===void 0?void 0:l.call(n)]})}const a=r.value,{className:i}=a,s=qd(a,[\"className\"]),{class:c}=o,u=qd(o,[\"class\"]);return f(wp,{value:null},{default:()=>[f(Vs,A(A(A({class:le(i,c)},s),u),e),n)]})}}});var PA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const s1=\"responsive\",c1=\"invalidate\";function TA(e){return`+ ${e.length} ...`}const OA=()=>({id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:W.any,component:String,itemComponent:W.any,onVisibleChange:Function,ssr:String,onMousedown:Function,role:String}),ur=ne({name:\"Overflow\",inheritAttrs:!1,props:OA(),emits:[\"visibleChange\"],setup(e,t){let{attrs:n,emit:o,slots:r}=t;const l=I(()=>e.ssr===\"full\"),a=ee(null),i=I(()=>a.value||0),s=ee(new Map),c=ee(0),u=ee(0),d=ee(0),p=ee(null),m=ee(null),g=I(()=>m.value===null&&l.value?Number.MAX_SAFE_INTEGER:m.value||0),v=ee(!1),y=I(()=>`${e.prefixCls}-item`),b=I(()=>Math.max(c.value,u.value)),S=I(()=>!!(e.data.length&&e.maxCount===s1)),$=I(()=>e.maxCount===c1),w=I(()=>S.value||typeof e.maxCount==\"number\"&&e.data.length>e.maxCount),C=I(()=>{let T=e.data;return S.value?a.value===null&&l.value?T=e.data:T=e.data.slice(0,Math.min(e.data.length,i.value/e.itemWidth)):typeof e.maxCount==\"number\"&&(T=e.data.slice(0,e.maxCount)),T}),_=I(()=>S.value?e.data.slice(g.value+1):e.data.slice(C.value.length)),x=(T,k)=>{var B;return typeof e.itemKey==\"function\"?e.itemKey(T):(B=e.itemKey&&T?.[e.itemKey])!==null&&B!==void 0?B:k},P=I(()=>e.renderItem||(T=>T)),O=(T,k)=>{m.value=T,k||(v.value=T<e.data.length-1,o(\"visibleChange\",T))},M=(T,k)=>{a.value=k.clientWidth},E=(T,k)=>{const B=new Map(s.value);k===null?B.delete(T):B.set(T,k),s.value=B},R=(T,k)=>{c.value=u.value,u.value=k},D=(T,k)=>{d.value=k},z=T=>s.value.get(x(C.value[T],T));return pe([i,s,u,d,()=>e.itemKey,C],()=>{if(i.value&&b.value&&C.value){let T=d.value;const k=C.value.length,B=k-1;if(!k){O(0),p.value=null;return}for(let L=0;L<k;L+=1){const N=z(L);if(N===void 0){O(L-1,!0);break}if(T+=N,B===0&&T<=i.value||L===B-1&&T+z(B)<=i.value){O(B),p.value=null;break}else if(T+b.value>i.value){O(L-1),p.value=T-N-d.value+u.value;break}}e.suffix&&z(0)+d.value>i.value&&(p.value=null)}}),()=>{const T=v.value&&!!_.value.length,{itemComponent:k,renderRawItem:B,renderRawRest:L,renderRest:N,prefixCls:F=\"rc-overflow\",suffix:j,component:H=\"div\",id:K,onMousedown:G}=e,{class:V,style:q}=n,Z=PA(n,[\"class\",\"style\"]);let oe={};p.value!==null&&S.value&&(oe={position:\"absolute\",left:`${p.value}px`,top:0});const re={prefixCls:y.value,responsive:S.value,component:k,invalidate:$.value},Y=B?(be,Ce)=>{const ge=x(be,Ce);return f(wp,{key:ge,value:h(h({},re),{order:Ce,item:be,itemKey:ge,registerSize:E,display:Ce<=g.value})},{default:()=>[B(be,Ce)]})}:(be,Ce)=>{const ge=x(be,Ce);return f(Vs,A(A({},re),{},{order:Ce,key:ge,item:be,renderItem:P.value,itemKey:ge,registerSize:E,display:Ce<=g.value}),null)};let Q=()=>null;const ce={order:T?g.value:Number.MAX_SAFE_INTEGER,className:`${y.value} ${y.value}-rest`,registerSize:R,display:T};if(L)L&&(Q=()=>f(wp,{value:h(h({},re),ce)},{default:()=>[L(_.value)]}));else{const be=N||TA;Q=()=>f(Vs,A(A({},re),ce),{default:()=>typeof be==\"function\"?be(_.value):be})}const ue=()=>{var be;return f(H,A({id:K,class:le(!$.value&&F,V),style:q,onMousedown:G,role:e.role},Z),{default:()=>[C.value.map(Y),w.value?Q():null,j&&f(Vs,A(A({},re),{},{order:g.value,class:`${y.value}-suffix`,registerSize:D,display:!0,style:oe}),{default:()=>j}),(be=r.default)===null||be===void 0?void 0:be.call(r)]})};return f(go,{disabled:!S.value,onResize:M},{default:ue})}}});ur.Item=IA;ur.RESPONSIVE=s1;ur.INVALIDATE=c1;const u1=Symbol(\"TreeSelectLegacyContextPropsKey\");function EA(e){return Qe(u1,e)}function Gu(){return Je(u1,{})}const MA={id:String,prefixCls:String,values:W.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:W.any,placeholder:W.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:W.oneOfType([W.number,W.string]),compositionStatus:Boolean,removeIcon:W.any,choiceTransitionName:String,maxTagCount:W.oneOfType([W.number,W.string]),maxTagTextLength:Number,maxTagPlaceholder:W.any.def(()=>e=>`+ ${e.length} ...`),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},G0=e=>{e.preventDefault(),e.stopPropagation()},AA=ne({name:\"MultipleSelectSelector\",inheritAttrs:!1,props:MA,setup(e){const t=ee(),n=ee(0),o=ee(!1),r=Gu(),l=I(()=>`${e.prefixCls}-selection`),a=I(()=>e.open||e.mode===\"tags\"?e.searchValue:\"\"),i=I(()=>e.mode===\"tags\"||e.showSearch&&(e.open||o.value)),s=J(\"\");ze(()=>{s.value=a.value}),Ne(()=>{pe(s,()=>{n.value=t.value.scrollWidth},{flush:\"post\",immediate:!0})});function c(g,v,y,b,S){return f(\"span\",{class:le(`${l.value}-item`,{[`${l.value}-item-disabled`]:y}),title:typeof g==\"string\"||typeof g==\"number\"?g.toString():void 0},[f(\"span\",{class:`${l.value}-item-content`},[v]),b&&f($l,{class:`${l.value}-item-remove`,onMousedown:G0,onClick:S,customizeIcon:e.removeIcon},{default:()=>[wt(\"×\")]})])}function u(g,v,y,b,S,$){var w;const C=x=>{G0(x),e.onToggleOpen(!open)};let _=$;return r.keyEntities&&(_=((w=r.keyEntities[g])===null||w===void 0?void 0:w.node)||{}),f(\"span\",{key:g,onMousedown:C},[e.tagRender({label:v,value:g,disabled:y,closable:b,onClose:S,option:_})])}function d(g){const{disabled:v,label:y,value:b,option:S}=g,$=!e.disabled&&!v;let w=y;if(typeof e.maxTagTextLength==\"number\"&&(typeof y==\"string\"||typeof y==\"number\")){const _=String(w);_.length>e.maxTagTextLength&&(w=`${_.slice(0,e.maxTagTextLength)}...`)}const C=_=>{var x;_&&_.stopPropagation(),(x=e.onRemove)===null||x===void 0||x.call(e,g)};return typeof e.tagRender==\"function\"?u(b,w,v,$,C,S):c(y,w,v,$,C)}function p(g){const{maxTagPlaceholder:v=b=>`+ ${b.length} ...`}=e,y=typeof v==\"function\"?v(g):v;return c(y,y,!1)}const m=g=>{const v=g.target.composing;s.value=g.target.value,v||e.onInputChange(g)};return()=>{const{id:g,prefixCls:v,values:y,open:b,inputRef:S,placeholder:$,disabled:w,autofocus:C,autocomplete:_,activeDescendantId:x,tabindex:P,compositionStatus:O,onInputPaste:M,onInputKeyDown:E,onInputMouseDown:R,onInputCompositionStart:D,onInputCompositionEnd:z}=e,T=f(\"div\",{class:`${l.value}-search`,style:{width:n.value+\"px\"},key:\"input\"},[f(a1,{inputRef:S,open:b,prefixCls:v,id:g,inputElement:null,disabled:w,autofocus:C,autocomplete:_,editable:i.value,activeDescendantId:x,value:s.value,onKeydown:E,onMousedown:R,onChange:m,onPaste:M,onCompositionstart:D,onCompositionend:z,tabindex:P,attrs:Gr(e,!0),onFocus:()=>o.value=!0,onBlur:()=>o.value=!1},null),f(\"span\",{ref:t,class:`${l.value}-search-mirror`,\"aria-hidden\":!0},[s.value,wt(\" \")])]),k=f(ur,{prefixCls:`${l.value}-overflow`,data:y,renderItem:d,renderRest:p,suffix:T,itemKey:\"key\",maxCount:e.maxTagCount,key:\"overflow\"},null);return f(Ve,null,[k,!y.length&&!a.value&&!O&&f(\"span\",{class:`${l.value}-placeholder`},[$])])}}}),DA={inputElement:W.any,id:String,prefixCls:String,values:W.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:W.any,placeholder:W.any,compositionStatus:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:W.oneOfType([W.number,W.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},hv=ne({name:\"SingleSelector\",setup(e){const t=ee(!1),n=I(()=>e.mode===\"combobox\"),o=I(()=>n.value||e.showSearch),r=I(()=>{let u=e.searchValue||\"\";return n.value&&e.activeValue&&!t.value&&(u=e.activeValue),u}),l=Gu();pe([n,()=>e.activeValue],()=>{n.value&&(t.value=!1)},{immediate:!0});const a=I(()=>e.mode!==\"combobox\"&&!e.open&&!e.showSearch?!1:!!r.value||e.compositionStatus),i=I(()=>{const u=e.values[0];return u&&(typeof u.label==\"string\"||typeof u.label==\"number\")?u.label.toString():void 0}),s=()=>{if(e.values[0])return null;const u=a.value?{visibility:\"hidden\"}:void 0;return f(\"span\",{class:`${e.prefixCls}-selection-placeholder`,style:u},[e.placeholder])},c=u=>{u.target.composing||(t.value=!0,e.onInputChange(u))};return()=>{var u,d,p,m;const{inputElement:g,prefixCls:v,id:y,values:b,inputRef:S,disabled:$,autofocus:w,autocomplete:C,activeDescendantId:_,open:x,tabindex:P,optionLabelRender:O,onInputKeyDown:M,onInputMouseDown:E,onInputPaste:R,onInputCompositionStart:D,onInputCompositionEnd:z}=e,T=b[0];let k=null;if(T&&l.customSlots){const B=(u=T.key)!==null&&u!==void 0?u:T.value,L=((d=l.keyEntities[B])===null||d===void 0?void 0:d.node)||{};k=l.customSlots[(p=L.slots)===null||p===void 0?void 0:p.title]||l.customSlots.title||T.label,typeof k==\"function\"&&(k=k(L))}else k=O&&T?O(T.option):T?.label;return f(Ve,null,[f(\"span\",{class:`${v}-selection-search`},[f(a1,{inputRef:S,prefixCls:v,id:y,open:x,inputElement:g,disabled:$,autofocus:w,autocomplete:C,editable:o.value,activeDescendantId:_,value:r.value,onKeydown:M,onMousedown:E,onChange:c,onPaste:R,onCompositionstart:D,onCompositionend:z,tabindex:P,attrs:Gr(e,!0)},null)]),!n.value&&T&&!a.value&&f(\"span\",{class:`${v}-selection-item`,title:i.value},[f(Ve,{key:(m=T.key)!==null&&m!==void 0?m:T.value},[k])]),s()])}}});hv.props=DA;hv.inheritAttrs=!1;function RA(e){return![we.ESC,we.SHIFT,we.BACKSPACE,we.TAB,we.WIN_KEY,we.ALT,we.META,we.WIN_KEY_RIGHT,we.CTRL,we.SEMICOLON,we.EQUALS,we.CAPS_LOCK,we.CONTEXT_MENU,we.F1,we.F2,we.F3,we.F4,we.F5,we.F6,we.F7,we.F8,we.F9,we.F10,we.F11,we.F12].includes(e)}function d1(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,t=null,n;et(()=>{clearTimeout(n)});function o(r){(r||t===null)&&(t=r),clearTimeout(n),n=setTimeout(()=>{t=null},e)}return[()=>t,o]}function Si(){const e=t=>{e.current=t};return e}const kA=ne({name:\"Selector\",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:W.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:W.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:W.oneOfType([W.number,W.string]),disabled:{type:Boolean,default:void 0},placeholder:W.any,removeIcon:W.any,maxTagCount:W.oneOfType([W.number,W.string]),maxTagTextLength:Number,maxTagPlaceholder:W.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup(e,t){let{expose:n}=t;const o=Si(),r=J(!1),[l,a]=d1(0),i=b=>{const{which:S}=b;(S===we.UP||S===we.DOWN)&&b.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(b),S===we.ENTER&&e.mode===\"tags\"&&!r.value&&!e.open&&e.onSearchSubmit(b.target.value),RA(S)&&e.onToggleOpen(!0)},s=()=>{a(!0)};let c=null;const u=b=>{e.onSearch(b,!0,r.value)!==!1&&e.onToggleOpen(!0)},d=()=>{r.value=!0},p=b=>{r.value=!1,e.mode!==\"combobox\"&&u(b.target.value)},m=b=>{let{target:{value:S}}=b;if(e.tokenWithEnter&&c&&/[\\r\\n]/.test(c)){const $=c.replace(/[\\r\\n]+$/,\"\").replace(/\\r\\n/g,\" \").replace(/[\\r\\n]/g,\" \");S=S.replace($,c)}c=null,u(S)},g=b=>{const{clipboardData:S}=b;c=S.getData(\"text\")},v=b=>{let{target:S}=b;S!==o.current&&(document.body.style.msTouchAction!==void 0?setTimeout(()=>{o.current.focus()}):o.current.focus())},y=b=>{const S=l();b.target!==o.current&&!S&&b.preventDefault(),(e.mode!==\"combobox\"&&(!e.showSearch||!S)||!e.open)&&(e.open&&e.onSearch(\"\",!0,!1),e.onToggleOpen())};return n({focus:()=>{o.current.focus()},blur:()=>{o.current.blur()}}),()=>{const{prefixCls:b,domRef:S,mode:$}=e,w={inputRef:o,onInputKeyDown:i,onInputMouseDown:s,onInputChange:m,onInputPaste:g,compositionStatus:r.value,onInputCompositionStart:d,onInputCompositionEnd:p},C=$===\"multiple\"||$===\"tags\"?f(AA,A(A({},e),w),null):f(hv,A(A({},e),w),null);return f(\"div\",{ref:S,class:`${b}-selector`,onClick:v,onMousedown:y},[C])}}});function NA(e,t,n){function o(r){var l,a,i;let s=r.target;s.shadowRoot&&r.composed&&(s=r.composedPath()[0]||s);const c=[(l=e[0])===null||l===void 0?void 0:l.value,(i=(a=e[1])===null||a===void 0?void 0:a.value)===null||i===void 0?void 0:i.getPopupElement()];t.value&&c.every(u=>u&&!u.contains(s)&&u!==s)&&n(!1)}Ne(()=>{window.addEventListener(\"mousedown\",o)}),et(()=>{window.removeEventListener(\"mousedown\",o)})}function BA(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10;const t=ee(!1);let n;const o=()=>{clearTimeout(n)};return Ne(()=>{o()}),[t,(l,a)=>{o(),n=setTimeout(()=>{t.value=l,a&&a()},e)},o]}const f1=Symbol(\"BaseSelectContextKey\");function LA(e){return Qe(f1,e)}function Bi(){return Je(f1,{})}const bv=()=>{if(typeof navigator>\"u\"||typeof window>\"u\")return!1;const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(e?.substring(0,4))};function jc(e){if(!Lr(e))return vt(e);const t=new Proxy({},{get(n,o,r){return Reflect.get(e.value,o,r)},set(n,o,r){return e.value[o]=r,!0},deleteProperty(n,o){return Reflect.deleteProperty(e.value,o)},has(n,o){return Reflect.has(e.value,o)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return vt(t)}var FA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const zA=[\"value\",\"onChange\",\"removeIcon\",\"placeholder\",\"autofocus\",\"maxTagCount\",\"maxTagTextLength\",\"maxTagPlaceholder\",\"choiceTransitionName\",\"onInputKeyDown\",\"onPopupScroll\",\"tabindex\",\"OptionList\",\"notFoundContent\"],HA=()=>({prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:W.any,emptyOptions:Boolean}),Xu=()=>({showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:W.any,placeholder:W.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:W.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:W.any,clearIcon:W.any,removeIcon:W.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}),jA=()=>h(h({},HA()),Xu());function p1(e){return e===\"tags\"||e===\"multiple\"}const yv=ne({compatConfig:{MODE:3},name:\"BaseSelect\",inheritAttrs:!1,props:Ze(jA(),{showAction:[],notFoundContent:\"Not Found\"}),setup(e,t){let{attrs:n,expose:o,slots:r}=t;const l=I(()=>p1(e.mode)),a=I(()=>e.showSearch!==void 0?e.showSearch:l.value||e.mode===\"combobox\"),i=ee(!1);Ne(()=>{i.value=bv()});const s=Gu(),c=ee(null),u=Si(),d=ee(null),p=ee(null),m=ee(null),g=J(!1),[v,y,b]=BA();o({focus:()=>{var Y;(Y=p.value)===null||Y===void 0||Y.focus()},blur:()=>{var Y;(Y=p.value)===null||Y===void 0||Y.blur()},scrollTo:Y=>{var Q;return(Q=m.value)===null||Q===void 0?void 0:Q.scrollTo(Y)}});const w=I(()=>{var Y;if(e.mode!==\"combobox\")return e.searchValue;const Q=(Y=e.displayValues[0])===null||Y===void 0?void 0:Y.value;return typeof Q==\"string\"||typeof Q==\"number\"?String(Q):\"\"}),C=e.open!==void 0?e.open:e.defaultOpen,_=ee(C),x=ee(C),P=Y=>{_.value=e.open!==void 0?e.open:Y,x.value=_.value};pe(()=>e.open,()=>{P(e.open)});const O=I(()=>!e.notFoundContent&&e.emptyOptions);ze(()=>{x.value=_.value,(e.disabled||O.value&&x.value&&e.mode===\"combobox\")&&(x.value=!1)});const M=I(()=>O.value?!1:x.value),E=Y=>{const Q=Y!==void 0?Y:!x.value;x.value!==Q&&!e.disabled&&(P(Q),e.onDropdownVisibleChange&&e.onDropdownVisibleChange(Q),!Q&&H.value&&(H.value=!1,y(!1,()=>{F.value=!1,g.value=!1})))},R=I(()=>(e.tokenSeparators||[]).some(Y=>[`\n`,`\\r\n`].includes(Y))),D=(Y,Q,ce)=>{var ue,be;let Ce=!0,ge=Y;(ue=e.onActiveValueChange)===null||ue===void 0||ue.call(e,null);const Se=ce?null:d3(Y,e.tokenSeparators);return e.mode!==\"combobox\"&&Se&&(ge=\"\",(be=e.onSearchSplit)===null||be===void 0||be.call(e,Se),E(!1),Ce=!1),e.onSearch&&w.value!==ge&&e.onSearch(ge,{source:Q?\"typing\":\"effect\"}),Ce},z=Y=>{var Q;!Y||!Y.trim()||(Q=e.onSearch)===null||Q===void 0||Q.call(e,Y,{source:\"submit\"})};pe(x,()=>{!x.value&&!l.value&&e.mode!==\"combobox\"&&D(\"\",!1,!1)},{immediate:!0,flush:\"post\"}),pe(()=>e.disabled,()=>{_.value&&e.disabled&&P(!1),e.disabled&&!g.value&&y(!1)},{immediate:!0});const[T,k]=d1(),B=function(Y){var Q;const ce=T(),{which:ue}=Y;if(ue===we.ENTER&&(e.mode!==\"combobox\"&&Y.preventDefault(),x.value||E(!0)),k(!!w.value),ue===we.BACKSPACE&&!ce&&l.value&&!w.value&&e.displayValues.length){const Se=[...e.displayValues];let X=null;for(let U=Se.length-1;U>=0;U-=1){const ie=Se[U];if(!ie.disabled){Se.splice(U,1),X=ie;break}}X&&e.onDisplayValuesChange(Se,{type:\"remove\",values:[X]})}for(var be=arguments.length,Ce=new Array(be>1?be-1:0),ge=1;ge<be;ge++)Ce[ge-1]=arguments[ge];x.value&&m.value&&m.value.onKeydown(Y,...Ce),(Q=e.onKeydown)===null||Q===void 0||Q.call(e,Y,...Ce)},L=function(Y){for(var Q=arguments.length,ce=new Array(Q>1?Q-1:0),ue=1;ue<Q;ue++)ce[ue-1]=arguments[ue];x.value&&m.value&&m.value.onKeyup(Y,...ce),e.onKeyup&&e.onKeyup(Y,...ce)},N=Y=>{const Q=e.displayValues.filter(ce=>ce!==Y);e.onDisplayValuesChange(Q,{type:\"remove\",values:[Y]})},F=ee(!1),j=function(){y(!0),e.disabled||(e.onFocus&&!F.value&&e.onFocus(...arguments),e.showAction&&e.showAction.includes(\"focus\")&&E(!0)),F.value=!0},H=J(!1),K=function(){if(H.value||(g.value=!0,y(!1,()=>{F.value=!1,g.value=!1,E(!1)}),e.disabled))return;const Y=w.value;Y&&(e.mode===\"tags\"?e.onSearch(Y,{source:\"submit\"}):e.mode===\"multiple\"&&e.onSearch(\"\",{source:\"blur\"})),e.onBlur&&e.onBlur(...arguments)},G=()=>{H.value=!0},V=()=>{H.value=!1};Qe(\"VCSelectContainerEvent\",{focus:j,blur:K});const q=[];Ne(()=>{q.forEach(Y=>clearTimeout(Y)),q.splice(0,q.length)}),et(()=>{q.forEach(Y=>clearTimeout(Y)),q.splice(0,q.length)});const Z=function(Y){var Q,ce;const{target:ue}=Y,be=(Q=d.value)===null||Q===void 0?void 0:Q.getPopupElement();if(be&&be.contains(ue)){const X=setTimeout(()=>{var U;const ie=q.indexOf(X);ie!==-1&&q.splice(ie,1),b(),!i.value&&!be.contains(document.activeElement)&&((U=p.value)===null||U===void 0||U.focus())});q.push(X)}for(var Ce=arguments.length,ge=new Array(Ce>1?Ce-1:0),Se=1;Se<Ce;Se++)ge[Se-1]=arguments[Se];(ce=e.onMousedown)===null||ce===void 0||ce.call(e,Y,...ge)},oe=ee(null),re=()=>{};return Ne(()=>{pe(M,()=>{var Y;if(M.value){const Q=Math.ceil((Y=c.value)===null||Y===void 0?void 0:Y.offsetWidth);oe.value!==Q&&!Number.isNaN(Q)&&(oe.value=Q)}},{immediate:!0,flush:\"post\"})}),NA([c,d],M,E),LA(jc(h(h({},jo(e)),{open:x,triggerOpen:M,showSearch:a,multiple:l,toggleOpen:E}))),()=>{const Y=h(h({},e),n),{prefixCls:Q,id:ce,open:ue,defaultOpen:be,mode:Ce,showSearch:ge,searchValue:Se,onSearch:X,allowClear:U,clearIcon:ie,showArrow:ve,inputIcon:me,disabled:he,loading:se,getInputElement:te,getPopupContainer:ae,placement:fe,animation:Ie,transitionName:Te,dropdownStyle:Re,dropdownClassName:$e,dropdownMatchSelectWidth:xe,dropdownRender:_e,dropdownAlign:Me,showAction:He,direction:Ae,tokenSeparators:je,tagRender:at,optionLabelRender:ft,onPopupScroll:st,onDropdownVisibleChange:pt,onFocus:gt,onBlur:Ut,onKeyup:en,onKeydown:ln,onMousedown:Ht,onClear:bn,omitDomProps:An,getRawInputElement:no,displayValues:So,onDisplayValuesChange:Dn,emptyOptions:Yr,activeDescendantId:Oe,activeValue:Ye,OptionList:Xe}=Y,It=FA(Y,[\"prefixCls\",\"id\",\"open\",\"defaultOpen\",\"mode\",\"showSearch\",\"searchValue\",\"onSearch\",\"allowClear\",\"clearIcon\",\"showArrow\",\"inputIcon\",\"disabled\",\"loading\",\"getInputElement\",\"getPopupContainer\",\"placement\",\"animation\",\"transitionName\",\"dropdownStyle\",\"dropdownClassName\",\"dropdownMatchSelectWidth\",\"dropdownRender\",\"dropdownAlign\",\"showAction\",\"direction\",\"tokenSeparators\",\"tagRender\",\"optionLabelRender\",\"onPopupScroll\",\"onDropdownVisibleChange\",\"onFocus\",\"onBlur\",\"onKeyup\",\"onKeydown\",\"onMousedown\",\"onClear\",\"omitDomProps\",\"getRawInputElement\",\"displayValues\",\"onDisplayValuesChange\",\"emptyOptions\",\"activeDescendantId\",\"activeValue\",\"OptionList\"]),tn=Ce===\"combobox\"&&te&&te()||null,jt=typeof no==\"function\"&&no(),Rn=h({},It);let pn;jt&&(pn=Co=>{E(Co)}),zA.forEach(Co=>{delete Rn[Co]}),An?.forEach(Co=>{delete Rn[Co]});const Ro=ve!==void 0?ve:se||!l.value&&Ce!==\"combobox\";let Vn;Ro&&(Vn=f($l,{class:le(`${Q}-arrow`,{[`${Q}-arrow-loading`]:se}),customizeIcon:me,customizeIconProps:{loading:se,searchValue:w.value,open:x.value,focused:v.value,showSearch:a.value}},null));let oo;const Nt=()=>{bn?.(),Dn([],{type:\"clear\",values:So}),D(\"\",!1,!1)};!he&&U&&(So.length||w.value)&&(oo=f($l,{class:`${Q}-clear`,onMousedown:Nt,customizeIcon:ie},{default:()=>[wt(\"×\")]}));const $o=f(Xe,{ref:m},h(h({},s.customSlots),{option:r.option})),ro=le(Q,n.class,{[`${Q}-focused`]:v.value,[`${Q}-multiple`]:l.value,[`${Q}-single`]:!l.value,[`${Q}-allow-clear`]:U,[`${Q}-show-arrow`]:Ro,[`${Q}-disabled`]:he,[`${Q}-loading`]:se,[`${Q}-open`]:x.value,[`${Q}-customize-input`]:tn,[`${Q}-show-search`]:a.value}),$r=f(fA,{ref:d,disabled:he,prefixCls:Q,visible:M.value,popupElement:$o,containerWidth:oe.value,animation:Ie,transitionName:Te,dropdownStyle:Re,dropdownClassName:$e,direction:Ae,dropdownMatchSelectWidth:xe,dropdownRender:_e,dropdownAlign:Me,placement:fe,getPopupContainer:ae,empty:Yr,getTriggerDOMNode:()=>u.current,onPopupVisibleChange:pn,onPopupMouseEnter:re,onPopupFocusin:G,onPopupFocusout:V},{default:()=>jt?Kt(jt)&&dt(jt,{ref:u},!1,!0):f(kA,A(A({},e),{},{domRef:u,prefixCls:Q,inputElement:tn,ref:p,id:ce,showSearch:a.value,mode:Ce,activeDescendantId:Oe,tagRender:at,optionLabelRender:ft,values:So,open:x.value,onToggleOpen:E,activeValue:Ye,searchValue:w.value,onSearch:D,onSearchSubmit:z,onRemove:N,tokenWithEnter:R.value}),null)});let Cr;return jt?Cr=$r:Cr=f(\"div\",A(A({},Rn),{},{class:ro,ref:c,onMousedown:Z,onKeydown:B,onKeyup:L}),[v.value&&!x.value&&f(\"span\",{style:{width:0,height:0,position:\"absolute\",overflow:\"hidden\",opacity:0},\"aria-live\":\"polite\"},[`${So.map(Co=>{let{label:Rl,value:xo}=Co;return[\"number\",\"string\"].includes(typeof Rl)?Rl:xo}).join(\", \")}`]),$r,Vn,oo]),Cr}}}),Uu=(e,t)=>{let{height:n,offset:o,prefixCls:r,onInnerResize:l}=e,{slots:a}=t;var i;let s={},c={display:\"flex\",flexDirection:\"column\"};return o!==void 0&&(s={height:`${n}px`,position:\"relative\",overflow:\"hidden\"},c=h(h({},c),{transform:`translateY(${o}px)`,position:\"absolute\",left:0,right:0,top:0})),f(\"div\",{style:s},[f(go,{onResize:u=>{let{offsetHeight:d}=u;d&&l&&l()}},{default:()=>[f(\"div\",{style:c,class:le({[`${r}-holder-inner`]:r})},[(i=a.default)===null||i===void 0?void 0:i.call(a)])]})])};Uu.displayName=\"Filter\";Uu.inheritAttrs=!1;Uu.props={prefixCls:String,height:Number,offset:Number,onInnerResize:Function};const m1=(e,t)=>{let{setRef:n}=e,{slots:o}=t;var r;const l=$t((r=o.default)===null||r===void 0?void 0:r.call(o));return l&&l.length?Oo(l[0],{ref:n}):l};m1.props={setRef:{type:Function,default:()=>{}}};const WA=20;function X0(e){return\"touches\"in e?e.touches[0].pageY:e.pageY}const VA=ne({compatConfig:{MODE:3},name:\"ScrollBar\",inheritAttrs:!1,props:{prefixCls:String,scrollTop:Number,scrollHeight:Number,height:Number,count:Number,onScroll:{type:Function},onStartMove:{type:Function},onStopMove:{type:Function}},setup(){return{moveRaf:null,scrollbarRef:Si(),thumbRef:Si(),visibleTimeout:null,state:vt({dragging:!1,pageY:null,startTop:null,visible:!1})}},watch:{scrollTop:{handler(){this.delayHidden()},flush:\"post\"}},mounted(){var e,t;(e=this.scrollbarRef.current)===null||e===void 0||e.addEventListener(\"touchstart\",this.onScrollbarTouchStart,Yt?{passive:!1}:!1),(t=this.thumbRef.current)===null||t===void 0||t.addEventListener(\"touchstart\",this.onMouseDown,Yt?{passive:!1}:!1)},beforeUnmount(){this.removeEvents(),clearTimeout(this.visibleTimeout)},methods:{delayHidden(){clearTimeout(this.visibleTimeout),this.state.visible=!0,this.visibleTimeout=setTimeout(()=>{this.state.visible=!1},2e3)},onScrollbarTouchStart(e){e.preventDefault()},onContainerMouseDown(e){e.stopPropagation(),e.preventDefault()},patchEvents(){window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"mouseup\",this.onMouseUp),this.thumbRef.current.addEventListener(\"touchmove\",this.onMouseMove,Yt?{passive:!1}:!1),this.thumbRef.current.addEventListener(\"touchend\",this.onMouseUp)},removeEvents(){window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"mouseup\",this.onMouseUp),this.scrollbarRef.current.removeEventListener(\"touchstart\",this.onScrollbarTouchStart,Yt?{passive:!1}:!1),this.thumbRef.current&&(this.thumbRef.current.removeEventListener(\"touchstart\",this.onMouseDown,Yt?{passive:!1}:!1),this.thumbRef.current.removeEventListener(\"touchmove\",this.onMouseMove,Yt?{passive:!1}:!1),this.thumbRef.current.removeEventListener(\"touchend\",this.onMouseUp)),qe.cancel(this.moveRaf)},onMouseDown(e){const{onStartMove:t}=this.$props;h(this.state,{dragging:!0,pageY:X0(e),startTop:this.getTop()}),t(),this.patchEvents(),e.stopPropagation(),e.preventDefault()},onMouseMove(e){const{dragging:t,pageY:n,startTop:o}=this.state,{onScroll:r}=this.$props;if(qe.cancel(this.moveRaf),t){const l=X0(e)-n,a=o+l,i=this.getEnableScrollRange(),s=this.getEnableHeightRange(),c=s?a/s:0,u=Math.ceil(c*i);this.moveRaf=qe(()=>{r(u)})}},onMouseUp(){const{onStopMove:e}=this.$props;this.state.dragging=!1,e(),this.removeEvents()},getSpinHeight(){const{height:e,scrollHeight:t}=this.$props;let n=e/t*100;return n=Math.max(n,WA),n=Math.min(n,e/2),Math.floor(n)},getEnableScrollRange(){const{scrollHeight:e,height:t}=this.$props;return e-t||0},getEnableHeightRange(){const{height:e}=this.$props,t=this.getSpinHeight();return e-t||0},getTop(){const{scrollTop:e}=this.$props,t=this.getEnableScrollRange(),n=this.getEnableHeightRange();return e===0||t===0?0:e/t*n},showScroll(){const{height:e,scrollHeight:t}=this.$props;return t>e}},render(){const{dragging:e,visible:t}=this.state,{prefixCls:n}=this.$props,o=this.getSpinHeight()+\"px\",r=this.getTop()+\"px\",l=this.showScroll(),a=l&&t;return f(\"div\",{ref:this.scrollbarRef,class:le(`${n}-scrollbar`,{[`${n}-scrollbar-show`]:l}),style:{width:\"8px\",top:0,bottom:0,right:0,position:\"absolute\",display:a?void 0:\"none\"},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[f(\"div\",{ref:this.thumbRef,class:le(`${n}-scrollbar-thumb`,{[`${n}-scrollbar-thumb-moving`]:e}),style:{width:\"100%\",height:o,top:r,left:0,position:\"absolute\",background:\"rgba(0, 0, 0, 0.5)\",borderRadius:\"99px\",cursor:\"pointer\",userSelect:\"none\"},onMousedown:this.onMouseDown},null)])}});function KA(e,t,n,o){const r=new Map,l=new Map,a=J(Symbol(\"update\"));pe(e,()=>{a.value=Symbol(\"update\")});let i;function s(){qe.cancel(i)}function c(){s(),i=qe(()=>{r.forEach((d,p)=>{if(d&&d.offsetParent){const{offsetHeight:m}=d;l.get(p)!==m&&(a.value=Symbol(\"update\"),l.set(p,d.offsetHeight))}})})}function u(d,p){const m=t(d);r.get(m),p?(r.set(m,p.$el||p),c()):r.delete(m)}return Mn(()=>{s()}),[u,c,l,a]}function GA(e,t,n,o,r,l,a,i){let s;return c=>{if(c==null){i();return}qe.cancel(s);const u=t.value,d=o.itemHeight;if(typeof c==\"number\")a(c);else if(c&&typeof c==\"object\"){let p;const{align:m}=c;\"index\"in c?{index:p}=c:p=u.findIndex(y=>r(y)===c.key);const{offset:g=0}=c,v=(y,b)=>{if(y<0||!e.value)return;const S=e.value.clientHeight;let $=!1,w=b;if(S){const C=b||m;let _=0,x=0,P=0;const O=Math.min(u.length,p);for(let R=0;R<=O;R+=1){const D=r(u[R]);x=_;const z=n.get(D);P=x+(z===void 0?d:z),_=P,R===p&&z===void 0&&($=!0)}const M=e.value.scrollTop;let E=null;switch(C){case\"top\":E=x-g;break;case\"bottom\":E=P-S+g;break;default:{const R=M+S;x<M?w=\"top\":P>R&&(w=\"bottom\")}}E!==null&&E!==M&&a(E)}s=qe(()=>{$&&l(),v(y-1,w)},2)};v(5)}}}const XA=typeof navigator==\"object\"&&/Firefox/i.test(navigator.userAgent),v1=(e,t)=>{let n=!1,o=null;function r(){clearTimeout(o),n=!0,o=setTimeout(()=>{n=!1},50)}return function(l){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=l<0&&e.value||l>0&&t.value;return a&&i?(clearTimeout(o),n=!1):(!i||n)&&r(),!n&&i}};function UA(e,t,n,o){let r=0,l=null,a=null,i=!1;const s=v1(t,n);function c(d){if(!e.value)return;qe.cancel(l);const{deltaY:p}=d;r+=p,a=p,!s(p)&&(XA||d.preventDefault(),l=qe(()=>{o(r*(i?10:1)),r=0}))}function u(d){e.value&&(i=d.detail===a)}return[c,u]}const YA=14/15;function qA(e,t,n){let o=!1,r=0,l=null,a=null;const i=()=>{l&&(l.removeEventListener(\"touchmove\",s),l.removeEventListener(\"touchend\",c))},s=p=>{if(o){const m=Math.ceil(p.touches[0].pageY);let g=r-m;r=m,n(g)&&p.preventDefault(),clearInterval(a),a=setInterval(()=>{g*=YA,(!n(g,!0)||Math.abs(g)<=.1)&&clearInterval(a)},16)}},c=()=>{o=!1,i()},u=p=>{i(),p.touches.length===1&&!o&&(o=!0,r=Math.ceil(p.touches[0].pageY),l=p.target,l.addEventListener(\"touchmove\",s,{passive:!1}),l.addEventListener(\"touchend\",c))},d=()=>{};Ne(()=>{document.addEventListener(\"touchmove\",d,{passive:!1}),pe(e,p=>{t.value.removeEventListener(\"touchstart\",u),i(),clearInterval(a),p&&t.value.addEventListener(\"touchstart\",u,{passive:!1})},{immediate:!0})}),et(()=>{document.removeEventListener(\"touchmove\",d)})}var ZA=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const QA=[],JA={overflowY:\"auto\",overflowAnchor:\"none\"};function e4(e,t,n,o,r,l){let{getKey:a}=l;return e.slice(t,n+1).map((i,s)=>{const c=t+s,u=r(i,c,{}),d=a(i);return f(m1,{key:d,setRef:p=>o(i,p)},{default:()=>[u]})})}const g1=ne({compatConfig:{MODE:3},name:\"List\",inheritAttrs:!1,props:{prefixCls:String,data:W.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup(e,t){let{expose:n}=t;const o=I(()=>{const{height:N,itemHeight:F,virtual:j}=e;return!!(j!==!1&&N&&F)}),r=I(()=>{const{height:N,itemHeight:F,data:j}=e;return o.value&&j&&F*j.length>N}),l=vt({scrollTop:0,scrollMoving:!1}),a=I(()=>e.data||QA),i=ee([]);pe(a,()=>{i.value=zt(a.value).slice()},{immediate:!0});const s=ee(N=>{});pe(()=>e.itemKey,N=>{typeof N==\"function\"?s.value=N:s.value=F=>F?.[N]},{immediate:!0});const c=ee(),u=ee(),d=ee(),p=N=>s.value(N),m={getKey:p};function g(N){let F;typeof N==\"function\"?F=N(l.scrollTop):F=N;const j=_(F);c.value&&(c.value.scrollTop=j),l.scrollTop=j}const[v,y,b,S]=KA(i,p),$=vt({scrollHeight:void 0,start:0,end:0,offset:void 0}),w=ee(0);Ne(()=>{it(()=>{var N;w.value=((N=u.value)===null||N===void 0?void 0:N.offsetHeight)||0})}),Hn(()=>{it(()=>{var N;w.value=((N=u.value)===null||N===void 0?void 0:N.offsetHeight)||0})}),pe([o,i],()=>{o.value||h($,{scrollHeight:void 0,start:0,end:i.value.length-1,offset:void 0})},{immediate:!0}),pe([o,i,w,r],()=>{o.value&&!r.value&&h($,{scrollHeight:w.value,start:0,end:i.value.length-1,offset:void 0}),c.value&&(l.scrollTop=c.value.scrollTop)},{immediate:!0}),pe([r,o,()=>l.scrollTop,i,S,()=>e.height,w],()=>{if(!o.value||!r.value)return;let N=0,F,j,H;const K=i.value.length,G=i.value,V=l.scrollTop,{itemHeight:q,height:Z}=e,oe=V+Z;for(let re=0;re<K;re+=1){const Y=G[re],Q=p(Y);let ce=b.get(Q);ce===void 0&&(ce=q);const ue=N+ce;F===void 0&&ue>=V&&(F=re,j=N),H===void 0&&ue>oe&&(H=re),N=ue}F===void 0&&(F=0,j=0,H=Math.ceil(Z/q)),H===void 0&&(H=K-1),H=Math.min(H+1,K),h($,{scrollHeight:N,start:F,end:H,offset:j})},{immediate:!0});const C=I(()=>$.scrollHeight-e.height);function _(N){let F=N;return Number.isNaN(C.value)||(F=Math.min(F,C.value)),F=Math.max(F,0),F}const x=I(()=>l.scrollTop<=0),P=I(()=>l.scrollTop>=C.value),O=v1(x,P);function M(N){g(N)}function E(N){var F;const{scrollTop:j}=N.currentTarget;j!==l.scrollTop&&g(j),(F=e.onScroll)===null||F===void 0||F.call(e,N)}const[R,D]=UA(o,x,P,N=>{g(F=>F+N)});qA(o,c,(N,F)=>O(N,F)?!1:(R({preventDefault(){},deltaY:N}),!0));function z(N){o.value&&N.preventDefault()}const T=()=>{c.value&&(c.value.removeEventListener(\"wheel\",R,Yt?{passive:!1}:!1),c.value.removeEventListener(\"DOMMouseScroll\",D),c.value.removeEventListener(\"MozMousePixelScroll\",z))};ze(()=>{it(()=>{c.value&&(T(),c.value.addEventListener(\"wheel\",R,Yt?{passive:!1}:!1),c.value.addEventListener(\"DOMMouseScroll\",D),c.value.addEventListener(\"MozMousePixelScroll\",z))})}),et(()=>{T()});const k=GA(c,i,b,e,p,y,g,()=>{var N;(N=d.value)===null||N===void 0||N.delayHidden()});n({scrollTo:k});const B=I(()=>{let N=null;return e.height&&(N=h({[e.fullHeight?\"height\":\"maxHeight\"]:e.height+\"px\"},JA),o.value&&(N.overflowY=\"hidden\",l.scrollMoving&&(N.pointerEvents=\"none\"))),N});return pe([()=>$.start,()=>$.end,i],()=>{if(e.onVisibleChange){const N=i.value.slice($.start,$.end+1);e.onVisibleChange(N,i.value)}},{flush:\"post\"}),{state:l,mergedData:i,componentStyle:B,onFallbackScroll:E,onScrollBar:M,componentRef:c,useVirtual:o,calRes:$,collectHeight:y,setInstance:v,sharedConfig:m,scrollBarRef:d,fillerInnerRef:u,delayHideScrollBar:()=>{var N;(N=d.value)===null||N===void 0||N.delayHidden()}}},render(){const e=h(h({},this.$props),this.$attrs),{prefixCls:t=\"rc-virtual-list\",height:n,itemHeight:o,fullHeight:r,data:l,itemKey:a,virtual:i,component:s=\"div\",onScroll:c,children:u=this.$slots.default,style:d,class:p}=e,m=ZA(e,[\"prefixCls\",\"height\",\"itemHeight\",\"fullHeight\",\"data\",\"itemKey\",\"virtual\",\"component\",\"onScroll\",\"children\",\"style\",\"class\"]),g=le(t,p),{scrollTop:v}=this.state,{scrollHeight:y,offset:b,start:S,end:$}=this.calRes,{componentStyle:w,onFallbackScroll:C,onScrollBar:_,useVirtual:x,collectHeight:P,sharedConfig:O,setInstance:M,mergedData:E,delayHideScrollBar:R}=this;return f(\"div\",A({style:h(h({},d),{position:\"relative\"}),class:g},m),[f(s,{class:`${t}-holder`,style:w,ref:\"componentRef\",onScroll:C,onMouseenter:R},{default:()=>[f(Uu,{prefixCls:t,height:y,offset:b,onInnerResize:P,ref:\"fillerInnerRef\"},{default:()=>e4(E,S,$,M,u,O)})]}),x&&f(VA,{ref:\"scrollBarRef\",prefixCls:t,scrollTop:v,height:n,scrollHeight:y,count:E.length,onScroll:_,onStartMove:()=>{this.state.scrollMoving=!0},onStopMove:()=>{this.state.scrollMoving=!1}},null)])}});function Sv(e,t,n){const o=J(e());return pe(t,(r,l)=>{n?n(r,l)&&(o.value=e()):o.value=e()}),o}function t4(){return/(mac\\sos|macintosh)/i.test(navigator.appVersion)}const h1=Symbol(\"SelectContextKey\");function n4(e){return Qe(h1,e)}function o4(){return Je(h1,{})}var r4=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function U0(e){return typeof e==\"string\"||typeof e==\"number\"}const l4=ne({compatConfig:{MODE:3},name:\"OptionList\",inheritAttrs:!1,setup(e,t){let{expose:n,slots:o}=t;const r=Bi(),l=o4(),a=I(()=>`${r.prefixCls}-item`),i=Sv(()=>l.flattenOptions,[()=>r.open,()=>l.flattenOptions],C=>C[0]),s=Si(),c=C=>{C.preventDefault()},u=C=>{s.current&&s.current.scrollTo(typeof C==\"number\"?{index:C}:C)},d=function(C){let _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const x=i.value.length;for(let P=0;P<x;P+=1){const O=(C+P*_+x)%x,{group:M,data:E}=i.value[O];if(!M&&!E.disabled)return O}return-1},p=vt({activeIndex:d(0)}),m=function(C){let _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;p.activeIndex=C;const x={source:_?\"keyboard\":\"mouse\"},P=i.value[C];if(!P){l.onActiveValue(null,-1,x);return}l.onActiveValue(P.value,C,x)};pe([()=>i.value.length,()=>r.searchValue],()=>{m(l.defaultActiveFirstOption!==!1?d(0):-1)},{immediate:!0});const g=C=>l.rawValues.has(C)&&r.mode!==\"combobox\";pe([()=>r.open,()=>r.searchValue],()=>{if(!r.multiple&&r.open&&l.rawValues.size===1){const C=Array.from(l.rawValues)[0],_=zt(i.value).findIndex(x=>{let{data:P}=x;return P[l.fieldNames.value]===C});_!==-1&&(m(_),it(()=>{u(_)}))}r.open&&it(()=>{var C;(C=s.current)===null||C===void 0||C.scrollTo(void 0)})},{immediate:!0,flush:\"post\"});const v=C=>{C!==void 0&&l.onSelect(C,{selected:!l.rawValues.has(C)}),r.multiple||r.toggleOpen(!1)},y=C=>typeof C.label==\"function\"?C.label():C.label;function b(C){const _=i.value[C];if(!_)return null;const x=_.data||{},{value:P}=x,{group:O}=_,M=Gr(x,!0),E=y(_);return _?f(\"div\",A(A({\"aria-label\":typeof E==\"string\"&&!O?E:null},M),{},{key:C,role:O?\"presentation\":\"option\",id:`${r.id}_list_${C}`,\"aria-selected\":g(P)}),[P]):null}return n({onKeydown:C=>{const{which:_,ctrlKey:x}=C;switch(_){case we.N:case we.P:case we.UP:case we.DOWN:{let P=0;if(_===we.UP?P=-1:_===we.DOWN?P=1:t4()&&x&&(_===we.N?P=1:_===we.P&&(P=-1)),P!==0){const O=d(p.activeIndex+P,P);u(O),m(O,!0)}break}case we.ENTER:{const P=i.value[p.activeIndex];P&&!P.data.disabled?v(P.value):v(void 0),r.open&&C.preventDefault();break}case we.ESC:r.toggleOpen(!1),r.open&&C.stopPropagation()}},onKeyup:()=>{},scrollTo:C=>{u(C)}}),()=>{const{id:C,notFoundContent:_,onPopupScroll:x}=r,{menuItemSelectedIcon:P,fieldNames:O,virtual:M,listHeight:E,listItemHeight:R}=l,D=o.option,{activeIndex:z}=p,T=Object.keys(O).map(k=>O[k]);return i.value.length===0?f(\"div\",{role:\"listbox\",id:`${C}_list`,class:`${a.value}-empty`,onMousedown:c},[_]):f(Ve,null,[f(\"div\",{role:\"listbox\",id:`${C}_list`,style:{height:0,width:0,overflow:\"hidden\"}},[b(z-1),b(z),b(z+1)]),f(g1,{itemKey:\"key\",ref:s,data:i.value,height:E,itemHeight:R,fullHeight:!1,onMousedown:c,onScroll:x,virtual:M},{default:(k,B)=>{var L;const{group:N,groupOption:F,data:j,value:H}=k,{key:K}=j,G=typeof k.label==\"function\"?k.label():k.label;if(N){const ie=(L=j.title)!==null&&L!==void 0?L:U0(G)&&G;return f(\"div\",{class:le(a.value,`${a.value}-group`),title:ie},[D?D(j):G!==void 0?G:K])}const{disabled:V,title:q,children:Z,style:oe,class:re,className:Y}=j,Q=r4(j,[\"disabled\",\"title\",\"children\",\"style\",\"class\",\"className\"]),ce=ot(Q,T),ue=g(H),be=`${a.value}-option`,Ce=le(a.value,be,re,Y,{[`${be}-grouped`]:F,[`${be}-active`]:z===B&&!V,[`${be}-disabled`]:V,[`${be}-selected`]:ue}),ge=y(k),Se=!P||typeof P==\"function\"||ue,X=typeof ge==\"number\"?ge:ge||H;let U=U0(X)?X.toString():void 0;return q!==void 0&&(U=q),f(\"div\",A(A({},ce),{},{\"aria-selected\":ue,class:Ce,title:U,onMousemove:ie=>{Q.onMousemove&&Q.onMousemove(ie),!(z===B||V)&&m(B)},onClick:ie=>{V||v(H),Q.onClick&&Q.onClick(ie)},style:oe}),[f(\"div\",{class:`${be}-content`},[D?D(j):X]),Kt(P)||ue,Se&&f($l,{class:`${a.value}-option-state`,customizeIcon:P,customizeIconProps:{isSelected:ue}},{default:()=>[ue?\"✓\":null]})])}})])}}});var a4=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function i4(e){const t=e,{key:n,children:o}=t,r=t.props,{value:l,disabled:a}=r,i=a4(r,[\"value\",\"disabled\"]),s=o?.default;return h({key:n,value:l!==void 0?l:n,children:s,disabled:a||a===\"\"},i)}function b1(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return $t(e).map((o,r)=>{var l;if(!Kt(o)||!o.type)return null;const{type:{isSelectOptGroup:a},key:i,children:s,props:c}=o;if(t||!a)return i4(o);const u=s&&s.default?s.default():void 0,d=c?.label||((l=s.label)===null||l===void 0?void 0:l.call(s))||i;return h(h({key:`__RC_SELECT_GRP__${i===null?r:String(i)}__`},c),{label:d,options:b1(u||[])})}).filter(o=>o)}function s4(e,t,n){const o=ee(),r=ee(),l=ee(),a=ee([]);return pe([e,t],()=>{e.value?a.value=zt(e.value).slice():a.value=b1(t.value)},{immediate:!0,deep:!0}),ze(()=>{const i=a.value,s=new Map,c=new Map,u=n.value;function d(p){let m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(let g=0;g<p.length;g+=1){const v=p[g];!v[u.options]||m?(s.set(v[u.value],v),c.set(v[u.label],v)):d(v[u.options],!0)}}d(i),o.value=i,r.value=s,l.value=c}),{options:o,valueOptions:r,labelOptions:l}}let Y0=0;const c4=wn();function u4(){let e;return c4?(e=Y0,Y0+=1):e=\"TEST_OR_SSR\",e}function $v(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:J(\"\");const t=`rc_select_${u4()}`;return e.value||t}function y1(e){return Array.isArray(e)?e:e!==void 0?[e]:[]}function Zd(e,t){return y1(e).join(\"\").toUpperCase().includes(t)}const d4=(e,t,n,o,r)=>I(()=>{const l=n.value,a=r?.value,i=o?.value;if(!l||i===!1)return e.value;const{options:s,label:c,value:u}=t.value,d=[],p=typeof i==\"function\",m=l.toUpperCase(),g=p?i:(y,b)=>a?Zd(b[a],m):b[s]?Zd(b[c!==\"children\"?c:\"label\"],m):Zd(b[u],m),v=p?y=>yp(y):y=>y;return e.value.forEach(y=>{if(y[s]){if(g(l,v(y)))d.push(y);else{const S=y[s].filter($=>g(l,v($)));S.length&&d.push(h(h({},y),{[s]:S}))}return}g(l,v(y))&&d.push(y)}),d}),f4=(e,t)=>{const n=ee({values:new Map,options:new Map});return[I(()=>{const{values:l,options:a}=n.value,i=e.value.map(u=>{var d;return u.label===void 0?h(h({},u),{label:(d=l.get(u.value))===null||d===void 0?void 0:d.label}):u}),s=new Map,c=new Map;return i.forEach(u=>{s.set(u.value,u),c.set(u.value,t.value.get(u.value)||a.get(u.value))}),n.value.values=s,n.value.options=c,i}),l=>t.value.get(l)||n.value.options.get(l)]};function Mt(e,t){const{defaultValue:n,value:o=J()}=t||{};let r=typeof e==\"function\"?e():e;o.value!==void 0&&(r=Be(o)),n!==void 0&&(r=typeof n==\"function\"?n():n);const l=J(r),a=J(r);ze(()=>{let s=o.value!==void 0?o.value:l.value;t.postState&&(s=t.postState(s)),a.value=s});function i(s){const c=a.value;l.value=s,zt(a.value)!==s&&t.onChange&&t.onChange(s,c)}return pe(o,()=>{l.value=o.value}),[a,i]}function ht(e){const t=typeof e==\"function\"?e():e,n=J(t);function o(r){n.value=r}return[n,o]}const p4=[\"inputValue\"];function S1(){return h(h({},Xu()),{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:W.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:W.any,defaultValue:W.any,onChange:Function,children:Array})}function m4(e){return!e||typeof e!=\"object\"}const v4=ne({compatConfig:{MODE:3},name:\"VcSelect\",inheritAttrs:!1,props:Ze(S1(),{prefixCls:\"vc-select\",autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup(e,t){let{expose:n,attrs:o,slots:r}=t;const l=$v(We(e,\"id\")),a=I(()=>p1(e.mode)),i=I(()=>!!(!e.options&&e.children)),s=I(()=>e.filterOption===void 0&&e.mode===\"combobox\"?!1:e.filterOption),c=I(()=>KC(e.fieldNames,i.value)),[u,d]=Mt(\"\",{value:I(()=>e.searchValue!==void 0?e.searchValue:e.inputValue),postState:re=>re||\"\"}),p=s4(We(e,\"options\"),We(e,\"children\"),c),{valueOptions:m,labelOptions:g,options:v}=p,y=re=>y1(re).map(Q=>{var ce,ue;let be,Ce,ge,Se;m4(Q)?be=Q:(ge=Q.key,Ce=Q.label,be=(ce=Q.value)!==null&&ce!==void 0?ce:ge);const X=m.value.get(be);return X&&(Ce===void 0&&(Ce=X?.[e.optionLabelProp||c.value.label]),ge===void 0&&(ge=(ue=X?.key)!==null&&ue!==void 0?ue:be),Se=X?.disabled),{label:Ce,value:be,key:ge,disabled:Se,option:X}}),[b,S]=Mt(e.defaultValue,{value:We(e,\"value\")}),$=I(()=>{var re;const Y=y(b.value);return e.mode===\"combobox\"&&!(!((re=Y[0])===null||re===void 0)&&re.value)?[]:Y}),[w,C]=f4($,m),_=I(()=>{if(!e.mode&&w.value.length===1){const re=w.value[0];if(re.value===null&&(re.label===null||re.label===void 0))return[]}return w.value.map(re=>{var Y;return h(h({},re),{label:(Y=typeof re.label==\"function\"?re.label():re.label)!==null&&Y!==void 0?Y:re.value})})}),x=I(()=>new Set(w.value.map(re=>re.value)));ze(()=>{var re;if(e.mode===\"combobox\"){const Y=(re=w.value[0])===null||re===void 0?void 0:re.value;Y!=null&&d(String(Y))}},{flush:\"post\"});const P=(re,Y)=>{const Q=Y??re;return{[c.value.value]:re,[c.value.label]:Q}},O=ee();ze(()=>{if(e.mode!==\"tags\"){O.value=v.value;return}const re=v.value.slice(),Y=Q=>m.value.has(Q);[...w.value].sort((Q,ce)=>Q.value<ce.value?-1:1).forEach(Q=>{const ce=Q.value;Y(ce)||re.push(P(ce,Q.label))}),O.value=re});const M=d4(O,c,u,s,We(e,\"optionFilterProp\")),E=I(()=>e.mode!==\"tags\"||!u.value||M.value.some(re=>re[e.optionFilterProp||\"value\"]===u.value)?M.value:[P(u.value),...M.value]),R=I(()=>e.filterSort?[...E.value].sort((re,Y)=>e.filterSort(re,Y)):E.value),D=I(()=>u3(R.value,{fieldNames:c.value,childrenAsData:i.value})),z=re=>{const Y=y(re);if(S(Y),e.onChange&&(Y.length!==w.value.length||Y.some((Q,ce)=>{var ue;return((ue=w.value[ce])===null||ue===void 0?void 0:ue.value)!==Q?.value}))){const Q=e.labelInValue?Y.map(ue=>h(h({},ue),{originLabel:ue.label,label:typeof ue.label==\"function\"?ue.label():ue.label})):Y.map(ue=>ue.value),ce=Y.map(ue=>yp(C(ue.value)));e.onChange(a.value?Q:Q[0],a.value?ce:ce[0])}},[T,k]=ht(null),[B,L]=ht(0),N=I(()=>e.defaultActiveFirstOption!==void 0?e.defaultActiveFirstOption:e.mode!==\"combobox\"),F=function(re,Y){let{source:Q=\"keyboard\"}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};L(Y),e.backfill&&e.mode===\"combobox\"&&re!==null&&Q===\"keyboard\"&&k(String(re))},j=(re,Y)=>{const Q=()=>{var ce;const ue=C(re),be=ue?.[c.value.label];return[e.labelInValue?{label:typeof be==\"function\"?be():be,originLabel:be,value:re,key:(ce=ue?.key)!==null&&ce!==void 0?ce:re}:re,yp(ue)]};if(Y&&e.onSelect){const[ce,ue]=Q();e.onSelect(ce,ue)}else if(!Y&&e.onDeselect){const[ce,ue]=Q();e.onDeselect(ce,ue)}},H=(re,Y)=>{let Q;const ce=a.value?Y.selected:!0;ce?Q=a.value?[...w.value,re]:[re]:Q=w.value.filter(ue=>ue.value!==re),z(Q),j(re,ce),e.mode===\"combobox\"?k(\"\"):(!a.value||e.autoClearSearchValue)&&(d(\"\"),k(\"\"))},K=(re,Y)=>{z(re),(Y.type===\"remove\"||Y.type===\"clear\")&&Y.values.forEach(Q=>{j(Q.value,!1)})},G=(re,Y)=>{var Q;if(d(re),k(null),Y.source===\"submit\"){const ce=(re||\"\").trim();if(ce){const ue=Array.from(new Set([...x.value,ce]));z(ue),j(ce,!0),d(\"\")}return}Y.source!==\"blur\"&&(e.mode===\"combobox\"&&z(re),(Q=e.onSearch)===null||Q===void 0||Q.call(e,re))},V=re=>{let Y=re;e.mode!==\"tags\"&&(Y=re.map(ce=>{const ue=g.value.get(ce);return ue?.value}).filter(ce=>ce!==void 0));const Q=Array.from(new Set([...x.value,...Y]));z(Q),Q.forEach(ce=>{j(ce,!0)})},q=I(()=>e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1);n4(jc(h(h({},p),{flattenOptions:D,onActiveValue:F,defaultActiveFirstOption:N,onSelect:H,menuItemSelectedIcon:We(e,\"menuItemSelectedIcon\"),rawValues:x,fieldNames:c,virtual:q,listHeight:We(e,\"listHeight\"),listItemHeight:We(e,\"listItemHeight\"),childrenAsData:i})));const Z=J();n({focus(){var re;(re=Z.value)===null||re===void 0||re.focus()},blur(){var re;(re=Z.value)===null||re===void 0||re.blur()},scrollTo(re){var Y;(Y=Z.value)===null||Y===void 0||Y.scrollTo(re)}});const oe=I(()=>ot(e,[\"id\",\"mode\",\"prefixCls\",\"backfill\",\"fieldNames\",\"inputValue\",\"searchValue\",\"onSearch\",\"autoClearSearchValue\",\"onSelect\",\"onDeselect\",\"dropdownMatchSelectWidth\",\"filterOption\",\"filterSort\",\"optionFilterProp\",\"optionLabelProp\",\"options\",\"children\",\"defaultActiveFirstOption\",\"menuItemSelectedIcon\",\"virtual\",\"listHeight\",\"listItemHeight\",\"value\",\"defaultValue\",\"labelInValue\",\"onChange\"]));return()=>f(yv,A(A(A({},oe.value),o),{},{id:l,prefixCls:e.prefixCls,ref:Z,omitDomProps:p4,mode:e.mode,displayValues:_.value,onDisplayValuesChange:K,searchValue:u.value,onSearch:G,onSearchSplit:V,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:l4,emptyOptions:!D.value.length,activeValue:T.value,activeDescendantId:`${l}_list_${B.value}`}),r)}}),Cv=()=>null;Cv.isSelectOption=!0;Cv.displayName=\"ASelectOption\";const xv=()=>null;xv.isSelectOptGroup=!0;xv.displayName=\"ASelectOptGroup\";function wv(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{loading:n,multiple:o,prefixCls:r,hasFeedback:l,feedbackIcon:a,showArrow:i}=e,s=e.suffixIcon||t.suffixIcon&&t.suffixIcon(),c=e.clearIcon||t.clearIcon&&t.clearIcon(),u=e.menuItemSelectedIcon||t.menuItemSelectedIcon&&t.menuItemSelectedIcon(),d=e.removeIcon||t.removeIcon&&t.removeIcon(),p=c??f(jn,null,null),m=b=>f(Ve,null,[i!==!1&&b,l&&a]);let g=null;if(s!==void 0)g=m(s);else if(n)g=m(f(Qn,{spin:!0},null));else{const b=`${r}-suffix`;g=S=>{let{open:$,showSearch:w}=S;return m($&&w?f(Iu,{class:b},null):f(xa,{class:b},null))}}let v=null;u!==void 0?v=u:o?v=f(_u,null,null):v=null;let y=null;return d!==void 0?y=d:y=f(Wn,null,null),{clearIcon:p,suffixIcon:g,itemIcon:v,removeIcon:y}}function _v(e){const t=Symbol(\"contextKey\");return{useProvide:(r,l)=>{const a=vt({});return Qe(t,a),ze(()=>{h(a,r,l||{})}),a},useInject:()=>Je(t,e)||{}}}const Wc=Symbol(\"ContextProps\"),Vc=Symbol(\"InternalContextProps\"),g4=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:I(()=>!0);const n=J(new Map),o=(l,a)=>{n.value.set(l,a),n.value=new Map(n.value)},r=l=>{n.value.delete(l),n.value=new Map(n.value)};pe([t,n],()=>{}),Qe(Wc,e),Qe(Vc,{addFormItemField:o,removeFormItemField:r})},_p={id:I(()=>{}),onFieldBlur:()=>{},onFieldChange:()=>{},clearValidate:()=>{}},Ip={addFormItemField:()=>{},removeFormItemField:()=>{}},Jt=()=>{const e=Je(Vc,Ip),t=Symbol(\"FormItemFieldKey\"),n=fn();return e.addFormItemField(t,n.type),et(()=>{e.removeFormItemField(t)}),Qe(Vc,Ip),Qe(Wc,_p),Je(Wc,_p)},Kc=ne({compatConfig:{MODE:3},name:\"AFormItemRest\",setup(e,t){let{slots:n}=t;return Qe(Vc,Ip),Qe(Wc,_p),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),un=_v({}),Gc=ne({name:\"NoFormStatus\",setup(e,t){let{slots:n}=t;return un.useProvide({}),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}});function Cn(e,t,n){return le({[`${e}-status-success`]:t===\"success\",[`${e}-status-warning`]:t===\"warning\",[`${e}-status-error`]:t===\"error\",[`${e}-status-validating`]:t===\"validating\",[`${e}-has-feedback`]:n})}const Do=(e,t)=>t||e,h4=e=>{const{componentCls:t}=e;return{[t]:{display:\"inline-flex\",\"&-block\":{display:\"flex\",width:\"100%\"},\"&-vertical\":{flexDirection:\"column\"}}}},b4=e=>{const{componentCls:t}=e;return{[t]:{display:\"inline-flex\",\"&-rtl\":{direction:\"rtl\"},\"&-vertical\":{flexDirection:\"column\"},\"&-align\":{flexDirection:\"column\",\"&-center\":{alignItems:\"center\"},\"&-start\":{alignItems:\"flex-start\"},\"&-end\":{alignItems:\"flex-end\"},\"&-baseline\":{alignItems:\"baseline\"}},[`${t}-item`]:{\"&:empty\":{display:\"none\"}}}}},$1=Ge(\"Space\",e=>[b4(e),h4(e)]),y4=()=>({compactSize:String,compactDirection:W.oneOf(hn(\"horizontal\",\"vertical\")).def(\"horizontal\"),isFirstItem:ye(),isLastItem:ye()}),Yu=_v(null),Xr=(e,t)=>{const n=Yu.useInject(),o=I(()=>{if(!n||s$(n))return\"\";const{compactDirection:r,isFirstItem:l,isLastItem:a}=n,i=r===\"vertical\"?\"-vertical-\":\"-\";return le({[`${e.value}-compact${i}item`]:!0,[`${e.value}-compact${i}first-item`]:l,[`${e.value}-compact${i}last-item`]:a,[`${e.value}-compact${i}item-rtl`]:t.value===\"rtl\"})});return{compactSize:I(()=>n?.compactSize),compactDirection:I(()=>n?.compactDirection),compactItemClassnames:o}},$i=ne({name:\"NoCompactStyle\",setup(e,t){let{slots:n}=t;return Yu.useProvide(null),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),S4=()=>({prefixCls:String,size:{type:String},direction:W.oneOf(hn(\"horizontal\",\"vertical\")).def(\"horizontal\"),align:W.oneOf(hn(\"start\",\"end\",\"center\",\"baseline\")),block:{type:Boolean,default:void 0}}),$4=ne({name:\"CompactItem\",props:y4(),setup(e,t){let{slots:n}=t;return Yu.useProvide(e),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),Xc=ne({name:\"ASpaceCompact\",inheritAttrs:!1,props:S4(),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:r,direction:l}=Pe(\"space-compact\",e),a=Yu.useInject(),[i,s]=$1(r),c=I(()=>le(r.value,s.value,{[`${r.value}-rtl`]:l.value===\"rtl\",[`${r.value}-block`]:e.block,[`${r.value}-vertical`]:e.direction===\"vertical\"}));return()=>{var u;const d=$t(((u=o.default)===null||u===void 0?void 0:u.call(o))||[]);return d.length===0?null:i(f(\"div\",A(A({},n),{},{class:[c.value,n.class]}),[d.map((p,m)=>{var g;const v=p&&p.key||`${r.value}-item-${m}`,y=!a||s$(a);return f($4,{key:v,compactSize:(g=e.size)!==null&&g!==void 0?g:\"middle\",compactDirection:e.direction,isFirstItem:m===0&&(y||a?.isFirstItem),isLastItem:m===d.length-1&&(y||a?.isLastItem)},{default:()=>[p]})})]))}}}),C4=e=>({animationDuration:e,animationFillMode:\"both\"}),x4=e=>({animationDuration:e,animationFillMode:\"both\"}),Li=function(e,t,n,o){const l=(arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1)?\"&\":\"\";return{[`\n      ${l}${e}-enter,\n      ${l}${e}-appear\n    `]:h(h({},C4(o)),{animationPlayState:\"paused\"}),[`${l}${e}-leave`]:h(h({},x4(o)),{animationPlayState:\"paused\"}),[`\n      ${l}${e}-enter${e}-enter-active,\n      ${l}${e}-appear${e}-appear-active\n    `]:{animationName:t,animationPlayState:\"running\"},[`${l}${e}-leave${e}-leave-active`]:{animationName:n,animationPlayState:\"running\",pointerEvents:\"none\"}}},w4=new lt(\"antFadeIn\",{\"0%\":{opacity:0},\"100%\":{opacity:1}}),_4=new lt(\"antFadeOut\",{\"0%\":{opacity:1},\"100%\":{opacity:0}}),Iv=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const{antCls:n}=e,o=`${n}-fade`,r=t?\"&\":\"\";return[Li(o,w4,_4,e.motionDurationMid,t),{[`\n        ${r}${o}-enter,\n        ${r}${o}-appear\n      `]:{opacity:0,animationTimingFunction:\"linear\"},[`${r}${o}-leave`]:{animationTimingFunction:\"linear\"}}]},I4=new lt(\"antMoveDownIn\",{\"0%\":{transform:\"translate3d(0, 100%, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),P4=new lt(\"antMoveDownOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(0, 100%, 0)\",transformOrigin:\"0 0\",opacity:0}}),T4=new lt(\"antMoveLeftIn\",{\"0%\":{transform:\"translate3d(-100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),O4=new lt(\"antMoveLeftOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(-100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0}}),E4=new lt(\"antMoveRightIn\",{\"0%\":{transform:\"translate3d(100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),M4=new lt(\"antMoveRightOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(100%, 0, 0)\",transformOrigin:\"0 0\",opacity:0}}),A4=new lt(\"antMoveUpIn\",{\"0%\":{transform:\"translate3d(0, -100%, 0)\",transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),D4=new lt(\"antMoveUpOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:\"translate3d(0, -100%, 0)\",transformOrigin:\"0 0\",opacity:0}}),R4={\"move-up\":{inKeyframes:A4,outKeyframes:D4},\"move-down\":{inKeyframes:I4,outKeyframes:P4},\"move-left\":{inKeyframes:T4,outKeyframes:O4},\"move-right\":{inKeyframes:E4,outKeyframes:M4}},ya=(e,t)=>{const{antCls:n}=e,o=`${n}-${t}`,{inKeyframes:r,outKeyframes:l}=R4[t];return[Li(o,r,l,e.motionDurationMid),{[`\n        ${o}-enter,\n        ${o}-appear\n      `]:{opacity:0,animationTimingFunction:e.motionEaseOutCirc},[`${o}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},qu=new lt(\"antSlideUpIn\",{\"0%\":{transform:\"scaleY(0.8)\",transformOrigin:\"0% 0%\",opacity:0},\"100%\":{transform:\"scaleY(1)\",transformOrigin:\"0% 0%\",opacity:1}}),Zu=new lt(\"antSlideUpOut\",{\"0%\":{transform:\"scaleY(1)\",transformOrigin:\"0% 0%\",opacity:1},\"100%\":{transform:\"scaleY(0.8)\",transformOrigin:\"0% 0%\",opacity:0}}),Qu=new lt(\"antSlideDownIn\",{\"0%\":{transform:\"scaleY(0.8)\",transformOrigin:\"100% 100%\",opacity:0},\"100%\":{transform:\"scaleY(1)\",transformOrigin:\"100% 100%\",opacity:1}}),Ju=new lt(\"antSlideDownOut\",{\"0%\":{transform:\"scaleY(1)\",transformOrigin:\"100% 100%\",opacity:1},\"100%\":{transform:\"scaleY(0.8)\",transformOrigin:\"100% 100%\",opacity:0}}),k4=new lt(\"antSlideLeftIn\",{\"0%\":{transform:\"scaleX(0.8)\",transformOrigin:\"0% 0%\",opacity:0},\"100%\":{transform:\"scaleX(1)\",transformOrigin:\"0% 0%\",opacity:1}}),N4=new lt(\"antSlideLeftOut\",{\"0%\":{transform:\"scaleX(1)\",transformOrigin:\"0% 0%\",opacity:1},\"100%\":{transform:\"scaleX(0.8)\",transformOrigin:\"0% 0%\",opacity:0}}),B4=new lt(\"antSlideRightIn\",{\"0%\":{transform:\"scaleX(0.8)\",transformOrigin:\"100% 0%\",opacity:0},\"100%\":{transform:\"scaleX(1)\",transformOrigin:\"100% 0%\",opacity:1}}),L4=new lt(\"antSlideRightOut\",{\"0%\":{transform:\"scaleX(1)\",transformOrigin:\"100% 0%\",opacity:1},\"100%\":{transform:\"scaleX(0.8)\",transformOrigin:\"100% 0%\",opacity:0}}),F4={\"slide-up\":{inKeyframes:qu,outKeyframes:Zu},\"slide-down\":{inKeyframes:Qu,outKeyframes:Ju},\"slide-left\":{inKeyframes:k4,outKeyframes:N4},\"slide-right\":{inKeyframes:B4,outKeyframes:L4}},Go=(e,t)=>{const{antCls:n}=e,o=`${n}-${t}`,{inKeyframes:r,outKeyframes:l}=F4[t];return[Li(o,r,l,e.motionDurationMid),{[`\n      ${o}-enter,\n      ${o}-appear\n    `]:{transform:\"scale(0)\",transformOrigin:\"0% 0%\",opacity:0,animationTimingFunction:e.motionEaseOutQuint},[`${o}-leave`]:{animationTimingFunction:e.motionEaseInQuint}}]},Pv=new lt(\"antZoomIn\",{\"0%\":{transform:\"scale(0.2)\",opacity:0},\"100%\":{transform:\"scale(1)\",opacity:1}}),z4=new lt(\"antZoomOut\",{\"0%\":{transform:\"scale(1)\"},\"100%\":{transform:\"scale(0.2)\",opacity:0}}),q0=new lt(\"antZoomBigIn\",{\"0%\":{transform:\"scale(0.8)\",opacity:0},\"100%\":{transform:\"scale(1)\",opacity:1}}),Z0=new lt(\"antZoomBigOut\",{\"0%\":{transform:\"scale(1)\"},\"100%\":{transform:\"scale(0.8)\",opacity:0}}),H4=new lt(\"antZoomUpIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 0%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"50% 0%\"}}),j4=new lt(\"antZoomUpOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"50% 0%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 0%\",opacity:0}}),W4=new lt(\"antZoomLeftIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"0% 50%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"0% 50%\"}}),V4=new lt(\"antZoomLeftOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"0% 50%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"0% 50%\",opacity:0}}),K4=new lt(\"antZoomRightIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"100% 50%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"100% 50%\"}}),G4=new lt(\"antZoomRightOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"100% 50%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"100% 50%\",opacity:0}}),X4=new lt(\"antZoomDownIn\",{\"0%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 100%\",opacity:0},\"100%\":{transform:\"scale(1)\",transformOrigin:\"50% 100%\"}}),U4=new lt(\"antZoomDownOut\",{\"0%\":{transform:\"scale(1)\",transformOrigin:\"50% 100%\"},\"100%\":{transform:\"scale(0.8)\",transformOrigin:\"50% 100%\",opacity:0}}),Y4={zoom:{inKeyframes:Pv,outKeyframes:z4},\"zoom-big\":{inKeyframes:q0,outKeyframes:Z0},\"zoom-big-fast\":{inKeyframes:q0,outKeyframes:Z0},\"zoom-left\":{inKeyframes:W4,outKeyframes:V4},\"zoom-right\":{inKeyframes:K4,outKeyframes:G4},\"zoom-up\":{inKeyframes:H4,outKeyframes:j4},\"zoom-down\":{inKeyframes:X4,outKeyframes:U4}},Ta=(e,t)=>{const{antCls:n}=e,o=`${n}-${t}`,{inKeyframes:r,outKeyframes:l}=Y4[t];return[Li(o,r,l,t===\"zoom-big-fast\"?e.motionDurationFast:e.motionDurationMid),{[`\n        ${o}-enter,\n        ${o}-appear\n      `]:{transform:\"scale(0)\",opacity:0,animationTimingFunction:e.motionEaseOutCirc,\"&-prepare\":{transform:\"none\"}},[`${o}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},Fi=e=>({[e.componentCls]:{[`${e.antCls}-motion-collapse-legacy`]:{overflow:\"hidden\",\"&-active\":{transition:`height ${e.motionDurationMid} ${e.motionEaseInOut},\n        opacity ${e.motionDurationMid} ${e.motionEaseInOut} !important`}},[`${e.antCls}-motion-collapse`]:{overflow:\"hidden\",transition:`height ${e.motionDurationMid} ${e.motionEaseInOut},\n        opacity ${e.motionDurationMid} ${e.motionEaseInOut} !important`}}}),Q0=e=>{const{controlPaddingHorizontal:t}=e;return{position:\"relative\",display:\"block\",minHeight:e.controlHeight,padding:`${(e.controlHeight-e.fontSize*e.lineHeight)/2}px ${t}px`,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,lineHeight:e.lineHeight,boxSizing:\"border-box\"}},q4=e=>{const{antCls:t,componentCls:n}=e,o=`${n}-item`;return[{[`${n}-dropdown`]:h(h({},Ue(e)),{position:\"absolute\",top:-9999,zIndex:e.zIndexPopup,boxSizing:\"border-box\",padding:e.paddingXXS,overflow:\"hidden\",fontSize:e.fontSize,fontVariant:\"initial\",backgroundColor:e.colorBgElevated,borderRadius:e.borderRadiusLG,outline:\"none\",boxShadow:e.boxShadowSecondary,[`\n            &${t}-slide-up-enter${t}-slide-up-enter-active${n}-dropdown-placement-bottomLeft,\n            &${t}-slide-up-appear${t}-slide-up-appear-active${n}-dropdown-placement-bottomLeft\n          `]:{animationName:qu},[`\n            &${t}-slide-up-enter${t}-slide-up-enter-active${n}-dropdown-placement-topLeft,\n            &${t}-slide-up-appear${t}-slide-up-appear-active${n}-dropdown-placement-topLeft\n          `]:{animationName:Qu},[`&${t}-slide-up-leave${t}-slide-up-leave-active${n}-dropdown-placement-bottomLeft`]:{animationName:Zu},[`&${t}-slide-up-leave${t}-slide-up-leave-active${n}-dropdown-placement-topLeft`]:{animationName:Ju},\"&-hidden\":{display:\"none\"},\"&-empty\":{color:e.colorTextDisabled},[`${o}-empty`]:h(h({},Q0(e)),{color:e.colorTextDisabled}),[`${o}`]:h(h({},Q0(e)),{cursor:\"pointer\",transition:`background ${e.motionDurationSlow} ease`,borderRadius:e.borderRadiusSM,\"&-group\":{color:e.colorTextDescription,fontSize:e.fontSizeSM,cursor:\"default\"},\"&-option\":{display:\"flex\",\"&-content\":h({flex:\"auto\"},Gt),\"&-state\":{flex:\"none\"},[`&-active:not(${o}-option-disabled)`]:{backgroundColor:e.controlItemBgHover},[`&-selected:not(${o}-option-disabled)`]:{color:e.colorText,fontWeight:e.fontWeightStrong,backgroundColor:e.controlItemBgActive,[`${o}-option-state`]:{color:e.colorPrimary}},\"&-disabled\":{[`&${o}-option-selected`]:{backgroundColor:e.colorBgContainerDisabled},color:e.colorTextDisabled,cursor:\"not-allowed\"},\"&-grouped\":{paddingInlineStart:e.controlPaddingHorizontal*2}}}),\"&-rtl\":{direction:\"rtl\"}})},Go(e,\"slide-up\"),Go(e,\"slide-down\"),ya(e,\"move-up\"),ya(e,\"move-down\")]},Nl=2;function C1(e){let{controlHeightSM:t,controlHeight:n,lineWidth:o}=e;const r=(n-t)/2-o,l=Math.ceil(r/2);return[r,l]}function Qd(e,t){const{componentCls:n,iconCls:o}=e,r=`${n}-selection-overflow`,l=e.controlHeightSM,[a]=C1(e),i=t?`${n}-${t}`:\"\";return{[`${n}-multiple${i}`]:{fontSize:e.fontSize,[r]:{position:\"relative\",display:\"flex\",flex:\"auto\",flexWrap:\"wrap\",maxWidth:\"100%\",\"&-item\":{flex:\"none\",alignSelf:\"center\",maxWidth:\"100%\",display:\"inline-flex\"}},[`${n}-selector`]:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",padding:`${a-Nl}px ${Nl*2}px`,borderRadius:e.borderRadius,[`${n}-show-search&`]:{cursor:\"text\"},[`${n}-disabled&`]:{background:e.colorBgContainerDisabled,cursor:\"not-allowed\"},\"&:after\":{display:\"inline-block\",width:0,margin:`${Nl}px 0`,lineHeight:`${l}px`,content:'\"\\\\a0\"'}},[`\n        &${n}-show-arrow ${n}-selector,\n        &${n}-allow-clear ${n}-selector\n      `]:{paddingInlineEnd:e.fontSizeIcon+e.controlPaddingHorizontal},[`${n}-selection-item`]:{position:\"relative\",display:\"flex\",flex:\"none\",boxSizing:\"border-box\",maxWidth:\"100%\",height:l,marginTop:Nl,marginBottom:Nl,lineHeight:`${l-e.lineWidth*2}px`,background:e.colorFillSecondary,border:`${e.lineWidth}px solid ${e.colorSplit}`,borderRadius:e.borderRadiusSM,cursor:\"default\",transition:`font-size ${e.motionDurationSlow}, line-height ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,userSelect:\"none\",marginInlineEnd:Nl*2,paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS/2,[`${n}-disabled&`]:{color:e.colorTextDisabled,borderColor:e.colorBorder,cursor:\"not-allowed\"},\"&-content\":{display:\"inline-block\",marginInlineEnd:e.paddingXS/2,overflow:\"hidden\",whiteSpace:\"pre\",textOverflow:\"ellipsis\"},\"&-remove\":h(h({},Il()),{display:\"inline-block\",color:e.colorIcon,fontWeight:\"bold\",fontSize:10,lineHeight:\"inherit\",cursor:\"pointer\",[`> ${o}`]:{verticalAlign:\"-0.2em\"},\"&:hover\":{color:e.colorIconHover}})},[`${r}-item + ${r}-item`]:{[`${n}-selection-search`]:{marginInlineStart:0}},[`${n}-selection-search`]:{display:\"inline-flex\",position:\"relative\",maxWidth:\"100%\",marginInlineStart:e.inputPaddingHorizontalBase-a,\"\\n          &-input,\\n          &-mirror\\n        \":{height:l,fontFamily:e.fontFamily,lineHeight:`${l}px`,transition:`all ${e.motionDurationSlow}`},\"&-input\":{width:\"100%\",minWidth:4.1},\"&-mirror\":{position:\"absolute\",top:0,insetInlineStart:0,insetInlineEnd:\"auto\",zIndex:999,whiteSpace:\"pre\",visibility:\"hidden\"}},[`${n}-selection-placeholder `]:{position:\"absolute\",top:\"50%\",insetInlineStart:e.inputPaddingHorizontalBase,insetInlineEnd:e.inputPaddingHorizontalBase,transform:\"translateY(-50%)\",transition:`all ${e.motionDurationSlow}`}}}}function Z4(e){const{componentCls:t}=e,n=Le(e,{controlHeight:e.controlHeightSM,controlHeightSM:e.controlHeightXS,borderRadius:e.borderRadiusSM,borderRadiusSM:e.borderRadiusXS}),[,o]=C1(e);return[Qd(e),Qd(n,\"sm\"),{[`${t}-multiple${t}-sm`]:{[`${t}-selection-placeholder`]:{insetInlineStart:e.controlPaddingHorizontalSM-e.lineWidth,insetInlineEnd:\"auto\"},[`${t}-selection-search`]:{marginInlineStart:o}}},Qd(Le(e,{fontSize:e.fontSizeLG,controlHeight:e.controlHeightLG,controlHeightSM:e.controlHeight,borderRadius:e.borderRadiusLG,borderRadiusSM:e.borderRadius}),\"lg\")]}function Jd(e,t){const{componentCls:n,inputPaddingHorizontalBase:o,borderRadius:r}=e,l=e.controlHeight-e.lineWidth*2,a=Math.ceil(e.fontSize*1.25),i=t?`${n}-${t}`:\"\";return{[`${n}-single${i}`]:{fontSize:e.fontSize,[`${n}-selector`]:h(h({},Ue(e)),{display:\"flex\",borderRadius:r,[`${n}-selection-search`]:{position:\"absolute\",top:0,insetInlineStart:o,insetInlineEnd:o,bottom:0,\"&-input\":{width:\"100%\"}},[`\n          ${n}-selection-item,\n          ${n}-selection-placeholder\n        `]:{padding:0,lineHeight:`${l}px`,transition:`all ${e.motionDurationSlow}`,\"@supports (-moz-appearance: meterbar)\":{lineHeight:`${l}px`}},[`${n}-selection-item`]:{position:\"relative\",userSelect:\"none\"},[`${n}-selection-placeholder`]:{transition:\"none\",pointerEvents:\"none\"},[[\"&:after\",`${n}-selection-item:after`,`${n}-selection-placeholder:after`].join(\",\")]:{display:\"inline-block\",width:0,visibility:\"hidden\",content:'\"\\\\a0\"'}}),[`\n        &${n}-show-arrow ${n}-selection-item,\n        &${n}-show-arrow ${n}-selection-placeholder\n      `]:{paddingInlineEnd:a},[`&${n}-open ${n}-selection-item`]:{color:e.colorTextPlaceholder},[`&:not(${n}-customize-input)`]:{[`${n}-selector`]:{width:\"100%\",height:e.controlHeight,padding:`0 ${o}px`,[`${n}-selection-search-input`]:{height:l},\"&:after\":{lineHeight:`${l}px`}}},[`&${n}-customize-input`]:{[`${n}-selector`]:{\"&:after\":{display:\"none\"},[`${n}-selection-search`]:{position:\"static\",width:\"100%\"},[`${n}-selection-placeholder`]:{position:\"absolute\",insetInlineStart:0,insetInlineEnd:0,padding:`0 ${o}px`,\"&:after\":{display:\"none\"}}}}}}}function Q4(e){const{componentCls:t}=e,n=e.controlPaddingHorizontalSM-e.lineWidth;return[Jd(e),Jd(Le(e,{controlHeight:e.controlHeightSM,borderRadius:e.borderRadiusSM}),\"sm\"),{[`${t}-single${t}-sm`]:{[`&:not(${t}-customize-input)`]:{[`${t}-selection-search`]:{insetInlineStart:n,insetInlineEnd:n},[`${t}-selector`]:{padding:`0 ${n}px`},[`&${t}-show-arrow ${t}-selection-search`]:{insetInlineEnd:n+e.fontSize*1.5},[`\n            &${t}-show-arrow ${t}-selection-item,\n            &${t}-show-arrow ${t}-selection-placeholder\n          `]:{paddingInlineEnd:e.fontSize*1.5}}}},Jd(Le(e,{controlHeight:e.controlHeightLG,fontSize:e.fontSizeLG,borderRadius:e.borderRadiusLG}),\"lg\")]}function J4(e,t,n){const{focusElCls:o,focus:r,borderElCls:l}=n,a=l?\"> *\":\"\",i=[\"hover\",r?\"focus\":null,\"active\"].filter(Boolean).map(s=>`&:${s} ${a}`).join(\",\");return{[`&-item:not(${t}-last-item)`]:{marginInlineEnd:-e.lineWidth},\"&-item\":h(h({[i]:{zIndex:2}},o?{[`&${o}`]:{zIndex:2}}:{}),{[`&[disabled] ${a}`]:{zIndex:0}})}}function eD(e,t,n){const{borderElCls:o}=n,r=o?`> ${o}`:\"\";return{[`&-item:not(${t}-first-item):not(${t}-last-item) ${r}`]:{borderRadius:0},[`&-item:not(${t}-last-item)${t}-first-item`]:{[`& ${r}, &${e}-sm ${r}, &${e}-lg ${r}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&-item:not(${t}-first-item)${t}-last-item`]:{[`& ${r}, &${e}-sm ${r}, &${e}-lg ${r}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}function Oa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{focus:!0};const{componentCls:n}=e,o=`${n}-compact`;return{[o]:h(h({},J4(e,o,t)),eD(n,o,t))}}const tD=e=>{const{componentCls:t}=e;return{position:\"relative\",backgroundColor:e.colorBgContainer,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,input:{cursor:\"pointer\"},[`${t}-show-search&`]:{cursor:\"text\",input:{cursor:\"auto\",color:\"inherit\"}},[`${t}-disabled&`]:{color:e.colorTextDisabled,background:e.colorBgContainerDisabled,cursor:\"not-allowed\",[`${t}-multiple&`]:{background:e.colorBgContainerDisabled},input:{cursor:\"not-allowed\"}}}},ef=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{componentCls:o,borderHoverColor:r,outlineColor:l,antCls:a}=t,i=n?{[`${o}-selector`]:{borderColor:r}}:{};return{[e]:{[`&:not(${o}-disabled):not(${o}-customize-input):not(${a}-pagination-size-changer)`]:h(h({},i),{[`${o}-focused& ${o}-selector`]:{borderColor:r,boxShadow:`0 0 0 ${t.controlOutlineWidth}px ${l}`,borderInlineEndWidth:`${t.controlLineWidth}px !important`,outline:0},[`&:hover ${o}-selector`]:{borderColor:r,borderInlineEndWidth:`${t.controlLineWidth}px !important`}})}}},nD=e=>{const{componentCls:t}=e;return{[`${t}-selection-search-input`]:{margin:0,padding:0,background:\"transparent\",border:\"none\",outline:\"none\",appearance:\"none\",\"&::-webkit-search-cancel-button\":{display:\"none\",\"-webkit-appearance\":\"none\"}}}},oD=e=>{const{componentCls:t,inputPaddingHorizontalBase:n,iconCls:o}=e;return{[t]:h(h({},Ue(e)),{position:\"relative\",display:\"inline-block\",cursor:\"pointer\",[`&:not(${t}-customize-input) ${t}-selector`]:h(h({},tD(e)),nD(e)),[`${t}-selection-item`]:h({flex:1,fontWeight:\"normal\"},Gt),[`${t}-selection-placeholder`]:h(h({},Gt),{flex:1,color:e.colorTextPlaceholder,pointerEvents:\"none\"}),[`${t}-arrow`]:h(h({},Il()),{position:\"absolute\",top:\"50%\",insetInlineStart:\"auto\",insetInlineEnd:n,height:e.fontSizeIcon,marginTop:-e.fontSizeIcon/2,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,lineHeight:1,textAlign:\"center\",pointerEvents:\"none\",display:\"flex\",alignItems:\"center\",[o]:{verticalAlign:\"top\",transition:`transform ${e.motionDurationSlow}`,\"> svg\":{verticalAlign:\"top\"},[`&:not(${t}-suffix)`]:{pointerEvents:\"auto\"}},[`${t}-disabled &`]:{cursor:\"not-allowed\"},\"> *:not(:last-child)\":{marginInlineEnd:8}}),[`${t}-clear`]:{position:\"absolute\",top:\"50%\",insetInlineStart:\"auto\",insetInlineEnd:n,zIndex:1,display:\"inline-block\",width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:-e.fontSizeIcon/2,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:\"normal\",lineHeight:1,textAlign:\"center\",textTransform:\"none\",background:e.colorBgContainer,cursor:\"pointer\",opacity:0,transition:`color ${e.motionDurationMid} ease, opacity ${e.motionDurationSlow} ease`,textRendering:\"auto\",\"&:before\":{display:\"block\"},\"&:hover\":{color:e.colorTextTertiary}},\"&:hover\":{[`${t}-clear`]:{opacity:1}}}),[`${t}-has-feedback`]:{[`${t}-clear`]:{insetInlineEnd:n+e.fontSize+e.paddingXXS}}}},rD=e=>{const{componentCls:t}=e;return[{[t]:{[`&-borderless ${t}-selector`]:{backgroundColor:\"transparent !important\",borderColor:\"transparent !important\",boxShadow:\"none !important\"},[`&${t}-in-form-item`]:{width:\"100%\"}}},oD(e),Q4(e),Z4(e),q4(e),{[`${t}-rtl`]:{direction:\"rtl\"}},ef(t,Le(e,{borderHoverColor:e.colorPrimaryHover,outlineColor:e.controlOutline})),ef(`${t}-status-error`,Le(e,{borderHoverColor:e.colorErrorHover,outlineColor:e.colorErrorOutline}),!0),ef(`${t}-status-warning`,Le(e,{borderHoverColor:e.colorWarningHover,outlineColor:e.colorWarningOutline}),!0),Oa(e,{borderElCls:`${t}-selector`,focusElCls:`${t}-focused`})]},Tv=Ge(\"Select\",(e,t)=>{let{rootPrefixCls:n}=t;const o=Le(e,{rootPrefixCls:n,inputPaddingHorizontalBase:e.paddingSM-1});return[rD(o)]},e=>({zIndexPopup:e.zIndexPopupBase+50})),ed=()=>h(h({},ot(S1(),[\"inputIcon\",\"mode\",\"getInputElement\",\"getRawInputElement\",\"backfill\"])),{value:Fe([Array,Object,String,Number]),defaultValue:Fe([Array,Object,String,Number]),notFoundContent:W.any,suffixIcon:W.any,itemIcon:W.any,size:ke(),mode:ke(),bordered:ye(!0),transitionName:String,choiceTransitionName:ke(\"\"),popupClassName:String,dropdownClassName:String,placement:ke(),status:ke(),\"onUpdate:value\":de()}),J0=\"SECRET_COMBOBOX_MODE_DO_NOT_USE\",nn=ne({compatConfig:{MODE:3},name:\"ASelect\",Option:Cv,OptGroup:xv,inheritAttrs:!1,props:Ze(ed(),{listHeight:256,listItemHeight:24}),SECRET_COMBOBOX_MODE_DO_NOT_USE:J0,slots:Object,setup(e,t){let{attrs:n,emit:o,slots:r,expose:l}=t;const a=J(),i=Jt(),s=un.useInject(),c=I(()=>Do(s.status,e.status)),u=()=>{var j;(j=a.value)===null||j===void 0||j.focus()},d=()=>{var j;(j=a.value)===null||j===void 0||j.blur()},p=j=>{var H;(H=a.value)===null||H===void 0||H.scrollTo(j)},m=I(()=>{const{mode:j}=e;if(j!==\"combobox\")return j===J0?\"combobox\":j}),{prefixCls:g,direction:v,renderEmpty:y,size:b,getPrefixCls:S,getPopupContainer:$,disabled:w,select:C}=Pe(\"select\",e),{compactSize:_,compactItemClassnames:x}=Xr(g,v),P=I(()=>_.value||b.value),O=zn(),M=I(()=>{var j;return(j=w.value)!==null&&j!==void 0?j:O.value}),[E,R]=Tv(g),D=I(()=>S()),z=I(()=>e.placement!==void 0?e.placement:v.value===\"rtl\"?\"bottomRight\":\"bottomLeft\"),T=I(()=>_n(D.value,vv(z.value),e.transitionName)),k=I(()=>le({[`${g.value}-lg`]:P.value===\"large\",[`${g.value}-sm`]:P.value===\"small\",[`${g.value}-rtl`]:v.value===\"rtl\",[`${g.value}-borderless`]:!e.bordered,[`${g.value}-in-form-item`]:s.isFormItemInput},Cn(g.value,c.value,s.hasFeedback),x.value,R.value)),B=function(){for(var j=arguments.length,H=new Array(j),K=0;K<j;K++)H[K]=arguments[K];o(\"update:value\",H[0]),o(\"change\",...H),i.onFieldChange()},L=j=>{o(\"blur\",j),i.onFieldBlur()};l({blur:d,focus:u,scrollTo:p});const N=I(()=>m.value===\"multiple\"||m.value===\"tags\"),F=I(()=>e.showArrow!==void 0?e.showArrow:e.loading||!(N.value||m.value===\"combobox\"));return()=>{var j,H,K,G;const{notFoundContent:V,listHeight:q=256,listItemHeight:Z=24,popupClassName:oe,dropdownClassName:re,virtual:Y,dropdownMatchSelectWidth:Q,id:ce=i.id.value,placeholder:ue=(j=r.placeholder)===null||j===void 0?void 0:j.call(r),showArrow:be}=e,{hasFeedback:Ce,feedbackIcon:ge}=s;let Se;V!==void 0?Se=V:r.notFoundContent?Se=r.notFoundContent():m.value===\"combobox\"?Se=null:Se=y?.(\"Select\")||f(ov,{componentName:\"Select\"},null);const{suffixIcon:X,itemIcon:U,removeIcon:ie,clearIcon:ve}=wv(h(h({},e),{multiple:N.value,prefixCls:g.value,hasFeedback:Ce,feedbackIcon:ge,showArrow:F.value}),r),me=ot(e,[\"prefixCls\",\"suffixIcon\",\"itemIcon\",\"removeIcon\",\"clearIcon\",\"size\",\"bordered\",\"status\"]),he=le(oe||re,{[`${g.value}-dropdown-${v.value}`]:v.value===\"rtl\"},R.value);return E(f(v4,A(A(A({ref:a,virtual:Y,dropdownMatchSelectWidth:Q},me),n),{},{showSearch:(H=e.showSearch)!==null&&H!==void 0?H:(K=C?.value)===null||K===void 0?void 0:K.showSearch,placeholder:ue,listHeight:q,listItemHeight:Z,mode:m.value,prefixCls:g.value,direction:v.value,inputIcon:X,menuItemSelectedIcon:U,removeIcon:ie,clearIcon:ve,notFoundContent:Se,class:[k.value,n.class],getPopupContainer:$?.value,dropdownClassName:he,onChange:B,onBlur:L,id:ce,dropdownRender:me.dropdownRender||r.dropdownRender,transitionName:T.value,children:(G=r.default)===null||G===void 0?void 0:G.call(r),tagRender:e.tagRender||r.tagRender,optionLabelRender:r.optionLabel,maxTagPlaceholder:e.maxTagPlaceholder||r.maxTagPlaceholder,showArrow:Ce||be,disabled:M.value}),{option:r.option}))}}});nn.install=function(e){return e.component(nn.name,nn),e.component(nn.Option.displayName,nn.Option),e.component(nn.OptGroup.displayName,nn.OptGroup),e};const Ov=nn.Option,lD=nn.OptGroup,Ar=()=>null;Ar.isSelectOption=!0;Ar.displayName=\"AAutoCompleteOption\";const ta=()=>null;ta.isSelectOptGroup=!0;ta.displayName=\"AAutoCompleteOptGroup\";function aD(e){var t,n;return((t=e?.type)===null||t===void 0?void 0:t.isSelectOption)||((n=e?.type)===null||n===void 0?void 0:n.isSelectOptGroup)}const iD=()=>h(h({},ot(ed(),[\"loading\",\"mode\",\"optionLabelProp\",\"labelInValue\"])),{dataSource:Array,dropdownMenuStyle:{type:Object,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},prefixCls:String,showSearch:{type:Boolean,default:void 0},transitionName:String,choiceTransitionName:{type:String,default:\"zoom\"},autofocus:{type:Boolean,default:void 0},backfill:{type:Boolean,default:void 0},filterOption:{type:[Boolean,Function],default:!1},defaultActiveFirstOption:{type:Boolean,default:!0},status:String}),sD=Ar,cD=ta,tf=ne({compatConfig:{MODE:3},name:\"AAutoComplete\",inheritAttrs:!1,props:iD(),slots:Object,setup(e,t){let{slots:n,attrs:o,expose:r}=t;eo(!e.dropdownClassName);const l=J(),a=()=>{var u;const d=$t((u=n.default)===null||u===void 0?void 0:u.call(n));return d.length?d[0]:void 0};r({focus:()=>{var u;(u=l.value)===null||u===void 0||u.focus()},blur:()=>{var u;(u=l.value)===null||u===void 0||u.blur()}});const{prefixCls:c}=Pe(\"select\",e);return()=>{var u,d,p;const{size:m,dataSource:g,notFoundContent:v=(u=n.notFoundContent)===null||u===void 0?void 0:u.call(n)}=e;let y;const{class:b}=o,S={[b]:!!b,[`${c.value}-lg`]:m===\"large\",[`${c.value}-sm`]:m===\"small\",[`${c.value}-show-search`]:!0,[`${c.value}-auto-complete`]:!0};if(e.options===void 0){const w=((d=n.dataSource)===null||d===void 0?void 0:d.call(n))||((p=n.options)===null||p===void 0?void 0:p.call(n))||[];w.length&&aD(w[0])?y=w:y=g?g.map(C=>{if(Kt(C))return C;switch(typeof C){case\"string\":return f(Ar,{key:C,value:C},{default:()=>[C]});case\"object\":return f(Ar,{key:C.value,value:C.value},{default:()=>[C.text]});default:throw new Error(\"AutoComplete[dataSource] only supports type `string[] | Object[]`.\")}}):[]}const $=ot(h(h(h({},e),o),{mode:nn.SECRET_COMBOBOX_MODE_DO_NOT_USE,getInputElement:a,notFoundContent:v,class:S,popupClassName:e.popupClassName||e.dropdownClassName,ref:l}),[\"dataSource\",\"loading\"]);return f(nn,$,A({default:()=>[y]},ot(n,[\"default\",\"dataSource\",\"options\"])))}}}),uD=h(tf,{Option:Ar,OptGroup:ta,install(e){return e.component(tf.name,tf),e.component(Ar.displayName,Ar),e.component(ta.displayName,ta),e}}),vs=(e,t,n,o,r)=>({backgroundColor:e,border:`${o.lineWidth}px ${o.lineType} ${t}`,[`${r}-icon`]:{color:n}}),dD=e=>{const{componentCls:t,motionDurationSlow:n,marginXS:o,marginSM:r,fontSize:l,fontSizeLG:a,lineHeight:i,borderRadiusLG:s,motionEaseInOutCirc:c,alertIconSizeLG:u,colorText:d,paddingContentVerticalSM:p,alertPaddingHorizontal:m,paddingMD:g,paddingContentHorizontalLG:v}=e;return{[t]:h(h({},Ue(e)),{position:\"relative\",display:\"flex\",alignItems:\"center\",padding:`${p}px ${m}px`,wordWrap:\"break-word\",borderRadius:s,[`&${t}-rtl`]:{direction:\"rtl\"},[`${t}-content`]:{flex:1,minWidth:0},[`${t}-icon`]:{marginInlineEnd:o,lineHeight:0},\"&-description\":{display:\"none\",fontSize:l,lineHeight:i},\"&-message\":{color:d},[`&${t}-motion-leave`]:{overflow:\"hidden\",opacity:1,transition:`max-height ${n} ${c}, opacity ${n} ${c},\n        padding-top ${n} ${c}, padding-bottom ${n} ${c},\n        margin-bottom ${n} ${c}`},[`&${t}-motion-leave-active`]:{maxHeight:0,marginBottom:\"0 !important\",paddingTop:0,paddingBottom:0,opacity:0}}),[`${t}-with-description`]:{alignItems:\"flex-start\",paddingInline:v,paddingBlock:g,[`${t}-icon`]:{marginInlineEnd:r,fontSize:u,lineHeight:0},[`${t}-message`]:{display:\"block\",marginBottom:o,color:d,fontSize:a},[`${t}-description`]:{display:\"block\"}},[`${t}-banner`]:{marginBottom:0,border:\"0 !important\",borderRadius:0}}},fD=e=>{const{componentCls:t,colorSuccess:n,colorSuccessBorder:o,colorSuccessBg:r,colorWarning:l,colorWarningBorder:a,colorWarningBg:i,colorError:s,colorErrorBorder:c,colorErrorBg:u,colorInfo:d,colorInfoBorder:p,colorInfoBg:m}=e;return{[t]:{\"&-success\":vs(r,o,n,e,t),\"&-info\":vs(m,p,d,e,t),\"&-warning\":vs(i,a,l,e,t),\"&-error\":h(h({},vs(u,c,s,e,t)),{[`${t}-description > pre`]:{margin:0,padding:0}})}}},pD=e=>{const{componentCls:t,iconCls:n,motionDurationMid:o,marginXS:r,fontSizeIcon:l,colorIcon:a,colorIconHover:i}=e;return{[t]:{\"&-action\":{marginInlineStart:r},[`${t}-close-icon`]:{marginInlineStart:r,padding:0,overflow:\"hidden\",fontSize:l,lineHeight:`${l}px`,backgroundColor:\"transparent\",border:\"none\",outline:\"none\",cursor:\"pointer\",[`${n}-close`]:{color:a,transition:`color ${o}`,\"&:hover\":{color:i}}},\"&-close-text\":{color:a,transition:`color ${o}`,\"&:hover\":{color:i}}}}},mD=e=>[dD(e),fD(e),pD(e)],vD=Ge(\"Alert\",e=>{const{fontSizeHeading3:t}=e,n=Le(e,{alertIconSizeLG:t,alertPaddingHorizontal:12});return[mD(n)]}),gD={success:gr,info:wa,error:jn,warning:vr},hD={success:e$,info:JS,error:QS,warning:ZS},bD=hn(\"success\",\"info\",\"warning\",\"error\"),yD=()=>({type:W.oneOf(bD),closable:{type:Boolean,default:void 0},closeText:W.any,message:W.any,description:W.any,afterClose:Function,showIcon:{type:Boolean,default:void 0},prefixCls:String,banner:{type:Boolean,default:void 0},icon:W.any,closeIcon:W.any,onClose:Function}),SD=ne({compatConfig:{MODE:3},name:\"AAlert\",inheritAttrs:!1,props:yD(),setup(e,t){let{slots:n,emit:o,attrs:r,expose:l}=t;const{prefixCls:a,direction:i}=Pe(\"alert\",e),[s,c]=vD(a),u=ee(!1),d=ee(!1),p=ee(),m=b=>{b.preventDefault();const S=p.value;S.style.height=`${S.offsetHeight}px`,S.style.height=`${S.offsetHeight}px`,u.value=!0,o(\"close\",b)},g=()=>{var b;u.value=!1,d.value=!0,(b=e.afterClose)===null||b===void 0||b.call(e)},v=I(()=>{const{type:b}=e;return b!==void 0?b:e.banner?\"warning\":\"info\"});l({animationEnd:g});const y=ee({});return()=>{var b,S,$,w,C,_,x,P,O,M;const{banner:E,closeIcon:R=(b=n.closeIcon)===null||b===void 0?void 0:b.call(n)}=e;let{closable:D,showIcon:z}=e;const T=(S=e.closeText)!==null&&S!==void 0?S:($=n.closeText)===null||$===void 0?void 0:$.call(n),k=(w=e.description)!==null&&w!==void 0?w:(C=n.description)===null||C===void 0?void 0:C.call(n),B=(_=e.message)!==null&&_!==void 0?_:(x=n.message)===null||x===void 0?void 0:x.call(n),L=(P=e.icon)!==null&&P!==void 0?P:(O=n.icon)===null||O===void 0?void 0:O.call(n),N=(M=n.action)===null||M===void 0?void 0:M.call(n);z=E&&z===void 0?!0:z;const F=(k?hD:gD)[v.value]||null;T&&(D=!0);const j=a.value,H=le(j,{[`${j}-${v.value}`]:!0,[`${j}-closing`]:u.value,[`${j}-with-description`]:!!k,[`${j}-no-icon`]:!z,[`${j}-banner`]:!!E,[`${j}-closable`]:D,[`${j}-rtl`]:i.value===\"rtl\",[c.value]:!0}),K=D?f(\"button\",{type:\"button\",onClick:m,class:`${j}-close-icon`,tabindex:0},[T?f(\"span\",{class:`${j}-close-text`},[T]):R===void 0?f(Wn,null,null):R]):null,G=L&&(Kt(L)?dt(L,{class:`${j}-icon`}):f(\"span\",{class:`${j}-icon`},[L]))||f(F,{class:`${j}-icon`},null),V=bo(`${j}-motion`,{appear:!1,css:!0,onAfterLeave:g,onBeforeLeave:q=>{q.style.maxHeight=`${q.offsetHeight}px`},onLeave:q=>{q.style.maxHeight=\"0px\"}});return s(d.value?null:f(cn,V,{default:()=>[xn(f(\"div\",A(A({role:\"alert\"},r),{},{style:[r.style,y.value],class:[r.class,H],\"data-show\":!u.value,ref:p}),[z?G:null,f(\"div\",{class:`${j}-content`},[B?f(\"div\",{class:`${j}-message`},[B]):null,k?f(\"div\",{class:`${j}-description`},[k]):null]),N?f(\"div\",{class:`${j}-action`},[N]):null,K]),[[On,!u.value]])]}))}}}),Xo=Dt(SD),ar=[\"xxxl\",\"xxl\",\"xl\",\"lg\",\"md\",\"sm\",\"xs\"],$D=e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`,xxxl:`{min-width: ${e.screenXXXL}px}`});function Ev(){const[,e]=br();return I(()=>{const t=$D(e.value),n=new Map;let o=-1,r={};return{matchHandlers:{},dispatch(l){return r=l,n.forEach(a=>a(r)),n.size>=1},subscribe(l){return n.size||this.register(),o+=1,n.set(o,l),l(r),o},unsubscribe(l){n.delete(l),n.size||this.unregister()},unregister(){Object.keys(t).forEach(l=>{const a=t[l],i=this.matchHandlers[a];i?.mql.removeListener(i?.listener)}),n.clear()},register(){Object.keys(t).forEach(l=>{const a=t[l],i=c=>{let{matches:u}=c;this.dispatch(h(h({},r),{[l]:u}))},s=window.matchMedia(a);s.addListener(i),this.matchHandlers[a]={mql:s,listener:i},i(s)})},responsiveMap:t}})}function Ea(){const e=ee({});let t=null;const n=Ev();return Ne(()=>{t=n.value.subscribe(o=>{e.value=o})}),Mn(()=>{n.value.unsubscribe(t)}),e}function Un(e){const t=ee();return ze(()=>{t.value=e()},{flush:\"sync\"}),t}const CD=e=>{const{antCls:t,componentCls:n,iconCls:o,avatarBg:r,avatarColor:l,containerSize:a,containerSizeLG:i,containerSizeSM:s,textFontSize:c,textFontSizeLG:u,textFontSizeSM:d,borderRadius:p,borderRadiusLG:m,borderRadiusSM:g,lineWidth:v,lineType:y}=e,b=(S,$,w)=>({width:S,height:S,lineHeight:`${S-v*2}px`,borderRadius:\"50%\",[`&${n}-square`]:{borderRadius:w},[`${n}-string`]:{position:\"absolute\",left:{_skip_check_:!0,value:\"50%\"},transformOrigin:\"0 center\"},[`&${n}-icon`]:{fontSize:$,[`> ${o}`]:{margin:0}}});return{[n]:h(h(h(h({},Ue(e)),{position:\"relative\",display:\"inline-block\",overflow:\"hidden\",color:l,whiteSpace:\"nowrap\",textAlign:\"center\",verticalAlign:\"middle\",background:r,border:`${v}px ${y} transparent`,\"&-image\":{background:\"transparent\"},[`${t}-image-img`]:{display:\"block\"}}),b(a,c,p)),{\"&-lg\":h({},b(i,u,m)),\"&-sm\":h({},b(s,d,g)),\"> img\":{display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"cover\"}})}},xD=e=>{const{componentCls:t,groupBorderColor:n,groupOverlapping:o,groupSpace:r}=e;return{[`${t}-group`]:{display:\"inline-flex\",[`${t}`]:{borderColor:n},\"> *:not(:first-child)\":{marginInlineStart:o}},[`${t}-group-popover`]:{[`${t} + ${t}`]:{marginInlineStart:r}}}},x1=Ge(\"Avatar\",e=>{const{colorTextLightSolid:t,colorTextPlaceholder:n}=e,o=Le(e,{avatarBg:n,avatarColor:t});return[CD(o),xD(o)]},e=>{const{controlHeight:t,controlHeightLG:n,controlHeightSM:o,fontSize:r,fontSizeLG:l,fontSizeXL:a,fontSizeHeading3:i,marginXS:s,marginXXS:c,colorBorderBg:u}=e;return{containerSize:t,containerSizeLG:n,containerSizeSM:o,textFontSize:Math.round((l+a)/2),textFontSizeLG:i,textFontSizeSM:r,groupSpace:c,groupOverlapping:-s,groupBorderColor:u}}),w1=Symbol(\"AvatarContextKey\"),wD=()=>Je(w1,{}),_D=e=>Qe(w1,e),ID=()=>({prefixCls:String,shape:{type:String,default:\"circle\"},size:{type:[Number,String,Object],default:()=>\"default\"},src:String,srcset:String,icon:W.any,alt:String,gap:Number,draggable:{type:Boolean,default:void 0},crossOrigin:String,loadError:{type:Function}}),ml=ne({compatConfig:{MODE:3},name:\"AAvatar\",inheritAttrs:!1,props:ID(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const r=ee(!0),l=ee(!1),a=ee(1),i=ee(null),s=ee(null),{prefixCls:c}=Pe(\"avatar\",e),[u,d]=x1(c),p=wD(),m=I(()=>e.size===\"default\"?p.size:e.size),g=Ea(),v=Un(()=>{if(typeof e.size!=\"object\")return;const $=ar.find(C=>g.value[C]);return e.size[$]}),y=$=>v.value?{width:`${v.value}px`,height:`${v.value}px`,lineHeight:`${v.value}px`,fontSize:`${$?v.value/2:18}px`}:{},b=()=>{if(!i.value||!s.value)return;const $=i.value.offsetWidth,w=s.value.offsetWidth;if($!==0&&w!==0){const{gap:C=4}=e;C*2<w&&(a.value=w-C*2<$?(w-C*2)/$:1)}},S=()=>{const{loadError:$}=e;$?.()!==!1&&(r.value=!1)};return pe(()=>e.src,()=>{it(()=>{r.value=!0,a.value=1})}),pe(()=>e.gap,()=>{it(()=>{b()})}),Ne(()=>{it(()=>{b(),l.value=!0})}),()=>{var $,w;const{shape:C,src:_,alt:x,srcset:P,draggable:O,crossOrigin:M}=e,E=($=p.shape)!==null&&$!==void 0?$:C,R=Qt(n,e,\"icon\"),D=c.value,z={[`${o.class}`]:!!o.class,[D]:!0,[`${D}-lg`]:m.value===\"large\",[`${D}-sm`]:m.value===\"small\",[`${D}-${E}`]:!0,[`${D}-image`]:_&&r.value,[`${D}-icon`]:R,[d.value]:!0},T=typeof m.value==\"number\"?{width:`${m.value}px`,height:`${m.value}px`,lineHeight:`${m.value}px`,fontSize:R?`${m.value/2}px`:\"18px\"}:{},k=(w=n.default)===null||w===void 0?void 0:w.call(n);let B;if(_&&r.value)B=f(\"img\",{draggable:O,src:_,srcset:P,onError:S,alt:x,crossorigin:M},null);else if(R)B=R;else if(l.value||a.value!==1){const L=`scale(${a.value}) translateX(-50%)`,N={msTransform:L,WebkitTransform:L,transform:L},F=typeof m.value==\"number\"?{lineHeight:`${m.value}px`}:{};B=f(go,{onResize:b},{default:()=>[f(\"span\",{class:`${D}-string`,ref:i,style:h(h({},F),N)},[k])]})}else B=f(\"span\",{class:`${D}-string`,ref:i,style:{opacity:0}},[k]);return u(f(\"span\",A(A({},o),{},{ref:s,class:z,style:[T,y(!!R),o.style]}),[B]))}}}),lo={adjustX:1,adjustY:1},ao=[0,0],_1={left:{points:[\"cr\",\"cl\"],overflow:lo,offset:[-4,0],targetOffset:ao},right:{points:[\"cl\",\"cr\"],overflow:lo,offset:[4,0],targetOffset:ao},top:{points:[\"bc\",\"tc\"],overflow:lo,offset:[0,-4],targetOffset:ao},bottom:{points:[\"tc\",\"bc\"],overflow:lo,offset:[0,4],targetOffset:ao},topLeft:{points:[\"bl\",\"tl\"],overflow:lo,offset:[0,-4],targetOffset:ao},leftTop:{points:[\"tr\",\"tl\"],overflow:lo,offset:[-4,0],targetOffset:ao},topRight:{points:[\"br\",\"tr\"],overflow:lo,offset:[0,-4],targetOffset:ao},rightTop:{points:[\"tl\",\"tr\"],overflow:lo,offset:[4,0],targetOffset:ao},bottomRight:{points:[\"tr\",\"br\"],overflow:lo,offset:[0,4],targetOffset:ao},rightBottom:{points:[\"bl\",\"br\"],overflow:lo,offset:[4,0],targetOffset:ao},bottomLeft:{points:[\"tl\",\"bl\"],overflow:lo,offset:[0,4],targetOffset:ao},leftBottom:{points:[\"br\",\"bl\"],overflow:lo,offset:[-4,0],targetOffset:ao}},PD={prefixCls:String,id:String,overlayInnerStyle:W.any},TD=ne({compatConfig:{MODE:3},name:\"TooltipContent\",props:PD,setup(e,t){let{slots:n}=t;return()=>{var o;return f(\"div\",{class:`${e.prefixCls}-inner`,id:e.id,role:\"tooltip\",style:e.overlayInnerStyle},[(o=n.overlay)===null||o===void 0?void 0:o.call(n)])}}});var OD=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function eb(){}const ED=ne({compatConfig:{MODE:3},name:\"Tooltip\",inheritAttrs:!1,props:{trigger:W.any.def([\"hover\"]),defaultVisible:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},placement:W.string.def(\"right\"),transitionName:String,animation:W.any,afterVisibleChange:W.func.def(()=>{}),overlayStyle:{type:Object,default:void 0},overlayClassName:String,prefixCls:W.string.def(\"rc-tooltip\"),mouseEnterDelay:W.number.def(.1),mouseLeaveDelay:W.number.def(.1),getPopupContainer:Function,destroyTooltipOnHide:{type:Boolean,default:!1},align:W.object.def(()=>({})),arrowContent:W.any.def(null),tipId:String,builtinPlacements:W.object,overlayInnerStyle:{type:Object,default:void 0},popupVisible:{type:Boolean,default:void 0},onVisibleChange:Function,onPopupAlign:Function,arrow:{type:Boolean,default:!0}},setup(e,t){let{slots:n,attrs:o,expose:r}=t;const l=ee(),a=()=>{const{prefixCls:u,tipId:d,overlayInnerStyle:p}=e;return[e.arrow?f(\"div\",{class:`${u}-arrow`,key:\"arrow\"},[Qt(n,e,\"arrowContent\")]):null,f(TD,{key:\"content\",prefixCls:u,id:d,overlayInnerStyle:p},{overlay:n.overlay})]};r({getPopupDomNode:()=>l.value.getPopupDomNode(),triggerDOM:l,forcePopupAlign:()=>{var u;return(u=l.value)===null||u===void 0?void 0:u.forcePopupAlign()}});const s=ee(!1),c=ee(!1);return ze(()=>{const{destroyTooltipOnHide:u}=e;if(typeof u==\"boolean\")s.value=u;else if(u&&typeof u==\"object\"){const{keepParent:d}=u;s.value=d===!0,c.value=d===!1}}),()=>{const{overlayClassName:u,trigger:d,mouseEnterDelay:p,mouseLeaveDelay:m,overlayStyle:g,prefixCls:v,afterVisibleChange:y,transitionName:b,animation:S,placement:$,align:w,destroyTooltipOnHide:C,defaultVisible:_}=e,x=OD(e,[\"overlayClassName\",\"trigger\",\"mouseEnterDelay\",\"mouseLeaveDelay\",\"overlayStyle\",\"prefixCls\",\"afterVisibleChange\",\"transitionName\",\"animation\",\"placement\",\"align\",\"destroyTooltipOnHide\",\"defaultVisible\"]),P=h({},x);e.visible!==void 0&&(P.popupVisible=e.visible);const O=h(h(h({popupClassName:u,prefixCls:v,action:d,builtinPlacements:_1,popupPlacement:$,popupAlign:w,afterPopupVisibleChange:y,popupTransitionName:b,popupAnimation:S,defaultPopupVisible:_,destroyPopupOnHide:s.value,autoDestroy:c.value,mouseLeaveDelay:m,popupStyle:g,mouseEnterDelay:p},P),o),{onPopupVisibleChange:e.onVisibleChange||eb,onPopupAlign:e.onPopupAlign||eb,ref:l,arrow:!!e.arrow,popup:a()});return f(Ol,O,{default:n.default})}}}),Mv=()=>({trigger:[String,Array],open:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},placement:String,color:String,transitionName:String,overlayStyle:De(),overlayInnerStyle:De(),overlayClassName:String,openClassName:String,prefixCls:String,mouseEnterDelay:Number,mouseLeaveDelay:Number,getPopupContainer:Function,arrowPointAtCenter:{type:Boolean,default:void 0},arrow:{type:[Boolean,Object],default:!0},autoAdjustOverflow:{type:[Boolean,Object],default:void 0},destroyTooltipOnHide:{type:Boolean,default:void 0},align:De(),builtinPlacements:De(),children:Array,onVisibleChange:Function,\"onUpdate:visible\":Function,onOpenChange:Function,\"onUpdate:open\":Function}),MD={adjustX:1,adjustY:1},tb={adjustX:0,adjustY:0},AD=[0,0];function nb(e){return typeof e==\"boolean\"?e?MD:tb:h(h({},tb),e)}function Av(e){const{arrowWidth:t=4,horizontalArrowShift:n=16,verticalArrowShift:o=8,autoAdjustOverflow:r,arrowPointAtCenter:l}=e,a={left:{points:[\"cr\",\"cl\"],offset:[-4,0]},right:{points:[\"cl\",\"cr\"],offset:[4,0]},top:{points:[\"bc\",\"tc\"],offset:[0,-4]},bottom:{points:[\"tc\",\"bc\"],offset:[0,4]},topLeft:{points:[\"bl\",\"tc\"],offset:[-(n+t),-4]},leftTop:{points:[\"tr\",\"cl\"],offset:[-4,-(o+t)]},topRight:{points:[\"br\",\"tc\"],offset:[n+t,-4]},rightTop:{points:[\"tl\",\"cr\"],offset:[4,-(o+t)]},bottomRight:{points:[\"tr\",\"bc\"],offset:[n+t,4]},rightBottom:{points:[\"bl\",\"cr\"],offset:[4,o+t]},bottomLeft:{points:[\"tl\",\"bc\"],offset:[-(n+t),4]},leftBottom:{points:[\"br\",\"cl\"],offset:[-4,o+t]}};return Object.keys(a).forEach(i=>{a[i]=l?h(h({},a[i]),{overflow:nb(r),targetOffset:AD}):h(h({},_1[i]),{overflow:nb(r)}),a[i].ignoreShake=!0}),a}function Uc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];for(let t=0,n=e.length;t<n;t++)if(e[t]!==void 0)return e[t]}const DD=hi.map(e=>`${e}-inverse`),RD=[\"success\",\"processing\",\"error\",\"default\",\"warning\"];function td(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)?[...DD,...hi].includes(e):hi.includes(e)}function kD(e){return RD.includes(e)}function ND(e,t){const n=td(t),o=le({[`${e}-${t}`]:t&&n}),r={},l={};return t&&!n&&(r.background=t,l[\"--antd-arrow-background-color\"]=t),{className:o,overlayStyle:r,arrowStyle:l}}function gs(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";return e.map(n=>`${t}${n}`).join(\",\")}const Dv=8;function I1(e){const t=Dv,{sizePopupArrow:n,contentRadius:o,borderRadiusOuter:r,limitVerticalRadius:l}=e,a=n/2-Math.ceil(r*(Math.sqrt(2)-1)),i=(o>12?o+2:12)-a,s=l?t-a:i;return{dropdownArrowOffset:i,dropdownArrowOffsetVertical:s}}function Rv(e,t){const{componentCls:n,sizePopupArrow:o,marginXXS:r,borderRadiusXS:l,borderRadiusOuter:a,boxShadowPopoverArrow:i}=e,{colorBg:s,showArrowCls:c,contentRadius:u=e.borderRadiusLG,limitVerticalRadius:d}=t,{dropdownArrowOffsetVertical:p,dropdownArrowOffset:m}=I1({sizePopupArrow:o,contentRadius:u,borderRadiusOuter:a,limitVerticalRadius:d}),g=o/2+r;return{[n]:{[`${n}-arrow`]:[h(h({position:\"absolute\",zIndex:1,display:\"block\"},ev(o,l,a,s,i)),{\"&:before\":{background:s}})],[[`&-placement-top ${n}-arrow`,`&-placement-topLeft ${n}-arrow`,`&-placement-topRight ${n}-arrow`].join(\",\")]:{bottom:0,transform:\"translateY(100%) rotate(180deg)\"},[`&-placement-top ${n}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%) translateY(100%) rotate(180deg)\"},[`&-placement-topLeft ${n}-arrow`]:{left:{_skip_check_:!0,value:m}},[`&-placement-topRight ${n}-arrow`]:{right:{_skip_check_:!0,value:m}},[[`&-placement-bottom ${n}-arrow`,`&-placement-bottomLeft ${n}-arrow`,`&-placement-bottomRight ${n}-arrow`].join(\",\")]:{top:0,transform:\"translateY(-100%)\"},[`&-placement-bottom ${n}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%) translateY(-100%)\"},[`&-placement-bottomLeft ${n}-arrow`]:{left:{_skip_check_:!0,value:m}},[`&-placement-bottomRight ${n}-arrow`]:{right:{_skip_check_:!0,value:m}},[[`&-placement-left ${n}-arrow`,`&-placement-leftTop ${n}-arrow`,`&-placement-leftBottom ${n}-arrow`].join(\",\")]:{right:{_skip_check_:!0,value:0},transform:\"translateX(100%) rotate(90deg)\"},[`&-placement-left ${n}-arrow`]:{top:{_skip_check_:!0,value:\"50%\"},transform:\"translateY(-50%) translateX(100%) rotate(90deg)\"},[`&-placement-leftTop ${n}-arrow`]:{top:p},[`&-placement-leftBottom ${n}-arrow`]:{bottom:p},[[`&-placement-right ${n}-arrow`,`&-placement-rightTop ${n}-arrow`,`&-placement-rightBottom ${n}-arrow`].join(\",\")]:{left:{_skip_check_:!0,value:0},transform:\"translateX(-100%) rotate(-90deg)\"},[`&-placement-right ${n}-arrow`]:{top:{_skip_check_:!0,value:\"50%\"},transform:\"translateY(-50%) translateX(-100%) rotate(-90deg)\"},[`&-placement-rightTop ${n}-arrow`]:{top:p},[`&-placement-rightBottom ${n}-arrow`]:{bottom:p},[gs([\"&-placement-topLeft\",\"&-placement-top\",\"&-placement-topRight\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingBottom:g},[gs([\"&-placement-bottomLeft\",\"&-placement-bottom\",\"&-placement-bottomRight\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingTop:g},[gs([\"&-placement-leftTop\",\"&-placement-left\",\"&-placement-leftBottom\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingRight:{_skip_check_:!0,value:g}},[gs([\"&-placement-rightTop\",\"&-placement-right\",\"&-placement-rightBottom\"].map(v=>v+=\":not(&-arrow-hidden)\"),c)]:{paddingLeft:{_skip_check_:!0,value:g}}}}}const BD=e=>{const{componentCls:t,tooltipMaxWidth:n,tooltipColor:o,tooltipBg:r,tooltipBorderRadius:l,zIndexPopup:a,controlHeight:i,boxShadowSecondary:s,paddingSM:c,paddingXS:u,tooltipRadiusOuter:d}=e;return[{[t]:h(h(h(h({},Ue(e)),{position:\"absolute\",zIndex:a,display:\"block\",\"&\":[{width:\"max-content\"},{width:\"intrinsic\"}],maxWidth:n,visibility:\"visible\",\"&-hidden\":{display:\"none\"},\"--antd-arrow-background-color\":r,[`${t}-inner`]:{minWidth:i,minHeight:i,padding:`${c/2}px ${u}px`,color:o,textAlign:\"start\",textDecoration:\"none\",wordWrap:\"break-word\",backgroundColor:r,borderRadius:l,boxShadow:s},[[\"&-placement-left\",\"&-placement-leftTop\",\"&-placement-leftBottom\",\"&-placement-right\",\"&-placement-rightTop\",\"&-placement-rightBottom\"].join(\",\")]:{[`${t}-inner`]:{borderRadius:Math.min(l,Dv)}},[`${t}-content`]:{position:\"relative\"}}),Bc(e,(p,m)=>{let{darkColor:g}=m;return{[`&${t}-${p}`]:{[`${t}-inner`]:{backgroundColor:g},[`${t}-arrow`]:{\"--antd-arrow-background-color\":g}}}})),{\"&-rtl\":{direction:\"rtl\"}})},Rv(Le(e,{borderRadiusOuter:d}),{colorBg:\"var(--antd-arrow-background-color)\",showArrowCls:\"\",contentRadius:l,limitVerticalRadius:!0}),{[`${t}-pure`]:{position:\"relative\",maxWidth:\"none\"}}]},LD=(e,t)=>Ge(\"Tooltip\",o=>{if(t?.value===!1)return[];const{borderRadius:r,colorTextLightSolid:l,colorBgDefault:a,borderRadiusOuter:i}=o,s=Le(o,{tooltipMaxWidth:250,tooltipColor:l,tooltipBorderRadius:r,tooltipBg:a,tooltipRadiusOuter:i>4?4:i});return[BD(s),Ta(o,\"zoom-big-fast\")]},o=>{let{zIndexPopupBase:r,colorBgSpotlight:l}=o;return{zIndexPopup:r+70,colorBgDefault:l}})(e),FD=(e,t)=>{const n={},o=h({},e);return t.forEach(r=>{e&&r in e&&(n[r]=e[r],delete o[r])}),{picked:n,omitted:o}},P1=()=>h(h({},Mv()),{title:W.any}),T1=()=>({trigger:\"hover\",align:{},placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0}),zD=ne({compatConfig:{MODE:3},name:\"ATooltip\",inheritAttrs:!1,props:Ze(P1(),{trigger:\"hover\",align:{},placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0}),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:r,expose:l}=t;const{prefixCls:a,getPopupContainer:i,direction:s,rootPrefixCls:c}=Pe(\"tooltip\",e),u=I(()=>{var M;return(M=e.open)!==null&&M!==void 0?M:e.visible}),d=J(Uc([e.open,e.visible])),p=J();let m;pe(u,M=>{qe.cancel(m),m=qe(()=>{d.value=!!M})});const g=()=>{var M;const E=(M=e.title)!==null&&M!==void 0?M:n.title;return!E&&E!==0},v=M=>{const E=g();u.value===void 0&&(d.value=E?!1:M),E||(o(\"update:visible\",M),o(\"visibleChange\",M),o(\"update:open\",M),o(\"openChange\",M))};l({getPopupDomNode:()=>p.value.getPopupDomNode(),open:d,forcePopupAlign:()=>{var M;return(M=p.value)===null||M===void 0?void 0:M.forcePopupAlign()}});const b=I(()=>{var M;const{builtinPlacements:E,autoAdjustOverflow:R,arrow:D,arrowPointAtCenter:z}=e;let T=z;return typeof D==\"object\"&&(T=(M=D.pointAtCenter)!==null&&M!==void 0?M:z),E||Av({arrowPointAtCenter:T,autoAdjustOverflow:R})}),S=M=>M||M===\"\",$=M=>{const E=M.type;if(typeof E==\"object\"&&M.props&&((E.__ANT_BUTTON===!0||E===\"button\")&&S(M.props.disabled)||E.__ANT_SWITCH===!0&&(S(M.props.disabled)||S(M.props.loading))||E.__ANT_RADIO===!0&&S(M.props.disabled))){const{picked:R,omitted:D}=FD(G$(M),[\"position\",\"left\",\"right\",\"top\",\"bottom\",\"float\",\"display\",\"zIndex\"]),z=h(h({display:\"inline-block\"},R),{cursor:\"not-allowed\",lineHeight:1,width:M.props&&M.props.block?\"100%\":void 0}),T=h(h({},D),{pointerEvents:\"none\"}),k=dt(M,{style:T},!0);return f(\"span\",{style:z,class:`${a.value}-disabled-compatible-wrapper`},[k])}return M},w=()=>{var M,E;return(M=e.title)!==null&&M!==void 0?M:(E=n.title)===null||E===void 0?void 0:E.call(n)},C=(M,E)=>{const R=b.value,D=Object.keys(R).find(z=>{var T,k;return R[z].points[0]===((T=E.points)===null||T===void 0?void 0:T[0])&&R[z].points[1]===((k=E.points)===null||k===void 0?void 0:k[1])});if(D){const z=M.getBoundingClientRect(),T={top:\"50%\",left:\"50%\"};D.indexOf(\"top\")>=0||D.indexOf(\"Bottom\")>=0?T.top=`${z.height-E.offset[1]}px`:(D.indexOf(\"Top\")>=0||D.indexOf(\"bottom\")>=0)&&(T.top=`${-E.offset[1]}px`),D.indexOf(\"left\")>=0||D.indexOf(\"Right\")>=0?T.left=`${z.width-E.offset[0]}px`:(D.indexOf(\"right\")>=0||D.indexOf(\"Left\")>=0)&&(T.left=`${-E.offset[0]}px`),M.style.transformOrigin=`${T.left} ${T.top}`}},_=I(()=>ND(a.value,e.color)),x=I(()=>r[\"data-popover-inject\"]),[P,O]=LD(a,I(()=>!x.value));return()=>{var M,E;const{openClassName:R,overlayClassName:D,overlayStyle:z,overlayInnerStyle:T}=e;let k=(E=kt((M=n.default)===null||M===void 0?void 0:M.call(n)))!==null&&E!==void 0?E:null;k=k.length===1?k[0]:k;let B=d.value;if(u.value===void 0&&g()&&(B=!1),!k)return null;const L=$(Kt(k)&&!eE(k)?k:f(\"span\",null,[k])),N=le({[R||`${a.value}-open`]:!0,[L.props&&L.props.class]:L.props&&L.props.class}),F=le(D,{[`${a.value}-rtl`]:s.value===\"rtl\"},_.value.className,O.value),j=h(h({},_.value.overlayStyle),T),H=_.value.arrowStyle,K=h(h(h({},r),e),{prefixCls:a.value,arrow:!!e.arrow,getPopupContainer:i?.value,builtinPlacements:b.value,visible:B,ref:p,overlayClassName:F,overlayStyle:h(h({},H),z),overlayInnerStyle:j,onVisibleChange:v,onPopupAlign:C,transitionName:_n(c.value,\"zoom-big-fast\",e.transitionName)});return P(f(ED,K,{default:()=>[d.value?dt(L,{class:N}):L],arrowContent:()=>f(\"span\",{class:`${a.value}-arrow-content`},null),overlay:w}))}}}),Ln=Dt(zD),HD=e=>{const{componentCls:t,popoverBg:n,popoverColor:o,width:r,fontWeightStrong:l,popoverPadding:a,boxShadowSecondary:i,colorTextHeading:s,borderRadiusLG:c,zIndexPopup:u,marginXS:d,colorBgElevated:p}=e;return[{[t]:h(h({},Ue(e)),{position:\"absolute\",top:0,left:{_skip_check_:!0,value:0},zIndex:u,fontWeight:\"normal\",whiteSpace:\"normal\",textAlign:\"start\",cursor:\"auto\",userSelect:\"text\",\"--antd-arrow-background-color\":p,\"&-rtl\":{direction:\"rtl\"},\"&-hidden\":{display:\"none\"},[`${t}-content`]:{position:\"relative\"},[`${t}-inner`]:{backgroundColor:n,backgroundClip:\"padding-box\",borderRadius:c,boxShadow:i,padding:a},[`${t}-title`]:{minWidth:r,marginBottom:d,color:s,fontWeight:l},[`${t}-inner-content`]:{color:o}})},Rv(e,{colorBg:\"var(--antd-arrow-background-color)\"}),{[`${t}-pure`]:{position:\"relative\",maxWidth:\"none\",[`${t}-content`]:{display:\"inline-block\"}}}]},jD=e=>{const{componentCls:t}=e;return{[t]:hi.map(n=>{const o=e[`${n}-6`];return{[`&${t}-${n}`]:{\"--antd-arrow-background-color\":o,[`${t}-inner`]:{backgroundColor:o},[`${t}-arrow`]:{background:\"transparent\"}}}})}},WD=e=>{const{componentCls:t,lineWidth:n,lineType:o,colorSplit:r,paddingSM:l,controlHeight:a,fontSize:i,lineHeight:s,padding:c}=e,u=a-Math.round(i*s),d=u/2,p=u/2-n,m=c;return{[t]:{[`${t}-inner`]:{padding:0},[`${t}-title`]:{margin:0,padding:`${d}px ${m}px ${p}px`,borderBottom:`${n}px ${o} ${r}`},[`${t}-inner-content`]:{padding:`${l}px ${m}px`}}}},VD=Ge(\"Popover\",e=>{const{colorBgElevated:t,colorText:n,wireframe:o}=e,r=Le(e,{popoverBg:t,popoverColor:n,popoverPadding:12});return[HD(r),jD(r),o&&WD(r),Ta(r,\"zoom-big\")]},e=>{let{zIndexPopupBase:t}=e;return{zIndexPopup:t+30,width:177}}),KD=()=>h(h({},Mv()),{content:Ct(),title:Ct()}),GD=ne({compatConfig:{MODE:3},name:\"APopover\",inheritAttrs:!1,props:Ze(KD(),h(h({},T1()),{trigger:\"hover\",placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup(e,t){let{expose:n,slots:o,attrs:r}=t;const l=J();eo(e.visible===void 0),n({getPopupDomNode:()=>{var p,m;return(m=(p=l.value)===null||p===void 0?void 0:p.getPopupDomNode)===null||m===void 0?void 0:m.call(p)}});const{prefixCls:a,configProvider:i}=Pe(\"popover\",e),[s,c]=VD(a),u=I(()=>i.getPrefixCls()),d=()=>{var p,m;const{title:g=kt((p=o.title)===null||p===void 0?void 0:p.call(o)),content:v=kt((m=o.content)===null||m===void 0?void 0:m.call(o))}=e,y=!!(Array.isArray(g)?g.length:g),b=!!(Array.isArray(v)?v.length:g);return!y&&!b?null:f(Ve,null,[y&&f(\"div\",{class:`${a.value}-title`},[g]),f(\"div\",{class:`${a.value}-inner-content`},[v])])};return()=>{const p=le(e.overlayClassName,c.value);return s(f(Ln,A(A(A({},ot(e,[\"title\",\"content\"])),r),{},{prefixCls:a.value,ref:l,overlayClassName:p,transitionName:_n(u.value,\"zoom-big\",e.transitionName),\"data-popover-inject\":!0}),{title:d,default:o.default}))}}}),kv=Dt(GD),XD=()=>({prefixCls:String,maxCount:Number,maxStyle:{type:Object,default:void 0},maxPopoverPlacement:{type:String,default:\"top\"},maxPopoverTrigger:String,size:{type:[Number,String,Object],default:\"default\"},shape:{type:String,default:\"circle\"}}),Yc=ne({compatConfig:{MODE:3},name:\"AAvatarGroup\",inheritAttrs:!1,props:XD(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"avatar\",e),a=I(()=>`${r.value}-group`),[i,s]=x1(r);return ze(()=>{const c={size:e.size,shape:e.shape};_D(c)}),()=>{const{maxPopoverPlacement:c=\"top\",maxCount:u,maxStyle:d,maxPopoverTrigger:p=\"hover\",shape:m}=e,g={[a.value]:!0,[`${a.value}-rtl`]:l.value===\"rtl\",[`${o.class}`]:!!o.class,[s.value]:!0},v=Qt(n,e),y=$t(v).map((S,$)=>dt(S,{key:`avatar-key-${$}`})),b=y.length;if(u&&u<b){const S=y.slice(0,u),$=y.slice(u,b);return S.push(f(kv,{key:\"avatar-popover-key\",content:$,trigger:p,placement:c,overlayClassName:`${a.value}-popover`},{default:()=>[f(ml,{style:d,shape:m},{default:()=>[`+${b-u}`]})]})),i(f(\"div\",A(A({},o),{},{class:g,style:o.style}),[S]))}return i(f(\"div\",A(A({},o),{},{class:g,style:o.style}),[y]))}}});ml.Group=Yc;ml.install=function(e){return e.component(ml.name,ml),e.component(Yc.name,Yc),e};function ob(e){let{prefixCls:t,value:n,current:o,offset:r=0}=e,l;return r&&(l={position:\"absolute\",top:`${r}00%`,left:0}),f(\"p\",{style:l,class:le(`${t}-only-unit`,{current:o})},[n])}function UD(e,t,n){let o=e,r=0;for(;(o+10)%10!==t;)o+=n,r+=n;return r}const YD=ne({compatConfig:{MODE:3},name:\"SingleNumber\",props:{prefixCls:String,value:String,count:Number},setup(e){const t=I(()=>Number(e.value)),n=I(()=>Math.abs(e.count)),o=vt({prevValue:t.value,prevCount:n.value}),r=()=>{o.prevValue=t.value,o.prevCount=n.value},l=J();return pe(t,()=>{clearTimeout(l.value),l.value=setTimeout(()=>{r()},1e3)},{flush:\"post\"}),Mn(()=>{clearTimeout(l.value)}),()=>{let a,i={};const s=t.value;if(o.prevValue===s||Number.isNaN(s)||Number.isNaN(o.prevValue))a=[ob(h(h({},e),{current:!0}))],i={transition:\"none\"};else{a=[];const c=s+10,u=[];for(let m=s;m<=c;m+=1)u.push(m);const d=u.findIndex(m=>m%10===o.prevValue);a=u.map((m,g)=>{const v=m%10;return ob(h(h({},e),{value:v,offset:g-d,current:g===d}))});const p=o.prevCount<n.value?1:-1;i={transform:`translateY(${-UD(o.prevValue,s,p)}00%)`}}return f(\"span\",{class:`${e.prefixCls}-only`,style:i,onTransitionend:()=>r()},[a])}}});var qD=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const ZD={prefixCls:String,count:W.any,component:String,title:W.any,show:Boolean},QD=ne({compatConfig:{MODE:3},name:\"ScrollNumber\",inheritAttrs:!1,props:ZD,setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:r}=Pe(\"scroll-number\",e);return()=>{var l;const a=h(h({},e),n),{prefixCls:i,count:s,title:c,show:u,component:d=\"sup\",class:p,style:m}=a,g=qD(a,[\"prefixCls\",\"count\",\"title\",\"show\",\"component\",\"class\",\"style\"]),v=h(h({},g),{style:m,\"data-show\":e.show,class:le(r.value,p),title:c});let y=s;if(s&&Number(s)%1===0){const S=String(s).split(\"\");y=S.map(($,w)=>f(YD,{prefixCls:r.value,count:Number(s),value:$,key:S.length-w},null))}m&&m.borderColor&&(v.style=h(h({},m),{boxShadow:`0 0 0 1px ${m.borderColor} inset`}));const b=kt((l=o.default)===null||l===void 0?void 0:l.call(o));return b&&b.length?dt(b,{class:le(`${r.value}-custom-component`)},!1):f(d,v,{default:()=>[y]})}}}),JD=new lt(\"antStatusProcessing\",{\"0%\":{transform:\"scale(0.8)\",opacity:.5},\"100%\":{transform:\"scale(2.4)\",opacity:0}}),eR=new lt(\"antZoomBadgeIn\",{\"0%\":{transform:\"scale(0) translate(50%, -50%)\",opacity:0},\"100%\":{transform:\"scale(1) translate(50%, -50%)\"}}),tR=new lt(\"antZoomBadgeOut\",{\"0%\":{transform:\"scale(1) translate(50%, -50%)\"},\"100%\":{transform:\"scale(0) translate(50%, -50%)\",opacity:0}}),nR=new lt(\"antNoWrapperZoomBadgeIn\",{\"0%\":{transform:\"scale(0)\",opacity:0},\"100%\":{transform:\"scale(1)\"}}),oR=new lt(\"antNoWrapperZoomBadgeOut\",{\"0%\":{transform:\"scale(1)\"},\"100%\":{transform:\"scale(0)\",opacity:0}}),rR=new lt(\"antBadgeLoadingCircle\",{\"0%\":{transformOrigin:\"50%\"},\"100%\":{transform:\"translate(50%, -50%) rotate(360deg)\",transformOrigin:\"50%\"}}),lR=e=>{const{componentCls:t,iconCls:n,antCls:o,badgeFontHeight:r,badgeShadowSize:l,badgeHeightSm:a,motionDurationSlow:i,badgeStatusSize:s,marginXS:c,badgeRibbonOffset:u}=e,d=`${o}-scroll-number`,p=`${o}-ribbon`,m=`${o}-ribbon-wrapper`,g=Bc(e,(y,b)=>{let{darkColor:S}=b;return{[`&${t} ${t}-color-${y}`]:{background:S,[`&:not(${t}-count)`]:{color:S}}}}),v=Bc(e,(y,b)=>{let{darkColor:S}=b;return{[`&${p}-color-${y}`]:{background:S,color:S}}});return{[t]:h(h(h(h({},Ue(e)),{position:\"relative\",display:\"inline-block\",width:\"fit-content\",lineHeight:1,[`${t}-count`]:{zIndex:e.badgeZIndex,minWidth:e.badgeHeight,height:e.badgeHeight,color:e.badgeTextColor,fontWeight:e.badgeFontWeight,fontSize:e.badgeFontSize,lineHeight:`${e.badgeHeight}px`,whiteSpace:\"nowrap\",textAlign:\"center\",background:e.badgeColor,borderRadius:e.badgeHeight/2,boxShadow:`0 0 0 ${l}px ${e.badgeShadowColor}`,transition:`background ${e.motionDurationMid}`,a:{color:e.badgeTextColor},\"a:hover\":{color:e.badgeTextColor},\"a:hover &\":{background:e.badgeColorHover}},[`${t}-count-sm`]:{minWidth:a,height:a,fontSize:e.badgeFontSizeSm,lineHeight:`${a}px`,borderRadius:a/2},[`${t}-multiple-words`]:{padding:`0 ${e.paddingXS}px`},[`${t}-dot`]:{zIndex:e.badgeZIndex,width:e.badgeDotSize,minWidth:e.badgeDotSize,height:e.badgeDotSize,background:e.badgeColor,borderRadius:\"100%\",boxShadow:`0 0 0 ${l}px ${e.badgeShadowColor}`},[`${t}-dot${d}`]:{transition:`background ${i}`},[`${t}-count, ${t}-dot, ${d}-custom-component`]:{position:\"absolute\",top:0,insetInlineEnd:0,transform:\"translate(50%, -50%)\",transformOrigin:\"100% 0%\",[`&${n}-spin`]:{animationName:rR,animationDuration:\"1s\",animationIterationCount:\"infinite\",animationTimingFunction:\"linear\"}},[`&${t}-status`]:{lineHeight:\"inherit\",verticalAlign:\"baseline\",[`${t}-status-dot`]:{position:\"relative\",top:-1,display:\"inline-block\",width:s,height:s,verticalAlign:\"middle\",borderRadius:\"50%\"},[`${t}-status-success`]:{backgroundColor:e.colorSuccess},[`${t}-status-processing`]:{overflow:\"visible\",color:e.colorPrimary,backgroundColor:e.colorPrimary,\"&::after\":{position:\"absolute\",top:0,insetInlineStart:0,width:\"100%\",height:\"100%\",borderWidth:l,borderStyle:\"solid\",borderColor:\"inherit\",borderRadius:\"50%\",animationName:JD,animationDuration:e.badgeProcessingDuration,animationIterationCount:\"infinite\",animationTimingFunction:\"ease-in-out\",content:'\"\"'}},[`${t}-status-default`]:{backgroundColor:e.colorTextPlaceholder},[`${t}-status-error`]:{backgroundColor:e.colorError},[`${t}-status-warning`]:{backgroundColor:e.colorWarning},[`${t}-status-text`]:{marginInlineStart:c,color:e.colorText,fontSize:e.fontSize}}}),g),{[`${t}-zoom-appear, ${t}-zoom-enter`]:{animationName:eR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack,animationFillMode:\"both\"},[`${t}-zoom-leave`]:{animationName:tR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack,animationFillMode:\"both\"},[`&${t}-not-a-wrapper`]:{[`${t}-zoom-appear, ${t}-zoom-enter`]:{animationName:nR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack},[`${t}-zoom-leave`]:{animationName:oR,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseOutBack},[`&:not(${t}-status)`]:{verticalAlign:\"middle\"},[`${d}-custom-component, ${t}-count`]:{transform:\"none\"},[`${d}-custom-component, ${d}`]:{position:\"relative\",top:\"auto\",display:\"block\",transformOrigin:\"50% 50%\"}},[`${d}`]:{overflow:\"hidden\",[`${d}-only`]:{position:\"relative\",display:\"inline-block\",height:e.badgeHeight,transition:`all ${e.motionDurationSlow} ${e.motionEaseOutBack}`,WebkitTransformStyle:\"preserve-3d\",WebkitBackfaceVisibility:\"hidden\",[`> p${d}-only-unit`]:{height:e.badgeHeight,margin:0,WebkitTransformStyle:\"preserve-3d\",WebkitBackfaceVisibility:\"hidden\"}},[`${d}-symbol`]:{verticalAlign:\"top\"}},\"&-rtl\":{direction:\"rtl\",[`${t}-count, ${t}-dot, ${d}-custom-component`]:{transform:\"translate(-50%, -50%)\"}}}),[`${m}`]:{position:\"relative\"},[`${p}`]:h(h(h(h({},Ue(e)),{position:\"absolute\",top:c,padding:`0 ${e.paddingXS}px`,color:e.colorPrimary,lineHeight:`${r}px`,whiteSpace:\"nowrap\",backgroundColor:e.colorPrimary,borderRadius:e.borderRadiusSM,[`${p}-text`]:{color:e.colorTextLightSolid},[`${p}-corner`]:{position:\"absolute\",top:\"100%\",width:u,height:u,color:\"currentcolor\",border:`${u/2}px solid`,transform:e.badgeRibbonCornerTransform,transformOrigin:\"top\",filter:e.badgeRibbonCornerFilter}}),v),{[`&${p}-placement-end`]:{insetInlineEnd:-u,borderEndEndRadius:0,[`${p}-corner`]:{insetInlineEnd:0,borderInlineEndColor:\"transparent\",borderBlockEndColor:\"transparent\"}},[`&${p}-placement-start`]:{insetInlineStart:-u,borderEndStartRadius:0,[`${p}-corner`]:{insetInlineStart:0,borderBlockEndColor:\"transparent\",borderInlineStartColor:\"transparent\"}},\"&-rtl\":{direction:\"rtl\"}})}},O1=Ge(\"Badge\",e=>{const{fontSize:t,lineHeight:n,fontSizeSM:o,lineWidth:r,marginXS:l,colorBorderBg:a}=e,i=Math.round(t*n),s=r,c=\"auto\",u=i-2*s,d=e.colorBgContainer,p=\"normal\",m=o,g=e.colorError,v=e.colorErrorHover,y=t,b=o/2,S=o,$=o/2,w=Le(e,{badgeFontHeight:i,badgeShadowSize:s,badgeZIndex:c,badgeHeight:u,badgeTextColor:d,badgeFontWeight:p,badgeFontSize:m,badgeColor:g,badgeColorHover:v,badgeShadowColor:a,badgeHeightSm:y,badgeDotSize:b,badgeFontSizeSm:S,badgeStatusSize:$,badgeProcessingDuration:\"1.2s\",badgeRibbonOffset:l,badgeRibbonCornerTransform:\"scaleY(0.75)\",badgeRibbonCornerFilter:\"brightness(75%)\"});return[lR(w)]});var aR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const iR=()=>({prefix:String,color:{type:String},text:W.any,placement:{type:String,default:\"end\"}}),qc=ne({compatConfig:{MODE:3},name:\"ABadgeRibbon\",inheritAttrs:!1,props:iR(),slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:r,direction:l}=Pe(\"ribbon\",e),[a,i]=O1(r),s=I(()=>td(e.color,!1)),c=I(()=>[r.value,`${r.value}-placement-${e.placement}`,{[`${r.value}-rtl`]:l.value===\"rtl\",[`${r.value}-color-${e.color}`]:s.value}]);return()=>{var u,d;const{class:p,style:m}=n,g=aR(n,[\"class\",\"style\"]),v={},y={};return e.color&&!s.value&&(v.background=e.color,y.color=e.color),a(f(\"div\",A({class:`${r.value}-wrapper ${i.value}`},g),[(u=o.default)===null||u===void 0?void 0:u.call(o),f(\"div\",{class:[c.value,p,i.value],style:h(h({},v),m)},[f(\"span\",{class:`${r.value}-text`},[e.text||((d=o.text)===null||d===void 0?void 0:d.call(o))]),f(\"div\",{class:`${r.value}-corner`,style:y},null)])]))}}}),Zc=e=>!isNaN(parseFloat(e))&&isFinite(e),sR=()=>({count:W.any.def(null),showZero:{type:Boolean,default:void 0},overflowCount:{type:Number,default:99},dot:{type:Boolean,default:void 0},prefixCls:String,scrollNumberPrefixCls:String,status:{type:String},size:{type:String,default:\"default\"},color:String,text:W.any,offset:Array,numberStyle:{type:Object,default:void 0},title:String}),Ja=ne({compatConfig:{MODE:3},name:\"ABadge\",Ribbon:qc,inheritAttrs:!1,props:sR(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"badge\",e),[a,i]=O1(r),s=I(()=>e.count>e.overflowCount?`${e.overflowCount}+`:e.count),c=I(()=>s.value===\"0\"||s.value===0),u=I(()=>e.count===null||c.value&&!e.showZero),d=I(()=>(e.status!==null&&e.status!==void 0||e.color!==null&&e.color!==void 0)&&u.value),p=I(()=>e.dot&&!c.value),m=I(()=>p.value?\"\":s.value),g=I(()=>(m.value===null||m.value===void 0||m.value===\"\"||c.value&&!e.showZero)&&!p.value),v=J(e.count),y=J(m.value),b=J(p.value);pe([()=>e.count,m,p],()=>{g.value||(v.value=e.count,y.value=m.value,b.value=p.value)},{immediate:!0});const S=I(()=>td(e.color,!1)),$=I(()=>({[`${r.value}-status-dot`]:d.value,[`${r.value}-status-${e.status}`]:!!e.status,[`${r.value}-color-${e.color}`]:S.value})),w=I(()=>e.color&&!S.value?{background:e.color,color:e.color}:{}),C=I(()=>({[`${r.value}-dot`]:b.value,[`${r.value}-count`]:!b.value,[`${r.value}-count-sm`]:e.size===\"small\",[`${r.value}-multiple-words`]:!b.value&&y.value&&y.value.toString().length>1,[`${r.value}-status-${e.status}`]:!!e.status,[`${r.value}-color-${e.color}`]:S.value}));return()=>{var _,x;const{offset:P,title:O,color:M}=e,E=o.style,R=Qt(n,e,\"text\"),D=r.value,z=v.value;let T=$t((_=n.default)===null||_===void 0?void 0:_.call(n));T=T.length?T:null;const k=!!(!g.value||n.count),B=(()=>{if(!P)return h({},E);const G={marginTop:Zc(P[1])?`${P[1]}px`:P[1]};return l.value===\"rtl\"?G.left=`${parseInt(P[0],10)}px`:G.right=`${-parseInt(P[0],10)}px`,h(h({},G),E)})(),L=O??(typeof z==\"string\"||typeof z==\"number\"?z:void 0),N=k||!R?null:f(\"span\",{class:`${D}-status-text`},[R]),F=typeof z==\"object\"||z===void 0&&n.count?dt(z??((x=n.count)===null||x===void 0?void 0:x.call(n)),{style:B},!1):null,j=le(D,{[`${D}-status`]:d.value,[`${D}-not-a-wrapper`]:!T,[`${D}-rtl`]:l.value===\"rtl\"},o.class,i.value);if(!T&&d.value){const G=B.color;return a(f(\"span\",A(A({},o),{},{class:j,style:B}),[f(\"span\",{class:$.value,style:w.value},null),f(\"span\",{style:{color:G},class:`${D}-status-text`},[R])]))}const H=bo(T?`${D}-zoom`:\"\",{appear:!1});let K=h(h({},B),e.numberStyle);return M&&!S.value&&(K=K||{},K.background=M),a(f(\"span\",A(A({},o),{},{class:j}),[T,f(cn,H,{default:()=>[xn(f(QD,{prefixCls:e.scrollNumberPrefixCls,show:k,class:C.value,count:y.value,title:L,style:K,key:\"scrollNumber\"},{default:()=>[F]}),[[On,k]])]}),N]))}}});Ja.install=function(e){return e.component(Ja.name,Ja),e.component(qc.name,qc),e};const Bl={adjustX:1,adjustY:1},Ll=[0,0],cR={topLeft:{points:[\"bl\",\"tl\"],overflow:Bl,offset:[0,-4],targetOffset:Ll},topCenter:{points:[\"bc\",\"tc\"],overflow:Bl,offset:[0,-4],targetOffset:Ll},topRight:{points:[\"br\",\"tr\"],overflow:Bl,offset:[0,-4],targetOffset:Ll},bottomLeft:{points:[\"tl\",\"bl\"],overflow:Bl,offset:[0,4],targetOffset:Ll},bottomCenter:{points:[\"tc\",\"bc\"],overflow:Bl,offset:[0,4],targetOffset:Ll},bottomRight:{points:[\"tr\",\"br\"],overflow:Bl,offset:[0,4],targetOffset:Ll}};var uR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const E1=ne({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:W.string.def(\"rc-dropdown\"),transitionName:String,overlayClassName:W.string.def(\"\"),openClassName:String,animation:W.any,align:W.object,overlayStyle:{type:Object,default:void 0},placement:W.string.def(\"bottomLeft\"),overlay:W.any,trigger:W.oneOfType([W.string,W.arrayOf(W.string)]).def(\"hover\"),alignPoint:{type:Boolean,default:void 0},showAction:W.array,hideAction:W.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:W.number.def(.15),mouseLeaveDelay:W.number.def(.1)},emits:[\"visibleChange\",\"overlayClick\"],setup(e,t){let{slots:n,emit:o,expose:r}=t;const l=J(!!e.visible);pe(()=>e.visible,m=>{m!==void 0&&(l.value=m)});const a=J();r({triggerRef:a});const i=m=>{e.visible===void 0&&(l.value=!1),o(\"overlayClick\",m)},s=m=>{e.visible===void 0&&(l.value=m),o(\"visibleChange\",m)},c=()=>{var m;const g=(m=n.overlay)===null||m===void 0?void 0:m.call(n),v={prefixCls:`${e.prefixCls}-menu`,onClick:i};return f(Ve,{key:W$},[e.arrow&&f(\"div\",{class:`${e.prefixCls}-arrow`},null),dt(g,v,!1)])},u=I(()=>{const{minOverlayWidthMatchTrigger:m=!e.alignPoint}=e;return m}),d=()=>{var m;const g=(m=n.default)===null||m===void 0?void 0:m.call(n);return l.value&&g?dt(g[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):g},p=I(()=>!e.hideAction&&e.trigger.indexOf(\"contextmenu\")!==-1?[\"click\"]:e.hideAction);return()=>{const{prefixCls:m,arrow:g,showAction:v,overlayStyle:y,trigger:b,placement:S,align:$,getPopupContainer:w,transitionName:C,animation:_,overlayClassName:x}=e,P=uR(e,[\"prefixCls\",\"arrow\",\"showAction\",\"overlayStyle\",\"trigger\",\"placement\",\"align\",\"getPopupContainer\",\"transitionName\",\"animation\",\"overlayClassName\"]);return f(Ol,A(A({},P),{},{prefixCls:m,ref:a,popupClassName:le(x,{[`${m}-show-arrow`]:g}),popupStyle:y,builtinPlacements:cR,action:b,showAction:v,hideAction:p.value||[],popupPlacement:S,popupAlign:$,popupTransitionName:C,popupAnimation:_,popupVisible:l.value,stretch:u.value?\"minWidth\":\"\",onPopupVisibleChange:s,getPopupContainer:w}),{popup:c,default:d})}}}),dR=e=>{const{componentCls:t,colorPrimary:n}=e;return{[t]:{position:\"absolute\",background:\"transparent\",pointerEvents:\"none\",boxSizing:\"border-box\",color:`var(--wave-color, ${n})`,boxShadow:\"0 0 0 0 currentcolor\",opacity:.2,\"&.wave-motion-appear\":{transition:[`box-shadow 0.4s ${e.motionEaseOutCirc}`,`opacity 2s ${e.motionEaseOutCirc}`].join(\",\"),\"&-active\":{boxShadow:\"0 0 0 6px currentcolor\",opacity:0}}}}},fR=Ge(\"Wave\",e=>[dR(e)]);function pR(e){const t=(e||\"\").match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);return t&&t[1]&&t[2]&&t[3]?!(t[1]===t[2]&&t[2]===t[3]):!0}function nf(e){return e&&e!==\"#fff\"&&e!==\"#ffffff\"&&e!==\"rgb(255, 255, 255)\"&&e!==\"rgba(255, 255, 255, 1)\"&&pR(e)&&!/rgba\\((?:\\d*, ){3}0\\)/.test(e)&&e!==\"transparent\"}function mR(e){const{borderTopColor:t,borderColor:n,backgroundColor:o}=getComputedStyle(e);return nf(t)?t:nf(n)?n:nf(o)?o:null}function of(e){return Number.isNaN(e)?0:e}const vR=ne({props:{target:De(),className:String},setup(e){const t=ee(null),[n,o]=ht(null),[r,l]=ht([]),[a,i]=ht(0),[s,c]=ht(0),[u,d]=ht(0),[p,m]=ht(0),[g,v]=ht(!1);function y(){const{target:x}=e,P=getComputedStyle(x);o(mR(x));const O=P.position===\"static\",{borderLeftWidth:M,borderTopWidth:E}=P;i(O?x.offsetLeft:of(-parseFloat(M))),c(O?x.offsetTop:of(-parseFloat(E))),d(x.offsetWidth),m(x.offsetHeight);const{borderTopLeftRadius:R,borderTopRightRadius:D,borderBottomLeftRadius:z,borderBottomRightRadius:T}=P;l([R,D,T,z].map(k=>of(parseFloat(k))))}let b,S,$;const w=()=>{clearTimeout($),qe.cancel(S),b?.disconnect()},C=()=>{var x;const P=(x=t.value)===null||x===void 0?void 0:x.parentElement;P&&(Fr(null,P),P.parentElement&&P.parentElement.removeChild(P))};Ne(()=>{w(),$=setTimeout(()=>{C()},5e3);const{target:x}=e;x&&(S=qe(()=>{y(),v(!0)}),typeof ResizeObserver<\"u\"&&(b=new ResizeObserver(y),b.observe(x)))}),et(()=>{w()});const _=x=>{x.propertyName===\"opacity\"&&C()};return()=>{if(!g.value)return null;const x={left:`${a.value}px`,top:`${s.value}px`,width:`${u.value}px`,height:`${p.value}px`,borderRadius:r.value.map(P=>`${P}px`).join(\" \")};return n&&(x[\"--wave-color\"]=n.value),f(cn,{appear:!0,name:\"wave-motion\",appearFromClass:\"wave-motion-appear\",appearActiveClass:\"wave-motion-appear\",appearToClass:\"wave-motion-appear wave-motion-appear-active\"},{default:()=>[f(\"div\",{ref:t,class:e.className,style:x,onTransitionend:_},null)]})}}});function gR(e,t){const n=document.createElement(\"div\");return n.style.position=\"absolute\",n.style.left=\"0px\",n.style.top=\"0px\",e?.insertBefore(n,e?.firstChild),Fr(f(vR,{target:e,className:t},null),n),()=>{Fr(null,n),n.parentElement&&n.parentElement.removeChild(n)}}function hR(e,t){const n=fn();let o;function r(){var l;const a=Tn(n);o?.(),!(!((l=t?.value)===null||l===void 0)&&l.disabled||!a)&&(o=gR(a,e.value))}return et(()=>{o?.()}),r}const Nv=ne({compatConfig:{MODE:3},name:\"Wave\",props:{disabled:Boolean},setup(e,t){let{slots:n}=t;const o=fn(),{prefixCls:r,wave:l}=Pe(\"wave\",e),[,a]=fR(r),i=hR(I(()=>le(r.value,a.value)),l);let s;const c=()=>{Tn(o).removeEventListener(\"click\",s,!0)};return Ne(()=>{pe(()=>e.disabled,()=>{c(),it(()=>{const u=Tn(o);u?.removeEventListener(\"click\",s,!0),!(!u||u.nodeType!==1||e.disabled)&&(s=d=>{d.target.tagName===\"INPUT\"||!Vu(d.target)||!u.getAttribute||u.getAttribute(\"disabled\")||u.disabled||u.className.includes(\"disabled\")||u.className.includes(\"-leave\")||i()},u.addEventListener(\"click\",s,!0))})},{immediate:!0,flush:\"post\"})}),et(()=>{c()}),()=>{var u;return(u=n.default)===null||u===void 0?void 0:u.call(n)[0]}}});function Qc(e){return e===\"danger\"?{danger:!0}:{type:e}}const M1=()=>({prefixCls:String,type:String,htmlType:{type:String,default:\"button\"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:()=>!1},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:W.any,href:String,target:String,title:String,onClick:yl(),onMousedown:yl()}),rb=e=>{e&&(e.style.width=\"0px\",e.style.opacity=\"0\",e.style.transform=\"scale(0)\")},lb=e=>{it(()=>{e&&(e.style.width=`${e.scrollWidth}px`,e.style.opacity=\"1\",e.style.transform=\"scale(1)\")})},ab=e=>{e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)},bR=ne({compatConfig:{MODE:3},name:\"LoadingIcon\",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup(e){return()=>{const{existIcon:t,prefixCls:n,loading:o}=e;if(t)return f(\"span\",{class:`${n}-loading-icon`},[f(Qn,null,null)]);const r=!!o;return f(cn,{name:`${n}-loading-icon-motion`,onBeforeEnter:rb,onEnter:lb,onAfterEnter:ab,onBeforeLeave:lb,onLeave:l=>{setTimeout(()=>{rb(l)})},onAfterLeave:ab},{default:()=>[r?f(\"span\",{class:`${n}-loading-icon`},[f(Qn,null,null)]):null]})}}}),ib=(e,t)=>({[`> span, > ${e}`]:{\"&:not(:last-child)\":{[`&, & > ${e}`]:{\"&:not(:disabled)\":{borderInlineEndColor:t}}},\"&:not(:first-child)\":{[`&, & > ${e}`]:{\"&:not(:disabled)\":{borderInlineStartColor:t}}}}}),yR=e=>{const{componentCls:t,fontSize:n,lineWidth:o,colorPrimaryHover:r,colorErrorHover:l}=e;return{[`${t}-group`]:[{position:\"relative\",display:\"inline-flex\",[`> span, > ${t}`]:{\"&:not(:last-child)\":{[`&, & > ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},\"&:not(:first-child)\":{marginInlineStart:-o,[`&, & > ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}},[t]:{position:\"relative\",zIndex:1,\"&:hover,\\n          &:focus,\\n          &:active\":{zIndex:2},\"&[disabled]\":{zIndex:0}},[`${t}-icon-only`]:{fontSize:n}},ib(`${t}-primary`,r),ib(`${t}-danger`,l)]}};function SR(e,t){return{[`&-item:not(${t}-last-item)`]:{marginBottom:-e.lineWidth},\"&-item\":{\"&:hover,&:focus,&:active\":{zIndex:2},\"&[disabled]\":{zIndex:0}}}}function $R(e,t){return{[`&-item:not(${t}-first-item):not(${t}-last-item)`]:{borderRadius:0},[`&-item${t}-first-item:not(${t}-last-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderEndEndRadius:0,borderEndStartRadius:0}},[`&-item${t}-last-item:not(${t}-first-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderStartStartRadius:0,borderStartEndRadius:0}}}}function CR(e){const t=`${e.componentCls}-compact-vertical`;return{[t]:h(h({},SR(e,t)),$R(e.componentCls,t))}}const xR=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:{outline:\"none\",position:\"relative\",display:\"inline-block\",fontWeight:400,whiteSpace:\"nowrap\",textAlign:\"center\",backgroundImage:\"none\",backgroundColor:\"transparent\",border:`${e.lineWidth}px ${e.lineType} transparent`,cursor:\"pointer\",transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,userSelect:\"none\",touchAction:\"manipulation\",lineHeight:e.lineHeight,color:e.colorText,\"> span\":{display:\"inline-block\"},[`> ${n} + span, > span + ${n}`]:{marginInlineStart:e.marginXS},\"> a\":{color:\"currentColor\"},\"&:not(:disabled)\":h({},fr(e)),[`&-icon-only${t}-compact-item`]:{flex:\"none\"},[`&-compact-item${t}-primary`]:{[`&:not([disabled]) + ${t}-compact-item${t}-primary:not([disabled])`]:{position:\"relative\",\"&:before\":{position:\"absolute\",top:-e.lineWidth,insetInlineStart:-e.lineWidth,display:\"inline-block\",width:e.lineWidth,height:`calc(100% + ${e.lineWidth*2}px)`,backgroundColor:e.colorPrimaryHover,content:'\"\"'}}},\"&-compact-vertical-item\":{[`&${t}-primary`]:{[`&:not([disabled]) + ${t}-compact-vertical-item${t}-primary:not([disabled])`]:{position:\"relative\",\"&:before\":{position:\"absolute\",top:-e.lineWidth,insetInlineStart:-e.lineWidth,display:\"inline-block\",width:`calc(100% + ${e.lineWidth*2}px)`,height:e.lineWidth,backgroundColor:e.colorPrimaryHover,content:'\"\"'}}}}}}},pr=(e,t)=>({\"&:not(:disabled)\":{\"&:hover\":e,\"&:active\":t}}),wR=e=>({minWidth:e.controlHeight,paddingInlineStart:0,paddingInlineEnd:0,borderRadius:\"50%\"}),_R=e=>({borderRadius:e.controlHeight,paddingInlineStart:e.controlHeight/2,paddingInlineEnd:e.controlHeight/2}),Pp=e=>({cursor:\"not-allowed\",borderColor:e.colorBorder,color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,boxShadow:\"none\"}),Jc=(e,t,n,o,r,l,a)=>({[`&${e}-background-ghost`]:h(h({color:t||void 0,backgroundColor:\"transparent\",borderColor:n||void 0,boxShadow:\"none\"},pr(h({backgroundColor:\"transparent\"},l),h({backgroundColor:\"transparent\"},a))),{\"&:disabled\":{cursor:\"not-allowed\",color:o||void 0,borderColor:r||void 0}})}),Bv=e=>({\"&:disabled\":h({},Pp(e))}),A1=e=>h({},Bv(e)),eu=e=>({\"&:disabled\":{cursor:\"not-allowed\",color:e.colorTextDisabled}}),D1=e=>h(h(h(h(h({},A1(e)),{backgroundColor:e.colorBgContainer,borderColor:e.colorBorder,boxShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlTmpOutline}`}),pr({color:e.colorPrimaryHover,borderColor:e.colorPrimaryHover},{color:e.colorPrimaryActive,borderColor:e.colorPrimaryActive})),Jc(e.componentCls,e.colorBgContainer,e.colorBgContainer,e.colorTextDisabled,e.colorBorder)),{[`&${e.componentCls}-dangerous`]:h(h(h({color:e.colorError,borderColor:e.colorError},pr({color:e.colorErrorHover,borderColor:e.colorErrorBorderHover},{color:e.colorErrorActive,borderColor:e.colorErrorActive})),Jc(e.componentCls,e.colorError,e.colorError,e.colorTextDisabled,e.colorBorder)),Bv(e))}),IR=e=>h(h(h(h(h({},A1(e)),{color:e.colorTextLightSolid,backgroundColor:e.colorPrimary,boxShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlOutline}`}),pr({color:e.colorTextLightSolid,backgroundColor:e.colorPrimaryHover},{color:e.colorTextLightSolid,backgroundColor:e.colorPrimaryActive})),Jc(e.componentCls,e.colorPrimary,e.colorPrimary,e.colorTextDisabled,e.colorBorder,{color:e.colorPrimaryHover,borderColor:e.colorPrimaryHover},{color:e.colorPrimaryActive,borderColor:e.colorPrimaryActive})),{[`&${e.componentCls}-dangerous`]:h(h(h({backgroundColor:e.colorError,boxShadow:`0 ${e.controlOutlineWidth}px 0 ${e.colorErrorOutline}`},pr({backgroundColor:e.colorErrorHover},{backgroundColor:e.colorErrorActive})),Jc(e.componentCls,e.colorError,e.colorError,e.colorTextDisabled,e.colorBorder,{color:e.colorErrorHover,borderColor:e.colorErrorHover},{color:e.colorErrorActive,borderColor:e.colorErrorActive})),Bv(e))}),PR=e=>h(h({},D1(e)),{borderStyle:\"dashed\"}),TR=e=>h(h(h({color:e.colorLink},pr({color:e.colorLinkHover},{color:e.colorLinkActive})),eu(e)),{[`&${e.componentCls}-dangerous`]:h(h({color:e.colorError},pr({color:e.colorErrorHover},{color:e.colorErrorActive})),eu(e))}),OR=e=>h(h(h({},pr({color:e.colorText,backgroundColor:e.colorBgTextHover},{color:e.colorText,backgroundColor:e.colorBgTextActive})),eu(e)),{[`&${e.componentCls}-dangerous`]:h(h({color:e.colorError},eu(e)),pr({color:e.colorErrorHover,backgroundColor:e.colorErrorBg},{color:e.colorErrorHover,backgroundColor:e.colorErrorBg}))}),ER=e=>h(h({},Pp(e)),{[`&${e.componentCls}:hover`]:h({},Pp(e))}),MR=e=>{const{componentCls:t}=e;return{[`${t}-default`]:D1(e),[`${t}-primary`]:IR(e),[`${t}-dashed`]:PR(e),[`${t}-link`]:TR(e),[`${t}-text`]:OR(e),[`${t}-disabled`]:ER(e)}},Lv=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";const{componentCls:n,iconCls:o,controlHeight:r,fontSize:l,lineHeight:a,lineWidth:i,borderRadius:s,buttonPaddingHorizontal:c}=e,u=Math.max(0,(r-l*a)/2-i),d=c-i,p=`${n}-icon-only`;return[{[`${n}${t}`]:{fontSize:l,height:r,padding:`${u}px ${d}px`,borderRadius:s,[`&${p}`]:{width:r,paddingInlineStart:0,paddingInlineEnd:0,[`&${n}-round`]:{width:\"auto\"},\"> span\":{transform:\"scale(1.143)\"}},[`&${n}-loading`]:{opacity:e.opacityLoading,cursor:\"default\"},[`${n}-loading-icon`]:{transition:`width ${e.motionDurationSlow} ${e.motionEaseInOut}, opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`},[`&:not(${p}) ${n}-loading-icon > ${o}`]:{marginInlineEnd:e.marginXS}}},{[`${n}${n}-circle${t}`]:wR(e)},{[`${n}${n}-round${t}`]:_R(e)}]},AR=e=>Lv(e),DR=e=>{const t=Le(e,{controlHeight:e.controlHeightSM,padding:e.paddingXS,buttonPaddingHorizontal:8,borderRadius:e.borderRadiusSM});return Lv(t,`${e.componentCls}-sm`)},RR=e=>{const t=Le(e,{controlHeight:e.controlHeightLG,fontSize:e.fontSizeLG,borderRadius:e.borderRadiusLG});return Lv(t,`${e.componentCls}-lg`)},kR=e=>{const{componentCls:t}=e;return{[t]:{[`&${t}-block`]:{width:\"100%\"}}}},NR=Ge(\"Button\",e=>{const{controlTmpOutline:t,paddingContentHorizontal:n}=e,o=Le(e,{colorOutlineDefault:t,buttonPaddingHorizontal:n});return[xR(o),DR(o),AR(o),RR(o),kR(o),MR(o),yR(o),Oa(e,{focus:!1}),CR(e)]}),BR=()=>({prefixCls:String,size:{type:String}}),R1=_v(),tu=ne({compatConfig:{MODE:3},name:\"AButtonGroup\",props:BR(),setup(e,t){let{slots:n}=t;const{prefixCls:o,direction:r}=Pe(\"btn-group\",e),[,,l]=br();R1.useProvide(vt({size:I(()=>e.size)}));const a=I(()=>{const{size:i}=e;let s=\"\";switch(i){case\"large\":s=\"lg\";break;case\"small\":s=\"sm\";break;case\"middle\":case void 0:break;default:Ot(!i,\"Button.Group\",\"Invalid prop `size`.\")}return{[`${o.value}`]:!0,[`${o.value}-${s}`]:s,[`${o.value}-rtl`]:r.value===\"rtl\",[l.value]:!0}});return()=>{var i;return f(\"div\",{class:a.value},[$t((i=n.default)===null||i===void 0?void 0:i.call(n))])}}}),sb=/^[\\u4e00-\\u9fa5]{2}$/,cb=sb.test.bind(sb);function hs(e){return e===\"text\"||e===\"link\"}const _t=ne({compatConfig:{MODE:3},name:\"AButton\",inheritAttrs:!1,__ANT_BUTTON:!0,props:Ze(M1(),{type:\"default\"}),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:r,expose:l}=t;const{prefixCls:a,autoInsertSpaceInButton:i,direction:s,size:c}=Pe(\"btn\",e),[u,d]=NR(a),p=R1.useInject(),m=zn(),g=I(()=>{var T;return(T=e.disabled)!==null&&T!==void 0?T:m.value}),v=ee(null),y=ee(void 0);let b=!1;const S=ee(!1),$=ee(!1),w=I(()=>i.value!==!1),{compactSize:C,compactItemClassnames:_}=Xr(a,s),x=I(()=>typeof e.loading==\"object\"&&e.loading.delay?e.loading.delay||!0:!!e.loading);pe(x,T=>{clearTimeout(y.value),typeof x.value==\"number\"?y.value=setTimeout(()=>{S.value=T},x.value):S.value=T},{immediate:!0});const P=I(()=>{const{type:T,shape:k=\"default\",ghost:B,block:L,danger:N}=e,F=a.value,j={large:\"lg\",small:\"sm\",middle:void 0},H=C.value||p?.size||c.value,K=H&&j[H]||\"\";return[_.value,{[d.value]:!0,[`${F}`]:!0,[`${F}-${k}`]:k!==\"default\"&&k,[`${F}-${T}`]:T,[`${F}-${K}`]:K,[`${F}-loading`]:S.value,[`${F}-background-ghost`]:B&&!hs(T),[`${F}-two-chinese-chars`]:$.value&&w.value,[`${F}-block`]:L,[`${F}-dangerous`]:!!N,[`${F}-rtl`]:s.value===\"rtl\"}]}),O=()=>{const T=v.value;if(!T||i.value===!1)return;const k=T.textContent;b&&cb(k)?$.value||($.value=!0):$.value&&($.value=!1)},M=T=>{if(S.value||g.value){T.preventDefault();return}r(\"click\",T)},E=T=>{r(\"mousedown\",T)},R=(T,k)=>{const B=k?\" \":\"\";if(T.type===Ai){let L=T.children.trim();return cb(L)&&(L=L.split(\"\").join(B)),f(\"span\",null,[L])}return T};return ze(()=>{Ot(!(e.ghost&&hs(e.type)),\"Button\",\"`link` or `text` button can't be a `ghost` button.\")}),Ne(O),Hn(O),et(()=>{y.value&&clearTimeout(y.value)}),l({focus:()=>{var T;(T=v.value)===null||T===void 0||T.focus()},blur:()=>{var T;(T=v.value)===null||T===void 0||T.blur()}}),()=>{var T,k;const{icon:B=(T=n.icon)===null||T===void 0?void 0:T.call(n)}=e,L=$t((k=n.default)===null||k===void 0?void 0:k.call(n));b=L.length===1&&!B&&!hs(e.type);const{type:N,htmlType:F,href:j,title:H,target:K}=e,G=S.value?\"loading\":B,V=h(h({},o),{title:H,disabled:g.value,class:[P.value,o.class,{[`${a.value}-icon-only`]:L.length===0&&!!G}],onClick:M,onMousedown:E});g.value||delete V.disabled;const q=B&&!S.value?B:f(bR,{existIcon:!!B,prefixCls:a.value,loading:!!S.value},null),Z=L.map(re=>R(re,b&&w.value));if(j!==void 0)return u(f(\"a\",A(A({},V),{},{href:j,target:K,ref:v}),[q,Z]));let oe=f(\"button\",A(A({},V),{},{ref:v,type:F}),[q,Z]);if(!hs(N)){const re=(function(){return oe})();oe=f(Nv,{ref:\"wave\",disabled:!!S.value},{default:()=>[re]})}return u(oe)}}});_t.Group=tu;_t.install=function(e){return e.component(_t.name,_t),e.component(tu.name,tu),e};const k1=()=>({arrow:Fe([Boolean,Object]),trigger:{type:[Array,String]},menu:De(),overlay:W.any,visible:ye(),open:ye(),disabled:ye(),danger:ye(),autofocus:ye(),align:De(),getPopupContainer:Function,prefixCls:String,transitionName:String,placement:String,overlayClassName:String,overlayStyle:De(),forceRender:ye(),mouseEnterDelay:Number,mouseLeaveDelay:Number,openClassName:String,minOverlayWidthMatchTrigger:ye(),destroyPopupOnHide:ye(),onVisibleChange:{type:Function},\"onUpdate:visible\":{type:Function},onOpenChange:{type:Function},\"onUpdate:open\":{type:Function}}),rf=M1(),LR=()=>h(h({},k1()),{type:rf.type,size:String,htmlType:rf.htmlType,href:String,disabled:ye(),prefixCls:String,icon:W.any,title:String,loading:rf.loading,onClick:yl()}),FR=e=>{const{componentCls:t,antCls:n,paddingXS:o,opacityLoading:r}=e;return{[`${t}-button`]:{whiteSpace:\"nowrap\",[`&${n}-btn-group > ${n}-btn`]:{[`&-loading, &-loading + ${n}-btn`]:{cursor:\"default\",pointerEvents:\"none\",opacity:r},[`&:last-child:not(:first-child):not(${n}-btn-icon-only)`]:{paddingInline:o}}}}},zR=e=>{const{componentCls:t,menuCls:n,colorError:o,colorTextLightSolid:r}=e,l=`${n}-item`;return{[`${t}, ${t}-menu-submenu`]:{[`${n} ${l}`]:{[`&${l}-danger:not(${l}-disabled)`]:{color:o,\"&:hover\":{color:r,backgroundColor:o}}}}}},HR=e=>{const{componentCls:t,menuCls:n,zIndexPopup:o,dropdownArrowDistance:r,dropdownArrowOffset:l,sizePopupArrow:a,antCls:i,iconCls:s,motionDurationMid:c,dropdownPaddingVertical:u,fontSize:d,dropdownEdgeChildPadding:p,colorTextDisabled:m,fontSizeIcon:g,controlPaddingHorizontal:v,colorBgElevated:y,boxShadowPopoverArrow:b}=e;return[{[t]:h(h({},Ue(e)),{position:\"absolute\",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:o,display:\"block\",\"&::before\":{position:\"absolute\",insetBlock:-r+a/2,zIndex:-9999,opacity:1e-4,content:'\"\"'},[`${t}-wrap`]:{position:\"relative\",[`${i}-btn > ${s}-down`]:{fontSize:g},[`${s}-down::before`]:{transition:`transform ${c}`}},[`${t}-wrap-open`]:{[`${s}-down::before`]:{transform:\"rotate(180deg)\"}},\"\\n        &-hidden,\\n        &-menu-hidden,\\n        &-menu-submenu-hidden\\n      \":{display:\"none\"},[`\n        &-show-arrow${t}-placement-topLeft,\n        &-show-arrow${t}-placement-top,\n        &-show-arrow${t}-placement-topRight\n      `]:{paddingBottom:r},[`\n        &-show-arrow${t}-placement-bottomLeft,\n        &-show-arrow${t}-placement-bottom,\n        &-show-arrow${t}-placement-bottomRight\n      `]:{paddingTop:r},[`${t}-arrow`]:h({position:\"absolute\",zIndex:1,display:\"block\"},ev(a,e.borderRadiusXS,e.borderRadiusOuter,y,b)),[`\n        &-placement-top > ${t}-arrow,\n        &-placement-topLeft > ${t}-arrow,\n        &-placement-topRight > ${t}-arrow\n      `]:{bottom:r,transform:\"translateY(100%) rotate(180deg)\"},[`&-placement-top > ${t}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%) translateY(100%) rotate(180deg)\"},[`&-placement-topLeft > ${t}-arrow`]:{left:{_skip_check_:!0,value:l}},[`&-placement-topRight > ${t}-arrow`]:{right:{_skip_check_:!0,value:l}},[`\n          &-placement-bottom > ${t}-arrow,\n          &-placement-bottomLeft > ${t}-arrow,\n          &-placement-bottomRight > ${t}-arrow\n        `]:{top:r,transform:\"translateY(-100%)\"},[`&-placement-bottom > ${t}-arrow`]:{left:{_skip_check_:!0,value:\"50%\"},transform:\"translateY(-100%) translateX(-50%)\"},[`&-placement-bottomLeft > ${t}-arrow`]:{left:{_skip_check_:!0,value:l}},[`&-placement-bottomRight > ${t}-arrow`]:{right:{_skip_check_:!0,value:l}},[`&${i}-slide-down-enter${i}-slide-down-enter-active${t}-placement-bottomLeft,\n          &${i}-slide-down-appear${i}-slide-down-appear-active${t}-placement-bottomLeft,\n          &${i}-slide-down-enter${i}-slide-down-enter-active${t}-placement-bottom,\n          &${i}-slide-down-appear${i}-slide-down-appear-active${t}-placement-bottom,\n          &${i}-slide-down-enter${i}-slide-down-enter-active${t}-placement-bottomRight,\n          &${i}-slide-down-appear${i}-slide-down-appear-active${t}-placement-bottomRight`]:{animationName:qu},[`&${i}-slide-up-enter${i}-slide-up-enter-active${t}-placement-topLeft,\n          &${i}-slide-up-appear${i}-slide-up-appear-active${t}-placement-topLeft,\n          &${i}-slide-up-enter${i}-slide-up-enter-active${t}-placement-top,\n          &${i}-slide-up-appear${i}-slide-up-appear-active${t}-placement-top,\n          &${i}-slide-up-enter${i}-slide-up-enter-active${t}-placement-topRight,\n          &${i}-slide-up-appear${i}-slide-up-appear-active${t}-placement-topRight`]:{animationName:Qu},[`&${i}-slide-down-leave${i}-slide-down-leave-active${t}-placement-bottomLeft,\n          &${i}-slide-down-leave${i}-slide-down-leave-active${t}-placement-bottom,\n          &${i}-slide-down-leave${i}-slide-down-leave-active${t}-placement-bottomRight`]:{animationName:Zu},[`&${i}-slide-up-leave${i}-slide-up-leave-active${t}-placement-topLeft,\n          &${i}-slide-up-leave${i}-slide-up-leave-active${t}-placement-top,\n          &${i}-slide-up-leave${i}-slide-up-leave-active${t}-placement-topRight`]:{animationName:Ju}})},{[`${t} ${n}`]:{position:\"relative\",margin:0},[`${n}-submenu-popup`]:{position:\"absolute\",zIndex:o,background:\"transparent\",boxShadow:\"none\",transformOrigin:\"0 0\",\"ul,li\":{listStyle:\"none\"},ul:{marginInline:\"0.3em\"}},[`${t}, ${t}-menu-submenu`]:{[n]:h(h({padding:p,listStyleType:\"none\",backgroundColor:y,backgroundClip:\"padding-box\",borderRadius:e.borderRadiusLG,outline:\"none\",boxShadow:e.boxShadowSecondary},fr(e)),{[`${n}-item-group-title`]:{padding:`${u}px ${v}px`,color:e.colorTextDescription,transition:`all ${c}`},[`${n}-item`]:{position:\"relative\",display:\"flex\",alignItems:\"center\",borderRadius:e.borderRadiusSM},[`${n}-item-icon`]:{minWidth:d,marginInlineEnd:e.marginXS,fontSize:e.fontSizeSM},[`${n}-title-content`]:{flex:\"auto\",\"> a\":{color:\"inherit\",transition:`all ${c}`,\"&:hover\":{color:\"inherit\"},\"&::after\":{position:\"absolute\",inset:0,content:'\"\"'}}},[`${n}-item, ${n}-submenu-title`]:h(h({clear:\"both\",margin:0,padding:`${u}px ${v}px`,color:e.colorText,fontWeight:\"normal\",fontSize:d,lineHeight:e.lineHeight,cursor:\"pointer\",transition:`all ${c}`,\"&:hover, &-active\":{backgroundColor:e.controlItemBgHover}},fr(e)),{\"&-selected\":{color:e.colorPrimary,backgroundColor:e.controlItemBgActive,\"&:hover, &-active\":{backgroundColor:e.controlItemBgActiveHover}},\"&-disabled\":{color:m,cursor:\"not-allowed\",\"&:hover\":{color:m,backgroundColor:y,cursor:\"not-allowed\"},a:{pointerEvents:\"none\"}},\"&-divider\":{height:1,margin:`${e.marginXXS}px 0`,overflow:\"hidden\",lineHeight:0,backgroundColor:e.colorSplit},[`${t}-menu-submenu-expand-icon`]:{position:\"absolute\",insetInlineEnd:e.paddingXS,[`${t}-menu-submenu-arrow-icon`]:{marginInlineEnd:\"0 !important\",color:e.colorTextDescription,fontSize:g,fontStyle:\"normal\"}}}),[`${n}-item-group-list`]:{margin:`0 ${e.marginXS}px`,padding:0,listStyle:\"none\"},[`${n}-submenu-title`]:{paddingInlineEnd:v+e.fontSizeSM},[`${n}-submenu-vertical`]:{position:\"relative\"},[`${n}-submenu${n}-submenu-disabled ${t}-menu-submenu-title`]:{[`&, ${t}-menu-submenu-arrow-icon`]:{color:m,backgroundColor:y,cursor:\"not-allowed\"}},[`${n}-submenu-selected ${t}-menu-submenu-title`]:{color:e.colorPrimary}})}},[Go(e,\"slide-up\"),Go(e,\"slide-down\"),ya(e,\"move-up\"),ya(e,\"move-down\"),Ta(e,\"zoom-big\")]]},N1=Ge(\"Dropdown\",(e,t)=>{let{rootPrefixCls:n}=t;const{marginXXS:o,sizePopupArrow:r,controlHeight:l,fontSize:a,lineHeight:i,paddingXXS:s,componentCls:c,borderRadiusOuter:u,borderRadiusLG:d}=e,p=(l-a*i)/2,{dropdownArrowOffset:m}=I1({sizePopupArrow:r,contentRadius:d,borderRadiusOuter:u}),g=Le(e,{menuCls:`${c}-menu`,rootPrefixCls:n,dropdownArrowDistance:r/2+o,dropdownArrowOffset:m,dropdownPaddingVertical:p,dropdownEdgeChildPadding:s});return[HR(g),FR(g),zR(g)]},e=>({zIndexPopup:e.zIndexPopupBase+50}));var jR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const WR=_t.Group,Ci=ne({compatConfig:{MODE:3},name:\"ADropdownButton\",inheritAttrs:!1,__ANT_BUTTON:!0,props:Ze(LR(),{trigger:\"hover\",placement:\"bottomRight\",type:\"default\"}),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:r}=t;const l=p=>{r(\"update:visible\",p),r(\"visibleChange\",p),r(\"update:open\",p),r(\"openChange\",p)},{prefixCls:a,direction:i,getPopupContainer:s}=Pe(\"dropdown\",e),c=I(()=>`${a.value}-button`),[u,d]=N1(a);return()=>{var p,m;const g=h(h({},e),o),{type:v=\"default\",disabled:y,danger:b,loading:S,htmlType:$,class:w=\"\",overlay:C=(p=n.overlay)===null||p===void 0?void 0:p.call(n),trigger:_,align:x,open:P,visible:O,onVisibleChange:M,placement:E=i.value===\"rtl\"?\"bottomLeft\":\"bottomRight\",href:R,title:D,icon:z=((m=n.icon)===null||m===void 0?void 0:m.call(n))||f(Im,null,null),mouseEnterDelay:T,mouseLeaveDelay:k,overlayClassName:B,overlayStyle:L,destroyPopupOnHide:N,onClick:F,\"onUpdate:open\":j}=g,H=jR(g,[\"type\",\"disabled\",\"danger\",\"loading\",\"htmlType\",\"class\",\"overlay\",\"trigger\",\"align\",\"open\",\"visible\",\"onVisibleChange\",\"placement\",\"href\",\"title\",\"icon\",\"mouseEnterDelay\",\"mouseLeaveDelay\",\"overlayClassName\",\"overlayStyle\",\"destroyPopupOnHide\",\"onClick\",\"onUpdate:open\"]),K={align:x,disabled:y,trigger:y?[]:_,placement:E,getPopupContainer:s?.value,onOpenChange:l,mouseEnterDelay:T,mouseLeaveDelay:k,open:P??O,overlayClassName:B,overlayStyle:L,destroyPopupOnHide:N},G=f(_t,{danger:b,type:v,disabled:y,loading:S,onClick:F,htmlType:$,href:R,title:D},{default:n.default}),V=f(_t,{danger:b,type:v,icon:z},null);return u(f(WR,A(A({},H),{},{class:le(c.value,w,d.value)}),{default:()=>[n.leftButton?n.leftButton({button:G}):G,f(po,K,{default:()=>[n.rightButton?n.rightButton({button:V}):V],overlay:()=>C})]}))}}}),B1=Symbol(\"OverrideContextKey\"),L1=()=>Je(B1,void 0),Fv=e=>{var t,n,o;const{prefixCls:r,mode:l,selectable:a,validator:i,onClick:s,expandIcon:c}=L1()||{};Qe(B1,{prefixCls:I(()=>{var u,d;return(d=(u=e.prefixCls)===null||u===void 0?void 0:u.value)!==null&&d!==void 0?d:r?.value}),mode:I(()=>{var u,d;return(d=(u=e.mode)===null||u===void 0?void 0:u.value)!==null&&d!==void 0?d:l?.value}),selectable:I(()=>{var u,d;return(d=(u=e.selectable)===null||u===void 0?void 0:u.value)!==null&&d!==void 0?d:a?.value}),validator:(t=e.validator)!==null&&t!==void 0?t:i,onClick:(n=e.onClick)!==null&&n!==void 0?n:s,expandIcon:(o=e.expandIcon)!==null&&o!==void 0?o:c?.value})},po=ne({compatConfig:{MODE:3},name:\"ADropdown\",inheritAttrs:!1,props:Ze(k1(),{mouseEnterDelay:.15,mouseLeaveDelay:.1,placement:\"bottomLeft\",trigger:\"hover\"}),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:r}=t;const{prefixCls:l,rootPrefixCls:a,direction:i,getPopupContainer:s}=Pe(\"dropdown\",e),[c,u]=N1(l),d=I(()=>{const{placement:y=\"\",transitionName:b}=e;return b!==void 0?b:y.includes(\"top\")?`${a.value}-slide-down`:`${a.value}-slide-up`});Fv({prefixCls:I(()=>`${l.value}-menu`),expandIcon:I(()=>f(\"span\",{class:`${l.value}-menu-submenu-arrow`},[f(Eo,{class:`${l.value}-menu-submenu-arrow-icon`},null)])),mode:I(()=>\"vertical\"),selectable:I(()=>!1),onClick:()=>{},validator:y=>{let{mode:b}=y}});const p=()=>{var y,b,S;const $=e.overlay||((y=n.overlay)===null||y===void 0?void 0:y.call(n)),w=Array.isArray($)?$[0]:$;if(!w)return null;const C=w.props||{};Ot(!C.mode||C.mode===\"vertical\",\"Dropdown\",`mode=\"${C.mode}\" is not supported for Dropdown's Menu.`);const{selectable:_=!1,expandIcon:x=(S=(b=w.children)===null||b===void 0?void 0:b.expandIcon)===null||S===void 0?void 0:S.call(b)}=C,P=typeof x<\"u\"&&Kt(x)?x:f(\"span\",{class:`${l.value}-menu-submenu-arrow`},[f(Eo,{class:`${l.value}-menu-submenu-arrow-icon`},null)]);return Kt(w)?dt(w,{mode:\"vertical\",selectable:_,expandIcon:()=>P}):w},m=I(()=>{const y=e.placement;if(!y)return i.value===\"rtl\"?\"bottomRight\":\"bottomLeft\";if(y.includes(\"Center\")){const b=y.slice(0,y.indexOf(\"Center\"));return Ot(!y.includes(\"Center\"),\"Dropdown\",`You are using '${y}' placement in Dropdown, which is deprecated. Try to use '${b}' instead.`),b}return y}),g=I(()=>typeof e.visible==\"boolean\"?e.visible:e.open),v=y=>{r(\"update:visible\",y),r(\"visibleChange\",y),r(\"update:open\",y),r(\"openChange\",y)};return()=>{var y,b;const{arrow:S,trigger:$,disabled:w,overlayClassName:C}=e,_=(y=n.default)===null||y===void 0?void 0:y.call(n)[0],x=dt(_,h({class:le((b=_?.props)===null||b===void 0?void 0:b.class,{[`${l.value}-rtl`]:i.value===\"rtl\"},`${l.value}-trigger`)},w?{disabled:w}:{})),P=le(C,u.value,{[`${l.value}-rtl`]:i.value===\"rtl\"}),O=w?[]:$;let M;O&&O.includes(\"contextmenu\")&&(M=!0);const E=Av({arrowPointAtCenter:typeof S==\"object\"&&S.pointAtCenter,autoAdjustOverflow:!0}),R=ot(h(h(h({},e),o),{visible:g.value,builtinPlacements:E,overlayClassName:P,arrow:!!S,alignPoint:M,prefixCls:l.value,getPopupContainer:s?.value,transitionName:d.value,trigger:O,onVisibleChange:v,placement:m.value}),[\"overlay\",\"onUpdate:visible\"]);return c(f(E1,R,{default:()=>[x],overlay:p}))}}});po.Button=Ci;var VR=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const KR=()=>({prefixCls:String,href:String,separator:W.any,dropdownProps:De(),overlay:W.any,onClick:yl()}),xi=ne({compatConfig:{MODE:3},name:\"ABreadcrumbItem\",inheritAttrs:!1,__ANT_BREADCRUMB_ITEM:!0,props:KR(),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:r}=t;const{prefixCls:l}=Pe(\"breadcrumb\",e),a=(s,c)=>{const u=Qt(n,e,\"overlay\");return u?f(po,A(A({},e.dropdownProps),{},{overlay:u,placement:\"bottom\"}),{default:()=>[f(\"span\",{class:`${c}-overlay-link`},[s,f(xa,null,null)])]}):s},i=s=>{r(\"click\",s)};return()=>{var s;const c=(s=Qt(n,e,\"separator\"))!==null&&s!==void 0?s:\"/\",u=Qt(n,e),{class:d,style:p}=o,m=VR(o,[\"class\",\"style\"]);let g;return e.href!==void 0?g=f(\"a\",A({class:`${l.value}-link`,onClick:i},m),[u]):g=f(\"span\",A({class:`${l.value}-link`,onClick:i},m),[u]),g=a(g,l.value),u!=null?f(\"li\",{class:d,style:p},[g,c&&f(\"span\",{class:`${l.value}-separator`},[c])]):null}}});function GR(e,t,n,o){let r;if(r!==void 0)return!!r;if(e===t)return!0;if(typeof e!=\"object\"||!e||typeof t!=\"object\"||!t)return!1;const l=Object.keys(e),a=Object.keys(t);if(l.length!==a.length)return!1;const i=Object.prototype.hasOwnProperty.bind(t);for(let s=0;s<l.length;s++){const c=l[s];if(!i(c))return!1;const u=e[c],d=t[c];if(r=void 0,r===!1||r===void 0&&u!==d)return!1}return!0}function Vl(e,t){return GR(zt(e),zt(t))}const F1=Symbol(\"menuContextKey\"),z1=e=>{Qe(F1,e)},yr=()=>Je(F1),H1=Symbol(\"ForceRenderKey\"),XR=e=>{Qe(H1,e)},j1=()=>Je(H1,!1),W1=Symbol(\"menuFirstLevelContextKey\"),V1=e=>{Qe(W1,e)},UR=()=>Je(W1,!0),nu=ne({compatConfig:{MODE:3},name:\"MenuContextProvider\",inheritAttrs:!1,props:{mode:{type:String,default:void 0},overflowDisabled:{type:Boolean,default:void 0}},setup(e,t){let{slots:n}=t;const o=yr(),r=h({},o);return e.mode!==void 0&&(r.mode=We(e,\"mode\")),e.overflowDisabled!==void 0&&(r.overflowDisabled=We(e,\"overflowDisabled\")),z1(r),()=>{var l;return(l=n.default)===null||l===void 0?void 0:l.call(n)}}}),K1=Symbol(\"siderCollapsed\"),G1=Symbol(\"siderHookProvider\"),bs=\"$$__vc-menu-more__key\",X1=Symbol(\"KeyPathContext\"),zv=()=>Je(X1,{parentEventKeys:I(()=>[]),parentKeys:I(()=>[]),parentInfo:{}}),YR=(e,t,n)=>{const{parentEventKeys:o,parentKeys:r}=zv(),l=I(()=>[...o.value,e]),a=I(()=>[...r.value,t]);return Qe(X1,{parentEventKeys:l,parentKeys:a,parentInfo:n}),a},U1=Symbol(\"measure\"),ub=ne({compatConfig:{MODE:3},setup(e,t){let{slots:n}=t;return Qe(U1,!0),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),Hv=()=>Je(U1,!1);function Y1(e){const{mode:t,rtl:n,inlineIndent:o}=yr();return I(()=>t.value!==\"inline\"?null:n.value?{paddingRight:`${e.value*o.value}px`}:{paddingLeft:`${e.value*o.value}px`})}let qR=0;const ZR=()=>({id:String,role:String,disabled:Boolean,danger:Boolean,title:{type:[String,Boolean],default:void 0},icon:W.any,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,originItemValue:De()}),To=ne({compatConfig:{MODE:3},name:\"AMenuItem\",inheritAttrs:!1,props:ZR(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:r}=t;const l=fn(),a=Hv(),i=typeof l.vnode.key==\"symbol\"?String(l.vnode.key):l.vnode.key;Ot(typeof l.vnode.key!=\"symbol\",\"MenuItem\",`MenuItem \\`:key=\"${String(i)}\"\\` not support Symbol type`);const s=`menu_item_${++qR}_$$_${i}`,{parentEventKeys:c,parentKeys:u}=zv(),{prefixCls:d,activeKeys:p,disabled:m,changeActiveKeys:g,rtl:v,inlineCollapsed:y,siderCollapsed:b,onItemClick:S,selectedKeys:$,registerMenuInfo:w,unRegisterMenuInfo:C}=yr(),_=UR(),x=ee(!1),P=I(()=>[...u.value,i]);w(s,{eventKey:s,key:i,parentEventKeys:c,parentKeys:u,isLeaf:!0}),et(()=>{C(s)}),pe(p,()=>{x.value=!!p.value.find(j=>j===i)},{immediate:!0});const M=I(()=>m.value||e.disabled),E=I(()=>$.value.includes(i)),R=I(()=>{const j=`${d.value}-item`;return{[`${j}`]:!0,[`${j}-danger`]:e.danger,[`${j}-active`]:x.value,[`${j}-selected`]:E.value,[`${j}-disabled`]:M.value}}),D=j=>({key:i,eventKey:s,keyPath:P.value,eventKeyPath:[...c.value,s],domEvent:j,item:h(h({},e),r)}),z=j=>{if(M.value)return;const H=D(j);o(\"click\",j),S(H)},T=j=>{M.value||(g(P.value),o(\"mouseenter\",j))},k=j=>{M.value||(g([]),o(\"mouseleave\",j))},B=j=>{if(o(\"keydown\",j),j.which===we.ENTER){const H=D(j);o(\"click\",j),S(H)}},L=j=>{g(P.value),o(\"focus\",j)},N=(j,H)=>{const K=f(\"span\",{class:`${d.value}-title-content`},[H]);return(!j||Kt(H)&&H.type===\"span\")&&H&&y.value&&_&&typeof H==\"string\"?f(\"div\",{class:`${d.value}-inline-collapsed-noicon`},[H.charAt(0)]):K},F=Y1(I(()=>P.value.length));return()=>{var j,H,K,G,V;if(a)return null;const q=(j=e.title)!==null&&j!==void 0?j:(H=n.title)===null||H===void 0?void 0:H.call(n),Z=$t((K=n.default)===null||K===void 0?void 0:K.call(n)),oe=Z.length;let re=q;typeof q>\"u\"?re=_&&oe?Z:\"\":q===!1&&(re=\"\");const Y={title:re};!b.value&&!y.value&&(Y.title=null,Y.open=!1);const Q={};e.role===\"option\"&&(Q[\"aria-selected\"]=E.value);const ce=(G=e.icon)!==null&&G!==void 0?G:(V=n.icon)===null||V===void 0?void 0:V.call(n,e);return f(Ln,A(A({},Y),{},{placement:v.value?\"left\":\"right\",overlayClassName:`${d.value}-inline-collapsed-tooltip`}),{default:()=>[f(ur.Item,A(A(A({component:\"li\"},r),{},{id:e.id,style:h(h({},r.style||{}),F.value),class:[R.value,{[`${r.class}`]:!!r.class,[`${d.value}-item-only-child`]:(ce?oe+1:oe)===1}],role:e.role||\"menuitem\",tabindex:e.disabled?null:-1,\"data-menu-id\":i,\"aria-disabled\":e.disabled},Q),{},{onMouseenter:T,onMouseleave:k,onClick:z,onKeydown:B,onFocus:L,title:typeof q==\"string\"?q:void 0}),{default:()=>[dt(typeof ce==\"function\"?ce(e.originItemValue):ce,{class:`${d.value}-item-icon`},!1),N(ce,Z)]})]})}}}),Er={adjustX:1,adjustY:1},QR={topLeft:{points:[\"bl\",\"tl\"],overflow:Er,offset:[0,-7]},bottomLeft:{points:[\"tl\",\"bl\"],overflow:Er,offset:[0,7]},leftTop:{points:[\"tr\",\"tl\"],overflow:Er,offset:[-4,0]},rightTop:{points:[\"tl\",\"tr\"],overflow:Er,offset:[4,0]}},JR={topLeft:{points:[\"bl\",\"tl\"],overflow:Er,offset:[0,-7]},bottomLeft:{points:[\"tl\",\"bl\"],overflow:Er,offset:[0,7]},rightTop:{points:[\"tr\",\"tl\"],overflow:Er,offset:[-4,0]},leftTop:{points:[\"tl\",\"tr\"],overflow:Er,offset:[4,0]}},e5={horizontal:\"bottomLeft\",vertical:\"rightTop\",\"vertical-left\":\"rightTop\",\"vertical-right\":\"leftTop\"},db=ne({compatConfig:{MODE:3},name:\"PopupTrigger\",inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:Object,emits:[\"visibleChange\"],setup(e,t){let{slots:n,emit:o}=t;const r=ee(!1),{getPopupContainer:l,rtl:a,subMenuOpenDelay:i,subMenuCloseDelay:s,builtinPlacements:c,triggerSubMenuAction:u,forceSubMenuRender:d,motion:p,defaultMotions:m,rootClassName:g}=yr(),v=j1(),y=I(()=>a.value?h(h({},JR),c.value):h(h({},QR),c.value)),b=I(()=>e5[e.mode]),S=ee();pe(()=>e.visible,C=>{qe.cancel(S.value),S.value=qe(()=>{r.value=C})},{immediate:!0}),et(()=>{qe.cancel(S.value)});const $=C=>{o(\"visibleChange\",C)},w=I(()=>{var C,_;const x=p.value||((C=m.value)===null||C===void 0?void 0:C[e.mode])||((_=m.value)===null||_===void 0?void 0:_.other),P=typeof x==\"function\"?x():x;return P?bo(P.name,{css:!0}):void 0});return()=>{const{prefixCls:C,popupClassName:_,mode:x,popupOffset:P,disabled:O}=e;return f(Ol,{prefixCls:C,popupClassName:le(`${C}-popup`,{[`${C}-rtl`]:a.value},_,g.value),stretch:x===\"horizontal\"?\"minWidth\":null,getPopupContainer:l.value,builtinPlacements:y.value,popupPlacement:b.value,popupVisible:r.value,popupAlign:P&&{offset:P},action:O?[]:[u.value],mouseEnterDelay:i.value,mouseLeaveDelay:s.value,onPopupVisibleChange:$,forceRender:v||d.value,popupAnimation:w.value},{popup:n.popup,default:n.default})}}}),jv=(e,t)=>{let{slots:n,attrs:o}=t;var r;const{prefixCls:l,mode:a}=yr();return f(\"ul\",A(A({},o),{},{class:le(l.value,`${l.value}-sub`,`${l.value}-${a.value===\"inline\"?\"inline\":\"vertical\"}`),\"data-menu-list\":!0}),[(r=n.default)===null||r===void 0?void 0:r.call(n)])};jv.displayName=\"SubMenuList\";const t5=ne({compatConfig:{MODE:3},name:\"InlineSubMenuList\",inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup(e,t){let{slots:n}=t;const o=I(()=>\"inline\"),{motion:r,mode:l,defaultMotions:a}=yr(),i=I(()=>l.value===o.value),s=J(!i.value),c=I(()=>i.value?e.open:!1);pe(l,()=>{i.value&&(s.value=!1)},{flush:\"post\"});const u=I(()=>{var d,p;const m=r.value||((d=a.value)===null||d===void 0?void 0:d[o.value])||((p=a.value)===null||p===void 0?void 0:p.other),g=typeof m==\"function\"?m():m;return h(h({},g),{appear:e.keyPath.length<=1})});return()=>{var d;return s.value?null:f(nu,{mode:o.value},{default:()=>[f(cn,u.value,{default:()=>[xn(f(jv,{id:e.id},{default:()=>[(d=n.default)===null||d===void 0?void 0:d.call(n)]}),[[On,c.value]])]})]})}}});let fb=0;const n5=()=>({icon:W.any,title:W.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,theme:String,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function,originItemValue:De()}),Cl=ne({compatConfig:{MODE:3},name:\"ASubMenu\",inheritAttrs:!1,props:n5(),slots:Object,setup(e,t){let{slots:n,attrs:o,emit:r}=t;var l,a;V1(!1);const i=Hv(),s=fn(),c=typeof s.vnode.key==\"symbol\"?String(s.vnode.key):s.vnode.key;Ot(typeof s.vnode.key!=\"symbol\",\"SubMenu\",`SubMenu \\`:key=\"${String(c)}\"\\` not support Symbol type`);const u=cp(c)?c:`sub_menu_${++fb}_$$_not_set_key`,d=(l=e.eventKey)!==null&&l!==void 0?l:cp(c)?`sub_menu_${++fb}_$$_${c}`:u,{parentEventKeys:p,parentInfo:m,parentKeys:g}=zv(),v=I(()=>[...g.value,u]),y=ee([]),b={eventKey:d,key:u,parentEventKeys:p,childrenEventKeys:y,parentKeys:g};(a=m.childrenEventKeys)===null||a===void 0||a.value.push(d),et(()=>{var U;m.childrenEventKeys&&(m.childrenEventKeys.value=(U=m.childrenEventKeys)===null||U===void 0?void 0:U.value.filter(ie=>ie!=d))}),YR(d,u,b);const{prefixCls:S,activeKeys:$,disabled:w,changeActiveKeys:C,mode:_,inlineCollapsed:x,openKeys:P,overflowDisabled:O,onOpenChange:M,registerMenuInfo:E,unRegisterMenuInfo:R,selectedSubMenuKeys:D,expandIcon:z,theme:T}=yr(),k=c!=null,B=!i&&(j1()||!k);XR(B),(i&&k||!i&&!k||B)&&(E(d,b),et(()=>{R(d)}));const L=I(()=>`${S.value}-submenu`),N=I(()=>w.value||e.disabled),F=ee(),j=ee(),H=I(()=>P.value.includes(u)),K=I(()=>!O.value&&H.value),G=I(()=>D.value.includes(u)),V=ee(!1);pe($,()=>{V.value=!!$.value.find(U=>U===u)},{immediate:!0});const q=U=>{N.value||(r(\"titleClick\",U,u),_.value===\"inline\"&&M(u,!H.value))},Z=U=>{N.value||(C(v.value),r(\"mouseenter\",U))},oe=U=>{N.value||(C([]),r(\"mouseleave\",U))},re=Y1(I(()=>v.value.length)),Y=U=>{_.value!==\"inline\"&&M(u,U)},Q=()=>{C(v.value)},ce=d&&`${d}-popup`,ue=I(()=>le(S.value,`${S.value}-${e.theme||T.value}`,e.popupClassName)),be=(U,ie)=>{if(!ie)return x.value&&!g.value.length&&U&&typeof U==\"string\"?f(\"div\",{class:`${S.value}-inline-collapsed-noicon`},[U.charAt(0)]):f(\"span\",{class:`${S.value}-title-content`},[U]);const ve=Kt(U)&&U.type===\"span\";return f(Ve,null,[dt(typeof ie==\"function\"?ie(e.originItemValue):ie,{class:`${S.value}-item-icon`},!1),ve?U:f(\"span\",{class:`${S.value}-title-content`},[U])])},Ce=I(()=>_.value!==\"inline\"&&v.value.length>1?\"vertical\":_.value),ge=I(()=>_.value===\"horizontal\"?\"vertical\":_.value),Se=I(()=>Ce.value===\"horizontal\"?\"vertical\":Ce.value),X=()=>{var U,ie;const ve=L.value,me=(U=e.icon)!==null&&U!==void 0?U:(ie=n.icon)===null||ie===void 0?void 0:ie.call(n,e),he=e.expandIcon||n.expandIcon||z.value,se=be(Qt(n,e,\"title\"),me);return f(\"div\",{style:re.value,class:`${ve}-title`,tabindex:N.value?null:-1,ref:F,title:typeof se==\"string\"?se:null,\"data-menu-id\":u,\"aria-expanded\":K.value,\"aria-haspopup\":!0,\"aria-controls\":ce,\"aria-disabled\":N.value,onClick:q,onFocus:Q},[se,_.value!==\"horizontal\"&&he?he(h(h({},e),{isOpen:K.value})):f(\"i\",{class:`${ve}-arrow`},null)])};return()=>{var U;if(i)return k?(U=n.default)===null||U===void 0?void 0:U.call(n):null;const ie=L.value;let ve=()=>null;if(!O.value&&_.value!==\"inline\"){const me=_.value===\"horizontal\"?[0,8]:[10,0];ve=()=>f(db,{mode:Ce.value,prefixCls:ie,visible:!e.internalPopupClose&&K.value,popupClassName:ue.value,popupOffset:e.popupOffset||me,disabled:N.value,onVisibleChange:Y},{default:()=>[X()],popup:()=>f(nu,{mode:Se.value},{default:()=>[f(jv,{id:ce,ref:j},{default:n.default})]})})}else ve=()=>f(db,null,{default:X});return f(nu,{mode:ge.value},{default:()=>[f(ur.Item,A(A({component:\"li\"},o),{},{role:\"none\",class:le(ie,`${ie}-${_.value}`,o.class,{[`${ie}-open`]:K.value,[`${ie}-active`]:V.value,[`${ie}-selected`]:G.value,[`${ie}-disabled`]:N.value}),onMouseenter:Z,onMouseleave:oe,\"data-submenu-id\":u}),{default:()=>f(Ve,null,[ve(),!O.value&&f(t5,{id:ce,open:K.value,keyPath:v.value},{default:n.default})])})]})}}});function q1(e,t){return e.classList?e.classList.contains(t):` ${e.className} `.indexOf(` ${t} `)>-1}function ou(e,t){e.classList?e.classList.add(t):q1(e,t)||(e.className=`${e.className} ${t}`)}function ru(e,t){if(e.classList)e.classList.remove(t);else if(q1(e,t)){const n=e.className;e.className=` ${n} `.replace(` ${t} `,\" \")}}const zi=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"ant-motion-collapse\",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:t,css:!0,onBeforeEnter:n=>{n.style.height=\"0px\",n.style.opacity=\"0\",ou(n,e)},onEnter:n=>{it(()=>{n.style.height=`${n.scrollHeight}px`,n.style.opacity=\"1\"})},onAfterEnter:n=>{n&&(ru(n,e),n.style.height=null,n.style.opacity=null)},onBeforeLeave:n=>{ou(n,e),n.style.height=`${n.offsetHeight}px`,n.style.opacity=null},onLeave:n=>{setTimeout(()=>{n.style.height=\"0px\",n.style.opacity=\"0\"})},onAfterLeave:n=>{n&&(ru(n,e),n.style&&(n.style.height=null,n.style.opacity=null))}}},o5=()=>({title:W.any,originItemValue:De()}),wi=ne({compatConfig:{MODE:3},name:\"AMenuItemGroup\",inheritAttrs:!1,props:o5(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r}=yr(),l=I(()=>`${r.value}-item-group`),a=Hv();return()=>{var i,s;return a?(i=n.default)===null||i===void 0?void 0:i.call(n):f(\"li\",A(A({},o),{},{onClick:c=>c.stopPropagation(),class:l.value}),[f(\"div\",{title:typeof e.title==\"string\"?e.title:void 0,class:`${l.value}-title`},[Qt(n,e,\"title\")]),f(\"ul\",{class:`${l.value}-list`},[(s=n.default)===null||s===void 0?void 0:s.call(n)])])}}}),r5=()=>({prefixCls:String,dashed:Boolean}),_i=ne({compatConfig:{MODE:3},name:\"AMenuDivider\",props:r5(),setup(e){const{prefixCls:t}=yr(),n=I(()=>({[`${t.value}-item-divider`]:!0,[`${t.value}-item-divider-dashed`]:!!e.dashed}));return()=>f(\"li\",{class:n.value},null)}});var l5=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function Tp(e,t,n){return(e||[]).map((o,r)=>{if(o&&typeof o==\"object\"){const l=o,{label:a,children:i,key:s,type:c}=l,u=l5(l,[\"label\",\"children\",\"key\",\"type\"]),d=s??`tmp-${r}`,p=n?n.parentKeys.slice():[],m=[],g={eventKey:d,key:d,parentEventKeys:J(p),parentKeys:J(p),childrenEventKeys:J(m),isLeaf:!1};if(i||c===\"group\"){if(c===\"group\"){const y=Tp(i,t,n);return f(wi,A(A({key:d},u),{},{title:a,originItemValue:o}),{default:()=>[y]})}t.set(d,g),n&&n.childrenEventKeys.push(d);const v=Tp(i,t,{childrenEventKeys:m,parentKeys:[].concat(p,d)});return f(Cl,A(A({key:d},u),{},{title:a,originItemValue:o}),{default:()=>[v]})}return c===\"divider\"?f(_i,A({key:d},u),null):(g.isLeaf=!0,t.set(d,g),f(To,A(A({key:d},u),{},{originItemValue:o}),{default:()=>[a]}))}return null}).filter(o=>o)}function a5(e){const t=ee([]),n=ee(!1),o=ee(new Map);return pe(()=>e.items,()=>{const r=new Map;n.value=!1,e.items?(n.value=!0,t.value=Tp(e.items,r)):t.value=void 0,o.value=r},{immediate:!0,deep:!0}),{itemsNodes:t,store:o,hasItmes:n}}const i5=e=>{const{componentCls:t,motionDurationSlow:n,menuHorizontalHeight:o,colorSplit:r,lineWidth:l,lineType:a,menuItemPaddingInline:i}=e;return{[`${t}-horizontal`]:{lineHeight:`${o}px`,border:0,borderBottom:`${l}px ${a} ${r}`,boxShadow:\"none\",\"&::after\":{display:\"block\",clear:\"both\",height:0,content:'\"\\\\20\"'},[`${t}-item, ${t}-submenu`]:{position:\"relative\",display:\"inline-block\",verticalAlign:\"bottom\",paddingInline:i},[`> ${t}-item:hover,\n        > ${t}-item-active,\n        > ${t}-submenu ${t}-submenu-title:hover`]:{backgroundColor:\"transparent\"},[`${t}-item, ${t}-submenu-title`]:{transition:[`border-color ${n}`,`background ${n}`].join(\",\")},[`${t}-submenu-arrow`]:{display:\"none\"}}}},s5=e=>{let{componentCls:t,menuArrowOffset:n}=e;return{[`${t}-rtl`]:{direction:\"rtl\"},[`${t}-submenu-rtl`]:{transformOrigin:\"100% 0\"},[`${t}-rtl${t}-vertical,\n    ${t}-submenu-rtl ${t}-vertical`]:{[`${t}-submenu-arrow`]:{\"&::before\":{transform:`rotate(-45deg) translateY(-${n})`},\"&::after\":{transform:`rotate(45deg) translateY(${n})`}}}}},pb=e=>h({},dr(e)),mb=(e,t)=>{const{componentCls:n,colorItemText:o,colorItemTextSelected:r,colorGroupTitle:l,colorItemBg:a,colorSubItemBg:i,colorItemBgSelected:s,colorActiveBarHeight:c,colorActiveBarWidth:u,colorActiveBarBorderSize:d,motionDurationSlow:p,motionEaseInOut:m,motionEaseOut:g,menuItemPaddingInline:v,motionDurationMid:y,colorItemTextHover:b,lineType:S,colorSplit:$,colorItemTextDisabled:w,colorDangerItemText:C,colorDangerItemTextHover:_,colorDangerItemTextSelected:x,colorDangerItemBgActive:P,colorDangerItemBgSelected:O,colorItemBgHover:M,menuSubMenuBg:E,colorItemTextSelectedHorizontal:R,colorItemBgSelectedHorizontal:D}=e;return{[`${n}-${t}`]:{color:o,background:a,[`&${n}-root:focus-visible`]:h({},pb(e)),[`${n}-item-group-title`]:{color:l},[`${n}-submenu-selected`]:{[`> ${n}-submenu-title`]:{color:r}},[`${n}-item-disabled, ${n}-submenu-disabled`]:{color:`${w} !important`},[`${n}-item:hover, ${n}-submenu-title:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:b}},[`&:not(${n}-horizontal)`]:{[`${n}-item:not(${n}-item-selected)`]:{\"&:hover\":{backgroundColor:M},\"&:active\":{backgroundColor:s}},[`${n}-submenu-title`]:{\"&:hover\":{backgroundColor:M},\"&:active\":{backgroundColor:s}}},[`${n}-item-danger`]:{color:C,[`&${n}-item:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:_}},[`&${n}-item:active`]:{background:P}},[`${n}-item a`]:{\"&, &:hover\":{color:\"inherit\"}},[`${n}-item-selected`]:{color:r,[`&${n}-item-danger`]:{color:x},\"a, a:hover\":{color:\"inherit\"}},[`& ${n}-item-selected`]:{backgroundColor:s,[`&${n}-item-danger`]:{backgroundColor:O}},[`${n}-item, ${n}-submenu-title`]:{[`&:not(${n}-item-disabled):focus-visible`]:h({},pb(e))},[`&${n}-submenu > ${n}`]:{backgroundColor:E},[`&${n}-popup > ${n}`]:{backgroundColor:a},[`&${n}-horizontal`]:h(h({},t===\"dark\"?{borderBottom:0}:{}),{[`> ${n}-item, > ${n}-submenu`]:{top:d,marginTop:-d,marginBottom:0,borderRadius:0,\"&::after\":{position:\"absolute\",insetInline:v,bottom:0,borderBottom:`${c}px solid transparent`,transition:`border-color ${p} ${m}`,content:'\"\"'},\"&:hover, &-active, &-open\":{\"&::after\":{borderBottomWidth:c,borderBottomColor:R}},\"&-selected\":{color:R,backgroundColor:D,\"&::after\":{borderBottomWidth:c,borderBottomColor:R}}}}),[`&${n}-root`]:{[`&${n}-inline, &${n}-vertical`]:{borderInlineEnd:`${d}px ${S} ${$}`}},[`&${n}-inline`]:{[`${n}-sub${n}-inline`]:{background:i},[`${n}-item, ${n}-submenu-title`]:d&&u?{width:`calc(100% + ${d}px)`}:{},[`${n}-item`]:{position:\"relative\",\"&::after\":{position:\"absolute\",insetBlock:0,insetInlineEnd:0,borderInlineEnd:`${u}px solid ${r}`,transform:\"scaleY(0.0001)\",opacity:0,transition:[`transform ${y} ${g}`,`opacity ${y} ${g}`].join(\",\"),content:'\"\"'},[`&${n}-item-danger`]:{\"&::after\":{borderInlineEndColor:x}}},[`${n}-selected, ${n}-item-selected`]:{\"&::after\":{transform:\"scaleY(1)\",opacity:1,transition:[`transform ${y} ${m}`,`opacity ${y} ${m}`].join(\",\")}}}}}},vb=e=>{const{componentCls:t,menuItemHeight:n,itemMarginInline:o,padding:r,menuArrowSize:l,marginXS:a,marginXXS:i}=e,s=r+l+a;return{[`${t}-item`]:{position:\"relative\"},[`${t}-item, ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`,paddingInline:r,overflow:\"hidden\",textOverflow:\"ellipsis\",marginInline:o,marginBlock:i,width:`calc(100% - ${o*2}px)`},[`${t}-submenu`]:{paddingBottom:.02},[`> ${t}-item,\n            > ${t}-submenu > ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`},[`${t}-item-group-list ${t}-submenu-title,\n            ${t}-submenu-title`]:{paddingInlineEnd:s}}},c5=e=>{const{componentCls:t,iconCls:n,menuItemHeight:o,colorTextLightSolid:r,dropdownWidth:l,controlHeightLG:a,motionDurationMid:i,motionEaseOut:s,paddingXL:c,fontSizeSM:u,fontSizeLG:d,motionDurationSlow:p,paddingXS:m,boxShadowSecondary:g}=e,v={height:o,lineHeight:`${o}px`,listStylePosition:\"inside\",listStyleType:\"disc\"};return[{[t]:{\"&-inline, &-vertical\":h({[`&${t}-root`]:{boxShadow:\"none\"}},vb(e))},[`${t}-submenu-popup`]:{[`${t}-vertical`]:h(h({},vb(e)),{boxShadow:g})}},{[`${t}-submenu-popup ${t}-vertical${t}-sub`]:{minWidth:l,maxHeight:`calc(100vh - ${a*2.5}px)`,padding:\"0\",overflow:\"hidden\",borderInlineEnd:0,\"&:not([class*='-active'])\":{overflowX:\"hidden\",overflowY:\"auto\"}}},{[`${t}-inline`]:{width:\"100%\",[`&${t}-root`]:{[`${t}-item, ${t}-submenu-title`]:{display:\"flex\",alignItems:\"center\",transition:[`border-color ${p}`,`background ${p}`,`padding ${i} ${s}`].join(\",\"),[`> ${t}-title-content`]:{flex:\"auto\",minWidth:0,overflow:\"hidden\",textOverflow:\"ellipsis\"},\"> *\":{flex:\"none\"}}},[`${t}-sub${t}-inline`]:{padding:0,border:0,borderRadius:0,boxShadow:\"none\",[`& > ${t}-submenu > ${t}-submenu-title`]:v,[`& ${t}-item-group-title`]:{paddingInlineStart:c}},[`${t}-item`]:v}},{[`${t}-inline-collapsed`]:{width:o*2,[`&${t}-root`]:{[`${t}-item, ${t}-submenu ${t}-submenu-title`]:{[`> ${t}-inline-collapsed-noicon`]:{fontSize:d,textAlign:\"center\"}}},[`> ${t}-item,\n          > ${t}-item-group > ${t}-item-group-list > ${t}-item,\n          > ${t}-item-group > ${t}-item-group-list > ${t}-submenu > ${t}-submenu-title,\n          > ${t}-submenu > ${t}-submenu-title`]:{insetInlineStart:0,paddingInline:`calc(50% - ${u}px)`,textOverflow:\"clip\",[`\n            ${t}-submenu-arrow,\n            ${t}-submenu-expand-icon\n          `]:{opacity:0},[`${t}-item-icon, ${n}`]:{margin:0,fontSize:d,lineHeight:`${o}px`,\"+ span\":{display:\"inline-block\",opacity:0}}},[`${t}-item-icon, ${n}`]:{display:\"inline-block\"},\"&-tooltip\":{pointerEvents:\"none\",[`${t}-item-icon, ${n}`]:{display:\"none\"},\"a, a:hover\":{color:r}},[`${t}-item-group-title`]:h(h({},Gt),{paddingInline:m})}}]},gb=e=>{const{componentCls:t,fontSize:n,motionDurationSlow:o,motionDurationMid:r,motionEaseInOut:l,motionEaseOut:a,iconCls:i,controlHeightSM:s}=e;return{[`${t}-item, ${t}-submenu-title`]:{position:\"relative\",display:\"block\",margin:0,whiteSpace:\"nowrap\",cursor:\"pointer\",transition:[`border-color ${o}`,`background ${o}`,`padding ${o} ${l}`].join(\",\"),[`${t}-item-icon, ${i}`]:{minWidth:n,fontSize:n,transition:[`font-size ${r} ${a}`,`margin ${o} ${l}`,`color ${o}`].join(\",\"),\"+ span\":{marginInlineStart:s-n,opacity:1,transition:[`opacity ${o} ${l}`,`margin ${o}`,`color ${o}`].join(\",\")}},[`${t}-item-icon`]:h({},Il()),[`&${t}-item-only-child`]:{[`> ${i}, > ${t}-item-icon`]:{marginInlineEnd:0}}},[`${t}-item-disabled, ${t}-submenu-disabled`]:{background:\"none !important\",cursor:\"not-allowed\",\"&::after\":{borderColor:\"transparent !important\"},a:{color:\"inherit !important\"},[`> ${t}-submenu-title`]:{color:\"inherit !important\",cursor:\"not-allowed\"}}}},hb=e=>{const{componentCls:t,motionDurationSlow:n,motionEaseInOut:o,borderRadius:r,menuArrowSize:l,menuArrowOffset:a}=e;return{[`${t}-submenu`]:{\"&-expand-icon, &-arrow\":{position:\"absolute\",top:\"50%\",insetInlineEnd:e.margin,width:l,color:\"currentcolor\",transform:\"translateY(-50%)\",transition:`transform ${n} ${o}, opacity ${n}`},\"&-arrow\":{\"&::before, &::after\":{position:\"absolute\",width:l*.6,height:l*.15,backgroundColor:\"currentcolor\",borderRadius:r,transition:[`background ${n} ${o}`,`transform ${n} ${o}`,`top ${n} ${o}`,`color ${n} ${o}`].join(\",\"),content:'\"\"'},\"&::before\":{transform:`rotate(45deg) translateY(-${a})`},\"&::after\":{transform:`rotate(-45deg) translateY(${a})`}}}}},u5=e=>{const{antCls:t,componentCls:n,fontSize:o,motionDurationSlow:r,motionDurationMid:l,motionEaseInOut:a,lineHeight:i,paddingXS:s,padding:c,colorSplit:u,lineWidth:d,zIndexPopup:p,borderRadiusLG:m,radiusSubMenuItem:g,menuArrowSize:v,menuArrowOffset:y,lineType:b,menuPanelMaskInset:S}=e;return[{\"\":{[`${n}`]:h(h({},Mo()),{\"&-hidden\":{display:\"none\"}})},[`${n}-submenu-hidden`]:{display:\"none\"}},{[n]:h(h(h(h(h(h(h({},Ue(e)),Mo()),{marginBottom:0,paddingInlineStart:0,fontSize:o,lineHeight:0,listStyle:\"none\",outline:\"none\",transition:`width ${r} cubic-bezier(0.2, 0, 0, 1) 0s`,\"ul, ol\":{margin:0,padding:0,listStyle:\"none\"},\"&-overflow\":{display:\"flex\",[`${n}-item`]:{flex:\"none\"}},[`${n}-item, ${n}-submenu, ${n}-submenu-title`]:{borderRadius:e.radiusItem},[`${n}-item-group-title`]:{padding:`${s}px ${c}px`,fontSize:o,lineHeight:i,transition:`all ${r}`},[`&-horizontal ${n}-submenu`]:{transition:[`border-color ${r} ${a}`,`background ${r} ${a}`].join(\",\")},[`${n}-submenu, ${n}-submenu-inline`]:{transition:[`border-color ${r} ${a}`,`background ${r} ${a}`,`padding ${l} ${a}`].join(\",\")},[`${n}-submenu ${n}-sub`]:{cursor:\"initial\",transition:[`background ${r} ${a}`,`padding ${r} ${a}`].join(\",\")},[`${n}-title-content`]:{transition:`color ${r}`},[`${n}-item a`]:{\"&::before\":{position:\"absolute\",inset:0,backgroundColor:\"transparent\",content:'\"\"'}},[`${n}-item-divider`]:{overflow:\"hidden\",lineHeight:0,borderColor:u,borderStyle:b,borderWidth:0,borderTopWidth:d,marginBlock:d,padding:0,\"&-dashed\":{borderStyle:\"dashed\"}}}),gb(e)),{[`${n}-item-group`]:{[`${n}-item-group-list`]:{margin:0,padding:0,[`${n}-item, ${n}-submenu-title`]:{paddingInline:`${o*2}px ${c}px`}}},\"&-submenu\":{\"&-popup\":{position:\"absolute\",zIndex:p,background:\"transparent\",borderRadius:m,boxShadow:\"none\",transformOrigin:\"0 0\",\"&::before\":{position:\"absolute\",inset:`${S}px 0 0`,zIndex:-1,width:\"100%\",height:\"100%\",opacity:0,content:'\"\"'}},\"&-placement-rightTop::before\":{top:0,insetInlineStart:S},[`> ${n}`]:h(h(h({borderRadius:m},gb(e)),hb(e)),{[`${n}-item, ${n}-submenu > ${n}-submenu-title`]:{borderRadius:g},[`${n}-submenu-title::after`]:{transition:`transform ${r} ${a}`}})}}),hb(e)),{[`&-inline-collapsed ${n}-submenu-arrow,\n        &-inline ${n}-submenu-arrow`]:{\"&::before\":{transform:`rotate(-45deg) translateX(${y})`},\"&::after\":{transform:`rotate(45deg) translateX(-${y})`}},[`${n}-submenu-open${n}-submenu-inline > ${n}-submenu-title > ${n}-submenu-arrow`]:{transform:`translateY(-${v*.2}px)`,\"&::after\":{transform:`rotate(-45deg) translateX(-${y})`},\"&::before\":{transform:`rotate(45deg) translateX(${y})`}}})},{[`${t}-layout-header`]:{[n]:{lineHeight:\"inherit\"}}}]},d5=(e,t)=>Ge(\"Menu\",(o,r)=>{let{overrideComponentToken:l}=r;if(t?.value===!1)return[];const{colorBgElevated:a,colorPrimary:i,colorError:s,colorErrorHover:c,colorTextLightSolid:u}=o,{controlHeightLG:d,fontSize:p}=o,m=p/7*5,g=Le(o,{menuItemHeight:d,menuItemPaddingInline:o.margin,menuArrowSize:m,menuHorizontalHeight:d*1.15,menuArrowOffset:`${m*.25}px`,menuPanelMaskInset:-7,menuSubMenuBg:a}),v=new mt(u).setAlpha(.65).toRgbString(),y=Le(g,{colorItemText:v,colorItemTextHover:u,colorGroupTitle:v,colorItemTextSelected:u,colorItemBg:\"#001529\",colorSubItemBg:\"#000c17\",colorItemBgActive:\"transparent\",colorItemBgSelected:i,colorActiveBarWidth:0,colorActiveBarHeight:0,colorActiveBarBorderSize:0,colorItemTextDisabled:new mt(u).setAlpha(.25).toRgbString(),colorDangerItemText:s,colorDangerItemTextHover:c,colorDangerItemTextSelected:u,colorDangerItemBgActive:s,colorDangerItemBgSelected:s,menuSubMenuBg:\"#001529\",colorItemTextSelectedHorizontal:u,colorItemBgSelectedHorizontal:i},h({},l));return[u5(g),i5(g),c5(g),mb(g,\"light\"),mb(y,\"dark\"),s5(g),Fi(g),Go(g,\"slide-up\"),Go(g,\"slide-down\"),Ta(g,\"zoom-big\")]},o=>{const{colorPrimary:r,colorError:l,colorTextDisabled:a,colorErrorBg:i,colorText:s,colorTextDescription:c,colorBgContainer:u,colorFillAlter:d,colorFillContent:p,lineWidth:m,lineWidthBold:g,controlItemBgActive:v,colorBgTextHover:y}=o;return{dropdownWidth:160,zIndexPopup:o.zIndexPopupBase+50,radiusItem:o.borderRadiusLG,radiusSubMenuItem:o.borderRadiusSM,colorItemText:s,colorItemTextHover:s,colorItemTextHoverHorizontal:r,colorGroupTitle:c,colorItemTextSelected:r,colorItemTextSelectedHorizontal:r,colorItemBg:u,colorItemBgHover:y,colorItemBgActive:p,colorSubItemBg:d,colorItemBgSelected:v,colorItemBgSelectedHorizontal:\"transparent\",colorActiveBarWidth:0,colorActiveBarHeight:g,colorActiveBarBorderSize:m,colorItemTextDisabled:a,colorDangerItemText:l,colorDangerItemTextHover:l,colorDangerItemTextSelected:l,colorDangerItemBgActive:i,colorDangerItemBgSelected:i,itemMarginInline:o.marginXXS}})(e),f5=()=>({id:String,prefixCls:String,items:Array,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},tabindex:{type:[Number,String]},motion:Object,role:String,theme:{type:String,default:\"light\"},mode:{type:String,default:\"vertical\"},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:0},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:\"hover\"},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,\"onUpdate:openKeys\":Function,\"onUpdate:selectedKeys\":Function,\"onUpdate:activeKey\":Function}),bb=[],Ft=ne({compatConfig:{MODE:3},name:\"AMenu\",inheritAttrs:!1,props:f5(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:r}=t;const{direction:l,getPrefixCls:a}=Pe(\"menu\",e),i=L1(),s=I(()=>{var Z;return a(\"menu\",e.prefixCls||((Z=i?.prefixCls)===null||Z===void 0?void 0:Z.value))}),[c,u]=d5(s,I(()=>!i)),d=ee(new Map),p=Je(K1,J(void 0)),m=I(()=>p.value!==void 0?p.value:e.inlineCollapsed),{itemsNodes:g}=a5(e),v=ee(!1);Ne(()=>{v.value=!0}),ze(()=>{Ot(!(e.inlineCollapsed===!0&&e.mode!==\"inline\"),\"Menu\",\"`inlineCollapsed` should only be used when `mode` is inline.\"),Ot(!(p.value!==void 0&&e.inlineCollapsed===!0),\"Menu\",\"`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.\")});const y=J([]),b=J([]),S=J({});pe(d,()=>{const Z={};for(const oe of d.value.values())Z[oe.key]=oe;S.value=Z},{flush:\"post\"}),ze(()=>{if(e.activeKey!==void 0){let Z=[];const oe=e.activeKey?S.value[e.activeKey]:void 0;oe&&e.activeKey!==void 0?Z=Nd([].concat(Be(oe.parentKeys),e.activeKey)):Z=[],Vl(y.value,Z)||(y.value=Z)}}),pe(()=>e.selectedKeys,Z=>{Z&&(b.value=Z.slice())},{immediate:!0,deep:!0});const $=J([]);pe([S,b],()=>{let Z=[];b.value.forEach(oe=>{const re=S.value[oe];re&&(Z=Z.concat(Be(re.parentKeys)))}),Z=Nd(Z),Vl($.value,Z)||($.value=Z)},{immediate:!0});const w=Z=>{if(e.selectable){const{key:oe}=Z,re=b.value.includes(oe);let Y;e.multiple?re?Y=b.value.filter(ce=>ce!==oe):Y=[...b.value,oe]:Y=[oe];const Q=h(h({},Z),{selectedKeys:Y});Vl(Y,b.value)||(e.selectedKeys===void 0&&(b.value=Y),o(\"update:selectedKeys\",Y),re&&e.multiple?o(\"deselect\",Q):o(\"select\",Q))}M.value!==\"inline\"&&!e.multiple&&C.value.length&&D(bb)},C=J([]);pe(()=>e.openKeys,function(){let Z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:C.value;Vl(C.value,Z)||(C.value=Z.slice())},{immediate:!0,deep:!0});let _;const x=Z=>{clearTimeout(_),_=setTimeout(()=>{e.activeKey===void 0&&(y.value=Z),o(\"update:activeKey\",Z[Z.length-1])})},P=I(()=>!!e.disabled),O=I(()=>l.value===\"rtl\"),M=J(\"vertical\"),E=ee(!1);ze(()=>{var Z;(e.mode===\"inline\"||e.mode===\"vertical\")&&m.value?(M.value=\"vertical\",E.value=m.value):(M.value=e.mode,E.value=!1),!((Z=i?.mode)===null||Z===void 0)&&Z.value&&(M.value=i.mode.value)});const R=I(()=>M.value===\"inline\"),D=Z=>{C.value=Z,o(\"update:openKeys\",Z),o(\"openChange\",Z)},z=J(C.value),T=ee(!1);pe(C,()=>{R.value&&(z.value=C.value)},{immediate:!0}),pe(R,()=>{if(!T.value){T.value=!0;return}R.value?C.value=z.value:D(bb)},{immediate:!0});const k=I(()=>({[`${s.value}`]:!0,[`${s.value}-root`]:!0,[`${s.value}-${M.value}`]:!0,[`${s.value}-inline-collapsed`]:E.value,[`${s.value}-rtl`]:O.value,[`${s.value}-${e.theme}`]:!0})),B=I(()=>a()),L=I(()=>({horizontal:{name:`${B.value}-slide-up`},inline:zi(`${B.value}-motion-collapse`),other:{name:`${B.value}-zoom-big`}}));V1(!0);const N=function(){let Z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const oe=[],re=d.value;return Z.forEach(Y=>{const{key:Q,childrenEventKeys:ce}=re.get(Y);oe.push(Q,...N(Be(ce)))}),oe},F=Z=>{var oe;o(\"click\",Z),w(Z),(oe=i?.onClick)===null||oe===void 0||oe.call(i)},j=(Z,oe)=>{var re;const Y=((re=S.value[Z])===null||re===void 0?void 0:re.childrenEventKeys)||[];let Q=C.value.filter(ce=>ce!==Z);if(oe)Q.push(Z);else if(M.value!==\"inline\"){const ce=N(Be(Y));Q=Nd(Q.filter(ue=>!ce.includes(ue)))}Vl(C,Q)||D(Q)},H=(Z,oe)=>{d.value.set(Z,oe),d.value=new Map(d.value)},K=Z=>{d.value.delete(Z),d.value=new Map(d.value)},G=J(0),V=I(()=>{var Z;return e.expandIcon||n.expandIcon||!((Z=i?.expandIcon)===null||Z===void 0)&&Z.value?oe=>{let re=e.expandIcon||n.expandIcon;return re=typeof re==\"function\"?re(oe):re,dt(re,{class:`${s.value}-submenu-expand-icon`},!1)}:null});z1({prefixCls:s,activeKeys:y,openKeys:C,selectedKeys:b,changeActiveKeys:x,disabled:P,rtl:O,mode:M,inlineIndent:I(()=>e.inlineIndent),subMenuCloseDelay:I(()=>e.subMenuCloseDelay),subMenuOpenDelay:I(()=>e.subMenuOpenDelay),builtinPlacements:I(()=>e.builtinPlacements),triggerSubMenuAction:I(()=>e.triggerSubMenuAction),getPopupContainer:I(()=>e.getPopupContainer),inlineCollapsed:E,theme:I(()=>e.theme),siderCollapsed:p,defaultMotions:I(()=>v.value?L.value:null),motion:I(()=>v.value?e.motion:null),overflowDisabled:ee(void 0),onOpenChange:j,onItemClick:F,registerMenuInfo:H,unRegisterMenuInfo:K,selectedSubMenuKeys:$,expandIcon:V,forceSubMenuRender:I(()=>e.forceSubMenuRender),rootClassName:u});const q=()=>{var Z;return g.value||$t((Z=n.default)===null||Z===void 0?void 0:Z.call(n))};return()=>{var Z;const oe=q(),re=G.value>=oe.length-1||M.value!==\"horizontal\"||e.disabledOverflow,Y=ce=>M.value!==\"horizontal\"||e.disabledOverflow?ce:ce.map((ue,be)=>f(nu,{key:ue.key,overflowDisabled:be>G.value},{default:()=>ue})),Q=((Z=n.overflowedIndicator)===null||Z===void 0?void 0:Z.call(n))||f(Im,null,null);return c(f(ur,A(A({},r),{},{onMousedown:e.onMousedown,prefixCls:`${s.value}-overflow`,component:\"ul\",itemComponent:To,class:[k.value,r.class,u.value],role:\"menu\",id:e.id,data:Y(oe),renderRawItem:ce=>ce,renderRawRest:ce=>{const ue=ce.length,be=ue?oe.slice(-ue):null;return f(Ve,null,[f(Cl,{eventKey:bs,key:bs,title:Q,disabled:re,internalPopupClose:ue===0},{default:()=>be}),f(ub,null,{default:()=>[f(Cl,{eventKey:bs,key:bs,title:Q,disabled:re,internalPopupClose:ue===0},{default:()=>be})]})])},maxCount:M.value!==\"horizontal\"||e.disabledOverflow?ur.INVALIDATE:ur.RESPONSIVE,ssr:\"full\",\"data-menu-list\":!0,onVisibleChange:ce=>{G.value=ce}}),{default:()=>[f(_m,{to:\"body\"},{default:()=>[f(\"div\",{style:{display:\"none\"},\"aria-hidden\":!0},[f(ub,null,{default:()=>[Y(q())]})])]})]}))}}});Ft.install=function(e){return e.component(Ft.name,Ft),e.component(To.name,To),e.component(Cl.name,Cl),e.component(_i.name,_i),e.component(wi.name,wi),e};Ft.Item=To;Ft.Divider=_i;Ft.SubMenu=Cl;Ft.ItemGroup=wi;const p5=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:h(h({},Ue(e)),{color:e.breadcrumbBaseColor,fontSize:e.breadcrumbFontSize,[n]:{fontSize:e.breadcrumbIconFontSize},ol:{display:\"flex\",flexWrap:\"wrap\",margin:0,padding:0,listStyle:\"none\"},a:h({color:e.breadcrumbLinkColor,transition:`color ${e.motionDurationMid}`,padding:`0 ${e.paddingXXS}px`,borderRadius:e.borderRadiusSM,height:e.lineHeight*e.fontSize,display:\"inline-block\",marginInline:-e.marginXXS,\"&:hover\":{color:e.breadcrumbLinkColorHover,backgroundColor:e.colorBgTextHover}},fr(e)),\"li:last-child\":{color:e.breadcrumbLastItemColor,[`& > ${t}-separator`]:{display:\"none\"}},[`${t}-separator`]:{marginInline:e.breadcrumbSeparatorMargin,color:e.breadcrumbSeparatorColor},[`${t}-link`]:{[`\n          > ${n} + span,\n          > ${n} + a\n        `]:{marginInlineStart:e.marginXXS}},[`${t}-overlay-link`]:{borderRadius:e.borderRadiusSM,height:e.lineHeight*e.fontSize,display:\"inline-block\",padding:`0 ${e.paddingXXS}px`,marginInline:-e.marginXXS,[`> ${n}`]:{marginInlineStart:e.marginXXS,fontSize:e.fontSizeIcon},\"&:hover\":{color:e.breadcrumbLinkColorHover,backgroundColor:e.colorBgTextHover,a:{color:e.breadcrumbLinkColorHover}},a:{\"&:hover\":{backgroundColor:\"transparent\"}}},[`&${e.componentCls}-rtl`]:{direction:\"rtl\"}})}},m5=Ge(\"Breadcrumb\",e=>{const t=Le(e,{breadcrumbBaseColor:e.colorTextDescription,breadcrumbFontSize:e.fontSize,breadcrumbIconFontSize:e.fontSize,breadcrumbLinkColor:e.colorTextDescription,breadcrumbLinkColorHover:e.colorText,breadcrumbLastItemColor:e.colorText,breadcrumbSeparatorMargin:e.marginXS,breadcrumbSeparatorColor:e.colorTextDescription});return[p5(t)]}),v5=()=>({prefixCls:String,routes:{type:Array},params:W.any,separator:W.any,itemRender:{type:Function}});function g5(e,t){if(!e.breadcrumbName)return null;const n=Object.keys(t).join(\"|\");return e.breadcrumbName.replace(new RegExp(`:(${n})`,\"g\"),(r,l)=>t[l]||r)}function yb(e){const{route:t,params:n,routes:o,paths:r}=e,l=o.indexOf(t)===o.length-1,a=g5(t,n);return l?f(\"span\",null,[a]):f(\"a\",{href:`#/${r.join(\"/\")}`},[a])}const vl=ne({compatConfig:{MODE:3},name:\"ABreadcrumb\",inheritAttrs:!1,props:v5(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"breadcrumb\",e),[a,i]=m5(r),s=(d,p)=>(d=(d||\"\").replace(/^\\//,\"\"),Object.keys(p).forEach(m=>{d=d.replace(`:${m}`,p[m])}),d),c=(d,p,m)=>{const g=[...d],v=s(p||\"\",m);return v&&g.push(v),g},u=d=>{let{routes:p=[],params:m={},separator:g,itemRender:v=yb}=d;const y=[];return p.map(b=>{const S=s(b.path,m);S&&y.push(S);const $=[...y];let w=null;b.children&&b.children.length&&(w=f(Ft,{items:b.children.map(_=>({key:_.path||_.breadcrumbName,label:v({route:_,params:m,routes:p,paths:c($,_.path,m)})}))},null));const C={separator:g};return w&&(C.overlay=w),f(xi,A(A({},C),{},{key:S||b.breadcrumbName}),{default:()=>[v({route:b,params:m,routes:p,paths:$})]})})};return()=>{var d;let p;const{routes:m,params:g={}}=e,v=$t(Qt(n,e)),y=(d=Qt(n,e,\"separator\"))!==null&&d!==void 0?d:\"/\",b=e.itemRender||n.itemRender||yb;m&&m.length>0?p=u({routes:m,params:g,separator:y,itemRender:b}):v.length&&(p=v.map(($,w)=>(eo(typeof $.type==\"object\"&&($.type.__ANT_BREADCRUMB_ITEM||$.type.__ANT_BREADCRUMB_SEPARATOR)),Oo($,{separator:y,key:w}))));const S={[r.value]:!0,[`${r.value}-rtl`]:l.value===\"rtl\",[`${o.class}`]:!!o.class,[i.value]:!0};return a(f(\"nav\",A(A({},o),{},{class:S}),[f(\"ol\",null,[p])]))}}});var h5=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const b5=()=>({prefixCls:String}),lu=ne({compatConfig:{MODE:3},name:\"ABreadcrumbSeparator\",__ANT_BREADCRUMB_SEPARATOR:!0,inheritAttrs:!1,props:b5(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r}=Pe(\"breadcrumb\",e);return()=>{var l;const{separator:a,class:i}=o,s=h5(o,[\"separator\",\"class\"]),c=$t((l=n.default)===null||l===void 0?void 0:l.call(n));return f(\"span\",A({class:[`${r.value}-separator`,i]},s),[c.length>0?c:\"/\"])}}});vl.Item=xi;vl.Separator=lu;vl.install=function(e){return e.component(vl.name,vl),e.component(xi.name,xi),e.component(lu.name,lu),e};function Sr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var Ks={exports:{}},y5=Ks.exports,Sb;function S5(){return Sb||(Sb=1,(function(e,t){(function(n,o){e.exports=o()})(y5,function(){var n=1e3,o=6e4,r=36e5,l=\"millisecond\",a=\"second\",i=\"minute\",s=\"hour\",c=\"day\",u=\"week\",d=\"month\",p=\"quarter\",m=\"year\",g=\"date\",v=\"Invalid Date\",y=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,b=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,S={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(z){var T=[\"th\",\"st\",\"nd\",\"rd\"],k=z%100;return\"[\"+z+(T[(k-20)%10]||T[k]||T[0])+\"]\"}},$=function(z,T,k){var B=String(z);return!B||B.length>=T?z:\"\"+Array(T+1-B.length).join(k)+z},w={s:$,z:function(z){var T=-z.utcOffset(),k=Math.abs(T),B=Math.floor(k/60),L=k%60;return(T<=0?\"+\":\"-\")+$(B,2,\"0\")+\":\"+$(L,2,\"0\")},m:function z(T,k){if(T.date()<k.date())return-z(k,T);var B=12*(k.year()-T.year())+(k.month()-T.month()),L=T.clone().add(B,d),N=k-L<0,F=T.clone().add(B+(N?-1:1),d);return+(-(B+(k-L)/(N?L-F:F-L))||0)},a:function(z){return z<0?Math.ceil(z)||0:Math.floor(z)},p:function(z){return{M:d,y:m,w:u,d:c,D:g,h:s,m:i,s:a,ms:l,Q:p}[z]||String(z||\"\").toLowerCase().replace(/s$/,\"\")},u:function(z){return z===void 0}},C=\"en\",_={};_[C]=S;var x=\"$isDayjsObject\",P=function(z){return z instanceof R||!(!z||!z[x])},O=function z(T,k,B){var L;if(!T)return C;if(typeof T==\"string\"){var N=T.toLowerCase();_[N]&&(L=N),k&&(_[N]=k,L=N);var F=T.split(\"-\");if(!L&&F.length>1)return z(F[0])}else{var j=T.name;_[j]=T,L=j}return!B&&L&&(C=L),L||!B&&C},M=function(z,T){if(P(z))return z.clone();var k=typeof T==\"object\"?T:{};return k.date=z,k.args=arguments,new R(k)},E=w;E.l=O,E.i=P,E.w=function(z,T){return M(z,{locale:T.$L,utc:T.$u,x:T.$x,$offset:T.$offset})};var R=(function(){function z(k){this.$L=O(k.locale,null,!0),this.parse(k),this.$x=this.$x||k.x||{},this[x]=!0}var T=z.prototype;return T.parse=function(k){this.$d=(function(B){var L=B.date,N=B.utc;if(L===null)return new Date(NaN);if(E.u(L))return new Date;if(L instanceof Date)return new Date(L);if(typeof L==\"string\"&&!/Z$/i.test(L)){var F=L.match(y);if(F){var j=F[2]-1||0,H=(F[7]||\"0\").substring(0,3);return N?new Date(Date.UTC(F[1],j,F[3]||1,F[4]||0,F[5]||0,F[6]||0,H)):new Date(F[1],j,F[3]||1,F[4]||0,F[5]||0,F[6]||0,H)}}return new Date(L)})(k),this.init()},T.init=function(){var k=this.$d;this.$y=k.getFullYear(),this.$M=k.getMonth(),this.$D=k.getDate(),this.$W=k.getDay(),this.$H=k.getHours(),this.$m=k.getMinutes(),this.$s=k.getSeconds(),this.$ms=k.getMilliseconds()},T.$utils=function(){return E},T.isValid=function(){return this.$d.toString()!==v},T.isSame=function(k,B){var L=M(k);return this.startOf(B)<=L&&L<=this.endOf(B)},T.isAfter=function(k,B){return M(k)<this.startOf(B)},T.isBefore=function(k,B){return this.endOf(B)<M(k)},T.$g=function(k,B,L){return E.u(k)?this[B]:this.set(L,k)},T.unix=function(){return Math.floor(this.valueOf()/1e3)},T.valueOf=function(){return this.$d.getTime()},T.startOf=function(k,B){var L=this,N=!!E.u(B)||B,F=E.p(k),j=function(re,Y){var Q=E.w(L.$u?Date.UTC(L.$y,Y,re):new Date(L.$y,Y,re),L);return N?Q:Q.endOf(c)},H=function(re,Y){return E.w(L.toDate()[re].apply(L.toDate(\"s\"),(N?[0,0,0,0]:[23,59,59,999]).slice(Y)),L)},K=this.$W,G=this.$M,V=this.$D,q=\"set\"+(this.$u?\"UTC\":\"\");switch(F){case m:return N?j(1,0):j(31,11);case d:return N?j(1,G):j(0,G+1);case u:var Z=this.$locale().weekStart||0,oe=(K<Z?K+7:K)-Z;return j(N?V-oe:V+(6-oe),G);case c:case g:return H(q+\"Hours\",0);case s:return H(q+\"Minutes\",1);case i:return H(q+\"Seconds\",2);case a:return H(q+\"Milliseconds\",3);default:return this.clone()}},T.endOf=function(k){return this.startOf(k,!1)},T.$set=function(k,B){var L,N=E.p(k),F=\"set\"+(this.$u?\"UTC\":\"\"),j=(L={},L[c]=F+\"Date\",L[g]=F+\"Date\",L[d]=F+\"Month\",L[m]=F+\"FullYear\",L[s]=F+\"Hours\",L[i]=F+\"Minutes\",L[a]=F+\"Seconds\",L[l]=F+\"Milliseconds\",L)[N],H=N===c?this.$D+(B-this.$W):B;if(N===d||N===m){var K=this.clone().set(g,1);K.$d[j](H),K.init(),this.$d=K.set(g,Math.min(this.$D,K.daysInMonth())).$d}else j&&this.$d[j](H);return this.init(),this},T.set=function(k,B){return this.clone().$set(k,B)},T.get=function(k){return this[E.p(k)]()},T.add=function(k,B){var L,N=this;k=Number(k);var F=E.p(B),j=function(G){var V=M(N);return E.w(V.date(V.date()+Math.round(G*k)),N)};if(F===d)return this.set(d,this.$M+k);if(F===m)return this.set(m,this.$y+k);if(F===c)return j(1);if(F===u)return j(7);var H=(L={},L[i]=o,L[s]=r,L[a]=n,L)[F]||1,K=this.$d.getTime()+k*H;return E.w(K,this)},T.subtract=function(k,B){return this.add(-1*k,B)},T.format=function(k){var B=this,L=this.$locale();if(!this.isValid())return L.invalidDate||v;var N=k||\"YYYY-MM-DDTHH:mm:ssZ\",F=E.z(this),j=this.$H,H=this.$m,K=this.$M,G=L.weekdays,V=L.months,q=L.meridiem,Z=function(Y,Q,ce,ue){return Y&&(Y[Q]||Y(B,N))||ce[Q].slice(0,ue)},oe=function(Y){return E.s(j%12||12,Y,\"0\")},re=q||function(Y,Q,ce){var ue=Y<12?\"AM\":\"PM\";return ce?ue.toLowerCase():ue};return N.replace(b,function(Y,Q){return Q||(function(ce){switch(ce){case\"YY\":return String(B.$y).slice(-2);case\"YYYY\":return E.s(B.$y,4,\"0\");case\"M\":return K+1;case\"MM\":return E.s(K+1,2,\"0\");case\"MMM\":return Z(L.monthsShort,K,V,3);case\"MMMM\":return Z(V,K);case\"D\":return B.$D;case\"DD\":return E.s(B.$D,2,\"0\");case\"d\":return String(B.$W);case\"dd\":return Z(L.weekdaysMin,B.$W,G,2);case\"ddd\":return Z(L.weekdaysShort,B.$W,G,3);case\"dddd\":return G[B.$W];case\"H\":return String(j);case\"HH\":return E.s(j,2,\"0\");case\"h\":return oe(1);case\"hh\":return oe(2);case\"a\":return re(j,H,!0);case\"A\":return re(j,H,!1);case\"m\":return String(H);case\"mm\":return E.s(H,2,\"0\");case\"s\":return String(B.$s);case\"ss\":return E.s(B.$s,2,\"0\");case\"SSS\":return E.s(B.$ms,3,\"0\");case\"Z\":return F}return null})(Y)||F.replace(\":\",\"\")})},T.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},T.diff=function(k,B,L){var N,F=this,j=E.p(B),H=M(k),K=(H.utcOffset()-this.utcOffset())*o,G=this-H,V=function(){return E.m(F,H)};switch(j){case m:N=V()/12;break;case d:N=V();break;case p:N=V()/3;break;case u:N=(G-K)/6048e5;break;case c:N=(G-K)/864e5;break;case s:N=G/r;break;case i:N=G/o;break;case a:N=G/n;break;default:N=G}return L?N:E.a(N)},T.daysInMonth=function(){return this.endOf(d).$D},T.$locale=function(){return _[this.$L]},T.locale=function(k,B){if(!k)return this.$L;var L=this.clone(),N=O(k,B,!0);return N&&(L.$L=N),L},T.clone=function(){return E.w(this.$d,this)},T.toDate=function(){return new Date(this.valueOf())},T.toJSON=function(){return this.isValid()?this.toISOString():null},T.toISOString=function(){return this.$d.toISOString()},T.toString=function(){return this.$d.toUTCString()},z})(),D=R.prototype;return M.prototype=D,[[\"$ms\",l],[\"$s\",a],[\"$m\",i],[\"$H\",s],[\"$W\",c],[\"$M\",d],[\"$y\",m],[\"$D\",g]].forEach(function(z){D[z[1]]=function(T){return this.$g(T,z[0],z[1])}}),M.extend=function(z,T){return z.$i||(z(T,R,M),z.$i=!0),M},M.locale=O,M.isDayjs=P,M.unix=function(z){return M(1e3*z)},M.en=_[C],M.Ls=_,M.p={},M})})(Ks)),Ks.exports}var $5=S5();const an=Sr($5);var Gs={exports:{}},C5=Gs.exports,$b;function x5(){return $b||($b=1,(function(e,t){(function(n,o){e.exports=o()})(C5,function(){return function(n,o){o.prototype.weekday=function(r){var l=this.$locale().weekStart||0,a=this.$W,i=(a<l?a+7:a)-l;return this.$utils().u(r)?i:this.subtract(i,\"day\").add(r,\"day\")}}})})(Gs)),Gs.exports}var w5=x5();const _5=Sr(w5);var Xs={exports:{}},I5=Xs.exports,Cb;function P5(){return Cb||(Cb=1,(function(e,t){(function(n,o){e.exports=o()})(I5,function(){return function(n,o,r){var l=o.prototype,a=function(d){return d&&(d.indexOf?d:d.s)},i=function(d,p,m,g,v){var y=d.name?d:d.$locale(),b=a(y[p]),S=a(y[m]),$=b||S.map(function(C){return C.slice(0,g)});if(!v)return $;var w=y.weekStart;return $.map(function(C,_){return $[(_+(w||0))%7]})},s=function(){return r.Ls[r.locale()]},c=function(d,p){return d.formats[p]||(function(m){return m.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(g,v,y){return v||y.slice(1)})})(d.formats[p.toUpperCase()])},u=function(){var d=this;return{months:function(p){return p?p.format(\"MMMM\"):i(d,\"months\")},monthsShort:function(p){return p?p.format(\"MMM\"):i(d,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(p){return p?p.format(\"dddd\"):i(d,\"weekdays\")},weekdaysMin:function(p){return p?p.format(\"dd\"):i(d,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(p){return p?p.format(\"ddd\"):i(d,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(p){return c(d.$locale(),p)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};l.localeData=function(){return u.bind(this)()},r.localeData=function(){var d=s();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return r.weekdays()},weekdaysShort:function(){return r.weekdaysShort()},weekdaysMin:function(){return r.weekdaysMin()},months:function(){return r.months()},monthsShort:function(){return r.monthsShort()},longDateFormat:function(p){return c(d,p)},meridiem:d.meridiem,ordinal:d.ordinal}},r.months=function(){return i(s(),\"months\")},r.monthsShort=function(){return i(s(),\"monthsShort\",\"months\",3)},r.weekdays=function(d){return i(s(),\"weekdays\",null,null,d)},r.weekdaysShort=function(d){return i(s(),\"weekdaysShort\",\"weekdays\",3,d)},r.weekdaysMin=function(d){return i(s(),\"weekdaysMin\",\"weekdays\",2,d)}}})})(Xs)),Xs.exports}var T5=P5();const O5=Sr(T5);var Us={exports:{}},E5=Us.exports,xb;function M5(){return xb||(xb=1,(function(e,t){(function(n,o){e.exports=o()})(E5,function(){var n=\"week\",o=\"year\";return function(r,l,a){var i=l.prototype;i.week=function(s){if(s===void 0&&(s=null),s!==null)return this.add(7*(s-this.week()),\"day\");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var u=a(this).startOf(o).add(1,o).date(c),d=a(this).endOf(n);if(u.isBefore(d))return 1}var p=a(this).startOf(o).date(c).startOf(n).subtract(1,\"millisecond\"),m=this.diff(p,n,!0);return m<0?a(this).startOf(\"week\").week():Math.ceil(m)},i.weeks=function(s){return s===void 0&&(s=null),this.week(s)}}})})(Us)),Us.exports}var A5=M5();const D5=Sr(A5);var Ys={exports:{}},R5=Ys.exports,wb;function k5(){return wb||(wb=1,(function(e,t){(function(n,o){e.exports=o()})(R5,function(){return function(n,o){o.prototype.weekYear=function(){var r=this.month(),l=this.week(),a=this.year();return l===1&&r===11?a+1:r===0&&l>=52?a-1:a}}})})(Ys)),Ys.exports}var N5=k5();const B5=Sr(N5);var qs={exports:{}},L5=qs.exports,_b;function F5(){return _b||(_b=1,(function(e,t){(function(n,o){e.exports=o()})(L5,function(){var n=\"month\",o=\"quarter\";return function(r,l){var a=l.prototype;a.quarter=function(c){return this.$utils().u(c)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(c-1))};var i=a.add;a.add=function(c,u){return c=Number(c),this.$utils().p(u)===o?this.add(3*c,n):i.bind(this)(c,u)};var s=a.startOf;a.startOf=function(c,u){var d=this.$utils(),p=!!d.u(u)||u;if(d.p(c)===o){var m=this.quarter()-1;return p?this.month(3*m).startOf(n).startOf(\"day\"):this.month(3*m+2).endOf(n).endOf(\"day\")}return s.bind(this)(c,u)}}})})(qs)),qs.exports}var z5=F5();const H5=Sr(z5);var Zs={exports:{}},j5=Zs.exports,Ib;function W5(){return Ib||(Ib=1,(function(e,t){(function(n,o){e.exports=o()})(j5,function(){return function(n,o){var r=o.prototype,l=r.format;r.format=function(a){var i=this,s=this.$locale();if(!this.isValid())return l.bind(this)(a);var c=this.$utils(),u=(a||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(d){switch(d){case\"Q\":return Math.ceil((i.$M+1)/3);case\"Do\":return s.ordinal(i.$D);case\"gggg\":return i.weekYear();case\"GGGG\":return i.isoWeekYear();case\"wo\":return s.ordinal(i.week(),\"W\");case\"w\":case\"ww\":return c.s(i.week(),d===\"w\"?1:2,\"0\");case\"W\":case\"WW\":return c.s(i.isoWeek(),d===\"W\"?1:2,\"0\");case\"k\":case\"kk\":return c.s(String(i.$H===0?24:i.$H),d===\"k\"?1:2,\"0\");case\"X\":return Math.floor(i.$d.getTime()/1e3);case\"x\":return i.$d.getTime();case\"z\":return\"[\"+i.offsetName()+\"]\";case\"zzz\":return\"[\"+i.offsetName(\"long\")+\"]\";default:return d}});return l.bind(this)(u)}}})})(Zs)),Zs.exports}var V5=W5();const K5=Sr(V5);var Qs={exports:{}},G5=Qs.exports,Pb;function X5(){return Pb||(Pb=1,(function(e,t){(function(n,o){e.exports=o()})(G5,function(){var n={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},o=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\\d/,l=/\\d\\d/,a=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,s={},c=function(y){return(y=+y)+(y>68?1900:2e3)},u=function(y){return function(b){this[y]=+b}},d=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(y){(this.zone||(this.zone={})).offset=(function(b){if(!b||b===\"Z\")return 0;var S=b.match(/([+-]|\\d\\d)/g),$=60*S[1]+(+S[2]||0);return $===0?0:S[0]===\"+\"?-$:$})(y)}],p=function(y){var b=s[y];return b&&(b.indexOf?b:b.s.concat(b.f))},m=function(y,b){var S,$=s.meridiem;if($){for(var w=1;w<=24;w+=1)if(y.indexOf($(w,0,b))>-1){S=w>12;break}}else S=y===(b?\"pm\":\"PM\");return S},g={A:[i,function(y){this.afternoon=m(y,!1)}],a:[i,function(y){this.afternoon=m(y,!0)}],Q:[r,function(y){this.month=3*(y-1)+1}],S:[r,function(y){this.milliseconds=100*+y}],SS:[l,function(y){this.milliseconds=10*+y}],SSS:[/\\d{3}/,function(y){this.milliseconds=+y}],s:[a,u(\"seconds\")],ss:[a,u(\"seconds\")],m:[a,u(\"minutes\")],mm:[a,u(\"minutes\")],H:[a,u(\"hours\")],h:[a,u(\"hours\")],HH:[a,u(\"hours\")],hh:[a,u(\"hours\")],D:[a,u(\"day\")],DD:[l,u(\"day\")],Do:[i,function(y){var b=s.ordinal,S=y.match(/\\d+/);if(this.day=S[0],b)for(var $=1;$<=31;$+=1)b($).replace(/\\[|\\]/g,\"\")===y&&(this.day=$)}],w:[a,u(\"week\")],ww:[l,u(\"week\")],M:[a,u(\"month\")],MM:[l,u(\"month\")],MMM:[i,function(y){var b=p(\"months\"),S=(p(\"monthsShort\")||b.map(function($){return $.slice(0,3)})).indexOf(y)+1;if(S<1)throw new Error;this.month=S%12||S}],MMMM:[i,function(y){var b=p(\"months\").indexOf(y)+1;if(b<1)throw new Error;this.month=b%12||b}],Y:[/[+-]?\\d+/,u(\"year\")],YY:[l,function(y){this.year=c(y)}],YYYY:[/\\d{4}/,u(\"year\")],Z:d,ZZ:d};function v(y){var b,S;b=y,S=s&&s.formats;for(var $=(y=b.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(M,E,R){var D=R&&R.toUpperCase();return E||S[R]||n[R]||S[D].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(z,T,k){return T||k.slice(1)})})).match(o),w=$.length,C=0;C<w;C+=1){var _=$[C],x=g[_],P=x&&x[0],O=x&&x[1];$[C]=O?{regex:P,parser:O}:_.replace(/^\\[|\\]$/g,\"\")}return function(M){for(var E={},R=0,D=0;R<w;R+=1){var z=$[R];if(typeof z==\"string\")D+=z.length;else{var T=z.regex,k=z.parser,B=M.slice(D),L=T.exec(B)[0];k.call(E,L),M=M.replace(L,\"\")}}return(function(N){var F=N.afternoon;if(F!==void 0){var j=N.hours;F?j<12&&(N.hours+=12):j===12&&(N.hours=0),delete N.afternoon}})(E),E}}return function(y,b,S){S.p.customParseFormat=!0,y&&y.parseTwoDigitYear&&(c=y.parseTwoDigitYear);var $=b.prototype,w=$.parse;$.parse=function(C){var _=C.date,x=C.utc,P=C.args;this.$u=x;var O=P[1];if(typeof O==\"string\"){var M=P[2]===!0,E=P[3]===!0,R=M||E,D=P[2];E&&(D=P[2]),s=this.$locale(),!M&&D&&(s=S.Ls[D]),this.$d=(function(B,L,N,F){try{if([\"x\",\"X\"].indexOf(L)>-1)return new Date((L===\"X\"?1e3:1)*B);var j=v(L)(B),H=j.year,K=j.month,G=j.day,V=j.hours,q=j.minutes,Z=j.seconds,oe=j.milliseconds,re=j.zone,Y=j.week,Q=new Date,ce=G||(H||K?1:Q.getDate()),ue=H||Q.getFullYear(),be=0;H&&!K||(be=K>0?K-1:Q.getMonth());var Ce,ge=V||0,Se=q||0,X=Z||0,U=oe||0;return re?new Date(Date.UTC(ue,be,ce,ge,Se,X,U+60*re.offset*1e3)):N?new Date(Date.UTC(ue,be,ce,ge,Se,X,U)):(Ce=new Date(ue,be,ce,ge,Se,X,U),Y&&(Ce=F(Ce).week(Y).toDate()),Ce)}catch{return new Date(\"\")}})(_,O,x,S),this.init(),D&&D!==!0&&(this.$L=this.locale(D).$L),R&&_!=this.format(O)&&(this.$d=new Date(\"\")),s={}}else if(O instanceof Array)for(var z=O.length,T=1;T<=z;T+=1){P[1]=O[T-1];var k=S.apply(this,P);if(k.isValid()){this.$d=k.$d,this.$L=k.$L,this.init();break}T===z&&(this.$d=new Date(\"\"))}else w.call(this,C)}}})})(Qs)),Qs.exports}var U5=X5();const Y5=Sr(U5);an.extend(Y5);an.extend(K5);an.extend(_5);an.extend(O5);an.extend(D5);an.extend(B5);an.extend(H5);an.extend((e,t)=>{const n=t.prototype,o=n.format;n.format=function(l){const a=(l||\"\").replace(\"Wo\",\"wo\");return o.bind(this)(a)}});const q5={bn_BD:\"bn-bd\",by_BY:\"be\",en_GB:\"en-gb\",en_US:\"en\",fr_BE:\"fr\",fr_CA:\"fr-ca\",hy_AM:\"hy-am\",kmr_IQ:\"ku\",nl_BE:\"nl-be\",pt_BR:\"pt-br\",zh_CN:\"zh-cn\",zh_HK:\"zh-hk\",zh_TW:\"zh-tw\"},Qr=e=>q5[e]||e.split(\"_\")[0],Tb=()=>{SE(!1,\"Not match any format. Please help to fire a issue about this.\")},Z5=/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|k{1,2}|S/g;function Ob(e,t,n){const o=[...new Set(e.split(n))];let r=0;for(let l=0;l<o.length;l++){const a=o[l];if(r+=a.length,r>t)return a;r+=n.length}}const Eb=(e,t)=>{if(!e)return null;if(an.isDayjs(e))return e;const n=t.matchAll(Z5);let o=an(e,t);if(n===null)return o;for(const r of n){const l=r[0],a=r.index;if(l===\"Q\"){const i=e.slice(a-1,a),s=Ob(e,a,i).match(/\\d+/)[0];o=o.quarter(parseInt(s))}if(l.toLowerCase()===\"wo\"){const i=e.slice(a-1,a),s=Ob(e,a,i).match(/\\d+/)[0];o=o.week(parseInt(s))}l.toLowerCase()===\"ww\"&&(o=o.week(parseInt(e.slice(a,a+l.length)))),l.toLowerCase()===\"w\"&&(o=o.week(parseInt(e.slice(a,a+l.length+1))))}return o},Wv={getNow:()=>an(),getFixedDate:e=>an(e,[\"YYYY-M-DD\",\"YYYY-MM-DD\"]),getEndDate:e=>e.endOf(\"month\"),getWeekDay:e=>{const t=e.locale(\"en\");return t.weekday()+t.localeData().firstDayOfWeek()},getYear:e=>e.year(),getMonth:e=>e.month(),getDate:e=>e.date(),getHour:e=>e.hour(),getMinute:e=>e.minute(),getSecond:e=>e.second(),addYear:(e,t)=>e.add(t,\"year\"),addMonth:(e,t)=>e.add(t,\"month\"),addDate:(e,t)=>e.add(t,\"day\"),setYear:(e,t)=>e.year(t),setMonth:(e,t)=>e.month(t),setDate:(e,t)=>e.date(t),setHour:(e,t)=>e.hour(t),setMinute:(e,t)=>e.minute(t),setSecond:(e,t)=>e.second(t),isAfter:(e,t)=>e.isAfter(t),isValidate:e=>e.isValid(),locale:{getWeekFirstDay:e=>an().locale(Qr(e)).localeData().firstDayOfWeek(),getWeekFirstDate:(e,t)=>t.locale(Qr(e)).weekday(0),getWeek:(e,t)=>t.locale(Qr(e)).week(),getShortWeekDays:e=>an().locale(Qr(e)).localeData().weekdaysMin(),getShortMonths:e=>an().locale(Qr(e)).localeData().monthsShort(),format:(e,t,n)=>t.locale(Qr(e)).format(n),parse:(e,t,n)=>{const o=Qr(e);for(let r=0;r<n.length;r+=1){const l=n[r],a=t;if(l.includes(\"wo\")||l.includes(\"Wo\")){const s=a.split(\"-\")[0],c=a.split(\"-\")[1],u=an(s,\"YYYY\").startOf(\"year\").locale(o);for(let d=0;d<=52;d+=1){const p=u.add(d,\"week\");if(p.format(\"Wo\")===c)return p}return Tb(),null}const i=an(a,l,!0).locale(o);if(i.isValid())return i}return t||Tb(),null}},toDate:(e,t)=>Array.isArray(e)?e.map(n=>Eb(n,t)):Eb(e,t),toString:(e,t)=>Array.isArray(e)?e.map(n=>an.isDayjs(n)?n.format(t):n):an.isDayjs(e)?e.format(t):e};function Xt(e){const t=OI();return h(h({},e),t)}const Z1=Symbol(\"PanelContextProps\"),Vv=e=>{Qe(Z1,e)},Uo=()=>Je(Z1,{}),ys={visibility:\"hidden\"};function Ur(e,t){let{slots:n}=t;var o;const r=Xt(e),{prefixCls:l,prevIcon:a=\"‹\",nextIcon:i=\"›\",superPrevIcon:s=\"«\",superNextIcon:c=\"»\",onSuperPrev:u,onSuperNext:d,onPrev:p,onNext:m}=r,{hideNextBtn:g,hidePrevBtn:v}=Uo();return f(\"div\",{class:l},[u&&f(\"button\",{type:\"button\",onClick:u,tabindex:-1,class:`${l}-super-prev-btn`,style:v.value?ys:{}},[s]),p&&f(\"button\",{type:\"button\",onClick:p,tabindex:-1,class:`${l}-prev-btn`,style:v.value?ys:{}},[a]),f(\"div\",{class:`${l}-view`},[(o=n.default)===null||o===void 0?void 0:o.call(n)]),m&&f(\"button\",{type:\"button\",onClick:m,tabindex:-1,class:`${l}-next-btn`,style:g.value?ys:{}},[i]),d&&f(\"button\",{type:\"button\",onClick:d,tabindex:-1,class:`${l}-super-next-btn`,style:g.value?ys:{}},[c])])}Ur.displayName=\"Header\";Ur.inheritAttrs=!1;function Kv(e){const t=Xt(e),{prefixCls:n,generateConfig:o,viewDate:r,onPrevDecades:l,onNextDecades:a}=t,{hideHeader:i}=Uo();if(i)return null;const s=`${n}-header`,c=o.getYear(r),u=Math.floor(c/ir)*ir,d=u+ir-1;return f(Ur,A(A({},t),{},{prefixCls:s,onSuperPrev:l,onSuperNext:a}),{default:()=>[u,wt(\"-\"),d]})}Kv.displayName=\"DecadeHeader\";Kv.inheritAttrs=!1;function Q1(e,t,n,o,r){let l=e.setHour(t,n);return l=e.setMinute(l,o),l=e.setSecond(l,r),l}function Js(e,t,n){if(!n)return t;let o=t;return o=e.setHour(o,e.getHour(n)),o=e.setMinute(o,e.getMinute(n)),o=e.setSecond(o,e.getSecond(n)),o}function Q5(e,t,n,o,r,l){const a=Math.floor(e/o)*o;if(a<e)return[a,60-r,60-l];const i=Math.floor(t/r)*r;if(i<t)return[a,i,60-l];const s=Math.floor(n/l)*l;return[a,i,s]}function J5(e,t){const n=e.getYear(t),o=e.getMonth(t)+1,r=e.getEndDate(e.getFixedDate(`${n}-${o}-01`)),l=e.getDate(r),a=o<10?`0${o}`:`${o}`;return`${n}-${a}-${l}`}function El(e){const{prefixCls:t,disabledDate:n,onSelect:o,picker:r,rowNum:l,colNum:a,prefixColumn:i,rowClassName:s,baseDate:c,getCellClassName:u,getCellText:d,getCellNode:p,getCellDate:m,generateConfig:g,titleCell:v,headerCells:y}=Xt(e),{onDateMouseenter:b,onDateMouseleave:S,mode:$}=Uo(),w=`${t}-cell`,C=[];for(let _=0;_<l;_+=1){const x=[];let P;for(let O=0;O<a;O+=1){const M=_*a+O,E=m(c,M),R=Ap({cellDate:E,mode:$.value,disabledDate:n,generateConfig:g});O===0&&(P=E,i&&x.push(i(P)));const D=v&&v(E);x.push(f(\"td\",{key:O,title:D,class:le(w,h({[`${w}-disabled`]:R,[`${w}-start`]:d(E)===1||r===\"year\"&&Number(D)%10===0,[`${w}-end`]:D===J5(g,E)||r===\"year\"&&Number(D)%10===9},u(E))),onClick:z=>{z.stopPropagation(),R||o(E)},onMouseenter:()=>{!R&&b&&b(E)},onMouseleave:()=>{!R&&S&&S(E)}},[p?p(E):f(\"div\",{class:`${w}-inner`},[d(E)])]))}C.push(f(\"tr\",{key:_,class:s&&s(P)},[x]))}return f(\"div\",{class:`${t}-body`},[f(\"table\",{class:`${t}-content`},[y&&f(\"thead\",null,[f(\"tr\",null,[y])]),f(\"tbody\",null,[C])])])}El.displayName=\"PanelBody\";El.inheritAttrs=!1;const Op=3,Mb=4;function Gv(e){const t=Xt(e),n=wo-1,{prefixCls:o,viewDate:r,generateConfig:l}=t,a=`${o}-cell`,i=l.getYear(r),s=Math.floor(i/wo)*wo,c=Math.floor(i/ir)*ir,u=c+ir-1,d=l.setYear(r,c-Math.ceil((Op*Mb*wo-ir)/2)),p=m=>{const g=l.getYear(m),v=g+n;return{[`${a}-in-view`]:c<=g&&v<=u,[`${a}-selected`]:g===s}};return f(El,A(A({},t),{},{rowNum:Mb,colNum:Op,baseDate:d,getCellText:m=>{const g=l.getYear(m);return`${g}-${g+n}`},getCellClassName:p,getCellDate:(m,g)=>l.addYear(m,g*wo)}),null)}Gv.displayName=\"DecadeBody\";Gv.inheritAttrs=!1;const Ss=new Map;function ek(e,t){let n;function o(){Vu(e)?t():n=qe(()=>{o()})}return o(),()=>{qe.cancel(n)}}function Ep(e,t,n){if(Ss.get(e)&&qe.cancel(Ss.get(e)),n<=0){Ss.set(e,qe(()=>{e.scrollTop=t}));return}const r=(t-e.scrollTop)/n*10;Ss.set(e,qe(()=>{e.scrollTop+=r,e.scrollTop!==t&&Ep(e,t,n-10)}))}function Ma(e,t){let{onLeftRight:n,onCtrlLeftRight:o,onUpDown:r,onPageUpDown:l,onEnter:a}=t;const{which:i,ctrlKey:s,metaKey:c}=e;switch(i){case we.LEFT:if(s||c){if(o)return o(-1),!0}else if(n)return n(-1),!0;break;case we.RIGHT:if(s||c){if(o)return o(1),!0}else if(n)return n(1),!0;break;case we.UP:if(r)return r(-1),!0;break;case we.DOWN:if(r)return r(1),!0;break;case we.PAGE_UP:if(l)return l(-1),!0;break;case we.PAGE_DOWN:if(l)return l(1),!0;break;case we.ENTER:if(a)return a(),!0;break}return!1}function J1(e,t,n,o){let r=e;if(!r)switch(t){case\"time\":r=o?\"hh:mm:ss a\":\"HH:mm:ss\";break;case\"week\":r=\"gggg-wo\";break;case\"month\":r=\"YYYY-MM\";break;case\"quarter\":r=\"YYYY-[Q]Q\";break;case\"year\":r=\"YYYY\";break;default:r=n?\"YYYY-MM-DD HH:mm:ss\":\"YYYY-MM-DD\"}return r}function ex(e,t,n){const o=e===\"time\"?8:10,r=typeof t==\"function\"?t(n.getNow()).length:t.length;return Math.max(o,r)+2}let Wa=null;const $s=new Set;function tk(e){return!Wa&&typeof window<\"u\"&&window.addEventListener&&(Wa=t=>{[...$s].forEach(n=>{n(t)})},window.addEventListener(\"mousedown\",Wa)),$s.add(e),()=>{$s.delete(e),$s.size===0&&(window.removeEventListener(\"mousedown\",Wa),Wa=null)}}function nk(e){var t;const n=e.target;return e.composed&&n.shadowRoot&&((t=e.composedPath)===null||t===void 0?void 0:t.call(e)[0])||n}const ok=e=>e===\"month\"||e===\"date\"?\"year\":e,rk=e=>e===\"date\"?\"month\":e,lk=e=>e===\"month\"||e===\"date\"?\"quarter\":e,ak=e=>e===\"date\"?\"week\":e,ik={year:ok,month:rk,quarter:lk,week:ak,time:null,date:null};function tx(e,t){return e.some(n=>n&&n.contains(t))}const wo=10,ir=wo*10;function Xv(e){const t=Xt(e),{prefixCls:n,onViewDateChange:o,generateConfig:r,viewDate:l,operationRef:a,onSelect:i,onPanelChange:s}=t,c=`${n}-decade-panel`;a.value={onKeydown:p=>Ma(p,{onLeftRight:m=>{i(r.addYear(l,m*wo),\"key\")},onCtrlLeftRight:m=>{i(r.addYear(l,m*ir),\"key\")},onUpDown:m=>{i(r.addYear(l,m*wo*Op),\"key\")},onEnter:()=>{s(\"year\",l)}})};const u=p=>{const m=r.addYear(l,p*ir);o(m),s(null,m)},d=p=>{i(p,\"mouse\"),s(\"year\",p)};return f(\"div\",{class:c},[f(Kv,A(A({},t),{},{prefixCls:n,onPrevDecades:()=>{u(-1)},onNextDecades:()=>{u(1)}}),null),f(Gv,A(A({},t),{},{prefixCls:n,onSelect:d}),null)])}Xv.displayName=\"DecadePanel\";Xv.inheritAttrs=!1;const ec=7;function Ml(e,t){if(!e&&!t)return!0;if(!e||!t)return!1}function sk(e,t,n){const o=Ml(t,n);if(typeof o==\"boolean\")return o;const r=Math.floor(e.getYear(t)/10),l=Math.floor(e.getYear(n)/10);return r===l}function nd(e,t,n){const o=Ml(t,n);return typeof o==\"boolean\"?o:e.getYear(t)===e.getYear(n)}function Mp(e,t){return Math.floor(e.getMonth(t)/3)+1}function nx(e,t,n){const o=Ml(t,n);return typeof o==\"boolean\"?o:nd(e,t,n)&&Mp(e,t)===Mp(e,n)}function Uv(e,t,n){const o=Ml(t,n);return typeof o==\"boolean\"?o:nd(e,t,n)&&e.getMonth(t)===e.getMonth(n)}function sr(e,t,n){const o=Ml(t,n);return typeof o==\"boolean\"?o:e.getYear(t)===e.getYear(n)&&e.getMonth(t)===e.getMonth(n)&&e.getDate(t)===e.getDate(n)}function ck(e,t,n){const o=Ml(t,n);return typeof o==\"boolean\"?o:e.getHour(t)===e.getHour(n)&&e.getMinute(t)===e.getMinute(n)&&e.getSecond(t)===e.getSecond(n)}function ox(e,t,n,o){const r=Ml(n,o);return typeof r==\"boolean\"?r:e.locale.getWeek(t,n)===e.locale.getWeek(t,o)}function na(e,t,n){return sr(e,t,n)&&ck(e,t,n)}function Cs(e,t,n,o){return!t||!n||!o?!1:!sr(e,t,o)&&!sr(e,n,o)&&e.isAfter(o,t)&&e.isAfter(n,o)}function uk(e,t,n){const o=t.locale.getWeekFirstDay(e),r=t.setDate(n,1),l=t.getWeekDay(r);let a=t.addDate(r,o-l);return t.getMonth(a)===t.getMonth(n)&&t.getDate(a)>1&&(a=t.addDate(a,-7)),a}function ei(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(t){case\"year\":return n.addYear(e,o*10);case\"quarter\":case\"month\":return n.addYear(e,o);default:return n.addMonth(e,o)}}function vn(e,t){let{generateConfig:n,locale:o,format:r}=t;return typeof r==\"function\"?r(e):n.locale.format(o.locale,e,r)}function rx(e,t){let{generateConfig:n,locale:o,formatList:r}=t;return!e||typeof r[0]==\"function\"?null:n.locale.parse(o.locale,e,r)}function Ap(e){let{cellDate:t,mode:n,disabledDate:o,generateConfig:r}=e;if(!o)return!1;const l=(a,i,s)=>{let c=i;for(;c<=s;){let u;switch(a){case\"date\":{if(u=r.setDate(t,c),!o(u))return!1;break}case\"month\":{if(u=r.setMonth(t,c),!Ap({cellDate:u,mode:\"month\",generateConfig:r,disabledDate:o}))return!1;break}case\"year\":{if(u=r.setYear(t,c),!Ap({cellDate:u,mode:\"year\",generateConfig:r,disabledDate:o}))return!1;break}}c+=1}return!0};switch(n){case\"date\":case\"week\":return o(t);case\"month\":{const i=r.getDate(r.getEndDate(t));return l(\"date\",1,i)}case\"quarter\":{const a=Math.floor(r.getMonth(t)/3)*3,i=a+2;return l(\"month\",a,i)}case\"year\":return l(\"month\",0,11);case\"decade\":{const a=r.getYear(t),i=Math.floor(a/wo)*wo,s=i+wo-1;return l(\"year\",i,s)}}}function Yv(e){const t=Xt(e),{hideHeader:n}=Uo();if(n.value)return null;const{prefixCls:o,generateConfig:r,locale:l,value:a,format:i}=t,s=`${o}-header`;return f(Ur,{prefixCls:s},{default:()=>[a?vn(a,{locale:l,format:i,generateConfig:r}):\" \"]})}Yv.displayName=\"TimeHeader\";Yv.inheritAttrs=!1;const xs=ne({name:\"TimeUnitColumn\",props:[\"prefixCls\",\"units\",\"onSelect\",\"value\",\"active\",\"hideDisabledOptions\"],setup(e){const{open:t}=Uo(),n=ee(null),o=J(new Map),r=J();return pe(()=>e.value,()=>{const l=o.value.get(e.value);l&&t.value!==!1&&Ep(n.value,l.offsetTop,120)}),et(()=>{var l;(l=r.value)===null||l===void 0||l.call(r)}),pe(t,()=>{var l;(l=r.value)===null||l===void 0||l.call(r),it(()=>{if(t.value){const a=o.value.get(e.value);a&&(r.value=ek(a,()=>{Ep(n.value,a.offsetTop,0)}))}})},{immediate:!0,flush:\"post\"}),()=>{const{prefixCls:l,units:a,onSelect:i,value:s,active:c,hideDisabledOptions:u}=e,d=`${l}-cell`;return f(\"ul\",{class:le(`${l}-column`,{[`${l}-column-active`]:c}),ref:n,style:{position:\"relative\"}},[a.map(p=>u&&p.disabled?null:f(\"li\",{key:p.value,ref:m=>{o.value.set(p.value,m)},class:le(d,{[`${d}-disabled`]:p.disabled,[`${d}-selected`]:s===p.value}),onClick:()=>{p.disabled||i(p.value)}},[f(\"div\",{class:`${d}-inner`},[p.label])]))])}}});function lx(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"0\",o=String(e);for(;o.length<t;)o=`${n}${e}`;return o}const dk=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t};function ax(e){return e==null?[]:Array.isArray(e)?e:[e]}function ix(e){const t={};return Object.keys(e).forEach(n=>{(n.startsWith(\"data-\")||n.startsWith(\"aria-\")||n===\"role\"||n===\"name\")&&!n.startsWith(\"data-__\")&&(t[n]=e[n])}),t}function yt(e,t){return e?e[t]:null}function so(e,t,n){const o=[yt(e,0),yt(e,1)];return o[n]=typeof t==\"function\"?t(o[n]):t,!o[0]&&!o[1]?null:o}function lf(e,t,n,o){const r=[];for(let l=e;l<=t;l+=n)r.push({label:lx(l,2),value:l,disabled:(o||[]).includes(l)});return r}const fk=ne({compatConfig:{MODE:3},name:\"TimeBody\",inheritAttrs:!1,props:[\"generateConfig\",\"prefixCls\",\"operationRef\",\"activeColumnIndex\",\"value\",\"showHour\",\"showMinute\",\"showSecond\",\"use12Hours\",\"hourStep\",\"minuteStep\",\"secondStep\",\"disabledHours\",\"disabledMinutes\",\"disabledSeconds\",\"disabledTime\",\"hideDisabledOptions\",\"onSelect\"],setup(e){const t=I(()=>e.value?e.generateConfig.getHour(e.value):-1),n=I(()=>e.use12Hours?t.value>=12:!1),o=I(()=>e.use12Hours?t.value%12:t.value),r=I(()=>e.value?e.generateConfig.getMinute(e.value):-1),l=I(()=>e.value?e.generateConfig.getSecond(e.value):-1),a=J(e.generateConfig.getNow()),i=J(),s=J(),c=J();Pm(()=>{a.value=e.generateConfig.getNow()}),ze(()=>{if(e.disabledTime){const y=e.disabledTime(a);[i.value,s.value,c.value]=[y.disabledHours,y.disabledMinutes,y.disabledSeconds]}else[i.value,s.value,c.value]=[e.disabledHours,e.disabledMinutes,e.disabledSeconds]});const u=(y,b,S,$)=>{let w=e.value||e.generateConfig.getNow();const C=Math.max(0,b),_=Math.max(0,S),x=Math.max(0,$);return w=Q1(e.generateConfig,w,!e.use12Hours||!y?C:C+12,_,x),w},d=I(()=>{var y;return lf(0,23,(y=e.hourStep)!==null&&y!==void 0?y:1,i.value&&i.value())}),p=I(()=>{if(!e.use12Hours)return[!1,!1];const y=[!0,!0];return d.value.forEach(b=>{let{disabled:S,value:$}=b;S||($>=12?y[1]=!1:y[0]=!1)}),y}),m=I(()=>e.use12Hours?d.value.filter(n.value?y=>y.value>=12:y=>y.value<12).map(y=>{const b=y.value%12,S=b===0?\"12\":lx(b,2);return h(h({},y),{label:S,value:b})}):d.value),g=I(()=>{var y;return lf(0,59,(y=e.minuteStep)!==null&&y!==void 0?y:1,s.value&&s.value(t.value))}),v=I(()=>{var y;return lf(0,59,(y=e.secondStep)!==null&&y!==void 0?y:1,c.value&&c.value(t.value,r.value))});return()=>{const{prefixCls:y,operationRef:b,activeColumnIndex:S,showHour:$,showMinute:w,showSecond:C,use12Hours:_,hideDisabledOptions:x,onSelect:P}=e,O=[],M=`${y}-content`,E=`${y}-time-panel`;b.value={onUpDown:z=>{const T=O[S];if(T){const k=T.units.findIndex(L=>L.value===T.value),B=T.units.length;for(let L=1;L<B;L+=1){const N=T.units[(k+z*L+B)%B];if(N.disabled!==!0){T.onSelect(N.value);break}}}}};function R(z,T,k,B,L){z!==!1&&O.push({node:dt(T,{prefixCls:E,value:k,active:S===O.length,onSelect:L,units:B,hideDisabledOptions:x}),onSelect:L,value:k,units:B})}R($,f(xs,{key:\"hour\"},null),o.value,m.value,z=>{P(u(n.value,z,r.value,l.value),\"mouse\")}),R(w,f(xs,{key:\"minute\"},null),r.value,g.value,z=>{P(u(n.value,o.value,z,l.value),\"mouse\")}),R(C,f(xs,{key:\"second\"},null),l.value,v.value,z=>{P(u(n.value,o.value,r.value,z),\"mouse\")});let D=-1;return typeof n.value==\"boolean\"&&(D=n.value?1:0),R(_===!0,f(xs,{key:\"12hours\"},null),D,[{label:\"AM\",value:0,disabled:p.value[0]},{label:\"PM\",value:1,disabled:p.value[1]}],z=>{P(u(!!z,o.value,r.value,l.value),\"mouse\")}),f(\"div\",{class:M},[O.map(z=>{let{node:T}=z;return T})])}}}),pk=e=>e.filter(t=>t!==!1).length;function od(e){const t=Xt(e),{generateConfig:n,format:o=\"HH:mm:ss\",prefixCls:r,active:l,operationRef:a,showHour:i,showMinute:s,showSecond:c,use12Hours:u=!1,onSelect:d,value:p}=t,m=`${r}-time-panel`,g=J(),v=J(-1),y=pk([i,s,c,u]);return a.value={onKeydown:b=>Ma(b,{onLeftRight:S=>{v.value=(v.value+S+y)%y},onUpDown:S=>{v.value===-1?v.value=0:g.value&&g.value.onUpDown(S)},onEnter:()=>{d(p||n.getNow(),\"key\"),v.value=-1}}),onBlur:()=>{v.value=-1}},f(\"div\",{class:le(m,{[`${m}-active`]:l})},[f(Yv,A(A({},t),{},{format:o,prefixCls:r}),null),f(fk,A(A({},t),{},{prefixCls:r,activeColumnIndex:v.value,operationRef:g}),null)])}od.displayName=\"TimePanel\";od.inheritAttrs=!1;function rd(e){let{cellPrefixCls:t,generateConfig:n,rangedValue:o,hoverRangedValue:r,isInView:l,isSameCell:a,offsetCell:i,today:s,value:c}=e;function u(d){const p=i(d,-1),m=i(d,1),g=yt(o,0),v=yt(o,1),y=yt(r,0),b=yt(r,1),S=Cs(n,y,b,d);function $(O){return a(g,O)}function w(O){return a(v,O)}const C=a(y,d),_=a(b,d),x=(S||_)&&(!l(p)||w(p)),P=(S||C)&&(!l(m)||$(m));return{[`${t}-in-view`]:l(d),[`${t}-in-range`]:Cs(n,g,v,d),[`${t}-range-start`]:$(d),[`${t}-range-end`]:w(d),[`${t}-range-start-single`]:$(d)&&!v,[`${t}-range-end-single`]:w(d)&&!g,[`${t}-range-start-near-hover`]:$(d)&&(a(p,y)||Cs(n,y,b,p)),[`${t}-range-end-near-hover`]:w(d)&&(a(m,b)||Cs(n,y,b,m)),[`${t}-range-hover`]:S,[`${t}-range-hover-start`]:C,[`${t}-range-hover-end`]:_,[`${t}-range-hover-edge-start`]:x,[`${t}-range-hover-edge-end`]:P,[`${t}-range-hover-edge-start-near-range`]:x&&a(p,v),[`${t}-range-hover-edge-end-near-range`]:P&&a(m,g),[`${t}-today`]:a(s,d),[`${t}-selected`]:a(c,d)}}return u}const sx=Symbol(\"RangeContextProps\"),mk=e=>{Qe(sx,e)},Hi=()=>Je(sx,{rangedValue:J(),hoverRangedValue:J(),inRange:J(),panelPosition:J()}),vk=ne({compatConfig:{MODE:3},name:\"PanelContextProvider\",inheritAttrs:!1,props:{value:{type:Object,default:()=>({})}},setup(e,t){let{slots:n}=t;const o={rangedValue:J(e.value.rangedValue),hoverRangedValue:J(e.value.hoverRangedValue),inRange:J(e.value.inRange),panelPosition:J(e.value.panelPosition)};return mk(o),pe(()=>e.value,()=>{Object.keys(e.value).forEach(r=>{o[r]&&(o[r].value=e.value[r])})}),()=>{var r;return(r=n.default)===null||r===void 0?void 0:r.call(n)}}});function ld(e){const t=Xt(e),{prefixCls:n,generateConfig:o,prefixColumn:r,locale:l,rowCount:a,viewDate:i,value:s,dateRender:c}=t,{rangedValue:u,hoverRangedValue:d}=Hi(),p=uk(l.locale,o,i),m=`${n}-cell`,g=o.locale.getWeekFirstDay(l.locale),v=o.getNow(),y=[],b=l.shortWeekDays||(o.locale.getShortWeekDays?o.locale.getShortWeekDays(l.locale):[]);r&&y.push(f(\"th\",{key:\"empty\",\"aria-label\":\"empty cell\"},null));for(let w=0;w<ec;w+=1)y.push(f(\"th\",{key:w},[b[(w+g)%ec]]));const S=rd({cellPrefixCls:m,today:v,value:s,generateConfig:o,rangedValue:r?null:u.value,hoverRangedValue:r?null:d.value,isSameCell:(w,C)=>sr(o,w,C),isInView:w=>Uv(o,w,i),offsetCell:(w,C)=>o.addDate(w,C)}),$=c?w=>c({current:w,today:v}):void 0;return f(El,A(A({},t),{},{rowNum:a,colNum:ec,baseDate:p,getCellNode:$,getCellText:o.getDate,getCellClassName:S,getCellDate:o.addDate,titleCell:w=>vn(w,{locale:l,format:\"YYYY-MM-DD\",generateConfig:o}),headerCells:y}),null)}ld.displayName=\"DateBody\";ld.inheritAttrs=!1;ld.props=[\"prefixCls\",\"generateConfig\",\"value?\",\"viewDate\",\"locale\",\"rowCount\",\"onSelect\",\"dateRender?\",\"disabledDate?\",\"prefixColumn?\",\"rowClassName?\"];function qv(e){const t=Xt(e),{prefixCls:n,generateConfig:o,locale:r,viewDate:l,onNextMonth:a,onPrevMonth:i,onNextYear:s,onPrevYear:c,onYearClick:u,onMonthClick:d}=t,{hideHeader:p}=Uo();if(p.value)return null;const m=`${n}-header`,g=r.shortMonths||(o.locale.getShortMonths?o.locale.getShortMonths(r.locale):[]),v=o.getMonth(l),y=f(\"button\",{type:\"button\",key:\"year\",onClick:u,tabindex:-1,class:`${n}-year-btn`},[vn(l,{locale:r,format:r.yearFormat,generateConfig:o})]),b=f(\"button\",{type:\"button\",key:\"month\",onClick:d,tabindex:-1,class:`${n}-month-btn`},[r.monthFormat?vn(l,{locale:r,format:r.monthFormat,generateConfig:o}):g[v]]),S=r.monthBeforeYear?[b,y]:[y,b];return f(Ur,A(A({},t),{},{prefixCls:m,onSuperPrev:c,onPrev:i,onNext:a,onSuperNext:s}),{default:()=>[S]})}qv.displayName=\"DateHeader\";qv.inheritAttrs=!1;const gk=6;function ji(e){const t=Xt(e),{prefixCls:n,panelName:o=\"date\",keyboardConfig:r,active:l,operationRef:a,generateConfig:i,value:s,viewDate:c,onViewDateChange:u,onPanelChange:d,onSelect:p}=t,m=`${n}-${o}-panel`;a.value={onKeydown:y=>Ma(y,h({onLeftRight:b=>{p(i.addDate(s||c,b),\"key\")},onCtrlLeftRight:b=>{p(i.addYear(s||c,b),\"key\")},onUpDown:b=>{p(i.addDate(s||c,b*ec),\"key\")},onPageUpDown:b=>{p(i.addMonth(s||c,b),\"key\")}},r))};const g=y=>{const b=i.addYear(c,y);u(b),d(null,b)},v=y=>{const b=i.addMonth(c,y);u(b),d(null,b)};return f(\"div\",{class:le(m,{[`${m}-active`]:l})},[f(qv,A(A({},t),{},{prefixCls:n,value:s,viewDate:c,onPrevYear:()=>{g(-1)},onNextYear:()=>{g(1)},onPrevMonth:()=>{v(-1)},onNextMonth:()=>{v(1)},onMonthClick:()=>{d(\"month\",c)},onYearClick:()=>{d(\"year\",c)}}),null),f(ld,A(A({},t),{},{onSelect:y=>p(y,\"mouse\"),prefixCls:n,value:s,viewDate:c,rowCount:gk}),null)])}ji.displayName=\"DatePanel\";ji.inheritAttrs=!1;const Ab=dk(\"date\",\"time\");function Zv(e){const t=Xt(e),{prefixCls:n,operationRef:o,generateConfig:r,value:l,defaultValue:a,disabledTime:i,showTime:s,onSelect:c}=t,u=`${n}-datetime-panel`,d=J(null),p=J({}),m=J({}),g=typeof s==\"object\"?h({},s):{};function v($){const w=Ab.indexOf(d.value)+$;return Ab[w]||null}const y=$=>{m.value.onBlur&&m.value.onBlur($),d.value=null};o.value={onKeydown:$=>{if($.which===we.TAB){const w=v($.shiftKey?-1:1);return d.value=w,w&&$.preventDefault(),!0}if(d.value){const w=d.value===\"date\"?p:m;return w.value&&w.value.onKeydown&&w.value.onKeydown($),!0}return[we.LEFT,we.RIGHT,we.UP,we.DOWN].includes($.which)?(d.value=\"date\",!0):!1},onBlur:y,onClose:y};const b=($,w)=>{let C=$;w===\"date\"&&!l&&g.defaultValue?(C=r.setHour(C,r.getHour(g.defaultValue)),C=r.setMinute(C,r.getMinute(g.defaultValue)),C=r.setSecond(C,r.getSecond(g.defaultValue))):w===\"time\"&&!l&&a&&(C=r.setYear(C,r.getYear(a)),C=r.setMonth(C,r.getMonth(a)),C=r.setDate(C,r.getDate(a))),c&&c(C,\"mouse\")},S=i?i(l||null):{};return f(\"div\",{class:le(u,{[`${u}-active`]:d.value})},[f(ji,A(A({},t),{},{operationRef:p,active:d.value===\"date\",onSelect:$=>{b(Js(r,$,!l&&typeof s==\"object\"?s.defaultValue:null),\"date\")}}),null),f(od,A(A(A(A({},t),{},{format:void 0},g),S),{},{disabledTime:null,defaultValue:void 0,operationRef:m,active:d.value===\"time\",onSelect:$=>{b($,\"time\")}}),null)])}Zv.displayName=\"DatetimePanel\";Zv.inheritAttrs=!1;function Qv(e){const t=Xt(e),{prefixCls:n,generateConfig:o,locale:r,value:l}=t,a=`${n}-cell`,i=u=>f(\"td\",{key:\"week\",class:le(a,`${a}-week`)},[o.locale.getWeek(r.locale,u)]),s=`${n}-week-panel-row`,c=u=>le(s,{[`${s}-selected`]:ox(o,r.locale,l,u)});return f(ji,A(A({},t),{},{panelName:\"week\",prefixColumn:i,rowClassName:c,keyboardConfig:{onLeftRight:null}}),null)}Qv.displayName=\"WeekPanel\";Qv.inheritAttrs=!1;function Jv(e){const t=Xt(e),{prefixCls:n,generateConfig:o,locale:r,viewDate:l,onNextYear:a,onPrevYear:i,onYearClick:s}=t,{hideHeader:c}=Uo();if(c.value)return null;const u=`${n}-header`;return f(Ur,A(A({},t),{},{prefixCls:u,onSuperPrev:i,onSuperNext:a}),{default:()=>[f(\"button\",{type:\"button\",onClick:s,class:`${n}-year-btn`},[vn(l,{locale:r,format:r.yearFormat,generateConfig:o})])]})}Jv.displayName=\"MonthHeader\";Jv.inheritAttrs=!1;const cx=3,hk=4;function eg(e){const t=Xt(e),{prefixCls:n,locale:o,value:r,viewDate:l,generateConfig:a,monthCellRender:i}=t,{rangedValue:s,hoverRangedValue:c}=Hi(),u=`${n}-cell`,d=rd({cellPrefixCls:u,value:r,generateConfig:a,rangedValue:s.value,hoverRangedValue:c.value,isSameCell:(v,y)=>Uv(a,v,y),isInView:()=>!0,offsetCell:(v,y)=>a.addMonth(v,y)}),p=o.shortMonths||(a.locale.getShortMonths?a.locale.getShortMonths(o.locale):[]),m=a.setMonth(l,0),g=i?v=>i({current:v,locale:o}):void 0;return f(El,A(A({},t),{},{rowNum:hk,colNum:cx,baseDate:m,getCellNode:g,getCellText:v=>o.monthFormat?vn(v,{locale:o,format:o.monthFormat,generateConfig:a}):p[a.getMonth(v)],getCellClassName:d,getCellDate:a.addMonth,titleCell:v=>vn(v,{locale:o,format:\"YYYY-MM\",generateConfig:a})}),null)}eg.displayName=\"MonthBody\";eg.inheritAttrs=!1;function tg(e){const t=Xt(e),{prefixCls:n,operationRef:o,onViewDateChange:r,generateConfig:l,value:a,viewDate:i,onPanelChange:s,onSelect:c}=t,u=`${n}-month-panel`;o.value={onKeydown:p=>Ma(p,{onLeftRight:m=>{c(l.addMonth(a||i,m),\"key\")},onCtrlLeftRight:m=>{c(l.addYear(a||i,m),\"key\")},onUpDown:m=>{c(l.addMonth(a||i,m*cx),\"key\")},onEnter:()=>{s(\"date\",a||i)}})};const d=p=>{const m=l.addYear(i,p);r(m),s(null,m)};return f(\"div\",{class:u},[f(Jv,A(A({},t),{},{prefixCls:n,onPrevYear:()=>{d(-1)},onNextYear:()=>{d(1)},onYearClick:()=>{s(\"year\",i)}}),null),f(eg,A(A({},t),{},{prefixCls:n,onSelect:p=>{c(p,\"mouse\"),s(\"date\",p)}}),null)])}tg.displayName=\"MonthPanel\";tg.inheritAttrs=!1;function ng(e){const t=Xt(e),{prefixCls:n,generateConfig:o,locale:r,viewDate:l,onNextYear:a,onPrevYear:i,onYearClick:s}=t,{hideHeader:c}=Uo();if(c.value)return null;const u=`${n}-header`;return f(Ur,A(A({},t),{},{prefixCls:u,onSuperPrev:i,onSuperNext:a}),{default:()=>[f(\"button\",{type:\"button\",onClick:s,class:`${n}-year-btn`},[vn(l,{locale:r,format:r.yearFormat,generateConfig:o})])]})}ng.displayName=\"QuarterHeader\";ng.inheritAttrs=!1;const bk=4,yk=1;function og(e){const t=Xt(e),{prefixCls:n,locale:o,value:r,viewDate:l,generateConfig:a}=t,{rangedValue:i,hoverRangedValue:s}=Hi(),c=`${n}-cell`,u=rd({cellPrefixCls:c,value:r,generateConfig:a,rangedValue:i.value,hoverRangedValue:s.value,isSameCell:(p,m)=>nx(a,p,m),isInView:()=>!0,offsetCell:(p,m)=>a.addMonth(p,m*3)}),d=a.setDate(a.setMonth(l,0),1);return f(El,A(A({},t),{},{rowNum:yk,colNum:bk,baseDate:d,getCellText:p=>vn(p,{locale:o,format:o.quarterFormat||\"[Q]Q\",generateConfig:a}),getCellClassName:u,getCellDate:(p,m)=>a.addMonth(p,m*3),titleCell:p=>vn(p,{locale:o,format:\"YYYY-[Q]Q\",generateConfig:a})}),null)}og.displayName=\"QuarterBody\";og.inheritAttrs=!1;function rg(e){const t=Xt(e),{prefixCls:n,operationRef:o,onViewDateChange:r,generateConfig:l,value:a,viewDate:i,onPanelChange:s,onSelect:c}=t,u=`${n}-quarter-panel`;o.value={onKeydown:p=>Ma(p,{onLeftRight:m=>{c(l.addMonth(a||i,m*3),\"key\")},onCtrlLeftRight:m=>{c(l.addYear(a||i,m),\"key\")},onUpDown:m=>{c(l.addYear(a||i,m),\"key\")}})};const d=p=>{const m=l.addYear(i,p);r(m),s(null,m)};return f(\"div\",{class:u},[f(ng,A(A({},t),{},{prefixCls:n,onPrevYear:()=>{d(-1)},onNextYear:()=>{d(1)},onYearClick:()=>{s(\"year\",i)}}),null),f(og,A(A({},t),{},{prefixCls:n,onSelect:p=>{c(p,\"mouse\")}}),null)])}rg.displayName=\"QuarterPanel\";rg.inheritAttrs=!1;function lg(e){const t=Xt(e),{prefixCls:n,generateConfig:o,viewDate:r,onPrevDecade:l,onNextDecade:a,onDecadeClick:i}=t,{hideHeader:s}=Uo();if(s.value)return null;const c=`${n}-header`,u=o.getYear(r),d=Math.floor(u/Mr)*Mr,p=d+Mr-1;return f(Ur,A(A({},t),{},{prefixCls:c,onSuperPrev:l,onSuperNext:a}),{default:()=>[f(\"button\",{type:\"button\",onClick:i,class:`${n}-decade-btn`},[d,wt(\"-\"),p])]})}lg.displayName=\"YearHeader\";lg.inheritAttrs=!1;const Dp=3,Db=4;function ag(e){const t=Xt(e),{prefixCls:n,value:o,viewDate:r,locale:l,generateConfig:a}=t,{rangedValue:i,hoverRangedValue:s}=Hi(),c=`${n}-cell`,u=a.getYear(r),d=Math.floor(u/Mr)*Mr,p=d+Mr-1,m=a.setYear(r,d-Math.ceil((Dp*Db-Mr)/2)),g=y=>{const b=a.getYear(y);return d<=b&&b<=p},v=rd({cellPrefixCls:c,value:o,generateConfig:a,rangedValue:i.value,hoverRangedValue:s.value,isSameCell:(y,b)=>nd(a,y,b),isInView:g,offsetCell:(y,b)=>a.addYear(y,b)});return f(El,A(A({},t),{},{rowNum:Db,colNum:Dp,baseDate:m,getCellText:a.getYear,getCellClassName:v,getCellDate:a.addYear,titleCell:y=>vn(y,{locale:l,format:\"YYYY\",generateConfig:a})}),null)}ag.displayName=\"YearBody\";ag.inheritAttrs=!1;const Mr=10;function ig(e){const t=Xt(e),{prefixCls:n,operationRef:o,onViewDateChange:r,generateConfig:l,value:a,viewDate:i,sourceMode:s,onSelect:c,onPanelChange:u}=t,d=`${n}-year-panel`;o.value={onKeydown:m=>Ma(m,{onLeftRight:g=>{c(l.addYear(a||i,g),\"key\")},onCtrlLeftRight:g=>{c(l.addYear(a||i,g*Mr),\"key\")},onUpDown:g=>{c(l.addYear(a||i,g*Dp),\"key\")},onEnter:()=>{u(s===\"date\"?\"date\":\"month\",a||i)}})};const p=m=>{const g=l.addYear(i,m*10);r(g),u(null,g)};return f(\"div\",{class:d},[f(lg,A(A({},t),{},{prefixCls:n,onPrevDecade:()=>{p(-1)},onNextDecade:()=>{p(1)},onDecadeClick:()=>{u(\"decade\",i)}}),null),f(ag,A(A({},t),{},{prefixCls:n,onSelect:m=>{u(s===\"date\"?\"date\":\"month\",m),c(m,\"mouse\")}}),null)])}ig.displayName=\"YearPanel\";ig.inheritAttrs=!1;function ux(e,t,n){return n?f(\"div\",{class:`${e}-footer-extra`},[n(t)]):null}function dx(e){let{prefixCls:t,components:n={},needConfirmButton:o,onNow:r,onOk:l,okDisabled:a,showNow:i,locale:s}=e,c,u;if(o){const d=n.button||\"button\";r&&i!==!1&&(c=f(\"li\",{class:`${t}-now`},[f(\"a\",{class:`${t}-now-btn`,onClick:r},[s.now])])),u=o&&f(\"li\",{class:`${t}-ok`},[f(d,{disabled:a,onClick:p=>{p.stopPropagation(),l&&l()}},{default:()=>[s.ok]})])}return!c&&!u?null:f(\"ul\",{class:`${t}-ranges`},[c,u])}function Sk(){return ne({name:\"PickerPanel\",inheritAttrs:!1,props:{prefixCls:String,locale:Object,generateConfig:Object,value:Object,defaultValue:Object,pickerValue:Object,defaultPickerValue:Object,disabledDate:Function,mode:String,picker:{type:String,default:\"date\"},tabindex:{type:[Number,String],default:0},showNow:{type:Boolean,default:void 0},showTime:[Boolean,Object],showToday:Boolean,renderExtraFooter:Function,dateRender:Function,hideHeader:{type:Boolean,default:void 0},onSelect:Function,onChange:Function,onPanelChange:Function,onMousedown:Function,onPickerValueChange:Function,onOk:Function,components:Object,direction:String,hourStep:{type:Number,default:1},minuteStep:{type:Number,default:1},secondStep:{type:Number,default:1}},setup(e,t){let{attrs:n}=t;const o=I(()=>e.picker===\"date\"&&!!e.showTime||e.picker===\"time\"),r=I(()=>24%e.hourStep===0),l=I(()=>60%e.minuteStep===0),a=I(()=>60%e.secondStep===0),i=Uo(),{operationRef:s,onSelect:c,hideRanges:u,defaultOpenValue:d}=i,{inRange:p,panelPosition:m,rangedValue:g,hoverRangedValue:v}=Hi(),y=J({}),[b,S]=Mt(null,{value:We(e,\"value\"),defaultValue:e.defaultValue,postState:B=>!B&&d?.value&&e.picker===\"time\"?d.value:B}),[$,w]=Mt(null,{value:We(e,\"pickerValue\"),defaultValue:e.defaultPickerValue||b.value,postState:B=>{const{generateConfig:L,showTime:N,defaultValue:F}=e,j=L.getNow();return B?!b.value&&e.showTime?typeof N==\"object\"?Js(L,Array.isArray(B)?B[0]:B,N.defaultValue||j):F?Js(L,Array.isArray(B)?B[0]:B,F):Js(L,Array.isArray(B)?B[0]:B,j):B:j}}),C=B=>{w(B),e.onPickerValueChange&&e.onPickerValueChange(B)},_=B=>{const L=ik[e.picker];return L?L(B):B},[x,P]=Mt(()=>e.picker===\"time\"?\"time\":_(\"date\"),{value:We(e,\"mode\")});pe(()=>e.picker,()=>{P(e.picker)});const O=J(x.value),M=B=>{O.value=B},E=(B,L)=>{const{onPanelChange:N,generateConfig:F}=e,j=_(B||x.value);M(x.value),P(j),N&&(x.value!==j||na(F,$.value,$.value))&&N(L,j)},R=function(B,L){let N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{picker:F,generateConfig:j,onSelect:H,onChange:K,disabledDate:G}=e;(x.value===F||N)&&(S(B),H&&H(B),c&&c(B,L),K&&!na(j,B,b.value)&&!G?.(B)&&K(B))},D=B=>y.value&&y.value.onKeydown?([we.LEFT,we.RIGHT,we.UP,we.DOWN,we.PAGE_UP,we.PAGE_DOWN,we.ENTER].includes(B.which)&&B.preventDefault(),y.value.onKeydown(B)):!1,z=B=>{y.value&&y.value.onBlur&&y.value.onBlur(B)},T=()=>{const{generateConfig:B,hourStep:L,minuteStep:N,secondStep:F}=e,j=B.getNow(),H=Q5(B.getHour(j),B.getMinute(j),B.getSecond(j),r.value?L:1,l.value?N:1,a.value?F:1),K=Q1(B,j,H[0],H[1],H[2]);R(K,\"submit\")},k=I(()=>{const{prefixCls:B,direction:L}=e;return le(`${B}-panel`,{[`${B}-panel-has-range`]:g&&g.value&&g.value[0]&&g.value[1],[`${B}-panel-has-range-hover`]:v&&v.value&&v.value[0]&&v.value[1],[`${B}-panel-rtl`]:L===\"rtl\"})});return Vv(h(h({},i),{mode:x,hideHeader:I(()=>{var B;return e.hideHeader!==void 0?e.hideHeader:(B=i.hideHeader)===null||B===void 0?void 0:B.value}),hidePrevBtn:I(()=>p.value&&m.value===\"right\"),hideNextBtn:I(()=>p.value&&m.value===\"left\")})),pe(()=>e.value,()=>{e.value&&w(e.value)}),()=>{const{prefixCls:B=\"ant-picker\",locale:L,generateConfig:N,disabledDate:F,picker:j=\"date\",tabindex:H=0,showNow:K,showTime:G,showToday:V,renderExtraFooter:q,onMousedown:Z,onOk:oe,components:re}=e;s&&m.value!==\"right\"&&(s.value={onKeydown:D,onClose:()=>{y.value&&y.value.onClose&&y.value.onClose()}});let Y;const Q=h(h(h({},n),e),{operationRef:y,prefixCls:B,viewDate:$.value,value:b.value,onViewDateChange:C,sourceMode:O.value,onPanelChange:E,disabledDate:F});switch(delete Q.onChange,delete Q.onSelect,x.value){case\"decade\":Y=f(Xv,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"year\":Y=f(ig,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"month\":Y=f(tg,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"quarter\":Y=f(rg,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"week\":Y=f(Qv,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;case\"time\":delete Q.showTime,Y=f(od,A(A(A({},Q),typeof G==\"object\"?G:null),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null);break;default:G?Y=f(Zv,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null):Y=f(ji,A(A({},Q),{},{onSelect:(Ce,ge)=>{C(Ce),R(Ce,ge)}}),null)}let ce,ue;u?.value||(ce=ux(B,x.value,q),ue=dx({prefixCls:B,components:re,needConfirmButton:o.value,okDisabled:!b.value||F&&F(b.value),locale:L,showNow:K,onNow:o.value&&T,onOk:()=>{b.value&&(R(b.value,\"submit\",!0),oe&&oe(b.value))}}));let be;if(V&&x.value===\"date\"&&j===\"date\"&&!G){const Ce=N.getNow(),ge=`${B}-today-btn`,Se=F&&F(Ce);be=f(\"a\",{class:le(ge,Se&&`${ge}-disabled`),\"aria-disabled\":Se,onClick:()=>{Se||R(Ce,\"mouse\",!0)}},[L.today])}return f(\"div\",{tabindex:H,class:le(k.value,n.class),style:n.style,onKeydown:D,onBlur:z,onMousedown:Z},[Y,ce||ue||be?f(\"div\",{class:`${B}-footer`},[ce,ue,be]):null])}}})}const $k=Sk(),sg=e=>f($k,e),Ck={bottomLeft:{points:[\"tl\",\"bl\"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:[\"tr\",\"br\"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:[\"bl\",\"tl\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:[\"br\",\"tr\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function fx(e,t){let{slots:n}=t;const{prefixCls:o,popupStyle:r,visible:l,dropdownClassName:a,dropdownAlign:i,transitionName:s,getPopupContainer:c,range:u,popupPlacement:d,direction:p}=Xt(e),m=`${o}-dropdown`;return f(Ol,{showAction:[],hideAction:[],popupPlacement:d!==void 0?d:p===\"rtl\"?\"bottomRight\":\"bottomLeft\",builtinPlacements:Ck,prefixCls:m,popupTransitionName:s,popupAlign:i,popupVisible:l,popupClassName:le(a,{[`${m}-range`]:u,[`${m}-rtl`]:p===\"rtl\"}),popupStyle:r,getPopupContainer:c},{default:n.default,popup:n.popupElement})}const px=ne({name:\"PresetPanel\",props:{prefixCls:String,presets:{type:Array,default:()=>[]},onClick:Function,onHover:Function},setup(e){return()=>e.presets.length?f(\"div\",{class:`${e.prefixCls}-presets`},[f(\"ul\",null,[e.presets.map((t,n)=>{let{label:o,value:r}=t;return f(\"li\",{key:n,onClick:l=>{l.stopPropagation(),e.onClick(r)},onMouseenter:()=>{var l;(l=e.onHover)===null||l===void 0||l.call(e,r)},onMouseleave:()=>{var l;(l=e.onHover)===null||l===void 0||l.call(e,null)}},[o])})])]):null}});function Rp(e){let{open:t,value:n,isClickOutside:o,triggerOpen:r,forwardKeydown:l,onKeydown:a,blurToCancel:i,onSubmit:s,onCancel:c,onFocus:u,onBlur:d}=e;const p=ee(!1),m=ee(!1),g=ee(!1),v=ee(!1),y=ee(!1),b=I(()=>({onMousedown:()=>{p.value=!0,r(!0)},onKeydown:$=>{if(a($,()=>{y.value=!0}),!y.value){switch($.which){case we.ENTER:{t.value?s()!==!1&&(p.value=!0):r(!0),$.preventDefault();return}case we.TAB:{p.value&&t.value&&!$.shiftKey?(p.value=!1,$.preventDefault()):!p.value&&t.value&&!l($)&&$.shiftKey&&(p.value=!0,$.preventDefault());return}case we.ESC:{p.value=!0,c();return}}!t.value&&![we.SHIFT].includes($.which)?r(!0):p.value||l($)}},onFocus:$=>{p.value=!0,m.value=!0,u&&u($)},onBlur:$=>{if(g.value||!o(document.activeElement)){g.value=!1;return}i.value?setTimeout(()=>{let{activeElement:w}=document;for(;w&&w.shadowRoot;)w=w.shadowRoot.activeElement;o(w)&&c()},0):t.value&&(r(!1),v.value&&s()),m.value=!1,d&&d($)}}));pe(t,()=>{v.value=!1}),pe(n,()=>{v.value=!0});const S=ee();return Ne(()=>{S.value=tk($=>{const w=nk($);if(t.value){const C=o(w);C?(!m.value||C)&&r(!1):(g.value=!0,qe(()=>{g.value=!1}))}})}),et(()=>{S.value&&S.value()}),[b,{focused:m,typing:p}]}function kp(e){let{valueTexts:t,onTextChange:n}=e;const o=J(\"\");function r(a){o.value=a,n(a)}function l(){o.value=t.value[0]}return pe(()=>[...t.value],function(a){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];a.join(\"||\")!==i.join(\"||\")&&t.value.every(s=>s!==o.value)&&l()},{immediate:!0}),[o,r,l]}function au(e,t){let{formatList:n,generateConfig:o,locale:r}=t;const l=Sv(()=>{if(!e.value)return[[\"\"],\"\"];let s=\"\";const c=[];for(let u=0;u<n.value.length;u+=1){const d=n.value[u],p=vn(e.value,{generateConfig:o.value,locale:r.value,format:d});c.push(p),u===0&&(s=p)}return[c,s]},[e,n],(s,c)=>c[0]!==s[0]||!Vl(c[1],s[1])),a=I(()=>l.value[0]),i=I(()=>l.value[1]);return[a,i]}function Np(e,t){let{formatList:n,generateConfig:o,locale:r}=t;const l=J(null);let a;function i(d){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(qe.cancel(a),p){l.value=d;return}a=qe(()=>{l.value=d})}const[,s]=au(l,{formatList:n,generateConfig:o,locale:r});function c(d){i(d)}function u(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;i(null,d)}return pe(e,()=>{u(!0)}),et(()=>{qe.cancel(a)}),[s,c,u]}function mx(e,t){return I(()=>e?.value?e.value:t?.value?(Zm(!1,\"`ranges` is deprecated. Please use `presets` instead.\"),Object.keys(t.value).map(o=>{const r=t.value[o],l=typeof r==\"function\"?r():r;return{label:o,value:l}})):[])}function xk(){return ne({name:\"Picker\",inheritAttrs:!1,props:[\"prefixCls\",\"id\",\"tabindex\",\"dropdownClassName\",\"dropdownAlign\",\"popupStyle\",\"transitionName\",\"generateConfig\",\"locale\",\"inputReadOnly\",\"allowClear\",\"autofocus\",\"showTime\",\"showNow\",\"showHour\",\"showMinute\",\"showSecond\",\"picker\",\"format\",\"use12Hours\",\"value\",\"defaultValue\",\"open\",\"defaultOpen\",\"defaultOpenValue\",\"suffixIcon\",\"presets\",\"clearIcon\",\"disabled\",\"disabledDate\",\"placeholder\",\"getPopupContainer\",\"panelRender\",\"inputRender\",\"onChange\",\"onOpenChange\",\"onPanelChange\",\"onFocus\",\"onBlur\",\"onMousedown\",\"onMouseup\",\"onMouseenter\",\"onMouseleave\",\"onContextmenu\",\"onClick\",\"onKeydown\",\"onSelect\",\"direction\",\"autocomplete\",\"showToday\",\"renderExtraFooter\",\"dateRender\",\"minuteStep\",\"hourStep\",\"secondStep\",\"hideDisabledOptions\"],setup(e,t){let{attrs:n,expose:o}=t;const r=J(null),l=I(()=>e.presets),a=mx(l),i=I(()=>{var F;return(F=e.picker)!==null&&F!==void 0?F:\"date\"}),s=I(()=>i.value===\"date\"&&!!e.showTime||i.value===\"time\"),c=I(()=>ax(J1(e.format,i.value,e.showTime,e.use12Hours))),u=J(null),d=J(null),p=J(null),[m,g]=Mt(null,{value:We(e,\"value\"),defaultValue:e.defaultValue}),v=J(m.value),y=F=>{v.value=F},b=J(null),[S,$]=Mt(!1,{value:We(e,\"open\"),defaultValue:e.defaultOpen,postState:F=>e.disabled?!1:F,onChange:F=>{e.onOpenChange&&e.onOpenChange(F),!F&&b.value&&b.value.onClose&&b.value.onClose()}}),[w,C]=au(v,{formatList:c,generateConfig:We(e,\"generateConfig\"),locale:We(e,\"locale\")}),[_,x,P]=kp({valueTexts:w,onTextChange:F=>{const j=rx(F,{locale:e.locale,formatList:c.value,generateConfig:e.generateConfig});j&&(!e.disabledDate||!e.disabledDate(j))&&y(j)}}),O=F=>{const{onChange:j,generateConfig:H,locale:K}=e;y(F),g(F),j&&!na(H,m.value,F)&&j(F,F?vn(F,{generateConfig:H,locale:K,format:c.value[0]}):\"\")},M=F=>{e.disabled&&F||$(F)},E=F=>S.value&&b.value&&b.value.onKeydown?b.value.onKeydown(F):!1,R=function(){e.onMouseup&&e.onMouseup(...arguments),r.value&&(r.value.focus(),M(!0))},[D,{focused:z,typing:T}]=Rp({blurToCancel:s,open:S,value:_,triggerOpen:M,forwardKeydown:E,isClickOutside:F=>!tx([u.value,d.value,p.value],F),onSubmit:()=>!v.value||e.disabledDate&&e.disabledDate(v.value)?!1:(O(v.value),M(!1),P(),!0),onCancel:()=>{M(!1),y(m.value),P()},onKeydown:(F,j)=>{var H;(H=e.onKeydown)===null||H===void 0||H.call(e,F,j)},onFocus:F=>{var j;(j=e.onFocus)===null||j===void 0||j.call(e,F)},onBlur:F=>{var j;(j=e.onBlur)===null||j===void 0||j.call(e,F)}});pe([S,w],()=>{S.value||(y(m.value),!w.value.length||w.value[0]===\"\"?x(\"\"):C.value!==_.value&&P())}),pe(i,()=>{S.value||P()}),pe(m,()=>{y(m.value)});const[k,B,L]=Np(_,{formatList:c,generateConfig:We(e,\"generateConfig\"),locale:We(e,\"locale\")}),N=(F,j)=>{(j===\"submit\"||j!==\"key\"&&!s.value)&&(O(F),M(!1))};return Vv({operationRef:b,hideHeader:I(()=>i.value===\"time\"),onSelect:N,open:S,defaultOpenValue:We(e,\"defaultOpenValue\"),onDateMouseenter:B,onDateMouseleave:L}),o({focus:()=>{r.value&&r.value.focus()},blur:()=>{r.value&&r.value.blur()}}),()=>{const{prefixCls:F=\"rc-picker\",id:j,tabindex:H,dropdownClassName:K,dropdownAlign:G,popupStyle:V,transitionName:q,generateConfig:Z,locale:oe,inputReadOnly:re,allowClear:Y,autofocus:Q,picker:ce=\"date\",defaultOpenValue:ue,suffixIcon:be,clearIcon:Ce,disabled:ge,placeholder:Se,getPopupContainer:X,panelRender:U,onMousedown:ie,onMouseenter:ve,onMouseleave:me,onContextmenu:he,onClick:se,onSelect:te,direction:ae,autocomplete:fe=\"off\"}=e,Ie=h(h(h({},e),n),{class:le({[`${F}-panel-focused`]:!T.value}),style:void 0,pickerValue:void 0,onPickerValueChange:void 0,onChange:null});let Te=f(\"div\",{class:`${F}-panel-layout`},[f(px,{prefixCls:F,presets:a.value,onClick:Ae=>{O(Ae),M(!1)}},null),f(sg,A(A({},Ie),{},{generateConfig:Z,value:v.value,locale:oe,tabindex:-1,onSelect:Ae=>{te?.(Ae),y(Ae)},direction:ae,onPanelChange:(Ae,je)=>{const{onPanelChange:at}=e;L(!0),at?.(Ae,je)}}),null)]);U&&(Te=U(Te));const Re=f(\"div\",{class:`${F}-panel-container`,ref:u,onMousedown:Ae=>{Ae.preventDefault()}},[Te]);let $e;be&&($e=f(\"span\",{class:`${F}-suffix`},[be]));let xe;Y&&m.value&&!ge&&(xe=f(\"span\",{onMousedown:Ae=>{Ae.preventDefault(),Ae.stopPropagation()},onMouseup:Ae=>{Ae.preventDefault(),Ae.stopPropagation(),O(null),M(!1)},class:`${F}-clear`,role:\"button\"},[Ce||f(\"span\",{class:`${F}-clear-btn`},null)]));const _e=h(h(h(h({id:j,tabindex:H,disabled:ge,readonly:re||typeof c.value[0]==\"function\"||!T.value,value:k.value||_.value,onInput:Ae=>{x(Ae.target.value)},autofocus:Q,placeholder:Se,ref:r,title:_.value},D.value),{size:ex(ce,c.value[0],Z)}),ix(e)),{autocomplete:fe}),Me=e.inputRender?e.inputRender(_e):f(\"input\",_e,null),He=ae===\"rtl\"?\"bottomRight\":\"bottomLeft\";return f(\"div\",{ref:p,class:le(F,n.class,{[`${F}-disabled`]:ge,[`${F}-focused`]:z.value,[`${F}-rtl`]:ae===\"rtl\"}),style:n.style,onMousedown:ie,onMouseup:R,onMouseenter:ve,onMouseleave:me,onContextmenu:he,onClick:se},[f(\"div\",{class:le(`${F}-input`,{[`${F}-input-placeholder`]:!!k.value}),ref:d},[Me,$e,xe]),f(fx,{visible:S.value,popupStyle:V,prefixCls:F,dropdownClassName:K,dropdownAlign:G,getPopupContainer:X,transitionName:q,popupPlacement:He,direction:ae},{default:()=>[f(\"div\",{style:{pointerEvents:\"none\",position:\"absolute\",top:0,bottom:0,left:0,right:0}},null)],popupElement:()=>Re})])}}})}const wk=xk();function _k(e,t){let{picker:n,locale:o,selectedValue:r,disabledDate:l,disabled:a,generateConfig:i}=e;const s=I(()=>yt(r.value,0)),c=I(()=>yt(r.value,1));function u(v){return i.value.locale.getWeekFirstDate(o.value.locale,v)}function d(v){const y=i.value.getYear(v),b=i.value.getMonth(v);return y*100+b}function p(v){const y=i.value.getYear(v),b=Mp(i.value,v);return y*10+b}return[v=>{var y;if(l&&(!((y=l?.value)===null||y===void 0)&&y.call(l,v)))return!0;if(a[1]&&c)return!sr(i.value,v,c.value)&&i.value.isAfter(v,c.value);if(t.value[1]&&c.value)switch(n.value){case\"quarter\":return p(v)>p(c.value);case\"month\":return d(v)>d(c.value);case\"week\":return u(v)>u(c.value);default:return!sr(i.value,v,c.value)&&i.value.isAfter(v,c.value)}return!1},v=>{var y;if(!((y=l.value)===null||y===void 0)&&y.call(l,v))return!0;if(a[0]&&s)return!sr(i.value,v,c.value)&&i.value.isAfter(s.value,v);if(t.value[0]&&s.value)switch(n.value){case\"quarter\":return p(v)<p(s.value);case\"month\":return d(v)<d(s.value);case\"week\":return u(v)<u(s.value);default:return!sr(i.value,v,s.value)&&i.value.isAfter(s.value,v)}return!1}]}function Ik(e,t,n,o){const r=ei(e,n,o,1);function l(a){return a(e,t)?\"same\":a(r,t)?\"closing\":\"far\"}switch(n){case\"year\":return l((a,i)=>sk(o,a,i));case\"quarter\":case\"month\":return l((a,i)=>nd(o,a,i));default:return l((a,i)=>Uv(o,a,i))}}function Pk(e,t,n,o){const r=yt(e,0),l=yt(e,1);if(t===0)return r;if(r&&l)switch(Ik(r,l,n,o)){case\"same\":return r;case\"closing\":return r;default:return ei(l,n,o,-1)}return r}function Tk(e){let{values:t,picker:n,defaultDates:o,generateConfig:r}=e;const l=J([yt(o,0),yt(o,1)]),a=J(null),i=I(()=>yt(t.value,0)),s=I(()=>yt(t.value,1)),c=m=>l.value[m]?l.value[m]:yt(a.value,m)||Pk(t.value,m,n.value,r.value)||i.value||s.value||r.value.getNow(),u=J(null),d=J(null);ze(()=>{u.value=c(0),d.value=c(1)});function p(m,g){if(m){let v=so(a.value,m,g);l.value=so(l.value,null,g)||[null,null];const y=(g+1)%2;yt(t.value,y)||(v=so(v,m,y)),a.value=v}else(i.value||s.value)&&(a.value=null)}return[u,d,p]}function vx(e){return EI()?(MI(e),!0):!1}function Ok(e){return typeof e==\"function\"?e():Be(e)}function cg(e){var t;const n=Ok(e);return(t=n?.$el)!==null&&t!==void 0?t:n}function Ek(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;fn()?Ne(e):t?e():it(e)}function gx(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=ee(),o=()=>n.value=!!e();return o(),Ek(o,t),n}var af;const hx=typeof window<\"u\";hx&&(!((af=window?.navigator)===null||af===void 0)&&af.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);const bx=hx?window:void 0;var Mk=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function Ak(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{window:o=bx}=n,r=Mk(n,[\"window\"]);let l;const a=gx(()=>o&&\"ResizeObserver\"in o),i=()=>{l&&(l.disconnect(),l=void 0)},s=pe(()=>cg(e),u=>{i(),a.value&&o&&u&&(l=new ResizeObserver(t),l.observe(u,r))},{immediate:!0,flush:\"post\"}),c=()=>{i(),s()};return vx(c),{isSupported:a,stop:c}}function Va(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{width:0,height:0},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{box:o=\"content-box\"}=n,r=ee(t.width),l=ee(t.height);return Ak(e,a=>{let[i]=a;const s=o===\"border-box\"?i.borderBoxSize:o===\"content-box\"?i.contentBoxSize:i.devicePixelContentBoxSize;s?(r.value=s.reduce((c,u)=>{let{inlineSize:d}=u;return c+d},0),l.value=s.reduce((c,u)=>{let{blockSize:d}=u;return c+d},0)):(r.value=i.contentRect.width,l.value=i.contentRect.height)},n),pe(()=>cg(e),a=>{r.value=a?t.width:0,l.value=a?t.height:0}),{width:r,height:l}}function Rb(e,t){return e&&e[0]&&e[1]&&t.isAfter(e[0],e[1])?[e[1],e[0]]:e}function kb(e,t,n,o){return!!(e||o&&o[t]||n[(t+1)%2])}function Dk(){return ne({name:\"RangerPicker\",inheritAttrs:!1,props:[\"prefixCls\",\"id\",\"popupStyle\",\"dropdownClassName\",\"transitionName\",\"dropdownAlign\",\"getPopupContainer\",\"generateConfig\",\"locale\",\"placeholder\",\"autofocus\",\"disabled\",\"format\",\"picker\",\"showTime\",\"showNow\",\"showHour\",\"showMinute\",\"showSecond\",\"use12Hours\",\"separator\",\"value\",\"defaultValue\",\"defaultPickerValue\",\"open\",\"defaultOpen\",\"disabledDate\",\"disabledTime\",\"dateRender\",\"panelRender\",\"ranges\",\"allowEmpty\",\"allowClear\",\"suffixIcon\",\"clearIcon\",\"pickerRef\",\"inputReadOnly\",\"mode\",\"renderExtraFooter\",\"onChange\",\"onOpenChange\",\"onPanelChange\",\"onCalendarChange\",\"onFocus\",\"onBlur\",\"onMousedown\",\"onMouseup\",\"onMouseenter\",\"onMouseleave\",\"onClick\",\"onOk\",\"onKeydown\",\"components\",\"order\",\"direction\",\"activePickerIndex\",\"autocomplete\",\"minuteStep\",\"hourStep\",\"secondStep\",\"hideDisabledOptions\",\"disabledMinutes\",\"presets\",\"prevIcon\",\"nextIcon\",\"superPrevIcon\",\"superNextIcon\"],setup(e,t){let{attrs:n,expose:o}=t;const r=I(()=>e.picker===\"date\"&&!!e.showTime||e.picker===\"time\"),l=I(()=>e.presets),a=I(()=>e.ranges),i=mx(l,a),s=J({}),c=J(null),u=J(null),d=J(null),p=J(null),m=J(null),g=J(null),v=J(null),y=J(null),b=I(()=>ax(J1(e.format,e.picker,e.showTime,e.use12Hours))),[S,$]=Mt(0,{value:We(e,\"activePickerIndex\")}),w=J(null),C=I(()=>{const{disabled:Oe}=e;return Array.isArray(Oe)?Oe:[Oe||!1,Oe||!1]}),[_,x]=Mt(null,{value:We(e,\"value\"),defaultValue:e.defaultValue,postState:Oe=>e.picker===\"time\"&&!e.order?Oe:Rb(Oe,e.generateConfig)}),[P,O,M]=Tk({values:_,picker:We(e,\"picker\"),defaultDates:e.defaultPickerValue,generateConfig:We(e,\"generateConfig\")}),[E,R]=Mt(_.value,{postState:Oe=>{let Ye=Oe;if(C.value[0]&&C.value[1])return Ye;for(let Xe=0;Xe<2;Xe+=1)C.value[Xe]&&!yt(Ye,Xe)&&!yt(e.allowEmpty,Xe)&&(Ye=so(Ye,e.generateConfig.getNow(),Xe));return Ye}}),[D,z]=Mt([e.picker,e.picker],{value:We(e,\"mode\")});pe(()=>e.picker,()=>{z([e.picker,e.picker])});const T=(Oe,Ye)=>{var Xe;z(Oe),(Xe=e.onPanelChange)===null||Xe===void 0||Xe.call(e,Ye,Oe)},[k,B]=_k({picker:We(e,\"picker\"),selectedValue:E,locale:We(e,\"locale\"),disabled:C,disabledDate:We(e,\"disabledDate\"),generateConfig:We(e,\"generateConfig\")},s),[L,N]=Mt(!1,{value:We(e,\"open\"),defaultValue:e.defaultOpen,postState:Oe=>C.value[S.value]?!1:Oe,onChange:Oe=>{var Ye;(Ye=e.onOpenChange)===null||Ye===void 0||Ye.call(e,Oe),!Oe&&w.value&&w.value.onClose&&w.value.onClose()}}),F=I(()=>L.value&&S.value===0),j=I(()=>L.value&&S.value===1),H=J(0),K=J(0),G=J(0),{width:V}=Va(c);pe([L,V],()=>{!L.value&&c.value&&(G.value=V.value)});const{width:q}=Va(u),{width:Z}=Va(y),{width:oe}=Va(d),{width:re}=Va(m);pe([S,L,q,Z,oe,re,()=>e.direction],()=>{K.value=0,S.value?d.value&&m.value&&(K.value=oe.value+re.value,q.value&&Z.value&&K.value>q.value-Z.value-(e.direction===\"rtl\"||y.value.offsetLeft>K.value?0:y.value.offsetLeft)&&(H.value=K.value)):S.value===0&&(H.value=0)},{immediate:!0});const Y=J();function Q(Oe,Ye){if(Oe)clearTimeout(Y.value),s.value[Ye]=!0,$(Ye),N(Oe),L.value||M(null,Ye);else if(S.value===Ye){N(Oe);const Xe=s.value;Y.value=setTimeout(()=>{Xe===s.value&&(s.value={})})}}function ce(Oe){Q(!0,Oe),setTimeout(()=>{const Ye=[g,v][Oe];Ye.value&&Ye.value.focus()},0)}function ue(Oe,Ye){let Xe=Oe,It=yt(Xe,0),tn=yt(Xe,1);const{generateConfig:jt,locale:Rn,picker:pn,order:Ro,onCalendarChange:Vn,allowEmpty:oo,onChange:Nt,showTime:$o}=e;It&&tn&&jt.isAfter(It,tn)&&(pn===\"week\"&&!ox(jt,Rn.locale,It,tn)||pn===\"quarter\"&&!nx(jt,It,tn)||pn!==\"week\"&&pn!==\"quarter\"&&pn!==\"time\"&&!($o?na(jt,It,tn):sr(jt,It,tn))?(Ye===0?(Xe=[It,null],tn=null):(It=null,Xe=[null,tn]),s.value={[Ye]:!0}):(pn!==\"time\"||Ro!==!1)&&(Xe=Rb(Xe,jt))),R(Xe);const ro=Xe&&Xe[0]?vn(Xe[0],{generateConfig:jt,locale:Rn,format:b.value[0]}):\"\",$r=Xe&&Xe[1]?vn(Xe[1],{generateConfig:jt,locale:Rn,format:b.value[0]}):\"\";Vn&&Vn(Xe,[ro,$r],{range:Ye===0?\"start\":\"end\"});const Cr=kb(It,0,C.value,oo),Co=kb(tn,1,C.value,oo);(Xe===null||Cr&&Co)&&(x(Xe),Nt&&(!na(jt,yt(_.value,0),It)||!na(jt,yt(_.value,1),tn))&&Nt(Xe,[ro,$r]));let xo=null;Ye===0&&!C.value[1]?xo=1:Ye===1&&!C.value[0]&&(xo=0),xo!==null&&xo!==S.value&&(!s.value[xo]||!yt(Xe,xo))&&yt(Xe,Ye)?ce(xo):Q(!1,Ye)}const be=Oe=>L&&w.value&&w.value.onKeydown?w.value.onKeydown(Oe):!1,Ce={formatList:b,generateConfig:We(e,\"generateConfig\"),locale:We(e,\"locale\")},[ge,Se]=au(I(()=>yt(E.value,0)),Ce),[X,U]=au(I(()=>yt(E.value,1)),Ce),ie=(Oe,Ye)=>{const Xe=rx(Oe,{locale:e.locale,formatList:b.value,generateConfig:e.generateConfig});Xe&&!(Ye===0?k:B)(Xe)&&(R(so(E.value,Xe,Ye)),M(Xe,Ye))},[ve,me,he]=kp({valueTexts:ge,onTextChange:Oe=>ie(Oe,0)}),[se,te,ae]=kp({valueTexts:X,onTextChange:Oe=>ie(Oe,1)}),[fe,Ie]=ht(null),[Te,Re]=ht(null),[$e,xe,_e]=Np(ve,Ce),[Me,He,Ae]=Np(se,Ce),je=Oe=>{Re(so(E.value,Oe,S.value)),S.value===0?xe(Oe):He(Oe)},at=()=>{Re(so(E.value,null,S.value)),S.value===0?_e():Ae()},ft=(Oe,Ye)=>({forwardKeydown:be,onBlur:Xe=>{var It;(It=e.onBlur)===null||It===void 0||It.call(e,Xe)},isClickOutside:Xe=>!tx([u.value,d.value,p.value,c.value],Xe),onFocus:Xe=>{var It;$(Oe),(It=e.onFocus)===null||It===void 0||It.call(e,Xe)},triggerOpen:Xe=>{Q(Xe,Oe)},onSubmit:()=>{if(!E.value||e.disabledDate&&e.disabledDate(E.value[Oe]))return!1;ue(E.value,Oe),Ye()},onCancel:()=>{Q(!1,Oe),R(_.value),Ye()}}),[st,{focused:pt,typing:gt}]=Rp(h(h({},ft(0,he)),{blurToCancel:r,open:F,value:ve,onKeydown:(Oe,Ye)=>{var Xe;(Xe=e.onKeydown)===null||Xe===void 0||Xe.call(e,Oe,Ye)}})),[Ut,{focused:en,typing:ln}]=Rp(h(h({},ft(1,ae)),{blurToCancel:r,open:j,value:se,onKeydown:(Oe,Ye)=>{var Xe;(Xe=e.onKeydown)===null||Xe===void 0||Xe.call(e,Oe,Ye)}})),Ht=Oe=>{var Ye;(Ye=e.onClick)===null||Ye===void 0||Ye.call(e,Oe),!L.value&&!g.value.contains(Oe.target)&&!v.value.contains(Oe.target)&&(C.value[0]?C.value[1]||ce(1):ce(0))},bn=Oe=>{var Ye;(Ye=e.onMousedown)===null||Ye===void 0||Ye.call(e,Oe),L.value&&(pt.value||en.value)&&!g.value.contains(Oe.target)&&!v.value.contains(Oe.target)&&Oe.preventDefault()},An=I(()=>{var Oe;return!((Oe=_.value)===null||Oe===void 0)&&Oe[0]?vn(_.value[0],{locale:e.locale,format:\"YYYYMMDDHHmmss\",generateConfig:e.generateConfig}):\"\"}),no=I(()=>{var Oe;return!((Oe=_.value)===null||Oe===void 0)&&Oe[1]?vn(_.value[1],{locale:e.locale,format:\"YYYYMMDDHHmmss\",generateConfig:e.generateConfig}):\"\"});pe([L,ge,X],()=>{L.value||(R(_.value),!ge.value.length||ge.value[0]===\"\"?me(\"\"):Se.value!==ve.value&&he(),!X.value.length||X.value[0]===\"\"?te(\"\"):U.value!==se.value&&ae())}),pe([An,no],()=>{R(_.value)}),o({focus:()=>{g.value&&g.value.focus()},blur:()=>{g.value&&g.value.blur(),v.value&&v.value.blur()}});const So=I(()=>L.value&&Te.value&&Te.value[0]&&Te.value[1]&&e.generateConfig.isAfter(Te.value[1],Te.value[0])?Te.value:null);function Dn(){let Oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Ye=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{generateConfig:Xe,showTime:It,dateRender:tn,direction:jt,disabledTime:Rn,prefixCls:pn,locale:Ro}=e;let Vn=It;if(It&&typeof It==\"object\"&&It.defaultValue){const Nt=It.defaultValue;Vn=h(h({},It),{defaultValue:yt(Nt,S.value)||void 0})}let oo=null;return tn&&(oo=Nt=>{let{current:$o,today:ro}=Nt;return tn({current:$o,today:ro,info:{range:S.value?\"end\":\"start\"}})}),f(vk,{value:{inRange:!0,panelPosition:Oe,rangedValue:fe.value||E.value,hoverRangedValue:So.value}},{default:()=>[f(sg,A(A(A({},e),Ye),{},{dateRender:oo,showTime:Vn,mode:D.value[S.value],generateConfig:Xe,style:void 0,direction:jt,disabledDate:S.value===0?k:B,disabledTime:Nt=>Rn?Rn(Nt,S.value===0?\"start\":\"end\"):!1,class:le({[`${pn}-panel-focused`]:S.value===0?!gt.value:!ln.value}),value:yt(E.value,S.value),locale:Ro,tabIndex:-1,onPanelChange:(Nt,$o)=>{S.value===0&&_e(!0),S.value===1&&Ae(!0),T(so(D.value,$o,S.value),so(E.value,Nt,S.value));let ro=Nt;Oe===\"right\"&&D.value[S.value]===$o&&(ro=ei(ro,$o,Xe,-1)),M(ro,S.value)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:S.value===0?yt(E.value,1):yt(E.value,0)}),null)]})}const Yr=(Oe,Ye)=>{const Xe=so(E.value,Oe,S.value);Ye===\"submit\"||Ye!==\"key\"&&!r.value?(ue(Xe,S.value),S.value===0?_e():Ae()):R(Xe)};return Vv({operationRef:w,hideHeader:I(()=>e.picker===\"time\"),onDateMouseenter:je,onDateMouseleave:at,hideRanges:I(()=>!0),onSelect:Yr,open:L}),()=>{const{prefixCls:Oe=\"rc-picker\",id:Ye,popupStyle:Xe,dropdownClassName:It,transitionName:tn,dropdownAlign:jt,getPopupContainer:Rn,generateConfig:pn,locale:Ro,placeholder:Vn,autofocus:oo,picker:Nt=\"date\",showTime:$o,separator:ro=\"~\",disabledDate:$r,panelRender:Cr,allowClear:Co,suffixIcon:Rl,clearIcon:xo,inputReadOnly:Od,renderExtraFooter:hI,onMouseenter:bI,onMouseleave:yI,onMouseup:SI,onOk:nh,components:$I,direction:La,autocomplete:oh=\"off\"}=e,CI=La===\"rtl\"?{right:`${K.value}px`}:{left:`${K.value}px`};function xI(){let kn;const xr=ux(Oe,D.value[S.value],hI),ih=dx({prefixCls:Oe,components:$I,needConfirmButton:r.value,okDisabled:!yt(E.value,S.value)||$r&&$r(E.value[S.value]),locale:Ro,onOk:()=>{yt(E.value,S.value)&&(ue(E.value,S.value),nh&&nh(E.value))}});if(Nt!==\"time\"&&!$o){const wr=S.value===0?P.value:O.value,II=ei(wr,Nt,pn),Dd=D.value[S.value]===Nt,sh=Dn(Dd?\"left\":!1,{pickerValue:wr,onPickerValueChange:Rd=>{M(Rd,S.value)}}),ch=Dn(\"right\",{pickerValue:II,onPickerValueChange:Rd=>{M(ei(Rd,Nt,pn,-1),S.value)}});La===\"rtl\"?kn=f(Ve,null,[ch,Dd&&sh]):kn=f(Ve,null,[sh,Dd&&ch])}else kn=Dn();let Ad=f(\"div\",{class:`${Oe}-panel-layout`},[f(px,{prefixCls:Oe,presets:i.value,onClick:wr=>{ue(wr,null),Q(!1,S.value)},onHover:wr=>{Ie(wr)}},null),f(\"div\",null,[f(\"div\",{class:`${Oe}-panels`},[kn]),(xr||ih)&&f(\"div\",{class:`${Oe}-footer`},[xr,ih])])]);return Cr&&(Ad=Cr(Ad)),f(\"div\",{class:`${Oe}-panel-container`,style:{marginLeft:`${H.value}px`},ref:u,onMousedown:wr=>{wr.preventDefault()}},[Ad])}const wI=f(\"div\",{class:le(`${Oe}-range-wrapper`,`${Oe}-${Nt}-range-wrapper`),style:{minWidth:`${G.value}px`}},[f(\"div\",{ref:y,class:`${Oe}-range-arrow`,style:CI},null),xI()]);let rh;Rl&&(rh=f(\"span\",{class:`${Oe}-suffix`},[Rl]));let lh;Co&&(yt(_.value,0)&&!C.value[0]||yt(_.value,1)&&!C.value[1])&&(lh=f(\"span\",{onMousedown:kn=>{kn.preventDefault(),kn.stopPropagation()},onMouseup:kn=>{kn.preventDefault(),kn.stopPropagation();let xr=_.value;C.value[0]||(xr=so(xr,null,0)),C.value[1]||(xr=so(xr,null,1)),ue(xr,null),Q(!1,S.value)},class:`${Oe}-clear`},[xo||f(\"span\",{class:`${Oe}-clear-btn`},null)]));const ah={size:ex(Nt,b.value[0],pn)};let Ed=0,Md=0;d.value&&p.value&&m.value&&(S.value===0?Md=d.value.offsetWidth:(Ed=K.value,Md=p.value.offsetWidth));const _I=La===\"rtl\"?{right:`${Ed}px`}:{left:`${Ed}px`};return f(\"div\",A({ref:c,class:le(Oe,`${Oe}-range`,n.class,{[`${Oe}-disabled`]:C.value[0]&&C.value[1],[`${Oe}-focused`]:S.value===0?pt.value:en.value,[`${Oe}-rtl`]:La===\"rtl\"}),style:n.style,onClick:Ht,onMouseenter:bI,onMouseleave:yI,onMousedown:bn,onMouseup:SI},ix(e)),[f(\"div\",{class:le(`${Oe}-input`,{[`${Oe}-input-active`]:S.value===0,[`${Oe}-input-placeholder`]:!!$e.value}),ref:d},[f(\"input\",A(A(A({id:Ye,disabled:C.value[0],readonly:Od||typeof b.value[0]==\"function\"||!gt.value,value:$e.value||ve.value,onInput:kn=>{me(kn.target.value)},autofocus:oo,placeholder:yt(Vn,0)||\"\",ref:g},st.value),ah),{},{autocomplete:oh}),null)]),f(\"div\",{class:`${Oe}-range-separator`,ref:m},[ro]),f(\"div\",{class:le(`${Oe}-input`,{[`${Oe}-input-active`]:S.value===1,[`${Oe}-input-placeholder`]:!!Me.value}),ref:p},[f(\"input\",A(A(A({disabled:C.value[1],readonly:Od||typeof b.value[0]==\"function\"||!ln.value,value:Me.value||se.value,onInput:kn=>{te(kn.target.value)},placeholder:yt(Vn,1)||\"\",ref:v},Ut.value),ah),{},{autocomplete:oh}),null)]),f(\"div\",{class:`${Oe}-active-bar`,style:h(h({},_I),{width:`${Md}px`,position:\"absolute\"})},null),rh,lh,f(fx,{visible:L.value,popupStyle:Xe,prefixCls:Oe,dropdownClassName:It,dropdownAlign:jt,getPopupContainer:Rn,transitionName:tn,range:!0,direction:La},{default:()=>[f(\"div\",{style:{pointerEvents:\"none\",position:\"absolute\",top:0,bottom:0,left:0,right:0}},null)],popupElement:()=>wI})])}}})}const Rk=Dk();var kk=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Nk={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:W.any,required:Boolean},yx=ne({compatConfig:{MODE:3},name:\"Checkbox\",inheritAttrs:!1,props:Ze(Nk,{prefixCls:\"rc-checkbox\",type:\"checkbox\",defaultChecked:!1}),emits:[\"click\",\"change\"],setup(e,t){let{attrs:n,emit:o,expose:r}=t;const l=J(e.checked===void 0?e.defaultChecked:e.checked),a=J();pe(()=>e.checked,()=>{l.value=e.checked}),r({focus(){var u;(u=a.value)===null||u===void 0||u.focus()},blur(){var u;(u=a.value)===null||u===void 0||u.blur()}});const i=J(),s=u=>{if(e.disabled)return;e.checked===void 0&&(l.value=u.target.checked),u.shiftKey=i.value;const d={target:h(h({},e),{checked:u.target.checked}),stopPropagation(){u.stopPropagation()},preventDefault(){u.preventDefault()},nativeEvent:u};e.checked!==void 0&&(a.value.checked=!!e.checked),o(\"change\",d),i.value=!1},c=u=>{o(\"click\",u),i.value=u.shiftKey};return()=>{const{prefixCls:u,name:d,id:p,type:m,disabled:g,readonly:v,tabindex:y,autofocus:b,value:S,required:$}=e,w=kk(e,[\"prefixCls\",\"name\",\"id\",\"type\",\"disabled\",\"readonly\",\"tabindex\",\"autofocus\",\"value\",\"required\"]),{class:C,onFocus:_,onBlur:x,onKeydown:P,onKeypress:O,onKeyup:M}=n,E=h(h({},w),n),R=Object.keys(E).reduce((T,k)=>((k.startsWith(\"data-\")||k.startsWith(\"aria-\")||k===\"role\")&&(T[k]=E[k]),T),{}),D=le(u,C,{[`${u}-checked`]:l.value,[`${u}-disabled`]:g}),z=h(h({name:d,id:p,type:m,readonly:v,disabled:g,tabindex:y,class:`${u}-input`,checked:!!l.value,autofocus:b,value:S},R),{onChange:s,onClick:c,onFocus:_,onBlur:x,onKeydown:P,onKeypress:O,onKeyup:M,required:$});return f(\"span\",{class:D},[f(\"input\",A({ref:a},z),null),f(\"span\",{class:`${u}-inner`},null)])}}}),Sx=Symbol(\"radioGroupContextKey\"),Bk=e=>{Qe(Sx,e)},Lk=()=>Je(Sx,void 0),$x=Symbol(\"radioOptionTypeContextKey\"),Fk=e=>{Qe($x,e)},zk=()=>Je($x,void 0),Hk=new lt(\"antRadioEffect\",{\"0%\":{transform:\"scale(1)\",opacity:.5},\"100%\":{transform:\"scale(1.6)\",opacity:0}}),jk=e=>{const{componentCls:t,antCls:n}=e,o=`${t}-group`;return{[o]:h(h({},Ue(e)),{display:\"inline-block\",fontSize:0,[`&${o}-rtl`]:{direction:\"rtl\"},[`${n}-badge ${n}-badge-count`]:{zIndex:1},[`> ${n}-badge:not(:first-child) > ${n}-button-wrapper`]:{borderInlineStart:\"none\"}})}},Wk=e=>{const{componentCls:t,radioWrapperMarginRight:n,radioCheckedColor:o,radioSize:r,motionDurationSlow:l,motionDurationMid:a,motionEaseInOut:i,motionEaseInOutCirc:s,radioButtonBg:c,colorBorder:u,lineWidth:d,radioDotSize:p,colorBgContainerDisabled:m,colorTextDisabled:g,paddingXS:v,radioDotDisabledColor:y,lineType:b,radioDotDisabledSize:S,wireframe:$,colorWhite:w}=e,C=`${t}-inner`;return{[`${t}-wrapper`]:h(h({},Ue(e)),{position:\"relative\",display:\"inline-flex\",alignItems:\"baseline\",marginInlineStart:0,marginInlineEnd:n,cursor:\"pointer\",[`&${t}-wrapper-rtl`]:{direction:\"rtl\"},\"&-disabled\":{cursor:\"not-allowed\",color:e.colorTextDisabled},\"&::after\":{display:\"inline-block\",width:0,overflow:\"hidden\",content:'\"\\\\a0\"'},[`${t}-checked::after`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:\"100%\",height:\"100%\",border:`${d}px ${b} ${o}`,borderRadius:\"50%\",visibility:\"hidden\",animationName:Hk,animationDuration:l,animationTimingFunction:i,animationFillMode:\"both\",content:'\"\"'},[t]:h(h({},Ue(e)),{position:\"relative\",display:\"inline-block\",outline:\"none\",cursor:\"pointer\",alignSelf:\"center\"}),[`${t}-wrapper:hover &,\n        &:hover ${C}`]:{borderColor:o},[`${t}-input:focus-visible + ${C}`]:h({},dr(e)),[`${t}:hover::after, ${t}-wrapper:hover &::after`]:{visibility:\"visible\"},[`${t}-inner`]:{\"&::after\":{boxSizing:\"border-box\",position:\"absolute\",insetBlockStart:\"50%\",insetInlineStart:\"50%\",display:\"block\",width:r,height:r,marginBlockStart:r/-2,marginInlineStart:r/-2,backgroundColor:$?o:w,borderBlockStart:0,borderInlineStart:0,borderRadius:r,transform:\"scale(0)\",opacity:0,transition:`all ${l} ${s}`,content:'\"\"'},boxSizing:\"border-box\",position:\"relative\",insetBlockStart:0,insetInlineStart:0,display:\"block\",width:r,height:r,backgroundColor:c,borderColor:u,borderStyle:\"solid\",borderWidth:d,borderRadius:\"50%\",transition:`all ${a}`},[`${t}-input`]:{position:\"absolute\",insetBlockStart:0,insetInlineEnd:0,insetBlockEnd:0,insetInlineStart:0,zIndex:1,cursor:\"pointer\",opacity:0},[`${t}-checked`]:{[C]:{borderColor:o,backgroundColor:$?c:o,\"&::after\":{transform:`scale(${p/r})`,opacity:1,transition:`all ${l} ${s}`}}},[`${t}-disabled`]:{cursor:\"not-allowed\",[C]:{backgroundColor:m,borderColor:u,cursor:\"not-allowed\",\"&::after\":{backgroundColor:y}},[`${t}-input`]:{cursor:\"not-allowed\"},[`${t}-disabled + span`]:{color:g,cursor:\"not-allowed\"},[`&${t}-checked`]:{[C]:{\"&::after\":{transform:`scale(${S/r})`}}}},[`span${t} + *`]:{paddingInlineStart:v,paddingInlineEnd:v}})}},Vk=e=>{const{radioButtonColor:t,controlHeight:n,componentCls:o,lineWidth:r,lineType:l,colorBorder:a,motionDurationSlow:i,motionDurationMid:s,radioButtonPaddingHorizontal:c,fontSize:u,radioButtonBg:d,fontSizeLG:p,controlHeightLG:m,controlHeightSM:g,paddingXS:v,borderRadius:y,borderRadiusSM:b,borderRadiusLG:S,radioCheckedColor:$,radioButtonCheckedBg:w,radioButtonHoverColor:C,radioButtonActiveColor:_,radioSolidCheckedColor:x,colorTextDisabled:P,colorBgContainerDisabled:O,radioDisabledButtonCheckedColor:M,radioDisabledButtonCheckedBg:E}=e;return{[`${o}-button-wrapper`]:{position:\"relative\",display:\"inline-block\",height:n,margin:0,paddingInline:c,paddingBlock:0,color:t,fontSize:u,lineHeight:`${n-r*2}px`,background:d,border:`${r}px ${l} ${a}`,borderBlockStartWidth:r+.02,borderInlineStartWidth:0,borderInlineEndWidth:r,cursor:\"pointer\",transition:[`color ${s}`,`background ${s}`,`border-color ${s}`,`box-shadow ${s}`].join(\",\"),a:{color:t},[`> ${o}-button`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,zIndex:-1,width:\"100%\",height:\"100%\"},\"&:not(:first-child)\":{\"&::before\":{position:\"absolute\",insetBlockStart:-r,insetInlineStart:-r,display:\"block\",boxSizing:\"content-box\",width:1,height:\"100%\",paddingBlock:r,paddingInline:0,backgroundColor:a,transition:`background-color ${i}`,content:'\"\"'}},\"&:first-child\":{borderInlineStart:`${r}px ${l} ${a}`,borderStartStartRadius:y,borderEndStartRadius:y},\"&:last-child\":{borderStartEndRadius:y,borderEndEndRadius:y},\"&:first-child:last-child\":{borderRadius:y},[`${o}-group-large &`]:{height:m,fontSize:p,lineHeight:`${m-r*2}px`,\"&:first-child\":{borderStartStartRadius:S,borderEndStartRadius:S},\"&:last-child\":{borderStartEndRadius:S,borderEndEndRadius:S}},[`${o}-group-small &`]:{height:g,paddingInline:v-r,paddingBlock:0,lineHeight:`${g-r*2}px`,\"&:first-child\":{borderStartStartRadius:b,borderEndStartRadius:b},\"&:last-child\":{borderStartEndRadius:b,borderEndEndRadius:b}},\"&:hover\":{position:\"relative\",color:$},\"&:has(:focus-visible)\":h({},dr(e)),[`${o}-inner, input[type='checkbox'], input[type='radio']`]:{width:0,height:0,opacity:0,pointerEvents:\"none\"},[`&-checked:not(${o}-button-wrapper-disabled)`]:{zIndex:1,color:$,background:w,borderColor:$,\"&::before\":{backgroundColor:$},\"&:first-child\":{borderColor:$},\"&:hover\":{color:C,borderColor:C,\"&::before\":{backgroundColor:C}},\"&:active\":{color:_,borderColor:_,\"&::before\":{backgroundColor:_}}},[`${o}-group-solid &-checked:not(${o}-button-wrapper-disabled)`]:{color:x,background:$,borderColor:$,\"&:hover\":{color:x,background:C,borderColor:C},\"&:active\":{color:x,background:_,borderColor:_}},\"&-disabled\":{color:P,backgroundColor:O,borderColor:a,cursor:\"not-allowed\",\"&:first-child, &:hover\":{color:P,backgroundColor:O,borderColor:a}},[`&-disabled${o}-button-wrapper-checked`]:{color:M,backgroundColor:E,borderColor:a,boxShadow:\"none\"}}}},Cx=Ge(\"Radio\",e=>{const{padding:t,lineWidth:n,controlItemBgActiveDisabled:o,colorTextDisabled:r,colorBgContainer:l,fontSizeLG:a,controlOutline:i,colorPrimaryHover:s,colorPrimaryActive:c,colorText:u,colorPrimary:d,marginXS:p,controlOutlineWidth:m,colorTextLightSolid:g,wireframe:v}=e,y=`0 0 0 ${m}px ${i}`,b=y,S=a,$=4,w=S-$*2,C=v?w:S-($+n)*2,_=d,x=u,P=s,O=c,M=t-n,D=Le(e,{radioFocusShadow:y,radioButtonFocusShadow:b,radioSize:S,radioDotSize:C,radioDotDisabledSize:w,radioCheckedColor:_,radioDotDisabledColor:r,radioSolidCheckedColor:g,radioButtonBg:l,radioButtonCheckedBg:l,radioButtonColor:x,radioButtonHoverColor:P,radioButtonActiveColor:O,radioButtonPaddingHorizontal:M,radioDisabledButtonCheckedBg:o,radioDisabledButtonCheckedColor:r,radioWrapperMarginRight:p});return[jk(D),Wk(D),Vk(D)]});var Kk=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const xx=()=>({prefixCls:String,checked:ye(),disabled:ye(),isGroup:ye(),value:W.any,name:String,id:String,autofocus:ye(),onChange:de(),onFocus:de(),onBlur:de(),onClick:de(),\"onUpdate:checked\":de(),\"onUpdate:value\":de()}),In=ne({compatConfig:{MODE:3},name:\"ARadio\",inheritAttrs:!1,props:xx(),setup(e,t){let{emit:n,expose:o,slots:r,attrs:l}=t;const a=Jt(),i=un.useInject(),s=zk(),c=Lk(),u=zn(),d=I(()=>{var P;return(P=v.value)!==null&&P!==void 0?P:u.value}),p=J(),{prefixCls:m,direction:g,disabled:v}=Pe(\"radio\",e),y=I(()=>c?.optionType.value===\"button\"||s===\"button\"?`${m.value}-button`:m.value),b=zn(),[S,$]=Cx(m);o({focus:()=>{p.value.focus()},blur:()=>{p.value.blur()}});const _=P=>{const O=P.target.checked;n(\"update:checked\",O),n(\"update:value\",O),n(\"change\",P),a.onFieldChange()},x=P=>{n(\"change\",P),c&&c.onChange&&c.onChange(P)};return()=>{var P;const O=c,{prefixCls:M,id:E=a.id.value}=e,R=Kk(e,[\"prefixCls\",\"id\"]),D=h(h({prefixCls:y.value,id:E},ot(R,[\"onUpdate:checked\",\"onUpdate:value\"])),{disabled:(P=v.value)!==null&&P!==void 0?P:b.value});O?(D.name=O.name.value,D.onChange=x,D.checked=e.value===O.value.value,D.disabled=d.value||O.disabled.value):D.onChange=_;const z=le({[`${y.value}-wrapper`]:!0,[`${y.value}-wrapper-checked`]:D.checked,[`${y.value}-wrapper-disabled`]:D.disabled,[`${y.value}-wrapper-rtl`]:g.value===\"rtl\",[`${y.value}-wrapper-in-form-item`]:i.isFormItemInput},l.class,$.value);return S(f(\"label\",A(A({},l),{},{class:z}),[f(yx,A(A({},D),{},{type:\"radio\",ref:p}),null),r.default&&f(\"span\",null,[r.default()])]))}}}),Gk=()=>({prefixCls:String,value:W.any,size:ke(),options:ct(),disabled:ye(),name:String,buttonStyle:ke(\"outline\"),id:String,optionType:ke(\"default\"),onChange:de(),\"onUpdate:value\":de()}),ug=ne({compatConfig:{MODE:3},name:\"ARadioGroup\",inheritAttrs:!1,props:Gk(),setup(e,t){let{slots:n,emit:o,attrs:r}=t;const l=Jt(),{prefixCls:a,direction:i,size:s}=Pe(\"radio\",e),[c,u]=Cx(a),d=J(e.value),p=J(!1);return pe(()=>e.value,g=>{d.value=g,p.value=!1}),Bk({onChange:g=>{const v=d.value,{value:y}=g.target;\"value\"in e||(d.value=y),!p.value&&y!==v&&(p.value=!0,o(\"update:value\",y),o(\"change\",g),l.onFieldChange()),it(()=>{p.value=!1})},value:d,disabled:I(()=>e.disabled),name:I(()=>e.name),optionType:I(()=>e.optionType)}),()=>{var g;const{options:v,buttonStyle:y,id:b=l.id.value}=e,S=`${a.value}-group`,$=le(S,`${S}-${y}`,{[`${S}-${s.value}`]:s.value,[`${S}-rtl`]:i.value===\"rtl\"},r.class,u.value);let w=null;return v&&v.length>0?w=v.map(C=>{if(typeof C==\"string\"||typeof C==\"number\")return f(In,{key:C,prefixCls:a.value,disabled:e.disabled,value:C,checked:d.value===C},{default:()=>[C]});const{value:_,disabled:x,label:P}=C;return f(In,{key:`radio-group-value-options-${_}`,prefixCls:a.value,disabled:x||e.disabled,value:_,checked:d.value===_},{default:()=>[P]})}):w=(g=n.default)===null||g===void 0?void 0:g.call(n),c(f(\"div\",A(A({},r),{},{class:$,id:b}),[w]))}}}),iu=ne({compatConfig:{MODE:3},name:\"ARadioButton\",inheritAttrs:!1,props:xx(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r}=Pe(\"radio\",e);return Fk(\"button\"),()=>{var l;return f(In,A(A(A({},o),e),{},{prefixCls:r.value}),{default:()=>[(l=n.default)===null||l===void 0?void 0:l.call(n)]})}}});In.Group=ug;In.Button=iu;In.install=function(e){return e.component(In.name,In),e.component(In.Group.name,In.Group),e.component(In.Button.name,In.Button),e};const Xk=10,Uk=20;function wx(e){const{fullscreen:t,validRange:n,generateConfig:o,locale:r,prefixCls:l,value:a,onChange:i,divRef:s}=e,c=o.getYear(a||o.getNow());let u=c-Xk,d=u+Uk;n&&(u=o.getYear(n[0]),d=o.getYear(n[1])+1);const p=r&&r.year===\"年\"?\"年\":\"\",m=[];for(let g=u;g<d;g++)m.push({label:`${g}${p}`,value:g});return f(nn,{size:t?void 0:\"small\",options:m,value:c,class:`${l}-year-select`,onChange:g=>{let v=o.setYear(a,g);if(n){const[y,b]=n,S=o.getYear(v),$=o.getMonth(v);S===o.getYear(b)&&$>o.getMonth(b)&&(v=o.setMonth(v,o.getMonth(b))),S===o.getYear(y)&&$<o.getMonth(y)&&(v=o.setMonth(v,o.getMonth(y)))}i(v)},getPopupContainer:()=>s.value},null)}wx.inheritAttrs=!1;function _x(e){const{prefixCls:t,fullscreen:n,validRange:o,value:r,generateConfig:l,locale:a,onChange:i,divRef:s}=e,c=l.getMonth(r||l.getNow());let u=0,d=11;if(o){const[g,v]=o,y=l.getYear(r);l.getYear(v)===y&&(d=l.getMonth(v)),l.getYear(g)===y&&(u=l.getMonth(g))}const p=a.shortMonths||l.locale.getShortMonths(a.locale),m=[];for(let g=u;g<=d;g+=1)m.push({label:p[g],value:g});return f(nn,{size:n?void 0:\"small\",class:`${t}-month-select`,value:c,options:m,onChange:g=>{i(l.setMonth(r,g))},getPopupContainer:()=>s.value},null)}_x.inheritAttrs=!1;function Ix(e){const{prefixCls:t,locale:n,mode:o,fullscreen:r,onModeChange:l}=e;return f(ug,{onChange:a=>{let{target:{value:i}}=a;l(i)},value:o,size:r?void 0:\"small\",class:`${t}-mode-switch`},{default:()=>[f(iu,{value:\"month\"},{default:()=>[n.month]}),f(iu,{value:\"year\"},{default:()=>[n.year]})]})}Ix.inheritAttrs=!1;const Yk=ne({name:\"CalendarHeader\",inheritAttrs:!1,props:[\"mode\",\"prefixCls\",\"value\",\"validRange\",\"generateConfig\",\"locale\",\"mode\",\"fullscreen\"],setup(e,t){let{attrs:n}=t;const o=J(null),r=un.useInject();return un.useProvide(r,{isFormItemInput:!1}),()=>{const l=h(h({},e),n),{prefixCls:a,fullscreen:i,mode:s,onChange:c,onModeChange:u}=l,d=h(h({},l),{fullscreen:i,divRef:o});return f(\"div\",{class:`${a}-header`,ref:o},[f(wx,A(A({},d),{},{onChange:p=>{c(p,\"year\")}}),null),s===\"month\"&&f(_x,A(A({},d),{},{onChange:p=>{c(p,\"month\")}}),null),f(Ix,A(A({},d),{},{onModeChange:u}),null)])}}}),dg=e=>({\"&::-moz-placeholder\":{opacity:1},\"&::placeholder\":{color:e,userSelect:\"none\"},\"&:placeholder-shown\":{textOverflow:\"ellipsis\"}}),Aa=e=>({borderColor:e.inputBorderHoverColor,borderInlineEndWidth:e.lineWidth}),jr=e=>({borderColor:e.inputBorderHoverColor,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`,borderInlineEndWidth:e.lineWidth,outline:0}),fg=e=>({color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,boxShadow:\"none\",cursor:\"not-allowed\",opacity:1,\"&:hover\":h({},Aa(Le(e,{inputBorderHoverColor:e.colorBorder})))}),Px=e=>{const{inputPaddingVerticalLG:t,fontSizeLG:n,lineHeightLG:o,borderRadiusLG:r,inputPaddingHorizontalLG:l}=e;return{padding:`${t}px ${l}px`,fontSize:n,lineHeight:o,borderRadius:r}},pg=e=>({padding:`${e.inputPaddingVerticalSM}px ${e.controlPaddingHorizontalSM-1}px`,borderRadius:e.borderRadiusSM}),Wi=(e,t)=>{const{componentCls:n,colorError:o,colorWarning:r,colorErrorOutline:l,colorWarningOutline:a,colorErrorBorderHover:i,colorWarningBorderHover:s}=e;return{[`&-status-error:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:o,\"&:hover\":{borderColor:i},\"&:focus, &-focused\":h({},jr(Le(e,{inputBorderActiveColor:o,inputBorderHoverColor:o,controlOutline:l}))),[`${n}-prefix`]:{color:o}},[`&-status-warning:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:r,\"&:hover\":{borderColor:s},\"&:focus, &-focused\":h({},jr(Le(e,{inputBorderActiveColor:r,inputBorderHoverColor:r,controlOutline:a}))),[`${n}-prefix`]:{color:r}}}},Al=e=>h(h({position:\"relative\",display:\"inline-block\",width:\"100%\",minWidth:0,padding:`${e.inputPaddingVertical}px ${e.inputPaddingHorizontal}px`,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,backgroundColor:e.colorBgContainer,backgroundImage:\"none\",borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:e.colorBorder,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid}`},dg(e.colorTextPlaceholder)),{\"&:hover\":h({},Aa(e)),\"&:focus, &-focused\":h({},jr(e)),\"&-disabled, &[disabled]\":h({},fg(e)),\"&-borderless\":{\"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]\":{backgroundColor:\"transparent\",border:\"none\",boxShadow:\"none\"}},\"textarea&\":{maxWidth:\"100%\",height:\"auto\",minHeight:e.controlHeight,lineHeight:e.lineHeight,verticalAlign:\"bottom\",transition:`all ${e.motionDurationSlow}, height 0s`,resize:\"vertical\"},\"&-lg\":h({},Px(e)),\"&-sm\":h({},pg(e)),\"&-rtl\":{direction:\"rtl\"},\"&-textarea-rtl\":{direction:\"rtl\"}}),Tx=e=>{const{componentCls:t,antCls:n}=e;return{position:\"relative\",display:\"table\",width:\"100%\",borderCollapse:\"separate\",borderSpacing:0,\"&[class*='col-']\":{paddingInlineEnd:e.paddingXS,\"&:last-child\":{paddingInlineEnd:0}},[`&-lg ${t}, &-lg > ${t}-group-addon`]:h({},Px(e)),[`&-sm ${t}, &-sm > ${t}-group-addon`]:h({},pg(e)),[`> ${t}`]:{display:\"table-cell\",\"&:not(:first-child):not(:last-child)\":{borderRadius:0}},[`${t}-group`]:{\"&-addon, &-wrap\":{display:\"table-cell\",width:1,whiteSpace:\"nowrap\",verticalAlign:\"middle\",\"&:not(:first-child):not(:last-child)\":{borderRadius:0}},\"&-wrap > *\":{display:\"block !important\"},\"&-addon\":{position:\"relative\",padding:`0 ${e.inputPaddingHorizontal}px`,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,textAlign:\"center\",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,transition:`all ${e.motionDurationSlow}`,lineHeight:1,[`${n}-select`]:{margin:`-${e.inputPaddingVertical+1}px -${e.inputPaddingHorizontal}px`,[`&${n}-select-single:not(${n}-select-customize-input)`]:{[`${n}-select-selector`]:{backgroundColor:\"inherit\",border:`${e.lineWidth}px ${e.lineType} transparent`,boxShadow:\"none\"}},\"&-open, &-focused\":{[`${n}-select-selector`]:{color:e.colorPrimary}}},[`${n}-cascader-picker`]:{margin:`-9px -${e.inputPaddingHorizontal}px`,backgroundColor:\"transparent\",[`${n}-cascader-input`]:{textAlign:\"start\",border:0,boxShadow:\"none\"}}},\"&-addon:first-child\":{borderInlineEnd:0},\"&-addon:last-child\":{borderInlineStart:0}},[`${t}`]:{float:\"inline-start\",width:\"100%\",marginBottom:0,textAlign:\"inherit\",\"&:focus\":{zIndex:1,borderInlineEndWidth:1},\"&:hover\":{zIndex:1,borderInlineEndWidth:1,[`${t}-search-with-button &`]:{zIndex:0}}},[`> ${t}:first-child, ${t}-group-addon:first-child`]:{borderStartEndRadius:0,borderEndEndRadius:0,[`${n}-select ${n}-select-selector`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}-affix-wrapper`]:{[`&:not(:first-child) ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0},[`&:not(:last-child) ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}:last-child, ${t}-group-addon:last-child`]:{borderStartStartRadius:0,borderEndStartRadius:0,[`${n}-select ${n}-select-selector`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`${t}-affix-wrapper`]:{\"&:not(:last-child)\":{borderStartEndRadius:0,borderEndEndRadius:0,[`${t}-search &`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius}},[`&:not(:first-child), ${t}-search &:not(:first-child)`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`&${t}-group-compact`]:h(h({display:\"block\"},Mo()),{[`${t}-group-addon, ${t}-group-wrap, > ${t}`]:{\"&:not(:first-child):not(:last-child)\":{borderInlineEndWidth:e.lineWidth,\"&:hover\":{zIndex:1},\"&:focus\":{zIndex:1}}},\"& > *\":{display:\"inline-block\",float:\"none\",verticalAlign:\"top\",borderRadius:0},[`& > ${t}-affix-wrapper`]:{display:\"inline-flex\"},[`& > ${n}-picker-range`]:{display:\"inline-flex\"},\"& > *:not(:last-child)\":{marginInlineEnd:-e.lineWidth,borderInlineEndWidth:e.lineWidth},[`${t}`]:{float:\"none\"},[`& > ${n}-select > ${n}-select-selector,\n      & > ${n}-select-auto-complete ${t},\n      & > ${n}-cascader-picker ${t},\n      & > ${t}-group-wrapper ${t}`]:{borderInlineEndWidth:e.lineWidth,borderRadius:0,\"&:hover\":{zIndex:1},\"&:focus\":{zIndex:1}},[`& > ${n}-select-focused`]:{zIndex:1},[`& > ${n}-select > ${n}-select-arrow`]:{zIndex:1},[`& > *:first-child,\n      & > ${n}-select:first-child > ${n}-select-selector,\n      & > ${n}-select-auto-complete:first-child ${t},\n      & > ${n}-cascader-picker:first-child ${t}`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius},[`& > *:last-child,\n      & > ${n}-select:last-child > ${n}-select-selector,\n      & > ${n}-cascader-picker:last-child ${t},\n      & > ${n}-cascader-picker-focused:last-child ${t}`]:{borderInlineEndWidth:e.lineWidth,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius},[`& > ${n}-select-auto-complete ${t}`]:{verticalAlign:\"top\"},[`${t}-group-wrapper + ${t}-group-wrapper`]:{marginInlineStart:-e.lineWidth,[`${t}-affix-wrapper`]:{borderRadius:0}},[`${t}-group-wrapper:not(:last-child)`]:{[`&${t}-search > ${t}-group`]:{[`& > ${t}-group-addon > ${t}-search-button`]:{borderRadius:0},[`& > ${t}`]:{borderStartStartRadius:e.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:e.borderRadius}}}}),[`&&-sm ${n}-btn`]:{fontSize:e.fontSizeSM,height:e.controlHeightSM,lineHeight:\"normal\"},[`&&-lg ${n}-btn`]:{fontSize:e.fontSizeLG,height:e.controlHeightLG,lineHeight:\"normal\"},[`&&-lg ${n}-select-single ${n}-select-selector`]:{height:`${e.controlHeightLG}px`,[`${n}-select-selection-item, ${n}-select-selection-placeholder`]:{lineHeight:`${e.controlHeightLG-2}px`},[`${n}-select-selection-search-input`]:{height:`${e.controlHeightLG}px`}},[`&&-sm ${n}-select-single ${n}-select-selector`]:{height:`${e.controlHeightSM}px`,[`${n}-select-selection-item, ${n}-select-selection-placeholder`]:{lineHeight:`${e.controlHeightSM-2}px`},[`${n}-select-selection-search-input`]:{height:`${e.controlHeightSM}px`}}}},qk=e=>{const{componentCls:t,controlHeightSM:n,lineWidth:o}=e,l=(n-o*2-16)/2;return{[t]:h(h(h(h({},Ue(e)),Al(e)),Wi(e,t)),{'&[type=\"color\"]':{height:e.controlHeight,[`&${t}-lg`]:{height:e.controlHeightLG},[`&${t}-sm`]:{height:n,paddingTop:l,paddingBottom:l}}})}},Zk=e=>{const{componentCls:t}=e;return{[`${t}-clear-icon`]:{margin:0,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,verticalAlign:-1,cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,\"&:hover\":{color:e.colorTextTertiary},\"&:active\":{color:e.colorText},\"&-hidden\":{visibility:\"hidden\"},\"&-has-suffix\":{margin:`0 ${e.inputAffixPadding}px`}},\"&-textarea-with-clear-btn\":{padding:\"0 !important\",border:\"0 !important\",[`${t}-clear-icon`]:{position:\"absolute\",insetBlockStart:e.paddingXS,insetInlineEnd:e.paddingXS,zIndex:1}}}},Qk=e=>{const{componentCls:t,inputAffixPadding:n,colorTextDescription:o,motionDurationSlow:r,colorIcon:l,colorIconHover:a,iconCls:i}=e;return{[`${t}-affix-wrapper`]:h(h(h(h(h({},Al(e)),{display:\"inline-flex\",[`&:not(${t}-affix-wrapper-disabled):hover`]:h(h({},Aa(e)),{zIndex:1,[`${t}-search-with-button &`]:{zIndex:0}}),\"&-focused, &:focus\":{zIndex:1},\"&-disabled\":{[`${t}[disabled]`]:{background:\"transparent\"}},[`> input${t}`]:{padding:0,fontSize:\"inherit\",border:\"none\",borderRadius:0,outline:\"none\",\"&:focus\":{boxShadow:\"none !important\"}},\"&::before\":{width:0,visibility:\"hidden\",content:'\"\\\\a0\"'},[`${t}`]:{\"&-prefix, &-suffix\":{display:\"flex\",flex:\"none\",alignItems:\"center\",\"> *:not(:last-child)\":{marginInlineEnd:e.paddingXS}},\"&-show-count-suffix\":{color:o},\"&-show-count-has-suffix\":{marginInlineEnd:e.paddingXXS},\"&-prefix\":{marginInlineEnd:n},\"&-suffix\":{marginInlineStart:n}}}),Zk(e)),{[`${i}${t}-password-icon`]:{color:l,cursor:\"pointer\",transition:`all ${r}`,\"&:hover\":{color:a}}}),Wi(e,`${t}-affix-wrapper`))}},Jk=e=>{const{componentCls:t,colorError:n,colorSuccess:o,borderRadiusLG:r,borderRadiusSM:l}=e;return{[`${t}-group`]:h(h(h({},Ue(e)),Tx(e)),{\"&-rtl\":{direction:\"rtl\"},\"&-wrapper\":{display:\"inline-block\",width:\"100%\",textAlign:\"start\",verticalAlign:\"top\",\"&-rtl\":{direction:\"rtl\"},\"&-lg\":{[`${t}-group-addon`]:{borderRadius:r}},\"&-sm\":{[`${t}-group-addon`]:{borderRadius:l}},\"&-status-error\":{[`${t}-group-addon`]:{color:n,borderColor:n}},\"&-status-warning\":{[`${t}-group-addon:last-child`]:{color:o,borderColor:o}}}})}},eN=e=>{const{componentCls:t,antCls:n}=e,o=`${t}-search`;return{[o]:{[`${t}`]:{\"&:hover, &:focus\":{borderColor:e.colorPrimaryHover,[`+ ${t}-group-addon ${o}-button:not(${n}-btn-primary)`]:{borderInlineStartColor:e.colorPrimaryHover}}},[`${t}-affix-wrapper`]:{borderRadius:0},[`${t}-lg`]:{lineHeight:e.lineHeightLG-2e-4},[`> ${t}-group`]:{[`> ${t}-group-addon:last-child`]:{insetInlineStart:-1,padding:0,border:0,[`${o}-button`]:{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius,borderEndStartRadius:0},[`${o}-button:not(${n}-btn-primary)`]:{color:e.colorTextDescription,\"&:hover\":{color:e.colorPrimaryHover},\"&:active\":{color:e.colorPrimaryActive},[`&${n}-btn-loading::before`]:{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0}}}},[`${o}-button`]:{height:e.controlHeight,\"&:hover, &:focus\":{zIndex:1}},[`&-large ${o}-button`]:{height:e.controlHeightLG},[`&-small ${o}-button`]:{height:e.controlHeightSM},\"&-rtl\":{direction:\"rtl\"},[`&${t}-compact-item`]:{[`&:not(${t}-compact-last-item)`]:{[`${t}-group-addon`]:{[`${t}-search-button`]:{marginInlineEnd:-e.lineWidth,borderRadius:0}}},[`&:not(${t}-compact-first-item)`]:{[`${t},${t}-affix-wrapper`]:{borderRadius:0}},[`> ${t}-group-addon ${t}-search-button,\n        > ${t},\n        ${t}-affix-wrapper`]:{\"&:hover,&:focus,&:active\":{zIndex:2}},[`> ${t}-affix-wrapper-focused`]:{zIndex:2}}}}};function Dl(e){return Le(e,{inputAffixPadding:e.paddingXXS,inputPaddingVertical:Math.max(Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,3),inputPaddingVerticalLG:Math.ceil((e.controlHeightLG-e.fontSizeLG*e.lineHeightLG)/2*10)/10-e.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((e.controlHeightSM-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,0),inputPaddingHorizontal:e.paddingSM-e.lineWidth,inputPaddingHorizontalSM:e.paddingXS-e.lineWidth,inputPaddingHorizontalLG:e.controlPaddingHorizontal-e.lineWidth,inputBorderHoverColor:e.colorPrimaryHover,inputBorderActiveColor:e.colorPrimaryHover})}const tN=e=>{const{componentCls:t,inputPaddingHorizontal:n,paddingLG:o}=e,r=`${t}-textarea`;return{[r]:{position:\"relative\",[`${r}-suffix`]:{position:\"absolute\",top:0,insetInlineEnd:n,bottom:0,zIndex:1,display:\"inline-flex\",alignItems:\"center\",margin:\"auto\"},\"&-status-error,\\n        &-status-warning,\\n        &-status-success,\\n        &-status-validating\":{[`&${r}-has-feedback`]:{[`${t}`]:{paddingInlineEnd:o}}},\"&-show-count\":{[`> ${t}`]:{height:\"100%\"},\"&::after\":{color:e.colorTextDescription,whiteSpace:\"nowrap\",content:\"attr(data-count)\",pointerEvents:\"none\",float:\"right\"}},\"&-rtl\":{\"&::after\":{float:\"left\"}}}}},mg=Ge(\"Input\",e=>{const t=Dl(e);return[qk(t),tN(t),Qk(t),Jk(t),eN(t),Oa(t)]}),sf=(e,t,n,o)=>{const{lineHeight:r}=e,l=Math.floor(n*r)+2,a=Math.max((t-l)/2,0),i=Math.max(t-l-a,0);return{padding:`${a}px ${o}px ${i}px`}},nN=e=>{const{componentCls:t,pickerCellCls:n,pickerCellInnerCls:o,pickerPanelCellHeight:r,motionDurationSlow:l,borderRadiusSM:a,motionDurationMid:i,controlItemBgHover:s,lineWidth:c,lineType:u,colorPrimary:d,controlItemBgActive:p,colorTextLightSolid:m,controlHeightSM:g,pickerDateHoverRangeBorderColor:v,pickerCellBorderGap:y,pickerBasicCellHoverWithRangeColor:b,pickerPanelCellWidth:S,colorTextDisabled:$,colorBgContainerDisabled:w}=e;return{\"&::before\":{position:\"absolute\",top:\"50%\",insetInlineStart:0,insetInlineEnd:0,zIndex:1,height:r,transform:\"translateY(-50%)\",transition:`all ${l}`,content:'\"\"'},[o]:{position:\"relative\",zIndex:2,display:\"inline-block\",minWidth:r,height:r,lineHeight:`${r}px`,borderRadius:a,transition:`background ${i}, border ${i}`},[`&:hover:not(${n}-in-view),\n    &:hover:not(${n}-selected):not(${n}-range-start):not(${n}-range-end):not(${n}-range-hover-start):not(${n}-range-hover-end)`]:{[o]:{background:s}},[`&-in-view${n}-today ${o}`]:{\"&::before\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:1,border:`${c}px ${u} ${d}`,borderRadius:a,content:'\"\"'}},[`&-in-view${n}-in-range`]:{position:\"relative\",\"&::before\":{background:p}},[`&-in-view${n}-selected ${o},\n      &-in-view${n}-range-start ${o},\n      &-in-view${n}-range-end ${o}`]:{color:m,background:d},[`&-in-view${n}-range-start:not(${n}-range-start-single),\n      &-in-view${n}-range-end:not(${n}-range-end-single)`]:{\"&::before\":{background:p}},[`&-in-view${n}-range-start::before`]:{insetInlineStart:\"50%\"},[`&-in-view${n}-range-end::before`]:{insetInlineEnd:\"50%\"},[`&-in-view${n}-range-hover-start:not(${n}-in-range):not(${n}-range-start):not(${n}-range-end),\n      &-in-view${n}-range-hover-end:not(${n}-in-range):not(${n}-range-start):not(${n}-range-end),\n      &-in-view${n}-range-hover-start${n}-range-start-single,\n      &-in-view${n}-range-hover-start${n}-range-start${n}-range-end${n}-range-end-near-hover,\n      &-in-view${n}-range-hover-end${n}-range-start${n}-range-end${n}-range-start-near-hover,\n      &-in-view${n}-range-hover-end${n}-range-end-single,\n      &-in-view${n}-range-hover:not(${n}-in-range)`]:{\"&::after\":{position:\"absolute\",top:\"50%\",zIndex:0,height:g,borderTop:`${c}px dashed ${v}`,borderBottom:`${c}px dashed ${v}`,transform:\"translateY(-50%)\",transition:`all ${l}`,content:'\"\"'}},\"&-range-hover-start::after,\\n      &-range-hover-end::after,\\n      &-range-hover::after\":{insetInlineEnd:0,insetInlineStart:y},[`&-in-view${n}-in-range${n}-range-hover::before,\n      &-in-view${n}-range-start${n}-range-hover::before,\n      &-in-view${n}-range-end${n}-range-hover::before,\n      &-in-view${n}-range-start:not(${n}-range-start-single)${n}-range-hover-start::before,\n      &-in-view${n}-range-end:not(${n}-range-end-single)${n}-range-hover-end::before,\n      ${t}-panel\n      > :not(${t}-date-panel)\n      &-in-view${n}-in-range${n}-range-hover-start::before,\n      ${t}-panel\n      > :not(${t}-date-panel)\n      &-in-view${n}-in-range${n}-range-hover-end::before`]:{background:b},[`&-in-view${n}-range-start:not(${n}-range-start-single):not(${n}-range-end) ${o}`]:{borderStartStartRadius:a,borderEndStartRadius:a,borderStartEndRadius:0,borderEndEndRadius:0},[`&-in-view${n}-range-end:not(${n}-range-end-single):not(${n}-range-start) ${o}`]:{borderStartStartRadius:0,borderEndStartRadius:0,borderStartEndRadius:a,borderEndEndRadius:a},[`&-range-hover${n}-range-end::after`]:{insetInlineStart:\"50%\"},[`tr > &-in-view${n}-range-hover:first-child::after,\n      tr > &-in-view${n}-range-hover-end:first-child::after,\n      &-in-view${n}-start${n}-range-hover-edge-start${n}-range-hover-edge-start-near-range::after,\n      &-in-view${n}-range-hover-edge-start:not(${n}-range-hover-edge-start-near-range)::after,\n      &-in-view${n}-range-hover-start::after`]:{insetInlineStart:(S-r)/2,borderInlineStart:`${c}px dashed ${v}`,borderStartStartRadius:c,borderEndStartRadius:c},[`tr > &-in-view${n}-range-hover:last-child::after,\n      tr > &-in-view${n}-range-hover-start:last-child::after,\n      &-in-view${n}-end${n}-range-hover-edge-end${n}-range-hover-edge-end-near-range::after,\n      &-in-view${n}-range-hover-edge-end:not(${n}-range-hover-edge-end-near-range)::after,\n      &-in-view${n}-range-hover-end::after`]:{insetInlineEnd:(S-r)/2,borderInlineEnd:`${c}px dashed ${v}`,borderStartEndRadius:c,borderEndEndRadius:c},\"&-disabled\":{color:$,pointerEvents:\"none\",[o]:{background:\"transparent\"},\"&::before\":{background:w}},[`&-disabled${n}-today ${o}::before`]:{borderColor:$}}},Ox=e=>{const{componentCls:t,pickerCellInnerCls:n,pickerYearMonthCellWidth:o,pickerControlIconSize:r,pickerPanelCellWidth:l,paddingSM:a,paddingXS:i,paddingXXS:s,colorBgContainer:c,lineWidth:u,lineType:d,borderRadiusLG:p,colorPrimary:m,colorTextHeading:g,colorSplit:v,pickerControlIconBorderWidth:y,colorIcon:b,pickerTextHeight:S,motionDurationMid:$,colorIconHover:w,fontWeightStrong:C,pickerPanelCellHeight:_,pickerCellPaddingVertical:x,colorTextDisabled:P,colorText:O,fontSize:M,pickerBasicCellHoverWithRangeColor:E,motionDurationSlow:R,pickerPanelWithoutTimeCellHeight:D,pickerQuarterPanelContentHeight:z,colorLink:T,colorLinkActive:k,colorLinkHover:B,pickerDateHoverRangeBorderColor:L,borderRadiusSM:N,colorTextLightSolid:F,borderRadius:j,controlItemBgHover:H,pickerTimePanelColumnHeight:K,pickerTimePanelColumnWidth:G,pickerTimePanelCellHeight:V,controlItemBgActive:q,marginXXS:Z}=e,oe=l*7+a*2+4,re=(oe-i*2)/3-o-a;return{[t]:{\"&-panel\":{display:\"inline-flex\",flexDirection:\"column\",textAlign:\"center\",background:c,border:`${u}px ${d} ${v}`,borderRadius:p,outline:\"none\",\"&-focused\":{borderColor:m},\"&-rtl\":{direction:\"rtl\",[`${t}-prev-icon,\n              ${t}-super-prev-icon`]:{transform:\"rotate(45deg)\"},[`${t}-next-icon,\n              ${t}-super-next-icon`]:{transform:\"rotate(-135deg)\"}}},\"&-decade-panel,\\n        &-year-panel,\\n        &-quarter-panel,\\n        &-month-panel,\\n        &-week-panel,\\n        &-date-panel,\\n        &-time-panel\":{display:\"flex\",flexDirection:\"column\",width:oe},\"&-header\":{display:\"flex\",padding:`0 ${i}px`,color:g,borderBottom:`${u}px ${d} ${v}`,\"> *\":{flex:\"none\"},button:{padding:0,color:b,lineHeight:`${S}px`,background:\"transparent\",border:0,cursor:\"pointer\",transition:`color ${$}`},\"> button\":{minWidth:\"1.6em\",fontSize:M,\"&:hover\":{color:w}},\"&-view\":{flex:\"auto\",fontWeight:C,lineHeight:`${S}px`,button:{color:\"inherit\",fontWeight:\"inherit\",verticalAlign:\"top\",\"&:not(:first-child)\":{marginInlineStart:i},\"&:hover\":{color:m}}}},\"&-prev-icon,\\n        &-next-icon,\\n        &-super-prev-icon,\\n        &-super-next-icon\":{position:\"relative\",display:\"inline-block\",width:r,height:r,\"&::before\":{position:\"absolute\",top:0,insetInlineStart:0,display:\"inline-block\",width:r,height:r,border:\"0 solid currentcolor\",borderBlockStartWidth:y,borderBlockEndWidth:0,borderInlineStartWidth:y,borderInlineEndWidth:0,content:'\"\"'}},\"&-super-prev-icon,\\n        &-super-next-icon\":{\"&::after\":{position:\"absolute\",top:Math.ceil(r/2),insetInlineStart:Math.ceil(r/2),display:\"inline-block\",width:r,height:r,border:\"0 solid currentcolor\",borderBlockStartWidth:y,borderBlockEndWidth:0,borderInlineStartWidth:y,borderInlineEndWidth:0,content:'\"\"'}},\"&-prev-icon,\\n        &-super-prev-icon\":{transform:\"rotate(-45deg)\"},\"&-next-icon,\\n        &-super-next-icon\":{transform:\"rotate(135deg)\"},\"&-content\":{width:\"100%\",tableLayout:\"fixed\",borderCollapse:\"collapse\",\"th, td\":{position:\"relative\",minWidth:_,fontWeight:\"normal\"},th:{height:_+x*2,color:O,verticalAlign:\"middle\"}},\"&-cell\":h({padding:`${x}px 0`,color:P,cursor:\"pointer\",\"&-in-view\":{color:O}},nN(e)),[`&-date-panel ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-start ${n},\n        &-date-panel ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-end ${n}`]:{\"&::after\":{position:\"absolute\",top:0,bottom:0,zIndex:-1,background:E,transition:`all ${R}`,content:'\"\"'}},[`&-date-panel\n        ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-start\n        ${n}::after`]:{insetInlineEnd:-(l-_)/2,insetInlineStart:0},[`&-date-panel ${t}-cell-in-view${t}-cell-in-range${t}-cell-range-hover-end ${n}::after`]:{insetInlineEnd:0,insetInlineStart:-(l-_)/2},[`&-range-hover${t}-range-start::after`]:{insetInlineEnd:\"50%\"},\"&-decade-panel,\\n        &-year-panel,\\n        &-quarter-panel,\\n        &-month-panel\":{[`${t}-content`]:{height:D*4},[n]:{padding:`0 ${i}px`}},\"&-quarter-panel\":{[`${t}-content`]:{height:z}},[`&-panel ${t}-footer`]:{borderTop:`${u}px ${d} ${v}`},\"&-footer\":{width:\"min-content\",minWidth:\"100%\",lineHeight:`${S-2*u}px`,textAlign:\"center\",\"&-extra\":{padding:`0 ${a}`,lineHeight:`${S-2*u}px`,textAlign:\"start\",\"&:not(:last-child)\":{borderBottom:`${u}px ${d} ${v}`}}},\"&-now\":{textAlign:\"start\"},\"&-today-btn\":{color:T,\"&:hover\":{color:B},\"&:active\":{color:k},[`&${t}-today-btn-disabled`]:{color:P,cursor:\"not-allowed\"}},\"&-decade-panel\":{[n]:{padding:`0 ${i/2}px`},[`${t}-cell::before`]:{display:\"none\"}},\"&-year-panel,\\n        &-quarter-panel,\\n        &-month-panel\":{[`${t}-body`]:{padding:`0 ${i}px`},[n]:{width:o},[`${t}-cell-range-hover-start::after`]:{insetInlineStart:re,borderInlineStart:`${u}px dashed ${L}`,borderStartStartRadius:N,borderBottomStartRadius:N,borderStartEndRadius:0,borderBottomEndRadius:0,[`${t}-panel-rtl &`]:{insetInlineEnd:re,borderInlineEnd:`${u}px dashed ${L}`,borderStartStartRadius:0,borderBottomStartRadius:0,borderStartEndRadius:N,borderBottomEndRadius:N}},[`${t}-cell-range-hover-end::after`]:{insetInlineEnd:re,borderInlineEnd:`${u}px dashed ${L}`,borderStartStartRadius:0,borderEndStartRadius:0,borderStartEndRadius:j,borderEndEndRadius:j,[`${t}-panel-rtl &`]:{insetInlineStart:re,borderInlineStart:`${u}px dashed ${L}`,borderStartStartRadius:j,borderEndStartRadius:j,borderStartEndRadius:0,borderEndEndRadius:0}}},\"&-week-panel\":{[`${t}-body`]:{padding:`${i}px ${a}px`},[`${t}-cell`]:{[`&:hover ${n},\n            &-selected ${n},\n            ${n}`]:{background:\"transparent !important\"}},\"&-row\":{td:{transition:`background ${$}`,\"&:first-child\":{borderStartStartRadius:N,borderEndStartRadius:N},\"&:last-child\":{borderStartEndRadius:N,borderEndEndRadius:N}},\"&:hover td\":{background:H},\"&-selected td,\\n            &-selected:hover td\":{background:m,[`&${t}-cell-week`]:{color:new mt(F).setAlpha(.5).toHexString()},[`&${t}-cell-today ${n}::before`]:{borderColor:F},[n]:{color:F}}}},\"&-date-panel\":{[`${t}-body`]:{padding:`${i}px ${a}px`},[`${t}-content`]:{width:l*7,th:{width:l}}},\"&-datetime-panel\":{display:\"flex\",[`${t}-time-panel`]:{borderInlineStart:`${u}px ${d} ${v}`},[`${t}-date-panel,\n          ${t}-time-panel`]:{transition:`opacity ${R}`},\"&-active\":{[`${t}-date-panel,\n            ${t}-time-panel`]:{opacity:.3,\"&-active\":{opacity:1}}}},\"&-time-panel\":{width:\"auto\",minWidth:\"auto\",direction:\"ltr\",[`${t}-content`]:{display:\"flex\",flex:\"auto\",height:K},\"&-column\":{flex:\"1 0 auto\",width:G,margin:`${s}px 0`,padding:0,overflowY:\"hidden\",textAlign:\"start\",listStyle:\"none\",transition:`background ${$}`,overflowX:\"hidden\",\"&::after\":{display:\"block\",height:K-V,content:'\"\"'},\"&:not(:first-child)\":{borderInlineStart:`${u}px ${d} ${v}`},\"&-active\":{background:new mt(q).setAlpha(.2).toHexString()},\"&:hover\":{overflowY:\"auto\"},\"> li\":{margin:0,padding:0,[`&${t}-time-panel-cell`]:{marginInline:Z,[`${t}-time-panel-cell-inner`]:{display:\"block\",width:G-2*Z,height:V,margin:0,paddingBlock:0,paddingInlineEnd:0,paddingInlineStart:(G-V)/2,color:O,lineHeight:`${V}px`,borderRadius:N,cursor:\"pointer\",transition:`background ${$}`,\"&:hover\":{background:H}},\"&-selected\":{[`${t}-time-panel-cell-inner`]:{background:q}},\"&-disabled\":{[`${t}-time-panel-cell-inner`]:{color:P,background:\"transparent\",cursor:\"not-allowed\"}}}}}},[`&-datetime-panel ${t}-time-panel-column:after`]:{height:K-V+s*2}}}},oN=e=>{const{componentCls:t,colorBgContainer:n,colorError:o,colorErrorOutline:r,colorWarning:l,colorWarningOutline:a}=e;return{[t]:{[`&-status-error${t}`]:{\"&, &:not([disabled]):hover\":{backgroundColor:n,borderColor:o},\"&-focused, &:focus\":h({},jr(Le(e,{inputBorderActiveColor:o,inputBorderHoverColor:o,controlOutline:r}))),[`${t}-active-bar`]:{background:o}},[`&-status-warning${t}`]:{\"&, &:not([disabled]):hover\":{backgroundColor:n,borderColor:l},\"&-focused, &:focus\":h({},jr(Le(e,{inputBorderActiveColor:l,inputBorderHoverColor:l,controlOutline:a}))),[`${t}-active-bar`]:{background:l}}}}},rN=e=>{const{componentCls:t,antCls:n,boxShadowPopoverArrow:o,controlHeight:r,fontSize:l,inputPaddingHorizontal:a,colorBgContainer:i,lineWidth:s,lineType:c,colorBorder:u,borderRadius:d,motionDurationMid:p,colorBgContainerDisabled:m,colorTextDisabled:g,colorTextPlaceholder:v,controlHeightLG:y,fontSizeLG:b,controlHeightSM:S,inputPaddingHorizontalSM:$,paddingXS:w,marginXS:C,colorTextDescription:_,lineWidthBold:x,lineHeight:P,colorPrimary:O,motionDurationSlow:M,zIndexPopup:E,paddingXXS:R,paddingSM:D,pickerTextHeight:z,controlItemBgActive:T,colorPrimaryBorder:k,sizePopupArrow:B,borderRadiusXS:L,borderRadiusOuter:N,colorBgElevated:F,borderRadiusLG:j,boxShadowSecondary:H,borderRadiusSM:K,colorSplit:G,controlItemBgHover:V,presetsWidth:q,presetsMaxWidth:Z}=e;return[{[t]:h(h(h({},Ue(e)),sf(e,r,l,a)),{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",background:i,lineHeight:1,border:`${s}px ${c} ${u}`,borderRadius:d,transition:`border ${p}, box-shadow ${p}`,\"&:hover, &-focused\":h({},Aa(e)),\"&-focused\":h({},jr(e)),[`&${t}-disabled`]:{background:m,borderColor:u,cursor:\"not-allowed\",[`${t}-suffix`]:{color:g}},[`&${t}-borderless`]:{backgroundColor:\"transparent !important\",borderColor:\"transparent !important\",boxShadow:\"none !important\"},[`${t}-input`]:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",width:\"100%\",\"> input\":h(h({},Al(e)),{flex:\"auto\",minWidth:1,height:\"auto\",padding:0,background:\"transparent\",border:0,\"&:focus\":{boxShadow:\"none\"},\"&[disabled]\":{background:\"transparent\"}}),\"&:hover\":{[`${t}-clear`]:{opacity:1}},\"&-placeholder\":{\"> input\":{color:v}}},\"&-large\":h(h({},sf(e,y,b,a)),{[`${t}-input > input`]:{fontSize:b}}),\"&-small\":h({},sf(e,S,l,$)),[`${t}-suffix`]:{display:\"flex\",flex:\"none\",alignSelf:\"center\",marginInlineStart:w/2,color:g,lineHeight:1,pointerEvents:\"none\",\"> *\":{verticalAlign:\"top\",\"&:not(:last-child)\":{marginInlineEnd:C}}},[`${t}-clear`]:{position:\"absolute\",top:\"50%\",insetInlineEnd:0,color:g,lineHeight:1,background:i,transform:\"translateY(-50%)\",cursor:\"pointer\",opacity:0,transition:`opacity ${p}, color ${p}`,\"> *\":{verticalAlign:\"top\"},\"&:hover\":{color:_}},[`${t}-separator`]:{position:\"relative\",display:\"inline-block\",width:\"1em\",height:b,color:g,fontSize:b,verticalAlign:\"top\",cursor:\"default\",[`${t}-focused &`]:{color:_},[`${t}-range-separator &`]:{[`${t}-disabled &`]:{cursor:\"not-allowed\"}}},\"&-range\":{position:\"relative\",display:\"inline-flex\",[`${t}-clear`]:{insetInlineEnd:a},\"&:hover\":{[`${t}-clear`]:{opacity:1}},[`${t}-active-bar`]:{bottom:-s,height:x,marginInlineStart:a,background:O,opacity:0,transition:`all ${M} ease-out`,pointerEvents:\"none\"},[`&${t}-focused`]:{[`${t}-active-bar`]:{opacity:1}},[`${t}-range-separator`]:{alignItems:\"center\",padding:`0 ${w}px`,lineHeight:1},[`&${t}-small`]:{[`${t}-clear`]:{insetInlineEnd:$},[`${t}-active-bar`]:{marginInlineStart:$}}},\"&-dropdown\":h(h(h({},Ue(e)),Ox(e)),{position:\"absolute\",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:E,[`&${t}-dropdown-hidden`]:{display:\"none\"},[`&${t}-dropdown-placement-bottomLeft`]:{[`${t}-range-arrow`]:{top:0,display:\"block\",transform:\"translateY(-100%)\"}},[`&${t}-dropdown-placement-topLeft`]:{[`${t}-range-arrow`]:{bottom:0,display:\"block\",transform:\"translateY(100%) rotate(180deg)\"}},[`&${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-topLeft,\n          &${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-topRight,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-topLeft,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-topRight`]:{animationName:Qu},[`&${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-bottomLeft,\n          &${n}-slide-up-enter${n}-slide-up-enter-active${t}-dropdown-placement-bottomRight,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-bottomLeft,\n          &${n}-slide-up-appear${n}-slide-up-appear-active${t}-dropdown-placement-bottomRight`]:{animationName:qu},[`&${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-topLeft,\n          &${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-topRight`]:{animationName:Ju},[`&${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-bottomLeft,\n          &${n}-slide-up-leave${n}-slide-up-leave-active${t}-dropdown-placement-bottomRight`]:{animationName:Zu},[`${t}-panel > ${t}-time-panel`]:{paddingTop:R},[`${t}-ranges`]:{marginBottom:0,padding:`${R}px ${D}px`,overflow:\"hidden\",lineHeight:`${z-2*s-w/2}px`,textAlign:\"start\",listStyle:\"none\",display:\"flex\",justifyContent:\"space-between\",\"> li\":{display:\"inline-block\"},[`${t}-preset > ${n}-tag-blue`]:{color:O,background:T,borderColor:k,cursor:\"pointer\"},[`${t}-ok`]:{marginInlineStart:\"auto\"}},[`${t}-range-wrapper`]:{display:\"flex\",position:\"relative\"},[`${t}-range-arrow`]:h({position:\"absolute\",zIndex:1,display:\"none\",marginInlineStart:a*1.5,transition:`left ${M} ease-out`},ev(B,L,N,F,o)),[`${t}-panel-container`]:{overflow:\"hidden\",verticalAlign:\"top\",background:F,borderRadius:j,boxShadow:H,transition:`margin ${M}`,[`${t}-panel-layout`]:{display:\"flex\",flexWrap:\"nowrap\",alignItems:\"stretch\"},[`${t}-presets`]:{display:\"flex\",flexDirection:\"column\",minWidth:q,maxWidth:Z,ul:{height:0,flex:\"auto\",listStyle:\"none\",overflow:\"auto\",margin:0,padding:w,borderInlineEnd:`${s}px ${c} ${G}`,li:h(h({},Gt),{borderRadius:K,paddingInline:w,paddingBlock:(S-Math.round(l*P))/2,cursor:\"pointer\",transition:`all ${M}`,\"+ li\":{marginTop:C},\"&:hover\":{background:V}})}},[`${t}-panels`]:{display:\"inline-flex\",flexWrap:\"nowrap\",direction:\"ltr\",[`${t}-panel`]:{borderWidth:`0 0 ${s}px`},\"&:last-child\":{[`${t}-panel`]:{borderWidth:0}}},[`${t}-panel`]:{verticalAlign:\"top\",background:\"transparent\",borderRadius:0,borderWidth:0,[`${t}-content,\n            table`]:{textAlign:\"center\"},\"&-focused\":{borderColor:u}}}}),\"&-dropdown-range\":{padding:`${B*2/3}px 0`,\"&-hidden\":{display:\"none\"}},\"&-rtl\":{direction:\"rtl\",[`${t}-separator`]:{transform:\"rotate(180deg)\"},[`${t}-footer`]:{\"&-extra\":{direction:\"rtl\"}}}})},Go(e,\"slide-up\"),Go(e,\"slide-down\"),ya(e,\"move-up\"),ya(e,\"move-down\")]},Ex=e=>{const{componentCls:n,controlHeightLG:o,controlHeightSM:r,colorPrimary:l,paddingXXS:a}=e;return{pickerCellCls:`${n}-cell`,pickerCellInnerCls:`${n}-cell-inner`,pickerTextHeight:o,pickerPanelCellWidth:r*1.5,pickerPanelCellHeight:r,pickerDateHoverRangeBorderColor:new mt(l).lighten(20).toHexString(),pickerBasicCellHoverWithRangeColor:new mt(l).lighten(35).toHexString(),pickerPanelWithoutTimeCellHeight:o*1.65,pickerYearMonthCellWidth:o*1.5,pickerTimePanelColumnHeight:224,pickerTimePanelColumnWidth:o*1.4,pickerTimePanelCellHeight:28,pickerQuarterPanelContentHeight:o*1.4,pickerCellPaddingVertical:a,pickerCellBorderGap:2,pickerControlIconSize:7,pickerControlIconBorderWidth:1.5}},Mx=Ge(\"DatePicker\",e=>{const t=Le(Dl(e),Ex(e));return[rN(t),oN(t),Oa(e,{focusElCls:`${e.componentCls}-focused`})]},e=>({presetsWidth:120,presetsMaxWidth:200,zIndexPopup:e.zIndexPopupBase+50})),lN=e=>{const{calendarCls:t,componentCls:n,calendarFullBg:o,calendarFullPanelBg:r,calendarItemActiveBg:l}=e;return{[t]:h(h(h({},Ox(e)),Ue(e)),{background:o,\"&-rtl\":{direction:\"rtl\"},[`${t}-header`]:{display:\"flex\",justifyContent:\"flex-end\",padding:`${e.paddingSM}px 0`,[`${t}-year-select`]:{minWidth:e.yearControlWidth},[`${t}-month-select`]:{minWidth:e.monthControlWidth,marginInlineStart:e.marginXS},[`${t}-mode-switch`]:{marginInlineStart:e.marginXS}}}),[`${t} ${n}-panel`]:{background:r,border:0,borderTop:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,borderRadius:0,[`${n}-month-panel, ${n}-date-panel`]:{width:\"auto\"},[`${n}-body`]:{padding:`${e.paddingXS}px 0`},[`${n}-content`]:{width:\"100%\"}},[`${t}-mini`]:{borderRadius:e.borderRadiusLG,[`${t}-header`]:{paddingInlineEnd:e.paddingXS,paddingInlineStart:e.paddingXS},[`${n}-panel`]:{borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`},[`${n}-content`]:{height:e.miniContentHeight,th:{height:\"auto\",padding:0,lineHeight:`${e.weekHeight}px`}},[`${n}-cell::before`]:{pointerEvents:\"none\"}},[`${t}${t}-full`]:{[`${n}-panel`]:{display:\"block\",width:\"100%\",textAlign:\"end\",background:o,border:0,[`${n}-body`]:{\"th, td\":{padding:0},th:{height:\"auto\",paddingInlineEnd:e.paddingSM,paddingBottom:e.paddingXXS,lineHeight:`${e.weekHeight}px`}}},[`${n}-cell`]:{\"&::before\":{display:\"none\"},\"&:hover\":{[`${t}-date`]:{background:e.controlItemBgHover}},[`${t}-date-today::before`]:{display:\"none\"},[`&-in-view${n}-cell-selected`]:{[`${t}-date, ${t}-date-today`]:{background:l}},\"&-selected, &-selected:hover\":{[`${t}-date, ${t}-date-today`]:{[`${t}-date-value`]:{color:e.colorPrimary}}}},[`${t}-date`]:{display:\"block\",width:\"auto\",height:\"auto\",margin:`0 ${e.marginXS/2}px`,padding:`${e.paddingXS/2}px ${e.paddingXS}px 0`,border:0,borderTop:`${e.lineWidthBold}px ${e.lineType} ${e.colorSplit}`,borderRadius:0,transition:`background ${e.motionDurationSlow}`,\"&-value\":{lineHeight:`${e.dateValueHeight}px`,transition:`color ${e.motionDurationSlow}`},\"&-content\":{position:\"static\",width:\"auto\",height:e.dateContentHeight,overflowY:\"auto\",color:e.colorText,lineHeight:e.lineHeight,textAlign:\"start\"},\"&-today\":{borderColor:e.colorPrimary,[`${t}-date-value`]:{color:e.colorText}}}},[`@media only screen and (max-width: ${e.screenXS}px) `]:{[`${t}`]:{[`${t}-header`]:{display:\"block\",[`${t}-year-select`]:{width:\"50%\"},[`${t}-month-select`]:{width:`calc(50% - ${e.paddingXS}px)`},[`${t}-mode-switch`]:{width:\"100%\",marginTop:e.marginXS,marginInlineStart:0,\"> label\":{width:\"50%\",textAlign:\"center\"}}}}}}},aN=Ge(\"Calendar\",e=>{const t=`${e.componentCls}-calendar`,n=Le(Dl(e),Ex(e),{calendarCls:t,pickerCellInnerCls:`${e.componentCls}-cell-inner`,calendarFullBg:e.colorBgContainer,calendarFullPanelBg:e.colorBgContainer,calendarItemActiveBg:e.controlItemBgActive,dateValueHeight:e.controlHeightSM,weekHeight:e.controlHeightSM*.75,dateContentHeight:(e.fontSizeSM*e.lineHeightSM+e.marginXS)*3+e.lineWidth*2});return[lN(n)]},{yearControlWidth:80,monthControlWidth:70,miniContentHeight:256});function iN(e){function t(l,a){return l&&a&&e.getYear(l)===e.getYear(a)}function n(l,a){return t(l,a)&&e.getMonth(l)===e.getMonth(a)}function o(l,a){return n(l,a)&&e.getDate(l)===e.getDate(a)}const r=ne({name:\"ACalendar\",inheritAttrs:!1,props:{prefixCls:String,locale:{type:Object,default:void 0},validRange:{type:Array,default:void 0},disabledDate:{type:Function,default:void 0},dateFullCellRender:{type:Function,default:void 0},dateCellRender:{type:Function,default:void 0},monthFullCellRender:{type:Function,default:void 0},monthCellRender:{type:Function,default:void 0},headerRender:{type:Function,default:void 0},value:{type:[Object,String],default:void 0},defaultValue:{type:[Object,String],default:void 0},mode:{type:String,default:void 0},fullscreen:{type:Boolean,default:void 0},onChange:{type:Function,default:void 0},\"onUpdate:value\":{type:Function,default:void 0},onPanelChange:{type:Function,default:void 0},onSelect:{type:Function,default:void 0},valueFormat:{type:String,default:void 0}},slots:Object,setup(l,a){let{emit:i,slots:s,attrs:c}=a;const u=l,{prefixCls:d,direction:p}=Pe(\"picker\",u),[m,g]=aN(d),v=I(()=>`${d.value}-calendar`),y=T=>u.valueFormat?e.toString(T,u.valueFormat):T,b=I(()=>u.value?u.valueFormat?e.toDate(u.value,u.valueFormat):u.value:u.value===\"\"?void 0:u.value),S=I(()=>u.defaultValue?u.valueFormat?e.toDate(u.defaultValue,u.valueFormat):u.defaultValue:u.defaultValue===\"\"?void 0:u.defaultValue),[$,w]=Mt(()=>b.value||e.getNow(),{defaultValue:S.value,value:b}),[C,_]=Mt(\"month\",{value:We(u,\"mode\")}),x=I(()=>C.value===\"year\"?\"month\":\"date\"),P=I(()=>T=>{var k;return(u.validRange?e.isAfter(u.validRange[0],T)||e.isAfter(T,u.validRange[1]):!1)||!!(!((k=u.disabledDate)===null||k===void 0)&&k.call(u,T))}),O=(T,k)=>{i(\"panelChange\",y(T),k)},M=T=>{if(w(T),!o(T,$.value)){(x.value===\"date\"&&!n(T,$.value)||x.value===\"month\"&&!t(T,$.value))&&O(T,C.value);const k=y(T);i(\"update:value\",k),i(\"change\",k)}},E=T=>{_(T),O($.value,T)},R=(T,k)=>{M(T),i(\"select\",y(T),{source:k})},D=I(()=>{const{locale:T}=u,k=h(h({},pi),T);return k.lang=h(h({},k.lang),(T||{}).lang),k}),[z]=yo(\"Calendar\",D);return()=>{const T=e.getNow(),{dateFullCellRender:k=s?.dateFullCellRender,dateCellRender:B=s?.dateCellRender,monthFullCellRender:L=s?.monthFullCellRender,monthCellRender:N=s?.monthCellRender,headerRender:F=s?.headerRender,fullscreen:j=!0,validRange:H}=u,K=V=>{let{current:q}=V;return k?k({current:q}):f(\"div\",{class:le(`${d.value}-cell-inner`,`${v.value}-date`,{[`${v.value}-date-today`]:o(T,q)})},[f(\"div\",{class:`${v.value}-date-value`},[String(e.getDate(q)).padStart(2,\"0\")]),f(\"div\",{class:`${v.value}-date-content`},[B&&B({current:q})])])},G=(V,q)=>{let{current:Z}=V;if(L)return L({current:Z});const oe=q.shortMonths||e.locale.getShortMonths(q.locale);return f(\"div\",{class:le(`${d.value}-cell-inner`,`${v.value}-date`,{[`${v.value}-date-today`]:n(T,Z)})},[f(\"div\",{class:`${v.value}-date-value`},[oe[e.getMonth(Z)]]),f(\"div\",{class:`${v.value}-date-content`},[N&&N({current:Z})])])};return m(f(\"div\",A(A({},c),{},{class:le(v.value,{[`${v.value}-full`]:j,[`${v.value}-mini`]:!j,[`${v.value}-rtl`]:p.value===\"rtl\"},c.class,g.value)}),[F?F({value:$.value,type:C.value,onChange:V=>{R(V,\"customize\")},onTypeChange:E}):f(Yk,{prefixCls:v.value,value:$.value,generateConfig:e,mode:C.value,fullscreen:j,locale:z.value.lang,validRange:H,onChange:R,onModeChange:E},null),f(sg,{value:$.value,prefixCls:d.value,locale:z.value.lang,generateConfig:e,dateRender:K,monthCellRender:V=>G(V,z.value.lang),onSelect:V=>{R(V,x.value)},mode:x.value,picker:x.value,disabledDate:P.value,hideHeader:!0},null)]))}}});return r.install=function(l){return l.component(r.name,r),l},r}const sN=iN(Wv),cN=Dt(sN);function uN(e){const t=ee(),n=ee(!1);function o(){for(var r=arguments.length,l=new Array(r),a=0;a<r;a++)l[a]=arguments[a];n.value||(qe.cancel(t.value),t.value=qe(()=>{e(...l)}))}return et(()=>{n.value=!0,qe.cancel(t.value)}),o}function dN(e){const t=ee([]),n=ee(typeof e==\"function\"?e():e),o=uN(()=>{let l=n.value;t.value.forEach(a=>{l=a(l)}),t.value=[],n.value=l});function r(l){t.value.push(l),o()}return[n,r]}const fN=ne({compatConfig:{MODE:3},name:\"TabNode\",props:{id:{type:String},prefixCls:{type:String},tab:{type:Object},active:{type:Boolean},closable:{type:Boolean},editable:{type:Object},onClick:{type:Function},onResize:{type:Function},renderWrapper:{type:Function},removeAriaLabel:{type:String},onFocus:{type:Function}},emits:[\"click\",\"resize\",\"remove\",\"focus\"],setup(e,t){let{expose:n,attrs:o}=t;const r=J();function l(s){var c;!((c=e.tab)===null||c===void 0)&&c.disabled||e.onClick(s)}n({domRef:r});function a(s){var c;s.preventDefault(),s.stopPropagation(),e.editable.onEdit(\"remove\",{key:(c=e.tab)===null||c===void 0?void 0:c.key,event:s})}const i=I(()=>{var s;return e.editable&&e.closable!==!1&&!(!((s=e.tab)===null||s===void 0)&&s.disabled)});return()=>{var s;const{prefixCls:c,id:u,active:d,tab:{key:p,tab:m,disabled:g,closeIcon:v},renderWrapper:y,removeAriaLabel:b,editable:S,onFocus:$}=e,w=`${c}-tab`,C=f(\"div\",{key:p,ref:r,class:le(w,{[`${w}-with-remove`]:i.value,[`${w}-active`]:d,[`${w}-disabled`]:g}),style:o.style,onClick:l},[f(\"div\",{role:\"tab\",\"aria-selected\":d,id:u&&`${u}-tab-${p}`,class:`${w}-btn`,\"aria-controls\":u&&`${u}-panel-${p}`,\"aria-disabled\":g,tabindex:g?null:0,onClick:_=>{_.stopPropagation(),l(_)},onKeydown:_=>{[we.SPACE,we.ENTER].includes(_.which)&&(_.preventDefault(),l(_))},onFocus:$},[typeof m==\"function\"?m():m]),i.value&&f(\"button\",{type:\"button\",\"aria-label\":b||\"remove\",tabindex:0,class:`${w}-remove`,onClick:_=>{_.stopPropagation(),a(_)}},[v?.()||((s=S.removeIcon)===null||s===void 0?void 0:s.call(S))||\"×\"])]);return y?y(C):C}}}),Nb={width:0,height:0,left:0,top:0};function pN(e,t){const n=J(new Map);return ze(()=>{var o,r;const l=new Map,a=e.value,i=t.value.get((o=a[0])===null||o===void 0?void 0:o.key)||Nb,s=i.left+i.width;for(let c=0;c<a.length;c+=1){const{key:u}=a[c];let d=t.value.get(u);d||(d=t.value.get((r=a[c-1])===null||r===void 0?void 0:r.key)||Nb);const p=l.get(u)||h({},d);p.right=s-p.left-p.width,l.set(u,p)}n.value=new Map(l)}),n}const Ax=ne({compatConfig:{MODE:3},name:\"AddButton\",inheritAttrs:!1,props:{prefixCls:String,editable:{type:Object},locale:{type:Object,default:void 0}},setup(e,t){let{expose:n,attrs:o}=t;const r=J();return n({domRef:r}),()=>{const{prefixCls:l,editable:a,locale:i}=e;return!a||a.showAdd===!1?null:f(\"button\",{ref:r,type:\"button\",class:`${l}-nav-add`,style:o.style,\"aria-label\":i?.addAriaLabel||\"Add tab\",onClick:s=>{a.onEdit(\"add\",{event:s})}},[a.addIcon?a.addIcon():\"+\"])}}}),mN={prefixCls:{type:String},id:{type:String},tabs:{type:Object},rtl:{type:Boolean},tabBarGutter:{type:Number},activeKey:{type:[String,Number]},mobile:{type:Boolean},moreIcon:W.any,moreTransitionName:{type:String},editable:{type:Object},locale:{type:Object,default:void 0},removeAriaLabel:String,onTabClick:{type:Function},popupClassName:String,getPopupContainer:de()},vN=ne({compatConfig:{MODE:3},name:\"OperationNode\",inheritAttrs:!1,props:mN,emits:[\"tabClick\"],slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const[r,l]=ht(!1),[a,i]=ht(null),s=m=>{const g=e.tabs.filter(b=>!b.disabled);let v=g.findIndex(b=>b.key===a.value)||0;const y=g.length;for(let b=0;b<y;b+=1){v=(v+m+y)%y;const S=g[v];if(!S.disabled){i(S.key);return}}},c=m=>{const{which:g}=m;if(!r.value){[we.DOWN,we.SPACE,we.ENTER].includes(g)&&(l(!0),m.preventDefault());return}switch(g){case we.UP:s(-1),m.preventDefault();break;case we.DOWN:s(1),m.preventDefault();break;case we.ESC:l(!1);break;case we.SPACE:case we.ENTER:a.value!==null&&e.onTabClick(a.value,m);break}},u=I(()=>`${e.id}-more-popup`),d=I(()=>a.value!==null?`${u.value}-${a.value}`:null),p=(m,g)=>{m.preventDefault(),m.stopPropagation(),e.editable.onEdit(\"remove\",{key:g,event:m})};return Ne(()=>{pe(a,()=>{const m=document.getElementById(d.value);m&&m.scrollIntoView&&m.scrollIntoView(!1)},{flush:\"post\",immediate:!0})}),pe(r,()=>{r.value||i(null)}),Fv({}),()=>{var m;const{prefixCls:g,id:v,tabs:y,locale:b,mobile:S,moreIcon:$=((m=o.moreIcon)===null||m===void 0?void 0:m.call(o))||f(Im,null,null),moreTransitionName:w,editable:C,tabBarGutter:_,rtl:x,onTabClick:P,popupClassName:O}=e;if(!y.length)return null;const M=`${g}-dropdown`,E=b?.dropdownAriaLabel,R={[x?\"marginRight\":\"marginLeft\"]:_};y.length||(R.visibility=\"hidden\",R.order=1);const D=le({[`${M}-rtl`]:x,[`${O}`]:!0}),z=S?null:f(E1,{prefixCls:M,trigger:[\"hover\"],visible:r.value,transitionName:w,onVisibleChange:l,overlayClassName:D,mouseEnterDelay:.1,mouseLeaveDelay:.1,getPopupContainer:e.getPopupContainer},{overlay:()=>f(Ft,{onClick:T=>{let{key:k,domEvent:B}=T;P(k,B),l(!1)},id:u.value,tabindex:-1,role:\"listbox\",\"aria-activedescendant\":d.value,selectedKeys:[a.value],\"aria-label\":E!==void 0?E:\"expanded dropdown\"},{default:()=>[y.map(T=>{var k,B;const L=C&&T.closable!==!1&&!T.disabled;return f(To,{key:T.key,id:`${u.value}-${T.key}`,role:\"option\",\"aria-controls\":v&&`${v}-panel-${T.key}`,disabled:T.disabled},{default:()=>[f(\"span\",null,[typeof T.tab==\"function\"?T.tab():T.tab]),L&&f(\"button\",{type:\"button\",\"aria-label\":e.removeAriaLabel||\"remove\",tabindex:0,class:`${M}-menu-item-remove`,onClick:N=>{N.stopPropagation(),p(N,T.key)}},[((k=T.closeIcon)===null||k===void 0?void 0:k.call(T))||((B=C.removeIcon)===null||B===void 0?void 0:B.call(C))||\"×\"])]})})]}),default:()=>f(\"button\",{type:\"button\",class:`${g}-nav-more`,style:R,tabindex:-1,\"aria-hidden\":\"true\",\"aria-haspopup\":\"listbox\",\"aria-controls\":u.value,id:`${v}-more`,\"aria-expanded\":r.value,onKeydown:c},[$])});return f(\"div\",{class:le(`${g}-nav-operations`,n.class),style:n.style},[z,f(Ax,{prefixCls:g,locale:b,editable:C},null)])}}}),Dx=Symbol(\"tabsContextKey\"),gN=e=>{Qe(Dx,e)},Rx=()=>Je(Dx,{tabs:J([]),prefixCls:J()}),hN=.1,Bb=.01,tc=20,Lb=Math.pow(.995,tc);function bN(e,t){const[n,o]=ht(),[r,l]=ht(0),[a,i]=ht(0),[s,c]=ht(),u=J();function d(C){const{screenX:_,screenY:x}=C.touches[0];o({x:_,y:x}),clearInterval(u.value)}function p(C){if(!n.value)return;C.preventDefault();const{screenX:_,screenY:x}=C.touches[0],P=_-n.value.x,O=x-n.value.y;t(P,O),o({x:_,y:x});const M=Date.now();i(M-r.value),l(M),c({x:P,y:O})}function m(){if(!n.value)return;const C=s.value;if(o(null),c(null),C){const _=C.x/a.value,x=C.y/a.value,P=Math.abs(_),O=Math.abs(x);if(Math.max(P,O)<hN)return;let M=_,E=x;u.value=setInterval(()=>{if(Math.abs(M)<Bb&&Math.abs(E)<Bb){clearInterval(u.value);return}M*=Lb,E*=Lb,t(M*tc,E*tc)},tc)}}const g=J();function v(C){const{deltaX:_,deltaY:x}=C;let P=0;const O=Math.abs(_),M=Math.abs(x);O===M?P=g.value===\"x\"?_:x:O>M?(P=_,g.value=\"x\"):(P=x,g.value=\"y\"),t(-P,-P)&&C.preventDefault()}const y=J({onTouchStart:d,onTouchMove:p,onTouchEnd:m,onWheel:v});function b(C){y.value.onTouchStart(C)}function S(C){y.value.onTouchMove(C)}function $(C){y.value.onTouchEnd(C)}function w(C){y.value.onWheel(C)}Ne(()=>{var C,_;document.addEventListener(\"touchmove\",S,{passive:!1}),document.addEventListener(\"touchend\",$,{passive:!1}),(C=e.value)===null||C===void 0||C.addEventListener(\"touchstart\",b,{passive:!1}),(_=e.value)===null||_===void 0||_.addEventListener(\"wheel\",w,{passive:!1})}),et(()=>{document.removeEventListener(\"touchmove\",S),document.removeEventListener(\"touchend\",$)})}function Fb(e,t){const n=J(e);function o(r){const l=typeof r==\"function\"?r(n.value):r;l!==n.value&&t(l,n.value),n.value=l}return[n,o]}const vg=()=>{const e=J(new Map),t=n=>o=>{e.value.set(n,o)};return Pm(()=>{e.value=new Map}),[t,e]},zb={width:0,height:0,left:0,top:0,right:0},yN=()=>({id:{type:String},tabPosition:{type:String},activeKey:{type:[String,Number]},rtl:{type:Boolean},animated:De(),editable:De(),moreIcon:W.any,moreTransitionName:{type:String},mobile:{type:Boolean},tabBarGutter:{type:Number},renderTabBar:{type:Function},locale:De(),popupClassName:String,getPopupContainer:de(),onTabClick:{type:Function},onTabScroll:{type:Function}}),SN=(e,t)=>{const{offsetWidth:n,offsetHeight:o,offsetTop:r,offsetLeft:l}=e,{width:a,height:i,x:s,y:c}=e.getBoundingClientRect();return Math.abs(a-n)<1?[a,i,s-t.x,c-t.y]:[n,o,l,r]},Hb=ne({compatConfig:{MODE:3},name:\"TabNavList\",inheritAttrs:!1,props:yN(),slots:Object,emits:[\"tabClick\",\"tabScroll\"],setup(e,t){let{attrs:n,slots:o}=t;const{tabs:r,prefixCls:l}=Rx(),a=ee(),i=ee(),s=ee(),c=ee(),[u,d]=vg(),p=I(()=>e.tabPosition===\"top\"||e.tabPosition===\"bottom\"),[m,g]=Fb(0,(X,U)=>{p.value&&e.onTabScroll&&e.onTabScroll({direction:X>U?\"left\":\"right\"})}),[v,y]=Fb(0,(X,U)=>{!p.value&&e.onTabScroll&&e.onTabScroll({direction:X>U?\"top\":\"bottom\"})}),[b,S]=ht(0),[$,w]=ht(0),[C,_]=ht(null),[x,P]=ht(null),[O,M]=ht(0),[E,R]=ht(0),[D,z]=dN(new Map),T=pN(r,D),k=I(()=>`${l.value}-nav-operations-hidden`),B=ee(0),L=ee(0);ze(()=>{p.value?e.rtl?(B.value=0,L.value=Math.max(0,b.value-C.value)):(B.value=Math.min(0,C.value-b.value),L.value=0):(B.value=Math.min(0,x.value-$.value),L.value=0)});const N=X=>X<B.value?B.value:X>L.value?L.value:X,F=ee(),[j,H]=ht(),K=()=>{H(Date.now())},G=()=>{clearTimeout(F.value)},V=(X,U)=>{X(ie=>N(ie+U))};bN(a,(X,U)=>{if(p.value){if(C.value>=b.value)return!1;V(g,X)}else{if(x.value>=$.value)return!1;V(y,U)}return G(),K(),!0}),pe(j,()=>{G(),j.value&&(F.value=setTimeout(()=>{H(0)},100))});const q=function(){let X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activeKey;const U=T.value.get(X)||{width:0,height:0,left:0,right:0,top:0};if(p.value){let ie=m.value;e.rtl?U.right<m.value?ie=U.right:U.right+U.width>m.value+C.value&&(ie=U.right+U.width-C.value):U.left<-m.value?ie=-U.left:U.left+U.width>-m.value+C.value&&(ie=-(U.left+U.width-C.value)),y(0),g(N(ie))}else{let ie=v.value;U.top<-v.value?ie=-U.top:U.top+U.height>-v.value+x.value&&(ie=-(U.top+U.height-x.value)),g(0),y(N(ie))}},Z=ee(0),oe=ee(0);ze(()=>{let X,U,ie,ve,me,he;const se=T.value;[\"top\",\"bottom\"].includes(e.tabPosition)?(X=\"width\",ve=C.value,me=b.value,he=O.value,U=e.rtl?\"right\":\"left\",ie=Math.abs(m.value)):(X=\"height\",ve=x.value,me=b.value,he=E.value,U=\"top\",ie=-v.value);let te=ve;me+he>ve&&me<ve&&(te=ve-he);const ae=r.value;if(!ae.length)return[Z.value,oe.value]=[0,0];const fe=ae.length;let Ie=fe;for(let Re=0;Re<fe;Re+=1){const $e=se.get(ae[Re].key)||zb;if($e[U]+$e[X]>ie+te){Ie=Re-1;break}}let Te=0;for(let Re=fe-1;Re>=0;Re-=1)if((se.get(ae[Re].key)||zb)[U]<ie){Te=Re+1;break}return[Z.value,oe.value]=[Te,Ie]});const re=()=>{z(()=>{var X;const U=new Map,ie=(X=i.value)===null||X===void 0?void 0:X.getBoundingClientRect();return r.value.forEach(ve=>{let{key:me}=ve;const he=d.value.get(me),se=he?.$el||he;if(se){const[te,ae,fe,Ie]=SN(se,ie);U.set(me,{width:te,height:ae,left:fe,top:Ie})}}),U})};pe(()=>r.value.map(X=>X.key).join(\"%%\"),()=>{re()},{flush:\"post\"});const Y=()=>{var X,U,ie,ve,me;const he=((X=a.value)===null||X===void 0?void 0:X.offsetWidth)||0,se=((U=a.value)===null||U===void 0?void 0:U.offsetHeight)||0,te=((ie=c.value)===null||ie===void 0?void 0:ie.$el)||{},ae=te.offsetWidth||0,fe=te.offsetHeight||0;_(he),P(se),M(ae),R(fe);const Ie=(((ve=i.value)===null||ve===void 0?void 0:ve.offsetWidth)||0)-ae,Te=(((me=i.value)===null||me===void 0?void 0:me.offsetHeight)||0)-fe;S(Ie),w(Te),re()},Q=I(()=>[...r.value.slice(0,Z.value),...r.value.slice(oe.value+1)]),[ce,ue]=ht(),be=I(()=>T.value.get(e.activeKey)),Ce=ee(),ge=()=>{qe.cancel(Ce.value)};pe([be,p,()=>e.rtl],()=>{const X={};be.value&&(p.value?(e.rtl?X.right=ol(be.value.right):X.left=ol(be.value.left),X.width=ol(be.value.width)):(X.top=ol(be.value.top),X.height=ol(be.value.height))),ge(),Ce.value=qe(()=>{ue(X)})}),pe([()=>e.activeKey,be,T,p],()=>{q()},{flush:\"post\"}),pe([()=>e.rtl,()=>e.tabBarGutter,()=>e.activeKey,()=>r.value],()=>{Y()},{flush:\"post\"});const Se=X=>{let{position:U,prefixCls:ie,extra:ve}=X;if(!ve)return null;const me=ve?.({position:U});return me?f(\"div\",{class:`${ie}-extra-content`},[me]):null};return et(()=>{G(),ge()}),()=>{const{id:X,animated:U,activeKey:ie,rtl:ve,editable:me,locale:he,tabPosition:se,tabBarGutter:te,onTabClick:ae}=e,{class:fe,style:Ie}=n,Te=l.value,Re=!!Q.value.length,$e=`${Te}-nav-wrap`;let xe,_e,Me,He;p.value?ve?(_e=m.value>0,xe=m.value+C.value<b.value):(xe=m.value<0,_e=-m.value+C.value<b.value):(Me=v.value<0,He=-v.value+x.value<$.value);const Ae={};se===\"top\"||se===\"bottom\"?Ae[ve?\"marginRight\":\"marginLeft\"]=typeof te==\"number\"?`${te}px`:te:Ae.marginTop=typeof te==\"number\"?`${te}px`:te;const je=r.value.map((at,ft)=>{const{key:st}=at;return f(fN,{id:X,prefixCls:Te,key:st,tab:at,style:ft===0?void 0:Ae,closable:at.closable,editable:me,active:st===ie,removeAriaLabel:he?.removeAriaLabel,ref:u(st),onClick:pt=>{ae(st,pt)},onFocus:()=>{q(st),K(),a.value&&(ve||(a.value.scrollLeft=0),a.value.scrollTop=0)}},o)});return f(\"div\",{role:\"tablist\",class:le(`${Te}-nav`,fe),style:Ie,onKeydown:()=>{K()}},[f(Se,{position:\"left\",prefixCls:Te,extra:o.leftExtra},null),f(go,{onResize:Y},{default:()=>[f(\"div\",{class:le($e,{[`${$e}-ping-left`]:xe,[`${$e}-ping-right`]:_e,[`${$e}-ping-top`]:Me,[`${$e}-ping-bottom`]:He}),ref:a},[f(go,{onResize:Y},{default:()=>[f(\"div\",{ref:i,class:`${Te}-nav-list`,style:{transform:`translate(${m.value}px, ${v.value}px)`,transition:j.value?\"none\":void 0}},[je,f(Ax,{ref:c,prefixCls:Te,locale:he,editable:me,style:h(h({},je.length===0?void 0:Ae),{visibility:Re?\"hidden\":null})},null),f(\"div\",{class:le(`${Te}-ink-bar`,{[`${Te}-ink-bar-animated`]:U.inkBar}),style:ce.value},null)])]})])]}),f(vN,A(A({},e),{},{removeAriaLabel:he?.removeAriaLabel,ref:s,prefixCls:Te,tabs:Q.value,class:!Re&&k.value}),c$(o,[\"moreIcon\"])),f(Se,{position:\"right\",prefixCls:Te,extra:o.rightExtra},null),f(Se,{position:\"right\",prefixCls:Te,extra:o.tabBarExtraContent},null)])}}}),$N=ne({compatConfig:{MODE:3},name:\"TabPanelList\",inheritAttrs:!1,props:{activeKey:{type:[String,Number]},id:{type:String},rtl:{type:Boolean},animated:{type:Object,default:void 0},tabPosition:{type:String},destroyInactiveTabPane:{type:Boolean}},setup(e){const{tabs:t,prefixCls:n}=Rx();return()=>{const{id:o,activeKey:r,animated:l,tabPosition:a,rtl:i,destroyInactiveTabPane:s}=e,c=l.tabPane,u=n.value,d=t.value.findIndex(p=>p.key===r);return f(\"div\",{class:`${u}-content-holder`},[f(\"div\",{class:[`${u}-content`,`${u}-content-${a}`,{[`${u}-content-animated`]:c}],style:d&&c?{[i?\"marginRight\":\"marginLeft\"]:`-${d}00%`}:null},[t.value.map(p=>dt(p.node,{key:p.key,prefixCls:u,tabKey:p.key,id:o,animated:c,active:p.key===r,destroyInactiveTabPane:s}))])])}}}),CN=e=>{const{componentCls:t,motionDurationSlow:n}=e;return[{[t]:{[`${t}-switch`]:{\"&-appear, &-enter\":{transition:\"none\",\"&-start\":{opacity:0},\"&-active\":{opacity:1,transition:`opacity ${n}`}},\"&-leave\":{position:\"absolute\",transition:\"none\",inset:0,\"&-start\":{opacity:1},\"&-active\":{opacity:0,transition:`opacity ${n}`}}}}},[Go(e,\"slide-up\"),Go(e,\"slide-down\")]]},xN=e=>{const{componentCls:t,tabsCardHorizontalPadding:n,tabsCardHeadBackground:o,tabsCardGutter:r,colorSplit:l}=e;return{[`${t}-card`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{margin:0,padding:n,background:o,border:`${e.lineWidth}px ${e.lineType} ${l}`,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOut}`},[`${t}-tab-active`]:{color:e.colorPrimary,background:e.colorBgContainer},[`${t}-ink-bar`]:{visibility:\"hidden\"}},[`&${t}-top, &${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab + ${t}-tab`]:{marginLeft:{_skip_check_:!0,value:`${r}px`}}}},[`&${t}-top`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`},[`${t}-tab-active`]:{borderBottomColor:e.colorBgContainer}}},[`&${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`},[`${t}-tab-active`]:{borderTopColor:e.colorBgContainer}}},[`&${t}-left, &${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab + ${t}-tab`]:{marginTop:`${r}px`}}},[`&${t}-left`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`${e.borderRadiusLG}px 0 0 ${e.borderRadiusLG}px`}},[`${t}-tab-active`]:{borderRightColor:{_skip_check_:!0,value:e.colorBgContainer}}}},[`&${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px 0`}},[`${t}-tab-active`]:{borderLeftColor:{_skip_check_:!0,value:e.colorBgContainer}}}}}}},wN=e=>{const{componentCls:t,tabsHoverColor:n,dropdownEdgeChildVerticalPadding:o}=e;return{[`${t}-dropdown`]:h(h({},Ue(e)),{position:\"absolute\",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:e.zIndexPopup,display:\"block\",\"&-hidden\":{display:\"none\"},[`${t}-dropdown-menu`]:{maxHeight:e.tabsDropdownHeight,margin:0,padding:`${o}px 0`,overflowX:\"hidden\",overflowY:\"auto\",textAlign:{_skip_check_:!0,value:\"left\"},listStyleType:\"none\",backgroundColor:e.colorBgContainer,backgroundClip:\"padding-box\",borderRadius:e.borderRadiusLG,outline:\"none\",boxShadow:e.boxShadowSecondary,\"&-item\":h(h({},Gt),{display:\"flex\",alignItems:\"center\",minWidth:e.tabsDropdownWidth,margin:0,padding:`${e.paddingXXS}px ${e.paddingSM}px`,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,lineHeight:e.lineHeight,cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,\"> span\":{flex:1,whiteSpace:\"nowrap\"},\"&-remove\":{flex:\"none\",marginLeft:{_skip_check_:!0,value:e.marginSM},color:e.colorTextDescription,fontSize:e.fontSizeSM,background:\"transparent\",border:0,cursor:\"pointer\",\"&:hover\":{color:n}},\"&:hover\":{background:e.controlItemBgHover},\"&-disabled\":{\"&, &:hover\":{color:e.colorTextDisabled,background:\"transparent\",cursor:\"not-allowed\"}}})}})}},_N=e=>{const{componentCls:t,margin:n,colorSplit:o}=e;return{[`${t}-top, ${t}-bottom`]:{flexDirection:\"column\",[`> ${t}-nav, > div > ${t}-nav`]:{margin:`0 0 ${n}px 0`,\"&::before\":{position:\"absolute\",right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},borderBottom:`${e.lineWidth}px ${e.lineType} ${o}`,content:\"''\"},[`${t}-ink-bar`]:{height:e.lineWidthBold,\"&-animated\":{transition:`width ${e.motionDurationSlow}, left ${e.motionDurationSlow},\n            right ${e.motionDurationSlow}`}},[`${t}-nav-wrap`]:{\"&::before, &::after\":{top:0,bottom:0,width:e.controlHeight},\"&::before\":{left:{_skip_check_:!0,value:0},boxShadow:e.boxShadowTabsOverflowLeft},\"&::after\":{right:{_skip_check_:!0,value:0},boxShadow:e.boxShadowTabsOverflowRight},[`&${t}-nav-wrap-ping-left::before`]:{opacity:1},[`&${t}-nav-wrap-ping-right::after`]:{opacity:1}}}},[`${t}-top`]:{[`> ${t}-nav,\n        > div > ${t}-nav`]:{\"&::before\":{bottom:0},[`${t}-ink-bar`]:{bottom:0}}},[`${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{order:1,marginTop:`${n}px`,marginBottom:0,\"&::before\":{top:0},[`${t}-ink-bar`]:{top:0}},[`> ${t}-content-holder, > div > ${t}-content-holder`]:{order:0}},[`${t}-left, ${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{flexDirection:\"column\",minWidth:e.controlHeight*1.25,[`${t}-tab`]:{padding:`${e.paddingXS}px ${e.paddingLG}px`,textAlign:\"center\"},[`${t}-tab + ${t}-tab`]:{margin:`${e.margin}px 0 0 0`},[`${t}-nav-wrap`]:{flexDirection:\"column\",\"&::before, &::after\":{right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},height:e.controlHeight},\"&::before\":{top:0,boxShadow:e.boxShadowTabsOverflowTop},\"&::after\":{bottom:0,boxShadow:e.boxShadowTabsOverflowBottom},[`&${t}-nav-wrap-ping-top::before`]:{opacity:1},[`&${t}-nav-wrap-ping-bottom::after`]:{opacity:1}},[`${t}-ink-bar`]:{width:e.lineWidthBold,\"&-animated\":{transition:`height ${e.motionDurationSlow}, top ${e.motionDurationSlow}`}},[`${t}-nav-list, ${t}-nav-operations`]:{flex:\"1 0 auto\",flexDirection:\"column\"}}},[`${t}-left`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-ink-bar`]:{right:{_skip_check_:!0,value:0}}},[`> ${t}-content-holder, > div > ${t}-content-holder`]:{marginLeft:{_skip_check_:!0,value:`-${e.lineWidth}px`},borderLeft:{_skip_check_:!0,value:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},[`> ${t}-content > ${t}-tabpane`]:{paddingLeft:{_skip_check_:!0,value:e.paddingLG}}}},[`${t}-right`]:{[`> ${t}-nav, > div > ${t}-nav`]:{order:1,[`${t}-ink-bar`]:{left:{_skip_check_:!0,value:0}}},[`> ${t}-content-holder, > div > ${t}-content-holder`]:{order:0,marginRight:{_skip_check_:!0,value:-e.lineWidth},borderRight:{_skip_check_:!0,value:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},[`> ${t}-content > ${t}-tabpane`]:{paddingRight:{_skip_check_:!0,value:e.paddingLG}}}}}},IN=e=>{const{componentCls:t,padding:n}=e;return{[t]:{\"&-small\":{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${e.paddingXS}px 0`,fontSize:e.fontSize}}},\"&-large\":{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${n}px 0`,fontSize:e.fontSizeLG}}}},[`${t}-card`]:{[`&${t}-small`]:{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${e.paddingXXS*1.5}px ${n}px`}},[`&${t}-bottom`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:`0 0 ${e.borderRadius}px ${e.borderRadius}px`}},[`&${t}-top`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:`${e.borderRadius}px ${e.borderRadius}px 0 0`}},[`&${t}-right`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`0 ${e.borderRadius}px ${e.borderRadius}px 0`}}},[`&${t}-left`]:{[`> ${t}-nav ${t}-tab`]:{borderRadius:{_skip_check_:!0,value:`${e.borderRadius}px 0 0 ${e.borderRadius}px`}}}},[`&${t}-large`]:{[`> ${t}-nav`]:{[`${t}-tab`]:{padding:`${e.paddingXS}px ${n}px ${e.paddingXXS*1.5}px`}}}}}},PN=e=>{const{componentCls:t,tabsActiveColor:n,tabsHoverColor:o,iconCls:r,tabsHorizontalGutter:l}=e,a=`${t}-tab`;return{[a]:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",padding:`${e.paddingSM}px 0`,fontSize:`${e.fontSize}px`,background:\"transparent\",border:0,outline:\"none\",cursor:\"pointer\",\"&-btn, &-remove\":h({\"&:focus:not(:focus-visible), &:active\":{color:n}},fr(e)),\"&-btn\":{outline:\"none\",transition:\"all 0.3s\"},\"&-remove\":{flex:\"none\",marginRight:{_skip_check_:!0,value:-e.marginXXS},marginLeft:{_skip_check_:!0,value:e.marginXS},color:e.colorTextDescription,fontSize:e.fontSizeSM,background:\"transparent\",border:\"none\",outline:\"none\",cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,\"&:hover\":{color:e.colorTextHeading}},\"&:hover\":{color:o},[`&${a}-active ${a}-btn`]:{color:e.colorPrimary,textShadow:e.tabsActiveTextShadow},[`&${a}-disabled`]:{color:e.colorTextDisabled,cursor:\"not-allowed\"},[`&${a}-disabled ${a}-btn, &${a}-disabled ${t}-remove`]:{\"&:focus, &:active\":{color:e.colorTextDisabled}},[`& ${a}-remove ${r}`]:{margin:0},[r]:{marginRight:{_skip_check_:!0,value:e.marginSM}}},[`${a} + ${a}`]:{margin:{_skip_check_:!0,value:`0 0 0 ${l}px`}}}},TN=e=>{const{componentCls:t,tabsHorizontalGutter:n,iconCls:o,tabsCardGutter:r}=e;return{[`${t}-rtl`]:{direction:\"rtl\",[`${t}-nav`]:{[`${t}-tab`]:{margin:{_skip_check_:!0,value:`0 0 0 ${n}px`},[`${t}-tab:last-of-type`]:{marginLeft:{_skip_check_:!0,value:0}},[o]:{marginRight:{_skip_check_:!0,value:0},marginLeft:{_skip_check_:!0,value:`${e.marginSM}px`}},[`${t}-tab-remove`]:{marginRight:{_skip_check_:!0,value:`${e.marginXS}px`},marginLeft:{_skip_check_:!0,value:`-${e.marginXXS}px`},[o]:{margin:0}}}},[`&${t}-left`]:{[`> ${t}-nav`]:{order:1},[`> ${t}-content-holder`]:{order:0}},[`&${t}-right`]:{[`> ${t}-nav`]:{order:0},[`> ${t}-content-holder`]:{order:1}},[`&${t}-card${t}-top, &${t}-card${t}-bottom`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-tab + ${t}-tab`]:{marginRight:{_skip_check_:!0,value:`${r}px`},marginLeft:{_skip_check_:!0,value:0}}}}},[`${t}-dropdown-rtl`]:{direction:\"rtl\"},[`${t}-menu-item`]:{[`${t}-dropdown-rtl`]:{textAlign:{_skip_check_:!0,value:\"right\"}}}}},ON=e=>{const{componentCls:t,tabsCardHorizontalPadding:n,tabsCardHeight:o,tabsCardGutter:r,tabsHoverColor:l,tabsActiveColor:a,colorSplit:i}=e;return{[t]:h(h(h(h({},Ue(e)),{display:\"flex\",[`> ${t}-nav, > div > ${t}-nav`]:{position:\"relative\",display:\"flex\",flex:\"none\",alignItems:\"center\",[`${t}-nav-wrap`]:{position:\"relative\",display:\"flex\",flex:\"auto\",alignSelf:\"stretch\",overflow:\"hidden\",whiteSpace:\"nowrap\",transform:\"translate(0)\",\"&::before, &::after\":{position:\"absolute\",zIndex:1,opacity:0,transition:`opacity ${e.motionDurationSlow}`,content:\"''\",pointerEvents:\"none\"}},[`${t}-nav-list`]:{position:\"relative\",display:\"flex\",transition:`opacity ${e.motionDurationSlow}`},[`${t}-nav-operations`]:{display:\"flex\",alignSelf:\"stretch\"},[`${t}-nav-operations-hidden`]:{position:\"absolute\",visibility:\"hidden\",pointerEvents:\"none\"},[`${t}-nav-more`]:{position:\"relative\",padding:n,background:\"transparent\",border:0,\"&::after\":{position:\"absolute\",right:{_skip_check_:!0,value:0},bottom:0,left:{_skip_check_:!0,value:0},height:e.controlHeightLG/8,transform:\"translateY(100%)\",content:\"''\"}},[`${t}-nav-add`]:h({minWidth:`${o}px`,marginLeft:{_skip_check_:!0,value:`${r}px`},padding:`0 ${e.paddingXS}px`,background:\"transparent\",border:`${e.lineWidth}px ${e.lineType} ${i}`,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`,outline:\"none\",cursor:\"pointer\",color:e.colorText,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOut}`,\"&:hover\":{color:l},\"&:active, &:focus:not(:focus-visible)\":{color:a}},fr(e))},[`${t}-extra-content`]:{flex:\"none\"},[`${t}-ink-bar`]:{position:\"absolute\",background:e.colorPrimary,pointerEvents:\"none\"}}),PN(e)),{[`${t}-content`]:{position:\"relative\",display:\"flex\",width:\"100%\",\"&-animated\":{transition:\"margin 0.3s\"}},[`${t}-content-holder`]:{flex:\"auto\",minWidth:0,minHeight:0},[`${t}-tabpane`]:{outline:\"none\",flex:\"none\",width:\"100%\"}}),[`${t}-centered`]:{[`> ${t}-nav, > div > ${t}-nav`]:{[`${t}-nav-wrap`]:{[`&:not([class*='${t}-nav-wrap-ping'])`]:{justifyContent:\"center\"}}}}}},EN=Ge(\"Tabs\",e=>{const t=e.controlHeightLG,n=Le(e,{tabsHoverColor:e.colorPrimaryHover,tabsActiveColor:e.colorPrimaryActive,tabsCardHorizontalPadding:`${(t-Math.round(e.fontSize*e.lineHeight))/2-e.lineWidth}px ${e.padding}px`,tabsCardHeight:t,tabsCardGutter:e.marginXXS/2,tabsHorizontalGutter:32,tabsCardHeadBackground:e.colorFillAlter,dropdownEdgeChildVerticalPadding:e.paddingXXS,tabsActiveTextShadow:\"0 0 0.25px currentcolor\",tabsDropdownHeight:200,tabsDropdownWidth:120});return[IN(n),TN(n),_N(n),wN(n),xN(n),ON(n),CN(n)]},e=>({zIndexPopup:e.zIndexPopupBase+50}));let jb=0;const kx=()=>({prefixCls:{type:String},id:{type:String},popupClassName:String,getPopupContainer:de(),activeKey:{type:[String,Number]},defaultActiveKey:{type:[String,Number]},direction:ke(),animated:Fe([Boolean,Object]),renderTabBar:de(),tabBarGutter:{type:Number},tabBarStyle:De(),tabPosition:ke(),destroyInactiveTabPane:ye(),hideAdd:Boolean,type:ke(),size:ke(),centered:Boolean,onEdit:de(),onChange:de(),onTabClick:de(),onTabScroll:de(),\"onUpdate:activeKey\":de(),locale:De(),onPrevClick:de(),onNextClick:de(),tabBarExtraContent:W.any});function MN(e){return e.map(t=>{if(Kt(t)){const n=h({},t.props||{});for(const[p,m]of Object.entries(n))delete n[p],n[_a(p)]=m;const o=t.children||{},r=t.key!==void 0?t.key:void 0,{tab:l=o.tab,disabled:a,forceRender:i,closable:s,animated:c,active:u,destroyInactiveTabPane:d}=n;return h(h({key:r},n),{node:t,closeIcon:o.closeIcon,tab:l,disabled:a===\"\"||a,forceRender:i===\"\"||i,closable:s===\"\"||s,animated:c===\"\"||c,active:u===\"\"||u,destroyInactiveTabPane:d===\"\"||d})}return null}).filter(t=>t)}const AN=ne({compatConfig:{MODE:3},name:\"InternalTabs\",inheritAttrs:!1,props:h(h({},Ze(kx(),{tabPosition:\"top\",animated:{inkBar:!0,tabPane:!1}})),{tabs:ct()}),slots:Object,setup(e,t){let{attrs:n,slots:o}=t;Ot(e.onPrevClick===void 0&&e.onNextClick===void 0,\"Tabs\",\"`onPrevClick / @prevClick` and `onNextClick / @nextClick` has been removed. Please use `onTabScroll / @tabScroll` instead.\"),Ot(e.tabBarExtraContent===void 0,\"Tabs\",\"`tabBarExtraContent` prop has been removed. Please use `rightExtra` slot instead.\"),Ot(o.tabBarExtraContent===void 0,\"Tabs\",\"`tabBarExtraContent` slot is deprecated. Please use `rightExtra` slot instead.\");const{prefixCls:r,direction:l,size:a,rootPrefixCls:i,getPopupContainer:s}=Pe(\"tabs\",e),[c,u]=EN(r),d=I(()=>l.value===\"rtl\"),p=I(()=>{const{animated:x,tabPosition:P}=e;return x===!1||[\"left\",\"right\"].includes(P)?{inkBar:!1,tabPane:!1}:x===!0?{inkBar:!0,tabPane:!0}:h({inkBar:!0,tabPane:!1},typeof x==\"object\"?x:{})}),[m,g]=ht(!1);Ne(()=>{g(bv())});const[v,y]=Mt(()=>{var x;return(x=e.tabs[0])===null||x===void 0?void 0:x.key},{value:I(()=>e.activeKey),defaultValue:e.defaultActiveKey}),[b,S]=ht(()=>e.tabs.findIndex(x=>x.key===v.value));ze(()=>{var x;let P=e.tabs.findIndex(O=>O.key===v.value);P===-1&&(P=Math.max(0,Math.min(b.value,e.tabs.length-1)),y((x=e.tabs[P])===null||x===void 0?void 0:x.key)),S(P)});const[$,w]=Mt(null,{value:I(()=>e.id)}),C=I(()=>m.value&&![\"left\",\"right\"].includes(e.tabPosition)?\"top\":e.tabPosition);Ne(()=>{e.id||(w(`rc-tabs-${jb}`),jb+=1)});const _=(x,P)=>{var O,M;(O=e.onTabClick)===null||O===void 0||O.call(e,x,P);const E=x!==v.value;y(x),E&&((M=e.onChange)===null||M===void 0||M.call(e,x))};return gN({tabs:I(()=>e.tabs),prefixCls:r}),()=>{const{id:x,type:P,tabBarGutter:O,tabBarStyle:M,locale:E,destroyInactiveTabPane:R,renderTabBar:D=o.renderTabBar,onTabScroll:z,hideAdd:T,centered:k}=e,B={id:$.value,activeKey:v.value,animated:p.value,tabPosition:C.value,rtl:d.value,mobile:m.value};let L;P===\"editable-card\"&&(L={onEdit:(H,K)=>{let{key:G,event:V}=K;var q;(q=e.onEdit)===null||q===void 0||q.call(e,H===\"add\"?V:G,H)},removeIcon:()=>f(Wn,null,null),addIcon:o.addIcon?o.addIcon:()=>f(AI,null,null),showAdd:T!==!0});let N;const F=h(h({},B),{moreTransitionName:`${i.value}-slide-up`,editable:L,locale:E,tabBarGutter:O,onTabClick:_,onTabScroll:z,style:M,getPopupContainer:s.value,popupClassName:le(e.popupClassName,u.value)});D?N=D(h(h({},F),{DefaultTabBar:Hb})):N=f(Hb,F,c$(o,[\"moreIcon\",\"leftExtra\",\"rightExtra\",\"tabBarExtraContent\"]));const j=r.value;return c(f(\"div\",A(A({},n),{},{id:x,class:le(j,`${j}-${C.value}`,{[u.value]:!0,[`${j}-${a.value}`]:a.value,[`${j}-card`]:[\"card\",\"editable-card\"].includes(P),[`${j}-editable-card`]:P===\"editable-card\",[`${j}-centered`]:k,[`${j}-mobile`]:m.value,[`${j}-editable`]:P===\"editable-card\",[`${j}-rtl`]:d.value},n.class)}),[N,f($N,A(A({destroyInactiveTabPane:R},B),{},{animated:p.value}),null)]))}}}),Dr=ne({compatConfig:{MODE:3},name:\"ATabs\",inheritAttrs:!1,props:Ze(kx(),{tabPosition:\"top\",animated:{inkBar:!0,tabPane:!1}}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:r}=t;const l=a=>{r(\"update:activeKey\",a),r(\"change\",a)};return()=>{var a;const i=MN($t((a=o.default)===null||a===void 0?void 0:a.call(o)));return f(AN,A(A(A({},ot(e,[\"onUpdate:activeKey\"])),n),{},{onChange:l,tabs:i}),o)}}}),DN=()=>({tab:W.any,disabled:{type:Boolean},forceRender:{type:Boolean},closable:{type:Boolean},animated:{type:Boolean},active:{type:Boolean},destroyInactiveTabPane:{type:Boolean},prefixCls:{type:String},tabKey:{type:[String,Number]},id:{type:String}}),Ii=ne({compatConfig:{MODE:3},name:\"ATabPane\",inheritAttrs:!1,__ANT_TAB_PANE:!0,props:DN(),slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const r=J(e.forceRender);pe([()=>e.active,()=>e.destroyInactiveTabPane],()=>{e.active?r.value=!0:e.destroyInactiveTabPane&&(r.value=!1)},{immediate:!0});const l=I(()=>e.active?{}:e.animated?{visibility:\"hidden\",height:0,overflowY:\"hidden\"}:{display:\"none\"});return()=>{var a;const{prefixCls:i,forceRender:s,id:c,active:u,tabKey:d}=e;return f(\"div\",{id:c&&`${c}-panel-${d}`,role:\"tabpanel\",tabindex:u?0:-1,\"aria-labelledby\":c&&`${c}-tab-${d}`,\"aria-hidden\":!u,style:[l.value,n.style],class:[`${i}-tabpane`,u&&`${i}-tabpane-active`,n.class]},[(u||r.value||s)&&((a=o.default)===null||a===void 0?void 0:a.call(o))])}}});Dr.TabPane=Ii;Dr.install=function(e){return e.component(Dr.name,Dr),e.component(Ii.name,Ii),e};const RN=e=>{const{antCls:t,componentCls:n,cardHeadHeight:o,cardPaddingBase:r,cardHeadTabsMarginBottom:l}=e;return h(h({display:\"flex\",justifyContent:\"center\",flexDirection:\"column\",minHeight:o,marginBottom:-1,padding:`0 ${r}px`,color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG,background:\"transparent\",borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorderSecondary}`,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`},Mo()),{\"&-wrapper\":{width:\"100%\",display:\"flex\",alignItems:\"center\"},\"&-title\":h(h({display:\"inline-block\",flex:1},Gt),{[`\n          > ${n}-typography,\n          > ${n}-typography-edit-content\n        `]:{insetInlineStart:0,marginTop:0,marginBottom:0}}),[`${t}-tabs-top`]:{clear:\"both\",marginBottom:l,color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,\"&-bar\":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorderSecondary}`}}})},kN=e=>{const{cardPaddingBase:t,colorBorderSecondary:n,cardShadow:o,lineWidth:r}=e;return{width:\"33.33%\",padding:t,border:0,borderRadius:0,boxShadow:`\n      ${r}px 0 0 0 ${n},\n      0 ${r}px 0 0 ${n},\n      ${r}px ${r}px 0 0 ${n},\n      ${r}px 0 0 0 ${n} inset,\n      0 ${r}px 0 0 ${n} inset;\n    `,transition:`all ${e.motionDurationMid}`,\"&-hoverable:hover\":{position:\"relative\",zIndex:1,boxShadow:o}}},NN=e=>{const{componentCls:t,iconCls:n,cardActionsLiMargin:o,cardActionsIconSize:r,colorBorderSecondary:l}=e;return h(h({margin:0,padding:0,listStyle:\"none\",background:e.colorBgContainer,borderTop:`${e.lineWidth}px ${e.lineType} ${l}`,display:\"flex\",borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px `},Mo()),{\"& > li\":{margin:o,color:e.colorTextDescription,textAlign:\"center\",\"> span\":{position:\"relative\",display:\"block\",minWidth:e.cardActionsIconSize*2,fontSize:e.fontSize,lineHeight:e.lineHeight,cursor:\"pointer\",\"&:hover\":{color:e.colorPrimary,transition:`color ${e.motionDurationMid}`},[`a:not(${t}-btn), > ${n}`]:{display:\"inline-block\",width:\"100%\",color:e.colorTextDescription,lineHeight:`${e.fontSize*e.lineHeight}px`,transition:`color ${e.motionDurationMid}`,\"&:hover\":{color:e.colorPrimary}},[`> ${n}`]:{fontSize:r,lineHeight:`${r*e.lineHeight}px`}},\"&:not(:last-child)\":{borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${l}`}}})},BN=e=>h(h({margin:`-${e.marginXXS}px 0`,display:\"flex\"},Mo()),{\"&-avatar\":{paddingInlineEnd:e.padding},\"&-detail\":{overflow:\"hidden\",flex:1,\"> div:not(:last-child)\":{marginBottom:e.marginXS}},\"&-title\":h({color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG},Gt),\"&-description\":{color:e.colorTextDescription}}),LN=e=>{const{componentCls:t,cardPaddingBase:n,colorFillAlter:o}=e;return{[`${t}-head`]:{padding:`0 ${n}px`,background:o,\"&-title\":{fontSize:e.fontSize}},[`${t}-body`]:{padding:`${e.padding}px ${n}px`}}},FN=e=>{const{componentCls:t}=e;return{overflow:\"hidden\",[`${t}-body`]:{userSelect:\"none\"}}},zN=e=>{const{componentCls:t,cardShadow:n,cardHeadPadding:o,colorBorderSecondary:r,boxShadow:l,cardPaddingBase:a}=e;return{[t]:h(h({},Ue(e)),{position:\"relative\",background:e.colorBgContainer,borderRadius:e.borderRadiusLG,[`&:not(${t}-bordered)`]:{boxShadow:l},[`${t}-head`]:RN(e),[`${t}-extra`]:{marginInlineStart:\"auto\",color:\"\",fontWeight:\"normal\",fontSize:e.fontSize},[`${t}-body`]:h({padding:a,borderRadius:` 0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`},Mo()),[`${t}-grid`]:kN(e),[`${t}-cover`]:{\"> *\":{display:\"block\",width:\"100%\"},img:{borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`}},[`${t}-actions`]:NN(e),[`${t}-meta`]:BN(e)}),[`${t}-bordered`]:{border:`${e.lineWidth}px ${e.lineType} ${r}`,[`${t}-cover`]:{marginTop:-1,marginInlineStart:-1,marginInlineEnd:-1}},[`${t}-hoverable`]:{cursor:\"pointer\",transition:`box-shadow ${e.motionDurationMid}, border-color ${e.motionDurationMid}`,\"&:hover\":{borderColor:\"transparent\",boxShadow:n}},[`${t}-contain-grid`]:{[`${t}-body`]:{display:\"flex\",flexWrap:\"wrap\"},[`&:not(${t}-loading) ${t}-body`]:{marginBlockStart:-e.lineWidth,marginInlineStart:-e.lineWidth,padding:0}},[`${t}-contain-tabs`]:{[`> ${t}-head`]:{[`${t}-head-title, ${t}-extra`]:{paddingTop:o}}},[`${t}-type-inner`]:LN(e),[`${t}-loading`]:FN(e),[`${t}-rtl`]:{direction:\"rtl\"}}},HN=e=>{const{componentCls:t,cardPaddingSM:n,cardHeadHeightSM:o}=e;return{[`${t}-small`]:{[`> ${t}-head`]:{minHeight:o,padding:`0 ${n}px`,fontSize:e.fontSize,[`> ${t}-head-wrapper`]:{[`> ${t}-extra`]:{fontSize:e.fontSize}}},[`> ${t}-body`]:{padding:n}},[`${t}-small${t}-contain-tabs`]:{[`> ${t}-head`]:{[`${t}-head-title, ${t}-extra`]:{minHeight:o,paddingTop:0,display:\"flex\",alignItems:\"center\"}}}}},jN=Ge(\"Card\",e=>{const t=Le(e,{cardShadow:e.boxShadowCard,cardHeadHeight:e.fontSizeLG*e.lineHeightLG+e.padding*2,cardHeadHeightSM:e.fontSize*e.lineHeight+e.paddingXS*2,cardHeadPadding:e.padding,cardPaddingBase:e.paddingLG,cardHeadTabsMarginBottom:-e.padding-e.lineWidth,cardActionsLiMargin:`${e.paddingSM}px 0`,cardActionsIconSize:e.fontSize,cardPaddingSM:12});return[zN(t),HN(t)]}),WN=()=>({prefixCls:String,width:{type:[Number,String]}}),ad=ne({compatConfig:{MODE:3},name:\"SkeletonTitle\",props:WN(),setup(e){return()=>{const{prefixCls:t,width:n}=e,o=typeof n==\"number\"?`${n}px`:n;return f(\"h3\",{class:t,style:{width:o}},null)}}}),VN=()=>({prefixCls:String,width:{type:[Number,String,Array]},rows:Number}),KN=ne({compatConfig:{MODE:3},name:\"SkeletonParagraph\",props:VN(),setup(e){const t=n=>{const{width:o,rows:r=2}=e;if(Array.isArray(o))return o[n];if(r-1===n)return o};return()=>{const{prefixCls:n,rows:o}=e,r=[...Array(o)].map((l,a)=>{const i=t(a);return f(\"li\",{key:a,style:{width:typeof i==\"number\"?`${i}px`:i}},null)});return f(\"ul\",{class:n},[r])}}}),id=()=>({prefixCls:String,size:[String,Number],shape:String,active:{type:Boolean,default:void 0}}),Vi=e=>{const{prefixCls:t,size:n,shape:o}=e,r=le({[`${t}-lg`]:n===\"large\",[`${t}-sm`]:n===\"small\"}),l=le({[`${t}-circle`]:o===\"circle\",[`${t}-square`]:o===\"square\",[`${t}-round`]:o===\"round\"}),a=typeof n==\"number\"?{width:`${n}px`,height:`${n}px`,lineHeight:`${n}px`}:{};return f(\"span\",{class:le(t,r,l),style:a},null)};Vi.displayName=\"SkeletonElement\";const GN=new lt(\"ant-skeleton-loading\",{\"0%\":{transform:\"translateX(-37.5%)\"},\"100%\":{transform:\"translateX(37.5%)\"}}),sd=e=>({height:e,lineHeight:`${e}px`}),oa=e=>h({width:e},sd(e)),XN=e=>({position:\"relative\",zIndex:0,overflow:\"hidden\",background:\"transparent\",\"&::after\":{position:\"absolute\",top:0,insetInlineEnd:\"-150%\",bottom:0,insetInlineStart:\"-150%\",background:e.skeletonLoadingBackground,animationName:GN,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:\"ease\",animationIterationCount:\"infinite\",content:'\"\"'}}),cf=e=>h({width:e*5,minWidth:e*5},sd(e)),UN=e=>{const{skeletonAvatarCls:t,color:n,controlHeight:o,controlHeightLG:r,controlHeightSM:l}=e;return{[`${t}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:n},oa(o)),[`${t}${t}-circle`]:{borderRadius:\"50%\"},[`${t}${t}-lg`]:h({},oa(r)),[`${t}${t}-sm`]:h({},oa(l))}},YN=e=>{const{controlHeight:t,borderRadiusSM:n,skeletonInputCls:o,controlHeightLG:r,controlHeightSM:l,color:a}=e;return{[`${o}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:a,borderRadius:n},cf(t)),[`${o}-lg`]:h({},cf(r)),[`${o}-sm`]:h({},cf(l))}},Wb=e=>h({width:e},sd(e)),qN=e=>{const{skeletonImageCls:t,imageSizeBase:n,color:o,borderRadiusSM:r}=e;return{[`${t}`]:h(h({display:\"flex\",alignItems:\"center\",justifyContent:\"center\",verticalAlign:\"top\",background:o,borderRadius:r},Wb(n*2)),{[`${t}-path`]:{fill:\"#bfbfbf\"},[`${t}-svg`]:h(h({},Wb(n)),{maxWidth:n*4,maxHeight:n*4}),[`${t}-svg${t}-svg-circle`]:{borderRadius:\"50%\"}}),[`${t}${t}-circle`]:{borderRadius:\"50%\"}}},uf=(e,t,n)=>{const{skeletonButtonCls:o}=e;return{[`${n}${o}-circle`]:{width:t,minWidth:t,borderRadius:\"50%\"},[`${n}${o}-round`]:{borderRadius:t}}},df=e=>h({width:e*2,minWidth:e*2},sd(e)),ZN=e=>{const{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:o,controlHeightLG:r,controlHeightSM:l,color:a}=e;return h(h(h(h(h({[`${n}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:a,borderRadius:t,width:o*2,minWidth:o*2},df(o))},uf(e,o,n)),{[`${n}-lg`]:h({},df(r))}),uf(e,r,`${n}-lg`)),{[`${n}-sm`]:h({},df(l))}),uf(e,l,`${n}-sm`))},QN=e=>{const{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:o,skeletonParagraphCls:r,skeletonButtonCls:l,skeletonInputCls:a,skeletonImageCls:i,controlHeight:s,controlHeightLG:c,controlHeightSM:u,color:d,padding:p,marginSM:m,borderRadius:g,skeletonTitleHeight:v,skeletonBlockRadius:y,skeletonParagraphLineHeight:b,controlHeightXS:S,skeletonParagraphMarginTop:$}=e;return{[`${t}`]:{display:\"table\",width:\"100%\",[`${t}-header`]:{display:\"table-cell\",paddingInlineEnd:p,verticalAlign:\"top\",[`${n}`]:h({display:\"inline-block\",verticalAlign:\"top\",background:d},oa(s)),[`${n}-circle`]:{borderRadius:\"50%\"},[`${n}-lg`]:h({},oa(c)),[`${n}-sm`]:h({},oa(u))},[`${t}-content`]:{display:\"table-cell\",width:\"100%\",verticalAlign:\"top\",[`${o}`]:{width:\"100%\",height:v,background:d,borderRadius:y,[`+ ${r}`]:{marginBlockStart:u}},[`${r}`]:{padding:0,\"> li\":{width:\"100%\",height:b,listStyle:\"none\",background:d,borderRadius:y,\"+ li\":{marginBlockStart:S}}},[`${r}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:\"61%\"}},[`&-round ${t}-content`]:{[`${o}, ${r} > li`]:{borderRadius:g}}},[`${t}-with-avatar ${t}-content`]:{[`${o}`]:{marginBlockStart:m,[`+ ${r}`]:{marginBlockStart:$}}},[`${t}${t}-element`]:h(h(h(h({display:\"inline-block\",width:\"auto\"},ZN(e)),UN(e)),YN(e)),qN(e)),[`${t}${t}-block`]:{width:\"100%\",[`${l}`]:{width:\"100%\"},[`${a}`]:{width:\"100%\"}},[`${t}${t}-active`]:{[`\n        ${o},\n        ${r} > li,\n        ${n},\n        ${l},\n        ${a},\n        ${i}\n      `]:h({},XN(e))}}},Ki=Ge(\"Skeleton\",e=>{const{componentCls:t}=e,n=Le(e,{skeletonAvatarCls:`${t}-avatar`,skeletonTitleCls:`${t}-title`,skeletonParagraphCls:`${t}-paragraph`,skeletonButtonCls:`${t}-button`,skeletonInputCls:`${t}-input`,skeletonImageCls:`${t}-image`,imageSizeBase:e.controlHeight*1.5,skeletonTitleHeight:e.controlHeight/2,skeletonBlockRadius:e.borderRadiusSM,skeletonParagraphLineHeight:e.controlHeight/2,skeletonParagraphMarginTop:e.marginLG+e.marginXXS,borderRadius:100,skeletonLoadingBackground:`linear-gradient(90deg, ${e.color} 25%, ${e.colorGradientEnd} 37%, ${e.color} 63%)`,skeletonLoadingMotionDuration:\"1.4s\"});return[QN(n)]},e=>{const{colorFillContent:t,colorFill:n}=e;return{color:t,colorGradientEnd:n}}),JN=()=>({active:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},prefixCls:String,avatar:{type:[Boolean,Object],default:void 0},title:{type:[Boolean,Object],default:void 0},paragraph:{type:[Boolean,Object],default:void 0},round:{type:Boolean,default:void 0}});function ff(e){return e&&typeof e==\"object\"?e:{}}function e8(e,t){return e&&!t?{size:\"large\",shape:\"square\"}:{size:\"large\",shape:\"circle\"}}function t8(e,t){return!e&&t?{width:\"38%\"}:e&&t?{width:\"50%\"}:{}}function n8(e,t){const n={};return(!e||!t)&&(n.width=\"61%\"),!e&&t?n.rows=3:n.rows=2,n}const Sn=ne({compatConfig:{MODE:3},name:\"ASkeleton\",props:Ze(JN(),{avatar:!1,title:!0,paragraph:!0}),setup(e,t){let{slots:n}=t;const{prefixCls:o,direction:r}=Pe(\"skeleton\",e),[l,a]=Ki(o);return()=>{var i;const{loading:s,avatar:c,title:u,paragraph:d,active:p,round:m}=e,g=o.value;if(s||e.loading===void 0){const v=!!c||c===\"\",y=!!u||u===\"\",b=!!d||d===\"\";let S;if(v){const C=h(h({prefixCls:`${g}-avatar`},e8(y,b)),ff(c));S=f(\"div\",{class:`${g}-header`},[f(Vi,C,null)])}let $;if(y||b){let C;if(y){const x=h(h({prefixCls:`${g}-title`},t8(v,b)),ff(u));C=f(ad,x,null)}let _;if(b){const x=h(h({prefixCls:`${g}-paragraph`},n8(v,y)),ff(d));_=f(KN,x,null)}$=f(\"div\",{class:`${g}-content`},[C,_])}const w=le(g,{[`${g}-with-avatar`]:v,[`${g}-active`]:p,[`${g}-rtl`]:r.value===\"rtl\",[`${g}-round`]:m,[a.value]:!0});return l(f(\"div\",{class:w},[S,$]))}return(i=n.default)===null||i===void 0?void 0:i.call(n)}}}),o8=()=>h(h({},id()),{size:String,block:Boolean}),gg=ne({compatConfig:{MODE:3},name:\"ASkeletonButton\",props:Ze(o8(),{size:\"default\"}),setup(e){const{prefixCls:t}=Pe(\"skeleton\",e),[n,o]=Ki(t),r=I(()=>le(t.value,`${t.value}-element`,{[`${t.value}-active`]:e.active,[`${t.value}-block`]:e.block},o.value));return()=>n(f(\"div\",{class:r.value},[f(Vi,A(A({},e),{},{prefixCls:`${t.value}-button`}),null)]))}}),cd=ne({compatConfig:{MODE:3},name:\"ASkeletonInput\",props:h(h({},ot(id(),[\"shape\"])),{size:String,block:Boolean}),setup(e){const{prefixCls:t}=Pe(\"skeleton\",e),[n,o]=Ki(t),r=I(()=>le(t.value,`${t.value}-element`,{[`${t.value}-active`]:e.active,[`${t.value}-block`]:e.block},o.value));return()=>n(f(\"div\",{class:r.value},[f(Vi,A(A({},e),{},{prefixCls:`${t.value}-input`}),null)]))}}),r8=\"M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z\",hg=ne({compatConfig:{MODE:3},name:\"ASkeletonImage\",props:ot(id(),[\"size\",\"shape\",\"active\"]),setup(e){const{prefixCls:t}=Pe(\"skeleton\",e),[n,o]=Ki(t),r=I(()=>le(t.value,`${t.value}-element`,o.value));return()=>n(f(\"div\",{class:r.value},[f(\"div\",{class:`${t.value}-image`},[f(\"svg\",{viewBox:\"0 0 1098 1024\",xmlns:\"http://www.w3.org/2000/svg\",class:`${t.value}-image-svg`},[f(\"path\",{d:r8,class:`${t.value}-image-path`},null)])])]))}}),l8=()=>h(h({},id()),{shape:String}),bg=ne({compatConfig:{MODE:3},name:\"ASkeletonAvatar\",props:Ze(l8(),{size:\"default\",shape:\"circle\"}),setup(e){const{prefixCls:t}=Pe(\"skeleton\",e),[n,o]=Ki(t),r=I(()=>le(t.value,`${t.value}-element`,{[`${t.value}-active`]:e.active},o.value));return()=>n(f(\"div\",{class:r.value},[f(Vi,A(A({},e),{},{prefixCls:`${t.value}-avatar`}),null)]))}});Sn.Button=gg;Sn.Avatar=bg;Sn.Input=cd;Sn.Image=hg;Sn.Title=ad;Sn.install=function(e){return e.component(Sn.name,Sn),e.component(Sn.Button.name,gg),e.component(Sn.Avatar.name,bg),e.component(Sn.Input.name,cd),e.component(Sn.Image.name,hg),e.component(Sn.Title.name,ad),e};const{TabPane:a8}=Dr,i8=()=>({prefixCls:String,title:W.any,extra:W.any,bordered:{type:Boolean,default:!0},bodyStyle:{type:Object,default:void 0},headStyle:{type:Object,default:void 0},loading:{type:Boolean,default:!1},hoverable:{type:Boolean,default:!1},type:{type:String},size:{type:String},actions:W.any,tabList:{type:Array},tabBarExtraContent:W.any,activeTabKey:String,defaultActiveTabKey:String,cover:W.any,onTabChange:{type:Function}}),gl=ne({compatConfig:{MODE:3},name:\"ACard\",inheritAttrs:!1,props:i8(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l,size:a}=Pe(\"card\",e),[i,s]=jN(r),c=p=>p.map((g,v)=>gn(g)&&!Ri(g)||!gn(g)?f(\"li\",{style:{width:`${100/p.length}%`},key:`action-${v}`},[f(\"span\",null,[g])]):null),u=p=>{var m;(m=e.onTabChange)===null||m===void 0||m.call(e,p)},d=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],m;return p.forEach(g=>{g&&u$(g.type)&&g.type.__ANT_CARD_GRID&&(m=!0)}),m};return()=>{var p,m,g,v,y,b;const{headStyle:S={},bodyStyle:$={},loading:w,bordered:C=!0,type:_,tabList:x,hoverable:P,activeTabKey:O,defaultActiveTabKey:M,tabBarExtraContent:E=za((p=n.tabBarExtraContent)===null||p===void 0?void 0:p.call(n)),title:R=za((m=n.title)===null||m===void 0?void 0:m.call(n)),extra:D=za((g=n.extra)===null||g===void 0?void 0:g.call(n)),actions:z=za((v=n.actions)===null||v===void 0?void 0:v.call(n)),cover:T=za((y=n.cover)===null||y===void 0?void 0:y.call(n))}=e,k=$t((b=n.default)===null||b===void 0?void 0:b.call(n)),B=r.value,L={[`${B}`]:!0,[s.value]:!0,[`${B}-loading`]:w,[`${B}-bordered`]:C,[`${B}-hoverable`]:!!P,[`${B}-contain-grid`]:d(k),[`${B}-contain-tabs`]:x&&x.length,[`${B}-${a.value}`]:a.value,[`${B}-type-${_}`]:!!_,[`${B}-rtl`]:l.value===\"rtl\"},N=f(Sn,{loading:!0,active:!0,paragraph:{rows:4},title:!1},{default:()=>[k]}),F=O!==void 0,j={size:\"large\",[F?\"activeKey\":\"defaultActiveKey\"]:F?O:M,onChange:u,class:`${B}-head-tabs`};let H;const K=x&&x.length?f(Dr,j,{default:()=>[x.map(Z=>{const{tab:oe,slots:re}=Z,Y=re?.tab;Ot(!re,\"Card\",\"tabList slots is deprecated, Please use `customTab` instead.\");let Q=oe!==void 0?oe:n[Y]?n[Y](Z):null;return Q=Wu(n,\"customTab\",Z,()=>[Q]),f(a8,{tab:Q,key:Z.key,disabled:Z.disabled},null)})],rightExtra:E?()=>E:null}):null;(R||D||K)&&(H=f(\"div\",{class:`${B}-head`,style:S},[f(\"div\",{class:`${B}-head-wrapper`},[R&&f(\"div\",{class:`${B}-head-title`},[R]),D&&f(\"div\",{class:`${B}-extra`},[D])]),K]));const G=T?f(\"div\",{class:`${B}-cover`},[T]):null,V=f(\"div\",{class:`${B}-body`,style:$},[w?N:k]),q=z&&z.length?f(\"ul\",{class:`${B}-actions`},[c(z)]):null;return i(f(\"div\",A(A({ref:\"cardContainerRef\"},o),{},{class:[L,o.class]}),[H,G,k&&k.length?V:null,q]))}}}),s8=()=>({prefixCls:String,title:$n(),description:$n(),avatar:$n()}),su=ne({compatConfig:{MODE:3},name:\"ACardMeta\",props:s8(),slots:Object,setup(e,t){let{slots:n}=t;const{prefixCls:o}=Pe(\"card\",e);return()=>{const r={[`${o.value}-meta`]:!0},l=Qt(n,e,\"avatar\"),a=Qt(n,e,\"title\"),i=Qt(n,e,\"description\"),s=l?f(\"div\",{class:`${o.value}-meta-avatar`},[l]):null,c=a?f(\"div\",{class:`${o.value}-meta-title`},[a]):null,u=i?f(\"div\",{class:`${o.value}-meta-description`},[i]):null,d=c||u?f(\"div\",{class:`${o.value}-meta-detail`},[c,u]):null;return f(\"div\",{class:r},[s,d])}}}),c8=()=>({prefixCls:String,hoverable:{type:Boolean,default:!0}}),cu=ne({compatConfig:{MODE:3},name:\"ACardGrid\",__ANT_CARD_GRID:!0,props:c8(),setup(e,t){let{slots:n}=t;const{prefixCls:o}=Pe(\"card\",e),r=I(()=>({[`${o.value}-grid`]:!0,[`${o.value}-grid-hoverable`]:e.hoverable}));return()=>{var l;return f(\"div\",{class:r.value},[(l=n.default)===null||l===void 0?void 0:l.call(n)])}}});gl.Meta=su;gl.Grid=cu;gl.install=function(e){return e.component(gl.name,gl),e.component(su.name,su),e.component(cu.name,cu),e};const u8=()=>({prefixCls:String,activeKey:Fe([Array,Number,String]),defaultActiveKey:Fe([Array,Number,String]),accordion:ye(),destroyInactivePanel:ye(),bordered:ye(),expandIcon:de(),openAnimation:W.object,expandIconPosition:ke(),collapsible:ke(),ghost:ye(),onChange:de(),\"onUpdate:activeKey\":de()}),Nx=()=>({openAnimation:W.object,prefixCls:String,header:W.any,headerClass:String,showArrow:ye(),isActive:ye(),destroyInactivePanel:ye(),disabled:ye(),accordion:ye(),forceRender:ye(),expandIcon:de(),extra:W.any,panelKey:Fe(),collapsible:ke(),role:String,onItemClick:de()}),d8=e=>{const{componentCls:t,collapseContentBg:n,padding:o,collapseContentPaddingHorizontal:r,collapseHeaderBg:l,collapseHeaderPadding:a,collapsePanelBorderRadius:i,lineWidth:s,lineType:c,colorBorder:u,colorText:d,colorTextHeading:p,colorTextDisabled:m,fontSize:g,lineHeight:v,marginSM:y,paddingSM:b,motionDurationSlow:S,fontSizeIcon:$}=e,w=`${s}px ${c} ${u}`;return{[t]:h(h({},Ue(e)),{backgroundColor:l,border:w,borderBottom:0,borderRadius:`${i}px`,\"&-rtl\":{direction:\"rtl\"},[`& > ${t}-item`]:{borderBottom:w,\"&:last-child\":{[`\n            &,\n            & > ${t}-header`]:{borderRadius:`0 0 ${i}px ${i}px`}},[`> ${t}-header`]:{position:\"relative\",display:\"flex\",flexWrap:\"nowrap\",alignItems:\"flex-start\",padding:a,color:p,lineHeight:v,cursor:\"pointer\",transition:`all ${S}, visibility 0s`,[`> ${t}-header-text`]:{flex:\"auto\"},\"&:focus\":{outline:\"none\"},[`${t}-expand-icon`]:{height:g*v,display:\"flex\",alignItems:\"center\",paddingInlineEnd:y},[`${t}-arrow`]:h(h({},Il()),{fontSize:$,svg:{transition:`transform ${S}`}}),[`${t}-header-text`]:{marginInlineEnd:\"auto\"}},[`${t}-header-collapsible-only`]:{cursor:\"default\",[`${t}-header-text`]:{flex:\"none\",cursor:\"pointer\"},[`${t}-expand-icon`]:{cursor:\"pointer\"}},[`${t}-icon-collapsible-only`]:{cursor:\"default\",[`${t}-expand-icon`]:{cursor:\"pointer\"}},[`&${t}-no-arrow`]:{[`> ${t}-header`]:{paddingInlineStart:b}}},[`${t}-content`]:{color:d,backgroundColor:n,borderTop:w,[`& > ${t}-content-box`]:{padding:`${o}px ${r}px`},\"&-hidden\":{display:\"none\"}},[`${t}-item:last-child`]:{[`> ${t}-content`]:{borderRadius:`0 0 ${i}px ${i}px`}},[`& ${t}-item-disabled > ${t}-header`]:{\"\\n          &,\\n          & > .arrow\\n        \":{color:m,cursor:\"not-allowed\"}},[`&${t}-icon-position-end`]:{[`& > ${t}-item`]:{[`> ${t}-header`]:{[`${t}-expand-icon`]:{order:1,paddingInlineEnd:0,paddingInlineStart:y}}}}})}},f8=e=>{const{componentCls:t}=e,n=`> ${t}-item > ${t}-header ${t}-arrow svg`;return{[`${t}-rtl`]:{[n]:{transform:\"rotate(180deg)\"}}}},p8=e=>{const{componentCls:t,collapseHeaderBg:n,paddingXXS:o,colorBorder:r}=e;return{[`${t}-borderless`]:{backgroundColor:n,border:0,[`> ${t}-item`]:{borderBottom:`1px solid ${r}`},[`\n        > ${t}-item:last-child,\n        > ${t}-item:last-child ${t}-header\n      `]:{borderRadius:0},[`> ${t}-item:last-child`]:{borderBottom:0},[`> ${t}-item > ${t}-content`]:{backgroundColor:\"transparent\",borderTop:0},[`> ${t}-item > ${t}-content > ${t}-content-box`]:{paddingTop:o}}}},m8=e=>{const{componentCls:t,paddingSM:n}=e;return{[`${t}-ghost`]:{backgroundColor:\"transparent\",border:0,[`> ${t}-item`]:{borderBottom:0,[`> ${t}-content`]:{backgroundColor:\"transparent\",border:0,[`> ${t}-content-box`]:{paddingBlock:n}}}}}},v8=Ge(\"Collapse\",e=>{const t=Le(e,{collapseContentBg:e.colorBgContainer,collapseHeaderBg:e.colorFillAlter,collapseHeaderPadding:`${e.paddingSM}px ${e.padding}px`,collapsePanelBorderRadius:e.borderRadiusLG,collapseContentPaddingHorizontal:16});return[d8(t),p8(t),m8(t),f8(t),Fi(t)]});function Vb(e){let t=e;if(!Array.isArray(t)){const n=typeof t;t=n===\"number\"||n===\"string\"?[t]:[]}return t.map(n=>String(n))}const ti=ne({compatConfig:{MODE:3},name:\"ACollapse\",inheritAttrs:!1,props:Ze(u8(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,expandIconPosition:\"start\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:r}=t;const l=J(Vb(Uc([e.activeKey,e.defaultActiveKey])));pe(()=>e.activeKey,()=>{l.value=Vb(e.activeKey)},{deep:!0});const{prefixCls:a,direction:i,rootPrefixCls:s}=Pe(\"collapse\",e),[c,u]=v8(a),d=I(()=>{const{expandIconPosition:b}=e;return b!==void 0?b:i.value===\"rtl\"?\"end\":\"start\"}),p=b=>{const{expandIcon:S=o.expandIcon}=e,$=S?S(b):f(Eo,{rotate:b.isActive?90:void 0},null);return f(\"div\",{class:[`${a.value}-expand-icon`,u.value],onClick:()=>[\"header\",\"icon\"].includes(e.collapsible)&&g(b.panelKey)},[Kt(Array.isArray(S)?$[0]:$)?dt($,{class:`${a.value}-arrow`},!1):$])},m=b=>{e.activeKey===void 0&&(l.value=b);const S=e.accordion?b[0]:b;r(\"update:activeKey\",S),r(\"change\",S)},g=b=>{let S=l.value;if(e.accordion)S=S[0]===b?[]:[b];else{S=[...S];const $=S.indexOf(b);$>-1?S.splice($,1):S.push(b)}m(S)},v=(b,S)=>{var $,w,C;if(Ri(b))return;const _=l.value,{accordion:x,destroyInactivePanel:P,collapsible:O,openAnimation:M}=e,E=M||zi(`${s.value}-motion-collapse`),R=String(($=b.key)!==null&&$!==void 0?$:S),{header:D=(C=(w=b.children)===null||w===void 0?void 0:w.header)===null||C===void 0?void 0:C.call(w),headerClass:z,collapsible:T,disabled:k}=b.props||{};let B=!1;x?B=_[0]===R:B=_.indexOf(R)>-1;let L=T??O;(k||k===\"\")&&(L=\"disabled\");const N={key:R,panelKey:R,header:D,headerClass:z,isActive:B,prefixCls:a.value,destroyInactivePanel:P,openAnimation:E,accordion:x,onItemClick:L===\"disabled\"?null:g,expandIcon:p,collapsible:L};return dt(b,N)},y=()=>{var b;return $t((b=o.default)===null||b===void 0?void 0:b.call(o)).map(v)};return()=>{const{accordion:b,bordered:S,ghost:$}=e,w=le(a.value,{[`${a.value}-borderless`]:!S,[`${a.value}-icon-position-${d.value}`]:!0,[`${a.value}-rtl`]:i.value===\"rtl\",[`${a.value}-ghost`]:!!$,[n.class]:!!n.class},u.value);return c(f(\"div\",A(A({class:w},DO(n)),{},{style:n.style,role:b?\"tablist\":null}),[y()]))}}}),g8=ne({compatConfig:{MODE:3},name:\"PanelContent\",props:Nx(),setup(e,t){let{slots:n}=t;const o=ee(!1);return ze(()=>{(e.isActive||e.forceRender)&&(o.value=!0)}),()=>{var r;if(!o.value)return null;const{prefixCls:l,isActive:a,role:i}=e;return f(\"div\",{class:le(`${l}-content`,{[`${l}-content-active`]:a,[`${l}-content-inactive`]:!a}),role:i},[f(\"div\",{class:`${l}-content-box`},[(r=n.default)===null||r===void 0?void 0:r.call(n)])])}}}),uu=ne({compatConfig:{MODE:3},name:\"ACollapsePanel\",inheritAttrs:!1,props:Ze(Nx(),{showArrow:!0,isActive:!1,onItemClick(){},headerClass:\"\",forceRender:!1}),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:r}=t;Ot(e.disabled===void 0,\"Collapse.Panel\",'`disabled` is deprecated. Please use `collapsible=\"disabled\"` instead.');const{prefixCls:l}=Pe(\"collapse\",e),a=()=>{o(\"itemClick\",e.panelKey)},i=s=>{(s.key===\"Enter\"||s.keyCode===13||s.which===13)&&a()};return()=>{var s,c;const{header:u=(s=n.header)===null||s===void 0?void 0:s.call(n),headerClass:d,isActive:p,showArrow:m,destroyInactivePanel:g,accordion:v,forceRender:y,openAnimation:b,expandIcon:S=n.expandIcon,extra:$=(c=n.extra)===null||c===void 0?void 0:c.call(n),collapsible:w}=e,C=w===\"disabled\",_=l.value,x=le(`${_}-header`,{[d]:d,[`${_}-header-collapsible-only`]:w===\"header\",[`${_}-icon-collapsible-only`]:w===\"icon\"}),P=le({[`${_}-item`]:!0,[`${_}-item-active`]:p,[`${_}-item-disabled`]:C,[`${_}-no-arrow`]:!m,[`${r.class}`]:!!r.class});let O=f(\"i\",{class:\"arrow\"},null);m&&typeof S==\"function\"&&(O=S(e));const M=xn(f(g8,{prefixCls:_,isActive:p,forceRender:y,role:v?\"tabpanel\":null},{default:n.default}),[[On,p]]),E=h({appear:!1,css:!1},b);return f(\"div\",A(A({},r),{},{class:P}),[f(\"div\",{class:x,onClick:()=>![\"header\",\"icon\"].includes(w)&&a(),role:v?\"tab\":\"button\",tabindex:C?-1:0,\"aria-expanded\":p,onKeypress:i},[m&&O,f(\"span\",{onClick:()=>w===\"header\"&&a(),class:`${_}-header-text`},[u]),$&&f(\"div\",{class:`${_}-extra`},[$])]),f(cn,E,{default:()=>[!g||p?M:null]})])}}});ti.Panel=uu;ti.install=function(e){return e.component(ti.name,ti),e.component(uu.name,uu),e};const h8=function(e){return e.replace(/[A-Z]/g,function(t){return\"-\"+t.toLowerCase()}).toLowerCase()},b8=function(e){return/[height|width]$/.test(e)},Kb=function(e){let t=\"\";const n=Object.keys(e);return n.forEach(function(o,r){let l=e[o];o=h8(o),b8(o)&&typeof l==\"number\"&&(l=l+\"px\"),l===!0?t+=o:l===!1?t+=\"not \"+o:t+=\"(\"+o+\": \"+l+\")\",r<n.length-1&&(t+=\" and \")}),t};function pf(e){let t=\"\";return typeof e==\"string\"?e:e instanceof Array?(e.forEach(function(n,o){t+=Kb(n),o<e.length-1&&(t+=\", \")}),t):Kb(e)}const Bx={accessibility:{type:Boolean,default:!0},adaptiveHeight:{type:Boolean,default:!1},afterChange:W.any.def(null),arrows:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},autoplaySpeed:W.number.def(3e3),beforeChange:W.any.def(null),centerMode:{type:Boolean,default:!1},centerPadding:W.string.def(\"50px\"),cssEase:W.string.def(\"ease\"),dots:{type:Boolean,default:!1},dotsClass:W.string.def(\"slick-dots\"),draggable:{type:Boolean,default:!0},unslick:{type:Boolean,default:!1},easing:W.string.def(\"linear\"),edgeFriction:W.number.def(.35),fade:{type:Boolean,default:!1},focusOnSelect:{type:Boolean,default:!1},infinite:{type:Boolean,default:!0},initialSlide:W.number.def(0),lazyLoad:W.any.def(null),verticalSwiping:{type:Boolean,default:!1},asNavFor:W.any.def(null),pauseOnDotsHover:{type:Boolean,default:!1},pauseOnFocus:{type:Boolean,default:!1},pauseOnHover:{type:Boolean,default:!0},responsive:W.array,rows:W.number.def(1),rtl:{type:Boolean,default:!1},slide:W.string.def(\"div\"),slidesPerRow:W.number.def(1),slidesToScroll:W.number.def(1),slidesToShow:W.number.def(1),speed:W.number.def(500),swipe:{type:Boolean,default:!0},swipeEvent:W.any.def(null),swipeToSlide:{type:Boolean,default:!1},touchMove:{type:Boolean,default:!0},touchThreshold:W.number.def(5),useCSS:{type:Boolean,default:!0},useTransform:{type:Boolean,default:!0},variableWidth:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},waitForAnimate:{type:Boolean,default:!0},children:W.array,__propsSymbol__:W.any},y8={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0};function Bp(e,t,n){return Math.max(t,Math.min(e,n))}const ra=e=>{[\"touchstart\",\"touchmove\",\"wheel\"].includes(e.type)||e.preventDefault()},du=e=>{const t=[],n=Lx(e),o=Fx(e);for(let r=n;r<o;r++)e.lazyLoadedList.indexOf(r)<0&&t.push(r);return t},Lx=e=>e.currentSlide-S8(e),Fx=e=>e.currentSlide+$8(e),S8=e=>e.centerMode?Math.floor(e.slidesToShow/2)+(parseInt(e.centerPadding)>0?1:0):0,$8=e=>e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow,Lp=e=>e&&e.offsetWidth||0,yg=e=>e&&e.offsetHeight||0,zx=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n;const o=e.startX-e.curX,r=e.startY-e.curY,l=Math.atan2(r,o);return n=Math.round(l*180/Math.PI),n<0&&(n=360-Math.abs(n)),n<=45&&n>=0||n<=360&&n>=315?\"left\":n>=135&&n<=225?\"right\":t===!0?n>=35&&n<=135?\"up\":\"down\":\"vertical\"},ud=e=>{let t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t},mf=(e,t)=>{const n={};return t.forEach(o=>n[o]=e[o]),n},C8=e=>{const t=e.children.length,n=e.listRef,o=Math.ceil(Lp(n)),r=e.trackRef,l=Math.ceil(Lp(r));let a;if(e.vertical)a=o;else{let m=e.centerMode&&parseInt(e.centerPadding)*2;typeof e.centerPadding==\"string\"&&e.centerPadding.slice(-1)===\"%\"&&(m*=o/100),a=Math.ceil((o-m)/e.slidesToShow)}const i=n&&yg(n.querySelector('[data-index=\"0\"]')),s=i*e.slidesToShow;let c=e.currentSlide===void 0?e.initialSlide:e.currentSlide;e.rtl&&e.currentSlide===void 0&&(c=t-1-e.initialSlide);let u=e.lazyLoadedList||[];const d=du(h(h({},e),{currentSlide:c,lazyLoadedList:u}));u=u.concat(d);const p={slideCount:t,slideWidth:a,listWidth:o,trackWidth:l,currentSlide:c,slideHeight:i,listHeight:s,lazyLoadedList:u};return e.autoplaying===null&&e.autoplay&&(p.autoplaying=\"playing\"),p},x8=e=>{const{waitForAnimate:t,animating:n,fade:o,infinite:r,index:l,slideCount:a,lazyLoad:i,currentSlide:s,centerMode:c,slidesToScroll:u,slidesToShow:d,useCSS:p}=e;let{lazyLoadedList:m}=e;if(t&&n)return{};let g=l,v,y,b,S={},$={};const w=r?l:Bp(l,0,a-1);if(o){if(!r&&(l<0||l>=a))return{};l<0?g=l+a:l>=a&&(g=l-a),i&&m.indexOf(g)<0&&(m=m.concat(g)),S={animating:!0,currentSlide:g,lazyLoadedList:m,targetSlide:g},$={animating:!1,targetSlide:g}}else v=g,g<0?(v=g+a,r?a%u!==0&&(v=a-a%u):v=0):!ud(e)&&g>s?g=v=s:c&&g>=a?(g=r?a:a-1,v=r?0:a-1):g>=a&&(v=g-a,r?a%u!==0&&(v=0):v=a-d),!r&&g+d>=a&&(v=a-d),y=Ti(h(h({},e),{slideIndex:g})),b=Ti(h(h({},e),{slideIndex:v})),r||(y===b&&(g=v),y=b),i&&(m=m.concat(du(h(h({},e),{currentSlide:g})))),p?(S={animating:!0,currentSlide:v,trackStyle:Hx(h(h({},e),{left:y})),lazyLoadedList:m,targetSlide:w},$={animating:!1,currentSlide:v,trackStyle:Pi(h(h({},e),{left:b})),swipeLeft:null,targetSlide:w}):S={currentSlide:v,trackStyle:Pi(h(h({},e),{left:b})),lazyLoadedList:m,targetSlide:w};return{state:S,nextState:$}},w8=(e,t)=>{let n,o,r;const{slidesToScroll:l,slidesToShow:a,slideCount:i,currentSlide:s,targetSlide:c,lazyLoad:u,infinite:d}=e,m=i%l!==0?0:(i-s)%l;if(t.message===\"previous\")o=m===0?l:a-m,r=s-o,u&&!d&&(n=s-o,r=n===-1?i-1:n),d||(r=c-l);else if(t.message===\"next\")o=m===0?l:m,r=s+o,u&&!d&&(r=(s+l)%i+m),d||(r=c+l);else if(t.message===\"dots\")r=t.index*t.slidesToScroll;else if(t.message===\"children\"){if(r=t.index,d){const g=M8(h(h({},e),{targetSlide:r}));r>t.currentSlide&&g===\"left\"?r=r-i:r<t.currentSlide&&g===\"right\"&&(r=r+i)}}else t.message===\"index\"&&(r=Number(t.index));return r},_8=(e,t,n)=>e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\")||!t?\"\":e.keyCode===37?n?\"next\":\"previous\":e.keyCode===39?n?\"previous\":\"next\":\"\",I8=(e,t,n)=>(e.target.tagName===\"IMG\"&&ra(e),!t||!n&&e.type.indexOf(\"mouse\")!==-1?\"\":{dragging:!0,touchObject:{startX:e.touches?e.touches[0].pageX:e.clientX,startY:e.touches?e.touches[0].pageY:e.clientY,curX:e.touches?e.touches[0].pageX:e.clientX,curY:e.touches?e.touches[0].pageY:e.clientY}}),P8=(e,t)=>{const{scrolling:n,animating:o,vertical:r,swipeToSlide:l,verticalSwiping:a,rtl:i,currentSlide:s,edgeFriction:c,edgeDragged:u,onEdge:d,swiped:p,swiping:m,slideCount:g,slidesToScroll:v,infinite:y,touchObject:b,swipeEvent:S,listHeight:$,listWidth:w}=t;if(n)return;if(o)return ra(e);r&&l&&a&&ra(e);let C,_={};const x=Ti(t);b.curX=e.touches?e.touches[0].pageX:e.clientX,b.curY=e.touches?e.touches[0].pageY:e.clientY,b.swipeLength=Math.round(Math.sqrt(Math.pow(b.curX-b.startX,2)));const P=Math.round(Math.sqrt(Math.pow(b.curY-b.startY,2)));if(!a&&!m&&P>10)return{scrolling:!0};a&&(b.swipeLength=P);let O=(i?-1:1)*(b.curX>b.startX?1:-1);a&&(O=b.curY>b.startY?1:-1);const M=Math.ceil(g/v),E=zx(t.touchObject,a);let R=b.swipeLength;return y||(s===0&&(E===\"right\"||E===\"down\")||s+1>=M&&(E===\"left\"||E===\"up\")||!ud(t)&&(E===\"left\"||E===\"up\"))&&(R=b.swipeLength*c,u===!1&&d&&(d(E),_.edgeDragged=!0)),!p&&S&&(S(E),_.swiped=!0),r?C=x+R*($/w)*O:i?C=x-R*O:C=x+R*O,a&&(C=x+R*O),_=h(h({},_),{touchObject:b,swipeLeft:C,trackStyle:Pi(h(h({},t),{left:C}))}),Math.abs(b.curX-b.startX)<Math.abs(b.curY-b.startY)*.8||b.swipeLength>10&&(_.swiping=!0,ra(e)),_},T8=(e,t)=>{const{dragging:n,swipe:o,touchObject:r,listWidth:l,touchThreshold:a,verticalSwiping:i,listHeight:s,swipeToSlide:c,scrolling:u,onSwipe:d,targetSlide:p,currentSlide:m,infinite:g}=t;if(!n)return o&&ra(e),{};const v=i?s/a:l/a,y=zx(r,i),b={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(u||!r.swipeLength)return b;if(r.swipeLength>v){ra(e),d&&d(y);let S,$;const w=g?m:p;switch(y){case\"left\":case\"up\":$=w+Xb(t),S=c?Gb(t,$):$,b.currentDirection=0;break;case\"right\":case\"down\":$=w-Xb(t),S=c?Gb(t,$):$,b.currentDirection=1;break;default:S=w}b.triggerSlideHandler=S}else{const S=Ti(t);b.trackStyle=Hx(h(h({},t),{left:S}))}return b},O8=e=>{const t=e.infinite?e.slideCount*2:e.slideCount;let n=e.infinite?e.slidesToShow*-1:0,o=e.infinite?e.slidesToShow*-1:0;const r=[];for(;n<t;)r.push(n),n=o+e.slidesToScroll,o+=Math.min(e.slidesToScroll,e.slidesToShow);return r},Gb=(e,t)=>{const n=O8(e);let o=0;if(t>n[n.length-1])t=n[n.length-1];else for(const r in n){if(t<n[r]){t=o;break}o=n[r]}return t},Xb=e=>{const t=e.centerMode?e.slideWidth*Math.floor(e.slidesToShow/2):0;if(e.swipeToSlide){let n;const o=e.listRef,r=o.querySelectorAll&&o.querySelectorAll(\".slick-slide\")||[];if(Array.from(r).every(i=>{if(e.vertical){if(i.offsetTop+yg(i)/2>e.swipeLeft*-1)return n=i,!1}else if(i.offsetLeft-t+Lp(i)/2>e.swipeLeft*-1)return n=i,!1;return!0}),!n)return 0;const l=e.rtl===!0?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-l)||1}else return e.slidesToScroll},Sg=(e,t)=>t.reduce((n,o)=>n&&e.hasOwnProperty(o),!0)?null:console.error(\"Keys Missing:\",e),Pi=e=>{Sg(e,[\"left\",\"variableWidth\",\"slideCount\",\"slidesToShow\",\"slideWidth\"]);let t,n;const o=e.slideCount+2*e.slidesToShow;e.vertical?n=o*e.slideHeight:t=E8(e)*e.slideWidth;let r={opacity:1,transition:\"\",WebkitTransition:\"\"};if(e.useTransform){const l=e.vertical?\"translate3d(0px, \"+e.left+\"px, 0px)\":\"translate3d(\"+e.left+\"px, 0px, 0px)\",a=e.vertical?\"translate3d(0px, \"+e.left+\"px, 0px)\":\"translate3d(\"+e.left+\"px, 0px, 0px)\",i=e.vertical?\"translateY(\"+e.left+\"px)\":\"translateX(\"+e.left+\"px)\";r=h(h({},r),{WebkitTransform:l,transform:a,msTransform:i})}else e.vertical?r.top=e.left:r.left=e.left;return e.fade&&(r={opacity:1}),t&&(r.width=t+\"px\"),n&&(r.height=n+\"px\"),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?r.marginTop=e.left+\"px\":r.marginLeft=e.left+\"px\"),r},Hx=e=>{Sg(e,[\"left\",\"variableWidth\",\"slideCount\",\"slidesToShow\",\"slideWidth\",\"speed\",\"cssEase\"]);const t=Pi(e);return e.useTransform?(t.WebkitTransition=\"-webkit-transform \"+e.speed+\"ms \"+e.cssEase,t.transition=\"transform \"+e.speed+\"ms \"+e.cssEase):e.vertical?t.transition=\"top \"+e.speed+\"ms \"+e.cssEase:t.transition=\"left \"+e.speed+\"ms \"+e.cssEase,t},Ti=e=>{if(e.unslick)return 0;Sg(e,[\"slideIndex\",\"trackRef\",\"infinite\",\"centerMode\",\"slideCount\",\"slidesToShow\",\"slidesToScroll\",\"slideWidth\",\"listWidth\",\"variableWidth\",\"slideHeight\"]);const{slideIndex:t,trackRef:n,infinite:o,centerMode:r,slideCount:l,slidesToShow:a,slidesToScroll:i,slideWidth:s,listWidth:c,variableWidth:u,slideHeight:d,fade:p,vertical:m}=e;let g=0,v,y,b=0;if(p||e.slideCount===1)return 0;let S=0;if(o?(S=-cr(e),l%i!==0&&t+i>l&&(S=-(t>l?a-(t-l):l%i)),r&&(S+=parseInt(a/2))):(l%i!==0&&t+i>l&&(S=a-l%i),r&&(S=parseInt(a/2))),g=S*s,b=S*d,m?v=t*d*-1+b:v=t*s*-1+g,u===!0){let $;const w=n;if($=t+cr(e),y=w&&w.childNodes[$],v=y?y.offsetLeft*-1:0,r===!0){$=o?t+cr(e):t,y=w&&w.children[$],v=0;for(let C=0;C<$;C++)v-=w&&w.children[C]&&w.children[C].offsetWidth;v-=parseInt(e.centerPadding),v+=y&&(c-y.offsetWidth)/2}}return v},cr=e=>e.unslick||!e.infinite?0:e.variableWidth?e.slideCount:e.slidesToShow+(e.centerMode?1:0),nc=e=>e.unslick||!e.infinite?0:e.slideCount,E8=e=>e.slideCount===1?1:cr(e)+e.slideCount+nc(e),M8=e=>e.targetSlide>e.currentSlide?e.targetSlide>e.currentSlide+A8(e)?\"left\":\"right\":e.targetSlide<e.currentSlide-D8(e)?\"right\":\"left\",A8=e=>{let{slidesToShow:t,centerMode:n,rtl:o,centerPadding:r}=e;if(n){let l=(t-1)/2+1;return parseInt(r)>0&&(l+=1),o&&t%2===0&&(l+=1),l}return o?0:t-1},D8=e=>{let{slidesToShow:t,centerMode:n,rtl:o,centerPadding:r}=e;if(n){let l=(t-1)/2+1;return parseInt(r)>0&&(l+=1),!o&&t%2===0&&(l+=1),l}return o?t-1:0},Ub=()=>!!(typeof window<\"u\"&&window.document&&window.document.createElement),vf=e=>{let t,n,o,r;e.rtl?r=e.slideCount-1-e.index:r=e.index;const l=r<0||r>=e.slideCount;e.centerMode?(o=Math.floor(e.slidesToShow/2),n=(r-e.currentSlide)%e.slideCount===0,r>e.currentSlide-o-1&&r<=e.currentSlide+o&&(t=!0)):t=e.currentSlide<=r&&r<e.currentSlide+e.slidesToShow;let a;return e.targetSlide<0?a=e.targetSlide+e.slideCount:e.targetSlide>=e.slideCount?a=e.targetSlide-e.slideCount:a=e.targetSlide,{\"slick-slide\":!0,\"slick-active\":t,\"slick-center\":n,\"slick-cloned\":l,\"slick-current\":r===a}},R8=function(e){const t={};return(e.variableWidth===void 0||e.variableWidth===!1)&&(t.width=e.slideWidth+(typeof e.slideWidth==\"number\"?\"px\":\"\")),e.fade&&(t.position=\"relative\",e.vertical?t.top=-e.index*parseInt(e.slideHeight)+\"px\":t.left=-e.index*parseInt(e.slideWidth)+\"px\",t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition=\"opacity \"+e.speed+\"ms \"+e.cssEase+\", visibility \"+e.speed+\"ms \"+e.cssEase)),t},gf=(e,t)=>e.key+\"-\"+t,k8=function(e,t){let n;const o=[],r=[],l=[],a=t.length,i=Lx(e),s=Fx(e);return t.forEach((c,u)=>{let d;const p={message:\"children\",index:u,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(u)>=0?d=c:d=f(\"div\");const m=R8(h(h({},e),{index:u})),g=d.props.class||\"\";let v=vf(h(h({},e),{index:u}));if(o.push(Qa(d,{key:\"original\"+gf(d,u),tabindex:\"-1\",\"data-index\":u,\"aria-hidden\":!v[\"slick-active\"],class:le(v,g),style:h(h({outline:\"none\"},d.props.style||{}),m),onClick:()=>{e.focusOnSelect&&e.focusOnSelect(p)}})),e.infinite&&e.fade===!1){const y=a-u;y<=cr(e)&&a!==e.slidesToShow&&(n=-y,n>=i&&(d=c),v=vf(h(h({},e),{index:n})),r.push(Qa(d,{key:\"precloned\"+gf(d,n),class:le(v,g),tabindex:\"-1\",\"data-index\":n,\"aria-hidden\":!v[\"slick-active\"],style:h(h({},d.props.style||{}),m),onClick:()=>{e.focusOnSelect&&e.focusOnSelect(p)}}))),a!==e.slidesToShow&&(n=a+u,n<s&&(d=c),v=vf(h(h({},e),{index:n})),l.push(Qa(d,{key:\"postcloned\"+gf(d,n),tabindex:\"-1\",\"data-index\":n,\"aria-hidden\":!v[\"slick-active\"],class:le(v,g),style:h(h({},d.props.style||{}),m),onClick:()=>{e.focusOnSelect&&e.focusOnSelect(p)}})))}}),e.rtl?r.concat(o,l).reverse():r.concat(o,l)},jx=(e,t)=>{let{attrs:n,slots:o}=t;const r=k8(n,$t(o?.default())),{onMouseenter:l,onMouseover:a,onMouseleave:i}=n,s={onMouseenter:l,onMouseover:a,onMouseleave:i},c=h({class:\"slick-track\",style:n.trackStyle},s);return f(\"div\",c,[r])};jx.inheritAttrs=!1;const N8=function(e){let t;return e.infinite?t=Math.ceil(e.slideCount/e.slidesToScroll):t=Math.ceil((e.slideCount-e.slidesToShow)/e.slidesToScroll)+1,t},Wx=(e,t)=>{let{attrs:n}=t;const{slideCount:o,slidesToScroll:r,slidesToShow:l,infinite:a,currentSlide:i,appendDots:s,customPaging:c,clickHandler:u,dotsClass:d,onMouseenter:p,onMouseover:m,onMouseleave:g}=n,v=N8({slideCount:o,slidesToScroll:r,slidesToShow:l,infinite:a}),y={onMouseenter:p,onMouseover:m,onMouseleave:g};let b=[];for(let S=0;S<v;S++){let O=function(M){M&&M.preventDefault(),u(P)};const $=(S+1)*r-1,w=a?$:Bp($,0,o-1),C=w-(r-1),_=a?C:Bp(C,0,o-1),x=le({\"slick-active\":a?i>=_&&i<=w:i===_}),P={message:\"dots\",index:S,slidesToScroll:r,currentSlide:i};b=b.concat(f(\"li\",{key:S,class:x},[dt(c({i:S}),{onClick:O})]))}return dt(s({dots:b}),h({class:d},y))};Wx.inheritAttrs=!1;function Vx(){}function Kx(e,t,n){n&&n.preventDefault(),t(e,n)}const Gx=(e,t)=>{let{attrs:n}=t;const{clickHandler:o,infinite:r,currentSlide:l,slideCount:a,slidesToShow:i}=n,s={\"slick-arrow\":!0,\"slick-prev\":!0};let c=function(m){Kx({message:\"previous\"},o,m)};!r&&(l===0||a<=i)&&(s[\"slick-disabled\"]=!0,c=Vx);const u={key:\"0\",\"data-role\":\"none\",class:s,style:{display:\"block\"},onClick:c},d={currentSlide:l,slideCount:a};let p;return n.prevArrow?p=dt(n.prevArrow(h(h({},u),d)),{key:\"0\",class:s,style:{display:\"block\"},onClick:c},!1):p=f(\"button\",A({key:\"0\",type:\"button\"},u),[\" \",wt(\"Previous\")]),p};Gx.inheritAttrs=!1;const Xx=(e,t)=>{let{attrs:n}=t;const{clickHandler:o,currentSlide:r,slideCount:l}=n,a={\"slick-arrow\":!0,\"slick-next\":!0};let i=function(d){Kx({message:\"next\"},o,d)};ud(n)||(a[\"slick-disabled\"]=!0,i=Vx);const s={key:\"1\",\"data-role\":\"none\",class:le(a),style:{display:\"block\"},onClick:i},c={currentSlide:r,slideCount:l};let u;return n.nextArrow?u=dt(n.nextArrow(h(h({},s),c)),{key:\"1\",class:le(a),style:{display:\"block\"},onClick:i},!1):u=f(\"button\",A({key:\"1\",type:\"button\"},s),[\" \",wt(\"Next\")]),u};Xx.inheritAttrs=!1;var B8=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function Gn(){}const L8={name:\"InnerSlider\",mixins:[Tl],inheritAttrs:!1,props:h({},Bx),data(){this.preProps=h({},this.$props),this.list=null,this.track=null,this.callbackTimers=[],this.clickable=!0,this.debouncedResize=null;const e=this.ssrInit();return h(h(h({},y8),{currentSlide:this.initialSlide,slideCount:this.children.length}),e)},watch:{autoplay(e,t){!t&&e?this.handleAutoPlay(\"playing\"):e?this.handleAutoPlay(\"update\"):this.pause(\"paused\")},__propsSymbol__(){const e=this.$props,t=h(h({listRef:this.list,trackRef:this.track},e),this.$data);let n=!1;for(const o of Object.keys(this.preProps)){if(!e.hasOwnProperty(o)){n=!0;break}if(!(typeof e[o]==\"object\"||typeof e[o]==\"function\"||typeof e[o]==\"symbol\")&&e[o]!==this.preProps[o]){n=!0;break}}this.updateState(t,n,()=>{this.currentSlide>=e.children.length&&this.changeSlide({message:\"index\",index:e.children.length-e.slidesToShow,currentSlide:this.currentSlide}),!this.preProps.autoplay&&e.autoplay?this.handleAutoPlay(\"playing\"):e.autoplay?this.handleAutoPlay(\"update\"):this.pause(\"paused\")}),this.preProps=h({},e)}},mounted(){if(this.__emit(\"init\"),this.lazyLoad){const e=du(h(h({},this.$props),this.$data));e.length>0&&(this.setState(t=>({lazyLoadedList:t.lazyLoadedList.concat(e)})),this.__emit(\"lazyLoad\",e))}this.$nextTick(()=>{const e=h({listRef:this.list,trackRef:this.track,children:this.children},this.$props);this.updateState(e,!0,()=>{this.adaptHeight(),this.autoplay&&this.handleAutoPlay(\"playing\")}),this.lazyLoad===\"progressive\"&&(this.lazyLoadTimer=setInterval(this.progressiveLazyLoad,1e3)),this.ro=new Km(()=>{this.animating?(this.onWindowResized(!1),this.callbackTimers.push(setTimeout(()=>this.onWindowResized(),this.speed))):this.onWindowResized()}),this.ro.observe(this.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"),t=>{t.onfocus=this.$props.pauseOnFocus?this.onSlideFocus:null,t.onblur=this.$props.pauseOnFocus?this.onSlideBlur:null}),window.addEventListener?window.addEventListener(\"resize\",this.onWindowResized):window.attachEvent(\"onresize\",this.onWindowResized)})},beforeUnmount(){var e;this.animationEndCallback&&clearTimeout(this.animationEndCallback),this.lazyLoadTimer&&clearInterval(this.lazyLoadTimer),this.callbackTimers.length&&(this.callbackTimers.forEach(t=>clearTimeout(t)),this.callbackTimers=[]),window.addEventListener?window.removeEventListener(\"resize\",this.onWindowResized):window.detachEvent(\"onresize\",this.onWindowResized),this.autoplayTimer&&clearInterval(this.autoplayTimer),(e=this.ro)===null||e===void 0||e.disconnect()},updated(){if(this.checkImagesLoad(),this.__emit(\"reInit\"),this.lazyLoad){const e=du(h(h({},this.$props),this.$data));e.length>0&&(this.setState(t=>({lazyLoadedList:t.lazyLoadedList.concat(e)})),this.__emit(\"lazyLoad\"))}this.adaptHeight()},methods:{listRefHandler(e){this.list=e},trackRefHandler(e){this.track=e},adaptHeight(){if(this.adaptiveHeight&&this.list){const e=this.list.querySelector(`[data-index=\"${this.currentSlide}\"]`);this.list.style.height=yg(e)+\"px\"}},onWindowResized(e){this.debouncedResize&&this.debouncedResize.cancel(),this.debouncedResize=Dm(()=>this.resizeWindow(e),50),this.debouncedResize()},resizeWindow(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(!!!this.track)return;const n=h(h({listRef:this.list,trackRef:this.track,children:this.children},this.$props),this.$data);this.updateState(n,e,()=>{this.autoplay?this.handleAutoPlay(\"update\"):this.pause(\"paused\")}),this.setState({animating:!1}),clearTimeout(this.animationEndCallback),delete this.animationEndCallback},updateState(e,t,n){const o=C8(e);e=h(h(h({},e),o),{slideIndex:o.currentSlide});const r=Ti(e);e=h(h({},e),{left:r});const l=Pi(e);(t||this.children.length!==e.children.length)&&(o.trackStyle=l),this.setState(o,n)},ssrInit(){const e=this.children;if(this.variableWidth){let s=0,c=0;const u=[],d=cr(h(h(h({},this.$props),this.$data),{slideCount:e.length})),p=nc(h(h(h({},this.$props),this.$data),{slideCount:e.length}));e.forEach(g=>{var v,y;const b=((y=(v=g.props.style)===null||v===void 0?void 0:v.width)===null||y===void 0?void 0:y.split(\"px\")[0])||0;u.push(b),s+=b});for(let g=0;g<d;g++)c+=u[u.length-1-g],s+=u[u.length-1-g];for(let g=0;g<p;g++)s+=u[g];for(let g=0;g<this.currentSlide;g++)c+=u[g];const m={width:s+\"px\",left:-c+\"px\"};if(this.centerMode){const g=`${u[this.currentSlide]}px`;m.left=`calc(${m.left} + (100% - ${g}) / 2 ) `}return{trackStyle:m}}const t=e.length,n=h(h(h({},this.$props),this.$data),{slideCount:t}),o=cr(n)+nc(n)+t,r=100/this.slidesToShow*o,l=100/o;let a=-l*(cr(n)+this.currentSlide)*r/100;this.centerMode&&(a+=(100-l*r/100)/2);const i={width:r+\"%\",left:a+\"%\"};return{slideWidth:l+\"%\",trackStyle:i}},checkImagesLoad(){const e=this.list&&this.list.querySelectorAll&&this.list.querySelectorAll(\".slick-slide img\")||[],t=e.length;let n=0;Array.prototype.forEach.call(e,o=>{const r=()=>++n&&n>=t&&this.onWindowResized();if(!o.onclick)o.onclick=()=>o.parentNode.focus();else{const l=o.onclick;o.onclick=()=>{l(),o.parentNode.focus()}}o.onload||(this.$props.lazyLoad?o.onload=()=>{this.adaptHeight(),this.callbackTimers.push(setTimeout(this.onWindowResized,this.speed))}:(o.onload=r,o.onerror=()=>{r(),this.__emit(\"lazyLoadError\")}))})},progressiveLazyLoad(){const e=[],t=h(h({},this.$props),this.$data);for(let n=this.currentSlide;n<this.slideCount+nc(t);n++)if(this.lazyLoadedList.indexOf(n)<0){e.push(n);break}for(let n=this.currentSlide-1;n>=-cr(t);n--)if(this.lazyLoadedList.indexOf(n)<0){e.push(n);break}e.length>0?(this.setState(n=>({lazyLoadedList:n.lazyLoadedList.concat(e)})),this.__emit(\"lazyLoad\",e)):this.lazyLoadTimer&&(clearInterval(this.lazyLoadTimer),delete this.lazyLoadTimer)},slideHandler(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const{asNavFor:n,beforeChange:o,speed:r,afterChange:l}=this.$props,{state:a,nextState:i}=x8(h(h(h({index:e},this.$props),this.$data),{trackRef:this.track,useCSS:this.useCSS&&!t}));if(!a)return;o&&o(this.currentSlide,a.currentSlide);const s=a.lazyLoadedList.filter(c=>this.lazyLoadedList.indexOf(c)<0);this.$attrs.onLazyLoad&&s.length>0&&this.__emit(\"lazyLoad\",s),!this.$props.waitForAnimate&&this.animationEndCallback&&(clearTimeout(this.animationEndCallback),l&&l(this.currentSlide),delete this.animationEndCallback),this.setState(a,()=>{n&&this.asNavForIndex!==e&&(this.asNavForIndex=e,n.innerSlider.slideHandler(e)),i&&(this.animationEndCallback=setTimeout(()=>{const{animating:c}=i,u=B8(i,[\"animating\"]);this.setState(u,()=>{this.callbackTimers.push(setTimeout(()=>this.setState({animating:c}),10)),l&&l(a.currentSlide),delete this.animationEndCallback})},r))})},changeSlide(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=h(h({},this.$props),this.$data),o=w8(n,e);if(!(o!==0&&!o)&&(t===!0?this.slideHandler(o,t):this.slideHandler(o),this.$props.autoplay&&this.handleAutoPlay(\"update\"),this.$props.focusOnSelect)){const r=this.list.querySelectorAll(\".slick-current\");r[0]&&r[0].focus()}},clickHandler(e){this.clickable===!1&&(e.stopPropagation(),e.preventDefault()),this.clickable=!0},keyHandler(e){const t=_8(e,this.accessibility,this.rtl);t!==\"\"&&this.changeSlide({message:t})},selectHandler(e){this.changeSlide(e)},disableBodyScroll(){const e=t=>{t=t||window.event,t.preventDefault&&t.preventDefault(),t.returnValue=!1};window.ontouchmove=e},enableBodyScroll(){window.ontouchmove=null},swipeStart(e){this.verticalSwiping&&this.disableBodyScroll();const t=I8(e,this.swipe,this.draggable);t!==\"\"&&this.setState(t)},swipeMove(e){const t=P8(e,h(h(h({},this.$props),this.$data),{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));t&&(t.swiping&&(this.clickable=!1),this.setState(t))},swipeEnd(e){const t=T8(e,h(h(h({},this.$props),this.$data),{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));if(!t)return;const n=t.triggerSlideHandler;delete t.triggerSlideHandler,this.setState(t),n!==void 0&&(this.slideHandler(n),this.$props.verticalSwiping&&this.enableBodyScroll())},touchEnd(e){this.swipeEnd(e),this.clickable=!0},slickPrev(){this.callbackTimers.push(setTimeout(()=>this.changeSlide({message:\"previous\"}),0))},slickNext(){this.callbackTimers.push(setTimeout(()=>this.changeSlide({message:\"next\"}),0))},slickGoTo(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=Number(e),isNaN(e))return\"\";this.callbackTimers.push(setTimeout(()=>this.changeSlide({message:\"index\",index:e,currentSlide:this.currentSlide},t),0))},play(){let e;if(this.rtl)e=this.currentSlide-this.slidesToScroll;else if(ud(h(h({},this.$props),this.$data)))e=this.currentSlide+this.slidesToScroll;else return!1;this.slideHandler(e)},handleAutoPlay(e){this.autoplayTimer&&clearInterval(this.autoplayTimer);const t=this.autoplaying;if(e===\"update\"){if(t===\"hovered\"||t===\"focused\"||t===\"paused\")return}else if(e===\"leave\"){if(t===\"paused\"||t===\"focused\")return}else if(e===\"blur\"&&(t===\"paused\"||t===\"hovered\"))return;this.autoplayTimer=setInterval(this.play,this.autoplaySpeed+50),this.setState({autoplaying:\"playing\"})},pause(e){this.autoplayTimer&&(clearInterval(this.autoplayTimer),this.autoplayTimer=null);const t=this.autoplaying;e===\"paused\"?this.setState({autoplaying:\"paused\"}):e===\"focused\"?(t===\"hovered\"||t===\"playing\")&&this.setState({autoplaying:\"focused\"}):t===\"playing\"&&this.setState({autoplaying:\"hovered\"})},onDotsOver(){this.autoplay&&this.pause(\"hovered\")},onDotsLeave(){this.autoplay&&this.autoplaying===\"hovered\"&&this.handleAutoPlay(\"leave\")},onTrackOver(){this.autoplay&&this.pause(\"hovered\")},onTrackLeave(){this.autoplay&&this.autoplaying===\"hovered\"&&this.handleAutoPlay(\"leave\")},onSlideFocus(){this.autoplay&&this.pause(\"focused\")},onSlideBlur(){this.autoplay&&this.autoplaying===\"focused\"&&this.handleAutoPlay(\"blur\")},customPaging(e){let{i:t}=e;return f(\"button\",null,[t+1])},appendDots(e){let{dots:t}=e;return f(\"ul\",{style:{display:\"block\"}},[t])}},render(){const e=le(\"slick-slider\",this.$attrs.class,{\"slick-vertical\":this.vertical,\"slick-initialized\":!0}),t=h(h({},this.$props),this.$data);let n=mf(t,[\"fade\",\"cssEase\",\"speed\",\"infinite\",\"centerMode\",\"focusOnSelect\",\"currentSlide\",\"lazyLoad\",\"lazyLoadedList\",\"rtl\",\"slideWidth\",\"slideHeight\",\"listHeight\",\"vertical\",\"slidesToShow\",\"slidesToScroll\",\"slideCount\",\"trackStyle\",\"variableWidth\",\"unslick\",\"centerPadding\",\"targetSlide\",\"useCSS\"]);const{pauseOnHover:o}=this.$props;n=h(h({},n),{focusOnSelect:this.focusOnSelect&&this.clickable?this.selectHandler:null,ref:this.trackRefHandler,onMouseleave:o?this.onTrackLeave:Gn,onMouseover:o?this.onTrackOver:Gn});let r;if(this.dots===!0&&this.slideCount>=this.slidesToShow){let y=mf(t,[\"dotsClass\",\"slideCount\",\"slidesToShow\",\"currentSlide\",\"slidesToScroll\",\"clickHandler\",\"children\",\"infinite\",\"appendDots\"]);y.customPaging=this.customPaging,y.appendDots=this.appendDots;const{customPaging:b,appendDots:S}=this.$slots;b&&(y.customPaging=b),S&&(y.appendDots=S);const{pauseOnDotsHover:$}=this.$props;y=h(h({},y),{clickHandler:this.changeSlide,onMouseover:$?this.onDotsOver:Gn,onMouseleave:$?this.onDotsLeave:Gn}),r=f(Wx,y,null)}let l,a;const i=mf(t,[\"infinite\",\"centerMode\",\"currentSlide\",\"slideCount\",\"slidesToShow\"]);i.clickHandler=this.changeSlide;const{prevArrow:s,nextArrow:c}=this.$slots;s&&(i.prevArrow=s),c&&(i.nextArrow=c),this.arrows&&(l=f(Gx,i,null),a=f(Xx,i,null));let u=null;this.vertical&&(u={height:typeof this.listHeight==\"number\"?`${this.listHeight}px`:this.listHeight});let d=null;this.vertical===!1?this.centerMode===!0&&(d={padding:\"0px \"+this.centerPadding}):this.centerMode===!0&&(d={padding:this.centerPadding+\" 0px\"});const p=h(h({},u),d),m=this.touchMove;let g={ref:this.listRefHandler,class:\"slick-list\",style:p,onClick:this.clickHandler,onMousedown:m?this.swipeStart:Gn,onMousemove:this.dragging&&m?this.swipeMove:Gn,onMouseup:m?this.swipeEnd:Gn,onMouseleave:this.dragging&&m?this.swipeEnd:Gn,[Yt?\"onTouchstartPassive\":\"onTouchstart\"]:m?this.swipeStart:Gn,[Yt?\"onTouchmovePassive\":\"onTouchmove\"]:this.dragging&&m?this.swipeMove:Gn,onTouchend:m?this.touchEnd:Gn,onTouchcancel:this.dragging&&m?this.swipeEnd:Gn,onKeydown:this.accessibility?this.keyHandler:Gn},v={class:e,dir:\"ltr\",style:this.$attrs.style};return this.unslick&&(g={class:\"slick-list\",ref:this.listRefHandler},v={class:e}),f(\"div\",v,[this.unslick?\"\":l,f(\"div\",g,[f(jx,n,{default:()=>[this.children]})]),this.unslick?\"\":a,this.unslick?\"\":r])}},F8=ne({name:\"Slider\",mixins:[Tl],inheritAttrs:!1,props:h({},Bx),data(){return this._responsiveMediaHandlers=[],{breakpoint:null}},mounted(){if(this.responsive){const e=this.responsive.map(n=>n.breakpoint);e.sort((n,o)=>n-o),e.forEach((n,o)=>{let r;o===0?r=pf({minWidth:0,maxWidth:n}):r=pf({minWidth:e[o-1]+1,maxWidth:n}),Ub()&&this.media(r,()=>{this.setState({breakpoint:n})})});const t=pf({minWidth:e.slice(-1)[0]});Ub()&&this.media(t,()=>{this.setState({breakpoint:null})})}},beforeUnmount(){this._responsiveMediaHandlers.forEach(function(e){e.mql.removeListener(e.listener)})},methods:{innerSliderRefHandler(e){this.innerSlider=e},media(e,t){const n=window.matchMedia(e),o=r=>{let{matches:l}=r;l&&t()};n.addListener(o),o(n),this._responsiveMediaHandlers.push({mql:n,query:e,listener:o})},slickPrev(){var e;(e=this.innerSlider)===null||e===void 0||e.slickPrev()},slickNext(){var e;(e=this.innerSlider)===null||e===void 0||e.slickNext()},slickGoTo(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var n;(n=this.innerSlider)===null||n===void 0||n.slickGoTo(e,t)},slickPause(){var e;(e=this.innerSlider)===null||e===void 0||e.pause(\"paused\")},slickPlay(){var e;(e=this.innerSlider)===null||e===void 0||e.handleAutoPlay(\"play\")}},render(){var e;let t,n;this.breakpoint?(n=this.responsive.filter(i=>i.breakpoint===this.breakpoint),t=n[0].settings===\"unslick\"?\"unslick\":h(h({},this.$props),n[0].settings)):t=h({},this.$props),t.centerMode&&(t.slidesToScroll>1,t.slidesToScroll=1),t.fade&&(t.slidesToShow>1,t.slidesToScroll>1,t.slidesToShow=1,t.slidesToScroll=1);let o=Du(this)||[];o=o.filter(i=>typeof i==\"string\"?!!i.trim():!!i),t.variableWidth&&(t.rows>1||t.slidesPerRow>1)&&(console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\"),t.variableWidth=!1);const r=[];let l=null;for(let i=0;i<o.length;i+=t.rows*t.slidesPerRow){const s=[];for(let c=i;c<i+t.rows*t.slidesPerRow;c+=t.slidesPerRow){const u=[];for(let d=c;d<c+t.slidesPerRow&&(t.variableWidth&&(!((e=o[d].props)===null||e===void 0)&&e.style)&&(l=o[d].props.style.width),!(d>=o.length));d+=1)u.push(dt(o[d],{key:100*i+10*c+d,tabindex:-1,style:{width:`${100/t.slidesPerRow}%`,display:\"inline-block\"}}));s.push(f(\"div\",{key:10*i+c},[u]))}t.variableWidth?r.push(f(\"div\",{key:i,style:{width:l}},[s])):r.push(f(\"div\",{key:i},[s]))}if(t===\"unslick\"){const i=\"regular slider \"+(this.className||\"\");return f(\"div\",{class:i},[o])}else r.length<=t.slidesToShow&&(t.unslick=!0);const a=h(h(h({},this.$attrs),t),{children:r,ref:this.innerSliderRefHandler});return f(L8,A(A({},a),{},{__propsSymbol__:[]}),this.$slots)}}),z8=e=>{const{componentCls:t,antCls:n,carouselArrowSize:o,carouselDotOffset:r,marginXXS:l}=e,a=-o*1.25,i=l;return{[t]:h(h({},Ue(e)),{\".slick-slider\":{position:\"relative\",display:\"block\",boxSizing:\"border-box\",touchAction:\"pan-y\",WebkitTouchCallout:\"none\",WebkitTapHighlightColor:\"transparent\",\".slick-track, .slick-list\":{transform:\"translate3d(0, 0, 0)\",touchAction:\"pan-y\"}},\".slick-list\":{position:\"relative\",display:\"block\",margin:0,padding:0,overflow:\"hidden\",\"&:focus\":{outline:\"none\"},\"&.dragging\":{cursor:\"pointer\"},\".slick-slide\":{pointerEvents:\"none\",[`input${n}-radio-input, input${n}-checkbox-input`]:{visibility:\"hidden\"},\"&.slick-active\":{pointerEvents:\"auto\",[`input${n}-radio-input, input${n}-checkbox-input`]:{visibility:\"visible\"}},\"> div > div\":{verticalAlign:\"bottom\"}}},\".slick-track\":{position:\"relative\",top:0,insetInlineStart:0,display:\"block\",\"&::before, &::after\":{display:\"table\",content:'\"\"'},\"&::after\":{clear:\"both\"}},\".slick-slide\":{display:\"none\",float:\"left\",height:\"100%\",minHeight:1,img:{display:\"block\"},\"&.dragging img\":{pointerEvents:\"none\"}},\".slick-initialized .slick-slide\":{display:\"block\"},\".slick-vertical .slick-slide\":{display:\"block\",height:\"auto\"},\".slick-arrow.slick-hidden\":{display:\"none\"},\".slick-prev, .slick-next\":{position:\"absolute\",top:\"50%\",display:\"block\",width:o,height:o,marginTop:-o/2,padding:0,color:\"transparent\",fontSize:0,lineHeight:0,background:\"transparent\",border:0,outline:\"none\",cursor:\"pointer\",\"&:hover, &:focus\":{color:\"transparent\",background:\"transparent\",outline:\"none\",\"&::before\":{opacity:1}},\"&.slick-disabled::before\":{opacity:.25}},\".slick-prev\":{insetInlineStart:a,\"&::before\":{content:'\"←\"'}},\".slick-next\":{insetInlineEnd:a,\"&::before\":{content:'\"→\"'}},\".slick-dots\":{position:\"absolute\",insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:15,display:\"flex !important\",justifyContent:\"center\",paddingInlineStart:0,listStyle:\"none\",\"&-bottom\":{bottom:r},\"&-top\":{top:r,bottom:\"auto\"},li:{position:\"relative\",display:\"inline-block\",flex:\"0 1 auto\",boxSizing:\"content-box\",width:e.dotWidth,height:e.dotHeight,marginInline:i,padding:0,textAlign:\"center\",textIndent:-999,verticalAlign:\"top\",transition:`all ${e.motionDurationSlow}`,button:{position:\"relative\",display:\"block\",width:\"100%\",height:e.dotHeight,padding:0,color:\"transparent\",fontSize:0,background:e.colorBgContainer,border:0,borderRadius:1,outline:\"none\",cursor:\"pointer\",opacity:.3,transition:`all ${e.motionDurationSlow}`,\"&: hover, &:focus\":{opacity:.75},\"&::after\":{position:\"absolute\",inset:-i,content:'\"\"'}},\"&.slick-active\":{width:e.dotWidthActive,\"& button\":{background:e.colorBgContainer,opacity:1},\"&: hover, &:focus\":{opacity:1}}}}})}},H8=e=>{const{componentCls:t,carouselDotOffset:n,marginXXS:o}=e,r={width:e.dotHeight,height:e.dotWidth};return{[`${t}-vertical`]:{\".slick-dots\":{top:\"50%\",bottom:\"auto\",flexDirection:\"column\",width:e.dotHeight,height:\"auto\",margin:0,transform:\"translateY(-50%)\",\"&-left\":{insetInlineEnd:\"auto\",insetInlineStart:n},\"&-right\":{insetInlineEnd:n,insetInlineStart:\"auto\"},li:h(h({},r),{margin:`${o}px 0`,verticalAlign:\"baseline\",button:r,\"&.slick-active\":h(h({},r),{button:r})})}}}},j8=e=>{const{componentCls:t}=e;return[{[`${t}-rtl`]:{direction:\"rtl\",\".slick-dots\":{[`${t}-rtl&`]:{flexDirection:\"row-reverse\"}}}},{[`${t}-vertical`]:{\".slick-dots\":{[`${t}-rtl&`]:{flexDirection:\"column\"}}}}]},W8=Ge(\"Carousel\",e=>{const{controlHeightLG:t,controlHeightSM:n}=e,o=Le(e,{carouselArrowSize:t/2,carouselDotOffset:n/2});return[z8(o),H8(o),j8(o)]},{dotWidth:16,dotHeight:3,dotWidthActive:24});var V8=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const K8=()=>({effect:ke(),dots:ye(!0),vertical:ye(),autoplay:ye(),easing:String,beforeChange:de(),afterChange:de(),prefixCls:String,accessibility:ye(),nextArrow:W.any,prevArrow:W.any,pauseOnHover:ye(),adaptiveHeight:ye(),arrows:ye(!1),autoplaySpeed:Number,centerMode:ye(),centerPadding:String,cssEase:String,dotsClass:String,draggable:ye(!1),fade:ye(),focusOnSelect:ye(),infinite:ye(),initialSlide:Number,lazyLoad:ke(),rtl:ye(),slide:String,slidesToShow:Number,slidesToScroll:Number,speed:Number,swipe:ye(),swipeToSlide:ye(),swipeEvent:de(),touchMove:ye(),touchThreshold:Number,variableWidth:ye(),useCSS:ye(),slickGoTo:Number,responsive:Array,dotPosition:ke(),verticalSwiping:ye(!1)}),G8=ne({compatConfig:{MODE:3},name:\"ACarousel\",inheritAttrs:!1,props:K8(),setup(e,t){let{slots:n,attrs:o,expose:r}=t;const l=J();r({goTo:function(g){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var y;(y=l.value)===null||y===void 0||y.slickGoTo(g,v)},autoplay:g=>{var v,y;(y=(v=l.value)===null||v===void 0?void 0:v.innerSlider)===null||y===void 0||y.handleAutoPlay(g)},prev:()=>{var g;(g=l.value)===null||g===void 0||g.slickPrev()},next:()=>{var g;(g=l.value)===null||g===void 0||g.slickNext()},innerSlider:I(()=>{var g;return(g=l.value)===null||g===void 0?void 0:g.innerSlider})}),ze(()=>{eo(e.vertical===void 0)});const{prefixCls:i,direction:s}=Pe(\"carousel\",e),[c,u]=W8(i),d=I(()=>e.dotPosition?e.dotPosition:e.vertical!==void 0&&e.vertical?\"right\":\"bottom\"),p=I(()=>d.value===\"left\"||d.value===\"right\"),m=I(()=>{const g=\"slick-dots\";return le({[g]:!0,[`${g}-${d.value}`]:!0,[`${e.dotsClass}`]:!!e.dotsClass})});return()=>{const{dots:g,arrows:v,draggable:y,effect:b}=e,{class:S,style:$}=o,w=V8(o,[\"class\",\"style\"]),C=b===\"fade\"?!0:e.fade,_=le(i.value,{[`${i.value}-rtl`]:s.value===\"rtl\",[`${i.value}-vertical`]:p.value,[`${S}`]:!!S},u.value);return c(f(\"div\",{class:_,style:$},[f(F8,A(A(A({ref:l},e),w),{},{dots:!!g,dotsClass:m.value,arrows:v,draggable:y,fade:C,vertical:p.value}),n)]))}}}),X8=Dt(G8),$g=\"__RC_CASCADER_SPLIT__\",Ux=\"SHOW_PARENT\",Yx=\"SHOW_CHILD\";function Rr(e){return e.join($g)}function ql(e){return e.map(Rr)}function U8(e){return e.split($g)}function Y8(e){const{label:t,value:n,children:o}=e||{},r=n||\"value\";return{label:t||\"label\",value:r,key:r,children:o||\"children\"}}function Xa(e,t){var n,o;return(n=e.isLeaf)!==null&&n!==void 0?n:!(!((o=e[t.children])===null||o===void 0)&&o.length)}function q8(e){const t=e.parentElement;if(!t)return;const n=e.offsetTop-t.offsetTop;n-t.scrollTop<0?t.scrollTo({top:n}):n+e.offsetHeight-t.scrollTop>t.offsetHeight&&t.scrollTo({top:n+e.offsetHeight-t.offsetHeight})}const qx=Symbol(\"TreeContextKey\"),Z8=ne({compatConfig:{MODE:3},name:\"TreeContext\",props:{value:{type:Object}},setup(e,t){let{slots:n}=t;return Qe(qx,I(()=>e.value)),()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),Cg=()=>Je(qx,I(()=>({}))),Zx=Symbol(\"KeysStateKey\"),Q8=e=>{Qe(Zx,e)},Qx=()=>Je(Zx,{expandedKeys:ee([]),selectedKeys:ee([]),loadedKeys:ee([]),loadingKeys:ee([]),checkedKeys:ee([]),halfCheckedKeys:ee([]),expandedKeysSet:I(()=>new Set),selectedKeysSet:I(()=>new Set),loadedKeysSet:I(()=>new Set),loadingKeysSet:I(()=>new Set),checkedKeysSet:I(()=>new Set),halfCheckedKeysSet:I(()=>new Set),flattenNodes:ee([])}),J8=e=>{let{prefixCls:t,level:n,isStart:o,isEnd:r}=e;const l=`${t}-indent-unit`,a=[];for(let i=0;i<n;i+=1)a.push(f(\"span\",{key:i,class:{[l]:!0,[`${l}-start`]:o[i],[`${l}-end`]:r[i]}},null));return f(\"span\",{\"aria-hidden\":\"true\",class:`${t}-indent`},[a])},Jx={eventKey:[String,Number],prefixCls:String,title:W.any,data:{type:Object,default:void 0},parent:{type:Object,default:void 0},isStart:{type:Array},isEnd:{type:Array},active:{type:Boolean,default:void 0},onMousemove:{type:Function},isLeaf:{type:Boolean,default:void 0},checkable:{type:Boolean,default:void 0},selectable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},disableCheckbox:{type:Boolean,default:void 0},icon:W.any,switcherIcon:W.any,domRef:{type:Function}},e6={prefixCls:{type:String},motion:{type:Object},focusable:{type:Boolean},activeItem:{type:Object},focused:{type:Boolean},tabindex:{type:Number},checkable:{type:Boolean},selectable:{type:Boolean},disabled:{type:Boolean},height:{type:Number},itemHeight:{type:Number},virtual:{type:Boolean},onScroll:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},onBlur:{type:Function},onActiveChange:{type:Function},onContextmenu:{type:Function},onListChangeStart:{type:Function},onListChangeEnd:{type:Function}},ew=()=>({prefixCls:String,focusable:{type:Boolean,default:void 0},activeKey:[Number,String],tabindex:Number,children:W.any,treeData:{type:Array},fieldNames:{type:Object},showLine:{type:[Boolean,Object],default:void 0},showIcon:{type:Boolean,default:void 0},icon:W.any,selectable:{type:Boolean,default:void 0},expandAction:[String,Boolean],disabled:{type:Boolean,default:void 0},multiple:{type:Boolean,default:void 0},checkable:{type:Boolean,default:void 0},checkStrictly:{type:Boolean,default:void 0},draggable:{type:[Function,Boolean]},defaultExpandParent:{type:Boolean,default:void 0},autoExpandParent:{type:Boolean,default:void 0},defaultExpandAll:{type:Boolean,default:void 0},defaultExpandedKeys:{type:Array},expandedKeys:{type:Array},defaultCheckedKeys:{type:Array},checkedKeys:{type:[Object,Array]},defaultSelectedKeys:{type:Array},selectedKeys:{type:Array},allowDrop:{type:Function},dropIndicatorRender:{type:Function},onFocus:{type:Function},onBlur:{type:Function},onKeydown:{type:Function},onContextmenu:{type:Function},onClick:{type:Function},onDblclick:{type:Function},onScroll:{type:Function},onExpand:{type:Function},onCheck:{type:Function},onSelect:{type:Function},onLoad:{type:Function},loadData:{type:Function},loadedKeys:{type:Array},onMouseenter:{type:Function},onMouseleave:{type:Function},onRightClick:{type:Function},onDragstart:{type:Function},onDragenter:{type:Function},onDragover:{type:Function},onDragleave:{type:Function},onDragend:{type:Function},onDrop:{type:Function},onActiveChange:{type:Function},filterTreeNode:{type:Function},motion:W.any,switcherIcon:W.any,height:Number,itemHeight:Number,virtual:{type:Boolean,default:void 0},direction:{type:String},rootClassName:String,rootStyle:Object});var t6=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Yb=\"open\",qb=\"close\",n6=\"---\",Fp=ne({compatConfig:{MODE:3},name:\"ATreeNode\",inheritAttrs:!1,props:Jx,isTreeNode:1,setup(e,t){let{attrs:n,slots:o,expose:r}=t;\"slots\"in e.data,`${Object.keys(e.data.slots||{}).map(te=>\"`v-slot:\"+te+\"` \")}`;const l=ee(!1),a=Cg(),{expandedKeysSet:i,selectedKeysSet:s,loadedKeysSet:c,loadingKeysSet:u,checkedKeysSet:d,halfCheckedKeysSet:p}=Qx(),{dragOverNodeKey:m,dropPosition:g,keyEntities:v}=a.value,y=I(()=>oc(e.eventKey,{expandedKeysSet:i.value,selectedKeysSet:s.value,loadedKeysSet:c.value,loadingKeysSet:u.value,checkedKeysSet:d.value,halfCheckedKeysSet:p.value,dragOverNodeKey:m,dropPosition:g,keyEntities:v})),b=Un(()=>y.value.expanded),S=Un(()=>y.value.selected),$=Un(()=>y.value.checked),w=Un(()=>y.value.loaded),C=Un(()=>y.value.loading),_=Un(()=>y.value.halfChecked),x=Un(()=>y.value.dragOver),P=Un(()=>y.value.dragOverGapTop),O=Un(()=>y.value.dragOverGapBottom),M=Un(()=>y.value.pos),E=ee(),R=I(()=>{const{eventKey:te}=e,{keyEntities:ae}=a.value,{children:fe}=ae[te]||{};return!!(fe||[]).length}),D=I(()=>{const{isLeaf:te}=e,{loadData:ae}=a.value,fe=R.value;return te===!1?!1:te||!ae&&!fe||ae&&w.value&&!fe}),z=I(()=>D.value?null:b.value?Yb:qb),T=I(()=>{const{disabled:te}=e,{disabled:ae}=a.value;return!!(ae||te)}),k=I(()=>{const{checkable:te}=e,{checkable:ae}=a.value;return!ae||te===!1?!1:ae}),B=I(()=>{const{selectable:te}=e,{selectable:ae}=a.value;return typeof te==\"boolean\"?te:ae}),L=I(()=>{const{data:te,active:ae,checkable:fe,disableCheckbox:Ie,disabled:Te,selectable:Re}=e;return h(h({active:ae,checkable:fe,disableCheckbox:Ie,disabled:Te,selectable:Re},te),{dataRef:te,data:te,isLeaf:D.value,checked:$.value,expanded:b.value,loading:C.value,selected:S.value,halfChecked:_.value})}),N=fn(),F=I(()=>{const{eventKey:te}=e,{keyEntities:ae}=a.value,{parent:fe}=ae[te]||{};return h(h({},rc(h({},e,y.value))),{parent:fe})}),j=vt({eventData:F,eventKey:I(()=>e.eventKey),selectHandle:E,pos:M,key:N.vnode.key});r(j);const H=te=>{const{onNodeDoubleClick:ae}=a.value;ae(te,F.value)},K=te=>{if(T.value)return;const{onNodeSelect:ae}=a.value;te.preventDefault(),ae(te,F.value)},G=te=>{if(T.value)return;const{disableCheckbox:ae}=e,{onNodeCheck:fe}=a.value;if(!k.value||ae)return;te.preventDefault();const Ie=!$.value;fe(te,F.value,Ie)},V=te=>{const{onNodeClick:ae}=a.value;ae(te,F.value),B.value?K(te):G(te)},q=te=>{const{onNodeMouseEnter:ae}=a.value;ae(te,F.value)},Z=te=>{const{onNodeMouseLeave:ae}=a.value;ae(te,F.value)},oe=te=>{const{onNodeContextMenu:ae}=a.value;ae(te,F.value)},re=te=>{const{onNodeDragStart:ae}=a.value;te.stopPropagation(),l.value=!0,ae(te,j);try{te.dataTransfer.setData(\"text/plain\",\"\")}catch{}},Y=te=>{const{onNodeDragEnter:ae}=a.value;te.preventDefault(),te.stopPropagation(),ae(te,j)},Q=te=>{const{onNodeDragOver:ae}=a.value;te.preventDefault(),te.stopPropagation(),ae(te,j)},ce=te=>{const{onNodeDragLeave:ae}=a.value;te.stopPropagation(),ae(te,j)},ue=te=>{const{onNodeDragEnd:ae}=a.value;te.stopPropagation(),l.value=!1,ae(te,j)},be=te=>{const{onNodeDrop:ae}=a.value;te.preventDefault(),te.stopPropagation(),l.value=!1,ae(te,j)},Ce=te=>{const{onNodeExpand:ae}=a.value;C.value||ae(te,F.value)},ge=()=>{const{data:te}=e,{draggable:ae}=a.value;return!!(ae&&(!ae.nodeDraggable||ae.nodeDraggable(te)))},Se=()=>{const{draggable:te,prefixCls:ae}=a.value;return te&&te?.icon?f(\"span\",{class:`${ae}-draggable-icon`},[te.icon]):null},X=()=>{var te,ae,fe;const{switcherIcon:Ie=o.switcherIcon||((te=a.value.slots)===null||te===void 0?void 0:te[(fe=(ae=e.data)===null||ae===void 0?void 0:ae.slots)===null||fe===void 0?void 0:fe.switcherIcon])}=e,{switcherIcon:Te}=a.value,Re=Ie||Te;return typeof Re==\"function\"?Re(L.value):Re},U=()=>{const{loadData:te,onNodeLoad:ae}=a.value;C.value||te&&b.value&&!D.value&&!R.value&&!w.value&&ae(F.value)};Ne(()=>{U()}),Hn(()=>{U()});const ie=()=>{const{prefixCls:te}=a.value,ae=X();if(D.value)return ae!==!1?f(\"span\",{class:le(`${te}-switcher`,`${te}-switcher-noop`)},[ae]):null;const fe=le(`${te}-switcher`,`${te}-switcher_${b.value?Yb:qb}`);return ae!==!1?f(\"span\",{onClick:Ce,class:fe},[ae]):null},ve=()=>{var te,ae;const{disableCheckbox:fe}=e,{prefixCls:Ie}=a.value,Te=T.value;return k.value?f(\"span\",{class:le(`${Ie}-checkbox`,$.value&&`${Ie}-checkbox-checked`,!$.value&&_.value&&`${Ie}-checkbox-indeterminate`,(Te||fe)&&`${Ie}-checkbox-disabled`),onClick:G},[(ae=(te=a.value).customCheckable)===null||ae===void 0?void 0:ae.call(te)]):null},me=()=>{const{prefixCls:te}=a.value;return f(\"span\",{class:le(`${te}-iconEle`,`${te}-icon__${z.value||\"docu\"}`,C.value&&`${te}-icon_loading`)},null)},he=()=>{const{disabled:te,eventKey:ae}=e,{draggable:fe,dropLevelOffset:Ie,dropPosition:Te,prefixCls:Re,indent:$e,dropIndicatorRender:xe,dragOverNodeKey:_e,direction:Me}=a.value;return!te&&fe!==!1&&_e===ae?xe({dropPosition:Te,dropLevelOffset:Ie,indent:$e,prefixCls:Re,direction:Me}):null},se=()=>{var te,ae,fe,Ie,Te,Re;const{icon:$e=o.icon,data:xe}=e,_e=o.title||((te=a.value.slots)===null||te===void 0?void 0:te[(fe=(ae=e.data)===null||ae===void 0?void 0:ae.slots)===null||fe===void 0?void 0:fe.title])||((Ie=a.value.slots)===null||Ie===void 0?void 0:Ie.title)||e.title,{prefixCls:Me,showIcon:He,icon:Ae,loadData:je}=a.value,at=T.value,ft=`${Me}-node-content-wrapper`;let st;if(He){const Ut=$e||((Te=a.value.slots)===null||Te===void 0?void 0:Te[(Re=xe?.slots)===null||Re===void 0?void 0:Re.icon])||Ae;st=Ut?f(\"span\",{class:le(`${Me}-iconEle`,`${Me}-icon__customize`)},[typeof Ut==\"function\"?Ut(L.value):Ut]):me()}else je&&C.value&&(st=me());let pt;typeof _e==\"function\"?pt=_e(L.value):pt=_e,pt=pt===void 0?n6:pt;const gt=f(\"span\",{class:`${Me}-title`},[pt]);return f(\"span\",{ref:E,title:typeof _e==\"string\"?_e:\"\",class:le(`${ft}`,`${ft}-${z.value||\"normal\"}`,!at&&(S.value||l.value)&&`${Me}-node-selected`),onMouseenter:q,onMouseleave:Z,onContextmenu:oe,onClick:V,onDblclick:H},[st,gt,he()])};return()=>{const te=h(h({},e),n),{eventKey:ae,isLeaf:fe,isStart:Ie,isEnd:Te,domRef:Re,active:$e,data:xe,onMousemove:_e,selectable:Me}=te,He=t6(te,[\"eventKey\",\"isLeaf\",\"isStart\",\"isEnd\",\"domRef\",\"active\",\"data\",\"onMousemove\",\"selectable\"]),{prefixCls:Ae,filterTreeNode:je,keyEntities:at,dropContainerKey:ft,dropTargetKey:st,draggingNodeKey:pt}=a.value,gt=T.value,Ut=Gr(He,{aria:!0,data:!0}),{level:en}=at[ae]||{},ln=Te[Te.length-1],Ht=ge(),bn=!gt&&Ht,An=pt===ae,no=Me!==void 0?{\"aria-selected\":!!Me}:void 0;return f(\"div\",A(A({ref:Re,class:le(n.class,`${Ae}-treenode`,{[`${Ae}-treenode-disabled`]:gt,[`${Ae}-treenode-switcher-${b.value?\"open\":\"close\"}`]:!fe,[`${Ae}-treenode-checkbox-checked`]:$.value,[`${Ae}-treenode-checkbox-indeterminate`]:_.value,[`${Ae}-treenode-selected`]:S.value,[`${Ae}-treenode-loading`]:C.value,[`${Ae}-treenode-active`]:$e,[`${Ae}-treenode-leaf-last`]:ln,[`${Ae}-treenode-draggable`]:bn,dragging:An,\"drop-target\":st===ae,\"drop-container\":ft===ae,\"drag-over\":!gt&&x.value,\"drag-over-gap-top\":!gt&&P.value,\"drag-over-gap-bottom\":!gt&&O.value,\"filter-node\":je&&je(F.value)}),style:n.style,draggable:bn,\"aria-grabbed\":An,onDragstart:bn?re:void 0,onDragenter:Ht?Y:void 0,onDragover:Ht?Q:void 0,onDragleave:Ht?ce:void 0,onDrop:Ht?be:void 0,onDragend:Ht?ue:void 0,onMousemove:_e},no),Ut),[f(J8,{prefixCls:Ae,level:en,isStart:Ie,isEnd:Te},null),Se(),ie(),ve(),se()])}}});function Lo(e,t){if(!e)return[];const n=e.slice(),o=n.indexOf(t);return o>=0&&n.splice(o,1),n}function Jo(e,t){const n=(e||[]).slice();return n.indexOf(t)===-1&&n.push(t),n}function xg(e){return e.split(\"-\")}function tw(e,t){return`${e}-${t}`}function o6(e){return e&&e.type&&e.type.isTreeNode}function r6(e,t){const n=[],o=t[e];function r(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(a=>{let{key:i,children:s}=a;n.push(i),r(s)})}return r(o.children),n}function l6(e){if(e.parent){const t=xg(e.pos);return Number(t[t.length-1])===e.parent.children.length-1}return!1}function a6(e){const t=xg(e.pos);return Number(t[t.length-1])===0}function Zb(e,t,n,o,r,l,a,i,s,c){var u;const{clientX:d,clientY:p}=e,{top:m,height:g}=e.target.getBoundingClientRect(),y=((c===\"rtl\"?-1:1)*((r?.x||0)-d)-12)/o;let b=i[n.eventKey];if(p<m+g/2){const M=a.findIndex(D=>D.key===b.key),E=M<=0?0:M-1,R=a[E].key;b=i[R]}const S=b.key,$=b,w=b.key;let C=0,_=0;if(!s.has(S))for(let M=0;M<y&&l6(b);M+=1)b=b.parent,_+=1;const x=t.eventData,P=b.node;let O=!0;return a6(b)&&b.level===0&&p<m+g/2&&l({dragNode:x,dropNode:P,dropPosition:-1})&&b.key===n.eventKey?C=-1:($.children||[]).length&&s.has(w)?l({dragNode:x,dropNode:P,dropPosition:0})?C=0:O=!1:_===0?y>-1.5?l({dragNode:x,dropNode:P,dropPosition:1})?C=1:O=!1:l({dragNode:x,dropNode:P,dropPosition:0})?C=0:l({dragNode:x,dropNode:P,dropPosition:1})?C=1:O=!1:l({dragNode:x,dropNode:P,dropPosition:1})?C=1:O=!1,{dropPosition:C,dropLevelOffset:_,dropTargetKey:b.key,dropTargetPos:b.pos,dragOverNodeKey:w,dropContainerKey:C===0?null:((u=b.parent)===null||u===void 0?void 0:u.key)||null,dropAllowed:O}}function Qb(e,t){if(!e)return;const{multiple:n}=t;return n?e.slice():e.length?[e[0]]:e}function hf(e){if(!e)return null;let t;if(Array.isArray(e))t={checkedKeys:e,halfCheckedKeys:void 0};else if(typeof e==\"object\")t={checkedKeys:e.checked||void 0,halfCheckedKeys:e.halfChecked||void 0};else return null;return t}function zp(e,t){const n=new Set;function o(r){if(n.has(r))return;const l=t[r];if(!l)return;n.add(r);const{parent:a,node:i}=l;i.disabled||a&&o(a.key)}return(e||[]).forEach(r=>{o(r)}),[...n]}var i6=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function Gi(e,t){return e??t}function dd(e){const{title:t,_title:n,key:o,children:r}=e||{},l=t||\"title\";return{title:l,_title:n||[l],key:o||\"key\",children:r||\"children\"}}function Hp(e){function t(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return kt(n).map(r=>{var l,a,i,s;if(!o6(r))return null;const c=r.children||{},u=r.key,d={};for(const[M,E]of Object.entries(r.props))d[_a(M)]=E;const{isLeaf:p,checkable:m,selectable:g,disabled:v,disableCheckbox:y}=d,b={isLeaf:p||p===\"\"||void 0,checkable:m||m===\"\"||void 0,selectable:g||g===\"\"||void 0,disabled:v||v===\"\"||void 0,disableCheckbox:y||y===\"\"||void 0},S=h(h({},d),b),{title:$=(l=c.title)===null||l===void 0?void 0:l.call(c,S),icon:w=(a=c.icon)===null||a===void 0?void 0:a.call(c,S),switcherIcon:C=(i=c.switcherIcon)===null||i===void 0?void 0:i.call(c,S)}=d,_=i6(d,[\"title\",\"icon\",\"switcherIcon\"]),x=(s=c.default)===null||s===void 0?void 0:s.call(c),P=h(h(h({},_),{title:$,icon:w,switcherIcon:C,key:u,isLeaf:p}),b),O=t(x);return O.length&&(P.children=O),P})}return t(e)}function s6(e,t,n){const{_title:o,key:r,children:l}=dd(n),a=new Set(t===!0?[]:t),i=[];function s(c){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return c.map((d,p)=>{const m=tw(u?u.pos:\"0\",p),g=Gi(d[r],m);let v;for(let b=0;b<o.length;b+=1){const S=o[b];if(d[S]!==void 0){v=d[S];break}}const y=h(h({},ot(d,[...o,r,l])),{title:v,key:g,parent:u,pos:m,children:null,data:d,isStart:[...u?u.isStart:[],p===0],isEnd:[...u?u.isEnd:[],p===c.length-1]});return i.push(y),t===!0||a.has(g)?y.children=s(d[l]||[],y):y.children=[],y})}return s(e),i}function c6(e,t,n){let o={};typeof n==\"object\"?o=n:o={externalGetKey:n},o=o||{};const{childrenPropName:r,externalGetKey:l,fieldNames:a}=o,{key:i,children:s}=dd(a),c=r||s;let u;l?typeof l==\"string\"?u=p=>p[l]:typeof l==\"function\"&&(u=p=>l(p)):u=(p,m)=>Gi(p[i],m);function d(p,m,g,v){const y=p?p[c]:e,b=p?tw(g.pos,m):\"0\",S=p?[...v,p]:[];if(p){const $=u(p,b),w={node:p,index:m,pos:b,key:$,parentPos:g.node?g.pos:null,level:g.level+1,nodes:S};t(w)}y&&y.forEach(($,w)=>{d($,w,{node:p,pos:b,level:g?g.level+1:-1},S)})}d(null)}function Xi(e){let{initWrapper:t,processEntity:n,onProcessFinished:o,externalGetKey:r,childrenPropName:l,fieldNames:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;const s=r||i,c={},u={};let d={posEntities:c,keyEntities:u};return t&&(d=t(d)||d),c6(e,p=>{const{node:m,index:g,pos:v,key:y,parentPos:b,level:S,nodes:$}=p,w={node:m,nodes:$,index:g,key:y,pos:v,level:S},C=Gi(y,v);c[v]=w,u[C]=w,w.parent=c[b],w.parent&&(w.parent.children=w.parent.children||[],w.parent.children.push(w)),n&&n(w,d)},{externalGetKey:s,childrenPropName:l,fieldNames:a}),o&&o(d),d}function oc(e,t){let{expandedKeysSet:n,selectedKeysSet:o,loadedKeysSet:r,loadingKeysSet:l,checkedKeysSet:a,halfCheckedKeysSet:i,dragOverNodeKey:s,dropPosition:c,keyEntities:u}=t;const d=u[e];return{eventKey:e,expanded:n.has(e),selected:o.has(e),loaded:r.has(e),loading:l.has(e),checked:a.has(e),halfChecked:i.has(e),pos:String(d?d.pos:\"\"),parent:d.parent,dragOver:s===e&&c===0,dragOverGapTop:s===e&&c===-1,dragOverGapBottom:s===e&&c===1}}function rc(e){const{data:t,expanded:n,selected:o,checked:r,loaded:l,loading:a,halfChecked:i,dragOver:s,dragOverGapTop:c,dragOverGapBottom:u,pos:d,active:p,eventKey:m}=e,g=h(h({dataRef:t},t),{expanded:n,selected:o,checked:r,loaded:l,loading:a,halfChecked:i,dragOver:s,dragOverGapTop:c,dragOverGapBottom:u,pos:d,active:p,eventKey:m,key:m});return\"props\"in g||Object.defineProperty(g,\"props\",{get(){return e}}),g}const u6=(e,t)=>I(()=>Xi(e.value,{fieldNames:t.value,initWrapper:o=>h(h({},o),{pathKeyEntities:{}}),processEntity:(o,r)=>{const l=o.nodes.map(a=>a[t.value.value]).join($g);r.pathKeyEntities[l]=o,o.key=l}}).pathKeyEntities);function d6(e){const t=ee(!1),n=J({});return ze(()=>{if(!e.value){t.value=!1,n.value={};return}let o={matchInputWidth:!0,limit:50};e.value&&typeof e.value==\"object\"&&(o=h(h({},o),e.value)),o.limit<=0&&delete o.limit,t.value=!0,n.value=o}),{showSearch:t,searchConfig:n}}const ni=\"__rc_cascader_search_mark__\",f6=(e,t,n)=>{let{label:o}=n;return t.some(r=>String(r[o]).toLowerCase().includes(e.toLowerCase()))},p6=e=>{let{path:t,fieldNames:n}=e;return t.map(o=>o[n.label]).join(\" / \")},m6=(e,t,n,o,r,l)=>I(()=>{const{filter:a=f6,render:i=p6,limit:s=50,sort:c}=r.value,u=[];if(!e.value)return[];function d(p,m){p.forEach(g=>{if(!c&&s>0&&u.length>=s)return;const v=[...m,g],y=g[n.value.children];(!y||y.length===0||l.value)&&a(e.value,v,{label:n.value.label})&&u.push(h(h({},g),{[n.value.label]:i({inputValue:e.value,path:v,prefixCls:o.value,fieldNames:n.value}),[ni]:v})),y&&d(g[n.value.children],v)})}return d(t.value,[]),c&&u.sort((p,m)=>c(p[ni],m[ni],e.value,n.value)),s>0?u.slice(0,s):u});function Jb(e,t,n){const o=new Set(e);return e.filter(r=>{const l=t[r],a=l?l.parent:null,i=l?l.children:null;return n===Yx?!(i&&i.some(s=>s.key&&o.has(s.key))):!(a&&!a.node.disabled&&o.has(a.key))})}function Oi(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var r;let l=t;const a=[];for(let i=0;i<e.length;i+=1){const s=e[i],c=l?.findIndex(d=>{const p=d[n.value];return o?String(p)===String(s):p===s}),u=c!==-1?l?.[c]:null;a.push({value:(r=u?.[n.value])!==null&&r!==void 0?r:s,index:c,option:u}),l=u?.[n.children]}return a}const v6=(e,t,n)=>I(()=>{const o=[],r=[];return n.value.forEach(l=>{Oi(l,e.value,t.value).every(i=>i.option)?r.push(l):o.push(l)}),[r,o]});function nw(e,t){const n=new Set;return e.forEach(o=>{t.has(o)||n.add(o)}),n}function g6(e){const{disabled:t,disableCheckbox:n,checkable:o}=e||{};return!!(t||n)||o===!1}function h6(e,t,n,o){const r=new Set(e),l=new Set;for(let i=0;i<=n;i+=1)(t.get(i)||new Set).forEach(c=>{const{key:u,node:d,children:p=[]}=c;r.has(u)&&!o(d)&&p.filter(m=>!o(m.node)).forEach(m=>{r.add(m.key)})});const a=new Set;for(let i=n;i>=0;i-=1)(t.get(i)||new Set).forEach(c=>{const{parent:u,node:d}=c;if(o(d)||!c.parent||a.has(c.parent.key))return;if(o(c.parent.node)){a.add(u.key);return}let p=!0,m=!1;(u.children||[]).filter(g=>!o(g.node)).forEach(g=>{let{key:v}=g;const y=r.has(v);p&&!y&&(p=!1),!m&&(y||l.has(v))&&(m=!0)}),p&&r.add(u.key),m&&l.add(u.key),a.add(u.key)});return{checkedKeys:Array.from(r),halfCheckedKeys:Array.from(nw(l,r))}}function b6(e,t,n,o,r){const l=new Set(e);let a=new Set(t);for(let s=0;s<=o;s+=1)(n.get(s)||new Set).forEach(u=>{const{key:d,node:p,children:m=[]}=u;!l.has(d)&&!a.has(d)&&!r(p)&&m.filter(g=>!r(g.node)).forEach(g=>{l.delete(g.key)})});a=new Set;const i=new Set;for(let s=o;s>=0;s-=1)(n.get(s)||new Set).forEach(u=>{const{parent:d,node:p}=u;if(r(p)||!u.parent||i.has(u.parent.key))return;if(r(u.parent.node)){i.add(d.key);return}let m=!0,g=!1;(d.children||[]).filter(v=>!r(v.node)).forEach(v=>{let{key:y}=v;const b=l.has(y);m&&!b&&(m=!1),!g&&(b||a.has(y))&&(g=!0)}),m||l.delete(d.key),g&&a.add(d.key),i.add(d.key)});return{checkedKeys:Array.from(l),halfCheckedKeys:Array.from(nw(a,l))}}function mo(e,t,n,o,r,l){let a;l?a=l:a=g6;const i=new Set(e.filter(c=>!!n[c]));let s;return t===!0?s=h6(i,r,o,a):s=b6(i,t.halfCheckedKeys,r,o,a),s}const y6=(e,t,n,o,r)=>I(()=>{const l=r.value||(a=>{let{labels:i}=a;const s=o.value?i.slice(-1):i,c=\" / \";return s.every(u=>[\"string\",\"number\"].includes(typeof u))?s.join(c):s.reduce((u,d,p)=>{const m=Kt(d)?dt(d,{key:p}):d;return p===0?[m]:[...u,c,m]},[])});return e.value.map(a=>{const i=Oi(a,t.value,n.value),s=l({labels:i.map(u=>{let{option:d,value:p}=u;var m;return(m=d?.[n.value.label])!==null&&m!==void 0?m:p}),selectedOptions:i.map(u=>{let{option:d}=u;return d})}),c=Rr(a);return{label:s,value:c,key:c,valueCells:a}})}),ow=Symbol(\"CascaderContextKey\"),S6=e=>{Qe(ow,e)},fd=()=>Je(ow),$6=()=>{const e=Bi(),{values:t}=fd(),[n,o]=ht([]);return pe(()=>e.open,()=>{if(e.open&&!e.multiple){const r=t.value[0];o(r||[])}},{immediate:!0}),[n,o]},C6=(e,t,n,o,r,l)=>{const a=Bi(),i=I(()=>a.direction===\"rtl\"),[s,c,u]=[J([]),J(),J([])];ze(()=>{let v=-1,y=t.value;const b=[],S=[],$=o.value.length;for(let C=0;C<$&&y;C+=1){const _=y.findIndex(x=>x[n.value.value]===o.value[C]);if(_===-1)break;v=_,b.push(v),S.push(o.value[C]),y=y[v][n.value.children]}let w=t.value;for(let C=0;C<b.length-1;C+=1)w=w[b[C]][n.value.children];[s.value,c.value,u.value]=[S,v,w]});const d=v=>{r(v)},p=v=>{const y=u.value.length;let b=c.value;b===-1&&v<0&&(b=y);for(let S=0;S<y;S+=1){b=(b+v+y)%y;const $=u.value[b];if($&&!$.disabled){const w=$[n.value.value],C=s.value.slice(0,-1).concat(w);d(C);return}}},m=()=>{if(s.value.length>1){const v=s.value.slice(0,-1);d(v)}else a.toggleOpen(!1)},g=()=>{var v;const b=(((v=u.value[c.value])===null||v===void 0?void 0:v[n.value.children])||[]).find(S=>!S.disabled);if(b){const S=[...s.value,b[n.value.value]];d(S)}};e.expose({onKeydown:v=>{const{which:y}=v;switch(y){case we.UP:case we.DOWN:{let b=0;y===we.UP?b=-1:y===we.DOWN&&(b=1),b!==0&&p(b);break}case we.LEFT:{i.value?g():m();break}case we.RIGHT:{i.value?m():g();break}case we.BACKSPACE:{a.searchValue||m();break}case we.ENTER:{if(s.value.length){const b=u.value[c.value],S=b?.[ni]||[];S.length?l(S.map($=>$[n.value.value]),S[S.length-1]):l(s.value,b)}break}case we.ESC:a.toggleOpen(!1),open&&v.stopPropagation()}},onKeyup:()=>{}})};function pd(e){let{prefixCls:t,checked:n,halfChecked:o,disabled:r,onClick:l}=e;const{customSlots:a,checkable:i}=fd(),s=i.value!==!1?a.value.checkable:i.value,c=typeof s==\"function\"?s():typeof s==\"boolean\"?null:s;return f(\"span\",{class:{[t]:!0,[`${t}-checked`]:n,[`${t}-indeterminate`]:!n&&o,[`${t}-disabled`]:r},onClick:l},[c])}pd.props=[\"prefixCls\",\"checked\",\"halfChecked\",\"disabled\",\"onClick\"];pd.displayName=\"Checkbox\";pd.inheritAttrs=!1;const rw=\"__cascader_fix_label__\";function md(e){let{prefixCls:t,multiple:n,options:o,activeValue:r,prevValuePath:l,onToggleOpen:a,onSelect:i,onActive:s,checkedSet:c,halfCheckedSet:u,loadingKeys:d,isSelectable:p}=e;var m,g,v,y,b,S;const $=`${t}-menu`,w=`${t}-menu-item`,{fieldNames:C,changeOnSelect:_,expandTrigger:x,expandIcon:P,loadingIcon:O,dropdownMenuColumnStyle:M,customSlots:E}=fd(),R=(m=P.value)!==null&&m!==void 0?m:(v=(g=E.value).expandIcon)===null||v===void 0?void 0:v.call(g),D=(y=O.value)!==null&&y!==void 0?y:(S=(b=E.value).loadingIcon)===null||S===void 0?void 0:S.call(b),z=x.value===\"hover\";return f(\"ul\",{class:$,role:\"menu\"},[o.map(T=>{var k;const{disabled:B}=T,L=T[ni],N=(k=T[rw])!==null&&k!==void 0?k:T[C.value.label],F=T[C.value.value],j=Xa(T,C.value),H=L?L.map(Y=>Y[C.value.value]):[...l,F],K=Rr(H),G=d.includes(K),V=c.has(K),q=u.has(K),Z=()=>{!B&&(!z||!j)&&s(H)},oe=()=>{p(T)&&i(H,j)};let re;return typeof T.title==\"string\"?re=T.title:typeof N==\"string\"&&(re=N),f(\"li\",{key:K,class:[w,{[`${w}-expand`]:!j,[`${w}-active`]:r===F,[`${w}-disabled`]:B,[`${w}-loading`]:G}],style:M.value,role:\"menuitemcheckbox\",title:re,\"aria-checked\":V,\"data-path-key\":K,onClick:()=>{Z(),(!n||j)&&oe()},onDblclick:()=>{_.value&&a(!1)},onMouseenter:()=>{z&&Z()},onMousedown:Y=>{Y.preventDefault()}},[n&&f(pd,{prefixCls:`${t}-checkbox`,checked:V,halfChecked:q,disabled:B,onClick:Y=>{Y.stopPropagation(),oe()}},null),f(\"div\",{class:`${w}-content`},[N]),!G&&R&&!j&&f(\"div\",{class:`${w}-expand-icon`},[dt(R)]),G&&D&&f(\"div\",{class:`${w}-loading-icon`},[dt(D)])])})])}md.props=[\"prefixCls\",\"multiple\",\"options\",\"activeValue\",\"prevValuePath\",\"onToggleOpen\",\"onSelect\",\"onActive\",\"checkedSet\",\"halfCheckedSet\",\"loadingKeys\",\"isSelectable\"];md.displayName=\"Column\";md.inheritAttrs=!1;const x6=ne({compatConfig:{MODE:3},name:\"OptionList\",inheritAttrs:!1,setup(e,t){const{attrs:n,slots:o}=t,r=Bi(),l=J(),a=I(()=>r.direction===\"rtl\"),{options:i,values:s,halfValues:c,fieldNames:u,changeOnSelect:d,onSelect:p,searchOptions:m,dropdownPrefixCls:g,loadData:v,expandTrigger:y,customSlots:b}=fd(),S=I(()=>g.value||r.prefixCls),$=ee([]),w=k=>{if(!v.value||r.searchValue)return;const L=Oi(k,i.value,u.value).map(F=>{let{option:j}=F;return j}),N=L[L.length-1];if(N&&!Xa(N,u.value)){const F=Rr(k);$.value=[...$.value,F],v.value(L)}};ze(()=>{$.value.length&&$.value.forEach(k=>{const B=U8(k),L=Oi(B,i.value,u.value,!0).map(F=>{let{option:j}=F;return j}),N=L[L.length-1];(!N||N[u.value.children]||Xa(N,u.value))&&($.value=$.value.filter(F=>F!==k))})});const C=I(()=>new Set(ql(s.value))),_=I(()=>new Set(ql(c.value))),[x,P]=$6(),O=k=>{P(k),w(k)},M=k=>{const{disabled:B}=k,L=Xa(k,u.value);return!B&&(L||d.value||r.multiple)},E=function(k,B){let L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;p(k),!r.multiple&&(B||d.value&&(y.value===\"hover\"||L))&&r.toggleOpen(!1)},R=I(()=>r.searchValue?m.value:i.value),D=I(()=>{const k=[{options:R.value}];let B=R.value;for(let L=0;L<x.value.length;L+=1){const N=x.value[L],F=B.find(H=>H[u.value.value]===N),j=F?.[u.value.children];if(!j?.length)break;B=j,k.push({options:j})}return k});C6(t,R,u,x,O,(k,B)=>{M(B)&&E(k,Xa(B,u.value),!0)});const T=k=>{k.preventDefault()};return Ne(()=>{pe(x,k=>{var B;for(let L=0;L<k.length;L+=1){const N=k.slice(0,L+1),F=Rr(N),j=(B=l.value)===null||B===void 0?void 0:B.querySelector(`li[data-path-key=\"${F.replace(/\\\\{0,2}\"/g,'\\\\\"')}\"]`);j&&q8(j)}},{flush:\"post\",immediate:!0})}),()=>{var k,B,L,N,F;const{notFoundContent:j=((k=o.notFoundContent)===null||k===void 0?void 0:k.call(o))||((L=(B=b.value).notFoundContent)===null||L===void 0?void 0:L.call(B)),multiple:H,toggleOpen:K}=r,G=!(!((F=(N=D.value[0])===null||N===void 0?void 0:N.options)===null||F===void 0)&&F.length),V=[{[u.value.value]:\"__EMPTY__\",[rw]:j,disabled:!0}],q=h(h({},n),{multiple:!G&&H,onSelect:E,onActive:O,onToggleOpen:K,checkedSet:C.value,halfCheckedSet:_.value,loadingKeys:$.value,isSelectable:M}),oe=(G?[{options:V}]:D.value).map((re,Y)=>{const Q=x.value.slice(0,Y),ce=x.value[Y];return f(md,A(A({key:Y},q),{},{prefixCls:S.value,options:re.options,prevValuePath:Q,activeValue:ce}),null)});return f(\"div\",{class:[`${S.value}-menus`,{[`${S.value}-menu-empty`]:G,[`${S.value}-rtl`]:a.value}],onMousedown:T,ref:l},[oe])}}});function vd(e){const t=J(0),n=ee();return ze(()=>{const o=new Map;let r=0;const l=e.value||{};for(const a in l)if(Object.prototype.hasOwnProperty.call(l,a)){const i=l[a],{level:s}=i;let c=o.get(s);c||(c=new Set,o.set(s,c)),c.add(i),r=Math.max(r,s)}t.value=r,n.value=o}),{maxLevel:t,levelEntities:n}}function w6(){return h(h({},ot(Xu(),[\"tokenSeparators\",\"mode\",\"showSearch\"])),{id:String,prefixCls:String,fieldNames:De(),children:Array,value:{type:[String,Number,Array]},defaultValue:{type:[String,Number,Array]},changeOnSelect:{type:Boolean,default:void 0},displayRender:Function,checkable:{type:Boolean,default:void 0},showCheckedStrategy:{type:String,default:Ux},showSearch:{type:[Boolean,Object],default:void 0},searchValue:String,onSearch:Function,expandTrigger:String,options:Array,dropdownPrefixCls:String,loadData:Function,popupVisible:{type:Boolean,default:void 0},dropdownClassName:String,dropdownMenuColumnStyle:{type:Object,default:void 0},popupStyle:{type:Object,default:void 0},dropdownStyle:{type:Object,default:void 0},popupPlacement:String,placement:String,onPopupVisibleChange:Function,onDropdownVisibleChange:Function,expandIcon:W.any,loadingIcon:W.any})}function lw(){return h(h({},w6()),{onChange:Function,customSlots:Object})}function _6(e){return Array.isArray(e)&&Array.isArray(e[0])}function ey(e){return e?_6(e)?e:(e.length===0?[]:[e]).map(t=>Array.isArray(t)?t:[t]):[]}const I6=ne({compatConfig:{MODE:3},name:\"Cascader\",inheritAttrs:!1,props:Ze(lw(),{}),setup(e,t){let{attrs:n,expose:o,slots:r}=t;const l=$v(We(e,\"id\")),a=I(()=>!!e.checkable),[i,s]=Mt(e.defaultValue,{value:I(()=>e.value),postState:ey}),c=I(()=>Y8(e.fieldNames)),u=I(()=>e.options||[]),d=u6(u,c),p=Y=>{const Q=d.value;return Y.map(ce=>{const{nodes:ue}=Q[ce];return ue.map(be=>be[c.value.value])})},[m,g]=Mt(\"\",{value:I(()=>e.searchValue),postState:Y=>Y||\"\"}),v=(Y,Q)=>{g(Y),Q.source!==\"blur\"&&e.onSearch&&e.onSearch(Y)},{showSearch:y,searchConfig:b}=d6(We(e,\"showSearch\")),S=m6(m,u,c,I(()=>e.dropdownPrefixCls||e.prefixCls),b,We(e,\"changeOnSelect\")),$=v6(u,c,i),[w,C,_]=[J([]),J([]),J([])],{maxLevel:x,levelEntities:P}=vd(d);ze(()=>{const[Y,Q]=$.value;if(!a.value||!i.value.length){[w.value,C.value,_.value]=[Y,[],Q];return}const ce=ql(Y),ue=d.value,{checkedKeys:be,halfCheckedKeys:Ce}=mo(ce,!0,ue,x.value,P.value);[w.value,C.value,_.value]=[p(be),p(Ce),Q]});const O=I(()=>{const Y=ql(w.value),Q=Jb(Y,d.value,e.showCheckedStrategy);return[..._.value,...p(Q)]}),M=y6(O,u,c,a,We(e,\"displayRender\")),E=Y=>{if(s(Y),e.onChange){const Q=ey(Y),ce=Q.map(Ce=>Oi(Ce,u.value,c.value).map(ge=>ge.option)),ue=a.value?Q:Q[0],be=a.value?ce:ce[0];e.onChange(ue,be)}},R=Y=>{if(g(\"\"),!a.value)E(Y);else{const Q=Rr(Y),ce=ql(w.value),ue=ql(C.value),be=ce.includes(Q),Ce=_.value.some(X=>Rr(X)===Q);let ge=w.value,Se=_.value;if(Ce&&!be)Se=_.value.filter(X=>Rr(X)!==Q);else{const X=be?ce.filter(ve=>ve!==Q):[...ce,Q];let U;be?{checkedKeys:U}=mo(X,{halfCheckedKeys:ue},d.value,x.value,P.value):{checkedKeys:U}=mo(X,!0,d.value,x.value,P.value);const ie=Jb(U,d.value,e.showCheckedStrategy);ge=p(ie)}E([...Se,...ge])}},D=(Y,Q)=>{if(Q.type===\"clear\"){E([]);return}const{valueCells:ce}=Q.values[0];R(ce)},z=I(()=>e.open!==void 0?e.open:e.popupVisible),T=I(()=>e.dropdownStyle||e.popupStyle||{}),k=I(()=>e.placement||e.popupPlacement),B=Y=>{var Q,ce;(Q=e.onDropdownVisibleChange)===null||Q===void 0||Q.call(e,Y),(ce=e.onPopupVisibleChange)===null||ce===void 0||ce.call(e,Y)},{changeOnSelect:L,checkable:N,dropdownPrefixCls:F,loadData:j,expandTrigger:H,expandIcon:K,loadingIcon:G,dropdownMenuColumnStyle:V,customSlots:q,dropdownClassName:Z}=jo(e);S6({options:u,fieldNames:c,values:w,halfValues:C,changeOnSelect:L,onSelect:R,checkable:N,searchOptions:S,dropdownPrefixCls:F,loadData:j,expandTrigger:H,expandIcon:K,loadingIcon:G,dropdownMenuColumnStyle:V,customSlots:q});const oe=J();o({focus(){var Y;(Y=oe.value)===null||Y===void 0||Y.focus()},blur(){var Y;(Y=oe.value)===null||Y===void 0||Y.blur()},scrollTo(Y){var Q;(Q=oe.value)===null||Q===void 0||Q.scrollTo(Y)}});const re=I(()=>ot(e,[\"id\",\"prefixCls\",\"fieldNames\",\"defaultValue\",\"value\",\"changeOnSelect\",\"onChange\",\"displayRender\",\"checkable\",\"searchValue\",\"onSearch\",\"showSearch\",\"expandTrigger\",\"options\",\"dropdownPrefixCls\",\"loadData\",\"popupVisible\",\"open\",\"dropdownClassName\",\"dropdownMenuColumnStyle\",\"popupPlacement\",\"placement\",\"onDropdownVisibleChange\",\"onPopupVisibleChange\",\"expandIcon\",\"loadingIcon\",\"customSlots\",\"showCheckedStrategy\",\"children\"]));return()=>{const Y=!(m.value?S.value:u.value).length,{dropdownMatchSelectWidth:Q=!1}=e,ce=m.value&&b.value.matchInputWidth||Y?{}:{minWidth:\"auto\"};return f(yv,A(A(A({},re.value),n),{},{ref:oe,id:l,prefixCls:e.prefixCls,dropdownMatchSelectWidth:Q,dropdownStyle:h(h({},T.value),ce),displayValues:M.value,onDisplayValuesChange:D,mode:a.value?\"multiple\":void 0,searchValue:m.value,onSearch:v,showSearch:y.value,OptionList:x6,emptyOptions:Y,open:z.value,dropdownClassName:Z.value,placement:k.value,onDropdownVisibleChange:B,getRawInputElement:()=>{var ue;return(ue=r.default)===null||ue===void 0?void 0:ue.call(r)}}),r)}}}),aw=()=>wn()&&window.document.documentElement,iw=e=>{if(wn()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(o=>o in n.style)}return!1},P6=(e,t)=>{if(!iw(e))return!1;const n=document.createElement(\"div\"),o=n.style[e];return n.style[e]=t,n.style[e]!==o};function wg(e,t){return!Array.isArray(e)&&t!==void 0?P6(e,t):iw(e)}let ws;const T6=()=>{if(!aw())return!1;if(ws!==void 0)return ws;const e=document.createElement(\"div\");return e.style.display=\"flex\",e.style.flexDirection=\"column\",e.style.rowGap=\"1px\",e.appendChild(document.createElement(\"div\")),e.appendChild(document.createElement(\"div\")),document.body.appendChild(e),ws=e.scrollHeight===1,document.body.removeChild(e),ws},sw=()=>{const e=ee(!1);return Ne(()=>{e.value=T6()}),e},cw=Symbol(\"rowContextKey\"),O6=e=>{Qe(cw,e)},E6=()=>Je(cw,{gutter:I(()=>{}),wrap:I(()=>{}),supportFlexGap:I(()=>{})}),M6=e=>{const{componentCls:t}=e;return{[t]:{display:\"flex\",flexFlow:\"row wrap\",minWidth:0,\"&::before, &::after\":{display:\"flex\"},\"&-no-wrap\":{flexWrap:\"nowrap\"},\"&-start\":{justifyContent:\"flex-start\"},\"&-center\":{justifyContent:\"center\"},\"&-end\":{justifyContent:\"flex-end\"},\"&-space-between\":{justifyContent:\"space-between\"},\"&-space-around \":{justifyContent:\"space-around\"},\"&-space-evenly \":{justifyContent:\"space-evenly\"},\"&-top\":{alignItems:\"flex-start\"},\"&-middle\":{alignItems:\"center\"},\"&-bottom\":{alignItems:\"flex-end\"}}}},A6=e=>{const{componentCls:t}=e;return{[t]:{position:\"relative\",maxWidth:\"100%\",minHeight:1}}},D6=(e,t)=>{const{componentCls:n,gridColumns:o}=e,r={};for(let l=o;l>=0;l--)l===0?(r[`${n}${t}-${l}`]={display:\"none\"},r[`${n}-push-${l}`]={insetInlineStart:\"auto\"},r[`${n}-pull-${l}`]={insetInlineEnd:\"auto\"},r[`${n}${t}-push-${l}`]={insetInlineStart:\"auto\"},r[`${n}${t}-pull-${l}`]={insetInlineEnd:\"auto\"},r[`${n}${t}-offset-${l}`]={marginInlineEnd:0},r[`${n}${t}-order-${l}`]={order:0}):(r[`${n}${t}-${l}`]={display:\"block\",flex:`0 0 ${l/o*100}%`,maxWidth:`${l/o*100}%`},r[`${n}${t}-push-${l}`]={insetInlineStart:`${l/o*100}%`},r[`${n}${t}-pull-${l}`]={insetInlineEnd:`${l/o*100}%`},r[`${n}${t}-offset-${l}`]={marginInlineStart:`${l/o*100}%`},r[`${n}${t}-order-${l}`]={order:l});return r},jp=(e,t)=>D6(e,t),R6=(e,t,n)=>({[`@media (min-width: ${t}px)`]:h({},jp(e,n))}),k6=Ge(\"Grid\",e=>[M6(e)]),N6=Ge(\"Grid\",e=>{const t=Le(e,{gridColumns:24}),n={\"-sm\":t.screenSMMin,\"-md\":t.screenMDMin,\"-lg\":t.screenLGMin,\"-xl\":t.screenXLMin,\"-xxl\":t.screenXXLMin};return[A6(t),jp(t,\"\"),jp(t,\"-xs\"),Object.keys(n).map(o=>R6(t,n[o],o)).reduce((o,r)=>h(h({},o),r),{})]}),B6=()=>({align:Fe([String,Object]),justify:Fe([String,Object]),prefixCls:String,gutter:Fe([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),_g=ne({compatConfig:{MODE:3},name:\"ARow\",inheritAttrs:!1,props:B6(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"row\",e),[a,i]=k6(r);let s;const c=Ev(),u=J({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),d=J({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),p=$=>I(()=>{if(typeof e[$]==\"string\")return e[$];if(typeof e[$]!=\"object\")return\"\";for(let w=0;w<ar.length;w++){const C=ar[w];if(!d.value[C])continue;const _=e[$][C];if(_!==void 0)return _}return\"\"}),m=p(\"align\"),g=p(\"justify\"),v=sw();Ne(()=>{s=c.value.subscribe($=>{d.value=$;const w=e.gutter||0;(!Array.isArray(w)&&typeof w==\"object\"||Array.isArray(w)&&(typeof w[0]==\"object\"||typeof w[1]==\"object\"))&&(u.value=$)})}),et(()=>{c.value.unsubscribe(s)});const y=I(()=>{const $=[void 0,void 0],{gutter:w=0}=e;return(Array.isArray(w)?w:[w,void 0]).forEach((_,x)=>{if(typeof _==\"object\")for(let P=0;P<ar.length;P++){const O=ar[P];if(u.value[O]&&_[O]!==void 0){$[x]=_[O];break}}else $[x]=_}),$});O6({gutter:y,supportFlexGap:v,wrap:I(()=>e.wrap)});const b=I(()=>le(r.value,{[`${r.value}-no-wrap`]:e.wrap===!1,[`${r.value}-${g.value}`]:g.value,[`${r.value}-${m.value}`]:m.value,[`${r.value}-rtl`]:l.value===\"rtl\"},o.class,i.value)),S=I(()=>{const $=y.value,w={},C=$[0]!=null&&$[0]>0?`${$[0]/-2}px`:void 0,_=$[1]!=null&&$[1]>0?`${$[1]/-2}px`:void 0;return C&&(w.marginLeft=C,w.marginRight=C),v.value?w.rowGap=`${$[1]}px`:_&&(w.marginTop=_,w.marginBottom=_),w});return()=>{var $;return a(f(\"div\",A(A({},o),{},{class:b.value,style:h(h({},S.value),o.style)}),[($=n.default)===null||$===void 0?void 0:$.call(n)]))}}});function ul(){return ul=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},ul.apply(this,arguments)}function L6(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Ei(e,t)}function Wp(e){return Wp=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Wp(e)}function Ei(e,t){return Ei=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,r){return o.__proto__=r,o},Ei(e,t)}function F6(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function lc(e,t,n){return F6()?lc=Reflect.construct.bind():lc=function(r,l,a){var i=[null];i.push.apply(i,l);var s=Function.bind.apply(r,i),c=new s;return a&&Ei(c,a.prototype),c},lc.apply(null,arguments)}function z6(e){return Function.toString.call(e).indexOf(\"[native code]\")!==-1}function Vp(e){var t=typeof Map==\"function\"?new Map:void 0;return Vp=function(o){if(o===null||!z6(o))return o;if(typeof o!=\"function\")throw new TypeError(\"Super expression must either be null or a function\");if(typeof t<\"u\"){if(t.has(o))return t.get(o);t.set(o,r)}function r(){return lc(o,arguments,Wp(this).constructor)}return r.prototype=Object.create(o.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Ei(r,o)},Vp(e)}var H6=/%[sdj%]/g,j6=function(){};function Kp(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var o=n.field;t[o]=t[o]||[],t[o].push(n)}),t}function Yn(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];var r=0,l=n.length;if(typeof e==\"function\")return e.apply(null,n);if(typeof e==\"string\"){var a=e.replace(H6,function(i){if(i===\"%%\")return\"%\";if(r>=l)return i;switch(i){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch{return\"[Circular]\"}break;default:return i}});return a}return e}function W6(e){return e===\"string\"||e===\"url\"||e===\"hex\"||e===\"email\"||e===\"date\"||e===\"pattern\"}function dn(e,t){return!!(e==null||t===\"array\"&&Array.isArray(e)&&!e.length||W6(t)&&typeof e==\"string\"&&!e)}function V6(e,t,n){var o=[],r=0,l=e.length;function a(i){o.push.apply(o,i||[]),r++,r===l&&n(o)}e.forEach(function(i){t(i,a)})}function ty(e,t,n){var o=0,r=e.length;function l(a){if(a&&a.length){n(a);return}var i=o;o=o+1,i<r?t(e[i],l):n([])}l([])}function K6(e){var t=[];return Object.keys(e).forEach(function(n){t.push.apply(t,e[n]||[])}),t}var ny=(function(e){L6(t,e);function t(n,o){var r;return r=e.call(this,\"Async Validation Error\")||this,r.errors=n,r.fields=o,r}return t})(Vp(Error));function G6(e,t,n,o,r){if(t.first){var l=new Promise(function(p,m){var g=function(b){return o(b),b.length?m(new ny(b,Kp(b))):p(r)},v=K6(e);ty(v,n,g)});return l.catch(function(p){return p}),l}var a=t.firstFields===!0?Object.keys(e):t.firstFields||[],i=Object.keys(e),s=i.length,c=0,u=[],d=new Promise(function(p,m){var g=function(y){if(u.push.apply(u,y),c++,c===s)return o(u),u.length?m(new ny(u,Kp(u))):p(r)};i.length||(o(u),p(r)),i.forEach(function(v){var y=e[v];a.indexOf(v)!==-1?ty(y,n,g):V6(y,n,g)})});return d.catch(function(p){return p}),d}function X6(e){return!!(e&&e.message!==void 0)}function U6(e,t){for(var n=e,o=0;o<t.length;o++){if(n==null)return n;n=n[t[o]]}return n}function oy(e,t){return function(n){var o;return e.fullFields?o=U6(t,e.fullFields):o=t[n.field||e.fullField],X6(n)?(n.field=n.field||e.fullField,n.fieldValue=o,n):{message:typeof n==\"function\"?n():n,fieldValue:o,field:n.field||e.fullField}}}function ry(e,t){if(t){for(var n in t)if(t.hasOwnProperty(n)){var o=t[n];typeof o==\"object\"&&typeof e[n]==\"object\"?e[n]=ul({},e[n],o):e[n]=o}}return e}var uw=function(t,n,o,r,l,a){t.required&&(!o.hasOwnProperty(t.field)||dn(n,a||t.type))&&r.push(Yn(l.messages.required,t.fullField))},Y6=function(t,n,o,r,l){(/^\\s+$/.test(n)||n===\"\")&&r.push(Yn(l.messages.whitespace,t.fullField))},_s,q6=function(){if(_s)return _s;var e=\"[a-fA-F\\\\d:]\",t=function(w){return w&&w.includeBoundaries?\"(?:(?<=\\\\s|^)(?=\"+e+\")|(?<=\"+e+\")(?=\\\\s|$))\":\"\"},n=\"(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}\",o=\"[a-fA-F\\\\d]{1,4}\",r=(`\n(?:\n(?:`+o+\":){7}(?:\"+o+`|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n(?:`+o+\":){6}(?:\"+n+\"|:\"+o+`|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\n(?:`+o+\":){5}(?::\"+n+\"|(?::\"+o+`){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\n(?:`+o+\":){4}(?:(?::\"+o+\"){0,1}:\"+n+\"|(?::\"+o+`){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\n(?:`+o+\":){3}(?:(?::\"+o+\"){0,2}:\"+n+\"|(?::\"+o+`){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\n(?:`+o+\":){2}(?:(?::\"+o+\"){0,3}:\"+n+\"|(?::\"+o+`){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\n(?:`+o+\":){1}(?:(?::\"+o+\"){0,4}:\"+n+\"|(?::\"+o+`){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::`+o+\"){0,5}:\"+n+\"|(?::\"+o+`){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\n`).replace(/\\s*\\/\\/.*$/gm,\"\").replace(/\\n/g,\"\").trim(),l=new RegExp(\"(?:^\"+n+\"$)|(?:^\"+r+\"$)\"),a=new RegExp(\"^\"+n+\"$\"),i=new RegExp(\"^\"+r+\"$\"),s=function(w){return w&&w.exact?l:new RegExp(\"(?:\"+t(w)+n+t(w)+\")|(?:\"+t(w)+r+t(w)+\")\",\"g\")};s.v4=function($){return $&&$.exact?a:new RegExp(\"\"+t($)+n+t($),\"g\")},s.v6=function($){return $&&$.exact?i:new RegExp(\"\"+t($)+r+t($),\"g\")};var c=\"(?:(?:[a-z]+:)?//)\",u=\"(?:\\\\S+(?::\\\\S*)?@)?\",d=s.v4().source,p=s.v6().source,m=\"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\",g=\"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\",v=\"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\",y=\"(?::\\\\d{2,5})?\",b='(?:[/?#][^\\\\s\"]*)?',S=\"(?:\"+c+\"|www\\\\.)\"+u+\"(?:localhost|\"+d+\"|\"+p+\"|\"+m+g+v+\")\"+y+b;return _s=new RegExp(\"(?:^\"+S+\"$)\",\"i\"),_s},ly={email:/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Ua={integer:function(t){return Ua.number(t)&&parseInt(t,10)===t},float:function(t){return Ua.number(t)&&!Ua.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime==\"function\"&&typeof t.getMonth==\"function\"&&typeof t.getYear==\"function\"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t==\"number\"},object:function(t){return typeof t==\"object\"&&!Ua.array(t)},method:function(t){return typeof t==\"function\"},email:function(t){return typeof t==\"string\"&&t.length<=320&&!!t.match(ly.email)},url:function(t){return typeof t==\"string\"&&t.length<=2048&&!!t.match(q6())},hex:function(t){return typeof t==\"string\"&&!!t.match(ly.hex)}},Z6=function(t,n,o,r,l){if(t.required&&n===void 0){uw(t,n,o,r,l);return}var a=[\"integer\",\"float\",\"array\",\"regexp\",\"object\",\"method\",\"email\",\"number\",\"date\",\"url\",\"hex\"],i=t.type;a.indexOf(i)>-1?Ua[i](n)||r.push(Yn(l.messages.types[i],t.fullField,t.type)):i&&typeof n!==t.type&&r.push(Yn(l.messages.types[i],t.fullField,t.type))},Q6=function(t,n,o,r,l){var a=typeof t.len==\"number\",i=typeof t.min==\"number\",s=typeof t.max==\"number\",c=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,u=n,d=null,p=typeof n==\"number\",m=typeof n==\"string\",g=Array.isArray(n);if(p?d=\"number\":m?d=\"string\":g&&(d=\"array\"),!d)return!1;g&&(u=n.length),m&&(u=n.replace(c,\"_\").length),a?u!==t.len&&r.push(Yn(l.messages[d].len,t.fullField,t.len)):i&&!s&&u<t.min?r.push(Yn(l.messages[d].min,t.fullField,t.min)):s&&!i&&u>t.max?r.push(Yn(l.messages[d].max,t.fullField,t.max)):i&&s&&(u<t.min||u>t.max)&&r.push(Yn(l.messages[d].range,t.fullField,t.min,t.max))},Fl=\"enum\",J6=function(t,n,o,r,l){t[Fl]=Array.isArray(t[Fl])?t[Fl]:[],t[Fl].indexOf(n)===-1&&r.push(Yn(l.messages[Fl],t.fullField,t[Fl].join(\", \")))},eB=function(t,n,o,r,l){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||r.push(Yn(l.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern==\"string\"){var a=new RegExp(t.pattern);a.test(n)||r.push(Yn(l.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},St={required:uw,whitespace:Y6,type:Z6,range:Q6,enum:J6,pattern:eB},tB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n,\"string\")&&!t.required)return o();St.required(t,n,r,a,l,\"string\"),dn(n,\"string\")||(St.type(t,n,r,a,l),St.range(t,n,r,a,l),St.pattern(t,n,r,a,l),t.whitespace===!0&&St.whitespace(t,n,r,a,l))}o(a)},nB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&St.type(t,n,r,a,l)}o(a)},oB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(n===\"\"&&(n=void 0),dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&(St.type(t,n,r,a,l),St.range(t,n,r,a,l))}o(a)},rB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&St.type(t,n,r,a,l)}o(a)},lB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),dn(n)||St.type(t,n,r,a,l)}o(a)},aB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&(St.type(t,n,r,a,l),St.range(t,n,r,a,l))}o(a)},iB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&(St.type(t,n,r,a,l),St.range(t,n,r,a,l))}o(a)},sB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(n==null&&!t.required)return o();St.required(t,n,r,a,l,\"array\"),n!=null&&(St.type(t,n,r,a,l),St.range(t,n,r,a,l))}o(a)},cB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&St.type(t,n,r,a,l)}o(a)},uB=\"enum\",dB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l),n!==void 0&&St[uB](t,n,r,a,l)}o(a)},fB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n,\"string\")&&!t.required)return o();St.required(t,n,r,a,l),dn(n,\"string\")||St.pattern(t,n,r,a,l)}o(a)},pB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n,\"date\")&&!t.required)return o();if(St.required(t,n,r,a,l),!dn(n,\"date\")){var s;n instanceof Date?s=n:s=new Date(n),St.type(t,s,r,a,l),s&&St.range(t,s.getTime(),r,a,l)}}o(a)},mB=function(t,n,o,r,l){var a=[],i=Array.isArray(n)?\"array\":typeof n;St.required(t,n,r,a,l,i),o(a)},bf=function(t,n,o,r,l){var a=t.type,i=[],s=t.required||!t.required&&r.hasOwnProperty(t.field);if(s){if(dn(n,a)&&!t.required)return o();St.required(t,n,r,i,l,a),dn(n,a)||St.type(t,n,r,i,l)}o(i)},vB=function(t,n,o,r,l){var a=[],i=t.required||!t.required&&r.hasOwnProperty(t.field);if(i){if(dn(n)&&!t.required)return o();St.required(t,n,r,a,l)}o(a)},oi={string:tB,method:nB,number:oB,boolean:rB,regexp:lB,integer:aB,float:iB,array:sB,object:cB,enum:dB,pattern:fB,date:pB,url:bf,hex:bf,email:bf,required:mB,any:vB};function Gp(){return{default:\"Validation error on field %s\",required:\"%s is required\",enum:\"%s must be one of %s\",whitespace:\"%s cannot be empty\",date:{format:\"%s date %s is invalid for format %s\",parse:\"%s date could not be parsed, %s is invalid \",invalid:\"%s date %s is invalid\"},types:{string:\"%s is not a %s\",method:\"%s is not a %s (function)\",array:\"%s is not an %s\",object:\"%s is not an %s\",number:\"%s is not a %s\",date:\"%s is not a %s\",boolean:\"%s is not a %s\",integer:\"%s is not an %s\",float:\"%s is not a %s\",regexp:\"%s is not a valid %s\",email:\"%s is not a valid %s\",url:\"%s is not a valid %s\",hex:\"%s is not a valid %s\"},string:{len:\"%s must be exactly %s characters\",min:\"%s must be at least %s characters\",max:\"%s cannot be longer than %s characters\",range:\"%s must be between %s and %s characters\"},number:{len:\"%s must equal %s\",min:\"%s cannot be less than %s\",max:\"%s cannot be greater than %s\",range:\"%s must be between %s and %s\"},array:{len:\"%s must be exactly %s in length\",min:\"%s cannot be less than %s in length\",max:\"%s cannot be greater than %s in length\",range:\"%s must be between %s and %s in length\"},pattern:{mismatch:\"%s value %s does not match pattern %s\"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var Xp=Gp(),Ui=(function(){function e(n){this.rules=null,this._messages=Xp,this.define(n)}var t=e.prototype;return t.define=function(o){var r=this;if(!o)throw new Error(\"Cannot configure a schema with no rules\");if(typeof o!=\"object\"||Array.isArray(o))throw new Error(\"Rules must be an object\");this.rules={},Object.keys(o).forEach(function(l){var a=o[l];r.rules[l]=Array.isArray(a)?a:[a]})},t.messages=function(o){return o&&(this._messages=ry(Gp(),o)),this._messages},t.validate=function(o,r,l){var a=this;r===void 0&&(r={}),l===void 0&&(l=function(){});var i=o,s=r,c=l;if(typeof s==\"function\"&&(c=s,s={}),!this.rules||Object.keys(this.rules).length===0)return c&&c(null,i),Promise.resolve(i);function u(v){var y=[],b={};function S(w){if(Array.isArray(w)){var C;y=(C=y).concat.apply(C,w)}else y.push(w)}for(var $=0;$<v.length;$++)S(v[$]);y.length?(b=Kp(y),c(y,b)):c(null,i)}if(s.messages){var d=this.messages();d===Xp&&(d=Gp()),ry(d,s.messages),s.messages=d}else s.messages=this.messages();var p={},m=s.keys||Object.keys(this.rules);m.forEach(function(v){var y=a.rules[v],b=i[v];y.forEach(function(S){var $=S;typeof $.transform==\"function\"&&(i===o&&(i=ul({},i)),b=i[v]=$.transform(b)),typeof $==\"function\"?$={validator:$}:$=ul({},$),$.validator=a.getValidationMethod($),$.validator&&($.field=v,$.fullField=$.fullField||v,$.type=a.getType($),p[v]=p[v]||[],p[v].push({rule:$,value:b,source:i,field:v}))})});var g={};return G6(p,s,function(v,y){var b=v.rule,S=(b.type===\"object\"||b.type===\"array\")&&(typeof b.fields==\"object\"||typeof b.defaultField==\"object\");S=S&&(b.required||!b.required&&v.value),b.field=v.field;function $(_,x){return ul({},x,{fullField:b.fullField+\".\"+_,fullFields:b.fullFields?[].concat(b.fullFields,[_]):[_]})}function w(_){_===void 0&&(_=[]);var x=Array.isArray(_)?_:[_];!s.suppressWarning&&x.length&&e.warning(\"async-validator:\",x),x.length&&b.message!==void 0&&(x=[].concat(b.message));var P=x.map(oy(b,i));if(s.first&&P.length)return g[b.field]=1,y(P);if(!S)y(P);else{if(b.required&&!v.value)return b.message!==void 0?P=[].concat(b.message).map(oy(b,i)):s.error&&(P=[s.error(b,Yn(s.messages.required,b.field))]),y(P);var O={};b.defaultField&&Object.keys(v.value).map(function(R){O[R]=b.defaultField}),O=ul({},O,v.rule.fields);var M={};Object.keys(O).forEach(function(R){var D=O[R],z=Array.isArray(D)?D:[D];M[R]=z.map($.bind(null,R))});var E=new e(M);E.messages(s.messages),v.rule.options&&(v.rule.options.messages=s.messages,v.rule.options.error=s.error),E.validate(v.value,v.rule.options||s,function(R){var D=[];P&&P.length&&D.push.apply(D,P),R&&R.length&&D.push.apply(D,R),y(D.length?D:null)})}}var C;if(b.asyncValidator)C=b.asyncValidator(b,v.value,w,v.source,s);else if(b.validator){try{C=b.validator(b,v.value,w,v.source,s)}catch(_){console.error?.(_),s.suppressValidatorError||setTimeout(function(){throw _},0),w(_.message)}C===!0?w():C===!1?w(typeof b.message==\"function\"?b.message(b.fullField||b.field):b.message||(b.fullField||b.field)+\" fails\"):C instanceof Array?w(C):C instanceof Error&&w(C.message)}C&&C.then&&C.then(function(){return w()},function(_){return w(_)})},function(v){u(v)},i)},t.getType=function(o){if(o.type===void 0&&o.pattern instanceof RegExp&&(o.type=\"pattern\"),typeof o.validator!=\"function\"&&o.type&&!oi.hasOwnProperty(o.type))throw new Error(Yn(\"Unknown rule type %s\",o.type));return o.type||\"string\"},t.getValidationMethod=function(o){if(typeof o.validator==\"function\")return o.validator;var r=Object.keys(o),l=r.indexOf(\"message\");return l!==-1&&r.splice(l,1),r.length===1&&r[0]===\"required\"?oi.required:oi[this.getType(o)]||void 0},e})();Ui.register=function(t,n){if(typeof n!=\"function\")throw new Error(\"Cannot register a validator by type, validator is not a function\");oi[t]=n};Ui.warning=j6;Ui.messages=Xp;Ui.validators=oi;function kr(e){return e==null?[]:Array.isArray(e)?e:[e]}function dw(e,t){let n=e;for(let o=0;o<t.length;o+=1){if(n==null)return;n=n[t[o]]}return n}function fw(e,t,n,o){if(!t.length)return n;const[r,...l]=t;let a;return!e&&typeof r==\"number\"?a=[]:Array.isArray(e)?a=[...e]:a=h({},e),o&&n===void 0&&l.length===1?delete a[r][l[0]]:a[r]=fw(a[r],l,n,o),a}function gB(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return t.length&&o&&n===void 0&&!dw(e,t.slice(0,-1))?e:fw(e,t,n,o)}function Up(e){return kr(e)}function hB(e,t){return dw(e,t)}function bB(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return gB(e,t,n,o)}function yB(e,t){return e&&e.some(n=>$B(n,t))}function ay(e){return typeof e==\"object\"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}function pw(e,t){const n=Array.isArray(e)?[...e]:h({},e);return t&&Object.keys(t).forEach(o=>{const r=n[o],l=t[o],a=ay(r)&&ay(l);n[o]=a?pw(r,l||{}):l}),n}function SB(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return n.reduce((r,l)=>pw(r,l),e)}function iy(e,t){let n={};return t.forEach(o=>{const r=hB(e,o);n=bB(n,o,r)}),n}function $B(e,t){return!e||!t||e.length!==t.length?!1:e.every((n,o)=>t[o]===n)}const Xn=\"'${name}' is not a valid ${type}\",gd={default:\"Validation error on field '${name}'\",required:\"'${name}' is required\",enum:\"'${name}' must be one of [${enum}]\",whitespace:\"'${name}' cannot be empty\",date:{format:\"'${name}' is invalid for format date\",parse:\"'${name}' could not be parsed as date\",invalid:\"'${name}' is invalid date\"},types:{string:Xn,method:Xn,array:Xn,object:Xn,number:Xn,date:Xn,boolean:Xn,integer:Xn,float:Xn,regexp:Xn,email:Xn,url:Xn,hex:Xn},string:{len:\"'${name}' must be exactly ${len} characters\",min:\"'${name}' must be at least ${min} characters\",max:\"'${name}' cannot be longer than ${max} characters\",range:\"'${name}' must be between ${min} and ${max} characters\"},number:{len:\"'${name}' must equal ${len}\",min:\"'${name}' cannot be less than ${min}\",max:\"'${name}' cannot be greater than ${max}\",range:\"'${name}' must be between ${min} and ${max}\"},array:{len:\"'${name}' must be exactly ${len} in length\",min:\"'${name}' cannot be less than ${min} in length\",max:\"'${name}' cannot be greater than ${max} in length\",range:\"'${name}' must be between ${min} and ${max} in length\"},pattern:{mismatch:\"'${name}' does not match pattern ${pattern}\"}};var hd=function(e,t,n,o){function r(l){return l instanceof n?l:new n(function(a){a(l)})}return new(n||(n=Promise))(function(l,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?l(u.value):r(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})};const CB=Ui;function xB(e,t){return e.replace(/\\$\\{\\w+\\}/g,n=>{const o=n.slice(2,-1);return t[o]})}function Yp(e,t,n,o,r){return hd(this,void 0,void 0,function*(){const l=h({},n);delete l.ruleIndex,delete l.trigger;let a=null;l&&l.type===\"array\"&&l.defaultField&&(a=l.defaultField,delete l.defaultField);const i=new CB({[e]:[l]}),s=SB({},gd,o.validateMessages);i.messages(s);let c=[];try{yield Promise.resolve(i.validate({[e]:t},h({},o)))}catch(p){p.errors?c=p.errors.map((m,g)=>{let{message:v}=m;return Kt(v)?Oo(v,{key:`error_${g}`}):v}):(console.error(p),c=[s.default()])}if(!c.length&&a)return(yield Promise.all(t.map((m,g)=>Yp(`${e}.${g}`,m,a,o,r)))).reduce((m,g)=>[...m,...g],[]);const u=h(h(h({},n),{name:e,enum:(n.enum||[]).join(\", \")}),r);return c.map(p=>typeof p==\"string\"?xB(p,u):p)})}function mw(e,t,n,o,r,l){const a=e.join(\".\"),i=n.map((c,u)=>{const d=c.validator,p=h(h({},c),{ruleIndex:u});return d&&(p.validator=(m,g,v)=>{let y=!1;const S=d(m,g,function(){for(var $=arguments.length,w=new Array($),C=0;C<$;C++)w[C]=arguments[C];Promise.resolve().then(()=>{y||v(...w)})});y=S&&typeof S.then==\"function\"&&typeof S.catch==\"function\",y&&S.then(()=>{v()}).catch($=>{v($||\" \")})}),p}).sort((c,u)=>{let{warningOnly:d,ruleIndex:p}=c,{warningOnly:m,ruleIndex:g}=u;return!!d==!!m?p-g:d?1:-1});let s;if(r===!0)s=new Promise((c,u)=>hd(this,void 0,void 0,function*(){for(let d=0;d<i.length;d+=1){const p=i[d],m=yield Yp(a,t,p,o,l);if(m.length){u([{errors:m,rule:p}]);return}}c([])}));else{const c=i.map(u=>Yp(a,t,u,o,l).then(d=>({errors:d,rule:u})));s=(r?_B(c):wB(c)).then(u=>Promise.reject(u))}return s.catch(c=>c),s}function wB(e){return hd(this,void 0,void 0,function*(){return Promise.all(e).then(t=>[].concat(...t))})}function _B(e){return hd(this,void 0,void 0,function*(){let t=0;return new Promise(n=>{e.forEach(o=>{o.then(r=>{r.errors.length&&n([r]),t+=1,t===e.length&&n([])})})})})}const vw=Symbol(\"formContextKey\"),gw=e=>{Qe(vw,e)},Ig=()=>Je(vw,{name:I(()=>{}),labelAlign:I(()=>\"right\"),vertical:I(()=>!1),addField:(e,t)=>{},removeField:e=>{},model:I(()=>{}),rules:I(()=>{}),colon:I(()=>{}),labelWrap:I(()=>{}),labelCol:I(()=>{}),requiredMark:I(()=>!1),validateTrigger:I(()=>{}),onValidate:()=>{},validateMessages:I(()=>gd)}),hw=Symbol(\"formItemPrefixContextKey\"),IB=e=>{Qe(hw,e)},PB=()=>Je(hw,{prefixCls:I(()=>\"\")});function TB(e){return typeof e==\"number\"?`${e} ${e} auto`:/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(e)?`0 0 ${e}`:e}const OB=()=>({span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}),EB=[\"xs\",\"sm\",\"md\",\"lg\",\"xl\",\"xxl\"],bd=ne({compatConfig:{MODE:3},name:\"ACol\",inheritAttrs:!1,props:OB(),setup(e,t){let{slots:n,attrs:o}=t;const{gutter:r,supportFlexGap:l,wrap:a}=E6(),{prefixCls:i,direction:s}=Pe(\"col\",e),[c,u]=N6(i),d=I(()=>{const{span:m,order:g,offset:v,push:y,pull:b}=e,S=i.value;let $={};return EB.forEach(w=>{let C={};const _=e[w];typeof _==\"number\"?C.span=_:typeof _==\"object\"&&(C=_||{}),$=h(h({},$),{[`${S}-${w}-${C.span}`]:C.span!==void 0,[`${S}-${w}-order-${C.order}`]:C.order||C.order===0,[`${S}-${w}-offset-${C.offset}`]:C.offset||C.offset===0,[`${S}-${w}-push-${C.push}`]:C.push||C.push===0,[`${S}-${w}-pull-${C.pull}`]:C.pull||C.pull===0,[`${S}-rtl`]:s.value===\"rtl\"})}),le(S,{[`${S}-${m}`]:m!==void 0,[`${S}-order-${g}`]:g,[`${S}-offset-${v}`]:v,[`${S}-push-${y}`]:y,[`${S}-pull-${b}`]:b},$,o.class,u.value)}),p=I(()=>{const{flex:m}=e,g=r.value,v={};if(g&&g[0]>0){const y=`${g[0]/2}px`;v.paddingLeft=y,v.paddingRight=y}if(g&&g[1]>0&&!l.value){const y=`${g[1]/2}px`;v.paddingTop=y,v.paddingBottom=y}return m&&(v.flex=TB(m),a.value===!1&&!v.minWidth&&(v.minWidth=0)),v});return()=>{var m;return c(f(\"div\",A(A({},o),{},{class:d.value,style:[p.value,o.style]}),[(m=n.default)===null||m===void 0?void 0:m.call(n)]))}}}),Pg=(e,t)=>{let{slots:n,emit:o,attrs:r}=t;var l,a,i,s,c;const{prefixCls:u,htmlFor:d,labelCol:p,labelAlign:m,colon:g,required:v,requiredMark:y}=h(h({},e),r),[b]=yo(\"Form\"),S=(l=e.label)!==null&&l!==void 0?l:(a=n.label)===null||a===void 0?void 0:a.call(n);if(!S)return null;const{vertical:$,labelAlign:w,labelCol:C,labelWrap:_,colon:x}=Ig(),P=p||C?.value||{},O=m||w?.value,M=`${u}-item-label`,E=le(M,O===\"left\"&&`${M}-left`,P.class,{[`${M}-wrap`]:!!_.value});let R=S;const D=g===!0||x?.value!==!1&&g!==!1;if(D&&!$.value&&typeof S==\"string\"&&S.trim()!==\"\"&&(R=S.replace(/[:|：]\\s*$/,\"\")),e.tooltip||n.tooltip){const k=f(\"span\",{class:`${u}-item-tooltip`},[f(Ln,{title:e.tooltip},{default:()=>[f(DI,null,null)]})]);R=f(Ve,null,[R,n.tooltip?(i=n.tooltip)===null||i===void 0?void 0:i.call(n,{class:`${u}-item-tooltip`}):k])}y===\"optional\"&&!v&&(R=f(Ve,null,[R,f(\"span\",{class:`${u}-item-optional`},[((s=b.value)===null||s===void 0?void 0:s.optional)||((c=En.Form)===null||c===void 0?void 0:c.optional)])]));const T=le({[`${u}-item-required`]:v,[`${u}-item-required-mark-optional`]:y===\"optional\",[`${u}-item-no-colon`]:!D});return f(bd,A(A({},P),{},{class:E}),{default:()=>[f(\"label\",{for:d,class:T,title:typeof S==\"string\"?S:\"\",onClick:k=>o(\"click\",k)},[R])]})};Pg.displayName=\"FormItemLabel\";Pg.inheritAttrs=!1;const MB=e=>{const{componentCls:t}=e,n=`${t}-show-help`,o=`${t}-show-help-item`;return{[n]:{transition:`opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`,\"&-appear, &-enter\":{opacity:0,\"&-active\":{opacity:1}},\"&-leave\":{opacity:1,\"&-active\":{opacity:0}},[o]:{overflow:\"hidden\",transition:`height ${e.motionDurationSlow} ${e.motionEaseInOut},\n                     opacity ${e.motionDurationSlow} ${e.motionEaseInOut},\n                     transform ${e.motionDurationSlow} ${e.motionEaseInOut} !important`,[`&${o}-appear, &${o}-enter`]:{transform:\"translateY(-5px)\",opacity:0,\"&-active\":{transform:\"translateY(0)\",opacity:1}},[`&${o}-leave-active`]:{transform:\"translateY(-5px)\"}}}}},AB=e=>({legend:{display:\"block\",width:\"100%\",marginBottom:e.marginLG,padding:0,color:e.colorTextDescription,fontSize:e.fontSizeLG,lineHeight:\"inherit\",border:0,borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`},label:{fontSize:e.fontSize},'input[type=\"search\"]':{boxSizing:\"border-box\"},'input[type=\"radio\"], input[type=\"checkbox\"]':{lineHeight:\"normal\"},'input[type=\"file\"]':{display:\"block\"},'input[type=\"range\"]':{display:\"block\",width:\"100%\"},\"select[multiple], select[size]\":{height:\"auto\"},\"input[type='file']:focus,\\n  input[type='radio']:focus,\\n  input[type='checkbox']:focus\":{outline:0,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`},output:{display:\"block\",paddingTop:15,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight}}),sy=(e,t)=>{const{formItemCls:n}=e;return{[n]:{[`${n}-label > label`]:{height:t},[`${n}-control-input`]:{minHeight:t}}}},DB=e=>{const{componentCls:t}=e;return{[e.componentCls]:h(h(h({},Ue(e)),AB(e)),{[`${t}-text`]:{display:\"inline-block\",paddingInlineEnd:e.paddingSM},\"&-small\":h({},sy(e,e.controlHeightSM)),\"&-large\":h({},sy(e,e.controlHeightLG))})}},RB=e=>{const{formItemCls:t,iconCls:n,componentCls:o,rootPrefixCls:r}=e;return{[t]:h(h({},Ue(e)),{marginBottom:e.marginLG,verticalAlign:\"top\",\"&-with-help\":{transition:\"none\"},[`&-hidden,\n        &-hidden.${r}-row`]:{display:\"none\"},\"&-has-warning\":{[`${t}-split`]:{color:e.colorError}},\"&-has-error\":{[`${t}-split`]:{color:e.colorWarning}},[`${t}-label`]:{display:\"inline-block\",flexGrow:0,overflow:\"hidden\",whiteSpace:\"nowrap\",textAlign:\"end\",verticalAlign:\"middle\",\"&-left\":{textAlign:\"start\"},\"&-wrap\":{overflow:\"unset\",lineHeight:`${e.lineHeight} - 0.25em`,whiteSpace:\"unset\"},\"> label\":{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",maxWidth:\"100%\",height:e.controlHeight,color:e.colorTextHeading,fontSize:e.fontSize,[`> ${n}`]:{fontSize:e.fontSize,verticalAlign:\"top\"},[`&${t}-required:not(${t}-required-mark-optional)::before`]:{display:\"inline-block\",marginInlineEnd:e.marginXXS,color:e.colorError,fontSize:e.fontSize,fontFamily:\"SimSun, sans-serif\",lineHeight:1,content:'\"*\"',[`${o}-hide-required-mark &`]:{display:\"none\"}},[`${t}-optional`]:{display:\"inline-block\",marginInlineStart:e.marginXXS,color:e.colorTextDescription,[`${o}-hide-required-mark &`]:{display:\"none\"}},[`${t}-tooltip`]:{color:e.colorTextDescription,cursor:\"help\",writingMode:\"horizontal-tb\",marginInlineStart:e.marginXXS},\"&::after\":{content:'\":\"',position:\"relative\",marginBlock:0,marginInlineStart:e.marginXXS/2,marginInlineEnd:e.marginXS},[`&${t}-no-colon::after`]:{content:'\" \"'}}},[`${t}-control`]:{display:\"flex\",flexDirection:\"column\",flexGrow:1,[`&:first-child:not([class^=\"'${r}-col-'\"]):not([class*=\"' ${r}-col-'\"])`]:{width:\"100%\"},\"&-input\":{position:\"relative\",display:\"flex\",alignItems:\"center\",minHeight:e.controlHeight,\"&-content\":{flex:\"auto\",maxWidth:\"100%\"}}},[t]:{\"&-explain, &-extra\":{clear:\"both\",color:e.colorTextDescription,fontSize:e.fontSize,lineHeight:e.lineHeight},\"&-explain-connected\":{width:\"100%\"},\"&-extra\":{minHeight:e.controlHeightSM,transition:`color ${e.motionDurationMid} ${e.motionEaseOut}`},\"&-explain\":{\"&-error\":{color:e.colorError},\"&-warning\":{color:e.colorWarning}}},[`&-with-help ${t}-explain`]:{height:\"auto\",opacity:1},[`${t}-feedback-icon`]:{fontSize:e.fontSize,textAlign:\"center\",visibility:\"visible\",animationName:Pv,animationDuration:e.motionDurationMid,animationTimingFunction:e.motionEaseOutBack,pointerEvents:\"none\",\"&-success\":{color:e.colorSuccess},\"&-error\":{color:e.colorError},\"&-warning\":{color:e.colorWarning},\"&-validating\":{color:e.colorPrimary}}})}},kB=e=>{const{componentCls:t,formItemCls:n,rootPrefixCls:o}=e;return{[`${t}-horizontal`]:{[`${n}-label`]:{flexGrow:0},[`${n}-control`]:{flex:\"1 1 0\",minWidth:0},[`${n}-label.${o}-col-24 + ${n}-control`]:{minWidth:\"unset\"}}}},NB=e=>{const{componentCls:t,formItemCls:n}=e;return{[`${t}-inline`]:{display:\"flex\",flexWrap:\"wrap\",[n]:{flex:\"none\",flexWrap:\"nowrap\",marginInlineEnd:e.margin,marginBottom:0,\"&-with-help\":{marginBottom:e.marginLG},[`> ${n}-label,\n        > ${n}-control`]:{display:\"inline-block\",verticalAlign:\"top\"},[`> ${n}-label`]:{flex:\"none\"},[`${t}-text`]:{display:\"inline-block\"},[`${n}-has-feedback`]:{display:\"inline-block\"}}}}},Kl=e=>({margin:0,padding:`0 0 ${e.paddingXS}px`,whiteSpace:\"initial\",textAlign:\"start\",\"> label\":{margin:0,\"&::after\":{display:\"none\"}}}),BB=e=>{const{componentCls:t,formItemCls:n}=e;return{[`${n} ${n}-label`]:Kl(e),[t]:{[n]:{flexWrap:\"wrap\",[`${n}-label,\n          ${n}-control`]:{flex:\"0 0 100%\",maxWidth:\"100%\"}}}}},LB=e=>{const{componentCls:t,formItemCls:n,rootPrefixCls:o}=e;return{[`${t}-vertical`]:{[n]:{\"&-row\":{flexDirection:\"column\"},\"&-label > label\":{height:\"auto\"},[`${t}-item-control`]:{width:\"100%\"}}},[`${t}-vertical ${n}-label,\n      .${o}-col-24${n}-label,\n      .${o}-col-xl-24${n}-label`]:Kl(e),[`@media (max-width: ${e.screenXSMax}px)`]:[BB(e),{[t]:{[`.${o}-col-xs-24${n}-label`]:Kl(e)}}],[`@media (max-width: ${e.screenSMMax}px)`]:{[t]:{[`.${o}-col-sm-24${n}-label`]:Kl(e)}},[`@media (max-width: ${e.screenMDMax}px)`]:{[t]:{[`.${o}-col-md-24${n}-label`]:Kl(e)}},[`@media (max-width: ${e.screenLGMax}px)`]:{[t]:{[`.${o}-col-lg-24${n}-label`]:Kl(e)}}}},Tg=Ge(\"Form\",(e,t)=>{let{rootPrefixCls:n}=t;const o=Le(e,{formItemCls:`${e.componentCls}-item`,rootPrefixCls:n});return[DB(o),RB(o),MB(o),kB(o),NB(o),LB(o),Fi(o),Pv]}),FB=ne({compatConfig:{MODE:3},name:\"ErrorList\",inheritAttrs:!1,props:[\"errors\",\"help\",\"onErrorVisibleChanged\",\"helpStatus\",\"warnings\"],setup(e,t){let{attrs:n}=t;const{prefixCls:o,status:r}=PB(),l=I(()=>`${o.value}-item-explain`),a=I(()=>!!(e.errors&&e.errors.length)),i=J(r.value),[,s]=Tg(o);return pe([a,r],()=>{a.value&&(i.value=r.value)}),()=>{var c,u;const d=zi(`${o.value}-show-help-item`),p=Ku(`${o.value}-show-help-item`,d);return p.role=\"alert\",p.class=[s.value,l.value,n.class,`${o.value}-show-help`],f(cn,A(A({},bo(`${o.value}-show-help`)),{},{onAfterEnter:()=>e.onErrorVisibleChanged(!0),onAfterLeave:()=>e.onErrorVisibleChanged(!1)}),{default:()=>[xn(f(Pu,A(A({},p),{},{tag:\"div\"}),{default:()=>[(u=e.errors)===null||u===void 0?void 0:u.map((m,g)=>f(\"div\",{key:g,class:i.value?`${l.value}-${i.value}`:\"\"},[m]))]}),[[On,!!(!((c=e.errors)===null||c===void 0)&&c.length)]])]})}}}),zB=ne({compatConfig:{MODE:3},slots:Object,inheritAttrs:!1,props:[\"prefixCls\",\"errors\",\"hasFeedback\",\"onDomErrorVisibleChange\",\"wrapperCol\",\"help\",\"extra\",\"status\",\"marginBottom\",\"onErrorVisibleChanged\"],setup(e,t){let{slots:n}=t;const o=Ig(),{wrapperCol:r}=o,l=h({},o);return delete l.labelCol,delete l.wrapperCol,gw(l),IB({prefixCls:I(()=>e.prefixCls),status:I(()=>e.status)}),()=>{var a,i,s;const{prefixCls:c,wrapperCol:u,marginBottom:d,onErrorVisibleChanged:p,help:m=(a=n.help)===null||a===void 0?void 0:a.call(n),errors:g=kt((i=n.errors)===null||i===void 0?void 0:i.call(n)),extra:v=(s=n.extra)===null||s===void 0?void 0:s.call(n)}=e,y=`${c}-item`,b=u||r?.value||{},S=le(`${y}-control`,b.class);return f(bd,A(A({},b),{},{class:S}),{default:()=>{var $;return f(Ve,null,[f(\"div\",{class:`${y}-control-input`},[f(\"div\",{class:`${y}-control-input-content`},[($=n.default)===null||$===void 0?void 0:$.call(n)])]),d!==null||g.length?f(\"div\",{style:{display:\"flex\",flexWrap:\"nowrap\"}},[f(FB,{errors:g,help:m,class:`${y}-explain-connected`,onErrorVisibleChanged:p},null),!!d&&f(\"div\",{style:{width:0,height:`${d}px`}},null)]):null,v?f(\"div\",{class:`${y}-extra`},[v]):null])}})}}});function HB(e){const t=ee(e.value.slice());let n=null;return ze(()=>{clearTimeout(n),n=setTimeout(()=>{t.value=e.value},e.value.length?0:10)}),t}hn(\"success\",\"warning\",\"error\",\"validating\",\"\");const jB={success:gr,warning:vr,error:jn,validating:Qn};function yf(e,t,n){let o=e;const r=t;let l=0;try{for(let a=r.length;l<a-1&&!(!o&&!n);++l){const i=r[l];if(i in o)o=o[i];else{if(n)throw Error(\"please transfer a valid name path to form item!\");break}}if(n&&!o)throw Error(\"please transfer a valid name path to form item!\")}catch{console.error(\"please transfer a valid name path to form item!\")}return{o,k:r[l],v:o?o[r[l]]:void 0}}const WB=()=>({htmlFor:String,prefixCls:String,label:W.any,help:W.any,extra:W.any,labelCol:{type:Object},wrapperCol:{type:Object},hasFeedback:{type:Boolean,default:!1},colon:{type:Boolean,default:void 0},labelAlign:String,prop:{type:[String,Number,Array]},name:{type:[String,Number,Array]},rules:[Array,Object],autoLink:{type:Boolean,default:!0},required:{type:Boolean,default:void 0},validateFirst:{type:Boolean,default:void 0},validateStatus:W.oneOf(hn(\"\",\"success\",\"warning\",\"error\",\"validating\")),validateTrigger:{type:[String,Array]},messageVariables:{type:Object},hidden:Boolean,noStyle:Boolean,tooltip:String});let VB=0;const KB=\"form_item\",Yi=ne({compatConfig:{MODE:3},name:\"AFormItem\",inheritAttrs:!1,__ANT_NEW_FORM_ITEM:!0,props:WB(),slots:Object,setup(e,t){let{slots:n,attrs:o,expose:r}=t;e.prop;const l=`form-item-${++VB}`,{prefixCls:a}=Pe(\"form\",e),[i,s]=Tg(a),c=ee(),u=Ig(),d=I(()=>e.name||e.prop),p=ee([]),m=ee(!1),g=ee(),v=I(()=>{const V=d.value;return Up(V)}),y=I(()=>{if(v.value.length){const V=u.name.value,q=v.value.join(\"_\");return V?`${V}_${q}`:`${KB}_${q}`}else return}),b=()=>{const V=u.model.value;if(!(!V||!d.value))return yf(V,v.value,!0).v},S=I(()=>b()),$=ee(Bs(S.value)),w=I(()=>{let V=e.validateTrigger!==void 0?e.validateTrigger:u.validateTrigger.value;return V=V===void 0?\"change\":V,kr(V)}),C=I(()=>{let V=u.rules.value;const q=e.rules,Z=e.required!==void 0?{required:!!e.required,trigger:w.value}:[],oe=yf(V,v.value);V=V?oe.o[oe.k]||oe.v:[];const re=[].concat(q||V||[]);return fP(re,Y=>Y.required)?re:re.concat(Z)}),_=I(()=>{const V=C.value;let q=!1;return V&&V.length&&V.every(Z=>Z.required?(q=!0,!1):!0),q||e.required}),x=ee();ze(()=>{x.value=e.validateStatus});const P=I(()=>{let V={};return typeof e.label==\"string\"?V.label=e.label:e.name&&(V.label=String(e.name)),e.messageVariables&&(V=h(h({},V),e.messageVariables)),V}),O=V=>{if(v.value.length===0)return;const{validateFirst:q=!1}=e,{triggerName:Z}=V||{};let oe=C.value;if(Z&&(oe=oe.filter(Y=>{const{trigger:Q}=Y;return!Q&&!w.value.length?!0:kr(Q||w.value).includes(Z)})),!oe.length)return Promise.resolve();const re=mw(v.value,S.value,oe,h({validateMessages:u.validateMessages.value},V),q,P.value);return x.value=\"validating\",p.value=[],re.catch(Y=>Y).then(function(){let Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(x.value===\"validating\"){const Q=Y.filter(ce=>ce&&ce.errors.length);x.value=Q.length?\"error\":\"success\",p.value=Q.map(ce=>ce.errors),u.onValidate(d.value,!p.value.length,p.value.length?zt(p.value[0]):null)}}),re},M=()=>{O({triggerName:\"blur\"})},E=()=>{if(m.value){m.value=!1;return}O({triggerName:\"change\"})},R=()=>{x.value=e.validateStatus,m.value=!1,p.value=[]},D=()=>{var V;x.value=e.validateStatus,m.value=!0,p.value=[];const q=u.model.value||{},Z=S.value,oe=yf(q,v.value,!0);Array.isArray(Z)?oe.o[oe.k]=[].concat((V=$.value)!==null&&V!==void 0?V:[]):oe.o[oe.k]=$.value,it(()=>{m.value=!1})},z=I(()=>e.htmlFor===void 0?y.value:e.htmlFor),T=()=>{const V=z.value;if(!V||!g.value)return;const q=g.value.$el.querySelector(`[id=\"${V}\"]`);q&&q.focus&&q.focus()};r({onFieldBlur:M,onFieldChange:E,clearValidate:R,resetField:D}),g4({id:y,onFieldBlur:()=>{e.autoLink&&M()},onFieldChange:()=>{e.autoLink&&E()},clearValidate:R},I(()=>!!(e.autoLink&&u.model.value&&d.value)));let k=!1;pe(d,V=>{V?k||(k=!0,u.addField(l,{fieldValue:S,fieldId:y,fieldName:d,resetField:D,clearValidate:R,namePath:v,validateRules:O,rules:C})):(k=!1,u.removeField(l))},{immediate:!0}),et(()=>{u.removeField(l)});const B=HB(p),L=I(()=>e.validateStatus!==void 0?e.validateStatus:B.value.length?\"error\":x.value),N=I(()=>({[`${a.value}-item`]:!0,[s.value]:!0,[`${a.value}-item-has-feedback`]:L.value&&e.hasFeedback,[`${a.value}-item-has-success`]:L.value===\"success\",[`${a.value}-item-has-warning`]:L.value===\"warning\",[`${a.value}-item-has-error`]:L.value===\"error\",[`${a.value}-item-is-validating`]:L.value===\"validating\",[`${a.value}-item-hidden`]:e.hidden})),F=vt({});un.useProvide(F),ze(()=>{let V;if(e.hasFeedback){const q=L.value&&jB[L.value];V=q?f(\"span\",{class:le(`${a.value}-item-feedback-icon`,`${a.value}-item-feedback-icon-${L.value}`)},[f(q,null,null)]):null}h(F,{status:L.value,hasFeedback:e.hasFeedback,feedbackIcon:V,isFormItemInput:!0})});const j=ee(null),H=ee(!1),K=()=>{if(c.value){const V=getComputedStyle(c.value);j.value=parseInt(V.marginBottom,10)}};Ne(()=>{pe(H,()=>{H.value&&K()},{flush:\"post\",immediate:!0})});const G=V=>{V||(j.value=null)};return()=>{var V,q;if(e.noStyle)return(V=n.default)===null||V===void 0?void 0:V.call(n);const Z=(q=e.help)!==null&&q!==void 0?q:n.help?kt(n.help()):null,oe=!!(Z!=null&&Array.isArray(Z)&&Z.length||B.value.length);return H.value=oe,i(f(\"div\",{class:[N.value,oe?`${a.value}-item-with-help`:\"\",o.class],ref:c},[f(_g,A(A({},o),{},{class:`${a.value}-item-row`,key:\"row\"}),{default:()=>{var re,Y;return f(Ve,null,[f(Pg,A(A({},e),{},{htmlFor:z.value,required:_.value,requiredMark:u.requiredMark.value,prefixCls:a.value,onClick:T,label:e.label}),{label:n.label,tooltip:n.tooltip}),f(zB,A(A({},e),{},{errors:Z!=null?kr(Z):B.value,marginBottom:j.value,prefixCls:a.value,status:L.value,ref:g,help:Z,extra:(re=e.extra)!==null&&re!==void 0?re:(Y=n.extra)===null||Y===void 0?void 0:Y.call(n),onErrorVisibleChanged:G}),{default:n.default})])}}),!!j.value&&f(\"div\",{class:`${a.value}-margin-offset`,style:{marginBottom:`-${j.value}px`}},null)]))}}});function bw(e){let t=!1,n=e.length;const o=[];return e.length?new Promise((r,l)=>{e.forEach((a,i)=>{a.catch(s=>(t=!0,s)).then(s=>{n-=1,o[i]=s,!(n>0)&&(t&&l(o),r(o))})})}):Promise.resolve([])}function cy(e){let t=!1;return e&&e.length&&e.every(n=>n.required?(t=!0,!1):!0),t}function uy(e){return e==null?[]:Array.isArray(e)?e:[e]}function Sf(e,t,n){let o=e;t=t.replace(/\\[(\\w+)\\]/g,\".$1\"),t=t.replace(/^\\./,\"\");const r=t.split(\".\");let l=0;for(let a=r.length;l<a-1&&!(!o&&!n);++l){const i=r[l];if(i in o)o=o[i];else{if(n)throw new Error(\"please transfer a valid name path to validate!\");break}}return{o,k:r[l],v:o?o[r[l]]:null,isValid:o&&r[l]in o}}function GB(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:J({}),n=arguments.length>2?arguments[2]:void 0;const o=Bs(Be(e)),r=vt({}),l=ee([]),a=$=>{h(Be(e),h(h({},Bs(o)),$)),it(()=>{Object.keys(r).forEach(w=>{r[w]={autoLink:!1,required:cy(Be(t)[w])}})})},i=function(){let $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],w=arguments.length>1?arguments[1]:void 0;return w.length?$.filter(C=>{const _=uy(C.trigger||\"change\");return mP(_,w).length}):$};let s=null;const c=function($){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},C=arguments.length>2?arguments[2]:void 0;const _=[],x={};for(let M=0;M<$.length;M++){const E=$[M],R=Sf(Be(e),E,C);if(!R.isValid)continue;x[E]=R.v;const D=i(Be(t)[E],uy(w&&w.trigger));D.length&&_.push(u(E,R.v,D,w||{}).then(()=>({name:E,errors:[],warnings:[]})).catch(z=>{const T=[],k=[];return z.forEach(B=>{let{rule:{warningOnly:L},errors:N}=B;L?k.push(...N):T.push(...N)}),T.length?Promise.reject({name:E,errors:T,warnings:k}):{name:E,errors:T,warnings:k}}))}const P=bw(_);s=P;const O=P.then(()=>s===P?Promise.resolve(x):Promise.reject([])).catch(M=>{const E=M.filter(R=>R&&R.errors.length);return E.length?Promise.reject({values:x,errorFields:E,outOfDate:s!==P}):Promise.resolve(x)});return O.catch(M=>M),O},u=function($,w,C){let _=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const x=mw([$],w,C,h({validateMessages:gd},_),!!_.validateFirst);return r[$]?(r[$].validateStatus=\"validating\",x.catch(P=>P).then(function(){let P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];var O;if(r[$].validateStatus===\"validating\"){const M=P.filter(E=>E&&E.errors.length);r[$].validateStatus=M.length?\"error\":\"success\",r[$].help=M.length?M.map(E=>E.errors):null,(O=n?.onValidate)===null||O===void 0||O.call(n,$,!M.length,M.length?zt(r[$].help[0]):null)}}),x):x.catch(P=>P)},d=($,w)=>{let C=[],_=!0;$?Array.isArray($)?C=$:C=[$]:(_=!1,C=l.value);const x=c(C,w||{},_);return x.catch(P=>P),x},p=$=>{let w=[];$?Array.isArray($)?w=$:w=[$]:w=l.value,w.forEach(C=>{r[C]&&h(r[C],{validateStatus:\"\",help:null})})},m=$=>{const w={autoLink:!1},C=[],_=Array.isArray($)?$:[$];for(let x=0;x<_.length;x++){const P=_[x];P?.validateStatus===\"error\"&&(w.validateStatus=\"error\",P.help&&C.push(P.help)),w.required=w.required||P?.required}return w.help=C,w};let g=o,v=!0;const y=$=>{const w=[];l.value.forEach(C=>{const _=Sf($,C,!1),x=Sf(g,C,!1);(v&&n?.immediate&&_.isValid||!Am(_.v,x.v))&&w.push(C)}),d(w,{trigger:\"change\"}),v=!1,g=Bs(zt($))},b=n?.debounce;let S=!0;return pe(t,()=>{l.value=t?Object.keys(Be(t)):[],!S&&n&&n.validateOnRuleChange&&d(),S=!1},{deep:!0,immediate:!0}),pe(l,()=>{const $={};l.value.forEach(w=>{$[w]=h({},r[w],{autoLink:!1,required:cy(Be(t)[w])}),delete r[w]});for(const w in r)Object.prototype.hasOwnProperty.call(r,w)&&delete r[w];h(r,$)},{immediate:!0}),pe(e,b&&b.wait?Dm(y,b.wait,pP(b,[\"wait\"])):y,{immediate:n&&!!n.immediate,deep:!0}),{modelRef:e,rulesRef:t,initialModel:o,validateInfos:r,resetFields:a,validate:d,validateField:u,mergeValidateInfo:m,clearValidate:p}}const XB=()=>({layout:W.oneOf(hn(\"horizontal\",\"inline\",\"vertical\")),labelCol:De(),wrapperCol:De(),colon:ye(),labelAlign:ke(),labelWrap:ye(),prefixCls:String,requiredMark:Fe([String,Boolean]),hideRequiredMark:ye(),model:W.object,rules:De(),validateMessages:De(),validateOnRuleChange:ye(),scrollToFirstError:Ct(),onSubmit:de(),name:String,validateTrigger:Fe([String,Array]),size:ke(),disabled:ye(),onValuesChange:de(),onFieldsChange:de(),onFinish:de(),onFinishFailed:de(),onValidate:de()});function UB(e,t){return Am(kr(e),kr(t))}const _o=ne({compatConfig:{MODE:3},name:\"AForm\",inheritAttrs:!1,props:Ze(XB(),{layout:\"horizontal\",hideRequiredMark:!1,colon:!0}),Item:Yi,useForm:GB,setup(e,t){let{emit:n,slots:o,expose:r,attrs:l}=t;const{prefixCls:a,direction:i,form:s,size:c,disabled:u}=Pe(\"form\",e),d=I(()=>e.requiredMark===\"\"||e.requiredMark),p=I(()=>{var B;return d.value!==void 0?d.value:s&&((B=s.value)===null||B===void 0?void 0:B.requiredMark)!==void 0?s.value.requiredMark:!e.hideRequiredMark});MC(c),eC(u);const m=I(()=>{var B,L;return(B=e.colon)!==null&&B!==void 0?B:(L=s.value)===null||L===void 0?void 0:L.colon}),{validateMessages:g}=lE(),v=I(()=>h(h(h({},gd),g.value),e.validateMessages)),[y,b]=Tg(a),S=I(()=>le(a.value,{[`${a.value}-${e.layout}`]:!0,[`${a.value}-hide-required-mark`]:p.value===!1,[`${a.value}-rtl`]:i.value===\"rtl\",[`${a.value}-${c.value}`]:c.value},b.value)),$=J(),w={},C=(B,L)=>{w[B]=L},_=B=>{delete w[B]},x=B=>{const L=!!B,N=L?kr(B).map(Up):[];return L?Object.values(w).filter(F=>N.findIndex(j=>UB(j,F.fieldName.value))>-1):Object.values(w)},P=B=>{e.model&&x(B).forEach(L=>{L.resetField()})},O=B=>{x(B).forEach(L=>{L.clearValidate()})},M=B=>{const{scrollToFirstError:L}=e;if(n(\"finishFailed\",B),L&&B.errorFields.length){let N={};typeof L==\"object\"&&(N=L),R(B.errorFields[0].name,N)}},E=function(){return T(...arguments)},R=function(B){let L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const N=x(B?[B]:void 0);if(N.length){const F=N[0].fieldId.value,j=F?document.getElementById(F):null;j&&RC(j,h({scrollMode:\"if-needed\",block:\"nearest\"},L))}},D=function(){let B=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(B===!0){const L=[];return Object.values(w).forEach(N=>{let{namePath:F}=N;L.push(F.value)}),iy(e.model,L)}else return iy(e.model,B)},z=(B,L)=>{if(!e.model)return Promise.reject(\"Form `model` is required for validateFields to work.\");const N=!!B,F=N?kr(B).map(Up):[],j=[];Object.values(w).forEach(G=>{var V;if(N||F.push(G.namePath.value),!(!((V=G.rules)===null||V===void 0)&&V.value.length))return;const q=G.namePath.value;if(!N||yB(F,q)){const Z=G.validateRules(h({validateMessages:v.value},L));j.push(Z.then(()=>({name:q,errors:[],warnings:[]})).catch(oe=>{const re=[],Y=[];return oe.forEach(Q=>{let{rule:{warningOnly:ce},errors:ue}=Q;ce?Y.push(...ue):re.push(...ue)}),re.length?Promise.reject({name:q,errors:re,warnings:Y}):{name:q,errors:re,warnings:Y}}))}});const H=bw(j);$.value=H;const K=H.then(()=>$.value===H?Promise.resolve(D(F)):Promise.reject([])).catch(G=>{const V=G.filter(q=>q&&q.errors.length);return Promise.reject({values:D(F),errorFields:V,outOfDate:$.value!==H})});return K.catch(G=>G),K},T=function(){return z(...arguments)},k=B=>{B.preventDefault(),B.stopPropagation(),n(\"submit\",B),e.model&&z().then(N=>{n(\"finish\",N)}).catch(N=>{M(N)})};return r({resetFields:P,clearValidate:O,validateFields:z,getFieldsValue:D,validate:E,scrollToField:R}),gw({model:I(()=>e.model),name:I(()=>e.name),labelAlign:I(()=>e.labelAlign),labelCol:I(()=>e.labelCol),labelWrap:I(()=>e.labelWrap),wrapperCol:I(()=>e.wrapperCol),vertical:I(()=>e.layout===\"vertical\"),colon:m,requiredMark:p,validateTrigger:I(()=>e.validateTrigger),rules:I(()=>e.rules),addField:C,removeField:_,onValidate:(B,L,N)=>{n(\"validate\",B,L,N)},validateMessages:v}),pe(()=>e.rules,()=>{e.validateOnRuleChange&&z()}),()=>{var B;return y(f(\"form\",A(A({},l),{},{onSubmit:k,class:[S.value,l.class]}),[(B=o.default)===null||B===void 0?void 0:B.call(o)]))}}});_o.useInjectFormItemContext=Jt;_o.ItemRest=Kc;_o.install=function(e){return e.component(_o.name,_o),e.component(_o.Item.name,_o.Item),e.component(Kc.name,Kc),e};const YB=new lt(\"antCheckboxEffect\",{\"0%\":{transform:\"scale(1)\",opacity:.5},\"100%\":{transform:\"scale(1.6)\",opacity:0}}),qB=e=>{const{checkboxCls:t}=e,n=`${t}-wrapper`;return[{[`${t}-group`]:h(h({},Ue(e)),{display:\"inline-flex\",flexWrap:\"wrap\",columnGap:e.marginXS,[`> ${e.antCls}-row`]:{flex:1}}),[n]:h(h({},Ue(e)),{display:\"inline-flex\",alignItems:\"baseline\",cursor:\"pointer\",\"&:after\":{display:\"inline-block\",width:0,overflow:\"hidden\",content:\"'\\\\a0'\"},[`& + ${n}`]:{marginInlineStart:0},[`&${n}-in-form-item`]:{'input[type=\"checkbox\"]':{width:14,height:14}}}),[t]:h(h({},Ue(e)),{position:\"relative\",whiteSpace:\"nowrap\",lineHeight:1,cursor:\"pointer\",alignSelf:\"center\",[`${t}-input`]:{position:\"absolute\",inset:0,zIndex:1,cursor:\"pointer\",opacity:0,margin:0,[`&:focus-visible + ${t}-inner`]:h({},dr(e))},[`${t}-inner`]:{boxSizing:\"border-box\",position:\"relative\",top:0,insetInlineStart:0,display:\"block\",width:e.checkboxSize,height:e.checkboxSize,direction:\"ltr\",backgroundColor:e.colorBgContainer,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,borderCollapse:\"separate\",transition:`all ${e.motionDurationSlow}`,\"&:after\":{boxSizing:\"border-box\",position:\"absolute\",top:\"50%\",insetInlineStart:\"21.5%\",display:\"table\",width:e.checkboxSize/14*5,height:e.checkboxSize/14*8,border:`${e.lineWidthBold}px solid ${e.colorWhite}`,borderTop:0,borderInlineStart:0,transform:\"rotate(45deg) scale(0) translate(-50%,-50%)\",opacity:0,content:'\"\"',transition:`all ${e.motionDurationFast} ${e.motionEaseInBack}, opacity ${e.motionDurationFast}`}},\"& + span\":{paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS}})},{[t]:{\"&-indeterminate\":{[`${t}-inner`]:{\"&:after\":{top:\"50%\",insetInlineStart:\"50%\",width:e.fontSizeLG/2,height:e.fontSizeLG/2,backgroundColor:e.colorPrimary,border:0,transform:\"translate(-50%, -50%) scale(1)\",opacity:1,content:'\"\"'}}}}},{[`${n}:hover ${t}:after`]:{visibility:\"visible\"},[`\n        ${n}:not(${n}-disabled),\n        ${t}:not(${t}-disabled)\n      `]:{[`&:hover ${t}-inner`]:{borderColor:e.colorPrimary}},[`${n}:not(${n}-disabled)`]:{[`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:\"transparent\"},[`&:hover ${t}-checked:not(${t}-disabled):after`]:{borderColor:e.colorPrimaryHover}}},{[`${t}-checked`]:{[`${t}-inner`]:{backgroundColor:e.colorPrimary,borderColor:e.colorPrimary,\"&:after\":{opacity:1,transform:\"rotate(45deg) scale(1) translate(-50%,-50%)\",transition:`all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`}},\"&:after\":{position:\"absolute\",top:0,insetInlineStart:0,width:\"100%\",height:\"100%\",borderRadius:e.borderRadiusSM,visibility:\"hidden\",border:`${e.lineWidthBold}px solid ${e.colorPrimary}`,animationName:YB,animationDuration:e.motionDurationSlow,animationTimingFunction:\"ease-in-out\",animationFillMode:\"backwards\",content:'\"\"',transition:`all ${e.motionDurationSlow}`}},[`\n        ${n}-checked:not(${n}-disabled),\n        ${t}-checked:not(${t}-disabled)\n      `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:\"transparent\"},[`&:hover ${t}:after`]:{borderColor:e.colorPrimaryHover}}},{[`${n}-disabled`]:{cursor:\"not-allowed\"},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:\"not-allowed\",pointerEvents:\"none\"},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,\"&:after\":{borderColor:e.colorTextDisabled}},\"&:after\":{display:\"none\"},\"& + span\":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function yd(e,t){const n=Le(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize});return[qB(n)]}const yw=Ge(\"Checkbox\",(e,t)=>{let{prefixCls:n}=t;return[yd(n,e)]}),ZB=e=>{const{prefixCls:t,componentCls:n,antCls:o}=e,r=`${n}-menu-item`,l=`\n    &${r}-expand ${r}-expand-icon,\n    ${r}-loading-icon\n  `,a=Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2);return[{[n]:{width:e.controlWidth}},{[`${n}-dropdown`]:[yd(`${t}-checkbox`,e),{[`&${o}-select-dropdown`]:{padding:0}},{[n]:{\"&-checkbox\":{top:0,marginInlineEnd:e.paddingXS},\"&-menus\":{display:\"flex\",flexWrap:\"nowrap\",alignItems:\"flex-start\",[`&${n}-menu-empty`]:{[`${n}-menu`]:{width:\"100%\",height:\"auto\",[r]:{color:e.colorTextDisabled}}}},\"&-menu\":{flexGrow:1,minWidth:e.controlItemWidth,height:e.dropdownHeight,margin:0,padding:e.paddingXXS,overflow:\"auto\",verticalAlign:\"top\",listStyle:\"none\",\"-ms-overflow-style\":\"-ms-autohiding-scrollbar\",\"&:not(:last-child)\":{borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},\"&-item\":h(h({},Gt),{display:\"flex\",flexWrap:\"nowrap\",alignItems:\"center\",padding:`${a}px ${e.paddingSM}px`,lineHeight:e.lineHeight,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`,borderRadius:e.borderRadiusSM,\"&:hover\":{background:e.controlItemBgHover},\"&-disabled\":{color:e.colorTextDisabled,cursor:\"not-allowed\",\"&:hover\":{background:\"transparent\"},[l]:{color:e.colorTextDisabled}},[`&-active:not(${r}-disabled)`]:{\"&, &:hover\":{fontWeight:e.fontWeightStrong,backgroundColor:e.controlItemBgActive}},\"&-content\":{flex:\"auto\"},[l]:{marginInlineStart:e.paddingXXS,color:e.colorTextDescription,fontSize:e.fontSizeIcon},\"&-keyword\":{color:e.colorHighlight}})}}}]},{[`${n}-dropdown-rtl`]:{direction:\"rtl\"}},Oa(e)]},QB=Ge(\"Cascader\",e=>[ZB(e)],{controlWidth:184,controlItemWidth:111,dropdownHeight:180});var JB=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function eL(e,t,n){const o=e.toLowerCase().split(t).reduce((a,i,s)=>s===0?[i]:[...a,t,i],[]),r=[];let l=0;return o.forEach((a,i)=>{const s=l+a.length;let c=e.slice(l,s);l=s,i%2===1&&(c=f(\"span\",{class:`${n}-menu-item-keyword`,key:\"seperator\"},[c])),r.push(c)}),r}const tL=e=>{let{inputValue:t,path:n,prefixCls:o,fieldNames:r}=e;const l=[],a=t.toLowerCase();return n.forEach((i,s)=>{s!==0&&l.push(\" / \");let c=i[r.label];const u=typeof c;(u===\"string\"||u===\"number\")&&(c=eL(String(c),a,o)),l.push(c)}),l};function nL(){return h(h({},ot(lw(),[\"customSlots\",\"checkable\",\"options\"])),{multiple:{type:Boolean,default:void 0},size:String,bordered:{type:Boolean,default:void 0},placement:{type:String},suffixIcon:W.any,status:String,options:Array,popupClassName:String,dropdownClassName:String,\"onUpdate:value\":Function})}const oL=ne({compatConfig:{MODE:3},name:\"ACascader\",inheritAttrs:!1,props:Ze(nL(),{bordered:!0,choiceTransitionName:\"\",allowClear:!0}),setup(e,t){let{attrs:n,expose:o,slots:r,emit:l}=t;const a=Jt(),i=un.useInject(),s=I(()=>Do(i.status,e.status)),{prefixCls:c,rootPrefixCls:u,getPrefixCls:d,direction:p,getPopupContainer:m,renderEmpty:g,size:v,disabled:y}=Pe(\"cascader\",e),b=I(()=>d(\"select\",e.prefixCls)),{compactSize:S,compactItemClassnames:$}=Xr(b,p),w=I(()=>S.value||v.value),C=zn(),_=I(()=>{var L;return(L=y.value)!==null&&L!==void 0?L:C.value}),[x,P]=Tv(b),[O]=QB(c),M=I(()=>p.value===\"rtl\"),E=I(()=>{if(!e.showSearch)return e.showSearch;let L={render:tL};return typeof e.showSearch==\"object\"&&(L=h(h({},L),e.showSearch)),L}),R=I(()=>le(e.popupClassName||e.dropdownClassName,`${c.value}-dropdown`,{[`${c.value}-dropdown-rtl`]:M.value},P.value)),D=J();o({focus(){var L;(L=D.value)===null||L===void 0||L.focus()},blur(){var L;(L=D.value)===null||L===void 0||L.blur()}});const z=function(){for(var L=arguments.length,N=new Array(L),F=0;F<L;F++)N[F]=arguments[F];l(\"update:value\",N[0]),l(\"change\",...N),a.onFieldChange()},T=function(){for(var L=arguments.length,N=new Array(L),F=0;F<L;F++)N[F]=arguments[F];l(\"blur\",...N),a.onFieldBlur()},k=I(()=>e.showArrow!==void 0?e.showArrow:e.loading||!e.multiple),B=I(()=>e.placement!==void 0?e.placement:p.value===\"rtl\"?\"bottomRight\":\"bottomLeft\");return()=>{var L,N;const{notFoundContent:F=(L=r.notFoundContent)===null||L===void 0?void 0:L.call(r),expandIcon:j=(N=r.expandIcon)===null||N===void 0?void 0:N.call(r),multiple:H,bordered:K,allowClear:G,choiceTransitionName:V,transitionName:q,id:Z=a.id.value}=e,oe=JB(e,[\"notFoundContent\",\"expandIcon\",\"multiple\",\"bordered\",\"allowClear\",\"choiceTransitionName\",\"transitionName\",\"id\"]),re=F||g(\"Cascader\");let Y=j;j||(Y=M.value?f(zr,null,null):f(Eo,null,null));const Q=f(\"span\",{class:`${b.value}-menu-item-loading-icon`},[f(Qn,{spin:!0},null)]),{suffixIcon:ce,removeIcon:ue,clearIcon:be}=wv(h(h({},e),{hasFeedback:i.hasFeedback,feedbackIcon:i.feedbackIcon,multiple:H,prefixCls:b.value,showArrow:k.value}),r);return O(x(f(I6,A(A(A({},oe),n),{},{id:Z,prefixCls:b.value,class:[c.value,{[`${b.value}-lg`]:w.value===\"large\",[`${b.value}-sm`]:w.value===\"small\",[`${b.value}-rtl`]:M.value,[`${b.value}-borderless`]:!K,[`${b.value}-in-form-item`]:i.isFormItemInput},Cn(b.value,s.value,i.hasFeedback),$.value,n.class,P.value],disabled:_.value,direction:p.value,placement:B.value,notFoundContent:re,allowClear:G,showSearch:E.value,expandIcon:Y,inputIcon:ce,removeIcon:ue,clearIcon:be,loadingIcon:Q,checkable:!!H,dropdownClassName:R.value,dropdownPrefixCls:c.value,choiceTransitionName:_n(u.value,\"\",V),transitionName:_n(u.value,vv(B.value),q),getPopupContainer:m?.value,customSlots:h(h({},r),{checkable:()=>f(\"span\",{class:`${c.value}-checkbox-inner`},null)}),tagRender:e.tagRender||r.tagRender,displayRender:e.displayRender||r.displayRender,maxTagPlaceholder:e.maxTagPlaceholder||r.maxTagPlaceholder,showArrow:i.hasFeedback||e.showArrow,onChange:z,onBlur:T,ref:D}),r)))}}}),rL=Dt(h(oL,{SHOW_CHILD:Yx,SHOW_PARENT:Ux})),lL=()=>({name:String,prefixCls:String,options:ct([]),disabled:Boolean,id:String}),aL=()=>h(h({},lL()),{defaultValue:ct(),value:ct(),onChange:de(),\"onUpdate:value\":de()}),iL=()=>({prefixCls:String,defaultChecked:ye(),checked:ye(),disabled:ye(),isGroup:ye(),value:W.any,name:String,id:String,indeterminate:ye(),type:ke(\"checkbox\"),autofocus:ye(),onChange:de(),\"onUpdate:checked\":de(),onClick:de(),skipGroup:ye(!1)}),sL=()=>h(h({},iL()),{indeterminate:ye(!1)}),Sw=Symbol(\"CheckboxGroupContext\");var dy=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Zn=ne({compatConfig:{MODE:3},name:\"ACheckbox\",inheritAttrs:!1,__ANT_CHECKBOX:!0,props:sL(),setup(e,t){let{emit:n,attrs:o,slots:r,expose:l}=t;const a=Jt(),i=un.useInject(),{prefixCls:s,direction:c,disabled:u}=Pe(\"checkbox\",e),d=zn(),[p,m]=yw(s),g=Je(Sw,void 0),v=Symbol(\"checkboxUniId\"),y=I(()=>g?.disabled.value||u.value);ze(()=>{!e.skipGroup&&g&&g.registerValue(v,e.value)}),et(()=>{g&&g.cancelValue(v)}),Ne(()=>{eo(!!(e.checked!==void 0||g||e.value===void 0))});const b=C=>{const _=C.target.checked;n(\"update:checked\",_),n(\"change\",C),a.onFieldChange()},S=J();return l({focus:()=>{var C;(C=S.value)===null||C===void 0||C.focus()},blur:()=>{var C;(C=S.value)===null||C===void 0||C.blur()}}),()=>{var C;const _=$t((C=r.default)===null||C===void 0?void 0:C.call(r)),{indeterminate:x,skipGroup:P,id:O=a.id.value}=e,M=dy(e,[\"indeterminate\",\"skipGroup\",\"id\"]),{onMouseenter:E,onMouseleave:R,onInput:D,class:z,style:T}=o,k=dy(o,[\"onMouseenter\",\"onMouseleave\",\"onInput\",\"class\",\"style\"]),B=h(h(h(h({},M),{id:O,prefixCls:s.value}),k),{disabled:y.value});g&&!P?(B.onChange=function(){for(var j=arguments.length,H=new Array(j),K=0;K<j;K++)H[K]=arguments[K];n(\"change\",...H),g.toggleOption({label:_,value:e.value})},B.name=g.name.value,B.checked=g.mergedValue.value.includes(e.value),B.disabled=y.value||d.value,B.indeterminate=x):B.onChange=b;const L=le({[`${s.value}-wrapper`]:!0,[`${s.value}-rtl`]:c.value===\"rtl\",[`${s.value}-wrapper-checked`]:B.checked,[`${s.value}-wrapper-disabled`]:B.disabled,[`${s.value}-wrapper-in-form-item`]:i.isFormItemInput},z,m.value),N=le({[`${s.value}-indeterminate`]:x},m.value);return p(f(\"label\",{class:L,style:T,onMouseenter:E,onMouseleave:R},[f(yx,A(A({\"aria-checked\":x?\"mixed\":void 0},B),{},{class:N,ref:S}),null),_.length?f(\"span\",null,[_]):null]))}}}),fu=ne({compatConfig:{MODE:3},name:\"ACheckboxGroup\",inheritAttrs:!1,props:aL(),setup(e,t){let{slots:n,attrs:o,emit:r,expose:l}=t;const a=Jt(),{prefixCls:i,direction:s}=Pe(\"checkbox\",e),c=I(()=>`${i.value}-group`),[u,d]=yw(c),p=J((e.value===void 0?e.defaultValue:e.value)||[]);pe(()=>e.value,()=>{p.value=e.value||[]});const m=I(()=>e.options.map(w=>typeof w==\"string\"||typeof w==\"number\"?{label:w,value:w}:w)),g=J(Symbol()),v=J(new Map),y=w=>{v.value.delete(w),g.value=Symbol()},b=(w,C)=>{v.value.set(w,C),g.value=Symbol()},S=J(new Map);return pe(g,()=>{const w=new Map;for(const C of v.value.values())w.set(C,!0);S.value=w}),Qe(Sw,{cancelValue:y,registerValue:b,toggleOption:w=>{const C=p.value.indexOf(w.value),_=[...p.value];C===-1?_.push(w.value):_.splice(C,1),e.value===void 0&&(p.value=_);const x=_.filter(P=>S.value.has(P)).sort((P,O)=>{const M=m.value.findIndex(R=>R.value===P),E=m.value.findIndex(R=>R.value===O);return M-E});r(\"update:value\",x),r(\"change\",x),a.onFieldChange()},mergedValue:p,name:I(()=>e.name),disabled:I(()=>e.disabled)}),l({mergedValue:p}),()=>{var w;const{id:C=a.id.value}=e;let _=null;return m.value&&m.value.length>0&&(_=m.value.map(x=>{var P;return f(Zn,{prefixCls:i.value,key:x.value.toString(),disabled:\"disabled\"in x?x.disabled:e.disabled,indeterminate:x.indeterminate,value:x.value,checked:p.value.indexOf(x.value)!==-1,onChange:x.onChange,class:`${c.value}-item`},{default:()=>[n.label!==void 0?(P=n.label)===null||P===void 0?void 0:P.call(n,x):x.label]})})),u(f(\"div\",A(A({},o),{},{class:[c.value,{[`${c.value}-rtl`]:s.value===\"rtl\"},o.class,d.value],id:C}),[_||((w=n.default)===null||w===void 0?void 0:w.call(n))]))}}});Zn.Group=fu;Zn.install=function(e){return e.component(Zn.name,Zn),e.component(fu.name,fu),e};const cL={useBreakpoint:Ea},uL=Dt(bd),dL=e=>{const{componentCls:t,commentBg:n,commentPaddingBase:o,commentNestIndent:r,commentFontSizeBase:l,commentFontSizeSm:a,commentAuthorNameColor:i,commentAuthorTimeColor:s,commentActionColor:c,commentActionHoverColor:u,commentActionsMarginBottom:d,commentActionsMarginTop:p,commentContentDetailPMarginBottom:m}=e;return{[t]:{position:\"relative\",backgroundColor:n,[`${t}-inner`]:{display:\"flex\",padding:o},[`${t}-avatar`]:{position:\"relative\",flexShrink:0,marginRight:e.marginSM,cursor:\"pointer\",img:{width:\"32px\",height:\"32px\",borderRadius:\"50%\"}},[`${t}-content`]:{position:\"relative\",flex:\"1 1 auto\",minWidth:\"1px\",fontSize:l,wordWrap:\"break-word\",\"&-author\":{display:\"flex\",flexWrap:\"wrap\",justifyContent:\"flex-start\",marginBottom:e.marginXXS,fontSize:l,\"& > a,& > span\":{paddingRight:e.paddingXS,fontSize:a,lineHeight:\"18px\"},\"&-name\":{color:i,fontSize:l,transition:`color ${e.motionDurationSlow}`,\"> *\":{color:i,\"&:hover\":{color:i}}},\"&-time\":{color:s,whiteSpace:\"nowrap\",cursor:\"auto\"}},\"&-detail p\":{marginBottom:m,whiteSpace:\"pre-wrap\"}},[`${t}-actions`]:{marginTop:p,marginBottom:d,paddingLeft:0,\"> li\":{display:\"inline-block\",color:c,\"> span\":{marginRight:\"10px\",color:c,fontSize:a,cursor:\"pointer\",transition:`color ${e.motionDurationSlow}`,userSelect:\"none\",\"&:hover\":{color:u}}}},[`${t}-nested`]:{marginLeft:r},\"&-rtl\":{direction:\"rtl\"}}}},fL=Ge(\"Comment\",e=>{const t=Le(e,{commentBg:\"inherit\",commentPaddingBase:`${e.paddingMD}px 0`,commentNestIndent:\"44px\",commentFontSizeBase:e.fontSize,commentFontSizeSm:e.fontSizeSM,commentAuthorNameColor:e.colorTextTertiary,commentAuthorTimeColor:e.colorTextPlaceholder,commentActionColor:e.colorTextTertiary,commentActionHoverColor:e.colorTextSecondary,commentActionsMarginBottom:\"inherit\",commentActionsMarginTop:e.marginSM,commentContentDetailPMarginBottom:\"inherit\"});return[dL(t)]}),pL=()=>({actions:Array,author:W.any,avatar:W.any,content:W.any,prefixCls:String,datetime:W.any}),mL=ne({compatConfig:{MODE:3},name:\"AComment\",inheritAttrs:!1,props:pL(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"comment\",e),[a,i]=fL(r),s=(u,d)=>f(\"div\",{class:`${u}-nested`},[d]),c=u=>!u||!u.length?null:u.map((p,m)=>f(\"li\",{key:`action-${m}`},[p]));return()=>{var u,d,p,m,g,v,y,b,S,$,w;const C=r.value,_=(u=e.actions)!==null&&u!==void 0?u:(d=n.actions)===null||d===void 0?void 0:d.call(n),x=(p=e.author)!==null&&p!==void 0?p:(m=n.author)===null||m===void 0?void 0:m.call(n),P=(g=e.avatar)!==null&&g!==void 0?g:(v=n.avatar)===null||v===void 0?void 0:v.call(n),O=(y=e.content)!==null&&y!==void 0?y:(b=n.content)===null||b===void 0?void 0:b.call(n),M=(S=e.datetime)!==null&&S!==void 0?S:($=n.datetime)===null||$===void 0?void 0:$.call(n),E=f(\"div\",{class:`${C}-avatar`},[typeof P==\"string\"?f(\"img\",{src:P,alt:\"comment-avatar\"},null):P]),R=_?f(\"ul\",{class:`${C}-actions`},[c(Array.isArray(_)?_:[_])]):null,D=f(\"div\",{class:`${C}-content-author`},[x&&f(\"span\",{class:`${C}-content-author-name`},[x]),M&&f(\"span\",{class:`${C}-content-author-time`},[M])]),z=f(\"div\",{class:`${C}-content`},[D,f(\"div\",{class:`${C}-content-detail`},[O]),R]),T=f(\"div\",{class:`${C}-inner`},[E,z]),k=$t((w=n.default)===null||w===void 0?void 0:w.call(n));return a(f(\"div\",A(A({},o),{},{class:[C,{[`${C}-rtl`]:l.value===\"rtl\"},o.class,i.value]}),[T,k&&k.length?s(C,k):null]))}}}),vL=Dt(mL);let ac=h({},En.Modal);function gL(e){e?ac=h(h({},ac),e):ac=h({},En.Modal)}function hL(){return ac}const qp=\"internalMark\",ic=ne({compatConfig:{MODE:3},name:\"ALocaleProvider\",props:{locale:{type:Object},ANT_MARK__:String},setup(e,t){let{slots:n}=t;eo(e.ANT_MARK__===qp);const o=vt({antLocale:h(h({},e.locale),{exist:!0}),ANT_MARK__:qp});return Qe(\"localeData\",o),pe(()=>e.locale,r=>{gL(r&&r.Modal),o.antLocale=h(h({},r),{exist:!0})},{immediate:!0}),()=>{var r;return(r=n.default)===null||r===void 0?void 0:r.call(n)}}});ic.install=function(e){return e.component(ic.name,ic),e};const $w=Dt(ic),Cw=ne({name:\"Notice\",inheritAttrs:!1,props:[\"prefixCls\",\"duration\",\"updateMark\",\"noticeKey\",\"closeIcon\",\"closable\",\"props\",\"onClick\",\"onClose\",\"holder\",\"visible\"],setup(e,t){let{attrs:n,slots:o}=t,r,l=!1;const a=I(()=>e.duration===void 0?4.5:e.duration),i=()=>{a.value&&!l&&(r=setTimeout(()=>{c()},a.value*1e3))},s=()=>{r&&(clearTimeout(r),r=null)},c=d=>{d&&d.stopPropagation(),s();const{onClose:p,noticeKey:m}=e;p&&p(m)},u=()=>{s(),i()};return Ne(()=>{i()}),Mn(()=>{l=!0,s()}),pe([a,()=>e.updateMark,()=>e.visible],(d,p)=>{let[m,g,v]=d,[y,b,S]=p;(m!==y||g!==b||v!==S&&S)&&u()},{flush:\"post\"}),()=>{var d,p;const{prefixCls:m,closable:g,closeIcon:v=(d=o.closeIcon)===null||d===void 0?void 0:d.call(o),onClick:y,holder:b}=e,{class:S,style:$}=n,w=`${m}-notice`,C=Object.keys(n).reduce((x,P)=>((P.startsWith(\"data-\")||P.startsWith(\"aria-\")||P===\"role\")&&(x[P]=n[P]),x),{}),_=f(\"div\",A({class:le(w,S,{[`${w}-closable`]:g}),style:$,onMouseenter:s,onMouseleave:i,onClick:y},C),[f(\"div\",{class:`${w}-content`},[(p=o.default)===null||p===void 0?void 0:p.call(o)]),g?f(\"a\",{tabindex:0,onClick:c,class:`${w}-close`},[v||f(\"span\",{class:`${w}-close-x`},null)]):null]);return b?f(_m,{to:b},{default:()=>_}):_}}});var bL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};let fy=0;const yL=Date.now();function py(){const e=fy;return fy+=1,`rcNotification_${yL}_${e}`}const pu=ne({name:\"Notification\",inheritAttrs:!1,props:[\"prefixCls\",\"transitionName\",\"animation\",\"maxCount\",\"closeIcon\",\"hashId\"],setup(e,t){let{attrs:n,expose:o,slots:r}=t;const l=new Map,a=J([]),i=I(()=>{const{prefixCls:u,animation:d=\"fade\"}=e;let p=e.transitionName;return!p&&d&&(p=`${u}-${d}`),Ku(p)}),s=(u,d)=>{const p=u.key||py(),m=h(h({},u),{key:p}),{maxCount:g}=e,v=a.value.map(b=>b.notice.key).indexOf(p),y=a.value.concat();v!==-1?y.splice(v,1,{notice:m,holderCallback:d}):(g&&a.value.length>=g&&(m.key=y[0].notice.key,m.updateMark=py(),m.userPassKey=p,y.shift()),y.push({notice:m,holderCallback:d})),a.value=y},c=u=>{a.value=zt(a.value).filter(d=>{let{notice:{key:p,userPassKey:m}}=d;return(m||p)!==u})};return o({add:s,remove:c,notices:a}),()=>{var u;const{prefixCls:d,closeIcon:p=(u=r.closeIcon)===null||u===void 0?void 0:u.call(r,{prefixCls:d})}=e,m=a.value.map((v,y)=>{let{notice:b,holderCallback:S}=v;const $=y===a.value.length-1?b.updateMark:void 0,{key:w,userPassKey:C}=b,{content:_}=b,x=h(h(h({prefixCls:d,closeIcon:typeof p==\"function\"?p({prefixCls:d}):p},b),b.props),{key:w,noticeKey:C||w,updateMark:$,onClose:P=>{var O;c(P),(O=b.onClose)===null||O===void 0||O.call(b)},onClick:b.onClick});return S?f(\"div\",{key:w,class:`${d}-hook-holder`,ref:P=>{typeof w>\"u\"||(P?(l.set(w,P),S(P,x)):l.delete(w))}},null):f(Cw,A(A({},x),{},{class:le(x.class,e.hashId)}),{default:()=>[typeof _==\"function\"?_({prefixCls:d}):_]})}),g={[d]:1,[n.class]:!!n.class,[e.hashId]:!0};return f(\"div\",{class:g,style:n.style||{top:\"65px\",left:\"50%\"}},[f(Pu,A({tag:\"div\"},i.value),{default:()=>[m]})])}}});pu.newInstance=function(t,n){const o=t||{},{name:r=\"notification\",getContainer:l,appContext:a,prefixCls:i,rootPrefixCls:s,transitionName:c,hasTransitionName:u,useStyle:d}=o,p=bL(o,[\"name\",\"getContainer\",\"appContext\",\"prefixCls\",\"rootPrefixCls\",\"transitionName\",\"hasTransitionName\",\"useStyle\"]),m=document.createElement(\"div\");l?l().appendChild(m):document.body.appendChild(m);const g=ne({compatConfig:{MODE:3},name:\"NotificationWrapper\",setup(y,b){let{attrs:S}=b;const $=ee(),w=I(()=>mn.getPrefixCls(r,i)),[,C]=d(w);return Ne(()=>{n({notice(_){var x;(x=$.value)===null||x===void 0||x.add(_)},removeNotice(_){var x;(x=$.value)===null||x===void 0||x.remove(_)},destroy(){Fr(null,m),m.parentNode&&m.parentNode.removeChild(m)},component:$})}),()=>{const _=mn,x=_.getRootPrefixCls(s,w.value),P=u?c:`${w.value}-${c}`;return f(Nr,A(A({},_),{},{prefixCls:x}),{default:()=>[f(pu,A(A({ref:$},S),{},{prefixCls:w.value,transitionName:P,hashId:C.value}),null)]})}}}),v=f(g,p);v.appContext=a||v.appContext,Fr(v,m)};let my=0;const SL=Date.now();function vy(){const e=my;return my+=1,`rcNotification_${SL}_${e}`}const $L=ne({name:\"HookNotification\",inheritAttrs:!1,props:[\"prefixCls\",\"transitionName\",\"animation\",\"maxCount\",\"closeIcon\",\"hashId\",\"remove\",\"notices\",\"getStyles\",\"getClassName\",\"onAllRemoved\",\"getContainer\"],setup(e,t){let{attrs:n,slots:o}=t;const r=new Map,l=I(()=>e.notices),a=I(()=>{let u=e.transitionName;if(!u&&e.animation)switch(typeof e.animation){case\"string\":u=e.animation;break;case\"function\":u=e.animation().name;break;case\"object\":u=e.animation.name;break;default:u=`${e.prefixCls}-fade`;break}return Ku(u)}),i=u=>e.remove(u),s=J({});pe(l,()=>{const u={};Object.keys(s.value).forEach(d=>{u[d]=[]}),e.notices.forEach(d=>{const{placement:p=\"topRight\"}=d.notice;p&&(u[p]=u[p]||[],u[p].push(d))}),s.value=u});const c=I(()=>Object.keys(s.value));return()=>{var u;const{prefixCls:d,closeIcon:p=(u=o.closeIcon)===null||u===void 0?void 0:u.call(o,{prefixCls:d})}=e,m=c.value.map(g=>{var v,y;const b=s.value[g],S=(v=e.getClassName)===null||v===void 0?void 0:v.call(e,g),$=(y=e.getStyles)===null||y===void 0?void 0:y.call(e,g),w=b.map((x,P)=>{let{notice:O,holderCallback:M}=x;const E=P===l.value.length-1?O.updateMark:void 0,{key:R,userPassKey:D}=O,{content:z}=O,T=h(h(h({prefixCls:d,closeIcon:typeof p==\"function\"?p({prefixCls:d}):p},O),O.props),{key:R,noticeKey:D||R,updateMark:E,onClose:k=>{var B;i(k),(B=O.onClose)===null||B===void 0||B.call(O)},onClick:O.onClick});return M?f(\"div\",{key:R,class:`${d}-hook-holder`,ref:k=>{typeof R>\"u\"||(k?(r.set(R,k),M(k,T)):r.delete(R))}},null):f(Cw,A(A({},T),{},{class:le(T.class,e.hashId)}),{default:()=>[typeof z==\"function\"?z({prefixCls:d}):z]})}),C={[d]:1,[`${d}-${g}`]:1,[n.class]:!!n.class,[e.hashId]:!0,[S]:!!S};function _(){var x;b.length>0||(Reflect.deleteProperty(s.value,g),(x=e.onAllRemoved)===null||x===void 0||x.call(e))}return f(\"div\",{key:g,class:C,style:n.style||$||{top:\"65px\",left:\"50%\"}},[f(Pu,A(A({tag:\"div\"},a.value),{},{onAfterLeave:_}),{default:()=>[w]})])});return f(l1,{getContainer:e.getContainer},{default:()=>[m]})}}});var CL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const xL=()=>document.body;let gy=0;function wL(){const e={};for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return n.forEach(r=>{r&&Object.keys(r).forEach(l=>{const a=r[l];a!==void 0&&(e[l]=a)})}),e}function xw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{getContainer:t=xL,motion:n,prefixCls:o,maxCount:r,getClassName:l,getStyles:a,onAllRemoved:i}=e,s=CL(e,[\"getContainer\",\"motion\",\"prefixCls\",\"maxCount\",\"getClassName\",\"getStyles\",\"onAllRemoved\"]),c=ee([]),u=ee(),d=(b,S)=>{const $=b.key||vy(),w=h(h({},b),{key:$}),C=c.value.map(x=>x.notice.key).indexOf($),_=c.value.concat();C!==-1?_.splice(C,1,{notice:w,holderCallback:S}):(r&&c.value.length>=r&&(w.key=_[0].notice.key,w.updateMark=vy(),w.userPassKey=$,_.shift()),_.push({notice:w,holderCallback:S})),c.value=_},p=b=>{c.value=c.value.filter(S=>{let{notice:{key:$,userPassKey:w}}=S;return(w||$)!==b})},m=()=>{c.value=[]},g=()=>f($L,{ref:u,prefixCls:o,maxCount:r,notices:c.value,remove:p,getClassName:l,getStyles:a,animation:n,hashId:e.hashId,onAllRemoved:i,getContainer:t},null),v=ee([]),y={open:b=>{const S=wL(s,b);(S.key===null||S.key===void 0)&&(S.key=`vc-notification-${gy}`,gy+=1),v.value=[...v.value,{type:\"open\",config:S}]},close:b=>{v.value=[...v.value,{type:\"close\",key:b}]},destroy:()=>{v.value=[...v.value,{type:\"destroy\"}]}};return pe(v,()=>{v.value.length&&(v.value.forEach(b=>{switch(b.type){case\"open\":d(b.config);break;case\"close\":p(b.key);break;case\"destroy\":m();break}}),v.value=[])}),[y,g]}const _L=e=>{const{componentCls:t,iconCls:n,boxShadowSecondary:o,colorBgElevated:r,colorSuccess:l,colorError:a,colorWarning:i,colorInfo:s,fontSizeLG:c,motionEaseInOutCirc:u,motionDurationSlow:d,marginXS:p,paddingXS:m,borderRadiusLG:g,zIndexPopup:v,messageNoticeContentPadding:y}=e,b=new lt(\"MessageMoveIn\",{\"0%\":{padding:0,transform:\"translateY(-100%)\",opacity:0},\"100%\":{padding:m,transform:\"translateY(0)\",opacity:1}}),S=new lt(\"MessageMoveOut\",{\"0%\":{maxHeight:e.height,padding:m,opacity:1},\"100%\":{maxHeight:0,padding:0,opacity:0}});return[{[t]:h(h({},Ue(e)),{position:\"fixed\",top:p,left:\"50%\",transform:\"translateX(-50%)\",width:\"100%\",pointerEvents:\"none\",zIndex:v,[`${t}-move-up`]:{animationFillMode:\"forwards\"},[`\n        ${t}-move-up-appear,\n        ${t}-move-up-enter\n      `]:{animationName:b,animationDuration:d,animationPlayState:\"paused\",animationTimingFunction:u},[`\n        ${t}-move-up-appear${t}-move-up-appear-active,\n        ${t}-move-up-enter${t}-move-up-enter-active\n      `]:{animationPlayState:\"running\"},[`${t}-move-up-leave`]:{animationName:S,animationDuration:d,animationPlayState:\"paused\",animationTimingFunction:u},[`${t}-move-up-leave${t}-move-up-leave-active`]:{animationPlayState:\"running\"},\"&-rtl\":{direction:\"rtl\",span:{direction:\"rtl\"}}})},{[`${t}-notice`]:{padding:m,textAlign:\"center\",[n]:{verticalAlign:\"text-bottom\",marginInlineEnd:p,fontSize:c},[`${t}-notice-content`]:{display:\"inline-block\",padding:y,background:r,borderRadius:g,boxShadow:o,pointerEvents:\"all\"},[`${t}-success ${n}`]:{color:l},[`${t}-error ${n}`]:{color:a},[`${t}-warning ${n}`]:{color:i},[`\n        ${t}-info ${n},\n        ${t}-loading ${n}`]:{color:s}}},{[`${t}-notice-pure-panel`]:{padding:0,textAlign:\"start\"}}]},ww=Ge(\"Message\",e=>{const t=Le(e,{messageNoticeContentPadding:`${(e.controlHeightLG-e.fontSize*e.lineHeight)/2}px ${e.paddingSM}px`});return[_L(t)]},e=>({height:150,zIndexPopup:e.zIndexPopupBase+10})),IL={info:f(wa,null,null),success:f(gr,null,null),error:f(jn,null,null),warning:f(vr,null,null),loading:f(Qn,null,null)},PL=ne({name:\"PureContent\",inheritAttrs:!1,props:[\"prefixCls\",\"type\",\"icon\"],setup(e,t){let{slots:n}=t;return()=>{var o;return f(\"div\",{class:le(`${e.prefixCls}-custom-content`,`${e.prefixCls}-${e.type}`)},[e.icon||IL[e.type],f(\"span\",null,[(o=n.default)===null||o===void 0?void 0:o.call(n)])])}}});var TL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const OL=8,EL=3,ML=ne({name:\"Holder\",inheritAttrs:!1,props:[\"top\",\"prefixCls\",\"getContainer\",\"maxCount\",\"duration\",\"rtl\",\"transitionName\",\"onAllRemoved\",\"animation\",\"staticGetContainer\"],setup(e,t){let{expose:n}=t;var o,r;const{getPrefixCls:l,getPopupContainer:a}=Pe(\"message\",e),i=I(()=>l(\"message\",e.prefixCls)),[,s]=ww(i),c=()=>{var v;const y=(v=e.top)!==null&&v!==void 0?v:OL;return{left:\"50%\",transform:\"translateX(-50%)\",top:typeof y==\"number\"?`${y}px`:y}},u=()=>le(s.value,e.rtl?`${i.value}-rtl`:\"\"),d=()=>{var v;return cv({prefixCls:i.value,animation:(v=e.animation)!==null&&v!==void 0?v:\"move-up\",transitionName:e.transitionName})},p=f(\"span\",{class:`${i.value}-close-x`},[f(Wn,{class:`${i.value}-close-icon`},null)]),[m,g]=xw({getStyles:c,prefixCls:i.value,getClassName:u,motion:d,closable:!1,closeIcon:p,duration:(o=e.duration)!==null&&o!==void 0?o:EL,getContainer:(r=e.staticGetContainer)!==null&&r!==void 0?r:a.value,maxCount:e.maxCount,onAllRemoved:e.onAllRemoved});return n(h(h({},m),{prefixCls:i,hashId:s})),g}});let hy=0;function AL(e){const t=ee(null),n=Symbol(\"messageHolderKey\"),o=s=>{var c;(c=t.value)===null||c===void 0||c.close(s)},r=s=>{if(!t.value){const C=()=>{};return C.then=()=>{},C}const{open:c,prefixCls:u,hashId:d}=t.value,p=`${u}-notice`,{content:m,icon:g,type:v,key:y,class:b,onClose:S}=s,$=TL(s,[\"content\",\"icon\",\"type\",\"key\",\"class\",\"onClose\"]);let w=y;return w==null&&(hy+=1,w=`antd-message-${hy}`),RO(C=>(c(h(h({},$),{key:w,content:()=>f(PL,{prefixCls:u,type:v,icon:typeof g==\"function\"?g():g},{default:()=>[typeof m==\"function\"?m():m]}),placement:\"top\",class:le(v&&`${p}-${v}`,d,b),onClose:()=>{S?.(),C()}})),()=>{o(w)}))},a={open:r,destroy:s=>{var c;s!==void 0?o(s):(c=t.value)===null||c===void 0||c.destroy()}};return[\"info\",\"success\",\"warning\",\"error\",\"loading\"].forEach(s=>{const c=(u,d,p)=>{let m;u&&typeof u==\"object\"&&\"content\"in u?m=u:m={content:u};let g,v;typeof d==\"function\"?v=d:(g=d,v=p);const y=h(h({onClose:v,duration:g},m),{type:s});return r(y)};a[s]=c}),[a,()=>f(ML,A(A({key:n},e),{},{ref:t}),null)]}function _w(e){return AL(e)}let Iw=3,Pw,Pn,DL=1,Tw=\"\",Ow=\"move-up\",Ew=!1,Mw=()=>document.body,Aw,Dw=!1;function RL(){return DL++}function kL(e){e.top!==void 0&&(Pw=e.top,Pn=null),e.duration!==void 0&&(Iw=e.duration),e.prefixCls!==void 0&&(Tw=e.prefixCls),e.getContainer!==void 0&&(Mw=e.getContainer,Pn=null),e.transitionName!==void 0&&(Ow=e.transitionName,Pn=null,Ew=!0),e.maxCount!==void 0&&(Aw=e.maxCount,Pn=null),e.rtl!==void 0&&(Dw=e.rtl)}function NL(e,t){if(Pn){t(Pn);return}pu.newInstance({appContext:e.appContext,prefixCls:e.prefixCls||Tw,rootPrefixCls:e.rootPrefixCls,transitionName:Ow,hasTransitionName:Ew,style:{top:Pw},getContainer:Mw||e.getPopupContainer,maxCount:Aw,name:\"message\",useStyle:ww},n=>{if(Pn){t(Pn);return}Pn=n,t(n)})}const Rw={info:wa,success:gr,error:jn,warning:vr,loading:Qn},BL=Object.keys(Rw);function LL(e){const t=e.duration!==void 0?e.duration:Iw,n=e.key||RL(),o=new Promise(l=>{const a=()=>(typeof e.onClose==\"function\"&&e.onClose(),l(!0));NL(e,i=>{i.notice({key:n,duration:t,style:e.style||{},class:e.class,content:s=>{let{prefixCls:c}=s;const u=Rw[e.type],d=u?f(u,null,null):\"\",p=le(`${c}-custom-content`,{[`${c}-${e.type}`]:e.type,[`${c}-rtl`]:Dw===!0});return f(\"div\",{class:p},[typeof e.icon==\"function\"?e.icon():e.icon||d,f(\"span\",null,[typeof e.content==\"function\"?e.content():e.content])])},onClose:a,onClick:e.onClick})})}),r=()=>{Pn&&Pn.removeNotice(n)};return r.then=(l,a)=>o.then(l,a),r.promise=o,r}function FL(e){return Object.prototype.toString.call(e)===\"[object Object]\"&&!!e.content}const vo={open:LL,config:kL,destroy(e){if(Pn)if(e){const{removeNotice:t}=Pn;t(e)}else{const{destroy:t}=Pn;t(),Pn=null}}};function zL(e,t){e[t]=(n,o,r)=>FL(n)?e.open(h(h({},n),{type:t})):(typeof o==\"function\"&&(r=o,o=void 0),e.open({content:n,duration:o,type:t,onClose:r}))}BL.forEach(e=>zL(vo,e));vo.warn=vo.warning;vo.useMessage=_w;const HL=e=>{const{componentCls:t,width:n,notificationMarginEdge:o}=e,r=new lt(\"antNotificationTopFadeIn\",{\"0%\":{marginTop:\"-100%\",opacity:0},\"100%\":{marginTop:0,opacity:1}}),l=new lt(\"antNotificationBottomFadeIn\",{\"0%\":{marginBottom:\"-100%\",opacity:0},\"100%\":{marginBottom:0,opacity:1}}),a=new lt(\"antNotificationLeftFadeIn\",{\"0%\":{right:{_skip_check_:!0,value:n},opacity:0},\"100%\":{right:{_skip_check_:!0,value:0},opacity:1}});return{[`&${t}-top, &${t}-bottom`]:{marginInline:0},[`&${t}-top`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:r}},[`&${t}-bottom`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:l}},[`&${t}-topLeft, &${t}-bottomLeft`]:{marginInlineEnd:0,marginInlineStart:o,[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:a}}}},jL=e=>{const{iconCls:t,componentCls:n,boxShadowSecondary:o,fontSizeLG:r,notificationMarginBottom:l,borderRadiusLG:a,colorSuccess:i,colorInfo:s,colorWarning:c,colorError:u,colorTextHeading:d,notificationBg:p,notificationPadding:m,notificationMarginEdge:g,motionDurationMid:v,motionEaseInOut:y,fontSize:b,lineHeight:S,width:$,notificationIconSize:w}=e,C=`${n}-notice`,_=new lt(\"antNotificationFadeIn\",{\"0%\":{left:{_skip_check_:!0,value:$},opacity:0},\"100%\":{left:{_skip_check_:!0,value:0},opacity:1}}),x=new lt(\"antNotificationFadeOut\",{\"0%\":{maxHeight:e.animationMaxHeight,marginBottom:l,opacity:1},\"100%\":{maxHeight:0,marginBottom:0,paddingTop:0,paddingBottom:0,opacity:0}});return[{[n]:h(h(h(h({},Ue(e)),{position:\"fixed\",zIndex:e.zIndexPopup,marginInlineEnd:g,[`${n}-hook-holder`]:{position:\"relative\"},[`&${n}-top, &${n}-bottom`]:{[`${n}-notice`]:{marginInline:\"auto auto\"}},[`&${n}-topLeft, &${n}-bottomLeft`]:{[`${n}-notice`]:{marginInlineEnd:\"auto\",marginInlineStart:0}},[`${n}-fade-enter, ${n}-fade-appear`]:{animationDuration:e.motionDurationMid,animationTimingFunction:y,animationFillMode:\"both\",opacity:0,animationPlayState:\"paused\"},[`${n}-fade-leave`]:{animationTimingFunction:y,animationFillMode:\"both\",animationDuration:v,animationPlayState:\"paused\"},[`${n}-fade-enter${n}-fade-enter-active, ${n}-fade-appear${n}-fade-appear-active`]:{animationName:_,animationPlayState:\"running\"},[`${n}-fade-leave${n}-fade-leave-active`]:{animationName:x,animationPlayState:\"running\"}}),HL(e)),{\"&-rtl\":{direction:\"rtl\",[`${n}-notice-btn`]:{float:\"left\"}}})},{[C]:{position:\"relative\",width:$,maxWidth:`calc(100vw - ${g*2}px)`,marginBottom:l,marginInlineStart:\"auto\",padding:m,overflow:\"hidden\",lineHeight:S,wordWrap:\"break-word\",background:p,borderRadius:a,boxShadow:o,[`${n}-close-icon`]:{fontSize:b,cursor:\"pointer\"},[`${C}-message`]:{marginBottom:e.marginXS,color:d,fontSize:r,lineHeight:e.lineHeightLG},[`${C}-description`]:{fontSize:b},[`&${C}-closable ${C}-message`]:{paddingInlineEnd:e.paddingLG},[`${C}-with-icon ${C}-message`]:{marginBottom:e.marginXS,marginInlineStart:e.marginSM+w,fontSize:r},[`${C}-with-icon ${C}-description`]:{marginInlineStart:e.marginSM+w,fontSize:b},[`${C}-icon`]:{position:\"absolute\",fontSize:w,lineHeight:0,[`&-success${t}`]:{color:i},[`&-info${t}`]:{color:s},[`&-warning${t}`]:{color:c},[`&-error${t}`]:{color:u}},[`${C}-close`]:{position:\"absolute\",top:e.notificationPaddingVertical,insetInlineEnd:e.notificationPaddingHorizontal,color:e.colorIcon,outline:\"none\",width:e.notificationCloseButtonSize,height:e.notificationCloseButtonSize,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",\"&:hover\":{color:e.colorIconHover,backgroundColor:e.wireframe?\"transparent\":e.colorFillContent}},[`${C}-btn`]:{float:\"right\",marginTop:e.marginSM}}},{[`${C}-pure-panel`]:{margin:0}}]},kw=Ge(\"Notification\",e=>{const t=e.paddingMD,n=e.paddingLG,o=Le(e,{notificationBg:e.colorBgElevated,notificationPaddingVertical:t,notificationPaddingHorizontal:n,notificationPadding:`${e.paddingMD}px ${e.paddingContentHorizontalLG}px`,notificationMarginBottom:e.margin,notificationMarginEdge:e.marginLG,animationMaxHeight:150,notificationIconSize:e.fontSizeLG*e.lineHeightLG,notificationCloseButtonSize:e.controlHeightLG*.55});return[jL(o)]},e=>({zIndexPopup:e.zIndexPopupBase+50,width:384}));function WL(e,t){return t||f(\"span\",{class:`${e}-close-x`},[f(Wn,{class:`${e}-close-icon`},null)])}f(wa,null,null),f(gr,null,null),f(jn,null,null),f(vr,null,null),f(Qn,null,null);const VL={success:gr,info:wa,error:jn,warning:vr};function KL(e){let{prefixCls:t,icon:n,type:o,message:r,description:l,btn:a}=e,i=null;if(n)i=f(\"span\",{class:`${t}-icon`},[Xl(n)]);else if(o){const s=VL[o];i=f(s,{class:`${t}-icon ${t}-icon-${o}`},null)}return f(\"div\",{class:le({[`${t}-with-icon`]:i}),role:\"alert\"},[i,f(\"div\",{class:`${t}-message`},[r]),f(\"div\",{class:`${t}-description`},[l]),a&&f(\"div\",{class:`${t}-btn`},[a])])}function Nw(e,t,n){let o;switch(t=typeof t==\"number\"?`${t}px`:t,n=typeof n==\"number\"?`${n}px`:n,e){case\"top\":o={left:\"50%\",transform:\"translateX(-50%)\",right:\"auto\",top:t,bottom:\"auto\"};break;case\"topLeft\":o={left:0,top:t,bottom:\"auto\"};break;case\"topRight\":o={right:0,top:t,bottom:\"auto\"};break;case\"bottom\":o={left:\"50%\",transform:\"translateX(-50%)\",right:\"auto\",top:\"auto\",bottom:n};break;case\"bottomLeft\":o={left:0,top:\"auto\",bottom:n};break;default:o={right:0,top:\"auto\",bottom:n};break}return o}function GL(e){return{name:`${e}-fade`}}var XL=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const by=24,UL=4.5,YL=ne({name:\"Holder\",inheritAttrs:!1,props:[\"prefixCls\",\"class\",\"type\",\"icon\",\"content\",\"onAllRemoved\"],setup(e,t){let{expose:n}=t;const{getPrefixCls:o,getPopupContainer:r}=Pe(\"notification\",e),l=I(()=>e.prefixCls||o(\"notification\")),a=p=>{var m,g;return Nw(p,(m=e.top)!==null&&m!==void 0?m:by,(g=e.bottom)!==null&&g!==void 0?g:by)},[,i]=kw(l),s=()=>le(i.value,{[`${l.value}-rtl`]:e.rtl}),c=()=>GL(l.value),[u,d]=xw({prefixCls:l.value,getStyles:a,getClassName:s,motion:c,closable:!0,closeIcon:WL(l.value),duration:UL,getContainer:()=>{var p,m;return((p=e.getPopupContainer)===null||p===void 0?void 0:p.call(e))||((m=r.value)===null||m===void 0?void 0:m.call(r))||document.body},maxCount:e.maxCount,hashId:i.value,onAllRemoved:e.onAllRemoved});return n(h(h({},u),{prefixCls:l.value,hashId:i})),d}});function qL(e){const t=ee(null),n=Symbol(\"notificationHolderKey\"),o=i=>{if(!t.value)return;const{open:s,prefixCls:c,hashId:u}=t.value,d=`${c}-notice`,{message:p,description:m,icon:g,type:v,btn:y,class:b}=i,S=XL(i,[\"message\",\"description\",\"icon\",\"type\",\"btn\",\"class\"]);return s(h(h({placement:\"topRight\"},S),{content:()=>f(KL,{prefixCls:d,icon:typeof g==\"function\"?g():g,type:v,message:typeof p==\"function\"?p():p,description:typeof m==\"function\"?m():m,btn:typeof y==\"function\"?y():y},null),class:le(v&&`${d}-${v}`,u,b)}))},l={open:o,destroy:i=>{var s,c;i!==void 0?(s=t.value)===null||s===void 0||s.close(i):(c=t.value)===null||c===void 0||c.destroy()}};return[\"success\",\"info\",\"warning\",\"error\"].forEach(i=>{l[i]=s=>o(h(h({},s),{type:i}))}),[l,()=>f(YL,A(A({key:n},e),{},{ref:t}),null)]}function Bw(e){return qL(e)}const al={};let Lw=4.5,Fw=\"24px\",zw=\"24px\",Zp=\"\",Hw=\"topRight\",jw=()=>document.body,Ww=null,Qp=!1,Vw;function ZL(e){const{duration:t,placement:n,bottom:o,top:r,getContainer:l,closeIcon:a,prefixCls:i}=e;i!==void 0&&(Zp=i),t!==void 0&&(Lw=t),n!==void 0&&(Hw=n),o!==void 0&&(zw=typeof o==\"number\"?`${o}px`:o),r!==void 0&&(Fw=typeof r==\"number\"?`${r}px`:r),l!==void 0&&(jw=l),a!==void 0&&(Ww=a),e.rtl!==void 0&&(Qp=e.rtl),e.maxCount!==void 0&&(Vw=e.maxCount)}function QL(e,t){let{prefixCls:n,placement:o=Hw,getContainer:r=jw,top:l,bottom:a,closeIcon:i=Ww,appContext:s}=e;const{getPrefixCls:c}=uF(),u=c(\"notification\",n||Zp),d=`${u}-${o}-${Qp}`,p=al[d];if(p){Promise.resolve(p).then(g=>{t(g)});return}const m=le(`${u}-${o}`,{[`${u}-rtl`]:Qp===!0});pu.newInstance({name:\"notification\",prefixCls:n||Zp,useStyle:kw,class:m,style:Nw(o,l??Fw,a??zw),appContext:s,getContainer:r,closeIcon:g=>{let{prefixCls:v}=g;return f(\"span\",{class:`${v}-close-x`},[Xl(i,{},f(Wn,{class:`${v}-close-icon`},null))])},maxCount:Vw,hasTransitionName:!0},g=>{al[d]=g,t(g)})}const JL={success:e$,info:JS,error:QS,warning:ZS};function eF(e){const{icon:t,type:n,description:o,message:r,btn:l}=e,a=e.duration===void 0?Lw:e.duration;QL(e,i=>{i.notice({content:s=>{let{prefixCls:c}=s;const u=`${c}-notice`;let d=null;if(t)d=()=>f(\"span\",{class:`${u}-icon`},[Xl(t)]);else if(n){const p=JL[n];d=()=>f(p,{class:`${u}-icon ${u}-icon-${n}`},null)}return f(\"div\",{class:d?`${u}-with-icon`:\"\"},[d&&d(),f(\"div\",{class:`${u}-message`},[!o&&d?f(\"span\",{class:`${u}-message-single-line-auto-margin`},null):null,Xl(r)]),f(\"div\",{class:`${u}-description`},[Xl(o)]),l?f(\"span\",{class:`${u}-btn`},[Xl(l)]):null])},duration:a,closable:!0,onClose:e.onClose,onClick:e.onClick,key:e.key,style:e.style||{},class:e.class})})}const mr={open:eF,close(e){Object.keys(al).forEach(t=>Promise.resolve(al[t]).then(n=>{n.removeNotice(e)}))},config:ZL,destroy(){Object.keys(al).forEach(e=>{Promise.resolve(al[e]).then(t=>{t.destroy()}),delete al[e]})}},tF=[\"success\",\"info\",\"warning\",\"error\"];tF.forEach(e=>{mr[e]=t=>mr.open(h(h({},t),{type:e}))});mr.warn=mr.warning;mr.useNotification=Bw;const nF=`-ant-${Date.now()}-${Math.random()}`;function oF(e,t){const n={},o=(a,i)=>{let s=a.clone();return s=i?.(s)||s,s.toRgbString()},r=(a,i)=>{const s=new mt(a),c=Mc(s.toRgbString());n[`${i}-color`]=o(s),n[`${i}-color-disabled`]=c[1],n[`${i}-color-hover`]=c[4],n[`${i}-color-active`]=c[6],n[`${i}-color-outline`]=s.clone().setAlpha(.2).toRgbString(),n[`${i}-color-deprecated-bg`]=c[0],n[`${i}-color-deprecated-border`]=c[2]};if(t.primaryColor){r(t.primaryColor,\"primary\");const a=new mt(t.primaryColor),i=Mc(a.toRgbString());i.forEach((c,u)=>{n[`primary-${u+1}`]=c}),n[\"primary-color-deprecated-l-35\"]=o(a,c=>c.lighten(35)),n[\"primary-color-deprecated-l-20\"]=o(a,c=>c.lighten(20)),n[\"primary-color-deprecated-t-20\"]=o(a,c=>c.tint(20)),n[\"primary-color-deprecated-t-50\"]=o(a,c=>c.tint(50)),n[\"primary-color-deprecated-f-12\"]=o(a,c=>c.setAlpha(c.getAlpha()*.12));const s=new mt(i[0]);n[\"primary-color-active-deprecated-f-30\"]=o(s,c=>c.setAlpha(c.getAlpha()*.3)),n[\"primary-color-active-deprecated-d-02\"]=o(s,c=>c.darken(2))}return t.successColor&&r(t.successColor,\"success\"),t.warningColor&&r(t.warningColor,\"warning\"),t.errorColor&&r(t.errorColor,\"error\"),t.infoColor&&r(t.infoColor,\"info\"),`\n  :root {\n    ${Object.keys(n).map(a=>`--${e}-${a}: ${n[a]};`).join(`\n`)}\n  }\n  `.trim()}function rF(e,t){const n=oF(e,t);wn()&&vi(n,`${nF}-dynamic-theme`)}const lF=e=>{const[t,n]=br();return vp(I(()=>({theme:t.value,token:n.value,hashId:\"\",path:[\"ant-design-icons\",e.value]})),()=>[{[`.${e.value}`]:h(h({},Il()),{[`.${e.value} .${e.value}-icon`]:{display:\"block\"}})}])};function aF(e,t){const n=I(()=>e?.value||{}),o=I(()=>n.value.inherit===!1||!t?.value?IC:t.value);return I(()=>{if(!e?.value)return t?.value;const l=h({},o.value.components);return Object.keys(e.value.components||{}).forEach(a=>{l[a]=h(h({},l[a]),e.value.components[a])}),h(h(h({},o.value),n.value),{token:h(h({},o.value.token),n.value.token),components:l})})}var iF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const sF=\"ant\";function la(){return mn.prefixCls||sF}function Kw(){return mn.iconPrefixCls||Um}const Og=vt({}),mn=vt({});ze(()=>{h(mn,Og),mn.prefixCls=la(),mn.iconPrefixCls=Kw(),mn.getPrefixCls=(e,t)=>t||(e?`${mn.prefixCls}-${e}`:mn.prefixCls),mn.getRootPrefixCls=()=>mn.prefixCls?mn.prefixCls:la()});let $f;const cF=e=>{$f&&$f(),$f=ze(()=>{h(Og,vt(e)),h(mn,vt(e))}),e.theme&&rF(la(),e.theme)},uF=()=>({getPrefixCls:(e,t)=>t||(e?`${la()}-${e}`:la()),getIconPrefixCls:Kw,getRootPrefixCls:()=>mn.prefixCls?mn.prefixCls:la()}),Nr=ne({compatConfig:{MODE:3},name:\"AConfigProvider\",inheritAttrs:!1,props:aE(),setup(e,t){let{slots:n}=t;const o=Ru(),r=(T,k)=>{const{prefixCls:B=\"ant\"}=e;if(k)return k;const L=B||o.getPrefixCls(\"\");return T?`${L}-${T}`:L},l=I(()=>e.iconPrefixCls||o.iconPrefixCls.value||Um),a=I(()=>l.value!==o.iconPrefixCls.value),i=I(()=>{var T;return e.csp||((T=o.csp)===null||T===void 0?void 0:T.value)}),s=lF(l),c=aF(I(()=>e.theme),I(()=>{var T;return(T=o.theme)===null||T===void 0?void 0:T.value})),u=T=>(e.renderEmpty||n.renderEmpty||o.renderEmpty||PM)(T),d=I(()=>{var T,k;return(T=e.autoInsertSpaceInButton)!==null&&T!==void 0?T:(k=o.autoInsertSpaceInButton)===null||k===void 0?void 0:k.value}),p=I(()=>{var T;return e.locale||((T=o.locale)===null||T===void 0?void 0:T.value)});pe(p,()=>{Og.locale=p.value},{immediate:!0});const m=I(()=>{var T;return e.direction||((T=o.direction)===null||T===void 0?void 0:T.value)}),g=I(()=>{var T,k;return(T=e.space)!==null&&T!==void 0?T:(k=o.space)===null||k===void 0?void 0:k.value}),v=I(()=>{var T,k;return(T=e.virtual)!==null&&T!==void 0?T:(k=o.virtual)===null||k===void 0?void 0:k.value}),y=I(()=>{var T,k;return(T=e.dropdownMatchSelectWidth)!==null&&T!==void 0?T:(k=o.dropdownMatchSelectWidth)===null||k===void 0?void 0:k.value}),b=I(()=>{var T;return e.getTargetContainer!==void 0?e.getTargetContainer:(T=o.getTargetContainer)===null||T===void 0?void 0:T.value}),S=I(()=>{var T;return e.getPopupContainer!==void 0?e.getPopupContainer:(T=o.getPopupContainer)===null||T===void 0?void 0:T.value}),$=I(()=>{var T;return e.pageHeader!==void 0?e.pageHeader:(T=o.pageHeader)===null||T===void 0?void 0:T.value}),w=I(()=>{var T;return e.input!==void 0?e.input:(T=o.input)===null||T===void 0?void 0:T.value}),C=I(()=>{var T;return e.pagination!==void 0?e.pagination:(T=o.pagination)===null||T===void 0?void 0:T.value}),_=I(()=>{var T;return e.form!==void 0?e.form:(T=o.form)===null||T===void 0?void 0:T.value}),x=I(()=>{var T;return e.select!==void 0?e.select:(T=o.select)===null||T===void 0?void 0:T.value}),P=I(()=>e.componentSize),O=I(()=>e.componentDisabled),M=I(()=>{var T,k;return(T=e.wave)!==null&&T!==void 0?T:(k=o.wave)===null||k===void 0?void 0:k.value}),E={csp:i,autoInsertSpaceInButton:d,locale:p,direction:m,space:g,virtual:v,dropdownMatchSelectWidth:y,getPrefixCls:r,iconPrefixCls:l,theme:I(()=>{var T,k;return(T=c.value)!==null&&T!==void 0?T:(k=o.theme)===null||k===void 0?void 0:k.value}),renderEmpty:u,getTargetContainer:b,getPopupContainer:S,pageHeader:$,input:w,pagination:C,form:_,select:x,componentSize:P,componentDisabled:O,transformCellText:I(()=>e.transformCellText),wave:M},R=I(()=>{const T=c.value||{},{algorithm:k,token:B}=T,L=iF(T,[\"algorithm\",\"token\"]),N=k&&(!Array.isArray(k)||k.length>0)?pC(k):void 0;return h(h({},L),{theme:N,token:h(h({},Fu),B)})}),D=I(()=>{var T,k;let B={};return p.value&&(B=((T=p.value.Form)===null||T===void 0?void 0:T.defaultValidateMessages)||((k=En.Form)===null||k===void 0?void 0:k.defaultValidateMessages)||{}),e.form&&e.form.validateMessages&&(B=h(h({},B),e.form.validateMessages)),B});iE(E),rE({validateMessages:D}),MC(P),eC(O);const z=T=>{var k,B;let L=a.value?s((k=n.default)===null||k===void 0?void 0:k.call(n)):(B=n.default)===null||B===void 0?void 0:B.call(n);if(e.theme){const N=(function(){return L})();L=f(CM,{value:R.value},{default:()=>[N]})}return f($w,{locale:p.value||T,ANT_MARK__:qp},{default:()=>[L]})};return ze(()=>{m.value&&(vo.config({rtl:m.value===\"rtl\"}),mr.config({rtl:m.value===\"rtl\"}))}),()=>f(_l,{children:(T,k,B)=>z(B)},null)}});Nr.config=cF;Nr.install=function(e){e.component(Nr.name,Nr)};const dF=(e,t)=>{let{attrs:n,slots:o}=t;return f(_t,A(A({size:\"small\",type:\"primary\"},e),n),o)},Is=(e,t,n)=>{const o=EO(n);return{[`${e.componentCls}-${t}`]:{color:e[`color${n}`],background:e[`color${o}Bg`],borderColor:e[`color${o}Border`],[`&${e.componentCls}-borderless`]:{borderColor:\"transparent\"}}}},fF=e=>Bc(e,(t,n)=>{let{textColor:o,lightBorderColor:r,lightColor:l,darkColor:a}=n;return{[`${e.componentCls}-${t}`]:{color:o,background:l,borderColor:r,\"&-inverse\":{color:e.colorTextLightSolid,background:a,borderColor:a},[`&${e.componentCls}-borderless`]:{borderColor:\"transparent\"}}}}),pF=e=>{const{paddingXXS:t,lineWidth:n,tagPaddingHorizontal:o,componentCls:r}=e,l=o-n,a=t-n;return{[r]:h(h({},Ue(e)),{display:\"inline-block\",height:\"auto\",marginInlineEnd:e.marginXS,paddingInline:l,fontSize:e.tagFontSize,lineHeight:`${e.tagLineHeight}px`,whiteSpace:\"nowrap\",background:e.tagDefaultBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:\"start\",[`&${r}-rtl`]:{direction:\"rtl\"},\"&, a, a:hover\":{color:e.tagDefaultColor},[`${r}-close-icon`]:{marginInlineStart:a,color:e.colorTextDescription,fontSize:e.tagIconSize,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`,\"&:hover\":{color:e.colorTextHeading}},[`&${r}-has-color`]:{borderColor:\"transparent\",[`&, a, a:hover, ${e.iconCls}-close, ${e.iconCls}-close:hover`]:{color:e.colorTextLightSolid}},\"&-checkable\":{backgroundColor:\"transparent\",borderColor:\"transparent\",cursor:\"pointer\",[`&:not(${r}-checkable-checked):hover`]:{color:e.colorPrimary,backgroundColor:e.colorFillSecondary},\"&:active, &-checked\":{color:e.colorTextLightSolid},\"&-checked\":{backgroundColor:e.colorPrimary,\"&:hover\":{backgroundColor:e.colorPrimaryHover}},\"&:active\":{backgroundColor:e.colorPrimaryActive}},\"&-hidden\":{display:\"none\"},[`> ${e.iconCls} + span, > span + ${e.iconCls}`]:{marginInlineStart:l}}),[`${r}-borderless`]:{borderColor:\"transparent\",background:e.tagBorderlessBg}}},Gw=Ge(\"Tag\",e=>{const{fontSize:t,lineHeight:n,lineWidth:o,fontSizeIcon:r}=e,l=Math.round(t*n),a=e.fontSizeSM,i=l-o*2,s=e.colorFillAlter,c=e.colorText,u=Le(e,{tagFontSize:a,tagLineHeight:i,tagDefaultBg:s,tagDefaultColor:c,tagIconSize:r-2*o,tagPaddingHorizontal:8,tagBorderlessBg:e.colorFillTertiary});return[pF(u),fF(u),Is(u,\"success\",\"Success\"),Is(u,\"processing\",\"Info\"),Is(u,\"error\",\"Error\"),Is(u,\"warning\",\"Warning\")]}),mF=()=>({prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},\"onUpdate:checked\":Function}),mu=ne({compatConfig:{MODE:3},name:\"ACheckableTag\",inheritAttrs:!1,props:mF(),setup(e,t){let{slots:n,emit:o,attrs:r}=t;const{prefixCls:l}=Pe(\"tag\",e),[a,i]=Gw(l),s=u=>{const{checked:d}=e;o(\"update:checked\",!d),o(\"change\",!d),o(\"click\",u)},c=I(()=>le(l.value,i.value,{[`${l.value}-checkable`]:!0,[`${l.value}-checkable-checked`]:e.checked}));return()=>{var u;return a(f(\"span\",A(A({},r),{},{class:[c.value,r.class],onClick:s}),[(u=n.default)===null||u===void 0?void 0:u.call(n)]))}}}),vF=()=>({prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:W.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},onClick:yl(),\"onUpdate:visible\":Function,icon:W.any,bordered:{type:Boolean,default:!0}}),aa=ne({compatConfig:{MODE:3},name:\"ATag\",inheritAttrs:!1,props:vF(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:r}=t;const{prefixCls:l,direction:a}=Pe(\"tag\",e),[i,s]=Gw(l),c=ee(!0);ze(()=>{e.visible!==void 0&&(c.value=e.visible)});const u=g=>{g.stopPropagation(),o(\"update:visible\",!1),o(\"close\",g),!g.defaultPrevented&&e.visible===void 0&&(c.value=!1)},d=I(()=>td(e.color)||kD(e.color)),p=I(()=>le(l.value,s.value,{[`${l.value}-${e.color}`]:d.value,[`${l.value}-has-color`]:e.color&&!d.value,[`${l.value}-hidden`]:!c.value,[`${l.value}-rtl`]:a.value===\"rtl\",[`${l.value}-borderless`]:!e.bordered})),m=g=>{o(\"click\",g)};return()=>{var g,v,y;const{icon:b=(g=n.icon)===null||g===void 0?void 0:g.call(n),color:S,closeIcon:$=(v=n.closeIcon)===null||v===void 0?void 0:v.call(n),closable:w=!1}=e,C=()=>w?$?f(\"span\",{class:`${l.value}-close-icon`,onClick:u},[$]):f(Wn,{class:`${l.value}-close-icon`,onClick:u},null):null,_={backgroundColor:S&&!d.value?S:void 0},x=b||null,P=(y=n.default)===null||y===void 0?void 0:y.call(n),O=x?f(Ve,null,[x,f(\"span\",null,[P])]):P,M=e.onClick!==void 0,E=f(\"span\",A(A({},r),{},{onClick:m,class:[p.value,r.class],style:[_,r.style]}),[O,C()]);return i(M?f(Nv,null,{default:()=>[E]}):E)}}});aa.CheckableTag=mu;aa.install=function(e){return e.component(aa.name,aa),e.component(mu.name,mu),e};function gF(e,t){let{slots:n,attrs:o}=t;return f(aa,A(A({color:\"blue\"},e),o),n)}function hF(e,t,n){return n!==void 0?n:t===\"year\"&&e.lang.yearPlaceholder?e.lang.yearPlaceholder:t===\"quarter\"&&e.lang.quarterPlaceholder?e.lang.quarterPlaceholder:t===\"month\"&&e.lang.monthPlaceholder?e.lang.monthPlaceholder:t===\"week\"&&e.lang.weekPlaceholder?e.lang.weekPlaceholder:t===\"time\"&&e.timePickerLocale.placeholder?e.timePickerLocale.placeholder:e.lang.placeholder}function bF(e,t,n){return n!==void 0?n:t===\"year\"&&e.lang.yearPlaceholder?e.lang.rangeYearPlaceholder:t===\"month\"&&e.lang.monthPlaceholder?e.lang.rangeMonthPlaceholder:t===\"week\"&&e.lang.weekPlaceholder?e.lang.rangeWeekPlaceholder:t===\"time\"&&e.timePickerLocale.placeholder?e.timePickerLocale.rangePlaceholder:e.lang.rangePlaceholder}function Xw(e,t){const n={adjustX:1,adjustY:1};switch(t){case\"bottomLeft\":return{points:[\"tl\",\"bl\"],offset:[0,4],overflow:n};case\"bottomRight\":return{points:[\"tr\",\"br\"],offset:[0,4],overflow:n};case\"topLeft\":return{points:[\"bl\",\"tl\"],offset:[0,-4],overflow:n};case\"topRight\":return{points:[\"br\",\"tr\"],offset:[0,-4],overflow:n};default:return{points:e===\"rtl\"?[\"tr\",\"br\"]:[\"tl\",\"bl\"],offset:[0,4],overflow:n}}}function vu(){return{id:String,dropdownClassName:String,popupClassName:String,popupStyle:De(),transitionName:String,placeholder:String,allowClear:ye(),autofocus:ye(),disabled:ye(),tabindex:Number,open:ye(),defaultOpen:ye(),inputReadOnly:ye(),format:Fe([String,Function,Array]),getPopupContainer:de(),panelRender:de(),onChange:de(),\"onUpdate:value\":de(),onOk:de(),onOpenChange:de(),\"onUpdate:open\":de(),onFocus:de(),onBlur:de(),onMousedown:de(),onMouseup:de(),onMouseenter:de(),onMouseleave:de(),onClick:de(),onContextmenu:de(),onKeydown:de(),role:String,name:String,autocomplete:String,direction:ke(),showToday:ye(),showTime:Fe([Boolean,Object]),locale:De(),size:ke(),bordered:ye(),dateRender:de(),disabledDate:de(),mode:ke(),picker:ke(),valueFormat:String,placement:ke(),status:ke(),disabledHours:de(),disabledMinutes:de(),disabledSeconds:de()}}function Uw(){return{defaultPickerValue:Fe([Object,String]),defaultValue:Fe([Object,String]),value:Fe([Object,String]),presets:ct(),disabledTime:de(),renderExtraFooter:de(),showNow:ye(),monthCellRender:de(),monthCellContentRender:de()}}function Yw(){return{allowEmpty:ct(),dateRender:de(),defaultPickerValue:ct(),defaultValue:ct(),value:ct(),presets:ct(),disabledTime:de(),disabled:Fe([Boolean,Array]),renderExtraFooter:de(),separator:{type:String},showTime:Fe([Boolean,Object]),ranges:De(),placeholder:ct(),mode:ct(),onChange:de(),\"onUpdate:value\":de(),onCalendarChange:de(),onPanelChange:de(),onOk:de()}}var yF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function SF(e,t){function n(c,u){const d=h(h(h({},vu()),Uw()),t);return ne({compatConfig:{MODE:3},name:u,inheritAttrs:!1,props:d,slots:Object,setup(p,m){let{slots:g,expose:v,attrs:y,emit:b}=m;const S=p,$=Jt(),w=un.useInject(),{prefixCls:C,direction:_,getPopupContainer:x,size:P,rootPrefixCls:O,disabled:M}=Pe(\"picker\",S),{compactSize:E,compactItemClassnames:R}=Xr(C,_),D=I(()=>E.value||P.value),[z,T]=Mx(C),k=J();v({focus:()=>{var oe;(oe=k.value)===null||oe===void 0||oe.focus()},blur:()=>{var oe;(oe=k.value)===null||oe===void 0||oe.blur()}});const B=oe=>S.valueFormat?e.toString(oe,S.valueFormat):oe,L=(oe,re)=>{const Y=B(oe);b(\"update:value\",Y),b(\"change\",Y,re),$.onFieldChange()},N=oe=>{b(\"update:open\",oe),b(\"openChange\",oe)},F=oe=>{b(\"focus\",oe)},j=oe=>{b(\"blur\",oe),$.onFieldBlur()},H=(oe,re)=>{const Y=B(oe);b(\"panelChange\",Y,re)},K=oe=>{const re=B(oe);b(\"ok\",re)},[G]=yo(\"DatePicker\",pi),V=I(()=>S.value?S.valueFormat?e.toDate(S.value,S.valueFormat):S.value:S.value===\"\"?void 0:S.value),q=I(()=>S.defaultValue?S.valueFormat?e.toDate(S.defaultValue,S.valueFormat):S.defaultValue:S.defaultValue===\"\"?void 0:S.defaultValue),Z=I(()=>S.defaultPickerValue?S.valueFormat?e.toDate(S.defaultPickerValue,S.valueFormat):S.defaultPickerValue:S.defaultPickerValue===\"\"?void 0:S.defaultPickerValue);return()=>{var oe,re,Y,Q,ce,ue;const be=h(h({},G.value),S.locale),Ce=h(h({},S),y),{bordered:ge=!0,placeholder:Se,suffixIcon:X=(oe=g.suffixIcon)===null||oe===void 0?void 0:oe.call(g),showToday:U=!0,transitionName:ie,allowClear:ve=!0,dateRender:me=g.dateRender,renderExtraFooter:he=g.renderExtraFooter,monthCellRender:se=g.monthCellRender||S.monthCellContentRender||g.monthCellContentRender,clearIcon:te=(re=g.clearIcon)===null||re===void 0?void 0:re.call(g),id:ae=$.id.value}=Ce,fe=yF(Ce,[\"bordered\",\"placeholder\",\"suffixIcon\",\"showToday\",\"transitionName\",\"allowClear\",\"dateRender\",\"renderExtraFooter\",\"monthCellRender\",\"clearIcon\",\"id\"]),Ie=Ce.showTime===\"\"?!0:Ce.showTime,{format:Te}=Ce;let Re={};c&&(Re.picker=c);const $e=c||Ce.picker||\"date\";Re=h(h(h({},Re),Ie?gu(h({format:Te,picker:$e},typeof Ie==\"object\"?Ie:{})):{}),$e===\"time\"?gu(h(h({format:Te},fe),{picker:$e})):{});const xe=C.value,_e=f(Ve,null,[X||(c===\"time\"?f(t$,null,null):f(n$,null,null)),w.hasFeedback&&w.feedbackIcon]);return z(f(wk,A(A(A({monthCellRender:se,dateRender:me,renderExtraFooter:he,ref:k,placeholder:hF(be,$e,Se),suffixIcon:_e,dropdownAlign:Xw(_.value,S.placement),clearIcon:te||f(jn,null,null),allowClear:ve,transitionName:ie||`${O.value}-slide-up`},fe),Re),{},{id:ae,picker:$e,value:V.value,defaultValue:q.value,defaultPickerValue:Z.value,showToday:U,locale:be.lang,class:le({[`${xe}-${D.value}`]:D.value,[`${xe}-borderless`]:!ge},Cn(xe,Do(w.status,S.status),w.hasFeedback),y.class,T.value,R.value),disabled:M.value,prefixCls:xe,getPopupContainer:y.getCalendarContainer||x.value,generateConfig:e,prevIcon:((Y=g.prevIcon)===null||Y===void 0?void 0:Y.call(g))||f(\"span\",{class:`${xe}-prev-icon`},null),nextIcon:((Q=g.nextIcon)===null||Q===void 0?void 0:Q.call(g))||f(\"span\",{class:`${xe}-next-icon`},null),superPrevIcon:((ce=g.superPrevIcon)===null||ce===void 0?void 0:ce.call(g))||f(\"span\",{class:`${xe}-super-prev-icon`},null),superNextIcon:((ue=g.superNextIcon)===null||ue===void 0?void 0:ue.call(g))||f(\"span\",{class:`${xe}-super-next-icon`},null),components:qw,direction:_.value,dropdownClassName:le(T.value,S.popupClassName,S.dropdownClassName),onChange:L,onOpenChange:N,onFocus:F,onBlur:j,onPanelChange:H,onOk:K}),null))}}})}const o=n(void 0,\"ADatePicker\"),r=n(\"week\",\"AWeekPicker\"),l=n(\"month\",\"AMonthPicker\"),a=n(\"year\",\"AYearPicker\"),i=n(\"time\",\"TimePicker\"),s=n(\"quarter\",\"AQuarterPicker\");return{DatePicker:o,WeekPicker:r,MonthPicker:l,YearPicker:a,TimePicker:i,QuarterPicker:s}}var $F=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function CF(e,t){return ne({compatConfig:{MODE:3},name:\"ARangePicker\",inheritAttrs:!1,props:h(h(h({},vu()),Yw()),t),slots:Object,setup(o,r){let{expose:l,slots:a,attrs:i,emit:s}=r;const c=o,u=Jt(),d=un.useInject(),{prefixCls:p,direction:m,getPopupContainer:g,size:v,rootPrefixCls:y,disabled:b}=Pe(\"picker\",c),{compactSize:S,compactItemClassnames:$}=Xr(p,m),w=I(()=>S.value||v.value),[C,_]=Mx(p),x=J();l({focus:()=>{var F;(F=x.value)===null||F===void 0||F.focus()},blur:()=>{var F;(F=x.value)===null||F===void 0||F.blur()}});const P=F=>c.valueFormat?e.toString(F,c.valueFormat):F,O=(F,j)=>{const H=P(F);s(\"update:value\",H),s(\"change\",H,j),u.onFieldChange()},M=F=>{s(\"update:open\",F),s(\"openChange\",F)},E=F=>{s(\"focus\",F)},R=F=>{s(\"blur\",F),u.onFieldBlur()},D=(F,j)=>{const H=P(F);s(\"panelChange\",H,j)},z=F=>{const j=P(F);s(\"ok\",j)},T=(F,j,H)=>{const K=P(F);s(\"calendarChange\",K,j,H)},[k]=yo(\"DatePicker\",pi),B=I(()=>c.value&&c.valueFormat?e.toDate(c.value,c.valueFormat):c.value),L=I(()=>c.defaultValue&&c.valueFormat?e.toDate(c.defaultValue,c.valueFormat):c.defaultValue),N=I(()=>c.defaultPickerValue&&c.valueFormat?e.toDate(c.defaultPickerValue,c.valueFormat):c.defaultPickerValue);return()=>{var F,j,H,K,G,V,q;const Z=h(h({},k.value),c.locale),oe=h(h({},c),i),{prefixCls:re,bordered:Y=!0,placeholder:Q,suffixIcon:ce=(F=a.suffixIcon)===null||F===void 0?void 0:F.call(a),picker:ue=\"date\",transitionName:be,allowClear:Ce=!0,dateRender:ge=a.dateRender,renderExtraFooter:Se=a.renderExtraFooter,separator:X=(j=a.separator)===null||j===void 0?void 0:j.call(a),clearIcon:U=(H=a.clearIcon)===null||H===void 0?void 0:H.call(a),id:ie=u.id.value}=oe,ve=$F(oe,[\"prefixCls\",\"bordered\",\"placeholder\",\"suffixIcon\",\"picker\",\"transitionName\",\"allowClear\",\"dateRender\",\"renderExtraFooter\",\"separator\",\"clearIcon\",\"id\"]);delete ve[\"onUpdate:value\"],delete ve[\"onUpdate:open\"];const{format:me,showTime:he}=oe;let se={};se=h(h(h({},se),he?gu(h({format:me,picker:ue},he)):{}),ue===\"time\"?gu(h(h({format:me},ot(ve,[\"disabledTime\"])),{picker:ue})):{});const te=p.value,ae=f(Ve,null,[ce||(ue===\"time\"?f(t$,null,null):f(n$,null,null)),d.hasFeedback&&d.feedbackIcon]);return C(f(Rk,A(A(A({dateRender:ge,renderExtraFooter:Se,separator:X||f(\"span\",{\"aria-label\":\"to\",class:`${te}-separator`},[f(RI,null,null)]),ref:x,dropdownAlign:Xw(m.value,c.placement),placeholder:bF(Z,ue,Q),suffixIcon:ae,clearIcon:U||f(jn,null,null),allowClear:Ce,transitionName:be||`${y.value}-slide-up`},ve),se),{},{disabled:b.value,id:ie,value:B.value,defaultValue:L.value,defaultPickerValue:N.value,picker:ue,class:le({[`${te}-${w.value}`]:w.value,[`${te}-borderless`]:!Y},Cn(te,Do(d.status,c.status),d.hasFeedback),i.class,_.value,$.value),locale:Z.lang,prefixCls:te,getPopupContainer:i.getCalendarContainer||g.value,generateConfig:e,prevIcon:((K=a.prevIcon)===null||K===void 0?void 0:K.call(a))||f(\"span\",{class:`${te}-prev-icon`},null),nextIcon:((G=a.nextIcon)===null||G===void 0?void 0:G.call(a))||f(\"span\",{class:`${te}-next-icon`},null),superPrevIcon:((V=a.superPrevIcon)===null||V===void 0?void 0:V.call(a))||f(\"span\",{class:`${te}-super-prev-icon`},null),superNextIcon:((q=a.superNextIcon)===null||q===void 0?void 0:q.call(a))||f(\"span\",{class:`${te}-super-next-icon`},null),components:qw,direction:m.value,dropdownClassName:le(_.value,c.popupClassName,c.dropdownClassName),onChange:O,onOpenChange:M,onFocus:E,onBlur:R,onPanelChange:D,onOk:z,onCalendarChange:T}),null))}}})}const qw={button:dF,rangeItem:gF};function xF(e){return e?Array.isArray(e)?e:[e]:[]}function gu(e){const{format:t,picker:n,showHour:o,showMinute:r,showSecond:l,use12Hours:a}=e,i=xF(t)[0],s=h({},e);return i&&typeof i==\"string\"&&(!i.includes(\"s\")&&l===void 0&&(s.showSecond=!1),!i.includes(\"m\")&&r===void 0&&(s.showMinute=!1),!i.includes(\"H\")&&!i.includes(\"h\")&&o===void 0&&(s.showHour=!1),(i.includes(\"a\")||i.includes(\"A\"))&&a===void 0&&(s.use12Hours=!0)),n===\"time\"?s:(typeof i==\"function\"&&delete s.format,{showTime:s})}function Zw(e,t){const{DatePicker:n,WeekPicker:o,MonthPicker:r,YearPicker:l,TimePicker:a,QuarterPicker:i}=SF(e,t),s=CF(e,t);return{DatePicker:n,WeekPicker:o,MonthPicker:r,YearPicker:l,TimePicker:a,QuarterPicker:i,RangePicker:s}}const{DatePicker:Cf,WeekPicker:sc,MonthPicker:cc,YearPicker:wF,TimePicker:_F,QuarterPicker:uc,RangePicker:dc}=Zw(Wv),IF=h(Cf,{WeekPicker:sc,MonthPicker:cc,YearPicker:wF,RangePicker:dc,TimePicker:_F,QuarterPicker:uc,install:e=>(e.component(Cf.name,Cf),e.component(dc.name,dc),e.component(cc.name,cc),e.component(sc.name,sc),e.component(uc.name,uc),e)});function Ps(e){return e!=null}const xf=e=>{const{itemPrefixCls:t,component:n,span:o,labelStyle:r,contentStyle:l,bordered:a,label:i,content:s,colon:c}=e,u=n;return a?f(u,{class:[{[`${t}-item-label`]:Ps(i),[`${t}-item-content`]:Ps(s)}],colSpan:o},{default:()=>[Ps(i)&&f(\"span\",{style:r},[i]),Ps(s)&&f(\"span\",{style:l},[s])]}):f(u,{class:[`${t}-item`],colSpan:o},{default:()=>[f(\"div\",{class:`${t}-item-container`},[(i||i===0)&&f(\"span\",{class:[`${t}-item-label`,{[`${t}-item-no-colon`]:!c}],style:r},[i]),(s||s===0)&&f(\"span\",{class:`${t}-item-content`,style:l},[s])])]})},PF=e=>{const t=(c,u,d)=>{let{colon:p,prefixCls:m,bordered:g}=u,{component:v,type:y,showLabel:b,showContent:S,labelStyle:$,contentStyle:w}=d;return c.map((C,_)=>{var x,P;const O=C.props||{},{prefixCls:M=m,span:E=1,labelStyle:R=O[\"label-style\"],contentStyle:D=O[\"content-style\"],label:z=(P=(x=C.children)===null||x===void 0?void 0:x.label)===null||P===void 0?void 0:P.call(x)}=O,T=Du(C),k=JO(C),B=G$(C),{key:L}=C;return typeof v==\"string\"?f(xf,{key:`${y}-${String(L)||_}`,class:k,style:B,labelStyle:h(h({},$),R),contentStyle:h(h({},w),D),span:E,colon:p,component:v,itemPrefixCls:M,bordered:g,label:b?z:null,content:S?T:null},null):[f(xf,{key:`label-${String(L)||_}`,class:k,style:h(h(h({},$),B),R),span:1,colon:p,component:v[0],itemPrefixCls:M,bordered:g,label:z},null),f(xf,{key:`content-${String(L)||_}`,class:k,style:h(h(h({},w),B),D),span:E*2-1,component:v[1],itemPrefixCls:M,bordered:g,content:T},null)]})},{prefixCls:n,vertical:o,row:r,index:l,bordered:a}=e,{labelStyle:i,contentStyle:s}=Je(e2,{labelStyle:J({}),contentStyle:J({})});return o?f(Ve,null,[f(\"tr\",{key:`label-${l}`,class:`${n}-row`},[t(r,e,{component:\"th\",type:\"label\",showLabel:!0,labelStyle:i.value,contentStyle:s.value})]),f(\"tr\",{key:`content-${l}`,class:`${n}-row`},[t(r,e,{component:\"td\",type:\"content\",showContent:!0,labelStyle:i.value,contentStyle:s.value})])]):f(\"tr\",{key:l,class:`${n}-row`},[t(r,e,{component:a?[\"th\",\"td\"]:\"td\",type:\"item\",showLabel:!0,showContent:!0,labelStyle:i.value,contentStyle:s.value})])},TF=e=>{const{componentCls:t,descriptionsSmallPadding:n,descriptionsDefaultPadding:o,descriptionsMiddlePadding:r,descriptionsBg:l}=e;return{[`&${t}-bordered`]:{[`${t}-view`]:{border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"> table\":{tableLayout:\"auto\",borderCollapse:\"collapse\"}},[`${t}-item-label, ${t}-item-content`]:{padding:o,borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"&:last-child\":{borderInlineEnd:\"none\"}},[`${t}-item-label`]:{backgroundColor:l,\"&::after\":{display:\"none\"}},[`${t}-row`]:{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"&:last-child\":{borderBottom:\"none\"}},[`&${t}-middle`]:{[`${t}-item-label, ${t}-item-content`]:{padding:r}},[`&${t}-small`]:{[`${t}-item-label, ${t}-item-content`]:{padding:n}}}}},OF=e=>{const{componentCls:t,descriptionsExtraColor:n,descriptionItemPaddingBottom:o,descriptionsItemLabelColonMarginRight:r,descriptionsItemLabelColonMarginLeft:l,descriptionsTitleMarginBottom:a}=e;return{[t]:h(h(h({},Ue(e)),TF(e)),{\"&-rtl\":{direction:\"rtl\"},[`${t}-header`]:{display:\"flex\",alignItems:\"center\",marginBottom:a},[`${t}-title`]:h(h({},Gt),{flex:\"auto\",color:e.colorText,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}),[`${t}-extra`]:{marginInlineStart:\"auto\",color:n,fontSize:e.fontSize},[`${t}-view`]:{width:\"100%\",borderRadius:e.borderRadiusLG,table:{width:\"100%\",tableLayout:\"fixed\"}},[`${t}-row`]:{\"> th, > td\":{paddingBottom:o},\"&:last-child\":{borderBottom:\"none\"}},[`${t}-item-label`]:{color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:\"start\",\"&::after\":{content:'\":\"',position:\"relative\",top:-.5,marginInline:`${l}px ${r}px`},[`&${t}-item-no-colon::after`]:{content:'\"\"'}},[`${t}-item-no-label`]:{\"&::after\":{margin:0,content:'\"\"'}},[`${t}-item-content`]:{display:\"table-cell\",flex:1,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,wordBreak:\"break-word\",overflowWrap:\"break-word\"},[`${t}-item`]:{paddingBottom:0,verticalAlign:\"top\",\"&-container\":{display:\"flex\",[`${t}-item-label`]:{display:\"inline-flex\",alignItems:\"baseline\"},[`${t}-item-content`]:{display:\"inline-flex\",alignItems:\"baseline\"}}},\"&-middle\":{[`${t}-row`]:{\"> th, > td\":{paddingBottom:e.paddingSM}}},\"&-small\":{[`${t}-row`]:{\"> th, > td\":{paddingBottom:e.paddingXS}}}})}},EF=Ge(\"Descriptions\",e=>{const t=e.colorFillAlter,n=e.fontSizeSM*e.lineHeightSM,o=e.colorText,r=`${e.paddingXS}px ${e.padding}px`,l=`${e.padding}px ${e.paddingLG}px`,a=`${e.paddingSM}px ${e.paddingLG}px`,i=e.padding,s=e.marginXS,c=e.marginXXS/2,u=Le(e,{descriptionsBg:t,descriptionsTitleMarginBottom:n,descriptionsExtraColor:o,descriptionItemPaddingBottom:i,descriptionsSmallPadding:r,descriptionsDefaultPadding:l,descriptionsMiddlePadding:a,descriptionsItemLabelColonMarginRight:s,descriptionsItemLabelColonMarginLeft:c});return[OF(u)]});W.any;const MF=()=>({prefixCls:String,label:W.any,labelStyle:{type:Object,default:void 0},contentStyle:{type:Object,default:void 0},span:{type:Number,default:1}}),Qw=ne({compatConfig:{MODE:3},name:\"ADescriptionsItem\",props:MF(),setup(e,t){let{slots:n}=t;return()=>{var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}}}),Jw={xxxl:3,xxl:3,xl:3,lg:3,md:3,sm:2,xs:1};function AF(e,t){if(typeof e==\"number\")return e;if(typeof e==\"object\")for(let n=0;n<ar.length;n++){const o=ar[n];if(t[o]&&e[o]!==void 0)return e[o]||Jw[o]}return 3}function yy(e,t,n){let o=e;return(n===void 0||n>t)&&(o=dt(e,{span:t})),o}function DF(e,t){const n=$t(e),o=[];let r=[],l=t;return n.forEach((a,i)=>{var s;const c=(s=a.props)===null||s===void 0?void 0:s.span,u=c||1;if(i===n.length-1){r.push(yy(a,l,c)),o.push(r);return}u<l?(l-=u,r.push(a)):(r.push(yy(a,l,u)),o.push(r),l=t,r=[])}),o}const RF=()=>({prefixCls:String,bordered:{type:Boolean,default:void 0},size:{type:String,default:\"default\"},title:W.any,extra:W.any,column:{type:[Number,Object],default:()=>Jw},layout:String,colon:{type:Boolean,default:void 0},labelStyle:{type:Object,default:void 0},contentStyle:{type:Object,default:void 0}}),e2=Symbol(\"descriptionsContext\"),Gl=ne({compatConfig:{MODE:3},name:\"ADescriptions\",inheritAttrs:!1,props:RF(),slots:Object,Item:Qw,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"descriptions\",e);let a;const i=J({}),[s,c]=EF(r),u=Ev();wm(()=>{a=u.value.subscribe(p=>{typeof e.column==\"object\"&&(i.value=p)})}),et(()=>{u.value.unsubscribe(a)}),Qe(e2,{labelStyle:We(e,\"labelStyle\"),contentStyle:We(e,\"contentStyle\")});const d=I(()=>AF(e.column,i.value));return()=>{var p,m,g;const{size:v,bordered:y=!1,layout:b=\"horizontal\",colon:S=!0,title:$=(p=n.title)===null||p===void 0?void 0:p.call(n),extra:w=(m=n.extra)===null||m===void 0?void 0:m.call(n)}=e,C=(g=n.default)===null||g===void 0?void 0:g.call(n),_=DF(C,d.value);return s(f(\"div\",A(A({},o),{},{class:[r.value,{[`${r.value}-${v}`]:v!==\"default\",[`${r.value}-bordered`]:!!y,[`${r.value}-rtl`]:l.value===\"rtl\"},o.class,c.value]}),[($||w)&&f(\"div\",{class:`${r.value}-header`},[$&&f(\"div\",{class:`${r.value}-title`},[$]),w&&f(\"div\",{class:`${r.value}-extra`},[w])]),f(\"div\",{class:`${r.value}-view`},[f(\"table\",null,[f(\"tbody\",null,[_.map((x,P)=>f(PF,{key:P,index:P,colon:S,prefixCls:r.value,vertical:b===\"vertical\",bordered:y,row:x},null))])])])]))}}});Gl.install=function(e){return e.component(Gl.name,Gl),e.component(Gl.Item.name,Gl.Item),e};const kF=e=>{const{componentCls:t,sizePaddingEdgeHorizontal:n,colorSplit:o,lineWidth:r}=e;return{[t]:h(h({},Ue(e)),{borderBlockStart:`${r}px solid ${o}`,\"&-vertical\":{position:\"relative\",top:\"-0.06em\",display:\"inline-block\",height:\"0.9em\",margin:`0 ${e.dividerVerticalGutterMargin}px`,verticalAlign:\"middle\",borderTop:0,borderInlineStart:`${r}px solid ${o}`},\"&-horizontal\":{display:\"flex\",clear:\"both\",width:\"100%\",minWidth:\"100%\",margin:`${e.dividerHorizontalGutterMargin}px 0`},[`&-horizontal${t}-with-text`]:{display:\"flex\",alignItems:\"center\",margin:`${e.dividerHorizontalWithTextGutterMargin}px 0`,color:e.colorTextHeading,fontWeight:500,fontSize:e.fontSizeLG,whiteSpace:\"nowrap\",textAlign:\"center\",borderBlockStart:`0 ${o}`,\"&::before, &::after\":{position:\"relative\",width:\"50%\",borderBlockStart:`${r}px solid transparent`,borderBlockStartColor:\"inherit\",borderBlockEnd:0,transform:\"translateY(50%)\",content:\"''\"}},[`&-horizontal${t}-with-text-left`]:{\"&::before\":{width:\"5%\"},\"&::after\":{width:\"95%\"}},[`&-horizontal${t}-with-text-right`]:{\"&::before\":{width:\"95%\"},\"&::after\":{width:\"5%\"}},[`${t}-inner-text`]:{display:\"inline-block\",padding:\"0 1em\"},\"&-dashed\":{background:\"none\",borderColor:o,borderStyle:\"dashed\",borderWidth:`${r}px 0 0`},[`&-horizontal${t}-with-text${t}-dashed`]:{\"&::before, &::after\":{borderStyle:\"dashed none none\"}},[`&-vertical${t}-dashed`]:{borderInlineStartWidth:r,borderInlineEnd:0,borderBlockStart:0,borderBlockEnd:0},[`&-plain${t}-with-text`]:{color:e.colorText,fontWeight:\"normal\",fontSize:e.fontSize},[`&-horizontal${t}-with-text-left${t}-no-default-orientation-margin-left`]:{\"&::before\":{width:0},\"&::after\":{width:\"100%\"},[`${t}-inner-text`]:{paddingInlineStart:n}},[`&-horizontal${t}-with-text-right${t}-no-default-orientation-margin-right`]:{\"&::before\":{width:\"100%\"},\"&::after\":{width:0},[`${t}-inner-text`]:{paddingInlineEnd:n}}})}},NF=Ge(\"Divider\",e=>{const t=Le(e,{dividerVerticalGutterMargin:e.marginXS,dividerHorizontalWithTextGutterMargin:e.margin,dividerHorizontalGutterMargin:e.marginLG});return[kF(t)]},{sizePaddingEdgeHorizontal:0}),BF=()=>({prefixCls:String,type:{type:String,default:\"horizontal\"},dashed:{type:Boolean,default:!1},orientation:{type:String,default:\"center\"},plain:{type:Boolean,default:!1},orientationMargin:[String,Number]}),LF=ne({name:\"ADivider\",inheritAttrs:!1,compatConfig:{MODE:3},props:BF(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"divider\",e),[a,i]=NF(r),s=I(()=>e.orientation===\"left\"&&e.orientationMargin!=null),c=I(()=>e.orientation===\"right\"&&e.orientationMargin!=null),u=I(()=>{const{type:m,dashed:g,plain:v}=e,y=r.value;return{[y]:!0,[i.value]:!!i.value,[`${y}-${m}`]:!0,[`${y}-dashed`]:!!g,[`${y}-plain`]:!!v,[`${y}-rtl`]:l.value===\"rtl\",[`${y}-no-default-orientation-margin-left`]:s.value,[`${y}-no-default-orientation-margin-right`]:c.value}}),d=I(()=>{const m=typeof e.orientationMargin==\"number\"?`${e.orientationMargin}px`:e.orientationMargin;return h(h({},s.value&&{marginLeft:m}),c.value&&{marginRight:m})}),p=I(()=>e.orientation.length>0?\"-\"+e.orientation:e.orientation);return()=>{var m;const g=$t((m=n.default)===null||m===void 0?void 0:m.call(n));return a(f(\"div\",A(A({},o),{},{class:[u.value,g.length?`${r.value}-with-text ${r.value}-with-text${p.value}`:\"\",o.class],role:\"separator\"}),[g.length?f(\"span\",{class:`${r.value}-inner-text`,style:d.value},[g]):null]))}}}),FF=Dt(LF);po.Button=Ci;po.install=function(e){return e.component(po.name,po),e.component(Ci.name,Ci),e};const t2=()=>({prefixCls:String,width:W.oneOfType([W.string,W.number]),height:W.oneOfType([W.string,W.number]),style:{type:Object,default:void 0},class:String,rootClassName:String,rootStyle:De(),placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:ct(),autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},motion:de(),maskMotion:De()}),zF=()=>h(h({},t2()),{forceRender:{type:Boolean,default:void 0},getContainer:W.oneOfType([W.string,W.func,W.object,W.looseBool])}),HF=()=>h(h({},t2()),{getContainer:Function,getOpenCount:Function,scrollLocker:W.any,inline:Boolean});function jF(e){return Array.isArray(e)?e:[e]}const WF={transition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\"};Object.keys(WF).filter(e=>{if(typeof document>\"u\")return!1;const t=document.getElementsByTagName(\"html\")[0];return e in(t?t.style:{})})[0];const VF=!(typeof window<\"u\"&&window.document&&window.document.createElement);var KF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Sy=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:HF(),emits:[\"close\",\"handleClick\",\"change\"],setup(e,t){let{emit:n,slots:o}=t;const r=ee(),l=ee(),a=ee(),i=ee(),s=ee();let c=[];`${Number((Date.now()+Math.random()).toString().replace(\".\",Math.round(Math.random()*9).toString())).toString(16)}`,Ne(()=>{it(()=>{var b;const{open:S,getContainer:$,showMask:w,autofocus:C}=e,_=$?.();g(e),S&&(_&&(_.parentNode,document.body),it(()=>{C&&u()}),w&&((b=e.scrollLocker)===null||b===void 0||b.lock()))})}),pe(()=>e.level,()=>{g(e)},{flush:\"post\"}),pe(()=>e.open,()=>{const{open:b,getContainer:S,scrollLocker:$,showMask:w,autofocus:C}=e,_=S?.();_&&(_.parentNode,document.body),b?(C&&u(),w&&$?.lock()):$?.unLock()},{flush:\"post\"}),Mn(()=>{var b;const{open:S}=e;S&&(document.body.style.touchAction=\"\"),(b=e.scrollLocker)===null||b===void 0||b.unLock()}),pe(()=>e.placement,b=>{b&&(s.value=null)});const u=()=>{var b,S;(S=(b=l.value)===null||b===void 0?void 0:b.focus)===null||S===void 0||S.call(b)},d=b=>{n(\"close\",b)},p=b=>{b.keyCode===we.ESC&&(b.stopPropagation(),d(b))},m=()=>{const{open:b,afterVisibleChange:S}=e;S&&S(!!b)},g=b=>{let{level:S,getContainer:$}=b;if(VF)return;const w=$?.(),C=w?w.parentNode:null;c=[],S===\"all\"?(C?Array.prototype.slice.call(C.children):[]).forEach(x=>{x.nodeName!==\"SCRIPT\"&&x.nodeName!==\"STYLE\"&&x.nodeName!==\"LINK\"&&x!==w&&c.push(x)}):S&&jF(S).forEach(_=>{document.querySelectorAll(_).forEach(x=>{c.push(x)})})},v=b=>{n(\"handleClick\",b)},y=ee(!1);return pe(l,()=>{it(()=>{y.value=!0})}),()=>{var b,S;const{width:$,height:w,open:C,prefixCls:_,placement:x,level:P,levelMove:O,ease:M,duration:E,getContainer:R,onChange:D,afterVisibleChange:z,showMask:T,maskClosable:k,maskStyle:B,keyboard:L,getOpenCount:N,scrollLocker:F,contentWrapperStyle:j,style:H,class:K,rootClassName:G,rootStyle:V,maskMotion:q,motion:Z,inline:oe}=e,re=KF(e,[\"width\",\"height\",\"open\",\"prefixCls\",\"placement\",\"level\",\"levelMove\",\"ease\",\"duration\",\"getContainer\",\"onChange\",\"afterVisibleChange\",\"showMask\",\"maskClosable\",\"maskStyle\",\"keyboard\",\"getOpenCount\",\"scrollLocker\",\"contentWrapperStyle\",\"style\",\"class\",\"rootClassName\",\"rootStyle\",\"maskMotion\",\"motion\",\"inline\"]),Y=C&&y.value,Q=le(_,{[`${_}-${x}`]:!0,[`${_}-open`]:Y,[`${_}-inline`]:oe,\"no-mask\":!T,[G]:!0}),ce=typeof Z==\"function\"?Z(x):Z;return f(\"div\",A(A({},ot(re,[\"autofocus\"])),{},{tabindex:-1,class:Q,style:V,ref:l,onKeydown:Y&&L?p:void 0}),[f(cn,q,{default:()=>[T&&xn(f(\"div\",{class:`${_}-mask`,onClick:k?d:void 0,style:B,ref:a},null),[[On,Y]])]}),f(cn,A(A({},ce),{},{onAfterEnter:m,onAfterLeave:m}),{default:()=>[xn(f(\"div\",{class:`${_}-content-wrapper`,style:[j],ref:r},[f(\"div\",{class:[`${_}-content`,K],style:H,ref:s},[(b=o.default)===null||b===void 0?void 0:b.call(o)]),o.handler?f(\"div\",{onClick:v,ref:i},[(S=o.handler)===null||S===void 0?void 0:S.call(o)]):null]),[[On,Y]])]})])}}});var $y=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const GF=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:Ze(zF(),{prefixCls:\"drawer\",placement:\"left\",getContainer:\"body\",level:\"all\",duration:\".3s\",ease:\"cubic-bezier(0.78, 0.14, 0.15, 0.86)\",afterVisibleChange:()=>{},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:\"\",keyboard:!0,forceRender:!1,autofocus:!0}),emits:[\"handleClick\",\"close\"],setup(e,t){let{emit:n,slots:o}=t;const r=J(null),l=i=>{n(\"handleClick\",i)},a=i=>{n(\"close\",i)};return()=>{const{getContainer:i,wrapperClassName:s,rootClassName:c,rootStyle:u,forceRender:d}=e,p=$y(e,[\"getContainer\",\"wrapperClassName\",\"rootClassName\",\"rootStyle\",\"forceRender\"]);let m=null;if(!i)return f(Sy,A(A({},p),{},{rootClassName:c,rootStyle:u,open:e.open,onClose:a,onHandleClick:l,inline:!0}),o);const g=!!o.handler||d;return(g||e.open||r.value)&&(m=f(Ni,{autoLock:!0,visible:e.open,forceRender:g,getContainer:i,wrapperClassName:s},{default:v=>{var{visible:y,afterClose:b}=v,S=$y(v,[\"visible\",\"afterClose\"]);return f(Sy,A(A(A({ref:r},p),S),{},{rootClassName:c,rootStyle:u,open:y!==void 0?y:e.open,afterVisibleChange:b!==void 0?b:e.afterVisibleChange,onClose:a,onHandleClick:l}),o)}})),m}}}),XF=e=>{const{componentCls:t,motionDurationSlow:n}=e,o={\"&-enter, &-appear, &-leave\":{\"&-start\":{transition:\"none\"},\"&-active\":{transition:`all ${n}`}}};return{[t]:{[`${t}-mask-motion`]:{\"&-enter, &-appear, &-leave\":{\"&-active\":{transition:`all ${n}`}},\"&-enter, &-appear\":{opacity:0,\"&-active\":{opacity:1}},\"&-leave\":{opacity:1,\"&-active\":{opacity:0}}},[`${t}-panel-motion`]:{\"&-left\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateX(-100%) !important\"},\"&-active\":{transform:\"translateX(0)\"}},\"&-leave\":{transform:\"translateX(0)\",\"&-active\":{transform:\"translateX(-100%)\"}}}],\"&-right\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateX(100%) !important\"},\"&-active\":{transform:\"translateX(0)\"}},\"&-leave\":{transform:\"translateX(0)\",\"&-active\":{transform:\"translateX(100%)\"}}}],\"&-top\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateY(-100%) !important\"},\"&-active\":{transform:\"translateY(0)\"}},\"&-leave\":{transform:\"translateY(0)\",\"&-active\":{transform:\"translateY(-100%)\"}}}],\"&-bottom\":[o,{\"&-enter, &-appear\":{\"&-start\":{transform:\"translateY(100%) !important\"},\"&-active\":{transform:\"translateY(0)\"}},\"&-leave\":{transform:\"translateY(0)\",\"&-active\":{transform:\"translateY(100%)\"}}}]}}}},UF=e=>{const{componentCls:t,zIndexPopup:n,colorBgMask:o,colorBgElevated:r,motionDurationSlow:l,motionDurationMid:a,padding:i,paddingLG:s,fontSizeLG:c,lineHeightLG:u,lineWidth:d,lineType:p,colorSplit:m,marginSM:g,colorIcon:v,colorIconHover:y,colorText:b,fontWeightStrong:S,drawerFooterPaddingVertical:$,drawerFooterPaddingHorizontal:w}=e,C=`${t}-content-wrapper`;return{[t]:{position:\"fixed\",inset:0,zIndex:n,pointerEvents:\"none\",\"&-pure\":{position:\"relative\",background:r,[`&${t}-left`]:{boxShadow:e.boxShadowDrawerLeft},[`&${t}-right`]:{boxShadow:e.boxShadowDrawerRight},[`&${t}-top`]:{boxShadow:e.boxShadowDrawerUp},[`&${t}-bottom`]:{boxShadow:e.boxShadowDrawerDown}},\"&-inline\":{position:\"absolute\"},[`${t}-mask`]:{position:\"absolute\",inset:0,zIndex:n,background:o,pointerEvents:\"auto\"},[C]:{position:\"absolute\",zIndex:n,transition:`all ${l}`,\"&-hidden\":{display:\"none\"}},[`&-left > ${C}`]:{top:0,bottom:0,left:{_skip_check_:!0,value:0},boxShadow:e.boxShadowDrawerLeft},[`&-right > ${C}`]:{top:0,right:{_skip_check_:!0,value:0},bottom:0,boxShadow:e.boxShadowDrawerRight},[`&-top > ${C}`]:{top:0,insetInline:0,boxShadow:e.boxShadowDrawerUp},[`&-bottom > ${C}`]:{bottom:0,insetInline:0,boxShadow:e.boxShadowDrawerDown},[`${t}-content`]:{width:\"100%\",height:\"100%\",overflow:\"auto\",background:r,pointerEvents:\"auto\"},[`${t}-wrapper-body`]:{display:\"flex\",flexDirection:\"column\",width:\"100%\",height:\"100%\"},[`${t}-header`]:{display:\"flex\",flex:0,alignItems:\"center\",padding:`${i}px ${s}px`,fontSize:c,lineHeight:u,borderBottom:`${d}px ${p} ${m}`,\"&-title\":{display:\"flex\",flex:1,alignItems:\"center\",minWidth:0,minHeight:0}},[`${t}-extra`]:{flex:\"none\"},[`${t}-close`]:{display:\"inline-block\",marginInlineEnd:g,color:v,fontWeight:S,fontSize:c,fontStyle:\"normal\",lineHeight:1,textAlign:\"center\",textTransform:\"none\",textDecoration:\"none\",background:\"transparent\",border:0,outline:0,cursor:\"pointer\",transition:`color ${a}`,textRendering:\"auto\",\"&:focus, &:hover\":{color:y,textDecoration:\"none\"}},[`${t}-title`]:{flex:1,margin:0,color:b,fontWeight:e.fontWeightStrong,fontSize:c,lineHeight:u},[`${t}-body`]:{flex:1,minWidth:0,minHeight:0,padding:s,overflow:\"auto\"},[`${t}-footer`]:{flexShrink:0,padding:`${$}px ${w}px`,borderTop:`${d}px ${p} ${m}`},\"&-rtl\":{direction:\"rtl\"}}}},YF=Ge(\"Drawer\",e=>{const t=Le(e,{drawerFooterPaddingVertical:e.paddingXS,drawerFooterPaddingHorizontal:e.padding});return[UF(t),XF(t)]},e=>({zIndexPopup:e.zIndexPopupBase}));var qF=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const ZF=[\"top\",\"right\",\"bottom\",\"left\"],Cy={distance:180},QF=()=>({autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:W.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:{type:[String,Function,Boolean,Object],default:void 0},maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:De(),rootClassName:String,rootStyle:De(),size:{type:String},drawerStyle:De(),headerStyle:De(),bodyStyle:De(),contentWrapperStyle:{type:Object,default:void 0},title:W.any,visible:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},width:W.oneOfType([W.string,W.number]),height:W.oneOfType([W.string,W.number]),zIndex:Number,prefixCls:String,push:W.oneOfType([W.looseBool,{type:Object}]),placement:W.oneOf(ZF),keyboard:{type:Boolean,default:void 0},extra:W.any,footer:W.any,footerStyle:De(),level:W.any,levelMove:{type:[Number,Array,Function]},handle:W.any,afterVisibleChange:Function,onAfterVisibleChange:Function,onAfterOpenChange:Function,\"onUpdate:visible\":Function,\"onUpdate:open\":Function,onClose:Function}),JF=ne({compatConfig:{MODE:3},name:\"ADrawer\",inheritAttrs:!1,props:Ze(QF(),{closable:!0,placement:\"right\",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:Cy}),slots:Object,setup(e,t){let{emit:n,slots:o,attrs:r}=t;const l=ee(!1),a=ee(!1),i=ee(null),s=ee(!1),c=ee(!1),u=I(()=>{var N;return(N=e.open)!==null&&N!==void 0?N:e.visible});pe(u,()=>{u.value?s.value=!0:c.value=!1},{immediate:!0}),pe([u,s],()=>{u.value&&s.value&&(c.value=!0)},{immediate:!0});const d=Je(\"parentDrawerOpts\",null),{prefixCls:p,getPopupContainer:m,direction:g}=Pe(\"drawer\",e),[v,y]=YF(p),b=I(()=>e.getContainer===void 0&&m?.value?()=>m.value(document.body):e.getContainer);Ot(!e.afterVisibleChange,\"Drawer\",\"`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead\"),Qe(\"parentDrawerOpts\",{setPush:()=>{l.value=!0},setPull:()=>{l.value=!1,it(()=>{w()})}}),Ne(()=>{u.value&&d&&d.setPush()}),Mn(()=>{d&&d.setPull()}),pe(c,()=>{d&&(c.value?d.setPush():d.setPull())},{flush:\"post\"});const w=()=>{var N,F;(F=(N=i.value)===null||N===void 0?void 0:N.domFocus)===null||F===void 0||F.call(N)},C=N=>{n(\"update:visible\",!1),n(\"update:open\",!1),n(\"close\",N)},_=N=>{var F;N||(a.value===!1&&(a.value=!0),e.destroyOnClose&&(s.value=!1)),(F=e.afterVisibleChange)===null||F===void 0||F.call(e,N),n(\"afterVisibleChange\",N),n(\"afterOpenChange\",N)},x=I(()=>{const{push:N,placement:F}=e;let j;return typeof N==\"boolean\"?j=N?Cy.distance:0:j=N.distance,j=parseFloat(String(j||0)),F===\"left\"||F===\"right\"?`translateX(${F===\"left\"?j:-j}px)`:F===\"top\"||F===\"bottom\"?`translateY(${F===\"top\"?j:-j}px)`:null}),P=I(()=>{var N;return(N=e.width)!==null&&N!==void 0?N:e.size===\"large\"?736:378}),O=I(()=>{var N;return(N=e.height)!==null&&N!==void 0?N:e.size===\"large\"?736:378}),M=I(()=>{const{mask:N,placement:F}=e;if(!c.value&&!N)return{};const j={};return F===\"left\"||F===\"right\"?j.width=Zc(P.value)?`${P.value}px`:P.value:j.height=Zc(O.value)?`${O.value}px`:O.value,j}),E=I(()=>{const{zIndex:N,contentWrapperStyle:F}=e,j=M.value;return[{zIndex:N,transform:l.value?x.value:void 0},h({},F),j]}),R=N=>{const{closable:F,headerStyle:j}=e,H=Qt(o,e,\"extra\"),K=Qt(o,e,\"title\");return!K&&!F?null:f(\"div\",{class:le(`${N}-header`,{[`${N}-header-close-only`]:F&&!K&&!H}),style:j},[f(\"div\",{class:`${N}-header-title`},[D(N),K&&f(\"div\",{class:`${N}-title`},[K])]),H&&f(\"div\",{class:`${N}-extra`},[H])])},D=N=>{var F;const{closable:j}=e,H=o.closeIcon?(F=o.closeIcon)===null||F===void 0?void 0:F.call(o):e.closeIcon;return j&&f(\"button\",{key:\"closer\",onClick:C,\"aria-label\":\"Close\",class:`${N}-close`},[H===void 0?f(Wn,null,null):H])},z=N=>{var F;if(a.value&&!e.forceRender&&!s.value)return null;const{bodyStyle:j,drawerStyle:H}=e;return f(\"div\",{class:`${N}-wrapper-body`,style:H},[R(N),f(\"div\",{key:\"body\",class:`${N}-body`,style:j},[(F=o.default)===null||F===void 0?void 0:F.call(o)]),T(N)])},T=N=>{const F=Qt(o,e,\"footer\");if(!F)return null;const j=`${N}-footer`;return f(\"div\",{class:j,style:e.footerStyle},[F])},k=I(()=>le({\"no-mask\":!e.mask,[`${p.value}-rtl`]:g.value===\"rtl\"},e.rootClassName,y.value)),B=I(()=>bo(_n(p.value,\"mask-motion\"))),L=N=>bo(_n(p.value,`panel-motion-${N}`));return()=>{const{width:N,height:F,placement:j,mask:H,forceRender:K}=e,G=qF(e,[\"width\",\"height\",\"placement\",\"mask\",\"forceRender\"]),V=h(h(h({},r),ot(G,[\"size\",\"closeIcon\",\"closable\",\"destroyOnClose\",\"drawerStyle\",\"headerStyle\",\"bodyStyle\",\"title\",\"push\",\"onAfterVisibleChange\",\"onClose\",\"onUpdate:visible\",\"onUpdate:open\",\"visible\"])),{forceRender:K,onClose:C,afterVisibleChange:_,handler:!1,prefixCls:p.value,open:c.value,showMask:H,placement:j,ref:i});return v(f($i,null,{default:()=>[f(GF,A(A({},V),{},{maskMotion:B.value,motion:L,width:P.value,height:O.value,getContainer:b.value,rootClassName:k.value,rootStyle:e.rootStyle,contentWrapperStyle:E.value}),{handler:e.handle?()=>e.handle:o.handle,default:()=>z(p.value)})]}))}}}),e7=Dt(JF),Eg=()=>({prefixCls:String,description:W.any,type:ke(\"default\"),shape:ke(\"circle\"),tooltip:W.any,href:String,target:String,badge:De(),onClick:de()}),t7=()=>({prefixCls:ke()}),n7=()=>h(h({},Eg()),{trigger:ke(),open:ye(),onOpenChange:de(),\"onUpdate:open\":de()}),o7=()=>h(h({},Eg()),{prefixCls:String,duration:Number,target:de(),visibilityHeight:Number,onClick:de()}),r7=ne({compatConfig:{MODE:3},name:\"AFloatButtonContent\",inheritAttrs:!1,props:t7(),setup(e,t){let{attrs:n,slots:o}=t;return()=>{var r;const{prefixCls:l}=e,a=kt((r=o.description)===null||r===void 0?void 0:r.call(o));return f(\"div\",A(A({},n),{},{class:[n.class,`${l}-content`]}),[o.icon||a.length?f(Ve,null,[o.icon&&f(\"div\",{class:`${l}-icon`},[o.icon()]),a.length?f(\"div\",{class:`${l}-description`},[a]):null]):f(\"div\",{class:`${l}-icon`},[f(o$,null,null)])])}}}),n2=Symbol(\"floatButtonGroupContext\"),l7=e=>(Qe(n2,e),e),o2=()=>Je(n2,{shape:J()}),xy=e=>e===0?0:e-Math.sqrt(Math.pow(e,2)/2),a7=e=>{const{componentCls:t,floatButtonSize:n,motionDurationSlow:o,motionEaseInOutCirc:r}=e,l=`${t}-group`,a=new lt(\"antFloatButtonMoveDownIn\",{\"0%\":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:\"0 0\",opacity:0},\"100%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1}}),i=new lt(\"antFloatButtonMoveDownOut\",{\"0%\":{transform:\"translate3d(0, 0, 0)\",transformOrigin:\"0 0\",opacity:1},\"100%\":{transform:`translate3d(0, ${n}px, 0)`,transformOrigin:\"0 0\",opacity:0}});return[{[`${l}-wrap`]:h({},Li(`${l}-wrap`,a,i,o,!0))},{[`${l}-wrap`]:{[`\n          &${l}-wrap-enter,\n          &${l}-wrap-appear\n        `]:{opacity:0,animationTimingFunction:r},[`&${l}-wrap-leave`]:{animationTimingFunction:r}}}]},i7=e=>{const{antCls:t,componentCls:n,floatButtonSize:o,margin:r,borderRadiusLG:l,borderRadiusSM:a,badgeOffset:i,floatButtonBodyPadding:s}=e,c=`${n}-group`;return{[c]:h(h({},Ue(e)),{zIndex:99,display:\"block\",border:\"none\",position:\"fixed\",width:o,height:\"auto\",boxShadow:\"none\",minHeight:o,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,borderRadius:l,[`${c}-wrap`]:{zIndex:-1,display:\"block\",position:\"relative\",marginBottom:r},[`&${c}-rtl`]:{direction:\"rtl\"},[n]:{position:\"static\"}}),[`${c}-circle`]:{[`${n}-circle:not(:last-child)`]:{marginBottom:e.margin,[`${n}-body`]:{width:o,height:o,borderRadius:\"50%\"}}},[`${c}-square`]:{[`${n}-square`]:{borderRadius:0,padding:0,\"&:first-child\":{borderStartStartRadius:l,borderStartEndRadius:l},\"&:last-child\":{borderEndStartRadius:l,borderEndEndRadius:l},\"&:not(:last-child)\":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-badge`]:{[`${t}-badge-count`]:{top:-(s+i),insetInlineEnd:-(s+i)}}},[`${c}-wrap`]:{display:\"block\",borderRadius:l,boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:\"none\",marginTop:0,borderRadius:0,padding:s,\"&:first-child\":{borderStartStartRadius:l,borderStartEndRadius:l},\"&:last-child\":{borderEndStartRadius:l,borderEndEndRadius:l},\"&:not(:last-child)\":{borderBottom:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize}}}},[`${c}-circle-shadow`]:{boxShadow:\"none\"},[`${c}-square-shadow`]:{boxShadow:e.boxShadowSecondary,[`${n}-square`]:{boxShadow:\"none\",padding:s,[`${n}-body`]:{width:e.floatButtonBodySize,height:e.floatButtonBodySize,borderRadius:a}}}}},s7=e=>{const{antCls:t,componentCls:n,floatButtonBodyPadding:o,floatButtonIconSize:r,floatButtonSize:l,borderRadiusLG:a,badgeOffset:i,dotOffsetInSquare:s,dotOffsetInCircle:c}=e;return{[n]:h(h({},Ue(e)),{border:\"none\",position:\"fixed\",cursor:\"pointer\",zIndex:99,display:\"block\",justifyContent:\"center\",alignItems:\"center\",width:l,height:l,insetInlineEnd:e.floatButtonInsetInlineEnd,insetBlockEnd:e.floatButtonInsetBlockEnd,boxShadow:e.boxShadowSecondary,\"&-pure\":{position:\"relative\",inset:\"auto\"},\"&:empty\":{display:\"none\"},[`${t}-badge`]:{width:\"100%\",height:\"100%\",[`${t}-badge-count`]:{transform:\"translate(0, 0)\",transformOrigin:\"center\",top:-i,insetInlineEnd:-i}},[`${n}-body`]:{width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",transition:`all ${e.motionDurationMid}`,[`${n}-content`]:{overflow:\"hidden\",textAlign:\"center\",minHeight:l,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",padding:`${o/2}px ${o}px`,[`${n}-icon`]:{textAlign:\"center\",margin:\"auto\",width:r,fontSize:r,lineHeight:1}}}}),[`${n}-rtl`]:{direction:\"rtl\"},[`${n}-circle`]:{height:l,borderRadius:\"50%\",[`${t}-badge`]:{[`${t}-badge-dot`]:{top:c,insetInlineEnd:c}},[`${n}-body`]:{borderRadius:\"50%\"}},[`${n}-square`]:{height:\"auto\",minHeight:l,borderRadius:a,[`${t}-badge`]:{[`${t}-badge-dot`]:{top:s,insetInlineEnd:s}},[`${n}-body`]:{height:\"auto\",borderRadius:a}},[`${n}-default`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,[`${n}-body`]:{backgroundColor:e.floatButtonBackgroundColor,transition:`background-color ${e.motionDurationMid}`,\"&:hover\":{backgroundColor:e.colorFillContent},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorText},[`${n}-description`]:{display:\"flex\",alignItems:\"center\",lineHeight:`${e.fontSizeLG}px`,color:e.colorText,fontSize:e.fontSizeSM}}}},[`${n}-primary`]:{backgroundColor:e.colorPrimary,[`${n}-body`]:{backgroundColor:e.colorPrimary,transition:`background-color ${e.motionDurationMid}`,\"&:hover\":{backgroundColor:e.colorPrimaryHover},[`${n}-content`]:{[`${n}-icon`]:{color:e.colorTextLightSolid},[`${n}-description`]:{display:\"flex\",alignItems:\"center\",lineHeight:`${e.fontSizeLG}px`,color:e.colorTextLightSolid,fontSize:e.fontSizeSM}}}}}},Mg=Ge(\"FloatButton\",e=>{const{colorTextLightSolid:t,colorBgElevated:n,controlHeightLG:o,marginXXL:r,marginLG:l,fontSize:a,fontSizeIcon:i,controlItemBgHover:s,paddingXXS:c,borderRadiusLG:u}=e,d=Le(e,{floatButtonBackgroundColor:n,floatButtonColor:t,floatButtonHoverBackgroundColor:s,floatButtonFontSize:a,floatButtonIconSize:i*1.5,floatButtonSize:o,floatButtonInsetBlockEnd:r,floatButtonInsetInlineEnd:l,floatButtonBodySize:o-c*2,floatButtonBodyPadding:c,badgeOffset:c*1.5,dotOffsetInCircle:xy(o/2),dotOffsetInSquare:xy(u)});return[i7(d),s7(d),Iv(e),a7(d)]});var c7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Ag=\"float-btn\",Br=ne({compatConfig:{MODE:3},name:\"AFloatButton\",inheritAttrs:!1,props:Ze(Eg(),{type:\"default\",shape:\"circle\"}),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:r,direction:l}=Pe(Ag,e),[a,i]=Mg(r),{shape:s}=o2(),c=J(null),u=I(()=>s?.value||e.shape);return()=>{var d;const{prefixCls:p,type:m=\"default\",shape:g=\"circle\",description:v=(d=o.description)===null||d===void 0?void 0:d.call(o),tooltip:y,badge:b={}}=e,S=c7(e,[\"prefixCls\",\"type\",\"shape\",\"description\",\"tooltip\",\"badge\"]),$=le(r.value,`${r.value}-${m}`,`${r.value}-${u.value}`,{[`${r.value}-rtl`]:l.value===\"rtl\"},n.class,i.value),w=f(Ln,{placement:\"left\"},{title:o.tooltip||y?()=>o.tooltip&&o.tooltip()||y:void 0,default:()=>f(Ja,b,{default:()=>[f(\"div\",{class:`${r.value}-body`},[f(r7,{prefixCls:r.value},{icon:o.icon,description:()=>v})])]})});return a(e.href?f(\"a\",A(A(A({ref:c},n),S),{},{class:$}),[w]):f(\"button\",A(A(A({ref:c},n),S),{},{class:$,type:\"button\"}),[w]))}}}),hu=ne({compatConfig:{MODE:3},name:\"AFloatButtonGroup\",inheritAttrs:!1,props:Ze(n7(),{type:\"default\",shape:\"circle\"}),setup(e,t){let{attrs:n,slots:o,emit:r}=t;const{prefixCls:l,direction:a}=Pe(Ag,e),[i,s]=Mg(l),[c,u]=Mt(!1,{value:I(()=>e.open)}),d=J(null),p=J(null);l7({shape:I(()=>e.shape)});const m={onMouseenter(){var b;u(!0),r(\"update:open\",!0),(b=e.onOpenChange)===null||b===void 0||b.call(e,!0)},onMouseleave(){var b;u(!1),r(\"update:open\",!1),(b=e.onOpenChange)===null||b===void 0||b.call(e,!1)}},g=I(()=>e.trigger===\"hover\"?m:{}),v=()=>{var b;const S=!c.value;r(\"update:open\",S),(b=e.onOpenChange)===null||b===void 0||b.call(e,S),u(S)},y=b=>{var S,$,w;if(!((S=d.value)===null||S===void 0)&&S.contains(b.target)){!(($=Tn(p.value))===null||$===void 0)&&$.contains(b.target)&&v();return}u(!1),r(\"update:open\",!1),(w=e.onOpenChange)===null||w===void 0||w.call(e,!1)};return pe(I(()=>e.trigger),b=>{wn()&&(document.removeEventListener(\"click\",y),b===\"click\"&&document.addEventListener(\"click\",y))},{immediate:!0}),et(()=>{document.removeEventListener(\"click\",y)}),()=>{var b;const{shape:S=\"circle\",type:$=\"default\",tooltip:w,description:C,trigger:_}=e,x=`${l.value}-group`,P=le(x,s.value,n.class,{[`${x}-rtl`]:a.value===\"rtl\",[`${x}-${S}`]:S,[`${x}-${S}-shadow`]:!_}),O=le(s.value,`${x}-wrap`),M=bo(`${x}-wrap`);return i(f(\"div\",A(A({ref:d},n),{},{class:P},g.value),[_&&[\"click\",\"hover\"].includes(_)?f(Ve,null,[f(cn,M,{default:()=>[xn(f(\"div\",{class:O},[o.default&&o.default()]),[[On,c.value]])]}),f(Br,{ref:p,type:$,shape:S,tooltip:w,description:C},{icon:()=>{var E,R;return c.value?((E=o.closeIcon)===null||E===void 0?void 0:E.call(o))||f(Wn,null,null):((R=o.icon)===null||R===void 0?void 0:R.call(o))||f(o$,null,null)},tooltip:o.tooltip,description:o.description})]):(b=o.default)===null||b===void 0?void 0:b.call(o)]))}}}),bu=ne({compatConfig:{MODE:3},name:\"ABackTop\",inheritAttrs:!1,props:Ze(o7(),{visibilityHeight:400,target:()=>window,duration:450,type:\"default\",shape:\"circle\"}),setup(e,t){let{slots:n,attrs:o,emit:r}=t;const{prefixCls:l,direction:a}=Pe(Ag,e),[i]=Mg(l),s=J(),c=vt({visible:e.visibilityHeight===0,scrollEvent:null}),u=()=>s.value&&s.value.ownerDocument?s.value.ownerDocument:window,d=y=>{const{target:b=u,duration:S}=e;lv(0,{getContainer:b,duration:S}),r(\"click\",y)},p=up(y=>{const{visibilityHeight:b}=e,S=rv(y.target);c.visible=S>=b}),m=()=>{const{target:y}=e,S=(y||u)();p({target:S}),S?.addEventListener(\"scroll\",p)},g=()=>{const{target:y}=e,S=(y||u)();p.cancel(),S?.removeEventListener(\"scroll\",p)};pe(()=>e.target,()=>{g(),it(()=>{m()})}),Ne(()=>{it(()=>{m()})}),Tm(()=>{it(()=>{m()})}),kI(()=>{g()}),et(()=>{g()});const v=o2();return()=>{const{description:y,type:b,shape:S,tooltip:$,badge:w}=e,C=h(h({},o),{shape:v?.shape.value||S,onClick:d,class:{[`${l.value}`]:!0,[`${o.class}`]:o.class,[`${l.value}-rtl`]:a.value===\"rtl\"},description:y,type:b,tooltip:$,badge:w}),_=bo(\"fade\");return i(f(cn,_,{default:()=>[xn(f(Br,A(A({},C),{},{ref:s}),{icon:()=>{var x;return((x=n.icon)===null||x===void 0?void 0:x.call(n))||f(NI,null,null)}}),[[On,c.visible]])]}))}}});Br.Group=hu;Br.BackTop=bu;Br.install=function(e){return e.component(Br.name,Br),e.component(hu.name,hu),e.component(bu.name,bu),e};const ri=e=>e!=null&&(Array.isArray(e)?kt(e).length:!0);function Dg(e){return ri(e.prefix)||ri(e.suffix)||ri(e.allowClear)}function fc(e){return ri(e.addonBefore)||ri(e.addonAfter)}function Jp(e){return typeof e>\"u\"||e===null?\"\":String(e)}function li(e,t,n,o){if(!n)return;const r=t;if(t.type===\"click\"){Object.defineProperty(r,\"target\",{writable:!0}),Object.defineProperty(r,\"currentTarget\",{writable:!0});const l=e.cloneNode(!0);r.target=l,r.currentTarget=l,l.value=\"\",n(r);return}if(o!==void 0){Object.defineProperty(r,\"target\",{writable:!0}),Object.defineProperty(r,\"currentTarget\",{writable:!0}),r.target=e,r.currentTarget=e,e.value=o,n(r);return}n(r)}function r2(e,t){if(!e)return;e.focus(t);const{cursor:n}=t||{};if(n){const o=e.value.length;switch(n){case\"start\":e.setSelectionRange(0,0);break;case\"end\":e.setSelectionRange(o,o);break;default:e.setSelectionRange(0,o)}}}const u7=()=>({addonBefore:W.any,addonAfter:W.any,prefix:W.any,suffix:W.any,clearIcon:W.any,affixWrapperClassName:String,groupClassName:String,wrapperClassName:String,inputClassName:String,allowClear:{type:Boolean,default:void 0}}),l2=()=>h(h({},u7()),{value:{type:[String,Number,Symbol],default:void 0},defaultValue:{type:[String,Number,Symbol],default:void 0},inputElement:W.any,prefixCls:String,disabled:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},triggerFocus:Function,readonly:{type:Boolean,default:void 0},handleReset:Function,hidden:{type:Boolean,default:void 0}}),a2=()=>h(h({},l2()),{id:String,placeholder:{type:[String,Number]},autocomplete:String,type:ke(\"text\"),name:String,size:{type:String},autofocus:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,\"onUpdate:value\":Function,onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object,hidden:{type:Boolean,default:void 0},status:String}),d7=ne({name:\"BaseInput\",inheritAttrs:!1,props:l2(),setup(e,t){let{slots:n,attrs:o}=t;const r=J(),l=i=>{var s;if(!((s=r.value)===null||s===void 0)&&s.contains(i.target)){const{triggerFocus:c}=e;c?.()}},a=()=>{var i;const{allowClear:s,value:c,disabled:u,readonly:d,handleReset:p,suffix:m=n.suffix,prefixCls:g}=e;if(!s)return null;const v=!u&&!d&&c,y=`${g}-clear-icon`,b=((i=n.clearIcon)===null||i===void 0?void 0:i.call(n))||\"*\";return f(\"span\",{onClick:p,onMousedown:S=>S.preventDefault(),class:le({[`${y}-hidden`]:!v,[`${y}-has-suffix`]:!!m},y),role:\"button\",tabindex:-1},[b])};return()=>{var i,s;const{focused:c,value:u,disabled:d,allowClear:p,readonly:m,hidden:g,prefixCls:v,prefix:y=(i=n.prefix)===null||i===void 0?void 0:i.call(n),suffix:b=(s=n.suffix)===null||s===void 0?void 0:s.call(n),addonAfter:S=n.addonAfter,addonBefore:$=n.addonBefore,inputElement:w,affixWrapperClassName:C,wrapperClassName:_,groupClassName:x}=e;let P=dt(w,{value:u,hidden:g});if(Dg({prefix:y,suffix:b,allowClear:p})){const O=`${v}-affix-wrapper`,M=le(O,{[`${O}-disabled`]:d,[`${O}-focused`]:c,[`${O}-readonly`]:m,[`${O}-input-with-clear-btn`]:b&&p&&u},!fc({addonAfter:S,addonBefore:$})&&o.class,C),E=(b||p)&&f(\"span\",{class:`${v}-suffix`},[a(),b]);P=f(\"span\",{class:M,style:o.style,hidden:!fc({addonAfter:S,addonBefore:$})&&g,onMousedown:l,ref:r},[y&&f(\"span\",{class:`${v}-prefix`},[y]),dt(w,{style:null,value:u,hidden:null}),E])}if(fc({addonAfter:S,addonBefore:$})){const O=`${v}-group`,M=`${O}-addon`,E=le(`${v}-wrapper`,O,_),R=le(`${v}-group-wrapper`,o.class,x);return f(\"span\",{class:R,style:o.style,hidden:g},[f(\"span\",{class:E},[$&&f(\"span\",{class:M},[$]),dt(P,{style:null,hidden:null}),S&&f(\"span\",{class:M},[S])])])}return P}}});var f7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const p7=ne({name:\"VCInput\",inheritAttrs:!1,props:a2(),setup(e,t){let{slots:n,attrs:o,expose:r,emit:l}=t;const a=ee(e.value===void 0?e.defaultValue:e.value),i=ee(!1),s=ee(),c=ee();pe(()=>e.value,()=>{a.value=e.value}),pe(()=>e.disabled,()=>{e.disabled&&(i.value=!1)});const u=x=>{s.value&&r2(s.value.input,x)},d=()=>{var x;(x=s.value.input)===null||x===void 0||x.blur()},p=(x,P,O)=>{var M;(M=s.value.input)===null||M===void 0||M.setSelectionRange(x,P,O)},m=()=>{var x;(x=s.value.input)===null||x===void 0||x.select()};r({focus:u,blur:d,input:I(()=>{var x;return(x=s.value.input)===null||x===void 0?void 0:x.input}),stateValue:a,setSelectionRange:p,select:m});const g=x=>{l(\"change\",x)},v=(x,P)=>{a.value!==x&&(e.value===void 0?a.value=x:it(()=>{var O;s.value.input.value!==a.value&&((O=c.value)===null||O===void 0||O.$forceUpdate())}),it(()=>{P&&P()}))},y=x=>{const{value:P}=x.target;if(a.value===P)return;const O=x.target.value;li(s.value.input,x,g),v(O)},b=x=>{x.keyCode===13&&l(\"pressEnter\",x),l(\"keydown\",x)},S=x=>{i.value=!0,l(\"focus\",x)},$=x=>{i.value=!1,l(\"blur\",x)},w=x=>{li(s.value.input,x,g),v(\"\",()=>{u()})},C=()=>{var x,P;const{addonBefore:O=n.addonBefore,addonAfter:M=n.addonAfter,disabled:E,valueModifiers:R={},htmlSize:D,autocomplete:z,prefixCls:T,inputClassName:k,prefix:B=(x=n.prefix)===null||x===void 0?void 0:x.call(n),suffix:L=(P=n.suffix)===null||P===void 0?void 0:P.call(n),allowClear:N,type:F=\"text\"}=e,j=ot(e,[\"prefixCls\",\"onPressEnter\",\"addonBefore\",\"addonAfter\",\"prefix\",\"suffix\",\"allowClear\",\"defaultValue\",\"size\",\"bordered\",\"htmlSize\",\"lazy\",\"showCount\",\"valueModifiers\",\"showCount\",\"affixWrapperClassName\",\"groupClassName\",\"inputClassName\",\"wrapperClassName\"]),H=h(h(h({},j),o),{autocomplete:z,onChange:y,onInput:y,onFocus:S,onBlur:$,onKeydown:b,class:le(T,{[`${T}-disabled`]:E},k,!fc({addonAfter:M,addonBefore:O})&&!Dg({prefix:B,suffix:L,allowClear:N})&&o.class),ref:s,key:\"ant-input\",size:D,type:F,lazy:e.lazy});return R.lazy&&delete H.onInput,H.autofocus||delete H.autofocus,f(Pa,ot(H,[\"size\"]),null)},_=()=>{var x;const{maxlength:P,suffix:O=(x=n.suffix)===null||x===void 0?void 0:x.call(n),showCount:M,prefixCls:E}=e,R=Number(P)>0;if(O||M){const D=[...Jp(a.value)].length,z=typeof M==\"object\"?M.formatter({count:D,maxlength:P}):`${D}${R?` / ${P}`:\"\"}`;return f(Ve,null,[!!M&&f(\"span\",{class:le(`${E}-show-count-suffix`,{[`${E}-show-count-has-suffix`]:!!O})},[z]),O])}return null};return Ne(()=>{}),()=>{const{prefixCls:x,disabled:P}=e,O=f7(e,[\"prefixCls\",\"disabled\"]);return f(d7,A(A(A({},O),o),{},{ref:c,prefixCls:x,inputElement:C(),handleReset:w,value:Jp(a.value),focused:i.value,triggerFocus:u,suffix:_(),disabled:P}),n)}}}),Sd=()=>ot(a2(),[\"wrapperClassName\",\"groupClassName\",\"inputClassName\",\"affixWrapperClassName\"]),i2=()=>h(h({},ot(Sd(),[\"prefix\",\"addonBefore\",\"addonAfter\",\"suffix\"])),{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:yl(),onCompositionend:yl(),valueModifiers:Object});var m7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Bt=ne({compatConfig:{MODE:3},name:\"AInput\",inheritAttrs:!1,props:Sd(),setup(e,t){let{slots:n,attrs:o,expose:r,emit:l}=t;const a=J(),i=Jt(),s=un.useInject(),c=I(()=>Do(s.status,e.status)),{direction:u,prefixCls:d,size:p,autocomplete:m}=Pe(\"input\",e),{compactSize:g,compactItemClassnames:v}=Xr(d,u),y=I(()=>g.value||p.value),[b,S]=mg(d),$=zn();r({focus:D=>{var z;(z=a.value)===null||z===void 0||z.focus(D)},blur:()=>{var D;(D=a.value)===null||D===void 0||D.blur()},input:a,setSelectionRange:(D,z,T)=>{var k;(k=a.value)===null||k===void 0||k.setSelectionRange(D,z,T)},select:()=>{var D;(D=a.value)===null||D===void 0||D.select()}});const P=J([]),O=()=>{P.value.push(setTimeout(()=>{var D,z,T,k;!((D=a.value)===null||D===void 0)&&D.input&&((z=a.value)===null||z===void 0?void 0:z.input.getAttribute(\"type\"))===\"password\"&&(!((T=a.value)===null||T===void 0)&&T.input.hasAttribute(\"value\"))&&((k=a.value)===null||k===void 0||k.input.removeAttribute(\"value\"))}))};Ne(()=>{O()}),Pm(()=>{P.value.forEach(D=>clearTimeout(D))}),et(()=>{P.value.forEach(D=>clearTimeout(D))});const M=D=>{O(),l(\"blur\",D),i.onFieldBlur()},E=D=>{O(),l(\"focus\",D)},R=D=>{l(\"update:value\",D.target.value),l(\"change\",D),l(\"input\",D),i.onFieldChange()};return()=>{var D,z,T,k,B,L;const{hasFeedback:N,feedbackIcon:F}=s,{allowClear:j,bordered:H=!0,prefix:K=(D=n.prefix)===null||D===void 0?void 0:D.call(n),suffix:G=(z=n.suffix)===null||z===void 0?void 0:z.call(n),addonAfter:V=(T=n.addonAfter)===null||T===void 0?void 0:T.call(n),addonBefore:q=(k=n.addonBefore)===null||k===void 0?void 0:k.call(n),id:Z=(B=i.id)===null||B===void 0?void 0:B.value}=e,oe=m7(e,[\"allowClear\",\"bordered\",\"prefix\",\"suffix\",\"addonAfter\",\"addonBefore\",\"id\"]),re=(N||G)&&f(Ve,null,[G,N&&F]),Y=d.value,Q=Dg({prefix:K,suffix:G})||!!N,ce=n.clearIcon||(()=>f(jn,null,null));return b(f(p7,A(A(A({},o),ot(oe,[\"onUpdate:value\",\"onChange\",\"onInput\"])),{},{onChange:R,id:Z,disabled:(L=e.disabled)!==null&&L!==void 0?L:$.value,ref:a,prefixCls:Y,autocomplete:m.value,onBlur:M,onFocus:E,prefix:K,suffix:re,allowClear:j,addonAfter:V&&f($i,null,{default:()=>[f(Gc,null,{default:()=>[V]})]}),addonBefore:q&&f($i,null,{default:()=>[f(Gc,null,{default:()=>[q]})]}),class:[o.class,v.value],inputClassName:le({[`${Y}-sm`]:y.value===\"small\",[`${Y}-lg`]:y.value===\"large\",[`${Y}-rtl`]:u.value===\"rtl\",[`${Y}-borderless`]:!H},!Q&&Cn(Y,c.value),S.value),affixWrapperClassName:le({[`${Y}-affix-wrapper-sm`]:y.value===\"small\",[`${Y}-affix-wrapper-lg`]:y.value===\"large\",[`${Y}-affix-wrapper-rtl`]:u.value===\"rtl\",[`${Y}-affix-wrapper-borderless`]:!H},Cn(`${Y}-affix-wrapper`,c.value,N),S.value),wrapperClassName:le({[`${Y}-group-rtl`]:u.value===\"rtl\"},S.value),groupClassName:le({[`${Y}-group-wrapper-sm`]:y.value===\"small\",[`${Y}-group-wrapper-lg`]:y.value===\"large\",[`${Y}-group-wrapper-rtl`]:u.value===\"rtl\"},Cn(`${Y}-group-wrapper`,c.value,N),S.value)}),h(h({},n),{clearIcon:ce})))}}}),s2=ne({compatConfig:{MODE:3},name:\"AInputGroup\",inheritAttrs:!1,props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0}},setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l,getPrefixCls:a}=Pe(\"input-group\",e),i=un.useInject();un.useProvide(i,{isFormItemInput:!1});const s=I(()=>a(\"input\")),[c,u]=mg(s),d=I(()=>{const p=r.value;return{[`${p}`]:!0,[u.value]:!0,[`${p}-lg`]:e.size===\"large\",[`${p}-sm`]:e.size===\"small\",[`${p}-compact`]:e.compact,[`${p}-rtl`]:l.value===\"rtl\"}});return()=>{var p;return c(f(\"span\",A(A({},o),{},{class:le(d.value,o.class)}),[(p=n.default)===null||p===void 0?void 0:p.call(n)]))}}});var v7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const c2=ne({compatConfig:{MODE:3},name:\"AInputSearch\",inheritAttrs:!1,props:h(h({},Sd()),{inputPrefixCls:String,enterButton:W.any,onSearch:{type:Function}}),setup(e,t){let{slots:n,attrs:o,expose:r,emit:l}=t;const a=ee(),i=ee(!1);r({focus:()=>{var C;(C=a.value)===null||C===void 0||C.focus()},blur:()=>{var C;(C=a.value)===null||C===void 0||C.blur()}});const u=C=>{l(\"update:value\",C.target.value),C&&C.target&&C.type===\"click\"&&l(\"search\",C.target.value,C),l(\"change\",C)},d=C=>{var _;document.activeElement===((_=a.value)===null||_===void 0?void 0:_.input)&&C.preventDefault()},p=C=>{var _,x;l(\"search\",(x=(_=a.value)===null||_===void 0?void 0:_.input)===null||x===void 0?void 0:x.stateValue,C)},m=C=>{i.value||e.loading||p(C)},g=C=>{i.value=!0,l(\"compositionstart\",C)},v=C=>{i.value=!1,l(\"compositionend\",C)},{prefixCls:y,getPrefixCls:b,direction:S,size:$}=Pe(\"input-search\",e),w=I(()=>b(\"input\",e.inputPrefixCls));return()=>{var C,_,x,P;const{disabled:O,loading:M,addonAfter:E=(C=n.addonAfter)===null||C===void 0?void 0:C.call(n),suffix:R=(_=n.suffix)===null||_===void 0?void 0:_.call(n)}=e,D=v7(e,[\"disabled\",\"loading\",\"addonAfter\",\"suffix\"]);let{enterButton:z=(P=(x=n.enterButton)===null||x===void 0?void 0:x.call(n))!==null&&P!==void 0?P:!1}=e;z=z||z===\"\";const T=typeof z==\"boolean\"?f(Iu,null,null):null,k=`${y.value}-button`,B=Array.isArray(z)?z[0]:z;let L;const N=B.type&&u$(B.type)&&B.type.__ANT_BUTTON;if(N||B.tagName===\"button\")L=dt(B,h({onMousedown:d,onClick:p,key:\"enterButton\"},N?{class:k,size:$.value}:{}),!1);else{const j=T&&!z;L=f(_t,{class:k,type:z?\"primary\":void 0,size:$.value,disabled:O,key:\"enterButton\",onMousedown:d,onClick:p,loading:M,icon:j?T:null},{default:()=>[j?null:T||z]})}E&&(L=[L,E]);const F=le(y.value,{[`${y.value}-rtl`]:S.value===\"rtl\",[`${y.value}-${$.value}`]:!!$.value,[`${y.value}-with-button`]:!!z},o.class);return f(Bt,A(A(A({ref:a},ot(D,[\"onUpdate:value\",\"onSearch\",\"enterButton\"])),o),{},{onPressEnter:m,onCompositionstart:g,onCompositionend:v,size:$.value,prefixCls:w.value,addonAfter:L,suffix:R,onChange:u,class:F,disabled:O}),n)}}}),wy=e=>e!=null&&(Array.isArray(e)?kt(e).length:!0);function g7(e){return wy(e.addonBefore)||wy(e.addonAfter)}const h7=[\"text\",\"input\"],b7=ne({compatConfig:{MODE:3},name:\"ClearableLabeledInput\",inheritAttrs:!1,props:{prefixCls:String,inputType:W.oneOf(hn(\"text\",\"input\")),value:Ct(),defaultValue:Ct(),allowClear:{type:Boolean,default:void 0},element:Ct(),handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:Ct(),prefix:Ct(),addonBefore:Ct(),addonAfter:Ct(),readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean,status:String,hashId:String},setup(e,t){let{slots:n,attrs:o}=t;const r=un.useInject(),l=i=>{const{value:s,disabled:c,readonly:u,handleReset:d,suffix:p=n.suffix}=e,m=!c&&!u&&s,g=`${i}-clear-icon`;return f(jn,{onClick:d,onMousedown:v=>v.preventDefault(),class:le({[`${g}-hidden`]:!m,[`${g}-has-suffix`]:!!p},g),role:\"button\"},null)},a=(i,s)=>{const{value:c,allowClear:u,direction:d,bordered:p,hidden:m,status:g,addonAfter:v=n.addonAfter,addonBefore:y=n.addonBefore,hashId:b}=e,{status:S,hasFeedback:$}=r;if(!u)return dt(s,{value:c,disabled:e.disabled});const w=le(`${i}-affix-wrapper`,`${i}-affix-wrapper-textarea-with-clear-btn`,Cn(`${i}-affix-wrapper`,Do(S,g),$),{[`${i}-affix-wrapper-rtl`]:d===\"rtl\",[`${i}-affix-wrapper-borderless`]:!p,[`${o.class}`]:!g7({addonAfter:v,addonBefore:y})&&o.class},b);return f(\"span\",{class:w,style:o.style,hidden:m},[dt(s,{style:null,value:c,disabled:e.disabled}),l(i)])};return()=>{var i;const{prefixCls:s,inputType:c,element:u=(i=n.element)===null||i===void 0?void 0:i.call(n)}=e;return c===h7[0]?a(s,u):null}}}),y7=`\n  min-height:0 !important;\n  max-height:none !important;\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important;\n  pointer-events: none !important;\n`,S7=[\"letter-spacing\",\"line-height\",\"padding-top\",\"padding-bottom\",\"font-family\",\"font-weight\",\"font-size\",\"font-variant\",\"text-rendering\",\"text-transform\",\"width\",\"text-indent\",\"padding-left\",\"padding-right\",\"border-width\",\"box-sizing\",\"word-break\",\"white-space\"],wf={};let io;function $7(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=e.getAttribute(\"id\")||e.getAttribute(\"data-reactid\")||e.getAttribute(\"name\");if(t&&wf[n])return wf[n];const o=window.getComputedStyle(e),r=o.getPropertyValue(\"box-sizing\")||o.getPropertyValue(\"-moz-box-sizing\")||o.getPropertyValue(\"-webkit-box-sizing\"),l=parseFloat(o.getPropertyValue(\"padding-bottom\"))+parseFloat(o.getPropertyValue(\"padding-top\")),a=parseFloat(o.getPropertyValue(\"border-bottom-width\"))+parseFloat(o.getPropertyValue(\"border-top-width\")),s={sizingStyle:S7.map(c=>`${c}:${o.getPropertyValue(c)}`).join(\";\"),paddingSize:l,borderSize:a,boxSizing:r};return t&&n&&(wf[n]=s),s}function C7(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;io||(io=document.createElement(\"textarea\"),io.setAttribute(\"tab-index\",\"-1\"),io.setAttribute(\"aria-hidden\",\"true\"),document.body.appendChild(io)),e.getAttribute(\"wrap\")?io.setAttribute(\"wrap\",e.getAttribute(\"wrap\")):io.removeAttribute(\"wrap\");const{paddingSize:r,borderSize:l,boxSizing:a,sizingStyle:i}=$7(e,t);io.setAttribute(\"style\",`${i};${y7}`),io.value=e.value||e.placeholder||\"\";let s,c,u,d=io.scrollHeight;if(a===\"border-box\"?d+=l:a===\"content-box\"&&(d-=r),n!==null||o!==null){io.value=\" \";const m=io.scrollHeight-r;n!==null&&(s=m*n,a===\"border-box\"&&(s=s+r+l),d=Math.max(s,d)),o!==null&&(c=m*o,a===\"border-box\"&&(c=c+r+l),u=d>c?\"\":\"hidden\",d=Math.min(c,d))}const p={height:`${d}px`,overflowY:u,resize:\"none\"};return s&&(p.minHeight=`${s}px`),c&&(p.maxHeight=`${c}px`),p}const _f=0,If=1,Pf=2,x7=ne({compatConfig:{MODE:3},name:\"ResizableTextArea\",inheritAttrs:!1,props:i2(),setup(e,t){let{attrs:n,emit:o,expose:r}=t,l,a;const i=J(),s=J({}),c=J(Pf);et(()=>{qe.cancel(l),qe.cancel(a)});const u=()=>{try{if(i.value&&document.activeElement===i.value.input){const _=i.value.getSelectionStart(),x=i.value.getSelectionEnd(),P=i.value.getScrollTop();i.value.setSelectionRange(_,x),i.value.setScrollTop(P)}}catch{}},d=J(),p=J();ze(()=>{const _=e.autoSize||e.autosize;_?(d.value=_.minRows,p.value=_.maxRows):(d.value=void 0,p.value=void 0)});const m=I(()=>!!(e.autoSize||e.autosize)),g=()=>{c.value=_f};pe([()=>e.value,d,p,m],()=>{m.value&&g()},{immediate:!0});const v=J();pe([c,i],()=>{if(i.value)if(c.value===_f)c.value=If;else if(c.value===If){const _=C7(i.value.input,!1,d.value,p.value);c.value=Pf,v.value=_}else u()},{immediate:!0,flush:\"post\"});const y=fn(),b=J(),S=()=>{qe.cancel(b.value)},$=_=>{c.value===Pf&&(o(\"resize\",_),m.value&&(S(),b.value=qe(()=>{g()})))};et(()=>{S()}),r({resizeTextarea:()=>{g()},textArea:I(()=>{var _;return(_=i.value)===null||_===void 0?void 0:_.input}),instance:y}),eo(e.autosize===void 0);const C=()=>{const{prefixCls:_,disabled:x}=e,P=ot(e,[\"prefixCls\",\"onPressEnter\",\"autoSize\",\"autosize\",\"defaultValue\",\"allowClear\",\"type\",\"maxlength\",\"valueModifiers\"]),O=le(_,n.class,{[`${_}-disabled`]:x}),M=m.value?v.value:null,E=[n.style,s.value,M],R=h(h(h({},P),n),{style:E,class:O});return(c.value===_f||c.value===If)&&E.push({overflowX:\"hidden\",overflowY:\"hidden\"}),R.autofocus||delete R.autofocus,R.rows===0&&delete R.rows,f(go,{onResize:$,disabled:!m.value},{default:()=>[f(Pa,A(A({},R),{},{ref:i,tag:\"textarea\"}),null)]})};return()=>C()}});function u2(e,t){return[...e||\"\"].slice(0,t).join(\"\")}function _y(e,t,n,o){let r=n;return e?r=u2(n,o):[...t||\"\"].length<n.length&&[...n||\"\"].length>o&&(r=t),r}const Rg=ne({compatConfig:{MODE:3},name:\"ATextarea\",inheritAttrs:!1,props:i2(),setup(e,t){let{attrs:n,expose:o,emit:r}=t;var l;const a=Jt(),i=un.useInject(),s=I(()=>Do(i.status,e.status)),c=ee((l=e.value)!==null&&l!==void 0?l:e.defaultValue),u=ee(),d=ee(\"\"),{prefixCls:p,size:m,direction:g}=Pe(\"input\",e),[v,y]=mg(p),b=zn(),S=I(()=>e.showCount===\"\"||e.showCount||!1),$=I(()=>Number(e.maxlength)>0),w=ee(!1),C=ee(),_=ee(0),x=N=>{w.value=!0,C.value=d.value,_.value=N.currentTarget.selectionStart,r(\"compositionstart\",N)},P=N=>{var F;w.value=!1;let j=N.currentTarget.value;if($.value){const H=_.value>=e.maxlength+1||_.value===((F=C.value)===null||F===void 0?void 0:F.length);j=_y(H,C.value,j,e.maxlength)}j!==d.value&&(R(j),li(N.currentTarget,N,T,j)),r(\"compositionend\",N)},O=fn();pe(()=>e.value,()=>{var N;\"value\"in O.vnode.props,c.value=(N=e.value)!==null&&N!==void 0?N:\"\"});const M=N=>{var F;r2((F=u.value)===null||F===void 0?void 0:F.textArea,N)},E=()=>{var N,F;(F=(N=u.value)===null||N===void 0?void 0:N.textArea)===null||F===void 0||F.blur()},R=(N,F)=>{c.value!==N&&(e.value===void 0?c.value=N:it(()=>{var j,H,K;u.value.textArea.value!==d.value&&((K=(j=u.value)===null||j===void 0?void 0:(H=j.instance).update)===null||K===void 0||K.call(H))}),it(()=>{F&&F()}))},D=N=>{N.keyCode===13&&r(\"pressEnter\",N),r(\"keydown\",N)},z=N=>{const{onBlur:F}=e;F?.(N),a.onFieldBlur()},T=N=>{r(\"update:value\",N.target.value),r(\"change\",N),r(\"input\",N),a.onFieldChange()},k=N=>{li(u.value.textArea,N,T),R(\"\",()=>{M()})},B=N=>{let F=N.target.value;if(c.value!==F){if($.value){const j=N.target,H=j.selectionStart>=e.maxlength+1||j.selectionStart===F.length||!j.selectionStart;F=_y(H,d.value,F,e.maxlength)}li(N.currentTarget,N,T,F),R(F)}},L=()=>{var N,F;const{class:j}=n,{bordered:H=!0}=e,K=h(h(h({},ot(e,[\"allowClear\"])),n),{class:[{[`${p.value}-borderless`]:!H,[`${j}`]:j&&!S.value,[`${p.value}-sm`]:m.value===\"small\",[`${p.value}-lg`]:m.value===\"large\"},Cn(p.value,s.value),y.value],disabled:b.value,showCount:null,prefixCls:p.value,onInput:B,onChange:B,onBlur:z,onKeydown:D,onCompositionstart:x,onCompositionend:P});return!((N=e.valueModifiers)===null||N===void 0)&&N.lazy&&delete K.onInput,f(x7,A(A({},K),{},{id:(F=K?.id)!==null&&F!==void 0?F:a.id.value,ref:u,maxlength:e.maxlength,lazy:e.lazy}),null)};return o({focus:M,blur:E,resizableTextArea:u}),ze(()=>{let N=Jp(c.value);!w.value&&$.value&&(e.value===null||e.value===void 0)&&(N=u2(N,e.maxlength)),d.value=N}),()=>{var N;const{maxlength:F,bordered:j=!0,hidden:H}=e,{style:K,class:G}=n,V=h(h(h({},e),n),{prefixCls:p.value,inputType:\"text\",handleReset:k,direction:g.value,bordered:j,style:S.value?void 0:K,hashId:y.value,disabled:(N=e.disabled)!==null&&N!==void 0?N:b.value});let q=f(b7,A(A({},V),{},{value:d.value,status:e.status}),{element:L});if(S.value||i.hasFeedback){const Z=[...d.value].length;let oe=\"\";typeof S.value==\"object\"?oe=S.value.formatter({value:d.value,count:Z,maxlength:F}):oe=`${Z}${$.value?` / ${F}`:\"\"}`,q=f(\"div\",{hidden:H,class:le(`${p.value}-textarea`,{[`${p.value}-textarea-rtl`]:g.value===\"rtl\",[`${p.value}-textarea-show-count`]:S.value,[`${p.value}-textarea-in-form-item`]:i.isFormItemInput},`${p.value}-textarea-show-count`,G,y.value),style:K,\"data-count\":typeof oe!=\"object\"?oe:void 0},[q,i.hasFeedback&&f(\"span\",{class:`${p.value}-textarea-suffix`},[i.feedbackIcon])])}return v(q)}}});var w7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const _7={click:\"onClick\",hover:\"onMouseover\"},I7=e=>e?f(Om,null,null):f(BI,null,null),qi=ne({compatConfig:{MODE:3},name:\"AInputPassword\",inheritAttrs:!1,props:h(h({},Sd()),{prefixCls:String,inputPrefixCls:String,action:{type:String,default:\"click\"},visibilityToggle:{type:Boolean,default:!0},visible:{type:Boolean,default:void 0},\"onUpdate:visible\":Function,iconRender:Function}),setup(e,t){let{slots:n,attrs:o,expose:r,emit:l}=t;const a=ee(!1),i=()=>{const{disabled:y}=e;y||(a.value=!a.value,l(\"update:visible\",a.value))};ze(()=>{e.visible!==void 0&&(a.value=!!e.visible)});const s=ee();r({focus:()=>{var y;(y=s.value)===null||y===void 0||y.focus()},blur:()=>{var y;(y=s.value)===null||y===void 0||y.blur()}});const d=y=>{const{action:b,iconRender:S=n.iconRender||I7}=e,$=_7[b]||\"\",w=S(a.value),C={[$]:i,class:`${y}-icon`,key:\"passwordIcon\",onMousedown:_=>{_.preventDefault()},onMouseup:_=>{_.preventDefault()}};return dt(Kt(w)?w:f(\"span\",null,[w]),C)},{prefixCls:p,getPrefixCls:m}=Pe(\"input-password\",e),g=I(()=>m(\"input\",e.inputPrefixCls)),v=()=>{const{size:y,visibilityToggle:b}=e,S=w7(e,[\"size\",\"visibilityToggle\"]),$=b&&d(p.value),w=le(p.value,o.class,{[`${p.value}-${y}`]:!!y}),C=h(h(h({},ot(S,[\"suffix\",\"iconRender\",\"action\"])),o),{type:a.value?\"text\":\"password\",class:w,prefixCls:g.value,suffix:$});return y&&(C.size=y),f(Bt,A({ref:s},C),n)};return()=>v()}});Bt.Group=s2;Bt.Search=c2;Bt.TextArea=Rg;Bt.Password=qi;Bt.install=function(e){return e.component(Bt.name,Bt),e.component(Bt.Group.name,Bt.Group),e.component(Bt.Search.name,Bt.Search),e.component(Bt.TextArea.name,Bt.TextArea),e.component(Bt.Password.name,Bt.Password),e};function $d(){return{keyboard:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},afterClose:Function,closable:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},destroyOnClose:{type:Boolean,default:void 0},mousePosition:W.shape({x:Number,y:Number}).loose,title:W.any,footer:W.any,transitionName:String,maskTransitionName:String,animation:W.any,maskAnimation:W.any,wrapStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},maskStyle:{type:Object,default:void 0},prefixCls:String,wrapClassName:String,rootClassName:String,width:[String,Number],height:[String,Number],zIndex:Number,bodyProps:W.any,maskProps:W.any,wrapProps:W.any,getContainer:W.any,dialogStyle:{type:Object,default:void 0},dialogClass:String,closeIcon:W.any,forceRender:{type:Boolean,default:void 0},getOpenCount:Function,focusTriggerAfterClose:{type:Boolean,default:void 0},onClose:Function,modalRender:Function}}function Iy(e,t,n){let o=t;return!o&&n&&(o=`${e}-${n}`),o}let Py=-1;function P7(){return Py+=1,Py}function Ty(e,t){let n=e[`page${t?\"Y\":\"X\"}Offset`];const o=`scroll${t?\"Top\":\"Left\"}`;if(typeof n!=\"number\"){const r=e.document;n=r.documentElement[o],typeof n!=\"number\"&&(n=r.body[o])}return n}function T7(e){const t=e.getBoundingClientRect(),n={left:t.left,top:t.top},o=e.ownerDocument,r=o.defaultView||o.parentWindow;return n.left+=Ty(r),n.top+=Ty(r,!0),n}const O7={width:0,height:0,overflow:\"hidden\",outline:\"none\"},E7={outline:\"none\"},M7=ne({compatConfig:{MODE:3},name:\"DialogContent\",inheritAttrs:!1,props:h(h({},$d()),{motionName:String,ariaId:String,onVisibleChanged:Function,onMousedown:Function,onMouseup:Function}),setup(e,t){let{expose:n,slots:o,attrs:r}=t;const l=J(),a=J(),i=J();n({focus:()=>{var p;(p=l.value)===null||p===void 0||p.focus({preventScroll:!0})},changeActive:p=>{const{activeElement:m}=document;p&&m===a.value?l.value.focus({preventScroll:!0}):!p&&m===l.value&&a.value.focus({preventScroll:!0})}});const s=J(),c=I(()=>{const{width:p,height:m}=e,g={};return p!==void 0&&(g.width=typeof p==\"number\"?`${p}px`:p),m!==void 0&&(g.height=typeof m==\"number\"?`${m}px`:m),s.value&&(g.transformOrigin=s.value),g}),u=()=>{it(()=>{if(i.value){const p=T7(i.value);s.value=e.mousePosition?`${e.mousePosition.x-p.left}px ${e.mousePosition.y-p.top}px`:\"\"}})},d=p=>{e.onVisibleChanged(p)};return()=>{var p,m,g,v;const{prefixCls:y,footer:b=(p=o.footer)===null||p===void 0?void 0:p.call(o),title:S=(m=o.title)===null||m===void 0?void 0:m.call(o),ariaId:$,closable:w,closeIcon:C=(g=o.closeIcon)===null||g===void 0?void 0:g.call(o),onClose:_,bodyStyle:x,bodyProps:P,onMousedown:O,onMouseup:M,visible:E,modalRender:R=o.modalRender,destroyOnClose:D,motionName:z}=e;let T;b&&(T=f(\"div\",{class:`${y}-footer`},[b]));let k;S&&(k=f(\"div\",{class:`${y}-header`},[f(\"div\",{class:`${y}-title`,id:$},[S])]));let B;w&&(B=f(\"button\",{type:\"button\",onClick:_,\"aria-label\":\"Close\",class:`${y}-close`},[C||f(\"span\",{class:`${y}-close-x`},null)]));const L=f(\"div\",{class:`${y}-content`},[B,k,f(\"div\",A({class:`${y}-body`,style:x},P),[(v=o.default)===null||v===void 0?void 0:v.call(o)]),T]),N=bo(z);return f(cn,A(A({},N),{},{onBeforeEnter:u,onAfterEnter:()=>d(!0),onAfterLeave:()=>d(!1)}),{default:()=>[E||!D?xn(f(\"div\",A(A({},r),{},{ref:i,key:\"dialog-element\",role:\"document\",style:[c.value,r.style],class:[y,r.class],onMousedown:O,onMouseup:M}),[f(\"div\",{tabindex:0,ref:l,style:E7},[R?R({originVNode:L}):L]),f(\"div\",{tabindex:0,ref:a,style:O7},null)]),[[On,E]]):null]})}}}),A7=ne({compatConfig:{MODE:3},name:\"DialogMask\",props:{prefixCls:String,visible:Boolean,motionName:String,maskProps:Object},setup(e,t){return()=>{const{prefixCls:n,visible:o,maskProps:r,motionName:l}=e,a=bo(l);return f(cn,a,{default:()=>[xn(f(\"div\",A({class:`${n}-mask`},r),null),[[On,o]])]})}}}),Oy=ne({compatConfig:{MODE:3},name:\"VcDialog\",inheritAttrs:!1,props:Ze(h(h({},$d()),{getOpenCount:Function,scrollLocker:Object}),{mask:!0,visible:!1,keyboard:!0,closable:!0,maskClosable:!0,destroyOnClose:!1,prefixCls:\"rc-dialog\",getOpenCount:()=>null,focusTriggerAfterClose:!0}),setup(e,t){let{attrs:n,slots:o}=t;const r=ee(),l=ee(),a=ee(),i=ee(e.visible),s=ee(`vcDialogTitle${P7()}`),c=b=>{var S,$;if(b)Tr(l.value,document.activeElement)||(r.value=document.activeElement,(S=a.value)===null||S===void 0||S.focus());else{const w=i.value;if(i.value=!1,e.mask&&r.value&&e.focusTriggerAfterClose){try{r.value.focus({preventScroll:!0})}catch{}r.value=null}w&&(($=e.afterClose)===null||$===void 0||$.call(e))}},u=b=>{var S;(S=e.onClose)===null||S===void 0||S.call(e,b)},d=ee(!1),p=ee(),m=()=>{clearTimeout(p.value),d.value=!0},g=()=>{p.value=setTimeout(()=>{d.value=!1})},v=b=>{if(!e.maskClosable)return null;d.value?d.value=!1:l.value===b.target&&u(b)},y=b=>{if(e.keyboard&&b.keyCode===we.ESC){b.stopPropagation(),u(b);return}e.visible&&b.keyCode===we.TAB&&a.value.changeActive(!b.shiftKey)};return pe(()=>e.visible,()=>{e.visible&&(i.value=!0)},{flush:\"post\"}),et(()=>{var b;clearTimeout(p.value),(b=e.scrollLocker)===null||b===void 0||b.unLock()}),ze(()=>{var b,S;(b=e.scrollLocker)===null||b===void 0||b.unLock(),i.value&&((S=e.scrollLocker)===null||S===void 0||S.lock())}),()=>{const{prefixCls:b,mask:S,visible:$,maskTransitionName:w,maskAnimation:C,zIndex:_,wrapClassName:x,rootClassName:P,wrapStyle:O,closable:M,maskProps:E,maskStyle:R,transitionName:D,animation:z,wrapProps:T,title:k=o.title}=e,{style:B,class:L}=n;return f(\"div\",A({class:[`${b}-root`,P]},Gr(e,{data:!0})),[f(A7,{prefixCls:b,visible:S&&$,motionName:Iy(b,w,C),style:h({zIndex:_},R),maskProps:E},null),f(\"div\",A({tabIndex:-1,onKeydown:y,class:le(`${b}-wrap`,x),ref:l,onClick:v,role:\"dialog\",\"aria-labelledby\":k?s.value:null,style:h(h({zIndex:_},O),{display:i.value?null:\"none\"})},T),[f(M7,A(A({},ot(e,[\"scrollLocker\"])),{},{style:B,class:L,onMousedown:m,onMouseup:g,ref:a,closable:M,ariaId:s.value,prefixCls:b,visible:$,onClose:u,onVisibleChanged:c,motionName:Iy(b,D,z)}),o)])])}}}),D7=$d(),d2=ne({compatConfig:{MODE:3},name:\"DialogWrap\",inheritAttrs:!1,props:Ze(D7,{visible:!1}),setup(e,t){let{attrs:n,slots:o}=t;const r=J(e.visible);return gv({},{inTriggerContext:!1}),pe(()=>e.visible,()=>{e.visible&&(r.value=!0)},{flush:\"post\"}),()=>{const{visible:l,getContainer:a,forceRender:i,destroyOnClose:s=!1,afterClose:c}=e;let u=h(h(h({},e),n),{ref:\"_component\",key:\"dialog\"});return a===!1?f(Oy,A(A({},u),{},{getOpenCount:()=>2}),o):!i&&s&&!r.value?null:f(Ni,{autoLock:!0,visible:l,forceRender:i,getContainer:a},{default:d=>(u=h(h(h({},u),d),{afterClose:()=>{c?.(),r.value=!1}}),f(Oy,u,o))})}}});function R7(e){const t=J(null),n=vt(h({},e)),o=J([]),r=l=>{t.value===null&&(o.value=[],t.value=qe(()=>{let a;o.value.forEach(i=>{a=h(h({},a),i)}),h(n,a),t.value=null})),o.value.push(l)};return Ne(()=>{t.value&&qe.cancel(t.value)}),[n,r]}function Ey(e,t,n,o){const r=t+n,l=(n-o)/2;if(n>o){if(t>0)return{[e]:l};if(t<0&&r<o)return{[e]:-l}}else if(t<0||r>o)return{[e]:t<0?l:-l};return{}}function k7(e,t,n,o){const{width:r,height:l}=vA();let a=null;return e<=r&&t<=l?a={x:0,y:0}:(e>r||t>l)&&(a=h(h({},Ey(\"x\",n,e,r)),Ey(\"y\",o,t,l))),a}var N7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const My=Symbol(\"previewGroupContext\"),kg={provide:e=>{Qe(My,e)},inject:()=>Je(My,{isPreviewGroup:ee(!1),previewUrls:I(()=>new Map),setPreviewUrls:()=>{},current:J(null),setCurrent:()=>{},setShowPreview:()=>{},setMousePosition:()=>{},registerImage:null,rootClassName:\"\"})},B7=()=>({previewPrefixCls:String,preview:{type:[Boolean,Object],default:!0},icons:{type:Object,default:()=>({})}}),f2=ne({compatConfig:{MODE:3},name:\"PreviewGroup\",inheritAttrs:!1,props:B7(),setup(e,t){let{slots:n}=t;const o=I(()=>{const C={visible:void 0,onVisibleChange:()=>{},getContainer:void 0,current:0};return typeof e.preview==\"object\"?v2(e.preview,C):C}),r=vt(new Map),l=J(),a=I(()=>o.value.visible),i=I(()=>o.value.getContainer),s=(C,_)=>{var x,P;(P=(x=o.value).onVisibleChange)===null||P===void 0||P.call(x,C,_)},[c,u]=Mt(!!a.value,{value:a,onChange:s}),d=J(null),p=I(()=>a.value!==void 0),m=I(()=>Array.from(r.keys())),g=I(()=>m.value[o.value.current]),v=I(()=>new Map(Array.from(r).filter(C=>{let[,{canPreview:_}]=C;return!!_}).map(C=>{let[_,{url:x}]=C;return[_,x]}))),y=function(C,_){let x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;r.set(C,{url:_,canPreview:x})},b=C=>{l.value=C},S=C=>{d.value=C},$=function(C,_){let x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const P=()=>{r.delete(C)};return r.set(C,{url:_,canPreview:x}),P},w=C=>{C?.stopPropagation(),u(!1),S(null)};return pe(g,C=>{b(C)},{immediate:!0,flush:\"post\"}),ze(()=>{c.value&&p.value&&b(g.value)},{flush:\"post\"}),kg.provide({isPreviewGroup:ee(!0),previewUrls:v,setPreviewUrls:y,current:l,setCurrent:b,setShowPreview:u,setMousePosition:S,registerImage:$}),()=>{const C=N7(o.value,[]);return f(Ve,null,[n.default&&n.default(),f(p2,A(A({},C),{},{\"ria-hidden\":!c.value,visible:c.value,prefixCls:e.previewPrefixCls,onClose:w,mousePosition:d.value,src:v.value.get(l.value),icons:e.icons,getContainer:i.value}),null)])}}}),Jr={x:0,y:0},L7=h(h({},$d()),{src:String,alt:String,rootClassName:String,icons:{type:Object,default:()=>({})}}),p2=ne({compatConfig:{MODE:3},name:\"Preview\",inheritAttrs:!1,props:L7,emits:[\"close\",\"afterClose\"],setup(e,t){let{emit:n,attrs:o}=t;const{rotateLeft:r,rotateRight:l,zoomIn:a,zoomOut:i,close:s,left:c,right:u,flipX:d,flipY:p}=vt(e.icons),m=ee(1),g=ee(0),v=vt({x:1,y:1}),[y,b]=R7(Jr),S=()=>n(\"close\"),$=ee(),w=vt({originX:0,originY:0,deltaX:0,deltaY:0}),C=ee(!1),_=kg.inject(),{previewUrls:x,current:P,isPreviewGroup:O,setCurrent:M}=_,E=I(()=>x.value.size),R=I(()=>Array.from(x.value.keys())),D=I(()=>R.value.indexOf(P.value)),z=I(()=>O.value?x.value.get(P.value):e.src),T=I(()=>O.value&&E.value>1),k=ee({wheelDirection:0}),B=()=>{m.value=1,g.value=0,v.x=1,v.y=1,b(Jr),n(\"afterClose\")},L=Se=>{Se?m.value+=.5:m.value++,b(Jr)},N=Se=>{m.value>1&&(Se?m.value-=.5:m.value--),b(Jr)},F=()=>{g.value+=90},j=()=>{g.value-=90},H=()=>{v.x=-v.x},K=()=>{v.y=-v.y},G=Se=>{Se.preventDefault(),Se.stopPropagation(),D.value>0&&M(R.value[D.value-1])},V=Se=>{Se.preventDefault(),Se.stopPropagation(),D.value<E.value-1&&M(R.value[D.value+1])},q=le({[`${e.prefixCls}-moving`]:C.value}),Z=`${e.prefixCls}-operations-operation`,oe=`${e.prefixCls}-operations-icon`,re=[{icon:s,onClick:S,type:\"close\"},{icon:a,onClick:()=>L(),type:\"zoomIn\"},{icon:i,onClick:()=>N(),type:\"zoomOut\",disabled:I(()=>m.value===1)},{icon:l,onClick:F,type:\"rotateRight\"},{icon:r,onClick:j,type:\"rotateLeft\"},{icon:d,onClick:H,type:\"flipX\"},{icon:p,onClick:K,type:\"flipY\"}],Y=()=>{if(e.visible&&C.value){const Se=$.value.offsetWidth*m.value,X=$.value.offsetHeight*m.value,{left:U,top:ie}=Hc($.value),ve=g.value%180!==0;C.value=!1;const me=k7(ve?X:Se,ve?Se:X,U,ie);me&&b(h({},me))}},Q=Se=>{Se.button===0&&(Se.preventDefault(),Se.stopPropagation(),w.deltaX=Se.pageX-y.x,w.deltaY=Se.pageY-y.y,w.originX=y.x,w.originY=y.y,C.value=!0)},ce=Se=>{e.visible&&C.value&&b({x:Se.pageX-w.deltaX,y:Se.pageY-w.deltaY})},ue=Se=>{if(!e.visible)return;Se.preventDefault();const X=Se.deltaY;k.value={wheelDirection:X}},be=Se=>{!e.visible||!T.value||(Se.preventDefault(),Se.keyCode===we.LEFT?D.value>0&&M(R.value[D.value-1]):Se.keyCode===we.RIGHT&&D.value<E.value-1&&M(R.value[D.value+1]))},Ce=()=>{e.visible&&(m.value!==1&&(m.value=1),(y.x!==Jr.x||y.y!==Jr.y)&&b(Jr))};let ge=()=>{};return Ne(()=>{pe([()=>e.visible,C],()=>{ge();let Se,X;const U=Rt(window,\"mouseup\",Y,!1),ie=Rt(window,\"mousemove\",ce,!1),ve=Rt(window,\"wheel\",ue,{passive:!1}),me=Rt(window,\"keydown\",be,!1);try{window.top!==window.self&&(Se=Rt(window.top,\"mouseup\",Y,!1),X=Rt(window.top,\"mousemove\",ce,!1))}catch{}ge=()=>{U.remove(),ie.remove(),ve.remove(),me.remove(),Se&&Se.remove(),X&&X.remove()}},{flush:\"post\",immediate:!0}),pe([k],()=>{const{wheelDirection:Se}=k.value;Se>0?N(!0):Se<0&&L(!0)})}),Mn(()=>{ge()}),()=>{const{visible:Se,prefixCls:X,rootClassName:U}=e;return f(d2,A(A({},o),{},{transitionName:e.transitionName,maskTransitionName:e.maskTransitionName,closable:!1,keyboard:!0,prefixCls:X,onClose:S,afterClose:B,visible:Se,wrapClassName:q,rootClassName:U,getContainer:e.getContainer}),{default:()=>[f(\"div\",{class:[`${e.prefixCls}-operations-wrapper`,U]},[f(\"ul\",{class:`${e.prefixCls}-operations`},[re.map(ie=>{let{icon:ve,onClick:me,type:he,disabled:se}=ie;return f(\"li\",{class:le(Z,{[`${e.prefixCls}-operations-operation-disabled`]:se&&se?.value}),onClick:me,key:he},[Oo(ve,{class:oe})])})])]),f(\"div\",{class:`${e.prefixCls}-img-wrapper`,style:{transform:`translate3d(${y.x}px, ${y.y}px, 0)`}},[f(\"img\",{onMousedown:Q,onDblclick:Ce,ref:$,class:`${e.prefixCls}-img`,src:z.value,alt:e.alt,style:{transform:`scale3d(${v.x*m.value}, ${v.y*m.value}, 1) rotate(${g.value}deg)`}},null)]),T.value&&f(\"div\",{class:le(`${e.prefixCls}-switch-left`,{[`${e.prefixCls}-switch-left-disabled`]:D.value<=0}),onClick:G},[c]),T.value&&f(\"div\",{class:le(`${e.prefixCls}-switch-right`,{[`${e.prefixCls}-switch-right-disabled`]:D.value>=E.value-1}),onClick:V},[u])]})}}});var F7=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const m2=()=>({src:String,wrapperClassName:String,wrapperStyle:{type:Object,default:void 0},rootClassName:String,prefixCls:String,previewPrefixCls:String,width:[Number,String],height:[Number,String],previewMask:{type:[Boolean,Function],default:void 0},placeholder:W.any,fallback:String,preview:{type:[Boolean,Object],default:!0},onClick:{type:Function},onError:{type:Function}}),v2=(e,t)=>{const n=h({},e);return Object.keys(t).forEach(o=>{e[o]===void 0&&(n[o]=t[o])}),n};let z7=0;const g2=ne({compatConfig:{MODE:3},name:\"VcImage\",inheritAttrs:!1,props:m2(),emits:[\"click\",\"error\"],setup(e,t){let{attrs:n,slots:o,emit:r}=t;const l=I(()=>e.prefixCls),a=I(()=>`${l.value}-preview`),i=I(()=>{const L={visible:void 0,onVisibleChange:()=>{},getContainer:void 0};return typeof e.preview==\"object\"?v2(e.preview,L):L}),s=I(()=>{var L;return(L=i.value.src)!==null&&L!==void 0?L:e.src}),c=I(()=>e.placeholder&&e.placeholder!==!0||o.placeholder),u=I(()=>i.value.visible),d=I(()=>i.value.getContainer),p=I(()=>u.value!==void 0),m=(L,N)=>{var F,j;(j=(F=i.value).onVisibleChange)===null||j===void 0||j.call(F,L,N)},[g,v]=Mt(!!u.value,{value:u,onChange:m}),y=J(c.value?\"loading\":\"normal\");pe(()=>e.src,()=>{y.value=c.value?\"loading\":\"normal\"});const b=J(null),S=I(()=>y.value===\"error\"),$=kg.inject(),{isPreviewGroup:w,setCurrent:C,setShowPreview:_,setMousePosition:x,registerImage:P}=$,O=J(z7++),M=I(()=>e.preview&&!S.value),E=()=>{y.value=\"normal\"},R=L=>{y.value=\"error\",r(\"error\",L)},D=L=>{if(!p.value){const{left:N,top:F}=Hc(L.target);w.value?(C(O.value),x({x:N,y:F})):b.value={x:N,y:F}}w.value?_(!0):v(!0),r(\"click\",L)},z=()=>{v(!1),p.value||(b.value=null)},T=J(null);pe(()=>T,()=>{y.value===\"loading\"&&T.value.complete&&(T.value.naturalWidth||T.value.naturalHeight)&&E()});let k=()=>{};Ne(()=>{pe([s,M],()=>{if(k(),!w.value)return()=>{};k=P(O.value,s.value,M.value),M.value||k()},{flush:\"post\",immediate:!0})}),Mn(()=>{k()});const B=L=>vP(L)?L+\"px\":L;return()=>{const{prefixCls:L,wrapperClassName:N,fallback:F,src:j,placeholder:H,wrapperStyle:K,rootClassName:G,width:V,height:q,crossorigin:Z,decoding:oe,alt:re,sizes:Y,srcset:Q,usemap:ce,class:ue,style:be}=h(h({},e),n),Ce=i.value,{icons:ge,maskClassName:Se}=Ce,X=F7(Ce,[\"icons\",\"maskClassName\"]),U=le(L,N,G,{[`${L}-error`]:S.value}),ie=S.value&&F?F:s.value,ve={crossorigin:Z,decoding:oe,alt:re,sizes:Y,srcset:Q,usemap:ce,width:V,height:q,class:le(`${L}-img`,{[`${L}-img-placeholder`]:H===!0},ue),style:h({height:B(q)},be)};return f(Ve,null,[f(\"div\",{class:U,onClick:M.value?D:me=>{r(\"click\",me)},style:h({width:B(V),height:B(q)},K)},[f(\"img\",A(A(A({},ve),S.value&&F?{src:F}:{onLoad:E,onError:R,src:j}),{},{ref:T}),null),y.value===\"loading\"&&f(\"div\",{\"aria-hidden\":\"true\",class:`${L}-placeholder`},[H||o.placeholder&&o.placeholder()]),o.previewMask&&M.value&&f(\"div\",{class:[`${L}-mask`,Se]},[o.previewMask()])]),!w.value&&M.value&&f(p2,A(A({},X),{},{\"aria-hidden\":!g.value,visible:g.value,prefixCls:a.value,onClose:z,mousePosition:b.value,src:ie,alt:re,getContainer:d.value,icons:ge,rootClassName:G}),null)])}}});g2.PreviewGroup=f2;function Ay(e){return{position:e,top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0}}const h2=e=>{const{componentCls:t}=e;return[{[`${t}-root`]:{[`${t}${e.antCls}-zoom-enter, ${t}${e.antCls}-zoom-appear`]:{transform:\"none\",opacity:0,animationDuration:e.motionDurationSlow,userSelect:\"none\"},[`${t}${e.antCls}-zoom-leave ${t}-content`]:{pointerEvents:\"none\"},[`${t}-mask`]:h(h({},Ay(\"fixed\")),{zIndex:e.zIndexPopupBase,height:\"100%\",backgroundColor:e.colorBgMask,[`${t}-hidden`]:{display:\"none\"}}),[`${t}-wrap`]:h(h({},Ay(\"fixed\")),{overflow:\"auto\",outline:0,WebkitOverflowScrolling:\"touch\"})}},{[`${t}-root`]:Iv(e)}]},H7=e=>{const{componentCls:t}=e;return[{[`${t}-root`]:{[`${t}-wrap`]:{zIndex:e.zIndexPopupBase,position:\"fixed\",inset:0,overflow:\"auto\",outline:0,WebkitOverflowScrolling:\"touch\"},[`${t}-wrap-rtl`]:{direction:\"rtl\"},[`${t}-centered`]:{textAlign:\"center\",\"&::before\":{display:\"inline-block\",width:0,height:\"100%\",verticalAlign:\"middle\",content:'\"\"'},[t]:{top:0,display:\"inline-block\",paddingBottom:0,textAlign:\"start\",verticalAlign:\"middle\"}},[`@media (max-width: ${e.screenSMMax})`]:{[t]:{maxWidth:\"calc(100vw - 16px)\",margin:`${e.marginXS} auto`},[`${t}-centered`]:{[t]:{flex:1}}}}},{[t]:h(h({},Ue(e)),{pointerEvents:\"none\",position:\"relative\",top:100,width:\"auto\",maxWidth:`calc(100vw - ${e.margin*2}px)`,margin:\"0 auto\",paddingBottom:e.paddingLG,[`${t}-title`]:{margin:0,color:e.modalHeadingColor,fontWeight:e.fontWeightStrong,fontSize:e.modalHeaderTitleFontSize,lineHeight:e.modalHeaderTitleLineHeight,wordWrap:\"break-word\"},[`${t}-content`]:{position:\"relative\",backgroundColor:e.modalContentBg,backgroundClip:\"padding-box\",border:0,borderRadius:e.borderRadiusLG,boxShadow:e.boxShadowSecondary,pointerEvents:\"auto\",padding:`${e.paddingMD}px ${e.paddingContentHorizontalLG}px`},[`${t}-close`]:h({position:\"absolute\",top:(e.modalHeaderCloseSize-e.modalCloseBtnSize)/2,insetInlineEnd:(e.modalHeaderCloseSize-e.modalCloseBtnSize)/2,zIndex:e.zIndexPopupBase+10,padding:0,color:e.modalCloseColor,fontWeight:e.fontWeightStrong,lineHeight:1,textDecoration:\"none\",background:\"transparent\",borderRadius:e.borderRadiusSM,width:e.modalConfirmIconSize,height:e.modalConfirmIconSize,border:0,outline:0,cursor:\"pointer\",transition:`color ${e.motionDurationMid}, background-color ${e.motionDurationMid}`,\"&-x\":{display:\"block\",fontSize:e.fontSizeLG,fontStyle:\"normal\",lineHeight:`${e.modalCloseBtnSize}px`,textAlign:\"center\",textTransform:\"none\",textRendering:\"auto\"},\"&:hover\":{color:e.modalIconHoverColor,backgroundColor:e.wireframe?\"transparent\":e.colorFillContent,textDecoration:\"none\"},\"&:active\":{backgroundColor:e.wireframe?\"transparent\":e.colorFillContentHover}},fr(e)),[`${t}-header`]:{color:e.colorText,background:e.modalHeaderBg,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`,marginBottom:e.marginXS},[`${t}-body`]:{fontSize:e.fontSize,lineHeight:e.lineHeight,wordWrap:\"break-word\"},[`${t}-footer`]:{textAlign:\"end\",background:e.modalFooterBg,marginTop:e.marginSM,[`${e.antCls}-btn + ${e.antCls}-btn:not(${e.antCls}-dropdown-trigger)`]:{marginBottom:0,marginInlineStart:e.marginXS}},[`${t}-open`]:{overflow:\"hidden\"}})},{[`${t}-pure-panel`]:{top:\"auto\",padding:0,display:\"flex\",flexDirection:\"column\",[`${t}-content,\n          ${t}-body,\n          ${t}-confirm-body-wrapper`]:{display:\"flex\",flexDirection:\"column\",flex:\"auto\"},[`${t}-confirm-body`]:{marginBottom:\"auto\"}}}]},j7=e=>{const{componentCls:t}=e,n=`${t}-confirm`;return{[n]:{\"&-rtl\":{direction:\"rtl\"},[`${e.antCls}-modal-header`]:{display:\"none\"},[`${n}-body-wrapper`]:h({},Mo()),[`${n}-body`]:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",[`${n}-title`]:{flex:\"0 0 100%\",display:\"block\",overflow:\"hidden\",color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:e.modalHeaderTitleFontSize,lineHeight:e.modalHeaderTitleLineHeight,[`+ ${n}-content`]:{marginBlockStart:e.marginXS,flexBasis:\"100%\",maxWidth:`calc(100% - ${e.modalConfirmIconSize+e.marginSM}px)`}},[`${n}-content`]:{color:e.colorText,fontSize:e.fontSize},[`> ${e.iconCls}`]:{flex:\"none\",marginInlineEnd:e.marginSM,fontSize:e.modalConfirmIconSize,[`+ ${n}-title`]:{flex:1},[`+ ${n}-title + ${n}-content`]:{marginInlineStart:e.modalConfirmIconSize+e.marginSM}}},[`${n}-btns`]:{textAlign:\"end\",marginTop:e.marginSM,[`${e.antCls}-btn + ${e.antCls}-btn`]:{marginBottom:0,marginInlineStart:e.marginXS}}},[`${n}-error ${n}-body > ${e.iconCls}`]:{color:e.colorError},[`${n}-warning ${n}-body > ${e.iconCls},\n        ${n}-confirm ${n}-body > ${e.iconCls}`]:{color:e.colorWarning},[`${n}-info ${n}-body > ${e.iconCls}`]:{color:e.colorInfo},[`${n}-success ${n}-body > ${e.iconCls}`]:{color:e.colorSuccess},[`${t}-zoom-leave ${t}-btns`]:{pointerEvents:\"none\"}}},W7=e=>{const{componentCls:t}=e;return{[`${t}-root`]:{[`${t}-wrap-rtl`]:{direction:\"rtl\",[`${t}-confirm-body`]:{direction:\"rtl\"}}}}},V7=e=>{const{componentCls:t,antCls:n}=e,o=`${t}-confirm`;return{[t]:{[`${t}-content`]:{padding:0},[`${t}-header`]:{padding:e.modalHeaderPadding,borderBottom:`${e.modalHeaderBorderWidth}px ${e.modalHeaderBorderStyle} ${e.modalHeaderBorderColorSplit}`,marginBottom:0},[`${t}-body`]:{padding:e.modalBodyPadding},[`${t}-footer`]:{padding:`${e.modalFooterPaddingVertical}px ${e.modalFooterPaddingHorizontal}px`,borderTop:`${e.modalFooterBorderWidth}px ${e.modalFooterBorderStyle} ${e.modalFooterBorderColorSplit}`,borderRadius:`0 0 ${e.borderRadiusLG}px ${e.borderRadiusLG}px`,marginTop:0}},[o]:{[`${n}-modal-body`]:{padding:`${e.padding*2}px ${e.padding*2}px ${e.paddingLG}px`},[`${o}-body`]:{[`> ${e.iconCls}`]:{marginInlineEnd:e.margin,[`+ ${o}-title + ${o}-content`]:{marginInlineStart:e.modalConfirmIconSize+e.margin}}},[`${o}-btns`]:{marginTop:e.marginLG}}}},K7=Ge(\"Modal\",e=>{const t=e.padding,n=e.fontSizeHeading5,o=e.lineHeightHeading5,r=Le(e,{modalBodyPadding:e.paddingLG,modalHeaderBg:e.colorBgElevated,modalHeaderPadding:`${t}px ${e.paddingLG}px`,modalHeaderBorderWidth:e.lineWidth,modalHeaderBorderStyle:e.lineType,modalHeaderTitleLineHeight:o,modalHeaderTitleFontSize:n,modalHeaderBorderColorSplit:e.colorSplit,modalHeaderCloseSize:o*n+t*2,modalContentBg:e.colorBgElevated,modalHeadingColor:e.colorTextHeading,modalCloseColor:e.colorTextDescription,modalFooterBg:\"transparent\",modalFooterBorderColorSplit:e.colorSplit,modalFooterBorderStyle:e.lineType,modalFooterPaddingVertical:e.paddingXS,modalFooterPaddingHorizontal:e.padding,modalFooterBorderWidth:e.lineWidth,modalConfirmTitleFontSize:e.fontSizeLG,modalIconHoverColor:e.colorIconHover,modalConfirmIconSize:e.fontSize*e.lineHeight,modalCloseBtnSize:e.controlHeightLG*.55});return[H7(r),j7(r),W7(r),h2(r),e.wireframe&&V7(r),Ta(r,\"zoom\")]}),em=e=>({position:e||\"absolute\",inset:0}),G7=e=>{const{iconCls:t,motionDurationSlow:n,paddingXXS:o,marginXXS:r,prefixCls:l}=e;return{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#fff\",background:new mt(\"#000\").setAlpha(.5).toRgbString(),cursor:\"pointer\",opacity:0,transition:`opacity ${n}`,[`.${l}-mask-info`]:h(h({},Gt),{padding:`0 ${o}px`,[t]:{marginInlineEnd:r,svg:{verticalAlign:\"baseline\"}}})}},X7=e=>{const{previewCls:t,modalMaskBg:n,paddingSM:o,previewOperationColorDisabled:r,motionDurationSlow:l}=e,a=new mt(n).setAlpha(.1),i=a.clone().setAlpha(.2);return{[`${t}-operations`]:h(h({},Ue(e)),{display:\"flex\",flexDirection:\"row-reverse\",alignItems:\"center\",color:e.previewOperationColor,listStyle:\"none\",background:a.toRgbString(),pointerEvents:\"auto\",\"&-operation\":{marginInlineStart:o,padding:o,cursor:\"pointer\",transition:`all ${l}`,userSelect:\"none\",\"&:hover\":{background:i.toRgbString()},\"&-disabled\":{color:r,pointerEvents:\"none\"},\"&:last-of-type\":{marginInlineStart:0}},\"&-progress\":{position:\"absolute\",left:{_skip_check_:!0,value:\"50%\"},transform:\"translateX(-50%)\"},\"&-icon\":{fontSize:e.previewOperationSize}})}},U7=e=>{const{modalMaskBg:t,iconCls:n,previewOperationColorDisabled:o,previewCls:r,zIndexPopup:l,motionDurationSlow:a}=e,i=new mt(t).setAlpha(.1),s=i.clone().setAlpha(.2);return{[`${r}-switch-left, ${r}-switch-right`]:{position:\"fixed\",insetBlockStart:\"50%\",zIndex:l+1,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:e.imagePreviewSwitchSize,height:e.imagePreviewSwitchSize,marginTop:-e.imagePreviewSwitchSize/2,color:e.previewOperationColor,background:i.toRgbString(),borderRadius:\"50%\",transform:\"translateY(-50%)\",cursor:\"pointer\",transition:`all ${a}`,pointerEvents:\"auto\",userSelect:\"none\",\"&:hover\":{background:s.toRgbString()},\"&-disabled\":{\"&, &:hover\":{color:o,background:\"transparent\",cursor:\"not-allowed\",[`> ${n}`]:{cursor:\"not-allowed\"}}},[`> ${n}`]:{fontSize:e.previewOperationSize}},[`${r}-switch-left`]:{insetInlineStart:e.marginSM},[`${r}-switch-right`]:{insetInlineEnd:e.marginSM}}},Y7=e=>{const{motionEaseOut:t,previewCls:n,motionDurationSlow:o,componentCls:r}=e;return[{[`${r}-preview-root`]:{[n]:{height:\"100%\",textAlign:\"center\",pointerEvents:\"none\"},[`${n}-body`]:h(h({},em()),{overflow:\"hidden\"}),[`${n}-img`]:{maxWidth:\"100%\",maxHeight:\"100%\",verticalAlign:\"middle\",transform:\"scale3d(1, 1, 1)\",cursor:\"grab\",transition:`transform ${o} ${t} 0s`,userSelect:\"none\",pointerEvents:\"auto\",\"&-wrapper\":h(h({},em()),{transition:`transform ${o} ${t} 0s`,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",\"&::before\":{display:\"inline-block\",width:1,height:\"50%\",marginInlineEnd:-1,content:'\"\"'}})},[`${n}-moving`]:{[`${n}-preview-img`]:{cursor:\"grabbing\",\"&-wrapper\":{transitionDuration:\"0s\"}}}}},{[`${r}-preview-root`]:{[`${n}-wrap`]:{zIndex:e.zIndexPopup}}},{[`${r}-preview-operations-wrapper`]:{position:\"fixed\",insetBlockStart:0,insetInlineEnd:0,zIndex:e.zIndexPopup+1,width:\"100%\"},\"&\":[X7(e),U7(e)]}]},q7=e=>{const{componentCls:t}=e;return{[t]:{position:\"relative\",display:\"inline-block\",[`${t}-img`]:{width:\"100%\",height:\"auto\",verticalAlign:\"middle\"},[`${t}-img-placeholder`]:{backgroundColor:e.colorBgContainerDisabled,backgroundImage:\"url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')\",backgroundRepeat:\"no-repeat\",backgroundPosition:\"center center\",backgroundSize:\"30%\"},[`${t}-mask`]:h({},G7(e)),[`${t}-mask:hover`]:{opacity:1},[`${t}-placeholder`]:h({},em())}}},Z7=e=>{const{previewCls:t}=e;return{[`${t}-root`]:Ta(e,\"zoom\"),\"&\":Iv(e,!0)}},b2=Ge(\"Image\",e=>{const t=`${e.componentCls}-preview`,n=Le(e,{previewCls:t,modalMaskBg:new mt(\"#000\").setAlpha(.45).toRgbString(),imagePreviewSwitchSize:e.controlHeightLG});return[q7(n),Y7(n),h2(Le(n,{componentCls:t})),Z7(n)]},e=>({zIndexPopup:e.zIndexPopupBase+80,previewOperationColor:new mt(e.colorTextLightSolid).toRgbString(),previewOperationColorDisabled:new mt(e.colorTextLightSolid).setAlpha(.25).toRgbString(),previewOperationSize:e.fontSizeIcon*1.5})),y2={rotateLeft:f(HI,null,null),rotateRight:f(zI,null,null),zoomIn:f(FI,null,null),zoomOut:f(LI,null,null),close:f(Wn,null,null),left:f(zr,null,null),right:f(Eo,null,null),flipX:f(uh,null,null),flipY:f(uh,{rotate:90},null)},Q7=()=>({previewPrefixCls:String,preview:Ct()}),S2=ne({compatConfig:{MODE:3},name:\"AImagePreviewGroup\",inheritAttrs:!1,props:Q7(),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:r,rootPrefixCls:l}=Pe(\"image\",e),a=I(()=>`${r.value}-preview`),[i,s]=b2(r),c=I(()=>{const{preview:u}=e;if(u===!1)return u;const d=typeof u==\"object\"?u:{};return h(h({},d),{rootClassName:s.value,transitionName:_n(l.value,\"zoom\",d.transitionName),maskTransitionName:_n(l.value,\"fade\",d.maskTransitionName)})});return()=>i(f(f2,A(A({},h(h({},n),e)),{},{preview:c.value,icons:y2,previewPrefixCls:a.value}),o))}}),il=ne({name:\"AImage\",inheritAttrs:!1,props:m2(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,rootPrefixCls:l,configProvider:a}=Pe(\"image\",e),[i,s]=b2(r),c=I(()=>{const{preview:u}=e;if(u===!1)return u;const d=typeof u==\"object\"?u:{};return h(h({icons:y2},d),{transitionName:_n(l.value,\"zoom\",d.transitionName),maskTransitionName:_n(l.value,\"fade\",d.maskTransitionName)})});return()=>{var u,d;const p=((d=(u=a.locale)===null||u===void 0?void 0:u.value)===null||d===void 0?void 0:d.Image)||En.Image,m=()=>f(\"div\",{class:`${r.value}-mask-info`},[f(Om,null,null),p?.preview]),{previewMask:g=n.previewMask||m}=e;return i(f(g2,A(A({},h(h(h({},o),e),{prefixCls:r.value})),{},{preview:c.value,rootClassName:le(e.rootClassName,s.value)}),h(h({},n),{previewMask:typeof g==\"function\"?g:null})))}}});il.PreviewGroup=S2;il.install=function(e){return e.component(il.name,il),e.component(il.PreviewGroup.name,il.PreviewGroup),e};function tm(){return typeof BigInt==\"function\"}function ai(e){let t=e.trim(),n=t.startsWith(\"-\");n&&(t=t.slice(1)),t=t.replace(/(\\.\\d*[^0])0*$/,\"$1\").replace(/\\.0*$/,\"\").replace(/^0+/,\"\"),t.startsWith(\".\")&&(t=`0${t}`);const o=t||\"0\",r=o.split(\".\"),l=r[0]||\"0\",a=r[1]||\"0\";l===\"0\"&&a===\"0\"&&(n=!1);const i=n?\"-\":\"\";return{negative:n,negativeStr:i,trimStr:o,integerStr:l,decimalStr:a,fullStr:`${i}${o}`}}function Ng(e){const t=String(e);return!Number.isNaN(Number(t))&&t.includes(\"e\")}function Mi(e){const t=String(e);if(Ng(e)){let n=Number(t.slice(t.indexOf(\"e-\")+2));const o=t.match(/\\.(\\d+)/);return o?.[1]&&(n+=o[1].length),n}return t.includes(\".\")&&Lg(t)?t.length-t.indexOf(\".\")-1:0}function Bg(e){let t=String(e);if(Ng(e)){if(e>Number.MAX_SAFE_INTEGER)return String(tm()?BigInt(e).toString():Number.MAX_SAFE_INTEGER);if(e<Number.MIN_SAFE_INTEGER)return String(tm()?BigInt(e).toString():Number.MIN_SAFE_INTEGER);t=e.toFixed(Mi(t))}return ai(t).fullStr}function Lg(e){return typeof e==\"number\"?!Number.isNaN(e):e?/^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(e)||/^\\s*-?\\d+\\.\\s*$/.test(e)||/^\\s*-?\\.\\d+\\s*$/.test(e):!1}function $2(e){return!e&&e!==0&&!Number.isNaN(e)||!String(e).trim()}class sl{constructor(t){if(this.origin=\"\",$2(t)){this.empty=!0;return}this.origin=String(t),this.number=Number(t)}negate(){return new sl(-this.toNumber())}add(t){if(this.isInvalidate())return new sl(t);const n=Number(t);if(Number.isNaN(n))return this;const o=this.number+n;if(o>Number.MAX_SAFE_INTEGER)return new sl(Number.MAX_SAFE_INTEGER);if(o<Number.MIN_SAFE_INTEGER)return new sl(Number.MIN_SAFE_INTEGER);const r=Math.max(Mi(this.number),Mi(n));return new sl(o.toFixed(r))}isEmpty(){return this.empty}isNaN(){return Number.isNaN(this.number)}isInvalidate(){return this.isEmpty()||this.isNaN()}equals(t){return this.toNumber()===t?.toNumber()}lessEquals(t){return this.add(t.negate().toString()).toNumber()<=0}toNumber(){return this.number}toString(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)?this.isInvalidate()?\"\":Bg(this.number):this.origin}}class Zl{constructor(t){if(this.origin=\"\",$2(t)){this.empty=!0;return}if(this.origin=String(t),t===\"-\"||Number.isNaN(t)){this.nan=!0;return}let n=t;if(Ng(n)&&(n=Number(n)),n=typeof n==\"string\"?n:Bg(n),Lg(n)){const o=ai(n);this.negative=o.negative;const r=o.trimStr.split(\".\");this.integer=BigInt(r[0]);const l=r[1]||\"0\";this.decimal=BigInt(l),this.decimalLen=l.length}else this.nan=!0}getMark(){return this.negative?\"-\":\"\"}getIntegerStr(){return this.integer.toString()}getDecimalStr(){return this.decimal.toString().padStart(this.decimalLen,\"0\")}alignDecimal(t){const n=`${this.getMark()}${this.getIntegerStr()}${this.getDecimalStr().padEnd(t,\"0\")}`;return BigInt(n)}negate(){const t=new Zl(this.toString());return t.negative=!t.negative,t}add(t){if(this.isInvalidate())return new Zl(t);const n=new Zl(t);if(n.isInvalidate())return this;const o=Math.max(this.getDecimalStr().length,n.getDecimalStr().length),r=this.alignDecimal(o),l=n.alignDecimal(o),a=(r+l).toString(),{negativeStr:i,trimStr:s}=ai(a),c=`${i}${s.padStart(o+1,\"0\")}`;return new Zl(`${c.slice(0,-o)}.${c.slice(-o)}`)}isEmpty(){return this.empty}isNaN(){return this.nan}isInvalidate(){return this.isEmpty()||this.isNaN()}equals(t){return this.toString()===t?.toString()}lessEquals(t){return this.add(t.negate().toString()).toNumber()<=0}toNumber(){return this.isNaN()?NaN:Number(this.toString())}toString(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)?this.isInvalidate()?\"\":ai(`${this.getMark()}${this.getIntegerStr()}.${this.getDecimalStr()}`).fullStr:this.origin}}function Fo(e){return tm()?new Zl(e):new sl(e)}function nm(e,t,n){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===\"\")return\"\";const{negativeStr:r,integerStr:l,decimalStr:a}=ai(e),i=`${t}${a}`,s=`${r}${l}`;if(n>=0){const c=Number(a[n]);if(c>=5&&!o){const u=Fo(e).add(`${r}0.${\"0\".repeat(n)}${10-c}`);return nm(u.toString(),t,n,o)}return n===0?s:`${s}${t}${a.padEnd(n,\"0\").slice(0,n)}`}return i===\".0\"?s:`${s}${i}`}const J7=200,ez=600,tz=ne({compatConfig:{MODE:3},name:\"StepHandler\",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:de()},slots:Object,setup(e,t){let{slots:n,emit:o}=t;const r=J(),l=(i,s)=>{i.preventDefault(),o(\"step\",s);function c(){o(\"step\",s),r.value=setTimeout(c,J7)}r.value=setTimeout(c,ez)},a=()=>{clearTimeout(r.value)};return et(()=>{a()}),()=>{if(bv())return null;const{prefixCls:i,upDisabled:s,downDisabled:c}=e,u=`${i}-handler`,d=le(u,`${u}-up`,{[`${u}-up-disabled`]:s}),p=le(u,`${u}-down`,{[`${u}-down-disabled`]:c}),m={unselectable:\"on\",role:\"button\",onMouseup:a,onMouseleave:a},{upNode:g,downNode:v}=n;return f(\"div\",{class:`${u}-wrap`},[f(\"span\",A(A({},m),{},{onMousedown:y=>{l(y,!0)},\"aria-label\":\"Increase Value\",\"aria-disabled\":s,class:d}),[g?.()||f(\"span\",{unselectable:\"on\",class:`${i}-handler-up-inner`},null)]),f(\"span\",A(A({},m),{},{onMousedown:y=>{l(y,!1)},\"aria-label\":\"Decrease Value\",\"aria-disabled\":c,class:p}),[v?.()||f(\"span\",{unselectable:\"on\",class:`${i}-handler-down-inner`},null)])])}}});function nz(e,t){const n=J(null);function o(){try{const{selectionStart:l,selectionEnd:a,value:i}=e.value,s=i.substring(0,l),c=i.substring(a);n.value={start:l,end:a,value:i,beforeTxt:s,afterTxt:c}}catch{}}function r(){if(e.value&&n.value&&t.value)try{const{value:l}=e.value,{beforeTxt:a,afterTxt:i,start:s}=n.value;let c=l.length;if(l.endsWith(i))c=l.length-n.value.afterTxt.length;else if(l.startsWith(a))c=a.length;else{const u=a[s-1],d=l.indexOf(u,s-1);d!==-1&&(c=d+1)}e.value.setSelectionRange(c,c)}catch(l){`${l.message}`}}return[o,r]}const oz=()=>{const e=ee(0),t=()=>{qe.cancel(e.value)};return et(()=>{t()}),n=>{t(),e.value=qe(()=>{n()})}};var rz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Dy=(e,t)=>e||t.isEmpty()?t.toString():t.toNumber(),Ry=e=>{const t=Fo(e);return t.isInvalidate()?null:t},C2=()=>({stringMode:ye(),defaultValue:Fe([String,Number]),value:Fe([String,Number]),prefixCls:ke(),min:Fe([String,Number]),max:Fe([String,Number]),step:Fe([String,Number],1),tabindex:Number,controls:ye(!0),readonly:ye(),disabled:ye(),autofocus:ye(),keyboard:ye(!0),parser:de(),formatter:de(),precision:Number,decimalSeparator:String,onInput:de(),onChange:de(),onPressEnter:de(),onStep:de(),onBlur:de(),onFocus:de()}),lz=ne({compatConfig:{MODE:3},name:\"InnerInputNumber\",inheritAttrs:!1,props:h(h({},C2()),{lazy:Boolean}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:r,expose:l}=t;const a=ee(),i=ee(!1),s=ee(!1),c=ee(!1),u=ee(Fo(e.value));function d(H){e.value===void 0&&(u.value=H)}const p=(H,K)=>{if(!K)return e.precision>=0?e.precision:Math.max(Mi(H),Mi(e.step))},m=H=>{const K=String(H);if(e.parser)return e.parser(K);let G=K;return e.decimalSeparator&&(G=G.replace(e.decimalSeparator,\".\")),G.replace(/[^\\w.-]+/g,\"\")},g=ee(\"\"),v=(H,K)=>{if(e.formatter)return e.formatter(H,{userTyping:K,input:String(g.value)});let G=typeof H==\"number\"?Bg(H):H;if(!K){const V=p(G,K);if(Lg(G)&&(e.decimalSeparator||V>=0)){const q=e.decimalSeparator||\".\";G=nm(G,q,V)}}return G},y=(()=>{const H=e.value;return u.value.isInvalidate()&&[\"string\",\"number\"].includes(typeof H)?Number.isNaN(H)?\"\":H:v(u.value.toString(),!1)})();g.value=y;function b(H,K){g.value=v(H.isInvalidate()?H.toString(!1):H.toString(!K),K)}const S=I(()=>Ry(e.max)),$=I(()=>Ry(e.min)),w=I(()=>!S.value||!u.value||u.value.isInvalidate()?!1:S.value.lessEquals(u.value)),C=I(()=>!$.value||!u.value||u.value.isInvalidate()?!1:u.value.lessEquals($.value)),[_,x]=nz(a,i),P=H=>S.value&&!H.lessEquals(S.value)?S.value:$.value&&!$.value.lessEquals(H)?$.value:null,O=H=>!P(H),M=(H,K)=>{var G;let V=H,q=O(V)||V.isEmpty();if(!V.isEmpty()&&!K&&(V=P(V)||V,q=!0),!e.readonly&&!e.disabled&&q){const Z=V.toString(),oe=p(Z,K);return oe>=0&&(V=Fo(nm(Z,\".\",oe))),V.equals(u.value)||(d(V),(G=e.onChange)===null||G===void 0||G.call(e,V.isEmpty()?null:Dy(e.stringMode,V)),e.value===void 0&&b(V,K)),V}return u.value},E=oz(),R=H=>{var K;if(_(),g.value=H,!c.value){const G=m(H),V=Fo(G);V.isNaN()||M(V,!0)}(K=e.onInput)===null||K===void 0||K.call(e,H),E(()=>{let G=H;e.parser||(G=H.replace(/。/g,\".\")),G!==H&&R(G)})},D=()=>{c.value=!0},z=()=>{c.value=!1,R(a.value.value)},T=H=>{R(H.target.value)},k=H=>{var K,G;if(H&&w.value||!H&&C.value)return;s.value=!1;let V=Fo(e.step);H||(V=V.negate());const q=(u.value||Fo(0)).add(V.toString()),Z=M(q,!1);(K=e.onStep)===null||K===void 0||K.call(e,Dy(e.stringMode,Z),{offset:e.step,type:H?\"up\":\"down\"}),(G=a.value)===null||G===void 0||G.focus()},B=H=>{const K=Fo(m(g.value));let G=K;K.isNaN()?G=u.value:G=M(K,H),e.value!==void 0?b(u.value,!1):G.isNaN()||b(G,!1)},L=()=>{s.value=!0},N=H=>{var K;const{which:G}=H;s.value=!0,G===we.ENTER&&(c.value||(s.value=!1),B(!1),(K=e.onPressEnter)===null||K===void 0||K.call(e,H)),e.keyboard!==!1&&!c.value&&[we.UP,we.DOWN].includes(G)&&(k(we.UP===G),H.preventDefault())},F=()=>{s.value=!1},j=H=>{B(!1),i.value=!1,s.value=!1,r(\"blur\",H)};return pe(()=>e.precision,()=>{u.value.isInvalidate()||b(u.value,!1)},{flush:\"post\"}),pe(()=>e.value,()=>{const H=Fo(e.value);u.value=H;const K=Fo(m(g.value));(!H.equals(K)||!s.value||e.formatter)&&b(H,s.value)},{flush:\"post\"}),pe(g,()=>{e.formatter&&x()},{flush:\"post\"}),pe(()=>e.disabled,H=>{H&&(i.value=!1)}),l({focus:()=>{var H;(H=a.value)===null||H===void 0||H.focus()},blur:()=>{var H;(H=a.value)===null||H===void 0||H.blur()}}),()=>{const H=h(h({},n),e),{prefixCls:K=\"rc-input-number\",min:G,max:V,step:q=1,defaultValue:Z,value:oe,disabled:re,readonly:Y,keyboard:Q,controls:ce=!0,autofocus:ue,stringMode:be,parser:Ce,formatter:ge,precision:Se,decimalSeparator:X,onChange:U,onInput:ie,onPressEnter:ve,onStep:me,lazy:he,class:se,style:te}=H,ae=rz(H,[\"prefixCls\",\"min\",\"max\",\"step\",\"defaultValue\",\"value\",\"disabled\",\"readonly\",\"keyboard\",\"controls\",\"autofocus\",\"stringMode\",\"parser\",\"formatter\",\"precision\",\"decimalSeparator\",\"onChange\",\"onInput\",\"onPressEnter\",\"onStep\",\"lazy\",\"class\",\"style\"]),{upHandler:fe,downHandler:Ie}=o,Te=`${K}-input`,Re={};return he?Re.onChange=T:Re.onInput=T,f(\"div\",{class:le(K,se,{[`${K}-focused`]:i.value,[`${K}-disabled`]:re,[`${K}-readonly`]:Y,[`${K}-not-a-number`]:u.value.isNaN(),[`${K}-out-of-range`]:!u.value.isInvalidate()&&!O(u.value)}),style:te,onKeydown:N,onKeyup:F},[ce&&f(tz,{prefixCls:K,upDisabled:w.value,downDisabled:C.value,onStep:k},{upNode:fe,downNode:Ie}),f(\"div\",{class:`${Te}-wrap`},[f(\"input\",A(A(A({autofocus:ue,autocomplete:\"off\",role:\"spinbutton\",\"aria-valuemin\":G,\"aria-valuemax\":V,\"aria-valuenow\":u.value.isInvalidate()?null:u.value.toString(),step:q},ae),{},{ref:a,class:Te,value:g.value,disabled:re,readonly:Y,onFocus:$e=>{i.value=!0,r(\"focus\",$e)}},Re),{},{onBlur:j,onCompositionstart:D,onCompositionend:z,onBeforeinput:L}),null)])])}}});function Tf(e){return e!=null}const az=e=>{const{componentCls:t,lineWidth:n,lineType:o,colorBorder:r,borderRadius:l,fontSizeLG:a,controlHeightLG:i,controlHeightSM:s,colorError:c,inputPaddingHorizontalSM:u,colorTextDescription:d,motionDurationMid:p,colorPrimary:m,controlHeight:g,inputPaddingHorizontal:v,colorBgContainer:y,colorTextDisabled:b,borderRadiusSM:S,borderRadiusLG:$,controlWidth:w,handleVisible:C}=e;return[{[t]:h(h(h(h({},Ue(e)),Al(e)),Wi(e,t)),{display:\"inline-block\",width:w,margin:0,padding:0,border:`${n}px ${o} ${r}`,borderRadius:l,\"&-rtl\":{direction:\"rtl\",[`${t}-input`]:{direction:\"rtl\"}},\"&-lg\":{padding:0,fontSize:a,borderRadius:$,[`input${t}-input`]:{height:i-2*n}},\"&-sm\":{padding:0,borderRadius:S,[`input${t}-input`]:{height:s-2*n,padding:`0 ${u}px`}},\"&:hover\":h({},Aa(e)),\"&-focused\":h({},jr(e)),\"&-disabled\":h(h({},fg(e)),{[`${t}-input`]:{cursor:\"not-allowed\"}}),\"&-out-of-range\":{input:{color:c}},\"&-group\":h(h(h({},Ue(e)),Tx(e)),{\"&-wrapper\":{display:\"inline-block\",textAlign:\"start\",verticalAlign:\"top\",[`${t}-affix-wrapper`]:{width:\"100%\"},\"&-lg\":{[`${t}-group-addon`]:{borderRadius:$}},\"&-sm\":{[`${t}-group-addon`]:{borderRadius:S}}}}),[t]:{\"&-input\":h(h({width:\"100%\",height:g-2*n,padding:`0 ${v}px`,textAlign:\"start\",backgroundColor:\"transparent\",border:0,borderRadius:l,outline:0,transition:`all ${p} linear`,appearance:\"textfield\",color:e.colorText,fontSize:\"inherit\",verticalAlign:\"top\"},dg(e.colorTextPlaceholder)),{'&[type=\"number\"]::-webkit-inner-spin-button, &[type=\"number\"]::-webkit-outer-spin-button':{margin:0,webkitAppearance:\"none\",appearance:\"none\"}})}})},{[t]:{[`&:hover ${t}-handler-wrap, &-focused ${t}-handler-wrap`]:{opacity:1},[`${t}-handler-wrap`]:{position:\"absolute\",insetBlockStart:0,insetInlineEnd:0,width:e.handleWidth,height:\"100%\",background:y,borderStartStartRadius:0,borderStartEndRadius:l,borderEndEndRadius:l,borderEndStartRadius:0,opacity:C===!0?1:0,display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",transition:`opacity ${p} linear ${p}`,[`${t}-handler`]:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"auto\",height:\"40%\",[`\n              ${t}-handler-up-inner,\n              ${t}-handler-down-inner\n            `]:{marginInlineEnd:0,fontSize:e.handleFontSize}}},[`${t}-handler`]:{height:\"50%\",overflow:\"hidden\",color:d,fontWeight:\"bold\",lineHeight:0,textAlign:\"center\",cursor:\"pointer\",borderInlineStart:`${n}px ${o} ${r}`,transition:`all ${p} linear`,\"&:active\":{background:e.colorFillAlter},\"&:hover\":{height:\"60%\",[`\n              ${t}-handler-up-inner,\n              ${t}-handler-down-inner\n            `]:{color:m}},\"&-up-inner, &-down-inner\":h(h({},Il()),{color:d,transition:`all ${p} linear`,userSelect:\"none\"})},[`${t}-handler-up`]:{borderStartEndRadius:l},[`${t}-handler-down`]:{borderBlockStart:`${n}px ${o} ${r}`,borderEndEndRadius:l},\"&-disabled, &-readonly\":{[`${t}-handler-wrap`]:{display:\"none\"},[`${t}-input`]:{color:\"inherit\"}},[`\n          ${t}-handler-up-disabled,\n          ${t}-handler-down-disabled\n        `]:{cursor:\"not-allowed\"},[`\n          ${t}-handler-up-disabled:hover &-handler-up-inner,\n          ${t}-handler-down-disabled:hover &-handler-down-inner\n        `]:{color:b}}},{[`${t}-borderless`]:{borderColor:\"transparent\",boxShadow:\"none\",[`${t}-handler-down`]:{borderBlockStartWidth:0}}}]},iz=e=>{const{componentCls:t,inputPaddingHorizontal:n,inputAffixPadding:o,controlWidth:r,borderRadiusLG:l,borderRadiusSM:a}=e;return{[`${t}-affix-wrapper`]:h(h(h({},Al(e)),Wi(e,`${t}-affix-wrapper`)),{position:\"relative\",display:\"inline-flex\",width:r,padding:0,paddingInlineStart:n,\"&-lg\":{borderRadius:l},\"&-sm\":{borderRadius:a},[`&:not(${t}-affix-wrapper-disabled):hover`]:h(h({},Aa(e)),{zIndex:1}),\"&-focused, &:focus\":{zIndex:1},\"&-disabled\":{[`${t}[disabled]`]:{background:\"transparent\"}},[`> div${t}`]:{width:\"100%\",border:\"none\",outline:\"none\",[`&${t}-focused`]:{boxShadow:\"none !important\"}},[`input${t}-input`]:{padding:0},\"&::before\":{width:0,visibility:\"hidden\",content:'\"\\\\a0\"'},[`${t}-handler-wrap`]:{zIndex:2},[t]:{\"&-prefix, &-suffix\":{display:\"flex\",flex:\"none\",alignItems:\"center\",pointerEvents:\"none\"},\"&-prefix\":{marginInlineEnd:o},\"&-suffix\":{position:\"absolute\",insetBlockStart:0,insetInlineEnd:0,zIndex:1,height:\"100%\",marginInlineEnd:n,marginInlineStart:o}}})}},sz=Ge(\"InputNumber\",e=>{const t=Dl(e);return[az(t),iz(t),Oa(t)]},e=>({controlWidth:90,handleWidth:e.controlHeightSM-e.lineWidth*2,handleFontSize:e.fontSize/2,handleVisible:\"auto\"}));var cz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const ky=C2(),uz=()=>h(h({},ky),{size:ke(),bordered:ye(!0),placeholder:String,name:String,id:String,type:String,addonBefore:W.any,addonAfter:W.any,prefix:W.any,\"onUpdate:value\":ky.onChange,valueModifiers:Object,status:ke()}),Of=ne({compatConfig:{MODE:3},name:\"AInputNumber\",inheritAttrs:!1,props:uz(),slots:Object,setup(e,t){let{emit:n,expose:o,attrs:r,slots:l}=t;var a;const i=Jt(),s=un.useInject(),c=I(()=>Do(s.status,e.status)),{prefixCls:u,size:d,direction:p,disabled:m}=Pe(\"input-number\",e),{compactSize:g,compactItemClassnames:v}=Xr(u,p),y=zn(),b=I(()=>{var D;return(D=m.value)!==null&&D!==void 0?D:y.value}),[S,$]=sz(u),w=I(()=>g.value||d.value),C=ee((a=e.value)!==null&&a!==void 0?a:e.defaultValue),_=ee(!1);pe(()=>e.value,()=>{C.value=e.value});const x=ee(null),P=()=>{var D;(D=x.value)===null||D===void 0||D.focus()};o({focus:P,blur:()=>{var D;(D=x.value)===null||D===void 0||D.blur()}});const M=D=>{e.value===void 0&&(C.value=D),n(\"update:value\",D),n(\"change\",D),i.onFieldChange()},E=D=>{_.value=!1,n(\"blur\",D),i.onFieldBlur()},R=D=>{_.value=!0,n(\"focus\",D)};return()=>{var D,z,T,k;const{hasFeedback:B,isFormItemInput:L,feedbackIcon:N}=s,F=(D=e.id)!==null&&D!==void 0?D:i.id.value,j=h(h(h({},r),e),{id:F,disabled:b.value}),{class:H,bordered:K,readonly:G,style:V,addonBefore:q=(z=l.addonBefore)===null||z===void 0?void 0:z.call(l),addonAfter:Z=(T=l.addonAfter)===null||T===void 0?void 0:T.call(l),prefix:oe=(k=l.prefix)===null||k===void 0?void 0:k.call(l),valueModifiers:re={}}=j,Y=cz(j,[\"class\",\"bordered\",\"readonly\",\"style\",\"addonBefore\",\"addonAfter\",\"prefix\",\"valueModifiers\"]),Q=u.value,ce=le({[`${Q}-lg`]:w.value===\"large\",[`${Q}-sm`]:w.value===\"small\",[`${Q}-rtl`]:p.value===\"rtl\",[`${Q}-readonly`]:G,[`${Q}-borderless`]:!K,[`${Q}-in-form-item`]:L},Cn(Q,c.value),H,v.value,$.value);let ue=f(lz,A(A({},ot(Y,[\"size\",\"defaultValue\"])),{},{ref:x,lazy:!!re.lazy,value:C.value,class:ce,prefixCls:Q,readonly:G,onChange:M,onBlur:E,onFocus:R}),{upHandler:l.upIcon?()=>f(\"span\",{class:`${Q}-handler-up-inner`},[l.upIcon()]):()=>f(jI,{class:`${Q}-handler-up-inner`},null),downHandler:l.downIcon?()=>f(\"span\",{class:`${Q}-handler-down-inner`},[l.downIcon()]):()=>f(xa,{class:`${Q}-handler-down-inner`},null)});const be=Tf(q)||Tf(Z),Ce=Tf(oe);if(Ce||B){const ge=le(`${Q}-affix-wrapper`,Cn(`${Q}-affix-wrapper`,c.value,B),{[`${Q}-affix-wrapper-focused`]:_.value,[`${Q}-affix-wrapper-disabled`]:b.value,[`${Q}-affix-wrapper-sm`]:w.value===\"small\",[`${Q}-affix-wrapper-lg`]:w.value===\"large\",[`${Q}-affix-wrapper-rtl`]:p.value===\"rtl\",[`${Q}-affix-wrapper-readonly`]:G,[`${Q}-affix-wrapper-borderless`]:!K,[`${H}`]:!be&&H},$.value);ue=f(\"div\",{class:ge,style:V,onClick:P},[Ce&&f(\"span\",{class:`${Q}-prefix`},[oe]),ue,B&&f(\"span\",{class:`${Q}-suffix`},[N])])}if(be){const ge=`${Q}-group`,Se=`${ge}-addon`,X=q?f(\"div\",{class:Se},[q]):null,U=Z?f(\"div\",{class:Se},[Z]):null,ie=le(`${Q}-wrapper`,ge,{[`${ge}-rtl`]:p.value===\"rtl\"},$.value),ve=le(`${Q}-group-wrapper`,{[`${Q}-group-wrapper-sm`]:w.value===\"small\",[`${Q}-group-wrapper-lg`]:w.value===\"large\",[`${Q}-group-wrapper-rtl`]:p.value===\"rtl\"},Cn(`${u}-group-wrapper`,c.value,B),H,$.value);ue=f(\"div\",{class:ve,style:V},[f(\"div\",{class:ie},[X&&f($i,null,{default:()=>[f(Gc,null,{default:()=>[X]})]}),ue,U&&f($i,null,{default:()=>[f(Gc,null,{default:()=>[U]})]})])])}return S(dt(ue,{style:V}))}}}),dz=h(Of,{install:e=>(e.component(Of.name,Of),e)}),fz=e=>{const{componentCls:t,colorBgContainer:n,colorBgBody:o,colorText:r}=e;return{[`${t}-sider-light`]:{background:n,[`${t}-sider-trigger`]:{color:r,background:n},[`${t}-sider-zero-width-trigger`]:{color:r,background:n,border:`1px solid ${o}`,borderInlineStart:0}}}},pz=e=>{const{antCls:t,componentCls:n,colorText:o,colorTextLightSolid:r,colorBgHeader:l,colorBgBody:a,colorBgTrigger:i,layoutHeaderHeight:s,layoutHeaderPaddingInline:c,layoutHeaderColor:u,layoutFooterPadding:d,layoutTriggerHeight:p,layoutZeroTriggerSize:m,motionDurationMid:g,motionDurationSlow:v,fontSize:y,borderRadius:b}=e;return{[n]:h(h({display:\"flex\",flex:\"auto\",flexDirection:\"column\",color:o,minHeight:0,background:a,\"&, *\":{boxSizing:\"border-box\"},[`&${n}-has-sider`]:{flexDirection:\"row\",[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:\"0 0 auto\"},[`${n}-header`]:{height:s,paddingInline:c,color:u,lineHeight:`${s}px`,background:l,[`${t}-menu`]:{lineHeight:\"inherit\"}},[`${n}-footer`]:{padding:d,color:o,fontSize:y,background:a},[`${n}-content`]:{flex:\"auto\",minHeight:0},[`${n}-sider`]:{position:\"relative\",minWidth:0,background:l,transition:`all ${g}, background 0s`,\"&-children\":{height:\"100%\",marginTop:-.1,paddingTop:.1,[`${t}-menu${t}-menu-inline-collapsed`]:{width:\"auto\"}},\"&-has-trigger\":{paddingBottom:p},\"&-right\":{order:1},\"&-trigger\":{position:\"fixed\",bottom:0,zIndex:1,height:p,color:r,lineHeight:`${p}px`,textAlign:\"center\",background:i,cursor:\"pointer\",transition:`all ${g}`},\"&-zero-width\":{\"> *\":{overflow:\"hidden\"},\"&-trigger\":{position:\"absolute\",top:s,insetInlineEnd:-m,zIndex:1,width:m,height:m,color:r,fontSize:e.fontSizeXL,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:l,borderStartStartRadius:0,borderStartEndRadius:b,borderEndEndRadius:b,borderEndStartRadius:0,cursor:\"pointer\",transition:`background ${v} ease`,\"&::after\":{position:\"absolute\",inset:0,background:\"transparent\",transition:`all ${v}`,content:'\"\"'},\"&:hover::after\":{background:\"rgba(255, 255, 255, 0.2)\"},\"&-right\":{insetInlineStart:-m,borderStartStartRadius:b,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:b}}}}},fz(e)),{\"&-rtl\":{direction:\"rtl\"}})}},mz=Ge(\"Layout\",e=>{const{colorText:t,controlHeightSM:n,controlHeight:o,controlHeightLG:r,marginXXS:l}=e,a=r*1.25,i=Le(e,{layoutHeaderHeight:o*2,layoutHeaderPaddingInline:a,layoutHeaderColor:t,layoutFooterPadding:`${n}px ${a}px`,layoutTriggerHeight:r+l*2,layoutZeroTriggerSize:r});return[pz(i)]},e=>{const{colorBgLayout:t}=e;return{colorBgHeader:\"#001529\",colorBgBody:t,colorBgTrigger:\"#002140\"}}),Fg=()=>({prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String});function Cd(e){let{suffixCls:t,tagName:n,name:o}=e;return r=>ne({compatConfig:{MODE:3},name:o,props:Fg(),setup(a,i){let{slots:s}=i;const{prefixCls:c}=Pe(t,a);return()=>{const u=h(h({},a),{prefixCls:c.value,tagName:n});return f(r,u,s)}}})}const zg=ne({compatConfig:{MODE:3},props:Fg(),setup(e,t){let{slots:n}=t;return()=>f(e.tagName,{class:e.prefixCls},n)}}),vz=ne({compatConfig:{MODE:3},inheritAttrs:!1,props:Fg(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"\",e),[a,i]=mz(r),s=J([]);Qe(G1,{addSider:d=>{s.value=[...s.value,d]},removeSider:d=>{s.value=s.value.filter(p=>p!==d)}});const u=I(()=>{const{prefixCls:d,hasSider:p}=e;return{[i.value]:!0,[`${d}`]:!0,[`${d}-has-sider`]:typeof p==\"boolean\"?p:s.value.length>0,[`${d}-rtl`]:l.value===\"rtl\"}});return()=>{const{tagName:d}=e;return a(f(d,h(h({},o),{class:[u.value,o.class]}),n))}}}),Ef=Cd({suffixCls:\"layout\",tagName:\"section\",name:\"ALayout\"})(vz),pc=Cd({suffixCls:\"layout-header\",tagName:\"header\",name:\"ALayoutHeader\"})(zg),mc=Cd({suffixCls:\"layout-footer\",tagName:\"footer\",name:\"ALayoutFooter\"})(zg),vc=Cd({suffixCls:\"layout-content\",tagName:\"main\",name:\"ALayoutContent\"})(zg),Ny={xs:\"479.98px\",sm:\"575.98px\",md:\"767.98px\",lg:\"991.98px\",xl:\"1199.98px\",xxl:\"1599.98px\",xxxl:\"1999.98px\"},gz=()=>({prefixCls:String,collapsible:{type:Boolean,default:void 0},collapsed:{type:Boolean,default:void 0},defaultCollapsed:{type:Boolean,default:void 0},reverseArrow:{type:Boolean,default:void 0},zeroWidthTriggerStyle:{type:Object,default:void 0},trigger:W.any,width:W.oneOfType([W.number,W.string]),collapsedWidth:W.oneOfType([W.number,W.string]),breakpoint:W.oneOf(hn(\"xs\",\"sm\",\"md\",\"lg\",\"xl\",\"xxl\",\"xxxl\")),theme:W.oneOf(hn(\"light\",\"dark\")).def(\"dark\"),onBreakpoint:Function,onCollapse:Function}),hz=(()=>{let e=0;return function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\";return e+=1,`${t}${e}`}})(),gc=ne({compatConfig:{MODE:3},name:\"ALayoutSider\",inheritAttrs:!1,props:Ze(gz(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:[\"breakpoint\",\"update:collapsed\",\"collapse\"],setup(e,t){let{emit:n,attrs:o,slots:r}=t;const{prefixCls:l}=Pe(\"layout-sider\",e),a=Je(G1,void 0),i=ee(!!(e.collapsed!==void 0?e.collapsed:e.defaultCollapsed)),s=ee(!1);pe(()=>e.collapsed,()=>{i.value=!!e.collapsed}),Qe(K1,i);const c=(v,y)=>{e.collapsed===void 0&&(i.value=v),n(\"update:collapsed\",v),n(\"collapse\",v,y)},u=ee(v=>{s.value=v.matches,n(\"breakpoint\",v.matches),i.value!==v.matches&&c(v.matches,\"responsive\")});let d;function p(v){return u.value(v)}const m=hz(\"ant-sider-\");a&&a.addSider(m),Ne(()=>{pe(()=>e.breakpoint,()=>{try{d?.removeEventListener(\"change\",p)}catch{d?.removeListener(p)}if(typeof window<\"u\"){const{matchMedia:v}=window;if(v&&e.breakpoint&&e.breakpoint in Ny){d=v(`(max-width: ${Ny[e.breakpoint]})`);try{d.addEventListener(\"change\",p)}catch{d.addListener(p)}p(d)}}},{immediate:!0})}),et(()=>{try{d?.removeEventListener(\"change\",p)}catch{d?.removeListener(p)}a&&a.removeSider(m)});const g=()=>{c(!i.value,\"clickTrigger\")};return()=>{var v,y;const b=l.value,{collapsedWidth:S,width:$,reverseArrow:w,zeroWidthTriggerStyle:C,trigger:_=(v=r.trigger)===null||v===void 0?void 0:v.call(r),collapsible:x,theme:P}=e,O=i.value?S:$,M=Zc(O)?`${O}px`:String(O),E=parseFloat(String(S||0))===0?f(\"span\",{onClick:g,class:le(`${b}-zero-width-trigger`,`${b}-zero-width-trigger-${w?\"right\":\"left\"}`),style:C},[_||f(WI,null,null)]):null,R={expanded:w?f(Eo,null,null):f(zr,null,null),collapsed:w?f(zr,null,null):f(Eo,null,null)},D=i.value?\"collapsed\":\"expanded\",z=R[D],T=_!==null?E||f(\"div\",{class:`${b}-trigger`,onClick:g,style:{width:M}},[_||z]):null,k=[o.style,{flex:`0 0 ${M}`,maxWidth:M,minWidth:M,width:M}],B=le(b,`${b}-${P}`,{[`${b}-collapsed`]:!!i.value,[`${b}-has-trigger`]:x&&_!==null&&!E,[`${b}-below`]:!!s.value,[`${b}-zero-width`]:parseFloat(M)===0},o.class);return f(\"aside\",A(A({},o),{},{class:B,style:k}),[f(\"div\",{class:`${b}-children`},[(y=r.default)===null||y===void 0?void 0:y.call(r)]),x||s.value&&E?T:null])}}}),bz=pc,yz=mc,Sz=gc,$z=vc,Cz=h(Ef,{Header:pc,Footer:mc,Content:vc,Sider:gc,install:e=>(e.component(Ef.name,Ef),e.component(pc.name,pc),e.component(mc.name,mc),e.component(gc.name,gc),e.component(vc.name,vc),e)});function xz(e,t,n){var o=n||{},r=o.noTrailing,l=r===void 0?!1:r,a=o.noLeading,i=a===void 0?!1:a,s=o.debounceMode,c=s===void 0?void 0:s,u,d=!1,p=0;function m(){u&&clearTimeout(u)}function g(y){var b=y||{},S=b.upcomingOnly,$=S===void 0?!1:S;m(),d=!$}function v(){for(var y=arguments.length,b=new Array(y),S=0;S<y;S++)b[S]=arguments[S];var $=this,w=Date.now()-p;if(d)return;function C(){p=Date.now(),t.apply($,b)}function _(){u=void 0}!i&&c&&!u&&C(),m(),c===void 0&&w>e?i?(p=Date.now(),l||(u=setTimeout(c?_:C,e))):C():l!==!0&&(u=setTimeout(c?_:C,c===void 0?e-w:e))}return v.cancel=g,v}function wz(e,t,n){var o={},r=o.atBegin,l=r===void 0?!1:r;return xz(e,t,{debounceMode:l!==!1})}const _z=new lt(\"antSpinMove\",{to:{opacity:1}}),Iz=new lt(\"antRotate\",{to:{transform:\"rotate(405deg)\"}}),Pz=e=>({[`${e.componentCls}`]:h(h({},Ue(e)),{position:\"absolute\",display:\"none\",color:e.colorPrimary,textAlign:\"center\",verticalAlign:\"middle\",opacity:0,transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`,\"&-spinning\":{position:\"static\",display:\"inline-block\",opacity:1},\"&-nested-loading\":{position:\"relative\",[`> div > ${e.componentCls}`]:{position:\"absolute\",top:0,insetInlineStart:0,zIndex:4,display:\"block\",width:\"100%\",height:\"100%\",maxHeight:e.contentHeight,[`${e.componentCls}-dot`]:{position:\"absolute\",top:\"50%\",insetInlineStart:\"50%\",margin:-e.spinDotSize/2},[`${e.componentCls}-text`]:{position:\"absolute\",top:\"50%\",width:\"100%\",paddingTop:(e.spinDotSize-e.fontSize)/2+2,textShadow:`0 1px 2px ${e.colorBgContainer}`},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSize/2)-10},\"&-sm\":{[`${e.componentCls}-dot`]:{margin:-e.spinDotSizeSM/2},[`${e.componentCls}-text`]:{paddingTop:(e.spinDotSizeSM-e.fontSize)/2+2},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSizeSM/2)-10}},\"&-lg\":{[`${e.componentCls}-dot`]:{margin:-(e.spinDotSizeLG/2)},[`${e.componentCls}-text`]:{paddingTop:(e.spinDotSizeLG-e.fontSize)/2+2},[`&${e.componentCls}-show-text ${e.componentCls}-dot`]:{marginTop:-(e.spinDotSizeLG/2)-10}}},[`${e.componentCls}-container`]:{position:\"relative\",transition:`opacity ${e.motionDurationSlow}`,\"&::after\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:10,width:\"100%\",height:\"100%\",background:e.colorBgContainer,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'\"\"',pointerEvents:\"none\"}},[`${e.componentCls}-blur`]:{clear:\"both\",opacity:.5,userSelect:\"none\",pointerEvents:\"none\",\"&::after\":{opacity:.4,pointerEvents:\"auto\"}}},\"&-tip\":{color:e.spinDotDefault},[`${e.componentCls}-dot`]:{position:\"relative\",display:\"inline-block\",fontSize:e.spinDotSize,width:\"1em\",height:\"1em\",\"&-item\":{position:\"absolute\",display:\"block\",width:(e.spinDotSize-e.marginXXS/2)/2,height:(e.spinDotSize-e.marginXXS/2)/2,backgroundColor:e.colorPrimary,borderRadius:\"100%\",transform:\"scale(0.75)\",transformOrigin:\"50% 50%\",opacity:.3,animationName:_z,animationDuration:\"1s\",animationIterationCount:\"infinite\",animationTimingFunction:\"linear\",animationDirection:\"alternate\",\"&:nth-child(1)\":{top:0,insetInlineStart:0},\"&:nth-child(2)\":{top:0,insetInlineEnd:0,animationDelay:\"0.4s\"},\"&:nth-child(3)\":{insetInlineEnd:0,bottom:0,animationDelay:\"0.8s\"},\"&:nth-child(4)\":{bottom:0,insetInlineStart:0,animationDelay:\"1.2s\"}},\"&-spin\":{transform:\"rotate(45deg)\",animationName:Iz,animationDuration:\"1.2s\",animationIterationCount:\"infinite\",animationTimingFunction:\"linear\"}},[`&-sm ${e.componentCls}-dot`]:{fontSize:e.spinDotSizeSM,i:{width:(e.spinDotSizeSM-e.marginXXS/2)/2,height:(e.spinDotSizeSM-e.marginXXS/2)/2}},[`&-lg ${e.componentCls}-dot`]:{fontSize:e.spinDotSizeLG,i:{width:(e.spinDotSizeLG-e.marginXXS)/2,height:(e.spinDotSizeLG-e.marginXXS)/2}},[`&${e.componentCls}-show-text ${e.componentCls}-text`]:{display:\"block\"}})}),Tz=Ge(\"Spin\",e=>{const t=Le(e,{spinDotDefault:e.colorTextDescription,spinDotSize:e.controlHeightLG/2,spinDotSizeSM:e.controlHeightLG*.35,spinDotSizeLG:e.controlHeight});return[Pz(t)]},{contentHeight:400});var Oz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Ez=()=>({prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:W.any,delay:Number,indicator:W.any});let hc=null;function Mz(e,t){return!!e&&!!t&&!isNaN(Number(t))}function Az(e){const t=e.indicator;hc=typeof t==\"function\"?t:()=>f(t,null,null)}const Vo=ne({compatConfig:{MODE:3},name:\"ASpin\",inheritAttrs:!1,props:Ze(Ez(),{size:\"default\",spinning:!0,wrapperClassName:\"\"}),setup(e,t){let{attrs:n,slots:o}=t;const{prefixCls:r,size:l,direction:a}=Pe(\"spin\",e),[i,s]=Tz(r),c=ee(e.spinning&&!Mz(e.spinning,e.delay));let u;return pe([()=>e.spinning,()=>e.delay],()=>{u?.cancel(),u=wz(e.delay,()=>{c.value=e.spinning}),u?.()},{immediate:!0,flush:\"post\"}),et(()=>{u?.cancel()}),()=>{var d,p;const{class:m}=n,g=Oz(n,[\"class\"]),{tip:v=(d=o.tip)===null||d===void 0?void 0:d.call(o)}=e,y=(p=o.default)===null||p===void 0?void 0:p.call(o),b={[s.value]:!0,[r.value]:!0,[`${r.value}-sm`]:l.value===\"small\",[`${r.value}-lg`]:l.value===\"large\",[`${r.value}-spinning`]:c.value,[`${r.value}-show-text`]:!!v,[`${r.value}-rtl`]:a.value===\"rtl\",[m]:!!m};function S(w){const C=`${w}-dot`;let _=Qt(o,e,\"indicator\");return _===null?null:(Array.isArray(_)&&(_=_.length===1?_[0]:_),gn(_)?Oo(_,{class:C}):hc&&gn(hc())?Oo(hc(),{class:C}):f(\"span\",{class:`${C} ${w}-dot-spin`},[f(\"i\",{class:`${w}-dot-item`},null),f(\"i\",{class:`${w}-dot-item`},null),f(\"i\",{class:`${w}-dot-item`},null),f(\"i\",{class:`${w}-dot-item`},null)]))}const $=f(\"div\",A(A({},g),{},{class:b,\"aria-live\":\"polite\",\"aria-busy\":c.value}),[S(r.value),v?f(\"div\",{class:`${r.value}-text`},[v]):null]);if(y&&kt(y).length){const w={[`${r.value}-container`]:!0,[`${r.value}-blur`]:c.value};return i(f(\"div\",{class:[`${r.value}-nested-loading`,e.wrapperClassName,s.value]},[c.value&&f(\"div\",{key:\"loading\"},[$]),f(\"div\",{class:w,key:\"container\"},[y])]))}return i($)}}});Vo.setDefaultIndicator=Az;Vo.install=function(e){return e.component(Vo.name,Vo),e};const Dz=ne({name:\"MiniSelect\",compatConfig:{MODE:3},inheritAttrs:!1,props:ed(),Option:nn.Option,setup(e,t){let{attrs:n,slots:o}=t;return()=>{const r=h(h(h({},e),{size:\"small\"}),n);return f(nn,r,o)}}}),Rz=ne({name:\"MiddleSelect\",inheritAttrs:!1,props:ed(),Option:nn.Option,setup(e,t){let{attrs:n,slots:o}=t;return()=>{const r=h(h(h({},e),{size:\"middle\"}),n);return f(nn,r,o)}}}),el=ne({compatConfig:{MODE:3},name:\"Pager\",inheritAttrs:!1,props:{rootPrefixCls:String,page:Number,active:{type:Boolean,default:void 0},last:{type:Boolean,default:void 0},locale:W.object,showTitle:{type:Boolean,default:void 0},itemRender:{type:Function,default:()=>{}},onClick:{type:Function},onKeypress:{type:Function}},eimt:[\"click\",\"keypress\"],setup(e,t){let{emit:n,attrs:o}=t;const r=()=>{n(\"click\",e.page)},l=a=>{n(\"keypress\",a,r,e.page)};return()=>{const{showTitle:a,page:i,itemRender:s}=e,{class:c,style:u}=o,d=`${e.rootPrefixCls}-item`,p=le(d,`${d}-${e.page}`,{[`${d}-active`]:e.active,[`${d}-disabled`]:!e.page},c);return f(\"li\",{onClick:r,onKeypress:l,title:a?String(i):null,tabindex:\"0\",class:p,style:u},[s({page:i,type:\"page\",originalElement:f(\"a\",{rel:\"nofollow\"},[i])})])}}}),nl={ENTER:13,ARROW_UP:38,ARROW_DOWN:40},kz=ne({compatConfig:{MODE:3},props:{disabled:{type:Boolean,default:void 0},changeSize:Function,quickGo:Function,selectComponentClass:W.any,current:Number,pageSizeOptions:W.array.def([\"10\",\"20\",\"50\",\"100\"]),pageSize:Number,buildOptionText:Function,locale:W.object,rootPrefixCls:String,selectPrefixCls:String,goButton:W.any},setup(e){const t=J(\"\"),n=I(()=>!t.value||isNaN(t.value)?void 0:Number(t.value)),o=s=>`${s.value} ${e.locale.items_per_page}`,r=s=>{const{value:c}=s.target;t.value!==c&&(t.value=c)},l=s=>{const{goButton:c,quickGo:u,rootPrefixCls:d}=e;if(!(c||t.value===\"\"))if(s.relatedTarget&&(s.relatedTarget.className.indexOf(`${d}-item-link`)>=0||s.relatedTarget.className.indexOf(`${d}-item`)>=0)){t.value=\"\";return}else u(n.value),t.value=\"\"},a=s=>{t.value!==\"\"&&(s.keyCode===nl.ENTER||s.type===\"click\")&&(e.quickGo(n.value),t.value=\"\")},i=I(()=>{const{pageSize:s,pageSizeOptions:c}=e;return c.some(u=>u.toString()===s.toString())?c:c.concat([s.toString()]).sort((u,d)=>{const p=isNaN(Number(u))?0:Number(u),m=isNaN(Number(d))?0:Number(d);return p-m})});return()=>{const{rootPrefixCls:s,locale:c,changeSize:u,quickGo:d,goButton:p,selectComponentClass:m,selectPrefixCls:g,pageSize:v,disabled:y}=e,b=`${s}-options`;let S=null,$=null,w=null;if(!u&&!d)return null;if(u&&m){const C=e.buildOptionText||o,_=i.value.map((x,P)=>f(m.Option,{key:P,value:x},{default:()=>[C({value:x})]}));S=f(m,{disabled:y,prefixCls:g,showSearch:!1,class:`${b}-size-changer`,optionLabelProp:\"children\",value:(v||i.value[0]).toString(),onChange:x=>u(Number(x)),getPopupContainer:x=>x.parentNode},{default:()=>[_]})}return d&&(p&&(w=typeof p==\"boolean\"?f(\"button\",{type:\"button\",onClick:a,onKeyup:a,disabled:y,class:`${b}-quick-jumper-button`},[c.jump_to_confirm]):f(\"span\",{onClick:a,onKeyup:a},[p])),$=f(\"div\",{class:`${b}-quick-jumper`},[c.jump_to,f(Pa,{disabled:y,type:\"text\",value:t.value,onInput:r,onChange:r,onKeyup:a,onBlur:l},null),c.page,w])),f(\"li\",{class:`${b}`},[S,$])}}}),Nz={items_per_page:\"条/页\",jump_to:\"跳至\",jump_to_confirm:\"确定\",page:\"页\",prev_page:\"上一页\",next_page:\"下一页\",prev_5:\"向前 5 页\",next_5:\"向后 5 页\",prev_3:\"向前 3 页\",next_3:\"向后 3 页\"};var Bz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function Lz(e){return typeof e==\"number\"&&isFinite(e)&&Math.floor(e)===e}function Fz(e){let{originalElement:t}=e;return t}function Qo(e,t,n){const o=typeof e>\"u\"?t.statePageSize:e;return Math.floor((n.total-1)/o)+1}const zz=ne({compatConfig:{MODE:3},name:\"Pagination\",mixins:[Tl],inheritAttrs:!1,props:{disabled:{type:Boolean,default:void 0},prefixCls:W.string.def(\"rc-pagination\"),selectPrefixCls:W.string.def(\"rc-select\"),current:Number,defaultCurrent:W.number.def(1),total:W.number.def(0),pageSize:Number,defaultPageSize:W.number.def(10),hideOnSinglePage:{type:Boolean,default:!1},showSizeChanger:{type:Boolean,default:void 0},showLessItems:{type:Boolean,default:!1},selectComponentClass:W.any,showPrevNextJumpers:{type:Boolean,default:!0},showQuickJumper:W.oneOfType([W.looseBool,W.object]).def(!1),showTitle:{type:Boolean,default:!0},pageSizeOptions:W.arrayOf(W.oneOfType([W.number,W.string])),buildOptionText:Function,showTotal:Function,simple:{type:Boolean,default:void 0},locale:W.object.def(Nz),itemRender:W.func.def(Fz),prevIcon:W.any,nextIcon:W.any,jumpPrevIcon:W.any,jumpNextIcon:W.any,totalBoundaryShowSizeChanger:W.number.def(50)},data(){const e=this.$props;let t=Uc([this.current,this.defaultCurrent]);const n=Uc([this.pageSize,this.defaultPageSize]);return t=Math.min(t,Qo(n,void 0,e)),{stateCurrent:t,stateCurrentInputValue:t,statePageSize:n}},watch:{current(e){this.setState({stateCurrent:e,stateCurrentInputValue:e})},pageSize(e){const t={};let n=this.stateCurrent;const o=Qo(e,this.$data,this.$props);n=n>o?o:n,nr(this,\"current\")||(t.stateCurrent=n,t.stateCurrentInputValue=n),t.statePageSize=e,this.setState(t)},stateCurrent(e,t){this.$nextTick(()=>{if(this.$refs.paginationNode){const n=this.$refs.paginationNode.querySelector(`.${this.prefixCls}-item-${t}`);n&&document.activeElement===n&&n.blur()}})},total(){const e={},t=Qo(this.pageSize,this.$data,this.$props);if(nr(this,\"current\")){const n=Math.min(this.current,t);e.stateCurrent=n,e.stateCurrentInputValue=n}else{let n=this.stateCurrent;n===0&&t>0?n=1:n=Math.min(this.stateCurrent,t),e.stateCurrent=n}this.setState(e)}},methods:{getJumpPrevPage(){return Math.max(1,this.stateCurrent-(this.showLessItems?3:5))},getJumpNextPage(){return Math.min(Qo(void 0,this.$data,this.$props),this.stateCurrent+(this.showLessItems?3:5))},getItemIcon(e,t){const{prefixCls:n}=this.$props;return K$(this,e,this.$props)||f(\"button\",{type:\"button\",\"aria-label\":t,class:`${n}-item-link`},null)},getValidValue(e){const t=e.target.value,n=Qo(void 0,this.$data,this.$props),{stateCurrentInputValue:o}=this.$data;let r;return t===\"\"?r=t:isNaN(Number(t))?r=o:t>=n?r=n:r=Number(t),r},isValid(e){return Lz(e)&&e!==this.stateCurrent},shouldDisplayQuickJumper(){const{showQuickJumper:e,pageSize:t,total:n}=this.$props;return n<=t?!1:e},handleKeyDown(e){(e.keyCode===nl.ARROW_UP||e.keyCode===nl.ARROW_DOWN)&&e.preventDefault()},handleKeyUp(e){const t=this.getValidValue(e),n=this.stateCurrentInputValue;t!==n&&this.setState({stateCurrentInputValue:t}),e.keyCode===nl.ENTER?this.handleChange(t):e.keyCode===nl.ARROW_UP?this.handleChange(t-1):e.keyCode===nl.ARROW_DOWN&&this.handleChange(t+1)},changePageSize(e){let t=this.stateCurrent;const n=t,o=Qo(e,this.$data,this.$props);t=t>o?o:t,o===0&&(t=this.stateCurrent),typeof e==\"number\"&&(nr(this,\"pageSize\")||this.setState({statePageSize:e}),nr(this,\"current\")||this.setState({stateCurrent:t,stateCurrentInputValue:t})),this.__emit(\"update:pageSize\",e),t!==n&&this.__emit(\"update:current\",t),this.__emit(\"showSizeChange\",t,e),this.__emit(\"change\",t,e)},handleChange(e){const{disabled:t}=this.$props;let n=e;if(this.isValid(n)&&!t){const o=Qo(void 0,this.$data,this.$props);return n>o?n=o:n<1&&(n=1),nr(this,\"current\")||this.setState({stateCurrent:n,stateCurrentInputValue:n}),this.__emit(\"update:current\",n),this.__emit(\"change\",n,this.statePageSize),n}return this.stateCurrent},prev(){this.hasPrev()&&this.handleChange(this.stateCurrent-1)},next(){this.hasNext()&&this.handleChange(this.stateCurrent+1)},jumpPrev(){this.handleChange(this.getJumpPrevPage())},jumpNext(){this.handleChange(this.getJumpNextPage())},hasPrev(){return this.stateCurrent>1},hasNext(){return this.stateCurrent<Qo(void 0,this.$data,this.$props)},getShowSizeChanger(){const{showSizeChanger:e,total:t,totalBoundaryShowSizeChanger:n}=this.$props;return typeof e<\"u\"?e:t>n},runIfEnter(e,t){if(e.key===\"Enter\"||e.charCode===13){e.preventDefault();for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];t(...o)}},runIfEnterPrev(e){this.runIfEnter(e,this.prev)},runIfEnterNext(e){this.runIfEnter(e,this.next)},runIfEnterJumpPrev(e){this.runIfEnter(e,this.jumpPrev)},runIfEnterJumpNext(e){this.runIfEnter(e,this.jumpNext)},handleGoTO(e){(e.keyCode===nl.ENTER||e.type===\"click\")&&this.handleChange(this.stateCurrentInputValue)},renderPrev(e){const{itemRender:t}=this.$props,n=t({page:e,type:\"prev\",originalElement:this.getItemIcon(\"prevIcon\",\"prev page\")}),o=!this.hasPrev();return Kt(n)?dt(n,o?{disabled:o}:{}):n},renderNext(e){const{itemRender:t}=this.$props,n=t({page:e,type:\"next\",originalElement:this.getItemIcon(\"nextIcon\",\"next page\")}),o=!this.hasNext();return Kt(n)?dt(n,o?{disabled:o}:{}):n}},render(){const{prefixCls:e,disabled:t,hideOnSinglePage:n,total:o,locale:r,showQuickJumper:l,showLessItems:a,showTitle:i,showTotal:s,simple:c,itemRender:u,showPrevNextJumpers:d,jumpPrevIcon:p,jumpNextIcon:m,selectComponentClass:g,selectPrefixCls:v,pageSizeOptions:y}=this.$props,{stateCurrent:b,statePageSize:S}=this,$=Gm(this.$attrs).extraAttrs,{class:w}=$,C=Bz($,[\"class\"]);if(n===!0&&this.total<=S)return null;const _=Qo(void 0,this.$data,this.$props),x=[];let P=null,O=null,M=null,E=null,R=null;const D=l&&l.goButton,z=a?1:2,T=b-1>0?b-1:0,k=b+1<_?b+1:_,B=this.hasPrev(),L=this.hasNext();if(c)return D&&(typeof D==\"boolean\"?R=f(\"button\",{type:\"button\",onClick:this.handleGoTO,onKeyup:this.handleGoTO},[r.jump_to_confirm]):R=f(\"span\",{onClick:this.handleGoTO,onKeyup:this.handleGoTO},[D]),R=f(\"li\",{title:i?`${r.jump_to}${b}/${_}`:null,class:`${e}-simple-pager`},[R])),f(\"ul\",A({class:le(`${e} ${e}-simple`,{[`${e}-disabled`]:t},w)},C),[f(\"li\",{title:i?r.prev_page:null,onClick:this.prev,tabindex:B?0:null,onKeypress:this.runIfEnterPrev,class:le(`${e}-prev`,{[`${e}-disabled`]:!B}),\"aria-disabled\":!B},[this.renderPrev(T)]),f(\"li\",{title:i?`${b}/${_}`:null,class:`${e}-simple-pager`},[f(Pa,{type:\"text\",value:this.stateCurrentInputValue,disabled:t,onKeydown:this.handleKeyDown,onKeyup:this.handleKeyUp,onInput:this.handleKeyUp,onChange:this.handleKeyUp,size:\"3\"},null),f(\"span\",{class:`${e}-slash`},[wt(\"／\")]),_]),f(\"li\",{title:i?r.next_page:null,onClick:this.next,tabindex:L?0:null,onKeypress:this.runIfEnterNext,class:le(`${e}-next`,{[`${e}-disabled`]:!L}),\"aria-disabled\":!L},[this.renderNext(k)]),R]);if(_<=3+z*2){const K={locale:r,rootPrefixCls:e,showTitle:i,itemRender:u,onClick:this.handleChange,onKeypress:this.runIfEnter};_||x.push(f(el,A(A({},K),{},{key:\"noPager\",page:1,class:`${e}-item-disabled`}),null));for(let G=1;G<=_;G+=1){const V=b===G;x.push(f(el,A(A({},K),{},{key:G,page:G,active:V}),null))}}else{const K=a?r.prev_3:r.prev_5,G=a?r.next_3:r.next_5;d&&(P=f(\"li\",{title:this.showTitle?K:null,key:\"prev\",onClick:this.jumpPrev,tabindex:\"0\",onKeypress:this.runIfEnterJumpPrev,class:le(`${e}-jump-prev`,{[`${e}-jump-prev-custom-icon`]:!!p})},[u({page:this.getJumpPrevPage(),type:\"jump-prev\",originalElement:this.getItemIcon(\"jumpPrevIcon\",\"prev page\")})]),O=f(\"li\",{title:this.showTitle?G:null,key:\"next\",tabindex:\"0\",onClick:this.jumpNext,onKeypress:this.runIfEnterJumpNext,class:le(`${e}-jump-next`,{[`${e}-jump-next-custom-icon`]:!!m})},[u({page:this.getJumpNextPage(),type:\"jump-next\",originalElement:this.getItemIcon(\"jumpNextIcon\",\"next page\")})])),E=f(el,{locale:r,last:!0,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:_,page:_,active:!1,showTitle:i,itemRender:u},null),M=f(el,{locale:r,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:1,page:1,active:!1,showTitle:i,itemRender:u},null);let V=Math.max(1,b-z),q=Math.min(b+z,_);b-1<=z&&(q=1+z*2),_-b<=z&&(V=_-z*2);for(let Z=V;Z<=q;Z+=1){const oe=b===Z;x.push(f(el,{locale:r,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:Z,page:Z,active:oe,showTitle:i,itemRender:u},null))}b-1>=z*2&&b!==3&&(x[0]=f(el,{locale:r,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:V,page:V,class:`${e}-item-after-jump-prev`,active:!1,showTitle:this.showTitle,itemRender:u},null),x.unshift(P)),_-b>=z*2&&b!==_-2&&(x[x.length-1]=f(el,{locale:r,rootPrefixCls:e,onClick:this.handleChange,onKeypress:this.runIfEnter,key:q,page:q,class:`${e}-item-before-jump-next`,active:!1,showTitle:this.showTitle,itemRender:u},null),x.push(O)),V!==1&&x.unshift(M),q!==_&&x.push(E)}let N=null;s&&(N=f(\"li\",{class:`${e}-total-text`},[s(o,[o===0?0:(b-1)*S+1,b*S>o?o:b*S])]));const F=!B||!_,j=!L||!_,H=this.buildOptionText||this.$slots.buildOptionText;return f(\"ul\",A(A({unselectable:\"on\",ref:\"paginationNode\"},C),{},{class:le({[`${e}`]:!0,[`${e}-disabled`]:t},w)}),[N,f(\"li\",{title:i?r.prev_page:null,onClick:this.prev,tabindex:F?null:0,onKeypress:this.runIfEnterPrev,class:le(`${e}-prev`,{[`${e}-disabled`]:F}),\"aria-disabled\":F},[this.renderPrev(T)]),x,f(\"li\",{title:i?r.next_page:null,onClick:this.next,tabindex:j?null:0,onKeypress:this.runIfEnterNext,class:le(`${e}-next`,{[`${e}-disabled`]:j}),\"aria-disabled\":j},[this.renderNext(k)]),f(kz,{disabled:t,locale:r,rootPrefixCls:e,selectComponentClass:g,selectPrefixCls:v,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:b,pageSize:S,pageSizeOptions:y,buildOptionText:H||null,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:D},null)])}}),Hz=e=>{const{componentCls:t}=e;return{[`${t}-disabled`]:{\"&, &:hover\":{cursor:\"not-allowed\",[`${t}-item-link`]:{color:e.colorTextDisabled,cursor:\"not-allowed\"}},\"&:focus-visible\":{cursor:\"not-allowed\",[`${t}-item-link`]:{color:e.colorTextDisabled,cursor:\"not-allowed\"}}},[`&${t}-disabled`]:{cursor:\"not-allowed\",[`&${t}-mini`]:{[`\n          &:hover ${t}-item:not(${t}-item-active),\n          &:active ${t}-item:not(${t}-item-active),\n          &:hover ${t}-item-link,\n          &:active ${t}-item-link\n        `]:{backgroundColor:\"transparent\"}},[`${t}-item`]:{cursor:\"not-allowed\",\"&:hover, &:active\":{backgroundColor:\"transparent\"},a:{color:e.colorTextDisabled,backgroundColor:\"transparent\",border:\"none\",cursor:\"not-allowed\"},\"&-active\":{borderColor:e.colorBorder,backgroundColor:e.paginationItemDisabledBgActive,\"&:hover, &:active\":{backgroundColor:e.paginationItemDisabledBgActive},a:{color:e.paginationItemDisabledColorActive}}},[`${t}-item-link`]:{color:e.colorTextDisabled,cursor:\"not-allowed\",\"&:hover, &:active\":{backgroundColor:\"transparent\"},[`${t}-simple&`]:{backgroundColor:\"transparent\",\"&:hover, &:active\":{backgroundColor:\"transparent\"}}},[`${t}-simple-pager`]:{color:e.colorTextDisabled},[`${t}-jump-prev, ${t}-jump-next`]:{[`${t}-item-link-icon`]:{opacity:0},[`${t}-item-ellipsis`]:{opacity:1}}},[`&${t}-simple`]:{[`${t}-prev, ${t}-next`]:{[`&${t}-disabled ${t}-item-link`]:{\"&:hover, &:active\":{backgroundColor:\"transparent\"}}}}}},jz=e=>{const{componentCls:t}=e;return{[`&${t}-mini ${t}-total-text, &${t}-mini ${t}-simple-pager`]:{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`},[`&${t}-mini ${t}-item`]:{minWidth:e.paginationItemSizeSM,height:e.paginationItemSizeSM,margin:0,lineHeight:`${e.paginationItemSizeSM-2}px`},[`&${t}-mini ${t}-item:not(${t}-item-active)`]:{backgroundColor:\"transparent\",borderColor:\"transparent\",\"&:hover\":{backgroundColor:e.colorBgTextHover},\"&:active\":{backgroundColor:e.colorBgTextActive}},[`&${t}-mini ${t}-prev, &${t}-mini ${t}-next`]:{minWidth:e.paginationItemSizeSM,height:e.paginationItemSizeSM,margin:0,lineHeight:`${e.paginationItemSizeSM}px`,[`&:hover ${t}-item-link`]:{backgroundColor:e.colorBgTextHover},[`&:active ${t}-item-link`]:{backgroundColor:e.colorBgTextActive},[`&${t}-disabled:hover ${t}-item-link`]:{backgroundColor:\"transparent\"}},[`\n    &${t}-mini ${t}-prev ${t}-item-link,\n    &${t}-mini ${t}-next ${t}-item-link\n    `]:{backgroundColor:\"transparent\",borderColor:\"transparent\",\"&::after\":{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`}},[`&${t}-mini ${t}-jump-prev, &${t}-mini ${t}-jump-next`]:{height:e.paginationItemSizeSM,marginInlineEnd:0,lineHeight:`${e.paginationItemSizeSM}px`},[`&${t}-mini ${t}-options`]:{marginInlineStart:e.paginationMiniOptionsMarginInlineStart,\"&-size-changer\":{top:e.paginationMiniOptionsSizeChangerTop},\"&-quick-jumper\":{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`,input:h(h({},pg(e)),{width:e.paginationMiniQuickJumperInputWidth,height:e.controlHeightSM})}}}},Wz=e=>{const{componentCls:t}=e;return{[`\n    &${t}-simple ${t}-prev,\n    &${t}-simple ${t}-next\n    `]:{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`,verticalAlign:\"top\",[`${t}-item-link`]:{height:e.paginationItemSizeSM,backgroundColor:\"transparent\",border:0,\"&:hover\":{backgroundColor:e.colorBgTextHover},\"&:active\":{backgroundColor:e.colorBgTextActive},\"&::after\":{height:e.paginationItemSizeSM,lineHeight:`${e.paginationItemSizeSM}px`}}},[`&${t}-simple ${t}-simple-pager`]:{display:\"inline-block\",height:e.paginationItemSizeSM,marginInlineEnd:e.marginXS,input:{boxSizing:\"border-box\",height:\"100%\",marginInlineEnd:e.marginXS,padding:`0 ${e.paginationItemPaddingInline}px`,textAlign:\"center\",backgroundColor:e.paginationItemInputBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,outline:\"none\",transition:`border-color ${e.motionDurationMid}`,color:\"inherit\",\"&:hover\":{borderColor:e.colorPrimary},\"&:focus\":{borderColor:e.colorPrimaryHover,boxShadow:`${e.inputOutlineOffset}px 0 ${e.controlOutlineWidth}px ${e.controlOutline}`},\"&[disabled]\":{color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,cursor:\"not-allowed\"}}}}},Vz=e=>{const{componentCls:t}=e;return{[`${t}-jump-prev, ${t}-jump-next`]:{outline:0,[`${t}-item-container`]:{position:\"relative\",[`${t}-item-link-icon`]:{color:e.colorPrimary,fontSize:e.fontSizeSM,opacity:0,transition:`all ${e.motionDurationMid}`,\"&-svg\":{top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,margin:\"auto\"}},[`${t}-item-ellipsis`]:{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,display:\"block\",margin:\"auto\",color:e.colorTextDisabled,fontFamily:\"Arial, Helvetica, sans-serif\",letterSpacing:e.paginationEllipsisLetterSpacing,textAlign:\"center\",textIndent:e.paginationEllipsisTextIndent,opacity:1,transition:`all ${e.motionDurationMid}`}},\"&:hover\":{[`${t}-item-link-icon`]:{opacity:1},[`${t}-item-ellipsis`]:{opacity:0}},\"&:focus-visible\":h({[`${t}-item-link-icon`]:{opacity:1},[`${t}-item-ellipsis`]:{opacity:0}},dr(e))},[`\n    ${t}-prev,\n    ${t}-jump-prev,\n    ${t}-jump-next\n    `]:{marginInlineEnd:e.marginXS},[`\n    ${t}-prev,\n    ${t}-next,\n    ${t}-jump-prev,\n    ${t}-jump-next\n    `]:{display:\"inline-block\",minWidth:e.paginationItemSize,height:e.paginationItemSize,color:e.colorText,fontFamily:e.paginationFontFamily,lineHeight:`${e.paginationItemSize}px`,textAlign:\"center\",verticalAlign:\"middle\",listStyle:\"none\",borderRadius:e.borderRadius,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`},[`${t}-prev, ${t}-next`]:{fontFamily:\"Arial, Helvetica, sans-serif\",outline:0,button:{color:e.colorText,cursor:\"pointer\",userSelect:\"none\"},[`${t}-item-link`]:{display:\"block\",width:\"100%\",height:\"100%\",padding:0,fontSize:e.fontSizeSM,textAlign:\"center\",backgroundColor:\"transparent\",border:`${e.lineWidth}px ${e.lineType} transparent`,borderRadius:e.borderRadius,outline:\"none\",transition:`all ${e.motionDurationMid}`},[`&:focus-visible ${t}-item-link`]:h({},dr(e)),[`&:hover ${t}-item-link`]:{backgroundColor:e.colorBgTextHover},[`&:active ${t}-item-link`]:{backgroundColor:e.colorBgTextActive},[`&${t}-disabled:hover`]:{[`${t}-item-link`]:{backgroundColor:\"transparent\"}}},[`${t}-slash`]:{marginInlineEnd:e.paginationSlashMarginInlineEnd,marginInlineStart:e.paginationSlashMarginInlineStart},[`${t}-options`]:{display:\"inline-block\",marginInlineStart:e.margin,verticalAlign:\"middle\",\"&-size-changer.-select\":{display:\"inline-block\",width:\"auto\"},\"&-quick-jumper\":{display:\"inline-block\",height:e.controlHeight,marginInlineStart:e.marginXS,lineHeight:`${e.controlHeight}px`,verticalAlign:\"top\",input:h(h({},Al(e)),{width:e.controlHeightLG*1.25,height:e.controlHeight,boxSizing:\"border-box\",margin:0,marginInlineStart:e.marginXS,marginInlineEnd:e.marginXS})}}}},Kz=e=>{const{componentCls:t}=e;return{[`${t}-item`]:h(h({display:\"inline-block\",minWidth:e.paginationItemSize,height:e.paginationItemSize,marginInlineEnd:e.marginXS,fontFamily:e.paginationFontFamily,lineHeight:`${e.paginationItemSize-2}px`,textAlign:\"center\",verticalAlign:\"middle\",listStyle:\"none\",backgroundColor:\"transparent\",border:`${e.lineWidth}px ${e.lineType} transparent`,borderRadius:e.borderRadius,outline:0,cursor:\"pointer\",userSelect:\"none\",a:{display:\"block\",padding:`0 ${e.paginationItemPaddingInline}px`,color:e.colorText,transition:\"none\",\"&:hover\":{textDecoration:\"none\"}},[`&:not(${t}-item-active)`]:{\"&:hover\":{transition:`all ${e.motionDurationMid}`,backgroundColor:e.colorBgTextHover},\"&:active\":{backgroundColor:e.colorBgTextActive}}},fr(e)),{\"&-active\":{fontWeight:e.paginationFontWeightActive,backgroundColor:e.paginationItemBgActive,borderColor:e.colorPrimary,a:{color:e.colorPrimary},\"&:hover\":{borderColor:e.colorPrimaryHover},\"&:hover a\":{color:e.colorPrimaryHover}}})}},Gz=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h(h(h(h({},Ue(e)),{\"ul, ol\":{margin:0,padding:0,listStyle:\"none\"},\"&::after\":{display:\"block\",clear:\"both\",height:0,overflow:\"hidden\",visibility:\"hidden\",content:'\"\"'},[`${t}-total-text`]:{display:\"inline-block\",height:e.paginationItemSize,marginInlineEnd:e.marginXS,lineHeight:`${e.paginationItemSize-2}px`,verticalAlign:\"middle\"}}),Kz(e)),Vz(e)),Wz(e)),jz(e)),Hz(e)),{[`@media only screen and (max-width: ${e.screenLG}px)`]:{[`${t}-item`]:{\"&-after-jump-prev, &-before-jump-next\":{display:\"none\"}}},[`@media only screen and (max-width: ${e.screenSM}px)`]:{[`${t}-options`]:{display:\"none\"}}}),[`&${e.componentCls}-rtl`]:{direction:\"rtl\"}}},Xz=e=>{const{componentCls:t}=e;return{[`${t}${t}-disabled`]:{\"&, &:hover\":{[`${t}-item-link`]:{borderColor:e.colorBorder}},\"&:focus-visible\":{[`${t}-item-link`]:{borderColor:e.colorBorder}},[`${t}-item, ${t}-item-link`]:{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,[`&:hover:not(${t}-item-active)`]:{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,a:{color:e.colorTextDisabled}},[`&${t}-item-active`]:{backgroundColor:e.paginationItemDisabledBgActive}},[`${t}-prev, ${t}-next`]:{\"&:hover button\":{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,color:e.colorTextDisabled},[`${t}-item-link`]:{backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder}}},[t]:{[`${t}-prev, ${t}-next`]:{\"&:hover button\":{borderColor:e.colorPrimaryHover,backgroundColor:e.paginationItemBg},[`${t}-item-link`]:{backgroundColor:e.paginationItemLinkBg,borderColor:e.colorBorder},[`&:hover ${t}-item-link`]:{borderColor:e.colorPrimary,backgroundColor:e.paginationItemBg,color:e.colorPrimary},[`&${t}-disabled`]:{[`${t}-item-link`]:{borderColor:e.colorBorder,color:e.colorTextDisabled}}},[`${t}-item`]:{backgroundColor:e.paginationItemBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,[`&:hover:not(${t}-item-active)`]:{borderColor:e.colorPrimary,backgroundColor:e.paginationItemBg,a:{color:e.colorPrimary}},\"&-active\":{borderColor:e.colorPrimary}}}}},Uz=Ge(\"Pagination\",e=>{const t=Le(e,{paginationItemSize:e.controlHeight,paginationFontFamily:e.fontFamily,paginationItemBg:e.colorBgContainer,paginationItemBgActive:e.colorBgContainer,paginationFontWeightActive:e.fontWeightStrong,paginationItemSizeSM:e.controlHeightSM,paginationItemInputBg:e.colorBgContainer,paginationMiniOptionsSizeChangerTop:0,paginationItemDisabledBgActive:e.controlItemBgActiveDisabled,paginationItemDisabledColorActive:e.colorTextDisabled,paginationItemLinkBg:e.colorBgContainer,inputOutlineOffset:\"0 0\",paginationMiniOptionsMarginInlineStart:e.marginXXS/2,paginationMiniQuickJumperInputWidth:e.controlHeightLG*1.1,paginationItemPaddingInline:e.marginXXS*1.5,paginationEllipsisLetterSpacing:e.marginXXS/2,paginationSlashMarginInlineStart:e.marginXXS,paginationSlashMarginInlineEnd:e.marginSM,paginationEllipsisTextIndent:\"0.13em\"},Dl(e));return[Gz(t),e.wireframe&&Xz(t)]});var Yz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const qz=()=>({total:Number,defaultCurrent:Number,disabled:ye(),current:Number,defaultPageSize:Number,pageSize:Number,hideOnSinglePage:ye(),showSizeChanger:ye(),pageSizeOptions:ct(),buildOptionText:de(),showQuickJumper:Fe([Boolean,Object]),showTotal:de(),size:ke(),simple:ye(),locale:Object,prefixCls:String,selectPrefixCls:String,totalBoundaryShowSizeChanger:Number,selectComponentClass:String,itemRender:de(),role:String,responsive:Boolean,showLessItems:ye(),onChange:de(),onShowSizeChange:de(),\"onUpdate:current\":de(),\"onUpdate:pageSize\":de()}),Zz=ne({compatConfig:{MODE:3},name:\"APagination\",inheritAttrs:!1,props:qz(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,configProvider:l,direction:a,size:i}=Pe(\"pagination\",e),[s,c]=Uz(r),u=I(()=>l.getPrefixCls(\"select\",e.selectPrefixCls)),d=Ea(),[p]=yo(\"Pagination\",tC,We(e,\"locale\")),m=g=>{const v=f(\"span\",{class:`${g}-item-ellipsis`},[wt(\"•••\")]),y=f(\"button\",{class:`${g}-item-link`,type:\"button\",tabindex:-1},[a.value===\"rtl\"?f(Eo,null,null):f(zr,null,null)]),b=f(\"button\",{class:`${g}-item-link`,type:\"button\",tabindex:-1},[a.value===\"rtl\"?f(zr,null,null):f(Eo,null,null)]),S=f(\"a\",{rel:\"nofollow\",class:`${g}-item-link`},[f(\"div\",{class:`${g}-item-container`},[a.value===\"rtl\"?f(dh,{class:`${g}-item-link-icon`},null):f(fh,{class:`${g}-item-link-icon`},null),v])]),$=f(\"a\",{rel:\"nofollow\",class:`${g}-item-link`},[f(\"div\",{class:`${g}-item-container`},[a.value===\"rtl\"?f(fh,{class:`${g}-item-link-icon`},null):f(dh,{class:`${g}-item-link-icon`},null),v])]);return{prevIcon:y,nextIcon:b,jumpPrevIcon:S,jumpNextIcon:$}};return()=>{var g;const{itemRender:v=n.itemRender,buildOptionText:y=n.buildOptionText,selectComponentClass:b,responsive:S}=e,$=Yz(e,[\"itemRender\",\"buildOptionText\",\"selectComponentClass\",\"responsive\"]),w=i.value===\"small\"||!!(!((g=d.value)===null||g===void 0)&&g.xs&&!i.value&&S),C=h(h(h(h(h({},$),m(r.value)),{prefixCls:r.value,selectPrefixCls:u.value,selectComponentClass:b||(w?Dz:Rz),locale:p.value,buildOptionText:y}),o),{class:le({[`${r.value}-mini`]:w,[`${r.value}-rtl`]:a.value===\"rtl\"},o.class,c.value),itemRender:v});return s(f(zz,C,null))}}}),xd=Dt(Zz),Qz=()=>({avatar:W.any,description:W.any,prefixCls:String,title:W.any}),x2=ne({compatConfig:{MODE:3},name:\"AListItemMeta\",props:Qz(),displayName:\"AListItemMeta\",__ANT_LIST_ITEM_META:!0,slots:Object,setup(e,t){let{slots:n}=t;const{prefixCls:o}=Pe(\"list\",e);return()=>{var r,l,a,i,s,c;const u=`${o.value}-item-meta`,d=(r=e.title)!==null&&r!==void 0?r:(l=n.title)===null||l===void 0?void 0:l.call(n),p=(a=e.description)!==null&&a!==void 0?a:(i=n.description)===null||i===void 0?void 0:i.call(n),m=(s=e.avatar)!==null&&s!==void 0?s:(c=n.avatar)===null||c===void 0?void 0:c.call(n),g=f(\"div\",{class:`${o.value}-item-meta-content`},[d&&f(\"h4\",{class:`${o.value}-item-meta-title`},[d]),p&&f(\"div\",{class:`${o.value}-item-meta-description`},[p])]);return f(\"div\",{class:u},[m&&f(\"div\",{class:`${o.value}-item-meta-avatar`},[m]),(d||p)&&g])}}}),w2=Symbol(\"ListContextKey\");var Jz=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const eH=()=>({prefixCls:String,extra:W.any,actions:W.array,grid:Object,colStyle:{type:Object,default:void 0}}),_2=ne({compatConfig:{MODE:3},name:\"AListItem\",inheritAttrs:!1,Meta:x2,props:eH(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{itemLayout:r,grid:l}=Je(w2,{grid:J(),itemLayout:J()}),{prefixCls:a}=Pe(\"list\",e),i=()=>{var c;const u=((c=n.default)===null||c===void 0?void 0:c.call(n))||[];let d;return u.forEach(p=>{nE(p)&&!Ri(p)&&(d=!0)}),d&&u.length>1},s=()=>{var c,u;const d=(c=e.extra)!==null&&c!==void 0?c:(u=n.extra)===null||u===void 0?void 0:u.call(n);return r.value===\"vertical\"?!!d:!i()};return()=>{var c,u,d,p,m;const{class:g}=o,v=Jz(o,[\"class\"]),y=a.value,b=(c=e.extra)!==null&&c!==void 0?c:(u=n.extra)===null||u===void 0?void 0:u.call(n),S=(d=n.default)===null||d===void 0?void 0:d.call(n);let $=(p=e.actions)!==null&&p!==void 0?p:$t((m=n.actions)===null||m===void 0?void 0:m.call(n));$=$&&!Array.isArray($)?[$]:$;const w=$&&$.length>0&&f(\"ul\",{class:`${y}-item-action`,key:\"actions\"},[$.map((x,P)=>f(\"li\",{key:`${y}-item-action-${P}`},[x,P!==$.length-1&&f(\"em\",{class:`${y}-item-action-split`},null)]))]),C=l.value?\"div\":\"li\",_=f(C,A(A({},v),{},{class:le(`${y}-item`,{[`${y}-item-no-flex`]:!s()},g)}),{default:()=>[r.value===\"vertical\"&&b?[f(\"div\",{class:`${y}-item-main`,key:\"content\"},[S,w]),f(\"div\",{class:`${y}-item-extra`,key:\"extra\"},[b])]:[S,w,dt(b,{key:\"extra\"})]]});return l.value?f(bd,{flex:1,style:e.colStyle},{default:()=>[_]}):_}}}),tH=e=>{const{listBorderedCls:t,componentCls:n,paddingLG:o,margin:r,padding:l,listItemPaddingSM:a,marginLG:i,borderRadiusLG:s}=e;return{[`${t}`]:{border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:s,[`${n}-header,${n}-footer,${n}-item`]:{paddingInline:o},[`${n}-pagination`]:{margin:`${r}px ${i}px`}},[`${t}${n}-sm`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:a}},[`${t}${n}-lg`]:{[`${n}-item,${n}-header,${n}-footer`]:{padding:`${l}px ${o}px`}}}},nH=e=>{const{componentCls:t,screenSM:n,screenMD:o,marginLG:r,marginSM:l,margin:a}=e;return{[`@media screen and (max-width:${o})`]:{[`${t}`]:{[`${t}-item`]:{[`${t}-item-action`]:{marginInlineStart:r}}},[`${t}-vertical`]:{[`${t}-item`]:{[`${t}-item-extra`]:{marginInlineStart:r}}}},[`@media screen and (max-width: ${n})`]:{[`${t}`]:{[`${t}-item`]:{flexWrap:\"wrap\",[`${t}-action`]:{marginInlineStart:l}}},[`${t}-vertical`]:{[`${t}-item`]:{flexWrap:\"wrap-reverse\",[`${t}-item-main`]:{minWidth:e.contentWidth},[`${t}-item-extra`]:{margin:`auto auto ${a}px`}}}}}},oH=e=>{const{componentCls:t,antCls:n,controlHeight:o,minHeight:r,paddingSM:l,marginLG:a,padding:i,listItemPadding:s,colorPrimary:c,listItemPaddingSM:u,listItemPaddingLG:d,paddingXS:p,margin:m,colorText:g,colorTextDescription:v,motionDurationSlow:y,lineWidth:b}=e;return{[`${t}`]:h(h({},Ue(e)),{position:\"relative\",\"*\":{outline:\"none\"},[`${t}-header, ${t}-footer`]:{background:\"transparent\",paddingBlock:l},[`${t}-pagination`]:{marginBlockStart:a,textAlign:\"end\",[`${n}-pagination-options`]:{textAlign:\"start\"}},[`${t}-spin`]:{minHeight:r,textAlign:\"center\"},[`${t}-items`]:{margin:0,padding:0,listStyle:\"none\"},[`${t}-item`]:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",padding:s,color:g,[`${t}-item-meta`]:{display:\"flex\",flex:1,alignItems:\"flex-start\",maxWidth:\"100%\",[`${t}-item-meta-avatar`]:{marginInlineEnd:i},[`${t}-item-meta-content`]:{flex:\"1 0\",width:0,color:g},[`${t}-item-meta-title`]:{marginBottom:e.marginXXS,color:g,fontSize:e.fontSize,lineHeight:e.lineHeight,\"> a\":{color:g,transition:`all ${y}`,\"&:hover\":{color:c}}},[`${t}-item-meta-description`]:{color:v,fontSize:e.fontSize,lineHeight:e.lineHeight}},[`${t}-item-action`]:{flex:\"0 0 auto\",marginInlineStart:e.marginXXL,padding:0,fontSize:0,listStyle:\"none\",\"& > li\":{position:\"relative\",display:\"inline-block\",padding:`0 ${p}px`,color:v,fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:\"center\",\"&:first-child\":{paddingInlineStart:0}},[`${t}-item-action-split`]:{position:\"absolute\",insetBlockStart:\"50%\",insetInlineEnd:0,width:b,height:Math.ceil(e.fontSize*e.lineHeight)-e.marginXXS*2,transform:\"translateY(-50%)\",backgroundColor:e.colorSplit}}},[`${t}-empty`]:{padding:`${i}px 0`,color:v,fontSize:e.fontSizeSM,textAlign:\"center\"},[`${t}-empty-text`]:{padding:i,color:e.colorTextDisabled,fontSize:e.fontSize,textAlign:\"center\"},[`${t}-item-no-flex`]:{display:\"block\"}}),[`${t}-grid ${n}-col > ${t}-item`]:{display:\"block\",maxWidth:\"100%\",marginBlockEnd:m,paddingBlock:0,borderBlockEnd:\"none\"},[`${t}-vertical ${t}-item`]:{alignItems:\"initial\",[`${t}-item-main`]:{display:\"block\",flex:1},[`${t}-item-extra`]:{marginInlineStart:a},[`${t}-item-meta`]:{marginBlockEnd:i,[`${t}-item-meta-title`]:{marginBlockEnd:l,color:g,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}},[`${t}-item-action`]:{marginBlockStart:i,marginInlineStart:\"auto\",\"> li\":{padding:`0 ${i}px`,\"&:first-child\":{paddingInlineStart:0}}}},[`${t}-split ${t}-item`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,\"&:last-child\":{borderBlockEnd:\"none\"}},[`${t}-split ${t}-header`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-split${t}-empty ${t}-footer`]:{borderTop:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-loading ${t}-spin-nested-loading`]:{minHeight:o},[`${t}-split${t}-something-after-last-item ${n}-spin-container > ${t}-items > ${t}-item:last-child`]:{borderBlockEnd:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`},[`${t}-lg ${t}-item`]:{padding:d},[`${t}-sm ${t}-item`]:{padding:u},[`${t}:not(${t}-vertical)`]:{[`${t}-item-no-flex`]:{[`${t}-item-action`]:{float:\"right\"}}}}},rH=Ge(\"List\",e=>{const t=Le(e,{listBorderedCls:`${e.componentCls}-bordered`,minHeight:e.controlHeightLG,listItemPadding:`${e.paddingContentVertical}px ${e.paddingContentHorizontalLG}px`,listItemPaddingSM:`${e.paddingContentVerticalSM}px ${e.paddingContentHorizontal}px`,listItemPaddingLG:`${e.paddingContentVerticalLG}px ${e.paddingContentHorizontalLG}px`});return[oH(t),tH(t),nH(t)]},{contentWidth:220}),lH=()=>({bordered:ye(),dataSource:ct(),extra:$n(),grid:De(),itemLayout:String,loading:Fe([Boolean,Object]),loadMore:$n(),pagination:Fe([Boolean,Object]),prefixCls:String,rowKey:Fe([String,Number,Function]),renderItem:de(),size:String,split:ye(),header:$n(),footer:$n(),locale:De()}),Ir=ne({compatConfig:{MODE:3},name:\"AList\",inheritAttrs:!1,Item:_2,props:Ze(lH(),{dataSource:[],bordered:!1,split:!0,loading:!1,pagination:!1}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;var r,l;Qe(w2,{grid:We(e,\"grid\"),itemLayout:We(e,\"itemLayout\")});const a={current:1,total:0},{prefixCls:i,direction:s,renderEmpty:c}=Pe(\"list\",e),[u,d]=rH(i),p=I(()=>e.pagination&&typeof e.pagination==\"object\"?e.pagination:{}),m=J((r=p.value.defaultCurrent)!==null&&r!==void 0?r:1),g=J((l=p.value.defaultPageSize)!==null&&l!==void 0?l:10);pe(p,()=>{\"current\"in p.value&&(m.value=p.value.current),\"pageSize\"in p.value&&(g.value=p.value.pageSize)});const v=[],y=D=>(z,T)=>{m.value=z,g.value=T,p.value[D]&&p.value[D](z,T)},b=y(\"onChange\"),S=y(\"onShowSizeChange\"),$=I(()=>typeof e.loading==\"boolean\"?{spinning:e.loading}:e.loading),w=I(()=>$.value&&$.value.spinning),C=I(()=>{let D=\"\";switch(e.size){case\"large\":D=\"lg\";break;case\"small\":D=\"sm\";break}return D}),_=I(()=>({[`${i.value}`]:!0,[`${i.value}-vertical`]:e.itemLayout===\"vertical\",[`${i.value}-${C.value}`]:C.value,[`${i.value}-split`]:e.split,[`${i.value}-bordered`]:e.bordered,[`${i.value}-loading`]:w.value,[`${i.value}-grid`]:!!e.grid,[`${i.value}-rtl`]:s.value===\"rtl\"})),x=I(()=>{const D=h(h(h({},a),{total:e.dataSource.length,current:m.value,pageSize:g.value}),e.pagination||{}),z=Math.ceil(D.total/D.pageSize);return D.current>z&&(D.current=z),D}),P=I(()=>{let D=[...e.dataSource];return e.pagination&&e.dataSource.length>(x.value.current-1)*x.value.pageSize&&(D=[...e.dataSource].splice((x.value.current-1)*x.value.pageSize,x.value.pageSize)),D}),O=Ea(),M=Un(()=>{for(let D=0;D<ar.length;D+=1){const z=ar[D];if(O.value[z])return z}}),E=I(()=>{if(!e.grid)return;const D=M.value&&e.grid[M.value]?e.grid[M.value]:e.grid.column;if(D)return{width:`${100/D}%`,maxWidth:`${100/D}%`}}),R=(D,z)=>{var T;const k=(T=e.renderItem)!==null&&T!==void 0?T:n.renderItem;if(!k)return null;let B;const L=typeof e.rowKey;return L===\"function\"?B=e.rowKey(D):L===\"string\"||L===\"number\"?B=D[e.rowKey]:B=D.key,B||(B=`list-item-${z}`),v[z]=B,k({item:D,index:z})};return()=>{var D,z,T,k,B,L,N,F;const j=(D=e.loadMore)!==null&&D!==void 0?D:(z=n.loadMore)===null||z===void 0?void 0:z.call(n),H=(T=e.footer)!==null&&T!==void 0?T:(k=n.footer)===null||k===void 0?void 0:k.call(n),K=(B=e.header)!==null&&B!==void 0?B:(L=n.header)===null||L===void 0?void 0:L.call(n),G=$t((N=n.default)===null||N===void 0?void 0:N.call(n)),V=!!(j||e.pagination||H),q=le(h(h({},_.value),{[`${i.value}-something-after-last-item`]:V}),o.class,d.value),Z=e.pagination?f(\"div\",{class:`${i.value}-pagination`},[f(xd,A(A({},x.value),{},{onChange:b,onShowSizeChange:S}),null)]):null;let oe=w.value&&f(\"div\",{style:{minHeight:\"53px\"}},null);if(P.value.length>0){v.length=0;const Y=P.value.map((ce,ue)=>R(ce,ue)),Q=Y.map((ce,ue)=>f(\"div\",{key:v[ue],style:E.value},[ce]));oe=e.grid?f(_g,{gutter:e.grid.gutter},{default:()=>[Q]}):f(\"ul\",{class:`${i.value}-items`},[Y])}else!G.length&&!w.value&&(oe=f(\"div\",{class:`${i.value}-empty-text`},[((F=e.locale)===null||F===void 0?void 0:F.emptyText)||c(\"List\")]));const re=x.value.position||\"bottom\";return u(f(\"div\",A(A({},o),{},{class:q}),[(re===\"top\"||re===\"both\")&&Z,K&&f(\"div\",{class:`${i.value}-header`},[K]),f(Vo,$.value,{default:()=>[oe,G]}),H&&f(\"div\",{class:`${i.value}-footer`},[H]),j||(re===\"bottom\"||re===\"both\")&&Z]))}}});Ir.install=function(e){return e.component(Ir.name,Ir),e.component(Ir.Item.name,Ir.Item),e.component(Ir.Item.Meta.name,Ir.Item.Meta),e};function aH(e){const{selectionStart:t}=e;return e.value.slice(0,t)}function iH(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";return(Array.isArray(t)?t:[t]).reduce((o,r)=>{const l=e.lastIndexOf(r);return l>o.location?{location:l,prefix:r}:o},{location:-1,prefix:\"\"})}function By(e){return(e||\"\").toLowerCase()}function sH(e,t,n){const o=e[0];if(!o||o===n)return e;let r=e;const l=t.length;for(let a=0;a<l;a+=1)if(By(r[a])!==By(t[a])){r=r.slice(a);break}else a===l-1&&(r=r.slice(l));return r}function cH(e,t){const{measureLocation:n,prefix:o,targetText:r,selectionStart:l,split:a}=t;let i=e.slice(0,n);i[i.length-a.length]===a&&(i=i.slice(0,i.length-a.length)),i&&(i=`${i}${a}`);let s=sH(e.slice(l),r.slice(l-n-o.length),a);s.slice(0,a.length)===a&&(s=s.slice(a.length));const c=`${i}${o}${r}${a}`;return{text:`${c}${s}`,selectionLocation:c.length}}function uH(e,t){e.setSelectionRange(t,t),e.blur(),e.focus()}function dH(e,t){const{split:n}=t;return!n||e.indexOf(n)===-1}function fH(e,t){let{value:n=\"\"}=t;const o=e.toLowerCase();return n.toLowerCase().indexOf(o)!==-1}const I2=Symbol(\"MentionsContextKey\");function pH(){}const mH=ne({compatConfig:{MODE:3},name:\"DropdownMenu\",props:{prefixCls:String,options:{type:Array,default:()=>[]}},setup(e,t){let{slots:n}=t;const{activeIndex:o,setActiveIndex:r,selectOption:l,onFocus:a=pH,loading:i}=Je(I2,{activeIndex:ee(),loading:ee(!1)});let s;const c=u=>{clearTimeout(s),s=setTimeout(()=>{a(u)})};return et(()=>{clearTimeout(s)}),()=>{var u;const{prefixCls:d,options:p}=e,m=p[o.value]||{};return f(Ft,{prefixCls:`${d}-menu`,activeKey:m.value,onSelect:g=>{let{key:v}=g;const y=p.find(b=>{let{value:S}=b;return S===v});l(y)},onMousedown:c},{default:()=>[!i.value&&p.map((g,v)=>{var y,b;const{value:S,disabled:$,label:w=g.value,class:C,style:_}=g;return f(To,{key:S,disabled:$,onMouseenter:()=>{r(v)},class:C,style:_},{default:()=>[(b=(y=n.option)===null||y===void 0?void 0:y.call(n,g))!==null&&b!==void 0?b:typeof w==\"function\"?w(g):w]})}),!i.value&&p.length===0?f(To,{key:\"notFoundContent\",disabled:!0},{default:()=>[(u=n.notFoundContent)===null||u===void 0?void 0:u.call(n)]}):null,i.value&&f(To,{key:\"loading\",disabled:!0},{default:()=>[f(Vo,{size:\"small\"},null)]})]})}}}),vH={bottomRight:{points:[\"tl\",\"br\"],offset:[0,4],overflow:{adjustX:0,adjustY:1}},bottomLeft:{points:[\"tr\",\"bl\"],offset:[0,4],overflow:{adjustX:0,adjustY:1}},topRight:{points:[\"bl\",\"tr\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topLeft:{points:[\"br\",\"tl\"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}},gH=ne({compatConfig:{MODE:3},name:\"KeywordTrigger\",props:{loading:{type:Boolean,default:void 0},options:{type:Array,default:()=>[]},prefixCls:String,placement:String,visible:{type:Boolean,default:void 0},transitionName:String,getPopupContainer:Function,direction:String,dropdownClassName:String},setup(e,t){let{slots:n}=t;const o=()=>`${e.prefixCls}-dropdown`,r=()=>{const{options:a}=e;return f(mH,{prefixCls:o(),options:a},{notFoundContent:n.notFoundContent,option:n.option})},l=I(()=>{const{placement:a,direction:i}=e;let s=\"topRight\";return i===\"rtl\"?s=a===\"top\"?\"topLeft\":\"bottomLeft\":s=a===\"top\"?\"topRight\":\"bottomRight\",s});return()=>{const{visible:a,transitionName:i,getPopupContainer:s}=e;return f(Ol,{prefixCls:o(),popupVisible:a,popup:r(),popupClassName:e.dropdownClassName,popupPlacement:l.value,popupTransitionName:i,builtinPlacements:vH,getPopupContainer:s},{default:n.default})}}}),hH=hn(\"top\",\"bottom\"),P2={autofocus:{type:Boolean,default:void 0},prefix:W.oneOfType([W.string,W.arrayOf(W.string)]),prefixCls:String,value:String,disabled:{type:Boolean,default:void 0},split:String,transitionName:String,placement:W.oneOf(hH),character:W.any,characterRender:Function,filterOption:{type:[Boolean,Function]},validateSearch:Function,getPopupContainer:{type:Function},options:ct(),loading:{type:Boolean,default:void 0},rows:[Number,String],direction:{type:String}},T2=h(h({},P2),{dropdownClassName:String}),O2={prefix:\"@\",split:\" \",rows:1,validateSearch:dH,filterOption:()=>fH};Ze(T2,O2);var Ly=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function Fy(){}const bH=ne({compatConfig:{MODE:3},name:\"Mentions\",inheritAttrs:!1,props:Ze(T2,O2),emits:[\"change\",\"select\",\"search\",\"focus\",\"blur\",\"pressenter\"],setup(e,t){let{emit:n,attrs:o,expose:r,slots:l}=t;const a=J(null),i=J(null),s=J(),c=vt({value:e.value||\"\",measuring:!1,measureLocation:0,measureText:null,measurePrefix:\"\",activeIndex:0,isFocus:!1});ze(()=>{c.value=e.value});const u=E=>{n(\"change\",E)},d=E=>{let{target:{value:R}}=E;u(R)},p=(E,R,D)=>{h(c,{measuring:!0,measureText:E,measurePrefix:R,measureLocation:D,activeIndex:0})},m=E=>{h(c,{measuring:!1,measureLocation:0,measureText:null}),E?.()},g=E=>{const{which:R}=E;if(c.measuring){if(R===we.UP||R===we.DOWN){const D=P.value.length,z=R===we.UP?-1:1,T=(c.activeIndex+z+D)%D;c.activeIndex=T,E.preventDefault()}else if(R===we.ESC)m();else if(R===we.ENTER){if(E.preventDefault(),!P.value.length){m();return}const D=P.value[c.activeIndex];C(D)}}},v=E=>{const{key:R,which:D}=E,{measureText:z,measuring:T}=c,{prefix:k,validateSearch:B}=e,L=E.target;if(L.composing)return;const N=aH(L),{location:F,prefix:j}=iH(N,k);if([we.ESC,we.UP,we.DOWN,we.ENTER].indexOf(D)===-1)if(F!==-1){const H=N.slice(F+j.length),K=B(H,e),G=!!x(H).length;K?(R===j||R===\"Shift\"||T||H!==z&&G)&&p(H,j,F):T&&m(),K&&n(\"search\",H,j)}else T&&m()},y=E=>{c.measuring||n(\"pressenter\",E)},b=E=>{$(E)},S=E=>{w(E)},$=E=>{clearTimeout(s.value);const{isFocus:R}=c;!R&&E&&n(\"focus\",E),c.isFocus=!0},w=E=>{s.value=setTimeout(()=>{c.isFocus=!1,m(),n(\"blur\",E)},100)},C=E=>{const{split:R}=e,{value:D=\"\"}=E,{text:z,selectionLocation:T}=cH(c.value,{measureLocation:c.measureLocation,targetText:D,prefix:c.measurePrefix,selectionStart:i.value.getSelectionStart(),split:R});u(z),m(()=>{uH(i.value.input,T)}),n(\"select\",E,c.measurePrefix)},_=E=>{c.activeIndex=E},x=E=>{const R=E||c.measureText||\"\",{filterOption:D}=e;return e.options.filter(T=>D?D(R,T):!0)},P=I(()=>x());return r({blur:()=>{i.value.blur()},focus:()=>{i.value.focus()}}),Qe(I2,{activeIndex:We(c,\"activeIndex\"),setActiveIndex:_,selectOption:C,onFocus:$,onBlur:w,loading:We(e,\"loading\")}),Hn(()=>{it(()=>{c.measuring&&(a.value.scrollTop=i.value.getScrollTop())})}),()=>{const{measureLocation:E,measurePrefix:R,measuring:D}=c,{prefixCls:z,placement:T,transitionName:k,getPopupContainer:B,direction:L}=e,N=Ly(e,[\"prefixCls\",\"placement\",\"transitionName\",\"getPopupContainer\",\"direction\"]),{class:F,style:j}=o,H=Ly(o,[\"class\",\"style\"]),K=ot(N,[\"value\",\"prefix\",\"split\",\"validateSearch\",\"filterOption\",\"options\",\"loading\"]),G=h(h(h({},K),H),{onChange:Fy,onSelect:Fy,value:c.value,onInput:d,onBlur:S,onKeydown:g,onKeyup:v,onFocus:b,onPressenter:y});return f(\"div\",{class:le(z,F),style:j},[f(Pa,A(A({},G),{},{ref:i,tag:\"textarea\"}),null),D&&f(\"div\",{ref:a,class:`${z}-measure`},[c.value.slice(0,E),f(gH,{prefixCls:z,transitionName:k,dropdownClassName:e.dropdownClassName,placement:T,options:D?P.value:[],visible:!0,direction:L,getPopupContainer:B},{default:()=>[f(\"span\",null,[R])],notFoundContent:l.notFoundContent,option:l.option}),c.value.slice(E+R.length)])])}}}),yH={value:String,disabled:Boolean,payload:De()},E2=h(h({},yH),{label:Ct([])}),M2={name:\"Option\",props:E2,render(e,t){let{slots:n}=t;var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}};ne(h({compatConfig:{MODE:3}},M2));const SH=e=>{const{componentCls:t,colorTextDisabled:n,controlItemBgHover:o,controlPaddingHorizontal:r,colorText:l,motionDurationSlow:a,lineHeight:i,controlHeight:s,inputPaddingHorizontal:c,inputPaddingVertical:u,fontSize:d,colorBgElevated:p,borderRadiusLG:m,boxShadowSecondary:g}=e,v=Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2);return{[t]:h(h(h(h(h({},Ue(e)),Al(e)),{position:\"relative\",display:\"inline-block\",height:\"auto\",padding:0,overflow:\"hidden\",lineHeight:i,whiteSpace:\"pre-wrap\",verticalAlign:\"bottom\"}),Wi(e,t)),{\"&-disabled\":{\"> textarea\":h({},fg(e))},\"&-focused\":h({},jr(e)),[`&-affix-wrapper ${t}-suffix`]:{position:\"absolute\",top:0,insetInlineEnd:c,bottom:0,zIndex:1,display:\"inline-flex\",alignItems:\"center\",margin:\"auto\"},[`> textarea, ${t}-measure`]:{color:l,boxSizing:\"border-box\",minHeight:s-2,margin:0,padding:`${u}px ${c}px`,overflow:\"inherit\",overflowX:\"hidden\",overflowY:\"auto\",fontWeight:\"inherit\",fontSize:\"inherit\",fontFamily:\"inherit\",fontStyle:\"inherit\",fontVariant:\"inherit\",fontSizeAdjust:\"inherit\",fontStretch:\"inherit\",lineHeight:\"inherit\",direction:\"inherit\",letterSpacing:\"inherit\",whiteSpace:\"inherit\",textAlign:\"inherit\",verticalAlign:\"top\",wordWrap:\"break-word\",wordBreak:\"inherit\",tabSize:\"inherit\"},\"> textarea\":h({width:\"100%\",border:\"none\",outline:\"none\",resize:\"none\",backgroundColor:\"inherit\"},dg(e.colorTextPlaceholder)),[`${t}-measure`]:{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:-1,color:\"transparent\",pointerEvents:\"none\",\"> span\":{display:\"inline-block\",minHeight:\"1em\"}},\"&-dropdown\":h(h({},Ue(e)),{position:\"absolute\",top:-9999,insetInlineStart:-9999,zIndex:e.zIndexPopup,boxSizing:\"border-box\",fontSize:d,fontVariant:\"initial\",backgroundColor:p,borderRadius:m,outline:\"none\",boxShadow:g,\"&-hidden\":{display:\"none\"},[`${t}-dropdown-menu`]:{maxHeight:e.dropdownHeight,marginBottom:0,paddingInlineStart:0,overflow:\"auto\",listStyle:\"none\",outline:\"none\",\"&-item\":h(h({},Gt),{position:\"relative\",display:\"block\",minWidth:e.controlItemWidth,padding:`${v}px ${r}px`,color:l,fontWeight:\"normal\",lineHeight:i,cursor:\"pointer\",transition:`background ${a} ease`,\"&:hover\":{backgroundColor:o},\"&:first-child\":{borderStartStartRadius:m,borderStartEndRadius:m,borderEndStartRadius:0,borderEndEndRadius:0},\"&:last-child\":{borderStartStartRadius:0,borderStartEndRadius:0,borderEndStartRadius:m,borderEndEndRadius:m},\"&-disabled\":{color:n,cursor:\"not-allowed\",\"&:hover\":{color:n,backgroundColor:o,cursor:\"not-allowed\"}},\"&-selected\":{color:l,fontWeight:e.fontWeightStrong,backgroundColor:o},\"&-active\":{backgroundColor:o}})}})})}},$H=Ge(\"Mentions\",e=>{const t=Dl(e);return[SH(t)]},e=>({dropdownHeight:250,controlItemWidth:100,zIndexPopup:e.zIndexPopupBase+50}));var zy=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function CH(){return!0}const xH=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{prefix:n=\"@\",split:o=\" \"}=t,r=Array.isArray(n)?n:[n];return e.split(o).map(function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\",a=null;return r.some(i=>l.slice(0,i.length)===i?(a=i,!0):!1),a!==null?{prefix:a,value:l.slice(a.length)}:null}).filter(l=>!!l&&!!l.value)},wH=()=>h(h({},P2),{loading:{type:Boolean,default:void 0},onFocus:{type:Function},onBlur:{type:Function},onSelect:{type:Function},onChange:{type:Function},onPressenter:{type:Function},\"onUpdate:value\":{type:Function},notFoundContent:W.any,defaultValue:String,id:String,status:String}),Mf=ne({compatConfig:{MODE:3},name:\"AMentions\",inheritAttrs:!1,props:wH(),slots:Object,setup(e,t){let{slots:n,emit:o,attrs:r,expose:l}=t;var a,i;const{prefixCls:s,renderEmpty:c,direction:u}=Pe(\"mentions\",e),[d,p]=$H(s),m=ee(!1),g=ee(null),v=ee((i=(a=e.value)!==null&&a!==void 0?a:e.defaultValue)!==null&&i!==void 0?i:\"\"),y=Jt(),b=un.useInject(),S=I(()=>Do(b.status,e.status));Fv({prefixCls:I(()=>`${s.value}-menu`),mode:I(()=>\"vertical\"),selectable:I(()=>!1),onClick:()=>{},validator:R=>{let{mode:D}=R}}),pe(()=>e.value,R=>{v.value=R});const $=R=>{m.value=!0,o(\"focus\",R)},w=R=>{m.value=!1,o(\"blur\",R),y.onFieldBlur()},C=function(){for(var R=arguments.length,D=new Array(R),z=0;z<R;z++)D[z]=arguments[z];o(\"select\",...D),m.value=!0},_=R=>{e.value===void 0&&(v.value=R),o(\"update:value\",R),o(\"change\",R),y.onFieldChange()},x=()=>{const R=e.notFoundContent;return R!==void 0?R:n.notFoundContent?n.notFoundContent():c(\"Select\")},P=()=>{var R;return $t(((R=n.default)===null||R===void 0?void 0:R.call(n))||[]).map(D=>{var z,T;return h(h({},V$(D)),{label:(T=(z=D.children)===null||z===void 0?void 0:z.default)===null||T===void 0?void 0:T.call(z)})})};l({focus:()=>{g.value.focus()},blur:()=>{g.value.blur()}});const E=I(()=>e.loading?CH:e.filterOption);return()=>{const{disabled:R,getPopupContainer:D,rows:z=1,id:T=y.id.value}=e,k=zy(e,[\"disabled\",\"getPopupContainer\",\"rows\",\"id\"]),{hasFeedback:B,feedbackIcon:L}=b,{class:N}=r,F=zy(r,[\"class\"]),j=ot(k,[\"defaultValue\",\"onUpdate:value\",\"prefixCls\"]),H=le({[`${s.value}-disabled`]:R,[`${s.value}-focused`]:m.value,[`${s.value}-rtl`]:u.value===\"rtl\"},Cn(s.value,S.value),!B&&N,p.value),K=h(h(h(h({prefixCls:s.value},j),{disabled:R,direction:u.value,filterOption:E.value,getPopupContainer:D,options:e.loading?[{value:\"ANTDV_SEARCHING\",disabled:!0,label:f(Vo,{size:\"small\"},null)}]:e.options||P(),class:H}),F),{rows:z,onChange:_,onSelect:C,onFocus:$,onBlur:w,ref:g,value:v.value,id:T}),G=f(bH,A(A({},K),{},{dropdownClassName:p.value}),{notFoundContent:x,option:n.option});return d(B?f(\"div\",{class:le(`${s.value}-affix-wrapper`,Cn(`${s.value}-affix-wrapper`,S.value,B),N,p.value)},[G,f(\"span\",{class:`${s.value}-suffix`},[L])]):G)}}}),bc=ne(h(h({compatConfig:{MODE:3}},M2),{name:\"AMentionsOption\",props:E2})),_H=h(Mf,{Option:bc,getMentions:xH,install:e=>(e.component(Mf.name,Mf),e.component(bc.name,bc),e)});var IH=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};let om;const PH=e=>{om={x:e.pageX,y:e.pageY},setTimeout(()=>om=null,100)};aw()&&Rt(document.documentElement,\"click\",PH,!0);const TH=()=>({prefixCls:String,visible:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},confirmLoading:{type:Boolean,default:void 0},title:W.any,closable:{type:Boolean,default:void 0},closeIcon:W.any,onOk:Function,onCancel:Function,\"onUpdate:visible\":Function,\"onUpdate:open\":Function,onChange:Function,afterClose:Function,centered:{type:Boolean,default:void 0},width:[String,Number],footer:W.any,okText:W.any,okType:String,cancelText:W.any,icon:W.any,maskClosable:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},okButtonProps:De(),cancelButtonProps:De(),destroyOnClose:{type:Boolean,default:void 0},wrapClassName:String,maskTransitionName:String,transitionName:String,getContainer:{type:[String,Function,Boolean,Object],default:void 0},zIndex:Number,bodyStyle:De(),maskStyle:De(),mask:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},wrapProps:Object,focusTriggerAfterClose:{type:Boolean,default:void 0},modalRender:Function,mousePosition:De()}),qt=ne({compatConfig:{MODE:3},name:\"AModal\",inheritAttrs:!1,props:Ze(TH(),{width:520,confirmLoading:!1,okType:\"primary\"}),setup(e,t){let{emit:n,slots:o,attrs:r}=t;const[l]=yo(\"Modal\"),{prefixCls:a,rootPrefixCls:i,direction:s,getPopupContainer:c}=Pe(\"modal\",e),[u,d]=K7(a);eo(e.visible===void 0);const p=v=>{n(\"update:visible\",!1),n(\"update:open\",!1),n(\"cancel\",v),n(\"change\",!1)},m=v=>{n(\"ok\",v)},g=()=>{var v,y;const{okText:b=(v=o.okText)===null||v===void 0?void 0:v.call(o),okType:S,cancelText:$=(y=o.cancelText)===null||y===void 0?void 0:y.call(o),confirmLoading:w}=e;return f(Ve,null,[f(_t,A({onClick:p},e.cancelButtonProps),{default:()=>[$||l.value.cancelText]}),f(_t,A(A({},Qc(S)),{},{loading:w,onClick:m},e.okButtonProps),{default:()=>[b||l.value.okText]})])};return()=>{var v,y;const{prefixCls:b,visible:S,open:$,wrapClassName:w,centered:C,getContainer:_,closeIcon:x=(v=o.closeIcon)===null||v===void 0?void 0:v.call(o),focusTriggerAfterClose:P=!0}=e,O=IH(e,[\"prefixCls\",\"visible\",\"open\",\"wrapClassName\",\"centered\",\"getContainer\",\"closeIcon\",\"focusTriggerAfterClose\"]),M=le(w,{[`${a.value}-centered`]:!!C,[`${a.value}-wrap-rtl`]:s.value===\"rtl\"});return u(f(d2,A(A(A({},O),r),{},{rootClassName:d.value,class:le(d.value,r.class),getContainer:_||c?.value,prefixCls:a.value,wrapClassName:M,visible:$??S,onClose:p,focusTriggerAfterClose:P,transitionName:_n(i.value,\"zoom\",e.transitionName),maskTransitionName:_n(i.value,\"fade\",e.maskTransitionName),mousePosition:(y=O.mousePosition)!==null&&y!==void 0?y:om}),h(h({},o),{footer:o.footer||g,closeIcon:()=>f(\"span\",{class:`${a.value}-close-x`},[x||f(Wn,{class:`${a.value}-close-icon`},null)])})))}}}),A2=()=>{const e=ee(!1);return et(()=>{e.value=!0}),e},OH={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:De(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function Hy(e){return!!(e&&e.then)}const rm=ne({compatConfig:{MODE:3},name:\"ActionButton\",props:OH,setup(e,t){let{slots:n}=t;const o=ee(!1),r=ee(),l=ee(!1);let a;const i=A2();Ne(()=>{e.autofocus&&(a=setTimeout(()=>{var d,p;return(p=(d=Tn(r.value))===null||d===void 0?void 0:d.focus)===null||p===void 0?void 0:p.call(d)}))}),et(()=>{clearTimeout(a)});const s=function(){for(var d,p=arguments.length,m=new Array(p),g=0;g<p;g++)m[g]=arguments[g];(d=e.close)===null||d===void 0||d.call(e,...m)},c=d=>{Hy(d)&&(l.value=!0,d.then(function(){i.value||(l.value=!1),s(...arguments),o.value=!1},p=>(i.value||(l.value=!1),o.value=!1,Promise.reject(p))))},u=d=>{const{actionFn:p}=e;if(o.value)return;if(o.value=!0,!p){s();return}let m;if(e.emitEvent){if(m=p(d),e.quitOnNullishReturnValue&&!Hy(m)){o.value=!1,s(d);return}}else if(p.length)m=p(e.close),o.value=!1;else if(m=p(),!m){s();return}c(m)};return()=>{const{type:d,prefixCls:p,buttonProps:m}=e;return f(_t,A(A(A({},Qc(d)),{},{onClick:u,loading:l.value,prefixCls:p},m),{},{ref:r}),n)}}});function zl(e){return typeof e==\"function\"?e():e}const D2=ne({name:\"ConfirmDialog\",inheritAttrs:!1,props:[\"icon\",\"onCancel\",\"onOk\",\"close\",\"closable\",\"zIndex\",\"afterClose\",\"visible\",\"open\",\"keyboard\",\"centered\",\"getContainer\",\"maskStyle\",\"okButtonProps\",\"cancelButtonProps\",\"okType\",\"prefixCls\",\"okCancel\",\"width\",\"mask\",\"maskClosable\",\"okText\",\"cancelText\",\"autoFocusButton\",\"transitionName\",\"maskTransitionName\",\"type\",\"title\",\"content\",\"direction\",\"rootPrefixCls\",\"bodyStyle\",\"closeIcon\",\"modalRender\",\"focusTriggerAfterClose\",\"wrapClassName\",\"confirmPrefixCls\",\"footer\"],setup(e,t){let{attrs:n}=t;const[o]=yo(\"Modal\");return()=>{const{icon:r,onCancel:l,onOk:a,close:i,okText:s,closable:c=!1,zIndex:u,afterClose:d,keyboard:p,centered:m,getContainer:g,maskStyle:v,okButtonProps:y,cancelButtonProps:b,okCancel:S,width:$=416,mask:w=!0,maskClosable:C=!1,type:_,open:x,title:P,content:O,direction:M,closeIcon:E,modalRender:R,focusTriggerAfterClose:D,rootPrefixCls:z,bodyStyle:T,wrapClassName:k,footer:B}=e;let L=r;if(!r&&r!==null)switch(_){case\"info\":L=f(wa,null,null);break;case\"success\":L=f(gr,null,null);break;case\"error\":L=f(jn,null,null);break;default:L=f(vr,null,null)}const N=e.okType||\"primary\",F=e.prefixCls||\"ant-modal\",j=`${F}-confirm`,H=n.style||{},K=S??_===\"confirm\",G=e.autoFocusButton===null?!1:e.autoFocusButton||\"ok\",V=`${F}-confirm`,q=le(V,`${V}-${e.type}`,{[`${V}-rtl`]:M===\"rtl\"},n.class),Z=o.value,oe=K&&f(rm,{actionFn:l,close:i,autofocus:G===\"cancel\",buttonProps:b,prefixCls:`${z}-btn`},{default:()=>[zl(e.cancelText)||Z.cancelText]});return f(qt,{prefixCls:F,class:q,wrapClassName:le({[`${V}-centered`]:!!m},k),onCancel:re=>i?.({triggerCancel:!0},re),open:x,title:\"\",footer:\"\",transitionName:_n(z,\"zoom\",e.transitionName),maskTransitionName:_n(z,\"fade\",e.maskTransitionName),mask:w,maskClosable:C,maskStyle:v,style:H,bodyStyle:T,width:$,zIndex:u,afterClose:d,keyboard:p,centered:m,getContainer:g,closable:c,closeIcon:E,modalRender:R,focusTriggerAfterClose:D},{default:()=>[f(\"div\",{class:`${j}-body-wrapper`},[f(\"div\",{class:`${j}-body`},[zl(L),P===void 0?null:f(\"span\",{class:`${j}-title`},[zl(P)]),f(\"div\",{class:`${j}-content`},[zl(O)])]),B!==void 0?zl(B):f(\"div\",{class:`${j}-btns`},[oe,f(rm,{type:N,actionFn:a,close:i,autofocus:G===\"ok\",buttonProps:y,prefixCls:`${z}-btn`},{default:()=>[zl(s)||(K?Z.okText:Z.justOkText)]})])])]})}}}),dl=[],Zi=e=>{const t=document.createDocumentFragment();let n=h(h({},ot(e,[\"parentContext\",\"appContext\"])),{close:l,open:!0}),o=null;function r(){o&&(Fr(null,t),o=null);for(var c=arguments.length,u=new Array(c),d=0;d<c;d++)u[d]=arguments[d];const p=u.some(m=>m&&m.triggerCancel);e.onCancel&&p&&e.onCancel(()=>{},...u.slice(1));for(let m=0;m<dl.length;m++)if(dl[m]===l){dl.splice(m,1);break}}function l(){for(var c=arguments.length,u=new Array(c),d=0;d<c;d++)u[d]=arguments[d];n=h(h({},n),{open:!1,afterClose:()=>{typeof e.afterClose==\"function\"&&e.afterClose(),r.apply(this,u)}}),n.visible&&delete n.visible,a(n)}function a(c){typeof c==\"function\"?n=c(n):n=h(h({},n),c),o&&U3(o,n,t)}const i=c=>{const u=mn,d=u.prefixCls,p=c.prefixCls||`${d}-modal`,m=u.iconPrefixCls,g=hL();return f(Nr,A(A({},u),{},{prefixCls:d}),{default:()=>[f(D2,A(A({},c),{},{rootPrefixCls:d,prefixCls:p,iconPrefixCls:m,locale:g,cancelText:c.cancelText||g.cancelText}),null)]})};function s(c){const u=f(i,h({},c));return u.appContext=e.parentContext||e.appContext||u.appContext,Fr(u,t),u}return o=s(n),dl.push(l),{destroy:l,update:a}};function R2(e){return h(h({},e),{type:\"warning\"})}function k2(e){return h(h({},e),{type:\"info\"})}function N2(e){return h(h({},e),{type:\"success\"})}function B2(e){return h(h({},e),{type:\"error\"})}function L2(e){return h(h({},e),{type:\"confirm\"})}const EH=()=>({config:Object,afterClose:Function,destroyAction:Function,open:Boolean}),MH=ne({name:\"HookModal\",inheritAttrs:!1,props:Ze(EH(),{config:{width:520,okType:\"primary\"}}),setup(e,t){let{expose:n}=t;var o;const r=I(()=>e.open),l=I(()=>e.config),{direction:a,getPrefixCls:i}=Ru(),s=i(\"modal\"),c=i(),u=()=>{var g,v;e?.afterClose(),(v=(g=l.value).afterClose)===null||v===void 0||v.call(g)},d=function(){e.destroyAction(...arguments)};n({destroy:d});const p=(o=l.value.okCancel)!==null&&o!==void 0?o:l.value.type===\"confirm\",[m]=yo(\"Modal\",En.Modal);return()=>f(D2,A(A({prefixCls:s,rootPrefixCls:c},l.value),{},{close:d,open:r.value,afterClose:u,okText:l.value.okText||(p?m?.value.okText:m?.value.justOkText),direction:l.value.direction||a.value,cancelText:l.value.cancelText||m?.value.cancelText}),null)}});let jy=0;const AH=ne({name:\"ElementsHolder\",inheritAttrs:!1,setup(e,t){let{expose:n}=t;const o=ee([]);return n({addModal:l=>(o.value.push(l),o.value=o.value.slice(),()=>{o.value=o.value.filter(a=>a!==l)})}),()=>o.value.map(l=>l())}});function F2(){const e=ee(null),t=ee([]);pe(t,()=>{t.value.length&&([...t.value].forEach(a=>{a()}),t.value=[])},{immediate:!0});const n=l=>function(i){var s;jy+=1;const c=ee(!0),u=ee(null),d=ee(Be(i)),p=ee({});pe(()=>i,$=>{y(h(h({},Lr($)?$.value:$),p.value))});const m=function(){c.value=!1;for(var $=arguments.length,w=new Array($),C=0;C<$;C++)w[C]=arguments[C];const _=w.some(x=>x&&x.triggerCancel);d.value.onCancel&&_&&d.value.onCancel(()=>{},...w.slice(1))};let g;const v=()=>f(MH,{key:`modal-${jy}`,config:l(d.value),ref:u,open:c.value,destroyAction:m,afterClose:()=>{g?.()}},null);g=(s=e.value)===null||s===void 0?void 0:s.addModal(v),g&&dl.push(g);const y=$=>{d.value=h(h({},d.value),$)};return{destroy:()=>{u.value?m():t.value=[...t.value,m]},update:$=>{p.value=$,u.value?y($):t.value=[...t.value,()=>y($)]}}},o=I(()=>({info:n(k2),success:n(N2),error:n(B2),warning:n(R2),confirm:n(L2)})),r=Symbol(\"modalHolderKey\");return[o.value,()=>f(AH,{key:r,ref:e},null)]}function z2(e){return Zi(R2(e))}qt.useModal=F2;qt.info=function(t){return Zi(k2(t))};qt.success=function(t){return Zi(N2(t))};qt.error=function(t){return Zi(B2(t))};qt.warning=z2;qt.warn=z2;qt.confirm=function(t){return Zi(L2(t))};qt.destroyAll=function(){for(;dl.length;){const t=dl.pop();t&&t()}};qt.install=function(e){return e.component(qt.name,qt),e};const H2=e=>{const{value:t,formatter:n,precision:o,decimalSeparator:r,groupSeparator:l=\"\",prefixCls:a}=e;let i;if(typeof n==\"function\")i=n({value:t});else{const s=String(t),c=s.match(/^(-?)(\\d*)(\\.(\\d+))?$/);if(!c)i=s;else{const u=c[1];let d=c[2]||\"0\",p=c[4]||\"\";d=d.replace(/\\B(?=(\\d{3})+(?!\\d))/g,l),typeof o==\"number\"&&(p=p.padEnd(o,\"0\").slice(0,o>0?o:0)),p&&(p=`${r}${p}`),i=[f(\"span\",{key:\"int\",class:`${a}-content-value-int`},[u,d]),p&&f(\"span\",{key:\"decimal\",class:`${a}-content-value-decimal`},[p])]}}return f(\"span\",{class:`${a}-content-value`},[i])};H2.displayName=\"StatisticNumber\";const DH=e=>{const{componentCls:t,marginXXS:n,padding:o,colorTextDescription:r,statisticTitleFontSize:l,colorTextHeading:a,statisticContentFontSize:i,statisticFontFamily:s}=e;return{[`${t}`]:h(h({},Ue(e)),{[`${t}-title`]:{marginBottom:n,color:r,fontSize:l},[`${t}-skeleton`]:{paddingTop:o},[`${t}-content`]:{color:a,fontSize:i,fontFamily:s,[`${t}-content-value`]:{display:\"inline-block\",direction:\"ltr\"},[`${t}-content-prefix, ${t}-content-suffix`]:{display:\"inline-block\"},[`${t}-content-prefix`]:{marginInlineEnd:n},[`${t}-content-suffix`]:{marginInlineStart:n}}})}},RH=Ge(\"Statistic\",e=>{const{fontSizeHeading3:t,fontSize:n,fontFamily:o}=e,r=Le(e,{statisticTitleFontSize:n,statisticContentFontSize:t,statisticFontFamily:o});return[DH(r)]}),j2=()=>({prefixCls:String,decimalSeparator:String,groupSeparator:String,format:String,value:Fe([Number,String,Object]),valueStyle:{type:Object,default:void 0},valueRender:de(),formatter:Ct(),precision:Number,prefix:$n(),suffix:$n(),title:$n(),loading:ye()}),or=ne({compatConfig:{MODE:3},name:\"AStatistic\",inheritAttrs:!1,props:Ze(j2(),{decimalSeparator:\".\",groupSeparator:\",\",loading:!1}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"statistic\",e),[a,i]=RH(r);return()=>{var s,c,u,d,p,m,g;const{value:v=0,valueStyle:y,valueRender:b}=e,S=r.value,$=(s=e.title)!==null&&s!==void 0?s:(c=n.title)===null||c===void 0?void 0:c.call(n),w=(u=e.prefix)!==null&&u!==void 0?u:(d=n.prefix)===null||d===void 0?void 0:d.call(n),C=(p=e.suffix)!==null&&p!==void 0?p:(m=n.suffix)===null||m===void 0?void 0:m.call(n),_=(g=e.formatter)!==null&&g!==void 0?g:n.formatter;let x=f(H2,A({\"data-for-update\":Date.now()},h(h({},e),{prefixCls:S,value:v,formatter:_})),null);return b&&(x=b(x)),a(f(\"div\",A(A({},o),{},{class:[S,{[`${S}-rtl`]:l.value===\"rtl\"},o.class,i.value]}),[$&&f(\"div\",{class:`${S}-title`},[$]),f(Sn,{paragraph:!1,loading:e.loading},{default:()=>[f(\"div\",{style:y,class:`${S}-content`},[w&&f(\"span\",{class:`${S}-content-prefix`},[w]),x,C&&f(\"span\",{class:`${S}-content-suffix`},[C])])]})]))}}}),kH=[[\"Y\",1e3*60*60*24*365],[\"M\",1e3*60*60*24*30],[\"D\",1e3*60*60*24],[\"H\",1e3*60*60],[\"m\",1e3*60],[\"s\",1e3],[\"S\",1]];function NH(e,t){let n=e;const o=/\\[[^\\]]*]/g,r=(t.match(o)||[]).map(s=>s.slice(1,-1)),l=t.replace(o,\"[]\"),a=kH.reduce((s,c)=>{let[u,d]=c;if(s.includes(u)){const p=Math.floor(n/d);return n-=p*d,s.replace(new RegExp(`${u}+`,\"g\"),m=>{const g=m.length;return p.toString().padStart(g,\"0\")})}return s},l);let i=0;return a.replace(o,()=>{const s=r[i];return i+=1,s})}function BH(e,t){const{format:n=\"\"}=t,o=new Date(e).getTime(),r=Date.now(),l=Math.max(o-r,0);return NH(l,n)}const LH=1e3/30;function Af(e){return new Date(e).getTime()}const FH=()=>h(h({},j2()),{value:Fe([Number,String,Object]),format:String,onFinish:Function,onChange:Function}),zH=ne({compatConfig:{MODE:3},name:\"AStatisticCountdown\",props:Ze(FH(),{format:\"HH:mm:ss\"}),setup(e,t){let{emit:n,slots:o}=t;const r=J(),l=J(),a=()=>{const{value:d}=e;Af(d)>=Date.now()?i():s()},i=()=>{if(r.value)return;const d=Af(e.value);r.value=setInterval(()=>{l.value.$forceUpdate(),d>Date.now()&&n(\"change\",d-Date.now()),a()},LH)},s=()=>{const{value:d}=e;r.value&&(clearInterval(r.value),r.value=void 0,Af(d)<Date.now()&&n(\"finish\"))},c=d=>{let{value:p,config:m}=d;const{format:g}=e;return BH(p,h(h({},m),{format:g}))},u=d=>d;return Ne(()=>{a()}),Hn(()=>{a()}),et(()=>{s()}),()=>{const d=e.value;return f(or,A({ref:l},h(h({},ot(e,[\"onFinish\",\"onChange\"])),{value:d,valueRender:u,formatter:c})),o)}}});or.Countdown=zH;or.install=function(e){return e.component(or.name,or),e.component(or.Countdown.name,or.Countdown),e};const HH=or.Countdown;var jH=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const WH={border:0,background:\"transparent\",padding:0,lineHeight:\"inherit\",display:\"inline-block\"},yu=ne({compatConfig:{MODE:3},name:\"TransButton\",inheritAttrs:!1,props:{noStyle:{type:Boolean,default:void 0},onClick:Function,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0}},setup(e,t){let{slots:n,emit:o,attrs:r,expose:l}=t;const a=ee(),i=p=>{const{keyCode:m}=p;m===we.ENTER&&p.preventDefault()},s=p=>{const{keyCode:m}=p;m===we.ENTER&&o(\"click\",p)},c=p=>{o(\"click\",p)},u=()=>{a.value&&a.value.focus()},d=()=>{a.value&&a.value.blur()};return Ne(()=>{e.autofocus&&u()}),l({focus:u,blur:d}),()=>{var p;const{noStyle:m,disabled:g}=e,v=jH(e,[\"noStyle\",\"disabled\"]);let y={};return m||(y=h({},WH)),g&&(y.pointerEvents=\"none\"),f(\"div\",A(A(A({role:\"button\",tabindex:0,ref:a},v),r),{},{onClick:c,onKeydown:i,onKeyup:s,style:h(h({},y),r.style||{})}),[(p=n.default)===null||p===void 0?void 0:p.call(n)])}}}),VH={small:8,middle:16,large:24},KH=()=>({prefixCls:String,size:{type:[String,Number,Array]},direction:W.oneOf(hn(\"horizontal\",\"vertical\")).def(\"horizontal\"),align:W.oneOf(hn(\"start\",\"end\",\"center\",\"baseline\")),wrap:ye()});function GH(e){return typeof e==\"string\"?VH[e]:e||0}const ia=ne({compatConfig:{MODE:3},name:\"ASpace\",inheritAttrs:!1,props:KH(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,space:l,direction:a}=Pe(\"space\",e),[i,s]=$1(r),c=sw(),u=I(()=>{var b,S,$;return($=(b=e.size)!==null&&b!==void 0?b:(S=l?.value)===null||S===void 0?void 0:S.size)!==null&&$!==void 0?$:\"small\"}),d=J(),p=J();pe(u,()=>{[d.value,p.value]=(Array.isArray(u.value)?u.value:[u.value,u.value]).map(b=>GH(b))},{immediate:!0});const m=I(()=>e.align===void 0&&e.direction===\"horizontal\"?\"center\":e.align),g=I(()=>le(r.value,s.value,`${r.value}-${e.direction}`,{[`${r.value}-rtl`]:a.value===\"rtl\",[`${r.value}-align-${m.value}`]:m.value})),v=I(()=>a.value===\"rtl\"?\"marginLeft\":\"marginRight\"),y=I(()=>{const b={};return c.value&&(b.columnGap=`${d.value}px`,b.rowGap=`${p.value}px`),h(h({},b),e.wrap&&{flexWrap:\"wrap\",marginBottom:`${-p.value}px`})});return()=>{var b,S;const{wrap:$,direction:w=\"horizontal\"}=e,C=(b=n.default)===null||b===void 0?void 0:b.call(n),_=kt(C),x=_.length;if(x===0)return null;const P=(S=n.split)===null||S===void 0?void 0:S.call(n),O=`${r.value}-item`,M=d.value,E=x-1;return f(\"div\",A(A({},o),{},{class:[g.value,o.class],style:[y.value,o.style]}),[_.map((R,D)=>{let z=C.indexOf(R);z===-1&&(z=`$$space-${D}`);let T={};return c.value||(w===\"vertical\"?D<E&&(T={marginBottom:`${M/(P?2:1)}px`}):T=h(h({},D<E&&{[v.value]:`${M/(P?2:1)}px`}),$&&{paddingBottom:`${p.value}px`})),i(f(Ve,{key:z},[f(\"div\",{class:O,style:T},[R]),D<E&&P&&f(\"span\",{class:`${O}-split`,style:T},[P])]))})])}}});ia.Compact=Xc;ia.install=function(e){return e.component(ia.name,ia),e.component(Xc.name,Xc),e};const XH=e=>{const{componentCls:t,antCls:n}=e;return{[t]:h(h({},Ue(e)),{position:\"relative\",padding:`${e.pageHeaderPaddingVertical}px ${e.pageHeaderPadding}px`,backgroundColor:e.colorBgContainer,[`&${t}-ghost`]:{backgroundColor:e.pageHeaderGhostBg},\"&.has-footer\":{paddingBottom:0},[`${t}-back`]:{marginRight:e.marginMD,fontSize:e.fontSizeLG,lineHeight:1,\"&-button\":h(h({},zu(e)),{color:e.pageHeaderBackColor,cursor:\"pointer\"})},[`${n}-divider-vertical`]:{height:\"14px\",margin:`0 ${e.marginSM}`,verticalAlign:\"middle\"},[`${n}-breadcrumb + &-heading`]:{marginTop:e.marginXS},[`${t}-heading`]:{display:\"flex\",justifyContent:\"space-between\",\"&-left\":{display:\"flex\",alignItems:\"center\",margin:`${e.marginXS/2}px 0`,overflow:\"hidden\"},\"&-title\":h({marginRight:e.marginSM,marginBottom:0,color:e.colorTextHeading,fontWeight:600,fontSize:e.pageHeaderHeadingTitle,lineHeight:`${e.controlHeight}px`},Gt),[`${n}-avatar`]:{marginRight:e.marginSM},\"&-sub-title\":h({marginRight:e.marginSM,color:e.colorTextDescription,fontSize:e.pageHeaderHeadingSubTitle,lineHeight:e.lineHeight},Gt),\"&-extra\":{margin:`${e.marginXS/2}px 0`,whiteSpace:\"nowrap\",\"> *\":{marginLeft:e.marginSM,whiteSpace:\"unset\"},\"> *:first-child\":{marginLeft:0}}},[`${t}-content`]:{paddingTop:e.pageHeaderContentPaddingVertical},[`${t}-footer`]:{marginTop:e.marginMD,[`${n}-tabs`]:{[`> ${n}-tabs-nav`]:{margin:0,\"&::before\":{border:\"none\"}},[`${n}-tabs-tab`]:{paddingTop:e.paddingXS,paddingBottom:e.paddingXS,fontSize:e.pageHeaderTabFontSize}}},[`${t}-compact ${t}-heading`]:{flexWrap:\"wrap\"},[`&${e.componentCls}-rtl`]:{direction:\"rtl\"}})}},UH=Ge(\"PageHeader\",e=>{const t=Le(e,{pageHeaderPadding:e.paddingLG,pageHeaderPaddingVertical:e.paddingMD,pageHeaderPaddingBreadcrumb:e.paddingSM,pageHeaderContentPaddingVertical:e.paddingSM,pageHeaderBackColor:e.colorTextBase,pageHeaderGhostBg:\"transparent\",pageHeaderHeadingTitle:e.fontSizeHeading4,pageHeaderHeadingSubTitle:e.fontSize,pageHeaderTabFontSize:e.fontSizeLG});return[XH(t)]}),YH=()=>({backIcon:$n(),prefixCls:String,title:$n(),subTitle:$n(),breadcrumb:W.object,tags:$n(),footer:$n(),extra:$n(),avatar:De(),ghost:{type:Boolean,default:void 0},onBack:Function}),qH=ne({compatConfig:{MODE:3},name:\"APageHeader\",inheritAttrs:!1,props:YH(),slots:Object,setup(e,t){let{emit:n,slots:o,attrs:r}=t;const{prefixCls:l,direction:a,pageHeader:i}=Pe(\"page-header\",e),[s,c]=UH(l),u=ee(!1),d=A2(),p=w=>{let{width:C}=w;d.value||(u.value=C<768)},m=I(()=>{var w,C,_;return(_=(w=e.ghost)!==null&&w!==void 0?w:(C=i?.value)===null||C===void 0?void 0:C.ghost)!==null&&_!==void 0?_:!0}),g=()=>{var w,C,_;return(_=(w=e.backIcon)!==null&&w!==void 0?w:(C=o.backIcon)===null||C===void 0?void 0:C.call(o))!==null&&_!==void 0?_:a.value===\"rtl\"?f(Di,null,null):f(VI,null,null)},v=w=>!w||!e.onBack?null:f(_l,{componentName:\"PageHeader\",children:C=>{let{back:_}=C;return f(\"div\",{class:`${l.value}-back`},[f(yu,{onClick:x=>{n(\"back\",x)},class:`${l.value}-back-button`,\"aria-label\":_},{default:()=>[w]})])}},null),y=()=>{var w;return e.breadcrumb?f(vl,e.breadcrumb,null):(w=o.breadcrumb)===null||w===void 0?void 0:w.call(o)},b=()=>{var w,C,_,x,P,O,M,E,R;const{avatar:D}=e,z=(w=e.title)!==null&&w!==void 0?w:(C=o.title)===null||C===void 0?void 0:C.call(o),T=(_=e.subTitle)!==null&&_!==void 0?_:(x=o.subTitle)===null||x===void 0?void 0:x.call(o),k=(P=e.tags)!==null&&P!==void 0?P:(O=o.tags)===null||O===void 0?void 0:O.call(o),B=(M=e.extra)!==null&&M!==void 0?M:(E=o.extra)===null||E===void 0?void 0:E.call(o),L=`${l.value}-heading`,N=z||T||k||B;if(!N)return null;const F=g(),j=v(F);return f(\"div\",{class:L},[(j||D||N)&&f(\"div\",{class:`${L}-left`},[j,D?f(ml,D,null):(R=o.avatar)===null||R===void 0?void 0:R.call(o),z&&f(\"span\",{class:`${L}-title`,title:typeof z==\"string\"?z:void 0},[z]),T&&f(\"span\",{class:`${L}-sub-title`,title:typeof T==\"string\"?T:void 0},[T]),k&&f(\"span\",{class:`${L}-tags`},[k])]),B&&f(\"span\",{class:`${L}-extra`},[f(ia,null,{default:()=>[B]})])])},S=()=>{var w,C;const _=(w=e.footer)!==null&&w!==void 0?w:kt((C=o.footer)===null||C===void 0?void 0:C.call(o));return tE(_)?null:f(\"div\",{class:`${l.value}-footer`},[_])},$=w=>f(\"div\",{class:`${l.value}-content`},[w]);return()=>{var w,C;const _=((w=e.breadcrumb)===null||w===void 0?void 0:w.routes)||o.breadcrumb,x=e.footer||o.footer,P=$t((C=o.default)===null||C===void 0?void 0:C.call(o)),O=le(l.value,{\"has-breadcrumb\":_,\"has-footer\":x,[`${l.value}-ghost`]:m.value,[`${l.value}-rtl`]:a.value===\"rtl\",[`${l.value}-compact`]:u.value},r.class,c.value);return s(f(go,{onResize:p},{default:()=>[f(\"div\",A(A({},r),{},{class:O}),[y(),b(),P.length?$(P):null,S()])]}))}}}),ZH=Dt(qH),QH=e=>{const{componentCls:t,iconCls:n,zIndexPopup:o,colorText:r,colorWarning:l,marginXS:a,fontSize:i,fontWeightStrong:s,lineHeight:c}=e;return{[t]:{zIndex:o,[`${t}-inner-content`]:{color:r},[`${t}-message`]:{position:\"relative\",marginBottom:a,color:r,fontSize:i,display:\"flex\",flexWrap:\"nowrap\",alignItems:\"start\",[`> ${t}-message-icon ${n}`]:{color:l,fontSize:i,flex:\"none\",lineHeight:1,paddingTop:(Math.round(i*c)-i)/2},\"&-title\":{flex:\"auto\",marginInlineStart:a},\"&-title-only\":{fontWeight:s}},[`${t}-description`]:{position:\"relative\",marginInlineStart:i+a,marginBottom:a,color:r,fontSize:i},[`${t}-buttons`]:{textAlign:\"end\",button:{marginInlineStart:a}}}}},JH=Ge(\"Popconfirm\",e=>QH(e),e=>{const{zIndexPopupBase:t}=e;return{zIndexPopup:t+60}});var e9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const t9=()=>h(h({},Mv()),{prefixCls:String,content:Ct(),title:Ct(),description:Ct(),okType:ke(\"primary\"),disabled:{type:Boolean,default:!1},okText:Ct(),cancelText:Ct(),icon:Ct(),okButtonProps:De(),cancelButtonProps:De(),showCancel:{type:Boolean,default:!0},onConfirm:Function,onCancel:Function}),n9=ne({compatConfig:{MODE:3},name:\"APopconfirm\",inheritAttrs:!1,props:Ze(t9(),h(h({},T1()),{trigger:\"click\",placement:\"top\",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0,okType:\"primary\",disabled:!1})),slots:Object,setup(e,t){let{slots:n,emit:o,expose:r,attrs:l}=t;const a=J();eo(e.visible===void 0),r({getPopupDomNode:()=>{var _,x;return(x=(_=a.value)===null||_===void 0?void 0:_.getPopupDomNode)===null||x===void 0?void 0:x.call(_)}});const[i,s]=Mt(!1,{value:We(e,\"open\")}),c=(_,x)=>{e.open===void 0&&s(_),o(\"update:open\",_),o(\"openChange\",_,x)},u=_=>{c(!1,_)},d=_=>{var x;return(x=e.onConfirm)===null||x===void 0?void 0:x.call(e,_)},p=_=>{var x;c(!1,_),(x=e.onCancel)===null||x===void 0||x.call(e,_)},m=_=>{_.keyCode===we.ESC&&i&&c(!1,_)},g=_=>{const{disabled:x}=e;x||c(_)},{prefixCls:v,getPrefixCls:y}=Pe(\"popconfirm\",e),b=I(()=>y()),S=I(()=>y(\"btn\")),[$]=JH(v),[w]=yo(\"Popconfirm\",En.Popconfirm),C=()=>{var _,x,P,O,M;const{okButtonProps:E,cancelButtonProps:R,title:D=(_=n.title)===null||_===void 0?void 0:_.call(n),description:z=(x=n.description)===null||x===void 0?void 0:x.call(n),cancelText:T=(P=n.cancel)===null||P===void 0?void 0:P.call(n),okText:k=(O=n.okText)===null||O===void 0?void 0:O.call(n),okType:B,icon:L=((M=n.icon)===null||M===void 0?void 0:M.call(n))||f(vr,null,null),showCancel:N=!0}=e,{cancelButton:F,okButton:j}=n,H=h({onClick:p,size:\"small\"},R),K=h(h(h({onClick:d},Qc(B)),{size:\"small\"}),E);return f(\"div\",{class:`${v.value}-inner-content`},[f(\"div\",{class:`${v.value}-message`},[L&&f(\"span\",{class:`${v.value}-message-icon`},[L]),f(\"div\",{class:[`${v.value}-message-title`,{[`${v.value}-message-title-only`]:!!z}]},[D])]),z&&f(\"div\",{class:`${v.value}-description`},[z]),f(\"div\",{class:`${v.value}-buttons`},[N?F?F(H):f(_t,H,{default:()=>[T||w.value.cancelText]}):null,j?j(K):f(rm,{buttonProps:h(h({size:\"small\"},Qc(B)),E),actionFn:d,close:u,prefixCls:S.value,quitOnNullishReturnValue:!0,emitEvent:!0},{default:()=>[k||w.value.okText]})])])};return()=>{var _;const{placement:x,overlayClassName:P,trigger:O=\"click\"}=e,M=e9(e,[\"placement\",\"overlayClassName\",\"trigger\"]),E=ot(M,[\"title\",\"content\",\"cancelText\",\"okText\",\"onUpdate:open\",\"onConfirm\",\"onCancel\",\"prefixCls\"]),R=le(v.value,P);return $(f(kv,A(A(A({},E),l),{},{trigger:O,placement:x,onOpenChange:g,open:i.value,overlayClassName:R,transitionName:_n(b.value,\"zoom-big\",e.transitionName),ref:a,\"data-popover-inject\":!0}),{default:()=>[X3(((_=n.default)===null||_===void 0?void 0:_.call(n))||[],{onKeydown:D=>{m(D)}},!1)],content:C}))}}}),o9=Dt(n9),r9=[\"normal\",\"exception\",\"active\",\"success\"],wd=()=>({prefixCls:String,type:ke(),percent:Number,format:de(),status:ke(),showInfo:ye(),strokeWidth:Number,strokeLinecap:ke(),strokeColor:Ct(),trailColor:String,width:Number,success:De(),gapDegree:Number,gapPosition:ke(),size:Fe([String,Number,Array]),steps:Number,successPercent:Number,title:String,progressStatus:ke()});function hl(e){return!e||e<0?0:e>100?100:e}function Su(e){let{success:t,successPercent:n}=e,o=n;return t&&\"progress\"in t&&(Ot(!1,\"Progress\",\"`success.progress` is deprecated. Please use `success.percent` instead.\"),o=t.progress),t&&\"percent\"in t&&(o=t.percent),o}function l9(e){let{percent:t,success:n,successPercent:o}=e;const r=hl(Su({success:n,successPercent:o}));return[r,hl(hl(t)-r)]}function a9(e){let{success:t={},strokeColor:n}=e;const{strokeColor:o}=t;return[o||Yf.green,n||null]}const _d=(e,t,n)=>{var o,r,l,a;let i=-1,s=-1;if(t===\"step\"){const c=n.steps,u=n.strokeWidth;typeof e==\"string\"||typeof e>\"u\"?(i=e===\"small\"?2:14,s=u??8):typeof e==\"number\"?[i,s]=[e,e]:[i=14,s=8]=e,i*=c}else if(t===\"line\"){const c=n?.strokeWidth;typeof e==\"string\"||typeof e>\"u\"?s=c||(e===\"small\"?6:8):typeof e==\"number\"?[i,s]=[e,e]:[i=-1,s=8]=e}else(t===\"circle\"||t===\"dashboard\")&&(typeof e==\"string\"||typeof e>\"u\"?[i,s]=e===\"small\"?[60,60]:[120,120]:typeof e==\"number\"?[i,s]=[e,e]:(i=(r=(o=e[0])!==null&&o!==void 0?o:e[1])!==null&&r!==void 0?r:120,s=(a=(l=e[0])!==null&&l!==void 0?l:e[1])!==null&&a!==void 0?a:120));return{width:i,height:s}};var i9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const s9=()=>h(h({},wd()),{strokeColor:Ct(),direction:ke()}),c9=e=>{let t=[];return Object.keys(e).forEach(n=>{const o=parseFloat(n.replace(/%/g,\"\"));isNaN(o)||t.push({key:o,value:e[n]})}),t=t.sort((n,o)=>n.key-o.key),t.map(n=>{let{key:o,value:r}=n;return`${r} ${o}%`}).join(\", \")},u9=(e,t)=>{const{from:n=Yf.blue,to:o=Yf.blue,direction:r=t===\"rtl\"?\"to left\":\"to right\"}=e,l=i9(e,[\"from\",\"to\",\"direction\"]);if(Object.keys(l).length!==0){const a=c9(l);return{backgroundImage:`linear-gradient(${r}, ${a})`}}return{backgroundImage:`linear-gradient(${r}, ${n}, ${o})`}},d9=ne({compatConfig:{MODE:3},name:\"ProgressLine\",inheritAttrs:!1,props:s9(),setup(e,t){let{slots:n,attrs:o}=t;const r=I(()=>{const{strokeColor:m,direction:g}=e;return m&&typeof m!=\"string\"?u9(m,g):{backgroundColor:m}}),l=I(()=>e.strokeLinecap===\"square\"||e.strokeLinecap===\"butt\"?0:void 0),a=I(()=>e.trailColor?{backgroundColor:e.trailColor}:void 0),i=I(()=>{var m;return(m=e.size)!==null&&m!==void 0?m:[-1,e.strokeWidth||(e.size===\"small\"?6:8)]}),s=I(()=>_d(i.value,\"line\",{strokeWidth:e.strokeWidth})),c=I(()=>{const{percent:m}=e;return h({width:`${hl(m)}%`,height:`${s.value.height}px`,borderRadius:l.value},r.value)}),u=I(()=>Su(e)),d=I(()=>{const{success:m}=e;return{width:`${hl(u.value)}%`,height:`${s.value.height}px`,borderRadius:l.value,backgroundColor:m?.strokeColor}}),p={width:s.value.width<0?\"100%\":s.value.width,height:`${s.value.height}px`};return()=>{var m;return f(Ve,null,[f(\"div\",A(A({},o),{},{class:[`${e.prefixCls}-outer`,o.class],style:[o.style,p]}),[f(\"div\",{class:`${e.prefixCls}-inner`,style:a.value},[f(\"div\",{class:`${e.prefixCls}-bg`,style:c.value},null),u.value!==void 0?f(\"div\",{class:`${e.prefixCls}-success-bg`,style:d.value},null):null])]),(m=n.default)===null||m===void 0?void 0:m.call(n)])}}}),f9={percent:0,prefixCls:\"vc-progress\",strokeColor:\"#2db7f5\",strokeLinecap:\"round\",strokeWidth:1,trailColor:\"#D9D9D9\",trailWidth:1},p9=e=>{const t=J(null);return Hn(()=>{const n=Date.now();let o=!1;e.value.forEach(r=>{const l=r?.$el||r;if(!l)return;o=!0;const a=l.style;a.transitionDuration=\".3s, .3s, .3s, .06s\",t.value&&n-t.value<100&&(a.transitionDuration=\"0s, 0s\")}),o&&(t.value=Date.now())}),e},m9={gapDegree:Number,gapPosition:{type:String},percent:{type:[Array,Number]},prefixCls:String,strokeColor:{type:[Object,String,Array]},strokeLinecap:{type:String},strokeWidth:Number,trailColor:String,trailWidth:Number,transition:String};var v9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};let Wy=0;function Vy(e){return+e.replace(\"%\",\"\")}function Ky(e){return Array.isArray(e)?e:[e]}function Gy(e,t,n,o){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,l=arguments.length>5?arguments[5]:void 0;const a=50-o/2;let i=0,s=-a,c=0,u=-2*a;switch(l){case\"left\":i=-a,s=0,c=2*a,u=0;break;case\"right\":i=a,s=0,c=-2*a,u=0;break;case\"bottom\":s=a,u=2*a;break}const d=`M 50,50 m ${i},${s}\n   a ${a},${a} 0 1 1 ${c},${-u}\n   a ${a},${a} 0 1 1 ${-c},${u}`,p=Math.PI*2*a,m={stroke:n,strokeDasharray:`${t/100*(p-r)}px ${p}px`,strokeDashoffset:`-${r/2+e/100*(p-r)}px`,transition:\"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s\"};return{pathString:d,pathStyle:m}}const g9=ne({compatConfig:{MODE:3},name:\"VCCircle\",props:Ze(m9,f9),setup(e){Wy+=1;const t=J(Wy),n=I(()=>Ky(e.percent)),o=I(()=>Ky(e.strokeColor)),[r,l]=vg();p9(l);const a=()=>{const{prefixCls:i,strokeWidth:s,strokeLinecap:c,gapDegree:u,gapPosition:d}=e;let p=0;return n.value.map((m,g)=>{const v=o.value[g]||o.value[o.value.length-1],y=Object.prototype.toString.call(v)===\"[object Object]\"?`url(#${i}-gradient-${t.value})`:\"\",{pathString:b,pathStyle:S}=Gy(p,m,v,s,u,d);p+=m;const $={key:g,d:b,stroke:y,\"stroke-linecap\":c,\"stroke-width\":s,opacity:m===0?0:1,\"fill-opacity\":\"0\",class:`${i}-circle-path`,style:S};return f(\"path\",A({ref:r(g)},$),null)})};return()=>{const{prefixCls:i,strokeWidth:s,trailWidth:c,gapDegree:u,gapPosition:d,trailColor:p,strokeLinecap:m,strokeColor:g}=e,v=v9(e,[\"prefixCls\",\"strokeWidth\",\"trailWidth\",\"gapDegree\",\"gapPosition\",\"trailColor\",\"strokeLinecap\",\"strokeColor\"]),{pathString:y,pathStyle:b}=Gy(0,100,p,s,u,d);delete v.percent;const S=o.value.find(w=>Object.prototype.toString.call(w)===\"[object Object]\"),$={d:y,stroke:p,\"stroke-linecap\":m,\"stroke-width\":c||s,\"fill-opacity\":\"0\",class:`${i}-circle-trail`,style:b};return f(\"svg\",A({class:`${i}-circle`,viewBox:\"0 0 100 100\"},v),[S&&f(\"defs\",null,[f(\"linearGradient\",{id:`${i}-gradient-${t.value}`,x1:\"100%\",y1:\"0%\",x2:\"0%\",y2:\"0%\"},[Object.keys(S).sort((w,C)=>Vy(w)-Vy(C)).map((w,C)=>f(\"stop\",{key:C,offset:w,\"stop-color\":S[w]},null))])]),f(\"path\",$,null),a().reverse()])}}}),h9=()=>h(h({},wd()),{strokeColor:Ct()}),b9=3,y9=e=>b9/e*100,S9=ne({compatConfig:{MODE:3},name:\"ProgressCircle\",inheritAttrs:!1,props:Ze(h9(),{trailColor:null}),setup(e,t){let{slots:n,attrs:o}=t;const r=I(()=>{var v;return(v=e.width)!==null&&v!==void 0?v:120}),l=I(()=>{var v;return(v=e.size)!==null&&v!==void 0?v:[r.value,r.value]}),a=I(()=>_d(l.value,\"circle\")),i=I(()=>{if(e.gapDegree||e.gapDegree===0)return e.gapDegree;if(e.type===\"dashboard\")return 75}),s=I(()=>({width:`${a.value.width}px`,height:`${a.value.height}px`,fontSize:`${a.value.width*.15+6}px`})),c=I(()=>{var v;return(v=e.strokeWidth)!==null&&v!==void 0?v:Math.max(y9(a.value.width),6)}),u=I(()=>e.gapPosition||e.type===\"dashboard\"&&\"bottom\"||void 0),d=I(()=>l9(e)),p=I(()=>Object.prototype.toString.call(e.strokeColor)===\"[object Object]\"),m=I(()=>a9({success:e.success,strokeColor:e.strokeColor})),g=I(()=>({[`${e.prefixCls}-inner`]:!0,[`${e.prefixCls}-circle-gradient`]:p.value}));return()=>{var v;const y=f(g9,{percent:d.value,strokeWidth:c.value,trailWidth:c.value,strokeColor:m.value,strokeLinecap:e.strokeLinecap,trailColor:e.trailColor,prefixCls:e.prefixCls,gapDegree:i.value,gapPosition:u.value},null);return f(\"div\",A(A({},o),{},{class:[g.value,o.class],style:[o.style,s.value]}),[a.value.width<=20?f(Ln,null,{default:()=>[f(\"span\",null,[y])],title:n.default}):f(Ve,null,[y,(v=n.default)===null||v===void 0?void 0:v.call(n)])])}}}),$9=()=>h(h({},wd()),{steps:Number,strokeColor:Fe(),trailColor:String}),C9=ne({compatConfig:{MODE:3},name:\"Steps\",props:$9(),setup(e,t){let{slots:n}=t;const o=I(()=>Math.round(e.steps*((e.percent||0)/100))),r=I(()=>{var i;return(i=e.size)!==null&&i!==void 0?i:[e.size===\"small\"?2:14,e.strokeWidth||8]}),l=I(()=>_d(r.value,\"step\",{steps:e.steps,strokeWidth:e.strokeWidth||8})),a=I(()=>{const{steps:i,strokeColor:s,trailColor:c,prefixCls:u}=e,d=[];for(let p=0;p<i;p+=1){const m=Array.isArray(s)?s[p]:s,g={[`${u}-steps-item`]:!0,[`${u}-steps-item-active`]:p<=o.value-1};d.push(f(\"div\",{key:p,class:g,style:{backgroundColor:p<=o.value-1?m:c,width:`${l.value.width/i}px`,height:`${l.value.height}px`}},null))}return d});return()=>{var i;return f(\"div\",{class:`${e.prefixCls}-steps-outer`},[a.value,(i=n.default)===null||i===void 0?void 0:i.call(n)])}}}),x9=new lt(\"antProgressActive\",{\"0%\":{transform:\"translateX(-100%) scaleX(0)\",opacity:.1},\"20%\":{transform:\"translateX(-100%) scaleX(0)\",opacity:.5},to:{transform:\"translateX(0) scaleX(1)\",opacity:0}}),w9=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:h(h({},Ue(e)),{display:\"inline-block\",\"&-rtl\":{direction:\"rtl\"},\"&-line\":{position:\"relative\",width:\"100%\",fontSize:e.fontSize,marginInlineEnd:e.marginXS,marginBottom:e.marginXS},[`${t}-outer`]:{display:\"inline-block\",width:\"100%\"},[`&${t}-show-info`]:{[`${t}-outer`]:{marginInlineEnd:`calc(-2em - ${e.marginXS}px)`,paddingInlineEnd:`calc(2em + ${e.paddingXS}px)`}},[`${t}-inner`]:{position:\"relative\",display:\"inline-block\",width:\"100%\",overflow:\"hidden\",verticalAlign:\"middle\",backgroundColor:e.progressRemainingColor,borderRadius:e.progressLineRadius},[`${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorInfo}},[`${t}-success-bg, ${t}-bg`]:{position:\"relative\",backgroundColor:e.colorInfo,borderRadius:e.progressLineRadius,transition:`all ${e.motionDurationSlow} ${e.motionEaseInOutCirc}`},[`${t}-success-bg`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,backgroundColor:e.colorSuccess},[`${t}-text`]:{display:\"inline-block\",width:\"2em\",marginInlineStart:e.marginXS,color:e.progressInfoTextColor,lineHeight:1,whiteSpace:\"nowrap\",textAlign:\"start\",verticalAlign:\"middle\",wordBreak:\"normal\",[n]:{fontSize:e.fontSize}},[`&${t}-status-active`]:{[`${t}-bg::before`]:{position:\"absolute\",inset:0,backgroundColor:e.colorBgContainer,borderRadius:e.progressLineRadius,opacity:0,animationName:x9,animationDuration:e.progressActiveMotionDuration,animationTimingFunction:e.motionEaseOutQuint,animationIterationCount:\"infinite\",content:'\"\"'}},[`&${t}-status-exception`]:{[`${t}-bg`]:{backgroundColor:e.colorError},[`${t}-text`]:{color:e.colorError}},[`&${t}-status-exception ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorError}},[`&${t}-status-success`]:{[`${t}-bg`]:{backgroundColor:e.colorSuccess},[`${t}-text`]:{color:e.colorSuccess}},[`&${t}-status-success ${t}-inner:not(${t}-circle-gradient)`]:{[`${t}-circle-path`]:{stroke:e.colorSuccess}}})}},_9=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:{[`${t}-circle-trail`]:{stroke:e.progressRemainingColor},[`&${t}-circle ${t}-inner`]:{position:\"relative\",lineHeight:1,backgroundColor:\"transparent\"},[`&${t}-circle ${t}-text`]:{position:\"absolute\",insetBlockStart:\"50%\",insetInlineStart:0,width:\"100%\",margin:0,padding:0,color:e.colorText,lineHeight:1,whiteSpace:\"normal\",textAlign:\"center\",transform:\"translateY(-50%)\",[n]:{fontSize:`${e.fontSize/e.fontSizeSM}em`}},[`${t}-circle&-status-exception`]:{[`${t}-text`]:{color:e.colorError}},[`${t}-circle&-status-success`]:{[`${t}-text`]:{color:e.colorSuccess}}},[`${t}-inline-circle`]:{lineHeight:1,[`${t}-inner`]:{verticalAlign:\"bottom\"}}}},I9=e=>{const{componentCls:t}=e;return{[t]:{[`${t}-steps`]:{display:\"inline-block\",\"&-outer\":{display:\"flex\",flexDirection:\"row\",alignItems:\"center\"},\"&-item\":{flexShrink:0,minWidth:e.progressStepMinWidth,marginInlineEnd:e.progressStepMarginInlineEnd,backgroundColor:e.progressRemainingColor,transition:`all ${e.motionDurationSlow}`,\"&-active\":{backgroundColor:e.colorInfo}}}}}},P9=e=>{const{componentCls:t,iconCls:n}=e;return{[t]:{[`${t}-small&-line, ${t}-small&-line ${t}-text ${n}`]:{fontSize:e.fontSizeSM}}}},T9=Ge(\"Progress\",e=>{const t=e.marginXXS/2,n=Le(e,{progressLineRadius:100,progressInfoTextColor:e.colorText,progressDefaultColor:e.colorInfo,progressRemainingColor:e.colorFillSecondary,progressStepMarginInlineEnd:t,progressStepMinWidth:t,progressActiveMotionDuration:\"2.4s\"});return[w9(n),_9(n),I9(n),P9(n)]});var O9=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const E9=ne({compatConfig:{MODE:3},name:\"AProgress\",inheritAttrs:!1,props:Ze(wd(),{type:\"line\",percent:0,showInfo:!0,trailColor:null,size:\"default\",strokeLinecap:\"round\"}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"progress\",e),[a,i]=T9(r),s=I(()=>Array.isArray(e.strokeColor)?e.strokeColor[0]:e.strokeColor),c=I(()=>{const{percent:g=0}=e,v=Su(e);return parseInt(v!==void 0?v.toString():g.toString(),10)}),u=I(()=>{const{status:g}=e;return!r9.includes(g)&&c.value>=100?\"success\":g||\"normal\"}),d=I(()=>{const{type:g,showInfo:v,size:y}=e,b=r.value;return{[b]:!0,[`${b}-inline-circle`]:g===\"circle\"&&_d(y,\"circle\").width<=20,[`${b}-${g===\"dashboard\"&&\"circle\"||g}`]:!0,[`${b}-status-${u.value}`]:!0,[`${b}-show-info`]:v,[`${b}-${y}`]:y,[`${b}-rtl`]:l.value===\"rtl\",[i.value]:!0}}),p=I(()=>typeof e.strokeColor==\"string\"||Array.isArray(e.strokeColor)?e.strokeColor:void 0),m=()=>{const{showInfo:g,format:v,type:y,percent:b,title:S}=e,$=Su(e);if(!g)return null;let w;const C=v||n?.format||(x=>`${x}%`),_=y===\"line\";return v||n?.format||u.value!==\"exception\"&&u.value!==\"success\"?w=C(hl(b),hl($)):u.value===\"exception\"?w=_?f(jn,null,null):f(Wn,null,null):u.value===\"success\"&&(w=_?f(gr,null,null):f(_u,null,null)),f(\"span\",{class:`${r.value}-text`,title:S===void 0&&typeof w==\"string\"?w:void 0},[w])};return()=>{const{type:g,steps:v,title:y}=e,{class:b}=o,S=O9(o,[\"class\"]),$=m();let w;return g===\"line\"?w=v?f(C9,A(A({},e),{},{strokeColor:p.value,prefixCls:r.value,steps:v}),{default:()=>[$]}):f(d9,A(A({},e),{},{strokeColor:s.value,prefixCls:r.value,direction:l.value}),{default:()=>[$]}):(g===\"circle\"||g===\"dashboard\")&&(w=f(S9,A(A({},e),{},{prefixCls:r.value,strokeColor:s.value,progressStatus:u.value}),{default:()=>[$]})),a(f(\"div\",A(A({role:\"progressbar\"},S),{},{class:[d.value,b],title:y}),[w]))}}}),Hg=Dt(E9);function M9(e){let t=e.scrollX;const n=\"scrollLeft\";if(typeof t!=\"number\"){const o=e.document;t=o.documentElement[n],typeof t!=\"number\"&&(t=o.body[n])}return t}function A9(e){let t,n;const o=e.ownerDocument,{body:r}=o,l=o&&o.documentElement,a=e.getBoundingClientRect();return t=a.left,n=a.top,t-=l.clientLeft||r.clientLeft||0,n-=l.clientTop||r.clientTop||0,{left:t,top:n}}function D9(e){const t=A9(e),n=e.ownerDocument,o=n.defaultView||n.parentWindow;return t.left+=M9(o),t.left}const R9={value:Number,index:Number,prefixCls:String,allowHalf:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},character:W.any,characterRender:Function,focused:{type:Boolean,default:void 0},count:Number,onClick:Function,onHover:Function},k9=ne({compatConfig:{MODE:3},name:\"Star\",inheritAttrs:!1,props:R9,emits:[\"hover\",\"click\"],setup(e,t){let{emit:n}=t;const o=i=>{const{index:s}=e;n(\"hover\",i,s)},r=i=>{const{index:s}=e;n(\"click\",i,s)},l=i=>{const{index:s}=e;i.keyCode===13&&n(\"click\",i,s)},a=I(()=>{const{prefixCls:i,index:s,value:c,allowHalf:u,focused:d}=e,p=s+1;let m=i;return c===0&&s===0&&d?m+=` ${i}-focused`:u&&c+.5>=p&&c<p?(m+=` ${i}-half ${i}-active`,d&&(m+=` ${i}-focused`)):(m+=p<=c?` ${i}-full`:` ${i}-zero`,p===c&&d&&(m+=` ${i}-focused`)),m});return()=>{const{disabled:i,prefixCls:s,characterRender:c,character:u,index:d,count:p,value:m}=e,g=typeof u==\"function\"?u({disabled:i,prefixCls:s,index:d,count:p,value:m}):u;let v=f(\"li\",{class:a.value},[f(\"div\",{onClick:i?null:r,onKeydown:i?null:l,onMousemove:i?null:o,role:\"radio\",\"aria-checked\":m>d?\"true\":\"false\",\"aria-posinset\":d+1,\"aria-setsize\":p,tabindex:i?-1:0},[f(\"div\",{class:`${s}-first`},[g]),f(\"div\",{class:`${s}-second`},[g])])]);return c&&(v=c(v,e)),v}}}),N9=e=>{const{componentCls:t}=e;return{[`${t}-star`]:{position:\"relative\",display:\"inline-block\",color:\"inherit\",cursor:\"pointer\",\"&:not(:last-child)\":{marginInlineEnd:e.marginXS},\"> div\":{transition:`all ${e.motionDurationMid}, outline 0s`,\"&:hover\":{transform:e.rateStarHoverScale},\"&:focus\":{outline:0},\"&:focus-visible\":{outline:`${e.lineWidth}px dashed ${e.rateStarColor}`,transform:e.rateStarHoverScale}},\"&-first, &-second\":{color:e.defaultColor,transition:`all ${e.motionDurationMid}`,userSelect:\"none\",[e.iconCls]:{verticalAlign:\"middle\"}},\"&-first\":{position:\"absolute\",top:0,insetInlineStart:0,width:\"50%\",height:\"100%\",overflow:\"hidden\",opacity:0},[`&-half ${t}-star-first, &-half ${t}-star-second`]:{opacity:1},[`&-half ${t}-star-first, &-full ${t}-star-second`]:{color:\"inherit\"}}}},B9=e=>({[`&-rtl${e.componentCls}`]:{direction:\"rtl\"}}),L9=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h({},Ue(e)),{display:\"inline-block\",margin:0,padding:0,color:e.rateStarColor,fontSize:e.rateStarSize,lineHeight:\"unset\",listStyle:\"none\",outline:\"none\",[`&-disabled${t} ${t}-star`]:{cursor:\"default\",\"&:hover\":{transform:\"scale(1)\"}}}),N9(e)),{[`+ ${t}-text`]:{display:\"inline-block\",marginInlineStart:e.marginXS,fontSize:e.fontSize}}),B9(e))}},F9=Ge(\"Rate\",e=>{const{colorFillContent:t}=e,n=Le(e,{rateStarColor:e[\"yellow-6\"],rateStarSize:e.controlHeightLG*.5,rateStarHoverScale:\"scale(1.1)\",defaultColor:t});return[L9(n)]}),z9=()=>({prefixCls:String,count:Number,value:Number,allowHalf:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},tooltips:Array,disabled:{type:Boolean,default:void 0},character:W.any,autofocus:{type:Boolean,default:void 0},tabindex:W.oneOfType([W.number,W.string]),direction:String,id:String,onChange:Function,onHoverChange:Function,\"onUpdate:value\":Function,onFocus:Function,onBlur:Function,onKeydown:Function}),H9=ne({compatConfig:{MODE:3},name:\"ARate\",inheritAttrs:!1,props:Ze(z9(),{value:0,count:5,allowHalf:!1,allowClear:!0,tabindex:0,direction:\"ltr\"}),setup(e,t){let{slots:n,attrs:o,emit:r,expose:l}=t;const{prefixCls:a,direction:i}=Pe(\"rate\",e),[s,c]=F9(a),u=Jt(),d=J(),[p,m]=vg(),g=vt({value:e.value,focused:!1,cleanedValue:null,hoverValue:void 0});pe(()=>e.value,()=>{g.value=e.value});const v=E=>Tn(m.value.get(E)),y=(E,R)=>{const D=i.value===\"rtl\";let z=E+1;if(e.allowHalf){const T=v(E),k=D9(T),B=T.clientWidth;(D&&R-k>B/2||!D&&R-k<B/2)&&(z-=.5)}return z},b=E=>{e.value===void 0&&(g.value=E),r(\"update:value\",E),r(\"change\",E),u.onFieldChange()},S=(E,R)=>{const D=y(R,E.pageX);D!==g.cleanedValue&&(g.hoverValue=D,g.cleanedValue=null),r(\"hoverChange\",D)},$=()=>{g.hoverValue=void 0,g.cleanedValue=null,r(\"hoverChange\",void 0)},w=(E,R)=>{const{allowClear:D}=e,z=y(R,E.pageX);let T=!1;D&&(T=z===g.value),$(),b(T?0:z),g.cleanedValue=T?z:null},C=E=>{g.focused=!0,r(\"focus\",E)},_=E=>{g.focused=!1,r(\"blur\",E),u.onFieldBlur()},x=E=>{const{keyCode:R}=E,{count:D,allowHalf:z}=e,T=i.value===\"rtl\";R===we.RIGHT&&g.value<D&&!T?(z?g.value+=.5:g.value+=1,b(g.value),E.preventDefault()):R===we.LEFT&&g.value>0&&!T||R===we.RIGHT&&g.value>0&&T?(z?g.value-=.5:g.value-=1,b(g.value),E.preventDefault()):R===we.LEFT&&g.value<D&&T&&(z?g.value+=.5:g.value+=1,b(g.value),E.preventDefault()),r(\"keydown\",E)},P=()=>{e.disabled||d.value.focus()};l({focus:P,blur:()=>{e.disabled||d.value.blur()}}),Ne(()=>{const{autofocus:E,disabled:R}=e;E&&!R&&P()});const M=(E,R)=>{let{index:D}=R;const{tooltips:z}=e;return z?f(Ln,{title:z[D]},{default:()=>[E]}):E};return()=>{const{count:E,allowHalf:R,disabled:D,tabindex:z,id:T=u.id.value}=e,{class:k,style:B}=o,L=[],N=D?`${a.value}-disabled`:\"\",F=e.character||n.character||(()=>f(KI,null,null));for(let H=0;H<E;H++)L.push(f(k9,{ref:p(H),key:H,index:H,count:E,disabled:D,prefixCls:`${a.value}-star`,allowHalf:R,value:g.hoverValue===void 0?g.value:g.hoverValue,onClick:w,onHover:S,character:F,characterRender:M,focused:g.focused},null));const j=le(a.value,N,k,{[c.value]:!0,[`${a.value}-rtl`]:i.value===\"rtl\"});return s(f(\"ul\",A(A({},o),{},{id:T,class:j,style:B,onMouseleave:D?null:$,tabindex:D?-1:z,onFocus:D?null:C,onBlur:D?null:_,onKeydown:D?null:x,ref:d,role:\"radiogroup\"}),[L]))}}}),j9=Dt(H9),W9=()=>f(\"svg\",{width:\"252\",height:\"294\"},[f(\"defs\",null,[f(\"path\",{d:\"M0 .387h251.772v251.772H0z\"},null)]),f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"g\",{transform:\"translate(0 .012)\"},[f(\"mask\",{fill:\"#fff\"},null),f(\"path\",{d:\"M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321\",fill:\"#E4EBF7\",mask:\"url(#b)\"},null)]),f(\"path\",{d:\"M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66\",fill:\"#FFF\"},null),f(\"path\",{d:\"M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175\",fill:\"#FFF\"},null),f(\"path\",{d:\"M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932\",fill:\"#FFF\"},null),f(\"path\",{d:\"M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382\",fill:\"#FFF\"},null),f(\"path\",{d:\"M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{stroke:\"#FFF\",\"stroke-width\":\"2\",d:\"M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39\"},null),f(\"path\",{d:\"M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742\",fill:\"#FFF\"},null),f(\"path\",{d:\"M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48\",fill:\"#1890FF\"},null),f(\"path\",{d:\"M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894\",fill:\"#FFF\"},null),f(\"path\",{d:\"M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682\",fill:\"#FFF\"},null),f(\"path\",{d:\"M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165\",fill:\"#7BB2F9\"},null),f(\"path\",{d:\"M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M107.275 222.1s2.773-1.11 6.102-3.884\",stroke:\"#648BD8\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038\",fill:\"#192064\"},null),f(\"path\",{d:\"M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81\",fill:\"#FFF\"},null),f(\"path\",{d:\"M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642\",fill:\"#192064\"},null),f(\"path\",{d:\"M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z\",fill:\"#520038\"},null),f(\"path\",{d:\"M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254\",fill:\"#552950\"},null),f(\"path\",{stroke:\"#DB836E\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",d:\"M110.13 74.84l-.896 1.61-.298 4.357h-2.228\"},null),f(\"path\",{d:\"M110.846 74.481s1.79-.716 2.506.537\",stroke:\"#5C2552\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67\",stroke:\"#DB836E\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M103.287 72.93s1.83 1.113 4.137.954\",stroke:\"#5C2552\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639\",stroke:\"#DB836E\",\"stroke-width\":\"1.118\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.101\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M129.405 122.865s-5.272 7.403-9.422 10.768\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M119.306 107.329s.452 4.366-2.127 32.062\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.101\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01\",fill:\"#F2D7AD\"},null),f(\"path\",{d:\"M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92\",fill:\"#F4D19D\"},null),f(\"path\",{d:\"M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z\",fill:\"#F2D7AD\"},null),f(\"path\",{fill:\"#CC9B6E\",d:\"M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z\"},null),f(\"path\",{d:\"M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83\",fill:\"#F4D19D\"},null),f(\"path\",{fill:\"#CC9B6E\",d:\"M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z\"},null),f(\"path\",{fill:\"#CC9B6E\",d:\"M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z\"},null),f(\"path\",{d:\"M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044\",stroke:\"#DB836E\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617\",stroke:\"#DB836E\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754\",stroke:\"#DB836E\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647\",fill:\"#5BA02E\"},null),f(\"path\",{d:\"M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647\",fill:\"#92C110\"},null),f(\"path\",{d:\"M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187\",fill:\"#F2D7AD\"},null),f(\"path\",{d:\"M88.979 89.48s7.776 5.384 16.6 2.842\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.101\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null)])]),V9=()=>f(\"svg\",{width:\"254\",height:\"294\"},[f(\"defs\",null,[f(\"path\",{d:\"M0 .335h253.49v253.49H0z\"},null),f(\"path\",{d:\"M0 293.665h253.49V.401H0z\"},null)]),f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"g\",{transform:\"translate(0 .067)\"},[f(\"mask\",{fill:\"#fff\"},null),f(\"path\",{d:\"M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134\",fill:\"#E4EBF7\",mask:\"url(#b)\"},null)]),f(\"path\",{d:\"M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671\",fill:\"#FFF\"},null),f(\"path\",{d:\"M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238\",fill:\"#FFF\"},null),f(\"path\",{d:\"M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775\",fill:\"#FFF\"},null),f(\"path\",{d:\"M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68\",fill:\"#FF603B\"},null),f(\"path\",{d:\"M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733\",fill:\"#FFF\"},null),f(\"path\",{d:\"M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235\",fill:\"#FFF\"},null),f(\"path\",{d:\"M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z\",fill:\"#520038\"},null),f(\"path\",{d:\"M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26\",fill:\"#552950\"},null),f(\"path\",{stroke:\"#DB836E\",\"stroke-width\":\"1.063\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",d:\"M99.206 73.644l-.9 1.62-.3 4.38h-2.24\"},null),f(\"path\",{d:\"M99.926 73.284s1.8-.72 2.52.54\",stroke:\"#5C2552\",\"stroke-width\":\"1.117\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68\",stroke:\"#DB836E\",\"stroke-width\":\"1.117\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M92.326 71.724s1.84 1.12 4.16.96\",stroke:\"#5C2552\",\"stroke-width\":\"1.117\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954\",stroke:\"#DB836E\",\"stroke-width\":\"1.063\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.136\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583\",fill:\"#FFF\"},null),f(\"path\",{d:\"M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575\",fill:\"#FFF\"},null),f(\"path\",{d:\"M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69\",fill:\"#7BB2F9\"},null),f(\"path\",{d:\"M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034\",stroke:\"#648BD8\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M96.973 219.373s2.882-1.153 6.34-4.034\",stroke:\"#648BD8\",\"stroke-width\":\"1.032\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07\",stroke:\"#648BD8\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62\",fill:\"#192064\"},null),f(\"path\",{d:\"M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843\",fill:\"#FFF\"},null),f(\"path\",{d:\"M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668\",fill:\"#192064\"},null),f(\"path\",{d:\"M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513\",stroke:\"#648BD8\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593\",stroke:\"#DB836E\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762\",stroke:\"#E59788\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12\",stroke:\"#E59788\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M109.278 112.533s3.38-3.613 7.575-4.662\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.085\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M107.375 123.006s9.697-2.745 11.445-.88\",stroke:\"#E59788\",\"stroke-width\":\".774\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955\",stroke:\"#BFCDDD\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01\",fill:\"#A3B4C6\"},null),f(\"path\",{d:\"M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813\",fill:\"#A3B4C6\"},null),f(\"mask\",{fill:\"#fff\"},null),f(\"path\",{fill:\"#A3B4C6\",mask:\"url(#d)\",d:\"M154.098 190.096h70.513v-84.617h-70.513z\"},null),f(\"path\",{d:\"M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208\",fill:\"#BFCDDD\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802\",fill:\"#FFF\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209\",fill:\"#BFCDDD\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751\",stroke:\"#7C90A5\",\"stroke-width\":\"1.124\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802\",fill:\"#FFF\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407\",fill:\"#BFCDDD\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M177.259 207.217v11.52M201.05 207.217v11.52\",stroke:\"#A3B4C6\",\"stroke-width\":\"1.124\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422\",fill:\"#5BA02E\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423\",fill:\"#92C110\",mask:\"url(#d)\"},null),f(\"path\",{d:\"M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209\",fill:\"#F2D7AD\",mask:\"url(#d)\"},null)])]),K9=()=>f(\"svg\",{width:\"251\",height:\"294\"},[f(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},[f(\"path\",{d:\"M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023\",fill:\"#E4EBF7\"},null),f(\"path\",{d:\"M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65\",fill:\"#FFF\"},null),f(\"path\",{d:\"M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126\",fill:\"#FFF\"},null),f(\"path\",{d:\"M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873\",fill:\"#FFF\"},null),f(\"path\",{d:\"M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{d:\"M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375\",fill:\"#FFF\"},null),f(\"path\",{d:\"M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z\",stroke:\"#FFF\",\"stroke-width\":\"2\"},null),f(\"path\",{stroke:\"#FFF\",\"stroke-width\":\"2\",d:\"M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668\"},null),f(\"path\",{d:\"M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321\",fill:\"#A26EF4\"},null),f(\"path\",{d:\"M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734\",fill:\"#FFF\"},null),f(\"path\",{d:\"M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717\",fill:\"#FFF\"},null),f(\"path\",{d:\"M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61\",fill:\"#5BA02E\"},null),f(\"path\",{d:\"M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611\",fill:\"#92C110\"},null),f(\"path\",{d:\"M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17\",fill:\"#F2D7AD\"},null),f(\"path\",{d:\"M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085\",fill:\"#FFF\"},null),f(\"path\",{d:\"M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929\",fill:\"#FFF\"},null),f(\"path\",{d:\"M78.18 94.656s.911 7.41-4.914 13.078\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437\",stroke:\"#E4EBF7\",\"stroke-width\":\".932\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91\",fill:\"#FFB594\"},null),f(\"path\",{d:\"M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103\",fill:\"#5C2552\"},null),f(\"path\",{d:\"M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145\",fill:\"#FFC6A0\"},null),f(\"path\",{stroke:\"#DB836E\",\"stroke-width\":\"1.145\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",d:\"M100.843 77.099l1.701-.928-1.015-4.324.674-1.406\"},null),f(\"path\",{d:\"M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32\",fill:\"#552950\"},null),f(\"path\",{d:\"M91.132 86.786s5.269 4.957 12.679 2.327\",stroke:\"#DB836E\",\"stroke-width\":\"1.145\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25\",fill:\"#DB836E\"},null),f(\"path\",{d:\"M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073\",stroke:\"#5C2552\",\"stroke-width\":\"1.526\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254\",stroke:\"#DB836E\",\"stroke-width\":\"1.145\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M66.508 86.763s-1.598 8.83-6.697 14.078\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.114\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M128.31 87.934s3.013 4.121 4.06 11.785\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M64.09 84.816s-6.03 9.912-13.607 9.903\",stroke:\"#DB836E\",\"stroke-width\":\".795\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73\",fill:\"#FFC6A0\"},null),f(\"path\",{d:\"M130.532 85.488s4.588 5.757 11.619 6.214\",stroke:\"#DB836E\",\"stroke-width\":\".75\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M121.708 105.73s-.393 8.564-1.34 13.612\",stroke:\"#E4EBF7\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M115.784 161.512s-3.57-1.488-2.678-7.14\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z\",fill:\"#CBD1D1\"},null),f(\"path\",{d:\"M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078\",fill:\"#2B0849\"},null),f(\"path\",{d:\"M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15\",fill:\"#A4AABA\"},null),f(\"path\",{d:\"M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954\",fill:\"#7BB2F9\"},null),f(\"path\",{d:\"M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M108.459 220.905s2.759-1.104 6.07-3.863\",stroke:\"#648BD8\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null),f(\"path\",{d:\"M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017\",fill:\"#192064\"},null),f(\"path\",{d:\"M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806\",fill:\"#FFF\"},null),f(\"path\",{d:\"M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64\",fill:\"#192064\"},null),f(\"path\",{d:\"M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956\",stroke:\"#648BD8\",\"stroke-width\":\"1.051\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"},null)])]),G9=e=>{const{componentCls:t,lineHeightHeading3:n,iconCls:o,padding:r,paddingXL:l,paddingXS:a,paddingLG:i,marginXS:s,lineHeight:c}=e;return{[t]:{padding:`${i*2}px ${l}px`,\"&-rtl\":{direction:\"rtl\"}},[`${t} ${t}-image`]:{width:e.imageWidth,height:e.imageHeight,margin:\"auto\"},[`${t} ${t}-icon`]:{marginBottom:i,textAlign:\"center\",[`& > ${o}`]:{fontSize:e.resultIconFontSize}},[`${t} ${t}-title`]:{color:e.colorTextHeading,fontSize:e.resultTitleFontSize,lineHeight:n,marginBlock:s,textAlign:\"center\"},[`${t} ${t}-subtitle`]:{color:e.colorTextDescription,fontSize:e.resultSubtitleFontSize,lineHeight:c,textAlign:\"center\"},[`${t} ${t}-content`]:{marginTop:i,padding:`${i}px ${r*2.5}px`,backgroundColor:e.colorFillAlter},[`${t} ${t}-extra`]:{margin:e.resultExtraMargin,textAlign:\"center\",\"& > *\":{marginInlineEnd:a,\"&:last-child\":{marginInlineEnd:0}}}}},X9=e=>{const{componentCls:t,iconCls:n}=e;return{[`${t}-success ${t}-icon > ${n}`]:{color:e.resultSuccessIconColor},[`${t}-error ${t}-icon > ${n}`]:{color:e.resultErrorIconColor},[`${t}-info ${t}-icon > ${n}`]:{color:e.resultInfoIconColor},[`${t}-warning ${t}-icon > ${n}`]:{color:e.resultWarningIconColor}}},U9=e=>[G9(e),X9(e)],Y9=e=>U9(e),q9=Ge(\"Result\",e=>{const{paddingLG:t,fontSizeHeading3:n}=e,o=e.fontSize,r=`${t}px 0 0 0`,l=e.colorInfo,a=e.colorError,i=e.colorSuccess,s=e.colorWarning,c=Le(e,{resultTitleFontSize:n,resultSubtitleFontSize:o,resultIconFontSize:n*3,resultExtraMargin:r,resultInfoIconColor:l,resultErrorIconColor:a,resultSuccessIconColor:i,resultWarningIconColor:s});return[Y9(c)]},{imageWidth:250,imageHeight:295}),Z9={success:gr,error:jn,info:vr,warning:GI},Qi={404:W9,500:V9,403:K9},Q9=Object.keys(Qi),J9=()=>({prefixCls:String,icon:W.any,status:{type:[Number,String],default:\"info\"},title:W.any,subTitle:W.any,extra:W.any}),ej=(e,t)=>{let{status:n,icon:o}=t;if(Q9.includes(`${n}`)){const a=Qi[n];return f(\"div\",{class:`${e}-icon ${e}-image`},[f(a,null,null)])}const r=Z9[n],l=o||f(r,null,null);return f(\"div\",{class:`${e}-icon`},[l])},tj=(e,t)=>t&&f(\"div\",{class:`${e}-extra`},[t]),bl=ne({compatConfig:{MODE:3},name:\"AResult\",inheritAttrs:!1,props:J9(),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"result\",e),[a,i]=q9(r),s=I(()=>le(r.value,i.value,`${r.value}-${e.status}`,{[`${r.value}-rtl`]:l.value===\"rtl\"}));return()=>{var c,u,d,p,m,g,v,y;const b=(c=e.title)!==null&&c!==void 0?c:(u=n.title)===null||u===void 0?void 0:u.call(n),S=(d=e.subTitle)!==null&&d!==void 0?d:(p=n.subTitle)===null||p===void 0?void 0:p.call(n),$=(m=e.icon)!==null&&m!==void 0?m:(g=n.icon)===null||g===void 0?void 0:g.call(n),w=(v=e.extra)!==null&&v!==void 0?v:(y=n.extra)===null||y===void 0?void 0:y.call(n),C=r.value;return a(f(\"div\",A(A({},o),{},{class:[s.value,o.class]}),[ej(C,{status:e.status,icon:$}),f(\"div\",{class:`${C}-title`},[b]),S&&f(\"div\",{class:`${C}-subtitle`},[S]),tj(C,w),n.default&&f(\"div\",{class:`${C}-content`},[n.default()])]))}}});bl.PRESENTED_IMAGE_403=Qi[403];bl.PRESENTED_IMAGE_404=Qi[404];bl.PRESENTED_IMAGE_500=Qi[500];bl.install=function(e){return e.component(bl.name,bl),e};const nj=Dt(_g),jg=(e,t)=>{let{attrs:n}=t;const{included:o,vertical:r,style:l,class:a}=n;let{length:i,offset:s,reverse:c}=n;i<0&&(c=!c,i=Math.abs(i),s=100-s);const u=r?{[c?\"top\":\"bottom\"]:`${s}%`,[c?\"bottom\":\"top\"]:\"auto\",height:`${i}%`}:{[c?\"right\":\"left\"]:`${s}%`,[c?\"left\":\"right\"]:\"auto\",width:`${i}%`},d=h(h({},l),u);return o?f(\"div\",{class:a,style:d},null):null};jg.inheritAttrs=!1;const oj=(e,t,n,o,r,l)=>{const a=Object.keys(t).map(parseFloat).sort((i,s)=>i-s);if(n&&o)for(let i=r;i<=l;i+=o)a.indexOf(i)===-1&&a.push(i);return a},W2=(e,t)=>{let{attrs:n}=t;const{prefixCls:o,vertical:r,reverse:l,marks:a,dots:i,step:s,included:c,lowerBound:u,upperBound:d,max:p,min:m,dotStyle:g,activeDotStyle:v}=n,y=p-m,b=oj(r,a,i,s,m,p).map(S=>{const $=`${Math.abs(S-m)/y*100}%`,w=!c&&S===d||c&&S<=d&&S>=u;let C=r?h(h({},g),{[l?\"top\":\"bottom\"]:$}):h(h({},g),{[l?\"right\":\"left\"]:$});w&&(C=h(h({},C),v));const _=le({[`${o}-dot`]:!0,[`${o}-dot-active`]:w,[`${o}-dot-reverse`]:l});return f(\"span\",{class:_,style:C,key:S},null)});return f(\"div\",{class:`${o}-step`},[b])};W2.inheritAttrs=!1;const V2=(e,t)=>{let{attrs:n,slots:o}=t;const{class:r,vertical:l,reverse:a,marks:i,included:s,upperBound:c,lowerBound:u,max:d,min:p,onClickLabel:m}=n,g=Object.keys(i),v=o.mark,y=d-p,b=g.map(parseFloat).sort((S,$)=>S-$).map(S=>{const $=typeof i[S]==\"function\"?i[S]():i[S],w=typeof $==\"object\"&&!Kt($);let C=w?$.label:$;if(!C&&C!==0)return null;v&&(C=v({point:S,label:C}));const _=!s&&S===c||s&&S<=c&&S>=u,x=le({[`${r}-text`]:!0,[`${r}-text-active`]:_}),P={marginBottom:\"-50%\",[a?\"top\":\"bottom\"]:`${(S-p)/y*100}%`},O={transform:`translateX(${a?\"50%\":\"-50%\"})`,msTransform:`translateX(${a?\"50%\":\"-50%\"})`,[a?\"right\":\"left\"]:`${(S-p)/y*100}%`},M=l?P:O,E=w?h(h({},M),$.style):M,R={[Yt?\"onTouchstartPassive\":\"onTouchstart\"]:D=>m(D,S)};return f(\"span\",A({class:x,style:E,key:S,onMousedown:D=>m(D,S)},R),[C])});return f(\"div\",{class:r},[b])};V2.inheritAttrs=!1;const K2=ne({compatConfig:{MODE:3},name:\"Handle\",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:W.oneOfType([W.number,W.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup(e,t){let{attrs:n,emit:o,expose:r}=t;const l=ee(!1),a=ee(),i=()=>{document.activeElement===a.value&&(l.value=!0)},s=y=>{l.value=!1,o(\"blur\",y)},c=()=>{l.value=!1},u=()=>{var y;(y=a.value)===null||y===void 0||y.focus()},d=()=>{var y;(y=a.value)===null||y===void 0||y.blur()},p=()=>{l.value=!0,u()},m=y=>{y.preventDefault(),u(),o(\"mousedown\",y)};r({focus:u,blur:d,clickFocus:p,ref:a});let g=null;Ne(()=>{g=Rt(document,\"mouseup\",i)}),et(()=>{g?.remove()});const v=I(()=>{const{vertical:y,offset:b,reverse:S}=e;return y?{[S?\"top\":\"bottom\"]:`${b}%`,[S?\"bottom\":\"top\"]:\"auto\",transform:S?null:\"translateY(+50%)\"}:{[S?\"right\":\"left\"]:`${b}%`,[S?\"left\":\"right\"]:\"auto\",transform:`translateX(${S?\"+\":\"-\"}50%)`}});return()=>{const{prefixCls:y,disabled:b,min:S,max:$,value:w,tabindex:C,ariaLabel:_,ariaLabelledBy:x,ariaValueTextFormatter:P,onMouseenter:O,onMouseleave:M}=e,E=le(n.class,{[`${y}-handle-click-focused`]:l.value}),R={\"aria-valuemin\":S,\"aria-valuemax\":$,\"aria-valuenow\":w,\"aria-disabled\":!!b},D=[n.style,v.value];let z=C||0;(b||C===null)&&(z=null);let T;P&&(T=P(w));const k=h(h(h(h({},n),{role:\"slider\",tabindex:z}),R),{class:E,onBlur:s,onKeydown:c,onMousedown:m,onMouseenter:O,onMouseleave:M,ref:a,style:D});return f(\"div\",A(A({},k),{},{\"aria-label\":_,\"aria-labelledby\":x,\"aria-valuetext\":T}),null)}}});function Df(e,t){try{return Object.keys(t).some(n=>e.target===t[n].ref)}catch{return!1}}function G2(e,t){let{min:n,max:o}=t;return e<n||e>o}function Xy(e){return e.touches.length>1||e.type.toLowerCase()===\"touchend\"&&e.touches.length>0}function Uy(e,t){let{marks:n,step:o,min:r,max:l}=t;const a=Object.keys(n).map(parseFloat);if(o!==null){const s=Math.pow(10,X2(o)),c=Math.floor((l*s-r*s)/(o*s)),u=Math.min((e-r)/o,c),d=Math.round(u)*o+r;a.push(d)}const i=a.map(s=>Math.abs(e-s));return a[i.indexOf(Math.min(...i))]}function X2(e){const t=e.toString();let n=0;return t.indexOf(\".\")>=0&&(n=t.length-t.indexOf(\".\")-1),n}function Yy(e,t){let n=1;return window.visualViewport&&(n=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(e?t.clientY:t.pageX)/n}function qy(e,t){let n=1;return window.visualViewport&&(n=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(e?t.touches[0].clientY:t.touches[0].pageX)/n}function Zy(e,t){const n=t.getBoundingClientRect();return e?n.top+n.height*.5:window.scrollX+n.left+n.width*.5}function Wg(e,t){let{max:n,min:o}=t;return e<=o?o:e>=n?n:e}function U2(e,t){const{step:n}=t,o=isFinite(Uy(e,t))?Uy(e,t):0;return n===null?o:parseFloat(o.toFixed(X2(n)))}function Sa(e){e.stopPropagation(),e.preventDefault()}function rj(e,t,n){const o={increase:(a,i)=>a+i,decrease:(a,i)=>a-i},r=o[e](Object.keys(n.marks).indexOf(JSON.stringify(t)),1),l=Object.keys(n.marks)[r];return n.step?o[e](t,n.step):Object.keys(n.marks).length&&n.marks[l]?n.marks[l]:t}function Y2(e,t,n){const o=\"increase\",r=\"decrease\";let l=o;switch(e.keyCode){case we.UP:l=t&&n?r:o;break;case we.RIGHT:l=!t&&n?r:o;break;case we.DOWN:l=t&&n?o:r;break;case we.LEFT:l=!t&&n?o:r;break;case we.END:return(a,i)=>i.max;case we.HOME:return(a,i)=>i.min;case we.PAGE_UP:return(a,i)=>a+i.step*2;case we.PAGE_DOWN:return(a,i)=>a-i.step*2;default:return}return(a,i)=>rj(l,a,i)}var lj=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function tl(){}function q2(e){const t={id:String,min:Number,max:Number,step:Number,marks:W.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:W.object,maximumTrackStyle:W.object,handleStyle:W.oneOfType([W.object,W.arrayOf(W.object)]),trackStyle:W.oneOfType([W.object,W.arrayOf(W.object)]),railStyle:W.object,dotStyle:W.object,activeDotStyle:W.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return ne({compatConfig:{MODE:3},name:\"CreateSlider\",mixins:[Tl,e],inheritAttrs:!1,props:Ze(t,{prefixCls:\"rc-slider\",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:[\"change\",\"blur\",\"focus\"],data(){const{step:n,max:o,min:r}=this;return this.handlesRefs={},{}},mounted(){this.$nextTick(()=>{this.document=this.sliderRef&&this.sliderRef.ownerDocument;const{autofocus:n,disabled:o}=this;n&&!o&&this.focus()})},beforeUnmount(){this.$nextTick(()=>{this.removeDocumentEvents()})},methods:{defaultHandle(n){var{index:o,directives:r,className:l,style:a}=n,i=lj(n,[\"index\",\"directives\",\"className\",\"style\"]);if(delete i.dragging,i.value===null)return null;const s=h(h({},i),{class:l,style:a,key:o});return f(K2,s,null)},onDown(n,o){let r=o;const{draggableTrack:l,vertical:a}=this.$props,{bounds:i}=this.$data,s=l&&this.positionGetValue?this.positionGetValue(r)||[]:[],c=Df(n,this.handlesRefs);if(this.dragTrack=l&&i.length>=2&&!c&&!s.map((u,d)=>{const p=d?!0:u>=i[d];return d===s.length-1?u<=i[d]:p}).some(u=>!u),this.dragTrack)this.dragOffset=r,this.startBounds=[...i];else{if(!c)this.dragOffset=0;else{const u=Zy(a,n.target);this.dragOffset=r-u,r=u}this.onStart(r)}},onMouseDown(n){if(n.button!==0)return;this.removeDocumentEvents();const o=this.$props.vertical,r=Yy(o,n);this.onDown(n,r),this.addDocumentMouseEvents()},onTouchStart(n){if(Xy(n))return;const o=this.vertical,r=qy(o,n);this.onDown(n,r),this.addDocumentTouchEvents(),Sa(n)},onFocus(n){const{vertical:o}=this;if(Df(n,this.handlesRefs)&&!this.dragTrack){const r=Zy(o,n.target);this.dragOffset=0,this.onStart(r),Sa(n),this.$emit(\"focus\",n)}},onBlur(n){this.dragTrack||this.onEnd(),this.$emit(\"blur\",n)},onMouseUp(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove(n){if(!this.sliderRef){this.onEnd();return}const o=Yy(this.vertical,n);this.onMove(n,o-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove(n){if(Xy(n)||!this.sliderRef){this.onEnd();return}const o=qy(this.vertical,n);this.onMove(n,o-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown(n){this.sliderRef&&Df(n,this.handlesRefs)&&this.onKeyboard(n)},onClickMarkLabel(n,o){n.stopPropagation(),this.onChange({sValue:o}),this.setState({sValue:o},()=>this.onEnd(!0))},getSliderStart(){const n=this.sliderRef,{vertical:o,reverse:r}=this,l=n.getBoundingClientRect();return o?r?l.bottom:l.top:window.scrollX+(r?l.right:l.left)},getSliderLength(){const n=this.sliderRef;if(!n)return 0;const o=n.getBoundingClientRect();return this.vertical?o.height:o.width},addDocumentTouchEvents(){this.onTouchMoveListener=Rt(this.document,\"touchmove\",this.onTouchMove),this.onTouchUpListener=Rt(this.document,\"touchend\",this.onEnd)},addDocumentMouseEvents(){this.onMouseMoveListener=Rt(this.document,\"mousemove\",this.onMouseMove),this.onMouseUpListener=Rt(this.document,\"mouseup\",this.onEnd)},removeDocumentEvents(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus(){var n;this.$props.disabled||(n=this.handlesRefs[0])===null||n===void 0||n.focus()},blur(){this.$props.disabled||Object.keys(this.handlesRefs).forEach(n=>{var o,r;(r=(o=this.handlesRefs[n])===null||o===void 0?void 0:o.blur)===null||r===void 0||r.call(o)})},calcValue(n){const{vertical:o,min:r,max:l}=this,a=Math.abs(Math.max(n,0)/this.getSliderLength());return o?(1-a)*(l-r)+r:a*(l-r)+r},calcValueByPos(n){const r=(this.reverse?-1:1)*(n-this.getSliderStart());return this.trimAlignValue(this.calcValue(r))},calcOffset(n){const{min:o,max:r}=this,l=(n-o)/(r-o);return Math.max(0,l*100)},saveSlider(n){this.sliderRef=n},saveHandle(n,o){this.handlesRefs[n]=o}},render(){const{prefixCls:n,marks:o,dots:r,step:l,included:a,disabled:i,vertical:s,reverse:c,min:u,max:d,maximumTrackStyle:p,railStyle:m,dotStyle:g,activeDotStyle:v,id:y}=this,{class:b,style:S}=this.$attrs,{tracks:$,handles:w}=this.renderSlider(),C=le(n,b,{[`${n}-with-marks`]:Object.keys(o).length,[`${n}-disabled`]:i,[`${n}-vertical`]:s,[`${n}-horizontal`]:!s}),_={vertical:s,marks:o,included:a,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:d,min:u,reverse:c,class:`${n}-mark`,onClickLabel:i?tl:this.onClickMarkLabel},x={[Yt?\"onTouchstartPassive\":\"onTouchstart\"]:i?tl:this.onTouchStart};return f(\"div\",A(A({id:y,ref:this.saveSlider,tabindex:\"-1\",class:C},x),{},{onMousedown:i?tl:this.onMouseDown,onMouseup:i?tl:this.onMouseUp,onKeydown:i?tl:this.onKeyDown,onFocus:i?tl:this.onFocus,onBlur:i?tl:this.onBlur,style:S}),[f(\"div\",{class:`${n}-rail`,style:h(h({},p),m)},null),$,f(W2,{prefixCls:n,vertical:s,reverse:c,marks:o,dots:r,step:l,included:a,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:d,min:u,dotStyle:g,activeDotStyle:v},null),w,f(V2,_,{mark:this.$slots.mark}),Du(this)])}})}const aj=ne({compatConfig:{MODE:3},name:\"Slider\",mixins:[Tl],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:W.oneOfType([W.number,W.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:[\"beforeChange\",\"afterChange\",\"change\"],data(){const e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler(e){this.setChangeValue(e)},deep:!0},min(){const{sValue:e}=this;this.setChangeValue(e)},max(){const{sValue:e}=this;this.setChangeValue(e)}},methods:{setChangeValue(e){const t=e!==void 0?e:this.sValue,n=this.trimAlignValue(t,this.$props);n!==this.sValue&&(this.setState({sValue:n}),G2(t,this.$props)&&this.$emit(\"change\",n))},onChange(e){const t=!nr(this,\"value\"),n=e.sValue>this.max?h(h({},e),{sValue:this.max}):e;t&&this.setState(n);const o=n.sValue;this.$emit(\"change\",o)},onStart(e){this.setState({dragging:!0});const{sValue:t}=this;this.$emit(\"beforeChange\",t);const n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e,n!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:n}))},onEnd(e){const{dragging:t}=this;this.removeDocumentEvents(),(t||e)&&this.$emit(\"afterChange\",this.sValue),this.setState({dragging:!1})},onMove(e,t){Sa(e);const{sValue:n}=this,o=this.calcValueByPos(t);o!==n&&this.onChange({sValue:o})},onKeyboard(e){const{reverse:t,vertical:n}=this.$props,o=Y2(e,n,t);if(o){Sa(e);const{sValue:r}=this,l=o(r,this.$props),a=this.trimAlignValue(l);if(a===r)return;this.onChange({sValue:a}),this.$emit(\"afterChange\",a),this.onEnd()}},getLowerBound(){const e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound(){return this.$data.sValue<this.$props.startPoint?this.$props.startPoint:this.$data.sValue},trimAlignValue(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;const n=h(h({},this.$props),t),o=Wg(e,n);return U2(o,n)},getTrack(e){let{prefixCls:t,reverse:n,vertical:o,included:r,minimumTrackStyle:l,mergedTrackStyle:a,length:i,offset:s}=e;return f(jg,{class:`${t}-track`,vertical:o,included:r,offset:s,reverse:n,length:i,style:h(h({},l),a)},null)},renderSlider(){const{prefixCls:e,vertical:t,included:n,disabled:o,minimumTrackStyle:r,trackStyle:l,handleStyle:a,tabindex:i,ariaLabelForHandle:s,ariaLabelledByForHandle:c,ariaValueTextFormatterForHandle:u,min:d,max:p,startPoint:m,reverse:g,handle:v,defaultHandle:y}=this,b=v||y,{sValue:S,dragging:$}=this,w=this.calcOffset(S),C=b({class:`${e}-handle`,prefixCls:e,vertical:t,offset:w,value:S,dragging:$,disabled:o,min:d,max:p,reverse:g,index:0,tabindex:i,ariaLabel:s,ariaLabelledBy:c,ariaValueTextFormatter:u,style:a[0]||a,ref:P=>this.saveHandle(0,P),onFocus:this.onFocus,onBlur:this.onBlur}),_=m!==void 0?this.calcOffset(m):0,x=l[0]||l;return{tracks:this.getTrack({prefixCls:e,reverse:g,vertical:t,included:n,offset:_,minimumTrackStyle:r,mergedTrackStyle:x,length:w-_}),handles:C}}}}),ij=q2(aj),Ka=e=>{let{value:t,handle:n,bounds:o,props:r}=e;const{allowCross:l,pushable:a}=r,i=Number(a),s=Wg(t,r);let c=s;return!l&&n!=null&&o!==void 0&&(n>0&&s<=o[n-1]+i&&(c=o[n-1]+i),n<o.length-1&&s>=o[n+1]-i&&(c=o[n+1]-i)),U2(c,r)},sj={defaultValue:W.arrayOf(W.number),value:W.arrayOf(W.number),count:Number,pushable:VC(W.oneOfType([W.looseBool,W.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:W.arrayOf(W.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},cj=ne({compatConfig:{MODE:3},name:\"Range\",mixins:[Tl],inheritAttrs:!1,props:Ze(sj,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:[\"beforeChange\",\"afterChange\",\"change\"],displayName:\"Range\",data(){const{count:e,min:t,max:n}=this,o=Array(...Array(e+1)).map(()=>t),r=nr(this,\"defaultValue\")?this.defaultValue:o;let{value:l}=this;l===void 0&&(l=r);const a=l.map((s,c)=>Ka({value:s,handle:c,props:this.$props}));return{sHandle:null,recent:a[0]===n?0:a.length-1,bounds:a}},watch:{value:{handler(e){const{bounds:t}=this;this.setChangeValue(e||t)},deep:!0},min(){const{value:e}=this;this.setChangeValue(e||this.bounds)},max(){const{value:e}=this;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue(e){const{bounds:t}=this;let n=e.map((o,r)=>Ka({value:o,handle:r,bounds:t,props:this.$props}));if(t.length===n.length){if(n.every((o,r)=>o===t[r]))return null}else n=e.map((o,r)=>Ka({value:o,handle:r,props:this.$props}));if(this.setState({bounds:n}),e.some(o=>G2(o,this.$props))){const o=e.map(r=>Wg(r,this.$props));this.$emit(\"change\",o)}},onChange(e){if(!nr(this,\"value\"))this.setState(e);else{const r={};[\"sHandle\",\"recent\"].forEach(l=>{e[l]!==void 0&&(r[l]=e[l])}),Object.keys(r).length&&this.setState(r)}const o=h(h({},this.$data),e).bounds;this.$emit(\"change\",o)},positionGetValue(e){const t=this.getValue(),n=this.calcValueByPos(e),o=this.getClosestBound(n),r=this.getBoundNeedMoving(n,o),l=t[r];if(n===l)return null;const a=[...t];return a[r]=n,a},onStart(e){const{bounds:t}=this;this.$emit(\"beforeChange\",t);const n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e;const o=this.getClosestBound(n);this.prevMovedHandleIndex=this.getBoundNeedMoving(n,o),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});const r=t[this.prevMovedHandleIndex];if(n===r)return;const l=[...t];l[this.prevMovedHandleIndex]=n,this.onChange({bounds:l})},onEnd(e){const{sHandle:t}=this;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit(\"afterChange\",this.bounds),this.setState({sHandle:null})},onMove(e,t,n,o){Sa(e);const{$data:r,$props:l}=this,a=l.max||100,i=l.min||0;if(n){let p=l.vertical?-t:t;p=l.reverse?-p:p;const m=a-Math.max(...o),g=i-Math.min(...o),v=Math.min(Math.max(p/(this.getSliderLength()/100),g),m),y=o.map(b=>Math.floor(Math.max(Math.min(b+v,a),i)));r.bounds.map((b,S)=>b===y[S]).some(b=>!b)&&this.onChange({bounds:y});return}const{bounds:s,sHandle:c}=this,u=this.calcValueByPos(t),d=s[c];u!==d&&this.moveTo(u)},onKeyboard(e){const{reverse:t,vertical:n}=this.$props,o=Y2(e,n,t);if(o){Sa(e);const{bounds:r,sHandle:l}=this,a=r[l===null?this.recent:l],i=o(a,this.$props),s=Ka({value:i,handle:l,bounds:r,props:this.$props});if(s===a)return;this.moveTo(s,!0)}},getClosestBound(e){const{bounds:t}=this;let n=0;for(let o=1;o<t.length-1;o+=1)e>=t[o]&&(n=o);return Math.abs(t[n+1]-e)<Math.abs(t[n]-e)&&(n+=1),n},getBoundNeedMoving(e,t){const{bounds:n,recent:o}=this;let r=t;const l=n[t+1]===n[t];return l&&n[o]===n[t]&&(r=o),l&&e!==n[t+1]&&(r=e<n[t+1]?t:t+1),r},getLowerBound(){return this.bounds[0]},getUpperBound(){const{bounds:e}=this;return e[e.length-1]},getPoints(){const{marks:e,step:t,min:n,max:o}=this,r=this.internalPointsCache;if(!r||r.marks!==e||r.step!==t){const l=h({},e);if(t!==null)for(let i=n;i<=o;i+=t)l[i]=i;const a=Object.keys(l).map(parseFloat);a.sort((i,s)=>i-s),this.internalPointsCache={marks:e,step:t,points:a}}return this.internalPointsCache.points},moveTo(e,t){const n=[...this.bounds],{sHandle:o,recent:r}=this,l=o===null?r:o;n[l]=e;let a=l;this.$props.pushable!==!1?this.pushSurroundingHandles(n,a):this.$props.allowCross&&(n.sort((i,s)=>i-s),a=n.indexOf(e)),this.onChange({recent:a,sHandle:a,bounds:n}),t&&(this.$emit(\"afterChange\",n),this.setState({},()=>{this.handlesRefs[a].focus()}),this.onEnd())},pushSurroundingHandles(e,t){const n=e[t],{pushable:o}=this,r=Number(o);let l=0;if(e[t+1]-n<r&&(l=1),n-e[t-1]<r&&(l=-1),l===0)return;const a=t+l,i=l*(e[a]-n);this.pushHandle(e,a,l,r-i)||(e[t]=e[a]-l*r)},pushHandle(e,t,n,o){const r=e[t];let l=e[t];for(;n*(l-r)<o;){if(!this.pushHandleOnePoint(e,t,n))return e[t]=r,!1;l=e[t]}return!0},pushHandleOnePoint(e,t,n){const o=this.getPoints(),l=o.indexOf(e[t])+n;if(l>=o.length||l<0)return!1;const a=t+n,i=o[l],{pushable:s}=this,c=Number(s),u=n*(e[a]-i);return this.pushHandle(e,a,n,c-u)?(e[t]=i,!0):!1},trimAlignValue(e){const{sHandle:t,bounds:n}=this;return Ka({value:e,handle:t,bounds:n,props:this.$props})},ensureValueNotConflict(e,t,n){let{allowCross:o,pushable:r}=n;const l=this.$data||{},{bounds:a}=l;if(e=e===void 0?l.sHandle:e,r=Number(r),!o&&e!=null&&a!==void 0){if(e>0&&t<=a[e-1]+r)return a[e-1]+r;if(e<a.length-1&&t>=a[e+1]-r)return a[e+1]-r}return t},getTrack(e){let{bounds:t,prefixCls:n,reverse:o,vertical:r,included:l,offsets:a,trackStyle:i}=e;return t.slice(0,-1).map((s,c)=>{const u=c+1,d=le({[`${n}-track`]:!0,[`${n}-track-${u}`]:!0});return f(jg,{class:d,vertical:r,reverse:o,included:l,offset:a[u-1],length:a[u]-a[u-1],style:i[c],key:u},null)})},renderSlider(){const{sHandle:e,bounds:t,prefixCls:n,vertical:o,included:r,disabled:l,min:a,max:i,reverse:s,handle:c,defaultHandle:u,trackStyle:d,handleStyle:p,tabindex:m,ariaLabelGroupForHandles:g,ariaLabelledByGroupForHandles:v,ariaValueTextFormatterGroupForHandles:y}=this,b=c||u,S=t.map(C=>this.calcOffset(C)),$=`${n}-handle`,w=t.map((C,_)=>{let x=m[_]||0;(l||m[_]===null)&&(x=null);const P=e===_;return b({class:le({[$]:!0,[`${$}-${_+1}`]:!0,[`${$}-dragging`]:P}),prefixCls:n,vertical:o,dragging:P,offset:S[_],value:C,index:_,tabindex:x,min:a,max:i,reverse:s,disabled:l,style:p[_],ref:O=>this.saveHandle(_,O),onFocus:this.onFocus,onBlur:this.onBlur,ariaLabel:g[_],ariaLabelledBy:v[_],ariaValueTextFormatter:y[_]})});return{tracks:this.getTrack({bounds:t,prefixCls:n,reverse:s,vertical:o,included:r,offsets:S,trackStyle:d}),handles:w}}}}),uj=q2(cj),dj=ne({compatConfig:{MODE:3},name:\"SliderTooltip\",inheritAttrs:!1,props:P1(),setup(e,t){let{attrs:n,slots:o}=t;const r=J(null),l=J(null);function a(){qe.cancel(l.value),l.value=null}function i(){l.value=qe(()=>{var c;(c=r.value)===null||c===void 0||c.forcePopupAlign(),l.value=null})}const s=()=>{a(),e.open&&i()};return pe([()=>e.open,()=>e.title],()=>{s()},{flush:\"post\",immediate:!0}),Tm(()=>{s()}),et(()=>{a()}),()=>f(Ln,A(A({ref:r},e),n),o)}}),fj=e=>{const{componentCls:t,controlSize:n,dotSize:o,marginFull:r,marginPart:l,colorFillContentHover:a}=e;return{[t]:h(h({},Ue(e)),{position:\"relative\",height:n,margin:`${l}px ${r}px`,padding:0,cursor:\"pointer\",touchAction:\"none\",\"&-vertical\":{margin:`${r}px ${l}px`},[`${t}-rail`]:{position:\"absolute\",backgroundColor:e.colorFillTertiary,borderRadius:e.borderRadiusXS,transition:`background-color ${e.motionDurationMid}`},[`${t}-track`]:{position:\"absolute\",backgroundColor:e.colorPrimaryBorder,borderRadius:e.borderRadiusXS,transition:`background-color ${e.motionDurationMid}`},\"&:hover\":{[`${t}-rail`]:{backgroundColor:e.colorFillSecondary},[`${t}-track`]:{backgroundColor:e.colorPrimaryBorderHover},[`${t}-dot`]:{borderColor:a},[`${t}-handle::after`]:{boxShadow:`0 0 0 ${e.handleLineWidth}px ${e.colorPrimaryBorderHover}`},[`${t}-dot-active`]:{borderColor:e.colorPrimary}},[`${t}-handle`]:{position:\"absolute\",width:e.handleSize,height:e.handleSize,outline:\"none\",[`${t}-dragging`]:{zIndex:1},\"&::before\":{content:'\"\"',position:\"absolute\",insetInlineStart:-e.handleLineWidth,insetBlockStart:-e.handleLineWidth,width:e.handleSize+e.handleLineWidth*2,height:e.handleSize+e.handleLineWidth*2,backgroundColor:\"transparent\"},\"&::after\":{content:'\"\"',position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:e.handleSize,height:e.handleSize,backgroundColor:e.colorBgElevated,boxShadow:`0 0 0 ${e.handleLineWidth}px ${e.colorPrimaryBorder}`,borderRadius:\"50%\",cursor:\"pointer\",transition:`\n            inset-inline-start ${e.motionDurationMid},\n            inset-block-start ${e.motionDurationMid},\n            width ${e.motionDurationMid},\n            height ${e.motionDurationMid},\n            box-shadow ${e.motionDurationMid}\n          `},\"&:hover, &:active, &:focus\":{\"&::before\":{insetInlineStart:-((e.handleSizeHover-e.handleSize)/2+e.handleLineWidthHover),insetBlockStart:-((e.handleSizeHover-e.handleSize)/2+e.handleLineWidthHover),width:e.handleSizeHover+e.handleLineWidthHover*2,height:e.handleSizeHover+e.handleLineWidthHover*2},\"&::after\":{boxShadow:`0 0 0 ${e.handleLineWidthHover}px ${e.colorPrimary}`,width:e.handleSizeHover,height:e.handleSizeHover,insetInlineStart:(e.handleSize-e.handleSizeHover)/2,insetBlockStart:(e.handleSize-e.handleSizeHover)/2}}},[`${t}-mark`]:{position:\"absolute\",fontSize:e.fontSize},[`${t}-mark-text`]:{position:\"absolute\",display:\"inline-block\",color:e.colorTextDescription,textAlign:\"center\",wordBreak:\"keep-all\",cursor:\"pointer\",userSelect:\"none\",\"&-active\":{color:e.colorText}},[`${t}-step`]:{position:\"absolute\",background:\"transparent\",pointerEvents:\"none\"},[`${t}-dot`]:{position:\"absolute\",width:o,height:o,backgroundColor:e.colorBgElevated,border:`${e.handleLineWidth}px solid ${e.colorBorderSecondary}`,borderRadius:\"50%\",cursor:\"pointer\",transition:`border-color ${e.motionDurationSlow}`,\"&-active\":{borderColor:e.colorPrimaryBorder}},[`&${t}-disabled`]:{cursor:\"not-allowed\",[`${t}-rail`]:{backgroundColor:`${e.colorFillSecondary} !important`},[`${t}-track`]:{backgroundColor:`${e.colorTextDisabled} !important`},[`\n          ${t}-dot\n        `]:{backgroundColor:e.colorBgElevated,borderColor:e.colorTextDisabled,boxShadow:\"none\",cursor:\"not-allowed\"},[`${t}-handle::after`]:{backgroundColor:e.colorBgElevated,cursor:\"not-allowed\",width:e.handleSize,height:e.handleSize,boxShadow:`0 0 0 ${e.handleLineWidth}px ${new mt(e.colorTextDisabled).onBackground(e.colorBgContainer).toHexString()}`,insetInlineStart:0,insetBlockStart:0},[`\n          ${t}-mark-text,\n          ${t}-dot\n        `]:{cursor:\"not-allowed !important\"}}})}},Z2=(e,t)=>{const{componentCls:n,railSize:o,handleSize:r,dotSize:l}=e,a=t?\"paddingBlock\":\"paddingInline\",i=t?\"width\":\"height\",s=t?\"height\":\"width\",c=t?\"insetBlockStart\":\"insetInlineStart\",u=t?\"top\":\"insetInlineStart\";return{[a]:o,[s]:o*3,[`${n}-rail`]:{[i]:\"100%\",[s]:o},[`${n}-track`]:{[s]:o},[`${n}-handle`]:{[c]:(o*3-r)/2},[`${n}-mark`]:{insetInlineStart:0,top:0,[u]:r,[i]:\"100%\"},[`${n}-step`]:{insetInlineStart:0,top:0,[u]:o,[i]:\"100%\",[s]:o},[`${n}-dot`]:{position:\"absolute\",[c]:(o-l)/2}}},pj=e=>{const{componentCls:t,marginPartWithMark:n}=e;return{[`${t}-horizontal`]:h(h({},Z2(e,!0)),{[`&${t}-with-marks`]:{marginBottom:n}})}},mj=e=>{const{componentCls:t}=e;return{[`${t}-vertical`]:h(h({},Z2(e,!1)),{height:\"100%\"})}},vj=Ge(\"Slider\",e=>{const t=Le(e,{marginPart:(e.controlHeight-e.controlSize)/2,marginFull:e.controlSize/2,marginPartWithMark:e.controlHeightLG-e.controlSize});return[fj(t),pj(t),mj(t)]},e=>{const n=e.controlHeightLG/4,o=e.controlHeightSM/2,r=e.lineWidth+1,l=e.lineWidth+3;return{controlSize:n,railSize:4,handleSize:n,handleSizeHover:o,dotSize:8,handleLineWidth:r,handleLineWidthHover:l}});var Qy=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const gj=e=>typeof e==\"number\"?e.toString():\"\",hj=()=>({id:String,prefixCls:String,tooltipPrefixCls:String,range:Fe([Boolean,Object]),reverse:ye(),min:Number,max:Number,step:Fe([Object,Number]),marks:De(),dots:ye(),value:Fe([Array,Number]),defaultValue:Fe([Array,Number]),included:ye(),disabled:ye(),vertical:ye(),tipFormatter:Fe([Function,Object],()=>gj),tooltipOpen:ye(),tooltipVisible:ye(),tooltipPlacement:ke(),getTooltipPopupContainer:de(),autofocus:ye(),handleStyle:Fe([Array,Object]),trackStyle:Fe([Array,Object]),onChange:de(),onAfterChange:de(),onFocus:de(),onBlur:de(),\"onUpdate:value\":de()}),bj=ne({compatConfig:{MODE:3},name:\"ASlider\",inheritAttrs:!1,props:hj(),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:r,expose:l}=t;const{prefixCls:a,rootPrefixCls:i,direction:s,getPopupContainer:c,configProvider:u}=Pe(\"slider\",e),[d,p]=vj(a),m=Jt(),g=J(),v=J({}),y=(x,P)=>{v.value[x]=P},b=I(()=>e.tooltipPlacement?e.tooltipPlacement:e.vertical?s.value===\"rtl\"?\"left\":\"right\":\"top\"),S=()=>{var x;(x=g.value)===null||x===void 0||x.focus()},$=()=>{var x;(x=g.value)===null||x===void 0||x.blur()},w=x=>{r(\"update:value\",x),r(\"change\",x),m.onFieldChange()},C=x=>{r(\"blur\",x)};l({focus:S,blur:$});const _=x=>{var{tooltipPrefixCls:P}=x,O=x.info,{value:M,dragging:E,index:R}=O,D=Qy(O,[\"value\",\"dragging\",\"index\"]);const{tipFormatter:z,tooltipOpen:T=e.tooltipVisible,getTooltipPopupContainer:k}=e,B=z?v.value[R]||E:!1,L=T||T===void 0&&B;return f(dj,{prefixCls:P,title:z?z(M):\"\",open:L,placement:b.value,transitionName:`${i.value}-zoom-down`,key:R,overlayClassName:`${a.value}-tooltip`,getPopupContainer:k||c?.value},{default:()=>[f(K2,A(A({},D),{},{value:M,onMouseenter:()=>y(R,!0),onMouseleave:()=>y(R,!1)}),null)]})};return()=>{const{tooltipPrefixCls:x,range:P,id:O=m.id.value}=e,M=Qy(e,[\"tooltipPrefixCls\",\"range\",\"id\"]),E=u.getPrefixCls(\"tooltip\",x),R=le(n.class,{[`${a.value}-rtl`]:s.value===\"rtl\"},p.value);s.value===\"rtl\"&&!M.vertical&&(M.reverse=!M.reverse);let D;return typeof P==\"object\"&&(D=P.draggableTrack),d(P?f(uj,A(A(A({},n),M),{},{step:M.step,draggableTrack:D,class:R,ref:g,handle:z=>_({tooltipPrefixCls:E,prefixCls:a.value,info:z}),prefixCls:a.value,onChange:w,onBlur:C}),{mark:o.mark}):f(ij,A(A(A({},n),M),{},{id:O,step:M.step,class:R,ref:g,handle:z=>_({tooltipPrefixCls:E,prefixCls:a.value,info:z}),prefixCls:a.value,onChange:w,onBlur:C}),{mark:o.mark}))}}}),yj=Dt(bj);function Jy(e){return typeof e==\"string\"}function Sj(){}const Q2=()=>({prefixCls:String,itemWidth:String,active:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},status:ke(),iconPrefix:String,icon:W.any,adjustMarginRight:String,stepNumber:Number,stepIndex:Number,description:W.any,title:W.any,subTitle:W.any,progressDot:VC(W.oneOfType([W.looseBool,W.func])),tailContent:W.any,icons:W.shape({finish:W.any,error:W.any}).loose,onClick:de(),onStepClick:de(),stepIcon:de(),itemRender:de(),__legacy:ye()}),J2=ne({compatConfig:{MODE:3},name:\"Step\",inheritAttrs:!1,props:Q2(),setup(e,t){let{slots:n,emit:o,attrs:r}=t;const l=i=>{o(\"click\",i),o(\"stepClick\",e.stepIndex)},a=i=>{let{icon:s,title:c,description:u}=i;const{prefixCls:d,stepNumber:p,status:m,iconPrefix:g,icons:v,progressDot:y=n.progressDot,stepIcon:b=n.stepIcon}=e;let S;const $=le(`${d}-icon`,`${g}icon`,{[`${g}icon-${s}`]:s&&Jy(s),[`${g}icon-check`]:!s&&m===\"finish\"&&(v&&!v.finish||!v),[`${g}icon-cross`]:!s&&m===\"error\"&&(v&&!v.error||!v)}),w=f(\"span\",{class:`${d}-icon-dot`},null);return y?typeof y==\"function\"?S=f(\"span\",{class:`${d}-icon`},[y({iconDot:w,index:p-1,status:m,title:c,description:u,prefixCls:d})]):S=f(\"span\",{class:`${d}-icon`},[w]):s&&!Jy(s)?S=f(\"span\",{class:`${d}-icon`},[s]):v&&v.finish&&m===\"finish\"?S=f(\"span\",{class:`${d}-icon`},[v.finish]):v&&v.error&&m===\"error\"?S=f(\"span\",{class:`${d}-icon`},[v.error]):s||m===\"finish\"||m===\"error\"?S=f(\"span\",{class:$},null):S=f(\"span\",{class:`${d}-icon`},[p]),b&&(S=b({index:p-1,status:m,title:c,description:u,node:S})),S};return()=>{var i,s,c,u;const{prefixCls:d,itemWidth:p,active:m,status:g=\"wait\",tailContent:v,adjustMarginRight:y,disabled:b,title:S=(i=n.title)===null||i===void 0?void 0:i.call(n),description:$=(s=n.description)===null||s===void 0?void 0:s.call(n),subTitle:w=(c=n.subTitle)===null||c===void 0?void 0:c.call(n),icon:C=(u=n.icon)===null||u===void 0?void 0:u.call(n),onClick:_,onStepClick:x}=e,P=g||\"wait\",O=le(`${d}-item`,`${d}-item-${P}`,{[`${d}-item-custom`]:C,[`${d}-item-active`]:m,[`${d}-item-disabled`]:b===!0}),M={};p&&(M.width=p),y&&(M.marginRight=y);const E={onClick:_||Sj};x&&!b&&(E.role=\"button\",E.tabindex=0,E.onClick=l);const R=f(\"div\",A(A({},ot(r,[\"__legacy\"])),{},{class:[O,r.class],style:[r.style,M]}),[f(\"div\",A(A({},E),{},{class:`${d}-item-container`}),[f(\"div\",{class:`${d}-item-tail`},[v]),f(\"div\",{class:`${d}-item-icon`},[a({icon:C,title:S,description:$})]),f(\"div\",{class:`${d}-item-content`},[f(\"div\",{class:`${d}-item-title`},[S,w&&f(\"div\",{title:typeof w==\"string\"?w:void 0,class:`${d}-item-subtitle`},[w])]),$&&f(\"div\",{class:`${d}-item-description`},[$])])])]);return e.itemRender?e.itemRender(R):R}}});var $j=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Cj=ne({compatConfig:{MODE:3},name:\"Steps\",props:{type:W.string.def(\"default\"),prefixCls:W.string.def(\"vc-steps\"),iconPrefix:W.string.def(\"vc\"),direction:W.string.def(\"horizontal\"),labelPlacement:W.string.def(\"horizontal\"),status:ke(\"process\"),size:W.string.def(\"\"),progressDot:W.oneOfType([W.looseBool,W.func]).def(void 0),initial:W.number.def(0),current:W.number.def(0),items:W.array.def(()=>[]),icons:W.shape({finish:W.any,error:W.any}).loose,stepIcon:de(),isInline:W.looseBool,itemRender:de()},emits:[\"change\"],setup(e,t){let{slots:n,emit:o}=t;const r=i=>{const{current:s}=e;s!==i&&o(\"change\",i)},l=(i,s,c)=>{const{prefixCls:u,iconPrefix:d,status:p,current:m,initial:g,icons:v,stepIcon:y=n.stepIcon,isInline:b,itemRender:S,progressDot:$=n.progressDot}=e,w=b||$,C=h(h({},i),{class:\"\"}),_=g+s,x={active:_===m,stepNumber:_+1,stepIndex:_,key:_,prefixCls:u,iconPrefix:d,progressDot:w,stepIcon:y,icons:v,onStepClick:r};return p===\"error\"&&s===m-1&&(C.class=`${u}-next-error`),C.status||(_===m?C.status=p:_<m?C.status=\"finish\":C.status=\"wait\"),b&&(C.icon=void 0,C.subTitle=void 0),c?c(h(h({},C),x)):(S&&(C.itemRender=P=>S(C,P)),f(J2,A(A(A({},C),x),{},{__legacy:!1}),null))},a=(i,s)=>l(h({},i.props),s,c=>dt(i,c));return()=>{var i;const{prefixCls:s,direction:c,type:u,labelPlacement:d,iconPrefix:p,status:m,size:g,current:v,progressDot:y=n.progressDot,initial:b,icons:S,items:$,isInline:w,itemRender:C}=e,_=$j(e,[\"prefixCls\",\"direction\",\"type\",\"labelPlacement\",\"iconPrefix\",\"status\",\"size\",\"current\",\"progressDot\",\"initial\",\"icons\",\"items\",\"isInline\",\"itemRender\"]),x=u===\"navigation\",P=w||y,O=w?\"horizontal\":c,M=w?void 0:g,E=P?\"vertical\":d,R=le(s,`${s}-${c}`,{[`${s}-${M}`]:M,[`${s}-label-${E}`]:O===\"horizontal\",[`${s}-dot`]:!!P,[`${s}-navigation`]:x,[`${s}-inline`]:w});return f(\"div\",A({class:R},_),[$.filter(D=>D).map((D,z)=>l(D,z)),kt((i=n.default)===null||i===void 0?void 0:i.call(n)).map(a)])}}}),xj=e=>{const{componentCls:t,stepsIconCustomTop:n,stepsIconCustomSize:o,stepsIconCustomFontSize:r}=e;return{[`${t}-item-custom`]:{[`> ${t}-item-container > ${t}-item-icon`]:{height:\"auto\",background:\"none\",border:0,[`> ${t}-icon`]:{top:n,width:o,height:o,fontSize:r,lineHeight:`${o}px`}}},[`&:not(${t}-vertical)`]:{[`${t}-item-custom`]:{[`${t}-item-icon`]:{width:\"auto\",background:\"none\"}}}}},wj=e=>{const{componentCls:t,stepsIconSize:n,lineHeight:o,stepsSmallIconSize:r}=e;return{[`&${t}-label-vertical`]:{[`${t}-item`]:{overflow:\"visible\",\"&-tail\":{marginInlineStart:n/2+e.controlHeightLG,padding:`${e.paddingXXS}px ${e.paddingLG}px`},\"&-content\":{display:\"block\",width:(n/2+e.controlHeightLG)*2,marginTop:e.marginSM,textAlign:\"center\"},\"&-icon\":{display:\"inline-block\",marginInlineStart:e.controlHeightLG},\"&-title\":{paddingInlineEnd:0,paddingInlineStart:0,\"&::after\":{display:\"none\"}},\"&-subtitle\":{display:\"block\",marginBottom:e.marginXXS,marginInlineStart:0,lineHeight:o}},[`&${t}-small:not(${t}-dot)`]:{[`${t}-item`]:{\"&-icon\":{marginInlineStart:e.controlHeightLG+(n-r)/2}}}}}},_j=e=>{const{componentCls:t,stepsNavContentMaxWidth:n,stepsNavArrowColor:o,stepsNavActiveColor:r,motionDurationSlow:l}=e;return{[`&${t}-navigation`]:{paddingTop:e.paddingSM,[`&${t}-small`]:{[`${t}-item`]:{\"&-container\":{marginInlineStart:-e.marginSM}}},[`${t}-item`]:{overflow:\"visible\",textAlign:\"center\",\"&-container\":{display:\"inline-block\",height:\"100%\",marginInlineStart:-e.margin,paddingBottom:e.paddingSM,textAlign:\"start\",transition:`opacity ${l}`,[`${t}-item-content`]:{maxWidth:n},[`${t}-item-title`]:h(h({maxWidth:\"100%\",paddingInlineEnd:0},Gt),{\"&::after\":{display:\"none\"}})},[`&:not(${t}-item-active)`]:{[`${t}-item-container[role='button']`]:{cursor:\"pointer\",\"&:hover\":{opacity:.85}}},\"&:last-child\":{flex:1,\"&::after\":{display:\"none\"}},\"&::after\":{position:\"absolute\",top:`calc(50% - ${e.paddingSM/2}px)`,insetInlineStart:\"100%\",display:\"inline-block\",width:e.fontSizeIcon,height:e.fontSizeIcon,borderTop:`${e.lineWidth}px ${e.lineType} ${o}`,borderBottom:\"none\",borderInlineStart:\"none\",borderInlineEnd:`${e.lineWidth}px ${e.lineType} ${o}`,transform:\"translateY(-50%) translateX(-50%) rotate(45deg)\",content:'\"\"'},\"&::before\":{position:\"absolute\",bottom:0,insetInlineStart:\"50%\",display:\"inline-block\",width:0,height:e.lineWidthBold,backgroundColor:r,transition:`width ${l}, inset-inline-start ${l}`,transitionTimingFunction:\"ease-out\",content:'\"\"'}},[`${t}-item${t}-item-active::before`]:{insetInlineStart:0,width:\"100%\"}},[`&${t}-navigation${t}-vertical`]:{[`> ${t}-item`]:{marginInlineEnd:0,\"&::before\":{display:\"none\"},[`&${t}-item-active::before`]:{top:0,insetInlineEnd:0,insetInlineStart:\"unset\",display:\"block\",width:e.lineWidth*3,height:`calc(100% - ${e.marginLG}px)`},\"&::after\":{position:\"relative\",insetInlineStart:\"50%\",display:\"block\",width:e.controlHeight*.25,height:e.controlHeight*.25,marginBottom:e.marginXS,textAlign:\"center\",transform:\"translateY(-50%) translateX(-50%) rotate(135deg)\"},[`> ${t}-item-container > ${t}-item-tail`]:{visibility:\"hidden\"}}},[`&${t}-navigation${t}-horizontal`]:{[`> ${t}-item > ${t}-item-container > ${t}-item-tail`]:{visibility:\"hidden\"}}}},Ij=e=>{const{antCls:t,componentCls:n}=e;return{[`&${n}-with-progress`]:{[`${n}-item`]:{paddingTop:e.paddingXXS,[`&-process ${n}-item-container ${n}-item-icon ${n}-icon`]:{color:e.processIconColor}},[`&${n}-vertical > ${n}-item `]:{paddingInlineStart:e.paddingXXS,[`> ${n}-item-container > ${n}-item-tail`]:{top:e.marginXXS,insetInlineStart:e.stepsIconSize/2-e.lineWidth+e.paddingXXS}},[`&, &${n}-small`]:{[`&${n}-horizontal ${n}-item:first-child`]:{paddingBottom:e.paddingXXS,paddingInlineStart:e.paddingXXS}},[`&${n}-small${n}-vertical > ${n}-item > ${n}-item-container > ${n}-item-tail`]:{insetInlineStart:e.stepsSmallIconSize/2-e.lineWidth+e.paddingXXS},[`&${n}-label-vertical`]:{[`${n}-item ${n}-item-tail`]:{top:e.margin-2*e.lineWidth}},[`${n}-item-icon`]:{position:\"relative\",[`${t}-progress`]:{position:\"absolute\",insetBlockStart:(e.stepsIconSize-e.stepsProgressSize-e.lineWidth*2)/2,insetInlineStart:(e.stepsIconSize-e.stepsProgressSize-e.lineWidth*2)/2}}}}},Pj=e=>{const{componentCls:t,descriptionWidth:n,lineHeight:o,stepsCurrentDotSize:r,stepsDotSize:l,motionDurationSlow:a}=e;return{[`&${t}-dot, &${t}-dot${t}-small`]:{[`${t}-item`]:{\"&-title\":{lineHeight:o},\"&-tail\":{top:Math.floor((e.stepsDotSize-e.lineWidth*3)/2),width:\"100%\",marginTop:0,marginBottom:0,marginInline:`${n/2}px 0`,padding:0,\"&::after\":{width:`calc(100% - ${e.marginSM*2}px)`,height:e.lineWidth*3,marginInlineStart:e.marginSM}},\"&-icon\":{width:l,height:l,marginInlineStart:(e.descriptionWidth-l)/2,paddingInlineEnd:0,lineHeight:`${l}px`,background:\"transparent\",border:0,[`${t}-icon-dot`]:{position:\"relative\",float:\"left\",width:\"100%\",height:\"100%\",borderRadius:100,transition:`all ${a}`,\"&::after\":{position:\"absolute\",top:-e.marginSM,insetInlineStart:(l-e.controlHeightLG*1.5)/2,width:e.controlHeightLG*1.5,height:e.controlHeight,background:\"transparent\",content:'\"\"'}}},\"&-content\":{width:n},[`&-process ${t}-item-icon`]:{position:\"relative\",top:(l-r)/2,width:r,height:r,lineHeight:`${r}px`,background:\"none\",marginInlineStart:(e.descriptionWidth-r)/2},[`&-process ${t}-icon`]:{[`&:first-child ${t}-icon-dot`]:{insetInlineStart:0}}}},[`&${t}-vertical${t}-dot`]:{[`${t}-item-icon`]:{marginTop:(e.controlHeight-l)/2,marginInlineStart:0,background:\"none\"},[`${t}-item-process ${t}-item-icon`]:{marginTop:(e.controlHeight-r)/2,top:0,insetInlineStart:(l-r)/2,marginInlineStart:0},[`${t}-item > ${t}-item-container > ${t}-item-tail`]:{top:(e.controlHeight-l)/2,insetInlineStart:0,margin:0,padding:`${l+e.paddingXS}px 0 ${e.paddingXS}px`,\"&::after\":{marginInlineStart:(l-e.lineWidth)/2}},[`&${t}-small`]:{[`${t}-item-icon`]:{marginTop:(e.controlHeightSM-l)/2},[`${t}-item-process ${t}-item-icon`]:{marginTop:(e.controlHeightSM-r)/2},[`${t}-item > ${t}-item-container > ${t}-item-tail`]:{top:(e.controlHeightSM-l)/2}},[`${t}-item:first-child ${t}-icon-dot`]:{insetInlineStart:0},[`${t}-item-content`]:{width:\"inherit\"}}}},Tj=e=>{const{componentCls:t}=e;return{[`&${t}-rtl`]:{direction:\"rtl\",[`${t}-item`]:{\"&-subtitle\":{float:\"left\"}},[`&${t}-navigation`]:{[`${t}-item::after`]:{transform:\"rotate(-45deg)\"}},[`&${t}-vertical`]:{[`> ${t}-item`]:{\"&::after\":{transform:\"rotate(225deg)\"},[`${t}-item-icon`]:{float:\"right\"}}},[`&${t}-dot`]:{[`${t}-item-icon ${t}-icon-dot, &${t}-small ${t}-item-icon ${t}-icon-dot`]:{float:\"right\"}}}}},Oj=e=>{const{componentCls:t,stepsSmallIconSize:n,fontSizeSM:o,fontSize:r,colorTextDescription:l}=e;return{[`&${t}-small`]:{[`&${t}-horizontal:not(${t}-label-vertical) ${t}-item`]:{paddingInlineStart:e.paddingSM,\"&:first-child\":{paddingInlineStart:0}},[`${t}-item-icon`]:{width:n,height:n,marginTop:0,marginBottom:0,marginInline:`0 ${e.marginXS}px`,fontSize:o,lineHeight:`${n}px`,textAlign:\"center\",borderRadius:n},[`${t}-item-title`]:{paddingInlineEnd:e.paddingSM,fontSize:r,lineHeight:`${n}px`,\"&::after\":{top:n/2}},[`${t}-item-description`]:{color:l,fontSize:r},[`${t}-item-tail`]:{top:n/2-e.paddingXXS},[`${t}-item-custom ${t}-item-icon`]:{width:\"inherit\",height:\"inherit\",lineHeight:\"inherit\",background:\"none\",border:0,borderRadius:0,[`> ${t}-icon`]:{fontSize:n,lineHeight:`${n}px`,transform:\"none\"}}}}},Ej=e=>{const{componentCls:t,stepsSmallIconSize:n,stepsIconSize:o}=e;return{[`&${t}-vertical`]:{display:\"flex\",flexDirection:\"column\",[`> ${t}-item`]:{display:\"block\",flex:\"1 0 auto\",paddingInlineStart:0,overflow:\"visible\",[`${t}-item-icon`]:{float:\"left\",marginInlineEnd:e.margin},[`${t}-item-content`]:{display:\"block\",minHeight:e.controlHeight*1.5,overflow:\"hidden\"},[`${t}-item-title`]:{lineHeight:`${o}px`},[`${t}-item-description`]:{paddingBottom:e.paddingSM}},[`> ${t}-item > ${t}-item-container > ${t}-item-tail`]:{position:\"absolute\",top:0,insetInlineStart:e.stepsIconSize/2-e.lineWidth,width:e.lineWidth,height:\"100%\",padding:`${o+e.marginXXS*1.5}px 0 ${e.marginXXS*1.5}px`,\"&::after\":{width:e.lineWidth,height:\"100%\"}},[`> ${t}-item:not(:last-child) > ${t}-item-container > ${t}-item-tail`]:{display:\"block\"},[` > ${t}-item > ${t}-item-container > ${t}-item-content > ${t}-item-title`]:{\"&::after\":{display:\"none\"}},[`&${t}-small ${t}-item-container`]:{[`${t}-item-tail`]:{position:\"absolute\",top:0,insetInlineStart:e.stepsSmallIconSize/2-e.lineWidth,padding:`${n+e.marginXXS*1.5}px 0 ${e.marginXXS*1.5}px`},[`${t}-item-title`]:{lineHeight:`${n}px`}}}}},Mj=e=>{const{componentCls:t,inlineDotSize:n,inlineTitleColor:o,inlineTailColor:r}=e,l=e.paddingXS+e.lineWidth,a={[`${t}-item-container ${t}-item-content ${t}-item-title`]:{color:o}};return{[`&${t}-inline`]:{width:\"auto\",display:\"inline-flex\",[`${t}-item`]:{flex:\"none\",\"&-container\":{padding:`${l}px ${e.paddingXXS}px 0`,margin:`0 ${e.marginXXS/2}px`,borderRadius:e.borderRadiusSM,cursor:\"pointer\",transition:`background-color ${e.motionDurationMid}`,\"&:hover\":{background:e.controlItemBgHover},\"&[role='button']:hover\":{opacity:1}},\"&-icon\":{width:n,height:n,marginInlineStart:`calc(50% - ${n/2}px)`,[`> ${t}-icon`]:{top:0},[`${t}-icon-dot`]:{borderRadius:e.fontSizeSM/4}},\"&-content\":{width:\"auto\",marginTop:e.marginXS-e.lineWidth},\"&-title\":{color:o,fontSize:e.fontSizeSM,lineHeight:e.lineHeightSM,fontWeight:\"normal\",marginBottom:e.marginXXS/2},\"&-description\":{display:\"none\"},\"&-tail\":{marginInlineStart:0,top:l+n/2,transform:\"translateY(-50%)\",\"&:after\":{width:\"100%\",height:e.lineWidth,borderRadius:0,marginInlineStart:0,background:r}},[`&:first-child ${t}-item-tail`]:{width:\"50%\",marginInlineStart:\"50%\"},[`&:last-child ${t}-item-tail`]:{display:\"block\",width:\"50%\"},\"&-wait\":h({[`${t}-item-icon ${t}-icon ${t}-icon-dot`]:{backgroundColor:e.colorBorderBg,border:`${e.lineWidth}px ${e.lineType} ${r}`}},a),\"&-finish\":h({[`${t}-item-tail::after`]:{backgroundColor:r},[`${t}-item-icon ${t}-icon ${t}-icon-dot`]:{backgroundColor:r,border:`${e.lineWidth}px ${e.lineType} ${r}`}},a),\"&-error\":a,\"&-active, &-process\":h({[`${t}-item-icon`]:{width:n,height:n,marginInlineStart:`calc(50% - ${n/2}px)`,top:0}},a),[`&:not(${t}-item-active) > ${t}-item-container[role='button']:hover`]:{[`${t}-item-title`]:{color:o}}}}}};var Ql;(function(e){e.wait=\"wait\",e.process=\"process\",e.finish=\"finish\",e.error=\"error\"})(Ql||(Ql={}));const Ts=(e,t)=>{const n=`${t.componentCls}-item`,o=`${e}IconColor`,r=`${e}TitleColor`,l=`${e}DescriptionColor`,a=`${e}TailColor`,i=`${e}IconBgColor`,s=`${e}IconBorderColor`,c=`${e}DotColor`;return{[`${n}-${e} ${n}-icon`]:{backgroundColor:t[i],borderColor:t[s],[`> ${t.componentCls}-icon`]:{color:t[o],[`${t.componentCls}-icon-dot`]:{background:t[c]}}},[`${n}-${e}${n}-custom ${n}-icon`]:{[`> ${t.componentCls}-icon`]:{color:t[c]}},[`${n}-${e} > ${n}-container > ${n}-content > ${n}-title`]:{color:t[r],\"&::after\":{backgroundColor:t[a]}},[`${n}-${e} > ${n}-container > ${n}-content > ${n}-description`]:{color:t[l]},[`${n}-${e} > ${n}-container > ${n}-tail::after`]:{backgroundColor:t[a]}}},Aj=e=>{const{componentCls:t,motionDurationSlow:n}=e,o=`${t}-item`;return h(h(h(h(h(h({[o]:{position:\"relative\",display:\"inline-block\",flex:1,overflow:\"hidden\",verticalAlign:\"top\",\"&:last-child\":{flex:\"none\",[`> ${o}-container > ${o}-tail, > ${o}-container >  ${o}-content > ${o}-title::after`]:{display:\"none\"}}},[`${o}-container`]:{outline:\"none\"},[`${o}-icon, ${o}-content`]:{display:\"inline-block\",verticalAlign:\"top\"},[`${o}-icon`]:{width:e.stepsIconSize,height:e.stepsIconSize,marginTop:0,marginBottom:0,marginInlineStart:0,marginInlineEnd:e.marginXS,fontSize:e.stepsIconFontSize,fontFamily:e.fontFamily,lineHeight:`${e.stepsIconSize}px`,textAlign:\"center\",borderRadius:e.stepsIconSize,border:`${e.lineWidth}px ${e.lineType} transparent`,transition:`background-color ${n}, border-color ${n}`,[`${t}-icon`]:{position:\"relative\",top:e.stepsIconTop,color:e.colorPrimary,lineHeight:1}},[`${o}-tail`]:{position:\"absolute\",top:e.stepsIconSize/2-e.paddingXXS,insetInlineStart:0,width:\"100%\",\"&::after\":{display:\"inline-block\",width:\"100%\",height:e.lineWidth,background:e.colorSplit,borderRadius:e.lineWidth,transition:`background ${n}`,content:'\"\"'}},[`${o}-title`]:{position:\"relative\",display:\"inline-block\",paddingInlineEnd:e.padding,color:e.colorText,fontSize:e.fontSizeLG,lineHeight:`${e.stepsTitleLineHeight}px`,\"&::after\":{position:\"absolute\",top:e.stepsTitleLineHeight/2,insetInlineStart:\"100%\",display:\"block\",width:9999,height:e.lineWidth,background:e.processTailColor,content:'\"\"'}},[`${o}-subtitle`]:{display:\"inline\",marginInlineStart:e.marginXS,color:e.colorTextDescription,fontWeight:\"normal\",fontSize:e.fontSize},[`${o}-description`]:{color:e.colorTextDescription,fontSize:e.fontSize}},Ts(Ql.wait,e)),Ts(Ql.process,e)),{[`${o}-process > ${o}-container > ${o}-title`]:{fontWeight:e.fontWeightStrong}}),Ts(Ql.finish,e)),Ts(Ql.error,e)),{[`${o}${t}-next-error > ${t}-item-title::after`]:{background:e.colorError},[`${o}-disabled`]:{cursor:\"not-allowed\"}})},Dj=e=>{const{componentCls:t,motionDurationSlow:n}=e;return{[`& ${t}-item`]:{[`&:not(${t}-item-active)`]:{[`& > ${t}-item-container[role='button']`]:{cursor:\"pointer\",[`${t}-item`]:{[`&-title, &-subtitle, &-description, &-icon ${t}-icon`]:{transition:`color ${n}`}},\"&:hover\":{[`${t}-item`]:{\"&-title, &-subtitle, &-description\":{color:e.colorPrimary}}}},[`&:not(${t}-item-process)`]:{[`& > ${t}-item-container[role='button']:hover`]:{[`${t}-item`]:{\"&-icon\":{borderColor:e.colorPrimary,[`${t}-icon`]:{color:e.colorPrimary}}}}}}},[`&${t}-horizontal:not(${t}-label-vertical)`]:{[`${t}-item`]:{paddingInlineStart:e.padding,whiteSpace:\"nowrap\",\"&:first-child\":{paddingInlineStart:0},[`&:last-child ${t}-item-title`]:{paddingInlineEnd:0},\"&-tail\":{display:\"none\"},\"&-description\":{maxWidth:e.descriptionWidth,whiteSpace:\"normal\"}}}}},Rj=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h(h(h(h(h(h(h(h(h({},Ue(e)),{display:\"flex\",width:\"100%\",fontSize:0,textAlign:\"initial\"}),Aj(e)),Dj(e)),xj(e)),Oj(e)),Ej(e)),wj(e)),Pj(e)),_j(e)),Tj(e)),Ij(e)),Mj(e))}},kj=Ge(\"Steps\",e=>{const{wireframe:t,colorTextDisabled:n,fontSizeHeading3:o,fontSize:r,controlHeight:l,controlHeightLG:a,colorTextLightSolid:i,colorText:s,colorPrimary:c,colorTextLabel:u,colorTextDescription:d,colorTextQuaternary:p,colorFillContent:m,controlItemBgActive:g,colorError:v,colorBgContainer:y,colorBorderSecondary:b}=e,S=e.controlHeight,$=e.colorSplit,w=Le(e,{processTailColor:$,stepsNavArrowColor:n,stepsIconSize:S,stepsIconCustomSize:S,stepsIconCustomTop:0,stepsIconCustomFontSize:a/2,stepsIconTop:-.5,stepsIconFontSize:r,stepsTitleLineHeight:l,stepsSmallIconSize:o,stepsDotSize:l/4,stepsCurrentDotSize:a/4,stepsNavContentMaxWidth:\"auto\",processIconColor:i,processTitleColor:s,processDescriptionColor:s,processIconBgColor:c,processIconBorderColor:c,processDotColor:c,waitIconColor:t?n:u,waitTitleColor:d,waitDescriptionColor:d,waitTailColor:$,waitIconBgColor:t?y:m,waitIconBorderColor:t?n:\"transparent\",waitDotColor:n,finishIconColor:c,finishTitleColor:s,finishDescriptionColor:d,finishTailColor:c,finishIconBgColor:t?y:g,finishIconBorderColor:t?c:g,finishDotColor:c,errorIconColor:i,errorTitleColor:v,errorDescriptionColor:v,errorTailColor:$,errorIconBgColor:v,errorIconBorderColor:v,errorDotColor:v,stepsNavActiveColor:c,stepsProgressSize:a,inlineDotSize:6,inlineTitleColor:p,inlineTailColor:b});return[Rj(w)]},{descriptionWidth:140}),Nj=()=>({prefixCls:String,iconPrefix:String,current:Number,initial:Number,percent:Number,responsive:ye(),items:ct(),labelPlacement:ke(),status:ke(),size:ke(),direction:ke(),progressDot:Fe([Boolean,Function]),type:ke(),onChange:de(),\"onUpdate:current\":de()}),Rf=ne({compatConfig:{MODE:3},name:\"ASteps\",inheritAttrs:!1,props:Ze(Nj(),{current:0,responsive:!0,labelPlacement:\"horizontal\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:r}=t;const{prefixCls:l,direction:a,configProvider:i}=Pe(\"steps\",e),[s,c]=kj(l),[,u]=br(),d=Ea(),p=I(()=>e.responsive&&d.value.xs?\"vertical\":e.direction),m=I(()=>i.getPrefixCls(\"\",e.iconPrefix)),g=$=>{r(\"update:current\",$),r(\"change\",$)},v=I(()=>e.type===\"inline\"),y=I(()=>v.value?void 0:e.percent),b=$=>{let{node:w,status:C}=$;if(C===\"process\"&&e.percent!==void 0){const _=e.size===\"small\"?u.value.controlHeight:u.value.controlHeightLG;return f(\"div\",{class:`${l.value}-progress-icon`},[f(Hg,{type:\"circle\",percent:y.value,size:_,strokeWidth:4,format:()=>null},null),w])}return w},S=I(()=>({finish:f(_u,{class:`${l.value}-finish-icon`},null),error:f(Wn,{class:`${l.value}-error-icon`},null)}));return()=>{const $=le({[`${l.value}-rtl`]:a.value===\"rtl\",[`${l.value}-with-progress`]:y.value!==void 0},n.class,c.value),w=(C,_)=>C.description?f(Ln,{title:C.description},{default:()=>[_]}):_;return s(f(Cj,A(A(A({icons:S.value},n),ot(e,[\"percent\",\"responsive\"])),{},{items:e.items,direction:p.value,prefixCls:l.value,iconPrefix:m.value,class:$,onChange:g,isInline:v.value,itemRender:v.value?w:void 0}),h({stepIcon:b},o)))}}}),yc=ne(h(h({compatConfig:{MODE:3}},J2),{name:\"AStep\",props:Q2()})),Bj=h(Rf,{Step:yc,install:e=>(e.component(Rf.name,Rf),e.component(yc.name,yc),e)}),Lj=e=>{const{componentCls:t}=e,n=`${t}-inner`;return{[t]:{[`&${t}-small`]:{minWidth:e.switchMinWidthSM,height:e.switchHeightSM,lineHeight:`${e.switchHeightSM}px`,[`${t}-inner`]:{paddingInlineStart:e.switchInnerMarginMaxSM,paddingInlineEnd:e.switchInnerMarginMinSM,[`${n}-checked`]:{marginInlineStart:`calc(-100% + ${e.switchPinSizeSM+e.switchPadding*2}px - ${e.switchInnerMarginMaxSM*2}px)`,marginInlineEnd:`calc(100% - ${e.switchPinSizeSM+e.switchPadding*2}px + ${e.switchInnerMarginMaxSM*2}px)`},[`${n}-unchecked`]:{marginTop:-e.switchHeightSM,marginInlineStart:0,marginInlineEnd:0}},[`${t}-handle`]:{width:e.switchPinSizeSM,height:e.switchPinSizeSM},[`${t}-loading-icon`]:{top:(e.switchPinSizeSM-e.switchLoadingIconSize)/2,fontSize:e.switchLoadingIconSize},[`&${t}-checked`]:{[`${t}-inner`]:{paddingInlineStart:e.switchInnerMarginMinSM,paddingInlineEnd:e.switchInnerMarginMaxSM,[`${n}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${n}-unchecked`]:{marginInlineStart:`calc(100% - ${e.switchPinSizeSM+e.switchPadding*2}px + ${e.switchInnerMarginMaxSM*2}px)`,marginInlineEnd:`calc(-100% + ${e.switchPinSizeSM+e.switchPadding*2}px - ${e.switchInnerMarginMaxSM*2}px)`}},[`${t}-handle`]:{insetInlineStart:`calc(100% - ${e.switchPinSizeSM+e.switchPadding}px)`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${n}`]:{[`${n}-unchecked`]:{marginInlineStart:e.marginXXS/2,marginInlineEnd:-e.marginXXS/2}},[`&${t}-checked ${n}`]:{[`${n}-checked`]:{marginInlineStart:-e.marginXXS/2,marginInlineEnd:e.marginXXS/2}}}}}}},Fj=e=>{const{componentCls:t}=e;return{[t]:{[`${t}-loading-icon${e.iconCls}`]:{position:\"relative\",top:(e.switchPinSize-e.fontSize)/2,color:e.switchLoadingIconColor,verticalAlign:\"top\"},[`&${t}-checked ${t}-loading-icon`]:{color:e.switchColor}}}},zj=e=>{const{componentCls:t}=e,n=`${t}-handle`;return{[t]:{[n]:{position:\"absolute\",top:e.switchPadding,insetInlineStart:e.switchPadding,width:e.switchPinSize,height:e.switchPinSize,transition:`all ${e.switchDuration} ease-in-out`,\"&::before\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:e.colorWhite,borderRadius:e.switchPinSize/2,boxShadow:e.switchHandleShadow,transition:`all ${e.switchDuration} ease-in-out`,content:'\"\"'}},[`&${t}-checked ${n}`]:{insetInlineStart:`calc(100% - ${e.switchPinSize+e.switchPadding}px)`},[`&:not(${t}-disabled):active`]:{[`${n}::before`]:{insetInlineEnd:e.switchHandleActiveInset,insetInlineStart:0},[`&${t}-checked ${n}::before`]:{insetInlineEnd:0,insetInlineStart:e.switchHandleActiveInset}}}}},Hj=e=>{const{componentCls:t}=e,n=`${t}-inner`;return{[t]:{[n]:{display:\"block\",overflow:\"hidden\",borderRadius:100,height:\"100%\",paddingInlineStart:e.switchInnerMarginMax,paddingInlineEnd:e.switchInnerMarginMin,transition:`padding-inline-start ${e.switchDuration} ease-in-out, padding-inline-end ${e.switchDuration} ease-in-out`,[`${n}-checked, ${n}-unchecked`]:{display:\"block\",color:e.colorTextLightSolid,fontSize:e.fontSizeSM,transition:`margin-inline-start ${e.switchDuration} ease-in-out, margin-inline-end ${e.switchDuration} ease-in-out`,pointerEvents:\"none\"},[`${n}-checked`]:{marginInlineStart:`calc(-100% + ${e.switchPinSize+e.switchPadding*2}px - ${e.switchInnerMarginMax*2}px)`,marginInlineEnd:`calc(100% - ${e.switchPinSize+e.switchPadding*2}px + ${e.switchInnerMarginMax*2}px)`},[`${n}-unchecked`]:{marginTop:-e.switchHeight,marginInlineStart:0,marginInlineEnd:0}},[`&${t}-checked ${n}`]:{paddingInlineStart:e.switchInnerMarginMin,paddingInlineEnd:e.switchInnerMarginMax,[`${n}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${n}-unchecked`]:{marginInlineStart:`calc(100% - ${e.switchPinSize+e.switchPadding*2}px + ${e.switchInnerMarginMax*2}px)`,marginInlineEnd:`calc(-100% + ${e.switchPinSize+e.switchPadding*2}px - ${e.switchInnerMarginMax*2}px)`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${n}`]:{[`${n}-unchecked`]:{marginInlineStart:e.switchPadding*2,marginInlineEnd:-e.switchPadding*2}},[`&${t}-checked ${n}`]:{[`${n}-checked`]:{marginInlineStart:-e.switchPadding*2,marginInlineEnd:e.switchPadding*2}}}}}},jj=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h({},Ue(e)),{position:\"relative\",display:\"inline-block\",boxSizing:\"border-box\",minWidth:e.switchMinWidth,height:e.switchHeight,lineHeight:`${e.switchHeight}px`,verticalAlign:\"middle\",background:e.colorTextQuaternary,border:\"0\",borderRadius:100,cursor:\"pointer\",transition:`all ${e.motionDurationMid}`,userSelect:\"none\",[`&:hover:not(${t}-disabled)`]:{background:e.colorTextTertiary}}),fr(e)),{[`&${t}-checked`]:{background:e.switchColor,[`&:hover:not(${t}-disabled)`]:{background:e.colorPrimaryHover}},[`&${t}-loading, &${t}-disabled`]:{cursor:\"not-allowed\",opacity:e.switchDisabledOpacity,\"*\":{boxShadow:\"none\",cursor:\"not-allowed\"}},[`&${t}-rtl`]:{direction:\"rtl\"}})}},Wj=Ge(\"Switch\",e=>{const t=e.fontSize*e.lineHeight,n=e.controlHeight/2,o=2,r=t-o*2,l=n-o*2,a=Le(e,{switchMinWidth:r*2+o*4,switchHeight:t,switchDuration:e.motionDurationMid,switchColor:e.colorPrimary,switchDisabledOpacity:e.opacityLoading,switchInnerMarginMin:r/2,switchInnerMarginMax:r+o+o*2,switchPadding:o,switchPinSize:r,switchBg:e.colorBgContainer,switchMinWidthSM:l*2+o*2,switchHeightSM:n,switchInnerMarginMinSM:l/2,switchInnerMarginMaxSM:l+o+o*2,switchPinSizeSM:l,switchHandleShadow:`0 2px 4px 0 ${new mt(\"#00230b\").setAlpha(.2).toRgbString()}`,switchLoadingIconSize:e.fontSizeIcon*.75,switchLoadingIconColor:`rgba(0, 0, 0, ${e.opacityLoading})`,switchHandleActiveInset:\"-30%\"});return[jj(a),Hj(a),zj(a),Fj(a),Lj(a)]}),Vj=hn(\"small\",\"default\"),Kj=()=>({id:String,prefixCls:String,size:W.oneOf(Vj),disabled:{type:Boolean,default:void 0},checkedChildren:W.any,unCheckedChildren:W.any,tabindex:W.oneOfType([W.string,W.number]),autofocus:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},checked:W.oneOfType([W.string,W.number,W.looseBool]),checkedValue:W.oneOfType([W.string,W.number,W.looseBool]).def(!0),unCheckedValue:W.oneOfType([W.string,W.number,W.looseBool]).def(!1),onChange:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onMouseup:{type:Function},\"onUpdate:checked\":{type:Function},onBlur:Function,onFocus:Function}),Gj=ne({compatConfig:{MODE:3},name:\"ASwitch\",__ANT_SWITCH:!0,inheritAttrs:!1,props:Kj(),slots:Object,setup(e,t){let{attrs:n,slots:o,expose:r,emit:l}=t;const a=Jt(),i=zn(),s=I(()=>{var O;return(O=e.disabled)!==null&&O!==void 0?O:i.value});wm(()=>{});const c=J(e.checked!==void 0?e.checked:n.defaultChecked),u=I(()=>c.value===e.checkedValue);pe(()=>e.checked,()=>{c.value=e.checked});const{prefixCls:d,direction:p,size:m}=Pe(\"switch\",e),[g,v]=Wj(d),y=J(),b=()=>{var O;(O=y.value)===null||O===void 0||O.focus()};r({focus:b,blur:()=>{var O;(O=y.value)===null||O===void 0||O.blur()}}),Ne(()=>{it(()=>{e.autofocus&&!s.value&&y.value.focus()})});const $=(O,M)=>{s.value||(l(\"update:checked\",O),l(\"change\",O,M),a.onFieldChange())},w=O=>{l(\"blur\",O)},C=O=>{b();const M=u.value?e.unCheckedValue:e.checkedValue;$(M,O),l(\"click\",M,O)},_=O=>{O.keyCode===we.LEFT?$(e.unCheckedValue,O):O.keyCode===we.RIGHT&&$(e.checkedValue,O),l(\"keydown\",O)},x=O=>{var M;(M=y.value)===null||M===void 0||M.blur(),l(\"mouseup\",O)},P=I(()=>({[`${d.value}-small`]:m.value===\"small\",[`${d.value}-loading`]:e.loading,[`${d.value}-checked`]:u.value,[`${d.value}-disabled`]:s.value,[d.value]:!0,[`${d.value}-rtl`]:p.value===\"rtl\",[v.value]:!0}));return()=>{var O;return g(f(Nv,null,{default:()=>[f(\"button\",A(A(A({},ot(e,[\"prefixCls\",\"checkedChildren\",\"unCheckedChildren\",\"checked\",\"autofocus\",\"checkedValue\",\"unCheckedValue\",\"id\",\"onChange\",\"onUpdate:checked\"])),n),{},{id:(O=e.id)!==null&&O!==void 0?O:a.id.value,onKeydown:_,onClick:C,onBlur:w,onMouseup:x,type:\"button\",role:\"switch\",\"aria-checked\":c.value,disabled:s.value||e.loading,class:[n.class,P.value],ref:y}),[f(\"div\",{class:`${d.value}-handle`},[e.loading?f(Qn,{class:`${d.value}-loading-icon`},null):null]),f(\"span\",{class:`${d.value}-inner`},[f(\"span\",{class:`${d.value}-inner-checked`},[Qt(o,e,\"checkedChildren\")]),f(\"span\",{class:`${d.value}-inner-unchecked`},[Qt(o,e,\"unCheckedChildren\")])])])]}))}}}),Xj=Dt(Gj),e_=Symbol(\"TableContextProps\"),Uj=e=>{Qe(e_,e)},Yo=()=>Je(e_,{}),Yj=\"RC_TABLE_KEY\";function t_(e){return e==null?[]:Array.isArray(e)?e:[e]}function n_(e,t){if(!t&&typeof t!=\"number\")return e;const n=t_(t);let o=e;for(let r=0;r<n.length;r+=1){if(!o)return null;const l=n[r];o=o[l]}return o}function Id(e){const t=[],n={};return e.forEach(o=>{const{key:r,dataIndex:l}=o||{};let a=r||t_(l).join(\"-\")||Yj;for(;n[a];)a=`${a}_next`;n[a]=!0,t.push(a)}),t}function qj(){const e={};function t(l,a){a&&Object.keys(a).forEach(i=>{const s=a[i];s&&typeof s==\"object\"?(l[i]=l[i]||{},t(l[i],s)):l[i]=s})}for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return o.forEach(l=>{t(e,l)}),e}function lm(e){return e!=null}const o_=Symbol(\"SlotsContextProps\"),Zj=e=>{Qe(o_,e)},Vg=()=>Je(o_,I(()=>({}))),r_=Symbol(\"ContextProps\"),Qj=e=>{Qe(r_,e)},Jj=()=>Je(r_,{onResizeColumn:()=>{}}),sa=\"RC_TABLE_INTERNAL_COL_DEFINE\",l_=Symbol(\"HoverContextProps\"),eW=e=>{Qe(l_,e)},tW=()=>Je(l_,{startRow:ee(-1),endRow:ee(-1),onHover(){}}),am=ee(!1),nW=()=>{Ne(()=>{am.value=am.value||wg(\"position\",\"sticky\")})},oW=()=>am;var rW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function lW(e,t,n,o){const r=e+t-1;return e<=o&&r>=n}function aW(e){return e&&typeof e==\"object\"&&!Array.isArray(e)&&!gn(e)}const Pd=ne({name:\"Cell\",props:[\"prefixCls\",\"record\",\"index\",\"renderIndex\",\"dataIndex\",\"customRender\",\"component\",\"colSpan\",\"rowSpan\",\"fixLeft\",\"fixRight\",\"firstFixLeft\",\"lastFixLeft\",\"firstFixRight\",\"lastFixRight\",\"appendNode\",\"additionalProps\",\"ellipsis\",\"align\",\"rowType\",\"isSticky\",\"column\",\"cellType\",\"transformCellText\"],setup(e,t){let{slots:n}=t;const o=Vg(),{onHover:r,startRow:l,endRow:a}=tW(),i=I(()=>{var v,y,b,S;return(b=(v=e.colSpan)!==null&&v!==void 0?v:(y=e.additionalProps)===null||y===void 0?void 0:y.colSpan)!==null&&b!==void 0?b:(S=e.additionalProps)===null||S===void 0?void 0:S.colspan}),s=I(()=>{var v,y,b,S;return(b=(v=e.rowSpan)!==null&&v!==void 0?v:(y=e.additionalProps)===null||y===void 0?void 0:y.rowSpan)!==null&&b!==void 0?b:(S=e.additionalProps)===null||S===void 0?void 0:S.rowspan}),c=Un(()=>{const{index:v}=e;return lW(v,s.value||1,l.value,a.value)}),u=oW(),d=(v,y)=>{var b;const{record:S,index:$,additionalProps:w}=e;S&&r($,$+y-1),(b=w?.onMouseenter)===null||b===void 0||b.call(w,v)},p=v=>{var y;const{record:b,additionalProps:S}=e;b&&r(-1,-1),(y=S?.onMouseleave)===null||y===void 0||y.call(S,v)},m=v=>{const y=kt(v)[0];return gn(y)?y.type===Ai?y.children:Array.isArray(y.children)?m(y.children):void 0:y},g=ee(null);return pe([c,()=>e.prefixCls,g],()=>{const v=Tn(g.value);v&&(c.value?ou(v,`${e.prefixCls}-cell-row-hover`):ru(v,`${e.prefixCls}-cell-row-hover`))}),()=>{var v,y,b,S,$,w;const{prefixCls:C,record:_,index:x,renderIndex:P,dataIndex:O,customRender:M,component:E=\"td\",fixLeft:R,fixRight:D,firstFixLeft:z,lastFixLeft:T,firstFixRight:k,lastFixRight:B,appendNode:L=(v=n.appendNode)===null||v===void 0?void 0:v.call(n),additionalProps:N={},ellipsis:F,align:j,rowType:H,isSticky:K,column:G={},cellType:V}=e,q=`${C}-cell`;let Z,oe;const re=(y=n.default)===null||y===void 0?void 0:y.call(n);if(lm(re)||V===\"header\")oe=re;else{const te=n_(_,O);if(oe=te,M){const ae=M({text:te,value:te,record:_,index:x,renderIndex:P,column:G.__originColumn__});aW(ae)?(oe=ae.children,Z=ae.props):oe=ae}if(!(sa in G)&&V===\"body\"&&o.value.bodyCell&&!(!((b=G.slots)===null||b===void 0)&&b.customRender)){const ae=Wu(o.value,\"bodyCell\",{text:te,value:te,record:_,index:x,column:G.__originColumn__},()=>{const fe=oe===void 0?te:oe;return[typeof fe==\"object\"&&Kt(fe)||typeof fe!=\"object\"?fe:null]});oe=$t(ae)}e.transformCellText&&(oe=e.transformCellText({text:oe,record:_,index:x,column:G.__originColumn__}))}typeof oe==\"object\"&&!Array.isArray(oe)&&!gn(oe)&&(oe=null),F&&(T||k)&&(oe=f(\"span\",{class:`${q}-content`},[oe])),Array.isArray(oe)&&oe.length===1&&(oe=oe[0]);const Y=Z||{},{colSpan:Q,rowSpan:ce,style:ue,class:be}=Y,Ce=rW(Y,[\"colSpan\",\"rowSpan\",\"style\",\"class\"]),ge=(S=Q!==void 0?Q:i.value)!==null&&S!==void 0?S:1,Se=($=ce!==void 0?ce:s.value)!==null&&$!==void 0?$:1;if(ge===0||Se===0)return null;const X={},U=typeof R==\"number\"&&u.value,ie=typeof D==\"number\"&&u.value;U&&(X.position=\"sticky\",X.left=`${R}px`),ie&&(X.position=\"sticky\",X.right=`${D}px`);const ve={};j&&(ve.textAlign=j);let me;const he=F===!0?{showTitle:!0}:F;he&&(he.showTitle||H===\"header\")&&(typeof oe==\"string\"||typeof oe==\"number\"?me=oe.toString():gn(oe)&&(me=m([oe])));const se=h(h(h({title:me},Ce),N),{colSpan:ge!==1?ge:null,rowSpan:Se!==1?Se:null,class:le(q,{[`${q}-fix-left`]:U&&u.value,[`${q}-fix-left-first`]:z&&u.value,[`${q}-fix-left-last`]:T&&u.value,[`${q}-fix-right`]:ie&&u.value,[`${q}-fix-right-first`]:k&&u.value,[`${q}-fix-right-last`]:B&&u.value,[`${q}-ellipsis`]:F,[`${q}-with-append`]:L,[`${q}-fix-sticky`]:(U||ie)&&K&&u.value},N.class,be),onMouseenter:te=>{d(te,Se)},onMouseleave:p,style:[N.style,ve,X,ue]});return f(E,A(A({},se),{},{ref:g}),{default:()=>[L,oe,(w=n.dragHandle)===null||w===void 0?void 0:w.call(n)]})}}});function Kg(e,t,n,o,r){const l=n[e]||{},a=n[t]||{};let i,s;l.fixed===\"left\"?i=o.left[e]:a.fixed===\"right\"&&(s=o.right[t]);let c=!1,u=!1,d=!1,p=!1;const m=n[t+1],g=n[e-1];return r===\"rtl\"?i!==void 0?p=!(g&&g.fixed===\"left\"):s!==void 0&&(d=!(m&&m.fixed===\"right\")):i!==void 0?c=!(m&&m.fixed===\"left\"):s!==void 0&&(u=!(g&&g.fixed===\"right\")),{fixLeft:i,fixRight:s,lastFixLeft:c,firstFixRight:u,lastFixRight:d,firstFixLeft:p,isSticky:o.isSticky}}const eS={mouse:{move:\"mousemove\",stop:\"mouseup\"},touch:{move:\"touchmove\",stop:\"touchend\"}},tS=50,iW=ne({compatConfig:{MODE:3},name:\"DragHandle\",props:{prefixCls:String,width:{type:Number,required:!0},minWidth:{type:Number,default:tS},maxWidth:{type:Number,default:1/0},column:{type:Object,default:void 0}},setup(e){let t=0,n={remove:()=>{}},o={remove:()=>{}};const r=()=>{n.remove(),o.remove()};Mn(()=>{r()}),ze(()=>{Ot(!isNaN(e.width),\"Table\",\"width must be a number when use resizable\")});const{onResizeColumn:l}=Jj(),a=I(()=>typeof e.minWidth==\"number\"&&!isNaN(e.minWidth)?e.minWidth:tS),i=I(()=>typeof e.maxWidth==\"number\"&&!isNaN(e.maxWidth)?e.maxWidth:1/0),s=fn();let c=0;const u=ee(!1);let d;const p=$=>{let w=0;$.touches?$.touches.length?w=$.touches[0].pageX:w=$.changedTouches[0].pageX:w=$.pageX;const C=t-w;let _=Math.max(c-C,a.value);_=Math.min(_,i.value),qe.cancel(d),d=qe(()=>{l(_,e.column.__originColumn__)})},m=$=>{p($)},g=$=>{u.value=!1,p($),r()},v=($,w)=>{u.value=!0,r(),c=s.vnode.el.parentNode.getBoundingClientRect().width,!($ instanceof MouseEvent&&$.which!==1)&&($.stopPropagation&&$.stopPropagation(),t=$.touches?$.touches[0].pageX:$.pageX,n=Rt(document.documentElement,w.move,m),o=Rt(document.documentElement,w.stop,g))},y=$=>{$.stopPropagation(),$.preventDefault(),v($,eS.mouse)},b=$=>{$.stopPropagation(),$.preventDefault(),v($,eS.touch)},S=$=>{$.stopPropagation(),$.preventDefault()};return()=>{const{prefixCls:$}=e,w={[Yt?\"onTouchstartPassive\":\"onTouchstart\"]:C=>b(C)};return f(\"div\",A(A({class:`${$}-resize-handle ${u.value?\"dragging\":\"\"}`,onMousedown:y},w),{},{onClick:S}),[f(\"div\",{class:`${$}-resize-handle-line`},null)])}}}),sW=ne({name:\"HeaderRow\",props:[\"cells\",\"stickyOffsets\",\"flattenColumns\",\"rowComponent\",\"cellComponent\",\"index\",\"customHeaderRow\"],setup(e){const t=Yo();return()=>{const{prefixCls:n,direction:o}=t,{cells:r,stickyOffsets:l,flattenColumns:a,rowComponent:i,cellComponent:s,customHeaderRow:c,index:u}=e;let d;c&&(d=c(r.map(m=>m.column),u));const p=Id(r.map(m=>m.column));return f(i,d,{default:()=>[r.map((m,g)=>{const{column:v}=m,y=Kg(m.colStart,m.colEnd,a,l,o);let b;v&&v.customHeaderCell&&(b=m.column.customHeaderCell(v));const S=v;return f(Pd,A(A(A({},m),{},{cellType:\"header\",ellipsis:v.ellipsis,align:v.align,component:s,prefixCls:n,key:p[g]},y),{},{additionalProps:b,rowType:\"header\",column:v}),{default:()=>v.title,dragHandle:()=>S.resizable?f(iW,{prefixCls:n,width:S.width,minWidth:S.minWidth,maxWidth:S.maxWidth,column:S},null):null})})]})}}});function cW(e){const t=[];function n(r,l){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;t[a]=t[a]||[];let i=l;return r.filter(Boolean).map(c=>{const u={key:c.key,class:le(c.className,c.class),column:c,colStart:i};let d=1;const p=c.children;return p&&p.length>0&&(d=n(p,i,a+1).reduce((m,g)=>m+g,0),u.hasSubColumns=!0),\"colSpan\"in c&&({colSpan:d}=c),\"rowSpan\"in c&&(u.rowSpan=c.rowSpan),u.colSpan=d,u.colEnd=u.colStart+d-1,t[a].push(u),i+=d,d})}n(e,0);const o=t.length;for(let r=0;r<o;r+=1)t[r].forEach(l=>{!(\"rowSpan\"in l)&&!l.hasSubColumns&&(l.rowSpan=o-r)});return t}const nS=ne({name:\"TableHeader\",inheritAttrs:!1,props:[\"columns\",\"flattenColumns\",\"stickyOffsets\",\"customHeaderRow\"],setup(e){const t=Yo(),n=I(()=>cW(e.columns));return()=>{const{prefixCls:o,getComponent:r}=t,{stickyOffsets:l,flattenColumns:a,customHeaderRow:i}=e,s=r([\"header\",\"wrapper\"],\"thead\"),c=r([\"header\",\"row\"],\"tr\"),u=r([\"header\",\"cell\"],\"th\");return f(s,{class:`${o}-thead`},{default:()=>[n.value.map((d,p)=>f(sW,{key:p,flattenColumns:a,cells:d,stickyOffsets:l,rowComponent:c,cellComponent:u,customHeaderRow:i,index:p},null))]})}}}),a_=Symbol(\"ExpandedRowProps\"),uW=e=>{Qe(a_,e)},dW=()=>Je(a_,{}),i_=ne({name:\"ExpandedRow\",inheritAttrs:!1,props:[\"prefixCls\",\"component\",\"cellComponent\",\"expanded\",\"colSpan\",\"isEmpty\"],setup(e,t){let{slots:n,attrs:o}=t;const r=Yo(),l=dW(),{fixHeader:a,fixColumn:i,componentWidth:s,horizonScroll:c}=l;return()=>{const{prefixCls:u,component:d,cellComponent:p,expanded:m,colSpan:g,isEmpty:v}=e;return f(d,{class:o.class,style:{display:m?null:\"none\"}},{default:()=>[f(Pd,{component:p,prefixCls:u,colSpan:g},{default:()=>{var y;let b=(y=n.default)===null||y===void 0?void 0:y.call(n);return(v?c.value:i.value)&&(b=f(\"div\",{style:{width:`${s.value-(a.value?r.scrollbarSize:0)}px`,position:\"sticky\",left:0,overflow:\"hidden\"},class:`${u}-expanded-row-fixed`},[b])),b}})]})}}}),fW=ne({name:\"MeasureCell\",props:[\"columnKey\"],setup(e,t){let{emit:n}=t;const o=J();return Ne(()=>{o.value&&n(\"columnResize\",e.columnKey,o.value.offsetWidth)}),()=>f(go,{onResize:r=>{let{offsetWidth:l}=r;n(\"columnResize\",e.columnKey,l)}},{default:()=>[f(\"td\",{ref:o,style:{padding:0,border:0,height:0}},[f(\"div\",{style:{height:0,overflow:\"hidden\"}},[wt(\" \")])])]})}}),s_=Symbol(\"BodyContextProps\"),pW=e=>{Qe(s_,e)},c_=()=>Je(s_,{}),mW=ne({name:\"BodyRow\",inheritAttrs:!1,props:[\"record\",\"index\",\"renderIndex\",\"recordKey\",\"expandedKeys\",\"rowComponent\",\"cellComponent\",\"customRow\",\"rowExpandable\",\"indent\",\"rowKey\",\"getRowKey\",\"childrenColumnName\"],setup(e,t){let{attrs:n}=t;const o=Yo(),r=c_(),l=ee(!1),a=I(()=>e.expandedKeys&&e.expandedKeys.has(e.recordKey));ze(()=>{a.value&&(l.value=!0)});const i=I(()=>r.expandableType===\"row\"&&(!e.rowExpandable||e.rowExpandable(e.record))),s=I(()=>r.expandableType===\"nest\"),c=I(()=>e.childrenColumnName&&e.record&&e.record[e.childrenColumnName]),u=I(()=>i.value||s.value),d=(y,b)=>{r.onTriggerExpand(y,b)},p=I(()=>{var y;return((y=e.customRow)===null||y===void 0?void 0:y.call(e,e.record,e.index))||{}}),m=function(y){var b,S;r.expandRowByClick&&u.value&&d(e.record,y);for(var $=arguments.length,w=new Array($>1?$-1:0),C=1;C<$;C++)w[C-1]=arguments[C];(S=(b=p.value)===null||b===void 0?void 0:b.onClick)===null||S===void 0||S.call(b,y,...w)},g=I(()=>{const{record:y,index:b,indent:S}=e,{rowClassName:$}=r;return typeof $==\"string\"?$:typeof $==\"function\"?$(y,b,S):\"\"}),v=I(()=>Id(r.flattenColumns));return()=>{const{class:y,style:b}=n,{record:S,index:$,rowKey:w,indent:C=0,rowComponent:_,cellComponent:x}=e,{prefixCls:P,fixedInfoList:O,transformCellText:M}=o,{flattenColumns:E,expandedRowClassName:R,indentSize:D,expandIcon:z,expandedRowRender:T,expandIconColumnIndex:k}=r,B=f(_,A(A({},p.value),{},{\"data-row-key\":w,class:le(y,`${P}-row`,`${P}-row-level-${C}`,g.value,p.value.class),style:[b,p.value.style],onClick:m}),{default:()=>[E.map((N,F)=>{const{customRender:j,dataIndex:H,className:K}=N,G=v[F],V=O[F];let q;N.customCell&&(q=N.customCell(S,$,N));const Z=F===(k||0)&&s.value?f(Ve,null,[f(\"span\",{style:{paddingLeft:`${D*C}px`},class:`${P}-row-indent indent-level-${C}`},null),z({prefixCls:P,expanded:a.value,expandable:c.value,record:S,onExpand:d})]):null;return f(Pd,A(A({cellType:\"body\",class:K,ellipsis:N.ellipsis,align:N.align,component:x,prefixCls:P,key:G,record:S,index:$,renderIndex:e.renderIndex,dataIndex:H,customRender:j},V),{},{additionalProps:q,column:N,transformCellText:M,appendNode:Z}),null)})]});let L;if(i.value&&(l.value||a.value)){const N=T({record:S,index:$,indent:C+1,expanded:a.value}),F=R&&R(S,$,C);L=f(i_,{expanded:a.value,class:le(`${P}-expanded-row`,`${P}-expanded-row-level-${C+1}`,F),prefixCls:P,component:_,cellComponent:x,colSpan:E.length,isEmpty:!1},{default:()=>[N]})}return f(Ve,null,[B,L])}}});function u_(e,t,n,o,r,l){const a=[];a.push({record:e,indent:t,index:l});const i=r(e),s=o?.has(i);if(e&&Array.isArray(e[n])&&s)for(let c=0;c<e[n].length;c+=1){const u=u_(e[n][c],t+1,n,o,r,c);a.push(...u)}return a}function vW(e,t,n,o){return I(()=>{const l=t.value,a=n.value,i=e.value;if(a?.size){const s=[];for(let c=0;c<i?.length;c+=1){const u=i[c];s.push(...u_(u,0,l,a,o.value,c))}return s}return i?.map((s,c)=>({record:s,indent:0,index:c}))})}const d_=Symbol(\"ResizeContextProps\"),gW=e=>{Qe(d_,e)},hW=()=>Je(d_,{onColumnResize:()=>{}}),bW=ne({name:\"TableBody\",props:[\"data\",\"getRowKey\",\"measureColumnWidth\",\"expandedKeys\",\"customRow\",\"rowExpandable\",\"childrenColumnName\"],setup(e,t){let{slots:n}=t;const o=hW(),r=Yo(),l=c_(),a=vW(We(e,\"data\"),We(e,\"childrenColumnName\"),We(e,\"expandedKeys\"),We(e,\"getRowKey\")),i=ee(-1),s=ee(-1);let c;return eW({startRow:i,endRow:s,onHover:(u,d)=>{clearTimeout(c),c=setTimeout(()=>{i.value=u,s.value=d},100)}}),()=>{var u;const{data:d,getRowKey:p,measureColumnWidth:m,expandedKeys:g,customRow:v,rowExpandable:y,childrenColumnName:b}=e,{onColumnResize:S}=o,{prefixCls:$,getComponent:w}=r,{flattenColumns:C}=l,_=w([\"body\",\"wrapper\"],\"tbody\"),x=w([\"body\",\"row\"],\"tr\"),P=w([\"body\",\"cell\"],\"td\");let O;d.length?O=a.value.map((E,R)=>{const{record:D,indent:z,index:T}=E,k=p(D,R);return f(mW,{key:k,rowKey:k,record:D,recordKey:k,index:R,renderIndex:T,rowComponent:x,cellComponent:P,expandedKeys:g,customRow:v,getRowKey:p,rowExpandable:y,childrenColumnName:b,indent:z},null)}):O=f(i_,{expanded:!0,class:`${$}-placeholder`,prefixCls:$,component:x,cellComponent:P,colSpan:C.length,isEmpty:!0},{default:()=>[(u=n.emptyNode)===null||u===void 0?void 0:u.call(n)]});const M=Id(C);return f(_,{class:`${$}-tbody`},{default:()=>[m&&f(\"tr\",{\"aria-hidden\":\"true\",class:`${$}-measure-row`,style:{height:0,fontSize:0}},[M.map(E=>f(fW,{key:E,columnKey:E,onColumnResize:S},null))]),O]})}}}),Pr={};var yW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function im(e){return e.reduce((t,n)=>{const{fixed:o}=n,r=o===!0?\"left\":o,l=n.children;return l&&l.length>0?[...t,...im(l).map(a=>h({fixed:r},a))]:[...t,h(h({},n),{fixed:r})]},[])}function SW(e){return e.map(t=>{const{fixed:n}=t,o=yW(t,[\"fixed\"]);let r=n;return n===\"left\"?r=\"right\":n===\"right\"&&(r=\"left\"),h({fixed:r},o)})}function $W(e,t){let{prefixCls:n,columns:o,expandable:r,expandedKeys:l,getRowKey:a,onTriggerExpand:i,expandIcon:s,rowExpandable:c,expandIconColumnIndex:u,direction:d,expandRowByClick:p,expandColumnWidth:m,expandFixed:g}=e;const v=Vg(),y=I(()=>{if(r.value){let $=o.value.slice();if(!$.includes(Pr)){const D=u.value||0;D>=0&&$.splice(D,0,Pr)}const w=$.indexOf(Pr);$=$.filter((D,z)=>D!==Pr||z===w);const C=o.value[w];let _;(g.value===\"left\"||g.value)&&!u.value?_=\"left\":(g.value===\"right\"||g.value)&&u.value===o.value.length?_=\"right\":_=C?C.fixed:null;const x=l.value,P=c.value,O=s.value,M=n.value,E=p.value,R={[sa]:{class:`${n.value}-expand-icon-col`,columnType:\"EXPAND_COLUMN\"},title:Wu(v.value,\"expandColumnTitle\",{},()=>[\"\"]),fixed:_,class:`${n.value}-row-expand-icon-cell`,width:m.value,customRender:D=>{let{record:z,index:T}=D;const k=a.value(z,T),B=x.has(k),L=P?P(z):!0,N=O({prefixCls:M,expanded:B,expandable:L,record:z,onExpand:i});return E?f(\"span\",{onClick:F=>F.stopPropagation()},[N]):N}};return $.map(D=>D===Pr?R:D)}return o.value.filter($=>$!==Pr)}),b=I(()=>{let $=y.value;return t.value&&($=t.value($)),$.length||($=[{customRender:()=>null}]),$}),S=I(()=>d.value===\"rtl\"?SW(im(b.value)):im(b.value));return[b,S]}function f_(e){const t=ee(e);let n;const o=ee([]);function r(l){o.value.push(l),qe.cancel(n),n=qe(()=>{const a=o.value;o.value=[],a.forEach(i=>{t.value=i(t.value)})})}return et(()=>{qe.cancel(n)}),[t,r]}function CW(e){const t=J(null),n=J();function o(){clearTimeout(n.value)}function r(a){t.value=a,o(),n.value=setTimeout(()=>{t.value=null,n.value=void 0},100)}function l(){return t.value}return et(()=>{o()}),[r,l]}function xW(e,t,n){return I(()=>{const r=[],l=[];let a=0,i=0;const s=e.value,c=t.value,u=n.value;for(let d=0;d<c;d+=1)if(u===\"rtl\"){l[d]=i,i+=s[d]||0;const p=c-d-1;r[p]=a,a+=s[p]||0}else{r[d]=a,a+=s[d]||0;const p=c-d-1;l[p]=i,i+=s[p]||0}return{left:r,right:l}})}var wW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function p_(e){let{colWidths:t,columns:n,columCount:o}=e;const r=[],l=o||n.length;let a=!1;for(let i=l-1;i>=0;i-=1){const s=t[i],c=n&&n[i],u=c&&c[sa];if(s||u||a){const d=u||{},{columnType:p}=d,m=wW(d,[\"columnType\"]);r.unshift(f(\"col\",A({key:i,style:{width:typeof s==\"number\"?`${s}px`:s}},m),null)),a=!0}}return f(\"colgroup\",null,[r])}function sm(e,t){let{slots:n}=t;var o;return f(\"div\",null,[(o=n.default)===null||o===void 0?void 0:o.call(n)])}sm.displayName=\"Panel\";let _W=0;const IW=ne({name:\"TableSummary\",props:[\"fixed\"],setup(e,t){let{slots:n}=t;const o=Yo(),r=`table-summary-uni-key-${++_W}`,l=I(()=>e.fixed===\"\"||e.fixed);return ze(()=>{o.summaryCollect(r,l.value)}),et(()=>{o.summaryCollect(r,!1)}),()=>{var a;return(a=n.default)===null||a===void 0?void 0:a.call(n)}}}),PW=ne({compatConfig:{MODE:3},name:\"ATableSummaryRow\",setup(e,t){let{slots:n}=t;return()=>{var o;return f(\"tr\",null,[(o=n.default)===null||o===void 0?void 0:o.call(n)])}}}),m_=Symbol(\"SummaryContextProps\"),TW=e=>{Qe(m_,e)},OW=()=>Je(m_,{}),EW=ne({name:\"ATableSummaryCell\",props:[\"index\",\"colSpan\",\"rowSpan\",\"align\"],setup(e,t){let{attrs:n,slots:o}=t;const r=Yo(),l=OW();return()=>{const{index:a,colSpan:i=1,rowSpan:s,align:c}=e,{prefixCls:u,direction:d}=r,{scrollColumnIndex:p,stickyOffsets:m,flattenColumns:g}=l,y=a+i-1+1===p?i+1:i,b=Kg(a,a+y-1,g,m,d);return f(Pd,A({class:n.class,index:a,component:\"td\",prefixCls:u,record:null,dataIndex:null,align:c,colSpan:y,rowSpan:s,customRender:()=>{var S;return(S=o.default)===null||S===void 0?void 0:S.call(o)}},b),null)}}}),Os=ne({name:\"TableFooter\",inheritAttrs:!1,props:[\"stickyOffsets\",\"flattenColumns\"],setup(e,t){let{slots:n}=t;const o=Yo();return TW(vt({stickyOffsets:We(e,\"stickyOffsets\"),flattenColumns:We(e,\"flattenColumns\"),scrollColumnIndex:I(()=>{const r=e.flattenColumns.length-1,l=e.flattenColumns[r];return l?.scrollbar?r:null})})),()=>{var r;const{prefixCls:l}=o;return f(\"tfoot\",{class:`${l}-summary`},[(r=n.default)===null||r===void 0?void 0:r.call(n)])}}}),MW=IW;function AW(e){let{prefixCls:t,record:n,onExpand:o,expanded:r,expandable:l}=e;const a=`${t}-row-expand-icon`;if(!l)return f(\"span\",{class:[a,`${t}-row-spaced`]},null);const i=s=>{o(n,s),s.stopPropagation()};return f(\"span\",{class:{[a]:!0,[`${t}-row-expanded`]:r,[`${t}-row-collapsed`]:!r},onClick:i},null)}function DW(e,t,n){const o=[];function r(l){(l||[]).forEach((a,i)=>{o.push(t(a,i)),r(a[n])})}return r(e),o}const RW=ne({name:\"StickyScrollBar\",inheritAttrs:!1,props:[\"offsetScroll\",\"container\",\"scrollBodyRef\",\"scrollBodySizeInfo\"],emits:[\"scroll\"],setup(e,t){let{emit:n,expose:o}=t;const r=Yo(),l=ee(0),a=ee(0),i=ee(0);ze(()=>{l.value=e.scrollBodySizeInfo.scrollWidth||0,a.value=e.scrollBodySizeInfo.clientWidth||0,i.value=l.value&&a.value*(a.value/l.value)},{flush:\"post\"});const s=ee(),[c,u]=f_({scrollLeft:0,isHiddenScrollBar:!0}),d=J({delta:0,x:0}),p=ee(!1),m=()=>{p.value=!1},g=x=>{d.value={delta:x.pageX-c.value.scrollLeft,x:0},p.value=!0,x.preventDefault()},v=x=>{const{buttons:P}=x||window?.event;if(!p.value||P===0){p.value&&(p.value=!1);return}let O=d.value.x+x.pageX-d.value.x-d.value.delta;O<=0&&(O=0),O+i.value>=a.value&&(O=a.value-i.value),n(\"scroll\",{scrollLeft:O/a.value*(l.value+2)}),d.value.x=x.pageX},y=()=>{if(!e.scrollBodyRef.value)return;const x=Hc(e.scrollBodyRef.value).top,P=x+e.scrollBodyRef.value.offsetHeight,O=e.container===window?document.documentElement.scrollTop+window.innerHeight:Hc(e.container).top+e.container.clientHeight;P-zc()<=O||x>=O-e.offsetScroll?u(M=>h(h({},M),{isHiddenScrollBar:!0})):u(M=>h(h({},M),{isHiddenScrollBar:!1}))};o({setScrollLeft:x=>{u(P=>h(h({},P),{scrollLeft:x/l.value*a.value||0}))}});let S=null,$=null,w=null,C=null;Ne(()=>{S=Rt(document.body,\"mouseup\",m,!1),$=Rt(document.body,\"mousemove\",v,!1),w=Rt(window,\"resize\",y,!1)}),Tm(()=>{it(()=>{y()})}),Ne(()=>{setTimeout(()=>{pe([i,p],()=>{y()},{immediate:!0,flush:\"post\"})})}),pe(()=>e.container,()=>{C?.remove(),C=Rt(e.container,\"scroll\",y,!1)},{immediate:!0,flush:\"post\"}),et(()=>{S?.remove(),$?.remove(),C?.remove(),w?.remove()}),pe(()=>h({},c.value),(x,P)=>{x.isHiddenScrollBar!==P?.isHiddenScrollBar&&!x.isHiddenScrollBar&&u(O=>{const M=e.scrollBodyRef.value;return M?h(h({},O),{scrollLeft:M.scrollLeft/M.scrollWidth*M.clientWidth}):O})},{immediate:!0});const _=zc();return()=>{if(l.value<=a.value||!i.value||c.value.isHiddenScrollBar)return null;const{prefixCls:x}=r;return f(\"div\",{style:{height:`${_}px`,width:`${a.value}px`,bottom:`${e.offsetScroll}px`},class:`${x}-sticky-scroll`},[f(\"div\",{onMousedown:g,ref:s,class:le(`${x}-sticky-scroll-bar`,{[`${x}-sticky-scroll-bar-active`]:p.value}),style:{width:`${i.value}px`,transform:`translate3d(${c.value.scrollLeft}px, 0, 0)`}},null)])}}}),oS=wn()?window:null;function kW(e,t){return I(()=>{const{offsetHeader:n=0,offsetSummary:o=0,offsetScroll:r=0,getContainer:l=()=>oS}=typeof e.value==\"object\"?e.value:{},a=l()||oS,i=!!e.value;return{isSticky:i,stickyClassName:i?`${t.value}-sticky-holder`:\"\",offsetHeader:n,offsetSummary:o,offsetScroll:r,container:a}})}function NW(e,t){return I(()=>{const n=[],o=e.value,r=t.value;for(let l=0;l<r;l+=1){const a=o[l];if(a!==void 0)n[l]=a;else return null}return n})}const rS=ne({name:\"FixedHolder\",inheritAttrs:!1,props:[\"columns\",\"flattenColumns\",\"stickyOffsets\",\"customHeaderRow\",\"noData\",\"maxContentScroll\",\"colWidths\",\"columCount\",\"direction\",\"fixHeader\",\"stickyTopOffset\",\"stickyBottomOffset\",\"stickyClassName\"],emits:[\"scroll\"],setup(e,t){let{attrs:n,slots:o,emit:r}=t;const l=Yo(),a=I(()=>l.isSticky&&!e.fixHeader?0:l.scrollbarSize),i=J(),s=v=>{const{currentTarget:y,deltaX:b}=v;b&&(r(\"scroll\",{currentTarget:y,scrollLeft:y.scrollLeft+b}),v.preventDefault())},c=J();Ne(()=>{it(()=>{c.value=Rt(i.value,\"wheel\",s)})}),et(()=>{var v;(v=c.value)===null||v===void 0||v.remove()});const u=I(()=>e.flattenColumns.every(v=>v.width&&v.width!==0&&v.width!==\"0px\")),d=J([]),p=J([]);ze(()=>{const v=e.flattenColumns[e.flattenColumns.length-1],y={fixed:v?v.fixed:null,scrollbar:!0,customHeaderCell:()=>({class:`${l.prefixCls}-cell-scrollbar`})};d.value=a.value?[...e.columns,y]:e.columns,p.value=a.value?[...e.flattenColumns,y]:e.flattenColumns});const m=I(()=>{const{stickyOffsets:v,direction:y}=e,{right:b,left:S}=v;return h(h({},v),{left:y===\"rtl\"?[...S.map($=>$+a.value),0]:S,right:y===\"rtl\"?b:[...b.map($=>$+a.value),0],isSticky:l.isSticky})}),g=NW(We(e,\"colWidths\"),We(e,\"columCount\"));return()=>{var v;const{noData:y,columCount:b,stickyTopOffset:S,stickyBottomOffset:$,stickyClassName:w,maxContentScroll:C}=e,{isSticky:_}=l;return f(\"div\",{style:h({overflow:\"hidden\"},_?{top:`${S}px`,bottom:`${$}px`}:{}),ref:i,class:le(n.class,{[w]:!!w})},[f(\"table\",{style:{tableLayout:\"fixed\",visibility:y||g.value?null:\"hidden\"}},[(!y||!C||u.value)&&f(p_,{colWidths:g.value?[...g.value,a.value]:[],columCount:b+1,columns:p.value},null),(v=o.default)===null||v===void 0?void 0:v.call(o,h(h({},e),{stickyOffsets:m.value,columns:d.value,flattenColumns:p.value}))])])}}});function lS(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return vt(gP(n.map(r=>[r,We(e,r)])))}const BW=[],LW={},cm=\"rc-table-internal-hook\",FW=ne({name:\"VcTable\",inheritAttrs:!1,props:[\"prefixCls\",\"data\",\"columns\",\"rowKey\",\"tableLayout\",\"scroll\",\"rowClassName\",\"title\",\"footer\",\"id\",\"showHeader\",\"components\",\"customRow\",\"customHeaderRow\",\"direction\",\"expandFixed\",\"expandColumnWidth\",\"expandedRowKeys\",\"defaultExpandedRowKeys\",\"expandedRowRender\",\"expandRowByClick\",\"expandIcon\",\"onExpand\",\"onExpandedRowsChange\",\"onUpdate:expandedRowKeys\",\"defaultExpandAllRows\",\"indentSize\",\"expandIconColumnIndex\",\"expandedRowClassName\",\"childrenColumnName\",\"rowExpandable\",\"sticky\",\"transformColumns\",\"internalHooks\",\"internalRefs\",\"canExpandable\",\"onUpdateInternalRefs\",\"transformCellText\"],emits:[\"expand\",\"expandedRowsChange\",\"updateInternalRefs\",\"update:expandedRowKeys\"],setup(e,t){let{attrs:n,slots:o,emit:r}=t;const l=I(()=>e.data||BW),a=I(()=>!!l.value.length),i=I(()=>qj(e.components,{})),s=(ae,fe)=>n_(i.value,ae)||fe,c=I(()=>{const ae=e.rowKey;return typeof ae==\"function\"?ae:fe=>fe&&fe[ae]}),u=I(()=>e.expandIcon||AW),d=I(()=>e.childrenColumnName||\"children\"),p=I(()=>e.expandedRowRender?\"row\":e.canExpandable||l.value.some(ae=>ae&&typeof ae==\"object\"&&ae[d.value])?\"nest\":!1),m=ee([]);ze(()=>{e.defaultExpandedRowKeys&&(m.value=e.defaultExpandedRowKeys),e.defaultExpandAllRows&&(m.value=DW(l.value,c.value,d.value))})();const v=I(()=>new Set(e.expandedRowKeys||m.value||[])),y=ae=>{const fe=c.value(ae,l.value.indexOf(ae));let Ie;const Te=v.value.has(fe);Te?(v.value.delete(fe),Ie=[...v.value]):Ie=[...v.value,fe],m.value=Ie,r(\"expand\",!Te,ae),r(\"update:expandedRowKeys\",Ie),r(\"expandedRowsChange\",Ie)},b=J(0),[S,$]=$W(h(h({},jo(e)),{expandable:I(()=>!!e.expandedRowRender),expandedKeys:v,getRowKey:c,onTriggerExpand:y,expandIcon:u}),I(()=>e.internalHooks===cm?e.transformColumns:null)),w=I(()=>({columns:S.value,flattenColumns:$.value})),C=J(),_=J(),x=J(),P=J({scrollWidth:0,clientWidth:0}),O=J(),[M,E]=ht(!1),[R,D]=ht(!1),[z,T]=f_(new Map),k=I(()=>Id($.value)),B=I(()=>k.value.map(ae=>z.value.get(ae))),L=I(()=>$.value.length),N=xW(B,L,We(e,\"direction\")),F=I(()=>e.scroll&&lm(e.scroll.y)),j=I(()=>e.scroll&&lm(e.scroll.x)||!!e.expandFixed),H=I(()=>j.value&&$.value.some(ae=>{let{fixed:fe}=ae;return fe})),K=J(),G=kW(We(e,\"sticky\"),We(e,\"prefixCls\")),V=vt({}),q=I(()=>{const ae=Object.values(V)[0];return(F.value||G.value.isSticky)&&ae}),Z=(ae,fe)=>{fe?V[ae]=fe:delete V[ae]},oe=J({}),re=J({}),Y=J({});ze(()=>{F.value&&(re.value={overflowY:\"scroll\",maxHeight:ol(e.scroll.y)}),j.value&&(oe.value={overflowX:\"auto\"},F.value||(re.value={overflowY:\"hidden\"}),Y.value={width:e.scroll.x===!0?\"auto\":ol(e.scroll.x),minWidth:\"100%\"})});const Q=(ae,fe)=>{Vu(C.value)&&T(Ie=>{if(Ie.get(ae)!==fe){const Te=new Map(Ie);return Te.set(ae,fe),Te}return Ie})},[ce,ue]=CW();function be(ae,fe){if(!fe)return;if(typeof fe==\"function\"){fe(ae);return}const Ie=fe.$el||fe;Ie.scrollLeft!==ae&&(Ie.scrollLeft=ae)}const Ce=ae=>{let{currentTarget:fe,scrollLeft:Ie}=ae;var Te;const Re=e.direction===\"rtl\",$e=typeof Ie==\"number\"?Ie:fe.scrollLeft,xe=fe||LW;if((!ue()||ue()===xe)&&(ce(xe),be($e,_.value),be($e,x.value),be($e,O.value),be($e,(Te=K.value)===null||Te===void 0?void 0:Te.setScrollLeft)),fe){const{scrollWidth:_e,clientWidth:Me}=fe;Re?(E(-$e<_e-Me),D(-$e>0)):(E($e>0),D($e<_e-Me))}},ge=()=>{j.value&&x.value?Ce({currentTarget:x.value}):(E(!1),D(!1))};let Se;const X=ae=>{ae!==b.value&&(ge(),b.value=C.value?C.value.offsetWidth:ae)},U=ae=>{let{width:fe}=ae;if(clearTimeout(Se),b.value===0){X(fe);return}Se=setTimeout(()=>{X(fe)},100)};pe([j,()=>e.data,()=>e.columns],()=>{j.value&&ge()},{flush:\"post\"});const[ie,ve]=ht(0);nW(),Ne(()=>{it(()=>{var ae,fe;ge(),ve(lA(x.value).width),P.value={scrollWidth:((ae=x.value)===null||ae===void 0?void 0:ae.scrollWidth)||0,clientWidth:((fe=x.value)===null||fe===void 0?void 0:fe.clientWidth)||0}})}),Hn(()=>{it(()=>{var ae,fe;const Ie=((ae=x.value)===null||ae===void 0?void 0:ae.scrollWidth)||0,Te=((fe=x.value)===null||fe===void 0?void 0:fe.clientWidth)||0;(P.value.scrollWidth!==Ie||P.value.clientWidth!==Te)&&(P.value={scrollWidth:Ie,clientWidth:Te})})}),ze(()=>{e.internalHooks===cm&&e.internalRefs&&e.onUpdateInternalRefs({body:x.value?x.value.$el||x.value:null})},{flush:\"post\"});const me=I(()=>e.tableLayout?e.tableLayout:H.value?e.scroll.x===\"max-content\"?\"auto\":\"fixed\":F.value||G.value.isSticky||$.value.some(ae=>{let{ellipsis:fe}=ae;return fe})?\"fixed\":\"auto\"),he=()=>{var ae;return a.value?null:((ae=o.emptyText)===null||ae===void 0?void 0:ae.call(o))||\"No Data\"};Uj(vt(h(h({},jo(lS(e,\"prefixCls\",\"direction\",\"transformCellText\"))),{getComponent:s,scrollbarSize:ie,fixedInfoList:I(()=>$.value.map((ae,fe)=>Kg(fe,fe,$.value,N.value,e.direction))),isSticky:I(()=>G.value.isSticky),summaryCollect:Z}))),pW(vt(h(h({},jo(lS(e,\"rowClassName\",\"expandedRowClassName\",\"expandRowByClick\",\"expandedRowRender\",\"expandIconColumnIndex\",\"indentSize\"))),{columns:S,flattenColumns:$,tableLayout:me,expandIcon:u,expandableType:p,onTriggerExpand:y}))),gW({onColumnResize:Q}),uW({componentWidth:b,fixHeader:F,fixColumn:H,horizonScroll:j});const se=()=>f(bW,{data:l.value,measureColumnWidth:F.value||j.value||G.value.isSticky,expandedKeys:v.value,rowExpandable:e.rowExpandable,getRowKey:c.value,customRow:e.customRow,childrenColumnName:d.value},{emptyNode:he}),te=()=>f(p_,{colWidths:$.value.map(ae=>{let{width:fe}=ae;return fe}),columns:$.value},null);return()=>{var ae;const{prefixCls:fe,scroll:Ie,tableLayout:Te,direction:Re,title:$e=o.title,footer:xe=o.footer,id:_e,showHeader:Me,customHeaderRow:He}=e,{isSticky:Ae,offsetHeader:je,offsetSummary:at,offsetScroll:ft,stickyClassName:st,container:pt}=G.value,gt=s([\"table\"],\"table\"),Ut=s([\"body\"]),en=(ae=o.summary)===null||ae===void 0?void 0:ae.call(o,{pageData:l.value});let ln=()=>null;const Ht={colWidths:B.value,columCount:$.value.length,stickyOffsets:N.value,customHeaderRow:He,fixHeader:F.value,scroll:Ie};if(F.value||Ae){let no=()=>null;typeof Ut==\"function\"?(no=()=>Ut(l.value,{scrollbarSize:ie.value,ref:x,onScroll:Ce}),Ht.colWidths=$.value.map((Dn,Yr)=>{let{width:Oe}=Dn;const Ye=Yr===S.value.length-1?Oe-ie.value:Oe;return typeof Ye==\"number\"&&!Number.isNaN(Ye)?Ye:0})):no=()=>f(\"div\",{style:h(h({},oe.value),re.value),onScroll:Ce,ref:x,class:le(`${fe}-body`)},[f(gt,{style:h(h({},Y.value),{tableLayout:me.value})},{default:()=>[te(),se(),!q.value&&en&&f(Os,{stickyOffsets:N.value,flattenColumns:$.value},{default:()=>[en]})]})]);const So=h(h(h({noData:!l.value.length,maxContentScroll:j.value&&Ie.x===\"max-content\"},Ht),w.value),{direction:Re,stickyClassName:st,onScroll:Ce});ln=()=>f(Ve,null,[Me!==!1&&f(rS,A(A({},So),{},{stickyTopOffset:je,class:`${fe}-header`,ref:_}),{default:Dn=>f(Ve,null,[f(nS,Dn,null),q.value===\"top\"&&f(Os,Dn,{default:()=>[en]})])}),no(),q.value&&q.value!==\"top\"&&f(rS,A(A({},So),{},{stickyBottomOffset:at,class:`${fe}-summary`,ref:O}),{default:Dn=>f(Os,Dn,{default:()=>[en]})}),Ae&&x.value&&f(RW,{ref:K,offsetScroll:ft,scrollBodyRef:x,onScroll:Ce,container:pt,scrollBodySizeInfo:P.value},null)])}else ln=()=>f(\"div\",{style:h(h({},oe.value),re.value),class:le(`${fe}-content`),onScroll:Ce,ref:x},[f(gt,{style:h(h({},Y.value),{tableLayout:me.value})},{default:()=>[te(),Me!==!1&&f(nS,A(A({},Ht),w.value),null),se(),en&&f(Os,{stickyOffsets:N.value,flattenColumns:$.value},{default:()=>[en]})]})]);const bn=Gr(n,{aria:!0,data:!0}),An=()=>f(\"div\",A(A({},bn),{},{class:le(fe,{[`${fe}-rtl`]:Re===\"rtl\",[`${fe}-ping-left`]:M.value,[`${fe}-ping-right`]:R.value,[`${fe}-layout-fixed`]:Te===\"fixed\",[`${fe}-fixed-header`]:F.value,[`${fe}-fixed-column`]:H.value,[`${fe}-scroll-horizontal`]:j.value,[`${fe}-has-fix-left`]:$.value[0]&&$.value[0].fixed,[`${fe}-has-fix-right`]:$.value[L.value-1]&&$.value[L.value-1].fixed===\"right\",[n.class]:n.class}),style:n.style,id:_e,ref:C}),[$e&&f(sm,{class:`${fe}-title`},{default:()=>[$e(l.value)]}),f(\"div\",{class:`${fe}-container`},[ln()]),xe&&f(sm,{class:`${fe}-footer`},{default:()=>[xe(l.value)]})]);return j.value?f(go,{onResize:U},{default:An}):An()}}});function zW(){const e=h({},arguments.length<=0?void 0:arguments[0]);for(let t=1;t<arguments.length;t++){const n=t<0||arguments.length<=t?void 0:arguments[t];n&&Object.keys(n).forEach(o=>{const r=n[o];r!==void 0&&(e[o]=r)})}return e}const um=10;function HW(e,t){const n={current:e.current,pageSize:e.pageSize};return Object.keys(t&&typeof t==\"object\"?t:{}).forEach(r=>{const l=e[r];typeof l!=\"function\"&&(n[r]=l)}),n}function jW(e,t,n){const o=I(()=>t.value&&typeof t.value==\"object\"?t.value:{}),r=I(()=>o.value.total||0),[l,a]=ht(()=>({current:\"defaultCurrent\"in o.value?o.value.defaultCurrent:1,pageSize:\"defaultPageSize\"in o.value?o.value.defaultPageSize:um})),i=I(()=>{const u=zW(l.value,o.value,{total:r.value>0?r.value:e.value}),d=Math.ceil((r.value||e.value)/u.pageSize);return u.current>d&&(u.current=d||1),u}),s=(u,d)=>{t.value!==!1&&a({current:u??1,pageSize:d||i.value.pageSize})},c=(u,d)=>{var p,m;t.value&&((m=(p=o.value).onChange)===null||m===void 0||m.call(p,u,d)),s(u,d),n(u,d||i.value.pageSize)};return[I(()=>t.value===!1?{}:h(h({},i.value),{onChange:c})),s]}function WW(e,t,n){const o=ee({});pe([e,t,n],()=>{const l=new Map,a=n.value,i=t.value;function s(c){c.forEach((u,d)=>{const p=a(u,d);l.set(p,u),u&&typeof u==\"object\"&&i in u&&s(u[i]||[])})}s(e.value),o.value={kvMap:l}},{deep:!0,immediate:!0});function r(l){return o.value.kvMap.get(l)}return[r]}const er={},dm=\"SELECT_ALL\",fm=\"SELECT_INVERT\",pm=\"SELECT_NONE\",VW=[];function v_(e,t){let n=[];return(t||[]).forEach(o=>{n.push(o),o&&typeof o==\"object\"&&e in o&&(n=[...n,...v_(e,o[e])])}),n}function KW(e,t){const n=I(()=>{const O=e.value||{},{checkStrictly:M=!0}=O;return h(h({},O),{checkStrictly:M})}),[o,r]=Mt(n.value.selectedRowKeys||n.value.defaultSelectedRowKeys||VW,{value:I(()=>n.value.selectedRowKeys)}),l=ee(new Map),a=O=>{if(n.value.preserveSelectedRowKeys){const M=new Map;O.forEach(E=>{let R=t.getRecordByKey(E);!R&&l.value.has(E)&&(R=l.value.get(E)),M.set(E,R)}),l.value=M}};ze(()=>{a(o.value)});const i=I(()=>n.value.checkStrictly?null:Xi(t.data.value,{externalGetKey:t.getRowKey.value,childrenPropName:t.childrenColumnName.value}).keyEntities),s=I(()=>v_(t.childrenColumnName.value,t.pageData.value)),c=I(()=>{const O=new Map,M=t.getRowKey.value,E=n.value.getCheckboxProps;return s.value.forEach((R,D)=>{const z=M(R,D),T=(E?E(R):null)||{};O.set(z,T)}),O}),{maxLevel:u,levelEntities:d}=vd(i),p=O=>{var M;return!!(!((M=c.value.get(t.getRowKey.value(O)))===null||M===void 0)&&M.disabled)},m=I(()=>{if(n.value.checkStrictly)return[o.value||[],[]];const{checkedKeys:O,halfCheckedKeys:M}=mo(o.value,!0,i.value,u.value,d.value,p);return[O||[],M]}),g=I(()=>m.value[0]),v=I(()=>m.value[1]),y=I(()=>{const O=n.value.type===\"radio\"?g.value.slice(0,1):g.value;return new Set(O)}),b=I(()=>n.value.type===\"radio\"?new Set:new Set(v.value)),[S,$]=ht(null),w=O=>{let M,E;a(O);const{preserveSelectedRowKeys:R,onChange:D}=n.value,{getRecordByKey:z}=t;R?(M=O,E=O.map(T=>l.value.get(T))):(M=[],E=[],O.forEach(T=>{const k=z(T);k!==void 0&&(M.push(T),E.push(k))})),r(M),D?.(M,E)},C=(O,M,E,R)=>{const{onSelect:D}=n.value,{getRecordByKey:z}=t||{};if(D){const T=E.map(k=>z(k));D(z(O),M,T,R)}w(E)},_=I(()=>{const{onSelectInvert:O,onSelectNone:M,selections:E,hideSelectAll:R}=n.value,{data:D,pageData:z,getRowKey:T,locale:k}=t;return!E||R?null:(E===!0?[dm,fm,pm]:E).map(L=>L===dm?{key:\"all\",text:k.value.selectionAll,onSelect(){w(D.value.map((N,F)=>T.value(N,F)).filter(N=>{const F=c.value.get(N);return!F?.disabled||y.value.has(N)}))}}:L===fm?{key:\"invert\",text:k.value.selectInvert,onSelect(){const N=new Set(y.value);z.value.forEach((j,H)=>{const K=T.value(j,H),G=c.value.get(K);G?.disabled||(N.has(K)?N.delete(K):N.add(K))});const F=Array.from(N);O&&(Ot(!1,\"Table\",\"`onSelectInvert` will be removed in future. Please use `onChange` instead.\"),O(F)),w(F)}}:L===pm?{key:\"none\",text:k.value.selectNone,onSelect(){M?.(),w(Array.from(y.value).filter(N=>{const F=c.value.get(N);return F?.disabled}))}}:L)}),x=I(()=>s.value.length);return[O=>{var M;const{onSelectAll:E,onSelectMultiple:R,columnWidth:D,type:z,fixed:T,renderCell:k,hideSelectAll:B,checkStrictly:L}=n.value,{prefixCls:N,getRecordByKey:F,getRowKey:j,expandType:H,getPopupContainer:K}=t;if(!e.value)return O.filter(X=>X!==er);let G=O.slice();const V=new Set(y.value),q=s.value.map(j.value).filter(X=>!c.value.get(X).disabled),Z=q.every(X=>V.has(X)),oe=q.some(X=>V.has(X)),re=()=>{const X=[];Z?q.forEach(ie=>{V.delete(ie),X.push(ie)}):q.forEach(ie=>{V.has(ie)||(V.add(ie),X.push(ie))});const U=Array.from(V);E?.(!Z,U.map(ie=>F(ie)),X.map(ie=>F(ie))),w(U)};let Y;if(z!==\"radio\"){let X;if(_.value){const he=f(Ft,{getPopupContainer:K.value},{default:()=>[_.value.map((se,te)=>{const{key:ae,text:fe,onSelect:Ie}=se;return f(Ft.Item,{key:ae||te,onClick:()=>{Ie?.(q)}},{default:()=>[fe]})})]});X=f(\"div\",{class:`${N.value}-selection-extra`},[f(po,{overlay:he,getPopupContainer:K.value},{default:()=>[f(\"span\",null,[f(xa,null,null)])]})])}const U=s.value.map((he,se)=>{const te=j.value(he,se),ae=c.value.get(te)||{};return h({checked:V.has(te)},ae)}).filter(he=>{let{disabled:se}=he;return se}),ie=!!U.length&&U.length===x.value,ve=ie&&U.every(he=>{let{checked:se}=he;return se}),me=ie&&U.some(he=>{let{checked:se}=he;return se});Y=!B&&f(\"div\",{class:`${N.value}-selection`},[f(Zn,{checked:ie?ve:!!x.value&&Z,indeterminate:ie?!ve&&me:!Z&&oe,onChange:re,disabled:x.value===0||ie,\"aria-label\":X?\"Custom selection\":\"Select all\",skipGroup:!0},null),X])}let Q;z===\"radio\"?Q=X=>{let{record:U,index:ie}=X;const ve=j.value(U,ie),me=V.has(ve);return{node:f(In,A(A({},c.value.get(ve)),{},{checked:me,onClick:he=>he.stopPropagation(),onChange:he=>{V.has(ve)||C(ve,!0,[ve],he.nativeEvent)}}),null),checked:me}}:Q=X=>{let{record:U,index:ie}=X;var ve;const me=j.value(U,ie),he=V.has(me),se=b.value.has(me),te=c.value.get(me);let ae;return H.value===\"nest\"?(ae=se,Ot(typeof te?.indeterminate!=\"boolean\",\"Table\",\"set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.\")):ae=(ve=te?.indeterminate)!==null&&ve!==void 0?ve:se,{node:f(Zn,A(A({},te),{},{indeterminate:ae,checked:he,skipGroup:!0,onClick:fe=>fe.stopPropagation(),onChange:fe=>{let{nativeEvent:Ie}=fe;const{shiftKey:Te}=Ie;let Re=-1,$e=-1;if(Te&&L){const xe=new Set([S.value,me]);q.some((_e,Me)=>{if(xe.has(_e))if(Re===-1)Re=Me;else return $e=Me,!0;return!1})}if($e!==-1&&Re!==$e&&L){const xe=q.slice(Re,$e+1),_e=[];he?xe.forEach(He=>{V.has(He)&&(_e.push(He),V.delete(He))}):xe.forEach(He=>{V.has(He)||(_e.push(He),V.add(He))});const Me=Array.from(V);R?.(!he,Me.map(He=>F(He)),_e.map(He=>F(He))),w(Me)}else{const xe=g.value;if(L){const _e=he?Lo(xe,me):Jo(xe,me);C(me,!he,_e,Ie)}else{const _e=mo([...xe,me],!0,i.value,u.value,d.value,p),{checkedKeys:Me,halfCheckedKeys:He}=_e;let Ae=Me;if(he){const je=new Set(Me);je.delete(me),Ae=mo(Array.from(je),{halfCheckedKeys:He},i.value,u.value,d.value,p).checkedKeys}C(me,!he,Ae,Ie)}}$(me)}}),null),checked:he}};const ce=X=>{let{record:U,index:ie}=X;const{node:ve,checked:me}=Q({record:U,index:ie});return k?k(me,U,ie,ve):ve};if(!G.includes(er))if(G.findIndex(X=>{var U;return((U=X[sa])===null||U===void 0?void 0:U.columnType)===\"EXPAND_COLUMN\"})===0){const[X,...U]=G;G=[X,er,...U]}else G=[er,...G];const ue=G.indexOf(er);G=G.filter((X,U)=>X!==er||U===ue);const be=G[ue-1],Ce=G[ue+1];let ge=T;ge===void 0&&(Ce?.fixed!==void 0?ge=Ce.fixed:be?.fixed!==void 0&&(ge=be.fixed)),ge&&be&&((M=be[sa])===null||M===void 0?void 0:M.columnType)===\"EXPAND_COLUMN\"&&be.fixed===void 0&&(be.fixed=ge);const Se={fixed:ge,width:D,className:`${N.value}-selection-column`,title:n.value.columnTitle||Y,customRender:ce,[sa]:{class:`${N.value}-selection-col`}};return G.map(X=>X===er?Se:X)},y]}var GW=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function xl(e,t){return\"key\"in e&&e.key!==void 0&&e.key!==null?e.key:e.dataIndex?Array.isArray(e.dataIndex)?e.dataIndex.join(\".\"):e.dataIndex:t}function Ji(e,t){return t?`${t}-${e}`:`${e}`}function Gg(e,t){return typeof e==\"function\"?e(t):e}function g_(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const t=$t(e),n=[];return t.forEach(o=>{var r,l,a,i;if(!o)return;const s=o.key,c=((r=o.props)===null||r===void 0?void 0:r.style)||{},u=((l=o.props)===null||l===void 0?void 0:l.class)||\"\",d=o.props||{};for(const[y,b]of Object.entries(d))d[_a(y)]=b;const p=o.children||{},{default:m}=p,g=GW(p,[\"default\"]),v=h(h(h({},g),d),{style:c,class:u});if(s&&(v.key=s),!((a=o.type)===null||a===void 0)&&a.__ANT_TABLE_COLUMN_GROUP)v.children=g_(typeof m==\"function\"?m():m);else{const y=(i=o.children)===null||i===void 0?void 0:i.default;v.customRender=v.customRender||y}n.push(v)}),n}const Sc=\"ascend\",kf=\"descend\";function $u(e){return typeof e.sorter==\"object\"&&typeof e.sorter.multiple==\"number\"?e.sorter.multiple:!1}function aS(e){return typeof e==\"function\"?e:e&&typeof e==\"object\"&&e.compare?e.compare:!1}function XW(e,t){return t?e[e.indexOf(t)+1]:e[0]}function mm(e,t,n){let o=[];function r(l,a){o.push({column:l,key:xl(l,a),multiplePriority:$u(l),sortOrder:l.sortOrder})}return(e||[]).forEach((l,a)=>{const i=Ji(a,n);l.children?(\"sortOrder\"in l&&r(l,i),o=[...o,...mm(l.children,t,i)]):l.sorter&&(\"sortOrder\"in l?r(l,i):t&&l.defaultSortOrder&&o.push({column:l,key:xl(l,i),multiplePriority:$u(l),sortOrder:l.defaultSortOrder}))}),o}function h_(e,t,n,o,r,l,a,i){return(t||[]).map((s,c)=>{const u=Ji(c,i);let d=s;if(d.sorter){const p=d.sortDirections||r,m=d.showSorterTooltip===void 0?a:d.showSorterTooltip,g=xl(d,u),v=n.find(O=>{let{key:M}=O;return M===g}),y=v?v.sortOrder:null,b=XW(p,y),S=p.includes(Sc)&&f(XI,{class:le(`${e}-column-sorter-up`,{active:y===Sc}),role:\"presentation\"},null),$=p.includes(kf)&&f(UI,{role:\"presentation\",class:le(`${e}-column-sorter-down`,{active:y===kf})},null),{cancelSort:w,triggerAsc:C,triggerDesc:_}=l||{};let x=w;b===kf?x=_:b===Sc&&(x=C);const P=typeof m==\"object\"?m:{title:x};d=h(h({},d),{className:le(d.className,{[`${e}-column-sort`]:y}),title:O=>{const M=f(\"div\",{class:`${e}-column-sorters`},[f(\"span\",{class:`${e}-column-title`},[Gg(s.title,O)]),f(\"span\",{class:le(`${e}-column-sorter`,{[`${e}-column-sorter-full`]:!!(S&&$)})},[f(\"span\",{class:`${e}-column-sorter-inner`},[S,$])])]);return m?f(Ln,P,{default:()=>[M]}):M},customHeaderCell:O=>{const M=s.customHeaderCell&&s.customHeaderCell(O)||{},E=M.onClick,R=M.onKeydown;return M.onClick=D=>{o({column:s,key:g,sortOrder:b,multiplePriority:$u(s)}),E&&E(D)},M.onKeydown=D=>{D.keyCode===we.ENTER&&(o({column:s,key:g,sortOrder:b,multiplePriority:$u(s)}),R?.(D))},y&&(M[\"aria-sort\"]=y===\"ascend\"?\"ascending\":\"descending\"),M.class=le(M.class,`${e}-column-has-sorters`),M.tabindex=0,M}})}return\"children\"in d&&(d=h(h({},d),{children:h_(e,d.children,n,o,r,l,a,u)})),d})}function iS(e){const{column:t,sortOrder:n}=e;return{column:t,order:n,field:t.dataIndex,columnKey:t.key}}function sS(e){const t=e.filter(n=>{let{sortOrder:o}=n;return o}).map(iS);return t.length===0&&e.length?h(h({},iS(e[e.length-1])),{column:void 0}):t.length<=1?t[0]||{}:t}function vm(e,t,n){const o=t.slice().sort((a,i)=>i.multiplePriority-a.multiplePriority),r=e.slice(),l=o.filter(a=>{let{column:{sorter:i},sortOrder:s}=a;return aS(i)&&s});return l.length?r.sort((a,i)=>{for(let s=0;s<l.length;s+=1){const c=l[s],{column:{sorter:u},sortOrder:d}=c,p=aS(u);if(p&&d){const m=p(a,i,d);if(m!==0)return d===Sc?m:-m}}return 0}).map(a=>{const i=a[n];return i?h(h({},a),{[n]:vm(i,t,n)}):a}):r}function UW(e){let{prefixCls:t,mergedColumns:n,onSorterChange:o,sortDirections:r,tableLocale:l,showSorterTooltip:a}=e;const[i,s]=ht(mm(n.value,!0)),c=I(()=>{let g=!0;const v=mm(n.value,!1);if(!v.length)return i.value;const y=[];function b($){g?y.push($):y.push(h(h({},$),{sortOrder:null}))}let S=null;return v.forEach($=>{S===null?(b($),$.sortOrder&&($.multiplePriority===!1?g=!1:S=!0)):(S&&$.multiplePriority!==!1||(g=!1),b($))}),y}),u=I(()=>{const g=c.value.map(v=>{let{column:y,sortOrder:b}=v;return{column:y,order:b}});return{sortColumns:g,sortColumn:g[0]&&g[0].column,sortOrder:g[0]&&g[0].order}});function d(g){let v;g.multiplePriority===!1||!c.value.length||c.value[0].multiplePriority===!1?v=[g]:v=[...c.value.filter(y=>{let{key:b}=y;return b!==g.key}),g],s(v),o(sS(v),v)}const p=g=>h_(t.value,g,c.value,d,r.value,l.value,a.value),m=I(()=>sS(c.value));return[p,c,u,m]}const YW=e=>{const{keyCode:t}=e;t===we.ENTER&&e.stopPropagation()},qW=(e,t)=>{let{slots:n}=t;var o;return f(\"div\",{onClick:r=>r.stopPropagation(),onKeydown:YW},[(o=n.default)===null||o===void 0?void 0:o.call(n)])},cS=ne({compatConfig:{MODE:3},name:\"FilterSearch\",inheritAttrs:!1,props:{value:ke(),onChange:de(),filterSearch:Fe([Boolean,Function]),tablePrefixCls:ke(),locale:De()},setup(e){return()=>{const{value:t,onChange:n,filterSearch:o,tablePrefixCls:r,locale:l}=e;return o?f(\"div\",{class:`${r}-filter-dropdown-search`},[f(Bt,{placeholder:l.filterSearchPlaceholder,onChange:n,value:t,htmlSize:1,class:`${r}-filter-dropdown-search-input`},{prefix:()=>f(Iu,null,null)})]):null}}});var uS=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const ZW=ne({compatConfig:{MODE:3},name:\"MotionTreeNode\",inheritAttrs:!1,props:h(h({},Jx),{active:Boolean,motion:Object,motionNodes:{type:Array},onMotionStart:Function,onMotionEnd:Function,motionType:String}),setup(e,t){let{attrs:n,slots:o}=t;const r=ee(!0),l=Cg(),a=ee(!1),i=I(()=>e.motion?e.motion:zi()),s=(c,u)=>{var d,p,m,g;u===\"appear\"?(p=(d=i.value)===null||d===void 0?void 0:d.onAfterEnter)===null||p===void 0||p.call(d,c):u===\"leave\"&&((g=(m=i.value)===null||m===void 0?void 0:m.onAfterLeave)===null||g===void 0||g.call(m,c)),a.value||e.onMotionEnd(),a.value=!0};return pe(()=>e.motionNodes,()=>{e.motionNodes&&e.motionType===\"hide\"&&r.value&&it(()=>{r.value=!1})},{immediate:!0,flush:\"post\"}),Ne(()=>{e.motionNodes&&e.onMotionStart()}),et(()=>{e.motionNodes&&s()}),()=>{const{motion:c,motionNodes:u,motionType:d,active:p,eventKey:m}=e,g=uS(e,[\"motion\",\"motionNodes\",\"motionType\",\"active\",\"eventKey\"]);return u?f(cn,A(A({},i.value),{},{appear:d===\"show\",onAfterAppear:v=>s(v,\"appear\"),onAfterLeave:v=>s(v,\"leave\")}),{default:()=>[xn(f(\"div\",{class:`${l.value.prefixCls}-treenode-motion`},[u.map(v=>{const y=uS(v.data,[]),{title:b,key:S,isStart:$,isEnd:w}=v;return delete y.children,f(Fp,A(A({},y),{},{title:b,active:p,data:v.data,key:S,eventKey:S,isStart:$,isEnd:w}),o)})]),[[On,r.value]])]}):f(Fp,A(A({class:n.class,style:n.style},g),{},{active:p,eventKey:m}),o)}}});function QW(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const n=e.length,o=t.length;if(Math.abs(n-o)!==1)return{add:!1,key:null};function r(l,a){const i=new Map;l.forEach(c=>{i.set(c,!0)});const s=a.filter(c=>!i.has(c));return s.length===1?s[0]:null}return n<o?{add:!0,key:r(e,t)}:{add:!1,key:r(t,e)}}function dS(e,t,n){const o=e.findIndex(a=>a.key===n),r=e[o+1],l=t.findIndex(a=>a.key===n);if(r){const a=t.findIndex(i=>i.key===r.key);return t.slice(l+1,a)}return t.slice(l+1)}var fS=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const pS={width:0,height:0,display:\"flex\",overflow:\"hidden\",opacity:0,border:0,padding:0,margin:0},JW=()=>{},wl=`RC_TREE_MOTION_${Math.random()}`,gm={key:wl},b_={key:wl,level:0,index:0,pos:\"0\",node:gm,nodes:[gm]},mS={parent:null,children:[],pos:b_.pos,data:gm,title:null,key:wl,isStart:[],isEnd:[]};function vS(e,t,n,o){return t===!1||!n?e:e.slice(0,Math.ceil(n/o)+1)}function gS(e){const{key:t,pos:n}=e;return Gi(t,n)}function eV(e){let t=String(e.key),n=e;for(;n.parent;)n=n.parent,t=`${n.key} > ${t}`;return t}const tV=ne({compatConfig:{MODE:3},name:\"NodeList\",inheritAttrs:!1,props:e6,setup(e,t){let{expose:n,attrs:o}=t;const r=J(),l=J(),{expandedKeys:a,flattenNodes:i}=Qx();n({scrollTo:v=>{r.value.scrollTo(v)},getIndentWidth:()=>l.value.offsetWidth});const s=ee(i.value),c=ee([]),u=J(null);function d(){s.value=i.value,c.value=[],u.value=null,e.onListChangeEnd()}const p=Cg();pe([()=>a.value.slice(),i],(v,y)=>{let[b,S]=v,[$,w]=y;const C=QW($,b);if(C.key!==null){const{virtual:_,height:x,itemHeight:P}=e;if(C.add){const O=w.findIndex(R=>{let{key:D}=R;return D===C.key}),M=vS(dS(w,S,C.key),_,x,P),E=w.slice();E.splice(O+1,0,mS),s.value=E,c.value=M,u.value=\"show\"}else{const O=S.findIndex(R=>{let{key:D}=R;return D===C.key}),M=vS(dS(S,w,C.key),_,x,P),E=S.slice();E.splice(O+1,0,mS),s.value=E,c.value=M,u.value=\"hide\"}}else w!==S&&(s.value=S)}),pe(()=>p.value.dragging,v=>{v||d()});const m=I(()=>e.motion===void 0?s.value:i.value),g=()=>{e.onActiveChange(null)};return()=>{const v=h(h({},e),o),{prefixCls:y,selectable:b,checkable:S,disabled:$,motion:w,height:C,itemHeight:_,virtual:x,focusable:P,activeItem:O,focused:M,tabindex:E,onKeydown:R,onFocus:D,onBlur:z,onListChangeStart:T,onListChangeEnd:k}=v,B=fS(v,[\"prefixCls\",\"selectable\",\"checkable\",\"disabled\",\"motion\",\"height\",\"itemHeight\",\"virtual\",\"focusable\",\"activeItem\",\"focused\",\"tabindex\",\"onKeydown\",\"onFocus\",\"onBlur\",\"onListChangeStart\",\"onListChangeEnd\"]);return f(Ve,null,[M&&O&&f(\"span\",{style:pS,\"aria-live\":\"assertive\"},[eV(O)]),f(\"div\",null,[f(\"input\",{style:pS,disabled:P===!1||$,tabindex:P!==!1?E:null,onKeydown:R,onFocus:D,onBlur:z,value:\"\",onChange:JW,\"aria-label\":\"for screen reader\"},null)]),f(\"div\",{class:`${y}-treenode`,\"aria-hidden\":!0,style:{position:\"absolute\",pointerEvents:\"none\",visibility:\"hidden\",height:0,overflow:\"hidden\"}},[f(\"div\",{class:`${y}-indent`},[f(\"div\",{ref:l,class:`${y}-indent-unit`},null)])]),f(g1,A(A({},ot(B,[\"onActiveChange\"])),{},{data:m.value,itemKey:gS,height:C,fullHeight:!1,virtual:x,itemHeight:_,prefixCls:`${y}-list`,ref:r,onVisibleChange:(L,N)=>{const F=new Set(L);N.filter(H=>!F.has(H)).some(H=>gS(H)===wl)&&d()}}),{default:L=>{const{pos:N}=L,F=fS(L.data,[]),{title:j,key:H,isStart:K,isEnd:G}=L,V=Gi(H,N);return delete F.key,delete F.children,f(ZW,A(A({},F),{},{eventKey:V,title:j,active:!!O&&H===O.key,data:L.data,isStart:K,isEnd:G,motion:w,motionNodes:H===wl?c.value:null,motionType:u.value,onMotionStart:T,onMotionEnd:d,onMousemove:g}),null)}})])}}});function nV(e){let{dropPosition:t,dropLevelOffset:n,indent:o}=e;const r={pointerEvents:\"none\",position:\"absolute\",right:0,backgroundColor:\"red\",height:\"2px\"};switch(t){case-1:r.top=0,r.left=`${-n*o}px`;break;case 1:r.bottom=0,r.left=`${-n*o}px`;break;case 0:r.bottom=0,r.left=`${o}`;break}return f(\"div\",{style:r},null)}const oV=10,y_=ne({compatConfig:{MODE:3},name:\"Tree\",inheritAttrs:!1,props:Ze(ew(),{prefixCls:\"vc-tree\",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,expandAction:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:nV,allowDrop:()=>!0}),setup(e,t){let{attrs:n,slots:o,expose:r}=t;const l=ee(!1);let a={};const i=ee(),s=ee([]),c=ee([]),u=ee([]),d=ee([]),p=ee([]),m=ee([]),g={},v=vt({draggingNodeKey:null,dragChildrenKeys:[],dropTargetKey:null,dropPosition:null,dropContainerKey:null,dropLevelOffset:null,dropTargetPos:null,dropAllowed:!0,dragOverNodeKey:null}),y=ee([]);pe([()=>e.treeData,()=>e.children],()=>{y.value=e.treeData!==void 0?e.treeData.slice():Hp(zt(e.children))},{immediate:!0,deep:!0});const b=ee({}),S=ee(!1),$=ee(null),w=ee(!1),C=I(()=>dd(e.fieldNames)),_=ee();let x=null,P=null,O=null;const M=I(()=>({expandedKeysSet:E.value,selectedKeysSet:R.value,loadedKeysSet:D.value,loadingKeysSet:z.value,checkedKeysSet:T.value,halfCheckedKeysSet:k.value,dragOverNodeKey:v.dragOverNodeKey,dropPosition:v.dropPosition,keyEntities:b.value})),E=I(()=>new Set(m.value)),R=I(()=>new Set(s.value)),D=I(()=>new Set(d.value)),z=I(()=>new Set(p.value)),T=I(()=>new Set(c.value)),k=I(()=>new Set(u.value));ze(()=>{if(y.value){const $e=Xi(y.value,{fieldNames:C.value});b.value=h({[wl]:b_},$e.keyEntities)}});let B=!1;pe([()=>e.expandedKeys,()=>e.autoExpandParent,b],($e,xe)=>{let[_e,Me]=$e,[He,Ae]=xe,je=m.value;if(e.expandedKeys!==void 0||B&&Me!==Ae)je=e.autoExpandParent||!B&&e.defaultExpandParent?zp(e.expandedKeys,b.value):e.expandedKeys;else if(!B&&e.defaultExpandAll){const at=h({},b.value);delete at[wl],je=Object.keys(at).map(ft=>at[ft].key)}else!B&&e.defaultExpandedKeys&&(je=e.autoExpandParent||e.defaultExpandParent?zp(e.defaultExpandedKeys,b.value):e.defaultExpandedKeys);je&&(m.value=je),B=!0},{immediate:!0});const L=ee([]);ze(()=>{L.value=s6(y.value,m.value,C.value)}),ze(()=>{e.selectable&&(e.selectedKeys!==void 0?s.value=Qb(e.selectedKeys,e):!B&&e.defaultSelectedKeys&&(s.value=Qb(e.defaultSelectedKeys,e)))});const{maxLevel:N,levelEntities:F}=vd(b);ze(()=>{if(e.checkable){let $e;if(e.checkedKeys!==void 0?$e=hf(e.checkedKeys)||{}:!B&&e.defaultCheckedKeys?$e=hf(e.defaultCheckedKeys)||{}:y.value&&($e=hf(e.checkedKeys)||{checkedKeys:c.value,halfCheckedKeys:u.value}),$e){let{checkedKeys:xe=[],halfCheckedKeys:_e=[]}=$e;e.checkStrictly||({checkedKeys:xe,halfCheckedKeys:_e}=mo(xe,!0,b.value,N.value,F.value)),c.value=xe,u.value=_e}}}),ze(()=>{e.loadedKeys&&(d.value=e.loadedKeys)});const j=()=>{h(v,{dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})},H=$e=>{_.value.scrollTo($e)};pe(()=>e.activeKey,()=>{e.activeKey!==void 0&&($.value=e.activeKey)},{immediate:!0}),pe($,$e=>{it(()=>{$e!==null&&H({key:$e})})},{immediate:!0,flush:\"post\"});const K=$e=>{e.expandedKeys===void 0&&(m.value=$e)},G=()=>{v.draggingNodeKey!==null&&h(v,{draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),x=null,O=null},V=($e,xe)=>{const{onDragend:_e}=e;v.dragOverNodeKey=null,G(),_e?.({event:$e,node:xe.eventData}),P=null},q=$e=>{V($e,null),window.removeEventListener(\"dragend\",q)},Z=($e,xe)=>{const{onDragstart:_e}=e,{eventKey:Me,eventData:He}=xe;P=xe,x={x:$e.clientX,y:$e.clientY};const Ae=Lo(m.value,Me);v.draggingNodeKey=Me,v.dragChildrenKeys=r6(Me,b.value),i.value=_.value.getIndentWidth(),K(Ae),window.addEventListener(\"dragend\",q),_e&&_e({event:$e,node:He})},oe=($e,xe)=>{const{onDragenter:_e,onExpand:Me,allowDrop:He,direction:Ae}=e,{pos:je,eventKey:at}=xe;if(O!==at&&(O=at),!P){j();return}const{dropPosition:ft,dropLevelOffset:st,dropTargetKey:pt,dropContainerKey:gt,dropTargetPos:Ut,dropAllowed:en,dragOverNodeKey:ln}=Zb($e,P,xe,i.value,x,He,L.value,b.value,E.value,Ae);if(v.dragChildrenKeys.indexOf(pt)!==-1||!en){j();return}if(a||(a={}),Object.keys(a).forEach(Ht=>{clearTimeout(a[Ht])}),P.eventKey!==xe.eventKey&&(a[je]=window.setTimeout(()=>{if(v.draggingNodeKey===null)return;let Ht=m.value.slice();const bn=b.value[xe.eventKey];bn&&(bn.children||[]).length&&(Ht=Jo(m.value,xe.eventKey)),K(Ht),Me&&Me(Ht,{node:xe.eventData,expanded:!0,nativeEvent:$e})},800)),P.eventKey===pt&&st===0){j();return}h(v,{dragOverNodeKey:ln,dropPosition:ft,dropLevelOffset:st,dropTargetKey:pt,dropContainerKey:gt,dropTargetPos:Ut,dropAllowed:en}),_e&&_e({event:$e,node:xe.eventData,expandedKeys:m.value})},re=($e,xe)=>{const{onDragover:_e,allowDrop:Me,direction:He}=e;if(!P)return;const{dropPosition:Ae,dropLevelOffset:je,dropTargetKey:at,dropContainerKey:ft,dropAllowed:st,dropTargetPos:pt,dragOverNodeKey:gt}=Zb($e,P,xe,i.value,x,Me,L.value,b.value,E.value,He);v.dragChildrenKeys.indexOf(at)!==-1||!st||(P.eventKey===at&&je===0?v.dropPosition===null&&v.dropLevelOffset===null&&v.dropTargetKey===null&&v.dropContainerKey===null&&v.dropTargetPos===null&&v.dropAllowed===!1&&v.dragOverNodeKey===null||j():Ae===v.dropPosition&&je===v.dropLevelOffset&&at===v.dropTargetKey&&ft===v.dropContainerKey&&pt===v.dropTargetPos&&st===v.dropAllowed&&gt===v.dragOverNodeKey||h(v,{dropPosition:Ae,dropLevelOffset:je,dropTargetKey:at,dropContainerKey:ft,dropTargetPos:pt,dropAllowed:st,dragOverNodeKey:gt}),_e&&_e({event:$e,node:xe.eventData}))},Y=($e,xe)=>{O===xe.eventKey&&!$e.currentTarget.contains($e.relatedTarget)&&(j(),O=null);const{onDragleave:_e}=e;_e&&_e({event:$e,node:xe.eventData})},Q=function($e,xe){let _e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;var Me;const{dragChildrenKeys:He,dropPosition:Ae,dropTargetKey:je,dropTargetPos:at,dropAllowed:ft}=v;if(!ft)return;const{onDrop:st}=e;if(v.dragOverNodeKey=null,G(),je===null)return;const pt=h(h({},oc(je,zt(M.value))),{active:((Me=fe.value)===null||Me===void 0?void 0:Me.key)===je,data:b.value[je].node});He.indexOf(je);const gt=xg(at),Ut={event:$e,node:rc(pt),dragNode:P?P.eventData:null,dragNodesKeys:[P.eventKey].concat(He),dropToGap:Ae!==0,dropPosition:Ae+Number(gt[gt.length-1])};_e||st?.(Ut),P=null},ce=($e,xe)=>{const{expanded:_e,key:Me}=xe,He=L.value.filter(je=>je.key===Me)[0],Ae=rc(h(h({},oc(Me,M.value)),{data:He.data}));K(_e?Lo(m.value,Me):Jo(m.value,Me)),he($e,Ae)},ue=($e,xe)=>{const{onClick:_e,expandAction:Me}=e;Me===\"click\"&&ce($e,xe),_e&&_e($e,xe)},be=($e,xe)=>{const{onDblclick:_e,expandAction:Me}=e;(Me===\"doubleclick\"||Me===\"dblclick\")&&ce($e,xe),_e&&_e($e,xe)},Ce=($e,xe)=>{let _e=s.value;const{onSelect:Me,multiple:He}=e,{selected:Ae}=xe,je=xe[C.value.key],at=!Ae;at?He?_e=Jo(_e,je):_e=[je]:_e=Lo(_e,je);const ft=b.value,st=_e.map(pt=>{const gt=ft[pt];return gt?gt.node:null}).filter(pt=>pt);e.selectedKeys===void 0&&(s.value=_e),Me&&Me(_e,{event:\"select\",selected:at,node:xe,selectedNodes:st,nativeEvent:$e})},ge=($e,xe,_e)=>{const{checkStrictly:Me,onCheck:He}=e,Ae=xe[C.value.key];let je;const at={event:\"check\",node:xe,checked:_e,nativeEvent:$e},ft=b.value;if(Me){const st=_e?Jo(c.value,Ae):Lo(c.value,Ae),pt=Lo(u.value,Ae);je={checked:st,halfChecked:pt},at.checkedNodes=st.map(gt=>ft[gt]).filter(gt=>gt).map(gt=>gt.node),e.checkedKeys===void 0&&(c.value=st)}else{let{checkedKeys:st,halfCheckedKeys:pt}=mo([...c.value,Ae],!0,ft,N.value,F.value);if(!_e){const gt=new Set(st);gt.delete(Ae),{checkedKeys:st,halfCheckedKeys:pt}=mo(Array.from(gt),{halfCheckedKeys:pt},ft,N.value,F.value)}je=st,at.checkedNodes=[],at.checkedNodesPositions=[],at.halfCheckedKeys=pt,st.forEach(gt=>{const Ut=ft[gt];if(!Ut)return;const{node:en,pos:ln}=Ut;at.checkedNodes.push(en),at.checkedNodesPositions.push({node:en,pos:ln})}),e.checkedKeys===void 0&&(c.value=st,u.value=pt)}He&&He(je,at)},Se=$e=>{const xe=$e[C.value.key],_e=new Promise((Me,He)=>{const{loadData:Ae,onLoad:je}=e;if(!Ae||D.value.has(xe)||z.value.has(xe))return null;Ae($e).then(()=>{const ft=Jo(d.value,xe),st=Lo(p.value,xe);je&&je(ft,{event:\"load\",node:$e}),e.loadedKeys===void 0&&(d.value=ft),p.value=st,Me()}).catch(ft=>{const st=Lo(p.value,xe);if(p.value=st,g[xe]=(g[xe]||0)+1,g[xe]>=oV){const pt=Jo(d.value,xe);e.loadedKeys===void 0&&(d.value=pt),Me()}He(ft)}),p.value=Jo(p.value,xe)});return _e.catch(()=>{}),_e},X=($e,xe)=>{const{onMouseenter:_e}=e;_e&&_e({event:$e,node:xe})},U=($e,xe)=>{const{onMouseleave:_e}=e;_e&&_e({event:$e,node:xe})},ie=($e,xe)=>{const{onRightClick:_e}=e;_e&&($e.preventDefault(),_e({event:$e,node:xe}))},ve=$e=>{const{onFocus:xe}=e;S.value=!0,xe&&xe($e)},me=$e=>{const{onBlur:xe}=e;S.value=!1,ae(null),xe&&xe($e)},he=($e,xe)=>{let _e=m.value;const{onExpand:Me,loadData:He}=e,{expanded:Ae}=xe,je=xe[C.value.key];if(w.value)return;_e.indexOf(je);const at=!Ae;if(at?_e=Jo(_e,je):_e=Lo(_e,je),K(_e),Me&&Me(_e,{node:xe,expanded:at,nativeEvent:$e}),at&&He){const ft=Se(xe);ft&&ft.then(()=>{}).catch(st=>{const pt=Lo(m.value,je);K(pt),Promise.reject(st)})}},se=()=>{w.value=!0},te=()=>{setTimeout(()=>{w.value=!1})},ae=$e=>{const{onActiveChange:xe}=e;$.value!==$e&&(e.activeKey!==void 0&&($.value=$e),$e!==null&&H({key:$e}),xe&&xe($e))},fe=I(()=>$.value===null?null:L.value.find($e=>{let{key:xe}=$e;return xe===$.value})||null),Ie=$e=>{let xe=L.value.findIndex(Me=>{let{key:He}=Me;return He===$.value});xe===-1&&$e<0&&(xe=L.value.length),xe=(xe+$e+L.value.length)%L.value.length;const _e=L.value[xe];if(_e){const{key:Me}=_e;ae(Me)}else ae(null)},Te=I(()=>rc(h(h({},oc($.value,M.value)),{data:fe.value.data,active:!0}))),Re=$e=>{const{onKeydown:xe,checkable:_e,selectable:Me}=e;switch($e.which){case we.UP:{Ie(-1),$e.preventDefault();break}case we.DOWN:{Ie(1),$e.preventDefault();break}}const He=fe.value;if(He&&He.data){const Ae=He.data.isLeaf===!1||!!(He.data.children||[]).length,je=Te.value;switch($e.which){case we.LEFT:{Ae&&E.value.has($.value)?he({},je):He.parent&&ae(He.parent.key),$e.preventDefault();break}case we.RIGHT:{Ae&&!E.value.has($.value)?he({},je):He.children&&He.children.length&&ae(He.children[0].key),$e.preventDefault();break}case we.ENTER:case we.SPACE:{_e&&!je.disabled&&je.checkable!==!1&&!je.disableCheckbox?ge({},je,!T.value.has($.value)):!_e&&Me&&!je.disabled&&je.selectable!==!1&&Ce({},je);break}}}xe&&xe($e)};return r({onNodeExpand:he,scrollTo:H,onKeydown:Re,selectedKeys:I(()=>s.value),checkedKeys:I(()=>c.value),halfCheckedKeys:I(()=>u.value),loadedKeys:I(()=>d.value),loadingKeys:I(()=>p.value),expandedKeys:I(()=>m.value)}),Mn(()=>{window.removeEventListener(\"dragend\",q),l.value=!0}),Q8({expandedKeys:m,selectedKeys:s,loadedKeys:d,loadingKeys:p,checkedKeys:c,halfCheckedKeys:u,expandedKeysSet:E,selectedKeysSet:R,loadedKeysSet:D,loadingKeysSet:z,checkedKeysSet:T,halfCheckedKeysSet:k,flattenNodes:L}),()=>{const{draggingNodeKey:$e,dropLevelOffset:xe,dropContainerKey:_e,dropTargetKey:Me,dropPosition:He,dragOverNodeKey:Ae}=v,{prefixCls:je,showLine:at,focusable:ft,tabindex:st=0,selectable:pt,showIcon:gt,icon:Ut=o.icon,switcherIcon:en,draggable:ln,checkable:Ht,checkStrictly:bn,disabled:An,motion:no,loadData:So,filterTreeNode:Dn,height:Yr,itemHeight:Oe,virtual:Ye,dropIndicatorRender:Xe,onContextmenu:It,onScroll:tn,direction:jt,rootClassName:Rn,rootStyle:pn}=e,{class:Ro,style:Vn}=n,oo=Gr(h(h({},e),n),{aria:!0,data:!0});let Nt;return ln?typeof ln==\"object\"?Nt=ln:typeof ln==\"function\"?Nt={nodeDraggable:ln}:Nt={}:Nt=!1,f(Z8,{value:{prefixCls:je,selectable:pt,showIcon:gt,icon:Ut,switcherIcon:en,draggable:Nt,draggingNodeKey:$e,checkable:Ht,customCheckable:o.checkable,checkStrictly:bn,disabled:An,keyEntities:b.value,dropLevelOffset:xe,dropContainerKey:_e,dropTargetKey:Me,dropPosition:He,dragOverNodeKey:Ae,dragging:$e!==null,indent:i.value,direction:jt,dropIndicatorRender:Xe,loadData:So,filterTreeNode:Dn,onNodeClick:ue,onNodeDoubleClick:be,onNodeExpand:he,onNodeSelect:Ce,onNodeCheck:ge,onNodeLoad:Se,onNodeMouseEnter:X,onNodeMouseLeave:U,onNodeContextMenu:ie,onNodeDragStart:Z,onNodeDragEnter:oe,onNodeDragOver:re,onNodeDragLeave:Y,onNodeDragEnd:V,onNodeDrop:Q,slots:o}},{default:()=>[f(\"div\",{role:\"tree\",class:le(je,Ro,Rn,{[`${je}-show-line`]:at,[`${je}-focused`]:S.value,[`${je}-active-focused`]:$.value!==null}),style:pn},[f(tV,A({ref:_,prefixCls:je,style:Vn,disabled:An,selectable:pt,checkable:!!Ht,motion:no,height:Yr,itemHeight:Oe,virtual:Ye,focusable:ft,focused:S.value,tabindex:st,activeItem:fe.value,onFocus:ve,onBlur:me,onKeydown:Re,onActiveChange:ae,onListChangeStart:se,onListChangeEnd:te,onContextmenu:It,onScroll:tn},oo),null)])]})}}});function S_(e,t,n,o,r){const{isLeaf:l,expanded:a,loading:i}=n;let s=t;if(i)return f(Qn,{class:`${e}-switcher-loading-icon`},null);let c;r&&typeof r==\"object\"&&(c=r.showLeafIcon);let u=null;const d=`${e}-switcher-icon`;return l?r?c&&o?o(n):(typeof r==\"object\"&&!c?u=f(\"span\",{class:`${e}-switcher-leaf-line`},null):u=f(r$,{class:`${e}-switcher-line-icon`},null),u):null:(u=f(YI,{class:d},null),r&&(u=a?f(qI,{class:`${e}-switcher-line-icon`},null):f(ZI,{class:`${e}-switcher-line-icon`},null)),typeof t==\"function\"?s=t(h(h({},n),{defaultIcon:u,switcherCls:d})):Kt(s)&&(s=Oo(s,{class:d})),s||u)}const hS=4;function rV(e){const{dropPosition:t,dropLevelOffset:n,prefixCls:o,indent:r,direction:l=\"ltr\"}=e,a=l===\"ltr\"?\"left\":\"right\",i=l===\"ltr\"?\"right\":\"left\",s={[a]:`${-n*r+hS}px`,[i]:0};switch(t){case-1:s.top=\"-3px\";break;case 1:s.bottom=\"-3px\";break;default:s.bottom=\"-3px\",s[a]=`${r+hS}px`;break}return f(\"div\",{style:s,class:`${o}-drop-indicator`},null)}const lV=new lt(\"ant-tree-node-fx-do-not-use\",{\"0%\":{opacity:0},\"100%\":{opacity:1}}),aV=(e,t)=>({[`.${e}-switcher-icon`]:{display:\"inline-block\",fontSize:10,verticalAlign:\"baseline\",svg:{transition:`transform ${t.motionDurationSlow}`}}}),iV=(e,t)=>({[`.${e}-drop-indicator`]:{position:\"absolute\",zIndex:1,height:2,backgroundColor:t.colorPrimary,borderRadius:1,pointerEvents:\"none\",\"&:after\":{position:\"absolute\",top:-3,insetInlineStart:-6,width:8,height:8,backgroundColor:\"transparent\",border:`${t.lineWidthBold}px solid ${t.colorPrimary}`,borderRadius:\"50%\",content:'\"\"'}}}),sV=(e,t)=>{const{treeCls:n,treeNodeCls:o,treeNodePadding:r,treeTitleHeight:l}=t,a=(l-t.fontSizeLG)/2,i=t.paddingXS;return{[n]:h(h({},Ue(t)),{background:t.colorBgContainer,borderRadius:t.borderRadius,transition:`background-color ${t.motionDurationSlow}`,[`&${n}-rtl`]:{[`${n}-switcher`]:{\"&_close\":{[`${n}-switcher-icon`]:{svg:{transform:\"rotate(90deg)\"}}}}},[`&-focused:not(:hover):not(${n}-active-focused)`]:h({},dr(t)),[`${n}-list-holder-inner`]:{alignItems:\"flex-start\"},[`&${n}-block-node`]:{[`${n}-list-holder-inner`]:{alignItems:\"stretch\",[`${n}-node-content-wrapper`]:{flex:\"auto\"},[`${o}.dragging`]:{position:\"relative\",\"&:after\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:r,insetInlineStart:0,border:`1px solid ${t.colorPrimary}`,opacity:0,animationName:lV,animationDuration:t.motionDurationSlow,animationPlayState:\"running\",animationFillMode:\"forwards\",content:'\"\"',pointerEvents:\"none\"}}}},[`${o}`]:{display:\"flex\",alignItems:\"flex-start\",padding:`0 0 ${r}px 0`,outline:\"none\",\"&-rtl\":{direction:\"rtl\"},\"&-disabled\":{[`${n}-node-content-wrapper`]:{color:t.colorTextDisabled,cursor:\"not-allowed\",\"&:hover\":{background:\"transparent\"}}},[`&-active ${n}-node-content-wrapper`]:h({},dr(t)),[`&:not(${o}-disabled).filter-node ${n}-title`]:{color:\"inherit\",fontWeight:500},\"&-draggable\":{[`${n}-draggable-icon`]:{width:l,lineHeight:`${l}px`,textAlign:\"center\",visibility:\"visible\",opacity:.2,transition:`opacity ${t.motionDurationSlow}`,[`${o}:hover &`]:{opacity:.45}},[`&${o}-disabled`]:{[`${n}-draggable-icon`]:{visibility:\"hidden\"}}}},[`${n}-indent`]:{alignSelf:\"stretch\",whiteSpace:\"nowrap\",userSelect:\"none\",\"&-unit\":{display:\"inline-block\",width:l}},[`${n}-draggable-icon`]:{visibility:\"hidden\"},[`${n}-switcher`]:h(h({},aV(e,t)),{position:\"relative\",flex:\"none\",alignSelf:\"stretch\",width:l,margin:0,lineHeight:`${l}px`,textAlign:\"center\",cursor:\"pointer\",userSelect:\"none\",\"&-noop\":{cursor:\"default\"},\"&_close\":{[`${n}-switcher-icon`]:{svg:{transform:\"rotate(-90deg)\"}}},\"&-loading-icon\":{color:t.colorPrimary},\"&-leaf-line\":{position:\"relative\",zIndex:1,display:\"inline-block\",width:\"100%\",height:\"100%\",\"&:before\":{position:\"absolute\",top:0,insetInlineEnd:l/2,bottom:-r,marginInlineStart:-1,borderInlineEnd:`1px solid ${t.colorBorder}`,content:'\"\"'},\"&:after\":{position:\"absolute\",width:l/2*.8,height:l/2,borderBottom:`1px solid ${t.colorBorder}`,content:'\"\"'}}}),[`${n}-checkbox`]:{top:\"initial\",marginInlineEnd:i,marginBlockStart:a},[`${n}-node-content-wrapper, ${n}-checkbox + span`]:{position:\"relative\",zIndex:\"auto\",minHeight:l,margin:0,padding:`0 ${t.paddingXS/2}px`,color:\"inherit\",lineHeight:`${l}px`,background:\"transparent\",borderRadius:t.borderRadius,cursor:\"pointer\",transition:`all ${t.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,\"&:hover\":{backgroundColor:t.controlItemBgHover},[`&${n}-node-selected`]:{backgroundColor:t.controlItemBgActive},[`${n}-iconEle`]:{display:\"inline-block\",width:l,height:l,lineHeight:`${l}px`,textAlign:\"center\",verticalAlign:\"top\",\"&:empty\":{display:\"none\"}}},[`${n}-unselectable ${n}-node-content-wrapper:hover`]:{backgroundColor:\"transparent\"},[`${n}-node-content-wrapper`]:h({lineHeight:`${l}px`,userSelect:\"none\"},iV(e,t)),[`${o}.drop-container`]:{\"> [draggable]\":{boxShadow:`0 0 0 2px ${t.colorPrimary}`}},\"&-show-line\":{[`${n}-indent`]:{\"&-unit\":{position:\"relative\",height:\"100%\",\"&:before\":{position:\"absolute\",top:0,insetInlineEnd:l/2,bottom:-r,borderInlineEnd:`1px solid ${t.colorBorder}`,content:'\"\"'},\"&-end\":{\"&:before\":{display:\"none\"}}}},[`${n}-switcher`]:{background:\"transparent\",\"&-line-icon\":{verticalAlign:\"-0.15em\"}}},[`${o}-leaf-last`]:{[`${n}-switcher`]:{\"&-leaf-line\":{\"&:before\":{top:\"auto !important\",bottom:\"auto !important\",height:`${l/2}px !important`}}}}})}},cV=e=>{const{treeCls:t,treeNodeCls:n,treeNodePadding:o}=e;return{[`${t}${t}-directory`]:{[n]:{position:\"relative\",\"&:before\":{position:\"absolute\",top:0,insetInlineEnd:0,bottom:o,insetInlineStart:0,transition:`background-color ${e.motionDurationMid}`,content:'\"\"',pointerEvents:\"none\"},\"&:hover\":{\"&:before\":{background:e.controlItemBgHover}},\"> *\":{zIndex:1},[`${t}-switcher`]:{transition:`color ${e.motionDurationMid}`},[`${t}-node-content-wrapper`]:{borderRadius:0,userSelect:\"none\",\"&:hover\":{background:\"transparent\"},[`&${t}-node-selected`]:{color:e.colorTextLightSolid,background:\"transparent\"}},\"&-selected\":{\"\\n            &:hover::before,\\n            &::before\\n          \":{background:e.colorPrimary},[`${t}-switcher`]:{color:e.colorTextLightSolid},[`${t}-node-content-wrapper`]:{color:e.colorTextLightSolid,background:\"transparent\"}}}}}},$_=(e,t)=>{const n=`.${e}`,o=`${n}-treenode`,r=t.paddingXS/2,l=t.controlHeightSM,a=Le(t,{treeCls:n,treeNodeCls:o,treeNodePadding:r,treeTitleHeight:l});return[sV(e,a),cV(a)]},uV=Ge(\"Tree\",(e,t)=>{let{prefixCls:n}=t;return[{[e.componentCls]:yd(`${n}-checkbox`,e)},$_(n,e),Fi(e)]}),C_=()=>{const e=ew();return h(h({},e),{showLine:Fe([Boolean,Object]),multiple:ye(),autoExpandParent:ye(),checkStrictly:ye(),checkable:ye(),disabled:ye(),defaultExpandAll:ye(),defaultExpandParent:ye(),defaultExpandedKeys:ct(),expandedKeys:ct(),checkedKeys:Fe([Array,Object]),defaultCheckedKeys:ct(),selectedKeys:ct(),defaultSelectedKeys:ct(),selectable:ye(),loadedKeys:ct(),draggable:ye(),showIcon:ye(),icon:de(),switcherIcon:W.any,prefixCls:String,replaceFields:De(),blockNode:ye(),openAnimation:W.any,onDoubleclick:e.onDblclick,\"onUpdate:selectedKeys\":de(),\"onUpdate:checkedKeys\":de(),\"onUpdate:expandedKeys\":de()})},$c=ne({compatConfig:{MODE:3},name:\"ATree\",inheritAttrs:!1,props:Ze(C_(),{checkable:!1,selectable:!0,showIcon:!1,blockNode:!1}),slots:Object,setup(e,t){let{attrs:n,expose:o,emit:r,slots:l}=t;e.treeData===void 0&&l.default;const{prefixCls:a,direction:i,virtual:s}=Pe(\"tree\",e),[c,u]=uV(a),d=J();o({treeRef:d,onNodeExpand:function(){var y;(y=d.value)===null||y===void 0||y.onNodeExpand(...arguments)},scrollTo:y=>{var b;(b=d.value)===null||b===void 0||b.scrollTo(y)},selectedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.selectedKeys}),checkedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.checkedKeys}),halfCheckedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.halfCheckedKeys}),loadedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.loadedKeys}),loadingKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.loadingKeys}),expandedKeys:I(()=>{var y;return(y=d.value)===null||y===void 0?void 0:y.expandedKeys})}),ze(()=>{Ot(e.replaceFields===void 0,\"Tree\",\"`replaceFields` is deprecated, please use fieldNames instead\")});const m=(y,b)=>{r(\"update:checkedKeys\",y),r(\"check\",y,b)},g=(y,b)=>{r(\"update:expandedKeys\",y),r(\"expand\",y,b)},v=(y,b)=>{r(\"update:selectedKeys\",y),r(\"select\",y,b)};return()=>{const{showIcon:y,showLine:b,switcherIcon:S=l.switcherIcon,icon:$=l.icon,blockNode:w,checkable:C,selectable:_,fieldNames:x=e.replaceFields,motion:P=e.openAnimation,itemHeight:O=28,onDoubleclick:M,onDblclick:E}=e,R=h(h(h({},n),ot(e,[\"onUpdate:checkedKeys\",\"onUpdate:expandedKeys\",\"onUpdate:selectedKeys\",\"onDoubleclick\"])),{showLine:!!b,dropIndicatorRender:rV,fieldNames:x,icon:$,itemHeight:O}),D=l.default?kt(l.default()):void 0;return c(f(y_,A(A({},R),{},{virtual:s.value,motion:P,ref:d,prefixCls:a.value,class:le({[`${a.value}-icon-hide`]:!y,[`${a.value}-block-node`]:w,[`${a.value}-unselectable`]:!_,[`${a.value}-rtl`]:i.value===\"rtl\"},n.class,u.value),direction:i.value,checkable:C,selectable:_,switcherIcon:z=>S_(a.value,S,z,l.leafIcon,b),onCheck:m,onExpand:g,onSelect:v,onDblclick:E||M,children:D}),h(h({},l),{checkable:()=>f(\"span\",{class:`${a.value}-checkbox-inner`},null)})))}}});var tr;(function(e){e[e.None=0]=\"None\",e[e.Start=1]=\"Start\",e[e.End=2]=\"End\"})(tr||(tr={}));function Xg(e,t,n){function o(r){const l=r[t.key],a=r[t.children];n(l,r)!==!1&&Xg(a||[],t,n)}e.forEach(o)}function dV(e){let{treeData:t,expandedKeys:n,startKey:o,endKey:r,fieldNames:l={title:\"title\",key:\"key\",children:\"children\"}}=e;const a=[];let i=tr.None;if(o&&o===r)return[o];if(!o||!r)return[];function s(c){return c===o||c===r}return Xg(t,l,c=>{if(i===tr.End)return!1;if(s(c)){if(a.push(c),i===tr.None)i=tr.Start;else if(i===tr.Start)return i=tr.End,!1}else i===tr.Start&&a.push(c);return n.includes(c)}),a}function Nf(e,t,n){const o=[...t],r=[];return Xg(e,n,(l,a)=>{const i=o.indexOf(l);return i!==-1&&(r.push(a),o.splice(i,1)),!!o.length}),r}var fV=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const pV=()=>h(h({},C_()),{expandAction:Fe([Boolean,String])});function mV(e){const{isLeaf:t,expanded:n}=e;return t?f(r$,null,null):n?f(QI,null,null):f(JI,null,null)}const Cc=ne({compatConfig:{MODE:3},name:\"ADirectoryTree\",inheritAttrs:!1,props:Ze(pV(),{showIcon:!0,expandAction:\"click\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,emit:r,expose:l}=t;var a;const i=J(e.treeData||Hp(kt((a=o.default)===null||a===void 0?void 0:a.call(o))));pe(()=>e.treeData,()=>{i.value=e.treeData}),Hn(()=>{it(()=>{var O;e.treeData===void 0&&o.default&&(i.value=Hp(kt((O=o.default)===null||O===void 0?void 0:O.call(o))))})});const s=J(),c=J(),u=I(()=>dd(e.fieldNames)),d=J();l({scrollTo:O=>{var M;(M=d.value)===null||M===void 0||M.scrollTo(O)},selectedKeys:I(()=>{var O;return(O=d.value)===null||O===void 0?void 0:O.selectedKeys}),checkedKeys:I(()=>{var O;return(O=d.value)===null||O===void 0?void 0:O.checkedKeys}),halfCheckedKeys:I(()=>{var O;return(O=d.value)===null||O===void 0?void 0:O.halfCheckedKeys}),loadedKeys:I(()=>{var O;return(O=d.value)===null||O===void 0?void 0:O.loadedKeys}),loadingKeys:I(()=>{var O;return(O=d.value)===null||O===void 0?void 0:O.loadingKeys}),expandedKeys:I(()=>{var O;return(O=d.value)===null||O===void 0?void 0:O.expandedKeys})});const m=()=>{const{keyEntities:O}=Xi(i.value,{fieldNames:u.value});let M;return e.defaultExpandAll?M=Object.keys(O):e.defaultExpandParent?M=zp(e.expandedKeys||e.defaultExpandedKeys||[],O):M=e.expandedKeys||e.defaultExpandedKeys,M},g=J(e.selectedKeys||e.defaultSelectedKeys||[]),v=J(m());pe(()=>e.selectedKeys,()=>{e.selectedKeys!==void 0&&(g.value=e.selectedKeys)},{immediate:!0}),pe(()=>e.expandedKeys,()=>{e.expandedKeys!==void 0&&(v.value=e.expandedKeys)},{immediate:!0});const b=Dm((O,M)=>{const{isLeaf:E}=M;E||O.shiftKey||O.metaKey||O.ctrlKey||d.value.onNodeExpand(O,M)},200,{leading:!0}),S=(O,M)=>{e.expandedKeys===void 0&&(v.value=O),r(\"update:expandedKeys\",O),r(\"expand\",O,M)},$=(O,M)=>{const{expandAction:E}=e;E===\"click\"&&b(O,M),r(\"click\",O,M)},w=(O,M)=>{const{expandAction:E}=e;(E===\"dblclick\"||E===\"doubleclick\")&&b(O,M),r(\"doubleclick\",O,M),r(\"dblclick\",O,M)},C=(O,M)=>{const{multiple:E}=e,{node:R,nativeEvent:D}=M,z=R[u.value.key],T=h(h({},M),{selected:!0}),k=D?.ctrlKey||D?.metaKey,B=D?.shiftKey;let L;E&&k?(L=O,s.value=z,c.value=L,T.selectedNodes=Nf(i.value,L,u.value)):E&&B?(L=Array.from(new Set([...c.value||[],...dV({treeData:i.value,expandedKeys:v.value,startKey:z,endKey:s.value,fieldNames:u.value})])),T.selectedNodes=Nf(i.value,L,u.value)):(L=[z],s.value=z,c.value=L,T.selectedNodes=Nf(i.value,L,u.value)),r(\"update:selectedKeys\",L),r(\"select\",L,T),e.selectedKeys===void 0&&(g.value=L)},_=(O,M)=>{r(\"update:checkedKeys\",O),r(\"check\",O,M)},{prefixCls:x,direction:P}=Pe(\"tree\",e);return()=>{const O=le(`${x.value}-directory`,{[`${x.value}-directory-rtl`]:P.value===\"rtl\"},n.class),{icon:M=o.icon,blockNode:E=!0}=e,R=fV(e,[\"icon\",\"blockNode\"]);return f($c,A(A(A({},n),{},{icon:M||mV,ref:d,blockNode:E},R),{},{prefixCls:x.value,class:O,expandedKeys:v.value,selectedKeys:g.value,onSelect:C,onClick:$,onDblclick:w,onExpand:S,onCheck:_}),o)}}}),xc=Fp,x_=h($c,{DirectoryTree:Cc,TreeNode:xc,install:e=>(e.component($c.name,$c),e.component(xc.name,xc),e.component(Cc.name,Cc),e)});function bS(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const o=new Set;function r(l,a){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;const s=o.has(l);if(Zm(!s,\"Warning: There may be circular references\"),s)return!1;if(l===a)return!0;if(n&&i>1)return!1;o.add(l);const c=i+1;if(Array.isArray(l)){if(!Array.isArray(a)||l.length!==a.length)return!1;for(let u=0;u<l.length;u++)if(!r(l[u],a[u],c))return!1;return!0}if(l&&a&&typeof l==\"object\"&&typeof a==\"object\"){const u=Object.keys(l);return u.length!==Object.keys(a).length?!1:u.every(d=>r(l[d],a[d],c))}return!1}return r(e,t)}const{SubMenu:vV,Item:gV}=Ft;function hV(e){return e.some(t=>{let{children:n}=t;return n&&n.length>0})}function w_(e,t){return typeof t==\"string\"||typeof t==\"number\"?t?.toString().toLowerCase().includes(e.trim().toLowerCase()):!1}function __(e){let{filters:t,prefixCls:n,filteredKeys:o,filterMultiple:r,searchValue:l,filterSearch:a}=e;return t.map((i,s)=>{const c=String(i.value);if(i.children)return f(vV,{key:c||s,title:i.text,popupClassName:`${n}-dropdown-submenu`},{default:()=>[__({filters:i.children,prefixCls:n,filteredKeys:o,filterMultiple:r,searchValue:l,filterSearch:a})]});const u=r?Zn:In,d=f(gV,{key:i.value!==void 0?c:s},{default:()=>[f(u,{checked:o.includes(c)},null),f(\"span\",null,[i.text])]});return l.trim()?typeof a==\"function\"?a(l,i)?d:void 0:w_(l,i.text)?d:void 0:d})}const bV=ne({name:\"FilterDropdown\",props:[\"tablePrefixCls\",\"prefixCls\",\"dropdownPrefixCls\",\"column\",\"filterState\",\"filterMultiple\",\"filterMode\",\"filterSearch\",\"columnKey\",\"triggerFilter\",\"locale\",\"getPopupContainer\"],setup(e,t){let{slots:n}=t;const o=Vg(),r=I(()=>{var H;return(H=e.filterMode)!==null&&H!==void 0?H:\"menu\"}),l=I(()=>{var H;return(H=e.filterSearch)!==null&&H!==void 0?H:!1}),a=I(()=>e.column.filterDropdownOpen||e.column.filterDropdownVisible),i=I(()=>e.column.onFilterDropdownOpenChange||e.column.onFilterDropdownVisibleChange),s=ee(!1),c=I(()=>{var H;return!!(e.filterState&&(!((H=e.filterState.filteredKeys)===null||H===void 0)&&H.length||e.filterState.forceFiltered))}),u=I(()=>{var H;return Td((H=e.column)===null||H===void 0?void 0:H.filters)}),d=I(()=>{const{filterDropdown:H,slots:K={},customFilterDropdown:G}=e.column;return H||K.filterDropdown&&o.value[K.filterDropdown]||G&&o.value.customFilterDropdown}),p=I(()=>{const{filterIcon:H,slots:K={}}=e.column;return H||K.filterIcon&&o.value[K.filterIcon]||o.value.customFilterIcon}),m=H=>{var K;s.value=H,(K=i.value)===null||K===void 0||K.call(i,H)},g=I(()=>typeof a.value==\"boolean\"?a.value:s.value),v=I(()=>{var H;return(H=e.filterState)===null||H===void 0?void 0:H.filteredKeys}),y=ee([]),b=H=>{let{selectedKeys:K}=H;y.value=K},S=(H,K)=>{let{node:G,checked:V}=K;e.filterMultiple?b({selectedKeys:H}):b({selectedKeys:V&&G.key?[G.key]:[]})};pe(v,()=>{s.value&&b({selectedKeys:v.value||[]})},{immediate:!0});const $=ee([]),w=ee(),C=H=>{w.value=setTimeout(()=>{$.value=H})},_=()=>{clearTimeout(w.value)};et(()=>{clearTimeout(w.value)});const x=ee(\"\"),P=H=>{const{value:K}=H.target;x.value=K};pe(s,()=>{s.value||(x.value=\"\")});const O=H=>{const{column:K,columnKey:G,filterState:V}=e,q=H&&H.length?H:null;if(q===null&&(!V||!V.filteredKeys)||bS(q,V?.filteredKeys,!0))return null;e.triggerFilter({column:K,key:G,filteredKeys:q})},M=()=>{m(!1),O(y.value)},E=function(){let{confirm:H,closeDropdown:K}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1};H&&O([]),K&&m(!1),x.value=\"\",e.column.filterResetToDefaultFilteredValue?y.value=(e.column.defaultFilteredValue||[]).map(G=>String(G)):y.value=[]},R=function(){let{closeDropdown:H}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0};H&&m(!1),O(y.value)},D=H=>{H&&v.value!==void 0&&(y.value=v.value||[]),m(H),!H&&!d.value&&M()},{direction:z}=Pe(\"\",e),T=H=>{if(H.target.checked){const K=u.value;y.value=K}else y.value=[]},k=H=>{let{filters:K}=H;return(K||[]).map((G,V)=>{const q=String(G.value),Z={title:G.text,key:G.value!==void 0?q:V};return G.children&&(Z.children=k({filters:G.children})),Z})},B=H=>{var K;return h(h({},H),{text:H.title,value:H.key,children:((K=H.children)===null||K===void 0?void 0:K.map(G=>B(G)))||[]})},L=I(()=>k({filters:e.column.filters})),N=I(()=>le({[`${e.dropdownPrefixCls}-menu-without-submenu`]:!hV(e.column.filters||[])})),F=()=>{const H=y.value,{column:K,locale:G,tablePrefixCls:V,filterMultiple:q,dropdownPrefixCls:Z,getPopupContainer:oe,prefixCls:re}=e;return(K.filters||[]).length===0?f(uo,{image:uo.PRESENTED_IMAGE_SIMPLE,description:G.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:\"16px 0\"}},null):r.value===\"tree\"?f(Ve,null,[f(cS,{filterSearch:l.value,value:x.value,onChange:P,tablePrefixCls:V,locale:G},null),f(\"div\",{class:`${V}-filter-dropdown-tree`},[q?f(Zn,{class:`${V}-filter-dropdown-checkall`,onChange:T,checked:H.length===u.value.length,indeterminate:H.length>0&&H.length<u.value.length},{default:()=>[G.filterCheckall]}):null,f(x_,{checkable:!0,selectable:!1,blockNode:!0,multiple:q,checkStrictly:!q,class:`${Z}-menu`,onCheck:S,checkedKeys:H,selectedKeys:H,showIcon:!1,treeData:L.value,autoExpandParent:!0,defaultExpandAll:!0,filterTreeNode:x.value.trim()?Y=>typeof l.value==\"function\"?l.value(x.value,B(Y)):w_(x.value,Y.title):void 0},null)])]):f(Ve,null,[f(cS,{filterSearch:l.value,value:x.value,onChange:P,tablePrefixCls:V,locale:G},null),f(Ft,{multiple:q,prefixCls:`${Z}-menu`,class:N.value,onClick:_,onSelect:b,onDeselect:b,selectedKeys:H,getPopupContainer:oe,openKeys:$.value,onOpenChange:C},{default:()=>__({filters:K.filters||[],filterSearch:l.value,prefixCls:re,filteredKeys:y.value,filterMultiple:q,searchValue:x.value})})])},j=I(()=>{const H=y.value;return e.column.filterResetToDefaultFilteredValue?bS((e.column.defaultFilteredValue||[]).map(K=>String(K)),H,!0):H.length===0});return()=>{var H;const{tablePrefixCls:K,prefixCls:G,column:V,dropdownPrefixCls:q,locale:Z,getPopupContainer:oe}=e;let re;typeof d.value==\"function\"?re=d.value({prefixCls:`${q}-custom`,setSelectedKeys:ce=>b({selectedKeys:ce}),selectedKeys:y.value,confirm:R,clearFilters:E,filters:V.filters,visible:g.value,column:V.__originColumn__,close:()=>{m(!1)}}):d.value?re=d.value:re=f(Ve,null,[F(),f(\"div\",{class:`${G}-dropdown-btns`},[f(_t,{type:\"link\",size:\"small\",disabled:j.value,onClick:()=>E()},{default:()=>[Z.filterReset]}),f(_t,{type:\"primary\",size:\"small\",onClick:M},{default:()=>[Z.filterConfirm]})])]);const Y=f(qW,{class:`${G}-dropdown`},{default:()=>[re]});let Q;return typeof p.value==\"function\"?Q=p.value({filtered:c.value,column:V.__originColumn__}):p.value?Q=p.value:Q=f(eP,null,null),f(\"div\",{class:`${G}-column`},[f(\"span\",{class:`${K}-column-title`},[(H=n.default)===null||H===void 0?void 0:H.call(n)]),f(po,{overlay:Y,trigger:[\"click\"],open:g.value,onOpenChange:D,getPopupContainer:oe,placement:z.value===\"rtl\"?\"bottomLeft\":\"bottomRight\"},{default:()=>[f(\"span\",{role:\"button\",tabindex:-1,class:le(`${G}-trigger`,{active:c.value}),onClick:ce=>{ce.stopPropagation()}},[Q])]})])}}});function hm(e,t,n){let o=[];return(e||[]).forEach((r,l)=>{var a,i;const s=Ji(l,n),c=r.filterDropdown||((a=r?.slots)===null||a===void 0?void 0:a.filterDropdown)||r.customFilterDropdown;if(r.filters||c||\"onFilter\"in r)if(\"filteredValue\"in r){let u=r.filteredValue;c||(u=(i=u?.map(String))!==null&&i!==void 0?i:u),o.push({column:r,key:xl(r,s),filteredKeys:u,forceFiltered:r.filtered})}else o.push({column:r,key:xl(r,s),filteredKeys:t&&r.defaultFilteredValue?r.defaultFilteredValue:void 0,forceFiltered:r.filtered});\"children\"in r&&(o=[...o,...hm(r.children,t,s)])}),o}function I_(e,t,n,o,r,l,a,i){return n.map((s,c)=>{var u;const d=Ji(c,i),{filterMultiple:p=!0,filterMode:m,filterSearch:g}=s;let v=s;const y=s.filterDropdown||((u=s?.slots)===null||u===void 0?void 0:u.filterDropdown)||s.customFilterDropdown;if(v.filters||y){const b=xl(v,d),S=o.find($=>{let{key:w}=$;return b===w});v=h(h({},v),{title:$=>f(bV,{tablePrefixCls:e,prefixCls:`${e}-filter`,dropdownPrefixCls:t,column:v,columnKey:b,filterState:S,filterMultiple:p,filterMode:m,filterSearch:g,triggerFilter:l,locale:r,getPopupContainer:a},{default:()=>[Gg(s.title,$)]})})}return\"children\"in v&&(v=h(h({},v),{children:I_(e,t,v.children,o,r,l,a,d)})),v})}function Td(e){let t=[];return(e||[]).forEach(n=>{let{value:o,children:r}=n;t.push(o),r&&(t=[...t,...Td(r)])}),t}function yS(e){const t={};return e.forEach(n=>{let{key:o,filteredKeys:r,column:l}=n;var a;const i=l.filterDropdown||((a=l?.slots)===null||a===void 0?void 0:a.filterDropdown)||l.customFilterDropdown,{filters:s}=l;if(i)t[o]=r||null;else if(Array.isArray(r)){const c=Td(s);t[o]=c.filter(u=>r.includes(String(u)))}else t[o]=null}),t}function SS(e,t){return t.reduce((n,o)=>{const{column:{onFilter:r,filters:l},filteredKeys:a}=o;return r&&a&&a.length?n.filter(i=>a.some(s=>{const c=Td(l),u=c.findIndex(p=>String(p)===String(s)),d=u!==-1?c[u]:s;return r(d,i)})):n},e)}function P_(e){return e.flatMap(t=>\"children\"in t?[t,...P_(t.children||[])]:[t])}function yV(e){let{prefixCls:t,dropdownPrefixCls:n,mergedColumns:o,locale:r,onFilterChange:l,getPopupContainer:a}=e;const i=I(()=>P_(o.value)),[s,c]=ht(hm(i.value,!0)),u=I(()=>{const g=hm(i.value,!1);if(g.length===0)return g;let v=!0,y=!0;if(g.forEach(b=>{let{filteredKeys:S}=b;S!==void 0?v=!1:y=!1}),v){const b=(i.value||[]).map((S,$)=>xl(S,Ji($)));return s.value.filter(S=>{let{key:$}=S;return b.includes($)}).map(S=>{const $=i.value[b.findIndex(w=>w===S.key)];return h(h({},S),{column:h(h({},S.column),$),forceFiltered:$.filtered})})}return Ot(y,\"Table\",\"Columns should all contain `filteredValue` or not contain `filteredValue`.\"),g}),d=I(()=>yS(u.value)),p=g=>{const v=u.value.filter(y=>{let{key:b}=y;return b!==g.key});v.push(g),c(v),l(yS(v),v)};return[g=>I_(t.value,n.value,g,u.value,r.value,p,a.value),u,d]}function T_(e,t){return e.map(n=>{const o=h({},n);return o.title=Gg(o.title,t),\"children\"in o&&(o.children=T_(o.children,t)),o})}function SV(e){return[n=>T_(n,e.value)]}function $V(e){return function(n){let{prefixCls:o,onExpand:r,record:l,expanded:a,expandable:i}=n;const s=`${o}-row-expand-icon`;return f(\"button\",{type:\"button\",onClick:c=>{r(l,c),c.stopPropagation()},class:le(s,{[`${s}-spaced`]:!i,[`${s}-expanded`]:i&&a,[`${s}-collapsed`]:i&&!a}),\"aria-label\":a?e.collapse:e.expand,\"aria-expanded\":a},null)}}function O_(e,t){const n=t.value;return e.map(o=>{var r;if(o===er||o===Pr)return o;const l=h({},o),{slots:a={}}=l;return l.__originColumn__=o,Ot(!(\"slots\"in l),\"Table\",\"`column.slots` is deprecated. Please use `v-slot:headerCell` `v-slot:bodyCell` instead.\"),Object.keys(a).forEach(i=>{const s=a[i];l[i]===void 0&&n[s]&&(l[i]=n[s])}),t.value.headerCell&&!(!((r=o.slots)===null||r===void 0)&&r.title)&&(l.title=Wu(t.value,\"headerCell\",{title:o.title,column:o},()=>[o.title])),\"children\"in l&&Array.isArray(l.children)&&(l.children=O_(l.children,t)),l})}function CV(e){return[n=>O_(n,e)]}const xV=e=>{const{componentCls:t}=e,n=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`,o=(r,l,a)=>({[`&${t}-${r}`]:{[`> ${t}-container`]:{[`> ${t}-content, > ${t}-body`]:{\"> table > tbody > tr > td\":{[`> ${t}-expanded-row-fixed`]:{margin:`-${l}px -${a+e.lineWidth}px`}}}}}});return{[`${t}-wrapper`]:{[`${t}${t}-bordered`]:h(h(h({[`> ${t}-title`]:{border:n,borderBottom:0},[`> ${t}-container`]:{borderInlineStart:n,[`\n            > ${t}-content,\n            > ${t}-header,\n            > ${t}-body,\n            > ${t}-summary\n          `]:{\"> table\":{\"\\n                > thead > tr > th,\\n                > tbody > tr > td,\\n                > tfoot > tr > th,\\n                > tfoot > tr > td\\n              \":{borderInlineEnd:n},\"> thead\":{\"> tr:not(:last-child) > th\":{borderBottom:n},\"> tr > th::before\":{backgroundColor:\"transparent !important\"}},\"\\n                > thead > tr,\\n                > tbody > tr,\\n                > tfoot > tr\\n              \":{[`> ${t}-cell-fix-right-first::after`]:{borderInlineEnd:n}},\"> tbody > tr > td\":{[`> ${t}-expanded-row-fixed`]:{margin:`-${e.tablePaddingVertical}px -${e.tablePaddingHorizontal+e.lineWidth}px`,\"&::after\":{position:\"absolute\",top:0,insetInlineEnd:e.lineWidth,bottom:0,borderInlineEnd:n,content:'\"\"'}}}}},[`\n            > ${t}-content,\n            > ${t}-header\n          `]:{\"> table\":{borderTop:n}}},[`&${t}-scroll-horizontal`]:{[`> ${t}-container > ${t}-body`]:{\"> table > tbody\":{[`\n                > tr${t}-expanded-row,\n                > tr${t}-placeholder\n              `]:{\"> td\":{borderInlineEnd:0}}}}}},o(\"middle\",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle)),o(\"small\",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall)),{[`> ${t}-footer`]:{border:n,borderTop:0}}),[`${t}-cell`]:{[`${t}-container:first-child`]:{borderTop:0},\"&-scrollbar:not([rowspan])\":{boxShadow:`0 ${e.lineWidth}px 0 ${e.lineWidth}px ${e.tableHeaderBg}`}}}}},wV=e=>{const{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-cell-ellipsis`]:h(h({},Gt),{wordBreak:\"keep-all\",[`\n          &${t}-cell-fix-left-last,\n          &${t}-cell-fix-right-first\n        `]:{overflow:\"visible\",[`${t}-cell-content`]:{display:\"block\",overflow:\"hidden\",textOverflow:\"ellipsis\"}},[`${t}-column-title`]:{overflow:\"hidden\",textOverflow:\"ellipsis\",wordBreak:\"keep-all\"}})}}},_V=e=>{const{componentCls:t}=e;return{[`${t}-wrapper`]:{[`${t}-tbody > tr${t}-placeholder`]:{textAlign:\"center\",color:e.colorTextDisabled,\"&:hover > td\":{background:e.colorBgContainer}}}}},IV=e=>{const{componentCls:t,antCls:n,controlInteractiveSize:o,motionDurationSlow:r,lineWidth:l,paddingXS:a,lineType:i,tableBorderColor:s,tableExpandIconBg:c,tableExpandColumnWidth:u,borderRadius:d,fontSize:p,fontSizeSM:m,lineHeight:g,tablePaddingVertical:v,tablePaddingHorizontal:y,tableExpandedRowBg:b,paddingXXS:S}=e,$=o/2-l,w=$*2+l*3,C=`${l}px ${i} ${s}`,_=S-l;return{[`${t}-wrapper`]:{[`${t}-expand-icon-col`]:{width:u},[`${t}-row-expand-icon-cell`]:{textAlign:\"center\",[`${t}-row-expand-icon`]:{display:\"inline-flex\",float:\"none\",verticalAlign:\"sub\"}},[`${t}-row-indent`]:{height:1,float:\"left\"},[`${t}-row-expand-icon`]:h(h({},zu(e)),{position:\"relative\",float:\"left\",boxSizing:\"border-box\",width:w,height:w,padding:0,color:\"inherit\",lineHeight:`${w}px`,background:c,border:C,borderRadius:d,transform:`scale(${o/w})`,transition:`all ${r}`,userSelect:\"none\",\"&:focus, &:hover, &:active\":{borderColor:\"currentcolor\"},\"&::before, &::after\":{position:\"absolute\",background:\"currentcolor\",transition:`transform ${r} ease-out`,content:'\"\"'},\"&::before\":{top:$,insetInlineEnd:_,insetInlineStart:_,height:l},\"&::after\":{top:_,bottom:_,insetInlineStart:$,width:l,transform:\"rotate(90deg)\"},\"&-collapsed::before\":{transform:\"rotate(-180deg)\"},\"&-collapsed::after\":{transform:\"rotate(0deg)\"},\"&-spaced\":{\"&::before, &::after\":{display:\"none\",content:\"none\"},background:\"transparent\",border:0,visibility:\"hidden\"}}),[`${t}-row-indent + ${t}-row-expand-icon`]:{marginTop:(p*g-l*3)/2-Math.ceil((m*1.4-l*3)/2),marginInlineEnd:a},[`tr${t}-expanded-row`]:{\"&, &:hover\":{\"> td\":{background:b}},[`${n}-descriptions-view`]:{display:\"flex\",table:{flex:\"auto\",width:\"auto\"}}},[`${t}-expanded-row-fixed`]:{position:\"relative\",margin:`-${v}px -${y}px`,padding:`${v}px ${y}px`}}}},PV=e=>{const{componentCls:t,antCls:n,iconCls:o,tableFilterDropdownWidth:r,tableFilterDropdownSearchWidth:l,paddingXXS:a,paddingXS:i,colorText:s,lineWidth:c,lineType:u,tableBorderColor:d,tableHeaderIconColor:p,fontSizeSM:m,tablePaddingHorizontal:g,borderRadius:v,motionDurationSlow:y,colorTextDescription:b,colorPrimary:S,tableHeaderFilterActiveBg:$,colorTextDisabled:w,tableFilterDropdownBg:C,tableFilterDropdownHeight:_,controlItemBgHover:x,controlItemBgActive:P,boxShadowSecondary:O}=e,M=`${n}-dropdown`,E=`${t}-filter-dropdown`,R=`${n}-tree`,D=`${c}px ${u} ${d}`;return[{[`${t}-wrapper`]:{[`${t}-filter-column`]:{display:\"flex\",justifyContent:\"space-between\"},[`${t}-filter-trigger`]:{position:\"relative\",display:\"flex\",alignItems:\"center\",marginBlock:-a,marginInline:`${a}px ${-g/2}px`,padding:`0 ${a}px`,color:p,fontSize:m,borderRadius:v,cursor:\"pointer\",transition:`all ${y}`,\"&:hover\":{color:b,background:$},\"&.active\":{color:S}}}},{[`${n}-dropdown`]:{[E]:h(h({},Ue(e)),{minWidth:r,backgroundColor:C,borderRadius:v,boxShadow:O,[`${M}-menu`]:{maxHeight:_,overflowX:\"hidden\",border:0,boxShadow:\"none\",\"&:empty::after\":{display:\"block\",padding:`${i}px 0`,color:w,fontSize:m,textAlign:\"center\",content:'\"Not Found\"'}},[`${E}-tree`]:{paddingBlock:`${i}px 0`,paddingInline:i,[R]:{padding:0},[`${R}-treenode ${R}-node-content-wrapper:hover`]:{backgroundColor:x},[`${R}-treenode-checkbox-checked ${R}-node-content-wrapper`]:{\"&, &:hover\":{backgroundColor:P}}},[`${E}-search`]:{padding:i,borderBottom:D,\"&-input\":{input:{minWidth:l},[o]:{color:w}}},[`${E}-checkall`]:{width:\"100%\",marginBottom:a,marginInlineStart:a},[`${E}-btns`]:{display:\"flex\",justifyContent:\"space-between\",padding:`${i-c}px ${i}px`,overflow:\"hidden\",backgroundColor:\"inherit\",borderTop:D}})}},{[`${n}-dropdown ${E}, ${E}-submenu`]:{[`${n}-checkbox-wrapper + span`]:{paddingInlineStart:i,color:s},\"> ul\":{maxHeight:\"calc(100vh - 130px)\",overflowX:\"hidden\",overflowY:\"auto\"}}}]},TV=e=>{const{componentCls:t,lineWidth:n,colorSplit:o,motionDurationSlow:r,zIndexTableFixed:l,tableBg:a,zIndexTableSticky:i}=e,s=o;return{[`${t}-wrapper`]:{[`\n        ${t}-cell-fix-left,\n        ${t}-cell-fix-right\n      `]:{position:\"sticky !important\",zIndex:l,background:a},[`\n        ${t}-cell-fix-left-first::after,\n        ${t}-cell-fix-left-last::after\n      `]:{position:\"absolute\",top:0,right:{_skip_check_:!0,value:0},bottom:-n,width:30,transform:\"translateX(100%)\",transition:`box-shadow ${r}`,content:'\"\"',pointerEvents:\"none\"},[`${t}-cell-fix-left-all::after`]:{display:\"none\"},[`\n        ${t}-cell-fix-right-first::after,\n        ${t}-cell-fix-right-last::after\n      `]:{position:\"absolute\",top:0,bottom:-n,left:{_skip_check_:!0,value:0},width:30,transform:\"translateX(-100%)\",transition:`box-shadow ${r}`,content:'\"\"',pointerEvents:\"none\"},[`${t}-container`]:{\"&::before, &::after\":{position:\"absolute\",top:0,bottom:0,zIndex:i+1,width:30,transition:`box-shadow ${r}`,content:'\"\"',pointerEvents:\"none\"},\"&::before\":{insetInlineStart:0},\"&::after\":{insetInlineEnd:0}},[`${t}-ping-left`]:{[`&:not(${t}-has-fix-left) ${t}-container`]:{position:\"relative\",\"&::before\":{boxShadow:`inset 10px 0 8px -8px ${s}`}},[`\n          ${t}-cell-fix-left-first::after,\n          ${t}-cell-fix-left-last::after\n        `]:{boxShadow:`inset 10px 0 8px -8px ${s}`},[`${t}-cell-fix-left-last::before`]:{backgroundColor:\"transparent !important\"}},[`${t}-ping-right`]:{[`&:not(${t}-has-fix-right) ${t}-container`]:{position:\"relative\",\"&::after\":{boxShadow:`inset -10px 0 8px -8px ${s}`}},[`\n          ${t}-cell-fix-right-first::after,\n          ${t}-cell-fix-right-last::after\n        `]:{boxShadow:`inset -10px 0 8px -8px ${s}`}}}}},OV=e=>{const{componentCls:t,antCls:n}=e;return{[`${t}-wrapper`]:{[`${t}-pagination${n}-pagination`]:{margin:`${e.margin}px 0`},[`${t}-pagination`]:{display:\"flex\",flexWrap:\"wrap\",rowGap:e.paddingXS,\"> *\":{flex:\"none\"},\"&-left\":{justifyContent:\"flex-start\"},\"&-center\":{justifyContent:\"center\"},\"&-right\":{justifyContent:\"flex-end\"}}}}},EV=e=>{const{componentCls:t,tableRadius:n}=e;return{[`${t}-wrapper`]:{[t]:{[`${t}-title, ${t}-header`]:{borderRadius:`${n}px ${n}px 0 0`},[`${t}-title + ${t}-container`]:{borderStartStartRadius:0,borderStartEndRadius:0,table:{borderRadius:0,\"> thead > tr:first-child\":{\"th:first-child\":{borderRadius:0},\"th:last-child\":{borderRadius:0}}}},\"&-container\":{borderStartStartRadius:n,borderStartEndRadius:n,\"table > thead > tr:first-child\":{\"> *:first-child\":{borderStartStartRadius:n},\"> *:last-child\":{borderStartEndRadius:n}}},\"&-footer\":{borderRadius:`0 0 ${n}px ${n}px`}}}}},MV=e=>{const{componentCls:t}=e;return{[`${t}-wrapper-rtl`]:{direction:\"rtl\",table:{direction:\"rtl\"},[`${t}-pagination-left`]:{justifyContent:\"flex-end\"},[`${t}-pagination-right`]:{justifyContent:\"flex-start\"},[`${t}-row-expand-icon`]:{\"&::after\":{transform:\"rotate(-90deg)\"},\"&-collapsed::before\":{transform:\"rotate(180deg)\"},\"&-collapsed::after\":{transform:\"rotate(0deg)\"}}}}},AV=e=>{const{componentCls:t,antCls:n,iconCls:o,fontSizeIcon:r,paddingXS:l,tableHeaderIconColor:a,tableHeaderIconColorHover:i}=e;return{[`${t}-wrapper`]:{[`${t}-selection-col`]:{width:e.tableSelectionColumnWidth},[`${t}-bordered ${t}-selection-col`]:{width:e.tableSelectionColumnWidth+l*2},[`\n        table tr th${t}-selection-column,\n        table tr td${t}-selection-column\n      `]:{paddingInlineEnd:e.paddingXS,paddingInlineStart:e.paddingXS,textAlign:\"center\",[`${n}-radio-wrapper`]:{marginInlineEnd:0}},[`table tr th${t}-selection-column${t}-cell-fix-left`]:{zIndex:e.zIndexTableFixed+1},[`table tr th${t}-selection-column::after`]:{backgroundColor:\"transparent !important\"},[`${t}-selection`]:{position:\"relative\",display:\"inline-flex\",flexDirection:\"column\"},[`${t}-selection-extra`]:{position:\"absolute\",top:0,zIndex:1,cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,marginInlineStart:\"100%\",paddingInlineStart:`${e.tablePaddingHorizontal/4}px`,[o]:{color:a,fontSize:r,verticalAlign:\"baseline\",\"&:hover\":{color:i}}}}}},DV=e=>{const{componentCls:t}=e,n=(o,r,l,a)=>({[`${t}${t}-${o}`]:{fontSize:a,[`\n        ${t}-title,\n        ${t}-footer,\n        ${t}-thead > tr > th,\n        ${t}-tbody > tr > td,\n        tfoot > tr > th,\n        tfoot > tr > td\n      `]:{padding:`${r}px ${l}px`},[`${t}-filter-trigger`]:{marginInlineEnd:`-${l/2}px`},[`${t}-expanded-row-fixed`]:{margin:`-${r}px -${l}px`},[`${t}-tbody`]:{[`${t}-wrapper:only-child ${t}`]:{marginBlock:`-${r}px`,marginInline:`${e.tableExpandColumnWidth-l}px -${l}px`}},[`${t}-selection-column`]:{paddingInlineStart:`${l/4}px`}}});return{[`${t}-wrapper`]:h(h({},n(\"middle\",e.tablePaddingVerticalMiddle,e.tablePaddingHorizontalMiddle,e.tableFontSizeMiddle)),n(\"small\",e.tablePaddingVerticalSmall,e.tablePaddingHorizontalSmall,e.tableFontSizeSmall))}},RV=e=>{const{componentCls:t}=e;return{[`${t}-wrapper ${t}-resize-handle`]:{position:\"absolute\",top:0,height:\"100% !important\",bottom:0,left:\" auto !important\",right:\" -8px\",cursor:\"col-resize\",touchAction:\"none\",userSelect:\"auto\",width:\"16px\",zIndex:1,\"&-line\":{display:\"block\",width:\"1px\",marginLeft:\"7px\",height:\"100% !important\",backgroundColor:e.colorPrimary,opacity:0},\"&:hover &-line\":{opacity:1}},[`${t}-wrapper  ${t}-resize-handle.dragging`]:{overflow:\"hidden\",[`${t}-resize-handle-line`]:{opacity:1},\"&:before\":{position:\"absolute\",top:0,bottom:0,content:'\" \"',width:\"200vw\",transform:\"translateX(-50%)\",opacity:0}}}},kV=e=>{const{componentCls:t,marginXXS:n,fontSizeIcon:o,tableHeaderIconColor:r,tableHeaderIconColorHover:l}=e;return{[`${t}-wrapper`]:{[`${t}-thead th${t}-column-has-sorters`]:{outline:\"none\",cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`,\"&:hover\":{background:e.tableHeaderSortHoverBg,\"&::before\":{backgroundColor:\"transparent !important\"}},\"&:focus-visible\":{color:e.colorPrimary},[`\n          &${t}-cell-fix-left:hover,\n          &${t}-cell-fix-right:hover\n        `]:{background:e.tableFixedHeaderSortActiveBg}},[`${t}-thead th${t}-column-sort`]:{background:e.tableHeaderSortBg,\"&::before\":{backgroundColor:\"transparent !important\"}},[`td${t}-column-sort`]:{background:e.tableBodySortBg},[`${t}-column-title`]:{position:\"relative\",zIndex:1,flex:1},[`${t}-column-sorters`]:{display:\"flex\",flex:\"auto\",alignItems:\"center\",justifyContent:\"space-between\",\"&::after\":{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",content:'\"\"'}},[`${t}-column-sorter`]:{marginInlineStart:n,color:r,fontSize:0,transition:`color ${e.motionDurationSlow}`,\"&-inner\":{display:\"inline-flex\",flexDirection:\"column\",alignItems:\"center\"},\"&-up, &-down\":{fontSize:o,\"&.active\":{color:e.colorPrimary}},[`${t}-column-sorter-up + ${t}-column-sorter-down`]:{marginTop:\"-0.3em\"}},[`${t}-column-sorters:hover ${t}-column-sorter`]:{color:l}}}},NV=e=>{const{componentCls:t,opacityLoading:n,tableScrollThumbBg:o,tableScrollThumbBgHover:r,tableScrollThumbSize:l,tableScrollBg:a,zIndexTableSticky:i}=e,s=`${e.lineWidth}px ${e.lineType} ${e.tableBorderColor}`;return{[`${t}-wrapper`]:{[`${t}-sticky`]:{\"&-holder\":{position:\"sticky\",zIndex:i,background:e.colorBgContainer},\"&-scroll\":{position:\"sticky\",bottom:0,height:`${l}px !important`,zIndex:i,display:\"flex\",alignItems:\"center\",background:a,borderTop:s,opacity:n,\"&:hover\":{transformOrigin:\"center bottom\"},\"&-bar\":{height:l,backgroundColor:o,borderRadius:100,transition:`all ${e.motionDurationSlow}, transform none`,position:\"absolute\",bottom:0,\"&:hover, &-active\":{backgroundColor:r}}}}}}},$S=e=>{const{componentCls:t,lineWidth:n,tableBorderColor:o}=e,r=`${n}px ${e.lineType} ${o}`;return{[`${t}-wrapper`]:{[`${t}-summary`]:{position:\"relative\",zIndex:e.zIndexTableFixed,background:e.tableBg,\"> tr\":{\"> th, > td\":{borderBottom:r}}},[`div${t}-summary`]:{boxShadow:`0 -${n}px 0 ${o}`}}}},BV=e=>{const{componentCls:t,fontWeightStrong:n,tablePaddingVertical:o,tablePaddingHorizontal:r,lineWidth:l,lineType:a,tableBorderColor:i,tableFontSize:s,tableBg:c,tableRadius:u,tableHeaderTextColor:d,motionDurationMid:p,tableHeaderBg:m,tableHeaderCellSplitColor:g,tableRowHoverBg:v,tableSelectedRowBg:y,tableSelectedRowHoverBg:b,tableFooterTextColor:S,tableFooterBg:$,paddingContentVerticalLG:w}=e,C=`${l}px ${a} ${i}`;return{[`${t}-wrapper`]:h(h({clear:\"both\",maxWidth:\"100%\"},Mo()),{[t]:h(h({},Ue(e)),{fontSize:s,background:c,borderRadius:`${u}px ${u}px 0 0`}),table:{width:\"100%\",textAlign:\"start\",borderRadius:`${u}px ${u}px 0 0`,borderCollapse:\"separate\",borderSpacing:0},[`\n          ${t}-thead > tr > th,\n          ${t}-tbody > tr > td,\n          tfoot > tr > th,\n          tfoot > tr > td\n        `]:{position:\"relative\",padding:`${w}px ${r}px`,overflowWrap:\"break-word\"},[`${t}-title`]:{padding:`${o}px ${r}px`},[`${t}-thead`]:{\"\\n          > tr > th,\\n          > tr > td\\n        \":{position:\"relative\",color:d,fontWeight:n,textAlign:\"start\",background:m,borderBottom:C,transition:`background ${p} ease`,\"&[colspan]:not([colspan='1'])\":{textAlign:\"center\"},[`&:not(:last-child):not(${t}-selection-column):not(${t}-row-expand-icon-cell):not([colspan])::before`]:{position:\"absolute\",top:\"50%\",insetInlineEnd:0,width:1,height:\"1.6em\",backgroundColor:g,transform:\"translateY(-50%)\",transition:`background-color ${p}`,content:'\"\"'}},\"> tr:not(:last-child) > th[colspan]\":{borderBottom:0}},[`${t}:not(${t}-bordered)`]:{[`${t}-tbody`]:{\"> tr\":{\"> td\":{borderTop:C,borderBottom:\"transparent\"},\"&:last-child > td\":{borderBottom:C},[`&:first-child > td,\n              &${t}-measure-row + tr > td`]:{borderTop:\"none\",borderTopColor:\"transparent\"}}}},[`${t}${t}-bordered`]:{[`${t}-tbody`]:{\"> tr\":{\"> td\":{borderBottom:C}}}},[`${t}-tbody`]:{\"> tr\":{\"> td\":{transition:`background ${p}, border-color ${p}`,[`\n              > ${t}-wrapper:only-child,\n              > ${t}-expanded-row-fixed > ${t}-wrapper:only-child\n            `]:{[t]:{marginBlock:`-${o}px`,marginInline:`${e.tableExpandColumnWidth-r}px -${r}px`,[`${t}-tbody > tr:last-child > td`]:{borderBottom:0,\"&:first-child, &:last-child\":{borderRadius:0}}}}},[`\n            &${t}-row:hover > td,\n            > td${t}-cell-row-hover\n          `]:{background:v},[`&${t}-row-selected`]:{\"> td\":{background:y},\"&:hover > td\":{background:b}}}},[`${t}-footer`]:{padding:`${o}px ${r}px`,color:S,background:$}})}},LV=Ge(\"Table\",e=>{const{controlItemBgActive:t,controlItemBgActiveHover:n,colorTextPlaceholder:o,colorTextHeading:r,colorSplit:l,colorBorderSecondary:a,fontSize:i,padding:s,paddingXS:c,paddingSM:u,controlHeight:d,colorFillAlter:p,colorIcon:m,colorIconHover:g,opacityLoading:v,colorBgContainer:y,borderRadiusLG:b,colorFillContent:S,colorFillSecondary:$,controlInteractiveSize:w}=e,C=new mt(m),_=new mt(g),x=t,P=2,O=new mt($).onBackground(y).toHexString(),M=new mt(S).onBackground(y).toHexString(),E=new mt(p).onBackground(y).toHexString(),R=Le(e,{tableFontSize:i,tableBg:y,tableRadius:b,tablePaddingVertical:s,tablePaddingHorizontal:s,tablePaddingVerticalMiddle:u,tablePaddingHorizontalMiddle:c,tablePaddingVerticalSmall:c,tablePaddingHorizontalSmall:c,tableBorderColor:a,tableHeaderTextColor:r,tableHeaderBg:E,tableFooterTextColor:r,tableFooterBg:E,tableHeaderCellSplitColor:a,tableHeaderSortBg:O,tableHeaderSortHoverBg:M,tableHeaderIconColor:C.clone().setAlpha(C.getAlpha()*v).toRgbString(),tableHeaderIconColorHover:_.clone().setAlpha(_.getAlpha()*v).toRgbString(),tableBodySortBg:E,tableFixedHeaderSortActiveBg:O,tableHeaderFilterActiveBg:S,tableFilterDropdownBg:y,tableRowHoverBg:E,tableSelectedRowBg:x,tableSelectedRowHoverBg:n,zIndexTableFixed:P,zIndexTableSticky:P+1,tableFontSizeMiddle:i,tableFontSizeSmall:i,tableSelectionColumnWidth:d,tableExpandIconBg:y,tableExpandColumnWidth:w+2*e.padding,tableExpandedRowBg:p,tableFilterDropdownWidth:120,tableFilterDropdownHeight:264,tableFilterDropdownSearchWidth:140,tableScrollThumbSize:8,tableScrollThumbBg:o,tableScrollThumbBgHover:r,tableScrollBg:l});return[BV(R),OV(R),$S(R),kV(R),PV(R),xV(R),EV(R),IV(R),$S(R),_V(R),AV(R),TV(R),NV(R),wV(R),DV(R),RV(R),MV(R)]}),FV=[],E_=()=>({prefixCls:ke(),columns:ct(),rowKey:Fe([String,Function]),tableLayout:ke(),rowClassName:Fe([String,Function]),title:de(),footer:de(),id:ke(),showHeader:ye(),components:De(),customRow:de(),customHeaderRow:de(),direction:ke(),expandFixed:Fe([Boolean,String]),expandColumnWidth:Number,expandedRowKeys:ct(),defaultExpandedRowKeys:ct(),expandedRowRender:de(),expandRowByClick:ye(),expandIcon:de(),onExpand:de(),onExpandedRowsChange:de(),\"onUpdate:expandedRowKeys\":de(),defaultExpandAllRows:ye(),indentSize:Number,expandIconColumnIndex:Number,showExpandColumn:ye(),expandedRowClassName:de(),childrenColumnName:ke(),rowExpandable:de(),sticky:Fe([Boolean,Object]),dropdownPrefixCls:String,dataSource:ct(),pagination:Fe([Boolean,Object]),loading:Fe([Boolean,Object]),size:ke(),bordered:ye(),locale:De(),onChange:de(),onResizeColumn:de(),rowSelection:De(),getPopupContainer:de(),scroll:De(),sortDirections:ct(),showSorterTooltip:Fe([Boolean,Object],!0),transformCellText:de()}),zV=ne({name:\"InternalTable\",inheritAttrs:!1,props:Ze(h(h({},E_()),{contextSlots:De()}),{rowKey:\"key\"}),setup(e,t){let{attrs:n,slots:o,expose:r,emit:l}=t;Ot(!(typeof e.rowKey==\"function\"&&e.rowKey.length>1),\"Table\",\"`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.\"),Zj(I(()=>e.contextSlots)),Qj({onResizeColumn:(ge,Se)=>{l(\"resizeColumn\",ge,Se)}});const a=Ea(),i=I(()=>{const ge=new Set(Object.keys(a.value).filter(Se=>a.value[Se]));return e.columns.filter(Se=>!Se.responsive||Se.responsive.some(X=>ge.has(X)))}),{size:s,renderEmpty:c,direction:u,prefixCls:d,configProvider:p}=Pe(\"table\",e),[m,g]=LV(d),v=I(()=>{var ge;return e.transformCellText||((ge=p.transformCellText)===null||ge===void 0?void 0:ge.value)}),[y]=yo(\"Table\",En.Table,We(e,\"locale\")),b=I(()=>e.dataSource||FV),S=I(()=>p.getPrefixCls(\"dropdown\",e.dropdownPrefixCls)),$=I(()=>e.childrenColumnName||\"children\"),w=I(()=>b.value.some(ge=>ge?.[$.value])?\"nest\":e.expandedRowRender?\"row\":null),C=vt({body:null}),_=ge=>{h(C,ge)},x=I(()=>typeof e.rowKey==\"function\"?e.rowKey:ge=>ge?.[e.rowKey]),[P]=WW(b,$,x),O={},M=function(ge,Se){let X=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{pagination:U,scroll:ie,onChange:ve}=e,me=h(h({},O),ge);X&&(O.resetPagination(),me.pagination.current&&(me.pagination.current=1),U&&U.onChange&&U.onChange(1,me.pagination.pageSize)),ie&&ie.scrollToFirstRowOnChange!==!1&&C.body&&lv(0,{getContainer:()=>C.body}),ve?.(me.pagination,me.filters,me.sorter,{currentDataSource:SS(vm(b.value,me.sorterStates,$.value),me.filterStates),action:Se})},E=(ge,Se)=>{M({sorter:ge,sorterStates:Se},\"sort\",!1)},[R,D,z,T]=UW({prefixCls:d,mergedColumns:i,onSorterChange:E,sortDirections:I(()=>e.sortDirections||[\"ascend\",\"descend\"]),tableLocale:y,showSorterTooltip:We(e,\"showSorterTooltip\")}),k=I(()=>vm(b.value,D.value,$.value)),B=(ge,Se)=>{M({filters:ge,filterStates:Se},\"filter\",!0)},[L,N,F]=yV({prefixCls:d,locale:y,dropdownPrefixCls:S,mergedColumns:i,onFilterChange:B,getPopupContainer:We(e,\"getPopupContainer\")}),j=I(()=>SS(k.value,N.value)),[H]=CV(We(e,\"contextSlots\")),K=I(()=>{const ge={},Se=F.value;return Object.keys(Se).forEach(X=>{Se[X]!==null&&(ge[X]=Se[X])}),h(h({},z.value),{filters:ge})}),[G]=SV(K),V=(ge,Se)=>{M({pagination:h(h({},O.pagination),{current:ge,pageSize:Se})},\"paginate\")},[q,Z]=jW(I(()=>j.value.length),We(e,\"pagination\"),V);ze(()=>{O.sorter=T.value,O.sorterStates=D.value,O.filters=F.value,O.filterStates=N.value,O.pagination=e.pagination===!1?{}:HW(q.value,e.pagination),O.resetPagination=Z});const oe=I(()=>{if(e.pagination===!1||!q.value.pageSize)return j.value;const{current:ge=1,total:Se,pageSize:X=um}=q.value;return Ot(ge>0,\"Table\",\"`current` should be positive number.\"),j.value.length<Se?j.value.length>X?j.value.slice((ge-1)*X,ge*X):j.value:j.value.slice((ge-1)*X,ge*X)});ze(()=>{it(()=>{const{total:ge,pageSize:Se=um}=q.value;j.value.length<ge&&j.value.length>Se&&Ot(!1,\"Table\",\"`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.\")})},{flush:\"post\"});const re=I(()=>e.showExpandColumn===!1?-1:w.value===\"nest\"&&e.expandIconColumnIndex===void 0?e.rowSelection?1:0:e.expandIconColumnIndex>0&&e.rowSelection?e.expandIconColumnIndex-1:e.expandIconColumnIndex),Y=J();pe(()=>e.rowSelection,()=>{Y.value=e.rowSelection?h({},e.rowSelection):e.rowSelection},{deep:!0,immediate:!0});const[Q,ce]=KW(Y,{prefixCls:d,data:j,pageData:oe,getRowKey:x,getRecordByKey:P,expandType:w,childrenColumnName:$,locale:y,getPopupContainer:I(()=>e.getPopupContainer)}),ue=(ge,Se,X)=>{let U;const{rowClassName:ie}=e;return typeof ie==\"function\"?U=le(ie(ge,Se,X)):U=le(ie),le({[`${d.value}-row-selected`]:ce.value.has(x.value(ge,Se))},U)};r({selectedKeySet:ce});const be=I(()=>typeof e.indentSize==\"number\"?e.indentSize:15),Ce=ge=>G(Q(L(R(H(ge)))));return()=>{var ge;const{expandIcon:Se=o.expandIcon||$V(y.value),pagination:X,loading:U,bordered:ie}=e;let ve,me;if(X!==!1&&(!((ge=q.value)===null||ge===void 0)&&ge.total)){let ae;q.value.size?ae=q.value.size:ae=s.value===\"small\"||s.value===\"middle\"?\"small\":void 0;const fe=Re=>f(xd,A(A({},q.value),{},{class:[`${d.value}-pagination ${d.value}-pagination-${Re}`,q.value.class],size:ae}),null),Ie=u.value===\"rtl\"?\"left\":\"right\",{position:Te}=q.value;if(Te!==null&&Array.isArray(Te)){const Re=Te.find(_e=>_e.includes(\"top\")),$e=Te.find(_e=>_e.includes(\"bottom\")),xe=Te.every(_e=>`${_e}`==\"none\");!Re&&!$e&&!xe&&(me=fe(Ie)),Re&&(ve=fe(Re.toLowerCase().replace(\"top\",\"\"))),$e&&(me=fe($e.toLowerCase().replace(\"bottom\",\"\")))}else me=fe(Ie)}let he;typeof U==\"boolean\"?he={spinning:U}:typeof U==\"object\"&&(he=h({spinning:!0},U));const se=le(`${d.value}-wrapper`,{[`${d.value}-wrapper-rtl`]:u.value===\"rtl\"},n.class,g.value),te=ot(e,[\"columns\"]);return m(f(\"div\",{class:se,style:n.style},[f(Vo,A({spinning:!1},he),{default:()=>[ve,f(FW,A(A(A({},n),te),{},{expandedRowKeys:e.expandedRowKeys,defaultExpandedRowKeys:e.defaultExpandedRowKeys,expandIconColumnIndex:re.value,indentSize:be.value,expandIcon:Se,columns:i.value,direction:u.value,prefixCls:d.value,class:le({[`${d.value}-middle`]:s.value===\"middle\",[`${d.value}-small`]:s.value===\"small\",[`${d.value}-bordered`]:ie,[`${d.value}-empty`]:b.value.length===0}),data:oe.value,rowKey:x.value,rowClassName:ue,internalHooks:cm,internalRefs:C,onUpdateInternalRefs:_,transformColumns:Ce,transformCellText:v.value}),h(h({},o),{emptyText:()=>{var ae,fe;return((ae=o.emptyText)===null||ae===void 0?void 0:ae.call(o))||((fe=e.locale)===null||fe===void 0?void 0:fe.emptyText)||c(\"Table\")}})),me]})]))}}}),Bf=ne({name:\"ATable\",inheritAttrs:!1,props:Ze(E_(),{rowKey:\"key\"}),slots:Object,setup(e,t){let{attrs:n,slots:o,expose:r}=t;const l=J();return r({table:l}),()=>{var a;const i=e.columns||g_((a=o.default)===null||a===void 0?void 0:a.call(o));return f(zV,A(A(A({ref:l},n),e),{},{columns:i||[],expandedRowRender:o.expandedRowRender||e.expandedRowRender,contextSlots:h({},o)}),o)}}}),wc=ne({name:\"ATableColumn\",slots:Object,render(){return null}}),_c=ne({name:\"ATableColumnGroup\",slots:Object,__ANT_TABLE_COLUMN_GROUP:!0,render(){return null}}),Cu=PW,xu=EW,Ic=h(MW,{Cell:xu,Row:Cu,name:\"ATableSummary\"}),HV=h(Bf,{SELECTION_ALL:dm,SELECTION_INVERT:fm,SELECTION_NONE:pm,SELECTION_COLUMN:er,EXPAND_COLUMN:Pr,Column:wc,ColumnGroup:_c,Summary:Ic,install:e=>(e.component(Ic.name,Ic),e.component(xu.name,xu),e.component(Cu.name,Cu),e.component(Bf.name,Bf),e.component(wc.name,wc),e.component(_c.name,_c),e)}),jV={prefixCls:String,placeholder:String,value:String,handleClear:Function,disabled:{type:Boolean,default:void 0},onChange:Function},WV=ne({compatConfig:{MODE:3},name:\"Search\",inheritAttrs:!1,props:Ze(jV,{placeholder:\"\"}),emits:[\"change\"],setup(e,t){let{emit:n}=t;const o=r=>{var l;n(\"change\",r),r.target.value===\"\"&&((l=e.handleClear)===null||l===void 0||l.call(e))};return()=>{const{placeholder:r,value:l,prefixCls:a,disabled:i}=e;return f(Bt,{placeholder:r,class:a,value:l,onChange:o,disabled:i,allowClear:!0},{prefix:()=>f(Iu,null,null)})}}});function VV(){}const KV={renderedText:W.any,renderedEl:W.any,item:W.any,checked:ye(),prefixCls:String,disabled:ye(),showRemove:ye(),onClick:Function,onRemove:Function},GV=ne({compatConfig:{MODE:3},name:\"ListItem\",inheritAttrs:!1,props:KV,emits:[\"click\",\"remove\"],setup(e,t){let{emit:n}=t;return()=>{const{renderedText:o,renderedEl:r,item:l,checked:a,disabled:i,prefixCls:s,showRemove:c}=e,u=le({[`${s}-content-item`]:!0,[`${s}-content-item-disabled`]:i||l.disabled});let d;return(typeof o==\"string\"||typeof o==\"number\")&&(d=String(o)),f(_l,{componentName:\"Transfer\",defaultLocale:En.Transfer},{default:p=>{const m=f(\"span\",{class:`${s}-content-item-text`},[r]);return c?f(\"li\",{class:u,title:d},[m,f(yu,{disabled:i||l.disabled,class:`${s}-content-item-remove`,\"aria-label\":p.remove,onClick:()=>{n(\"remove\",l)}},{default:()=>[f(l$,null,null)]})]):f(\"li\",{class:u,title:d,onClick:i||l.disabled?VV:()=>{n(\"click\",l)}},[f(Zn,{class:`${s}-checkbox`,checked:a,disabled:i||l.disabled},null),m])}})}}}),XV={prefixCls:String,filteredRenderItems:W.array.def([]),selectedKeys:W.array,disabled:ye(),showRemove:ye(),pagination:W.any,onItemSelect:Function,onScroll:Function,onItemRemove:Function};function UV(e){if(!e)return null;const t={pageSize:10,simple:!0,showSizeChanger:!1,showLessItems:!1};return typeof e==\"object\"?h(h({},t),e):t}const YV=ne({compatConfig:{MODE:3},name:\"ListBody\",inheritAttrs:!1,props:XV,emits:[\"itemSelect\",\"itemRemove\",\"scroll\"],setup(e,t){let{emit:n,expose:o}=t;const r=J(1),l=d=>{const{selectedKeys:p}=e,m=p.indexOf(d.key)>=0;n(\"itemSelect\",d.key,!m)},a=d=>{n(\"itemRemove\",[d.key])},i=d=>{n(\"scroll\",d)},s=I(()=>UV(e.pagination));pe([s,()=>e.filteredRenderItems],()=>{if(s.value){const d=Math.ceil(e.filteredRenderItems.length/s.value.pageSize);r.value=Math.min(r.value,d)}},{immediate:!0});const c=I(()=>{const{filteredRenderItems:d}=e;let p=d;return s.value&&(p=d.slice((r.value-1)*s.value.pageSize,r.value*s.value.pageSize)),p}),u=d=>{r.value=d};return o({items:c}),()=>{const{prefixCls:d,filteredRenderItems:p,selectedKeys:m,disabled:g,showRemove:v}=e;let y=null;s.value&&(y=f(xd,{simple:s.value.simple,showSizeChanger:s.value.showSizeChanger,showLessItems:s.value.showLessItems,size:\"small\",disabled:g,class:`${d}-pagination`,total:p.length,pageSize:s.value.pageSize,current:r.value,onChange:u},null));const b=c.value.map(S=>{let{renderedEl:$,renderedText:w,item:C}=S;const{disabled:_}=C,x=m.indexOf(C.key)>=0;return f(GV,{disabled:g||_,key:C.key,item:C,renderedText:w,renderedEl:$,checked:x,prefixCls:d,onClick:l,onRemove:a,showRemove:v},null)});return f(Ve,null,[f(\"ul\",{class:le(`${d}-content`,{[`${d}-content-show-remove`]:v}),onScroll:i},[b]),y])}}}),bm=e=>{const t=new Map;return e.forEach((n,o)=>{t.set(n,o)}),t},qV=e=>{const t=new Map;return e.forEach((n,o)=>{let{disabled:r,key:l}=n;r&&t.set(l,o)}),t},ZV=()=>null;function QV(e){return!!(e&&!Kt(e)&&Object.prototype.toString.call(e)===\"[object Object]\")}function Es(e){return e.filter(t=>!t.disabled).map(t=>t.key)}const JV={prefixCls:String,dataSource:ct([]),filter:String,filterOption:Function,checkedKeys:W.arrayOf(W.string),handleFilter:Function,handleClear:Function,renderItem:Function,showSearch:ye(!1),searchPlaceholder:String,notFoundContent:W.any,itemUnit:String,itemsUnit:String,renderList:W.any,disabled:ye(),direction:ke(),showSelectAll:ye(),remove:String,selectAll:String,selectCurrent:String,selectInvert:String,removeAll:String,removeCurrent:String,selectAllLabel:W.any,showRemove:ye(),pagination:W.any,onItemSelect:Function,onItemSelectAll:Function,onItemRemove:Function,onScroll:Function},CS=ne({compatConfig:{MODE:3},name:\"TransferList\",inheritAttrs:!1,props:JV,slots:Object,setup(e,t){let{attrs:n,slots:o}=t;const r=J(\"\"),l=J(),a=J(),i=(C,_)=>{let x=C?C(_):null;const P=!!x&&kt(x).length>0;return P||(x=f(YV,A(A({},_),{},{ref:a}),null)),{customize:P,bodyContent:x}},s=C=>{const{renderItem:_=ZV}=e,x=_(C),P=QV(x);return{renderedText:P?x.value:x,renderedEl:P?x.label:x,item:C}},c=J([]),u=J([]);ze(()=>{const C=[],_=[];e.dataSource.forEach(x=>{const P=s(x),{renderedText:O}=P;if(r.value&&r.value.trim()&&!b(O,x))return null;C.push(x),_.push(P)}),c.value=C,u.value=_});const d=I(()=>{const{checkedKeys:C}=e;if(C.length===0)return\"none\";const _=bm(C);return c.value.every(x=>_.has(x.key)||!!x.disabled)?\"all\":\"part\"}),p=I(()=>Es(c.value)),m=(C,_)=>Array.from(new Set([...C,...e.checkedKeys])).filter(x=>_.indexOf(x)===-1),g=C=>{let{disabled:_,prefixCls:x}=C;var P;const O=d.value===\"all\";return f(Zn,{disabled:((P=e.dataSource)===null||P===void 0?void 0:P.length)===0||_,checked:O,indeterminate:d.value===\"part\",class:`${x}-checkbox`,onChange:()=>{const E=p.value;e.onItemSelectAll(m(O?[]:E,O?e.checkedKeys:[]))}},null)},v=C=>{var _;const{target:{value:x}}=C;r.value=x,(_=e.handleFilter)===null||_===void 0||_.call(e,C)},y=C=>{var _;r.value=\"\",(_=e.handleClear)===null||_===void 0||_.call(e,C)},b=(C,_)=>{const{filterOption:x}=e;return x?x(r.value,_):C.includes(r.value)},S=(C,_)=>{const{itemsUnit:x,itemUnit:P,selectAllLabel:O}=e;if(O)return typeof O==\"function\"?O({selectedCount:C,totalCount:_}):O;const M=_>1?x:P;return f(Ve,null,[(C>0?`${C}/`:\"\")+_,wt(\" \"),M])},$=I(()=>Array.isArray(e.notFoundContent)?e.notFoundContent[e.direction===\"left\"?0:1]:e.notFoundContent),w=(C,_,x,P,O,M)=>{const E=O?f(\"div\",{class:`${C}-body-search-wrapper`},[f(WV,{prefixCls:`${C}-search`,onChange:v,handleClear:y,placeholder:_,value:r.value,disabled:M},null)]):null;let R;const{onEvents:D}=Gm(n),{bodyContent:z,customize:T}=i(P,h(h(h({},e),{filteredItems:c.value,filteredRenderItems:u.value,selectedKeys:x}),D));return T?R=f(\"div\",{class:`${C}-body-customize-wrapper`},[z]):R=c.value.length?z:f(\"div\",{class:`${C}-body-not-found`},[$.value]),f(\"div\",{class:O?`${C}-body ${C}-body-with-search`:`${C}-body`,ref:l},[E,R])};return()=>{var C,_;const{prefixCls:x,checkedKeys:P,disabled:O,showSearch:M,searchPlaceholder:E,selectAll:R,selectCurrent:D,selectInvert:z,removeAll:T,removeCurrent:k,renderList:B,onItemSelectAll:L,onItemRemove:N,showSelectAll:F=!0,showRemove:j,pagination:H}=e,K=(C=o.footer)===null||C===void 0?void 0:C.call(o,h({},e)),G=le(x,{[`${x}-with-pagination`]:!!H,[`${x}-with-footer`]:!!K}),V=w(x,E,P,B,M,O),q=K?f(\"div\",{class:`${x}-footer`},[K]):null,Z=!j&&!H&&g({disabled:O,prefixCls:x});let oe=null;j?oe=f(Ft,null,{default:()=>[H&&f(Ft.Item,{key:\"removeCurrent\",onClick:()=>{const Y=Es((a.value.items||[]).map(Q=>Q.item));N?.(Y)}},{default:()=>[k]}),f(Ft.Item,{key:\"removeAll\",onClick:()=>{N?.(p.value)}},{default:()=>[T]})]}):oe=f(Ft,null,{default:()=>[f(Ft.Item,{key:\"selectAll\",onClick:()=>{const Y=p.value;L(m(Y,[]))}},{default:()=>[R]}),H&&f(Ft.Item,{onClick:()=>{const Y=Es((a.value.items||[]).map(Q=>Q.item));L(m(Y,[]))}},{default:()=>[D]}),f(Ft.Item,{key:\"selectInvert\",onClick:()=>{let Y;H?Y=Es((a.value.items||[]).map(be=>be.item)):Y=p.value;const Q=new Set(P),ce=[],ue=[];Y.forEach(be=>{Q.has(be)?ue.push(be):ce.push(be)}),L(m(ce,ue))}},{default:()=>[z]})]});const re=f(po,{class:`${x}-header-dropdown`,overlay:oe,disabled:O},{default:()=>[f(xa,null,null)]});return f(\"div\",{class:G,style:n.style},[f(\"div\",{class:`${x}-header`},[F?f(Ve,null,[Z,re]):null,f(\"span\",{class:`${x}-header-selected`},[f(\"span\",null,[S(P.length,c.value.length)]),f(\"span\",{class:`${x}-header-title`},[(_=o.titleText)===null||_===void 0?void 0:_.call(o)])])]),V,q])}}});function xS(){}const Ug=e=>{const{disabled:t,moveToLeft:n=xS,moveToRight:o=xS,leftArrowText:r=\"\",rightArrowText:l=\"\",leftActive:a,rightActive:i,class:s,style:c,direction:u,oneWay:d}=e;return f(\"div\",{class:s,style:c},[f(_t,{type:\"primary\",size:\"small\",disabled:t||!i,onClick:o,icon:u!==\"rtl\"?f(Eo,null,null):f(zr,null,null)},{default:()=>[l]}),!d&&f(_t,{type:\"primary\",size:\"small\",disabled:t||!a,onClick:n,icon:u!==\"rtl\"?f(zr,null,null):f(Eo,null,null)},{default:()=>[r]})])};Ug.displayName=\"Operation\";Ug.inheritAttrs=!1;const eK=e=>{const{antCls:t,componentCls:n,listHeight:o,controlHeightLG:r,marginXXS:l,margin:a}=e,i=`${t}-table`,s=`${t}-input`;return{[`${n}-customize-list`]:{[`${n}-list`]:{flex:\"1 1 50%\",width:\"auto\",height:\"auto\",minHeight:o},[`${i}-wrapper`]:{[`${i}-small`]:{border:0,borderRadius:0,[`${i}-selection-column`]:{width:r,minWidth:r}},[`${i}-pagination${i}-pagination`]:{margin:`${a}px 0 ${l}px`}},[`${s}[disabled]`]:{backgroundColor:\"transparent\"}}}},wS=(e,t)=>{const{componentCls:n,colorBorder:o}=e;return{[`${n}-list`]:{borderColor:t,\"&-search:not([disabled])\":{borderColor:o}}}},tK=e=>{const{componentCls:t}=e;return{[`${t}-status-error`]:h({},wS(e,e.colorError)),[`${t}-status-warning`]:h({},wS(e,e.colorWarning))}},nK=e=>{const{componentCls:t,colorBorder:n,colorSplit:o,lineWidth:r,transferItemHeight:l,transferHeaderHeight:a,transferHeaderVerticalPadding:i,transferItemPaddingVertical:s,controlItemBgActive:c,controlItemBgActiveHover:u,colorTextDisabled:d,listHeight:p,listWidth:m,listWidthLG:g,fontSizeIcon:v,marginXS:y,paddingSM:b,lineType:S,iconCls:$,motionDurationSlow:w}=e;return{display:\"flex\",flexDirection:\"column\",width:m,height:p,border:`${r}px ${S} ${n}`,borderRadius:e.borderRadiusLG,\"&-with-pagination\":{width:g,height:\"auto\"},\"&-search\":{[`${$}-search`]:{color:d}},\"&-header\":{display:\"flex\",flex:\"none\",alignItems:\"center\",height:a,padding:`${i-r}px ${b}px ${i}px`,color:e.colorText,background:e.colorBgContainer,borderBottom:`${r}px ${S} ${o}`,borderRadius:`${e.borderRadiusLG}px ${e.borderRadiusLG}px 0 0`,\"> *:not(:last-child)\":{marginInlineEnd:4},\"> *\":{flex:\"none\"},\"&-title\":h(h({},Gt),{flex:\"auto\",textAlign:\"end\"}),\"&-dropdown\":h(h({},Il()),{fontSize:v,transform:\"translateY(10%)\",cursor:\"pointer\",\"&[disabled]\":{cursor:\"not-allowed\"}})},\"&-body\":{display:\"flex\",flex:\"auto\",flexDirection:\"column\",overflow:\"hidden\",fontSize:e.fontSize,\"&-search-wrapper\":{position:\"relative\",flex:\"none\",padding:b}},\"&-content\":{flex:\"auto\",margin:0,padding:0,overflow:\"auto\",listStyle:\"none\",\"&-item\":{display:\"flex\",alignItems:\"center\",minHeight:l,padding:`${s}px ${b}px`,transition:`all ${w}`,\"> *:not(:last-child)\":{marginInlineEnd:y},\"> *\":{flex:\"none\"},\"&-text\":h(h({},Gt),{flex:\"auto\"}),\"&-remove\":{position:\"relative\",color:n,cursor:\"pointer\",transition:`all ${w}`,\"&:hover\":{color:e.colorLinkHover},\"&::after\":{position:\"absolute\",insert:`-${s}px -50%`,content:'\"\"'}},[`&:not(${t}-list-content-item-disabled)`]:{\"&:hover\":{backgroundColor:e.controlItemBgHover,cursor:\"pointer\"},[`&${t}-list-content-item-checked:hover`]:{backgroundColor:u}},\"&-checked\":{backgroundColor:c},\"&-disabled\":{color:d,cursor:\"not-allowed\"}},[`&-show-remove ${t}-list-content-item:not(${t}-list-content-item-disabled):hover`]:{background:\"transparent\",cursor:\"default\"}},\"&-pagination\":{padding:`${e.paddingXS}px 0`,textAlign:\"end\",borderTop:`${r}px ${S} ${o}`},\"&-body-not-found\":{flex:\"none\",width:\"100%\",margin:\"auto 0\",color:d,textAlign:\"center\"},\"&-footer\":{borderTop:`${r}px ${S} ${o}`},\"&-checkbox\":{lineHeight:1}}},oK=e=>{const{antCls:t,iconCls:n,componentCls:o,transferHeaderHeight:r,marginXS:l,marginXXS:a,fontSizeIcon:i,fontSize:s,lineHeight:c}=e;return{[o]:h(h({},Ue(e)),{position:\"relative\",display:\"flex\",alignItems:\"stretch\",[`${o}-disabled`]:{[`${o}-list`]:{background:e.colorBgContainerDisabled}},[`${o}-list`]:nK(e),[`${o}-operation`]:{display:\"flex\",flex:\"none\",flexDirection:\"column\",alignSelf:\"center\",margin:`0 ${l}px`,verticalAlign:\"middle\",[`${t}-btn`]:{display:\"block\",\"&:first-child\":{marginBottom:a},[n]:{fontSize:i}}},[`${t}-empty-image`]:{maxHeight:r/2-Math.round(s*c)}})}},rK=e=>{const{componentCls:t}=e;return{[`${t}-rtl`]:{direction:\"rtl\"}}},lK=Ge(\"Transfer\",e=>{const{fontSize:t,lineHeight:n,lineWidth:o,controlHeightLG:r,controlHeight:l}=e,a=Math.round(t*n),i=r,s=l,c=Le(e,{transferItemHeight:s,transferHeaderHeight:i,transferHeaderVerticalPadding:Math.ceil((i-o-a)/2),transferItemPaddingVertical:(s-a)/2});return[oK(c),eK(c),tK(c),rK(c)]},{listWidth:180,listHeight:200,listWidthLG:250}),aK=()=>({id:String,prefixCls:String,dataSource:ct([]),disabled:ye(),targetKeys:ct(),selectedKeys:ct(),render:de(),listStyle:Fe([Function,Object],()=>({})),operationStyle:De(void 0),titles:ct(),operations:ct(),showSearch:ye(!1),filterOption:de(),searchPlaceholder:String,notFoundContent:W.any,locale:De(),rowKey:de(),showSelectAll:ye(),selectAllLabels:ct(),children:de(),oneWay:ye(),pagination:Fe([Object,Boolean]),status:ke(),onChange:de(),onSelectChange:de(),onSearch:de(),onScroll:de(),\"onUpdate:targetKeys\":de(),\"onUpdate:selectedKeys\":de()}),iK=ne({compatConfig:{MODE:3},name:\"ATransfer\",inheritAttrs:!1,props:aK(),slots:Object,setup(e,t){let{emit:n,attrs:o,slots:r,expose:l}=t;const{configProvider:a,prefixCls:i,direction:s}=Pe(\"transfer\",e),[c,u]=lK(i),d=J([]),p=J([]),m=Jt(),g=un.useInject(),v=I(()=>Do(g.status,e.status));pe(()=>e.selectedKeys,()=>{var V,q;d.value=((V=e.selectedKeys)===null||V===void 0?void 0:V.filter(Z=>e.targetKeys.indexOf(Z)===-1))||[],p.value=((q=e.selectedKeys)===null||q===void 0?void 0:q.filter(Z=>e.targetKeys.indexOf(Z)>-1))||[]},{immediate:!0});const y=(V,q)=>{const Z={notFoundContent:q(\"Transfer\")},oe=Qt(r,e,\"notFoundContent\");return oe&&(Z.notFoundContent=oe),e.searchPlaceholder!==void 0&&(Z.searchPlaceholder=e.searchPlaceholder),h(h(h({},V),Z),e.locale)},b=V=>{const{targetKeys:q=[],dataSource:Z=[]}=e,oe=V===\"right\"?d.value:p.value,re=qV(Z),Y=oe.filter(be=>!re.has(be)),Q=bm(Y),ce=V===\"right\"?Y.concat(q):q.filter(be=>!Q.has(be)),ue=V===\"right\"?\"left\":\"right\";V===\"right\"?d.value=[]:p.value=[],n(\"update:targetKeys\",ce),x(ue,[]),n(\"change\",ce,V,Y),m.onFieldChange()},S=()=>{b(\"left\")},$=()=>{b(\"right\")},w=(V,q)=>{x(V,q)},C=V=>w(\"left\",V),_=V=>w(\"right\",V),x=(V,q)=>{V===\"left\"?(e.selectedKeys||(d.value=q),n(\"update:selectedKeys\",[...q,...p.value]),n(\"selectChange\",q,zt(p.value))):(e.selectedKeys||(p.value=q),n(\"update:selectedKeys\",[...q,...d.value]),n(\"selectChange\",zt(d.value),q))},P=(V,q)=>{const Z=q.target.value;n(\"search\",V,Z)},O=V=>{P(\"left\",V)},M=V=>{P(\"right\",V)},E=V=>{n(\"search\",V,\"\")},R=()=>{E(\"left\")},D=()=>{E(\"right\")},z=(V,q,Z)=>{const oe=V===\"left\"?[...d.value]:[...p.value],re=oe.indexOf(q);re>-1&&oe.splice(re,1),Z&&oe.push(q),x(V,oe)},T=(V,q)=>z(\"left\",V,q),k=(V,q)=>z(\"right\",V,q),B=V=>{const{targetKeys:q=[]}=e,Z=q.filter(oe=>!V.includes(oe));n(\"update:targetKeys\",Z),n(\"change\",Z,\"left\",[...V])},L=(V,q)=>{n(\"scroll\",V,q)},N=V=>{L(\"left\",V)},F=V=>{L(\"right\",V)},j=(V,q)=>typeof V==\"function\"?V({direction:q}):V,H=J([]),K=J([]);ze(()=>{const{dataSource:V,rowKey:q,targetKeys:Z=[]}=e,oe=[],re=new Array(Z.length),Y=bm(Z);V.forEach(Q=>{q&&(Q.key=q(Q)),Y.has(Q.key)?re[Y.get(Q.key)]=Q:oe.push(Q)}),H.value=oe,K.value=re}),l({handleSelectChange:x});const G=V=>{var q,Z,oe,re,Y,Q;const{disabled:ce,operations:ue=[],showSearch:be,listStyle:Ce,operationStyle:ge,filterOption:Se,showSelectAll:X,selectAllLabels:U=[],oneWay:ie,pagination:ve,id:me=m.id.value}=e,{class:he,style:se}=o,te=r.children,ae=!te&&ve,fe=a.renderEmpty,Ie=y(V,fe),{footer:Te}=r,Re=e.render||r.render,$e=p.value.length>0,xe=d.value.length>0,_e=le(i.value,he,{[`${i.value}-disabled`]:ce,[`${i.value}-customize-list`]:!!te,[`${i.value}-rtl`]:s.value===\"rtl\"},Cn(i.value,v.value,g.hasFeedback),u.value),Me=e.titles,He=(oe=(q=Me&&Me[0])!==null&&q!==void 0?q:(Z=r.leftTitle)===null||Z===void 0?void 0:Z.call(r))!==null&&oe!==void 0?oe:(Ie.titles||[\"\",\"\"])[0],Ae=(Q=(re=Me&&Me[1])!==null&&re!==void 0?re:(Y=r.rightTitle)===null||Y===void 0?void 0:Y.call(r))!==null&&Q!==void 0?Q:(Ie.titles||[\"\",\"\"])[1];return f(\"div\",A(A({},o),{},{class:_e,style:se,id:me}),[f(CS,A({key:\"leftList\",prefixCls:`${i.value}-list`,dataSource:H.value,filterOption:Se,style:j(Ce,\"left\"),checkedKeys:d.value,handleFilter:O,handleClear:R,onItemSelect:T,onItemSelectAll:C,renderItem:Re,showSearch:be,renderList:te,onScroll:N,disabled:ce,direction:s.value===\"rtl\"?\"right\":\"left\",showSelectAll:X,selectAllLabel:U[0]||r.leftSelectAllLabel,pagination:ae},Ie),{titleText:()=>He,footer:Te}),f(Ug,{key:\"operation\",class:`${i.value}-operation`,rightActive:xe,rightArrowText:ue[0],moveToRight:$,leftActive:$e,leftArrowText:ue[1],moveToLeft:S,style:ge,disabled:ce,direction:s.value,oneWay:ie},null),f(CS,A({key:\"rightList\",prefixCls:`${i.value}-list`,dataSource:K.value,filterOption:Se,style:j(Ce,\"right\"),checkedKeys:p.value,handleFilter:M,handleClear:D,onItemSelect:k,onItemSelectAll:_,onItemRemove:B,renderItem:Re,showSearch:be,renderList:te,onScroll:F,disabled:ce,direction:s.value===\"rtl\"?\"left\":\"right\",showSelectAll:X,selectAllLabel:U[1]||r.rightSelectAllLabel,showRemove:ie,pagination:ae},Ie),{titleText:()=>Ae,footer:Te})])};return()=>c(f(_l,{componentName:\"Transfer\",defaultLocale:En.Transfer,children:G},null))}}),sK=Dt(iK);function cK(e){return Array.isArray(e)?e:e!==void 0?[e]:[]}function uK(e){const{label:t,value:n,children:o}=e||{},r=n||\"value\";return{_title:t?[t]:[\"title\",\"label\"],value:r,key:r,children:o||\"children\"}}function ym(e){return e.disabled||e.disableCheckbox||e.checkable===!1}function dK(e,t){const n=[];function o(r){r.forEach(l=>{n.push(l[t.value]);const a=l[t.children];a&&o(a)})}return o(e),n}function _S(e){return e==null}const M_=Symbol(\"TreeSelectContextPropsKey\");function fK(e){return Qe(M_,e)}function pK(){return Je(M_,{})}const mK={width:0,height:0,display:\"flex\",overflow:\"hidden\",opacity:0,border:0,padding:0,margin:0},vK=ne({compatConfig:{MODE:3},name:\"OptionList\",inheritAttrs:!1,setup(e,t){let{slots:n,expose:o}=t;const r=Bi(),l=Gu(),a=pK(),i=J(),s=Sv(()=>a.treeData,[()=>r.open,()=>a.treeData],C=>C[0]),c=I(()=>{const{checkable:C,halfCheckedKeys:_,checkedKeys:x}=l;return C?{checked:x,halfChecked:_}:null});pe(()=>r.open,()=>{it(()=>{var C;r.open&&!r.multiple&&l.checkedKeys.length&&((C=i.value)===null||C===void 0||C.scrollTo({key:l.checkedKeys[0]}))})},{immediate:!0,flush:\"post\"});const u=I(()=>String(r.searchValue).toLowerCase()),d=C=>u.value?String(C[l.treeNodeFilterProp]).toLowerCase().includes(u.value):!1,p=ee(l.treeDefaultExpandedKeys),m=ee(null);pe(()=>r.searchValue,()=>{r.searchValue&&(m.value=dK(zt(a.treeData),zt(a.fieldNames)))},{immediate:!0});const g=I(()=>l.treeExpandedKeys?l.treeExpandedKeys.slice():r.searchValue?m.value:p.value),v=C=>{var _;p.value=C,m.value=C,(_=l.onTreeExpand)===null||_===void 0||_.call(l,C)},y=C=>{C.preventDefault()},b=(C,_)=>{let{node:x}=_;var P,O;const{checkable:M,checkedKeys:E}=l;M&&ym(x)||((P=a.onSelect)===null||P===void 0||P.call(a,x.key,{selected:!E.includes(x.key)}),r.multiple||(O=r.toggleOpen)===null||O===void 0||O.call(r,!1))},S=J(null),$=I(()=>l.keyEntities[S.value]),w=C=>{S.value=C};return o({scrollTo:function(){for(var C,_,x=arguments.length,P=new Array(x),O=0;O<x;O++)P[O]=arguments[O];return(_=(C=i.value)===null||C===void 0?void 0:C.scrollTo)===null||_===void 0?void 0:_.call(C,...P)},onKeydown:C=>{var _;const{which:x}=C;switch(x){case we.UP:case we.DOWN:case we.LEFT:case we.RIGHT:(_=i.value)===null||_===void 0||_.onKeydown(C);break;case we.ENTER:{if($.value){const{selectable:P,value:O}=$.value.node||{};P!==!1&&b(null,{node:{key:S.value},selected:!l.checkedKeys.includes(O)})}break}case we.ESC:r.toggleOpen(!1)}},onKeyup:()=>{}}),()=>{var C;const{prefixCls:_,multiple:x,searchValue:P,open:O,notFoundContent:M=(C=n.notFoundContent)===null||C===void 0?void 0:C.call(n)}=r,{listHeight:E,listItemHeight:R,virtual:D,dropdownMatchSelectWidth:z,treeExpandAction:T}=a,{checkable:k,treeDefaultExpandAll:B,treeIcon:L,showTreeIcon:N,switcherIcon:F,treeLine:j,loadData:H,treeLoadedKeys:K,treeMotion:G,onTreeLoad:V,checkedKeys:q}=l;if(s.value.length===0)return f(\"div\",{role:\"listbox\",class:`${_}-empty`,onMousedown:y},[M]);const Z={fieldNames:a.fieldNames};return K&&(Z.loadedKeys=K),g.value&&(Z.expandedKeys=g.value),f(\"div\",{onMousedown:y},[$.value&&O&&f(\"span\",{style:mK,\"aria-live\":\"assertive\"},[$.value.node.value]),f(y_,A(A({ref:i,focusable:!1,prefixCls:`${_}-tree`,treeData:s.value,height:E,itemHeight:R,virtual:D!==!1&&z!==!1,multiple:x,icon:L,showIcon:N,switcherIcon:F,showLine:j,loadData:P?null:H,motion:G,activeKey:S.value,checkable:k,checkStrictly:!0,checkedKeys:c.value,selectedKeys:k?[]:q,defaultExpandAll:B},Z),{},{onActiveChange:w,onSelect:b,onCheck:b,onExpand:v,onLoad:V,filterTreeNode:d,expandAction:T}),h(h({},n),{checkable:l.customSlots.treeCheckable}))])}}}),gK=\"SHOW_ALL\",A_=\"SHOW_PARENT\",Yg=\"SHOW_CHILD\";function IS(e,t,n,o){const r=new Set(e);return t===Yg?e.filter(l=>{const a=n[l];return!(a&&a.children&&a.children.some(i=>{let{node:s}=i;return r.has(s[o.value])})&&a.children.every(i=>{let{node:s}=i;return ym(s)||r.has(s[o.value])}))}):t===A_?e.filter(l=>{const a=n[l],i=a?a.parent:null;return!(i&&!ym(i.node)&&r.has(i.key))}):e}const Da=()=>null;Da.inheritAttrs=!1;Da.displayName=\"ATreeSelectNode\";Da.isTreeSelectNode=!0;var hK=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function bK(e){return e&&e.type&&e.type.isTreeSelectNode}function yK(e){function t(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return kt(n).map(o=>{var r,l,a;if(!bK(o))return null;const i=o.children||{},s=o.key,c={};for(const[x,P]of Object.entries(o.props))c[_a(x)]=P;const{isLeaf:u,checkable:d,selectable:p,disabled:m,disableCheckbox:g}=c,v={isLeaf:u||u===\"\"||void 0,checkable:d||d===\"\"||void 0,selectable:p||p===\"\"||void 0,disabled:m||m===\"\"||void 0,disableCheckbox:g||g===\"\"||void 0},y=h(h({},c),v),{title:b=(r=i.title)===null||r===void 0?void 0:r.call(i,y),switcherIcon:S=(l=i.switcherIcon)===null||l===void 0?void 0:l.call(i,y)}=c,$=hK(c,[\"title\",\"switcherIcon\"]),w=(a=i.default)===null||a===void 0?void 0:a.call(i),C=h(h(h({},$),{title:b,switcherIcon:S,key:s,isLeaf:u}),v),_=t(w);return _.length&&(C.children=_),C})}return t(e)}function Sm(e){if(!e)return e;const t=h({},e);return\"props\"in t||Object.defineProperty(t,\"props\",{get(){return t}}),t}function SK(e,t,n,o,r,l){let a=null,i=null;function s(){function c(u){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"0\",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return u.map((m,g)=>{const v=`${d}-${g}`,y=m[l.value],b=n.includes(y),S=c(m[l.children]||[],v,b),$=f(Da,m,{default:()=>[S.map(w=>w.node)]});if(t===y&&(a=$),b){const w={pos:v,node:$,children:S};return p||i.push(w),w}return null}).filter(m=>m)}i||(i=[],c(o),i.sort((u,d)=>{let{node:{props:{value:p}}}=u,{node:{props:{value:m}}}=d;const g=n.indexOf(p),v=n.indexOf(m);return g-v}))}Object.defineProperty(e,\"triggerNode\",{get(){return s(),a}}),Object.defineProperty(e,\"allCheckedNodes\",{get(){return s(),r?i:i.map(c=>{let{node:u}=c;return u})}})}function $K(e,t){let{id:n,pId:o,rootPId:r}=t;const l={},a=[];return e.map(s=>{const c=h({},s),u=c[n];return l[u]=c,c.key=c.key||u,c}).forEach(s=>{const c=s[o],u=l[c];u&&(u.children=u.children||[],u.children.push(s)),(c===r||!u&&r===null)&&a.push(s)}),a}function CK(e,t,n){const o=ee();return pe([n,e,t],()=>{const r=n.value;e.value?o.value=n.value?$K(zt(e.value),h({id:\"id\",pId:\"pId\",rootPId:null},r!==!0?r:{})):zt(e.value).slice():o.value=yK(zt(t.value))},{immediate:!0,deep:!0}),o}const xK=e=>{const t=ee({valueLabels:new Map}),n=ee();return pe(e,()=>{n.value=zt(e.value)},{immediate:!0}),[I(()=>{const{valueLabels:r}=t.value,l=new Map,a=n.value.map(i=>{var s;const{value:c}=i,u=(s=i.label)!==null&&s!==void 0?s:r.get(c);return l.set(c,u),h(h({},i),{label:u})});return t.value.valueLabels=l,a})]},wK=(e,t)=>{const n=ee(new Map),o=ee({});return ze(()=>{const r=t.value,l=Xi(e.value,{fieldNames:r,initWrapper:a=>h(h({},a),{valueEntities:new Map}),processEntity:(a,i)=>{const s=a.node[r.value];i.valueEntities.set(s,a)}});n.value=l.valueEntities,o.value=l.keyEntities}),{valueEntities:n,keyEntities:o}},_K=(e,t,n,o,r,l)=>{const a=ee([]),i=ee([]);return ze(()=>{let s=e.value.map(d=>{let{value:p}=d;return p}),c=t.value.map(d=>{let{value:p}=d;return p});const u=s.filter(d=>!o.value[d]);n.value&&({checkedKeys:s,halfCheckedKeys:c}=mo(s,!0,o.value,r.value,l.value)),a.value=Array.from(new Set([...u,...s])),i.value=c}),[a,i]},IK=(e,t,n)=>{let{treeNodeFilterProp:o,filterTreeNode:r,fieldNames:l}=n;return I(()=>{const{children:a}=l.value,i=t.value,s=o?.value;if(!i||r.value===!1)return e.value;let c;if(typeof r.value==\"function\")c=r.value;else{const d=i.toUpperCase();c=(p,m)=>{const g=m[s];return String(g).toUpperCase().includes(d)}}function u(d){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const m=[];for(let g=0,v=d.length;g<v;g++){const y=d[g],b=y[a],S=p||c(i,Sm(y)),$=u(b||[],S);(S||$.length)&&m.push(h(h({},y),{[a]:$}))}return m}return u(e.value)})};function D_(){return h(h({},ot(Xu(),[\"mode\"])),{prefixCls:String,id:String,value:{type:[String,Number,Object,Array]},defaultValue:{type:[String,Number,Object,Array]},onChange:{type:Function},searchValue:String,inputValue:String,onSearch:{type:Function},autoClearSearchValue:{type:Boolean,default:void 0},filterTreeNode:{type:[Boolean,Function],default:void 0},treeNodeFilterProp:String,onSelect:Function,onDeselect:Function,showCheckedStrategy:{type:String},treeNodeLabelProp:String,fieldNames:{type:Object},multiple:{type:Boolean,default:void 0},treeCheckable:{type:Boolean,default:void 0},treeCheckStrictly:{type:Boolean,default:void 0},labelInValue:{type:Boolean,default:void 0},treeData:{type:Array},treeDataSimpleMode:{type:[Boolean,Object],default:void 0},loadData:{type:Function},treeLoadedKeys:{type:Array},onTreeLoad:{type:Function},treeDefaultExpandAll:{type:Boolean,default:void 0},treeExpandedKeys:{type:Array},treeDefaultExpandedKeys:{type:Array},onTreeExpand:{type:Function},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,onDropdownVisibleChange:{type:Function},treeLine:{type:[Boolean,Object],default:void 0},treeIcon:W.any,showTreeIcon:{type:Boolean,default:void 0},switcherIcon:W.any,treeMotion:W.any,children:Array,treeExpandAction:String,showArrow:{type:Boolean,default:void 0},showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},placeholder:W.any,maxTagPlaceholder:{type:Function},dropdownPopupAlign:W.any,customSlots:Object})}function PK(e){return!e||typeof e!=\"object\"}const TK=ne({compatConfig:{MODE:3},name:\"TreeSelect\",inheritAttrs:!1,props:Ze(D_(),{treeNodeFilterProp:\"value\",autoClearSearchValue:!0,showCheckedStrategy:Yg,listHeight:200,listItemHeight:20,prefixCls:\"vc-tree-select\"}),setup(e,t){let{attrs:n,expose:o,slots:r}=t;const l=$v(We(e,\"id\")),a=I(()=>e.treeCheckable&&!e.treeCheckStrictly),i=I(()=>e.treeCheckable||e.treeCheckStrictly),s=I(()=>e.treeCheckStrictly||e.labelInValue),c=I(()=>i.value||e.multiple),u=I(()=>uK(e.fieldNames)),[d,p]=Mt(\"\",{value:I(()=>e.searchValue!==void 0?e.searchValue:e.inputValue),postState:me=>me||\"\"}),m=me=>{var he;p(me),(he=e.onSearch)===null||he===void 0||he.call(e,me)},g=CK(We(e,\"treeData\"),We(e,\"children\"),We(e,\"treeDataSimpleMode\")),{keyEntities:v,valueEntities:y}=wK(g,u),b=me=>{const he=[],se=[];return me.forEach(te=>{y.value.has(te)?se.push(te):he.push(te)}),{missingRawValues:he,existRawValues:se}},S=IK(g,d,{fieldNames:u,treeNodeFilterProp:We(e,\"treeNodeFilterProp\"),filterTreeNode:We(e,\"filterTreeNode\")}),$=me=>{if(me){if(e.treeNodeLabelProp)return me[e.treeNodeLabelProp];const{_title:he}=u.value;for(let se=0;se<he.length;se+=1){const te=me[he[se]];if(te!==void 0)return te}}},w=me=>cK(me).map(se=>PK(se)?{value:se}:se),C=me=>w(me).map(se=>{let{label:te}=se;const{value:ae,halfChecked:fe}=se;let Ie;const Te=y.value.get(ae);return Te&&(te=te??$(Te.node),Ie=Te.node.disabled),{label:te,value:ae,halfChecked:fe,disabled:Ie}}),[_,x]=Mt(e.defaultValue,{value:We(e,\"value\")}),P=I(()=>w(_.value)),O=ee([]),M=ee([]);ze(()=>{const me=[],he=[];P.value.forEach(se=>{se.halfChecked?he.push(se):me.push(se)}),O.value=me,M.value=he});const E=I(()=>O.value.map(me=>me.value)),{maxLevel:R,levelEntities:D}=vd(v),[z,T]=_K(O,M,a,v,R,D),k=I(()=>{const se=IS(z.value,e.showCheckedStrategy,v.value,u.value).map(fe=>{var Ie,Te,Re;return(Re=(Te=(Ie=v.value[fe])===null||Ie===void 0?void 0:Ie.node)===null||Te===void 0?void 0:Te[u.value.value])!==null&&Re!==void 0?Re:fe}).map(fe=>{const Ie=O.value.find(Te=>Te.value===fe);return{value:fe,label:Ie?.label}}),te=C(se),ae=te[0];return!c.value&&ae&&_S(ae.value)&&_S(ae.label)?[]:te.map(fe=>{var Ie;return h(h({},fe),{label:(Ie=fe.label)!==null&&Ie!==void 0?Ie:fe.value})})}),[B]=xK(k),L=(me,he,se)=>{const te=C(me);if(x(te),e.autoClearSearchValue&&p(\"\"),e.onChange){let ae=me;a.value&&(ae=IS(me,e.showCheckedStrategy,v.value,u.value).map(He=>{const Ae=y.value.get(He);return Ae?Ae.node[u.value.value]:He}));const{triggerValue:fe,selected:Ie}=he||{triggerValue:void 0,selected:void 0};let Te=ae;if(e.treeCheckStrictly){const Me=M.value.filter(He=>!ae.includes(He.value));Te=[...Te,...Me]}const Re=C(Te),$e={preValue:O.value,triggerValue:fe};let xe=!0;(e.treeCheckStrictly||se===\"selection\"&&!Ie)&&(xe=!1),SK($e,fe,me,g.value,xe,u.value),i.value?$e.checked=Ie:$e.selected=Ie;const _e=s.value?Re:Re.map(Me=>Me.value);e.onChange(c.value?_e:_e[0],s.value?null:Re.map(Me=>Me.label),$e)}},N=(me,he)=>{let{selected:se,source:te}=he;var ae,fe,Ie;const Te=zt(v.value),Re=zt(y.value),$e=Te[me],xe=$e?.node,_e=(ae=xe?.[u.value.value])!==null&&ae!==void 0?ae:me;if(!c.value)L([_e],{selected:!0,triggerValue:_e},\"option\");else{let Me=se?[...E.value,_e]:z.value.filter(He=>He!==_e);if(a.value){const{missingRawValues:He,existRawValues:Ae}=b(Me),je=Ae.map(ft=>Re.get(ft).key);let at;se?{checkedKeys:at}=mo(je,!0,Te,R.value,D.value):{checkedKeys:at}=mo(je,{halfCheckedKeys:T.value},Te,R.value,D.value),Me=[...He,...at.map(ft=>Te[ft].node[u.value.value])]}L(Me,{selected:se,triggerValue:_e},te||\"option\")}se||!c.value?(fe=e.onSelect)===null||fe===void 0||fe.call(e,_e,Sm(xe)):(Ie=e.onDeselect)===null||Ie===void 0||Ie.call(e,_e,Sm(xe))},F=me=>{if(e.onDropdownVisibleChange){const he={};Object.defineProperty(he,\"documentClickClose\",{get(){return!1}}),e.onDropdownVisibleChange(me,he)}},j=(me,he)=>{const se=me.map(te=>te.value);if(he.type===\"clear\"){L(se,{},\"selection\");return}he.values.length&&N(he.values[0].value,{selected:!1,source:\"selection\"})},{treeNodeFilterProp:H,loadData:K,treeLoadedKeys:G,onTreeLoad:V,treeDefaultExpandAll:q,treeExpandedKeys:Z,treeDefaultExpandedKeys:oe,onTreeExpand:re,virtual:Y,listHeight:Q,listItemHeight:ce,treeLine:ue,treeIcon:be,showTreeIcon:Ce,switcherIcon:ge,treeMotion:Se,customSlots:X,dropdownMatchSelectWidth:U,treeExpandAction:ie}=jo(e);EA(jc({checkable:i,loadData:K,treeLoadedKeys:G,onTreeLoad:V,checkedKeys:z,halfCheckedKeys:T,treeDefaultExpandAll:q,treeExpandedKeys:Z,treeDefaultExpandedKeys:oe,onTreeExpand:re,treeIcon:be,treeMotion:Se,showTreeIcon:Ce,switcherIcon:ge,treeLine:ue,treeNodeFilterProp:H,keyEntities:v,customSlots:X})),fK(jc({virtual:Y,listHeight:Q,listItemHeight:ce,treeData:S,fieldNames:u,onSelect:N,dropdownMatchSelectWidth:U,treeExpandAction:ie}));const ve=J();return o({focus(){var me;(me=ve.value)===null||me===void 0||me.focus()},blur(){var me;(me=ve.value)===null||me===void 0||me.blur()},scrollTo(me){var he;(he=ve.value)===null||he===void 0||he.scrollTo(me)}}),()=>{var me;const he=ot(e,[\"id\",\"prefixCls\",\"customSlots\",\"value\",\"defaultValue\",\"onChange\",\"onSelect\",\"onDeselect\",\"searchValue\",\"inputValue\",\"onSearch\",\"autoClearSearchValue\",\"filterTreeNode\",\"treeNodeFilterProp\",\"showCheckedStrategy\",\"treeNodeLabelProp\",\"multiple\",\"treeCheckable\",\"treeCheckStrictly\",\"labelInValue\",\"fieldNames\",\"treeDataSimpleMode\",\"treeData\",\"children\",\"loadData\",\"treeLoadedKeys\",\"onTreeLoad\",\"treeDefaultExpandAll\",\"treeExpandedKeys\",\"treeDefaultExpandedKeys\",\"onTreeExpand\",\"virtual\",\"listHeight\",\"listItemHeight\",\"onDropdownVisibleChange\",\"treeLine\",\"treeIcon\",\"showTreeIcon\",\"switcherIcon\",\"treeMotion\"]);return f(yv,A(A(A({ref:ve},n),he),{},{id:l,prefixCls:e.prefixCls,mode:c.value?\"multiple\":void 0,displayValues:B.value,onDisplayValuesChange:j,searchValue:d.value,onSearch:m,OptionList:vK,emptyOptions:!g.value.length,onDropdownVisibleChange:F,tagRender:e.tagRender||r.tagRender,dropdownMatchSelectWidth:(me=e.dropdownMatchSelectWidth)!==null&&me!==void 0?me:!0}),r)}}}),OK=e=>{const{componentCls:t,treePrefixCls:n,colorBgElevated:o}=e,r=`.${n}`;return[{[`${t}-dropdown`]:[{padding:`${e.paddingXS}px ${e.paddingXS/2}px`},$_(n,Le(e,{colorBgContainer:o})),{[r]:{borderRadius:0,\"&-list-holder-inner\":{alignItems:\"stretch\",[`${r}-treenode`]:{[`${r}-node-content-wrapper`]:{flex:\"auto\"}}}}},yd(`${n}-checkbox`,e),{\"&-rtl\":{direction:\"rtl\",[`${r}-switcher${r}-switcher_close`]:{[`${r}-switcher-icon svg`]:{transform:\"rotate(90deg)\"}}}}]}]};function EK(e,t){return Ge(\"TreeSelect\",n=>{const o=Le(n,{treePrefixCls:t.value});return[OK(o)]})(e)}const PS=(e,t,n)=>n!==void 0?n:`${e}-${t}`;function MK(){return h(h({},ot(D_(),[\"showTreeIcon\",\"treeMotion\",\"inputIcon\",\"getInputElement\",\"treeLine\",\"customSlots\"])),{suffixIcon:W.any,size:ke(),bordered:ye(),treeLine:Fe([Boolean,Object]),replaceFields:De(),placement:ke(),status:ke(),popupClassName:String,dropdownClassName:String,\"onUpdate:value\":de(),\"onUpdate:treeExpandedKeys\":de(),\"onUpdate:searchValue\":de()})}const Lf=ne({compatConfig:{MODE:3},name:\"ATreeSelect\",inheritAttrs:!1,props:Ze(MK(),{choiceTransitionName:\"\",listHeight:256,treeIcon:!1,listItemHeight:26,bordered:!0}),slots:Object,setup(e,t){let{attrs:n,slots:o,expose:r,emit:l}=t;e.treeData===void 0&&o.default,Ot(e.multiple!==!1||!e.treeCheckable,\"TreeSelect\",\"`multiple` will always be `true` when `treeCheckable` is true\"),Ot(e.replaceFields===void 0,\"TreeSelect\",\"`replaceFields` is deprecated, please use fieldNames instead\"),Ot(!e.dropdownClassName,\"TreeSelect\",\"`dropdownClassName` is deprecated. Please use `popupClassName` instead.\");const a=Jt(),i=un.useInject(),s=I(()=>Do(i.status,e.status)),{prefixCls:c,renderEmpty:u,direction:d,virtual:p,dropdownMatchSelectWidth:m,size:g,getPopupContainer:v,getPrefixCls:y,disabled:b}=Pe(\"select\",e),{compactSize:S,compactItemClassnames:$}=Xr(c,d),w=I(()=>S.value||g.value),C=zn(),_=I(()=>{var G;return(G=b.value)!==null&&G!==void 0?G:C.value}),x=I(()=>y()),P=I(()=>e.placement!==void 0?e.placement:d.value===\"rtl\"?\"bottomRight\":\"bottomLeft\"),O=I(()=>PS(x.value,vv(P.value),e.transitionName)),M=I(()=>PS(x.value,\"\",e.choiceTransitionName)),E=I(()=>y(\"select-tree\",e.prefixCls)),R=I(()=>y(\"tree-select\",e.prefixCls)),[D,z]=Tv(c),[T]=EK(R,E),k=I(()=>le(e.popupClassName||e.dropdownClassName,`${R.value}-dropdown`,{[`${R.value}-dropdown-rtl`]:d.value===\"rtl\"},z.value)),B=I(()=>!!(e.treeCheckable||e.multiple)),L=I(()=>e.showArrow!==void 0?e.showArrow:e.loading||!B.value),N=J();r({focus(){var G,V;(V=(G=N.value).focus)===null||V===void 0||V.call(G)},blur(){var G,V;(V=(G=N.value).blur)===null||V===void 0||V.call(G)}});const F=function(){for(var G=arguments.length,V=new Array(G),q=0;q<G;q++)V[q]=arguments[q];l(\"update:value\",V[0]),l(\"change\",...V),a.onFieldChange()},j=G=>{l(\"update:treeExpandedKeys\",G),l(\"treeExpand\",G)},H=G=>{l(\"update:searchValue\",G),l(\"search\",G)},K=G=>{l(\"blur\",G),a.onFieldBlur()};return()=>{var G,V,q;const{notFoundContent:Z=(G=o.notFoundContent)===null||G===void 0?void 0:G.call(o),prefixCls:oe,bordered:re,listHeight:Y,listItemHeight:Q,multiple:ce,treeIcon:ue,treeLine:be,showArrow:Ce,switcherIcon:ge=(V=o.switcherIcon)===null||V===void 0?void 0:V.call(o),fieldNames:Se=e.replaceFields,id:X=a.id.value,placeholder:U=(q=o.placeholder)===null||q===void 0?void 0:q.call(o)}=e,{isFormItemInput:ie,hasFeedback:ve,feedbackIcon:me}=i,{suffixIcon:he,removeIcon:se,clearIcon:te}=wv(h(h({},e),{multiple:B.value,showArrow:L.value,hasFeedback:ve,feedbackIcon:me,prefixCls:c.value}),o);let ae;Z!==void 0?ae=Z:ae=u(\"Select\");const fe=ot(e,[\"suffixIcon\",\"itemIcon\",\"removeIcon\",\"clearIcon\",\"switcherIcon\",\"bordered\",\"status\",\"onUpdate:value\",\"onUpdate:treeExpandedKeys\",\"onUpdate:searchValue\"]),Ie=le(!oe&&R.value,{[`${c.value}-lg`]:w.value===\"large\",[`${c.value}-sm`]:w.value===\"small\",[`${c.value}-rtl`]:d.value===\"rtl\",[`${c.value}-borderless`]:!re,[`${c.value}-in-form-item`]:ie},Cn(c.value,s.value,ve),$.value,n.class,z.value),Te={};return e.treeData===void 0&&o.default&&(Te.children=$t(o.default())),D(T(f(TK,A(A(A(A({},n),fe),{},{disabled:_.value,virtual:p.value,dropdownMatchSelectWidth:m.value,id:X,fieldNames:Se,ref:N,prefixCls:c.value,class:Ie,listHeight:Y,listItemHeight:Q,treeLine:!!be,inputIcon:he,multiple:ce,removeIcon:se,clearIcon:te,switcherIcon:Re=>S_(E.value,ge,Re,o.leafIcon,be),showTreeIcon:ue,notFoundContent:ae,getPopupContainer:v?.value,treeMotion:null,dropdownClassName:k.value,choiceTransitionName:M.value,onChange:F,onBlur:K,onSearch:H,onTreeExpand:j},Te),{},{transitionName:O.value,customSlots:h(h({},o),{treeCheckable:()=>f(\"span\",{class:`${c.value}-tree-checkbox-inner`},null)}),maxTagPlaceholder:e.maxTagPlaceholder||o.maxTagPlaceholder,placement:P.value,showArrow:ve||Ce,placeholder:U}),h(h({},o),{treeCheckable:()=>f(\"span\",{class:`${c.value}-tree-checkbox-inner`},null)}))))}}}),$m=Da,AK=h(Lf,{TreeNode:Da,SHOW_ALL:gK,SHOW_PARENT:A_,SHOW_CHILD:Yg,install:e=>(e.component(Lf.name,Lf),e.component($m.displayName,$m),e)}),Ff=()=>({format:String,showNow:ye(),showHour:ye(),showMinute:ye(),showSecond:ye(),use12Hours:ye(),hourStep:Number,minuteStep:Number,secondStep:Number,hideDisabledOptions:ye(),popupClassName:String,status:ke()});function DK(e){const t=Zw(e,h(h({},Ff()),{order:{type:Boolean,default:!0}})),{TimePicker:n,RangePicker:o}=t,r=ne({name:\"ATimePicker\",inheritAttrs:!1,props:h(h(h(h({},vu()),Uw()),Ff()),{addon:{type:Function}}),slots:Object,setup(a,i){let{slots:s,expose:c,emit:u,attrs:d}=i;const p=a,m=Jt();Ot(!(s.addon||p.addon),\"TimePicker\",\"`addon` is deprecated. Please use `v-slot:renderExtraFooter` instead.\");const g=J();c({focus:()=>{var w;(w=g.value)===null||w===void 0||w.focus()},blur:()=>{var w;(w=g.value)===null||w===void 0||w.blur()}});const v=(w,C)=>{u(\"update:value\",w),u(\"change\",w,C),m.onFieldChange()},y=w=>{u(\"update:open\",w),u(\"openChange\",w)},b=w=>{u(\"focus\",w)},S=w=>{u(\"blur\",w),m.onFieldBlur()},$=w=>{u(\"ok\",w)};return()=>{const{id:w=m.id.value}=p;return f(n,A(A(A({},d),ot(p,[\"onUpdate:value\",\"onUpdate:open\"])),{},{id:w,dropdownClassName:p.popupClassName,mode:void 0,ref:g,renderExtraFooter:p.addon||s.addon||p.renderExtraFooter||s.renderExtraFooter,onChange:v,onOpenChange:y,onFocus:b,onBlur:S,onOk:$}),s)}}}),l=ne({name:\"ATimeRangePicker\",inheritAttrs:!1,props:h(h(h(h({},vu()),Yw()),Ff()),{order:{type:Boolean,default:!0}}),slots:Object,setup(a,i){let{slots:s,expose:c,emit:u,attrs:d}=i;const p=a,m=J(),g=Jt();c({focus:()=>{var _;(_=m.value)===null||_===void 0||_.focus()},blur:()=>{var _;(_=m.value)===null||_===void 0||_.blur()}});const v=(_,x)=>{u(\"update:value\",_),u(\"change\",_,x),g.onFieldChange()},y=_=>{u(\"update:open\",_),u(\"openChange\",_)},b=_=>{u(\"focus\",_)},S=_=>{u(\"blur\",_),g.onFieldBlur()},$=(_,x)=>{u(\"panelChange\",_,x)},w=_=>{u(\"ok\",_)},C=(_,x,P)=>{u(\"calendarChange\",_,x,P)};return()=>{const{id:_=g.id.value}=p;return f(o,A(A(A({},d),ot(p,[\"onUpdate:open\",\"onUpdate:value\"])),{},{id:_,dropdownClassName:p.popupClassName,picker:\"time\",mode:void 0,ref:m,onChange:v,onOpenChange:y,onFocus:b,onBlur:S,onPanelChange:$,onOk:w,onCalendarChange:C}),s)}}});return{TimePicker:r,TimeRangePicker:l}}const{TimePicker:Ms,TimeRangePicker:Pc}=DK(Wv),RK=h(Ms,{TimePicker:Ms,TimeRangePicker:Pc,install:e=>(e.component(Ms.name,Ms),e.component(Pc.name,Pc),e)}),kK=()=>({prefixCls:String,color:String,dot:W.any,pending:ye(),position:W.oneOf(hn(\"left\",\"right\",\"\")).def(\"\"),label:W.any}),$a=ne({compatConfig:{MODE:3},name:\"ATimelineItem\",props:Ze(kK(),{color:\"blue\",pending:!1}),slots:Object,setup(e,t){let{slots:n}=t;const{prefixCls:o}=Pe(\"timeline\",e),r=I(()=>({[`${o.value}-item`]:!0,[`${o.value}-item-pending`]:e.pending})),l=I(()=>/blue|red|green|gray/.test(e.color||\"\")?void 0:e.color||\"blue\"),a=I(()=>({[`${o.value}-item-head`]:!0,[`${o.value}-item-head-${e.color||\"blue\"}`]:!l.value}));return()=>{var i,s,c;const{label:u=(i=n.label)===null||i===void 0?void 0:i.call(n),dot:d=(s=n.dot)===null||s===void 0?void 0:s.call(n)}=e;return f(\"li\",{class:r.value},[u&&f(\"div\",{class:`${o.value}-item-label`},[u]),f(\"div\",{class:`${o.value}-item-tail`},null),f(\"div\",{class:[a.value,!!d&&`${o.value}-item-head-custom`],style:{borderColor:l.value,color:l.value}},[d]),f(\"div\",{class:`${o.value}-item-content`},[(c=n.default)===null||c===void 0?void 0:c.call(n)])])}}}),NK=e=>{const{componentCls:t}=e;return{[t]:h(h({},Ue(e)),{margin:0,padding:0,listStyle:\"none\",[`${t}-item`]:{position:\"relative\",margin:0,paddingBottom:e.timeLineItemPaddingBottom,fontSize:e.fontSize,listStyle:\"none\",\"&-tail\":{position:\"absolute\",insetBlockStart:e.timeLineItemHeadSize,insetInlineStart:(e.timeLineItemHeadSize-e.timeLineItemTailWidth)/2,height:`calc(100% - ${e.timeLineItemHeadSize}px)`,borderInlineStart:`${e.timeLineItemTailWidth}px ${e.lineType} ${e.colorSplit}`},\"&-pending\":{[`${t}-item-head`]:{fontSize:e.fontSizeSM,backgroundColor:\"transparent\"},[`${t}-item-tail`]:{display:\"none\"}},\"&-head\":{position:\"absolute\",width:e.timeLineItemHeadSize,height:e.timeLineItemHeadSize,backgroundColor:e.colorBgContainer,border:`${e.timeLineHeadBorderWidth}px ${e.lineType} transparent`,borderRadius:\"50%\",\"&-blue\":{color:e.colorPrimary,borderColor:e.colorPrimary},\"&-red\":{color:e.colorError,borderColor:e.colorError},\"&-green\":{color:e.colorSuccess,borderColor:e.colorSuccess},\"&-gray\":{color:e.colorTextDisabled,borderColor:e.colorTextDisabled}},\"&-head-custom\":{position:\"absolute\",insetBlockStart:e.timeLineItemHeadSize/2,insetInlineStart:e.timeLineItemHeadSize/2,width:\"auto\",height:\"auto\",marginBlockStart:0,paddingBlock:e.timeLineItemCustomHeadPaddingVertical,lineHeight:1,textAlign:\"center\",border:0,borderRadius:0,transform:\"translate(-50%, -50%)\"},\"&-content\":{position:\"relative\",insetBlockStart:-(e.fontSize*e.lineHeight-e.fontSize)+e.lineWidth,marginInlineStart:e.margin+e.timeLineItemHeadSize,marginInlineEnd:0,marginBlockStart:0,marginBlockEnd:0,wordBreak:\"break-word\"},\"&-last\":{[`> ${t}-item-tail`]:{display:\"none\"},[`> ${t}-item-content`]:{minHeight:e.controlHeightLG*1.2}}},[`&${t}-alternate,\n        &${t}-right,\n        &${t}-label`]:{[`${t}-item`]:{\"&-tail, &-head, &-head-custom\":{insetInlineStart:\"50%\"},\"&-head\":{marginInlineStart:`-${e.marginXXS}px`,\"&-custom\":{marginInlineStart:e.timeLineItemTailWidth/2}},\"&-left\":{[`${t}-item-content`]:{insetInlineStart:`calc(50% - ${e.marginXXS}px)`,width:`calc(50% - ${e.marginSM}px)`,textAlign:\"start\"}},\"&-right\":{[`${t}-item-content`]:{width:`calc(50% - ${e.marginSM}px)`,margin:0,textAlign:\"end\"}}}},[`&${t}-right`]:{[`${t}-item-right`]:{[`${t}-item-tail,\n            ${t}-item-head,\n            ${t}-item-head-custom`]:{insetInlineStart:`calc(100% - ${(e.timeLineItemHeadSize+e.timeLineItemTailWidth)/2}px)`},[`${t}-item-content`]:{width:`calc(100% - ${e.timeLineItemHeadSize+e.marginXS}px)`}}},[`&${t}-pending\n        ${t}-item-last\n        ${t}-item-tail`]:{display:\"block\",height:`calc(100% - ${e.margin}px)`,borderInlineStart:`${e.timeLineItemTailWidth}px dotted ${e.colorSplit}`},[`&${t}-reverse\n        ${t}-item-last\n        ${t}-item-tail`]:{display:\"none\"},[`&${t}-reverse ${t}-item-pending`]:{[`${t}-item-tail`]:{insetBlockStart:e.margin,display:\"block\",height:`calc(100% - ${e.margin}px)`,borderInlineStart:`${e.timeLineItemTailWidth}px dotted ${e.colorSplit}`},[`${t}-item-content`]:{minHeight:e.controlHeightLG*1.2}},[`&${t}-label`]:{[`${t}-item-label`]:{position:\"absolute\",insetBlockStart:-(e.fontSize*e.lineHeight-e.fontSize)+e.timeLineItemTailWidth,width:`calc(50% - ${e.marginSM}px)`,textAlign:\"end\"},[`${t}-item-right`]:{[`${t}-item-label`]:{insetInlineStart:`calc(50% + ${e.marginSM}px)`,width:`calc(50% - ${e.marginSM}px)`,textAlign:\"start\"}}},\"&-rtl\":{direction:\"rtl\",[`${t}-item-head-custom`]:{transform:\"translate(50%, -50%)\"}}})}},BK=Ge(\"Timeline\",e=>{const t=Le(e,{timeLineItemPaddingBottom:e.padding*1.25,timeLineItemHeadSize:10,timeLineItemCustomHeadPaddingVertical:e.paddingXXS,timeLinePaddingInlineEnd:2,timeLineItemTailWidth:e.lineWidthBold,timeLineHeadBorderWidth:e.wireframe?e.lineWidthBold:e.lineWidth*3});return[NK(t)]}),LK=()=>({prefixCls:String,pending:W.any,pendingDot:W.any,reverse:ye(),mode:W.oneOf(hn(\"left\",\"alternate\",\"right\",\"\"))}),ca=ne({compatConfig:{MODE:3},name:\"ATimeline\",inheritAttrs:!1,props:Ze(LK(),{reverse:!1,mode:\"\"}),slots:Object,setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"timeline\",e),[a,i]=BK(r),s=(c,u)=>{const d=c.props||{};return e.mode===\"alternate\"?d.position===\"right\"?`${r.value}-item-right`:d.position===\"left\"?`${r.value}-item-left`:u%2===0?`${r.value}-item-left`:`${r.value}-item-right`:e.mode===\"left\"?`${r.value}-item-left`:e.mode===\"right\"?`${r.value}-item-right`:d.position===\"right\"?`${r.value}-item-right`:\"\"};return()=>{var c,u,d;const{pending:p=(c=n.pending)===null||c===void 0?void 0:c.call(n),pendingDot:m=(u=n.pendingDot)===null||u===void 0?void 0:u.call(n),reverse:g,mode:v}=e,y=typeof p==\"boolean\"?null:p,b=kt((d=n.default)===null||d===void 0?void 0:d.call(n)),S=p?f($a,{pending:!!p,dot:m||f(Qn,null,null)},{default:()=>[y]}):null;S&&b.push(S);const $=g?b.reverse():b,w=$.length,C=`${r.value}-item-last`,_=$.map((O,M)=>{const E=M===w-2?C:\"\",R=M===w-1?C:\"\";return Oo(O,{class:le([!g&&p?E:R,s(O,M)])})}),x=$.some(O=>{var M,E;return!!(!((M=O.props)===null||M===void 0)&&M.label||!((E=O.children)===null||E===void 0)&&E.label)}),P=le(r.value,{[`${r.value}-pending`]:!!p,[`${r.value}-reverse`]:!!g,[`${r.value}-${v}`]:!!v&&!x,[`${r.value}-label`]:x,[`${r.value}-rtl`]:l.value===\"rtl\"},o.class,i.value);return a(f(\"ul\",A(A({},o),{},{class:P}),[_]))}}});ca.Item=$a;ca.install=function(e){return e.component(ca.name,ca),e.component($a.name,$a),e};const FK=(e,t,n,o)=>{const{sizeMarginHeadingVerticalEnd:r,fontWeightStrong:l}=o;return{marginBottom:r,color:n,fontWeight:l,fontSize:e,lineHeight:t}},zK=e=>{const t=[1,2,3,4,5],n={};return t.forEach(o=>{n[`\n      h${o}&,\n      div&-h${o},\n      div&-h${o} > textarea,\n      h${o}\n    `]=FK(e[`fontSizeHeading${o}`],e[`lineHeightHeading${o}`],e.colorTextHeading,e)}),n},HK=e=>{const{componentCls:t}=e;return{\"a&, a\":h(h({},zu(e)),{textDecoration:e.linkDecoration,\"&:active, &:hover\":{textDecoration:e.linkHoverDecoration},[`&[disabled], &${t}-disabled`]:{color:e.colorTextDisabled,cursor:\"not-allowed\",\"&:active, &:hover\":{color:e.colorTextDisabled},\"&:active\":{pointerEvents:\"none\"}}})}},jK=()=>({code:{margin:\"0 0.2em\",paddingInline:\"0.4em\",paddingBlock:\"0.2em 0.1em\",fontSize:\"85%\",background:\"rgba(150, 150, 150, 0.1)\",border:\"1px solid rgba(100, 100, 100, 0.2)\",borderRadius:3},kbd:{margin:\"0 0.2em\",paddingInline:\"0.4em\",paddingBlock:\"0.15em 0.1em\",fontSize:\"90%\",background:\"rgba(150, 150, 150, 0.06)\",border:\"1px solid rgba(100, 100, 100, 0.2)\",borderBottomWidth:2,borderRadius:3},mark:{padding:0,backgroundColor:tP[2]},\"u, ins\":{textDecoration:\"underline\",textDecorationSkipInk:\"auto\"},\"s, del\":{textDecoration:\"line-through\"},strong:{fontWeight:600},\"ul, ol\":{marginInline:0,marginBlock:\"0 1em\",padding:0,li:{marginInline:\"20px 0\",marginBlock:0,paddingInline:\"4px 0\",paddingBlock:0}},ul:{listStyleType:\"circle\",ul:{listStyleType:\"disc\"}},ol:{listStyleType:\"decimal\"},\"pre, blockquote\":{margin:\"1em 0\"},pre:{padding:\"0.4em 0.6em\",whiteSpace:\"pre-wrap\",wordWrap:\"break-word\",background:\"rgba(150, 150, 150, 0.1)\",border:\"1px solid rgba(100, 100, 100, 0.2)\",borderRadius:3,code:{display:\"inline\",margin:0,padding:0,fontSize:\"inherit\",fontFamily:\"inherit\",background:\"transparent\",border:0}},blockquote:{paddingInline:\"0.6em 0\",paddingBlock:0,borderInlineStart:\"4px solid rgba(100, 100, 100, 0.2)\",opacity:.85}}),WK=e=>{const{componentCls:t}=e,o=Dl(e).inputPaddingVertical+1;return{\"&-edit-content\":{position:\"relative\",\"div&\":{insetInlineStart:-e.paddingSM,marginTop:-o,marginBottom:`calc(1em - ${o}px)`},[`${t}-edit-content-confirm`]:{position:\"absolute\",insetInlineEnd:e.marginXS+2,insetBlockEnd:e.marginXS,color:e.colorTextDescription,fontWeight:\"normal\",fontSize:e.fontSize,fontStyle:\"normal\",pointerEvents:\"none\"},textarea:{margin:\"0!important\",MozTransition:\"none\",height:\"1em\"}}}},VK=e=>({\"&-copy-success\":{\"\\n    &,\\n    &:hover,\\n    &:focus\":{color:e.colorSuccess}}}),KK=()=>({\"\\n  a&-ellipsis,\\n  span&-ellipsis\\n  \":{display:\"inline-block\",maxWidth:\"100%\"},\"&-single-line\":{whiteSpace:\"nowrap\"},\"&-ellipsis-single-line\":{overflow:\"hidden\",textOverflow:\"ellipsis\",\"a&, span&\":{verticalAlign:\"bottom\"}},\"&-ellipsis-multiple-line\":{display:\"-webkit-box\",overflow:\"hidden\",WebkitLineClamp:3,WebkitBoxOrient:\"vertical\"}}),GK=e=>{const{componentCls:t,sizeMarginHeadingVerticalStart:n}=e;return{[t]:h(h(h(h(h(h(h(h(h({color:e.colorText,wordBreak:\"break-word\",lineHeight:e.lineHeight,[`&${t}-secondary`]:{color:e.colorTextDescription},[`&${t}-success`]:{color:e.colorSuccess},[`&${t}-warning`]:{color:e.colorWarning},[`&${t}-danger`]:{color:e.colorError,\"a&:active, a&:focus\":{color:e.colorErrorActive},\"a&:hover\":{color:e.colorErrorHover}},[`&${t}-disabled`]:{color:e.colorTextDisabled,cursor:\"not-allowed\",userSelect:\"none\"},\"\\n        div&,\\n        p\\n      \":{marginBottom:\"1em\"}},zK(e)),{[`\n      & + h1${t},\n      & + h2${t},\n      & + h3${t},\n      & + h4${t},\n      & + h5${t}\n      `]:{marginTop:n},\"\\n      div,\\n      ul,\\n      li,\\n      p,\\n      h1,\\n      h2,\\n      h3,\\n      h4,\\n      h5\":{\"\\n        + h1,\\n        + h2,\\n        + h3,\\n        + h4,\\n        + h5\\n        \":{marginTop:n}}}),jK()),HK(e)),{[`\n        ${t}-expand,\n        ${t}-edit,\n        ${t}-copy\n      `]:h(h({},zu(e)),{marginInlineStart:e.marginXXS})}),WK(e)),VK(e)),KK()),{\"&-rtl\":{direction:\"rtl\"}})}},R_=Ge(\"Typography\",e=>[GK(e)],{sizeMarginHeadingVerticalStart:\"1.2em\",sizeMarginHeadingVerticalEnd:\"0.5em\"}),XK=()=>({prefixCls:String,value:String,maxlength:Number,autoSize:{type:[Boolean,Object]},onSave:Function,onCancel:Function,onEnd:Function,onChange:Function,originContent:String,direction:String,component:String}),UK=ne({compatConfig:{MODE:3},name:\"Editable\",inheritAttrs:!1,props:XK(),setup(e,t){let{emit:n,slots:o,attrs:r}=t;const{prefixCls:l}=jo(e),a=vt({current:e.value||\"\",lastKeyCode:void 0,inComposition:!1,cancelFlag:!1});pe(()=>e.value,S=>{a.current=S});const i=J();Ne(()=>{var S;if(i.value){const $=(S=i.value)===null||S===void 0?void 0:S.resizableTextArea,w=$?.textArea;w.focus();const{length:C}=w.value;w.setSelectionRange(C,C)}});function s(S){i.value=S}function c(S){let{target:{value:$}}=S;a.current=$.replace(/[\\r\\n]/g,\"\"),n(\"change\",a.current)}function u(){a.inComposition=!0}function d(){a.inComposition=!1}function p(S){const{keyCode:$}=S;$===we.ENTER&&S.preventDefault(),!a.inComposition&&(a.lastKeyCode=$)}function m(S){const{keyCode:$,ctrlKey:w,altKey:C,metaKey:_,shiftKey:x}=S;a.lastKeyCode===$&&!a.inComposition&&!w&&!C&&!_&&!x&&($===we.ENTER?(v(),n(\"end\")):$===we.ESC&&(a.current=e.originContent,n(\"cancel\")))}function g(){v()}function v(){n(\"save\",a.current.trim())}const[y,b]=R_(l);return()=>{const S=le({[`${l.value}`]:!0,[`${l.value}-edit-content`]:!0,[`${l.value}-rtl`]:e.direction===\"rtl\",[e.component?`${l.value}-${e.component}`:\"\"]:!0},r.class,b.value);return y(f(\"div\",A(A({},r),{},{class:S}),[f(Rg,{ref:s,maxlength:e.maxlength,value:a.current,onChange:c,onKeydown:p,onKeyup:m,onCompositionstart:u,onCompositionend:d,onBlur:g,rows:1,autoSize:e.autoSize===void 0||e.autoSize},null),o.enterIcon?o.enterIcon({className:`${e.prefixCls}-edit-content-confirm`}):f(nP,{class:`${e.prefixCls}-edit-content-confirm`},null)]))}}}),YK=3,qK=8;let Nn;const zf={padding:0,margin:0,display:\"inline\",lineHeight:\"inherit\"};function k_(e,t){e.setAttribute(\"aria-hidden\",\"true\");const n=window.getComputedStyle(t),o=gA(n);e.setAttribute(\"style\",o),e.style.position=\"fixed\",e.style.left=\"0\",e.style.height=\"auto\",e.style.minHeight=\"auto\",e.style.maxHeight=\"auto\",e.style.paddingTop=\"0\",e.style.paddingBottom=\"0\",e.style.borderTopWidth=\"0\",e.style.borderBottomWidth=\"0\",e.style.top=\"-999999px\",e.style.zIndex=\"-1000\",e.style.textOverflow=\"clip\",e.style.whiteSpace=\"normal\",e.style.webkitLineClamp=\"none\"}function ZK(e){const t=document.createElement(\"div\");k_(t,e),t.appendChild(document.createTextNode(\"text\")),document.body.appendChild(t);const n=t.getBoundingClientRect().height;return document.body.removeChild(t),n}const QK=(e,t,n,o,r)=>{Nn||(Nn=document.createElement(\"div\"),Nn.setAttribute(\"aria-hidden\",\"true\"),document.body.appendChild(Nn));const{rows:l,suffix:a=\"\"}=t,i=ZK(e),s=Math.round(i*l*100)/100;k_(Nn,e);const c=a$({render(){return f(\"div\",{style:zf},[f(\"span\",{style:zf},[n,a]),f(\"span\",{style:zf},[o])])}});c.mount(Nn);function u(){return Math.round(Nn.getBoundingClientRect().height*100)/100-.1<=s}if(u())return c.unmount(),{content:n,text:Nn.innerHTML,ellipsis:!1};const d=Array.prototype.slice.apply(Nn.childNodes[0].childNodes[0].cloneNode(!0).childNodes).filter($=>{let{nodeType:w,data:C}=$;return w!==qK&&C!==\"\"}),p=Array.prototype.slice.apply(Nn.childNodes[0].childNodes[1].cloneNode(!0).childNodes);c.unmount();const m=[];Nn.innerHTML=\"\";const g=document.createElement(\"span\");Nn.appendChild(g);const v=document.createTextNode(r+a);g.appendChild(v),p.forEach($=>{Nn.appendChild($)});function y($){g.insertBefore($,v)}function b($,w){let C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,_=arguments.length>3&&arguments[3]!==void 0?arguments[3]:w.length,x=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;const P=Math.floor((C+_)/2),O=w.slice(0,P);if($.textContent=O,C>=_-1)for(let M=_;M>=C;M-=1){const E=w.slice(0,M);if($.textContent=E,u()||!E)return M===w.length?{finished:!1,vNode:w}:{finished:!0,vNode:E}}return u()?b($,w,P,_,P):b($,w,C,P,x)}function S($){if($.nodeType===YK){const C=$.textContent||\"\",_=document.createTextNode(C);return y(_),b(_,C)}return{finished:!1,vNode:null}}return d.some($=>{const{finished:w,vNode:C}=S($);return C&&m.push(C),w}),{content:m,text:Nn.innerHTML,ellipsis:!0}};var JK=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const eG=()=>({prefixCls:String,direction:String,component:String}),Bn=ne({name:\"ATypography\",inheritAttrs:!1,props:eG(),setup(e,t){let{slots:n,attrs:o}=t;const{prefixCls:r,direction:l}=Pe(\"typography\",e),[a,i]=R_(r);return()=>{var s;const c=h(h({},e),o),{prefixCls:u,direction:d,component:p=\"article\"}=c,m=JK(c,[\"prefixCls\",\"direction\",\"component\"]);return a(f(p,A(A({},m),{},{class:le(r.value,{[`${r.value}-rtl`]:l.value===\"rtl\"},o.class,i.value)}),{default:()=>[(s=n.default)===null||s===void 0?void 0:s.call(n)]}))}}}),tG=()=>{const e=document.getSelection();if(!e.rangeCount)return function(){};let t=document.activeElement;const n=[];for(let o=0;o<e.rangeCount;o++)n.push(e.getRangeAt(o));switch(t.tagName.toUpperCase()){case\"INPUT\":case\"TEXTAREA\":t.blur();break;default:t=null;break}return e.removeAllRanges(),function(){e.type===\"Caret\"&&e.removeAllRanges(),e.rangeCount||n.forEach(function(o){e.addRange(o)}),t&&t.focus()}},TS={\"text/plain\":\"Text\",\"text/html\":\"Url\",default:\"Text\"},nG=\"Copy to clipboard: #{key}, Enter\";function oG(e){const t=(/mac os x/i.test(navigator.userAgent)?\"⌘\":\"Ctrl\")+\"+C\";return e.replace(/#{\\s*key\\s*}/g,t)}function rG(e,t){let n,o,r,l,a,i=!1;t||(t={});const s=t.debug||!1;try{if(o=tG(),r=document.createRange(),l=document.getSelection(),a=document.createElement(\"span\"),a.textContent=e,a.style.all=\"unset\",a.style.position=\"fixed\",a.style.top=0,a.style.clip=\"rect(0, 0, 0, 0)\",a.style.whiteSpace=\"pre\",a.style.webkitUserSelect=\"text\",a.style.MozUserSelect=\"text\",a.style.msUserSelect=\"text\",a.style.userSelect=\"text\",a.addEventListener(\"copy\",function(u){if(u.stopPropagation(),t.format)if(u.preventDefault(),typeof u.clipboardData>\"u\"){s&&console.warn(\"unable to use e.clipboardData\"),s&&console.warn(\"trying IE specific stuff\"),window.clipboardData.clearData();const d=TS[t.format]||TS.default;window.clipboardData.setData(d,e)}else u.clipboardData.clearData(),u.clipboardData.setData(t.format,e);t.onCopy&&(u.preventDefault(),t.onCopy(u.clipboardData))}),document.body.appendChild(a),r.selectNodeContents(a),l.addRange(r),!document.execCommand(\"copy\"))throw new Error(\"copy command was unsuccessful\");i=!0}catch(c){s&&console.error(\"unable to copy using execCommand: \",c),s&&console.warn(\"trying IE specific stuff\");try{window.clipboardData.setData(t.format||\"text\",e),t.onCopy&&t.onCopy(window.clipboardData),i=!0}catch(u){s&&console.error(\"unable to copy using clipboardData: \",u),s&&console.error(\"falling back to prompt\"),n=oG(\"message\"in t?t.message:nG),window.prompt(n,e)}}finally{l&&(typeof l.removeRange==\"function\"?l.removeRange(r):l.removeAllRanges()),a&&document.body.removeChild(a),o()}return i}var lG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const aG=wg(\"webkitLineClamp\"),iG=wg(\"textOverflow\"),OS=\"...\",es=()=>({editable:{type:[Boolean,Object],default:void 0},copyable:{type:[Boolean,Object],default:void 0},prefixCls:String,component:String,type:String,disabled:{type:Boolean,default:void 0},ellipsis:{type:[Boolean,Object],default:void 0},code:{type:Boolean,default:void 0},mark:{type:Boolean,default:void 0},underline:{type:Boolean,default:void 0},delete:{type:Boolean,default:void 0},strong:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},content:String,\"onUpdate:content\":Function}),ts=ne({compatConfig:{MODE:3},name:\"TypographyBase\",inheritAttrs:!1,props:es(),setup(e,t){let{slots:n,attrs:o,emit:r}=t;const{prefixCls:l,direction:a}=Pe(\"typography\",e),i=vt({copied:!1,ellipsisText:\"\",ellipsisContent:null,isEllipsis:!1,expanded:!1,clientRendered:!1,expandStr:\"\",copyStr:\"\",copiedStr:\"\",editStr:\"\",copyId:void 0,rafId:void 0,prevProps:void 0,originContent:\"\"}),s=J(),c=J(),u=I(()=>{const T=e.ellipsis;return T?h({rows:1,expandable:!1},typeof T==\"object\"?T:null):{}});Ne(()=>{i.clientRendered=!0,P()}),et(()=>{clearTimeout(i.copyId),qe.cancel(i.rafId)}),pe([()=>u.value.rows,()=>e.content],()=>{it(()=>{_()})},{flush:\"post\",deep:!0}),ze(()=>{e.content===void 0&&(eo(!e.editable),eo(!e.ellipsis))});function d(){var T;return e.ellipsis||e.editable?e.content:(T=Tn(s.value))===null||T===void 0?void 0:T.innerText}function p(T){const{onExpand:k}=u.value;i.expanded=!0,k?.(T)}function m(T){T.preventDefault(),i.originContent=e.content,C(!0)}function g(T){v(T),C(!1)}function v(T){const{onChange:k}=S.value;T!==e.content&&(r(\"update:content\",T),k?.(T))}function y(){var T,k;(k=(T=S.value).onCancel)===null||k===void 0||k.call(T),C(!1)}function b(T){T.preventDefault(),T.stopPropagation();const{copyable:k}=e,B=h({},typeof k==\"object\"?k:null);B.text===void 0&&(B.text=d()),rG(B.text||\"\"),i.copied=!0,it(()=>{B.onCopy&&B.onCopy(T),i.copyId=setTimeout(()=>{i.copied=!1},3e3)})}const S=I(()=>{const T=e.editable;return T?h({},typeof T==\"object\"?T:null):{editing:!1}}),[$,w]=Mt(!1,{value:I(()=>S.value.editing)});function C(T){const{onStart:k}=S.value;T&&k&&k(),w(T)}pe($,T=>{var k;T||(k=c.value)===null||k===void 0||k.focus()},{flush:\"post\"});function _(T){if(T){const{width:k,height:B}=T;if(!k||!B)return}qe.cancel(i.rafId),i.rafId=qe(()=>{P()})}const x=I(()=>{const{rows:T,expandable:k,suffix:B,onEllipsis:L,tooltip:N}=u.value;return B||N||e.editable||e.copyable||k||L?!1:T===1?iG:aG}),P=()=>{const{ellipsisText:T,isEllipsis:k}=i,{rows:B,suffix:L,onEllipsis:N}=u.value;if(!B||B<0||!Tn(s.value)||i.expanded||e.content===void 0||x.value)return;const{content:F,text:j,ellipsis:H}=QK(Tn(s.value),{rows:B,suffix:L},e.content,z(!0),OS);(T!==j||i.isEllipsis!==H)&&(i.ellipsisText=j,i.ellipsisContent=F,i.isEllipsis=H,k!==H&&N&&N(H))};function O(T,k){let{mark:B,code:L,underline:N,delete:F,strong:j,keyboard:H}=T,K=k;function G(V,q){if(!V)return;const Z=(function(){return K})();K=f(q,null,{default:()=>[Z]})}return G(j,\"strong\"),G(N,\"u\"),G(F,\"del\"),G(L,\"code\"),G(B,\"mark\"),G(H,\"kbd\"),K}function M(T){const{expandable:k,symbol:B}=u.value;if(!k||!T&&(i.expanded||!i.isEllipsis))return null;const L=(n.ellipsisSymbol?n.ellipsisSymbol():B)||i.expandStr;return f(\"a\",{key:\"expand\",class:`${l.value}-expand`,onClick:p,\"aria-label\":i.expandStr},[L])}function E(){if(!e.editable)return;const{tooltip:T,triggerType:k=[\"icon\"]}=e.editable,B=n.editableIcon?n.editableIcon():f(oP,{role:\"button\"},null),L=n.editableTooltip?n.editableTooltip():i.editStr,N=typeof L==\"string\"?L:\"\";return k.indexOf(\"icon\")!==-1?f(Ln,{key:\"edit\",title:T===!1?\"\":L},{default:()=>[f(yu,{ref:c,class:`${l.value}-edit`,onClick:m,\"aria-label\":N},{default:()=>[B]})]}):null}function R(){if(!e.copyable)return;const{tooltip:T}=e.copyable,k=i.copied?i.copiedStr:i.copyStr,B=n.copyableTooltip?n.copyableTooltip({copied:i.copied}):k,L=typeof B==\"string\"?B:\"\",N=i.copied?f(_u,null,null):f(rP,null,null),F=n.copyableIcon?n.copyableIcon({copied:!!i.copied}):N;return f(Ln,{key:\"copy\",title:T===!1?\"\":B},{default:()=>[f(yu,{class:[`${l.value}-copy`,{[`${l.value}-copy-success`]:i.copied}],onClick:b,\"aria-label\":L},{default:()=>[F]})]})}function D(){const{class:T,style:k}=o,{maxlength:B,autoSize:L,onEnd:N}=S.value;return f(UK,{class:T,style:k,prefixCls:l.value,value:e.content,originContent:i.originContent,maxlength:B,autoSize:L,onSave:g,onChange:v,onCancel:y,onEnd:N,direction:a.value,component:e.component},{enterIcon:n.editableEnterIcon})}function z(T){return[M(T),E(),R()].filter(k=>k)}return()=>{var T;const{triggerType:k=[\"icon\"]}=S.value,B=e.ellipsis||e.editable?e.content!==void 0?e.content:(T=n.default)===null||T===void 0?void 0:T.call(n):n.default?n.default():e.content;return $.value?D():f(_l,{componentName:\"Text\",children:L=>{const N=h(h({},e),o),{type:F,disabled:j,content:H,class:K,style:G}=N,V=lG(N,[\"type\",\"disabled\",\"content\",\"class\",\"style\"]),{rows:q,suffix:Z,tooltip:oe}=u.value,{edit:re,copy:Y,copied:Q,expand:ce}=L;i.editStr=re,i.copyStr=Y,i.copiedStr=Q,i.expandStr=ce;const ue=ot(V,[\"prefixCls\",\"editable\",\"copyable\",\"ellipsis\",\"mark\",\"code\",\"delete\",\"underline\",\"strong\",\"keyboard\",\"onUpdate:content\"]),be=x.value,Ce=q===1&&be,ge=q&&q>1&&be;let Se=B,X;if(q&&i.isEllipsis&&!i.expanded&&!be){const{title:ve}=V;let me=ve||\"\";!ve&&(typeof B==\"string\"||typeof B==\"number\")&&(me=String(B)),me=me?.slice(String(i.ellipsisContent||\"\").length),Se=f(Ve,null,[zt(i.ellipsisContent),f(\"span\",{title:me,\"aria-hidden\":\"true\"},[OS]),Z])}else Se=f(Ve,null,[B,Z]);Se=O(e,Se);const U=oe&&q&&i.isEllipsis&&!i.expanded&&!be,ie=n.ellipsisTooltip?n.ellipsisTooltip():oe;return f(go,{onResize:_,disabled:!q},{default:()=>[f(Bn,A({ref:s,class:[{[`${l.value}-${F}`]:F,[`${l.value}-disabled`]:j,[`${l.value}-ellipsis`]:q,[`${l.value}-single-line`]:q===1&&!i.isEllipsis,[`${l.value}-ellipsis-single-line`]:Ce,[`${l.value}-ellipsis-multiple-line`]:ge},K],style:h(h({},G),{WebkitLineClamp:ge?q:void 0}),\"aria-label\":X,direction:a.value,onClick:k.indexOf(\"text\")!==-1?m:()=>{}},ue),{default:()=>[U?f(Ln,{title:oe===!0?B:ie},{default:()=>[f(\"span\",null,[Se])]}):Se,z()]})]})}},null)}}});var sG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const cG=()=>ot(h(h({},es()),{ellipsis:{type:Boolean,default:void 0}}),[\"component\"]),Ra=(e,t)=>{let{slots:n,attrs:o}=t;const r=h(h({},e),o),{ellipsis:l,rel:a}=r,i=sG(r,[\"ellipsis\",\"rel\"]),s=h(h({},i),{rel:a===void 0&&i.target===\"_blank\"?\"noopener noreferrer\":a,ellipsis:!!l,component:\"a\"});return delete s.navigate,f(ts,s,n)};Ra.displayName=\"ATypographyLink\";Ra.inheritAttrs=!1;Ra.props=cG();const uG=()=>ot(es(),[\"component\"]),ka=(e,t)=>{let{slots:n,attrs:o}=t;const r=h(h(h({},e),{component:\"div\"}),o);return f(ts,r,n)};ka.displayName=\"ATypographyParagraph\";ka.inheritAttrs=!1;ka.props=uG();const dG=()=>h(h({},ot(es(),[\"component\"])),{ellipsis:{type:[Boolean,Object],default:void 0}}),Na=(e,t)=>{let{slots:n,attrs:o}=t;const{ellipsis:r}=e,l=h(h(h({},e),{ellipsis:r&&typeof r==\"object\"?ot(r,[\"expandable\",\"rows\"]):r,component:\"span\"}),o);return f(ts,l,n)};Na.displayName=\"ATypographyText\";Na.inheritAttrs=!1;Na.props=dG();var fG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const pG=oE(1,2,3,4,5),mG=()=>h(h({},ot(es(),[\"component\",\"strong\"])),{level:Number}),Ba=(e,t)=>{let{slots:n,attrs:o}=t;const{level:r=1}=e,l=fG(e,[\"level\"]);let a;pG.includes(r)?a=`h${r}`:a=\"h1\";const i=h(h(h({},l),{component:a}),o);return f(ts,i,n)};Ba.displayName=\"ATypographyTitle\";Ba.inheritAttrs=!1;Ba.props=mG();Bn.Text=Na;Bn.Title=Ba;Bn.Paragraph=ka;Bn.Link=Ra;Bn.Base=ts;Bn.install=function(e){return e.component(Bn.name,Bn),e.component(Bn.Text.displayName,Na),e.component(Bn.Title.displayName,Ba),e.component(Bn.Paragraph.displayName,ka),e.component(Bn.Link.displayName,Ra),e};function vG(e,t){const n=`cannot ${e.method} ${e.action} ${t.status}'`,o=new Error(n);return o.status=t.status,o.method=e.method,o.url=e.action,o}function ES(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}function gG(e){const t=new XMLHttpRequest;e.onProgress&&t.upload&&(t.upload.onprogress=function(l){l.total>0&&(l.percent=l.loaded/l.total*100),e.onProgress(l)});const n=new FormData;e.data&&Object.keys(e.data).forEach(r=>{const l=e.data[r];if(Array.isArray(l)){l.forEach(a=>{n.append(`${r}[]`,a)});return}n.append(r,l)}),e.file instanceof Blob?n.append(e.filename,e.file,e.file.name):n.append(e.filename,e.file),t.onerror=function(l){e.onError(l)},t.onload=function(){return t.status<200||t.status>=300?e.onError(vG(e,t),ES(t)):e.onSuccess(ES(t),t)},t.open(e.method,e.action,!0),e.withCredentials&&\"withCredentials\"in t&&(t.withCredentials=!0);const o=e.headers||{};return o[\"X-Requested-With\"]!==null&&t.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),Object.keys(o).forEach(r=>{o[r]!==null&&t.setRequestHeader(r,o[r])}),t.send(n),{abort(){t.abort()}}}const hG=+new Date;let bG=0;function Hf(){return`vc-upload-${hG}-${++bG}`}const jf=(e,t)=>{if(e&&t){const n=Array.isArray(t)?t:t.split(\",\"),o=e.name||\"\",r=e.type||\"\",l=r.replace(/\\/.*$/,\"\");return n.some(a=>{const i=a.trim();if(/^\\*(\\/\\*)?$/.test(a))return!0;if(i.charAt(0)===\".\"){const s=o.toLowerCase(),c=i.toLowerCase();let u=[c];return(c===\".jpg\"||c===\".jpeg\")&&(u=[\".jpg\",\".jpeg\"]),u.some(d=>s.endsWith(d))}return/\\/\\*$/.test(i)?l===i.replace(/\\/.*$/,\"\"):!!(r===i||/^\\w+$/.test(i))})}return!0};function yG(e,t){const n=e.createReader();let o=[];function r(){n.readEntries(l=>{const a=Array.prototype.slice.apply(l);o=o.concat(a),!a.length?t(o):r()})}r()}const SG=(e,t,n)=>{const o=(r,l)=>{r.path=l||\"\",r.isFile?r.file(a=>{n(a)&&(r.fullPath&&!a.webkitRelativePath&&(Object.defineProperties(a,{webkitRelativePath:{writable:!0}}),a.webkitRelativePath=r.fullPath.replace(/^\\//,\"\"),Object.defineProperties(a,{webkitRelativePath:{writable:!1}})),t([a]))}):r.isDirectory&&yG(r,a=>{a.forEach(i=>{o(i,`${l}${r.name}/`)})})};e.forEach(r=>{o(r.webkitGetAsEntry())})},N_=()=>({capture:[Boolean,String],multipart:{type:Boolean,default:void 0},name:String,disabled:{type:Boolean,default:void 0},componentTag:String,action:[String,Function],method:String,directory:{type:Boolean,default:void 0},data:[Object,Function],headers:Object,accept:String,multiple:{type:Boolean,default:void 0},onBatchStart:Function,onReject:Function,onStart:Function,onError:Function,onSuccess:Function,onProgress:Function,beforeUpload:Function,customRequest:Function,withCredentials:{type:Boolean,default:void 0},openFileDialogOnClick:{type:Boolean,default:void 0},prefixCls:String,id:String,onMouseenter:Function,onMouseleave:Function,onClick:Function});var $G=function(e,t,n,o){function r(l){return l instanceof n?l:new n(function(a){a(l)})}return new(n||(n=Promise))(function(l,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?l(u.value):r(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})},CG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const xG=ne({compatConfig:{MODE:3},name:\"AjaxUploader\",inheritAttrs:!1,props:N_(),setup(e,t){let{slots:n,attrs:o,expose:r}=t;const l=J(Hf()),a={},i=J();let s=!1;const c=(S,$)=>$G(this,void 0,void 0,function*(){const{beforeUpload:w}=e;let C=S;if(w){try{C=yield w(S,$)}catch{C=!1}if(C===!1)return{origin:S,parsedFile:null,action:null,data:null}}const{action:_}=e;let x;typeof _==\"function\"?x=yield _(S):x=_;const{data:P}=e;let O;typeof P==\"function\"?O=yield P(S):O=P;const M=(typeof C==\"object\"||typeof C==\"string\")&&C?C:S;let E;M instanceof File?E=M:E=new File([M],S.name,{type:S.type});const R=E;return R.uid=S.uid,{origin:S,data:O,parsedFile:R,action:x}}),u=S=>{let{data:$,origin:w,action:C,parsedFile:_}=S;if(!s)return;const{onStart:x,customRequest:P,name:O,headers:M,withCredentials:E,method:R}=e,{uid:D}=w,z=P||gG,T={action:C,filename:O,data:$,file:_,headers:M,withCredentials:E,method:R||\"post\",onProgress:k=>{const{onProgress:B}=e;B?.(k,_)},onSuccess:(k,B)=>{const{onSuccess:L}=e;L?.(k,_,B),delete a[D]},onError:(k,B)=>{const{onError:L}=e;L?.(k,B,_),delete a[D]}};x(w),a[D]=z(T)},d=()=>{l.value=Hf()},p=S=>{if(S){const $=S.uid?S.uid:S;a[$]&&a[$].abort&&a[$].abort(),delete a[$]}else Object.keys(a).forEach($=>{a[$]&&a[$].abort&&a[$].abort(),delete a[$]})};Ne(()=>{s=!0}),et(()=>{s=!1,p()});const m=S=>{const $=[...S],w=$.map(C=>(C.uid=Hf(),c(C,$)));Promise.all(w).then(C=>{const{onBatchStart:_}=e;_?.(C.map(x=>{let{origin:P,parsedFile:O}=x;return{file:P,parsedFile:O}})),C.filter(x=>x.parsedFile!==null).forEach(x=>{u(x)})})},g=S=>{const{accept:$,directory:w}=e,{files:C}=S.target,_=[...C].filter(x=>!w||jf(x,$));m(_),d()},v=S=>{const $=i.value;if(!$)return;const{onClick:w}=e;$.click(),w&&w(S)},y=S=>{S.key===\"Enter\"&&v(S)},b=S=>{const{multiple:$}=e;if(S.preventDefault(),S.type!==\"dragover\")if(e.directory)SG(Array.prototype.slice.call(S.dataTransfer.items),m,w=>jf(w,e.accept));else{const w=hP(Array.prototype.slice.call(S.dataTransfer.files),x=>jf(x,e.accept));let C=w[0];const _=w[1];$===!1&&(C=C.slice(0,1)),m(C),_.length&&e.onReject&&e.onReject(_)}};return r({abort:p}),()=>{var S;const{componentTag:$,prefixCls:w,disabled:C,id:_,multiple:x,accept:P,capture:O,directory:M,openFileDialogOnClick:E,onMouseenter:R,onMouseleave:D}=e,z=CG(e,[\"componentTag\",\"prefixCls\",\"disabled\",\"id\",\"multiple\",\"accept\",\"capture\",\"directory\",\"openFileDialogOnClick\",\"onMouseenter\",\"onMouseleave\"]),T={[w]:!0,[`${w}-disabled`]:C,[o.class]:!!o.class},k=M?{directory:\"directory\",webkitdirectory:\"webkitdirectory\"}:{};return f($,A(A({},C?{}:{onClick:E?v:()=>{},onKeydown:E?y:()=>{},onMouseenter:R,onMouseleave:D,onDrop:b,onDragover:b,tabindex:\"0\"}),{},{class:T,role:\"button\",style:o.style}),{default:()=>[f(\"input\",A(A(A({},Gr(z,{aria:!0,data:!0})),{},{id:_,type:\"file\",ref:i,onClick:L=>L.stopPropagation(),onCancel:L=>L.stopPropagation(),key:l.value,style:{display:\"none\"},accept:P},k),{},{multiple:x,onChange:g},O!=null?{capture:O}:{}),null),(S=n.default)===null||S===void 0?void 0:S.call(n)]})}}});function Wf(){}const MS=ne({compatConfig:{MODE:3},name:\"Upload\",inheritAttrs:!1,props:Ze(N_(),{componentTag:\"span\",prefixCls:\"rc-upload\",data:{},headers:{},name:\"file\",multipart:!1,onStart:Wf,onError:Wf,onSuccess:Wf,multiple:!1,beforeUpload:null,customRequest:null,withCredentials:!1,openFileDialogOnClick:!0}),setup(e,t){let{slots:n,attrs:o,expose:r}=t;const l=J();return r({abort:i=>{var s;(s=l.value)===null||s===void 0||s.abort(i)}}),()=>f(xG,A(A(A({},e),o),{},{ref:l}),n)}});function B_(){return{capture:Fe([Boolean,String]),type:ke(),name:String,defaultFileList:ct(),fileList:ct(),action:Fe([String,Function]),directory:ye(),data:Fe([Object,Function]),method:ke(),headers:De(),showUploadList:Fe([Boolean,Object]),multiple:ye(),accept:String,beforeUpload:de(),onChange:de(),\"onUpdate:fileList\":de(),onDrop:de(),listType:ke(),onPreview:de(),onDownload:de(),onReject:de(),onRemove:de(),remove:de(),supportServerRender:ye(),disabled:ye(),prefixCls:String,customRequest:de(),withCredentials:ye(),openFileDialogOnClick:ye(),locale:De(),id:String,previewFile:de(),transformFile:de(),iconRender:de(),isImageUrl:de(),progress:De(),itemRender:de(),maxCount:Number,height:Fe([Number,String]),removeIcon:de(),downloadIcon:de(),previewIcon:de()}}function wG(){return{listType:ke(),onPreview:de(),onDownload:de(),onRemove:de(),items:ct(),progress:De(),prefixCls:ke(),showRemoveIcon:ye(),showDownloadIcon:ye(),showPreviewIcon:ye(),removeIcon:de(),downloadIcon:de(),previewIcon:de(),locale:De(void 0),previewFile:de(),iconRender:de(),isImageUrl:de(),appendAction:de(),appendActionVisible:ye(),itemRender:de()}}function As(e){return h(h({},e),{lastModified:e.lastModified,lastModifiedDate:e.lastModifiedDate,name:e.name,size:e.size,type:e.type,uid:e.uid,percent:0,originFileObj:e})}function Ds(e,t){const n=[...t],o=n.findIndex(r=>{let{uid:l}=r;return l===e.uid});return o===-1?n.push(e):n[o]=e,n}function Vf(e,t){const n=e.uid!==void 0?\"uid\":\"name\";return t.filter(o=>o[n]===e[n])[0]}function _G(e,t){const n=e.uid!==void 0?\"uid\":\"name\",o=t.filter(r=>r[n]!==e[n]);return o.length===t.length?null:o}const IG=function(){const t=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"\").split(\"/\"),o=t[t.length-1].split(/#|\\?/)[0];return(/\\.[^./\\\\]*$/.exec(o)||[\"\"])[0]},L_=e=>e.indexOf(\"image/\")===0,PG=e=>{if(e.type&&!e.thumbUrl)return L_(e.type);const t=e.thumbUrl||e.url||\"\",n=IG(t);return/^data:image\\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)?!0:!(/^data:/.test(t)||n)},_r=200;function TG(e){return new Promise(t=>{if(!e.type||!L_(e.type)){t(\"\");return}const n=document.createElement(\"canvas\");n.width=_r,n.height=_r,n.style.cssText=`position: fixed; left: 0; top: 0; width: ${_r}px; height: ${_r}px; z-index: 9999; display: none;`,document.body.appendChild(n);const o=n.getContext(\"2d\"),r=new Image;if(r.onload=()=>{const{width:l,height:a}=r;let i=_r,s=_r,c=0,u=0;l>a?(s=a*(_r/l),u=-(s-i)/2):(i=l*(_r/a),c=-(i-s)/2),o.drawImage(r,c,u,i,s);const d=n.toDataURL();document.body.removeChild(n),t(d)},r.crossOrigin=\"anonymous\",e.type.startsWith(\"image/svg+xml\")){const l=new FileReader;l.addEventListener(\"load\",()=>{l.result&&(r.src=l.result)}),l.readAsDataURL(e)}else r.src=window.URL.createObjectURL(e)})}const OG=()=>({prefixCls:String,locale:De(void 0),file:De(),items:ct(),listType:ke(),isImgUrl:de(),showRemoveIcon:ye(),showDownloadIcon:ye(),showPreviewIcon:ye(),removeIcon:de(),downloadIcon:de(),previewIcon:de(),iconRender:de(),actionIconRender:de(),itemRender:de(),onPreview:de(),onClose:de(),onDownload:de(),progress:De()}),EG=ne({compatConfig:{MODE:3},name:\"ListItem\",inheritAttrs:!1,props:OG(),setup(e,t){let{slots:n,attrs:o}=t;var r;const l=ee(!1),a=ee();Ne(()=>{a.value=setTimeout(()=>{l.value=!0},300)}),et(()=>{clearTimeout(a.value)});const i=ee((r=e.file)===null||r===void 0?void 0:r.status);pe(()=>{var u;return(u=e.file)===null||u===void 0?void 0:u.status},u=>{u!==\"removed\"&&(i.value=u)});const{rootPrefixCls:s}=Pe(\"upload\",e),c=I(()=>bo(`${s.value}-fade`));return()=>{var u,d;const{prefixCls:p,locale:m,listType:g,file:v,items:y,progress:b,iconRender:S=n.iconRender,actionIconRender:$=n.actionIconRender,itemRender:w=n.itemRender,isImgUrl:C,showPreviewIcon:_,showRemoveIcon:x,showDownloadIcon:P,previewIcon:O=n.previewIcon,removeIcon:M=n.removeIcon,downloadIcon:E=n.downloadIcon,onPreview:R,onDownload:D,onClose:z}=e,{class:T,style:k}=o,B=S({file:v});let L=f(\"div\",{class:`${p}-text-icon`},[B]);if(g===\"picture\"||g===\"picture-card\")if(i.value===\"uploading\"||!v.thumbUrl&&!v.url){const ue={[`${p}-list-item-thumbnail`]:!0,[`${p}-list-item-file`]:i.value!==\"uploading\"};L=f(\"div\",{class:ue},[B])}else{const ue=C?.(v)?f(\"img\",{src:v.thumbUrl||v.url,alt:v.name,class:`${p}-list-item-image`,crossorigin:v.crossOrigin},null):B,be={[`${p}-list-item-thumbnail`]:!0,[`${p}-list-item-file`]:C&&!C(v)};L=f(\"a\",{class:be,onClick:Ce=>R(v,Ce),href:v.url||v.thumbUrl,target:\"_blank\",rel:\"noopener noreferrer\"},[ue])}const N={[`${p}-list-item`]:!0,[`${p}-list-item-${i.value}`]:!0},F=typeof v.linkProps==\"string\"?JSON.parse(v.linkProps):v.linkProps,j=x?$({customIcon:M?M({file:v}):f(l$,null,null),callback:()=>z(v),prefixCls:p,title:m.removeFile}):null,H=P&&i.value===\"done\"?$({customIcon:E?E({file:v}):f(lP,null,null),callback:()=>D(v),prefixCls:p,title:m.downloadFile}):null,K=g!==\"picture-card\"&&f(\"span\",{key:\"download-delete\",class:[`${p}-list-item-actions`,{picture:g===\"picture\"}]},[H,j]),G=`${p}-list-item-name`,V=v.url?[f(\"a\",A(A({key:\"view\",target:\"_blank\",rel:\"noopener noreferrer\",class:G,title:v.name},F),{},{href:v.url,onClick:ue=>R(v,ue)}),[v.name]),K]:[f(\"span\",{key:\"view\",class:G,onClick:ue=>R(v,ue),title:v.name},[v.name]),K],q={pointerEvents:\"none\",opacity:.5},Z=_?f(\"a\",{href:v.url||v.thumbUrl,target:\"_blank\",rel:\"noopener noreferrer\",style:v.url||v.thumbUrl?void 0:q,onClick:ue=>R(v,ue),title:m.previewFile},[O?O({file:v}):f(Om,null,null)]):null,oe=g===\"picture-card\"&&i.value!==\"uploading\"&&f(\"span\",{class:`${p}-list-item-actions`},[Z,i.value===\"done\"&&H,j]),re=f(\"div\",{class:N},[L,V,oe,l.value&&f(cn,c.value,{default:()=>[xn(f(\"div\",{class:`${p}-list-item-progress`},[\"percent\"in v?f(Hg,A(A({},b),{},{type:\"line\",percent:v.percent}),null):null]),[[On,i.value===\"uploading\"]])]})]),Y={[`${p}-list-item-container`]:!0,[`${T}`]:!!T},Q=v.response&&typeof v.response==\"string\"?v.response:((u=v.error)===null||u===void 0?void 0:u.statusText)||((d=v.error)===null||d===void 0?void 0:d.message)||m.uploadError,ce=i.value===\"error\"?f(Ln,{title:Q,getPopupContainer:ue=>ue.parentNode},{default:()=>[re]}):re;return f(\"div\",{class:Y,style:k},[w?w({originNode:ce,file:v,fileList:y,actions:{download:D.bind(null,v),preview:R.bind(null,v),remove:z.bind(null,v)}}):ce])}}}),MG=(e,t)=>{let{slots:n}=t;var o;return kt((o=n.default)===null||o===void 0?void 0:o.call(n))[0]},AG=ne({compatConfig:{MODE:3},name:\"AUploadList\",props:Ze(wG(),{listType:\"text\",progress:{strokeWidth:2,showInfo:!1},showRemoveIcon:!0,showDownloadIcon:!1,showPreviewIcon:!0,previewFile:TG,isImageUrl:PG,items:[],appendActionVisible:!0}),setup(e,t){let{slots:n,expose:o}=t;const r=ee(!1);Ne(()=>{r.value==!0});const l=ee([]);pe(()=>e.items,function(){let v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];l.value=v.slice()},{immediate:!0,deep:!0}),ze(()=>{if(e.listType!==\"picture\"&&e.listType!==\"picture-card\")return;let v=!1;(e.items||[]).forEach((y,b)=>{typeof document>\"u\"||typeof window>\"u\"||!window.FileReader||!window.File||!(y.originFileObj instanceof File||y.originFileObj instanceof Blob)||y.thumbUrl!==void 0||(y.thumbUrl=\"\",e.previewFile&&e.previewFile(y.originFileObj).then(S=>{const $=S||\"\";$!==y.thumbUrl&&(l.value[b].thumbUrl=$,v=!0)}))}),v&&qS(l)});const a=(v,y)=>{if(e.onPreview)return y?.preventDefault(),e.onPreview(v)},i=v=>{typeof e.onDownload==\"function\"?e.onDownload(v):v.url&&window.open(v.url)},s=v=>{var y;(y=e.onRemove)===null||y===void 0||y.call(e,v)},c=v=>{let{file:y}=v;const b=e.iconRender||n.iconRender;if(b)return b({file:y,listType:e.listType});const S=y.status===\"uploading\",$=e.isImageUrl&&e.isImageUrl(y)?f(aP,null,null):f(iP,null,null);let w=S?f(Qn,null,null):f(sP,null,null);return e.listType===\"picture\"?w=S?f(Qn,null,null):$:e.listType===\"picture-card\"&&(w=S?e.locale.uploading:$),w},u=v=>{const{customIcon:y,callback:b,prefixCls:S,title:$}=v,w={type:\"text\",size:\"small\",title:$,onClick:()=>{b()},class:`${S}-list-item-action`};return Kt(y)?f(_t,w,{icon:()=>y}):f(_t,w,{default:()=>[f(\"span\",null,[y])]})};o({handlePreview:a,handleDownload:i});const{prefixCls:d,rootPrefixCls:p}=Pe(\"upload\",e),m=I(()=>({[`${d.value}-list`]:!0,[`${d.value}-list-${e.listType}`]:!0})),g=I(()=>{const v=h({},zi(`${p.value}-motion-collapse`));delete v.onAfterAppear,delete v.onAfterEnter,delete v.onAfterLeave;const y=h(h({},Ku(`${d.value}-${e.listType===\"picture-card\"?\"animate-inline\":\"animate\"}`)),{class:m.value,appear:r.value});return e.listType!==\"picture-card\"?h(h({},v),y):y});return()=>{const{listType:v,locale:y,isImageUrl:b,showPreviewIcon:S,showRemoveIcon:$,showDownloadIcon:w,removeIcon:C,previewIcon:_,downloadIcon:x,progress:P,appendAction:O,itemRender:M,appendActionVisible:E}=e,R=O?.(),D=l.value;return f(Pu,A(A({},g.value),{},{tag:\"div\"}),{default:()=>[D.map(z=>{const{uid:T}=z;return f(EG,{key:T,locale:y,prefixCls:d.value,file:z,items:D,progress:P,listType:v,isImgUrl:b,showPreviewIcon:S,showRemoveIcon:$,showDownloadIcon:w,onPreview:a,onDownload:i,onClose:s,removeIcon:C,previewIcon:_,downloadIcon:x,itemRender:M},h(h({},n),{iconRender:c,actionIconRender:u}))}),O?xn(f(MG,{key:\"__ant_upload_appendAction\"},{default:()=>R}),[[On,!!E]]):null]})}}}),DG=e=>{const{componentCls:t,iconCls:n}=e;return{[`${t}-wrapper`]:{[`${t}-drag`]:{position:\"relative\",width:\"100%\",height:\"100%\",textAlign:\"center\",background:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:\"pointer\",transition:`border-color ${e.motionDurationSlow}`,[t]:{padding:`${e.padding}px 0`},[`${t}-btn`]:{display:\"table\",width:\"100%\",height:\"100%\",outline:\"none\"},[`${t}-drag-container`]:{display:\"table-cell\",verticalAlign:\"middle\"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimaryHover},[`p${t}-drag-icon`]:{marginBottom:e.margin,[n]:{color:e.colorPrimary,fontSize:e.uploadThumbnailSize}},[`p${t}-text`]:{margin:`0 0 ${e.marginXXS}px`,color:e.colorTextHeading,fontSize:e.fontSizeLG},[`p${t}-hint`]:{color:e.colorTextDescription,fontSize:e.fontSize},[`&${t}-disabled`]:{cursor:\"not-allowed\",[`p${t}-drag-icon ${n},\n            p${t}-text,\n            p${t}-hint\n          `]:{color:e.colorTextDisabled}}}}}},RG=e=>{const{componentCls:t,antCls:n,iconCls:o,fontSize:r,lineHeight:l}=e,a=`${t}-list-item`,i=`${a}-actions`,s=`${a}-action`,c=Math.round(r*l);return{[`${t}-wrapper`]:{[`${t}-list`]:h(h({},Mo()),{lineHeight:e.lineHeight,[a]:{position:\"relative\",height:e.lineHeight*r,marginTop:e.marginXS,fontSize:r,display:\"flex\",alignItems:\"center\",transition:`background-color ${e.motionDurationSlow}`,\"&:hover\":{backgroundColor:e.controlItemBgHover},[`${a}-name`]:h(h({},Gt),{padding:`0 ${e.paddingXS}px`,lineHeight:l,flex:\"auto\",transition:`all ${e.motionDurationSlow}`}),[i]:{[s]:{opacity:0},[`${s}${n}-btn-sm`]:{height:c,border:0,lineHeight:1,\"> span\":{transform:\"scale(1)\"}},[`\n              ${s}:focus,\n              &.picture ${s}\n            `]:{opacity:1},[o]:{color:e.colorTextDescription,transition:`all ${e.motionDurationSlow}`},[`&:hover ${o}`]:{color:e.colorText}},[`${t}-icon ${o}`]:{color:e.colorTextDescription,fontSize:r},[`${a}-progress`]:{position:\"absolute\",bottom:-e.uploadProgressOffset,width:\"100%\",paddingInlineStart:r+e.paddingXS,fontSize:r,lineHeight:0,pointerEvents:\"none\",\"> div\":{margin:0}}},[`${a}:hover ${s}`]:{opacity:1,color:e.colorText},[`${a}-error`]:{color:e.colorError,[`${a}-name, ${t}-icon ${o}`]:{color:e.colorError},[i]:{[`${o}, ${o}:hover`]:{color:e.colorError},[s]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,\"&::before\":{display:\"table\",width:0,height:0,content:'\"\"'}}})}}},AS=new lt(\"uploadAnimateInlineIn\",{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),DS=new lt(\"uploadAnimateInlineOut\",{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),kG=e=>{const{componentCls:t}=e,n=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${n}-appear, ${n}-enter, ${n}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:\"forwards\"},[`${n}-appear, ${n}-enter`]:{animationName:AS},[`${n}-leave`]:{animationName:DS}}},AS,DS]},NG=e=>{const{componentCls:t,iconCls:n,uploadThumbnailSize:o,uploadProgressOffset:r}=e,l=`${t}-list`,a=`${l}-item`;return{[`${t}-wrapper`]:{[`${l}${l}-picture, ${l}${l}-picture-card`]:{[a]:{position:\"relative\",height:o+e.lineWidth*2+e.paddingXS*2,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,\"&:hover\":{background:\"transparent\"},[`${a}-thumbnail`]:h(h({},Gt),{width:o,height:o,lineHeight:`${o+e.paddingSM}px`,textAlign:\"center\",flex:\"none\",[n]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:\"block\",width:\"100%\",height:\"100%\",overflow:\"hidden\"}}),[`${a}-progress`]:{bottom:r,width:`calc(100% - ${e.paddingSM*2}px)`,marginTop:0,paddingInlineStart:o+e.paddingXS}},[`${a}-error`]:{borderColor:e.colorError,[`${a}-thumbnail ${n}`]:{\"svg path[fill='#e6f7ff']\":{fill:e.colorErrorBg},\"svg path[fill='#1890ff']\":{fill:e.colorError}}},[`${a}-uploading`]:{borderStyle:\"dashed\",[`${a}-name`]:{marginBottom:r}}}}}},BG=e=>{const{componentCls:t,iconCls:n,fontSizeLG:o,colorTextLightSolid:r}=e,l=`${t}-list`,a=`${l}-item`,i=e.uploadPicCardSize;return{[`${t}-wrapper${t}-picture-card-wrapper`]:h(h({},Mo()),{display:\"inline-block\",width:\"100%\",[`${t}${t}-select`]:{width:i,height:i,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:\"center\",verticalAlign:\"top\",backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:\"pointer\",transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",height:\"100%\",textAlign:\"center\"},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${l}${l}-picture-card`]:{[`${l}-item-container`]:{display:\"inline-block\",width:i,height:i,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:\"top\"},\"&::after\":{display:\"none\"},[a]:{height:\"100%\",margin:0,\"&::before\":{position:\"absolute\",zIndex:1,width:`calc(100% - ${e.paddingXS*2}px)`,height:`calc(100% - ${e.paddingXS*2}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:'\" \"'}},[`${a}:hover`]:{[`&::before, ${a}-actions`]:{opacity:1}},[`${a}-actions`]:{position:\"absolute\",insetInlineStart:0,zIndex:10,width:\"100%\",whiteSpace:\"nowrap\",textAlign:\"center\",opacity:0,transition:`all ${e.motionDurationSlow}`,[`${n}-eye, ${n}-download, ${n}-delete`]:{zIndex:10,width:o,margin:`0 ${e.marginXXS}px`,fontSize:o,cursor:\"pointer\",transition:`all ${e.motionDurationSlow}`}},[`${a}-actions, ${a}-actions:hover`]:{[`${n}-eye, ${n}-download, ${n}-delete`]:{color:new mt(r).setAlpha(.65).toRgbString(),\"&:hover\":{color:r}}},[`${a}-thumbnail, ${a}-thumbnail img`]:{position:\"static\",display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"contain\"},[`${a}-name`]:{display:\"none\",textAlign:\"center\"},[`${a}-file + ${a}-name`]:{position:\"absolute\",bottom:e.margin,display:\"block\",width:`calc(100% - ${e.paddingXS*2}px)`},[`${a}-uploading`]:{[`&${a}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${n}-eye, ${n}-download, ${n}-delete`]:{display:\"none\"}},[`${a}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${e.paddingXS*2}px)`,paddingInlineStart:0}}})}},LG=e=>{const{componentCls:t}=e;return{[`${t}-rtl`]:{direction:\"rtl\"}}},FG=e=>{const{componentCls:t,colorTextDisabled:n}=e;return{[`${t}-wrapper`]:h(h({},Ue(e)),{[t]:{outline:0,\"input[type='file']\":{cursor:\"pointer\"}},[`${t}-select`]:{display:\"inline-block\"},[`${t}-disabled`]:{color:n,cursor:\"not-allowed\"}})}},zG=Ge(\"Upload\",e=>{const{fontSizeHeading3:t,fontSize:n,lineHeight:o,lineWidth:r,controlHeightLG:l}=e,a=Math.round(n*o),i=Le(e,{uploadThumbnailSize:t*2,uploadProgressOffset:a/2+r,uploadPicCardSize:l*2.55});return[FG(i),DG(i),NG(i),BG(i),RG(i),kG(i),LG(i),Fi(i)]});var HG=function(e,t,n,o){function r(l){return l instanceof n?l:new n(function(a){a(l)})}return new(n||(n=Promise))(function(l,a){function i(u){try{c(o.next(u))}catch(d){a(d)}}function s(u){try{c(o.throw(u))}catch(d){a(d)}}function c(u){u.done?l(u.value):r(u.value).then(i,s)}c((o=o.apply(e,t||[])).next())})},jG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Ya=`__LIST_IGNORE_${Date.now()}__`,Tc=ne({compatConfig:{MODE:3},name:\"AUpload\",inheritAttrs:!1,props:Ze(B_(),{type:\"select\",multiple:!1,action:\"\",data:{},accept:\"\",showUploadList:!0,listType:\"text\",supportServerRender:!0}),setup(e,t){let{slots:n,attrs:o,expose:r}=t;const l=Jt(),{prefixCls:a,direction:i,disabled:s}=Pe(\"upload\",e),[c,u]=zG(a),d=zn(),p=I(()=>{var E;return(E=s.value)!==null&&E!==void 0?E:d.value}),[m,g]=Mt(e.defaultFileList||[],{value:We(e,\"fileList\"),postState:E=>{const R=Date.now();return(E??[]).map((D,z)=>(!D.uid&&!Object.isFrozen(D)&&(D.uid=`__AUTO__${R}_${z}__`),D))}}),v=J(\"drop\"),y=J(null);Ne(()=>{Ot(e.fileList!==void 0||o.value===void 0,\"Upload\",\"`value` is not a valid prop, do you mean `fileList`?\"),Ot(e.transformFile===void 0,\"Upload\",\"`transformFile` is deprecated. Please use `beforeUpload` directly.\"),Ot(e.remove===void 0,\"Upload\",\"`remove` props is deprecated. Please use `remove` event.\")});const b=(E,R,D)=>{var z,T;let k=[...R];e.maxCount===1?k=k.slice(-1):e.maxCount&&(k=k.slice(0,e.maxCount)),g(k);const B={file:E,fileList:k};D&&(B.event=D),(z=e[\"onUpdate:fileList\"])===null||z===void 0||z.call(e,B.fileList),(T=e.onChange)===null||T===void 0||T.call(e,B),l.onFieldChange()},S=(E,R)=>HG(this,void 0,void 0,function*(){const{beforeUpload:D,transformFile:z}=e;let T=E;if(D){const k=yield D(E,R);if(k===!1)return!1;if(delete E[Ya],k===Ya)return Object.defineProperty(E,Ya,{value:!0,configurable:!0}),!1;typeof k==\"object\"&&k&&(T=k)}return z&&(T=yield z(T)),T}),$=E=>{const R=E.filter(T=>!T.file[Ya]);if(!R.length)return;const D=R.map(T=>As(T.file));let z=[...m.value];D.forEach(T=>{z=Ds(T,z)}),D.forEach((T,k)=>{let B=T;if(R[k].parsedFile)T.status=\"uploading\";else{const{originFileObj:L}=T;let N;try{N=new File([L],L.name,{type:L.type})}catch{N=new Blob([L],{type:L.type}),N.name=L.name,N.lastModifiedDate=new Date,N.lastModified=new Date().getTime()}N.uid=T.uid,B=N}b(B,z)})},w=(E,R,D)=>{try{typeof E==\"string\"&&(E=JSON.parse(E))}catch{}if(!Vf(R,m.value))return;const z=As(R);z.status=\"done\",z.percent=100,z.response=E,z.xhr=D;const T=Ds(z,m.value);b(z,T)},C=(E,R)=>{if(!Vf(R,m.value))return;const D=As(R);D.status=\"uploading\",D.percent=E.percent;const z=Ds(D,m.value);b(D,z,E)},_=(E,R,D)=>{if(!Vf(D,m.value))return;const z=As(D);z.error=E,z.response=R,z.status=\"error\";const T=Ds(z,m.value);b(z,T)},x=E=>{let R;const D=e.onRemove||e.remove;Promise.resolve(typeof D==\"function\"?D(E):D).then(z=>{var T,k;if(z===!1)return;const B=_G(E,m.value);B&&(R=h(h({},E),{status:\"removed\"}),(T=m.value)===null||T===void 0||T.forEach(L=>{const N=R.uid!==void 0?\"uid\":\"name\";L[N]===R[N]&&!Object.isFrozen(L)&&(L.status=\"removed\")}),(k=y.value)===null||k===void 0||k.abort(R),b(R,B))})},P=E=>{var R;v.value=E.type,E.type===\"drop\"&&((R=e.onDrop)===null||R===void 0||R.call(e,E))};r({onBatchStart:$,onSuccess:w,onProgress:C,onError:_,fileList:m,upload:y});const[O]=yo(\"Upload\",En.Upload,I(()=>e.locale)),M=(E,R)=>{const{removeIcon:D,previewIcon:z,downloadIcon:T,previewFile:k,onPreview:B,onDownload:L,isImageUrl:N,progress:F,itemRender:j,iconRender:H,showUploadList:K}=e,{showDownloadIcon:G,showPreviewIcon:V,showRemoveIcon:q}=typeof K==\"boolean\"?{}:K;return K?f(AG,{prefixCls:a.value,listType:e.listType,items:m.value,previewFile:k,onPreview:B,onDownload:L,onRemove:x,showRemoveIcon:!p.value&&q,showPreviewIcon:V,showDownloadIcon:G,removeIcon:D,previewIcon:z,downloadIcon:T,iconRender:H,locale:O.value,isImageUrl:N,progress:F,itemRender:j,appendActionVisible:R,appendAction:E},h({},n)):E?.()};return()=>{var E,R,D;const{listType:z,type:T}=e,{class:k,style:B}=o,L=jG(o,[\"class\",\"style\"]),N=h(h(h({onBatchStart:$,onError:_,onProgress:C,onSuccess:w},L),e),{id:(E=e.id)!==null&&E!==void 0?E:l.id.value,prefixCls:a.value,beforeUpload:S,onChange:void 0,disabled:p.value});delete N.remove,(!n.default||p.value)&&delete N.id;const F={[`${a.value}-rtl`]:i.value===\"rtl\"};if(T===\"drag\"){const G=le(a.value,{[`${a.value}-drag`]:!0,[`${a.value}-drag-uploading`]:m.value.some(V=>V.status===\"uploading\"),[`${a.value}-drag-hover`]:v.value===\"dragover\",[`${a.value}-disabled`]:p.value,[`${a.value}-rtl`]:i.value===\"rtl\"},o.class,u.value);return c(f(\"span\",A(A({},o),{},{class:le(`${a.value}-wrapper`,F,k,u.value)}),[f(\"div\",{class:G,onDrop:P,onDragover:P,onDragleave:P,style:o.style},[f(MS,A(A({},N),{},{ref:y,class:`${a.value}-btn`}),A({default:()=>[f(\"div\",{class:`${a.value}-drag-container`},[(R=n.default)===null||R===void 0?void 0:R.call(n)])]},n))]),M()]))}const j=le(a.value,{[`${a.value}-select`]:!0,[`${a.value}-select-${z}`]:!0,[`${a.value}-disabled`]:p.value,[`${a.value}-rtl`]:i.value===\"rtl\"}),H=$t((D=n.default)===null||D===void 0?void 0:D.call(n)),K=G=>f(\"div\",{class:j,style:G},[f(MS,A(A({},N),{},{ref:y}),n)]);return c(z===\"picture-card\"?f(\"span\",A(A({},o),{},{class:le(`${a.value}-wrapper`,`${a.value}-picture-card-wrapper`,F,o.class,u.value)}),[M(K,!!(H&&H.length))]):f(\"span\",A(A({},o),{},{class:le(`${a.value}-wrapper`,F,o.class,u.value)}),[K(H&&H.length?void 0:{display:\"none\"}),M()]))}}});var RS=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Oc=ne({compatConfig:{MODE:3},name:\"AUploadDragger\",inheritAttrs:!1,props:B_(),setup(e,t){let{slots:n,attrs:o}=t;return()=>{const{height:r}=e,l=RS(e,[\"height\"]),{style:a}=o,i=RS(o,[\"style\"]),s=h(h(h({},l),i),{type:\"drag\",style:h(h({},a),{height:typeof r==\"number\"?`${r}px`:r})});return f(Tc,s,n)}}}),WG=Oc,VG=h(Tc,{Dragger:Oc,LIST_IGNORE:Ya,install(e){return e.component(Tc.name,Tc),e.component(Oc.name,Oc),e}});function KG(e){return e.replace(/([A-Z])/g,\"-$1\").toLowerCase()}function GG(e){return Object.keys(e).map(t=>`${KG(t)}: ${e[t]};`).join(\" \")}function kS(){return window.devicePixelRatio||1}function Kf(e,t,n,o){e.translate(t,n),e.rotate(Math.PI/180*Number(o)),e.translate(-t,-n)}const XG=(e,t)=>{let n=!1;return e.removedNodes.length&&(n=Array.from(e.removedNodes).some(o=>o===t)),e.type===\"attributes\"&&e.target===t&&(n=!0),n};var UG=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};function YG(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{window:o=bx}=n,r=UG(n,[\"window\"]);let l;const a=gx(()=>o&&\"MutationObserver\"in o),i=()=>{l&&(l.disconnect(),l=void 0)},s=pe(()=>cg(e),u=>{i(),a.value&&o&&u&&(l=new MutationObserver(t),l.observe(u,r))},{immediate:!0}),c=()=>{i(),s()};return vx(c),{isSupported:a,stop:c}}const Gf=2,NS=3,qG=()=>({zIndex:Number,rotate:Number,width:Number,height:Number,image:String,content:Fe([String,Array]),font:De(),rootClassName:String,gap:ct(),offset:ct()}),ZG=ne({name:\"AWatermark\",inheritAttrs:!1,props:Ze(qG(),{zIndex:9,rotate:-22,font:{},gap:[100,100]}),setup(e,t){let{slots:n,attrs:o}=t;const[,r]=br(),l=ee(),a=ee(),i=ee(!1),s=I(()=>{var M,E;return(E=(M=e.gap)===null||M===void 0?void 0:M[0])!==null&&E!==void 0?E:100}),c=I(()=>{var M,E;return(E=(M=e.gap)===null||M===void 0?void 0:M[1])!==null&&E!==void 0?E:100}),u=I(()=>s.value/2),d=I(()=>c.value/2),p=I(()=>{var M,E;return(E=(M=e.offset)===null||M===void 0?void 0:M[0])!==null&&E!==void 0?E:u.value}),m=I(()=>{var M,E;return(E=(M=e.offset)===null||M===void 0?void 0:M[1])!==null&&E!==void 0?E:d.value}),g=I(()=>{var M,E;return(E=(M=e.font)===null||M===void 0?void 0:M.fontSize)!==null&&E!==void 0?E:r.value.fontSizeLG}),v=I(()=>{var M,E;return(E=(M=e.font)===null||M===void 0?void 0:M.fontWeight)!==null&&E!==void 0?E:\"normal\"}),y=I(()=>{var M,E;return(E=(M=e.font)===null||M===void 0?void 0:M.fontStyle)!==null&&E!==void 0?E:\"normal\"}),b=I(()=>{var M,E;return(E=(M=e.font)===null||M===void 0?void 0:M.fontFamily)!==null&&E!==void 0?E:\"sans-serif\"}),S=I(()=>{var M,E;return(E=(M=e.font)===null||M===void 0?void 0:M.color)!==null&&E!==void 0?E:r.value.colorFill}),$=I(()=>{var M;const E={zIndex:(M=e.zIndex)!==null&&M!==void 0?M:9,position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\",backgroundRepeat:\"repeat\"};let R=p.value-u.value,D=m.value-d.value;return R>0&&(E.left=`${R}px`,E.width=`calc(100% - ${R}px)`,R=0),D>0&&(E.top=`${D}px`,E.height=`calc(100% - ${D}px)`,D=0),E.backgroundPosition=`${R}px ${D}px`,E}),w=()=>{a.value&&(a.value.remove(),a.value=void 0)},C=(M,E)=>{var R;l.value&&a.value&&(i.value=!0,a.value.setAttribute(\"style\",GG(h(h({},$.value),{backgroundImage:`url('${M}')`,backgroundSize:`${(s.value+E)*Gf}px`}))),(R=l.value)===null||R===void 0||R.append(a.value),setTimeout(()=>{i.value=!1}))},_=M=>{let E=120,R=64;const D=e.content,z=e.image,T=e.width,k=e.height;if(!z&&M.measureText){M.font=`${Number(g.value)}px ${b.value}`;const B=Array.isArray(D)?D:[D],L=B.map(N=>M.measureText(N).width);E=Math.ceil(Math.max(...L)),R=Number(g.value)*B.length+(B.length-1)*NS}return[T??E,k??R]},x=(M,E,R,D,z)=>{const T=kS(),k=e.content,B=Number(g.value)*T;M.font=`${y.value} normal ${v.value} ${B}px/${z}px ${b.value}`,M.fillStyle=S.value,M.textAlign=\"center\",M.textBaseline=\"top\",M.translate(D/2,0);const L=Array.isArray(k)?k:[k];L?.forEach((N,F)=>{M.fillText(N??\"\",E,R+F*(B+NS*T))})},P=()=>{var M;const E=document.createElement(\"canvas\"),R=E.getContext(\"2d\"),D=e.image,z=(M=e.rotate)!==null&&M!==void 0?M:-22;if(R){a.value||(a.value=document.createElement(\"div\"));const T=kS(),[k,B]=_(R),L=(s.value+k)*T,N=(c.value+B)*T;E.setAttribute(\"width\",`${L*Gf}px`),E.setAttribute(\"height\",`${N*Gf}px`);const F=s.value*T/2,j=c.value*T/2,H=k*T,K=B*T,G=(H+s.value*T)/2,V=(K+c.value*T)/2,q=F+L,Z=j+N,oe=G+L,re=V+N;if(R.save(),Kf(R,G,V,z),D){const Y=new Image;Y.onload=()=>{R.drawImage(Y,F,j,H,K),R.restore(),Kf(R,oe,re,z),R.drawImage(Y,q,Z,H,K),C(E.toDataURL(),k)},Y.crossOrigin=\"anonymous\",Y.referrerPolicy=\"no-referrer\",Y.src=D}else x(R,F,j,H,K),R.restore(),Kf(R,oe,re,z),x(R,q,Z,H,K),C(E.toDataURL(),k)}};return Ne(()=>{P()}),pe(()=>[e,r.value.colorFill,r.value.fontSizeLG],()=>{P()},{deep:!0,flush:\"post\"}),et(()=>{w()}),YG(l,M=>{i.value||M.forEach(E=>{XG(E,a.value)&&(w(),P())})},{attributes:!0,subtree:!0,childList:!0,attributeFilter:[\"style\",\"class\"]}),()=>{var M;return f(\"div\",A(A({},o),{},{ref:l,class:[o.class,e.rootClassName],style:[{position:\"relative\"},o.style]}),[(M=n.default)===null||M===void 0?void 0:M.call(n)])}}}),QG=Dt(ZG);function BS(e,t){return{[`${e}, ${e}:hover, ${e}:focus`]:{color:t.colorTextDisabled,cursor:\"not-allowed\"}}}function LS(e){return{backgroundColor:e.bgColorSelected,boxShadow:e.boxShadow}}const JG=h({overflow:\"hidden\"},Gt),eX=e=>{const{componentCls:t}=e;return{[t]:h(h(h(h(h({},Ue(e)),{display:\"inline-block\",padding:e.segmentedContainerPadding,color:e.labelColor,backgroundColor:e.bgColor,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,[`${t}-group`]:{position:\"relative\",display:\"flex\",alignItems:\"stretch\",justifyItems:\"flex-start\",width:\"100%\"},[`&${t}-rtl`]:{direction:\"rtl\"},[`&${t}-block`]:{display:\"flex\"},[`&${t}-block ${t}-item`]:{flex:1,minWidth:0},[`${t}-item`]:{position:\"relative\",textAlign:\"center\",cursor:\"pointer\",transition:`color ${e.motionDurationMid} ${e.motionEaseInOut}`,borderRadius:e.borderRadiusSM,\"&-selected\":h(h({},LS(e)),{color:e.labelColorHover}),\"&::after\":{content:'\"\"',position:\"absolute\",width:\"100%\",height:\"100%\",top:0,insetInlineStart:0,borderRadius:\"inherit\",transition:`background-color ${e.motionDurationMid}`,pointerEvents:\"none\"},[`&:hover:not(${t}-item-selected):not(${t}-item-disabled)`]:{color:e.labelColorHover,\"&::after\":{backgroundColor:e.bgColorHover}},\"&-label\":h({minHeight:e.controlHeight-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeight-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`},JG),\"&-icon + *\":{marginInlineStart:e.marginSM/2},\"&-input\":{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:0,height:0,opacity:0,pointerEvents:\"none\"}},[`${t}-thumb`]:h(h({},LS(e)),{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,width:0,height:\"100%\",padding:`${e.paddingXXS}px 0`,borderRadius:e.borderRadiusSM,[`& ~ ${t}-item:not(${t}-item-selected):not(${t}-item-disabled)::after`]:{backgroundColor:\"transparent\"}}),[`&${t}-lg`]:{borderRadius:e.borderRadiusLG,[`${t}-item-label`]:{minHeight:e.controlHeightLG-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightLG-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`,fontSize:e.fontSizeLG},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadius}},[`&${t}-sm`]:{borderRadius:e.borderRadiusSM,[`${t}-item-label`]:{minHeight:e.controlHeightSM-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightSM-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontalSM}px`},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadiusXS}}}),BS(`&-disabled ${t}-item`,e)),BS(`${t}-item-disabled`,e)),{[`${t}-thumb-motion-appear-active`]:{transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOut}, width ${e.motionDurationSlow} ${e.motionEaseInOut}`,willChange:\"transform, width\"}})}},tX=Ge(\"Segmented\",e=>{const{lineWidthBold:t,lineWidth:n,colorTextLabel:o,colorText:r,colorFillSecondary:l,colorBgLayout:a,colorBgElevated:i}=e,s=Le(e,{segmentedPaddingHorizontal:e.controlPaddingHorizontal-n,segmentedPaddingHorizontalSM:e.controlPaddingHorizontalSM-n,segmentedContainerPadding:t,labelColor:o,labelColorHover:r,bgColor:a,bgColorHover:l,bgColorSelected:i});return[eX(s)]}),FS=e=>e?{left:e.offsetLeft,right:e.parentElement.clientWidth-e.clientWidth-e.offsetLeft,width:e.clientWidth}:null,Hl=e=>e!==void 0?`${e}px`:void 0,nX=ne({props:{value:Ct(),getValueIndex:Ct(),prefixCls:Ct(),motionName:Ct(),onMotionStart:Ct(),onMotionEnd:Ct(),direction:Ct(),containerRef:Ct()},emits:[\"motionStart\",\"motionEnd\"],setup(e,t){let{emit:n}=t;const o=J(),r=g=>{var v;const y=e.getValueIndex(g),b=(v=e.containerRef.value)===null||v===void 0?void 0:v.querySelectorAll(`.${e.prefixCls}-item`)[y];return b?.offsetParent&&b},l=J(null),a=J(null);pe(()=>e.value,(g,v)=>{const y=r(v),b=r(g),S=FS(y),$=FS(b);l.value=S,a.value=$,n(y&&b?\"motionStart\":\"motionEnd\")},{flush:\"post\"});const i=I(()=>{var g,v;return e.direction===\"rtl\"?Hl(-((g=l.value)===null||g===void 0?void 0:g.right)):Hl((v=l.value)===null||v===void 0?void 0:v.left)}),s=I(()=>{var g,v;return e.direction===\"rtl\"?Hl(-((g=a.value)===null||g===void 0?void 0:g.right)):Hl((v=a.value)===null||v===void 0?void 0:v.left)});let c;const u=g=>{clearTimeout(c),it(()=>{g&&(g.style.transform=\"translateX(var(--thumb-start-left))\",g.style.width=\"var(--thumb-start-width)\")})},d=g=>{c=setTimeout(()=>{g&&(ou(g,`${e.motionName}-appear-active`),g.style.transform=\"translateX(var(--thumb-active-left))\",g.style.width=\"var(--thumb-active-width)\")})},p=g=>{l.value=null,a.value=null,g&&(g.style.transform=null,g.style.width=null,ru(g,`${e.motionName}-appear-active`)),n(\"motionEnd\")},m=I(()=>{var g,v;return{\"--thumb-start-left\":i.value,\"--thumb-start-width\":Hl((g=l.value)===null||g===void 0?void 0:g.width),\"--thumb-active-left\":s.value,\"--thumb-active-width\":Hl((v=a.value)===null||v===void 0?void 0:v.width)}});return et(()=>{clearTimeout(c)}),()=>{const g={ref:o,style:m.value,class:[`${e.prefixCls}-thumb`]};return f(cn,{appear:!0,onBeforeEnter:u,onEnter:d,onAfterEnter:p},{default:()=>[!l.value||!a.value?null:f(\"div\",g,null)]})}}});function oX(e){return e.map(t=>typeof t==\"object\"&&t!==null?t:{label:t?.toString(),title:t?.toString(),value:t})}const rX=()=>({prefixCls:String,options:ct(),block:ye(),disabled:ye(),size:ke(),value:h(h({},Fe([String,Number])),{required:!0}),motionName:String,onChange:de(),\"onUpdate:value\":de()}),F_=(e,t)=>{let{slots:n,emit:o}=t;const{value:r,disabled:l,payload:a,title:i,prefixCls:s,label:c=n.label,checked:u,className:d}=e,p=m=>{l||o(\"change\",m,r)};return f(\"label\",{class:le({[`${s}-item-disabled`]:l},d)},[f(\"input\",{class:`${s}-item-input`,type:\"radio\",disabled:l,checked:u,onChange:p},null),f(\"div\",{class:`${s}-item-label`,title:typeof i==\"string\"?i:\"\"},[typeof c==\"function\"?c({value:r,disabled:l,payload:a,title:i}):c??r])])};F_.inheritAttrs=!1;const lX=ne({name:\"ASegmented\",inheritAttrs:!1,props:Ze(rX(),{options:[],motionName:\"thumb-motion\"}),slots:Object,setup(e,t){let{emit:n,slots:o,attrs:r}=t;const{prefixCls:l,direction:a,size:i}=Pe(\"segmented\",e),[s,c]=tX(l),u=ee(),d=ee(!1),p=I(()=>oX(e.options)),m=(g,v)=>{e.disabled||(n(\"update:value\",v),n(\"change\",v))};return()=>{const g=l.value;return s(f(\"div\",A(A({},r),{},{class:le(g,{[c.value]:!0,[`${g}-block`]:e.block,[`${g}-disabled`]:e.disabled,[`${g}-lg`]:i.value==\"large\",[`${g}-sm`]:i.value==\"small\",[`${g}-rtl`]:a.value===\"rtl\"},r.class),ref:u}),[f(\"div\",{class:`${g}-group`},[f(nX,{containerRef:u,prefixCls:g,value:e.value,motionName:`${g}-${e.motionName}`,direction:a.value,getValueIndex:v=>p.value.findIndex(y=>y.value===v),onMotionStart:()=>{d.value=!0},onMotionEnd:()=>{d.value=!1}},null),p.value.map(v=>f(F_,A(A({key:v.value,prefixCls:g,checked:v.value===e.value,onChange:m},v),{},{className:le(v.className,`${g}-item`,{[`${g}-item-selected`]:v.value===e.value&&!d.value}),disabled:!!e.disabled||!!v.disabled}),o))])]))}}}),aX=Dt(lX),iX=e=>{const{componentCls:t}=e;return{[t]:h(h({},Ue(e)),{display:\"flex\",justifyContent:\"center\",alignItems:\"center\",padding:e.paddingSM,backgroundColor:e.colorWhite,borderRadius:e.borderRadiusLG,border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",[`& > ${t}-mask`]:{position:\"absolute\",insetBlockStart:0,insetInlineStart:0,zIndex:10,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",width:\"100%\",height:\"100%\",color:e.colorText,lineHeight:e.lineHeight,background:e.QRCodeMaskBackgroundColor,textAlign:\"center\",[`& > ${t}-expired , & > ${t}-scanned`]:{color:e.QRCodeTextColor}},\"&-icon\":{marginBlockEnd:e.marginXS,fontSize:e.controlHeight}}),[`${t}-borderless`]:{borderColor:\"transparent\"}}},sX=Ge(\"QRCode\",e=>iX(Le(e,{QRCodeTextColor:\"rgba(0, 0, 0, 0.88)\",QRCodeMaskBackgroundColor:\"rgba(255, 255, 255, 0.96)\"}))),qg=()=>({size:{type:Number,default:160},value:{type:String,required:!0},type:ke(\"canvas\"),color:String,bgColor:String,includeMargin:Boolean,imageSettings:De()}),cX=()=>h(h({},qg()),{errorLevel:ke(\"M\"),icon:String,iconSize:{type:Number,default:40},status:ke(\"active\"),bordered:{type:Boolean,default:!0}});/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */var fo;(function(e){class t{static encodeText(i,s){const c=e.QrSegment.makeSegments(i);return t.encodeSegments(c,s)}static encodeBinary(i,s){const c=e.QrSegment.makeBytes(i);return t.encodeSegments([c],s)}static encodeSegments(i,s){let c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:40,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1,p=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;if(!(t.MIN_VERSION<=c&&c<=u&&u<=t.MAX_VERSION)||d<-1||d>7)throw new RangeError(\"Invalid value\");let m,g;for(m=c;;m++){const S=t.getNumDataCodewords(m,s)*8,$=l.getTotalBits(i,m);if($<=S){g=$;break}if(m>=u)throw new RangeError(\"Data too long\")}for(const S of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])p&&g<=t.getNumDataCodewords(m,S)*8&&(s=S);const v=[];for(const S of i){n(S.mode.modeBits,4,v),n(S.numChars,S.mode.numCharCountBits(m),v);for(const $ of S.getData())v.push($)}r(v.length==g);const y=t.getNumDataCodewords(m,s)*8;r(v.length<=y),n(0,Math.min(4,y-v.length),v),n(0,(8-v.length%8)%8,v),r(v.length%8==0);for(let S=236;v.length<y;S^=253)n(S,8,v);const b=[];for(;b.length*8<v.length;)b.push(0);return v.forEach((S,$)=>b[$>>>3]|=S<<7-($&7)),new t(m,s,b,d)}constructor(i,s,c,u){if(this.version=i,this.errorCorrectionLevel=s,this.modules=[],this.isFunction=[],i<t.MIN_VERSION||i>t.MAX_VERSION)throw new RangeError(\"Version value out of range\");if(u<-1||u>7)throw new RangeError(\"Mask value out of range\");this.size=i*4+17;const d=[];for(let m=0;m<this.size;m++)d.push(!1);for(let m=0;m<this.size;m++)this.modules.push(d.slice()),this.isFunction.push(d.slice());this.drawFunctionPatterns();const p=this.addEccAndInterleave(c);if(this.drawCodewords(p),u==-1){let m=1e9;for(let g=0;g<8;g++){this.applyMask(g),this.drawFormatBits(g);const v=this.getPenaltyScore();v<m&&(u=g,m=v),this.applyMask(g)}}r(0<=u&&u<=7),this.mask=u,this.applyMask(u),this.drawFormatBits(u),this.isFunction=[]}getModule(i,s){return 0<=i&&i<this.size&&0<=s&&s<this.size&&this.modules[s][i]}getModules(){return this.modules}drawFunctionPatterns(){for(let c=0;c<this.size;c++)this.setFunctionModule(6,c,c%2==0),this.setFunctionModule(c,6,c%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const i=this.getAlignmentPatternPositions(),s=i.length;for(let c=0;c<s;c++)for(let u=0;u<s;u++)c==0&&u==0||c==0&&u==s-1||c==s-1&&u==0||this.drawAlignmentPattern(i[c],i[u]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(i){const s=this.errorCorrectionLevel.formatBits<<3|i;let c=s;for(let d=0;d<10;d++)c=c<<1^(c>>>9)*1335;const u=(s<<10|c)^21522;r(u>>>15==0);for(let d=0;d<=5;d++)this.setFunctionModule(8,d,o(u,d));this.setFunctionModule(8,7,o(u,6)),this.setFunctionModule(8,8,o(u,7)),this.setFunctionModule(7,8,o(u,8));for(let d=9;d<15;d++)this.setFunctionModule(14-d,8,o(u,d));for(let d=0;d<8;d++)this.setFunctionModule(this.size-1-d,8,o(u,d));for(let d=8;d<15;d++)this.setFunctionModule(8,this.size-15+d,o(u,d));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let i=this.version;for(let c=0;c<12;c++)i=i<<1^(i>>>11)*7973;const s=this.version<<12|i;r(s>>>18==0);for(let c=0;c<18;c++){const u=o(s,c),d=this.size-11+c%3,p=Math.floor(c/3);this.setFunctionModule(d,p,u),this.setFunctionModule(p,d,u)}}drawFinderPattern(i,s){for(let c=-4;c<=4;c++)for(let u=-4;u<=4;u++){const d=Math.max(Math.abs(u),Math.abs(c)),p=i+u,m=s+c;0<=p&&p<this.size&&0<=m&&m<this.size&&this.setFunctionModule(p,m,d!=2&&d!=4)}}drawAlignmentPattern(i,s){for(let c=-2;c<=2;c++)for(let u=-2;u<=2;u++)this.setFunctionModule(i+u,s+c,Math.max(Math.abs(u),Math.abs(c))!=1)}setFunctionModule(i,s,c){this.modules[s][i]=c,this.isFunction[s][i]=!0}addEccAndInterleave(i){const s=this.version,c=this.errorCorrectionLevel;if(i.length!=t.getNumDataCodewords(s,c))throw new RangeError(\"Invalid argument\");const u=t.NUM_ERROR_CORRECTION_BLOCKS[c.ordinal][s],d=t.ECC_CODEWORDS_PER_BLOCK[c.ordinal][s],p=Math.floor(t.getNumRawDataModules(s)/8),m=u-p%u,g=Math.floor(p/u),v=[],y=t.reedSolomonComputeDivisor(d);for(let S=0,$=0;S<u;S++){const w=i.slice($,$+g-d+(S<m?0:1));$+=w.length;const C=t.reedSolomonComputeRemainder(w,y);S<m&&w.push(0),v.push(w.concat(C))}const b=[];for(let S=0;S<v[0].length;S++)v.forEach(($,w)=>{(S!=g-d||w>=m)&&b.push($[S])});return r(b.length==p),b}drawCodewords(i){if(i.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw new RangeError(\"Invalid argument\");let s=0;for(let c=this.size-1;c>=1;c-=2){c==6&&(c=5);for(let u=0;u<this.size;u++)for(let d=0;d<2;d++){const p=c-d,g=(c+1&2)==0?this.size-1-u:u;!this.isFunction[g][p]&&s<i.length*8&&(this.modules[g][p]=o(i[s>>>3],7-(s&7)),s++)}}r(s==i.length*8)}applyMask(i){if(i<0||i>7)throw new RangeError(\"Mask value out of range\");for(let s=0;s<this.size;s++)for(let c=0;c<this.size;c++){let u;switch(i){case 0:u=(c+s)%2==0;break;case 1:u=s%2==0;break;case 2:u=c%3==0;break;case 3:u=(c+s)%3==0;break;case 4:u=(Math.floor(c/3)+Math.floor(s/2))%2==0;break;case 5:u=c*s%2+c*s%3==0;break;case 6:u=(c*s%2+c*s%3)%2==0;break;case 7:u=((c+s)%2+c*s%3)%2==0;break;default:throw new Error(\"Unreachable\")}!this.isFunction[s][c]&&u&&(this.modules[s][c]=!this.modules[s][c])}}getPenaltyScore(){let i=0;for(let d=0;d<this.size;d++){let p=!1,m=0;const g=[0,0,0,0,0,0,0];for(let v=0;v<this.size;v++)this.modules[d][v]==p?(m++,m==5?i+=t.PENALTY_N1:m>5&&i++):(this.finderPenaltyAddHistory(m,g),p||(i+=this.finderPenaltyCountPatterns(g)*t.PENALTY_N3),p=this.modules[d][v],m=1);i+=this.finderPenaltyTerminateAndCount(p,m,g)*t.PENALTY_N3}for(let d=0;d<this.size;d++){let p=!1,m=0;const g=[0,0,0,0,0,0,0];for(let v=0;v<this.size;v++)this.modules[v][d]==p?(m++,m==5?i+=t.PENALTY_N1:m>5&&i++):(this.finderPenaltyAddHistory(m,g),p||(i+=this.finderPenaltyCountPatterns(g)*t.PENALTY_N3),p=this.modules[v][d],m=1);i+=this.finderPenaltyTerminateAndCount(p,m,g)*t.PENALTY_N3}for(let d=0;d<this.size-1;d++)for(let p=0;p<this.size-1;p++){const m=this.modules[d][p];m==this.modules[d][p+1]&&m==this.modules[d+1][p]&&m==this.modules[d+1][p+1]&&(i+=t.PENALTY_N2)}let s=0;for(const d of this.modules)s=d.reduce((p,m)=>p+(m?1:0),s);const c=this.size*this.size,u=Math.ceil(Math.abs(s*20-c*10)/c)-1;return r(0<=u&&u<=9),i+=u*t.PENALTY_N4,r(0<=i&&i<=2568888),i}getAlignmentPatternPositions(){if(this.version==1)return[];{const i=Math.floor(this.version/7)+2,s=this.version==32?26:Math.ceil((this.version*4+4)/(i*2-2))*2,c=[6];for(let u=this.size-7;c.length<i;u-=s)c.splice(1,0,u);return c}}static getNumRawDataModules(i){if(i<t.MIN_VERSION||i>t.MAX_VERSION)throw new RangeError(\"Version number out of range\");let s=(16*i+128)*i+64;if(i>=2){const c=Math.floor(i/7)+2;s-=(25*c-10)*c-55,i>=7&&(s-=36)}return r(208<=s&&s<=29648),s}static getNumDataCodewords(i,s){return Math.floor(t.getNumRawDataModules(i)/8)-t.ECC_CODEWORDS_PER_BLOCK[s.ordinal][i]*t.NUM_ERROR_CORRECTION_BLOCKS[s.ordinal][i]}static reedSolomonComputeDivisor(i){if(i<1||i>255)throw new RangeError(\"Degree out of range\");const s=[];for(let u=0;u<i-1;u++)s.push(0);s.push(1);let c=1;for(let u=0;u<i;u++){for(let d=0;d<s.length;d++)s[d]=t.reedSolomonMultiply(s[d],c),d+1<s.length&&(s[d]^=s[d+1]);c=t.reedSolomonMultiply(c,2)}return s}static reedSolomonComputeRemainder(i,s){const c=s.map(u=>0);for(const u of i){const d=u^c.shift();c.push(0),s.forEach((p,m)=>c[m]^=t.reedSolomonMultiply(p,d))}return c}static reedSolomonMultiply(i,s){if(i>>>8||s>>>8)throw new RangeError(\"Byte out of range\");let c=0;for(let u=7;u>=0;u--)c=c<<1^(c>>>7)*285,c^=(s>>>u&1)*i;return r(c>>>8==0),c}finderPenaltyCountPatterns(i){const s=i[1];r(s<=this.size*3);const c=s>0&&i[2]==s&&i[3]==s*3&&i[4]==s&&i[5]==s;return(c&&i[0]>=s*4&&i[6]>=s?1:0)+(c&&i[6]>=s*4&&i[0]>=s?1:0)}finderPenaltyTerminateAndCount(i,s,c){return i&&(this.finderPenaltyAddHistory(s,c),s=0),s+=this.size,this.finderPenaltyAddHistory(s,c),this.finderPenaltyCountPatterns(c)}finderPenaltyAddHistory(i,s){s[0]==0&&(i+=this.size),s.pop(),s.unshift(i)}}t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(a,i,s){if(i<0||i>31||a>>>i)throw new RangeError(\"Value out of range\");for(let c=i-1;c>=0;c--)s.push(a>>>c&1)}function o(a,i){return(a>>>i&1)!=0}function r(a){if(!a)throw new Error(\"Assertion error\")}class l{static makeBytes(i){const s=[];for(const c of i)n(c,8,s);return new l(l.Mode.BYTE,i.length,s)}static makeNumeric(i){if(!l.isNumeric(i))throw new RangeError(\"String contains non-numeric characters\");const s=[];for(let c=0;c<i.length;){const u=Math.min(i.length-c,3);n(parseInt(i.substring(c,c+u),10),u*3+1,s),c+=u}return new l(l.Mode.NUMERIC,i.length,s)}static makeAlphanumeric(i){if(!l.isAlphanumeric(i))throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");const s=[];let c;for(c=0;c+2<=i.length;c+=2){let u=l.ALPHANUMERIC_CHARSET.indexOf(i.charAt(c))*45;u+=l.ALPHANUMERIC_CHARSET.indexOf(i.charAt(c+1)),n(u,11,s)}return c<i.length&&n(l.ALPHANUMERIC_CHARSET.indexOf(i.charAt(c)),6,s),new l(l.Mode.ALPHANUMERIC,i.length,s)}static makeSegments(i){return i==\"\"?[]:l.isNumeric(i)?[l.makeNumeric(i)]:l.isAlphanumeric(i)?[l.makeAlphanumeric(i)]:[l.makeBytes(l.toUtf8ByteArray(i))]}static makeEci(i){const s=[];if(i<0)throw new RangeError(\"ECI assignment value out of range\");if(i<128)n(i,8,s);else if(i<16384)n(2,2,s),n(i,14,s);else if(i<1e6)n(6,3,s),n(i,21,s);else throw new RangeError(\"ECI assignment value out of range\");return new l(l.Mode.ECI,0,s)}static isNumeric(i){return l.NUMERIC_REGEX.test(i)}static isAlphanumeric(i){return l.ALPHANUMERIC_REGEX.test(i)}constructor(i,s,c){if(this.mode=i,this.numChars=s,this.bitData=c,s<0)throw new RangeError(\"Invalid argument\");this.bitData=c.slice()}getData(){return this.bitData.slice()}static getTotalBits(i,s){let c=0;for(const u of i){const d=u.mode.numCharCountBits(s);if(u.numChars>=1<<d)return 1/0;c+=4+d+u.bitData.length}return c}static toUtf8ByteArray(i){i=encodeURI(i);const s=[];for(let c=0;c<i.length;c++)i.charAt(c)!=\"%\"?s.push(i.charCodeAt(c)):(s.push(parseInt(i.substring(c+1,c+3),16)),c+=2);return s}}l.NUMERIC_REGEX=/^[0-9]*$/,l.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\\/:-]*$/,l.ALPHANUMERIC_CHARSET=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\",e.QrSegment=l})(fo||(fo={}));(function(e){(function(t){class n{constructor(r,l){this.ordinal=r,this.formatBits=l}}n.LOW=new n(0,1),n.MEDIUM=new n(1,0),n.QUARTILE=new n(2,3),n.HIGH=new n(3,2),t.Ecc=n})(e.QrCode||(e.QrCode={}))})(fo||(fo={}));(function(e){(function(t){class n{constructor(r,l){this.modeBits=r,this.numBitsCharCount=l}numCharCountBits(r){return this.numBitsCharCount[Math.floor((r+7)/17)]}}n.NUMERIC=new n(1,[10,12,14]),n.ALPHANUMERIC=new n(2,[9,11,13]),n.BYTE=new n(4,[8,16,16]),n.KANJI=new n(8,[8,10,12]),n.ECI=new n(7,[0,0,0]),t.Mode=n})(e.QrSegment||(e.QrSegment={}))})(fo||(fo={}));const z_={L:fo.QrCode.Ecc.LOW,M:fo.QrCode.Ecc.MEDIUM,Q:fo.QrCode.Ecc.QUARTILE,H:fo.QrCode.Ecc.HIGH},Cm=128,H_=\"L\",j_=\"#FFFFFF\",W_=\"#000000\",V_=!1,uX=4,dX=0,fX=.1;function K_(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const n=[];return e.forEach(function(o,r){let l=null;o.forEach(function(a,i){if(!a&&l!==null){n.push(`M${l+t} ${r+t}h${i-l}v1H${l+t}z`),l=null;return}if(i===o.length-1){if(!a)return;l===null?n.push(`M${i+t},${r+t} h1v1H${i+t}z`):n.push(`M${l+t},${r+t} h${i+1-l}v1H${l+t}z`);return}a&&l===null&&(l=i)})}),n.join(\"\")}function G_(e,t){return e.slice().map((n,o)=>o<t.y||o>=t.y+t.h?n:n.map((r,l)=>l<t.x||l>=t.x+t.w?r:!1))}function X_(e,t,n,o){if(o==null)return null;const r=e.length+n*2,l=Math.floor(t*fX),a=r/t,i=(o.width||l)*a,s=(o.height||l)*a,c=o.x==null?e.length/2-i/2:o.x*a,u=o.y==null?e.length/2-s/2:o.y*a;let d=null;if(o.excavate){const p=Math.floor(c),m=Math.floor(u),g=Math.ceil(i+c-p),v=Math.ceil(s+u-m);d={x:p,y:m,w:g,h:v}}return{x:c,y:u,h:s,w:i,excavation:d}}function U_(e,t){return t!=null?Math.floor(t):e?uX:dX}const pX=(function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0})(),mX=ne({name:\"QRCodeCanvas\",inheritAttrs:!1,props:h(h({},qg()),{level:String,bgColor:String,fgColor:String,marginSize:Number}),setup(e,t){let{attrs:n,expose:o}=t;const r=I(()=>{var s;return(s=e.imageSettings)===null||s===void 0?void 0:s.src}),l=ee(null),a=ee(null),i=ee(!1);return o({toDataURL:(s,c)=>{var u;return(u=l.value)===null||u===void 0?void 0:u.toDataURL(s,c)}}),ze(()=>{const{value:s,size:c=Cm,level:u=H_,bgColor:d=j_,fgColor:p=W_,includeMargin:m=V_,marginSize:g,imageSettings:v}=e;if(l.value!=null){const y=l.value,b=y.getContext(\"2d\");if(!b)return;let S=fo.QrCode.encodeText(s,z_[u]).getModules();const $=U_(m,g),w=S.length+$*2,C=X_(S,c,$,v),_=a.value,x=i.value&&C!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;x&&C.excavation!=null&&(S=G_(S,C.excavation));const P=window.devicePixelRatio||1;y.height=y.width=c*P;const O=c/w*P;b.scale(O,O),b.fillStyle=d,b.fillRect(0,0,w,w),b.fillStyle=p,pX?b.fill(new Path2D(K_(S,$))):S.forEach(function(M,E){M.forEach(function(R,D){R&&b.fillRect(D+$,E+$,1,1)})}),x&&b.drawImage(_,C.x+$,C.y+$,C.w,C.h)}},{flush:\"post\"}),pe(r,()=>{i.value=!1}),()=>{var s;const c=(s=e.size)!==null&&s!==void 0?s:Cm,u={height:`${c}px`,width:`${c}px`};let d=null;return r.value!=null&&(d=f(\"img\",{src:r.value,key:r.value,style:{display:\"none\"},onLoad:()=>{i.value=!0},ref:a},null)),f(Ve,null,[f(\"canvas\",A(A({},n),{},{style:[u,n.style],ref:l}),null),d])}}}),vX=ne({name:\"QRCodeSVG\",inheritAttrs:!1,props:h(h({},qg()),{color:String,level:String,bgColor:String,fgColor:String,marginSize:Number,title:String}),setup(e){let t=null,n=null,o=null,r=null,l=null,a=null;return ze(()=>{const{value:i,size:s=Cm,level:c=H_,includeMargin:u=V_,marginSize:d,imageSettings:p}=e;t=fo.QrCode.encodeText(i,z_[c]).getModules(),n=U_(u,d),o=t.length+n*2,r=X_(t,s,n,p),p!=null&&r!=null&&(r.excavation!=null&&(t=G_(t,r.excavation)),a=f(\"image\",{\"xlink:href\":p.src,height:r.h,width:r.w,x:r.x+n,y:r.y+n,preserveAspectRatio:\"none\"},null)),l=K_(t,n)}),()=>{const i=e.bgColor&&j_,s=e.fgColor&&W_;return f(\"svg\",{height:e.size,width:e.size,viewBox:`0 0 ${o} ${o}`},[!!e.title&&f(\"title\",null,[e.title]),f(\"path\",{fill:i,d:`M0,0 h${o}v${o}H0z`,\"shape-rendering\":\"crispEdges\"},null),f(\"path\",{fill:s,d:l,\"shape-rendering\":\"crispEdges\"},null),a])}}}),gX=ne({name:\"AQrcode\",inheritAttrs:!1,props:cX(),emits:[\"refresh\"],setup(e,t){let{emit:n,attrs:o,expose:r}=t;const[l]=yo(\"QRCode\"),{prefixCls:a}=Pe(\"qrcode\",e),[i,s]=sX(a),[,c]=br(),u=J();r({toDataURL:(p,m)=>{var g;return(g=u.value)===null||g===void 0?void 0:g.toDataURL(p,m)}});const d=I(()=>{const{value:p,icon:m=\"\",size:g=160,iconSize:v=40,color:y=c.value.colorText,bgColor:b=\"transparent\",errorLevel:S=\"M\"}=e,$={src:m,x:void 0,y:void 0,height:v,width:v,excavate:!0};return{value:p,size:g-(c.value.paddingSM+c.value.lineWidth)*2,level:S,bgColor:b,fgColor:y,imageSettings:m?$:void 0}});return()=>{const p=a.value;return i(f(\"div\",A(A({},o),{},{style:[o.style,{width:`${e.size}px`,height:`${e.size}px`,backgroundColor:d.value.bgColor}],class:[s.value,p,{[`${p}-borderless`]:!e.bordered}]}),[e.status!==\"active\"&&f(\"div\",{class:`${p}-mask`},[e.status===\"loading\"&&f(Vo,null,null),e.status===\"expired\"&&f(Ve,null,[f(\"p\",{class:`${p}-expired`},[l.value.expired]),f(_t,{type:\"link\",onClick:m=>n(\"refresh\",m)},{default:()=>[l.value.refresh],icon:()=>f(cP,null,null)})]),e.status===\"scanned\"&&f(\"p\",{class:`${p}-scanned`},[l.value.scanned])]),e.type===\"canvas\"?f(mX,A({ref:u},d.value),null):f(vX,d.value,null)]))}}}),hX=Dt(gX);function bX(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:o,right:r,bottom:l,left:a}=e.getBoundingClientRect();return o>=0&&a>=0&&r<=t&&l<=n}function yX(e,t,n,o){const[r,l]=ht(void 0);ze(()=>{const u=typeof e.value==\"function\"?e.value():e.value;l(u||null)},{flush:\"post\"});const[a,i]=ht(null),s=()=>{if(!t.value){i(null);return}if(r.value){!bX(r.value)&&t.value&&r.value.scrollIntoView(o.value);const{left:u,top:d,width:p,height:m}=r.value.getBoundingClientRect(),g={left:u,top:d,width:p,height:m,radius:0};JSON.stringify(a.value)!==JSON.stringify(g)&&i(g)}else i(null)};return Ne(()=>{pe([t,r],()=>{s()},{flush:\"post\",immediate:!0}),window.addEventListener(\"resize\",s)}),et(()=>{window.removeEventListener(\"resize\",s)}),[I(()=>{var u,d;if(!a.value)return a.value;const p=((u=n.value)===null||u===void 0?void 0:u.offset)||6,m=((d=n.value)===null||d===void 0?void 0:d.radius)||2;return{left:a.value.left-p,top:a.value.top-p,width:a.value.width+p*2,height:a.value.height+p*2,radius:m}}),r]}const SX=()=>({arrow:Fe([Boolean,Object]),target:Fe([String,Function,Object]),title:Fe([String,Object]),description:Fe([String,Object]),placement:ke(),mask:Fe([Object,Boolean],!0),className:{type:String},style:De(),scrollIntoViewOptions:Fe([Boolean,Object])}),Zg=()=>h(h({},SX()),{prefixCls:{type:String},total:{type:Number},current:{type:Number},onClose:de(),onFinish:de(),renderPanel:de(),onPrev:de(),onNext:de()}),$X=ne({name:\"DefaultPanel\",inheritAttrs:!1,props:Zg(),setup(e,t){let{attrs:n}=t;return()=>{const{prefixCls:o,current:r,total:l,title:a,description:i,onClose:s,onPrev:c,onNext:u,onFinish:d}=e;return f(\"div\",A(A({},n),{},{class:le(`${o}-content`,n.class)}),[f(\"div\",{class:`${o}-inner`},[f(\"button\",{type:\"button\",onClick:s,\"aria-label\":\"Close\",class:`${o}-close`},[f(\"span\",{class:`${o}-close-x`},[wt(\"×\")])]),f(\"div\",{class:`${o}-header`},[f(\"div\",{class:`${o}-title`},[a])]),f(\"div\",{class:`${o}-description`},[i]),f(\"div\",{class:`${o}-footer`},[f(\"div\",{class:`${o}-sliders`},[l>1?[...Array.from({length:l}).keys()].map((p,m)=>f(\"span\",{key:p,class:m===r?\"active\":\"\"},null)):null]),f(\"div\",{class:`${o}-buttons`},[r!==0?f(\"button\",{class:`${o}-prev-btn`,onClick:c},[wt(\"Prev\")]):null,r===l-1?f(\"button\",{class:`${o}-finish-btn`,onClick:d},[wt(\"Finish\")]):f(\"button\",{class:`${o}-next-btn`,onClick:u},[wt(\"Next\")])])])])])}}}),CX=ne({name:\"TourStep\",inheritAttrs:!1,props:Zg(),setup(e,t){let{attrs:n}=t;return()=>{const{current:o,renderPanel:r}=e;return f(Ve,null,[typeof r==\"function\"?r(h(h({},n),e),o):f($X,A(A({},n),e),null)])}}});let zS=0;const xX=wn();function wX(){let e;return xX?(e=zS,zS+=1):e=\"TEST_OR_SSR\",e}function _X(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:J(\"\");const t=`vc_unique_${wX()}`;return e.value||t}const Rs={fill:\"transparent\",\"pointer-events\":\"auto\"},IX=ne({name:\"TourMask\",props:{prefixCls:{type:String},pos:De(),rootClassName:{type:String},showMask:ye(),fill:{type:String,default:\"rgba(0,0,0,0.5)\"},open:ye(),animated:Fe([Boolean,Object]),zIndex:{type:Number}},setup(e,t){let{attrs:n}=t;const o=_X();return()=>{const{prefixCls:r,open:l,rootClassName:a,pos:i,showMask:s,fill:c,animated:u,zIndex:d}=e,p=`${r}-mask-${o}`,m=typeof u==\"object\"?u?.placeholder:u;return f(Ni,{visible:l,autoLock:!0},{default:()=>l&&f(\"div\",A(A({},n),{},{class:le(`${r}-mask`,a,n.class),style:[{position:\"fixed\",left:0,right:0,top:0,bottom:0,zIndex:d,pointerEvents:\"none\"},n.style]}),[s?f(\"svg\",{style:{width:\"100%\",height:\"100%\"}},[f(\"defs\",null,[f(\"mask\",{id:p},[f(\"rect\",{x:\"0\",y:\"0\",width:\"100vw\",height:\"100vh\",fill:\"white\"},null),i&&f(\"rect\",{x:i.left,y:i.top,rx:i.radius,width:i.width,height:i.height,fill:\"black\",class:m?`${r}-placeholder-animated`:\"\"},null)])]),f(\"rect\",{x:\"0\",y:\"0\",width:\"100%\",height:\"100%\",fill:c,mask:`url(#${p})`},null),i&&f(Ve,null,[f(\"rect\",A(A({},Rs),{},{x:\"0\",y:\"0\",width:\"100%\",height:i.top}),null),f(\"rect\",A(A({},Rs),{},{x:\"0\",y:\"0\",width:i.left,height:\"100%\"}),null),f(\"rect\",A(A({},Rs),{},{x:\"0\",y:i.top+i.height,width:\"100%\",height:`calc(100vh - ${i.top+i.height}px)`}),null),f(\"rect\",A(A({},Rs),{},{x:i.left+i.width,y:\"0\",width:`calc(100vw - ${i.left+i.width}px)`,height:\"100%\"}),null)])]):null])})}}}),PX=[0,0],HS={left:{points:[\"cr\",\"cl\"],offset:[-8,0]},right:{points:[\"cl\",\"cr\"],offset:[8,0]},top:{points:[\"bc\",\"tc\"],offset:[0,-8]},bottom:{points:[\"tc\",\"bc\"],offset:[0,8]},topLeft:{points:[\"bl\",\"tl\"],offset:[0,-8]},leftTop:{points:[\"tr\",\"tl\"],offset:[-8,0]},topRight:{points:[\"br\",\"tr\"],offset:[0,-8]},rightTop:{points:[\"tl\",\"tr\"],offset:[8,0]},bottomRight:{points:[\"tr\",\"br\"],offset:[0,8]},rightBottom:{points:[\"bl\",\"br\"],offset:[8,0]},bottomLeft:{points:[\"tl\",\"bl\"],offset:[0,8]},leftBottom:{points:[\"br\",\"bl\"],offset:[-8,0]}};function Y_(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const t={};return Object.keys(HS).forEach(n=>{t[n]=h(h({},HS[n]),{autoArrow:e,targetOffset:PX})}),t}Y_();var TX=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const Xf={left:\"50%\",top:\"50%\",width:\"1px\",height:\"1px\"},q_=()=>{const{builtinPlacements:e,popupAlign:t}=XC();return{builtinPlacements:e,popupAlign:t,steps:ct(),open:ye(),defaultCurrent:{type:Number},current:{type:Number},onChange:de(),onClose:de(),onFinish:de(),mask:Fe([Boolean,Object],!0),arrow:Fe([Boolean,Object],!0),rootClassName:{type:String},placement:ke(\"bottom\"),prefixCls:{type:String,default:\"rc-tour\"},renderPanel:de(),gap:De(),animated:Fe([Boolean,Object]),scrollIntoViewOptions:Fe([Boolean,Object],!0),zIndex:{type:Number,default:1001}}},OX=ne({name:\"Tour\",inheritAttrs:!1,props:Ze(q_(),{}),setup(e){const{defaultCurrent:t,placement:n,mask:o,scrollIntoViewOptions:r,open:l,gap:a,arrow:i}=jo(e),s=J(),[c,u]=Mt(0,{value:I(()=>e.current),defaultValue:t.value}),[d,p]=Mt(void 0,{value:I(()=>e.open),postState:x=>c.value<0||c.value>=e.steps.length?!1:x??!0}),m=ee(d.value);ze(()=>{d.value&&!m.value&&u(0),m.value=d.value});const g=I(()=>e.steps[c.value]||{}),v=I(()=>{var x;return(x=g.value.placement)!==null&&x!==void 0?x:n.value}),y=I(()=>{var x;return d.value&&((x=g.value.mask)!==null&&x!==void 0?x:o.value)}),b=I(()=>{var x;return(x=g.value.scrollIntoViewOptions)!==null&&x!==void 0?x:r.value}),[S,$]=yX(I(()=>g.value.target),l,a,b),w=I(()=>$.value?typeof g.value.arrow>\"u\"?i.value:g.value.arrow:!1),C=I(()=>typeof w.value==\"object\"?w.value.pointAtCenter:!1);pe(C,()=>{var x;(x=s.value)===null||x===void 0||x.forcePopupAlign()}),pe(c,()=>{var x;(x=s.value)===null||x===void 0||x.forcePopupAlign()});const _=x=>{var P;u(x),(P=e.onChange)===null||P===void 0||P.call(e,x)};return()=>{var x;const{prefixCls:P,steps:O,onClose:M,onFinish:E,rootClassName:R,renderPanel:D,animated:z,zIndex:T}=e,k=TX(e,[\"prefixCls\",\"steps\",\"onClose\",\"onFinish\",\"rootClassName\",\"renderPanel\",\"animated\",\"zIndex\"]);if($.value===void 0)return null;const B=()=>{p(!1),M?.(c.value)},L=typeof y.value==\"boolean\"?y.value:!!y.value,N=typeof y.value==\"boolean\"?void 0:y.value,F=()=>$.value||document.body,j=()=>f(CX,A({arrow:w.value,key:\"content\",prefixCls:P,total:O.length,renderPanel:D,onPrev:()=>{_(c.value-1)},onNext:()=>{_(c.value+1)},onClose:B,current:c.value,onFinish:()=>{B(),E?.()}},g.value),null),H=I(()=>{const K=S.value||Xf,G={};return Object.keys(K).forEach(V=>{typeof K[V]==\"number\"?G[V]=`${K[V]}px`:G[V]=K[V]}),G});return d.value?f(Ve,null,[f(IX,{zIndex:T,prefixCls:P,pos:S.value,showMask:L,style:N?.style,fill:N?.color,open:d.value,animated:z,rootClassName:R},null),f(Ol,A(A({},k),{},{arrow:!!k.arrow,builtinPlacements:g.value.target?(x=k.builtinPlacements)!==null&&x!==void 0?x:Y_(C.value):void 0,ref:s,popupStyle:g.value.target?g.value.style:h(h({},g.value.style),{position:\"fixed\",left:Xf.left,top:Xf.top,transform:\"translate(-50%, -50%)\"}),popupPlacement:v.value,popupVisible:d.value,popupClassName:le(R,g.value.className),prefixCls:P,popup:j,forceRender:!1,destroyPopupOnHide:!0,zIndex:T,mask:!1,getTriggerDOMNode:F}),{default:()=>[f(Ni,{visible:d.value,autoLock:!0},{default:()=>[f(\"div\",{class:le(R,`${P}-target-placeholder`),style:h(h({},H.value),{position:\"fixed\",pointerEvents:\"none\"})},null)]})]})]):null}}}),EX=()=>h(h({},q_()),{steps:{type:Array},prefixCls:{type:String},current:{type:Number},type:{type:String},\"onUpdate:current\":Function}),MX=()=>h(h({},Zg()),{cover:{type:Object},nextButtonProps:{type:Object},prevButtonProps:{type:Object},current:{type:Number},type:{type:String}}),AX=ne({name:\"ATourPanel\",inheritAttrs:!1,props:MX(),setup(e,t){let{attrs:n,slots:o}=t;const{current:r,total:l}=jo(e),a=I(()=>r.value===l.value-1),i=c=>{var u;const d=e.prevButtonProps;(u=e.onPrev)===null||u===void 0||u.call(e,c),typeof d?.onClick==\"function\"&&d?.onClick()},s=c=>{var u,d;const p=e.nextButtonProps;a.value?(u=e.onFinish)===null||u===void 0||u.call(e,c):(d=e.onNext)===null||d===void 0||d.call(e,c),typeof p?.onClick==\"function\"&&p?.onClick()};return()=>{const{prefixCls:c,title:u,onClose:d,cover:p,description:m,type:g,arrow:v}=e,y=e.prevButtonProps,b=e.nextButtonProps;let S;u&&(S=f(\"div\",{class:`${c}-header`},[f(\"div\",{class:`${c}-title`},[u])]));let $;m&&($=f(\"div\",{class:`${c}-description`},[m]));let w;p&&(w=f(\"div\",{class:`${c}-cover`},[p]));let C;o.indicatorsRender?C=o.indicatorsRender({current:r.value,total:l}):C=[...Array.from({length:l.value}).keys()].map((P,O)=>f(\"span\",{key:P,class:le(O===r.value&&`${c}-indicator-active`,`${c}-indicator`)},null));const _=g===\"primary\"?\"default\":\"primary\",x={type:\"default\",ghost:g===\"primary\"};return f(_l,{componentName:\"Tour\",defaultLocale:En.Tour},{default:P=>{var O;return f(\"div\",A(A({},n),{},{class:le(g===\"primary\"?`${c}-primary`:\"\",n.class,`${c}-content`)}),[v&&f(\"div\",{class:`${c}-arrow`,key:\"arrow\"},null),f(\"div\",{class:`${c}-inner`},[f(Wn,{class:`${c}-close`,onClick:d},null),w,S,$,f(\"div\",{class:`${c}-footer`},[l.value>1&&f(\"div\",{class:`${c}-indicators`},[C]),f(\"div\",{class:`${c}-buttons`},[r.value!==0?f(_t,A(A(A({},x),y),{},{onClick:i,size:\"small\",class:le(`${c}-prev-btn`,y?.className)}),{default:()=>[ip(y?.children)?y.children():(O=y?.children)!==null&&O!==void 0?O:P.Previous]}):null,f(_t,A(A({type:_},b),{},{onClick:s,size:\"small\",class:le(`${c}-next-btn`,b?.className)}),{default:()=>[ip(b?.children)?b?.children():a.value?P.Finish:P.Next]})])])])])}})}}}),DX=e=>{let{defaultType:t,steps:n,current:o,defaultCurrent:r}=e;const l=J(r?.value),a=I(()=>o?.value);pe(a,u=>{l.value=u??r?.value},{immediate:!0});const i=u=>{l.value=u},s=I(()=>{var u,d;return typeof l.value==\"number\"?n&&((d=(u=n.value)===null||u===void 0?void 0:u[l.value])===null||d===void 0?void 0:d.type):t?.value});return{currentMergedType:I(()=>{var u;return(u=s.value)!==null&&u!==void 0?u:t?.value}),updateInnerCurrent:i}},RX=e=>{const{componentCls:t,lineHeight:n,padding:o,paddingXS:r,borderRadius:l,borderRadiusXS:a,colorPrimary:i,colorText:s,colorFill:c,indicatorHeight:u,indicatorWidth:d,boxShadowTertiary:p,tourZIndexPopup:m,fontSize:g,colorBgContainer:v,fontWeightStrong:y,marginXS:b,colorTextLightSolid:S,tourBorderRadius:$,colorWhite:w,colorBgTextHover:C,tourCloseSize:_,motionDurationSlow:x,antCls:P}=e;return[{[t]:h(h({},Ue(e)),{color:s,position:\"absolute\",zIndex:m,display:\"block\",visibility:\"visible\",fontSize:g,lineHeight:n,width:520,\"--antd-arrow-background-color\":v,\"&-pure\":{maxWidth:\"100%\",position:\"relative\"},[`&${t}-hidden`]:{display:\"none\"},[`${t}-content`]:{position:\"relative\"},[`${t}-inner`]:{textAlign:\"start\",textDecoration:\"none\",borderRadius:$,boxShadow:p,position:\"relative\",backgroundColor:v,border:\"none\",backgroundClip:\"padding-box\",[`${t}-close`]:{position:\"absolute\",top:o,insetInlineEnd:o,color:e.colorIcon,outline:\"none\",width:_,height:_,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",\"&:hover\":{color:e.colorIconHover,backgroundColor:e.wireframe?\"transparent\":e.colorFillContent}},[`${t}-cover`]:{textAlign:\"center\",padding:`${o+_+r}px ${o}px 0`,img:{width:\"100%\"}},[`${t}-header`]:{padding:`${o}px ${o}px ${r}px`,[`${t}-title`]:{lineHeight:n,fontSize:g,fontWeight:y}},[`${t}-description`]:{padding:`0 ${o}px`,lineHeight:n,wordWrap:\"break-word\"},[`${t}-footer`]:{padding:`${r}px ${o}px ${o}px`,textAlign:\"end\",borderRadius:`0 0 ${a}px ${a}px`,display:\"flex\",[`${t}-indicators`]:{display:\"inline-block\",[`${t}-indicator`]:{width:d,height:u,display:\"inline-block\",borderRadius:\"50%\",background:c,\"&:not(:last-child)\":{marginInlineEnd:u},\"&-active\":{background:i}}},[`${t}-buttons`]:{marginInlineStart:\"auto\",[`${P}-btn`]:{marginInlineStart:b}}}},[`${t}-primary, &${t}-primary`]:{\"--antd-arrow-background-color\":i,[`${t}-inner`]:{color:S,textAlign:\"start\",textDecoration:\"none\",backgroundColor:i,borderRadius:l,boxShadow:p,[`${t}-close`]:{color:S},[`${t}-indicators`]:{[`${t}-indicator`]:{background:new mt(S).setAlpha(.15).toRgbString(),\"&-active\":{background:S}}},[`${t}-prev-btn`]:{color:S,borderColor:new mt(S).setAlpha(.15).toRgbString(),backgroundColor:i,\"&:hover\":{backgroundColor:new mt(S).setAlpha(.15).toRgbString(),borderColor:\"transparent\"}},[`${t}-next-btn`]:{color:i,borderColor:\"transparent\",background:w,\"&:hover\":{background:new mt(C).onBackground(w).toRgbString()}}}}}),[`${t}-mask`]:{[`${t}-placeholder-animated`]:{transition:`all ${x}`}},[[\"&-placement-left\",\"&-placement-leftTop\",\"&-placement-leftBottom\",\"&-placement-right\",\"&-placement-rightTop\",\"&-placement-rightBottom\"].join(\",\")]:{[`${t}-inner`]:{borderRadius:Math.min($,Dv)}}},Rv(e,{colorBg:\"var(--antd-arrow-background-color)\",contentRadius:$,limitVerticalRadius:!0})]},kX=Ge(\"Tour\",e=>{const{borderRadiusLG:t,fontSize:n,lineHeight:o}=e,r=Le(e,{tourZIndexPopup:e.zIndexPopupBase+70,indicatorWidth:6,indicatorHeight:6,tourBorderRadius:t,tourCloseSize:n*o});return[RX(r)]});var NX=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const BX=ne({name:\"ATour\",inheritAttrs:!1,props:EX(),setup(e,t){let{attrs:n,emit:o,slots:r}=t;const{current:l,type:a,steps:i,defaultCurrent:s}=jo(e),{prefixCls:c,direction:u}=Pe(\"tour\",e),[d,p]=kX(c),{currentMergedType:m,updateInnerCurrent:g}=DX({defaultType:a,steps:i,current:l,defaultCurrent:s});return()=>{const{steps:v,current:y,type:b,rootClassName:S}=e,$=NX(e,[\"steps\",\"current\",\"type\",\"rootClassName\"]),w=le({[`${c.value}-primary`]:m.value===\"primary\",[`${c.value}-rtl`]:u.value===\"rtl\"},p.value,S),C=(P,O)=>f(AX,A(A({},P),{},{type:b,current:O}),{indicatorsRender:r.indicatorsRender}),_=P=>{g(P),o(\"update:current\",P),o(\"change\",P)},x=I(()=>Av({arrowPointAtCenter:!0,autoAdjustOverflow:!0}));return d(f(OX,A(A(A({},n),$),{},{rootClassName:w,prefixCls:c.value,current:y,defaultCurrent:e.defaultCurrent,animated:!0,renderPanel:C,onChange:_,steps:v,builtinPlacements:x.value}),null))}}}),LX=Dt(BX),Z_=Symbol(\"appConfigContext\"),FX=e=>Qe(Z_,e),zX=()=>Je(Z_,{}),Q_=Symbol(\"appContext\"),HX=e=>Qe(Q_,e),jX=vt({message:{},notification:{},modal:{}}),WX=()=>Je(Q_,jX),VX=e=>{const{componentCls:t,colorText:n,fontSize:o,lineHeight:r,fontFamily:l}=e;return{[t]:{color:n,fontSize:o,lineHeight:r,fontFamily:l}}},KX=Ge(\"App\",e=>[VX(e)]),GX=()=>({rootClassName:String,message:De(),notification:De()}),XX=()=>WX(),ua=ne({name:\"AApp\",props:Ze(GX(),{}),setup(e,t){let{slots:n}=t;const{prefixCls:o}=Pe(\"app\",e),[r,l]=KX(o),a=I(()=>le(l.value,o.value,e.rootClassName)),i=zX(),s=I(()=>({message:h(h({},i.message),e.message),notification:h(h({},i.notification),e.notification)}));FX(s.value);const[c,u]=_w(s.value.message),[d,p]=Bw(s.value.notification),[m,g]=F2(),v=I(()=>({message:c,notification:d,modal:m}));return HX(v.value),()=>{var y;return r(f(\"div\",{class:a.value},[g(),u(),p(),(y=n.default)===null||y===void 0?void 0:y.call(n)]))}}});ua.useApp=XX;ua.install=function(e){e.component(ua.name,ua)};const J_=[\"wrap\",\"nowrap\",\"wrap-reverse\"],eI=[\"flex-start\",\"flex-end\",\"start\",\"end\",\"center\",\"space-between\",\"space-around\",\"space-evenly\",\"stretch\",\"normal\",\"left\",\"right\"],tI=[\"center\",\"start\",\"end\",\"flex-start\",\"flex-end\",\"self-start\",\"self-end\",\"baseline\",\"normal\",\"stretch\"],UX=(e,t)=>{const n={};return J_.forEach(o=>{n[`${e}-wrap-${o}`]=t.wrap===o}),n},YX=(e,t)=>{const n={};return tI.forEach(o=>{n[`${e}-align-${o}`]=t.align===o}),n[`${e}-align-stretch`]=!t.align&&!!t.vertical,n},qX=(e,t)=>{const n={};return eI.forEach(o=>{n[`${e}-justify-${o}`]=t.justify===o}),n};function ZX(e,t){return le(h(h(h({},UX(e,t)),YX(e,t)),qX(e,t)))}const QX=e=>{const{componentCls:t}=e;return{[t]:{display:\"flex\",\"&-vertical\":{flexDirection:\"column\"},\"&-rtl\":{direction:\"rtl\"},\"&:empty\":{display:\"none\"}}}},JX=e=>{const{componentCls:t}=e;return{[t]:{\"&-gap-small\":{gap:e.flexGapSM},\"&-gap-middle\":{gap:e.flexGap},\"&-gap-large\":{gap:e.flexGapLG}}}},eU=e=>{const{componentCls:t}=e,n={};return J_.forEach(o=>{n[`${t}-wrap-${o}`]={flexWrap:o}}),n},tU=e=>{const{componentCls:t}=e,n={};return tI.forEach(o=>{n[`${t}-align-${o}`]={alignItems:o}}),n},nU=e=>{const{componentCls:t}=e,n={};return eI.forEach(o=>{n[`${t}-justify-${o}`]={justifyContent:o}}),n},oU=Ge(\"Flex\",e=>{const t=Le(e,{flexGapSM:e.paddingXS,flexGap:e.padding,flexGapLG:e.paddingLG});return[QX(t),JX(t),eU(t),tU(t),nU(t)]});function jS(e){return[\"small\",\"middle\",\"large\"].includes(e)}const rU=()=>({prefixCls:ke(),vertical:ye(),wrap:ke(),justify:ke(),align:ke(),flex:Fe([Number,String]),gap:Fe([Number,String]),component:Ct()});var lU=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};const aU=ne({name:\"AFlex\",inheritAttrs:!1,props:rU(),setup(e,t){let{slots:n,attrs:o}=t;const{flex:r,direction:l}=Ru(),{prefixCls:a}=Pe(\"flex\",e),[i,s]=oU(a),c=I(()=>{var u;return[a.value,s.value,ZX(a.value,e),{[`${a.value}-rtl`]:l.value===\"rtl\",[`${a.value}-gap-${e.gap}`]:jS(e.gap),[`${a.value}-vertical`]:(u=e.vertical)!==null&&u!==void 0?u:r?.value.vertical}]});return()=>{var u;const{flex:d,gap:p,component:m=\"div\"}=e,g=lU(e,[\"flex\",\"gap\",\"component\"]),v={};return d&&(v.flex=d),p&&!jS(p)&&(v.gap=`${p}px`),i(f(m,A({class:[o.class,c.value],style:[o.style,v]},ot(g,[\"justify\",\"wrap\",\"align\",\"vertical\"])),{default:()=>[(u=n.default)===null||u===void 0?void 0:u.call(n)]}))}}}),iU=Dt(aU),WS=Object.freeze(Object.defineProperty({__proto__:null,Affix:AC,Alert:Xo,Anchor:ll,AnchorLink:av,App:ua,AutoComplete:uD,AutoCompleteOptGroup:cD,AutoCompleteOption:sD,Avatar:ml,AvatarGroup:Yc,BackTop:bu,Badge:Ja,BadgeRibbon:qc,Breadcrumb:vl,BreadcrumbItem:xi,BreadcrumbSeparator:lu,Button:_t,ButtonGroup:tu,Calendar:cN,Card:gl,CardGrid:cu,CardMeta:su,Carousel:X8,Cascader:rL,CheckableTag:mu,Checkbox:Zn,CheckboxGroup:fu,Col:uL,Collapse:ti,CollapsePanel:uu,Comment:vL,Compact:Xc,ConfigProvider:Nr,DatePicker:IF,Descriptions:Gl,DescriptionsItem:Qw,DirectoryTree:Cc,Divider:FF,Drawer:e7,Dropdown:po,DropdownButton:Ci,Empty:uo,Flex:iU,FloatButton:Br,FloatButtonGroup:hu,Form:_o,FormItem:Yi,FormItemRest:Kc,Grid:cL,Image:il,ImagePreviewGroup:S2,Input:Bt,InputGroup:s2,InputNumber:dz,InputPassword:qi,InputSearch:c2,Layout:Cz,LayoutContent:$z,LayoutFooter:yz,LayoutHeader:bz,LayoutSider:Sz,List:Ir,ListItem:_2,ListItemMeta:x2,LocaleProvider:$w,Mentions:_H,MentionsOption:bc,Menu:Ft,MenuDivider:_i,MenuItem:To,MenuItemGroup:wi,Modal:qt,MonthPicker:cc,PageHeader:ZH,Pagination:xd,Popconfirm:o9,Popover:kv,Progress:Hg,QRCode:hX,QuarterPicker:uc,Radio:In,RadioButton:iu,RadioGroup:ug,RangePicker:dc,Rate:j9,Result:bl,Row:nj,Segmented:aX,Select:nn,SelectOptGroup:lD,SelectOption:Ov,Skeleton:Sn,SkeletonAvatar:bg,SkeletonButton:gg,SkeletonImage:hg,SkeletonInput:cd,SkeletonTitle:ad,Slider:yj,Space:ia,Spin:Vo,Statistic:or,StatisticCountdown:HH,Step:yc,Steps:Bj,SubMenu:Cl,Switch:Xj,TabPane:Ii,Table:HV,TableColumn:wc,TableColumnGroup:_c,TableSummary:Ic,TableSummaryCell:xu,TableSummaryRow:Cu,Tabs:Dr,Tag:aa,Textarea:Rg,TimePicker:RK,TimeRangePicker:Pc,Timeline:ca,TimelineItem:$a,Tooltip:Ln,Tour:LX,Transfer:sK,Tree:x_,TreeNode:xc,TreeSelect:AK,TreeSelectNode:$m,Typography:Bn,TypographyLink:Ra,TypographyParagraph:ka,TypographyText:Na,TypographyTitle:Ba,Upload:VG,UploadDragger:WG,Watermark:QG,WeekPicker:sc,message:vo,notification:mr},Symbol.toStringTag,{value:\"Module\"})),sU=function(e){return Object.keys(WS).forEach(t=>{const n=WS[t];n.install&&e.use(n)}),e.use(oM.StyleProvider),e.config.globalProperties.$message=vo,e.config.globalProperties.$notification=mr,e.config.globalProperties.$info=qt.info,e.config.globalProperties.$success=qt.success,e.config.globalProperties.$error=qt.error,e.config.globalProperties.$warning=qt.warning,e.config.globalProperties.$confirm=qt.confirm,e.config.globalProperties.$destroyAll=qt.destroyAll,e},cU={version:xC,install:sU},uU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARVJREFUeNpiZAAC7sUJBkCqHogFGGgPHgBxIQvQUpBl++lkKQwoMAGJBDpbCgIOTANgKRgwMQwQGHoWd5pEMmx3LWeIUbahr8V6gnIMtuIaDHLcIkMrqFnwSYJ8BMLYgDyPCFSNOkOVXgBWNUvvHWF4+OUNeRZX6fkzkOu4wy9vkGcxDDz6+oZhyd2jKGIxytbg+AUZfvjlTRQ5Qo4l2mKQq9subUDzqTrU4psYcsRYPPIKEKKCmp+NCyMBgcQgqVsYZ+Ki2GJQYQEqpbCBaCUbMB4yQc0IbAg0QFsfJAFQCICCuO3SRoxUPVotjlo8+AsQbKD8zHJwIQKqQOhq8aX3j4ZuHH8YKIsXDIDlBxgHqtMGEGAACr1LiGWMXAcAAAAASUVORK5CYII=\",dU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArpJREFUeNrkV99Lk2EUPrMYmINRCaMf+yYGNYRGSTflJG8mBIuyK8NFihdGEl6V4B8QiCCELPRiqLRRSGCBFDQho1lQkWGlM5gwC0wZhKGCjaT3OfMd3+ac+z5hizrw8Y7vvHuf8+N5zrsZSFjJvcaLYmmj/NjgypWBAcMG6DDl15qK8pip2q4WUWGsplDA9HcDu62V5NirbOmvtth5j9m4J2fg3dttwKEPzt6gpV+rVP+iZ5P/5UKYOk9d5sDgH/n6PidgyOk5mp3JicOeutqzZgIwBCaDUFtgdpz8kZC2jG2m0iTo5I85kcnEpj1zKzHqO92cUp3UasxoL3V0OUZRcbDDqHDmmXqM8stqBGZD1PLKR31nmqmh3Ent7+6TN/xsS+BdxksnGsValsn55ed3cuxTyFJs5oMBjuxH5z/y57exCC3FV2ltPb6RrYFa7bUcUMtrH639juvr8bKnf1uSnAt28oq2SLs9+Vg8j/TL6dBQa5I0KBsywSpJZPI3cQWQPXzSPEeqxOPUz2qUT51JugHUVlKa0md8RxHvJPkqhm9q1zEOlqWUTO9wXOCDkeE1QaZeQSYQEJUAoRIZO3kfSq4rY2kgjNt6MikXBHQ3HOTP6kCg6XQt7wgY5U7XqFpSXhGEzbSf3IcrOctsMspJTrLPGAShxcQwOGo+wCtG48PoG+r+/IR7iX2QnuvgcSZbcP6TfjnBpuq6kmTRYgimfqyH26LrkkDpFGZuMXnEREIPR75N0HW7izMDoTDhPOVVXBn4Qbgd3U5gceKysPK1B4N0MPgbBJAkGogHv9yDbL3TQZ5quoBBKrUm/ZFxDiJ9oqEqyPY8AhAEw3dwVSIozHzNwLdEGastxyggAGWv1Bc+gsF7MBtkS9zFPtYxwLNJKyc5/X+/uf4l4A8AvlMA4EFDof60/RFgAERVSCJNO8vGAAAAAElFTkSuQmCC\",fU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNpiZAAC7sUJCUAqnoE+YOLX2AUbGIGWFgA5/Qz0BYFMQCKfgf4gH2SxwgBYzMDEMEBg1GK6ARZsgnqCcgz8bFwENR9+eYO6FneaRDLYimsQ1MyzJHGYBDW1fEWRxYTAdtdyML303lEGOW4RhmwNV3D6+PjrG8PUG7sZ2i5tIM9iXHH96Osbhodf3sDl0RMkiF2l5w9Wt+TuEdIthvkIHbRd2ojiG5BFU2/sYpgG9GUW0NfZGm5gcR8ZQ6wWUy1xgXxWfmY5OBRAjkJ2EE0TF8hCGADF72iRSbXEBQKgOKWZxfiKTmLKc5IsvvT+EVGaQYkIVlGg68ElDgOgxt7/AYjiA6MtkJFh8YWBsnjhANg7kXGgOm0AAQYAboBk1uuosVsAAAAASUVORK5CYII=\",nI=\"/login/static/vite-static/1-Cu0bQcwi.jpg\",pU=Object.freeze(Object.defineProperty({__proto__:null,default:nI},Symbol.toStringTag,{value:\"Module\"})),oI=\"/login/static/vite-static/2-h-KgP5Og.jpg\",mU=Object.freeze(Object.defineProperty({__proto__:null,default:oI},Symbol.toStringTag,{value:\"Module\"})),rI=\"/login/static/vite-static/3-Dzoywf6L.jpg\",vU=Object.freeze(Object.defineProperty({__proto__:null,default:rI},Symbol.toStringTag,{value:\"Module\"})),lI=\"/login/static/vite-static/4-CxM5ibIe.jpg\",gU=Object.freeze(Object.defineProperty({__proto__:null,default:lI},Symbol.toStringTag,{value:\"Module\"})),aI=\"/login/static/vite-static/5-D16_oHrq.jpg\",hU=Object.freeze(Object.defineProperty({__proto__:null,default:aI},Symbol.toStringTag,{value:\"Module\"})),iI=\"/login/static/vite-static/6-XI9fi94d.jpg\",bU=Object.freeze(Object.defineProperty({__proto__:null,default:iI},Symbol.toStringTag,{value:\"Module\"})),sI=\"/login/static/vite-static/7-CP3zpZiG.jpg\",yU=Object.freeze(Object.defineProperty({__proto__:null,default:sI},Symbol.toStringTag,{value:\"Module\"})),cI=\"/login/static/vite-static/8-torSmCNe.jpg\",SU=Object.freeze(Object.defineProperty({__proto__:null,default:cI},Symbol.toStringTag,{value:\"Module\"})),uI=\"/login/static/vite-static/9-rdBbNCUu.jpg\",$U=Object.freeze(Object.defineProperty({__proto__:null,default:uI},Symbol.toStringTag,{value:\"Module\"})),dI=\"/login/static/vite-static/10-CYmoEpi7.jpg\",CU=Object.freeze(Object.defineProperty({__proto__:null,default:dI},Symbol.toStringTag,{value:\"Module\"})),fI=\"/login/static/vite-static/11-FPTCMMfA.jpg\",xU=Object.freeze(Object.defineProperty({__proto__:null,default:fI},Symbol.toStringTag,{value:\"Module\"})),pI=\"/login/static/vite-static/12-Lgfgf4_b.jpg\",wU=Object.freeze(Object.defineProperty({__proto__:null,default:pI},Symbol.toStringTag,{value:\"Module\"})),jl=Math.PI;function VS(e,t){return e+t}function _U(e){return e*e}function KS(e,t,n,o,r,l){e.beginPath(),e.moveTo(t,n),e.arc(t+o/2,n-r+2,r,.72*jl,2.26*jl),e.lineTo(t+o,n),e.arc(t+o+r-2,n+o/2,r,1.21*jl,2.78*jl),e.lineTo(t+o,n+o),e.lineTo(t,n+o),e.arc(t+r-2,n+o/2,r+.4,2.76*jl,1.24*jl,!0),e.lineTo(t,n),e.lineWidth=2,e.fillStyle=\"rgba(255, 255, 255, 0.7)\",e.strokeStyle=\"rgba(255, 255, 255, 0.7)\",e.stroke(),e[l](),e.globalCompositeOperation=\"destination-over\"}function IU(e,t){const n=document.createElement(\"img\");return n.crossOrigin=\"Anonymous\",n.onload=t,n.onerror=()=>{n.src=xm(e)},n.src=xm(e),n}function wu(e,t){return Math.round(Math.random()*(t-e)+e)}function xm(e){const t=e.length;return t>0?e[wu(0,t-1)]:\"https://picsum.photos/300/150?image=\"+wu(0,1084)}function PU(e,t,n={leading:!0,trailing:!0}){const{leading:o,trailing:r,resultCallback:l}=n;let a=0,i=null;const s=function(...c){return new Promise((u,d)=>{const p=new Date().getTime();!a&&!o&&(a=p);const m=t-(p-a);if(m<=0){i&&(clearTimeout(i),i=null);const g=e.apply(this,c);l&&l(g),u(g),a=p;return}r&&!i&&(i=setTimeout(()=>{i=null,a=o?new Date().getTime():0;const g=e.apply(this,c);l&&l(g),u(g)},m))})};return s.cancel=function(){i&&clearTimeout(i),i=null,a=0},s}function TU(){const e=vt({x:0,y:0}),t=J(!1),n=J(!1),o=J(0),r=J([]);return{origin:e,success:t,isMouseDown:n,timestamp:o,trail:r,start:c=>{t.value||(c instanceof MouseEvent?(e.x=c.clientX,e.y=c.clientY):(e.x=c.changedTouches[0].pageX,e.y=c.changedTouches[0].pageY),n.value=!0,o.value=Date.now())},move:(c,u,d)=>{if(!n.value)return!1;let p=0,m=0;if(u instanceof MouseEvent?(p=u.clientX-e.x,m=u.clientY-e.y):(p=u.changedTouches[0].pageX-e.x,m=u.changedTouches[0].pageY-e.y),p<0||p+38>=c)return!1;d(p),r.value.push(m)},end:(c,u)=>{if(!n.value||(n.value=!1,(c instanceof MouseEvent?c.clientX:c.changedTouches[0].pageX)===e.x))return!1;o.value=Date.now()-o.value,u(o.value)},verify:(c,u,d)=>{const p=r.value,m=p.reduce(VS)/p.length,g=p.map(b=>b-m),v=Math.sqrt(g.map(_U).reduce(VS)/p.length),y=parseInt(c);return d=d<=1?1:d>10?10:d,{spliced:Math.abs(y-u)<=d,TuringTest:m!==v}}}}var OU=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n};const EU=ne({name:\"SlideVerify\",props:{l:{type:Number,default:42},r:{type:Number,default:10},w:{type:Number,default:310},h:{type:Number,default:155},sliderText:{type:String,default:\"Slide filled right\"},accuracy:{type:Number,default:5},show:{type:Boolean,default:!0},imgs:{type:Array,default:()=>[]},interval:{type:Number,default:50},offset:{type:Number,default:0}},emits:[\"success\",\"again\",\"fail\",\"refresh\"],setup(e,{emit:t}){const{imgs:n,l:o,r,w:l,h:a,accuracy:i,interval:s,offset:c}=e,u=J(!0),d=J(0),p=J(0),m=vt({containerActive:!1,containerSuccess:!1,containerFail:!1}),g=vt({iconCls:\"arrow-right\",width:\"0\",left:\"0\"}),v=J(),y=J(),b=J(),S=J();let $;const{success:w,start:C,move:_,end:x,verify:P}=TU(),O=()=>{var T,k;w.value=!1,m.containerActive=!1,m.containerSuccess=!1,m.containerFail=!1,g.iconCls=\"arrow-right\",g.left=\"0\",g.width=\"0\",v.value.style.left=\"0\",(T=S.value)==null||T.clearRect(0,0,l,a),(k=y.value)==null||k.clearRect(0,0,l,a),v.value.width=l,$.src=xm(n)},M=()=>{O(),t(\"refresh\")};function E(T){g.left=T+\"px\";let k=(l-40-20)/(l-40)*T;v.value.style.left=k+\"px\",m.containerActive=!0,g.width=T+\"px\"}function R(T){const k=v.value.style.left,{spliced:B,TuringTest:L}=P(k,d.value,i);if(B){if(i===-1){m.containerSuccess=!0,g.iconCls=\"success\",w.value=!0,t(\"success\",{timestamp:T,left:parseFloat(k)});return}L?(m.containerSuccess=!0,g.iconCls=\"success\",w.value=!0,t(\"success\",{timestamp:T,left:parseFloat(k)})):(m.containerFail=!0,g.iconCls=\"fail\",t(\"again\"))}else m.containerFail=!0,g.iconCls=\"fail\",t(\"fail\"),setTimeout(()=>{O()},1e3)}const D=PU(T=>{_(l,T,E)},s),z=T=>{x(T,R)};return Ne(()=>{var T,k;const B=(T=b.value)==null?void 0:T.getContext(\"2d\"),L=(k=v.value)==null?void 0:k.getContext(\"2d\",{willReadFrequently:!0});S.value=B,y.value=L,$=IU(n,()=>{u.value=!1;const N=o+r*2+3;if(c>0)if(c>=N+10&&c<=l-(N+10))d.value=c;else throw new Error(`offset must be greater than ${N+10} and less than ${l-(N+10)}`);else d.value=wu(N+10,l-(N+10));if(p.value=wu(10+r*2,a-(N+10)),B&&L){KS(B,d.value,p.value,o,r,\"fill\"),KS(L,d.value,p.value,o,r,\"clip\"),B.drawImage($,0,0,l,a),L.drawImage($,0,0,l,a);const F=p.value-r*2-1,j=L.getImageData(d.value,F,N,N);v.value.width=N,L.putImageData(j,0,F)}}),document.addEventListener(\"mousemove\",D),document.addEventListener(\"mouseup\",z)}),et(()=>{document.removeEventListener(\"mousemove\",D),document.removeEventListener(\"mouseup\",z)}),{block:v,canvas:b,loadBlock:u,containerCls:m,sliderBox:g,refresh:M,sliderDown:C,touchStartEvent:C,touchMoveEvent:D,touchEndEvent:z}}}),MU=[\"width\",\"height\"],AU=[\"width\",\"height\"],DU={class:\"slide-verify-slider-text\"};function RU(e,t,n,o,r,l){return tt(),xt(\"div\",{id:\"slideVerify\",class:\"slide-verify\",style:Ns({width:e.w+\"px\"}),onselectstart:\"return false;\"},[Ee(\"div\",{class:kd({\"slider-verify-loading\":e.loadBlock})},null,2),Ee(\"canvas\",{ref:\"canvas\",width:e.w,height:e.h},null,8,MU),e.show?(tt(),xt(\"div\",{key:0,class:\"slide-verify-refresh-icon\",onClick:t[0]||(t[0]=(...a)=>e.refresh&&e.refresh(...a))},t[5]||(t[5]=[Ee(\"i\",{class:\"iconfont icon-refresh\"},null,-1)]))):Ao(\"\",!0),Ee(\"canvas\",{ref:\"block\",width:e.w,height:e.h,class:\"slide-verify-block\"},null,8,AU),Ee(\"div\",{class:kd([\"slide-verify-slider\",{\"container-active\":e.containerCls.containerActive,\"container-success\":e.containerCls.containerSuccess,\"container-fail\":e.containerCls.containerFail}])},[Ee(\"div\",{class:\"slide-verify-slider-mask\",style:Ns({width:e.sliderBox.width})},[Ee(\"div\",{class:\"slide-verify-slider-mask-item\",style:Ns({left:e.sliderBox.left}),onMousedown:t[1]||(t[1]=(...a)=>e.sliderDown&&e.sliderDown(...a)),onTouchstart:t[2]||(t[2]=(...a)=>e.touchStartEvent&&e.touchStartEvent(...a)),onTouchmove:t[3]||(t[3]=(...a)=>e.touchMoveEvent&&e.touchMoveEvent(...a)),onTouchend:t[4]||(t[4]=(...a)=>e.touchEndEvent&&e.touchEndEvent(...a))},[Ee(\"i\",{class:kd([\"slide-verify-slider-mask-item-icon\",\"iconfont\",`icon-${e.sliderBox.iconCls}`])},null,2)],36)],4),Ee(\"span\",DU,nt(e.sliderText),1)],2)],4)}var kU=OU(EU,[[\"render\",RU],[\"__scopeId\",\"data-v-617ae856\"]]);const NU={class:\"flex justify-around my-4\"},Qg={__name:\"index\",emits:[\"success\",\"fail\"],setup(e,{expose:t,emit:n}){const o=n,r=J(!1),l=Tu(\"SlideVerifyRef\"),a=()=>{r.value=!0,it(()=>{i()})},i=()=>{l.value.refresh()},s=()=>{r.value=!1,o(\"success\"),i()},c=()=>{o(\"fail\")},u=()=>{r.value=!1,c()};return Ne(()=>{it(()=>{i()})}),t({showModal:a,refreshValidate:i}),(d,p)=>{const m=qt;return tt(),Vt(m,{open:Be(r),\"onUpdate:open\":p[0]||(p[0]=g=>Lr(r)?r.value=g:null),width:\"400px\",footer:null,centered:\"\",onCancel:u},{default:rt(()=>[Ee(\"div\",NU,[f(Be(kU),{ref_key:\"SlideVerifyRef\",ref:l,\"slider-text\":\"滑动滑块验证\",imgs:[nI||pU,oI||mU,rI||vU,lI||gU,aI||hU,iI||bU,sI||yU,cI||SU,uI||$U,dI||CU,fI||xU,pI||wU],onSuccess:s,onFail:c},null,8,[\"imgs\"])])]),_:1},8,[\"open\"])}}},GS=!1,BU=\"login\",Zt={code:BU,title:\"Template\",isDev:GS,isProd:!GS,baseUrl:window.location.origin+\"/\",baseUrlOfImg:window.location.origin+\"/\"};qf.defaults.withCredentials=!0;const LU=()=>{const e=qf.CancelToken.source(),t=qf.create({baseURL:Zt.baseUrl,cancelToken:e.token}),n=o=>(o.response&&mr.error({message:\"错误\",description:o.response.statusText}),Promise.reject(o));return t.interceptors.request.use(o=>o,n),t.interceptors.response.use(o=>{const r=o.config.showMessage==null?!0:o.config.showMessage,{code:l}=o.data;return l==200?o.data:(r&&vo.warning({content:o.data.message}),Promise.reject(o.data))},n),{request:t,cancelSource:e}};window.addEventListener(\"unhandledrejection\",function(e){e.constructor===PromiseRejectionEvent&&(e.preventDefault(),e.stopPropagation())});const mI=LU().request,FU=(e={})=>mI({url:\"login/api/v3/auth-config/\",method:\"get\",params:e}),ns=(e={},t={showMessage:!0})=>{const n={url:\"login/api/v3/login/\",method:\"post\",data:e,...t};return mI(n)},Jg=e=>{try{return new URL(e),!0}catch{return!1}},zU={class:\"mt-4\"},HU={__name:\"Password\",props:{authData:{type:Object,default:()=>{}}},emits:[\"switchLoginMode\"],setup(e,{emit:t}){const n=t,{t:o}=hr(),r=J(!1),l=J(\"\"),a=Rm(\"OPS_userLoginSetting\",[]),i=Tu(\"SlideVerifyModalRef\"),s=J({username:\"\",password:\"\"}),c=J({username:[{required:!0,message:o(\"login_username_pl\"),trigger:\"change\"}],password:[{required:!0,message:o(\"login_pwd_pl\"),trigger:\"change\"}]}),u=m=>{try{const g=a.value.find(y=>y.auth_type==e.authData.auth_type&&y.username==s.value.username);(g?g.show_verify_code:!1)?i.value.showModal():d()}catch(g){console.log(g)}},d=async()=>{try{r.value=!0;const{c_url:m}=ii(\"history\"),g={...s.value,auth_type:e.authData.auth_type,c_url:m},{data:v={}}=await ns(g,{showMessage:!1});if(p(!1),[\"start_bind_google_auth\",\"bind_google_auth\",\"verify_google_auth\"].includes(v.google_auth_type))n(\"switchLoginMode\",{google_auth_type:v.google_auth_type,cache_token:v.cache_token,google_auth_url:Zt.baseUrlOfImg+v.google_auth_url,google_auth_username:v.google_auth_username,secret:v.secret,show_mfa_days:v.show_mfa_days,...g});else{const y=Jg(v.c_url)?v.c_url:Zt.baseUrl+(v.c_url==\"/\"?\"\":v.c_url);window.location.href=y}}catch(m){l.value=m.message,p(m.show_verify_code)}finally{r.value=!1}},p=m=>{const g=a.value.find(v=>v.auth_type==e.authData.auth_type&&v.username==s.value.username);g?g.show_verify_code=m:a.value.push({auth_type:e.authData.auth_type,username:s.value.username,show_verify_code:m})};return Ne(()=>{l.value=\"\"}),(m,g)=>{const v=Xo,y=Em,b=Bt,S=Yi,$=Mm,w=qi,C=_t,_=_o;return tt(),xt(\"div\",zU,[l.value?(tt(),Vt(v,{key:0,class:\"mt-1! mb-4!\",type:\"warning\",\"show-icon\":\"\",message:l.value},null,8,[\"message\"])):Ao(\"\",!0),f(_,{name:\"loginForm\",model:s.value,rules:c.value,onFinish:u},{default:rt(()=>[f(S,{name:\"username\"},{default:rt(()=>[f(b,{class:\"py-1.5!\",name:\"username\",autocomplete:\"username\",value:s.value.username,\"onUpdate:value\":g[0]||(g[0]=x=>s.value.username=x),valueModifiers:{trim:!0},placeholder:m.$t(\"login_username_pl\")},{prefix:rt(()=>[f(y,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f(S,{name:\"password\"},{default:rt(()=>[f(w,{class:\"py-1.5!\",name:\"password\",autocomplete:\"current-password\",value:s.value.password,\"onUpdate:value\":g[1]||(g[1]=x=>s.value.password=x),valueModifiers:{trim:!0},placeholder:m.$t(\"login_pwd_pl\")},{prefix:rt(()=>[f($,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f(S,null,{default:rt(()=>[f(C,{class:\"w-full mt-6!\",\"html-type\":\"submit\",size:\"large\",type:\"primary\",shape:\"round\",loading:r.value},{default:rt(()=>[wt(nt(m.$t(\"login_btn\")),1)]),_:1},8,[\"loading\"])]),_:1})]),_:1},8,[\"model\",\"rules\"]),f(Qg,{ref_key:\"SlideVerifyModalRef\",ref:i,onSuccess:d},null,512)])}}},jU=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA8RJREFUeNrsmc1u00AQgDdVezc3Lgj3ARBG4sSlrsSJS9InwD5whrxAf/ICbY6IQ9InaLgjxb1XIsABbjFPwHKFSmHWO4X1ena9NnacQ0baKE7r9Xw7Pzs7ZmwrW9mKTXq17xzxAXwGMA5g+DgoSWCkMK6z78de2j3IiIfw+RKGgPBqPnMBYwxjBlB8vSAS4ARG2OAicgS6aAKoVwIgVn2CFnBRbKFc29xNFeFqQ4CZtQMirXBlcSGh9Hv0+8QyT4Cx1C9ZkCnMEzcLMuIRWoJ+oHCJY29RI0F4CHNisJaY87COq/UqQIhVjxvLOiN+ikCNwPSIlHpF/J/w4YvGc6Z0uwm6nioiox3VAxlxYeqPWkxwtMKMtSXS3eYEzBk899R1mh3l+4QI7HYhhEgXOtQyHsvcTi5uBRCZoULCndqFyMMcoQcwbXErWeSkENhtxIQdRu4neQkxjhxApPnCgn92IcfeFLOjKq9dLRIR1kg6LGQvC1ZxBDkomagLq/BcqePgXjsEccK6Fz2D+a7Brgdd13KtXQdVQTbBGrVkd0P1SrNzCmM/iRh2Agk2geLRs2wjzlz8y3N26hrsqnhY+3QH8SFbzCXWX3O4XgKYU/pN6uTtFkWv+UTGOncB0VNdv2MQyo1CFxB9A4yqVJ0tCDe43MAOIo+sxRK6Oxkbfu+7BPuYsMpaY2V1wwIYPz577HF2DpKxq1onAquELifEueaLHM/OizVADJQgj3tPswbHnUtFSrNCpOQnkJK5Lf0OC6lYpEDH80AN5X0YEYy50nY6UyFwH5nC2McN0se0XNp8oDoojVpGuBAqrieUFCD2S/aYwe2v+/2vN9/UM9QisyLRDJgQZxQh+00UlACyNFSzsW4NQ7OC0i+hql8RaNSEfkPWIOdxgpBCpeFw13C4iZVWZ/GMIP82cD5Nyn0J7jG6p1vVLefxqla/PAchOh2yDjtXTCtaNkxJlZ+Uex7i6gf48CwGwCoJsVO7nkojw+8zWxNb9WWRMb5jGvyfojJevcgq23OEEfCXt2+zUj3de1fInLo1qAaimG9oA1m1tG0U2q+/X2UKBqhUDECc0GeuwI+Z7N6ndPrN0y8tyiR4HH2MCvglLrpg/169FeIBQNS26V9FAShFfYQF3zBLI90EEho2noTJnmxigPdzABX2HoAJ0HX0RZjuPeB3SWhYXqLkldInNQM0KABj2sMurPHD7G+s7rINX0e9hSCm1xocQO7VA+lIAGZVB2RnAzsolPuWvhXYRJAjDWZKVOZb2cpWKsofAQYAT6FOtPw9bhAAAAAASUVORK5CYII=\",WU={class:\"w-full flex items-center flex-col\"},VU=[\"src\",\"alt\"],KU={class:\"text-lg font-bold mt-3\"},GU={class:\"mt-12 mb-10 w-full\"},XU={key:0,class:\"text-gray-500 text-center my-20\"},UU={key:1,id:\"wwlogin\",class:\"mt-4 flex items-center justify-center\"},YU={__name:\"QYWX\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=J(!1),n=J(!1),o=J(\"\"),r=J(\"\");ze(()=>{t.value&&it(()=>{l()})});const l=()=>{const a=e.authData.account[0]||{},{corp_id:i,agent_id:s,domain:c}=a;if(!i||!s||!c){n.value=!0;return}const u=encodeURIComponent(`${window.location.origin}${window.location.pathname}?auth_type=3&domain=${c}`);window.WwLogin({id:\"wwlogin\",appid:i,agentid:s,redirect_uri:u})};return Ne(()=>{o.value=window.OPS_AUTH_TYPE,r.value=window.OPS_ERROR}),(a,i)=>{const s=Xo,c=_t,u=qt;return tt(),xt(\"div\",WU,[o.value==e.authData.auth_type&&r.value?(tt(),Vt(s,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:r.value},null,8,[\"message\"])):Ao(\"\",!0),Ee(\"img\",{class:\"mt-6 w-[50px]!\",src:jU,alt:a.$t(\"wecom\")},null,8,VU),Ee(\"div\",KU,nt(a.$t(\"wecom\")),1),Ee(\"div\",GU,[f(c,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:i[0]||(i[0]=d=>t.value=!0)},{default:rt(()=>[wt(nt(a.$t(\"login_btn\")),1)]),_:1})]),f(u,{open:t.value,\"onUpdate:open\":i[1]||(i[1]=d=>t.value=d),onOk:i[2]||(i[2]=d=>t.value=!1),footer:null,bodyStyle:{padding:0},centered:\"\"},{default:rt(()=>[n.value?(tt(),xt(\"div\",XU,nt(a.$t(\"wecom_err\")),1)):(tt(),xt(\"div\",UU))]),_:1},8,[\"open\"])])}}},eh=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},qU={class:\"mt-4\"},ZU={__name:\"LDAP\",props:{authData:{type:Object,default:()=>({})}},emits:[\"switchLoginMode\"],setup(e,{emit:t}){const n=t,{t:o}=hr(),r=J(!1),l=J(\"\"),a=Tu(\"SlideVerifyModalRef\"),i=Rm(\"OPS_userLoginSetting\",[]),s=J({domain:void 0,username:\"\",password:\"\"}),c=J({domain:[{required:!0,message:o(\"login_domain_pl\"),trigger:\"change\"}],username:[{required:!0,message:o(\"login_username_pl\"),trigger:\"change\"}],password:[{required:!0,message:o(\"login_pwd_pl\"),trigger:\"change\"}]});ze(()=>{e.authData.account&&e.authData.account.length==1&&(s.value.domain=e.authData.account[0]?.domain)});const u=m=>{try{const g=i.value.find(y=>y.auth_type==e.authData.auth_type&&y.username==s.value.username&&y.domain==s.value.domain);(g?g.show_verify_code:!1)?a.value.showModal():d()}catch(g){console.log(g)}},d=async()=>{try{r.value=!0;const{c_url:m}=ii(\"history\"),g={...s.value,auth_type:e.authData.auth_type,c_url:m},{data:v={}}=await ns(g,{showMessage:!1});if(p(!1),[\"start_bind_google_auth\",\"bind_google_auth\",\"verify_google_auth\"].includes(v.google_auth_type))n(\"switchLoginMode\",{google_auth_type:v.google_auth_type,cache_token:v.cache_token,google_auth_url:Zt.baseUrlOfImg+v.google_auth_url,google_auth_username:v.google_auth_username,secret:v.secret,show_mfa_days:v.show_mfa_days,...g});else{const y=Jg(v.c_url)?v.c_url:Zt.baseUrl+(v.c_url==\"/\"?\"\":v.c_url);window.location.href=y}}catch(m){l.value=m.message,p(m.show_verify_code)}finally{r.value=!1}},p=m=>{const g=i.value.find(v=>v.auth_type==e.authData.auth_type&&v.username==s.value.username&&v.domain==s.value.domain);g?g.show_verify_code=m:i.value.push({auth_type:e.authData.auth_type,username:s.value.username,show_verify_code:m,domain:s.value.domain})};return Ne(()=>{l.value=\"\"}),(m,g)=>{const v=Xo,y=Ov,b=nn,S=i$,$=Yi,w=Em,C=Bt,_=Mm,x=qi,P=_t,O=_o;return tt(),xt(\"div\",qU,[Be(l)?(tt(),Vt(v,{key:0,class:\"mt-1! mb-4!\",type:\"warning\",\"show-icon\":\"\",message:Be(l)},null,8,[\"message\"])):Ao(\"\",!0),f(O,{name:\"loginForm\",model:Be(s),rules:Be(c),onFinish:u},{default:rt(()=>[f($,{name:\"domain\"},{default:rt(()=>[f(b,{name:\"organization\",autocomplete:\"organization\",value:Be(s).domain,\"onUpdate:value\":g[0]||(g[0]=M=>Be(s).domain=M),placeholder:m.$t(\"login_domain_pl\")},{default:rt(()=>[(tt(!0),xt(Ve,null,Hr(e.authData.account||[],M=>(tt(),Vt(y,{key:M.domain,value:M.domain},{default:rt(()=>[wt(nt(M.domain),1)]),_:2},1032,[\"value\"]))),128))]),_:1},8,[\"value\",\"placeholder\"]),f(S,{class:\"text-[#8b8b8b]! select_icon\"})]),_:1}),f($,{name:\"username\"},{default:rt(()=>[f(C,{class:\"py-1.5!\",name:\"username\",autocomplete:\"username\",value:Be(s).username,\"onUpdate:value\":g[1]||(g[1]=M=>Be(s).username=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_username_pl\")},{prefix:rt(()=>[f(w,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,{name:\"password\"},{default:rt(()=>[f(x,{class:\"py-1.5!\",name:\"password\",autocomplete:\"current-password\",value:Be(s).password,\"onUpdate:value\":g[2]||(g[2]=M=>Be(s).password=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_pwd_pl\")},{prefix:rt(()=>[f(_,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,null,{default:rt(()=>[f(P,{class:\"w-full mt-6!\",\"html-type\":\"submit\",size:\"large\",type:\"primary\",shape:\"round\",loading:Be(r)},{default:rt(()=>[wt(nt(m.$t(\"login_btn\")),1)]),_:1},8,[\"loading\"])]),_:1})]),_:1},8,[\"model\",\"rules\"]),f(Qg,{ref_key:\"SlideVerifyModalRef\",ref:a,onSuccess:d},null,512)])}}},QU=eh(ZU,[[\"__scopeId\",\"data-v-f32c32d7\"]]),JU={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},eY=[\"src\"],tY={class:\"w-full text-lg font-bold mt-3 truncate text-center\"},nY={class:\"mt-12 mb-10 w-full\"},oY={class:\"flex items-center flex-1 overflow-hidden\"},rY=[\"src\"],lY={class:\"flex-1 truncate ml-1.5 mr-2\"},aY={__name:\"SSO\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=J(\"\"),n=J(\"\"),o=r=>{const l=encodeURIComponent(window.location.origin+window.location.pathname+\"?domain=\"+r.domain+\"&auth_type=8\"),a=r.auth_login_url+`?callback=${l}`;window.location.href=a};return Ne(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(r,l)=>{const a=Xo,i=_t,s=Di,c=uo;return tt(),xt(\"div\",JU,[Be(t)==e.authData.auth_type&&Be(n)?(tt(),Vt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:Be(n)},null,8,[\"message\"])):Ao(\"\",!0),e.authData.account.length==1?(tt(),xt(Ve,{key:1},[Ee(\"img\",{class:\"mt-6 w-[50px]!\",src:Be(Zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,eY),Ee(\"div\",tY,nt(e.authData.account[0].domain||\"--\"),1),Ee(\"div\",nY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:l[0]||(l[0]=u=>o(e.authData.account[0]))},{default:rt(()=>[wt(nt(r.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(tt(!0),xt(Ve,{key:2},Hr(e.authData.account,u=>(tt(),xt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ee(\"div\",oY,[Ee(\"img\",{class:\"w-6\",src:Be(Zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,rY),Ee(\"span\",lY,nt(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:rt(()=>[wt(nt(r.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(tt(),Vt(c,{key:3,class:\"mt-4\"}))])}}},iY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},sY=[\"src\"],cY={class:\"w-full text-lg font-bold mt-3 truncate text-center\"},uY={class:\"mt-12 mb-10 w-full\"},dY={class:\"flex items-center flex-1 overflow-hidden\"},fY=[\"src\"],pY={class:\"flex-1 truncate ml-1.5 mr-2\"},mY={__name:\"IDaaS\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=J(\"\"),n=J(\"\"),o=r=>{const l=r.auth_login_url;window.location.href=l};return Ne(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(r,l)=>{const a=Xo,i=_t,s=Di,c=uo;return tt(),xt(\"div\",iY,[t.value==e.authData.auth_type&&n.value?(tt(),Vt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):Ao(\"\",!0),e.authData.account.length==1?(tt(),xt(Ve,{key:1},[Ee(\"img\",{class:\"mt-6 w-[50px]!\",src:Be(Zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,sY),Ee(\"div\",cY,nt(e.authData.account[0].domain||\"--\"),1),Ee(\"div\",uY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:l[0]||(l[0]=u=>o(e.authData.account[0]))},{default:rt(()=>[wt(nt(r.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(tt(!0),xt(Ve,{key:2},Hr(e.authData.account,u=>(tt(),xt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ee(\"div\",dY,[Ee(\"img\",{class:\"w-6\",src:Be(Zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,fY),Ee(\"span\",pY,nt(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:rt(()=>[wt(nt(r.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(tt(),Vt(c,{key:3,class:\"mt-4\"}))])}}},vY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},gY=[\"src\"],hY={class:\"w-full text-lg font-bold mt-3 truncate text-center\"},bY={class:\"mt-12 mb-10 w-full\"},yY={class:\"flex items-center flex-1 overflow-hidden\"},SY=[\"src\"],$Y={class:\"flex-1 truncate ml-1.5 mr-2\"},CY={__name:\"OAuth\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=J(\"\"),n=J(\"\"),o=r=>{const l=r.auth_login_url;window.location.href=l};return Ne(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(r,l)=>{const a=Xo,i=_t,s=Di,c=uo;return tt(),xt(\"div\",vY,[t.value==e.authData.auth_type&&n.value?(tt(),Vt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):Ao(\"\",!0),e.authData.account.length==1?(tt(),xt(Ve,{key:1},[Ee(\"img\",{class:\"mt-6 w-[50px]!\",src:Be(Zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,gY),Ee(\"div\",hY,nt(e.authData.account[0].domain||\"--\"),1),Ee(\"div\",bY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:l[0]||(l[0]=u=>o(e.authData.account[0]))},{default:rt(()=>[wt(nt(r.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(tt(!0),xt(Ve,{key:2},Hr(e.authData.account,u=>(tt(),xt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ee(\"div\",yY,[Ee(\"img\",{class:\"w-6\",src:Be(Zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,SY),Ee(\"span\",$Y,nt(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:rt(()=>[wt(nt(r.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(tt(),Vt(c,{key:3,class:\"mt-4\"}))])}}},xY={class:\"mt-4\"},wY={__name:\"AD\",props:{authData:{type:Object,default:()=>({})}},emits:[\"switchLoginMode\"],setup(e,{emit:t}){const n=t,{t:o}=hr(),r=J(!1),l=J(\"\"),a=Tu(\"SlideVerifyModalRef\"),i=Rm(\"OPS_userLoginSetting\",[]),s=J({domain:void 0,username:\"\",password:\"\"}),c=J({domain:[{required:!0,message:o(\"login_domain_pl\"),trigger:\"change\"}],username:[{required:!0,message:o(\"login_username_pl\"),trigger:\"change\"}],password:[{required:!0,message:o(\"login_pwd_pl\"),trigger:\"change\"}]});ze(()=>{e.authData.account&&e.authData.account.length==1&&(s.value.domain=e.authData.account[0]?.domain)});const u=m=>{try{const g=i.value.find(y=>y.auth_type==e.authData.auth_type&&y.username==s.value.username&&y.domain==s.value.domain);(g?g.show_verify_code:!1)?a.value.showModal():d()}catch(g){console.log(g)}},d=async()=>{try{r.value=!0;const{c_url:m}=ii(\"history\"),g={...s.value,auth_type:e.authData.auth_type,c_url:m},{data:v={}}=await ns(g,{showMessage:!1});if(p(!1),[\"start_bind_google_auth\",\"bind_google_auth\",\"verify_google_auth\"].includes(v.google_auth_type))n(\"switchLoginMode\",{google_auth_type:v.google_auth_type,cache_token:v.cache_token,google_auth_url:Zt.baseUrlOfImg+v.google_auth_url,google_auth_username:v.google_auth_username,secret:v.secret,...g});else{const y=Jg(v.c_url)?v.c_url:Zt.baseUrl+(v.c_url==\"/\"?\"\":v.c_url);window.location.href=y}}catch(m){l.value=m.message,p(m.show_verify_code)}finally{r.value=!1}},p=m=>{const g=i.value.find(v=>v.auth_type==e.authData.auth_type&&v.username==s.value.username&&v.domain==s.value.domain);g?g.show_verify_code=m:i.value.push({auth_type:e.authData.auth_type,username:s.value.username,show_verify_code:m,domain:s.value.domain})};return Ne(()=>{l.value=\"\"}),(m,g)=>{const v=Xo,y=Ov,b=nn,S=i$,$=Yi,w=Em,C=Bt,_=Mm,x=qi,P=_t,O=_o;return tt(),xt(\"div\",xY,[Be(l)?(tt(),Vt(v,{key:0,class:\"mt-1! mb-4!\",type:\"warning\",\"show-icon\":\"\",message:Be(l)},null,8,[\"message\"])):Ao(\"\",!0),f(O,{name:\"loginForm\",model:Be(s),rules:Be(c),onFinish:u},{default:rt(()=>[f($,{name:\"domain\"},{default:rt(()=>[f(b,{name:\"organization\",autocomplete:\"organization\",value:Be(s).domain,\"onUpdate:value\":g[0]||(g[0]=M=>Be(s).domain=M),placeholder:m.$t(\"login_domain_pl\")},{default:rt(()=>[(tt(!0),xt(Ve,null,Hr(e.authData.account||[],M=>(tt(),Vt(y,{key:M.domain,value:M.domain},{default:rt(()=>[wt(nt(M.domain),1)]),_:2},1032,[\"value\"]))),128))]),_:1},8,[\"value\",\"placeholder\"]),f(S,{class:\"text-[#8b8b8b]! select_icon\"})]),_:1}),f($,{name:\"username\"},{default:rt(()=>[f(C,{class:\"py-1.5!\",name:\"username\",autocomplete:\"username\",value:Be(s).username,\"onUpdate:value\":g[1]||(g[1]=M=>Be(s).username=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_username_pl\")},{prefix:rt(()=>[f(w,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,{name:\"password\"},{default:rt(()=>[f(x,{class:\"py-1.5!\",name:\"password\",autocomplete:\"current-password\",value:Be(s).password,\"onUpdate:value\":g[2]||(g[2]=M=>Be(s).password=M),valueModifiers:{trim:!0},placeholder:m.$t(\"login_pwd_pl\")},{prefix:rt(()=>[f(_,{class:\"text-[#8b8b8b]!\"})]),_:1},8,[\"value\",\"placeholder\"])]),_:1}),f($,null,{default:rt(()=>[f(P,{class:\"w-full mt-6!\",\"html-type\":\"submit\",size:\"large\",type:\"primary\",shape:\"round\",loading:Be(r)},{default:rt(()=>[wt(nt(m.$t(\"login_btn\")),1)]),_:1},8,[\"loading\"])]),_:1})]),_:1},8,[\"model\",\"rules\"]),f(Qg,{ref_key:\"SlideVerifyModalRef\",ref:a,onSuccess:d},null,512)])}}},_Y=eh(wY,[[\"__scopeId\",\"data-v-249164ff\"]]),IY={class:\"w-full flex items-center flex-col max-h-[400px] overflow-auto\"},PY=[\"src\"],TY={class:\"w-full text-lg font-bold mt-3 truncate text-center\"},OY={class:\"mt-12 mb-10 w-full\"},EY={class:\"flex items-center flex-1 overflow-hidden\"},MY=[\"src\"],AY={class:\"flex-1 truncate ml-1.5 mr-2\"},DY={__name:\"IAM\",props:{authData:{type:Object,default:()=>({account:[]})}},setup(e){const t=J(\"\"),n=J(\"\"),o=r=>{const l=r.auth_login_url;window.location.href=l};return Ne(()=>{t.value=window.OPS_AUTH_TYPE,n.value=window.OPS_ERROR}),(r,l)=>{const a=Xo,i=_t,s=Di,c=uo;return tt(),xt(\"div\",IY,[t.value==e.authData.auth_type&&n.value?(tt(),Vt(a,{key:0,class:\"mt-1! mb-4! w-full\",type:\"warning\",\"show-icon\":\"\",message:n.value},null,8,[\"message\"])):Ao(\"\",!0),e.authData.account.length==1?(tt(),xt(Ve,{key:1},[Ee(\"img\",{class:\"mt-6 w-[50px]!\",src:Be(Zt).baseUrlOfImg+e.authData.account[0].auth_icon?.url,alt:\"\"},null,8,PY),Ee(\"div\",TY,nt(e.authData.account[0].domain||\"--\"),1),Ee(\"div\",OY,[f(i,{class:\"w-full\",type:\"primary\",size:\"large\",shape:\"round\",onClick:l[0]||(l[0]=u=>o(e.authData.account[0]))},{default:rt(()=>[wt(nt(r.$t(\"login_btn\")),1)]),_:1})])],64)):e.authData.account.length>1?(tt(!0),xt(Ve,{key:2},Hr(e.authData.account,u=>(tt(),xt(\"div\",{key:u.id,class:\"w-full flex items-center justify-between bg-[#f5f6f7] px-3 py-2 my-2 rounded-sm\"},[Ee(\"div\",EY,[Ee(\"img\",{class:\"w-6\",src:Be(Zt).baseUrlOfImg+u.auth_icon?.url,alt:\"\"},null,8,MY),Ee(\"span\",AY,nt(u.domain||\"--\"),1)]),f(i,{class:\"flex! items-center\",size:\"small\",type:\"link\",onClick:d=>o(u)},{default:rt(()=>[wt(nt(r.$t(\"login_btn_sm\")),1),f(s,{class:\"text-xs\"})]),_:1},8,[\"onClick\"])]))),128)):(tt(),Vt(c,{key:3,class:\"mt-4\"}))])}}},RY=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAuNJREFUWEftlm1IU2EUx//PNt3UXcyiL2I1o4wywvygg6AiKKOgIqMyNLNICVJW9Cq5+YaBq30IjfBTWBIkGJgjxgpMCiMUkxRMzDQtZ/NlU6febffeuFdmzb2wL2N+2Pl2z3Puc/7nd87z3EsQYiMhzo+wgDCBMIHVScCUrlCJQHIBpATrnuA4rowVodWDwJhSoZBw5CMHxAcr+b99yVMPAeNpilJCiGZlcuneg3AO9oMZHUZEqhKs6RckySmgja89dEZn52P+eZ3gl2Ych6OzHezEH6/1BCyAUj8AbWyBvb0Va18YYC2+itiqGliKcsGaTRDFxmGdodMvtJk7V0C3Gtxi3ARMpSfucgJaAIf+j5LfLId0fwbY6UksNNaDulvlton9UxusqgvLvpj8a0LFC00NkB0+AXsHT2DcPwFzeqKWA274KoEq0YJ+q4f8dgXY8TFYCk5jTW0DZrUaMEMDwms8AZ6EL7MWnYf98wd3Aua0zVkc4UoBJPnjxwvg6EVwtjlE5xS4hc4/ewJbbbXgi9i5G1TlI9h05RAn7ViOY0Z+gDY0e6QgJmXiMRHHDx2X6rP64vuQHckE/d4A22MtKI0OlvxTHgQilftAlekwV62Go7cL4viNkGxLRszFQszpyrD45pWnAJfHnKYoYEEqCMH6lVGSpGREnc0ThpAZ/o64+hY4+3sh2bodzMgQFppfgn6nR1xdI9ipCSzqmyCKT1g6BXsOgJ00w9H3VWihq12uHIGfgpJq0EY9mJ+DoDQPl2aghp8BtSDKZXLVPTh6vghCeIs+dwmO3m44ujvADH4Da5n2fQr4FW/3QMxlFWSZ2bAW5ggz4CLg2on5PYrZylvCo/y6Go6OdtBtRkSdyYPs6EmhbfxJ8WYBERBvUIBIZXAO9IFESiFWbBFa4M3ECZvAzc6AtU4LLSJULJw9XeDsdGACQn4V8zJD+jHydxcEY211/g8Eo1Jfe4YJhAmECfwF3mAvfJ5LW7EAAAAASUVORK5CYII=\";var Ec={exports:{}};/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */var kY=Ec.exports,XS;function NY(){return XS||(XS=1,(function(e,t){(function(o,r){e.exports=r()})(kY,function(){return(function(){var n={686:(function(l,a,i){i.d(a,{default:function(){return j}});var s=i(279),c=i.n(s),u=i(370),d=i.n(u),p=i(817),m=i.n(p);function g(H){try{return document.execCommand(H)}catch{return!1}}var v=function(K){var G=m()(K);return g(\"cut\"),G},y=v;function b(H){var K=document.documentElement.getAttribute(\"dir\")===\"rtl\",G=document.createElement(\"textarea\");G.style.fontSize=\"12pt\",G.style.border=\"0\",G.style.padding=\"0\",G.style.margin=\"0\",G.style.position=\"absolute\",G.style[K?\"right\":\"left\"]=\"-9999px\";var V=window.pageYOffset||document.documentElement.scrollTop;return G.style.top=\"\".concat(V,\"px\"),G.setAttribute(\"readonly\",\"\"),G.value=H,G}var S=function(K,G){var V=b(K);G.container.appendChild(V);var q=m()(V);return g(\"copy\"),V.remove(),q},$=function(K){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},V=\"\";return typeof K==\"string\"?V=S(K,G):K instanceof HTMLInputElement&&![\"text\",\"search\",\"url\",\"tel\",\"password\"].includes(K?.type)?V=S(K.value,G):(V=m()(K),g(\"copy\")),V},w=$;function C(H){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?C=function(G){return typeof G}:C=function(G){return G&&typeof Symbol==\"function\"&&G.constructor===Symbol&&G!==Symbol.prototype?\"symbol\":typeof G},C(H)}var _=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},G=K.action,V=G===void 0?\"copy\":G,q=K.container,Z=K.target,oe=K.text;if(V!==\"copy\"&&V!==\"cut\")throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');if(Z!==void 0)if(Z&&C(Z)===\"object\"&&Z.nodeType===1){if(V===\"copy\"&&Z.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(V===\"cut\"&&(Z.hasAttribute(\"readonly\")||Z.hasAttribute(\"disabled\")))throw new Error(`Invalid \"target\" attribute. You can't cut text from elements with \"readonly\" or \"disabled\" attributes`)}else throw new Error('Invalid \"target\" value, use a valid Element');if(oe)return w(oe,{container:q});if(Z)return V===\"cut\"?y(Z):w(Z,{container:q})},x=_;function P(H){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?P=function(G){return typeof G}:P=function(G){return G&&typeof Symbol==\"function\"&&G.constructor===Symbol&&G!==Symbol.prototype?\"symbol\":typeof G},P(H)}function O(H,K){if(!(H instanceof K))throw new TypeError(\"Cannot call a class as a function\")}function M(H,K){for(var G=0;G<K.length;G++){var V=K[G];V.enumerable=V.enumerable||!1,V.configurable=!0,\"value\"in V&&(V.writable=!0),Object.defineProperty(H,V.key,V)}}function E(H,K,G){return K&&M(H.prototype,K),G&&M(H,G),H}function R(H,K){if(typeof K!=\"function\"&&K!==null)throw new TypeError(\"Super expression must either be null or a function\");H.prototype=Object.create(K&&K.prototype,{constructor:{value:H,writable:!0,configurable:!0}}),K&&D(H,K)}function D(H,K){return D=Object.setPrototypeOf||function(V,q){return V.__proto__=q,V},D(H,K)}function z(H){var K=B();return function(){var V=L(H),q;if(K){var Z=L(this).constructor;q=Reflect.construct(V,arguments,Z)}else q=V.apply(this,arguments);return T(this,q)}}function T(H,K){return K&&(P(K)===\"object\"||typeof K==\"function\")?K:k(H)}function k(H){if(H===void 0)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return H}function B(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function L(H){return L=Object.setPrototypeOf?Object.getPrototypeOf:function(G){return G.__proto__||Object.getPrototypeOf(G)},L(H)}function N(H,K){var G=\"data-clipboard-\".concat(H);if(K.hasAttribute(G))return K.getAttribute(G)}var F=(function(H){R(G,H);var K=z(G);function G(V,q){var Z;return O(this,G),Z=K.call(this),Z.resolveOptions(q),Z.listenClick(V),Z}return E(G,[{key:\"resolveOptions\",value:function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof q.action==\"function\"?q.action:this.defaultAction,this.target=typeof q.target==\"function\"?q.target:this.defaultTarget,this.text=typeof q.text==\"function\"?q.text:this.defaultText,this.container=P(q.container)===\"object\"?q.container:document.body}},{key:\"listenClick\",value:function(q){var Z=this;this.listener=d()(q,\"click\",function(oe){return Z.onClick(oe)})}},{key:\"onClick\",value:function(q){var Z=q.delegateTarget||q.currentTarget,oe=this.action(Z)||\"copy\",re=x({action:oe,container:this.container,target:this.target(Z),text:this.text(Z)});this.emit(re?\"success\":\"error\",{action:oe,text:re,trigger:Z,clearSelection:function(){Z&&Z.focus(),window.getSelection().removeAllRanges()}})}},{key:\"defaultAction\",value:function(q){return N(\"action\",q)}},{key:\"defaultTarget\",value:function(q){var Z=N(\"target\",q);if(Z)return document.querySelector(Z)}},{key:\"defaultText\",value:function(q){return N(\"text\",q)}},{key:\"destroy\",value:function(){this.listener.destroy()}}],[{key:\"copy\",value:function(q){var Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return w(q,Z)}},{key:\"cut\",value:function(q){return y(q)}},{key:\"isSupported\",value:function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[\"copy\",\"cut\"],Z=typeof q==\"string\"?[q]:q,oe=!!document.queryCommandSupported;return Z.forEach(function(re){oe=oe&&!!document.queryCommandSupported(re)}),oe}}]),G})(c()),j=F}),828:(function(l){var a=9;if(typeof Element<\"u\"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(c,u){for(;c&&c.nodeType!==a;){if(typeof c.matches==\"function\"&&c.matches(u))return c;c=c.parentNode}}l.exports=s}),438:(function(l,a,i){var s=i(828);function c(p,m,g,v,y){var b=d.apply(this,arguments);return p.addEventListener(g,b,y),{destroy:function(){p.removeEventListener(g,b,y)}}}function u(p,m,g,v,y){return typeof p.addEventListener==\"function\"?c.apply(null,arguments):typeof g==\"function\"?c.bind(null,document).apply(null,arguments):(typeof p==\"string\"&&(p=document.querySelectorAll(p)),Array.prototype.map.call(p,function(b){return c(b,m,g,v,y)}))}function d(p,m,g,v){return function(y){y.delegateTarget=s(y.target,m),y.delegateTarget&&v.call(p,y)}}l.exports=u}),879:(function(l,a){a.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},a.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s===\"[object NodeList]\"||s===\"[object HTMLCollection]\")&&\"length\"in i&&(i.length===0||a.node(i[0]))},a.string=function(i){return typeof i==\"string\"||i instanceof String},a.fn=function(i){var s=Object.prototype.toString.call(i);return s===\"[object Function]\"}}),370:(function(l,a,i){var s=i(879),c=i(438);function u(g,v,y){if(!g&&!v&&!y)throw new Error(\"Missing required arguments\");if(!s.string(v))throw new TypeError(\"Second argument must be a String\");if(!s.fn(y))throw new TypeError(\"Third argument must be a Function\");if(s.node(g))return d(g,v,y);if(s.nodeList(g))return p(g,v,y);if(s.string(g))return m(g,v,y);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\")}function d(g,v,y){return g.addEventListener(v,y),{destroy:function(){g.removeEventListener(v,y)}}}function p(g,v,y){return Array.prototype.forEach.call(g,function(b){b.addEventListener(v,y)}),{destroy:function(){Array.prototype.forEach.call(g,function(b){b.removeEventListener(v,y)})}}}function m(g,v,y){return c(document.body,g,v,y)}l.exports=u}),817:(function(l){function a(i){var s;if(i.nodeName===\"SELECT\")i.focus(),s=i.value;else if(i.nodeName===\"INPUT\"||i.nodeName===\"TEXTAREA\"){var c=i.hasAttribute(\"readonly\");c||i.setAttribute(\"readonly\",\"\"),i.select(),i.setSelectionRange(0,i.value.length),c||i.removeAttribute(\"readonly\"),s=i.value}else{i.hasAttribute(\"contenteditable\")&&i.focus();var u=window.getSelection(),d=document.createRange();d.selectNodeContents(i),u.removeAllRanges(),u.addRange(d),s=u.toString()}return s}l.exports=a}),279:(function(l){function a(){}a.prototype={on:function(i,s,c){var u=this.e||(this.e={});return(u[i]||(u[i]=[])).push({fn:s,ctx:c}),this},once:function(i,s,c){var u=this;function d(){u.off(i,d),s.apply(c,arguments)}return d._=s,this.on(i,d,c)},emit:function(i){var s=[].slice.call(arguments,1),c=((this.e||(this.e={}))[i]||[]).slice(),u=0,d=c.length;for(u;u<d;u++)c[u].fn.apply(c[u].ctx,s);return this},off:function(i,s){var c=this.e||(this.e={}),u=c[i],d=[];if(u&&s)for(var p=0,m=u.length;p<m;p++)u[p].fn!==s&&u[p].fn._!==s&&d.push(u[p]);return d.length?c[i]=d:delete c[i],this}},l.exports=a,l.exports.TinyEmitter=a})},o={};function r(l){if(o[l])return o[l].exports;var a=o[l]={exports:{}};return n[l](a,a.exports,r),a.exports}return(function(){r.n=function(l){var a=l&&l.__esModule?function(){return l.default}:function(){return l};return r.d(a,{a}),a}})(),(function(){r.d=function(l,a){for(var i in a)r.o(a,i)&&!r.o(l,i)&&Object.defineProperty(l,i,{enumerable:!0,get:a[i]})}})(),(function(){r.o=function(l,a){return Object.prototype.hasOwnProperty.call(l,a)}})(),r(686)})().default})})(Ec)),Ec.exports}var BY=NY();const LY=Sr(BY),FY=e=>({toClipboard(t,n){return new Promise((o,r)=>{const l=document.createElement(\"button\"),a=new LY(l,{text:()=>t,action:()=>\"copy\",container:n!==void 0?n:document.body});a.on(\"success\",i=>{a.destroy(),o(i)}),a.on(\"error\",i=>{a.destroy(),r(i)}),document.body.appendChild(l),l.click(),document.body.removeChild(l)})}}),zY={class:\"w-[580px] min-h-[390px]\"},HY={class:\"px-5 py-3 border-b border-gray-200 flex items-center\"},jY={class:\"font-bold mr-2 text-[15px]\"},WY={class:\"px-5 pt-6\"},VY={class:\"font-bold\"},KY={class:\"mt-3 mb-1 text-[#333333]\"},GY={class:\"bg-[#f4f7f9] p-3 rounded-sm leading-6\"},XY={class:\"mt-3 mb-1 text-[#333333] flex items-center\"},UY={class:\"mr-1\"},YY={class:\"bg-[#f4f7f9] p-3 rounded-sm leading-6\"},qY={class:\"font-bold\"},ZY={class:\"flex items-center py-3\"},QY={class:\"w-[120px]! h-[120px] p-2 mr-4\"},JY=[\"src\",\"alt\"],eq={class:\"flex-1\"},tq={class:\"text-[#666666] mb-1\"},nq={class:\"text-[#666666] mb-1\"},oq={class:\"mr-1\"},rq={class:\"text-[#333333]\"},lq={class:\"text-[#666666] flex\"},aq={class:\"mr-1\"},iq={class:\"flex-1 text-[#333333]\"},sq={class:\"flex items-center\"},cq={class:\"font-bold mr-2\"},uq={class:\"px-5 py-3 border-t border-gray-200 text-right\"},dq={class:\"text-[12px] text-gray-600 mr-2\"},fq={__name:\"BindMfa\",props:{loginFormData:{type:Object,default:()=>({})}},setup(e){const t=J(void 0),n=J(!1),{t:o}=hr(),r=async()=>{const{toClipboard:a}=FY();try{await a(e.loginFormData.secret),vo.success(o(\"bind_mfa_copy_success\"))}catch{vo.error(o(\"bind_mfa_copy_fail\"))}},l=async()=>{if(!t.value)return vo.error(o(\"bind_mfa_step3_verify_code_pl\"));const a={...e.loginFormData,verify_code:t.value};a.google_auth_url=void 0;try{n.value=!0;const{data:i={}}=await ns(a);window.location.href=Zt.baseUrl+(i.c_url==\"/\"?\"\":i.c_url)}catch(i){console.log(i)}finally{n.value=!1}};return(a,i)=>{const s=Xo,c=$a,u=Bt,d=ca,p=_t;return tt(),xt(\"div\",zY,[Ee(\"header\",HY,[Ee(\"span\",jY,nt(a.$t(\"bindmfa_title\")),1),f(s,{class:\"py-1! text-[12px]! flex-1!\",message:a.$t(\"bind_mfa_title_tip\"),type:\"info\",\"show-icon\":\"\",banner:\"\"},null,8,[\"message\"])]),Ee(\"div\",WY,[f(d,null,{default:rt(()=>[f(c,{color:\"green\"},{default:rt(()=>[Ee(\"div\",VY,nt(a.$t(\"bind_mfa_step1_title\")),1),Ee(\"div\",null,[Ee(\"div\",KY,nt(a.$t(\"bind_mfa_step1_action1_title\")),1),Ee(\"div\",GY,[Ee(\"div\",null,nt(a.$t(\"bind_mfa_step1_action1_content1\")),1),Ee(\"div\",null,nt(a.$t(\"bind_mfa_step1_action1_content2\")),1),Ee(\"div\",null,nt(a.$t(\"bind_mfa_step1_action1_content3\")),1)])]),Ee(\"div\",null,[Ee(\"div\",XY,[Ee(\"div\",UY,nt(a.$t(\"bind_mfa_step1_action2_title\")),1),i[1]||(i[1]=Ee(\"img\",{src:RY,alt:\"\"},null,-1))]),Ee(\"div\",YY,[Ee(\"div\",null,nt(a.$t(\"bind_mfa_step1_action2_content1\")),1),Ee(\"div\",null,nt(a.$t(\"bind_mfa_step1_action2_content2\")),1)])])]),_:1}),f(c,{color:\"green\"},{default:rt(()=>[Ee(\"div\",qY,nt(a.$t(\"bind_mfa_step2_title\")),1),Ee(\"div\",ZY,[Ee(\"div\",QY,[Ee(\"img\",{class:\"w-full h-full\",src:e.loginFormData.google_auth_url,alt:a.$t(\"bind_mfa_step2_qrcode\")},null,8,JY)]),Ee(\"div\",eq,[Ee(\"div\",tq,nt(a.$t(\"bind_mfa_step2_content1\")),1),Ee(\"div\",nq,[Ee(\"span\",oq,nt(a.$t(\"bind_mfa_step2_username\")),1),Ee(\"span\",rq,nt(e.loginFormData.google_auth_username),1)]),Ee(\"div\",lq,[Ee(\"span\",aq,nt(a.$t(\"bind_mfa_step2_secret\")),1),Ee(\"div\",iq,[Ee(\"span\",null,nt(e.loginFormData.secret),1),Ee(\"a\",{type:\"link\",size:\"small\",class:\"font-[12px] ml-2\",onClick:r},nt(a.$t(\"bind_mfa_copy\")),1)])])])])]),_:1}),f(c,{color:\"green\"},{default:rt(()=>[Ee(\"div\",sq,[Ee(\"div\",cq,nt(a.$t(\"bind_mfa_step3_title\")),1),f(u,{class:\"flex-1\",placeholder:a.$t(\"bind_mfa_step3_verify_code_pl\"),value:Be(t),\"onUpdate:value\":i[0]||(i[0]=m=>Lr(t)?t.value=m:null)},null,8,[\"placeholder\",\"value\"])])]),_:1})]),_:1})]),Ee(\"footer\",uq,[Ee(\"span\",dq,nt(a.$t(\"bind_mfa_bottom_tip\")),1),f(p,{type:\"primary\",onClick:l,loading:Be(n)},{default:rt(()=>[wt(nt(a.$t(\"bind_mfa_bottom_bottom\")),1)]),_:1},8,[\"loading\"])])])}}},pq=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABgJJREFUeF7tm3+IVFUUxz9nzNWdHfBH5I6R6BZBrhZaYialBhWFKZaWWkZpYZJEKmRZ/eEf0ZqBa9gPW0wrLPthaYoUEaSGaWUqae5C2SpFO2ulK8zM6qpz475xlpn1zbz35t3ZnWW6MCzMnnu+53znvvvOOfdcocCjqVUNEcWNwAgU1wgMVjAyC+wB4ChCA3BACd8PLJejhTRRCqH8eKsalzjPFIQ7gaF+MJSiQQJ8ERA2DyiXnX502c01RsCRE6pPqDdzFczRv7RpQy19QoPA2uhp6q7qL6dMYPgmoPGk6ltexmJgiQmDPOioaW1jeVU/afEw5yJRXwRE4uopUSxV0NePEXnPVbQQYGk4KK/mqyMvAo5H1YhEgFoUE/IFNjpP2B5IsHBASPQm6ml4JqA5ph5XsNoTSicJC8yrrJC3vMB5IiASVbUIC7wAdLqsYmU4JAvd4romIBJXH6CY6VZxl8oJG8JBecCNDa4IiMTUZ8A9bhQWkcymcIXc62SPIwHd6pfv6K2LlZCTgG7xzDv9xA57QlYCinm3d/L54oWQ/e1gS4D1nhf2ewUqZvmAYqRdnGBLQCSuvimaIMcUq8L2cFButVkdmV/p8BbFSlO4RaVHWNAxbM5YAVZi05NGpIti+wKzJdASb6MqPYHKICASUy91VlZ3qAn0R4/hA5OfTho14Qp5LoXVToDO5yt64Su1zObA8WjS2YNNcDiS/JxLZEpfEoDqcPJz7QVCBoQKQ0nsDH1T9YR2Aprj6mmlWG4Csr456aT1txka/81Pa9WlUF0JQyuTxOi/JoYIiyuD8orW1U5AJK7q/VZyYm2weAvs+9OEmRfruP4KWD4ZKsp86hcawkGxSnUWAVYNL8EOn2otx+dv9Ksl9/zXp4Emwu8IBBiva4wWAZG4WoHCdQqZDbw7EYCiNhySRRYBTVFVL+K/kNmtCID6cIVUi1W3T9Dod0np+d2MAFSAKonE1XQUH3Y2AQvGJ5/lfkH4/CCs2ePOAlN7gIUmzNAE1KB41h18bim3K2DWKJh/c6auN3fBez86W2GYgGUSialNwBRnaGcJtwTYOXHmHEx4zRnDKAGwWROg094RztDOEn4I+O0feGi9M4ZJAgT2awKUM6w7CbcE3D0Mnr89U+fbe9ztAyYJsLYBkwTo0HfOBndkPTYGHh2TlHXrvJZdO9NcSGycgD9a4P533BFQNz2Z9OixYjt84vJM5+NHYJDBgzijK+BEHCbWuSNgd9rxyu6jsGizu3nb5kL/oDtZN1JGCWg7D+NXOcMOC8OaGZlyN7msQe14Esp6OGO4lTBKgAbVe4DeC3KNh0fDvLGZEm7m6XRY7wEmhzTH1L4cLSuesbYcgpqvc09bNRVGDcqUWb0L3nUIhJbcBpOHezYp14QDRgMhjaT3ganr4PTZ7Ljpz39KyukV2rsnfDrb7POPFQgZDIVTzqzcAR/lOFWwy+ediijTR4LOH4wOYZnRZChlXPQMPLERfv3bjLlXXwZvTINQLzP62rXoZMhkOpxu3s4j8MxWMwa/PAnGXWVGV7oWKx3WX0Ri6rDfdjY789b9AHXf+TN87liYPdqfDrvZuv1uYEiGJgmIqhWI/5KYHZCO8HSkl89YNAHuM5Km2aALteHghZKYqaJoNie3HYYXv/JGwQt3wMRqb3O8SGcURa1VYKAsnsuAb3+H9Xvh579ym3nd5aALJrdc6cUdj7Idy+J6usmDkVzmaBLW/wSnWjOl+pTDrBuSzhd62B6MFPJorKNDx07C+3th6y/J/0waBg+OgsH9Cu16Ur/t0Zj1GHTi4ajGSwU/Jg46PFBnfziqFejj8WAZjV3W+urBi7xEFS2tZ3Mcj1/YDEu3QSLFakm3yGgSSr5JynotFnFTtNfnP1cT9f+Nkk5slnSrbPumWMrN0mlvhtJtl28noZQvTKRIKOa3Q8GvzKRIKOlLU+lvDauvOMHSrmqt1a2vSrrg2lw6CSV9cTKdiJK9OmsXSFk1RsUUleAuA+13uoP1y0CPIr88nS2i7Hh9HhiSrSVHt6woONaZ1+f/Az+GaBdGAeCbAAAAAElFTkSuQmCC\",mq={class:\"flex flex-col items-center\"},vq={class:\"text-[#888888] my-4 text-[15px]\"},gq={class:\"text-[#333333] mb-4\"},hq={class:\"text-[15px]\"},bq={class:\"text-[#333333] mb-3\"},yq={class:\"text-[15px]\"},Sq={class:\"mt-4\"},$q={class:\"text-xs text-[#888888] mt-2\"},Cq={__name:\"ValiMfa\",props:{loginFormData:{type:Object,default:()=>({})}},setup(e){const{t}=hr(),n=J(void 0),o=J(!1),r=J(!1),l=async()=>{if(!n.value)return vo.error(t(\"vali_mfa_verify_code_pl\"));const a={...e.loginFormData,verify_code:n.value};e.loginFormData.show_mfa_days&&(a.seven_days_free=o.value?1:0),a.google_auth_url=void 0;try{r.value=!0;const{data:i={}}=await ns(a);window.location.href=Zt.baseUrl+(i.c_url==\"/\"?\"\":i.c_url)}catch(i){console.log(i)}finally{r.value=!1}};return(a,i)=>{const s=Bt,c=Zn,u=_t;return tt(),xt(\"div\",null,[Ee(\"div\",mq,[i[2]||(i[2]=Ee(\"img\",{src:pq,alt:\"\"},null,-1)),Ee(\"div\",vq,nt(a.$t(\"vali_mfa_title\")),1)]),Ee(\"div\",gq,[Ee(\"div\",hq,nt(a.$t(\"vali_mfa_step1_title\")),1),Ee(\"div\",null,nt(a.$t(\"vali_mfa_step1_content\")),1)]),Ee(\"div\",bq,[Ee(\"div\",yq,nt(a.$t(\"vali_mfa_step2_title\")),1),Ee(\"div\",null,nt(a.$t(\"vali_mfa_step2_content\")),1)]),Ee(\"div\",null,[f(s,{value:Be(n),\"onUpdate:value\":i[0]||(i[0]=d=>Lr(n)?n.value=d:null),valueModifiers:{trim:!0},placeholder:a.$t(\"vali_mfa_verify_code_pl\")},null,8,[\"value\",\"placeholder\"]),e.loginFormData.show_mfa_days?(tt(),Vt(c,{key:0,class:\"mt-4!\",checked:Be(o),\"onUpdate:checked\":i[1]||(i[1]=d=>Lr(o)?o.value=d:null)},{default:rt(()=>[wt(nt(a.$t(\"vali_mfa_seven_checked\")),1)]),_:1},8,[\"checked\"])):Ao(\"\",!0)]),Ee(\"div\",Sq,[f(u,{class:\"w-full\",size:\"large\",type:\"primary\",loading:Be(r),onClick:l},{default:rt(()=>[wt(nt(a.$t(\"submit\")),1)]),_:1},8,[\"loading\"]),Ee(\"div\",$q,nt(a.$t(\"vali_mfa_bottom_tip\")),1)])])}}},xq={document_title:\"Login {'|'} Digital Operations and Maintenance Platform\",header_help:\"Help Center\",login_welcome:\"Welcome to Digital Operations Platform\",login_btn:\"Login\",login_btn_sm:\"Login\",login_username_pl:\"Please enter username\",login_pwd_pl:\"Please enter password\",login_domain_pl:\"Please select login domain\",wecom:\"WeCom\",wecom_err:\"Failed to get parameters, please try again or contact administrator\",bindmfa_title:\"Bind MFA Device\",bind_mfa_title_tip:\"MFA binding is enabled. Please complete the following steps to avoid affecting usage.\",bind_mfa_step1_title:\"Step 1: Get Authenticator\",bind_mfa_step1_action1_title:\"Method 1. Install Alibaba Cloud or Huawei Cloud APP\",bind_mfa_step1_action1_content1:\"Steps\",bind_mfa_step1_action1_content2:'Alibaba Cloud: Open Alibaba Cloud APP > Tap the \"+\" in the top right > Select [Virtual MFA]',bind_mfa_step1_action1_content3:'Huawei Cloud: Open Huawei Cloud APP > Tap \"My\" > Select [MFA]',bind_mfa_step1_action2_title:'Method 2. Search WeChat Mini Program \"Tencent Authenticator\"',bind_mfa_step1_action2_content1:\"Steps\",bind_mfa_step1_action2_content2:'Authorize and open the \"Tencent Authenticator\" mini program > Tap [QR Code Activation] > Then scan the QR code displayed in \"Step 2\" below',bind_mfa_step2_title:\"Step 2: Use Alibaba Cloud APP, Huawei Cloud APP, or Tencent Authenticator Mini Program to scan the following QR code\",bind_mfa_step2_qrcode:\"Authentication QR Code\",bind_mfa_step2_content1:\"Can't scan the code? Try account & secret key method\",bind_mfa_step2_username:\"Account: \",bind_mfa_step2_secret:\"Secret: \",bind_mfa_copy:\"Copy\",bind_mfa_copy_success:\"Copied successfully\",bind_mfa_copy_fail:\"Copy failed, please copy manually\",bind_mfa_step3_title:\"Step 3: Enter authorization code\",bind_mfa_step3_verify_code_pl:\"Please enter 6-digit authorization code\",bind_mfa_bottom_tip:\"Have questions? Please contact administrator\",bind_mfa_bottom_bottom:\"Confirm Binding\",vali_mfa_title:\"Account protection is enabled, please follow the prompts to complete the following operations\",vali_mfa_step1_title:\"Step 1: \",vali_mfa_step1_content:\"Please use one of the three methods: Alibaba Cloud APP, Huawei Cloud APP, or WeChat search mini program Tencent Authenticator to get the dynamic verification code\",vali_mfa_step2_title:\"Step 2: \",vali_mfa_step2_content:\"Please enter the 6-digit dynamic code\",vali_mfa_verify_code_pl:\"Please enter 6-digit dynamic code\",vali_mfa_seven_checked:\"No verification required for 7 days\",submit:\"Confirm\",vali_mfa_bottom_tip:\"Lost dynamic code? Please contact administrator to disable two-factor verification before continuing.\"},wq={document_title:\"登录 {'|'} 数字化运维平台\",header_help:\"帮助中心\",login_welcome:\"欢迎登录数字化运维平台\",login_btn:\"立即登录\",login_btn_sm:\"登录\",login_username_pl:\"请输入用户名\",login_pwd_pl:\"请输入密码\",login_domain_pl:\"请选择登录域\",wecom:\"企业微信\",wecom_err:\"获取参数失败，请重试或联系管理员\",bindmfa_title:\"绑定MFA设备\",bind_mfa_title_tip:\"已开启绑定MFA功能，请完成以下操作以免影响使用。\",bind_mfa_step1_title:\"第一步: 获取身份验证器\",bind_mfa_step1_action1_title:\"方法1.安装阿里云、华为云APP\",bind_mfa_step1_action1_content1:\"使用步骤\",bind_mfa_step1_action1_content2:\"阿里云：打开阿里云APP > 点击“右上角+号”> 选择【虚拟MFA】\",bind_mfa_step1_action1_content3:\"华为云：打开华为云APP > 点击“我的”> 选择【MFA】\",bind_mfa_step1_action2_title:\"方法2.微信搜索小程序“腾讯身份验证器”\",bind_mfa_step1_action2_content1:\"使用步骤\",bind_mfa_step1_action2_content2:\"授权打开“腾讯身份验证器”小程序 > 点击【二维码激活】 > 然后扫描下 方“第二步”展示的二维码\",bind_mfa_step2_title:\"第二步: 使用阿里云APP、华为云APP、腾讯身份验证器小程序扫描以下二维码\",bind_mfa_step2_qrcode:\"身份验证二维码\",bind_mfa_step2_content1:\"扫不了码？试试账号&密钥方式获取\",bind_mfa_step2_username:\"账号: \",bind_mfa_step2_secret:\"密钥: \",bind_mfa_copy:\"复制\",bind_mfa_copy_success:\"复制成功\",bind_mfa_copy_fail:\"复制失败,请手动复制\",bind_mfa_step3_title:\"第三步: 输入授权码\",bind_mfa_step3_verify_code_pl:\"请输入6位授权码\",bind_mfa_bottom_tip:\"有疑问？请联系管理员\",bind_mfa_bottom_bottom:\"确认绑定\",vali_mfa_title:\"账号保护已开启,请根据提示完成以下操作\",vali_mfa_step1_title:\"第一步: \",vali_mfa_step1_content:\"请使用阿里云APP、华为云APP、微信搜索小程序腾讯身份验证器三种方式获取动态验证码\",vali_mfa_step2_title:\"第二步: \",vali_mfa_step2_content:\"请输入6位动态码\",vali_mfa_verify_code_pl:\"请输入6位动态码\",vali_mfa_seven_checked:\"7天内免验证\",submit:\"确定\",vali_mfa_bottom_tip:\"遗失动态码?请联系管理员解除双因素验证后继续操作。\"},_q={document_title:\"登入 {'|'} 數位化維運平台\",header_help:\"幫助中心\",login_welcome:\"歡迎登入數位化維運平台\",login_btn:\"立即登入\",login_btn_sm:\"登入\",login_username_pl:\"請輸入使用者名稱\",login_pwd_pl:\"請輸入密碼\",login_domain_pl:\"請選擇登入網域\",wecom:\"企業微信\",wecom_err:\"取得參數失敗，請重試或聯絡管理員\",bindmfa_title:\"綁定MFA設備\",bind_mfa_title_tip:\"已開啟綁定MFA功能，請完成以下操作以免影響使用。 \",bind_mfa_step1_title:\"第一步: 取得驗證器\",bind_mfa_step1_action1_title:\"方法1.安裝阿里雲、華為雲APP\",bind_mfa_step1_action1_content1:\"使用步驟\",bind_mfa_step1_action1_content2:\"阿里雲：開啟阿里雲APP > 點選「右上角+號」> 選擇【虛擬MFA】\",bind_mfa_step1_action1_content3:\"華為雲：開啟華為雲APP > 點選「我的」> 選擇【MFA】\",bind_mfa_step1_action2_title:\"方法2.微信搜尋小程式「騰訊身份驗證器」\",bind_mfa_step1_action2_content1:\"使用步驟\",bind_mfa_step1_action2_content2:\"授權開啟「騰訊身分驗證器」小程式 > 點選【二維碼啟動】 > 然後掃描下 方「第二步驟」展示的二維碼\",bind_mfa_step2_title:\"第二步: 使用阿里雲APP、華為雲APP、騰訊身份驗證器小程式掃描以下二維碼\",bind_mfa_step2_qrcode:\"驗證二維碼\",bind_mfa_step2_content1:\"掃不了碼？試試帳號&密鑰方式取得\",bind_mfa_step2_username:\"帳號: \",bind_mfa_step2_secret:\"金鑰: \",bind_mfa_copy:\"複製\",bind_mfa_copy_success:\"複製成功\",bind_mfa_copy_fail:\"複製失敗,請手動複製\",bind_mfa_step3_title:\"第三步: 輸入授權碼\",bind_mfa_step3_verify_code_pl:\"請輸入6位授權碼\",bind_mfa_bottom_tip:\"有疑問？請聯絡管理員\",bind_mfa_bottom_bottom:\"確認綁定\",vali_mfa_title:\"帳號保護已開啟,請根據提示完成以下操作\",vali_mfa_step1_title:\"第一步: \",vali_mfa_step1_content:\"請使用阿里雲APP、華為雲APP、微信搜尋小程式騰訊身份驗證器三種方式取得動態驗證碼\",vali_mfa_step2_title:\"第二步: \",vali_mfa_step2_content:\"請輸入6位元動態碼\",vali_mfa_verify_code_pl:\"請輸入6位元動態碼\",vali_mfa_seven_checked:\"7天內免驗證\",submit:\"確定\",vali_mfa_bottom_tip:\"遺失動態碼?請聯絡管理員解除雙重驗證後繼續操作。 \"},vI={en:xq,\"zh-CN\":wq,\"zh-TW\":_q},Iq=Object.keys(vI),ks=\"opsany_language\",Pq=\"zh-CN\",US=[{key:\"chinese_simplified\",value:\"zh-CN\"},{key:\"chinese_traditional\",value:\"zh-TW\"},{key:\"english\",value:\"en\"}];function gI(){const e=d$(ks),t=()=>{const o=window.location.pathname;if(o===\"/\")return;const r=[o,o.replace(/\\/$/,\"\"),o+\"/\"];[...new Set(r)].forEach(a=>{a&&a!==\"/\"&&e.remove(ks,{path:a})})},n=I({get(){const o=e.get(ks);return US.find(r=>r.key===o)?.value||Pq},set(o){const r=US.find(a=>a.value===o)?.key;t();const l=new Date;l.setDate(l.getDate()+7),e.set(ks,r,{path:\"/\",expires:l})}});return{locale:n,setLocale:o=>{Iq.includes(o)&&(n.value=o,window.location.reload())}}}const Tq={class:\"h-[50px] bg-white flex justify-between items-center shadow-sm\"},Oq=[\"src\"],Eq={class:\"mr-[100px]\"},Mq={class:\"text-[#666666]! mr-3\",href:\"/docs/\"},Aq={class:\"flex items-center\"},Dq=[\"src\",\"alt\"],Rq={class:\"ml-[20%]\"},kq=[\"src\"],Nq=[\"src\"],Bq={key:0,class:\"px-[30px] py-[30px] mt-[6%] shadow-xl rounded-lg bg-white w-[380px] min-h-[390px] absolute top-[12%] left-[57%]\"},Lq={class:\"text-xl font-bold mb-3 mt-2\"},Fq={key:1},zq={key:1,class:\"shadow-xl rounded-lg bg-white absolute top-[12%] left-[57%]\"},Hq={__name:\"login\",setup(e){const{locale:t,setLocale:n}=gI(),o=J(\"\"),r=J(!1),l=J({}),a=J([{key:\"zh-CN\",title:\"简体中文\",img:uU},{key:\"zh-TW\",title:\"繁體中文\",img:dU},{key:\"en\",title:\"English\",img:fU}]),i=ee([{title:\"密码登录\",key:\"1\",componentKey:HU},{title:\"LDAP\",key:\"2\",componentKey:QU},{title:\"企业微信\",key:\"3\",componentKey:YU},{title:\"OAuth\",key:\"6\",componentKey:CY},{title:\"AD\",key:\"7\",componentKey:_Y},{title:\"SSO\",key:\"8\",componentKey:aY},{title:\"IDaaS\",key:\"9\",componentKey:mY},{title:\"IAM\",key:\"10\",componentKey:DY}]),s=ee([]),c=J(\"1\"),u=async()=>{try{r.value=!0;const{data:g=[]}=await FU({auth_type:\"all\"});g.forEach(b=>{i.value.find(S=>S.key==b.auth_type)&&(b.componentKey=i.value.find(S=>S.key==b.auth_type).componentKey)}),s.value=g,o.value=g[0]&&g[0].title;const y=ii(\"history\").auth_type;if(s.value.find(b=>b.auth_type==y))return;c.value=g[0]?.auth_type||\"1\"}catch(g){console.log(g)}finally{r.value=!1}},d=g=>{l.value=g},p=({key:g})=>{n(g)},m=()=>{d$([\"opsany_language\"]).get(\"opsany_language\")||n(\"zh-CN\")};return Ne(()=>{m();const v=ii(\"history\").auth_type;i.value.find(y=>y.key==v)&&(c.value=v),u()}),(g,v)=>{const y=xa,b=To,S=Ft,$=po,w=cd,C=Ii,_=Dr,x=gl;return tt(),xt(\"div\",{class:\"page-content\",style:Ns({background:\"url(\"+Be(Zt).baseUrlOfImg+\"uploads/login/img/bg_image.png) no-repeat\"})},[Ee(\"header\",Tq,[Ee(\"img\",{class:\"h-[50px] ml-[200px]\",src:Be(Zt).baseUrlOfImg+\"uploads/login/img/bk_login.png\",alt:\"\"},null,8,Oq),Ee(\"div\",Eq,[Ee(\"a\",Mq,nt(g.$t(\"header_help\")),1),f($,null,{overlay:rt(()=>[f(S,{onClick:p},{default:rt(()=>[(tt(!0),xt(Ve,null,Hr(Be(a),P=>(tt(),Vt(b,{key:P.key},{default:rt(()=>[Ee(\"div\",Aq,[Ee(\"img\",{class:\"w-[18px] h-[18px] mr-1\",src:P.img,alt:P.title},null,8,Dq),Ee(\"span\",null,nt(P.title),1)])]),_:2},1024))),128))]),_:1})]),default:rt(()=>[Ee(\"a\",{class:\"text-[#666666]!\",onClick:v[0]||(v[0]=Uf(()=>{},[\"prevent\"]))},[wt(nt(Be(a).find(P=>P.key==Be(t))?.title)+\" \",1),f(y,{class:\"text-xs\"})])]),_:1})])]),Ee(\"div\",null,[Ee(\"div\",Rq,[Ee(\"img\",{class:\"w-[540px] mt-[11%]\",src:Be(Zt).baseUrlOfImg+\"uploads/login/img/home_top_word.png\",alt:\"\"},null,8,kq),Ee(\"img\",{class:\"w-[540px] mt-[30px]\",src:Be(Zt).baseUrlOfImg+\"uploads/login/img/home_page_picture.png\",alt:\"\"},null,8,Nq)]),!Be(l).google_auth_type||[\"verify_google_auth\"].includes(Be(l).google_auth_type)?(tt(),xt(\"div\",Bq,[Be(l).google_auth_type==\"verify_google_auth\"?(tt(),Vt(Cq,{key:0,loginFormData:Be(l)},null,8,[\"loginFormData\"])):(tt(),xt(Ve,{key:1},[Ee(\"div\",Lq,[Be(r)?(tt(),Vt(w,{key:0,active:!0})):(tt(),xt(\"div\",Fq,nt(Be(o)||g.$t(\"login_welcome\")),1))]),f(x,{loading:Be(r),bordered:!1,bodyStyle:{padding:0}},{default:rt(()=>[f(_,{class:\"mt-2\",activeKey:Be(c),\"onUpdate:activeKey\":v[1]||(v[1]=P=>Lr(c)?c.value=P:null),destroyInactiveTabPane:\"\"},{default:rt(()=>[(tt(!0),xt(Ve,null,Hr(Be(s),P=>(tt(),Vt(C,{key:P.auth_type,tab:P.auth_show_name},{default:rt(()=>[(tt(),Vt(uP(P.componentKey),{authData:P,onSwitchLoginMode:d},null,40,[\"authData\"]))]),_:2},1032,[\"tab\"]))),128))]),_:1},8,[\"activeKey\"])]),_:1},8,[\"loading\"])],64))])):[\"start_bind_google_auth\",\"bind_google_auth\"].includes(Be(l).google_auth_type)?(tt(),xt(\"div\",zq,[f(fq,{loginFormData:Be(l)},null,8,[\"loginFormData\"])])):Ao(\"\",!0)])],4)}}},jq=eh(Hq,[[\"__scopeId\",\"data-v-2763c877\"]]),Wq={__name:\"App\",setup(e){const{t}=hr();return bP(t(\"document_title\")),(n,o)=>{const r=ua,l=Nr;return tt(),Vt(l,{theme:{token:{colorPrimary:\"#0ba360\",borderRadius:2,colorText:\"rgba(0, 0, 0, 0.7)\",colorLink:\"#0ba360\",colorLinkHover:\"#34cb88\",colorLinkActive:\"#0ca763\"},components:{Input:{borderRadius:4},Select:{borderRadius:4}}}},{default:rt(()=>[f(r,{class:\"tw-h-full\"},{default:rt(()=>[f(jq)]),_:1})]),_:1})}}};function Vq(){const{locale:e}=gI(),t=sO({legacy:!1,locale:e.value,fallbackLocale:\"zh-CN\",messages:vI});return t.global.locale.value=e.value,t}const th=a$(Wq),Kq=Vq();th.use(cU);th.use(Kq);th.mount(\"#app\");\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/less-sScrWPmR.js",
    "content": "var o={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};export{o as u};\n"
  },
  {
    "path": "paas-ce/paas/login/static/vite-static/lodash-CQd0-CO8.js",
    "content": "function Kr(){this.__data__=[],this.size=0}function $n(n,r){return n===r||n!==n&&r!==r}function an(n,r){for(var e=n.length;e--;)if($n(n[e][0],r))return e;return-1}var Wr=Array.prototype,Yr=Wr.splice;function qr(n){var r=this.__data__,e=an(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Yr.call(r,e,1),--this.size,!0}function Xr(n){var r=this.__data__,e=an(r,n);return e<0?void 0:r[e][1]}function Zr(n){return an(this.__data__,n)>-1}function Jr(n,r){var e=this.__data__,t=an(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}function E(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}E.prototype.clear=Kr;E.prototype.delete=qr;E.prototype.get=Xr;E.prototype.has=Zr;E.prototype.set=Jr;function Qr(){this.__data__=new E,this.size=0}function Vr(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}function kr(n){return this.__data__.get(n)}function ne(n){return this.__data__.has(n)}var hr=typeof global==\"object\"&&global&&global.Object===Object&&global,re=typeof self==\"object\"&&self&&self.Object===Object&&self,S=hr||re||Function(\"return this\")(),O=S.Symbol,br=Object.prototype,ee=br.hasOwnProperty,te=br.toString,Y=O?O.toStringTag:void 0;function ie(n){var r=ee.call(n,Y),e=n[Y];try{n[Y]=void 0;var t=!0}catch{}var i=te.call(n);return t&&(r?n[Y]=e:delete n[Y]),i}var ae=Object.prototype,oe=ae.toString;function fe(n){return oe.call(n)}var ue=\"[object Null]\",se=\"[object Undefined]\",Gn=O?O.toStringTag:void 0;function L(n){return n==null?n===void 0?se:ue:Gn&&Gn in Object(n)?ie(n):fe(n)}function w(n){var r=typeof n;return n!=null&&(r==\"object\"||r==\"function\")}var ce=\"[object AsyncFunction]\",le=\"[object Function]\",ge=\"[object GeneratorFunction]\",pe=\"[object Proxy]\";function yr(n){if(!w(n))return!1;var r=L(n);return r==le||r==ge||r==ce||r==pe}var gn=S[\"__core-js_shared__\"],Bn=(function(){var n=/[^.]+$/.exec(gn&&gn.keys&&gn.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"})();function de(n){return!!Bn&&Bn in n}var he=Function.prototype,be=he.toString;function F(n){if(n!=null){try{return be.call(n)}catch{}try{return n+\"\"}catch{}}return\"\"}var ye=/[\\\\^$.*+?()[\\]{}|]/g,_e=/^\\[object .+?Constructor\\]$/,ve=Function.prototype,Te=Object.prototype,$e=ve.toString,Ae=Te.hasOwnProperty,Oe=RegExp(\"^\"+$e.call(Ae).replace(ye,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function we(n){if(!w(n)||de(n))return!1;var r=yr(n)?Oe:_e;return r.test(F(n))}function me(n,r){return n?.[r]}function R(n,r){var e=me(n,r);return we(e)?e:void 0}var Z=R(S,\"Map\"),J=R(Object,\"create\");function Se(){this.__data__=J?J(null):{},this.size=0}function Pe(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var xe=\"__lodash_hash_undefined__\",Ee=Object.prototype,Ie=Ee.hasOwnProperty;function je(n){var r=this.__data__;if(J){var e=r[n];return e===xe?void 0:e}return Ie.call(r,n)?r[n]:void 0}var Ce=Object.prototype,Le=Ce.hasOwnProperty;function Me(n){var r=this.__data__;return J?r[n]!==void 0:Le.call(r,n)}var Fe=\"__lodash_hash_undefined__\";function Re(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=J&&r===void 0?Fe:r,this}function M(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}M.prototype.clear=Se;M.prototype.delete=Pe;M.prototype.get=je;M.prototype.has=Me;M.prototype.set=Re;function Ne(){this.size=0,this.__data__={hash:new M,map:new(Z||E),string:new M}}function De(n){var r=typeof n;return r==\"string\"||r==\"number\"||r==\"symbol\"||r==\"boolean\"?n!==\"__proto__\":n===null}function on(n,r){var e=n.__data__;return De(r)?e[typeof r==\"string\"?\"string\":\"hash\"]:e.map}function Ge(n){var r=on(this,n).delete(n);return this.size-=r?1:0,r}function Be(n){return on(this,n).get(n)}function Ue(n){return on(this,n).has(n)}function He(n,r){var e=on(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}function I(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}I.prototype.clear=Ne;I.prototype.delete=Ge;I.prototype.get=Be;I.prototype.has=Ue;I.prototype.set=He;var ze=200;function Ke(n,r){var e=this.__data__;if(e instanceof E){var t=e.__data__;if(!Z||t.length<ze-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new I(t)}return e.set(n,r),this.size=e.size,this}function x(n){var r=this.__data__=new E(n);this.size=r.size}x.prototype.clear=Qr;x.prototype.delete=Vr;x.prototype.get=kr;x.prototype.has=ne;x.prototype.set=Ke;var We=\"__lodash_hash_undefined__\";function Ye(n){return this.__data__.set(n,We),this}function qe(n){return this.__data__.has(n)}function G(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new I;++r<e;)this.add(n[r])}G.prototype.add=G.prototype.push=Ye;G.prototype.has=qe;function Xe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function rn(n,r){return n.has(r)}var Ze=1,Je=2;function _r(n,r,e,t,i,a){var o=e&Ze,f=n.length,u=r.length;if(f!=u&&!(o&&u>f))return!1;var s=a.get(n),l=a.get(r);if(s&&l)return s==r&&l==n;var c=-1,g=!0,h=e&Je?new G:void 0;for(a.set(n,r),a.set(r,n);++c<f;){var b=n[c],v=r[c];if(t)var y=o?t(v,b,c,r,n,a):t(b,v,c,n,r,a);if(y!==void 0){if(y)continue;g=!1;break}if(h){if(!Xe(r,function(_,P){if(!rn(h,P)&&(b===_||i(b,_,e,t,a)))return h.push(P)})){g=!1;break}}else if(!(b===v||i(b,v,e,t,a))){g=!1;break}}return a.delete(n),a.delete(r),g}var en=S.Uint8Array;function Qe(n){var r=-1,e=Array(n.size);return n.forEach(function(t,i){e[++r]=[i,t]}),e}function An(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Ve=1,ke=2,nt=\"[object Boolean]\",rt=\"[object Date]\",et=\"[object Error]\",tt=\"[object Map]\",it=\"[object Number]\",at=\"[object RegExp]\",ot=\"[object Set]\",ft=\"[object String]\",ut=\"[object Symbol]\",st=\"[object ArrayBuffer]\",ct=\"[object DataView]\",Un=O?O.prototype:void 0,pn=Un?Un.valueOf:void 0;function lt(n,r,e,t,i,a,o){switch(e){case ct:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case st:return!(n.byteLength!=r.byteLength||!a(new en(n),new en(r)));case nt:case rt:case it:return $n(+n,+r);case et:return n.name==r.name&&n.message==r.message;case at:case ft:return n==r+\"\";case tt:var f=Qe;case ot:var u=t&Ve;if(f||(f=An),n.size!=r.size&&!u)return!1;var s=o.get(n);if(s)return s==r;t|=ke,o.set(n,r);var l=_r(f(n),f(r),t,i,a,o);return o.delete(n),l;case ut:if(pn)return pn.call(n)==pn.call(r)}return!1}function On(n,r){for(var e=-1,t=r.length,i=n.length;++e<t;)n[i+e]=r[e];return n}var $=Array.isArray;function vr(n,r,e){var t=r(n);return $(n)?t:On(t,e(n))}function gt(n,r){for(var e=-1,t=n==null?0:n.length,i=0,a=[];++e<t;){var o=n[e];r(o,e,n)&&(a[i++]=o)}return a}function Tr(){return[]}var pt=Object.prototype,dt=pt.propertyIsEnumerable,Hn=Object.getOwnPropertySymbols,wn=Hn?function(n){return n==null?[]:(n=Object(n),gt(Hn(n),function(r){return dt.call(n,r)}))}:Tr;function ht(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}function m(n){return n!=null&&typeof n==\"object\"}var bt=\"[object Arguments]\";function zn(n){return m(n)&&L(n)==bt}var $r=Object.prototype,yt=$r.hasOwnProperty,_t=$r.propertyIsEnumerable,fn=zn((function(){return arguments})())?zn:function(n){return m(n)&&yt.call(n,\"callee\")&&!_t.call(n,\"callee\")};function vt(){return!1}var Ar=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,Kn=Ar&&typeof module==\"object\"&&module&&!module.nodeType&&module,Tt=Kn&&Kn.exports===Ar,Wn=Tt?S.Buffer:void 0,$t=Wn?Wn.isBuffer:void 0,Q=$t||vt,At=9007199254740991,Ot=/^(?:0|[1-9]\\d*)$/;function mn(n,r){var e=typeof n;return r=r??At,!!r&&(e==\"number\"||e!=\"symbol\"&&Ot.test(n))&&n>-1&&n%1==0&&n<r}var wt=9007199254740991;function Sn(n){return typeof n==\"number\"&&n>-1&&n%1==0&&n<=wt}var mt=\"[object Arguments]\",St=\"[object Array]\",Pt=\"[object Boolean]\",xt=\"[object Date]\",Et=\"[object Error]\",It=\"[object Function]\",jt=\"[object Map]\",Ct=\"[object Number]\",Lt=\"[object Object]\",Mt=\"[object RegExp]\",Ft=\"[object Set]\",Rt=\"[object String]\",Nt=\"[object WeakMap]\",Dt=\"[object ArrayBuffer]\",Gt=\"[object DataView]\",Bt=\"[object Float32Array]\",Ut=\"[object Float64Array]\",Ht=\"[object Int8Array]\",zt=\"[object Int16Array]\",Kt=\"[object Int32Array]\",Wt=\"[object Uint8Array]\",Yt=\"[object Uint8ClampedArray]\",qt=\"[object Uint16Array]\",Xt=\"[object Uint32Array]\",d={};d[Bt]=d[Ut]=d[Ht]=d[zt]=d[Kt]=d[Wt]=d[Yt]=d[qt]=d[Xt]=!0;d[mt]=d[St]=d[Dt]=d[Pt]=d[Gt]=d[xt]=d[Et]=d[It]=d[jt]=d[Ct]=d[Lt]=d[Mt]=d[Ft]=d[Rt]=d[Nt]=!1;function Zt(n){return m(n)&&Sn(n.length)&&!!d[L(n)]}function Pn(n){return function(r){return n(r)}}var Or=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,q=Or&&typeof module==\"object\"&&module&&!module.nodeType&&module,Jt=q&&q.exports===Or,dn=Jt&&hr.process,B=(function(){try{var n=q&&q.require&&q.require(\"util\").types;return n||dn&&dn.binding&&dn.binding(\"util\")}catch{}})(),Yn=B&&B.isTypedArray,xn=Yn?Pn(Yn):Zt,Qt=Object.prototype,Vt=Qt.hasOwnProperty;function wr(n,r){var e=$(n),t=!e&&fn(n),i=!e&&!t&&Q(n),a=!e&&!t&&!i&&xn(n),o=e||t||i||a,f=o?ht(n.length,String):[],u=f.length;for(var s in n)(r||Vt.call(n,s))&&!(o&&(s==\"length\"||i&&(s==\"offset\"||s==\"parent\")||a&&(s==\"buffer\"||s==\"byteLength\"||s==\"byteOffset\")||mn(s,u)))&&f.push(s);return f}var kt=Object.prototype;function un(n){var r=n&&n.constructor,e=typeof r==\"function\"&&r.prototype||kt;return n===e}function mr(n,r){return function(e){return n(r(e))}}var ni=mr(Object.keys,Object),ri=Object.prototype,ei=ri.hasOwnProperty;function Sr(n){if(!un(n))return ni(n);var r=[];for(var e in Object(n))ei.call(n,e)&&e!=\"constructor\"&&r.push(e);return r}function U(n){return n!=null&&Sn(n.length)&&!yr(n)}function H(n){return U(n)?wr(n):Sr(n)}function bn(n){return vr(n,H,wn)}var ti=1,ii=Object.prototype,ai=ii.hasOwnProperty;function oi(n,r,e,t,i,a){var o=e&ti,f=bn(n),u=f.length,s=bn(r),l=s.length;if(u!=l&&!o)return!1;for(var c=u;c--;){var g=f[c];if(!(o?g in r:ai.call(r,g)))return!1}var h=a.get(n),b=a.get(r);if(h&&b)return h==r&&b==n;var v=!0;a.set(n,r),a.set(r,n);for(var y=o;++c<u;){g=f[c];var _=n[g],P=r[g];if(t)var k=o?t(P,_,g,r,n,a):t(_,P,g,n,r,a);if(!(k===void 0?_===P||i(_,P,e,t,a):k)){v=!1;break}y||(y=g==\"constructor\")}if(v&&!y){var N=n.constructor,j=r.constructor;N!=j&&\"constructor\"in n&&\"constructor\"in r&&!(typeof N==\"function\"&&N instanceof N&&typeof j==\"function\"&&j instanceof j)&&(v=!1)}return a.delete(n),a.delete(r),v}var yn=R(S,\"DataView\"),_n=R(S,\"Promise\"),D=R(S,\"Set\"),vn=R(S,\"WeakMap\"),qn=\"[object Map]\",fi=\"[object Object]\",Xn=\"[object Promise]\",Zn=\"[object Set]\",Jn=\"[object WeakMap]\",Qn=\"[object DataView]\",ui=F(yn),si=F(Z),ci=F(_n),li=F(D),gi=F(vn),A=L;(yn&&A(new yn(new ArrayBuffer(1)))!=Qn||Z&&A(new Z)!=qn||_n&&A(_n.resolve())!=Xn||D&&A(new D)!=Zn||vn&&A(new vn)!=Jn)&&(A=function(n){var r=L(n),e=r==fi?n.constructor:void 0,t=e?F(e):\"\";if(t)switch(t){case ui:return Qn;case si:return qn;case ci:return Xn;case li:return Zn;case gi:return Jn}return r});var pi=1,Vn=\"[object Arguments]\",kn=\"[object Array]\",nn=\"[object Object]\",di=Object.prototype,nr=di.hasOwnProperty;function hi(n,r,e,t,i,a){var o=$(n),f=$(r),u=o?kn:A(n),s=f?kn:A(r);u=u==Vn?nn:u,s=s==Vn?nn:s;var l=u==nn,c=s==nn,g=u==s;if(g&&Q(n)){if(!Q(r))return!1;o=!0,l=!1}if(g&&!l)return a||(a=new x),o||xn(n)?_r(n,r,e,t,i,a):lt(n,r,u,e,t,i,a);if(!(e&pi)){var h=l&&nr.call(n,\"__wrapped__\"),b=c&&nr.call(r,\"__wrapped__\");if(h||b){var v=h?n.value():n,y=b?r.value():r;return a||(a=new x),i(v,y,e,t,a)}}return g?(a||(a=new x),oi(n,r,e,t,i,a)):!1}function sn(n,r,e,t,i){return n===r?!0:n==null||r==null||!m(n)&&!m(r)?n!==n&&r!==r:hi(n,r,e,t,sn,i)}function Ef(n,r){return sn(n,r)}var bi=\"[object Symbol]\";function cn(n){return typeof n==\"symbol\"||m(n)&&L(n)==bi}function En(n,r){for(var e=-1,t=n==null?0:n.length,i=Array(t);++e<t;)i[e]=r(n[e],e,n);return i}var rr=O?O.prototype:void 0,er=rr?rr.toString:void 0;function Pr(n){if(typeof n==\"string\")return n;if($(n))return En(n,Pr)+\"\";if(cn(n))return er?er.call(n):\"\";var r=n+\"\";return r==\"0\"&&1/n==-1/0?\"-0\":r}var yi=/\\s/;function _i(n){for(var r=n.length;r--&&yi.test(n.charAt(r)););return r}var vi=/^\\s+/;function Ti(n){return n&&n.slice(0,_i(n)+1).replace(vi,\"\")}var tr=NaN,$i=/^[-+]0x[0-9a-f]+$/i,Ai=/^0b[01]+$/i,Oi=/^0o[0-7]+$/i,wi=parseInt;function Tn(n){if(typeof n==\"number\")return n;if(cn(n))return tr;if(w(n)){var r=typeof n.valueOf==\"function\"?n.valueOf():n;n=w(r)?r+\"\":r}if(typeof n!=\"string\")return n===0?n:+n;n=Ti(n);var e=Ai.test(n);return e||Oi.test(n)?wi(n.slice(2),e?2:8):$i.test(n)?tr:+n}var ir=1/0,mi=17976931348623157e292;function Si(n){if(!n)return n===0?n:0;if(n=Tn(n),n===ir||n===-ir){var r=n<0?-1:1;return r*mi}return n===n?n:0}function Pi(n){var r=Si(n),e=r%1;return r===r?e?r-e:r:0}function In(n){return n}var ar=Object.create,xi=(function(){function n(){}return function(r){if(!w(r))return{};if(ar)return ar(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}})();function Ei(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}function Ii(){}function ji(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Ci=800,Li=16,Mi=Date.now;function Fi(n){var r=0,e=0;return function(){var t=Mi(),i=Li-(t-e);if(e=t,i>0){if(++r>=Ci)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}function Ri(n){return function(){return n}}var tn=(function(){try{var n=R(Object,\"defineProperty\");return n({},\"\",{}),n}catch{}})(),Ni=tn?function(n,r){return tn(n,\"toString\",{configurable:!0,enumerable:!1,value:Ri(r),writable:!0})}:In,xr=Fi(Ni);function Di(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Er(n,r,e,t){for(var i=n.length,a=e+-1;++a<i;)if(r(n[a],a,n))return a;return-1}function Gi(n){return n!==n}function Bi(n,r,e){for(var t=e-1,i=n.length;++t<i;)if(n[t]===r)return t;return-1}function Ui(n,r,e){return r===r?Bi(n,r,e):Er(n,Gi,e)}function Ir(n,r){var e=n==null?0:n.length;return!!e&&Ui(n,r,0)>-1}function jr(n,r,e){r==\"__proto__\"&&tn?tn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Hi=Object.prototype,zi=Hi.hasOwnProperty;function jn(n,r,e){var t=n[r];(!(zi.call(n,r)&&$n(t,e))||e===void 0&&!(r in n))&&jr(n,r,e)}function V(n,r,e,t){var i=!e;e||(e={});for(var a=-1,o=r.length;++a<o;){var f=r[a],u=void 0;u===void 0&&(u=n[f]),i?jr(e,f,u):jn(e,f,u)}return e}var or=Math.max;function Cr(n,r,e){return r=or(r===void 0?n.length-1:r,0),function(){for(var t=arguments,i=-1,a=or(t.length-r,0),o=Array(a);++i<a;)o[i]=t[r+i];i=-1;for(var f=Array(r+1);++i<r;)f[i]=t[i];return f[r]=e(o),Ei(n,this,f)}}function Ki(n,r){return xr(Cr(n,r,In),n+\"\")}function Wi(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Yi=Object.prototype,qi=Yi.hasOwnProperty;function Xi(n){if(!w(n))return Wi(n);var r=un(n),e=[];for(var t in n)t==\"constructor\"&&(r||!qi.call(n,t))||e.push(t);return e}function Cn(n){return U(n)?wr(n,!0):Xi(n)}var Zi=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Ji=/^\\w*$/;function Ln(n,r){if($(n))return!1;var e=typeof n;return e==\"number\"||e==\"symbol\"||e==\"boolean\"||n==null||cn(n)?!0:Ji.test(n)||!Zi.test(n)||r!=null&&n in Object(r)}var Qi=\"Expected a function\";function Mn(n,r){if(typeof n!=\"function\"||r!=null&&typeof r!=\"function\")throw new TypeError(Qi);var e=function(){var t=arguments,i=r?r.apply(this,t):t[0],a=e.cache;if(a.has(i))return a.get(i);var o=n.apply(this,t);return e.cache=a.set(i,o)||a,o};return e.cache=new(Mn.Cache||I),e}Mn.Cache=I;var Vi=500;function ki(n){var r=Mn(n,function(t){return e.size===Vi&&e.clear(),t}),e=r.cache;return r}var na=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,ra=/\\\\(\\\\)?/g,ea=ki(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(\"\"),n.replace(na,function(e,t,i,a){r.push(i?a.replace(ra,\"$1\"):t||e)}),r});function ta(n){return n==null?\"\":Pr(n)}function z(n,r){return $(n)?n:Ln(n,r)?[n]:ea(ta(n))}function K(n){if(typeof n==\"string\"||cn(n))return n;var r=n+\"\";return r==\"0\"&&1/n==-1/0?\"-0\":r}function ln(n,r){r=z(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[K(r[e++])];return e&&e==t?n:void 0}function ia(n,r,e){var t=n==null?void 0:ln(n,r);return t===void 0?e:t}var fr=O?O.isConcatSpreadable:void 0;function aa(n){return $(n)||fn(n)||!!(fr&&n&&n[fr])}function oa(n,r,e,t,i){var a=-1,o=n.length;for(e||(e=aa),i||(i=[]);++a<o;){var f=n[a];e(f)?On(i,f):i[i.length]=f}return i}function fa(n){var r=n==null?0:n.length;return r?oa(n):[]}function Lr(n){return xr(Cr(n,void 0,fa),n+\"\")}var Fn=mr(Object.getPrototypeOf,Object),ua=\"[object Object]\",sa=Function.prototype,ca=Object.prototype,Mr=sa.toString,la=ca.hasOwnProperty,ga=Mr.call(Object);function pa(n){if(!m(n)||L(n)!=ua)return!1;var r=Fn(n);if(r===null)return!0;var e=la.call(r,\"constructor\")&&r.constructor;return typeof e==\"function\"&&e instanceof e&&Mr.call(e)==ga}function da(n,r,e){var t=-1,i=n.length;r<0&&(r=-r>i?0:i+r),e=e>i?i:e,e<0&&(e+=i),i=r>e?0:e-r>>>0,r>>>=0;for(var a=Array(i);++t<i;)a[t]=n[t+r];return a}function ha(n,r){return n&&V(r,H(r),n)}function ba(n,r){return n&&V(r,Cn(r),n)}var Fr=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,ur=Fr&&typeof module==\"object\"&&module&&!module.nodeType&&module,ya=ur&&ur.exports===Fr,sr=ya?S.Buffer:void 0,cr=sr?sr.allocUnsafe:void 0;function _a(n,r){if(r)return n.slice();var e=n.length,t=cr?cr(e):new n.constructor(e);return n.copy(t),t}function va(n,r){return V(n,wn(n),r)}var Ta=Object.getOwnPropertySymbols,Rr=Ta?function(n){for(var r=[];n;)On(r,wn(n)),n=Fn(n);return r}:Tr;function $a(n,r){return V(n,Rr(n),r)}function Nr(n){return vr(n,Cn,Rr)}var Aa=Object.prototype,Oa=Aa.hasOwnProperty;function wa(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]==\"string\"&&Oa.call(n,\"index\")&&(e.index=n.index,e.input=n.input),e}function Rn(n){var r=new n.constructor(n.byteLength);return new en(r).set(new en(n)),r}function ma(n,r){var e=r?Rn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Sa=/\\w*$/;function Pa(n){var r=new n.constructor(n.source,Sa.exec(n));return r.lastIndex=n.lastIndex,r}var lr=O?O.prototype:void 0,gr=lr?lr.valueOf:void 0;function xa(n){return gr?Object(gr.call(n)):{}}function Ea(n,r){var e=r?Rn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ia=\"[object Boolean]\",ja=\"[object Date]\",Ca=\"[object Map]\",La=\"[object Number]\",Ma=\"[object RegExp]\",Fa=\"[object Set]\",Ra=\"[object String]\",Na=\"[object Symbol]\",Da=\"[object ArrayBuffer]\",Ga=\"[object DataView]\",Ba=\"[object Float32Array]\",Ua=\"[object Float64Array]\",Ha=\"[object Int8Array]\",za=\"[object Int16Array]\",Ka=\"[object Int32Array]\",Wa=\"[object Uint8Array]\",Ya=\"[object Uint8ClampedArray]\",qa=\"[object Uint16Array]\",Xa=\"[object Uint32Array]\";function Za(n,r,e){var t=n.constructor;switch(r){case Da:return Rn(n);case Ia:case ja:return new t(+n);case Ga:return ma(n,e);case Ba:case Ua:case Ha:case za:case Ka:case Wa:case Ya:case qa:case Xa:return Ea(n,e);case Ca:return new t;case La:case Ra:return new t(n);case Ma:return Pa(n);case Fa:return new t;case Na:return xa(n)}}function Ja(n){return typeof n.constructor==\"function\"&&!un(n)?xi(Fn(n)):{}}var Qa=\"[object Map]\";function Va(n){return m(n)&&A(n)==Qa}var pr=B&&B.isMap,ka=pr?Pn(pr):Va,no=\"[object Set]\";function ro(n){return m(n)&&A(n)==no}var dr=B&&B.isSet,eo=dr?Pn(dr):ro,to=1,io=2,ao=4,Dr=\"[object Arguments]\",oo=\"[object Array]\",fo=\"[object Boolean]\",uo=\"[object Date]\",so=\"[object Error]\",Gr=\"[object Function]\",co=\"[object GeneratorFunction]\",lo=\"[object Map]\",go=\"[object Number]\",Br=\"[object Object]\",po=\"[object RegExp]\",ho=\"[object Set]\",bo=\"[object String]\",yo=\"[object Symbol]\",_o=\"[object WeakMap]\",vo=\"[object ArrayBuffer]\",To=\"[object DataView]\",$o=\"[object Float32Array]\",Ao=\"[object Float64Array]\",Oo=\"[object Int8Array]\",wo=\"[object Int16Array]\",mo=\"[object Int32Array]\",So=\"[object Uint8Array]\",Po=\"[object Uint8ClampedArray]\",xo=\"[object Uint16Array]\",Eo=\"[object Uint32Array]\",p={};p[Dr]=p[oo]=p[vo]=p[To]=p[fo]=p[uo]=p[$o]=p[Ao]=p[Oo]=p[wo]=p[mo]=p[lo]=p[go]=p[Br]=p[po]=p[ho]=p[bo]=p[yo]=p[So]=p[Po]=p[xo]=p[Eo]=!0;p[so]=p[Gr]=p[_o]=!1;function X(n,r,e,t,i,a){var o,f=r&to,u=r&io,s=r&ao;if(e&&(o=i?e(n,t,i,a):e(n)),o!==void 0)return o;if(!w(n))return n;var l=$(n);if(l){if(o=wa(n),!f)return ji(n,o)}else{var c=A(n),g=c==Gr||c==co;if(Q(n))return _a(n,f);if(c==Br||c==Dr||g&&!i){if(o=u||g?{}:Ja(n),!f)return u?$a(n,ba(o,n)):va(n,ha(o,n))}else{if(!p[c])return i?n:{};o=Za(n,c,f)}}a||(a=new x);var h=a.get(n);if(h)return h;a.set(n,o),eo(n)?n.forEach(function(y){o.add(X(y,r,e,y,n,a))}):ka(n)&&n.forEach(function(y,_){o.set(_,X(y,r,e,_,n,a))});var b=s?u?Nr:bn:u?Cn:H,v=l?void 0:b(n);return Di(v||n,function(y,_){v&&(_=y,y=n[_]),jn(o,_,X(y,r,e,_,n,a))}),o}var Io=1,jo=4;function If(n){return X(n,Io|jo)}var Co=1,Lo=2;function Mo(n,r,e,t){var i=e.length,a=i;if(n==null)return!a;for(n=Object(n);i--;){var o=e[i];if(o[2]?o[1]!==n[o[0]]:!(o[0]in n))return!1}for(;++i<a;){o=e[i];var f=o[0],u=n[f],s=o[1];if(o[2]){if(u===void 0&&!(f in n))return!1}else{var l=new x,c;if(!(c===void 0?sn(s,u,Co|Lo,t,l):c))return!1}}return!0}function Ur(n){return n===n&&!w(n)}function Fo(n){for(var r=H(n),e=r.length;e--;){var t=r[e],i=n[t];r[e]=[t,i,Ur(i)]}return r}function Hr(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Ro(n){var r=Fo(n);return r.length==1&&r[0][2]?Hr(r[0][0],r[0][1]):function(e){return e===n||Mo(e,n,r)}}function No(n,r){return n!=null&&r in Object(n)}function Do(n,r,e){r=z(r,n);for(var t=-1,i=r.length,a=!1;++t<i;){var o=K(r[t]);if(!(a=n!=null&&e(n,o)))break;n=n[o]}return a||++t!=i?a:(i=n==null?0:n.length,!!i&&Sn(i)&&mn(o,i)&&($(n)||fn(n)))}function zr(n,r){return n!=null&&Do(n,r,No)}var Go=1,Bo=2;function Uo(n,r){return Ln(n)&&Ur(r)?Hr(K(n),r):function(e){var t=ia(e,n);return t===void 0&&t===r?zr(e,n):sn(r,t,Go|Bo)}}function Ho(n){return function(r){return r?.[n]}}function zo(n){return function(r){return ln(r,n)}}function Ko(n){return Ln(n)?Ho(K(n)):zo(n)}function Nn(n){return typeof n==\"function\"?n:n==null?In:typeof n==\"object\"?$(n)?Uo(n[0],n[1]):Ro(n):Ko(n)}function Wo(n,r,e,t){for(var i=-1,a=n==null?0:n.length;++i<a;){var o=n[i];r(t,o,e(o),n)}return t}function Yo(n){return function(r,e,t){for(var i=-1,a=Object(r),o=t(r),f=o.length;f--;){var u=o[++i];if(e(a[u],u,a)===!1)break}return r}}var qo=Yo();function Xo(n,r){return n&&qo(n,r,H)}function Zo(n,r){return function(e,t){if(e==null)return e;if(!U(e))return n(e,t);for(var i=e.length,a=-1,o=Object(e);++a<i&&t(o[a],a,o)!==!1;);return e}}var Jo=Zo(Xo);function Qo(n,r,e,t){return Jo(n,function(i,a,o){r(t,i,e(i),o)}),t}function Vo(n,r){return function(e,t){var i=$(e)?Wo:Qo,a=r?r():{};return i(e,n,Nn(t),a)}}var hn=function(){return S.Date.now()},ko=\"Expected a function\",nf=Math.max,rf=Math.min;function jf(n,r,e){var t,i,a,o,f,u,s=0,l=!1,c=!1,g=!0;if(typeof n!=\"function\")throw new TypeError(ko);r=Tn(r)||0,w(e)&&(l=!!e.leading,c=\"maxWait\"in e,a=c?nf(Tn(e.maxWait)||0,r):a,g=\"trailing\"in e?!!e.trailing:g);function h(T){var C=t,W=i;return t=i=void 0,s=T,o=n.apply(W,C),o}function b(T){return s=T,f=setTimeout(_,r),l?h(T):o}function v(T){var C=T-u,W=T-s,Dn=r-C;return c?rf(Dn,a-W):Dn}function y(T){var C=T-u,W=T-s;return u===void 0||C>=r||C<0||c&&W>=a}function _(){var T=hn();if(y(T))return P(T);f=setTimeout(_,v(T))}function P(T){return f=void 0,g&&t?h(T):(t=i=void 0,o)}function k(){f!==void 0&&clearTimeout(f),s=0,t=u=i=f=void 0}function N(){return f===void 0?o:P(hn())}function j(){var T=hn(),C=y(T);if(t=arguments,i=this,u=T,C){if(f===void 0)return b(u);if(c)return clearTimeout(f),f=setTimeout(_,r),h(u)}return f===void 0&&(f=setTimeout(_,r)),o}return j.cancel=k,j.flush=N,j}function ef(n){return m(n)&&U(n)}function tf(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function af(n){return function(r,e,t){var i=Object(r);if(!U(r)){var a=Nn(e);r=H(r),e=function(f){return a(i[f],f,i)}}var o=n(r,e,t);return o>-1?i[a?r[o]:o]:void 0}}var of=Math.max;function ff(n,r,e){var t=n==null?0:n.length;if(!t)return-1;var i=e==null?0:Pi(e);return i<0&&(i=of(t+i,0)),Er(n,Nn(r),i)}var Cf=af(ff);function Lf(n){for(var r=-1,e=n==null?0:n.length,t={};++r<e;){var i=n[r];t[i[0]]=i[1]}return t}var uf=Math.min;function sf(n,r,e){for(var t=Ir,i=n[0].length,a=n.length,o=a,f=Array(a),u=1/0,s=[];o--;){var l=n[o];u=uf(l.length,u),f[o]=i>=120&&l.length>=120?new G(o&&l):void 0}l=n[0];var c=-1,g=f[0];n:for(;++c<i&&s.length<u;){var h=l[c],b=h;if(h=h!==0?h:0,!(g?rn(g,b):t(s,b))){for(o=a;--o;){var v=f[o];if(!(v?rn(v,b):t(n[o],b)))continue n}g&&g.push(b),s.push(h)}}return s}function cf(n){return ef(n)?n:[]}var Mf=Ki(function(n){var r=En(n,cf);return r.length&&r[0]===n[0]?sf(r):[]});function lf(n,r){return r.length<2?n:ln(n,da(r,0,-1))}var gf=\"[object Map]\",pf=\"[object Set]\",df=Object.prototype,hf=df.hasOwnProperty;function Ff(n){if(n==null)return!0;if(U(n)&&($(n)||typeof n==\"string\"||typeof n.splice==\"function\"||Q(n)||xn(n)||fn(n)))return!n.length;var r=A(n);if(r==gf||r==pf)return!n.size;if(un(n))return!Sr(n).length;for(var e in n)if(hf.call(n,e))return!1;return!0}var bf=\"[object Number]\";function Rf(n){return typeof n==\"number\"||m(n)&&L(n)==bf}function yf(n,r){return r=z(r,n),n=lf(n,r),n==null||delete n[K(tf(r))]}function _f(n){return pa(n)?void 0:n}var vf=1,Tf=2,$f=4,Nf=Lr(function(n,r){var e={};if(n==null)return e;var t=!1;r=En(r,function(a){return a=z(a,n),t||(t=a.length>1),a}),V(n,Nr(n),e),t&&(e=X(e,vf|Tf|$f,_f));for(var i=r.length;i--;)yf(e,r[i]);return e});function Af(n,r,e,t){if(!w(n))return n;r=z(r,n);for(var i=-1,a=r.length,o=a-1,f=n;f!=null&&++i<a;){var u=K(r[i]),s=e;if(u===\"__proto__\"||u===\"constructor\"||u===\"prototype\")return n;if(i!=o){var l=f[u];s=void 0,s===void 0&&(s=w(l)?l:mn(r[i+1])?[]:{})}jn(f,u,s),f=f[u]}return n}function Of(n,r,e){for(var t=-1,i=r.length,a={};++t<i;){var o=r[t],f=ln(n,o);e(f,o)&&Af(a,z(o,n),f)}return a}var Df=Vo(function(n,r,e){n[e?0:1].push(r)},function(){return[[],[]]});function wf(n,r){return Of(n,r,function(e,t){return zr(n,t)})}var Gf=Lr(function(n,r){return n==null?{}:wf(n,r)}),mf=1/0,Sf=D&&1/An(new D([,-0]))[1]==mf?function(n){return new D(n)}:Ii,Pf=200;function xf(n,r,e){var t=-1,i=Ir,a=n.length,o=!0,f=[],u=f;if(a>=Pf){var s=Sf(n);if(s)return An(s);o=!1,i=rn,u=new G}else u=f;n:for(;++t<a;){var l=n[t],c=l;if(l=l!==0?l:0,o&&c===c){for(var g=u.length;g--;)if(u[g]===c)continue n;f.push(l)}else i(u,c,e)||(u!==f&&u.push(c),f.push(l))}return f}function Bf(n){return n&&n.length?xf(n):[]}export{Ff as a,pa as b,If as c,jf as d,Mf as e,Cf as f,Rf as g,Lf as h,Ef as i,Df as j,Nf as o,Gf as p,Bf as u};\n"
  },
  {
    "path": "paas-ce/paas/login/templates/401.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>{% trans '未登录(401页)' %}</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-login-page\">\n            <img src=\"/static/img/error/401.png\" />\n            <h1 style=\"margin-top: 0\">{% trans '您需要登录' %}</h1>\n            <a href=\"{{LOGOUT_URL}}\" style=\"cursor: pointer\">{% trans '立即登录' %}</a>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/403.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>{% trans '您没有访问权限(403页)' %}</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-login-page\">\n            <img src=\"/static/img/error/403.png\" />\n            <h1 style=\"margin-top: 0\">{% trans '您没有访问权限，请联系系统管理员添加' %}</h1>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/404.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>{% trans '页面找不到（404页）' %}</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-500-page\">\n            <img src=\"/static/img/error/404.png\" />\n            <h1 style=\"margin-top: 0\">{% trans '页面找不到了' %}</h1>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/500.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>{% trans '系统异常(500页)' %}</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-500-page\">\n            <img src=\"/static/img/error/500.png\" />\n            <h1 style=\"margin-top: 0\">{% trans '系统出现异常' %}</h1>\n            <p>{% trans '努力恢复中，请稍后再试......' %}</p>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/50x.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>{% trans '服务故障，努力修复中...' %}</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <div class=\"king-exception-box king-500-page\" style=\"top: 50%\">\n            <img src=\"/static/img/error/500.png\" />\n            <h1 style=\"margin-top: 0\">{% trans '服务故障，努力修复中...' %}</h1>\n            <p>{% trans '服务出现故障，我们正在紧急修复，给您带来不便，敬请谅解。' %}</p>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/bkaccount/base.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html>\n<head>\n    <script type=\"text/javascript\">\n      var _speedMark = new Date();\n      //在js中使用site_url,则这个javascript片段一定要保留\n      var site_url = \"{{SITE_URL}}\";            // app的url前缀,在ajax调用的时候，应该加上该前缀\n    </script>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n    <title>{% trans '用户管理 | 数字化运维平台' %}</title>\n    <meta name=\"keywords\" content=\"{% trans 'OpsAny' %}\" />\n    <meta name=\"description\" content=\"{% trans '，OpsAny' %}\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />\n\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"{{STATIC_URL}}favicon.ico\">\n\n    <!-- bootstrap CSS 公共样式 -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}assets/bootstrap-3.1.1/css/bootstrap.min.css\">\n    <!-- 图标 CSS 公共样式 -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}assets/bk-icon-2.0/iconfont.css\">\n    <!-- select2 插件 -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}assets/select2-3.5.2/select2.css\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}assets/bkDialog-1.0/css/ui-dialog.css\">\n    <!-- 顶部导航css 私有样式 -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}css/layout_head.{{CSS_SUFFIX}}\">\n    <!-- base 基本样式 -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}css/base.{{CSS_SUFFIX}}?v={{STATIC_VERSION}}\">\n    <style>\n      html,body{\n          height: 100%;\n      }\n    </style>\n</head>\n\n<body>\n    <!-- 头部横向导航 start -->\n    <div class=\"head\" id=\"header\">\n\n        <div class=\"head_box\">\n            <div class=\"inner wrp\">\n                <span class=\"logo_bk\">\n                    <a title=\"{% trans '蓝鲸智云工作台' %}\" href=\"/\">\n                      <img src=\"{{STATIC_URL}}{% trans 'img/logo/logo_user_01.png' %}\"/>\n                    </a>\n                    <a title=\"{% trans '蓝鲸智云用户管理' %}\" href=\"{{SITE_URL}}accounts/user/list/\">\n                      <img src=\"{{STATIC_URL}}{% trans 'img/logo/logo_user_02.png' %}\"/>\n                    </a>\n                </span>\n                <input type='hidden' name='csrfmiddlewaretoken' value='{{csrf_token}}'>\n                <div class=\"account\">\n                    <div class=\"account_meta account_info account_meta_primary\">\n                          <a href=\"###\" class=\"nickname\">\n                          {% if request.user %}\n                              {{ request.user.username }}\n                          {% else %}\n                              ''\n                          {% endif %}\n                          </a>\n                          <a href=\"###\">\n                            {% if request.user.is_superuser %}\n                              <img src=\"{{STATIC_URL}}img/getadminheadimg.jpg\" class=\"avatar\">\n                            {% else %}\n                              <img src=\"{{STATIC_URL}}img/getheadimg.jpg\" class=\"avatar\">\n                            {%  endif %}\n                          </a>\n                    </div>\n                    {% if request.user %}\n                        <div class=\"account_meta account_logout account_meta_primary\"><a id=\"logout\" href=\"{{LOGOUT_URL}}\">{% trans '注销' %}</a></div>\n                    {% endif %}\n                </div>\n\n            </div>\n        </div>\n\n    </div>\n    <!-- 头部横向导航 end -->\n      <!-- 中间主体内容 start -->\n      <div id=\"body\" class=\"body page_index\">\n          <div id=\"js_container_box\" class=\"container_box cell_layout side_l\">\n            {% block body_content %}{% endblock %}\n          </div>\n\n          <div id=\"return_top\" class=\"return_btn return_top\" href=\"#\" title=\"{% trans '返回顶部' %}\" style=\"display:none;\">\n          <span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-up\"></span>\n        </div>\n        <div id=\"return_bottom\" class=\"return_btn return_bottom\" href=\"#\" title=\"{% trans '返回底部' %}\" style=\"display:none;\">\n          <span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-down\"></span>\n        </div>\n      </div>\n      <!-- 中间主体内容 end -->\n      <!-- 尾部声明 start -->\n      <div class=\"foot\" id=\"footer\">\n        <ul class=\"links ft\">\n            <li><p class=\"copyright\">Copyright © 2012-{{NOW.year}} OpsAny. All Rights Reserved.</p> </li>\n        </ul>\n      </div>\n      <!-- 尾部声明 end -->\n      <!-- js 国际化 -->\n      <script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n      <!-- jQery库 公共脚本 -->\n      <script src=\"{{STATIC_URL}}assets/jquery-1.8.2.min.js\"></script>\n      <!-- bootstrap JS 公共脚本 -->\n      <script src=\"{{STATIC_URL}}assets/bootstrap-3.1.1/js/bootstrap.min.js\"></script>\n      <!-- dialog -->\n      <script src=\"{{STATIC_URL}}assets/bkDialog-1.0/js/dialog.js\"></script>\n      <!-- select2 -->\n      <script src=\"{{STATIC_URL}}assets/select2-3.5.2/select2.js\"></script>\n      <script src=\"{{STATIC_URL}}js/csrftoken.{{JS_SUFFIX}}\"></script>\n      <!--[if lt IE 9]>\n        <script src=\"{{STATIC_URL}}assets/html5shiv-3.7.2.min.js\"></script>\n        <script src=\"{{STATIC_URL}}assets/respond-1.4.2.min.js\"></script>\n      <![endif]-->\n      <!-- 兼容性设置 -->\n      <!--[if lt IE 6]>\\xe8\\x93\\x9d\\xe9\\xb2\\xb8\\xe6\\x99\\xba\\xe8\\x90\\xa5\\x20\\xe7\\x89\\x88\\xe6\\x9d\\x83\\xe6\\x89\\x80\\xe6\\x9c\\x89<![endif]-->\n      <script type=\"text/javascript\">\n      /**\n     * 页面滚动条\n     */\n      var minHeight = 100;\n      var scrollOffset = $(document).height()-$(window).height() - 100;\n      var returnTopDom = $('#return_top');\n      var returnBottomDom = $('#return_bottom');\n\n      //确定按钮位置\n      function setBtnPosition(){\n        var returnTopLeft = $('#body').offset().left + $('#body').width() + 10;\n        if ($(window).width() >= returnTopLeft) {\n          $('.return_btn').css({'left': returnTopLeft+'px'});\n        } else {\n          $('.return_btn').css({'left': 'auto', 'right': '10px', 'position': 'fixed'});\n        }\n      }\n      //监听滚动条\n      $(window).on('scroll',function(){\n        var sTop = $(this).scrollTop();\n        if (sTop > minHeight){\n          returnTopDom.fadeIn(300);\n        }else{\n          returnTopDom.fadeOut(300);\n        }\n\n        if (sTop >= scrollOffset){\n          returnBottomDom.fadeOut(300);\n        }else{\n          returnBottomDom.fadeIn(300);\n        }\n      });\n\n      //监听窗口resize\n      $(window).on('resize',function(){\n        setBtnPosition();\n      });\n\n      //返回顶部\n      returnTopDom.on('click',function(){\n        $('html,body').animate({scrollTop:0},700);\n        return false;\n      });\n      returnBottomDom.on('click',function(){\n        $('html,body').animate({scrollTop:scrollOffset+100},700);\n        return false;\n      });\n      setBtnPosition();\n      $(window).trigger('scroll');\n    </script>\n    {% block script %}{% endblock %}\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/bkaccount/user_table.part",
    "content": "{% load i18n %}\n<style>\n .pagination {\n    margin: 0;\n    border-radius: 0;\n}\n.pagination>li:first-child>a,.pagination>li:first-child>span {\n    border-bottom-left-radius: 0;\n    border-top-left-radius: 0\n}\n.pagination>li:last-child>a,.pagination>li:last-child>span {\n    border-bottom-right-radius: 0;\n    border-top-right-radius: 0\n}\n</style>\n <table class=\"table table-bordered dev_user_table mt10\" id=\"user_table\">\n    <thead>\n        <tr>\n            <th width=\"15%\">{% trans '用户名' %}</th>\n            <th width=\"15%\">{% trans '中文名' %}</th>\n            <th width=\"15%\">{% trans '联系电话' %}</th>\n            <th width=\"16%\">{% trans '常用邮箱' %}</th>\n            <th width=\"10%\">{% trans '角色' %}</th>\n            <th width=\"14%\">{% trans '操作' %}</th>\n        </tr>\n    </thead>\n    <tbody>\n      {% if records %}\n\t    {% for obj in records %}\n\t    <tr class=\"user_record\" user_id=\"{{obj.id}}\">\n\t        <td>\n\t        \t<input class=\"form-control u_username\" disabled value=\"{{ obj.username }}\" placeholder=\"--\"/>\n\t        </td>\n\t        <td>\n\t        \t<input class=\"form-control u_chname\" disabled value=\"{{ obj.chname }}\" placeholder=\"--\"/>\n\t        </td>\n\t        <td>\n\t        \t<input class=\"form-control u_phone\" disabled value=\"{{ obj.phone }}\" placeholder=\"--\"/>\n\t        </td>\n\t        <td>\n\t        \t<input class=\"form-control u_email\" disabled value=\"{{ obj.email }}\" placeholder=\"--\"/>\n\t        </td>\n\t        <td>\n\t        {% if request.user.is_superuser %}\n\t        \t<select class=\"form-control u_role\" disabled style=\"width:90px\">\n\t        \t\t<option value=\"0\" {% if obj.role_code == 0 %} selected {% endif %}>{% trans '普通用户' %}</option>\n                    <option value=\"1\" {% if obj.role_code == 1 %} selected {% endif %}>{% trans '管理员' %}</option>\n                    <option value=\"2\" {% if obj.role_code == 2 %} selected {% endif %}>{% trans '开发者' %}</option>\n                    <option value=\"3\" {% if obj.role_code == 3 %} selected {% endif %}>{% trans '职能化用户' %}</option>\n                    <option value=\"4\" {% if obj.role_code == 4 %} selected {% endif %}>{% trans '审计员' %}</option>\n                </select>\n\t\t    {% else %}\n\t\t    \t<select class=\"form-control u_role\" disabled style=\"width:90px\">\n                    {% if obj.role_code == 0 %}<option value=\"0\" selected>{% trans '普通用户' %}</option>{% endif %}\n                    {% if obj.role_code == 2 %}<option value=\"2\" selected>{% trans '开发者' %}</option>{% endif %}\n                    {% if obj.role_code == 3 %}<option value=\"3\" selected>{% trans '职能化用户' %}</option>{% endif %}\n                    {% if obj.role_code == 4 %}<option value=\"4\" selected>{% trans '审计员' %}</option>{% endif %}\n                </select>\n\t\t    {% endif %}\n\t        </td>\n\t        <td>\n                <button type=\"button\" class=\"btn-xs user_cancel_btn\">{% trans '取消' %}</button>\n                <button type=\"button\" class=\"btn-info btn-xs user_save_btn\">{% trans '保存' %}</button>\n                <a href=\"###\" title=\"{% trans '编辑' %}\" class=\"dev_user_opera user_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>\n                <a href=\"###\" title=\"{% trans '重置密码' %}\" class=\"dev_user_opera user_rest_btn\"><i aria-hidden=\"true\" class=\"bk-icon icon-key\"></i></a>\n                {% if request.user.is_superuser %}\n                \t<a href=\"###\" value=\"{{obj.id}}\" title=\"{% trans '删除' %}\" class=\"dev_user_opera user_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>\n                {% endif %}\n\t        </td>\n\t    </tr>\n\t    {% endfor %}\n\t  {% else %}\n\t    <tr class=\"tc\" id=\"no_record_row\"><td colspan=\"7\"><center>{% trans '没有数据' %}</center></td></tr>\n\t  {% endif %}\n    </tbody>\n</table>\n\n<div class=\"pull-right\" style=\"margin-top:20px\">\n    <input style=\"display:none\" id=\"current_page\" value=\"{{ records.number }}\">\n\t<div class=\"pagination\" style=\"\">\n        <span class=\"step-links\">\n    \t\t<ul class=\"pagination pagination-centered\" style=\"margin-top: 0\">\n\n            {% if records.has_previous %}\n                <li><a href=\"###\" onclick=\"get_user({{ records.previous_page_number }})\">{% trans '上一页' %}</a></li>\n            {% else %}\n                <li class=\"disabled\"><a href=\"###\" onclick=\"return false;\">{% trans '上一页' %}</a></li>\n            {% endif %}\n\n            {%if show_first %}\n              <li><a href=\"###\" onclick=\"get_user(1)\">1</a></li>\n              <li class=\"disabled ellipsis\"><a href=\"###\">...</a></li>\n            {% endif %}\n\n            {% for page in page_numbers %}\n                {% if records.number != page %}\n                    <li><a href=\"###\" onclick=\"get_user({{ page }})\"> {{ page }} </a></li>\n                {% else %}\n                    <li class=\"active\"><a href=\"###\" onclick=\"return false;\"> {{ page }} </a></li>\n                {% endif %}\n            {% endfor %}\n\n            {% if show_last %}\n              <li class=\"disabled ellipsis\"><a href=\"###\">...</a></li>\n              <li><a href=\"###\" onclick=\"get_user({{records.paginator.num_pages}})\">{{records.paginator.num_pages}}</a></li>\n            {% endif %}\n\n            {% if records.has_next %}\n                <li><a href=\"###\" onclick=\"get_user({{records.next_page_number}})\">{% trans '下一页' %}</a></li>\n            {% else %}\n                <li class=\"disabled\"><a href=\"###\" onclick=\"return false;\">{% trans '下一页' %}</a></li>\n            {% endif %}\n    \t\t</ul>\n\t\t</span>\n\t</div>\n</div>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/bkaccount/users.html",
    "content": "{% extends \"bkaccount/base.html\" %}\n{% load i18n %}\n{% block body_content %}\n<div class=\"box-info full pg20 user_info_div\">\n  <div class=\"dev_center_module\">\n    <h4 class=\"dev_module_title\">\n        <span style=\"color:red;font-size:14px;width: 860px; float: left; display: block; word-wrap: break-word;\" id=\"error_msg\" class=\"\">{{error_msg}}</span>\n        <span style=\"color:green;font-size:14px\">{{success_msg}}</span>\n    \t{% if request.user.is_superuser %}\n            &nbsp\n           <button type=\"button\" class=\"btn-primary btn-xs user_btn user_export_btn f_r\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-export\"></span>{% trans '导出' %}</button>\n           <button type=\"button\" class=\"btn-info btn-xs user_btn user_import_btn f_r\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-import\"></span>{% trans '批量导入' %}</button>\n           <button type=\"button\" class=\"btn-success btn-xs user_add_btn f_r\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-plus\"></span>{% trans '新增用户' %}</button>\n        {% else %}\n        \t{% trans '用户信息' %}\n        {% endif %}\n    </h4>\n    {% if request.user.is_superuser %}\n    <div id=\"seacher_input\" class=\"form-inline\" style=\"margin-top: -5px;\">\n    {% else %}\n    <div id=\"seacher_input\" class=\"form-inline\" style=\"margin-top: -5px;display:none\">\n    {% endif %}\n        <input id=\"search_data\" type=\"text\" class=\"form-control\" style=\"width:250px\" placeholder=\"{% trans '查询：按用户名、中文名' %}\" onkeyup=\"enter_keyword(event);\">\n        <select class=\"form-control\"  id=\"search_role\" style=\"\">\n            <option value=\"\" selected=\"\">{% trans '所有用户' %}</option>\n            <option value=\"1\">{% trans '管理员' %}</option>\n            <option value=\"0\">{% trans '普通用户' %}</option>\n            <option value=\"2\">{% trans '开发者' %}</option>\n            <option value=\"3\">{% trans '职能化用户' %}</option>\n            <option value=\"4\">{% trans '审计员' %}</option>\n        </select>\n        <button id=\"serach_user\" class=\"btn btn-azure btn-min-w\" style=\"margin-top:9px;height:34px\">{% trans '查询' %}</button>\n        <p style=\"display: inline-block;float:right;margin-top: 17px;\">{% trans '新增用户的默认密码为：' %}<code>{{default_paasword}}</code> </p>\n    </div>\n    <div id=\"user_table_div\" class=\"clearfix\">\n    </div>\n  </div>\n\t<h5 class=\"\">{% trans '温馨提示:' %}</h5>\n\t<hr style=\"margin-top:10px;margin-bottom:10px\">\n\t<div class=\"user_introduce_box\">\n        {% blocktrans trimmed %}\n\t    <p><code>管理员</code>可以管理所有用户的信息，具有所有权限</p>\n\t    <p><code>普通用户</code>可以管理自己的用户信息和访问 “工作台”</p>\n        <p><code>开发者</code>可以管理自己的用户信息、访问 “工作台” 和访问 “开发者中心”</p>\n        <p><code>职能化用户</code>在普通用户权限上还拥有SaaS应用 “标准运维” 的职能化权限</p>\n        <p><code>审计员</code>在普通用户权限上还拥有SaaS应用 “标准运维”和作业平台的审计权限</p>\n        {% endblocktrans %}\n\t</div>\n</div>\n\n<div id=\"user_import_div\" style=\"display:none\">\n    <form class=\"form-horizontal\" action=\"{{SITE_URL}}accounts/user/import/\" enctype=\"multipart/form-data\" method=\"post\">\n        {% csrf_token %}\n        <div class=\"mt10 mb10\">\n            <label class=\"password_label\">{% trans '选择文件：' %}<span style=\"color:red\">*</span> </label>\n            <input style=\"display:inline\" name=\"data_files\" id=\"data_files\" type=\"file\">\n            <button type=\"button\" class=\"btn-success btn-xs user_btn import_btn\" ><span aria-hidden=\"true\" class=\"glyphicon glyphicon-import\"></span>{% trans '导入用户' %}</button>\n            <button type=\"submit\" id=\"sumbit_import\" style=\"display:none\">{% trans '提交' %}</button>\n        </div>\n        <div>\n            <a href=\"{{STATIC_URL}}{% trans 'bk_user_import.xls' %}\">{% trans '点击下载EXCEL模板' %}</a>\n            <span style=\"color:red\" id=\"error_msg\" class=\"ml20\"></span>\n        </div>\n        <div class=\"alert\" style=\"margin-top:10px;\">\n            <p>{% trans '注意：' %}</p>\n            {% blocktrans trimmed %}\n            <p>1.请下载<a href=\"{{STATIC_URL}}bk_user_import.xls\">EXCEL模板</a>文件填写用户数据</p>\n            <p>2.<code>用户名</code>为必填，包含数字、字母、下划线和点，长度在4-20个字符</p>\n            <p>3.<code>用户名</code>为唯一标识，重复导入会覆盖已有数据</p>\n            <p>4.导入用户默认密码为：<code>{{default_paasword}}</code></p>\n            <p>5.文件后缀名必须为：<code>.xls</code>或<code>.xlsx</code> </p>\n            <p>6.导入失败请检查EXCEL格式规范，或重新下载模板填写</p>\n            {% endblocktrans %}\n        </div>\n    </form>\n    <span id=\"password_tip\" style=\"color:red\"></span>\n</div>\n\n<div id=\"change_password_div\" style=\"display:none\">\n    <div>\n        <label class=\"password_label\">{% trans '新密码：' %}<span style=\"color:red\">*</span> </label>\n        <!-- 防止Firefox下密码自动填充 -->\n        <input type=\"text\" style=\"display:none\">\n        <input type=\"password\" style=\"display:none\">\n        <input class=\"form-control password_input\" id=\"id_password1\" name=\"password1\"  type=\"text\" onfocus=\"this.type='password'\">\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">{% trans '必填' %}</span>\n        <p style=\"margin-left: 105px;\" class=\"tip ml10\" id=\"pattern_tip\">{% blocktrans with sp_char='!@#$%^*()_-+=' %}请输入密码，长度在8-20个字符，可支持数字、字母以及{{ sp_char }}，必须保证密码包含大小写字母和数字 {% endblocktrans %}</p>\n    </div>\n    <div class='mt5'>\n        <label class=\"password_label\">{% trans '确认密码' %}：<span style=\"color:red\">*</span> </label>\n        <input class=\"form-control password_input\" id=\"id_password2\" name=\"password2\"  type=\"text\" onfocus=\"this.type='password'\" placeholder=\"{% trans '再次输入密码' %}\">\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">{% trans '必填' %}</span>\n    </div>\n    <span id=\"password_tip\" style=\"color:red;margin-left: 105px;\"></span>\n</div>\n{% endblock %}\n\n{% block script %}\n    <script src=\"{{STATIC_URL}}js/users.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n    <script type=\"text/javascript\">\n        $(function(){$('#serach_user').click();})\n    </script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/login/templates/csrf_failure.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>{% trans 'CSRF验证失败' %}</title>\n<link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\"/>\n<style type=\"text/css\">\n\tbody {\n\t\tmin-width: initial !important;\n\t\tbackground: none;\n\t}\n</style>\n</head>\n\n<body style=\"font-family:Microsoft Yahei;margin-left: -800px\" class=\"king-errorpage-middle\">\n\t<!--HTML-->\n\t<div class=\"king-exception-box king-login-page\" style=\"width:1600px\">\n\t\t<img src=\"/static/img/error/403.png\">\n\t\t<h1>{% trans 'CSRF验证失败' %}</h1>\n\t\t<div>\n\t\t\t<p>{% trans '您看到此消息是由于该站点在提交表单时需要一个CSRF cookie。此项是出于安全考虑，以确保您的浏览器没有被第三方劫持。' %}</p>\n\t\t\t<p>{% trans '如果您已经设置浏览器禁用cookies，请重新启用，至少针对这个站点，全部HTTPS请求，或者同源请求（same-origin）启用cookies。' %}</p>\n\t\t\t<p style=\"margin-top:10px\"><a href=\"{{LOGOUT_URL}}\">{% trans '重新登录' %}</a></p>\n\t\t</div>\n\t</div>\n</body>\n\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/login/agreement.part",
    "content": "{% load i18n %}\n<div class=\"protocol-pop\">\n    <div class=\"protocol-detail\">\n        <span class=\"del-text close\" id=\"close\"><i class=\"bk-icon icon-close\"></i></span>\n        <div class=\"detail-content\">\n            {% blocktrans trimmed %}\n            <div class=\"title\">腾讯蓝鲸智云软件许可及服务协议</div>\n            <div class=\"detail-list\">\n                <p class=\"title\">【首部及导言】</p>\n                <p>欢迎您使用腾讯蓝鲸智云软件及服务。</p>\n                <p>为使用腾讯蓝鲸智云软件（以下简称“本软件”）及服务，您应当阅读并遵守《腾讯蓝鲸智云软件许可及服务协议》（以下简称“本协议”），以及《腾讯服务协议》。请您务必审慎阅读、充分理解各条款内容，特别是免除或者限制责任的条款，以及开通或使用某项服务的单独协议，并选择接受或不接受。限制、免责条款可能以加粗形式提示您注意。</p>\n                <p>除非您已阅读并接受本协议所有条款，否则您无权下载、安装或使用本软件及相关服务。您的下载、安装、使用、登录等行为即视为您已阅读并同意上述协议的约束。</p>\n                <p class=\"title\">一、【协议的范围】</p>\n                <p>1.1【协议适用主体范围】</p>\n                <p>本协议是您与腾讯之间关于您下载、安装、使用、复制本软件，以及使用腾讯相关服务所订立的协议。</p>\n                <p>1.2【协议关系及冲突条款】</p>\n                <p>本协议被视为《腾讯服务协议》（链接地址：http://www.qq.com/contract.shtml，若链接地址变更的，则以变更后的链接地址所对应的内容为准；其他链接地址变更的情形，均适用前述约定。）的补充协议，是其不可分割的组成部分，与其构成统一整体。本协议与上述内容存在冲突的，以本协议为准。</p>\n                <p>本协议内容同时包括腾讯可能不断发布的关于本服务的相关协议、业务规则等内容。上述内容一经正式发布，即为本协议不可分割的组成部分，您同样应当遵守。</p>\n                <p class=\"title\">二、【关于本服务】</p>\n                <p>2.1【本服务的内容】</p>\n                <p>本服务内容是指蓝鲸智云产品以及相关服务，包括但不限于提供的基础运维平台（如“配置平台”、“作业平台”、“管控平台”等），PaaS服务（如“AppEngine”、“开发者中心”、“应用开发框架”、“组件”、“前端Magicbox”等），SaaS服务（如监控告警、持续集成、持续部署、辅助运营等），以及支撑上述服务的其他相关产品，为用户提供完善的基础服务设施，以使用户快速、便捷的创建、部署和管理应用的软件许可及服务（以下简称“本服务”）。</p>\n                <p>2.2 【本服务的形式】</p>\n                <p> 您使用本服务需要下载腾讯蓝鲸智云产品软件，对于这些软件，腾讯给予您一项个人的、不可转让及非排他性的许可。您仅可为访问或使用本服务的目的而使用这些软件及服务。</p>\n                <p>2.3 【本服务许可的范围】</p>\n                <p>2.3.1 腾讯给予您一项不可转让及非排他性的许可，以使用本软件。您可以为非商业目的在单一台终端设备上安装、使用、显示、运行本软件。</p>\n                <p>2.3.2 您可以为使用本软件及服务的目的复制本软件的一个副本，仅用作备份。备份副本必须包含原软件中含有的所有著作权信息。</p>\n                <p>2.3.3 本条及本协议其他条款未明示授权的其他一切权利仍由腾讯保留，您在行使这些权利时须另外取得腾讯的书面许可。腾讯如果未行使前述任何权利，并不构成对该权利的放弃。</p>\n                <p class=\"title\">三、【软件的获取】</p>\n                <p>3.1 您可以直接从腾讯的网站上获取本软件，也可以从得到腾讯授权的第三方获取。</p>\n                <p>3.2 如果您从未经腾讯授权的第三方获取本软件或与本软件名称相同的安装程序，腾讯无法保证该软件能够正常使用，并对因此给您造成的损失不予负责。</p>\n                <p class=\"title\">四、【软件的安装与卸载】</p>\n                <p>4.1 腾讯可能为不同的需求开发了不同的软件版本，您应当根据实际情况选择下载合适的版本进行安装。</p>\n                <p>4.2 下载安装程序后，您需要按照该程序提示的步骤正确安装。</p>\n                <p>4.3 为提供更加优质、安全的服务，在本软件安装时腾讯可能推荐您安装其他软件，您可以选择安装或不安装。</p>\n                <p>4.4 如果您不再需要使用本软件或者需要安装新版软件，可以自行卸载。如果您愿意帮助腾讯改进产品服务，请告知卸载的原因。</p>\n                <p class=\"title\">五、【软件的更新】</p>\n                <p>5.1 为了改善用户体验、完善服务内容，腾讯将不断努力开发新的服务，并为您不时提供软件更新（这些更新可能会采取软件替换、修改、功能强化、版本升级等形式）。</p>\n                <p>5.2 为了保证本软件及服务的安全性和功能的一致性，腾讯有权不经向您特别通知而对软件进行更新，或者对软件的部分功能效果进行改变或限制。</p>\n                <p>5.3 本软件新版本发布后，旧版本的软件可能无法使用。腾讯不保证旧版本软件继续可用及相应的客户服务，请您随时核对并下载最新版本。</p>\n                <p class=\"title\">六、【用户个人信息保护】</p>\n                <p>6.1保护用户个人信息是腾讯的一项基本原则。腾讯将按照本协议及《隐私政策》（链接地址：http://www.qq.com/privacy.htm）的规定收集、使用、储存和分享您的个人信息。本协议对个人信息保护规定的内容与上述《隐私政策》有相冲突的，及本协议对个人信息保护相关内容未作明确规定的，均应以《隐私政策》的内容为准。</p>\n                <p>6.2腾讯将会采取合理的措施保护用户的个人信息。除法律法规规定的情形外，未经用户许可腾讯不会向第三方公开、透露用户个人信息。腾讯对相关信息采用专业加密存储与传输方式，保障用户个人信息的安全。</p>\n                <p>6.3 您在注册帐号或使用本服务的过程中，可能需要提供一些必要的信息，若国家法律法规或政策有特殊规定的，您需要提供真实的身份信息。基于某些产品功能，腾讯会需要您提供使用该功能的非关联用户身份的相关信息，您同意腾讯基于上述目的收集上述信息，若您不提供或提供的信息不完整，则无法使用本服务或在使用过程中受到限制。</p>\n                <p class=\"title\">七、【主权利义务条款】</p>\n                <p>7.1 【帐号使用规范】</p>\n                <p>7.1.1 用户有责任妥善保管注册帐户信息及帐户密码的安全，用户需要对注册帐户以及密码下的行为承担法律责任。用户同意在任何情况下不向他人透露帐户及密码信息。在您怀疑他人在使用您的帐号时，请您及时处理。</p>\n                <p>7.1.2 管理员账号使用者，则可以创建多个账号，所创建的所有账号，由创建的人对账号承担保密的责任。</p>\n                <p>7.1.3 非管理员账号使用者，应妥善保管账号密码的安全，若存在密码修改等事宜，应求助所创建账号的管理员。</p>\n                <p>7.1.4 腾讯蓝鲸智云产品的账户密码安全，均由软件使用者承担相关法律责任。</p>\n                <p>7.2【用户注意事项】</p>\n                <p>7.2.1 您理解并同意：为了向您提供有效的服务，本软件会利用您终端的处理器和带宽等资源。本软件使用过程中可能产生数据流量的费用，用户需自行向运营商了解相关资费信息，并自行承担相关费用。</p>\n                <p>7.2.2 您理解并同意：</p>\n                <p>7.2.2.1 您在本软件的应用市场中添加的第三方软件，由第三方享有一切合法权利。因第三方软件引发的任何纠纷，由该第三方负责解决，腾讯不承担任何责任。 腾讯不对第三方软件或技术提供客服支持，若用户需要获取支持，请与该软件或技术提供商联系。</p>\n                <p>7.2.2.2 本软件对涉及到的第三方软件的安装信息及升级信息等一切信息的安全性、合法性、兼容性、无害性等不承担任何担保及保证，由此而产生的任何法律纠纷，由该第三方负责解决，腾讯不承担任何责任。</p>\n                <p>7.2.2.3 本软件所涉及到的任何第三方软件，其一切法律权利归第三方权利人所享有，用户下载、安装、使用第三方软件受该软件许可协议所约束。在第三方软件使用过程中所产生的任何纠纷，均由该第三方负责解决，腾讯不承担任何责任。</p>\n                <p>7.2.2.4 本软件供用户用来下载、安装腾讯和/或第三方软件，并不能识别用户利用本软件下载、安装的第三方软件是否有合法来源。若您为有关软件的权利人，不愿本软件为您的软件提供用户下载、安装、使用的服务，可按本协议约定的联系方式联系我们（联系邮箱：【*】，联系电话：【*】），我们将会积极配合进行处理。</p>\n                <p>7.2.3 您在使用本软件某一特定服务时，该服务可能会另有单独的协议、相关业务规则等（以下统称为“单独协议”），您在使用该项服务前请阅读并同意相关的单独协议。</p>\n                <p>7.2.4 您理解并同意腾讯将会尽其商业上的合理努力保障您在本软件及服务中的数据存储安全，但是，腾讯并不能就此提供完全保证，包括但不限于以下情形：</p>\n                <p>7.2.4.1 腾讯不对您在本软件及服务中相关数据的删除或储存失败负责；</p>\n                <p>7.2.4.2 腾讯有权根据实际情况自行决定单个用户在本软件及服务中数据的最长储存期限，并在服务器上为其分配数据最大存储空间等。您可根据自己的需要自行备份本软件及服务中的相关数据；</p>\n                <p>7.2.4.3 如果您停止使用本软件及服务或服务被终止或取消，腾讯可以从服务器上永久地删除您的数据。服务停止、终止或取消后，腾讯没有义务向您返还任何数据。</p>\n                <p>7.3【第三方产品和服务】</p>\n                <p>7.3.1 您在本软件的应用市场中添加第三方提供的产品或服务时，除遵守本协议约定外，还应遵守第三方的用户协议。腾讯和第三方对可能出现的纠纷在法律规定和约定的范围内各自承担责任。</p>\n                <p>7.3.2 腾讯不保证您在应用市场中添加的第三方产品或服务的安全性、准确性、有效性及其他不确定的风险，由此若引发的任何争议及损害，与腾讯无关，腾讯不承担任何责任。</p>\n                <p class=\"title\">八、【用户行为规范】</p>\n                <p>8.1【信息内容规范】</p>\n                <p>8.1.1 本条所述信息内容是指用户使用本软件及服务过程中所制作、复制、发布、传播的任何内容。</p>\n                <p>8.1.2 您理解并同意，腾讯蓝鲸智云一直致力于为用户提供完善的基础服务设施，您不得利用本软件及服务制作、复制、发布、传播如下干扰腾讯蓝鲸智云正常运营，以及侵犯其他用户或第三方合法权益的内容，包括但不限于：</p>\n                <p>8.1.2.1 发布、传送、传播、储存违反国家法律、危害国家安全统一、社会稳定、公序良俗、社会公德以及侮辱、诽谤、淫秽或含有任何性或性暗示的、暴力的内容；</p>\n                <p>8.1.2.2 发布、传送、传播、储存侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的内容；</p>\n                <p>8.1.2.3 涉及他人隐私、个人信息或资料的；</p>\n                <p>8.1.2.4 发表、传送、传播骚扰、广告信息及垃圾信息；</p>\n                <p>8.1.2.5 其他违反法律法规、政策及公序良俗、社会公德或干扰【腾讯蓝鲸智云】正常运营和侵犯其他用户或第三方合法权益内容的信息。</p>\n                <p>8.2【软件使用规范】</p>\n                <p>除非法律允许或腾讯书面许可，您使用本软件过程中不得从事下列行为：</p>\n                <p>8.2.1 删除本软件及其副本上关于著作权的信息；</p>\n                <p>8.2.2 对本软件进行反向工程、反向汇编、反向编译，或者以其他方式尝试发现本软件的源代码；</p>\n                <p>8.2.3 对腾讯拥有知识产权的内容进行使用、出租、出借、复制、修改、链接、转载、汇编、发表、出版、建立镜像站点等；</p>\n                <p>8.2.4 对本软件或者本软件运行过程中释放到任何终端内存中的数据、软件运行过程中客户端与服务器端的交互数据，以及本软件运行所必需的系统数据，进行复制、修改、 增加、删除、挂接运行或创作任何衍生作品，形式包括但不限于使用插件、外挂或非腾讯经授权的第三方工具/服务接入本软件和相关系统；</p>\n                <p>8.2.5 通过修改或伪造软件运行中的指令、数据，增加、删减、变动软件的功能或运行效果，或者将用于上述用途的软件、方法进行运营或向公众传播，无论这些行为是否为商业目的；</p>\n                <p>8.2.6 通过非腾讯开发、授权的第三方软件、插件、外挂、系统，登录或使用腾讯软件及服务，或制作、发布、传播上述工具；</p>\n                <p>8.2.7 自行或者授权他人、第三方软件对本软件及其组件、模块、数据进行干扰；</p>\n                <p>8.2.8 其他未经腾讯明示授权的行为。</p>\n                <p>8.3【服务运营规范】</p>\n                <p>除非法律允许或腾讯书面许可，您使用本服务过程中不得从事下列行为：</p>\n                <p>8.3.1 提交、发布虚假信息，或冒充、利用他人名义的；</p>\n                <p>8.3.2 诱导其他用户点击链接页面或分享信息的；</p>\n                <p>8.3.3 虚构事实、隐瞒真相以误导、欺骗他人的；</p>\n                <p>8.3.4 侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的；</p>\n                <p>8.3.5 未经腾讯书面许可利用帐号和任何功能，以及第三方运营平台进行推广或互相推广的；</p>\n                <p>8.3.6 利用帐号或本软件及服务从事任何违法犯罪活动的；</p>\n                <p>8.3.7 制作、发布与以上行为相关的方法、工具，或对此类方法、工具进行运营或传播，无论这些行为是否为商业目的；</p>\n                <p>8.3.8 其他违反法律法规规定、侵犯其他用户合法权益、干扰产品正常运营或腾讯未明示授权的行为。</p>\n                <p>8.4 【对自己行为负责】</p>\n                <p>您充分了解并同意，您必须为自己注册帐号下的一切行为负责，包括您所发表的任何内容以及由此产生的任何后果。您应对本服务中的内容自行加以判断，并承担因使用内容而引起的所有风险，包括因对内容的正确性、完整性或实用性的依赖而产生的风险。腾讯无法且不会对因前述风险而导致的任何损失或损害承担责任。</p>\n                <p>8.5【违约处理】</p>\n                <p>8.5.1 如果腾讯发现或收到他人举报或投诉用户违反本协议约定的，腾讯有权不经通知随时对相关内容进行删除，并视行为情节对违规帐号处以包括但不限于警告、限制或禁止使用全部或部分功能、帐号封禁直至注销的处罚，并公告处理结果。</p>\n                <p>8.5.2 您理解并同意，腾讯有权依合理判断对违反有关法律法规或本协议规定的行为进行处罚，对违法违规的任何用户采取适当的法律行动，并依据法律法规保存有关信息向有关部门报告等，用户应独自承担由此而产生的一切法律责任。</p>\n                <p>8.5.3 您理解并同意，因您违反本协议或相关服务条款的规定，导致或产生第三方主张的任何索赔、要求或损失，您应当独立承担责任；腾讯因此遭受损失的，您也应当一并赔偿。</p>\n                <p class=\"title\">九、【知识产权声明】</p>\n                <p>9.1 腾讯是本软件的知识产权权利人。本软件的一切著作权、商标权、专利权、商业秘密等知识产权，以及与本软件相关的所有信息内容（包括但不限于文字、图片、音频、视频、图表、界面设计、版面框架、有关数据或电子文档等）均受中华人民共和国法律法规和相应的国际条约保护，腾讯享有上述知识产权。</p>\n                <p>9.2 未经腾讯书面同意，您不得为任何商业或非商业目的自行或许可任何第三方实施、利用、转让上述知识产权，腾讯保留追究上述行为法律责任的权利。</p>\n                <p class=\"title\">十、【终端安全责任】</p>\n                <p>10.1 您理解并同意，本软件同大多数互联网软件一样，可能会受多种因素影响，包括但不限于用户原因、网络服务质量、社会环境等；也可能会受各种安全问题的侵扰，包括但不限于他人非法利用用户资料，进行现实中的骚扰；用户下载安装的其他软件或访问的其他网站中可能含有病毒、木马程序或其他恶意程序，威胁您的终端设备信息和数据安全，继而影响本软件的正常使用等。因此，您应加强信息安全及个人信息的保护意识，注意密码保护，以免遭受损失。</p>\n                <p>10.2 您不得制作、发布、使用、传播用于窃取其他用户帐号及个人信息、财产的恶意程序。</p>\n                <p>10.3 维护软件安全与正常使用是腾讯和您的共同责任，腾讯将按照行业标准合理审慎地采取必要技术措施保护您的终端设备信息和数据安全，但是您承认和同意腾讯并不能就此提供完全保证。</p>\n                <p class=\"title\">十一、【第三方软件或技术】</p>\n                <p>11.1 本软件可能会使用第三方软件或技术（包括本软件可能使用的开源代码和公共领域代码等，下同），这种使用已经获得合法授权。</p>\n                <p>11.2 本软件如果使用了第三方的软件或技术，腾讯将按照相关法规或约定，对相关的协议或其他文件，可能通过本协议附件、在本软件安装包特定文件夹中打包等形式进行展示，它们可能会以“软件使用许可协议”、“授权协议”、“开源代码许可证”或其他形式来表达。前述通过各种形式展现的相关协议或其他文件，均是本协议不可分割的组成部分，与本协议具有同等的法律效力，您应当遵守这些要求。如果您没有遵守这些要求，该第三方或者国家机关可能会对您提起诉讼、罚款或采取其他制裁措施，并要求腾讯给予协助，您应当自行承担法律责任。</p>\n                <p>11.3 如因本软件使用的第三方软件或技术引发的任何纠纷，应由该第三方负责解决，腾讯不承担任何责任。腾讯不对第三方软件或技术提供客服支持，若您需要获取支持，请与第三方联系。</p>\n                <p class=\"title\">十二、【其他】</p>\n                <p>12.1 您使用本软件即视为您已阅读并同意受本协议的约束。腾讯有权在必要时修改本协议条款。您可以在本软件的最新版本中查阅相关协议条款。本协议条款变更后，如果您继续使用本软件，即视为您已接受修改后的协议。如果您不接受修改后的协议，应当停止使用本软件。</p>\n                <p>12.2 本协议签订地为中华人民共和国广东省深圳市南山区。</p>\n                <p>12.3 本协议的成立、生效、履行、解释及纠纷解决，适用中华人民共和国大陆地区法律（不包括冲突法）。</p>\n                <p>12.4 若您和腾讯之间发生任何纠纷或争议，首先应友好协商解决；协商不成的，您同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。</p>\n                <p>12.5 本协议所有条款的标题仅为阅读方便，本身并无实际涵义，不能作为本协议涵义解释的依据。</p>\n                <p>12.6 本协议条款无论因何种原因部分无效或不可执行，其余条款仍有效，对双方具有约束力。</p>\n                <p>12.7 本协议可能由多种语言书就。如果存在中文版本与其他语言的版本相冲突的地方，以中文版本为准。（正文完）</p>\n                <p>腾讯公司</p>\n            </div>\n            {% endblocktrans %}\n        </div>\n        <div class=\"consent-content\">\n            <button class=\"consent-btn\">{% trans '已阅读' %}</button>\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login copy.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"../../static/favicon.ico\" />\n    <link href=\"../../static/bk.{{CSS_SUFFIX}}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"../../static/assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"../../static/css/login.min.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <title>{% trans '登录|技术运营中台' %}</title>\n</head>\n\n<body>\n    <div class=\"page-content\">\n        <div class=\"header\">\n            <div class=\"logo\">\n                <img src=\"../../static/img/logo/bk_login.png\" height=\"30\" width=\"220\" alt=\"\" />\n            </div> \n        </div>\n        <div class=\"left-img\">\n            <img height=\"400\" width=\"500\" src=\"../../static/img/logo/bgimg.png\" alt=\"\">\n        </div>\n        <div class=\"login-from\">\n            <div class=\"logo-title\">\n                <!-- <img src=\"../../static/img/logo/bk_login.png\" height=\"40\" width=\"311\" alt=\"\" /> -->\n                欢迎登陆\n            </div>\n            <div class=\"from-detail\">\n                <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n                    {% csrf_token %}\n                    <div class=\"is-danger-tip\">\n                        {% if form.errors or form.non_field_errors %}\n                        <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '账户或者密码错误，请重新输入' %}</span>\n                        {% endif %}\n                    </div>\n                    <div class=\"form-login\">\n                        <div class=\"user group-control\">\n                            <i class=\"bk-icon icon-user\"></i>\n                            <input id=\"user\" type=\"text\" name=\"username\" placeholder=\"{% trans '请输入用户名' %}\" />\n                        </div>\n                        <div class=\"pwd group-control\">\n                            <i class=\"bk-icon icon-password\"></i>\n                            <input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"\n                                placeholder=\"{% trans '请输入用户密码' %}\" />\n                        </div>\n                        <div>\n                            <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n                            <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\" />\n                        </div>\n                        <div class=\"btn-content clearfix\">\n                            <button class=\"login-btn\">{% trans '登录' %}</button>\n                            <!-- <span class=\"protocol-btn\">{% trans '查看用户协议' %}</span> -->\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n        <footer class=\"footer\">\n            <p>\n                <a href=\"http://www.womaiyun.com/\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">官网</a>\n                |\n                <!-- <a href=\"${SITE_URL}\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">工作台</a> -->\n                <a href=\"#\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">womaiyun Inc. All Rights Reserved</a>\n\n            </p>\n            <!-- <p>Copyright © 2012-2020 womaiyun. All Rights Reserved.</p> -->\n        </footer>\n    </div>\n    <!-- 查看用户协议 -->\n    {% include \"login/agreement.part\" %}\n    <!-- 浏览器验证 -->\n    <div class=\"error-message-content is-chrome\">\n        <span>{% trans\n        '您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果'\n        %}</span><i class=\"bk-icon icon-close-circle-shape\" id=\"close-chrome\"></i>\n    </div>\n</body>\n<!-- js 国际化 -->\n<script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n<script src=\"../../static/assets/jquery-1.10.2.min.js\"></script>\n<script src=\"../../static/js/login.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n\n</html>"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login.demo.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n\n<html lang=\"en\">\n\n<head>\n\t<meta name=\"robots\" content=\"noindex\">\n\t<meta charset=\"utf-8\">\n\t<link rel=\"icon\" type=\"image/x-icon\" href=\"{{STATIC_URL}}favicon.ico\">\n\t<link href=\"{{STATIC_URL}}css/bk.{{CSS_SUFFIX}}\" rel=\"stylesheet\" type=\"text/css\" />\n\t<link href=\"{{STATIC_URL}}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\n\t<link href=\"{{STATIC_URL}}css/login.{{CSS_SUFFIX}}?v={{STATIC_VERSION}}\" rel=\"stylesheet\" type=\"text/css\" />\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}modal/icon/iconfont.css\">\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}modal/modal.css\">\n\t<style>\n\t\t.geetest_holder.geetest_wind .geetest_logo,\n\t\t.geetest_holder.geetest_wind .geetest_success_logo {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.wrapper_header {\n\t\t\twidth: 100%;\n\t\t\theight: 40px;\n\t\t\tfont-size: 15px;\n\t\t\ttext-align: center;\n\t\t\tline-height: 40px;\n\t\t\tcolor: #333;\n\t\t\tbackground: #F6FFED;\n\t\t\tborder-top: 1px solid #CFF0B8;\n\t\t\tborder-bottom: 1px solid #CFF0B8;\n\t\t\tposition: absolute;\n\t\t\ttop: 50px;\n\t\t\tleft: 0;\n\t\t\tz-index: 2;\n\t\t}\n\t</style>\n\t<title>{% trans '登录 | OpsAny' %}</title>\n</head>\n\n<body>\n\t<p class=\"wrapper_header\">\n\t\t本演示环境仅展示社区版基础功能，无操作权限。社区版用户请根据官网文档直接部署使用。企业版用户请在官网获取联系方式，联系我们咨询。\n\t</p>\n\t<div class=\"page-content\"\n\t\tstyle=\"background: url({{ IMG_URL }}img/bg_image.png) center no-repeat; background-size: 100% 100%;\">\n\t\t<div class=\"header\" style=\"box-shadow: 0px 0px 6px 0px rgba(12, 34, 65, 0.2)\">\n\t\t\t<div class=\"logo\" style=\"\">\n\t\t\t\t<img style=\"height:50px\" src=\"{{ IMG_URL }}img/bk_login.png\" alt=\"\" />\n\t\t\t</div>\n\t\t\t<div style=\"margin: 0 30px 0 0\">\n\t\t\t\t<a href=\"/docs/\" i18n=\"help_center\" target=\"_blank\" style=\"color:#666\"\n\t\t\t\t\tclass=\"container_header_right_child\">帮助中心</a>\n\t\t\t\t<span class=\"drop_down\" style=\"color: #666; margin-left: 10px\">\n\t\t\t\t\t<span class=\"show_name\">简体中文</span>\n\t\t\t\t\t<svg t=\"1622808046517\" class=\"icon\" style=\"margin-left: 5px\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\" p-id=\"2424\" width=\"8\" height=\"8\">\n\t\t\t\t\t\t<path d=\"M0.006 284.4l56.597-56.598L512 683.2l455.396-455.397 56.598 56.597L512 796.395z\"\n\t\t\t\t\t\t\tp-id=\"2425\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<ul class=\"drop_down_list\" style=\"z-index: 3;\">\n\t\t\t\t\t\t<li onclick=\"chooseLanguage('zh_CN','简体中文')\"> <img width=\"20px\"\n\t\t\t\t\t\t\t\tsrc=\"{{STATIC_URL}}img/logo/zh_CN.png\" /> <a>简体中文</a></li>\n\t\t\t\t\t\t<li onclick=\"chooseLanguage('zh_TW','繁体中文')\"> <img width=\"20px\"\n\t\t\t\t\t\t\t\tsrc=\"{{STATIC_URL}}img/logo/zh_TW.png\" /> <a>繁體中文</a></li>\n\t\t\t\t\t\t<li onclick=\"chooseLanguage('en','English')\"> <img width=\"20px\"\n\t\t\t\t\t\t\t\tsrc=\"{{STATIC_URL}}img/logo/en.png\" /> <a>English</a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div style='margin-top: 9%;display: flex;flex-direction: column;margin-left: 20%;'>\n\t\t\t<img width=\"540px\" src=\"{{ IMG_URL }}img/home_top_word.png\" alt=\"\">\n\t\t</div>\n\t\t<div class=\"left-img\" style='margin-left: 20%;margin-top:2%;'>\n\t\t\t<img height=\"410\" width=\"540\" src=\"{{ IMG_URL }}img/home_page_picture.png\" alt=\"\">\n\t\t</div>\n\n\t\t{% if mfa != \"start\" %}\n\t\t<div class=\"login-from\" style=\"margin-top: 5%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2)\">\n\t\t\t<div class=\"login-form-title\">\n\t\t\t\t<div class=\"login-form-title-box\">\n\t\t\t\t\t<div i18n=\"password_login\" class=\"login-form-title-box-btn \" data-key=\"0\">密码登录</div>\n\t\t\t\t\t<div i18n=\"LDAP_login\" class=\"login-form-title-box-btn\" data-key='1'>LDAP登录</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!--密码登录-->\n\t\t\t<div id=\"form-pwd\" data-key=\"0\">\n\t\t\t\t<div class=\"logo-title\" i18n=\"password_login_title\">\n\t\t\t\t\t<!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t\t\t\t\t欢迎使用密码登录\n\t\t\t\t</div>\n\t\t\t\t<p class=\"logo-title1\"></p>\n\t\t\t\t<div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 10%\">\n\t\t\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t\t\t{% csrf_token %}\n\t\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t\t{% if error_message %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{{ error_message }}</span>\n\t\t\t\t\t\t\t{% elif data == '1' and tab_key != '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message1\">请先完成验证码验证</span>\n\t\t\t\t\t\t\t{% elif data == '2' and tab_key != '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message2\">{% trans '账户或者密码错误，请重新输入' %}</span>\n\t\t\t\t\t\t\t{% elif form.errors or form.non_field_errors  %}\n\t\t\t\t\t\t\t{% if tab_key != '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"password_login_message2\">{% trans '账户或者密码错误，请重新输入.' %}</span>\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t\t\t\t\t\t\t\t<input id=\"user\" type=\"text\" name=\"username\" i18n_p=\"password_login_placeholder1\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"{% trans '请输入用户名' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"pwd group-control\" style=\"width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t\t\t\t\t\t\t\t<input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"\n\t\t\t\t\t\t\t\t\ti18n_p=\"password_login_placeholder2\" placeholder=\"{% trans '请输入用户密码' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div style=\"margin-top: 8%\">\n\t\t\t\t\t\t\t\t<div id=\"captcha\">\n\t\t\t\t\t\t\t\t\t<p id=\"wait\" i18n=\"wait\" class=\"show\">正在加载验证码......</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t\t\t\t\t\t\t\t<button i18n=\"password_login_btn\" class=\"login-btn\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 270px;border-radius: 22px\">{% trans '立即登录' %}</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"other_login\">\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t\t<div i18n=\"password_login_other\" class=\"other_login_text\">其他登录方式</div>\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"qywxbox\">\n\t\t\t\t\t\t\t\t<div title=\"企业微信登录\" class=\"qywxbox_enable\" data-auth_type=\"3\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/qywx.png\" alt=\"企业微信\" data-auth_type=\"3\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"3\" i18n=\"WeChat_Work\">企业微信</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"钉钉登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"4\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/dingding.png\" alt=\"钉钉\" data-auth_type=\"4\" />  <span data-auth_type=\"4\">钉钉</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"飞书登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"5\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/feishu.png\" alt=\"飞书\" data-auth_type=\"5\" />  <span data-auth_type=\"5\">飞书</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<div title=\"SSO\" class=\"qywxbox_enable sso_box\" data-auth_type=\"8\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/SSO.png\" alt=\"SSO\" data-auth_type=\"8\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"8\" i18n=\"SSO\">SSO</span>\n\t\t\t\t\t\t\t\t\t<div class=\"sso_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div title=\"OAuth\" class=\"qywxbox_enable oauth_box\" data-auth_type=\"6\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/oauth.png\" alt=\"OAuth\" data-auth_type=\"6\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"6\" i18n=\"OAuth\">OAuth</span>\n\t\t\t\t\t\t\t\t\t<div class=\"oauth_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!--LDAP登录-->\n\t\t\t<div id=\"form-ldap\" style=\"display:none\" data-key=\"1\">\n\t\t\t\t<div class=\"logo-title\" i18n=\"LDAP_login_title\">\n\t\t\t\t\t<!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t\t\t\t\t欢迎使用LDAP登录\n\t\t\t\t</div>\n\t\t\t\t<div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 10%;background:#ffffff\">\n\t\t\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t\t\t{% csrf_token %}\n\t\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t\t{% if data == '1' and tab_key == '1' %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message1\">{% trans '请先完成验证码验证' %}</span>\n\t\t\t\t\t\t\t{% elif data == '2' and tab_key == '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message2\">{% trans '账户或者密码错误，请重新输入' %}</span>\n\t\t\t\t\t\t\t{% elif form.errors or form.non_field_errors %}\n\t\t\t\t\t\t\t<div></div>\n\t\t\t\t\t\t\t{% if tab_key == '1' %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message2\">{% trans '账户或者密码错误，请重新输入.' %}</span>\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-code\"></i>\n\t\t\t\t\t\t\t\t<input id=\"user\" type=\"text\" name=\"domain\" value=\"\" i18n_p=\"LDAP_login_placeholder1\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"{% trans '请输入登陆域' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t\t\t\t\t\t\t\t<input id=\"user\" type=\"text\" name=\"username\" i18n_p=\"LDAP_login_placeholder2\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"{% trans '请输入LDAP用户名' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"pwd group-control\" style=\"width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t\t\t\t\t\t\t\t<input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"\n\t\t\t\t\t\t\t\t\ti18n_p=\"LDAP_login_placeholder3\" placeholder=\"{% trans '请输入密码' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div style=\"margin-top: 8%\">\n\t\t\t\t\t\t\t\t<div id=\"captcha2\">\n\t\t\t\t\t\t\t\t\t<p id=\"wait2\" i18n=\"wait\" class=\"show\">正在加载验证码......</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"tab_key\" value=\"1\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t\t\t\t\t\t\t\t<button class=\"login-btn\" style=\"width: 270px;border-radius: 22px\"\n\t\t\t\t\t\t\t\t\ti18n=\"password_login_btn\">{% trans '立即登录' %}</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"other_login\">\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t\t<div class=\"other_login_text\" i18n=\"password_login_other\">其他登录方式</div>\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"qywxbox\">\n\n\t\t\t\t\t\t\t\t<div title=\"企业微信登录\" class=\"qywxbox_enable\" data-auth_type=\"3\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/qywx.png\" alt=\"企业微信\" data-auth_type=\"3\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"3\" i18n=\"WeChat_Work\">企业微信</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"钉钉登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"4\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/dingding.png\" alt=\"钉钉\" data-auth_type=\"4\" />  <span data-auth_type=\"4\">钉钉</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"飞书登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"5\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/feishu.png\" alt=\"飞书\" data-auth_type=\"5\" />  <span data-auth_type=\"5\">飞书</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<div title=\"SSO\" class=\"qywxbox_enable sso_box\" data-auth_type=\"8\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/SSO.png\" alt=\"SSO\" data-auth_type=\"8\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"8\" i18n=\"SSO\">SSO</span>\n\t\t\t\t\t\t\t\t\t<div class=\"sso_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div title=\"OAuth\" class=\"qywxbox_enable oauth_box\" data-auth_type=\"6\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/oauth.png\" alt=\"OAuth\" data-auth_type=\"6\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"6\" i18n=\"OAuth\">OAuth</span>\n\t\t\t\t\t\t\t\t\t<div class=\"oauth_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t{% endif %}\n\t\t{% if google_auth_status == \"3\" %}\n\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t\t\t<div class=\"mfa_setting_box\">\n\t\t\t\t<h4>\n\t\t\t\t\t<span i18n=\"MFABing_title\">绑定 MFA 设备</span>\n\t\t\t\t\t<span class=\"info\">\n\t\t\t\t\t\t<i style=\"background:#1890FF;color:#fff;font-size:12px;padding:2px;border-radius:50%;\"\n\t\t\t\t\t\t\tclass=\"bk-icon icon-info\"></i>\n\t\t\t\t\t\t<span i18n=\"MFABing_message1\">管理员已开启强制所有用户绑定MFA功能，请完成以下操作以免影响使用。</span>\n\t\t\t\t\t</span>\n\t\t\t\t</h4>\n\t\t\t\t<div class=\"mfa_setting_content\">\n\t\t\t\t\t<h4 class=\"step\" i18n=\"MFABing_first_step\">\n\t\t\t\t\t\t第一步：请在手机端下载并安装Google Authenticator（身份验证器）\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"step_content\">\n\t\t\t\t\t\t<div style=\"margin:0 0 0 100px;text-align: center;\">\n\t\t\t\t\t\t\t<img style=\"height:120px;padding:0px;border:1px solid #e8e8e8\"\n\t\t\t\t\t\t\t\tsrc=\"{{ IMG_URL }}img/apple_qrcode.png\" alt=\"\" />\n\t\t\t\t\t\t\t<p i18n=\"MFABing_first_step_message1\" style=\"fot-size:12px\">扫描下载iOS版</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"margin:0 0 0 20px;text-align: center;\">\n\t\t\t\t\t\t\t<img style=\"height:120px;padding:0px;border:1px solid #e8e8e8\"\n\t\t\t\t\t\t\t\tsrc=\"{{ IMG_URL }}img/android_qrcod.png\" alt=\"\" />\n\t\t\t\t\t\t\t<p i18n=\"MFABing_first_step_message2\" style=\"fot-size:12px\">扫描下载Android版</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"info\">\n\t\t\t\t\t\t<i style=\"background:#1890FF;color:#fff;font-size:12px;padding:2px;border-radius:50%;\"\n\t\t\t\t\t\t\tclass=\"bk-icon icon-info\"></i>\n\t\t\t\t\t\t<span i18n=\"MFABing_first_step_message3\">开启Google身份认证后，每次登录时都需要进行验证。</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<h4 class=\"step\" i18n=\"MFABing_second_step\">\n\t\t\t\t\t\t第二步：使用Google Authenticator（身份验证器）扫描以下二维码\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"step_content\">\n\t\t\t\t\t\t<img id=\"google_auth_pic\"\n\t\t\t\t\t\t\tstyle=\"height:120px;padding:0px;border:1px solid #e8e8e8;margin:0 0 0 100px;\" src=\"\"\n\t\t\t\t\t\t\talt=\"\" />\n\t\t\t\t\t\t<div style=\"margin:0 0 0 20px;font-size:12px;\">\n\t\t\t\t\t\t\t<p i18n=\"MFABing_second_step_message1\">扫不了码？试试账号&密钥方式获取</p>\n\t\t\t\t\t\t\t<p style=\"margin:10px 0 10px 0;\"><span style=\"width:50px;display:inline-block;\"\n\t\t\t\t\t\t\t\t\ti18n=\"MFABing_second_step_account_number\">账号：</span><span\n\t\t\t\t\t\t\t\t\tstyle=\"color:#333;\">{{ username }}</span></p>\n\t\t\t\t\t\t\t<p style=\"width:280px;word-break: break-word;display:flex;\">\n\t\t\t\t\t\t\t\t<span style=\"flex:0 0 50px;\" i18n=\"MFABing_second_step_secret_key\">密钥：</span>\n\t\t\t\t\t\t\t\t<span>{{ secret }}<a onclick=\"copy()\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"margin:0 0 0 10px;color:#0ba360;cursor:pointer\"\n\t\t\t\t\t\t\t\t\t\ti18n=\"MFABing_second_step_copy\">复制</a> </span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4 class=\"step\">\n\t\t\t\t\t\t<span i18n=\"MFABing_third_step\">第三步：输入授权码</span> <input\n\t\t\t\t\t\t\ti18n_p=\"MFABing_third_authorization_code\" placeholder=\"请输入6位授权码\" name=\"verify_code\"\n\t\t\t\t\t\t\ttype=\"text\" />\n\t\t\t\t\t</h4>\n\t\t\t\t\t<input id=\"copy\" style=\"position:absolute;z-index:-10;\" value=\"{{ secret }}\" />\n\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t{% if bind_google_auth and bind_google_auth.code != 200 %}\n\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\ti18n=\"MFABing_message2\">{% trans '认证失败，请检查您的验证码是否正确' %}</span>\n\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<footer>\n\t\t\t\t\t<button i18n=\"MFABind_submit\">确定绑定</button>\n\t\t\t\t</footer>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"hidden\" name=\"google_auth_type\" value=\"bind_google_auth\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"secret\" value=\"{{ secret }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"google_auth_url\" value=\"{{ google_auth_url }}\">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</form>\n\t\t{% else %}\n\t\t{% if mfa == \"start\" %}\n\t\t<!--LDAP动态码输入-->\n\t\t<div class=\"login-from\" style=\"margin-top: 8%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2);\">\n\t\t\t<form action=\"{{ app_path }}\" method=\"get\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t<input type=\"hidden\" id=\"mfa\" name=\"mfa\" value=\"{{ mfa }}\">\n\t\t\t\t<input type=\"hidden\" name=\"c_url\" value=\"{{c_url}}\">\n\t\t\t\t<button id=\"mfaBtn\">\n\t\t\t\t\t<i style=\"color: #0ba360\" class=\"bk-icon icon-arrows-left\"></i>\n\t\t\t\t\t<span i18n=\"back_btn\">返回</span></button>\n\t\t\t</form>\n\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t{% csrf_token %}\n\n\t\t\t\t<div class=\"ldap-icon\">\n\t\t\t\t\t<img src=\"{{STATIC_URL}}img/ldap-icon.png\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ldap-box\">\n\n\t\t\t\t\t<div class=\"ldap-title\" i18n=\"MFA_title1\">账号保护已开启，请根据提示完成以下操作</div>\n\t\t\t\t\t{% if google_auth_status != \"7\" %}\n\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t\t\t\t<div class=\"ldap-step-num\" i18n=\"MFA_first_step\">第一步：</div>\n\t\t\t\t\t\t<div class=\"ldap-step-desc\" i18n=\"MFA_first_message\">请打开手机中Google Authenticator（身份验证器）</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t\t\t\t<div class=\"ldap-step-num\" i18n=\"MFA_second_step\">第二步：</div>\n\t\t\t\t\t\t<div class=\"ldap-step-desc\" i18n=\"MFA_second_message\">请输入6位动态码</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t<div class=\"form-login\" style=\"padding: 0;margin-bottom:20px\">\n\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width:100%\">\n\n\t\t\t\t\t\t\t{% if google_auth_status == \"7\" %}\n\t\t\t\t\t\t\t<div style=\"text-align:center;margin-top:90px\" i18n=\"MFA_message1\">您已开启7天免认证登录，请点击确定按钮直接登录！\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<input hidden type=\"number\" name=\"verify_code\" value=\"123123\" i18n_p=\"MFA_dynamicCode\"\n\t\t\t\t\t\t\t\tplaceholder=\"请输入6位动态码\" />\n\n\t\t\t\t\t\t\t{% else %}\n\t\t\t\t\t\t\t<input style=\"padding-left:10px\" type=\"number\" name=\"verify_code\" i18n_p=\"MFA_dynamicCode\"\n\t\t\t\t\t\t\t\tplaceholder=\"请输入6位动态码\" />\n\t\t\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\t\t{% if check_status == False %}\n\t\t\t\t\t\t\t<span style=\"color:red;font-size:13px;display:inline-block;margin:5px 0\"\n\t\t\t\t\t\t\t\ti18n=\"MFA_message2\">{% trans '请确认您的验证码是否正确' %}</span>\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{% if google_auth_status != \"7\" %}\n\t\t\t\t\t\t<div style=\"margin:50px 0 0 0\">\n\t\t\t\t\t\t\t<input name=\"seven_days_free\" type=\"checkbox\" value=\"1\" /> <span\n\t\t\t\t\t\t\t\ti18n=\"MFA_laissez_passer\">7天内免验证</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 20px\">\n\t\t\t\t\t\t\t<button class=\"login-btn\" style=\"width: 100%;border-radius: 22px\"\n\t\t\t\t\t\t\t\ti18n=\"MFA_submit\">{% trans '确定' %}</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"color:grey;font-size:12px;padding-top:10px\" i18n=\"MFA_message3\">\n\t\t\t\t\t\t\t如无法提供安全码，请联系管理员解除双因素验证后继续操作。</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{ app_id }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t\t{% endif %}\n\t\t{% endif %}\n\n\t\t<footer class=\"footer\">\n\t\t\t<p>\n\t\t\t\t<a href=\"#\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">Copyright © 2012-2020 OpsAny. All\n\t\t\t\t\tRights Reserved.</a>\n\t\t\t</p>\n\t\t\t<!-- <p>Copyright © 2012-2020 womaiyun. All Rights Reserved.</p> -->\n\t\t</footer>\n\t</div>\n\t<input hidden id=\"tab_key\" value=\"{{tab_key}}\"></input>\n\t<div class=\"error-message-content is-chrome\">\n\t\t<span i18n=\"Chrome\">{% trans '您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果' %}</span><i\n\t\t\tclass=\"bk-icon icon-close-circle-shape\" id=\"close-chrome\"></i>\n\t</div>\n\t<div class=\"m-modal__wrapper\" id=\"m-modal__wrapper\">\n\t\t<div class=\"m-modal__container\">\n\t\t\t<div class=\"m-modal__header\">\n\t\t\t\t<div class=\"m-modal__title\" id=\"m-modal__title\"></div>\n\t\t\t\t<button class=\"m-modal__headerbtn\">\n\t\t\t\t\t<i class=\"m-modal__close iconfont icon-close\" id=\"m-modal__close\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"m-modal__body\">\n\t\t\t\t<div id=\"qywxCode\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n</body>\n<!-- js 国际化 -->\n<script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n<script src=\"{{STATIC_URL}}assets/jquery-3.6.1.min.js\"></script>\n<script src=\"{{STATIC_URL}}assets/gt.js\"></script>\n<script src=\"{{STATIC_URL}}js/login.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n<script src=\"{{STATIC_URL}}js/language.js\"></script>\n<!-- 企业微信-->\n<script src=\"https://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js\" type=\"text/javascript\" charset=\"utf-8\"\n\tdefer></script>\n<script>\n\tlet key = $('#tab_key').val() || 0\n\tlet OAuthList = []\n\tlet SSOList = []\n\t//控制展示和隐藏哪个tab里面的内容\n\tfunction showTabItem() {\n\t\tfor (let item of showItem) {\n\t\t\t$(item).hide()\n\t\t\t$(showItem[key]).show()\n\t\t}\n\t}\n\n\t//初始化企业微信二维码\n\tfunction initWwlogin(appid, agentid, redirect_uri) {\n\t\twindow.WwLogin({\n\t\t\tid: \"qywxCode\",\n\t\t\tappid, //企业微信的cropID，在 企业微信管理端->我的企业中查看 - \n\t\t\tagentid, //企业微信当前应用ID - \n\t\t\tredirect_uri: encodeURI(redirect_uri), //回调地址 - \n\t\t\tstate: ''\n\t\t});\n\t}\n\n\n\t//获取url参数\n\tfunction getQueryVariable(variable) {\n\t\tvar query = window.location.search.substring(1);\n\t\tvar vars = query.split(\"&\");\n\t\tfor (var i = 0; i < vars.length; i++) {\n\t\t\tvar pair = vars[i].split(\"=\");\n\t\t\tif (pair[0] == variable) {\n\t\t\t\treturn pair[1];\n\t\t\t}\n\t\t}\n\t\treturn (false);\n\t}\n\n\t//获取OAuth列表\n\tfunction getOAuthList() {\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_auth_config/?auth_type=6\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (res) {\n\t\t\t\tif (res.code == '00' && res.result) {\n\t\t\t\t\tOAuthList = res.data.data || []\n\t\t\t\t\tif (res.data.data.length) {\n\t\t\t\t\t\tlet html = ''\n\t\t\t\t\t\tres.data.data.forEach(item => {\n\t\t\t\t\t\t\tlet origin = window.location.origin\n\t\t\t\t\t\t\thtml +=\n\t\t\t\t\t\t\t\t`<div title=\"${item.enable?item.name:'当前认证未启用'}\" class=\"${item.enable?'oauth_auth_item':'disabled_auth'}\" data-key=\"${item.id}\"> <img src=\"${origin}/${item.auth_icon.url}\"></img> <span>${item.name}</span></div>`\n\t\t\t\t\t\t})\n\t\t\t\t\t\t$('.oauth_box_content').html(html)\n\t\t\t\t\t\t$('.oauth_auth_item').on('click', function (e) {\n\t\t\t\t\t\t\tlet key = $(e.currentTarget).data('key')\n\t\t\t\t\t\t\tconst activeAuth = OAuthList.find(item => item.id == key)\n\t\t\t\t\t\t\tconst url = activeAuth.auth_login_url +\n\t\t\t\t\t\t\t\t`?response_type=accessCode&client_id=${activeAuth.app_id}&redirect_uri=${window.location.origin}${window.location.pathname}?domain=${activeAuth.domain}%26auth_type=6`\n\t\t\t\t\t\t\twindow.location.href = url\n\t\t\t\t\t\t})\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.oauth_box').attr('title', '暂未开启OAuth登录')\n\t\t\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$('.oauth_box').attr('title', '暂未开启OAuth登录')\n\t\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (e) {\n\t\t\t\t$('.oauth_box').attr('title', '暂未开启OAuth登录')\n\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\t\t\t},\n\t\t});\n\t}\n\n\t//获取SSO列表\n\tfunction getSSOList() {\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_auth_config/?auth_type=8\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (res) {\n\t\t\t\tif (res.code == '00' && res.result) {\n\t\t\t\t\tSSOList = res.data.data || []\n\t\t\t\t\tif (res.data.data.length) {\n\t\t\t\t\t\tlet html = ''\n\t\t\t\t\t\tres.data.data.forEach(item => {\n\t\t\t\t\t\t\tlet origin = window.location.origin\n\t\t\t\t\t\t\thtml +=\n\t\t\t\t\t\t\t\t`<div title=\"${item.enable?item.name:'当前认证未启用'}\" class=\"${item.enable?'sso_auth_item':'disabled_auth'}\" data-key=\"${item.id}\"> <img src=\"${origin}/${item.auth_icon.url}\"></img> <span>${item.name}</span></div>`\n\t\t\t\t\t\t})\n\t\t\t\t\t\t$('.sso_box_content').html(html)\n\t\t\t\t\t\t$('.sso_auth_item').on('click', function (e) {\n\t\t\t\t\t\t\tlet key = $(e.currentTarget).data('key')\n\t\t\t\t\t\t\tconst activeAuth = SSOList.find(item => item.id == key)\n\t\t\t\t\t\t\tconst url = activeAuth.auth_login_url +\n\t\t\t\t\t\t\t\t`?callback=${window.location.origin}${window.location.pathname}?domain=${activeAuth.domain}%26auth_type=8`\n\t\t\t\t\t\t\twindow.location.href = url\n\t\t\t\t\t\t})\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.sso_box').attr('title', '暂未开启SSO登录')\n\t\t\t\t\t\t$('.sso_box').addClass('qywxbox_disabled')\n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$('.sso_box').attr('title', '暂未开启SSO登录')\n\t\t\t\t\t$('.sso_box').addClass('qywxbox_disabled')\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (e) {\n\t\t\t\t$('.sso_box').attr('title', '暂未开启SSO登录')\n\t\t\t\t$('.sso_box').addClass('qywxbox_disabled')\n\t\t\t},\n\t\t});\n\t}\n\n\t//初始化验证码\n\tfunction initCaptch(type) {\n\t\tconst activeKey = key || 0\n\t\tvar handler = function (captchaObj) {\n\t\t\t$(\"#submit\").click(function (e) {\n\t\t\t\tvar result = captchaObj.getValidate();\n\t\t\t\tif (!result) {\n\t\t\t\t\t$(\"#notice\").show();\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t$(\"#notice\").hide();\n\t\t\t\t\t}, 2000);\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\t\t\tif ($('#mfa').val() == 'start' || \"{{google_auth_status}}\" == 3) return\n\t\t\t// 将验证码加到id为captcha的元素里，同时会有三个input的值用于表单提交\n\t\t\tcaptchaObj.appendTo(captchaItem[activeKey]);\n\t\t\tcaptchaObj.onReady(function () {\n\t\t\t\t$(waitItem[activeKey]).hide();\n\t\t\t});\n\t\t};\n\t\t$.ajax({\n\t\t\turl: \"api/login-register/?t=\" + (new Date()).getTime(), // 加随机数防止缓存\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (data) {\n\t\t\t\t// 调用 initGeetest 初始化参数\n\t\t\t\t// 参数1：配置参数\n\t\t\t\t// 参数2：回调，回调的第一个参数验证码对象，之后可以使用它调用相应的接口\n\t\t\t\tinitGeetest({\n\t\t\t\t\tgt: data.data.gt,\n\t\t\t\t\tchallenge: data.data.challenge,\n\t\t\t\t\tnew_captcha: data.data.new_captcha, // 用于宕机时表示是新验证码的宕机\n\t\t\t\t\toffline: !data.data.success, // 表示用户后台检测极验服务器是否宕机，一般不需要关注\n\t\t\t\t\tproduct: \"float\", // 产品形式，包括：float，popup\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\tlang: type,\n\t\t\t\t}, handler);\n\t\t\t}\n\t\t});\n\t}\n\t$('#mfaBtn').on('click', function (e) {\n\t\t$('#mfa').val('stop')\n\t})\n\tconst showItem = ['#form-pwd', '#form-ldap']\n\tconst captchaItem = ['#captcha', '#captcha2'];\n\tconst waitItem = ['#wait', '#wait2']\n\n\t//加入class让tab自动选中\n\t$('.login-form-title-box-btn').each((index, item) => {\n\t\tif ($(item)[0].dataset.key == key) {\n\t\t\t$(item).addClass('login-form-title-box-btn-check')\n\t\t}\n\t})\n\n\n\tshowTabItem()\n\tgetOAuthList()\n\tgetSSOList()\n\t$('.login-form-title-box-btn').click(e => {\n\t\t$('.login-form-title-box-btn').each((index, item) => {\n\t\t\t$(item).removeClass('login-form-title-box-btn-check')\n\t\t})\n\t\tconst btnItem = $(e.target)\n\t\tkey = btnItem[0].dataset.key\n\t\tbtnItem.addClass('login-form-title-box-btn-check')\n\t\tshowTabItem()\n\n\t\t//如果已经切换的时候没有初始化过极验的按钮\n\t\tif ($(`${captchaItem[key]} .geetest_holder`).length == 0) {\n\t\t\tinitCaptch()\n\t\t}\n\t})\n\n\n\t//\tconsole.log(\"{{ google_auth_url }}\")\n\t$(\"#google_auth_pic\").attr(\"src\", window.location.origin + \"/\" + \"{{ google_auth_url }}\")\n\n\tfunction copy() {\n\t\tlet input = document.getElementById(\"copy\");\n\t\tinput.select();\n\t\tdocument.execCommand(\"copy\")\n\t}\n\n\n\t$('.qywxbox').click(e => {\n\t\t//3 为企业微信\n\t\t//4 为钉钉\n\t\t//5 为飞书\n\t\tconst auth_type = $(e.target).data('auth_type')\n\t\tif (auth_type != 3) return\n\t\t$('#m-modal__wrapper').css({\n\t\t\t'display': 'block'\n\t\t})\n\t\tlet appid;\n\t\tlet agentid;\n\t\tlet c_url = encodeURIComponent(getQueryVariable('c_url') || '')\n\t\tlet is_from_logout = encodeURIComponent(getQueryVariable('is_from_logout') || '')\n\t\t//回调地址 默认回调到登录页 由于此url只允许带一个参数 所以下面注释的方式不起作用\n\t\t//let redirect_uri = window.location.origin+`/login/?c_url=${c_url}&is_from_logout=${is_from_logout}&auth_type=${auth_type}`; \n\t\tlet redirect_uri = window.location.origin + `/login/?auth_type=${auth_type}`; //回调地址 默认回调到登录页\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_vx_work_config/\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (res) {\n\t\t\t\tif (res.code == '00' && res.result) {\n\t\t\t\t\tappid = res.data.corp_id;\n\t\t\t\t\tagentid = res.data.agent_id;\n\t\t\t\t\tinitWwlogin(appid, agentid, redirect_uri);\n\t\t\t\t} else {\n\t\t\t\t\t$('#m-modal__title').html(`提示`)\n\t\t\t\t\t$('#qywxCode').html(`<div>${res.message || '获取参数失败，请重试或联系管理员'}</div>`)\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (e) {\n\t\t\t\t$('#m-modal__title').html(`提示`)\n\t\t\t\t$('#qywxCode').html(`<div>获取参数失败，请重试或联系管理员</div>`)\n\t\t\t}\n\t\t});\n\t})\n\n\n\t$('#m-modal__close').click(e => {\n\t\t$('#m-modal__wrapper').css({\n\t\t\t'display': 'none'\n\t\t})\n\t})\n\t//    \tconsole.log(document.cookie)\n\n\tlet arr = document.cookie.split(\";\")\n\tlet obj = {}\n\tarr.map(item => {\n\t\tobj[item.split(\"=\")[0].trim()] = item.split(\"=\")[1]\n\t})\n\tif (obj.opsany_language == \"english\") {\n\t\tsetLanguage(\"en\", \"English\")\n\t\tinitCaptch(\"en\")\n\t} else if (obj.opsany_language == \"chinese_traditional\") {\n\t\tsetLanguage(\"zh_TW\", \"繁體中文\")\n\t\tinitCaptch()\n\t} else {\n\t\tsetLanguage(\"zh_CN\", \"简体中文\")\n\t\tinitCaptch()\n\t}\n\tconsole.log(obj)\n\n\tfunction setLanguage(type, text) {\n\t\tlet language = i18n_language[type]\n\t\t$(\".show_name\").html(text)\n\n\t\tlet domList = $('*[i18n]');\n\t\tdomList.map((index, item) => {\n\t\t\t$(item).html(language[item.attributes.i18n.value])\n\t\t})\n\n\t\tlet pList = $('*[i18n_p]');\n\t\tpList.map((index, item) => {\n\t\t\t$(item).attr(\"placeholder\", language[item.attributes.i18n_p.value])\n\t\t})\n\n\t}\n\n\n\t//切换语言\n\tfunction chooseLanguage(type, text) {\n\t\tlet exp = new Date()\n\t\texp.setTime(exp.getTime() + 24 * 60 * 60 * 1000)\n\t\tif (type == \"zh_CN\") {\n\t\t\tdocument.cookie = \"opsany_language=chinese_simplified\" + \";expires=\" + exp.toGMTString() +\n\t\t\t\t\";path=/\"\n\t\t} else if (type == \"zh_TW\") {\n\t\t\tdocument.cookie = \"opsany_language=chinese_traditional\" + \";expires=\" + exp.toGMTString() +\n\t\t\t\t\";path=/\"\n\t\t}\n\t\tif (type == \"en\") {\n\t\t\tdocument.cookie = \"opsany_language=english\" + \";expires=\" + exp.toGMTString() +\n\t\t\t\t\";path=/\"\n\t\t}\n\t\tlocation.reload()\n\n\t}\n</script>\n\n</html>"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login.html",
    "content": "<!doctype html>\r\n<html lang=\"en\">\r\n\t<head>\r\n\t\t<meta charset=\"UTF-8\" />\r\n\t\t<link rel=\"icon\" type=\"image/svg+xml\" href=\"/login/static/favicon.ico\" />\r\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n\t\t<title>登录 | 数字化运维平台</title>\r\n\t\t<script type=\"module\" crossorigin src=\"/login/static/vite-static/index-Bd2G45Id.js\"></script>\n\t\t<link rel=\"modulepreload\" crossorigin href=\"/login/static/vite-static/@ant-design/icons-vue-ym-L-X2r.js\">\n\t\t<link rel=\"modulepreload\" crossorigin href=\"/login/static/vite-static/less-sScrWPmR.js\">\n\t\t<link rel=\"modulepreload\" crossorigin href=\"/login/static/vite-static/lodash-CQd0-CO8.js\">\n\t\t<link rel=\"modulepreload\" crossorigin href=\"/login/static/vite-static/axios-R-lXtGyY.js\">\n\t\t<link rel=\"modulepreload\" crossorigin href=\"/login/static/vite-static/@vueuse/core-B6fUiQ3R.js\">\n\t\t<link rel=\"modulepreload\" crossorigin href=\"/login/static/vite-static/@vueuse/integrations-iJ2WoaAF.js\">\n\t\t<link rel=\"stylesheet\" crossorigin href=\"/login/static/vite-static/index-Cu90Cwu-.css\">\n\t</head>\r\n\t<body>\r\n\t\t<div id=\"app\"></div>\r\n\t\t<script>\r\n\t\t\twindow.OPS_AUTH_TYPE = \"{{auth_type}}\";\r\n\t\t\twindow.OPS_ERROR = \"{{error}}\";\r\n\t\t</script>\r\n\t\t<script src=\"https://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js\" type=\"text/javascript\" charset=\"utf-8\" defer></script>\r\r\n\t</body>\r\n</html>\r\n"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login.html.copy",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <link rel=\"icon\" type=\"image/x-icon\" href=\"{{STATIC_URL}}favicon.ico\">\n        <link href=\"{{STATIC_URL}}css/bk.{{CSS_SUFFIX}}\" rel=\"stylesheet\" type=\"text/css\" />\n        <link href=\"{{STATIC_URL}}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\n        <link href=\"{{STATIC_URL}}css/login.{{CSS_SUFFIX}}?v={{STATIC_VERSION}}\" rel=\"stylesheet\" type=\"text/css\" />\n        <title>{% trans '登录 | OpsAny' %}</title>\n    </head>\n    <body>\n        <div class=\"page-content\" style=\"background: url({{ IMG_URL }}img/bg_image.png) center no-repeat; background-size: 100% 100%;\">\n            <div class=\"header\" style=\"box-shadow: 0px 0px 6px 0px rgba(12, 34, 65, 0.2)\">\n                <div class=\"logo\" style=\"\">\n                    <img style=\"height:50px\" src=\"{{ IMG_URL }}img/bk_login.png\" alt=\"\" />\n                </div> \n              <div style=\"margin: 0 30px 0 0\" >\n                   <a href=\"/docs/\" target=\"_blank\" style=\"color:#666\"  class=\"container_header_right_child\">帮助中心</a>\n              <span class=\"drop_down\" style=\"color: #666; margin-left: 10px\">\n                <span class=\"show_name\">简体中文</span>\n                <svg t=\"1622808046517\" class=\"icon\" style=\"margin-left: 5px\"  viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2424\" width=\"8\" height=\"8\"><path d=\"M0.006 284.4l56.597-56.598L512 683.2l455.396-455.397 56.598 56.597L512 796.395z\" p-id=\"2425\"></path></svg>\n                <ul class=\"drop_down_list\">\n                    <li><a>简体中文</a></li>\n                    \n                </ul>\n            </span>\n               </div>\n            </div>\n            <div style='margin-top: 9%;display: flex;flex-direction: column;margin-left: 20%;' >\n                <img width=\"540px\" src=\"{{ IMG_URL }}img/home_top_word.png\" alt=\"\">\n            </div>\n            <div class=\"left-img\" style='margin-left: 20%;margin-top:2%;'>\n                <img height=\"410\" width=\"540\" src=\"{{ IMG_URL }}img/home_page_picture.png\" alt=\"\">\n            </div>\n            \n            {% if mfa != \"start\" %}\n            <div class=\"login-from\" style=\"margin-top: 5%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2)\">\n       \t\t<div class=\"login-form-title\">\n       \t\t\t<div class=\"login-form-title-box\">\n\t       \t\t\t<div class=\"login-form-title-box-btn \" data-key=\"0\">密码登录</div>\n\t       \t\t\t<div class=\"login-form-title-box-btn\" data-key='1'>LDAP登录</div>\n       \t\t\t</div>\n       \t\t</div>\n\t\t\t<!--密码登录-->\n       \t\t<div id=\"form-pwd\"  data-key=\"0\">\n\t                <div class=\"logo-title\">\n\t                    <!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t                    欢迎使用密码登录\n\t                </div>\n\t                <p class=\"logo-title1\"></p>\n\t                <div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 16%\">\n\t                    <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t                        <div class=\"is-danger-tip\">\n\t                         {% if data and tab_key != '1'  %}\n\t                             <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '请先完成验证码验证' %}</span>\n\t                          {% elif form.errors or form.non_field_errors  %}\n\t                          \t{% if tab_key != '1'  %}\n\t                                <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '账户或者密码错误，请重新输入' %}</span>\n\t                              {% endif %}\n\t                          {% endif %}\n\t                        </div>\n\t\n\t                        <div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t                            <div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t                                <input id=\"user\" type=\"text\" name=\"username\"  placeholder=\"{% trans '请输入用户名' %}\" >\n\t                            </div>\n\t                            <div class=\"pwd group-control\" style=\"width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t                                <input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"  placeholder=\"{% trans '请输入用户密码' %}\">\n\t                            </div>\n\t                             <div style=\"margin-top: 8%\">\n\t                                <div id=\"captcha\">\n\t                                \t<p id=\"wait\" class=\"show\">正在加载验证码......</p>\n\t                                </div>\n\t                             </div>\n\t                            <div>\n\t                                <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t                                <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t                            </div>\n\t                            <div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t                                <button class=\"login-btn\" style=\"width: 270px;border-radius: 22px\">{% trans '立即登录' %}</button>\n\t                            </div>\n\t                        </div>\n\t                    </form>\n\t                </div>\n                </div>\n\n\t\t\t <!--LDAP登录-->\n                <div id=\"form-ldap\" style=\"display:none\"  data-key=\"1\">\n                \t <div class=\"logo-title\">\n\t                    <!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t                    欢迎使用LDAP登录\n\t                </div>\n\t                <div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 16%;background:#ffffff\">\n\t                    <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t                        <div class=\"is-danger-tip\">\n\t                         {% if data and tab_key == '1' %}\n\t                             <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '请先完成验证码验证' %}</span>\n\t                          {% elif form.errors or form.non_field_errors %}\n\t                          \t<div></div>\n\t                          \t{% if tab_key == '1' %}\n\t                                <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '账户或者密码错误，请重新输入' %}</span>\n\t                              {% endif %}\n\t                          {% endif %}\n\t                        </div>\n\t\n\t                        <div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t                            <div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-code\"></i>\n\t                                <input id=\"user\" type=\"text\" name=\"domain\"  placeholder=\"{% trans '请输入登陆域' %}\" >\n\t                            </div>\n\t                            <div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t                                <input id=\"user\" type=\"text\" name=\"username\"  placeholder=\"{% trans '请输入LDAP用户名' %}\" >\n\t                            </div>\n\t                            <div class=\"pwd group-control\" style=\"width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t                                <input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"  placeholder=\"{% trans '请输入密码' %}\">\n\t                            </div>\n\t                             <div style=\"margin-top: 8%\">\n\t                                <div id=\"captcha2\">\n\t                                \t<p id=\"wait2\" class=\"show\">正在加载验证码......</p>\n\t                                </div>\n\t                             </div>\n\t                            <div>\n\t                                <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t                                <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t                                <input type=\"hidden\" name=\"tab_key\" value=\"1\">\n\t                            </div>\n\t                            <div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t                                <button class=\"login-btn\" style=\"width: 270px;border-radius: 22px\">{% trans '立即登录' %}</button>\n\t                            </div>\n\t                        </div>\n\t                    </form>\n\t                </div>\n                </div>\n            </div>\n            {% endif %}  \n                      \n\t\t  {% if mfa == \"start\" %}\n\t\t\t  <!--LDAP动态码输入-->\n\t            <div  class=\"login-from\" style=\"margin-top: 8%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2);\">\n\t            <form  action=\"{{ app_path }}\" method=\"get\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t            \t<input type=\"hidden\" id=\"mfa\" name=\"mfa\" value=\"{{ mfa }}\">\n\t            \t<input type=\"hidden\"  name=\"c_url\" value=\"{{c_url}}\">\n\t            \t<button id=\"mfaBtn\">\n\t            \t<i style=\"color: #0ba360\" class=\"bk-icon icon-arrows-left\"></i>\n\t            \t返回</button>\n\t            </form>\n\t            <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t              \n\t\t          <div class=\"ldap-icon\">\n\t\t               <img src=\"{{STATIC_URL}}img/ldap-icon.png\" />\n\t\t          </div>\n\t\t          <div class=\"ldap-box\">\n\t\t            \t<div class=\"ldap-title\">账号保护已开启，请根据提示完成以下操作</div>\n\t\t            \t<div class=\"ldap-step\">\n\t\t\t            \t<div class=\"ldap-step-num\">第一步：</div>\n\t\t\t            \t<div class=\"ldap-step-desc\">请打开手机中Google Authenticator（身份验证器）</div>\n\t\t            \t</div>\n\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t            \t<div class=\"ldap-step-num\">第二步：</div>\n\t\t\t            \t<div class=\"ldap-step-desc\">请输入6位动态码</div>\n\t\t            \t</div>\n\t\t            \t<div class=\"form-login\" style=\"padding: 0;margin-bottom:20px\">\n\t\t\t            \t<div class=\"user group-control\" style=\"margin-bottom: 8%;width:100%\">\n\t\t\t                 <input style=\"padding-left:10px\" type=\"number\" name=\"verify_code\" placeholder=\"请输入6位动态码\" />\n\t\t\t                 {% if check_status == False %}\n\t\t\t                     <span style=\"color:red;font-size:13px;display:inline-block;margin:5px 0\">{% trans '请确认您的验证码是否正确' %}</span>\n\t\t\t                 {% endif %}\n\t\t\t               </div>\n\t\t\t\t          <div class=\"btn-content clearfix\" style=\";padding-top: 20px\">\n\t\t\t                 <button class=\"login-btn\" style=\"width: 100%;border-radius: 22px\">{% trans '确定' %}</button>\n\t\t\t               </div>\n\t\t\t               <div style=\"color:grey;font-size:12px;padding-top:10px\">如无法提供安全码，请联系管理员解除双因素验证后继续操作。</div>\n\t\t            \t</div>\n\t\t            \t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n                         <input type=\"hidden\" name=\"app_id\" value=\"{{ app_id }}\">\n                         <input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n                         <input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n                         <input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n                         <input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n\t                    <input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n\t            \t</div>\n\t            \t</form>\n\t            </div>\n\t      {% endif %}\n    \t\n    \t\t<footer class=\"footer\">\n\t\t\t<p>\n\t            <a href=\"#\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">Copyright © 2012-2020 OpsAny. All Rights Reserved.</a>\n\t\t\t</p>\n\t\t<!-- <p>Copyright © 2012-2020 womaiyun. All Rights Reserved.</p> -->\n\t\t</footer>\n        </div>\n        <input hidden id=\"tab_key\" value=\"{{tab_key}}\"></input>\n        <div class=\"error-message-content is-chrome\">\n            <span>{% trans '您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果' %}</span><i class=\"bk-icon icon-close-circle-shape\" id=\"close-chrome\"></i>\n        </div>\n    </body>\n    <!-- js 国际化 -->\n    <script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n    <script src=\"{{STATIC_URL}}assets/jquery-1.10.2.min.js\"></script>\n    <script src=\"{{STATIC_URL}}assets/gt.js\"></script>\n    <script src=\"{{STATIC_URL}}js/login.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n<script>\n\tlet key = $('#tab_key').val() || 0\n\n\t//控制展示和隐藏哪个tab里面的内容\n\tfunction showTabItem(){\n\t\tfor(let item of showItem){\n\t\t\t$(item).hide()\n\t\t\t$(showItem[key]).show()\n\t\t}\t\n\t}\n\n\tfunction initCaptch (){\n\t\tconst activeKey = key || 0\n\t\tvar handler = function (captchaObj) {\n\t        $(\"#submit\").click(function (e) {\n\t            var result = captchaObj.getValidate();\n\t            if (!result) {\n\t                $(\"#notice\").show();\n\t                setTimeout(function () {\n\t                    $(\"#notice\").hide();\n\t                }, 2000);\n\t                e.preventDefault();\n\t            }\n\t        });\n\t        if($('#mfa').val() == 'start') return\n\t        // 将验证码加到id为captcha的元素里，同时会有三个input的值用于表单提交\n\t        captchaObj.appendTo(captchaItem[activeKey]);\n\t        captchaObj.onReady(function () {\n\t            $(waitItem[activeKey]).hide();\n\t        });\n\t    };\n\t    $.ajax({\n\t        url: \"api/login-register/?t=\" + (new Date()).getTime(), // 加随机数防止缓存\n\t        type: \"get\",\n\t        dataType: \"json\",\n\t        success: function (data) {\n\t            // 调用 initGeetest 初始化参数\n\t            // 参数1：配置参数\n\t            // 参数2：回调，回调的第一个参数验证码对象，之后可以使用它调用相应的接口\n\t            initGeetest({\n\t                gt: data.data.gt,\n\t                challenge: data.data.challenge,\n\t                new_captcha: data.data.new_captcha, // 用于宕机时表示是新验证码的宕机\n\t                offline: !data.data.success, // 表示用户后台检测极验服务器是否宕机，一般不需要关注\n\t                product: \"float\", // 产品形式，包括：float，popup\n\t                width: \"100%\"\n\t            }, handler);\n\t        }\n\t    });\t\n\t}\n\t$('#mfaBtn').on('click',function(e){\n\t\t$('#mfa').val('stop')\n\t})\n    const showItem = ['#form-pwd','#form-ldap']\n    const captchaItem = ['#captcha','#captcha2'];\n    const waitItem = ['#wait','#wait2']\n\n\t//加入class让tab自动选中\n\t$('.login-form-title-box-btn').each((index,item)=>{\n\t\tif($(item)[0].dataset.key == key){\n\t\t\t$(item).addClass('login-form-title-box-btn-check')\n\t\t}\n\t})\n\n\n    showTabItem()\n    $('.login-form-title-box-btn').click(e=>{\n\t\t$('.login-form-title-box-btn').each((index,item)=>{\n\t\t\t$(item).removeClass('login-form-title-box-btn-check')\n\t\t})\n\t\tconst btnItem = $(e.target)\n\t\tkey = btnItem[0].dataset.key\n\t    \tbtnItem.addClass('login-form-title-box-btn-check')\n\t\tshowTabItem()\n\t\t\n\t\t//如果已经切换的时候没有初始化过极验的按钮\n\t\tif($(`${captchaItem[key]} .geetest_holder`).length == 0){\n\t\t\tinitCaptch()\n\t    }\n    \t})\n\n    \tinitCaptch()\n</script>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login06031722.html.bak",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <link rel=\"icon\" type=\"image/x-icon\" href=\"{{STATIC_URL}}favicon.ico\">\n        <link href=\"{{STATIC_URL}}css/bk.{{CSS_SUFFIX}}\" rel=\"stylesheet\" type=\"text/css\" />\n        <link href=\"{{STATIC_URL}}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\n        <link href=\"{{STATIC_URL}}css/login.{{CSS_SUFFIX}}?v={{STATIC_VERSION}}\" rel=\"stylesheet\" type=\"text/css\" />\n        <title>{% trans '登录 | OpsAny' %}</title>\n    </head>\n    <body>\n        <div class=\"page-content\">\n            <div class=\"header\" style=\"\">\n                <div class=\"logo\" style=\"\">\n                    <img style=\"\" src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"30\" width=\"220\" alt=\"\" />\n                </div> \n            </div>\n            <div style='margin-top: 9%;display: flex;flex-direction: column;margin-left: 16%;' >\n                <img width=\"450px\" height=\"85px\" src=\"{{STATIC_URL}}icon/home_top_word.png\" alt=\"\">\n            </div>\n            <div class=\"left-img\" style='margin-left: 15.8%;margin-top:2%;'>\n                <img height=\"305\" width=\"535\" src=\"{{STATIC_URL}}icon/home_page_picture.png\" alt=\"\">\n            </div>\n            <div class=\"login-from\" style=\"margin-top: 5%;\">\n                <div class=\"logo-title\">\n                    <!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n                    欢迎登录\n                </div>\n                <div class=\"from-detail\" style=\"margin-top: -3%;\">\n                    <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n                        <div class=\"is-danger-tip\">\n                            {% if form.errors or form.non_field_errors %}\n                                <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '账户或者密码错误，请重新输入' %}</span>\n                            {% endif %}\n                        </div>\n                        <div class=\"form-login\">\n                            <div class=\"user group-control\" style=\"margin-bottom: 10%;width: 270px;\">\n                                <i class=\"bk-icon icon-user\"></i>\n                                <input id=\"user\" type=\"text\" name=\"username\" placeholder=\"{% trans '请输入用户名' %}\" >\n                            </div>\n                            <div class=\"pwd group-control\" style=\"width: 270px;\">\n                                <i class=\"bk-icon icon-password\"></i>\n                                <input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\" placeholder=\"{% trans '请输入用户密码' %}\">\n                            </div>\n                            <div>\n                                <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n                                <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n                            </div>\n                            <div class=\"btn-content clearfix\" style=\"\">\n                                <button class=\"login-btn\" style=\"width: 270px;\">{% trans '登录' %}</button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n    <footer class=\"footer\">\n\t\t<p>\n            <a href=\"#\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">Copyright © 2012-2020 OpsAny. All Rights Reserved.</a>\n\t\t</p>\n\t\t<!-- <p>Copyright © 2012-2020 womaiyun. All Rights Reserved.</p> -->\n\t</footer>\n        </div>\n        <div class=\"error-message-content is-chrome\">\n            <span>{% trans '您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果' %}</span><i class=\"bk-icon icon-close-circle-shape\" id=\"close-chrome\"></i>\n        </div>\n    </body>\n    <!-- js 国际化 -->\n    <script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n    <script src=\"{{STATIC_URL}}assets/jquery-1.10.2.min.js\"></script>\n    <script src=\"{{STATIC_URL}}js/login.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login_demo.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n\n<html lang=\"en\">\n\n<head>\n\t<meta name=\"robots\" content=\"noindex,nofollow\">\n\t<meta charset=\"utf-8\">\n\t<link rel=\"icon\" type=\"image/x-icon\" href=\"{{STATIC_URL}}favicon.ico\">\n\t<link href=\"{{STATIC_URL}}css/bk.{{CSS_SUFFIX}}\" rel=\"stylesheet\" type=\"text/css\" />\n\t<link href=\"{{STATIC_URL}}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\n\t<link href=\"{{STATIC_URL}}css/login.{{CSS_SUFFIX}}?v=0.81\" rel=\"stylesheet\" type=\"text/css\" />\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}modal/icon/iconfont.css\">\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}modal/modal.css\">\n\t<style>\n\t\t.geetest_holder.geetest_wind .geetest_logo,\n\t\t.geetest_holder.geetest_wind .geetest_success_logo {\n\t\t\tdisplay: none;\n\t\t}\n\t</style>\n\t<title>{% trans '登录 | 数字化运维平台' %}</title>\n</head>\n\n<body>\n\t<p></p>\n\t<div class=\"page-content\"\n\t\tstyle=\"background: url({{ IMG_URL }}img/bg_image.png) center no-repeat; background-size: 100% 100%;\">\n\t\t<div class=\"header\" style=\"box-shadow: 0px 0px 6px 0px rgba(12, 34, 65, 0.2)\">\n\t\t\t<div>\n\t\t\t\t【演示用户：demo，密码：123456.coM】演示用户由于权限限制，仅可查看部分功能，完整功能请私有化部署社区版使用。\n\t\t\t</div>\n\t\t\t<div class=\"logo\" style=\"\">\n\t\t\t\t<img style=\"height:50px\" src=\"{{ IMG_URL }}img/bk_login.png\" alt=\"\" />\n\t\t\t</div>\n\t\t\t<div style=\"margin: 0 30px 0 0\">\n\t\t\t\t<a href=\"/docs/\" i18n=\"help_center\" target=\"_blank\" style=\"color:#666\"\n\t\t\t\t\tclass=\"container_header_right_child\">帮助中心</a>\n\t\t\t\t<span class=\"drop_down\" style=\"color: #666; margin-left: 10px\">\n\t\t\t\t\t<span class=\"show_name\">简体中文</span>\n\t\t\t\t\t<svg t=\"1622808046517\" class=\"icon\" style=\"margin-left: 5px\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\" p-id=\"2424\" width=\"8\" height=\"8\">\n\t\t\t\t\t\t<path d=\"M0.006 284.4l56.597-56.598L512 683.2l455.396-455.397 56.598 56.597L512 796.395z\"\n\t\t\t\t\t\t\tp-id=\"2425\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<ul class=\"drop_down_list\">\n\t\t\t\t\t\t<li onclick=\"chooseLanguage('zh_CN','简体中文')\"> <img width=\"20px\"\n\t\t\t\t\t\t\t\tsrc=\"{{STATIC_URL}}img/logo/zh_CN.png\" /> <a>简体中文</a></li>\n\t\t\t\t\t\t<li onclick=\"chooseLanguage('zh_TW','繁体中文')\"> <img width=\"20px\"\n\t\t\t\t\t\t\t\tsrc=\"{{STATIC_URL}}img/logo/zh_TW.png\" /> <a>繁體中文</a></li>\n\t\t\t\t\t\t<li onclick=\"chooseLanguage('en','English')\"> <img width=\"20px\"\n\t\t\t\t\t\t\t\tsrc=\"{{STATIC_URL}}img/logo/en.png\" /> <a>English</a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div style='margin-top: 9%;display: flex;flex-direction: column;margin-left: 20%;'>\n\t\t\t<img width=\"540px\" src=\"{{ IMG_URL }}img/home_top_word.png\" alt=\"\">\n\t\t</div>\n\t\t<div class=\"left-img\" style='margin-left: 20%;margin-top:2%;'>\n\t\t\t<img height=\"410\" width=\"540\" src=\"{{ IMG_URL }}img/home_page_picture.png\" alt=\"\">\n\t\t</div>\n\n\t\t{% if mfa != \"start\" %}\n\t\t<div class=\"login-from\" style=\"margin-top: 5%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2)\">\n\t\t\t<div class=\"login-form-title\">\n\t\t\t\t<div class=\"login-form-title-box\">\n\t\t\t\t\t<div i18n=\"password_login\" class=\"login-form-title-box-btn \" data-key=\"0\">密码登录</div>\n\t\t\t\t\t<div i18n=\"LDAP_login\" class=\"login-form-title-box-btn\" data-key='1'>LDAP登录</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!--密码登录-->\n\t\t\t<div id=\"form-pwd\" data-key=\"0\">\n\t\t\t\t<div class=\"logo-title\" i18n=\"password_login_title\">\n\t\t\t\t\t<!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t\t\t\t\t欢迎使用密码登录\n\t\t\t\t</div>\n\t\t\t\t<p class=\"logo-title1\"></p>\n\t\t\t\t<div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 10%\">\n\t\t\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t\t\t{% csrf_token %}\n\t\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t\t{% if error_message %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{{ error_message }}</span>\n\t\t\t\t\t\t\t{% elif data == '1' and tab_key != '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message1\">请先完成验证码验证</span>\n\t\t\t\t\t\t\t{% elif data == '2' and tab_key != '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message2\">{% trans '账户或者密码错误，请重新输入' %}</span>\n\t\t\t\t\t\t\t{% elif form.errors or form.non_field_errors  %}\n\t\t\t\t\t\t\t{% if tab_key != '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"password_login_message2\">{% trans '账户或者密码错误，请重新输入.' %}</span>\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t\t\t\t\t\t\t\t<input id=\"user\" type=\"text\" name=\"username\" i18n_p=\"password_login_placeholder1\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"{% trans '请输入用户名' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"pwd group-control\" style=\"width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t\t\t\t\t\t\t\t<input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"\n\t\t\t\t\t\t\t\t\ti18n_p=\"password_login_placeholder2\" placeholder=\"{% trans '请输入用户密码' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div style=\"margin-top: 8%\">\n\t\t\t\t\t\t\t\t<div id=\"captcha\">\n\t\t\t\t\t\t\t\t\t<p id=\"wait\" i18n=\"wait\" class=\"show\">正在加载验证码......</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t\t\t\t\t\t\t\t<button i18n=\"password_login_btn\" class=\"login-btn\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 270px;border-radius: 22px\">{% trans '立即登录' %}</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"other_login\">\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t\t<div i18n=\"password_login_other\" class=\"other_login_text\">其他登录方式</div>\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"qywxbox\">\n\t\t\t\t\t\t\t\t<div title=\"企业微信登录\" class=\"qywxbox_enable\" data-auth_type=\"3\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/qywx.png\" alt=\"企业微信\" data-auth_type=\"3\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"3\" i18n=\"WeChat_Work\">企业微信</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"钉钉登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"4\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/dingding.png\" alt=\"钉钉\" data-auth_type=\"4\" />  <span data-auth_type=\"4\">钉钉</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"飞书登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"5\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/feishu.png\" alt=\"飞书\" data-auth_type=\"5\" />  <span data-auth_type=\"5\">飞书</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<div title=\"SSO\" class=\"qywxbox_enable sso_box\" data-auth_type=\"8\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/SSO.png\" alt=\"SSO\" data-auth_type=\"8\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"8\" i18n=\"SSO\">SSO</span>\n\t\t\t\t\t\t\t\t\t<div class=\"sso_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div title=\"OAuth\" class=\"qywxbox_enable oauth_box\" data-auth_type=\"6\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/oauth.png\" alt=\"OAuth\" data-auth_type=\"6\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"6\" i18n=\"OAuth\">OAuth</span>\n\t\t\t\t\t\t\t\t\t<div class=\"oauth_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!--LDAP登录-->\n\t\t\t<div id=\"form-ldap\" style=\"display:none\" data-key=\"1\">\n\t\t\t\t<div class=\"logo-title\" i18n=\"LDAP_login_title\">\n\t\t\t\t\t<!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t\t\t\t\t欢迎使用LDAP登录\n\t\t\t\t</div>\n\t\t\t\t<div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 10%;background:#ffffff\">\n\t\t\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t\t\t{% csrf_token %}\n\t\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t\t{% if data == '1' and tab_key == '1' %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message1\">{% trans '请先完成验证码验证' %}</span>\n\t\t\t\t\t\t\t{% elif data == '2' and tab_key == '1'  %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message2\">{% trans '账户或者密码错误，请重新输入' %}</span>\n\t\t\t\t\t\t\t{% elif form.errors or form.non_field_errors %}\n\t\t\t\t\t\t\t<div></div>\n\t\t\t\t\t\t\t{% if tab_key == '1' %}\n\t\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\t\ti18n=\"login_message2\">{% trans '账户或者密码错误，请重新输入.' %}</span>\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-code\"></i>\n\t\t\t\t\t\t\t\t<input hidden id=\"user\" type=\"select\" name=\"domain\" value=\"\" i18n_p=\"LDAP_login_placeholder1\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"{% trans '请输入登录域' %}\">\n\t\t\t\t\t\t\t\t\t<div class=\"select_box select_box_active\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"select_box_content\"><span class=\"select_box_content_placeholder\">请选择登录域</span> <img src=\"{{STATIC_URL}}img/down.png\" /></div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"domain_options\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"no_domain\">暂无登录域</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t\t\t\t\t\t\t\t<input id=\"user\" type=\"text\" name=\"username\" i18n_p=\"LDAP_login_placeholder2\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"{% trans '请输入LDAP用户名' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"pwd group-control\" style=\"width: 270px;\">\n\t\t\t\t\t\t\t\t<i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t\t\t\t\t\t\t\t<input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"\n\t\t\t\t\t\t\t\t\ti18n_p=\"LDAP_login_placeholder3\" placeholder=\"{% trans '请输入密码' %}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div style=\"margin-top: 8%\">\n\t\t\t\t\t\t\t\t<div id=\"captcha2\">\n\t\t\t\t\t\t\t\t\t<p id=\"wait2\" i18n=\"wait\" class=\"show\">正在加载验证码......</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"tab_key\" value=\"1\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t\t\t\t\t\t\t\t<button class=\"login-btn\" style=\"width: 270px;border-radius: 22px\"\n\t\t\t\t\t\t\t\t\ti18n=\"password_login_btn\">{% trans '立即登录' %}</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"other_login\">\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t\t<div class=\"other_login_text\" i18n=\"password_login_other\">其他登录方式</div>\n\t\t\t\t\t\t\t\t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"qywxbox\">\n\n\t\t\t\t\t\t\t\t<div title=\"企业微信登录\" class=\"qywxbox_enable\" data-auth_type=\"3\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/qywx.png\" alt=\"企业微信\" data-auth_type=\"3\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"3\" i18n=\"WeChat_Work\">企业微信</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"钉钉登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"4\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/dingding.png\" alt=\"钉钉\" data-auth_type=\"4\" />  <span data-auth_type=\"4\">钉钉</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t<div title=\"飞书登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"5\">-->\n\t\t\t\t\t\t\t\t<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/feishu.png\" alt=\"飞书\" data-auth_type=\"5\" />  <span data-auth_type=\"5\">飞书</span>-->\n\t\t\t\t\t\t\t\t<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t<div title=\"SSO\" class=\"qywxbox_enable sso_box\" data-auth_type=\"8\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/SSO.png\" alt=\"SSO\" data-auth_type=\"8\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"8\" i18n=\"SSO\">SSO</span>\n\t\t\t\t\t\t\t\t\t<div class=\"sso_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div title=\"OAuth\" class=\"qywxbox_enable oauth_box\" data-auth_type=\"6\">\n\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/oauth.png\" alt=\"OAuth\" data-auth_type=\"6\" /> <span\n\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"6\" i18n=\"OAuth\">OAuth</span>\n\t\t\t\t\t\t\t\t\t<div class=\"oauth_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t{% endif %}\n\t\t{% if google_auth_status == \"3\" %}\n\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t\t\t<div class=\"mfa_setting_box\">\n\t\t\t\t<h4>\n\t\t\t\t\t<span i18n=\"MFABing_title\">绑定 MFA 设备</span>\n\t\t\t\t\t<span class=\"info\" style=\"margin-left:5px\">\n\t\t\t\t\t\t<i style=\"background:#1890FF;color:#fff;font-size:12px;padding:2px;border-radius:50%;\"\n\t\t\t\t\t\t\tclass=\"bk-icon icon-info\"></i>\n\t\t\t\t\t\t<span i18n=\"MFABing_message1\" style=\"padding-left:3px\">管理员已开启强制所有用户绑定MFA功能，请完成以下操作以免影响使用。</span>\n\t\t\t\t\t</span>\n\t\t\t\t</h4>\n\t\t\t\t<div class=\"mfa_setting_content\">\n\t\t\t\t\t<h4 class=\"step\" i18n=\"MFABing_first_step\">\n\t\t\t\t\t\t第一步：获取身份验证器\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"step_one\">\n\t\t\t\t\t\t<div class=\"step_one_action\">\n\t\t\t\t\t\t\t<div class=\"step_one_action_title\" i18n=\"MFABing_first_action_title\">方法1. 安装阿里云、华为云APP</div>\n\t\t\t\t\t\t\t<div class=\"step_one_action_box\" >\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_usage\">使用步骤：</div>\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_ali\">阿里云：打开阿里云APP > 点击“右上角+号”> 选择【虚拟MFA】</div>\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_huawei\">华为云：打开华为云APP > 点击“我的”> 选择【MFA】</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div  class=\"step_one_action\">\n\t\t\t\t\t\t\t<div class=\"step_one_action_title\"><span i18n=\"MFABing_first_action_title2\">方法2. 微信搜索小程序“腾讯身份验证器”</span> <img style=\"vertical-align: bottom;\" src=\"{{STATIC_URL}}img/tuijian.png\" alt=\"推荐\"  /></div>\n\t\t\t\t\t\t\t<div class=\"step_one_action_box\">\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_usage\">使用步骤：</div>\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_tx\">授权打开“腾讯身份验证器”小程序 > 点击【二维码激活】 > 然后扫描下方“第二步”展示的二维码</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4 class=\"step\" i18n=\"MFABing_second_step\">\n\t\t\t\t\t\t第二步：使用阿里云APP、华为云APP、腾讯身份验证器小程序扫描以下二维码\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"step_content\">\n\t\t\t\t\t\t<img id=\"google_auth_pic\"\n\t\t\t\t\t\t\tstyle=\"height:120px;padding:0px;border:1px solid #e8e8e8;margin:0 0 0 100px;\" src=\"\"\n\t\t\t\t\t\t\talt=\"\" />\n\t\t\t\t\t\t<div style=\"margin:0 0 0 20px;font-size:12px;\">\n\t\t\t\t\t\t\t<p i18n=\"MFABing_second_step_message1\">扫不了码？试试账号&密钥方式获取</p>\n\t\t\t\t\t\t\t<p style=\"margin:10px 0 10px 0;\"><span style=\"width:50px;display:inline-block;\"\n\t\t\t\t\t\t\t\t\ti18n=\"MFABing_second_step_account_number\">账号：</span><span\n\t\t\t\t\t\t\t\t\tstyle=\"color:#333;\">{{ username }}</span></p>\n\t\t\t\t\t\t\t<p style=\"width:280px;word-break: break-word;display:flex;\">\n\t\t\t\t\t\t\t\t<span style=\"flex:0 0 50px;\" i18n=\"MFABing_second_step_secret_key\">密钥：</span>\n\t\t\t\t\t\t\t\t<span>{{ secret }}<a onclick=\"copy()\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"margin:0 0 0 10px;color:#0ba360;cursor:pointer\"\n\t\t\t\t\t\t\t\t\t\ti18n=\"MFABing_second_step_copy\">复制</a> </span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4 class=\"step\">\n\t\t\t\t\t\t<span i18n=\"MFABing_third_step\">第三步：输入授权码</span> <input\n\t\t\t\t\t\t\ti18n_p=\"MFABing_third_authorization_code\" placeholder=\"请输入6位授权码\" name=\"verify_code\"\n\t\t\t\t\t\t\ttype=\"text\" />\n\t\t\t\t\t</h4>\n\t\t\t\t\t<input id=\"copy\"  style=\"position:absolute;z-index:-10;opacity: 0;\" value=\"{{ secret }}\" />\n\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t{% if bind_google_auth and bind_google_auth.code != 200 %}\n\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\ti18n=\"MFABing_message2\">{% trans '认证失败，请检查您的验证码是否正确' %}</span>\n\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<footer>\n\t\t\t\t\t<button i18n=\"MFABind_submit\">确定绑定</button>\n\t\t\t\t</footer>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"hidden\" name=\"google_auth_type\" value=\"bind_google_auth\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"secret\" value=\"{{ secret }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"google_auth_url\" value=\"{{ google_auth_url }}\">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</form>\n\t\t{% else %}\n\t\t{% if mfa == \"start\" %}\n\t\t<!--LDAP动态码输入-->\n\t\t<div class=\"login-from\" style=\"margin-top: 8%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2);\">\n\t\t\t<form action=\"{{ app_path }}\" method=\"get\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t<input type=\"hidden\" id=\"mfa\" name=\"mfa\" value=\"{{ mfa }}\">\n\t\t\t\t<input type=\"hidden\" name=\"c_url\" value=\"{{c_url}}\">\n\t\t\t\t<button id=\"mfaBtn\">\n\t\t\t\t\t<i style=\"color: #0ba360\" class=\"bk-icon icon-arrows-left\"></i>\n\t\t\t\t\t<span i18n=\"back_btn\">返回</span></button>\n\t\t\t</form>\n\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t{% csrf_token %}\n\n\t\t\t\t<div class=\"ldap-icon\">\n\t\t\t\t\t<img src=\"{{STATIC_URL}}img/ldap-icon.png\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ldap-box\">\n\n\t\t\t\t\t<div class=\"ldap-title\" i18n=\"MFA_title1\">账号保护已开启，请根据提示完成以下操作</div>\n\t\t\t\t\t{% if google_auth_status != \"7\" %}\n\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t\t\t\t<div class=\"ldap-step-num\" i18n=\"MFA_first_step\">第一步：</div>\n\t\t\t\t\t\t<div class=\"ldap-step-desc\" i18n=\"MFA_first_message\">请使用阿里云APP、华为云APP、微信搜索小程序腾讯身份验证器三种方式获取动态验证码</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t\t\t\t<div class=\"ldap-step-num\" i18n=\"MFA_second_step\">第二步：</div>\n\t\t\t\t\t\t<div class=\"ldap-step-desc\" i18n=\"MFA_second_message\">请输入6位动态码</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t<div class=\"form-login\" style=\"padding: 0;margin-bottom:20px\">\n\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width:100%\">\n\n\t\t\t\t\t\t\t{% if google_auth_status == \"7\" %}\n\t\t\t\t\t\t\t<div style=\"text-align:center;margin-top:90px\" i18n=\"MFA_message1\">您已开启7天免认证登录，请点击确定按钮直接登录！\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<input hidden type=\"number\" name=\"verify_code\" value=\"123123\" i18n_p=\"MFA_dynamicCode\"\n\t\t\t\t\t\t\t\tplaceholder=\"请输入6位动态码\" />\n\n\t\t\t\t\t\t\t{% else %}\n\t\t\t\t\t\t\t<input style=\"padding-left:10px\" type=\"number\" name=\"verify_code\" i18n_p=\"MFA_dynamicCode\"\n\t\t\t\t\t\t\t\tplaceholder=\"请输入6位动态码\" />\n\t\t\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\t\t{% if check_status == False %}\n\t\t\t\t\t\t\t<span style=\"color:red;font-size:13px;display:inline-block;margin:5px 0\"\n\t\t\t\t\t\t\t\ti18n=\"MFA_message2\">{% trans '请确认您的验证码是否正确' %}</span>\n\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{% if google_auth_status != \"7\" %}\n\t\t\t\t\t\t<div style=\"margin:50px 0 0 0\">\n\t\t\t\t\t\t\t<input name=\"seven_days_free\" type=\"checkbox\" value=\"1\" /> <span\n\t\t\t\t\t\t\t\ti18n=\"MFA_laissez_passer\">7天内免验证</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 20px\">\n\t\t\t\t\t\t\t<button class=\"login-btn\" style=\"width: 100%;border-radius: 22px\"\n\t\t\t\t\t\t\t\ti18n=\"MFA_submit\">{% trans '确定' %}</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"color:grey;font-size:12px;padding-top:10px\" i18n=\"MFA_message3\">\n\t\t\t\t\t\t\t如无法提供安全码，请联系管理员解除双因素验证后继续操作。</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{ app_id }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n\t\t\t\t\t<input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n\t\t\t\t\t<input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t\t{% endif %}\n\t\t{% endif %}\n\n\t\t<footer class=\"footer\">\n\t\t\t<!-- <p>\n\t\t\t\t<a href=\"#\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">Copyright © 2012-2020 OpsAny. All\n\t\t\t\t\tRights Reserved.</a>\n\t\t\t</p> -->\n\t\t\t<!-- <p>Copyright © 2012-2020 womaiyun. All Rights Reserved.</p> -->\n\t\t</footer>\n\t</div>\n\t<input hidden id=\"tab_key\" value=\"{{tab_key}}\"></input>\n\t<div class=\"error-message-content is-chrome\">\n\t\t<span i18n=\"Chrome\">{% trans '您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果' %}</span><i\n\t\t\tclass=\"bk-icon icon-close-circle-shape\" id=\"close-chrome\"></i>\n\t</div>\n\n\t<div class=\"m-modal__wrapper\" id=\"m-modal__wrapper\">\n\t\t<div class=\"m-modal__container\">\n\t\t\t<div class=\"m-modal__header\">\n\t\t\t\t<div class=\"m-modal__title\" id=\"m-modal__title\"></div>\n\t\t\t\t<button class=\"m-modal__headerbtn\">\n\t\t\t\t\t<i class=\"m-modal__close iconfont icon-close\" id=\"m-modal__close\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"m-modal__body\">\n\t\t\t\t<div id=\"qywxCode\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n</body>\n<!-- js 国际化 -->\n<script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n<script src=\"{{STATIC_URL}}assets/jquery-3.6.1.min.js\"></script>\n<script src=\"{{STATIC_URL}}assets/gt.js\"></script>\n<script src=\"{{STATIC_URL}}js/login.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n<script src=\"{{STATIC_URL}}js/language.js\"></script>\n<!-- 企业微信-->\n<script src=\"https://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js\" type=\"text/javascript\" charset=\"utf-8\"\n\tdefer></script>\n<script>\n\tlet key = $('#tab_key').val() || 0\n\tlet OAuthList = []\n\tlet SSOList = []\n\t//控制展示和隐藏哪个tab里面的内容\n\tfunction showTabItem() {\n\t\tfor (let item of showItem) {\n\t\t\t$(item).hide()\n\t\t\t$(showItem[key]).show()\n\t\t}\n\t}\n\n\t//初始化企业微信二维码\n\tfunction initWwlogin(appid, agentid, redirect_uri) {\n\t\twindow.WwLogin({\n\t\t\tid: \"qywxCode\",\n\t\t\tappid, //企业微信的cropID，在 企业微信管理端->我的企业中查看 - \n\t\t\tagentid, //企业微信当前应用ID - \n\t\t\tredirect_uri: encodeURI(redirect_uri), //回调地址 - \n\t\t\tstate: ''\n\t\t});\n\t}\n\n\n\t//获取url参数\n\tfunction getQueryVariable(variable) {\n\t\tvar query = window.location.search.substring(1);\n\t\tvar vars = query.split(\"&\");\n\t\tfor (var i = 0; i < vars.length; i++) {\n\t\t\tvar pair = vars[i].split(\"=\");\n\t\t\tif (pair[0] == variable) {\n\t\t\t\treturn pair[1];\n\t\t\t}\n\t\t}\n\t\treturn (false);\n\t}\n\n\t//获取OAuth列表\n\tfunction getOAuthList() {\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_auth_config/?auth_type=6\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (res) {\n\t\t\t\tif (res.code == '00' && res.result) {\n\t\t\t\t\tOAuthList = res.data.data || []\n\t\t\t\t\tif (res.data.data.length) {\n\t\t\t\t\t\tlet html = ''\n\t\t\t\t\t\tres.data.data.forEach(item => {\n\t\t\t\t\t\t\tlet origin = window.location.origin\n\t\t\t\t\t\t\thtml +=\n\t\t\t\t\t\t\t\t`<div title=\"${item.enable?item.name:'当前认证未启用'}\" class=\"${item.enable?'oauth_auth_item':'disabled_auth'}\" data-key=\"${item.id}\"> <img src=\"${origin}/${item.auth_icon.url}\"></img> <span>${item.name}</span></div>`\n\t\t\t\t\t\t})\n\t\t\t\t\t\t$('.oauth_box_content').html(html)\n\t\t\t\t\t\t$('.oauth_auth_item').on('click', function (e) {\n\t\t\t\t\t\t\tlet key = $(e.currentTarget).data('key')\n\t\t\t\t\t\t\tconst activeAuth = OAuthList.find(item => item.id == key)\n\t\t\t\t\t\t\tconst url = activeAuth.auth_login_url +\n\t\t\t\t\t\t\t\t`?response_type=accessCode&client_id=${activeAuth.app_id}&redirect_uri=${window.location.origin}${window.location.pathname}?domain=${activeAuth.domain}%26auth_type=6`\n\t\t\t\t\t\t\twindow.location.href = url\n\t\t\t\t\t\t})\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.oauth_box').attr('title', '暂未开启OAuth登录')\n\t\t\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$('.oauth_box').attr('title', '暂未开启OAuth登录')\n\t\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (e) {\n\t\t\t\t$('.oauth_box').attr('title', '暂未开启OAuth登录')\n\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\t\t\t},\n\t\t});\n\t}\n\n\t//获取SSO列表\n\tfunction getSSOList() {\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_auth_config/?auth_type=8\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (res) {\n\t\t\t\tif (res.code == '00' && res.result) {\n\t\t\t\t\tSSOList = res.data.data || []\n\t\t\t\t\tif (res.data.data.length) {\n\t\t\t\t\t\tlet html = ''\n\t\t\t\t\t\tres.data.data.forEach(item => {\n\t\t\t\t\t\t\tlet origin = window.location.origin\n\t\t\t\t\t\t\thtml +=\n\t\t\t\t\t\t\t\t`<div title=\"${item.enable?item.name:'当前认证未启用'}\" class=\"${item.enable?'sso_auth_item':'disabled_auth'}\" data-key=\"${item.id}\"> <img src=\"${origin}/${item.auth_icon.url}\"></img> <span>${item.name}</span></div>`\n\t\t\t\t\t\t})\n\t\t\t\t\t\t$('.sso_box_content').html(html)\n\t\t\t\t\t\t$('.sso_auth_item').on('click', function (e) {\n\t\t\t\t\t\t\tlet key = $(e.currentTarget).data('key')\n\t\t\t\t\t\t\tconst activeAuth = SSOList.find(item => item.id == key)\n\t\t\t\t\t\t\tconst url = activeAuth.auth_login_url +\n\t\t\t\t\t\t\t\t`?callback=${window.location.origin}${window.location.pathname}?domain=${activeAuth.domain}%26auth_type=8`\n\t\t\t\t\t\t\twindow.location.href = url\n\t\t\t\t\t\t})\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.sso_box').attr('title', '暂未开启SSO登录')\n\t\t\t\t\t\t$('.sso_box').addClass('qywxbox_disabled')\n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$('.sso_box').attr('title', '暂未开启SSO登录')\n\t\t\t\t\t$('.sso_box').addClass('qywxbox_disabled')\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (e) {\n\t\t\t\t$('.sso_box').attr('title', '暂未开启SSO登录')\n\t\t\t\t$('.sso_box').addClass('qywxbox_disabled')\n\t\t\t},\n\t\t});\n\t}\n\n\t//获取登录域列表\n\tfunction getDomainList(){\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_auth_config/?auth_type=2,7\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess:function(res){\n\t\t\t\tif(res.code == '00' && res.result){\n\t\t\t\t\tlet domainList = res.data.data || []\n\t\t\t\t\tif(domainList.length){\n\t\t\t\t\t\tlet html = ''\n\t\t\t\t\t\tdomainList.forEach(item => {\n\t\t\t\t\t\t\thtml += `<div class=\"domain_options_item\" title=\"${item.domain}\">${item.domain}</div>`\n\t\t\t\t\t\t})\n\t\t\t\t\t\t$('.domain_options').html(html)\n\t\t\t\t\t\t$('.domain_options_item').on('click',function(e){\n\t\t\t\t\t\t\t$('.select_box_content span').html($(e.currentTarget).html()).removeClass('select_box_content_placeholder')\n\t\t\t\t\t\t})\n\t\t\t\t\t\t//默认选中第一项\n\t\t\t\t\t\t$('.select_box_content span').html(domainList[0].domain).removeClass('select_box_content_placeholder')\n\t\t\t\t\t\t$('input[name=\"domain\"]').val(domainList[0].domain)\n\t\t\t\t\t}else {\n\t\t\t\t\t\t$('.select_box_content span').html('暂无登录域').addClass('select_box_content_placeholder')\n\t\t\t\t\t\t$('input[name=\"domain\"]').val('')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\terror:function(e){\n\t\t\t\t$('.select_box_content span').html('暂无登录域').addClass('select_box_content_placeholder')\n\t\t\t\t$('input[name=\"domain\"]').val('')\n\t\t\t}\n\t\t})\n\t}\n\n\t\t//处理domain选择\n\t$('.domain_options').on('click', '.domain_options_item', function (e) {\n\t\t$('.select_box_content span').html($(e.target).html())\n\t\t$('input[name=\"domain\"]').val($(e.target).html())\n\t\t$('.select_box').removeClass('select_box_active')\n\t\tsetTimeout(() => {\n\t\t\t$('.select_box').addClass('select_box_active')\n\t\t}, 0);\n\t})\n\n\t//初始化验证码\n\tfunction initCaptch(type) {\n\t\tconst activeKey = key || 0\n\t\tvar handler = function (captchaObj) {\n\t\t\t$(\"#submit\").click(function (e) {\n\t\t\t\tvar result = captchaObj.getValidate();\n\t\t\t\tif (!result) {\n\t\t\t\t\t$(\"#notice\").show();\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t$(\"#notice\").hide();\n\t\t\t\t\t}, 2000);\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\t\t\tif ($('#mfa').val() == 'start' || \"{{google_auth_status}}\" == 3) return\n\t\t\t// 将验证码加到id为captcha的元素里，同时会有三个input的值用于表单提交\n\t\t\tcaptchaObj.appendTo(captchaItem[activeKey]);\n\t\t\tcaptchaObj.onReady(function () {\n\t\t\t\t$(waitItem[activeKey]).hide();\n\t\t\t});\n\t\t};\n\t\t$.ajax({\n\t\t\turl: \"api/login-register/?t=\" + (new Date()).getTime(), // 加随机数防止缓存\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (data) {\n\t\t\t\t// 调用 initGeetest 初始化参数\n\t\t\t\t// 参数1：配置参数\n\t\t\t\t// 参数2：回调，回调的第一个参数验证码对象，之后可以使用它调用相应的接口\n\t\t\t\tinitGeetest({\n\t\t\t\t\tgt: data.data.gt,\n\t\t\t\t\tchallenge: data.data.challenge,\n\t\t\t\t\tnew_captcha: data.data.new_captcha, // 用于宕机时表示是新验证码的宕机\n\t\t\t\t\toffline: !data.data.success, // 表示用户后台检测极验服务器是否宕机，一般不需要关注\n\t\t\t\t\tproduct: \"float\", // 产品形式，包括：float，popup\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\tlang: type,\n\t\t\t\t}, handler);\n\t\t\t}\n\t\t});\n\t}\n\t$('#mfaBtn').on('click', function (e) {\n\t\t$('#mfa').val('stop')\n\t})\n\tconst showItem = ['#form-pwd', '#form-ldap']\n\tconst captchaItem = ['#captcha', '#captcha2'];\n\tconst waitItem = ['#wait', '#wait2']\n\n\t//加入class让tab自动选中\n\t$('.login-form-title-box-btn').each((index, item) => {\n\t\tif ($(item)[0].dataset.key == key) {\n\t\t\t$(item).addClass('login-form-title-box-btn-check')\n\t\t}\n\t})\n\n\n\tshowTabItem()\n\tgetOAuthList()\n\tgetSSOList()\n\tgetDomainList()\n\tloadDemoTip()\n\t$('.login-form-title-box-btn').click(e => {\n\t\t$('.login-form-title-box-btn').each((index, item) => {\n\t\t\t$(item).removeClass('login-form-title-box-btn-check')\n\t\t})\n\t\tconst btnItem = $(e.target)\n\t\tkey = btnItem[0].dataset.key\n\t\tbtnItem.addClass('login-form-title-box-btn-check')\n\t\tshowTabItem()\n\n\t\t//如果已经切换的时候没有初始化过极验的按钮\n\t\tif ($(`${captchaItem[key]} .geetest_holder`).length == 0) {\n\t\t\tinitCaptch()\n\t\t}\n\t})\n\n\n\t// console.log(\"{{ google_auth_url }}\")\n\t$(\"#google_auth_pic\").attr(\"src\", window.location.origin + \"/\" + \"{{ google_auth_url }}\")\n\n\tfunction copy() {\n\t\tlet input = document.getElementById(\"copy\");\n\t\tinput.select();\n\t\tdocument.execCommand(\"copy\")\n\t}\n\n\n\t$('.qywxbox').click(e => {\n\t\t//3 为企业微信\n\t\t//4 为钉钉\n\t\t//5 为飞书\n\t\tconst auth_type = $(e.target).data('auth_type')\n\t\tif (auth_type != 3) return\n\t\t$('#m-modal__wrapper').css({\n\t\t\t'display': 'block'\n\t\t})\n\t\tlet appid;\n\t\tlet agentid;\n\t\tlet c_url = encodeURIComponent(getQueryVariable('c_url') || '')\n\t\tlet is_from_logout = encodeURIComponent(getQueryVariable('is_from_logout') || '')\n\t\t//回调地址 默认回调到登录页 由于此url只允许带一个参数 所以下面注释的方式不起作用\n\t\t//let redirect_uri = window.location.origin+`/login/?c_url=${c_url}&is_from_logout=${is_from_logout}&auth_type=${auth_type}`; \n\t\tlet redirect_uri = window.location.origin + `/login/?auth_type=${auth_type}`; //回调地址 默认回调到登录页\n\t\t$.ajax({\n\t\t\turl: \"accounts/get_vx_work_config/\",\n\t\t\ttype: \"get\",\n\t\t\tdataType: \"json\",\n\t\t\tsuccess: function (res) {\n\t\t\t\tif (res.code == '00' && res.result) {\n\t\t\t\t\tappid = res.data.corp_id;\n\t\t\t\t\tagentid = res.data.agent_id;\n\t\t\t\t\tinitWwlogin(appid, agentid, redirect_uri);\n\t\t\t\t} else {\n\t\t\t\t\t$('#m-modal__title').html(`提示`)\n\t\t\t\t\t$('#qywxCode').html(`<div>${res.message || '获取参数失败，请重试或联系管理员'}</div>`)\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (e) {\n\t\t\t\t$('#m-modal__title').html(`提示`)\n\t\t\t\t$('#qywxCode').html(`<div>获取参数失败，请重试或联系管理员</div>`)\n\t\t\t}\n\t\t});\n\t})\n\n\t$('#m-modal__close').click(e => {\n\t\t$('#m-modal__wrapper').css({\n\t\t\t'display': 'none'\n\t\t})\n\t})\n\t//    \tconsole.log(document.cookie)\n\n\tlet arr = document.cookie.split(\";\")\n\tlet obj = {}\n\tarr.map(item => {\n\t\tobj[item.split(\"=\")[0].trim()] = item.split(\"=\")[1]\n\t})\n\tif (obj.opsany_language == \"english\") {\n\t\tsetLanguage(\"en\", \"English\")\n\t\tinitCaptch(\"en\")\n\t} else if (obj.opsany_language == \"chinese_traditional\") {\n\t\tsetLanguage(\"zh_TW\", \"繁體中文\")\n\t\tinitCaptch()\n\t} else {\n\t\tsetLanguage(\"zh_CN\", \"简体中文\")\n\t\tinitCaptch()\n\t}\n\t\n\tif(!obj.opsany_language) {\n\t\tlet exp = new Date()\n\t\texp.setTime(exp.getTime() + 24 * 60 * 60 * 1000)\n        \tdocument.cookie = \"opsany_language=chinese_simplified\" + \";expires=\" + exp.toGMTString() + \";path=/;\"\n    \t}\n\n\tfunction setLanguage(type, text) {\n\t\tlet language = i18n_language[type]\n\t\t$(\".show_name\").html(text)\n\n\t\tlet domList = $('*[i18n]');\n\t\tdomList.map((index, item) => {\n\t\t\t$(item).html(language[item.attributes.i18n.value])\n\t\t})\n\n\t\tlet pList = $('*[i18n_p]');\n\t\tpList.map((index, item) => {\n\t\t\t$(item).attr(\"placeholder\", language[item.attributes.i18n_p.value])\n\t\t})\n\n\t}\n\n\n\t//切换语言\n\tfunction chooseLanguage(type, text) {\n\t\tlet exp = new Date()\n\t\texp.setTime(exp.getTime() + 24 * 60 * 60 * 1000)\n\t\tif (type == \"zh_CN\") {\n\t\t\tdocument.cookie = \"opsany_language=chinese_simplified\" + \";expires=\" + exp.toGMTString() + \";path=/;\"\n\t\t} else if (type == \"zh_TW\") {\n\t\t\tdocument.cookie = \"opsany_language=chinese_traditional\" + \";expires=\" + exp.toGMTString() + \";path=/;\"\n\t\t}\n\t\tif (type == \"en\") {\n\t\t\tdocument.cookie = \"opsany_language=english\" + \";expires=\" + exp.toGMTString() + \";path=/;\"\n\t\t}\n\t\tlocation.reload()\n\n\t}\n</script>\n\n</html>\n"
  },
  {
    "path": "paas-ce/paas/login/templates/login/login_juewei.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <link rel=\"icon\" type=\"image/x-icon\" href=\"{{STATIC_URL}}favicon.ico\">\n        <link href=\"{{STATIC_URL}}css/bk.{{CSS_SUFFIX}}\" rel=\"stylesheet\" type=\"text/css\" />\n        <link href=\"{{STATIC_URL}}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\n        <link href=\"{{STATIC_URL}}css/login.{{CSS_SUFFIX}}?v={{STATIC_VERSION}}\" rel=\"stylesheet\" type=\"text/css\" />\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}modal/icon/iconfont.css\">\n  \t   <link rel=\"stylesheet\" type=\"text/css\" href=\"{{STATIC_URL}}modal/modal.css\">\n  \t   <style>\n  \t   \tinput[disabled]{\n  \t   \t\tcursor:not-allowed !important;\n  \t   \t\tbackground:#eeeeee;\n  \t   \t}\n\n  \t   \t.geetest_holder.geetest_wind .geetest_logo, .geetest_holder.geetest_wind .geetest_success_logo{\n  \t   \t\tdisplay:none;\n  \t   \t}\n  \t   </style>\n        <title>{% trans '登录 | OpsAny' %}</title>\n    </head>\n    <body>\n        <div class=\"page-content\" style=\"background: url({{ IMG_URL }}img/bg_image.png) center no-repeat; background-size: 100% 100%;\">\n            <div class=\"header\" style=\"box-shadow: 0px 0px 6px 0px rgba(12, 34, 65, 0.2)\">\n                <div class=\"logo\" style=\"\">\n                    <img style=\"height:50px\" src=\"{{ IMG_URL }}img/bk_login.png\" alt=\"\" />\n                </div>\n              <div style=\"margin: 0 30px 0 0\" >\n                   <a href=\"/docs/\" target=\"_blank\" style=\"color:#666\"  class=\"container_header_right_child\">帮助中心</a>\n              <span class=\"drop_down\" style=\"color: #666; margin-left: 10px\">\n                <span class=\"show_name\">简体中文</span>\n                <svg t=\"1622808046517\" class=\"icon\" style=\"margin-left: 5px\"  viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2424\" width=\"8\" height=\"8\"><path d=\"M0.006 284.4l56.597-56.598L512 683.2l455.396-455.397 56.598 56.597L512 796.395z\" p-id=\"2425\"></path></svg>\n                <ul class=\"drop_down_list\">\n                    <li><a>简体中文</a></li>\n\n                </ul>\n            </span>\n               </div>\n            </div>\n            <div style='margin-top: 9%;display: flex;flex-direction: column;margin-left: 20%;' >\n                <img width=\"540px\" src=\"{{ IMG_URL }}img/home_top_word.png\" alt=\"\">\n            </div>\n            <div class=\"left-img\" style='margin-left: 20%;margin-top:2%;'>\n                <img height=\"410\" width=\"540\" src=\"{{ IMG_URL }}img/home_page_picture.png\" alt=\"\">\n            </div>\n\n            {% if mfa != \"start\" %}\n            <div class=\"login-from\" style=\"margin-top: 5%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2)\">\n       \t\t<div class=\"login-form-title\">\n       \t\t\t<div class=\"login-form-title-box\">\n\t       \t\t\t<div class=\"login-form-title-box-btn \" data-key=\"0\">密码登录</div>\n\t       \t\t\t<div class=\"login-form-title-box-btn\" data-key='1'>LDAP登录</div>\n       \t\t\t</div>\n       \t\t</div>\n\t\t\t<!--密码登录-->\n       \t\t<div id=\"form-pwd\"  data-key=\"0\">\n\t                <div class=\"logo-title\">\n\t                    <!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t                    欢迎使用密码登录\n\t                </div>\n\t                <p class=\"logo-title1\"></p>\n\t                <div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 10%\">\n\t                    <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t                        <div class=\"is-danger-tip\">\n\t                         {% if error_message %}\n\t                               <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{{ error_message }}</span>\n\t                         {% elif data and tab_key != '1'  %}\n\t                             <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '请先完成验证码验证' %}</span>\n\t                          {% elif form.errors or form.non_field_errors  %}\n\t                          \t{% if tab_key != '1'  %}\n\t                                <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '账户或者密码错误，请重新输入' %}</span>\n\t                              {% endif %}\n\t                          {% endif %}\n\t                        </div>\n\t                        <div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t                            <div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t                                <input id=\"user\" type=\"text\" name=\"username\" value=\"{{ username }}\"  placeholder=\"{% trans '请输入用户名' %}\" >\n\t                            </div>\n\t                            <div class=\"pwd group-control\" style=\"width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t                                <input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"  placeholder=\"{% trans '请输入用户密码' %}\">\n\t                            </div>\n\t                             <div style=\"margin-top: 8%\">\n\t                                <div id=\"captcha\">\n\t                                \t<p id=\"wait\" class=\"show\">正在加载验证码......</p>\n\t                                </div>\n\t                             </div>\n\t                            <div>\n\t                                <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t                                <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t                                <input type=\"hidden\" name=\"tab_key\" value=\"0\">\n\t                            </div>\n\t                            <div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t                                <button class=\"login-btn\" style=\"width: 270px;border-radius: 22px\">{% trans '立即登录' %}</button>\n\t                            </div>\n\t\t\t\t\t\t   <div class=\"other_login\">\n\t\t\t\t\t\t   \t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t   \t<div class=\"other_login_text\">其他登录方式</div>\n\t\t\t\t\t\t   \t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t   </div>\n\t                            <div class=\"qywxbox\">\n\t                            \t<div title=\"企业微信登录\" class=\"qywxbox_enable\" data-auth_type=\"3\">\n\t                            \t\t<img src=\"{{STATIC_URL}}img/qywx.png\" alt=\"企业微信\" data-auth_type=\"3\" />  <span data-auth_type=\"3\">企业微信</span>\n\t                            \t</div>\n<!--\t                            \t<div title=\"钉钉登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"4\">-->\n<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/dingding.png\" alt=\"钉钉\" data-auth_type=\"4\" />  <span data-auth_type=\"4\">钉钉</span>-->\n<!--\t                            \t</div>-->\n<!--\t                            \t<div title=\"飞书登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"5\">-->\n<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/feishu.png\" alt=\"飞书\" data-auth_type=\"5\" />  <span data-auth_type=\"5\">飞书</span>-->\n<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t\t<!-- <div title=\"SSO\" class=\"qywxbox_enable sso_box\" data-auth_type=\"8\">\n\t\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/SSO.png\" alt=\"SSO\" data-auth_type=\"8\" /> <span\n\t\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"8\" i18n=\"SSO\">SSO</span>\n\t\t\t\t\t\t\t\t\t\t<div class=\"sso_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t\t</div> -->\n\t\t\t\t\t\t\t\t\t<div title=\"OAuth\" class=\"qywxbox_enable oauth_box\" data-auth_type=\"6\">\n\t\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/oauth.png\" alt=\"OAuth\" data-auth_type=\"6\" /> <span\n\t\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"6\" i18n=\"OAuth\">OAuth</span>\n\t\t\t\t\t\t\t\t\t\t<div class=\"oauth_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t                            </div>\n\t                        </div>\n\t                    </form>\n\n\t                </div>\n                </div>\n\n\t\t\t <!--LDAP登录-->\n                <div id=\"form-ldap\" style=\"display:none\"  data-key=\"1\">\n                \t <div class=\"logo-title\">\n\t                    <!-- <img src=\"{{STATIC_URL}}img/logo/bk_login.png\" height=\"32\" width=\"311\" alt=\"\"> -->\n\t                    欢迎使用LDAP登录\n\t                </div>\n\t                <div class=\"from-detail\" style=\"margin-top: 0; height: auto; padding-bottom: 10%;background:#ffffff\">\n\t                    <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t                        <div class=\"is-danger-tip\">\n\t                         {% if data and tab_key == '1' %}\n\t                             <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '请先完成验证码验证' %}</span>\n\t                          {% elif form.errors or form.non_field_errors %}\n\t                          \t<div></div>\n\t                          \t{% if tab_key == '1' %}\n\t                                <i class=\"bk-icon icon-exclamation-circle-shape\"></i><span>{% trans '账户或者密码错误，请重新输入' %}</span>\n\t                              {% endif %}\n\t                          {% endif %}\n\t                        </div>\n\n\t                        <div class=\"form-login\" style=\"padding: 5px 55px 0 56px\">\n\t                            <div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-code\"></i>\n\t                                <input id=\"user\" type=\"text\"  value=\"juewei.cn\" disabled placeholder=\"{% trans '请输入登录域' %}\" style=\"background:#eeeeee;cursor:not-allowed;\">\n\t                                <input id=\"user\" type=\"text\" name=\"domain\" value=\"juewei.cn\" hidden placeholder=\"{% trans '请输入登录域' %}\" >\n\t                            </div>\n\t                            <div class=\"user group-control\" style=\"margin-bottom: 8%;width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-user\"></i>\n\t                                <input id=\"user\" type=\"text\" name=\"username\" value=\"{{ username }}\"  placeholder=\"{% trans '请输入LDAP用户名' %}\" >\n\t                            </div>\n\t                            <div class=\"pwd group-control\" style=\"width: 270px;\">\n\t                                <i style=\"color: #0BA360\" class=\"bk-icon icon-lock\"></i>\n\t                                <input class=\"password\" id=\"password\" type=\"password\" name=\"password\" value=\"\"  placeholder=\"{% trans '请输入密码' %}\">\n\t                            </div>\n\t                             <div style=\"margin-top: 8%\">\n\t                                <div id=\"captcha2\">\n\t                                \t<p id=\"wait2\" class=\"show\">正在加载验证码......</p>\n\t                                </div>\n\t                             </div>\n\t                            <div>\n\t                                <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t                                <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t                                <input type=\"hidden\" name=\"tab_key\" value=\"1\">\n\t                            </div>\n\t                            <div class=\"btn-content clearfix\" style=\";padding-top: 25px\">\n\t                                <button class=\"login-btn\" style=\"width: 270px;border-radius: 22px\">{% trans '立即登录' %}</button>\n\t                            </div>\n\t\t\t\t\t\t   <div class=\"other_login\">\n\t\t\t\t\t\t   \t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t   \t<div class=\"other_login_text\">其他登录方式</div>\n\t\t\t\t\t\t   \t<div class=\"other_login_line\"></div>\n\t\t\t\t\t\t   </div>\n\t\t                        <div class=\"qywxbox\">\n\t                            \t<div title=\"企业微信登录\" class=\"qywxbox_enable\" data-auth_type=\"3\">\n\t                            \t\t<img src=\"{{STATIC_URL}}img/qywx.png\" alt=\"企业微信\" data-auth_type=\"3\" />  <span data-auth_type=\"3\">企业微信</span>\n\t                            \t</div>\n<!--\t                            \t<div title=\"钉钉登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"4\">-->\n<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/dingding.png\" alt=\"钉钉\" data-auth_type=\"4\" />  <span data-auth_type=\"4\">钉钉</span>-->\n<!--\t                            \t</div>-->\n<!--\t                            \t<div title=\"飞书登录暂未开放\" class=\"qywxbox_disabled\" data-auth_type=\"5\">-->\n<!--\t                            \t\t<img src=\"{{STATIC_URL}}img/feishu.png\" alt=\"飞书\" data-auth_type=\"5\" />  <span data-auth_type=\"5\">飞书</span>-->\n<!--\t                            \t</div>-->\n\t\t\t\t\t\t\t\t\t<!-- <div title=\"SSO\" class=\"qywxbox_enable sso_box\" data-auth_type=\"8\">\n\t\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/SSO.png\" alt=\"SSO\" data-auth_type=\"8\" /> <span\n\t\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"8\" i18n=\"SSO\">SSO</span>\n\t\t\t\t\t\t\t\t\t\t<div class=\"sso_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t\t</div> -->\n\t\t\t\t\t\t\t\t\t<div title=\"OAuth\" class=\"qywxbox_enable oauth_box\" data-auth_type=\"6\">\n\t\t\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/oauth.png\" alt=\"OAuth\" data-auth_type=\"6\" /> <span\n\t\t\t\t\t\t\t\t\t\t\tdata-auth_type=\"6\" i18n=\"OAuth\">OAuth</span>\n\t\t\t\t\t\t\t\t\t\t<div class=\"oauth_box_content auth_select_box\"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t                            </div>\n\t                        </div>\n\t                    </form>\n\t                </div>\n                </div>\n            </div>\n            {% endif %}\n        {% if google_auth_status == \"3\" %}\n        <form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\t   \t\t<div class=\"mfa_setting_box\">\n\t\t\t\t<h4>\n\t\t\t\t\t<span>绑定 MFA 设备</span>\n\t\t\t\t\t<span class=\"info\">\n\t\t\t\t\t\t<i style=\"background:#1890FF;color:#fff;font-size:12px;padding:2px;border-radius:50%;\" class=\"bk-icon icon-info\"></i>\n\t\t\t\t\t\t<span>管理员已开启强制所有用户绑定MFA功能，请完成以下操作以免影响使用。</span>\n\t\t\t\t\t</span>\n\t\t\t\t</h4>\n\t\t\t\t<div class=\"mfa_setting_content\">\n\t\t\t\t\t<h4 class=\"step\" i18n=\"MFABing_first_step\">\n\t\t\t\t\t\t第一步：获取身份验证器\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"step_one\">\n\t\t\t\t\t\t<div class=\"step_one_action\">\n\t\t\t\t\t\t\t<div class=\"step_one_action_title\" i18n=\"MFABing_first_action_title\">方法1. 安装阿里云、华为云APP</div>\n\t\t\t\t\t\t\t<div class=\"step_one_action_box\" >\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_usage\">使用步骤：</div>\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_ali\">阿里云：打开阿里云APP > 点击“右上角+号”> 选择【虚拟MFA】</div>\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_huawei\">华为云：打开华为云APP > 点击“我的”> 选择【MFA】</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div  class=\"step_one_action\">\n\t\t\t\t\t\t\t<div class=\"step_one_action_title\"><span i18n=\"MFABing_first_action_title2\">方法2. 微信搜索小程序“腾讯身份验证器”</span> <img style=\"vertical-align: bottom;\" src=\"{{STATIC_URL}}img/tuijian.png\" alt=\"推荐\"  /></div>\n\t\t\t\t\t\t\t<div class=\"step_one_action_box\">\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_usage\">使用步骤：</div>\n\t\t\t\t\t\t\t\t<div i18n=\"MFABing_first_action_tx\">授权打开“腾讯身份验证器”小程序 > 点击【二维码激活】 > 然后扫描下方“第二步”展示的二维码</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4 class=\"step\" i18n=\"MFABing_second_step\">\n\t\t\t\t\t\t第二步：使用阿里云APP、华为云APP、腾讯身份验证器小程序扫描以下二维码\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"step_content\">\n\t\t\t\t\t\t<img id=\"google_auth_pic\"\n\t\t\t\t\t\t\tstyle=\"height:120px;padding:0px;border:1px solid #e8e8e8;margin:0 0 0 100px;\" src=\"\"\n\t\t\t\t\t\t\talt=\"\" />\n\t\t\t\t\t\t<div style=\"margin:0 0 0 20px;font-size:12px;\">\n\t\t\t\t\t\t\t<p i18n=\"MFABing_second_step_message1\">扫不了码？试试账号&密钥方式获取</p>\n\t\t\t\t\t\t\t<p style=\"margin:10px 0 10px 0;\"><span style=\"width:50px;display:inline-block;\"\n\t\t\t\t\t\t\t\t\ti18n=\"MFABing_second_step_account_number\">账号：</span><span\n\t\t\t\t\t\t\t\t\tstyle=\"color:#333;\">{{ username }}</span></p>\n\t\t\t\t\t\t\t<p style=\"width:280px;word-break: break-word;display:flex;\">\n\t\t\t\t\t\t\t\t<span style=\"flex:0 0 50px;\" i18n=\"MFABing_second_step_secret_key\">密钥：</span>\n\t\t\t\t\t\t\t\t<span>{{ secret }}<a onclick=\"copy()\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"margin:0 0 0 10px;color:#0ba360;cursor:pointer\"\n\t\t\t\t\t\t\t\t\t\ti18n=\"MFABing_second_step_copy\">复制</a> </span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4 class=\"step\">\n\t\t\t\t\t\t<span i18n=\"MFABing_third_step\">第三步：输入授权码</span> <input\n\t\t\t\t\t\t\ti18n_p=\"MFABing_third_authorization_code\" placeholder=\"请输入6位授权码\" name=\"verify_code\"\n\t\t\t\t\t\t\ttype=\"text\" />\n\t\t\t\t\t</h4>\n\t\t\t\t\t<input id=\"copy\"  style=\"position:absolute;z-index:-10;opacity: 0;\" value=\"{{ secret }}\" />\n\t\t\t\t\t<div class=\"is-danger-tip\">\n\t\t\t\t\t\t{% if bind_google_auth and bind_google_auth.code != 200 %}\n\t\t\t\t\t\t<i class=\"bk-icon icon-exclamation-circle-shape\"></i><span\n\t\t\t\t\t\t\ti18n=\"MFABing_message2\">{% trans '认证失败，请检查您的验证码是否正确' %}</span>\n\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<footer>\n\t\t\t\t\t<button>确定绑定</button>\n\t\t\t\t</footer>\n\t\t\t\t<div>\n\t                   \t<input type=\"hidden\" name=\"google_auth_type\" value=\"bind_google_auth\" />\n\t                    <input type=\"hidden\" name=\"secret\" value=\"{{ secret }}\">\n\t                    <input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n                         <input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n                         <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t                    <input type=\"hidden\" name=\"app_id\" value=\"{{app_id }}\">\n\t                    <input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n                         <input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n                         <input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n                         <input type=\"hidden\" name=\"google_auth_url\" value=\"{{ google_auth_url }}\">\n\t               </div>\n\t\t\t</div>\n\t   </form>\n        {% else %}\n            {% if mfa == \"start\" %}\n                <!--LDAP动态码输入-->\n                    <div  class=\"login-from\" style=\"margin-top: 8%; box-shadow: 0px 2px 30px 0px rgba(12, 34, 65, 0.2);\">\n\t\t\t\t\t\t<form  action=\"{{ app_path }}\" method=\"get\" id=\"login-form\" onsubmit=\"return refresh_token()\">\n\t\t\t\t\t\t\t<input type=\"hidden\" id=\"mfa\" name=\"mfa\" value=\"{{ mfa }}\">\n\t\t\t\t\t\t\t<input type=\"hidden\"  name=\"c_url\" value=\"{{c_url}}\">\n\t\t\t\t\t\t\t<button id=\"mfaBtn\">\n\t\t\t\t\t\t\t<i style=\"color: #0ba360\" class=\"bk-icon icon-arrows-left\"></i>\n\t\t\t\t\t\t\t返回</button>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t\t<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\" onsubmit=\"return refresh_token()\">{% csrf_token %}\n\n\t\t\t\t\t\t\t<div class=\"ldap-icon\">\n\t\t\t\t\t\t\t\t<img src=\"{{STATIC_URL}}img/ldap-icon.png\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"ldap-box\">\n\t\t\t\t\t\t\t\t<div class=\"ldap-title\" i18n=\"MFA_title1\">账号保护已开启，请根据提示完成以下操作</div>\n\t\t\t\t\t\t\t\t{% if google_auth_status != \"7\" %}\n\t\t\t\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t\t\t\t\t\t\t<div class=\"ldap-step-num\" i18n=\"MFA_first_step\">第一步：</div>\n\t\t\t\t\t\t\t\t\t<div class=\"ldap-step-desc\" i18n=\"MFA_first_message\">请使用阿里云APP、华为云APP、微信搜索小程序腾讯身份验证器三种方式获取动态验证码</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"ldap-step\">\n\t\t\t\t\t\t\t\t\t<div class=\"ldap-step-num\" i18n=\"MFA_second_step\">第二步：</div>\n\t\t\t\t\t\t\t\t\t<div class=\"ldap-step-desc\" i18n=\"MFA_second_message\">请输入6位动态码</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t<div class=\"form-login\" style=\"padding: 0;margin-bottom:20px\">\n\t\t\t\t\t\t\t\t\t<div class=\"user group-control\" style=\"margin-bottom: 8%;width:100%\">\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t{% if google_auth_status == \"7\" %}\n\t\t\t\t\t\t\t\t\t\t<div style=\"text-align:center;margin-top:90px\" i18n=\"MFA_message1\">您已开启7天免认证登录，请点击确定按钮直接登录！\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<input hidden type=\"number\" name=\"verify_code\" value=\"123123\" i18n_p=\"MFA_dynamicCode\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"请输入6位动态码\" />\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t{% else %}\n\t\t\t\t\t\t\t\t\t\t<input style=\"padding-left:10px\" type=\"number\" name=\"verify_code\" i18n_p=\"MFA_dynamicCode\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"请输入6位动态码\" />\n\t\t\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t{% if check_status == False %}\n\t\t\t\t\t\t\t\t\t\t<span style=\"color:red;font-size:13px;display:inline-block;margin:5px 0\"\n\t\t\t\t\t\t\t\t\t\t\ti18n=\"MFA_message2\">{% trans '请确认您的验证码是否正确' %}</span>\n\t\t\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{% if google_auth_status != \"7\" %}\n\t\t\t\t\t\t\t\t\t<div style=\"margin:50px 0 0 0\">\n\t\t\t\t\t\t\t\t\t\t<input name=\"seven_days_free\" type=\"checkbox\" value=\"1\" /> <span\n\t\t\t\t\t\t\t\t\t\t\ti18n=\"MFA_laissez_passer\">7天内免验证</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\t<div class=\"btn-content clearfix\" style=\";padding-top: 20px\">\n\t\t\t\t\t\t\t\t\t\t<button class=\"login-btn\" style=\"width: 100%;border-radius: 22px\"\n\t\t\t\t\t\t\t\t\t\t\ti18n=\"MFA_submit\">{% trans '确定' %}</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div style=\"color:grey;font-size:12px;padding-top:10px\" i18n=\"MFA_message3\">\n\t\t\t\t\t\t\t\t\t\t如无法提供安全码，请联系管理员解除双因素验证后继续操作。</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"app_id\" value=\"{{ app_id }}\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"geetest_challenge\" value=\"{{ geetest_challenge }}\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"geetest_seccode\" value=\"{{ geetest_seccode }}\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"geetest_validate\" value=\"{{ geetest_validate }}\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"username\" value=\"{{ username }}\" />\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"password\" value=\"{{ password }}\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</form>\n                   </div>\n            {% endif %}\n        {% endif %}\n\n    \t\t<footer class=\"footer\">\n\t\t\t<p>\n\t            <a href=\"#\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">Copyright © 2012-2020 OpsAny. All Rights Reserved.</a>\n\t\t\t</p>\n\t\t<!-- <p>Copyright © 2012-2020 womaiyun. All Rights Reserved.</p> -->\n\t\t</footer>\n        </div>\n\t    <input hidden id=\"tab_key\" value=\"{{tab_key}}\"></input>\n\t    <div class=\"error-message-content is-chrome\">\n\t            <span>{% trans '您的浏览器非Chrome，建议您使用最新版本的Chrome浏览，以保证最好的体验效果' %}</span><i class=\"bk-icon icon-close-circle-shape\" id=\"close-chrome\"></i>\n\t        </div>\n\t      <div class=\"m-modal__wrapper\" id=\"m-modal__wrapper\">\n\t      \t<div class=\"m-modal__container\">\n\t      \t\t<div class=\"m-modal__header\">\n\t      \t\t\t<div class=\"m-modal__title\" id=\"m-modal__title\"></div>\n\t      \t\t\t<button class=\"m-modal__headerbtn\">\n\t      \t\t\t\t<i class=\"m-modal__close iconfont icon-close\" id=\"m-modal__close\"></i>\n\t      \t\t\t</button>\n\t      \t\t</div>\n\t      \t\t<div class=\"m-modal__body\">\n\t      \t\t\t<div id=\"qywxCode\"></div>\n\t      \t\t</div>\n\t      \t</div>\n\t      </div>\n\n    </body>\n    <!-- js 国际化 -->\n    <script type=\"text/javascript\" src=\"{{SITE_URL}}jsi18n/i18n/\"></script>\n    <script src=\"{{STATIC_URL}}assets/jquery-3.6.1.min.js\"></script>\n    <script src=\"{{STATIC_URL}}assets/gt.js\"></script>\n    <script src=\"{{STATIC_URL}}js/login.{{JS_SUFFIX}}?v={{STATIC_VERSION}}\"></script>\n\t<!-- 企业微信-->\n    <script src=\"https://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<script>\n\tlet key = $('#tab_key').val() || 1\n\tconsole.log($('#tab_key').val())\n\tlet OAuthList = []\n\n\t//控制展示和隐藏哪个tab里面的内容\n\tfunction showTabItem(){\n\t\tfor(let item of showItem){\n\t\t\t$(item).hide()\n\t\t\t$(showItem[key]).show()\n\t\t}\n\t}\n\n\t//初始化企业微信二维码\n\tfunction initWwlogin(appid,agentid,redirect_uri){\n\t\twindow.WwLogin({\n\t\t\tid : \"qywxCode\",\n\t\t\tappid, //企业微信的cropID，在 企业微信管理端->我的企业中查看 -\n\t\t\tagentid, //企业微信当前应用ID -\n\t\t\tredirect_uri:encodeURI(redirect_uri), //回调地址 -\n\t\t\tstate:''\n\t\t});\n\t}\n\n\n    //获取url参数\n    function getQueryVariable(variable){\n       var query = window.location.search.substring(1);\n       var vars = query.split(\"&\");\n       for (var i=0;i<vars.length;i++) {\n               var pair = vars[i].split(\"=\");\n               if(pair[0] == variable){return pair[1];}\n       }\n       return(false);\n   }\n\n   //获取OAuth列表\n   function getOAuthList(){\n   \t$.ajax({\n        url: \"accounts/get_auth_config/?auth_type=6\",\n        type: \"get\",\n        dataType: \"json\",\n        success: function (res) {\n\t\tif(res.code == '00' && res.result){\n\t\t\tOAuthList = res.data.data || []\n\t\t\tif(res.data.data.length){\n\t\t\t\tlet html = ''\n\t\t\t\tres.data.data.forEach(item=>{\n\t\t\t\t\tlet origin = window.location.origin\n\t\t\t\t\thtml+=`<div title=\"${item.enable?item.name:'当前认证未启用'}\" class=\"${item.enable?'auth_item':'disabled_auth'}\" data-key=\"${item.id}\"> <img src=\"${origin}/${item.auth_icon.url}\"></img> <span>${item.name}</span></div>`\n\t\t\t\t})\n\t\t\t\t$('.oauth_box_content').html(html)\n\t\t\t\t$('.auth_item').on('click',function(e){\n\t\t\t    \t\tlet key = $(e.currentTarget).data('key')\n\t\t\t    \t\tconst activeAuth = OAuthList.find(item=>item.id == key)\n\t\t\t    \t\tconst url = activeAuth.auth_login_url+`?response_type=accessCode&client_id=${activeAuth.app_id}&redirect_uri=${window.location.origin}${window.location.pathname}?domain=${activeAuth.domain}`\n\t\t\t    \t\twindow.location.href=url\n\t\t\t    \t})\n\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\t$('.oauth_box').attr('title','暂未开启OAuth登录')\n\t\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\n\t\t\t}\n\t\t}else{\n\t\t\t$('.oauth_box').attr('title','暂未开启OAuth登录')\n\t\t\t$('.oauth_box').addClass('qywxbox_disabled')\n\t\t}\n        },\n        error:function(e){\n        \t$('.oauth_box').attr('title','暂未开启OAuth登录')\n        \t$('.oauth_box').addClass('qywxbox_disabled')\n        }\n    });\n   }\n\n\t//初始化验证码\n\tfunction initCaptch (){\n\t\tconst activeKey = key || 0\n\t\tvar handler = function (captchaObj) {\n\t        $(\"#submit\").click(function (e) {\n\t            var result = captchaObj.getValidate();\n\t            if (!result) {\n\t                $(\"#notice\").show();\n\t                setTimeout(function () {\n\t                    $(\"#notice\").hide();\n\t                }, 2000);\n\t                e.preventDefault();\n\t            }\n\t        });\n\t        if($('#mfa').val() == 'start' || \"{{google_auth_status}}\" ==3) return\n\t        // 将验证码加到id为captcha的元素里，同时会有三个input的值用于表单提交\n\t        captchaObj.appendTo(captchaItem[activeKey]);\n\t        captchaObj.onReady(function () {\n\t            $(waitItem[activeKey]).hide();\n\t        });\n\t    };\n\t    $.ajax({\n\t        url: \"api/login-register/?t=\" + (new Date()).getTime(), // 加随机数防止缓存\n\t        type: \"get\",\n\t        dataType: \"json\",\n\t        success: function (data) {\n\t            // 调用 initGeetest 初始化参数\n\t            // 参数1：配置参数\n\t            // 参数2：回调，回调的第一个参数验证码对象，之后可以使用它调用相应的接口\n\t            initGeetest({\n\t                gt: data.data.gt,\n\t                challenge: data.data.challenge,\n\t                new_captcha: data.data.new_captcha, // 用于宕机时表示是新验证码的宕机\n\t                offline: !data.data.success, // 表示用户后台检测极验服务器是否宕机，一般不需要关注\n\t                product: \"float\", // 产品形式，包括：float，popup\n\t                width: \"100%\"\n\t            }, handler);\n\t        }\n\t    });\n\t}\n\t$('#mfaBtn').on('click',function(e){\n\t\t$('#mfa').val('stop')\n\t})\n    const showItem = ['#form-pwd','#form-ldap']\n    const captchaItem = ['#captcha','#captcha2'];\n    const waitItem = ['#wait','#wait2']\n\n\t//加入class让tab自动选中\n\t$('.login-form-title-box-btn').each((index,item)=>{\n\t\tif($(item)[0].dataset.key == key){\n\t\t\t$(item).addClass('login-form-title-box-btn-check')\n\t\t}\n\t})\n\n\n    showTabItem()\n    getOAuthList()\n    $('.login-form-title-box-btn').click(e=>{\n\t\t$('.login-form-title-box-btn').each((index,item)=>{\n\t\t\t$(item).removeClass('login-form-title-box-btn-check')\n\t\t})\n\t\tconst btnItem = $(e.target)\n\t\tkey = btnItem[0].dataset.key\n\t    \tbtnItem.addClass('login-form-title-box-btn-check')\n\t\tshowTabItem()\n\n\t\t//如果已经切换的时候没有初始化过极验的按钮\n\t\tif($(`${captchaItem[key]} .geetest_holder`).length == 0){\n\t\t\tinitCaptch()\n\t    }\n    \t})\n\n    \tinitCaptch()\n\t//   console.log(\"{{ google_auth_url }}\")\n    \t$(\"#google_auth_pic\").attr(\"src\",window.location.origin+\"/\"+\"{{ google_auth_url }}\")\n    \tfunction copy(){\n    \t\tlet input = document.getElementById(\"copy\");\n\t\tinput.select();\n  \t\tdocument.execCommand(\"copy\")\n    \t}\n\n\n    \t$('.qywxbox').click(e=>{\n    \t\t//3 为企业微信\n    \t\t//4 为钉钉\n    \t\t//5 为飞书\n    \t\tconst auth_type = $(e.target).data('auth_type')\n    \t\tif(auth_type!=3) return\n    \t\t$('#m-modal__wrapper').css({\n    \t\t\t'display':'block'\n    \t\t})\n    \t\tlet appid;\n    \t\tlet agentid;\n    \t\tlet c_url = encodeURIComponent(getQueryVariable('c_url')||'')\n    \t\tlet is_from_logout = encodeURIComponent(getQueryVariable('is_from_logout')||'')\n\t\t//回调地址 默认回调到登录页 由于此url只允许带一个参数 所以下面注释的方式不起作用\n    \t\t//let redirect_uri = window.location.origin+`/login/?c_url=${c_url}&is_from_logout=${is_from_logout}&auth_type=${auth_type}`;\n    \t\t let redirect_uri = window.location.origin+`/login/?auth_type=${auth_type}`; //回调地址 默认回调到登录页\n\t\t $.ajax({\n\t        url: \"accounts/get_vx_work_config/\",\n\t        type: \"get\",\n\t        dataType: \"json\",\n\t        success: function (res) {\n\t\t\tif(res.code == '00' && res.result){\n\t\t\t\tappid = res.data.corp_id;\n\t\t\t\tagentid = res.data.agent_id;\n\t\t\t\tinitWwlogin(appid,agentid,redirect_uri);\n\t\t\t}else{\n\t\t\t\t$('#m-modal__title').html(`提示`)\n\t\t\t\t$('#qywxCode').html(`<div>${res.message || '获取参数失败，请重试或联系管理员'}</div>`)\n\t\t\t}\n\t        },\n\t        error:function(e){\n\t        \t$('#m-modal__title').html(`提示`)\n\t\t\t$('#qywxCode').html(`<div>获取参数失败，请重试或联系管理员</div>`)\n\t        }\n\t    });\n    \t})\n\n\n\n\n    \t$('#m-modal__close').click(e=>{\n    \t\t$('#m-modal__wrapper').css({\n    \t\t\t'display':'none'\n    \t\t})\n    \t})\n\n\n\n\n\n\n</script>\n</html>\n\n\n"
  },
  {
    "path": "paas-ce/paas/login/unlock_admin.py",
    "content": "# -*- coding: utf-8 -*-\nimport random\nimport string\n\n\ndef unlock_admin():\n    UserAuthToken.objects.filter(username=\"admin\", app_code=\"login\").delete()\n    print(f\"Unlock admin success\")\n\n\nif __name__ == '__main__':\n    import os\n    import sys\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n    parent_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n    os.environ[\"BK_ENV\"] = \"production\"\n    sys.path.append(parent_path)\n    import django\n    django.setup()\n    from bkaccount.models import UserAuthToken\n    unlock_admin()\n\n\n"
  },
  {
    "path": "paas-ce/paas/login/unlock_all_user.py",
    "content": "# -*- coding: utf-8 -*-\nimport random\nimport string\n\n\ndef unlock_all_user():\n    UserAuthToken.objects.filter(app_code=\"login\").delete()\n    print(f\"Unlock all User success\")\n\n\nif __name__ == '__main__':\n    import os\n    import sys\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n    parent_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n    os.environ[\"BK_ENV\"] = \"production\"\n    sys.path.append(parent_path)\n    import django\n    django.setup()\n    from bkaccount.models import UserAuthToken\n    unlock_all_user()\n\n\n"
  },
  {
    "path": "paas-ce/paas/login/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\npaas URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/1.8/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')\nIncluding another URLconf\n    1. Add an import:  from blog import urls as blog_urls\n    2. Add a URL to urlpatterns:  url(r'^blog/', include(blog_urls))\n\"\"\" # noqa\n\n\n\nfrom bkaccount import views, views_api_v2\nfrom login import login_views\n\nfrom django.urls import include, path, re_path\nfrom django.http import HttpResponse\nfrom django.views.i18n import JavaScriptCatalog\nfrom django.views import i18n as django_i18n_views\nfrom rest_framework_simplejwt.views import (\n            TokenObtainPairView,\n                TokenRefreshView,\n                )\n\n\nbase_urlpatterns = [\n    # 登录页面\n    # path('', views.LoginView.as_view()),\n    path('', login_views.LoginIndexView.as_view()),\n    path('auth/<str:auth_name>/<str:domain_name>/', login_views.LoginIndexView.as_view()),\n    path('logout/', views.LogoutView.as_view()),\n    # 用户管理\n    path('accounts/', include(\"bkaccount.urls\")),\n\n    # 登陆模块 API，V2\n    path('api/v2/is_login/', views_api_v2.CheckLoginView.as_view()),\n    path('api/v2/get_user/', views_api_v2.UserView.as_view()),\n    path('api/v2/get_batch_users/', views_api_v2.BatchUsersView.as_view()),\n    re_path(r'^api/login-register/', views_api_v2.LoginRegisterView.as_view()),\n    re_path(r'^api/login/', views_api_v2.LoginApiView.as_view()),\n    path('api/v2/get_all_users/', views_api_v2.AllUsersView.as_view()),\n    \n    # login v3 api\n    path('api/v3/login/', login_views.LoginV3View.as_view()),\n    path('api/v3/check-password/', login_views.CheckPasswordView.as_view()),\n    path('api/v3/auth-config/', login_views.AuthConfigView.as_view()),\n    path('api/v3/user-login-unlock/', login_views.UserLoginUnlockView.as_view()),\n    path('api/v3/api-token/', login_views.APITokenView.as_view()),\n    # auth_name: qw oauth sso idaas iam ad_by_oauth ...\n    # domain: 登录域\n    path('api/v3/<str:auth_name>/login/<str:domain>/', login_views.UserExternalLoginView.as_view()),\n]\n\nurlpatterns = [\n    path('', include(base_urlpatterns)),\n    # 支持本地开发\n    path('login/', include(base_urlpatterns)),\n    # 检查统一登录是否正常运行\n    path('healthz/', include(\"healthz.urls\")),\n    # 反搜索\n    re_path(r'^robots\\.txt$', lambda r: HttpResponse('User-agent: *\\nDisallow: /', content_type='text/plain')),\n\n    # 无登录态下切换语言\n    path('i18n/setlang/', django_i18n_views.set_language, name='set_language'),\n    # 处理JS翻译\n    #re_path(r'^jsi18n/(?P<packages>\\S+?)/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),\n    path('jsi18n/i18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),\n    \n    # 增加JWT验证\n    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),\n    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),\n]\n\nfrom django.contrib.staticfiles.urls import staticfiles_urlpatterns  # noqa\nurlpatterns += staticfiles_urlpatterns()\n"
  },
  {
    "path": "paas-ce/paas/login/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nWSGI config for paas project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/\n\"\"\" # noqa\n\nimport os # noqa\n\nfrom django.core.wsgi import get_wsgi_application # noqa\nfrom dj_static import Cling # noqa\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\napplication = Cling(get_wsgi_application())\n"
  },
  {
    "path": "paas-ce/paas/paas/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n.flake8\nMakefile\ncmd\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*,cover\n.hypothesis/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\n\n# Flask instance folder\ninstance/\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# IPython Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# dotenv\n.env\n\n# virtualenv\nvenv/\nENV/\n\n# Spyder project settings\n.spyderproject\n\n../db.sqlite3\ntemplates_module/\nrun/\nuwsgi.ini\nconf/settings_production.py\nconf/settings_tc_local.py\n# media/\n\n# gulp\n.jshintrc\ngulpfile.js\npackage.json\n"
  },
  {
    "path": "paas-ce/paas/paas/README.md",
    "content": "# PaaS平台之开发者中心&web工作台\n\n## 简介\n\npaas服务是PaaS平台中的开发者中心及web工作台的功能。\n\n主要作用:\n- 为SaaS应用使用者提供访问SaaS应用入口\n- 为SaaS应用开发者提供开发及管理SaaS应用的功能\n- 为平台管理员提供用户管理入口\n\n由web工作台和开发者中心两部分组成:\n\n- web工作台: 已发布SaaS的应用列表, 作为统一的入口, 并且包含一系列常用链接等, 同时管理员可以进行用户管理\n- 开发者中心: 包含SaaS应用创建/部署/下架等功能入口, 同时可以对服务器信息/第三方服务信息等进行管理, 同时包含SaaS开发必须的文档及资源下载入口\n\n## 技术栈\n\n- framework: Django 1.8.11\n- template: mako\n- database: mysql\n\n## 依赖说明\n\n- mysql: 平台数据库\n- appengine: 需要调用appengine接口, 进行应用部署、下架等操作\n- login: 调用统一登录服务接口, 判定用户登录态\n"
  },
  {
    "path": "paas-ce/paas/paas/VERSION",
    "content": "Python: 3.12.4  终止时间： 2028-10\nDjango: 4.2.16  终止时间： 2026-04\n"
  },
  {
    "path": "paas-ce/paas/paas/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/account/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/account/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\nfrom django.contrib.auth.admin import UserAdmin\nfrom django.utils.translation import gettext_lazy as _\n\nfrom account.forms import BkUserChangeForm, BkUserCreationForm\nfrom account.models import Loignlog\n\n\nclass BkUserAdmin(UserAdmin):\n    \"\"\"The forms to add and change user instances.\n\n    The fields to be used in displaying the User model.\n    These override the definitions on the base UserAdmin\n    \"\"\"\n\n    fieldsets = (\n        (None, {'fields': ('username', 'password')}),\n        (_('Personal info'), {'fields': ('chname',)}),\n        (_('Contact info'), {'fields': ('phone', 'email')}),\n        (_('Permissions'), {'fields': ('is_superuser',)}),\n        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),\n    )\n    add_fieldsets = (\n        (None, {\n            'classes': ('wide',),\n            'fields': ('username', 'password1', 'password2')}),\n    )\n    form = BkUserChangeForm\n    add_form = BkUserCreationForm\n    list_display = ('username', 'chname', 'is_superuser')\n    list_filter = ('is_superuser',)\n    search_fields = ('username', 'chname',)\n    ordering = ('username',)\n\n\n@admin.register(Loignlog)\nclass LoignlogAdmin(admin.ModelAdmin):\n    \"\"\"\n    The forms to add and change login log instances.\n\n    The fields to be used in displaying the Loginlog model.\n    \"\"\"\n\n    list_display = ['user', 'login_time', 'login_browser', 'login_ip', 'login_host', 'app_id']\n    search_fields = ['user__username']\n    list_filter = ['app_id']\n\n\n# admin.site.register(BkUser, BkUserAdmin)\n"
  },
  {
    "path": "paas-ce/paas/paas/account/backends.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.contrib.auth import get_user_model\nfrom django.contrib.auth.backends import ModelBackend\n\nfrom common.constants import RoleCodeEnum\nfrom common.log import logger\nfrom components.login import get_user_info, verify_bk_login\n\n\nclass BkBackend(ModelBackend):\n    \"\"\"自定义认证方法\n    \"\"\"\n\n    def authenticate(self, request):\n        try:\n            is_login, username = is_bk_token_valid(request)\n        except Exception:\n            logger.exception(\"is_bk_token_valid raise exception\")\n            return None\n\n        if not is_login:\n            return None\n\n        UserModel = get_user_model()\n        try:\n            return UserModel._default_manager.get_by_natural_key(username)\n        except UserModel.DoesNotExist:\n            return None\n\n\ndef is_bk_token_valid(request):\n    \"\"\"验证用户登录态.\"\"\"\n    bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME, None)\n\n    if not bk_token:\n        return False, None\n\n    ok, data = verify_bk_login(bk_token)\n    if not ok:\n        # bk_token 无效\n        return False, None\n\n    # 检查用户是否存在用户表中\n    username = data.get('username', '')\n    UserModel = get_user_model()\n    try:\n        user = UserModel._default_manager.get_by_natural_key(username)\n    except UserModel.DoesNotExist:\n        user = UserModel.objects.create_user(username)\n\n    # update user info\n    try:\n        ok, data = get_user_info(bk_token)\n        # 若获取用户信息失败，则用户可登录，但用户其他信息为空\n        if ok:\n            user.chname = data.get('chname', '')\n            user.company = data.get('company', '')\n            user.phone = data.get('phone', '')\n            user.email = data.get('email', '')\n            role = data.get('role', '')\n            # 用户权限更新\n            is_superuser = str(role) == str(RoleCodeEnum.SUPERUSER.value)\n            user.is_superuser = is_superuser\n            user.is_staff = is_superuser\n            user.role = role\n            user.save()\n    except Exception as e:\n        logger.exception(\"获取记录用户信息失败：%s\", e)\n\n    return True, user\n"
  },
  {
    "path": "paas-ce/paas/paas/account/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom __future__ import unicode_literals\n\nfrom functools import WRAPPER_ASSIGNMENTS, wraps\n\n#from django.utils.decorators import available_attrs\n\n\ndef login_exempt(view_func):\n    \"\"\"登录豁免,被此装饰器修饰的action可以不校验登录\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n\n    wrapped_view.login_exempt = True\n    #return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n    return wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)(wrapped_view)\n\n\ndef developer_limit_exempt(view_func):\n    \"\"\"开发者身份校验豁免,被此装饰器修饰的action可以不校验\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n\n    wrapped_view.developer_limit_exempt = True\n    #return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n    return wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)(wrapped_view)\n"
  },
  {
    "path": "paas-ce/paas/paas/account/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django import forms\nfrom django.contrib.auth.forms import UserChangeForm, UserCreationForm\n\nfrom account.models import BkUser\n\n\nclass BkUserCreationForm(UserCreationForm):\n    \"\"\"A form that creates a user, with no privileges, from the given email andpassword\n    \"\"\"\n\n    def __init__(self, *args, **kargs):\n        super(BkUserCreationForm, self).__init__(*args, **kargs)\n\n    class Meta:\n        model = BkUser\n        fields = (\"username\",)\n\n\nclass BkUserChangeForm(UserChangeForm):\n    \"\"\"A form for updating users\n\n    Includes all the fields onthe user,\n    but replaces the password field with admin'spassword hash display field.\n    \"\"\"\n\n    def __init__(self, *args, **kargs):\n        super(BkUserChangeForm, self).__init__(*args, **kargs)\n\n    class Meta:\n        model = BkUser\n        fields = ('username', 'password')\n\n\nclass PasswordChangeForm(forms.Form):\n    new_password1 = forms.CharField(required=True, error_messages={'required': '密码不能为空'})\n    new_password2 = forms.CharField(required=True, error_messages={'required': '密码不能为空'})\n\n    def clean_new_password1(self):\n        stripped_text = self.cleaned_data['new_password1'].strip()\n        return stripped_text\n\n    def clean_new_password2(self):\n        stripped_text = self.cleaned_data['new_password2'].strip()\n        return stripped_text\n\n    def clean(self):\n        if self.cleaned_data:\n            if self.cleaned_data.get(\"new_password1\") != self.cleaned_data.get(\"new_password2\"):\n                self.add_error(\"new_password1\", \"两次输入的新密码不一致\")\n            return self.cleaned_data\n        return self.cleaned_data\n"
  },
  {
    "path": "paas-ce/paas/paas/account/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib.auth.models import BaseUserManager\nfrom django.utils import timezone\n\n\nclass BkUserManager(BaseUserManager):\n    \"\"\"BK user manager\n    \"\"\"\n\n    def _create_user(self, username, password, is_staff, is_superuser, **extra_fields):\n        \"\"\"\n        Create and saves a User with the given username and password\n        \"\"\"\n        if not username:\n            raise ValueError(\"'The given username must be set\")\n\n        now = timezone.now()\n        user = self.model(username=username,\n                          is_staff=is_staff,\n                          is_superuser=is_superuser,\n                          last_login=now,\n                          date_joined=now,\n                          **extra_fields)\n        user.set_password(password)\n        user.save(using=self._db)\n        return user\n\n    def create_user(self, username, password=None, **extra_fields):\n        return self._create_user(username, password, False, False,\n                                 **extra_fields)\n\n    def create_superuser(self, username, password, **extra_fields):\n        return self._create_user(username, password, True, True,\n                                 **extra_fields)\n"
  },
  {
    "path": "paas-ce/paas/paas/account/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nLogin middleware.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.contrib.auth import authenticate\nfrom django.middleware.csrf import get_token as get_csrf_token\nfrom django.utils.deprecation import MiddlewareMixin\n\nfrom account.utils import redirect_login\nfrom common.constants import RoleCodeEnum\nfrom common.mymako import render_mako_context\n\n\nclass LoginMiddleware(MiddlewareMixin):\n\n    def process_view(self, request, view, args, kwargs):\n        # 静态资源不做登录态验证\n        full_path = request.get_full_path()\n        if full_path.startswith(settings.STATIC_URL) or full_path == '/robots.txt':\n            return None\n\n        if getattr(view, 'login_exempt', False):\n            return None\n\n        user = authenticate(request=request)\n        if user:\n            request.user = user\n            get_csrf_token(request)\n            return None\n\n        return redirect_login(request)\n\n\nclass DeveloperLimitMiddleware(MiddlewareMixin):\n\n    def process_view(self, request, view, args, kwargs):\n        # 静态资源不做登录态验证\n        full_path = request.get_full_path()\n        if (full_path.startswith(settings.STATIC_URL) or full_path == '/robots.txt'\n                or full_path == '/' or full_path.startswith('/platform/') or full_path.startswith('/console/')):\n            return None\n\n        if getattr(view, 'login_exempt', False) or getattr(view, 'developer_limit_exempt', False):\n            return None\n\n        allow_developer_list = [str(RoleCodeEnum.SUPERUSER.value), str(RoleCodeEnum.DEVELOPER.value)]\n        if request.user.role in allow_developer_list:\n            return None\n\n        return render_mako_context(request, 'developer_403.html')\n"
  },
  {
    "path": "paas-ce/paas/paas/account/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\nimport django.utils.timezone\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('auth', '0006_require_contenttypes_0002'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='BkUser',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('password', models.CharField(max_length=128, verbose_name='password')),\n                ('last_login', models.DateTimeField(null=True, verbose_name='last login', blank=True)),\n                ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),\n                ('username', models.CharField(unique=True, max_length=128, verbose_name='\\u7528\\u6237\\u540d')),\n                ('chname', models.CharField(max_length=254, verbose_name='\\u4e2d\\u6587\\u540d', blank=True)),\n                ('company', models.CharField(max_length=128, verbose_name='\\u516c\\u53f8', blank=True)),\n                ('qq', models.CharField(max_length=32, verbose_name='QQ\\u53f7', blank=True)),\n                ('phone', models.CharField(max_length=64, verbose_name='\\u624b\\u673a\\u53f7', blank=True)),\n                ('email', models.EmailField(max_length=254, verbose_name='\\u90ae\\u7bb1', blank=True)),\n                ('is_staff', models.BooleanField(default=False, help_text='\\u666e\\u901a\\u7ba1\\u7406\\u5458\\u53ef\\u4ee5\\u767b\\u5f55\\u5230admin', verbose_name='\\u666e\\u901a\\u7ba1\\u7406\\u5458')),\n                ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),\n                ('groups', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Group', blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', verbose_name='groups')),\n                ('user_permissions', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Permission', blank=True, help_text='Specific permissions for this user.', verbose_name='user permissions')),\n            ],\n            options={\n                'verbose_name': 'user',\n                'verbose_name_plural': 'users',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkToken',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('token', models.CharField(unique=True, max_length=255, verbose_name='\\u767b\\u5f55\\u7968\\u636e', db_index=True)),\n                ('is_logout', models.BooleanField(default=False, verbose_name='\\u7968\\u636e\\u662f\\u5426\\u5df2\\u7ecf\\u6267\\u884c\\u8fc7\\u9000\\u51fa\\u767b\\u5f55\\u64cd\\u4f5c')),\n            ],\n            options={\n                'verbose_name': '\\u767b\\u5f55\\u7968\\u636e',\n                'verbose_name_plural': '\\u767b\\u5f55\\u7968\\u636e',\n            },\n        ),\n        migrations.CreateModel(\n            name='Loignlog',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('login_time', models.DateTimeField(verbose_name='\\u767b\\u5f55\\u65f6\\u95f4')),\n                ('login_browser', models.CharField(max_length=200, null=True, verbose_name='\\u767b\\u5f55\\u6d4f\\u89c8\\u5668', blank=True)),\n                ('login_ip', models.CharField(max_length=50, null=True, verbose_name='\\u7528\\u6237\\u767b\\u5f55ip', blank=True)),\n                ('login_host', models.CharField(max_length=100, null=True, verbose_name='\\u767b\\u5f55HOST', blank=True)),\n                ('app_id', models.CharField(max_length=30, null=True, verbose_name=b'APP_ID', blank=True)),\n                ('user', models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u7528\\u6237', to=settings.AUTH_USER_MODEL)),\n            ],\n            options={\n                'verbose_name': '\\u7528\\u6237\\u767b\\u5f55\\u65e5\\u5fd7',\n                'verbose_name_plural': '\\u7528\\u6237\\u767b\\u5f55\\u65e5\\u5fd7',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/account/migrations/0002_initial_user_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\nfrom django.conf import settings\nfrom django.contrib.auth import get_user_model\n\n\ndef initial_user_data(apps, schema_editor):\n    pass\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('account', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.RunPython(initial_user_data),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/account/migrations/0003_bkuser_role.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('account', '0002_initial_user_data'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='bkuser',\n            name='role',\n            field=models.CharField(default=b'0', help_text='\\u7528\\u6237\\u89d2\\u8272\\u8868\\u793a\\u5b57\\u7b26\\u4e32', max_length=32, verbose_name='\\u7528\\u6237\\u89d2\\u8272'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/account/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/account/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.contrib.auth.models import AbstractBaseUser, PermissionsMixin\nfrom django.core.mail import send_mail\nfrom django.db import models\nfrom django.utils import timezone\nfrom urllib.parse import quote\nfrom django.utils.translation import gettext_lazy as _\n\nfrom account.manager import BkUserManager\nfrom common.constants import RoleCodeEnum\n\n\nclass BkUser(AbstractBaseUser, PermissionsMixin):\n    \"\"\"BK user\n\n    username and password are required. Other fields are optional.\n    \"\"\"\n\n    username = models.CharField(\"用户名\", max_length=128, unique=True)\n    chname = models.CharField(\"中文名\", max_length=254, blank=True)\n    company = models.CharField(\"公司\", max_length=128, blank=True)\n    qq = models.CharField(\"QQ号\", max_length=32, blank=True)\n    phone = models.CharField(\"手机号\", max_length=64, blank=True)\n    email = models.EmailField(\"邮箱\", max_length=254, blank=True)\n\n    is_staff = models.BooleanField(\"普通管理员\", default=False, help_text=\"普通管理员可以登录到admin\")\n    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)\n\n    role = models.CharField(\"用户角色\", max_length=32, default='0', help_text=\"用户角色表示字符串\")\n\n    objects = BkUserManager()\n\n    USERNAME_FIELD = 'username'\n    REQUIRED_FIELDS = []\n\n    class Meta:\n        verbose_name = _('user')\n        verbose_name_plural = _('users')\n\n    @property\n    def has_developer_perm(self):\n        return self.role in [str(RoleCodeEnum.SUPERUSER.value), str(RoleCodeEnum.DEVELOPER.value)]\n\n    def check_password(self, raw_password):\n        \"\"\"支持数据库明文存储密码\n        \"\"\"\n        if raw_password == self.password:\n            return True\n\n        def setter(raw_password):\n            self.set_password(raw_password)\n            self.save(update_fields=[\"password\"])\n\n        from django.contrib.auth.hashers import check_password\n        return check_password(raw_password, self.password, setter)\n\n    def get_absolute_url(self):\n        return \"/users/{email}/\".format(email=quote(self.email))\n\n    def get_full_name(self):\n        \"\"\"Return the `username chinese_name`\n        \"\"\"\n        full_name = '{} {}'.format(self.username, self.chname)\n        return full_name.strip()\n\n    def get_short_name(self):\n        \"\"\"Return the chinese name for the user\n        \"\"\"\n        return self.chname\n\n    def email_user(self, subject, message, from_email=None):\n        \"\"\"Send an email to this User\n        \"\"\"\n        send_mail(subject, message, from_email, [self.email])\n\n\nclass Loignlog(models.Model):\n    \"\"\"User login log\n    \"\"\"\n\n    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=\"用户\")\n    login_time = models.DateTimeField(\"登录时间\")\n    login_browser = models.CharField(\"登录浏览器\", max_length=200, blank=True, null=True)\n    login_ip = models.CharField(\"用户登录ip\", max_length=50, blank=True, null=True)\n    login_host = models.CharField(\"登录HOST\", max_length=100, blank=True, null=True)\n    app_id = models.CharField('APP_ID', max_length=30, blank=True, null=True)\n\n    def __unicode__(self):\n        return '{}({})'.format(self.user.chname, self.user.username)\n\n    class Meta:\n        verbose_name = \"用户登录日志\"\n        verbose_name_plural = \"用户登录日志\"\n\n\nclass BkToken(models.Model):\n    \"\"\"登录票据\n    \"\"\"\n    token = models.CharField(\"登录票据\", max_length=255, unique=True, db_index=True)\n    # 是否已经退出登录\n    is_logout = models.BooleanField(\"票据是否已经执行过退出登录操作\", default=False)\n\n    def __uincode__(self):\n        return self.token\n\n    class Meta:\n        verbose_name = \"登录票据\"\n        verbose_name_plural = \"登录票据\"\n"
  },
  {
    "path": "paas-ce/paas/paas/account/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.conf import settings\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\nimport mock\nfrom account.backends import BkBackend, is_bk_token_valid\nfrom account.models import BkUser\nfrom common.constants import RoleCodeEnum\nfrom account.forms import PasswordChangeForm\n\n\nclass BkTokenTestCase(TestCase):\n\n    @mock.patch('account.backends.get_user_info')\n    @mock.patch('account.backends.verify_bk_login')\n    def test_toekn_validate(self, mock_verify_bk_login, mock_get_user_info):\n\n        mock_verify_bk_login.return_value = (True, {\"username\": \"test\"})\n        mock_get_user_info.return_value = (True, {\"username\": \"test\",\n                                                  \"company\": \"test\",\n                                                  \"phone\": \"13911111111\",\n                                                  \"email\": \"test@test.com\",\n                                                  \"role\": RoleCodeEnum.STAFF.value,\n                                                  })\n\n        rf = RequestFactory()\n        request = rf.get('/')\n\n        # no bk_token\n        ok, _ = is_bk_token_valid(request)\n        self.assertFalse(ok)\n\n        # success\n        request.COOKIES[settings.BK_COOKIE_NAME] = 'whatever'\n        ok, _ = is_bk_token_valid(request)\n        self.assertTrue(ok)\n\n        # bk_token invalid\n        request.COOKIES[settings.BK_COOKIE_NAME] = 'whatever'\n        mock_verify_bk_login.return_value = (False, {\"username\": \"test\"})\n        ok, _ = is_bk_token_valid(request)\n        self.assertFalse(ok)\n\n        # update user info fail, still success\n        request.COOKIES[settings.BK_COOKIE_NAME] = 'whatever'\n        mock_verify_bk_login.return_value = (True, {\"username\": \"test\"})\n        mock_get_user_info.return_value = (False, {})\n        ok, _ = is_bk_token_valid(request)\n        self.assertTrue(ok)\n\n\nclass BkBackendTestCase(TestCase):\n    def setUp(self):\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n    @mock.patch('account.backends.is_bk_token_valid')\n    def test_toekn_validate(self, mock_is_bk_token_valid):\n        rf = RequestFactory()\n        request = rf.get('/')\n\n        # fail\n        mock_is_bk_token_valid.return_value = (False, '')\n        b = BkBackend()\n        result = b.authenticate(request)\n        self.assertFalse(result)\n\n        # get model via username fail\n        mock_is_bk_token_valid.return_value = (True, '')\n        b = BkBackend()\n        result = b.authenticate(request)\n        self.assertFalse(result)\n\n        # get model via username success\n        mock_is_bk_token_valid.return_value = (True, 'test')\n        b = BkBackend()\n        result = b.authenticate(request)\n        self.assertTrue(result)\n\n    def tearDown(self):\n        BkUser.objects.get(username='test').delete()\n\n\nclass ChangePasswordFormTestCase(TestCase):\n    def test_password_invalid(self):\n        data = {\"new_password1\": \"\"}\n        form = PasswordChangeForm(data)\n        self.assertFalse(form.is_valid())\n\n        data = {\"new_password1\": \"abc\"}\n        form = PasswordChangeForm(data)\n        self.assertFalse(form.is_valid())\n\n        data = {\"new_password1\": \"abc\", \"new_password2\": \"abcd\"}\n        form = PasswordChangeForm(data)\n        self.assertFalse(form.is_valid())\n\n        data = {\"new_password1\": \"abc\", \"new_password2\": \"abc\"}\n        form = PasswordChangeForm(data)\n        self.assertTrue(form.is_valid())\n"
  },
  {
    "path": "paas-ce/paas/paas/account/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.urls import include, path\n\nfrom account import views\n\nurlpatterns = [\n    path('logout/', views.LogoutView.as_view(), name='logout'),\n    path('profile/', views.ProfileView.as_view(), name='profile'),\n\n    path('user/', include([\n        path('info/', views.ModifyUserInfoView.as_view(), name='modify_user_info'),\n        path('password/', views.PasswordChangeView.as_view(), name='change_password'),\n    ]))\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/account/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n账号体系相关功能函数\n\nis_bk_token_valid\nredirect_login\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.contrib.auth.views import redirect_to_login\nfrom django.http import HttpResponse\nfrom six.moves.urllib.parse import urlparse\n\ndef is_ajax(request):\n    return request.headers.get('X-Requested-With') == 'XMLHttpRequest'\n\ndef redirect_login(request):\n    \"\"\"\n    重定向到登录页面.\n    登录态验证不通过时调用\n\n    middleware\n    \"\"\"\n    # ajax跳401\n    #if request.is_ajax():\n    #    return HttpResponse(status=401)\n\n    # 非ajax请求 跳转至平台登录\n    return _redirect_login(request)\n\n\ndef _redirect_login(request, is_login=True):\n    \"\"\"\n    跳转平台进行登录\n    \"\"\"\n    if settings.LOGIN_DOMAIN:\n        BK_LOGIN_URL = 'http://{}/login/'.format(settings.LOGIN_DOMAIN)\n    else:\n        BK_LOGIN_URL = '/login/'\n\n    if is_login:\n        # 登录\n        login_url = BK_LOGIN_URL\n        callback = _build_callback_url(request, BK_LOGIN_URL)\n    else:\n        # 登出\n        login_url = \"{}?{}\".format(BK_LOGIN_URL, \"is_from_logout=1\")\n        callback = _http_referer(request)\n\n    return redirect_to_login(callback, login_url, settings.REDIRECT_FIELD_NAME)\n\n\ndef _build_callback_url(request, jump_url):\n    callback = request.build_absolute_uri()\n    login_scheme, login_netloc = urlparse(jump_url)[:2]\n    current_scheme, current_netloc = urlparse(callback)[:2]\n    if ((not login_scheme or login_scheme == current_scheme)\n            and (not login_netloc or login_netloc == current_netloc)):\n        callback = request.get_full_path()\n    return callback\n\n\ndef _http_referer(request):\n    \"\"\"\n    获取 HTTP_REFERER 头，得到登出后要重新登录跳转的url\n    \"\"\"\n    if 'referer' in request.headers:\n        http_referer = request.headers['referer']\n    else:\n        http_referer = settings.LOGIN_REDIRECT_URL\n    return http_referer\n"
  },
  {
    "path": "paas-ce/paas/paas/account/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.contrib.auth import logout\nfrom django.http import HttpResponseForbidden\nfrom django.utils.decorators import method_decorator\nfrom django.views.decorators.csrf import csrf_exempt\nfrom django.views.generic import View\n\nfrom account.decorators import login_exempt\nfrom account.forms import PasswordChangeForm\nfrom account.utils import _redirect_login\nfrom common.exceptions import BadRequestException\nfrom common.mymako import render_mako_tostring_context\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.utils import first_error_message\nfrom common.views.mako import MakoTemplateView\nfrom components.login import change_password, modify_user_info\n\n\nclass ProfileView(MakoTemplateView):\n    \"\"\"个人信息页面\n    \"\"\"\n    template_name = \"account/profile.html\"\n\n    def get_context_data(self, **kwargs):\n        context = super(ProfileView, self).get_context_data(**kwargs)\n        request = self.request\n\n        user = request.user\n        user_manage_url = \"http://{}/login/accounts/user/list/\".format(request.get_host())\n        context.update({\n            'username': user.username,\n            'chname': user.chname or '--',\n            'phone': user.phone or '--',\n            'email': user.email or '--',\n            'is_superuser': user.is_superuser,\n            'user_manage_url': user_manage_url,\n        })\n        return context\n\n\nclass ModifyUserInfoView(MakoTemplateView):\n    \"\"\"修改用户基本信息\n    \"\"\"\n    template_name = \"account/profile_modify.html\"\n\n    def post(self, request):\n        bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME, None)\n        data = {\n            'chname': request.POST.get('chname').strip(),\n            'phone': request.POST.get('phone').strip(),\n            'email': request.POST.get('email').strip()\n        }\n\n        ok, message = modify_user_info(bk_token, data)\n        if not ok:\n            return FailJsonResponse(message or \"个人信息修改失败\")\n        return OKJsonResponse(\"success\")\n\n\nclass PasswordChangeView(View):\n    \"\"\"重置密码\n    调用 login 系统 api 重置密码\n    \"\"\"\n    @method_decorator(csrf_exempt)\n    def dispatch(self, *args, **kwargs):\n        return super(PasswordChangeView, self).dispatch(*args, **kwargs)\n\n    @method_decorator(csrf_exempt)\n    def post(self, request):\n        form = PasswordChangeForm(request.POST)\n        if not form.is_valid():\n            message = first_error_message(form)\n            raise BadRequestException(message)\n\n        new_password1 = form.cleaned_data.get(\"new_password1\")\n        bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME, None)\n        data = {'new_password': new_password1}\n\n        ok, message = change_password(bk_token, data)\n        if not ok:\n            return FailJsonResponse(message or \"密码重置失败\")\n        return OKJsonResponse(\"success\")\n\n\nclass LogoutView(View):\n    \"\"\"登出并重定向到登录页面.\n    \"\"\"\n    @method_decorator(login_exempt)\n    def dispatch(self, *args, **kwargs):\n        return super(LogoutView, self).dispatch(*args, **kwargs)\n\n    def get(self, request):\n        logout(request)\n        return _redirect_login(request, False)\n\n\ndef csrf_failure(request, reason=\"\"):\n    return HttpResponseForbidden(render_mako_tostring_context(request, 'csrf_failure.html'), content_type='text/html')\n"
  },
  {
    "path": "paas-ce/paas/paas/api/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/api/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom enum import Enum\n\n\nclass ApiErrorCodeEnumV2(Enum):\n    SUCCESS = 0\n    PARAM_NOT_VALID = 1301100\n    CREATE_APP_ERROR = 1301101\n    EDIT_APP_ERROR = 1301102\n    ESB_NOT_VALID = 1301103\n    APP_NOT_EXIST = 1301104\n    NO_PERMISSION = 1301105\n\n\nclass LightAppAPIActionEnum(Enum):\n    POST = \"post\"\n    PUT = \"put\"\n    DELETE = \"delete\"\n    PUT_LOGO = \"put_logo\"\n"
  },
  {
    "path": "paas-ce/paas/paas/api/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.http import JsonResponse\n#from django.utils.decorators import available_attrs\n\nfrom api.constants import ApiErrorCodeEnumV2\n\nfrom functools import WRAPPER_ASSIGNMENTS, wraps\n\n\ndef esb_required(view_func):\n    @wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)\n    def _wrapped_view(request, *args, **kwargs):\n        x_app_token = request.headers.get('x-app-token')\n        x_app_code = request.headers.get('x-app-code')\n        if not (x_app_code == 'esb' and x_app_token == settings.ESB_TOKEN):\n            return JsonResponse({\n                \"result\": False,\n                \"code\": \"1001\",\n                \"message\": \"API网关鉴权失败\",\n            })\n        return view_func(request, *args, **kwargs)\n    return _wrapped_view\n\n\ndef esb_required_v2(view_func):\n    @wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)\n    def _wrapped_view(request, *args, **kwargs):\n        x_app_token = request.headers.get('x-app-token')\n        x_app_code = request.headers.get('x-app-code')\n        if not (x_app_code == 'esb' and x_app_token == settings.ESB_TOKEN):\n            return JsonResponse({\n                \"bk_error_msg\": \"API网关鉴权失败\",\n                \"bk_error_code\": ApiErrorCodeEnumV2.ESB_NOT_VALID.value,\n                \"data\": {}\n            })\n        return view_func(request, *args, **kwargs)\n    return _wrapped_view\n"
  },
  {
    "path": "paas-ce/paas/paas/api/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport urllib.parse\n\nfrom django import forms\nfrom django.conf import settings\n\nfrom common.log import logger\nfrom home.models import UsefulLinks\nfrom app.models import App\n\n\nclass LightAppBaseForm(forms.Form):\n    def validate_light_app_name(self, name, old_name):\n        \"\"\"\n        校验app名称\n        \"\"\"\n        if len(name) > 20:\n            return False, \"应用名称长度不能超过20个字符\"\n\n        query = UsefulLinks.objects.filter(name=name)\n        if old_name:\n            query = query.exclude(name=old_name)\n        if query.exists():\n            return False, \"应用名称[{}]已存在\".format(name)\n        return True, \"校验通过\"\n\n    def validate_app_url(self, url):\n        \"\"\"\n        判断url是否在当前域名下\n        \"\"\"\n        try:\n            url_pares = urllib.parse.urlparse(url)\n            hostname = url_pares.hostname\n            paas_domain = settings.PAAS_DOMAIN.split(\":\")[0] if settings.PAAS_DOMAIN else ''\n            if not hostname or hostname == paas_domain:\n                return True, ''\n            return False, \"APP链接不合法，链接不在当前域名下\"\n        except Exception as e:\n            logger.error(\"获取url的域名出错:%s, url:%s\" % (e, url))\n            return False, \"校验APP链接异常\"\n\n\nclass LightAppChangeBaseInfoForm(LightAppBaseForm):\n    bk_light_app_code = forms.CharField()\n\n    def clean_bk_light_app_code(self):\n        bk_light_app_code = self.cleaned_data[\"bk_light_app_code\"]\n        light_app = UsefulLinks.objects.get_light_app_or_none(bk_light_app_code)\n        if not light_app:\n            self.add_error(\"bk_light_app_code\", \"轻应用不存在\")\n\n        return bk_light_app_code\n\n\nclass LightAppCreateForm(LightAppBaseForm):\n    bk_app_code = forms.CharField()\n    bk_light_app_name = forms.CharField()\n    app_url = forms.CharField()\n    introduction = forms.CharField(required=False)\n\n    def clean_bk_app_code(self):\n        bk_app_code = self.cleaned_data[\"bk_app_code\"]\n        if not App.objects.filter(code=bk_app_code).exists():\n            self.add_error('bk_app_code', \"应用（%s）不存在\" % bk_app_code)\n\n        return bk_app_code\n\n    def clean_bk_light_app_name(self):\n        bk_light_app_name = self.cleaned_data[\"bk_light_app_name\"]\n        # for create, the old_name is ''\n        valid, message = self.validate_light_app_name(bk_light_app_name, '')\n        if not valid:\n            self.add_error('bk_light_app_name', message)\n\n        return bk_light_app_name\n\n    def clean_app_url(self):\n        app_url = self.cleaned_data['app_url']\n        if not app_url:\n            self.add_error(\"app_url\", \"APP链接不能为空\")\n        else:\n            valid, message = self.validate_app_url(app_url)\n            if not valid:\n                self.add_error(\"app_url\", message)\n\n        return app_url\n\n\nclass LightAppEditForm(LightAppChangeBaseInfoForm):\n    bk_light_app_name = forms.CharField(required=False)\n    app_url = forms.CharField(required=False)\n    introduction = forms.CharField(required=False)\n\n    def clean_bk_light_app_name(self):\n        bk_light_app_name = self.cleaned_data[\"bk_light_app_name\"]\n        if bk_light_app_name:\n            bk_light_app_code = self.cleaned_data.get('bk_light_app_code')\n            light_app = UsefulLinks.objects.get_light_app_or_none(bk_light_app_code)\n            if light_app:\n                old_app_name = light_app.name\n                valid, message = self.validate_light_app_name(bk_light_app_name, old_app_name)\n                if not valid:\n                    self.add_error('bk_light_app_name', message)\n\n        return bk_light_app_name\n\n    def clean_app_url(self):\n        app_url = self.cleaned_data['app_url']\n        valid, message = self.validate_app_url(app_url)\n        if not valid:\n            self.add_error(\"app_url\", message)\n\n        return app_url\n\n\nclass LightAppLogoModifyForm(LightAppChangeBaseInfoForm):\n    logo = forms.CharField()\n\n    def clean_logo(self):\n        logo = self.cleaned_data['logo']\n        if not logo:\n            self.add_error(\"logo\", \"logo 不允许为空\")\n\n        return logo\n"
  },
  {
    "path": "paas-ce/paas/paas/api/response.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.http import JsonResponse\n\nfrom api.constants import ApiErrorCodeEnumV2\n\n\nclass ApiV2BaseJsonResponse(JsonResponse):\n    def __init__(self, result, code, message, data=None):\n        data = data if data is not None else {}\n        json_data = {'result': result, 'bk_error_code': code, 'bk_error_msg': message, 'data': data}\n        super(ApiV2BaseJsonResponse, self).__init__(json_data)\n\n\nclass ApiV2FailJsonResponse(ApiV2BaseJsonResponse):\n    def __init__(self, message, **kwargs):\n        code = kwargs.get('code') or ApiErrorCodeEnumV2.PARAM_NOT_VALID.value\n        data = kwargs.get('data')\n        super(ApiV2FailJsonResponse, self).__init__(False, code, message, data=data)\n\n\nclass ApiV2OKJsonResponse(ApiV2BaseJsonResponse):\n    def __init__(self, message, **kwargs):\n        data = kwargs.get('data')\n        super(ApiV2OKJsonResponse, self).__init__(True, ApiErrorCodeEnumV2.SUCCESS.value, message, data=data)\n"
  },
  {
    "path": "paas-ce/paas/paas/api/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport json\n\nfrom django.conf import settings\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\nfrom account.models import BkUser\nfrom app.models import App\n# from common.utils import setup_view\nfrom api.views import AppInfoAPIView, AppInfoV2APIView\n\n\nclass AppInfoAPITestCase(TestCase):\n    def setUp(self):\n        self.factory = RequestFactory()\n        # from django.test.client import Client\n        # self.client = Client()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n        self.code = 'test'\n\n        app = App()\n        app.code = self.code\n        app.name = self.code\n        app.introduction = \"introduction\"\n        app.creater = 'admin',\n        app.language = 'python'\n        app.auth_token = '1234'\n        app.deploy_token = '1234'\n        app.tags = None\n        app.save()\n\n    def test_app_info_api(self):\n\n        kwargs = {\n            \"HTTP_X_APP_TOKEN\": settings.ESB_TOKEN,\n            \"HTTP_X_APP_CODE\": \"esb\"\n        }\n        request = self.factory.get(\"/paas/api/app_info/?target_app_code={}\".format(self.code), **kwargs)\n        request.user = self.user\n\n        view = AppInfoAPIView.as_view()\n        response = view(request)\n        self.assertEqual(response.status_code, 200)\n\n        data = json.loads(response.content)\n\n        self.assertTrue(data[\"result\"])\n        self.assertEqual(\"00\", data[\"code\"])\n\n    def test_app_info_api_v2(self):\n        kwargs = {\n            \"HTTP_X_APP_TOKEN\": settings.ESB_TOKEN,\n            \"HTTP_X_APP_CODE\": \"esb\"\n        }\n        request = self.factory.get(\"/paas/api/v2/app_info/?target_app_code={}\".format(self.code), **kwargs)\n        request.user = self.user\n\n        view = AppInfoV2APIView.as_view()\n        response = view(request)\n        self.assertEqual(response.status_code, 200)\n\n        # {\"bk_error_msg\": \"\", \"bk_error_code\": 0, \"data\": [{\"bk_app_code\": \"test\", \"bk_app_name\": \"test\"}]}\n        data = json.loads(response.content)\n\n        self.assertEqual(0, data[\"bk_error_code\"])\n\n    def tearDown(self):\n        App.objects.get(code=self.code).delete()\n"
  },
  {
    "path": "paas-ce/paas/paas/api/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import path\n\nfrom api import views\nfrom api.constants import LightAppAPIActionEnum\n\nurlpatterns = [\n    # 应用基本信息API(已接入ESB)\n    path('app_info/', views.AppInfoAPIView.as_view()),\n    path('v2/app_info/', views.AppInfoV2APIView.as_view()),\n\n    # please use the new apis below\n    # after format\n    path('v2/app/info/', views.AppInfoV2APIView.as_view()),\n\n    # 轻应用API(已接入ESB)\n    path('v2/create_app/', views.LightAppView.as_view(action=LightAppAPIActionEnum.POST.value)),\n    path('v2/edit_app/', views.LightAppView.as_view(action=LightAppAPIActionEnum.PUT.value)),\n    path('v2/del_app/', views.LightAppView.as_view(action=LightAppAPIActionEnum.DELETE.value)),\n    path('v2/modify_app_logo/', views.LightAppView.as_view(action=LightAppAPIActionEnum.PUT_LOGO.value)),\n\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/api/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport base64\nimport uuid\n\nfrom django.core.files.base import ContentFile\n\n\ndef trans_b64_to_content_file(value):\n    image_data = base64.b64decode(value)\n    image_name = ''.join([str(uuid.uuid4()), '.png'])\n    return ContentFile(image_data, image_name)\n"
  },
  {
    "path": "paas-ce/paas/paas/api/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport json\n\nfrom django.utils.decorators import method_decorator\nfrom django.views.decorators.csrf import csrf_exempt\nfrom django.views.generic import View\nfrom django.http import JsonResponse\n\nfrom account.decorators import login_exempt\nfrom common.utils import first_error_message\nfrom common.log import logger\nfrom common.responses import OKJsonResponse\nfrom api.decorators import esb_required, esb_required_v2\nfrom api.response import ApiV2FailJsonResponse, ApiV2OKJsonResponse\nfrom api.constants import ApiErrorCodeEnumV2\nfrom app.models import App\nfrom home.models import UsefulLinks\nfrom home.constants import LinkTypeEnum\nfrom api.forms import (LightAppCreateForm, LightAppEditForm,\n                       LightAppChangeBaseInfoForm, LightAppLogoModifyForm)\nfrom api.utils import trans_b64_to_content_file\n\n\nclass AppInfoAPIView(View):\n    \"\"\"api to get app info\n    @api {GET} /paas/api/app_info/ get_app_info\n    @apiName get_app_info\n    @apiGroup BK_PAAS\n    @apiVersion 1.0.0\n    @apiDescription 获取应用信息[支持批量获取]\n    @apiParam (GET参数) {String} target_app_code 应用ID，多个target_app_code以英文分号分隔，target_app_code为空则表示所有应用\n    @apiParamExample {json} 接口参数示例:\n        {\n            \"target_app_code\": \"test1;test2\",\n        }\n    @apiSuccessExample {json} Success-Response\n        HTTP/1.1 200 OK\n        {\n            \"result\": true,\n            \"code\": '00',\n            \"message\": \"SUCCESS\",\n            \"data\": [\n                {\n                    'app_code': 'test1',\n                    'app_name': '测试1',\n                },\n                {\n                    'app_code': 'test2',\n                    'app_name': '测试2'\n                }\n            ]\n        }\n    \"\"\"\n    @method_decorator(csrf_exempt)\n    @method_decorator(login_exempt)\n    @method_decorator(esb_required)\n    def dispatch(self, *args, **kwargs):\n        return super(AppInfoAPIView, self).dispatch(*args, **kwargs)\n\n    def get(self, request):\n        # NOTE: better name is: target_app_codes\n        app_codes = request.GET.get('target_app_code')\n\n        query = App.objects.all()\n        # 过滤查询的app_codes\n        if app_codes:\n            app_code_list = app_codes.split(';')\n\n            query = query.filter(code__in=app_code_list)\n\n        # 按照创建时间逆排序\n        query = query.values('code', 'name').order_by('-created_date')\n        app_list = [{\n            'app_code': i['code'],\n            'app_name': i['name']\n        } for i in query]\n\n        return OKJsonResponse(\"SUCCESS\", data=app_list, code=\"00\")\n\n\nclass AppInfoV2APIView(View):\n    @method_decorator(csrf_exempt)\n    @method_decorator(login_exempt)\n    @method_decorator(esb_required_v2)\n    def dispatch(self, *args, **kwargs):\n        return super(AppInfoV2APIView, self).dispatch(*args, **kwargs)\n\n    def get(self, request):\n        app_codes = request.GET.get('target_app_code')\n        fields = request.GET.get('fields')\n\n        query = App.objects.all()\n        # 过滤查询的app_codes\n        if app_codes:\n            app_code_list = app_codes.split(';')\n            query = query.filter(code__in=app_code_list)\n        support_fields = ['introduction', 'creator', 'developer', 'tag']\n        extra_fields_set = set(fields.split(';')) & set(support_fields) if fields else set()\n\n        # 按照创建时间逆排序\n        query = query.order_by('-created_date')\n        app_list = []\n        for app in query:\n            item = {\n                'bk_app_code': app.code,\n                'bk_app_name': app.name\n            }\n            if 'introduction' in extra_fields_set:\n                item.update({'introduction': app.introduction})\n            if 'creator' in extra_fields_set:\n                item.update({'creator': app.creater})\n            if 'developer' in extra_fields_set:\n                item.update({'developer': app.developer_str})\n            if 'tag' in extra_fields_set:\n                if app.tags:\n                    item.update({'tag': app.tags.to_dict()})\n                else:\n                    item.update({'tag': {}})\n\n            app_list.append(item)\n\n        return JsonResponse({\n            \"bk_error_msg\": \"\",\n            \"bk_error_code\": 0,\n            \"data\": app_list\n        })\n\n\nclass LightAppView(View):\n    action = \"\"\n    request_body_params = {}\n\n    @method_decorator(csrf_exempt)\n    @method_decorator(login_exempt)\n    @method_decorator(esb_required_v2)\n    def dispatch(self, request, *args, **kwargs):\n        if request.method.lower() in self.http_method_names:\n            self.request_body_params = self._get_body_params(request)\n            handler = getattr(self, self.action, self.http_method_not_allowed)\n        else:\n            handler = self.http_method_not_allowed\n        return handler(request, *args, **kwargs)\n\n    def _get_body_params(self, request):\n        try:\n            return json.loads(request.body) if request.body else {}\n        except Exception:\n            return {}\n\n    def post(self, request, *args, **kwargs):\n        form = LightAppCreateForm(self.request_body_params)\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID.value)\n\n        parent_app = App.objects.get(code=form.cleaned_data[\"bk_app_code\"])\n\n        # 保存应用信息到数据库\n        link = UsefulLinks.objects.create(\n            name=form.cleaned_data[\"bk_light_app_name\"],\n            link=form.cleaned_data[\"app_url\"],\n            link_type=LinkTypeEnum.LIGHT_APP.value,\n            introduction=form.cleaned_data[\"introduction\"] or parent_app.introduction\n        )\n        data = {'bk_light_app_code': link.code}\n\n        return ApiV2OKJsonResponse(\"创建轻应用成功\", data=data)\n\n    def put(self, request, *args, **kwargs):\n        form = LightAppEditForm(self.request_body_params)\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID.value)\n\n        light_app = UsefulLinks.objects.get_light_app_or_none(form.cleaned_data[\"bk_light_app_code\"])\n\n        # 保存应用基本信息\n        light_app.introduction = form.cleaned_data[\"introduction\"] or light_app.introduction\n        light_app.name = form.cleaned_data[\"bk_light_app_name\"] or light_app.name\n        light_app.link = form.cleaned_data[\"app_url\"] or light_app.link\n        light_app.save()\n\n        return ApiV2OKJsonResponse(\"app 修改成功\", data={})\n\n    def put_logo(self, request, *args, **kwargs):\n        form = LightAppLogoModifyForm(self.request_body_params)\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID.value)\n\n        light_app = UsefulLinks.objects.get_light_app_or_none(form.cleaned_data[\"bk_light_app_code\"])\n\n        try:\n            light_app.logo = trans_b64_to_content_file(form.cleaned_data[\"logo\"])\n            light_app.save()\n        except Exception as e:\n            # 保存logo时出错\n            logger.exception(\"save app logo fail: %s\" % e)\n            return ApiV2FailJsonResponse(\"logo 数据格式不合法\", code=ApiErrorCodeEnumV2.PARAM_NOT_VALID.value)\n\n        return ApiV2OKJsonResponse(\"app logo修改成功\", data={})\n\n    def delete(self, request, *args, **kwargs):\n        form = LightAppChangeBaseInfoForm(self.request_body_params)\n        if not form.is_valid():\n            message = first_error_message(form)\n            return ApiV2FailJsonResponse(message, code=ApiErrorCodeEnumV2.PARAM_NOT_VALID.value)\n\n        light_app = UsefulLinks.objects.get_light_app_or_none(form.cleaned_data[\"bk_light_app_code\"])\n\n        # 将app状态标记为下架\n        light_app.is_active = False\n        light_app.save()\n        return ApiV2OKJsonResponse(\"app 下架成功\", data={})\n"
  },
  {
    "path": "paas-ce/paas/paas/app/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\ndefault_app_config = 'app.apps.appConfig'\n\nfrom django.apps import apps\nfrom django.db.models.signals import post_migrate\n#from app import models as m\nfrom django.db import transaction\n\n\n@transaction.atomic\ndef init_data(**kwargs):\n    # 初始化 应用分类\n    from app.models import AppTags\n    with transaction.atomic():\n        try:\n            AppTags.objects.get_or_create(name=\"基础服务\", code='Service')\n            AppTags.objects.get_or_create(name=\"管理类\", code='MGT')\n            AppTags.objects.get_or_create(name=\"数据类\", code='Data')\n            AppTags.objects.get_or_create(name=\"行政和HR\", code='Hr')\n            AppTags.objects.get_or_create(name=\"运维工具\", code='Tools')\n            AppTags.objects.get_or_create(name=\"流程管理\", code='BPM')\n            AppTags.objects.get_or_create(name=\"运营支持\", code='Supports')\n            AppTags.objects.get_or_create(name=\"其它\", code='Other')\n        except Exception as e:\n            print(e)\n            print(\"Init app tags fail\")\n\n\n#init_data()\n#post_migrate.connect(init_data, sender=m)\n"
  },
  {
    "path": "paas-ce/paas/paas/app/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\n\nfrom app.models import App, AppTags, SecureInfo\n\n\n@admin.register(App)\nclass AppAdmin(admin.ModelAdmin):\n    list_display = ('name', 'code', 'creater', 'created_date', 'state', 'is_already_test', 'is_already_online')\n    search_fields = ('name', 'code', 'creater')\n    list_filter = ('creater', 'created_date', 'is_saas')\n\n\n\n\n@admin.register(SecureInfo)\nclass SecureInfoAdmin(admin.ModelAdmin):\n    list_display = ('app_code', 'vcs_type', 'vcs_url', 'vcs_username')\n    search_fields = ('app_code', )\n    list_filter = ('vcs_type', )\n    exclude = ('vcs_url', 'vcs_username', 'vcs_password',\n               'db_host', 'db_port', 'db_name', 'db_username', 'db_password')\n\n\n\n\n@admin.register(AppTags)\nclass AppTagsAdmin(admin.ModelAdmin):\n    list_display = ('code', 'name', 'index')\n    search_fields = ('code', 'name')\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/app/apps.py",
    "content": "from django.apps import AppConfig\n\nclass appConfig(AppConfig):\n    name = 'app'\n    verbose_name = \"PaaS App\"\n"
  },
  {
    "path": "paas-ce/paas/paas/app/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom enum import Enum\n\n\nclass AppStateEnum(Enum):\n    OFFLINE = 0\n    DEVELOPMENT = 1\n    TEST = 3\n    ONLINE = 4\n    IN_TEST = 8\n    IN_ONLINE = 9\n    IN_OFFLINE = 10\n\n\n# 应用状态信息\nSTATE_CHOICES = [\n    (AppStateEnum.OFFLINE.value, \"已下架\"),\n    (AppStateEnum.DEVELOPMENT.value, \"开发中\"),\n    (AppStateEnum.TEST.value, \"测试中\"),\n    (AppStateEnum.ONLINE.value, \"已上线\"),\n    (AppStateEnum.IN_TEST.value, \"正在提测\"),\n    (AppStateEnum.IN_ONLINE.value, \"正在上线\"),\n    (AppStateEnum.IN_OFFLINE.value, \"正在下架\"),\n]\nSTATE_CHOICES_DISPALY_DICT = dict(STATE_CHOICES)\n\n\n# App允许打开条件: ALL全部/TEST 只有测试/PRO只有正式/NONE不能打开\nclass AppOpenEnum(Enum):\n    OPEN_IN_ALL = 1\n    OPEN_IN_TEST = 2\n    OPEN_IN_PROD = 3\n    OPEN_NONE = 4\n\n\nclass LanguageEnum(Enum):\n    PYTHON = \"python\"\n    PHP = \"php\"\n\n\nLANGUAGE_CHOICES = [\n    (LanguageEnum.PYTHON.value, 'Python'),\n    (LanguageEnum.PHP.value, 'PHP'),\n]\n\n\nclass VCSTypeEnum(Enum):\n    GIT = 0\n    SVN = 1\n\n\nVCS_TYPE_CHOICES = [\n    (VCSTypeEnum.GIT.value, 'Git'),\n    (VCSTypeEnum.SVN.value, 'SVN'),\n]\nVCS_TYPE_VALID_VALUES = list(dict(VCS_TYPE_CHOICES).keys())\n\n\nclass DBTypeEnum(Enum):\n    MYSQL = \"mysql\"\n    POSTGRESQL = \"postgresql\"\n    ORACLE = \"oracle\"\n    DB2 = \"db2\"\n    SQLSERVER = \"sqlserver\"\n\n\nDB_TYPE_CHOICES = [\n    (DBTypeEnum.MYSQL.value, 'MySQL',),\n    (DBTypeEnum.POSTGRESQL.value, 'PostgreSQL'),\n    (DBTypeEnum.ORACLE.value, 'Oracle'),\n    (DBTypeEnum.DB2.value, 'DB2'),\n    (DBTypeEnum.SQLSERVER.value, 'SQL Server'),\n]\nDB_TYPE_VALID_VALUES = list(dict(DB_TYPE_CHOICES).keys())\n\n# app desktop info\nDESKTOP_DEFAULT_APP_IS_DISPLAY = True\n"
  },
  {
    "path": "paas-ce/paas/paas/app/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django import forms\n\nfrom app.models import App, AppTags\nfrom app.utils import validate_app_name\nfrom common.constants import (APP_CODE_CHECK_MSG, APP_CODE_CHECK_PATTERN,\n                              GIT_URL_CHECK_PATTERN, SVN_URL_CHENK_PATTREN)\nfrom app.constants import VCS_TYPE_CHOICES, VCSTypeEnum\n\n\nclass CheckAppCodeForm(forms.Form):\n    app_code = forms.CharField(max_length=16, min_length=3, error_messages={\"required\": '应用ID不能为空',\n                                                                            \"max_length\": \"应用ID长度不能超过16个字符\",\n                                                                            'min_length': \"应用ID长度不能少于3个字符\",\n                                                                            }\n                               )\n\n    def clean_app_code(self):\n        app_code = self.cleaned_data[\"app_code\"]\n\n        if not APP_CODE_CHECK_PATTERN.match(app_code):\n            self.add_error('app_code', APP_CODE_CHECK_MSG)\n\n        is_exists = App.objects.filter(code=app_code).exists()\n        if is_exists:\n            self.add_error('app_code', \"应用 ID[{}]已存在\".format(app_code))\n\n        return app_code\n\n\nclass BaseInfoForm(forms.Form):\n    name = forms.CharField(max_length=20)\n    app_tags = forms.CharField(required=False)\n    developer = forms.CharField(required=False)\n\n    def clean_name(self):\n        name = self.cleaned_data[\"name\"]\n        return name.replace('&nbsp;', ' ').strip()\n\n    def clean_developer(self):\n        developer = self.cleaned_data[\"developer\"]\n        if not developer:\n            self.add_error('developer', \"负责人不能为空\")\n        return developer\n\n    def clean_app_tags(self):\n        app_tags = self.cleaned_data[\"app_tags\"]\n        if app_tags:\n            tag = AppTags.objects.filter(code=app_tags)\n            if not tag:\n                self.add_error('app_tags', \"标签不存在\")\n            return tag[0]\n        return None\n\n\nclass DBInfoForm(forms.Form):\n    db_host = forms.CharField(error_messages={\"required\": \"数据库信息不能为空\"})\n    db_username = forms.CharField(error_messages={\"required\": \"数据库信息不能为空\"})\n    db_port = forms.IntegerField(error_messages={\"required\": \"数据库信息不能为空\", \"invalid\": \"数据库端口必须为整数\"})\n    db_password = forms.CharField()\n\n\nclass VCSInfoForm(forms.Form):\n    vcs_type = forms.ChoiceField(choices=VCS_TYPE_CHOICES,\n                                 error_messages={\"required\": \"代码仓库类型不能为空\",\n                                                 \"invalid_choice\": \"代码仓库类型不合法, 目前只支持svn 或 git\"})\n    vcs_url = forms.CharField(error_messages={\"required\": \"代码仓库地址不能为空\"})\n    vcs_username = forms.CharField(error_messages={\"required\": \"用户名不能为空\"})\n    vcs_password = forms.CharField(error_messages={\"required\": \"密码不能为空\"})\n\n    def clean_vcs_url(self):\n        vcs_url = self.cleaned_data[\"vcs_url\"]\n\n        vcs_url = vcs_url.replace('&nbsp;', ' ').strip()\n\n        vcs_type = self.cleaned_data[\"vcs_type\"]\n        pattern = GIT_URL_CHECK_PATTERN if vcs_type == str(VCSTypeEnum.GIT.value) else SVN_URL_CHENK_PATTREN\n\n        if not pattern.match(vcs_url):\n            self.add_error(\"vcs_url\", \"请填写正确的仓库地址\")\n\n        return vcs_url\n\n    def clean_vcs_username(self):\n        vcs_username = self.cleaned_data[\"vcs_username\"]\n        return vcs_username.replace('&nbsp;', ' ').strip()\n\n    def clean_vcs_password(self):\n        vcs_password = self.cleaned_data[\"vcs_password\"]\n        return vcs_password.replace('&nbsp;', ' ').strip()\n\n\nclass AppQueryForm(forms.Form):\n    keyword = forms.CharField(required=False)\n    hide_offline = forms.CharField(initial=\"0\")\n    page = forms.IntegerField(required=False, initial=1)\n    page_size = forms.IntegerField(required=False)\n\n    def clean_keyword(self):\n        keyword = self.cleaned_data[\"keyword\"]\n        return keyword.replace('&nbsp;', ' ').strip()\n\n    def clean_hide_offline(self):\n        try:\n            hide_offline = int(self.cleaned_data[\"hide_offline\"])\n            return hide_offline\n        except Exception:\n            return 0\n\n    def clean_page_size(self):\n        page_size = self.cleaned_data[\"page_size\"]\n        if not page_size:\n            return 8\n        return page_size\n\n\nclass AppCreateForm(VCSInfoForm):\n    code = forms.CharField(max_length=16, min_length=3, error_messages={\"required\": '应用ID不能为空',\n                                                                        \"max_length\": \"应用ID长度不能超过16个字符\",\n                                                                        'min_length': \"应用ID长度不能少于3个字符\",\n                                                                        }\n                           )\n    name = forms.CharField(max_length=20)\n    introduction = forms.CharField()\n    app_tags = forms.CharField(required=False)\n    language = forms.CharField(required=False)\n    deploy_token = forms.CharField(required=False)\n    developer = forms.CharField(required=False)\n\n    def clean_code(self):\n        code = self.cleaned_data[\"code\"]\n        code = code.replace('&nbsp;', ' ').strip()\n\n        if not APP_CODE_CHECK_PATTERN.match(code):\n            self.add_error('code', APP_CODE_CHECK_MSG)\n\n        is_exists = App.objects.filter(code=code).exists()\n        if is_exists:\n            self.add_error('code', \"应用 ID[{}]已存在\".format(code))\n\n        return code\n\n    def clean_name(self):\n        name = self.cleaned_data[\"name\"]\n        name = name.replace('&nbsp;', ' ').strip()\n        # for create, the old_name is ''\n        valid, message = validate_app_name(name, '')\n        if not valid:\n            self.add_error('name', message)\n\n        return name\n\n    def clean_introduction(self):\n        introduction = self.cleaned_data[\"introduction\"]\n        return introduction.replace('&nbsp;', ' ').strip()\n\n    def clean_app_tags(self):\n        app_tags = self.cleaned_data[\"app_tags\"]\n        if app_tags:\n            tag = AppTags.objects.filter(code=app_tags)\n            if not tag:\n                self.add_error('app_tags', \"标签不存在\")\n            return tag[0]\n        return None\n\n    def clean_deploy_token(self):\n        deploy_token = self.cleaned_data[\"deploy_token\"]\n        return deploy_token.replace('&nbsp;', ' ').strip()\n\n    def clean_vcs_username(self):\n        vcs_username = self.cleaned_data[\"vcs_username\"]\n        return vcs_username.replace('&nbsp;', ' ').strip()\n\n    def clean_vcs_password(self):\n        vcs_password = self.cleaned_data[\"vcs_password\"]\n        return vcs_password.replace('&nbsp;', ' ').strip()\n"
  },
  {
    "path": "paas-ce/paas/paas/app/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db.models import Q\nfrom django.db import models\n\nfrom app.constants import AppStateEnum, DESKTOP_DEFAULT_APP_IS_DISPLAY\n\n\nclass AppManager(models.Manager):\n\n    def to_state(self, app_code, state, **kwargs):\n        self.filter(code=app_code).update(state=state, **kwargs)\n\n    def query_app_list(self, is_superuser, username, keyword, hide_offline, start, end):\n        # 超级管理员可以查看所有的应用\n        app_all_list = self.filter(is_saas=False)\n        if is_superuser:\n            app_all_list = app_all_list.order_by('-created_date')\n        else:\n            app_all_list = app_all_list.filter(Q(developer__username=username) | Q(creater=username))\\\n                                       .order_by('-created_date').distinct()\n        has_app = app_all_list.count() > 0\n        if keyword:\n            app_all_list = app_all_list.filter(\n                Q(name__icontains=keyword) | Q(code__icontains=keyword) | Q(creater__icontains=keyword)\n            )\n\n        if hide_offline == 0:\n            app_all_list = app_all_list.exclude(state=AppStateEnum.OFFLINE.value)\n            # app_all_list = app_all_list.exclude(state__gt=1, is_already_test=False, is_already_online=False)\n\n        total = app_all_list.count()\n        app_list = app_all_list[start:end]\n\n        return has_app, total, app_list\n\n    def gen_user_app_info_for_dashboard(self, code):\n        app = self.get(code=code)\n        if app.is_already_online and app.state not in [AppStateEnum.OFFLINE.value, AppStateEnum.DEVELOPMENT.value]:\n            # 添加上线，同时不处于下线和开发中的应用数据\n            return app.gen_dashboard_dict(is_online=True)\n        return None\n\n    def gen_user_new_online_app_info_list_for_dashboard(self, app_code_list):\n        new_online_app_info_list = []\n        new_online_apps = self.exclude(code__in=app_code_list)\\\n                              .filter(is_already_online=True)\\\n                              .exclude(state__in=[AppStateEnum.OFFLINE.value, AppStateEnum.DEVELOPMENT.value])\n        for _app in new_online_apps:\n            app_dict = _app.gen_dashboard_dict(is_online=True)\n            new_online_app_info_list.append(app_dict)\n\n        return new_online_app_info_list\n\n    def trigger_celery(self, is_use_celery, is_use_celery_beat):\n        self.is_use_celery = is_use_celery\n        self.is_use_celery_beat = is_use_celery_beat\n        self.save()\n\n\nclass SecureInfoManager(models.Manager):\n\n    def get_vcs_info(self, app_code):\n        \"\"\"vcs 版本管理信息\n        \"\"\"\n        info = self.filter(app_code=app_code)\n        if not info:\n            return {}\n\n        info = info[0]\n        return {\"VCS_TYPE\": info.vcs_type_text,\n                \"VCS_PATH\": info.vcs_url,\n                \"VCS_USERNAME\": info.vcs_username,\n                \"VCS_PASSWORD\": info.vcs_password,\n                }\n\n    def get_db_info(self, app_code):\n        info = self.filter(app_code=app_code)\n        if not info:\n            return {}\n\n        info = info[0]\n        return {\n            \"DB_TYPE\": info.db_type,\n            \"DB_HOST\": info.db_host,\n            \"DB_PORT\": info.db_port,\n            \"DB_NAME\": info.db_name,\n            \"DB_USERNAME\": info.db_username,\n            \"DB_PASSWORD\": info.db_password,\n        }\n\n    def exists(self, app_code):\n        info = self.filter(app_code=app_code)\n        if not info:\n            return False\n        return True\n\n\nclass DesktopSettingsManager(models.Manager):\n    def is_app_display(self, app_code):\n        # if is useful links\n        if app_code.startswith(\"_\"):\n            return True\n\n        if not self.filter(app_code=app_code).exists():\n            return DESKTOP_DEFAULT_APP_IS_DISPLAY\n        return self.get(app_code=app_code).is_display\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        migrations.swappable_dependency(settings.AUTH_USER_MODEL),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='App',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(unique=True, max_length=20, verbose_name='\\u5e94\\u7528\\u540d\\u79f0')),\n                ('code', models.CharField(help_text='\\u6b64\\u5904\\u8bf7\\u7528\\u82f1\\u6587\\u5b57\\u6bcd', unique=True, max_length=30, verbose_name='\\u5e94\\u7528\\u7f16\\u7801')),\n                ('introduction', models.TextField(verbose_name='\\u5e94\\u7528\\u7b80\\u4ecb')),\n                ('creater', models.CharField(max_length=20, verbose_name='\\u521b\\u5efa\\u8005')),\n                ('created_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4', db_index=True)),\n                ('state', models.SmallIntegerField(default=1, help_text='app\\u7684\\u5f00\\u53d1\\u72b6\\u6001', verbose_name='\\u5e94\\u7528\\u5f00\\u53d1\\u72b6\\u6001', choices=[(0, '\\u5df2\\u4e0b\\u67b6'), (1, '\\u5f00\\u53d1\\u4e2d'), (3, '\\u6d4b\\u8bd5\\u4e2d'), (4, '\\u5df2\\u4e0a\\u7ebf'), (8, '\\u6b63\\u5728\\u63d0\\u6d4b'), (9, '\\u6b63\\u5728\\u4e0a\\u7ebf'), (10, '\\u6b63\\u5728\\u4e0b\\u67b6')])),\n                ('is_already_test', models.BooleanField(default=False, help_text='app\\u5728\\u6d4b\\u8bd5\\u73af\\u5883\\u4e0b\\u67b6\\u6216\\u8005\\u5f00\\u53d1\\u4e2d\\u72b6\\u6001\\uff0c\\u4fee\\u6539\\u8be5\\u5b57\\u6bb5\\u4e3aFalse\\u3002', verbose_name='\\u662f\\u5426\\u5df2\\u7ecf\\u63d0\\u6d4b')),\n                ('is_already_online', models.BooleanField(default=False, help_text='app\\u6b63\\u5f0f\\u73af\\u5883\\u672a\\u4e0b\\u67b6\\uff0c\\u8be5\\u5b57\\u6bb5\\u4e3aTrue\\u3002', verbose_name='\\u662f\\u5426\\u5df2\\u7ecf\\u4e0a\\u7ebf')),\n                ('first_test_time', models.DateTimeField(help_text='\\u8bb0\\u5f55\\u5e94\\u7528\\u9996\\u6b21\\u63d0\\u6d4b\\u65f6\\u95f4', null=True, verbose_name='\\u5e94\\u7528\\u9996\\u6b21\\u63d0\\u6d4b\\u65f6\\u95f4', db_index=True, blank=True)),\n                ('first_online_time', models.DateTimeField(help_text='\\u8bb0\\u5f55\\u5e94\\u7528\\u9996\\u6b21\\u4e0a\\u7ebf\\u65f6\\u95f4', null=True, verbose_name='\\u5e94\\u7528\\u9996\\u6b21\\u4e0a\\u7ebf\\u65f6\\u95f4', db_index=True, blank=True)),\n                ('language', models.CharField(default=b'python', choices=[(b'python', b'Python'), (b'php', b'PHP')], max_length=50, blank=True, null=True, verbose_name='\\u8bed\\u8a00')),\n                ('auth_token', models.CharField(max_length=36, null=True, verbose_name=b'Token', blank=True)),\n                ('developer', models.ManyToManyField(related_name='developers', verbose_name='\\u5f00\\u53d1\\u8005', to=settings.AUTH_USER_MODEL)),\n            ],\n            options={\n                'db_table': 'paas_app',\n            },\n        ),\n        migrations.CreateModel(\n            name='SecureInfo',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(unique=True, max_length=30, verbose_name='\\u5bf9\\u5e94\\u7684appcode')),\n                ('vcs_type', models.SmallIntegerField(default=1, help_text='app\\u7684\\u5f00\\u53d1\\u72b6\\u6001', verbose_name='\\u7248\\u672c\\u63a7\\u5236\\u7c7b\\u578b', choices=[(0, 'Git'), (1, 'SVN')])),\n                ('vcs_url', models.CharField(max_length=1024, null=True, verbose_name='\\u7248\\u672c\\u5e93URL', blank=True)),\n                ('vcs_username', models.CharField(max_length=50, null=True, verbose_name='\\u7248\\u672c\\u5e93\\u7528\\u6237\\u540d', blank=True)),\n                ('vcs_password', models.CharField(max_length=50, null=True, verbose_name='\\u7248\\u672c\\u5e93\\u5bc6\\u7801', blank=True)),\n                ('db_type', models.CharField(default=b'mysql', choices=[(b'mysql', b'MySQL'), (b'postgresql', b'PostgreSQL'), (b'oracle', b'Oracle'), (b'db2', b'DB2'), (b'sqlserver', b'SQL Server')], max_length=20, blank=True, null=True, verbose_name='\\u6570\\u636e\\u5e93\\u7c7b\\u578b')),\n                ('db_host', models.CharField(max_length=1024, null=True, verbose_name='\\u6570\\u636e\\u5e93HOST', blank=True)),\n                ('db_port', models.IntegerField(default=3306, null=True, verbose_name='\\u6570\\u636e\\u5e93PORT', blank=True)),\n                ('db_name', models.CharField(max_length=30, null=True, verbose_name='\\u6570\\u636e\\u5e93\\u540d\\u79f0', blank=True)),\n                ('db_username', models.CharField(max_length=50, null=True, verbose_name='\\u6570\\u636e\\u5e93\\u7528\\u6237\\u540d', blank=True)),\n                ('db_password', models.CharField(max_length=50, null=True, verbose_name='\\u6570\\u636e\\u5e93\\u5bc6\\u7801', blank=True)),\n            ],\n            options={\n                'db_table': 'paas_app_secureinfo',\n                'verbose_name': 'app\\u5b89\\u5168\\u76f8\\u5173\\u4fe1\\u606f',\n                'verbose_name_plural': 'app\\u5b89\\u5168\\u76f8\\u5173\\u4fe1\\u606f',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0002_auto_20160615_2036.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='AppTags',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(unique=True, max_length=20, verbose_name='\\u5206\\u7c7b\\u540d\\u79f0')),\n                ('code', models.CharField(unique=True, max_length=30, verbose_name='\\u5206\\u7c7b\\u82f1\\u6587ID')),\n                ('index', models.IntegerField(default=0, verbose_name='\\u6392\\u5e8f')),\n            ],\n            options={\n                'db_table': 'paas_apptags',\n            },\n        ),\n        migrations.AddField(\n            model_name='app',\n            name='tags',\n            field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='app.AppTags', help_text='\\u5e94\\u7528\\u5206\\u7c7b', null=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0003_app_deploy_token.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0002_auto_20160615_2036'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='app',\n            name='deploy_token',\n            field=models.TextField(null=True, verbose_name=b'deploy_token', blank=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0004_auto_20160929_1101.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0003_app_deploy_token'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='app',\n            name='is_use_celery',\n            field=models.BooleanField(default=False, help_text='\\u9009\\u9879: true(\\u662f)\\uff0cfalse(\\u5426)', verbose_name='app\\u662f\\u5426\\u4f7f\\u7528celery'),\n        ),\n        migrations.AddField(\n            model_name='app',\n            name='is_use_celery_beat',\n            field=models.BooleanField(default=False, help_text='\\u9009\\u9879: true(\\u662f)\\uff0cfalse(\\u5426)', verbose_name='app\\u662f\\u5426\\u4f7f\\u7528\\u5b9a\\u65f6\\u4efb\\u52a1'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0005_auto_20161017_1038.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0004_auto_20160929_1101'),\n    ]\n\n    operations = [\n        migrations.AlterModelOptions(\n            name='app',\n            options={'verbose_name': '\\u5e94\\u7528\\u57fa\\u672c\\u4fe1\\u606f', 'verbose_name_plural': '\\u5e94\\u7528\\u57fa\\u672c\\u4fe1\\u606f'},\n        ),\n        migrations.AlterModelOptions(\n            name='apptags',\n            options={'ordering': ('-index',), 'verbose_name': '\\u5e94\\u7528\\u5206\\u7c7b\\u4fe1\\u606f', 'verbose_name_plural': '\\u5e94\\u7528\\u5206\\u7c7b\\u4fe1\\u606f'},\n        ),\n        migrations.AlterModelOptions(\n            name='secureinfo',\n            options={'verbose_name': '\\u5e94\\u7528\\u5b89\\u5168\\u76f8\\u5173\\u4fe1\\u606f', 'verbose_name_plural': '\\u5e94\\u7528\\u5b89\\u5168\\u76f8\\u5173\\u4fe1\\u606f'},\n        ),\n        migrations.AlterField(\n            model_name='apptags',\n            name='index',\n            field=models.IntegerField(default=0, help_text='\\u964d\\u5e8f\\u6392\\u5e8f\\uff0c\\u5373 9 \\u5728 0 \\u4e4b\\u524d', verbose_name='\\u6392\\u5e8f'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0006_app_is_saas.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0005_auto_20161017_1038'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='app',\n            name='is_saas',\n            field=models.BooleanField(default=False, help_text='SaaS\\u670d\\u52a1\\uff0c\\u5373\\u901a\\u8fc7\\u76f4\\u63a5\\u4e0a\\u4f20\\u5305\\u90e8\\u7f72', verbose_name=b'\\xe6\\x98\\xaf\\xe5\\x90\\xa6\\xe4\\xb8\\xbaSaaS\\xe6\\x9c\\x8d\\xe5\\x8a\\xa1'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0007_auto_20161111_1348.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\nimport django.db.models.deletion\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0006_app_is_saas'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='app',\n            name='logo',\n            field=models.ImageField(null=True, upload_to=b'applogo', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='app',\n            name='tags',\n            field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='app.AppTags', help_text='\\u5e94\\u7528\\u5206\\u7c7b', null=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/0008_auto_20190124_1708.py",
    "content": "# -*- coding: utf-8 -*-\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0007_auto_20161111_1348'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='DesktopSettings',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(unique=True, max_length=30, verbose_name='\\u5bf9\\u5e94\\u7684appcode')),\n                ('is_display', models.BooleanField(default=True, verbose_name='\\u662f\\u5426\\u5728\\u684c\\u9762\\u5c55\\u793a')),\n            ],\n            options={\n                'db_table': 'paas_app_desktop_settings',\n                'verbose_name': '\\u5e94\\u7528\\u684c\\u9762\\u5c5e\\u6027',\n                'verbose_name_plural': '\\u5e94\\u7528\\u684c\\u9762\\u5c5e\\u6027',\n            },\n        ),\n        migrations.AlterField(\n            model_name='app',\n            name='is_saas',\n            field=models.BooleanField(default=False, help_text='SaaS\\u670d\\u52a1\\uff0c\\u5373\\u901a\\u8fc7\\u76f4\\u63a5\\u4e0a\\u4f20\\u5305\\u90e8\\u7f72', verbose_name='\\u662f\\u5426\\u4e3aSaaS\\u670d\\u52a1'),\n        ),\n        migrations.AlterField(\n            model_name='secureinfo',\n            name='vcs_type',\n            field=models.SmallIntegerField(default=1, help_text='\\u7248\\u672c\\u4ed3\\u5e93\\u7c7b\\u578b', verbose_name='\\u7248\\u672c\\u63a7\\u5236\\u7c7b\\u578b', choices=[(0, 'Git'), (1, 'SVN')]),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/app/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport time\n\nfrom django.conf import settings\nfrom django.apps import apps\nfrom django.db import models\nfrom django.db.models.deletion import SET_NULL\n\nfrom app.constants import (DB_TYPE_CHOICES, LANGUAGE_CHOICES, STATE_CHOICES,\n                           STATE_CHOICES_DISPALY_DICT, VCS_TYPE_CHOICES,\n                           AppStateEnum, LanguageEnum, VCSTypeEnum, DBTypeEnum)\nfrom app.manager import AppManager, SecureInfoManager, DesktopSettingsManager\nfrom common.utils import should_update_logo, get_app_logo\nfrom common.constants import LogoImgRelatedDirEnum\n\n# just for remove django warning\n#import warnings\n#from django.utils.deprecation import RemovedInDjango19Warning\n#warnings.simplefilter('ignore', RemovedInDjango19Warning)\n\n\nclass AppTags(models.Model):\n    \"\"\"\n    应用所属分类\n    \"\"\"\n    name = models.CharField(\"分类名称\", max_length=20, unique=True)\n    code = models.CharField(\"分类英文ID\", max_length=30, unique=True)\n    index = models.IntegerField(\"排序\", default=0, help_text=\"降序排序，即 9 在 0 之前\")\n\n    def __unicode__(self):\n        return '%s(%s)' % (self.code, self.name)\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ('-index',)\n        db_table = 'paas_apptags'\n        verbose_name = \"应用分类信息\"\n        verbose_name_plural = \"应用分类信息\"\n\n    def to_dict(self):\n        return {\n            \"name\": self.name,\n            \"code\": self.code,\n        }\n\n\nclass App(models.Model):\n    \"\"\"\n    应用基本信息表\n    \"\"\"\n    name = models.CharField(\"应用名称\", max_length=20, unique=True)\n    code = models.CharField(\"应用编码\", max_length=30, unique=True, help_text=\"此处请用英文字母\")\n    introduction = models.TextField(\"应用简介\")\n\n    creater = models.CharField(\"创建者\", max_length=20)\n    # 等于, 新增记录的时间\n    created_date = models.DateTimeField(\"创建时间\", auto_now_add=True, blank=True, null=True, db_index=True)\n\n    state = models.SmallIntegerField(\"应用开发状态\", choices=STATE_CHOICES, help_text=\"app的开发状态\",\n                                     default=AppStateEnum.DEVELOPMENT.value)\n    tags = models.ForeignKey(AppTags, help_text=\"应用分类\", blank=True, null=True, on_delete=SET_NULL)\n    is_already_test = models.BooleanField(\"是否已经提测\", default=False, help_text=\"app在测试环境下架或者开发中状态，修改该字段为False。\")\n    is_already_online = models.BooleanField(\"是否已经上线\", default=False, help_text=\"app正式环境未下架，该字段为True。\")\n\n    first_test_time = models.DateTimeField(\"应用首次提测时间\", help_text=\"记录应用首次提测时间\", blank=True, null=True, db_index=True)\n    first_online_time = models.DateTimeField(\"应用首次上线时间\", help_text=\"记录应用首次上线时间\", blank=True, null=True, db_index=True)\n    # 开发者信息\n    developer = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name=\"开发者\", related_name='developers')\n    # APP语言\n    language = models.CharField(\"语言\", choices=LANGUAGE_CHOICES, default=LanguageEnum.PYTHON.value,\n                                max_length=50, blank=True, null=True)\n\n    # celery\n    is_use_celery = models.BooleanField(\"app是否使用celery\", default=False, help_text=\"选项: true(是)，false(否)\")\n    is_use_celery_beat = models.BooleanField(\"app是否使用定时任务\", default=False, help_text=\"选项: true(是)，false(否)\")\n\n    auth_token = models.CharField('Token', max_length=36, blank=True, null=True)\n    # 部署的激活码,暂时不用，默认值为null\n    deploy_token = models.TextField('deploy_token', blank=True, null=True)\n    # 是否作为SaaS服务，即通过直接上传包部署\n    is_saas = models.BooleanField('是否为SaaS服务', default=False, help_text=\"SaaS服务，即通过直接上传包部署\")\n    # 应用图标\n    logo = models.ImageField(upload_to=LogoImgRelatedDirEnum.APP.value, blank=True, null=True)\n\n    objects = AppManager()\n\n    def save(self, *args, **kwargs):\n        \"\"\"\n        保存前修改 logo 存放路径\n        \"\"\"\n        if not self.logo:\n            return super(App, self).save(*args, **kwargs)\n        should_update, logo_name = should_update_logo(self.code, self.logo.name)\n        if should_update:\n            self.logo.name = logo_name\n        # save操作\n        super(App, self).save(*args, **kwargs)\n\n    @property\n    def logo_url(self):\n        if self.logo:\n            return '{}?v={}'.format(self.logo.url, time.time())\n\n        logo = get_app_logo(self.code)\n        if logo:\n            return logo\n\n        return '{}img/app_logo/default.png'.format(settings.STATIC_URL)\n\n    @property\n    def state_display(self):\n        return STATE_CHOICES_DISPALY_DICT.get(self.state)\n\n    @property\n    def saas_state_display(self):\n        if self.state == AppStateEnum.DEVELOPMENT.value:\n            return \"未部署\"\n        return STATE_CHOICES_DISPALY_DICT.get(self.state)\n\n    @property\n    def created_date_display(self):\n        if not self.created_date:\n            return self.created_date\n        return self.created_date.strftime('%Y-%m-%d')\n\n    @property\n    def first_test_time_display(self):\n        if not self.first_test_time:\n            return self.first_test_time\n        return self.first_test_time.strftime('%Y-%m-%d %H:%M:%S')\n\n    @property\n    def first_online_time_display(self):\n        if not self.first_online_time:\n            return self.first_online_time\n        return self.first_online_time.strftime('%Y-%m-%d %H:%M:%S')\n\n    @property\n    def introduction_display(self):\n        if not self.introduction:\n            return self.introduction\n        return self.introduction.replace('\\n', '<br/>')\n\n    @property\n    def app_test_url(self):\n        return settings.APP_TEST_URL.format(app_code=self.code)\n\n    @property\n    def app_prod_url(self):\n        return settings.APP_PROD_URL.format(app_code=self.code)\n\n    @property\n    def developer_str(self):\n        return ';'.join([item.username for item in self.developer.all()])\n\n    def gen_dashboard_dict(self, is_online):\n        \"\"\"将应用转换为前台展示的列表数据\n        \"\"\"\n        logo = self.logo_url\n        if self.is_saas:\n            from saas.models import SaaSApp\n            saas_app = SaaSApp.objects.filter(app=self)\n            if saas_app.exists():\n                logo = saas_app[0].logo_url\n\n        return {\n            'code': self.code,\n            'name': self.name,\n            'introduction': self.introduction,\n            'logo': logo,\n            'link': self.app_prod_url,\n            'is_online': is_online\n        }\n\n    def can_be_test(self):\n        # 只有[下架/开发/测试/上线]状态可操作 部署测试\n        if self.state not in [AppStateEnum.OFFLINE.value, AppStateEnum.DEVELOPMENT.value,\n                              AppStateEnum.TEST.value, AppStateEnum.ONLINE.value]:\n            return False, \"应用当前状态为：{}，不能进行提测操作！\".format(self.get_state_display())\n        return True, \"OK\"\n\n    def can_be_online(self):\n        if self.state not in [AppStateEnum.OFFLINE.value, AppStateEnum.TEST.value]:\n            return False, \"应用当前状态：{}，APP需要重新测试部署后，才可以进行正式部署操作！\".format(self.get_state_display())\n        return True, \"OK\"\n\n    def can_be_offline(self, mode):\n        if self.state not in [AppStateEnum.OFFLINE.value, AppStateEnum.TEST.value, AppStateEnum.ONLINE.value]:\n            return False, \"应用当前状态为：{}，不能进行下架操作！\".format(self.get_state_display())\n        elif mode in [\"test\", \"all\"] and not self.is_already_test:\n            return False, \"应用测试环境已经下架！\"\n        elif mode in [\"prod\", \"all\"] and not self.is_already_online:\n            return False, \"应用正式环境已经下架！\"\n        return True, \"OK\"\n\n    def can_be_deleted(self, username):\n        if self.creater != username:\n            return False, \"非应用创建者，不能删除！\"\n\n        if self.state not in [AppStateEnum.DEVELOPMENT.value]:\n            return False, \"应用已经部署过，不能删除！\"\n        return True, \"OK\"\n\n    def trigger_celery(self, is_use_celery, is_use_celery_beat):\n        self.is_use_celery = is_use_celery\n        self.is_use_celery_beat = is_use_celery_beat\n        self.save()\n\n    def __unicode__(self):\n        return '%s(%s)' % (self.code, self.name)\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        db_table = 'paas_app'\n        verbose_name = \"应用基本信息\"\n        verbose_name_plural = \"应用基本信息\"\n\n\nclass SecureInfo(models.Model):\n    \"\"\"\n    APP 安全验证相关信息\n    \"\"\"\n    app_code = models.CharField(\"对应的appcode\", max_length=30, unique=True)\n\n    # 源代码版本信息\n    vcs_type = models.SmallIntegerField(\"版本控制类型\", choices=VCS_TYPE_CHOICES, help_text=\"版本仓库类型\",\n                                        default=VCSTypeEnum.SVN.value)\n    vcs_url = models.CharField(\"版本库URL\", max_length=1024, blank=True, null=True)\n    vcs_username = models.CharField(\"版本库用户名\", max_length=50, blank=True, null=True)\n    vcs_password = models.CharField(\"版本库密码\", max_length=50, blank=True, null=True)\n\n    # App数据库信息\n    db_type = models.CharField(\"数据库类型\", choices=DB_TYPE_CHOICES, default=DBTypeEnum.MYSQL.value,\n                               max_length=20, blank=True, null=True)\n    db_host = models.CharField(\"数据库HOST\", max_length=1024, blank=True, null=True)\n    db_port = models.IntegerField(\"数据库PORT\", default=3306, blank=True, null=True)\n    db_name = models.CharField(\"数据库名称\", max_length=30, blank=True, null=True)\n    db_username = models.CharField(\"数据库用户名\", max_length=50, blank=True, null=True)\n    db_password = models.CharField(\"数据库密码\", max_length=50, blank=True, null=True)\n\n    objects = SecureInfoManager()\n\n    @property\n    def vcs_type_text(self):\n        text = dict(VCS_TYPE_CHOICES).get(self.vcs_type)\n        return text.lower() if text else 'unknow'\n\n    def __unicode__(self):\n        return self.app_code\n\n    class Meta:\n        db_table = 'paas_app_secureinfo'\n        verbose_name = \"应用安全相关信息\"\n        verbose_name_plural = \"应用安全相关信息\"\n\n\nclass DesktopSettings(models.Model):\n    \"\"\"应用桌面属性\n    \"\"\"\n    app_code = models.CharField(\"对应的appcode\", max_length=30, unique=True)\n    is_display = models.BooleanField(\"是否在桌面展示\", default=True)\n\n    objects = DesktopSettingsManager()\n\n    def __unicode__(self):\n        return self.app_code\n\n    class Meta:\n        db_table = 'paas_app_desktop_settings'\n        verbose_name = \"应用桌面属性\"\n        verbose_name_plural = \"应用桌面属性\"\n"
  },
  {
    "path": "paas-ce/paas/paas/app/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\nfrom account.models import BkUser\nfrom app.models import App\nfrom app.utils import validate_app_name\nfrom common.utils import setup_view\nfrom app.views import CheckAppCodeView, ErrorView\n\n\nclass AppNameValidateTestCase(TestCase):\n    def setUp(self):\n        self.old_name = 'oldname'\n\n        app = App()\n        app.code = self.old_name\n        app.name = self.old_name\n        app.introduction = \"introduction\"\n        app.creater = 'admin',\n        app.language = 'python'\n        app.auth_token = '1234'\n        app.deploy_token = '1234'\n        app.tags = None\n        app.save()\n\n    def test_util_validate_app_name(self):\n        new_name = 'a' * 21\n\n        r, _ = validate_app_name(new_name, None)\n        self.assertFalse(r)\n\n        r, _ = validate_app_name(self.old_name, None)\n        self.assertFalse(r)\n\n        new_name = 'validname'\n        # change from old_name to new_name\n        r, _ = validate_app_name(new_name, self.old_name)\n        self.assertTrue(r)\n\n        # totally new\n        r, _ = validate_app_name(new_name, None)\n        self.assertTrue(r)\n\n    def tearDown(self):\n        App.objects.get(code=self.old_name).delete()\n\n\nclass CheckAppCodeTestCase(TestCase):\n    def setUp(self):\n        # Every test needs access to the request factory.\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n        self.old_name = 'oldname'\n        app = App()\n        app.code = self.old_name\n        app.name = self.old_name\n        app.introduction = \"introduction\"\n        app.creater = 'admin',\n        app.language = 'python'\n        app.auth_token = '1234'\n        app.deploy_token = '1234'\n        app.tags = None\n        app.save()\n\n    def _do_request(self, app_code):\n        request = self.factory.get(\"/app/check/app_code/?app_code={}\".format(app_code))\n        request.user = self.user\n        # test view template or context_data\n        v = setup_view(CheckAppCodeView(), request)\n        context = v.get_context_data()\n        result = context[\"result\"]\n\n        return result\n\n    def test_get(self):\n        false_app_codes = ['', 'ab', 'a' * 17, '12ab', 'ab_cd', self.old_name]\n        for app_code in false_app_codes:\n            self.assertFalse(self._do_request(app_code))\n\n        true_app_codes = ['abc', 'abcd', 'a' * 16]\n        for app_code in true_app_codes:\n            self.assertTrue(self._do_request(app_code))\n\n    def tearDown(self):\n        App.objects.get(code=self.old_name).delete()\n\n\nclass ErrorViewTest(TestCase):\n    def setUp(self):\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n    def test_get(self):\n        app_code = 'test'\n        error_id = '1'\n        url = \"/app/{}/error/{}/\".format(app_code, error_id)\n        template_name = 'error/app_error_dialog{}.html'.format(error_id)\n\n        request = self.factory.get(url)\n        request.user = self.user\n        kwargs = {\"app_code\": app_code, \"error_id\": error_id}\n\n        # test view template or context_data\n        v = setup_view(ErrorView(), request, **kwargs)\n\n        self.assertEqual(v.get_template_names(), [template_name])\n\n        context = v.get_context_data()\n        self.assertEqual(context[\"app_code\"], app_code)\n"
  },
  {
    "path": "paas-ce/paas/paas/app/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import include, path, re_path\n\nfrom app import views\nfrom app_env import views as app_env_views\nfrom common.constants import SAAS_CODE_REGEX\n\nurlpatterns = [\n    # 创建应用 and create error\n    path('', views.CreateAppView.as_view()),\n    path('error/', views.CreateAppView.as_view()),\n\n    # 应用列表\n    path('list/', include([\n        path('', views.AppListPageView.as_view(), name=\"app_list\"),\n        path('query/', views.AppListView.as_view()),\n    ])),\n\n    # 校验\n    path('check/', include([\n        path('app_code/', views.CheckAppCodeView.as_view(), name='check_app_code'),\n        path('app_name/', views.CheckAppNameView.as_view(), name='check_app_name'),\n    ])),\n\n\n    # app基本信息, use SAAS_CODE_REGEX for both app and saas\n    re_path(r'^(?P<app_code>' + SAAS_CODE_REGEX + ')/', include([\n        # update app\n        path('', views.ModifyAppView.as_view()),\n        # update logo\n        path('logo/', views.ModifyAppLogoView.as_view()),\n\n        path('info/', views.AppInfoView.as_view()),\n        path('status/', views.AppStatusView.as_view()),\n        path('vcs/password/', views.VCSPasswordView.as_view()),\n        # error tip\n        path('error/<int:error_id>/', views.ErrorView.as_view()),\n\n        path('env/', include([\n            # get/post\n            path('', app_env_views.AppEnvView.as_view()),\n            # put/delete\n            path('<int:var_id>/', app_env_views.AppEnvView.as_view()),\n        ])),\n\n    ])),\n\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/app/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom app.models import App\n\n\ndef validate_app_name(name, old_name):\n    \"\"\"\n    校验app名称\n    \"\"\"\n    if len(name) > 20:\n        return False, \"应用名称长度不能超过20个字符\"\n\n    if old_name:\n        exists = App.objects.filter(name=name).exclude(name=old_name).exists()\n    else:\n        exists = App.objects.filter(name=name).exists()\n\n    if exists:\n        return False, \"应用名称[{}]已存在\".format(name)\n    return True, \"校验通过\"\n"
  },
  {
    "path": "paas-ce/paas/paas/app/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.contrib.auth import get_user_model\nfrom django.db import transaction\nfrom django.http import HttpResponseRedirect, JsonResponse\nfrom django.views.generic import View\n\nfrom app.constants import (DB_TYPE_CHOICES, VCS_TYPE_CHOICES, AppOpenEnum,\n                           AppStateEnum)\nfrom app.forms import (AppCreateForm, AppQueryForm, BaseInfoForm,\n                       CheckAppCodeForm, DBInfoForm, VCSInfoForm)\nfrom app.models import App, AppTags, SecureInfo\nfrom app.utils import validate_app_name\nfrom common.exceptions import BadRequestException\nfrom common.log import logger\nfrom common.mixins.base import AppDeveloperRequiredMixin\nfrom common.mymako import render_mako_tostring_context\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.utils import first_error_message\nfrom common.views.mako import JsonView, MakoTemplateView\nfrom components.engine import register_app\nfrom components.login import get_all_users\nfrom release.utils import sync_app_state\n\n\nclass CheckAppCodeView(JsonView):\n    \"\"\"检查新的app_code是否已经存在\n    \"\"\"\n    def get_context_data(self, **kwargs):\n        context = super(CheckAppCodeView, self).get_context_data(**kwargs)\n        request = self.request\n\n        form = CheckAppCodeForm(request.GET)\n        if not form.is_valid():\n            message = first_error_message(form)\n            context.update({'result': False, 'message': message})\n            return context\n\n        context.update({'result': True, 'message': \"校验通过\"})\n        return context\n\n\nclass CheckAppNameView(JsonView):\n    \"\"\"检查app名称\n    \"\"\"\n    def get_context_data(self, **kwargs):\n        context = super(CheckAppNameView, self).get_context_data(**kwargs)\n        request = self.request\n\n        name = request.GET.get('name', '')\n        old_name = request.GET.get('old_name', '')\n        is_valid, message = validate_app_name(name, old_name)\n\n        context.update({'result': is_valid, 'message': message})\n        return context\n\n\nclass CreateAppView(MakoTemplateView):\n    \"\"\"创建应用.\n\n    Get请求到创建页面，post页面则保存应用信息后到基本信息页面\n    \"\"\"\n    template_name = 'app/create.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(CreateAppView, self).get_context_data(**kwargs)\n        request = self.request\n        # app_code = self.kwargs[\"app_code\"]\n\n        user_model = get_user_model()\n        # users = user_model.objects.all().values('username', 'chname')\n        # 用户信息从统一登录接口获取\n        bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME, None)\n        ok, users = get_all_users(bk_token)\n        # 接口返回出错则直接从数据库获取\n        if not ok:\n            users = user_model.objects.all().values('username')\n\n        error = request.GET.get('error', '')\n        data = dict(\n            error=error,\n            db_type_choices=DB_TYPE_CHOICES,\n            vcs_type_choices=VCS_TYPE_CHOICES,\n            users=users,\n        )\n        context.update(data)\n        return context\n\n    def post(self, request):\n        \"\"\"新建应用\n        \"\"\"\n        creater = request.user.username\n        # validate\n        error_url = \"%sapp/error/?error={error}\" % settings.SITE_URL\n        form = AppCreateForm(request.POST)\n        if not form.is_valid():\n            message = first_error_message(form)\n            return HttpResponseRedirect(error_url.format(error=message))\n\n        # get params\n        code = form.cleaned_data[\"code\"]\n        name = form.cleaned_data[\"name\"]\n        introduction = form.cleaned_data[\"introduction\"]\n        app_tags = form.cleaned_data[\"app_tags\"]\n        language = form.cleaned_data[\"language\"]\n        if not language:\n            language = 'python'\n        deploy_token = form.cleaned_data[\"deploy_token\"]\n\n        vcs_type = form.cleaned_data[\"vcs_type\"]\n        vcs_url = form.cleaned_data[\"vcs_url\"]\n        vcs_username = form.cleaned_data[\"vcs_username\"]\n        vcs_password = form.cleaned_data[\"vcs_password\"]\n\n        developer = form.cleaned_data[\"developer\"]\n        if not developer:\n            developer = creater\n        developer_list = developer.split(';') if developer else []\n\n        # 注册应用信息\n        ok, message, token = register_app(code, name, language)\n        if not ok:\n            return HttpResponseRedirect(error_url.format(error=message))\n\n        # 保存应用信息到数据库\n        try:\n            with transaction.atomic():\n                app = App.objects.create(\n                    name=name,\n                    code=code,\n                    introduction=introduction,\n                    creater=creater,\n                    language=language,\n                    auth_token=token,\n                    deploy_token=deploy_token,\n                    tags=app_tags,\n                )\n                # 保存开发负责人信息\n                if developer_list:\n                    user_model = get_user_model()\n                    for dev in developer_list:\n                        try:\n                            d_user = user_model.objects.get(username=dev)\n                            app.developer.add(d_user)\n                        except Exception as e:\n                            logger.exception(\"获取用户[username:%s]异常:%s\", dev, e)\n                # 保存源码等需要跟App Engine交互的信息\n                SecureInfo.objects.create(\n                    app_code=code,\n                    vcs_type=vcs_type,\n                    vcs_url=vcs_url,\n                    vcs_username=vcs_username,\n                    vcs_password=vcs_password,\n                )\n        except Exception as e:\n            logger.exception(\"创建应用时，保存应用基本信息出错:%s\", e)\n            return HttpResponseRedirect(error_url.format(error=\"保存应用基本信息出错\"))\n        url = '{}app/{}/info/'.format(settings.SITE_URL, code)\n        return HttpResponseRedirect(url)\n\n\nclass ModifyAppView(AppDeveloperRequiredMixin, View):\n    \"\"\"编辑应用基本信息\n    \"\"\"\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n\n        operate = request.POST.get('operate', '')\n        if not operate:\n            raise BadRequestException(\"参数异常\")\n\n        # 保存基本信息\n        try:\n            if operate == 'base':\n                self._update_base_info(request, app_code)\n            elif operate == 'introduction':\n                self._update_introduction(request, app_code)\n            elif operate == 'vcs':\n                self._update_vsc_info(request, app_code)\n            elif operate == 'db':\n                self._update_db_info(request, app_code)\n        except BadRequestException as e:\n            raise e\n        except Exception as e:\n            logger.exception(\"保存用户基本信息异常:%s\", e)\n            return FailJsonResponse(\"编辑失败\")\n\n        return OKJsonResponse(\"编辑成功\")\n\n    def _update_db_info(self, request, app_code):\n        form = DBInfoForm(request.POST)\n        if not form.is_valid():\n            message = first_error_message(form)\n            raise BadRequestException(message)\n\n        db_host = form.cleaned_data[\"db_host\"]\n        db_port = form.cleaned_data[\"db_port\"]\n        db_username = form.cleaned_data[\"db_username\"]\n        db_password = form.cleaned_data[\"db_password\"]\n\n        SecureInfo.objects.filter(app_code=app_code).update(\n            db_host=db_host,\n            db_port=db_port,\n            db_username=db_username,\n            db_password=db_password,\n            )\n\n    def _update_vsc_info(self, request, app_code):\n        vcs_info_form = VCSInfoForm(request.POST)\n        if not vcs_info_form.is_valid():\n            message = first_error_message(vcs_info_form)\n            raise BadRequestException(message)\n\n        vcs_url = vcs_info_form.cleaned_data[\"vcs_url\"]\n        vcs_username = vcs_info_form.cleaned_data[\"vcs_username\"]\n        vcs_password = vcs_info_form.cleaned_data[\"vcs_password\"]\n\n        SecureInfo.objects.filter(app_code=app_code).update(\n            vcs_url=vcs_url,\n            vcs_username=vcs_username,\n            vcs_password=vcs_password\n        )\n\n    def _update_base_info(self, request, app_code):\n        app = App.objects.get(code=app_code)\n\n        form = BaseInfoForm(request.POST)\n        if not form.is_valid():\n            message = first_error_message(form)\n            raise BadRequestException(message)\n\n        name = form.cleaned_data[\"name\"]\n        developer = form.cleaned_data[\"developer\"]\n        app_tags = form.cleaned_data[\"app_tags\"]\n\n        old_name = app.name\n        is_valid, message = validate_app_name(name, old_name)\n        if not is_valid:\n            raise BadRequestException(message)\n        developer_list = developer.split(';') if developer else []\n        # 保存用户基本信息\n        with transaction.atomic():\n            app.name = name\n            app.tags = app_tags\n            app.save()\n\n            # 保存开发负责人信息\n            if developer_list:\n                app.developer.clear()\n                user_model = get_user_model()\n                for dev in developer_list:\n                    d_user = user_model.objects.get(username=dev)\n                    app.developer.add(d_user)\n\n    def _update_introduction(self, request, app_code):\n        app = App.objects.get(code=app_code)\n        introduction = request.POST.get('introduction', '').replace('&nbsp;', ' ').strip()\n        if not introduction:\n            raise BadRequestException(\"应用简介不能为空\")\n\n        app.introduction = introduction\n        app.save()\n\n\nclass AppListPageView(MakoTemplateView):\n    \"\"\"应用列表页\n    \"\"\"\n    template_name = 'app/list.html'\n\n\nclass AppListView(View):\n    \"\"\"查询获得app列表\n    \"\"\"\n    def get(self, request):\n        username = request.user.username\n\n        form = AppQueryForm(request.GET)\n        if not form.is_valid():\n            message = first_error_message(form)\n            logger.exception(\"应用列表页面参数异常:%s\", message)\n            return JsonResponse({\n                'data': \"请求参数异常\",\n                'total_num': 0,\n                'extend_fun': ''\n            })\n\n        keyword = form.cleaned_data[\"keyword\"]\n        hide_offline = form.cleaned_data[\"hide_offline\"]\n        page = form.cleaned_data[\"page\"]\n        page_size = form.cleaned_data[\"page_size\"]\n\n        start = (page - 1) * page_size\n        end = page * page_size\n\n        # 超级管理员可以查看所有的应用\n        is_superuser = request.user.is_superuser\n        has_app, total, app_list = App.objects.query_app_list(is_superuser, username, keyword, hide_offline, start, end)\n\n        # 判断应用状态是否需要刷新\n        refresh_app_list = []\n        app_refresh_states = [AppStateEnum.IN_TEST.value, AppStateEnum.IN_ONLINE.value, AppStateEnum.IN_OFFLINE.value]\n        for _app in app_list:\n            if _app.state in app_refresh_states:\n                _app_code = _app.code\n                try:\n                    sync_app_state(_app_code)\n                    # 获取更新后的应用信息\n                    _app = App.objects.get(code=_app_code)\n                except Exception:\n                    logger.exception(\"更新应用[%s]状态失败\", _app_code)\n\n            refresh_app_list.append(_app)\n\n        result = {\n            'total': total,\n            'app_list': refresh_app_list,\n            'has_app': has_app,\n        }\n        template_name = 'app/list_table.part' if has_app else 'app/list_tip.part'\n        html_data = render_mako_tostring_context(request, template_name, result)\n        return JsonResponse({\n            'data': html_data,\n            'total_num': total,\n            'extend_fun': ''\n        })\n\n\nclass AppInfoView(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"应用基本信息\n    \"\"\"\n    template_name = 'app/info.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(AppInfoView, self).get_context_data(**kwargs)\n        request = self.request\n        app_code = self.kwargs[\"app_code\"]\n\n        try:\n            app_secure_info = SecureInfo.objects.get(app_code=app_code)\n        except Exception:\n            logger.info(\"应用[ID:%s]的源码信息不存在\", app_code)\n            app_secure_info = None\n\n        # 获取所有的用户信息\n        user_model = get_user_model()\n        # 用户信息从统一登录接口获取\n        bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME, None)\n        # FIXME: do not get all user now, get from frontend\n        ok, users = get_all_users(bk_token)\n        # 接口返回出错则直接从数据库获取\n        if not ok:\n            users = user_model.objects.all().values('username')\n\n        # 获取应用分类列表\n        tags = AppTags.objects.all()\n        tags = [[t.code, t.name] for t in tags if t]\n\n        # 获取开发者信息\n        app = App.objects.get(code=app_code)\n\n        developers_value_name_list = app.developer.all().values_list('username', flat=True)\n        developers_value_name = ';'.join(developers_value_name_list)\n        # 解析APP信息\n        vcs_type = app_secure_info.vcs_type if app_secure_info else ''\n        app_info = {\n            'code': app.code,\n            'auth_token': app.auth_token,\n            'creater': app.creater or '',\n            'name': app.name or '',\n            'state': app.state,\n            'tags': app.tags.name if app.tags else '',\n            'tags_code': app.tags.code if app.tags else '',\n            'app_test_url': app.app_test_url,\n            'app_prod_url': app.app_prod_url,\n            'first_test_time': app.first_test_time_display or '',\n            'first_online_time': app.first_online_time_display or '',\n            'introduction': app.introduction_display or '',\n            'deploy_token': app.deploy_token or '',\n            'vcs_type': vcs_type,\n            'vcs_type_name': dict(VCS_TYPE_CHOICES).get(vcs_type, ''),\n            'vcs_url': app_secure_info.vcs_url if app_secure_info else '',\n            'vcs_username': app_secure_info.vcs_username if app_secure_info else '',\n            'vcs_password': app_secure_info.vcs_password if app_secure_info else '',\n            'developers_value_name': developers_value_name,\n            'developers_value_name_list': developers_value_name_list or [],\n            'users': users,\n        }\n\n        context.update({\n            'app_info': app_info,\n            'app_code': app_code,\n            'tags': tags,\n        })\n        return context\n\n\nclass AppStatusView(JsonView):\n    \"\"\"应用状态\n\n    res值:\n    1    正式环境，测试环境都打开\n    2    只有测试环境\n    3    只有正式环境\n    4    正式环境，测试环境都关闭\n    \"\"\"\n    def get_context_data(self, **kwargs):\n        context = super(AppStatusView, self).get_context_data(**kwargs)\n        app_code = self.kwargs[\"app_code\"]\n\n        try:\n            app = App.objects.get(code=app_code)\n        except Exception:\n            message = \"app status 应用[id:{}]不存在\".format(app_code)\n            logger.exception(message)\n            context.update({\n                \"result\": False,\n                \"message\": message,\n                \"data\": {\n                    \"status\": 0,\n                    \"app_test_url\": \"###\",\n                    \"app_prod_url\": \"###\",\n                    \"app_name\": \"\"\n                }\n            })\n            return context\n\n        # 判断应用在那些环境下可以打开\n        is_test = (app.state not in [AppStateEnum.DEVELOPMENT.value] and app.is_already_test)\n        is_prod = (app.state not in [AppStateEnum.OFFLINE.value, AppStateEnum.DEVELOPMENT.value]\n                   and app.is_already_online)\n\n        if is_prod and is_test:\n            status = AppOpenEnum.OPEN_IN_ALL.value\n        elif is_prod:\n            status = AppOpenEnum.OPEN_IN_PROD.value\n        elif is_test:\n            status = AppOpenEnum.OPEN_IN_TEST.value\n        else:\n            status = AppOpenEnum.OPEN_NONE.value\n\n        context.update({\n            \"result\": True,\n            \"message\": \"success\",\n            \"data\": {\n                \"status\": status,\n                \"app_test_url\": app.app_test_url,\n                \"app_prod_url\": app.app_prod_url,\n                \"app_name\": app.name,\n                \"app_logo_url\": app.logo_url,\n            }\n        })\n        return context\n\n\nclass VCSPasswordView(AppDeveloperRequiredMixin, JsonView):\n    \"\"\"\n    获取代码仓库密码\n    \"\"\"\n    def get_context_data(self, **kwargs):\n        context = super(VCSPasswordView, self).get_context_data(**kwargs)\n        app_code = self.kwargs[\"app_code\"]\n\n        try:\n            app_secure_info = SecureInfo.objects.get(app_code=app_code)\n        except Exception:\n            context.update({\n                \"result\": False,\n                \"message\": \"应用[ID:{}]的源码信息不存在\".format(app_code),\n                \"data\": {}\n            })\n            return context\n\n        context.update({\n            \"result\": True,\n            \"message\": \"success\",\n            \"data\": {\n                \"password\": app_secure_info.vcs_password\n            }\n        })\n        return context\n\n\nclass ModifyAppLogoView(AppDeveloperRequiredMixin, View):\n    \"\"\"修改应用图标\n    \"\"\"\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n\n        app = App.objects.get(code=app_code)\n        logo = request.FILES.get('logo_m', '')\n        if not (logo and logo.content_type and logo.content_type.lower() == 'image/png'):\n            error = \"更换logo失败, logo必须为png格式\"\n            url = '{}app/list/?error={}'.format(settings.SITE_URL, error)\n            return HttpResponseRedirect(url)\n\n        try:\n            app.logo = logo\n            app.save()\n        except Exception as e:\n            logger.exception(\"应用logo[%s]更换失败, %s\", app_code, e)\n\n        url = '{}app/list/'.format(settings.SITE_URL)\n        return HttpResponseRedirect(url)\n\n\nclass ErrorView(MakoTemplateView):\n    \"\"\"错误提示信息\n    \"\"\"\n    def get_template_names(self):\n        error_id = self.kwargs[\"error_id\"]\n        template_name = 'error/app_error_dialog{}.html'.format(error_id)\n\n        return [template_name]\n\n    def get_context_data(self, **kwargs):\n        context = super(ErrorView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n        context.update({\n            \"app_code\": app_code\n        })\n\n        return context\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\n\nfrom app_env.models import AppEnvVar\n\n\n@admin.register(AppEnvVar)\nclass AppEnvVarAdmin(admin.ModelAdmin):\n\n    list_display = ('app_code', 'mode', 'name', 'value', 'intro')\n    search_fields = ('name', 'value', 'intro')\n    list_filter = ('app_code', 'mode')\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.utils.translation import gettext_lazy as _\n\nfrom common.constants import ModeEnum\n\nENV_MODE_TYPE_CHOICES = [\n    (ModeEnum.ALL.value, _('所有环境')),\n    (ModeEnum.TEST.value, _('测试环境')),\n    (ModeEnum.PROD.value, _('正式环境')),\n]\n\n\ndef gen_mode_choice_html():\n    mode_choices_html = ['<select class=\"form-control env_mode\">']\n    for key, value in ENV_MODE_TYPE_CHOICES:\n        mode_choices_html.append('<option value=\"{key}\" > {value} </option>'.format(key=key, value=value))\n    mode_choices_html.append('<select>')\n    return ''.join(mode_choices_html)\n\n\nMODE_CHOICE_HTML = gen_mode_choice_html()\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django import forms\n\nfrom app_env.constants import ENV_MODE_TYPE_CHOICES\nfrom django.core.validators import RegexValidator\n\n\nclass AppEnvForm(forms.Form):\n    name = forms.CharField(max_length=44, error_messages={\"required\": \"变量名不能为空!\",\n                                                          \"max_length\": \"变量名不能超过50个字符!\"},\n                           validators=[RegexValidator(r'^[a-zA-Z0-9_]+$', message=\"请输入合法的变量名, 只允许字母数字下划线!\")])\n    value = forms.CharField(max_length=1000, error_messages={\n        \"required\": \"变量值不能为空!\",\n        \"max_length\": \"变量值不能超过1000个字符!\"\n    })\n    intro = forms.CharField()\n    mode = forms.ChoiceField(choices=ENV_MODE_TYPE_CHOICES,\n                             error_messages={\n                                 \"required\": \"环境类型不能为空\",\n                                 \"invalid_choice\": \"非法的类型\"\n                             })\n\n    def clean_value(self):\n        value = self.cleaned_data[\"value\"]\n        if '\"' in value:\n            self.add_error('value', \"变量值不能包含引号!\")\n        return value\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.db import models\n\nfrom common.constants import ModeEnum\nfrom common.log import logger\nfrom app_env.utils import validate_env_var\n\n\nclass AppEnvVarManager(models.Manager):\n    def get_env_vars(self, app_code, mode):\n        modes = [mode, ModeEnum.ALL.value]\n        env_vars = self.filter(app_code=app_code)\\\n                       .filter(mode__in=modes)\\\n                       .all()\n        if not env_vars:\n            return {}\n        return {env_var.name: env_var.value for env_var in env_vars}\n\n    def add_env_vars(self, app_code, env_var_list):\n        \"\"\"\n        for ModeEnum.All.value only\n        env_var_list = [{key: hello, value: world}]\n        \"\"\"\n        if not env_var_list:\n            return\n\n        for env in env_var_list:\n            key = env.get(\"key\")\n            value = env.get(\"value\")\n            if (not key) or (value is None):\n                continue\n\n            key = str(key)\n            value = str(value)\n            is_valid, message = validate_env_var(key, value)\n            if not is_valid:\n                logger.error(\"App: %s [key=%s, value=%s] invalid, %s\", app_code, key, value, message)\n                continue\n\n            self._add_or_update_env_var_mode_all(app_code, key, value)\n\n    def _add_or_update_env_var_mode_all(self, app_code, name, value):\n        if self.filter(app_code=app_code, mode=ModeEnum.ALL, name=name).exists():\n            env_var = self.get(app_code=app_code, mode=ModeEnum.ALL, name=name)\n            env_var.value = value\n            env_var.save()\n        else:\n            self.filter(app_code=app_code, mode__in=(ModeEnum.PROD, ModeEnum.TEST), name=name).delete()\n            env_var = self.create(app_code=app_code, mode=ModeEnum.ALL, name=name,\n                                  value=value, intro=\"set by S-mart App\")\n\n    def _gen_extra_modes(self, mode):\n        extra_modes = ([mode, ModeEnum.ALL.value] if mode in (ModeEnum.TEST.value, ModeEnum.PROD.value)\n                       else [ModeEnum.ALL.value, ModeEnum.TEST.value, ModeEnum.PROD.value])\n        return extra_modes\n\n    def exists(self, app_code, mode, name):\n        extra_modes = self._gen_extra_modes(mode)\n        return self.filter(app_code=app_code, mode__in=extra_modes, name=name).exists()\n\n    def update_target_exists(self, app_code, mode, name, var_id):\n        extra_modes = self._gen_extra_modes(mode)\n        return self.filter(app_code=app_code, mode__in=extra_modes, name=name)\\\n            .exclude(id=var_id)\\\n            .exists()\n\n    def update(self, var_id, name, value, intro, mode):\n        env_var = self.get(id=var_id)\n        env_var.name = name\n        env_var.value = value\n        env_var.intro = intro\n        env_var.mode = mode\n        env_var.save()\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='AppEnvVar',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(unique=True, max_length=30, verbose_name='\\u5bf9\\u5e94\\u7684appcode')),\n                ('mode', models.CharField(default=b'all', max_length=20, verbose_name='\\u751f\\u6548\\u73af\\u5883', choices=[(b'test', '\\u6d4b\\u8bd5\\u73af\\u5883'), (b'prod', '\\u6b63\\u5f0f\\u73af\\u5883'), ('all', '\\u6240\\u6709\\u73af\\u5883')])),\n                ('name', models.CharField(max_length=50, verbose_name=b'\\xe5\\x8f\\x98\\xe9\\x87\\x8f\\xe5\\x90\\x8d')),\n                ('value', models.CharField(max_length=100, verbose_name='\\u53d8\\u91cf\\u503c')),\n                ('intro', models.TextField(null=True, verbose_name='\\u53d8\\u91cf\\u4ecb\\u7ecd', blank=True)),\n            ],\n            options={\n                'db_table': 'paas_app_envvars',\n                'verbose_name': '\\u5e94\\u7528\\u73af\\u5883\\u53d8\\u91cf',\n                'verbose_name_plural': '\\u5e94\\u7528\\u73af\\u5883\\u53d8\\u91cf',\n            },\n        ),\n        migrations.AlterUniqueTogether(\n            name='appenvvar',\n            unique_together=set([('app_code', 'mode', 'name')]),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/migrations/0002_auto_20170821_1814.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app_env', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='appenvvar',\n            name='app_code',\n            field=models.CharField(max_length=30, verbose_name='\\u5bf9\\u5e94\\u7684appcode'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/migrations/0003_auto_20170821_2127.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app_env', '0002_auto_20170821_1814'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='appenvvar',\n            name='mode',\n            field=models.CharField(default=b'all', max_length=20, verbose_name='\\u751f\\u6548\\u73af\\u5883', choices=[('all', '\\u6240\\u6709\\u73af\\u5883'), (b'test', '\\u6d4b\\u8bd5\\u73af\\u5883'), (b'prod', '\\u6b63\\u5f0f\\u73af\\u5883')]),\n        ),\n        migrations.AlterField(\n            model_name='appenvvar',\n            name='value',\n            field=models.CharField(max_length=1024, verbose_name='\\u53d8\\u91cf\\u503c'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models\n\nfrom app_env.constants import ENV_MODE_TYPE_CHOICES\nfrom app_env.manager import AppEnvVarManager\n\n\nclass AppEnvVar(models.Model):\n    \"\"\"应用的环境变量\n    \"\"\"\n    app_code = models.CharField(\"对应的appcode\", max_length=30, unique=False)\n\n    mode = models.CharField(\"生效环境\", choices=ENV_MODE_TYPE_CHOICES, default='all',\n                            max_length=20, blank=False, null=False)\n    name = models.CharField(\"变量名\", max_length=50)\n    value = models.CharField(\"变量值\", max_length=1024)\n    intro = models.TextField(\"变量介绍\", blank=True, null=True)\n\n    objects = AppEnvVarManager()\n\n    def __unicode__(self):\n        return 'ENV:{}:{}={}'.format(self.id, self.name, self.value)\n\n    class Meta:\n        db_table = 'paas_app_envvars'\n        unique_together = (\"app_code\", \"mode\", 'name')\n        verbose_name = \"应用环境变量\"\n        verbose_name_plural = \"应用环境变量\"\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.test import TestCase\n\n\nfrom app_env.forms import AppEnvForm\nfrom common.constants import ModeEnum\n\n\nclass AppEnvFormTestCase(TestCase):\n    def _gen_form(self, **kwargs):\n        data = {\n            \"name\": \"test\",\n            \"value\": \"123\",\n            \"intro\": \"just test\",\n            \"mode\": ModeEnum.ALL.value,\n        }\n        data.update(kwargs)\n\n        return AppEnvForm(data)\n\n    def test_form_invalid(self):\n\n        form = self._gen_form(name=\"\")\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(name=\"ab-c\")\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(name=\"c\"*45)\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(value=\"\")\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(value=\"c\"*2000)\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(intro=\"\")\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(mode=\"no_exists\")\n        self.assertFalse(form.is_valid())\n\n    def test_form_valid(self):\n        form = self._gen_form()\n        self.assertTrue(form.is_valid())\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport re\n\n\ndef _validate_env_var_name(name):\n    if not name:\n        return False, \"变量名不能为空!\"\n\n    if not name.startswith(\"BKAPP_\"):\n        return False, \"变量名必须以BKAPP_开头\"\n\n    check_result = re.match(r'^[a-zA-Z0-9_]+$', name)\n    if not check_result or len(name) > 50:\n        return False, \"请输入合法的变量名, 只允许字母数字下划线!\"\n\n    return True, None\n\n\ndef _validate_env_var_value(value):\n    if value is None or value == \"\":\n        return False, \"变量值不能为空!\"\n    if len(value) > 1000:\n        return False, \"变量值不能超过1000个字符!\"\n\n    if '\"' in value:\n        return False, \"变量值不能包含引号!\"\n    return True, None\n\n\ndef validate_env_var(name, value):\n    is_valid, message = _validate_env_var_name(name)\n    if not is_valid:\n        return False, message\n    is_valid, message = _validate_env_var_value(value)\n    if not is_valid:\n        return False, message\n\n    return True, 'valid'\n"
  },
  {
    "path": "paas-ce/paas/paas/app_env/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.utils.decorators import method_decorator\nfrom django.utils.translation import gettext as _\nfrom django.http import QueryDict\n\nfrom app_env.constants import ENV_MODE_TYPE_CHOICES, MODE_CHOICE_HTML\nfrom app_env.forms import AppEnvForm\nfrom app_env.models import AppEnvVar\nfrom common.decorators import escape_exempt\nfrom common.exceptions import BadRequestException\nfrom common.log import logger\nfrom common.mixins.base import AppDeveloperRequiredMixin\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.utils import first_error_message\nfrom common.views.mako import MakoTemplateView\n\n\nclass AppEnvView(AppDeveloperRequiredMixin, MakoTemplateView):\n    @method_decorator(escape_exempt)\n    def dispatch(self, *args, **kwargs):\n        return super(AppEnvView, self).dispatch(*args, **kwargs)\n\n    template_name = 'app_env/home.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(AppEnvView, self).get_context_data(**kwargs)\n        app_code = self.kwargs[\"app_code\"]\n\n        data = {'app_code': app_code, 'is_allow': True, \"base_tpl\": \"/base_app.html\"}\n\n        env_vars = AppEnvVar.objects.filter(app_code=app_code).all()\n        data['env_vars'] = env_vars\n\n        trans_dict = []\n        for k, v in ENV_MODE_TYPE_CHOICES:\n            trans_dict.append((k, _(v)))\n\n        data['mode_choices'] = trans_dict\n        data['mode_choices_html'] = MODE_CHOICE_HTML\n\n        context.update(data)\n        return context\n\n    def _add_or_update(self, request, app_code, var_id=None):\n        if not var_id:\n            form = AppEnvForm(request.POST)\n        else:\n            put = QueryDict(request.body)\n            form = AppEnvForm(put)\n\n        if not form.is_valid():\n            message = first_error_message(form)\n            # print form.errors\n            raise BadRequestException(message)\n\n        #  app_code = form.cleaned_data[\"app_code\"]\n        name = form.cleaned_data[\"name\"]\n        value = form.cleaned_data[\"value\"]\n        intro = form.cleaned_data[\"intro\"]\n        mode = form.cleaned_data[\"mode\"]\n\n        name = 'BKAPP_%s' % name\n\n        # do add\n        if not var_id:\n            if AppEnvVar.objects.exists(app_code, mode, name):\n                message = \"变量名已经存在, 请勿重复添加!\"\n                return FailJsonResponse(message)\n\n            try:\n                env_var = AppEnvVar.objects.create(app_code=app_code, mode=mode, name=name,\n                                                   value=value, intro=intro)\n\n                var_id = env_var.id\n            except Exception:\n                # 保存app环境变量异常\n                message = \"保存app环境变量失败\"\n                logger.exception(message)\n                return FailJsonResponse(message)\n        # do update\n        else:\n            if AppEnvVar.objects.update_target_exists(app_code, mode, name, var_id):\n                message = \"同名变量已经存在! 无法对当前变量进行更新\"\n                return FailJsonResponse(message)\n\n            AppEnvVar.objects.update(var_id, name, value, intro, mode)\n\n        return OKJsonResponse(\"保存变量成功\", id=var_id)\n\n    def post(self, request, app_code):\n        return self._add_or_update(request, app_code)\n\n    def put(self, request, app_code, var_id):\n        return self._add_or_update(request, app_code, var_id)\n\n    def delete(self, request, app_code, var_id):\n        try:\n            AppEnvVar.objects.filter(id=var_id).delete()\n        except Exception:\n            logger.exception(\"删除app环境变量失败\")\n            return FailJsonResponse(\"删除app环境变量失败\")\n        return OKJsonResponse(\"删除成功\")\n"
  },
  {
    "path": "paas-ce/paas/paas/bk_app/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/bk_app/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\"\"\"默认应用的配置信息\n\"\"\"\n\nSAAS_LIST = [{'app_id': 'bk_app_template',\n              'config': {'app_code': 'bk_app_template',\n                         'app_name': '\\u5f00\\u53d1\\u6837\\u4f8b',\n                         'author': '\\u84dd\\u9cb8\\u667a\\u4e91',\n                         'date': '2017-08-20 09:17:42',\n                         'introduction': '\\u201c\\u5f00\\u53d1\\u6837\\u4f8b\\u201d\\u662f\\u84dd\\u9cb8\\u667a\\u4e91\\u56e2\\u961f\\u4e3a\\u5f00\\u53d1\\u8005\\u63d0\\u4f9b\\u7684\\u793a\\u4f8b\\u4ee3\\u7801\\uff0c\\u57fa\\u4e8e\\u6b64\\u6846\\u67b6\\uff0c\\u5f00\\u53d1\\u8005\\u53ef\\u4ee5\\u5feb\\u901f\\u4e0a\\u624b\\uff0c\\u5229\\u7528\\u84dd\\u9cb8\\u667a\\u4e91\\u96c6\\u6210\\u5e73\\u53f0\\uff08PaaS\\uff09\\u63d0\\u4f9b\\u7684\\u8c03\\u5ea6\\u5f15\\u64ce\\u3001\\u516c\\u5171\\u7ec4\\u4ef6\\u7b49\\u6a21\\u5757\\uff0c\\u6784\\u5efa\\u4f4e\\u6210\\u672c\\u3001\\u514d\\u8fd0\\u7ef4\\u7684\\u652f\\u6491\\u5de5\\u5177\\u548c\\u8fd0\\u8425\\u7cfb\\u7edf\\u3002', # noqa\n                         'is_use_celery': True,\n                         'language': 'python',\n                         'libraries': [],\n                         'version': '1.0.1',\n                         'yums': []},\n              'file': {'file': 'saas_files/bk_app_template_V1.0.1.tar.gz',\n                       'md5': '10045e2ab789737d507887686a04f7c4',\n                       'name': 'bk_app_template_V1.0.1.tar.gz',\n                       'size': 1520613}},\n             {'app_id': 'bk_framework',\n              'config': {'app_code': 'bk_framework',\n                         'app_name': '\\u5f00\\u53d1\\u6846\\u67b6',\n                         'author': '\\u84dd\\u9cb8\\u667a\\u4e91',\n                         'date': '2017-08-20 09:15:30',\n                         'introduction': '\\u201c\\u5f00\\u53d1\\u6846\\u67b6\\u201d\\u662f\\u84dd\\u9cb8\\u667a\\u4e91\\u56e2\\u961f\\u4e3a\\u5f00\\u53d1\\u8005\\u63d0\\u4f9b\\u7684\\u793a\\u4f8b\\u4ee3\\u7801\\uff0c\\u57fa\\u4e8e\\u6b64\\u6846\\u67b6\\uff0c\\u5f00\\u53d1\\u8005\\u53ef\\u4ee5\\u5feb\\u901f\\u4e0a\\u624b\\uff0c\\u5229\\u7528\\u84dd\\u9cb8\\u667a\\u4e91\\u96c6\\u6210\\u5e73\\u53f0\\uff08PaaS\\uff09\\u63d0\\u4f9b\\u7684\\u8c03\\u5ea6\\u5f15\\u64ce\\u3001\\u516c\\u5171\\u7ec4\\u4ef6\\u7b49\\u6a21\\u5757\\uff0c\\u6784\\u5efa\\u4f4e\\u6210\\u672c\\u3001\\u514d\\u8fd0\\u7ef4\\u7684\\u652f\\u6491\\u5de5\\u5177\\u548c\\u8fd0\\u8425\\u7cfb\\u7edf\\u3002', # noqa\n                         'is_use_celery': True,\n                         'language': 'python',\n                         'libraries': [],\n                         'version': '1.0.0',\n                         'yums': []},\n              'file': {'file': 'saas_files/bk_framework_V1.0.0.tar.gz',\n                       'md5': '5dee3580c837bcaa188cc4883bfa5e66',\n                       'name': 'bk_framework_V1.0.0.tar.gz',\n                       'size': 785112}}]\n"
  },
  {
    "path": "paas-ce/paas/paas/bk_app/migrations/0001_load_bkapps_intial_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\nfrom bk_app.utils import init_saas_app_db_info\nfrom bk_app.constants import SAAS_LIST\n\n\ndef init_saas_app_info(apps, schema_editor):\n    for saas_info in SAAS_LIST:\n        app_id = saas_info.get(\"app_id\")\n        config = saas_info.get(\"config\")\n        file = saas_info.get(\"file\")\n        init_saas_app_db_info(app_id, config, file)\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('saas', '0006_auto_20161111_1827'),\n    ]\n\n    operations = [\n        migrations.RunPython(init_saas_app_info),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/bk_app/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/bk_app/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.test import TestCase # noqa\n\n# Create your tests here.\n"
  },
  {
    "path": "paas-ce/paas/paas/bk_app/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n初始化默认应用信息\n\n利用migration的原理来初始化并维护默认应用信息，保证以下三个规则：\n1. 每个应用生成一个migration文件，如：0002_framework.py,0003_iwork.py\n2. 每个migration文件维护当前应用的最新版本号，保证新安装PaaS的用户都是安装最新版本的应用包，老的用户的应用版本保持不变\n   如 0002_PaaS V2.0.0.py文件中：\n   PaaS V1.0.0 中 app 的 version为 1.0.0\n   PaaS V2.0.0 中 app 的 version为 2.0.0\n3. 每个发布的PaaS包中需要包含默认应用的所有版本，如 PaaS V2.0.0 需包含：framework_v1.0.0 和 framework_v2.0.0\n\n即:\n- 每个应用更新, 需增加版本号, 发布包中会保留其所有历史版本\n\n\"\"\" # noqa\n\n\n\nfrom common.constants import LogoImgRelatedDirEnum\nfrom common.log import logger\nfrom saas.models import SaaSApp, SaaSUploadFile\nfrom saas.utils import save_saas_app_info\n\n\ndef init_saas_app_db_info(app_code, config_info, file_info):\n    \"\"\"\n    初始化SaaS应用的 db 信息\n    \"\"\"\n\n    # 保存安装文件信息\n    try:\n        saas_upload_file = SaaSUploadFile.objects.create(\n            name=file_info.get('name'),\n            size=file_info.get('size'),\n            md5=file_info.get('md5'),\n            file=file_info.get('file'),\n        )\n    except Exception:\n        message = \"初始化应用[{}]出错，保存应用版本信息出错\".format(app_code)\n        logger.exception(message)\n        return False, message\n\n    try:\n        save_saas_app_info(config_info, saas_upload_file)\n        # 保存应用 logo\n        logo = '{}/{}.png'.format(LogoImgRelatedDirEnum.APP.value, app_code)\n        SaaSApp.objects.update_logo(app_code, logo)\n    except Exception:\n        message = \"初始化应用[{}]出错\".format(app_code)\n        logger.exception(message)\n        return False, message\n\n    message = \"初始化应用[{}]成功\".format(app_code)\n    logger.info(message)\n    return True, message\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n__author__ = \"BlueKing\"\n__copyright__ = \"Copyright © 2012-2017 Tencent BlueKing. All Rights Reserved.\"\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/README",
    "content": "有两种方式访问组件，shortcuts或ComponentClient。使用示例如下：\n\n1. 使用shortcuts\n\n1.1 get_client_by_request\n\n    from blueking.component.shortcuts import get_client_by_request\n    # 从环境配置获取APP信息，从request获取当前用户信息\n    client = get_client_by_request(request)\n    kwargs = {'app_id': 1}\n    result = client.cc.get_app_host_list(kwargs)\n\n1.2 get_client_by_user\n\n    from blueking.component.shortcuts import get_client_by_user\n    # 从环境配置获取APP信息，从user获取当前用户信息，user为User对象或User中username数据\n    user = 'xxx'\n    client = get_client_by_user(user)\n    kwargs = {'app_id': 1}\n    result = client.cc.get_app_host_list(kwargs)\n\n\n 2. 使用ComponentClient\n\n     from blueking.component.client import ComponentClient\n     # APP信息\n     app_code = 'xxx' \n     app_secret = 'xxx' \n     # 用户信息\n     common_args = {'bk_token': 'xxx'}\n     # APP信息app_code, app_secret如未提供，从环境配置获取\n     client = ComponentClient(\n         app_code=app_code, \n         app_secret=app_secret, \n         common_args=common_args\n     )\n     kwargs = {'app_id': 1}\n     result = client.cc.get_app_host_list(kwargs)\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/apis/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/apis/esb.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom ..base import ComponentAPI\n\n\nclass CollectionsEsb(object):\n    \"\"\"Collections of ESB APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.get_systems = ComponentAPI(\n            client=self.client, method='GET', path='/api/c/compapi/esb/get_systems/',\n            description='Get component system info',\n        )\n        self.get_components = ComponentAPI(\n            client=self.client, method='GET', path='/api/c/compapi/esb/get_components/',\n            description='Get component info',\n        )\n        self.add_app_component_perm = ComponentAPI(\n            client=self.client, method='POST', path='/api/c/compapi/esb/add_app_component_perm/',\n            description='Add component permission for app',\n        )\n        self.get_weixin_access_token = ComponentAPI(\n            client=self.client, method='GET', path='/api/c/compapi/weixin/get_token/',\n            description='Get wechat access_token',\n        )\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\nimport logging\n\nfrom .exceptions import ComponentAPIException\nfrom .conf import COMPONENT_SYSTEM_HOST\n\n\nlogger = logging.getLogger('component')\n\n\nclass ComponentAPI(object):\n    \"\"\"Single API for Component\"\"\"\n\n    HTTP_STATUS_OK = 200\n\n    def __init__(self, client, method, path, description='', default_return_value=None):\n        host = COMPONENT_SYSTEM_HOST\n        # Do not use join, use '+' because path may starts with '/'\n        self.url = host.rstrip('/') + path\n        self.client = client\n        self.method = method\n        self.default_return_value = default_return_value\n\n    def __call__(self, *args, **kwargs):\n        try:\n            return self._call(*args, **kwargs)\n        except ComponentAPIException as e:\n            # Combine log message\n            log_message = [e.error_message, ]\n            log_message.append('url=%(url)s' % {'url': e.api_obj.url})\n            if e.resp:\n                log_message.append('content: %s' % e.resp.text)\n\n            logger.exception('\\n'.join(log_message))\n\n            # Try return error message from remote service\n            if e.resp is not None:\n                try:\n                    return e.resp.json()\n                except Exception:\n                    pass\n            return {'result': False, 'message': e.error_message, 'data': None}\n\n    def _call(self, *args, **kwargs):\n        params, data = {}, {}\n        if args and isinstance(args[0], dict):\n            params = args[0]\n        params.update(kwargs)\n\n        # Validate params for POST request\n        if self.method == 'POST':\n            data = params\n            params = None\n            try:\n                json.dumps(data)\n            except Exception:\n                raise ComponentAPIException(self,\n                                            \"Request parameter error (please pass in a dictionary or json string)\")\n\n        # Request remote server\n        try:\n            resp = self.client.request(self.method, self.url, params=params, data=data)\n        except Exception as e:\n            logger.exception('Error occurred when requesting method=%s url=%s',\n                             self.method, self.url)\n            raise ComponentAPIException(self, \"Component call error, Exception: %s\" % str(e))\n\n        # Parse result\n        if resp.status_code != self.HTTP_STATUS_OK:\n            message = \"Request error, error status code: %s\" % resp.status_code\n            raise ComponentAPIException(self, message, resp=resp)\n        try:\n            # Parse response\n            json_resp = resp.json()\n            request_id = json_resp.pop('request_id', None)\n            if not json_resp['result']:\n                # 组件返回错误时，记录相应的 request_id\n                log_message = (\"The component returned an error message: %(message)s, request_id=%(request_id)s \"\n                               \"url=%(url)s params=%(params)s data=%(data)s\") % {\n                    'request_id': request_id,\n                    'message': json_resp['message'],\n                    'url': self.url,\n                    'params': params,\n                    'data': data\n                }\n                logger.error(log_message)\n\n            # Return default return value\n            if not json_resp and self.default_return_value is not None:\n                return self.default_return_value\n            return json_resp\n        except Exception:\n            raise ComponentAPIException(self, \"Return data format is incorrect, unified as json.\", resp=resp)\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/client.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\"\"\"Component API Client\n\"\"\"\nimport requests\nimport json\nimport time\nimport random\nimport logging\nimport urllib.parse\n\nfrom . import conf\nfrom . import collections\nfrom .utils import get_signature\nfrom .constants import LANG_COMPATIBLE_INFO, SUPPORTED_LANG\n\n# shutdown urllib3's warning\ntry:\n    requests.packages.urllib3.disable_warnings()\nexcept Exception:\n    pass\n\n\nlogger = logging.getLogger('component')\n\n\nclass BaseComponentClient(object):\n    \"\"\"Base client class for component\"\"\"\n\n    @classmethod\n    def setup_components(cls, components):\n        cls.available_collections = components\n\n    def __init__(self, app_code=None, app_secret=None, common_args=None, use_test_env=False, language=None):\n        \"\"\"\n        :param str app_code: App code to use\n        :param str app_secret: App secret to use\n        :param dict common_args: Args that will apply to every request\n        :param bool use_test_env: whether use test version of components\n        \"\"\"\n        self.app_code = app_code or conf.APP_CODE\n        self.app_secret = app_secret or conf.SECRET_KEY\n        self.common_args = common_args or {}\n        self._cached_collections = {}\n        self.use_test_env = use_test_env\n        self.language = language or self.get_cur_language()\n\n    def set_use_test_env(self, use_test_env):\n        \"\"\"Change the value of use_test_env\n\n        :param bool use_test_env: whether use test version of components\n        \"\"\"\n        self.use_test_env = use_test_env\n\n    def set_language(self, language):\n        self.language = language\n\n    def get_cur_language(self):\n        try:\n            from django.utils import translation\n            return translation.get_language()\n        except Exception:\n            return None\n\n    def get_supported_language_variant(self, lang_code, strict=False):\n        \"\"\"\n        Returns the language-code that's listed in supported languages, possibly\n        selecting a more generic variant. Lang_code if nothing found.\n\n        If `strict` is False (the default), the function will look for an alternative\n        country-specific variant when the currently checked is not found.\n        \"\"\"\n        if lang_code:\n            # If 'fr-ca' is not supported, try special compatible language or language-only 'fr'.\n            possible_lang_codes = [lang_code]\n            try:\n                possible_lang_codes.extend(LANG_COMPATIBLE_INFO.get(lang_code, []))\n            except KeyError:\n                pass\n            generic_lang_code = lang_code.split('-')[0]\n            possible_lang_codes.append(generic_lang_code)\n            supported_lang_codes = SUPPORTED_LANG\n\n            for code in possible_lang_codes:\n                if code in supported_lang_codes:\n                    return code\n            if not strict:\n                # if fr-fr is not supported, try fr-ca.\n                for supported_code in supported_lang_codes:\n                    if supported_code.startswith(generic_lang_code + '-'):\n                        return supported_code\n        return lang_code\n\n    def merge_params_data_with_common_args(self, method, params, data, enable_app_secret=False):\n        \"\"\"get common args when request\n        \"\"\"\n        common_args = dict(app_code=self.app_code, **self.common_args)\n        if enable_app_secret:\n            common_args['app_secret'] = self.app_secret\n        if method == 'GET':\n            _params = common_args.copy()\n            _params.update(params or {})\n            params = _params\n        elif method == 'POST':\n            _data = common_args.copy()\n            _data.update(data or {})\n            data = json.dumps(_data)\n        return params, data\n\n    def request(self, method, url, params=None, data=None, **kwargs):\n        \"\"\"Send request\n        \"\"\"\n        # determine whether access test environment of third-party system\n        headers = kwargs.pop('headers', {})\n        if self.use_test_env:\n            headers['x-use-test-env'] = '1'\n        if self.language:\n            headers['blueking-language'] = self.get_supported_language_variant(self.language)\n\n        params, data = self.merge_params_data_with_common_args(method, params, data, enable_app_secret=True)\n        logger.debug('Calling %s %s with params=%s, data=%s, headers=%s', method, url, params, data, headers)\n        return requests.request(method, url, params=params, data=data, verify=False,\n                                headers=headers, **kwargs)\n\n    def __getattr__(self, key):\n        if key not in self.available_collections:\n            return getattr(super(BaseComponentClient, self), key)\n\n        if key not in self._cached_collections:\n            collection = self.available_collections[key]\n            self._cached_collections[key] = collection(self)\n        return self._cached_collections[key]\n\n\nclass ComponentClientWithSignature(BaseComponentClient):\n    \"\"\"Client class for component with signature\"\"\"\n\n    def request(self, method, url, params=None, data=None, **kwargs):\n        \"\"\"Send request, will add \"signature\" parameter.\n        \"\"\"\n        # determine whether access test environment of third-party system\n        headers = kwargs.pop('headers', {})\n        if self.use_test_env:\n            headers['x-use-test-env'] = '1'\n        if self.language:\n            headers['blueking-language'] = self.language\n\n        params, data = self.merge_params_data_with_common_args(method, params, data, enable_app_secret=False)\n        if method == 'POST':\n            params = {}\n\n        url_path = urllib.parse.urlparse(url).path\n        # signature always in GET params\n        params.update({\n            'bk_timestamp': int(time.time()),\n            'bk_nonce': random.randint(1, 2147483647),\n        })\n        params['signature'] = get_signature(method, url_path, self.app_secret, params=params, data=data)\n\n        logger.debug('Calling %s %s with params=%s, data=%s', method, url, params, data)\n        return requests.request(method, url, params=params, data=data, verify=False,\n                                headers=headers, **kwargs)\n\n\n# 根据是否开启signature来判断使用的Client版本\nif conf.CLIENT_ENABLE_SIGNATURE:\n    ComponentClient = ComponentClientWithSignature\nelse:\n    ComponentClient = BaseComponentClient\n\nComponentClient.setup_components(collections.AVAILABLE_COLLECTIONS)\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/collections.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\"\"\"Collections for component client\n\"\"\"\n\nfrom .apis.esb import CollectionsEsb\n\n\n# Available components\nAVAILABLE_COLLECTIONS = {\n    'esb': CollectionsEsb,\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/conf.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\"\"\"Django project settings\n\"\"\"\n\n\ntry:\n    from django.conf import settings\n\n    APP_CODE = settings.APP_ID\n    SECRET_KEY = settings.ESB_TOKEN\n    COMPONENT_SYSTEM_HOST = \"http://%s\" % settings.PAAS_INNER_DOMAIN\nexcept Exception:\n    APP_CODE = ''\n    SECRET_KEY = ''\n    COMPONENT_SYSTEM_HOST = ''\n\nCLIENT_ENABLE_SIGNATURE = False\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nLANG_COMPATIBLE_INFO = {\n    'zh-hans': ['zh-cn'],\n    'zh-cn': ['zh-hans']\n}\n\n\nSUPPORTED_LANG = [\n    'en',\n    'zh-cn'\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/exceptions.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nclass ComponentBaseException(Exception):\n    pass\n\n\nclass ComponentAPIException(ComponentBaseException):\n    \"\"\"Exception for Component API\"\"\"\n\n    def __init__(self, api_obj, error_message, resp=None):\n        self.api_obj = api_obj\n        self.error_message = error_message\n        self.resp = resp\n\n        if self.resp is not None:\n            error_message = '%s, resp=%s' % (error_message, self.resp.text)\n        super(ComponentAPIException, self).__init__(error_message)\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/shortcuts.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport logging\n\nfrom .client import ComponentClient\nfrom . import conf\n\nlogger = logging.getLogger('component')\n\n__all__ = [\n    'get_client_by_request',\n    'get_client_by_user',\n]\n\n\ndef get_client_by_request(request, **kwargs):\n    \"\"\"根据当前请求返回一个client\n\n    :param request: 一个django request实例\n    :returns: 一个初始化好的ComponentClint对象\n    \"\"\"\n\n    if request.user.is_authenticated:\n        bk_token = request.COOKIES.get('bk_token', '')\n    else:\n        bk_token = ''\n\n    common_args = {\n        'bk_token': bk_token,\n    }\n    common_args.update(kwargs)\n    return ComponentClient(conf.APP_CODE, conf.SECRET_KEY, common_args=common_args)\n\n\ndef get_client_by_user(user, **kwargs):\n    \"\"\"根据user实例返回一个client\n\n    :param user: User实例或者User.username数据\n    :returns: 一个初始化好的ComponentClint对象\n    \"\"\"\n    try:\n        from account.models import BkUser as User\n    except Exception:\n        from django.contrib.auth.models import User\n\n    try:\n        if isinstance(user, User):\n            username = user.username\n        else:\n            username = user\n    except Exception:\n        logger.exception('Get user failed, User: %s' % user)\n\n    common_args = {'username': username}\n    common_args.update(kwargs)\n    return ComponentClient(conf.APP_CODE, conf.SECRET_KEY, common_args=common_args)\n"
  },
  {
    "path": "paas-ce/paas/paas/blueking/component/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport json\nimport base64\nimport hmac\nimport hashlib\n\n\ndef get_signature(method, path, app_secret, params=None, data=None):\n    \"\"\"generate signature\n    \"\"\"\n    kwargs = {}\n    if params:\n        kwargs.update(params)\n    if data:\n        data = json.dumps(data) if isinstance(data, dict) else data\n        kwargs['data'] = data\n    kwargs = '&'.join([\n        '%s=%s' % (k, v)\n        for k, v in sorted(iter(kwargs.items()), key=lambda x: x[0])\n    ])\n    orignal = '%s%s?%s' % (method, path, kwargs)\n    signature = base64.b64encode(hmac.new(str(app_secret), orignal, hashlib.sha1).digest())\n    return signature\n"
  },
  {
    "path": "paas-ce/paas/paas/common/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/common/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport re\nfrom enum import Enum\n\n\n# app code的正则常量(由小写英文字母、连接符(-)或数字组成  注意, 不再支持下划线\nAPP_CODE_REGEX = '[a-z0-9-]+'\n# SaaS app code的正则常量(由小写英文字母、下划线、连接符(-)或数字组成\nSAAS_CODE_REGEX = '[a-z0-9_-]+'\n\nAPP_CODE_CHECK_REGEX = r'^[a-z][a-z0-9-]{1,15}$'\nAPP_CODE_CHECK_PATTERN = re.compile(APP_CODE_CHECK_REGEX)\nAPP_CODE_CHECK_MSG = \"只允许输入小写英文字母,连字符或数字,并且以字母开头\"\n\nGIT_URL_CHECK_PATTERN = re.compile(r'^(http[s]{0,1}|git)://', re.IGNORECASE)\nSVN_URL_CHENK_PATTREN = re.compile(r'^(http[s]{0,1}|svn)://', re.IGNORECASE)\n\n\n# 用户角色\nclass RoleCodeEnum(Enum):\n    # 普通用户\n    STAFF = 0\n    # 超级管理员\n    SUPERUSER = 1\n    # 开发者\n    DEVELOPER = 2\n    # OPERATOR = 3\n\n\n# ROLECODE_CHOICES = [\n#     (RoleCodeEnum.STAFF.value, \"普通用户\"),\n#     (RoleCodeEnum.SUPERUSER.value, \"超级管理员\"),\n#     (RoleCodeEnum.DEVELOPER.value, \"开发者\"),\n#     # (RoleCodeEnum.OPERATOR.value, \"职能化用户\")\n# ]\n\n# ROLECODE_LIST = [\n#     RoleCodeEnum.STAFF.value,\n#     RoleCodeEnum.SUPERUSER.value,\n#     RoleCodeEnum.DEVELOPER.value,\n#     # RoleCodeEnum.OPERATOR.value\n# ]\n\n\nclass LogoImgRelatedDirEnum(Enum):\n    APP = \"applogo\"\n    ICON = \"iconlogo\"\n    # saas内置应用logo解压目录\n    SAAS = \"saaslogo\"\n\n\nclass ConsoleErrorCodes(Enum):\n    E1303000_DEFAULT_CODE = 1303000\n    E1303001_BASE_SETTINGS_ERROR = 1303001\n    E1303002_BASE_DATABASE_ERROR = 1303002\n    E1303003_BASE_HTTP_DEPENDENCE_ERROR = 1303003\n    E1303004_BASE_BKSUITE_DATABASE_ERROR = 1303004\n    E1303005_BASE_LICENSE_ERROR = 1303005\n\n    # 加载桌面应用错误\n    E1303100_DESKTOP_USER_APP_LOAD_ERROR = 1303100\n    # 应用市场查询应用失败\n    E1303101_MARKET_APP_QUERY_FAIL = 1303101\n    # 应用市场应用详情查询失败\n    E1303102_MARKET_APP_DETAIL_QUERY_FAIL = 1303102\n\n    # 请求微信GET接口出错\n    E1303200_WEIXIN_HTTP_GET_REQUEST_ERROR = 1303200\n    # 请求微信POST接口出错\n    E1303201_WEIXIN_HTTP_POST_REQUEST_ERROR = 1303201\n    # 微信公众号推送事件响应出错\n    E1303202_WEIXIN_MP_EVENT_PUSH_RESPONSE_ERROR = 1303202\n\n\nclass PermissionErrorEnum(Enum):\n    APP_NOT_EXISTS = 1\n    NOT_APP_DEVELOPER = 2\n    SAAS_NOT_EXISTS = 3\n    NOT_SUPERUSER = 4\n\n\nclass ModeEnum(Enum):\n    ALL = \"all\"\n    TEST = \"test\"\n    PROD = \"prod\"\n\n\nModeNameDict = {\n    ModeEnum.ALL.value: \"全部\",\n    ModeEnum.TEST.value: \"测试\",\n    ModeEnum.PROD.value: \"正式\",\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/common/context_processors.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\ncontext_processor for common(setting)\n** 除setting外的其他context_processor内容，均采用组件的方式(string)\n\"\"\" # noqa\n\n\n\nimport datetime\n\nfrom django.conf import settings\n\n\ndef site_settings(request):\n    return {\n        'LOGIN_URL': settings.LOGIN_URL,\n        'LOGOUT_URL': settings.LOGOUT_URL,\n        'STATIC_URL': settings.STATIC_URL,\n        'SITE_URL': settings.SITE_URL,\n        'STATIC_VERSION': settings.STATIC_VERSION,\n\n        'APP_PATH': request.get_full_path(),\n        'NOW': datetime.datetime.now(),\n\n        # 本地 js 后缀名\n        'JS_SUFFIX': settings.JS_SUFFIX,\n        # 本地 css 后缀名\n        'CSS_SUFFIX': settings.CSS_SUFFIX\n    }\n"
  },
  {
    "path": "paas-ce/paas/paas/common/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom functools import WRAPPER_ASSIGNMENTS, wraps\n\n#from django.utils.decorators import available_attrs\n\n\ndef escape_exempt(view_func):\n    \"\"\"\n    XSS Escape豁免,被此装饰器修饰的action可以不转义数据\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n\n    wrapped_view.escape_exempt = True\n    return wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)(wrapped_view)\n"
  },
  {
    "path": "paas-ce/paas/paas/common/exceptions.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nclass BadRequestException(Exception):\n    def __init__(self, message):\n        self.message = message\n\n\nclass InternalServerError(Exception):\n    def __init__(self, message):\n        self.message = message\n"
  },
  {
    "path": "paas-ce/paas/paas/common/http.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n请求登录的http基础方法\n\nRules:\n1. POST/DELETE/PUT: json in - json out, 如果resp.json报错, 则是登录接口问题\n2. GET带参数 HEAD不带参数\n3. 以统一的header头发送请求\n\"\"\" # noqa\n\n\n\n\nimport requests\nfrom common.log import logger\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\ndef _gen_header():\n    headers = {\n        \"Content-Type\": \"application/json\",\n    }\n    return headers\n\n\ndef _http_request(method, url, headers=None, data=None, timeout=None, verify=None, cert=None, cookies=None):\n    try:\n        if method == \"GET\":\n            resp = requests.get(url=url, headers=headers, params=data, timeout=timeout,\n                                verify=verify, cert=cert, cookies=cookies)\n        elif method == \"HEAD\":\n            resp = requests.head(url=url, headers=headers, verify=verify, cert=cert, cookies=cookies)\n        elif method == \"POST\":\n            resp = requests.post(url=url, headers=headers, json=data, timeout=timeout,\n                                 verify=verify, cert=cert, cookies=cookies)\n        elif method == \"DELETE\":\n            resp = requests.delete(url=url, headers=headers, json=data, timeout=timeout,\n                                   verify=verify, cert=cert, cookies=cookies)\n        elif method == \"PUT\":\n            resp = requests.put(url=url, headers=headers, json=data, timeout=timeout,\n                                verify=verify, cert=cert, cookies=cookies)\n            print(\"requests.put\", url, headers, data, resp.headers)\n\n        else:\n            return False, None\n    except requests.exceptions.RequestException:\n        logger.exception(\"http request error! method: %s, url: %s, data: %s\", method, url, data)\n        return False, None\n    else:\n        if resp.status_code != 200:\n            content = resp.content[:100] if resp.content else ''\n            error_msg = (\"http request fail! method: %s, url: %s, data: %s, \"\n                         \"response_status_code: %s, response_content: %s\")\n            logger.error(error_msg % (method, url, str(data), resp.status_code, content))\n            return False, None\n\n        return True, resp.json()\n\n\ndef http_get(url, data, headers=None, verify=None, cert=None, timeout=None, cookies=None):\n    if not headers:\n        headers = _gen_header()\n    return _http_request(method=\"GET\", url=url, headers=headers, data=data,\n                         verify=verify, cert=cert, timeout=timeout, cookies=cookies)\n\n\ndef http_post(url, data, headers=None, verify=None, cert=None, timeout=None, cookies=None):\n    if not headers:\n        headers = _gen_header()\n    return _http_request(method=\"POST\", url=url, headers=headers, data=data, timeout=timeout,\n                         verify=verify, cert=cert, cookies=cookies)\n\n\ndef http_put(url, data, headers=None, verify=None, cert=None, timeout=None, cookies=None):\n    if not headers:\n        headers = _gen_header()\n    return _http_request(method=\"PUT\", url=url, headers=headers, data=data,\n                         timeout=timeout, verify=verify, cert=cert, cookies=cookies)\n\n\ndef http_delete(url, data, headers=None, verify=None, cert=None, timeout=None, cookies=None):\n    if not headers:\n        headers = _gen_header()\n    return _http_request(method=\"DELETE\", url=url, headers=headers, data=data, timeout=timeout,\n                         verify=verify, cert=cert, cookies=cookies)\n"
  },
  {
    "path": "paas-ce/paas/paas/common/log.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nUsage:\n\n    from common.log import logger\n\n    logger.info(\"test\")\n    logger.error(\"wrong1\")\n    logger.exception(\"wrong2\")\n\n    # with traceback\n    try:\n        1 / 0\n    except Exception:\n        logger.exception(\"wrong3\")\n\"\"\" # noqa\n\nimport logging\n\nlogger = logging.getLogger(\"root\")\n"
  },
  {
    "path": "paas-ce/paas/paas/common/middlewares/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/common/middlewares/exception.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.http import JsonResponse\nfrom django.utils.deprecation import MiddlewareMixin\nfrom common.exceptions import BadRequestException, InternalServerError\n\n\nclass BaseExceptionMiddleware(MiddlewareMixin):\n    def process_exception(self, request, exception):\n        if isinstance(exception, BadRequestException):\n            data = {\n                \"code\": 400,\n                \"result\": False,\n                \"message\": exception.message,\n                \"data\": None\n            }\n\n            resp = JsonResponse(data)\n            resp.status_code = 200\n            return resp\n        elif isinstance(exception, InternalServerError):\n            resp = JsonResponse({\n                \"code\": 500,\n                \"message\": exception.message,\n                \"data\": None\n            })\n            resp.status_code = 500\n            return resp\n"
  },
  {
    "path": "paas-ce/paas/paas/common/middlewares/utils/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/common/middlewares/utils/pxfilter.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nPython 富文本XSS过滤类\n@package XssHtml\n@version 0.1\n@link http://phith0n.github.io/python-xss-filter\n@since 20150407\n@copyright (c) Phithon All Rights Reserved\nBased on native Python module HTMLParser purifier of HTML, To Clear all javascript in html\nYou can use it in all python web framework\nWritten by Phithon <root@leavesongs.com> in 2015 and placed in the public domain.\nphithon <root@leavesongs.com> 编写于20150407\nFrom: XDSEC <www.xdsec.org> & 离别歌 <www.leavesongs.com>\nGitHub Pages: https://github.com/phith0n/python-xss-filter\nUsage:\n    parser = XssHtml()\n    parser.feed('<html code>')\n    parser.close()\n    html = parser.getHtml()\n    print html\nRequirements\nPython 2.6+ or 3.2+\nCannot defense xss in browser which is belowed IE7\n浏览器版本：IE7+ 或其他浏览器，无法防御IE6及以下版本浏览器中的XSS\n\"\"\" # noqa\n\n\n\nimport re\nfrom html.parser import HTMLParser\n\n\nclass XssHtml(HTMLParser):\n    allow_tags = ['a', 'img', 'br', 'strong', 'b', 'code', 'pre',\n                  'p', 'div', 'em', 'span', 'h1', 'h2', 'h3', 'h4',\n                  'h5', 'h6', 'blockquote', 'ul', 'ol', 'tr', 'th', 'td',\n                  'hr', 'li', 'u', 'embed', 's', 'table', 'thead', 'tbody',\n                  'caption', 'small', 'q', 'sup', 'sub']\n    common_attrs = [\"id\", \"style\", \"class\", \"name\"]\n    nonend_tags = [\"img\", \"hr\", \"br\", \"embed\"]\n    tags_own_attrs = {\n        \"img\": [\"src\", \"width\", \"height\", \"alt\", \"align\"],\n        \"a\": [\"href\", \"target\", \"rel\", \"title\"],\n        \"embed\": [\"src\", \"width\", \"height\", \"type\", \"allowfullscreen\", \"loop\", \"play\", \"wmode\", \"menu\"],\n        \"table\": [\"border\", \"cellpadding\", \"cellspacing\"],\n    }\n\n    def __init__(self, allows=[]):\n        HTMLParser.__init__(self)\n        self.allow_tags = allows if allows else self.allow_tags\n        self.result = []\n        self.start = []\n        self.data = []\n\n    def getHtml(self): # noqa\n        \"\"\"\n        Get the safe html code\n        \"\"\"\n        for i in range(0, len(self.result)):\n            tmp = self.result[i].rstrip('\\n')\n            tmp = tmp.lstrip('\\n')\n            if tmp:\n                self.data.append(tmp)\n        return ''.join(self.data)\n\n    def handle_startendtag(self, tag, attrs):\n        self.handle_starttag(tag, attrs)\n\n    def handle_starttag(self, tag, attrs):\n        if tag not in self.allow_tags:\n            return\n        end_diagonal = ' /' if tag in self.nonend_tags else ''\n        if not end_diagonal:\n            self.start.append(tag)\n        attdict = {}\n        for attr in attrs:\n            attdict[attr[0]] = attr[1]\n\n        attdict = self.__wash_attr(attdict, tag)\n        if hasattr(self, \"node_%s\" % tag):\n            attdict = getattr(self, \"node_%s\" % tag)(attdict)\n        else:\n            attdict = self.node_default(attdict)\n\n        attrs = []\n        for (key, value) in list(attdict.items()):\n            attrs.append('%s=\"%s\"' % (key, self.__htmlspecialchars(value)))\n        attrs = (' ' + ' '.join(attrs)) if attrs else ''\n        self.result.append('<' + tag + attrs + end_diagonal + '>')\n\n    def handle_endtag(self, tag):\n        if self.start and tag == self.start[len(self.start) - 1]:\n            self.result.append('</' + tag + '>')\n            self.start.pop()\n\n    def handle_data(self, data):\n        self.result.append(self.__htmlspecialchars(data))\n\n    def handle_entityref(self, name):\n        if name.isalpha():\n            self.result.append(\"&%s;\" % name)\n\n    def handle_charref(self, name):\n        if name.isdigit():\n            self.result.append(\"&#%s;\" % name)\n\n    def node_default(self, attrs):\n        attrs = self.__common_attr(attrs)\n        return attrs\n\n    def node_a(self, attrs):\n        attrs = self.__common_attr(attrs)\n        attrs = self.__get_link(attrs, \"href\")\n        attrs = self.__set_attr_default(attrs, \"target\", \"_blank\")\n        attrs = self.__limit_attr(attrs, {\n            \"target\": [\"_blank\", \"_self\"]\n        })\n        return attrs\n\n    def node_embed(self, attrs):\n        attrs = self.__common_attr(attrs)\n        attrs = self.__get_link(attrs, \"src\")\n        attrs = self.__limit_attr(attrs, {\n            \"type\": [\"application/x-shockwave-flash\"],\n            \"wmode\": [\"transparent\", \"window\", \"opaque\"],\n            \"play\": [\"true\", \"false\"],\n            \"loop\": [\"true\", \"false\"],\n            \"menu\": [\"true\", \"false\"],\n            \"allowfullscreen\": [\"true\", \"false\"]\n        })\n        attrs[\"allowscriptaccess\"] = \"never\"\n        attrs[\"allownetworking\"] = \"none\"\n        return attrs\n\n    def __true_url(self, url):\n        prog = re.compile(r\"^(http|https|ftp)://.+\", re.I | re.S)\n        if prog.match(url):\n            return url\n        else:\n            return \"http://%s\" % url\n\n    def __true_style(self, style):\n        if style:\n            style = re.sub(r\"(\\\\|&#|/\\*|\\*/)\", \"_\", style)\n            style = re.sub(r\"e.*x.*p.*r.*e.*s.*s.*i.*o.*n\", \"_\", style)\n        return style\n\n    def __get_style(self, attrs):\n        if \"style\" in attrs:\n            attrs[\"style\"] = self.__true_style(attrs.get(\"style\"))\n        return attrs\n\n    def __get_link(self, attrs, name):\n        if name in attrs:\n            attrs[name] = self.__true_url(attrs[name])\n        return attrs\n\n    def __wash_attr(self, attrs, tag):\n        if tag in self.tags_own_attrs:\n            other = self.tags_own_attrs.get(tag)\n        else:\n            other = []\n        if attrs:\n            for (key, value) in list(attrs.items()):\n                if key not in self.common_attrs + other:\n                    del attrs[key]\n        return attrs\n\n    def __common_attr(self, attrs):\n        attrs = self.__get_style(attrs)\n        return attrs\n\n    def __set_attr_default(self, attrs, name, default=''):\n        if name not in attrs:\n            attrs[name] = default\n        return attrs\n\n    def __limit_attr(self, attrs, limit={}):\n        for (key, value) in list(limit.items()):\n            if key in attrs and attrs[key] not in value:\n                del attrs[key]\n        return attrs\n\n    def __htmlspecialchars(self, html):\n        return html.replace(\"<\", \"&lt;\")\\\n            .replace(\">\", \"&gt;\")\\\n            .replace('\"', \"&quot;\")\\\n            .replace(\"'\", \"&#039;\")\n\n\nif \"__main__\" == __name__:\n    parser = XssHtml()\n    parser.feed(\"\"\"<p><img src=1 onerror=alert(/xss/)></p><div class=\"left\">\n        <a href='javascript:prompt(1)'><br />hehe</a></div>\n        <p id=\"test\" onmouseover=\"alert(1)\">&gt;M<svg>\n        <a href=\"https://www.baidu.com\" target=\"self\">MM</a></p>\n        <embed src='javascript:alert(/hehe/)' allowscriptaccess=always />\"\"\")\n    parser.close()\n    print(parser.getHtml())\n"
  },
  {
    "path": "paas-ce/paas/paas/common/middlewares/xss.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\nimport re\n\nfrom common.log import logger\nfrom common.middlewares.utils.pxfilter import XssHtml\nfrom django.utils.deprecation import MiddlewareMixin\nfrom settings import SITE_URL\n\n\ndef html_escape(html, is_json=False):\n    \"\"\"\n    Replace special characters \"&\", \"<\" and \">\" to HTML-safe sequences.\n    If the optional flag quote is true, the quotation mark character (\")\n    is also translated.\n    rewrite the cgi method\n    @param html: html代码\n    @param is_json: 是否为json串（True/False） ，默认为False\n    \"\"\"\n    # &转换\n    if not is_json:\n        html = html.replace('&', '&amp;')  # Must be done first!\n    # <>转换\n    html = html.replace(\"<\", \"&lt;\")\n    html = html.replace(\">\", \"&gt;\")\n    # 单双引号转换\n    if not is_json:\n        html = html.replace(' ', \"&nbsp;\")\n        html = html.replace('\"', \"&quot;\")\n        html = html.replace(\"'\", \"&#39;\")\n    return html\n\n\ndef texteditor_escape(str_escape):\n    \"\"\"\n    富文本处理\n    @param str_escape: 要检测的字符串\n    \"\"\"\n    try:\n        parser = XssHtml()\n        parser.feed(str_escape)\n        parser.close()\n        return parser.getHtml()\n    except Exception as e:\n        logger.error(\"js脚本注入检测发生异常，错误信息：%s\", e)\n        return str_escape\n\n\ndef url_escape(url):\n    url = url.replace(\"<\", \"\")\n    url = url.replace(\">\", \"\")\n    url = url.replace(' ', \"\")\n    url = url.replace('\"', \"\")\n    url = url.replace(\"'\", \"\")\n    return url\n\n\nclass CheckXssMiddleware(MiddlewareMixin):\n    \"\"\"\n    XSS攻击统一处理中间件\n    \"\"\"\n\n    def process_view(self, request, view, args, kwargs):\n        \"\"\"\n        请求参数统一处理\n        \"\"\"\n        try:\n            # 判断豁免权\n            if getattr(view, 'escape_exempt', False):\n                return None\n            # 豁免修改常用链接\n            if request.path.startswith('/admin/home/usefullinks/'):\n                return None\n            # 判断豁免\n            escape_type = None\n            if getattr(view, 'escape_texteditor', False):\n                escape_type = 'texteditor'\n            elif getattr(view, 'escape_url', False):\n                escape_type = 'url'\n            # get参数转换\n            request.GET = self.__escape_data(request.path, request.GET, escape_type)\n            # post参数转换\n            request.POST = self.__escape_data(request.path, request.POST, escape_type)\n        except Exception as e:\n            logger.error(\"CheckXssMiddleware 转换失败！错误信息：%s\", e)\n        return None\n\n    def __escape_data(self, path, query_dict, escape_type=None):\n        \"\"\"\n        GET/POST参数转义\n        \"\"\"\n        data_copy = query_dict.copy()\n        new_data = {}\n        for _get_key, _get_value in list(data_copy.items()):\n            # json串不进行转义\n            try:\n                json.loads(_get_value)\n                is_json = True\n            except Exception:\n                is_json = False\n            # 转义新数据\n            if not is_json:\n                if escape_type is None:\n                    use_type = self.__filter_param(path, _get_key)\n                else:\n                    use_type = escape_type\n                if use_type == 'url':\n                    new_data[_get_key] = url_escape(_get_value)\n                elif use_type == 'texteditor':\n                    new_data[_get_key] = texteditor_escape(_get_value)\n                else:\n                    new_data[_get_key] = html_escape(_get_value)\n            else:\n                new_data[_get_key] = html_escape(_get_value, True)\n        # update 数据\n        data_copy.update(new_data)\n        return data_copy\n\n    def __filter_param(self, path, param):\n        \"\"\"\n        特殊path处理\n        @param path: 路径\n        @param param: 参数\n        @return: 'url/texteditor'\n        \"\"\"\n        use_url_paths, use_texteditor_paths = self.__filter_path_list()\n        result = self.__check_escape_type(path, param, use_url_paths, 'url')\n        # 富文本内容过滤\n        if result == 'html':\n            result = self.__check_escape_type(path, param, use_texteditor_paths, 'texteditor')\n        return result\n\n    def __check_escape_type(self, path, param, check_path_list, escape_type):\n        \"\"\"\n        判断过滤类型\n        @param path: 请求Path\n        @param param: 请求参数\n        @param check_path_list: 指定类型Path列表\n        @param escape_type: 判断过滤类型\n        @param result_type: 结果类型\n        \"\"\"\n        result_type = 'html'\n        try:\n            for script_path, script_v in list(check_path_list.items()):\n                is_path = re.match(r'^%s' % script_path, path)\n                if is_path and param in script_v:\n                    result_type = escape_type\n                    break\n        except Exception as e:\n            logger.error(\"CheckXssMiddleware 特殊path处理失败！错误信息%s\", e)\n        return result_type\n\n    def __filter_path_list(self):\n        \"\"\"\n        特殊path注册\n        注册格式：{'path1': [param1, param2], 'path2': [param1, param2]}\n        \"\"\"\n        use_url_paths = {\n            '%saccounts/login' % SITE_URL: ['c_url'],\n            '%s' % SITE_URL: ['url'],\n        }\n        use_texteditor_paths = {}\n        return (use_url_paths, use_texteditor_paths)\n"
  },
  {
    "path": "paas-ce/paas/paas/common/mixins/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/common/mixins/base.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.db.models import Q\nfrom django.http import HttpResponse\nfrom django.utils.decorators import method_decorator\n\nfrom account.decorators import login_exempt\nfrom app.models import App\nfrom common.constants import PermissionErrorEnum\nfrom common.mymako import render_mako_context\nfrom saas.models import SaaSApp\n\n\nclass AccessMixin(object):\n    \"\"\"\n    'Abstract' mixin that gives access mixins the same customizable\n    functionality.\n    \"\"\"\n    pass\n\n\nclass LoginExemptMixin(AccessMixin):\n    @method_decorator(login_exempt)\n    def dispatch(self, *args, **kwargs):\n        # will call the dispatch of view\n        return super(LoginExemptMixin, self).dispatch(*args, **kwargs)\n\n\nclass SuperuserRequiredMixin(AccessMixin):\n    \"\"\"\n    Mixin allows you to require a user with `is_superuser` set to True.\n    \"\"\"\n    def dispatch(self, request, *args, **kwargs):\n        if not request.user.is_superuser:\n            return _redirect_not_developer(request, PermissionErrorEnum.NOT_SUPERUSER.value, '')\n\n        return super(SuperuserRequiredMixin, self).dispatch(request, *args, **kwargs)\n\n\nclass AppDeveloperRequiredMixin(AccessMixin):\n    \"\"\"检查应用权限.\n\n    以下两种情况出返回到错误页面：\n    1   应用不存在\n    2   当前用户没有管理该应用的权限，权限包括：\n        普通应用: creater,developer,is_superuser\n        SaaS应用: is_superuser\n    \"\"\"\n    def dispatch(self, request, *args, **kwargs):\n        username = request.user.username\n        app_code = kwargs.get('app_code')\n\n        if not app_code:\n            # return view_func(request, *args, **kwargs)\n            return super(AppDeveloperRequiredMixin, self).dispatch(request, *args, **kwargs)\n\n        apps = App.objects.filter(code=app_code)\n        # 应用不存在\n        if not apps.exists():\n            return _redirect_not_developer(request, PermissionErrorEnum.APP_NOT_EXISTS.value, app_code)\n\n        # 判断开发者权限\n        app_count = apps.filter(Q(developer__username=username) | Q(creater=username)).count()\n        if app_count or request.user.is_superuser:\n            # return view_func(request, *args, **kwargs)\n            return super(AppDeveloperRequiredMixin, self).dispatch(request, *args, **kwargs)\n\n        return _redirect_not_developer(request, PermissionErrorEnum.NOT_APP_DEVELOPER.value, app_code)\n\n\nclass SaaSAdminMixin(AccessMixin):\n    def dispatch(self, request, *args, **kwargs):\n        app_code = kwargs.get('app_code')\n        if not app_code:\n            # return view_func(request, *args, **kwargs)\n            return super(SaaSAdminMixin, self).dispatch(request, *args, **kwargs)\n\n        # app_code = 0 means a new saas\n        if app_code != '0':\n            apps = SaaSApp.objects.filter(code=app_code)\n            # SaaS应用不存在\n            if not apps.exists():\n                return _redirect_not_developer(request, PermissionErrorEnum.SAAS_NOT_EXISTS.value, app_code)\n        # 非超级管理员\n        if not request.user.is_superuser:\n            return _redirect_not_developer(request, PermissionErrorEnum.NOT_SUPERUSER.value, app_code)\n\n        return super(SaaSAdminMixin, self).dispatch(request, *args, **kwargs)\n\n\ndef _redirect_not_developer(request, error_id, app_code):\n    \"\"\"转到没有开发者权限页面.\n\n    error_id 值：\n    1   应用不存在\n    2   当前用户没有管理该应用的权限，权限包括：creater,developer,is_superuser\n    \"\"\"\n    if not request.is_ajax():\n        template = 'error/app_error{}.html'.format(error_id)\n        return render_mako_context(request, template, {'app_code': app_code})\n\n    url = '{}app/{}/error/{}/'.format(settings.SITE_URL, app_code, error_id)\n    return HttpResponse(status=402, content=url)\n"
  },
  {
    "path": "paas-ce/paas/paas/common/mymako.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.http import HttpResponse\nfrom django.template.context import Context\nfrom mako.lookup import TemplateLookup\n\nfrom common.log import logger\n\n\nmylookup = TemplateLookup(\n    directories=settings.MAKO_TEMPLATE_DIR,\n    module_directory=settings.MAKO_TEMPLATE_MODULE_DIR,\n    output_encoding='utf-8',\n    input_encoding='utf-8',\n    encoding_errors='replace',\n    collection_size=500,\n)\n\n\ndef render_mako(template_name, dictionary={}, context_instance=None):\n    \"\"\"\n    Render the mako template and return the HttpResponse\n\n    @param template_name: 模板名字\n    @param dictionary: context字典\n    @param context_instance: 初始化context, 如果要使用 TEMPLATE_CONTEXT_PROCESSORS，则要使用 RequestContext(request)\n    @note: 因为返回是HttpResponse，所以这个方法也适合给ajax用(dataType不是json的ajax)\n    @Example:\n                 render_mako('mako_temp.html',{'form':form})\n            or\n                 render_mako('mako_temp.html',{'form':form},RequestContext(request))\n            or\n                 render_mako('mako_temp.html',{},RequestContext(request，{'form':form}))\n    \"\"\"\n    mako_temp = mylookup.get_template(template_name)\n    if context_instance:\n        context_instance.update(dictionary)\n    else:\n        context_instance = Context(dictionary)\n\n    data = {}\n    # construct date dictory\n    for d in context_instance:\n        data.update(d)\n\n    return HttpResponse(mako_temp.render_unicode(**data))\n\n\ndef render_mako_context(request, template_name, dictionary={}):\n    \"\"\"\n    Render the mako template with the RequestContext and return the HttpResponse\n    \"\"\"\n    context_instance = get_context_processors_content(request)\n    return render_mako(template_name, dictionary=dictionary, context_instance=context_instance)\n\n\ndef render_mako_tostring(template_name, dictionary={}, context_instance=None):\n    \"\"\"\n    Render mako tostring without RequestContext.\n\n    @note: 因为返回是string，所以这个方法适合include的子页面用\n    \"\"\"\n    mako_temp = mylookup.get_template(template_name)\n    if context_instance:\n        # RequestContext(request)\n        context_instance.update(dictionary)\n    else:\n        # 默认为Context\n        context_instance = Context(dictionary)\n\n    data = {}\n    # construct date dictory\n    for d in context_instance:\n        data.update(d)\n\n    # return string\n    return mako_temp.render_unicode(**data)\n\n\ndef render_mako_tostring_context(request, template_name, dictionary={}):\n    \"\"\"\n    Render mako tostring with RequestContext\n    \"\"\"\n    context_instance = get_context_processors_content(request)\n    return render_mako_tostring(template_name, dictionary=dictionary, context_instance=context_instance)\n\n\n# def render_json(dictionary={}):\n#     \"\"\"\n#     Return the json string for response\n\n#     @summary: dictionary也可以是string, list数据\n#     @note:  返回结果是个dict, 请注意默认数据格式:\n#                                     {'result': '',\n#                                      'message':''\n#                                     }\n#     \"\"\"\n#     import json\n#     if type(dictionary) is not dict:\n#         dictionary = {'result': True, 'message': dictionary}\n#     return HttpResponse(json.dumps(dictionary))\n\n\ndef get_context_processors_content(request):\n    \"\"\"\n    Return the context_processors dict context\n    \"\"\"\n    context = Context()\n    try:\n        from django.utils.module_loading import import_string\n        from django.template.context import _builtin_context_processors\n        context_processors = _builtin_context_processors\n        context_processors += tuple(settings.TEMPLATE_CONTEXT_PROCESSORS)\n\n        cp_func_list = tuple(import_string(path) for path in context_processors)\n        for processors in cp_func_list:\n            context.update(processors(request))\n    except Exception as e:\n        logger.exception('Mako: get_context_processors_content:%s', e)\n        context = Context()\n    return context\n"
  },
  {
    "path": "paas-ce/paas/paas/common/responses.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.http import JsonResponse\n\n\nclass FailJsonResponse(JsonResponse):\n    def __init__(self, message, **kwargs):\n        data = {}\n        if kwargs:\n            data.update(kwargs)\n\n        # high priority\n        data.update({\n            \"result\": False,\n            \"message\": message\n        })\n\n        super(FailJsonResponse, self).__init__(data)\n\n\nclass OKJsonResponse(JsonResponse):\n    def __init__(self, message, **kwargs):\n        data = {}\n        if kwargs:\n            data.update(kwargs)\n\n        # high priority\n        data.update({\n            \"result\": True,\n            \"message\": message\n        })\n\n        super(OKJsonResponse, self).__init__(data)\n"
  },
  {
    "path": "paas-ce/paas/paas/common/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.test import TestCase\n\nimport mock\nimport requests\nfrom common.constants import LogoImgRelatedDirEnum\nfrom common.http import _gen_header, http_delete, http_get, http_post\nfrom common.utils import file_size_bytes_to_m, get_app_logo, should_update_logo\n\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass CommonUtilsTestCase(TestCase):\n    def test_file_size_bytes_to_m(self):\n\n        size = None\n        self.assertEqual(size, file_size_bytes_to_m(size))\n\n        size = 0\n        self.assertEqual(size, file_size_bytes_to_m(0))\n\n        size = 1024 * 1024\n        self.assertEqual(1.0, file_size_bytes_to_m(size))\n\n    def test_get_app_logo(self):\n        app_code = 'bk_framework'\n        logo_name = '{}/{}.png'.format(LogoImgRelatedDirEnum.APP.value, app_code)\n        result = '{}{}'.format(settings.MEDIA_URL, logo_name)\n\n        self.assertEqual(result, get_app_logo(app_code))\n\n        app_code = \"not_exists\"\n        self.assertEqual(\"\", get_app_logo(app_code))\n\n    def test_should_update_logo(self):\n        app_code = \"test\"\n        app_logo_name = \"{}/{}.png\".format(LogoImgRelatedDirEnum.APP.value, app_code)\n\n        ok, _ = should_update_logo(app_code, app_logo_name)\n        self.assertFalse(ok)\n\n        ok, logo_name = should_update_logo('test1', app_logo_name)\n        self.assertTrue(ok)\n\n\nclass CommonHttpTestCase(TestCase):\n    def _mock_response(self, status=200, content=\"CONTENT\", json_data=None, raise_for_status=None):\n        \"\"\"\n        https://gist.github.com/evansde77/45467f5a7af84d2a2d34f3fcb357449c\n\n        since we typically test a bunch of different\n        requests calls for a service, we are going to do\n        a lot of mock responses, so its usually a good idea\n        to have a helper function that builds these things\n        \"\"\"\n        mock_resp = mock.Mock()\n        # mock raise_for_status call w/optional error\n        mock_resp.raise_for_status = mock.Mock()\n        if raise_for_status:\n            mock_resp.raise_for_status.side_effect = raise_for_status\n        # set status code and content\n        mock_resp.status_code = status\n        mock_resp.content = content\n        # add json data if provided\n        if json_data:\n            mock_resp.json = mock.Mock(\n                return_value=json_data\n            )\n        return mock_resp\n\n    @mock.patch('requests.get')\n    def test_http_get(self, mock_get):\n        # 200\n        mock_resp = self._mock_response(status=200)\n        mock_get.return_value = mock_resp\n\n        ok, data = http_get(\"http://not_exists.com/\", data={})\n        self.assertTrue(ok)\n\n        # 200, with json\n        json_data = {\"a\": 1, \"b\": 2}\n        mock_resp = self._mock_response(status=200, json_data=json_data)\n        mock_get.return_value = mock_resp\n\n        ok, data = http_get(\"http://not_exists.com/\", data={})\n        self.assertTrue(ok)\n        self.assertEqual(json_data, data)\n\n        # not 200\n        mock_resp = self._mock_response(status=400)\n        mock_get.return_value = mock_resp\n\n        ok, data = http_get(\"http://not_exists.com/\", data={})\n        self.assertFalse(ok)\n\n        # timeout\n        # https://stackoverflow.com/questions/48723711/python-mock-requests-post-to-throw-exception\n        mock_get.side_effect = requests.exceptions.Timeout()\n\n        ok, data = http_get(\"http://not_exists.com/\", data={})\n        self.assertFalse(ok)\n\n    @mock.patch('requests.post')\n    def test_http_post(self, mock_post):\n        # 200\n        mock_resp = self._mock_response(status=200)\n        mock_post.return_value = mock_resp\n\n        ok, data = http_post(\"http://not_exists.com/\", data={})\n        self.assertTrue(ok)\n\n        # 200, with json\n        json_data = {\"a\": 1, \"b\": 2}\n        mock_resp = self._mock_response(status=200, json_data=json_data)\n        mock_post.return_value = mock_resp\n\n        ok, data = http_post(\"http://not_exists.com/\", data={})\n        self.assertTrue(ok)\n        self.assertEqual(json_data, data)\n\n    @mock.patch('requests.delete')\n    def test_http_delete(self, mock_delete):\n        # 200\n        mock_resp = self._mock_response(status=200)\n        mock_delete.return_value = mock_resp\n\n        ok, data = http_delete(\"http://not_exists.com/\", data={})\n        self.assertTrue(ok)\n\n        # 200, with json\n        json_data = {\"a\": 1, \"b\": 2}\n        mock_resp = self._mock_response(status=200, json_data=json_data)\n        mock_delete.return_value = mock_resp\n\n        ok, data = http_delete(\"http://not_exists.com/\", data={})\n        self.assertTrue(ok)\n        self.assertEqual(json_data, data)\n\n    def test_default_header(self):\n        headers = {\n            \"Content-Type\": \"application/json\",\n        }\n        self.assertEqual(headers, _gen_header())\n"
  },
  {
    "path": "paas-ce/paas/paas/common/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport os\nimport hashlib\n\nfrom django.conf import settings\n\nfrom common.constants import LogoImgRelatedDirEnum\nfrom common.log import logger\n\n\ndef file_size_bytes_to_m(file_size):\n    if not file_size:\n        return file_size\n\n    try:\n        return round(file_size / 1024 / 1024.0, 2)\n    except TypeError:\n        logger.exception(\"文件大小转换出错\")\n    return file_size\n\n######################################\n#  app and saas logo file operation  #\n######################################\n\n\ndef should_update_logo(app_code, app_logo_name):\n    # 修改图片名称\n    logo_ext = '.png'\n    # 判断logo名称\n    if app_logo_name.find('\\\\') >= 0:\n        logo_name = LogoImgRelatedDirEnum.APP.value + '\\\\' + str(app_code) + logo_ext\n    else:\n        logo_name = LogoImgRelatedDirEnum.APP.value + '/' + str(app_code) + logo_ext\n\n    # 判断图片路径与旧图路径名称是否相同\n    # if cmp(logo_name, app_logo_name):\n    if logo_name != app_logo_name:\n        # logo_name = LogoImgRelatedDirEnum.APP.value + '/' + str(app_code) + logo_ext\n        delete_exist_logo_file(logo_name)\n        # 指定图片名称\n        # self.logo.name = LogoImgRelatedDirEnum.APP.value + '/' + str(app_code) + logo_ext\n        return True, logo_name\n    return False, None\n\n\ndef delete_exist_logo_file(name):\n    _file = os.path.join(settings.MEDIA_ROOT, name)\n    if os.path.exists(_file):\n        os.remove(_file)\n\n\ndef get_app_logo(app_code):\n    # 判断 以 app_code 命名的 logo 图片是否存在\n    logo_name = '{}/{}.png'.format(LogoImgRelatedDirEnum.APP.value, app_code)\n    logo_path = os.path.join(settings.MEDIA_ROOT, logo_name)\n    if os.path.exists(logo_path):\n        return '{}{}'.format(settings.MEDIA_URL, logo_name)\n\n    # 判断是否是上传saas解压生成的文件, 存在的话使用之(saas内置应用上传包中带的logo)\n    logo_name = '{}/{}.png'.format(LogoImgRelatedDirEnum.SAAS.value, app_code)\n    logo_path = os.path.join(settings.MEDIA_ROOT, logo_name)\n    if os.path.exists(logo_path):\n        return '{}{}'.format(settings.MEDIA_URL, logo_name)\n\n    return \"\"\n\n\ndef setup_view(view, request, *args, **kwargs):\n    \"\"\"\n    for unittest\n    Mimic ``as_view()``, but returns view instance.\n    Use this function to get view instances on which you can run unit tests,\n    by testing specific methods.\n    \"\"\"\n\n    view.request = request\n    view.args = args\n    view.kwargs = kwargs\n    return view\n\n\ndef first_error_message(form):\n    error_data = form.errors.as_data()\n    field = list(error_data.items())[0][0]\n    error_message = list(error_data.items())[0][1][0].message\n    message = \"{}: {}\".format(field, error_message)\n\n    return message\n\n\ndef md5_for_file(chunks):\n    \"\"\"\n    计算文件的md5\n    \"\"\"\n    md5 = hashlib.md5()\n    for data in chunks:\n        md5.update(data)\n    return md5.hexdigest()\n"
  },
  {
    "path": "paas-ce/paas/paas/common/views/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/common/views/mako.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\"  # noqa\n\n\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import JsonResponse\nfrom django.template.response import TemplateResponse\nfrom django.views.generic import View\nfrom django.views.generic.base import ContextMixin\n\nfrom common.mymako import render_mako_context\n\n\n# MakoTemplateView\n\nclass MakoTemplateResponseMixin(object):\n    template_name = None\n    template_engine = None\n    response_class = TemplateResponse\n    content_type = None\n\n    def get_template_names(self):\n        \"\"\"\n        Returns a list of template names to be used for the request. Must return\n        a list. May not be called if render_to_response is overridden.\n        \"\"\"\n        if self.template_name is None:\n            raise ImproperlyConfigured(\n                \"MakoTemplateResponseMixin requires either a definition of \"\n                \"'template_name' or an implementation of 'get_template_names()'\")\n        else:\n            return [self.template_name]\n\n    def render_to_response(self, context):\n        # use the same function name as Django, but adapt to Mako\n        template_names = self.get_template_names()\n\n        if isinstance(template_names, (list, tuple)):\n            template_name = template_names[0]\n        elif isinstance(template_names, str):\n            template_name = template_names\n        else:\n            raise ValueError(\"template_names should be string or tuple/list\")\n\n        return render_mako_context(self.request, template_name, context)\n\n\nclass MakoTemplateView(MakoTemplateResponseMixin, ContextMixin, View):\n    def get(self, request, *args, **kwargs):\n        from saas.models import SaaSApp\n        from app.models import App\n        from django.http import HttpResponseRedirect\n        # 增加判断是否有工作台，若有，则调转\n        if \"platform\" in request.path_info:\n            workbench_platform = SaaSApp.objects.filter(code=\"workbench\")\n            if workbench_platform:\n                return HttpResponseRedirect(\"/o/workbench/?login=1\")\n\n            dev_workbench_platform = App.objects.filter(code=\"workbench\", is_saas=False)\n            if dev_workbench_platform:\n                return HttpResponseRedirect(\"/t/workbench/?login=1\")\n\n        context = self.get_context_data(**kwargs)\n        return self.render_to_response(context)\n\n\n# JsonView\n\nclass JsonResponseMixin(object):\n    def render_to_response(self, request, context):\n        # remove view from the get_context_data\n        if ('view' in context) and isinstance(context['view'], View):\n            del context['view']\n        return JsonResponse(context)\n\n\nclass JsonView(JsonResponseMixin, ContextMixin, View):\n    def get(self, request, *args, **kwargs):\n        context = self.get_context_data(**kwargs)\n        return self.render_to_response(request, context)\n\n"
  },
  {
    "path": "paas-ce/paas/paas/components/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/components/engine.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\n\nfrom common.http import http_delete, http_get, http_post, http_put\nfrom common.log import logger\nfrom release.constants import EventStatusEnum\n\n\ndef _gen_header(app_code, auth_token):\n    headers = {\n        \"Content-Type\": \"application/json\",\n        \"X-APP-CODE\": app_code,\n        \"X-APP-TOKEN\": auth_token,\n    }\n    return headers\n\n\ndef _call_appengine_api(http_func, url, data, headers=None, timeout=None,\n                        caller='', max_retry_count=1):\n\n    kwargs = dict(url=url, data=data, headers=headers, timeout=timeout)\n\n    ok, data = http_func(**kwargs)\n    # 重试\n    retry_count = 0\n    while (not ok) and retry_count < max_retry_count:\n        logger.info(\"%s http request failed! retry %s\", caller, (retry_count + 1))\n        ok, data = http_func(**kwargs)\n        retry_count += 1\n\n    # process result\n    if not ok:\n        message = \"调用appengine api失败: method={} info={}\".format(\n            http_func.__name__, kwargs\n        )\n        logger.error(message)\n        return False, message, None\n\n    result = data[\"result\"]\n    if not result:\n        return False, data[\"message\"], None\n\n    return True, data[\"message\"], data[\"data\"]\n\n\ndef _process_status(status_list):\n    \"\"\"\n    下架多操作的多个结果状态, 统一处理成一个状态\n    \"\"\"\n    all_success = [status == EventStatusEnum.SUCCESS.value for status in status_list]\n    if all(all_success):\n        return EventStatusEnum.SUCCESS.value\n\n    any_fail = [status == EventStatusEnum.FAILURE.value for status in status_list]\n    if any(any_fail):\n        return EventStatusEnum.FAILURE.value\n\n    all_ready = [status == EventStatusEnum.READY.value for status in status_list]\n    if all(all_ready):\n        return EventStatusEnum.READY.value\n\n    return EventStatusEnum.PENDING.value\n\n\ndef get_event_log(app_code, auth_token, event_ids):\n    \"\"\"\n    获取 event log\n    \"\"\"\n    result_list = []\n    logs_list = []\n    status_list = []\n\n    for event_id in event_ids:\n        url = \"{host}/v1/apps/{app_code}/events/{event_id}/logs/\".format(host=settings.ENGINE_HOST,\n                                                                         app_code=app_code,\n                                                                         event_id=event_id)\n        headers = _gen_header(app_code, auth_token)\n        ok, message, _data = _call_appengine_api(http_get, url, data={}, headers=headers, timeout=None,\n                                                 caller='get_event_log', max_retry_count=0)\n\n        if ok:\n            logs_list.append(_data.get(\"logs\", ''))\n            status_list.append(_data.get(\"status\", ''))\n\n    if len(logs_list) == 2:\n        logs_list[0] = \"%s\\n%s\" % (\"测试环境\", logs_list[0])\n        logs_list[1] = \"%s\\n%s\" % (\"正式环境\", logs_list[1])\n\n    is_success = all(result_list)\n    logs = \"\\n==========\\n\".join(logs_list)\n    status = _process_status(status_list)\n\n    return is_success, dict(logs=logs, status=status)\n\n\ndef register_app(app_code, name, language, auth_token=''):\n    \"\"\"\n    注册app\n    注意, 这个接口不会校验 header\n\n    - app_code: app编码\n    - name: app名称\n    - language: 语言\n    \"\"\"\n    ## edited by _UFO\n    # url = \"{host}/v1/apps/\".format(host=settings.ENGINE_HOST)\n    # data = dict(app_code=app_code, name=name, app_lang=language)\n    # headers = _gen_header(app_code, auth_token)\n    if auth_token:\n        url = \"{host}/v1/apps/?auth_token={auth_token}\".format(host=settings.ENGINE_HOST,auth_token=auth_token)\n    else:\n        url = \"{host}/v1/apps/\".format(host=settings.ENGINE_HOST)\n    data = dict(app_code=app_code, name=name, app_lang=language)\n    headers = _gen_header(app_code, auth_token)\n\n    ok, message, _data = _call_appengine_api(http_post, url, data=data, headers=headers, timeout=None,\n                                             caller='register_app', max_retry_count=5)\n\n    if not ok:\n        message = \"应用[{}]注册失败 [url={}, resp_data={}, message={}]. 可能原因:App Engine 未正常启动\".format(\n            app_code, url, _data, message\n        )\n        logger.error(message)\n        return False, message, None\n    return True, 'success', _data[\"token\"]\n\n\ndef release_app(app_code, mode, auth_token, data):\n    \"\"\"\n    提测、上线操作调用托管接口\n    @param app_code: app编码\n    @param auth_token: 鉴权token\n    @param envs: 提交给app engine的参数\n    @param mode: 环境选择 test/prod\n    \"\"\"\n    url = \"{host}/v1/apps/{app_code}/{mode}/releases/\".format(host=settings.ENGINE_HOST,\n                                                              mode=mode,\n                                                              app_code=app_code)\n\n    headers = _gen_header(app_code, auth_token)\n\n    ok, message, _data = _call_appengine_api(http_post, url, data=data, headers=headers, timeout=None,\n                                             caller='release_app', max_retry_count=5)\n    if not ok:\n        logger.error(message)\n        return False, (None, 0, '')\n\n    event_info = (_data.get(\"event_id\"), _data.get(\"error_code\", 0), message)\n    return True, event_info\n\n\ndef _do_unrelease(app_code, auth_token, mode):\n    \"\"\"\n    下线\n    \"\"\"\n    url = \"{host}/v1/apps/{app_code}/{mode}/releases/\".format(host=settings.ENGINE_HOST,\n                                                              mode=mode,\n                                                              app_code=app_code)\n    data = dict(envs={}, mode=mode)\n    headers = _gen_header(app_code, auth_token)\n\n    ok, message, _data = _call_appengine_api(http_delete, url, data=data, headers=headers, timeout=None,\n                                             caller='_do_unrelease', max_retry_count=5)\n    if not ok:\n        logger.error(\"应用[%s]下架失败 [url=%s, resp_data=%s, message=%s]. 可能原因:App Engine 未正常启动\",\n                     app_code, url, _data, message)\n\n    return ok, _data\n\n\ndef unrelease_app(app_code, auth_token, mode):\n    \"\"\"\n    下架操作接口, 支持多个event_id\n\n    @param app_code: app编码\n    @param auth_token: app 授权token\n    @param mode: all/test/prod\n    \"\"\"\n    # 单个环境\n    if mode != \"all\":\n        ok, data = _do_unrelease(app_code, auth_token, mode)\n        if not ok:\n            return False, None\n\n        event_id = data.get(\"event_id\")\n        return True, [event_id]\n\n    # 多个环境\n    ok_1, data_1 = _do_unrelease(app_code, auth_token, \"test\")\n    ok_2, data_2 = _do_unrelease(app_code, auth_token, \"prod\")\n\n    all_ok = ok_1 and ok_2\n    if not all_ok:\n        return False, None\n\n    event_id1 = data_1.get(\"event_id\")\n    event_id2 = data_2.get(\"event_id\")\n    return True, [event_id1, event_id2]\n\n\ndef activate_agent(server_id):\n    \"\"\"激活服务器\n    \"\"\"\n    url = \"{host}/v1/agents/{server_id}/\".format(host=settings.ENGINE_HOST,\n                                                 server_id=server_id)\n\n    headers = {\n        \"Content-Type\": \"application/json\",\n    }\n\n    ok, message, _ = _call_appengine_api(http_put, url, data={}, headers=headers, timeout=10,\n                                         caller='get_agent_healthz', max_retry_count=1)\n\n    return ok, message\n\n\ndef activate_service(category, server_id):\n    \"\"\"激活服务\n    \"\"\"\n    url = (\"{host}/v1/services/{service_name}/\"\n           \"servers/{server_id}/\").format(host=settings.ENGINE_HOST,\n                                          service_name=category,\n                                          server_id=server_id)\n    headers = {\n        \"Content-Type\": \"application/json\",\n    }\n    ok, message, _ = _call_appengine_api(http_put, url, data={}, headers=headers, timeout=10,\n                                         caller='check_services_status', max_retry_count=1)\n    print(\"1111111111111111\", url)\n    print(\"1111111111111111\", ok, message, _)\n    return ok, message\n"
  },
  {
    "path": "paas-ce/paas/paas/components/login.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\n\nfrom common.http import http_get, http_post, http_delete, http_put\nfrom common.log import logger\nfrom django.utils.translation import gettext as _\n\n\ndef _call_login_api(http_func, api, data, kwargs={}):\n    # 获取统一登录接口请求URL前缀\n    if settings.LOGIN_DOMAIN:\n        url_prefix = \"http://{}/login/accounts/\".format(settings.LOGIN_DOMAIN)\n    else:\n        url_prefix = \"{}/accounts/\".format(settings.LOGIN_HOST)\n\n    url = \"{}{}/\".format(url_prefix, api)\n    ok, resp = http_func(url, data, **kwargs)\n    message = resp.get(\"message\", \"\") if (ok and resp) else \"\"\n    data = resp.get(\"data\", {}) if (ok and resp) else {}\n\n    if not (ok and resp and resp.get(\"result\")):\n        logger.error(\"请求login接口失败: method=%s, api=%s, message=%s\", http_func.__name__, api, message)\n        return False, message, data\n\n    return True, message, data\n\n\ndef get_all_users(bk_token):\n    \"\"\"获取所有用户的信息\n    \"\"\"\n    param = {'bk_token': bk_token}\n    ok, message, data = _call_login_api(http_get, 'get_all_user', param)\n    if not ok:\n        return False, []\n    return True, data or []\n\n\ndef get_user_info(bk_token):\n    \"\"\"请求平台接口获取用户信息\n    \"\"\"\n    param = {'bk_token': bk_token}\n    ok, message, data = _call_login_api(http_get, 'get_user', param)\n    if not ok:\n        return False, []\n    return True, data\n\n\ndef verify_bk_login(bk_token):\n    \"\"\"请求平台接口验证登录是否失效\n    \"\"\"\n    param = {'bk_token': bk_token, \"request_api_from\": \"login\"}\n    ok, message, data = _call_login_api(http_get, 'is_login', param)\n    if not ok:\n        return False, {}\n    return True, data\n\n\ndef modify_user_info(bk_token, data):\n    ok, message, data = _call_login_api(http_post, 'user/baseinfo', data, {'cookies': {'bk_token': bk_token}})\n    if not ok:\n        return False, message\n    return True, \"success\"\n\n\ndef change_password(bk_token, data):\n    ok, message, data = _call_login_api(http_put, 'user/password', data, {'cookies': {'bk_token': bk_token}})\n    if not ok:\n        return False, message\n    return True, \"success\"\n\n\ndef bind_wx_user_info(bk_token, wx_userid):\n    \"\"\"调用统一登录接口绑定用户微信信息\n    \"\"\"\n    data = {'wx_userid': wx_userid}\n    ok, message, data = _call_login_api(http_post, 'user/weixin_info', data, {'cookies': {'bk_token': bk_token}})\n    if not ok:\n        message = _(\"绑定用户微信失败\")\n    return ok, message\n\n\ndef unbind_wx_user_info(bk_token):\n    \"\"\"\n    调用统一登录接口解绑微信信息\n    \"\"\"\n    ok, message, data = _call_login_api(http_delete, 'user/weixin_info', None, {'cookies': {'bk_token': bk_token}})\n    if not ok:\n        message = _(\"解绑用户微信失败\")\n    return ok, message\n"
  },
  {
    "path": "paas-ce/paas/paas/components/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport mock\nfrom django.test import TestCase\n\nfrom components.engine import register_app, _process_status\nfrom release.constants import EventStatusEnum\nfrom components.login import _call_login_api\n\n\ndef mock_fail_response(url, **kwargs):\n    return False, {}\n\n\ndef mock_ok_response(url, **kwargs):\n    return True, {'result': True, 'message': 'ok', 'data': {'token': '1234'}}\n\n\nclass RegisterAppTestCase(TestCase):\n\n    @mock.patch('components.engine.http_post')\n    def test_register_app(self, mocked_func):\n        mocked_func.side_effect = mock_fail_response\n        # assert not mocked_func.called\n\n        ok, _, _ = register_app('test', 'test', 'python')\n        self.assertFalse(ok)\n\n        # assert mocked_func.called\n        mocked_func.side_effect = mock_ok_response\n        ok, _, _ = register_app('test', 'test', 'python')\n        self.assertTrue(ok)\n\n\nclass ProcessStatusTestCase(TestCase):\n\n    def test_process_status(self):\n        all_success_list = [EventStatusEnum.SUCCESS.value, EventStatusEnum.SUCCESS.value]\n        self.assertEqual(EventStatusEnum.SUCCESS.value, _process_status(all_success_list))\n\n        one_fail_list = [EventStatusEnum.SUCCESS.value, EventStatusEnum.FAILURE.value]\n        self.assertEqual(EventStatusEnum.FAILURE.value, _process_status(one_fail_list))\n\n        all_ready_list = [EventStatusEnum.READY.value, EventStatusEnum.READY.value]\n        self.assertEqual(EventStatusEnum.READY.value, _process_status(all_ready_list))\n\n        pending_list = [EventStatusEnum.READY.value, EventStatusEnum.SUCCESS.value]\n        self.assertEqual(EventStatusEnum.PENDING.value, _process_status(pending_list))\n\n\nclass LoginAPITestCase(TestCase):\n    @mock.patch('components.login.http_delete')\n    @mock.patch('components.login.http_post')\n    @mock.patch('components.login.http_get')\n    def test_call_login_api(self, mock_get, mock_post, mock_delete):\n        mock_get.side_effect = mock_fail_response\n        mock_post.side_effect = mock_fail_response\n        mock_delete.side_effect = mock_fail_response\n\n        param = {\"bk_token\": \"test\"}\n\n        ok, message, data = _call_login_api(mock_post, 'get_user', {'params': param})\n        self.assertFalse(ok)\n\n        ok, message, data = _call_login_api(mock_get, 'get_user', {'params': param})\n        self.assertFalse(ok)\n\n        ok, message, data = _call_login_api(mock_delete, 'get_user', {'params': param})\n        self.assertFalse(ok)\n\n        mock_get.return_value = (True, {\"result\": False})\n        mock_get.side_effect = None\n        ok, message, data = _call_login_api(mock_get, 'get_user', {'params': param})\n        self.assertFalse(ok)\n\n        mock_get.return_value = (True, {\"result\": True})\n        mock_get.side_effect = None\n        ok, message, data = _call_login_api(mock_get, 'get_user', {'params': param})\n        self.assertTrue(ok)\n"
  },
  {
    "path": "paas-ce/paas/paas/conf/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/conf/default.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nDjango settings for paas project.\n\nGenerated by 'django-admin startproject' using Django 1.8.3.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/topics/settings/\n\nFor the full list of settings and their values, see\nhttps://docs.djangoproject.com/en/1.8/ref/settings/\n\"\"\" # noqa\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nimport os\nimport sys\nimport time\nfrom django.utils.functional import SimpleLazyObject\n\n\ntry:\n    import pymysql\n    pymysql.install_as_MySQLdb()\nexcept Exception:\n    pass\n\nPROJECT_PATH = os.path.dirname(os.path.abspath(__file__))\nPROJECT_ROOT, PROJECT_MODULE_NAME = os.path.split(PROJECT_PATH)\nBASE_DIR = os.path.dirname(os.path.dirname(PROJECT_PATH))\nDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'\n\n# Quick-start development settings - unsuitable for production\n# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/\nAPP_ID = 'bk_paas'\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = 'o7(025idh*fj@)ohujum-ilfxl^n=@d&$xz!_$$7s$8jopd5r#'\n\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\n\nALLOWED_HOSTS = ['*']\n\nCSRF_COOKIE_NAME = 'bk_csrftoken'\n\n# Application definition\nINSTALLED_APPS = (\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'account',\n    'app.apps.appConfig',\n    'app_env',\n    'release',\n    'engine',\n    'home',\n    'saas',\n    'resource',\n    'bk_app',\n    'user_center',\n    'esb.bkcore',\n    'esb.mainsite',\n    'esb.apps.manager',\n    'esb.apps.guide',\n    'esb.apps.bootstrapform',\n    'esb.apps.api_docs',\n)\n\nMIDDLEWARE = (\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.common.CommonMiddleware',\n    'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n  #  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    'django.middleware.clickjacking.XFrameOptionsMiddleware',\n    'django.middleware.security.SecurityMiddleware',\n    'account.middlewares.LoginMiddleware',\n    'account.middlewares.DeveloperLimitMiddleware',\n    'common.middlewares.xss.CheckXssMiddleware',\n    'common.middlewares.exception.BaseExceptionMiddleware',\n\n)\n\nROOT_URLCONF = 'urls'\n\n# mako template dir\nMAKO_TEMPLATE_DIR = os.path.join(PROJECT_ROOT, 'templates')\nMAKO_TEMPLATE_MODULE_DIR = os.path.join(PROJECT_ROOT, 'templates_module')\n\n\nTEMPLATE_CONTEXT_PROCESSORS = (\n    'django.template.context_processors.debug',\n    'django.template.context_processors.request',\n    'django.contrib.auth.context_processors.auth',\n    'django.template.context_processors.csrf',\n    'common.context_processors.site_settings',      # 自定义模版context，可以在页面中使用STATIC_URL等变量\n    'django.template.context_processors.i18n',\n    'django.contrib.messages.context_processors.messages',\n    'django.template.context_processors.request',\n)\n\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        # django template dir\n        'DIRS': (\n            # 绝对路径，比如\"/home/html/django_templates\" or \"C:/www/django/templates\".\n            os.path.join(PROJECT_ROOT, 'templates'),\n        ),\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': list(TEMPLATE_CONTEXT_PROCESSORS),\n        },\n    },\n]\n\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/1.8/howto/static-files/\nSITE_URL = '/'\n\nSTATIC_URL = SITE_URL + 'static/'\n\nSTATICFILES_DIRS = (\n    os.path.join(PROJECT_ROOT, 'static'),\n)\n\nSTATIC_VERSION = '0.0.10'\n\nMEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')\nMEDIA_URL = '/media/'\n\n# CSS 文件后缀名\nCSS_SUFFIX = 'min.css'\n# JS 文件后缀名\nJS_SUFFIX = 'min.js'\n\n# CSRF 验证失败处理函数\nCSRF_FAILURE_VIEW = 'account.views.csrf_failure'\n\n##################\n# AUTHENTICATION #\n##################\n\nLOGIN_URL = '/accounts/login/'\n\nLOGOUT_URL = '/accounts/logout/'\n\nLOGIN_REDIRECT_URL = SITE_URL\n\nAUTH_USER_MODEL = 'account.BkUser'\n\nAUTHENTICATION_BACKENDS = ('account.backends.BkBackend', 'django.contrib.auth.backends.ModelBackend')\n\nREDIRECT_FIELD_NAME = 'c_url'\n\nLOGIN_DOMAIN = ''\n\nWSGI_APPLICATION = 'wsgi.application'\n\n# Database\n# https://docs.djangoproject.com/en/1.8/ref/settings/#databases\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3',\n        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),\n    }\n}\n\n# Internationalization\n# https://docs.djangoproject.com/en/1.8/topics/i18n/\n#LANGUAGE_CODE = 'zh-CN'\n# TIME_ZONE = 'Asia/Shanghai'\nTIME_ZONE = 'Etc/GMT%+d' % ((time.altzone if time.daylight else time.timezone) / 3600)\nUSE_I18N = True\nUSE_L10N = True\n\n# cookie名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie 有效期，默认为1天\nBK_COOKIE_AGE = 60 * 60 * 24\n\n# APP_ENGINE 状态查询超时时间\n# 实时轮询判定状态， 一定要大于agent设置的300\nEVENT_STATE_EXPIRE_SECONDS = 360\n# 查询历史任务判定状态， 设置为15分钟\nHISTORY_EVENT_STATE_EXPIRE_SECONDS = 900\n\n##################\n# 应用访问链接 #\n##################\nAPP_TEST_URL = SimpleLazyObject(lambda: '%s://%s/t/{app_code}/'\n                                % (getattr(getattr(sys.modules['django.conf'], 'settings'), 'HTTP_SCHEMA'),\n                                   getattr(getattr(sys.modules['django.conf'], 'settings'), 'PAAS_DOMAIN'))\n                                )\nAPP_PROD_URL = SimpleLazyObject(lambda: '%s://%s/o/{app_code}/'\n                                % (getattr(getattr(sys.modules['django.conf'], 'settings'), 'HTTP_SCHEMA'),\n                                   getattr(getattr(sys.modules['django.conf'], 'settings'), 'PAAS_DOMAIN'))\n                                )\n\n\n##################\n# 第三方应用链接 #\n##################\nHOST_CC = \"\"\nHOST_JOB = \"\"\n\n# logging config\nLOGGER_LEVEL = 'DEBUG'\n\nLOGGING_DIR = os.environ.get('PAAS_LOGGING_DIR') or os.path.join(PROJECT_ROOT, 'logs')\nif not os.path.exists(LOGGING_DIR):\n    os.mkdir(LOGGING_DIR)\n\nLOG_CLASS = 'logging.handlers.RotatingFileHandler'\nLOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'formatters': {\n        'verbose': {\n            'format':\n            '%(levelname)s [%(asctime)s] %(pathname)s %(lineno)d %(funcName)s %(process)d %(thread)d \\n \\t %(message)s \\n',  # noqa\n            'datefmt': '%Y-%m-%d %H:%M:%S'\n        },\n        'simple': {\n            'format': '%(levelname)s %(message)s \\n'\n        },\n    },\n    'handlers': {\n        'null': {\n            'level': 'DEBUG',\n            'class': 'logging.NullHandler',\n        },\n        'console': {\n            'level': 'DEBUG',\n            'class': 'logging.StreamHandler',\n            'formatter': 'simple'\n        },\n        'root': {\n            'class': LOG_CLASS,\n            'formatter': 'verbose',\n            'filename': os.path.join(LOGGING_DIR, 'paas.log'),\n            'maxBytes': 1024 * 1024 * 10,\n            # 'backupCount': 5\n        },\n        'wb_mysql': {\n            'class': LOG_CLASS,\n            'formatter': 'verbose',\n            'filename': os.path.join(LOGGING_DIR, 'paas_mysql.log'),\n            'maxBytes': 1024 * 1024 * 10,\n            # 'backupCount': 5\n        },\n    },\n    'loggers': {\n        'django': {\n            'handlers': ['null'],\n            'level': 'ERROR',\n            'propagate': True,\n        },\n        'django.request': {\n            'handlers': ['console'],\n            'level': 'ERROR',\n            'propagate': True,\n        },\n        'root': {\n            'handlers': ['root', 'console'],\n            'level': LOGGER_LEVEL,\n            'propagate': True,\n        },\n        'django.db.backends': {\n            'handlers': ['wb_mysql'],\n            'level': 'ERROR',\n            'propagate': True,\n        },\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/conf/settings_development.py.sample",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n开发环境配置\n\"\"\" # noqa\n\n# True/False\nDEBUG = True\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'opsany_paas',\n        'USER': 'opsany',\n        'PASSWORD': '123456.coM',\n        'HOST': '192.168.0.111',\n        'PORT': '3306',\n    }\n}\n\n# domain\nPAAS_DOMAIN = '192.168.0.111:8001'\n# 跳转到本地开发使用的login服务, 仅本地开发用. 注意生产环境使用nginx反向代理不需要配置LOGIN_DOMAIN变量(删除即可)\nLOGIN_DOMAIN = '192.168.0.111:8003'\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = '192.168.0.111'\n# http/https\nHTTP_SCHEMA = 'https'\n\n# cookie 名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie有效期\nBK_COOKIE_AGE = 60 * 60 * 24\n# cookie访问域\nBK_COOKIE_DOMAIN = '192.168.0.111'\n\n# 控制台地址\nENGINE_HOST = \"http://192.168.0.111:8000\"\n# 登陆服务地址\nLOGIN_HOST = \"http://192.168.0.111:8003\"\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n\n# CSRF\nCSRF_TRUSTED_ORIGINS = [\n    'https://192.168.0.111',\n    'http://192.168.0.111',\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/conf/settings_production.py.sample",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n生产环境配置\n\"\"\" # noqa\n\n\nDEBUG = False\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'open_paas',\n        'USER': 'root',\n        'PASSWORD': '',\n        'HOST': '192.168.0.111',\n        'PORT': '3306',\n    }\n}\n\n# domain\nPAAS_DOMAIN = 'www.bking.com'\n# 注意生产环境使用nginx反向代理不需要配置LOGIN_DOMAIN变量(删除即可)\n\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = ''\nHTTP_SCHEMA = 'http'\n\n\n# cookie 名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie有效期\nBK_COOKIE_AGE = 60 * 60 * 24\n# cookie访问域\nBK_COOKIE_DOMAIN = '192.168.0.111'\n\n# 控制台地址\nENGINE_HOST = \"http://192.168.0.111:8000\"\n# 登陆服务地址\nLOGIN_HOST = \"http://192.168.0.111:8003\"\n\n# host for cc\nHOST_CC = ''\n# host for job\nHOST_JOB = ''\n# host for DATA，数据平台监控告警系统\nHOST_DATA = ''\n# host for gse\nHOST_GSE = ''\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n"
  },
  {
    "path": "paas-ce/paas/paas/conf/settings_testing.py.sample",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n测试环境配置\n\"\"\" # noqa\n\n\nDEBUG = True\n\n# use the static root 'static' in production envs\nif not DEBUG:\n    STATIC_ROOT = 'static'\n\n# 数据库配置信息\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3',\n        'NAME': 'open_paas_unittest',\n    }\n}\n\n# domain\nPAAS_DOMAIN = '192.168.0.111:8001'\n# inner domain, use consul domain,  for api\nPAAS_INNER_DOMAIN = ''\nHTTP_SCHEMA = 'http'\n\n\n# cookie 名称\nBK_COOKIE_NAME = 'bk_token'\n# cookie有效期\nBK_COOKIE_AGE = 60 * 60 * 24\n# cookie访问域\nBK_COOKIE_DOMAIN = '192.168.0.111'\n\n# 控制台地址\nENGINE_HOST = \"http://127.0.0.1:8000\"\n# 登陆服务地址\nLOGIN_HOST = \"http://127.0.0.1:8003\"\n\n# host for cc\nHOST_CC = ''\n# host for job\nHOST_JOB = ''\n# host for DATA，数据平台监控告警系统\nHOST_DATA = ''\n# host for gse\nHOST_GSE = ''\n\nSECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'\n\n# ESB Token\nESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\n\nfrom engine.models import (BkServer, ThirdServer)\n\n\n@admin.register(BkServer)\nclass BkServerAdmin(admin.ModelAdmin):\n    list_display = ('id', 'name', 's_id', 'token', 'ip_address', 'ip_port', 'category', 'is_active')\n    search_fields = ('name',)\n    list_filter = ('name', 'created_at')\n\n\n@admin.register(ThirdServer)\nclass ThirdServerAdmin(admin.ModelAdmin):\n    list_display = ('id', 'category', 'is_active')\n    search_fields = ('category',)\n    list_filter = ('category', 'created_at')\n    exclude = ('server_info', 'info')\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom enum import Enum\n\n\nclass ServerCategoryEnum(Enum):\n    TEST = \"tapp\"\n    PROD = \"app\"\n\n\nSERVER_CATEGORY_CHOICES = [\n    (ServerCategoryEnum.TEST.value, \"测试服务器\"),\n    (ServerCategoryEnum.PROD.value, \"正式服务器\"),\n]\n\n\nclass ExternalServerCategoryEnum(Enum):\n    MQ = \"rabbitmq\"\n\n\nTHIRD_SERVER_CATEGORY_CHOICES = [(ExternalServerCategoryEnum.MQ.value, \"RabbitMQ服务\"), ]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/deploy.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\napp engine 部署相关\n\n# NOTE: 异常统一在这一层处理\n\"\"\" # noqa\n\n\n\nimport json\n\nfrom django.conf import settings\n\nfrom app.constants import AppStateEnum\nfrom app.models import App, SecureInfo\nfrom app_env.models import AppEnvVar\nfrom common.log import logger\nfrom components.engine import release_app, unrelease_app\nfrom engine.models import ThirdServer\nfrom release.constants import DEPLOY_ERROR_DICT, OperateIDEnum, StatusEnum\nfrom release.models import Record, Version\n\n\ndef _get_app_env(app_code, is_with_db_info=False):\n    \"\"\"\n    envs\n\n    NOTE: 注意, envs类型默认都是字符串\n    \"\"\"\n    app = App.objects.get(code=app_code)\n    if not SecureInfo.objects.exists(app_code):\n        return {}\n\n    # add host to env\n    bk_paas_host = \"%s://%s\" % (settings.HTTP_SCHEMA, settings.PAAS_DOMAIN)\n    cc_host = \"%s://%s\" % (settings.HTTP_SCHEMA, settings.HOST_CC)\n    job_host = '%s://%s' % (settings.HTTP_SCHEMA, settings.HOST_JOB)\n    #bk_paas_inner_host = \"http://%s\" % settings.PAAS_INNER_DOMAIN\n    #bk_paas_inner_host = \"http://%s\" % settings.PAAS_INNER_DOMAIN + \":8003\"\n    bk_paas_inner_host = \"https://dev.opsany.cn\"\n    print(111111111111, settings.HTTP_SCHEMA, settings.PAAS_DOMAIN, bk_paas_host)\n    envs = {\"APP_ID\": app_code,\n            \"APP_TOKEN\": app.auth_token,\n            \"BK_PAAS_HOST\": bk_paas_host,\n            \"BK_PAAS_INNER_HOST\": bk_paas_inner_host,\n            \"BK_CC_HOST\": cc_host,\n            \"BK_JOB_HOST\": job_host,\n            }\n\n    if is_with_db_info:\n        db_info = SecureInfo.objects.get_db_info(app_code)\n        envs.update(db_info)\n\n    # 值转成字符串\n    for key, value in envs.items():\n        envs[key] = str(value)\n\n    return envs\n\n\ndef _make_record(app_code, app_old_state, operate_user, operate_id, is_success):\n    record = Record.objects.create_record(app_code=app_code,\n                                          app_old_state=app_old_state,\n                                          operate_user=operate_user,\n                                          operate_id=operate_id,\n                                          is_success=is_success)\n    return record\n\n\ndef _save_record(record, event_id=None, operate_id=None, message=None, is_tips=None, is_success=None, extra_data=None):\n    if event_id is not None:\n        record.event_id = event_id\n\n    if extra_data is not None:\n        record.extra_data = json.dumps(extra_data)\n\n    if operate_id is not None:\n        record.operate_id = operate_id\n    if message is not None:\n        record.message = message\n\n    if is_tips is not None:\n        record.is_tips = is_tips\n    if is_success is not None:\n        record.is_success = is_success\n\n    record.save()\n\n\ndef _build_relase_data(app, mode, is_saas=None, saas_settings=None):\n    \"\"\"\n    构造release_app中data字段的数据结构\n    \"\"\"\n\n    app_code = app.code\n    deploy_token = app.deploy_token\n\n    # deploy_vars\n    deploy_vars = {}\n    # 目前只有 vcs 版本管理信息\n    deploy_vars.update(SecureInfo.objects.get_vcs_info(app_code))\n\n    # envs\n    is_with_db_info = is_saas\n    envs = _get_app_env(app_code, is_with_db_info=is_with_db_info)\n\n    # get env vars from AppEnvVar\n    envs.update(AppEnvVar.objects.get_env_vars(app_code=app_code, mode=mode))\n\n    triggers = dict(is_use_celery=app.is_use_celery, is_use_celery_beat=app.is_use_celery_beat)\n    services = ThirdServer.objects.get_external_services()\n\n    data = dict(envs=envs, triggers=triggers, services=services, mode=mode,\n                deploy_token=deploy_token, deploy_vars=deploy_vars)\n\n    if is_saas is not None:\n        data[\"is_saas\"] = is_saas\n    if saas_settings is not None:\n        data[\"saas_settings\"] = saas_settings\n\n    return data\n\n\n# =============================================== start outer api for paas =============================================\n\ndef _call_release_app(app_code, app, app_old_state, to_state,\n                      operate_user, in_operate_id, to_operate_id, mode,\n                      is_tips=None, features=None, bugs=None,\n                      is_saas=None, saas_settings=None):\n    \"\"\"\n    call release app\n\n    only for mode=prod / saas => is_tips=None, features=None, bugs=None,\n    only for saas => is_saas=None, saas_settings=None\n    \"\"\"\n\n    env_str = \"测试\" if mode == 'test' else \"正式\"\n    if is_saas:\n        env_str = \"SaaS 应用上线\"\n    auth_token = app.auth_token\n\n    try:\n        # 新建一条记录\n        record = _make_record(app_code, app_old_state, operate_user, in_operate_id, StatusEnum.FAIL.value)\n\n        # 修改状态为\n        App.objects.to_state(app_code, to_state)\n\n        # 开始提测流程\n        data = _build_relase_data(app, mode=mode, is_saas=is_saas, saas_settings=saas_settings)\n        ok, event_info = release_app(app_code=app_code, mode=mode, auth_token=auth_token, data=data)\n\n        # 对release_app的参数拆包\n        event_id, error_code, error_msg = event_info\n\n        if not ok:\n            if error_code:\n                error_msg = DEPLOY_ERROR_DICT.get(str(error_code))\n            else:\n                error_msg = (\"{}部署事件提交失败！请确认 1.appengine服务正常 2.安装并注册了对应的agent服务器\"\n                             \" 3.第三方服务等正常 [{}]\").format(env_str, error_msg)\n\n            message = (\"[app:{}] {}部署事件提交失败, \"\n                       \"error_code: {}, error_msg: {}\").format(app_code, env_str, error_code, error_msg)\n            logger.info(message)\n            App.objects.to_state(app_code, app_old_state)\n\n            # 失败则实时更新状态\n            _save_record(record=record, operate_id=to_operate_id, message=message, is_success=False)\n\n            return False, None, \"{}部署事件提交失败, {}\".format(env_str, error_msg)\n\n        message = \"[app:{}] {}部署事件提交成功\".format(app_code, env_str)\n        logger.info(message)\n\n        if mode == 'test':\n            # 提测成功后  修改状态 为测试中\n            # App的状态变更迁移到查询端处理\n\n            # 操作记录, 注意, 不更新状态operate_id =>OperateIDEnum.TO_TEST, is_success => is_success\n            _save_record(record, event_id=event_id, message=message,\n                         extra_data={\"task_detail\": '', \"event_id\": event_id})\n        else:\n            Version.objects.create_version(app, bugs, features, operate_user)\n\n            # NOTE: App的状态变更迁移到查询端处理\n\n            # 记录测试环境上线操作（成功和失败均记录）\n            extra_data = record.get_extra_data()\n            try:\n                extra_data[\"task_detail\"] = ''\n                extra_data[\"event_id\"] = event_id\n            except Exception:\n                extra_data = {\"task_detail\": '', \"event_id\": event_id}\n            # 操作记录, 注意, 不更新状态operate_id =>OperateIDEnum.TO_ONLINE, is_success => is_success\n            _save_record(record, event_id=event_id, message=message,\n                         is_tips=int(is_tips), extra_data=extra_data)\n\n        return True, event_id, None\n    except Exception as e:\n        message = \"[app:{}] {}部署事件提交失败，error：{}\".format(app_code, env_str, e)\n        logger.exception(message)\n\n        App.objects.to_state(app_code, app_old_state)\n\n        _save_record(record, operate_id=to_operate_id, message=message, is_success=False)\n\n        return False, None, message\n\n\ndef app_to_test_task(app_code, app, username):\n    \"\"\"\n    提测后台任务\n    \"\"\"\n    app_old_state = app.state\n    # 修改状态为 正在提测（状态8） -> do -> success  / fail\n    ok, event_id, message = _call_release_app(app_code=app_code,\n                                              app=app,\n                                              app_old_state=app_old_state,\n                                              to_state=AppStateEnum.IN_TEST.value,\n                                              operate_user=username,\n                                              in_operate_id=OperateIDEnum.IN_TEST.value,\n                                              to_operate_id=OperateIDEnum.TO_TEST.value,\n                                              mode='test',\n                                              )\n\n    return ok, event_id, message\n\n\ndef app_to_online_task(app_code, app, username, is_tips, features, bugs):\n    \"\"\"\n    上线操作后台任务\n    \"\"\"\n    app_old_state = app.state\n    ok, event_id, message = _call_release_app(app_code=app_code,\n                                              app=app,\n                                              app_old_state=app_old_state,\n                                              to_state=AppStateEnum.IN_ONLINE.value,\n                                              operate_user=username,\n                                              in_operate_id=OperateIDEnum.IN_ONLINE.value,\n                                              to_operate_id=OperateIDEnum.TO_ONLINE.value,\n                                              mode='prod',\n                                              is_tips=is_tips, features=features, bugs=bugs,\n                                              )\n    return ok, event_id, message\n\n\ndef app_to_offline_task(app_code, auth_token, username, mode, app_old_state):\n    \"\"\"\n    下架操作后台任务\n    \"\"\"\n    try:\n        record = _make_record(app_code, app_old_state, username, OperateIDEnum.IN_OFFLINE.value, StatusEnum.FAIL.value)\n\n        # 修改app的状态为正在下架（状态10）\n        App.objects.to_state(app_code, AppStateEnum.IN_OFFLINE.value)\n\n        # NOTE: 可能存在多个event_id\n        ok, event_ids = unrelease_app(app_code, auth_token, mode)\n        if not ok:\n            message = \"[app:{}] {}\".format(app_code, \"下架事件提交失败\")\n            logger.info(message)\n            # 失败, 改为原来的状态\n            App.objects.to_state(app_code, app_old_state)\n\n            _save_record(record=record, operate_id=OperateIDEnum.TO_OFFLINE.value, message=message, is_success=False)\n\n            return False, None\n\n        message = \"[app:{}] {}\".format(app_code, \"下架事件提交成功\")\n        logger.info(message)\n        # 下架成功后修改app状态为下架\n        # App的状态变更迁移到查询端处理\n\n        # 操作记录, 注意, 不更新状态operate_id =>OperateIDEnum.TO_OFFLINE, is_success => is_success\n        # 更新操作记录, 记录第一个event_id, 实际两个都放在 extra_data里面, mode和app_old_state在后面要用到\n\n        extra_data = {\"mode\": mode, \"task_detail\": '', \"event_ids\": event_ids}\n        _save_record(record, event_id=event_ids[0], message=message, extra_data=extra_data)\n\n        return True, event_ids[0]\n    except Exception as e:\n        logger.info(\"[app:%s] %s\", app_code, \"下架事件提交失败\")\n        message = \"[app:{}] 下架任务失败 error：{}\".format(app_code, e)\n        logger.exception(message)\n\n        App.objects.to_state(app_code, app_old_state)\n\n        _save_record(record, operate_id=OperateIDEnum.TO_OFFLINE.value, message=message, is_success=False)\n\n        return False, None\n\n#########################\n#  saas app deployment  #\n#########################\n\n\ndef saas_app_to_online_task(saas_app_version, username):\n    \"\"\"\n    上线操作后台任务\n    \"\"\"\n    saas_app = saas_app_version.saas_app\n    app = saas_app.app\n    app_code = app.code\n\n    # FIXME: should get those info from saas app.yml\n    bugs = ''\n    features = ''\n    is_tips = '1'\n\n    saas_settings = saas_app_version.gen_saas_settings_for_deploy()\n    app_old_state = app.state\n\n    ok, event_id, message = _call_release_app(app_code=app_code,\n                                              app=app,\n                                              app_old_state=app_old_state,\n                                              to_state=AppStateEnum.IN_ONLINE.value,\n                                              operate_user=username,\n                                              in_operate_id=OperateIDEnum.IN_ONLINE.value,\n                                              to_operate_id=OperateIDEnum.TO_ONLINE.value,\n                                              mode='prod',\n                                              is_tips=is_tips, features=features, bugs=bugs,\n                                              is_saas=True,\n                                              saas_settings=saas_settings,\n                                              )\n    return ok, event_id, message\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django import forms\n\nfrom engine.constants import SERVER_CATEGORY_CHOICES\nfrom engine.models import THIRD_SERVER_CATEGORY_CHOICES\n\n\nclass ServerForm(forms.Form):\n    server_id = forms.IntegerField(required=False)\n    server_ip = forms.GenericIPAddressField(required=True,\n                                            error_messages={\n                                                \"required\": \"服务器 IP 地址不能为空\",\n                                                \"invalid\": \"服务器IP格式不正确\"\n                                            })\n    server_port = forms.IntegerField(min_value=1, error_messages={\"required\": \"Agent端口不能为空\", \"invalid\": \"Agent端口必须为整数\"})\n    app_port = forms.IntegerField(min_value=1, error_messages={\"required\": \"App服务端口不能为空\", \"invalid\": \"App服务端口必须为整数\"})\n    server_cate = forms.ChoiceField(choices=SERVER_CATEGORY_CHOICES,\n                                    error_messages={\n                                        \"required\": \"服务器类别不能为空\",\n                                        \"invalid_choice\": \"服务器类别不正确\"\n                                    })\n\n\nclass ExternalServerForm(forms.Form):\n    server_id = forms.IntegerField(required=False)\n    server_ip = forms.GenericIPAddressField(required=True,\n                                            error_messages={\n                                                \"required\": \"服务器 IP 地址不能为空\",\n                                                \"invalid\": \"服务器IP格式不正确\"\n                                            })\n    server_port = forms.IntegerField(min_value=1, error_messages={\"required\": \"端口不能为空\", \"invalid\": \"端口必须为整数\"})\n    server_cate = forms.ChoiceField(choices=THIRD_SERVER_CATEGORY_CHOICES,\n                                    error_messages={\n                                        \"required\": \"服务器类别不能为空\",\n                                        \"invalid_choice\": \"\"\n                                    })\n    username = forms.CharField(error_messages={\"required\": \"用户名不能为空\"})\n    password = forms.CharField(error_messages={\"required\": \"密码不能为空\"})\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\nfrom collections import defaultdict\n\nfrom django.db import models\n\nfrom engine.constants import ServerCategoryEnum, ExternalServerCategoryEnum\n\n\nclass BkServerManager(models.Manager):\n    def check_test_app_deployable(self):\n        return self.filter(category=ServerCategoryEnum.TEST.value, is_active=True).exists()\n\n    def check_prod_app_deployable(self):\n        return self.filter(category=ServerCategoryEnum.PROD.value, is_active=True).exists()\n\n    def check_saas_app_deployable(self):\n        return self.filter(category=ServerCategoryEnum.PROD.value, is_active=True).exists()\n\n    def update_or_create_server(self, server_id, server_ip, server_port,\n                                app_port, category):\n        if server_id:\n            self.filter(id=server_id).update(ip_address=server_ip,\n                                             ip_port=server_port,\n                                             app_port=app_port,\n                                             category=category)\n            return {}\n        server = self.create(\n            ip_address=server_ip,\n            ip_port=server_port,\n            app_port=app_port,\n            category=category,\n            is_active=False)\n\n        return {\n            'server_id': server.id,\n            's_id': str(server.s_id),\n            'token': str(server.token)\n        }\n\n    def is_server_exists(self, server_id, server_ip, server_port):\n        if server_id:\n            query = self.exclude(id=server_id)\n        else:\n            query = self.all()\n        server_count = query.filter(ip_address=server_ip, ip_port=server_port).count()\n        if server_count > 0:\n            return True\n        return False\n\n    def get_active_server_ips(self):\n        \"\"\"获取已激活机器的ip列表\n        \"\"\"\n        active_servers = self.filter(is_active=True)\n        active_server_ips = active_servers.values_list('ip_address', flat=True)\n        return list(set(active_server_ips))\n\n    def category_has_active_server(self, category, server_id):\n        active_servers = self.exclude(id=server_id).filter(category=category, is_active=True)\n        if active_servers.exists():\n            return active_servers[0]\n        return None\n\n\nclass ExternalServerManager(models.Manager):\n    def is_server_exists(self,  server_id, server_ip, server_port):\n        if server_id:\n            query = self.exclude(id=server_id)\n        else:\n            query = self.all()\n        # IP、端口不能重复\n        for _s in query:\n            if _s.ip_address == server_ip and _s.ip_port == server_port:\n                return True\n        return False\n\n    def update_or_create_server(self, server_id, server_ip, server_port,\n                                username, password, category):\n        # 服务器基本信息以json串的形式存储\n        server_info = {\n            'ip_address': server_ip,\n            'ip_port': server_port,\n            'username': username,\n            'password': password,\n        }\n        server_info = json.dumps(server_info)\n        # 编辑信息\n        if server_id:\n            self.filter(id=server_id).update(server_info=server_info, category=category)\n            return {}\n\n        server = self.create(server_info=server_info, category=category, is_active=False)\n        return {'server_id': server.id}\n\n    def is_rabbitmq_active(self):\n        \"\"\"判断rabbitmq是否注册激活\n        \"\"\"\n        return self.filter(category=ExternalServerCategoryEnum.MQ.value, is_active=True).exists()\n\n    def category_has_active_server(self, category, server_id):\n        active_servers = self.exclude(id=server_id).filter(category=category, is_active=True)\n        if active_servers.exists():\n            return active_servers[0]\n        return None\n\n    def get_external_services(self):\n        \"\"\"获取所有注册的服务\n\n        currently, only MQ\n        \"\"\"\n        services = defaultdict(list)\n        third_server_list = self.filter(category=ExternalServerCategoryEnum.MQ.value, is_active=True).all()\n        for server in third_server_list:\n            services[server.category].append(server.id)\n        return services\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\nimport uuid\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='BkApp',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=20)),\n                ('logo', models.CharField(max_length=100)),\n                ('app_code', models.CharField(unique=True, max_length=100)),\n                ('app_lang', models.CharField(max_length=100)),\n                ('app_type', models.CharField(max_length=100)),\n                ('is_active', models.BooleanField(default=True)),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_apps',\n                'verbose_name': 'app info',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkAppEnv',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('mode', models.CharField(max_length=200)),\n                ('key', models.CharField(max_length=200)),\n                ('value', models.CharField(max_length=200)),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('bk_app', models.ForeignKey(on_delete=models.CASCADE, to='engine.BkApp')),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_app_envs',\n                'verbose_name': 'app env',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkAppEvent',\n            fields=[\n                ('id', models.UUIDField(default=uuid.uuid4, serialize=False, editable=False, primary_key=True)),\n                ('event_type', models.CharField(max_length=200)),\n                ('status', models.CharField(max_length=200)),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('bk_app', models.ForeignKey(on_delete=models.CASCADE, to='engine.BkApp')),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_app_events',\n                'verbose_name': 'app event',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkAppEventLog',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('log', models.TextField()),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('bk_app_event', models.ForeignKey(on_delete=models.CASCADE, to='engine.BkAppEvent')),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_app_event_logs',\n                'verbose_name': 'app event log',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkAppToken',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('key', models.UUIDField(default=uuid.uuid4, editable=False)),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('bk_app', models.ForeignKey(on_delete=models.CASCADE, to='engine.BkApp')),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_app_tokens',\n                'verbose_name': 'app token',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkCluster',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=20)),\n                ('is_active', models.BooleanField(default=True)),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_clusters',\n                'verbose_name': 'cluster info',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkHostingShip',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('is_active', models.BooleanField(default=True)),\n                ('is_master', models.BooleanField(default=True)),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('bk_app', models.ForeignKey(on_delete=models.CASCADE, to='engine.BkApp')),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_hosting_ships',\n                'verbose_name': 'router map',\n            },\n        ),\n        migrations.CreateModel(\n            name='BkServer',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=20, verbose_name='\\u540d\\u79f0')),\n                ('s_id', models.UUIDField(default=uuid.uuid4, verbose_name='\\u670d\\u52a1ID', editable=False)),\n                ('token', models.UUIDField(default=uuid.uuid4, editable=False)),\n                ('ip_address', models.CharField(max_length=36, verbose_name='IP\\u5730\\u5740')),\n                ('ip_port', models.CharField(default=b'4245', max_length=36, verbose_name='\\u7aef\\u53e3')),\n                ('category', models.CharField(default=b'tapp', max_length=36, verbose_name='\\u5206\\u7c7b', choices=[(b'tapp', b'App\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\\xe7\\x8e\\xaf\\xe5\\xa2\\x83'), (b'app', b'App\\xe6\\xad\\xa3\\xe5\\xbc\\x8f\\xe7\\x8e\\xaf\\xe5\\xa2\\x83')])),\n                ('info', models.CharField(max_length=200, verbose_name='\\u5907\\u6ce8')),\n                ('is_active', models.BooleanField(default=True, verbose_name='\\u542f\\u7528')),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('apps', models.ManyToManyField(to='engine.BkApp', through='engine.BkHostingShip', blank=True)),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_servers',\n                'verbose_name': '\\u670d\\u52a1\\u5668\\u4fe1\\u606f',\n                'verbose_name_plural': '\\u670d\\u52a1\\u5668\\u4fe1\\u606f',\n            },\n        ),\n        migrations.AddField(\n            model_name='bkhostingship',\n            name='bk_server',\n            field=models.ForeignKey(on_delete=models.CASCADE, to='engine.BkServer'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/migrations/0002_auto_20160426_0959.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('engine', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='bkserver',\n            name='is_active',\n            field=models.BooleanField(default=False, verbose_name='\\u542f\\u7528'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/migrations/0003_auto_20160629_1545.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('engine', '0002_auto_20160426_0959'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='bkserver',\n            name='app_port',\n            field=models.CharField(default=b'8085', max_length=36, verbose_name='App\\u7aef\\u53e3'),\n        ),\n        migrations.AlterField(\n            model_name='bkserver',\n            name='ip_port',\n            field=models.CharField(default=b'4245', max_length=36, verbose_name='Agent\\u7aef\\u53e3'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/migrations/0004_auto_20160912_1741.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('engine', '0003_auto_20160629_1545'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='bkserver',\n            name='mac',\n            field=models.CharField(default=b'', max_length=36, verbose_name='MAC\\u5730\\u5740'),\n        ),\n        migrations.AlterField(\n            model_name='bkserver',\n            name='category',\n            field=models.CharField(default=b'tapp', max_length=36, verbose_name='\\u5206\\u7c7b', choices=[(b'tapp', b'\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\\xe6\\x9c\\x8d\\xe5\\x8a\\xa1\\xe5\\x99\\xa8'), (b'app', b'\\xe6\\xad\\xa3\\xe5\\xbc\\x8f\\xe6\\x9c\\x8d\\xe5\\x8a\\xa1\\xe5\\x99\\xa8')]),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/migrations/0005_auto_20160929_1109.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('engine', '0004_auto_20160912_1741'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='ThirdServer',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('category', models.CharField(default=b'rabbitmq', max_length=36, verbose_name='\\u5206\\u7c7b', choices=[(b'rabbitmq', 'RabbitMQ\\u670d\\u52a1')])),\n                ('server_info', models.TextField(verbose_name='\\u670d\\u52a1\\u5668\\u4fe1\\u606f')),\n                ('info', models.CharField(max_length=200, verbose_name='\\u5907\\u6ce8')),\n                ('is_active', models.BooleanField(default=False, verbose_name='\\u542f\\u7528')),\n                ('created_at', models.DateTimeField(auto_now_add=True)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n            ],\n            options={\n                'ordering': ('created_at',),\n                'db_table': 'engine_third_servers',\n                'verbose_name': '\\u7b2c\\u4e09\\u65b9\\u670d\\u52a1\\u5668\\u4fe1\\u606f',\n                'verbose_name_plural': '\\u7b2c\\u4e09\\u65b9\\u670d\\u52a1\\u5668\\u4fe1\\u606f',\n            },\n        ),\n        migrations.AlterField(\n            model_name='bkserver',\n            name='category',\n            field=models.CharField(default=b'tapp', max_length=36, verbose_name='\\u5206\\u7c7b', choices=[(b'tapp', '\\u6d4b\\u8bd5\\u670d\\u52a1\\u5668'), (b'app', '\\u6b63\\u5f0f\\u670d\\u52a1\\u5668')]),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\nimport uuid\n\nfrom django.db import models\n\nfrom common.log import logger\nfrom engine.constants import (SERVER_CATEGORY_CHOICES,\n                              THIRD_SERVER_CATEGORY_CHOICES,\n                              ServerCategoryEnum, ExternalServerCategoryEnum)\nfrom engine.manager import BkServerManager, ExternalServerManager\n\n\nclass BkCluster(models.Model):\n\n    name = models.CharField(max_length=20)\n    is_active = models.BooleanField(default=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        db_table = \"engine_clusters\"\n        verbose_name = \"cluster info\"\n        ordering = ('created_at',)\n\n\nclass BkApp(models.Model):\n\n    name = models.CharField(max_length=20)\n    logo = models.CharField(max_length=100)\n    app_code = models.CharField(max_length=100, unique=True)\n    app_lang = models.CharField(max_length=100)\n    app_type = models.CharField(max_length=100)\n    is_active = models.BooleanField(default=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    @property\n    def token(self):\n        return self.bkapptoken_set.first().key\n\n    @property\n    def app_envs(self):\n        app_envs = {\"test\": {}, \"prod\": {}}\n        for app_env in self.bkappenv_set.all():\n            mode, key, value = app_env.mode, app_env.key, app_env.value\n            app_envs[mode][key] = value\n        return app_envs\n\n    def __unicode__(self):\n        return self.app_code\n\n    class Meta:\n        db_table = \"engine_apps\"\n        verbose_name = \"app info\"\n        ordering = ('created_at',)\n\n\nclass BkAppToken(models.Model):\n\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    key = models.UUIDField(default=uuid.uuid4, editable=False)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    def __unicode__(self):\n        return self.key\n\n    class Meta:\n        db_table = \"engine_app_tokens\"\n        verbose_name = \"app token\"\n        ordering = ('created_at',)\n\n\nclass BkServer(models.Model):\n    name = models.CharField('名称', max_length=20)\n    s_id = models.UUIDField('服务ID', default=uuid.uuid4, editable=False)\n    token = models.UUIDField(default=uuid.uuid4, editable=False)\n    ip_address = models.CharField('IP地址', max_length=36)\n    ip_port = models.CharField('Agent端口', max_length=36, default='4245')\n    app_port = models.CharField('App端口', max_length=36, default='8085')\n    category = models.CharField('分类', max_length=36, choices=SERVER_CATEGORY_CHOICES,\n                                default=ServerCategoryEnum.TEST.value)\n    info = models.CharField('备注', max_length=200)\n    is_active = models.BooleanField('启用', default=False)\n    apps = models.ManyToManyField(BkApp, blank=True, through='BkHostingShip')\n    mac = models.CharField('MAC地址', max_length=36, default='')\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    objects = BkServerManager()\n\n    class Meta:\n        db_table = \"engine_servers\"\n        verbose_name = \"服务器信息\"\n        verbose_name_plural = \"服务器信息\"\n        ordering = ('created_at',)\n\n\nclass ThirdServer(models.Model):\n    category = models.CharField('分类', max_length=36, choices=THIRD_SERVER_CATEGORY_CHOICES,\n                                default=ExternalServerCategoryEnum.MQ.value)\n    server_info = models.TextField(\"服务器信息\")\n    info = models.CharField('备注', max_length=200)\n    is_active = models.BooleanField('启用', default=False)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    objects = ExternalServerManager()\n\n    @property\n    def server_data(self):\n        try:\n            return json.loads(self.server_info)\n        except Exception:\n            logger.exception(\"获取服务器信息异常: server_info=%s\", self.server_info)\n            return {}\n\n    @property\n    def ip_address(self):\n        try:\n            server_info = json.loads(self.server_info)\n            return server_info.get('ip_address', '')\n        except Exception:\n            logger.exception(\"获取服务器IP信息异常: server_info=%s\", self.server_info)\n            return ''\n\n    @property\n    def ip_port(self):\n        try:\n            server_info = json.loads(self.server_info)\n            return server_info.get('ip_port', '')\n        except Exception:\n            logger.exception(\"获取服务器端口信息异常: server_info=%s\", self.server_info)\n            return ''\n\n    class Meta:\n        db_table = \"engine_third_servers\"\n        verbose_name = \"第三方服务器信息\"\n        verbose_name_plural = \"第三方服务器信息\"\n        ordering = ('created_at',)\n\n\nclass BkHostingShip(models.Model):\n\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    bk_server = models.ForeignKey(BkServer, on_delete=models.CASCADE)\n    is_active = models.BooleanField(default=True)\n    is_master = models.BooleanField(default=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_hosting_ships\"\n        verbose_name = \"router map\"\n        ordering = ('created_at',)\n\n    def __str__(self):\n        return \"{0}-{1}-{2}\".format(self.bk_server.ip_address, self.bk_server.ip_port, self.bk_server.is_active)\n\n\nclass BkAppEnv(models.Model):\n\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    mode = models.CharField(max_length=200)\n    key = models.CharField(max_length=200)\n    value = models.CharField(max_length=200)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_app_envs\"\n        verbose_name = \"app env\"\n        ordering = ('created_at',)\n\n\nclass BkAppEvent(models.Model):\n\n    id = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True)\n    bk_app = models.ForeignKey(BkApp, on_delete=models.CASCADE)\n    event_type = models.CharField(max_length=200)\n    status = models.CharField(max_length=200)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    @property\n    def logs(self):\n        logs = \"\"\n        for event_log in self.bkappeventlog_set.all():\n            logs += event_log.log\n        return logs\n\n    class Meta:\n        db_table = \"engine_app_events\"\n        verbose_name = \"app event\"\n        ordering = ('created_at',)\n\n\nclass BkAppEventLog(models.Model):\n\n    bk_app_event = models.ForeignKey(BkAppEvent, on_delete=models.CASCADE)\n    log = models.TextField()\n\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        db_table = \"engine_app_event_logs\"\n        verbose_name = \"app event log\"\n        ordering = ('created_at',)\n\n    def __str__(self):\n        return \"{0}-{1}\".format(self.id, self.log)\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.test import TestCase\n\nfrom engine.constants import ServerCategoryEnum, ExternalServerCategoryEnum\nfrom engine.forms import ServerForm, ExternalServerForm\n\n\nclass ServerFormTestCase(TestCase):\n\n    def _gen_form(self, **kwargs):\n        data = {\n            'server_ip': \"1.1.1.1\",\n            \"server_port\": \"4245\",\n            \"app_port\": \"8085\",\n            \"server_cate\": ServerCategoryEnum.TEST.value,\n        }\n        data.update(kwargs)\n\n        return ServerForm(data)\n\n    def test_form_invalid(self):\n\n        form = self._gen_form(server_ip='a.b.c.d')\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(server_port=-1)\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(app_port=-1)\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(server_cate=None)\n        self.assertFalse(form.is_valid())\n\n    def test_form_valid(self):\n        form = self._gen_form()\n        self.assertTrue(form.is_valid())\n\n\nclass ExternalServerFormTestCase(TestCase):\n\n    def _gen_form(self, **kwargs):\n        data = {\n            \"server_ip\": \"1.1.1.1\",\n            \"server_port\": \"4245\",\n            \"server_cate\": ExternalServerCategoryEnum.MQ.value,\n            \"username\": \"test\",\n            \"password\": \"12345\"\n        }\n        data.update(kwargs)\n\n        return ExternalServerForm(data)\n\n    def test_form_invalid(self):\n\n        form = self._gen_form(server_ip='a.b.c.d')\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(server_port=-1)\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(username=\"\")\n        self.assertFalse(form.is_valid())\n\n        form = self._gen_form(password=\"\")\n        self.assertFalse(form.is_valid())\n\n    def test_form_valid(self):\n        form = self._gen_form()\n        self.assertTrue(form.is_valid())\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import include, path\n\nfrom engine import views\n\nurlpatterns = [\n    # 应用服务器信息\n    path('server/', include([\n        path('', views.ServerView.as_view(), name=\"engine_server\"),\n        path('<int:server_id>/', views.ServerDetailView.as_view(), name=\"engine_server_detail\"),\n\n        path('active/', views.ActivateServerView.as_view(), name='active_server'),\n        path('refresh/', views.RefreshServerView.as_view(), name='refresh_server'),\n    ])),\n\n    # 第三方服务信息third_servers\n    path('external_server/', include([\n        path('', views.ExternalServerView.as_view(), name=\"external_server\"),\n        path('<int:server_id>/', views.ExternalServerDetailView.as_view(),\n            name=\"external_server_detail\"),\n\n        path('active/', views.ActivateExternalServerView.as_view(), name='active_third_server'),\n        path('refresh/', views.RefreshExternalServerView.as_view(), name='refresh_third_server'),\n    ])),\n\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/engine/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.views.generic import View\n\nfrom common.exceptions import BadRequestException\nfrom common.log import logger\nfrom common.mixins.base import SuperuserRequiredMixin\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.utils import first_error_message\nfrom common.views.mako import MakoTemplateView\nfrom components.engine import activate_agent, activate_service\nfrom engine.forms import ExternalServerForm, ServerForm\nfrom engine.models import THIRD_SERVER_CATEGORY_CHOICES, BkServer, ThirdServer\n\n\nclass ServerView(SuperuserRequiredMixin, MakoTemplateView):\n    \"\"\"AppServer信息页面\n    \"\"\"\n    template_name = 'engine/server.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(ServerView, self).get_context_data(**kwargs)\n        context.update({\n            'servers': BkServer.objects.all()\n        })\n        return context\n\n    def post(self, request):\n        \"\"\"添加/编辑AppServer信息\n        \"\"\"\n        form = ServerForm(request.POST)\n        if not form.is_valid():\n            message = first_error_message(form)\n            raise BadRequestException(message)\n\n        server_id = form.cleaned_data[\"server_id\"]\n        server_ip = form.cleaned_data[\"server_ip\"]\n        server_port = form.cleaned_data[\"server_port\"]\n        app_port = form.cleaned_data[\"app_port\"]\n        server_cate = form.cleaned_data[\"server_cate\"]\n\n        # 验证 ip & port 是否重复\n        if BkServer.objects.is_server_exists(server_id, server_ip, server_port):\n            message = \"IP为[{ip}], 端口为 [{port}] 的服务器已经存在\".format(ip=server_ip, port=server_port)\n            return FailJsonResponse(message)\n\n        # 编辑信息\n        try:\n            data = BkServer.objects.update_or_create_server(server_id, server_ip, server_port,\n                                                            app_port, server_cate)\n            return OKJsonResponse(\"保存成功\", data=data)\n        except Exception as e:\n            logger.exception(\"保存应用服务器信息异常:%s\", e)\n            return FailJsonResponse(\"保存出错\", data={})\n\n\nclass ServerDetailView(SuperuserRequiredMixin, View):\n    def delete(self, request, server_id):\n        \"\"\"删除AppServer信息\n        \"\"\"\n        if not server_id:\n            raise BadRequestException(\"请选择要删除的服务器\")\n\n        try:\n            BkServer.objects.filter(id=server_id).delete()\n        except Exception:\n            logger.exception(\"删除服务器[id:%s]失败\", server_id)\n            return FailJsonResponse(\"删除服务器失败\")\n        return OKJsonResponse(\"删除成功\")\n\n\nclass ActivateServerView(SuperuserRequiredMixin, View):\n    \"\"\"激活服务器\n    \"\"\"\n    def post(self, request):\n        server_id = request.POST.get('server_id', '')\n        try:\n            server = BkServer.objects.get(id=server_id)\n        except Exception:\n            logger.exception(\"服务器信息[id:%s]不存在\", server_id)\n            return FailJsonResponse(\"服务器信息不存在,请重新添加\")\n\n        if server.is_active:\n            return OKJsonResponse(\"服务器已激活\")\n\n        # V1 版本 判断 测试环境/正式环境 分别只能激活一台服务器\n        active_server = BkServer.objects.category_has_active_server(server.category, server_id)\n        if active_server:\n            message = \"已经有一台{} [IP:{}, 端口:{}] 被激活<br><br>不能再激活其他{}\".format(\n                active_server.get_category_display(),\n                active_server.ip_address,\n                active_server.ip_port,\n                active_server.get_category_display()\n            )\n            return FailJsonResponse(message)\n\n        ok, message = activate_agent(server_id)\n        if not ok:\n            return FailJsonResponse(\"服务器激活失败: {}\".format(message))\n\n        return OKJsonResponse(\"服务器已激活\")\n\n\nclass RefreshServerView(SuperuserRequiredMixin, View):\n    \"\"\"刷新agent服务器状态\n    \"\"\"\n    def post(self, request):\n        server_id = request.POST.get('server_id', '')\n        try:\n            BkServer.objects.get(id=server_id)\n        except Exception:\n            logger.exception(\"服务器信息[id:%s]不存在\", server_id)\n            return FailJsonResponse(\"服务器信息不存在,请重新添加\")\n\n        ok, message = activate_agent(server_id)\n        if not ok:\n            return FailJsonResponse(\"服务器激活失败: {}\".format(message))\n\n        return OKJsonResponse(\"刷新成功\")\n\n\nclass ExternalServerView(SuperuserRequiredMixin, MakoTemplateView):\n    \"\"\"第三方信息页面\n    \"\"\"\n    template_name = 'engine/external_server.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(ExternalServerView, self).get_context_data(**kwargs)\n        servers = ThirdServer.objects.all()\n\n        context.update({'servers': servers, 'third_cates': THIRD_SERVER_CATEGORY_CHOICES})\n        return context\n\n    def post(self, request):\n        \"\"\"添加/编辑第三方服务信息\n        \"\"\"\n        form = ExternalServerForm(request.POST)\n        if not form.is_valid():\n            message = first_error_message(form)\n            raise BadRequestException(message)\n\n        server_id = form.cleaned_data[\"server_id\"]\n        server_ip = form.cleaned_data[\"server_ip\"]\n        server_port = form.cleaned_data[\"server_port\"]\n        server_cate = form.cleaned_data[\"server_cate\"]\n        username = form.cleaned_data[\"username\"]\n        password = form.cleaned_data[\"password\"]\n\n        if ThirdServer.objects.is_server_exists(server_id, server_ip, server_port):\n            message = \"IP为[{ip}], 端口为 [{port}] 的服务器已经存在\".format(ip=server_ip, port=server_port)\n            return FailJsonResponse(message)\n\n        try:\n            data = ThirdServer.objects.update_or_create_server(server_id, server_ip, server_port,\n                                                               username, password, server_cate)\n            return OKJsonResponse(\"保存成功\", data=data)\n        except Exception as e:\n            logger.exception(\"保存服务信息异常:%s\", e)\n            return FailJsonResponse(\"保存出错\", data={})\n\n\nclass ExternalServerDetailView(SuperuserRequiredMixin, View):\n    def delete(self, request, server_id):\n        \"\"\"删除第三方服务\n        \"\"\"\n        if not server_id:\n            raise BadRequestException('请选择要删除的服务')\n\n        try:\n            ThirdServer.objects.filter(id=server_id).delete()\n        except Exception:\n            logger.exception(\"删除服务[id:%s]失败\", server_id)\n            return FailJsonResponse(\"删除服务失败\")\n        return OKJsonResponse(\"删除成功\")\n\n\nclass ActivateExternalServerView(SuperuserRequiredMixin, View):\n    \"\"\"激活第三方服务\n    \"\"\"\n    def post(self, request):\n        server_id = request.POST.get('server_id', '')\n        try:\n            server = ThirdServer.objects.get(id=server_id)\n        except Exception:\n            logger.exception(\"服务信息[id:%s]不存在\", server_id)\n            return FailJsonResponse(\"服务信息不存在,请重新添加\")\n\n        if server.is_active:\n            return FailJsonResponse(\"服务已激活\")\n\n        # V1 版本 判断只能激活一台服务器\n        active_server = ThirdServer.objects.category_has_active_server(server.category, server_id)\n        if active_server:\n            message = \"已经有一台 {} 服务被激活<br><br>不能再激活其他 {} 服务\".format(\n                active_server.get_category_display(), active_server.get_category_display()\n            )\n            return FailJsonResponse(message)\n\n        ok, message = activate_service(server.category, server_id)\n        if not ok:\n            return FailJsonResponse(\"服务激活失败: {}\".format(message))\n\n        return OKJsonResponse(\"服务已激活\")\n\n\nclass RefreshExternalServerView(SuperuserRequiredMixin, View):\n    \"\"\"刷新agent服务器状态\n    \"\"\"\n    def post(self, request):\n        server_id = request.POST.get('server_id', '')\n        try:\n            server = ThirdServer.objects.get(id=server_id)\n        except Exception:\n            logger.exception(\"服务器信息[id:%s]不存在\", server_id)\n            return FailJsonResponse(\"服务器信息不存在,请重新添加\")\n\n        ok, message = activate_service(server.category, server_id)\n        if not ok:\n            return FailJsonResponse(\"服务刷新失败: {}\".format(message))\n\n        return OKJsonResponse(\"服务刷新成功\")\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/__init__.py",
    "content": "# -*- coding: utf-8 -*-\r\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/api_views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.views.generic import View\nfrom django.http import Http404\nfrom django.db.models import Q\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ComponentAPIDoc, ESBChannel, ComponentSystem, FeedbackForComponentDocs\nfrom esb.common.django_utils import JsonResponse\nfrom .utils import get_system_category\n\n\nclass BaseApiCls(View):\n    pass\n\n\nclass AllApi(BaseApiCls):\n\n    def get(self, request):\n        # 获取接口以及对应的说明\n        filter_val = request.GET.get('keyword')\n\n        if filter_val:\n            all_comp_info = ESBChannel.objects.filter(is_hidden=False)\\\n                .filter(Q(component_name__icontains=filter_val) | Q(name__icontains=filter_val))\\\n                .order_by('component_system_id')\n        else:\n            all_comp_info = ESBChannel.objects.filter(is_hidden=False)\\\n                .order_by('component_system_id')\n        all_comp_info = [\n            {\n                'id': api.id,\n                'name': api.component_name,\n                'label': api.name_display,\n                'system_id': api.component_system_id,\n            }\n            for api in all_comp_info\n        ]\n        # 通过system_id获取系统信息\n        system_ids = [api['system_id'] for api in all_comp_info]\n        all_system_info = ComponentSystem.objects.filter(id__in=system_ids).values('id', 'name', 'label')\n        all_system_info = dict([(system['id'], system) for system in list(all_system_info)])\n        # 组装参数\n        for comp_info in all_comp_info:\n            system_info = all_system_info.get(comp_info['system_id'], {})\n            comp_info.update({\n                'system_name': system_info.get('name', ''),\n                'system_label': system_info.get('label', ''),\n            })\n        all_comp_info = all_comp_info[:30]\n        return JsonResponse(list(all_comp_info))\n\n\nclass GetApisBySystem(BaseApiCls):\n\n    def get(self, request, system_name):\n        \"\"\"查询指定系统下的apis信息\"\"\"\n        # 获取当前系统的信息\n        try:\n            system_info = ComponentSystem.objects.get(name=system_name)\n        except Exception:\n            raise Http404\n        api_info_by_system = ESBChannel.objects.filter(component_system_id=system_info.id, is_hidden=False)\\\n            .order_by('component_name')\n        api_info_by_system = [\n            {\n                'id': api.id,\n                'system_id': api.component_system_id,\n                'name': api.component_name,\n                'label': api.name_display,\n                'path': api.path,\n                'type': api.type,\n            }\n            for api in api_info_by_system\n        ]\n        return JsonResponse({\n            'system_summary': system_info.remark_display or _('暂无系统简介'),\n            'api_info_by_system': list(api_info_by_system),\n        })\n\n\nclass GetApiDocByApiId(BaseApiCls):\n\n    def get(self, request, system_name, api_id):\n        try:\n            component = ESBChannel.objects.get(id=api_id)\n            api = ComponentAPIDoc.objects.get(component_id=component.id)\n            doc_html = api.doc_html_display\n        except Exception:\n            doc_html = ''\n        return JsonResponse({\n            'doc_html': doc_html\n        })\n\n\nclass SubmitTheAdvice(BaseApiCls):\n\n    def post(self, request):\n        data = dict(list(request.POST.items()))\n        FeedbackForComponentDocs(\n            operator=request.user.username,\n            board='',\n            component_id=data['api_id'],\n            content=data.get('content', _(\"满足需求\")),\n        ).save()\n        return JsonResponse({'result': True})\n\n\nclass CheckComponentExist(BaseApiCls):\n\n    def get(self, request):\n        data = dict(list(request.GET.items()))\n        try:\n            system_obj = ComponentSystem.objects.get(name=data['system'])\n        except Exception:\n            return JsonResponse({'result': False})\n        result = ESBChannel.objects.filter(component_system=system_obj, component_name=data['component']).exists()\n        return JsonResponse({'result': result})\n\n    def post(self, request):\n        return JsonResponse({'result': True})\n\n\nclass GetSystemDocCategory(BaseApiCls):\n\n    def get(self, request):\n        return JsonResponse(get_system_category())\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/templates/api_docs/base.html",
    "content": "{% extends \"mainsite/base.html\" %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/templates/api_docs/index.html",
    "content": "{% extends \"api_docs/base.html\" %}\n{% load i18n %}\n\n{% block header %}\n<link rel=\"stylesheet\" href=\"{{ STATIC_URL  }}esb/api_docs/css/search.{{ CSS_SUFFIX }}\">\n    <style type=\"text/css\">\n        .description ul{\n            padding-top: 25px;\n        }\n        .description ul li{\n            font-size: 0;\n            margin-bottom: 26px;\n        }\n        .description ul li a:hover{\n            color: #57a3f1;\n        }\n        .card-img {\n            position: absolute;\n            bottom: 0;\n            right: 10px;\n            z-index: -1;\n        }\n        .card-box {\n            padding-bottom: 15px;\n        }\n        .card-box .a-card {\n            margin-top: 20px; \n        }\n        .filter-input-style {\n            border-radius: 4px;\n            height: 35px;\n        }\n        /*kendo ui style*/\n        .k-state-hover, .k-state-hover:hover {\n            color: #fff;\n            background-color: #ccc;\n            background-image: none;\n            border-color: #dddddd;\n        }\n        .k-list>.k-state-focused, .k-listview>.k-state-focused,\n        .k-state-focused, td.k-state-focused {\n            -webkit-box-shadow: inset 0 0 0 1px #8ebc00;\n            box-shadow: inset 0 0 0 1px #dddddd;\n        }\n        .k-dropdown-wrap.k-state-default{\n            background-color: #dddddd;\n            background-image: none;\n            border-color: #dddddd;\n            border-radius: 4px;\n        }\n        .h3, h3 {\n            font-size: 15px;\n            margin-top: 10px;\n            margin-bottom: 5px;\n        }\n        p {\n            margin: 0 0 5px;\n        }\n        .span-style {\n            color: #BDB0B0;\n        }\n        .k-list>.k-state-selected{\n            background-color: #e1ddd8;\n        }\n        .k-list a{\n            color: #3982C4;\n            font-weight: normal;\n        }\n        .panel-title-text {\n            position: relative;\n            padding: 3px 15px;\n            display: inline-block;\n            background-color: #147BD0;\n            color: white;\n            float: left;\n            font-size: 15px;\n        }\n        .form-horizontal .control-label {\n            padding-top: 5px;\n            margin-bottom: 0;\n            text-align: right;\n        }\n        .page-content .docs-card .title{\n            background: #Fff;\n        }\n        .page-content .card{\n            width: 358px;\n            padding: 0 30px;\n            margin-right: 38px;\n            display: inline-block;\n            background: #fff;\n            border: 1px solid #ccc;\n            vertical-align: top;\n        }\n        .page-content .card:hover .title{\n            border-bottom: 1px solid #57a3f1;\n            color: #57a3f1;\n            padding-left: 15px;\n        }\n        .page-content .card .title{\n            -webkit-transition: all .5s;\n            transition: all .5s;\n            font-size: 18px;\n            color: #4f515e;\n            border-bottom: 1px solid #e5e5e5;\n            line-height: 50px;\n            padding-top: 10px;\n        }\n        .page-content .description a{\n            font-size: 14px;\n            color: #878996;\n            letter-spacing: 2px;\n           \n        }\n        .page-content{\n            /*padding: 60px 0;*/\n        }\n        .page-content .card:nth-child(3){\n            margin-right: 0;\n        }\n        .description ul li a span{\n            color: #c5c5c5;\n            font-size: 12px;\n        }\n    </style>\n{% endblock %}\n\n{% block main %}\n<div class=\"main-page box-info\" id=\"newVue\">\n    <div class=\"search-wrapper\" id=\"searchApi\">\n        <div class=\"bk-search\" style=\"display: none;\" ref=\"content\">\n            <div style=\"display: inline-block;\">\n                <span class=\"title\">{% trans \"API查询\" %}</span>\n            </div>\n            <div class=\"input-wrapper\">\n                <input type=\"text\" class=\"bk-form-input\"  v-model=\"searchText\" @keyup=\"searchKeyWord\" @click.focus=\"openPrompt\" placeholder=\"{% trans '快速查找接口' %}\">\n                <ul class=\"search-result\" v-if=\"searchResult.length\" id=\"searchPrompt\">\n                    <li v-for=\"item in searchResult\" @click=\"selectPrompt(item)\">\n                        <span v-text=\"item.system_name\"  style=\"font-size: 16px; color: #333333\"></span>\n                        <span v-text=\"item.name\" style=\"coloe: #7b7d8a\"></span><br>\n                        <span v-text=\"item.label\" style=\"color: #a3a3a3\"></span>\n\n                    </li>\n                </ul>\n            </div>\n            <div class=\"btn-select\" @click.stop=\"openPrompt\">\n                <i class=\"bk-icon icon-angle-down\"></i>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"page-content\">\n        <div class=\"card-box\">\n            <div class=\"a-card clearfix\" v-if=\"allModule.length\" v-for=\"(item, index) in allModule\" >\n                <div class=\"card docs-card box\" v-for=\"everyOne in item\" style=\"height: 100%; \">\n                    <div class=\"title\" v-text=\"everyOne.label\">\n                    </div>\n                    <div class=\"description\">\n                        <ul>\n                            <li v-for=\"systemInfo in everyOne.systems\">\n                                <a :href=\"descriptionUrl + systemInfo.name \" v-text=\"systemInfo.label\"></a>\n                                <span v-text=\"systemInfo.name\"></span>\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n    </div>\n\n</div>\n{% endblock %}\n\n{% block footer %}\n<script type=\"text/javascript\" charset=\"utf-8\">\nvar UrlMaker = {\n    'tmpls': { \n        index: \"{% url 'esb_api_docs' %}\",\n        api_doc: \"{% url 'api_doc_by_api_name' system_name='__SYSTEM_NAME__' api_name='__API_NAME__' %}\",\n        all_api: \"{% url 'api.all_api' %}\",\n        system_doc_category: \"{% url 'api.get_system_doc_category' %}\",\n\n    },\n    'make': function(tmpl_name, params) {\n        var self = this;\n        var result = self.tmpls[tmpl_name];\n        $.each(params || {}, function(k, v){\n            k = '__' + k.toUpperCase() + '__';\n            result = result.replace(k, v);\n        });\n        return result;\n    }\n}\n</script>\n<script src=\"{{ STATIC_URL }}esb/assets/vue-2.4.2.js\"></script>\n<script src=\"{{ STATIC_URL }}esb/api_docs/js/search.{{ JS_SUFFIX }}\"></script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/templates/api_docs/system_api_base.html",
    "content": "{% extends \"api_docs/base.html\" %}\n{% load i18n %}\n\n{% block header %}\n<link href=\"{{ STATIC_URL }}esb/api_docs/css/index.{{CSS_SUFFIX}}\" rel=\"stylesheet\">\n<link href=\"{{ STATIC_URL }}esb/assets/metis_menu-2.6.1/metisMenu.min.css\" rel=\"stylesheet\">\n\n{% block system_api_header %}\n{% endblock %}\n\n{% endblock %}\n\n{% block main %}\n    <style>\n        /*左侧导航*/\n        .king-layout1-sidebar {\n            float: left;\n            margin-right: -100%;\n            width: 100%;\n            position: relative;\n            z-index: 99;\n            height: 100%;\n            background-color: #f3f3f3;\n        }\n        .king-vertical-nav4 {\n            min-width: 160px;\n            min-height: 100%;\n            margin: 0;\n            border-right: 1px solid #dddddd;\n            background-color: #f9f9f9;\n            z-index: 10;\n        }\n        .sidebar-inner .system-name {\n            font-size: 15px;\n            padding: 12px 20px;\n            color: #333;\n            border-bottom: 1px solid #f9f9f9;\n            border-top: 1px solid #f9f9f9;\n        }\n        .menu-icon {\n            width: 16px;\n            height: 12px;\n            background-image: url(\"{{ STATIC_URL }}esb/api_docs/img/system_img/custom_icon.png\");\n            position: absolute;\n            left: 0;\n            top: 29px;\n            background-size: 149px 127px;\n            background-position: -61px -106px;\n            cursor:pointer;\n            margin-left: 214px;\n        }\n        .king-vertical-nav4 .navi > li > a {\n            display: block;\n            padding: 12px 20px;\n            font-size: 15px;\n            line-height: 25px;\n            color: #222;\n            text-decoration: none;\n            border-top: 1px solid #eaeaea;\n            border-radius: 4px;\n        }\n        .king-vertical-nav4 .navi > li > a:hover {\n            color: #3982C4;\n            background-color: #D8D6D6;\n        }\n        .nav-top-div{\n            height: 100%;\n            position: relative;\n            z-index: 0;\n            opacity: 1;\n            border-bottom: 1px solid #eaeaea;\n            border-radius: 4px;\n        }\n        /*二级导航*/\n        .king-vertical-nav4 .navi .sub-menu li {\n            line-height: 20px;\n            padding-left: 0;\n            padding-bottom: 10px;\n        }\n        .king-vertical-nav4 .navi .sub-menu li a {\n            color: #222;\n            font-size: 15px;\n            display: block;\n            border: hidden;\n            padding-left: 30px;\n            padding-right: 30px;\n        }\n        .a-active-style{\n            background-color: #D8D6D6;\n            color: #3982C4;\n        }\n        .hide-overflow-content{\n            white-space:nowrap;\n            text-overflow:ellipsis;\n            overflow:hidden;\n            width: 150px;\n        }\n        /*展示其它系统api*/\n        .king-vertical-nav4 .navi > li .other-system-display {\n            display: block;\n            font-size: 15px;\n            padding: 12px 20px;\n            border-bottom: 1px solid #eaeaea;\n            border-top: 1px solid #eaeaea;\n            font-weight: normal;\n            cursor: pointer;\n            color: #555;\n            box-sizing: content-box;\n        }\n        .dropdown {\n            position: relative;\n            display: inline-block;\n            z-index: 99;\n        }\n\n        .dropdown-content {\n            /*max-height: 500px;\n            overflow-y: scroll;\n            overflow-x: hidden;*/\n            overflow-y: inherit;\n            display: none;\n            position: absolute;\n            background-color: #f9f8f8;\n            width: 600px;\n            min-height: 300px;\n            box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n            padding: 27px 10px 10px 34px;\n            font-size: 13px;\n            right: -735px;\n            top: -1px;\n            z-index: 99;\n        }\n        .secondary-page .hover-li:hover .dropdown-content {\n            display: block;\n            /*float: right;*/\n        }\n        .secondary-page .hover-li{\n            cursor:pointer;\n        }\n        /*右侧内容展示*/\n        #all_api_info table {\n            margin:20px 20px 0 0px;\n        }\n        #all_api_info table th, td {\n            padding: 15px 0 15px 15px;\n            line-height: 1;\n            color:#333;\n            /*border: 1px solid #e8eaec;*/\n        }\n        #all_api_info table th {\n            background: #e5e5e5;\n            font-weight: bold;\n        }\n        #all_api_info table tr:nth-child(even) {\n            background: #f8f8f8;\n        }\n        #api_docs h3{\n            font-size: 15px;\n        }\n        #api_docs p{\n            font-size: 14px;\n        }\n        #api_docs table{\n            /*border: 1px solid #eaeaea;*/\n            width: 100%;\n        }\n        #api_docs table th{\n            background-color: #f8f8f8;\n            font-weight: bold;\n        }\n        #all_api_info table tbody tr a{\n            color:#57a3f1;\n        }\n        #all_api_info table tbody tr td{\n            color:#666666;\n        }\n        #api_docs pre{\n            background-color: #f8f8f8;\n            line-height: 1.5;\n            font-size: 14px;\n        }\n\n        #api_docs ul {\n            list-style: disc;\n        }\n\n        .icon-no {\n            display: inline-block;\n            background-image: url(\"{{ STATIC_URL }}esb/api_docs/img/system_img/custom_icon.png\");\n            width: 21px;\n            height: 21px;\n            vertical-align: -5px;\n            background-size: 149px 127px;\n            background-position: 0 -106px;\n        }\n        .document tt {\n            margin: 0 2px;\n            padding: 0 5px;\n            white-space: nowrap;\n            border: 1px solid #eaeaea;\n            background-color: #f8f8f8;\n            border-radius: 3px;\n            font-size: 75%;\n        }\n\n        .sidebar {\n          display: block;\n          float: left;\n          width: 250px;\n          background: #333;\n        }\n        .content {\n          display: block;\n          overflow: hidden;\n          width: auto;\n        }\n        .sidebar-nav {\n            padding-bottom: 20px;\n          /*border-bottom: 1px solid rgba(0, 0, 0, 0.3);*/\n          background-image: -webkit-linear-gradient(left, color-stop(#333333 10px), color-stop(#222222 10px));\n          background-image: linear-gradient(to right, #f9f9f9 10px, #f9f9f9 10px);\n          background-repeat: repeat-x;\n          filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ff333333', endColorstr='#ff222222', GradientType=1);\n        }\n        .sidebar-nav ul {\n          padding: 0;\n          margin: 0;\n          list-style: none;\n        }\n        .sidebar-nav a, .sidebar-nav a:hover, .sidebar-nav a:focus, .sidebar-nav a:active {\n          outline: none;\n        }\n        .sidebar-nav ul li, .sidebar-nav ul a {\n          display: block;\n        }\n        .sidebar-nav ul a {\n          /*padding: 21px 21px;*/\n          color: #000000;\n          /*border-top: 1px solid rgba(173, 169, 169, 0.3);*/\n          /*box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.05) inset;\n          text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.5);*/\n        }\n        .sidebar-nav ul a:hover, .sidebar-nav ul a:focus, .sidebar-nav ul a:active {\n          color: #000;\n          text-decoration: none;\n        }\n        .sidebar-nav ul ul a {\n          padding: 10px 30px;\n          background-color: rgba(255, 255, 255, 0.1);\n        }\n        .sidebar-nav ul ul a:hover, .sidebar-nav ul ul a:focus, .sidebar-nav ul ul a:active {\n          background-color: rgba(255, 255, 255, 0.2);\n        }\n        .sidebar-nav-item {\n          padding-left: 5px;\n        }\n        .sidebar-nav-item-icon {\n          padding-right: 5px;\n        }\n        #rtlh3 small {\n            transform: rotateY(180deg);\n            display: inline-block;\n        }\n        .metismenu .arrow {\n          float: right;\n          line-height: 1.42857;\n        }\n        *[dir=\"rtl\"] .metismenu .arrow {\n          float: left;\n        }\n\n        .metismenu .glyphicon.arrow:before {\n          content: \"\\e079\";\n        }\n        .metismenu .active > a > .glyphicon.arrow:before {\n          content: \"\\e114\";\n        }\n\n        .metismenu .fa.arrow:before {\n          content: \"\\f104\";\n        }\n        .metismenu .active > a > .fa.arrow:before {\n          content: \"\\f107\";\n        }\n\n        /*\n         * Require Ionicons\n         * http://ionicons.com/\n        */\n\n        .metismenu .ion.arrow:before {\n          content: \"\\f3d2\"\n        }\n        .metismenu .active > a > .ion.arrow:before {\n          content: \"\\f3d0\";\n        }\n        .metismenu .plus-times {\n          float: right;\n        }\n        *[dir=\"rtl\"] .metismenu .plus-times {\n          float: left;\n        }\n        .metismenu .fa.plus-times:before {\n          content: \"\\f067\";\n        }\n        .metismenu .active > a > .fa.plus-times {\n          -webkit-transform: rotate(45deg);\n              -ms-transform: rotate(45deg);\n               -o-transform: rotate(45deg);\n                  transform: rotate(45deg);\n        }\n        .metismenu .plus-minus {\n          float: right;\n        }\n        *[dir=\"rtl\"] .metismenu .plus-minus {\n          float: left;\n        }\n        .metismenu .fa.plus-minus:before {\n          content: \"\\f067\";\n        }\n        .metismenu .active > a > .fa.plus-minus:before {\n          content: \"\\f068\";\n        }\n        .metismenu .collapse {\n          display: none;\n        }\n        .metismenu .collapse.in {\n          display: block;\n        }\n        .metismenu .collapsing {\n          position: relative;\n          height: 0;\n          overflow: hidden;\n          -webkit-transition-timing-function: ease;\n               -o-transition-timing-function: ease;\n                  transition-timing-function: ease;\n          -webkit-transition-duration: .35s;\n               -o-transition-duration: .35s;\n                  transition-duration: .35s;\n          -webkit-transition-property: height, visibility;\n          -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n        }\n\n        .metismenu .has-arrow {\n          position: relative;\n        }\n\n        .metismenu .has-arrow::after {\n          position: absolute;\n          content: '';\n          width: .5em;\n          height: .5em;\n          border-width: 1px 0 0 1px;\n          border-style: solid;\n          border-color: #fff;\n          right: 1em;\n          -webkit-transform: rotate(-45deg) translate(0, -50%);\n              -ms-transform: rotate(-45deg) translate(0, -50%);\n               -o-transform: rotate(-45deg) translate(0, -50%);\n                  transform: rotate(-45deg) translate(0, -50%);\n          -webkit-transform-origin: top;\n              -ms-transform-origin: top;\n               -o-transform-origin: top;\n                  transform-origin: top;\n          top: 50%;\n          -webkit-transition: all .3s ease-out;\n          -o-transition: all .3s ease-out;\n          transition: all .3s ease-out;\n        }\n\n        *[dir=\"rtl\"] .metismenu .has-arrow::after {\n          right: auto;\n          left: 1em;\n          -webkit-transform: rotate(135deg) translate(0, -50%);\n              -ms-transform: rotate(135deg) translate(0, -50%);\n               -o-transform: rotate(135deg) translate(0, -50%);\n                  transform: rotate(135deg) translate(0, -50%);\n        }\n\n        .metismenu .active > .has-arrow::after,\n        .metismenu .has-arrow[aria-expanded=\"true\"]::after {\n          -webkit-transform: rotate(-135deg) translate(0, -50%);\n              -ms-transform: rotate(-135deg) translate(0, -50%);\n               -o-transform: rotate(-135deg) translate(0, -50%);\n                  transform: rotate(-135deg) translate(0, -50%);\n        }\n        .metismenu .has-arrow::after {\n            position: absolute;\n            content: '';\n            width: .5em;\n            height: .5em;\n            border-width: 1px 0 0 1px;\n            border-style: solid;\n            border-color: #000000;\n            right: 1em;\n        }\n        .doc-container{\n            overflow: hidden;\n            display: flex;\n            display: -weblit-flex;\n            background: #fafafa;\n        }\n        .doc-catalogue-box{\n            width: 300px;\n        }\n        .doc-content-box{\n            width: 100%;\n            min-height: 600px;\n            border-left: 1px solid #ddd;\n            padding: 26px 0 0 20px;\n            background: #fff;\n        }\n        .custome-active{\n            background-color: #D8D6D6;color: #3982C4;\n        }\n    </style>\n\n    <div class=\"secondary-page\">\n        <div style=\"height: inherit\">\n            <div class=\"left-container panel-body\" style=\"padding: 0\">\n                <!--针对系统的展示-->\n                <div class=\"doc-container\" id=\"system_api_info\">\n                    <div class=\"doc-catalogue-box\" style=\"height: 100%;min-height: 600px;\">\n                        <div class=\"king-layout1-sidebar column\">\n                            <div class=\"nav-top-div\">\n                                <div>\n                                    <nav class=\"sidebar-nav\" style=\"height:100%;width:250px;\">\n                                        <ul class=\"metismenu\" id=\"menu\">\n                                            <li class=\"hover-li\" style=\"border-bottom:1px solid #e5e5e5\">\n                                                <div class=\"other-system-display dropdown\">\n                                                    <a class=\"all-system-title\">{% trans \"所有系统\" %}</a>\n                                                    <i class=\"menu-icon\" style=\"\"></i>\n                                                    <div class=\"dropdown-content\">\n                                                        <div class=\"row\">\n                                                            {% for info in other_system_info %}\n                                                                <div class=\"col-md-4\" style=\"min-height:220px;\">\n                                                                    <span style=\"padding: 5px 10px; font-size: 14px;font-weight: bold; color:#333\">{{info.label}}</span>\n                                                                    <div style=\"padding: 10px;\">\n                                                                        {% for system_info in info.systems %}\n                                                                            <div class=\"hide-overflow-content\" title=\"{{system_info.label}}({{ system_info.name }})\">\n                                                                                <a class=\"hide-overflow-content\" style=\"padding: 2px 3px;\" href=\"{% url 'api_info_by_system' system_name=system_info.name|lower %}\">\n                                                                                    {{system_info.label}} <span style=\"color: #bbb; font-size: 12px;\">{{ system_info.name }}</span>\n                                                                                </a>\n                                                                            </div>\n                                                                        {% endfor %}\n                                                                    </div>\n                                                                </div>\n                                                            {% endfor %}\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </li>\n                                            <li>\n                                                <div class=\"system-name title-contrl\">\n                                                    <a><b>{{ curr_system_info.label }}</b>&nbsp;<span style=\"color: #333;font-size:14px;font-weight:bold\">{{ curr_system_info.name|upper }}</span></a>\n                                                </div>\n                                            </li>\n                                            <li class=\"title-contrl\">\n                                                {% if not flag %}\n                                                <a href=\"{% url 'api_info_by_system' system_name=curr_system_info.name %}\" class='a-active-style' id=\"system_desc\" name=\"desc\"><span>{% trans \"简介\" %}</span></a>\n                                                {% else %}\n                                                <a href=\"{% url 'api_info_by_system' system_name=curr_system_info.name %}\"  id=\"system_desc\" name=\"desc\"><span>{% trans \"简介\" %}</span></a>\n                                                {% endif %}\n                                            </li>\n                                            <li class=\"active \">\n                                            <a style=\"padding-bottom:20px;\" class=\"api-list-title\" href=\"javascript:void(0);\"><span>{% trans \"API列表\" %}&nbsp;<span style=\"color: #7b7d8a;font-weight:normal\">{% trans \"总数\" %} {{ curr_api_info|length }}</span></span>\n                                                    <span style=\"padding-right:20px;\" class=\"pull-right\"><i class=\"bk-icon icon-angle-down\"></i></span>\n                                                </a>\n                                                <ul aria-expanded=\"true\" class=\"collapse in drop-down-list\">\n                                                    {% for info in curr_api_info %}\n                                                    <li>\n                                                        {% if flag and info.id == api_info.id %}\n                                                            <a class=\"a-active-style api-hover-a\" style=\"border:none;background-color: #57a3f1;color: #fff;\" href=\"{% url 'api_doc_by_api_name' system_name=curr_system_info.name api_name=info.name %}\" value=\"{{ info.id }}\" name=\"{{ info.name }}\" title=\"{{ info.name }}--{{ info.label }}\">\n                                                                <div class=\"hide-overflow-content\">{{ info.name }}</div>\n                                                                <div style=\"color:#fff;\" class=\"describe  hide-overflow-content  \">{{ info.label }}</div>\n                                                            </a>\n                                                        {% else %}\n                                                            <a class=\"api-hover-a\" href=\"{% url 'api_doc_by_api_name' system_name=curr_system_info.name api_name=info.name %}\" value=\"{{ info.id }}\" name=\"{{ info.name }}\" title=\"{{ info.name }}--{{ info.label }}\">\n                                                                <div class=\"hide-overflow-content text-hid \">{{ info.name }}</div>\n                                                                <div class=\"describe hide-overflow-content \">{{ info.label }}</div>\n                                                                {% if info.is_new_api %}\n                                                                <span class=\"add-project-tip\">new </span>\n                                                                {% endif %}\n                                                            </a>\n                                                        {% endif %}\n                                                    </li>\n                                                    {% endfor %}\n                                                </ul>\n                                            </li>\n                                        </ul>\n                                    </nav>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"doc-content-box\">\n                        <div style=\"margin: 0 10px 10px 10px;\">\n                            <!--右侧的内容展示-->\n                            <div class=\"row\"\">\n                                <div class=\"right-content\">\n                                    <a href=\"{% url 'esb_api_docs' %}\">{% trans \"API文档\" %}</a> > <a href=\"{% url 'api_info_by_system' system_name=curr_system_info.name %}\">{{ curr_system_info.label }}</a> ><span id=\"curr_breadcrumb\"></span>\n                                </div>\n                            </div>\n\n                            <div id=\"right-content\" style=\"min-height: 600px;max-width: 880px;\">\n                                {% block right_container %}\n                                {% endblock %}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <script src=\"{{ STATIC_URL }}esb/assets/metis_menu-2.6.1/metisMenu.min.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n    <script type=\"text/javascript\" charset=\"utf-8\">\n        $(\"#top-nav-menu\").find(\"li[name=api_docs]\").addClass(\"active\");\n        $('#menu').metisMenu();\n        $(\".drop-down-list li\").each(function(index,val){\n            var _this = $(this);\n            var a = _this.find('.describe').text();\n            if(a !== ''){\n                _this.find('a').css({\n                    'line-height':'normal',\n                    'padding-top':'11px'\n                });\n                // $('.add-project-tip').css({\n                //     'line-height':'53px'\n                // })\n            }else{\n                _this.find('a').css({\n                    'line-height':'53px',\n                    'margin-top':'0'\n                });\n            }\n        })\n    </script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/templates/api_docs/system_api_doc.html",
    "content": "{% extends \"api_docs/system_api_base.html\" %}\n\n{% block system_api_header %}\n<link href=\"{{ STATIC_URL }}esb/api_docs/css/md_render.{{ CSS_SUFFIX }}\" rel=\"stylesheet\">\n{% endblock %}\n\n{% block right_container %}\n    <div id=\"api_docs\" class=\"api_docs-list\" style=\"margin-left: -5px;min-height: 600px;\">\n    </div>\n    <div style=\"border-bottom: 1px solid #eaeaea;padding-bottom: 10px; margin-right: 3px;margin-top: 10px; display: none;\"></div>\n    <div id=\"user_feedback\" style=\"padding-top: 15px; display: none;\">\n    </div>\n\n    {% verbatim %}\n        <script type=\"text/x-mustache-template\" id=\"tmpl-feedback-default\">\n            <span>以上信息是否解决您的问题？</span>\n            <div style=\"margin-top: 10px;\">\n                <a id=\"ok\" type=\"button\" class=\"btn btn-primary\" style=\"margin-right: 20px;\">是</a>\n                <a id=\"question\" type=\"button\" class=\"btn btn-default\">否</a>\n            </div>\n        </script>\n        <script type=\"text/x-mustache-template\" id=\"tmpl-feedback-content\">\n            <span class=\"icon-no\"></span>\n            <span>为了我们更有效的优化资料库，以及针对性的改善我们的服务，我们很需要您进一步的反馈信息：</span>\n            <div style=\"margin-top: 10px;\">\n                <div style=\"padding-bottom: 10px\">\n                    <textarea class=\"form-control\" rows=\"3\"></textarea>\n                </div>\n                <a id=\"submit\" type=\"button\" class=\"btn btn-primary\" style=\"margin-right: 20px;\">提交</a>\n                <a id=\"cancel\" type=\"button\" class=\"btn btn-default\">取消</a>\n            </div>\n        </script>\n    {% endverbatim %}\n\n{% endblock %}\n\n{% block footer %}\n<script src=\"{{ STATIC_URL }}esb/api_docs/js/system_api_docs_info.{{ JS_SUFFIX }}\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<script type=\"text/javascript\" charset=\"utf-8\">\n    //scrolltotop.controlHTML='<a href=\"#top\" id=\"scrolltotop\"></a>';\n    //scrolltotop.init();\n    var api_id = \"{{api_info.id}}\";\n    var system_name = \"{{ curr_system_info.name }}\";\n    var component_name = \"{{ api_info.name }}\";\n    var docs_content_url = \"{% url 'api.get_api_doc_by_api' system_name=curr_system_info.name api_id=api_info.id %}\";\n    var submit_url = \"{% url 'api.submit_the_advice' %}\";\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/templates/api_docs/system_api_index.html",
    "content": "{% extends \"api_docs/system_api_base.html\" %}\n{% load i18n %}\n\n{% block right_container %}\n{% endblock %}\n\n{% block footer %}\n{% verbatim %}\n<script type=\"text/x-mustache-template\" id=\"tmpl-api-list-content\">\n    <div class=\"row\" style=\"margin-top: 20px;min-height: 600px;\">\n        <div>\n            {{ system_summary }}\n        </div>\n        <div id=\"all_api_info\" style=\"padding-top: 10px;\">\n            <table>\n                <thead>\n                    {% endverbatim %}\n                    <th width=\"405px\">{% trans \"资源名称\" %}</th>\n                    <th width=\"575px\">{% trans \"资源描述\" %}</th>\n                    {% verbatim %}\n                </thead>\n                <tbody>\n                    {{#api_info_by_system}}\n                    <tr>\n                        <td><a href=\"javascript:void(0)\" name=\"{{ name }}\">{{name}}</a></td>\n                        <td>{{label}}</td>\n                    </tr>\n                    {{/api_info_by_system}}\n                </tbody>\n            </table>\n        </div>\n    </div>\n</script>\n{% endverbatim %}\n\n<script src=\"{{ STATIC_URL }}esb/api_docs/js/system_info.{{ JS_SUFFIX }}\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<script type=\"text/javascript\" charset=\"utf-8\">\n    //scrolltotop.controlHTML='<a href=\"#top\" id=\"scrolltotop\"></a>';\n    //scrolltotop.init();\n    var root_url = \"{% url 'api_info_by_system' system_name=curr_system_info.name %}\";\n    var desc_content_url = \"{% url 'api.get_apis_by_system' system_name=curr_system_info.name %}\";\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.urls import path, re_path\n\nfrom . import views, api_views\n\n\nurlpatterns = [\n    path('', views.Index.as_view(), name='esb_api_docs'),\n\n    path('system/', views.Index.as_view(), name='esb_api_docs'),\n    re_path(r'^system/(?P<system_name>\\w+)/$', views.ApiInfoBySystem.as_view(), name='api_info_by_system'),\n    re_path(r'^system/(?P<system_name>\\w+)/(?P<api_name>\\w+)/$', views.ApiDocByApiName.as_view(),\n        name='api_doc_by_api_name'),\n\n    path('api/all_api/', api_views.AllApi.as_view(), name='api.all_api'),\n    re_path(r'^api/(?P<system_name>\\w+)/apis/$', api_views.GetApisBySystem.as_view(), name='api.get_apis_by_system'),\n    re_path(r'^api/(?P<system_name>\\w+)/(?P<api_id>\\w+)/docs/$', api_views.GetApiDocByApiId.as_view(),\n        name='api.get_api_doc_by_api'),\n    path('api/submit_the_advice/', api_views.SubmitTheAdvice.as_view(), name='api.submit_the_advice'),\n    path('api/check_component_exist/', api_views.CheckComponentExist.as_view(), name='api.check_component_exist'),\n    path('api/system_doc_category/', api_views.GetSystemDocCategory.as_view(), name='api.get_system_doc_category'),\n\n\n    path('translate/test/', views.TranslateTest.as_view(), name='translate_test'),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.bkcore.models import ComponentSystem\n\n\ndef get_system_category():\n    \"\"\"获取文档分类\"\"\"\n    systems = ComponentSystem.objects.all()\n    doc_category = {}\n    for system in systems:\n        if not system.has_display_doc:\n            continue\n        system_doc_category = system.doc_category\n        doc_category.setdefault(system_doc_category.id, {\n            'name': system_doc_category.name_display,\n            'label': system_doc_category.name_display,\n            'priority': system_doc_category.priority,\n            'systems': [],\n        })\n        doc_category[system_doc_category.id]['systems'].append({\n            'name': system.name,\n            'label': system.label_display,\n            'desc': system.remark_display,\n        })\n    doc_category = list(doc_category.values())\n    doc_category.sort(key=lambda x: x['priority'])\n    for category in doc_category:\n        category['systems'].sort(key=lambda x: x['name'])\n    return doc_category\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/api_docs/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.views.generic import View\nfrom django.shortcuts import render\nfrom django.http import Http404\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ESBChannel, ComponentSystem\nfrom esb.configs.default import menu_items\nfrom .utils import get_system_category\n\nmenu_active_item = 'api_docs'\n\n\nclass TranslateTest(View):\n\n    def get(self, request):\n        from django.http import HttpResponse\n        return HttpResponse(_('系统名称'))\n\n\nclass BaseDocsCategory(View):\n\n    def get_base_category(self):\n        \"\"\"获取文档分类\"\"\"\n        return get_system_category()\n\n    def get_system_info(self, system_name):\n        try:\n            system = ComponentSystem.objects.get(name=system_name)\n        except Exception:\n            raise Http404\n        return {\n            'system_id': system.id,\n            'system_name': system.name,\n            'system_label': system.label_display,\n            'system_remark': system.remark_display,\n        }\n\n    def get_apis_by_system(self, system_id):\n        # 现阶段先根据接口name排序,后面根据需求再做调整\n        api_info = ESBChannel.objects.filter(component_system_id=system_id, is_hidden=False).order_by('component_name')\n        return [\n            {\n                'id': api.id,\n                'path': api.path,\n                'system_id': api.component_system_id,\n                'name': api.component_name,\n                'label': api.name_display,\n                'created_time': api.created_time,\n                'last_modified_time': api.last_modified_time,\n                'is_new_api': api.is_new_api,\n            }\n            for api in api_info\n        ]\n\n    def get_api_info(self, system_id, api_name):\n        try:\n            api_info = ESBChannel.objects.get(\n                component_system_id=system_id,\n                component_name=api_name,\n                is_hidden=False\n            )\n        except Exception:\n            raise Http404\n        return {\n            'id': api_info.id,\n            'path': api_info.path,\n            'system_id': api_info.component_system_id,\n            'name': api_info.component_name,\n            'label': api_info.name_display,\n        }\n\n    def get_other_system_info(self, system_name):\n        docs_category = self.get_base_category()\n        system = self.get_system_info(system_name)\n        return {\n            'other_system_info': docs_category,\n            'curr_system_info': {\n                'name': system_name,\n                'label': system['system_label'],\n            }\n        }\n\n\nclass Index(BaseDocsCategory):\n    \"\"\"首页\"\"\"\n    def get(self, request):\n        docs_category = self.get_base_category()\n\n        return render(request, 'api_docs/index.html', {\n            'docs_category': docs_category,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n\nclass ApiInfoBySystem(BaseDocsCategory):\n    \"\"\"获取系统简介以及详细接口\"\"\"\n\n    def get(self, request, system_name):\n        # 除去当前系统的其它系统信息\n        all_system_info = self.get_other_system_info(system_name)\n        # 获取当前系统的所有api\n        system_info = self.get_system_info(system_name)\n        curr_api_info = self.get_apis_by_system(system_info['system_id'])\n        data = {\n            'curr_api_info': curr_api_info,\n            'api_info_by_system': list(curr_api_info),\n            'system_summary': system_info.get('system_remark') or _('暂无系统简介'),\n            'flag': False,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        }\n        data.update(all_system_info)\n        return render(request, 'api_docs/system_api_index.html', data)\n\n\nclass ApiDocByApiName(BaseDocsCategory):\n\n    def get(self, request, system_name, api_name):\n        # 获取对应的接口信息\n        system_info = self.get_system_info(system_name)\n        # 查询对应的接口\n        api_info = self.get_api_info(system_info['system_id'], api_name)\n        all_system_info = self.get_other_system_info(system_name)\n        # 获取当前系统的所有api\n        curr_api_info = self.get_apis_by_system(system_info['system_id'])\n        data = {\n            'curr_api_info': curr_api_info,\n            'api_info': api_info,\n            'flag': True,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        }\n        data.update(all_system_info)\n        return render(request, 'api_docs/system_api_doc.html', data)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.conf import settings\n\n\nBOOTSTRAP_COLUMN_COUNT = getattr(settings, 'BOOTSTRAP_COLUMN_COUNT', 12)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/templates/bootstrapform/field.html",
    "content": "{% load bootstrap %}\n{% load i18n %}\n\n<div class=\"form-group{% if field.errors %} has-error{% endif %}\">\n    {% if field|is_checkbox %}\n        <div class=\"controls {{ classes.single_value }}\">\n            <div class=\"checkbox\">\n                {% if field.auto_id %}\n                    <label {% if field.field.required and form.required_css_class %}class=\"{{ form.required_css_class }}\"{% endif %}>\n                        {{ field }} <span>{{ field.label }}</span>\n                    </label>\n                {% endif %}\n                {% for error in field.errors %}\n                    <span class=\"help-block {{ form.error_css_class }}\">{{ error }}</span>\n                {% endfor %}\n\n                {% if field.help_text %}\n                    <p class=\"help-block\">\n                        {{ field.help_text|safe }}\n                    </p>\n                {% endif %}\n            </div>\n        </div>\n    {% elif field|is_radio %}\n        {% if field.auto_id %}\n            <label class=\"control-label {{ classes.label }} {% if field.field.required %}{{ form.required_css_class }}{% endif %}\">{{ field.label }}</label>\n        {% endif %}\n        <div class=\"{{ classes.value }}\">\n            {% for choice in field %}\n                <div class=\"radio\">\n                    <label>\n                        {{ choice.tag }}\n                        {{ choice.choice_label }}\n                    </label>\n                </div>\n            {% endfor %}\n\n            {% for error in field.errors %}\n                <span class=\"help-block {{ form.error_css_class }}\">{{ error }}</span>\n            {% endfor %}\n\n            {% if field.help_text %}\n            <p class=\"help-block\">\n                {{ field.help_text|safe }}\n            </p>\n            {% endif %}\n        </div>\n    {% else %}\n        {% if field.auto_id %}\n            <label class=\"control-label {{ classes.label }} {% if field.field.required %}{{ form.required_css_class }}{% endif %}\" for=\"{{ field.auto_id }}\">{{ field.label }}</label>\n        {% endif %}\n\n        <div class=\"controls {{ classes.value }}{% if field|is_multiple_checkbox %} multiple-checkbox{% endif %}\">\n            {{ field }}\n\n            {% if field.field.required %}\n                <span class=\"required\">*</span>\n            {% endif %}\n\n            {% if field.name == 'component_system' %}\n            <a href=\"javascript:void(0)\" class=\"add-system\" title=\"{% trans '创建新系统' %}\">\n                  <i class=\"bk-icon icon-plus\" style=\"font-size: 15px; font-weight: bolder; margin-top: 5px;\"></i>\n                </a>\n            {% endif %}\n            {% if field.name == 'system' %}\n            <a href=\"javascript:void(0)\" class=\"add-system\" title=\"{% trans '创建新系统' %}\">\n                  <i class=\"bk-icon icon-plus\" style=\"font-size: 15px; font-weight: bolder; margin-top: 5px;\"></i>\n                </a>\n            {% endif %}\n\n            {% for error in field.errors %}\n                <span id=\"tip_{{ field.html_name }}\" class=\"tips error {{ form.error_css_class }}\">{% trans error %}</span>\n            {% endfor %}\n\n            {% if field.help_text %}\n                <p class=\"help-block\">\n                    {{ field.help_text|safe }}\n                </p>\n            {% endif %}\n        </div>\n    {% endif %}\n</div>\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/templates/bootstrapform/form.html",
    "content": "{% if form.non_field_errors %}\n    <div class=\"alert alert-danger\">\n        <a class=\"close\" data-dismiss=\"alert\">&times;</a>\n        {% for non_field_error in form.non_field_errors %}\n             {{ non_field_error }}\n        {% endfor %}\n    </div>\n{% endif %}\n\n{% for field in form.hidden_fields %}\n    {{ field }}\n{% endfor %}\n\n{% for field in form.visible_fields %}\n    {% include 'bootstrapform/field.html' %}\n{% endfor %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/templates/bootstrapform/formset.html",
    "content": "{{ formset.management_form }}\n\n{% for form in formset %}\n  {% if classes.label == 'sr-only' %}\n      <div class=\"form-inline\">\n      {% include \"bootstrapform/form.html\" with form=form %}\n      </div>\n  {%else%}\n      {% include \"bootstrapform/form.html\" with form=form %}\n  {% endif %}\n{% endfor %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/templatetags/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/bootstrapform/templatetags/bootstrap.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms, VERSION as DJANGO_VERSION\nfrom django.template import Context\nfrom django.template.loader import get_template\nfrom django import template\n\nfrom bootstrapform import config\n\nregister = template.Library()\n\n\n@register.filter\ndef bootstrap(element):\n    markup_classes = {'label': '', 'value': '', 'single_value': ''}\n    return render(element, markup_classes)\n\n\n@register.filter\ndef bootstrap_inline(element):\n    markup_classes = {'label': 'sr-only', 'value': '', 'single_value': ''}\n    return render(element, markup_classes)\n\n\n@register.filter\ndef bootstrap_horizontal(element, label_cols='col-sm-2 col-lg-2'):\n\n    markup_classes = {'label': label_cols, 'value': '', 'single_value': ''}\n\n    for cl in label_cols.split(' '):\n        splitted_class = cl.split('-')\n\n        try:\n            value_nb_cols = int(splitted_class[-1])\n        except ValueError:\n            value_nb_cols = config.BOOTSTRAP_COLUMN_COUNT\n\n        if value_nb_cols >= config.BOOTSTRAP_COLUMN_COUNT:\n            splitted_class[-1] = config.BOOTSTRAP_COLUMN_COUNT\n        else:\n            offset_class = cl.split('-')\n            offset_class[-1] = 'offset-' + str(value_nb_cols)\n            splitted_class[-1] = str(config.BOOTSTRAP_COLUMN_COUNT - value_nb_cols)\n            markup_classes['single_value'] += ' ' + '-'.join(offset_class)\n            markup_classes['single_value'] += ' ' + '-'.join(splitted_class)\n\n        markup_classes['value'] += ' ' + '-'.join(splitted_class)\n\n    return render(element, markup_classes)\n\n\n@register.filter\ndef add_input_classes(field):\n    if not is_checkbox(field) and not is_multiple_checkbox(field) \\\n       and not is_radio(field) and not is_file(field):\n        field_classes = field.field.widget.attrs.get('class', '')\n        field_classes += ' form-control'\n        field.field.widget.attrs['class'] = field_classes\n\n\ndef render(element, markup_classes):\n    element_type = element.__class__.__name__.lower()\n\n    if element_type == 'boundfield':\n        add_input_classes(element)\n        template = get_template(\"bootstrapform/field.html\")\n        context = {'field': element, 'classes': markup_classes, 'form': element.form}\n    else:\n        has_management = getattr(element, 'management_form', None)\n        if has_management:\n            for form in element.forms:\n                for field in form.visible_fields():\n                    add_input_classes(field)\n\n            template = get_template(\"bootstrapform/formset.html\")\n            context = {'formset': element, 'classes': markup_classes}\n        else:\n            for field in element.visible_fields():\n                add_input_classes(field)\n\n            template = get_template(\"bootstrapform/form.html\")\n            context = {'form': element, 'classes': markup_classes}\n\n    return template.render(context)\n\n\n@register.filter\ndef is_checkbox(field):\n    return isinstance(field.field.widget, forms.CheckboxInput)\n\n\n@register.filter\ndef is_multiple_checkbox(field):\n    return isinstance(field.field.widget, forms.CheckboxSelectMultiple)\n\n\n@register.filter\ndef is_radio(field):\n    return isinstance(field.field.widget, forms.RadioSelect)\n\n\n@register.filter\ndef is_file(field):\n    return isinstance(field.field.widget, forms.FileInput)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/en/hcp/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/en/hcp/get_host_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetHostList(Component):\n    \"\"\"\n    apiLabel get host list\n    apiMethod GET\n\n    ### Functional Description\n\n    Get host list\n\n    ### Request Parameters\n\n    {{ common_args_desc }}\n\n    #### Interface Parameters\n\n    | Field  |  Type | Required   |  Description     |\n    |-----------|------------|--------|------------|\n    | app_id  | int   | Yes | Business ID  |\n    | ip_list | array | No  | Host IP address, including ip and bk_cloud_id, bk_cloud_id represents cloud area ID |\n\n    ### Request Parameters Example\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"bk_biz_id\": 1,\n        \"ip_list\": [\n            {\n                \"ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0\n            },\n            {\n                \"ip\": \"10.0.0.2\"\n                \"bk_cloud_id\": 0\n            }\n        ]\n    }\n    ```\n\n    ### Return Result Example\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"inner_ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0,\n                \"host_name\": \"db-1\",\n                \"maintainer\": \"admin\"\n            },\n            {\n                \"inner_ip\": \"10.0.0.2\",\n                \"bk_cloud_id\": 2,\n                \"host_name\": \"db-2\",\n                \"maintainer\": \"admin\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # Name of the system to which the component belongs\n    sys_name = configs.SYSTEM_NAME\n\n    # Form Processing Parameters Validation\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.CharField(label='Business ID', required=True)\n        ip_list = TypeCheckField(label='Host IP address', promise_type=list, required=False)\n\n        # The data returned in clean method is available through the component's form_data property\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['bk_biz_id', 'ip_list'])\n\n    # Component Processing Access\n    def handle(self):\n        # Get the data processed in Form clean\n        data = self.form_data\n\n        # Set Current Operator\n        data['operator'] = self.current_user.username\n\n        # Request System Interface\n        try:\n            response = self.outgoing.http_client.post(\n                host=configs.host,\n                path='/hcp/get_host_list/',\n                data=json.dumps(data),\n            )\n        except Exception:\n            # TODO: To delete, only fake data for testing\n            response = {\n                'code': 0,\n                'data': [\n                    {\n                        'inner_ip': '10.0.0.1',\n                        'bk_cloud_id': 0,\n                        'host_name': 'just_for_test',\n                        'maintainer': 'admin',\n                    },\n                ]\n            }\n\n        # Analyze the Results\n        code = response['code']\n        if code == 0:\n            result = {\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'result': False,\n                'message': response['message']\n            }\n\n        # Set the component return result, and payload is the actual return result of component\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/en/hcp/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/en/hcp/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\n# The system name in lowercase shall be the same as the system package name\nSYSTEM_NAME = 'HCP'\n\nhost = SmartHost(\n    # The domain name of system production environment shall be filled in\n    host_prod='hcp.domain.com',\n)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/en/hcp/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/zh-hans/hcp/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/zh-hans/hcp/get_host_list.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetHostList(Component):\n    \"\"\"\n    apiLabel 查询主机列表\n    apiMethod GET\n\n    ### 功能描述\n\n    查询主机列表\n\n    ### 请求参数\n\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段  |  类型 | 必选   |  描述     |\n    |-----------|------------|--------|------------|\n    | app_id  |  int    | 是  | 业务ID  |\n    | ip_list |  array  | 否  | 主机IP地址，包含 ip 和 bk_cloud_id；其中，bk_cloud_id表示云区域ID  |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"bk_biz_id\": 1,\n        \"ip_list\": [\n            {\n                \"ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0\n            },\n            {\n                \"ip\": \"10.0.0.2\"\n                \"bk_cloud_id\": 0\n            }\n        ]\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"inner_ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0,\n                \"host_name\": \"db-1\",\n                \"maintainer\": \"admin\"\n            },\n            {\n                \"inner_ip\": \"10.0.0.2\",\n                \"bk_cloud_id\": 0,\n                \"host_name\": \"db-2\",\n                \"maintainer\": \"admin\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.CharField(label='业务ID', required=True)\n        ip_list = TypeCheckField(label='主机IP地址', promise_type=list, required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['bk_biz_id', 'ip_list'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        data = self.form_data\n\n        # 设置当前操作者\n        data['operator'] = self.current_user.username\n\n        # 请求系统接口\n        try:\n            response = self.outgoing.http_client.post(\n                host=configs.host,\n                path='/hcp/get_host_list/',\n                data=json.dumps(data),\n            )\n        except Exception:\n            # TODO: 需要删除，仅用于测试的假数据\n            response = {\n                'code': 0,\n                'data': [\n                    {\n                        'inner_ip': '10.0.0.1',\n                        'bk_cloud_id': 0,\n                        'host_name': 'just_for_test',\n                        'maintainer': 'admin',\n                    },\n                ]\n            }\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 0:\n            result = {\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'result': False,\n                'message': response['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/zh-hans/hcp/toolkit/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/zh-hans/hcp/toolkit/configs.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom esb.utils import SmartHost\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'HCP'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod='hcp.domain.com',\n)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/component_template/zh-hans/hcp/toolkit/tools.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/en/add_new_component.md",
    "content": "# Component coding / [Appendix](#appendix)\n\nComponent coding is to write component code, add component channel configuration to provide API service.\nFollowing interface is taken for an example to describe in detail how to develop a new component.\n\n`Note: It applies to the components that require custom processing logic`\n\n- System name: Host configuration platform (HCP)\n- Interface name: get_host_list\n- Interface url: http://hcp.domain.com/hcp/get_host_list/\n\n## Add System\n\n[Add a new system](/esb/manager/system/add/){:target=\"_blank\"}, fill in the following system information:\n\n- System name: HCP\n- System label: Host configuration platform\n\n## Create a System and Component File\nCreate directories and files (Template [Download](/static/esb/guide/en/hcp.tar.gz)) under components/generic/apis of the project according to the structure below: \n\n```\n# If apis does not exist, first create the folder apis and create the file __init__.py under it\ncomponents/generic/apis/\n|-- __init__.py\n|-- hcp\n|   |-- __init__.py\n|   |-- toolkit\n|   |   |-- __init__.py\n|   |   |-- configs.py\n|   |   |-- tools.py\n|   |-- get_host_list.py\n\n```\n- hcp is a system package and the package name is the system name in lowercase\n- hcp/toolkit is a system toolkit used to store system configuration and common methods\n- hcp/toolkit/configs.py is a system configuration module used to configure system name, system domain name, etc. \n- hcp/toolkit/tools.py is the system common methods module\n- hcp/get_host_list.py is the \"get host list\" component module\n\n\n## Add System Information to Component Configuration \nAdd system configuration to \"components/generic/apis/hcp/toolkit/configs.py\", and a sample is shown below: \n\n```python\n# -*- coding: utf-8 -*-\nfrom esb.utils import SmartHost\n\n\n# The system name in lowercase shall be the same as the system package name\nSYSTEM_NAME = 'HCP'\n\nhost = SmartHost(\n    # The domain name of system production environment shall be filled in \n    host_prod='hcp.domain.com',\n)\n```\n\n## Development Component Module\nAdd component code to \"components/generic/apis/hcp/get_host_list.py\", and a sample is shown below: \n```python\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetHostList(Component):\n    \"\"\"\n    apiLabel get host list\n    apiMethod GET\n\n    ### Functional Description\n\n    Get host list\n\n    ### Request Parameters\n\n    {{ common_args_desc }}\n\n    #### Interface Parameters\n\n    | Field  |  Type | Required   |  Description     |\n    |-----------|------------|--------|------------|\n    | app_id  |  int    | Yes  | Business ID  |\n    | ip_list |  array  | No  | Host IP address, including ip and bk_cloud_id, in which, bk_cloud_id represents cloud area ID  |\n\n    ### Request Parameters Example\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"bk_biz_id\": 1,\n        \"ip_list\": [\n            {\n                \"ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0\n            },\n            {\n                \"ip\": \"10.0.0.2\"\n                \"bk_cloud_id\": 0\n            }\n        ]\n    }\n    ```\n    ### Return Result Example\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"inner_ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0,\n                \"host_name\": \"db-1\",\n                \"maintainer\": \"admin\"\n            },\n            {\n                \"inner_ip\": \"10.0.0.2\",\n                \"bk_cloud_id\": 2,\n                \"host_name\": \"db-2\",\n                \"maintainer\": \"admin\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # Name of the system to which the component belongs\n    sys_name = configs.SYSTEM_NAME\n\n    # Form Processing Parameters Validation\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.CharField(label=\"Business ID\", required=True)\n        ip_list = TypeCheckField(label=u'Host IP address', promise_type=list, required=False)\n\n        # The data returned in clean method is available through the component's form_data property\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['bk_biz_id', 'ip_list'])\n\n    # Component Processing Access\n    def handle(self):\n        # Get the data processed in Form clean\n        data = self.form_data\n\n        # Set Current Operator\n        data[\"operator\"] = self.current_user.username\n\n        # Request System Interface\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path=\"/hcp/get_host_list/\",\n            data=json.dumps(data),\n        )\n\n        #  Analyze the Results\n        code = response[\"code\"]\n        if code == 0:\n            result = {\n                \"result\": True,\n                \"data\": response[\"data\"],\n            }\n        else:\n            result = {\n                \"result\": False,\n                \"message\": result[\"message\"]\n            }\n\n        # Set the component return result, and payload is the actual return result of component \n        self.response.payload = result\n```\n\nNote:\n\n\n- The component class name is a component module name with the underscores (_) removed and the name turned to a hump form. For example, get_host_list component class name should be GetHostList\n- The component begins with component document. Through the following instructions, the document, [Component Documents](/esb/api_docs/system/){:target=\"_blank\"}, used by the component can be updated \n\n\n```shell\nworkon esb\npython manage.py sync_api_docs\n```\n\n## Register Component Channel\nAfter component module is developed, [Register component channel](/esb/manager/channel/add/){:target=\"_blank\"}, and the channel information that shall be filled in is as follows: \n\n- Channel name: get_host_list\n- Channel path: /hcp/get_host_list/\n- Component system: Choose HCP system\n- Corresponding component code: generic.hcp.get_host_list\n\n\n## Restart Service\nAfter the component is added, restart the service by following steps: \n```shell\n# INSTALL_PATH represents project installation base path\n\n# Restart Instructions\nworkon open_paas\nsupervisorctl -c $INSTALL_PATH/etc/supervisor-open_paas.conf restart esb\n```\n\nAccess url of the new component is:\n```python\nhttp://xxx.domain.com/api/c/compapi/hcp/get_host_list/\n```\n\n# <span id=\"appendix\">Appendix</span>\n\nWhen developing a new component, you can get useful data in the component module based on the component's base class Component or common module to facilitate development.\n\n## Available Data in Component Base Class \n\n- request: Request data, refer to descriptions below for common properties \n- form_data: Data in the component module after Form clean is customized \n- current_user: Current user, get the username of current user according to its property username\n- outgoing.http_client: Request interface Client, can be used to request other interface, refer to descriptions below for specific parameters\n\n### Common Properties of request in Component \n\n- request_id: Unique ID of one request, it is a uuid character string\n- app_code: APP ID of current request\n- kwargs: Current request parameters, QueryString data in GET request or Request Body data in POST request has been converted to dict\n\n\n### Supported Method of outgoing.http_client in Component\n\n```python\n# response_type: json, whether the interface data is required to be converted to JSON dict, others are not converted \n# max_retries: 0, number of times of retry when interface request is abnormal\n# request_encoding: Request interface parameters are transcoded to this type\n# response_encoding: Interface response data is transcoded to this type\noutgoing.http_client.request(\n    method, host, path, params=None, data=None, headers={},\n    response_type=\"json\", max_retries=0, response_encoding=None,\n    request_encoding=None, verify=False, cert=None,\n    timeout=None\n)\n\noutgoing.http_client.get # represents request (\"GET\", *args, **kwargs)\noutgoing.http_client.post # represents request (\"POST\", *args, **kwargs)\n```\n\n## Custom Field in common.forms Module\n\n- ListField: List Field, it can convert a character string separated by comma, semicolon, line feed and space to a list. For example, \"123;456;789\" can be converted to [\"123\", \"456\", \"789\"]\n- TypeCheckField: Type Check Field, check data type by setting promise_type parameter, if the parameter type does not match, throw an exception\n- DefaultBooleanField: Default Boolean Field, Boolean data can set default value by default parameter \n\n\n## Method of Invoking Other Components in a Component\n\n- invoke_other method, current_user will be transferred to invoked component\n```python\nresult = self.invoke_other(\"generic.auth.get_user\", kwargs={\"username\": \"xxx\"})\n```\n\n- Direct Invoking Method\n```python\nfrom esb.components.generic.apis.auth.get_user import GetUser\nresult = GetUser().invoke(kwargs={\"username\": \"xxx\"})\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/en/buffet_component.md",
    "content": "# Self-service\n\nSelf-service, developers do not need to write code, configure in [Self-service](/esb/manager/buffet_comp/list/){:target=\"_blank\"} to connect interface to the API Gateway. \nTake the following interface as an example to describe how to complete self-service access.\n\n`Note: It applies to the scenarios which do not require custom processing logic and support HTTP protocol`\n\n- System name: Host configuration platform (HCP)\n- Interface name: get_host_list\n- Interface url: http://hcp.domain.com/hcp/get_host_list/\n\n## Add System\n\n[Add a new system](/esb/manager/system/add/){:target=\"_blank\"}, fill in the following system information:\n\n- System name: HCP\n- System label: Host configuration platform\n\n\n## Add API configuration\n\nOpen the [Self-service](/esb/manager/buffet_comp/apply/){:target=\"_blank\"} page and fill in interface configuration information which consists of three parts: **Register Configuration**, **Before Sending Out Request**, **Request Destination**.\n\n#### Register Configuration\n\nRegister configuration is applied to configure the API access information. Fill in register configuration with the following:\n\n- API name: get_host_list\n- System: Choose HCP system \n- Request method: GET\n- API path: /hcp/get_host_list/\n\nAdd a unified prefix to the \"API path\" to get the interface url of this API: \n```\nhttp://xxx.domain.com/api/c/self-service-api/hcp/get_host_list/\n```\n\n#### Before Sending Out Request\n\"Before Sending Out Request\" is used for the request header information for configuring access to system interfaces.\n\n#### Request Target\nRequest target is used to configure the information of the request system interface, such as system interface url, request method, parameter setting, etc. Fill in request target configuration with the following:\n\n- Target url: http://hcp.domain.com/hcp/get_host_list/\n- Request method: POST\n- Parameters encode: json `It needs to be specified only when the request method is POST`\n\n## API Access Information\nAfter the above configuration, you can access the API. Access API also requires application and user authentication. Access url of the API is: \n```\nhttp://xxx.domain.com/api/c/self-service-api/hcp/get_host_list/\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/en/cmsi_component_guide.md",
    "content": "# CMSI Message Component\n\nCurrently, API Gateway provides various notification channels, including:\n\n- Public voice notification: /cmsi/send_voice_msg/\n- Send Email: /cmsi/send_mail/\n- Send WeChat: /cmsi/send_weixin/\n- Send SMS: /cmsi/send_sms/\n\nAPI Gateway defines the [Interface Protocols](/esb/api_docs/system/CMSI/){:target=\"_blank\"} for these message notification components and gives component examples (see components/generic/templates/cmsi/ in the project). However, the component content is not fully implemented and the user can override the component of this part based on the interface protocol. To reduce the difficulty of implementing a message notification component, the API Gateway provides solutions to update the component configuration online without writing a component code.\n\n**Note: **To change the sample of the component, you need to copy the sample code to components/generic/apis/cmsi/. The contents of components/generic/templates/cmsi will be overwritten for each release.\n\n## Solution One\n\nThe user provides an interface that is compatible with the Message Notification Component [Interface Protocols](/esb/api_docs/system/CMSI/){:target=\"_blank\"} and then configures to component with the following steps. API Gateway will forward the request to this interface .\n\n1. Find the corresponding component channel in [**Channel Management**](/esb/manager/channel/list/){:target=\"_blank\"}, and open the edit page\n2. In **Component Configuration**, configure the interface url under the variable dest_url\n\n**Note：**\n```\n1. send_voice_msg component, if the receiver__username parameter is valid, \nthe parameter user_list_information will be generated according to the platform user data\n2. send_mail component, if the receiver__username and cc__username parameters are valid, \nparameters receiver and cc will be generated respectively according the platform user data\n3. send_sms component, if the receiver__username parameter is valid, \nthe parameter receiver will be generated according to the platform user data\n4. send_mail component configuration, in which, variable mail_sender represents default email sender \n```\n\n## Solution Two\n\n### Send Email\n\nUser provides the SMTP mail service address and account, and then, configures them to send mail components through following steps. Sending mail via SMTP is supported.\n\n1. Find the /cmsi/send_mail/ component channel in [**Channel Management**](/esb/manager/channel/list/){:target=\"_blank\"}, and open the edit page\n2. In **Component Configuration**, configure the SMTP protocol information under the variables smtp_host, smtp_port, smtp_user and smtp_pwd \n\n\n### Send SMS\n\nUser provides QCloud app account, and then, configures it to the send SMS component through the following steps. Sending SMS via QCloud is supported.\n\n1. Find the /cmsi/send_sms/ component channel in [**Channel Management**](/esb/manager/channel/list/){:target=\"_blank\"}, and open the edit page\n2. In **Component Configuration**, configure the QCloud app account under the variables qcloud_app_id and qcloud_app_key. **QCloud app account is highly sensitive information, so pay attention to confidentiality**\n\n**Note:** Before sending SMS, you need to log on QCloud, and create a signature under the application, and create a text template.\n\n### Send WeChat \n\nSupports sending enterprise WeChat message and WeChat Official Account message. User provides the enterprise WeChat account or WeChat official account, and then, configure it to the WeChat Message component through the following steps.\n\n1. Find the /cmsi/send_weixin/ component channel in [**Channel Management**](/esb/manager/channel/list/){:target=\"_blank\"}, and open the edit page\n2. In **Component Configuration**, by selecting wx_type, specify the type of message to be sent: enterprise WeChat, WeChat official account, and then, configure it to the corresponding variable. \n\n**Note:** When sending a WeChat offical account message, the application shall create a message template in WeChat. The template shall contain 4 variables: first (corresponding component parameter heading), keyword1 (corresponding component parameter message), keyword2 (corresponding component parameter date) and remark (corresponding component parameter remark)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/en/custom_conf_manage.md",
    "content": "# Custom Conf Manage\n\nFor component coding or self-service apis, users need to synchronize the configuration information to the database.\nIt is inconvenient to migrate data through the management site. \nTherefore, the API Gateway provides a way to manage configuration through configuration files.\n\n\n## Configuration file path\n\nManage custom system and api configuration in configuration files\n\n```\n[install_path]/open_paas/esb/components/generic/apis/conf.py\n```\n\n## Configuration file content\n\nThe configuration file `conf.py` is a regular python module that contains the following variables\n\n- SYSTEM_DOC_CATEGORY: Document category, which specifies the document category that the system belongs to in [Docs](/esb/api_docs/system/){:target=\"_blank\"}\n- SYSTEMS: System information, corresponding to [System](/esb/manager/system/list/){:target=\"_blank\"}\n- CHANNELS: Component channel information, corresponding to [Channel](/esb/manager/channel/list/){:target=\"_blank\"}\n- BUFFET_COMPONENTS: Self-service api information, corresponding to [Self-service](/esb/manager/buffet_comp/list/){:target=\"_blank\"}\n\n#### SYSTEM_DOC_CATEGORY\n\nDocument category\n\n```python\nSYSTEM_DOC_CATEGORY = [\n    {\n        # Document category label\n        'label': 'Test-Catg',\n        # Display priority, range [1, 10000], small number in front\n        'priority': 100,\n        # System name\n        'systems': ['TEST'],\n    },\n]\n```\n\n#### SYSTEMS\n\nSystem information\n\n```python\nSYSTEMS = [\n    {\n        # System name\n        'name': 'TEST',\n        # System label\n        'label': 'My Test',\n        # System manager\n        'interface_admin': 'admin',\n        # Execution timeout\n        'execute_timeout': 30,\n        # Query timeout\n        'query_timeout': 30,\n        # remarks\n        'remark': 'My Test',\n    },\n]\n\n```\n\n#### CHANNELS\n\nComponent channel information\n\n```python\nCHANNELS = [\n    # Channel path\n    ('/test/healthz/', {\n        # Component code\n        'comp_codename': 'generic.test.healthz',\n    }),\n]\n```\n\n#### BUFFET_COMPONENTS\n\nSelf-service api information\n\n```python\nBUFFET_COMPONENTS = [\n    {\n        # Register config\n        # api name\n        'name': 'get template list',\n        # System name\n        'system_name': 'TEST',\n        # Request method\n        'registed_http_method': 'GET',\n        # API path\n        'registed_path': '/test/heartbeat/',\n        # API type, 2 is Query API, 1 is Execute API\n        'type': 2,  \n        # timeout\n        'timeout_time': 10,\n\n        # Before request\n        # Additional header\n        'extra_headers': {\n            'Token': '1234567890',\n        },\n\n        # Request target\n        # Target url\n        'dest_url': 'http://domain.test.com/test/heartbeat/',\n        # Request method\n        'dest_http_method': 'POST',\n        # Parameters encode, optional value is json, form\n        'favor_post_ctype': 'json', \n    },\n]\n```\n\n## Synchronize configuration to database\n\n```shell\nworkon esb\n# By default, when some of the configurations are inconsistent with the data in the database,\n# the difference information is displayed.\n# --force, when the configuration is inconsistent with the data in the database, \n# forcibly update the configuration to the database.\npython manage.py sync_system_and_channel_data [--force]\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/en/esb_introduction.md",
    "content": "# API Gateway Introduction\n\nThe BlueKing API Gateway is an API hosting service of BlueKing system. \nIt can help developers create, publish, maintain, and protect APIs to open system data or services quickly, inexpensively, and with low risk.\nThe API gateway supports component coding and online self-service, and provides a unified **User Authentication**, \n**BlueKing Application Authentication**, **Request Forwarding**, **Logging** and other functions.\n\n\n### Component coding\n\nIn the API Gateway, developers write the component code and add the component channel configuration through the [Channel Management](/esb/manager/channel/list/){:target=\"_blank\"} to provide the API service.\n\nComponent channel configuration, associated with the component class in the code via **component code**.\nThe component code is automatically generated by the API gateway based on the component code. The rules are as follows:\n\n- Component code consists of three parts: `prefix` . `system name` . `component class name`\n\n- prefix: the default is `generic`\n\n- system name: specified by the sys_name property of the component class and converted to lowercase\n\n- component class name: the class name of the component class. The non-initial uppercase letters of the class name are underlined and converted to lowercase, such as GetHostList to get_host_list\n\nAccording to the above rules, the component code of the system CMDB component class GetHostList is: `generic.cmdb.get_host_list`\n\n### Online self-service \n\nIn the API gateway, developers configure the interface information online through [Self-service](/esb/manager/buffet_comp/list/){:target=\"_blank\"} to provide the API service.\n\nWith self-service, developers do not need to write code. They can connect their own interfaces to the API gateway only through configuration.\n\n\n## Definitions\n\n### System\n\nThe system is mainly used for classification of APIs. In the API Gateway, each api can only belong to one system. \nSystem name is the unique identification of the system and mainly consists of letters and numbers.\n`Note: CC, JOB, GSE, DATA, AUTH, BK_LOGIN and BK_PAAS are default systems which can not be used when a system is registered`\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/en/use_component.md",
    "content": "# API Calling Description\n\nWhen requesting a api, you need to provide application authentication and user authentication information to authenticate the application and the current user.\n\n## APP Authentication\n\nBefore using the api, you shall first get the APP Code and APP Secret depending on [Existing app](/app/list/){:target=\"_blank\"} or [Create an app](/app/){:target=\"_blank\"}, as the information for application authentication.\n\n- **APP Code**: APP unique identification, which is specified by the creator when creating the app, and can be got through **APP Code** in the app basic information. \n- **APP Secret**: APP secret, which is generated by the platform after the app is created, and can be got through **APP Secret** in the app basic information. \n\n## User Authentication \nUser authentication is achieved by verifying the user login token. User login token bk_token will be stored in the Cookies of browser after the user logs in. \n\nAt the time of api calling, if the user login token is not available, the APP Code can be added to the **APP white list free of login token verification**. So, when the APP requests api, it is workable to only provide the username of the current user.\n\n- functioncontroller: [General White List Management](/admin/bkcore/functioncontroller/){:target=\"_blank\"}, which maintains different white lists by specifying different function codes. \n- user_auth::skip_user_auth: \"APP white list free of login token verification\" function code; add this function code and then add the APP Code to \"Function test white list\" \n\n## API Calling\n\nAPI Calling can be carried out in two methods. One is to use the sdk package provided in the APP development framework, and another is to access directly based on api url. \n\n\n### Utilize sdk package in the APP development framework\n\nThere are two ways to access api using sdk package, i.e. shortcuts or ComponentClient. Sample is shown below:\n\n- shortcuts -- get_client_by_request\n```python\n\n    from blueking.component.shortcuts import get_client_by_request\n    # By default, APP authentication info: APP Code and APP Secret is got from django settings\n    # By default, user login token bk_token is got from django request\n    client = get_client_by_request(request)\n    # Parameters\n    kwargs = {\"bk_biz_id\": 1}\n    result = client.cc.get_app_host_list(kwargs)\n```\n\n- shortcuts -- get_client_by_user\n```python\n    from blueking.component.shortcuts import get_client_by_user\n    # By default, APP authentication info: APP Code and APP Secret is got from django settings\n    # By default, username is got from user which is User object or is directly the username data in User\n    user = \"username\"\n    client = get_client_by_user(user)\n    # Parameters\n    kwargs = {\"bk_biz_id\": 1}\n    result = client.cc.get_app_host_list(kwargs)\n```\n\n- ComponentClient\n```python\n     from blueking.component.client import ComponentClient\n     # APP Code\n     bk_app_code = \"xxx\" \n     # APP Secret\n     bk_app_secret = \"xxx-xxx-xxx-xxx-xxx\" \n     # User login token\n     common_args = {\"bk_token\": \"xxx\"}\n     # If APP Code and APP Secret are not provided, the default is to get from django settings \n     client = ComponentClient(\n         bk_app_code=bk_app_code, \n         bk_app_secret=bk_app_secret, \n         common_args=common_args\n     )\n     # Parameters\n     kwargs = {\"bk_biz_id\": 1}\n     result = client.cc.get_app_host_list(kwargs)\n```\n\n#### SDK Package in the APP Development Framework\n\nBy default, the sdk package contains all apis provided by the system\n\nComponents developed by users and self-service access apis can be added to the sdk package by the following steps:\n\n- Create a package file in the APP development framework directory blueking/component/apis. For example, if the system name is agent, create a system package file agent.py\n\n- Add api information to the package file, e.g. add access interface of create_task to agent.py \n\n```python\n# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\n# Name of system api collections is generally Collections + System Name\nclass CollectionsAGENT(object):\n\n    def __init__(self, client):\n        self.client = client\n\n        # create_task is the api name\n        # method is the method used in request of api\n        # path is the api path\n        # api domain name is the system default domain name\n        self.create_task = ComponentAPI(\n            client=self.client, method='POST', path='/api/c/compapi/agent/create_task/',\n            description=u'',\n        )\n```\n\n- Add new package information to blueking/component/collections.py (if it has been added, ignore this step)\n\n```python\n# Import new package path\nfrom .apis.agent import CollectionsAGENT \n\nAVAILABLE_COLLECTIONS = {\n    'cc': CollectionsCC,\n    'job': CollectionsJOB,\n    'bk_login': CollectionsBkLogin,\n    \n    # Add new package info here\n    'agent': CollectionsAGENT,\n}\n```\n\n\n### Direct Access\n\nRequest parameters include: application information (`bk_app_code + bk_app_secret`), user information (`bk_token` or `bk_username`) and request parameters \n\nDirect access using curl, sample is as follows: \n\n```powershell\n    curl -d '{\"bk_app_code\": \"xxx\", \"bk_app_secret\": \"xxx\", \"bk_token\": \"xxx\", \"bk_biz_id\": 1}' 'http://domain.com/path/'\n\n    # data shall be encoded using urlencode\n    curl 'http://domain.com/path/?bk_app_code=xxx&bk_app_secret=xxx&bk_token=xxx&bk_biz_id=1'   \n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/add_new_component.md",
    "content": "# 组件编码 / [附录](#appendix)\n\n组件编码，通过编写组件代码，添加组件通道配置，提供API服务。以如下接口为例，详细介绍如何开发新组件。\n\n`注：适用于需自定义处理逻辑的场景`\n\n- 系统名称：主机配置平台 HCP\n- 接口名称：查询主机列表 get_host_list\n- 接口地址：http://hcp.domain.com/hcp/get_host_list/\n\n## 添加系统\n\n[添加一个新的系统](/esb/manager/system/add/){:target=\"_blank\"}，系统信息中填入以下内容：\n\n- 系统名称：HCP\n- 系统标签：主机配置平台\n\n## 创建系统及组件文件\n在项目的components/generic/apis/下，按照下面结构创建目录及文件(模版[下载](/static/esb/guide/hcp.tar.gz))：\n```\n# 若 apis 不存在，请先创建文件夹 apis，并在其下创建文件 __init__.py\ncomponents/generic/apis/\n|-- __init__.py\n|-- hcp\n|   |-- __init__.py\n|   |-- toolkit\n|   |   |-- __init__.py\n|   |   |-- configs.py\n|   |   |-- tools.py\n|   |-- get_host_list.py\n\n```\n- hcp 为系统包，包名为系统名称小写\n- hcp/toolkit 为系统工具包，存储系统配置及共用方法\n- hcp/toolkit/configs.py 为系统配置模块，配置系统名称、系统域名地址等\n- hcp/toolkit/tools.py 为系统共用方法模块\n- hcp/get_host_list.py 为\"查询主机列表\"组件模块\n\n## 组件配置中添加系统信息\n在\"components/generic/apis/hcp/toolkit/configs.py\"中添加系统配置，样例如下：\n```python\n# -*- coding: utf-8 -*-\nfrom esb.utils import SmartHost\n\n\n# 系统名的小写形式要与系统包名保持一致\nSYSTEM_NAME = 'HCP'\n\nhost = SmartHost(\n    # 需要填入系统正式环境的域名地址\n    host_prod='hcp.domain.com',\n)\n```\n\n## 开发组件模块\n在\"components/generic/apis/hcp/get_host_list.py\"中添加组件代码，样例如下：\n```python\n# -*- coding: utf-8 -*-\nimport json\n\nfrom django import forms\n\nfrom common.forms import BaseComponentForm, TypeCheckField\nfrom components.component import Component\nfrom .toolkit import configs\n\n\nclass GetHostList(Component):\n    \"\"\"\n    apiLabel 查询主机列表\n    apiMehtod GET\n\n    ### 功能描述\n\n    查询主机列表\n\n    ### 请求参数\n\n    {{ common_args_desc }}\n\n    #### 接口参数\n\n    | 字段  |  类型 | 必选   |  描述     |\n    |-----------|------------|--------|------------|\n    | app_id  |  int    | 是  | 业务ID  |\n    | ip_list |  array  | 否  | 主机IP地址，包含 ip 和 bk_cloud_id；其中，bk_cloud_id表示云区域ID  |\n\n    ### 请求参数示例\n\n    ```python\n    {\n        \"bk_app_code\": \"esb_test\",\n        \"bk_app_secret\": \"xxx\",\n        \"bk_token\": \"xxx-xxx-xxx-xxx-xxx\",\n        \"bk_biz_id\": 1,\n        \"ip_list\": [\n            {\n                \"ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0\n            },\n            {\n                \"ip\": \"10.0.0.2\"\n                \"bk_cloud_id\": 0\n            }\n        ]\n    }\n    ```\n\n    ### 返回结果示例\n\n    ```python\n    {\n        \"result\": true,\n        \"code\": 0,\n        \"message\": \"\",\n        \"data\": [\n            {\n                \"inner_ip\": \"10.0.0.1\",\n                \"bk_cloud_id\": 0,\n                \"host_name\": \"db-1\",\n                \"maintainer\": \"admin\"\n            },\n            {\n                \"inner_ip\": \"10.0.0.2\",\n                \"bk_cloud_id\": 0,\n                \"host_name\": \"db-2\",\n                \"maintainer\": \"admin\"\n            }\n        ]\n    }\n    ```\n    \"\"\"\n\n    # 组件所属系统的系统名\n    sys_name = configs.SYSTEM_NAME\n\n    # Form处理参数校验\n    class Form(BaseComponentForm):\n        bk_biz_id = forms.CharField(label=u'业务ID', required=True)\n        ip_list = TypeCheckField(label=u'主机IP地址', promise_type=list, required=False)\n\n        # clean方法返回的数据可通过组件的form_data属性获取\n        def clean(self):\n            return self.get_cleaned_data_when_exist(keys=['bk_biz_id', 'ip_list'])\n\n    # 组件处理入口\n    def handle(self):\n        # 获取Form clean处理后的数据\n        data = self.form_data\n\n        # 设置当前操作者\n        data['operator'] = self.current_user.username\n\n        # 请求系统接口\n        response = self.outgoing.http_client.post(\n            host=configs.host,\n            path='/hcp/get_host_list/',\n            data=json.dumps(data),\n        )\n\n        # 对结果进行解析\n        code = response['code']\n        if code == 0:\n            result = {\n                'result': True,\n                'data': response['data'],\n            }\n        else:\n            result = {\n                'result': False,\n                'message': result['message']\n            }\n\n        # 设置组件返回结果，payload为组件实际返回结果\n        self.response.payload = result\n```\n\n注意：\n\n- 组件类名，为组件模块名去掉下划线(_)，并转为驼峰形式，如get_host_list组件类名应为GetHostList\n- 组件开头部分为组件文档，注册组件通道后，通过下面指令可更新文档，[组件文档地址](/esb/api_docs/system/){:target=\"_blank\"}\n\n\n```shell\nworkon esb\npython manage.py sync_api_docs\n```\n\n## 注册组件通道\n组件模块开发完成后，[注册组件通道](/esb/manager/channel/add/){:target=\"_blank\"}，通道信息中填入内容如下：\n\n- 通道名称：查询服务列表\n- 通道路径：/hcp/get_host_list/\n- 所属系统：选择 HCP 系统\n- 对应组件代号：generic.hcp.get_host_list\n\n## 重启服务\n组件添加完成后，重启服务，重启步骤如下:\n```shell\n# INSTALL_PATH 表示项目安装基准目录\n\n# 重启指令\nworkon open_paas\nsupervisorctl -c $INSTALL_PATH/etc/supervisor-open_paas.conf restart esb\n```\n\n新组件的访问地址为：\n```python\nhttp://xxx.domain.com/api/c/compapi/hcp/get_host_list/\n```\n\n\n# <span id=\"appendix\">附录</span>\n\n开发新组件时，在组件模块中，可根据组件基类Component或公用模块获取一些有用数据，帮助开发。\n\n## Component基类中可用数据\n\n- request: 请求数据，其中常用的属性参考下文描述\n- form_data: 组件模块中自定义Form clean后的数据\n- current_user: 当前用户，通过其属性username获取当前用户的用户名\n- outgoing.http_client: 请求接口Client，可用其请求其他接口，具体参数参考下面描述\n\n### Component中request的常用属性\n\n- request_id: 一次请求的唯一ID，一个uuid字符串\n- app_code: 当前请求的应用ID\n- kwargs: 当前的请求参数，GET请求中的 QueryString 数据 或 POST 请求中 Request Body 数据，已转换为dict\n\n### Component中outgoing.http_client支持方法\n\n```python\n# response_type: json，接口数据是否需要转换为JSON字典，其他不转换\n# max_retries: 0, 接口请求异常时，重试次数\n# request_encoding: 请求接口参数转码为此种类型\n# response_encoding: 接口返回数据转码为此种类型\noutgoing.http_client.request(\n    method, host, path, params=None, data=None, headers={},\n    response_type='json', max_retries=0, response_encoding=None,\n    request_encoding=None, verify=False, cert=None,\n    timeout=None\n)\n\noutgoing.http_client.get # 表示 request('GET', *args, **kwargs)\noutgoing.http_client.post # 表示 request('POST', *args, **kwargs)\n```\n\n## common.forms模块中自定义Field\n\n- ListField: 列表Field，可将逗号，分号、换行、空格分隔的字符串，转换为列表，如可将\"123;456;789\"转换为[\"123\", \"456\", \"789\"]\n- TypeCheckField: 类型检测Field, 通过设置promise_type参数，检测数据的类型，若参数类型不符，抛出异常\n- DefaultBooleanField: 默认布尔Field，布尔数据可通过default参数设置默认值\n\n\n## 组件内调用其他组件的方式\n\n- invoke_other方式，当前用户current_user会传递到被调用组件\n```python\nresult = self.invoke_other('generic.auth.get_user', kwargs={'username': 'xxx'})\n```\n\n- 直接调用方式\n```python\nfrom esb.components.generic.apis.auth.get_user import GetUser\nresult = GetUser().invoke(kwargs={'username': 'xxx'})\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/buffet_component.md",
    "content": "# 自助接入\n\n自助接入，开发者不需要编写代码，在[自助接入](/esb/manager/buffet_comp/list/){:target=\"_blank\"}进行配置，\n即可将自己的接口接入API网关。以如下接口为例，详细介绍如何完成自助接入。\n\n`注：适用于将HTTP协议、无需特殊处理的接口，直接对接的场景`\n\n- 系统名称：主机配置平台 HCP\n- 接口名称：查询主机列表 get_host_list\n- 接口地址：http://hcp.domain.com/hcp/get_host_list/\n\n## 添加系统\n\n[添加一个新的系统](/esb/manager/system/add/){:target=\"_blank\"}，系统信息中填入以下内容：\n\n- 系统名称：HCP\n- 系统标签：主机配置平台\n\n## 添加API配置\n\n打开[自助接入](/esb/manager/buffet_comp/apply/){:target=\"_blank\"}页面，填写接口配置信息，配置信息包含三部分内容：**注册配置**、**请求发出前**、**请求目的地**。\n\n#### 注册配置\n\n注册配置用于指定用户访问API的信息。注册配置中填入以下内容：\n\n- API名称：查询主机列表\n- 所属系统：选择 HCP 系统\n- 注册到的请求类型：GET\n- 注册到的API路径：/hcp/get_host_list/\n\n通过\"注册到的路径\"，加上统一前缀，即是API的接口地址：\n```\nhttp://xxx.domain.com/api/c/self-service-api/hcp/get_host_list/\n```\n\n#### 请求发出前\n请求发出前用于配置访问系统接口时的请求头信息。\n\n#### 请求目的地\n请求目的地用于配置请求系统接口的信息，如系统接口的地址，请求方式，参数设置等。请求目的地配置中填入以下内容：\n\n- 目标接口地址：http://hcp.domain.com/hcp/get_host_list/\n- 目标接口请求类型：POST\n- 编码POST参数方式：json `目标接口请求方式为 POST 时，才需要指定`\n\n## API访问信息\n通过上面的配置，即可接入API，访问API同样会进行应用和用户的认证。API的访问地址为：\n```\nhttp://xxx.domain.com/api/c/self-service-api/hcp/get_host_list/\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/cmsi_component_guide.md",
    "content": "# CMSI消息组件\n\n当前，API网关提供的消息通知通道有：\n\n- 公共语音通知: /cmsi/send_voice_msg/\n- 发送邮件: /cmsi/send_mail/\n- 发送微信: /cmsi/send_weixin/\n- 发送短信: /cmsi/send_sms/\n\nAPI网关定义了这些消息通知组件的[接口协议](/esb/api_docs/system/CMSI/){:target=\"_blank\"}，给出了组件样例（参考项目下的 components/generic/templates/cmsi/），但是，并没有完全实现组件内容，用户可根据接口协议，重写此部分组件。API网关为降低实现消息通知组件的难度，提供了在线更新组件配置，不需编写组件代码的方案。\n\n**注意：**若要更改组件样例，需将样例代码copy到components/generic/apis/cmsi/下修改，components/generic/templates/cmsi中内容，每次发布都会被覆盖。\n\n## 方案一\n\n用户提供兼容消息通知组件[接口协议](/esb/api_docs/system/CMSI/){:target=\"_blank\"}的接口，然后，通过以下步骤配置到组件，API网关会将请求转发到此接口。\n\n1. 在[**通道管理**](/esb/manager/channel/list/){:target=\"_blank\"}中找到对应的组件通道，打开编辑页面\n2. 在**组件配置**下，将接口地址配置到变量 dest_url 下 \n\n**注意：**\n```\n1. send_voice_msg 组件，若 receiver__username 参数有效，将会根据平台用户数据，生成参数 user_list_information\n2. send_mail 组件，若 receiver__username，cc__username 参数有效，将会根据平台用户数据，分别生成参数 receiver, cc\n3. send_sms 组件，若 receiver__username 参数有效，将会根据平台用户数据，生成参数 receiver\n4. send_mail 组件配置中，变量 mail_sender 表示默认的邮件发送者\n\n```\n## 方案二\n\n### 发送邮件\n\n用户提供 SMTP 邮件服务地址和帐号，然后，通过以下步骤配置到发送邮件组件，支持通过 SMTP 发送邮件。\n\n1. 在[**通道管理**中](/esb/manager/channel/list/){:target=\"_blank\"}查找 /cmsi/send_mail/ 组件通道，打开编辑页面\n2. 在**组件配置**下，将 SMTP 协议信息配置到变量 smtp_host, smtp_port, smtp_user, smtp_pwd 下\n\n\n### 发送短信\n\n用户提供腾讯云应用帐号，然后，通过以下步骤配置到发送短信组件，支持通过腾讯云发送短信\n\n1. 在[**通道管理**中](/esb/manager/channel/list/){:target=\"_blank\"}查找 /cmsi/send_sms/ 组件通道，打开编辑页面\n2. 在**组件配置**下，将腾讯云业务帐号配置到变量 qcloud_app_id, qcloud_app_key 下，**腾讯云帐号为高度敏感信息，注意保密**\n\n**注意：**发送短信前，需要到腾讯云上，在应用下创建签名，及创建正文模版\n\n### 发送微信消息\n\n支持发送企业微信消息和微信公众号消息。用户提供企业微信帐号或微信公众号帐号，然后，通过以下步骤配置到发送微信消息组件。\n\n1. 在[**通道管理**中](/esb/manager/channel/list/){:target=\"_blank\"}查找 /cmsi/send_weixin/ 组件通道，打开编辑页面\n2. 在**组件配置**下，通过选择 wx_type，指定要发送的消息类型：企业微信、微信公众号，然后，将对应微信帐号的信息配置到相应变量，**微信帐号为高度敏感信息，注意保密**\n\n**注意：**发送微信公众号消息时，应用需在微信创建消息模版，模版包含4个变量：first(对应组件参数 heading), keyword1(对应组件参数 message), keyword2(对应组件参数 date), remark(对应组件参数 remark)，更多[微信消息组件](/esb/guide/page/weixin_component_guide){:target=\"_blank\"}介绍\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/custom_conf_manage.md",
    "content": "# 自定义配置管理\n\n用户开发组件或自助接入API时，都需要将配置信息，同步到数据库中；\n通过管理端管理配置的方式，不方便对数据进行迁移，因此，API网关提供一种通过配置文件管理配置的方式。\n\n## 配置文件地址\n\n在配置文件中，管理自定义的系统及API配置\n\n```\n[install_path]/open_paas/esb/components/generic/apis/conf.py\n```\n\n## 配置文件内容\n\n配置文件 `conf.py` 是一个普通的 python 模块，其中包含以下变量\n\n- SYSTEM_DOC_CATEGORY: 文档分类，指定系统在[API文档](/esb/api_docs/system/){:target=\"_blank\"}中所属的文档分类\n- SYSTEMS: 系统信息，对应管理端的[系统管理](/esb/manager/system/list/){:target=\"_blank\"}\n- CHANNELS: 组件通道信息，对应管理端的[通道管理](/esb/manager/channel/list/){:target=\"_blank\"}\n- BUFFET_COMPONENTS: 自助接入API信息，对应管理端的[自助接入](/esb/manager/buffet_comp/list/){:target=\"_blank\"}\n\n#### SYSTEM_DOC_CATEGORY\n\n文档分类\n```python\nSYSTEM_DOC_CATEGORY = [\n    {\n        # 文档分类标签\n        'label': 'Test-Catg',\n        # 展示优先级，范围 [1, 10000]，数字小的展示在前面\n        'priority': 100,\n        # 文档分类下的系统名\n        'systems': ['TEST'],\n    },\n]\n```\n\n#### SYSTEMS\n\n系统\n\n```python\nSYSTEMS = [\n    {\n        # 系统名称\n        'name': 'TEST',\n        # 系统标签\n        'label': 'My Test',\n        # 系统接口负责人\n        'interface_admin': 'admin',\n        # 执行类超时时长\n        'execute_timeout': 30,\n        # 查询类超时时长\n        'query_timeout': 30,\n        # 备注\n        'remark': 'My Test',\n    },\n]\n\n```\n\n#### CHANNELS\n\n组件通道\n\n```python\nCHANNELS = [\n    # 通道名称，所属系统，API类型通过组件模块自动获取\n\n    # 通道路径\n    ('/test/healthz/', {\n        # 对应组件代号\n        'comp_codename': 'generic.test.healthz',\n    }),\n]\n\n```\n\n#### BUFFET_COMPONENTS\n\n自助接入API\n\n```python\nBUFFET_COMPONENTS = [\n    {\n        # 注册配置\n        # API名称\n        'name': 'get template list',\n        # 所属系统名称\n        'system_name': 'TEST',\n        # 注册到的请求类型\n        'registed_http_method': 'GET',\n        # 注册到的API路径\n        'registed_path': '/test/heartbeat/',\n        # API类型，2 是查询API，1 是执行API\n        'type': 2,  \n        # 超时时长\n        'timeout_time': 10,\n\n        # 请求发出前\n        # 请求头信息\n        'extra_headers': {\n            'Token': '1234567890',\n        },\n\n        # 请求目的地\n        # 目标接口地址\n        'dest_url': 'http://domain.test.com/test/heartbeat/',\n        # 目标接口请求类型\n        'dest_http_method': 'POST',\n        # 编码POST参数方式，可选值：json, form\n        'favor_post_ctype': 'json', \n    },\n]\n```\n\n## 同步配置到数据库\n\n```shell\nworkon esb\n# 默认情况，当部分配置与数据库中数据不一致时，显示差别信息；\n# --force，配置与数据库中数据不一致时，强制将配置更新到数据库\npython manage.py sync_system_and_channel_data [--force]\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/esb_introduction.md",
    "content": "# API网关介绍\n\nAPI网关（API Gateway）是开发中心API托管服务。可以帮助开发者创建、发布、维护、和保护API，以快速、低成本、低风险地开放系统的数据或服务。\nAPI网关支持组件编码接入和在线自助接入两种接入方式，并提供了统一的**用户认证**、**应用鉴权**、**请求转发**、**日志记录**等功能。\n\n\n### 组件编码接入\n\nAPI网关中，开发者编写组件代码，并通过 [通道管理](/esb/manager/channel/list/){:target=\"_blank\"}，添加组件通道配置，提供API服务。\n\n组件通道配置，通过 **组件代号**，与代码中的组件类进行关联。组件代号由API网关根据组件代码自动生成，规则如下：\n\n- 组件代号由三部分组成：`前缀`.`系统名`.`组件类名`\n\n- 前缀：默认为 `generic`\n\n- 系统名：由组件类的 sys_name 属性指定，并转换为小写格式\n\n- 组件类名：组件类的类名，类名非首字母的大写字母前加下划线，并转换为小写格式，如 GetHostList 转换为 get_host_list\n\n根据上述规则，系统 CMDB 组件类 GetHostList 的组件代号为：`generic.cmdb.get_host_list`\n\n\n### 在线自助接入\n\nAPI网关中，开发者通过 [自助接入](/esb/manager/buffet_comp/list/){:target=\"_blank\"}，在线配置接口信息，提供API服务。\n\n自助接入方式，开发者不需要编写代码，仅通过配置，即可将自己的接口接入API网关。\n\n\n## 名词解释\n\n### 系统\n系统主要用于对API进行分类，在API网关中，每一个API只能属于一个系统；系统的名称是系统的唯一标识，主要由字母和数字组成。\n`注：系统 CC、JOB、GSE、DATA、AUTH、BK_LOGIN、BK_PAAS 为默认系统，注册系统时，不能使用`\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/use_component.md",
    "content": "# API调用说明\n\n请求API时，需提供APP应用认证信息和用户认证信息，用以对APP应用和当前用户进行认证。\n\n## APP应用认证\n使用API前，需先根据[已有应用](/app/list/){:target=\"_blank\"}或[创建一个应用](/app/){:target=\"_blank\"}，获取应用ID和安全密钥，作为应用认证信息。\n\n- **应用ID**: 应用唯一标识，创建应用时由创建者指定，可在应用基本信息中通过 **应用 ID** 获取\n- **安全密钥**: 应用密钥，创建应用后由平台生成，可在应用基本信息中通过 **安全密钥** 获取\n\n## 用户认证\n用户认证，通过验证用户登录态实现。用户登录态bk_token，在用户登录后，存储在浏览器的Cookies中。\n\n调用API时，若无法提供用户登录态，可将应用ID添加到**应用免登录态验证白名单**中，则此应用请求API时，提供当前用户的bk_username即可。\n\n- functioncontroller: [通用白名单管理](/admin/bkcore/functioncontroller/){:target=\"_blank\"}，通过指定不同的功能code，维护不同的白名单\n- user_auth::skip_user_auth: \"应用免登录态验证白名单\" 功能code，添加此功能code，然后将应用ID添加到\"功能测试白名单\"中\n\n## API调用\n\n调用API主要有两种方式，一种是使用APP开发框架中提供的SDK包，一种是根据API地址直接访问。\n\n### 利用APP开发框架中的SDK包\n\n使用SDK包访问API有两种方式，shortcuts或ComponentClient。使用示例如下：\n\n- shortcuts -- get_client_by_request\n```python\n\n    from blueking.component.shortcuts import get_client_by_request\n    # 默认从django settings中获取APP认证信息：应用ID和安全密钥\n    # 默认从django request中获取用户登录态bk_token\n    client = get_client_by_request(request)\n    # 参数\n    kwargs = {'bk_biz_id': 1}\n    result = client.cc.get_app_host_list(kwargs)\n```\n\n- shortcuts -- get_client_by_user\n```python\n    from blueking.component.shortcuts import get_client_by_user\n    # 默认从django settings中获取APP认证信息：应用ID和安全密钥\n    # 默认从user中获取username，user为User对象或直接为User中username数据\n    user = 'username'\n    client = get_client_by_user(user)\n    # 参数\n    kwargs = {'bk_biz_id': 1}\n    result = client.cc.get_app_host_list(kwargs)\n```\n\n- ComponentClient\n```python\n     from blueking.component.client import ComponentClient\n     # APP应用ID\n     bk_app_code = 'xxx' \n     # APP安全密钥\n     bk_app_secret = 'xxx-xxx-xxx-xxx-xxx' \n     # 用户登录态信息\n     common_args = {'bk_token': 'xxx'}\n     # APP应用ID和APP安全密钥如未提供，默认从django settings中获取\n     client = ComponentClient(\n         bk_app_code=bk_app_code, \n         bk_app_secret=bk_app_secret, \n         common_args=common_args\n     )\n     # 参数\n     kwargs = {'bk_biz_id': 1}\n     result = client.cc.get_app_host_list(kwargs)\n```\n\n#### APP开发框架中的SDK包\n\nSDK包默认包含系统提供的所有API；\n\n用户开发的组件及自助接入的API，可以通过以下步骤添加到SDK包：\n\n- 在APP开发框架 blueking/component/apis 目录下，创建系统包文件，如系统名称为 agent，可创建系统包文件 agent.py\n\n- 系统包文件中添加API信息，如 agent.py 中添加 create_task 的访问入口\n\n```python\n# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\n# 系统API集合类的名称，一般为 Collections + 系统名\nclass CollectionsAGENT(object):\n\n    def __init__(self, client):\n        self.client = client\n\n        # create_task为API名，method为请求API使用的方法，path为API路径，API域名为系统默认域名\n        self.create_task = ComponentAPI(\n            client=self.client, method='POST', path='/api/c/compapi/agent/create_task/',\n            description=u'',\n        )\n```\n\n- 在 blueking/component/collections.py 中加入系统API文件信息（若已加入则忽略此步骤）\n\n```python\n# 导入路径\nfrom .apis.agent import CollectionsAGENT \n\nAVAILABLE_COLLECTIONS = {\n    'cc': CollectionsCC,\n    'job': CollectionsJOB,\n    'bk_login': CollectionsBkLogin,\n    \n    # 此处加入新包信息\n    'agent': CollectionsAGENT,\n}\n```\n\n\n### 直接访问\n\n请求参数包括：应用信息(`bk_app_code + bk_app_secret`)，用户信息(`bk_token` 或 `bk_username`)，及请求参数\n\n用 curl 直接访问示例如下：\n\n```powershell\n    curl -d '{\"bk_app_code\": \"xxx\", \"bk_app_secret\": \"xxx\", \"bk_token\": \"xxx\", \"bk_biz_id\": 1}' 'http://domain.com/path/'\n\n    curl 'http://domain.com/path/?bk_app_code=xxx&bk_app_secret=xxx&bk_token=xxx&bk_biz_id=1'   # 数据需urlencode编码\n\n```\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/mdfiles/zh-hans/weixin_component_guide.md",
    "content": "# 微信消息组件\n> <font style=\"font-size:14px;\">蓝鲸微信消息可通过微信公众号或者企业微信2种方式进行通知,\n> 在配置前请先阅读2种方式的差异性，再选择其中一种方式进行配置</font>\n\n| <div style=\"width:80px\">通知方式</div> | 用户绑定 | open_paas模块所在服务器配置 | <div style=\"width:120px\">微信公众平台配置</div> |\n| --- | --- | --- | --- |\n| 微信公众号 | 用户客户端需要有外网或者至少能访问微信相关链接 | (1)必须要有外网或者能访问微信提供的API<br>(2)需要反向代理，能够让代理转发到http://\\{paas_domain\\}/console/user_center/weixin/mp/callback/| (1)服务器配置<br>(2)消息模板配置 |\n| 企业微信 | 用户客户端需要有外网或者至少能访问微信相关链接 | 必须要有外网或者能访问微信提供的API | 授权回调域配置 |\n\n### 前提准备\n* open_paas模块所在服务器必须能访问微信提供的API，微信相关域名如下\n\n```bash\n# 微信提供的API 协议均为https\n# 微信公众号\napi.weixin.qq.com\n# 企业微信\nqyapi.weixin.qq.com\n```\n\n* 确保用户客户端浏览器能够访问微信相关链接，微信相关域名如下\n\n```bash\n# 微信提供的API 协议均为https\n# 微信公众号\nmp.weixin.qq.com\n# 企业微信\nopen.work.weixin.qq.com\nrescdn.qqmail.com\njs.aq.qq.com\n```\n\n### 入口说明\n* 微信公众号： https://mp.weixin.qq.com/\n* 企业微信：https://work.weixin.qq.com/\n* 蓝鲸微信组件配置入口：http://{paas_domain}/esb/manager/index/, 通道管理 → 找到通道名称为“发送微信消息”的组件 → 组件配置\n* 蓝鲸用户微信绑定入口： http://{paas_domain}, 个人中心 → 微信绑定\n\n### 一. 微信公众号\n#### 微信公众号 → 消息模板配置\n> <font style=\"font-size:14px;\">请进入微信公众平台“公众号后台 → 模板消息 → 模板库”</font>\n\n* 搜索“蓝鲸消息提醒”，只有所在行业是IT科技 互联网才能搜索到，其他行业可以请自行添加模板，点击帮助我们完善模板，进入模板库添加（提交后需要一定时间的审核）\n![](/static/esb/guide/weixin_component_guide/15081375626539.jpg)\n\n![](/static/esb/guide/weixin_component_guide/15081379473152.jpg)\n\n* 蓝鲸默认模板内容和蓝鲸组件参数与模版参数映射关系如下图所示，如需调整，可修改 open_paas/esb/components/generic/apis/cmsi/send_weixin.py 中的 get_mp_msg_data 方法\n\n  ![](/static/esb/guide/weixin_component_guide/15081384579344.jpg)\n\n   | 组件参数 | 微信消息模板参数 |\n   | --- | --- |\n   | heading | first |\n   | message | Keyworkd1 |\n   | date | keyworkd2 |\n   | remark | Remark |\n\n* 若已经添加模块库或者已经搜索到“蓝鲸消息通知”的模板库，点击详情进入该模板并添加该模板，添加后在“功能 → 模板消息 → 我的模板”中将看到添加的消息模板，其中的模版ID是我们后续配置组件需要的\n\n#### 微信公众号 → IP白名单和服务器配置\n> <font style=\"font-size:14px;\">请先在微信公众平台上查看公众号后台 → 开发 → 基本配置，是否已经配置了服务器配置（服务器地址，令牌，消息加解密密钥，消息加解密方式）![](/static/esb/guide/weixin_component_guide/15081252708641.jpg)</font>\n\n##### 1. 基本配置 → IP白名单\n由于ESB发送微信消息需要调用微信获取AccessToken接口，所以需要在“基本配置 → 公众号开发者信息 → IP白名单”中配置蓝鲸PaaS部署的机器IP\n\n##### 2. 微信公众平台上已配置了服务器配置\n联系配置了服务器配置的人员，请其协助将在服务器地址响应的服务中添加调用http://{paas_domain}/console/user_center/weixin/mp/callback/（透传微信事件推送） （<font style=\"color:red\">非80端口则paas_domain需带上端口，若是ssl，则需将http改为https</font>）\n\n##### 3. 微信公众平台上未配置服务器配置\n填写服务器配置（填写完，<font style=\"color:red\">先不要点击提交</font>）\n\n* url 填写外网能够访问到的URL（暂时称为weixin_server_url）\n同时需要配置反向代理，将weixin_server_url 转发到企业蓝鲸平台http://{paas_domain}/console/user_center/weixin/mp/callback/ （<font style=\"color:red\">非80端口则paas_domain需带上端口，若是ssl，则需将http改为https</font>）\n* Token 英文或数字，长度为3-32字符，请自行定义随机填写\n* EncodingAESKey 点击随机生成即可\n* 消息加解密方式，选择明文模式即可（任何一种模式都不影响）\n\n填写完服务器配置后，请<font style=\"color:red\">不要点击提交</font>，其实提交也没用，一定会出现“Token验证失败”，因为点击提交，微信会验证weixin_server_url能够正常响应验证，由于还未配置蓝鲸微信消息通知组件，所以一定是失败的，故需要先进行下一步“配置完蓝鲸微信消息通知组件”,再返回来点击提交（<font style=\"color:red\">记得下一步完成后回来点击提交!!!</font>）\n\n\n#### 蓝鲸平台 → API网关\n> <font style=\"font-size:14px;\">蓝鲸微信组件配置入口：http:/{paas_domain}/esb/manager/index/, 通道管理 → 找到通道名称为“发送微信消息”的组件 → 组件配置\n![](/static/esb/guide/weixin_component_guide/15081404321746.jpg)</font>\n\n* wx_type 选择“微信公众号”\n* wx_app_id 【“微信公众号 → 开发 → 基本配置 → 公众号开发信息”】开发者ID(AppID)\n* wx_secret 【\"微信公众号 → 开发 → 基本配置 → 公众号开发信息\"】开发者密码(AppSecret)\n  由于没有显示，可以请企业内维护该公众号的管理员提供\n* wx_token 【\"微信公众号 → 开发 → 基本配置 → 服务器配置\"】令牌(Token)\n* wx_template_id【“微信公众号 → 功能 → 模板消息”】选择之前第一步中配置的消息模板的模板ID\n\n至此蓝鲸通过公众号发送消息的配置完成，请到最后一步用户绑定后验证配置是否正确\n\n### 二. 企业微信\n#### 企业微信配置\n* 配置用于蓝鲸消息通知的应用\n\n“企业微信 → 企业应用” 可以选择已经存在的自建应用或者新建一个应用，将应用的可见范围设置为全企业人员（或至少设置为可能需要接送微信消息通知的人员）\n\n* 配置Web网页登录授权回调域\n\n“企业微信 → 企业应用 → 选择对应的应用 → 企业微信授权登录 → 设置 → Web网页\n → 设置授权回调域” 设置{paas_domain}为登录授权回调域 （<font style=\"color:red\">非80端口则paas_domain需带上端口</font>）\n\n#### 蓝鲸平台 → API网关\n> <font style=\"font-size:14px;\">蓝鲸微信组件配置入口：http:/{paas_domain}/esb/manager/index/, 通道管理 → 找到通道名称为“发送微信消息”的组件 → 组件配置\n![](/static/esb/guide/weixin_component_guide/15081438048577.jpg)</font>\n\n* wx_type 选择\"企业微信\"\n* wx_qy_corpid 【\"企业微信 → 我的企业 → 企业信息\"】CorpID\n* wx_qy_corpsecret【“企业微信 → 企业应用 → 选择对应应用”】Secret\n* wx_qy_agentid【“企业微信 → 企业应用 → 选择对应应用”】AgentId\n\n至此蓝鲸通过企业微信发送消息的配置完成，请到最后一步用户绑定后验证配置是否正确\n\n### 用户绑定\n> <font style=\"font-size:14px;\">蓝鲸桌面 → 个人中心 → 绑定微信</font>\n\n点击\"绑定微信\"，扫描绑定即可\n需要注意：\n\n（1）若是企业微信，需要用户用企业微信APP进行扫描\n\n### 其它注意项\n* **组件会根据开发者ID和开发者密码，获取access_token发送模版消息等，业务若需集中管理 access_token，可优化 components/apis/weixin_mp/get_token.py 中 access_token 获取逻辑**\n* 用户绑定二维码未出现原因\n\n（1）用户客户端未能访问外网或无法访问微信相关URL\n\n（2）open_paas所在服务器服务访问外网或至少无法请求微信相关接口\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/templates/guide/page.html",
    "content": "{% extends \"mainsite/base.html\" %}\n{% load i18n %}\n\n{% block header %}\n    <link href='{{ STATIC_URL }}esb/css/md2html.{{CSS_SUFFIX}}' rel=\"stylesheet\">\n{% endblock %}\n\n{% block main %}\n<div class=\"panel panel-default\">\n    <div class=\"panel-body\" style=\"padding: 0\">\n        <div  style=\"display: table; margin: 0;width: 1200px !important;\">\n            <div class=\"col-md-2 table-cell\" style=\"padding: 0; background: #f9f9f9; border-right: 1px solid #e6e6e6;width: 200px !important; overflow:hidden;\">\n                <div class=\"left-sidebar\">\n                    <ul class=\"nav nav-sidebar left-nav-menus\" style=\"padding-top: 0;\">\n                        {% for name, title in pages %}\n                        <li>\n                        <a name=\"{{name}}\" href=\"{% url 'guide.page' name=name %}\">\n                            {% trans title %}\n                        </a>\n                        </li>\n                        {% endfor %}\n                    </ul>\n                </div>\n\n                <script type=\"text/javascript\" charset=\"utf-8\">\n                    $('ul.left-nav-menus').find('[name=\"{{ current_page }}\"]').parent().addClass('active');\n                </script>\n            </div>\n\n            <div class=\"col-md-10 table-cell\" style=\"width: 1000px !important;\">\n                <div class=\"document\">\n                    <div class=\"padding-body\">\n                        {{ html_part|safe }}\n                    </div>\n                </div>\n                {% if current_page != 'index' %}\n                <div style=\"padding: 0 28px 30px 28px;\">\n                    <hr style=\"color: #eeeeee; background-color: #eeeeee;height: 2px; margin-bottom: 5px;\">\n                    <a href=\"javascript:void(0)\"><span id=\"pre_name\"></span></a>\n                    <a href=\"javascript:void(0)\" class=\"pull-right\"><span id=\"next_name\"></span></a>\n                </div>\n                {% endif %}\n            </div>\n        </div>\n    </div>\n</div>\n{% endblock %}\n\n{% block footer %}\n    <script type=\"application/javascript\" charset=\"utf-8\">\n        $(function(){\n            var pre_html = $('ul.left-nav-menus').find('[name=\"{{ current_page }}\"]').parent().prev().find('a');\n            var next_html = $('ul.left-nav-menus').find('[name=\"{{ current_page }}\"]').parent().next().find('a');\n            var pre_name = pre_html.attr('name');\n            var next_name = next_html.attr('name');\n            var pre_text = pre_html.text();\n            var next_text = next_html.text();\n            if(pre_text){\n                $(\"#pre_name\").text('← '+pre_text);\n            }\n            if(next_text){\n                $('#next_name').text(next_text+' →');\n            }\n            var url = '{% url \"guide.page\" name='__URL__' %}';\n            var pre_url = url.replace('__URL__', pre_name);\n            var next_url = url.replace('__URL__', next_name);\n            $(\"#pre_name\").parent().attr('href', pre_url);\n            $(\"#next_name\").parent().attr('href', next_url);\n        });\n    </script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.urls import path, re_path\n\nfrom . import views\n\n\nurlpatterns = [\n    path('page/index/', views.Page.as_view(), {'name': 'esb_introduction'}, name='guide.page.index'),\n    re_path(r'^page/(?P<name>\\w+)$', views.Page.as_view(), name='guide.page')\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nUtils for mkdoc\n\"\"\"\nimport os\n\nfrom esb.common.django_utils import get_cur_language\n\n\ndef mdfile_by_name(name):\n    app_dir = os.path.dirname(os.path.abspath(__file__))\n    cur_languate = get_cur_language()\n    return os.path.join(app_dir, 'mdfiles', cur_languate, '%s.md' % name)\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/guide/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport copy\nimport markdown\n#from markdown.extensions.headerid import HeaderIdExtension\nfrom django.views.generic import View\nfrom django.shortcuts import render\nfrom django.utils.translation import gettext as _\n\nfrom .utils import mdfile_by_name\nfrom esb.common.decorators import is_user_super\nfrom esb.configs.default import menu_items\nfrom esb.common.django_utils import get_cur_language\n\nmenu_active_item = 'user_guide'\n\n\nPAGES = [\n    ('esb_introduction', _('API网关介绍')),\n    ('add_new_component', _('组件编码')),\n    ('buffet_component', _('自助接入')),\n    ('use_component', _('API调用说明')),\n    ('custom_conf_manage', _('自定义配置管理')),\n    ('cmsi_component_guide', _('CMSI消息组件')),\n]\n\nZH_PAGES = copy.deepcopy(PAGES)\nZH_PAGES.extend([\n    ('weixin_component_guide', _('微信消息组件')),\n])\n\n\nclass Page(View):\n\n    @is_user_super\n    def get(self, request, name):\n        with open(mdfile_by_name(name)) as fp:\n            md_content = fp.read()\n\n            html_part = markdown.markdown(\n                md_content,\n                extensions=[\n                    'tables',\n                    'attr_list',\n                    'fenced_code',\n                    #HeaderIdExtension(level=1),\n                    'markdown.extensions.codehilite',\n                    'markdown.extensions.toc'\n                ],\n            )\n        cur_language = get_cur_language()\n\n        return render(request, 'guide/page.html', {\n            'pages': ZH_PAGES if cur_language == 'zh-hans' else PAGES,\n            'current_page': name,\n            'html_part': html_part,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/buffet_comp/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/buffet_comp/api_views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.views.generic import View\n\nfrom esb.bkcore.models import ESBBuffetMapping\nfrom esb.common.django_utils import JsonResponse, get_error_prompt\nfrom esb.common.decorators import is_user_super\nfrom .forms import ESBBuffetMappingForm, EditESBBuffetMappingForm\n\n\nclass APIBuffetMappingView(View):\n    \"\"\"Check All Mappings\"\"\"\n\n    @is_user_super\n    def get(self, request, item_id):\n        obj = ESBBuffetMapping.objects.get(pk=item_id)\n        return JsonResponse({\n            'error_message': None,\n            'data': obj.get_info()\n        })\n\n    @is_user_super\n    def post(self, request):\n        form = ESBBuffetMappingForm(request.POST)\n        if form.is_valid():\n            obj = ESBBuffetMapping(**form.cleaned_data)\n            obj.save()\n            return JsonResponse({\n                'error_message': None,\n                'data': obj.get_info()\n            })\n\n        return JsonResponse({\n            'error_message': get_error_prompt(form),\n            'data': None,\n        })\n\n    @is_user_super\n    def put(self, request, item_id):\n        from django.http import QueryDict\n        put = QueryDict(request.body)\n        form = EditESBBuffetMappingForm(put)\n\n        if form.is_valid():\n            obj = ESBBuffetMapping.objects.get(pk=form.cleaned_data['id'])\n            obj.__dict__.update(form.cleaned_data)\n            obj.save()\n            return JsonResponse({\n                'error_message': None,\n                'data': obj.get_info()\n            })\n\n        return JsonResponse({\n            'error_message': get_error_prompt(form),\n            'data': None,\n        })\n\n    @is_user_super\n    def delete(self, request, item_id):\n        obj = ESBBuffetMapping.objects.get(pk=item_id)\n        obj.delete()\n        return JsonResponse({'error_message': None, 'data': None})\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/buffet_comp/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ESBBuffetComponent, ESBBuffetMapping, ComponentSystem\n\n\ndef clean_data(data):\n    for key, val in data.items():\n        if isinstance(val, str):\n            data[key] = val.strip()\n    return data\n\n\nclass ESBBuffetComponentForm(forms.Form):\n    \"\"\"Form for ESBBuffetComponent\"\"\"\n\n    HTTP_METHOD_CHOICES = (\n        ('GET', 'GET'),\n        ('POST', 'POST'),\n        # ('_ORIG', u'[所有] 透传原始请求类型(不建议使用)'),\n    )\n\n    FAVOR_CTYPE_CHOICES = (\n        ('json', 'json'),\n        ('form', 'form'),\n    )\n\n    TYPE_CHOICE = (\n        (1, _('执行API')),\n        (2, _('查询API')),\n    )\n\n    name = forms.CharField(label=_('API名称'), max_length=256, required=True)\n    system = forms.ModelChoiceField(\n        label=_('所属系统'),\n        queryset=ComponentSystem.objects.all(),\n        required=True,\n        empty_label=None,\n    )\n\n    dest_url = forms.URLField(\n        label=_('目标接口地址'),\n        required=True,\n        max_length=2048,\n        help_text=_('可使用 http://domain.com/users/{username}/ 形式的路径变量')\n    )\n    dest_http_method = forms.ChoiceField(\n        label=_('目标接口请求类型'),\n        choices=HTTP_METHOD_CHOICES,\n        required=True,\n    )\n    favor_post_ctype = forms.ChoiceField(\n        label=_('编码POST参数方式'),\n        choices=FAVOR_CTYPE_CHOICES,\n        required=False,\n        help_text=_('默认使用 json 编码请求参数，选择 form 后使用 form-urlencoded 编码')\n    )\n    extra_headers = forms.CharField(\n        label=_('额外请求头信息'),\n        required=False,\n        widget=forms.HiddenInput()\n    )\n    extra_params = forms.CharField(\n        label=_('额外请求参数'),\n        required=False,\n        widget=forms.HiddenInput()\n    )\n\n    registed_path = forms.RegexField(\n        label=_('注册到的API路径'),\n        regex=r'^/[/a-zA-Z0-9_{}-]+$',\n        help_text=_('以斜杠开头，只能包含斜杠、大小写字母、数字、下划线，如：\"/host/get_host_list/\"，可额外包含路径变量，如 \"/users/{username}/\"；注册到的请求类型+注册到的API路径，在自助接入中需全局唯一'),  # noqa\n        required=True,\n        max_length=255,\n        error_messages={\n            'invalid': _('输入的路径不符合要求'),\n        })\n    registed_http_method = forms.ChoiceField(\n        label=_('注册到的请求类型'),\n        choices=HTTP_METHOD_CHOICES,\n        required=True\n    )\n\n    mappings_input = forms.ModelChoiceField(\n        label=_('对请求参数应用mapping'),\n        queryset=ESBBuffetMapping.objects.all(),\n        required=False\n    )\n    mappings_output = forms.ModelChoiceField(\n        label=_('对返回结果应用mapping'),\n        queryset=ESBBuffetMapping.objects.all(),\n        required=False\n    )\n    timeout_time = forms.IntegerField(\n        label=_('超时时长'),\n        required=False,\n        error_messages={\n            'invalid': _('输入格式不正确')\n        },\n        min_value=1,\n        max_value=86400,\n        initial=None,\n        help_text=_('单位秒，未设置时以所属系统超时时长为准'),\n        widget=forms.NumberInput(attrs={'style': 'width: 450px;'})\n    )\n    type = forms.ChoiceField(\n        label=_('API类型'),\n        choices=TYPE_CHOICE,\n        required=True,\n        initial=2,\n    )\n\n    def clean(self):\n        data = clean_data(self.cleaned_data)\n        method = data.get('registed_http_method', '')\n        value = data.get('registed_path', '')\n        value = '/%s/' % value.strip('/')\n        data['registed_path'] = value\n\n        if ESBBuffetComponent.objects.filter(\n                registed_path=value, registed_http_method=method).exists():\n            self._errors['registed_path'] = self.error_class([_('路径 %s 已经被占用了，请修改') % value])\n            del data['registed_path']\n        return data\n\n\nclass EditESBBuffetComponentForm(ESBBuffetComponentForm):\n\n    id = forms.IntegerField(label='ID', widget=forms.HiddenInput())\n\n    def clean(self):\n        data = clean_data(self.cleaned_data)\n        value = data.get('registed_path', '')\n        method = data.get('registed_http_method', '')\n        id = data['id']\n\n        value = '/%s/' % value.strip('/')\n        data['registed_path'] = value\n\n        if ESBBuffetComponent.objects.exclude(id=id).filter(\n                registed_path=value, registed_http_method=method).exists():\n            self._errors['registed_path'] = self.error_class([_('路径 %s 已经被占用了，请修改') % value])\n            del data['registed_path']\n        return data\n\n\nclass ESBBuffetMappingForm(forms.Form):\n\n    SOURCE_TYPE_CHOICES = [\n        (1, 'jinja2'),\n    ]\n\n    name = forms.CharField(label='名称', max_length=40, required=True)\n    source_type = forms.ChoiceField(\n        label='源码类型', choices=SOURCE_TYPE_CHOICES, required=True,\n        help_text=('目前只支持使用 Jinja2 模板作为 Mappings')\n    )\n    source = forms.CharField(label='源码', required=True, widget=forms.Textarea())\n\n    def clean(self):\n        data = clean_data(self.cleaned_data)\n        name = data.get('name') or ''\n        if ESBBuffetMapping.objects.filter(name=name).exists():\n            self._errors['name'] = self.error_class(['名称 {0} 已被占用，请修改'.format(name)])\n            del data['name']\n        return data\n\n\nclass EditESBBuffetMappingForm(ESBBuffetMappingForm):\n    id = forms.IntegerField(label='ID', widget=forms.HiddenInput())\n\n    def clean(self):\n        data = clean_data(self.cleaned_data)\n        id = data['id']\n        name = data['name']\n        if ESBBuffetMapping.objects.exclude(id=id).filter(name=name).exists():\n            self._errors['name'] = self.error_class(['名称 {0} 已被占用，请修改'.format(name)])\n            del data['name']\n        return data\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/buffet_comp/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.shortcuts import render\nfrom django.views.generic import View\nfrom django.http import HttpResponseRedirect\nfrom django.urls import reverse\nfrom django.conf import settings\n\nfrom esb.bkcore.models import ESBBuffetComponent, ESBBuffetMapping\nfrom esb.common.decorators import is_user_super\nfrom .forms import (\n    ESBBuffetComponentForm, EditESBBuffetComponentForm,\n    ESBBuffetMappingForm, EditESBBuffetMappingForm)\nfrom esb.configs.default import menu_items\nfrom esb.common.django_utils import i18n_form\nfrom ..system.forms import ComponentSystemForm\n\nmenu_active_item = 'buffet_manager'\nDEFAULT_HOST = 'http://paas.bking.com'\n\n\nclass ApplyBuffetCompView(View):\n    \"\"\"Apply for a new buffet component\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        form = ESBBuffetComponentForm()\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/buffet_comp/apply.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n    @is_user_super\n    def post(self, request):\n        form = ESBBuffetComponentForm(request.POST)\n        if form.is_valid():\n            data = form.cleaned_data\n            obj = ESBBuffetComponent(\n                submitter=request.user.username,\n                **data\n            )\n            obj.save()\n            return HttpResponseRedirect(reverse('manager.buffet_comp.list'))\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/buffet_comp/apply.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n\nclass BuffetCompsView(View):\n    \"\"\"Check and approve all BuffetComps\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        items = ESBBuffetComponent.objects.all().order_by('system', 'registed_path',\n                                                          'registed_http_method')\n        try:\n            host = settings.PAAS_DOMAIN\n        except Exception:\n            host = DEFAULT_HOST\n        try:\n            schema = settings.HTTP_SCHEMA\n        except Exception:\n            schema = \"http\"\n\n        schema_prefix = '%s://' % schema\n        if not host.startswith(schema_prefix):\n            host = '%s://%s' % (schema, host)\n\n        return render(request, 'manager/buffet_comp/list.html', {\n            'items': items,\n            'host': '%s/api/c/self-service-api' % host,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n\nclass EditBuffetCompView(View):\n    \"\"\"Edit a BuffetComponent\"\"\"\n\n    @is_user_super\n    def get(self, request, item_id):\n        item = ESBBuffetComponent.objects.get(pk=item_id)\n        d = item.__dict__\n        d['system'] = item.system\n        form = EditESBBuffetComponentForm(initial=dict(**d))\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/buffet_comp/edit.html', {\n            'item': item,\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n    @is_user_super\n    def post(self, request, item_id):\n        item = ESBBuffetComponent.objects.get(pk=item_id)\n        form = EditESBBuffetComponentForm(request.POST)\n        if form.is_valid():\n            data = form.cleaned_data\n            item.__dict__.update(data)\n            item.system = data['system']\n            item.save()\n            return HttpResponseRedirect(reverse('manager.buffet_comp.list'))\n\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/buffet_comp/edit.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n\nclass BuffetMappingsView(View):\n    \"\"\"Check All Mappings\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        form = ESBBuffetMappingForm()\n        form_edit = EditESBBuffetMappingForm()\n        items = ESBBuffetMapping.objects.all().order_by('created_time')\n        return render(request, 'manager/buffet_comp/mapping/list.html', {\n            'items': items,\n            'form': form,\n            'form_edit': form_edit,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/channel/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/channel/api_views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.views.generic import View\nfrom django.conf import settings\n\nfrom esb.bkcore.models import ESBChannel\nfrom esb.common.django_utils import JsonResponse\nfrom esb.common.decorators import is_user_super\n\nDEFAULT_HOST = 'http://paas.bking.com'\n\n\nclass DeletedChannelView(View):\n    \"\"\"Deleted channel view\"\"\"\n\n    @is_user_super\n    def post(self, request):\n        channel_ids = request.POST.get('channel_ids')\n        channel_ids = channel_ids.split(',') if channel_ids else []\n        objs = ESBChannel.objects.filter(id__in=channel_ids)\n        affected_rows = objs.count()\n        objs.delete()\n        return JsonResponse({'affected_rows': affected_rows, 'error_message': None})\n\n\nclass ChannelListSearchView(View):\n    \"\"\"根据过滤条件，筛选数据\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        system_name = request.GET.get('system_name')\n        channel_path = request.GET.get('channel_path')\n        # channel_name = request.GET.get('channel_name')\n        channels = ESBChannel.objects.all()\n        if system_name:\n            channels = channels.filter(component_system__name=system_name)\n        # if channel_name:\n        #     channels = channels.filter(name__contains=channel_name)\n        if channel_path:\n            channels = channels.filter(path__contains=channel_path)\n\n        # 获取HOST\n        try:\n            host = settings.PAAS_DOMAIN\n        except Exception:\n            host = DEFAULT_HOST\n        try:\n            schema = settings.HTTP_SCHEMA\n        except Exception:\n            schema = \"http\"\n\n        schema_prefix = '%s://' % schema\n        if not host.startswith(schema_prefix):\n            host = '%s://%s' % (schema, host)\n\n        channels = [\n            {\n                'id': channel.id,\n                'name': channel.name_display,\n                'label': '[%s] %s' % (channel.component_system.name, channel.name_display),\n                'path': channel.path,\n                'method': channel.method,\n                'component_codename': channel.component_codename,\n                'is_active': channel.is_active,\n                'created_time': channel.created_time.strftime('%Y-%m-%d'),\n                'last_modified_time': channel.last_modified_time.strftime('%Y-%m-%d'),\n                'timeout_time': channel.timeout_time,\n                'host': '%s/api/c/compapi' % host,\n                'perm_level_label': channel.get_perm_level_display(),\n                'rate_limit_required': channel.rate_limit_required,\n                'static_url': settings.STATIC_URL,\n            }\n            for channel in channels.order_by('-is_active', 'component_system__name', 'path')\n        ]\n        return JsonResponse({'data': channels})\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/channel/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport re\nimport json\n\nfrom django import forms\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ESBChannel, ComponentSystem\nfrom esb.common.base_utils import smart_int\n\n\nclass ESBChannelForm(forms.ModelForm):\n    \"\"\"Form for ESBChannel\"\"\"\n\n    TYPE_CHOICE = (\n        (1, _('执行API')),\n        (2, _('查询API')),\n    )\n    PERM_LEVEL_CHOICE = (\n        (0, _('无限制')),\n        (1, _('普通权限')),\n    )\n\n    component_system = forms.ModelChoiceField(\n        label=_('所属系统'),\n        queryset=ComponentSystem.objects.all(),\n        required=True,\n        empty_label=None,\n    )\n    path = forms.RegexField(\n        label=_('通道路径'),\n        max_length=255,\n        required=True,\n        regex=r'^/[/a-zA-Z0-9_-]+$',\n        help_text=_('通道路径，以斜杠开头，只能包含斜杠、字母、数字、下划线(_)、连接符(-)，一般设置为\"/system_name/component_name/\"，例如\"/host/get_host_list/\"；通道路径需唯一'),  # noqa\n        error_messages={\n            'invalid': _('输入的通道路径不符合要求')\n        }\n    )\n    component_codename = forms.RegexField(\n        label=_('对应组件代号'),\n        max_length=255,\n        required=True,\n        regex=r'^[a-z][a-z0-9._]+[a-z0-9_]$',\n        help_text=_('组件代号，只能包含小写字母、数字、下划线或点号，由三部分组成：\"前缀(generic).系统名小写.组件类名小写\"，例如 \"generic.host.get_host_list\"'),  # noqa\n        error_messages={\n            'invalid': _('输入的组件代号不符合要求')\n        }\n    )\n    timeout_time = forms.IntegerField(\n        label=_('超时时长'),\n        required=False,\n        error_messages={\n            'invalid': _('输入格式不正确')\n        },\n        min_value=1,\n        max_value=86400,\n        initial=None,\n        help_text=_('单位秒，未设置时以所属系统超时时长为准'),\n        widget=forms.NumberInput(attrs={'style': 'width: 450px;'})\n    )\n    type = forms.ChoiceField(\n        label=_('API类型'),\n        choices=TYPE_CHOICE,\n        required=True,\n        initial=2,\n    )\n\n    class Meta:\n        model = ESBChannel\n        # component_system 需要放在前面，name 和 component_codename 参数校验，依赖它的值\n        fields = ['component_system', 'name', 'path', 'component_codename',\n                  'is_active', 'timeout_time', 'type', 'comp_conf', 'component_name',\n                  'rate_limit_required', 'rate_limit_conf']\n\n    def clean_path(self):\n        path = self.cleaned_data['path']\n        path = '/%s/' % path.strip('/')\n\n        if ESBChannel.objects.filter(path=path).exists():\n            raise forms.ValidationError(_('通道路径已存在'))\n        return path\n\n    def clean_component_codename(self):\n        component_codename = self.cleaned_data['component_codename']\n        component_system = self.cleaned_data.get('component_system')\n\n        if not component_system:\n            return component_codename\n\n        if self.instance and self.instance.component_codename == component_codename:\n            return component_codename\n\n        if not re.match(r'^generic\\.%s\\.[a-z][a-z0-9_]*$' % component_system.name.lower(), component_codename):\n            raise forms.ValidationError(_('输入的组件代号不符合要求'))\n\n        return component_codename\n\n    def clean_component_name(self):\n        component_codename = self.cleaned_data.get('component_codename')\n        if not component_codename:\n            return ''\n        return component_codename.rsplit('.', 1)[1]\n\n    def clean_rate_limit_conf(self):\n        max_allowed_requests = smart_int(self.data.get('max_allowed_requests'))\n        rate_limit_conf_unit = self.data.get('rate_limit_conf_unit')\n        if max_allowed_requests is None or not rate_limit_conf_unit:\n            return ''\n        rate_limit_conf = {\n            'app_ratelimit': {\n                '__default': [{'tokens': max_allowed_requests, rate_limit_conf_unit: 1}]\n            }\n        }\n        return json.dumps(rate_limit_conf)\n\n    def clean(self):\n        data = self.cleaned_data\n        for key, val in data.items():\n            if isinstance(val, str):\n                data[key] = val.strip()\n        return data\n\n\nclass EditESBChannelForm(ESBChannelForm):\n\n    def clean_path(self):\n        path = self.cleaned_data['path']\n        path = '/%s/' % path.strip('/')\n\n        if ESBChannel.objects.exclude(id=self.instance.id).filter(path=path).exists():\n            raise forms.ValidationError(_('通道路径已存在'))\n        return path\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/channel/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\n\nfrom django.shortcuts import render\nfrom django.urls import reverse\nfrom django.http import HttpResponseRedirect\nfrom django.views.generic import View\nfrom django.http import Http404\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ESBChannel, ComponentSystem\nfrom esb.common.decorators import is_user_super\nfrom esb.common.django_utils import i18n_form, get_cur_language\nfrom esb.configs.default import menu_items\nfrom .forms import ESBChannelForm, EditESBChannelForm\nfrom ..system.forms import ComponentSystemForm\nfrom ..utils import md2html\n\nmenu_active_item = 'channel_manager'\n\n\nclass ChannelListView(View):\n    \"\"\"Channel list page\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        channel_exists = ESBChannel.objects.exists()\n        systems = [{'name': '', 'label': 'All'}]\n        channel_system_ids = ESBChannel.objects.values_list('component_system_id', flat=True).distinct()\n        systems.extend([\n            {\n                'name': system.name,\n                'label': '[%s] %s' % (system.name, system.label_display),\n            }\n            for system in ComponentSystem.objects.filter(id__in=channel_system_ids).order_by('name')\n        ])\n\n        cur_language = get_cur_language()\n        return render(request, 'manager/channel/list.html', {\n            'channel_exists': channel_exists,\n            'systems': systems,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n            'channel_term_html': md2html('%s/channel' % cur_language)\n        })\n\n\nclass AddChannelView(View):\n    \"\"\"Add channel view\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        form = ESBChannelForm()\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/channel/add.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n    @is_user_super\n    def post(self, request):\n        form = ESBChannelForm(request.POST)\n        if form.is_valid():\n            form.save()\n            return HttpResponseRedirect(reverse('manager.channel.list'))\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/channel/add.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n\nclass EditChannelView(View):\n    \"\"\"Edit channel view\"\"\"\n\n    @is_user_super\n    def get(self, request, channel_id):\n        if not str(channel_id).isdigit():\n            raise Http404\n\n        channel = ESBChannel.objects.get(id=channel_id)\n\n        channel.name = channel.name_display\n\n        form = EditESBChannelForm(instance=channel)\n        system_form = ComponentSystemForm()\n\n        try:\n            rate_limit_conf = json.loads(channel.rate_limit_conf)\n            default_rate_limit_conf = rate_limit_conf['app_ratelimit']['__default'][0]\n            rate_limit_tokens = default_rate_limit_conf.pop('tokens', '')\n            rate_limit_unit = list(default_rate_limit_conf.keys())[0]\n        except Exception:\n            rate_limit_tokens = ''\n            rate_limit_unit = 'second'\n\n        if channel.allow_edit_comp_conf:\n            # 可在 comp_conf_group 中新增字段，用户在通道管理页面上可看到并更新新增字段\n            _comp_conf_group = self.comp_conf_group(channel.path, channel.comp_conf_json)\n            _comp_conf_val = json.dumps([(conf['key'], conf['value']) for conf in _comp_conf_group['comp_conf']])\n        else:\n            _comp_conf_group = None\n            _comp_conf_val = ''\n\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n\n        if channel.is_official:\n            form.fields['name'].widget.attrs['readonly'] = True\n            form.fields['path'].widget.attrs['readonly'] = True\n            form.fields['component_codename'].widget.attrs['readonly'] = True\n\n        return render(request, 'manager/channel/edit.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n            'comp_conf_val': _comp_conf_val,\n            'rate_limit_required': channel.rate_limit_required,\n            'comp_conf_group': _comp_conf_group,\n            'rate_limit_conf': {\n                'tokens': rate_limit_tokens,\n                'unit': rate_limit_unit\n            }\n        })\n\n    @is_user_super\n    def post(self, request, channel_id):\n        channel = ESBChannel.objects.get(id=channel_id)\n        post_data = request.POST.copy()\n\n        # 值不变更\n        unchanged_data = {}\n        if channel.is_official:\n            unchanged_data['name'] = channel.name\n        if channel.is_confapi:\n            unchanged_data['component_name'] = channel.component_name\n        if not channel.allow_edit_comp_conf:\n            unchanged_data['comp_conf'] = channel.comp_conf\n\n        form = EditESBChannelForm(post_data, instance=channel)\n        if form.is_valid():\n            form.instance.__dict__.update(unchanged_data)\n            form.save()\n            return HttpResponseRedirect(reverse('manager.channel.list'))\n        system_form = ComponentSystemForm()\n        form = i18n_form(form)\n        system_form = i18n_form(system_form)\n        return render(request, 'manager/channel/edit.html', {\n            'form': form,\n            'system_form': system_form,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n    def comp_conf_group(self, path, comp_conf):\n        \"\"\"\n        注意：生成结果的 comp_conf 中不能有 key 值相同的项，否则，数据库中 comp_conf 也会出现多余的重复字段\n        \"\"\"\n        if path == '/cmsi/send_weixin/':\n            comp_conf = dict(comp_conf)\n            return {\n                # 参数分组字段\n                'group_field': 'wx_type',\n                # 参数分组可选值\n                'groups': [\n                    {'value': 'qywx', 'label': _('企业微信')},\n                    {'value': 'mp', 'label': _('微信公众号')},\n                ],\n                # 字段配置\n                'comp_conf': [\n                    {\n                        'key': 'wx_type',\n                        'value': comp_conf.get('wx_type', ''),\n                    },\n                    {\n                        'key': 'wx_app_id',\n                        'value': comp_conf.get('wx_app_id', ''),\n                        'group': 'wx_type wx_type_mp',\n                    },\n                    {\n                        'key': 'wx_secret',\n                        'value': comp_conf.get('wx_secret', ''),\n                        'group': 'wx_type wx_type_mp',\n                        'text_type': 'password',\n                    },\n                    {\n                        'key': 'wx_token',\n                        'value': comp_conf.get('wx_token', ''),\n                        'group': 'wx_type wx_type_mp',\n                        'text_type': 'password',\n                    },\n                    {\n                        'key': 'wx_template_id',\n                        'value': comp_conf.get('wx_template_id', ''),\n                        'group': 'wx_type wx_type_mp',\n                    },\n                    {\n                        'key': 'wx_qy_corpid',\n                        'value': comp_conf.get('wx_qy_corpid', ''),\n                        'group': 'wx_type wx_type_qy wx_type_qywx',\n                    },\n                    {\n                        'key': 'wx_qy_corpsecret',\n                        'value': comp_conf.get('wx_qy_corpsecret', ''),\n                        'group': 'wx_type wx_type_qy wx_type_qywx',\n                        'text_type': 'password',\n                    },\n                    {\n                        'key': 'wx_qy_agentid',\n                        'value': comp_conf.get('wx_qy_agentid', ''),\n                        'group': 'wx_type wx_type_qy wx_type_qywx',\n                    },\n                ]\n            }\n        elif path == '/cmsi/send_mail/':\n            comp_conf = dict(comp_conf)\n            return {\n                # 字段配置\n                'comp_conf': [\n                    {\n                        'key': 'dest_url',\n                        'value': comp_conf.get('dest_url', ''),\n                    },\n                    {\n                        'key': 'smtp_host',\n                        'value': comp_conf.get('smtp_host', ''),\n                    },\n                    {\n                        'key': 'smtp_port',\n                        'value': comp_conf.get('smtp_port', 25),\n                    },\n                    {\n                        'key': 'smtp_user',\n                        'value': comp_conf.get('smtp_user', ''),\n                    },\n                    {\n                        'key': 'smtp_pwd',\n                        'value': comp_conf.get('smtp_pwd', ''),\n                        'text_type': 'password',\n                    },\n                    {\n                        'key': 'smtp_usessl',\n                        'value': comp_conf.get('smtp_usessl', 'False'),\n                    },\n                    {\n                        'key': 'smtp_usetls',\n                        'value': comp_conf.get('smtp_usetls', 'False'),\n                    },\n                    {\n                        'key': 'mail_sender',\n                        'value': comp_conf.get('mail_sender', ''),\n                    },\n                ]\n            }\n        elif path in ['/cmsi/send_sms/', '/cmsi/send_voice_msg/']:\n            comp_conf = dict(comp_conf)\n            return {\n                # 字段配置\n                'comp_conf': [\n                    {\n                        'key': 'dest_url',\n                        'value': comp_conf.get('dest_url', ''),\n                    },\n                    {\n                        'key': 'qcloud_app_id',\n                        'value': comp_conf.get('qcloud_app_id', ''),\n                    },\n                    {\n                        'key': 'qcloud_app_key',\n                        'value': comp_conf.get('qcloud_app_key', ''),\n                        'text_type': 'password',\n                    },\n                ]\n            }\n\n        comp_conf = [\n            {\n                'key': key,\n                'value': value\n            }\n            for key, value in comp_conf\n        ]\n        return {'comp_conf': comp_conf}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/index/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/index/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.shortcuts import render\nfrom django.views.generic import View\n\nfrom esb.common.decorators import is_user_super\nfrom esb.configs.default import menu_items\nfrom esb.common.django_utils import get_cur_language\nfrom ..utils import md2html\n\n\nmenu_active_item = 'manager_index'\n\n\nclass IndexView(View):\n    \"\"\"Index page\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        cur_language = get_cur_language()\n        return render(request, 'manager/index.html', {\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n            'index_html': md2html('%s/index' % cur_language)\n        })\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/system/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/system/api_views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.views.generic import View\nfrom django.utils.translation import gettext as _\n\nfrom esb.common.django_utils import JsonResponse\nfrom esb.bkcore.models import ComponentSystem, ESBChannel, ESBBuffetComponent\nfrom .forms import ComponentSystemForm\nfrom esb.common.decorators import is_user_super\n\n\nclass DeletedSystemView(View):\n    \"\"\"Deleted system view\"\"\"\n\n    @is_user_super\n    def post(self, request):\n        system_ids = request.POST.get('system_ids')\n        system_ids = system_ids.split(',') if system_ids else []\n        objs = ComponentSystem.objects.filter(id__in=system_ids)\n        ESBChannel.objects.filter(component_system__in=objs).delete()\n        ESBBuffetComponent.objects.filter(system__in=objs).delete()\n        affected_rows = objs.count()\n        objs.delete()\n        return JsonResponse({'affected_rows': affected_rows, 'error_message': None})\n\n\nclass AddSystemView(View):\n    \"\"\"添加系统\"\"\"\n    @is_user_super\n    def post(self, request):\n        form = ComponentSystemForm(request.POST)\n        if form.is_valid():\n            form.save()\n            data = form.cleaned_data\n            data['id'] = form.instance.id\n            data['display_name'] = form.instance.get_display_name()\n            return JsonResponse({'result': True, 'data': data})\n\n        error_message = ';'.join([','.join([_(err) for err in field_error]) for field_error in list(form.errors.values())])\n        return JsonResponse({'result': False, 'error_message': error_message})\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/system/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django import forms\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ComponentSystem, ESBChannel, SystemDocCategory\nfrom esb.bkcore.constants import DEFAULT_DOC_CATEGORY\nfrom esb.configs.default import SYSTEM_DOC_CATEGORY\n\nDEFAULT_SYSTEM_NAMES = ['CC', 'JOB', 'GSE', 'AUTH', 'BK_LOGIN', 'DATA', 'FTA', 'CMSI']\n\n\nclass ComponentSystemForm(forms.ModelForm):\n    \"\"\"Form for ComponentSystem\"\"\"\n\n    name = forms.RegexField(\n        label=_('系统名称'),\n        regex=r'^[a-zA-Z][a-zA-Z0-9_]*$',\n        required=True,\n        max_length=32,\n        error_messages={\n            'invalid': _('输入的系统名称不符合要求')\n        },\n        help_text=_('系统唯一标识，由英文字母、下划线(_)或数字组成，并且以字母开头')\n    )\n    execute_timeout = forms.IntegerField(\n        label=_('执行类超时时长'),\n        required=False,\n        error_messages={\n            'invalid': _('输入格式不正确')\n        },\n        min_value=1,\n        max_value=86400,\n        help_text=_('单位秒，未设置时超时时长为30秒'),\n        widget=forms.NumberInput(attrs={'style': 'width: 450px;'})\n    )\n    query_timeout = forms.IntegerField(\n        label=_('查询类超时时长'),\n        required=False,\n        error_messages={\n            'invalid': _('输入格式不正确')\n        },\n        min_value=1,\n        max_value=86400,\n        help_text=_('单位秒，未设置时超时时长为30秒'),\n        widget=forms.NumberInput(attrs={'style': 'width: 450px;'})\n    )\n    remark = forms.CharField(\n        label=_('备注'),\n        required=False,\n        widget=forms.Textarea(attrs={'rows': '5'}),\n    )\n\n    class Meta:\n        model = ComponentSystem\n        fields = ['name', 'label', 'interface_admin', 'remark', 'execute_timeout', 'query_timeout']\n\n    def add_and_clean_doc_category(self):\n        # 添加新分类\n        doc_category_name = self.data.get('doc_category') or DEFAULT_DOC_CATEGORY\n        category_name_map = dict([\n            (category['label'], name)\n            for name, category in SYSTEM_DOC_CATEGORY.items()\n        ])\n        doc_category_name = category_name_map.get(doc_category_name) or doc_category_name\n        obj, _ = SystemDocCategory.objects.get_or_create(name=doc_category_name)\n        self.instance.doc_category_id = obj.id\n        self.instance.save()\n        # 清理不用的分类\n        doc_category_ids = ComponentSystem.objects\\\n            .filter(doc_category_id__isnull=False)\\\n            .order_by('doc_category_id')\\\n            .values_list('doc_category_id', flat=True)\\\n            .distinct()\n        SystemDocCategory.objects.exclude(id__in=doc_category_ids).delete()\n\n    def clean(self):\n        data = self.cleaned_data\n        for key, val in data.items():\n            if isinstance(val, str):\n                data[key] = val.strip()\n        return data\n\n    def clean_name(self):\n        name = self.cleaned_data['name'].upper()\n        if name in DEFAULT_SYSTEM_NAMES:\n            raise forms.ValidationError(_('默认系统名称，不能使用'))\n        if ComponentSystem.objects.filter(name=name).exists():\n            raise forms.ValidationError(_('系统名称已存在'))\n        return self.cleaned_data['name']\n\n\nclass EditComponentSystemForm(ComponentSystemForm):\n\n    def clean_name(self):\n        name = self.cleaned_data['name'].upper()\n        if ComponentSystem.objects.exclude(id=self.instance.id).filter(name=name).exists():\n            raise forms.ValidationError(_('系统名称已存在'))\n        # 如果是默认系统，则系统名不能修改\n        system_name = self.instance.name.upper()\n        if system_name in DEFAULT_SYSTEM_NAMES and name != system_name:\n            raise forms.ValidationError(_('默认系统名称，不能修改'))\n        if name != system_name and ESBChannel.objects.filter(component_system=self.instance).exists():\n            raise forms.ValidationError(_('系统下存在通道，不能修改'))\n        return self.cleaned_data['name']\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/system/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.shortcuts import render\nfrom django.urls import reverse\nfrom django.http import HttpResponseRedirect\nfrom django.views.generic import View\nfrom django.utils.translation import gettext as _\n\nfrom esb.bkcore.models import ComponentSystem\nfrom esb.bkcore.constants import DEFAULT_DOC_CATEGORY\nfrom esb.common.decorators import is_user_super\nfrom esb.common.django_utils import i18n_form, get_cur_language\nfrom esb.configs.default import menu_items\nfrom .forms import ComponentSystemForm, EditComponentSystemForm, SystemDocCategory\nfrom ..utils import md2html\n\nmenu_active_item = 'system_manager'\n\n\nclass SystemListView(View):\n    \"\"\"System list page\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        systems = ComponentSystem.objects.all().order_by('name')\n        cur_language = get_cur_language()\n        return render(request, 'manager/system/list.html', {\n            'systems': systems,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n            'system_term_html': md2html('%s/system' % cur_language)\n        })\n\n\nclass AddSystemView(View):\n    \"\"\"Add ComponentSystem view\"\"\"\n\n    @is_user_super\n    def get(self, request):\n        form = ComponentSystemForm()\n        doc_category_list = SystemDocCategory.objects.all()\n        form = i18n_form(form)\n        return render(request, 'manager/system/add.html', {\n            'form': form,\n            'default_doc_category': DEFAULT_DOC_CATEGORY,\n            'doc_category_list': doc_category_list,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n    @is_user_super\n    def post(self, request):\n        form = ComponentSystemForm(request.POST)\n        if form.is_valid():\n            form.save()\n            form.add_and_clean_doc_category()\n            return HttpResponseRedirect(reverse('manager.system.list'))\n        form = i18n_form(form)\n        doc_category_list = SystemDocCategory.objects.all()\n        return render(request, 'manager/system/add.html', {\n            'form': form,\n            'default_doc_category': DEFAULT_DOC_CATEGORY,\n            'doc_category_list': doc_category_list,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n\nclass EditSystemView(View):\n    \"\"\"Edit system view\"\"\"\n\n    @is_user_super\n    def get(self, request, system_id):\n        system = ComponentSystem.objects.get(id=system_id)\n\n        if system.is_official:\n            system.label = _(system.label)\n            system.remark = _(system.remark)\n\n        form = EditComponentSystemForm(instance=system)\n\n        if system.is_official:\n            form.fields['name'].widget.attrs['readonly'] = True\n            form.fields['label'].widget.attrs['readonly'] = True\n            form.fields['remark'].widget.attrs['readonly'] = True\n\n        doc_category_list = SystemDocCategory.objects.all()\n        form = i18n_form(form)\n        return render(request, 'manager/system/edit.html', {\n            'form': form,\n            'system': system,\n            'doc_category_list': doc_category_list,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n\n    @is_user_super\n    def post(self, request, system_id):\n        system = ComponentSystem.objects.get(id=system_id)\n        post_data = request.POST.copy()\n\n        if system.is_official:\n            post_data['label'] = system.label\n            post_data['remark'] = system.remark\n\n        form = EditComponentSystemForm(post_data, instance=system)\n        if form.is_valid():\n            form.save()\n\n            if not system.is_official:\n                form.add_and_clean_doc_category()\n\n            return HttpResponseRedirect(reverse('manager.system.list'))\n        form = i18n_form(form)\n        doc_category_list = SystemDocCategory.objects.all()\n        return render(request, 'manager/system/edit.html', {\n            'form': form,\n            'doc_category_list': doc_category_list,\n            'menu_items': menu_items,\n            'menu_active_item': menu_active_item,\n        })\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/base.html",
    "content": "{% extends \"mainsite/base.html\" %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/buffet_comp/apply.html",
    "content": "{% extends \"manager/buffet_comp/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block main %}\n\n{% include \"manager/buffet_comp/helpers/buffet_tab.html\" with hilight=\"apply\" %}\n\n<div class=\"row\">\n    <div class=\"col-md-12\">\n        <form action=\"\" method=\"post\" name=\"form-apply\" class=\"form-inline form-columns\" style=\"margin-bottom: 24px\">{% csrf_token %}\n            <div class=\"well\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <h4>{% trans \"注册配置\" %}</h4>\n                    </div>\n                    <div class=\"col-md-10\">\n                        {{ form.name|bootstrap }}\n                        {{ form.system|bootstrap }}\n                        {{ form.registed_http_method|bootstrap }}\n                        {{ form.registed_path|bootstrap }}\n                        {{ form.type|bootstrap }}\n                        {{ form.timeout_time|bootstrap }}\n                    </div>\n                </div>\n            </div>\n            <div class=\"well\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <h4>{% trans \"请求发出前\" %}</h4>\n                    </div>\n                    <div class=\"col-md-10\">\n                        <div id=\"pair-extra-headers\" class=\"form-group\"></div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"well\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <h4>{% trans \"请求目的地\" %}</h4>\n                    </div>\n                    <div class=\"col-md-10\">\n                        {{ form.dest_url|bootstrap }}\n                        {{ form.dest_http_method|bootstrap }}\n                        {{ form.favor_post_ctype|bootstrap }}\n                    </div>\n                </div>\n            </div>\n\n            {{ form.extra_headers }}\n            <button type=\"submit\" class=\"btn btn-primary\">{% trans \"确认申请\" %}</button> \n            <button type=\"button\" class=\"btn btn-default cancel\">{% trans \"取消\" %}</button> \n        </form>\n    </div>\n</div>\n{% include 'manager/system/add_system_tmpl.html' %}\n{% endblock %}\n\n{% block footer %}\n\n{% verbatim %}\n<script type=\"text/x-mustache-template\" id=\"tmpl-kvip\">\n<label class=\"control-label\">{{ label }}</label>\n    <div class=\"kv-rows\">\n    {{{ part_rows }}}\n    </div>\n    <div class=\"row\">\n      <div class=\"col-md-12\">\n        <button type=\"button\" class=\"btn btn-default pair-add-row\">\n        <i class=\"bk-icon icon-plus\" style=\"font-weight: bolder; margin-top: 2px;\"></i>\n        {% endverbatim %}\n        {% trans \"添加一行\" %}</button>\n        {% verbatim %}\n      </div>\n    </div>\n</script>\n\n<script type=\"text/x-mustache-template\" id=\"tmpl-kvip-row\">\n<div class=\"row kv-row\">\n    <div class=\"col-md-5 form-group-inline\">\n      <input class=\"form-control\" type=\"text\" placeholder=\"key\" name=\"key\" value=\"{{ key }}\" />\n    </div>\n    <div class=\"col-md-5 form-group-inline\">\n      <input class=\"form-control\" type=\"text\" placeholder=\"value\" name=\"value\" value=\"{{ value }}\" />\n    </div>\n    <div class=\"form-group-inline\">\n      <button type=\"button\" class=\"pair-remove-row btn btn-link\">\n        {% endverbatim %}\n        <i class=\"bk-icon icon-close1\" style=\"font-weight: bolder; margin-top: 2px;\"></i> {% trans \"删除\" %}</button>\n        {% verbatim %}\n    </div>\n  </div>\n</script>\n{% endverbatim %}\n\n<script type=\"text/javascript\" charset=\"utf-8\">\nvar UrlMaker = {\n    'tmpls': {\n        system_add: \"{% url 'manager.api.system.add' %}\",\n        buffet_list: \"{% url 'manager.buffet_comp.list' %}\",\n    },\n    'make': function(tmpl_name, params) {\n        var result = this.tmpls[tmpl_name];\n        $.each(params || {}, function(k, v){\n            k = '__' + k.toUpperCase() + '__';\n            result = result.replace(k, v);\n        });\n        return result;\n    }\n};\n\nvar current_conf = {\n    'extra_headers': {{ form.extra_headers.value|default:\"{}\"|safe }},\n    'csrf_token': '{{ csrf_token }}',\n};\n\n</script>\n<script src=\"{{ STATIC_URL }}esb/js/esb_add_system.{{JS_SUFFIX}}\"></script>\n<script src=\"{{ STATIC_URL }}esb/js/buffet_update.{{JS_SUFFIX}}\"></script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/buffet_comp/base.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load i18n %}\n\n{% block container %}\n<style type=\"text/css\" media=\"screen\">\n.form-group .control-label {\n    margin-bottom: 5px;\n} \n</style>\n\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"自助接入\" %}</span>\n        <a href=\"{% url 'guide.page' name='buffet_component' %}\" title=\"{% trans '跳转到使用指南' %}\" target=\"_blank\">\n            <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;font-weight: bold\"></i>\n        </a>\n    </div>\n\n    {% block main %}\n    {% endblock %}\n\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/buffet_comp/edit.html",
    "content": "{% extends \"manager/buffet_comp/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block main %}\n\n{% include \"manager/buffet_comp/helpers/buffet_tab.html\" with title=item.name %}\n\n<div class=\"row\">\n    <div class=\"col-md-12\">\n        <form action=\"\" method=\"post\" name=\"form-apply\" class=\"form-inline form-columns\" style=\"margin-bottom: 24px\">{% csrf_token %}\n            <div class=\"well\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <h4>{% trans \"注册配置\" %}</h4>\n                    </div>\n                    <div class=\"col-md-10\">\n                        {{ form.id }}\n                        {{ form.name|bootstrap }}\n                        {{ form.system|bootstrap }}\n                        {{ form.registed_http_method|bootstrap }}\n                        {{ form.registed_path|bootstrap }}\n                        {{ form.type|bootstrap }}\n                        {{ form.timeout_time|bootstrap }}\n                    </div>\n                </div>\n            </div>\n            <div class=\"well\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <h4>{% trans \"请求发出前\" %}</h4>\n                    </div>\n                    <div class=\"col-md-10\">\n                        <div id=\"pair-extra-headers\" class=\"form-group\"></div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"well\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <h4>{% trans \"请求目的地\" %}</h4>\n                    </div>\n                    <div class=\"col-md-10\">\n                        {{ form.dest_url|bootstrap }}\n                        {{ form.dest_http_method|bootstrap }}\n                        {{ form.favor_post_ctype|bootstrap }}\n                    </div>\n                </div>\n            </div>\n\n            {{ form.extra_headers }}\n            <button type=\"submit\" class=\"btn btn-primary\">{% trans \"确认修改\" %}</button> \n            <button type=\"button\" class=\"btn btn-default cancel\">{% trans \"取消\" %}</button> \n        </form>\n    </div>\n</div>\n{% include 'manager/system/add_system_tmpl.html' %}\n{% endblock %}\n\n{% block footer %}\n\n{% verbatim %}\n<script type=\"text/x-mustache-template\" id=\"tmpl-kvip\">\n<label class=\"control-label\">{{ label }}</label>\n    <div class=\"kv-rows\">\n    {{{ part_rows }}}\n    </div>\n    <div class=\"row\">\n      <div class=\"col-md-12\">\n        <button type=\"button\" class=\"btn btn-default pair-add-row\">\n            <span class=\"glyphicon glyphicon-plus\"></span>\n            {% endverbatim %}\n            {% trans \"添加一行\" %}\n            {% verbatim %}\n        </button>\n      </div>\n    </div>\n</script>\n\n<script type=\"text/x-mustache-template\" id=\"tmpl-kvip-row\">\n<div class=\"row kv-row\">\n    <div class=\"col-md-5 form-group-inline\">\n      <input class=\"form-control\" type=\"text\" placeholder=\"key\" name=\"key\" value=\"{{ key }}\" />\n    </div>\n    <div class=\"col-md-5 form-group-inline\">\n      <input class=\"form-control\" type=\"text\" placeholder=\"value\" name=\"value\" value=\"{{ value }}\" />\n    </div>\n    <div class=\"form-group-inline\">\n      <button type=\"button\" class=\"pair-remove-row btn btn-link\">\n        <span class=\"glyphicon glyphicon-remove\"></span> \n        {% endverbatim %}\n        {% trans \"删除\" %}\n        {% verbatim %}\n      </button>\n    </div>\n  </div>\n</script>\n{% endverbatim %}\n\n<script type=\"text/javascript\" charset=\"utf-8\">\nvar UrlMaker = {\n    'tmpls': {\n        system_add: \"{% url 'manager.api.system.add' %}\",\n        buffet_list: \"{% url 'manager.buffet_comp.list' %}\",\n    },\n    'make': function(tmpl_name, params) {\n        var result = this.tmpls[tmpl_name];\n        $.each(params || {}, function(k, v){\n            k = '__' + k.toUpperCase() + '__';\n            result = result.replace(k, v);\n        });\n        return result;\n    }\n};\n\nvar current_conf = {\n    'extra_headers': {{ form.extra_headers.value|default:\"{}\"|safe }},\n    'csrf_token': '{{ csrf_token }}',\n};\n\n</script>\n<script src=\"{{ STATIC_URL }}esb/js/esb_add_system.{{JS_SUFFIX}}\"></script>\n<script src=\"{{ STATIC_URL }}esb/js/buffet_update.{{JS_SUFFIX}}\"></script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/buffet_comp/helpers/buffet_tab.html",
    "content": "{% load i18n %}\n<div class=\"row\">\n    <div class=\"col-md-12\">\n        <ul class=\"nav nav-tabs\" id=\"buffet-tab\" style=\"margin-bottom: 20px\">\n            <li name=\"list\">\n                <a href=\"{% url 'manager.buffet_comp.list' %}\">\n                  <i class=\"bk-icon icon-list\" style=\"font-weight: bolder; margin-top: 2px;\"></i>  \n                  {% trans \"已接入\" %}\n                </a>\n            </li>\n            <li name=\"apply\">\n                <a href=\"{% url 'manager.buffet_comp.apply' %}\">\n                    <i class=\"bk-icon icon-plus\" style=\"font-weight: bolder; margin-top: 2px;\"></i>\n                    {% trans \"申请接入\" %}\n                </a>\n            </li>\n            {% if title %}\n            <li class=\"active\" name=\"custom\">\n                <a href=\"{% url 'manager.buffet_comp.apply' %}\">\n                    {{ title }}\n                </a>\n            </li>\n            {% endif %}\n        </ul>\n    </div>\n</div>\n\n<script type=\"text/javascript\" charset=\"utf-8\">\n$(function (){\n    {% if hilight %}\n        $('#buffet-tab li[name=\"{{hilight}}\"]').addClass(\"active\");\n    {% endif %}\n}); \n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/buffet_comp/list.html",
    "content": "{% extends \"manager/buffet_comp/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block main %}\n\n<style type=\"text/css\" media=\"screen\">\n.component-groups .system-name {\n    font-weight: bold;\n    font-size: 20px;\n    line-height: 40px;\n}\n.component-groups .overflow-hidden {\n     text-overflow: ellipsis;\n     overflow: hidden;\n     white-space: nowrap;\n}\n</style>\n\n{% include \"manager/buffet_comp/helpers/buffet_tab.html\" with hilight=\"list\" %} \n<div class=\"mymodal-backdrop\"></div>\n<div class=\"row\">\n    <div class=\"col-md-12\">\n        {% regroup items by system as system_list %}\n\n        <ul class=\"component-groups list-unstyled\">\n            {% for system in system_list %}\n            <li><span class=\"system-name\">{{ system.grouper.name|default:\"BUFFET\" }}</span>\n                <table data-sortable=\"\" class=\"table table-hover table-striped\" data-sortable-initialized=\"true\">\n                <colgroup>\n                    <col></col>\n                    <col width=\"200px\"></col>\n                    <col width=\"300px\"></col>\n                    <col width=\"160px\"></col>\n                </colgroup>\n                {% for item in system.list %}\n                <tr>\n                    <td>\n                        <p class=\"overflow-hidden\" style=\"width: 480px;\">\n                        <a href=\"{% url 'manager.buffet_comp.edit' item.pk %}\" title=\"[{{ item.registed_http_method }}] {{ item.registed_path }}\">\n                            [{{ item.registed_http_method }}]\n                            {{ item.registed_path }}\n                        </a>\n                        </p>\n                    </td>\n                    <td>\n                        <p class=\"overflow-hidden\" style=\"width: 200px\" title=\"{{ item.name }}\">\n                        {{ item.name }}\n                        </p>\n                    </td>\n                    <td>{{ item.created_time|date:\"Y-m-d H:i\" }}</td>\n                    <td>\n                        <div class=\"dropdown esb_url show_esb_url\">\n                            <button class=\"btn btn-success\" title=\"{% trans 'API地址' %}\" id=\"{{ item.pk }}\">\n                                {% trans \"API地址\" %}\n                                <i class=\"bk-icon icon-down-shape\"></i>\n                            </button>\n                            <div class=\"dropdown-content\">\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-btn\">\n                                        <a class=\"btn btn-default btn-link-url\" href=\"{{ host }}{{ item.registed_path }}\" target=\"_blank\">\n                                            <i class=\"bk-icon icon-chain\" style=\"color: #337ab7\"></i>\n                                        </a>\n                                    </span>\n                                    <input type=\"text\" class=\"form-control invoke-url\" onfocus=\"this.select()\" value=\"{{ host }}{{ item.registed_path }}\" readonly>\n                                    <span class=\"input-group-btn\">\n                                        <button class=\"btn btn-default copy-to-clipboard\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"{% trans '复制到剪贴板' %}\">\n                                            <i class=\"bk-icon icon-clipboard\"></i>\n                                        </button>\n                                    </span>\n                                </div>\n                            </div>\n                        </div>\n                    </td>\n                </tr>\n                {% endfor %}\n            </table>\n            </li>\n            {% empty %}\n            <li>\n                <table data-sortable=\"\" class=\"table table-hover table-striped\" data-sortable-initialized=\"true\">\n                    <tr>\n                        <td colspan=\"5\" style=\"text-align: center\">{% trans \"您还没有相关自助接入API信息\" %}\n                    </tr>\n                </table>\n            </li>\n            {% endfor %}\n        </ul>\n    </div>\n</div>\n<div>\n    {{ pager.get_bootstrap_display|safe }} \n</div>\n{% endblock %}\n\n{% block footer %}\n<script src=\"{{ STATIC_URL }}esb/js/buffet_list.{{JS_SUFFIX}}\"></script>\n{%  endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/channel/add.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block main %}\n\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"添加新通道\" %}</span>\n    </div>\n\n    <div class=\"page-content\" style=\"width: 80%\">\n        <form action=\"\" method=\"post\" class=\"form-inline form-columns\">{% csrf_token %}\n            {{ form.name|bootstrap }}\n            {{ form.path|bootstrap }}\n            {{ form.component_system|bootstrap }}\n            {{ form.component_codename|bootstrap }}\n            {{ form.type|bootstrap }}\n            {{ form.timeout_time|bootstrap }}\n\n            <div class=\"form-group\" style=\"display: none;\">\n                <div class=\"controls \">\n                    <div class=\"checkbox\">\n                        <label>\n                            <input id=\"id_rate_limit_required\" name=\"rate_limit_required\" type=\"checkbox\"> \n                            <span>{% trans \"开启请求频率限制\" %}</span>\n                        </label>\n                                                \n                        <div class=\"well rate-limit-config-container\" style=\"display: none;\">\n                            <div class=\"form-inline\">\n                                <input value=\"\" type=\"number\" min=\"0\" name=\"max_allowed_requests\" placeholder=\"{% trans '最大请求数' %}\" class=\"form-control\" style=\"width: 220px\">\n                                <select class=\"form-control\" id=\"id_rate_limit_conf_unit\" name=\"rate_limit_conf_unit\" style=\"width: 120px\">\n                                    <option value=\"second\">{% trans \"每秒\" %}</option>\n                                    <option value=\"minute\">{% trans \"每分钟\" %}</option>\n                                    <option value=\"hour\">{% trans \"每小时\" %}</option>\n                                </select>\n                            </div>\n                            <div class=\"help-block mt10\">{% trans \"频率限制维度\" %}: <strong>{% trans \"每个蓝鲸应用\" %}</strong></div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            {{ form.is_active|bootstrap }}\n            <div class=\"form-group action\">\n                <button type=\"submit\" class=\"btn btn-primary\">{% trans \"确认添加\" %}</button> \n                <button type=\"button\" class=\"btn btn-default cancel\">{% trans \"取消\" %}</button> \n            </div>\n        </form>\n    </div>\n</div>\n\n{% include 'manager/system/add_system_tmpl.html' %}\n{% endblock %}\n\n{% block footer %}\n<script src=\"{{ STATIC_URL }}esb/js/esb_add_system.{{JS_SUFFIX}}\"></script>\n<script src=\"{{ STATIC_URL }}esb/js/channel.{{JS_SUFFIX}}\"></script>\n<script type=\"text/javascript\">\n$(function() {\n    $('button.cancel').bind('click', function() {\n       window.location.href = \"{% url 'manager.channel.list' %}\";\n    });\n    // 添加系统\n    var url_add_system = \"{% url 'manager.api.system.add' %}\";\n    add_system(url_add_system, '{{ csrf_token }}', $('#id_component_system'));\n\n    // 初始化对应组件代号\n    $(\"#id_component_system\").change();\n});\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/channel/edit.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block main %}\n\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"修改通道\" %}</span>\n    </div>\n\n    <div class=\"page-content\" style=\"width: 80%\">\n        <form action=\"\" method=\"post\" class=\"form-inline form-columns\">{% csrf_token %}\n            {{ form.name|bootstrap }}\n            {{ form.path|bootstrap }}\n            {{ form.component_system|bootstrap }}\n            {{ form.component_codename|bootstrap }}\n            {{ form.type|bootstrap }}\n            {{ form.timeout_time|bootstrap }}\n\n            {% if comp_conf_group %}\n            <div class=\"form-group\">\n                <label class=\"control-label\" for=\"id_comp_conf\">{% trans \"组件配置\" %}</label>\n                <input class=\"form-control\" id=\"id_comp_conf_val\" name=\"comp_conf\" type=\"hidden\" value=\"{{ comp_conf_val }}\">\n                <div class=\"controls\">\n                    <div class=\"panel-content\">\n                        <table id=\"id_comp_conf\" class=\"table table-header-bg table-hover mb0\" style=\"width: 450px\">\n                            <thead style=\"border-top: 1px solid #ddd;\">\n                                <tr>\n                                    <th style=\"width:25%\">{% trans \"变量名\" %}</th>\n                                    <th style=\"width:75%\">{% trans \"变量值\" %}</th>\n                                </tr>\n                            </thead>\n                            <tbody>\n                                <!-- 展示组件配置 -->\n                                {% for field_conf in comp_conf_group.comp_conf %}\n                                {% if field_conf.key == comp_conf_group.group_field %}\n                                <tr>\n                                    <td style=\"padding-top: 15px; text-align: left\">{{ field_conf.key }}</td>\n                                    <td>\n                                        <select class=\"form-control\" conf_name=\"{{ field_conf.key }}\" value=\"{{ field_conf.value }}\" style=\"width: 350px\">\n                                            {% for group in comp_conf_group.groups %}\n                                            {% if field_conf.value == group.value %}\n                                            <option value=\"{{ group.value }}\" selected=\"selected\">{{ group.label }}</option>\n                                            {% else %}\n                                            <option value=\"{{ group.value }}\">{{ group.label }}</option>\n                                            {% endif %}\n                                            {% endfor %}\n                                        </select>\n                                    </td>\n                                </tr>\n                                {% else %}\n                                <tr class=\"{{field_conf.group}}\">\n                                    <td style=\"padding-top: 15px; text-align: left\">{{ field_conf.key }}</td>\n                                    <td><input type={{ field_conf.text_type|default:\"text\" }} class=\"form-control\" conf_name=\"{{ field_conf.key }}\" value=\"{{ field_conf.value }}\" style=\"width: 350px\" /></td>\n                                </tr>\n                                {% endif %}\n                                {% endfor %}\n                            </tbody>\n                        </table>\n                    </div>\n                </div>\n            </div>\n            {% endif %}\n\n            <div class=\"form-group\" style=\"display: none;\">\n                <div class=\"controls \">\n                    <div class=\"checkbox\">\n                        <label>\n                            <input {% if rate_limit_required %}checked=\"checked\"{% endif %} id=\"id_rate_limit_required\" name=\"rate_limit_required\" type=\"checkbox\"> \n                            <span>{% trans \"开启请求频率限制\" %}</span>\n                        </label>\n                                                \n                        <div class=\"well rate-limit-config-container\" {% if not rate_limit_required %}style=\"display: none;\"{% endif %}>\n                            <div class=\"form-inline\">\n                                <input value=\"{{ rate_limit_conf.tokens }}\" type=\"number\" min=\"0\" name=\"max_allowed_requests\" placeholder=\"{% trans '最大请求数' %}\" class=\"form-control\" style=\"width: 220px\">\n                                <select class=\"form-control\" id=\"id_rate_limit_conf_unit\" name=\"rate_limit_conf_unit\" style=\"width: 120px\">\n                                    <option value=\"second\">{% trans \"每秒\" %}</option>\n                                    <option value=\"minute\">{% trans \"每分钟\" %}</option>\n                                    <option value=\"hour\">{% trans \"每小时\" %}</option>\n                                </select>\n                            </div>\n                            <div class=\"help-block mt10\">{% trans \"频率限制维度\" %}: <strong>{% trans \"每个蓝鲸应用\" %}</strong></div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            {{ form.is_active|bootstrap }}\n            <div class=\"form-group action\">\n                <button type=\"submit\" class=\"btn btn-primary\">{% trans \"提交修改\" %}</button> \n                <button type=\"button\" class=\"btn btn-default cancel\">{% trans \"取消\" %}</button> \n            </div>\n        </form>\n    </div>\n</div>\n{% include 'manager/system/add_system_tmpl.html' %}\n{% endblock %}\n\n{% block footer %}\n<script src=\"{{ STATIC_URL }}esb/js/esb_add_system.{{JS_SUFFIX}}\"></script>\n<script src=\"{{ STATIC_URL }}esb/js/channel.{{JS_SUFFIX}}\"></script>\n<script type=\"text/javascript\">\n$(function() {\n    $('button.cancel').bind('click', function() {\n       window.location.href = \"{% url 'manager.channel.list' %}\";\n    });\n    // 添加系统\n    var url_add_system = \"{% url 'manager.api.system.add' %}\";\n    add_system(url_add_system, '{{ csrf_token }}', $('#id_component_system'));\n\n    $(\"#id_rate_limit_conf_unit\").val(\"{{ rate_limit_conf.unit }}\");\n\n    $(\"#id_comp_conf select\").bind(\"change\", function() {\n        var selected_val = $(this).val();\n        var conf_name = $(this).attr(\"conf_name\");\n        var group_class = \".\" + conf_name;\n        var selected_group_class = group_class + \"_\" + selected_val;\n        $(\"#id_comp_conf\").find(selected_group_class).show();\n        $(\"#id_comp_conf\").find(group_class).not(selected_group_class).hide();\n    });\n\n    // 维护 comp_conf\n    $(\"#id_comp_conf input, #id_comp_conf select\").bind('change', function() {\n        var $comp_conf_val = $(\"#id_comp_conf_val\");\n        comp_conf_val = JSON.parse($comp_conf_val.val());        \n        key = $(this).attr(\"conf_name\");\n        val = $(this).val().trim();\n        for (i=0, len=comp_conf_val.length; i<len; i++) {\n            if (comp_conf_val[i][0] == key) {\n                comp_conf_val[i][1] = val;\n                break\n            }\n        }\n        $comp_conf_val.val(JSON.stringify(comp_conf_val));\n    });\n\n    $(\"#id_comp_conf select\").change();\n\n});\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/channel/list.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load i18n %}\n\n{% block header %}\n    <link href='{{ STATIC_URL }}esb/css/helper.{{CSS_SUFFIX}}' rel=\"stylesheet\">\n    <style>\n        #table_channels table tr th{\n            overflow: hidden;\n            white-space: nowrap;\n            text-overflow: ellipsis;\n        }\n        #table_channels table tr td:nth-child(-n+5){\n            overflow: hidden;\n            white-space: nowrap;\n            text-overflow: ellipsis;\n        }\n\n        .search-form-label {\n            font-weight: normal;\n        }\n\n        .main-header a {\n            padding: 0 13px;\n        }\n    </style>\n{% endblock %}\n\n{% block main %}\n<div class=\"main-page box-info\">\n    <div class=\"mymodal-backdrop\"></div>\n    <div class=\"main-header\">\n        <span>{% trans \"组件通道列表\" %}</span>\n        {% if channel_exists %}\n        <a class=\"btn btn-danger btn-min-w f_r mr10\" id=\"channels_delete\" href=\"javascript:;\">\n          <i class=\"bk-icon icon-delete\" style=\"margin-top: 1px; margin-right: 2px;\"></i> \n          {% trans \"删除\" %}</a>\n        {% endif %}\n        <a class=\"btn btn-primary btn-min-w f_r mr10\" href=\"{% url 'manager.channel.add' %}\">\n          <i class=\"bk-icon icon-plus\" style=\"margin-top: 1px; margin-right: 2px;\"></i>\n          {% trans \"添加通道\" %}</a>\n    </div>\n    <div class=\"page-content\">\n        <div class=\"row\">\n            <div class=\"col-md-9\">\n                <div id=\"search_channel\" class=\"form-inline\" style=\"margin-top: -10px; width: 1100px;\">\n                    <label class=\"search-form-label\" for=\"id_search_channel_system\">{% trans \"系统\" %}</label>\n                    <select id=\"search_channel_system\" class=\"mr10\" style=\"min-width: 200px;\">\n                        {% for system in systems %}\n                        <option value={{ system.name }}>{{ system.label }}</option>\n                        {% endfor %}\n                    </select>\n                    <label class=\"search-form-label\" for=\"id_search_channel_path\">{% trans \"请求路径\" %}</label>\n                    <input id=\"search_channel_path\" type=\"text\" class=\"form-control mr10\" style=\"min-width: 170px;\"/>\n                    <button id=\"search_channel_btn\" class=\"btn btn-azure btn-min-w\" style=\"margin-top:9px;height:34px\">{% trans \"搜索\" %}</button>\n                </div>\n                <div id=\"table_channels\">\n\n                </div>\n            </div>\n            <div class=\"col-md-3\" style=\"margin-top: 40px;\">\n                <div class=\"panel panel-info\">\n                    <div class=\"panel-heading ng-binding\" style=\"font-size: 18px;\">{% trans \"帮助\" %}</div>\n                    <div class=\"panel-body\">\n                        <div style=\"\" class=\"document\">\n                            {{ channel_term_html|safe }}\n                            <p style=\"margin-top: 10px;\">{% trans \"更多详情请查看\" %}<a target=\"_blank\" href=\"{% url 'guide.page.index' %}\">\n                                <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;font-weight: bold\"></i>\n                                {% trans \"使用指南\" %}\n                            </a></p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n{% endblock %}\n\n{% block footer %}\n{% verbatim %}\n<script type=\"text/x-mustache-template\" id=\"tmpl_channel_list\">\n    <table class=\"table table-hover table-striped\" data-sortable-initialized=\"true\" style=\"table-layout: fixed; text-align: left;\">\n        <thead>\n            <tr>\n                {% endverbatim %}\n                <th style=\"width:3%\">#</th>\n                <th style=\"width:25%;\">{% trans \"通道名称\" %}</th>\n                <th style=\"width:23%\">{% trans \"请求路径\" %}</th>\n                <th style=\"width:13%\">{% trans \"更新时间\" %}</th>\n                <th style=\"width:10%\">{% trans \"是否开启\" %}</th>\n                <th style=\"width:12%\"></th>\n                {% verbatim %}\n            </tr>\n        </thead>\n        <tbody>\n\n        {{#each data}}\n        <tr>\n            <td>\n                <input type=\"checkbox\" name=\"channel_id\" value=\"{{id}}\" />\n            </td>\n            <td>\n                <a href=\"{{channel_edit_url id}}\" {% endverbatim %} title=\"{% trans '编辑' %}\">{% verbatim %}\n                {{#if is_active}}\n                {{label}}\n                {{else}}\n                {% endverbatim %}\n                <span class=\"channel-name-inactive\"><span style=\"font-weight: bold;color: red\">({% trans \"已关闭\" %}){% verbatim %}</span>{{label}}</span>\n                {{/if}}\n                <i class=\"bk-icon icon-edit\" style=\"font-weight: bolder; font-size: 12px; margin-top: 2px;\"></i>\n            </td>\n            <td>{{path}}</td>\n            <td>{{last_modified_time}}</td>\n            <td>\n                {{#if is_active}}\n                <img style=\"margin-left: 35px\" src=\"{{static_url}}esb/img/icon-yes.gif\" alt=\"True\">\n                {{else}}\n                <img style=\"margin-left: 35px\" src=\"{{static_url}}esb/img/icon-no.gif\" alt=\"False\">\n                {{/if}}\n            </td>\n            <td>\n                <div class=\"dropdown esb_url show_esb_url\">\n                    {% endverbatim %}\n                    <button class=\"btn btn-success \" title=\"{% trans 'API地址' %}\" {% verbatim %} id=\"{{id}}\">\n                    {% endverbatim %}\n                        {% trans \"API地址\" %}\n                        <i class=\"bk-icon icon-down-shape\"></i>\n                    </button>\n                    <div class=\"dropdown-content\">\n                        <div class=\"input-group\">\n                            <span class=\"input-group-btn\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"{% trans '跳转到浏览器' %}\">\n                            {% verbatim %}\n                                <a class=\"btn btn-default btn-link-url\" href=\"{{host}}{{path}}\" target=\"_blank\">\n                                    <i class=\"bk-icon icon-chain\" style=\"color: #337ab7\"></i>\n                                </a>\n                            </span>\n                            <input type=\"text\" class=\"form-control invoke-url\" onfocus=\"this.select()\" value=\"{{host}}{{path}}\" readonly>\n                            <span class=\"input-group-btn\">\n                                {% endverbatim %}\n                                <button class=\"btn btn-default copy-to-clipboard\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"{% trans '复制到剪贴板' %}\">\n                                    <i class=\"bk-icon icon-clipboard\"></i>\n                                </button>\n                                {% verbatim %}\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            </td>\n        </tr>\n        {{/each}}\n        {{^data}}\n        <tr>\n            {% endverbatim %}\n            <td colspan=\"6\" style=\"text-align: center\">{% trans \"您还没有相关组件通道信息\" %}\n            {% verbatim %}\n        </tr>\n        {{/data}}\n        </tbody>\n    </table>\n</script>\n{% endverbatim %}\n\n<script type=\"text/javascript\" charset=\"utf-8\">\nvar UrlMaker = {\n    'tmpls': { \n        channel_list: \"{% url 'manager.api.channel.list' %}\",\n        channel_edit: \"{% url 'manager.channel.edit' channel_id=\"__CHANNEL_ID__\" %}\",\n        channel_deleted: \"{% url 'manager.channel.deleted' %}\",\n    },\n    'make': function(tmpl_name, params) {\n        var self = this;\n        var result = self.tmpls[tmpl_name];\n        $.each(params || {}, function(k, v){\n            k = '__' + k.toUpperCase() + '__';\n            result = result.replace(k, v);\n        });\n        return result;\n    }\n}\n</script>\n\n<script src=\"{{ STATIC_URL }}esb/js/channel_list.{{ JS_SUFFIX }}\" type=\"text/javascript\" charset=\"utf-8\"></script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/index.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load i18n %}\n\n{% block header %}\n<link href='{{ STATIC_URL }}esb/assets/sFlow-1.0/sFlow.min.css' rel=\"stylesheet\">\n<style>\n.flow-box {\n    width: 150px;    \n}\n</style>\n{% endblock %}\n<script src=\"{{ STATIC_URL }}esb/assets/sFlow-1.0/sFlow.min.js\"></script>\n<script type=\"text/javascript\" charset=\"utf-8\">\n    $('#flow_one').flowList();\n    $('#flow_two').flowList();\n</script>\n{% block main %}\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"API网关简介\" %}</span>\n        <a href=\"{% url 'guide.page.index' %}\" title=\"{% trans '跳转到使用指南' %}\" target=\"_blank\">\n            <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;font-weight: bold\"></i>\n        </a>\n    </div>\n    <div class=\"page-content\" style=\"margin: 5px 30px; line-height: 25px\">\n        {{ index_html|safe }}\n        <p style=\"margin-top: 10px;\">{% trans \"更多内容请查看\" %}<a target=\"_blank\" href=\"{% url 'guide.page.index' %}\">\n            <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;font-weight: bold\"></i>\n            {% trans \"使用指南\" %}\n        </a></p>\n        <div style=\"padding-top: 25px;\">\n            <span style=\"font-weight: bold\">{% trans \"API网关接入方式简述\" %}</span>\n            <div>\n                <p>{% trans \"组件编码接入：编码组件逻辑，并通过注册系统以及组件通道，提供API服务。适用于需自定义处理逻辑的场景。\" %}</p>\n                <p>{% trans \"在线自助接入：通过在线配置接口信息，提供API服务。适用于将HTTP协议、无需特殊处理的接口，直接对接的场景。\" %}</p>\n            </div>\n            <div style=\"margin-top: 25px;\">\n                <span style=\"font-weight: bold\">{% trans \"组件编码接入流程\" %}\n                    <a href=\"{% url 'guide.page' name='add_new_component' %}\" title=\"{% trans '跳转到组件编码介绍' %}\" target=\"_blank\">\n                <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;\"></i>\n                </a>\n                </span>\n                <ul class=\"pl0 flow-box-list\" id=\"flow_one\">\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-one-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '根据需求编码组件逻辑' %}\">\n                            {% trans \"编码具体组件逻辑\" %}\n                        </div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-one-bg-success\"data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '点击`系统管理`，注册组件所属系统' %}\">\n                        {% trans \"注册系统\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-one-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '点击`通道管理`，注册编码的组件信息' %}\">\n                        {% trans \"添加组件通道\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-one-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '按指令`重启服务`' %}\">\n                        {% trans \"重启服务\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-one-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '完成接入' %}\">\n                        {% trans \"完成\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                </ul>\n            </div>\n            <div style=\"margin-top: 30px;\">\n                <span style=\"font-weight: bold;\">{% trans \"在线自助接入流程\" %}\n                    <a href=\"{% url 'guide.page' name='buffet_component' %}\" title=\"{% trans '跳转到自助接入介绍' %}\" target=\"_blank\">\n                    <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;\"></i>\n                    </a>\n                </span>\n                <ul class=\"pl0 flow-box-list\" id=\"flow_two\">\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-two-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '点击`系统管理`，注册API所属系统' %}\">\n                        {% trans \"注册系统\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-two-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '点击`自助接入`，配置API及对接接口的信息' %}\">\n                        {% trans \"添加API配置\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                    <li class=\"flow-box\">\n                    <div class=\"p10 flow-two-bg-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"{% trans '完成接入' %}\">\n                        {% trans \"完成\" %}</div>\n                        <div class=\"flow-arrow\">\n                            <div></div>\n                        </div>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n{% endblock %}\n\n{% block footer %}\n<script src=\"{{ STATIC_URL }}esb/assets/sFlow-1.0/sFlow.min.js\"></script>\n<script type=\"text/javascript\" charset=\"utf-8\">\n    $('[data-toggle=\"tooltip\"]').tooltip();\n    $('#flow_one').flowList();\n    $('#flow_two').flowList();\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/mdfiles/en/channel.md",
    "content": "- Channel is on by default; if off, it will be prompted before the channel name with **Closed**\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/mdfiles/en/index.md",
    "content": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\nThe BlueKing API Gateway is an API hosting service of BlueKing system. \nIt can help developers create, publish, maintain, and protect APIs to open system data or services quickly, inexpensively, and with low risk.\nThe API gateway supports component coding and online self-service, and provides a unified **User Authentication**, \n**BlueKing Application Authentication**, **Request Forwarding**, **Logging** and other functions.\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/mdfiles/en/system.md",
    "content": "- System: A generic name for apis of the same category that classifies the api\n\n- System Name: The unique identification of the system, mainly composed of letters and numbers\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/mdfiles/zh-hans/channel.md",
    "content": "- 通道默认是开启的；如果关闭，则会在通道名称前提示 **已关闭**\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/mdfiles/zh-hans/index.md",
    "content": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\nAPI网关（API Gateway）是开发中心的API托管服务。可以帮助开发者创建、发布、维护、和保护API，以快速、低成本、低风险地开放系统的数据或服务。\nAPI网关支持组件编码接入和在线自助接入两种接入方式，并提供了统一的**用户认证**、**应用鉴权**、**请求转发**、**日志记录**等功能。\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/mdfiles/zh-hans/system.md",
    "content": "- 系统：一类API的统称，用以对API进行分类\n\n- 系统名称：系统的唯一标识，主要由字母和数字组成\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/system/add.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block header %}\n<style>\n.classify-code-height {\n    height: 100px;\n    overflow-y: scroll;\n    width: 100%;\n}\n</style>\n{% endblock %}\n\n{% block main %}\n\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"添加新系统\" %}</span>\n    </div>\n\n    <div class=\"page-content\" style=\"width: 80%\">\n        <form action=\"\" method=\"post\" class=\"form-inline form-columns\">{% csrf_token %}\n            {{ form.name|bootstrap }}\n            {{ form.label|bootstrap }}\n\n            <div class=\"form-group\">\n                <label class=\"control-label\" for=\"id_doc_category\">{% trans \"文档分类\" %}</label>\n                <div class=\"controls\">\n                    <div class=\"input-group dropdown\" style=\"display: table; margin-top: 0px;\">\n                        <input id=\"id_doc_category\" name=\"doc_category\" type=\"text\" maxlength=\"16\" class=\"form-control classify-code dropdown-toggle\" style=\"width: 412px;\" value=\"{{ default_doc_category }}\"/> \n                        <ul class=\"dropdown-menu classify-code-height\"> \n                            {% for doc_category in doc_category_list %}\n                            <li><a href=\"javascript:;\" data-value=\"{{ doc_category.id }}\">{{ doc_category.name }}</a></li>\n                            {% endfor %}\n                        </ul> \n                        <span role=\"button\" class=\"input-group-addon dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" style=\"width: 38px;\"><span class=\"caret\"></span></span>\n                    </div>\n                </div>\n            </div>            \n\n            {{ form.interface_admin|bootstrap }}\n            {{ form.execute_timeout|bootstrap }}\n            {{ form.query_timeout|bootstrap }}\n            {{ form.remark|bootstrap }}\n\n            <div class=\"form-group action\">\n                <button type=\"submit\" class=\"btn btn-primary\">{% trans \"确认添加\" %}</button> \n                <button type=\"button\" class=\"btn btn-default cancel\">{% trans \"取消\" %}</button> \n            </div>\n        </form>\n    </div>\n</div>\n\n{% endblock %}\n\n{% block footer %}\n<script type=\"text/javascript\">\n$(function() {\n    $('button.cancel').bind('click', function() {\n       window.location.href = \"{% url 'manager.system.list' %}\"; \n    });    \n\n    $('.dropdown-menu a').click(function() {\n        $(this).closest('.dropdown').find('input.classify-code').val($(this).text());\n    });\n});\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/system/add_system_tmpl.html",
    "content": "{% load bootstrap %}\n{% load i18n %}\n\n<style>\n#system_info .form-group .control-label {\n    width: 20%;\n}\n#system_info .form-group .controls {\n    width: 75%;\n}\n</style>\n\n<div id='system-add-tmpl' style=\"display: none;overflow-x: hidden\">\n    <form id=\"system_info\" class=\"form-inline form-columns\">\n        {{ system_form.name|bootstrap }}\n        {{ system_form.label|bootstrap }}\n        {{ system_form.interface_admin|bootstrap }}\n        {{ system_form.execute_timeout|bootstrap }}\n        {{ system_form.query_timeout|bootstrap }}\n        {{ system_form.remark|bootstrap }}\n\n        <div class=\"form-group action\">\n            <button type=\"submit\" class=\"btn btn-primary\" id=\"add_system_btn\">{% trans \"确认添加\" %}</button>\n            <button type=\"button\" class=\"btn btn-default\" id=\"cancel_system_btn\">{% trans \"取消\" %}</button>\n        </div>\n    </form>\n</div>\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/system/edit.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load bootstrap %}\n{% load i18n %}\n\n{% block header %}\n<style>\n.classify-code-height {\n    height: 100px;\n    overflow-y: scroll;\n    width: 100%;\n}\n</style>\n{% endblock %}\n\n{% block main %}\n\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"修改系统\" %}</span>\n    </div>\n\n    <div class=\"page-content\" style=\"width: 80%\">\n        <form action=\"\" method=\"post\" class=\"form-inline form-columns\">{% csrf_token %}\n            {{ form.name|bootstrap }}\n            {{ form.label|bootstrap }}\n\n            <div class=\"form-group\">\n                <label class=\"control-label\" for=\"id_doc_category\">{% trans \"文档分类\" %}</label>\n                <div class=\"controls\">\n                    <div class=\"input-group dropdown\" style=\"display: table; margin-top: 0px;\">\n                        <input id=\"id_doc_category\" name=\"doc_category\" type=\"text\" maxlength=\"16\" class=\"form-control classify-code dropdown-toggle\" style=\"width: 412px;\" value=\"{{ system.doc_category.name_display }}\" {% if system.is_official %}disabled{% endif %}/> \n                        {% if not system.is_official %}\n                        <ul class=\"dropdown-menu classify-code-height\"> \n                            {% for doc_category in doc_category_list %}\n                            <li><a href=\"javascript:;\" data-value=\"{{ doc_category.id }}\">{{ doc_category.name_display }}</a></li>\n                            {% endfor %}\n                        </ul> \n                        {% endif %}\n                        <span role=\"button\" class=\"input-group-addon dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" style=\"width: 38px;\"><span class=\"caret\"></span></span>\n                    </div>\n                </div>\n            </div>            \n\n            {{ form.interface_admin|bootstrap }}\n            {{ form.execute_timeout|bootstrap }}\n            {{ form.query_timeout|bootstrap }}\n            {{ form.remark|bootstrap }}\n\n            <div class=\"form-group action\">\n                <button type=\"submit\" class=\"btn btn-primary\">{% trans \"提交修改\" %}</button> \n                <button type=\"button\" class=\"btn btn-default cancel\">{% trans \"取消\" %}</button> \n            </div>\n        </form>\n    </div>\n</div>\n\n{% endblock %}\n\n{% block footer %}\n<script type=\"text/javascript\">\n$(function() {\n    $('button.cancel').bind('click', function() {\n       window.location.href = \"{% url 'manager.system.list' %}\"; \n    });    \n\n    $('.dropdown-menu a').click(function() {\n        $(this).closest('.dropdown').find('input.classify-code').val($(this).text());\n    });\n});\n</script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/templates/manager/system/list.html",
    "content": "{% extends \"manager/base.html\" %}\n{% load i18n %}\n\n{% block header %}\n    <link href='{{ STATIC_URL }}esb/css/helper.{{CSS_SUFFIX}}' rel=\"stylesheet\">\n    <style>\n    #table_systems .overflow-hidden {\n        text-overflow: ellipsis;\n        overflow: hidden;\n        white-space: nowrap;\n    }\n    #table_systems .width200 {\n        width: 200px;\n    }\n\n    .main-header a {\n        padding: 0 13px;\n    }\n    </style>\n\n{% endblock %}\n{% block main %}\n<div class=\"main-page box-info\">\n    <div class=\"main-header\">\n        <span>{% trans \"系统列表\" %}</span>\n        {% if systems %}\n        <a class=\"btn btn-danger btn-min-w f_r mr10\" id=\"systems_delete\" href=\"javascript:;\">\n            <i class=\"bk-icon icon-delete\" style=\"margin-top: 1px; margin-right: 2px;\"></i>  \n            {% trans \"删除\" %}</a>\n        {% endif %}\n        <a class=\"btn btn-primary btn-min-w f_r mr10\" href=\"{% url 'manager.system.add' %}\">\n            <i class=\"bk-icon icon-plus\" style=\"margin-top: 1px; margin-right: 2px;\"></i>  \n            {% trans \"添加系统\" %}</a>\n    </div>\n\n    <div class=\"page-content\">\n        <div class=\"row\">\n            <div class=\"col-md-9\">\n                <div id=\"table_systems\">\n                    <table class=\"table table-hover table-striped\" data-sortable-initialized=\"true\" style=\"text-align: left;\">\n                        <thead>\n                            <tr>\n                                <th style=\"width:20%\">#</th>\n                                <th style=\"width:20%\">{% trans \"系统名称\" %}</th>\n                                <th style=\"width: 200px\">{% trans \"系统标签\" %}</th>\n                                <th style=\"width: 200px\">{% trans \"系统负责人\" %}</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                        {% for system in systems %}\n                        <tr>\n                            <td>\n                                <input type=\"checkbox\" name=\"system_id\" value=\"{{system.id}}\" />\n                            </td>\n                            <td>\n                                {{ system.name|escape }}\n                                <a href=\"{% url 'manager.system.edit' system.id %}\" title=\"{% trans '编辑' %}\">\n                                  <i class=\"bk-icon icon-edit\" style=\"font-weight: bolder\"></i></a>\n                            </td>\n                            <td><p class=\"overflow-hidden width200\" title=\"{{ system.label_display|escape }}\">{{ system.label_display|escape }}</p></td>\n                            <td><p class=\"overflow-hidden width200\" title=\"{{ system.interface_admin|escape }}\">{{ system.interface_admin|escape }}</p></td>\n                        </tr>\n                        {% empty %}\n                        <tr>\n                            <td colspan=\"4\" style=\"text-align: center\">{% trans \"您还没有相关组件系统信息\" %}\n                            </tr>\n                            {% endfor %}\n                            </tbody>\n                        </table>\n                    </div>\n                </div>\n                <div class=\"col-md-3\">\n                    <div class=\"panel panel-info\">\n                        <div class=\"panel-heading ng-binding\" style=\"font-size: 18px;\">{% trans \"帮助\" %}</div>\n                        <div class=\"panel-body\">\n                            <div style=\"\" class=\"document\">\n                                {{ system_term_html|safe }}\n                                <p style=\"margin-top: 10px;\">{% trans \"更多详情请查看\" %}<a target=\"_blank\" href=\"{% url 'guide.page.index' %}\">\n                                <i class=\"bk-icon icon-question-circle\" style=\"margin-top: 2px;font-weight: bold\"></i>\n                                    {% trans \"使用指南\" %}\n                                </a></p>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n    </div>\n\n{% endblock %}\n\n{% block footer %}\n<script type=\"text/javascript\" charset=\"utf-8\">\nvar UrlMaker = {\n    'tmpls': { \n        system_deleted: \"{% url 'manager.system.deleted' %}\",\n    },\n    'make': function(tmpl_name, params) {\n        var self = this;\n        var result = self.tmpls[tmpl_name];\n        $.each(params || {}, function(k, v){\n            k = '__' + k.toUpperCase() + '__';\n            result = result.replace(k, v);\n        });\n        return result;\n    }\n}\n</script>\n\n<script src=\"{{ STATIC_URL }}esb/js/system_list.{{JS_SUFFIX}}\"></script>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.urls import path, re_path\n\nfrom .index import views\nfrom .channel import views as channel_views, api_views as api_channel_views\nfrom .system import views as system_views, api_views as api_system_views\nfrom .buffet_comp import views as buffet_comp_views, api_views as api_buffet_views\nfrom common.decorators import escape_exempt\n\n\nurlpatterns = [\n    # index\n    path('index/', escape_exempt(views.IndexView.as_view()), name='manager.index'),\n\n\n    # channel\n    path('channel/list/', escape_exempt(channel_views.ChannelListView.as_view()), name='manager.channel.list'),\n    path('channel/add/', escape_exempt(channel_views.AddChannelView.as_view()), name='manager.channel.add'),\n    # 为方便js字符替换，将channel_id设置为支持任意字符，在方法内部校验其为整数\n    re_path(r'^channel/(?P<channel_id>\\w+)/edit/$',\n        escape_exempt(channel_views.EditChannelView.as_view()),\n        name='manager.channel.edit'),\n    path('channel/deleted/',\n        escape_exempt(api_channel_views.DeletedChannelView.as_view()),\n        name='manager.channel.deleted'),\n    # API View\n    path('api/channel/list/',\n        escape_exempt(api_channel_views.ChannelListSearchView.as_view()),\n        name='manager.api.channel.list'),\n\n    # system\n    path('system/list/', escape_exempt(system_views.SystemListView.as_view()), name='manager.system.list'),\n    path('system/add/', escape_exempt(system_views.AddSystemView.as_view()), name='manager.system.add'),\n    path('system/<int:system_id>/edit/',\n        escape_exempt(system_views.EditSystemView.as_view()),\n        name='manager.system.edit'),\n\n    # API Views\n    path('system/deleted/',\n        escape_exempt(api_system_views.DeletedSystemView.as_view()),\n        name='manager.system.deleted'),\n    path('api/system/add/', escape_exempt(api_system_views.AddSystemView.as_view()), name='manager.api.system.add'),\n\n\n    # buffet component\n    path('buffet_comp/apply/',\n        escape_exempt(buffet_comp_views.ApplyBuffetCompView.as_view()),\n        name='manager.buffet_comp.apply'),\n    path('buffet_comp/list/',\n        escape_exempt(buffet_comp_views.BuffetCompsView.as_view()),\n        name='manager.buffet_comp.list'),\n    path('buffet_comp/<int:item_id>/edit/',\n        escape_exempt(buffet_comp_views.EditBuffetCompView.as_view()),\n        name='manager.buffet_comp.edit'),\n    # Mappings\n    path('buffet_comp/mapping/list/',\n        escape_exempt(buffet_comp_views.BuffetMappingsView.as_view()),\n        name='manager.buffet_comp.mapping.list'),\n\n    # API Views\n    path('api/buffet_comp/mappings/',\n        escape_exempt(api_buffet_views.APIBuffetMappingView.as_view()),\n        name='manager.api.buffet_comp.mapping.list'),\n    path('api/buffet_comp/mappings/<int:item_id>/',\n        escape_exempt(api_buffet_views.APIBuffetMappingView.as_view()),\n        name='manager.api.buffet_comp.mapping'),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/apps/manager/utils.py",
    "content": "# -*-coding:utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport os\n\nimport markdown\n#from markdown.extensions.headerid import HeaderIdExtension\n\n\ndef md2html(name):\n    app_dir = os.path.dirname(os.path.abspath(__file__))\n    file_path = os.path.join(app_dir, 'templates/manager/mdfiles', '%s.md' % name)\n    with open(file_path) as fp:\n        md_content = fp.read() \n        html_content = markdown.markdown(\n            md_content,\n            extensions=[\n                'tables',\n                'attr_list',\n                'fenced_code',\n                #HeaderIdExtension(level=1),\n                'markdown.extensions.codehilite',\n                'markdown.extensions.toc'\n            ],\n        )\n    return html_content\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.contrib import admin\nfrom .models import *    # noqa\n\n\n@admin.register(ComponentSystem)\nclass ComponentSystemAdmin(admin.ModelAdmin):\n    list_display = ('name', 'label_display')\n    search_fields = ('name', )\n\n\n@admin.register(ESBChannel)\nclass ESBChannelAdmin(admin.ModelAdmin):\n    list_display = ('id', 'component_system', 'name_display', 'path', 'component_codename', 'is_active')\n    search_fields = ('name', 'path', 'component_codename')\n\n\n@admin.register(FunctionController)\nclass FunctionControllerAdmin(admin.ModelAdmin):\n    @admin.display(\n        description='创建时间'\n    )\n    def get_created_time(self, obj):\n        return obj.created_time.strftime('%Y-%m-%d %H:%M:%S')\n\n    list_display = ('func_code', 'func_name', 'switch_status', 'get_created_time')\n    search_fields = ('func_code', 'func_name')\n\n\nclass UserAuthTokenAdmin(admin.ModelAdmin):\n    @admin.display(\n        description='token过期时间'\n    )\n    def get_expires(self, obj):\n        return obj.expires.strftime('%Y-%m-%d %H:%M:%S')\n\n    list_display = ('app_code', 'username', 'auth_token', 'get_expires')\n    search_fields = ('app_code', 'username', 'auth_token')\n\n\n@admin.register(ESBBuffetComponent)\nclass ESBBuffetComponentAdmin(admin.ModelAdmin):\n    list_display = ('system', 'name', 'submitter', 'status')\n    search_fields = ('name', )\n\n\nclass ESBBuffetMappingAdmin(admin.ModelAdmin):\n    list_display = ('name', 'source_type', 'owner', 'is_active')\n    search_fields = ('name', )\n\n\n@admin.register(AppAccount)\nclass AppAccountAdmin(admin.ModelAdmin):\n    list_display = ('app_code', 'app_token', 'created_time')\n    search_fields = ('app_code', )\n\n\n@admin.register(AppComponentPerm)\nclass AppComponentPermAdmin(admin.ModelAdmin):\n    list_display = ('app_code', 'component_id', 'created_time', 'last_accessed_time')\n    search_fields = ('app_code', 'component_id')\n    fields = ('app_code', 'component_id', 'last_accessed_time')\n\n\n@admin.register(WxmpAccessToken)\nclass WxmpAccessTokenAdmin(admin.ModelAdmin):\n    list_display = ('wx_app_id', 'access_token', 'expires')\n    search_fields = ('wx_app_id', 'access_token')\n\n\n@admin.register(SystemDocCategory)\nclass SystemDocCategoryAdmin(admin.ModelAdmin):\n    list_display = ('id', 'name', 'priority')\n    search_fields = ('id', 'name')\n\n\n# admin.site.register(UserAuthToken, UserAuthTokenAdmin)  # noqa\n# admin.site.register(ESBBuffetMapping, ESBBuffetMappingAdmin)  # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.utils.translation import gettext as _\n\n\nSYSTEMS = [\n    {\n        'name': 'BK_LOGIN',\n        'label': _('统一登录'),\n    },\n    {\n        'name': 'CC',\n        'label': _('配置平台'),\n    },\n    {\n        'name': 'GSE',\n        'label': _('管控平台'),\n    },\n    {\n        'name': 'JOB',\n        'label': _('作业平台'),\n    },\n    {\n        'name': 'CMSI',\n        'label': _('消息管理'),\n    },\n    {\n        'name': 'SOPS',\n        'label': _('标准运维'),\n    },\n]\n\n\nSYSTEM_CHANNELS = {\n    'CC': [],\n    'JOB': [],\n    'GSE': [],\n    'BK_LOGIN': [],\n    'CMSI': [],\n    'SOPS': [],\n}\n\n\nFUNCTION_CONTROLLERS = [\n    {\n        'func_code': 'user_auth::skip_user_auth',\n        'func_name': _('是否跳过用户身份验证'),\n        'wlist': 'bk_paas_log_alert',\n    }\n]\n\n\nDEFAULT_DOC_CATEGORY = _('默认分类')\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='ComponentSystem',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=64, verbose_name='\\u7cfb\\u7edf\\u540d\\u79f0')),\n                ('label', models.CharField(default=b'', max_length=128, verbose_name='\\u7cfb\\u7edf\\u6807\\u7b7e', blank=True)),\n                ('component_admin', models.CharField(default=b'', max_length=128, verbose_name='\\u7ec4\\u4ef6\\u5f00\\u53d1\\u8d1f\\u8d23\\u4eba', blank=True)),\n                ('interface_admin', models.CharField(default=b'', max_length=128, verbose_name='\\u7cfb\\u7edf\\u63a5\\u53e3\\u8d1f\\u8d23\\u4eba', blank=True)),\n                ('system_link', models.CharField(default=b'', help_text='\\u6807\\u51c6\\u7684HTTP\\u94fe\\u63a5\\uff0c\\u591a\\u4e2a\\u4ee5\\u5206\\u53f7\\u5206\\u9694', max_length=1024, verbose_name='\\u7cfb\\u7edf\\u94fe\\u63a5', blank=True)),\n                ('belong_to', models.CharField(default=b'', max_length=128, verbose_name='\\u7cfb\\u7edf\\u6240\\u5c5e\\u7ec4\\u7ec7', blank=True)),\n                ('remark', models.TextField(default=b'', verbose_name='\\u5907\\u6ce8', blank=True)),\n            ],\n            options={\n                'db_table': 'esb_component_system',\n            },\n        ),\n        migrations.CreateModel(\n            name='ESBBuffetComponent',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=256, verbose_name='\\u540d\\u79f0')),\n                ('dest_url', models.CharField(max_length=2048, verbose_name='\\u76ee\\u6807\\u63a5\\u53e3\\u5730\\u5740')),\n                ('dest_http_method', models.CharField(max_length=8, verbose_name='HTTP\\u8bf7\\u6c42\\u7c7b\\u578b', choices=[(b'GET', b'GET'), (b'POST', b'POST'), (b'_ORIG', '[\\u6240\\u6709] \\u900f\\u4f20\\u539f\\u59cb\\u8bf7\\u6c42\\u7c7b\\u578b(\\u4e0d\\u5efa\\u8bae\\u4f7f\\u7528)')])),\n                ('favor_post_ctype', models.CharField(default=b'json', max_length=64, verbose_name='\\u7f16\\u7801POST\\u53c2\\u6570\\u65b9\\u5f0f', choices=[(b'json', b'json'), (b'form', b'form')])),\n                ('extra_headers', models.CharField(default=b'', max_length=2048, verbose_name='\\u989d\\u5916\\u8bf7\\u6c42\\u5934\\u4fe1\\u606f', blank=True)),\n                ('extra_params', models.CharField(default=b'', max_length=2048, verbose_name='\\u989d\\u5916\\u8bf7\\u6c42\\u53c2\\u6570', blank=True)),\n                ('registed_path', models.CharField(max_length=255, verbose_name='\\u6ce8\\u518c\\u5230\\u7684\\u7ec4\\u4ef6\\u8def\\u5f84')),\n                ('registed_http_method', models.CharField(max_length=8, verbose_name='\\u6ce8\\u518c\\u5230\\u7684\\u8bf7\\u6c42\\u7c7b\\u578b', choices=[(b'GET', b'GET'), (b'POST', b'POST'), (b'_ORIG', '[\\u6240\\u6709] \\u900f\\u4f20\\u539f\\u59cb\\u8bf7\\u6c42\\u7c7b\\u578b(\\u4e0d\\u5efa\\u8bae\\u4f7f\\u7528)')])),\n                ('submitter', models.CharField(default=b'', max_length=256, null=True, blank=True)),\n                ('approver', models.CharField(default=b'', max_length=256, null=True, blank=True)),\n                ('approver_message', models.CharField(default=b'', max_length=1024, null=True, blank=True)),\n                ('status', models.IntegerField(default=0, verbose_name='\\u72b6\\u6001')),\n                ('mappings_input', models.CharField(default=b'', max_length=1024, blank=True, help_text='JSON\\u683c\\u5f0f\\u6570\\u636e', null=True, verbose_name='\\u8f93\\u5165Mappings')),\n                ('mappings_output', models.CharField(default=b'', max_length=1024, blank=True, help_text='JSON\\u683c\\u5f0f\\u6570\\u636e', null=True, verbose_name='\\u8f93\\u51faMappings')),\n                ('last_modified_time', models.DateTimeField(auto_now=True)),\n                ('created_time', models.DateTimeField(auto_now_add=True)),\n                ('system', models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u6240\\u5c5e\\u7cfb\\u7edf', blank=True, to='bkcore.ComponentSystem', null=True)),\n            ],\n            options={\n                'db_table': 'esb_buffet_component',\n            },\n        ),\n        migrations.CreateModel(\n            name='ESBBuffetMapping',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(unique=True, max_length=40, verbose_name='\\u540d\\u79f0')),\n                ('type', models.IntegerField(null=True, verbose_name='\\u7c7b\\u578b', blank=True)),\n                ('source_type', models.IntegerField(verbose_name='\\u6e90\\u7801\\u7c7b\\u578b')),\n                ('source', models.TextField(default=b'', null=True, verbose_name='\\u6e90\\u7801', blank=True)),\n                ('owner', models.CharField(default=b'', max_length=256, null=True, blank=True)),\n                ('is_active', models.BooleanField(default=True)),\n                ('last_modified_time', models.DateTimeField(auto_now=True)),\n                ('created_time', models.DateTimeField(auto_now_add=True)),\n            ],\n            options={\n                'db_table': 'esb_buffet_component_mapping',\n            },\n        ),\n        migrations.CreateModel(\n            name='ESBChannel',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(help_text='\\u901a\\u9053\\u540d\\u79f0\\uff0c\\u4f8b\\u5982\"[CC] \\u67e5\\u8be2\\u4e1a\\u52a1\\u5217\\u8868\"', max_length=64, verbose_name='\\u901a\\u9053\\u540d\\u79f0')),\n                ('path', models.CharField(help_text='\\u901a\\u9053\\u8bf7\\u6c42\\u8def\\u5f84\\uff0c\\u4f8b\\u5982\"/cc/get_app_list/\"', unique=True, max_length=255, verbose_name='\\u901a\\u9053\\u8def\\u5f84')),\n                ('method', models.CharField(default=b'', max_length=32, null=True, verbose_name='\\u8bf7\\u6c42\\u7c7b\\u578b', blank=True)),\n                ('component_codename', models.CharField(help_text='\\u5bf9\\u5e94\\u7684\\u7ec4\\u4ef6\\u4ee3\\u7801\\uff0c\\u8be5\\u7ec4\\u4ef6\\u5fc5\\u987b\\u6ce8\\u518c\\u5230ESB\\u5e73\\u53f0\\u4e2d\\uff0c\\u4f8b\\u5982 \"generic.cc.get_app_list\"', max_length=255, verbose_name='\\u5bf9\\u5e94\\u7ec4\\u4ef6\\u4ee3\\u53f7')),\n                ('is_active', models.BooleanField(default=True, verbose_name='\\u662f\\u5426\\u5f00\\u542f')),\n                ('last_modified_time', models.DateTimeField(auto_now=True, verbose_name='\\u6700\\u540e\\u66f4\\u65b0')),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n                ('component_system', models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u6240\\u5c5e\\u7ec4\\u4ef6\\u7cfb\\u7edf', to='bkcore.ComponentSystem', null=True)),\n            ],\n            options={\n                'db_table': 'esb_channel',\n            },\n        ),\n        migrations.CreateModel(\n            name='FunctionController',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('func_code', models.CharField(unique=True, max_length=64, verbose_name='\\u529f\\u80fdcode')),\n                ('func_name', models.CharField(max_length=64, verbose_name='\\u529f\\u80fd\\u540d\\u79f0')),\n                ('switch_status', models.BooleanField(default=True, help_text='\\u63a7\\u5236\\u529f\\u80fd\\u662f\\u5426\\u5bf9\\u5916\\u5f00\\u653e\\uff0c\\u82e5\\u9009\\u62e9\\uff0c\\u5219\\u8be5\\u529f\\u80fd\\u5c06\\u5bf9\\u5916\\u5f00\\u653e', verbose_name='\\u662f\\u5426\\u5f00\\u542f\\u8be5\\u529f\\u80fd')),\n                ('wlist', models.TextField(default=b'', help_text='\\u652f\\u6301\\u4e24\\u79cd\\u683c\\u5f0f\\u6570\\u636e\\uff0c\\u4ee5\\u9017\\u53f7\\u3001\\u5206\\u53f7\\u5206\\u9694\\u7684\\u5b57\\u7b26\\u4e32\\uff0c\\u53caJSON\\u683c\\u5f0f\\u5b57\\u7b26\\u4e32', null=True, verbose_name='\\u529f\\u80fd\\u6d4b\\u8bd5\\u767d\\u540d\\u5355', blank=True)),\n                ('func_desc', models.TextField(default=b'', null=True, verbose_name='\\u529f\\u80fd\\u63cf\\u8ff0', blank=True)),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_function_controller',\n            },\n        ),\n        migrations.CreateModel(\n            name='UserAuthToken',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(max_length=128, verbose_name='\\u84dd\\u9cb8\\u5e94\\u7528\\u7f16\\u7801')),\n                ('username', models.CharField(max_length=64, verbose_name='\\u7528\\u6237\\u540d')),\n                ('auth_token', models.CharField(max_length=255, verbose_name='token\\u5185\\u5bb9')),\n                ('expires', models.DateTimeField(verbose_name='token\\u8fc7\\u671f\\u65f6\\u95f4')),\n                ('last_accessed_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u6700\\u540e\\u8bbf\\u95ee\\u65f6\\u95f4')),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_user_auth_token',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0002_auto_20160712_2041.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.AlterModelOptions(\n            name='componentsystem',\n            options={'ordering': ['name']},\n        ),\n        migrations.AlterField(\n            model_name='userauthtoken',\n            name='app_code',\n            field=models.CharField(max_length=128, verbose_name='\\u84dd\\u9cb8\\u667a\\u4e91\\u5e94\\u7528\\u7f16\\u7801'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0003_load_intial_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations\n\nfrom esb.bkcore.constants import SYSTEMS, SYSTEM_CHANNELS, FUNCTION_CONTROLLERS\n\n\ndef init_system_channels(apps, schema_editor):\n    ComponentSystem = apps.get_model('bkcore', 'ComponentSystem')\n    ESBChannel = apps.get_model('bkcore', 'ESBChannel')\n\n    # init system\n    for system in SYSTEMS:\n        name = system.pop('name')\n        ComponentSystem.objects.get_or_create(name=name, defaults=system)\n\n    # init channels\n    for system_name, channels in SYSTEM_CHANNELS.items():\n        system = ComponentSystem.objects.get(name=system_name)\n        for channel in channels:\n            path = channel.pop('path')\n            channel['component_system'] = system\n            ESBChannel.objects.get_or_create(path=path, defaults=channel)\n\n\ndef init_function_controller(apps, schema_editor):\n    FunctionController = apps.get_model('bkcore', 'FunctionController')\n    for func_ctl in FUNCTION_CONTROLLERS:\n        func_code = func_ctl.pop('func_code')\n        FunctionController.objects.get_or_create(func_code=func_code, defaults=func_ctl)\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0002_auto_20160712_2041'),\n    ]\n\n    operations = [\n        migrations.RunPython(init_system_channels),\n        migrations.RunPython(init_function_controller),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0004_auto_20170220_2054.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0003_load_intial_data'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='componentsystem',\n            name='execute_timeout',\n            field=models.IntegerField(help_text='\\u5355\\u4f4d\\u79d2\\uff0c\\u672a\\u8bbe\\u7f6e\\u65f6\\u8d85\\u65f6\\u65f6\\u957f\\u4e3a30\\u79d2', null=True, verbose_name='\\u6267\\u884c\\u7c7b\\u8d85\\u65f6\\u65f6\\u957f', blank=True),\n        ),\n        migrations.AddField(\n            model_name='componentsystem',\n            name='query_timeout',\n            field=models.IntegerField(help_text='\\u5355\\u4f4d\\u79d2\\uff0c\\u672a\\u8bbe\\u7f6e\\u65f6\\u8d85\\u65f6\\u65f6\\u957f\\u4e3a30\\u79d2', null=True, verbose_name='\\u67e5\\u8be2\\u7c7b\\u8d85\\u65f6\\u65f6\\u957f', blank=True),\n        ),\n        migrations.AddField(\n            model_name='esbbuffetcomponent',\n            name='timeout_time',\n            field=models.IntegerField(help_text='\\u5355\\u4f4d\\u79d2\\uff0c\\u672a\\u8bbe\\u7f6e\\u65f6\\u4ee5\\u6240\\u5c5e\\u7ec4\\u4ef6\\u7cfb\\u7edf\\u8d85\\u65f6\\u65f6\\u957f\\u4e3a\\u51c6', null=True, verbose_name='\\u8d85\\u65f6\\u65f6\\u957f', blank=True),\n        ),\n        migrations.AddField(\n            model_name='esbbuffetcomponent',\n            name='type',\n            field=models.IntegerField(default=2, verbose_name='\\u7ec4\\u4ef6\\u7c7b\\u578b', choices=[(1, '\\u6267\\u884cAPI'), (2, '\\u67e5\\u8be2API')]),\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='timeout_time',\n            field=models.IntegerField(help_text='\\u5355\\u4f4d\\u79d2\\uff0c\\u672a\\u8bbe\\u7f6e\\u65f6\\u4ee5\\u6240\\u5c5e\\u7ec4\\u4ef6\\u7cfb\\u7edf\\u8d85\\u65f6\\u65f6\\u957f\\u4e3a\\u51c6', null=True, verbose_name='\\u8d85\\u65f6\\u65f6\\u957f', blank=True),\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='type',\n            field=models.IntegerField(default=2, verbose_name='\\u7ec4\\u4ef6\\u7c7b\\u578b', choices=[(1, '\\u6267\\u884cAPI'), (2, '\\u67e5\\u8be2API')]),\n        ),\n        migrations.AlterField(\n            model_name='componentsystem',\n            name='interface_admin',\n            field=models.CharField(default=b'', help_text='\\u8bb0\\u5f55\\u7cfb\\u7edf\\u63a5\\u53e3\\u8d1f\\u8d23\\u4eba\\uff0c\\u4ee5\\u4fbf\\u8fdb\\u884c\\u6d88\\u606f\\u901a\\u77e5\\u6216\\u76f4\\u63a5\\u8054\\u7cfb\\uff0c\\u957f\\u5ea6\\u4e3a128\\u5b57\\u7b26\\u4ee5\\u5185', max_length=128, verbose_name='\\u7cfb\\u7edf\\u63a5\\u53e3\\u8d1f\\u8d23\\u4eba', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='componentsystem',\n            name='label',\n            field=models.CharField(help_text='\\u7cfb\\u7edf\\u7b80\\u8981\\u8bf4\\u660e', max_length=128, verbose_name='\\u7cfb\\u7edf\\u6807\\u7b7e'),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='component_codename',\n            field=models.CharField(help_text='\\u5bf9\\u5e94\\u7684\\u7ec4\\u4ef6\\u4ee3\\u53f7\\uff0c\\u8be5\\u7ec4\\u4ef6\\u5fc5\\u987b\\u6ce8\\u518c\\u5230ESB\\u5e73\\u53f0\\u4e2d\\uff0c\\u4f8b\\u5982 \"generic.host.get_host_list\"', max_length=255, verbose_name='\\u5bf9\\u5e94\\u7ec4\\u4ef6\\u4ee3\\u53f7'),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='name',\n            field=models.CharField(help_text='\\u901a\\u9053\\u540d\\u79f0\\uff0c\\u957f\\u5ea6\\u9650\\u5236\\u4e3a64\\u5b57\\u7b26\\uff0c\\u4f8b\\u5982\"[HOST] \\u67e5\\u8be2\\u670d\\u52a1\\u5668\\u5217\\u8868\"', max_length=64, verbose_name='\\u901a\\u9053\\u540d\\u79f0'),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='path',\n            field=models.CharField(help_text='\\u901a\\u9053\\u8bf7\\u6c42\\u8def\\u5f84\\uff0c\\u4f8b\\u5982\"/host/get_host_list/\"', unique=True, max_length=255, verbose_name='\\u901a\\u9053\\u8def\\u5f84'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0005_appaccount.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0004_auto_20170220_2054'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='AppAccount',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(help_text='\\u6b64\\u5904\\u8bf7\\u7528\\u82f1\\u6587\\u5b57\\u6bcd', unique=True, max_length=30, verbose_name='\\u5e94\\u7528\\u7f16\\u7801')),\n                ('app_token', models.CharField(max_length=128, verbose_name='\\u5e94\\u7528Token')),\n                ('introduction', models.TextField(default=b'', verbose_name='\\u5e94\\u7528\\u7b80\\u4ecb', blank=True)),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_app_account',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0006_esbchannel_comp_conf.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0005_appaccount'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='esbchannel',\n            name='comp_conf',\n            field=models.TextField(default=b'', null=True, verbose_name='\\u7ec4\\u4ef6\\u914d\\u7f6e', blank=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0007_auto_20170619_1050.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\nimport datetime\nimport esb.bkcore.models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0006_esbchannel_comp_conf'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='AppComponentPerm',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(max_length=64, verbose_name='\\u84dd\\u9cb8\\u5e94\\u7528\\u7f16\\u7801')),\n                ('component_id', models.IntegerField(verbose_name='\\u7ec4\\u4ef6ID')),\n                ('expires', models.DateTimeField(default=esb.bkcore.models.init_app_comp_perm_expires, verbose_name='APP\\u8bbf\\u95ee\\u7ec4\\u4ef6\\u8fc7\\u671f\\u65f6\\u95f4')),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n                ('last_accessed_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='APP\\u6700\\u540e\\u8bbf\\u95ee\\u7ec4\\u4ef6\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_app_component_perm',\n                'verbose_name': 'APP\\u7ec4\\u4ef6\\u6743\\u9650',\n                'verbose_name_plural': 'APP\\u7ec4\\u4ef6\\u6743\\u9650',\n            },\n        ),\n        migrations.CreateModel(\n            name='ComponentAPIDoc',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('board', models.CharField(db_index=True, max_length=64, null=True, blank=True)),\n                ('component_id', models.IntegerField(help_text='\\u5bf9\\u5e94 ESBChannel \\u4e2d\\u7684\\u7ec4\\u4ef6ID', unique=True, verbose_name='\\u7ec4\\u4ef6ID')),\n                ('doc_md', models.TextField(null=True, verbose_name='\\u7ec4\\u4ef6\\u6587\\u6863\\uff08MD\\u683c\\u5f0f\\uff09', blank=True)),\n                ('doc_html', models.TextField(null=True, verbose_name='\\u7ec4\\u4ef6\\u6587\\u6863\\uff08HTML\\u683c\\u5f0f\\uff09', blank=True)),\n                ('doc_md_md5', models.CharField(default=b'', max_length=128, blank=True)),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n                ('updated_time', models.DateTimeField(auto_now=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_api_doc',\n                'verbose_name': '\\u7ec4\\u4ef6\\u63a5\\u53e3\\u6587\\u6863',\n                'verbose_name_plural': '\\u7ec4\\u4ef6\\u63a5\\u53e3\\u6587\\u6863',\n            },\n        ),\n        migrations.CreateModel(\n            name='FeedbackForComponentDocs',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('board', models.CharField(db_index=True, max_length=64, null=True, blank=True)),\n                ('operator', models.CharField(max_length=32, verbose_name='\\u53cd\\u9988\\u8005')),\n                ('component_id', models.IntegerField(help_text='\\u5bf9\\u5e94 ESBChannel \\u4e2d\\u7684\\u7ec4\\u4ef6ID', verbose_name='\\u7ec4\\u4ef6ID')),\n                ('content', models.TextField(default=b'', null=True, verbose_name='\\u53cd\\u9988\\u5185\\u5bb9', blank=True)),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_api_doc_feedback',\n                'verbose_name': '\\u63a5\\u53e3\\u53cd\\u9988',\n                'verbose_name_plural': '\\u63a5\\u53e3\\u53cd\\u9988',\n            },\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='component_name',\n            field=models.CharField(default=b'', max_length=64, null=True, verbose_name='\\u7ec4\\u4ef6\\u82f1\\u6587\\u540d', blank=True),\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='is_hidden',\n            field=models.BooleanField(default=False, help_text='\\u662f\\u5426\\u663e\\u793a\\u6587\\u6863\\uff0c\\u53ca\\u662f\\u5426\\u5728\\u6743\\u9650\\u7533\\u8bf7\\u4e2d\\u5c55\\u793a', verbose_name='\\u7ec4\\u4ef6\\u662f\\u5426\\u9690\\u85cf'),\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='perm_level',\n            field=models.IntegerField(default=0, verbose_name='\\u6743\\u9650\\u7ea7\\u522b', choices=[(0, '\\u65e0\\u9650\\u5236'), (1, '\\u666e\\u901a\\u6743\\u9650'), (2, '\\u654f\\u611f\\u6743\\u9650'), (3, '\\u7279\\u6b8a\\u6743\\u9650')]),\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='rate_limit_conf',\n            field=models.TextField(help_text='\\u9650\\u5236\\u8bbf\\u95ee\\u9891\\u7387\\uff0c\\u5141\\u8bb8\\u591a\\u79cd\\u89c4\\u5219\\uff0c\\u4f8b\\u5982{\"app_ratelimit\": {\"__default\": {\"token\":1000, \"minute\": 1}, \"gcloud\": {\"token\":1000, \"minute\": 1}}}', null=True, verbose_name='\\u8bf7\\u6c42\\u9891\\u7387\\u914d\\u7f6e', blank=True),\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='rate_limit_required',\n            field=models.BooleanField(default=False, verbose_name='\\u662f\\u5426\\u6821\\u9a8c\\u8bbf\\u95ee\\u9891\\u7387'),\n        ),\n        migrations.AlterUniqueTogether(\n            name='appcomponentperm',\n            unique_together=set([('app_code', 'component_id')]),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0008_auto_20170629_1138.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0007_auto_20170619_1050'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='name',\n            field=models.CharField(help_text='\\u901a\\u9053\\u540d\\u79f0\\uff0c\\u957f\\u5ea6\\u9650\\u5236\\u4e3a64\\u5b57\\u7b26\\uff0c\\u4f8b\\u5982\"\\u67e5\\u8be2\\u670d\\u52a1\\u5668\\u5217\\u8868\"', max_length=64, verbose_name='\\u901a\\u9053\\u540d\\u79f0'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0009_wxmpaccesstoken.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\nimport datetime\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0008_auto_20170629_1138'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='WxmpAccessToken',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('wx_app_id', models.CharField(max_length=128, verbose_name='\\u5fae\\u4fe1APPID')),\n                ('access_token', models.CharField(max_length=1024, verbose_name='\\u51ed\\u8bc1')),\n                ('expires', models.DateTimeField(verbose_name='\\u51ed\\u8bc1\\u8fc7\\u671f\\u65f6\\u95f4')),\n                ('last_updated_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='\\u6700\\u540e\\u8bbf\\u95ee\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'esb_wxmp_access_token',\n                'verbose_name': '\\u5fae\\u4fe1\\u516c\\u4f17\\u53f7AccessToken',\n                'verbose_name_plural': '\\u5fae\\u4fe1\\u516c\\u4f17\\u53f7AccessToken',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0010_auto_20180420_1657.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0009_wxmpaccesstoken'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='SystemDocCategory',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=32, verbose_name='\\u5206\\u7c7b\\u540d\\u79f0', db_index=True)),\n                ('priority', models.IntegerField(default=1000, help_text='\\u5c55\\u793a\\u65f6\\uff0c\\u6570\\u5b57\\u5c0f\\u7684\\u5c55\\u793a\\u5728\\u524d\\u9762', verbose_name='\\u4f18\\u5148\\u7ea7')),\n                ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'ordering': ['priority', 'id'],\n                'db_table': 'esb_system_doc_category',\n                'verbose_name': '\\u7cfb\\u7edf\\u6587\\u6863\\u5206\\u7c7b',\n                'verbose_name_plural': '\\u7cfb\\u7edf\\u6587\\u6863\\u5206\\u7c7b',\n            },\n        ),\n        migrations.AddField(\n            model_name='componentsystem',\n            name='doc_category_id',\n            field=models.IntegerField(null=True, verbose_name='\\u6587\\u6863\\u5206\\u7c7bID', blank=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/0011_auto_20180626_2134.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\nimport django.utils.timezone\nimport esb.bkcore.models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('bkcore', '0010_auto_20180420_1657'),\n    ]\n\n    operations = [\n        migrations.AlterModelOptions(\n            name='appcomponentperm',\n            options={'verbose_name': 'APP API\\u6743\\u9650', 'verbose_name_plural': 'APP API\\u6743\\u9650'},\n        ),\n        migrations.AlterModelOptions(\n            name='componentapidoc',\n            options={'verbose_name': 'API\\u6587\\u6863', 'verbose_name_plural': 'API\\u6587\\u6863'},\n        ),\n        migrations.AddField(\n            model_name='esbchannel',\n            name='extra_info',\n            field=models.TextField(default=b'', help_text='\\u5b58\\u50a8\\u7ec4\\u4ef6\\u989d\\u5916\\u4fe1\\u606f\\uff0c\\u7528\\u4e8e\\u6587\\u6863\\u5c55\\u793a\\u7b49', verbose_name='\\u989d\\u5916\\u4fe1\\u606f', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='appcomponentperm',\n            name='component_id',\n            field=models.IntegerField(verbose_name='API ID'),\n        ),\n        migrations.AlterField(\n            model_name='appcomponentperm',\n            name='expires',\n            field=models.DateTimeField(default=esb.bkcore.models.init_app_comp_perm_expires, verbose_name='APP\\u8bbf\\u95eeAPI\\u8fc7\\u671f\\u65f6\\u95f4'),\n        ),\n        migrations.AlterField(\n            model_name='appcomponentperm',\n            name='last_accessed_time',\n            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='APP\\u6700\\u540e\\u8bbf\\u95ee\\u65f6\\u95f4'),\n        ),\n        migrations.AlterField(\n            model_name='componentapidoc',\n            name='doc_md_md5',\n            field=models.CharField(default=b'', max_length=128, verbose_name=b'doc md5', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='esbbuffetcomponent',\n            name='dest_http_method',\n            field=models.CharField(max_length=8, verbose_name='HTTP\\u8bf7\\u6c42\\u7c7b\\u578b', choices=[(b'GET', b'GET'), (b'POST', b'POST')]),\n        ),\n        migrations.AlterField(\n            model_name='esbbuffetcomponent',\n            name='registed_http_method',\n            field=models.CharField(max_length=8, verbose_name='\\u6ce8\\u518c\\u5230\\u7684\\u8bf7\\u6c42\\u7c7b\\u578b', choices=[(b'GET', b'GET'), (b'POST', b'POST')]),\n        ),\n        migrations.AlterField(\n            model_name='esbbuffetcomponent',\n            name='registed_path',\n            field=models.CharField(max_length=255, verbose_name='\\u6ce8\\u518c\\u5230\\u7684API\\u8def\\u5f84'),\n        ),\n        migrations.AlterField(\n            model_name='esbbuffetcomponent',\n            name='system',\n            field=models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u7cfb\\u7edf', blank=True, to='bkcore.ComponentSystem', null=True),\n        ),\n        migrations.AlterField(\n            model_name='esbbuffetcomponent',\n            name='timeout_time',\n            field=models.IntegerField(help_text='\\u5355\\u4f4d\\u79d2\\uff0c\\u672a\\u8bbe\\u7f6e\\u65f6\\u4ee5\\u6240\\u5c5e\\u7cfb\\u7edf\\u8d85\\u65f6\\u65f6\\u957f\\u4e3a\\u51c6', null=True, verbose_name='\\u8d85\\u65f6\\u65f6\\u957f', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='esbbuffetcomponent',\n            name='type',\n            field=models.IntegerField(default=2, verbose_name='API\\u7c7b\\u578b', choices=[(1, '\\u6267\\u884cAPI'), (2, '\\u67e5\\u8be2API')]),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='component_codename',\n            field=models.CharField(help_text='\\u5bf9\\u5e94\\u7684\\u7ec4\\u4ef6\\u4ee3\\u53f7\\uff0c\\u8be5\\u7ec4\\u4ef6\\u5fc5\\u987b\\u6ce8\\u518c\\u5230API\\u7f51\\u5173\\u4e2d\\uff0c\\u4f8b\\u5982 \"generic.host.get_host_list\"', max_length=255, verbose_name='\\u5bf9\\u5e94\\u7ec4\\u4ef6\\u4ee3\\u53f7'),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='component_system',\n            field=models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u6240\\u5c5e\\u7cfb\\u7edf', to='bkcore.ComponentSystem', null=True),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='is_hidden',\n            field=models.BooleanField(default=False, help_text='\\u662f\\u5426\\u663e\\u793a\\u6587\\u6863\\uff0c\\u53ca\\u662f\\u5426\\u5728\\u6743\\u9650\\u7533\\u8bf7\\u4e2d\\u5c55\\u793a', verbose_name='\\u662f\\u5426\\u9690\\u85cf'),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='last_modified_time',\n            field=models.DateTimeField(auto_now=True, verbose_name='\\u6700\\u540e\\u66f4\\u65b0\\u65f6\\u95f4'),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='timeout_time',\n            field=models.IntegerField(help_text='\\u5355\\u4f4d\\u79d2\\uff0c\\u672a\\u8bbe\\u7f6e\\u65f6\\u4ee5\\u6240\\u5c5e\\u7cfb\\u7edf\\u8d85\\u65f6\\u65f6\\u957f\\u4e3a\\u51c6', null=True, verbose_name='\\u8d85\\u65f6\\u65f6\\u957f', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='esbchannel',\n            name='type',\n            field=models.IntegerField(default=2, verbose_name='API\\u7c7b\\u578b', choices=[(1, '\\u6267\\u884cAPI'), (2, '\\u67e5\\u8be2API')]),\n        ),\n        migrations.AlterField(\n            model_name='wxmpaccesstoken',\n            name='last_updated_time',\n            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='\\u6700\\u540e\\u8bbf\\u95ee\\u65f6\\u95f4'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/bkcore/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nCore models for the project.\n\"\"\"\nimport json\nimport datetime\n\nfrom django.db import models\nfrom django.utils import timezone\nfrom django.utils.translation import gettext_lazy as _\nfrom django.utils.translation import gettext, pgettext\nfrom django.utils.functional import cached_property\n\nfrom esb.bkcore.constants import DEFAULT_DOC_CATEGORY\nfrom esb.common.django_utils import get_cur_language\nfrom esb.configs.default import BK_SYSTEMS, SYSTEM_DOC_CATEGORY\n\n\nclass ComponentSystem(models.Model):\n    \"\"\"系统\n    \"\"\"\n    name = models.CharField(_('系统名称'), max_length=64)\n    label = models.CharField(_('系统标签'), max_length=128, help_text=_('系统简要说明'))\n    component_admin = models.CharField(_('组件开发负责人'), max_length=128, default='', blank=True)\n    interface_admin = models.CharField(_('系统接口负责人'), max_length=128, default='', blank=True,\n                                       help_text=_('记录系统接口负责人，以便进行消息通知或直接联系，长度为128字符以内'))\n    system_link = models.CharField(_('系统链接'), max_length=1024, default='', blank=True,\n                                   help_text=_('标准的HTTP链接，多个以分号分隔'))\n    belong_to = models.CharField(_('系统所属组织'), max_length=128, default='', blank=True)\n    remark = models.TextField(_('备注'), default='', blank=True)\n    execute_timeout = models.IntegerField(_('执行类超时时长'), null=True, blank=True,\n                                          help_text=_('单位秒，未设置时超时时长为30秒'))\n    query_timeout = models.IntegerField(_('查询类超时时长'), null=True, blank=True,\n                                        help_text=_('单位秒，未设置时超时时长为30秒'))\n    doc_category_id = models.IntegerField(_('文档分类ID'), null=True, blank=True)\n\n    class Meta:\n        ordering = ['name']\n        db_table = 'esb_component_system'\n\n    def __str__(self):\n        return '[%s] %s' % (self.name, self.label_display)\n\n    def get_display_name(self):\n        return '[%s] %s' % (self.name, self.label_display)\n\n    @property\n    def is_official(self):\n        return self.name in BK_SYSTEMS\n\n    @property\n    def doc_category(self):\n        try:\n            return SystemDocCategory.objects.get(id=self.doc_category_id)\n        except Exception:\n            return SystemDocCategory.objects.get_or_create(name=DEFAULT_DOC_CATEGORY)[0]\n\n    @property\n    def has_display_doc(self):\n        return ESBChannel.objects.filter(component_system=self, is_active=True, is_hidden=False).exists()\n\n    @property\n    def label_display(self):\n        if self.is_official:\n            return gettext(self.label)\n        return self.label\n\n    @property\n    def remark_display(self):\n        if self.is_official:\n            return gettext(self.remark)\n        return self.remark\n\n    def __unicode__(self):\n        return self.get_display_name()\n\n\nclass ESBChannel(models.Model):\n    \"\"\"Channel for ESB\n\n    One channel links a path to a component\n    \"\"\"\n    TYPE_CHOICE = (\n        (1, _('执行API')),\n        (2, _('查询API')),\n    )\n    PERM_LEVEL_CHOICE = (\n        (0, _('无限制')),\n        (1, _('普通权限')),\n        (2, _('敏感权限')),\n        (3, _('特殊权限')),\n    )\n\n    name = models.CharField(_('通道名称'), max_length=64, help_text=_('通道名称，长度限制为64字符，例如\"查询服务器列表\"'))\n    path = models.CharField(_('通道路径'), max_length=255, unique=True, help_text=_('通道请求路径，例如\"/host/get_host_list/\"'))\n    method = models.CharField(_('请求类型'), max_length=32, null=True, default='', blank=True)\n    component_system = models.ForeignKey(ComponentSystem, on_delete=models.CASCADE, verbose_name=_('所属系统'), null=True)\n    component_codename = models.CharField(_('对应组件代号'), max_length=255,\n                                          help_text=_('对应的组件代号，该组件必须注册到API网关中，例如 \"generic.host.get_host_list\"'))\n    component_name = models.CharField(_('组件英文名'), max_length=64, default='', blank=True, null=True)\n    is_active = models.BooleanField(_('是否开启'), default=True)\n    last_modified_time = models.DateTimeField(_('最后更新时间'), auto_now=True)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n    timeout_time = models.IntegerField(_('超时时长'), blank=True, null=True, help_text=_('单位秒，未设置时以所属系统超时时长为准'))\n    type = models.IntegerField(_('API类型'), choices=TYPE_CHOICE, default=2)\n    comp_conf = models.TextField(_('组件配置'), default='', null=True, blank=True)\n    perm_level = models.IntegerField(_('权限级别'), choices=PERM_LEVEL_CHOICE, default=0)\n    is_hidden = models.BooleanField(_('是否隐藏'), default=False, help_text=_('是否显示文档，及是否在权限申请中展示'))\n    rate_limit_required = models.BooleanField(_('是否校验访问频率'), default=False)\n    rate_limit_conf = models.TextField(_('请求频率配置'), null=True, blank=True,\n                                       help_text=_('限制访问频率，允许多种规则，例如{\"app_ratelimit\": {\"__default\": {\"token\":1000, \"minute\": 1}, \"gcloud\": {\"token\":1000, \"minute\": 1}}}'))  # noqa\n    extra_info = models.TextField('额外信息', default='', blank=True, help_text='存储组件额外信息，用于文档展示等')\n\n    class Meta:\n        db_table = 'esb_channel'\n\n    def __unicode__(self):\n        return self.name\n\n    @property\n    def is_new_api(self):\n        return self.created_time > timezone.now() - datetime.timedelta(days=90)\n\n    @property\n    def channel_conf(self):\n        return {\n            'id': self.id,\n            'perm_level': self.perm_level,\n            'rate_limit_required': self.rate_limit_required,\n            'rate_limit_conf': json.loads(self.rate_limit_conf or '{}'),\n        }\n\n    @property\n    def is_official(self):\n        return self.component_system.name in BK_SYSTEMS\n\n    @property\n    def name_display(self):\n        cur_language = get_cur_language()\n        if cur_language == 'en':\n            extra_info = self.extra_info_json\n            if extra_info.get('label_en'):\n                return extra_info['label_en']\n\n        if self.is_official:\n            return gettext(self.name)\n        return self.name\n\n    @property\n    def is_confapi(self):\n        return self.extra_info_json.get('is_confapi', False)\n\n    @property\n    def extra_info_json(self):\n        try:\n            return json.loads(self.extra_info)\n        except Exception:\n            return {}\n\n    @cached_property\n    def comp_conf_json(self):\n        try:\n            return json.loads(self.comp_conf)\n        except Exception:\n            return {}\n\n    @property\n    def allow_edit_comp_conf(self):\n        \"\"\"是否允许编辑字段 comp_conf，仅 list 数据支持更新，比如 send_mail 配置\"\"\"\n        return self.comp_conf_json and isinstance(self.comp_conf_json, (list, tuple))\n\n\nclass FunctionController(models.Model):\n    \"\"\"功能开关控制器\n    \"\"\"\n    func_code = models.CharField(_('功能code'), max_length=64, unique=True)\n    func_name = models.CharField(_('功能名称'), max_length=64)\n    switch_status = models.BooleanField(_('是否开启该功能'), default=True,\n                                        help_text=_('控制功能是否对外开放，若选择，则该功能将对外开放'))\n    wlist = models.TextField(_('功能测试白名单'), null=True, default='', blank=True,\n                             help_text=_('支持两种格式数据，以逗号、分号分隔的字符串，及JSON格式字符串'))\n    func_desc = models.TextField(_('功能描述'), null=True, default='', blank=True)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n\n    class Meta:\n        db_table = 'esb_function_controller'\n\n    def __unicode__(self):\n        return self.__code__\n\n\nclass UserAuthToken(models.Model):\n    \"\"\"AuthToken\n    \"\"\"\n    app_code = models.CharField(_('蓝鲸智云应用编码'), max_length=128)\n    username = models.CharField(_('用户名'), max_length=64)\n    auth_token = models.CharField(_('token内容'), max_length=255)\n    expires = models.DateTimeField(_('token过期时间'))\n    last_accessed_time = models.DateTimeField(_('最后访问时间'), auto_now_add=True)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n\n    def __unicode__(self):\n        return self.auth_token\n\n    class Meta:\n        db_table = 'esb_user_auth_token'\n\n    def touch(self):\n        self.last_accessed = timezone.now()\n\n    def has_expired(self):\n        return self.expires_in() < 300\n\n    def expires_in(self):\n        \"\"\"返回该token还有多少秒过期\n        \"\"\"\n        return int((self.expires - timezone.now()).total_seconds())\n\n    def get_info(self):\n        return {\n            'expires_in': self.expires_in(),\n            'auth_token': self.auth_token,\n            'username': self.username,\n        }\n\n\n######################################################################\n# Models for ESB Buffet\n######################################################################\n\nclass ESBBuffetComponent(models.Model):\n    \"\"\"ESB 自助接入\n    \"\"\"\n    HTTP_METHOD_CHOICES = [\n        ('GET', 'GET'),\n        ('POST', 'POST'),\n    ]\n    FAVOR_CTYPE_CHOICES = [\n        ('json', 'json'),\n        ('form', 'form'),\n    ]\n    TYPE_CHOICE = (\n        (1, _('执行API')),\n        (2, _('查询API')),\n    )\n\n    name = models.CharField(_('名称'), max_length=256)\n    system = models.ForeignKey(ComponentSystem, on_delete=models.CASCADE, verbose_name=_('系统'), null=True, blank=True)\n\n    dest_url = models.CharField(_('目标接口地址'), max_length=2048)\n    dest_http_method = models.CharField(_('HTTP请求类型'), max_length=8, choices=HTTP_METHOD_CHOICES)\n    favor_post_ctype = models.CharField(_('编码POST参数方式'), max_length=64, default='json', choices=FAVOR_CTYPE_CHOICES)\n    extra_headers = models.CharField(_('额外请求头信息'), max_length=2048, default='', blank=True)\n    extra_params = models.CharField(_('额外请求参数'), max_length=2048, default='', blank=True)\n\n    registed_path = models.CharField(_('注册到的API路径'), max_length=255)\n    registed_http_method = models.CharField(_('注册到的请求类型'), max_length=8, choices=HTTP_METHOD_CHOICES)\n\n    submitter = models.CharField(max_length=256, null=True, default='', blank=True)\n    approver = models.CharField(max_length=256, null=True, default='', blank=True)\n    approver_message = models.CharField(max_length=1024, null=True, default='', blank=True)\n    status = models.IntegerField(_('状态'), default=0)\n\n    mappings_input = models.CharField(_('输入Mappings'), null=True, default='', blank=True,\n                                      max_length=1024, help_text=_('JSON格式数据'))\n    mappings_output = models.CharField(_('输出Mappings'), null=True, default='', blank=True,\n                                       max_length=1024, help_text=_('JSON格式数据'))\n    last_modified_time = models.DateTimeField(auto_now=True)\n    created_time = models.DateTimeField(auto_now_add=True)\n    timeout_time = models.IntegerField(_('超时时长'), blank=True, null=True,\n                                       help_text=_('单位秒，未设置时以所属系统超时时长为准'))\n    type = models.IntegerField(_('API类型'), choices=TYPE_CHOICE, default=2)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        db_table = 'esb_buffet_component'\n\n    def get_extra_headers(self):\n        return json.loads(self.extra_headers or '{}')\n\n    def get_extra_params(self):\n        return json.loads(self.extra_params or '{}')\n\n\nclass ESBBuffetMapping(models.Model):\n    \"\"\"ESB 自助接入，参数mapping\n    \"\"\"\n    name = models.CharField('名称', max_length=40, unique=True)\n    type = models.IntegerField('类型', null=True, blank=True)\n    source_type = models.IntegerField('源码类型')\n    source = models.TextField('源码', null=True, default='', blank=True)\n    owner = models.CharField(max_length=256, null=True, default='', blank=True)\n    is_active = models.BooleanField(default=True)\n    last_modified_time = models.DateTimeField(auto_now=True)\n    created_time = models.DateTimeField(auto_now_add=True)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        db_table = 'esb_buffet_component_mapping'\n\n    def get_info(self):\n        return {\n            'id': self.pk,\n            'name': self.name,\n            'source_type': self.source_type,\n            'source': self.source\n        }\n\n\nclass AppAccount(models.Model):\n    \"\"\"应用帐号\"\"\"\n    app_code = models.CharField(_('应用编码'), max_length=30, unique=True, help_text=_('此处请用英文字母'))\n    app_token = models.CharField(_('应用Token'), max_length=128)\n    introduction = models.TextField(_('应用简介'), default='', blank=True)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n\n    def __unicode__(self):\n        return self.app_code\n\n    class Meta:\n        db_table = 'esb_app_account'\n\n\nclass ModelWithBoard(models.Model):\n    \"\"\"标记所属的board\n    \"\"\"\n    board = models.CharField(max_length=64, null=True, blank=True, db_index=True)\n\n    class Meta:\n        abstract = True\n\n\nclass ComponentAPIDoc(ModelWithBoard):\n    '''\n    @summary: API文档\n    '''\n    component_id = models.IntegerField(_('组件ID'), unique=True, help_text=_('对应 ESBChannel 中的组件ID'))\n    doc_md = models.TextField(_('组件文档（MD格式）'), blank=True, null=True)\n    doc_html = models.TextField(_('组件文档（HTML格式）'), blank=True, null=True)\n    doc_md_md5 = models.CharField('doc md5', max_length=128, default='', blank=True)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n    updated_time = models.DateTimeField(_('创建时间'), auto_now=True)\n\n    def __unicode__(self):\n        return '%s' % self.component_id\n\n    @property\n    def doc_html_display(self):\n        if self.doc_html.startswith('{'):\n            cur_language = get_cur_language()\n            try:\n                doc_html = json.loads(self.doc_html)\n                return doc_html.get(cur_language) or doc_html.get('en')\n            except Exception:\n                pass\n        return self.doc_html\n\n    class Meta:\n        verbose_name = _('API文档')\n        verbose_name_plural = _('API文档')\n        db_table = 'esb_api_doc'\n\n\nclass FeedbackForComponentDocs(ModelWithBoard):\n    \"\"\"针对指定接口的反馈\"\"\"\n    operator = models.CharField('反馈者', max_length=32)\n    component_id = models.IntegerField('组件ID', help_text='对应 ESBChannel 中的组件ID')\n    content = models.TextField('反馈内容', default='', blank=True, null=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    def __unicode__(self):\n        return '<operator:%s-component_id:%s>' % (self.operator, self.component_id)\n\n    class Meta:\n        verbose_name = '接口反馈'\n        verbose_name_plural = '接口反馈'\n        db_table = 'esb_api_doc_feedback'\n\n\nclass SystemDocCategory(models.Model):\n    \"\"\"系统文档分类\"\"\"\n    name = models.CharField(_('分类名称'), max_length=32, db_index=True)\n    priority = models.IntegerField(_('优先级'), default=1000, help_text=_('展示时，数字小的展示在前面'))\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n\n    def __unicode__(self):\n        return self.name\n\n    class Meta:\n        verbose_name = _('系统文档分类')\n        verbose_name_plural = _('系统文档分类')\n        ordering = ['priority', 'id']\n        db_table = 'esb_system_doc_category'\n\n    @property\n    def is_official(self):\n        return self.name in SYSTEM_DOC_CATEGORY\n\n    @property\n    def name_display(self):\n        if self.is_official:\n            return pgettext('doccategory', self.name)\n        return self.name\n\n\ndef init_app_comp_perm_expires():\n    return timezone.now() + datetime.timedelta(days=180)\n\n\nclass AppComponentPerm(models.Model):\n    \"\"\"APP申请的API权限\"\"\"\n    app_code = models.CharField(_('蓝鲸应用编码'), max_length=64)\n    component_id = models.IntegerField(_('API ID'))\n    expires = models.DateTimeField(_('APP访问API过期时间'), default=init_app_comp_perm_expires)\n    created_time = models.DateTimeField(_('创建时间'), auto_now_add=True)\n    last_accessed_time = models.DateTimeField(_('APP最后访问时间'), default=timezone.now)\n\n    def __unicode__(self):\n        return '<app_code: %s, component_id: %s>' % (self.app_code, self.component_id)\n\n    class Meta:\n        verbose_name = _('APP API权限')\n        verbose_name_plural = _('APP API权限')\n        db_table = 'esb_app_component_perm'\n        unique_together = ('app_code', 'component_id')\n\n\nclass WxmpAccessToken(models.Model):\n    \"\"\"保存微信开放平台业务的 AccessToken\n    \"\"\"\n    wx_app_id = models.CharField(_('微信APPID'), max_length=128)\n    access_token = models.CharField(_('凭证'), max_length=1024)\n    expires = models.DateTimeField(_('凭证过期时间'))\n    last_updated_time = models.DateTimeField(_('最后访问时间'), default=timezone.now)\n\n    class Meta:\n        db_table = 'esb_wxmp_access_token'\n        verbose_name = _('微信公众号AccessToken')\n        verbose_name_plural = _('微信公众号AccessToken')\n\n    def __unicode__(self):\n        return self.wx_app_id\n\n    def touch(self):\n        self.last_updated_time = timezone.now()\n\n    def has_expired(self):\n        return self.expires_in() < 300\n\n    def expires_in(self):\n        \"\"\"返回该token还有多少秒过期\n        \"\"\"\n        return int((self.expires - timezone.now()).total_seconds())\n\n    def get_info(self):\n        return {\n            'access_token': self.access_token,\n            'expires_in': self.expires_in(),\n        }\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/common/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/common/base_utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nimport json\nimport datetime\nimport decimal\n\n\nclass CustomJSONEncoder(json.JSONEncoder):\n    \"\"\"JSONEncoder subclass that knows how to encode date/time and decimal types.\n    And process the smart place name object\n    \"\"\"\n\n    DATE_FORMAT = \"%Y-%m-%d\"\n    TIME_FORMAT = \"%H:%M:%S\"\n\n    def default(self, o):\n        if isinstance(o, datetime.datetime):\n            return o.strftime(\"%s %s\" % (self.DATE_FORMAT, self.TIME_FORMAT))\n        elif isinstance(o, datetime.date):\n            return o.strftime(self.DATE_FORMAT)\n        elif isinstance(o, datetime.time):\n            return o.strftime(self.TIME_FORMAT)\n        elif isinstance(o, decimal.Decimal):\n            return str(o)\n        else:\n            return super(CustomJSONEncoder, self).default(o)\n\n\ndef jsonize(d):\n    return json.dumps(d, cls=CustomJSONEncoder, ensure_ascii=False)\n\n\ndef smart_int(v):\n    if str(v).isdigit():\n        return int(v)\n    else:\n        return None\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/common/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom functools import wraps, WRAPPER_ASSIGNMENTS\n\n#from django.utils.decorators import available_attrs\nfrom django.shortcuts import render\nfrom django.utils.translation import gettext as _\n\nfrom .django_utils import JsonResponse\n\n\ndef is_user_super(view_func):\n    \"\"\"\n    检查用户是否为超级用户\n    \"\"\"\n    @wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)\n    def _wrapped_view(self, request, *args, **kwargs):\n        if request.user.is_superuser:\n            return view_func(self, request, *args, **kwargs)\n        else:\n            if request.is_ajax():\n                return JsonResponse({\n                    'error_message': _('您没有访问权限，请联系系统管理员添加！'),\n                    'data': None\n                })\n            return render(request, '403.html')\n    return _wrapped_view\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/common/django_utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport json\n\nfrom django.utils.encoding import force_bytes\nfrom django.http import HttpResponse\nfrom django.shortcuts import _get_queryset\nfrom django.utils import translation\n\n\ndef get_object_or_None(klass, *args, **kwargs):   # noqa\n    \"\"\"\n    Uses get() to return an object or None if the object does not exist.\n\n    klass may be a Model, Manager, or QuerySet object. All other passed\n    arguments and keyword arguments are used in the get() query.\n\n    Note: Like with get(), a MultipleObjectsReturned will be raised if more than one\n    object is found.\n    \"\"\"\n    queryset = _get_queryset(klass)\n    try:\n        return queryset.get(*args, **kwargs)\n    except queryset.model.DoesNotExist:\n        return None\n\n\nclass JsonResponse(HttpResponse):\n    def __init__(self, content, *args, **kwargs):\n        content = json.dumps(content, ensure_ascii=False)\n        super(JsonResponse, self).__init__(\n            content, content_type='application/json; charset=utf-8', *args, **kwargs)\n\n\ndef get_error_prompt(form):\n    \"\"\"Get error messages for form\n    \"\"\"\n    content = []\n    fields = list(form.fields.keys())\n    for k, v in sorted(list(form.errors.items()), key=lambda x: fields.index(x[0])\n                       if x[0] in fields else -1):\n        _msg = force_unicode(v[0])\n        b_field = form[k] if k in form.fields else None\n        # Get the default error messages\n        messages = {}\n        if b_field:\n            for c in reversed(b_field.field.__class__.__mro__):\n                messages.update(getattr(c, 'default_error_messages', {}))\n\n        if b_field and _msg in list(messages.values()):\n            content.append('%s [%s] %s' % (b_field.label, b_field.name, _msg))\n        else:\n            content.append('%s' % _msg)\n    return force_unicode(content[0])\n\n\ndef i18n_form(form):\n    from django.utils.translation import gettext as _\n    fields = form.visible_fields()\n    for field in fields:\n        field.label = _(field.label)\n        field.help_text = _(field.help_text)\n        if getattr(field.field, 'choices', []):\n            choices = [\n                (value, _(label))\n                for value, label in field.field.choices\n            ]\n            setattr(field.field, 'choices', choices)\n    return form\n\n\ndef get_cur_language():\n    cur_language = translation.get_language()\n    if cur_language not in ['zh-hans']:\n        cur_language = 'zh-hans'\n    return cur_language\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/configs/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/configs/default.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.utils.translation import pgettext, gettext\n\n\nmenu_items = [\n    {\n        'name': 'manager_index',\n        'label': pgettext('menu', '简介'),\n        'path': 'manager.index'\n    },\n    {\n        'name': 'system_manager',\n        'label': pgettext('menu', '系统管理'),\n        'path': 'manager.system.list',\n    },\n    {\n        'name': 'channel_manager',\n        'label': pgettext('menu', '通道管理'),\n        'path': 'manager.channel.list',\n    },\n    {\n        'name': 'buffet_manager',\n        'label': pgettext('menu', '自助接入'),\n        'path': 'manager.buffet_comp.list',\n    },\n    # {\n    #     'name': 'status_index',\n    #     'label': pgettext('menu', u'运行数据'),\n    #     'path': 'status.index',\n    # },\n    {\n        'name': 'user_guide',\n        'label': pgettext('menu', '使用指南'),\n        'path': 'guide.page.index',\n    },\n    {\n        'name': 'api_docs',\n        'label': pgettext('menu', 'API文档'),\n        'path': 'esb_api_docs',\n    },\n    # {\n    #     'name': 'esb_doc',\n    #     'label': pgettext('menu', u'ESB文档'),\n    #     'path': '/doc/index.html',\n    #     'is_real_url': True,\n    # },\n]\n\n\nBK_SYSTEMS = {\n    'BK_LOGIN': {\n        'name': 'BK_LOGIN',\n        'label': gettext('统一登录'),\n        'remark': gettext('统一登录，管理用户登录验证，及用户信息'),\n    },\n    'BK_PAAS': {\n        'name': 'BK_PAAS',\n        'label': gettext('蓝鲸开发者中心'),\n        'remark': gettext('蓝鲸开发者中心'),\n    },\n    'CC': {\n        'name': 'CC',\n        'label': gettext('配置平台'),\n        'remark': gettext('配置平台是一款面向应用的CMDB，在ITIL体系里，CMDB是构建其它流程的基石，而在蓝鲸智云体系里，配置平台就扮演着基石的角色，为应用提供了各种运维场景的配置数据服务。'),\n    },\n    'GSE': {\n        'name': 'GSE',\n        'label': gettext('管控平台'),\n        'remark': gettext('管控平台'),\n    },\n    'JOB': {\n        'name': 'JOB',\n        'label': gettext('作业平台'),\n        'remark': gettext('作业平台（Job）是一套基于蓝鲸智云管控平台Agent管道之上的基础操作平台，具备大并发处理能力；除了支持脚本执行、文件拉取/分发、定时任务等一系列可实现的基础运维场景以外，还运用流程化的理念很好的将零碎的单个任务组装成一个作业流程；而每个任务都可做为一个原子节点，提供给其它系统和平台调度，实现调度自动化。'),  # noqa\n    },\n    'CMSI': {\n        'name': 'CMSI',\n        'label': gettext('消息管理'),\n        'remark': gettext('消息管理，用于支持向用户发送多种类型的消息，包括邮件、短信、语音通知等'),\n    },\n    'SOPS': {\n        'name': 'SOPS',\n        'label': gettext('标准运维'),\n        'remark': gettext('标准运维'),\n    },\n}\n\n\nSYSTEM_DOC_CATEGORY = {\n    '默认分类': {\n        'name': 'default',\n        'label': pgettext('doccategory', '默认分类'),\n        'priority': 1,\n        'systems': []\n    },\n    '基础用户服务': {\n        'name': 'user_base_service',\n        'label': pgettext('doccategory', '基础用户服务'),\n        'priority': 10,\n        'systems': ['BK_LOGIN', 'BK_PAAS', 'CMSI']\n    },\n    '配置管理': {\n        'name': 'config_service',\n        'label': pgettext('doccategory', '配置管理'),\n        'priority': 20,\n        'systems': ['CC']\n    },\n    '主机管控': {\n        'name': 'host_management',\n        'label': pgettext('doccategory', '主机管控'),\n        'priority': 30,\n        'systems': ['JOB', 'GSE']\n    },\n    '管理工具': {\n        'name': 'management_tools',\n        'label': pgettext('doccategory', '管理工具'),\n        'priority': 50,\n        'systems': ['SOPS']\n    },\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/configs/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\nfrom django.urls import include, path\n\n\nurlpatterns = [\n    path('manager/', include('esb.apps.manager.urls')),\n    path('guide/', include('esb.apps.guide.urls')),\n    path('api_docs/', include('esb.apps.api_docs.urls')),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/mainsite/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/mainsite/templates/mainsite/base.html",
    "content": "{% load i18n %}\n<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n<title>{% trans \"API网关 | 数字化运维平台\" %}</title>\n<meta name=\"keywords\" content=\"{% trans 'API网关 | 技术运营中台' %}\" />\n<meta name=\"description\" content=\"{% trans 'API网关 | 技术运营中台' %}\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />\n<meta name=\"author\" content=\"\"/>\n<link rel=\"icon\" type=\"image/x-icon\" href=\"{{ STATIC_URL }}esb/favicon.ico\">\n<link href=\"{{ STATIC_URL }}assets/bootstrap-3.1.1/css/bootstrap.min.css\" rel=\"stylesheet\"/>\n<link href=\"{{ STATIC_URL }}css/base.{{CSS_SUFFIX}}\" rel=\"stylesheet\"/>\n<link href='{{ STATIC_URL }}css/layout_head.{{CSS_SUFFIX}}' rel=\"stylesheet\">\n<link href='{{ STATIC_URL }}esb/css/base.{{CSS_SUFFIX}}' rel=\"stylesheet\">\n<!--select2-->\n<link href='{{ STATIC_URL }}esb/assets/select2-3.5.3/select2.css' rel=\"stylesheet\"/>\n\n<!-- bk-icon-font -->\n<link href=\"{{ STATIC_URL }}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\"/>\n\n<!--dialog-->\n<link href=\"{{ STATIC_URL }}esb/assets/bkDialog-1.0/css/ui-dialog.css\" type=\"text/css\" rel=\"stylesheet\"/>\n\n<!--i18n-->\n<script type=\"text/javascript\" src=\"{{ SITE_URL  }}jsi18n/i18n/\"></script>\n\n<!-- JQuery -->\n<script src=\"{{ STATIC_URL }}esb/assets/jquery-1.10.2.min.js\" type=\"text/javascript\"></script>\n\n<!--csrftoken-->\n<script src=\"{{ STATIC_URL }}esb/js/csrftoken.{{ JS_SUFFIX }}\" type=\"text/javascript\" charset=\"utf-8\"></script>\n\n{% block header %}\n{% endblock %}\n\n<style>\n</style>\n\n</head>\n<body>\n<div class=\"header\">\n    <!--头部横向导航 start -->\n    <div class=\"header-inner\">\n        <a title=\"{% trans '工作台' %}\" href=\"{{SITE_URL}}\" class=\"logo\"><img src=\"{{ STATIC_URL }}{% trans 'esb/img/logo_esb_01.png' %}\" alt=\"\"></a>\n        <a title=\"{% trans 'API网关' %}\" href=\"{% url 'manager.index' %}\" class=\"logo\"><img src=\"{{ STATIC_URL }}{% trans 'esb/img/logo_esb_02.png' %}\" alt=\"\"></a>\n        <div class=\"account\">\n            <div class=\"account_meta account_info account_meta_primary\">\n                {% if request.user and request.user.username %}\n                <a href=\"{{SITE_URL}}accounts/profile/\" class=\"nickname\" title=\"{{request.user.username}}\">{{request.user.username}}</a>\n                {% else %}\n                <a href=\"{{SITE_URL}}accounts/profile/\" class=\"nickname\" title=\"\"></a>\n                {% endif %}\n                {% if request.user and request.user.is_superuser %}\n                <a href=\"{{SITE_URL}}accounts/profile/\"><img src=\"{{STATIC_URL}}img/getadminheadimg.jpg\" class=\"avatar\"></a>\n                {% else %}\n                <a href=\"{{SITE_URL}}accounts/profile/\"><img src=\"{{STATIC_URL}}img/getheadimg.jpg\" class=\"avatar\"></a>\n                {% endif %}\n            </div>\n            {% if request.user.username %}\n            <div class=\"account_meta account_logout account_meta_primary\"><a id=\"logout\" href=\"{{LOGOUT_URL}}\">{% trans \"注销\" %}</a></div>\n            {% endif %}\n        </div>\n        <ul class=\"list\" id=\"main-nav\">\n            {% for menu_item in menu_items %}\n                {% if menu_item.is_real_url %}\n                    <li><a href=\"{{ menu_item.path }}\" target=\"_blank\">{% trans menu_item.label context \"menu\" %}</a></li>\n                {% else %}\n                    {% if menu_item.name == menu_active_item %}\n                    <li class=\"active\"><a href=\"{% url menu_item.path %}\"{% if menu_item.is_blank %} target=\"_blank\"{% endif %}>{% trans menu_item.label context \"menu\" %}</a></li>\n                    {% else %}\n                    <li><a href=\"{% url menu_item.path %}\"{% if menu_item.is_blank %} target=\"_blank\"{% endif %}>{% trans menu_item.label context \"menu\" %}</a></li>\n                    {% endif %}\n                {% endif %}\n            {% endfor %}\n        </ul>\n    </div>\n    <!--头部横向导航 end -->\n</div>\n\n<!--中间主体内容 start-->\n<div id=\"body\" class=\"body page_index\">\n    <div id=\"js_container_box\" class=\"container_box cell_layout side_l\" ref=\"containerBox\">\n        {% block container %}\n        <div class=\"\">\n            {% block main %}\n            {% endblock %}\n        </div>\n        {% endblock %}\n    </div>\n</div>\n<!--中间主体内容 end-->\n\n<!--尾部声明 start-->\n{% include \"mainsite/footer.html\" %}\n\n<!-- JQuery -->\n<script src=\"{{ STATIC_URL }}esb/assets/jquery.json-2.6.0.min.js\"></script>\n<script src=\"{{ STATIC_URL }}esb/assets/jquery.cookie-1.4.1.js\" type=\"text/javascript\"></script>\n<script src=\"{{ STATIC_URL }}esb/assets/jquery.validate-1.11.0.js\" type=\"text/javascript\"></script>\n<script src=\"{{ STATIC_URL }}esb/assets/moment-with-locales-2.10.6.min.js\" type=\"text/javascript\"></script>\n\n<!-- bootstrap -->\n<script src=\"{{ STATIC_URL }}assets/bootstrap-3.1.1/js/bootstrap.min.js\" type=\"text/javascript\"></script>\n\n<!-- bkdialog -->\n<script src=\"{{ STATIC_URL }}esb/assets/bkDialog-1.0/js/dialog.js\" type=\"text/javascript\"></script>\n\n<!-- select2 -->\n<script src=\"{{ STATIC_URL }}esb/assets/select2-3.5.3/select2.min.js\" type=\"text/javascript\"></script>\n\n<!-- basic -->\n<script src=\"{{ STATIC_URL }}esb/assets/handlebars-3.0.1.js\" type=\"text/javascript\"></script>\n\n<!-- backbone.js -->\n<script src=\"{{ STATIC_URL }}esb/assets/underscore-1.8.3-min.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<script src=\"{{ STATIC_URL }}esb/assets/backbone-1.3.3-min.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n\n<!-- custom -->\n<script src=\"{{ STATIC_URL }}esb/js/core.{{JS_SUFFIX}}\" type=\"text/javascript\"></script>\n<script src=\"{{ STATIC_URL }}js/core.{{JS_SUFFIX}}\" type=\"text/javascript\"></script>\n\n{% get_current_language as LANGUAGE_CODE %}\n\n<script>\n    moment.locale(\"{{ LANGUAGE_CODE }}\");\n</script>\n\n{% block footer %}\n{% endblock %}\n<!--尾部声明 end-->\n\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/esb/mainsite/templates/mainsite/footer.html",
    "content": "{% load i18n %}\n<div class=\"foot\" id=\"footer\">\n    <ul class=\"links ft\">\n        <li><p class=\"copyright\">Copyright © 2012-{{NOW.year}} OpsAny. All Rights Reserved.</p> </li>\n    </ul>\n</div>\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.contrib import admin # noqa\n\n# Register your models here.\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\nfrom account.models import BkUser\nfrom common.utils import setup_view\nfrom guide.views import NewbieView, ServiceIntroductionView\n\n\nclass ServiceIntroductionViewTestCase(TestCase):\n    def setUp(self):\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n    def test_get(self):\n        request = self.factory.get('/guide/services/')\n        request.user = self.user\n\n        view = ServiceIntroductionView.as_view()\n        response = view(request)\n\n        self.assertEqual(response.status_code, 200)\n\n\nclass NewbieTestCase(TestCase):\n    def setUp(self):\n        # Every test needs access to the request factory.\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n    def test_get(self):\n        request = self.factory.get('/guide/newbie/')\n        request.user = self.user\n\n        # test requests\n        view = ServiceIntroductionView.as_view()\n        response = view(request)\n        self.assertEqual(response.status_code, 200)\n\n        # test view template or context_data\n        v = setup_view(NewbieView(), request)\n        self.assertEqual(v.template_name, \"guide/newbie.html\")\n\n        context = v.get_context_data()\n        paas_host = \"{}://{}\".format(settings.HTTP_SCHEMA, settings.PAAS_DOMAIN)\n\n        self.assertEqual(context[\"paas_host\"], paas_host)\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import path\n\nfrom guide import views\n\nurlpatterns = [\n    # 服务介绍\n    path('services/', views.ServiceIntroductionView.as_view()),\n    # 新手指南\n    path('newbie/', views.NewbieView.as_view()),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/guide/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\n\nfrom common.views.mako import MakoTemplateView\nfrom engine.models import BkServer\n\n\nclass ServiceIntroductionView(MakoTemplateView):\n    \"\"\"服务介绍\n    \"\"\"\n    template_name = 'guide/services.html'\n\n\nclass NewbieView(MakoTemplateView):\n    \"\"\"新手指南\n    \"\"\"\n    template_name = 'guide/newbie.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(NewbieView, self).get_context_data(**kwargs)\n\n        paas_host = \"{}://{}\".format(settings.HTTP_SCHEMA, settings.PAAS_DOMAIN)\n        # 获取已激活的 AppServer 信息\n        active_server_ip_list = BkServer.objects.get_active_server_ips()\n        active_server_ips = ';'.join(active_server_ip_list)\n\n        context.update({\n            'paas_host': paas_host,\n            'active_server_ips': active_server_ips\n        })\n\n        return context\n"
  },
  {
    "path": "paas-ce/paas/paas/healthz/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/healthz/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import path\n\nfrom healthz import views\n\nurlpatterns = [\n    path(\"\", views.HealthzView.as_view())\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/healthz/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport os\n\nfrom django.conf import settings\nfrom django.http import HttpResponse, JsonResponse\nfrom django.views.generic import View\n\nfrom common.mixins.base import LoginExemptMixin\nimport requests\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass HealthzView(LoginExemptMixin, View):\n    \"\"\"health check for paas\n\n    if fail, should be: status=500, response=plain raw text show the fail\n    \"\"\"\n    def get(self, request):\n        # check settings, 注意不暴露密码等敏感信息\n        try:\n            settings.ESB_TOKEN\n            {\n                'debug': settings.DEBUG,\n                'env': os.getenv(\"BK_ENV\", \"unknow\"),\n                'paas_domain': settings.PAAS_DOMAIN,\n                'paas_inner_domain': settings.PAAS_INNER_DOMAIN,\n                'cookie_domain': settings.BK_COOKIE_DOMAIN,\n\n                'host_engine': settings.ENGINE_HOST,\n                'host_login': settings.LOGIN_HOST,\n\n                'host_cc': settings.HOST_CC,\n                'host_job': settings.HOST_JOB,\n\n                'mysql': {\n                    'host': settings.DATABASES.get(\"default\", {}).get(\"HOST\"),\n                    'port': settings.DATABASES.get(\"default\", {}).get(\"PORT\"),\n                    'user': settings.DATABASES.get(\"default\", {}).get(\"USER\"),\n                    'database': settings.DATABASES.get(\"default\", {}).get(\"NAME\")\n                }\n            }\n        except Exception as e:\n            message = \"配置文件不正确, 缺失对应配置: {}\".format(e)\n            return HttpResponse(message, status=500)\n\n        # check db\n        try:\n            from saas.models import SaaSAppVersion\n            objs = SaaSAppVersion.objects.all()\n            [o.version for o in objs]\n        except Exception as e:\n            message = \"数据库连接存在问题: {}\".format(e)\n            return HttpResponse(message, status=500)\n\n        # check hosts\n        # 不检查cc/jos, 因为不是强依赖只是用来展示, 用户浏览器能访问通即可, paas所在机器不需要\n        engine_host = settings.ENGINE_HOST\n        login_host = settings.LOGIN_HOST\n\n        hosts = {\n            'engine_host': engine_host,\n            'login_host': login_host,\n        }\n\n        for name, host in hosts.items():\n            try:\n                if not host.startswith('http'):\n                    host = 'http://{}'.format(host)\n                requests.get(host, timeout=10)\n            except Exception as e:\n                message = \"第三方依赖连接超时: name={}, host={},  error={}\".format(name, host, str(e))\n                return HttpResponse(message, status=500)\n\n        return JsonResponse({\"result\": True}, status=200)\n"
  },
  {
    "path": "paas-ce/paas/paas/home/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/home/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django import forms\nfrom django.contrib import admin\n\nfrom home.constants import LinkTypeEnum\nfrom home.models import UsefulLinks, UserSettings\n\n\n# Register your models here.\n@admin.register(UserSettings)\nclass UserSettingsAdmin(admin.ModelAdmin):\n    list_display = ('username', 'apps')\n    search_fields = ('username',)\n    list_filter = ('username',)\n\n\n\n\nclass UsefulLinksForm(forms.ModelForm):\n\n    def clean(self):\n        cleaned_data = super(UsefulLinksForm, self).clean()\n        if cleaned_data.get('link_type') == LinkTypeEnum.SAAS.value and not cleaned_data.get('logo'):\n            raise forms.ValidationError(\"选择 SaaS 类型的链接必须上传 Logo\")\n\n    class Meta:\n        model = UsefulLinks\n        fields = '__all__'\n\n\n@admin.register(UsefulLinks)\nclass UsefulLinksAdmin(admin.ModelAdmin):\n    list_display = ('name', 'link', 'link_type', 'is_active')\n    search_fields = ('name',)\n    list_filter = ('name',)\n\n    form = UsefulLinksForm\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/home/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom enum import Enum\n\nfrom django.conf import settings\n\n\n# 系统应用 cc,job 配置信息\nSYS_APP_INFO = {\n    'bk_cc': {\n        'code': 'bk_cc',\n        'name': \"配置平台\",\n        'link': '%s://%s' % (settings.HTTP_SCHEMA, settings.HOST_CC),\n        'introduction': \"配置平台是一款面向应用的CMDB，在ITIL体系里，CMDB是构建其它流程的基石，而在蓝鲸智云体系里，配置平台就扮演着基石的角色，为应用提供了各种运维场景的配置数据服务。\",\n        'logo': '%sapplogo/bk_cc.png' % settings.MEDIA_URL,\n        'is_online': True\n    },\n    'bk_job': {\n        'code': 'bk_job',\n        'name': \"作业平台\",\n        'introduction': \"为运维量身定制的脚本自动化操作平台，实现各种复杂运维场景的一键式、自动化操作。包含：批量脚本执行、文件分发、文件拉取、定时任务。流程化执行一系列脚本，各个步骤可自动或人工执行。\",\n        'link': '%s://%s' % (settings.HTTP_SCHEMA, settings.HOST_JOB),\n        'logo': '%sapplogo/bk_job.png' % settings.MEDIA_URL,\n        'is_online': True\n    }\n}\n\n\nclass LinkTypeEnum(Enum):\n    COMMON = 0\n    SAAS = 1\n    LIGHT_APP = 2\n\n\n# Home 中常用链接类型\nLINK_TYPE_CHOICES = [\n    (LinkTypeEnum.COMMON.value, \"普通链接\"),\n    (LinkTypeEnum.SAAS.value, \"SaaS链接\"),\n    (LinkTypeEnum.LIGHT_APP.value, \"轻应用\"),\n]\n\n# 首次显示应用的个数\nINDEX_FIRST_SHOW_APPS_COUNT = 12\n"
  },
  {
    "path": "paas-ce/paas/paas/home/esb/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/home/esb/bkcore/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/home/esb/bkcore/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"\nCore models for the project.\n\"\"\"\nimport json\n\nfrom django.db import models\n\n\nclass ComponentSystem(models.Model):\n    \"\"\"组件系统\n    \"\"\"\n    name = models.CharField('系统名称', max_length=64)\n    label = models.CharField('系统标签', max_length=128, help_text='系统简要说明')\n    component_admin = models.CharField('组件开发负责人', max_length=128, default='', blank=True)\n    interface_admin = models.CharField('系统接口负责人', max_length=128, default='', blank=True,\n                                       help_text='记录系统接口负责人，以便进行消息通知或直接联系，长度为128字符以内')\n    system_link = models.CharField('系统链接', max_length=1024, default='', blank=True,\n                                   help_text='标准的HTTP链接，多个以分号分隔')\n    belong_to = models.CharField('系统所属组织', max_length=128, default='', blank=True)\n    remark = models.TextField('备注', default='', blank=True)\n    execute_timeout = models.IntegerField('执行类超时时长', null=True, blank=True,\n                                          help_text='单位秒，未设置时超时时长为30秒')\n    query_timeout = models.IntegerField('查询类超时时长', null=True, blank=True,\n                                        help_text='单位秒，未设置时超时时长为30秒')\n\n    class Meta:\n        ordering = ['name']\n        db_table = 'esb_component_system'\n        managed=False\n\n    def __unicode__(self):\n        return '[%s] %s' % (self.name, self.label)\n\n\nclass ESBChannel(models.Model):\n    \"\"\"Channel for ESB\n\n    One channel links a path to a component\n    \"\"\"\n    TYPE_CHOICE = (\n        (1, '执行API'),\n        (2, '查询API'),\n    )\n    PERM_LEVEL_CHOICE = (\n        (0, '无限制'),\n        (1, '普通权限'),\n        (2, '敏感权限'),\n        (3, '特殊权限'),\n    )\n\n    name = models.CharField('通道名称', max_length=64, help_text='通道名称，长度限制为64字符，例如\"查询服务器列表\"')\n    path = models.CharField('通道路径', max_length=255, unique=True, help_text='通道请求路径，例如\"/host/get_host_list/\"')\n    method = models.CharField('请求类型', max_length=32, null=True, default='', blank=True)\n    component_system = models.ForeignKey(ComponentSystem, on_delete=models.CASCADE, verbose_name='所属组件系统', null=True)\n    component_codename = models.CharField('对应组件代号', max_length=255,\n                                          help_text='对应的组件代号，该组件必须注册到ESB平台中，例如 \"generic.host.get_host_list\"')\n    component_name = models.CharField('组件英文名', max_length=64, default='', blank=True, null=True)\n    is_active = models.BooleanField('是否开启', default=True)\n    last_modified_time = models.DateTimeField('最后更新', auto_now=True)\n    created_time = models.DateTimeField('创建时间', auto_now_add=True)\n    timeout_time = models.IntegerField('超时时长', blank=True, null=True, help_text='单位秒，未设置时以所属组件系统超时时长为准')\n    type = models.IntegerField('组件类型', choices=TYPE_CHOICE, default=2)\n    comp_conf = models.TextField('组件配置', default='', null=True, blank=True)\n    perm_level = models.IntegerField('权限级别', choices=PERM_LEVEL_CHOICE, default=0)\n    is_hidden = models.BooleanField('组件是否隐藏', default=False, help_text='是否显示文档，及是否在权限申请中展示')\n    rate_limit_required = models.BooleanField('是否校验访问频率', default=False)\n    rate_limit_conf = models.TextField('请求频率配置', null=True, blank=True,\n                                       help_text='限制访问频率，允许多种规则，例如{\"app_ratelimit\": {\"__default\": {\"token\":1000, \"minute\": 1}, \"gcloud\": {\"token\":1000, \"minute\": 1}}}')  # noqa\n\n    class Meta:\n        db_table = 'esb_channel'\n        managed=False\n\n    def __unicode__(self):\n        return self.name\n\n    @property\n    def channel_conf(self):\n        return {\n            'id': self.id,\n            'perm_level': self.perm_level,\n            'rate_limit_required': self.rate_limit_required,\n            'rate_limit_conf': json.loads(self.rate_limit_conf or '{}'),\n        }\n\n    @property\n    def comp_conf_dict(self):\n        try:\n            if not self.comp_conf:\n                comp_conf = None\n            else:\n                comp_conf = json.loads(self.comp_conf)\n        except Exception:\n            comp_conf = None\n\n        if not comp_conf:\n            return None\n\n        if self.path == '/cmsi/send_weixin/':\n            comp_conf = dict(comp_conf)\n            return {\n                'wx_type': comp_conf.get('wx_type', ''),\n                'wx_app_id': comp_conf.get('wx_app_id', ''),\n                'wx_secret': comp_conf.get('wx_secret', ''),\n                'wx_token': comp_conf.get('wx_token', ''),\n                'wx_qy_corpid': comp_conf.get('wx_qy_corpid', ''),\n                'wx_qy_corpsecret': comp_conf.get('wx_qy_corpsecret', ''),\n                'wx_qy_agentid': comp_conf.get('wx_qy_agentid', '')\n            }\n\n        return comp_conf\n"
  },
  {
    "path": "paas-ce/paas/paas/home/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models\n\nfrom home.constants import LinkTypeEnum\n\n\nclass UserAppsManager(models.Manager):\n    pass\n\n\nclass UsefulLinksManager(models.Manager):\n    def get_light_app_or_none(self, code):\n        try:\n            return self.get(id=int(code[1:]), link_type=LinkTypeEnum.LIGHT_APP.value)\n        except Exception:\n            return None\n\n    def is_useful_link(self, code):\n        try:\n            return True, self.get(id=int(code[1:]))\n        except Exception:\n            return False, None\n\n    def get_common_links(self):\n        return self.filter(is_active=True, link_type=LinkTypeEnum.COMMON.value)\n"
  },
  {
    "path": "paas-ce/paas/paas/home/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='UsefulLinks',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=128, verbose_name='\\u540d\\u79f0')),\n                ('link', models.CharField(max_length=128, verbose_name='\\u94fe\\u63a5')),\n            ],\n            options={\n                'db_table': 'paas_usefullinks',\n            },\n        ),\n        migrations.CreateModel(\n            name='UserApps',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('username', models.CharField(unique=True, max_length=128, verbose_name='\\u7528\\u6237\\u540d\\u79f0')),\n                ('apps', models.TextField(default=b'', help_text='\\u683c\\u5f0f\\uff1ajson\\u6570\\u636e[code1,code2,code3]', null=True, verbose_name='\\u5e94\\u7528\\u5217\\u8868', blank=True)),\n            ],\n            options={\n                'db_table': 'paas_userapps',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/home/migrations/0002_usersettings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('home', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='UserSettings',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('username', models.CharField(unique=True, max_length=128, verbose_name='\\u7528\\u6237\\u540d\\u79f0')),\n                ('apps', models.TextField(default=b'', help_text='\\u683c\\u5f0f\\uff1ajson\\u6570\\u636e[code1,code2,code3]', null=True, verbose_name='\\u5e94\\u7528\\u5217\\u8868', blank=True)),\n            ],\n            options={\n                'db_table': 'paas_usersettings',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/home/migrations/0003_auto_20180126_1702.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\nfrom home.constants import LinkTypeEnum\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('home', '0002_usersettings'),\n    ]\n\n    operations = [\n        migrations.AlterModelOptions(\n            name='usefullinks',\n            options={'ordering': ['-created_time'], 'verbose_name': '\\u5e38\\u7528\\u94fe\\u63a5', 'verbose_name_plural': '\\u5e38\\u7528\\u94fe\\u63a5'},\n        ),\n        migrations.AlterModelOptions(\n            name='userapps',\n            options={'verbose_name': '\\u7528\\u6237\\u6536\\u85cf\\u5e94\\u7528', 'verbose_name_plural': '\\u7528\\u6237\\u6536\\u85cf\\u5e94\\u7528'},\n        ),\n        migrations.AlterModelOptions(\n            name='usersettings',\n            options={'verbose_name': '\\u7528\\u6237\\u81ea\\u5b9a\\u4e49\\u7684\\u5e94\\u7528\\u5217\\u8868', 'verbose_name_plural': '\\u7528\\u6237\\u81ea\\u5b9a\\u4e49\\u7684\\u5e94\\u7528\\u5217\\u8868'},\n        ),\n        migrations.AddField(\n            model_name='usefullinks',\n            name='created_time',\n            field=models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4', null=True),\n        ),\n        migrations.AddField(\n            model_name='usefullinks',\n            name='introduction',\n            field=models.TextField(default=b'', null=True, verbose_name='\\u5e94\\u7528\\u7b80\\u4ecb', blank=True),\n        ),\n        migrations.AddField(\n            model_name='usefullinks',\n            name='is_active',\n            field=models.BooleanField(default=True, verbose_name='\\u662f\\u5426\\u6fc0\\u6d3b'),\n        ),\n        migrations.AddField(\n            model_name='usefullinks',\n            name='link_type',\n            field=models.SmallIntegerField(default=LinkTypeEnum.COMMON.value, verbose_name='\\u7c7b\\u578b', choices=[(0, '\\u666e\\u901a\\u94fe\\u63a5'), (1, 'SaaS\\u94fe\\u63a5')]),\n        ),\n        migrations.AddField(\n            model_name='usefullinks',\n            name='logo',\n            field=models.ImageField(null=True, upload_to=b'iconlogo', blank=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/home/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/home/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nimport os\n\nfrom django.db import models\nfrom django.conf import settings\n\nfrom common.constants import LogoImgRelatedDirEnum\nfrom common.utils import delete_exist_logo_file\nfrom home.constants import LINK_TYPE_CHOICES, LinkTypeEnum\nfrom home.manager import UsefulLinksManager, UserAppsManager\n\n\nclass UserApps(models.Model):\n    \"\"\"\n    用户收藏应用信息\n    \"\"\"\n    username = models.CharField(\"用户名称\", max_length=128, unique=True)\n    apps = models.TextField(\"应用列表\", default='', blank=True, null=True, help_text=\"格式：json数据[code1,code2,code3]\")\n\n    objects = UserAppsManager()\n\n    def __unicode__(self):\n        return '%s' % self.username\n\n    def __str__(self):\n        return self.username\n\n    class Meta:\n        db_table = 'paas_userapps'\n        verbose_name = \"用户收藏应用\"\n        verbose_name_plural = \"用户收藏应用\"\n\n\nclass UserSettings(models.Model):\n    \"\"\"\n    首页上用户自定义的应用列表\n    \"\"\"\n    username = models.CharField(\"用户名称\", max_length=128, unique=True)\n    apps = models.TextField(\"应用列表\", default='', blank=True, null=True, help_text=\"格式：json数据[code1,code2,code3]\")\n\n    def __unicode__(self):\n        return '%s' % self.username\n\n    def __str__(self):\n        return self.username\n\n    class Meta:\n        db_table = 'paas_usersettings'\n        verbose_name = \"用户自定义的应用列表\"\n        verbose_name_plural = \"用户自定义的应用列表\"\n\n\ndef dynamic_upload_to(instance, filename):\n    \"\"\"\n    根据链接类型，决定存储的目录\n    \"\"\"\n    file_dir = (LogoImgRelatedDirEnum.APP.value\n                if instance.link_type == LinkTypeEnum.LIGHT_APP.value else LogoImgRelatedDirEnum.ICON.value)\n    return os.path.join(file_dir, filename)\n\n\nclass UsefulLinks(models.Model):\n    \"\"\"\n    常用链接\n    \"\"\"\n    name = models.CharField(\"名称\", max_length=128)\n    link = models.CharField(\"链接\", max_length=128)\n    link_type = models.SmallIntegerField(\"类型\", choices=LINK_TYPE_CHOICES, default=LinkTypeEnum.COMMON.value)\n    logo = models.ImageField(upload_to=dynamic_upload_to, blank=True, null=True)\n    introduction = models.TextField(\"应用简介\", default='', blank=True, null=True)\n    is_active = models.BooleanField(\"是否激活\", default=True)\n    created_time = models.DateTimeField(\"创建时间\", auto_now_add=True, blank=True, null=True)\n\n    objects = UsefulLinksManager()\n\n    def __unicode__(self):\n        return '%s' % self.name\n\n    def __str__(self):\n        return self.name\n\n    def save(self, *args, **kwargs):\n        \"\"\"\n        保存前修改 logo 存放路径\n        \"\"\"\n        if not self.logo:\n            return super(UsefulLinks, self).save(*args, **kwargs)\n        # 对于轻应用，需要保持固定名称，其他随机即可\n        if self.link_type == LinkTypeEnum.LIGHT_APP.value:\n            logo_name = '{}.png'.format(self.code)\n            # 对于名字不符合code命名(上层保证了新图片名称是uuid)，说明logo是新上传的，则需要进行修改\n            if self.logo.name != logo_name:\n                self.logo.name = logo_name\n                # 判断之前是否存在，存在则先删除\n                delete_exist_logo_file(dynamic_upload_to(self, logo_name))\n        # save操作\n        super(UsefulLinks, self).save(*args, **kwargs)\n\n    @property\n    def code(self):\n        \"\"\"\n        like _1 _123\n        \"\"\"\n        return '_{id}'.format(id=self.pk)\n\n    def to_dict(self):\n        return {\n            'name': self.name,\n            'link': self.link,\n            'logo': self.logo.url if self.logo else '{}img/app_logo/default.png'.format(settings.STATIC_URL),\n            'introduction': self.introduction,\n            'code': self.code\n        }\n\n    class Meta:\n        db_table = 'paas_usefullinks'\n        ordering = ['created_time']\n        verbose_name = \"常用链接\"\n        verbose_name_plural = \"常用链接\"\n"
  },
  {
    "path": "paas-ce/paas/paas/home/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.test import TestCase # noqa\n\n# Create your tests here.\n"
  },
  {
    "path": "paas-ce/paas/paas/home/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import path\n\nfrom home import views\n\n\nurlpatterns = [\n    # 首页\n    path('', views.IndexView.as_view(), name=\"platform\"),\n\n    # 更新user app list\n    path('user/app/', views.UpdateUserAppView.as_view()),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/home/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\n\nfrom django.conf import settings\n\nfrom app.models import App, DesktopSettings\nfrom home.constants import SYS_APP_INFO, LinkTypeEnum\nfrom home.models import UsefulLinks, UserSettings\n\n\ndef get_user_apps(username):\n    \"\"\"\n    按顺序获取用户桌面上展示的应用列表\n    \"\"\"\n    user_settings, created = UserSettings.objects.get_or_create(username=username)\n    apps = user_settings.apps\n\n    # 应用列表apps 存储格式：[code1,code2]\n    app_code_list = json.loads(apps) if apps else []\n\n    # 初始化应用列表值时，判断是否需要添加 cc、job链接\n    if created:\n        if settings.HOST_CC:\n            app_code_list.append('bk_cc')\n        if settings.HOST_JOB:\n            app_code_list.append('bk_job')\n\n    # 组装成前台展示的数据格式\n    user_app_list = []\n\n    for code in app_code_list:\n        # cc,job 特殊处理逻辑\n        if code in ['bk_cc', 'bk_job']:\n            user_app_list.append(SYS_APP_INFO.get(code))\n            continue\n\n        # 处理第三方应用的数据, code is like `_1` or `_123`\n        is_user_link, user_link_obj = UsefulLinks.objects.is_useful_link(code)\n\n        if is_user_link and user_link_obj.is_active:\n            # 添加存在并已激活的应用数据\n            user_app_list.append(user_link_obj.to_dict())\n            continue\n\n        # 处理应用的数据\n        if App.objects.filter(code=code).exists():\n            app_dict = App.objects.gen_user_app_info_for_dashboard(code)\n            if app_dict:\n                user_app_list.append(app_dict)\n\n    # 判断是否有其他已经上线的应用\n    new_online_app_info_list = App.objects.gen_user_new_online_app_info_list_for_dashboard(app_code_list)\n    user_app_list.extend(new_online_app_info_list)\n\n    # check the app desktopsettings, is_display\n    user_app_list = [i for i in user_app_list if DesktopSettings.objects.is_app_display(i['code'])]\n\n    # 初始化时，判断 SaaS 应用是否全部在其中\n    all_saas_link = UsefulLinks.objects.filter(is_active=True,\n                                               link_type__in=[LinkTypeEnum.SAAS.value, LinkTypeEnum.LIGHT_APP.value])\n    for _saas in all_saas_link:\n        if _saas.code not in app_code_list:\n            user_app_list.append(_saas.to_dict())\n\n    # 重新保存应用列表排序\n    user_app_code_list = [_app.get('code') for _app in user_app_list]\n    user_settings.apps = json.dumps(user_app_code_list)\n    user_settings.save()\n\n    return user_app_list\n"
  },
  {
    "path": "paas-ce/paas/paas/home/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.views.generic import View\nfrom django.http import HttpResponseRedirect\nfrom common.responses import OKJsonResponse\nfrom common.views.mako import MakoTemplateView\nfrom home.constants import INDEX_FIRST_SHOW_APPS_COUNT\nfrom home.models import UsefulLinks, UserSettings\nfrom home.utils import get_user_apps\nfrom user_center.weixin.utils import get_user_wx_info\n\n\nclass IndexView(MakoTemplateView):\n    \"\"\"站点首页\n    \"\"\"\n    template_name = 'home/index.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(IndexView, self).get_context_data(**kwargs)\n        request = self.request\n\n        username = request.user.username\n\n        user_app_list = get_user_apps(username)\n        user_app_count = len(user_app_list)\n\n        # 获取常用链接\n        links = UsefulLinks.objects.get_common_links()\n        # 首次显示应用的个数\n        # 微信相关\n        wx_type, wx_userid = get_user_wx_info(request)\n        context.update({\n            'wx_type': wx_type,\n            'wx_userid': wx_userid,\n            'links': links,\n            'user_app_count': user_app_count,\n            'first_show_count': INDEX_FIRST_SHOW_APPS_COUNT,\n            'user_app_list': user_app_list\n        })\n        return context\n\n\nclass UpdateUserAppView(View):\n    \"\"\"更新用户的应用列表位置\n    \"\"\"\n    http_method_names = ['post']\n\n    def post(self, request):\n        username = request.user.username\n        apps = request.POST.get('apps')\n        if apps:\n            UserSettings.objects.filter(username=username).update(apps=apps)\n        return OKJsonResponse(\"排序成功\")\n"
  },
  {
    "path": "paas-ce/paas/paas/manage.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "paas-ce/paas/paas/media/applogo/README.md",
    "content": "Dir for icon(extract from uploaded icon)\n"
  },
  {
    "path": "paas-ce/paas/paas/media/iconlogo/README.md",
    "content": "Dir for icon(extract from uploaded icon)\n"
  },
  {
    "path": "paas-ce/paas/paas/media/saaslogo/README.md",
    "content": "Dir for saas logo(extract from uploaded saas)\n"
  },
  {
    "path": "paas-ce/paas/paas/release/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/release/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\n\nfrom release.models import (Record, Version, UserOperateRecord)\n\n\n@admin.register(Record)\nclass RecordAdmin(admin.ModelAdmin):\n    list_display = ('app_code', 'operate_id', 'operate_user', 'operate_time', 'is_success')\n    search_fields = ('app_code', 'operate_user')\n    list_filter = ('operate_id', 'operate_user', 'operate_time', 'app_code')\n\n\n\n\n@admin.register(Version)\nclass VersionAdmin(admin.ModelAdmin):\n    list_display = ('app', 'version', 'publisher', 'pubdate')\n    search_fields = ('app__code', 'publisher')\n    list_filter = ('app', 'publisher', 'pubdate')\n\n\n\n\n@admin.register(UserOperateRecord)\nclass UserOperateRecordAdmin(admin.ModelAdmin):\n    list_display = ('app_code', 'username', 'operate_type', 'operate_time')\n    search_fields = ('username', 'app_code')\n    list_filter = ('username', 'operate_type', 'operate_time', 'app_code')\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/release/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom enum import Enum\n\n\n# 提测和上线分类\nclass OperateIDEnum(Enum):\n    TO_TEST = 0\n    TO_ONLINE = 1\n    TO_OFFLINE = 2\n    IN_TEST = 3\n    IN_ONLINE = 4\n    IN_OFFLINE = 5\n    REGISTER_INFO = 6\n    CREATE_DB = 7\n    INITIAL_CVS = 8\n    GRANT_DB_AUTH = 9\n    INITIAL_APP_CODE = 10\n    DELETE_APP = 11\n\n\nOPERATE_ID_CHOICES = [\n    (OperateIDEnum.TO_TEST.value, \"提测\"),\n    (OperateIDEnum.TO_ONLINE.value, \"上线\"),\n    (OperateIDEnum.TO_OFFLINE.value, \"下架\"),\n    (OperateIDEnum.IN_TEST.value, \"正在提测\"),\n    (OperateIDEnum.IN_ONLINE.value, \"正在上线\"),\n    (OperateIDEnum.IN_OFFLINE.value, \"正在下架\"),\n\n    (OperateIDEnum.REGISTER_INFO.value, \"基本信息注册\"),\n    (OperateIDEnum.CREATE_DB.value, \"数据库创建\"),\n    (OperateIDEnum.INITIAL_CVS.value, \"SVN代码初始化\"),\n    (OperateIDEnum.GRANT_DB_AUTH.value, \"数据库授权\"),\n    (OperateIDEnum.INITIAL_APP_CODE.value, \"初始化APP代码\"),\n    (OperateIDEnum.DELETE_APP.value, \"删除APP\"),\n]\n\nAPP_ALL_OPERATE_ID_LIST = [OperateIDEnum.TO_TEST.value,\n                           OperateIDEnum.TO_ONLINE.value,\n                           OperateIDEnum.TO_OFFLINE.value,\n                           OperateIDEnum.IN_TEST.value,\n                           OperateIDEnum.IN_ONLINE.value,\n                           OperateIDEnum.IN_OFFLINE.value]\nAPP_TEST_OPERATE_ID_LIST = [OperateIDEnum.TO_TEST.value, OperateIDEnum.IN_TEST.value]\nAPP_ONLINE_OPERATE_ID_LIST = [OperateIDEnum.TO_ONLINE.value, OperateIDEnum.IN_ONLINE.value]\nAPP_OFFLINE_OPERATE_ID_LIST = [OperateIDEnum.TO_OFFLINE.value, OperateIDEnum.IN_OFFLINE.value]\n\nAPP_DID_OPERATE_ID_LIST = [OperateIDEnum.TO_TEST.value,\n                           OperateIDEnum.TO_ONLINE.value,\n                           OperateIDEnum.TO_OFFLINE.value]\n\nAPP_ONGOING_OPERATE_ID_LIST = [OperateIDEnum.IN_TEST.value,\n                               OperateIDEnum.IN_ONLINE.value,\n                               OperateIDEnum.IN_OFFLINE.value]\n\n\nclass StatusEnum(Enum):\n    SUCCESS = True\n    FAIL = False\n\n\n# 用户操作类型\nclass UserOperateTypeEnum(Enum):\n    APP_CREATE = 1\n    APP_DELETE = 2\n    RELEASE_TEST = 3\n    RELEASE_ONLINE = 4\n    RELEASE_OFFLINE = 5\n\n\nUSER_OPERATE_TYPE_CHOICES = [\n    (UserOperateTypeEnum.APP_CREATE.value, \"APP创建\"),\n    (UserOperateTypeEnum.APP_DELETE.value, \"删除APP\"),\n    (UserOperateTypeEnum.RELEASE_TEST.value, \"APP提测\"),\n    (UserOperateTypeEnum.RELEASE_ONLINE.value, \"APP上线\"),\n    (UserOperateTypeEnum.RELEASE_OFFLINE.value, \"APP下架\"),\n]\n\n\n# app engine event状态\nclass EventStatusEnum(Enum):\n    READY = \"READY\"\n    PENDING = \"PENDING\"\n    FAILURE = \"FAILURE\"\n    SUCCESS = \"SUCCESS\"\n\n\nclass OperateCodeEnum(Enum):\n    \"\"\"\n    发布记录类型\n    \"\"\"\n    ALL = \"0\"\n    TEST = \"1\"\n    ONLINE = \"2\"\n    OFFLINE = \"3\"\n\n\nOPERATE_CODE_LIST = [\n    OperateCodeEnum.ALL.value,\n    OperateCodeEnum.TEST.value,\n    OperateCodeEnum.ONLINE.value,\n    OperateCodeEnum.OFFLINE.value\n]\n\n\nclass EventResultEnum(Enum):\n    FAIL = 0\n    SUCCESS = 1\n    PENDING = 2\n\n\nclass DeployPageTypeEnum(Enum):\n    TEST = \"test_form\"\n    ONLINE = \"online_form\"\n    OFFLINE = \"offline_form\"\n\n\n# 部署校验时的错误\nDEPLOY_ERROR_DICT = {\n    \"20000\": \"激活码错误, 请确认激活码申请时app_code填写正确, 可重新申请然后在[应用管理-基本信息]中编辑更新\",\n    \"20001\": \"app_code和激活码不匹配! 请确认激活码申请时app_code填写正确, 可重新申请然后在[应用管理-基本信息]中编辑更新\",\n    \"20002\": \"部署环境对应机器的mac地址与激活码不匹配! 请确认激活码申请时所有agent机器的mac地址填写正确, 可重新申请然后在[应用管理-基本信息]中编辑更新\",\n    \"20100\": \"PaaS Agent 服务器 ID 或者 TOKEN 不正确! 请确认[开发者中心-服务器信息]中注册的Agent服务器 ID 及 TOKEN与实际Agent部署配置一致\",\n    \"20101\": \"PaaS Agent License 有效性过期\",\n    \"20102\": \"PaaS Agent License mac地址有误\",\n    \"20103\": \"PaaS Agent License 解析失败\",\n    \"20104\": \"PaaS Agent License 证书文件不存在\",\n    \"20300\": \"第三方服务 RabbitMQ 申请资源失败, 请确认 RabbitMQ 可用\",\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/release/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport datetime\n\nfrom django.db import models\nfrom django.utils.html import escape\n\nfrom common.log import logger\nfrom release.constants import (APP_ALL_OPERATE_ID_LIST,\n                               APP_DID_OPERATE_ID_LIST,\n                               APP_OFFLINE_OPERATE_ID_LIST,\n                               APP_ONGOING_OPERATE_ID_LIST,\n                               APP_ONLINE_OPERATE_ID_LIST,\n                               APP_TEST_OPERATE_ID_LIST,\n                               OperateCodeEnum)\n\n\nclass ReleaseVersionManager(models.Manager):\n    def create_version(self, appobj, bugs, features, username):\n        \"\"\"创建版本\n        \"\"\"\n        if not (bugs or features):\n            return False\n\n        is_exists = self.filter(app=appobj).exists()\n        if is_exists:\n            new_version = self.filter(app=appobj).order_by('-pubdate')[0].version\n            new_version = int(''.join(new_version.split('.'))) + 1\n            version = '.'.join([n for n in str(new_version)])\n        else:\n            version = '1.0.0.1'\n\n        try:\n            self.create(app=appobj,\n                        version=version,\n                        publisher=username,\n                        pubdate=datetime.datetime.now()\n                        )\n            self.get(app=appobj, version=version).versiondetail_set.create(bug=bugs, features=features)\n        except Exception as e:\n            logger.exception(\"创建发布新版本失败!%s\", e)\n            return False\n        return True\n\n    def get_version_list(self, app):\n        version_list = []\n        versions = self.filter(app=app).order_by(\"-pubdate\")\n        for v in versions:\n            version_details = v.versiondetail_set.all()\n\n            bug_list = [escape(_detail.bug).replace('\\n', '<br/>')\n                        for _detail in version_details if _detail.bug]\n            features_list = [escape(_detail.features).replace('\\n', '<br/>')\n                             for _detail in version_details if _detail.features]\n\n            version_list.append({\n                \"version\": v.version,\n                \"publisher\": v.publisher,\n                \"pubdate\": v.pubdate_display,\n                \"features\": features_list,\n                \"bug\": bug_list,\n            })\n        return version_list\n\n\nclass UserOperateRecordManager(models.Manager):\n    def create_operate_record(self, app_code, username, operate_type, before_data='', arfter_data='', extra_data=''):\n        \"\"\"创建操作记录\n        @param app_code: app编码\n        @param username: 操作人\n        @param operate_type: 操作类型\n        @param before_data: 操作前数据\n        @param arfter_data: 操作后数据\n        @param extra_data: 其他数据\n        \"\"\"\n        try:\n            self.create(\n                app_code=app_code,\n                username=username,\n                before_data=before_data,\n                arfter_data=arfter_data,\n                operate_time=datetime.datetime.now(),\n                operate_type=operate_type,\n                extra_data=extra_data,\n            )\n            result = True\n        except Exception as e:\n            logger.exception(\"用户操作记录创建失败，error：%s\", e)\n            result = False\n        return result\n\n\nclass ReleaseRecordManager(models.Manager):\n    def create_record(self, app_code, app_old_state, operate_user, operate_id, is_success):\n        \"\"\"\n        创建记录\n        \"\"\"\n        record_obj = self.create(\n            app_code=app_code,\n            app_old_state=app_old_state,\n            operate_user=operate_user,\n            operate_id=operate_id,\n            is_success=is_success,\n            operate_time=datetime.datetime.now(),\n        )\n        return record_obj\n\n    def get_latest_did_record(self, app_code):\n        record = self.filter(operate_id__in=APP_DID_OPERATE_ID_LIST,\n                             app_code=app_code)\\\n            .order_by(\"-id\")\\\n            .first()\n\n        if not record:\n            return None\n\n        return {\n            \"username\": record.operate_user,\n            \"datetime\": record.operate_time_display,\n            \"operate_type\": record.get_operate_id_display(),\n            \"result\": \"成功\" if record.is_success else \"失败\",\n        }\n\n    def query_records(self, app_code, operate_code, size=100):\n        query = self.filter(app_code=app_code)\n\n        id_list = {\n            OperateCodeEnum.ALL.value: APP_ALL_OPERATE_ID_LIST,\n            OperateCodeEnum.TEST.value: APP_TEST_OPERATE_ID_LIST,\n            OperateCodeEnum.ONLINE.value: APP_ONLINE_OPERATE_ID_LIST,\n            OperateCodeEnum.OFFLINE.value: APP_OFFLINE_OPERATE_ID_LIST,\n        }.get(operate_code)\n\n        query = query.filter(operate_id__in=id_list).order_by(\"-operate_time\")[0:size]\n        return query\n\n    def get_last_ongoing_records(self, app_code, size=10):\n        records = self.filter(app_code=app_code)\\\n            .filter(operate_id__in=APP_ONGOING_OPERATE_ID_LIST)\\\n            .order_by(\"-id\")[:size]\n        return records\n\n    def get_app_newest_record(self, app_code):\n        # 查询最近一条, 处于这几种状态的记录, 则是app的最新记录\n        record = self.filter(app_code=app_code)\\\n            .filter(operate_id__in=APP_ALL_OPERATE_ID_LIST)\\\n            .latest('id')\n        return record\n"
  },
  {
    "path": "paas-ce/paas/paas/release/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='Record',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(max_length=30, verbose_name='\\u5bf9\\u5e94\\u7684appcode', db_index=True)),\n                ('operate_id', models.IntegerField(help_text='0\\u4e3a\\u63d0\\u6d4b\\u64cd\\u4f5c\\uff0c1\\u4e3a\\u4e0a\\u7ebf\\u64cd\\u4f5c', db_index=True, verbose_name='\\u64cd\\u4f5c\\u6807\\u8bc6', choices=[(0, '\\u63d0\\u6d4b'), (1, '\\u4e0a\\u7ebf'), (2, '\\u4e0b\\u67b6'), (3, '\\u6b63\\u5728\\u63d0\\u6d4b'), (4, '\\u6b63\\u5728\\u4e0a\\u7ebf'), (5, '\\u6b63\\u5728\\u4e0b\\u67b6'), (6, '\\u57fa\\u672c\\u4fe1\\u606f\\u6ce8\\u518c'), (7, '\\u6570\\u636e\\u5e93\\u521b\\u5efa'), (8, 'SVN\\u4ee3\\u7801\\u521d\\u59cb\\u5316'), (9, '\\u6570\\u636e\\u5e93\\u6388\\u6743'), (10, '\\u521d\\u59cb\\u5316APP\\u4ee3\\u7801'), (11, '\\u5220\\u9664APP')])),\n                ('operate_user', models.CharField(help_text='\\u8fdb\\u884c\\u4e0a\\u7ebf\\u6216\\u63d0\\u6d4b\\u64cd\\u4f5c\\u7684\\u4eba', max_length=50, null=True, verbose_name='\\u64cd\\u4f5c\\u4eba', blank=True)),\n                ('app_old_state', models.SmallIntegerField(default=1, help_text='\\u64cd\\u4f5c\\u524dapp\\u7684\\u72b6\\u6001', verbose_name='\\u64cd\\u4f5c\\u524dapp\\u7684\\u72b6\\u6001', choices=[(0, '\\u5df2\\u4e0b\\u67b6'), (1, '\\u5f00\\u53d1\\u4e2d'), (3, '\\u6d4b\\u8bd5\\u4e2d'), (4, '\\u5df2\\u4e0a\\u7ebf'), (8, '\\u6b63\\u5728\\u63d0\\u6d4b'), (9, '\\u6b63\\u5728\\u4e0a\\u7ebf'), (10, '\\u6b63\\u5728\\u4e0b\\u67b6')])),\n                ('operate_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='\\u64cd\\u4f5c\\u65f6\\u95f4', db_index=True)),\n                ('is_success', models.BooleanField(default=False, help_text='\\u63d0\\u6d4b\\u6216\\u4e0a\\u7ebf\\u64cd\\u4f5c\\u662f\\u5426\\u6210\\u529f', db_index=True, verbose_name='\\u64cd\\u4f5c\\u662f\\u5426\\u6210\\u529f')),\n                ('is_tips', models.BooleanField(default=False, help_text='\\u662f\\u5426\\u5728logo\\u4e0a\\u6dfb\\u52a0\\u66f4\\u65b0\\u63d0\\u793a', verbose_name='\\u663e\\u793a\\u65b0\\u6807\\u5fd7')),\n                ('is_version', models.BooleanField(default=False, help_text='\\u662f\\u5426\\u5728\\u65b0\\u5e94\\u7528\\u5e94\\u7528\\u6253\\u5f00\\u65f6\\u663e\\u793a\\u8be5\\u7248\\u672c\\u66f4\\u65b0\\u7279\\u6027', verbose_name='\\u663e\\u793a\\u65b0\\u7279\\u6027')),\n                ('version', models.CharField(help_text='\\u9700\\u8981\\u663e\\u793a\\u7684\\u7248\\u672c\\u53f7\\u4fe1\\u606f', max_length=50, null=True, verbose_name='\\u7248\\u672c\\u53f7', blank=True)),\n                ('message', models.TextField(help_text='\\u6267\\u884c\\u63d0\\u6d4b\\u6216\\u4e0a\\u7ebf\\u64cd\\u4f5c\\u540e\\u811a\\u672c\\u7684\\u8fd4\\u56de\\u4fe1\\u606f', null=True, verbose_name='\\u64cd\\u4f5c\\u8fd4\\u56de\\u4fe1\\u606f', blank=True)),\n                ('event_id', models.CharField(db_index=True, max_length=36, null=True, verbose_name='Event_id', blank=True)),\n                ('extra_data', models.TextField(help_text='json\\u4e32\\u5b58\\u50a8', null=True, verbose_name='\\u989d\\u5916\\u6267\\u884c\\u7ed3\\u679c\\u6570\\u636e', blank=True)),\n            ],\n            options={\n                'db_table': 'paas_release_record',\n                'verbose_name': '\\u5e94\\u7528\\u90e8\\u7f72\\u64cd\\u4f5c\\u4fe1\\u606f',\n                'verbose_name_plural': '\\u5e94\\u7528\\u90e8\\u7f72\\u64cd\\u4f5c\\u4fe1\\u606f',\n            },\n        ),\n        migrations.CreateModel(\n            name='UserOperateRecord',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('app_code', models.CharField(max_length=30, verbose_name='\\u64cd\\u4f5c\\u7684app')),\n                ('username', models.CharField(max_length=50, verbose_name='\\u64cd\\u4f5c\\u4eba')),\n                ('before_data', models.TextField(null=True, verbose_name='\\u64cd\\u4f5c\\u524d\\u6570\\u636e', blank=True)),\n                ('arfter_data', models.TextField(null=True, verbose_name='\\u64cd\\u4f5c\\u540e\\u6570\\u636e', blank=True)),\n                ('operate_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u64cd\\u4f5c\\u65f6\\u95f4')),\n                ('operate_type', models.IntegerField(default=0, verbose_name='\\u64cd\\u4f5c\\u7c7b\\u578b', choices=[(1, 'APP\\u521b\\u5efa'), (2, '\\u5220\\u9664APP'), (3, 'APP\\u63d0\\u6d4b'), (4, 'APP\\u4e0a\\u7ebf'), (5, 'APP\\u4e0b\\u67b6')])),\n                ('extra_data', models.TextField(null=True, verbose_name='\\u5176\\u4ed6\\u8bf4\\u660e', blank=True)),\n            ],\n            options={\n                'db_table': 'paas_release_useroperaterecord',\n                'verbose_name': '\\u7528\\u6237\\u64cd\\u4f5c\\u6d41\\u6c34\\u65e5\\u5fd7',\n                'verbose_name_plural': '\\u7528\\u6237\\u64cd\\u4f5c\\u6d41\\u6c34\\u65e5\\u5fd7',\n            },\n        ),\n        migrations.CreateModel(\n            name='Version',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('version', models.CharField(help_text='\\u683c\\u5f0f\\uff1ax.x.x\\uff0c\\u53ea\\u5141\\u8bb8\\u5305\\u542b\\u6570\\u5b57', max_length=30, verbose_name='app\\u7248\\u672c\\u53f7')),\n                ('code_addr', models.CharField(max_length=200, null=True, verbose_name='\\u62c9\\u53d6\\u7684\\u4ee3\\u7801\\u5730\\u5740', blank=True)),\n                ('publisher', models.CharField(max_length=30, verbose_name='\\u7248\\u672c\\u53d1\\u5e03\\u8005')),\n                ('pubdate', models.DateTimeField(auto_now_add=True, null=True, verbose_name='\\u53d1\\u5e03\\u65f6\\u95f4', db_index=True)),\n                ('desc', models.TextField(null=True, verbose_name='\\u7248\\u672c\\u63cf\\u8ff0', blank=True)),\n                ('app', models.ForeignKey(on_delete=models.CASCADE, verbose_name='\\u5e94\\u7528', to='app.App')),\n            ],\n            options={\n                'db_table': 'paas_release_version',\n                'verbose_name': '\\u5e94\\u7528\\u53d1\\u5e03\\u7248\\u672c\\u4fe1\\u606f',\n                'verbose_name_plural': '\\u5e94\\u7528\\u53d1\\u5e03\\u7248\\u672c\\u4fe1\\u606f',\n            },\n        ),\n        migrations.CreateModel(\n            name='VersionDetail',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('features', models.TextField(default=None, help_text='\\u8bb0\\u5f55\\u8be5\\u7248\\u672c\\u7279\\u6027\\u4fe1\\u606f', null=True, verbose_name='\\u66f4\\u65b0\\u7279\\u6027', blank=True)),\n                ('bug', models.TextField(default=None, help_text='\\u8bb0\\u5f55\\u4fee\\u590d\\u7684bug\\u4fe1\\u606f', null=True, verbose_name='\\u4fee\\u590dbug', blank=True)),\n                ('app_version', models.ForeignKey(on_delete=models.CASCADE, to='release.Version')),\n            ],\n            options={\n                'db_table': 'paas_release_versiondetail',\n                'verbose_name': '\\u5e94\\u7528\\u7279\\u5f81\\u4fe1\\u606f',\n                'verbose_name_plural': '\\u5e94\\u7528\\u7279\\u5f81\\u4fe1\\u606f',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/release/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/release/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\n\nfrom django.db import models\n\nfrom app.models import App\nfrom app.constants import STATE_CHOICES\nfrom release.manager import ReleaseVersionManager, UserOperateRecordManager, ReleaseRecordManager\nfrom release.constants import (OPERATE_ID_CHOICES, USER_OPERATE_TYPE_CHOICES)\n\n\nclass Record(models.Model):\n    \"\"\"\n    记录应用提测、上线、下架操作信息\n    \"\"\"\n    app_code = models.CharField(\"对应的appcode\", max_length=30, db_index=True)\n    operate_id = models.IntegerField(\"操作标识\", choices=OPERATE_ID_CHOICES, help_text=\"0为提测操作，1为上线操作\", db_index=True)\n    operate_user = models.CharField(\"操作人\", max_length=50, blank=True, null=True, help_text=\"进行上线或提测操作的人\")\n\n    app_old_state = models.SmallIntegerField(\"操作前app的状态\", choices=STATE_CHOICES, help_text=\"操作前app的状态\", default=1)\n    # = 记录第一次生成的时间\n    operate_time = models.DateTimeField(\"操作时间\", auto_now_add=True, blank=True, null=True, db_index=True)\n    is_success = models.BooleanField(\"操作是否成功\", default=False, help_text=\"提测或上线操作是否成功\", db_index=True)\n    is_tips = models.BooleanField(\"显示新标志\", default=False, help_text=\"是否在logo上添加更新提示\")\n    is_version = models.BooleanField(\"显示新特性\", default=False, help_text=\"是否在新应用应用打开时显示该版本更新特性\")\n    version = models.CharField(\"版本号\", max_length=50, blank=True, null=True, help_text=\"需要显示的版本号信息\")\n    message = models.TextField(\"操作返回信息\", blank=True, null=True, help_text=\"执行提测或上线操作后脚本的返回信息\")\n    event_id = models.CharField('Event_id', max_length=36, blank=True, null=True, db_index=True)\n    # 后台任务执行额外输出\n    extra_data = models.TextField(\"额外执行结果数据\", blank=True, null=True, help_text=\"json串存储\")\n\n    objects = ReleaseRecordManager()\n\n    @property\n    def operate_time_display(self):\n        if not self.operate_time:\n            return ''\n        return self.operate_time.strftime('%Y-%m-%d %X')\n\n    def get_extra_data(self):\n        try:\n            extra_data = json.loads(self.extra_data) if self.extra_data else {}\n        except Exception:\n            extra_data = {}\n        return extra_data\n\n    def __unicode__(self):\n        return '%s' % (self.app_code)\n\n    class Meta:\n        db_table = 'paas_release_record'\n        verbose_name = \"应用部署操作信息\"\n        verbose_name_plural = \"应用部署操作信息\"\n\n\nclass Version(models.Model):\n    \"\"\"\n    存储app版本信息\n    \"\"\"\n    app = models.ForeignKey(App, on_delete=models.CASCADE, verbose_name=\"应用\")\n    version = models.CharField(\"app版本号\", max_length=30, help_text=\"格式：x.x.x，只允许包含数字\")\n    code_addr = models.CharField(\"拉取的代码地址\", max_length=200, blank=True, null=True)\n    publisher = models.CharField(\"版本发布者\", max_length=30)\n    pubdate = models.DateTimeField(\"发布时间\", auto_now_add=True, blank=True, null=True, db_index=True)\n    desc = models.TextField(\"版本描述\", blank=True, null=True)\n\n    objects = ReleaseVersionManager()\n\n    @property\n    def pubdate_display(self):\n        if not self.pubdate:\n            return ''\n        return self.pubdate.strftime(\"%Y-%m-%d %H:%M:%S\")\n\n    def __unicode__(self):\n        return '%s(%s)' % (self.app.name, self.version)\n\n    class Meta:\n        db_table = 'paas_release_version'\n        verbose_name = \"应用发布版本信息\"\n        verbose_name_plural = \"应用发布版本信息\"\n\n\nclass VersionDetail(models.Model):\n    \"\"\"\n    存放应用每个版本对应的特征信息和bugs信息\n    \"\"\"\n    features = models.TextField(\"更新特性\", help_text=\"记录该版本特性信息\", blank=True, null=True, default=None)\n    bug = models.TextField(\"修复bug\", help_text=\"记录修复的bug信息\", blank=True, null=True, default=None)\n    app_version = models.ForeignKey(Version, on_delete=models.CASCADE)\n\n    def __unicode__(self):\n        return self.features\n\n    class Meta:\n        db_table = 'paas_release_versiondetail'\n        verbose_name = \"应用特征信息\"\n        verbose_name_plural = \"应用特征信息\"\n\n\nclass UserOperateRecord(models.Model):\n    \"\"\"\n    用户操作流水日志\n    \"\"\"\n    app_code = models.CharField(\"操作的app\", max_length=30)\n    username = models.CharField(\"操作人\", max_length=50)\n    before_data = models.TextField(\"操作前数据\", blank=True, null=True)\n    arfter_data = models.TextField(\"操作后数据\", blank=True, null=True)\n    operate_time = models.DateTimeField(\"操作时间\", auto_now_add=True)\n    operate_type = models.IntegerField(\"操作类型\", default=0, choices=USER_OPERATE_TYPE_CHOICES)\n    extra_data = models.TextField(\"其他说明\", blank=True, null=True)\n\n    objects = UserOperateRecordManager()\n\n    def __unicode__(self):\n        return '%s' % (self.app_code)\n\n    class Meta:\n        db_table = 'paas_release_useroperaterecord'\n        verbose_name = \"用户操作流水日志\"\n        verbose_name_plural = \"用户操作流水日志\"\n"
  },
  {
    "path": "paas-ce/paas/paas/release/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\nfrom django.test import TestCase # noqa\n\n# Create your tests here.\n"
  },
  {
    "path": "paas-ce/paas/paas/release/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import include, path, re_path\n\nfrom common.constants import SAAS_CODE_REGEX\nfrom release import views\n\n\n# release/{app_code}/operation/\nurlpatterns = [\n    re_path(r'^(?P<app_code>' + SAAS_CODE_REGEX + ')/', include([\n        # 发布部署页\n        path('', views.HomeView.as_view()),\n\n        # 提测\n        path('test/', views.ReleaseTestView.as_view()),\n        # 上线\n        path('online/', views.ReleaseProductionView.as_view()),\n\n        # 下架\n        path('offline/', views.ReleaseOfflineView.as_view()),\n\n        # 删除\n        path('delete/', views.ApplicationDeleteView.as_view()),\n\n        # 查询未完成任务的状态, 更新数据库\n        path('task/unfinished/', views.UnfinishedTaskView.as_view()),\n\n        # deploy page\n        re_path(r'^deploy_page/(?P<page_type>\\w+)/$', views.DeployPageView.as_view()),\n\n\n        # 发布记录 页面及列表\n        path('record/', views.RecordPageView.as_view()),\n        re_path(r'^record/list/(?P<operate_code>\\d)/$', views.AppRecordView.as_view()),\n\n        path('record/last_release/', views.LastReleaseRecordView.as_view()),\n\n        # 轮询查询状态\n        path('task/', views.EventStatusView.as_view()),\n\n        # 版本记录\n        path('version/', views.ReleaseVersion.as_view()),\n    ])),\n\n\n    # for legency system\n    # 轮询查询状态\n    re_path(r'^get_app_poll_task/(?P<app_code>' + SAAS_CODE_REGEX + ')/$', views.EventStatusView.as_view()),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/release/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport datetime\nimport json\n\nfrom django.conf import settings\n\nfrom app.constants import AppStateEnum\nfrom app.models import App\nfrom common.constants import ModeEnum\nfrom common.log import logger\nfrom common.mymako import render_mako_tostring_context\nfrom components.engine import get_event_log\nfrom release.constants import EventResultEnum, EventStatusEnum, OperateIDEnum, APP_ONGOING_OPERATE_ID_LIST\nfrom release.models import Record, UserOperateRecord\nfrom saas.models import SaaSApp\n\n\ndef record_user_operate(app_code, username, operate_type, before_data='', arfter_data='', extra_data=''):\n    \"\"\"\n    用户操作记录创建\n    @param app_code: app编码\n    @param username: 操作人\n    @param operate_type: 操作类型\n    @param before_data: 操作前数据\n    @param arfter_data: 操作后数据\n    @param extra_data: 其他数据\n    \"\"\"\n    if isinstance(extra_data, dict):\n        extra_data = json.dumps(extra_data)\n\n    if not isinstance(extra_data, str):\n        extra_data = str(extra_data)\n\n    result = UserOperateRecord.objects.create_operate_record(app_code, username, operate_type,\n                                                             before_data, arfter_data, extra_data)\n    return result\n\n\ndef record_user_release_operate(app_code, username, operate_type, extra_data):\n    return record_user_operate(app_code, username, operate_type,\n                               before_data='', arfter_data='', extra_data=extra_data)\n\n\ndef _update_status_test(is_success, app, app_old_state, record):\n    app_code = app.code\n    record.operate_id = OperateIDEnum.TO_TEST.value\n    record.save()\n\n    if not is_success:\n        App.objects.to_state(app_code, app_old_state)\n        return\n\n    data = dict(is_already_test=True)\n    # 记录首次提测时间\n    if not app.first_test_time:\n        data.update({\n            \"first_test_time\": datetime.datetime.now()\n        })\n    App.objects.to_state(app_code, AppStateEnum.TEST.value, **data)\n\n\ndef _update_status_online(is_success, app, app_old_state, record):\n    app_code = app.code\n    record.operate_id = OperateIDEnum.TO_ONLINE.value\n    record.save()\n\n    if not is_success:\n        App.objects.to_state(app_code, app_old_state)\n        return\n\n    data = dict(is_already_online=True)\n    # 记录首次提测时间\n    if not app.first_online_time:\n        data.update({\n            \"first_online_time\": datetime.datetime.now()\n        })\n    App.objects.to_state(app_code, AppStateEnum.ONLINE.value, **data)\n\n\ndef _update_status_offline(is_success, app, app_old_state, record, mode):\n    app_code = app.code\n    record.operate_id = OperateIDEnum.TO_OFFLINE.value\n    record.save()\n\n    # 下架成功后修改app状态为下架\n    if not is_success:\n        App.objects.to_state(app_code, app_old_state)\n        return\n\n    if mode == ModeEnum.ALL.value:\n        App.objects.to_state(app_code, AppStateEnum.OFFLINE.value,\n                             is_already_online=False, is_already_test=False)\n\n    # t环境下架\n    elif mode == ModeEnum.TEST.value:\n        is_already_online = App.objects.get(code=app_code).is_already_online\n        # 正式环境已上线，保持之前原有状态\n        if is_already_online:\n            App.objects.to_state(app_code, app_old_state, is_already_test=False)\n        else:\n            # 正式环境未上线或已下架，则状态为下架\n            App.objects.to_state(app_code, AppStateEnum.OFFLINE.value, is_already_test=False)\n    # o环境下架，做标识\n    elif mode == ModeEnum.PROD.value:\n        # 应用是否在线 = !下架成功\n        App.objects.to_state(app_code, AppStateEnum.OFFLINE.value, is_already_online=False)\n\n\ndef _get_event_ids_and_mode(record, event_id):\n    event_ids = [event_id]\n    mode = ModeEnum.ALL.value\n    try:\n        extra_data = json.loads(record.extra_data)\n        if record.operate_id == OperateIDEnum.IN_OFFLINE.value:\n            event_ids = extra_data.get(\"event_ids\", {})\n        else:\n            if extra_data.get(\"event_id\"):\n                event_ids = [extra_data.get(\"event_id\")]\n\n        mode = extra_data.get(\"mode\", ModeEnum.ALL.value)\n    except Exception:\n        event_ids = [event_id]\n        mode = ModeEnum.ALL.value\n\n    return event_ids, mode\n\n\ndef get_event_status(event_id, app_code, expire_seconds=settings.EVENT_STATE_EXPIRE_SECONDS, request=None):\n    \"\"\"\n    查询事件状态\n    app 提测、上线、下架后台任务状态轮询\n    @return: result：0：失败，1：成功，2：正在执行\n    \"\"\"\n    record = Record.objects.filter(event_id=event_id).first()\n    if not (event_id and record):\n        message = \"查询事件状态失败\"\n        logger.warning(\"[app:%s] %s, event_id:%s\", app_code, message, event_id)\n        data = {\n            \"status\": EventResultEnum.PENDING.value,\n            \"html\": message,\n        }\n        return False, message, data\n\n    app = App.objects.get(code=app_code)\n\n    app_old_state = record.app_old_state\n    event_ids, mode = _get_event_ids_and_mode(record, event_id)\n\n    ok, data = get_event_log(app_code=app_code, auth_token=app.auth_token, event_ids=event_ids)\n    logger.info(\"get_event_status: [event_id=%s, ok=%s, data=%s]\", event_ids, ok, data)\n\n    event_log = ''\n    status = EventStatusEnum.PENDING.value\n    is_success = False\n    # 查询完成, 判定状态, 更新app\n    if ok:\n        event_log = data.get(\"logs\")\n        status = data.get(\"status\")\n\n        # 判定, 是否超时了, 且status != 'SUCCESS'\n        total_seconds = (datetime.datetime.now() - record.operate_time).total_seconds()\n        if total_seconds > expire_seconds and status != EventStatusEnum.SUCCESS.value:\n            message = \"事件超时({}s), 设置为失败\".format(settings.EVENT_STATE_EXPIRE_SECONDS)\n            logger.info(\"[app:%s] %s, event_id:%s\", app_code, message, event_id)\n            record.message = message\n            status = EventStatusEnum.FAILURE.value\n\n        # 轮询时, 顺带更新record的状态为结束\n        is_success = (status == EventStatusEnum.SUCCESS.value)\n        if status in (EventStatusEnum.SUCCESS.value, EventStatusEnum.FAILURE.value):\n            # 是否操作成功了\n            record.is_success = is_success\n            record.message = \"操作{}! \\n{}\".format(\"成功\" if is_success else \"失败\", event_log)\n\n            if record.operate_id == OperateIDEnum.IN_TEST.value or app.state == AppStateEnum.IN_TEST.value:\n                _update_status_test(is_success, app, app_old_state, record)\n\n            elif record.operate_id == OperateIDEnum.IN_ONLINE.value or app.state == AppStateEnum.IN_ONLINE.value:\n                _update_status_online(is_success, app, app_old_state, record)\n\n            elif record.operate_id == OperateIDEnum.IN_OFFLINE.value or app.state == AppStateEnum.IN_OFFLINE.value:\n                _update_status_offline(is_success, app, app_old_state, record, mode)\n\n            # 如果是SaaS应用, 成功后更新online_version=current_version\n            logger.info(\"judge if to update_online_version: is_saas=%s, is_success=%s\", app.is_saas, is_success)\n            if app.is_saas and is_success:\n                SaaSApp.objects.update_online_version(app_code)\n\n    # gen html\n    if request:\n        html_context = {\"app_code\": app_code,\n                        \"operate_id\": record.operate_id,\n                        \"event_id\": event_id,\n                        \"event_log\": event_log,\n                        \"status\": status,\n                        \"is_success\": is_success,\n                        \"is_saas\": app.is_saas,\n                        }\n        html_data = render_mako_tostring_context(request, \"release/release_flow.part\", html_context)\n    else:\n        html_data = event_log\n\n    # 操作成功后, 就应该停止\n    # 正在上线或者提测, 轮询不能停\n    if record.operate_id in APP_ONGOING_OPERATE_ID_LIST:\n        status = EventResultEnum.PENDING.value\n    elif status == 'FAILURE':\n        status = EventResultEnum.FAIL.value\n    else:\n        status = EventResultEnum.SUCCESS.value\n\n    data = {\n        \"status\": status,\n        \"html\": html_data,\n        \"app_test_url\": app.app_test_url,\n        \"app_prod_url\": app.app_prod_url,\n    }\n    return True, 'success', data\n\n\ndef sync_app_state(app_code):\n    \"\"\"\n    更新应用的状态\n\n    如果应用的状态是：正在提测、上线、下架 则调用appengine 接口刷新应用的状态\n    \"\"\"\n    # 查询最近一条, 处于这几种状态的记录, 则是app的最新记录\n    record = Record.objects.get_app_newest_record(app_code)\n    # 没有发布记录则直接返回None，不刷新应用状态\n    if not record:\n        return None\n\n    event_id = record.event_id\n    # 更新应用最新状态\n    get_event_status(event_id, app_code)\n\n\ndef get_release_home_page_data(app_code, username, page=''):\n    \"\"\"\n    获取部署/下架首页数据\n    \"\"\"\n    app = App.objects.get(code=app_code)\n    is_app_creater = (app.creater == username)\n\n    # 获取最后一条操作记录\n    lastest_record = Record.objects.get_latest_did_record(app_code)\n    data = {\"app_code\": app_code,\n            \"app\": app,\n            \"is_app_creater\": is_app_creater,\n            \"lastest_record\": lastest_record,\n            \"app_test_url\": app.app_test_url,\n            \"app_prod_url\": app.app_prod_url,\n            }\n\n    if page:\n        data.update({\"page\": page})\n    return data\n"
  },
  {
    "path": "paas-ce/paas/paas/release/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport datetime\nimport json\n\nfrom django.conf import settings\nfrom django.http import JsonResponse\nfrom django.views.generic import View\n\nfrom app.models import App, SecureInfo\nfrom common.constants import ModeEnum, ModeNameDict\nfrom common.exceptions import BadRequestException\nfrom common.log import logger\nfrom common.mixins.base import AppDeveloperRequiredMixin\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.views.mako import JsonView, MakoTemplateView\nfrom components.engine import get_event_log\nfrom engine.deploy import (app_to_offline_task, app_to_online_task,\n                           app_to_test_task)\nfrom engine.models import BkServer, ThirdServer\nfrom release.constants import (APP_DID_OPERATE_ID_LIST, OPERATE_CODE_LIST, EventStatusEnum,\n                               OperateIDEnum, UserOperateTypeEnum, DeployPageTypeEnum)\nfrom release.models import Record, Version\nfrom release.utils import get_event_status, get_release_home_page_data\nfrom release.utils import record_user_release_operate as _r\n\n\nclass HomeView(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"发布部署 - 首页\n    \"\"\"\n    template_name = 'release/home.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(HomeView, self).get_context_data(**kwargs)\n        request = self.request\n\n        app_code = self.kwargs[\"app_code\"]\n        username = request.user.username\n        data = get_release_home_page_data(app_code, username)\n        context.update(data)\n\n        return context\n\n\nclass RecordPageView(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"发布记录\n    \"\"\"\n    template_name = 'release/record.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(RecordPageView, self).get_context_data(**kwargs)\n        app_code = self.kwargs[\"app_code\"]\n        context.update({\"app_code\": app_code, \"tab\": \"record\"})\n\n        return context\n\n\nclass AppRecordView(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"获取发布记录页面\n    operate_id: 操作对应ID, 0: 全部， 1：提测，  2：上线，3：下架\n    \"\"\"\n    template_name = 'release/record_list.part'\n\n    def get_context_data(self, **kwargs):\n        context = super(AppRecordView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n        operate_code = self.kwargs[\"operate_code\"]\n        if operate_code not in OPERATE_CODE_LIST:\n            raise BadRequestException(\"operate_code is invalid\")\n\n        query = Record.objects.query_records(app_code, operate_code, size=100)\n        record_list = []\n        for _record in query:\n            # 提测展示信息\n            extra_data = _record.get_extra_data()\n\n            if not extra_data:\n                task_detail = ''\n                extra_msg = '--'\n            else:\n                task_detail = extra_data.get(\"task_detail\", \"\")\n                if _record.operate_id in [OperateIDEnum.IN_OFFLINE.value, OperateIDEnum.TO_OFFLINE.value]:\n                    _extra_data_mode = extra_data.get(\"mode\", ModeEnum.ALL.value)\n\n                    _env = ModeNameDict.get(_extra_data_mode, \"--\")\n                    extra_msg = \"选择下架环境：{}\".format(_env)\n                else:\n                    extra_msg = \"--\"\n\n            is_done = _record.operate_id in APP_DID_OPERATE_ID_LIST\n\n            record_list.append({\n                \"operate_type\": _record.get_operate_id_display(),\n                \"operate_user\": _record.operate_user,\n                \"is_success\": _record.is_success,\n                \"is_done\": is_done,\n                \"operate_time\": _record.operate_time_display,\n                \"extra_data\": extra_msg,\n                \"detail\": _record.message.replace('\\n', '<br/>') if _record.message else \"没有返回信息！\",\n                \"task_detail\": task_detail\n            })\n\n        context.update({\n            \"record_list\": record_list,\n            \"app_code\": app_code,\n        })\n        return context\n\n\nclass ReleaseVersion(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"版本信息\n    app发布历史版本\n    \"\"\"\n    template_name = 'release/version.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(ReleaseVersion, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n\n        app = App.objects.get(code=app_code)\n        version_list = Version.objects.get_version_list(app)\n        context.update({\"app_code\": app_code, \"version_list\": version_list, \"tab\": \"version\"})\n        return context\n\n\nclass DeployPageView(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"获取部署页面信息\n    \"\"\"\n    def get_template_names(self):\n        page_type = self.kwargs[\"page_type\"]\n\n        tpl = \"release/{}.part\".format(page_type)\n\n        return [tpl]\n\n    def get_context_data(self, **kwargs):\n        context = super(DeployPageView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n        page_type = self.kwargs[\"page_type\"]\n\n        app = App.objects.get(code=app_code)\n        vcs_info = SecureInfo.objects.get_vcs_info(app_code)\n        vcs_url = vcs_info.get(\"VCS_PATH\") if vcs_info else '--'\n        data = {\"app\": app,\n                \"vcs_url\": vcs_url,\n                \"app_code\": app_code,\n                }\n\n        if page_type == DeployPageTypeEnum.TEST.value:\n            data.update({\"is_service_rabbitmq_active\": ThirdServer.objects.is_rabbitmq_active()})\n\n        context.update(data)\n        return context\n\n\nclass ReleaseTestView(AppDeveloperRequiredMixin, View):\n    \"\"\"app提测\n    \"\"\"\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n        username = request.user.username\n\n        logger.info(\"[app:%s] 开始进行[测试部署]...\", app_code)\n\n        app = App.objects.get(code=app_code)\n\n        # 检测测试服务器是否激活\n        is_test_app_deployable = BkServer.objects.check_test_app_deployable()\n        if not is_test_app_deployable:\n            message = \"当前没有可用的[测试服务器], 无法进行提测操作. 请到<a href='/engine/server/'> [开发者中心-服务器信息] </a> 注册并激活服务器\"\n            logger.info(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        # 只有[下架/开发/测试/上线]状态可操作\n        can_be_test, message = app.can_be_test()\n        if not can_be_test:\n            logger.info(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        # 启用服务\n        form_data = request.POST.get(\"form_data\", None)\n        if form_data:\n            try:\n                form_data = json.loads(request.POST.get(\"form_data\"))\n            except Exception as e:\n                message = \"参数错误！\"\n                logger.exception(\"[app:%s] %s error=%s\", app_code, message, str(e))\n                return BadRequestException(message)\n\n            is_use_celery = (form_data.get(\"is_use_celery\") == \"checked\")\n            is_use_celery_beat = (form_data.get(\"is_use_celery_beat\") == \"checked\")\n\n            try:\n                app.trigger_celery(is_use_celery, is_use_celery_beat)\n                logger.info(\"update app info [is_use_celery=%s, is_use_celery_beat=%s]\",\n                            app.is_use_celery, app.is_use_celery_beat)\n            except Exception:\n                logger.exception(\"Update is_use_celery/is_use_celery_beat fail!\")\n\n        # 提测\n        ok, event_id, message = app_to_test_task(app_code, app, username)\n\n        # 记录操作流水日志\n        extra_data = {\"username\": username, \"is_success\": ok, \"event_id\": event_id}\n        _r(app_code, username, UserOperateTypeEnum.RELEASE_TEST.value, extra_data)\n\n        if ok:\n            message = \"测试部署事件提交成功！\"\n            logger.info(\"[app:%s] %s event_id: %s\", app_code, message, event_id)\n            return OKJsonResponse(message, event_id=event_id)\n\n        logger.info(\"[app:%s] %s event_id: %s\", app_code, message, event_id)\n        return FailJsonResponse(message, event_id=event_id)\n\n\nclass ReleaseProductionView(AppDeveloperRequiredMixin, View):\n    \"\"\"app上线\n    \"\"\"\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n        username = request.user.username\n\n        logger.info(\"[app:%s] 开始进行[正式部署]...\", app_code)\n\n        app = App.objects.get(code=app_code)\n\n        try:\n            form_data = json.loads(request.POST.get(\"form_data\", '{}'))\n        except Exception as e:\n            message = \"参数错误！\"\n            logger.exception(\"[app:%s] %s error=%s\", app_code, message, e)\n            return BadRequestException(message)\n\n        is_prod_app_deployable = BkServer.objects.check_prod_app_deployable()\n        if not is_prod_app_deployable:\n            message = \"当前没有可用的[正式服务器], 无法进行提测操作. 请到<a href='/engine/server/'> [开发者中心-服务器信息] </a> 注册并激活服务器\"\n            logger.info(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        # 前端变量不要一直向后, 限制\n        is_tips = form_data.get(\"is_tips\", 0)\n        features = form_data.get(\"features\", \"\")\n        bugs = form_data.get(\"bugs\", \"\")\n\n        can_be_online, message = app.can_be_online()\n        if not can_be_online:\n            logger.info(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        # 上线操作\n        ok, event_id, message = app_to_online_task(app_code, app, username, is_tips, features, bugs)\n\n        # 操作流水日志\n        extra_data = {\"username\": username, \"form_data\": form_data}\n        _r(app_code, username, UserOperateTypeEnum.RELEASE_ONLINE.value, extra_data)\n\n        if not ok:\n            logger.info(\"[app:%s] %s event_id: %s\", app_code, message, event_id)\n            return FailJsonResponse(message, event_id=event_id)\n\n        message = \"正式部署事件提交成功！\"\n        logger.info(\"[app:%s] %s event_id: %s\", app_code, message, event_id)\n        return OKJsonResponse(message, event_id=event_id)\n\n\nclass ReleaseOfflineView(AppDeveloperRequiredMixin, MakoTemplateView):\n    \"\"\"app下架\n    发布部署 - 下架首页\n    发布部署 - 执行下架\n    \"\"\"\n    template_name = 'release/home.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(ReleaseOfflineView, self).get_context_data(**kwargs)\n        request = self.request\n\n        app_code = self.kwargs[\"app_code\"]\n        username = request.user.username\n\n        data = get_release_home_page_data(app_code, username, page=\"unrelease\")\n        context.update(data)\n\n        return context\n\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n        username = request.user.username\n\n        logger.info(\"[app:%s] 开始进行[下架]...\", app_code)\n\n        try:\n            form_data = json.loads(request.POST.get(\"form_data\", '{}'))\n        except Exception:\n            message = \"参数错误！\"\n            logger.exception(\"[app:%s] %s\", app_code, message)\n            return BadRequestException(message)\n\n        # NOTE: 下架不加检查服务器, 因为此时已经提测/上线的, 所以默认可以下架成功\n        # 获取应用基本信息\n        app = App.objects.get(code=app_code)\n\n        # 状态判定\n        mode = form_data.get(\"mode\", \"all\")\n        can_be_offline, message = app.can_be_offline(mode)\n        if not can_be_offline:\n            logger.info(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        # 执行下架\n        app_old_state = app.state\n        auth_token = app.auth_token\n        ok, event_id = app_to_offline_task(app_code, auth_token, username, mode, app_old_state)\n\n        # 操作流水日志\n        extra_data = {\"username\": username, \"form_data\": form_data}\n        _r(app_code, username, UserOperateTypeEnum.RELEASE_OFFLINE.value, extra_data)\n\n        if ok:\n            message = \"下架事件提交成功！\"\n            logger.info(\"[app:%s] %s event_id: %s\", app_code, message, event_id)\n            return OKJsonResponse(message, event_id=event_id)\n\n        message = \"下架事件提交失败！\"\n        logger.info(\"[app:%s] %s event_id: %s\", app_code, message, event_id)\n        return FailJsonResponse(message, event_id=event_id)\n\n\nclass ApplicationDeleteView(AppDeveloperRequiredMixin, View):\n    \"\"\"删除应用\n    \"\"\"\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n        logger.info(\"[app:%s] 开始进行[删除]...\", app_code)\n\n        username = request.user.username\n\n        app = App.objects.get(code=app_code)\n        can_be_deleted, message = app.can_be_deleted(username)\n        if not can_be_deleted:\n            logger.info(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        try:\n            SecureInfo.objects.filter(app_code=app_code).delete()\n            App.objects.filter(code=app_code).delete()\n            # 将APP的发布记录保存为上一次，避免下次创建时显示冲突\n            Record.objects.filter(app_code=app_code).update(version='last')\n        except Exception:\n            message = \"删除失败！\"\n            logger.exception(\"[app:%s] %s\", app_code, message)\n            return FailJsonResponse(message)\n\n        # 操作流水日志\n        extra_data = {\"username\": username}\n        _r(app_code, username, UserOperateTypeEnum.APP_DELETE.value, extra_data)\n\n        message = \"删除成功！\"\n        logger.info(\"[app:%s] %s\", app_code, message)\n        return OKJsonResponse(message)\n\n\nclass EventStatusView(AppDeveloperRequiredMixin, View):\n    \"\"\"查询事件状态\n    app 提测、上线、下架后台任务状态轮询\n    @return: result：0：失败，1：成功，2：正在执行\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n\n        event_id = request.GET.get(\"event_id\", '')\n        ok, message, data = get_event_status(event_id, app_code, request=request)\n        result = {\n            \"result\": ok,\n            \"message\": message,\n            \"data\": data\n        }\n        return JsonResponse(result)\n\n\nclass UnfinishedTaskView(AppDeveloperRequiredMixin, View):\n    \"\"\"到app engine检查并更新最近10条未完成的task的状态\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n\n        app = App.objects.get(code=app_code)\n\n        records = Record.objects.get_last_ongoing_records(app_code, size=10)\n        for record in records:\n            event_id = record.event_id\n            event_ids = [event_id]\n            if record.operate_id == OperateIDEnum.IN_OFFLINE.value:\n                try:\n                    event_ids = json.loads(record.extra_data).get(\"event_ids\", [])\n                except Exception:\n                    event_ids = [event_id]\n\n            ok, data = get_event_log(app_code=app_code, auth_token=app.auth_token, event_ids=event_ids)\n            if not ok:\n                continue\n\n            status = data.get(\"status\")\n            # 判定操作时间, 超过了, 就判定是超时, 直接失败\n            expire_seconds = (datetime.datetime.now() - record.operate_time).total_seconds()\n            if (expire_seconds > settings.HISTORY_EVENT_STATE_EXPIRE_SECONDS\n                    and status != EventStatusEnum.SUCCESS.value):\n                message = \"check_unfinished_task, 事件超时({}s), 设置为失败\".format(settings.HISTORY_EVENT_STATE_EXPIRE_SECONDS) # noqa\n                logger.info(\"[app:%s] %s, event_id:%s\", app_code, message, event_id)\n                record.message = message\n                status = EventStatusEnum.FAILURE.value\n\n            if status in (EventStatusEnum.SUCCESS.value, EventStatusEnum.FAILURE.value):\n                record.is_success = (status == EventStatusEnum.SUCCESS.value)\n\n                to_operate_id = {OperateIDEnum.IN_TEST.value: OperateIDEnum.TO_TEST.value,\n                                 OperateIDEnum.IN_ONLINE.value: OperateIDEnum.TO_ONLINE.value,\n                                 OperateIDEnum.IN_OFFLINE.value: OperateIDEnum.TO_OFFLINE.value\n                                 }.get(record.operate_id, record.operate_id)\n                record.operate_id = to_operate_id\n\n                record.save()\n\n        return OKJsonResponse(\"success\")\n\n\nclass LastReleaseRecordView(AppDeveloperRequiredMixin, JsonView):\n    \"\"\"获取部署最新的一条记录，用于刷新页面后继续轮询部署状态\n    \"\"\"\n    def get_context_data(self, **kwargs):\n        context = super(LastReleaseRecordView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n        try:\n            # 查询最近一条, 处于这几种状态的记录, 则是app的最新记录\n            record = Record.objects.get_app_newest_record(app_code)\n            context.update({\n                \"result\": True,\n                \"message\": \"success\",\n                \"data\": {\n                    \"record_id\": record.id,\n                    \"event_id\": record.event_id\n                }\n            })\n            return context\n        except Exception:\n            message = \"[app:{}] {}\".format(app_code, \"get_last_release_record 查询错误！\")\n            logger.exception(message)\n            context.update({\n                \"result\": False,\n                \"message\": message,\n                \"data\": {}\n            })\n            return context\n"
  },
  {
    "path": "paas-ce/paas/paas/requirements.txt",
    "content": "django==4.2.16\ndj-static==0.0.6\nmako==1.3.5\npycrypto==2.6.1\nrequests==2.32.3\ngunicorn==23.0.0\nuWSGI==2.0.26\npymysql==1.1.1\nredis==2.10.5\nPyYAML==5.1\nPillow==10.4.0\ngevent==24.2.1\npytz==2016.6.1\nenum34==1.1.6\nMarkupSafe==2.1.5\nsix==1.16.0\n\n# for esb\njinja2==2.8\ndjango-bootstrap-form==3.2.1\nMarkdown==3.7\npygments==2.18.0\n\n# for test\nmock==2.0.0\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\n\nfrom resource.models import Resource\n\n\n@admin.register(Resource)\nclass ResourceAdmin(admin.ModelAdmin):\n    pass\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models\n\nfrom common.log import logger\n\n\nclass ResourceManager(models.Manager):\n    def get_resource_list(self):\n        try:\n            return self.filter(display=True).order_by('name').all()\n        except Exception as e:\n            logger.exception(\"获取资源下载失败: %s\", e)\n            return []\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='Resource',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=128, verbose_name='\\u540d\\u79f0')),\n                ('version', models.CharField(default=b'--', max_length=36, null=True, verbose_name='\\u7248\\u672c', blank=True)),\n                ('size', models.CharField(default=b'--', max_length=36, null=True, verbose_name='\\u6587\\u4ef6\\u5927\\u5c0f', blank=True)),\n                ('display', models.BooleanField(default=True, verbose_name='\\u662f\\u5426\\u663e\\u793a')),\n                ('icon_url', models.CharField(help_text=b'\\xe5\\xa1\\xab\\xe5\\x86\\x99\\xe5\\xa4\\x96\\xe7\\xbd\\x91\\xe5\\x9c\\xb0\\xe5\\x9d\\x80', max_length=256, null=True, verbose_name='\\u4e0b\\u8f7d\\u56fe\\u6807', blank=True)),\n                ('doc_url', models.CharField(help_text=b'\\xe5\\xa1\\xab\\xe5\\x86\\x99\\xe5\\xa4\\x96\\xe7\\xbd\\x91\\xe5\\x9c\\xb0\\xe5\\x9d\\x80', max_length=256, null=True, verbose_name='\\u6587\\u6863URL', blank=True)),\n                ('download_url', models.CharField(help_text=b'\\xe5\\xa1\\xab\\xe5\\x86\\x99\\xe5\\xa4\\x96\\xe7\\xbd\\x91\\xe5\\x9c\\xb0\\xe5\\x9d\\x80', max_length=256, null=True, verbose_name='\\u4e0b\\u8f7dURL', blank=True)),\n                ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4')),\n            ],\n            options={\n                'db_table': 'paas_resources',\n                'verbose_name': '\\u8d44\\u6e90\\u94fe\\u63a5',\n                'verbose_name_plural': '\\u8d44\\u6e90\\u94fe\\u63a5',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0002_data_insert_framework.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n    Resource(name=\"开发框架\",\n             version=\"--\",\n             size=\"740KB\",\n             display=True,\n             icon_url=\"/static/img/resource/framework.png\",\n             download_url=\"/media/framework.tar.gz\",\n             ).save()\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0003_init_data.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n\n    Resource(name=\"Python\",\n             version=\"2.7.11\",\n             size=\"17.7MB\",\n             display=True,\n             icon_url=\"/static/img/resource/python.png\",\n             doc_url=\"http://bbs.bk.tencent.com/forum.php?mod=viewthread&tid=163&extra=page%3D1\",\n             download_url=\"http://paas-10032816.cos.myqcloud.com/python-2.7.11.msi\",\n             ).save()\n\n    Resource(name=\"Python资源包\",\n             version=\"1.0\",\n             size=\"19.8MB\",\n             display=True,\n             icon_url=\"/static/img/resource/python-sdk.png\",\n             download_url=\"http://paas-10032816.cos.myqcloud.com/python-sdk-1.0.zip\",\n             ).save()\n\n    Resource(name=\"Eclipse（含PyDev）\",\n             version=\"4.5.2\",\n             size=\"476MB\",\n             display=True,\n             icon_url=\"/static/img/resource/eclipse-4.5.png\",\n             download_url=\"http://paas-10032816.cos.myqcloud.com/eclipse-4.5.2.zip\",\n             ).save()\n\n    Resource(name=\"PyCharm\",\n             version=\"2016.3\",\n             size=\"170+M\",\n             display=True,\n             icon_url=\"/static/img/resource/pycharm.jpeg\",\n             download_url=\"https://www.jetbrains.com/pycharm/download/\",\n             ).save()\n\n    Resource(name=\"MySQL\",\n             version=\"5.6.28.0\",\n             size=\"263MB\",\n             display=True,\n             icon_url=\"/static/img/resource/mysql.png\",\n             download_url=\"http://paas-10032816.cos.myqcloud.com/mysql-installer-community-5.6.28.0.msi\",\n             ).save()\n\n    Resource(name=\"Rabbitmq\",\n             version=\"3.6.2\",\n             size=\"95.9MB\",\n             display=True,\n             icon_url=\"/static/img/resource/rabbitmq.png\",\n             download_url=\"http://paas-10032816.cos.myqcloud.com/rabbitmq-server-3.6.2.zip\",\n             ).save()\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0002_data_insert_framework'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0004_insert_api_dev_template.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n    Resource(name=\"API网关组件开发模板\",\n             version=\"--\",\n             size=\"14KB\",\n             display=True,\n             icon_url=\"/static/img/resource/api_dev_template.png\",\n             download_url=\"/media/api_dev_template.tar.gz\",\n             ).save()\n\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0003_init_data'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0005_data_insert_framework_py3.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n    Resource(name=\"Python3 开发框架\",\n             version=\"1.0.3\",\n             size=\"1.1M\",\n             display=True,\n             icon_url=\"/static/img/resource/framework_py3.png\",\n             download_url=\"/media/framework_py3.tar.gz\",\n             ).save()\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0004_insert_api_dev_template'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0006_upgrade_framework.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n\n    # 1. remove python framework from resource\n    Resource.objects.filter(name=\"开发框架\").update(display=False)\n\n    # 2. update python3 framework data\n    Resource.objects.filter(name=\"Python3 开发框架\").update(\n        name=\"Python 开发框架\",\n        version=\"2.0.0\",\n        size=\"1.1M\",\n        display=True,\n        icon_url=\"/static/img/resource/framework_py.png\",\n        download_url=\"/media/framework_py.tar.gz\",\n        doc_url=\"https://docs.bk.tencent.com/blueapps/\"\n    )\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0005_data_insert_framework_py3'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0007_update_python_doc_url.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n\n    Resource.objects.filter(name=\"Python\").update(doc_url=\"https://docs.bk.tencent.com/ops/\")\n    Resource.objects.filter(name=\"统一开发环境\").delete()\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0006_upgrade_framework'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/0008_upgrade_framework.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations\n\n\ndef load_data(apps, schema_editor):\n    Resource = apps.get_model(\"resource\", \"Resource\")\n\n    # 2. update python3 framework data\n    Resource.objects.filter(name=\"Python 开发框架\").update(\n        version=\"2.1.4.11\"\n    )\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('resource', '0007_update_python_doc_url'),\n    ]\n\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models\n\nfrom resource.manager import ResourceManager\n\n\nclass Resource(models.Model):\n    \"\"\"资源下载\n    \"\"\"\n    name = models.CharField('名称', max_length=128)\n    version = models.CharField('版本', max_length=36, blank=True, null=True, default='--')\n    size = models.CharField('文件大小', max_length=36, blank=True, null=True, default='--')\n    display = models.BooleanField(\"是否显示\", default=True)\n    icon_url = models.CharField('下载图标', max_length=256, blank=True, null=True, help_text=\"填写外网地址\")\n    doc_url = models.CharField(\"文档URL\", max_length=256, blank=True, null=True, help_text=\"填写外网地址\")\n    download_url = models.CharField('下载URL', max_length=256, blank=True, null=True, help_text=\"填写外网地址\")\n    create_time = models.DateTimeField('创建时间', auto_now_add=True)\n\n    objects = ResourceManager()\n\n    class Meta:\n        db_table = 'paas_resources'\n        verbose_name = \"资源下载\"\n        verbose_name_plural = \"资源下载\"\n\n    def __unicode__(self):\n        return '<%s-%s>' % (self.name, self.id)\n\n    def to_dict(self):\n        icon_url = self.icon_url\n        if not self.icon_url:\n            icon_url = '{}.png'.format(self.name.replace(' ', '_'))\n\n        download_url = self.download_url\n        if not self.download_url:\n            download_url = '{}'.format(self.name.replace(' ', '_'))\n\n        return {\n            \"name\": self.name,\n            \"version\": self.version or '--',\n            \"size\": self.size or '--',\n            \"icon_url\": icon_url,\n            \"doc_url\": self.doc_url,\n            \"download_url\": download_url,\n        }\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\nfrom account.models import BkUser\nfrom common.utils import setup_view\nfrom resource.views import ResourceDownloadView\n\n\nclass ResourceListTestCase(TestCase):\n    def setUp(self):\n        # Every test needs access to the request factory.\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n    def test_resource_list(self):\n        request = self.factory.get('/resource/')\n        request.user = self.user\n\n        v = setup_view(ResourceDownloadView(), request)\n        self.assertEqual(v.template_name, \"resource/index.html\")\n\n        context = v.get_context_data()\n        self.assertTrue(len(context['resources']))\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import path\nfrom resource import views\n\nurlpatterns = [\n    path('', views.ResourceDownloadView.as_view()),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/resource/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n资源下载\n\"\"\" # noqa\n\n\n\nfrom resource.models import Resource\nfrom common.views.mako import MakoTemplateView\n\n\nclass ResourceDownloadView(MakoTemplateView):\n    \"\"\"资源下载首页\n    \"\"\"\n    template_name = 'resource/index.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(ResourceDownloadView, self).get_context_data(**kwargs)\n        resources = Resource.objects.get_resource_list()\n        context.update({\n            \"resources\": [r.to_dict() for r in resources]\n        })\n        return context\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.contrib import admin\n\nfrom saas.models import (SaaSApp, SaaSAppVersion, SaaSUploadFile)\n\n\n@admin.register(SaaSApp)\nclass SaaSAppAdmin(admin.ModelAdmin):\n    list_display = ('code', 'name', 'created_time')\n    search_fields = ('name', 'code')\n    list_filter = ('code', )\n\n\n\n\n@admin.register(SaaSAppVersion)\nclass SaaSAppVersionAdmin(admin.ModelAdmin):\n    list_display = ('version', 'saas_app')\n    search_fields = ('version', 'saas_app')\n    list_filter = ('saas_app', )\n\n\n\n\n@admin.register(SaaSUploadFile)\nclass SaaSUploadFileAdmin(admin.ModelAdmin):\n    list_display = ('name', 'size', 'md5')\n    search_fields = ('name', 'size', 'md5')\n    exclude = ('file', )\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n# 上传文件后，返回给前端的js\nUPLOAD_RESPONSE_FORMAT = \"\"\"\n<script>\nwindow.parent.document.getElementById(\\\"import_msg\\\").innerHTML=\n\\\"<span class='text-{span_type}'><i class='bk-icon {fa_type} t_b'></i> {message}</span>\\\";\nwindow.parent.document.getElementById(\\\"saas_app_version_id\\\").innerHTML=\\\"{saas_app_version_id}\\\";\nwindow.parent.document.getElementById(\\\"file_version_display\\\").innerHTML=\\\"{file_version_display}\\\";\nwindow.parent.document.getElementById(\\\"saas_upload\\\").removeAttribute(\\\"disabled\\\");\n{if_success_do_remove_js}\n</script>\n\"\"\"\n\n# 应用的 db 创建语句\nCREATE_PAAS_DB_SQL = 'CREATE DATABASE IF NOT EXISTS `%s`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;'\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django import forms\n\n\nclass UploadFileForm(forms.Form):\n    saas_file = forms.FileField()\n\n    def clean_saas_file(self):\n        saas_file = self.cleaned_data[\"saas_file\"]\n\n        if not saas_file or not saas_file.name:\n            self.add_error('saas_file', \"上传文件失败!\")\n\n        if not saas_file.name.endswith(\".tar.gz\"):\n            self.add_error('saas_file', \"错误的文件! SaaS应用为.tar.gz格式\")\n\n        return saas_file\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db.models import Q\nfrom django.db import models\n\nfrom app.models import App\nfrom common.log import logger\n\n\nclass SaaSAppManager(models.Manager):\n\n    def update_logo(self, app_code, logo):\n        self.filter(code=app_code).update(logo=logo)\n\n    def query_saas_list(self, keyword, hide_offline, start, end):\n        app_all_list = self.all().order_by('-created_time')\n\n        # 获取应用\n        if keyword:\n            app_all_list = app_all_list.filter(\n                Q(name__icontains=keyword) | Q(code__icontains=keyword)\n            )\n        # 过滤已经下架的应用\n        if hide_offline == 0:\n            app_all_list = app_all_list.exclude(app__state=0)\n\n        total = app_all_list.count()\n        app_list = app_all_list[start:end]\n\n        return total, app_list\n\n    def exists(self, app_code):\n        \"\"\"判断app_code是否已存在\n        \"\"\"\n        return self.filter(code=app_code).exists()\n\n    def update_online_version(self, app_code):\n        logger.info(\"更新SaaSApp的online_version: %s\", app_code)\n        try:\n            app = App.objects.get(code=app_code)\n            saas_app = self.get(app=app)\n            saas_app.online_version = saas_app.current_version\n            saas_app.save()\n        except Exception:\n            logger.exception(\"更新SaaSApp的online_version失败. app_code=%s\", app_code)\n            return False\n\n        return True\n\n    def update_current_version(self, app, saas_app_version):\n        saas_app = self.get(app=app)\n        saas_app.current_version = saas_app_version\n        saas_app.save()\n\n\nclass SaaSUploadFileManager(models.Manager):\n    pass\n\n\nclass SaaSAppVersionManager(models.Manager):\n    def delete_all_versions(self, saas_app):\n        versions = self.filter(saas_app=saas_app).all()\n        for version in versions:\n            upload_file = version.upload_file\n            upload_file.file.delete()\n            upload_file.delete()\n\n            version.delete()\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='SaaSUploadFile',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('name', models.CharField(max_length=100, verbose_name='\\u6587\\u4ef6\\u540d')),\n                ('size', models.IntegerField(default=0, null=True, verbose_name='\\u6587\\u4ef6\\u5927\\u5c0f', blank=True)),\n                ('file', models.FileField(upload_to=b'saas_files', verbose_name='\\u6587\\u4ef6')),\n                ('uploaded_at', models.DateTimeField(auto_now_add=True, verbose_name='\\u4e0a\\u4f20\\u65f6\\u95f4', db_index=True)),\n            ],\n            options={\n                'ordering': ('-uploaded_at',),\n                'db_table': 'paas_saas_upload_file',\n                'verbose_name': 'SaaS\\u4e0a\\u4f20\\u5b89\\u88c5\\u5305',\n                'verbose_name_plural': 'SaaS\\u4e0a\\u4f20\\u5b89\\u88c5\\u5305',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/0002_auto_20161025_2016.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('app', '0005_auto_20161017_1038'),\n        ('saas', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='SaaSApp',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('code', models.CharField(help_text='\\u6b64\\u5904\\u8bf7\\u7528\\u82f1\\u6587\\u5b57\\u6bcd', unique=True, max_length=30, verbose_name='\\u5e94\\u7528\\u7f16\\u7801')),\n                ('name', models.CharField(max_length=20, verbose_name='\\u5e94\\u7528\\u540d\\u79f0')),\n                ('app', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='app.App', null=True)),\n            ],\n            options={\n                'ordering': ('-code',),\n                'db_table': 'paas_saas_app',\n                'verbose_name': 'SaaS \\u5e94\\u7528',\n                'verbose_name_plural': 'SaaS \\u5e94\\u7528',\n            },\n        ),\n        migrations.CreateModel(\n            name='SaaSAppVersion',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('version', models.CharField(max_length=20, verbose_name='\\u7248\\u672c')),\n                ('settings', models.TextField(null=True, verbose_name='\\u5305\\u914d\\u7f6e', blank=True)),\n                ('saas_app', models.ForeignKey(on_delete=models.CASCADE, to='saas.SaaSApp')),\n                ('upload_file', models.ForeignKey(on_delete=models.CASCADE, to='saas.SaaSUploadFile')),\n            ],\n            options={\n                'db_table': 'paas_saas_app_version',\n                'verbose_name': 'SaaS \\u5e94\\u7528\\u7248\\u672c',\n                'verbose_name_plural': 'SaaS \\u5e94\\u7528\\u7248\\u672c',\n            },\n        ),\n        migrations.AddField(\n            model_name='saasapp',\n            name='current_version',\n            field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='saas.SaaSAppVersion', null=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/0003_saasuploadfile_md5.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('saas', '0002_auto_20161025_2016'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='saasuploadfile',\n            name='md5',\n            field=models.CharField(default='', max_length=32, verbose_name='md5'),\n            preserve_default=False,\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/0004_saasapp_created_time.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import models, migrations\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('saas', '0003_saasuploadfile_md5'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='saasapp',\n            name='created_time',\n            field=models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4', null=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/0005_auto_20161101_1025.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('saas', '0004_saasapp_created_time'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='saasapp',\n            name='online_version',\n            field=models.ForeignKey(on_delete=models.CASCADE, related_name='online_versions', blank=True, to='saas.SaaSAppVersion', null=True),\n        ),\n        migrations.AlterField(\n            model_name='saasapp',\n            name='current_version',\n            field=models.ForeignKey(on_delete=models.CASCADE, related_name='current_versions', blank=True, to='saas.SaaSAppVersion', null=True),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/0006_auto_20161111_1827.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\n\nfrom django.db import migrations, models\nimport saas.models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('saas', '0005_auto_20161101_1025'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='saasapp',\n            name='logo',\n            field=models.ImageField(null=True, upload_to=b'applogo', blank=True),\n        ),\n        migrations.AlterField(\n            model_name='saasuploadfile',\n            name='file',\n            field=models.FileField(upload_to=b'saas_files', storage=saas.models.OverwriteStorage(), verbose_name='\\u6587\\u4ef6'),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport os\nimport time\nimport json\n\nfrom django.db import models\nfrom django.conf import settings\nfrom django.core.files.storage import FileSystemStorage\n\nfrom common.log import logger\nfrom common.constants import LogoImgRelatedDirEnum\nfrom common.utils import should_update_logo, get_app_logo, file_size_bytes_to_m\nfrom app.models import App\nfrom app.constants import STATE_CHOICES_DISPALY_DICT, AppStateEnum\nfrom saas.manager import SaaSAppManager, SaaSAppVersionManager\n\n\nclass SaaSApp(models.Model):\n\n    code = models.CharField(\"应用编码\", max_length=30, unique=True, help_text=\"此处请用英文字母\")\n    name = models.CharField(\"应用名称\", max_length=20)\n\n    # 对应的paas app, 一旦绑定, 不会解绑\n    app = models.ForeignKey(to=App, blank=True, null=True, on_delete=models.CASCADE)\n\n    # 正在执行上线的版本, 可能上线失败\n    current_version = models.ForeignKey(on_delete=models.CASCADE, to=\"SaaSAppVersion\", related_name=\"current_versions\", blank=True, null=True)\n\n    # 在线上运行的版本\n    online_version = models.ForeignKey(on_delete=models.CASCADE, to=\"SaaSAppVersion\", related_name=\"online_versions\", blank=True, null=True)\n\n    # 应用创建时间\n    created_time = models.DateTimeField(\"创建时间\", auto_now_add=True, blank=True, null=True)\n    # 应用图标\n    logo = models.ImageField(upload_to=LogoImgRelatedDirEnum.APP.value, blank=True, null=True)\n\n    objects = SaaSAppManager()\n\n    def save(self, *args, **kwargs):\n        \"\"\"\n        保存前修改 logo 存放路径\n        \"\"\"\n        if not self.logo:\n            return super(SaaSApp, self).save(*args, **kwargs)\n\n        should_update, logo_name = should_update_logo(self.code, self.logo.name)\n        if should_update:\n            self.logo.name = logo_name\n\n        # save操作\n        super(SaaSApp, self).save(*args, **kwargs)\n\n    @property\n    def logo_url(self):\n        if self.logo:\n            return '{}?v={}'.format(self.logo.url, time.time())\n\n        logo = get_app_logo(self.code)\n        if logo:\n            return logo\n\n        return '{}img/app_logo/default.png'.format(settings.STATIC_URL)\n\n    @property\n    def version(self):\n        \"\"\"\n        应用的版本信息，如果无线上版本，则以当前版本为准\n        \"\"\"\n        saas_version = self.online_version or self.current_version\n        return saas_version.version if saas_version else ''\n\n    @property\n    def creater(self):\n        saas_version = self.online_version or self.current_version\n        if not saas_version:\n            return '--'\n        else:\n            return saas_version.get_settings().get(\"author\", '--')\n\n    @property\n    def app_prod_url(self):\n        return settings.APP_PROD_URL.format(app_code=self.code)\n\n    @property\n    def is_already_online(self):\n        \"\"\"\n        应用是否已经上线\n        \"\"\"\n        if self.app:\n            return self.app.is_already_online\n        return False\n\n    @property\n    def created_date_display(self):\n        if not self.created_time:\n            return self.created_time\n        return self.created_time.strftime('%Y-%m-%d')\n\n    @property\n    def state(self):\n        if not self.app:\n            return AppStateEnum.DEVELOPMENT.value\n        return self.app.state\n\n    @property\n    def saas_state_display(self):\n        if self.state == AppStateEnum.DEVELOPMENT.value:\n            return \"未部署\"\n        return STATE_CHOICES_DISPALY_DICT.get(self.state)\n\n    def get_current_version_info(self, is_offline=False):\n        \"\"\"获取应用的版本信息\n\n        下架（is_offline＝True）则获取 online_version 信息\n        其他：先获取 online_versions 信息，无则获取 current_version\n        \"\"\"\n        app_version = self.online_version\n        # 线上版本不存在 且 不是下架页面，则获取 current_version 的信息\n        if not app_version and not is_offline:\n            app_version = self.current_version\n\n        if not app_version:\n            return False, {}\n\n        # 版本配置信息\n        try:\n            settings = json.loads(app_version.settings)\n            introduction = settings.get('introduction', '--')\n            settings = json.dumps(settings, indent=4, ensure_ascii=False)\n        except Exception:\n            settings = '--'\n            introduction = '--'\n            logger.exception(\"解析应用(%s)的配置信息出错\", self.code)\n\n        app_file = app_version.upload_file if app_version else None\n        # 文件大小：byte 转换为M，保留2位小数\n        file_size = app_file.size if app_file else ''\n\n        file_size = file_size_bytes_to_m(file_size)\n\n        file_name = app_file.name if app_file else ''\n        version = app_version.version\n        # for: 部署时展示线上版本/当前版本信息给用户\n        file_version_display = \"{} (V{})\".format(file_name, version)\n\n        version_info = {\n            'id': app_version.id,\n            'version': version,\n            'settings': settings,\n            'introduction': introduction,\n            'file_name': file_name,\n            'file_version_display': file_version_display,\n            'file_size': file_size,\n            'md5': app_file.md5 if app_file else ''\n        }\n        return True, version_info\n\n    def __unicode__(self):\n        return self.code\n\n    def __str__(self):\n        return self.code\n\n    class Meta:\n        ordering = ('-code',)\n        db_table = 'paas_saas_app'\n        verbose_name = \"SaaS 应用\"\n        verbose_name_plural = \"SaaS 应用\"\n\n\nclass SaaSAppVersion(models.Model):\n    \"\"\"\n    SaaSVersion\n    \"\"\"\n    version = models.CharField(\"版本\", max_length=20)\n    # 配置json串\n    settings = models.TextField(\"包配置\", blank=True, null=True)\n\n    # 所属的saas app, 当saas app被删除, 级联删除\n    saas_app = models.ForeignKey(to=\"SaaSApp\", blank=False, null=False, on_delete=models.CASCADE)\n    # 对应文件\n    upload_file = models.ForeignKey(on_delete=models.CASCADE, to=\"SaaSUploadFile\", blank=False, null=False)\n\n    objects = SaaSAppVersionManager()\n\n    def __unicode__(self):\n        return '%s %s %s' % (self.id, self.version, self.upload_file)\n\n    def __str__(self):\n        return '%s %s %s' % (self.id, self.version, self.upload_file)\n\n    class Meta:\n        db_table = 'paas_saas_app_version'\n        verbose_name = \"SaaS 应用版本\"\n        verbose_name_plural = \"SaaS 应用版本\"\n\n    def get_settings(self):\n        try:\n            settings = json.loads(self.settings)\n        except Exception:\n            settings = {}\n            logger.exception(\"应用配置信息解析异常\")\n        return settings\n\n    def gen_app_info_from_settings(self, app_code):\n        \"\"\"\n        从配置中解析得到app_info\n        \"\"\"\n        settings = self.get_settings()\n        if not settings:\n            message = \"应用(code:{})配置信息解析异常\".format(app_code)\n            return False, message, None\n\n        introduction = settings.get(\"introduction\", '')\n        language = settings.get(\"language\", 'python')\n        is_use_celery = settings.get(\"is_use_celery\", False)\n        author = settings.get(\"author\", '')\n        category = settings.get(\"category\", '其它')\n        desktop = settings.get(\"desktop\") or {}\n        env = settings.get(\"env\") or []\n        # _UFO\n        secret_key = settings.get(\"secret_key\")\n\n        # 1. 判断app_code是否重复了, 重复则报错\n        app_info = {\n            'introduction': introduction,\n            'language': language,\n            'author': author,\n            'is_use_celery': is_use_celery,\n            'is_use_celery_beat': is_use_celery,\n            'category': category,\n            'desktop': desktop,\n            'env': env,\n        }\n        # _UFO\n        if secret_key:\n            app_info.update({'secret_key': secret_key})\n\n        return True, 'success', app_info\n\n    def gen_saas_settings_for_deploy(self):\n        \"\"\"for deploy\n        \"\"\"\n        settings = self.get_settings()\n        upload_file = self.upload_file\n\n        saas_settings = {}\n        saas_settings.update(settings)\n        saas_settings[\"url\"] = upload_file.url\n        saas_settings[\"md5\"] = upload_file.md5\n\n        return saas_settings\n\n\nclass OverwriteStorage(FileSystemStorage):\n    \"\"\"\n    overwrite the file on disk if the name is the same\n    \"\"\"\n    def get_available_name(self, name):\n        \"\"\"Returns a filename that's free on the target storage system, and\n        available for new content to be written to.\n\n        Found at http://djangosnippets.org/snippets/976/\n        \"\"\"\n        # If the filename already exists, remove it as if it was a true file system\n        if self.exists(name):\n            os.remove(os.path.join(settings.MEDIA_ROOT, name))\n        return name\n\n\nclass SaaSUploadFile(models.Model):\n    \"\"\"\n    SaaS上传安装包\n    \"\"\"\n    name = models.CharField(\"文件名\", max_length=100)\n    size = models.IntegerField(\"文件大小\", default=0, blank=True, null=True)\n    md5 = models.CharField(\"md5\", max_length=32, blank=False, null=False)\n    # file = models.FileField(\"文件\", upload_to=\"saas_files\")\n    file = models.FileField(\"文件\", upload_to=\"saas_files\", storage=OverwriteStorage())\n\n    uploaded_at = models.DateTimeField(\"上传时间\", auto_now_add=True, db_index=True)\n\n    @property\n    def url(self):\n        return self.file.url\n\n    def __unicode__(self):\n        return self.name\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ('-uploaded_at',)\n        db_table = 'paas_saas_upload_file'\n        verbose_name = \"SaaS上传安装包\"\n        verbose_name_plural = \"SaaS上传安装包\"\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\nfrom account.models import BkUser\nfrom app.constants import AppStateEnum\nfrom common.utils import setup_view\nfrom saas.models import SaaSApp\nfrom saas.views import RecordView\n\n\nclass RecordTestCase(TestCase):\n    def setUp(self):\n        self.factory = RequestFactory()\n        self.user = BkUser.objects.create_user('test', password='test123')\n\n        self.code = 'test'\n        saas = SaaSApp()\n        saas.code = self.code\n        saas.name = self.code\n        saas.save()\n\n    def test_get(self):\n        # not include resolves the url\n        # https://stackoverflow.com/questions/48580465/django-requestfactory-loses-url-kwargs\n        request = self.factory.get('/saas/test/release/record/')\n        kwargs = {'app_code': 'test'}\n        request.user = self.user\n\n        v = setup_view(RecordView(), request, **kwargs)\n        context = v.get_context_data()\n\n        self.assertEqual(self.code, context[\"app_code\"])\n        self.assertEqual(AppStateEnum.DEVELOPMENT.value, context[\"app_state\"])\n\n    def tearDown(self):\n        SaaSApp.objects.get(code=self.code).delete()\n        BkUser.objects.get(username='test').delete()\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import include, path, re_path\n\nfrom common.constants import SAAS_CODE_REGEX\nfrom saas import views\n\nurlpatterns = [\n\n    # 应用列表\n    path('list/', include([\n        path('', views.SaaSListPageView.as_view(), name=\"saas_list\"),\n        path('query/', views.SaaSListView.as_view()),\n    ])),\n\n    # 应用基本信息\n    re_path(r'^(?P<app_code>' + SAAS_CODE_REGEX + ')/', include([\n        path('info/', views.InfoView.as_view()),\n        # FIXME: change to restful-like api if more action on saas\n        # 删除SaaS应用\n        path('delete/', views.DeleteSaaSView.as_view()),\n\n        path('logo/', views.ModifyAppLogoView.as_view()),\n\n        # 上传SaaS应用\n        path('upload/', views.UploadView.as_view()),\n\n        # 发布相关\n        # 发布部署页面\n        path('release/', include([\n            path('', views.ReleasePageView.as_view()),\n\n            # 发布记录页面\n            path('record/', views.RecordView.as_view()),\n\n            # 下架页面\n            path('offline/', views.OfflinePageView.as_view()),\n\n            # 执行发布\n            path('online/<int:saas_app_version_id>/', views.OnlineView.as_view()),\n        ])),\n\n    ])),\n\n    path('0/release/', views.ReleasePageView.as_view(), {'app_code': 0}),\n\n    # for legency system,  keep below\n    # saas/release/online,\n    # saas/upload,\n    path('release/online/<int:saas_app_version_id>/', views.OnlineView.as_view()),\n    re_path(r'^upload/(?P<app_code>' + SAAS_CODE_REGEX + ')/$', views.UploadView.as_view()),\n    path('register-online-saas-app/', views.UploadAndRegisterView.as_view()),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport json\nimport os\nimport tarfile\n\nfrom django.conf import settings\nfrom django.db import connections, transaction\nfrom django.shortcuts import HttpResponse\nfrom django.utils.html import escape\n\nfrom app.constants import AppStateEnum, DESKTOP_DEFAULT_APP_IS_DISPLAY\nfrom app.models import App, SecureInfo, DesktopSettings\nfrom app_env.models import AppEnvVar\nfrom common.constants import LogoImgRelatedDirEnum\nfrom common.log import logger\nfrom components.engine import register_app\nfrom engine.deploy import saas_app_to_online_task\nfrom engine.models import BkServer\nfrom release.constants import UserOperateTypeEnum\nfrom release.models import Record\nfrom release.utils import record_user_operate\nfrom saas.constants import CREATE_PAAS_DB_SQL, UPLOAD_RESPONSE_FORMAT\nfrom saas.models import SaaSApp, SaaSAppVersion\n\n\ndef _get_file_from_tar_file(filename, path, match_func):\n    # check if a tar file\n    try:\n        tar_file = tarfile.open(path)\n    except Exception:\n        message = \"%s 文件格式错误, 无法正常打开, 请确认后重新上传\" % filename\n        logger.exception(message)\n        return False, message, None\n\n    try:\n        tar_file_members = tar_file.getmembers()\n    except Exception:\n        message = \"%s 文件错误, 无法正常打开解析文件列表, 请确认后重新上传\" % filename\n        logger.exception(message)\n        return False, message, None\n\n    target_file_list = [m.name for m in tar_file_members if match_func(m.name)]\n    if not target_file_list:\n        message = \"%s 包中缺少对应文件\" % filename\n        logger.error(message)\n        return False, message, None\n\n    target_file_path = target_file_list[0]\n    try:\n        target_file = tar_file.extractfile(target_file_path)\n        content = target_file.read()\n    except Exception:\n        message = \"%s 解压获取文件失败\" % filename\n        logger.exception(message)\n        return False, message, None\n\n    try:\n        tar_file.close()\n    except Exception:\n        logger.exception()\n\n    return True, \"处理成功\", content\n\n\ndef validate_and_extract_tar_file(filename, path):\n    \"\"\"\n    校验tar.gz文件, 并解压获取app.yml\n    \"\"\"\n    def match_func(name):\n        if not isinstance(name, str):\n            name = name.decode(\"utf-8\")\n        return name.endswith(\"app.yml\") and len(name.split(\"/\")) == 2\n\n    ok, message, content = _get_file_from_tar_file(filename, path, match_func)\n    return True, \"处理成功\", content\n\n\ndef extract_logo_file(filename, path, saas_app_code):\n    \"\"\"\n    解压tar.gz文件中的logo到 /media/saaslogo/\n    \"\"\"\n    app_logo_name = \"%s.png\" % saas_app_code\n\n    def match_func(name):\n        if not isinstance(name, str):\n            name = name.decode(\"utf-8\")\n        # support logo file in x/{app_code}.png or x/src/{app_code}.png\n        return name.endswith(app_logo_name) and (len(name.split(\"/\")) in (2, 3))\n\n    ok, message, content = _get_file_from_tar_file(filename, path, match_func)\n    if not ok:\n        return False, message\n\n    # write content\n    logo_local_path = os.path.join(settings.MEDIA_ROOT, LogoImgRelatedDirEnum.SAAS.value, app_logo_name)\n    applogo_path = os.path.join(settings.MEDIA_ROOT, LogoImgRelatedDirEnum.APP.value, app_logo_name)\n\n    # 存在问题: 如果用户上传第一版本, 放入到applogo, 后面版本更新不会更新到applog\n    # 需要做的: 可以比对applogo/saaslog中两个是否都存在且一致, 如果是, 全替换\n    is_replace_applog = False\n    if os.path.exists(logo_local_path) and os.path.exists(applogo_path):\n        import filecmp\n        if filecmp.cmp(logo_local_path, applogo_path):\n            is_replace_applog = True\n\n    try:\n        # replace saaslogo/*.png\n        with open(logo_local_path, \"w\") as logo_f:\n            logo_f.write(content)\n\n        # if user not defined it, the put into applogo\n        if not os.path.exists(applogo_path) or is_replace_applog:\n            with open(applogo_path, \"w\") as logo_f:\n                logo_f.write(content)\n    except Exception:\n        message = \"保存logo文件失败\"\n        logger.exception(message)\n        return False, message\n\n    return True, \"处理成功\"\n\n\n@transaction.atomic\ndef save_saas_app_info(app_config, saas_upload_file):\n\n    app_code = app_config.get(\"app_code\")\n    app_name = app_config.get(\"app_name\")\n    version = app_config.get(\"version\")\n\n    language = app_config.get(\"language\", \"python\")\n    is_use_celery = app_config.get(\"is_use_celery\", True)\n    author = app_config.get(\"author\", \"\")\n    introduction = app_config.get(\"introduction\", \"\")\n    category = app_config.get('category', \"\")\n    language_support = app_config.get('language_support', \"\")\n    desktop = app_config.get(\"desktop\")\n    date = app_config.get(\"date\")\n    env = app_config.get(\"env\")\n    # _UFO\n    secret_key = app_config.get(\"secret_key\")\n\n    # fix xss error, this value are all from app.yml\n    # 2018-05-22 escape begin\n    app_name = escape(app_name)\n    author = escape(author)\n    introduction = escape(introduction)\n    category = escape(category)\n    language_support = escape(language_support)\n    # 2018-05-22 escape end\n\n    try:\n        if date:\n            date = date.strftime(\"%Y-%m-%d %H:%M:%S\")\n    except Exception:\n        date = str(date)\n\n    libraries = app_config.get(\"libraries\", [])\n    yums = app_config.get(\"yums\", [])\n\n    pip = ' '.join([\"{name}=={version}\".format(**d) for d in libraries])\n    yum = ' '.join(yums)\n\n    settings = {\n        'language': language,\n        'is_use_celery': is_use_celery,\n        'author': author,\n        'introduction': introduction,\n        'category': category,\n        'language_support': language_support,\n        'date': date,\n        'pip': pip,\n        'yum': yum,\n        'desktop': desktop,\n        'env': env\n    }\n    # _UFO\n    if secret_key:\n        settings.update({'secret_key': secret_key})\n\n    # start to save info\n    is_saas_app_exist = False\n    try:\n        saas_app = SaaSApp.objects.get(code=app_code)\n        saas_app.name = app_name\n        is_saas_app_exist = True\n    except SaaSApp.DoesNotExist:\n        saas_app = SaaSApp()\n        saas_app.code = app_code\n        saas_app.name = app_name\n        saas_app.save()\n\n    if is_saas_app_exist:\n        try:\n            saas_app_version = SaaSAppVersion.objects.get(version=version, saas_app=saas_app)\n        except SaaSAppVersion.DoesNotExist:\n            saas_app_version = SaaSAppVersion()\n            saas_app_version.version = version\n            saas_app_version.saas_app = saas_app\n    else:\n        saas_app_version = SaaSAppVersion()\n        saas_app_version.version = version\n        saas_app_version.saas_app = saas_app\n\n    saas_app_version.settings = json.dumps(settings)\n    saas_app_version.upload_file = saas_upload_file\n    saas_app_version.save()\n\n    # 保存应用的当前版本信息\n    saas_app.current_version = saas_app_version\n    saas_app.save()\n\n    return saas_app_version.id\n\n\ndef _create_app(saas_app_version):\n    \"\"\"\n    新建一个app, 创建数据库, 并将其关联到SaaSApp\n\n    关系1: SaaSApp -> SaaSAppVersion -> SaaSUploadFile\n    关系2: SaaSApp -> App\n    \"\"\"\n    saas_app = saas_app_version.saas_app\n    app_code = saas_app.code\n    app_name = saas_app.name\n\n    ok, message, app_info = saas_app_version.gen_app_info_from_settings(app_code)\n    if not ok:\n        return False, message, None\n\n    # 2. 创建App /  AppTags\n    ok, message, app = save_app_info(app_code, app_name, is_create=True, **app_info)\n    if not ok:\n        return False, message, None\n\n    # 3. 创建数据库, 并将数据库信息存入SecureInfo\n    ok, message = create_saas_app_db(app_code)\n    if not ok:\n        # 创建SaaS应用失败，则删除 对应的App\n        App.objects.filter(code=app_code).delete()\n        return False, message, None\n\n    return True, \"success\", app\n\n\ndef _update_app(saas_app_version):\n    \"\"\"\n    更新app\n    language / is_use_celery / language / version等字段\n    \"\"\"\n    saas_app = saas_app_version.saas_app\n    app_code = saas_app.code\n\n    ok, message, app_info = saas_app_version.gen_app_info_from_settings(app_code)\n    if not ok:\n        return False, message\n\n    ok, message, app = save_app_info(saas_app.code, saas_app.name, is_create=False, **app_info)\n    if not ok:\n        return False, message\n\n    # 2. 更新当前处理时版本, 上线成功后, 更新 online_version=current_version\n    SaaSApp.objects.update_current_version(app, saas_app_version)\n\n    return True, \"success\"\n\n\ndef save_app_info(code, name, is_create=True, **app_info):\n    \"\"\"\n    将app的基本信息存入到 paas_app 表中\n\n    如：code、name、introduction 等\n    code 重复 则直接返回异常由上层处理\n    name 重复 则直接保存code信息\n    \"\"\"\n    if not code:\n        return False, \"缺少参数：code\", None\n\n    language = app_info.get('language', 'python')\n    if is_create:\n        #ok, message, token = register_app(code, name, language)\n        # added by _UFO\n        token = app_info.get(\"secret_key\")\n        if token:\n            ok, message, _token = register_app(code, name, language, token)\n        else:\n            ok, message, token = register_app(code, name, language)\n        if not ok:\n            return False, message, None\n\n    with transaction.atomic():\n        # 创建应用\n        if is_create:\n            try:\n                app = App.objects.create(code=code)\n                app.auth_token = token\n            except Exception:\n                logger.exception(\"SaaS 应用code(%s)已经存在app表中\", code)\n                return False, \"SaaS 应用ID[%s]与已有 PaaS 应用ID冲突\" % code, None\n        else:\n            app, _c = App.objects.get_or_create(code=code)\n\n        # name 重复则或为空 直接保存code的信息, 还重复则直接返回异常\n        try:\n            old_name = app.name\n            is_name_exist = App.objects.filter(name=name).exclude(name=old_name).exists()\n            app.name = code if (is_name_exist or not name) else name\n            app.save()\n        except Exception:\n            logger.exception(\"SaaS 应用name(%s)已经存在app表中\", name)\n            return False, \"SaaS 应用名称[%s]与已有应用名称冲突\" % name, None\n\n        # 保存应用基本信息\n        app.is_saas = True\n        app.language = language\n        app.introduction = app_info.get('introduction')\n        app.is_use_celery = app_info.get('is_use_celery')\n        app.is_use_celery_beat = app_info.get('is_use_celery_beat')\n        app.creater = app_info.get('author')\n        app.save()\n\n        # 保存应用db信息\n        paas_db = settings.DATABASES.get('default', {})\n        app_sec_info, _c = SecureInfo.objects.get_or_create(app_code=code)\n        app_sec_info.db_host = paas_db.get('HOST')\n        app_sec_info.db_port = paas_db.get('PORT', 3306)\n        app_sec_info.db_username = paas_db.get('USER')\n        app_sec_info.db_password = paas_db.get('PASSWORD')\n        # 数据库名称修改为：应用code\n        app_sec_info.db_name = code\n        app_sec_info.save()\n\n        # app desktop info\n        desktop = app_info.get(\"desktop\") or {}\n        app_desktop_info, _ = DesktopSettings.objects.get_or_create(app_code=code)\n        app_desktop_info.is_display = desktop.get(\"is_display\", DESKTOP_DEFAULT_APP_IS_DISPLAY)\n        app_desktop_info.save()\n\n        try:\n            # app env var\n            env = app_info.get(\"env\") or []\n            if env:\n                AppEnvVar.objects.add_env_vars(code, env)\n        except Exception:\n            logger.exception(\"Insert App Env var from app.yml fail! %s\", code)\n\n    return True, '', app\n\n\ndef upload_response_tpl(result, message, data={}):\n    \"\"\"\n    将上传文件的结果通过js的方法返回渲染\n    \"\"\"\n    span_type = 'success' if result else 'danger'\n    fa_type = 'icon-check1' if result else 'icon-exclamation-triangle'\n\n    saas_app_version_id = data.get('saas_app_version_id', '')\n    file_version_display = data.get('file_version_display', '')\n\n    if_success_do_remove_js = 'window.parent.document.getElementById(\\\"saas_app_online\\\").removeAttribute(\\\"disabled\\\");' # noqa\n    if not result:\n        if_success_do_remove_js = ''\n\n    response_tpl = UPLOAD_RESPONSE_FORMAT.format(\n        span_type=span_type,\n        message=message,\n        fa_type=fa_type,\n        saas_app_version_id=saas_app_version_id,\n        file_version_display=file_version_display,\n        if_success_do_remove_js=if_success_do_remove_js,\n    )\n    response = HttpResponse()\n    response['Content-Type'] = 'text/html'\n    response['charset'] = 'utf-8'\n    response.write(response_tpl)\n    return response\n\n\ndef create_saas_app_db(app_code):\n    \"\"\"\n    给SaaS应用创建db信息\n\n    db的用户信息跟平台保持一致\n    \"\"\"\n    # 获取平台的 db 配置信息\n    app_sec_info, _c = SecureInfo.objects.get_or_create(app_code=app_code)\n    db_name = app_sec_info.db_name\n    create_sql = CREATE_PAAS_DB_SQL % db_name\n    ok, message = execute_sql('default', create_sql)\n    # 创建失败提示用户到基本信息页面手动修改 db 信息\n    if not ok:\n        base_url = '{}/saas/{}/info/'.format(settings.SITE_URL, app_code)\n        message = \"创建应用db失败，请手动创建db后，点击 <a href='{}'>这里</a> 修改配置信息后重新部署\".format(base_url)\n    return ok, message\n\n\ndef execute_sql(db_alias, operation, params=None):\n    '''\n    @summary: 查询数据库中的数据\n    @param db_alias: 数据连接别名，数据连接由settings.DATABASES设置\n    @param execute_sql: 执行更新操作的SQL语句\n    @param params: SQL语句中条件参数\n    @return: 返回是否执行成功\n    '''\n    cursor = connections[db_alias].cursor()\n    message = ''\n    try:\n        cursor.execute(operation)\n        message = \"执行成功\"\n        return True, message\n    except Exception:\n        logger.exception(\"sql语句执行失败\")\n        return False, message\n    finally:\n        # 关闭连接\n        cursor.close()\n\n\n@transaction.atomic\ndef delete_saas_app(app_code, username):\n    \"\"\"\n    清除应用\n    \"\"\"\n    # app = App.objects.get(code=app_code)\n    saas_app = SaaSApp.objects.get(code=app_code)\n\n    if saas_app.state not in [1]:\n        return False, \"应用已经部署过, 无法进行删除操作\"\n\n    saas_app.app = None\n    saas_app.current_version = None\n    saas_app.online_version = None\n    saas_app.save()\n\n    # 删除 app 表中的应用\n    try:\n        SecureInfo.objects.filter(app_code=app_code).delete()\n        App.objects.filter(code=app_code).delete()\n        # 将APP的发布记录保存为上一次，避免下次创建时显示冲突\n        Record.objects.filter(app_code=app_code).update(version='last')\n        logger.info(\"[app:%s] 删除成功\", app_code)\n    except Exception:\n        message = \"应用删除失败！\"\n        logger.exception(\"[app:%s] %s\", app_code, message)\n        return False, message\n\n    try:\n        SaaSAppVersion.objects.delete_all_versions(saas_app)\n        saas_app.delete()\n    except Exception:\n        message = \"删除 SaaSApp 相关数据失败, app_code=%s\" % app_code\n        logger.exception(message)\n        return False, message\n\n    # 操作流水日志\n    extra_data = {\"username\": username}\n    record_user_operate(app_code=app_code,\n                        username=username,\n                        operate_type=UserOperateTypeEnum.APP_DELETE.value,\n                        extra_data=extra_data)\n\n    return True, \"应用删除成功\"\n\n\ndef saas_online_task(saas_app_version_id, username):\n    \"\"\"\n    SaaS应用部署操作\n    \"\"\"\n    is_saas_app_deployable = BkServer.objects.check_saas_app_deployable()\n    if not is_saas_app_deployable:\n        message = \"当前没有可用的[正式服务器], 无法进行应用部署操作. 请到<a href='/engine/server/'> [开发者中心-服务器信息] </a>注册并激活服务器\"\n        logger.info(message)\n        return False, message, None\n\n    try:\n        saas_app_version = SaaSAppVersion.objects.get(id=saas_app_version_id)\n    except SaaSAppVersion.DoesNotExist:\n        return False, \"对应版本不存在, 无法进行部署\", None\n\n    saas_app = saas_app_version.saas_app\n    app = saas_app.app\n    if not app:\n        # make a new one\n        ok, message, app = _create_app(saas_app_version)\n        if not ok:\n            return False, message, None\n\n        # 将 SaasApp 表 与 App表关联\n        saas_app.app = app\n        saas_app.save()\n\n    # update\n    ok, message = _update_app(saas_app_version)\n    if not ok:\n        return False, message, None\n\n    # ========================================\n\n    app_code = app.code\n    logger.info(\"SaaS App[app:%s] 开始进行[正式部署]...\", app_code)\n\n    # 状态检测, 什么状态可以发布?\n    # 只有[下架/开发/测试/上线]状态可操作\n    if app.state not in [AppStateEnum.OFFLINE.value, AppStateEnum.DEVELOPMENT.value,\n                         AppStateEnum.TEST.value, AppStateEnum.ONLINE.value]:\n        message = \"SaaS App应用当前状态：%s，不能进行部署操作！\" % app.get_state_display()\n        logger.info(\"SaaS App[app:%s] %s\", app_code, message)\n        return False, message, None\n\n    # 上线操作\n    # NOTE: fix bug here, get the newest object because some changes have been saved\n    newest_saas_app_version = SaaSAppVersion.objects.get(id=saas_app_version_id)\n    ok, event_id, message = saas_app_to_online_task(newest_saas_app_version, username)\n\n    # 操作流水日志\n    extra_data = {\"username\": username}\n    record_user_operate(app_code=app_code,\n                        username=username,\n                        operate_type=UserOperateTypeEnum.RELEASE_ONLINE.value,\n                        extra_data=extra_data)\n\n    logger.info(\"SaaS App[app:%s] %s event_id: %s\", app_code, message, event_id)\n\n    data = {\n        \"event_id\": event_id,\n        \"app_code\": app_code,\n    }\n    if ok:\n        return True, \"SaaS App正式部署事件提交成功！\", data\n    return False, message, None\n"
  },
  {
    "path": "paas-ce/paas/paas/saas/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\"  # noqa\n\n\nimport datetime\nimport json\nimport uuid\n\nimport yaml\nfrom django.conf import settings\nfrom django.db import transaction\nfrom django.http import HttpResponseRedirect, JsonResponse\nfrom django.views.generic import View\n\nfrom app.constants import AppStateEnum\nfrom app.forms import AppQueryForm\nfrom common.log import logger\nfrom common.mixins.base import SaaSAdminMixin, SuperuserRequiredMixin\nfrom common.mymako import render_mako_context, render_mako_tostring_context\nfrom common.responses import FailJsonResponse, OKJsonResponse\nfrom common.views.mako import MakoTemplateView\nfrom common.utils import first_error_message, md5_for_file\nfrom app.models import App, SecureInfo, DesktopSettings\nfrom engine.models import BkApp, BkAppToken\nfrom release.models import Record\nfrom release.utils import sync_app_state\nfrom saas.models import SaaSApp, SaaSUploadFile, SaaSAppVersion\nfrom saas.utils import (delete_saas_app, extract_logo_file, saas_online_task,\n                        save_saas_app_info, upload_response_tpl,\n                        validate_and_extract_tar_file)\n\n\nclass SaaSListPageView(SuperuserRequiredMixin, MakoTemplateView):\n    \"\"\"SaaS 列表\n    \"\"\"\n    template_name = 'saas/list.html'\n\n\nclass SaaSListView(SuperuserRequiredMixin, View):\n    \"\"\"查询获得上传部署应用的列表\n    \"\"\"\n\n    def get(self, request):\n\n        form = AppQueryForm(request.GET)\n        if not form.is_valid():\n            message = first_error_message(form)\n            logger.exception(\"应用列表页面参数异常:%s\", message)\n            return JsonResponse({\n                'data': \"请求参数异常\",\n                'total_num': 0,\n                'extend_fun': ''\n            })\n\n        keyword = form.cleaned_data[\"keyword\"]\n        hide_offline = form.cleaned_data[\"hide_offline\"]\n        page = form.cleaned_data[\"page\"]\n        page_size = form.cleaned_data[\"page_size\"]\n\n        start = (page - 1) * page_size\n        end = page * page_size\n\n        total, app_list = SaaSApp.objects.query_saas_list(keyword, hide_offline, start, end)\n\n        # 判断应用状态是否需要刷新\n        refresh_app_list = []\n        app_refresh_states = [AppStateEnum.IN_TEST.value, AppStateEnum.IN_ONLINE.value, AppStateEnum.IN_OFFLINE.value]\n        for _app in app_list:\n            if _app.state in app_refresh_states:\n                _app_code = _app.code\n                try:\n                    sync_app_state(_app_code)\n                    # 获取更新后的应用信息\n                    _app = SaaSApp.objects.get(code=_app_code)\n                except Exception:\n                    logger.exception(\"更新应用[%s]状态失败\", _app_code)\n            refresh_app_list.append(_app)\n\n        result = {\n            'total': total,\n            'app_list': app_list,\n        }\n        template_name = 'saas/list_table.part'\n        html_data = render_mako_tostring_context(request, template_name, result)\n        return JsonResponse({\n            'data': html_data,\n            'total_num': total,\n            'extend_fun': ''\n        })\n\n\nclass InfoView(SaaSAdminMixin, MakoTemplateView):\n    \"\"\"SaaS 应用基本信息\n    \"\"\"\n    template_name = 'saas/info.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(InfoView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n\n        saas_app = SaaSApp.objects.get(code=app_code)\n        app = saas_app.app\n        app_state = saas_app.state\n\n        app_info = {\n            'code': saas_app.code or '--',\n            'name': saas_app.name or '--',\n            'introduction': app.introduction if app else '',\n            'current_version': saas_app.current_version,\n            'create_time': saas_app.created_date_display,\n            'state': app_state,\n        }\n        # 获取版本信息\n        ok, version_info = saas_app.get_current_version_info()\n        if ok:\n            app_info.update(version_info)\n\n        context.update({\n            'app_info': app_info,\n            'app_code': app_code,\n            'app_state': app_state,\n        })\n        return context\n\n\nclass ReleasePageView(SaaSAdminMixin, MakoTemplateView):\n    \"\"\"部署页面\n    \"\"\"\n    template_name = 'saas/release.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(ReleasePageView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n\n        # 部署已有应用，查询应用是否已有部署文件\n        app_state = ''\n        version_info = {}\n        if app_code not in (0, '0'):\n            saas_app = SaaSApp.objects.get(code=app_code)\n            app_state = saas_app.state\n            # 获取应用的版本信息\n            _, version_info = saas_app.get_current_version_info()\n\n        context.update({\n            'app_code': app_code,\n            'app_state': app_state,\n            'version_info': version_info,\n        })\n        return context\n\n\nclass OfflinePageView(SaaSAdminMixin, MakoTemplateView):\n    \"\"\"下架页面\n    \"\"\"\n    template_name = 'saas/offline.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(OfflinePageView, self).get_context_data(**kwargs)\n        request = self.request\n\n        app_code = self.kwargs[\"app_code\"]\n\n        saas_app = SaaSApp.objects.get(code=app_code)\n        app_state = saas_app.state\n        ok, version_info = saas_app.get_current_version_info()\n        # TODO: will return or not?\n        if not ok:\n            return render_mako_context(request, 'error/app_error3.html', {'app_code': app_code})\n        version_info['app_code'] = app_code\n        version_info['app_state'] = app_state\n\n        context.update(version_info)\n        return context\n\n\nclass DeleteSaaSView(SaaSAdminMixin, View):\n    \"\"\"删除某个 saas 及其所有版本\n    \"\"\"\n\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n        username = request.user.username\n        ok, message = delete_saas_app(app_code, username)\n        if ok:\n            return OKJsonResponse(message)\n        return FailJsonResponse(message)\n\n\n# FIXME: can be merge with app's record?\nclass RecordView(SaaSAdminMixin, MakoTemplateView):\n    \"\"\"应用发布记录\n    \"\"\"\n    template_name = 'saas/record.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(RecordView, self).get_context_data(**kwargs)\n\n        app_code = self.kwargs[\"app_code\"]\n        saas_app = SaaSApp.objects.get(code=app_code)\n        app_state = saas_app.state\n\n        context.update({'app_code': app_code, 'app_state': app_state})\n        return context\n\n\nclass UploadAndRegisterView(SuperuserRequiredMixin, View):\n    # @transaction.atomic\n    def get(self, request):\n        data = request.GET.dict()\n        is_update = True if data.get(\"is_update\") in [1, \"1\", \"true\", \"True\"] else False\n        saas_file_name = data.get(\"saas_file_name\")\n        app_code = data.get(\"saas_app_code\")\n        app_name = data.get(\"saas_app_name\")\n        version = data.get(\"saas_app_version\")\n        secret_key = data.get(\"saas_app_secret_key\")\n        result = True\n        message = \"Success\"\n        if not is_update:\n            try:\n                uuid.UUID(secret_key.replace('-', ''))\n            except Exception:\n                result = False\n                message = \"saas_app_secret_key必须是UUID生成的数值！\"\n        app = App.objects.filter(code=app_code).first()\n        app_by_name = App.objects.filter(name=app_name).first()\n        if app and app_by_name and (app != app_by_name):\n            result = False\n            message = \"该应用 <{}> 应用名称 <{}> 已被 <{}> 使用\".format(app_code, app_name, app_by_name.name)\n        if not all([saas_file_name, app_code, app_name, version, secret_key]):\n            result = False\n            message = \"缺失参数\"\n        if not is_update:\n            if request.user.username != \"admin\":\n                result = False\n                message = \"无权操作\"\n        if not is_update:\n            if app:\n                result = False\n                message = \"该应用已存在: {}\".format(app_code)\n        else:\n            if not app:\n                result = False\n                message = \"该应用不存在无法更新: {}\".format(app_code)\n        if result:\n            saas_upload_file = self._save_saas_upload_file(saas_file_name)  # 创建上传记录\n            app, this_secret_key = self._save_app(app_code, app_name, secret_key)  # app基本信息表 包含开发中心列表页信息\n            saas_app = self._save_saas_app(app)  # saas基础表\n            bk_app = self._save_bk_app(saas_app)  # appengine表 app信息\n            self._save_bk_app_token(bk_app, this_secret_key)  # appengine表 app token 信息\n            self._save_saas_app_version(saas_app, version, saas_upload_file, this_secret_key)  # saas版本表\n            self._save_secure_info(app_code)  # 数据库信息\n            self._save_desktop_setting(app_code)  # 桌面配置\n            self._save_record(app_code, app_name, version, secret_key)  # 日志\n        result = {\"result\": result, \"message\": message}\n        result.update(data)\n        return JsonResponse(result)\n\n    def _save_saas_upload_file(self, saas_file_name):\n        saas_upload_file = SaaSUploadFile.objects.create(\n            name=saas_file_name,\n            size=20971520,\n            md5=str(uuid.uuid4())[:18],\n            file=saas_file_name,\n        )\n        return saas_upload_file\n\n    def _save_saas_app(self, app):\n        app_code = app.code\n        saas_app = SaaSApp.objects.filter(code=app_code).first()\n        if not saas_app:\n            saas_app = SaaSApp()\n        saas_app.code = app_code\n        saas_app.name = app.name\n        saas_app.app = app\n        saas_app.save()\n        return saas_app\n\n    def _save_saas_app_version(self, saas_app, version, upload_file, secret_key):\n        version_settings = {\n            'app_code': saas_app.code,\n            'app_name': saas_app.name,\n            'app_version': version,\n            'secret_key': secret_key,\n            'language': \"Python\",\n            'author': \"OpsAny\",\n            'introduction': \"OpsAny{}\".format(saas_app.name),\n            'category': \"OpsAny\",\n            'language_support': \"Python3.6\",\n            'date': str(datetime.datetime.now()).split('.')[0],\n            'desktop': {\"width\": 1300, \"is_max\": True, \"height\": 720},\n            'env': None\n        }\n        saas_app_version = SaaSAppVersion.objects.filter(version=version, saas_app=saas_app).first()\n        if not saas_app_version:\n            saas_app_version = SaaSAppVersion()\n        saas_app_version.version = version\n        saas_app_version.saas_app = saas_app\n        saas_app_version.upload_file = upload_file\n        saas_app_version.settings = json.dumps(version_settings)\n        saas_app_version.save()\n        saas_app.current_version = saas_app_version\n        saas_app.online_version = saas_app_version\n        saas_app.save()\n        return saas_app_version\n\n    def _save_bk_app(self, saas_app):\n        bk_app = BkApp.objects.filter(app_code=saas_app.code).first()\n        if not bk_app:\n            bk_app = BkApp()\n        bk_app.name = saas_app.name\n        bk_app.app_code = saas_app.code\n        bk_app.app_lang = \"Python\"\n        bk_app.save()\n        return bk_app\n\n    def _save_bk_app_token(self, bk_app, secret_key):\n        bk_app_token = BkAppToken.objects.filter(bk_app=bk_app).first()\n        if not bk_app_token:\n            bk_app_token = BkAppToken()\n            bk_app_token.key = secret_key\n        bk_app_token.bk_app = bk_app\n        bk_app_token.save()\n\n    def _save_app(self, app_code, app_name, secret_key):\n        app = App.objects.filter(code=app_code).first()\n        if not app:\n            app = App()\n            app.auth_token = secret_key\n        app.name = app_name\n        app.code = app_code\n        app.introduction = \"OpsAny{}\".format(app_name)\n        app.creater = \"admin\"\n        app.name = app_name\n        app.state = 4\n        app.is_already_test = 0\n        app.is_already_online = 1\n        app.first_test_time = None\n        app.first_online_time = datetime.datetime.now()\n        app.language = \"Python\"\n        app.is_use_celery = False\n        app.is_use_celery_beat = False\n        app.is_saas = True\n        app.save()\n        return app, app.auth_token\n\n    def _save_secure_info(self, app_code):\n        secure_info = SecureInfo.objects.filter(app_code=app_code).first()\n        if not secure_info:\n            secure_info = SecureInfo()\n        secure_info.app_code = app_code\n        secure_info.vcs_type = 0\n        secure_info.db_type = \"mysql\"\n        secure_info.db_name = \"app_code\"\n        secure_info.save()\n        return secure_info\n\n    def _save_desktop_setting(self, app_code):\n        desktop_setting = DesktopSettings.objects.filter(app_code=app_code).first()\n        if not desktop_setting:\n            desktop_setting = DesktopSettings()\n        desktop_setting.app_code = app_code\n        desktop_setting.is_display = 1\n        desktop_setting.save()\n        # AppEnvVar.objects.add_env_vars(code, env)\n\n        return desktop_setting\n\n    def _save_record(self, app_code, app_name, version, secret_key):\n        record = Record()\n        message = \"手动部署成功\\n\"\n        message += \"  \\n应用ID：{}\\n\".format(app_code)\n        message += \"  \\n应用名称：{}\\n\".format(app_name)\n        message += \"  \\n应用版本：{}\\n\".format(version)\n        message += \"  \\n应用秘钥：{}\\n\".format(secret_key)\n        record.app_code = app_code\n        record.operate_id = 1\n        record.operate_user = \"admin\"\n        record.app_old_state = 0\n        record.operate_time = datetime.datetime.now()\n        record.is_success = True\n        record.is_tips = True\n        record.is_version = False\n        record.version = version\n        record.message = message\n        record.extra_data = message\n        record.event_id = str(uuid.uuid4())\n        record.save()\n        return record\n\n\nclass UploadView(SuperuserRequiredMixin, View):\n    \"\"\"\n    执行上传, 一整个事务操作\n\n    注意安全性处理\n\n    Note:\n    1. app_code = 0, 则上传的新应用\n    2. app_code != 0, 则上传老的应用, 需要校验app_code同包里的 app_code 是否一致\n    \"\"\"\n\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n\n        form = UploadFileForm(request.POST, request.FILES)\n        if not form.is_valid():\n            message = first_error_message(form)\n            return upload_response_tpl(False, message)\n\n        saas_file = form.cleaned_data[\"saas_file\"]\n\n        md5 = md5_for_file(saas_file.chunks())\n\n        # 2. save to SaaSUploadFile\n        # 同名文件覆盖 => 覆盖, 但是这样saas upload file又会存在多个指向同一个文件\n        # http://timonweb.com/posts/imagefield-overwrite-file-if-file-with-the-same-name-exists/\n        saas_upload_file = SaaSUploadFile.objects.create(\n            name=saas_file.name,\n            size=saas_file.size,\n            md5=md5,\n            file=saas_file,\n        )\n\n        # 校验大小等参数\n        is_valid, message, app_yml_content = validate_and_extract_tar_file(filename=saas_upload_file.name,\n                                                                           path=saas_upload_file.file.path)\n        if not is_valid:\n            logger.info(message)\n            return upload_response_tpl(False, message)\n\n        app_config = {}\n        try:\n            app_config = yaml.load(app_yml_content)\n        except Exception:\n            message = \"无法正确加载{}包中的yml文件\".format(saas_upload_file.name)\n            logger.exception(message)\n            return upload_response_tpl(False, message)\n\n        # basic settings check\n        saas_app_code = app_config.get(\"app_code\")\n\n        # 校验app_code\n        if app_code == \"0\":\n            app_code = saas_app_code\n\n            # NOTE: 从上传新应用入口进来的, 判定下是否上传的老的包\n            if SaaSApp.objects.exists(app_code):\n                message = \"上传包应用 ID 为: {}. 应用已存在, 非新应用无法从此入口部署. 请从内置应用列表找到该应用, 进入部署页面部署\".format(app_code)\n                logger.info(message)\n                return upload_response_tpl(False, message)\n        else:\n            if app_code != saas_app_code:\n                message = (\"当前应用 ID 为: {}, 上传包应用 ID 为: {}. 不是同一个应用, 无法部署. \"\n                           \"请作为新应用上传部署或找到应用{}的部署页面上传部署 \").format(app_code, saas_app_code, saas_app_code)\n                logger.info(message)\n                return upload_response_tpl(False, message)\n\n        app_name = app_config.get(\"app_name\")\n        version = app_config.get(\"version\")\n        if not (app_code and app_name and version):\n            message = (\"upload file: {}, app.yml settings error\"\n                       \"[app_code={}, app_name={}, version={}]\").format(saas_file.name,\n                                                                        app_code,\n                                                                        app_name,\n                                                                        version)\n            logger.info(message)\n            return upload_response_tpl(False, message)\n\n        try:\n            saas_app_version_id = save_saas_app_info(app_config, saas_upload_file)\n        except Exception:\n            message = \"保存SaaS包信息失败\"\n            logger.exception(message)\n            return upload_response_tpl(False, message)\n\n        # 解压包文件中的logo到 media/logo/ 目录下\n        extract_logo_file(filename=saas_upload_file.name, path=saas_upload_file.file.path, saas_app_code=saas_app_code)\n\n        # for: 部署时展示线上版本/当前版本信息给用户\n        file_version_display = \"{} (V{})\".format(saas_file.name, version)\n\n        data = {\"saas_app_version_id\": saas_app_version_id, 'file_version_display': file_version_display}\n        return upload_response_tpl(True, \"上传成功\", data)\n\n\nclass OnlineView(SuperuserRequiredMixin, View):\n    \"\"\"执行部署\n    \"\"\"\n\n    def post(self, request, *args, **kwargs):\n        saas_app_version_id = self.kwargs[\"saas_app_version_id\"]\n\n        username = request.user.username\n        ok, message, data = saas_online_task(saas_app_version_id, username)\n        if not ok:\n            result = {\"result\": False, \"message\": message}\n        else:\n            result = {\"result\": True, \"message\": message}\n            result.update(data)\n\n        return JsonResponse(result)\n\n\n# FIXME: duplicate codes with app logo\nclass ModifyAppLogoView(SuperuserRequiredMixin, View):\n    \"\"\"修改应用图标\n    \"\"\"\n\n    def post(self, request, *args, **kwargs):\n        app_code = self.kwargs[\"app_code\"]\n\n        app = SaaSApp.objects.get(code=app_code)\n        logo = request.FILES.get('logo_m', '')\n        if not (logo and logo.content_type and logo.content_type.lower() == 'image/png'):\n            error = \"更换logo失败, logo必须为png格式\"\n            url = '{}saas/list/?error={}'.format(settings.SITE_URL, error)\n            return HttpResponseRedirect(url)\n\n        try:\n            app.logo = logo\n            app.save()\n        except Exception:\n            logger.exception(\"应用logo[%s]更换失败\", app_code)\n\n        url = '{}saas/list/'.format(settings.SITE_URL)\n        return HttpResponseRedirect(url)\n"
  },
  {
    "path": "paas-ce/paas/paas/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\"\"\"You can load different configurations depending on yourcurrent environment.\n\nBK_ENV can be the following values:\n\n    development\n    testing\n    production\n\"\"\"\nimport os\nfrom conf.default import * # noqa\n\nENVIRONMENT = os.environ.get(\"BK_ENV\", \"development\")\n# Inherit from environment specifics\nconf_module = \"conf.settings_%s\" % ENVIRONMENT\n\ntry:\n    module = __import__(conf_module, globals(), locals(), ['*'])\nexcept ImportError as e:\n    raise ImportError(\"Could not import conf '%s' (Is it on sys.path?): %s\" % (conf_module, e))\n\nfor setting in dir(module):\n    if setting == setting.upper():\n        locals()[setting] = getattr(module, setting)\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/base.css",
    "content": "/*\n    DJANGO Admin styles\n*/\n\nbody {\n    margin: 0;\n    padding: 0;\n    font-size: 12px;\n    font-family: \"Lucida Grande\",\"DejaVu Sans\",\"Bitstream Vera Sans\",Verdana,Arial,sans-serif;\n    color: #333;\n    background: #fff;\n}\n\n/* LINKS */\n\na:link, a:visited {\n    color: #5b80b2;\n    text-decoration: none;\n}\n\na:hover {\n    color: #036;\n}\n\na img {\n    border: none;\n}\n\na.section:link, a.section:visited {\n    color: #fff;\n    text-decoration: none;\n}\n\n/* GLOBAL DEFAULTS */\n\np, ol, ul, dl {\n    margin: .2em 0 .8em 0;\n}\n\np {\n    padding: 0;\n    line-height: 140%;\n}\n\nh1,h2,h3,h4,h5 {\n    font-weight: bold;\n}\n\nh1 {\n    font-size: 18px;\n    color: #666;\n    padding: 0 6px 0 0;\n    margin: 0 0 .2em 0;\n}\n\nh2 {\n    font-size: 16px;\n    margin: 1em 0 .5em 0;\n}\n\nh2.subhead {\n    font-weight: normal;\n    margin-top: 0;\n}\n\nh3 {\n    font-size: 14px;\n    margin: .8em 0 .3em 0;\n    color: #666;\n    font-weight: bold;\n}\n\nh4 {\n    font-size: 12px;\n    margin: 1em 0 .8em 0;\n    padding-bottom: 3px;\n}\n\nh5 {\n    font-size: 10px;\n    margin: 1.5em 0 .5em 0;\n    color: #666;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n}\n\nul li {\n    list-style-type: square;\n    padding: 1px 0;\n}\n\nul.plainlist {\n    margin-left: 0 !important;\n}\n\nul.plainlist li {\n    list-style-type: none;\n}\n\nli ul {\n    margin-bottom: 0;\n}\n\nli, dt, dd {\n    font-size: 11px;\n    line-height: 14px;\n}\n\ndt {\n    font-weight: bold;\n    margin-top: 4px;\n}\n\ndd {\n    margin-left: 0;\n}\n\nform {\n    margin: 0;\n    padding: 0;\n}\n\nfieldset {\n    margin: 0;\n    padding: 0;\n}\n\nblockquote {\n    font-size: 11px;\n    color: #777;\n    margin-left: 2px;\n    padding-left: 10px;\n    border-left: 5px solid #ddd;\n}\n\ncode, pre {\n    font-family: \"Bitstream Vera Sans Mono\", Monaco, \"Courier New\", Courier, monospace;\n    color: #666;\n    font-size: 11px;\n}\n\npre.literal-block {\n    margin: 10px;\n    background: #eee;\n    padding: 6px 8px;\n}\n\ncode strong {\n    color: #930;\n}\n\nhr {\n    clear: both;\n    color: #eee;\n    background-color: #eee;\n    height: 1px;\n    border: none;\n    margin: 0;\n    padding: 0;\n    font-size: 1px;\n    line-height: 1px;\n}\n\n/* TEXT STYLES & MODIFIERS */\n\n.small {\n    font-size: 11px;\n}\n\n.tiny {\n    font-size: 10px;\n}\n\np.tiny {\n    margin-top: -2px;\n}\n\n.mini {\n    font-size: 9px;\n}\n\np.mini {\n    margin-top: -3px;\n}\n\n.help, p.help {\n    font-size: 10px !important;\n    color: #999;\n}\n\nimg.help-tooltip {\n    cursor: help;\n}\n\np img, h1 img, h2 img, h3 img, h4 img, td img {\n    vertical-align: middle;\n}\n\n.quiet, a.quiet:link, a.quiet:visited {\n    color: #999 !important;\n    font-weight: normal !important;\n}\n\n.quiet strong {\n    font-weight: bold !important;\n}\n\n.float-right {\n    float: right;\n}\n\n.float-left {\n    float: left;\n}\n\n.clear {\n    clear: both;\n}\n\n.align-left {\n    text-align: left;\n}\n\n.align-right {\n    text-align: right;\n}\n\n.example {\n    margin: 10px 0;\n    padding: 5px 10px;\n    background: #efefef;\n}\n\n.nowrap {\n    white-space: nowrap;\n}\n\n/* TABLES */\n\ntable {\n    border-collapse: collapse;\n    border-color: #ccc;\n}\n\ntd, th {\n    font-size: 11px;\n    line-height: 13px;\n    border-bottom: 1px solid #eee;\n    vertical-align: top;\n    padding: 5px;\n    font-family: \"Lucida Grande\", Verdana, Arial, sans-serif;\n}\n\nth {\n    text-align: left;\n    font-size: 12px;\n    font-weight: bold;\n}\n\nthead th,\ntfoot td {\n    color: #666;\n    padding: 2px 5px;\n    font-size: 11px;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    border-left: 1px solid #ddd;\n    border-bottom: 1px solid #ddd;\n}\n\ntfoot td {\n    border-bottom: none;\n    border-top: 1px solid #ddd;\n}\n\nthead th:first-child,\ntfoot td:first-child {\n    border-left: none !important;\n}\n\nthead th.optional {\n    font-weight: normal !important;\n}\n\nfieldset table {\n    border-right: 1px solid #eee;\n}\n\ntr.row-label td {\n    font-size: 9px;\n    padding-top: 2px;\n    padding-bottom: 0;\n    border-bottom: none;\n    color: #666;\n    margin-top: -1px;\n}\n\ntr.alt {\n    background: #f6f6f6;\n}\n\n.row1 {\n    background: #EDF3FE;\n}\n\n.row2 {\n    background: #fff;\n}\n\n/* SORTABLE TABLES */\n\nthead th {\n    padding: 2px 5px;\n    line-height: normal;\n}\n\nthead th a:link, thead th a:visited {\n    color: #666;\n}\n\nthead th.sorted {\n    background: #c5c5c5 url(../img/nav-bg-selected.gif) top left repeat-x;\n}\n\nthead th.sorted .text {\n    padding-right: 42px;\n}\n\ntable thead th .text span {\n    padding: 2px 5px;\n    display:block;\n}\n\ntable thead th .text a {\n    display: block;\n    cursor: pointer;\n    padding: 2px 5px;\n}\n\ntable thead th.sortable:hover {\n    background: #fff url(../img/nav-bg-reverse.gif) 0 -5px repeat-x;\n}\n\nthead th.sorted a.sortremove {\n    visibility: hidden;\n}\n\ntable thead th.sorted:hover a.sortremove {\n    visibility: visible;\n}\n\ntable thead th.sorted .sortoptions {\n    display: block;\n    padding: 4px 5px 0 5px;\n    float: right;\n    text-align: right;\n}\n\ntable thead th.sorted .sortpriority {\n    font-size: .8em;\n    min-width: 12px;\n    text-align: center;\n    vertical-align: top;\n}\n\ntable thead th.sorted .sortoptions a {\n    width: 14px;\n    height: 12px;\n    display: inline-block;\n}\n\ntable thead th.sorted .sortoptions a.sortremove {\n    background: url(../img/sorting-icons.gif) -4px -5px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.sortremove:hover {\n    background: url(../img/sorting-icons.gif) -4px -27px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.ascending {\n    background: url(../img/sorting-icons.gif) -5px -50px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.ascending:hover {\n    background: url(../img/sorting-icons.gif) -5px -72px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.descending {\n    background: url(../img/sorting-icons.gif) -5px -94px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.descending:hover {\n    background: url(../img/sorting-icons.gif) -5px -115px no-repeat;\n}\n\n/* ORDERABLE TABLES */\n\ntable.orderable tbody tr td:hover {\n    cursor: move;\n}\n\ntable.orderable tbody tr td:first-child {\n    padding-left: 14px;\n    background-image: url(../img/nav-bg-grabber.gif);\n    background-repeat: repeat-y;\n}\n\ntable.orderable-initalized .order-cell, body>tr>td.order-cell {\n    display: none;\n}\n\n/* FORM DEFAULTS */\n\ninput, textarea, select, .form-row p, form .button {\n    margin: 2px 0;\n    padding: 2px 3px;\n    vertical-align: middle;\n    font-family: \"Lucida Grande\", Verdana, Arial, sans-serif;\n    font-weight: normal;\n    font-size: 11px;\n}\n\ntextarea {\n    vertical-align: top !important;\n}\n\ninput[type=text], input[type=password], input[type=email], input[type=url], input[type=number],\ntextarea, select, .vTextField {\n    border: 1px solid #ccc;\n}\n\n/* FORM BUTTONS */\n\n.button, input[type=submit], input[type=button], .submit-row input, a.button {\n    background: #fff url(../img/nav-bg.gif) bottom repeat-x;\n    padding: 3px 5px;\n    color: black;\n    border: 1px solid #bbb;\n    border-color: #ddd #aaa #aaa #ddd;\n}\n\na.button {\n    padding: 4px 5px;\n}\n\n.button:active, input[type=submit]:active, input[type=button]:active {\n    background-image: url(../img/nav-bg-reverse.gif);\n    background-position: top;\n}\n\n.button[disabled], input[type=submit][disabled], input[type=button][disabled] {\n    background-image: url(../img/nav-bg.gif);\n    background-position: bottom;\n    opacity: 0.4;\n}\n\n.button.default, input[type=submit].default, .submit-row input.default {\n    border: 2px solid #5b80b2;\n    background: #7CA0C7 url(../img/default-bg.gif) bottom repeat-x;\n    font-weight: bold;\n    color: #fff;\n    float: right;\n}\n\n.button.default:active, input[type=submit].default:active {\n    background-image: url(../img/default-bg-reverse.gif);\n    background-position: top;\n}\n\n.button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default {\n    background-image: url(../img/default-bg.gif);\n    background-position: bottom;\n    opacity: 0.4;\n}\n\n\n/* MODULES */\n\n.module {\n    border: 1px solid #ccc;\n    margin-bottom: 5px;\n    background: #fff;\n}\n\n.module p, .module ul, .module h3, .module h4, .module dl, .module pre {\n    padding-left: 10px;\n    padding-right: 10px;\n}\n\n.module blockquote {\n    margin-left: 12px;\n}\n\n.module ul, .module ol {\n    margin-left: 1.5em;\n}\n\n.module h3 {\n    margin-top: .6em;\n}\n\n.module h2, .module caption, .inline-group h2 {\n    margin: 0;\n    padding: 2px 5px 3px 5px;\n    font-size: 11px;\n    text-align: left;\n    font-weight: bold;\n    background: #7CA0C7 url(../img/default-bg.gif) top left repeat-x;\n    color: #fff;\n}\n\n.module table {\n    border-collapse: collapse;\n}\n\n/* MESSAGES & ERRORS */\n\nul.messagelist {\n    padding: 0;\n    margin: 0;\n}\n\nul.messagelist li {\n    font-size: 12px;\n    font-weight: bold;\n    display: block;\n    padding: 5px 5px 4px 25px;\n    margin: 0 0 3px 0;\n    border-bottom: 1px solid #ddd;\n    color: #666;\n    background: #dfd url(../img/icon_success.gif) 5px .3em no-repeat;\n}\n\nul.messagelist li.warning {\n    background: #ffc url(../img/icon_alert.gif) 5px .3em no-repeat;\n}\n\nul.messagelist li.error {\n    background: #ffefef url(../img/icon_error.gif) 5px .3em no-repeat;\n}\n\n.errornote {\n    font-size: 12px !important;\n    font-weight: bold;\n    display: block;\n    padding: 5px 5px 4px 25px;\n    margin: 0 0 3px 0;\n    border: 1px solid #c22;\n    color: #c11;\n    background: #ffefef url(../img/icon_error.gif) 5px .38em no-repeat;\n}\n\n.errornote, ul.errorlist {\n    border-radius: 1px;\n}\n\nul.errorlist {\n    margin: 0 0 4px !important;\n    padding: 0 !important;\n    color: #fff;\n    background: #c11;\n}\n\nul.errorlist li {\n    font-size: 12px !important;\n    display: block;\n    padding: 5px 5px 4px 7px;\n    margin: 3px 0 0 0;\n}\n\nul.errorlist li:first-child {\n    margin-top: 0;\n}\n\nul.errorlist li a {\n    color: #fff;\n    text-decoration: underline;\n}\n\ntd ul.errorlist {\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\ntd ul.errorlist li {\n    margin: 0 !important;\n}\n\n.errors, .form-row.errors {\n    background: #ffefef;\n}\n\n.form-row.errors {\n    border: 1px solid #c22;\n    margin: -1px;\n}\n\n.errors input, .errors select, .errors textarea {\n    border: 1px solid #c11;\n}\n\ndiv.system-message {\n    background: #ffc;\n    margin: 10px;\n    padding: 6px 8px;\n    font-size: .8em;\n}\n\ndiv.system-message p.system-message-title {\n    padding: 4px 5px 4px 25px;\n    margin: 0;\n    color: #c11;\n    background: #ffefef url(../img/icon_error.gif) 5px .3em no-repeat;\n}\n\n.description {\n    font-size: 12px;\n    padding: 5px 0 0 12px;\n}\n\n/* BREADCRUMBS */\n\ndiv.breadcrumbs {\n    background: #fff url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;\n    padding: 2px 8px 3px 8px;\n    font-size: 11px;\n    color: #999;\n    border-top: 1px solid #fff;\n    border-bottom: 1px solid #ddd;\n    text-align: left;\n}\n\n/* ACTION ICONS */\n\n.addlink {\n    padding-left: 12px;\n    background: url(../img/icon_addlink.gif) 0 .2em no-repeat;\n}\n\n.changelink, .inlinechangelink {\n    padding-left: 12px;\n    background: url(../img/icon_changelink.gif) 0 .2em no-repeat;\n}\n\n.deletelink {\n    padding-left: 12px;\n    background: url(../img/icon_deletelink.gif) 0 .25em no-repeat;\n}\n\na.deletelink:link, a.deletelink:visited {\n    color: #CC3434;\n}\n\na.deletelink:hover {\n    color: #993333;\n}\n\n/* OBJECT TOOLS */\n\n.object-tools {\n    font-size: 10px;\n    font-weight: bold;\n    font-family: Arial,Helvetica,sans-serif;\n    padding-left: 0;\n    float: right;\n    position: relative;\n    margin-top: -2.4em;\n    margin-bottom: -2em;\n}\n\n.form-row .object-tools {\n    margin-top: 5px;\n    margin-bottom: 5px;\n    float: none;\n    height: 2em;\n    padding-left: 3.5em;\n}\n\n.object-tools li {\n    display: block;\n    float: left;\n    margin-left: 5px;\n    height: 16px;\n}\n\n.object-tools a {\n    border-radius: 15px;\n}\n\n.object-tools a:link, .object-tools a:visited {\n    display: block;\n    float: left;\n    color: #fff;\n    padding: .2em 10px;\n    background: #999;\n}\n\n.object-tools a:hover, .object-tools li:hover a {\n    background-color: #5b80b2;\n}\n\n.object-tools a.viewsitelink, .object-tools a.golink {\n    background: #999 url(../img/tooltag-arrowright.png) 95% center no-repeat;\n    padding-right: 26px;\n}\n\n.object-tools a.addlink {\n    background: #999 url(../img/tooltag-add.png) 95% center no-repeat;\n    padding-right: 26px;\n}\n\n/* OBJECT HISTORY */\n\ntable#change-history {\n    width: 100%;\n}\n\ntable#change-history tbody th {\n    width: 16em;\n}\n\n/* PAGE STRUCTURE */\n\n#container {\n    position: relative;\n    width: 100%;\n    min-width: 760px;\n    padding: 0;\n}\n\n#content {\n    margin: 10px 15px;\n}\n\n#content-main {\n    float: left;\n    width: 100%;\n}\n\n#content-related {\n    float: right;\n    width: 18em;\n    position: relative;\n    margin-right: -19em;\n}\n\n#footer {\n    clear: both;\n    padding: 10px;\n}\n\n/* COLUMN TYPES */\n\n.colMS {\n    margin-right: 20em !important;\n}\n\n.colSM {\n    margin-left: 20em !important;\n}\n\n.colSM #content-related {\n    float: left;\n    margin-right: 0;\n    margin-left: -19em;\n}\n\n.colSM #content-main {\n    float: right;\n}\n\n.popup .colM {\n    width: 95%;\n}\n\n.subcol {\n    float: left;\n    width: 46%;\n    margin-right: 15px;\n}\n\n.dashboard #content {\n    width: 500px;\n}\n\n/* HEADER */\n\n#header {\n    width: 100%;\n    background: #417690;\n    color: #ffc;\n    overflow: hidden;\n}\n\n#header a:link, #header a:visited {\n    color: #fff;\n}\n\n#header a:hover {\n    text-decoration: underline;\n}\n\n#branding {\n    float: left;\n}\n#branding h1 {\n    padding: 0 10px;\n    font-size: 18px;\n    margin: 8px 0;\n    font-weight: normal;\n}\n\n#branding h1, #branding h1 a:link, #branding h1 a:visited {\n    color: #f4f379;\n}\n\n#branding h2 {\n    padding: 0 10px;\n    font-size: 14px;\n    margin: -8px 0 8px 0;\n    font-weight: normal;\n    color: #ffc;\n}\n\n#branding a:hover {\n    text-decoration: none;\n}\n\n#user-tools {\n    float: right;\n    padding: 1.2em 10px;\n    font-size: 11px;\n    text-align: right;\n}\n\n/* SIDEBAR */\n\n#content-related h3 {\n    font-size: 12px;\n    color: #666;\n    margin-bottom: 3px;\n}\n\n#content-related h4 {\n    font-size: 11px;\n}\n\n#content-related .module h2 {\n    background: #eee url(../img/nav-bg.gif) bottom left repeat-x;\n    color: #666;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/changelists.css",
    "content": "/* CHANGELISTS */\n\n#changelist {\n    position: relative;\n    width: 100%;\n}\n\n#changelist table {\n    width: 100%;\n}\n\n.change-list .hiddenfields { display:none; }\n\n.change-list .filtered table {\n    border-right: 1px solid #ddd;\n}\n\n.change-list .filtered {\n    min-height: 400px;\n}\n\n.change-list .filtered {\n    background: white url(../img/changelist-bg.gif) top right repeat-y !important;\n}\n\n.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {\n    margin-right: 160px !important;\n    width: auto !important;\n}\n\n.change-list .filtered table tbody th {\n    padding-right: 1em;\n}\n\n#changelist-form .results {\n  overflow-x: auto;\n}\n\n#changelist .toplinks {\n    border-bottom: 1px solid #ccc !important;\n}\n\n#changelist .paginator {\n    color: #666;\n    border-top: 1px solid #eee;\n    border-bottom: 1px solid #eee;\n    background: white url(../img/nav-bg.gif) 0 180% repeat-x;\n    overflow: hidden;\n}\n\n.change-list .filtered .paginator {\n    border-right: 1px solid #ddd;\n}\n\n/* CHANGELIST TABLES */\n\n#changelist table thead th {\n    padding: 0;\n    white-space: nowrap;\n    vertical-align: middle;\n}\n\n#changelist table thead th.action-checkbox-column {\n    width: 1.5em;\n    text-align: center;\n}\n\n#changelist table tbody td, #changelist table tbody th {\n    border-left: 1px solid #ddd;\n}\n\n#changelist table tbody td:first-child, #changelist table tbody th:first-child {\n    border-left: 0;\n    border-right: 1px solid #ddd;\n}\n\n#changelist table tbody td.action-checkbox {\n    text-align:center;\n}\n\n#changelist table tfoot {\n    color: #666;\n}\n\n/* TOOLBAR */\n\n#changelist #toolbar {\n    padding: 3px;\n    border-bottom: 1px solid #ddd;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    color: #666;\n}\n\n#changelist #toolbar form input {\n    font-size: 11px;\n    padding: 1px 2px;\n}\n\n#changelist #toolbar form #searchbar {\n    padding: 2px;\n}\n\n#changelist #changelist-search img {\n    vertical-align: middle;\n}\n\n/* FILTER COLUMN */\n\n#changelist-filter {\n    position: absolute;\n    top: 0;\n    right: 0;\n    z-index: 1000;\n    width: 160px;\n    border-left: 1px solid #ddd;\n    background: #efefef;\n    margin: 0;\n}\n\n#changelist-filter h2 {\n    font-size: 11px;\n    padding: 2px 5px;\n    border-bottom: 1px solid #ddd;\n}\n\n#changelist-filter h3 {\n    font-size: 12px;\n    margin-bottom: 0;\n}\n\n#changelist-filter ul {\n    padding-left: 0;\n    margin-left: 10px;\n}\n\n#changelist-filter li {\n    list-style-type: none;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n#changelist-filter a {\n    color: #999;\n}\n\n#changelist-filter a:hover {\n    color: #036;\n}\n\n#changelist-filter li.selected {\n    border-left: 5px solid #ccc;\n    padding-left: 5px;\n    margin-left: -10px;\n}\n\n#changelist-filter li.selected a {\n    color: #5b80b2 !important;\n}\n\n/* DATE DRILLDOWN */\n\n.change-list ul.toplinks {\n    display: block;\n    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;\n    border-top: 1px solid white;\n    float: left;\n    padding: 0 !important;\n    margin: 0 !important;\n    width: 100%;\n}\n\n.change-list ul.toplinks li {\n    padding: 3px 6px;\n    font-weight: bold;\n    list-style-type: none;\n    display: inline-block;\n}\n\n.change-list ul.toplinks .date-back a {\n    color: #999;\n}\n\n.change-list ul.toplinks .date-back a:hover {\n    color: #036;\n}\n\n/* PAGINATOR */\n\n.paginator {\n    font-size: 11px;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: 22px;\n    margin: 0;\n    border-top: 1px solid #ddd;\n}\n\n.paginator a:link, .paginator a:visited {\n    padding: 2px 6px;\n    border: solid 1px #ccc;\n    background: white;\n    text-decoration: none;\n}\n\n.paginator a.showall {\n    padding: 0 !important;\n    border: none !important;\n}\n\n.paginator a.showall:hover {\n    color: #036 !important;\n    background: transparent !important;\n}\n\n.paginator .end {\n    border-width: 2px !important;\n    margin-right: 6px;\n}\n\n.paginator .this-page {\n    padding: 2px 6px;\n    font-weight: bold;\n    font-size: 13px;\n    vertical-align: top;\n}\n\n.paginator a:hover {\n    color: white;\n    background: #5b80b2;\n    border-color: #036;\n}\n\n/* ACTIONS */\n\n.filtered .actions {\n    margin-right: 160px !important;\n    border-right: 1px solid #ddd;\n}\n\n#changelist table input {\n    margin: 0;\n}\n\n#changelist table tbody tr.selected {\n    background-color: #FFFFCC;\n}\n\n#changelist .actions {\n    color: #999;\n    padding: 3px;\n    border-top: 1px solid #fff;\n    border-bottom: 1px solid #ddd;\n    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;\n}\n\n#changelist .actions.selected {\n    background: #fffccf;\n    border-top: 1px solid #fffee8;\n    border-bottom: 1px solid #edecd6;\n}\n\n#changelist .actions span.all,\n#changelist .actions span.action-counter,\n#changelist .actions span.clear,\n#changelist .actions span.question {\n    font-size: 11px;\n    margin: 0 0.5em;\n    display: none;\n}\n\n#changelist .actions:last-child {\n    border-bottom: none;\n}\n\n#changelist .actions select {\n    border: 1px solid #aaa;\n    margin-left: 0.5em;\n    padding: 1px 2px;\n}\n\n#changelist .actions label {\n    font-size: 11px;\n    margin-left: 0.5em;\n}\n\n#changelist #action-toggle {\n    display: none;\n}\n\n#changelist .actions .button {\n    font-size: 11px;\n    padding: 1px 2px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/dashboard.css",
    "content": "/* DASHBOARD */\n\n.dashboard .module table th {\n    width: 100%;\n}\n\n.dashboard .module table td {\n    white-space: nowrap;\n}\n\n.dashboard .module table td a {\n    display: block;\n    padding-right: .6em;\n}\n\n/* RECENT ACTIONS MODULE */\n\n.module ul.actionlist {\n    margin-left: 0;\n}\n\nul.actionlist li {\n    list-style-type: none;\n}\n\nul.actionlist li {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    -o-text-overflow: ellipsis;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/forms.css",
    "content": "@import url('widgets.css');\n\n/* FORM ROWS */\n\n.form-row {\n    overflow: hidden;\n    padding: 8px 12px;\n    font-size: 11px;\n    border-bottom: 1px solid #eee;\n}\n\n.form-row img, .form-row input {\n    vertical-align: middle;\n}\n\nform .form-row p {\n    padding-left: 0;\n    font-size: 11px;\n}\n\n.hidden {\n    display: none;\n}\n\n/* FORM LABELS */\n\nform h4 {\n    margin: 0 !important;\n    padding: 0 !important;\n    border: none !important;\n}\n\nlabel {\n    font-weight: normal !important;\n    color: #666;\n    font-size: 12px;\n}\n\n.required label, label.required {\n    font-weight: bold !important;\n    color: #333 !important;\n}\n\n/* RADIO BUTTONS */\n\nform ul.radiolist li {\n    list-style-type: none;\n}\n\nform ul.radiolist label {\n    float: none;\n    display: inline;\n}\n\nform ul.inline {\n    margin-left: 0;\n    padding: 0;\n}\n\nform ul.inline li {\n    float: left;\n    padding-right: 7px;\n}\n\n/* ALIGNED FIELDSETS */\n\n.aligned label {\n    display: block;\n    padding: 3px 10px 0 0;\n    float: left;\n    width: 8em;\n    word-wrap: break-word;\n}\n\n.aligned ul label {\n    display: inline;\n    float: none;\n    width: auto;\n}\n\n.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {\n    width: 350px;\n}\n\nform .aligned p, form .aligned ul {\n    margin-left: 7em;\n    padding-left: 30px;\n}\n\nform .aligned table p {\n    margin-left: 0;\n    padding-left: 0;\n}\n\nform .aligned p.help {\n    clear: left;\n    padding-left: 38px;\n}\n\n.aligned .vCheckboxLabel {\n    float: none !important;\n    display: inline;\n    padding-left: 4px;\n}\n\n.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {\n    width: 610px;\n}\n\n.checkbox-row p.help {\n    margin-left: 0;\n    padding-left: 0 !important;\n}\n\nfieldset .field-box {\n    float: left;\n    margin-right: 20px;\n}\n\n/* WIDE FIELDSETS */\n\n.wide label {\n    width: 15em !important;\n}\n\nform .wide p {\n    margin-left: 15em;\n}\n\nform .wide p.help {\n    padding-left: 38px;\n}\n\n.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {\n    width: 450px;\n}\n\n/* COLLAPSED FIELDSETS */\n\nfieldset.collapsed * {\n    display: none;\n}\n\nfieldset.collapsed h2, fieldset.collapsed {\n    display: block !important;\n}\n\nfieldset.collapsed h2 {\n    background-image: url(../img/nav-bg.gif);\n    background-position: bottom left;\n    color: #999;\n}\n\nfieldset.collapsed .collapse-toggle {\n    background: transparent;\n    display: inline !important;\n}\n\n/* MONOSPACE TEXTAREAS */\n\nfieldset.monospace textarea {\n    font-family: \"Bitstream Vera Sans Mono\",Monaco,\"Courier New\",Courier,monospace;\n}\n\n/* SUBMIT ROW */\n\n.submit-row {\n    padding: 5px 7px;\n    text-align: right;\n    background: white url(../img/nav-bg.gif) 0 100% repeat-x;\n    border: 1px solid #ccc;\n    margin: 5px 0;\n    overflow: hidden;\n}\n\nbody.popup .submit-row {\n    overflow: auto;\n}\n\n.submit-row input {\n    margin: 0 0 0 5px;\n}\n\n.submit-row p {\n    margin: 0.3em;\n}\n\n.submit-row p.deletelink-box {\n    float: left;\n}\n\n.submit-row .deletelink {\n    background: url(../img/icon_deletelink.gif) 0 50% no-repeat;\n    padding-left: 14px;\n}\n\n/* CUSTOM FORM FIELDS */\n\n.vSelectMultipleField {\n    vertical-align: top !important;\n}\n\n.vCheckboxField {\n    border: none;\n}\n\n.vDateField, .vTimeField {\n    margin-right: 2px;\n}\n\n.vDateField {\n    min-width: 6.85em;\n}\n\n.vTimeField {\n    min-width: 4.7em;\n}\n\n.vURLField {\n    width: 30em;\n}\n\n.vLargeTextField, .vXMLLargeTextField {\n    width: 48em;\n}\n\n.flatpages-flatpage #id_content {\n    height: 40.2em;\n}\n\n.module table .vPositiveSmallIntegerField {\n    width: 2.2em;\n}\n\n.vTextField {\n    width: 20em;\n}\n\n.vIntegerField {\n    width: 5em;\n}\n\n.vBigIntegerField {\n    width: 10em;\n}\n\n.vForeignKeyRawIdAdminField {\n    width: 5em;\n}\n\n/* INLINES */\n\n.inline-group {\n    padding: 0;\n    border: 1px solid #ccc;\n    margin: 10px 0;\n}\n\n.inline-group .aligned label {\n    width: 8em;\n}\n\n.inline-related {\n    position: relative;\n}\n\n.inline-related h3 {\n    margin: 0;\n    color: #666;\n    padding: 3px 5px;\n    font-size: 11px;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    border-bottom: 1px solid #ddd;\n}\n\n.inline-related h3 span.delete {\n    float: right;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: 2px;\n    font-size: 11px;\n}\n\n.inline-related fieldset {\n    margin: 0;\n    background: #fff;\n    border: none;\n    width: 100%;\n}\n\n.inline-related fieldset.module h3 {\n    margin: 0;\n    padding: 2px 5px 3px 5px;\n    font-size: 11px;\n    text-align: left;\n    font-weight: bold;\n    background: #bcd;\n    color: #fff;\n}\n\n.inline-group .tabular fieldset.module {\n    border: none;\n    border-bottom: 1px solid #ddd;\n}\n\n.inline-related.tabular fieldset.module table {\n    width: 100%;\n}\n\n.last-related fieldset {\n    border: none;\n}\n\n.inline-group .tabular tr.has_original td {\n    padding-top: 2em;\n}\n\n.inline-group .tabular tr td.original {\n    padding: 2px 0 0 0;\n    width: 0;\n    _position: relative;\n}\n\n.inline-group .tabular th.original {\n    width: 0px;\n    padding: 0;\n}\n\n.inline-group .tabular td.original p {\n    position: absolute;\n    left: 0;\n    height: 1.1em;\n    padding: 2px 7px;\n    overflow: hidden;\n    font-size: 9px;\n    font-weight: bold;\n    color: #666;\n    _width: 700px;\n}\n\n.inline-group ul.tools {\n    padding: 0;\n    margin: 0;\n    list-style: none;\n}\n\n.inline-group ul.tools li {\n    display: inline;\n    padding: 0 5px;\n}\n\n.inline-group div.add-row,\n.inline-group .tabular tr.add-row td {\n    color: #666;\n    padding: 3px 5px;\n    border-bottom: 1px solid #ddd;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n}\n\n.inline-group .tabular tr.add-row td {\n    padding: 4px 5px 3px;\n    border-bottom: none;\n}\n\n.inline-group ul.tools a.add,\n.inline-group div.add-row a,\n.inline-group .tabular tr.add-row td a {\n    background: url(../img/icon_addlink.gif) 0 50% no-repeat;\n    padding-left: 14px;\n    font-size: 11px;\n    outline: 0; /* Remove dotted border around link */\n}\n\n.empty-form {\n    display: none;\n}\n\n/* RELATED FIELD ADD ONE / LOOKUP */\n\n.add-another, .related-lookup {\n    margin-left: 5px;\n    display: inline-block;\n}\n\n.add-another {\n    width: 10px;\n    height: 10px;\n    background-image: url(../img/icon_addlink.gif);\n}\n\n.related-lookup {\n    width: 16px;\n    height: 16px;\n    background-image: url(../img/selector-search.gif);\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/ie.css",
    "content": "/* IE 6 & 7 */\n\n/* Proper fixed width for dashboard in IE6 */\n\n.dashboard #content {\n    *width: 768px;\n}\n\n.dashboard #content-main {\n    *width: 535px;\n}\n\n/* IE 6 ONLY */\n\n/* Keep header from flowing off the page */\n\n#container {\n    _position: static;\n}\n\n/* Put the right sidebars back on the page */\n\n.colMS #content-related {\n    _margin-right: 0;\n    _margin-left: 10px;\n    _position: static;\n}\n\n/* Put the left sidebars back on the page */\n\n.colSM #content-related {\n    _margin-right: 10px;\n    _margin-left: -115px;\n    _position: static;\n}\n\n.form-row {\n    _height: 1%;\n}\n\n/* Fix right margin for changelist filters in IE6 */\n\n#changelist-filter ul {\n    _margin-right: -10px;\n}\n\n/* IE ignores min-height, but treats height as if it were min-height */\n\n.change-list .filtered {\n    _height: 400px;\n}\n\n/* IE doesn't know alpha transparency in PNGs */\n\n.inline-deletelink {\n    background: transparent url(../img/inline-delete-8bit.png) no-repeat;\n}\n\n/* IE7 doesn't support inline-block */\n.change-list ul.toplinks li {\n    zoom: 1;\n    *display: inline;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/login.css",
    "content": "/* LOGIN FORM */\n\nbody.login {\n    background: #eee;\n}\n\n.login #container {\n    background: white;\n    border: 1px solid #ccc;\n    width: 28em;\n    min-width: 300px;\n    margin-left: auto;\n    margin-right: auto;\n    margin-top: 100px;\n}\n\n.login #content-main {\n    width: 100%;\n}\n\n.login form {\n    margin-top: 1em;\n}\n\n.login .form-row {\n    padding: 4px 0;\n    float: left;\n    width: 100%;\n}\n\n.login .form-row label {\n    padding-right: 0.5em;\n    line-height: 2em;\n    font-size: 1em;\n    clear: both;\n    color: #333;\n}\n\n.login .form-row #id_username, .login .form-row #id_password {\n    clear: both;\n    padding: 6px;\n    width: 100%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n}\n\n.login span.help {\n    font-size: 10px;\n    display: block;\n}\n\n.login .submit-row {\n    clear: both;\n    padding: 1em 0 0 9.4em;\n}\n\n.login .password-reset-link {\n    text-align: center;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/rtl.css",
    "content": "body {\n    direction: rtl;\n}\n\n/* LOGIN */\n\n.login .form-row {\n    float: right;\n}\n\n.login .form-row label {\n    float: right;\n    padding-left: 0.5em;\n    padding-right: 0;\n    text-align: left;\n}\n\n.login .submit-row {\n    clear: both;\n    padding: 1em 9.4em 0 0;\n}\n\n/* GLOBAL */\n\nth {\n    text-align: right;\n}\n\n.module h2, .module caption {\n    text-align: right;\n}\n\n.addlink, .changelink {\n    padding-left: 0px;\n    padding-right: 12px;\n    background-position: 100% 0.2em;\n}\n\n.deletelink {\n    padding-left: 0px;\n    padding-right: 12px;\n    background-position: 100% 0.25em;\n}\n\n.object-tools {\n    float: left;\n}\n\nthead th:first-child,\ntfoot td:first-child {\n    border-left: 1px solid #ddd !important;\n}\n\n/* LAYOUT */\n\n#user-tools {\n    right: auto;\n    left: 0;\n    text-align: left;\n}\n\ndiv.breadcrumbs {\n    text-align: right;\n}\n\n#content-main {\n    float: right;\n}\n\n#content-related {\n    float: left;\n    margin-left: -19em;\n    margin-right: auto;\n}\n\n.colMS {\n    margin-left: 20em !important;\n    margin-right: 10px !important;\n}\n\n/* SORTABLE TABLES */\n\ntable thead th.sorted .sortoptions {\n   float: left;\n}\n\nthead th.sorted .text {\n    padding-right: 0;\n    padding-left: 42px;\n}\n\n/* dashboard styles */\n\n.dashboard .module table td a {\n    padding-left: .6em;\n    padding-right: 12px;\n}\n\n/* changelists styles */\n\n.change-list .filtered {\n    background: white url(../img/changelist-bg_rtl.gif) top left repeat-y !important;\n}\n\n.change-list .filtered table {\n    border-left: 1px solid #ddd;\n    border-right: 0px none;\n}\n\n#changelist-filter {\n    right: auto;\n    left: 0;\n    border-left: 0px none;\n    border-right: 1px solid #ddd;\n}\n\n.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {\n    margin-right: 0px !important;\n    margin-left: 160px !important;\n}\n\n#changelist-filter li.selected {\n    border-left: 0px none;\n    padding-left: 0px;\n    margin-left: 0;\n    border-right: 5px solid #ccc;\n    padding-right: 5px;\n    margin-right: -10px;\n}\n\n.filtered .actions {\n    border-left:1px solid #DDDDDD;\n    margin-left:160px !important;\n    border-right: 0 none;\n    margin-right:0 !important;\n}\n\n#changelist table tbody td:first-child, #changelist table tbody th:first-child {\n    border-right: 0;\n    border-left: 1px solid #ddd;\n}\n\n/* FORMS */\n\n.aligned label {\n    padding: 0 0 3px 1em;\n    float: right;\n}\n\n.submit-row {\n    text-align: left\n}\n\n.submit-row p.deletelink-box {\n    float: right;\n}\n\n.submit-row .deletelink {\n    background: url(../img/icon_deletelink.gif) 0 50% no-repeat;\n    padding-right: 14px;\n}\n\n.vDateField, .vTimeField {\n    margin-left: 2px;\n}\n\nform ul.inline li {\n    float: right;\n    padding-right: 0;\n    padding-left: 7px;\n}\n\ninput[type=submit].default, .submit-row input.default {\n    float: left;\n}\n\nfieldset .field-box {\n    float: right;\n    margin-left: 20px;\n    margin-right: 0;\n}\n\n.errorlist li {\n    background-position: 100% .3em;\n    padding: 4px 25px 4px 5px;\n}\n\n.errornote {\n    background-position: 100% .3em;\n    padding: 4px 25px 4px 5px;\n}\n\n/* WIDGETS */\n\n.calendarnav-previous {\n    top: 0;\n    left: auto;\n    right: 0;\n}\n\n.calendarnav-next {\n    top: 0;\n    right: auto;\n    left: 0;\n}\n\n.calendar caption, .calendarbox h2 {\n    text-align: center;\n}\n\n.selector {\n    float: right;\n}\n\n.selector .selector-filter {\n    text-align: right;\n}\n\n.inline-deletelink {\n    float: left;\n}\n\n/* MISC */\n\n.inline-related h2, .inline-group h2 {\n    text-align: right\n}\n\n.inline-related h3 span.delete {\n    padding-right: 20px;\n    padding-left: inherit;\n    left: 10px;\n    right: inherit;\n    float:left;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: inherit;\n    margin-right: 2px;\n}\n\n/* IE7 specific bug fixes */\n\ndiv.colM {\n    position: relative;\n}\n\n.submit-row input {\n    float: left;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/css/widgets.css",
    "content": "/* SELECTOR (FILTER INTERFACE) */\n\n.selector {\n    width: 840px;\n    float: left;\n}\n\n.selector select {\n    width: 400px;\n    height: 17.2em;\n}\n\n.selector-available, .selector-chosen {\n    float: left;\n    width: 400px;\n    text-align: center;\n    margin-bottom: 5px;\n}\n\n.selector-chosen select {\n    border-top: none;\n}\n\n.selector-available h2, .selector-chosen h2 {\n    border: 1px solid #ccc;\n}\n\n.selector .selector-available h2 {\n    background: white url(../img/nav-bg.gif) bottom left repeat-x;\n    color: #666;\n}\n\n.selector .selector-filter {\n    background: white;\n    border: 1px solid #ccc;\n    border-width: 0 1px;\n    padding: 3px;\n    color: #999;\n    font-size: 10px;\n    margin: 0;\n    text-align: left;\n}\n\n.selector .selector-filter label,\n.inline-group .aligned .selector .selector-filter label {\n    width: 16px;\n    padding: 2px;\n}\n\n.selector .selector-available input {\n    width: 360px;\n}\n\n.selector ul.selector-chooser {\n    float: left;\n    width: 22px;\n    background-color: #eee;\n    border-radius: 10px;\n    margin: 10em 5px 0 5px;\n    padding: 0;\n}\n\n.selector-chooser li {\n    margin: 0;\n    padding: 3px;\n    list-style-type: none;\n}\n\n.selector select {\n    margin-bottom: 10px;\n    margin-top: 0;\n}\n\n.selector-add, .selector-remove {\n    width: 16px;\n    height: 16px;\n    display: block;\n    text-indent: -3000px;\n    overflow: hidden;\n}\n\n.selector-add {\n    background: url(../img/selector-icons.gif) 0 -161px no-repeat;\n    cursor: default;\n    margin-bottom: 2px;\n}\n\n.active.selector-add {\n    background: url(../img/selector-icons.gif) 0 -187px no-repeat;\n    cursor: pointer;\n}\n\n.selector-remove {\n    background: url(../img/selector-icons.gif) 0 -109px no-repeat;\n    cursor: default;\n}\n\n.active.selector-remove {\n    background: url(../img/selector-icons.gif) 0 -135px no-repeat;\n    cursor: pointer;\n}\n\na.selector-chooseall, a.selector-clearall {\n    display: inline-block;\n    text-align: left;\n    margin-left: auto;\n    margin-right: auto;\n    font-weight: bold;\n    color: #666;\n}\n\na.selector-chooseall {\n    padding: 3px 18px 3px 0;\n}\n\na.selector-clearall {\n    padding: 3px 0 3px 18px;\n}\n\na.active.selector-chooseall:hover, a.active.selector-clearall:hover {\n    color: #036;\n}\n\na.selector-chooseall {\n    background: url(../img/selector-icons.gif) right -263px no-repeat;\n    cursor: default;\n}\n\na.active.selector-chooseall {\n    background: url(../img/selector-icons.gif) right -289px no-repeat;\n    cursor: pointer;\n}\n\na.selector-clearall {\n    background: url(../img/selector-icons.gif) left -211px no-repeat;\n    cursor: default;\n}\n\na.active.selector-clearall {\n    background: url(../img/selector-icons.gif) left -237px no-repeat;\n    cursor: pointer;\n}\n\n/* STACKED SELECTORS */\n\n.stacked {\n    float: left;\n    width: 500px;\n}\n\n.stacked select {\n    width: 480px;\n    height: 10.1em;\n}\n\n.stacked .selector-available, .stacked .selector-chosen {\n    width: 480px;\n}\n\n.stacked .selector-available {\n    margin-bottom: 0;\n}\n\n.stacked .selector-available input {\n    width: 442px;\n}\n\n.stacked ul.selector-chooser {\n    height: 22px;\n    width: 50px;\n    margin: 0 0 3px 40%;\n    background-color: #eee;\n    border-radius: 10px;\n}\n\n.stacked .selector-chooser li {\n    float: left;\n    padding: 3px 3px 3px 5px;\n}\n\n.stacked .selector-chooseall, .stacked .selector-clearall {\n    display: none;\n}\n\n.stacked .selector-add {\n    background: url(../img/selector-icons.gif) 0 -57px no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-add {\n    background: url(../img/selector-icons.gif) 0 -83px no-repeat;\n    cursor: pointer;\n}\n\n.stacked .selector-remove {\n    background: url(../img/selector-icons.gif) 0 -5px no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-remove {\n    background: url(../img/selector-icons.gif) 0 -31px no-repeat;\n    cursor: pointer;\n}\n\n/* DATE AND TIME */\n\np.datetime {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: #666;\n    font-size: 11px;\n    font-weight: bold;\n}\n\n.datetime span {\n    font-size: 11px;\n    color: #ccc;\n    font-weight: normal;\n    white-space: nowrap;\n}\n\ntable p.datetime {\n    font-size: 10px;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n/* URL */\n\np.url {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: #666;\n    font-size: 11px;\n    font-weight: bold;\n}\n\n.url a {\n    font-weight: normal;\n}\n\n/* FILE UPLOADS */\n\np.file-upload {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: #666;\n    font-size: 11px;\n    font-weight: bold;\n}\n\n.file-upload a {\n    font-weight: normal;\n}\n\n.file-upload .deletelink {\n    margin-left: 5px;\n}\n\nspan.clearable-file-input label {\n    color: #333;\n    font-size: 11px;\n    display: inline;\n    float: none;\n}\n\n/* CALENDARS & CLOCKS */\n\n.calendarbox, .clockbox {\n    margin: 5px auto;\n    font-size: 11px;\n    width: 16em;\n    text-align: center;\n    background: white;\n    position: relative;\n}\n\n.clockbox {\n    width: auto;\n}\n\n.calendar {\n    margin: 0;\n    padding: 0;\n}\n\n.calendar table {\n    margin: 0;\n    padding: 0;\n    border-collapse: collapse;\n    background: white;\n    width: 100%;\n}\n\n.calendar caption, .calendarbox h2 {\n    margin: 0;\n    font-size: 11px;\n    text-align: center;\n    border-top: none;\n}\n\n.calendar th {\n    font-size: 10px;\n    color: #666;\n    padding: 2px 3px;\n    text-align: center;\n    background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;\n    border-bottom: 1px solid #ddd;\n}\n\n.calendar td {\n    font-size: 11px;\n    text-align: center;\n    padding: 0;\n    border-top: 1px solid #eee;\n    border-bottom: none;\n}\n\n.calendar td.selected a {\n    background: #C9DBED;\n}\n\n.calendar td.nonday {\n    background: #efefef;\n}\n\n.calendar td.today a {\n    background: #ffc;\n}\n\n.calendar td a, .timelist a {\n    display: block;\n    font-weight: bold;\n    padding: 4px;\n    text-decoration: none;\n    color: #444;\n}\n\n.calendar td a:hover, .timelist a:hover {\n    background: #5b80b2;\n    color: white;\n}\n\n.calendar td a:active, .timelist a:active {\n    background: #036;\n    color: white;\n}\n\n.calendarnav {\n    font-size: 10px;\n    text-align: center;\n    color: #ccc;\n    margin: 0;\n    padding: 1px 3px;\n}\n\n.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover {\n    color: #999;\n}\n\n.calendar-shortcuts {\n    background: white;\n    font-size: 10px;\n    line-height: 11px;\n    border-top: 1px solid #eee;\n    padding: 3px 0 4px;\n    color: #ccc;\n}\n\n.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {\n    display: block;\n    position: absolute;\n    font-weight: bold;\n    font-size: 12px;\n    background: #C9DBED url(../img/default-bg.gif) bottom left repeat-x;\n    padding: 1px 4px 2px 4px;\n    color: white;\n}\n\n.calendarnav-previous:hover, .calendarnav-next:hover {\n    background: #036;\n}\n\n.calendarnav-previous {\n    top: 0;\n    left: 0;\n}\n\n.calendarnav-next {\n    top: 0;\n    right: 0;\n}\n\n.calendar-cancel {\n    margin: 0 !important;\n    padding: 0 !important;\n    font-size: 10px;\n    background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;\n    border-top: 1px solid #ddd;\n}\n\n.calendar-cancel:hover {\n    background: #e1e1e1 url(../img/nav-bg-reverse.gif) 0 50% repeat-x;\n}\n\n.calendar-cancel a {\n    color: black;\n    display: block;\n}\n\nul.timelist, .timelist li {\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n}\n\n.timelist a {\n    padding: 2px;\n}\n\n/* INLINE ORDERER */\n\nul.orderer {\n    position: relative;\n    padding: 0 !important;\n    margin: 0 !important;\n    list-style-type: none;\n}\n\nul.orderer li {\n    list-style-type: none;\n    display: block;\n    padding: 0;\n    margin: 0;\n    border: 1px solid #bbb;\n    border-width: 0 1px 1px 0;\n    white-space: nowrap;\n    overflow: hidden;\n    background: #e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y;\n}\n\nul.orderer li:hover {\n    cursor: move;\n    background-color: #ddd;\n}\n\nul.orderer li a.selector {\n    margin-left: 12px;\n    overflow: hidden;\n    width: 83%;\n    font-size: 10px !important;\n    padding: 0.6em 0;\n}\n\nul.orderer li a:link, ul.orderer li a:visited {\n    color: #333;\n}\n\nul.orderer li .inline-deletelink {\n    position: absolute;\n    right: 4px;\n    margin-top: 0.6em;\n}\n\nul.orderer li.selected {\n    background-color: #f8f8f8;\n    border-right-color: #f8f8f8;\n}\n\nul.orderer li.deleted {\n    background: #bbb url(../img/deleted-overlay.gif);\n}\n\nul.orderer li.deleted a:link, ul.orderer li.deleted a:visited {\n    color: #888;\n}\n\nul.orderer li.deleted .inline-deletelink {\n    background-image: url(../img/inline-restore.png);\n}\n\nul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover {\n    cursor: default;\n}\n\n/* EDIT INLINE */\n\n.inline-deletelink {\n    float: right;\n    text-indent: -9999px;\n    background: transparent url(../img/inline-delete.png) no-repeat;\n    width: 15px;\n    height: 15px;\n    border: 0px none;\n    outline: 0; /* Remove dotted border around link */\n}\n\n.inline-deletelink:hover {\n    background-position: -15px 0;\n    cursor: pointer;\n}\n\n.editinline button.addlink {\n    border: 0px none;\n    color: #5b80b2;\n    font-size: 100%;\n    cursor: pointer;\n}\n\n.editinline button.addlink:hover {\n    color: #036;\n    cursor: pointer;\n}\n\n.editinline table .help {\n    text-align: right;\n    float: right;\n    padding-left: 2em;\n}\n\n.editinline tfoot .addlink {\n    white-space: nowrap;\n}\n\n.editinline table thead th:last-child {\n    border-left: none;\n}\n\n.editinline tr.deleted {\n    background: #ddd url(../img/deleted-overlay.gif);\n}\n\n.editinline tr.deleted .inline-deletelink {\n    background-image: url(../img/inline-restore.png);\n}\n\n.editinline tr.deleted td:hover {\n    cursor: default;\n}\n\n.editinline tr.deleted td:first-child {\n    background-image: none !important;\n}\n\n/* EDIT INLINE - STACKED */\n\n.editinline-stacked {\n    min-width: 758px;\n}\n\n.editinline-stacked .inline-object {\n    margin-left: 210px;\n    background: white;\n}\n\n.editinline-stacked .inline-source {\n    float: left;\n    width: 200px;\n    background: #f8f8f8;\n}\n\n.editinline-stacked .inline-splitter {\n    float: left;\n    width: 9px;\n    background: #f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat;\n    border-right: 1px solid #ccc;\n}\n\n.editinline-stacked .controls {\n    clear: both;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    padding: 3px 4px;\n    font-size: 11px;\n    border-top: 1px solid #ddd;\n}\n\n/* RELATED WIDGET WRAPPER */\n.related-widget-wrapper {\n    float: left;       /* display properly in form rows with multiple fields */\n    overflow: hidden;  /* clear floated contents */\n}\n\n.related-widget-wrapper-link {\n    opacity: 0.3;\n}\n\n.related-widget-wrapper-link:link {\n    opacity: 1;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/LICENSE-JQUERY.txt",
    "content": "Copyright (c) 2010 John Resig, http://jquery.com/\n \nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n \nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/SelectBox.js",
    "content": "var SelectBox = {\n    cache: new Object(),\n    init: function(id) {\n        var box = document.getElementById(id);\n        var node;\n        SelectBox.cache[id] = new Array();\n        var cache = SelectBox.cache[id];\n        for (var i = 0; (node = box.options[i]); i++) {\n            cache.push({value: node.value, text: node.text, displayed: 1});\n        }\n    },\n    redisplay: function(id) {\n        // Repopulate HTML select box from cache\n        var box = document.getElementById(id);\n        box.options.length = 0; // clear all options\n        for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) {\n            var node = SelectBox.cache[id][i];\n            if (node.displayed) {\n                var new_option = new Option(node.text, node.value, false, false);\n                // Shows a tooltip when hovering over the option\n                new_option.setAttribute(\"title\", node.text);\n                box.options[box.options.length] = new_option;\n            }\n        }\n    },\n    filter: function(id, text) {\n        // Redisplay the HTML select box, displaying only the choices containing ALL\n        // the words in text. (It's an AND search.)\n        var tokens = text.toLowerCase().split(/\\s+/);\n        var node, token;\n        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {\n            node.displayed = 1;\n            for (var j = 0; (token = tokens[j]); j++) {\n                if (node.text.toLowerCase().indexOf(token) == -1) {\n                    node.displayed = 0;\n                }\n            }\n        }\n        SelectBox.redisplay(id);\n    },\n    delete_from_cache: function(id, value) {\n        var node, delete_index = null;\n        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {\n            if (node.value == value) {\n                delete_index = i;\n                break;\n            }\n        }\n        var j = SelectBox.cache[id].length - 1;\n        for (var i = delete_index; i < j; i++) {\n            SelectBox.cache[id][i] = SelectBox.cache[id][i+1];\n        }\n        SelectBox.cache[id].length--;\n    },\n    add_to_cache: function(id, option) {\n        SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});\n    },\n    cache_contains: function(id, value) {\n        // Check if an item is contained in the cache\n        var node;\n        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {\n            if (node.value == value) {\n                return true;\n            }\n        }\n        return false;\n    },\n    move: function(from, to) {\n        var from_box = document.getElementById(from);\n        var to_box = document.getElementById(to);\n        var option;\n        for (var i = 0; (option = from_box.options[i]); i++) {\n            if (option.selected && SelectBox.cache_contains(from, option.value)) {\n                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});\n                SelectBox.delete_from_cache(from, option.value);\n            }\n        }\n        SelectBox.redisplay(from);\n        SelectBox.redisplay(to);\n    },\n    move_all: function(from, to) {\n        var from_box = document.getElementById(from);\n        var to_box = document.getElementById(to);\n        var option;\n        for (var i = 0; (option = from_box.options[i]); i++) {\n            if (SelectBox.cache_contains(from, option.value)) {\n                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});\n                SelectBox.delete_from_cache(from, option.value);\n            }\n        }\n        SelectBox.redisplay(from);\n        SelectBox.redisplay(to);\n    },\n    sort: function(id) {\n        SelectBox.cache[id].sort( function(a, b) {\n            a = a.text.toLowerCase();\n            b = b.text.toLowerCase();\n            try {\n                if (a > b) return 1;\n                if (a < b) return -1;\n            }\n            catch (e) {\n                // silently fail on IE 'unknown' exception\n            }\n            return 0;\n        } );\n    },\n    select_all: function(id) {\n        var box = document.getElementById(id);\n        for (var i = 0; i < box.options.length; i++) {\n            box.options[i].selected = 'selected';\n        }\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/SelectFilter2.js",
    "content": "/*\nSelectFilter2 - Turns a multiple-select box into a filter interface.\n\nRequires core.js, SelectBox.js and addevent.js.\n*/\n(function($) {\nfunction findForm(node) {\n    // returns the node of the form containing the given node\n    if (node.tagName.toLowerCase() != 'form') {\n        return findForm(node.parentNode);\n    }\n    return node;\n}\n\nwindow.SelectFilter = {\n    init: function(field_id, field_name, is_stacked, admin_static_prefix) {\n        if (field_id.match(/__prefix__/)){\n            // Don't initialize on empty forms.\n            return;\n        }\n        var from_box = document.getElementById(field_id);\n        from_box.id += '_from'; // change its ID\n        from_box.className = 'filtered';\n\n        var ps = from_box.parentNode.getElementsByTagName('p');\n        for (var i=0; i<ps.length; i++) {\n            if (ps[i].className.indexOf(\"info\") != -1) {\n                // Remove <p class=\"info\">, because it just gets in the way.\n                from_box.parentNode.removeChild(ps[i]);\n            } else if (ps[i].className.indexOf(\"help\") != -1) {\n                // Move help text up to the top so it isn't below the select\n                // boxes or wrapped off on the side to the right of the add\n                // button:\n                from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild);\n            }\n        }\n\n        // <div class=\"selector\"> or <div class=\"selector stacked\">\n        var selector_div = quickElement('div', from_box.parentNode);\n        selector_div.className = is_stacked ? 'selector stacked' : 'selector';\n\n        // <div class=\"selector-available\">\n        var selector_available = quickElement('div', selector_div);\n        selector_available.className = 'selector-available';\n        var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));\n        quickElement('img', title_available, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the \"Choose\" arrow between the two boxes.'), [field_name]));\n\n        var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');\n        filter_p.className = 'selector-filter';\n\n        var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + \"_input\");\n\n        var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_static_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext(\"Type into this box to filter down the list of available %s.\"), [field_name]));\n\n        filter_p.appendChild(document.createTextNode(' '));\n\n        var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext(\"Filter\"));\n        filter_input.id = field_id + '_input';\n\n        selector_available.appendChild(from_box);\n        var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript: (function(){ SelectBox.move_all(\"' + field_id + '_from\", \"' + field_id + '_to\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_add_all_link');\n        choose_all.className = 'selector-chooseall';\n\n        // <ul class=\"selector-chooser\">\n        var selector_chooser = quickElement('ul', selector_div);\n        selector_chooser.className = 'selector-chooser';\n        var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript: (function(){ SelectBox.move(\"' + field_id + '_from\",\"' + field_id + '_to\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_add_link');\n        add_link.className = 'selector-add';\n        var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move(\"' + field_id + '_to\",\"' + field_id + '_from\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_remove_link');\n        remove_link.className = 'selector-remove';\n\n        // <div class=\"selector-chosen\">\n        var selector_chosen = quickElement('div', selector_div);\n        selector_chosen.className = 'selector-chosen';\n        var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));\n        quickElement('img', title_chosen, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of chosen %s. You may remove some by selecting them in the box below and then clicking the \"Remove\" arrow between the two boxes.'), [field_name]));\n\n        var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));\n        to_box.className = 'filtered';\n        var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript: (function() { SelectBox.move_all(\"' + field_id + '_to\", \"' + field_id + '_from\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_remove_all_link');\n        clear_all.className = 'selector-clearall';\n\n        from_box.setAttribute('name', from_box.getAttribute('name') + '_old');\n\n        // Set up the JavaScript event handlers for the select box filter interface\n        addEvent(filter_input, 'keypress', function(e) { SelectFilter.filter_key_press(e, field_id); });\n        addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });\n        addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });\n        addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });\n        addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });\n        addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });\n        addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });\n        addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });\n        SelectBox.init(field_id + '_from');\n        SelectBox.init(field_id + '_to');\n        // Move selected from_box options to to_box\n        SelectBox.move(field_id + '_from', field_id + '_to');\n\n        if (!is_stacked) {\n            // In horizontal mode, give the same height to the two boxes.\n            var j_from_box = $(from_box);\n            var j_to_box = $(to_box);\n            var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }\n            if (j_from_box.outerHeight() > 0) {\n                resize_filters(); // This fieldset is already open. Resize now.\n            } else {\n                // This fieldset is probably collapsed. Wait for its 'show' event.\n                j_to_box.closest('fieldset').one('show.fieldset', resize_filters);\n            }\n        }\n\n        // Initial icon refresh\n        SelectFilter.refresh_icons(field_id);\n    },\n    refresh_icons: function(field_id) {\n        var from = $('#' + field_id + '_from');\n        var to = $('#' + field_id + '_to');\n        var is_from_selected = from.find('option:selected').length > 0;\n        var is_to_selected = to.find('option:selected').length > 0;\n        // Active if at least one item is selected\n        $('#' + field_id + '_add_link').toggleClass('active', is_from_selected);\n        $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected);\n        // Active if the corresponding box isn't empty\n        $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0);\n        $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0);\n    },\n    filter_key_press: function(event, field_id) {\n        var from = document.getElementById(field_id + '_from');\n        // don't submit form if user pressed Enter\n        if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {\n            from.selectedIndex = 0;\n            SelectBox.move(field_id + '_from', field_id + '_to');\n            from.selectedIndex = 0;\n            event.preventDefault()\n            return false;\n        }\n    },\n    filter_key_up: function(event, field_id) {\n        var from = document.getElementById(field_id + '_from');\n        var temp = from.selectedIndex;\n        SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);\n        from.selectedIndex = temp;\n        return true;\n    },\n    filter_key_down: function(event, field_id) {\n        var from = document.getElementById(field_id + '_from');\n        // right arrow -- move across\n        if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) {\n            var old_index = from.selectedIndex;\n            SelectBox.move(field_id + '_from', field_id + '_to');\n            from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index;\n            return false;\n        }\n        // down arrow -- wrap around\n        if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) {\n            from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;\n        }\n        // up arrow -- wrap around\n        if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) {\n            from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1;\n        }\n        return true;\n    }\n}\n\n})(django.jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/actions.js",
    "content": "(function($) {\n\tvar lastChecked;\n\n\t$.fn.actions = function(opts) {\n\t\tvar options = $.extend({}, $.fn.actions.defaults, opts);\n\t\tvar actionCheckboxes = $(this);\n\t\tvar list_editable_changed = false;\n\t\tvar checker = function(checked) {\n\t\t\tif (checked) {\n\t\t\t\tshowQuestion();\n\t\t\t} else {\n\t\t\t\treset();\n\t\t\t}\n\t\t\t$(actionCheckboxes).prop(\"checked\", checked)\n\t\t\t\t.parent().parent().toggleClass(options.selectedClass, checked);\n\t\t},\n\t\tupdateCounter = function() {\n\t\t\tvar sel = $(actionCheckboxes).filter(\":checked\").length;\n\t\t\t// _actions_icnt is defined in the generated HTML\n\t\t\t// and contains the total amount of objects in the queryset\n\t\t\t$(options.counterContainer).html(interpolate(\n\t\t\tngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {\n\t\t\t\tsel: sel,\n\t\t\t\tcnt: _actions_icnt\n\t\t\t}, true));\n\t\t\t$(options.allToggle).prop(\"checked\", function() {\n\t\t\t\tvar value;\n\t\t\t\tif (sel == actionCheckboxes.length) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t\tshowQuestion();\n\t\t\t\t} else {\n\t\t\t\t\tvalue = false;\n\t\t\t\t\tclearAcross();\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t});\n\t\t},\n\t\tshowQuestion = function() {\n\t\t\t$(options.acrossClears).hide();\n\t\t\t$(options.acrossQuestions).show();\n\t\t\t$(options.allContainer).hide();\n\t\t},\n\t\tshowClear = function() {\n\t\t\t$(options.acrossClears).show();\n\t\t\t$(options.acrossQuestions).hide();\n\t\t\t$(options.actionContainer).toggleClass(options.selectedClass);\n\t\t\t$(options.allContainer).show();\n\t\t\t$(options.counterContainer).hide();\n\t\t},\n\t\treset = function() {\n\t\t\t$(options.acrossClears).hide();\n\t\t\t$(options.acrossQuestions).hide();\n\t\t\t$(options.allContainer).hide();\n\t\t\t$(options.counterContainer).show();\n\t\t},\n\t\tclearAcross = function() {\n\t\t\treset();\n\t\t\t$(options.acrossInput).val(0);\n\t\t\t$(options.actionContainer).removeClass(options.selectedClass);\n\t\t};\n\t\t// Show counter by default\n\t\t$(options.counterContainer).show();\n\t\t// Check state of checkboxes and reinit state if needed\n\t\t$(this).filter(\":checked\").each(function(i) {\n\t\t\t$(this).parent().parent().toggleClass(options.selectedClass);\n\t\t\tupdateCounter();\n\t\t\tif ($(options.acrossInput).val() == 1) {\n\t\t\t\tshowClear();\n\t\t\t}\n\t\t});\n\t\t$(options.allToggle).show().click(function() {\n\t\t\tchecker($(this).prop(\"checked\"));\n\t\t\tupdateCounter();\n\t\t});\n\t\t$(\"a\", options.acrossQuestions).click(function(event) {\n\t\t\tevent.preventDefault();\n\t\t\t$(options.acrossInput).val(1);\n\t\t\tshowClear();\n\t\t});\n\t\t$(\"a\", options.acrossClears).click(function(event) {\n\t\t\tevent.preventDefault();\n\t\t\t$(options.allToggle).prop(\"checked\", false);\n\t\t\tclearAcross();\n\t\t\tchecker(0);\n\t\t\tupdateCounter();\n\t\t});\n\t\tlastChecked = null;\n\t\t$(actionCheckboxes).click(function(event) {\n\t\t\tif (!event) { event = window.event; }\n\t\t\tvar target = event.target ? event.target : event.srcElement;\n\t\t\tif (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey === true) {\n\t\t\t\tvar inrange = false;\n\t\t\t\t$(lastChecked).prop(\"checked\", target.checked)\n\t\t\t\t\t.parent().parent().toggleClass(options.selectedClass, target.checked);\n\t\t\t\t$(actionCheckboxes).each(function() {\n\t\t\t\t\tif ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) {\n\t\t\t\t\t\tinrange = (inrange) ? false : true;\n\t\t\t\t\t}\n\t\t\t\t\tif (inrange) {\n\t\t\t\t\t\t$(this).prop(\"checked\", target.checked)\n\t\t\t\t\t\t\t.parent().parent().toggleClass(options.selectedClass, target.checked);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t$(target).parent().parent().toggleClass(options.selectedClass, target.checked);\n\t\t\tlastChecked = target;\n\t\t\tupdateCounter();\n\t\t});\n\t\t$('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() {\n\t\t\tlist_editable_changed = true;\n\t\t});\n\t\t$('form#changelist-form button[name=\"index\"]').click(function(event) {\n\t\t\tif (list_editable_changed) {\n\t\t\t\treturn confirm(gettext(\"You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.\"));\n\t\t\t}\n\t\t});\n\t\t$('form#changelist-form input[name=\"_save\"]').click(function(event) {\n\t\t\tvar action_changed = false;\n\t\t\t$('select option:selected', options.actionContainer).each(function() {\n\t\t\t\tif ($(this).val()) {\n\t\t\t\t\taction_changed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (action_changed) {\n\t\t\t\tif (list_editable_changed) {\n\t\t\t\t\treturn confirm(gettext(\"You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.\"));\n\t\t\t\t} else {\n\t\t\t\t\treturn confirm(gettext(\"You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.\"));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\t/* Setup plugin defaults */\n\t$.fn.actions.defaults = {\n\t\tactionContainer: \"div.actions\",\n\t\tcounterContainer: \"span.action-counter\",\n\t\tallContainer: \"div.actions span.all\",\n\t\tacrossInput: \"div.actions input.select-across\",\n\t\tacrossQuestions: \"div.actions span.question\",\n\t\tacrossClears: \"div.actions span.clear\",\n\t\tallToggle: \"#action-toggle\",\n\t\tselectedClass: \"selected\"\n\t};\n})(django.jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/admin/DateTimeShortcuts.js",
    "content": "// Inserts shortcut buttons after all of the following:\n//     <input type=\"text\" class=\"vDateField\">\n//     <input type=\"text\" class=\"vTimeField\">\n\nvar DateTimeShortcuts = {\n    calendars: [],\n    calendarInputs: [],\n    clockInputs: [],\n    dismissClockFunc: [],\n    dismissCalendarFunc: [],\n    calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled\n    calendarDivName2: 'calendarin',  // name of <div> that contains calendar\n    calendarLinkName: 'calendarlink',// name of the link that is used to toggle\n    clockDivName: 'clockbox',        // name of clock <div> that gets toggled\n    clockLinkName: 'clocklink',      // name of the link that is used to toggle\n    shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts\n    timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch\n    timezoneOffset: 0,\n    admin_media_prefix: '',\n    init: function() {\n        // Get admin_media_prefix by grabbing it off the window object. It's\n        // set in the admin/base.html template, so if it's not there, someone's\n        // overridden the template. In that case, we'll set a clearly-invalid\n        // value in the hopes that someone will examine HTTP requests and see it.\n        if (window.__admin_media_prefix__ != undefined) {\n            DateTimeShortcuts.admin_media_prefix = window.__admin_media_prefix__;\n        } else {\n            DateTimeShortcuts.admin_media_prefix = '/missing-admin-media-prefix/';\n        }\n\n        if (window.__admin_utc_offset__ != undefined) {\n            var serverOffset = window.__admin_utc_offset__;\n            var localOffset = new Date().getTimezoneOffset() * -60;\n            DateTimeShortcuts.timezoneOffset = localOffset - serverOffset;\n        }\n\n        var inputs = document.getElementsByTagName('input');\n        for (i=0; i<inputs.length; i++) {\n            var inp = inputs[i];\n            if (inp.getAttribute('type') == 'text' && inp.className.match(/vTimeField/)) {\n                DateTimeShortcuts.addClock(inp);\n                DateTimeShortcuts.addTimezoneWarning(inp);\n            }\n            else if (inp.getAttribute('type') == 'text' && inp.className.match(/vDateField/)) {\n                DateTimeShortcuts.addCalendar(inp);\n                DateTimeShortcuts.addTimezoneWarning(inp);\n            }\n        }\n    },\n    // Return the current time while accounting for the server timezone.\n    now: function() {\n        if (window.__admin_utc_offset__ != undefined) {\n            var serverOffset = window.__admin_utc_offset__;\n            var localNow = new Date();\n            var localOffset = localNow.getTimezoneOffset() * -60;\n            localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset));\n            return localNow;\n        } else {\n            return new Date();\n        }\n    },\n    // Add a warning when the time zone in the browser and backend do not match.\n    addTimezoneWarning: function(inp) {\n        var $ = django.jQuery;\n        var warningClass = DateTimeShortcuts.timezoneWarningClass;\n        var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600;\n\n        // Only warn if there is a time zone mismatch.\n        if (!timezoneOffset)\n            return;\n\n        // Check if warning is already there.\n        if ($(inp).siblings('.' + warningClass).length)\n            return;\n\n        var message;\n        if (timezoneOffset > 0) {\n            message = ngettext(\n                'Note: You are %s hour ahead of server time.',\n                'Note: You are %s hours ahead of server time.',\n                timezoneOffset\n            );\n        }\n        else {\n            timezoneOffset *= -1\n            message = ngettext(\n                'Note: You are %s hour behind server time.',\n                'Note: You are %s hours behind server time.',\n                timezoneOffset\n            );\n        }\n        message = interpolate(message, [timezoneOffset]);\n\n        var $warning = $('<span>');\n        $warning.attr('class', warningClass);\n        $warning.text(message);\n\n        $(inp).parent()\n            .append($('<br>'))\n            .append($warning)\n    },\n    // Add clock widget to a given field\n    addClock: function(inp) {\n        var num = DateTimeShortcuts.clockInputs.length;\n        DateTimeShortcuts.clockInputs[num] = inp;\n        DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };\n\n        // Shortcut links (clock icon and \"Now\" link)\n        var shortcuts_span = document.createElement('span');\n        shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n        var now_link = document.createElement('a');\n        now_link.setAttribute('href', \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", -1);\");\n        now_link.appendChild(document.createTextNode(gettext('Now')));\n        var clock_link = document.createElement('a');\n        clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');\n        clock_link.id = DateTimeShortcuts.clockLinkName + num;\n        quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif', 'alt', gettext('Clock'));\n        shortcuts_span.appendChild(document.createTextNode('\\240'));\n        shortcuts_span.appendChild(now_link);\n        shortcuts_span.appendChild(document.createTextNode('\\240|\\240'));\n        shortcuts_span.appendChild(clock_link);\n\n        // Create clock link div\n        //\n        // Markup looks like:\n        // <div id=\"clockbox1\" class=\"clockbox module\">\n        //     <h2>Choose a time</h2>\n        //     <ul class=\"timelist\">\n        //         <li><a href=\"#\">Now</a></li>\n        //         <li><a href=\"#\">Midnight</a></li>\n        //         <li><a href=\"#\">6 a.m.</a></li>\n        //         <li><a href=\"#\">Noon</a></li>\n        //     </ul>\n        //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n        // </div>\n\n        var clock_box = document.createElement('div');\n        clock_box.style.display = 'none';\n        clock_box.style.position = 'absolute';\n        clock_box.className = 'clockbox module';\n        clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);\n        document.body.appendChild(clock_box);\n        addEvent(clock_box, 'click', cancelEventPropagation);\n\n        quickElement('h2', clock_box, gettext('Choose a time'));\n        var time_list = quickElement('ul', clock_box);\n        time_list.className = 'timelist';\n        quickElement(\"a\", quickElement(\"li\", time_list), gettext(\"Now\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", -1);\");\n        quickElement(\"a\", quickElement(\"li\", time_list), gettext(\"Midnight\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", 0);\");\n        quickElement(\"a\", quickElement(\"li\", time_list), gettext(\"6 a.m.\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", 6);\");\n        quickElement(\"a\", quickElement(\"li\", time_list), gettext(\"Noon\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", 12);\");\n\n        var cancel_p = quickElement('p', clock_box);\n        cancel_p.className = 'calendar-cancel';\n        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');\n        django.jQuery(document).bind('keyup', function(event) {\n            if (event.which == 27) {\n                // ESC key closes popup\n                DateTimeShortcuts.dismissClock(num);\n                event.preventDefault();\n            }\n        });\n    },\n    openClock: function(num) {\n        var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)\n        var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)\n\n        // Recalculate the clockbox position\n        // is it left-to-right or right-to-left layout ?\n        if (getStyle(document.body,'direction')!='rtl') {\n            clock_box.style.left = findPosX(clock_link) + 17 + 'px';\n        }\n        else {\n            // since style's width is in em, it'd be tough to calculate\n            // px value of it. let's use an estimated px for now\n            // TODO: IE returns wrong value for findPosX when in rtl mode\n            //       (it returns as it was left aligned), needs to be fixed.\n            clock_box.style.left = findPosX(clock_link) - 110 + 'px';\n        }\n        clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';\n\n        // Show the clock box\n        clock_box.style.display = 'block';\n        addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);\n    },\n    dismissClock: function(num) {\n       document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';\n       removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);\n    },\n    handleClockQuicklink: function(num, val) {\n       var d;\n       if (val == -1) {\n           d = DateTimeShortcuts.now();\n       }\n       else {\n           d = new Date(1970, 1, 1, val, 0, 0, 0)\n       }\n       DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]);\n       DateTimeShortcuts.clockInputs[num].focus();\n       DateTimeShortcuts.dismissClock(num);\n    },\n    // Add calendar widget to a given field.\n    addCalendar: function(inp) {\n        var num = DateTimeShortcuts.calendars.length;\n\n        DateTimeShortcuts.calendarInputs[num] = inp;\n        DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };\n\n        // Shortcut links (calendar icon and \"Today\" link)\n        var shortcuts_span = document.createElement('span');\n        shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n        var today_link = document.createElement('a');\n        today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');\n        today_link.appendChild(document.createTextNode(gettext('Today')));\n        var cal_link = document.createElement('a');\n        cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');\n        cal_link.id = DateTimeShortcuts.calendarLinkName + num;\n        quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_calendar.gif', 'alt', gettext('Calendar'));\n        shortcuts_span.appendChild(document.createTextNode('\\240'));\n        shortcuts_span.appendChild(today_link);\n        shortcuts_span.appendChild(document.createTextNode('\\240|\\240'));\n        shortcuts_span.appendChild(cal_link);\n\n        // Create calendarbox div.\n        //\n        // Markup looks like:\n        //\n        // <div id=\"calendarbox3\" class=\"calendarbox module\">\n        //     <h2>\n        //           <a href=\"#\" class=\"link-previous\">&lsaquo;</a>\n        //           <a href=\"#\" class=\"link-next\">&rsaquo;</a> February 2003\n        //     </h2>\n        //     <div class=\"calendar\" id=\"calendarin3\">\n        //         <!-- (cal) -->\n        //     </div>\n        //     <div class=\"calendar-shortcuts\">\n        //          <a href=\"#\">Yesterday</a> | <a href=\"#\">Today</a> | <a href=\"#\">Tomorrow</a>\n        //     </div>\n        //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n        // </div>\n        var cal_box = document.createElement('div');\n        cal_box.style.display = 'none';\n        cal_box.style.position = 'absolute';\n        cal_box.className = 'calendarbox module';\n        cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);\n        document.body.appendChild(cal_box);\n        addEvent(cal_box, 'click', cancelEventPropagation);\n\n        // next-prev links\n        var cal_nav = quickElement('div', cal_box);\n        var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev('+num+');');\n        cal_nav_prev.className = 'calendarnav-previous';\n        var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');');\n        cal_nav_next.className = 'calendarnav-next';\n\n        // main box\n        var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);\n        cal_main.className = 'calendar';\n        DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));\n        DateTimeShortcuts.calendars[num].drawCurrent();\n\n        // calendar shortcuts\n        var shortcuts = quickElement('div', cal_box);\n        shortcuts.className = 'calendar-shortcuts';\n        quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);');\n        shortcuts.appendChild(document.createTextNode('\\240|\\240'));\n        quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');\n        shortcuts.appendChild(document.createTextNode('\\240|\\240'));\n        quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);');\n\n        // cancel bar\n        var cancel_p = quickElement('p', cal_box);\n        cancel_p.className = 'calendar-cancel';\n        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');\n        django.jQuery(document).bind('keyup', function(event) {\n            if (event.which == 27) {\n                // ESC key closes popup\n                DateTimeShortcuts.dismissCalendar(num);\n                event.preventDefault();\n            }\n        });\n    },\n    openCalendar: function(num) {\n        var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)\n        var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)\n        var inp = DateTimeShortcuts.calendarInputs[num];\n\n        // Determine if the current value in the input has a valid date.\n        // If so, draw the calendar with that date's year and month.\n        if (inp.value) {\n            var format = get_format('DATE_INPUT_FORMATS')[0];\n            var selected = inp.value.strptime(format);\n            var year = selected.getFullYear();\n            var month = selected.getMonth() + 1;\n            var re = /\\d{4}/\n            if (re.test(year.toString()) && month >= 1 && month <= 12) {\n                DateTimeShortcuts.calendars[num].drawDate(month, year, selected);\n            }\n        }\n\n        // Recalculate the clockbox position\n        // is it left-to-right or right-to-left layout ?\n        if (getStyle(document.body,'direction')!='rtl') {\n            cal_box.style.left = findPosX(cal_link) + 17 + 'px';\n        }\n        else {\n            // since style's width is in em, it'd be tough to calculate\n            // px value of it. let's use an estimated px for now\n            // TODO: IE returns wrong value for findPosX when in rtl mode\n            //       (it returns as it was left aligned), needs to be fixed.\n            cal_box.style.left = findPosX(cal_link) - 180 + 'px';\n        }\n        cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';\n\n        cal_box.style.display = 'block';\n        addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);\n    },\n    dismissCalendar: function(num) {\n        document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'none';\n        removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);\n    },\n    drawPrev: function(num) {\n        DateTimeShortcuts.calendars[num].drawPreviousMonth();\n    },\n    drawNext: function(num) {\n        DateTimeShortcuts.calendars[num].drawNextMonth();\n    },\n    handleCalendarCallback: function(num) {\n        var format = get_format('DATE_INPUT_FORMATS')[0];\n        // the format needs to be escaped a little\n        format = format.replace('\\\\', '\\\\\\\\');\n        format = format.replace('\\r', '\\\\r');\n        format = format.replace('\\n', '\\\\n');\n        format = format.replace('\\t', '\\\\t');\n        format = format.replace(\"'\", \"\\\\'\");\n        return [\"function(y, m, d) { DateTimeShortcuts.calendarInputs[\",\n               num,\n               \"].value = new Date(y, m-1, d).strftime('\",\n               format,\n               \"');DateTimeShortcuts.calendarInputs[\",\n               num,\n               \"].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+\",\n               num,\n               \").style.display='none';}\"].join('');\n    },\n    handleCalendarQuickLink: function(num, offset) {\n       var d = DateTimeShortcuts.now();\n       d.setDate(d.getDate() + offset)\n       DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);\n       DateTimeShortcuts.calendarInputs[num].focus();\n       DateTimeShortcuts.dismissCalendar(num);\n    }\n}\n\naddEvent(window, 'load', DateTimeShortcuts.init);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/admin/RelatedObjectLookups.js",
    "content": "// Handles related-objects functionality: lookup link for raw_id_fields\n// and Add Another links.\n\nfunction html_unescape(text) {\n    // Unescape a string that was escaped using django.utils.html.escape.\n    text = text.replace(/&lt;/g, '<');\n    text = text.replace(/&gt;/g, '>');\n    text = text.replace(/&quot;/g, '\"');\n    text = text.replace(/&#39;/g, \"'\");\n    text = text.replace(/&amp;/g, '&');\n    return text;\n}\n\n// IE doesn't accept periods or dashes in the window name, but the element IDs\n// we use to generate popup window names may contain them, therefore we map them\n// to allowed characters in a reversible way so that we can locate the correct\n// element when the popup window is dismissed.\nfunction id_to_windowname(text) {\n    text = text.replace(/\\./g, '__dot__');\n    text = text.replace(/\\-/g, '__dash__');\n    return text;\n}\n\nfunction windowname_to_id(text) {\n    text = text.replace(/__dot__/g, '.');\n    text = text.replace(/__dash__/g, '-');\n    return text;\n}\n\nfunction showAdminPopup(triggeringLink, name_regexp) {\n    var name = triggeringLink.id.replace(name_regexp, '');\n    name = id_to_windowname(name);\n    var href = triggeringLink.href;\n    if (href.indexOf('?') == -1) {\n        href += '?_popup=1';\n    } else {\n        href  += '&_popup=1';\n    }\n    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');\n    win.focus();\n    return false;\n}\n\nfunction showRelatedObjectLookupPopup(triggeringLink) {\n    return showAdminPopup(triggeringLink, /^lookup_/);\n}\n\nfunction dismissRelatedLookupPopup(win, chosenId) {\n    var name = windowname_to_id(win.name);\n    var elem = document.getElementById(name);\n    if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {\n        elem.value += ',' + chosenId;\n    } else {\n        document.getElementById(name).value = chosenId;\n    }\n    win.close();\n}\n\nfunction showRelatedObjectPopup(triggeringLink) {\n    var name = triggeringLink.id.replace(/^(change|add|delete)_/, '');\n    name = id_to_windowname(name);\n    var href = triggeringLink.href;\n    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');\n    win.focus();\n    return false;\n}\n\nfunction dismissAddRelatedObjectPopup(win, newId, newRepr) {\n    // newId and newRepr are expected to have previously been escaped by\n    // django.utils.html.escape.\n    newId = html_unescape(newId);\n    newRepr = html_unescape(newRepr);\n    var name = windowname_to_id(win.name);\n    var elem = document.getElementById(name);\n    var o;\n    if (elem) {\n        var elemName = elem.nodeName.toUpperCase();\n        if (elemName == 'SELECT') {\n            o = new Option(newRepr, newId);\n            elem.options[elem.options.length] = o;\n            o.selected = true;\n        } else if (elemName == 'INPUT') {\n            if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {\n                elem.value += ',' + newId;\n            } else {\n                elem.value = newId;\n            }\n        }\n        // Trigger a change event to update related links if required.\n        django.jQuery(elem).trigger('change');\n    } else {\n        var toId = name + \"_to\";\n        o = new Option(newRepr, newId);\n        SelectBox.add_to_cache(toId, o);\n        SelectBox.redisplay(toId);\n    }\n    win.close();\n}\n\nfunction dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) {\n    objId = html_unescape(objId);\n    newRepr = html_unescape(newRepr);\n    var id = windowname_to_id(win.name).replace(/^edit_/, '');\n    var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);\n    var selects = django.jQuery(selectsSelector);\n    selects.find('option').each(function() {\n        if (this.value == objId) {\n            this.innerHTML = newRepr;\n            this.value = newId;\n        }\n    });\n    win.close();\n};\n\nfunction dismissDeleteRelatedObjectPopup(win, objId) {\n    objId = html_unescape(objId);\n    var id = windowname_to_id(win.name).replace(/^delete_/, '');\n    var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);\n    var selects = django.jQuery(selectsSelector);\n    selects.find('option').each(function() {\n        if (this.value == objId) {\n            django.jQuery(this).remove();\n        }\n    }).trigger('change');\n    win.close();\n};\n\n// Kept for backward compatibility\nshowAddAnotherPopup = showRelatedObjectPopup;\ndismissAddAnotherPopup = dismissAddRelatedObjectPopup;\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/calendar.js",
    "content": "/*\ncalendar.js - Calendar functions by Adrian Holovaty\ndepends on core.js for utility functions like removeChildren or quickElement\n*/\n\n// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions\nvar CalendarNamespace = {\n    monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),\n    daysOfWeek: gettext('S M T W T F S').split(' '),\n    firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),\n    isLeapYear: function(year) {\n        return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));\n    },\n    getDaysInMonth: function(month,year) {\n        var days;\n        if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {\n            days = 31;\n        }\n        else if (month==4 || month==6 || month==9 || month==11) {\n            days = 30;\n        }\n        else if (month==2 && CalendarNamespace.isLeapYear(year)) {\n            days = 29;\n        }\n        else {\n            days = 28;\n        }\n        return days;\n    },\n    draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999\n        var today = new Date();\n        var todayDay = today.getDate();\n        var todayMonth = today.getMonth()+1;\n        var todayYear = today.getFullYear();\n        var todayClass = '';\n\n        // Use UTC functions here because the date field does not contain time\n        // and using the UTC function variants prevent the local time offset\n        // from altering the date, specifically the day field.  For example:\n        //\n        // ```\n        // var x = new Date('2013-10-02');\n        // var day = x.getDate();\n        // ```\n        //\n        // The day variable above will be 1 instead of 2 in, say, US Pacific time\n        // zone.\n        var isSelectedMonth = false;\n        if (typeof selected != 'undefined') {\n            isSelectedMonth = (selected.getUTCFullYear() == year && (selected.getUTCMonth()+1) == month);\n        }\n\n        month = parseInt(month);\n        year = parseInt(year);\n        var calDiv = document.getElementById(div_id);\n        removeChildren(calDiv);\n        var calTable = document.createElement('table');\n        quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year);\n        var tableBody = quickElement('tbody', calTable);\n\n        // Draw days-of-week header\n        var tableRow = quickElement('tr', tableBody);\n        for (var i = 0; i < 7; i++) {\n            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);\n        }\n\n        var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();\n        var days = CalendarNamespace.getDaysInMonth(month, year);\n\n        // Draw blanks before first of month\n        tableRow = quickElement('tr', tableBody);\n        for (var i = 0; i < startingPos; i++) {\n            var _cell = quickElement('td', tableRow, ' ');\n            _cell.className = \"nonday\";\n        }\n\n        // Draw days of month\n        var currentDay = 1;\n        for (var i = startingPos; currentDay <= days; i++) {\n            if (i%7 == 0 && currentDay != 1) {\n                tableRow = quickElement('tr', tableBody);\n            }\n            if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) {\n                todayClass='today';\n            } else {\n                todayClass='';\n            }\n\n            // use UTC function; see above for explanation.\n            if (isSelectedMonth && currentDay == selected.getUTCDate()) {\n                if (todayClass != '') todayClass += \" \";\n                todayClass += \"selected\";\n            }\n\n            var cell = quickElement('td', tableRow, '', 'class', todayClass);\n\n            quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');\n            currentDay++;\n        }\n\n        // Draw blanks after end of month (optional, but makes for valid code)\n        while (tableRow.childNodes.length < 7) {\n            var _cell = quickElement('td', tableRow, ' ');\n            _cell.className = \"nonday\";\n        }\n\n        calDiv.appendChild(calTable);\n    }\n}\n\n// Calendar -- A calendar instance\nfunction Calendar(div_id, callback, selected) {\n    // div_id (string) is the ID of the element in which the calendar will\n    //     be displayed\n    // callback (string) is the name of a JavaScript function that will be\n    //     called with the parameters (year, month, day) when a day in the\n    //     calendar is clicked\n    this.div_id = div_id;\n    this.callback = callback;\n    this.today = new Date();\n    this.currentMonth = this.today.getMonth() + 1;\n    this.currentYear = this.today.getFullYear();\n    if (typeof selected != 'undefined') {\n        this.selected = selected;\n    }\n}\nCalendar.prototype = {\n    drawCurrent: function() {\n        CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected);\n    },\n    drawDate: function(month, year, selected) {\n        this.currentMonth = month;\n        this.currentYear = year;\n\n        if(selected) {\n            this.selected = selected;\n        }\n\n        this.drawCurrent();\n    },\n    drawPreviousMonth: function() {\n        if (this.currentMonth == 1) {\n            this.currentMonth = 12;\n            this.currentYear--;\n        }\n        else {\n            this.currentMonth--;\n        }\n        this.drawCurrent();\n    },\n    drawNextMonth: function() {\n        if (this.currentMonth == 12) {\n            this.currentMonth = 1;\n            this.currentYear++;\n        }\n        else {\n            this.currentMonth++;\n        }\n        this.drawCurrent();\n    },\n    drawPreviousYear: function() {\n        this.currentYear--;\n        this.drawCurrent();\n    },\n    drawNextYear: function() {\n        this.currentYear++;\n        this.drawCurrent();\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/collapse.js",
    "content": "(function($) {\n\t$(document).ready(function() {\n\t\t// Add anchor tag for Show/Hide link\n\t\t$(\"fieldset.collapse\").each(function(i, elem) {\n\t\t\t// Don't hide if fields in this fieldset have errors\n\t\t\tif ($(elem).find(\"div.errors\").length == 0) {\n\t\t\t\t$(elem).addClass(\"collapsed\").find(\"h2\").first().append(' (<a id=\"fieldsetcollapser' +\n\t\t\t\t\ti +'\" class=\"collapse-toggle\" href=\"#\">' + gettext(\"Show\") +\n\t\t\t\t\t'</a>)');\n\t\t\t}\n\t\t});\n\t\t// Add toggle to anchor tag\n\t\t$(\"fieldset.collapse a.collapse-toggle\").click(function(ev) {\n\t\t\tif ($(this).closest(\"fieldset\").hasClass(\"collapsed\")) {\n\t\t\t\t// Show\n\t\t\t\t$(this).text(gettext(\"Hide\")).closest(\"fieldset\").removeClass(\"collapsed\").trigger(\"show.fieldset\", [$(this).attr(\"id\")]);\n\t\t\t} else {\n\t\t\t\t// Hide\n\t\t\t\t$(this).text(gettext(\"Show\")).closest(\"fieldset\").addClass(\"collapsed\").trigger(\"hide.fieldset\", [$(this).attr(\"id\")]);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t});\n})(django.jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/core.js",
    "content": "// Core javascript helper functions\n\n// basic browser identification & version\nvar isOpera = (navigator.userAgent.indexOf(\"Opera\")>=0) && parseFloat(navigator.appVersion);\nvar isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split(\"MSIE \")[1].split(\";\")[0]);\n\n// Cross-browser event handlers.\nfunction addEvent(obj, evType, fn) {\n    if (obj.addEventListener) {\n        obj.addEventListener(evType, fn, false);\n        return true;\n    } else if (obj.attachEvent) {\n        var r = obj.attachEvent(\"on\" + evType, fn);\n        return r;\n    } else {\n        return false;\n    }\n}\n\nfunction removeEvent(obj, evType, fn) {\n    if (obj.removeEventListener) {\n        obj.removeEventListener(evType, fn, false);\n        return true;\n    } else if (obj.detachEvent) {\n        obj.detachEvent(\"on\" + evType, fn);\n        return true;\n    } else {\n        return false;\n    }\n}\n\nfunction cancelEventPropagation(e) {\n    if (!e) e = window.event;\n    e.cancelBubble = true;\n    if (e.stopPropagation) e.stopPropagation();\n}\n\n// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);\nfunction quickElement() {\n    var obj = document.createElement(arguments[0]);\n    if (arguments[2]) {\n        var textNode = document.createTextNode(arguments[2]);\n        obj.appendChild(textNode);\n    }\n    var len = arguments.length;\n    for (var i = 3; i < len; i += 2) {\n        obj.setAttribute(arguments[i], arguments[i+1]);\n    }\n    arguments[1].appendChild(obj);\n    return obj;\n}\n\n// \"a\" is reference to an object\nfunction removeChildren(a) {\n    while (a.hasChildNodes()) a.removeChild(a.lastChild);\n}\n\n// ----------------------------------------------------------------------------\n// Cross-browser xmlhttp object\n// from http://jibbering.com/2002/4/httprequest.html\n// ----------------------------------------------------------------------------\nvar xmlhttp;\n/*@cc_on @*/\n/*@if (@_jscript_version >= 5)\n    try {\n        xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n    } catch (e) {\n        try {\n            xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n        } catch (E) {\n            xmlhttp = false;\n        }\n    }\n@else\n    xmlhttp = false;\n@end @*/\nif (!xmlhttp && typeof XMLHttpRequest != 'undefined') {\n  xmlhttp = new XMLHttpRequest();\n}\n\n// ----------------------------------------------------------------------------\n// Find-position functions by PPK\n// See http://www.quirksmode.org/js/findpos.html\n// ----------------------------------------------------------------------------\nfunction findPosX(obj) {\n    var curleft = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);\n            obj = obj.offsetParent;\n        }\n        // IE offsetParent does not include the top-level\n        if (isIE && obj.parentElement){\n            curleft += obj.offsetLeft - obj.scrollLeft;\n        }\n    } else if (obj.x) {\n        curleft += obj.x;\n    }\n    return curleft;\n}\n\nfunction findPosY(obj) {\n    var curtop = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);\n            obj = obj.offsetParent;\n        }\n        // IE offsetParent does not include the top-level\n        if (isIE && obj.parentElement){\n            curtop += obj.offsetTop - obj.scrollTop;\n        }\n    } else if (obj.y) {\n        curtop += obj.y;\n    }\n    return curtop;\n}\n\n//-----------------------------------------------------------------------------\n// Date object extensions\n// ----------------------------------------------------------------------------\n\nDate.prototype.getTwelveHours = function() {\n    hours = this.getHours();\n    if (hours == 0) {\n        return 12;\n    }\n    else {\n        return hours <= 12 ? hours : hours-12\n    }\n}\n\nDate.prototype.getTwoDigitMonth = function() {\n    return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1);\n}\n\nDate.prototype.getTwoDigitDate = function() {\n    return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();\n}\n\nDate.prototype.getTwoDigitTwelveHour = function() {\n    return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();\n}\n\nDate.prototype.getTwoDigitHour = function() {\n    return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();\n}\n\nDate.prototype.getTwoDigitMinute = function() {\n    return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();\n}\n\nDate.prototype.getTwoDigitSecond = function() {\n    return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();\n}\n\nDate.prototype.getHourMinute = function() {\n    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();\n}\n\nDate.prototype.getHourMinuteSecond = function() {\n    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();\n}\n\nDate.prototype.strftime = function(format) {\n    var fields = {\n        c: this.toString(),\n        d: this.getTwoDigitDate(),\n        H: this.getTwoDigitHour(),\n        I: this.getTwoDigitTwelveHour(),\n        m: this.getTwoDigitMonth(),\n        M: this.getTwoDigitMinute(),\n        p: (this.getHours() >= 12) ? 'PM' : 'AM',\n        S: this.getTwoDigitSecond(),\n        w: '0' + this.getDay(),\n        x: this.toLocaleDateString(),\n        X: this.toLocaleTimeString(),\n        y: ('' + this.getFullYear()).substr(2, 4),\n        Y: '' + this.getFullYear(),\n        '%' : '%'\n    };\n    var result = '', i = 0;\n    while (i < format.length) {\n        if (format.charAt(i) === '%') {\n            result = result + fields[format.charAt(i + 1)];\n            ++i;\n        }\n        else {\n            result = result + format.charAt(i);\n        }\n        ++i;\n    }\n    return result;\n}\n\n// ----------------------------------------------------------------------------\n// String object extensions\n// ----------------------------------------------------------------------------\nString.prototype.pad_left = function(pad_length, pad_string) {\n    var new_string = this;\n    for (var i = 0; new_string.length < pad_length; i++) {\n        new_string = pad_string + new_string;\n    }\n    return new_string;\n}\n\nString.prototype.strptime = function(format) {\n    var split_format = format.split(/[.\\-/]/);\n    var date = this.split(/[.\\-/]/);\n    var i = 0;\n    while (i < split_format.length) {\n        switch (split_format[i]) {\n            case \"%d\":\n                var day = date[i];\n                break;\n            case \"%m\":\n                var month = date[i] - 1;\n                break;\n            case \"%Y\":\n                var year = date[i];\n                break;\n            case \"%y\":\n                var year = date[i];\n                break;\n        }\n        ++i;\n    };\n    return new Date(year, month, day);\n}\n\n// ----------------------------------------------------------------------------\n// Get the computed style for and element\n// ----------------------------------------------------------------------------\nfunction getStyle(oElm, strCssRule){\n    var strValue = \"\";\n    if(document.defaultView && document.defaultView.getComputedStyle){\n        strValue = document.defaultView.getComputedStyle(oElm, \"\").getPropertyValue(strCssRule);\n    }\n    else if(oElm.currentStyle){\n        strCssRule = strCssRule.replace(/\\-(\\w)/g, function (strMatch, p1){\n            return p1.toUpperCase();\n        });\n        strValue = oElm.currentStyle[strCssRule];\n    }\n    return strValue;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/inlines.js",
    "content": "/**\n * Django admin inlines\n *\n * Based on jQuery Formset 1.1\n * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)\n * @requires jQuery 1.2.6 or later\n *\n * Copyright (c) 2009, Stanislaus Madueke\n * All rights reserved.\n *\n * Spiced up with Code from Zain Memon's GSoC project 2009\n * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.\n *\n * Licensed under the New BSD License\n * See: http://www.opensource.org/licenses/bsd-license.php\n */\n(function($) {\n  $.fn.formset = function(opts) {\n    var options = $.extend({}, $.fn.formset.defaults, opts);\n    var $this = $(this);\n    var $parent = $this.parent();\n    var updateElementIndex = function(el, prefix, ndx) {\n      var id_regex = new RegExp(\"(\" + prefix + \"-(\\\\d+|__prefix__))\");\n      var replacement = prefix + \"-\" + ndx;\n      if ($(el).prop(\"for\")) {\n        $(el).prop(\"for\", $(el).prop(\"for\").replace(id_regex, replacement));\n      }\n      if (el.id) {\n        el.id = el.id.replace(id_regex, replacement);\n      }\n      if (el.name) {\n        el.name = el.name.replace(id_regex, replacement);\n      }\n    };\n    var totalForms = $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").prop(\"autocomplete\", \"off\");\n    var nextIndex = parseInt(totalForms.val(), 10);\n    var maxForms = $(\"#id_\" + options.prefix + \"-MAX_NUM_FORMS\").prop(\"autocomplete\", \"off\");\n    // only show the add button if we are allowed to add more items,\n        // note that max_num = None translates to a blank string.\n    var showAddButton = maxForms.val() === '' || (maxForms.val()-totalForms.val()) > 0;\n    $this.each(function(i) {\n      $(this).not(\".\" + options.emptyCssClass).addClass(options.formCssClass);\n    });\n    if ($this.length && showAddButton) {\n      var addButton;\n      if ($this.prop(\"tagName\") == \"TR\") {\n        // If forms are laid out as table rows, insert the\n        // \"add\" button in a new table row:\n        var numCols = this.eq(-1).children().length;\n        $parent.append('<tr class=\"' + options.addCssClass + '\"><td colspan=\"' + numCols + '\"><a href=\"javascript:void(0)\">' + options.addText + \"</a></tr>\");\n        addButton = $parent.find(\"tr:last a\");\n      } else {\n        // Otherwise, insert it immediately after the last form:\n        $this.filter(\":last\").after('<div class=\"' + options.addCssClass + '\"><a href=\"javascript:void(0)\">' + options.addText + \"</a></div>\");\n        addButton = $this.filter(\":last\").next().find(\"a\");\n      }\n      addButton.click(function(e) {\n        e.preventDefault();\n        var totalForms = $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\");\n        var template = $(\"#\" + options.prefix + \"-empty\");\n        var row = template.clone(true);\n        row.removeClass(options.emptyCssClass)\n          .addClass(options.formCssClass)\n          .attr(\"id\", options.prefix + \"-\" + nextIndex);\n        if (row.is(\"tr\")) {\n          // If the forms are laid out in table rows, insert\n          // the remove button into the last table cell:\n          row.children(\":last\").append('<div><a class=\"' + options.deleteCssClass +'\" href=\"javascript:void(0)\">' + options.deleteText + \"</a></div>\");\n        } else if (row.is(\"ul\") || row.is(\"ol\")) {\n          // If they're laid out as an ordered/unordered list,\n          // insert an <li> after the last list item:\n          row.append('<li><a class=\"' + options.deleteCssClass +'\" href=\"javascript:void(0)\">' + options.deleteText + \"</a></li>\");\n        } else {\n          // Otherwise, just insert the remove button as the\n          // last child element of the form's container:\n          row.children(\":first\").append('<span><a class=\"' + options.deleteCssClass + '\" href=\"javascript:void(0)\">' + options.deleteText + \"</a></span>\");\n        }\n        row.find(\"*\").each(function() {\n          updateElementIndex(this, options.prefix, totalForms.val());\n        });\n        // Insert the new form when it has been fully edited\n        row.insertBefore($(template));\n        // Update number of total forms\n        $(totalForms).val(parseInt(totalForms.val(), 10) + 1);\n        nextIndex += 1;\n        // Hide add button in case we've hit the max, except we want to add infinitely\n        if ((maxForms.val() !== '') && (maxForms.val()-totalForms.val()) <= 0) {\n          addButton.parent().hide();\n        }\n        // The delete button of each row triggers a bunch of other things\n        row.find(\"a.\" + options.deleteCssClass).click(function(e) {\n          e.preventDefault();\n          // Remove the parent form containing this button:\n          var row = $(this).parents(\".\" + options.formCssClass);\n          row.remove();\n          nextIndex -= 1;\n          // If a post-delete callback was provided, call it with the deleted form:\n          if (options.removed) {\n            options.removed(row);\n          }\n          // Update the TOTAL_FORMS form count.\n          var forms = $(\".\" + options.formCssClass);\n          $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").val(forms.length);\n          // Show add button again once we drop below max\n          if ((maxForms.val() === '') || (maxForms.val()-forms.length) > 0) {\n            addButton.parent().show();\n          }\n          // Also, update names and ids for all remaining form controls\n          // so they remain in sequence:\n          for (var i=0, formCount=forms.length; i<formCount; i++)\n          {\n            updateElementIndex($(forms).get(i), options.prefix, i);\n            $(forms.get(i)).find(\"*\").each(function() {\n              updateElementIndex(this, options.prefix, i);\n            });\n          }\n        });\n        // If a post-add callback was supplied, call it with the added form:\n        if (options.added) {\n          options.added(row);\n        }\n      });\n    }\n    return this;\n  };\n\n  /* Setup plugin defaults */\n  $.fn.formset.defaults = {\n    prefix: \"form\",          // The form prefix for your django formset\n    addText: \"add another\",      // Text for the add link\n    deleteText: \"remove\",      // Text for the delete link\n    addCssClass: \"add-row\",      // CSS class applied to the add link\n    deleteCssClass: \"delete-row\",  // CSS class applied to the delete link\n    emptyCssClass: \"empty-row\",    // CSS class applied to the empty row\n    formCssClass: \"dynamic-form\",  // CSS class applied to each form in a formset\n    added: null,          // Function called each time a new form is added\n    removed: null          // Function called each time a form is deleted\n  };\n\n\n  // Tabular inlines ---------------------------------------------------------\n  $.fn.tabularFormset = function(options) {\n    var $rows = $(this);\n    var alternatingRows = function(row) {\n      $($rows.selector).not(\".add-row\").removeClass(\"row1 row2\")\n        .filter(\":even\").addClass(\"row1\").end()\n        .filter(\":odd\").addClass(\"row2\");\n    };\n\n    var reinitDateTimeShortCuts = function() {\n      // Reinitialize the calendar and clock widgets by force\n      if (typeof DateTimeShortcuts != \"undefined\") {\n        $(\".datetimeshortcuts\").remove();\n        DateTimeShortcuts.init();\n      }\n    };\n\n    var updateSelectFilter = function() {\n      // If any SelectFilter widgets are a part of the new form,\n      // instantiate a new SelectFilter instance for it.\n      if (typeof SelectFilter != 'undefined'){\n        $('.selectfilter').each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix );\n        });\n        $('.selectfilterstacked').each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix );\n        });\n      }\n    };\n\n    var initPrepopulatedFields = function(row) {\n      row.find('.prepopulated_field').each(function() {\n        var field = $(this),\n            input = field.find('input, select, textarea'),\n            dependency_list = input.data('dependency_list') || [],\n            dependencies = [];\n        $.each(dependency_list, function(i, field_name) {\n          dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));\n        });\n        if (dependencies.length) {\n          input.prepopulate(dependencies, input.attr('maxlength'));\n        }\n      });\n    };\n\n    $rows.formset({\n      prefix: options.prefix,\n      addText: options.addText,\n      formCssClass: \"dynamic-\" + options.prefix,\n      deleteCssClass: \"inline-deletelink\",\n      deleteText: options.deleteText,\n      emptyCssClass: \"empty-form\",\n      removed: alternatingRows,\n      added: function(row) {\n        initPrepopulatedFields(row);\n        reinitDateTimeShortCuts();\n        updateSelectFilter();\n        alternatingRows(row);\n      }\n    });\n\n    return $rows;\n  };\n\n  // Stacked inlines ---------------------------------------------------------\n  $.fn.stackedFormset = function(options) {\n    var $rows = $(this);\n    var updateInlineLabel = function(row) {\n      $($rows.selector).find(\".inline_label\").each(function(i) {\n        var count = i + 1;\n        $(this).html($(this).html().replace(/(#\\d+)/g, \"#\" + count));\n      });\n    };\n\n    var reinitDateTimeShortCuts = function() {\n      // Reinitialize the calendar and clock widgets by force, yuck.\n      if (typeof DateTimeShortcuts != \"undefined\") {\n        $(\".datetimeshortcuts\").remove();\n        DateTimeShortcuts.init();\n      }\n    };\n\n    var updateSelectFilter = function() {\n      // If any SelectFilter widgets were added, instantiate a new instance.\n      if (typeof SelectFilter != \"undefined\"){\n        $(\".selectfilter\").each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix);\n        });\n        $(\".selectfilterstacked\").each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix);\n        });\n      }\n    };\n\n    var initPrepopulatedFields = function(row) {\n      row.find('.prepopulated_field').each(function() {\n        var field = $(this),\n            input = field.find('input, select, textarea'),\n            dependency_list = input.data('dependency_list') || [],\n            dependencies = [];\n        $.each(dependency_list, function(i, field_name) {\n          dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id'));\n        });\n        if (dependencies.length) {\n          input.prepopulate(dependencies, input.attr('maxlength'));\n        }\n      });\n    };\n\n    $rows.formset({\n      prefix: options.prefix,\n      addText: options.addText,\n      formCssClass: \"dynamic-\" + options.prefix,\n      deleteCssClass: \"inline-deletelink\",\n      deleteText: options.deleteText,\n      emptyCssClass: \"empty-form\",\n      removed: updateInlineLabel,\n      added: (function(row) {\n        initPrepopulatedFields(row);\n        reinitDateTimeShortCuts();\n        updateSelectFilter();\n        updateInlineLabel(row);\n      })\n    });\n\n    return $rows;\n  };\n})(django.jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/jquery.init.js",
    "content": "/* Puts the included jQuery into our own namespace using noConflict and passing\n * it 'true'. This ensures that the included jQuery doesn't pollute the global\n * namespace (i.e. this preserves pre-existing values for both window.$ and\n * window.jQuery).\n */\nvar django = django || {};\ndjango.jQuery = jQuery.noConflict(true);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.11.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-17T15:27Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making factory as module.exports\n\t\t// This accentuates the need for the creation of a real window\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.2\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\f]' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[0],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav></:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"<input type='radio' checked='checked' name='t'/>\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\tparam: [ 1, \"<object>\", \"</object>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X<div>\", \"</div>\"  ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" )).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n\n(function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n})();\nvar rmargin = (/^margin/);\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\n\n\nvar getStyles, curCSS,\n\trposition = /^(top|right|bottom|left)$/;\n\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tif ( elem.ownerDocument.defaultView.opener ) {\n\t\t\treturn elem.ownerDocument.defaultView.getComputedStyle( elem, null );\n\t\t}\n\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar width, minWidth, maxWidth, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\n\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + \"\";\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar left, rs, rsLeft, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\t\tret = computed ? computed[ name ] : undefined;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + \"\" || \"auto\";\n\t};\n}\n\n\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tvar condition = conditionFn();\n\n\t\t\tif ( condition == null ) {\n\t\t\t\t// The test was not ready at this point; screw the hook this time\n\t\t\t\t// but check again when needed next time.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( condition ) {\n\t\t\t\t// Hook not needed (or it's not possible to use it due to missing dependency),\n\t\t\t\t// remove it.\n\t\t\t\t// Since there are no other hooks for marginRight, remove the whole object.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\n\t\t\treturn (this.get = hookFn).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\n(function() {\n\t// Minified: var b,c,d,e,f,g, h,i\n\tvar div, style, a, pixelPositionVal, boxSizingReliableVal,\n\t\treliableHiddenOffsetsVal, reliableMarginRightVal;\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\tstyle = a && a.style;\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !style ) {\n\t\treturn;\n\t}\n\n\tstyle.cssText = \"float:left;opacity:.5\";\n\n\t// Support: IE<9\n\t// Make sure that element opacity exists (as opposed to filter)\n\tsupport.opacity = style.opacity === \"0.5\";\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!style.cssFloat;\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: Firefox<29, Android 2.3\n\t// Vendor-prefix box-sizing\n\tsupport.boxSizing = style.boxSizing === \"\" || style.MozBoxSizing === \"\" ||\n\t\tstyle.WebkitBoxSizing === \"\";\n\n\tjQuery.extend(support, {\n\t\treliableHiddenOffsets: function() {\n\t\t\tif ( reliableHiddenOffsetsVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableHiddenOffsetsVal;\n\t\t},\n\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\n\t\tpixelPosition: function() {\n\t\t\tif ( pixelPositionVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelPositionVal;\n\t\t},\n\n\t\t// Support: Android 2.3\n\t\treliableMarginRight: function() {\n\t\t\tif ( reliableMarginRightVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginRightVal;\n\t\t}\n\t});\n\n\tfunction computeStyleTests() {\n\t\t// Minified: var b,c,d,j\n\t\tvar div, body, container, contents;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\tdiv.style.cssText =\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;\" +\n\t\t\t\"box-sizing:border-box;display:block;margin-top:1%;top:1%;\" +\n\t\t\t\"border:1px;padding:1px;width:4px;position:absolute\";\n\n\t\t// Support: IE<9\n\t\t// Assume reasonable values in the absence of getComputedStyle\n\t\tpixelPositionVal = boxSizingReliableVal = false;\n\t\treliableMarginRightVal = true;\n\n\t\t// Check for getComputedStyle so that this code is not run in IE<9.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tpixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tboxSizingReliableVal =\n\t\t\t\t( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tcontents = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tcontents.style.cssText = div.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;padding:0\";\n\t\t\tcontents.style.marginRight = contents.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\treliableMarginRightVal =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );\n\n\t\t\tdiv.removeChild( contents );\n\t\t}\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\tcontents = div.getElementsByTagName( \"td\" );\n\t\tcontents[ 0 ].style.cssText = \"margin:0;border:0;padding:0;display:none\";\n\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\tif ( reliableHiddenOffsetsVal ) {\n\t\t\tcontents[ 0 ].style.display = \"\";\n\t\t\tcontents[ 1 ].style.display = \"none\";\n\t\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t}\n\n})();\n\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\njQuery.swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar\n\t\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trnumsplit = new RegExp( \"^(\" + pnum + \")(.*)$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + pnum + \")\", \"i\" ),\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set. See: #7116\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Support: IE\n\t\t\t\t// Swallow errors from 'invalid' CSS values (#5509)\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) && elem.offsetWidth === 0 ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tsupport.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === \"\", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === \"\" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === \"\" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9\n// Panic based approach to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t}\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t} ]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// we're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, \"fxshow\" );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tjQuery._data( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !support.shrinkWrapBlocks() ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( (display === \"none\" ? defaultDisplay( elem.nodeName ) : display) === \"inline\" ) {\n\t\tstyle.display = display;\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || jQuery._data( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = jQuery._data( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t});\n};\n\n\n(function() {\n\t// Minified: var a,b,c,d,e\n\tvar input, div, select, a, opt;\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\n\t// First batch of tests.\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE8 only\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement( \"input\" );\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n})();\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend({\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {\n\n\t\t\t\t\t\t// Support: IE6\n\t\t\t\t\t\t// When new option element is added to select box we need to\n\t\t\t\t\t\t// force reflow of newly added node in order to workaround delay\n\t\t\t\t\t\t// of initialization properties\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toption.selected = optionSet = true;\n\n\t\t\t\t\t\t} catch ( _ ) {\n\n\t\t\t\t\t\t\t// Will be executed only in IE6\n\t\t\t\t\t\t\toption.scrollHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\toption.selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t\treturn options;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Radios and checkboxes getter/setter\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\n\n\n\n\nvar nodeHook, boolHook,\n\tattrHandle = jQuery.expr.attrHandle,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = support.getSetAttribute,\n\tgetSetInput = support.input;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\n\n// Retrieve booleans specially\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret, handle;\n\t\t\tif ( !isXML ) {\n\t\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\t\thandle = attrHandle[ name ];\n\t\t\t\tattrHandle[ name ] = ret;\n\t\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t\tattrHandle[ name ] = handle;\n\t\t\t}\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn elem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\tif ( name === \"value\" || value === elem.getAttribute( name ) ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Some attributes are constructed with empty-string values when not defined\n\tattrHandle.id = attrHandle.name = attrHandle.coords =\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn (ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n\n\t// Fixing value retrieval on a button requires this module\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( ret && ret.specified ) {\n\t\t\t\treturn ret.value;\n\t\t\t}\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button|object)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend({\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\n// Support: Safari, IE9+\n// mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n// IE6/7 call enctype encoding\nif ( !support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\njQuery.fn.extend({\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed \"false\",\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n});\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\n\n\nvar nonce = jQuery.now();\n\nvar rquery = (/\\?/);\n\n\n\nvar rvalidtokens = /(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;\n\njQuery.parseJSON = function( data ) {\n\t// Attempt to parse using the native JSON parser first\n\tif ( window.JSON && window.JSON.parse ) {\n\t\t// Support: Android 2.3\n\t\t// Workaround failure to string-cast null input\n\t\treturn window.JSON.parse( data + \"\" );\n\t}\n\n\tvar requireNonComma,\n\t\tdepth = null,\n\t\tstr = jQuery.trim( data + \"\" );\n\n\t// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains\n\t// after removing valid tokens\n\treturn str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {\n\n\t\t// Force termination if we see a misplaced comma\n\t\tif ( requireNonComma && comma ) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\t// Perform no more replacements after returning to outermost depth\n\t\tif ( depth === 0 ) {\n\t\t\treturn token;\n\t\t}\n\n\t\t// Commas must not follow \"[\", \"{\", or \",\"\n\t\trequireNonComma = open || comma;\n\n\t\t// Determine new depth\n\t\t// array/object open (\"[\" or \"{\"): depth += true - false (increment)\n\t\t// array/object close (\"]\" or \"}\"): depth += false - true (decrement)\n\t\t// other cases (\",\" or primitive): depth += true - true (numeric cast)\n\t\tdepth += !close - !open;\n\n\t\t// Remove this token\n\t\treturn \"\";\n\t}) ) ?\n\t\t( Function( \"return \" + str ) )() :\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, tmp;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\ttry {\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data, \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\t} catch( e ) {\n\t\txml = undefined;\n\t}\n\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat(\"*\");\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType.charAt( 0 ) === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar deep, key,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\tvar firstDataType, ct, finalDataType, type,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ \"throws\" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger(\"ajaxStart\");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort(\"timeout\");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger(\"ajaxStop\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t});\n};\n\n\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t(!support.reliableHiddenOffsets() &&\n\t\t\t((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n};\n\njQuery.expr.filters.visible = function( elem ) {\n\treturn !jQuery.expr.filters.hidden( elem );\n};\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\tvar type = this.type;\n\t\t\t// Use .is(\":disabled\") so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?\n\t// Support: IE6+\n\tfunction() {\n\n\t\t// XHR cannot access local files, always use ActiveX for that case\n\t\treturn !this.isLocal &&\n\n\t\t\t// Support: IE7-8\n\t\t\t// oldIE XHR does not support non-RFC2616 methods (#13240)\n\t\t\t// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx\n\t\t\t// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9\n\t\t\t// Although this check for six methods instead of eight\n\t\t\t// since IE also does not support \"trace\" and \"connect\"\n\t\t\t/^(get|post|head|put|delete|options)$/i.test( this.type ) &&\n\n\t\t\tcreateStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\nvar xhrId = 0,\n\txhrCallbacks = {},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\n// Support: IE<10\n// Open requests must be manually aborted on unload (#5280)\n// See https://support.microsoft.com/kb/2856746 for more info\nif ( window.attachEvent ) {\n\twindow.attachEvent( \"onunload\", function() {\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t});\n}\n\n// Determine support properties\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nxhrSupported = support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( options ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !options.crossDomain || support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t\txhr = options.xhr(),\n\t\t\t\t\t\tid = ++xhrId;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\txhr.open( options.type, options.url, options.async, options.username, options.password );\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !options.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set headers\n\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE's ActiveXObject throws a 'Type Mismatch' exception when setting\n\t\t\t\t\t\t// request header to a null-value.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// To keep consistent with other XHR implementations, cast the value\n\t\t\t\t\t\t// to string and ignore `undefined`.\n\t\t\t\t\t\tif ( headers[ i ] !== undefined ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] + \"\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( options.hasContent && options.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, statusText, responses;\n\n\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\t\t\t\t\t\t\t// Clean up\n\t\t\t\t\t\t\tdelete xhrCallbacks[ id ];\n\t\t\t\t\t\t\tcallback = undefined;\n\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\t\t\t\t// Abort manually if needed\n\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\tstatus = xhr.status;\n\n\t\t\t\t\t\t\t\t// Support: IE<10\n\t\t\t\t\t\t\t\t// Accessing binary-data responseText throws an exception\n\t\t\t\t\t\t\t\t// (#11426)\n\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === \"string\" ) {\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\tif ( !status && options.isLocal && !options.crossDomain ) {\n\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, xhr.getAllResponseHeaders() );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !options.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Add to the list of active xhr callbacks\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ id ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || jQuery(\"head\")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// data: string of html\n// context (optional): If specified, the fragment will be created in this context, defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[1] ) ];\n\t}\n\n\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = jQuery.trim( url.slice( off, url.length ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery(\"<div>\").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n});\n\n\n\n\njQuery.expr.filters.animated = function( elem ) {\n\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\n\n\n\n\nvar docElem = window.document.documentElement;\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\tjQuery.inArray(\"auto\", [ curCSSTop, curCSSLeft ] ) > -1;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\toffset: function( options ) {\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each(function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t});\n\t\t}\n\n\t\tvar docElem, win,\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ],\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\t// If we don't have gBCR, just use 0,0 rather than error\n\t\t// BlackBerry 5, iOS 3 (original iPhone)\n\t\tif ( typeof elem.getBoundingClientRect !== strundefined ) {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t}\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),\n\t\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true)\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\" ) === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// getComputedStyle returns percent when specified for top/left/bottom/right\n// rather than make the css module depend on the offset module, we just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n});\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t});\n}\n\n\n\n\nvar\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in\n// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === strundefined ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n\n}));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/prepopulate.js",
    "content": "(function($) {\n    $.fn.prepopulate = function(dependencies, maxLength) {\n        /*\n            Depends on urlify.js\n            Populates a selected field with the values of the dependent fields,\n            URLifies and shortens the string.\n            dependencies - array of dependent fields ids\n            maxLength - maximum length of the URLify'd string\n        */\n        return this.each(function() {\n            var prepopulatedField = $(this);\n\n            var populate = function () {\n                // Bail if the field's value has been changed by the user\n                if (prepopulatedField.data('_changed')) {\n                    return;\n                }\n\n                var values = [];\n                $.each(dependencies, function(i, field) {\n                    field = $(field);\n                    if (field.val().length > 0) {\n                        values.push(field.val());\n                    }\n                });\n                prepopulatedField.val(URLify(values.join(' '), maxLength));\n            };\n\n            prepopulatedField.data('_changed', false);\n            prepopulatedField.change(function() {\n                prepopulatedField.data('_changed', true);\n            });\n\n            if (!prepopulatedField.val()) {\n                $(dependencies.join(',')).keyup(populate).change(populate).focus(populate);\n            }\n        });\n    };\n})(django.jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/related-widget-wrapper.js",
    "content": "django.jQuery(function($){\n    function updateLinks() {\n        var $this = $(this);\n        var siblings = $this.nextAll('.change-related, .delete-related');\n        if (!siblings.length) return;\n        var value = $this.val();\n        if (value) {\n            siblings.each(function(){\n                var elm = $(this);\n                elm.attr('href', elm.attr('data-href-template').replace('__fk__', value));\n            });\n        } else siblings.removeAttr('href');\n    }\n    var container = $(document);\n    container.on('change', '.related-widget-wrapper select', updateLinks);\n    container.find('.related-widget-wrapper select').each(updateLinks);\n    container.on('click', '.related-widget-wrapper-link', function(event){\n        if (this.href) {\n            showRelatedObjectPopup(this);\n        }\n        event.preventDefault();\n    });\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/timeparse.js",
    "content": "var timeParsePatterns = [\n    // 9\n    {   re: /^\\d{1,2}$/i,\n        handler: function(bits) {\n            if (bits[0].length == 1) {\n                return '0' + bits[0] + ':00';\n            } else {\n                return bits[0] + ':00';\n            }\n        }\n    },\n    // 13:00\n    {   re: /^\\d{2}[:.]\\d{2}$/i,\n        handler: function(bits) {\n            return bits[0].replace('.', ':');\n        }\n    },\n    // 9:00\n    {   re: /^\\d[:.]\\d{2}$/i,\n        handler: function(bits) {\n            return '0' + bits[0].replace('.', ':');\n        }\n    },\n    // 3 am / 3 a.m. / 3am\n    {   re: /^(\\d+)\\s*([ap])(?:.?m.?)?$/i,\n        handler: function(bits) {\n            var hour = parseInt(bits[1]);\n            if (hour == 12) {\n                hour = 0;\n            }\n            if (bits[2].toLowerCase() == 'p') {\n                if (hour == 12) {\n                    hour = 0;\n                }\n                return (hour + 12) + ':00';\n            } else {\n                if (hour < 10) {\n                    return '0' + hour + ':00';\n                } else {\n                    return hour + ':00';\n                }\n            }\n        }\n    },\n    // 3.30 am / 3:15 a.m. / 3.00am\n    {   re: /^(\\d+)[.:](\\d{2})\\s*([ap]).?m.?$/i,\n        handler: function(bits) {\n            var hour = parseInt(bits[1]);\n            var mins = parseInt(bits[2]);\n            if (mins < 10) {\n                mins = '0' + mins;\n            }\n            if (hour == 12) {\n                hour = 0;\n            }\n            if (bits[3].toLowerCase() == 'p') {\n                if (hour == 12) {\n                    hour = 0;\n                }\n                return (hour + 12) + ':' + mins;\n            } else {\n                if (hour < 10) {\n                    return '0' + hour + ':' + mins;\n                } else {\n                    return hour + ':' + mins;\n                }\n            }\n        }\n    },\n    // noon\n    {   re: /^no/i,\n        handler: function(bits) {\n            return '12:00';\n        }\n    },\n    // midnight\n    {   re: /^mid/i,\n        handler: function(bits) {\n            return '00:00';\n        }\n    }\n];\n\nfunction parseTimeString(s) {\n    for (var i = 0; i < timeParsePatterns.length; i++) {\n        var re = timeParsePatterns[i].re;\n        var handler = timeParsePatterns[i].handler;\n        var bits = re.exec(s);\n        if (bits) {\n            return handler(bits);\n        }\n    }\n    return s;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/admin/js/urlify.js",
    "content": "var LATIN_MAP = {\n    'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':\n    'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',\n    'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':\n    'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',\n    'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã':\n    'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e',\n    'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò':\n    'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u',\n    'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'\n};\nvar LATIN_SYMBOLS_MAP = {\n    '©':'(c)'\n};\nvar GREEK_MAP = {\n    'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',\n    'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',\n    'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',\n    'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',\n    'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',\n    'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',\n    'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',\n    'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',\n    'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',\n    'Ϋ':'Y'\n};\nvar TURKISH_MAP = {\n    'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',\n    'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'\n};\nvar RUSSIAN_MAP = {\n    'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',\n    'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',\n    'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',\n    'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',\n    'я':'ya',\n    'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',\n    'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',\n    'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',\n    'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',\n    'Я':'Ya'\n};\nvar UKRAINIAN_MAP = {\n    'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'\n};\nvar CZECH_MAP = {\n    'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',\n    'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',\n    'Ů':'U', 'Ž':'Z'\n};\nvar POLISH_MAP = {\n    'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',\n    'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'E', 'Ł':'L', 'Ń':'N', 'Ó':'O', 'Ś':'S',\n    'Ź':'Z', 'Ż':'Z'\n};\nvar LATVIAN_MAP = {\n    'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',\n    'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'I',\n    'Ķ':'K', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'U', 'Ž':'Z'\n};\nvar ARABIC_MAP = {\n    'أ':'a', 'ب':'b', 'ت':'t', 'ث': 'th', 'ج':'g', 'ح':'h', 'خ':'kh', 'د':'d',\n    'ذ':'th', 'ر':'r', 'ز':'z', 'س':'s', 'ش':'sh', 'ص':'s', 'ض':'d', 'ط':'t',\n    'ظ':'th', 'ع':'aa', 'غ':'gh', 'ف':'f', 'ق':'k', 'ك':'k', 'ل':'l', 'م':'m',\n    'ن':'n', 'ه':'h', 'و':'o', 'ي':'y'\n};\nvar LITHUANIAN_MAP = {\n    'ą':'a', 'č':'c', 'ę':'e', 'ė':'e', 'į':'i', 'š':'s', 'ų':'u', 'ū':'u',\n    'ž':'z',\n    'Ą':'A', 'Č':'C', 'Ę':'E', 'Ė':'E', 'Į':'I', 'Š':'S', 'Ų':'U', 'Ū':'U',\n    'Ž':'Z'\n};\nvar SERBIAN_MAP = {\n    'ђ':'dj', 'ј':'j', 'љ':'lj', 'њ':'nj', 'ћ':'c', 'џ':'dz', 'đ':'dj',\n    'Ђ':'Dj', 'Ј':'j', 'Љ':'Lj', 'Њ':'Nj', 'Ћ':'C', 'Џ':'Dz', 'Đ':'Dj'\n};\nvar AZERBAIJANI_MAP = {\n    'ç':'c', 'ə':'e', 'ğ':'g', 'ı':'i', 'ö':'o', 'ş':'s', 'ü':'u',\n    'Ç':'C', 'Ə':'E', 'Ğ':'G', 'İ':'I', 'Ö':'O', 'Ş':'S', 'Ü':'U'\n};\n\nvar ALL_DOWNCODE_MAPS = [\n    LATIN_MAP,\n    LATIN_SYMBOLS_MAP,\n    GREEK_MAP,\n    TURKISH_MAP,\n    RUSSIAN_MAP,\n    UKRAINIAN_MAP,\n    CZECH_MAP,\n    POLISH_MAP,\n    LATVIAN_MAP,\n    ARABIC_MAP,\n    LITHUANIAN_MAP,\n    SERBIAN_MAP,\n    AZERBAIJANI_MAP\n];\n\nvar Downcoder = {\n    'Initialize': function() {\n        if (Downcoder.map) {  // already made\n            return;\n        }\n        Downcoder.map = {};\n        Downcoder.chars = [];\n        for (var i=0; i<ALL_DOWNCODE_MAPS.length; i++) {\n            var lookup = ALL_DOWNCODE_MAPS[i];\n            for (var c in lookup) {\n                if (lookup.hasOwnProperty(c)) {\n                    Downcoder.map[c] = lookup[c];\n                }\n            }\n        }\n        for (var k in Downcoder.map) {\n            if (Downcoder.map.hasOwnProperty(k)) {\n                Downcoder.chars.push(k);\n            }\n        }\n        Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g');\n    }\n};\n\nfunction downcode(slug) {\n    Downcoder.Initialize();\n    return slug.replace(Downcoder.regex, function(m) {\n        return Downcoder.map[m];\n    });\n}\n\n\nfunction URLify(s, num_chars) {\n    // changes, e.g., \"Petty theft\" to \"petty_theft\"\n    // remove all these words from the string before urlifying\n    s = downcode(s);\n    var removelist = [\n        \"a\", \"an\", \"as\", \"at\", \"before\", \"but\", \"by\", \"for\", \"from\", \"is\",\n        \"in\", \"into\", \"like\", \"of\", \"off\", \"on\", \"onto\", \"per\", \"since\",\n        \"than\", \"the\", \"this\", \"that\", \"to\", \"up\", \"via\", \"with\"\n    ];\n    var r = new RegExp('\\\\b(' + removelist.join('|') + ')\\\\b', 'gi');\n    s = s.replace(r, '');\n    // if downcode doesn't hit, the char will be stripped here\n    s = s.replace(/[^-\\w\\s]/g, '');  // remove unneeded chars\n    s = s.replace(/^\\s+|\\s+$/g, ''); // trim leading/trailing spaces\n    s = s.replace(/[-\\s]+/g, '-');   // convert spaces to hyphens\n    s = s.toLowerCase();             // convert to lowercase\n    return s.substring(0, num_chars);// trim to first num_chars chars\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bk-icon-2.0/iconfont.css",
    "content": "@font-face {\r\n  font-family: 'bk-icons-linear';\r\n  src:  url('./fonts/bk_icons_linear.eot?3xrc6s');\r\n  src:  url('./fonts/bk_icons_linear.eot?3xrc6s#iefix') format('embedded-opentype'),\r\n    url('./fonts/bk_icons_linear.ttf?3xrc6s') format('truetype'),\r\n    url('./fonts/bk_icons_linear.woff?3xrc6s') format('woff'),\r\n    url('./fonts/bk_icons_linear.svg?3xrc6s#bk_icons_linear') format('svg');\r\n  font-weight: normal;\r\n  font-style: normal;\r\n}\r\n/*兼容fa处理*/\r\n.fa{\r\n  font-family: FontAwesome !important;\r\n}\r\n.bk-icon {\r\n  /* use !important to prevent issues with browser extensions that change fonts */\r\n  font-family: 'bk-icons-linear' !important;\r\n  speak: none;\r\n  font-style: normal;\r\n  font-weight: normal;\r\n  font-variant: normal;\r\n  text-transform: none;\r\n  line-height: 1;\r\n\r\n  /* Better Font Rendering =========== */\r\n  -webkit-font-smoothing: antialiased;\r\n  -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.icon-apps-shape:before {\r\n  content: \"\\e900\";\r\n}\r\n.icon-arrows-down-circle-shape:before {\r\n  content: \"\\e901\";\r\n}\r\n.icon-arrows-down-shape:before {\r\n  content: \"\\e902\";\r\n}\r\n.icon-arrows-left-circle-shape:before {\r\n  content: \"\\e903\";\r\n}\r\n.icon-arrows-left-shape:before {\r\n  content: \"\\e904\";\r\n}\r\n.icon-arrows-m-down-shape:before {\r\n  content: \"\\e905\";\r\n}\r\n.icon-arrows-m-left-shape:before {\r\n  content: \"\\e906\";\r\n}\r\n.icon-arrows-m-right-shape:before {\r\n  content: \"\\e907\";\r\n}\r\n.icon-arrows-m-up-shape:before {\r\n  content: \"\\e908\";\r\n}\r\n.icon-arrows-right-circle-shape:before {\r\n  content: \"\\e909\";\r\n}\r\n.icon-arrows-right-shape:before {\r\n  content: \"\\e90a\";\r\n}\r\n.icon-arrows-up-circle-shape:before {\r\n  content: \"\\e90b\";\r\n}\r\n.icon-arrows-up-shape:before {\r\n  content: \"\\e90c\";\r\n}\r\n.icon-back-shape:before {\r\n  content: \"\\e90d\";\r\n}\r\n.icon-calendar-shape:before {\r\n  content: \"\\e90e\";\r\n}\r\n.icon-check-circle-shape:before {\r\n  content: \"\\e90f\";\r\n}\r\n.icon-circle-shape:before {\r\n  content: \"\\e910\";\r\n}\r\n.icon-clipboard-shape:before {\r\n  content: \"\\e911\";\r\n}\r\n.icon-clock-shape:before {\r\n  content: \"\\e912\";\r\n}\r\n.icon-close3-shape:before {\r\n  content: \"\\e913\";\r\n}\r\n.icon-close-circle-shape:before {\r\n  content: \"\\e914\";\r\n}\r\n.icon-cog-shape:before {\r\n  content: \"\\e915\";\r\n}\r\n.icon-cry-shape:before {\r\n  content: \"\\e916\";\r\n}\r\n.icon-dashboard-2-shape:before {\r\n  content: \"\\e917\";\r\n}\r\n.icon-dashboard-shape:before {\r\n  content: \"\\e918\";\r\n}\r\n.icon-data2-shape:before {\r\n  content: \"\\e919\";\r\n}\r\n.icon-data-shape:before {\r\n  content: \"\\e91a\";\r\n}\r\n.icon-dialogue-empty-shape:before {\r\n  content: \"\\e91b\";\r\n}\r\n.icon-dialogue-shape:before {\r\n  content: \"\\e91c\";\r\n}\r\n.icon-dispirited-shape:before {\r\n  content: \"\\e91d\";\r\n}\r\n.icon-down-shape:before {\r\n  content: \"\\e91e\";\r\n}\r\n.icon-email-shape:before {\r\n  content: \"\\e91f\";\r\n}\r\n.icon-empty-shape:before {\r\n  content: \"\\e920\";\r\n}\r\n.icon-exclamation-circle-shape:before {\r\n  content: \"\\e921\";\r\n}\r\n.icon-exclamation-triangle-shape:before {\r\n  content: \"\\e922\";\r\n}\r\n.icon-eye-shape:before {\r\n  content: \"\\e923\";\r\n}\r\n.icon-eye-slash-shape:before {\r\n  content: \"\\e924\";\r\n}\r\n.icon-file-plus-shape:before {\r\n  content: \"\\e925\";\r\n}\r\n.icon-file-shape:before {\r\n  content: \"\\e926\";\r\n}\r\n.icon-folder-open-shape:before {\r\n  content: \"\\e927\";\r\n}\r\n.icon-folder-plus-shape:before {\r\n  content: \"\\e928\";\r\n}\r\n.icon-folder-shape:before {\r\n  content: \"\\e929\";\r\n}\r\n.icon-heart-shape:before {\r\n  content: \"\\e92a\";\r\n}\r\n.icon-home-shape:before {\r\n  content: \"\\e92b\";\r\n}\r\n.icon-id-shape:before {\r\n  content: \"\\e92c\";\r\n}\r\n.icon-image-shape:before {\r\n  content: \"\\e92d\";\r\n}\r\n.icon-info-circle-shape:before {\r\n  content: \"\\e92e\";\r\n}\r\n.icon-left-shape:before {\r\n  content: \"\\e92f\";\r\n}\r\n.icon-lock-shape:before {\r\n  content: \"\\e930\";\r\n}\r\n.icon-minus-circle-shape:before {\r\n  content: \"\\e931\";\r\n}\r\n.icon-minus-square-shape:before {\r\n  content: \"\\e932\";\r\n}\r\n.icon-mobile-shape:before {\r\n  content: \"\\e933\";\r\n}\r\n.icon-next-shape:before {\r\n  content: \"\\e934\";\r\n}\r\n.icon-order-shape:before {\r\n  content: \"\\e935\";\r\n}\r\n.icon-password-shape:before {\r\n  content: \"\\e936\";\r\n}\r\n.icon-pc-shape:before {\r\n  content: \"\\e937\";\r\n}\r\n.icon-pie-chart-shape:before {\r\n  content: \"\\e938\";\r\n}\r\n.icon-pipeline-shape:before {\r\n  content: \"\\e939\";\r\n}\r\n.icon-play-circle-shape:before {\r\n  content: \"\\e93a\";\r\n}\r\n.icon-play-shape:before {\r\n  content: \"\\e93b\";\r\n}\r\n.icon-plus-circle-shape:before {\r\n  content: \"\\e93c\";\r\n}\r\n.icon-plus-square-shape:before {\r\n  content: \"\\e93d\";\r\n}\r\n.icon-qq-shape:before {\r\n  content: \"\\e93e\";\r\n}\r\n.icon-question-circle-shape:before {\r\n  content: \"\\e93f\";\r\n}\r\n.icon-right-shape:before {\r\n  content: \"\\e940\";\r\n}\r\n.icon-save-shape:before {\r\n  content: \"\\e941\";\r\n}\r\n.icon-sina-shape:before {\r\n  content: \"\\e942\";\r\n}\r\n.icon-sitemap-shape:before {\r\n  content: \"\\e943\";\r\n}\r\n.icon-smile-shape:before {\r\n  content: \"\\e944\";\r\n}\r\n.icon-star-shape:before {\r\n  content: \"\\e945\";\r\n}\r\n.icon-stop-shape:before {\r\n  content: \"\\e946\";\r\n}\r\n.icon-tree-application-shape:before {\r\n  content: \"\\e947\";\r\n}\r\n.icon-tree-group-shape:before {\r\n  content: \"\\e948\";\r\n}\r\n.icon-tree-module-shape:before {\r\n  content: \"\\e949\";\r\n}\r\n.icon-tree-process-shape:before {\r\n  content: \"\\e94a\";\r\n}\r\n.icon-unlock-shape:before {\r\n  content: \"\\e94b\";\r\n}\r\n.icon-up-shape:before {\r\n  content: \"\\e94c\";\r\n}\r\n.icon-user-shape:before {\r\n  content: \"\\e94d\";\r\n}\r\n.icon-weixin-shape:before {\r\n  content: \"\\e94e\";\r\n}\r\n.icon-more:before {\r\n  content: \"\\e94f\";\r\n}\r\n.icon-circle-2-1:before {\r\n  content: \"\\e950\";\r\n}\r\n.icon-circle-4-1:before {\r\n  content: \"\\e951\";\r\n}\r\n.icon-angle-double-down:before {\r\n  content: \"\\e952\";\r\n}\r\n.icon-angle-double-left:before {\r\n  content: \"\\e953\";\r\n}\r\n.icon-angle-double-right:before {\r\n  content: \"\\e954\";\r\n}\r\n.icon-angle-double-up:before {\r\n  content: \"\\e955\";\r\n}\r\n.icon-angle-down:before {\r\n  content: \"\\e956\";\r\n}\r\n.icon-angle-left:before {\r\n  content: \"\\e957\";\r\n}\r\n.icon-angle-right:before {\r\n  content: \"\\e958\";\r\n}\r\n.icon-angle-up:before {\r\n  content: \"\\e959\";\r\n}\r\n.icon-apps:before {\r\n  content: \"\\e95a\";\r\n}\r\n.icon-area-chart:before {\r\n  content: \"\\e95b\";\r\n}\r\n.icon-arrows-down:before {\r\n  content: \"\\e95c\";\r\n}\r\n.icon-arrows-down-circle:before {\r\n  content: \"\\e95d\";\r\n}\r\n.icon-arrows-left:before {\r\n  content: \"\\e95e\";\r\n}\r\n.icon-arrows-left-circle:before {\r\n  content: \"\\e95f\";\r\n}\r\n.icon-arrows-right:before {\r\n  content: \"\\e960\";\r\n}\r\n.icon-arrows-right-circle:before {\r\n  content: \"\\e961\";\r\n}\r\n.icon-arrows-up:before {\r\n  content: \"\\e962\";\r\n}\r\n.icon-arrows-up-circle:before {\r\n  content: \"\\e963\";\r\n}\r\n.icon-back:before {\r\n  content: \"\\e964\";\r\n}\r\n.icon-back2:before {\r\n  content: \"\\e965\";\r\n}\r\n.icon-bar-chart:before {\r\n  content: \"\\e966\";\r\n}\r\n.icon-bk:before {\r\n  content: \"\\e967\";\r\n}\r\n.icon-calendar:before {\r\n  content: \"\\e968\";\r\n}\r\n.icon-chain:before {\r\n  content: \"\\e969\";\r\n}\r\n.icon-check-1:before {\r\n  content: \"\\e96a\";\r\n}\r\n.icon-check-circle:before {\r\n  content: \"\\e96b\";\r\n}\r\n.icon-circle:before {\r\n  content: \"\\e96c\";\r\n}\r\n.icon-clipboard:before {\r\n  content: \"\\e96d\";\r\n}\r\n.icon-clock:before {\r\n  content: \"\\e96e\";\r\n}\r\n.icon-close:before {\r\n  content: \"\\e96f\";\r\n}\r\n.icon-close-circle:before {\r\n  content: \"\\e970\";\r\n}\r\n.icon-delete:before {\r\n  content: \"\\e971\";\r\n}\r\n.icon-code:before {\r\n  content: \"\\e972\";\r\n}\r\n.icon-cog:before {\r\n  content: \"\\e973\";\r\n}\r\n.icon-cry:before {\r\n  content: \"\\e974\";\r\n}\r\n.icon-dashboard:before {\r\n  content: \"\\e975\";\r\n}\r\n.icon-dashboard-2:before {\r\n  content: \"\\e976\";\r\n}\r\n.icon-data:before {\r\n  content: \"\\e977\";\r\n}\r\n.icon-data2:before {\r\n  content: \"\\e978\";\r\n}\r\n.icon-dedent:before {\r\n  content: \"\\e979\";\r\n}\r\n.icon-dialogue:before {\r\n  content: \"\\e97a\";\r\n}\r\n.icon-dialogue-empty:before {\r\n  content: \"\\e97b\";\r\n}\r\n.icon-dispirited:before {\r\n  content: \"\\e97c\";\r\n}\r\n.icon-download:before {\r\n  content: \"\\e97d\";\r\n}\r\n.icon-edit:before {\r\n  content: \"\\e97e\";\r\n}\r\n.icon-edit2:before {\r\n  content: \"\\e97f\";\r\n}\r\n.icon-ellipsis:before {\r\n  content: \"\\e980\";\r\n}\r\n.icon-email:before {\r\n  content: \"\\e981\";\r\n}\r\n.icon-empty:before {\r\n  content: \"\\e982\";\r\n}\r\n.icon-end:before {\r\n  content: \"\\e983\";\r\n}\r\n.icon-exclamation:before {\r\n  content: \"\\e984\";\r\n}\r\n.icon-exclamation-circle:before {\r\n  content: \"\\e985\";\r\n}\r\n.icon-exclamation-triangle:before {\r\n  content: \"\\e986\";\r\n}\r\n.icon-eye:before {\r\n  content: \"\\e987\";\r\n}\r\n.icon-eye-slash:before {\r\n  content: \"\\e988\";\r\n}\r\n.icon-file:before {\r\n  content: \"\\e989\";\r\n}\r\n.icon-file-plus:before {\r\n  content: \"\\e98a\";\r\n}\r\n.icon-folder:before {\r\n  content: \"\\e98b\";\r\n}\r\n.icon-folder-open:before {\r\n  content: \"\\e98c\";\r\n}\r\n.icon-folder-plus:before {\r\n  content: \"\\e98d\";\r\n}\r\n.icon-full-screen:before {\r\n  content: \"\\e98e\";\r\n}\r\n.icon-heart:before {\r\n  content: \"\\e98f\";\r\n}\r\n.icon-hide:before {\r\n  content: \"\\e990\";\r\n}\r\n.icon-home:before {\r\n  content: \"\\e991\";\r\n}\r\n.icon-id:before {\r\n  content: \"\\e992\";\r\n}\r\n.icon-image:before {\r\n  content: \"\\e993\";\r\n}\r\n.icon-indent:before {\r\n  content: \"\\e994\";\r\n}\r\n.icon-info:before {\r\n  content: \"\\e995\";\r\n}\r\n.icon-info-circle:before {\r\n  content: \"\\e996\";\r\n}\r\n.icon-key:before {\r\n  content: \"\\e997\";\r\n}\r\n.icon-line-chart:before {\r\n  content: \"\\e998\";\r\n}\r\n.icon-list:before {\r\n  content: \"\\e999\";\r\n}\r\n.icon-lock:before {\r\n  content: \"\\e99a\";\r\n}\r\n.icon-minus:before {\r\n  content: \"\\e99b\";\r\n}\r\n.icon-minus-circle:before {\r\n  content: \"\\e99c\";\r\n}\r\n.icon-minus-square:before {\r\n  content: \"\\e99d\";\r\n}\r\n.icon-mobile:before {\r\n  content: \"\\e99e\";\r\n}\r\n.icon-move:before {\r\n  content: \"\\e99f\";\r\n}\r\n.icon-next:before {\r\n  content: \"\\e9a0\";\r\n}\r\n.icon-order:before {\r\n  content: \"\\e9a1\";\r\n}\r\n.icon-password:before {\r\n  content: \"\\e9a2\";\r\n}\r\n.icon-pause:before {\r\n  content: \"\\e9a3\";\r\n}\r\n.icon-pc:before {\r\n  content: \"\\e9a4\";\r\n}\r\n.icon-pie-chart:before {\r\n  content: \"\\e9a5\";\r\n}\r\n.icon-pipeline:before {\r\n  content: \"\\e9a6\";\r\n}\r\n.icon-play:before {\r\n  content: \"\\e9a7\";\r\n}\r\n.icon-play2:before {\r\n  content: \"\\e9a8\";\r\n}\r\n.icon-play3:before {\r\n  content: \"\\e9a9\";\r\n}\r\n.icon-plus:before {\r\n  content: \"\\e9aa\";\r\n}\r\n.icon-plus-circle:before {\r\n  content: \"\\e9ab\";\r\n}\r\n.icon-plus-square:before {\r\n  content: \"\\e9ac\";\r\n}\r\n.icon-qq:before {\r\n  content: \"\\e9ad\";\r\n}\r\n.icon-question:before {\r\n  content: \"\\e9ae\";\r\n}\r\n.icon-question-circle:before {\r\n  content: \"\\e9af\";\r\n}\r\n.icon-refresh:before {\r\n  content: \"\\e9b0\";\r\n}\r\n.icon-save:before {\r\n  content: \"\\e9b1\";\r\n}\r\n.icon-search:before {\r\n  content: \"\\e9b2\";\r\n}\r\n.icon-sina:before {\r\n  content: \"\\e9b3\";\r\n}\r\n.icon-sitemap:before {\r\n  content: \"\\e9b4\";\r\n}\r\n.icon-smile:before {\r\n  content: \"\\e9b5\";\r\n}\r\n.icon-sort:before {\r\n  content: \"\\e9b6\";\r\n}\r\n.icon-star:before {\r\n  content: \"\\e9b7\";\r\n}\r\n.icon-stop:before {\r\n  content: \"\\e9b8\";\r\n}\r\n.icon-tree-application:before {\r\n  content: \"\\e9b9\";\r\n}\r\n.icon-tree-Group:before {\r\n  content: \"\\e9ba\";\r\n}\r\n.icon-tree-module:before {\r\n  content: \"\\e9bb\";\r\n}\r\n.icon-tree-process:before {\r\n  content: \"\\e9bc\";\r\n}\r\n.icon-un-full-screen:before {\r\n  content: \"\\e9bd\";\r\n}\r\n.icon-unlock:before {\r\n  content: \"\\e9be\";\r\n}\r\n.icon-upload:before {\r\n  content: \"\\e9bf\";\r\n}\r\n.icon-user:before {\r\n  content: \"\\e9c0\";\r\n}\r\n.icon-weixin:before {\r\n  content: \"\\e9c1\";\r\n}\r\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bk-icon-2.0/iconfont.json",
    "content": "{\r\n  \"selection\": [\r\n    {\r\n      \"order\": 668,\r\n      \"name\": \"more\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 554,\r\n      \"name\": \"circle-2-1\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 555,\r\n      \"name\": \"circle-4-1\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 556,\r\n      \"name\": \"angle-double-down\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 557,\r\n      \"name\": \"angle-double-left\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 558,\r\n      \"name\": \"angle-double-right\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 559,\r\n      \"name\": \"angle-double-up\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 560,\r\n      \"name\": \"angle-down\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 561,\r\n      \"name\": \"angle-left\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 562,\r\n      \"name\": \"angle-right\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 563,\r\n      \"name\": \"angle-up\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 564,\r\n      \"name\": \"apps\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 565,\r\n      \"name\": \"area-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 566,\r\n      \"name\": \"arrows-down\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 567,\r\n      \"name\": \"arrows-down-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 568,\r\n      \"name\": \"arrows-left\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 569,\r\n      \"name\": \"arrows-left-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 570,\r\n      \"name\": \"arrows-right\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 571,\r\n      \"name\": \"arrows-right-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 572,\r\n      \"name\": \"arrows-up\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 573,\r\n      \"name\": \"arrows-up-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 574,\r\n      \"name\": \"back\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 575,\r\n      \"name\": \"back2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 576,\r\n      \"name\": \"bar-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 577,\r\n      \"name\": \"bk\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 578,\r\n      \"name\": \"calendar\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 579,\r\n      \"name\": \"chain\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 580,\r\n      \"name\": \"check-1\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 581,\r\n      \"name\": \"check-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 582,\r\n      \"name\": \"circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 583,\r\n      \"name\": \"clipboard\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 584,\r\n      \"name\": \"clock\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 585,\r\n      \"name\": \"close\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 586,\r\n      \"name\": \"close-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 587,\r\n      \"name\": \"delete\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 588,\r\n      \"name\": \"code\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 589,\r\n      \"name\": \"cog\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 590,\r\n      \"name\": \"cry\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 591,\r\n      \"name\": \"dashboard\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 592,\r\n      \"name\": \"dashboard-2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 593,\r\n      \"name\": \"data\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 594,\r\n      \"name\": \"data2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 595,\r\n      \"name\": \"dedent\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 596,\r\n      \"name\": \"dialogue\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 597,\r\n      \"name\": \"dialogue-empty\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 598,\r\n      \"name\": \"dispirited\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 599,\r\n      \"name\": \"download\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 600,\r\n      \"name\": \"edit\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 601,\r\n      \"name\": \"edit2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 602,\r\n      \"name\": \"ellipsis\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 603,\r\n      \"name\": \"email\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 604,\r\n      \"name\": \"empty\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 605,\r\n      \"name\": \"end\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 606,\r\n      \"name\": \"exclamation\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 607,\r\n      \"name\": \"exclamation-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 608,\r\n      \"name\": \"exclamation-triangle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 609,\r\n      \"name\": \"eye\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 610,\r\n      \"name\": \"eye-slash\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 611,\r\n      \"name\": \"file\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 612,\r\n      \"name\": \"file-plus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 613,\r\n      \"name\": \"folder\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 614,\r\n      \"name\": \"folder-open\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 615,\r\n      \"name\": \"folder-plus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 616,\r\n      \"name\": \"full-screen\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 617,\r\n      \"name\": \"heart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 618,\r\n      \"name\": \"hide\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 619,\r\n      \"name\": \"home\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 620,\r\n      \"name\": \"id\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 621,\r\n      \"name\": \"image\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 622,\r\n      \"name\": \"indent\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 623,\r\n      \"name\": \"info\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 624,\r\n      \"name\": \"info-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 625,\r\n      \"name\": \"key\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 626,\r\n      \"name\": \"line-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 627,\r\n      \"name\": \"list\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 628,\r\n      \"name\": \"lock\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 629,\r\n      \"name\": \"minus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 630,\r\n      \"name\": \"minus-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 631,\r\n      \"name\": \"minus-square\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 632,\r\n      \"name\": \"mobile\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 633,\r\n      \"name\": \"move\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 634,\r\n      \"name\": \"next\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 635,\r\n      \"name\": \"order\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 636,\r\n      \"name\": \"password\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 637,\r\n      \"name\": \"pause\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 638,\r\n      \"name\": \"pc\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 639,\r\n      \"name\": \"pie-chart\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 640,\r\n      \"name\": \"pipeline\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 641,\r\n      \"name\": \"play\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 642,\r\n      \"name\": \"play2\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 643,\r\n      \"name\": \"play3\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 644,\r\n      \"name\": \"plus\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 645,\r\n      \"name\": \"plus-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 646,\r\n      \"name\": \"plus-square\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 647,\r\n      \"name\": \"qq\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 648,\r\n      \"name\": \"question\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 649,\r\n      \"name\": \"question-circle\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 650,\r\n      \"name\": \"refresh\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 651,\r\n      \"name\": \"save\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 652,\r\n      \"name\": \"search\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 653,\r\n      \"name\": \"sina\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 654,\r\n      \"name\": \"sitemap\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 655,\r\n      \"name\": \"smile\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 656,\r\n      \"name\": \"sort\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 657,\r\n      \"name\": \"star\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 658,\r\n      \"name\": \"stop\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 659,\r\n      \"name\": \"tree-application\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 660,\r\n      \"name\": \"tree-Group\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 661,\r\n      \"name\": \"tree-module\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 662,\r\n      \"name\": \"tree-process\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 663,\r\n      \"name\": \"un-full-screen\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 664,\r\n      \"name\": \"unlock\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 665,\r\n      \"name\": \"upload\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 666,\r\n      \"name\": \"user\",\r\n      \"prevSize\": 24\r\n    },\r\n    {\r\n      \"order\": 667,\r\n      \"name\": \"weixin\",\r\n      \"prevSize\": 24\r\n    }\r\n  ],\r\n  \"metadata\": {\r\n    \"name\": \"bk-icons-linear\",\r\n    \"designer\": \"Blueking\",\r\n    \"designerURL\": \"http://bk.tencent.com/\",\r\n    \"license\": \"MIT\",\r\n    \"importSize\": {\r\n      \"width\": 16,\r\n      \"height\": 16\r\n    },\r\n    \"iconsHash\": 1973224909\r\n  },\r\n  \"height\": 1024,\r\n  \"prevSize\": 24,\r\n  \"icons\": [\r\n    {\r\n      \"paths\": [\r\n        \"M448 256c0-35.2 28.8-64 64-64s64 28.8 64 64c0 35.2-28.8 64-64 64s-64-28.8-64-64zM512 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64zM512 704c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64z\"\r\n      ],\r\n      \"grid\": 16,\r\n      \"tags\": [\r\n        \"more\"\r\n      ],\r\n      \"defaultCode\": 59648\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-17.92 0-32 14.080-32 32s14.080 32 32 32c247.040 0 448 200.96 448 448s-200.96 448-448 448c-17.92 0-32 14.080-32 32s14.080 32 32 32c282.24 0 512-229.76 512-512s-229.76-512-512-512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"2_circle\"\r\n      ],\r\n      \"defaultCode\": 59649,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-17.92 0-32 14.080-32 32s14.080 32 32 32c247.040 0 448 200.96 448 448 0 17.92 14.080 32 32 32s32-14.080 32-32c0-282.24-229.76-512-512-512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"4_circle\"\r\n      ],\r\n      \"defaultCode\": 59650,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M906.24 462.72l-394.24 364.16-394.24-364.16c-12.8-12.16-33.28-10.88-45.44 1.92s-10.88 33.28 1.92 45.44l416 384c6.4 5.76 14.080 8.32 21.76 8.32s15.36-2.56 21.76-8.32l416-384c12.8-12.16 14.080-32 1.92-45.44-12.16-12.8-32.64-13.44-45.44-1.92z\",\r\n        \"M490.24 561.28c6.4 5.76 14.080 8.32 21.76 8.32s15.36-2.56 21.76-8.32l416-384c12.8-12.16 14.080-32 1.92-45.44-12.16-12.8-32-13.44-45.44-1.92l-394.24 364.16-394.24-364.16c-12.8-12.16-33.28-11.52-45.44 1.92-12.16 12.8-10.88 33.28 1.92 45.44l416 384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_down\"\r\n      ],\r\n      \"defaultCode\": 59651,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M197.12 512l364.16-394.24c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-384 416c-11.52 12.16-11.52 31.36 0 43.52l384 416c6.4 7.040 15.36 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-364.16-394.24z\",\r\n        \"M529.92 512l364.16-394.24c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-384 416c-11.52 12.16-11.52 31.36 0 43.52l384 416c6.4 7.040 14.72 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-364.16-394.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_left\"\r\n      ],\r\n      \"defaultCode\": 59652,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M894.080 490.24l-384-416c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l364.16 394.24-364.16 394.24c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24l384-416c10.88-12.16 10.88-31.36 0-43.52z\",\r\n        \"M561.28 490.24l-384-416c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l364.16 394.24-364.16 394.24c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24l384-416c10.88-12.16 10.88-31.36 0-43.52z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_right\"\r\n      ],\r\n      \"defaultCode\": 59653,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M117.76 561.28l394.24-364.16 394.24 364.16c6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24 12.16-12.8 10.88-33.28-1.92-45.44l-416-384c-12.16-11.52-31.36-11.52-43.52 0l-416 384c-12.8 12.16-14.080 32-1.92 45.44 12.16 12.8 32.64 13.44 45.44 1.92z\",\r\n        \"M533.76 462.72c-12.16-11.52-31.36-11.52-43.52 0l-416 384c-12.8 12.16-14.080 32-1.92 45.44 12.16 12.8 32 13.44 45.44 1.92l394.24-364.16 394.24 364.16c6.4 5.76 14.080 8.32 21.76 8.32 8.32 0 17.28-3.2 23.68-10.24 12.16-12.8 10.88-33.28-1.92-45.44l-416-384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_double_up\"\r\n      ],\r\n      \"defaultCode\": 59654,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 797.44c-7.68 0-15.36-2.56-21.76-8.32l-480-442.88c-12.8-12.16-14.080-32-1.92-45.44 12.16-12.8 32-14.080 45.44-1.92l458.24 423.040 458.24-423.040c12.8-12.16 33.28-10.88 45.44 1.92s10.88 33.28-1.92 45.44l-480 442.88c-6.4 5.76-14.080 8.32-21.76 8.32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_down\"\r\n      ],\r\n      \"defaultCode\": 59655,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M704 960c-8.32 0-17.28-3.2-23.68-10.24l-384-416c-11.52-12.16-11.52-31.36 0-43.52l384-416c12.16-12.8 32-14.080 45.44-1.92 12.8 12.16 14.080 32 1.92 45.44l-364.16 394.24 364.16 394.24c12.16 12.8 10.88 33.28-1.92 45.44-6.4 5.76-14.080 8.32-21.76 8.32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_left\"\r\n      ],\r\n      \"defaultCode\": 59656,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M320 960c-7.68 0-15.36-2.56-21.76-8.32-12.8-12.16-14.080-32-1.92-45.44l364.16-394.24-364.16-394.24c-12.16-12.8-10.88-33.28 1.92-45.44s33.28-10.88 45.44 1.92l384 416c11.52 12.16 11.52 31.36 0 43.52l-384 416c-6.4 7.040-15.36 10.24-23.68 10.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_right\"\r\n      ],\r\n      \"defaultCode\": 59657,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 797.44c-7.68 0-15.36-2.56-21.76-8.32l-458.24-423.040-458.24 423.040c-12.8 12.16-33.28 11.52-45.44-1.92-12.16-12.8-10.88-33.28 1.92-45.44l480-442.88c12.16-11.52 31.36-11.52 43.52 0l480 442.88c12.8 12.16 14.080 32 1.92 45.44-6.4 7.040-15.36 10.24-23.68 10.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"angle_up\"\r\n      ],\r\n      \"defaultCode\": 59658,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M352.22 1024h-256.16c-53.052 0-96.060-43.008-96.060-96.060v-256.16c0-53.052 43.008-96.060 96.060-96.060h256.16c53.052 0 96.060 43.008 96.060 96.060v256.16c0 53.052-43.008 96.060-96.060 96.060zM96.060 639.76c-17.684 0-32.020 14.336-32.020 32.020v256.16c0 17.684 14.336 32.020 32.020 32.020h256.16c17.684 0 32.020-14.336 32.020-32.020v-256.16c0-17.684-14.336-32.020-32.020-32.020z\",\r\n        \"M352.22 511.68h-256.16c-53.052 0-96.060-43.008-96.060-96.060v-256.16c0-53.052 43.008-96.060 96.060-96.060h256.16c53.052 0 96.060 43.008 96.060 96.060v256.16c0 53.052-43.008 96.060-96.060 96.060zM96.060 127.44c-17.684 0-32.020 14.336-32.020 32.020v256.16c0 17.684 14.336 32.020 32.020 32.020h256.16c17.684 0 32.020-14.336 32.020-32.020v-256.16c0-17.684-14.336-32.020-32.020-32.020z\",\r\n        \"M864.54 1024h-256.16c-53.052 0-96.060-43.008-96.060-96.060v-256.16c0-53.052 43.008-96.060 96.060-96.060h256.16c53.052 0 96.060 43.008 96.060 96.060v256.16c0 53.052-43.008 96.060-96.060 96.060zM608.38 639.76c-17.684 0-32.020 14.336-32.020 32.020v256.16c0 17.684 14.336 32.020 32.020 32.020h256.16c17.684 0 32.020-14.336 32.020-32.020v-256.16c0-17.684-14.336-32.020-32.020-32.020z\",\r\n        \"M752.47 543.7c-0.054 0-0.118 0-0.181 0-26.464 0-50.411-10.773-67.696-28.173l-176.115-176.115c-17.358-17.379-28.093-41.377-28.093-67.882s10.735-50.503 28.094-67.883l176.109-176.109c17.644-16.767 41.559-27.080 67.882-27.080s50.239 10.313 67.925 27.12l176.068 176.070c17.358 17.379 28.093 41.377 28.093 67.882s-10.735 50.503-28.094 67.883l-176.109 176.109c-17.29 17.405-41.238 28.178-67.701 28.178-0.064 0-0.128-0-0.191-0zM752.47 63.4c-8.789 0.129-16.702 3.78-22.409 9.601l-176.756 176.115c-5.85 5.804-9.471 13.846-9.471 22.734s3.621 16.931 9.469 22.732l176.753 176.112c5.804 5.85 13.846 9.471 22.734 9.471s16.931-3.621 22.732-9.469l176.112-176.753c5.85-5.804 9.471-13.846 9.471-22.734s-3.621-16.931-9.469-22.732l-176.753-176.112c-5.75-5.548-13.586-8.966-22.222-8.966-0.068 0-0.135 0-0.203 0.001z\"\r\n      ],\r\n      \"width\": 1025,\r\n      \"tags\": [\r\n        \"apps\"\r\n      ],\r\n      \"defaultCode\": 59659,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 832h-928v-672c0-17.92-14.080-32-32-32s-32 14.080-32 32v704c0 17.92 14.080 32 32 32h960c17.92 0 32-14.080 32-32s-14.080-32-32-32z\",\r\n        \"M168.32 416l112.64-165.76c9.6-14.72 28.8-17.28 42.24-5.76l292.48 247.040c13.44 11.52 36.48 12.8 51.2 3.2l138.88-92.8c14.72-9.6 31.36-3.84 37.12 12.8l109.44 320c0 1.28-0.64 1.92-1.92 1.92h-782.080z\"\r\n      ],\r\n      \"tags\": [\r\n        \"area_chart\"\r\n      ],\r\n      \"defaultCode\": 59660,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M833.28 571.52c-12.16-12.8-32-14.080-45.44-1.92l-243.84 222.080v-631.68c0-17.92-14.080-32-32-32s-32 14.080-32 32v631.68l-244.48-222.080c-12.8-12.16-33.28-10.88-45.44 1.92s-10.88 33.28 1.92 45.44l297.6 270.72c1.28 1.28 3.2 1.92 5.12 3.2 1.28 0.64 2.56 1.92 4.48 2.56 4.48 1.92 8.96 2.56 12.8 2.56s8.32-0.64 12.16-2.56c1.92-0.64 3.2-1.92 4.48-2.56 1.92-1.28 3.84-1.92 5.12-3.2l297.6-270.72c13.44-12.16 14.080-32 1.92-45.44z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_down\"\r\n      ],\r\n      \"defaultCode\": 59661,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M680.32 540.16l-136.32 123.52v-375.68c0-17.92-14.080-32-32-32s-32 14.080-32 32v375.68l-135.68-123.52c-12.8-11.52-33.28-10.88-45.44 1.92-12.16 13.44-10.88 33.28 1.92 45.44l189.44 172.16c1.28 1.28 3.2 1.92 5.12 3.2 1.28 0.64 2.56 1.92 4.48 2.56 3.84 1.92 8.32 2.56 12.16 2.56s8.32-0.64 12.16-2.56c1.92-0.64 3.2-1.92 4.48-2.56 1.92-1.28 3.84-1.92 5.12-3.2l189.44-172.16c13.44-12.16 14.080-32 1.92-45.44-11.52-12.8-32-14.080-44.8-1.92z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_down_circle\"\r\n      ],\r\n      \"defaultCode\": 59662,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 480h-631.68l222.080-244.48c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-270.72 298.24c-1.28 1.92-1.92 3.84-3.2 5.12-0.64 1.92-1.92 3.2-2.56 4.48-3.2 7.68-3.2 16 0 23.68 0.64 1.92 1.92 3.2 2.56 4.48 1.28 1.92 1.92 3.84 3.2 5.76l270.72 297.6c6.4 7.040 14.72 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-222.080-243.84h631.68c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_left\"\r\n      ],\r\n      \"defaultCode\": 59663,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M736 480h-375.68l123.52-136.32c12.16-12.8 10.88-33.28-1.92-45.44-12.8-11.52-33.28-10.24-45.44 2.56l-172.16 189.44c-1.28 1.92-1.92 3.84-3.2 5.12-0.64 1.92-1.92 3.2-2.56 4.48-3.2 7.68-3.2 16 0 23.68 0.64 1.92 1.92 3.2 2.56 4.48 1.28 1.92 1.92 3.84 3.2 5.76l172.16 189.44c6.4 7.040 14.72 10.24 23.68 10.24 7.68 0 15.36-2.56 21.76-8.32 12.8-12.16 14.080-32 1.92-45.44l-123.52-135.68h375.68c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_left_circle\"\r\n      ],\r\n      \"defaultCode\": 59664,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M893.44 524.16c1.28-3.84 2.56-7.68 2.56-11.52 0 0 0-0.64 0-0.64s0-0.64 0-0.64c0-3.84-0.64-7.68-1.92-10.88-0.64-1.92-1.92-3.2-2.56-4.48-1.28-1.92-1.92-3.84-3.2-5.12l-271.36-298.24c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l222.080 244.48h-631.68c-17.92-0.64-32 13.44-32 31.36s14.080 32 32 32h631.68l-222.080 244.48c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.2 23.68-10.24l270.72-297.6c1.28-1.28 1.92-3.2 3.2-5.12 0.64-2.56 1.92-3.84 2.56-5.12z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_right\"\r\n      ],\r\n      \"defaultCode\": 59665,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M768 512.64c0 0 0-0.64 0-0.64s0-0.64 0-0.64c0-3.84-0.64-7.68-1.92-10.88-0.64-1.92-1.92-3.2-2.56-4.48-1.28-1.92-1.92-3.84-3.2-5.12l-172.8-190.080c-12.16-12.8-32-14.080-45.44-1.92-12.8 12.16-14.080 32-1.92 45.44l123.52 136.32h-375.68c-17.92-0.64-32 13.44-32 31.36s14.080 32 32 32h375.68l-123.52 136.32c-12.16 12.8-10.88 33.28 1.92 45.44 6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.2 23.68-10.24l172.16-189.44c1.28-1.28 1.92-3.2 3.2-5.12 0.64-1.28 1.92-3.2 2.56-4.48 1.28-4.48 2.56-8.32 2.56-12.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_right_circle\"\r\n      ],\r\n      \"defaultCode\": 59666,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M831.36 407.040l-297.6-270.72c-1.92-1.28-3.84-1.92-5.12-3.2-1.92-0.64-3.2-1.92-4.48-2.56-3.84-1.28-7.68-2.56-11.52-2.56 0 0-0.64 0-0.64 0s-0.64 0-0.64 0c-3.84 0-7.68 1.28-11.52 2.56-1.28 0.64-2.56 1.92-4.48 2.56-1.28 1.28-3.2 1.92-5.12 3.2l-297.6 270.72c-12.8 12.16-14.080 32-1.92 45.44s32 14.080 45.44 1.92l243.84-222.080v631.68c0 17.92 14.080 32 32 32s32-14.080 32-32v-631.68l244.48 222.080c6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.84 23.68-10.24 11.52-13.44 10.88-33.28-2.56-45.44z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_up\"\r\n      ],\r\n      \"defaultCode\": 59667,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M533.76 264.32c-1.92-1.28-3.84-1.92-5.12-3.2-1.92-0.64-3.2-1.92-5.12-2.56-3.2-1.28-7.040-1.92-10.24-2.56-0.64 0-0.64 0-1.28 0 0 0-0.64 0-0.64 0-3.84 0-7.68 0.64-11.52 2.56-1.28 0.64-2.56 1.92-4.48 2.56-1.28 1.28-3.2 1.92-5.12 3.2l-189.44 172.16c-12.8 12.16-14.080 32-1.92 45.44 12.16 12.8 32 14.080 45.44 1.92l135.68-123.52v375.68c0 17.92 14.080 32 32 32s32-14.080 32-32v-375.68l136.32 123.52c6.4 5.76 14.080 8.32 21.76 8.32 8.96 0 17.28-3.84 23.68-10.24 12.16-12.8 10.88-33.28-1.92-45.44l-190.080-172.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"arrows_up_circle\"\r\n      ],\r\n      \"defaultCode\": 59668,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 64.64c-7.040 0-14.080 1.92-19.84 7.040l-512 415.36c-16 12.8-16 37.12 0 49.92l512 415.36c6.4 5.12 13.44 7.040 19.84 7.040 16.64 0 32-12.8 32-32v-830.72c0-18.56-15.36-32-32-32zM800 860.16l-429.44-348.16 429.44-348.16v696.32z\",\r\n        \"M160 64c-17.92 0-32 14.080-32 32v832c0 17.92 14.080 32 32 32s32-14.080 32-32v-832c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"back\"\r\n      ],\r\n      \"defaultCode\": 59669,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M544 256h-306.56l73.6-73.6c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-83.2 83.2c-37.12 37.12-37.12 98.56 0 135.68l82.56 82.56c6.4 6.4 14.72 9.6 23.040 9.6s16.64-3.2 22.4-9.6c12.8-12.8 12.8-32.64 0-45.44l-72.96-72.96h306.56c158.72 0 288 114.56 288 256s-114.56 256-256 256h-288c-17.92 0-32 14.080-32 32s14.080 32 32 32h288c176.64 0 320-143.36 320-320s-158.080-320-352-320z\"\r\n      ],\r\n      \"tags\": [\r\n        \"back2\"\r\n      ],\r\n      \"defaultCode\": 59670,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 832h-928v-672c0-17.92-14.080-32-32-32s-32 14.080-32 32v704c0 17.92 14.080 32 32 32h960c17.92 0 32-14.080 32-32s-14.080-32-32-32z\",\r\n        \"M200.32 736h48c17.92 0 32-14.080 32-32v-352c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v352c0 17.92 14.080 32 32 32z\",\r\n        \"M424.32 736h48c17.92 0 32-14.080 32-32v-544c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v544c0 17.92 14.080 32 32 32z\",\r\n        \"M648.32 736h48c17.92 0 32-14.080 32-32v-224c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v224c0 17.92 14.080 32 32 32z\",\r\n        \"M872.32 736h48c17.92 0 32-14.080 32-32v-96c0-17.92-14.080-32-32-32h-48c-17.92 0-32 14.080-32 32v96c0 17.92 14.080 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"bar_chart\"\r\n      ],\r\n      \"defaultCode\": 59671,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M384 289.28c103.511 18.974 183.906 99.369 202.645 201.34l5.355 37.38c1.664 83.618 32.609 159.702 82.963 218.724 32.743 37.848 81.038 62.305 135.070 63.512 2.893 0.131 6.041 0.203 9.206 0.203 49.851 0 95.502-17.98 130.823-47.808 47.421-42.377 77.321-104.091 77.321-172.789 0-13.936-1.23-27.584-3.589-40.843-15.802-115.612-96.292-210.431-203.728-246.927-5.83-59.972-33.491-112.204-75.464-148.237-37.326-34.435-87.026-55.407-141.624-55.407-15.45 0-30.507 1.679-45 4.865-50.978 13.144-95.035 42.857-126.222 83.055-5.349 6.138-8.373 13.551-8.373 21.671 0 9.702 4.318 18.395 11.136 24.264l3.882 0.035c-16.194-4.069-34.894-6.611-54.115-7.035-6.122-0.402-12.937-0.628-19.805-0.628s-13.683 0.226-20.438 0.672l0.918-10.928c2.146-25.821 17.213-47.697 38.649-59.326 9.194-6.020 14.921-15.878 14.921-27.074 0-17.745-14.385-32.129-32.129-32.129-6.549 0-12.64 1.959-17.719 5.324-21.296 13.667-38.167 32.799-48.818 55.437-15.283-6.45-32.842-10.693-51.392-10.693-8.665 0-17.114 0.926-25.253 2.684-14.038 3.203-24.942 16.257-24.942 31.858 0 18.096 14.67 32.765 32.765 32.765 2.495 0 4.924-0.279 7.259-0.807 2.119-0.298 4.818-0.492 7.563-0.492 18.069 0 34.174 8.414 44.609 21.537l0.089 0.117c-122.24 28.16-197.12 139.52-240 236.8-33.28 74.88-80.64 215.68-24.32 316.8 29.62 61.043 88.975 103.532 158.719 108.761l704.641 0.039c17.673 0 32-14.327 32-32s-14.327-32-32-32h-704c-46.865-4.923-85.815-34.493-103.996-75.345-44.484-80.175 3.516-208.815 26.556-260.655 65.92-147.2 156.8-217.6 275.84-206.72zM480 229.12c22.819-30.959 55.277-53.65 92.895-63.73 10.070-2.168 20.278-3.255 30.74-3.255 37.877 0 72.427 14.244 98.586 37.668 31.776 28.801 51.738 70.411 51.738 116.685 0 1.235-0.014 2.466-0.042 3.694l0.003 32.457 24.96 3.84c95.283 23.285 167.236 101.484 180.973 198.412 1.914 10.51 2.924 21.141 2.924 32.008 0 52.511-23.597 99.51-60.766 130.973-21.518 16.537-48.512 26.376-77.803 26.376-4.242 0-8.436-0.206-12.573-0.61 0.52 0.041 0.514 0.041 0.509 0.041-35.592 0-67.555-15.537-89.478-40.198-39.378-48.777-63.39-111.177-64.105-179.163l-5.761-42.399c-22.953-111.752-100.307-201.385-202.566-241.156-1.098-0.63 0.217-0.553 1.55-0.553 10.23 0 19.402-4.528 25.621-11.69z\"\r\n      ],\r\n      \"tags\": [\r\n        \"bk\"\r\n      ],\r\n      \"defaultCode\": 59672,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M928 112h-112v-48c0-17.673-14.327-32-32-32h-32c-17.673 0-32 14.327-32 32v48h-417.92v-48c0-17.673-14.327-32-32-32h-32c-17.673 0-32 14.327-32 32v48h-110.080c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-704c0-53.019-42.981-96-96-96zM64 208c0-17.673 14.327-32 32-32h110.080v16c0 17.673 14.327 32 32 32h32c17.673 0 32-14.327 32-32v-16h417.92v16c0 17.673 14.327 32 32 32h32c17.673 0 32-14.327 32-32v-16h112c17.673 0 32 14.327 32 32v96h-896zM928 944h-832c-17.673 0-32-14.327-32-32v-544h896v544c0 17.673-14.327 32-32 32z\",\r\n        \"M800 560h-448c-17.673 0-32 14.327-32 32s14.327 32 32 32h448c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M800 752h-576c-17.673 0-32 14.327-32 32s14.327 32 32 32h576c17.673 0 32-14.327 32-32s-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"calendar\"\r\n      ],\r\n      \"defaultCode\": 59673,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M991.977 740.89l-235.076-235.076c-18.668-19-44.163-31.239-72.506-32.739-0.459-0.013-0.679-0.013-0.9-0.013-28.303 0-53.871 11.707-72.127 30.543l-24.77 24.771-93.157-88.79 26.2-26.2c19.727-19.751 31.927-47.024 31.927-77.146s-12.2-57.395-31.928-77.147l-229.253-227.069c-19.751-19.727-47.024-31.927-77.146-31.927s-57.395 12.2-77.147 31.928l-104.073 104.073c-19.727 19.751-31.927 47.024-31.927 77.146s12.2 57.395 31.928 77.147l229.253 229.253c19.751 19.727 47.024 31.927 77.146 31.927s57.395-12.2 77.147-31.928l24.016-26.199 88.79 86.607-24.745 24.745c-18.743 18.595-30.398 44.309-30.567 72.747 1.512 28.648 13.751 54.143 32.735 72.796l235.092 235.092c19.893 20.067 47.406 32.552 77.836 32.75 28.492-0.254 54.181-11.888 72.815-30.565l101.165-101.165c17.332-19.047 27.945-44.475 27.945-72.382 0-28.286-10.903-54.025-28.736-73.245zM366.806 467.969c-6.674 6.476-15.789 10.468-25.837 10.468s-19.163-3.992-25.846-10.477l-231.428-229.245c-6.648-6.596-10.764-15.735-10.764-25.837s4.116-19.241 10.762-25.834l104.076-103.348c6.596-6.648 15.735-10.764 25.837-10.764s19.241 4.116 25.834 10.762l228.528 229.256c6.648 6.596 10.764 15.735 10.764 25.837s-4.116 19.241-10.762 25.834l-28.386 25.475-34.206-34.206c-6.612-6.612-15.747-10.702-25.837-10.702-20.18 0-36.538 16.359-36.538 36.538 0 10.090 4.090 19.224 10.702 25.837l36.389 32.023zM945.399 842.053l-101.163 101.163c-6.403 6.177-15.13 9.982-24.745 9.982s-18.342-3.805-24.756-9.992l-237.249-237.977c-6.66-6.74-10.807-15.976-10.917-26.179 0.234-8.222 3.516-15.614 8.747-21.142l24.731-24.73 37.845 37.845c6.612 6.612 15.747 10.702 25.837 10.702 20.18 0 36.538-16.359 36.538-36.538 0-10.090-4.090-19.224-10.702-25.837l-37.845-37.845 26.2-26.2c5.617-5.412 13.269-8.745 21.7-8.745 0.303 0 0.605 0.004 0.906 0.013l-0.044-0.001c10.225 0.11 19.46 4.257 26.204 10.921l235.072 235.072c6.397 6.444 10.351 15.321 10.351 25.122 0 9.432-3.662 18.009-9.641 24.387z\"\r\n      ],\r\n      \"tags\": [\r\n        \"chain\"\r\n      ],\r\n      \"defaultCode\": 59674,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M416 864c-8.784-0.129-16.691-3.778-22.395-9.595l-384.005-384.005c-5.815-5.815-9.411-13.847-9.411-22.72 0-17.745 14.386-32.131 32.131-32.131 8.873 0 16.905 3.596 22.72 9.411l360.32 360.32 553.6-615.040c5.768-5.662 13.681-9.157 22.409-9.157 17.673 0 32 14.327 32 32 0 7.612-2.658 14.604-7.097 20.097l-575.953 639.939c-5.676 6.446-13.847 10.579-22.988 10.879z\"\r\n      ],\r\n      \"tags\": [\r\n        \"check_1\"\r\n      ],\r\n      \"defaultCode\": 59675,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM438.4 758.4l384-384c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-360.96 361.6-169.6-168.96c-12.8-12.8-32.64-12.8-45.44 0s-12.8 32.64 0 45.44l192 192c6.4 5.76 14.72 8.96 23.040 8.96s16.64-3.2 22.4-9.6z\"\r\n      ],\r\n      \"tags\": [\r\n        \"check_2\"\r\n      ],\r\n      \"defaultCode\": 59676,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448z\"\r\n      ],\r\n      \"tags\": [\r\n        \"circle\"\r\n      ],\r\n      \"defaultCode\": 59677,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1024 518.4c-0.269-4.829-1.908-9.228-4.529-12.872l0.049-3.128-187.52-234.24-5.12-4.48h-122.88v-172.16c0.001-0.191 0.002-0.416 0.002-0.642 0-49.967-40.326-90.516-90.208-90.878l-523.554-0c-49.917 0.362-90.242 40.91-90.242 90.878 0 0.226 0.001 0.451 0.002 0.677l-0 712.925c-0.001 0.191-0.002 0.416-0.002 0.642 0 49.967 40.326 90.516 90.208 90.878l357.794 0v49.92c0.362 43.2 35.467 78.080 78.717 78.080 0.001 0 0.002-0 0.003-0l419.2 0c43.2-0.362 78.080-35.467 78.080-78.717 0-0.001-0-0.002-0-0.003l0-422.4c0.053-0.67 0.084-1.452 0.084-2.24s-0.030-1.57-0.090-2.343zM443.52 832h-353.28c-14.571-0.354-26.248-12.249-26.248-26.873 0-0.228 0.003-0.455 0.008-0.681l-0.001-712.926c-0.005-0.193-0.008-0.42-0.008-0.647 0-14.623 11.677-26.519 26.215-26.872l523.553-0.001c14.571 0.354 26.248 12.249 26.248 26.873 0 0.228-0.003 0.455-0.008 0.681l0.001 164.446h-113.28c-43.476 0-78.72 35.244-78.72 78.72v497.28zM945.92 960h-419.2c-8.13 0-14.72-6.59-14.72-14.72v-610.56c0-8.13 6.59-14.72 14.72-14.72h263.68l169.6 213.76v411.52c0 8.13-6.59 14.72-14.72 14.72z\",\r\n        \"M512 160c0-17.673-14.327-32-32-32h-256c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.673 0 32-14.327 32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"clipboard\"\r\n      ],\r\n      \"defaultCode\": 59678,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M716.8 761.6l-256-192c-8.32-5.76-12.8-15.36-12.8-25.6v-320c0-17.92 14.080-32 32-32s32 14.080 32 32v304l243.2 182.4c14.080 10.88 17.28 30.72 6.4 44.8-6.4 8.32-16 12.8-25.6 12.8-6.4 0-13.44-1.92-19.2-6.4z\",\r\n        \"M960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448 200.96 448 448 448 448-200.96 448-448zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"clock\"\r\n      ],\r\n      \"defaultCode\": 59679,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 1024c-8.32 0-16.64-3.2-22.4-9.6l-457.6-456.96-457.6 457.6c-12.8 12.8-32.64 12.8-45.44 0s-12.8-32.64 0-45.44l457.6-457.6-456.96-457.6c-12.8-12.8-12.8-32.64 0-45.44s32.64-12.8 45.44 0l456.96 457.6 457.6-457.6c12.8-12.8 32.64-12.8 45.44 0s12.8 32.64 0 45.44l-457.6 457.6 457.6 457.6c12.8 12.8 12.8 32.64 0 45.44-6.4 5.76-14.72 8.96-23.040 8.96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"close\"\r\n      ],\r\n      \"defaultCode\": 59680,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM736 768c-8.32 0-16.64-3.2-22.4-9.6l-201.6-200.96-201.6 201.6c-12.8 12.8-32.64 12.8-45.44 0s-12.8-32.64 0-45.44l201.6-201.6-200.96-201.6c-12.8-12.8-12.8-32.64 0-45.44s32.64-12.8 45.44 0l200.96 201.6 201.6-201.6c12.8-12.8 32.64-12.8 45.44 0s12.8 32.64 0 45.44l-201.6 201.6 201.6 201.6c12.8 12.8 12.8 32.64 0 45.44-6.4 5.76-14.72 8.96-23.040 8.96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"close_2\"\r\n      ],\r\n      \"defaultCode\": 59681,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M384 128h256c17.92 0 32-14.080 32-32s-14.080-32-32-32h-256c-17.92 0-32 14.080-32 32s14.080 32 32 32z\",\r\n        \"M928 192h-832c-17.92 0-32 14.080-32 32s14.080 32 32 32h96v672c0 17.92 14.080 32 32 32h576c17.92 0 32-14.080 32-32v-672h96c17.92 0 32-14.080 32-32s-14.080-32-32-32zM768 896h-128v-512c0-17.92-14.080-32-32-32s-32 14.080-32 32v512h-128v-512c0-17.92-14.080-32-32-32s-32 14.080-32 32v512h-128v-640h512v640z\"\r\n      ],\r\n      \"tags\": [\r\n        \"close3\"\r\n      ],\r\n      \"defaultCode\": 59682,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1011.2 489.6l-224-224c-12.8-12.8-32.64-12.8-45.44 0s-12.8 32.64 0 45.44l201.6 200.96-201.6 201.6c-12.8 12.8-12.8 32.64 0 45.44 6.4 6.4 14.72 9.6 22.4 9.6s16.64-3.2 22.4-9.6l224-224c12.8-12.8 12.8-33.28 0.64-45.44z\",\r\n        \"M282.24 265.6c-12.8-12.8-32.64-12.8-45.44 0l-224 224c-12.8 12.8-12.8 32.64 0 45.44l224 224c6.4 5.76 14.72 8.96 23.040 8.96s16.64-3.2 22.4-9.6c12.8-12.8 12.8-32.64 0-45.44l-201.6-200.96 201.6-201.6c12.16-12.16 12.16-32.64 0-44.8z\",\r\n        \"M616.32 129.28c-16.64-5.12-34.56 5.12-39.040 22.4l-192 704c-4.48 17.28 5.12 34.56 22.4 39.040 2.56 0.64 5.76 1.28 8.32 1.28 14.080 0 26.88-9.6 30.72-23.68l192-704c4.48-16.64-5.12-34.56-22.4-39.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"code\"\r\n      ],\r\n      \"defaultCode\": 59683,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 352c-88.32 0-160 71.68-160 160s71.68 160 160 160c88.32 0 160-71.68 160-160s-71.68-160-160-160zM512 608c-53.12 0-96-42.88-96-96s42.88-96 96-96 96 42.88 96 96-42.88 96-96 96z\",\r\n        \"M967.68 419.84l-69.76-14.080c-8.32-30.72-20.48-60.8-36.48-88.96l36.48-56.32c12.16-12.16 18.56-28.16 18.56-45.44s-7.040-33.28-19.2-45.44l-45.44-44.8c-24.96-24.96-65.92-24.32-85.76-3.2l-58.88 40.32c-26.88-14.72-55.68-26.88-85.12-35.2l-14.080-62.72c0-35.2-28.8-64-64-64h-64c-35.2 0-64 28.8-63.36 57.6l-14.080 69.76c-29.44 8.32-57.6 19.84-85.12 35.2l-53.76-35.84c-12.16-12.16-28.16-19.2-44.8-19.2-15.36-1.28-33.92 6.4-46.080 17.92l-45.44 44.8c-12.16 12.16-18.56 28.16-19.2 45.44 0 17.28 6.4 33.28 14.080 40.32l40.32 61.44c-15.36 28.16-27.52 58.24-36.48 88.96l-65.92 13.44c-35.2 0-64 28.8-64 64v64c0 35.2 27.52 62.080 57.6 63.36l74.88 14.72c8.96 29.44 21.12 58.24 36.48 84.48l-38.4 59.52c-12.16 12.16-18.56 28.16-18.56 45.44s7.040 33.28 19.2 45.44l45.44 44.8c24.96 24.96 65.92 24.32 85.76 3.2l65.92-44.8c24.32 12.8 49.92 23.68 76.8 31.36l14.72 71.68c0 35.2 28.8 64 64 64h64c35.2 0 64-28.8 63.36-57.6l15.36-77.44c26.88-7.68 52.48-17.92 76.8-31.36l60.8 40.96c24.96 24.96 65.28 25.6 90.24 0.64l45.44-44.8c12.16-12.16 19.2-28.16 19.2-45.44 0-16-5.76-30.72-16-42.88l-40.96-62.72c15.36-26.88 27.52-55.040 36.48-84.48l69.12-14.080c35.2 0 64-28.8 64-64v-64c-0-33.92-26.88-62.080-60.16-64zM957.44 548.48l-94.72 18.56c-12.16 2.56-21.76 11.52-24.96 23.68-8.96 36.48-23.68 71.040-44.16 103.040-7.040 10.88-7.040 24.32 0 34.56l57.6 87.040-50.56 40.96-81.92-55.68c-10.24-7.040-23.68-7.68-34.56-0.64-30.080 17.92-62.72 31.36-96 39.040-12.16 2.56-21.76 12.8-23.68 24.96l-20.48 103.68-64.64-6.4-19.2-97.28c-2.56-12.16-12.16-22.4-24.32-24.96-33.92-7.68-66.56-21.12-96.64-39.040-5.12-3.2-10.88-4.48-16.64-4.48-6.4 0-12.8 1.92-17.92 5.76l-87.040 59.52-41.6-49.92 53.76-81.92c7.040-10.88 7.040-24.32 0-34.56-20.48-32-35.2-66.56-44.16-103.040-2.56-12.16-12.16-21.76-24.32-23.68l-101.12-19.84 6.4-64.64 92.8-18.56c12.16-2.56 22.4-12.16 24.96-24.32 7.68-37.76 22.4-73.6 43.52-106.88 6.4-10.88 6.4-24.32 0-34.56l-55.040-83.2 50.56-40.96 76.16 51.84c10.24 7.040 24.32 7.68 35.2 0.64 32-19.84 66.56-34.56 103.68-42.88 12.16-2.56 21.76-12.8 24.32-24.96l17.28-95.36 64.64 6.4 17.92 89.6c2.56 12.16 12.16 22.4 24.32 24.96 36.48 8.32 71.68 22.4 103.68 42.88 10.88 6.4 24.32 6.4 35.2-0.64l80.64-55.68 41.6 49.92-51.2 78.080c-7.040 10.24-7.040 23.68-0.64 34.56 21.12 33.28 35.84 69.12 43.52 106.88 2.56 12.16 12.8 21.76 24.96 24.32l92.8 18.56c1.92 0.64 3.84 0.64 6.4 0.64l-6.4 64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"cog\"\r\n      ],\r\n      \"defaultCode\": 59684,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448z\",\r\n        \"M416 320h-192c-17.92 0-32 14.080-32 32s14.080 32 32 32h64v352c0 17.92 14.080 32 32 32s32-14.080 32-32v-352h64c17.92 0 32-14.080 32-32s-14.080-32-32-32z\",\r\n        \"M800 320h-192c-17.92 0-32 14.080-32 32s14.080 32 32 32h64v352c0 17.92 14.080 32 32 32s32-14.080 32-32v-352h64c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"cry\"\r\n      ],\r\n      \"defaultCode\": 59685,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M576 688c0 35.2-28.8 64-64 64s-64-28.8-64-64c0-23.040 13.44-42.88 32-54.4v-281.6c0-17.92 14.080-32 32-32s32 14.080 32 32v281.6c18.56 11.52 32 31.36 32 54.4zM512 0c-282.24 0-512 229.76-512 512 0 153.6 67.84 297.6 186.88 395.52 5.76 5.12 13.44 7.040 20.48 7.040 8.96 0 18.56-3.84 24.96-11.52 11.52-13.44 8.96-33.92-4.48-44.8-104.32-85.76-163.84-211.84-163.84-346.24 0-247.040 200.96-448 448-448s448 200.96 448 448c0 130.56-56.32 254.080-155.52 339.2-13.44 11.52-14.72 32-3.2 45.44s32 14.72 45.44 3.2c112.64-97.28 177.28-238.72 177.28-387.84 0-282.24-229.76-512-512-512zM825.6 384c5.12 0 10.24-1.28 14.72-3.84 16-8.32 21.76-27.52 14.080-42.88-66.56-129.28-197.76-209.28-342.4-209.28-136.32 0-264.32 73.6-332.8 192-8.96 15.36-3.2 34.56 12.16 43.52s34.56 3.84 43.52-11.52c56.96-98.56 163.2-160 277.12-160 120.96 0 229.76 66.56 284.8 174.080 5.76 11.52 17.28 17.92 28.8 17.92z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dashboard\"\r\n      ],\r\n      \"defaultCode\": 59686,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M700.16 367.36l-134.4 248.32c5.76 9.6 10.24 20.48 10.24 32 0 35.2-28.8 64-64 64s-64-28.8-64-64c0-34.56 27.52-62.72 62.080-63.36l133.76-247.68c8.32-15.36 28.16-21.12 43.52-12.8s21.12 27.52 12.8 43.52zM512 87.68c-282.24 0-512 229.76-512 512 0 64.64 12.16 128 35.84 187.52 6.4 16.64 24.96 24.32 41.6 17.92s24.32-24.96 17.92-41.6c-21.12-51.2-31.36-106.88-31.36-163.2 0-247.040 200.96-448 448-448s448 200.96 448 448c0 56.96-10.24 112-31.36 164.48-6.4 16.64 1.28 35.2 17.92 41.6 3.84 1.28 7.68 2.56 11.52 2.56 12.8 0 24.96-7.68 29.44-20.48 24.32-60.8 36.48-123.52 36.48-188.16 0-282.88-229.76-512.64-512-512.64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dashboard-2\"\r\n      ],\r\n      \"defaultCode\": 59687,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1026.566 395.228c0-44.271-37.213-81.484-107.148-111.639 64.16-28.231 107.148-64.16 107.148-110.997 0-229.694-1026.566-229.694-1026.566 0 0 45.554 41.704 81.484 107.148 110.997-69.935 29.514-107.148 67.368-107.148 111.639s43.629 84.050 111.639 115.489c-73.143 26.947-111.639 64.16-111.639 110.356s44.271 82.125 113.564 113.564c-74.426 32.722-113.564 68.652-113.564 114.206 0 114.847 256.642 175.158 513.283 175.158s513.283-60.311 513.283-175.158c0-45.554-39.138-84.050-113.564-114.206 69.293-31.439 113.564-66.085 113.564-113.564s-38.496-83.409-111.639-110.356c68.010-31.439 111.639-68.652 111.639-115.489zM64.16 172.591c0-37.855 158.476-110.997 449.123-110.997s449.123 73.143 449.123 110.997c0 21.815-53.253 55.178-154.627 80.201-89.47 19.411-192.249 30.528-297.625 30.528-103.131 0-203.774-10.649-300.891-30.907-91.85-24.644-145.103-58.008-145.103-79.822zM962.406 848.842c0 37.855-158.476 110.997-449.123 110.997s-449.123-73.143-449.123-110.997c0-16.682 39.138-51.328 146.927-78.276 86.899 19.618 186.698 30.859 289.122 30.859 4.596 0 9.187-0.023 13.773-0.068 3.167 0.045 7.735 0.067 12.308 0.067 102.447 0 202.269-11.241 298.299-32.557 98.678 28.646 137.816 62.651 137.816 79.974zM962.406 621.073c0 37.855-158.476 110.997-449.123 110.997s-449.123-73.143-449.123-110.997c0-16.682 39.138-51.328 146.927-78.276 90.753 19.262 195.026 30.292 301.875 30.292s211.121-11.030 311.741-32.013c98.565 28.668 137.702 63.315 137.702 79.997zM513.283 506.226c-290.647 0-449.123-73.143-449.123-110.997 0-16.682 39.138-51.328 146.927-78.276h10.907c87.542 19.545 188.096 30.761 291.264 30.797 1.467 0.005 3.174 0.008 4.881 0.008 101.196 0 199.881-10.752 294.975-31.175l2.363 1.653c107.789 25.664 146.927 59.669 146.927 76.992 0 37.213-158.476 110.997-449.123 110.997z\"\r\n      ],\r\n      \"width\": 1027,\r\n      \"tags\": [\r\n        \"data\"\r\n      ],\r\n      \"defaultCode\": 59688,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M889.905 136.662c-83.409-182.216-798.155-182.216-881.564 0-5.136 5.549-8.299 12.987-8.341 21.165l-0 705.773c0.042 8.186 3.205 15.624 8.36 21.194 41.685 91.729 241.866 139.207 440.763 139.207s399.078-47.479 440.782-139.228c5.136-5.549 8.299-12.987 8.341-21.165l0-705.773c-0.042-8.186-3.205-15.624-8.36-21.194zM834.085 621.073c0 45.554-150.135 110.997-384.962 110.997s-384.962-64.16-384.962-110.997v-131.529c101.772 51.5 221.867 81.664 349.007 81.664 12.646 0 25.222-0.298 37.722-0.889 8.966 0.59 21.542 0.889 34.188 0.889 127.141 0 247.236-30.164 353.52-83.726zM834.085 395.228c0 45.554-150.135 110.997-384.962 110.997s-384.962-66.085-384.962-110.997v-128.321c101.772 51.5 221.867 81.664 349.007 81.664 12.646 0 25.222-0.298 37.722-0.889 8.966 0.59 21.542 0.889 34.188 0.889 127.141 0 247.236-30.164 353.52-83.726zM449.123 61.594c234.827 0 384.962 64.16 384.962 110.997s-150.135 110.997-384.962 110.997-384.962-64.16-384.962-110.997 150.135-110.997 384.962-110.997zM449.123 959.84c-234.827 0-384.962-64.16-384.962-110.997v-133.454c101.817 51.497 221.958 81.657 349.144 81.657 12.598 0 25.127-0.296 37.581-0.881 8.93 0.585 21.459 0.881 34.057 0.881 127.186 0 247.327-30.161 353.662-83.72l-4.518 135.516c0 46.837-150.135 110.997-384.962 110.997z\"\r\n      ],\r\n      \"width\": 898,\r\n      \"tags\": [\r\n        \"data2\"\r\n      ],\r\n      \"defaultCode\": 59689,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M63.36 512.64l170.88 160v-319.36l-170.88 159.36z\",\r\n        \"M32 160h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M32 929.28h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 415.36h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 672h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dedent\"\r\n      ],\r\n      \"defaultCode\": 59690,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 614.4v-460.8c-1.743-49.882-42.6-89.657-92.747-89.657-1.144 0-2.283 0.021-3.417 0.062l-639.836-0.005c-0.97-0.036-2.109-0.057-3.253-0.057-50.147 0-91.003 39.775-92.742 89.498l-0.004 460.959c1.743 49.882 42.6 89.657 92.747 89.657 1.144 0 2.283-0.021 3.417-0.062l31.836 0.005v96c0.068 13.224 8.147 24.544 19.629 29.362 2.039 0.449 4.14 0.661 6.291 0.661s4.252-0.212 6.284-0.617c8.58-0.095 16.487-3.744 22.191-9.561l119.045-115.845h434.56c0.97 0.036 2.109 0.057 3.253 0.057 50.147 0 91.003-39.775 92.742-89.498zM288 640c-8.784 0.129-16.691 3.778-22.395 9.595l-73.605 72.965v-50.56c0-17.673-14.327-32-32-32h-64c-0.671 0.053-1.454 0.084-2.243 0.084-15.061 0-27.537-11.070-29.736-25.517l-0.021-460.967c1.904-14.586 14.253-25.733 29.206-25.733 0.984 0 1.957 0.048 2.916 0.143l639.879-0.010c0.838-0.085 1.81-0.133 2.794-0.133 14.952 0 27.301 11.147 29.19 25.584l0.016 460.949c-1.904 14.586-14.253 25.733-29.206 25.733-0.984 0-1.957-0.048-2.916-0.143zM1024 281.6v460.8c-1.743 49.882-42.6 89.657-92.747 89.657-1.144 0-2.283-0.021-3.417-0.062l-31.836 0.005v96c-0.253 17.479-14.482 31.551-31.997 31.551-8.726 0-16.635-3.492-22.408-9.155l-119.035-118.395h-306.56c-17.673 0-32-14.327-32-32s14.327-32 32-32h320c8.784 0.129 16.691 3.778 22.395 9.595l73.605 72.965v-50.56c0-17.673 14.327-32 32-32h64c0.838 0.085 1.81 0.133 2.794 0.133 14.952 0 27.301-11.147 29.19-25.584l0.016-460.949c-1.904-14.586-14.253-25.733-29.206-25.733-0.984 0-1.957 0.048-2.916 0.143-17.552-0.010-31.879-14.337-31.879-32.010s14.327-32 32-32c0.97-0.036 2.109-0.057 3.253-0.057 50.147 0 91.003 39.775 92.742 89.498zM288 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zM480 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zM672 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dialogue\"\r\n      ],\r\n      \"defaultCode\": 59691,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 614.4v-460.8c-1.743-49.882-42.6-89.657-92.747-89.657-1.144 0-2.283 0.021-3.417 0.062l-639.836-0.005c-0.97-0.036-2.109-0.057-3.253-0.057-50.147 0-91.003 39.775-92.742 89.498l-0.004 460.959c1.743 49.882 42.6 89.657 92.747 89.657 1.144 0 2.283-0.021 3.417-0.062l31.836 0.005v96c0.068 13.224 8.147 24.544 19.629 29.362 2.039 0.449 4.14 0.661 6.291 0.661s4.252-0.212 6.284-0.617c8.58-0.095 16.487-3.744 22.191-9.561l119.045-115.845h434.56c0.97 0.036 2.109 0.057 3.253 0.057 50.147 0 91.003-39.775 92.742-89.498zM288 640c-8.784 0.129-16.691 3.778-22.395 9.595l-73.605 72.965v-50.56c0-17.673-14.327-32-32-32h-64c-0.671 0.053-1.454 0.084-2.243 0.084-15.061 0-27.537-11.070-29.736-25.517l-0.021-460.967c1.904-14.586 14.253-25.733 29.206-25.733 0.984 0 1.957 0.048 2.916 0.143l639.879-0.010c0.838-0.085 1.81-0.133 2.794-0.133 14.952 0 27.301 11.147 29.19 25.584l0.016 460.949c-1.904 14.586-14.253 25.733-29.206 25.733-0.984 0-1.957-0.048-2.916-0.143z\",\r\n        \"M928 192c-17.673 0-32 14.327-32 32s14.327 32 32 32c0.838-0.085 1.81-0.133 2.794-0.133 14.952 0 27.301 11.147 29.19 25.584l0.016 460.949c-1.904 14.586-14.253 25.733-29.206 25.733-0.984 0-1.957-0.048-2.916-0.143l-63.879 0.010c-17.673 0-32 14.327-32 32v50.56l-73.6-73.6c-5.746-5.545-13.578-8.961-22.208-8.961-0.068 0-0.135 0-0.203 0.001l-319.99-0c-17.673 0-32 14.327-32 32s14.327 32 32 32h306.56l118.4 118.4c5.829 6.042 13.997 9.793 23.041 9.793 17.673 0 32-14.327 32-32 0-0.068-0-0.136-0.001-0.204l0-95.99h32c0.97 0.036 2.109 0.057 3.253 0.057 50.147 0 91.003-39.775 92.742-89.498l0.004-460.959c-1.743-49.882-42.6-89.657-92.747-89.657-1.144 0-2.283 0.021-3.417 0.062z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dialogue_empty\"\r\n      ],\r\n      \"defaultCode\": 59692,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M256 352c0-26.24 21.76-48 48-48s48 21.76 48 48c0 26.24-21.76 48-48 48s-48-21.76-48-48zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512zM960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448s448-200.96 448-448zM720 304c-26.24 0-48 21.76-48 48s21.76 48 48 48 48-21.76 48-48c0-26.24-21.76-48-48-48zM512 512c-124.8 0-234.88 94.080-255.36 218.88-3.2 17.28 8.96 33.92 26.24 37.12 1.92 0 3.2 0 5.12 0 15.36 0 28.8-10.88 31.36-26.88 15.36-92.8 99.84-165.12 192.64-165.12 96 0 178.56 71.040 192.64 164.48 2.56 17.28 19.2 29.44 36.48 26.88s29.44-18.56 26.88-36.48c-19.2-124.8-128.64-218.88-256-218.88z\"\r\n      ],\r\n      \"tags\": [\r\n        \"dispirited\"\r\n      ],\r\n      \"defaultCode\": 59693,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 608c-17.673 0-32 14.327-32 32v256c0 17.673-14.327 32-32 32h-832c-17.673 0-32-14.327-32-32v-256c0-17.673-14.327-32-32-32s-32 14.327-32 32v256c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-256c0-17.673-14.327-32-32-32z\",\r\n        \"M492.16 792.96v0c4.964 3.946 11.324 6.331 18.24 6.331s13.276-2.385 18.3-6.378l-0.060 0.046 160-128c8.662-5.818 14.286-15.577 14.286-26.65 0-17.673-14.327-32-32-32-8.512 0-16.248 3.324-21.981 8.744l-104.945 86.386v-637.44c0-17.673-14.327-32-32-32s-32 14.327-32 32v640l-108.16-88.96c-4.98-3.352-11.114-5.35-17.714-5.35-17.673 0-32 14.327-32 32 0 9.161 3.85 17.423 10.019 23.256z\"\r\n      ],\r\n      \"tags\": [\r\n        \"download\"\r\n      ],\r\n      \"defaultCode\": 59694,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M480 640c-17.518-0.203-31.641-14.451-31.641-31.998 0-8.111 3.018-15.517 7.991-21.157l511.97-575.965c5.832-6.065 14.015-9.833 23.079-9.833 17.673 0 32 14.327 32 32 0 7.629-2.67 14.634-7.125 20.133l-511.953 575.94c-5.894 6.686-14.478 10.881-24.042 10.881-0.098 0-0.196-0-0.293-0.001z\",\r\n        \"M864 1024h-704c-88.366 0-160-71.634-160-160v-704c0-88.366 71.634-160 160-160h512c17.673 0 32 14.327 32 32s-14.327 32-32 32h-512c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h704c53.019 0 96-42.981 96-96v-512c0-17.673 14.327-32 32-32s32 14.327 32 32v512c0 88.366-71.634 160-160 160z\"\r\n      ],\r\n      \"tags\": [\r\n        \"edit\"\r\n      ],\r\n      \"defaultCode\": 59695,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1024 928c0 17.92-14.080 32-32 32h-960c-17.92 0-32-14.080-32-32s14.080-32 32-32h960c17.92 0 32 14.080 32 32zM160 768c7.68 0 15.36-2.56 21.76-8.32l704-640c13.44-12.16 14.080-32 1.92-45.44-12.16-12.8-32-14.080-45.44-1.92l-704 640c-12.8 12.16-14.080 32-1.92 45.44 6.4 7.040 14.72 10.24 23.68 10.24z\"\r\n      ],\r\n      \"tags\": [\r\n        \"edit2\"\r\n      ],\r\n      \"defaultCode\": 59696,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M320 512c0 35.2-28.8 64-64 64s-64-28.8-64-64c0-35.2 28.8-64 64-64s64 28.8 64 64zM512 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64zM768 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"ellipsis\"\r\n      ],\r\n      \"defaultCode\": 59697,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M914.286 109.714h-804.571c-60.594 0-109.714 49.121-109.714 109.714v585.143c0 60.594 49.121 109.714 109.714 109.714h804.571c60.594 0 109.714-49.121 109.714-109.714v-585.143c0-60.594-49.121-109.714-109.714-109.714zM109.714 182.857h804.571c20.198 0 36.571 16.374 36.571 36.571v91.429l-427.886 261.851c-3.002 1.938-6.669 3.089-10.606 3.089s-7.604-1.152-10.684-3.137l-428.539-261.804v-91.429c0-20.198 16.374-36.571 36.571-36.571zM914.286 841.143h-804.571c-20.198 0-36.571-16.374-36.571-36.571v-408.137l389.851 238.446c13.859 8.557 30.657 13.627 48.64 13.627s34.781-5.070 49.045-13.859l390.178-238.214v408.137c0 20.198-16.374 36.571-36.571 36.571z\"\r\n      ],\r\n      \"tags\": [\r\n        \"email\"\r\n      ],\r\n      \"defaultCode\": 59698,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1024 568.96c0.053-0.67 0.084-1.452 0.084-2.24s-0.030-1.57-0.090-2.343l0.006 0.103-192-480.64c-4.896-11.693-16.216-19.772-29.431-19.84l-576.009-0c-1.447-0.232-3.115-0.364-4.813-0.364-13.426 0-24.92 8.268-29.67 19.99l-192.077 480.215c-0.106 0.96-0.167 2.073-0.167 3.2s0.061 2.24 0.179 3.336c-0.098 0.728-0.147 1.73-0.147 2.744s0.049 2.017 0.145 3.006l-0.010-0.126v256c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-256c0.129-1.056 0.202-2.28 0.202-3.52s-0.074-2.464-0.216-3.665zM245.76 128h532.48l166.4 416h-304.64c-0.069-0.001-0.15-0.001-0.231-0.001-16.32 0-29.787 12.217-31.753 28.005-0.016 53.176-42.997 96.156-96.016 96.156s-96-42.981-96-96c-1.982-15.944-15.449-28.161-31.769-28.161-0.081 0-0.162 0-0.244 0.001l-304.628-0zM960 832c0 17.673-14.327 32-32 32h-832c-17.673 0-32-14.327-32-32v-224h295.68c20.985 65.166 81.083 111.489 152 111.489s131.015-46.323 151.685-110.362l296.635-1.128z\"\r\n      ],\r\n      \"tags\": [\r\n        \"empty\"\r\n      ],\r\n      \"defaultCode\": 59699,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 961.92c-247.040 0-448-200.96-448-448 0-171.52 96-325.76 249.6-401.92 16-7.68 35.2-1.28 42.88 14.72 8.32 16 1.28 35.2-14.080 42.88-132.48 65.28-214.4 197.12-214.4 344.32 0 211.84 172.16 384 384 384s384-172.16 384-384c0-147.84-83.2-279.68-216.32-344.32-16-7.68-22.4-26.88-14.72-42.88s26.88-22.4 42.88-14.72c155.52 75.52 252.16 229.76 252.16 401.92 0 247.040-200.96 448-448 448z\",\r\n        \"M512 384c-17.92 0-32-14.080-32-32v-320c0-17.92 14.080-32 32-32s32 14.080 32 32v320c0 17.92-14.080 32-32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"end\"\r\n      ],\r\n      \"defaultCode\": 59700,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M528 832h-32c-26.24 0-48 21.76-48 48v32c0 26.24 21.76 48 48 48h32c26.24 0 48-21.76 48-48v-32c0-26.24-21.76-48-48-48z\",\r\n        \"M496 704h32c17.92 0 32-14.72 32-32v-576c0-17.92-14.080-32-32-32h-32c-17.92 0-32 14.080-32 32v576c0 17.28 14.080 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"exclamation\"\r\n      ],\r\n      \"defaultCode\": 59701,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM512 672v0c-26.24 0-48 21.76-48 48v0c0 26.24 21.76 48 48 48v0c26.24 0 48-21.76 48-48v0c0-26.24-21.76-48-48-48zM512 256v0c-21.76 0-39.68 17.92-39.68 39.68v304c0 22.4 17.92 40.32 39.68 40.32v0c21.76 0 39.68-17.92 39.68-39.68v-304.64c0.64-21.76-17.92-39.68-39.68-39.68z\"\r\n      ],\r\n      \"tags\": [\r\n        \"exclamation_circle\"\r\n      ],\r\n      \"defaultCode\": 59702,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 706.56c26.51 0 48 21.49 48 48s-21.49 48-48 48c-26.51 0-48-21.49-48-48s21.49-48 48-48z\",\r\n        \"M512 354.56h0.64c21.915 0 39.68 17.765 39.68 39.68v240.64c0 21.915-17.765 39.68-39.68 39.68h-0.64c-21.915 0-39.68-17.765-39.68-39.68v-240.64c0-21.915 17.765-39.68 39.68-39.68z\",\r\n        \"M992 966.4h-960c-17.59-0.109-31.808-14.394-31.808-31.999 0-5.891 1.592-11.411 4.369-16.152l479.918-839.529c6.035-9.116 16.245-15.046 27.84-15.046s21.805 5.93 27.763 14.922l480.077 840.444c2.696 4.59 4.288 10.109 4.288 16.001 0 17.605-14.217 31.89-31.797 31.999zM87.040 902.4h849.92l-424.96-743.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"exclamation_triangle\"\r\n      ],\r\n      \"defaultCode\": 59703,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 896c-282.24 0-512-172.16-512-384s229.76-384 512-384 512 172.16 512 384-229.76 384-512 384zM512 192c-247.040 0-448 143.36-448 320s200.96 320 448 320 448-143.36 448-320-200.96-320-448-320z\",\r\n        \"M512 704c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192s-85.961 192-192 192zM512 384c-70.692 0-128 57.308-128 128s57.308 128 128 128c70.692 0 128-57.308 128-128s-57.308-128-128-128z\"\r\n      ],\r\n      \"tags\": [\r\n        \"eye\"\r\n      ],\r\n      \"defaultCode\": 59704,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M878.080 780.16c85.67-60.244 141.986-157.235 145.903-267.568 0.017-212.432-229.743-384.592-511.983-384.592-1.63-0.015-3.557-0.024-5.486-0.024-111.987 0-217.097 29.44-308.015 81.002l-82.019-73.298c-5.557-4.775-12.839-7.682-20.8-7.682-17.674 0-32.002 14.328-32.002 32.002 0 9.713 4.327 18.415 11.159 24.284l70.443 59.556c-85.42 60.362-141.503 157.337-145.265 267.589-0.015 212.411 229.745 384.571 511.985 384.571 1.63 0.015 3.557 0.024 5.486 0.024 111.987 0 217.097-29.44 308.015-81.002l82.019 73.298c5.557 4.775 12.839 7.682 20.8 7.682 17.674 0 32.002-14.328 32.002-32.002 0-9.713-4.327-18.415-11.159-24.284zM512 192c247.040 0 448 143.36 448 320-4.52 95.007-55.255 177.261-130.072 225.243l-153.448-127.323c17.093-27.942 27.3-61.717 27.52-97.859 0-106.1-85.961-192.061-192-192.061-47.079 0.485-90.013 17.839-123.135 46.294l-132.865-115.414c74.042-37.141 161.336-58.885 253.708-58.885 0.806 0 1.612 0.002 2.418 0.005zM396.8 456.96l188.8 159.36c-20.327 14.208-45.56 22.703-72.778 22.703-70.692 0-128-57.308-128-128 0-19.624 4.416-38.217 12.309-54.839zM437.76 407.68c20.523-14.616 46.104-23.368 73.73-23.368 70.692 0 128 57.308 128 128 0 19.882-4.533 38.706-12.622 55.494zM512 832c-247.040 0-448-143.36-448-320 4.52-95.007 55.255-177.261 130.072-225.243l153.448 127.323c-17.093 27.942-27.3 61.717-27.52 97.859-0 106.1 85.961 192.061 192 192.061 47.079-0.485 90.013-17.839 123.135-46.294l132.865 115.414c-74.042 37.141-161.336 58.885-253.708 58.885-0.806 0-1.612-0.002-2.418-0.005z\"\r\n      ],\r\n      \"tags\": [\r\n        \"eye_slash\"\r\n      ],\r\n      \"defaultCode\": 59705,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 345.6c0 0 0 0 0 0 0-6.4-6.4-12.8-6.4-19.2l-256-256c-6.4-0-12.8-6.4-19.2-6.4 0 0 0 0-6.4 0 0 0 0 0 0 0h-326.4c-51.2 0-89.6 38.4-89.6 89.6v723.2c0 51.2 38.4 89.6 89.6 89.6h524.8c51.2 0 89.6-38.4 89.6-89.6v-531.2c0 6.4 0 6.4 0 0zM608 172.8l147.2 147.2h-147.2v-147.2zM774.4 896h-524.8c-12.8 0-25.6-12.8-25.6-25.6v-716.8c0-12.8 12.8-25.6 25.6-25.6h294.4v224c0 19.2 12.8 32 32 32h224v486.4c0 12.8-12.8 25.6-25.6 25.6z\"\r\n      ],\r\n      \"tags\": [\r\n        \"file\"\r\n      ],\r\n      \"defaultCode\": 59706,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 345.6c0 0 0 0 0 0 0-6.4-6.4-12.8-6.4-19.2l-256-256c-6.4-0-12.8-6.4-19.2-6.4 0 0 0 0-6.4 0 0 0 0 0 0 0h-326.4c-51.2 0-89.6 38.4-89.6 89.6v723.2c0 51.2 38.4 89.6 89.6 89.6h524.8c51.2 0 89.6-38.4 89.6-89.6v-531.2c0 6.4 0 6.4 0 0zM608 172.8l147.2 147.2h-147.2v-147.2zM774.4 896h-524.8c-12.8 0-25.6-12.8-25.6-25.6v-716.8c0-12.8 12.8-25.6 25.6-25.6h294.4v224c0 19.2 12.8 32 32 32h224v486.4c0 12.8-12.8 25.6-25.6 25.6z\",\r\n        \"M640 576h-96v-96c0-19.2-12.8-32-32-32s-32 12.8-32 32v96h-96c-19.2 0-32 12.8-32 32s12.8 32 32 32h96v96c0 19.2 12.8 32 32 32s32-12.8 32-32v-96h96c19.2 0 32-12.8 32-32s-12.8-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"file_plus\"\r\n      ],\r\n      \"defaultCode\": 59707,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 960h-704c-88.366 0-160-71.634-160-160v-640c0-53.019 42.981-96 96-96h256c53.019 0 96 42.981 96 96v32h416c88.366 0 160 71.634 160 160v448c0 88.366-71.634 160-160 160zM96 128c-17.673 0-32 14.327-32 32v640c0 53.019 42.981 96 96 96h704c53.019 0 96-42.981 96-96v-448c0-53.019-42.981-96-96-96h-448c-17.673 0-32-14.327-32-32v-64c0-17.673-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"folder\"\r\n      ],\r\n      \"defaultCode\": 59708,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M928 320h-35.2c-15.408-73.554-79.729-128-156.767-128-0.011 0-0.023 0-0.034 0l-287.998-0v-32c0-53.019-42.981-96-96-96h-256c-53.019 0-96 42.981-96 96v640c0 88.366 71.634 160 160 160h704c0.397 0.006 0.865 0.009 1.334 0.009 51.19 0 92.896-40.608 94.662-91.368l64.004-452.641c0-53.019-42.981-96-96-96zM64 800v-640c0-17.673 14.327-32 32-32h256c17.673 0 32 14.327 32 32v64c0 17.673 14.327 32 32 32h320c41.441 0.12 76.694 26.479 90.029 63.331l-538.029 0.669c-0.397-0.006-0.865-0.009-1.334-0.009-51.19 0-92.896 40.608-94.662 91.368l-64.004 452.641c0.139 9.875 1.767 19.321 4.67 28.19-39.984-12.851-68.461-49.167-68.67-92.165zM896 864c0 17.673-14.327 32-32 32h-640c-0.094 0.001-0.204 0.002-0.315 0.002-16.093 0-29.412-11.88-31.664-27.349l63.979-452.653c0-17.673 14.327-32 32-32h640c0.094-0.001 0.204-0.002 0.315-0.002 16.093 0 29.412 11.88 31.664 27.349z\"\r\n      ],\r\n      \"tags\": [\r\n        \"folder_open\"\r\n      ],\r\n      \"defaultCode\": 59709,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 192h-416v-32c0-51.2-44.8-96-96-96h-256c-51.2 0-96 44.8-96 96v640c0 89.6 70.4 160 160 160h704c89.6 0 160-70.4 160-160v-448c0-89.6-70.4-160-160-160zM960 800c0 51.2-44.8 96-96 96h-704c-51.2 0-96-44.8-96-96v-640c0-19.2 12.8-32 32-32h256c19.2 0 32 12.8 32 32v64c0 19.2 12.8 32 32 32h448c51.2 0 96 44.8 96 96v448z\",\r\n        \"M640 576h-96v-96c0-19.2-12.8-32-32-32s-32 12.8-32 32v96h-96c-19.2 0-32 12.8-32 32s12.8 32 32 32h96v96c0 19.2 12.8 32 32 32s32-12.8 32-32v-96h96c19.2 0 32-12.8 32-32s-12.8-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"folder_plus\"\r\n      ],\r\n      \"defaultCode\": 59710,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M352 0h-320c-17.673 0-32 14.327-32 32v320c0 17.673 14.327 32 32 32s32-14.327 32-32v-288h288c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M992 0h-320c-17.673 0-32 14.327-32 32s14.327 32 32 32h288v288c0 17.673 14.327 32 32 32s32-14.327 32-32v-320c0-17.673-14.327-32-32-32z\",\r\n        \"M352 960h-288v-288c0-17.673-14.327-32-32-32s-32 14.327-32 32v320c0 17.673 14.327 32 32 32h320c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M992 640c-17.673 0-32 14.327-32 32v288h-288c-17.673 0-32 14.327-32 32s14.327 32 32 32h320c17.673 0 32-14.327 32-32v-320c0-17.673-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"full_screen\"\r\n      ],\r\n      \"defaultCode\": 59711,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 960c-4.48 0-8.96-1.28-12.8-3.2-5.12-2.56-125.44-68.48-247.68-176.64-72.32-64-129.92-129.28-171.52-193.92-53.12-82.56-80-165.12-80-245.76 0-152.32 126.72-276.48 282.88-276.48 53.12 0 108.8 19.2 158.080 54.4 28.8 20.48 53.12 45.44 71.040 71.68 17.92-26.24 42.24-51.2 71.040-71.68 49.28-35.2 104.96-54.4 158.080-54.4 156.16 0 282.88 124.16 282.88 276.48 0 80-26.88 162.56-80 245.76-41.6 64.64-99.2 129.92-171.52 193.92-122.24 107.52-242.56 173.44-247.68 176.64-3.84 1.92-8.32 3.2-12.8 3.2v0zM288 128c-123.52 0-224 97.92-224 218.88 0 156.16 124.16 298.88 227.84 390.4 92.8 81.92 186.88 139.52 220.16 158.72 33.28-19.2 127.36-76.8 220.16-158.72 103.68-92.16 227.84-234.24 227.84-390.4 0-120.96-100.48-218.88-224-218.88-89.6 0-176.64 72.32-199.040 136.96-3.84 10.24-13.44 17.28-24.96 17.28s-21.12-7.040-24.96-17.92c-22.4-64-109.44-136.32-199.040-136.32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"heart\"\r\n      ],\r\n      \"defaultCode\": 59712,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M896 443.52c52.48-39.040 96-85.76 124.16-139.52 8.32-15.36 1.92-35.2-13.44-42.88-15.36-8.32-35.2-2.56-42.88 13.44-70.4 133.12-251.52 222.72-451.84 222.72s-381.44-89.6-451.84-222.72c-8.32-16-27.52-21.76-42.88-13.44-16 7.68-21.76 27.52-13.44 42.88 28.16 53.76 71.68 101.12 124.16 139.52l-120.96 151.040c-10.88 14.080-8.96 34.56 5.12 45.44 5.76 4.48 12.8 7.040 19.84 7.040 9.6 0 18.56-3.84 24.96-12.16l125.44-156.16c55.68 31.36 119.68 54.4 188.8 67.84l-80 174.72c-7.68 16 0 35.2 16 42.24 4.48 1.92 8.96 3.2 13.44 3.2 12.16 0 23.68-7.040 29.44-18.56l87.040-191.36c24.32 2.56 49.28 4.48 74.88 4.48 20.48 0 40.32-1.92 60.16-3.2l87.040 190.080c5.12 11.52 16.64 18.56 28.8 18.56 4.48 0 8.96-0.64 13.44-3.2 16-7.040 23.040-26.24 16-42.24l-78.72-172.16c74.88-12.8 143.36-37.12 202.88-71.040l124.8 156.16c6.4 7.68 15.36 12.16 24.96 12.16 7.040 0 14.080-2.56 19.84-7.040 14.080-10.88 16-31.36 5.12-44.8l-120.32-151.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"hide\"\r\n      ],\r\n      \"defaultCode\": 59713,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1013.76 455.68l-480-448c-5.692-5.291-13.347-8.537-21.76-8.537s-16.068 3.247-21.78 8.555l-479.98 447.982c-7.252 5.914-11.845 14.848-11.845 24.855 0 17.673 14.327 32 32 32 9.21 0 17.511-3.891 23.349-10.118l19.856-18.577v508.16c0 17.673 14.327 32 32 32h295.68c17.673 0 32-14.327 32-32v-262.4h157.44v262.4c0 17.673 14.327 32 32 32h295.68c17.673 0 32-14.327 32-32v-508.16l19.84 18.56c5.855 6.245 14.156 10.135 23.365 10.135 17.673 0 32-14.327 32-32 0-10.007-4.594-18.942-11.787-24.81zM885.76 960h-231.040v-262.4c0-17.673-14.327-32-32-32h-221.44c-17.673 0-32 14.327-32 32v262.4h-231.68v-535.68l374.4-348.8 374.4 348.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"home\"\r\n      ],\r\n      \"defaultCode\": 59714,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 160h-704c-88.32 0-160 71.68-160 160v384c0 88.32 71.68 160 160 160h704c88.32 0 160-71.68 160-160v-384c0-88.32-71.68-160-160-160zM960 704c0 53.12-42.88 96-96 96h-704c-53.12 0-96-42.88-96-96v-384c0-53.12 42.88-96 96-96h704c53.12 0 96 42.88 96 96v384zM392.32 520.32c19.2-21.12 31.36-49.28 31.36-80.64 0-65.92-53.76-119.68-119.68-119.68s-119.68 53.76-119.68 119.68c0 31.36 12.16 58.88 31.36 80.64-52.48 30.72-87.68 87.040-87.68 151.68 0 17.92 14.080 32 32 32s32-14.080 32-32c0-62.080 50.56-112 112-112s112 49.92 112 112c0 17.92 14.72 32 32 32s32-14.080 32-32c0-64.64-35.2-120.96-87.68-151.68zM248.32 439.68c0-30.72 24.96-55.68 55.68-55.68s55.68 24.96 55.68 55.68-24.96 56.32-55.68 56.32-55.68-25.6-55.68-56.32zM896 384c0 17.92-14.080 32-32 32h-256c-17.92 0-32-14.080-32-32s14.080-32 32-32h256c17.92 0 32 14.080 32 32zM576 512c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32s-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32zM896 640c0 17.92-14.080 32-32 32h-256c-17.92 0-32-14.080-32-32s14.080-32 32-32h256c17.92 0 32 14.080 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"id\"\r\n      ],\r\n      \"defaultCode\": 59715,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 64h-704c-88.366 0-160 71.634-160 160v576c0 88.366 71.634 160 160 160h704c88.366 0 160-71.634 160-160v-576c0-88.366-71.634-160-160-160zM160 128h704c53.019 0 96 42.981 96 96v240c-51.707-63.449-125.845-106.897-210.161-118.216-115.599-5.944-205.839 86.216-309.519 191.816l-46.72 47.36c-50.586 60.047-125.822 97.934-209.908 97.934-43.553 0-84.731-10.164-121.293-28.25l1.6-430.644c0-53.019 42.981-96 96-96zM864 896h-704c-53.019 0-96-42.981-96-96v-76.16c35.545 13.673 76.665 21.644 119.631 21.76 101.432-1.655 192.232-45.611 255.812-114.938l47.597-48.262c90.88-92.8 168.96-173.44 256-173.44h5.76c64 0 133.76 52.48 215.040 150.4v240.64c0 0.023 0 0.050 0 0.077 0 53.019-42.981 96-96 96-1.35 0-2.694-0.028-4.031-0.083z\",\r\n        \"M256 448c70.692 0 128-57.308 128-128s-57.308-128-128-128c-70.692 0-128 57.308-128 128s57.308 128 128 128zM256 256c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64s28.654-64 64-64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"image\"\r\n      ],\r\n      \"defaultCode\": 59716,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M234.24 512.64l-170.88 160v-319.36l170.88 159.36z\",\r\n        \"M32 160h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M32 929.28h960c17.673 0 32-14.327 32-32s-14.327-32-32-32h-960c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 415.36h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\",\r\n        \"M476.8 672h515.2c17.673 0 32-14.327 32-32s-14.327-32-32-32h-515.2c-17.673 0-32 14.327-32 32s14.327 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"indent\"\r\n      ],\r\n      \"defaultCode\": 59717,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M528 64h-32c-26.24 0-48 21.76-48 48v32c0 26.24 21.76 48 48 48h32c26.24 0 48-21.76 48-48v-32c0-26.24-21.76-48-48-48z\",\r\n        \"M528 320h-32c-17.92 0-32 14.080-32 32v576c0 17.28 14.080 32 32 32h32c17.92 0 32-14.72 32-32v-576c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"info\"\r\n      ],\r\n      \"defaultCode\": 59718,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM560 304v0c0-26.24-21.76-48-48-48v0c-26.24 0-48 21.76-48 48v0c0 26.24 21.76 48 48 48v0c26.24 0 48-21.76 48-48zM552.32 728.32v-304.64c0-21.76-18.56-39.68-40.32-39.68v0c-21.76 0-39.68 17.92-39.68 39.68v304c0 22.4 17.92 40.32 39.68 40.32v0c21.76 0 40.32-17.92 40.32-39.68z\"\r\n      ],\r\n      \"tags\": [\r\n        \"info_circle\"\r\n      ],\r\n      \"defaultCode\": 59719,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M877.44 832l73.6-73.6c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-73.6 73.6-82.56-82.56 73.6-73.6c12.8-12.8 12.8-32.64 0-45.44s-32.64-12.8-45.44 0l-73.6 73.6-128-128c39.68-49.28 64-110.72 64-178.56 0-158.72-129.28-288-288-288s-288 129.28-288 288 129.28 288 288 288c67.84 0 129.28-24.32 178.56-64l374.4 374.4c6.4 6.4 14.72 9.6 22.4 9.6s16.64-3.2 22.4-9.6c12.8-12.8 12.8-32.64 0-45.44l-72.32-72.96zM352 576c-123.52 0-224-100.48-224-224s100.48-224 224-224 224 100.48 224 224-100.48 224-224 224z\"\r\n      ],\r\n      \"tags\": [\r\n        \"key\"\r\n      ],\r\n      \"defaultCode\": 59720,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 832h-928v-297.6l181.12-164.48c12.8 8.32 26.88 14.080 42.88 14.080 14.72 0 27.52-5.12 39.040-11.52l268.16 268.16c-1.28 5.12-3.2 10.24-3.2 15.36 0 44.16 35.84 80 80 80s80-35.84 80-80c0-5.76-1.92-10.24-3.2-15.36l166.4-166.4c8.96 3.2 18.56 5.76 28.8 5.76 44.16-0 80-35.84 80-80s-35.84-80-80-80-80 35.84-80 80c0 10.24 2.56 19.84 5.76 28.8l-158.72 158.72c-11.52-6.4-24.32-11.52-39.040-11.52s-27.52 5.12-39.040 11.52l-268.16-268.16c1.28-5.12 3.2-10.24 3.2-15.36 0-44.16-35.84-80-80-80s-80 35.84-80 80c0 3.84 1.92 7.68 2.56 11.52l-146.56 132.48v-288c0-17.92-14.080-32-32-32s-32 14.080-32 32v704c0 17.92 14.080 32 32 32h960c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"line_chart\"\r\n      ],\r\n      \"defaultCode\": 59721,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M146.286 109.714c0 40.396-32.747 73.143-73.143 73.143s-73.143-32.747-73.143-73.143c0-40.396 32.747-73.143 73.143-73.143s73.143 32.747 73.143 73.143z\",\r\n        \"M987.429 146.286h-658.286c-20.198 0-36.571-16.374-36.571-36.571s16.374-36.571 36.571-36.571h658.286c20.198 0 36.571 16.374 36.571 36.571s-16.374 36.571-36.571 36.571z\",\r\n        \"M146.286 512c0 40.396-32.747 73.143-73.143 73.143s-73.143-32.747-73.143-73.143c0-40.396 32.747-73.143 73.143-73.143s73.143 32.747 73.143 73.143z\",\r\n        \"M987.429 548.571h-658.286c-20.198 0-36.571-16.374-36.571-36.571s16.374-36.571 36.571-36.571h658.286c20.198 0 36.571 16.374 36.571 36.571s-16.374 36.571-36.571 36.571z\",\r\n        \"M146.286 914.286c0 40.396-32.747 73.143-73.143 73.143s-73.143-32.747-73.143-73.143c0-40.396 32.747-73.143 73.143-73.143s73.143 32.747 73.143 73.143z\",\r\n        \"M987.429 950.857h-658.286c-20.198 0-36.571-16.374-36.571-36.571s16.374-36.571 36.571-36.571h658.286c20.198 0 36.571 16.374 36.571 36.571s-16.374 36.571-36.571 36.571z\"\r\n      ],\r\n      \"tags\": [\r\n        \"list\"\r\n      ],\r\n      \"defaultCode\": 59722,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M672 384h-32v-96c0.249-4.374 0.392-9.491 0.392-14.641 0-145.115-112.843-263.874-255.568-273.315-144.372 9.441-257.215 128.2-257.215 273.315 0 5.15 0.142 10.267 0.423 15.348l-0.031 95.294h-32c-53.019 0-96 42.981-96 96v448c0 53.019 42.981 96 96 96h576c53.019 0 96-42.981 96-96v-448c0-53.019-42.981-96-96-96zM192 288c-0.333-4.429-0.523-9.593-0.523-14.802 0-109.812 84.318-199.93 191.742-209.144 108.985 9.214 193.303 99.332 193.303 209.144 0 5.209-0.19 10.373-0.563 15.486l0.040 95.316h-384zM704 928c0 17.673-14.327 32-32 32h-576c-17.673 0-32-14.327-32-32v-448c0-17.673 14.327-32 32-32h576c17.673 0 32 14.327 32 32z\",\r\n        \"M384 608c-17.673 0-32 14.327-32 32v128c0 17.673 14.327 32 32 32s32-14.327 32-32v-128c0-17.673-14.327-32-32-32z\"\r\n      ],\r\n      \"width\": 768,\r\n      \"tags\": [\r\n        \"lock\"\r\n      ],\r\n      \"defaultCode\": 59723,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M736 480h-448c-17.92 0-32 14.080-32 32s14.080 32 32 32h448c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"minus\"\r\n      ],\r\n      \"defaultCode\": 59724,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM768 512c0-17.92-14.080-32-32-32h-448c-17.92 0-32 14.080-32 32s14.080 32 32 32h448c17.92 0 32-14.080 32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"minus_circle\"\r\n      ],\r\n      \"defaultCode\": 59725,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M736 544h-448c-17.673 0-32-14.327-32-32s14.327-32 32-32h448c17.673 0 32 14.327 32 32s-14.327 32-32 32z\",\r\n        \"M864 1024h-704c-88.366 0-160-71.634-160-160v-704c0-88.366 71.634-160 160-160h704c88.366 0 160 71.634 160 160v704c0 88.366-71.634 160-160 160zM160 64c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h704c53.019 0 96-42.981 96-96v-704c0-53.019-42.981-96-96-96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"minus_square\"\r\n      ],\r\n      \"defaultCode\": 59726,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M544 1024h-384c-88.366 0-160-71.634-160-160v-704c0-88.366 71.634-160 160-160h384c88.366 0 160 71.634 160 160v704c0 88.366-71.634 160-160 160zM160 64c-53.019 0-96 42.981-96 96v704c0 53.019 42.981 96 96 96h384c53.019 0 96-42.981 96-96v-704c0-53.019-42.981-96-96-96z\",\r\n        \"M352 896c-35.346 0-64-28.654-64-64s28.654-64 64-64c35.346 0 64 28.654 64 64s-28.654 64-64 64z\",\r\n        \"M416 192h-128c-17.673 0-32-14.327-32-32s14.327-32 32-32h128c17.673 0 32 14.327 32 32s-14.327 32-32 32z\"\r\n      ],\r\n      \"width\": 704,\r\n      \"tags\": [\r\n        \"mobile\"\r\n      ],\r\n      \"defaultCode\": 59727,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1018.88 494.72c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0c-0.64-0.64-0.64-1.28-0.64-1.28s0 0 0 0 0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0v0 0c0 0 0 0 0 0s0 0 0 0c-0.64-0.64-1.28-1.92-1.92-2.56l-160-176c-12.16-12.8-32-14.080-45.44-1.92s-14.080 32-1.92 45.44l111.36 122.24h-376.32v-376.32l122.24 111.36c13.44 12.16 33.28 10.88 45.44-1.92s10.88-33.28-1.92-45.44l-176-160c-1.28-0.64-1.92-1.28-2.56-1.92 0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s-0.64-0.64-1.28-0.64c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0c-10.24-6.4-24.32-6.4-34.56 0 0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0c-0.64 0-0.64 0.64-1.28 0.64 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0v0c0 0 0 0 0 0s0 0 0 0c-1.92 0.64-2.56 1.28-3.84 1.92l-176 160c-12.8 12.16-14.080 32-1.92 45.44s32 14.080 45.44 1.92l122.24-111.36v374.4h-375.68l111.36-122.24c12.16-12.8 10.88-33.28-1.92-45.44s-33.28-10.88-45.44 1.92l-160 176c-5.12 5.76-8.32 13.44-8.32 21.76s3.2 16 8.32 21.76l160 176c12.16 13.44 32 14.080 45.44 1.92 12.8-12.16 14.080-32 1.92-45.44l-111.36-122.24h375.68v376.96l-122.24-111.36c-12.8-11.52-33.28-10.88-45.44 1.92s-10.88 33.28 1.92 45.44l176 160c6.4 5.76 14.080 8.32 21.76 8.32s15.36-2.56 21.76-8.32l176-160c13.44-12.16 14.080-32 1.92-45.44s-32-14.080-45.44-1.92l-122.24 111.36v-375.68h375.68l-111.36 122.24c-12.16 12.8-10.88 33.28 1.92 45.44s33.28 10.88 45.44-1.92l160-176c0.64-0.64 1.28-1.28 1.92-2.56 0 0 0 0 0 0s0 0 0 0v0 0c0 0 0 0 0 0s0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0.64-0.64 0.64-1.28c0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0v0c0 0 0 0 0 0s0 0 0 0c3.84-5.76 5.76-11.52 5.76-17.92s-1.92-12.16-5.12-17.28z\"\r\n      ],\r\n      \"tags\": [\r\n        \"move\"\r\n      ],\r\n      \"defaultCode\": 59728,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M211.84 71.68c-5.76-4.48-12.8-7.040-19.84-7.040-16.64 0-32 12.8-32 32v830.080c0 19.2 15.36 32 32 32 7.040 0 14.080-1.92 19.84-7.040l512-415.36c16-12.8 16-37.12 0-49.92l-512-414.72zM224 860.16v-696.32l429.44 348.16-429.44 348.16zM896 96v832c0 17.92-14.080 32-32 32s-32-14.080-32-32v-832c0-17.92 14.080-32 32-32s32 14.080 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"next\"\r\n      ],\r\n      \"defaultCode\": 59729,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M730.24 128h-90.24c-1.713-35.746-31.111-64.080-67.128-64.080-1.151 0-2.295 0.029-3.432 0.086l-6.24-0.006c-1.713-35.746-31.111-64.080-67.128-64.080-1.151 0-2.295 0.029-3.432 0.086l-153.44-0.006c-0.977-0.051-2.121-0.080-3.272-0.080-36.016 0-65.414 28.333-67.122 63.927l-6.406 0.153c-0.795-0.033-1.728-0.052-2.666-0.052-36.135 0-65.671 28.251-67.726 63.871l-90.248 0.182c-0.777-0.022-1.693-0.034-2.611-0.034-53.673 0-97.391 42.627-99.145 95.873l-0.004 704.161c1.759 53.408 45.476 96.034 99.149 96.034 0.918 0 1.833-0.012 2.745-0.037l628.346 0.003c0.777 0.022 1.693 0.034 2.611 0.034 53.673 0 97.391-42.627 99.145-95.873l0.004-704.161c-1.759-53.408-45.476-96.034-99.149-96.034-0.918 0-1.833 0.012-2.745 0.037zM262.4 128h38.4c17.673 0 32-14.327 32-32v-32c0.953-0.348 2.053-0.549 3.2-0.549s2.247 0.201 3.267 0.57l153.533-0.021c3.84 0 6.4 0 6.4 0v32c0 17.673 14.327 32 32 32h38.4c3.84 0 6.4 0 6.4 0v128c-1.043 0.423-2.253 0.669-3.52 0.669s-2.477-0.246-3.585-0.692l-312.895 0.023v-94.080s0 0 0 0 0 0 0 0v-33.92c0.953-0.348 2.053-0.549 3.2-0.549s2.247 0.201 3.267 0.57zM768 928c-1.643 18.062-16.713 32.103-35.064 32.103-0.949 0-1.889-0.038-2.819-0.111l-628.357 0.008c-0.807 0.066-1.747 0.103-2.696 0.103-18.35 0-33.421-14.042-35.053-31.966l-0.010-704.137c1.643-18.062 16.713-32.103 35.064-32.103 0.949 0 1.889 0.038 2.819 0.111l90.117-0.008v64c2.063 35.801 31.6 64.052 67.734 64.052 0.938 0 1.871-0.019 2.799-0.057l307.067 0.004c0.977 0.051 2.121 0.080 3.272 0.080 36.016 0 65.414-28.333 67.122-63.927l0.006-64.153h90.24c0.807-0.066 1.747-0.103 2.696-0.103 18.35 0 33.421 14.042 35.053 31.966z\",\r\n        \"M608 448h-384c-17.673 0-32 14.327-32 32s14.327 32 32 32h384c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M608 576h-384c-17.673 0-32 14.327-32 32s14.327 32 32 32h384c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M608 704h-384c-17.673 0-32 14.327-32 32s14.327 32 32 32h384c17.673 0 32-14.327 32-32s-14.327-32-32-32z\"\r\n      ],\r\n      \"width\": 832,\r\n      \"tags\": [\r\n        \"order\"\r\n      ],\r\n      \"defaultCode\": 59730,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 832h-704c-88.32 0-160-71.68-160-160v-320c0-88.32 71.68-160 160-160h704c88.32 0 160 71.68 160 160v320c0 88.32-71.68 160-160 160zM160 256c-53.12 0-96 42.88-96 96v320c0 53.12 42.88 96 96 96h704c53.12 0 96-42.88 96-96v-320c0-53.12-42.88-96-96-96h-704zM256 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM512 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM768 448c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"password\"\r\n      ],\r\n      \"defaultCode\": 59731,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M768 160v704c0 17.92-14.080 32-32 32s-32-14.080-32-32v-704c0-17.92 14.080-32 32-32s32 14.080 32 32zM288 128c-17.92 0-32 14.080-32 32v704c0 17.92 14.080 32 32 32s32-14.080 32-32v-704c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pause\"\r\n      ],\r\n      \"defaultCode\": 59732,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 64h-704c-88.366 0-160 71.634-160 160v384c0 88.366 71.634 160 160 160h320v128h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32h448c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192v-128h320c88.366 0 160-71.634 160-160v-384c0-88.366-71.634-160-160-160zM960 608c0 53.019-42.981 96-96 96h-704c-53.019 0-96-42.981-96-96v-384c0-53.019 42.981-96 96-96h704c53.019 0 96 42.981 96 96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pc\"\r\n      ],\r\n      \"defaultCode\": 59733,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M448.64 1024c-247.040 0-448.64-201.6-448.64-448.64 0-232.96 181.76-429.44 414.080-447.36 8.96-0.64 17.92 2.56 24.32 8.32s10.24 14.72 10.24 23.68v415.36h415.36c8.96 0 17.28 3.84 23.68 10.24 5.76 6.4 8.96 15.36 8.32 24.32-17.92 232.32-214.4 414.080-447.36 414.080zM384.64 195.84c-182.4 31.36-320.64 191.36-320.64 379.52 0 211.84 172.8 384.64 384.64 384.64 188.16 0 348.16-138.24 378.88-320.64h-410.88c-17.92 0-32-14.080-32-32v-411.52zM990.080 512h-446.080c-17.92 0-32-14.080-32-32v-446.080c0-16.64 12.8-30.72 29.44-32 11.52-1.28 23.040-1.92 34.56-1.92 247.040 0 448 200.96 448 448 0 11.52-0.64 23.040-1.92 34.56-1.28 16.64-14.72 29.44-32 29.44zM576 448h384c0-211.84-172.16-384-384-384v384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pie_chart\"\r\n      ],\r\n      \"defaultCode\": 59734,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M960 352c0-104.32-92.8-190.72-208-192h-48c0-53.12-42.88-96-96-96h-192c-53.12 0-96 42.88-96 96v64c0 53.12 42.88 96 96 96h192c53.12 0 96-42.88 96-96h48c79.36 0.64 144 58.24 144 128 0 65.28-56.32 118.4-128.64 126.72l10.88-21.76c7.68-16 1.28-35.2-14.080-42.88-16-7.68-35.2-1.28-42.88 14.080l-18.56 37.12c-7.040-46.080-46.72-81.28-94.72-81.28h-192c-53.12 0-96 42.88-96 96h-48.64c-114.56 1.28-207.36 87.68-207.36 192 0 99.2 83.2 180.48 189.44 190.080l-10.24 19.84c-7.68 16-1.28 35.2 14.080 42.88 4.48 2.56 9.6 3.2 14.080 3.2 11.52 0 23.040-6.4 28.8-17.92l19.84-40.32c3.84 50.56 45.44 90.24 96 90.24h192c53.12 0 96-42.88 96-96v-64c0-53.12-42.88-96-96-96h-192c-50.56 0-92.16 39.68-95.36 89.6l-19.84-39.68c-7.68-16-26.88-22.4-42.88-14.080-16 7.68-22.4 26.88-14.080 42.88l7.68 15.36c-69.76-9.6-123.52-62.72-123.52-126.080 0-69.76 64.64-127.36 144-128h48c0 53.12 42.88 96 96 96h192c51.2 0 92.8-40.32 95.36-90.24l17.92 35.2c5.76 11.52 16.64 17.92 28.8 17.92 5.12 0 9.6-1.28 14.080-3.2 16-7.68 22.4-26.88 14.080-42.88l-7.040-14.080c105.6-10.88 188.8-91.52 188.8-190.72zM640 224c0 17.92-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32v-64c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32v64zM384 800c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32v64c0 17.92-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32v-64zM640 544c0 17.92-14.080 32-32 32h-192c-17.92 0-32-14.080-32-32v-64c0-17.92 14.080-32 32-32h192c17.92 0 32 14.080 32 32v64z\"\r\n      ],\r\n      \"tags\": [\r\n        \"pipeline\"\r\n      ],\r\n      \"defaultCode\": 59735,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 1024c-282.24 0-512-229.76-512-512s229.76-512 512-512 512 229.76 512 512-229.76 512-512 512zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448c247.040 0 448-200.96 448-448s-200.96-448-448-448zM674.56 487.040l-221.44-174.72c-21.12-16.64-51.84-1.28-51.84 25.6v348.8c0 26.88 30.72 41.6 51.84 24.96l220.8-174.080c16.64-13.44 16.64-37.76 0.64-50.56z\"\r\n      ],\r\n      \"tags\": [\r\n        \"play\"\r\n      ],\r\n      \"defaultCode\": 59736,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M788.48 487.040l-512-415.36c-6.4-4.48-13.44-7.040-20.48-7.040-16.64 0-32 12.8-32 32v830.080c0 19.2 15.36 32 32 32 7.040 0 14.080-1.92 19.84-7.040l512-415.36c16-12.16 16-36.48 0.64-49.28zM288 860.16v-696.32l429.44 348.16-429.44 348.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"play2\"\r\n      ],\r\n      \"defaultCode\": 59737,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM435.2 277.76c-6.4-4.48-13.44-7.040-19.84-7.040-16.64 0-32 12.8-32 32v418.56c0 19.2 15.36 32 32 32 7.040 0 14.080-1.92 19.84-7.040l257.92-209.28c16-12.8 16-37.12 0-49.92l-257.92-209.28zM446.72 654.080v-284.16l175.36 142.080-175.36 142.080z\"\r\n      ],\r\n      \"tags\": [\r\n        \"play3\"\r\n      ],\r\n      \"defaultCode\": 59738,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 480h-448v-448c0-17.673-14.327-32-32-32s-32 14.327-32 32v448h-448c-17.673 0-32 14.327-32 32s14.327 32 32 32h448v448c0 17.673 14.327 32 32 32s32-14.327 32-32v-448h448c17.673 0 32-14.327 32-32s-14.327-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"plus\"\r\n      ],\r\n      \"defaultCode\": 59739,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM768 512c0 17.92-14.080 32-32 32h-192v192c0 17.92-14.080 32-32 32s-32-14.080-32-32v-192h-192c-17.92 0-32-14.080-32-32s14.080-32 32-32h192v-192c0-17.92 14.080-32 32-32s32 14.080 32 32v192h192c17.92 0 32 14.080 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"plus_circle\"\r\n      ],\r\n      \"defaultCode\": 59740,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M736 480h-192v-192c0-17.673-14.327-32-32-32s-32 14.327-32 32v192h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32h192v192c0 17.673 14.327 32 32 32s32-14.327 32-32v-192h192c17.673 0 32-14.327 32-32s-14.327-32-32-32z\",\r\n        \"M864 0h-704c-88.366 0-160 71.634-160 160v704c0 88.366 71.634 160 160 160h704c88.366 0 160-71.634 160-160v-704c0-88.366-71.634-160-160-160zM960 864c0 53.019-42.981 96-96 96h-704c-53.019 0-96-42.981-96-96v-704c0-53.019 42.981-96 96-96h704c53.019 0 96 42.981 96 96z\"\r\n      ],\r\n      \"tags\": [\r\n        \"plus_square\"\r\n      ],\r\n      \"defaultCode\": 59741,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M288 1024h-28.16c-53.899-0.59-103.318-19.294-142.574-50.296-16.516-15.857-27.093-38.705-27.093-64.022 0-1.21 0.024-2.415 0.072-3.613 0.182-10.792 2.759-21.11 7.224-30.343-0.191 0.311-0.191 0.164-0.191 0.017 0-16.933 6.576-32.33 17.313-43.777 7.736-9.272 16.58-17.302 26.405-24.001-7.211-11.019-14.852-23.366-21.7-36.202-15.85 18.142-38.597 31.589-64.547 33.971-18.017-1.23-32.714-12.704-38.65-28.47-47.46-128.304 24.22-242.864 79.9-308.144-0.307-2.974-0.482-6.427-0.482-9.92s0.175-6.946 0.516-10.349c-0.35-2.469-0.529-5.83-0.529-9.233 0-17.412 4.698-33.727 12.896-47.746 0.366-21.536 9.823-41.198 24.678-55.195 1.849-186.345 153.301-336.68 339.865-336.68 0.455 0 0.91 0.001 1.365 0.003 95.682 1.136 181.882 41.11 243.684 104.87 59.888 59.839 97.902 141.387 101.189 231.796 20.586 26.507 33.017 59.67 33.017 95.737 0 11.649-1.297 22.996-3.754 33.903 46.914 59.134 123.074 186.494 64.194 315.134-6.86 15.838-22.3 26.746-40.303 26.88l-0.017 0c-25.388-4.282-46.627-19.211-59.306-39.944-7.74 14.345-15.178 26.699-23.349 38.509 13.187 6.364 23.766 15.516 32.569 26.187 10.507 10.879 17.17 25.167 18.079 40.998 4.284 8.969 6.86 19.287 7.047 30.187 0.043 1.090 0.067 2.295 0.067 3.505 0 25.318-10.576 48.165-27.552 64.366-38.797 30.659-88.216 49.363-141.982 49.952-9.311 1.097-19.94 1.722-30.715 1.722-60.737 0-116.835-19.861-162.155-53.442l-30.623 0.521c-43.28 33.235-98.216 53.261-157.829 53.261-3.014 0-6.016-0.051-9.005-0.153zM171.52 867.84l16.64 10.24-35.2 28.16c0.761 7.543 3.528 14.322 7.753 19.942 28.625 20.977 64.619 33.68 103.574 33.818 8.769 1.341 18.846 2.107 29.103 2.107 48.637 0 93.252-17.224 128.077-45.904l9.253-8.683h19.84c5.935 0.428 12.859 0.672 19.84 0.672s13.905-0.244 20.764-0.724l13.156 0.052 10.24 9.6c34.274 28.509 78.75 45.813 127.267 45.813 10.649 0 21.104-0.834 31.302-2.439-0.615 0.152-0.006 0.155 0.603 0.155 38.55 0 74.184-12.485 103.080-33.632 3.367-4.196 5.714-10.125 5.714-16.602 0-1.702-0.162-3.367-0.472-4.979l-35.174-27.996 16.64-8.96c-9.226-7.011-20.159-12.324-32.035-15.235l-51.165-12.925 34.56-39.040c27.198-30.422 47.768-67.37 59.068-108.169l22.852-86.391 37.12 78.72c8.096 17.832 17.726 33.203 29.097 47.094 27.863-99.574-43.177-200.054-76.457-240.374l-12.16-14.080 6.4-17.28c2.851-8.335 4.497-17.938 4.497-27.925 0-23.036-8.756-44.028-23.122-59.827l-8.895-9.527v-12.8c-0.29-155.557-124.137-282.093-278.614-286.71-1.236-0.019-2.193-0.023-3.152-0.023-153.756 0-278.4 124.644-278.4 278.4 0 3.381 0.060 6.747 0.18 10.099l-0.014 18.714-16 12.8c-5.196 2.883-8.655 8.337-8.655 14.599 0 1.176 0.122 2.323 0.354 3.429l3.821 24.852-15.36 7.040c-0.346 2.499-0.543 5.386-0.543 8.32s0.197 5.821 0.58 8.65c0.481 6.257 2.079 12.345 4.583 17.939l7.54 18.211-13.44 14.72c-54.512 50.852-88.494 123.105-88.494 203.295 0 9.997 0.528 19.871 1.558 29.595 11.246-13.525 21.231-27.387 29.431-42.364l37.665-65.087 21.76 72.32c12.199 40.458 32.215 75.37 58.461 104.57l33.059 36.87-48 14.72c-11.391 2.117-21.508 6.366-30.364 12.341zM151.68 435.2v0z\"\r\n      ],\r\n      \"width\": 934,\r\n      \"tags\": [\r\n        \"qq\"\r\n      ],\r\n      \"defaultCode\": 59742,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M832 320c0 93.44-40.32 181.76-111.36 242.56-12.16 10.24-26.88 19.2-42.88 28.8-59.52 35.2-133.76 79.36-133.76 240.64 0 17.92-14.080 32-32 32s-32-14.080-32-32c0-197.76 103.68-259.2 165.12-295.68 13.44-7.68 24.96-14.72 33.92-22.4 56.32-48.64 88.96-119.040 88.96-193.92 0-141.44-114.56-256-256-256-140.16 0-254.72 113.92-256 253.44 0 17.28-14.72 32-32 32 0 0 0 0 0 0-17.92 0-32-14.72-32-32.64 1.28-174.72 145.28-316.8 320-316.8 176.64 0 320 143.36 320 320zM512 960c-17.92 0-32 14.080-32 32s14.080 32 32 32 32-14.080 32-32c0-17.92-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"question\"\r\n      ],\r\n      \"defaultCode\": 59743,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M709.12 385.92c0 57.6-24.96 112-68.48 149.12-8.96 7.68-19.2 12.8-29.44 18.56-33.28 17.92-67.2 36.48-67.2 118.4 0 17.92-14.080 32-32 32s-32-14.080-32-32c0-120.32 62.72-154.24 100.48-174.080 7.68-4.48 14.72-8.32 18.56-10.88 29.44-25.6 46.080-62.080 46.080-101.12 0-73.6-59.52-133.12-133.12-133.12-72.96 0-132.48 58.88-133.12 131.84 0 17.92-16.64 30.72-32 32-17.92 0-32-14.72-32-32 1.28-108.16 89.6-195.84 197.12-195.84 108.8 0 197.12 88.32 197.12 197.12zM512 768c-17.92 0-32 14.080-32 32s14.080 32 32 32c17.92 0 32-14.080 32-32s-14.080-32-32-32zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512zM960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448s448-200.96 448-448z\"\r\n      ],\r\n      \"tags\": [\r\n        \"question_circle\"\r\n      ],\r\n      \"defaultCode\": 59744,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M714.88 872.32c8.32 16 2.56 35.2-13.44 43.52-64 33.28-133.12 49.92-202.88 49.92-106.24 0-211.84-39.040-293.76-113.28-172.16-156.8-188.8-420.48-42.88-598.4l-122.88 28.16c-17.28 3.84-34.56-6.4-38.4-23.68s6.4-34.56 23.68-38.4l227.84-53.12 53.12 227.84c3.84 17.28-6.4 34.56-23.68 38.4-2.56 0.64-4.48 0.64-7.040 0.64-14.72 0-27.52-10.24-31.36-24.96l-27.52-118.4c-128 151.68-115.2 379.52 32.64 513.92 115.2 104.96 285.44 126.72 423.68 54.4 15.36-8.32 34.56-2.56 42.88 13.44zM1023.36 765.44c-3.84-17.28-21.12-27.52-38.4-23.68l-122.88 28.8c68.48-83.2 103.68-187.52 98.56-296.32-5.76-116.48-55.68-223.36-142.080-302.080-135.040-123.52-334.72-149.12-496-63.36-16 8.32-21.76 27.52-13.44 42.88s27.52 21.76 42.88 13.44c138.24-72.96 308.48-51.2 423.68 54.4 73.6 66.56 116.48 158.080 120.96 257.28 4.48 94.72-26.88 185.6-88.32 257.28l-27.52-119.040c-3.84-17.28-21.12-28.16-38.4-23.68-17.28 3.84-28.16 21.12-23.68 38.4l53.12 227.84 227.84-53.12c16.64-4.48 27.52-21.76 23.68-39.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"refresh\"\r\n      ],\r\n      \"defaultCode\": 59745,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M864 0h-704c-88.366 0-160 71.634-160 160v704c0 88.366 71.634 160 160 160h704c88.366 0 160-71.634 160-160v-704c0-88.366-71.634-160-160-160zM768 64v320h-512v-320zM960 864c0 53.019-42.981 96-96 96h-704c-53.019 0-96-42.981-96-96v-704c0-53.019 42.981-96 96-96h32v352c0 17.673 14.327 32 32 32h576c17.673 0 32-14.327 32-32v-352h32c53.019 0 96 42.981 96 96z\",\r\n        \"M640 288c17.673 0 32-14.327 32-32v-64c0-17.673-14.327-32-32-32s-32 14.327-32 32v64c0 17.673 14.327 32 32 32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"save\"\r\n      ],\r\n      \"defaultCode\": 59746,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M1014.4 969.6l-228.48-228.48c68.48-78.72 110.080-181.12 110.080-293.12 0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448 112 0 214.4-41.6 293.12-110.080l228.48 228.48c6.4 6.4 14.72 9.6 22.4 9.6s16.64-3.2 22.4-9.6c12.8-12.16 12.8-32.64 0-44.8zM448 832c-211.84 0-384-172.16-384-384s172.16-384 384-384 384 172.16 384 384-172.16 384-384 384z\"\r\n      ],\r\n      \"tags\": [\r\n        \"search\"\r\n      ],\r\n      \"defaultCode\": 59747,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M429.44 943.36c-224 0-428.8-128-428.8-268.8-0.64-3.84-35.84-222.72 345.6-439.040 22.124-11.149 48.219-17.678 75.84-17.678s53.716 6.529 76.828 18.127c24.213 21.163 40.079 53.038 40.079 88.618 0 8.805-0.972 17.383-2.814 25.633l0.146-0.78c27.051-15.459 59.452-24.574 93.982-24.574 44.332 0 85.154 15.025 117.653 40.26 19.027 18.041 31.143 44.011 31.143 72.81 0 16.762-4.104 32.564-11.362 46.459 58.875 18.32 104.369 62.973 124.017 119.697 2.527 12.431 3.74 25.179 3.74 38.21 0 52.53-19.715 100.455-52.15 136.779-95.988 101.736-231.983 165.2-382.8 165.2-10.943 0-21.807-0.334-32.584-0.993zM429.44 282.88c-21.131 0.657-41.053 5.063-59.375 12.572-330.385 187.748-306.065 371.428-306.065 373.348 0 97.92 163.2 210.56 364.8 210.56 8.951 0.616 19.401 0.968 29.932 0.968 130.936 0 249.187-54.309 333.456-141.63 25.432-25.968 41.044-61.37 41.044-100.42 0-6.614-0.448-13.124-1.315-19.5-19.693-44.008-60.745-76.138-109.892-83.012l-36.585-7.125 18.56-53.76c21.12-40.96 6.4-55.040 0-60.16-20.291-13.387-45.183-21.355-71.937-21.355-24.167 0-46.815 6.502-66.29 17.853-16.013 8.622-63.373 33.582-88.973 6.702s-11.52-57.6 0-76.8 0-40.96-12.8-50.56c-7.46-5.008-16.643-7.993-26.523-7.993-1.93 0-3.833 0.114-5.703 0.335z\",\r\n        \"M832 432c4.256 1.883 9.22 2.98 14.44 2.98 14.981 0 27.852-9.030 33.469-21.944 8.223-16.586 12.982-35.845 12.982-56.216 0-70.692-57.308-128-128-128-20.539 0-39.949 4.838-57.151 13.436-11.58 5.696-19.914 18.141-19.914 32.533 0 20.147 16.333 36.48 36.48 36.48 4.424 0 8.664-0.787 12.587-2.23 6.405-2.871 14.171-4.59 22.339-4.59 31.458 0 56.96 25.502 56.96 56.96 0 8.168-1.719 15.934-4.815 22.956-1.74 3.892-2.836 8.855-2.836 14.075 0 14.981 9.030 27.852 21.944 33.469z\",\r\n        \"M759.040 96c-22.811 0.169-44.839 3.194-65.847 8.734-12.4 4.768-22.392 18.193-22.392 33.951 0 20.147 16.333 36.48 36.48 36.48 2.005 0 3.971-0.162 5.888-0.473 13.943-3.707 30.191-5.851 46.941-5.851 106.039 0 192 85.961 192 192 0 23.943-4.383 46.863-12.389 68-0.95 2.385-1.754 6.668-1.754 11.138 0 15.651 9.857 29.001 23.701 34.179 3.957 1.472 8.24 2.276 12.71 2.276 15.651 0 29.001-9.857 34.179-23.701 10.211-27.284 16.074-58.524 16.074-91.133 0-146.812-118.83-265.87-265.556-266.239z\"\r\n      ],\r\n      \"tags\": [\r\n        \"sina\"\r\n      ],\r\n      \"defaultCode\": 59748,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M960 672h-48v-128c0-35.346-28.654-64-64-64h-304v-128h48c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64h-160c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h48v128h-304c-35.346 0-64 28.654-64 64v128h-48c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h160c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64h-48v-128h304v128h-48c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h160c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64h-48v-128h304v128h-48c-35.346 0-64 28.654-64 64v160c0 35.346 28.654 64 64 64h160c35.346 0 64-28.654 64-64v-160c0-35.346-28.654-64-64-64zM432 288v-160h160v160zM224 896h-160v-160h160zM592 736v160h-160v-160zM960 896h-160v-160h160z\"\r\n      ],\r\n      \"tags\": [\r\n        \"sitemap\"\r\n      ],\r\n      \"defaultCode\": 59749,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M256 352c0-26.24 21.76-48 48-48s48 21.76 48 48c0 26.24-21.76 48-48 48s-48-21.76-48-48zM1024 512c0 282.24-229.76 512-512 512s-512-229.76-512-512 229.76-512 512-512 512 229.76 512 512zM960 512c0-247.040-200.96-448-448-448s-448 200.96-448 448c0 247.040 200.96 448 448 448s448-200.96 448-448zM720 304c-26.24 0-48 21.76-48 48s21.76 48 48 48 48-21.76 48-48c0-26.24-21.76-48-48-48zM740.48 512.64c-17.28-2.56-33.92 9.6-36.48 26.88-13.44 93.44-96 164.48-192 164.48-92.8 0-177.28-72.32-192.64-165.12-2.56-17.28-19.2-29.44-36.48-26.24-17.28 2.56-29.44 19.2-26.24 36.48 20.48 124.8 130.56 218.88 255.36 218.88 127.36 0 236.8-94.080 255.36-219.52 3.2-17.28-8.96-33.28-26.88-35.84z\"\r\n      ],\r\n      \"tags\": [\r\n        \"smile\"\r\n      ],\r\n      \"defaultCode\": 59750,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M307.84 20.48c-1.106-2.442-2.389-4.546-3.892-6.469l0.052-3.771-10.88-5.12-3.84-5.12h-24.32l-6.4 6.4h-3.84l-244.48 231.040c-3.844 5.217-6.153 11.772-6.153 18.866 0 17.673 14.327 32 32 32 5.791 0 11.223-1.538 15.909-4.228l191.844-178.478v886.4c0 17.673 14.327 32 32 32s32-14.327 32-32v-960c0.053-0.67 0.084-1.452 0.084-2.24s-0.030-1.57-0.090-2.343c0.133-0.954 0.205-2.177 0.205-3.417s-0.072-2.464-0.212-3.666z\",\r\n        \"M992 761.6c-5.904-6.86-14.597-11.178-24.299-11.178-8.12 0-15.533 3.024-21.175 8.008l-191.966 164.45v-890.88c0-17.673-14.327-32-32-32s-32 14.327-32 32v960c-0.053 0.67-0.084 1.452-0.084 2.24s0.030 1.57 0.090 2.343c0.093 4.745 1.762 9.185 4.511 12.748l-0.038 3.789c2.363 2.53 5.108 4.663 8.152 6.316l0.168 0.084c3.584 1.586 7.764 2.509 12.16 2.509s8.576-0.923 12.357-2.586l3.643 0.077h5.12l245.12-209.92c10.21-5.483 17.035-16.087 17.035-28.285 0-7.468-2.558-14.339-6.846-19.783z\"\r\n      ],\r\n      \"width\": 1000,\r\n      \"tags\": [\r\n        \"sort\"\r\n      ],\r\n      \"defaultCode\": 59751,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M785.92 1024c-0.131 0.001-0.287 0.002-0.442 0.002-11.603 0-22.485-3.088-31.869-8.486l-241.609-133.595-243.2 133.12c-10.084 6.943-22.561 11.090-36.007 11.090-35.346 0-64-28.654-64-64 0-5.762 0.761-11.346 2.189-16.657l46.618-286.912-198.4-206.72c-13.85-11.813-22.575-29.28-22.575-48.785 0-33.831 26.25-61.532 59.494-63.844l272.841-41.611 122.88-259.2c9.191-24.806 32.648-42.165 60.16-42.165s50.969 17.359 60.016 41.722l121.104 256.443 274.56 43.52c33.402 2.371 59.6 30.050 59.6 63.849 0 19.164-8.423 36.36-21.769 48.090l-199.752 204.862 46.080 289.92c0.909 4.044 1.431 8.689 1.431 13.456 0 35.346-28.654 64-64 64-0.503 0-1.005-0.006-1.505-0.017zM512 817.92c0.131-0.001 0.287-0.002 0.442-0.002 11.603 0 22.485 3.088 31.869 8.486l240.329 133.595-42.88-290.56c-0.662-3.455-1.040-7.429-1.040-11.491 0-17.78 7.25-33.866 18.955-45.464l200.325-205.445-275.2-46.080c-22.469-3.175-40.957-17.628-49.758-37.353l-123.042-259.607-122.88 259.2c-8.963 20.132-27.451 34.585-49.58 37.721l-275.54 41.639 198.4 209.28c11.71 11.603 18.96 27.689 18.96 45.469 0 4.062-0.378 8.036-1.102 11.888l-44.738 290.803 244.48-128c8.774-7.3 19.681-12.328 31.658-14.040z\"\r\n      ],\r\n      \"tags\": [\r\n        \"star\"\r\n      ],\r\n      \"defaultCode\": 59752,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M800 192h-576c-17.92 0-32 14.080-32 32v576c0 17.92 14.080 32 32 32h576c17.92 0 32-14.080 32-32v-576c0-17.92-14.080-32-32-32zM768 768h-512v-512h512v512z\"\r\n      ],\r\n      \"tags\": [\r\n        \"stop\"\r\n      ],\r\n      \"defaultCode\": 59753,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM569.6 292.48c-21.76-44.8-91.52-49.28-116.48 4.48l-131.84 429.44c-5.12 16.64 4.48 34.56 21.12 40.32 17.28 5.12 34.56-4.48 39.68-21.12l31.36-105.6c1.28-0.64 1.92 0 2.56 0h192c0.64 0 0.64 0 1.28 0l32.64 105.6c3.84 13.44 16.64 22.4 30.080 22.4 3.2 0 6.4-0.64 9.6-1.28 16.64-5.12 26.24-23.040 21.12-40.32l-133.12-433.92zM432.64 576l76.8-260.48 80 260.48h-156.8z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_application\"\r\n      ],\r\n      \"defaultCode\": 59754,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM722.56 488.32v218.24c0 8.96-7.040 16-16 16h-32c-8.96 0-16-7.040-16-16v-38.4c-38.4 41.6-93.44 65.28-154.88 65.28-106.88 0-215.68-82.56-215.68-241.28 0-140.8 93.44-238.72 226.56-238.72 126.080 0 171.52 68.48 197.12 127.36 1.92 4.48 1.92 9.6-0.64 14.080s-7.040 7.68-11.52 8.96l-33.28 5.12c-7.68 1.28-14.72-3.2-17.28-10.24-22.4-58.88-67.2-88.96-134.4-88.96-94.72 0-161.28 75.52-161.28 183.040 0 105.6 65.92 185.6 152.32 185.6 66.56 0 122.88-39.68 151.040-106.88v-43.52h-139.52c-8.96 0-16-7.68-16-16v-23.68c0-8.96 7.040-16 16-16h189.44c8.32 0 16 7.040 16 16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_Group\"\r\n      ],\r\n      \"defaultCode\": 59755,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM732.16 305.92l3.84 429.44c0 17.92-14.080 32-32 32 0 0 0 0 0 0-17.28 0-32-14.080-32-32l-3.2-409.6-127.36 295.040c-0.64 1.92-1.92 2.56-3.2 4.48s-1.92 3.84-3.84 5.12c-1.92 1.92-4.48 3.84-7.040 5.12-0.64 0.64-1.28 1.28-2.56 1.92 0 0 0 0-0.64 0-2.56 1.28-5.12 1.28-8.32 1.92-1.28 0-2.56 0.64-3.84 0.64s-2.56-0.64-3.84-0.64c-3.2-0.64-5.76-0.64-8.32-1.92 0 0 0 0-0.64 0-1.28-0.64-1.92-1.92-3.2-2.56-2.56-1.28-4.48-2.56-6.4-4.48-1.92-1.28-2.56-3.2-3.84-5.12s-2.56-2.56-3.2-4.48l-127.36-291.84-3.2 407.040c0 17.92-14.72 32-32 32 0 0 0 0 0 0-17.92 0-32-14.72-32-32l6.4-442.88c21.76-45.44 93.44-45.44 114.56 0l103.040 234.88 102.4-234.24c22.4-47.36 93.44-46.080 115.2-1.28l2.56 13.44z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_module\"\r\n      ],\r\n      \"defaultCode\": 59756,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M512 0c-282.24 0-512 229.76-512 512s229.76 512 512 512 512-229.76 512-512-229.76-512-512-512zM512 960c-247.040 0-448-200.96-448-448s200.96-448 448-448c247.040 0 448 200.96 448 448s-200.96 448-448 448zM528 256h-128c-17.92 0-32 14.080-32 32v448c0 17.92 14.080 32 32 32s32-14.080 32-32v-135.68h96c105.6 0 192-77.44 192-172.16s-86.4-172.16-192-172.16zM528 536.32h-96v-216.32h96c70.4 0 128 48.64 128 108.16s-57.6 108.16-128 108.16z\"\r\n      ],\r\n      \"tags\": [\r\n        \"tree_process\"\r\n      ],\r\n      \"defaultCode\": 59757,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M384 32v320c0 17.92-14.080 32-32 32h-320c-17.92 0-32-14.080-32-32s14.080-32 32-32h288v-288c0-17.92 14.080-32 32-32s32 14.080 32 32zM672 384h320c17.92 0 32-14.080 32-32s-14.080-32-32-32h-288v-288c0-17.92-14.080-32-32-32s-32 14.080-32 32v320c0 17.92 14.080 32 32 32zM352 640h-320c-17.92 0-32 14.080-32 32s14.080 32 32 32h288v288c0 17.92 14.080 32 32 32s32-14.080 32-32v-320c0-17.92-14.080-32-32-32zM992 640h-320c-17.92 0-32 14.080-32 32v320c0 17.92 14.080 32 32 32s32-14.080 32-32v-288h288c17.92 0 32-14.080 32-32s-14.080-32-32-32z\"\r\n      ],\r\n      \"tags\": [\r\n        \"un_full_screen\"\r\n      ],\r\n      \"defaultCode\": 59758,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M674.107 381.994h-481.505v-128.401c0-7.704 26.322-192.602 202.874-192.602 0.002-0 0.005-0 0.008-0 95.629 0 174.123 73.361 182.273 166.875 1.735 17.697 15.968 30.872 33.279 30.872 0.28 0 0.559-0.003 0.837-0.010 16.866-1.013 30.194-14.973 30.194-32.045 0-0.697-0.022-1.388-0.066-2.074-8.664-127.56-114.338-227.825-243.43-227.825-0.637 0-1.274 0.002-1.91 0.007-143.111 2.5-259.327 114.695-268.221 256.013l-0.040 129.19h-32.1c-53.186 0-96.301 43.115-96.301 96.301v449.404c0 53.186 43.115 96.301 96.301 96.301h577.806c53.186 0 96.301-43.115 96.301-96.301v-449.404c0-53.186-43.115-96.301-96.301-96.301zM706.207 927.699c0 17.729-14.372 32.1-32.1 32.1h-577.806c-17.729 0-32.1-14.372-32.1-32.1v-449.404c0-17.729 14.372-32.1 32.1-32.1h577.806c17.729 0 32.1 14.372 32.1 32.1z\",\r\n        \"M385.204 606.696c-17.729 0-32.1 14.372-32.1 32.1v128.401c0 17.729 14.372 32.1 32.1 32.1s32.1-14.372 32.1-32.1v-128.401c0-17.729-14.372-32.1-32.1-32.1z\"\r\n      ],\r\n      \"width\": 770,\r\n      \"tags\": [\r\n        \"unlock\"\r\n      ],\r\n      \"defaultCode\": 59759,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M992 608c-17.673 0-32 14.327-32 32v256c0 17.673-14.327 32-32 32h-832c-17.673 0-32-14.327-32-32v-256c0-17.673-14.327-32-32-32s-32 14.327-32 32v256c0 53.019 42.981 96 96 96h832c53.019 0 96-42.981 96-96v-256c0-17.673-14.327-32-32-32z\",\r\n        \"M371.84 216.96l108.16-86.4v640c0 17.673 14.327 32 32 32s32-14.327 32-32v-640l108.16 86.4c5.459 4.437 12.496 7.125 20.16 7.125 17.72 0 32.085-14.365 32.085-32.085 0-10.056-4.626-19.031-11.866-24.913l-160.059-128.047c-4.964-3.946-11.324-6.331-18.24-6.331s-13.276 2.385-18.3 6.378l0.060-0.046-160 128c-7.299 5.929-11.925 14.904-11.925 24.96 0 17.72 14.365 32.085 32.085 32.085 7.664 0 14.701-2.687 20.219-7.171z\"\r\n      ],\r\n      \"tags\": [\r\n        \"upload\"\r\n      ],\r\n      \"defaultCode\": 59760,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M610.56 551.040c90.080-51.816 149.76-147.521 149.76-257.165 0-163.3-132.38-295.68-295.68-295.68s-295.68 132.38-295.68 295.68c0 109.644 59.68 205.35 148.327 256.404-185.632 63.599-318.087 237.128-318.567 441.663-0 17.731 14.327 32.058 32 32.058s32-14.327 32-32c-0-221.444 179.516-400.96 400.96-400.96s400.96 179.516 400.96 400.96c0 17.673 14.327 32 32 32s32-14.327 32-32c-0.191-204.138-131.816-377.483-314.805-439.988zM232.96 295.040c0.364-127.678 103.951-231.040 231.679-231.040 127.953 0 231.68 103.727 231.68 231.68s-103.726 231.68-231.679 231.68c-127.953-0-231.68-103.727-231.68-231.68z\"\r\n      ],\r\n      \"width\": 930,\r\n      \"tags\": [\r\n        \"user\"\r\n      ],\r\n      \"defaultCode\": 59761,\r\n      \"grid\": 16\r\n    },\r\n    {\r\n      \"paths\": [\r\n        \"M603.52 348.8c0 26.51-22.35 48-49.92 48s-49.92-21.49-49.92-48c0-26.51 22.35-48 49.92-48s49.92 21.49 49.92 48z\",\r\n        \"M357.12 348.8c0 26.51-22.35 48-49.92 48s-49.92-21.49-49.92-48c0-26.51 22.35-48 49.92-48s49.92 21.49 49.92 48z\",\r\n        \"M693.12 604.16c0 15.906-13.181 28.8-29.44 28.8s-29.44-12.894-29.44-28.8c0-15.906 13.181-28.8 29.44-28.8s29.44 12.894 29.44 28.8z\",\r\n        \"M951.68 832c43.793-42.406 71.29-101.414 72.318-166.849-4.62-109.698-77.366-201.057-176.746-233.283 5.69-12.101 10.15-26.27 10.15-41.481 0-4.517-0.393-8.942-1.147-13.243-33.854-181.303-212.414-313.143-425.534-313.143-238.72 0-430.72 167.040-430.72 372.48 1.27 107.545 50.574 203.323 127.418 267.051l-16.698 55.509c-2.184 6.799-3.443 14.621-3.443 22.737 0 42.415 34.385 76.8 76.8 76.8 12.448 0 24.204-2.961 34.602-8.218l101.321-52.919c32.821 7.729 70.507 12.16 109.227 12.16 0.075 0 0.15-0 0.225-0l28.148 0c13.101-0.748 25.14-4.697 35.532-11.069 54.24 73.543 140.674 120.548 238.086 120.548 1.681 0 3.36-0.014 5.034-0.042 21.066-0.065 41.852-2.158 61.979-6.094l49.129 26.578c9.959 5.055 21.715 8.017 34.163 8.017 42.415 0 76.8-34.385 76.8-76.8 0-8.116-1.259-15.938-3.592-23.281zM430.72 752.64c-0.172 0-0.375 0-0.578 0-40.822 0-80.279-5.844-117.58-16.741l-3.442 0.741-131.2 67.2 35.2-113.28h-3.2c-86.099-52.047-143.383-144.183-145.913-249.88-0.007-172.52 165.753-312.68 366.713-312.68 5.718-0.332 12.406-0.522 19.139-0.522 163.315 0 300.606 111.423 340 262.397l-14.818 2.444c-183.040 0-327.040 112-327.040 285.44 0.53 26.715 5.174 52.168 13.322 75.997zM872.96 812.8v0l21.76 67.84-81.28-40.96h-3.84c-21.134 6.095-45.41 9.601-70.504 9.601-0.189 0-0.377-0-0.566-0.001-5.887 0.598-12.758 0.939-19.708 0.939-107.090 0-195.277-80.93-206.739-184.966 10.351-106.975 99.066-189.144 206.973-189.144 5.964 0 11.869 0.251 17.706 0.743 4.312-0.492 10.217-0.743 16.181-0.743 107.907 0 196.622 82.17 206.988 187.352-1.707 63.823-35.814 118.445-86.173 148.891z\",\r\n        \"M839.68 604.16c0 15.906-13.181 28.8-29.44 28.8s-29.44-12.894-29.44-28.8c0-15.906 13.181-28.8 29.44-28.8s29.44 12.894 29.44 28.8z\"\r\n      ],\r\n      \"tags\": [\r\n        \"weixin\"\r\n      ],\r\n      \"defaultCode\": 59762,\r\n      \"grid\": 16\r\n    }\r\n  ],\r\n  \"colorThemes\": [],\r\n  \"colorThemeIdx\": 0,\r\n  \"preferences\": {\r\n    \"showGlyphs\": true,\r\n    \"showQuickUse\": true,\r\n    \"showQuickUse2\": true,\r\n    \"showSVGs\": true,\r\n    \"fontPref\": {\r\n      \"prefix\": \"icon-\",\r\n      \"metadata\": {\r\n        \"fontFamily\": \"icomoon\"\r\n      },\r\n      \"metrics\": {\r\n        \"emSize\": 1024,\r\n        \"baseline\": 6.25,\r\n        \"whitespace\": 50\r\n      },\r\n      \"embed\": false\r\n    },\r\n    \"imagePref\": {\r\n      \"prefix\": \"icon-\",\r\n      \"png\": true,\r\n      \"useClassSelector\": true,\r\n      \"color\": 0,\r\n      \"bgColor\": 16777215,\r\n      \"classSelector\": \".icon\"\r\n    },\r\n    \"historySize\": 50,\r\n    \"showCodes\": true,\r\n    \"gridSize\": 16\r\n  },\r\n  \"IcoMoonType\": \"icon-set\"\r\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bkDialog-1.0/css/ui-dialog.css",
    "content": ".bk-dialog-box{\r\n    position: absolute;\r\n    z-index: 10240;\r\n    background: #fff;\r\n    border: 1px solid #ddd;\r\n    outline: 0;\r\n    background-clip: padding-box;\r\n    font-size: 14px;\r\n    color: #333;\r\n    left: 50%;\r\n    top: 50%;\r\n    transform: translate(-50%, -50%);\r\n}\r\n.bk-dialog-mask{\r\n    opacity: 0;\r\n    background: rgb(0, 0, 0);\r\n    position: fixed;\r\n    left: 0px;\r\n    top: 0px;\r\n    width: 100%;\r\n    height: 100%;\r\n    overflow: hidden;\r\n    user-select: none;\r\n    z-index: 1024;\r\n    display: none;\r\n}\r\n.bk-dialog-header{\r\n    border: 0 none;\r\n    text-align: left;\r\n    background: #f8f8f8;\r\n    height: 40px;\r\n    line-height: 40px;\r\n    padding: 0 18px;\r\n    border-bottom: 1px solid #E5E5E5;\r\n}\r\n.bk-dialog-close{\r\n    position: absolute;\r\n    float: right;\r\n    top: 8px;\r\n    right: 10px;\r\n    padding: 0 4px;\r\n    font-size: 21px;\r\n    font-weight: bold;\r\n    line-height: 1;\r\n    color: #000;\r\n    opacity: .7;\r\n    filter: alpha(opacity=70);\r\n    cursor: pointer;\r\n    background: transparent;\r\n    border: 0;\r\n}\r\n.bk-dialog-no-header .bk-dialog-close{\r\n    top: 3px;\r\n    right: 3px;\r\n}\r\n.bk-dialog-title{\r\n    margin: 0;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    text-overflow: ellipsis;\r\n    font-weight: bold;\r\n    cursor: default;\r\n    font-size: 12px;\r\n}\r\n.bk-dialog-content{\r\n    text-align: left;\r\n    padding: 20px;\r\n    min-width: 200px;\r\n}\r\n.bk-dialog-btn{\r\n    font-size: 12px;\r\n    width: auto;\r\n    overflow: visible;\r\n    display: inline-block;\r\n    margin-bottom: 0;\r\n    font-size: 12px;\r\n    font-weight: normal;\r\n    line-height: 18px;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    vertical-align: middle;\r\n    cursor: pointer;\r\n    background-image: none;\r\n    border: 1px solid transparent;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    -o-user-select: none;\r\n    user-select: none;\r\n    min-width: 50px;\r\n}\r\n.bk-dialog-ok{\r\n    color: #ffffff;\r\n    background-color: #4A9BFF;\r\n    border-color: #2180F5;\r\n}\r\n.bk-dialog-cancel{\r\n    color: #333333;\r\n    background-color: #ffffff;\r\n    border-color: #cccccc;\r\n}\r\n.bk-dialog-footer{\r\n    padding: 0 20px 20px 20px;\r\n    text-align: right;\r\n}\r\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bkDialog-1.0/js/dialog.js",
    "content": "(function(){\n    function isString(str){\n        return (typeof str=='string') && str.constructor == String;\n    }\n    function dialog(options){\n        var defaultOptions = {\n            id: '',\n            width: 'auto',\n            title: '',\n            lock: false,\n            fixed: false,\n            zIndex: 1024,\n            quickClose: false,\n            content: '',\n            okVal: '确定',\n            ok: null,\n            cancelVal: '取消',\n            cancel: null,\n            onshow: null,\n            onclose: null\n        };\n        var prev, next, parent, width, height, display, contentDom;\n        var dialogOptions = $.extend({}, defaultOptions, options);\n        var dialogNode = null;\n\n        function _init(){\n\n            var _html = [\n                        '<div class=\"bk-dialog\" style=\"display:none;\" id=\"'+ dialogOptions.id +'\">',\n                        '<div class=\"bk-dialog-mask\"></div>',\n                        '<div class=\"bk-dialog-box\" style=\"width:'+ dialogOptions.width +'px; z-index:'+ dialogOptions.zIndex +'; \">',\n                        '    <div class=\"bk-dialog-header\">',\n                        '        <strong class=\"bk-dialog-title\">'+ dialogOptions.title +'</strong>',\n                        '    </div>',\n                        '        <button class=\"bk-dialog-close\">×</button>',\n                        '    <div class=\"bk-dialog-content\"></div>',\n                        '    <div class=\"bk-dialog-footer\">',\n                        '        <button type=\"button\" class=\"bk-dialog-btn bk-dialog-ok\">'+ dialogOptions.okVal +'</button>',\n                        '        <button type=\"button\" class=\"bk-dialog-btn bk-dialog-cancel\">'+ dialogOptions.cancelVal +'</button>',\n                        '    </div>',\n                        '</div>',\n                        '</div>'\n                        ].join('');\n\n            dialogNode = $(_html);\n            if (dialogOptions.content && isString(dialogOptions.content)){\n                dialogNode.find('.bk-dialog-content').html(dialogOptions.content);\n            }else if(dialogOptions.content.nodeType == 1){\n                contentDom = dialogOptions.content;\n                display = contentDom.style.display;\n                prev = contentDom.previousSibling;\n                next = contentDom.nextSibling;\n                parent = contentDom.parentNode;\n                dialogNode.find('.bk-dialog-content').get(0).appendChild(contentDom);\n                contentDom.style.display = 'block';\n            }\n            if (dialogOptions.id){\n                if ($('#'+dialogOptions.id).length){\n                    $('#'+dialogOptions.id).remove();\n                }\n                dialogNode.attr('id', dialogNode.id);\n            }\n            dialogNode.find('.bk-dialog-close').on('click', function(){\n                _remove();\n            });\n\n            dialogNode.find('.bk-dialog-ok').on('click', function(){\n                if (dialogOptions.ok){\n                    if (dialogOptions.ok() === false){\n                    }else{\n                        _remove();\n                    }\n                }else{\n                    _remove();\n                }\n            });\n\n            dialogNode.find('.bk-dialog-cancel').on('click', function(){\n                dialogOptions.cancel && dialogOptions.cancel();\n                _remove();\n            });\n\n            _render();\n            $('body').append(dialogNode);\n        }\n\n        function _render(){\n            if (!dialogOptions.ok){\n                dialogNode.find('.bk-dialog-ok').remove();\n            }\n            if (!dialogOptions.cancel){\n                dialogNode.find('.bk-dialog-cancel').remove();\n            }\n            if (dialogOptions.cancel === false){\n                dialogNode.find('.bk-dialog-close').remove();\n            }\n            if (dialogOptions.hideClose){\n                dialogNode.find('.bk-dialog-close').remove();\n            }\n            if (!dialogOptions.title){\n                dialogNode.addClass('bk-dialog-no-header').find('.bk-dialog-header').remove();\n            }\n            if (!dialogOptions.ok && !dialogOptions.cancel){\n                dialogNode.find('.bk-dialog-footer').remove();\n            }\n            if (dialogOptions.fixed){\n                dialogNode.find('.bk-dialog-box').css({position: 'fixed'});\n            }\n            if (dialogOptions.quickClose){\n                dialogNode.find('.bk-dialog-mask').show();\n                dialogNode.find('.bk-dialog-box').on('click', function(){\n                    return false;\n                });\n                dialogNode.find('.bk-dialog-mask').on('click', function(){\n                    _close();\n                })\n            }\n            if (dialogOptions.lock){\n                _showModal();\n            }else{\n                _show();\n            }\n\n        }\n\n        function _show(){\n            dialogNode.show();\n            dialogOptions.onshow && dialogOptions.onshow();\n        }\n\n        function _showModal(){\n            dialogNode.show();\n            dialogNode.find('.bk-dialog-mask').css('opacity', '0.7').show();\n            dialogNode.find('.bk-dialog-box').css('position', 'fixed');\n            dialogOptions.onshow && dialogOptions.onshow();\n        }\n\n        function _close(){\n            dialogNode.hide();\n            dialogOptions.onclose && dialogOptions.onclose();\n        }\n\n        function _remove(){\n            dialogNode.remove();\n            _elemBack();\n            dialogOptions.onclose && dialogOptions.onclose();\n        }\n\n        function _content(html){\n            dialogNode.find('.bk-dialog-content').html(html);\n        }\n\n        function _title(text){\n            dialogNode.find('.bk-dialog-title').text(text);\n        }\n\n        function _width(width){\n            dialogNode.width(width);\n        }\n\n        function _height(height){\n            dialogNode.height(height);\n        }\n\n        function _elemBack(){\n            if (contentDom){\n                if (prev && prev.parentNode) {\n                    prev.parentNode.insertBefore(contentDom, prev.nextSibling);\n                } else if (next && prev.parentNode) {\n                    next.parentNode.insertBefore(contentDom, next);\n                } else if (parent) {\n                    parent.appendChild(contentDom);\n                };\n                contentDom.style.display = display;\n            }\n        }\n\n        function Dialog(){\n            _init();\n        }\n        Dialog.prototype = {\n            show: function(){\n                _show();\n                return this;\n            },\n            showModal: function(){\n                _showModal();\n                return this;\n            },\n            close: function(){\n                _close();\n                return this;\n            },\n            remove: function(){\n                _remove();\n                return this;\n            },\n            content: function(html){\n                _content(html);\n                return this;\n            },\n            title: function(text){\n                _text(text);\n                return this;\n            },\n            width: function(width){\n                _width(width);\n                return this;\n            },\n            height: function(height){\n                _height(height);\n                return this;\n            },\n            time: function(sec){\n                if (sec){\n                    setTimeout(function(){\n                        _remove();\n                    }, sec * 1000);\n                }\n            }\n        };\n\n        return new Dialog();\n\n    }\n    window.dialog = dialog;\n    var art = {};\n    art.dialog = dialog;\n    window.art = art;\n})();\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bkDialog-2.0/css/dialog.css",
    "content": ".bk-dialog {\n  position: fixed;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  width: 100%;\n  background-color: rgba(0, 0, 0, 0.6);\n  z-index: 2000;\n  font-family: \"Microsoft YaHei\", Helvetica, Arial, sans-serif; }\n  .bk-dialog-wrapper {\n    display: table;\n    width: 100%;\n    height: 100%; }\n  .bk-dialog-position {\n    display: table-cell;\n    vertical-align: middle; }\n  .bk-dialog-style {\n    position: relative;\n    width: 400px;\n    margin: 0 auto;\n    background-color: #fff;\n    border-radius: 2px;\n    box-shadow: 0 0 7px 3px rgba(0, 0, 0, 0.1); }\n  .bk-dialog-tool {\n    position: absolute;\n    top: 0;\n    right: 0; }\n    .bk-dialog-tool .bk-dialog-mark {\n      cursor: pointer; }\n  .bk-dialog .bk-dialog-close {\n    display: block;\n    width: 27px;\n    height: 27px;\n    line-height: 27px;\n    text-align: center;\n    margin: 4px 4px 0 0;\n    border-radius: 50%;\n    background-repeat: no-repeat;\n    background-size: 11px 11px;\n    background-position: 50% 50%;\n    cursor: pointer;\n    display: inline-block; }\n    .bk-dialog .bk-dialog-close:hover {\n      background-color: #f3f3f3; }\n  .bk-dialog .bk-dialog-mark {\n    display: block;\n    width: 27px;\n    height: 27px;\n    line-height: 27px;\n    margin: 4px 4px 0 0;\n    border-radius: 50%;\n    text-align: center;\n    font-size: 12px;\n    color: #4c4c4c; }\n    .bk-dialog .bk-dialog-mark:hover {\n      background-color: #f3f3f3; }\n  .bk-dialog-header {\n    padding: 40px 30px 10px;\n    color: #333;\n    font-size: 22px; }\n    .bk-dialog-header .bk-dialog-title {\n      margin: 0; }\n  .bk-dialog-body {\n    padding: 15px 65px;\n    color: #666;\n    font-size: 14px;\n    line-height: 1.5; }\n  .bk-dialog-footer {\n    text-align: center;\n    padding: 20px 65px 40px; }\n    .bk-dialog-footer.bk-d-footer {\n      height: 60px;\n      line-height: 60px;\n      padding: 0;\n      border-top: 1px solid #e5e5e5;\n      background-color: #fafafa; }\n    .bk-dialog-footer .bk-dialog-outer {\n      padding: 0 10px 0 0;\n      text-align: right; }\n      .bk-dialog-footer .bk-dialog-outer button {\n        width: 72px;\n        height: 36px;\n        line-height: 34px;\n        min-width: 72px;\n        margin-right: 10px;\n        margin-top: 12px; }\n        .bk-dialog-footer .bk-dialog-outer button.bk-dialog-btn-cancel {\n          margin-left: 0;\n          background-color: #fff; }\n  .bk-dialog-title {\n    text-align: center;\n    font-size: 22px;\n    color: #333; }\n  .bk-dialog-subtitle {\n    color: #666; }\n  .bk-dialog-default-status {\n    padding: 40px 0; }\n    .bk-dialog-default-status.bk-dialog-warning-body {\n      padding-bottom: 15px; }\n    .bk-dialog-default-status.bk-dialog-warning {\n      padding-bottom: 35px; }\n    .bk-dialog-default-status ~ .bk-dialog-footer {\n      padding-top: 0; }\n    .bk-dialog-default-status .bk-dialog-mark {\n      display: block;\n      margin: 0 auto; }\n      .bk-dialog-default-status .bk-dialog-mark.bk-dialog-loading {\n        width: 58px;\n        height: 58px;\n        line-height: 58px;\n        font-size: 30px;\n        border-radius: 50%;\n        animation: loading linear 1s infinite; }\n      .bk-dialog-default-status .bk-dialog-mark.bk-dialog-warning, .bk-dialog-default-status .bk-dialog-mark.bk-dialog-error, .bk-dialog-default-status .bk-dialog-mark.bk-dialog-success {\n        width: 58px;\n        height: 58px;\n        line-height: 58px;\n        font-size: 30px;\n        color: #fff;\n        border-radius: 50%; }\n      .bk-dialog-default-status .bk-dialog-mark.bk-dialog-warning {\n        background-color: #ffc200; }\n      .bk-dialog-default-status .bk-dialog-mark.bk-dialog-error {\n        background-color: #ff5454; }\n      .bk-dialog-default-status .bk-dialog-mark.bk-dialog-success {\n        background-color: #5bd18a; }\n    .bk-dialog-default-status .bk-dialog-title {\n      margin: 20px 20px 0 20px; }\n    .bk-dialog-default-status .bk-dialog-subtitle {\n      margin: 16px 20px 0 20px; }\n  .bk-dialog-error-text {\n    color: #ff7979; }\n  .bk-dialog-primary-text {\n    color: #6793ee; }\n  .bk-dialog-btn {\n    width: 110px;\n    height: 36px;\n    box-shadow: none;\n    outline: none;\n    border-radius: 2px;\n    background-color: #fff;\n    font-size: 14px;\n    border: 1px solid #c3cdd7;\n    cursor: pointer;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap; }\n    .bk-dialog-btn:hover {\n      background-color: #fafafa;\n      opacity: 1; }\n    .bk-dialog-btn:active {\n      background-color: #eee;\n      opacity: 1; }\n    .bk-dialog-btn.bk-btn-info {\n      color: #fff;\n      background-color: #88c3ff;\n      border-color: #88c3ff; }\n      .bk-dialog-btn.bk-btn-info:hover {\n        background-color: #7ab9fa;\n        border-color: #7ab9fa; }\n      .bk-dialog-btn.bk-btn-info:active {\n        background-color: #6eb5fe;\n        border-color: #6eb5fe; }\n    .bk-dialog-btn.bk-btn-primary {\n      color: #fff;\n      background-color: #3c96ff;\n      border-color: #3c96ff; }\n      .bk-dialog-btn.bk-btn-primary:hover {\n        background-color: #0082ff;\n        border-color: #0082ff; }\n      .bk-dialog-btn.bk-btn-primary:active {\n        background-color: #0978e2;\n        border-color: #0978e2; }\n    .bk-dialog-btn.bk-btn-danger {\n      color: #fff;\n      background-color: #ff5656;\n      border-color: #ff5656; }\n      .bk-dialog-btn.bk-btn-danger:hover {\n        background-color: #f72239;\n        border-color: #f72239; }\n      .bk-dialog-btn.bk-btn-danger:active {\n        background-color: #cb2537;\n        border-color: #cb2537; }\n    .bk-dialog-btn.bk-btn-success {\n      color: #fff;\n      background-color: #30d878;\n      border-color: #30d878; }\n      .bk-dialog-btn.bk-btn-success:hover {\n        background-color: #00c873;\n        border-color: #00c873; }\n      .bk-dialog-btn.bk-btn-success:active {\n        background-color: #00ae64;\n        border-color: #00ae64; }\n    .bk-dialog-btn.bk-btn-warning {\n      color: #fff;\n      background-color: #ffb400;\n      border-color: #ffb400; }\n      .bk-dialog-btn.bk-btn-warning:hover {\n        background-color: #ff9600;\n        border-color: #ff9600; }\n      .bk-dialog-btn.bk-btn-warning:active {\n        background-color: #e38601;\n        border-color: #e38601; }\n    .bk-dialog-btn-confirm {\n      margin-right: 10px;\n      color: #fff; }\n    .bk-dialog-btn-cancel {\n      margin-left: 10px;\n      color: #666; }\n  .bk-dialog-row {\n    text-align: center; }\n  .bk-dialog h1 {\n    margin: 0;\n    padding: 0;\n    font-weight: normal; }\n  .bk-dialog h2 {\n    margin: 0;\n    padding: 0;\n    font-weight: normal; }\n  .bk-dialog h3 {\n    margin: 0;\n    padding: 0;\n    font-weight: normal; }\n  .bk-dialog h4 {\n    margin: 0;\n    padding: 0;\n    font-weight: normal; }\n  .bk-dialog h5 {\n    margin: 0;\n    padding: 0;\n    font-weight: normal; }\n  .bk-dialog h6 {\n    margin: 0;\n    padding: 0;\n    font-weight: normal; }\n  .bk-dialog p {\n    margin: 0; }\n  .bk-dialog a {\n    text-decoration: none; }\n  .bk-dialog .hidden {\n    display: none; }\n\n@keyframes loading {\n  from {\n    transform: rotate(0); }\n  to {\n    transform: rotate(360deg); } }"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bkDialog-2.0/js/dialog.js",
    "content": "/*\n *  bkDialog v1.0\n *  author：蓝鲸智云\n *  Copyright (c) 2012-2017 Tencent BlueKing. All Rights Reserved.\n */\n\n(function(global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.bkDialog = factory());\n})(this, (function() {\n    'use strict';\n\n    /**\n     *  编译DOM节点字符串\n     *  @param html {String} 拼接的DOM字符串\n     *  @return DOM {DOMNode} DOM节点\n     */\n    var _compile = function(html) {\n        var temp = document.createElement('div'),\n            children = null,\n            fragment = document.createDocumentFragment();\n\n        temp.innerHTML = html;\n        children = temp.childNodes;\n\n        for(var i = 0, length = children.length; i < length; i++) {\n            fragment.appendChild(children[i].cloneNode(true));\n        }\n\n        return fragment;\n    }\n\n    /**\n     *  插件的构造函数\n     *  @param 用户自定义的参数\n     */\n    function bkDialog(options) {\n        var opts = options || {};\n\n        this.type = opts.type || 'default';                  // 弹窗的类型, 可选的值有success, error, warning, loading, dialog, default\n        this.width = opts.width || 400;                     // 弹窗的宽度\n        this.title = opts.title || '确定执行该操作?';        // 弹窗的title\n        this.content = opts.content === false ? false : (opts.content || '欢迎使用 bkDialog 组件！');    // 弹窗的内容\n        this.icon = opts.icon || false;                     // success, error, warning, loading四种类型时，自定义的图标\n        this.hasHeader = opts.hasHeader === false ? false : true;     // 是否显示头部\n        this.statusOpts = opts.statusOpts || {};            // 使用内置状态时的设置，可用的key有title，subTitle\n        this.padding = opts.padding || (opts.padding === 0 ? 0 : false);               // 自定义dialog-body的padding值\n        this.closeIcon = opts.closeIcon === false ? false : true;     // 是否有关闭图标\n        this.style = opts.style || 'primary';                      // 插件的颜色风格\n        this.confirm = opts.confirm || '确定';              // 确定按钮的文字\n        this.cancel = opts.cancel || '取消';                // 取消按钮的文字\n        this.quickClose = opts.quickClose === false ? false : true;          // 是否允许点击遮罩关闭dialog\n        this.confirmFn = opts.confirmFn || function() {};   // 确定的回调函数\n        this.cancelFn = opts.cancelFn || function() {};     // 取消的回调函数\n        this.onShow = opts.onShow || function() {};         // 打开dialog时的回调\n        this.onClose = opts.onClose || function() {};       // 关闭dialog时的回调\n\n        _init.call(this);\n    }\n\n    /**\n     *  初始化函数\n     */\n    var _init = function() {\n        _initStyle.call(this);\n    }\n\n    /**\n     *  初始化样式\n     */\n    var _initStyle = function() {\n        var type = this.type,\n            isDefaultType = (type === 'loading' || type === 'error' || type === 'success' || type === 'warning' ? true : false),\n            statusOpts = isDefaultType ? this.statusOpts : {},\n            _this = this,\n            isStyle = this.style.indexOf('#') === 0;\n        var html = '',\n            defaultDOM = {\n                \"title\": '',\n                \"subTitle\": ''\n            },\n            body = '',\n            icon = '';\n\n        switch(type) {\n            case 'loading':\n                defaultDOM.title = 'loading';\n                defaultDOM.subTitle = '请稍等...';\n                icon = this.icon ? (this.icon.match(/^\\<img/) ? this.icon : '<p><i class=\"bk-icon icon-'+this.icon+' bk-dialog-mark bk-dialog-loading\"></i></p>') : '<img src=\"/static/img/loading.gif\" alt=\"loading\" class=\"bk-dialog-mark bk-dialog-loading\">';\n                break;\n            case 'error':\n                defaultDOM.title = '添加用户失败';\n                defaultDOM.subTitle = '此窗口<span class=\"bk-dialog-error-text\">3s</span>后关闭';\n                icon = this.icon || 'close';\n                break;\n            case 'success':\n                defaultDOM.title = '添加用户成功';\n                defaultDOM.subTitle = '<a href=\"javascript:;\" class=\"bk-dialog-primary-text\">继续添加 >></a>';\n                icon = this.icon || 'check-1';\n                break;\n            case 'warning':\n                defaultDOM.title = '此操作存在风险';\n                icon = this.icon || 'exclamation';\n        }\n\n        if(isDefaultType) {\n            body += '<div class=\"bk-dialog-row\">'+\n                      (type === 'loading' ? icon : '<p><i class=\"bk-icon icon-'+icon+' bk-dialog-mark bk-dialog-'+type+'\"></i></p>')+\n                    '</div>'+\n                    '<h3 class=\"bk-dialog-title bk-dialog-row\">' + (statusOpts.title || defaultDOM.title) + '</h3>'+\n                    (statusOpts.subTitle || defaultDOM.subTitle ? ('<h5 class=\"bk-dialog-subtitle bk-dialog-row\">' + (statusOpts.subTitle || defaultDOM.subTitle) + '</h5>') : '');\n        }\n        else {\n            body += this.content === false ? '' : this.content;\n        }\n\n        html = '<div class=\"bk-dialog hidden\" id=\"bkDialog\">'+\n                  '<div class=\"bk-dialog-wrapper\">'+\n                    '<div class=\"bk-dialog-position\">'+\n                      '<div class=\"bk-dialog-style\" style=\"width: '+this.width+'px;\">'+\n                        '<div class=\"bk-dialog-tool\">'+\n                          (this.closeIcon ? ('<i class=\"bk-dialog-close bk-icon icon-close\" id=\"bkDialogClose\"></i>') : '')+\n                        '</div>'+\n                        (isDefaultType ? '' : (this.hasHeader ? ('<div class=\"bk-dialog-header\">'+\n                            '<h3 class=\"bk-dialog-title\">' + this.title + '</h3>'+\n                        '</div>') : ''))+\n                        (this.content === false ? '<p style=\"padding-top: 15px;\"></p>' : ('<div class=\"bk-dialog-body ' + (isDefaultType ? 'bk-dialog-default-status' : '') + '\" style=\"'+(this.padding === false ? '' : ('padding: '+this.padding+'px; '))+'\">'+\n                          body+\n                        '</div>'))+\n                        (isDefaultType && type !== 'warning' ? '' : ('<div class=\"bk-dialog-footer '+(type === 'dialog' ? 'bk-dialog-outer' : '')+'\">'+\n                            '<button type=\"button\" name=\"confirm\" class=\"bk-dialog-btn bk-dialog-btn-confirm '+(isStyle ? '' : ('bk-btn-' + this.style))+'\" style=\"'+(isStyle ? ('background-color: ' + this.style + '; border-color: ' + this.style + '; color: #fff;') : '')+'\" id=\"bkDialogConfirm\">'+this.confirm+'</button>'+\n                            '<button type=\"button\" name=\"cancel\" class=\"bk-dialog-btn bk-dialog-btn-cancel\" id=\"bkDialogCancel\">'+this.cancel+'</button>'+\n                        '</div>'))+\n                      '</div>'+\n                    '</div>'+\n                  '</div>'+\n                '</div>';\n\n        this._html = html;\n\n        document.body.appendChild(_compile(this._html));\n\n        setTimeout(function() {\n          _initEvent.call(_this);\n        }, 10);\n    }\n\n    /**\n     *  初始化函数绑定\n     */\n    var _initEvent = function() {\n      var $root = document.querySelector('#bkDialog'),\n          confirmBtn = $root.querySelector('#bkDialogConfirm'),\n          cancelBtn = $root.querySelector('#bkDialogCancel'),\n          closeIcon = $root.querySelector('#bkDialogClose'),\n          _this = this;\n\n\n      $root.addEventListener('click', function(e) {\n        if(_this.quickClose && e.target.getAttribute('id') == 'bkDialog') {\n          _close.call(_this);\n        }\n      }, false);\n\n      if(confirmBtn) {\n        confirmBtn.addEventListener('click', function(e) {\n            _this.confirmFn && _this.confirmFn(_this);\n            _close.call(_this);\n        }, false);\n      }\n\n      if(cancelBtn) {\n        cancelBtn.addEventListener('click', function(e) {\n            _this.cancelFn && _this.cancelFn(_this);\n            _close.call(_this);\n        }, false);\n      }\n\n      if(closeIcon) {\n        closeIcon.addEventListener('click', function(e) {\n            _close.call(_this);\n        }, false);\n      }\n    }\n\n    /**\n     *  关闭dialog\n     */\n    var _close = function() {\n      var root = document.querySelector('#bkDialog');\n\n      this.onClose && this.onClose(this);\n      root.parentNode.removeChild(root);\n    }\n\n    // 外部API\n    bkDialog.prototype.show = function() {\n      var _this = this,\n          root = document.querySelector('#bkDialog');\n\n      if(!root) {\n        return;\n      }\n\n      setTimeout(function() {\n        root.className = root.className.replace('hidden', '');\n        this.onShow && this.onShow(this);\n      }, 0);\n    }\n\n    bkDialog.prototype.close = function() {\n      document.querySelector('#bkDialog').className += 'hidden';\n    }\n\n    bkDialog.prototype.remove = function() {\n      this.close();\n      _close.call(this);\n    }\n\n    bkDialog.prototype.setTitle = function(text) {\n      document.querySelector('#bkDialog .bk-dialog-header > .bk-dialog-title').innerText = text;\n    }\n\n    bkDialog.prototype.setContent = function(html) {\n      document.querySelector('#bkDialog .bk-dialog-body').innerHTML = html;\n    }\n\n    bkDialog.prototype.setWidth = function(num) {\n      document.querySelector('#bkDialog .bk-dialog-wrapper').style.width = num.toString() + 'px';\n    }\n\n    return bkDialog;\n}));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/bootstrap-overrides.css",
    "content": "/* Some overrides from default bootstrap styles */\n\nh1,h2,h3,h4,h5,h6{\n\tfont-weight: normal;\n\tfont-family: 'Microsoft Yahei', 'Open Sans', sans-serif;\n}\n\n/* COMPONENTS */\n\n\n/* labels */\n.label, .badge {\n\tfont-weight: lighter;\n\tfont-size: 90%;\n}\n.label-success, .badge-success {\n\tbackground-color: rgb(129, 189, 130);\n}\n.label-info, .badge-info {\n\tbackground-color: rgb(104, 163, 213);\n}\n\n/* alerts */\n.alert [class^=\"icon-\"], \n.alert [class*=\" icon-\"] {\n\tfont-size: 27px;\n\tposition: relative;\n\ttop: 4px;\n\tmargin-bottom: 8px;\n\tmargin-right: 17px;\n\tdisplay: inline-block;\n\tcolor: #f1c359;\n}\n.alert-success [class^=\"icon-\"], \n.alert-success [class*=\" icon-\"] {\n\tcolor: #81ad53;\n}\n.alert-info [class^=\"icon-\"], \n.alert-info [class*=\" icon-\"] {\n\tcolor: #4993c6;\n}\n.alert-danger [class^=\"icon-\"], \n.alert-danger [class*=\" icon-\"] {\n\tcolor: #d5393e;\n}\n\n\n/* code*/\ncode {\n\tcolor: rgb(78, 153, 223);\n}\n\n\n/* HTML ELEMENTS */\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: \"Open Sans\", Arial;\n}\ninput[type=\"text\"],\ninput[type=\"password\"],\ntextarea {\t\n\tfont-size: 13px;\n\t-webkit-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075);\n\t   -moz-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075);\n\t\t\tbox-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075);\n\n\t/*border: none;\n\t-webkit-box-shadow: inset rgba(112, 112, 112, 0.3) 0 1px 1px,inset rgba(0,0,0,0.3) 0 0 1px,rgba(255,255,255,0.4) 0 1px 0;\n\t-moz-box-shadow: inset rgba(112, 112, 112, 0.3) 0 1px 1px,inset rgba(0,0,0,0.3) 0 0 1px,rgba(255,255,255,0.4) 0 1px 0;\n\tbox-shadow: inset rgba(112, 112, 112, 0.3) 0 1px 1px,inset rgba(0,0,0,0.3) 0 0 1px,rgba(255,255,255,0.4) 0 1px 0;\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;*/\n}\n.inline-input input[type=\"text\"],\n.inline-input input[type=\"password\"],\ninput[type=\"text\"].inline-input,\ninput[type=\"password\"].inline-input {\n\tbackground: #fff;\n\tborder-top: 0 none;\n\tborder-left: 0 none;\n\tborder-right: 0 none;\n\tborder-bottom: 1px solid #d0dde9;\n\tborder-radius: 0;\n\tbox-shadow: none;\n\tborder-color: #dee3ea;\n}\n.inline-input input[type=\"text\"]:focus,\n.inline-input input[type=\"password\"]:focus,\ninput[type=\"text\"].inline-input:focus,\ninput[type=\"password\"].inline-input:focus {\n\tbox-shadow: none;\n\tborder-color: #5d6a80;\n}\n.inline-input input[type=\"text\"]:hover,\n.inline-input input[type=\"password\"]:hover,\ninput[type=\"text\"].inline-input:hover,\ninput[type=\"password\"].inline-input:hover {\n\tborder-color: #959fb0;\n}\n\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ntextarea:focus{\t\n\tborder-color: #A2CEF0;\n\t-webkit-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t   -moz-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t\t\tbox-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\n\t/*-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t   -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);\n\t\t\tbox-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);*/\n}\ninput[type=\"reset\"]{\n\ttext-transform: uppercase;\n\tborder:0 none;\n\tbackground: none;\n\ttext-decoration: underline;\n\tfont-size: 12px;\n}\ntextarea{\n\tbackground: #fff;\n\tborder-color: #dee3ea;\n}\nselect{\n\tmargin: 0;\n\theight: 34px;\n\tborder-color: #d0dde9;\n\tborder-radius: 2px;\n\tfont-size: 13px;\n}\ninput[type=\"file\"] {\n\tfont-size: 12px;\n\tline-height: 12px;\n\tdisplay: inline-block;\n}\n\ninput[disabled], textarea[disabled], input[readonly], textarea[readonly] {\n\tcolor: rgb(177, 177, 177);\n}\n/* native placeholders */\ninput:-moz-placeholder,\ntextarea:-moz-placeholder {\n  color: #9ba0a5;\n  font-family: \"Open Sans\", Arial;\n  font-size: 13px;\n}\n\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder {\n  color: #9ba0a5;\n  font-family: \"Open Sans\", Arial;\n  font-size: 12px;\n}\n\ninput::-webkit-input-placeholder,\ntextarea::-webkit-input-placeholder {\n  color: #9ba0a5;\n  font-family: \"Open Sans\", Arial;\n  font-size: 12px;\n}\n\n\n/* PREPEND & APPEND INPUT */\n.input-group input, \n.input-group input, \n.input-group .uneditable-input, \n.input-group .uneditable-input {\n\tborder: 1px solid #d6e2eb;\n}\n.input-group .input-group-addon {\n\tbackground-color: #f2f5f9;\n\tborder: 1px solid #d6e2eb;\n\tpadding: 4px 8px;\n\tfont-size: 13px;\n}\n\n/* NAVBAR */\n.navbar-inverse {\n\tmin-height: 48px;\n\tmargin-bottom: 0px;\n\tborder-radius: 0px;\n\tborder-bottom: 1px solid #191e23;\n\n\tbackground: #2c3742; /* Old browsers */\n\tbackground: -moz-linear-gradient(top,  #2c3742 0%, #28303a 100%); /* FF3.6+ */\n\tbackground: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2c3742), color-stop(100%,#28303a)); /* Chrome,Safari4+ */\n\tbackground: -webkit-linear-gradient(top,  #2c3742 0%,#28303a 100%); /* Chrome10+,Safari5.1+ */\n\tbackground: -o-linear-gradient(top,  #2c3742 0%,#28303a 100%); /* Opera 11.10+ */\n\tbackground: -ms-linear-gradient(top,  #2c3742 0%,#28303a 100%); /* IE10+ */\n\tbackground: linear-gradient(to bottom,  #2c3742 0%,#28303a 100%); /* W3C */\n\tfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2c3742', endColorstr='#28303a',GradientType=0 ); /* IE6-9 */\n}\n/* navbar-nav*/\n.navbar-inverse .navbar-nav {\n\tpadding-right: 20px;\n}\n/* menu toggler */\n/*.navbar-inverse .navbar-toggle {\n\tfloat: left;\n\tmargin-top: 10px;\n\tmargin-left: 15px;\n}*/\n/* navbar brand*/\n.navbar-inverse .navbar-brand {\n\tcolor: #ffffff;\n\ttext-transform: uppercase;\n\tfont-weight: lighter;\n\tpadding: 11px 20px;\n}\n.navbar-inverse .navbar-brand strong {\n\tfont-weight: normal;\n}\n/* navbar links */\n.navbar-inverse .nav > li > a {\n\tpadding: 13px 15px 8px;\n\tborder-left: 1px solid #101417;\n\tcolor: rgb(214, 214, 214);\n\toutline: 0px;\n\theight: 46px;\n\ttransition: background .1s linear;\n\t-moz-transition: background .1s linear; /* Firefox 4 */\n\t-webkit-transition: background .1s linear; /* Safari and Chrome */\n\t-o-transition: background .1s linear;  /* Opera */\n}\n.navbar-inverse .nav > li > a:hover {\n\tbackground: rgba(25, 31, 36,0.6);\n}\n/* dropdown caret */\n.dropdown .caret {\n\tposition: relative;\n\ttop: -1px;\t\n}\n/* dropdown active */\n.dropdown.open > a, \n.dropdown.open > a:hover, \n.dropdown.open > a:focus {\n\tborder-color: #101417;\n}\n/* dropdown menu */\n.dropdown-menu > li > a {\n\tfont-size: 13px;\n\toutline: none;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus,\n.dropdown-submenu:hover > a,\n.dropdown-submenu:focus > a {\n\tbackground: rgb(60, 91, 121) !important;\n}\n\n\n/* PAGINATION */\n.pagination > li > a, .pagination > li > span {\n\tfont-weight: 600;\n}\n.pagination.inverse a,\n.pagination.inverse span {\n\tbackground-color: #333e4a;\n\tcolor: #fff;\n\tborder-top-color: #333e4a;\n\tborder-bottom-color: #333e4a;\n\tborder-right-color: #566676;\n\tborder-left-color: #566676;\n} \n.pagination.inverse a:hover,\n.pagination.inverse span:hover {\n\tbackground-color: #000;\n}\n.pagination.inverse > li.active > a {\n\tcolor: #3b9ff3;\n\tbackground-color: #212b36;\n\tborder-right-color: #212b36;\n\tborder-left-color: #212b36;\n}\n\n/* TABLES*/\n\n.table thead{\n\tborder-top:1px solid #dee3ea;\n}\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: #f5fafc;\n}\n.table th.sortable {\n\tcursor: pointer;\n}\n.table th.sortable:hover {\n\ttext-decoration: underline;\n}\n.table thead th{\n\tfont-weight: bold;\n\tposition: relative;\n\tpadding-bottom: 6px !important;\n\tpadding-top: 6px !important;\n\ttext-transform: uppercase;\n\tfont-size: 11px;\n\tvertical-align: top !important;\n\tborder-bottom: 0px !important;\n}\n.table td{\n\tcolor: #526273;\n\tborder-top-color: #edf2f7 !important;\n\tvertical-align: middle !important;\n}\n.table th.align-right,\n.table td.align-right {\n\ttext-align: right;\n\tpadding-right: 10px !important;\n}\ntable tr.first td{\n\tborder-top: 0 none;\n}\ntable th span.line{\n\tposition: absolute;\n\ttop: 0;\n\tleft: -8px;\n\tborder-left: 1px solid #dee3ea;\n\theight: 10px;\n}\n\n/* modals */\n.modal-backdrop.in {\n\topacity: 0.5 !important;\n}\n\n\n/* override navbar toggle */\n/*@media (max-width: 768px) {\n  .navbar-toggle {\n    display: block !important;\n  }\n}*/\n\n.form-control,\n.input-group-addon{-webkit-border-radius:0; -moz-border-radius:0; border-radius:0;}"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/bootstrap-theme.css",
    "content": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  text-shadow: 0 1px 0 #fff;\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #2d6ca2;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #2d6ca2;\n  border-color: #2b669a;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-color: #e8e8e8;\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-color: #357ebd;\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);\n  background-repeat: repeat-x;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n}\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n}\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);\n  background-image:         linear-gradient(to bottom, #222 0%, #282828 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #3071a9 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #3071a9;\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #3278b3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #3278b3;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);\n  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -moz-box-sizing: content-box;\n       box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n@media print {\n  * {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 62.5%;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #428bca;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #2a6496;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #999;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 200;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\ncite {\n  font-style: normal;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-muted {\n  color: #999;\n}\n.text-primary {\n  color: #428bca;\n}\na.text-primary:hover {\n  color: #3071a9;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #428bca;\n}\na.bg-primary:hover {\n  background-color: #3071a9;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #999;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  white-space: nowrap;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: 0;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: 0;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: 0;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: 0;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: 0;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: 0;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: 0;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: 0;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  max-width: 100%;\n  background-color: transparent;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-child(odd) > td,\n.table-striped > tbody > tr:nth-child(odd) > th {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover > td,\n.table-hover > tbody > tr:hover > th {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n@media (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-x: scroll;\n    overflow-y: hidden;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  /* IE8-9 */\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n  background-color: #eee;\n  opacity: 1;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\ninput[type=\"date\"] {\n  line-height: 34px;\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  display: block;\n  min-height: 20px;\n  padding-left: 20px;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  display: inline;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\n.radio[disabled],\n.radio-inline[disabled],\n.checkbox[disabled],\n.checkbox-inline[disabled],\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"],\nfieldset[disabled] .radio,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.has-feedback .form-control-feedback {\n  position: absolute;\n  top: 25px;\n  right: 0;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.form-control-static {\n  margin-bottom: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    padding-left: 0;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .control-label,\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.form-horizontal .form-control-static {\n  padding-top: 7px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  top: 0;\n  right: 15px;\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  pointer-events: none;\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #ebebeb;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #3276b1;\n  border-color: #285e8e;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-primary .badge {\n  color: #428bca;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #47a447;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #39b3d7;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ed9c28;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #d2322d;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #428bca;\n  cursor: pointer;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #2a6496;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #999;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-right: 0;\n  padding-left: 0;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height .35s ease;\n          transition: height .35s ease;\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px solid;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #428bca;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #999;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #999;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 1px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus {\n  outline: none;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #999;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #999;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #428bca;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #428bca;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  max-height: 340px;\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: none;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n  .navbar-nav.navbar-right:last-child {\n    margin-right: -15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    padding-left: 0;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-form.navbar-right:last-child {\n    margin-right: -15px;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n  .navbar-text.navbar-right:last-child {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #999;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #999;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #999;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #999;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #999;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #999;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #428bca;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  color: #2a6496;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #999;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #999;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\n.label[href]:hover,\n.label[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #999;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #808080;\n}\n.label-primary {\n  background-color: #428bca;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #3071a9;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #999;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #428bca;\n  background-color: #fff;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.container .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #428bca;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable {\n  padding-right: 35px;\n}\n.alert-dismissable .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #428bca;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media-object {\n  display: block;\n}\n.media-heading {\n  margin: 0 0 5px;\n}\n.media > .pull-left {\n  margin-right: 10px;\n}\n.media > .pull-right {\n  margin-left: 10px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\na.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\na.list-group-item.active,\na.list-group-item.active:hover,\na.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\na.list-group-item.active .list-group-item-heading,\na.list-group-item.active:hover .list-group-item-heading,\na.list-group-item.active:focus .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item.active .list-group-item-text,\na.list-group-item.active:hover .list-group-item-text,\na.list-group-item.active:focus .list-group-item-text {\n  color: #e1edf7;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table {\n  margin-bottom: 0;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  overflow: hidden;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #428bca;\n}\n.panel-primary > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #428bca;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: auto;\n  overflow-y: scroll;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n     -moz-transition:    -moz-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: none;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 20px;\n}\n.modal-footer {\n  padding: 19px 20px 20px;\n  margin-top: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1030;\n  display: block;\n  font-size: 12px;\n  line-height: 1.4;\n  visibility: visible;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1010;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  text-align: left;\n  white-space: normal;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: none;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  margin-left: -10px;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    margin-left: -15px;\n    font-size: 30px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/bootstrap3.0.0.css",
    "content": "/*!\n * Bootstrap v3.0.0\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n/*! normalize.css v2.1.0 | MIT License | git.io/normalize */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nvideo {\n  display: inline-block;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden] {\n  display: none;\n}\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\na:focus {\n  outline: thin dotted;\n}\na:active,\na:hover {\n  outline: 0;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, serif;\n  font-size: 1em;\n}\npre {\n  white-space: pre-wrap;\n}\nq {\n  quotes: \"\\201C\" \"\\201D\" \"\\2018\" \"\\2019\";\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 0;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\nbutton,\ninput,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: 100%;\n  margin: 0;\n}\nbutton,\ninput {\n  line-height: normal;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n  vertical-align: top;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n*,\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 62.5%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #333333;\n  background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\nbutton,\ninput,\nselect[multiple],\ntextarea {\n  background-image: none;\n}\na {\n  color: #428bca;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #2a6496;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.428571429;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0 0 0 0);\n  border: 0;\n}\n@media print {\n  * {\n    text-shadow: none !important;\n    color: #000 !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  @page  {\n    margin: 2cm .5cm;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16.099999999999998px;\n  font-weight: 200;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall {\n  font-size: 85%;\n}\ncite {\n  font-style: normal;\n}\n.text-muted {\n  color: #999999;\n}\n.text-primary {\n  color: #428bca;\n}\n.text-warning {\n  color: #c09853;\n}\n.text-danger {\n  color: #b94a48;\n}\n.text-success {\n  color: #468847;\n}\n.text-info {\n  color: #3a87ad;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-weight: 500;\n  line-height: 1.1;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small {\n  font-weight: normal;\n  line-height: 1;\n  color: #999999;\n}\nh1,\nh2,\nh3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh4,\nh5,\nh6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\nh1 small,\n.h1 small {\n  font-size: 24px;\n}\nh2 small,\n.h2 small {\n  font-size: 18px;\n}\nh3 small,\n.h3 small,\nh4 small,\n.h4 small {\n  font-size: 14px;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.428571429;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n  .dl-horizontal dd:before,\n  .dl-horizontal dd:after {\n    content: \" \";\n    /* 1 */\n  \n    display: table;\n    /* 2 */\n  \n  }\n  .dl-horizontal dd:after {\n    clear: both;\n  }\n  .dl-horizontal dd:before,\n  .dl-horizontal dd:after {\n    content: \" \";\n    /* 1 */\n  \n    display: table;\n    /* 2 */\n  \n  }\n  .dl-horizontal dd:after {\n    clear: both;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999;\n}\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p {\n  font-size: 17.5px;\n  font-weight: 300;\n  line-height: 1.25;\n}\nblockquote p:last-child {\n  margin-bottom: 0;\n}\nblockquote small {\n  display: block;\n  line-height: 1.428571429;\n  color: #999999;\n}\nblockquote small:before {\n  content: '\\2014 \\00A0';\n}\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\nblockquote.pull-right p,\nblockquote.pull-right small {\n  text-align: right;\n}\nblockquote.pull-right small:before {\n  content: '';\n}\nblockquote.pull-right small:after {\n  content: '\\00A0 \\2014';\n}\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.428571429;\n}\ncode,\npre {\n  font-family: Monaco, Menlo, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  white-space: nowrap;\n  border-radius: 4px;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.428571429;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\npre.prettyprint {\n  margin-bottom: 20px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.container:before,\n.container:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.container:after {\n  clear: both;\n}\n.container:before,\n.container:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.container:after {\n  clear: both;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.row:before,\n.row:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.row:after {\n  clear: both;\n}\n.row:before,\n.row:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.row:after {\n  clear: both;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12,\n.col-sm-1,\n.col-sm-2,\n.col-sm-3,\n.col-sm-4,\n.col-sm-5,\n.col-sm-6,\n.col-sm-7,\n.col-sm-8,\n.col-sm-9,\n.col-sm-10,\n.col-sm-11,\n.col-sm-12,\n.col-md-1,\n.col-md-2,\n.col-md-3,\n.col-md-4,\n.col-md-5,\n.col-md-6,\n.col-md-7,\n.col-md-8,\n.col-md-9,\n.col-md-10,\n.col-md-11,\n.col-md-12,\n.col-lg-1,\n.col-lg-2,\n.col-lg-3,\n.col-lg-4,\n.col-lg-5,\n.col-lg-6,\n.col-lg-7,\n.col-lg-8,\n.col-lg-9,\n.col-lg-10,\n.col-lg-11,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11 {\n  float: left;\n}\n.col-xs-1 {\n  width: 8.333333333333332%;\n}\n.col-xs-2 {\n  width: 16.666666666666664%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-4 {\n  width: 33.33333333333333%;\n}\n.col-xs-5 {\n  width: 41.66666666666667%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-7 {\n  width: 58.333333333333336%;\n}\n.col-xs-8 {\n  width: 66.66666666666666%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-10 {\n  width: 83.33333333333334%;\n}\n.col-xs-11 {\n  width: 91.66666666666666%;\n}\n.col-xs-12 {\n  width: 100%;\n}\n@media (min-width: 768px) {\n  .container {\n    max-width: 750px;\n  }\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11 {\n    float: left;\n  }\n  .col-sm-1 {\n    width: 8.333333333333332%;\n  }\n  .col-sm-2 {\n    width: 16.666666666666664%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-4 {\n    width: 33.33333333333333%;\n  }\n  .col-sm-5 {\n    width: 41.66666666666667%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-7 {\n    width: 58.333333333333336%;\n  }\n  .col-sm-8 {\n    width: 66.66666666666666%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-10 {\n    width: 83.33333333333334%;\n  }\n  .col-sm-11 {\n    width: 91.66666666666666%;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-push-1 {\n    left: 8.333333333333332%;\n  }\n  .col-sm-push-2 {\n    left: 16.666666666666664%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333333333%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666666666667%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-7 {\n    left: 58.333333333333336%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666666666666%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333333334%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666666666666%;\n  }\n  .col-sm-pull-1 {\n    right: 8.333333333333332%;\n  }\n  .col-sm-pull-2 {\n    right: 16.666666666666664%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333333333%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666666666667%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-7 {\n    right: 58.333333333333336%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666666666666%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333333334%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666666666666%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.333333333333332%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.666666666666664%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333333333%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666666666667%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.333333333333336%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666666666666%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333333334%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666666666666%;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    max-width: 970px;\n  }\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11 {\n    float: left;\n  }\n  .col-md-1 {\n    width: 8.333333333333332%;\n  }\n  .col-md-2 {\n    width: 16.666666666666664%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-4 {\n    width: 33.33333333333333%;\n  }\n  .col-md-5 {\n    width: 41.66666666666667%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-7 {\n    width: 58.333333333333336%;\n  }\n  .col-md-8 {\n    width: 66.66666666666666%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-10 {\n    width: 83.33333333333334%;\n  }\n  .col-md-11 {\n    width: 91.66666666666666%;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-push-1 {\n    left: 8.333333333333332%;\n  }\n  .col-md-push-2 {\n    left: 16.666666666666664%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333333333%;\n  }\n  .col-md-push-5 {\n    left: 41.66666666666667%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-7 {\n    left: 58.333333333333336%;\n  }\n  .col-md-push-8 {\n    left: 66.66666666666666%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333333334%;\n  }\n  .col-md-push-11 {\n    left: 91.66666666666666%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-pull-1 {\n    right: 8.333333333333332%;\n  }\n  .col-md-pull-2 {\n    right: 16.666666666666664%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333333333%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666666666667%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-7 {\n    right: 58.333333333333336%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666666666666%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333333334%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666666666666%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.333333333333332%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.666666666666664%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333333333%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666666666667%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.333333333333336%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666666666666%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333333334%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666666666666%;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1170px;\n  }\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11 {\n    float: left;\n  }\n  .col-lg-1 {\n    width: 8.333333333333332%;\n  }\n  .col-lg-2 {\n    width: 16.666666666666664%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-4 {\n    width: 33.33333333333333%;\n  }\n  .col-lg-5 {\n    width: 41.66666666666667%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-7 {\n    width: 58.333333333333336%;\n  }\n  .col-lg-8 {\n    width: 66.66666666666666%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-10 {\n    width: 83.33333333333334%;\n  }\n  .col-lg-11 {\n    width: 91.66666666666666%;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-push-1 {\n    left: 8.333333333333332%;\n  }\n  .col-lg-push-2 {\n    left: 16.666666666666664%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333333333%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666666666667%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-7 {\n    left: 58.333333333333336%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666666666666%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333333334%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666666666666%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-pull-1 {\n    right: 8.333333333333332%;\n  }\n  .col-lg-pull-2 {\n    right: 16.666666666666664%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333333333%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666666666667%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-7 {\n    right: 58.333333333333336%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666666666666%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333333334%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666666666666%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.333333333333332%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.666666666666664%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333333333%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666666666667%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.333333333333336%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666666666666%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333333334%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666666666666%;\n  }\n}\ntable {\n  max-width: 100%;\n  background-color: transparent;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  margin-bottom: 20px;\n}\n.table thead > tr > th,\n.table tbody > tr > th,\n.table tfoot > tr > th,\n.table thead > tr > td,\n.table tbody > tr > td,\n.table tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.428571429;\n  vertical-align: top;\n  border-top: 1px solid #dddddd;\n}\n.table thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dddddd;\n}\n.table caption + thead tr:first-child th,\n.table colgroup + thead tr:first-child th,\n.table thead:first-child tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child td {\n  border-top: 0;\n}\n.table tbody + tbody {\n  border-top: 2px solid #dddddd;\n}\n.table .table {\n  background-color: #ffffff;\n}\n.table-condensed thead > tr > th,\n.table-condensed tbody > tr > th,\n.table-condensed tfoot > tr > th,\n.table-condensed thead > tr > td,\n.table-condensed tbody > tr > td,\n.table-condensed tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-child(odd) > td,\n.table-striped > tbody > tr:nth-child(odd) > th {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover > td,\n.table-hover > tbody > tr:hover > th {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td {\n  background-color: #d0e9c6;\n  border-color: #c9e2b3;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n  border-color: #eed3d7;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td {\n  background-color: #ebcccc;\n  border-color: #e6c1c7;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n  border-color: #fbeed5;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td {\n  background-color: #faf2cc;\n  border-color: #f8e5be;\n}\n@media (max-width: 768px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    overflow-x: scroll;\n    border: 1px solid #dddddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n    background-color: #fff;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > thead > tr:last-child > td,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  /* IE8-9 */\n\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\nselect optgroup {\n  font-size: inherit;\n  font-style: inherit;\n  font-family: inherit;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n  height: auto;\n}\n.form-control:-moz-placeholder {\n  color: #999999;\n}\n.form-control::-moz-placeholder {\n  color: #999999;\n}\n.form-control:-ms-input-placeholder {\n  color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999999;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #555555;\n  vertical-align: middle;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\ntextarea.form-control {\n  height: auto;\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  display: block;\n  min-height: 20px;\n  margin-top: 10px;\n  margin-bottom: 10px;\n  padding-left: 20px;\n  vertical-align: middle;\n}\n.radio label,\n.checkbox label {\n  display: inline;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\n.radio[disabled],\n.radio-inline[disabled],\n.checkbox[disabled],\n.checkbox-inline[disabled],\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"],\nfieldset[disabled] .radio,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm {\n  height: auto;\n}\n.input-lg {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 45px;\n  line-height: 45px;\n}\ntextarea.input-lg {\n  height: auto;\n}\n.has-warning .help-block,\n.has-warning .control-label {\n  color: #c09853;\n}\n.has-warning .form-control {\n  border-color: #c09853;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #a47e3c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n}\n.has-warning .input-group-addon {\n  color: #c09853;\n  border-color: #c09853;\n  background-color: #fcf8e3;\n}\n.has-error .help-block,\n.has-error .control-label {\n  color: #b94a48;\n}\n.has-error .form-control {\n  border-color: #b94a48;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #953b39;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n}\n.has-error .input-group-addon {\n  color: #b94a48;\n  border-color: #b94a48;\n  background-color: #f2dede;\n}\n.has-success .help-block,\n.has-success .control-label {\n  color: #468847;\n}\n.has-success .form-control {\n  border-color: #468847;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #356635;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n}\n.has-success .input-group-addon {\n  color: #468847;\n  border-color: #468847;\n  background-color: #dff0d8;\n}\n.form-control-static {\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n}\n.form-horizontal .control-label,\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .form-group {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.form-horizontal .form-group:after {\n  clear: both;\n}\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.form-horizontal .form-group:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.428571429;\n  text-align: center;\n  vertical-align: middle;\n  cursor: pointer;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  white-space: nowrap;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n}\n.btn:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus {\n  color: #333333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  pointer-events: none;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default {\n  color: #333333;\n  background-color: #ffffff;\n  border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  color: #333333;\n  background-color: #ebebeb;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #ffffff;\n  border-color: #cccccc;\n}\n.btn-primary {\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  color: #ffffff;\n  background-color: #3276b1;\n  border-color: #285e8e;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.btn-warning {\n  color: #ffffff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  color: #ffffff;\n  background-color: #ed9c28;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-danger {\n  color: #ffffff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  color: #ffffff;\n  background-color: #d2322d;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-success {\n  color: #ffffff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  color: #ffffff;\n  background-color: #47a447;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-info {\n  color: #ffffff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  color: #ffffff;\n  background-color: #39b3d7;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-link {\n  color: #428bca;\n  font-weight: normal;\n  cursor: pointer;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #2a6496;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #999999;\n  text-decoration: none;\n}\n.btn-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-xs {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs {\n  padding: 1px 5px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../../font/glyphicons-halflings-regular.eot');\n  src: url('../../font/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../font/glyphicons-halflings-regular.woff') format('woff'), url('../../font/glyphicons-halflings-regular.ttf') format('truetype'), url('../../font/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\1f4bc\";\n}\n.glyphicon-calendar:before {\n  content: \"\\1f4c5\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\1f4cc\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\1f4ce\";\n}\n.glyphicon-camera:before {\n  content: \"\\1f4f7\";\n}\n.glyphicon-lock:before {\n  content: \"\\1f512\";\n}\n.glyphicon-bell:before {\n  content: \"\\1f514\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\1f516\";\n}\n.glyphicon-fire:before {\n  content: \"\\1f525\";\n}\n.glyphicon-wrench:before {\n  content: \"\\1f527\";\n}\n.btn-default .caret {\n  border-top-color: #333333;\n}\n.btn-primary .caret,\n.btn-success .caret,\n.btn-warning .caret,\n.btn-danger .caret,\n.btn-info .caret {\n  border-top-color: #fff;\n}\n.dropup .btn-default .caret {\n  border-bottom-color: #333333;\n}\n.dropup .btn-primary .caret,\n.dropup .btn-success .caret,\n.dropup .btn-warning .caret,\n.dropup .btn-danger .caret,\n.dropup .btn-info .caret {\n  border-bottom-color: #fff;\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus {\n  outline: none;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar:before,\n.btn-toolbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-toolbar:after {\n  clear: both;\n}\n.btn-toolbar:before,\n.btn-toolbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-toolbar:after {\n  clear: both;\n}\n.btn-toolbar .btn-group {\n  float: left;\n}\n.btn-toolbar > .btn + .btn,\n.btn-toolbar > .btn-group + .btn,\n.btn-toolbar > .btn + .btn-group,\n.btn-toolbar > .btn-group + .btn-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group-xs > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n  padding: 1px 5px;\n}\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-group-vertical > .btn-group:after {\n  clear: both;\n}\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.btn-group-vertical > .btn-group:after {\n  clear: both;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-bottom-left-radius: 4px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified .btn {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group.col {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-group .form-control {\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.33;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 45px;\n  line-height: 45px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -4px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav:before,\n.nav:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.nav:after {\n  clear: both;\n}\n.nav:before,\n.nav:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.nav:after {\n  clear: both;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #999999;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #999999;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #428bca;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.428571429;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  border-bottom: 1px solid #dddddd;\n  margin-right: 0;\n}\n.nav-tabs.nav-justified > .active > a {\n  border-bottom-color: #ffffff;\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 5px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #ffffff;\n  background-color: #428bca;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  border-bottom: 1px solid #dddddd;\n  margin-right: 0;\n}\n.nav-tabs-justified > .active > a {\n  border-bottom-color: #ffffff;\n}\n.tabbable:before,\n.tabbable:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.tabbable:after {\n  clear: both;\n}\n.tabbable:before,\n.tabbable:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.tabbable:after {\n  clear: both;\n}\n.tab-content > .tab-pane,\n.pill-content > .pill-pane {\n  display: none;\n}\n.tab-content > .active,\n.pill-content > .active {\n  display: block;\n}\n.nav .caret {\n  border-top-color: #428bca;\n  border-bottom-color: #428bca;\n}\n.nav a:hover .caret {\n  border-top-color: #2a6496;\n  border-bottom-color: #2a6496;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  z-index: 1000;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n.navbar:before,\n.navbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar:after {\n  clear: both;\n}\n.navbar:before,\n.navbar:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n.navbar-header:before,\n.navbar-header:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-header:after {\n  clear: both;\n}\n.navbar-header:before,\n.navbar-header:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-header:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  max-height: 340px;\n  overflow-x: visible;\n  padding-right: 15px;\n  padding-left: 15px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse:before,\n.navbar-collapse:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-collapse:after {\n  clear: both;\n}\n.navbar-collapse:before,\n.navbar-collapse:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.navbar-collapse:after {\n  clear: both;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-collapse .navbar-nav.navbar-left:first-child {\n    margin-left: -15px;\n  }\n  .navbar-collapse .navbar-nav.navbar-right:last-child {\n    margin-right: -15px;\n  }\n  .navbar-collapse .navbar-text:last-child {\n    margin-right: 0;\n  }\n}\n.container > .navbar-header,\n.container > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  z-index: 1030;\n  top: 0;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 15px;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n  }\n}\n.navbar-form {\n  margin-left: -15px;\n  margin-right: -15px;\n  padding: 10px 15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    float: none;\n    margin-left: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-nav.pull-right > li > .dropdown-menu,\n.navbar-nav > li > .dropdown-menu.pull-right {\n  left: auto;\n  right: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-text {\n  float: left;\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    margin-left: 15px;\n    margin-right: 15px;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #cccccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #cccccc;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e6e6e6;\n}\n.navbar-default .navbar-nav > .dropdown > a:hover .caret,\n.navbar-default .navbar-nav > .dropdown > a:focus .caret {\n  border-top-color: #333333;\n  border-bottom-color: #333333;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555555;\n}\n.navbar-default .navbar-nav > .open > a .caret,\n.navbar-default .navbar-nav > .open > a:hover .caret,\n.navbar-default .navbar-nav > .open > a:focus .caret {\n  border-top-color: #555555;\n  border-bottom-color: #555555;\n}\n.navbar-default .navbar-nav > .dropdown > a .caret {\n  border-top-color: #777777;\n  border-bottom-color: #777777;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #cccccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333333;\n}\n.navbar-inverse {\n  background-color: #222222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #999999;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #ffffff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #999999;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #999999;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #ffffff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #ffffff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #ffffff;\n}\n.navbar-inverse .navbar-nav > .dropdown > a:hover .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n.navbar-inverse .navbar-nav > .dropdown > a .caret {\n  border-top-color: #999999;\n  border-bottom-color: #999999;\n}\n.navbar-inverse .navbar-nav > .open > a .caret,\n.navbar-inverse .navbar-nav > .open > a:hover .caret,\n.navbar-inverse .navbar-nav > .open > a:focus .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #999999;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #ffffff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #ffffff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #999999;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #ffffff;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #cccccc;\n}\n.breadcrumb > .active {\n  color: #999999;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.428571429;\n  text-decoration: none;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  background-color: #eeeeee;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #428bca;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #999999;\n  background-color: #ffffff;\n  border-color: #dddddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 6px;\n  border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 6px;\n  border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager:before,\n.pager:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.pager:after {\n  clear: both;\n}\n.pager:before,\n.pager:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.pager:after {\n  clear: both;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #999999;\n  background-color: #ffffff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #ffffff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\n.label[href]:hover,\n.label[href]:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.label-default {\n  background-color: #999999;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #808080;\n}\n.label-primary {\n  background-color: #428bca;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #3071a9;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #ffffff;\n  line-height: 1;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #999999;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\na.badge:hover,\na.badge:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #428bca;\n  background-color: #ffffff;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px;\n  margin-bottom: 30px;\n  font-size: 21px;\n  font-weight: 200;\n  line-height: 2.1428571435;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1 {\n  line-height: 1;\n  color: inherit;\n}\n.jumbotron p {\n  line-height: 1.4;\n}\n.container .jumbotron {\n  border-radius: 6px;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  padding: 4px;\n  line-height: 1.428571429;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  display: block;\n}\n.thumbnail > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #428bca;\n}\n.thumbnail > img {\n  margin-left: auto;\n  margin-right: auto;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable {\n  padding-right: 35px;\n}\n.alert-dismissable .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #468847;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #356635;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #3a87ad;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #2d6987;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #fbeed5;\n  color: #c09853;\n}\n.alert-warning hr {\n  border-top-color: #f8e5be;\n}\n.alert-warning .alert-link {\n  color: #a47e3c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #eed3d7;\n  color: #b94a48;\n}\n.alert-danger hr {\n  border-top-color: #e6c1c7;\n}\n.alert-danger .alert-link {\n  color: #953b39;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-moz-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 0 0;\n  }\n  to {\n    background-position: 40px 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  color: #ffffff;\n  text-align: center;\n  background-color: #428bca;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -moz-animation: progress-bar-stripes 2s linear infinite;\n  -ms-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media-object {\n  display: block;\n}\n.media-heading {\n  margin: 0 0 5px;\n}\n.media > .pull-left {\n  margin-right: 10px;\n}\n.media > .pull-right {\n  margin-left: 10px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\na.list-group-item {\n  color: #555555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #e1edf7;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #ffffff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-body:before,\n.panel-body:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.panel-body:after {\n  clear: both;\n}\n.panel-body:before,\n.panel-body:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.panel-body:after {\n  clear: both;\n}\n.panel > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item {\n  border-width: 1px 0;\n}\n.panel > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel > .list-group .list-group-item:last-child {\n  border-bottom: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.panel > .table {\n  margin-bottom: 0;\n}\n.panel > .panel-body + .table {\n  border-top: 1px solid #dddddd;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n}\n.panel-title > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #dddddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n  overflow: hidden;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse .panel-body {\n  border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n  border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #dddddd;\n}\n.panel-default > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #dddddd;\n}\n.panel-primary {\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading {\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #428bca;\n}\n.panel-primary > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #428bca;\n}\n.panel-primary > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #428bca;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #468847;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-warning {\n  border-color: #fbeed5;\n}\n.panel-warning > .panel-heading {\n  color: #c09853;\n  background-color: #fcf8e3;\n  border-color: #fbeed5;\n}\n.panel-warning > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #fbeed5;\n}\n.panel-warning > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #fbeed5;\n}\n.panel-danger {\n  border-color: #eed3d7;\n}\n.panel-danger > .panel-heading {\n  color: #b94a48;\n  background-color: #f2dede;\n  border-color: #eed3d7;\n}\n.panel-danger > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #eed3d7;\n}\n.panel-danger > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #eed3d7;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #3a87ad;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-footer + .panel-collapse .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000000;\n  text-shadow: 0 1px 0 #ffffff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px solid #000000;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n  border-bottom: 0 dotted;\n  content: \"\";\n}\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.428571429;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #ffffff;\n  background-color: #428bca;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #ffffff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #428bca;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #999999;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.428571429;\n  color: #999999;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0 dotted;\n  border-bottom: 4px solid #000000;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 1px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1030;\n  display: block;\n  visibility: visible;\n  font-size: 12px;\n  line-height: 1.4;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #ffffff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1010;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  text-align: left;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid #cccccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  white-space: normal;\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover .arrow,\n.popover .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover .arrow {\n  border-width: 11px;\n}\n.popover .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #ffffff;\n}\n.popover.right .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #ffffff;\n}\n.popover.bottom .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n}\n.popover.left .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #ffffff;\n  bottom: -10px;\n}\n.modal-open {\n  overflow: hidden;\n}\nbody.modal-open,\n.modal-open .navbar-fixed-top,\n.modal-open .navbar-fixed-bottom {\n  margin-right: 15px;\n}\n.modal {\n  display: none;\n  overflow: auto;\n  overflow-y: scroll;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-dialog {\n  margin-left: auto;\n  margin-right: auto;\n  width: auto;\n  padding: 10px;\n  z-index: 1050;\n}\n.modal-content {\n  position: relative;\n  background-color: #ffffff;\n  border: 1px solid #999999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: none;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n  background-color: #000000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n  min-height: 16.428571429px;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.428571429;\n}\n.modal-body {\n  position: relative;\n  padding: 20px;\n}\n.modal-footer {\n  margin-top: 15px;\n  padding: 19px 20px 20px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.modal-footer:after {\n  clear: both;\n}\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.modal-footer:after {\n  clear: both;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n@media screen and (min-width: 768px) {\n  .modal-dialog {\n    left: 50%;\n    right: auto;\n    width: 600px;\n    padding-top: 30px;\n    padding-bottom: 30px;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n  line-height: 1;\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n  background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));\n  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));\n  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));\n  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #ffffff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  margin-left: -10px;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #ffffff;\n  border-radius: 10px;\n  cursor: pointer;\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #ffffff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    margin-left: -15px;\n    font-size: 30px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after {\n  content: \" \";\n  /* 1 */\n\n  display: table;\n  /* 2 */\n\n}\n.clearfix:after {\n  clear: both;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n@media screen and (max-width: 400px) {\n  @-ms-viewport {\n    width: 320px;\n  }\n}\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n.visible-xs {\n  display: none !important;\n}\ntr.visible-xs {\n  display: none !important;\n}\nth.visible-xs,\ntd.visible-xs {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-xs.visible-sm {\n    display: block !important;\n  }\n  tr.visible-xs.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-xs.visible-sm,\n  td.visible-xs.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-xs.visible-md {\n    display: block !important;\n  }\n  tr.visible-xs.visible-md {\n    display: table-row !important;\n  }\n  th.visible-xs.visible-md,\n  td.visible-xs.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-xs.visible-lg {\n    display: block !important;\n  }\n  tr.visible-xs.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-xs.visible-lg,\n  td.visible-xs.visible-lg {\n    display: table-cell !important;\n  }\n}\n.visible-sm {\n  display: none !important;\n}\ntr.visible-sm {\n  display: none !important;\n}\nth.visible-sm,\ntd.visible-sm {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-sm.visible-xs {\n    display: block !important;\n  }\n  tr.visible-sm.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-sm.visible-xs,\n  td.visible-sm.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-sm.visible-md {\n    display: block !important;\n  }\n  tr.visible-sm.visible-md {\n    display: table-row !important;\n  }\n  th.visible-sm.visible-md,\n  td.visible-sm.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-sm.visible-lg {\n    display: block !important;\n  }\n  tr.visible-sm.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-sm.visible-lg,\n  td.visible-sm.visible-lg {\n    display: table-cell !important;\n  }\n}\n.visible-md {\n  display: none !important;\n}\ntr.visible-md {\n  display: none !important;\n}\nth.visible-md,\ntd.visible-md {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-md.visible-xs {\n    display: block !important;\n  }\n  tr.visible-md.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-md.visible-xs,\n  td.visible-md.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-md.visible-sm {\n    display: block !important;\n  }\n  tr.visible-md.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-md.visible-sm,\n  td.visible-md.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-md.visible-lg {\n    display: block !important;\n  }\n  tr.visible-md.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-md.visible-lg,\n  td.visible-md.visible-lg {\n    display: table-cell !important;\n  }\n}\n.visible-lg {\n  display: none !important;\n}\ntr.visible-lg {\n  display: none !important;\n}\nth.visible-lg,\ntd.visible-lg {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-lg.visible-xs {\n    display: block !important;\n  }\n  tr.visible-lg.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-lg.visible-xs,\n  td.visible-lg.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-lg.visible-sm {\n    display: block !important;\n  }\n  tr.visible-lg.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-lg.visible-sm,\n  td.visible-lg.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-lg.visible-md {\n    display: block !important;\n  }\n  tr.visible-lg.visible-md {\n    display: table-row !important;\n  }\n  th.visible-lg.visible-md,\n  td.visible-lg.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n.hidden-xs {\n  display: block !important;\n}\ntr.hidden-xs {\n  display: table-row !important;\n}\nth.hidden-xs,\ntd.hidden-xs {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-xs,\n  td.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-xs.hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-xs.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-xs.hidden-sm,\n  td.hidden-xs.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-xs.hidden-md {\n    display: none !important;\n  }\n  tr.hidden-xs.hidden-md {\n    display: none !important;\n  }\n  th.hidden-xs.hidden-md,\n  td.hidden-xs.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-xs.hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-xs.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-xs.hidden-lg,\n  td.hidden-xs.hidden-lg {\n    display: none !important;\n  }\n}\n.hidden-sm {\n  display: block !important;\n}\ntr.hidden-sm {\n  display: table-row !important;\n}\nth.hidden-sm,\ntd.hidden-sm {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-sm.hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-sm.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-sm.hidden-xs,\n  td.hidden-sm.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-sm,\n  td.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-sm.hidden-md {\n    display: none !important;\n  }\n  tr.hidden-sm.hidden-md {\n    display: none !important;\n  }\n  th.hidden-sm.hidden-md,\n  td.hidden-sm.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-sm.hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-sm.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-sm.hidden-lg,\n  td.hidden-sm.hidden-lg {\n    display: none !important;\n  }\n}\n.hidden-md {\n  display: block !important;\n}\ntr.hidden-md {\n  display: table-row !important;\n}\nth.hidden-md,\ntd.hidden-md {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-md.hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-md.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-md.hidden-xs,\n  td.hidden-md.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-md.hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-md.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-md.hidden-sm,\n  td.hidden-md.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n  tr.hidden-md {\n    display: none !important;\n  }\n  th.hidden-md,\n  td.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-md.hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-md.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-md.hidden-lg,\n  td.hidden-md.hidden-lg {\n    display: none !important;\n  }\n}\n.hidden-lg {\n  display: block !important;\n}\ntr.hidden-lg {\n  display: table-row !important;\n}\nth.hidden-lg,\ntd.hidden-lg {\n  display: table-cell !important;\n}\n@media (max-width: 767px) {\n  .hidden-lg.hidden-xs {\n    display: none !important;\n  }\n  tr.hidden-lg.hidden-xs {\n    display: none !important;\n  }\n  th.hidden-lg.hidden-xs,\n  td.hidden-lg.hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-lg.hidden-sm {\n    display: none !important;\n  }\n  tr.hidden-lg.hidden-sm {\n    display: none !important;\n  }\n  th.hidden-lg.hidden-sm,\n  td.hidden-lg.hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-lg.hidden-md {\n    display: none !important;\n  }\n  tr.hidden-lg.hidden-md {\n    display: none !important;\n  }\n  th.hidden-lg.hidden-md,\n  td.hidden-lg.hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n  tr.hidden-lg {\n    display: none !important;\n  }\n  th.hidden-lg,\n  td.hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\ntr.visible-print {\n  display: none !important;\n}\nth.visible-print,\ntd.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n  .hidden-print {\n    display: none !important;\n  }\n  tr.hidden-print {\n    display: none !important;\n  }\n  th.hidden-print,\n  td.hidden-print {\n    display: none !important;\n  }\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n  transition: height 0.35s ease;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/button.css",
    "content": "/*按钮*/\nbody{font-family:\"Microsoft Yahei\";}\n.header{line-height:28px; margin-bottom:16px; margin-top:18px; padding-bottom:4px; border-bottom:1px solid #CCC}\n.header.blue{border-bottom-color:#d5e3ef}\n.header.green{border-bottom-color:#cce2c1}\n.header.purple{border-bottom-color:#e0d1ea}\n.header.orange{border-bottom-color:#fdd0ac}\n.header.orange2{border-bottom-color:#fbd36b}\n.header.red{border-bottom-color:#f3cdc6}\n.header.grey{border-bottom-color:#c3c3c3}\n.header.pink{border-bottom-color:#f2e0eb}\n.header.pink2{border-bottom-color:#e69eb9}\n.header.light-blue{border-bottom-color:#dceefc}\n.header.light-red{border-bottom-color:#fec5c5}\n.header.light-green{border-bottom-color:#d2e7b5}\n.header.brown{border-bottom-color:#df9393}\nh3.smaller {\n\tfont-size: 21px\n}\n.align-left {\n\ttext-align: left !important\n}\n\n.align-right {\n\ttext-align: right !important\n}\n\n.middle {\n\tvertical-align: middle\n}\n\n.align-middle {\n\tvertical-align: middle !important\n}\n\n.align-top {\n\tvertical-align: top !important\n}\n\n.align-bottom {\n\tvertical-align: bottom !important\n}\n.dark {\n\tcolor: #333 !important\n}\n\n.white {\n\tcolor: #fff !important\n}\n\n.red {\n\tcolor: #dd5a43 !important\n}\n\n.red2 {\n\tcolor: #e08374 !important\n}\n\n.light-red {\n\tcolor: #f77 !important\n}\n\n.blue {\n\tcolor: #478fca !important\n}\n\n.light-blue {\n\tcolor: #93cbf9 !important\n}\n\n.green {\n\tcolor: #69aa46 !important\n}\n\n.light-green {\n\tcolor: #b0d877 !important\n}\n\n.orange {\n\tcolor: #ff892a !important\n}\n\n.orange2 {\n\tcolor: #feb902 !important\n}\n\n.light-orange {\n\tcolor: #fcac6f !important\n}\n\n.purple {\n\tcolor: #a069c3 !important\n}\n\n.pink {\n\tcolor: #c6699f !important\n}\n\n.pink2 {\n\tcolor: #d6487e !important\n}\n\n.brown {\n\tcolor: #a52a2a !important\n}\n\n.grey {\n\tcolor: #777 !important\n}\n\n.light-grey {\n\tcolor: #bbb !important\n}\n.lighter {\n\tfont-weight: lighter\n}\n.btn.btn-app {\n\tdisplay: inline-block;\n\twidth: 100px;\n\tfont-size: 18px;\n\tfont-weight: normal;\n\tcolor: #FFF;\n\ttext-align: center;\n\ttext-shadow: 0 -1px -1px rgba(0,0,0,0.2) !important;\n\tborder: none;\n\tborder-radius: 12px;\n\tpadding: 12px 0 8px;\n\tmargin: 2px;\n\tline-height: 1.7;\n\tposition: relative\n}\n.btn-app,.btn-app.btn-default,.btn-app.no-hover:hover,.btn-app.btn-default.no-hover:hover,.btn-app.disabled:hover,.btn-app.btn-default.disabled:hover {\n\tbackground: #b4c2cc !important;\n\tbackground-image: -webkit-linear-gradient(top, #bcc9d5 0, #abbac3 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #bcc9d5 0, #abbac3 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbcc9d5', endColorstr='#ffabbac3', GradientType=0) !important\n}\n\n.btn-app:hover,.btn-app.btn-default:hover {\n\tbackground: #9baebc !important;\n\tbackground-image: -webkit-linear-gradient(top, #a3b5c5 0, #93a6b2 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #a3b5c5 0, #93a6b2 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa3b5c5', endColorstr='#ff93a6b2', GradientType=0) !important\n}\n\n.btn-app.btn-primary,.btn-app.btn-primary.no-hover:hover,.btn-app.btn-primary.disabled:hover {\n\tbackground: #2a8bcb !important;\n\tbackground-image: -webkit-linear-gradient(top, #3b98d6 0, #197ec1 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #3b98d6 0, #197ec1 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b98d6', endColorstr='#ff197ec1', GradientType=0) !important\n}\n\n.btn-app.btn-primary:hover {\n\tbackground: #1d6fa6 !important;\n\tbackground-image: -webkit-linear-gradient(top, #267eb8 0, #136194 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #267eb8 0, #136194 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff267eb8', endColorstr='#ff136194', GradientType=0) !important\n}\n\n.btn-app.btn-info,.btn-app.btn-info.no-hover:hover,.btn-app.btn-info.disabled:hover {\n\tbackground: #68adde !important;\n\tbackground-image: -webkit-linear-gradient(top, #75b5e6 0, #5ba4d5 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #75b5e6 0, #5ba4d5 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff75b5e6', endColorstr='#ff5ba4d5', GradientType=0) !important\n}\n\n.btn-app.btn-info:hover {\n\tbackground: #3f96d4 !important;\n\tbackground-image: -webkit-linear-gradient(top, #4a9ede 0, #348dc9 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #4a9ede 0, #348dc9 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4a9ede', endColorstr='#ff348dc9', GradientType=0) !important\n}\n\n.btn-app.btn-success,.btn-app.btn-success.no-hover:hover,.btn-app.btn-success.disabled:hover {\n\tbackground: #85b558 !important;\n\tbackground-image: -webkit-linear-gradient(top, #8ebf60 0, #7daa50 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #8ebf60 0, #7daa50 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ebf60', endColorstr='#ff7daa50', GradientType=0) !important\n}\n\n.btn-app.btn-success:hover {\n\tbackground: #6c9842 !important;\n\tbackground-image: -webkit-linear-gradient(top, #74a844 0, #648740 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #74a844 0, #648740 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74a844', endColorstr='#ff648740', GradientType=0) !important\n}\n\n.btn-app.btn-danger,.btn-app.btn-danger.no-hover:hover,.btn-app.btn-danger.disabled:hover {\n\tbackground: #d3413b !important;\n\tbackground-image: -webkit-linear-gradient(top, #d55b52 0, #d12723 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #d55b52 0, #d12723 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd55b52', endColorstr='#ffd12723', GradientType=0) !important\n}\n\n.btn-app.btn-danger:hover {\n\tbackground: #b52c26 !important;\n\tbackground-image: -webkit-linear-gradient(top, #c43a30 0, #a51f1c 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #c43a30 0, #a51f1c 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc43a30', endColorstr='#ffa51f1c', GradientType=0) !important\n}\n\n.btn-app.btn-warning,.btn-app.btn-warning.no-hover:hover,.btn-app.btn-warning.disabled:hover {\n\tbackground: #ffb44b !important;\n\tbackground-image: -webkit-linear-gradient(top, #ffbf66 0, #ffa830 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #ffbf66 0, #ffa830 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffbf66', endColorstr='#ffffa830', GradientType=0) !important\n}\n\n.btn-app.btn-warning:hover {\n\tbackground: #fe9e19 !important;\n\tbackground-image: -webkit-linear-gradient(top, #fa3 0, #fc9200 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #fa3 0, #fc9200 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffaa33', endColorstr='#fffc9200', GradientType=0) !important\n}\n\n.btn-app.btn-purple,.btn-app.btn-purple.no-hover:hover,.btn-app.btn-purple.disabled:hover {\n\tbackground: #9889c1 !important;\n\tbackground-image: -webkit-linear-gradient(top, #a696ce 0, #8a7cb4 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #a696ce 0, #8a7cb4 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa696ce', endColorstr='#ff8a7cb4', GradientType=0) !important\n}\n\n.btn-app.btn-purple:hover {\n\tbackground: #7b68af !important;\n\tbackground-image: -webkit-linear-gradient(top, #8973be 0, #6d5ca1 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #8973be 0, #6d5ca1 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8973be', endColorstr='#ff6d5ca1', GradientType=0) !important\n}\n\n.btn-app.btn-pink,.btn-app.btn-pink.no-hover:hover,.btn-app.btn-pink.disabled:hover {\n\tbackground: #d54c7e !important;\n\tbackground-image: -webkit-linear-gradient(top, #db5e8c 0, #ce3970 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #db5e8c 0, #ce3970 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdb5e8c', endColorstr='#ffce3970', GradientType=0) !important\n}\n\n.btn-app.btn-pink:hover {\n\tbackground: #be2f64 !important;\n\tbackground-image: -webkit-linear-gradient(top, #d2346e 0, #aa2a59 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #d2346e 0, #aa2a59 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd2346e', endColorstr='#ffaa2a59', GradientType=0) !important\n}\n\n.btn-app.btn-inverse,.btn-app.btn-inverse.no-hover:hover,.btn-app.btn-inverse.disabled:hover {\n\tbackground: #444 !important;\n\tbackground-image: -webkit-linear-gradient(top, #555 0, #333 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #555 0, #333 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0) !important\n}\n\n.btn-app.btn-inverse:hover {\n\tbackground: #2b2b2b !important;\n\tbackground-image: -webkit-linear-gradient(top, #3b3b3b 0, #1a1a1a 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #3b3b3b 0, #1a1a1a 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b3b3b', endColorstr='#ff1a1a1a', GradientType=0) !important\n}\n\n.btn-app.btn-grey,.btn-app.btn-grey.no-hover:hover,.btn-app.btn-grey.disabled:hover {\n\tbackground: #797979 !important;\n\tbackground-image: -webkit-linear-gradient(top, #898989 0, #696969 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #898989 0, #696969 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff898989', endColorstr='#ff696969', GradientType=0) !important\n}\n\n.btn-app.btn-grey:hover {\n\tbackground: #6c6c6c !important;\n\tbackground-image: -webkit-linear-gradient(top, #7c7c7c 0, #5c5c5c 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #7c7c7c 0, #5c5c5c 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7c7c7c', endColorstr='#ff5c5c5c', GradientType=0) !important\n}\n\n.btn.btn-app.btn-light {\n\tcolor: #5a5a5a !important;\n\ttext-shadow: 0 1px 1px #EEE !important\n}\n\n.btn.btn-app.btn-light,.btn.btn-app.btn-light.no-hover:hover,.btn.btn-app.btn-light.disabled:hover {\n\tbackground: #ededed !important;\n\tbackground-image: -webkit-linear-gradient(top, #f4f4f4 0, #e6e6e6 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #f4f4f4 0, #e6e6e6 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe6e6e6', GradientType=0) !important\n}\n\n.btn.btn-app.btn-light:hover {\n\tbackground: #e0e0e0 !important;\n\tbackground-image: -webkit-linear-gradient(top, #e7e7e7 0, #d9d9d9 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #e7e7e7 0, #d9d9d9 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe7e7e7', endColorstr='#ffd9d9d9', GradientType=0) !important\n}\n\n.btn.btn-app.btn-yellow {\n\tcolor: #963 !important;\n\ttext-shadow: 0 -1px 0 rgba(255,255,255,0.4) !important\n}\n\n.btn.btn-app.btn-yellow,.btn.btn-app.btn-yellow.no-hover:hover,.btn.btn-app.btn-yellow.disabled:hover {\n\tbackground: #fee088 !important;\n\tbackground-image: -webkit-linear-gradient(top, #ffe8a5 0, #fcd76a 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #ffe8a5 0, #fcd76a 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe8a5', endColorstr='#fffcd76a', GradientType=0) !important\n}\n\n.btn.btn-app.btn-yellow:hover {\n\tbackground: #fdd96e !important;\n\tbackground-image: -webkit-linear-gradient(top, #ffe18b 0, #fbd051 100%) !important;\n\tbackground-image: linear-gradient(to bottom, #ffe18b 0, #fbd051 100%) !important;\n\tbackground-repeat: repeat-x !important;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe18b', endColorstr='#fffbd051', GradientType=0) !important\n}\n.btn.btn-app.btn-sm {\n\twidth: 80px;\n\tfont-size: 16px;\n\tborder-radius: 10px;\n\tline-height: 1.5\n}\n.btn.btn-app.no-radius {\n\tborder-radius: 0\n}\n.ace-icon {\n\ttext-align: center\n}\n.btn>.ace-icon {\n\tmargin-right: 4px\n}\n.btn>.ace-icon.icon-on-right {\n\tmargin-right: 0;\n\tmargin-left: 4px\n}\n.btn.btn-app>.ace-icon {\n\tdisplay: block;\n\tfont-size: 42px;\n\tmargin: 0 0 4px;\n\tline-height: 36px;\n\tmin-width: 0;\n\tpadding: 0\n}\n.btn.btn-app.btn-xs {\n\twidth: 64px;\n\tfont-size: 15px;\n\tborder-radius: 8px;\n\tpadding-bottom: 7px;\n\tpadding-top: 8px;\n\tline-height: 1.45\n}\n.btn.btn-app.btn-sm>.ace-icon {\n\tdisplay: block;\n\tfont-size: 32px;\n\tline-height: 30px;\n\tmargin: 0 0 3px\n}\n.btn.btn-app.btn-xs>.ace-icon {\n\tdisplay: block;\n\tfont-size: 24px;\n\tline-height: 24px;\n\tmargin: 0\n}\n.btn.btn-app.radius-4{\n\tborder-radius: 4px\n}\n.bigger-110 {\n\tfont-size: 110% !important\n}\n.bigger-120 {\n\tfont-size: 120% !important\n}\n.bigger-125 {\n\tfont-size: 125% !important\n}\n.bigger-150 {\n\tfont-size: 150% !important\n}\n.bigger-160 {\n\tfont-size: 160% !important\n}\n.bigger-200 {\n\tfont-size: 200% !important\n}\n.bigger-230 {\n\tfont-size: 230% !important\n}\n.btn.btn-app>.badge,.btn.btn-app>.label {\n\tposition: absolute !important;\n\ttop: -2px;\n\tright: -2px;\n\tpadding: 1px 3px;\n\ttext-align: center;\n\tfont-size: 12px;\n\tcolor: #FFF\n}\n.badge {\n\ttext-shadow: none;\n\tfont-size: 12px;\n\tpadding-top: 1px;\n\tpadding-bottom: 3px;\n\tfont-weight: normal;\n\tline-height: 15px;\n\tbackground-color: #abbac3 !important\n}\n.btn.btn-app.radius-4>.badge,.btn.btn-app.no-radius>.badge {\n\tborder-radius: 3px\n}\n.label-pink,.badge-pink {\n\tbackground-color: #d6487e !important\n}\n.btn.btn-app>.badge.badge-left,.btn.btn-app>.label.badge-left,.btn.btn-app>.badge.label-left,.btn.btn-app>.label.label-left {\n\tright: auto;\n\tleft: -2px\n}\n.label-warning,.badge-warning {\n\tbackground-color: #f89406 !important\n}\n.btn.btn-app>.badge,.btn.btn-app>.label {\n\tposition: absolute !important;\n\ttop: -2px;\n\tright: -2px;\n\tpadding: 1px 3px;\n\ttext-align: center;\n\tfont-size: 12px;\n\tcolor: #FFF\n}\n.btn.btn-app>.label {\n\tpadding: 1px 6px 3px;\n\tfont-size: 13px\n}\n.label {\n\tborder-radius: 0;\n\ttext-shadow: none;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tbackground-color: #abbac3 !important\n}\n.label-inverse,.badge-inverse {\n\tbackground-color: #333 !important\n}\n.label.arrowed,.label.arrowed-in {\n\tposition: relative;\n\tz-index: 1\n}\n.label.arrowed:before,.label.arrowed-in:before {\n\tdisplay: inline-block;\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tz-index: -1;\n\tborder: 1px solid transparent;\n\tborder-right-color: #abbac3;\n\t-moz-border-right-colors: #abbac3\n}\n\n.label.arrowed-in:before {\n\tborder-color: #abbac3;\n\tborder-left-color: transparent !important;\n\t-moz-border-left-colors: none !important\n}\n.label.arrowed-in:before {\n\tleft: -5px;\n\tborder-width: 10px 5px\n}\n.label-inverse.arrowed-in:before {\n\tborder-color: #333;\n\t-moz-border-right-colors: #333\n}\n.label {\n\tfont-size: 12px;\n\tline-height: 1.15;\n\theight: 20px\n}\n.hr {\n\tdisplay: block;\n\theight: 0;\n\toverflow: hidden;\n\tfont-size: 0;\n\tborder-width: 1px 0 0 0;\n\tborder-top: 1px solid #E3E3E3;\n\tmargin: 12px 0;\n\tborder-top-color: rgba(0,0,0,0.11)\n}\n\n.hr-double {\n\theight: 3px;\n\tborder-top: 1px solid #E3E3E3;\n\tborder-bottom: 1px solid #E3E3E3;\n\tborder-top-color: rgba(0,0,0,0.11);\n\tborder-bottom-color: rgba(0,0,0,0.11)\n}\n\n.hr.dotted,.hr-dotted {\n\tborder-style: dotted\n}\n\n.hr-32,.hr32 {\n\tmargin: 32px 0\n}\n\n.hr-30,.hr30 {\n\tmargin: 30px 0\n}\n\n.hr-28,.hr28 {\n\tmargin: 28px 0\n}\n\n.hr-26,.hr26 {\n\tmargin: 26px 0\n}\n\n.hr-24,.hr24 {\n\tmargin: 24px 0\n}\n\n.hr-22,.hr22 {\n\tmargin: 22px 0\n}\n\n.hr-20,.hr20 {\n\tmargin: 20px 0\n}\n\n.hr-18,.hr18 {\n\tmargin: 18px 0\n}\n\n.hr-16,.hr16 {\n\tmargin: 16px 0\n}\n\n.hr-14,.hr14 {\n\tmargin: 14px 0\n}\n\n.hr-12,.hr12 {\n\tmargin: 12px 0\n}\n\n.hr-10,.hr10 {\n\tmargin: 10px 0\n}\n\n.hr-8,.hr8 {\n\tmargin: 8px 0\n}\n\n.hr-6,.hr6 {\n\tmargin: 6px 0\n}\n\n.hr-4,.hr4 {\n\tmargin: 4px 0\n}\n\n.hr-2,.hr2 {\n\tmargin: 2px 0\n}\n.space {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0\n}\n.space-2 {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0;\n\tmargin: 2px 0 1px\n}\n.space-4 {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0;\n\tmargin: 4px 0 3px\n}\n.space-6 {\n\tmax-height: 1px;\n\tmin-height: 1px;\n\toverflow: hidden;\n\tmargin: 12px 0;\n\tmargin: 6px 0 5px\n}\n.btn {\n\tdisplay: inline-block;\n\tcolor: #FFF !important;\n\ttext-shadow: 0 -1px 0 rgba(0,0,0,0.25) !important;\n\tbackground-image: none !important;\n\tborder: 5px solid #FFF;\n\tborder-radius: 0;\n\tbox-shadow: none !important;\n\t-webkit-transition: all ease .15s;\n\ttransition: all ease .15s;\n\tcursor: pointer;\n\tvertical-align: middle;\n\tmargin: 0;\n\tposition: relative\n}\n.btn-lg {\n\tborder-width: 5px;\n\tline-height: 1.35;\n\tpadding: 7px 16px\n}\n\n.btn-sm {\n\tborder-width: 4px;\n\tfont-size: 13px;\n\tpadding: 4px 9px;\n\tline-height: 1.39\n}\n\n.btn-xs {\n\tborder-width: 3px\n}\n\n.btn-minier {\n\tpadding: 0 4px;\n\tline-height: 18px;\n\tborder-width: 2px;\n\tfont-size: 12px\n}\n\nbutton.btn:active {\n\ttop: 1px\n}\n\n.btn,.btn-default,.btn:focus,.btn-default:focus {\n\tbackground-color: #abbac3 !important;\n\tborder-color: #abbac3\n}\n.btn:hover,.btn-default:hover,.btn:active,.btn-default:active,.open .btn.dropdown-toggle,.open .btn-default.dropdown-toggle {\n\tbackground-color: #8b9aa3 !important;\n\tborder-color: #abbac3\n}\n\n.btn.no-border:hover,.btn-default.no-border:hover,.btn.no-border:active,.btn-default.no-border:active {\n\tborder-color: #8b9aa3\n}\n.btn.no-hover:hover,.btn-default.no-hover:hover,.btn.no-hover:active,.btn-default.no-hover:active {\n\tbackground-color: #abbac3 !important\n}\n\n.btn.active,.btn-default.active {\n\tbackground-color: #9baab3 !important;\n\tborder-color: #8799a4\n}\n\n.btn.no-border.active,.btn-default.no-border.active {\n\tbackground-color: #92a3ac !important;\n\tborder-color: #92a3ac\n}\n\n.btn.disabled,.btn-default.disabled,.btn[disabled],.btn-default[disabled],fieldset[disabled] .btn,fieldset[disabled] .btn-default,.btn.disabled:hover,.btn-default.disabled:hover,.btn[disabled]:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn:hover,fieldset[disabled] .btn-default:hover,.btn.disabled:focus,.btn-default.disabled:focus,.btn[disabled]:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn:focus,fieldset[disabled] .btn-default:focus,.btn.disabled:active,.btn-default.disabled:active,.btn[disabled]:active,.btn-default[disabled]:active,fieldset[disabled] .btn:active,fieldset[disabled] .btn-default:active,.btn.disabled.active,.btn-default.disabled.active,.btn[disabled].active,.btn-default[disabled].active,fieldset[disabled] .btn.active,fieldset[disabled] .btn-default.active {\n\tbackground-color: #abbac3 !important;\n\tborder-color: #abbac3\n}\n\n.btn-primary,.btn-primary:focus {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-primary:hover,.btn-primary:active,.open .btn-primary.dropdown-toggle {\n\tbackground-color: #1b6aaa !important;\n\tborder-color: #428bca\n}\n\n.btn-primary.no-border:hover,.btn-primary.no-border:active {\n\tborder-color: #1b6aaa\n}\n\n.btn-primary.no-hover:hover,.btn-primary.no-hover:active {\n\tbackground-color: #428bca !important\n}\n\n.btn-primary.active {\n\tbackground-color: #2f7bba !important;\n\tborder-color: #27689d\n}\n\n.btn-primary.no-border.active {\n\tbackground-color: #2b72ae !important;\n\tborder-color: #2b72ae\n}\n\n.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-info,.btn-info:focus {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info:hover,.btn-info:active,.open .btn-info.dropdown-toggle {\n\tbackground-color: #4f99c6 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info.no-border:hover,.btn-info.no-border:active {\n\tborder-color: #4f99c6\n}\n\n.btn-info.no-hover:hover,.btn-info.no-hover:active {\n\tbackground-color: #6fb3e0 !important\n}\n\n.btn-info.active {\n\tbackground-color: #5fa6d3 !important;\n\tborder-color: #4396cb\n}\n\n.btn-info.no-border.active {\n\tbackground-color: #539fd0 !important;\n\tborder-color: #539fd0\n}\n\n.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info2,.btn-info2:focus {\n\tbackground-color: #95c6e5 !important;\n\tborder-color: #95c6e5\n}\n\n.btn-info2:hover,.btn-info2:active,.open .btn-info2.dropdown-toggle {\n\tbackground-color: #67a6ce !important;\n\tborder-color: #95c6e5\n}\n\n.btn-info2.no-border:hover,.btn-info2.no-border:active {\n\tborder-color: #67a6ce\n}\n\n.btn-info2.no-hover:hover,.btn-info2.no-hover:active {\n\tbackground-color: #95c6e5 !important\n}\n\n.btn-info2.active {\n\tbackground-color: #7eb6da !important;\n\tborder-color: #62a6d1\n}\n\n.btn-info2.no-border.active {\n\tbackground-color: #72afd6 !important;\n\tborder-color: #72afd6\n}\n\n.btn-info2.disabled,.btn-info2[disabled],fieldset[disabled] .btn-info2,.btn-info2.disabled:hover,.btn-info2[disabled]:hover,fieldset[disabled] .btn-info2:hover,.btn-info2.disabled:focus,.btn-info2[disabled]:focus,fieldset[disabled] .btn-info2:focus,.btn-info2.disabled:active,.btn-info2[disabled]:active,fieldset[disabled] .btn-info2:active,.btn-info2.disabled.active,.btn-info2[disabled].active,fieldset[disabled] .btn-info2.active {\n\tbackground-color: #95c6e5 !important;\n\tborder-color: #95c6e5\n}\n\n.btn-success,.btn-success:focus {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-success:hover,.btn-success:active,.open .btn-success.dropdown-toggle {\n\tbackground-color: #629b58 !important;\n\tborder-color: #87b87f\n}\n\n.btn-success.no-border:hover,.btn-success.no-border:active {\n\tborder-color: #629b58\n}\n\n.btn-success.no-hover:hover,.btn-success.no-hover:active {\n\tbackground-color: #87b87f !important\n}\n\n.btn-success.active {\n\tbackground-color: #75aa6c !important;\n\tborder-color: #629959\n}\n\n.btn-success.no-border.active {\n\tbackground-color: #6ba462 !important;\n\tborder-color: #6ba462\n}\n\n.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-warning,.btn-warning:focus {\n\tbackground-color: #ffb752 !important;\n\tborder-color: #ffb752\n}\n\n.btn-warning:hover,.btn-warning:active,.open .btn-warning.dropdown-toggle {\n\tbackground-color: #e59729 !important;\n\tborder-color: #ffb752\n}\n\n.btn-warning.no-border:hover,.btn-warning.no-border:active {\n\tborder-color: #e59729\n}\n\n.btn-warning.no-hover:hover,.btn-warning.no-hover:active {\n\tbackground-color: #ffb752 !important\n}\n\n.btn-warning.active {\n\tbackground-color: #f2a73e !important;\n\tborder-color: #f0981c\n}\n\n.btn-warning.no-border.active {\n\tbackground-color: #f1a02f !important;\n\tborder-color: #f1a02f\n}\n\n.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active {\n\tbackground-color: #ffb752 !important;\n\tborder-color: #ffb752\n}\n\n.btn-danger,.btn-danger:focus {\n\tbackground-color: #d15b47 !important;\n\tborder-color: #d15b47\n}\n\n.btn-danger:hover,.btn-danger:active,.open .btn-danger.dropdown-toggle {\n\tbackground-color: #b74635 !important;\n\tborder-color: #d15b47\n}\n\n.btn-danger.no-border:hover,.btn-danger.no-border:active {\n\tborder-color: #b74635\n}\n\n.btn-danger.no-hover:hover,.btn-danger.no-hover:active {\n\tbackground-color: #d15b47 !important\n}\n\n.btn-danger.active {\n\tbackground-color: #c4513e !important;\n\tborder-color: #aa4434\n}\n\n.btn-danger.no-border.active {\n\tbackground-color: #ba4b39 !important;\n\tborder-color: #ba4b39\n}\n\n.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active {\n\tbackground-color: #d15b47 !important;\n\tborder-color: #d15b47\n}\n\n.btn-inverse,.btn-inverse:focus {\n\tbackground-color: #555 !important;\n\tborder-color: #555\n}\n\n.btn-inverse:hover,.btn-inverse:active,.open .btn-inverse.dropdown-toggle {\n\tbackground-color: #303030 !important;\n\tborder-color: #555\n}\n\n.btn-inverse.no-border:hover,.btn-inverse.no-border:active {\n\tborder-color: #303030\n}\n\n.btn-inverse.no-hover:hover,.btn-inverse.no-hover:active {\n\tbackground-color: #555 !important\n}\n\n.btn-inverse.active {\n\tbackground-color: #434343 !important;\n\tborder-color: #313131\n}\n\n.btn-inverse.no-border.active {\n\tbackground-color: #3b3b3b !important;\n\tborder-color: #3b3b3b\n}\n\n.btn-inverse.disabled,.btn-inverse[disabled],fieldset[disabled] .btn-inverse,.btn-inverse.disabled:hover,.btn-inverse[disabled]:hover,fieldset[disabled] .btn-inverse:hover,.btn-inverse.disabled:focus,.btn-inverse[disabled]:focus,fieldset[disabled] .btn-inverse:focus,.btn-inverse.disabled:active,.btn-inverse[disabled]:active,fieldset[disabled] .btn-inverse:active,.btn-inverse.disabled.active,.btn-inverse[disabled].active,fieldset[disabled] .btn-inverse.active {\n\tbackground-color: #555 !important;\n\tborder-color: #555\n}\n\n.btn-pink,.btn-pink:focus {\n\tbackground-color: #d6487e !important;\n\tborder-color: #d6487e\n}\n\n.btn-pink:hover,.btn-pink:active,.open .btn-pink.dropdown-toggle {\n\tbackground-color: #b73766 !important;\n\tborder-color: #d6487e\n}\n\n.btn-pink.no-border:hover,.btn-pink.no-border:active {\n\tborder-color: #b73766\n}\n\n.btn-pink.no-hover:hover,.btn-pink.no-hover:active {\n\tbackground-color: #d6487e !important\n}\n\n.btn-pink.active {\n\tbackground-color: #c74072 !important;\n\tborder-color: #af3462\n}\n\n.btn-pink.no-border.active {\n\tbackground-color: #be386a !important;\n\tborder-color: #be386a\n}\n\n.btn-pink.disabled,.btn-pink[disabled],fieldset[disabled] .btn-pink,.btn-pink.disabled:hover,.btn-pink[disabled]:hover,fieldset[disabled] .btn-pink:hover,.btn-pink.disabled:focus,.btn-pink[disabled]:focus,fieldset[disabled] .btn-pink:focus,.btn-pink.disabled:active,.btn-pink[disabled]:active,fieldset[disabled] .btn-pink:active,.btn-pink.disabled.active,.btn-pink[disabled].active,fieldset[disabled] .btn-pink.active {\n\tbackground-color: #d6487e !important;\n\tborder-color: #d6487e\n}\n\n.btn-purple,.btn-purple:focus {\n\tbackground-color: #9585bf !important;\n\tborder-color: #9585bf\n}\n\n.btn-purple:hover,.btn-purple:active,.open .btn-purple.dropdown-toggle {\n\tbackground-color: #7461aa !important;\n\tborder-color: #9585bf\n}\n\n.btn-purple.no-border:hover,.btn-purple.no-border:active {\n\tborder-color: #7461aa\n}\n\n.btn-purple.no-hover:hover,.btn-purple.no-hover:active {\n\tbackground-color: #9585bf !important\n}\n\n.btn-purple.active {\n\tbackground-color: #8573b5 !important;\n\tborder-color: #705ca8\n}\n\n.btn-purple.no-border.active {\n\tbackground-color: #7c69af !important;\n\tborder-color: #7c69af\n}\n\n.btn-purple.disabled,.btn-purple[disabled],fieldset[disabled] .btn-purple,.btn-purple.disabled:hover,.btn-purple[disabled]:hover,fieldset[disabled] .btn-purple:hover,.btn-purple.disabled:focus,.btn-purple[disabled]:focus,fieldset[disabled] .btn-purple:focus,.btn-purple.disabled:active,.btn-purple[disabled]:active,fieldset[disabled] .btn-purple:active,.btn-purple.disabled.active,.btn-purple[disabled].active,fieldset[disabled] .btn-purple.active {\n\tbackground-color: #9585bf !important;\n\tborder-color: #9585bf\n}\n\n.btn-grey,.btn-grey:focus {\n\tbackground-color: #a0a0a0 !important;\n\tborder-color: #a0a0a0\n}\n\n.btn-grey:hover,.btn-grey:active,.open .btn-grey.dropdown-toggle {\n\tbackground-color: #888 !important;\n\tborder-color: #a0a0a0\n}\n\n.btn-grey.no-border:hover,.btn-grey.no-border:active {\n\tborder-color: #888\n}\n\n.btn-grey.no-hover:hover,.btn-grey.no-hover:active {\n\tbackground-color: #a0a0a0 !important\n}\n\n.btn-grey.active {\n\tbackground-color: #949494 !important;\n\tborder-color: #828282\n}\n\n.btn-grey.no-border.active {\n\tbackground-color: #8c8c8c !important;\n\tborder-color: #8c8c8c\n}\n\n.btn-grey.disabled,.btn-grey[disabled],fieldset[disabled] .btn-grey,.btn-grey.disabled:hover,.btn-grey[disabled]:hover,fieldset[disabled] .btn-grey:hover,.btn-grey.disabled:focus,.btn-grey[disabled]:focus,fieldset[disabled] .btn-grey:focus,.btn-grey.disabled:active,.btn-grey[disabled]:active,fieldset[disabled] .btn-grey:active,.btn-grey.disabled.active,.btn-grey[disabled].active,fieldset[disabled] .btn-grey.active {\n\tbackground-color: #a0a0a0 !important;\n\tborder-color: #a0a0a0\n}\n\n.btn-yellow {\n\tcolor: #963 !important;\n\ttext-shadow: 0 -1px 0 rgba(255,255,255,0.4) !important\n}\n\n.btn-yellow,.btn-yellow:focus {\n\tbackground-color: #fee188 !important;\n\tborder-color: #fee188\n}\n\n.btn-yellow:hover,.btn-yellow:active,.open .btn-yellow.dropdown-toggle {\n\tbackground-color: #f7d05b !important;\n\tborder-color: #fee188\n}\n\n.btn-yellow.no-border:hover,.btn-yellow.no-border:active {\n\tborder-color: #f7d05b\n}\n\n.btn-yellow.no-hover:hover,.btn-yellow.no-hover:active {\n\tbackground-color: #fee188 !important\n}\n\n.btn-yellow.active {\n\tbackground-color: #fbd972 !important;\n\tborder-color: #f9cf4f\n}\n\n.btn-yellow.no-border.active {\n\tbackground-color: #fad463 !important;\n\tborder-color: #fad463\n}\n\n.btn-yellow.disabled,.btn-yellow[disabled],fieldset[disabled] .btn-yellow,.btn-yellow.disabled:hover,.btn-yellow[disabled]:hover,fieldset[disabled] .btn-yellow:hover,.btn-yellow.disabled:focus,.btn-yellow[disabled]:focus,fieldset[disabled] .btn-yellow:focus,.btn-yellow.disabled:active,.btn-yellow[disabled]:active,fieldset[disabled] .btn-yellow:active,.btn-yellow.disabled.active,.btn-yellow[disabled].active,fieldset[disabled] .btn-yellow.active {\n\tbackground-color: #fee188 !important;\n\tborder-color: #fee188\n}\n\n.btn-light {\n\tcolor: #888 !important;\n\ttext-shadow: 0 -1px 0 rgba(250,250,250,0.25) !important\n}\n\n.btn-light,.btn-light:focus {\n\tbackground-color: #e7e7e7 !important;\n\tborder-color: #e7e7e7\n}\n\n.btn-light:hover,.btn-light:active,.open .btn-light.dropdown-toggle {\n\tbackground-color: #d9d9d9 !important;\n\tborder-color: #e7e7e7\n}\n\n.btn-light.no-border:hover,.btn-light.no-border:active {\n\tborder-color: #d9d9d9\n}\n\n.btn-light.no-hover:hover,.btn-light.no-hover:active {\n\tbackground-color: #e7e7e7 !important\n}\n\n.btn-light.active {\n\tbackground-color: #e0e0e0 !important;\n\tborder-color: #cecece\n}\n\n.btn-light.no-border.active {\n\tbackground-color: #d8d8d8 !important;\n\tborder-color: #d8d8d8\n}\n\n.btn-light.disabled,.btn-light[disabled],fieldset[disabled] .btn-light,.btn-light.disabled:hover,.btn-light[disabled]:hover,fieldset[disabled] .btn-light:hover,.btn-light.disabled:focus,.btn-light[disabled]:focus,fieldset[disabled] .btn-light:focus,.btn-light.disabled:active,.btn-light[disabled]:active,fieldset[disabled] .btn-light:active,.btn-light.disabled.active,.btn-light[disabled].active,fieldset[disabled] .btn-light.active {\n\tbackground-color: #e7e7e7 !important;\n\tborder-color: #e7e7e7\n}\n.btn.btn-link {\n\tborder: none !important;\n\tbackground: transparent none !important;\n\tcolor: #08c !important;\n\ttext-shadow: none !important;\n\tpadding: 4px 12px !important;\n\tline-height: 20px !important\n}\n\n.btn.btn-link:hover {\n\tbackground: none !important;\n\ttext-shadow: none !important\n}\n\n.btn.btn-link.active {\n\tbackground: none !important;\n\ttext-decoration: underline;\n\tcolor: #009ceb !important\n}\n\n.btn.btn-link.active:after {\n\tdisplay: none\n}\n.btn-group>.btn,.btn-group+.btn {\n\tmargin: 0 1px 0 0;\n\tborder-width: 3px\n}\n.btn-group>.btn+.btn.dropdown-toggle {\n\tpadding-right: 3px;\n\tpadding-left: 3px\n}\n.btn.btn-white {\n\ttext-shadow: none !important;\n\tbackground-color: #FFF !important\n}\n.btn.btn-white.no-hover:hover,.btn.btn-white.no-hover:active {\n\tbackground-color: #FFF !important\n}\n\n.btn.btn-white:focus,.btn.btn-white.active {\n\tbox-shadow: inset 1px 1px 2px 0 rgba(0,0,0,0.1) !important\n}\n\n.btn.btn-white:focus.btn-bold,.btn.btn-white.active.btn-bold {\n\tbox-shadow: inset 1px 1px 3px 0 rgba(0,0,0,0.15) !important\n}\n\n.btn.btn-white.active:after {\n\tdisplay: none\n}\n\n.btn.btn-white {\n\tborder-color: #ccc;\n\tcolor: #444 !important\n}\n\n.btn.btn-white:hover,.btn.btn-white:focus,.btn.btn-white.active,.btn.btn-white:active,.open .btn.btn-white.dropdown-toggle {\n\tbackground-color: #ebebeb !important;\n\tborder-color: #ccc\n}\n\n.btn.btn-white:hover {\n\tcolor: #3a3434 !important\n}\n\n.btn.btn-white.no-border:hover,.btn.btn-white.no-border:active {\n\tborder-color: #ccc\n}\n\n.btn.btn-white.disabled,.btn.btn-white[disabled],fieldset[disabled] .btn.btn-white,.btn.btn-white.disabled:hover,.btn.btn-white[disabled]:hover,fieldset[disabled] .btn.btn-white:hover,.btn.btn-white.disabled:focus,.btn.btn-white[disabled]:focus,fieldset[disabled] .btn.btn-white:focus,.btn.btn-white.disabled:active,.btn.btn-white[disabled]:active,fieldset[disabled] .btn.btn-white:active,.btn.btn-white.disabled.active,.btn.btn-white[disabled].active,fieldset[disabled] .btn.btn-white.active {\n\tborder-color: #ccc\n}\n\n.btn-white.btn-default {\n\tborder-color: #abbac3;\n\tcolor: #80909a !important\n}\n\n.btn-white.btn-default:hover,.btn-white.btn-default:focus,.btn-white.btn-default.active,.btn-white.btn-default:active,.open .btn-white.btn-default.dropdown-toggle {\n\tbackground-color: #eff2f4 !important;\n\tborder-color: #abbac3\n}\n\n.btn-white.btn-default:hover {\n\tcolor: #6b8595 !important\n}\n\n.btn-white.btn-default.no-border:hover,.btn-white.btn-default.no-border:active {\n\tborder-color: #abbac3\n}\n\n.btn-white.btn-default.disabled,.btn-white.btn-default[disabled],fieldset[disabled] .btn-white.btn-default,.btn-white.btn-default.disabled:hover,.btn-white.btn-default[disabled]:hover,fieldset[disabled] .btn-white.btn-default:hover,.btn-white.btn-default.disabled:focus,.btn-white.btn-default[disabled]:focus,fieldset[disabled] .btn-white.btn-default:focus,.btn-white.btn-default.disabled:active,.btn-white.btn-default[disabled]:active,fieldset[disabled] .btn-white.btn-default:active,.btn-white.btn-default.disabled.active,.btn-white.btn-default[disabled].active,fieldset[disabled] .btn-white.btn-default.active {\n\tborder-color: #abbac3\n}\n\n.btn-white.btn-primary {\n\tborder-color: #8aafce;\n\tcolor: #6688a6 !important\n}\n\n.btn-white.btn-primary:hover,.btn-white.btn-primary:focus,.btn-white.btn-primary.active,.btn-white.btn-primary:active,.open .btn-white.btn-primary.dropdown-toggle {\n\tbackground-color: #eaf2f8 !important;\n\tborder-color: #8aafce\n}\n\n.btn-white.btn-primary:hover {\n\tcolor: #537c9f !important\n}\n\n.btn-white.btn-primary.no-border:hover,.btn-white.btn-primary.no-border:active {\n\tborder-color: #8aafce\n}\n\n.btn-white.btn-primary.disabled,.btn-white.btn-primary[disabled],fieldset[disabled] .btn-white.btn-primary,.btn-white.btn-primary.disabled:hover,.btn-white.btn-primary[disabled]:hover,fieldset[disabled] .btn-white.btn-primary:hover,.btn-white.btn-primary.disabled:focus,.btn-white.btn-primary[disabled]:focus,fieldset[disabled] .btn-white.btn-primary:focus,.btn-white.btn-primary.disabled:active,.btn-white.btn-primary[disabled]:active,fieldset[disabled] .btn-white.btn-primary:active,.btn-white.btn-primary.disabled.active,.btn-white.btn-primary[disabled].active,fieldset[disabled] .btn-white.btn-primary.active {\n\tborder-color: #8aafce\n}\n\n.btn-white.btn-success {\n\tborder-color: #a7c9a1;\n\tcolor: #81a87b !important\n}\n\n.btn-white.btn-success:hover,.btn-white.btn-success:focus,.btn-white.btn-success.active,.btn-white.btn-success:active,.open .btn-white.btn-success.dropdown-toggle {\n\tbackground-color: #edf4eb !important;\n\tborder-color: #a7c9a1\n}\n\n.btn-white.btn-success:hover {\n\tcolor: #6ea465 !important\n}\n\n.btn-white.btn-success.no-border:hover,.btn-white.btn-success.no-border:active {\n\tborder-color: #a7c9a1\n}\n\n.btn-white.btn-success.disabled,.btn-white.btn-success[disabled],fieldset[disabled] .btn-white.btn-success,.btn-white.btn-success.disabled:hover,.btn-white.btn-success[disabled]:hover,fieldset[disabled] .btn-white.btn-success:hover,.btn-white.btn-success.disabled:focus,.btn-white.btn-success[disabled]:focus,fieldset[disabled] .btn-white.btn-success:focus,.btn-white.btn-success.disabled:active,.btn-white.btn-success[disabled]:active,fieldset[disabled] .btn-white.btn-success:active,.btn-white.btn-success.disabled.active,.btn-white.btn-success[disabled].active,fieldset[disabled] .btn-white.btn-success.active {\n\tborder-color: #a7c9a1\n}\n\n.btn-white.btn-danger {\n\tborder-color: #d7a59d;\n\tcolor: #b7837a !important\n}\n\n.btn-white.btn-danger:hover,.btn-white.btn-danger:focus,.btn-white.btn-danger.active,.btn-white.btn-danger:active,.open .btn-white.btn-danger.dropdown-toggle {\n\tbackground-color: #fbf4f3 !important;\n\tborder-color: #d7a59d\n}\n\n.btn-white.btn-danger:hover {\n\tcolor: #b46f64 !important\n}\n\n.btn-white.btn-danger.no-border:hover,.btn-white.btn-danger.no-border:active {\n\tborder-color: #d7a59d\n}\n\n.btn-white.btn-danger.disabled,.btn-white.btn-danger[disabled],fieldset[disabled] .btn-white.btn-danger,.btn-white.btn-danger.disabled:hover,.btn-white.btn-danger[disabled]:hover,fieldset[disabled] .btn-white.btn-danger:hover,.btn-white.btn-danger.disabled:focus,.btn-white.btn-danger[disabled]:focus,fieldset[disabled] .btn-white.btn-danger:focus,.btn-white.btn-danger.disabled:active,.btn-white.btn-danger[disabled]:active,fieldset[disabled] .btn-white.btn-danger:active,.btn-white.btn-danger.disabled.active,.btn-white.btn-danger[disabled].active,fieldset[disabled] .btn-white.btn-danger.active {\n\tborder-color: #d7a59d\n}\n\n.btn-white.btn-warning {\n\tborder-color: #e7b979;\n\tcolor: #daa458 !important\n}\n\n.btn-white.btn-warning:hover,.btn-white.btn-warning:focus,.btn-white.btn-warning.active,.btn-white.btn-warning:active,.open .btn-white.btn-warning.dropdown-toggle {\n\tbackground-color: #fef7ec !important;\n\tborder-color: #e7b979\n}\n\n.btn-white.btn-warning:hover {\n\tcolor: #db9a3d !important\n}\n\n.btn-white.btn-warning.no-border:hover,.btn-white.btn-warning.no-border:active {\n\tborder-color: #e7b979\n}\n\n.btn-white.btn-warning.disabled,.btn-white.btn-warning[disabled],fieldset[disabled] .btn-white.btn-warning,.btn-white.btn-warning.disabled:hover,.btn-white.btn-warning[disabled]:hover,fieldset[disabled] .btn-white.btn-warning:hover,.btn-white.btn-warning.disabled:focus,.btn-white.btn-warning[disabled]:focus,fieldset[disabled] .btn-white.btn-warning:focus,.btn-white.btn-warning.disabled:active,.btn-white.btn-warning[disabled]:active,fieldset[disabled] .btn-white.btn-warning:active,.btn-white.btn-warning.disabled.active,.btn-white.btn-warning[disabled].active,fieldset[disabled] .btn-white.btn-warning.active {\n\tborder-color: #e7b979\n}\n\n.btn-white.btn-info {\n\tborder-color: #8fbcd9;\n\tcolor: #70a0c1 !important\n}\n\n.btn-white.btn-info:hover,.btn-white.btn-info:focus,.btn-white.btn-info.active,.btn-white.btn-info:active,.open .btn-white.btn-info.dropdown-toggle {\n\tbackground-color: #eef5fa !important;\n\tborder-color: #8fbcd9\n}\n\n.btn-white.btn-info:hover {\n\tcolor: #5896bf !important\n}\n\n.btn-white.btn-info.no-border:hover,.btn-white.btn-info.no-border:active {\n\tborder-color: #8fbcd9\n}\n\n.btn-white.btn-info.disabled,.btn-white.btn-info[disabled],fieldset[disabled] .btn-white.btn-info,.btn-white.btn-info.disabled:hover,.btn-white.btn-info[disabled]:hover,fieldset[disabled] .btn-white.btn-info:hover,.btn-white.btn-info.disabled:focus,.btn-white.btn-info[disabled]:focus,fieldset[disabled] .btn-white.btn-info:focus,.btn-white.btn-info.disabled:active,.btn-white.btn-info[disabled]:active,fieldset[disabled] .btn-white.btn-info:active,.btn-white.btn-info.disabled.active,.btn-white.btn-info[disabled].active,fieldset[disabled] .btn-white.btn-info.active {\n\tborder-color: #8fbcd9\n}\n\n.btn-white.btn-inverse {\n\tborder-color: #959595;\n\tcolor: #555 !important\n}\n\n.btn-white.btn-inverse:hover,.btn-white.btn-inverse:focus,.btn-white.btn-inverse.active,.btn-white.btn-inverse:active,.open .btn-white.btn-inverse.dropdown-toggle {\n\tbackground-color: #e4e4e4 !important;\n\tborder-color: #959595\n}\n\n.btn-white.btn-inverse:hover {\n\tcolor: #4c4545 !important\n}\n\n.btn-white.btn-inverse.no-border:hover,.btn-white.btn-inverse.no-border:active {\n\tborder-color: #959595\n}\n\n.btn-white.btn-inverse.disabled,.btn-white.btn-inverse[disabled],fieldset[disabled] .btn-white.btn-inverse,.btn-white.btn-inverse.disabled:hover,.btn-white.btn-inverse[disabled]:hover,fieldset[disabled] .btn-white.btn-inverse:hover,.btn-white.btn-inverse.disabled:focus,.btn-white.btn-inverse[disabled]:focus,fieldset[disabled] .btn-white.btn-inverse:focus,.btn-white.btn-inverse.disabled:active,.btn-white.btn-inverse[disabled]:active,fieldset[disabled] .btn-white.btn-inverse:active,.btn-white.btn-inverse.disabled.active,.btn-white.btn-inverse[disabled].active,fieldset[disabled] .btn-white.btn-inverse.active {\n\tborder-color: #959595\n}\n\n.btn-white.btn-pink {\n\tborder-color: #d299ae;\n\tcolor: #af6f87 !important\n}\n\n.btn-white.btn-pink:hover,.btn-white.btn-pink:focus,.btn-white.btn-pink.active,.btn-white.btn-pink:active,.open .btn-white.btn-pink.dropdown-toggle {\n\tbackground-color: #fbeff4 !important;\n\tborder-color: #d299ae\n}\n\n.btn-white.btn-pink:hover {\n\tcolor: #ac5978 !important\n}\n\n.btn-white.btn-pink.no-border:hover,.btn-white.btn-pink.no-border:active {\n\tborder-color: #d299ae\n}\n\n.btn-white.btn-pink.disabled,.btn-white.btn-pink[disabled],fieldset[disabled] .btn-white.btn-pink,.btn-white.btn-pink.disabled:hover,.btn-white.btn-pink[disabled]:hover,fieldset[disabled] .btn-white.btn-pink:hover,.btn-white.btn-pink.disabled:focus,.btn-white.btn-pink[disabled]:focus,fieldset[disabled] .btn-white.btn-pink:focus,.btn-white.btn-pink.disabled:active,.btn-white.btn-pink[disabled]:active,fieldset[disabled] .btn-white.btn-pink:active,.btn-white.btn-pink.disabled.active,.btn-white.btn-pink[disabled].active,fieldset[disabled] .btn-white.btn-pink.active {\n\tborder-color: #d299ae\n}\n\n.btn-white.btn-purple {\n\tborder-color: #b7b1c6;\n\tcolor: #7d6fa2 !important\n}\n\n.btn-white.btn-purple:hover,.btn-white.btn-purple:focus,.btn-white.btn-purple.active,.btn-white.btn-purple:active,.open .btn-white.btn-purple.dropdown-toggle {\n\tbackground-color: #efedf5 !important;\n\tborder-color: #b7b1c6\n}\n\n.btn-white.btn-purple:hover {\n\tcolor: #6d5b9c !important\n}\n\n.btn-white.btn-purple.no-border:hover,.btn-white.btn-purple.no-border:active {\n\tborder-color: #b7b1c6\n}\n\n.btn-white.btn-purple.disabled,.btn-white.btn-purple[disabled],fieldset[disabled] .btn-white.btn-purple,.btn-white.btn-purple.disabled:hover,.btn-white.btn-purple[disabled]:hover,fieldset[disabled] .btn-white.btn-purple:hover,.btn-white.btn-purple.disabled:focus,.btn-white.btn-purple[disabled]:focus,fieldset[disabled] .btn-white.btn-purple:focus,.btn-white.btn-purple.disabled:active,.btn-white.btn-purple[disabled]:active,fieldset[disabled] .btn-white.btn-purple:active,.btn-white.btn-purple.disabled.active,.btn-white.btn-purple[disabled].active,fieldset[disabled] .btn-white.btn-purple.active {\n\tborder-color: #b7b1c6\n}\n\n.btn-white.btn-yellow {\n\tborder-color: #ecd181;\n\tcolor: #d3a61a !important\n}\n\n.btn-white.btn-yellow:hover,.btn-white.btn-yellow:focus,.btn-white.btn-yellow.active,.btn-white.btn-yellow:active,.open .btn-white.btn-yellow.dropdown-toggle {\n\tbackground-color: #fdf7e4 !important;\n\tborder-color: #ecd181\n}\n\n.btn-white.btn-yellow:hover {\n\tcolor: #c29712 !important\n}\n\n.btn-white.btn-yellow.no-border:hover,.btn-white.btn-yellow.no-border:active {\n\tborder-color: #ecd181\n}\n\n.btn-white.btn-yellow.disabled,.btn-white.btn-yellow[disabled],fieldset[disabled] .btn-white.btn-yellow,.btn-white.btn-yellow.disabled:hover,.btn-white.btn-yellow[disabled]:hover,fieldset[disabled] .btn-white.btn-yellow:hover,.btn-white.btn-yellow.disabled:focus,.btn-white.btn-yellow[disabled]:focus,fieldset[disabled] .btn-white.btn-yellow:focus,.btn-white.btn-yellow.disabled:active,.btn-white.btn-yellow[disabled]:active,fieldset[disabled] .btn-white.btn-yellow:active,.btn-white.btn-yellow.disabled.active,.btn-white.btn-yellow[disabled].active,fieldset[disabled] .btn-white.btn-yellow.active {\n\tborder-color: #ecd181\n}\n\n.btn-white.btn-grey {\n\tborder-color: #c6c6c6;\n\tcolor: #8c8c8c !important\n}\n\n.btn-white.btn-grey:hover,.btn-white.btn-grey:focus,.btn-white.btn-grey.active,.btn-white.btn-grey:active,.open .btn-white.btn-grey.dropdown-toggle {\n\tbackground-color: #ededed !important;\n\tborder-color: #c6c6c6\n}\n\n.btn-white.btn-grey:hover {\n\tcolor: #857979 !important\n}\n\n.btn-white.btn-grey.no-border:hover,.btn-white.btn-grey.no-border:active {\n\tborder-color: #c6c6c6\n}\n\n.btn-white.btn-grey.disabled,.btn-white.btn-grey[disabled],fieldset[disabled] .btn-white.btn-grey,.btn-white.btn-grey.disabled:hover,.btn-white.btn-grey[disabled]:hover,fieldset[disabled] .btn-white.btn-grey:hover,.btn-white.btn-grey.disabled:focus,.btn-white.btn-grey[disabled]:focus,fieldset[disabled] .btn-white.btn-grey:focus,.btn-white.btn-grey.disabled:active,.btn-white.btn-grey[disabled]:active,fieldset[disabled] .btn-white.btn-grey:active,.btn-white.btn-grey.disabled.active,.btn-white.btn-grey[disabled].active,fieldset[disabled] .btn-white.btn-grey.active {\n\tborder-color: #c6c6c6\n}\n\n.btn.btn-white {\n\tborder-width: 1px\n}\n.btn.btn-bold {\n\tborder-bottom-width: 2px\n}\n.btn.btn-round {\n\tborder-bottom-width: 2px;\n\tborder-radius: 4px !important\n}\n\n.btn-primary,.btn-primary:focus {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-primary:hover,.btn-primary:active,.open .btn-primary.dropdown-toggle {\n\tbackground-color: #1b6aaa !important;\n\tborder-color: #428bca\n}\n\n.btn-primary.no-border:hover,.btn-primary.no-border:active {\n\tborder-color: #1b6aaa\n}\n\n.btn-primary.no-hover:hover,.btn-primary.no-hover:active {\n\tbackground-color: #428bca !important\n}\n\n.btn-primary.active {\n\tbackground-color: #2f7bba !important;\n\tborder-color: #27689d\n}\n\n.btn-primary.no-border.active {\n\tbackground-color: #2b72ae !important;\n\tborder-color: #2b72ae\n}\n\n.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active {\n\tbackground-color: #428bca !important;\n\tborder-color: #428bca\n}\n\n.btn-info,.btn-info:focus {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info:hover,.btn-info:active,.open .btn-info.dropdown-toggle {\n\tbackground-color: #4f99c6 !important;\n\tborder-color: #6fb3e0\n}\n\n.btn-info.no-border:hover,.btn-info.no-border:active {\n\tborder-color: #4f99c6\n}\n\n.btn-info.no-hover:hover,.btn-info.no-hover:active {\n\tbackground-color: #6fb3e0 !important\n}\n\n.btn-info.active {\n\tbackground-color: #5fa6d3 !important;\n\tborder-color: #4396cb\n}\n\n.btn-info.no-border.active {\n\tbackground-color: #539fd0 !important;\n\tborder-color: #539fd0\n}\n\n.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active {\n\tbackground-color: #6fb3e0 !important;\n\tborder-color: #6fb3e0\n}\n.btn-success,.btn-success:focus {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-success:hover,.btn-success:active,.open .btn-success.dropdown-toggle {\n\tbackground-color: #629b58 !important;\n\tborder-color: #87b87f\n}\n\n.btn-success.no-border:hover,.btn-success.no-border:active {\n\tborder-color: #629b58\n}\n\n.btn-success.no-hover:hover,.btn-success.no-hover:active {\n\tbackground-color: #87b87f !important\n}\n\n.btn-success.active {\n\tbackground-color: #75aa6c !important;\n\tborder-color: #629959\n}\n\n.btn-success.no-border.active {\n\tbackground-color: #6ba462 !important;\n\tborder-color: #6ba462\n}\n\n.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active {\n\tbackground-color: #87b87f !important;\n\tborder-color: #87b87f\n}\n\n.btn-group>.btn,.btn-group>.btn+.btn {\n\tmargin: 0 1px 0 0\n}\n.btn-group>.btn-sm,.btn-group+.btn-sm {\n\tborder-width: 2px\n}\n.btn-group>.btn-xs,.btn-group+.btn-xs {\n\tborder-width: 1px\n}\n.btn-group>.btn:first-child {\n\tmargin: 0 1px 0 0\n}\n.btn-group>.btn:first-child,.btn-group>.btn:last-child {\n\tborder-radius: 0\n}\n.btn-group.btn-corner>.btn:first-child {\n\tborder-bottom-left-radius: 8px !important;\n\tborder-top-left-radius: 8px !important\n}\n\n.btn-group.btn-corner>.btn:last-child {\n\tborder-bottom-right-radius: 8px !important;\n\tborder-top-right-radius: 8px !important\n}\n\n.btn-group.btn-corner>.btn.btn-sm:first-child {\n\tborder-bottom-left-radius: 6px !important;\n\tborder-top-left-radius: 6px !important\n}\n\n.btn-group.btn-corner>.btn.btn-sm:last-child {\n\tborder-bottom-right-radius: 6px !important;\n\tborder-top-right-radius: 6px !important\n}\n\n.btn-group.btn-corner>.btn.btn-xs:first-child {\n\tborder-bottom-left-radius: 4px !important;\n\tborder-top-left-radius: 4px !important\n}\n\n.btn-group.btn-corner>.btn.btn-xs:last-child {\n\tborder-bottom-right-radius: 4px !important;\n\tborder-top-right-radius: 4px !important\n}\n.btn-group-vertical>.btn,.btn-group-vertical>.btn+.btn {\n\tmargin: 1px 0 0 !important\n}\n\n.btn-group-vertical>.btn:first-child {\n\tmargin-top: 0 !important\n}\n.btn>.icon-only.ace-icon {\n\tmargin: 0 !important;\n\ttext-align: center;\n\tpadding: 0\n}\n\n.dropdown-menu {\n\tborder-radius: 0 !important;\n\t-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)\n}\n\n.dropdown-menu>li>a {\n\tfont-size: 13px;\n\tpadding-left: 11px;\n\tpadding-right: 11px;\n\tmargin-bottom: 1px;\n\tmargin-top: 1px\n}\n\n.dropdown-menu.dropdown-only-icon {\n\tmin-width: 50px\n}\n\n.dropdown-menu.dropdown-only-icon>li {\n\tmargin: 0 4px\n}\n\n.dropdown-menu.dropdown-only-icon>li>a .ace-icon {\n\twidth: 18px;\n\tdisplay: inline-block;\n\ttext-align: center\n}\n\n.dropdown-menu.dropdown-only-icon>li>a .icon-2x {\n\twidth: 36px\n}\n\n.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:active,.dropdown-menu>li.active>a,.dropdown-menu>li.active>a:hover,.dropdown-menu .dropdown-submenu:hover>a {\n\tbackground: #4f99c6;\n\tcolor: #fff\n}\n\n.dropdown-default>li>a:hover,.dropdown-default>li>a:focus,.dropdown-default>li>a:active,.dropdown-default>li.active>a,.dropdown-default>li.active>a:hover,.dropdown-default .dropdown-submenu:hover>a {\n\tbackground: #abbac3;\n\tcolor: #fff\n}\n\n.dropdown-info>li>a:hover,.dropdown-info>li>a:focus,.dropdown-info>li>a:active,.dropdown-info>li.active>a,.dropdown-info>li.active>a:hover,.dropdown-info .dropdown-submenu:hover>a {\n\tbackground: #6fb3e0;\n\tcolor: #fff\n}\n\n.dropdown-primary>li>a:hover,.dropdown-primary>li>a:focus,.dropdown-primary>li>a:active,.dropdown-primary>li.active>a,.dropdown-primary>li.active>a:hover,.dropdown-primary .dropdown-submenu:hover>a {\n\tbackground: #428bca;\n\tcolor: #fff\n}\n\n.dropdown-success>li>a:hover,.dropdown-success>li>a:focus,.dropdown-success>li>a:active,.dropdown-success>li.active>a,.dropdown-success>li.active>a:hover,.dropdown-success .dropdown-submenu:hover>a {\n\tbackground: #87b87f;\n\tcolor: #fff\n}\n\n.dropdown-warning>li>a:hover,.dropdown-warning>li>a:focus,.dropdown-warning>li>a:active,.dropdown-warning>li.active>a,.dropdown-warning>li.active>a:hover,.dropdown-warning .dropdown-submenu:hover>a {\n\tbackground: #ffa24d;\n\tcolor: #fff\n}\n\n.dropdown-danger>li>a:hover,.dropdown-danger>li>a:focus,.dropdown-danger>li>a:active,.dropdown-danger>li.active>a,.dropdown-danger>li.active>a:hover,.dropdown-danger .dropdown-submenu:hover>a {\n\tbackground: #d15b47;\n\tcolor: #fff\n}\n\n.dropdown-inverse>li>a:hover,.dropdown-inverse>li>a:focus,.dropdown-inverse>li>a:active,.dropdown-inverse>li.active>a,.dropdown-inverse>li.active>a:hover,.dropdown-inverse .dropdown-submenu:hover>a {\n\tbackground: #555;\n\tcolor: #fff\n}\n\n.dropdown-purple>li>a:hover,.dropdown-purple>li>a:focus,.dropdown-purple>li>a:active,.dropdown-purple>li.active>a,.dropdown-purple>li.active>a:hover,.dropdown-purple .dropdown-submenu:hover>a {\n\tbackground: #9585bf;\n\tcolor: #fff\n}\n\n.dropdown-pink>li>a:hover,.dropdown-pink>li>a:focus,.dropdown-pink>li>a:active,.dropdown-pink>li.active>a,.dropdown-pink>li.active>a:hover,.dropdown-pink .dropdown-submenu:hover>a {\n\tbackground: #d6487e;\n\tcolor: #fff\n}\n\n.dropdown-grey>li>a:hover,.dropdown-grey>li>a:focus,.dropdown-grey>li>a:active,.dropdown-grey>li.active>a,.dropdown-grey>li.active>a:hover,.dropdown-grey .dropdown-submenu:hover>a {\n\tbackground: #a0a0a0;\n\tcolor: #fff\n}\n\n.dropdown-light>li>a:hover,.dropdown-light>li>a:focus,.dropdown-light>li>a:active,.dropdown-light>li.active>a,.dropdown-light>li.active>a:hover,.dropdown-light .dropdown-submenu:hover>a {\n\tbackground: #e7e7e7;\n\tcolor: #333\n}\n\n.dropdown-lighter>li>a:hover,.dropdown-lighter>li>a:focus,.dropdown-lighter>li>a:active,.dropdown-lighter>li.active>a,.dropdown-lighter>li.active>a:hover,.dropdown-lighter .dropdown-submenu:hover>a {\n\tbackground: #efefef;\n\tcolor: #444\n}\n\n.dropdown-lightest>li>a:hover,.dropdown-lightest>li>a:focus,.dropdown-lightest>li>a:active,.dropdown-lightest>li.active>a,.dropdown-lightest>li.active>a:hover,.dropdown-lightest .dropdown-submenu:hover>a {\n\tbackground: #f3f3f3;\n\tcolor: #444\n}\n\n.dropdown-yellow>li>a:hover,.dropdown-yellow>li>a:focus,.dropdown-yellow>li>a:active,.dropdown-yellow>li.active>a,.dropdown-yellow>li.active>a:hover,.dropdown-yellow .dropdown-submenu:hover>a {\n\tbackground: #fee188;\n\tcolor: #444\n}\n\n.dropdown-yellow2>li>a:hover,.dropdown-yellow2>li>a:focus,.dropdown-yellow2>li>a:active,.dropdown-yellow2>li.active>a,.dropdown-yellow2>li.active>a:hover,.dropdown-yellow2 .dropdown-submenu:hover>a {\n\tbackground: #f9e8b3;\n\tcolor: #444\n}\n\n.dropdown-light-blue>li>a:hover,.dropdown-light-blue>li>a:focus,.dropdown-light-blue>li>a:active,.dropdown-light-blue>li.active>a,.dropdown-light-blue>li.active>a:hover,.dropdown-light-blue .dropdown-submenu:hover>a {\n\tbackground: #ecf3f9;\n\tcolor: #456\n}\n\n.dropdown-light .dropdown-submenu:hover>a:after,.dropdown-lighter .dropdown-submenu:hover>a:after,.dropdown-lightest .dropdown-submenu:hover>a:after {\n\tborder-left-color: #444\n}\n\n.label {\n\tborder-radius: 0;\n\ttext-shadow: none;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tbackground-color: #abbac3 !important\n}\n.label-grey,.badge-grey {\n\tbackground-color: #a0a0a0 !important\n}\n\n.label-info,.badge-info {\n\tbackground-color: #3a87ad !important\n}\n\n.label-primary,.badge-primary {\n\tbackground-color: #428bca !important\n}\n\n.label-success,.badge-success {\n\tbackground-color: #82af6f !important\n}\n\n.label-danger,.badge-danger {\n\tbackground-color: #d15b47 !important\n}\n\n.label-important,.badge-important {\n\tbackground-color: #d15b47 !important\n}\n\n.label-inverse,.badge-inverse {\n\tbackground-color: #333 !important\n}\n\n.label-warning,.badge-warning {\n\tbackground-color: #f89406 !important\n}\n\n.label-pink,.badge-pink {\n\tbackground-color: #d6487e !important\n}\n\n.label-purple,.badge-purple {\n\tbackground-color: #9585bf !important\n}\n\n.label-yellow,.badge-yellow {\n\tbackground-color: #fee188 !important\n}\n\n.label-light,.badge-light {\n\tbackground-color: #e7e7e7 !important\n}\n\n.badge-yellow,.label-yellow {\n\tcolor: #996633 !important;\n\tborder-color: #fee188\n}\n\n.badge-light,.label-light {\n\tcolor: #888 !important\n}\n\n.label.arrowed,.label.arrowed-in {\n\tposition: relative;\n\tz-index: 1\n}\n\n.label.arrowed:before,.label.arrowed-in:before {\n\tdisplay: inline-block;\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tz-index: -1;\n\tborder: 1px solid transparent;\n\tborder-right-color: #abbac3;\n\t-moz-border-right-colors: #abbac3\n}\n\n.label.arrowed-in:before {\n\tborder-color: #abbac3;\n\tborder-left-color: transparent !important;\n\t-moz-border-left-colors: none !important\n}\n\n.label.arrowed-right,.label.arrowed-in-right {\n\tposition: relative;\n\tz-index: 1\n}\n\n.label.arrowed-right:after,.label.arrowed-in-right:after {\n\tdisplay: inline-block;\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tz-index: -1;\n\tborder: 1px solid transparent;\n\tborder-left-color: #abbac3;\n\t-moz-border-left-colors: #abbac3\n}\n\n.label.arrowed-in-right:after {\n\tborder-color: #abbac3;\n\tborder-right-color: transparent !important;\n\t-moz-border-right-colors: none !important\n}\n\n.label-info.arrowed:before {\n\tborder-right-color: #3a87ad;\n\t-moz-border-right-colors: #3a87ad\n}\n\n.label-info.arrowed-in:before {\n\tborder-color: #3a87ad;\n\t-moz-border-right-colors: #3a87ad\n}\n\n.label-info.arrowed-right:after {\n\tborder-left-color: #3a87ad;\n\t-moz-border-left-colors: #3a87ad\n}\n\n.label-info.arrowed-in-right:after {\n\tborder-color: #3a87ad;\n\t-moz-border-left-colors: #3a87ad\n}\n\n.label-primary.arrowed:before {\n\tborder-right-color: #428bca;\n\t-moz-border-right-colors: #428bca\n}\n\n.label-primary.arrowed-in:before {\n\tborder-color: #428bca;\n\t-moz-border-right-colors: #428bca\n}\n\n.label-primary.arrowed-right:after {\n\tborder-left-color: #428bca;\n\t-moz-border-left-colors: #428bca\n}\n\n.label-primary.arrowed-in-right:after {\n\tborder-color: #428bca;\n\t-moz-border-left-colors: #428bca\n}\n\n.label-success.arrowed:before {\n\tborder-right-color: #82af6f;\n\t-moz-border-right-colors: #82af6f\n}\n\n.label-success.arrowed-in:before {\n\tborder-color: #82af6f;\n\t-moz-border-right-colors: #82af6f\n}\n\n.label-success.arrowed-right:after {\n\tborder-left-color: #82af6f;\n\t-moz-border-left-colors: #82af6f\n}\n\n.label-success.arrowed-in-right:after {\n\tborder-color: #82af6f;\n\t-moz-border-left-colors: #82af6f\n}\n\n.label-warning.arrowed:before {\n\tborder-right-color: #f89406;\n\t-moz-border-right-colors: #f89406\n}\n\n.label-warning.arrowed-in:before {\n\tborder-color: #f89406;\n\t-moz-border-right-colors: #f89406\n}\n\n.label-warning.arrowed-right:after {\n\tborder-left-color: #f89406;\n\t-moz-border-left-colors: #f89406\n}\n\n.label-warning.arrowed-in-right:after {\n\tborder-color: #f89406;\n\t-moz-border-left-colors: #f89406\n}\n\n.label-important.arrowed:before {\n\tborder-right-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-important.arrowed-in:before {\n\tborder-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-important.arrowed-right:after {\n\tborder-left-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-important.arrowed-in-right:after {\n\tborder-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-danger.arrowed:before {\n\tborder-right-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-danger.arrowed-in:before {\n\tborder-color: #d15b47;\n\t-moz-border-right-colors: #d15b47\n}\n\n.label-danger.arrowed-right:after {\n\tborder-left-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-danger.arrowed-in-right:after {\n\tborder-color: #d15b47;\n\t-moz-border-left-colors: #d15b47\n}\n\n.label-inverse.arrowed:before {\n\tborder-right-color: #333;\n\t-moz-border-right-colors: #333\n}\n\n.label-inverse.arrowed-in:before {\n\tborder-color: #333;\n\t-moz-border-right-colors: #333\n}\n\n.label-inverse.arrowed-right:after {\n\tborder-left-color: #333;\n\t-moz-border-left-colors: #333\n}\n\n.label-inverse.arrowed-in-right:after {\n\tborder-color: #333;\n\t-moz-border-left-colors: #333\n}\n\n.label-pink.arrowed:before {\n\tborder-right-color: #d6487e;\n\t-moz-border-right-colors: #d6487e\n}\n\n.label-pink.arrowed-in:before {\n\tborder-color: #d6487e;\n\t-moz-border-right-colors: #d6487e\n}\n\n.label-pink.arrowed-right:after {\n\tborder-left-color: #d6487e;\n\t-moz-border-left-colors: #d6487e\n}\n\n.label-pink.arrowed-in-right:after {\n\tborder-color: #d6487e;\n\t-moz-border-left-colors: #d6487e\n}\n\n.label-purple.arrowed:before {\n\tborder-right-color: #9585bf;\n\t-moz-border-right-colors: #9585bf\n}\n\n.label-purple.arrowed-in:before {\n\tborder-color: #9585bf;\n\t-moz-border-right-colors: #9585bf\n}\n\n.label-purple.arrowed-right:after {\n\tborder-left-color: #9585bf;\n\t-moz-border-left-colors: #9585bf\n}\n\n.label-purple.arrowed-in-right:after {\n\tborder-color: #9585bf;\n\t-moz-border-left-colors: #9585bf\n}\n\n.label-yellow.arrowed:before {\n\tborder-right-color: #fee188;\n\t-moz-border-right-colors: #fee188\n}\n\n.label-yellow.arrowed-in:before {\n\tborder-color: #fee188;\n\t-moz-border-right-colors: #fee188\n}\n\n.label-yellow.arrowed-right:after {\n\tborder-left-color: #fee188;\n\t-moz-border-left-colors: #fee188\n}\n\n.label-yellow.arrowed-in-right:after {\n\tborder-color: #fee188;\n\t-moz-border-left-colors: #fee188\n}\n\n.label-light.arrowed:before {\n\tborder-right-color: #e7e7e7;\n\t-moz-border-right-colors: #e7e7e7\n}\n\n.label-light.arrowed-in:before {\n\tborder-color: #e7e7e7;\n\t-moz-border-right-colors: #e7e7e7\n}\n\n.label-light.arrowed-right:after {\n\tborder-left-color: #e7e7e7;\n\t-moz-border-left-colors: #e7e7e7\n}\n\n.label-light.arrowed-in-right:after {\n\tborder-color: #e7e7e7;\n\t-moz-border-left-colors: #e7e7e7\n}\n\n.label-grey.arrowed:before {\n\tborder-right-color: #a0a0a0;\n\t-moz-border-right-colors: #a0a0a0\n}\n\n.label-grey.arrowed-in:before {\n\tborder-color: #a0a0a0;\n\t-moz-border-right-colors: #a0a0a0\n}\n\n.label-grey.arrowed-right:after {\n\tborder-left-color: #a0a0a0;\n\t-moz-border-left-colors: #a0a0a0\n}\n\n.label-grey.arrowed-in-right:after {\n\tborder-color: #a0a0a0;\n\t-moz-border-left-colors: #a0a0a0\n}\n.label {\n\tfont-size: 12px;\n\tline-height: 1.15;\n\theight: 20px\n}\n\n.label.arrowed {\n\tmargin-left: 5px\n}\n\n.label.arrowed:before {\n\tleft: -10px;\n\tborder-width: 10px 5px\n}\n\n.label.arrowed-in {\n\tmargin-left: 5px\n}\n\n.label.arrowed-in:before {\n\tleft: -5px;\n\tborder-width: 10px 5px\n}\n\n.label.arrowed-right {\n\tmargin-right: 5px\n}\n\n.label.arrowed-right:after {\n\tright: -10px;\n\tborder-width: 10px 5px\n}\n\n.label.arrowed-in-right {\n\tmargin-right: 5px\n}\n\n.label.arrowed-in-right:after {\n\tright: -5px;\n\tborder-width: 10px 5px\n}\n\n.label-lg {\n\tpadding: 0.3em 0.6em 0.4em;\n\tfont-size: 13px;\n\tline-height: 1.1;\n\theight: 24px\n}\n\n.label-lg.arrowed {\n\tmargin-left: 6px\n}\n\n.label-lg.arrowed:before {\n\tleft: -12px;\n\tborder-width: 12px 6px\n}\n\n.label-lg.arrowed-in {\n\tmargin-left: 6px\n}\n\n.label-lg.arrowed-in:before {\n\tleft: -6px;\n\tborder-width: 12px 6px\n}\n\n.label-lg.arrowed-right {\n\tmargin-right: 6px\n}\n\n.label-lg.arrowed-right:after {\n\tright: -12px;\n\tborder-width: 12px 6px\n}\n\n.label-lg.arrowed-in-right {\n\tmargin-right: 6px\n}\n\n.label-lg.arrowed-in-right:after {\n\tright: -6px;\n\tborder-width: 12px 6px\n}\n\n.label-xlg {\n\tpadding: 0.3em 0.7em 0.4em;\n\tfont-size: 14px;\n\tline-height: 1.3;\n\theight: 28px\n}\n\n.label-xlg.arrowed {\n\tmargin-left: 7px\n}\n\n.label-xlg.arrowed:before {\n\tleft: -14px;\n\tborder-width: 14px 7px\n}\n\n.label-xlg.arrowed-in {\n\tmargin-left: 7px\n}\n\n.label-xlg.arrowed-in:before {\n\tleft: -7px;\n\tborder-width: 14px 7px\n}\n\n.label-xlg.arrowed-right {\n\tmargin-right: 7px\n}\n\n.label-xlg.arrowed-right:after {\n\tright: -14px;\n\tborder-width: 14px 7px\n}\n\n.label-xlg.arrowed-in-right {\n\tmargin-right: 7px\n}\n\n.label-xlg.arrowed-in-right:after {\n\tright: -7px;\n\tborder-width: 14px 7px\n}\n\n.label-sm {\n\tpadding: 0.2em 0.4em 0.3em;\n\tfont-size: 11px;\n\tline-height: 1;\n\theight: 18px\n}\n\n.label-sm.arrowed {\n\tmargin-left: 4px\n}\n\n.label-sm.arrowed:before {\n\tleft: -8px;\n\tborder-width: 9px 4px\n}\n\n.label-sm.arrowed-in {\n\tmargin-left: 4px\n}\n\n.label-sm.arrowed-in:before {\n\tleft: -4px;\n\tborder-width: 9px 4px\n}\n\n.label-sm.arrowed-right {\n\tmargin-right: 4px\n}\n\n.label-sm.arrowed-right:after {\n\tright: -8px;\n\tborder-width: 9px 4px\n}\n\n.label-sm.arrowed-in-right {\n\tmargin-right: 4px\n}\n\n.label-sm.arrowed-in-right:after {\n\tright: -4px;\n\tborder-width: 9px 4px\n}\n\n.pagination>li>span,.pager>li>span {\n\tborder-width: 1px;\n\tborder-radius: 0 !important\n}\n\n.pagination>li>a,.pager>li>a {\n\tborder-width: 1px;\n\tborder-color: #d4dfe3;\n\tborder-radius: 0 !important;\n\tcolor: #2283c5;\n\tbackground-color: #fafafa;\n\tmargin: 0 -1px 0 0;\n\tposition: relative;\n\tz-index: auto\n}\n\n.pagination>li>a:hover,.pager>li>a:hover {\n\tcolor: #1c6ca2;\n\tbackground-color: #eaeff2;\n\tborder-color: #c1d1d7;\n\tz-index: 1\n}\n\n.pagination>li>a:focus,.pager>li>a:focus {\n\tbackground-color: #eaeef2\n}\n\n.pagination>li.disabled>a,.pager>li.disabled>a,.pagination>li.disabled>a:hover,.pager>li.disabled>a:hover {\n\tbackground-color: #f9f9f9;\n\tborder-color: #d9d9d9;\n\tz-index: auto\n}\n\n.pagination>li.active>a,.pagination>li.active>a:hover {\n\tbackground-color: #6faed9;\n\tborder-color: #6faed9;\n\tcolor: #fff;\n\ttext-shadow: 0 -1px 0 rgba(0,0,0,0.25);\n\tz-index: 2\n}\n\n.list-unstyled>li>.ace-icon:first-child,.list-inline>li>.ace-icon:first-child {\n\twidth: 18px;\n\ttext-align: center\n}\n.kendo-list>li{margin-bottom:8px;}"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/docs.css",
    "content": "/*!\n * Bootstrap Docs (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under the Creative Commons Attribution 3.0 Unported License. For\n * details, see http://creativecommons.org/licenses/by/3.0/.\n */\nhtml{width:100%; min-width:1024px;}\nbody {\n\tposition: relative\n}\n\n.table code {\n\tfont-size: 13px;\n\tfont-weight: 400\n}\n\n.btn-outline {\n\tcolor: #563d7c;\n\tbackground-color: transparent;\n\tborder-color: #563d7c\n}\n\n.btn-outline:hover,.btn-outline:focus,.btn-outline:active {\n\tcolor: #fff;\n\tbackground-color: #563d7c;\n\tborder-color: #563d7c\n}\n\n.btn-outline-inverse {\n\tcolor: #fff;\n\tbackground-color: transparent;\n\tborder-color: #cdbfe3\n}\n\n.btn-outline-inverse:hover,.btn-outline-inverse:focus,.btn-outline-inverse:active {\n\tcolor: #563d7c;\n\ttext-shadow: none;\n\tbackground-color: #fff;\n\tborder-color: #fff\n}\n\n.bs-docs-booticon {\n\tdisplay: block;\n\tfont-weight: 500;\n\tcolor: #fff;\n\tbackground-color: #563d7c;\n\tborder-radius: 15%;\n\tcursor: default;\n\ttext-align: center\n}\n\n.bs-docs-booticon-sm {\n\twidth: 30px;\n\theight: 30px;\n\tfont-size: 20px;\n\tline-height: 28px\n}\n\n.bs-docs-booticon-lg {\n\twidth: 144px;\n\theight: 144px;\n\tfont-size: 108px;\n\tline-height: 140px\n}\n\n.bs-docs-booticon-inverse {\n\tcolor: #563d7c;\n\tbackground-color: #fff\n}\n\n.bs-docs-booticon-outline {\n\tbackground-color: transparent;\n\tborder: 1px solid #cdbfe3\n}\n\n.bs-docs-nav {\n\tmargin-bottom: 0;\n\tbackground-color: #fff;\n\tborder-bottom: 1px solid #563d7c\n}\n\n.bs-home-nav .bs-nav-b {\n\tdisplay: none\n}\n\n.bs-docs-nav .navbar-brand,.bs-docs-nav .navbar-nav>li>a {\n\tcolor: #563d7c;\n\tfont-weight: 500\n}\n\n.bs-docs-nav .navbar-nav>li>a:hover,.bs-docs-nav .navbar-nav>.active>a,.bs-docs-nav .navbar-nav>.active>a:hover {\n\tcolor: #463265;\n\tbackground-color: #f9f9f9\n}\n\n.bs-docs-nav .navbar-toggle .icon-bar {\n\tbackground-color: #563d7c\n}\n\n.bs-docs-nav .navbar-header .navbar-toggle {\n\tborder-color: #fff\n}\n\n.bs-docs-nav .navbar-header .navbar-toggle:hover,.bs-docs-nav .navbar-header .navbar-toggle:focus {\n\tbackground-color: #f9f9f9;\n\tborder-color: #f9f9f9\n}\n\n.bs-docs-footer {\n\tpadding-top: 40px;\n\tpadding-bottom: 40px;\n\tmargin-top: 100px;\n\tcolor: #777;\n\ttext-align: center;\n\tborder-top: 1px solid #e5e5e5\n}\n\n.bs-docs-footer-links {\n\tmargin-top: 20px;\n\tpadding-left: 0;\n\tcolor: #999\n}\n\n.bs-docs-footer-links li {\n\tdisplay: inline;\n\tpadding: 0 2px\n}\n\n.bs-docs-footer-links li:first-child {\n\tpadding-left: 0\n}\n\n@media (min-width:768px) {\n\t.bs-docs-footer p {\n\t\tmargin-bottom: 0\n\t}\n}\n\n.bs-docs-social {\n\tmargin-bottom: 20px;\n\ttext-align: center\n}\n\n.bs-docs-social-buttons {\n\tdisplay: inline-block;\n\tmargin-bottom: 0;\n\tpadding-left: 0;\n\tlist-style: none\n}\n\n.bs-docs-social-buttons li {\n\tdisplay: inline-block;\n\tline-height: 1;\n\tpadding: 5px 8px\n}\n\n.bs-docs-social-buttons .twitter-follow-button {\n\twidth: 225px!important\n}\n\n.bs-docs-social-buttons .twitter-share-button {\n\twidth: 98px!important\n}\n\n.github-btn {\n\tborder: 0;\n\toverflow: hidden\n}\n\n.bs-docs-masthead,.bs-docs-header {\n\tposition: relative;\n\tpadding: 30px 15px;\n\tcolor: #cdbfe3;\n\ttext-align: center;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\tbackground-color: #6f5499;\n\tbackground-image: -webkit-linear-gradient(top,#563d7c 0,#6f5499 100%);\n\tbackground-image: linear-gradient(to bottom,#563d7c 0,#6f5499 100%);\n\tbackground-repeat: repeat-x;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0)\n}\n\n.bs-docs-masthead .bs-docs-booticon {\n\tmargin: 0 auto 30px\n}\n\n.bs-docs-masthead h1 {\n\tfont-weight: 300;\n\tline-height: 1;\n\tcolor: #fff\n}\n\n.bs-docs-masthead .lead {\n\tmargin: 0 auto 30px;\n\tfont-size: 20px;\n\tcolor: #fff\n}\n\n.bs-docs-masthead .version {\n\tmargin-top: -15px;\n\tmargin-bottom: 30px;\n\tcolor: #9783b9\n}\n\n.bs-docs-masthead .btn {\n\twidth: 100%;\n\tpadding: 15px 30px;\n\tfont-size: 20px\n}\n\n@media (min-width:480px) {\n\t.bs-docs-masthead .btn {\n\t\twidth: auto\n\t}\n}\n\n@media (min-width:768px) {\n\t.bs-docs-masthead {\n\t\tpadding-top: 80px;\n\t\tpadding-bottom: 80px\n\t}\n\n\t.bs-docs-masthead h1 {\n\t\tfont-size: 60px\n\t}\n\n\t.bs-docs-masthead .lead {\n\t\tfont-size: 24px\n\t}\n}\n\n@media (min-width:992px) {\n\t.bs-docs-masthead .lead {\n\t\twidth: 80%;\n\t\tfont-size: 30px\n\t}\n}\n\n.bs-docs-header {\n\tmargin-bottom: 40px;\n\tfont-size: 20px\n}\n\n.bs-docs-header h1 {\n\tmargin-top: 0;\n\tcolor: #fff\n}\n\n.bs-docs-header p {\n\tmargin-bottom: 0;\n\tfont-weight: 300;\n\tline-height: 1.4\n}\n\n.bs-docs-header .container {\n\tposition: relative\n}\n\n@media (min-width:768px) {\n\t.bs-docs-header {\n\t\tpadding-top: 60px;\n\t\tpadding-bottom: 60px;\n\t\tfont-size: 24px;\n\t\ttext-align: left\n\t}\n\n\t.bs-docs-header h1 {\n\t\tfont-size: 60px;\n\t\tline-height: 1\n\t}\n}\n\n@media (min-width:992px) {\n\t.bs-docs-header h1,.bs-docs-header p {\n\t\tmargin-right: 380px\n\t}\n}\n\n.carbonad {\n\twidth: auto!important;\n\tmargin: 30px -30px -31px!important;\n\tpadding: 20px!important;\n\toverflow: hidden;\n\theight: auto!important;\n\tfont-size: 13px!important;\n\tline-height: 16px!important;\n\ttext-align: left;\n\tbackground: transparent!important;\n\tborder: solid #866ab3!important;\n\tborder-width: 1px 0!important\n}\n\n.carbonad-img {\n\tmargin: 0!important\n}\n\n.carbonad-text,.carbonad-tag {\n\tfloat: none!important;\n\tdisplay: block!important;\n\twidth: auto!important;\n\theight: auto!important;\n\tmargin-left: 145px!important;\n\tfont-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif!important\n}\n\n.carbonad-text {\n\tpadding-top: 0!important\n}\n\n.carbonad-tag {\n\tcolor: inherit!important;\n\ttext-align: left!important\n}\n\n.carbonad-text a,.carbonad-tag a {\n\tcolor: #fff!important\n}\n\n.carbonad #azcarbon>img {\n\tdisplay: none\n}\n\n@media (min-width:480px) {\n\t.carbonad {\n\t\twidth: 330px!important;\n\t\tmargin: 20px auto!important;\n\t\tborder-radius: 4px;\n\t\tborder-width: 1px!important\n\t}\n\n\t.bs-docs-masthead .carbonad {\n\t\tmargin: 50px auto 0!important\n\t}\n}\n\n@media (min-width:768px) {\n\t.carbonad {\n\t\tmargin-left: 0!important;\n\t\tmargin-right: 0!important\n\t}\n}\n\n@media (min-width:992px) {\n\t.carbonad {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 15px;\n\t\tmargin: 0!important;\n\t\tpadding: 15px!important;\n\t\twidth: 330px!important\n\t}\n\n\t.bs-docs-masthead .carbonad {\n\t\tposition: static\n\t}\n}\n\n.bs-docs-featurette {\n\tpadding-top: 40px;\n\tpadding-bottom: 40px;\n\tfont-size: 16px;\n\tline-height: 1.5;\n\tcolor: #555;\n\ttext-align: center;\n\tbackground-color: #fff;\n\tborder-bottom: 1px solid #e5e5e5\n}\n\n.bs-docs-featurette+.bs-docs-footer {\n\tmargin-top: 0;\n\tborder-top: 0\n}\n\n.bs-docs-featurette-title {\n\tfont-size: 30px;\n\tfont-weight: 400;\n\tcolor: #333;\n\tmargin-bottom: 5px\n}\n\n.half-rule {\n\twidth: 100px;\n\tmargin: 40px auto\n}\n\n.bs-docs-featurette h3 {\n\tfont-weight: 400;\n\tcolor: #333;\n\tmargin-bottom: 5px\n}\n\n.bs-docs-featurette-img {\n\tdisplay: block;\n\tmargin-bottom: 20px;\n\tcolor: #333\n}\n\n.bs-docs-featurette-img:hover {\n\ttext-decoration: none;\n\tcolor: #428bca\n}\n\n.bs-docs-featurette-img img {\n\tdisplay: block;\n\tmargin-bottom: 15px\n}\n\n.bs-docs-featured-sites {\n\tmargin-left: -1px;\n\tmargin-right: -1px\n}\n\n.bs-docs-featured-sites .col-sm-3 {\n\tpadding-left: 1px;\n\tpadding-right: 1px\n}\n\n@media (min-width:480px) {\n\t.bs-docs-featurette .img-responsive {\n\t\tmargin-top: 30px\n\t}\n}\n\n@media (min-width:768px) {\n\t.bs-docs-featurette {\n\t\tpadding-top: 100px;\n\t\tpadding-bottom: 100px\n\t}\n\n\t.bs-docs-featurette-title {\n\t\tfont-size: 40px\n\t}\n\n\t.bs-docs-featurette .lead {\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t\tmax-width: 80%\n\t}\n\n\t.bs-docs-featured-sites .col-sm-3:first-child img {\n\t\tborder-top-left-radius: 4px;\n\t\tborder-bottom-left-radius: 4px\n\t}\n\n\t.bs-docs-featured-sites .col-sm-3:last-child img {\n\t\tborder-top-right-radius: 4px;\n\t\tborder-bottom-right-radius: 4px\n\t}\n\n\t.bs-docs-featurette .img-responsive {\n\t\tmargin-top: 0\n\t}\n}\n\n.bs-docs-sidebar.affix {\n\tposition: static\n}\n\n@media (min-width:768px) {\n\t.bs-docs-sidebar {\n\t\tpadding-left: 20px\n\t}\n}\n\n.bs-docs-sidenav {\n\tmargin-top: 20px;\n\tmargin-bottom: 20px\n}\n\n.bs-docs-sidebar .nav>li>a {\n\tdisplay: block;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tcolor: #999;\n\tpadding: 4px 20px\n}\n\n.bs-docs-sidebar .nav>li>a:hover,.bs-docs-sidebar .nav>li>a:focus {\n\tpadding-left: 19px;\n\tcolor: #563d7c;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n\tborder-left: 1px solid #563d7c\n}\n\n.bs-docs-sidebar .nav>.active>a,.bs-docs-sidebar .nav>.active:hover>a,.bs-docs-sidebar .nav>.active:focus>a {\n\tpadding-left: 18px;\n\tfont-weight: 700;\n\tcolor: #563d7c;\n\tbackground-color: transparent;\n\tborder-left: 2px solid #563d7c\n}\n\n.bs-docs-sidebar .nav .nav {\n\tdisplay: none;\n\tpadding-bottom: 10px\n}\n\n.bs-docs-sidebar .nav .nav>li>a {\n\tpadding-top: 1px;\n\tpadding-bottom: 1px;\n\tpadding-left: 30px;\n\tfont-size: 12px;\n\tfont-weight: 400\n}\n\n.bs-docs-sidebar .nav .nav>li>a:hover,.bs-docs-sidebar .nav .nav>li>a:focus {\n\tpadding-left: 29px\n}\n\n.bs-docs-sidebar .nav .nav>.active>a,.bs-docs-sidebar .nav .nav>.active:hover>a,.bs-docs-sidebar .nav .nav>.active:focus>a {\n\tfont-weight: 500;\n\tpadding-left: 28px\n}\n\n.back-to-top {\n\tdisplay: none;\n\tmargin-top: 10px;\n\tmargin-left: 10px;\n\tpadding: 4px 10px;\n\tfont-size: 12px;\n\tfont-weight: 500;\n\tcolor: #999\n}\n\n.back-to-top:hover {\n\ttext-decoration: none;\n\tcolor: #563d7c\n}\n\n@media (min-width:768px) {\n\t.back-to-top {\n\t\tdisplay: block\n\t}\n}\n\n@media (min-width:992px) {\n\t.bs-docs-sidebar .nav>.active>ul {\n\t\tdisplay: block\n\t}\n\n\t.bs-docs-sidebar.affix,.bs-docs-sidebar.affix-bottom {\n\t\twidth: 213px\n\t}\n\n\t.bs-docs-sidebar.affix {\n\t\tposition: fixed;\n\t\ttop: 20px\n\t}\n\n\t.bs-docs-sidebar.affix-bottom {\n\t\tposition: absolute\n\t}\n\n\t.bs-docs-sidebar.affix-bottom .bs-docs-sidenav,.bs-docs-sidebar.affix .bs-docs-sidenav {\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 0\n\t}\n}\n\n@media (min-width:1200px) {\n\t.bs-docs-sidebar.affix-bottom,.bs-docs-sidebar.affix {\n\t\twidth: 263px\n\t}\n}\n\n.bs-docs-section {\n\tmargin-bottom: 40px\n}\n\n.bs-docs-section:last-child {\n\tmargin-bottom: 0\n}\n\nh1[id] {\n\tmargin-top: 0;\n\tpadding-top: 20px\n}\n\n.bs-callout {\n\tmargin: 20px 0;\n\tpadding: 20px;\n\tborder-left: 3px solid #eee\n}\n\n.bs-callout h4 {\n\tmargin-top: 0;\n\tmargin-bottom: 5px\n}\n\n.bs-callout p:last-child {\n\tmargin-bottom: 0\n}\n\n.bs-callout code {\n\tbackground-color: #fff;\n\tborder-radius: 3px\n}\n\n.bs-callout-danger {\n\tbackground-color: #fdf7f7;\n\tborder-color: #d9534f\n}\n\n.bs-callout-danger h4 {\n\tcolor: #d9534f\n}\n\n.bs-callout-warning {\n\tbackground-color: #fcf8f2;\n\tborder-color: #f0ad4e\n}\n\n.bs-callout-warning h4 {\n\tcolor: #f0ad4e\n}\n\n.bs-callout-info {\n\tbackground-color: #f4f8fa;\n\tborder-color: #5bc0de\n}\n\n.bs-callout-info h4 {\n\tcolor: #5bc0de\n}\n\n.color-swatches {\n\tmargin: 0 -5px;\n\toverflow: hidden\n}\n\n.color-swatch {\n\tfloat: left;\n\twidth: 60px;\n\theight: 60px;\n\tmargin: 0 5px;\n\tborder-radius: 3px\n}\n\n@media (min-width:768px) {\n\t.color-swatch {\n\t\twidth: 100px;\n\t\theight: 100px\n\t}\n}\n\n.color-swatches .gray-darker {\n\tbackground-color: #222\n}\n\n.color-swatches .gray-dark {\n\tbackground-color: #333\n}\n\n.color-swatches .gray {\n\tbackground-color: #555\n}\n\n.color-swatches .gray-light {\n\tbackground-color: #999\n}\n\n.color-swatches .gray-lighter {\n\tbackground-color: #eee\n}\n\n.color-swatches .brand-primary {\n\tbackground-color: #428bca\n}\n\n.color-swatches .brand-success {\n\tbackground-color: #5cb85c\n}\n\n.color-swatches .brand-warning {\n\tbackground-color: #f0ad4e\n}\n\n.color-swatches .brand-danger {\n\tbackground-color: #d9534f\n}\n\n.color-swatches .brand-info {\n\tbackground-color: #5bc0de\n}\n\n.color-swatches .bs-purple {\n\tbackground-color: #563d7c\n}\n\n.color-swatches .bs-purple-light {\n\tbackground-color: #c7bfd3\n}\n\n.color-swatches .bs-purple-lighter {\n\tbackground-color: #e5e1ea\n}\n\n.color-swatches .bs-gray {\n\tbackground-color: #f9f9f9\n}\n\n.bs-team .team-member {\n\tcolor: #555;\n\tline-height: 32px\n}\n\n.bs-team .team-member:hover {\n\tcolor: #333;\n\ttext-decoration: none\n}\n\n.bs-team .github-btn {\n\tfloat: right;\n\tmargin-top: 6px;\n\twidth: 180px;\n\theight: 20px\n}\n\n.bs-team img {\n\tfloat: left;\n\twidth: 32px;\n\tmargin-right: 10px;\n\tborder-radius: 4px\n}\n\n.show-grid {\n\tmargin-bottom: 15px\n}\n\n.show-grid [class^=col-] {\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n\tbackground-color: #eee;\n\tbackground-color: rgba(86,61,124,.15);\n\tborder: 1px solid #ddd;\n\tborder: 1px solid rgba(86,61,124,.2)\n}\n\n.bs-example {\n\tposition: relative;\n\tpadding: 45px 15px 15px;\n\tmargin: 0 -15px 15px;\n\tbackground-color: #fafafa;\n\tbox-shadow: inset 0 3px 6px rgba(0,0,0,.05);\n\tborder-color: #e5e5e5 #eee #eee;\n\tborder-style: solid;\n\tborder-width: 1px 0\n}\n\n.bs-example:after {\n\tcontent: \"Example\";\n\tposition: absolute;\n\ttop: 15px;\n\tleft: 15px;\n\tfont-size: 12px;\n\tfont-weight: 700;\n\tcolor: #bbb;\n\ttext-transform: uppercase;\n\tletter-spacing: 1px\n}\n\n.bs-example+.highlight {\n\tmargin: -15px -15px 15px;\n\tborder-radius: 0;\n\tborder-width: 0 0 1px\n}\n\n@media (min-width:768px) {\n\t.bs-example {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t\tbackground-color: #fff;\n\t\tborder-width: 1px;\n\t\tborder-color: #ddd;\n\t\tborder-radius: 4px;\n\t\tbox-shadow: none\n\t}\n\n\t.bs-example+.highlight {\n\t\tmargin-top: -16px;\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t\tborder-width: 1px;\n\t\tborder-bottom-left-radius: 4px;\n\t\tborder-bottom-right-radius: 4px\n\t}\n}\n\n.bs-example .container {\n\twidth: auto\n}\n\n.bs-example>p:last-child,.bs-example>ul:last-child,.bs-example>ol:last-child,.bs-example>blockquote:last-child,.bs-example>.form-control:last-child,.bs-example>.table:last-child,.bs-example>.navbar:last-child,.bs-example>.jumbotron:last-child,.bs-example>.alert:last-child,.bs-example>.panel:last-child,.bs-example>.list-group:last-child,.bs-example>.well:last-child,.bs-example>.progress:last-child,.bs-example>.table-responsive:last-child>.table {\n\tmargin-bottom: 0\n}\n\n.bs-example>p>.close {\n\tfloat: none\n}\n\n.bs-example-type .table .type-info {\n\tcolor: #999;\n\tvertical-align: middle\n}\n\n.bs-example-type .table td {\n\tpadding: 15px 0;\n\tborder-color: #eee\n}\n\n.bs-example-type .table tr:first-child td {\n\tborder-top: 0\n}\n\n.bs-example-type h1,.bs-example-type h2,.bs-example-type h3,.bs-example-type h4,.bs-example-type h5,.bs-example-type h6 {\n\tmargin: 0\n}\n\n.bs-example-bg-classes p {\n\tpadding: 15px\n}\n\n.bs-example>.img-circle,.bs-example>.img-rounded,.bs-example>.img-thumbnail {\n\tmargin: 5px\n}\n\n.bs-example>.table-responsive>.table {\n\tbackground-color: #fff\n}\n\n.bs-example>.btn,.bs-example>.btn-group {\n\tmargin-top: 5px;\n\tmargin-bottom: 5px\n}\n\n.bs-example>.btn-toolbar+.btn-toolbar {\n\tmargin-top: 10px\n}\n\n.bs-example-control-sizing select,.bs-example-control-sizing input[type=text]+input[type=text] {\n\tmargin-top: 10px\n}\n\n.bs-example-form .input-group {\n\tmargin-bottom: 10px\n}\n\n.bs-example>textarea.form-control {\n\tresize: vertical\n}\n\n.bs-example>.list-group {\n\tmax-width: 400px\n}\n\n.bs-example .navbar:last-child {\n\tmargin-bottom: 0\n}\n\n.bs-navbar-top-example,.bs-navbar-bottom-example {\n\tz-index: 1;\n\tpadding: 0;\n\toverflow: hidden\n}\n\n.bs-navbar-top-example .navbar-header,.bs-navbar-bottom-example .navbar-header {\n\tmargin-left: 0\n}\n\n.bs-navbar-top-example .navbar-fixed-top,.bs-navbar-bottom-example .navbar-fixed-bottom {\n\tposition: relative;\n\tmargin-left: 0;\n\tmargin-right: 0\n}\n\n.bs-navbar-top-example {\n\tpadding-bottom: 45px\n}\n\n.bs-navbar-top-example:after {\n\ttop: auto;\n\tbottom: 15px\n}\n\n.bs-navbar-top-example .navbar-fixed-top {\n\ttop: -1px\n}\n\n.bs-navbar-bottom-example {\n\tpadding-top: 45px\n}\n\n.bs-navbar-bottom-example .navbar-fixed-bottom {\n\tbottom: -1px\n}\n\n.bs-navbar-bottom-example .navbar {\n\tmargin-bottom: 0\n}\n\n@media (min-width:768px) {\n\t.bs-navbar-top-example .navbar-fixed-top,.bs-navbar-bottom-example .navbar-fixed-bottom {\n\t\tposition: absolute\n\t}\n\n\t.bs-navbar-top-example {\n\t\tborder-radius: 0 0 4px 4px\n\t}\n\n\t.bs-navbar-bottom-example {\n\t\tborder-radius: 4px 4px 0 0\n\t}\n}\n\n.bs-example .pagination {\n\tmargin-top: 10px;\n\tmargin-bottom: 10px\n}\n\n.bs-example>.pager {\n\tmargin-top: 0\n}\n\n.bs-example-modal {\n\tbackground-color: #f5f5f5\n}\n\n.bs-example-modal .modal {\n\tposition: relative;\n\ttop: auto;\n\tright: auto;\n\tleft: auto;\n\tbottom: auto;\n\tz-index: 1;\n\tdisplay: block\n}\n\n.bs-example-modal .modal-dialog {\n\tleft: auto;\n\tmargin-left: auto;\n\tmargin-right: auto\n}\n\n.bs-example>.dropdown>.dropdown-menu {\n\tposition: static;\n\tdisplay: block;\n\tmargin-bottom: 5px\n}\n\n.bs-example-tabs .nav-tabs {\n\tmargin-bottom: 15px\n}\n\n.bs-example-tooltips {\n\ttext-align: center\n}\n\n.bs-example-tooltips>.btn {\n\tmargin-top: 5px;\n\tmargin-bottom: 5px\n}\n\n.bs-example-popover {\n\tpadding-bottom: 24px;\n\tbackground-color: #f9f9f9\n}\n\n.bs-example-popover .popover {\n\tposition: relative;\n\tdisplay: block;\n\tfloat: left;\n\twidth: 260px;\n\tmargin: 20px\n}\n\n.scrollspy-example {\n\tposition: relative;\n\theight: 200px;\n\tmargin-top: 10px;\n\toverflow: auto\n}\n\n.highlight {\n\tpadding: 9px 14px;\n\tmargin-bottom: 14px;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\tborder-radius: 4px\n}\n\n.highlight pre {\n\tpadding: 0;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\tbackground-color: transparent;\n\tborder: 0;\n\twhite-space: nowrap\n}\n\n.highlight pre code {\n\tfont-size: inherit;\n\tcolor: #333\n}\n\n.highlight pre .lineno {\n\tdisplay: inline-block;\n\twidth: 22px;\n\tpadding-right: 5px;\n\tmargin-right: 10px;\n\ttext-align: right;\n\tcolor: #bebec5\n}\n\n.table-responsive .highlight pre {\n\twhite-space: normal\n}\n\n.bs-table th small,.responsive-utilities th small {\n\tdisplay: block;\n\tfont-weight: 400;\n\tcolor: #999\n}\n\n.responsive-utilities tbody th {\n\tfont-weight: 400\n}\n\n.responsive-utilities td {\n\ttext-align: center\n}\n\n.responsive-utilities td.is-visible {\n\tcolor: #468847;\n\tbackground-color: #dff0d8!important\n}\n\n.responsive-utilities td.is-hidden {\n\tcolor: #ccc;\n\tbackground-color: #f9f9f9!important\n}\n\n.responsive-utilities-test {\n\tmargin-top: 5px\n}\n\n.responsive-utilities-test .col-xs-6 {\n\tmargin-bottom: 10px\n}\n\n.responsive-utilities-test span {\n\tdisplay: block;\n\tpadding: 15px 10px;\n\tfont-size: 14px;\n\tfont-weight: 700;\n\tline-height: 1.1;\n\ttext-align: center;\n\tborder-radius: 4px\n}\n\n.visible-on .col-xs-6 .hidden-xs,.visible-on .col-xs-6 .hidden-sm,.visible-on .col-xs-6 .hidden-md,.visible-on .col-xs-6 .hidden-lg,.hidden-on .col-xs-6 .hidden-xs,.hidden-on .col-xs-6 .hidden-sm,.hidden-on .col-xs-6 .hidden-md,.hidden-on .col-xs-6 .hidden-lg {\n\tcolor: #999;\n\tborder: 1px solid #ddd\n}\n\n.visible-on .col-xs-6 .visible-xs,.visible-on .col-xs-6 .visible-sm,.visible-on .col-xs-6 .visible-md,.visible-on .col-xs-6 .visible-lg,.hidden-on .col-xs-6 .visible-xs,.hidden-on .col-xs-6 .visible-sm,.hidden-on .col-xs-6 .visible-md,.hidden-on .col-xs-6 .visible-lg {\n\tcolor: #468847;\n\tbackground-color: #dff0d8;\n\tborder: 1px solid #d6e9c6\n}\n\n.bs-glyphicons {\n\tmargin: 0 -19px 20px -16px;\n\toverflow: hidden\n}\n\n.bs-glyphicons-list {\n\tpadding-left: 0;\n\tlist-style: none\n}\n\n.bs-glyphicons li {\n\tfloat: left;\n\twidth: 25%;\n\theight: 115px;\n\tpadding: 10px;\n\tfont-size: 10px;\n\tline-height: 1.4;\n\ttext-align: center;\n\tborder: 1px solid #fff;\n\tbackground-color: #f9f9f9\n}\n\n.bs-glyphicons .glyphicon {\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tfont-size: 24px\n}\n\n.bs-glyphicons .glyphicon-class {\n\tdisplay: block;\n\ttext-align: center;\n\tword-wrap: break-word\n}\n\n.bs-glyphicons li:hover {\n\tcolor: #fff;\n\tbackground-color: #563d7c\n}\n\n@media (min-width:768px) {\n\t.bs-glyphicons {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0\n\t}\n\n\t.bs-glyphicons li {\n\t\twidth: 12.5%;\n\t\tfont-size: 12px\n\t}\n}\n\n.bs-customizer .toggle {\n\tfloat: right;\n\tmargin-top: 25px\n}\n\n.bs-customizer label {\n\tmargin-top: 10px;\n\tfont-weight: 500;\n\tcolor: #555\n}\n\n.bs-customizer h2 {\n\tmargin-top: 0;\n\tmargin-bottom: 5px;\n\tpadding-top: 30px\n}\n\n.bs-customizer h3 {\n\tmargin-bottom: 0\n}\n\n.bs-customizer h4 {\n\tmargin-top: 15px;\n\tmargin-bottom: 0\n}\n\n.bs-customizer .bs-callout h4 {\n\tmargin-top: 0;\n\tmargin-bottom: 5px\n}\n\n.bs-customizer input[type=text] {\n\tfont-family: Menlo,Monaco,Consolas,\"Courier New\",monospace;\n\tbackground-color: #fafafa\n}\n\n.bs-customizer .help-block {\n\tfont-size: 12px;\n\tmargin-bottom: 5px\n}\n\n#less-section label {\n\tfont-weight: 400\n}\n\n.bs-customizer-input {\n\tfloat: left;\n\twidth: 33.333333%;\n\tpadding-left: 15px;\n\tpadding-right: 15px\n}\n\n.bs-customize-download .btn-outline {\n\tpadding: 20px\n}\n\n.bs-customizer-alert {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tz-index: 1030;\n\tpadding: 15px 0;\n\tcolor: #fff;\n\tbackground-color: #d9534f;\n\tbox-shadow: inset 0 1px 0 rgba(255,255,255,.25);\n\tborder-bottom: 1px solid #b94441\n}\n\n.bs-customizer-alert .close {\n\tmargin-top: -4px;\n\tfont-size: 24px\n}\n\n.bs-customizer-alert p {\n\tmargin-bottom: 0\n}\n\n.bs-customizer-alert .glyphicon {\n\tmargin-right: 5px\n}\n\n.bs-customizer-alert pre {\n\tmargin: 10px 0 0;\n\tcolor: #fff;\n\tbackground-color: #a83c3a;\n\tborder-color: #973634;\n\tbox-shadow: inset 0 2px 4px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)\n}\n\n.bs-brand-logos {\n\tdisplay: table;\n\twidth: 100%;\n\tmargin-bottom: 15px;\n\toverflow: hidden;\n\tcolor: #563d7c;\n\tbackground-color: #f9f9f9;\n\tborder-radius: 4px\n}\n\n.bs-brand-item {\n\tpadding: 60px 0;\n\ttext-align: center\n}\n\n.bs-brand-item+.bs-brand-item {\n\tborder-top: 1px solid #fff\n}\n\n.bs-brand-logos .inverse {\n\tcolor: #fff;\n\tbackground-color: #563d7c\n}\n\n.bs-brand-item h1,.bs-brand-item h3 {\n\tmargin-top: 0;\n\tmargin-bottom: 0\n}\n\n.bs-brand-item .bs-docs-booticon {\n\tmargin-left: auto;\n\tmargin-right: auto\n}\n\n.bs-brand-item .glyphicon {\n\twidth: 30px;\n\theight: 30px;\n\tmargin: 10px auto -10px;\n\tline-height: 30px;\n\tcolor: #fff;\n\tborder-radius: 50%\n}\n\n.bs-brand-item .glyphicon-ok {\n\tbackground-color: #5cb85c\n}\n\n.bs-brand-item .glyphicon-remove {\n\tbackground-color: #d9534f\n}\n\n@media (min-width:768px) {\n\t.bs-brand-item {\n\t\tdisplay: table-cell;\n\t\twidth: 1%\n\t}\n\n\t.bs-brand-item+.bs-brand-item {\n\t\tborder-top: 0;\n\t\tborder-left: 1px solid #fff\n\t}\n\n\t.bs-brand-item h1 {\n\t\tfont-size: 60px\n\t}\n}\n\n.bs-examples .thumbnail {\n\tmargin-bottom: 10px\n}\n\n.bs-examples h4 {\n\tmargin-bottom: 5px\n}\n\n.bs-examples p {\n\tmargin-bottom: 20px\n}\n\n#focusedInput {\n\tborder-color: #ccc;\n\tborder-color: rgba(82,168,236,.8);\n\toutline: 0;\n\toutline: thin dotted \\9;\n\t-moz-box-shadow: 0 0 8px rgba(82,168,236,.6);\n\tbox-shadow: 0 0 8px rgba(82,168,236,.6)\n}\n\n.hll {\n\tbackground-color: #ffc\n}\n\n.c {\n\tcolor: #999\n}\n\n.err {\n\tcolor: #A00;\n\tbackground-color: #FAA\n}\n\n.k {\n\tcolor: #069\n}\n\n.o {\n\tcolor: #555\n}\n\n.cm {\n\tcolor: #999\n}\n\n.cp {\n\tcolor: #099\n}\n\n.c1 {\n\tcolor: #999\n}\n\n.cs {\n\tcolor: #999\n}\n\n.gd {\n\tbackground-color: #FCC;\n\tborder: 1px solid #C00\n}\n\n.ge {\n\tfont-style: italic\n}\n\n.gr {\n\tcolor: red\n}\n\n.gh {\n\tcolor: #030\n}\n\n.gi {\n\tbackground-color: #CFC;\n\tborder: 1px solid #0C0\n}\n\n.go {\n\tcolor: #AAA\n}\n\n.gp {\n\tcolor: #009\n}\n\n.gu {\n\tcolor: #030\n}\n\n.gt {\n\tcolor: #9C6\n}\n\n.kc {\n\tcolor: #069\n}\n\n.kd {\n\tcolor: #069\n}\n\n.kn {\n\tcolor: #069\n}\n\n.kp {\n\tcolor: #069\n}\n\n.kr {\n\tcolor: #069\n}\n\n.kt {\n\tcolor: #078\n}\n\n.m {\n\tcolor: #F60\n}\n\n.s {\n\tcolor: #d44950\n}\n\n.na {\n\tcolor: #4f9fcf\n}\n\n.nb {\n\tcolor: #366\n}\n\n.nc {\n\tcolor: #0A8\n}\n\n.no {\n\tcolor: #360\n}\n\n.nd {\n\tcolor: #99F\n}\n\n.ni {\n\tcolor: #999\n}\n\n.ne {\n\tcolor: #C00\n}\n\n.nf {\n\tcolor: #C0F\n}\n\n.nl {\n\tcolor: #99F\n}\n\n.nn {\n\tcolor: #0CF\n}\n\n.nt {\n\tcolor: #2f6f9f\n}\n\n.nv {\n\tcolor: #033\n}\n\n.ow {\n\tcolor: #000\n}\n\n.w {\n\tcolor: #bbb\n}\n\n.mf {\n\tcolor: #F60\n}\n\n.mh {\n\tcolor: #F60\n}\n\n.mi {\n\tcolor: #F60\n}\n\n.mo {\n\tcolor: #F60\n}\n\n.sb {\n\tcolor: #C30\n}\n\n.sc {\n\tcolor: #C30\n}\n\n.sd {\n\tcolor: #C30;\n\tfont-style: italic\n}\n\n.s2 {\n\tcolor: #C30\n}\n\n.se {\n\tcolor: #C30\n}\n\n.sh {\n\tcolor: #C30\n}\n\n.si {\n\tcolor: #A00\n}\n\n.sx {\n\tcolor: #C30\n}\n\n.sr {\n\tcolor: #3AA\n}\n\n.s1 {\n\tcolor: #C30\n}\n\n.ss {\n\tcolor: #FC3\n}\n\n.bp {\n\tcolor: #366\n}\n\n.vc {\n\tcolor: #033\n}\n\n.vg {\n\tcolor: #033\n}\n\n.vi {\n\tcolor: #033\n}\n\n.il {\n\tcolor: #F60\n}\n\n.css .o,.css .o+.nt,.css .nt+.nt {\n\tcolor: #999\n}\n\n.docs-container{padding-top:50px; padding-bottom:30px;}\n\n@media (min-width: 992px) and (max-width: 1200px){\n\t.navbar-right{display:none;}\n}\n@media (min-width:768px) and (max-width: 992px){\n\t.navbar-right{display:none;}\n\t.nav>li>a{padding-left:7px; padding-right:8px;}\n}\n.navbar-collapse{max-height:600px;}\n\n@media (max-width: 768px) {\n\t.navbar-nav{float:left; margin:0;}\t\n\t.navbar-nav>li{float:left;}\n\t.bs-example{margin:0; margin-bottom:15px; border-width:1px; -webkit-box-shadow:none; -moz-box-shadow:none; box-shadow:none; border-color:#ddd; -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px;}\n}\n@media (min-width: 768px) and (max-width: 1200px){\n\t.container{width:970px;}\t\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/css/extend.css",
    "content": "/*\n *通用组件\n *更新时间:2014-5-7\n*/\n\n/*横向导航*/\nbody{font-family:\"Microsoft Yahei\";}\n.nav-wrap-theme1 header.navbar{position:relative; border-bottom:3px solid #3498db; z-index:1; clear:both; border-radius:0;}\n.header{position:relative; height:80px; padding:0;}\n.header .logo{margin-top:17px;}\n.header .logo a{color:#438bca; font-size:34px;}\n.header .logo a:hover{text-decoration:none;}\n.navigation{float:right; padding:0; margin:0; list-style:none; height:80px; position:relative; z-index:10;}\n.navigation > li{float:left; position:relative;}\n.navigation > li > a{color:#898989; font-size:14px; text-decoration:none; height:80px; line-height:80px; display:inline-block; position:relative; padding:0 15px;}\n.navigation > li > a:hover,\n.navigation > li > a.active{background:#3498db; color:#fff;}\n\n.nav-wrap-theme2 .navbar{border:0; border-radius:0;}\n.nav-wrap-theme2 .navbar .container{height:75px; width:100%;}\n.nav-wrap-theme2 .navbar .navbar-brand{display:block; height:initial; padding:15px 15px 0;}\n.nav-wrap-theme2 .navbar .navbar-brand img{height:45px;}\n.nav-wrap-theme2 .navbar-nav>li{vertical-align:top; padding:0; list-style:none;}\n.nav-wrap-theme2 .navbar-nav>li>a{display:block;}\n.nav-wrap-theme2 .navbar .navbar-nav > li > a{padding:0; text-decoration:none;}\n.nav-wrap-theme2 .navbar li a{font-size:12px; -ms-filter:\"Progid:DXImageTransform.Microsoft.Alpha(Opacity=70)\"; filter:alpha(opacity=70); -moz-opacity:.7; -khtml-opacity:.7; opacity:.7;}\n.nav-wrap-theme2 .navbar li a:hover{color:#fff; -ms-filter:\"Progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\"; filter:alpha(opacity=100); -moz-opacity:1; -khtml-opacity:1; opacity:1;}\n[class^=\"nav-icon-\"], [class*=\" nav-icon-\"]{display:inline-block; width:14px; height:14px; margin-top:1px; line-height:14px; vertical-align:text-top; line-height:14px; vertical-align:text-top;}\n.nav-wrap-theme2 .navbar #primary-nav{padding:0; margin-top:20px; margin-left:10px; margin-right:10px;}\n.nav-wrap-theme2 .navbar #primary-nav > li > a{text-align:center;  width:68px;}\n.nav-wrap-theme2 .navbar #primary-nav > li > a > i{display:block; font-size:22px;}\n.nav-wrap-theme2 .navbar #primary-nav > li > a > span{display:block;}\n.nav-wrap-theme2 .navbar #secondary-nav{padding:0; margin-top:26px;}\n.nav-wrap-theme2 .navbar #secondary-nav > li{margin-right:10px;}\n.nav-wrap-theme2 .navbar #secondary-nav > li > a{display:block; vertical-align:top;}\n.nav-wrap-theme2 .navbar #secondary-nav > li > a > i{margin-right:4px; font-size:16px; color:#fff;}\n\n#main-navbar .navbar-inner{min-height:40px; background:#418ce4; background-image:-webkit-gradient(linear,0 0,0 100%,from(#52aded),to(#418ce4)); background-image:-webkit-line-gradient(top,#52aded,#418ce4); background-image:-o-linear-gradient(top,#52aded,#418ce4); background-image:linear-gradient(to bottom,#52aded,#418ce4); background-repeat:repeat-x; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52aded',endColorstr='#ff418ce4',GradientType=0); border-bottom:1px solid #185aa7; -webkit-box-shadow:rgba(255,255,255,.25) 0 1px 0 inset; -moz-box-shadow:rgba(255,255,255,.25) 0 1px 0 inset; box-shadow:rgba(255,255,255,.25) 0 1px 0 inset;}\n#main-navbar .logo{display:block; float:left; margin:6px 15px 0 0; filter:alpha(opacity=100); opacity:1; -webkit-transition:opacity .2s; -moz-transition:opacity .2s; -o-transition:opacity .2s; transition:opacity .2s; font-size:20px; color:#fff; text-decoration:none;}\n#main-navbar .logo:hover{filter:alpha(opacity=70); opacity:.7; text-decoration:none;}\n#main-navbar .nav{position:relative; left:0; display:block; float:left; margin-right:10px;}\n#main-navbar .nav>li,\n#main-navbar .messages>li{display:inline-block; float:left;}\n#main-navbar .nav>li>a{font-size:12px; font-weight:600;}\n#main-navbar .nav>li>a,\n#main-navbar .messages>li>a{display:block; color:#fff; height:40px; line-height:40px; padding:0 15px; text-decoration:none;}\n#main-navbar .messages>li>a{padding:0 12px 0 0;}\n#main-navbar .nav>li>a:hover,\n#main-navbar .messages>li>a:hover{background:none; filter:alpha(opacity=70); opacity:.7;}\n#main-navbar .nav>li.active>a,\n#main-navbar .messages>li.active>a,\n#main-navbar .nav>li.open>a,\n#main-navbar .message>li.open>a,\n#main-navbar .nav>li.open>a:hover,\n#main-navbar .message>li.open>a:hover{background:rgba(0,0,0,.15); -webkit-box-shadow:rgba(0,0,0,.1) 0 1px 5px inset; -moz-box-shadow:rgba(0,0,0,.1) 0 1px 5px inset; box-shadow:rgba(0,0,0,.1) 0 1px 5px inset; opacity:1; filter:alpha(opacity=100); -webkit-transition:opacity 0s; -moz-transition:opacity 0s; -o-transition:opacity 0s; transition:opacity 0s;}\n.dropdown-menu li>a:hover{border:0; color:#fff; background:#3690e6; filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}\n.navbar .nav>li>.dropdown-menu:before{content:''; display:inline-block; border-left:7px solid transparent; border-right:7px solid transparent; border-bottom:7px solid #ccc; border-bottom-color:#c0c0c0; position:absolute; top:-7px; left:9px;}\n.navbar .nav>li>.dropdown-menu::after{content:''; display:inline-block; border-left:6px solid transparent; border-right:6px solid transparent; border-bottom:6px solid #fff; position:absolute; top:-6px; left:10px;}\n.navbar .pull-right>li>.dropdown-menu:before,\n.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto; right:12px;}\n.navbar .pull-right>li>.dropdown-menu:after,\n.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto; right:13px;}\n.navbar .divider-vertical{height:40px; border-right:1px solid #fff;}\n#main-navbar .separator,\n#main-navbar .divider-vertical{background:0; border:0; margin:0; background-color:rgba(255,255,255,.15); border-left:1px solid rgba(0,0,0,.2); width:2px;}\n.navbar-search{position:relative; margin-top:5px;}\n#main-navbar .navbar-search input{outline:0; border:0; height:26px; line-height:26px; margin-top:2px; padding:0 10px; background:rgba(255,255,255,.5); color:#0b2a4e;}\n#main-navbar .navbar-search input:focus{background:#fff;}\n.navbar-search .search-query{font-size:13px; font-weight:normal; -webkit-border-radius:15px; -moz-border-radius:15px; border-radius:15px;}\n#main-navbar .messages{list-style:none;}\n#main-navbar .messages i{margin-right:4px;}\n#main-navbar .separator{height:16px; margin-top:12px;}\n#main-navbar .nav>li>a.usermenu>img{display:inline-block; margin-top:9px; height:23px; vertical-align:top; width:23px; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px;}\n\n/*横向导航四*/\n.mod-nav{position:fixed; top:0; left:0; width:100%; height:80px; background:#3c404d; z-index:999;}\n.mod-nav .inner{position:relative; width:1000px; height:80px; margin:0 auto;}\n.mod-nav .inner ul{display:inline-block; overflow:hidden; height:80px; list-style:none;}\n.mod-nav .inner li{float:left; position:relative; display:inline-block; width:140px; height:80px;}\n.mod-nav .inner li.nav-on,\n.mod-nav .inner li:hover{background:-moz-linear-gradient(top,#343846 0,#181B23 100%); background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#343846),color-stop(100%,#181B23)); background:-webkit-linear-gradient(top,#343846 0,#181B23 100%); background:-o-linear-gradient(top,#343846 0,#181B23 100%); background:-ms-linear-gradient(top,#343846 0,#181B23 100%); background:linear-gradient(top,#343846 0,#181B23 100%); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#343846', endColorstr='#181B23',GradientType=0); -ms-filter:\"progid:DXImageTransform.Microsoft.gradient(startColorStr='#343846', EndColorStr='#181B23')\";}\n.mod-nav .nav-item a{display:inline-block; width:140px; line-height:80px; text-align:center; font-size:16px; color:#fff; text-decoration:none;}\n.mod-nav .nav-item a:hover{text-decoration:none;}\n.mod-nav .inner li.nav-on a,\n.mod-nav .inner li:hover a{color:#9edb48;}\n.mod-nav .nav-item i{position:relative; top:3px; display:inline-block; margin-right:4px; width:18px; height:18px; overflow:hidden; background:url(../../sample/navs/images/open_platform_v3_wiki_new.png) no-repeat;}\n.mod-nav .nav-item i.ico-n-app{background-position:-227px -139px;}\n.mod-nav .nav-item i.ico-n-www{background-position:-246px -139px;}\n.mod-nav .nav-item i.ico-n-home{background-position:-208px -139px;}\n.mod-nav li.nav-on i.icon-n-app,\n.mod-nav li:hover i.ico-n-app{background-position:-519px 0;}\n.mod-nav li.nav-on i.icon-n-www,\n.mod-nav li:hover i.ico-n-www{background-position:-519px -19px;}\n.mod-nav li.nav-on i.ico-n-home,\n.mod-nav li:hover i.ico-n-home{background-position:-500px -19px;}\n\n/*纵向菜单*/\n/*纵向导航一*/\n#sidebar{position:relative; top:0; left:0; width:100%; background:#e5e8eb; height:100%; overflow:hidden;}\n#sidebar .navbar{border-radius:0; background:transparent; border:none; padding-top:20%;}\n#sidebar .navbar-header,\n#sidebar .navbar-nav,\n#sidebar .navbar-nav li{float:none; margin-left:-10px;}\n#sidebar .navbar-brand{padding-top:10px; padding-bottom:20%; padding-left:30px; color:#777; font-size:28px;}\n#sidebar .navbar-collapse{padding-left:20px;}\n#sidebar .navbar-nav{margin:7.5px -15px;}\n#sidebar .navbar-default .navbar-nav>.active>a,\n.navbar-default .navbar-nav>.active>a:hover,\n.navbar-default .navbar-nav>.active>a:focus{color:#3498db; background:none;}\n#sidebar .navbar-default .navbar-nav>li>a{font-size:13px; font-weight:300; letter-spacing:1.5px; padding-left:30px;}\n#sidebar .navbar-default .navbar-nav>li>a:hover{background:rgba(38,41,46,.2);}\n\n/*纵向导航二*/\n.sidebar{width:100%;/*float: left;*/ display:block;\tbackground:#111; color:#eee; position:relative;}\n.sidebar .navbar-header{float:none; border-bottom:1px solid #222;}\n.sidebar .navbar-header a{color:#fff; font-weight:400;}\n.sidebar ul{padding:0; margin:0; list-style-type:none;}\n.sidebar ul li{list-style-type:none;}\n.sidebar .sidebar-inner{display:block; width:100%; margin:0 auto; position:relative; z-index:60; background:#111;}\n.sidebar .navi li i{margin-right:5px;}\n.sidebar .navi li span i{margin:0px;}\n.sidebar .navi > li > a{display:block; padding:12px 20px; font-size:15px; line-height:25px; color:#fff; text-decoration:none; border-bottom:1px solid #222; background-color:#111;}\n.sidebar .navi > li > a:hover, .sidebar .navi > li.open > a{border-bottom:1px solid #222; background-color:#222; color:#fff;}\n.sidebar .navi li ul{display:none; background:#181818;}\n.sidebar .navi li.open ul{display:block;}\n.sidebar .navi li ul li a{display:block; background:none; padding:10px 0px; padding-left:42px; text-decoration:none; color:#999; border-bottom:1px solid #222;}\n.sidebar .navi li ul li.active a{background:#050505; border-bottom:1px solid #222;}\n.sidebar .navi li ul li.active a:hover{background:#050505;}\n.sidebar .navi li ul li a:hover{background:#131313; border-bottom:1px solid #222;}\n\n/* Sidebar colors */\n.sidebar .navi > li.nlightblue > a:hover, \n.sidebar .navi > li.open.nlightblue > a, \n.sidebar .navi > li.current.nlightblue > a{background:#52b9e9 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.nblue > a:hover, \n.sidebar .navi > li.open.nblue > a,\n.sidebar .navi > li.current.nblue > a{background:#1171a3 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.ngreen > a:hover, \n.sidebar .navi > li.open.ngreen > a,\n.sidebar .navi > li.current.ngreen > a{background:#43c83c !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.norange > a:hover, \n.sidebar .navi > li.open.norange > a,\n.sidebar .navi > li.current.norange > a{background:#f88529 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.nred > a:hover, \n.sidebar .navi > li.open.nred > a,\n.sidebar .navi > li.current.nred > a{background:#fa3031 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .navi > li.nviolet > a:hover, \n.sidebar .navi > li.open.nviolet > a,\n.sidebar .navi > li.current.nviolet > a{background:#932ab6 !important; -webkit-transition:background 0.5s ease; -moz-transition:background 0.5s ease; -o-transition:background 0.5s ease; transition:background 0.5s ease;}\n\n.sidebar .sidebar-search{padding:15px 5px;}\n.sidebar .sidebar-search form{margin:10px;}\n.sidebar .sidebar-search .form-control{border:0; border-radius:0;}\n.sidebar .sidebar-search .form-control:focus{border-color:#ccc; outline:0;}\n\n/*纵向导航三*/\n#sidebar-wrapper{background:#61b0e9;}\n#sidebar-wrapper .sidebar-header{height:50px; background:#3a4450;}\n#sidebar-wrapper .sidebar-header .navbar-brand{color:#fff;}\n/* Sidebar Mini-Search */\n.search-mini-wrapper{width:100%; height:50px; background:#61b0e9; overflow:hidden;}\n.search-mini{position:relative; margin:10px 0 10px 0;}\n.search-mini input{border:0; margin:0 8px; padding:5px 6px; width:192px; line-height:20px; background:#3a4450; color:#ffffff; vertical-align:middle;}\n.search-mini button{position:absolute; width:36px; height:30px; padding:0; border:0; margin:0; background:#3a4450; color:#ffffff; top:0; right:10px; font-size:18px;}\n.sidebar-menu a:hover{text-decoration:none;}\n.sidebar-menu li > a,\n.sidebar-menu li > div > a{position:relative;}\n.sidebar-menu,\n.sidebar-menu ul,\n.sidebar-menu li{position:relative; list-style:none; padding:0; margin:0; min-width:134px;}\n.sidebar-menu > li,\n.sidebar-menu > li > div{width:100%;}\n.sidebar-menu li > a{white-space:nowrap;}\n.sidebar-menu li > div > a > i + span{position:relative; top:-4px;}\n.sidebar-menu li > div > a > span{position:relative; top:6px;}\n.sidebar-menu > li > div{position:relative; background:#61b0e9;}\n.sidebar-menu > li > div > a{display:block; padding:10px; color:#ffffff;}\n.sidebar-menu > li > div > a > i{margin-right:10px; font-size:28px; line-height:28px; font-weight:normal;}\n.sidebar-menu > li:hover > div > a,\n.sidebar-menu > li.open > div > a{background:#6bbef6;}\n.sidebar-menu > li.parent > div > ul > li > a > span{margin-left:6px;}\n.sidebar-menu > li.parent > div > a > span:before{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#61b0e9 #61b0e9 #61b0e9 #ffffff; margin-left:4px; margin-right:2px;}\n.sidebar-menu > li.parent:hover > div > a > span:before,\n.sidebar-menu > li.parent.open > div > a > span:before{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#6bbef6 #6bbef6 #6bbef6 #ffffff;}\n.sidebar-menu > li.active > div > a{background:#ffffff; color:#20202f;}\n.sidebar-menu > li.parent.active > div > a > span:before{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#20202f #ffffff #ffffff #ffffff; position:relative; top:1px;}\n.sidebar-menu ul{display:none;}\n.sidebar-menu ul > li > a{display:block; padding:5px;}\n.sidebar-menu > li.parent li.parent > a > span:after{content:\"\"; display:inline-block; width:0px; height:0px; border-width:5px; border-style:solid; border-color:#6bbef6 #6bbef6 #6bbef6 #ffffff; margin-left:8px;}\n.sidebar-menu .active > div > ul{display:block; padding-bottom:10px; background:#fff;}\n.sidebar-menu .active > div > ul > li.active > a{color:#20202f; border-color:#20202f;}\n.sidebar-menu .active > div > ul > li > a{margin-left:64px; color:#61b0e9; border-color:#61b0e9;}\n.sidebar-menu .active > div > ul > li > a:hover,\n.sidebar-menu .active > div > ul > li.active > a{border-left:8px solid; padding-left:7px; margin-left:54px;}\n.sidebar-menu li ul [class^=\"fa-\"],\n.sidebar-menu li ul [class*=\"fa-\"]{display:inline-block; width:18px; text-align:center;}\n/* submenu-right */\n.sidebar-menu > li.parent.inactive.open > div > ul{display:block; position:absolute; top:0 !important; left:100% !important; padding:10px 0; background:#6bbef6; z-index:99;}\n.sidebar-menu > li.parent.inactive.open > div > ul > li > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li > div > a{padding:5px 16px; color:#ffffff;}\n.sidebar-menu > li.parent.inactive.open > div > ul > li:hover > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a:hover{padding-left:8px !important; border-left:8px solid #aedcfb;}\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > div > a,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > a:hover,\n.sidebar-menu > li.parent.inactive.open > div > ul > li.active > div > a:hover{color:#20202f; border-color:#20202f;}\n\n/*数据类表格*/\n.panel-default > .panel-heading{color:#767676; background:#f6f6f6;}\n.table > thead > tr > th,\n.table > tbody > tr > td{color:#767676;}\n\n.table > .k-grid-header > tr > th > a{text-decoration:none; color:#767676;}\n.k-icon{display:inline-block; width:16px; height:16px; overflow:hidden; background-repeat:no-repeat; font-size:0; line-height:0; text-align:center; -ms-high-contrast-adjust:none;}\n.k-grid-header .k-header .k-icon{position:static;}\n.k-grid-header .k-link>.k-icon{vertical-align:text-top;}\n.k-icon{background-image:url('../../kendoui_web_2014_1_318/styles/Metro/sprite.png'); border-color:transparent;}\n.k-icon{opacity:1;}\n.k-i-arrow-s{background-position:0 -32px;}\n\n.widget{border: 1px solid #c9c9c9;border-radius: 3px;margin-top: 10px;margin-bottom: 20px;background: #fafafa;}\n.widget .table *{border-color:#e8e8e8 !important;}\n.widget .table.table-bordered{margin-bottom:0px;border:0px;}\n.widget .table.table-bordered tr th{border-top:0px;border-left:0px;}\n.widget .table.table-bordered tr th:last-child{border-right:0px;}\n.widget .table.table-bordered tr:first-child td{border-top:0px;}\n.widget .table.table-bordered tr:last-child td{border-bottom:0px;}\n.widget .table.table-bordered td{border-right:1px solid #ddd;}\n.widget .table.table-bordered tr td:first-child{border-left:0px;}\n.widget .table.table-bordered td:last-child{border-right:0px;}\n.widget .widget-head,.modal-header{background-color:#f8f8f8;background:-webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f2f2f2)); background:-webkit-linear-gradient(top, #f8f8f8, #f2f2f2); background:-moz-linear-gradient(top, #f8f8f8, #f2f2f2); background:-ms-linear-gradient(top, #f8f8f8, #f2f2f2); background:-o-linear-gradient(top, #f8f8f8, #f2f2f2); background:linear-gradient(top, #f8f8f8, #f2f2f2); border-top-right-radius:3px; border-top-left-radius:3px; text-shadow:0px 1px #fff; border-bottom:1px solid #ccc; border-top:1px solid #fff; color:#666; font-size:13px; font-weight:bold; padding:8px 15px;}\n.widget .widget-head .widget-icons i{font-size:14px; margin:0px 4px;}\n.widget .widget-head .widget-icons a{color:#aaa;}\n.widget .widget-head .widget-icons a:hover{color:#999;}\n.widget.wblack .widget-head .widget-icons i{font-size:14px; margin:0px 4px;}\n.widget .widget-foot, .modal-footer{background-color:#f8f8f8; background:-webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f2f2f2)); background:-webkit-linear-gradient(top, #f8f8f8, #f2f2f2); background:-moz-linear-gradient(top, #f8f8f8, #f2f2f2); background:-ms-linear-gradient(top, #f8f8f8, #f2f2f2); background:-o-linear-gradient(top, #f8f8f8, #f2f2f2); background:linear-gradient(top, #f8f8f8, #f2f2f2); border-bottom-right-radius:3px; border-bottom-left-radius:3px; text-shadow:0px 1px #fff; border-bottom:1px solid #fff; border-top:1px solid #ccc; padding:8px 15px; font-size:12px; color:#555; box-shadow:inset 0px 1px 1px #fff;}\n.pagination li a{color:#777;}\n\n/*数据类表单*/\n/*.row:after{clear:both; content:\".\"; display:block; height:0; line-height:0; font-size:0; visibility:hidden;}\n.row{zoom:1;}*/\nlabel{color:#767676;}\n.form-wrap .btn{-webkit-border-radius:0 !important; -moz-border-radius:0 !important; border-radius:0 !important;}\n.form-control{-webkit-border-radius:0 !important; -moz-border-radius:0 !important; border-radius:0 !important;}\n\n.btn.btn-primary{background-color:#00acec; border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);}\n.blue-background{background-color:#00acec !important;}\n.box{position:relative; margin-bottom:20px;}\n.box .box-header{font-size:21px; font-weight:200; line-height:30px; padding:10px 15px;}\n.box .box-header .title{float:left; color:#fff;}\n.box .box-header .actions{float:right; margin-top:-3px;}\n.box .box-header .actions .btn-link{color:#fff; text-decoration:none; text-shadow:none;}\n.box .box-content{display:block; padding:10px; border:1px solid #ddd; background:#fff; -webkit-box-shadow:0 1px 3px rgba(0,0,0,.055); -moz-box-shadow:0 1px 3px rgba(0,0,0,.055); box-shadow:0 1px 3px rgba(0,0,0,.055);}\n/*表单验证*/\ninput.error, select.error{border:1px solid #b94a48; -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075); -moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075); box-shadow:inset 0 1px 1px rgba(0,0,0,.075);}\nspan.error{display:block; margin-top:5px; color:#b94a48;}\n\n/*新版examples*/\n.examples-container{padding-top:50px; padding-bottom:30px;}\n.examples-container .example-title{ margin:18px 15px 16px; padding-bottom:4px; border-bottom:1px solid #ccc; font-size:20px; line-height:28px;}\n.examples-container ul{list-style:none; padding:0;}\n.examples-container li{float:left; width:370px; margin-left:15px;}\n.examples-container li .thumbnail{margin-bottom:10px;}\n.examples-container li h4{margin-bottom:20px; text-align:center; font-size:14px;}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') { throw new Error('Bootstrap\\'s JavaScript requires jQuery') }\n\n/* ========================================================================\n * Bootstrap: transition.js v3.1.1\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      'WebkitTransition' : 'webkitTransitionEnd',\n      'MozTransition'    : 'transitionend',\n      'OTransition'      : 'oTransitionEnd otransitionend',\n      'transition'       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false, $el = this\n    $(this).one($.support.transition.end, function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.1.1\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.hasClass('alert') ? $this : $this.parent()\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      $parent.trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one($.support.transition.end, removeElement)\n        .emulateTransitionEnd(150) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.alert\n\n  $.fn.alert = function (option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.1.1\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (!data.resetText) $el.data('resetText', $el[val]())\n\n    $el[val](data[state] || this.options[state])\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  var old = $.fn.button\n\n  $.fn.button = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {\n    var $btn = $(e.target)\n    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n    $btn.button('toggle')\n    e.preventDefault()\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.1.1\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      =\n    this.sliding     =\n    this.interval    =\n    this.$active     =\n    this.$items      = null\n\n    this.options.pause == 'hover' && this.$element\n      .on('mouseenter', $.proxy(this.pause, this))\n      .on('mouseleave', $.proxy(this.cycle, this))\n  }\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true\n  }\n\n  Carousel.prototype.cycle =  function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getActiveIndex = function () {\n    this.$active = this.$element.find('.item.active')\n    this.$items  = this.$active.parent().children()\n\n    return this.$items.index(this.$active)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getActiveIndex()\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) })\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || $active[type]()\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var fallback  = type == 'next' ? 'first' : 'last'\n    var that      = this\n\n    if (!$next.length) {\n      if (!this.options.wrap) return\n      $next = this.$element.find('.item')[fallback]()\n    }\n\n    if ($next.hasClass('active')) return this.sliding = false\n\n    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n    this.$element.trigger(e)\n    if (e.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      this.$element.one('slid.bs.carousel', function () {\n        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n        $nextIndicator && $nextIndicator.addClass('active')\n      })\n    }\n\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one($.support.transition.end, function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)\n        })\n        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger('slid.bs.carousel')\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.carousel\n\n  $.fn.carousel = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n    var $this   = $(this), href\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    $target.carousel(options)\n\n    if (slideIndex = $this.attr('data-slide-to')) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  })\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      $carousel.carousel($carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.1.1\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.transitioning = null\n\n    if (this.options.parent) this.$parent = $(this.options.parent)\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n    if (actives && actives.length) {\n      var hasData = actives.data('bs.collapse')\n      if (hasData && hasData.transitioning) return\n      actives.collapse('hide')\n      hasData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')\n      [dimension](0)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')\n        [dimension]('auto')\n      this.transitioning = 0\n      this.$element.trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one($.support.transition.end, $.proxy(complete, this))\n      .emulateTransitionEnd(350)\n      [dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element\n      [dimension](this.$element[dimension]())\n      [0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse')\n      .removeClass('in')\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .trigger('hidden.bs.collapse')\n        .removeClass('collapsing')\n        .addClass('collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one($.support.transition.end, $.proxy(complete, this))\n      .emulateTransitionEnd(350)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.collapse\n\n  $.fn.collapse = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && option == 'show') option = !option\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {\n    var $this   = $(this), href\n    var target  = $this.attr('data-target')\n        || e.preventDefault()\n        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n    var $target = $(target)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n    var parent  = $this.attr('data-parent')\n    var $parent = parent && $(parent)\n\n    if (!data || !data.transitioning) {\n      if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n    }\n\n    $target.collapse(option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.1.1\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=dropdown]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n\n      $this.focus()\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27)/.test(e.keyCode)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive || (isActive && e.keyCode == 27)) {\n      if (e.which == 27) $parent.find(toggle).focus()\n      return $this.click()\n    }\n\n    var desc = ' li:not(.divider):visible a'\n    var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index($items.filter(':focus'))\n\n    if (e.keyCode == 38 && index > 0)                 index--                        // up\n    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).focus()\n  }\n\n  function clearMenus(e) {\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $parent = getParent($(this))\n      var relatedTarget = { relatedTarget: this }\n      if (!$parent.hasClass('open')) return\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n      if (e.isDefaultPrevented()) return\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown = function (option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.1.1\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options   = options\n    this.$element  = $(element)\n    this.$backdrop =\n    this.isShown   = null\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.escape()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(document.body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$element.find('.modal-dialog') // wait for modal to slide in\n          .one($.support.transition.end, function () {\n            that.$element.focus().trigger(e)\n          })\n          .emulateTransitionEnd(300) :\n        that.$element.focus().trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one($.support.transition.end, $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(300) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.focus()\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keyup.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.removeBackdrop()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(document.body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus.call(this.$element[0])\n          : this.hide.call(this)\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one($.support.transition.end, callback)\n          .emulateTransitionEnd(150) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one($.support.transition.end, callback)\n          .emulateTransitionEnd(150) :\n        callback()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.modal\n\n  $.fn.modal = function (option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) //strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target\n      .modal(option, this)\n      .one('hide', function () {\n        $this.is(':visible') && $this.focus()\n      })\n  })\n\n  $(document)\n    .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.1.1\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       =\n    this.options    =\n    this.enabled    =\n    this.timeout    =\n    this.hoverState =\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled  = true\n    this.type     = type\n    this.$element = $(element)\n    this.options  = this.getOptions(options)\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n      var that = this;\n\n      var $tip = this.tip()\n\n      this.setContent()\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var $parent = this.$element.parent()\n\n        var orgPlacement = placement\n        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop\n        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()\n        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left\n\n        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :\n                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :\n                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :\n                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n      this.hoverState = null\n\n      var complete = function() {\n        that.$element.trigger('shown.bs.' + that.type)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one($.support.transition.end, complete)\n          .emulateTransitionEnd(150) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var replace\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      replace = true\n      offset.top = offset.top + height - actualHeight\n    }\n\n    if (/bottom|top/.test(placement)) {\n      var delta = 0\n\n      if (offset.left < 0) {\n        delta       = offset.left * -2\n        offset.left = 0\n\n        $tip.offset(offset)\n\n        actualWidth  = $tip[0].offsetWidth\n        actualHeight = $tip[0].offsetHeight\n      }\n\n      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n    } else {\n      this.replaceArrow(actualHeight - height, actualHeight, 'top')\n    }\n\n    if (replace) $tip.offset(offset)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\n    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function () {\n    var that = this\n    var $tip = this.tip()\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element.trigger('hidden.bs.' + that.type)\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && this.$tip.hasClass('fade') ?\n      $tip\n        .one($.support.transition.end, complete)\n        .emulateTransitionEnd(150) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function () {\n    var el = this.$element[0]\n    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n      width: el.offsetWidth,\n      height: el.offsetHeight\n    }, this.$element.offset())\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.tip = function () {\n    return this.$tip = this.$tip || $(this.options.template)\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')\n  }\n\n  Tooltip.prototype.validate = function () {\n    if (!this.$element[0].parentNode) {\n      this.hide()\n      this.$element = null\n      this.options  = null\n    }\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    clearTimeout(this.timeout)\n    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && option == 'destroy') return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.1.1\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content')[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return this.$arrow = this.$arrow || this.tip().find('.arrow')\n  }\n\n  Popover.prototype.tip = function () {\n    if (!this.$tip) this.$tip = $(this.options.template)\n    return this.$tip\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  var old = $.fn.popover\n\n  $.fn.popover = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && option == 'destroy') return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.1.1\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    var href\n    var process  = $.proxy(this.process, this)\n\n    this.$element       = $(element).is('body') ? $(window) : $(element)\n    this.$body          = $('body')\n    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target\n      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n      || '') + ' .nav li > a'\n    this.offsets        = $([])\n    this.targets        = $([])\n    this.activeTarget   = null\n\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n    this.offsets = $([])\n    this.targets = $([])\n\n    var self     = this\n    var $targets = this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        self.offsets.push(this[0])\n        self.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n    var maxScroll    = scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets.last()[0]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop <= offsets[0]) {\n      return activeTarget != (i = targets[0]) && this.activate(i)\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n        && this.activate( targets[i] )\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n\n    var selector = this.selector +\n        '[data-target=\"' + target + '\"],' +\n        this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      $spy.scrollspy($spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.1.1\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var previous = $ul.find('.active:last a')[0]\n    var e        = $.Event('show.bs.tab', {\n      relatedTarget: previous\n    })\n\n    $this.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.parent('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: previous\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && $active.hasClass('fade')\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n\n      element.addClass('active')\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu')) {\n        element.closest('li.dropdown').addClass('active')\n      }\n\n      callback && callback()\n    }\n\n    transition ?\n      $active\n        .one($.support.transition.end, next)\n        .emulateTransitionEnd(150) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  var old = $.fn.tab\n\n  $.fn.tab = function ( option ) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n    e.preventDefault()\n    $(this).tab('show')\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.1.1\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n    this.$window = $(window)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      =\n    this.unpin        =\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.RESET = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$window.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var scrollHeight = $(document).height()\n    var scrollTop    = this.$window.scrollTop()\n    var position     = this.$element.offset()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n\n    if (this.affixed == 'top') position.top += scrollTop\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :\n                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :\n                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false\n\n    if (this.affixed === affix) return\n    if (this.unpin) this.$element.css('top', '')\n\n    var affixType = 'affix' + (affix ? '-' + affix : '')\n    var e         = $.Event(affixType + '.bs.affix')\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    this.affixed = affix\n    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n    this.$element\n      .removeClass(Affix.RESET)\n      .addClass(affixType)\n      .trigger($.Event(affixType.replace('affix', 'affixed')))\n\n    if (affix == 'bottom') {\n      this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.affix\n\n  $.fn.affix = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop)    data.offset.top    = data.offsetTop\n\n      $spy.affix(data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/bootstrap-3.1.1/js/html5shiv.js",
    "content": "/*\n HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n*/\n(function(l,f){function m(){var a=e.elements;return\"string\"==typeof a?a.split(\" \"):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();\na.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+m().join().replace(/[\\w\\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c(\"'+a+'\")'})+\");return n}\")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement(\"p\");d=d.getElementsByTagName(\"head\")[0]||d.documentElement;c.innerHTML=\"x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>\";\nc=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o=\"_html5shiv\",h=0,n={},g;(function(){try{var a=f.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\";j=\"hidden\"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement(\"a\");var c=f.createDocumentFragment();b=\"undefined\"==typeof c.cloneNode||\n\"undefined\"==typeof c.createDocumentFragment||\"undefined\"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||\"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video\",version:\"3.7.0\",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:\"default\",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);\nif(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery-ui-1.11.0.custom/external/jquery/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.10.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-07-03T13:48Z\n */\n(function( window, undefined ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\"use strict\";\nvar\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// Support: IE<10\n\t// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`\n\tcore_strundefined = typeof undefined,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tlocation = window.location,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {},\n\n\t// List of deleted data cache ids, so we can reuse them\n\tcore_deletedIds = [],\n\n\tcore_version = \"1.10.2\",\n\n\t// Save a reference to some core methods\n\tcore_concat = core_deletedIds.concat,\n\tcore_push = core_deletedIds.push,\n\tcore_slice = core_deletedIds.slice,\n\tcore_indexOf = core_deletedIds.indexOf,\n\tcore_toString = class2type.toString,\n\tcore_hasOwn = class2type.hasOwnProperty,\n\tcore_trim = core_version.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n\n\t// Used for splitting on whitespace\n\tcore_rnotwhite = /\\S+/g,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t},\n\n\t// The ready event handler\n\tcompleted = function( event ) {\n\n\t\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\t\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\t\tdetach();\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\t// Clean-up method for dom ready events\n\tdetach = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t\t} else {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\t\twindow.detachEvent( \"onload\", completed );\n\t\t}\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: core_version,\n\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( core_version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn String( obj );\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( jQuery.support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn core_hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// keepScripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, keepScripts ) {\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tkeepScripts = context;\n\t\t\tcontext = false;\n\t\t}\n\t\tcontext = context || document;\n\n\t\tvar parsed = rsingleTag.exec( data ),\n\t\t\tscripts = !keepScripts && [];\n\n\t\t// Single tag\n\t\tif ( parsed ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\t\tif ( scripts ) {\n\t\t\tjQuery( scripts ).remove();\n\t\t}\n\t\treturn jQuery.merge( [], parsed.childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\tif ( data === null ) {\n\t\t\treturn data;\n\t\t}\n\n\t\tif ( typeof data === \"string\" ) {\n\n\t\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\t\tdata = jQuery.trim( data );\n\n\t\t\tif ( data ) {\n\t\t\t\t// Make sure the incoming data is actual JSON\n\t\t\t\t// Logic borrowed from http://json.org/json2.js\n\t\t\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\t\t\treturn ( new Function( \"return \" + data ) )();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn core_concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\t\tvar i = 0,\n\t\t\tlength = elems.length,\n\t\t\tbulk = key == null;\n\n\t\t// Sets many values\n\t\tif ( jQuery.type( key ) === \"object\" ) {\n\t\t\tchainable = true;\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t\t}\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\tchainable = true;\n\n\t\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\t\traw = true;\n\t\t\t}\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations run against the entire set\n\t\t\t\tif ( raw ) {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\n\t\t\t\t// ...except when executing function values\n\t\t\t\t} else {\n\t\t\t\t\tbulk = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations.\n\t// Note: this method belongs to the css module but it's needed here for the support module.\n\t// If support gets modularized, this method should be moved back to the css module.\n\tswap: function( elem, options, callback, args ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.apply( elem, args || [] );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || type !== \"function\" &&\n\t\t( length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj );\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n/*!\n * Sizzle CSS Selector Engine v1.10.2\n * http://sizzlejs.com/\n *\n * Copyright 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2013-07-03\n */\n(function( window, undefined ) {\n\nvar i,\n\tsupport,\n\tcachedruns,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcompile,\n\toutermostContext,\n\tsortInput,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + -(new Date()),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\thasDuplicate = false,\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tstrundefined = typeof undefined,\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf if we can't use a native one\n\tindexOf = arr.indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:([*^$|!~]?=)\" + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments quoted,\n\t//   then not containing pseudos/brackets,\n\t//   then attribute selectors/non-parenthetical expressions,\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes.replace( 3, 8 ) + \")*)|.*)\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trsibling = new RegExp( whitespace + \"*[+~]\" ),\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\t// BMP codepoint\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( documentIsHTML && !seed ) {\n\n\t\t// Shortcuts\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType === 9 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key += \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect xml\n * @param {Element|Object} elem An element or a document\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar doc = node ? node.ownerDocument || node : preferredDoc,\n\t\tparent = doc.defaultView;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\n\t// Support tests\n\tdocumentIsHTML = !isXML( doc );\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent.attachEvent && parent !== parent.top ) {\n\t\tparent.attachEvent( \"onbeforeunload\", function() {\n\t\t\tsetDocument();\n\t\t});\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Check if getElementsByClassName can be trusted\n\tsupport.getElementsByClassName = assert(function( div ) {\n\t\tdiv.innerHTML = \"<div class='a'></div><div class='a i'></div>\";\n\n\t\t// Support: Safari<4\n\t\t// Catch class over-caching\n\t\tdiv.firstChild.className = \"i\";\n\t\t// Support: Opera<10\n\t\t// Catch gEBCN failure to find non-leading classes\n\t\treturn div.getElementsByClassName(\"i\").length === 2;\n\t});\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== strundefined && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t}\n\t\t} :\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Support: Opera 10-12/IE8\n\t\t\t// ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type attribute is restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"t\", \"\" );\n\n\t\t\tif ( div.querySelectorAll(\"[t^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );\n\n\t\tif ( compare ) {\n\t\t\t// Disconnected nodes\n\t\t\tif ( compare & 1 ||\n\t\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t\tif ( a === doc || contains(preferredDoc, a) ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif ( b === doc || contains(preferredDoc, b) ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\t// Maintain original order\n\t\t\t\treturn sortInput ?\n\t\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t\t0;\n\t\t\t}\n\n\t\t\treturn compare & 4 ? -1 : 1;\n\t\t}\n\n\t\t// Not directly comparable, sort on existence of method\n\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\t} else if ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch(e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [elem] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val === undefined ?\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull :\n\t\tval;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[5] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] && match[4] !== undefined ) {\n\t\t\t\tmatch[2] = match[4];\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === elem.type );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar data, cache, outerCache,\n\t\t\t\tdirkey = dirruns + \" \" + doneName;\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {\n\t\t\t\t\t\t\tif ( (data = cache[1]) === true || data === cachedruns ) {\n\t\t\t\t\t\t\t\treturn data === true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcache = outerCache[ dir ] = [ dirkey ];\n\t\t\t\t\t\t\tcache[1] = matcher( elem, context, xml ) || cachedruns;\n\t\t\t\t\t\t\tif ( cache[1] === true ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\t// A counter to specify which element is currently being matched\n\tvar matcherCachedRuns = 0,\n\t\tbySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = matcherCachedRuns;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++matcherCachedRuns;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector );\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome<14\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn (val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\telem[ name ] === true ? name.toLowerCase() : null;\n\t\t}\n\t});\n}\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function( support ) {\n\n\tvar all, a, input, select, fragment, opt, eventName, isSupported, i,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Finish early in limited (non-browser) environments\n\tall = div.getElementsByTagName(\"*\") || [];\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !a || !a.style || !all.length ) {\n\t\treturn support;\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName(\"tbody\").length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName(\"link\").length;\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Make sure that element opacity exists\n\t// (IE uses filter instead)\n\t// Use a regex to work around a WebKit issue. See #5145\n\tsupport.opacity = /^0.5/.test( a.style.opacity );\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!a.style.cssFloat;\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone = document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\";\n\n\t// Will be defined later\n\tsupport.inlineBlockNeedsLayout = false;\n\tsupport.shrinkWrapBlocks = false;\n\tsupport.pixelPosition = false;\n\tsupport.deleteExpando = true;\n\tsupport.noCloneEvent = true;\n\tsupport.reliableMarginRight = true;\n\tsupport.boxSizingReliable = true;\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<9\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement(\"input\");\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"checked\", \"t\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( input );\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)\n\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\tdiv.setAttribute( eventName = \"on\" + i, \"t\" );\n\n\t\tsupport[ i + \"Bubbles\" ] = eventName in window || div.attributes[ eventName ].expando === false;\n\t}\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: IE<9\n\t// Iteration over object's inherited properties before its own.\n\tfor ( i in jQuery( support ) ) {\n\t\tbreak;\n\t}\n\tsupport.ownLast = i !== \"0\";\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, marginDiv, tds,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\";\n\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Support: IE8\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior.\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\n\t\t// Workaround failing boxSizing test due to offsetWidth returning wrong value\n\t\t// with some non-1 values of body zoom, ticket #13543\n\t\tjQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {\n\t\t\tsupport.boxSizing = div.offsetWidth === 4;\n\t\t});\n\n\t\t// Use window.getComputedStyle because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = div.appendChild( document.createElement(\"div\") );\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== core_strundefined ) {\n\t\t\t// Support: IE<8\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Support: IE6\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tif ( support.inlineBlockNeedsLayout ) {\n\t\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t\t// Support: IE<8\n\t\t\t\tbody.style.zoom = 1;\n\t\t\t}\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\t// Null elements to avoid leaks in IE\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tall = select = fragment = opt = a = input = null;\n\n\treturn support;\n})({});\n\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ){\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"applet\": true,\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\t// Do not set data on non-element because it will not be cleared (#8335).\n\t\tif ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar attrs, name,\n\t\t\tdata = null,\n\t\t\ti = 0,\n\t\t\telem = this[0];\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattrs = elem.attributes;\n\t\t\t\t\tfor ( ; i < attrs.length; i++ ) {\n\t\t\t\t\t\tname = attrs[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf(\"data-\") === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook,\n\trclass = /[\\t\\r\\n\\f]/g,\n\trreturn = /\\r/g,\n\trfocusable = /^(?:input|select|textarea|button|object)$/i,\n\trclickable = /^(?:a|area)$/i,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tgetSetInput = jQuery.support.input;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = jQuery.trim( cur );\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( core_rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( core_rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === core_strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed \"false\",\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar ret, hooks, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Use proper attribute retrieval(#6932, #12072)\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\telem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === core_strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( core_rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;\n\n\tjQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar fn = jQuery.expr.attrHandle[ name ],\n\t\t\t\tret = isXML ?\n\t\t\t\t\tundefined :\n\t\t\t\t\t/* jshint eqeqeq: false */\n\t\t\t\t\t(jQuery.expr.attrHandle[ name ] = undefined) !=\n\t\t\t\t\t\tgetter( elem, name, isXML ) ?\n\n\t\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\t\tnull;\n\t\t\tjQuery.expr.attrHandle[ name ] = fn;\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\treturn name === \"value\" || value === elem.getAttribute( name ) ?\n\t\t\t\tvalue :\n\t\t\t\tundefined;\n\t\t}\n\t};\n\tjQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =\n\t\t// Some attributes are constructed with empty-string values when not defined\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\treturn isXML ?\n\t\t\t\tundefined :\n\t\t\t\t(ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t};\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\treturn ret && ret.specified ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !jQuery.support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !jQuery.support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( core_rnotwhite ) || [\"\"];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = core_hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = core_hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = core_slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Even when returnValue equals to undefined Firefox will still show alert\n\t\t\t\tif ( event.result !== undefined ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === core_strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\nvar isSimple = /^.[^:#\\[\\.,]*$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tcur = ret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( jQuery.unique(all) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tvar elem = elems[ 0 ];\n\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}));\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\tmanipulation_rcheckableType = /^(?:checkbox|radio)$/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\tparam: [ 1, \"<object>\", \"</object>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: jQuery.support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X<div>\", \"</div>\"  ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar\n\t\t\t// Snapshot the DOM in case .domManip sweeps something relevant into its fragment\n\t\t\targs = jQuery.map( this, function( elem ) {\n\t\t\t\treturn [ elem.nextSibling, elem.parentNode ];\n\t\t\t}),\n\t\t\ti = 0;\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\tvar next = args[ i++ ],\n\t\t\t\tparent = args[ i++ ];\n\n\t\t\tif ( parent ) {\n\t\t\t\t// Don't use the snapshot next if it has moved (#13810)\n\t\t\t\tif ( next && next.parentNode !== parent ) {\n\t\t\t\t\tnext = this.nextSibling;\n\t\t\t\t}\n\t\t\t\tjQuery( this ).remove();\n\t\t\t\tparent.insertBefore( elem, next );\n\t\t\t}\n\t\t// Allow new content to include elements from the context set\n\t\t}, true );\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn i ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback, allowIntersection ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = core_concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction || !( l <= 1 || typeof value !== \"string\" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback, allowIntersection );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Hope ajax is available...\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && manipulation_rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tcore_push.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( manipulation_rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== core_strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcore_deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_evalUrl: function( url ) {\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"script\",\n\t\t\tasync: false,\n\t\t\tglobal: false,\n\t\t\t\"throws\": true\n\t\t});\n\t}\n});\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\nvar iframe, getStyles, curCSS,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\t// isHidden might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\n\t\t\tif ( !values[ index ] ) {\n\t\t\t\thidden = isHidden( elem );\n\n\t\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\tvar len, styles,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n\t\t\tif ( !jQuery.support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\n// NOTE: we've included the \"window\" in window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar width, minWidth, maxWidth,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, _computed ) {\n\t\tvar left, rs, rsLeft,\n\t\t\tcomputed = _computed || getStyles( elem ),\n\t\t\tret = computed ? computed[ name ] : undefined,\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe ||\n\t\t\t\tjQuery(\"<iframe frameborder='0' width='0' height='0'/>\")\n\t\t\t\t.css( \"cssText\", \"display:block !important\" )\n\t\t\t).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;\n\t\t\tdoc.write(\"<!doctype html><html><body>\");\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n// Called ONLY from within css_defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\t\tdisplay = jQuery.css( elem[0], \"display\" );\n\telem.remove();\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, \"display\" ) ) ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === \"\", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === \"\" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === \"\" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\t\t\tcomputed;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\t// Support: Opera <= 12.12\n\t\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\t\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t\t(!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\tvar type = this.type;\n\t\t\t// Use .is(\":disabled\") so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !manipulation_rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\tajax_nonce = jQuery.now(),\n\n\tajax_rquery = /\\?/,\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat(\"*\");\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[0] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif( typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar deep, key,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery(\"<div>\").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ){\n\tjQuery.fn[ type ] = function( fn ){\n\t\treturn this.on( type, fn );\n\t};\n});\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( core_rnotwhite ) || [\"\"];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger(\"ajaxStart\");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + ajax_nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( ajax_rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ajax_nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort(\"timeout\");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger(\"ajaxStop\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\tvar firstDataType, ct, finalDataType, type,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ \"throws\" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || jQuery(\"head\")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( ajax_nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( ajax_rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\nvar xhrCallbacks, xhrSupported,\n\txhrId = 0,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject && function() {\n\t\t// Abort all pending requests\n\t\tvar key;\n\t\tfor ( key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t};\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\nxhrSupported = jQuery.ajaxSettings.xhr();\njQuery.support.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nxhrSupported = jQuery.support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( err ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, responseHeaders, statusText, responses;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === \"string\" ) {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// we're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, \"fxshow\" );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9\n// Panic based approach to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || jQuery._data( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = jQuery._data( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) ) {\n\t\tjQuery.fx.start();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, win,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== core_strundefined ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\treturn {\n\t\ttop: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),\n\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t};\n};\n\njQuery.offset = {\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true)\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\") === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Limit scope pollution from any deprecated API\n// (function() {\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// })();\nif ( typeof module === \"object\" && module && typeof module.exports === \"object\" ) {\n\t// Expose jQuery as module.exports in loaders that implement the Node\n\t// module pattern (including browserify). Do not create the global, since\n\t// the user will be storing it themselves locally, and globals are frowned\n\t// upon in the Node module world.\n\tmodule.exports = jQuery;\n} else {\n\t// Otherwise expose jQuery to the global object as usual\n\twindow.jQuery = window.$ = jQuery;\n\n\t// Register as a named AMD module, since jQuery can be concatenated with other\n\t// files that may use define, but not via a proper concatenation script that\n\t// understands anonymous AMD modules. A named AMD is safest and most robust\n\t// way to register. Lowercase jquery is used because AMD module names are\n\t// derived from file names, and jQuery is normally delivered in a lowercase\n\t// file name. Do this after creating the global so that if an AMD module wants\n\t// to call noConflict to hide this version of jQuery, it will work.\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( \"jquery\", [], function () { return jQuery; } );\n\t}\n}\n\n})( window );\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery-ui-1.11.0.custom/index.html",
    "content": "<!doctype html>\n<html lang=\"us\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Example Page</title>\n\t<link href=\"jquery-ui.css\" rel=\"stylesheet\">\n\t<style>\n\tbody{\n\t\tfont: 62.5% \"Trebuchet MS\", sans-serif;\n\t\tmargin: 50px;\n\t}\n\t.demoHeaders {\n\t\tmargin-top: 2em;\n\t}\n\t#dialog-link {\n\t\tpadding: .4em 1em .4em 20px;\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t}\n\t#dialog-link span.ui-icon {\n\t\tmargin: 0 5px 0 0;\n\t\tposition: absolute;\n\t\tleft: .2em;\n\t\ttop: 50%;\n\t\tmargin-top: -8px;\n\t}\n\t#icons {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\t#icons li {\n\t\tmargin: 2px;\n\t\tposition: relative;\n\t\tpadding: 4px 0;\n\t\tcursor: pointer;\n\t\tfloat: left;\n\t\tlist-style: none;\n\t}\n\t#icons span.ui-icon {\n\t\tfloat: left;\n\t\tmargin: 0 4px;\n\t}\n\t.fakewindowcontain .ui-widget-overlay {\n\t\tposition: absolute;\n\t}\n\tselect {\n\t\twidth: 200px;\n\t}\n\t</style>\n</head>\n<body>\n\n<h1>Welcome to jQuery UI!</h1>\n\n<div class=\"ui-widget\">\n\t<p>This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.</p>\n</div>\n\n<h1>YOUR COMPONENTS:</h1>\n\n\n<!-- Accordion -->\n<h2 class=\"demoHeaders\">Accordion</h2>\n<div id=\"accordion\">\n\t<h3>First</h3>\n\t<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>\n\t<h3>Second</h3>\n\t<div>Phasellus mattis tincidunt nibh.</div>\n\t<h3>Third</h3>\n\t<div>Nam dui erat, auctor a, dignissim quis.</div>\n</div>\n\n\n\n<!-- Autocomplete -->\n<h2 class=\"demoHeaders\">Autocomplete</h2>\n<div>\n\t<input id=\"autocomplete\" title=\"type &quot;a&quot;\">\n</div>\n\n\n\n<!-- Button -->\n<h2 class=\"demoHeaders\">Button</h2>\n<button id=\"button\">A button element</button>\n<form style=\"margin-top: 1em;\">\n\t<div id=\"radioset\">\n\t\t<input type=\"radio\" id=\"radio1\" name=\"radio\"><label for=\"radio1\">Choice 1</label>\n\t\t<input type=\"radio\" id=\"radio2\" name=\"radio\" checked=\"checked\"><label for=\"radio2\">Choice 2</label>\n\t\t<input type=\"radio\" id=\"radio3\" name=\"radio\"><label for=\"radio3\">Choice 3</label>\n\t</div>\n</form>\n\n\n\n<!-- Tabs -->\n<h2 class=\"demoHeaders\">Tabs</h2>\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">First</a></li>\n\t\t<li><a href=\"#tabs-2\">Second</a></li>\n\t\t<li><a href=\"#tabs-3\">Third</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>\n\t<div id=\"tabs-2\">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>\n\t<div id=\"tabs-3\">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>\n</div>\n\n\n\n<!-- Dialog NOTE: Dialog is not generated by UI in this demo so it can be visually styled in themeroller-->\n<h2 class=\"demoHeaders\">Dialog</h2>\n<p><a href=\"#\" id=\"dialog-link\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-newwin\"></span>Open Dialog</a></p>\n\n<h2 class=\"demoHeaders\">Overlay and Shadow Classes <em>(not currently used in UI widgets)</em></h2>\n<div style=\"position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;\" class=\"fakewindowcontain\">\n\t<p>Lorem ipsum dolor sit amet,  Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>\n\n\t<!-- ui-dialog -->\n\t<div class=\"ui-overlay\"><div class=\"ui-widget-overlay\"></div><div class=\"ui-widget-shadow ui-corner-all\" style=\"width: 302px; height: 152px; position: absolute; left: 50px; top: 30px;\"></div></div>\n\t<div style=\"position: absolute; width: 280px; height: 130px;left: 50px; top: 30px; padding: 10px;\" class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<div class=\"ui-dialog-content ui-widget-content\" style=\"background: none; border: 0;\">\n\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n\t\t</div>\n\t</div>\n\n</div>\n\n<!-- ui-dialog -->\n<div id=\"dialog\" title=\"Dialog Title\">\n\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n</div>\n\n\n\n<h2 class=\"demoHeaders\">Framework Icons (content color preview)</h2>\n<ul id=\"icons\" class=\"ui-widget ui-helper-clearfix\">\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-n\"><span class=\"ui-icon ui-icon-carat-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-ne\"><span class=\"ui-icon ui-icon-carat-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-e\"><span class=\"ui-icon ui-icon-carat-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-se\"><span class=\"ui-icon ui-icon-carat-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-s\"><span class=\"ui-icon ui-icon-carat-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-sw\"><span class=\"ui-icon ui-icon-carat-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-w\"><span class=\"ui-icon ui-icon-carat-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-nw\"><span class=\"ui-icon ui-icon-carat-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-2-n-s\"><span class=\"ui-icon ui-icon-carat-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-2-e-w\"><span class=\"ui-icon ui-icon-carat-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-n\"><span class=\"ui-icon ui-icon-triangle-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-ne\"><span class=\"ui-icon ui-icon-triangle-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-e\"><span class=\"ui-icon ui-icon-triangle-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-se\"><span class=\"ui-icon ui-icon-triangle-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-s\"><span class=\"ui-icon ui-icon-triangle-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-sw\"><span class=\"ui-icon ui-icon-triangle-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-w\"><span class=\"ui-icon ui-icon-triangle-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-nw\"><span class=\"ui-icon ui-icon-triangle-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-2-n-s\"><span class=\"ui-icon ui-icon-triangle-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-2-e-w\"><span class=\"ui-icon ui-icon-triangle-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-n\"><span class=\"ui-icon ui-icon-arrow-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-ne\"><span class=\"ui-icon ui-icon-arrow-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-e\"><span class=\"ui-icon ui-icon-arrow-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-se\"><span class=\"ui-icon ui-icon-arrow-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-s\"><span class=\"ui-icon ui-icon-arrow-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-sw\"><span class=\"ui-icon ui-icon-arrow-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-w\"><span class=\"ui-icon ui-icon-arrow-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-nw\"><span class=\"ui-icon ui-icon-arrow-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-n-s\"><span class=\"ui-icon ui-icon-arrow-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-ne-sw\"><span class=\"ui-icon ui-icon-arrow-2-ne-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-e-w\"><span class=\"ui-icon ui-icon-arrow-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-se-nw\"><span class=\"ui-icon ui-icon-arrow-2-se-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-n\"><span class=\"ui-icon ui-icon-arrowstop-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-e\"><span class=\"ui-icon ui-icon-arrowstop-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-s\"><span class=\"ui-icon ui-icon-arrowstop-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-w\"><span class=\"ui-icon ui-icon-arrowstop-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-n\"><span class=\"ui-icon ui-icon-arrowthick-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-ne\"><span class=\"ui-icon ui-icon-arrowthick-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-e\"><span class=\"ui-icon ui-icon-arrowthick-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-se\"><span class=\"ui-icon ui-icon-arrowthick-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-s\"><span class=\"ui-icon ui-icon-arrowthick-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-sw\"><span class=\"ui-icon ui-icon-arrowthick-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-w\"><span class=\"ui-icon ui-icon-arrowthick-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-nw\"><span class=\"ui-icon ui-icon-arrowthick-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-n-s\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-ne-sw\"><span class=\"ui-icon ui-icon-arrowthick-2-ne-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-e-w\"><span class=\"ui-icon ui-icon-arrowthick-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-se-nw\"><span class=\"ui-icon ui-icon-arrowthick-2-se-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-n\"><span class=\"ui-icon ui-icon-arrowthickstop-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-e\"><span class=\"ui-icon ui-icon-arrowthickstop-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-s\"><span class=\"ui-icon ui-icon-arrowthickstop-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-w\"><span class=\"ui-icon ui-icon-arrowthickstop-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-w\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-n\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-e\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-s\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-w\"><span class=\"ui-icon ui-icon-arrowreturn-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-n\"><span class=\"ui-icon ui-icon-arrowreturn-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-e\"><span class=\"ui-icon ui-icon-arrowreturn-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-s\"><span class=\"ui-icon ui-icon-arrowreturn-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-w\"><span class=\"ui-icon ui-icon-arrowrefresh-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-n\"><span class=\"ui-icon ui-icon-arrowrefresh-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-e\"><span class=\"ui-icon ui-icon-arrowrefresh-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-s\"><span class=\"ui-icon ui-icon-arrowrefresh-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-4\"><span class=\"ui-icon ui-icon-arrow-4\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-4-diag\"><span class=\"ui-icon ui-icon-arrow-4-diag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-extlink\"><span class=\"ui-icon ui-icon-extlink\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-newwin\"><span class=\"ui-icon ui-icon-newwin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-refresh\"><span class=\"ui-icon ui-icon-refresh\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-shuffle\"><span class=\"ui-icon ui-icon-shuffle\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-transfer-e-w\"><span class=\"ui-icon ui-icon-transfer-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-transferthick-e-w\"><span class=\"ui-icon ui-icon-transferthick-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-folder-collapsed\"><span class=\"ui-icon ui-icon-folder-collapsed\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-folder-open\"><span class=\"ui-icon ui-icon-folder-open\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-document\"><span class=\"ui-icon ui-icon-document\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-document-b\"><span class=\"ui-icon ui-icon-document-b\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-note\"><span class=\"ui-icon ui-icon-note\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-mail-closed\"><span class=\"ui-icon ui-icon-mail-closed\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-mail-open\"><span class=\"ui-icon ui-icon-mail-open\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-suitcase\"><span class=\"ui-icon ui-icon-suitcase\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-comment\"><span class=\"ui-icon ui-icon-comment\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-person\"><span class=\"ui-icon ui-icon-person\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-print\"><span class=\"ui-icon ui-icon-print\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-trash\"><span class=\"ui-icon ui-icon-trash\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-locked\"><span class=\"ui-icon ui-icon-locked\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-unlocked\"><span class=\"ui-icon ui-icon-unlocked\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-bookmark\"><span class=\"ui-icon ui-icon-bookmark\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-tag\"><span class=\"ui-icon ui-icon-tag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-home\"><span class=\"ui-icon ui-icon-home\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-flag\"><span class=\"ui-icon ui-icon-flag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-calculator\"><span class=\"ui-icon ui-icon-calculator\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-cart\"><span class=\"ui-icon ui-icon-cart\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pencil\"><span class=\"ui-icon ui-icon-pencil\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-clock\"><span class=\"ui-icon ui-icon-clock\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-disk\"><span class=\"ui-icon ui-icon-disk\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-calendar\"><span class=\"ui-icon ui-icon-calendar\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-zoomin\"><span class=\"ui-icon ui-icon-zoomin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-zoomout\"><span class=\"ui-icon ui-icon-zoomout\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-search\"><span class=\"ui-icon ui-icon-search\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-wrench\"><span class=\"ui-icon ui-icon-wrench\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-gear\"><span class=\"ui-icon ui-icon-gear\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-heart\"><span class=\"ui-icon ui-icon-heart\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-star\"><span class=\"ui-icon ui-icon-star\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-link\"><span class=\"ui-icon ui-icon-link\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-cancel\"><span class=\"ui-icon ui-icon-cancel\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-plus\"><span class=\"ui-icon ui-icon-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-plusthick\"><span class=\"ui-icon ui-icon-plusthick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-minus\"><span class=\"ui-icon ui-icon-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-minusthick\"><span class=\"ui-icon ui-icon-minusthick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-close\"><span class=\"ui-icon ui-icon-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-closethick\"><span class=\"ui-icon ui-icon-closethick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-key\"><span class=\"ui-icon ui-icon-key\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-lightbulb\"><span class=\"ui-icon ui-icon-lightbulb\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-scissors\"><span class=\"ui-icon ui-icon-scissors\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-clipboard\"><span class=\"ui-icon ui-icon-clipboard\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-copy\"><span class=\"ui-icon ui-icon-copy\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-contact\"><span class=\"ui-icon ui-icon-contact\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-image\"><span class=\"ui-icon ui-icon-image\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-video\"><span class=\"ui-icon ui-icon-video\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-script\"><span class=\"ui-icon ui-icon-script\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-alert\"><span class=\"ui-icon ui-icon-alert\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-info\"><span class=\"ui-icon ui-icon-info\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-notice\"><span class=\"ui-icon ui-icon-notice\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-help\"><span class=\"ui-icon ui-icon-help\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-check\"><span class=\"ui-icon ui-icon-check\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-bullet\"><span class=\"ui-icon ui-icon-bullet\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-radio-off\"><span class=\"ui-icon ui-icon-radio-off\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-radio-on\"><span class=\"ui-icon ui-icon-radio-on\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pin-w\"><span class=\"ui-icon ui-icon-pin-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pin-s\"><span class=\"ui-icon ui-icon-pin-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-play\"><span class=\"ui-icon ui-icon-play\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pause\"><span class=\"ui-icon ui-icon-pause\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-next\"><span class=\"ui-icon ui-icon-seek-next\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-prev\"><span class=\"ui-icon ui-icon-seek-prev\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-end\"><span class=\"ui-icon ui-icon-seek-end\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-first\"><span class=\"ui-icon ui-icon-seek-first\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-stop\"><span class=\"ui-icon ui-icon-stop\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-eject\"><span class=\"ui-icon ui-icon-eject\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-volume-off\"><span class=\"ui-icon ui-icon-volume-off\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-volume-on\"><span class=\"ui-icon ui-icon-volume-on\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-power\"><span class=\"ui-icon ui-icon-power\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-signal-diag\"><span class=\"ui-icon ui-icon-signal-diag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-signal\"><span class=\"ui-icon ui-icon-signal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-0\"><span class=\"ui-icon ui-icon-battery-0\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-1\"><span class=\"ui-icon ui-icon-battery-1\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-2\"><span class=\"ui-icon ui-icon-battery-2\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-3\"><span class=\"ui-icon ui-icon-battery-3\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-plus\"><span class=\"ui-icon ui-icon-circle-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-minus\"><span class=\"ui-icon ui-icon-circle-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-close\"><span class=\"ui-icon ui-icon-circle-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-e\"><span class=\"ui-icon ui-icon-circle-triangle-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-s\"><span class=\"ui-icon ui-icon-circle-triangle-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-w\"><span class=\"ui-icon ui-icon-circle-triangle-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-n\"><span class=\"ui-icon ui-icon-circle-triangle-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-e\"><span class=\"ui-icon ui-icon-circle-arrow-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-s\"><span class=\"ui-icon ui-icon-circle-arrow-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-w\"><span class=\"ui-icon ui-icon-circle-arrow-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-n\"><span class=\"ui-icon ui-icon-circle-arrow-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-zoomin\"><span class=\"ui-icon ui-icon-circle-zoomin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-zoomout\"><span class=\"ui-icon ui-icon-circle-zoomout\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-check\"><span class=\"ui-icon ui-icon-circle-check\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-plus\"><span class=\"ui-icon ui-icon-circlesmall-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-minus\"><span class=\"ui-icon ui-icon-circlesmall-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-close\"><span class=\"ui-icon ui-icon-circlesmall-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-plus\"><span class=\"ui-icon ui-icon-squaresmall-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-minus\"><span class=\"ui-icon ui-icon-squaresmall-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-close\"><span class=\"ui-icon ui-icon-squaresmall-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-dotted-vertical\"><span class=\"ui-icon ui-icon-grip-dotted-vertical\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-dotted-horizontal\"><span class=\"ui-icon ui-icon-grip-dotted-horizontal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-solid-vertical\"><span class=\"ui-icon ui-icon-grip-solid-vertical\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-solid-horizontal\"><span class=\"ui-icon ui-icon-grip-solid-horizontal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-gripsmall-diagonal-se\"><span class=\"ui-icon ui-icon-gripsmall-diagonal-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-diagonal-se\"><span class=\"ui-icon ui-icon-grip-diagonal-se\"></span></li>\n</ul>\n\n\n<!-- Slider -->\n<h2 class=\"demoHeaders\">Slider</h2>\n<div id=\"slider\"></div>\n\n\n\n<!-- Datepicker -->\n<h2 class=\"demoHeaders\">Datepicker</h2>\n<div id=\"datepicker\"></div>\n\n\n\n<!-- Progressbar -->\n<h2 class=\"demoHeaders\">Progressbar</h2>\n<div id=\"progressbar\"></div>\n\n\n\n<!-- Progressbar -->\n<h2 class=\"demoHeaders\">Selectmenu</h2>\n<select id=\"selectmenu\">\n\t<option>Slower</option>\n\t<option>Slow</option>\n\t<option selected=\"selected\">Medium</option>\n\t<option>Fast</option>\n\t<option>Faster</option>\n</select>\n\n\n\n<!-- Spinner -->\n<h2 class=\"demoHeaders\">Spinner</h2>\n<input id=\"spinner\">\n\n\n\n<!-- Menu -->\n<h2 class=\"demoHeaders\">Menu</h2>\n<ul style=\"width:100px;\" id=\"menu\">\n\t<li>Item 1</li>\n\t<li>Item 2</li>\n\t<li>Item 3\n\t\t<ul>\n\t\t\t<li>Item 3-1</li>\n\t\t\t<li>Item 3-2</li>\n\t\t\t<li>Item 3-3</li>\n\t\t\t<li>Item 3-4</li>\n\t\t\t<li>Item 3-5</li>\n\t\t</ul>\n\t</li>\n\t<li>Item 4</li>\n\t<li>Item 5</li>\n</ul>\n\n\n\n<!-- Tooltip -->\n<h2 class=\"demoHeaders\">Tooltip</h2>\n<p id=\"tooltip\">\n\t<a href=\"#\" title=\"That&apos;s what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.\n</p>\n\n\n<!-- Highlight / Error -->\n<h2 class=\"demoHeaders\">Highlight / Error</h2>\n<div class=\"ui-widget\">\n\t<div class=\"ui-state-highlight ui-corner-all\" style=\"margin-top: 20px; padding: 0 .7em;\">\n\t\t<p><span class=\"ui-icon ui-icon-info\" style=\"float: left; margin-right: .3em;\"></span>\n\t\t<strong>Hey!</strong> Sample ui-state-highlight style.</p>\n\t</div>\n</div>\n<br>\n<div class=\"ui-widget\">\n\t<div class=\"ui-state-error ui-corner-all\" style=\"padding: 0 .7em;\">\n\t\t<p><span class=\"ui-icon ui-icon-alert\" style=\"float: left; margin-right: .3em;\"></span>\n\t\t<strong>Alert:</strong> Sample ui-state-error style.</p>\n\t</div>\n</div>\n\n<script src=\"external/jquery/jquery.js\"></script>\n<script src=\"jquery-ui.js\"></script>\n<script>\n\n$( \"#accordion\" ).accordion();\n\n\n\nvar availableTags = [\n\t\"ActionScript\",\n\t\"AppleScript\",\n\t\"Asp\",\n\t\"BASIC\",\n\t\"C\",\n\t\"C++\",\n\t\"Clojure\",\n\t\"COBOL\",\n\t\"ColdFusion\",\n\t\"Erlang\",\n\t\"Fortran\",\n\t\"Groovy\",\n\t\"Haskell\",\n\t\"Java\",\n\t\"JavaScript\",\n\t\"Lisp\",\n\t\"Perl\",\n\t\"PHP\",\n\t\"Python\",\n\t\"Ruby\",\n\t\"Scala\",\n\t\"Scheme\"\n];\n$( \"#autocomplete\" ).autocomplete({\n\tsource: availableTags\n});\n\n\n\n$( \"#button\" ).button();\n$( \"#radioset\" ).buttonset();\n\n\n\n$( \"#tabs\" ).tabs();\n\n\n\n$( \"#dialog\" ).dialog({\n\tautoOpen: false,\n\twidth: 400,\n\tbuttons: [\n\t\t{\n\t\t\ttext: \"Ok\",\n\t\t\tclick: function() {\n\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\ttext: \"Cancel\",\n\t\t\tclick: function() {\n\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t}\n\t\t}\n\t]\n});\n\n// Link to open the dialog\n$( \"#dialog-link\" ).click(function( event ) {\n\t$( \"#dialog\" ).dialog( \"open\" );\n\tevent.preventDefault();\n});\n\n\n\n$( \"#datepicker\" ).datepicker({\n\tinline: true\n});\n\n\n\n$( \"#slider\" ).slider({\n\trange: true,\n\tvalues: [ 17, 67 ]\n});\n\n\n\n$( \"#progressbar\" ).progressbar({\n\tvalue: 20\n});\n\n\n\n$( \"#spinner\" ).spinner();\n\n\n\n$( \"#menu\" ).menu();\n\n\n\n$( \"#tooltip\" ).tooltip();\n\n\n\n$( \"#selectmenu\" ).selectmenu();\n\n\n// Hover states on the static widgets\n$( \"#dialog-link, #icons li\" ).hover(\n\tfunction() {\n\t\t$( this ).addClass( \"ui-state-hover\" );\n\t},\n\tfunction() {\n\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t}\n);\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery-ui-1.11.0.custom/jquery-ui.css",
    "content": "/*! jQuery UI - v1.11.0 - 2014-06-26\n* http://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px\n* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: \"\";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-clearfix {\n\tmin-height: 0; /* support: IE7 */\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\tfilter:Alpha(Opacity=0);\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n}\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tmin-height: 0; /* support: IE7 */\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-icons {\n\tpadding-left: 2.2em;\n}\n.ui-accordion .ui-accordion-icons .ui-accordion-icons {\n\tpadding-left: 2.2em;\n}\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tposition: absolute;\n\tleft: .5em;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-button {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 0;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\toverflow: visible; /* removes extra width in IE */\n}\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2.2em;\n}\n/* button elements seem to need a little more width */\nbutton.ui-button-icon-only {\n\twidth: 2.4em;\n}\n.ui-button-icons-only {\n\twidth: 3.4em;\n}\nbutton.ui-button-icons-only {\n\twidth: 3.7em;\n}\n\n/* button text element */\n.ui-button .ui-button-text {\n\tdisplay: block;\n\tline-height: normal;\n}\n.ui-button-text-only .ui-button-text {\n\tpadding: .4em 1em;\n}\n.ui-button-icon-only .ui-button-text,\n.ui-button-icons-only .ui-button-text {\n\tpadding: .4em;\n\ttext-indent: -9999999px;\n}\n.ui-button-text-icon-primary .ui-button-text,\n.ui-button-text-icons .ui-button-text {\n\tpadding: .4em 1em .4em 2.1em;\n}\n.ui-button-text-icon-secondary .ui-button-text,\n.ui-button-text-icons .ui-button-text {\n\tpadding: .4em 2.1em .4em 1em;\n}\n.ui-button-text-icons .ui-button-text {\n\tpadding-left: 2.1em;\n\tpadding-right: 2.1em;\n}\n/* no icon support for input elements, provide padding by default */\ninput.ui-button {\n\tpadding: .4em 1em;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon,\n.ui-button-text-icon-primary .ui-icon,\n.ui-button-text-icon-secondary .ui-icon,\n.ui-button-text-icons .ui-icon,\n.ui-button-icons-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-button-icon-only .ui-icon {\n\tleft: 50%;\n\tmargin-left: -8px;\n}\n.ui-button-text-icon-primary .ui-button-icon-primary,\n.ui-button-text-icons .ui-button-icon-primary,\n.ui-button-icons-only .ui-button-icon-primary {\n\tleft: .5em;\n}\n.ui-button-text-icon-secondary .ui-button-icon-secondary,\n.ui-button-text-icons .ui-button-icon-secondary,\n.ui-button-icons-only .ui-button-icon-secondary {\n\tright: .5em;\n}\n\n/* button sets */\n.ui-buttonset {\n\tmargin-right: 7px;\n}\n.ui-buttonset .ui-button {\n\tmargin-left: 0;\n\tmargin-right: -.3em;\n}\n\n/* workarounds */\n/* reset extra padding in Firefox, see h5bp.com/l */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 49%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n.ui-dialog {\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-se {\n\twidth: 12px;\n\theight: 12px;\n\tright: -5px;\n\tbottom: -5px;\n\tbackground-position: 16px 16px;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: none;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tposition: relative;\n\tmargin: 0;\n\tpadding: 3px 1em 3px .4em;\n\tcursor: pointer;\n\tmin-height: 0; /* support: IE7 */\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\");\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(\"images/animated-overlay.gif\");\n\theight: 100%;\n\tfilter: alpha(opacity=25);\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\t/* Support: IE7 */\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-button {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tposition: relative;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n.ui-selectmenu-button span.ui-icon {\n\tright: 0.5em;\n\tleft: auto;\n\tmargin-top: -8px;\n\tposition: absolute;\n\ttop: 50%;\n}\n.ui-selectmenu-button span.ui-selectmenu-text {\n\ttext-align: left;\n\tpadding: 0.4em 2.1em 0.4em 1em;\n\tdisplay: block;\n\tline-height: 1.4;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: default;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* For IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 22px;\n}\n.ui-spinner-button {\n\twidth: 16px;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top: none;\n\tborder-bottom: none;\n\tborder-right: none;\n}\n/* vertically center icon */\n.ui-spinner .ui-icon {\n\tposition: absolute;\n\tmargin-top: -8px;\n\ttop: 50%;\n\tleft: 0;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position: -65px -16px;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Verdana,Arial,sans-serif;\n\tfont-size: 1.1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Verdana,Arial,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget-content {\n\tborder: 1px solid #aaaaaa;\n\tbackground: #ffffff url(\"images/ui-bg_flat_75_ffffff_40x100.png\") 50% 50% repeat-x;\n\tcolor: #222222;\n}\n.ui-widget-content a {\n\tcolor: #222222;\n}\n.ui-widget-header {\n\tborder: 1px solid #aaaaaa;\n\tbackground: #cccccc url(\"images/ui-bg_highlight-soft_75_cccccc_1x100.png\") 50% 50% repeat-x;\n\tcolor: #222222;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #222222;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid #d3d3d3;\n\tbackground: #e6e6e6 url(\"images/ui-bg_glass_75_e6e6e6_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: normal;\n\tcolor: #555555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555555;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: #eee;\n\tfont-weight: normal;\n\tcolor: #212121;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited {\n\tcolor: #212121;\n\ttext-decoration: none;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid #aaaaaa;\n\tbackground: #ffffff url(\"images/ui-bg_glass_65_ffffff_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: normal;\n\tcolor: #212121;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #212121;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #fcefa1;\n\tbackground: #fbf9ee url(\"images/ui-bg_glass_55_fbf9ee_1x400.png\") 50% 50% repeat-x;\n\tcolor: #363636;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #363636;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #cd0a0a;\n\tbackground: #fef1ec url(\"images/ui-bg_glass_95_fef1ec_1x400.png\") 50% 50% repeat-x;\n\tcolor: #cd0a0a;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #cd0a0a;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #cd0a0a;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\tfilter:Alpha(Opacity=70);\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\tfilter:Alpha(Opacity=35);\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\tfilter:Alpha(Opacity=35); /* For IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(\"images/ui-icons_222222_256x240.png\");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(\"images/ui-icons_222222_256x240.png\");\n}\n.ui-state-default .ui-icon {\n\tbackground-image: url(\"images/ui-icons_888888_256x240.png\");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url(\"images/ui-icons_454545_256x240.png\");\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url(\"images/ui-icons_454545_256x240.png\");\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url(\"images/ui-icons_2e83ff_256x240.png\");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(\"images/ui-icons_cd0a0a_256x240.png\");\n}\n\n/* positioning */\n.ui-icon-blank { background-position: 16px 16px; }\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 4px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa url(\"images/ui-bg_flat_0_aaaaaa_40x100.png\") 50% 50% repeat-x;\n\topacity: .3;\n\tfilter: Alpha(Opacity=30);\n}\n.ui-widget-shadow {\n\tmargin: -8px 0 0 -8px;\n\tpadding: 8px;\n\tbackground: #aaaaaa url(\"images/ui-bg_flat_0_aaaaaa_40x100.png\") 50% 50% repeat-x;\n\topacity: .3;\n\tfilter: Alpha(Opacity=30);\n\tborder-radius: 8px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery-ui-1.11.0.custom/jquery-ui.js",
    "content": "/*! jQuery UI - v1.11.0 - 2014-06-26\n* http://jqueryui.com\n* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js\n* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n/*!\n * jQuery UI Core 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\n\n// $.ui might exist from components with no dependencies, e.g., $.ui.position\n$.ui = $.ui || {};\n\n$.extend( $.ui, {\n\tversion: \"1.11.0\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\tscrollParent: function() {\n\t\tvar position = this.css( \"position\" ),\n\t\t\texcludeStaticParent = position === \"absolute\",\n\t\t\tscrollParent = this.parents().filter( function() {\n\t\t\t\tvar parent = $( this );\n\t\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn (/(auto|scroll)/).test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) + parent.css( \"overflow-x\" ) );\n\t\t\t}).eq( 0 );\n\n\t\treturn position === \"fixed\" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;\n\t},\n\n\tuniqueId: (function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each(function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t})(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().addBack().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n// deprecated\n$.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n$.fn.extend({\n\tfocus: (function( orig ) {\n\t\treturn function( delay, fn ) {\n\t\t\treturn typeof delay === \"number\" ?\n\t\t\t\tthis.each(function() {\n\t\t\t\t\tvar elem = this;\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, delay );\n\t\t\t\t}) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.focus ),\n\n\tdisableSelection: (function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.bind( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t};\n\t})(),\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n});\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\n$.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Widget 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/jQuery.widget/\n */\n\n\nvar widget_uuid = 0,\n\twidget_slice = Array.prototype.slice;\n\n$.cleanData = (function( orig ) {\n\treturn function( elems ) {\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\ttry {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t// http://bugs.jquery.com/ticket/8235\n\t\t\t} catch( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n})( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\t// proxiedPrototype allows the provided prototype to remain unmodified\n\t\t// so that it can be used as a mixin for multiple widgets (#8876)\n\t\tproxiedPrototype = {},\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = (function() {\n\t\t\tvar _super = function() {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t},\n\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t};\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super,\n\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\treturnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t})();\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widget_slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = widget_slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\treturnValue = instance;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widget_uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled\", !!value );\n\n\t\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\t\tif ( value ) {\n\t\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions({ disabled: false });\n\t},\n\tdisable: function() {\n\t\treturn this._setOptions({ disabled: true });\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Mouse 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/mouse/\n */\n\n\nvar mouseHandled = false;\n$( document ).mouseup( function() {\n\tmouseHandled = false;\n});\n\nvar mouse = $.widget(\"ui.mouse\", {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\tcancel: \"input,textarea,button,select,option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind(\"mousedown.\" + this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind(\"click.\" + this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + \".preventClickEvent\")) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + \".preventClickEvent\");\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind(\".\" + this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + \".preventClickEvent\")) {\n\t\t\t$.removeData(event.target, this.widgetName + \".preventClickEvent\");\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\n\t\tthis.document\n\t\t\t.bind( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.bind( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\n\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t} else if ( !event.which ) {\n\t\t\treturn this._mouseUp( event );\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\tthis.document\n\t\t\t.unbind( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.unbind( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + \".preventClickEvent\", true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\tmouseHandled = false;\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(/* event */) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(/* event */) {},\n\t_mouseDrag: function(/* event */) {},\n\t_mouseStop: function(/* event */) {},\n\t_mouseCapture: function(/* event */) { return true; }\n});\n\n\n/*!\n * jQuery UI Position 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n(function() {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth, supportsOffsetFractions,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[0];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[0].preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !supportsOffsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function() {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\tsupportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n})();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI Draggable 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/draggable/\n */\n\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.11.0\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper === \"original\" && !(/^(?:r|a|f)/).test(this.element.css(\"position\"))) {\n\t\t\tthis.element[0].style.position = \"relative\";\n\t\t}\n\t\tif (this.options.addClasses){\n\t\t\tthis.element.addClass(\"ui-draggable\");\n\t\t}\n\t\tif (this.options.disabled){\n\t\t\tthis.element.addClass(\"ui-draggable-disabled\");\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar document = this.document[ 0 ],\n\t\t\to = this.options;\n\n\t\t// support: IE9\n\t\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\t\ttry {\n\t\t\t// Support: IE9+\n\t\t\t// If the <body> is blurred, IE will switch windows, see #9520\n\t\t\tif ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== \"body\" ) {\n\t\t\t\t// Blur any element that currently has focus, see #4261\n\t\t\t\t$( document.activeElement ).blur();\n\t\t\t}\n\t\t} catch ( error ) {}\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).closest(\".ui-resizable-handle\").length > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$(\"<div class='ui-draggable-iframeFix' style='background: #fff;'></div>\")\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth + \"px\", height: this.offsetHeight + \"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent();\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.offsetParentCssPosition = this.offsetParent.css( \"position\" );\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t//Reset scroll cache\n\t\tthis.offset.scroll = false;\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif (this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart(this, event);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.offsetParentCssPosition === \"fixed\" ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif (this._trigger(\"drag\", event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif (this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ((this.options.revert === \"invalid\" && !dropped) || (this.options.revert === \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif (that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif (this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop(this, event);\n\t\t}\n\n\t\t// The interaction is over; whether or not the click resulted in a drag, focus the element\n\t\tthis.element.focus();\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif (this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis._removeHandleClassName();\n\t\t$( this.options.handle || this.element ).addClass( \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis.element.find( \".ui-draggable-handle\" )\n\t\t\t.addBack()\n\t\t\t.removeClass( \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[ 0 ], [ event ])) : (o.helper === \"clone\" ? this.element.clone().removeAttr(\"id\") : this.element);\n\n\t\tif (!helper.parents(\"body\").length) {\n\t\t\thelper.appendTo((o.appendTo === \"parent\" ? this.element[0].parentNode : o.appendTo));\n\t\t}\n\n\t\tif (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\"))) {\n\t\t\thelper.css(\"position\", \"absolute\");\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = { left: +obj[0], top: +obj[1] || 0 };\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif (this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt(this.helper.css( \"top\" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt(this.helper.css( \"left\" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar over, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relative_container = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\") {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tover = c.css( \"overflow\" ) !== \"hidden\";\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) + ( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) + ( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) - ( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) - ( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t];\n\t\tthis.relative_container = c;\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif (!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relative_container ){\n\t\t\t\t\tco = this.relative_container.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif (event.pageX - this.offset.click.left < containment[0]) {\n\t\t\t\t\tpageX = containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif (event.pageY - this.offset.click.top < containment[1]) {\n\t\t\t\t\tpageY = containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif (event.pageX - this.offset.click.left > containment[2]) {\n\t\t\t\t\tpageX = containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif (event.pageY - this.offset.click.top > containment[3]) {\n\t\t\t\t\tpageY = containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top\t-\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( this.cssPosition === \"fixed\" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( this.cssPosition === \"fixed\" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\t\t//The absolute position has to be recalculated after plugins\n\t\tif (type === \"drag\") {\n\t\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, inst ) {\n\n\t\tvar o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function( event, ui, inst ) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: inst.element\n\t\t});\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif (this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: \"valid/invalid\"\n\t\t\t\tif (this.shouldRevert) {\n\t\t\t\t\tthis.instance.options.revert = this.shouldRevert;\n\t\t\t\t}\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif (inst.options.helper === \"original\") {\n\t\t\t\t\tthis.instance.currentItem.css({ top: \"auto\", left: \"auto\" });\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar that = this;\n\n\t\t$.each(inst.sortables, function() {\n\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tthisSortable = this;\n\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif (this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function() {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif (this !== thisSortable &&\n\t\t\t\t\t\tthis.instance._intersectsWith(this.instance.containerCache) &&\n\t\t\t\t\t\t$.contains(thisSortable.instance.element[0], this.instance.element[0])\n\t\t\t\t\t) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif (!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr(\"id\").appendTo(this.instance.element).data(\"ui-sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif (this.instance.currentItem) {\n\t\t\t\t\tthis.instance._mouseDrag(event);\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif (this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger(\"out\", event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif (this.instance.placeholder) {\n\t\t\t\t\t\tthis.instance.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif (t.css(\"cursor\")) {\n\t\t\to._cursor = t.css(\"cursor\");\n\t\t}\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif (o._cursor) {\n\t\t\t$(\"body\").css(\"cursor\", o._cursor);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif (t.css(\"opacity\")) {\n\t\t\to._opacity = t.css(\"opacity\");\n\t\t}\n\t\tt.css(\"opacity\", o.opacity);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif (o._opacity) {\n\t\t\t$(ui.helper).css(\"opacity\", o._opacity);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( i.scrollParent[ 0 ] !== i.document[ 0 ] && i.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParent.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i  ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( i.scrollParent[ 0 ] !== document && i.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tif (!o.axis || o.axis !== \"x\") {\n\t\t\t\tif ((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!o.axis || o.axis !== \"y\") {\n\t\t\t\tif ((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif (!o.axis || o.axis !== \"x\") {\n\t\t\t\tif (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!o.axis || o.axis !== \"y\") {\n\t\t\t\tif (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap).each(function() {\n\t\t\tvar $t = $(this),\n\t\t\t\t$o = $t.offset();\n\t\t\tif (this !== i.element[0]) {\n\t\t\t\ti.snapElements.push({\n\t\t\t\t\titem: this,\n\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tl = inst.snapElements[i].left;\n\t\t\tr = l + inst.snapElements[i].width;\n\t\t\tt = inst.snapElements[i].top;\n\t\t\tb = t + inst.snapElements[i].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {\n\t\t\t\tif (inst.snapElements[i].snapping) {\n\t\t\t\t\t(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\t}\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (o.snapMode !== \"inner\") {\n\t\t\t\tts = Math.abs(t - y2) <= d;\n\t\t\t\tbs = Math.abs(b - y1) <= d;\n\t\t\t\tls = Math.abs(l - x2) <= d;\n\t\t\t\trs = Math.abs(r - x1) <= d;\n\t\t\t\tif (ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif (bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif (ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t\tif (rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = (ts || bs || ls || rs);\n\n\t\t\tif (o.snapMode !== \"outer\") {\n\t\t\t\tts = Math.abs(t - y1) <= d;\n\t\t\t\tbs = Math.abs(b - y2) <= d;\n\t\t\t\tls = Math.abs(l - x1) <= d;\n\t\t\t\trs = Math.abs(r - x2) <= d;\n\t\t\t\tif (ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif (bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif (ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t\tif (rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t}\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t\t});\n\n\t\tif (!group.length) { return; }\n\n\t\tmin = parseInt($(group[0]).css(\"zIndex\"), 10) || 0;\n\t\t$(group).each(function(i) {\n\t\t\t$(this).css(\"zIndex\", min + i);\n\t\t});\n\t\tthis.css(\"zIndex\", (min + group.length));\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif (t.css(\"zIndex\")) {\n\t\t\to._zIndex = t.css(\"zIndex\");\n\t\t}\n\t\tt.css(\"zIndex\", o.zIndex);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif (o._zIndex) {\n\t\t\t$(ui.helper).css(\"zIndex\", o._zIndex);\n\t\t}\n\t}\n});\n\nvar draggable = $.ui.draggable;\n\n\n/*!\n * jQuery UI Droppable 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/droppable/\n */\n\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.11.0\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this.element.addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\n\t\tthis.element.removeClass( \"ui-droppable ui-droppable-disabled\" );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif ( this.options.activeClass ) {\n\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t}\n\t\tif ( draggable ){\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif ( this.options.activeClass ) {\n\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t}\n\t\tif ( draggable ){\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element.find( \":data(ui-droppable)\" ).not( \".ui-draggable-dragging\" ).each(function() {\n\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\tif (\n\t\t\t\tinst.options.greedy &&\n\t\t\t\t!inst.options.disabled &&\n\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\tinst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) &&\n\t\t\t\t$.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance )\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = (function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar draggableLeft, draggableTop,\n\t\t\tx1 = ( draggable.positionAbs || draggable.position.absolute ).left,\n\t\t\ty1 = ( draggable.positionAbs || draggable.position.absolute ).top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\tdraggableLeft = ( ( draggable.positionAbs || draggable.position.absolute ).left + ( draggable.clickOffset || draggable.offset.click ).left );\n\t\t\tdraggableTop = ( ( draggable.positionAbs || draggable.position.absolute ).top + ( draggable.clickOffset || draggable.offset.click ).top );\n\t\t\treturn isOverAxis( draggableTop, t, droppable.proportions().height ) && isOverAxis( draggableLeft, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n})();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t});\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = $.ui.intersect( draggable, this, this.options.tolerance ),\n\t\t\t\tc = !intersects && this.isover ? \"isout\" : ( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter(function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[c === \"isout\" ? \"isover\" : \"isout\"] = false;\n\t\t\tthis[c === \"isover\" ? \"_over\" : \"_out\"].call( this, event );\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\nvar droppable = $.ui.droppable;\n\n\n/*!\n * jQuery UI Resizable 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/resizable/\n */\n\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.11.0\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\t// See #7960\n\t\tzIndex: 90,\n\n\t\t// callbacks\n\t\tresize: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_num: function( value ) {\n\t\treturn parseInt( value, 10 ) || 0;\n\t},\n\n\t_isNumber: function( value ) {\n\t\treturn !isNaN( parseInt( value , 10 ) );\n\t},\n\n\t_hasScroll: function( el, a ) {\n\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t_create: function() {\n\n\t\tvar n, i, handle, axis, hname,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n\t\t});\n\n\t\t// Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\tthis.element.wrap(\n\t\t\t\t$(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({\n\t\t\t\t\tposition: this.element.css(\"position\"),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css(\"top\"),\n\t\t\t\t\tleft: this.element.css(\"left\")\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\t\t\t// support: Safari\n\t\t\t// Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css(\"resize\");\n\t\t\tthis.originalElement.css(\"resize\", \"none\");\n\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: \"static\", zoom: 1, display: \"block\" }));\n\n\t\t\t// support: IE9\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css(\"margin\") });\n\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tthis.handles = o.handles || (!$(\".ui-resizable-handle\", this.element).length ? \"e,s,se\" : { n: \".ui-resizable-n\", e: \".ui-resizable-e\", s: \".ui-resizable-s\", w: \".ui-resizable-w\", se: \".ui-resizable-se\", sw: \".ui-resizable-sw\", ne: \".ui-resizable-ne\", nw: \".ui-resizable-nw\" });\n\t\tif(this.handles.constructor === String) {\n\n\t\t\tif ( this.handles === \"all\") {\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\n\t\t\t}\n\n\t\t\tn = this.handles.split(\",\");\n\t\t\tthis.handles = {};\n\n\t\t\tfor(i = 0; i < n.length; i++) {\n\n\t\t\t\thandle = $.trim(n[i]);\n\t\t\t\thname = \"ui-resizable-\"+handle;\n\t\t\t\taxis = $(\"<div class='ui-resizable-handle \" + hname + \"'></div>\");\n\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t// TODO : What's going on here?\n\t\t\t\tif (\"se\" === handle) {\n\t\t\t\t\taxis.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\");\n\t\t\t\t}\n\n\t\t\t\tthis.handles[handle] = \".ui-resizable-\"+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\tvar i, axis, padPos, padWrapper;\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor === String) {\n\t\t\t\t\tthis.handles[i] = this.element.children( this.handles[ i ] ).first().show();\n\t\t\t\t}\n\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\taxis = $(this.handles[i], this.element);\n\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\tpadPos = [ \"padding\",\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? \"Top\" :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? \"Bottom\" :\n\t\t\t\t\t\t/^e$/.test(i) ? \"Right\" : \"Left\" ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t// TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $(\".ui-resizable-handle\", this.element)\n\t\t\t.disableSelection();\n\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className) {\n\t\t\t\t\taxis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t}\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : \"se\";\n\t\t\t}\n\t\t});\n\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar wrapper,\n\t\t\t_destroy = function(exp) {\n\t\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find(\".ui-resizable-handle\").remove();\n\t\t\t};\n\n\t\t// TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\twrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css(\"position\"),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css(\"top\"),\n\t\t\t\tleft: wrapper.css(\"left\")\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css(\"resize\", this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar i, handle,\n\t\t\tcapture = false;\n\n\t\tfor (i in this.handles) {\n\t\t\thandle = $(this.handles[i])[0];\n\t\t\tif (handle === event.target || $.contains(handle, event.target)) {\n\t\t\t\tcapture = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && capture;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar curleft, curtop, cursor,\n\t\t\to = this.options,\n\t\t\tel = this.element;\n\n\t\tthis.resizing = true;\n\n\t\tthis._renderProxy();\n\n\t\tcurleft = this._num(this.helper.css(\"left\"));\n\t\tcurtop = this._num(this.helper.css(\"top\"));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: this.helper.width(), height: this.helper.height() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\tthis.aspectRatio = (typeof o.aspectRatio === \"number\") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tcursor = $(\".ui-resizable-\" + this.axis).css(\"cursor\");\n\t\t$(\"body\").css(\"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\tvar data,\n\t\t\tel = this.helper, props = {},\n\t\t\tsmp = this.originalMousePosition,\n\t\t\ta = this.axis,\n\t\t\tdx = (event.pageX-smp.left)||0,\n\t\t\tdy = (event.pageY-smp.top)||0,\n\t\t\ttrigger = this._change[a];\n\n\t\tthis.prevPosition = {\n\t\t\ttop: this.position.top,\n\t\t\tleft: this.position.left\n\t\t};\n\t\tthis.prevSize = {\n\t\t\twidth: this.size.width,\n\t\t\theight: this.size.height\n\t\t};\n\n\t\tif (!trigger) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdata = trigger.apply(this, [event, dx, dy]);\n\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey) {\n\t\t\tdata = this._updateRatio(data, event);\n\t\t}\n\n\t\tdata = this._respectSize(data, event);\n\n\t\tthis._updateCache(data);\n\n\t\tthis._propagate(\"resize\", event);\n\n\t\tif ( this.position.top !== this.prevPosition.top ) {\n\t\t\tprops.top = this.position.top + \"px\";\n\t\t}\n\t\tif ( this.position.left !== this.prevPosition.left ) {\n\t\t\tprops.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( this.size.width !== this.prevSize.width ) {\n\t\t\tprops.width = this.size.width + \"px\";\n\t\t}\n\t\tif ( this.size.height !== this.prevSize.height ) {\n\t\t\tprops.height = this.size.height + \"px\";\n\t\t}\n\t\tel.css( props );\n\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tif ( !$.isEmptyObject( props ) ) {\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\n\t\t\to = this.options, that = this;\n\n\t\tif(this._helper) {\n\n\t\t\tpr = this._proportionallyResizeElements;\n\t\t\tista = pr.length && (/textarea/i).test(pr[0].nodeName);\n\t\t\tsoffseth = ista && this._hasScroll(pr[0], \"left\") /* TODO - jump height */ ? 0 : that.sizeDiff.height;\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\ts = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) };\n\t\t\tleft = (parseInt(that.element.css(\"left\"), 10) + (that.position.left - that.originalPosition.left)) || null;\n\t\t\ttop = (parseInt(that.element.css(\"top\"), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate) {\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\t\t\t}\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) {\n\t\t\t\tthis._proportionallyResize();\n\t\t\t}\n\t\t}\n\n\t\t$(\"body\").css(\"cursor\", \"auto\");\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) {\n\t\t\tthis.helper.remove();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\n\t\t\to = this.options;\n\n\t\tb = {\n\t\t\tminWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) {\n\t\t\t\tb.minWidth = pMinWidth;\n\t\t\t}\n\t\t\tif(pMinHeight > b.minHeight) {\n\t\t\t\tb.minHeight = pMinHeight;\n\t\t\t}\n\t\t\tif(pMaxWidth < b.maxWidth) {\n\t\t\t\tb.maxWidth = pMaxWidth;\n\t\t\t}\n\t\t\tif(pMaxHeight < b.maxHeight) {\n\t\t\t\tb.maxHeight = pMaxHeight;\n\t\t\t}\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tthis.offset = this.helper.offset();\n\t\tif (this._isNumber(data.left)) {\n\t\t\tthis.position.left = data.left;\n\t\t}\n\t\tif (this._isNumber(data.top)) {\n\t\t\tthis.position.top = data.top;\n\t\t}\n\t\tif (this._isNumber(data.height)) {\n\t\t\tthis.size.height = data.height;\n\t\t}\n\t\tif (this._isNumber(data.width)) {\n\t\t\tthis.size.width = data.width;\n\t\t}\n\t},\n\n\t_updateRatio: function( data ) {\n\n\t\tvar cpos = this.position,\n\t\t\tcsize = this.size,\n\t\t\ta = this.axis;\n\n\t\tif (this._isNumber(data.height)) {\n\t\t\tdata.width = (data.height * this.aspectRatio);\n\t\t} else if (this._isNumber(data.width)) {\n\t\t\tdata.height = (data.width / this.aspectRatio);\n\t\t}\n\n\t\tif (a === \"sw\") {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a === \"nw\") {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function( data ) {\n\n\t\tvar o = this._vBoundaries,\n\t\t\ta = this.axis,\n\t\t\tismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\tisminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height),\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\n\t\t\tdh = this.position.top + this.size.height,\n\t\t\tcw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\t\tif (isminw) {\n\t\t\tdata.width = o.minWidth;\n\t\t}\n\t\tif (isminh) {\n\t\t\tdata.height = o.minHeight;\n\t\t}\n\t\tif (ismaxw) {\n\t\t\tdata.width = o.maxWidth;\n\t\t}\n\t\tif (ismaxh) {\n\t\t\tdata.height = o.maxHeight;\n\t\t}\n\n\t\tif (isminw && cw) {\n\t\t\tdata.left = dw - o.minWidth;\n\t\t}\n\t\tif (ismaxw && cw) {\n\t\t\tdata.left = dw - o.maxWidth;\n\t\t}\n\t\tif (isminh && ch) {\n\t\t\tdata.top = dh - o.minHeight;\n\t\t}\n\t\tif (ismaxh && ch) {\n\t\t\tdata.top = dh - o.maxHeight;\n\t\t}\n\n\t\t// Fixing jump error on top/left - bug #2330\n\t\tif (!data.width && !data.height && !data.left && data.top) {\n\t\t\tdata.top = null;\n\t\t} else if (!data.width && !data.height && !data.top && data.left) {\n\t\t\tdata.left = null;\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tif (!this._proportionallyResizeElements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i, j, borders, paddings, prel,\n\t\t\telement = this.helper || this.element;\n\n\t\tfor ( i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tprel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tthis.borderDif = [];\n\t\t\t\tborders = [prel.css(\"borderTopWidth\"), prel.css(\"borderRightWidth\"), prel.css(\"borderBottomWidth\"), prel.css(\"borderLeftWidth\")];\n\t\t\t\tpaddings = [prel.css(\"paddingTop\"), prel.css(\"paddingRight\"), prel.css(\"paddingBottom\"), prel.css(\"paddingLeft\")];\n\n\t\t\t\tfor ( j = 0; j < borders.length; j++ ) {\n\t\t\t\t\tthis.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $(\"<div style='overflow:hidden;'></div>\");\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() - 1,\n\t\t\t\theight: this.element.outerHeight() - 1,\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: this.elementOffset.left +\"px\",\n\t\t\t\ttop: this.elementOffset.top +\"px\",\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n !== \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\tprevSize: this.prevSize,\n\t\t\tprevPosition: this.prevPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function( event ) {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tpr = that._proportionallyResizeElements,\n\t\t\tista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\tsoffseth = ista && that._hasScroll(pr[0], \"left\") /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\n\t\t\tstyle = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\tleft = (parseInt(that.element.css(\"left\"), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\ttop = (parseInt(that.element.css(\"top\"), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css(\"width\"), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css(\"height\"), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css(\"top\"), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css(\"left\"), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) {\n\t\t\t\t\t\t$(pr[0]).css({ width: data.width, height: data.height });\n\t\t\t\t\t}\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add( \"resizable\", \"containment\", {\n\n\tstart: function() {\n\t\tvar element, p, co, ch, cw, width, height,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tel = that.element,\n\t\t\toc = o.containment,\n\t\t\tce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.containerElement = $( ce );\n\n\t\tif ( /document/.test( oc ) || oc === document ) {\n\t\t\tthat.containerOffset = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\t\t\tthat.containerPosition = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $( document ),\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: $( document ).width(),\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t} else {\n\t\t\telement = $( ce );\n\t\t\tp = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function( i, name ) {\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\n\t\t\t});\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = {\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\n\t\t\t};\n\n\t\t\tco = that.containerOffset;\n\t\t\tch = that.containerSize.height;\n\t\t\tcw = that.containerSize.width;\n\t\t\twidth = ( that._hasScroll ( ce, \"left\" ) ? ce.scrollWidth : cw );\n\t\t\theight = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce,\n\t\t\t\tleft: co.left,\n\t\t\t\ttop: co.top,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function( event, ui ) {\n\t\tvar woset, hoset, isParent, isOffsetRelative,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcp = that.position,\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\n\t\t\tcop = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t},\n\t\t\tce = that.containerElement,\n\t\t\tcontinueResize = true;\n\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\tcop = co;\n\t\t}\n\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\n\t\t\tthat.size.width = that.size.width + ( that._helper ? ( that.position.left - co.left ) : ( that.position.left - cop.left ) );\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\n\t\t\tthat.size.height = that.size.height + ( that._helper ? ( that.position.top - co.top ) : that.position.top );\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left + that.position.left;\n\t\tthat.offset.top = that.parentData.top + that.position.top;\n\n\t\twoset = Math.abs( ( that._helper ? that.offset.left - cop.left : ( that.offset.left - co.left ) ) + that.sizeDiff.width );\n\t\thoset = Math.abs( ( that._helper ? that.offset.top - cop.top : ( that.offset.top - co.top ) ) + that.sizeDiff.height );\n\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\n\n\t\tif ( isParent && isOffsetRelative ) {\n\t\t\twoset -= Math.abs( that.parentData.left );\n\t\t}\n\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( !continueResize ){\n\t\t\tthat.position.left = ui.prevPosition.left;\n\t\t\tthat.position.top = ui.prevPosition.top;\n\t\t\tthat.size.width = ui.prevSize.width;\n\t\t\tthat.size.height = ui.prevSize.height;\n\t\t}\n\t},\n\n\tstop: function(){\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcop = that.containerPosition,\n\t\t\tce = that.containerElement,\n\t\t\thelper = $( that.helper ),\n\t\t\tho = helper.offset(),\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css({\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t});\n\t\t}\n\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css({\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t});\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function () {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\t_store = function (exp) {\n\t\t\t\t$(exp).each(function() {\n\t\t\t\t\tvar el = $(this);\n\t\t\t\t\tel.data(\"ui-resizable-alsoresize\", {\n\t\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\t\tleft: parseInt(el.css(\"left\"), 10), top: parseInt(el.css(\"top\"), 10)\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\n\t\tif (typeof(o.alsoResize) === \"object\" && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\tdelta = {\n\t\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t\t},\n\n\t\t\t_alsoResize = function (exp, c) {\n\t\t\t\t$(exp).each(function() {\n\t\t\t\t\tvar el = $(this), start = $(this).data(\"ui-resizable-alsoresize\"), style = {},\n\t\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? [\"width\", \"height\"] : [\"width\", \"height\", \"top\", \"left\"];\n\n\t\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\t\tif (sum && sum >= 0) {\n\t\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tel.css(style);\n\t\t\t\t});\n\t\t\t};\n\n\t\tif (typeof(o.alsoResize) === \"object\" && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function () {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function() {\n\n\t\tvar that = $(this).resizable( \"instance\" ), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: 0.25, display: \"block\", position: \"relative\", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass(\"ui-resizable-ghost\")\n\t\t\t.addClass(typeof o.ghost === \"string\" ? o.ghost : \"\");\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(){\n\t\tvar that = $(this).resizable( \"instance\" );\n\t\tif (that.ghost) {\n\t\t\tthat.ghost.css({ position: \"relative\", height: that.size.height, width: that.size.width });\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $(this).resizable( \"instance\" );\n\t\tif (that.ghost && that.helper) {\n\t\t\tthat.helper.get(0).removeChild(that.ghost.get(0));\n\t\t}\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function() {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tcs = that.size,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\ta = that.axis,\n\t\t\tgrid = typeof o.grid === \"number\" ? [o.grid, o.grid] : o.grid,\n\t\t\tgridX = (grid[0]||1),\n\t\t\tgridY = (grid[1]||1),\n\t\t\tox = Math.round((cs.width - os.width) / gridX) * gridX,\n\t\t\toy = Math.round((cs.height - os.height) / gridY) * gridY,\n\t\t\tnewWidth = os.width + ox,\n\t\t\tnewHeight = os.height + oy,\n\t\t\tisMaxWidth = o.maxWidth && (o.maxWidth < newWidth),\n\t\t\tisMaxHeight = o.maxHeight && (o.maxHeight < newHeight),\n\t\t\tisMinWidth = o.minWidth && (o.minWidth > newWidth),\n\t\t\tisMinHeight = o.minHeight && (o.minHeight > newHeight);\n\n\t\to.grid = grid;\n\n\t\tif (isMinWidth) {\n\t\t\tnewWidth = newWidth + gridX;\n\t\t}\n\t\tif (isMinHeight) {\n\t\t\tnewHeight = newHeight + gridY;\n\t\t}\n\t\tif (isMaxWidth) {\n\t\t\tnewWidth = newWidth - gridX;\n\t\t}\n\t\tif (isMaxHeight) {\n\t\t\tnewHeight = newHeight - gridY;\n\t\t}\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t} else if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.top = op.top - oy;\n\t\t} else if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.left = op.left - ox;\n\t\t} else {\n\t\t\tif ( newHeight - gridY > 0 ) {\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top - oy;\n\t\t\t} else {\n\t\t\t\tthat.size.height = gridY;\n\t\t\t\tthat.position.top = op.top + os.height - gridY;\n\t\t\t}\n\t\t\tif ( newWidth - gridX > 0 ) {\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left - ox;\n\t\t\t} else {\n\t\t\t\tthat.size.width = gridX;\n\t\t\t\tthat.position.left = op.left + os.width - gridX;\n\t\t\t}\n\t\t}\n\t}\n\n});\n\nvar resizable = $.ui.resizable;\n\n\n/*!\n * jQuery UI Selectable 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectable/\n */\n\n\nvar selectable = $.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: \"*\",\n\t\ttolerance: \"touch\",\n\n\t\t// callbacks\n\t\tselected: null,\n\t\tselecting: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tunselected: null,\n\t\tunselecting: null\n\t},\n\t_create: function() {\n\t\tvar selectees,\n\t\t\tthat = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\tpos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass(\"ui-selected\"),\n\t\t\t\t\tselecting: $this.hasClass(\"ui-selecting\"),\n\t\t\t\t\tunselecting: $this.hasClass(\"ui-unselecting\")\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.opos = [ event.pageX, event.pageY ];\n\n\t\tif (this.options.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.pageX,\n\t\t\t\"top\": event.pageY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter(\".ui-selected\").each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().addBack().each(function() {\n\t\t\tvar doSelect,\n\t\t\t\tselectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tdoSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass(\"ui-selected\");\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tmp,\n\t\t\tthat = this,\n\t\t\toptions = this.options,\n\t\t\tx1 = this.opos[0],\n\t\t\ty1 = this.opos[1],\n\t\t\tx2 = event.pageX,\n\t\t\ty2 = event.pageY;\n\n\t\tif (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 });\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\"),\n\t\t\t\thit = false;\n\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element === that.element[0]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.tolerance === \"touch\") {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance === \"fit\") {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass(\"ui-unselecting\");\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass(\"ui-selecting\");\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selecting\");\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass(\"ui-selected\");\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selecting\");\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\t$(\".ui-unselecting\", this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass(\"ui-unselecting\");\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$(\".ui-selecting\", this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass(\"ui-selecting\").addClass(\"ui-selected\");\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n\n/*!\n * jQuery UI Sortable 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/sortable/\n */\n\n\nvar sortable = $.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.11.0\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn (/left|right/).test(item.css(\"float\")) || (/inline|table-cell/).test(item.css(\"display\"));\n\t},\n\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === \"x\" || this._isFloating(this.items[0].item) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.element.find( \".ui-sortable-handle\" ).removeClass( \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\t( this.instance.options.handle ?\n\t\t\t\tthis.item.find( this.instance.options.handle ) : this.item )\n\t\t\t\t.addClass( \"ui-sortable-handle\" );\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-sortable ui-sortable-disabled\" )\n\t\t\t.find( \".ui-sortable-handle\" )\n\t\t\t\t.removeClass( \"ui-sortable-handle\" );\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type === \"static\") {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + \"-item\") === that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + \"-item\") === that) {\n\t\t\tcurrentItem = $(event.target);\n\t\t}\n\n\t\tif(!currentItem) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\t$(this.options.handle, currentItem).find(\"*\").addBack().each(function() {\n\t\t\t\tif(this === event.target) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(!validHandle) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] !== this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet = $( \"<style>*{ cursor: \"+o.cursor+\" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) {\n\t\t\t\tthis._storedOpacity = this.helper.css(\"opacity\");\n\t\t\t}\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) {\n\t\t\t\tthis._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\t}\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options,\n\t\t\tscrolled = false;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tif(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t\t}\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis !== \"y\") {\n\t\t\tthis.helper[0].style.left = this.position.left+\"px\";\n\t\t}\n\t\tif(!this.options.axis || this.options.axis !== \"x\") {\n\t\t\tthis.helper[0].style.top = this.position.top+\"px\";\n\t\t}\n\n\t\t//Rearrange\n\t\tfor (i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[i];\n\t\t\titemElement = item.item[0];\n\t\t\tintersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif (itemElement !== this.currentItem[0] &&\n\t\t\t\tthis.placeholder[intersection === 1 ? \"next\" : \"prev\"]()[0] !== itemElement &&\n\t\t\t\t!$.contains(this.placeholder[0], itemElement) &&\n\t\t\t\t(this.options.type === \"semi-dynamic\" ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance === \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"sort\", event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\t$.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper === \"original\") {\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) {\n\t\t\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\t}\n\t\t\tif(this.options.helper !== \"original\" && this.helper && this.helper[0].parentNode) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || \"id\") || \"\").match(o.expression || (/(.+)[\\-=_](.+)/));\n\t\t\tif (res) {\n\t\t\t\tstr.push((o.key || res[1]+\"[]\")+\"=\"+(o.key && o.expression ? res[1] : res[2]));\n\t\t\t}\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + \"=\");\n\t\t}\n\n\t\treturn str.join(\"&\");\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || \"id\") || \"\"); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t(this.options.tolerance !== \"pointer\" && this.helperProportions[this.floating ? \"width\" : \"height\"] > item[this.floating ? \"width\" : \"height\"])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) && // Right Half\n\t\t\t\tx2 - (this.helperProportions.width / 2) < r && // Left Half\n\t\t\t\tt < y1 + (this.helperProportions.height / 2) && // Bottom Half\n\t\t\t\ty2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === \"x\") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === \"y\") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection === \"right\") || verticalDirection === \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection === \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection === \"right\" && isOverRightHalf) || (horizontalDirection === \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection === \"down\" && isOverBottomHalf) || (verticalDirection === \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tcur = $(connectWith[i]);\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tinst = $.data(cur[j], this.widgetFullName);\n\t\t\t\t\tif(inst && inst !== this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), inst]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), this]);\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor (i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each( addItems );\n\t\t}\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] === item.item[0]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tcur = $(connectWith[i]);\n\t\t\t\tfor (j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tinst = $.data(cur[j], this.widgetFullName);\n\t\t\t\t\tif(inst && inst !== this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i = queries.length - 1; i >= 0; i--) {\n\t\t\ttargetData = queries[i][1];\n\t\t\t_queries = queries[i][0];\n\n\t\t\tfor (j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\titem = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + \"-item\", targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tvar i, item, t, p;\n\n\t\tfor (i = this.items.length - 1; i >= 0; i--){\n\t\t\titem = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tp = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width = this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar className,\n\t\t\to = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor === String) {\n\t\t\tclassName = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar nodeName = that.currentItem[0].nodeName.toLowerCase(),\n\t\t\t\t\t\telement = $( \"<\" + nodeName + \">\", that.document[0] )\n\t\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\");\n\n\t\t\t\t\tif ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat.currentItem.children().each(function() {\n\t\t\t\t\t\t\t$( \"<td>&#160;</td>\", that.document[0] )\n\t\t\t\t\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t\t\t\t\t.appendTo( element );\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css(\"paddingTop\")||0, 10) - parseInt(that.currentItem.css(\"paddingBottom\")||0, 10)); }\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css(\"paddingLeft\")||0, 10) - parseInt(that.currentItem.css(\"paddingRight\")||0, 10)); }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// get innermost container that intersects with item\n\t\tfor (i = this.containers.length - 1; i >= 0; i--) {\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0])) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tif (!this.containers[innermostIndex].containerCache.over) {\n\t\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating(this.currentItem);\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"clientX\" : \"clientY\";\n\n\t\t\tfor (j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif(this.items[j].item[0] === this.currentItem[0]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[j].item.offset()[posProperty];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(this.currentContainer === this.containers[innermostIndex]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem);\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif(!helper.parents(\"body\").length) {\n\t\t\t$(o.appendTo !== \"parent\" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\t\t}\n\n\t\tif(helper[0] === this.currentItem[0]) {\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\t\t}\n\n\t\tif(!helper[0].style.width || o.forceHelperSize) {\n\t\t\thelper.width(this.currentItem.width());\n\t\t}\n\t\tif(!helper[0].style.height || o.forceHelperSize) {\n\t\t\thelper.height(this.currentItem.height());\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t// with an ugly IE fix\n\t\tif( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === \"html\" && $.ui.ie)) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition === \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif(o.containment === \"parent\") {\n\t\t\to.containment = this.helper[0].parentNode;\n\t\t}\n\t\tif(o.containment === \"document\" || o.containment === \"window\") {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$(o.containment === \"document\" ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t($(o.containment === \"document\" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tce = $(o.containment)[0];\n\t\t\tco = $(o.containment).offset();\n\t\t\tover = ($(ce).css(\"overflow\") !== \"hidden\");\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n\t\t\tscrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition === \"relative\" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) {\n\t\t\t\t\tpageX = this.containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) {\n\t\t\t\t\tpageY = this.containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) {\n\t\t\t\t\tpageX = this.containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) {\n\t\t\t\t\tpageY = this.containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\ttop = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top -\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top\t-\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left\t-\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === \"down\" ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter === this.counter) {\n\t\t\t\tthis.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) {\n\t\t\tthis.placeholder.before(this.currentItem);\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] === this.currentItem[0]) {\n\t\t\tfor(i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] === \"auto\" || this._storedCSS[i] === \"static\") {\n\t\t\t\t\tthis._storedCSS[i] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) {\n\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\t}\n\t\tif((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {\n\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor (i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif (!noPropagation) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif(this._storedOpacity) {\n\t\t\tthis.helper.css(\"opacity\", this._storedOpacity);\n\t\t}\n\t\tif(this._storedZIndex) {\n\t\t\tthis.helper.css(\"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex);\n\t\t}\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (i=0; i < delayedTriggers.length; i++) {\n\t\t\t\t\tdelayedTriggers[i].call(this, event);\n\t\t\t\t} //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) {\n\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] !== this.currentItem[0]) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (i=0; i < delayedTriggers.length; i++) {\n\t\t\t\tdelayedTriggers[i].call(this, event);\n\t\t\t} //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n\n/*!\n * jQuery UI Accordion 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/accordion/\n */\n\n\nvar accordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t// ARIA\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-state-default \" +\n\t\t\t\t\"ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom \" +\n\t\t\t\t\"ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find(\".ui-state-disabled\").length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\t\t// was active, active panel still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tthis.headers = this.element.find( this.options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-state-default ui-corner-all\" );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.filter( \":not(.ui-accordion-content-active)\" )\n\t\t\t.hide();\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" )\n\t\t\t.removeClass( \"ui-corner-all\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr({\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t});\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\"aria-expanded\": \"true\"\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n/*!\n * jQuery UI Menu 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/menu/\n */\n\n\nvar menu = $.widget( \"ui.menu\", {\n\tversion: \"1.11.0\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left-1 top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t});\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) && $( this.document[ 0 ].activeElement ).closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.find( this.options.items ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-menu-icons ui-front\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeUniqueId()\n\t\t\t.removeClass( \"ui-state-hover\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t.children().each( function() {\n\t\t\t\tvar elem = $( this );\n\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\telem.remove();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.find( this.options.items ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.find( this.options.items ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.is( \"[aria-haspopup='true']\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis.element.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-front\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.parent(),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Don't refresh list items that are already adapted\n\t\titems.not( \".ui-menu-item, .ui-menu-divider\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.uniqueId()\n\t\t\t.attr({\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: this._itemRole()\n\t\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.element.find( \".ui-menu-icon\" )\n\t\t\t\t.removeClass( this.options.icons.submenu )\n\t\t\t\t.addClass( value.submenu );\n\t\t}\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.addClass( \"ui-state-focus\" ).removeClass( \"ui-state-active\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \".ui-state-active\" ).not( \".ui-state-focus\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.find( this.options.items )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.find( this.options.items )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n\n/*!\n * jQuery UI Autocomplete 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/autocomplete/\n */\n\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.11.0\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\tthis.isMultiLine =\n\t\t\t// Textareas are always multi-line\n\t\t\tisTextarea ? true :\n\t\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t\t// IE also treats inputs as contentEditable\n\t\t\tisInput ? false :\n\t\t\t// All other element types are determined by whether or not they're contentEditable\n\t\t\tthis.element.prop( \"isContentEditable\" );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete ui-front\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu({\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.hide()\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && jQuery.trim( label ).length ) {\n\t\t\t\t\tthis.liveRegion.children().hide();\n\t\t\t\t\t$( \"<div>\" ).text( label ).appendTo( this.liveRegion );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse([]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn $.proxy(function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}, this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t});\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" ).text( item.label ).appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.children().hide();\n\t\t$( \"<div>\" ).text( message ).appendTo( this.liveRegion );\n\t}\n});\n\nvar autocomplete = $.ui.autocomplete;\n\n\n/*!\n * jQuery UI Button 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/button/\n */\n\n\nvar lastActive,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar form = $( this );\n\t\tsetTimeout(function() {\n\t\t\tform.find( \":ui-button\" ).button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tname = name.replace( /'/g, \"\\\\'\" );\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"'][type=radio]\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"'][type=radio]\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.11.0\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Can't use _focusable() because the element that receives focus\n\t\t// and the element that gets the ui-state-focus class are different\n\t\tthis._on({\n\t\t\tfocus: function() {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tblur: function() {\n\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t// see #8559, we bind to blur here in case the button element loses\n\t\t\t\t// focus between keydown and keyup, it would be left in an \"active\" state\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace + \" blur\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" ui-state-active \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget().toggleClass( \"ui-state-disabled\", !!value );\n\t\t\tthis.element.prop( \"disabled\", !!value );\n\t\t\tif ( value ) {\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\",\n\t\t\tallButtons = this.element.find( this.options.items ),\n\t\t\texistingButtons = allButtons.filter( \":ui-button\" );\n\n\t\t// Initialize new buttons\n\t\tallButtons.not( \":ui-button\" ).button();\n\n\t\t// Refresh existing buttons\n\t\texistingButtons.button( \"refresh\" );\n\n\t\tthis.buttons = allButtons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\nvar button = $.ui.button;\n\n\n/*!\n * jQuery UI Datepicker 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/datepicker/\n */\n\n\n$.extend($.ui, { datepicker: { version: \"1.11.0\" } });\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[\"\"] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], // For formatting\n\t\tdayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], // For formatting\n\t\tdayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], // For formatting\n\t\tdayNamesMin: [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional[\"\"]);\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ]);\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover($(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param  settings  object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function(settings) {\n\t\tdatepicker_extendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t * @param  settings  object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function(target, settings) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = (nodeName === \"div\" || nodeName === \"span\");\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {});\n\t\tif (nodeName === \"input\") {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\"); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover($(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp);\n\t\tthis._autoSize(inst);\n\t\t$.data(target, \"datepicker\", inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get(inst, \"appendText\"),\n\t\t\tisRTL = this._get(inst, \"isRTL\");\n\n\t\tif (inst.append) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif (appendText) {\n\t\t\tinst.append = $(\"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\");\n\t\t\tinput[isRTL ? \"before\" : \"after\"](inst.append);\n\t\t}\n\n\t\tinput.unbind(\"focus\", this._showDatepicker);\n\n\t\tif (inst.trigger) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get(inst, \"showOn\");\n\t\tif (showOn === \"focus\" || showOn === \"both\") { // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\t}\n\t\tif (showOn === \"button\" || showOn === \"both\") { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get(inst, \"buttonText\");\n\t\t\tbuttonImage = this._get(inst, \"buttonImage\");\n\t\t\tinst.trigger = $(this._get(inst, \"buttonImageOnly\") ?\n\t\t\t\t$(\"<img/>\").addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$(\"<button type='button'></button>\").addClass(this._triggerClass).\n\t\t\t\t\thtml(!buttonImage ? buttonText : $(\"<img/>\").attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? \"before\" : \"after\"](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, \"autoSize\") && !inst.inline) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date(2009, 12 - 1, 20), // Ensure double digits\n\t\t\t\tdateFormat = this._get(inst, \"dateFormat\");\n\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tfindMax = function(names) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor (i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\"))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\"))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr(\"size\", this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv);\n\t\t$.data(target, \"datepicker\", inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param  input element - ignored\n\t * @param  date\tstring or Date - the initial date to display\n\t * @param  onSelect  function - the function to call when a date is selected\n\t * @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t * @param  pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $(\"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\");\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$(\"body\").append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], \"datepicker\", inst);\n\t\t}\n\t\tdatepicker_extendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor === Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css(\"left\", (this._pos[0] + 20) + \"px\").css(\"top\", this._pos[1] + \"px\");\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI) {\n\t\t\t$.blockUI(this.dpDiv);\n\t\t}\n\t\t$.data(this._dialogInput[0], \"datepicker\", inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function(target) {\n\t\tvar nodeName,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, \"datepicker\");\n\t\tif (nodeName === \"input\") {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind(\"focus\", this._showDatepicker).\n\t\t\t\tunbind(\"keydown\", this._doKeyDown).\n\t\t\t\tunbind(\"keypress\", this._doKeyPress).\n\t\t\t\tunbind(\"keyup\", this._doKeyUp);\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function(target) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName === \"input\") {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter(\"button\").\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter(\"img\").css({opacity: \"1.0\", cursor: \"\"});\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\tinline = $target.children(\".\" + this._inlineClass);\n\t\t\tinline.children().removeClass(\"ui-state-disabled\");\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value === target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function(target) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName === \"input\") {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter(\"button\").\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter(\"img\").css({opacity: \"0.5\", cursor: \"default\"});\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\tinline = $target.children(\".\" + this._inlineClass);\n\t\t\tinline.children().addClass(\"ui-state-disabled\");\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value === target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param  target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] === target) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param  target  element - the target input field or division or span\n\t * @return  object - the associated instance data\n\t * @throws  error if a jQuery problem getting data\n\t */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, \"datepicker\");\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param  target  element - the target input field or division or span\n\t * @param  name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param  value   any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst(target);\n\n\t\tif (arguments.length === 2 && typeof name === \"string\") {\n\t\t\treturn (name === \"defaults\" ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name === \"all\" ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif (typeof name === \"string\") {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\n\t\tif (inst) {\n\t\t\tif (this._curInst === inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker(target, true);\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\");\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\");\n\t\t\tdatepicker_extendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\t}\n\t\t\tif (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker(target);\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker(target);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param  target  element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param  target element - the target input field or division or span\n\t * @param  date\tDate - the new date\n\t */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param  target element - the target input field or division or span\n\t * @param  noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline) {\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\t}\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst(event.target),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is(\".ui-datepicker-rtl\");\n\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing) {\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $(\"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv);\n\t\t\t\t\t\tif (sel[0]) {\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get(inst, \"onSelect\");\n\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._clearDate(event.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday(event.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, -7, \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, +7, \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst(event.target);\n\n\t\tif ($.datepicker._get(inst, \"constrainInput\")) {\n\t\t\tchars = $.datepicker._possibleChars($.datepicker._get(inst, \"dateFormat\"));\n\t\t\tchr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < \" \" || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst(event.target);\n\n\t\tif (inst.input.val() !== inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param  input  element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() !== \"input\") { // find from button/image trigger\n\t\t\tinput = $(\"input\", input.parentNode)[0];\n\t\t}\n\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst !== inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get(inst, \"beforeShow\");\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove(inst.settings, beforeShowSettings);\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\n\t\tif ($.datepicker._inDialog) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css(\"position\") === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t});\n\n\t\toffset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: \"absolute\", display: \"block\", top: \"-1000px\"});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : (isFixed ? \"fixed\" : \"absolute\")), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\"});\n\n\t\tif (!inst.inline) {\n\t\t\tshowAnim = $.datepicker._get(inst, \"showAnim\");\n\t\t\tduration = $.datepicker._get(inst, \"duration\");\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, \"showOptions\"), duration);\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[showAnim || \"show\"](showAnim ? duration : null);\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.focus();\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tinst.dpDiv.find(\".\" + this._dayOverClass + \" a\");\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths(inst),\n\t\t\tcols = numMonths[1],\n\t\t\twidth = 17;\n\n\t\tinst.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\");\n\t\tif (cols > 1) {\n\t\t\tinst.dpDiv.addClass(\"ui-datepicker-multi-\" + cols).css(\"width\", (width * cols) + \"em\");\n\t\t}\n\t\tinst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? \"add\" : \"remove\") +\n\t\t\t\"Class\"](\"ui-datepicker-multi\");\n\t\tinst.dpDiv[(this._get(inst, \"isRTL\") ? \"add\" : \"remove\") +\n\t\t\t\"Class\"](\"ui-datepicker-rtl\");\n\n\t\tif (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.focus();\n\t\t}\n\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),\n\t\t\tviewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, \"isRTL\") ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar position,\n\t\t\tinst = this._getInst(obj),\n\t\t\tisRTL = this._get(inst, \"isRTL\");\n\n\t\twhile (obj && (obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? \"previousSibling\" : \"nextSibling\"];\n\t\t}\n\n\t\tposition = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param  input  element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function(input) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif (!inst || (input && inst !== $.data(input, \"datepicker\"))) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._datepickerShowing) {\n\t\t\tshowAnim = this._get(inst, \"showAnim\");\n\t\t\tduration = this._get(inst, \"duration\");\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, \"showOptions\"), duration, postProcess);\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[(showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t(showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\"))]((showAnim ? duration : null), postProcess);\n\t\t\t}\n\n\t\t\tif (!showAnim) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get(inst, \"onClose\");\n\t\t\tif (onClose) {\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : \"\"), inst]);\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: \"absolute\", left: \"0\", top: \"-100px\" });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$(\"body\").append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind(\".ui-datepicker-calendar\");\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents(\"#\" + $.datepicker._mainDivId).length === 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period === \"M\" ? this._get(inst, \"showCurrentAtPos\") : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar date,\n\t\t\ttarget = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tif (this._get(inst, \"gotoCurrent\") && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tinst[\"selected\" + (period === \"M\" ? \"Month\" : \"Year\")] =\n\t\tinst[\"draw\" + (period === \"M\" ? \"Month\" : \"Year\")] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar inst,\n\t\t\ttarget = $(id);\n\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $(\"a\", td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tthis._selectDate(target, \"\");\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar onSelect,\n\t\t\ttarget = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input) {\n\t\t\tinst.input.val(dateStr);\n\t\t}\n\t\tthis._updateAlternate(inst);\n\n\t\tonSelect = this._get(inst, \"onSelect\");\n\t\tif (onSelect) {\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\t} else if (inst.input) {\n\t\t\tinst.input.trigger(\"change\"); // fire the change event\n\t\t}\n\n\t\tif (inst.inline){\n\t\t\tthis._updateDatepicker(inst);\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) !== \"object\") {\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get(inst, \"altField\");\n\n\t\tif (altField) { // update alternate field too\n\t\t\taltFormat = this._get(inst, \"altFormat\") || this._get(inst, \"dateFormat\");\n\t\t\tdate = this._getDate(inst);\n\t\t\tdateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param  date  Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), \"\"];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param  date  Date - the date to get the week for\n\t * @return  number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function(date) {\n\t\tvar time,\n\t\t\tcheckDate = new Date(date.getTime());\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param  format string - the expected format of the date\n\t * @param  value string - the date in the above format\n\t * @param  settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff  number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return  Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = (typeof value === \"object\" ? value.toString() : value + \"\");\n\t\tif (value === \"\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = (typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),\n\t\t\tdayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n\t\t\tdayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function(match) {\n\t\t\t\tvar isDoubled = lookAhead(match),\n\t\t\t\t\tsize = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n\t\t\t\t\t(match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))),\n\t\t\t\t\tdigits = new RegExp(\"^\\\\d{1,\" + size + \"}\"),\n\t\t\t\t\tnum = value.substring(iValue).match(digits);\n\t\t\t\tif (!num) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[0].length;\n\t\t\t\treturn parseInt(num[0], 10);\n\t\t\t},\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function(match, shortNames, longNames) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\t\t\treturn [ [k, v] ];\n\t\t\t\t\t}).sort(function (a, b) {\n\t\t\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t\t\t});\n\n\t\t\t\t$.each(names, function (i, pair) {\n\t\t\t\t\tvar name = pair[1];\n\t\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n\t\t\t\t\t\tindex = pair[0];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif (value.charAt(iValue) !== format.charAt(iFormat)) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal) {\n\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber(\"d\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName(\"D\", dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber(\"o\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber(\"m\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName(\"M\", monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber(\"y\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date(getNumber(\"@\"));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date((getNumber(\"!\") - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\")){\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (iValue < value.length){\n\t\t\textra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif (year === -1) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if (year < 100) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\t}\n\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d  - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o  - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D  - day name short\n\t * DD - day name long\n\t * m  - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M  - month name short\n\t * MM - month name long\n\t * y  - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param  format string - the desired format of the date\n\t * @param  date Date - the date value to format\n\t * @param  settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return  string - the date in the above format\n\t */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n\t\t\tdayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function(match, value, len) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif (lookAhead(match)) {\n\t\t\t\t\twhile (num.length < len) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function(match, value, shortNames, longNames) {\n\t\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif (date) {\n\t\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal) {\n\t\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber(\"d\", date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName(\"D\", date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber(\"o\",\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber(\"m\", date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName(\"M\", date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += (lookAhead(\"y\") ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? \"0\" : \"\") + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\")) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal) {\n\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\")) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() === inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get(inst, \"dateFormat\"),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate(inst),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig(inst);\n\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tdates = (noDefault ? \"\" : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, \"defaultDate\"), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function(offset) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t\t$.datepicker._getDate(inst) : null) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec(offset);\n\n\t\t\t\twhile (matches) {\n\t\t\t\t\tswitch (matches[2] || \"d\") {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t\t}\n\t\t\t\treturn new Date(year, month, day);\n\t\t\t},\n\t\t\tnewDate = (date == null || date === \"\" ? defaultDate : (typeof date === \"string\" ? offsetString(date) :\n\t\t\t\t(typeof date === \"number\" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\n\t\tnewDate = (newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param  date  (Date) the date to check\n\t * @return  (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {\n\t\t\tthis._notifyChange(inst);\n\t\t}\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? \"\" : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() === \"\") ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, \"stepMonths\"),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find(\"[data-handler]\").map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\t$.datepicker._adjustDate(id, -stepMonths, \"M\");\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\t$.datepicker._adjustDate(id, +stepMonths, \"M\");\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\t$.datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\t$.datepicker._selectDay(id, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\t$.datepicker._selectMonthYear(id, this, \"M\");\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\t$.datepicker._selectMonthYear(id, this, \"Y\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute(\"data-event\"), handler[this.getAttribute(\"data-handler\")]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time\n\t\t\tisRTL = this._get(inst, \"isRTL\"),\n\t\t\tshowButtonPanel = this._get(inst, \"showButtonPanel\"),\n\t\t\thideIfNoPrevNext = this._get(inst, \"hideIfNoPrevNext\"),\n\t\t\tnavigationAsDateFormat = this._get(inst, \"navigationAsDateFormat\"),\n\t\t\tnumMonths = this._getNumberOfMonths(inst),\n\t\t\tshowCurrentAtPos = this._get(inst, \"showCurrentAtPos\"),\n\t\t\tstepMonths = this._get(inst, \"stepMonths\"),\n\t\t\tisMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),\n\t\t\tcurrentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay))),\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tmaxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get(inst, \"prevText\");\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\n\t\tprev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t(hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\"+ prevText +\"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\"));\n\n\t\tnextText = this._get(inst, \"nextText\");\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\n\t\tnext = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t(hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\"+ nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\"));\n\n\t\tcurrentText = this._get(inst, \"currentText\");\n\t\tgotoDate = (this._get(inst, \"gotoCurrent\") && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\n\t\tcontrols = (!inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get(inst, \"closeText\") + \"</button>\" : \"\");\n\n\t\tbuttonPanel = (showButtonPanel) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + (isRTL ? controls : \"\") +\n\t\t\t(this._isInRange(inst, gotoDate) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\") + (isRTL ? \"\" : controls) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt(this._get(inst, \"firstDay\"),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\n\t\tshowWeek = this._get(inst, \"showWeek\");\n\t\tdayNames = this._get(inst, \"dayNames\");\n\t\tdayNamesMin = this._get(inst, \"dayNamesMin\");\n\t\tmonthNames = this._get(inst, \"monthNames\");\n\t\tmonthNamesShort = this._get(inst, \"monthNamesShort\");\n\t\tbeforeShowDay = this._get(inst, \"beforeShowDay\");\n\t\tshowOtherMonths = this._get(inst, \"showOtherMonths\");\n\t\tselectOtherMonths = this._get(inst, \"selectOtherMonths\");\n\t\tdefaultDate = this._getDefaultDate(inst);\n\t\thtml = \"\";\n\t\tdow;\n\t\tfor (row = 0; row < numMonths[0]; row++) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (col = 0; col < numMonths[1]; col++) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif (numMonths[1] > 1) {\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + (isRTL ? \"right\" : \"left\"); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + (isRTL ? \"left\" : \"right\"); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : \"\") +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : \"\") +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = (showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get(inst, \"weekHeader\") + \"</th>\" : \"\");\n\t\t\t\tfor (dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tday = (dow + firstDay) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ((dow + firstDay + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[day] + \"'>\" + dayNamesMin[day] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\t}\n\t\t\t\tleadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tcurRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tnumRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = (!showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get(inst, \"calculateWeek\")(printDate) + \"</td>\");\n\t\t\t\t\tfor (dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tdaySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, \"\"]);\n\t\t\t\t\t\totherMonth = (printDate.getMonth() !== drawMonth);\n\t\t\t\t\t\tunselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? \" ui-datepicker-other-month\" : \"\") + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\": \"\") +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? \" title='\" + daySettings[2].replace(/'/g, \"&#39;\") + \"'\" : \"\") + // cell title\n\t\t\t\t\t\t\t(unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\") + \">\" + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \"&#xa0;\" : // display for other months\n\t\t\t\t\t\t\t(unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t(printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\") +\n\t\t\t\t\t\t\t(printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? \" ui-priority-secondary\" : \"\") + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\")) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + (isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col === numMonths[1]-1) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\");\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get(inst, \"changeMonth\"),\n\t\t\tchangeYear = this._get(inst, \"changeYear\"),\n\t\t\tshowMonthAfterYear = this._get(inst, \"showMonthAfterYear\"),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// month selection\n\t\tif (secondary || !changeMonth) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[drawMonth] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = (minDate && minDate.getFullYear() === drawYear);\n\t\t\tinMaxYear = (maxDate && maxDate.getFullYear() === drawYear);\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t(month === drawMonth ? \" selected='selected'\" : \"\") +\n\t\t\t\t\t\t\">\" + monthNamesShort[month] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif (!showMonthAfterYear) {\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? \"&#xa0;\" : \"\");\n\t\t}\n\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif (secondary || !changeYear) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get(inst, \"yearRange\").split(\":\");\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+\\-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+\\-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tyear = determineYear(years[0]);\n\t\t\t\tendYear = Math.max(year, determineYear(years[1] || \"\"));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t(year === drawYear ? \" selected='selected'\" : \"\") +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get(inst, \"yearSuffix\");\n\t\tif (showMonthAfterYear) {\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? \"&#xa0;\" : \"\") + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period === \"Y\" ? offset : 0),\n\t\t\tmonth = inst.drawMonth + (period === \"M\" ? offset : 0),\n\t\t\tday = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === \"D\" ? offset : 0),\n\t\t\tdate = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period === \"M\" || period === \"Y\") {\n\t\t\tthis._notifyChange(inst);\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tnewDate = (minDate && date < minDate ? minDate : date);\n\t\treturn (maxDate && newDate > maxDate ? maxDate : newDate);\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, \"onChangeMonthYear\");\n\t\tif (onChange) {\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, \"numberOfMonths\");\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths === \"number\" ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + \"Date\"), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst),\n\t\t\tdate = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\n\t\tif (offset < 0) {\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\t}\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get(inst, \"yearRange\");\n\t\t\tif (years){\n\t\t\t\tyearSplit = years.split(\":\");\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt(yearSplit[0], 10);\n\t\t\t\tmaxYear = parseInt(yearSplit[1], 10);\n\t\t\t\tif ( yearSplit[0].match(/[+\\-].*/) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[1].match(/[+\\-].*/) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()) &&\n\t\t\t(!minYear || date.getFullYear() >= minYear) &&\n\t\t\t(!maxYear || date.getFullYear() <= maxYear));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, \"shortYearCutoff\");\n\t\tshortYearCutoff = (typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, \"dayNamesShort\"), dayNames: this._get(inst, \"dayNames\"),\n\t\t\tmonthNamesShort: this._get(inst, \"monthNamesShort\"), monthNames: this._get(inst, \"monthNames\")};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, \"dateFormat\"), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover(dpDiv) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.delegate(selector, \"mouseout\", function() {\n\t\t\t$(this).removeClass(\"ui-state-hover\");\n\t\t\tif (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n\t\t\t\t$(this).removeClass(\"ui-datepicker-prev-hover\");\n\t\t\t}\n\t\t\tif (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n\t\t\t\t$(this).removeClass(\"ui-datepicker-next-hover\");\n\t\t\t}\n\t\t})\n\t\t.delegate(selector, \"mouseover\", function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? dpDiv.parent()[0] : datepicker_instActive.input[0])) {\n\t\t\t\t$(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\");\n\t\t\t\t$(this).addClass(\"ui-state-hover\");\n\t\t\t\tif (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n\t\t\t\t\t$(this).addClass(\"ui-datepicker-prev-hover\");\n\t\t\t\t}\n\t\t\t\tif (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n\t\t\t\t\t$(this).addClass(\"ui-datepicker-next-hover\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props) {\n\t\tif (props[name] == null) {\n\t\t\ttarget[name] = props[name];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ($(\"#\"+$.datepicker._mainDivId).length === 0) {\n\t\t$(\"body\").append($.datepicker.dpDiv);\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options === \"string\" && (options === \"isDisabled\" || options === \"getDate\" || options === \"widget\")) {\n\t\treturn $.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\t}\n\tif (options === \"option\" && arguments.length === 2 && typeof arguments[1] === \"string\") {\n\t\treturn $.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\t}\n\treturn this.each(function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.11.0\";\n\nvar datepicker = $.datepicker;\n\n\n/*!\n * jQuery UI Dialog 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/dialog/\n */\n\n\nvar dialog = $.widget( \"ui.dialog\", {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoOpen: true,\n\t\tbuttons: [],\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"Close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// Ensure the titlebar is always visible\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\ttitle: null,\n\t\twidth: 300,\n\n\t\t// callbacks\n\t\tbeforeClose: null,\n\t\tclose: null,\n\t\tdrag: null,\n\t\tdragStart: null,\n\t\tdragStop: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresize: null,\n\t\tresizeStart: null,\n\t\tresizeStop: null\n\t},\n\n\tsizeRelatedOptions: {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\n\tresizableRelatedOptions: {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t},\n\n\t_create: function() {\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[ 0 ].style.display,\n\t\t\twidth: this.element[ 0 ].style.width,\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\n\t\t\theight: this.element[ 0 ].style.height\n\t\t};\n\t\tthis.originalPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\n\t\tthis._createWrapper();\n\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeAttr( \"title\" )\n\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.appendTo( this.uiDialog );\n\n\t\tthis._createTitlebar();\n\t\tthis._createButtonPane();\n\n\t\tif ( this.options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( this.options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tthis._trackFocus();\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\t\tif ( element && (element.jquery || element.nodeType) ) {\n\t\t\treturn $( element );\n\t\t}\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toriginalPosition = this.originalPosition;\n\n\t\tthis._destroyOverlay();\n\n\t\tthis.element\n\t\t\t.removeUniqueId()\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.css( this.originalCss )\n\t\t\t// Without detaching first, the following becomes really slow\n\t\t\t.detach();\n\n\t\tthis.uiDialog.stop( true, true ).remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toriginalPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tdisable: $.noop,\n\tenable: $.noop,\n\n\tclose: function( event ) {\n\t\tvar activeElement,\n\t\t\tthat = this;\n\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\t\tthis._focusedElement = null;\n\t\tthis._destroyOverlay();\n\t\tthis._untrackInstance();\n\n\t\tif ( !this.opener.filter( \":focusable\" ).focus().length ) {\n\n\t\t\t// support: IE9\n\t\t\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\t\t\ttry {\n\t\t\t\tactiveElement = this.document[ 0 ].activeElement;\n\n\t\t\t\t// Support: IE9, IE10\n\t\t\t\t// If the <body> is blurred, IE will switch windows, see #4520\n\t\t\t\tif ( activeElement && activeElement.nodeName.toLowerCase() !== \"body\" ) {\n\n\t\t\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\n\t\t\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\n\t\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\n\t\t\t\t\t$( activeElement ).blur();\n\t\t\t\t}\n\t\t\t} catch ( error ) {}\n\t\t}\n\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\tthat._trigger( \"close\", event );\n\t\t});\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\tmoveToTop: function() {\n\t\tthis._moveToTop();\n\t},\n\n\t_moveToTop: function( event, silent ) {\n\t\tvar moved = false,\n\t\t\tzIndicies = this.uiDialog.siblings( \".ui-front:visible\" ).map(function() {\n\t\t\t\treturn +$( this ).css( \"z-index\" );\n\t\t\t}).get(),\n\t\t\tzIndexMax = Math.max.apply( null, zIndicies );\n\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\n\t\t\tmoved = true;\n\t\t}\n\n\t\tif ( moved && !silent ) {\n\t\t\tthis._trigger( \"focus\", event );\n\t\t}\n\t\treturn moved;\n\t},\n\n\topen: function() {\n\t\tvar that = this;\n\t\tif ( this._isOpen ) {\n\t\t\tif ( this._moveToTop() ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = true;\n\t\tthis.opener = $( this.document[ 0 ].activeElement );\n\n\t\tthis._size();\n\t\tthis._position();\n\t\tthis._createOverlay();\n\t\tthis._moveToTop( null, true );\n\t\tthis._show( this.uiDialog, this.options.show, function() {\n\t\t\tthat._focusTabbable();\n\t\t\tthat._trigger( \"focus\" );\n\t\t});\n\n\t\tthis._trigger( \"open\" );\n\t},\n\n\t_focusTabbable: function() {\n\t\t// Set focus to the first match:\n\t\t// 1. An element that was focused previously\n\t\t// 2. First element inside the dialog matching [autofocus]\n\t\t// 3. Tabbable element inside the content element\n\t\t// 4. Tabbable element inside the buttonpane\n\t\t// 5. The close button\n\t\t// 6. The dialog itself\n\t\tvar hasFocus = this._focusedElement;\n\t\tif ( !hasFocus ) {\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.element.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialog;\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\t},\n\n\t_keepFocus: function( event ) {\n\t\tfunction checkFocus() {\n\t\t\tvar activeElement = this.document[0].activeElement,\n\t\t\t\tisActive = this.uiDialog[0] === activeElement ||\n\t\t\t\t\t$.contains( this.uiDialog[0], activeElement );\n\t\t\tif ( !isActive ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t}\n\t\tevent.preventDefault();\n\t\tcheckFocus.call( this );\n\t\t// support: IE\n\t\t// IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n\t\t// so we check again later\n\t\tthis._delay( checkFocus );\n\t},\n\n\t_createWrapper: function() {\n\t\tthis.uiDialog = $(\"<div>\")\n\t\t\t.addClass( \"ui-dialog ui-widget ui-widget-content ui-corner-all ui-front \" +\n\t\t\t\tthis.options.dialogClass )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: \"dialog\"\n\t\t\t})\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._on( this.uiDialog, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// prevent tabbing out of dialogs\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\n\t\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\t\tlast = tabbables.filter( \":last\" );\n\n\t\t\t\tif ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tfirst.focus();\n\t\t\t\t\t});\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tlast.focus();\n\t\t\t\t\t});\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: function( event ) {\n\t\t\t\tif ( this._moveToTop( event ) ) {\n\t\t\t\t\tthis._focusTabbable();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// We assume that any existing aria-describedby attribute means\n\t\t// that the dialog content is marked up properly\n\t\t// otherwise we brute force the content as the description\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\n\t\t\tthis.uiDialog.attr({\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\n\t\t\t});\n\t\t}\n\t},\n\n\t_createTitlebar: function() {\n\t\tvar uiDialogTitle;\n\n\t\tthis.uiDialogTitlebar = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix\" )\n\t\t\t.prependTo( this.uiDialog );\n\t\tthis._on( this.uiDialogTitlebar, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// Don't prevent click on close button (#8838)\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tthis.uiDialog.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// support: IE\n\t\t// Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n\t\t// dialog in IE (#9312)\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\n\t\t\t.button({\n\t\t\t\tlabel: this.options.closeText,\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: \"ui-icon-closethick\"\n\t\t\t\t},\n\t\t\t\ttext: false\n\t\t\t})\n\t\t\t.addClass( \"ui-dialog-titlebar-close\" )\n\t\t\t.appendTo( this.uiDialogTitlebar );\n\t\tthis._on( this.uiDialogTitlebarClose, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t});\n\n\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t.prependTo( this.uiDialogTitlebar );\n\t\tthis._title( uiDialogTitle );\n\n\t\tthis.uiDialog.attr({\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\t},\n\n\t_title: function( title ) {\n\t\tif ( !this.options.title ) {\n\t\t\ttitle.html( \"&#160;\" );\n\t\t}\n\t\ttitle.text( this.options.title );\n\t},\n\n\t_createButtonPane: function() {\n\t\tthis.uiDialogButtonPane = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\tthis.uiButtonSet = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t.appendTo( this.uiDialogButtonPane );\n\n\t\tthis._createButtons();\n\t},\n\n\t_createButtons: function() {\n\t\tvar that = this,\n\t\t\tbuttons = this.options.buttons;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t\treturn;\n\t\t}\n\n\t\t$.each( buttons, function( name, props ) {\n\t\t\tvar click, buttonOptions;\n\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t{ click: props, text: name } :\n\t\t\t\tprops;\n\t\t\t// Default to a non-submitting button\n\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t// Change the context for the click callback to be the main element\n\t\t\tclick = props.click;\n\t\t\tprops.click = function() {\n\t\t\t\tclick.apply( that.element[ 0 ], arguments );\n\t\t\t};\n\t\t\tbuttonOptions = {\n\t\t\t\ticons: props.icons,\n\t\t\t\ttext: props.showText\n\t\t\t};\n\t\t\tdelete props.icons;\n\t\t\tdelete props.showText;\n\t\t\t$( \"<button></button>\", props )\n\t\t\t\t.button( buttonOptions )\n\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t});\n\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" +\n\t\t\t\t\t\t\"top\" + (top >= 0 ? \"+\" : \"\") + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\t$( this ).removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\thandles = options.resizable,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css(\"position\"),\n\t\t\tresizeHandles = typeof handles === \"string\" ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar offset = that.uiDialog.offset(),\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.height = that.uiDialog.height();\n\t\t\t\toptions.width = that.uiDialog.width();\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" +\n\t\t\t\t\t\t\"top\" + (top >= 0 ? \"+\" : \"\") + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position );\n\t},\n\n\t_trackFocus: function() {\n\t\tthis._on( this.widget(), {\n\t\t\t\"focusin\": function( event ) {\n\t\t\t\tthis._untrackInstance();\n\t\t\t\tthis._trackingInstances().unshift( this );\n\t\t\t\tthis._focusedElement = $( event.target );\n\t\t\t}\n\t\t});\n\t},\n\n\t_untrackInstance: function() {\n\t\tvar instances = this._trackingInstances(),\n\t\t\texists = $.inArray( this, instances );\n\t\tif ( exists !== -1 ) {\n\t\t\tinstances.splice( exists, 1 );\n\t\t}\n\t},\n\n\t_trackingInstances: function() {\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\n\t\tif ( !instances ) {\n\t\t\tinstances = [];\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\n\t\t}\n\t\treturn instances;\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\treturn options.height === \"auto\" ?\n\t\t\toptions.minHeight :\n\t\t\tMath.min( options.minHeight, options.height );\n\t},\n\n\t_position: function() {\n\t\t// Need to show the dialog to get the actual offset in the position plugin\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( this.options.position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresize = false,\n\t\t\tresizableOptions = {};\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in that.sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in that.resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t\tthis._position();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tif ( key === \"dialogClass\" ) {\n\t\t\tuiDialog\n\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t.addClass( value );\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"buttons\" ) {\n\t\t\tthis._createButtons();\n\t\t}\n\n\t\tif ( key === \"closeText\" ) {\n\t\t\tthis.uiDialogTitlebarClose.button({\n\t\t\t\t// Ensure that we always pass a string\n\t\t\t\tlabel: \"\" + value\n\t\t\t});\n\t\t}\n\n\t\tif ( key === \"draggable\" ) {\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\n\t\t\tif ( isDraggable && !value ) {\n\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t}\n\n\t\t\tif ( !isDraggable && value ) {\n\t\t\t\tthis._makeDraggable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"position\" ) {\n\t\t\tthis._position();\n\t\t}\n\n\t\tif ( key === \"resizable\" ) {\n\t\t\t// currently resizable, becoming non-resizable\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\n\t\t\tif ( isResizable && !value ) {\n\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t}\n\n\t\t\t// currently resizable, changing handles\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t}\n\n\t\t\t// currently non-resizable, becoming resizable\n\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\tthis._makeResizable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"title\" ) {\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\n\t\t}\n\t},\n\n\t_size: function() {\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t// divs will both have width and height set, so we need to reset them\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\n\t\t\toptions = this.options;\n\n\t\t// Reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\tmaxHeight: \"none\",\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\n\t\t\t\"none\";\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\tthis.element.css({\n\t\t\t\tminHeight: minContentHeight,\n\t\t\t\tmaxHeight: maxContentHeight,\n\t\t\t\theight: \"auto\"\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\n\t\t}\n\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t},\n\n\t_blockFrames: function() {\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map(function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: iframe.outerWidth(),\n\t\t\t\t\theight: iframe.outerHeight()\n\t\t\t\t})\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.offset( iframe.offset() )[0];\n\t\t});\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_allowInteraction: function( event ) {\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: Remove hack when datepicker implements\n\t\t// the .ui-front logic (#8989)\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\n\t},\n\n\t_createOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We use a delay in case the overlay is created from an\n\t\t// event that we're going to be cancelling (#2804)\n\t\tvar isOpening = true;\n\t\tthis._delay(function() {\n\t\t\tisOpening = false;\n\t\t});\n\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\n\n\t\t\t// Prevent use of anchors and inputs\n\t\t\t// Using _on() for an event handler shared across many instances is\n\t\t\t// safe because the dialogs stack and must be closed in reverse order\n\t\t\tthis._on( this.document, {\n\t\t\t\tfocusin: function( event ) {\n\t\t\t\t\tif ( isOpening ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this._allowInteraction( event ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis._trackingInstances()[ 0 ]._focusTabbable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.overlay = $( \"<div>\" )\n\t\t\t.addClass( \"ui-widget-overlay ui-front\" )\n\t\t\t.appendTo( this._appendTo() );\n\t\tthis._on( this.overlay, {\n\t\t\tmousedown: \"_keepFocus\"\n\t\t});\n\t\tthis.document.data( \"ui-dialog-overlays\",\n\t\t\t(this.document.data( \"ui-dialog-overlays\" ) || 0) + 1 );\n\t},\n\n\t_destroyOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.overlay ) {\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\n\n\t\t\tif ( !overlays ) {\n\t\t\t\tthis.document\n\t\t\t\t\t.unbind( \"focusin\" )\n\t\t\t\t\t.removeData( \"ui-dialog-overlays\" );\n\t\t\t} else {\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\n\t\t\t}\n\n\t\t\tthis.overlay.remove();\n\t\t\tthis.overlay = null;\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Progressbar 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/progressbar/\n */\n\n\nvar progressbar = $.widget( \"ui.progressbar\", {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\tmax: 100,\n\t\tvalue: 0,\n\n\t\tchange: null,\n\t\tcomplete: null\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\t// Constrain initial value\n\t\tthis.oldValue = this.options.value = this._constrainedValue();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\t// Only set static values, aria-valuenow and aria-valuemax are\n\t\t\t\t// set inside _refreshValue()\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this.options.value;\n\t\t}\n\n\t\tthis.options.value = this._constrainedValue( newValue );\n\t\tthis._refreshValue();\n\t},\n\n\t_constrainedValue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\tnewValue = this.options.value;\n\t\t}\n\n\t\tthis.indeterminate = newValue === false;\n\n\t\t// sanitize value\n\t\tif ( typeof newValue !== \"number\" ) {\n\t\t\tnewValue = 0;\n\t\t}\n\n\t\treturn this.indeterminate ? false :\n\t\t\tMath.min( this.options.max, Math.max( this.min, newValue ) );\n\t},\n\n\t_setOptions: function( options ) {\n\t\t// Ensure \"value\" option is set after other values (like max)\n\t\tvar value = options.value;\n\t\tdelete options.value;\n\n\t\tthis._super( options );\n\n\t\tthis.options.value = this._constrainedValue( value );\n\t\tthis._refreshValue();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"max\" ) {\n\t\t\t// Don't allow a max less than min\n\t\t\tvalue = Math.max( this.min, value );\n\t\t}\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_percentage: function() {\n\t\treturn this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.options.value,\n\t\t\tpercentage = this._percentage();\n\n\t\tthis.valueDiv\n\t\t\t.toggle( this.indeterminate || value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\n\t\tthis.element.toggleClass( \"ui-progressbar-indeterminate\", this.indeterminate );\n\n\t\tif ( this.indeterminate ) {\n\t\t\tthis.element.removeAttr( \"aria-valuenow\" );\n\t\t\tif ( !this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv = $( \"<div class='ui-progressbar-overlay'></div>\" ).appendTo( this.valueDiv );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.attr({\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": value\n\t\t\t});\n\t\t\tif ( this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv.remove();\n\t\t\t\tthis.overlayDiv = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t\tif ( value === this.options.max ) {\n\t\t\tthis._trigger( \"complete\" );\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Selectmenu 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectmenu\n */\n\n\nvar selectmenu = $.widget( \"ui.selectmenu\", {\n\tversion: \"1.11.0\",\n\tdefaultElement: \"<select>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tdisabled: null,\n\t\ticons: {\n\t\t\tbutton: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\twidth: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tvar selectmenuId = this.element.uniqueId().attr( \"id\" );\n\t\tthis.ids = {\n\t\t\telement: selectmenuId,\n\t\t\tbutton: selectmenuId + \"-button\",\n\t\t\tmenu: selectmenuId + \"-menu\"\n\t\t};\n\n\t\tthis._drawButton();\n\t\tthis._drawMenu();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_drawButton: function() {\n\t\tvar that = this,\n\t\t\ttabindex = this.element.attr( \"tabindex\" );\n\n\t\t// Associate existing label with the new button\n\t\tthis.label = $( \"label[for='\" + this.ids.element + \"']\" ).attr( \"for\", this.ids.button );\n\t\tthis._on( this.label, {\n\t\t\tclick: function( event ) {\n\t\t\t\tthis.button.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t// Hide original select element\n\t\tthis.element.hide();\n\n\t\t// Create button\n\t\tthis.button = $( \"<span>\", {\n\t\t\t\"class\": \"ui-selectmenu-button ui-widget ui-state-default ui-corner-all\",\n\t\t\ttabindex: tabindex || this.options.disabled ? -1 : 0,\n\t\t\tid: this.ids.button,\n\t\t\trole: \"combobox\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-autocomplete\": \"list\",\n\t\t\t\"aria-owns\": this.ids.menu,\n\t\t\t\"aria-haspopup\": \"true\"\n\t\t})\n\t\t\t.insertAfter( this.element );\n\n\t\t$( \"<span>\", {\n\t\t\t\"class\": \"ui-icon \" + this.options.icons.button\n\t\t})\n\t\t\t.prependTo( this.button );\n\n\t\tthis.buttonText = $( \"<span>\", {\n\t\t\t\"class\": \"ui-selectmenu-text\"\n\t\t})\n\t\t\t.appendTo( this.button );\n\n\t\tthis._setText( this.buttonText, this.element.find( \"option:selected\" ).text() );\n\t\tthis._setOption( \"width\", this.options.width );\n\n\t\tthis._on( this.button, this._buttonEvents );\n\t\tthis.button.one( \"focusin\", function() {\n\n\t\t\t// Delay rendering the menu items until the button receives focus.\n\t\t\t// The menu may have already been rendered via a programmatic open.\n\t\t\tif ( !that.menuItems ) {\n\t\t\t\tthat._refreshMenu();\n\t\t\t}\n\t\t});\n\t\tthis._hoverable( this.button );\n\t\tthis._focusable( this.button );\n\t},\n\n\t_drawMenu: function() {\n\t\tvar that = this;\n\n\t\t// Create menu\n\t\tthis.menu = $( \"<ul>\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\"aria-labelledby\": this.ids.button,\n\t\t\tid: this.ids.menu\n\t\t});\n\n\t\t// Wrap menu\n\t\tthis.menuWrap = $( \"<div>\", {\n\t\t\t\"class\": \"ui-selectmenu-menu ui-front\"\n\t\t})\n\t\t\t.append( this.menu )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\t// Initialize menu widget\n\t\tthis.menuInstance = this.menu\n\t\t\t.menu({\n\t\t\t\trole: \"listbox\",\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat._select( ui.item.data( \"ui-selectmenu-item\" ), event );\n\t\t\t\t},\n\t\t\t\tfocus: function( event, ui ) {\n\t\t\t\t\tvar item = ui.item.data( \"ui-selectmenu-item\" );\n\n\t\t\t\t\t// Prevent inital focus from firing and check if its a newly focused item\n\t\t\t\t\tif ( that.focusIndex != null && item.index !== that.focusIndex ) {\n\t\t\t\t\t\tthat._trigger( \"focus\", event, { item: item } );\n\t\t\t\t\t\tif ( !that.isOpen ) {\n\t\t\t\t\t\t\tthat._select( item, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthat.focusIndex = item.index;\n\n\t\t\t\t\tthat.button.attr( \"aria-activedescendant\",\n\t\t\t\t\t\tthat.menuItems.eq( item.index ).attr( \"id\" ) );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.menu( \"instance\" );\n\n\t\t// Adjust menu styles to dropdown\n\t\tthis.menu\n\t\t\t.addClass( \"ui-corner-bottom\" )\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// Don't close the menu on mouseleave\n\t\tthis.menuInstance._off( this.menu, \"mouseleave\" );\n\n\t\t// Cancel the menu's collapseAll on document click\n\t\tthis.menuInstance._closeOnDocumentClick = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\t// Selects often contain empty items, but never contain dividers\n\t\tthis.menuInstance._isDivider = function() {\n\t\t\treturn false;\n\t\t};\n\t},\n\n\trefresh: function() {\n\t\tthis._refreshMenu();\n\t\tthis._setText( this.buttonText, this._getSelectedItem().text() );\n\t\tthis._setOption( \"width\", this.options.width );\n\t},\n\n\t_refreshMenu: function() {\n\t\tthis.menu.empty();\n\n\t\tvar item,\n\t\t\toptions = this.element.find( \"option\" );\n\n\t\tif ( !options.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._parseOptions( options );\n\t\tthis._renderMenu( this.menu, this.items );\n\n\t\tthis.menuInstance.refresh();\n\t\tthis.menuItems = this.menu.find( \"li\" ).not( \".ui-selectmenu-optgroup\" );\n\n\t\titem = this._getSelectedItem();\n\n\t\t// Update the menu to have the correct item focused\n\t\tthis.menuInstance.focus( null, item );\n\t\tthis._setAria( item.data( \"ui-selectmenu-item\" ) );\n\n\t\t// Set disabled state\n\t\tthis._setOption( \"disabled\", this.element.prop( \"disabled\" ) );\n\t},\n\n\topen: function( event ) {\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is the first time the menu is being opened, render the items\n\t\tif ( !this.menuItems ) {\n\t\t\tthis._refreshMenu();\n\t\t} else {\n\n\t\t\t// Menu clears focus on close, reset focus to selected item\n\t\t\tthis.menu.find( \".ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\tthis.menuInstance.focus( null, this._getSelectedItem() );\n\t\t}\n\n\t\tthis.isOpen = true;\n\t\tthis._toggleAttr();\n\t\tthis._resizeMenu();\n\t\tthis._position();\n\n\t\tthis._on( this.document, this._documentClick );\n\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\t_position: function() {\n\t\tthis.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );\n\t},\n\n\tclose: function( event ) {\n\t\tif ( !this.isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = false;\n\t\tthis._toggleAttr();\n\n\t\tthis._off( this.document );\n\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\twidget: function() {\n\t\treturn this.button;\n\t},\n\n\tmenuWidget: function() {\n\t\treturn this.menu;\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this,\n\t\t\tcurrentOptgroup = \"\";\n\n\t\t$.each( items, function( index, item ) {\n\t\t\tif ( item.optgroup !== currentOptgroup ) {\n\t\t\t\t$( \"<li>\", {\n\t\t\t\t\t\"class\": \"ui-selectmenu-optgroup ui-menu-divider\" +\n\t\t\t\t\t\t( item.element.parent( \"optgroup\" ).prop( \"disabled\" ) ?\n\t\t\t\t\t\t\t\" ui-state-disabled\" :\n\t\t\t\t\t\t\t\"\" ),\n\t\t\t\t\ttext: item.optgroup\n\t\t\t\t})\n\t\t\t\t\t.appendTo( ul );\n\n\t\t\t\tcurrentOptgroup = item.optgroup;\n\t\t\t}\n\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-selectmenu-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\tvar li = $( \"<li>\" );\n\n\t\tif ( item.disabled ) {\n\t\t\tli.addClass( \"ui-state-disabled\" );\n\t\t}\n\t\tthis._setText( li, item.label );\n\n\t\treturn li.appendTo( ul );\n\t},\n\n\t_setText: function( element, value ) {\n\t\tif ( value ) {\n\t\t\telement.text( value );\n\t\t} else {\n\t\t\telement.html( \"&#160;\" );\n\t\t}\n\t},\n\n\t_move: function( direction, event ) {\n\t\tvar item, next,\n\t\t\tfilter = \".ui-menu-item\";\n\n\t\tif ( this.isOpen ) {\n\t\t\titem = this.menuItems.eq( this.focusIndex );\n\t\t} else {\n\t\t\titem = this.menuItems.eq( this.element[ 0 ].selectedIndex );\n\t\t\tfilter += \":not(.ui-state-disabled)\";\n\t\t}\n\n\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\tnext = item[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( filter ).eq( -1 );\n\t\t} else {\n\t\t\tnext = item[ direction + \"All\" ]( filter ).eq( 0 );\n\t\t}\n\n\t\tif ( next.length ) {\n\t\t\tthis.menuInstance.focus( event, next );\n\t\t}\n\t},\n\n\t_getSelectedItem: function() {\n\t\treturn this.menuItems.eq( this.element[ 0 ].selectedIndex );\n\t},\n\n\t_toggle: function( event ) {\n\t\tthis[ this.isOpen ? \"close\" : \"open\" ]( event );\n\t},\n\n\t_documentClick: {\n\t\tmousedown: function( event ) {\n\t\t\tif ( !this.isOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !$( event.target ).closest( \".ui-selectmenu-menu, #\" + this.ids.button ).length ) {\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t}\n\t},\n\n\t_buttonEvents: {\n\t\tclick: \"_toggle\",\n\t\tkeydown: function( event ) {\n\t\t\tvar preventDefault = true;\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.TAB:\n\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\tpreventDefault = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"first\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"last\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.menu.trigger( event );\n\t\t\t\t\tpreventDefault = false;\n\t\t\t}\n\n\t\t\tif ( preventDefault ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t},\n\n\t_selectFocusedItem: function( event ) {\n\t\tvar item = this.menuItems.eq( this.focusIndex );\n\t\tif ( !item.hasClass( \"ui-state-disabled\" ) ) {\n\t\t\tthis._select( item.data( \"ui-selectmenu-item\" ), event );\n\t\t}\n\t},\n\n\t_select: function( item, event ) {\n\t\tvar oldIndex = this.element[ 0 ].selectedIndex;\n\n\t\t// Change native select element\n\t\tthis.element[ 0 ].selectedIndex = item.index;\n\t\tthis._setText( this.buttonText, item.label );\n\t\tthis._setAria( item );\n\t\tthis._trigger( \"select\", event, { item: item } );\n\n\t\tif ( item.index !== oldIndex ) {\n\t\t\tthis._trigger( \"change\", event, { item: item } );\n\t\t}\n\n\t\tthis.close( event );\n\t},\n\n\t_setAria: function( item ) {\n\t\tvar id = this.menuItems.eq( item.index ).attr( \"id\" );\n\n\t\tthis.button.attr({\n\t\t\t\"aria-labelledby\": id,\n\t\t\t\"aria-activedescendant\": id\n\t\t});\n\t\tthis.menu.attr( \"aria-activedescendant\", id );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.button.find( \"span.ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.button )\n\t\t\t\t.addClass( value.button );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menuWrap.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.menuInstance.option( \"disabled\", value );\n\t\t\tthis.button\n\t\t\t\t.toggleClass( \"ui-state-disabled\", value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\n\t\t\tthis.element.prop( \"disabled\", value );\n\t\t\tif ( value ) {\n\t\t\t\tthis.button.attr( \"tabindex\", -1 );\n\t\t\t\tthis.close();\n\t\t\t} else {\n\t\t\t\tthis.button.attr( \"tabindex\", 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"width\" ) {\n\t\t\tif ( !value ) {\n\t\t\t\tvalue = this.element.outerWidth();\n\t\t\t}\n\t\t\tthis.button.outerWidth( value );\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_toggleAttr: function() {\n\t\tthis.button\n\t\t\t.toggleClass( \"ui-corner-top\", this.isOpen )\n\t\t\t.toggleClass( \"ui-corner-all\", !this.isOpen )\n\t\t\t.attr( \"aria-expanded\", this.isOpen );\n\t\tthis.menuWrap.toggleClass( \"ui-selectmenu-open\", this.isOpen );\n\t\tthis.menu.attr( \"aria-hidden\", !this.isOpen );\n\t},\n\n\t_resizeMenu: function() {\n\t\tthis.menu.outerWidth( Math.max(\n\t\t\tthis.button.outerWidth(),\n\n\t\t\t// support: IE10\n\t\t\t// IE10 wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping\n\t\t\tthis.menu.width( \"\" ).outerWidth() + 1\n\t\t) );\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn { disabled: this.element.prop( \"disabled\" ) };\n\t},\n\n\t_parseOptions: function( options ) {\n\t\tvar data = [];\n\t\toptions.each(function( index, item ) {\n\t\t\tvar option = $( item ),\n\t\t\t\toptgroup = option.parent( \"optgroup\" );\n\t\t\tdata.push({\n\t\t\t\telement: option,\n\t\t\t\tindex: index,\n\t\t\t\tvalue: option.attr( \"value\" ),\n\t\t\t\tlabel: option.text(),\n\t\t\t\toptgroup: optgroup.attr( \"label\" ) || \"\",\n\t\t\t\tdisabled: optgroup.prop( \"disabled\" ) || option.prop( \"disabled\" )\n\t\t\t});\n\t\t});\n\t\tthis.items = data;\n\t},\n\n\t_destroy: function() {\n\t\tthis.menuWrap.remove();\n\t\tthis.button.remove();\n\t\tthis.element.show();\n\t\tthis.element.removeUniqueId();\n\t\tthis.label.attr( \"for\", this.ids.element );\n\t}\n});\n\n\n/*!\n * jQuery UI Slider 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slider/\n */\n\n\nvar slider = $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.11.0\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\");\n\n\t\tthis._refresh();\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options,\n\t\t\tclasses = \"\";\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[0], options.values[0] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tclasses = \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header ui-corner-all\";\n\t\t\t} else {\n\t\t\t\tthis.range.removeClass( \"ui-slider-range-min ui-slider-range-max\" )\n\t\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.range.addClass( classes +\n\t\t\t\t( ( options.range === \"min\" || options.range === \"max\" ) ? \" ui-slider-range-\" + options.range : \"\" ) );\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif (( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t(i === that._lastChangedValue || that.values(i) === o.min ))) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this.options.values && this.options.values.length ) {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Spinner 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/spinner/\n */\n\n\nfunction spinner_modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\nvar spinner = $.widget( \"ui.spinner\", {\n\tversion: \"1.11.0\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// Only format if there is a value, prevents the field from being marked\n\t\t// as invalid in Firefox, see #9573.\n\t\tif ( this.value() !== \"\" ) {\n\t\t\t// Format the value, but don't constrain.\n\t\t\tthis._value( this.element.val(), true );\n\t\t}\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._stop();\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.buttons.first().find( \".ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.up )\n\t\t\t\t.addClass( value.up );\n\t\t\tthis.buttons.last().find( \".ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.down )\n\t\t\t\t.addClass( value.down );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget().toggleClass( \"ui-state-disabled\", !!value );\n\t\t\tthis.element.prop( \"disabled\", !!value );\n\t\t\tthis.buttons.button( value ? \"disable\" : \"enable\" );\n\t\t}\n\t},\n\n\t_setOptions: spinner_modifier(function( options ) {\n\t\tthis._super( options );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\tisValid: function() {\n\t\tvar value = this.value();\n\n\t\t// null is invalid\n\t\tif ( value === null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// if value gets adjusted, it's invalid\n\t\treturn value === this._adjustValue( value );\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: spinner_modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( (steps || 1) * this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tstepDown: spinner_modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( (steps || 1) * -this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tpageUp: spinner_modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: spinner_modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tspinner_modifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n\n/*!\n * jQuery UI Tabs 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tabs/\n */\n\n\nvar tabs = $.widget( \"ui.tabs\", {\n\tversion: \"1.11.0\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_isLocal: (function() {\n\t\tvar rhash = /#.*$/;\n\n\t\treturn function( anchor ) {\n\t\t\tvar anchorUrl, locationUrl;\n\n\t\t\t// support: IE7\n\t\t\t// IE7 doesn't normalize the href property when set via script (#9317)\n\t\t\tanchor = anchor.cloneNode( false );\n\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\n\n\t\t\t// decoding may throw an error if the URL isn't UTF-8 (#9518)\n\t\t\ttry {\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\n\t\t\t} catch ( error ) {}\n\t\t\ttry {\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\n\t\t\t} catch ( error ) {}\n\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\n\t\t};\n\t})(),\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\t\toptions.active = this._initialActive();\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_initialActive: function() {\n\t\tvar active = this.options.active,\n\t\t\tcollapsible = this.options.collapsible,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\n\t\t\tactive = 0;\n\t\t}\n\n\t\treturn active;\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( that._isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanelId = selector.substring( 1 );\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\t// If the tab doesn't already have aria-controls,\n\t\t\t\t// generate an id by using a throw-away element\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": panelId,\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.tablist || this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\t// Always prevent the default action, even when disabled\n\t\tthis._on( true, this.anchors, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\n\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\n\t\teventData.oldTab.attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t});\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli\n\t\t\t\t\t.attr( \"aria-controls\", prev )\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n\n/*!\n * jQuery UI Tooltip 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tooltip/\n */\n\n\nvar tooltip = $.widget( \"ui.tooltip\", {\n\tversion: \"1.11.0\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\t// support: IE<9, Opera in jQuery <1.7\n\t\t\t// .text() can't accept undefined, so coerce to a string\n\t\t\tvar title = $( this ).attr( \"title\" ) || \"\";\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\n\t\t\treturn $( \"<a>\" ).text( title ).html();\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_addDescribedBy: function( elem, id ) {\n\t\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\t\tdescribedby.push( id );\n\t\telem\n\t\t\t.data( \"ui-tooltip-id\", id )\n\t\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n\t},\n\n\t_removeDescribedBy: function( elem ) {\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\t\tindex = $.inArray( id, describedby );\n\n\t\tif ( index !== -1 ) {\n\t\t\tdescribedby.splice( index, 1 );\n\t\t}\n\n\t\telem.removeData( \"ui-tooltip-id\" );\n\t\tdescribedby = $.trim( describedby.join( \" \" ) );\n\t\tif ( describedby ) {\n\t\t\telem.attr( \"aria-describedby\", describedby );\n\t\t} else {\n\t\t\telem.removeAttr( \"aria-describedby\" );\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\n\t\t// Append the aria-live region so tooltips announce correctly\n\t\tthis.liveRegion = $( \"<div>\" )\n\t\t\t.attr({\n\t\t\t\trole: \"log\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).addBack().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.removeAttr( \"title\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).addBack().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow, a11yContent,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\n\t\tthis.liveRegion.children().hide();\n\t\tif ( content.clone ) {\n\t\t\ta11yContent = content.clone();\n\t\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\n\t\t} else {\n\t\t\ta11yContent = content;\n\t\t}\n\t\t$( \"<div>\" ).html( a11yContent ).appendTo( this.liveRegion );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = this.delayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Only bind remove handler for delegated targets. Non-delegated\n\t\t// tooltips will handle this in destroy.\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tevents.remove = function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t};\n\t\t}\n\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\t// If the title attribute has changed since open(), don't restore\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tthis._removeDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar tooltip = $( \"<div>\" )\n\t\t\t\t.attr( \"role\", \"tooltip\" )\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) ),\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\n\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\t// If the title attribute has changed since open(), don't restore\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\t}\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t\tthis.liveRegion.remove();\n\t}\n});\n\n\n/*!\n * jQuery UI Effects 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/effects-core/\n */\n\n\nvar dataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch( e ) {\n\t\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t});\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t// support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\taddClass: (function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.addClass ),\n\n\tremoveClass: (function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.removeClass ),\n\n\ttoggleClass: (function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\t\t\t\t\t// without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t})( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.11.0\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor ( var i = 0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ];\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the element already has the correct final state, delegate to\n\t\t\t// the core methods so the internal tracking of \"olddisplay\" works.\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\telem[ mode ]();\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t},\n\n\tshow: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.show ),\n\n\thide: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.hide ),\n\n\ttoggle: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.toggle ),\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/blind-effect/\n */\n\n\nvar effectBlind = $.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\trvertical = /up|down|vertical/,\n\t\trpositivemotion = /up|left|vertical|horizontal/,\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( !motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Bounce 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/bounce-effect/\n */\n\n\nvar effectBounce = $.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n\n/*!\n * jQuery UI Effects Clip 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/clip-effect/\n */\n\n\nvar effectClip = $.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Drop 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/drop-effect/\n */\n\n\nvar effectDrop = $.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Explode 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/explode-effect/\n */\n\n\nvar effectExplode = $.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor ( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor ( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n\n/*!\n * jQuery UI Effects Fade 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fade-effect/\n */\n\n\nvar effectFade = $.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Fold 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fold-effect/\n */\n\n\nvar effectFold = $.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Highlight 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/highlight-effect/\n */\n\n\nvar effectHighlight = $.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n\n/*!\n * jQuery UI Effects Size 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/size-effect/\n */\n\n\nvar effectSize = $.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Scale 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/scale-effect/\n */\n\n\nvar effectScale = $.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [ \"middle\", \"center\" ];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n\n/*!\n * jQuery UI Effects Puff 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/puff-effect/\n */\n\n\nvar effectPuff = $.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n\n/*!\n * jQuery UI Effects Pulsate 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/pulsate-effect/\n */\n\n\nvar effectPulsate = $.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n\n/*!\n * jQuery UI Effects Shake 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/shake-effect/\n */\n\n\nvar effectShake = $.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( o.duration / anims ),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n\n/*!\n * jQuery UI Effects Slide 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slide-effect/\n */\n\n\nvar effectSlide = $.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Transfer 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/transfer-effect/\n */\n\n\nvar effectTransfer = $.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop,\n\t\t\tleft: endPosition.left - fixLeft,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n\n\n}));"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery-ui-1.11.0.custom/jquery-ui.structure.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/theming/\n */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: \"\";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-clearfix {\n\tmin-height: 0; /* support: IE7 */\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\tfilter:Alpha(Opacity=0);\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n}\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tmin-height: 0; /* support: IE7 */\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-icons {\n\tpadding-left: 2.2em;\n}\n.ui-accordion .ui-accordion-icons .ui-accordion-icons {\n\tpadding-left: 2.2em;\n}\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tposition: absolute;\n\tleft: .5em;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-button {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 0;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\toverflow: visible; /* removes extra width in IE */\n}\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2.2em;\n}\n/* button elements seem to need a little more width */\nbutton.ui-button-icon-only {\n\twidth: 2.4em;\n}\n.ui-button-icons-only {\n\twidth: 3.4em;\n}\nbutton.ui-button-icons-only {\n\twidth: 3.7em;\n}\n\n/* button text element */\n.ui-button .ui-button-text {\n\tdisplay: block;\n\tline-height: normal;\n}\n.ui-button-text-only .ui-button-text {\n\tpadding: .4em 1em;\n}\n.ui-button-icon-only .ui-button-text,\n.ui-button-icons-only .ui-button-text {\n\tpadding: .4em;\n\ttext-indent: -9999999px;\n}\n.ui-button-text-icon-primary .ui-button-text,\n.ui-button-text-icons .ui-button-text {\n\tpadding: .4em 1em .4em 2.1em;\n}\n.ui-button-text-icon-secondary .ui-button-text,\n.ui-button-text-icons .ui-button-text {\n\tpadding: .4em 2.1em .4em 1em;\n}\n.ui-button-text-icons .ui-button-text {\n\tpadding-left: 2.1em;\n\tpadding-right: 2.1em;\n}\n/* no icon support for input elements, provide padding by default */\ninput.ui-button {\n\tpadding: .4em 1em;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon,\n.ui-button-text-icon-primary .ui-icon,\n.ui-button-text-icon-secondary .ui-icon,\n.ui-button-text-icons .ui-icon,\n.ui-button-icons-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-button-icon-only .ui-icon {\n\tleft: 50%;\n\tmargin-left: -8px;\n}\n.ui-button-text-icon-primary .ui-button-icon-primary,\n.ui-button-text-icons .ui-button-icon-primary,\n.ui-button-icons-only .ui-button-icon-primary {\n\tleft: .5em;\n}\n.ui-button-text-icon-secondary .ui-button-icon-secondary,\n.ui-button-text-icons .ui-button-icon-secondary,\n.ui-button-icons-only .ui-button-icon-secondary {\n\tright: .5em;\n}\n\n/* button sets */\n.ui-buttonset {\n\tmargin-right: 7px;\n}\n.ui-buttonset .ui-button {\n\tmargin-left: 0;\n\tmargin-right: -.3em;\n}\n\n/* workarounds */\n/* reset extra padding in Firefox, see h5bp.com/l */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 49%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n.ui-dialog {\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-se {\n\twidth: 12px;\n\theight: 12px;\n\tright: -5px;\n\tbottom: -5px;\n\tbackground-position: 16px 16px;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: none;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tposition: relative;\n\tmargin: 0;\n\tpadding: 3px 1em 3px .4em;\n\tcursor: pointer;\n\tmin-height: 0; /* support: IE7 */\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\");\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(\"images/animated-overlay.gif\");\n\theight: 100%;\n\tfilter: alpha(opacity=25);\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\t/* Support: IE7 */\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-button {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tposition: relative;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n.ui-selectmenu-button span.ui-icon {\n\tright: 0.5em;\n\tleft: auto;\n\tmargin-top: -8px;\n\tposition: absolute;\n\ttop: 50%;\n}\n.ui-selectmenu-button span.ui-selectmenu-text {\n\ttext-align: left;\n\tpadding: 0.4em 2.1em 0.4em 1em;\n\tdisplay: block;\n\tline-height: 1.4;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: default;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* For IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 22px;\n}\n.ui-spinner-button {\n\twidth: 16px;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top: none;\n\tborder-bottom: none;\n\tborder-right: none;\n}\n/* vertically center icon */\n.ui-spinner .ui-icon {\n\tposition: absolute;\n\tmargin-top: -8px;\n\ttop: 50%;\n\tleft: 0;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position: -65px -16px;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery-ui-1.11.0.custom/jquery-ui.theme.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.11.0\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;\n\tfont-size: 1.1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #eeeeee url(\"images/ui-bg_highlight-soft_100_eeeeee_1x100.png\") 50% top repeat-x;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #e78f08;\n\tbackground: #f6a828 url(\"images/ui-bg_gloss-wave_35_f6a828_500x100.png\") 50% 50% repeat-x;\n\tcolor: #ffffff;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #ffffff;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid #cccccc;\n\tbackground: #f6f6f6 url(\"images/ui-bg_glass_100_f6f6f6_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: bold;\n\tcolor: #1c94c4;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #1c94c4;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #fbcb09;\n\tbackground: #fdf5ce url(\"images/ui-bg_glass_100_fdf5ce_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: bold;\n\tcolor: #c77405;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited {\n\tcolor: #c77405;\n\ttext-decoration: none;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid #fbd850;\n\tbackground: #ffffff url(\"images/ui-bg_glass_65_ffffff_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: bold;\n\tcolor: #eb8f00;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #eb8f00;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #fed22f;\n\tbackground: #ffe45c url(\"images/ui-bg_highlight-soft_75_ffe45c_1x100.png\") 50% top repeat-x;\n\tcolor: #363636;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #363636;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #cd0a0a;\n\tbackground: #b81900 url(\"images/ui-bg_diagonals-thick_18_b81900_40x40.png\") 50% 50% repeat;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\tfilter:Alpha(Opacity=70);\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\tfilter:Alpha(Opacity=35);\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\tfilter:Alpha(Opacity=35); /* For IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(\"images/ui-icons_222222_256x240.png\");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ffffff_256x240.png\");\n}\n.ui-state-default .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ef8c08_256x240.png\");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ef8c08_256x240.png\");\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ef8c08_256x240.png\");\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url(\"images/ui-icons_228ef1_256x240.png\");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ffd27a_256x240.png\");\n}\n\n/* positioning */\n.ui-icon-blank { background-position: 16px 16px; }\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 4px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\") 50% 50% repeat;\n\topacity: .5;\n\tfilter: Alpha(Opacity=50);\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url(\"images/ui-bg_flat_10_000000_40x100.png\") 50% 50% repeat-x;\n\topacity: .2;\n\tfilter: Alpha(Opacity=20);\n\tborder-radius: 5px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/jquery.zeroclipboard-0.2.0/jquery.zeroclipboard.js",
    "content": "/*!\n * jquery.zeroclipboard\n * Bind to the `beforecopy`, `copy`, `aftercopy`, and `copy-error` events, custom DOM-like events for clipboard injection generated using jQuery's Special Events API and ZeroClipboard's Core module.\n * Copyright (c) 2014 \n * Licensed MIT\n * https://github.com/zeroclipboard/jquery.zeroclipboard\n * v0.2.0\n */\n(function($, window, undefined) {\n  \"use strict\";\n  var require, module, exports;\n  var zcExistsAlready = !!window.ZeroClipboard;\n  /*!\n * ZeroClipboard\n * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.\n * Copyright (c) 2014 Jon Rohan, James M. Greene\n * Licensed MIT\n * http://zeroclipboard.org/\n * v2.1.2\n */\n  (function(window, undefined) {\n    /**\n * Store references to critically important global functions that may be\n * overridden on certain web pages.\n */\n    var _window = window, _document = _window.document, _navigator = _window.navigator, _setTimeout = _window.setTimeout, _encodeURIComponent = _window.encodeURIComponent, _ActiveXObject = _window.ActiveXObject, _parseInt = _window.Number.parseInt || _window.parseInt, _parseFloat = _window.Number.parseFloat || _window.parseFloat, _isNaN = _window.Number.isNaN || _window.isNaN, _round = _window.Math.round, _now = _window.Date.now, _keys = _window.Object.keys, _defineProperty = _window.Object.defineProperty, _hasOwn = _window.Object.prototype.hasOwnProperty, _slice = _window.Array.prototype.slice;\n    /**\n * Convert an `arguments` object into an Array.\n *\n * @returns The arguments as an Array\n * @private\n */\n    var _args = function(argumentsObj) {\n      return _slice.call(argumentsObj, 0);\n    };\n    /**\n * Shallow-copy the owned, enumerable properties of one object over to another, similar to jQuery's `$.extend`.\n *\n * @returns The target object, augmented\n * @private\n */\n    var _extend = function() {\n      var i, len, arg, prop, src, copy, args = _args(arguments), target = args[0] || {};\n      for (i = 1, len = args.length; i < len; i++) {\n        if ((arg = args[i]) != null) {\n          for (prop in arg) {\n            if (_hasOwn.call(arg, prop)) {\n              src = target[prop];\n              copy = arg[prop];\n              if (target !== copy && copy !== undefined) {\n                target[prop] = copy;\n              }\n            }\n          }\n        }\n      }\n      return target;\n    };\n    /**\n * Return a deep copy of the source object or array.\n *\n * @returns Object or Array\n * @private\n */\n    var _deepCopy = function(source) {\n      var copy, i, len, prop;\n      if (typeof source !== \"object\" || source == null) {\n        copy = source;\n      } else if (typeof source.length === \"number\") {\n        copy = [];\n        for (i = 0, len = source.length; i < len; i++) {\n          if (_hasOwn.call(source, i)) {\n            copy[i] = _deepCopy(source[i]);\n          }\n        }\n      } else {\n        copy = {};\n        for (prop in source) {\n          if (_hasOwn.call(source, prop)) {\n            copy[prop] = _deepCopy(source[prop]);\n          }\n        }\n      }\n      return copy;\n    };\n    /**\n * Makes a shallow copy of `obj` (like `_extend`) but filters its properties based on a list of `keys` to keep.\n * The inverse of `_omit`, mostly. The big difference is that these properties do NOT need to be enumerable to\n * be kept.\n *\n * @returns A new filtered object.\n * @private\n */\n    var _pick = function(obj, keys) {\n      var newObj = {};\n      for (var i = 0, len = keys.length; i < len; i++) {\n        if (keys[i] in obj) {\n          newObj[keys[i]] = obj[keys[i]];\n        }\n      }\n      return newObj;\n    };\n    /**\n * Makes a shallow copy of `obj` (like `_extend`) but filters its properties based on a list of `keys` to omit.\n * The inverse of `_pick`.\n *\n * @returns A new filtered object.\n * @private\n */\n    var _omit = function(obj, keys) {\n      var newObj = {};\n      for (var prop in obj) {\n        if (keys.indexOf(prop) === -1) {\n          newObj[prop] = obj[prop];\n        }\n      }\n      return newObj;\n    };\n    /**\n * Remove all owned, enumerable properties from an object.\n *\n * @returns The original object without its owned, enumerable properties.\n * @private\n */\n    var _deleteOwnProperties = function(obj) {\n      if (obj) {\n        for (var prop in obj) {\n          if (_hasOwn.call(obj, prop)) {\n            delete obj[prop];\n          }\n        }\n      }\n      return obj;\n    };\n    /**\n * Determine if an element is contained within another element.\n *\n * @returns Boolean\n * @private\n */\n    var _containedBy = function(el, ancestorEl) {\n      if (el && el.nodeType === 1 && el.ownerDocument && ancestorEl && (ancestorEl.nodeType === 1 && ancestorEl.ownerDocument && ancestorEl.ownerDocument === el.ownerDocument || ancestorEl.nodeType === 9 && !ancestorEl.ownerDocument && ancestorEl === el.ownerDocument)) {\n        do {\n          if (el === ancestorEl) {\n            return true;\n          }\n          el = el.parentNode;\n        } while (el);\n      }\n      return false;\n    };\n    /**\n * Keep track of the state of the Flash object.\n * @private\n */\n    var _flashState = {\n      bridge: null,\n      version: \"0.0.0\",\n      pluginType: \"unknown\",\n      disabled: null,\n      outdated: null,\n      unavailable: null,\n      deactivated: null,\n      overdue: null,\n      ready: null\n    };\n    /**\n * The minimum Flash Player version required to use ZeroClipboard completely.\n * @readonly\n * @private\n */\n    var _minimumFlashVersion = \"11.0.0\";\n    /**\n * Keep track of all event listener registrations.\n * @private\n */\n    var _handlers = {};\n    /**\n * Keep track of the currently activated element.\n * @private\n */\n    var _currentElement;\n    /**\n * Keep track of data for the pending clipboard transaction.\n * @private\n */\n    var _clipData = {};\n    /**\n * Keep track of data formats for the pending clipboard transaction.\n * @private\n */\n    var _clipDataFormatMap = null;\n    /**\n * The `message` store for events\n * @private\n */\n    var _eventMessages = {\n      ready: \"Flash communication is established\",\n      error: {\n        \"flash-disabled\": \"Flash is disabled or not installed\",\n        \"flash-outdated\": \"Flash is too outdated to support ZeroClipboard\",\n        \"flash-unavailable\": \"Flash is unable to communicate bidirectionally with JavaScript\",\n        \"flash-deactivated\": \"Flash is too outdated for your browser and/or is configured as click-to-activate\",\n        \"flash-overdue\": \"Flash communication was established but NOT within the acceptable time limit\"\n      }\n    };\n    /**\n * The presumed location of the \"ZeroClipboard.swf\" file, based on the location\n * of the executing JavaScript file (e.g. \"ZeroClipboard.js\", etc.).\n * @private\n */\n    var _swfPath = function() {\n      var i, jsDir, tmpJsPath, jsPath, swfPath = \"ZeroClipboard.swf\";\n      if (!(_document.currentScript && (jsPath = _document.currentScript.src))) {\n        var scripts = _document.getElementsByTagName(\"script\");\n        if (\"readyState\" in scripts[0]) {\n          for (i = scripts.length; i--; ) {\n            if (scripts[i].readyState === \"interactive\" && (jsPath = scripts[i].src)) {\n              break;\n            }\n          }\n        } else if (_document.readyState === \"loading\") {\n          jsPath = scripts[scripts.length - 1].src;\n        } else {\n          for (i = scripts.length; i--; ) {\n            tmpJsPath = scripts[i].src;\n            if (!tmpJsPath) {\n              jsDir = null;\n              break;\n            }\n            tmpJsPath = tmpJsPath.split(\"#\")[0].split(\"?\")[0];\n            tmpJsPath = tmpJsPath.slice(0, tmpJsPath.lastIndexOf(\"/\") + 1);\n            if (jsDir == null) {\n              jsDir = tmpJsPath;\n            } else if (jsDir !== tmpJsPath) {\n              jsDir = null;\n              break;\n            }\n          }\n          if (jsDir !== null) {\n            jsPath = jsDir;\n          }\n        }\n      }\n      if (jsPath) {\n        jsPath = jsPath.split(\"#\")[0].split(\"?\")[0];\n        swfPath = jsPath.slice(0, jsPath.lastIndexOf(\"/\") + 1) + swfPath;\n      }\n      return swfPath;\n    }();\n    /**\n * ZeroClipboard configuration defaults for the Core module.\n * @private\n */\n    var _globalConfig = {\n      swfPath: _swfPath,\n      trustedDomains: window.location.host ? [ window.location.host ] : [],\n      cacheBust: true,\n      forceEnhancedClipboard: false,\n      flashLoadTimeout: 3e4,\n      autoActivate: true,\n      bubbleEvents: true,\n      containerId: \"global-zeroclipboard-html-bridge\",\n      containerClass: \"global-zeroclipboard-container\",\n      swfObjectId: \"global-zeroclipboard-flash-bridge\",\n      hoverClass: \"zeroclipboard-is-hover\",\n      activeClass: \"zeroclipboard-is-active\",\n      forceHandCursor: false,\n      title: null,\n      zIndex: 999999999\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.config`.\n * @private\n */\n    var _config = function(options) {\n      if (typeof options === \"object\" && options !== null) {\n        for (var prop in options) {\n          if (_hasOwn.call(options, prop)) {\n            if (/^(?:forceHandCursor|title|zIndex|bubbleEvents)$/.test(prop)) {\n              _globalConfig[prop] = options[prop];\n            } else if (_flashState.bridge == null) {\n              if (prop === \"containerId\" || prop === \"swfObjectId\") {\n                if (_isValidHtml4Id(options[prop])) {\n                  _globalConfig[prop] = options[prop];\n                } else {\n                  throw new Error(\"The specified `\" + prop + \"` value is not valid as an HTML4 Element ID\");\n                }\n              } else {\n                _globalConfig[prop] = options[prop];\n              }\n            }\n          }\n        }\n      }\n      if (typeof options === \"string\" && options) {\n        if (_hasOwn.call(_globalConfig, options)) {\n          return _globalConfig[options];\n        }\n        return;\n      }\n      return _deepCopy(_globalConfig);\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.state`.\n * @private\n */\n    var _state = function() {\n      return {\n        browser: _pick(_navigator, [ \"userAgent\", \"platform\", \"appName\" ]),\n        flash: _omit(_flashState, [ \"bridge\" ]),\n        zeroclipboard: {\n          version: ZeroClipboard.version,\n          config: ZeroClipboard.config()\n        }\n      };\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.isFlashUnusable`.\n * @private\n */\n    var _isFlashUnusable = function() {\n      return !!(_flashState.disabled || _flashState.outdated || _flashState.unavailable || _flashState.deactivated);\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.on`.\n * @private\n */\n    var _on = function(eventType, listener) {\n      var i, len, events, added = {};\n      if (typeof eventType === \"string\" && eventType) {\n        events = eventType.toLowerCase().split(/\\s+/);\n      } else if (typeof eventType === \"object\" && eventType && typeof listener === \"undefined\") {\n        for (i in eventType) {\n          if (_hasOwn.call(eventType, i) && typeof i === \"string\" && i && typeof eventType[i] === \"function\") {\n            ZeroClipboard.on(i, eventType[i]);\n          }\n        }\n      }\n      if (events && events.length) {\n        for (i = 0, len = events.length; i < len; i++) {\n          eventType = events[i].replace(/^on/, \"\");\n          added[eventType] = true;\n          if (!_handlers[eventType]) {\n            _handlers[eventType] = [];\n          }\n          _handlers[eventType].push(listener);\n        }\n        if (added.ready && _flashState.ready) {\n          ZeroClipboard.emit({\n            type: \"ready\"\n          });\n        }\n        if (added.error) {\n          var errorTypes = [ \"disabled\", \"outdated\", \"unavailable\", \"deactivated\", \"overdue\" ];\n          for (i = 0, len = errorTypes.length; i < len; i++) {\n            if (_flashState[errorTypes[i]] === true) {\n              ZeroClipboard.emit({\n                type: \"error\",\n                name: \"flash-\" + errorTypes[i]\n              });\n              break;\n            }\n          }\n        }\n      }\n      return ZeroClipboard;\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.off`.\n * @private\n */\n    var _off = function(eventType, listener) {\n      var i, len, foundIndex, events, perEventHandlers;\n      if (arguments.length === 0) {\n        events = _keys(_handlers);\n      } else if (typeof eventType === \"string\" && eventType) {\n        events = eventType.split(/\\s+/);\n      } else if (typeof eventType === \"object\" && eventType && typeof listener === \"undefined\") {\n        for (i in eventType) {\n          if (_hasOwn.call(eventType, i) && typeof i === \"string\" && i && typeof eventType[i] === \"function\") {\n            ZeroClipboard.off(i, eventType[i]);\n          }\n        }\n      }\n      if (events && events.length) {\n        for (i = 0, len = events.length; i < len; i++) {\n          eventType = events[i].toLowerCase().replace(/^on/, \"\");\n          perEventHandlers = _handlers[eventType];\n          if (perEventHandlers && perEventHandlers.length) {\n            if (listener) {\n              foundIndex = perEventHandlers.indexOf(listener);\n              while (foundIndex !== -1) {\n                perEventHandlers.splice(foundIndex, 1);\n                foundIndex = perEventHandlers.indexOf(listener, foundIndex);\n              }\n            } else {\n              perEventHandlers.length = 0;\n            }\n          }\n        }\n      }\n      return ZeroClipboard;\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.handlers`.\n * @private\n */\n    var _listeners = function(eventType) {\n      var copy;\n      if (typeof eventType === \"string\" && eventType) {\n        copy = _deepCopy(_handlers[eventType]) || null;\n      } else {\n        copy = _deepCopy(_handlers);\n      }\n      return copy;\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.emit`.\n * @private\n */\n    var _emit = function(event) {\n      var eventCopy, returnVal, tmp;\n      event = _createEvent(event);\n      if (!event) {\n        return;\n      }\n      if (_preprocessEvent(event)) {\n        return;\n      }\n      if (event.type === \"ready\" && _flashState.overdue === true) {\n        return ZeroClipboard.emit({\n          type: \"error\",\n          name: \"flash-overdue\"\n        });\n      }\n      eventCopy = _extend({}, event);\n      _dispatchCallbacks.call(this, eventCopy);\n      if (event.type === \"copy\") {\n        tmp = _mapClipDataToFlash(_clipData);\n        returnVal = tmp.data;\n        _clipDataFormatMap = tmp.formatMap;\n      }\n      return returnVal;\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.create`.\n * @private\n */\n    var _create = function() {\n      if (typeof _flashState.ready !== \"boolean\") {\n        _flashState.ready = false;\n      }\n      if (!ZeroClipboard.isFlashUnusable() && _flashState.bridge === null) {\n        var maxWait = _globalConfig.flashLoadTimeout;\n        if (typeof maxWait === \"number\" && maxWait >= 0) {\n          _setTimeout(function() {\n            if (typeof _flashState.deactivated !== \"boolean\") {\n              _flashState.deactivated = true;\n            }\n            if (_flashState.deactivated === true) {\n              ZeroClipboard.emit({\n                type: \"error\",\n                name: \"flash-deactivated\"\n              });\n            }\n          }, maxWait);\n        }\n        _flashState.overdue = false;\n        _embedSwf();\n      }\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.destroy`.\n * @private\n */\n    var _destroy = function() {\n      ZeroClipboard.clearData();\n      ZeroClipboard.blur();\n      ZeroClipboard.emit(\"destroy\");\n      _unembedSwf();\n      ZeroClipboard.off();\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.setData`.\n * @private\n */\n    var _setData = function(format, data) {\n      var dataObj;\n      if (typeof format === \"object\" && format && typeof data === \"undefined\") {\n        dataObj = format;\n        ZeroClipboard.clearData();\n      } else if (typeof format === \"string\" && format) {\n        dataObj = {};\n        dataObj[format] = data;\n      } else {\n        return;\n      }\n      for (var dataFormat in dataObj) {\n        if (typeof dataFormat === \"string\" && dataFormat && _hasOwn.call(dataObj, dataFormat) && typeof dataObj[dataFormat] === \"string\" && dataObj[dataFormat]) {\n          _clipData[dataFormat] = dataObj[dataFormat];\n        }\n      }\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.clearData`.\n * @private\n */\n    var _clearData = function(format) {\n      if (typeof format === \"undefined\") {\n        _deleteOwnProperties(_clipData);\n        _clipDataFormatMap = null;\n      } else if (typeof format === \"string\" && _hasOwn.call(_clipData, format)) {\n        delete _clipData[format];\n      }\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.getData`.\n * @private\n */\n    var _getData = function(format) {\n      if (typeof format === \"undefined\") {\n        return _deepCopy(_clipData);\n      } else if (typeof format === \"string\" && _hasOwn.call(_clipData, format)) {\n        return _clipData[format];\n      }\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.focus`/`ZeroClipboard.activate`.\n * @private\n */\n    var _focus = function(element) {\n      if (!(element && element.nodeType === 1)) {\n        return;\n      }\n      if (_currentElement) {\n        _removeClass(_currentElement, _globalConfig.activeClass);\n        if (_currentElement !== element) {\n          _removeClass(_currentElement, _globalConfig.hoverClass);\n        }\n      }\n      _currentElement = element;\n      _addClass(element, _globalConfig.hoverClass);\n      var newTitle = element.getAttribute(\"title\") || _globalConfig.title;\n      if (typeof newTitle === \"string\" && newTitle) {\n        var htmlBridge = _getHtmlBridge(_flashState.bridge);\n        if (htmlBridge) {\n          htmlBridge.setAttribute(\"title\", newTitle);\n        }\n      }\n      var useHandCursor = _globalConfig.forceHandCursor === true || _getStyle(element, \"cursor\") === \"pointer\";\n      _setHandCursor(useHandCursor);\n      _reposition();\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.blur`/`ZeroClipboard.deactivate`.\n * @private\n */\n    var _blur = function() {\n      var htmlBridge = _getHtmlBridge(_flashState.bridge);\n      if (htmlBridge) {\n        htmlBridge.removeAttribute(\"title\");\n        htmlBridge.style.left = \"0px\";\n        htmlBridge.style.top = \"-9999px\";\n        htmlBridge.style.width = \"1px\";\n        htmlBridge.style.top = \"1px\";\n      }\n      if (_currentElement) {\n        _removeClass(_currentElement, _globalConfig.hoverClass);\n        _removeClass(_currentElement, _globalConfig.activeClass);\n        _currentElement = null;\n      }\n    };\n    /**\n * The underlying implementation of `ZeroClipboard.activeElement`.\n * @private\n */\n    var _activeElement = function() {\n      return _currentElement || null;\n    };\n    /**\n * Check if a value is a valid HTML4 `ID` or `Name` token.\n * @private\n */\n    var _isValidHtml4Id = function(id) {\n      return typeof id === \"string\" && id && /^[A-Za-z][A-Za-z0-9_:\\-\\.]*$/.test(id);\n    };\n    /**\n * Create or update an `event` object, based on the `eventType`.\n * @private\n */\n    var _createEvent = function(event) {\n      var eventType;\n      if (typeof event === \"string\" && event) {\n        eventType = event;\n        event = {};\n      } else if (typeof event === \"object\" && event && typeof event.type === \"string\" && event.type) {\n        eventType = event.type;\n      }\n      if (!eventType) {\n        return;\n      }\n      _extend(event, {\n        type: eventType.toLowerCase(),\n        target: event.target || _currentElement || null,\n        relatedTarget: event.relatedTarget || null,\n        currentTarget: _flashState && _flashState.bridge || null,\n        timeStamp: event.timeStamp || _now() || null\n      });\n      var msg = _eventMessages[event.type];\n      if (event.type === \"error\" && event.name && msg) {\n        msg = msg[event.name];\n      }\n      if (msg) {\n        event.message = msg;\n      }\n      if (event.type === \"ready\") {\n        _extend(event, {\n          target: null,\n          version: _flashState.version\n        });\n      }\n      if (event.type === \"error\") {\n        if (/^flash-(disabled|outdated|unavailable|deactivated|overdue)$/.test(event.name)) {\n          _extend(event, {\n            target: null,\n            minimumVersion: _minimumFlashVersion\n          });\n        }\n        if (/^flash-(outdated|unavailable|deactivated|overdue)$/.test(event.name)) {\n          _extend(event, {\n            version: _flashState.version\n          });\n        }\n      }\n      if (event.type === \"copy\") {\n        event.clipboardData = {\n          setData: ZeroClipboard.setData,\n          clearData: ZeroClipboard.clearData\n        };\n      }\n      if (event.type === \"aftercopy\") {\n        event = _mapClipResultsFromFlash(event, _clipDataFormatMap);\n      }\n      if (event.target && !event.relatedTarget) {\n        event.relatedTarget = _getRelatedTarget(event.target);\n      }\n      event = _addMouseData(event);\n      return event;\n    };\n    /**\n * Get a relatedTarget from the target's `data-clipboard-target` attribute\n * @private\n */\n    var _getRelatedTarget = function(targetEl) {\n      var relatedTargetId = targetEl && targetEl.getAttribute && targetEl.getAttribute(\"data-clipboard-target\");\n      return relatedTargetId ? _document.getElementById(relatedTargetId) : null;\n    };\n    /**\n * Add element and position data to `MouseEvent` instances\n * @private\n */\n    var _addMouseData = function(event) {\n      if (event && /^_(?:click|mouse(?:over|out|down|up|move))$/.test(event.type)) {\n        var srcElement = event.target;\n        var fromElement = event.type === \"_mouseover\" && event.relatedTarget ? event.relatedTarget : undefined;\n        var toElement = event.type === \"_mouseout\" && event.relatedTarget ? event.relatedTarget : undefined;\n        var pos = _getDOMObjectPosition(srcElement);\n        var screenLeft = _window.screenLeft || _window.screenX || 0;\n        var screenTop = _window.screenTop || _window.screenY || 0;\n        var scrollLeft = _document.body.scrollLeft + _document.documentElement.scrollLeft;\n        var scrollTop = _document.body.scrollTop + _document.documentElement.scrollTop;\n        var pageX = pos.left + (typeof event._stageX === \"number\" ? event._stageX : 0);\n        var pageY = pos.top + (typeof event._stageY === \"number\" ? event._stageY : 0);\n        var clientX = pageX - scrollLeft;\n        var clientY = pageY - scrollTop;\n        var screenX = screenLeft + clientX;\n        var screenY = screenTop + clientY;\n        var moveX = typeof event.movementX === \"number\" ? event.movementX : 0;\n        var moveY = typeof event.movementY === \"number\" ? event.movementY : 0;\n        delete event._stageX;\n        delete event._stageY;\n        _extend(event, {\n          srcElement: srcElement,\n          fromElement: fromElement,\n          toElement: toElement,\n          screenX: screenX,\n          screenY: screenY,\n          pageX: pageX,\n          pageY: pageY,\n          clientX: clientX,\n          clientY: clientY,\n          x: clientX,\n          y: clientY,\n          movementX: moveX,\n          movementY: moveY,\n          offsetX: 0,\n          offsetY: 0,\n          layerX: 0,\n          layerY: 0\n        });\n      }\n      return event;\n    };\n    /**\n * Determine if an event's registered handlers should be execute synchronously or asynchronously.\n *\n * @returns {boolean}\n * @private\n */\n    var _shouldPerformAsync = function(event) {\n      var eventType = event && typeof event.type === \"string\" && event.type || \"\";\n      return !/^(?:(?:before)?copy|destroy)$/.test(eventType);\n    };\n    /**\n * Control if a callback should be executed asynchronously or not.\n *\n * @returns `undefined`\n * @private\n */\n    var _dispatchCallback = function(func, context, args, async) {\n      if (async) {\n        _setTimeout(function() {\n          func.apply(context, args);\n        }, 0);\n      } else {\n        func.apply(context, args);\n      }\n    };\n    /**\n * Handle the actual dispatching of events to client instances.\n *\n * @returns `undefined`\n * @private\n */\n    var _dispatchCallbacks = function(event) {\n      if (!(typeof event === \"object\" && event && event.type)) {\n        return;\n      }\n      var async = _shouldPerformAsync(event);\n      var wildcardTypeHandlers = _handlers[\"*\"] || [];\n      var specificTypeHandlers = _handlers[event.type] || [];\n      var handlers = wildcardTypeHandlers.concat(specificTypeHandlers);\n      if (handlers && handlers.length) {\n        var i, len, func, context, eventCopy, originalContext = this;\n        for (i = 0, len = handlers.length; i < len; i++) {\n          func = handlers[i];\n          context = originalContext;\n          if (typeof func === \"string\" && typeof _window[func] === \"function\") {\n            func = _window[func];\n          }\n          if (typeof func === \"object\" && func && typeof func.handleEvent === \"function\") {\n            context = func;\n            func = func.handleEvent;\n          }\n          if (typeof func === \"function\") {\n            eventCopy = _extend({}, event);\n            _dispatchCallback(func, context, [ eventCopy ], async);\n          }\n        }\n      }\n      return this;\n    };\n    /**\n * Preprocess any special behaviors, reactions, or state changes after receiving this event.\n * Executes only once per event emitted, NOT once per client.\n * @private\n */\n    var _preprocessEvent = function(event) {\n      var element = event.target || _currentElement || null;\n      var sourceIsSwf = event._source === \"swf\";\n      delete event._source;\n      var flashErrorNames = [ \"flash-disabled\", \"flash-outdated\", \"flash-unavailable\", \"flash-deactivated\", \"flash-overdue\" ];\n      switch (event.type) {\n       case \"error\":\n        if (flashErrorNames.indexOf(event.name) !== -1) {\n          _extend(_flashState, {\n            disabled: event.name === \"flash-disabled\",\n            outdated: event.name === \"flash-outdated\",\n            unavailable: event.name === \"flash-unavailable\",\n            deactivated: event.name === \"flash-deactivated\",\n            overdue: event.name === \"flash-overdue\",\n            ready: false\n          });\n        }\n        break;\n\n       case \"ready\":\n        var wasDeactivated = _flashState.deactivated === true;\n        _extend(_flashState, {\n          disabled: false,\n          outdated: false,\n          unavailable: false,\n          deactivated: false,\n          overdue: wasDeactivated,\n          ready: !wasDeactivated\n        });\n        break;\n\n       case \"copy\":\n        var textContent, htmlContent, targetEl = event.relatedTarget;\n        if (!(_clipData[\"text/html\"] || _clipData[\"text/plain\"]) && targetEl && (htmlContent = targetEl.value || targetEl.outerHTML || targetEl.innerHTML) && (textContent = targetEl.value || targetEl.textContent || targetEl.innerText)) {\n          event.clipboardData.clearData();\n          event.clipboardData.setData(\"text/plain\", textContent);\n          if (htmlContent !== textContent) {\n            event.clipboardData.setData(\"text/html\", htmlContent);\n          }\n        } else if (!_clipData[\"text/plain\"] && event.target && (textContent = event.target.getAttribute(\"data-clipboard-text\"))) {\n          event.clipboardData.clearData();\n          event.clipboardData.setData(\"text/plain\", textContent);\n        }\n        break;\n\n       case \"aftercopy\":\n        ZeroClipboard.clearData();\n        if (element && element !== _safeActiveElement() && element.focus) {\n          element.focus();\n        }\n        break;\n\n       case \"_mouseover\":\n        ZeroClipboard.focus(element);\n        if (_globalConfig.bubbleEvents === true && sourceIsSwf) {\n          if (element && element !== event.relatedTarget && !_containedBy(event.relatedTarget, element)) {\n            _fireMouseEvent(_extend({}, event, {\n              type: \"mouseenter\",\n              bubbles: false,\n              cancelable: false\n            }));\n          }\n          _fireMouseEvent(_extend({}, event, {\n            type: \"mouseover\"\n          }));\n        }\n        break;\n\n       case \"_mouseout\":\n        ZeroClipboard.blur();\n        if (_globalConfig.bubbleEvents === true && sourceIsSwf) {\n          if (element && element !== event.relatedTarget && !_containedBy(event.relatedTarget, element)) {\n            _fireMouseEvent(_extend({}, event, {\n              type: \"mouseleave\",\n              bubbles: false,\n              cancelable: false\n            }));\n          }\n          _fireMouseEvent(_extend({}, event, {\n            type: \"mouseout\"\n          }));\n        }\n        break;\n\n       case \"_mousedown\":\n        _addClass(element, _globalConfig.activeClass);\n        if (_globalConfig.bubbleEvents === true && sourceIsSwf) {\n          _fireMouseEvent(_extend({}, event, {\n            type: event.type.slice(1)\n          }));\n        }\n        break;\n\n       case \"_mouseup\":\n        _removeClass(element, _globalConfig.activeClass);\n        if (_globalConfig.bubbleEvents === true && sourceIsSwf) {\n          _fireMouseEvent(_extend({}, event, {\n            type: event.type.slice(1)\n          }));\n        }\n        break;\n\n       case \"_click\":\n       case \"_mousemove\":\n        if (_globalConfig.bubbleEvents === true && sourceIsSwf) {\n          _fireMouseEvent(_extend({}, event, {\n            type: event.type.slice(1)\n          }));\n        }\n        break;\n      }\n      if (/^_(?:click|mouse(?:over|out|down|up|move))$/.test(event.type)) {\n        return true;\n      }\n    };\n    /**\n * Dispatch a synthetic MouseEvent.\n *\n * @returns `undefined`\n * @private\n */\n    var _fireMouseEvent = function(event) {\n      if (!(event && typeof event.type === \"string\" && event)) {\n        return;\n      }\n      var e, target = event.target || null, doc = target && target.ownerDocument || _document, defaults = {\n        view: doc.defaultView || _window,\n        canBubble: true,\n        cancelable: true,\n        detail: event.type === \"click\" ? 1 : 0,\n        button: typeof event.which === \"number\" ? event.which - 1 : typeof event.button === \"number\" ? event.button : doc.createEvent ? 0 : 1\n      }, args = _extend(defaults, event);\n      if (!target) {\n        return;\n      }\n      if (doc.createEvent && target.dispatchEvent) {\n        args = [ args.type, args.canBubble, args.cancelable, args.view, args.detail, args.screenX, args.screenY, args.clientX, args.clientY, args.ctrlKey, args.altKey, args.shiftKey, args.metaKey, args.button, args.relatedTarget ];\n        e = doc.createEvent(\"MouseEvents\");\n        if (e.initMouseEvent) {\n          e.initMouseEvent.apply(e, args);\n          e._source = \"js\";\n          target.dispatchEvent(e);\n        }\n      }\n    };\n    /**\n * Create the HTML bridge element to embed the Flash object into.\n * @private\n */\n    var _createHtmlBridge = function() {\n      var container = _document.createElement(\"div\");\n      container.id = _globalConfig.containerId;\n      container.className = _globalConfig.containerClass;\n      container.style.position = \"absolute\";\n      container.style.left = \"0px\";\n      container.style.top = \"-9999px\";\n      container.style.width = \"1px\";\n      container.style.height = \"1px\";\n      container.style.zIndex = \"\" + _getSafeZIndex(_globalConfig.zIndex);\n      return container;\n    };\n    /**\n * Get the HTML element container that wraps the Flash bridge object/element.\n * @private\n */\n    var _getHtmlBridge = function(flashBridge) {\n      var htmlBridge = flashBridge && flashBridge.parentNode;\n      while (htmlBridge && htmlBridge.nodeName === \"OBJECT\" && htmlBridge.parentNode) {\n        htmlBridge = htmlBridge.parentNode;\n      }\n      return htmlBridge || null;\n    };\n    /**\n * Create the SWF object.\n *\n * @returns The SWF object reference.\n * @private\n */\n    var _embedSwf = function() {\n      var len, flashBridge = _flashState.bridge, container = _getHtmlBridge(flashBridge);\n      if (!flashBridge) {\n        var allowScriptAccess = _determineScriptAccess(_window.location.host, _globalConfig);\n        var allowNetworking = allowScriptAccess === \"never\" ? \"none\" : \"all\";\n        var flashvars = _vars(_globalConfig);\n        var swfUrl = _globalConfig.swfPath + _cacheBust(_globalConfig.swfPath, _globalConfig);\n        container = _createHtmlBridge();\n        var divToBeReplaced = _document.createElement(\"div\");\n        container.appendChild(divToBeReplaced);\n        _document.body.appendChild(container);\n        var tmpDiv = _document.createElement(\"div\");\n        var oldIE = _flashState.pluginType === \"activex\";\n        tmpDiv.innerHTML = '<object id=\"' + _globalConfig.swfObjectId + '\" name=\"' + _globalConfig.swfObjectId + '\" ' + 'width=\"100%\" height=\"100%\" ' + (oldIE ? 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"' : 'type=\"application/x-shockwave-flash\" data=\"' + swfUrl + '\"') + \">\" + (oldIE ? '<param name=\"movie\" value=\"' + swfUrl + '\"/>' : \"\") + '<param name=\"allowScriptAccess\" value=\"' + allowScriptAccess + '\"/>' + '<param name=\"allowNetworking\" value=\"' + allowNetworking + '\"/>' + '<param name=\"menu\" value=\"false\"/>' + '<param name=\"wmode\" value=\"transparent\"/>' + '<param name=\"flashvars\" value=\"' + flashvars + '\"/>' + \"</object>\";\n        flashBridge = tmpDiv.firstChild;\n        tmpDiv = null;\n        flashBridge.ZeroClipboard = ZeroClipboard;\n        container.replaceChild(flashBridge, divToBeReplaced);\n      }\n      if (!flashBridge) {\n        flashBridge = _document[_globalConfig.swfObjectId];\n        if (flashBridge && (len = flashBridge.length)) {\n          flashBridge = flashBridge[len - 1];\n        }\n        if (!flashBridge && container) {\n          flashBridge = container.firstChild;\n        }\n      }\n      _flashState.bridge = flashBridge || null;\n      return flashBridge;\n    };\n    /**\n * Destroy the SWF object.\n * @private\n */\n    var _unembedSwf = function() {\n      var flashBridge = _flashState.bridge;\n      if (flashBridge) {\n        var htmlBridge = _getHtmlBridge(flashBridge);\n        if (htmlBridge) {\n          if (_flashState.pluginType === \"activex\" && \"readyState\" in flashBridge) {\n            flashBridge.style.display = \"none\";\n            (function removeSwfFromIE() {\n              if (flashBridge.readyState === 4) {\n                for (var prop in flashBridge) {\n                  if (typeof flashBridge[prop] === \"function\") {\n                    flashBridge[prop] = null;\n                  }\n                }\n                if (flashBridge.parentNode) {\n                  flashBridge.parentNode.removeChild(flashBridge);\n                }\n                if (htmlBridge.parentNode) {\n                  htmlBridge.parentNode.removeChild(htmlBridge);\n                }\n              } else {\n                _setTimeout(removeSwfFromIE, 10);\n              }\n            })();\n          } else {\n            if (flashBridge.parentNode) {\n              flashBridge.parentNode.removeChild(flashBridge);\n            }\n            if (htmlBridge.parentNode) {\n              htmlBridge.parentNode.removeChild(htmlBridge);\n            }\n          }\n        }\n        _flashState.ready = null;\n        _flashState.bridge = null;\n        _flashState.deactivated = null;\n      }\n    };\n    /**\n * Map the data format names of the \"clipData\" to Flash-friendly names.\n *\n * @returns A new transformed object.\n * @private\n */\n    var _mapClipDataToFlash = function(clipData) {\n      var newClipData = {}, formatMap = {};\n      if (!(typeof clipData === \"object\" && clipData)) {\n        return;\n      }\n      for (var dataFormat in clipData) {\n        if (dataFormat && _hasOwn.call(clipData, dataFormat) && typeof clipData[dataFormat] === \"string\" && clipData[dataFormat]) {\n          switch (dataFormat.toLowerCase()) {\n           case \"text/plain\":\n           case \"text\":\n           case \"air:text\":\n           case \"flash:text\":\n            newClipData.text = clipData[dataFormat];\n            formatMap.text = dataFormat;\n            break;\n\n           case \"text/html\":\n           case \"html\":\n           case \"air:html\":\n           case \"flash:html\":\n            newClipData.html = clipData[dataFormat];\n            formatMap.html = dataFormat;\n            break;\n\n           case \"application/rtf\":\n           case \"text/rtf\":\n           case \"rtf\":\n           case \"richtext\":\n           case \"air:rtf\":\n           case \"flash:rtf\":\n            newClipData.rtf = clipData[dataFormat];\n            formatMap.rtf = dataFormat;\n            break;\n\n           default:\n            break;\n          }\n        }\n      }\n      return {\n        data: newClipData,\n        formatMap: formatMap\n      };\n    };\n    /**\n * Map the data format names from Flash-friendly names back to their original \"clipData\" names (via a format mapping).\n *\n * @returns A new transformed object.\n * @private\n */\n    var _mapClipResultsFromFlash = function(clipResults, formatMap) {\n      if (!(typeof clipResults === \"object\" && clipResults && typeof formatMap === \"object\" && formatMap)) {\n        return clipResults;\n      }\n      var newResults = {};\n      for (var prop in clipResults) {\n        if (_hasOwn.call(clipResults, prop)) {\n          if (prop !== \"success\" && prop !== \"data\") {\n            newResults[prop] = clipResults[prop];\n            continue;\n          }\n          newResults[prop] = {};\n          var tmpHash = clipResults[prop];\n          for (var dataFormat in tmpHash) {\n            if (dataFormat && _hasOwn.call(tmpHash, dataFormat) && _hasOwn.call(formatMap, dataFormat)) {\n              newResults[prop][formatMap[dataFormat]] = tmpHash[dataFormat];\n            }\n          }\n        }\n      }\n      return newResults;\n    };\n    /**\n * Will look at a path, and will create a \"?noCache={time}\" or \"&noCache={time}\"\n * query param string to return. Does NOT append that string to the original path.\n * This is useful because ExternalInterface often breaks when a Flash SWF is cached.\n *\n * @returns The `noCache` query param with necessary \"?\"/\"&\" prefix.\n * @private\n */\n    var _cacheBust = function(path, options) {\n      var cacheBust = options == null || options && options.cacheBust === true;\n      if (cacheBust) {\n        return (path.indexOf(\"?\") === -1 ? \"?\" : \"&\") + \"noCache=\" + _now();\n      } else {\n        return \"\";\n      }\n    };\n    /**\n * Creates a query string for the FlashVars param.\n * Does NOT include the cache-busting query param.\n *\n * @returns FlashVars query string\n * @private\n */\n    var _vars = function(options) {\n      var i, len, domain, domains, str = \"\", trustedOriginsExpanded = [];\n      if (options.trustedDomains) {\n        if (typeof options.trustedDomains === \"string\") {\n          domains = [ options.trustedDomains ];\n        } else if (typeof options.trustedDomains === \"object\" && \"length\" in options.trustedDomains) {\n          domains = options.trustedDomains;\n        }\n      }\n      if (domains && domains.length) {\n        for (i = 0, len = domains.length; i < len; i++) {\n          if (_hasOwn.call(domains, i) && domains[i] && typeof domains[i] === \"string\") {\n            domain = _extractDomain(domains[i]);\n            if (!domain) {\n              continue;\n            }\n            if (domain === \"*\") {\n              trustedOriginsExpanded.length = 0;\n              trustedOriginsExpanded.push(domain);\n              break;\n            }\n            trustedOriginsExpanded.push.apply(trustedOriginsExpanded, [ domain, \"//\" + domain, _window.location.protocol + \"//\" + domain ]);\n          }\n        }\n      }\n      if (trustedOriginsExpanded.length) {\n        str += \"trustedOrigins=\" + _encodeURIComponent(trustedOriginsExpanded.join(\",\"));\n      }\n      if (options.forceEnhancedClipboard === true) {\n        str += (str ? \"&\" : \"\") + \"forceEnhancedClipboard=true\";\n      }\n      if (typeof options.swfObjectId === \"string\" && options.swfObjectId) {\n        str += (str ? \"&\" : \"\") + \"swfObjectId=\" + _encodeURIComponent(options.swfObjectId);\n      }\n      return str;\n    };\n    /**\n * Extract the domain (e.g. \"github.com\") from an origin (e.g. \"https://github.com\") or\n * URL (e.g. \"https://github.com/zeroclipboard/zeroclipboard/\").\n *\n * @returns the domain\n * @private\n */\n    var _extractDomain = function(originOrUrl) {\n      if (originOrUrl == null || originOrUrl === \"\") {\n        return null;\n      }\n      originOrUrl = originOrUrl.replace(/^\\s+|\\s+$/g, \"\");\n      if (originOrUrl === \"\") {\n        return null;\n      }\n      var protocolIndex = originOrUrl.indexOf(\"//\");\n      originOrUrl = protocolIndex === -1 ? originOrUrl : originOrUrl.slice(protocolIndex + 2);\n      var pathIndex = originOrUrl.indexOf(\"/\");\n      originOrUrl = pathIndex === -1 ? originOrUrl : protocolIndex === -1 || pathIndex === 0 ? null : originOrUrl.slice(0, pathIndex);\n      if (originOrUrl && originOrUrl.slice(-4).toLowerCase() === \".swf\") {\n        return null;\n      }\n      return originOrUrl || null;\n    };\n    /**\n * Set `allowScriptAccess` based on `trustedDomains` and `window.location.host` vs. `swfPath`.\n *\n * @returns The appropriate script access level.\n * @private\n */\n    var _determineScriptAccess = function() {\n      var _extractAllDomains = function(origins) {\n        var i, len, tmp, resultsArray = [];\n        if (typeof origins === \"string\") {\n          origins = [ origins ];\n        }\n        if (!(typeof origins === \"object\" && origins && typeof origins.length === \"number\")) {\n          return resultsArray;\n        }\n        for (i = 0, len = origins.length; i < len; i++) {\n          if (_hasOwn.call(origins, i) && (tmp = _extractDomain(origins[i]))) {\n            if (tmp === \"*\") {\n              resultsArray.length = 0;\n              resultsArray.push(\"*\");\n              break;\n            }\n            if (resultsArray.indexOf(tmp) === -1) {\n              resultsArray.push(tmp);\n            }\n          }\n        }\n        return resultsArray;\n      };\n      return function(currentDomain, configOptions) {\n        var swfDomain = _extractDomain(configOptions.swfPath);\n        if (swfDomain === null) {\n          swfDomain = currentDomain;\n        }\n        var trustedDomains = _extractAllDomains(configOptions.trustedDomains);\n        var len = trustedDomains.length;\n        if (len > 0) {\n          if (len === 1 && trustedDomains[0] === \"*\") {\n            return \"always\";\n          }\n          if (trustedDomains.indexOf(currentDomain) !== -1) {\n            if (len === 1 && currentDomain === swfDomain) {\n              return \"sameDomain\";\n            }\n            return \"always\";\n          }\n        }\n        return \"never\";\n      };\n    }();\n    /**\n * Get the currently active/focused DOM element.\n *\n * @returns the currently active/focused element, or `null`\n * @private\n */\n    var _safeActiveElement = function() {\n      try {\n        return _document.activeElement;\n      } catch (err) {\n        return null;\n      }\n    };\n    /**\n * Add a class to an element, if it doesn't already have it.\n *\n * @returns The element, with its new class added.\n * @private\n */\n    var _addClass = function(element, value) {\n      if (!element || element.nodeType !== 1) {\n        return element;\n      }\n      if (element.classList) {\n        if (!element.classList.contains(value)) {\n          element.classList.add(value);\n        }\n        return element;\n      }\n      if (value && typeof value === \"string\") {\n        var classNames = (value || \"\").split(/\\s+/);\n        if (element.nodeType === 1) {\n          if (!element.className) {\n            element.className = value;\n          } else {\n            var className = \" \" + element.className + \" \", setClass = element.className;\n            for (var c = 0, cl = classNames.length; c < cl; c++) {\n              if (className.indexOf(\" \" + classNames[c] + \" \") < 0) {\n                setClass += \" \" + classNames[c];\n              }\n            }\n            element.className = setClass.replace(/^\\s+|\\s+$/g, \"\");\n          }\n        }\n      }\n      return element;\n    };\n    /**\n * Remove a class from an element, if it has it.\n *\n * @returns The element, with its class removed.\n * @private\n */\n    var _removeClass = function(element, value) {\n      if (!element || element.nodeType !== 1) {\n        return element;\n      }\n      if (element.classList) {\n        if (element.classList.contains(value)) {\n          element.classList.remove(value);\n        }\n        return element;\n      }\n      if (typeof value === \"string\" && value) {\n        var classNames = value.split(/\\s+/);\n        if (element.nodeType === 1 && element.className) {\n          var className = (\" \" + element.className + \" \").replace(/[\\n\\t]/g, \" \");\n          for (var c = 0, cl = classNames.length; c < cl; c++) {\n            className = className.replace(\" \" + classNames[c] + \" \", \" \");\n          }\n          element.className = className.replace(/^\\s+|\\s+$/g, \"\");\n        }\n      }\n      return element;\n    };\n    /**\n * Attempt to interpret the element's CSS styling. If `prop` is `\"cursor\"`,\n * then we assume that it should be a hand (\"pointer\") cursor if the element\n * is an anchor element (\"a\" tag).\n *\n * @returns The computed style property.\n * @private\n */\n    var _getStyle = function(el, prop) {\n      var value = _window.getComputedStyle(el, null).getPropertyValue(prop);\n      if (prop === \"cursor\") {\n        if (!value || value === \"auto\") {\n          if (el.nodeName === \"A\") {\n            return \"pointer\";\n          }\n        }\n      }\n      return value;\n    };\n    /**\n * Get the zoom factor of the browser. Always returns `1.0`, except at\n * non-default zoom levels in IE<8 and some older versions of WebKit.\n *\n * @returns Floating unit percentage of the zoom factor (e.g. 150% = `1.5`).\n * @private\n */\n    var _getZoomFactor = function() {\n      var rect, physicalWidth, logicalWidth, zoomFactor = 1;\n      if (typeof _document.body.getBoundingClientRect === \"function\") {\n        rect = _document.body.getBoundingClientRect();\n        physicalWidth = rect.right - rect.left;\n        logicalWidth = _document.body.offsetWidth;\n        zoomFactor = _round(physicalWidth / logicalWidth * 100) / 100;\n      }\n      return zoomFactor;\n    };\n    /**\n * Get the DOM positioning info of an element.\n *\n * @returns Object containing the element's position, width, and height.\n * @private\n */\n    var _getDOMObjectPosition = function(obj) {\n      var info = {\n        left: 0,\n        top: 0,\n        width: 0,\n        height: 0\n      };\n      if (obj.getBoundingClientRect) {\n        var rect = obj.getBoundingClientRect();\n        var pageXOffset, pageYOffset, zoomFactor;\n        if (\"pageXOffset\" in _window && \"pageYOffset\" in _window) {\n          pageXOffset = _window.pageXOffset;\n          pageYOffset = _window.pageYOffset;\n        } else {\n          zoomFactor = _getZoomFactor();\n          pageXOffset = _round(_document.documentElement.scrollLeft / zoomFactor);\n          pageYOffset = _round(_document.documentElement.scrollTop / zoomFactor);\n        }\n        var leftBorderWidth = _document.documentElement.clientLeft || 0;\n        var topBorderWidth = _document.documentElement.clientTop || 0;\n        info.left = rect.left + pageXOffset - leftBorderWidth;\n        info.top = rect.top + pageYOffset - topBorderWidth;\n        info.width = \"width\" in rect ? rect.width : rect.right - rect.left;\n        info.height = \"height\" in rect ? rect.height : rect.bottom - rect.top;\n      }\n      return info;\n    };\n    /**\n * Reposition the Flash object to cover the currently activated element.\n *\n * @returns `undefined`\n * @private\n */\n    var _reposition = function() {\n      var htmlBridge;\n      if (_currentElement && (htmlBridge = _getHtmlBridge(_flashState.bridge))) {\n        var pos = _getDOMObjectPosition(_currentElement);\n        _extend(htmlBridge.style, {\n          width: pos.width + \"px\",\n          height: pos.height + \"px\",\n          top: pos.top + \"px\",\n          left: pos.left + \"px\",\n          zIndex: \"\" + _getSafeZIndex(_globalConfig.zIndex)\n        });\n      }\n    };\n    /**\n * Sends a signal to the Flash object to display the hand cursor if `true`.\n *\n * @returns `undefined`\n * @private\n */\n    var _setHandCursor = function(enabled) {\n      if (_flashState.ready === true) {\n        if (_flashState.bridge && typeof _flashState.bridge.setHandCursor === \"function\") {\n          _flashState.bridge.setHandCursor(enabled);\n        } else {\n          _flashState.ready = false;\n        }\n      }\n    };\n    /**\n * Get a safe value for `zIndex`\n *\n * @returns an integer, or \"auto\"\n * @private\n */\n    var _getSafeZIndex = function(val) {\n      if (/^(?:auto|inherit)$/.test(val)) {\n        return val;\n      }\n      var zIndex;\n      if (typeof val === \"number\" && !_isNaN(val)) {\n        zIndex = val;\n      } else if (typeof val === \"string\") {\n        zIndex = _getSafeZIndex(_parseInt(val, 10));\n      }\n      return typeof zIndex === \"number\" ? zIndex : \"auto\";\n    };\n    /**\n * Detect the Flash Player status, version, and plugin type.\n *\n * @see {@link https://code.google.com/p/doctype-mirror/wiki/ArticleDetectFlash#The_code}\n * @see {@link http://stackoverflow.com/questions/12866060/detecting-pepper-ppapi-flash-with-javascript}\n *\n * @returns `undefined`\n * @private\n */\n    var _detectFlashSupport = function(ActiveXObject) {\n      var plugin, ax, mimeType, hasFlash = false, isActiveX = false, isPPAPI = false, flashVersion = \"\";\n      /**\n   * Derived from Apple's suggested sniffer.\n   * @param {String} desc e.g. \"Shockwave Flash 7.0 r61\"\n   * @returns {String} \"7.0.61\"\n   * @private\n   */\n      function parseFlashVersion(desc) {\n        var matches = desc.match(/[\\d]+/g);\n        matches.length = 3;\n        return matches.join(\".\");\n      }\n      function isPepperFlash(flashPlayerFileName) {\n        return !!flashPlayerFileName && (flashPlayerFileName = flashPlayerFileName.toLowerCase()) && (/^(pepflashplayer\\.dll|libpepflashplayer\\.so|pepperflashplayer\\.plugin)$/.test(flashPlayerFileName) || flashPlayerFileName.slice(-13) === \"chrome.plugin\");\n      }\n      function inspectPlugin(plugin) {\n        if (plugin) {\n          hasFlash = true;\n          if (plugin.version) {\n            flashVersion = parseFlashVersion(plugin.version);\n          }\n          if (!flashVersion && plugin.description) {\n            flashVersion = parseFlashVersion(plugin.description);\n          }\n          if (plugin.filename) {\n            isPPAPI = isPepperFlash(plugin.filename);\n          }\n        }\n      }\n      if (_navigator.plugins && _navigator.plugins.length) {\n        plugin = _navigator.plugins[\"Shockwave Flash\"];\n        inspectPlugin(plugin);\n        if (_navigator.plugins[\"Shockwave Flash 2.0\"]) {\n          hasFlash = true;\n          flashVersion = \"2.0.0.11\";\n        }\n      } else if (_navigator.mimeTypes && _navigator.mimeTypes.length) {\n        mimeType = _navigator.mimeTypes[\"application/x-shockwave-flash\"];\n        plugin = mimeType && mimeType.enabledPlugin;\n        inspectPlugin(plugin);\n      } else if (typeof ActiveXObject !== \"undefined\") {\n        isActiveX = true;\n        try {\n          ax = new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");\n          hasFlash = true;\n          flashVersion = parseFlashVersion(ax.GetVariable(\"$version\"));\n        } catch (e1) {\n          try {\n            ax = new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\");\n            hasFlash = true;\n            flashVersion = \"6.0.21\";\n          } catch (e2) {\n            try {\n              ax = new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");\n              hasFlash = true;\n              flashVersion = parseFlashVersion(ax.GetVariable(\"$version\"));\n            } catch (e3) {\n              isActiveX = false;\n            }\n          }\n        }\n      }\n      _flashState.disabled = hasFlash !== true;\n      _flashState.outdated = flashVersion && _parseFloat(flashVersion) < _parseFloat(_minimumFlashVersion);\n      _flashState.version = flashVersion || \"0.0.0\";\n      _flashState.pluginType = isPPAPI ? \"pepper\" : isActiveX ? \"activex\" : hasFlash ? \"netscape\" : \"unknown\";\n    };\n    /**\n * Invoke the Flash detection algorithms immediately upon inclusion so we're not waiting later.\n */\n    _detectFlashSupport(_ActiveXObject);\n    /**\n * A shell constructor for `ZeroClipboard` client instances.\n *\n * @constructor\n */\n    var ZeroClipboard = function() {\n      if (!(this instanceof ZeroClipboard)) {\n        return new ZeroClipboard();\n      }\n      if (typeof ZeroClipboard._createClient === \"function\") {\n        ZeroClipboard._createClient.apply(this, _args(arguments));\n      }\n    };\n    /**\n * The ZeroClipboard library's version number.\n *\n * @static\n * @readonly\n * @property {string}\n */\n    _defineProperty(ZeroClipboard, \"version\", {\n      value: \"2.1.2\",\n      writable: false,\n      configurable: true,\n      enumerable: true\n    });\n    /**\n * Update or get a copy of the ZeroClipboard global configuration.\n * Returns a copy of the current/updated configuration.\n *\n * @returns Object\n * @static\n */\n    ZeroClipboard.config = function() {\n      return _config.apply(this, _args(arguments));\n    };\n    /**\n * Diagnostic method that describes the state of the browser, Flash Player, and ZeroClipboard.\n *\n * @returns Object\n * @static\n */\n    ZeroClipboard.state = function() {\n      return _state.apply(this, _args(arguments));\n    };\n    /**\n * Check if Flash is unusable for any reason: disabled, outdated, deactivated, etc.\n *\n * @returns Boolean\n * @static\n */\n    ZeroClipboard.isFlashUnusable = function() {\n      return _isFlashUnusable.apply(this, _args(arguments));\n    };\n    /**\n * Register an event listener.\n *\n * @returns `ZeroClipboard`\n * @static\n */\n    ZeroClipboard.on = function() {\n      return _on.apply(this, _args(arguments));\n    };\n    /**\n * Unregister an event listener.\n * If no `listener` function/object is provided, it will unregister all listeners for the provided `eventType`.\n * If no `eventType` is provided, it will unregister all listeners for every event type.\n *\n * @returns `ZeroClipboard`\n * @static\n */\n    ZeroClipboard.off = function() {\n      return _off.apply(this, _args(arguments));\n    };\n    /**\n * Retrieve event listeners for an `eventType`.\n * If no `eventType` is provided, it will retrieve all listeners for every event type.\n *\n * @returns array of listeners for the `eventType`; if no `eventType`, then a map/hash object of listeners for all event types; or `null`\n */\n    ZeroClipboard.handlers = function() {\n      return _listeners.apply(this, _args(arguments));\n    };\n    /**\n * Event emission receiver from the Flash object, forwarding to any registered JavaScript event listeners.\n *\n * @returns For the \"copy\" event, returns the Flash-friendly \"clipData\" object; otherwise `undefined`.\n * @static\n */\n    ZeroClipboard.emit = function() {\n      return _emit.apply(this, _args(arguments));\n    };\n    /**\n * Create and embed the Flash object.\n *\n * @returns The Flash object\n * @static\n */\n    ZeroClipboard.create = function() {\n      return _create.apply(this, _args(arguments));\n    };\n    /**\n * Self-destruct and clean up everything, including the embedded Flash object.\n *\n * @returns `undefined`\n * @static\n */\n    ZeroClipboard.destroy = function() {\n      return _destroy.apply(this, _args(arguments));\n    };\n    /**\n * Set the pending data for clipboard injection.\n *\n * @returns `undefined`\n * @static\n */\n    ZeroClipboard.setData = function() {\n      return _setData.apply(this, _args(arguments));\n    };\n    /**\n * Clear the pending data for clipboard injection.\n * If no `format` is provided, all pending data formats will be cleared.\n *\n * @returns `undefined`\n * @static\n */\n    ZeroClipboard.clearData = function() {\n      return _clearData.apply(this, _args(arguments));\n    };\n    /**\n * Get a copy of the pending data for clipboard injection.\n * If no `format` is provided, a copy of ALL pending data formats will be returned.\n *\n * @returns `String` or `Object`\n * @static\n */\n    ZeroClipboard.getData = function() {\n      return _getData.apply(this, _args(arguments));\n    };\n    /**\n * Sets the current HTML object that the Flash object should overlay. This will put the global\n * Flash object on top of the current element; depending on the setup, this may also set the\n * pending clipboard text data as well as the Flash object's wrapping element's title attribute\n * based on the underlying HTML element and ZeroClipboard configuration.\n *\n * @returns `undefined`\n * @static\n */\n    ZeroClipboard.focus = ZeroClipboard.activate = function() {\n      return _focus.apply(this, _args(arguments));\n    };\n    /**\n * Un-overlays the Flash object. This will put the global Flash object off-screen; depending on\n * the setup, this may also unset the Flash object's wrapping element's title attribute based on\n * the underlying HTML element and ZeroClipboard configuration.\n *\n * @returns `undefined`\n * @static\n */\n    ZeroClipboard.blur = ZeroClipboard.deactivate = function() {\n      return _blur.apply(this, _args(arguments));\n    };\n    /**\n * Returns the currently focused/\"activated\" HTML element that the Flash object is wrapping.\n *\n * @returns `HTMLElement` or `null`\n * @static\n */\n    ZeroClipboard.activeElement = function() {\n      return _activeElement.apply(this, _args(arguments));\n    };\n    if (typeof define === \"function\" && define.amd) {\n      define(function() {\n        return ZeroClipboard;\n      });\n    } else if (typeof module === \"object\" && module && typeof module.exports === \"object\" && module.exports) {\n      module.exports = ZeroClipboard;\n    } else {\n      window.ZeroClipboard = ZeroClipboard;\n    }\n  })(function() {\n    return this || window;\n  }());\n  (function($, window, undefined) {\n    var mouseEnterBindingCount = 0, customEventNamespace = \".zeroclipboard\", ZeroClipboard = window.ZeroClipboard, _trustedDomains = ZeroClipboard.config(\"trustedDomains\");\n    function getSelectionData() {\n      var range, selectedText = \"\", selectedData = {}, sel = window.getSelection(), tmp = document.createElement(\"div\");\n      for (var i = 0, len = sel.rangeCount; i < len; i++) {\n        range = sel.getRangeAt(i);\n        selectedText += range.toString();\n        tmp.appendChild(range.cloneContents());\n      }\n      selectedData[\"text/plain\"] = selectedText;\n      if (selectedText.replace(/\\s/g, \"\")) {\n        selectedData[\"text/html\"] = tmp.innerHTML;\n      }\n      return selectedData;\n    }\n    function convertHtmlToRtf(html) {\n      if (!(typeof html === \"string\" && html)) {\n        return null;\n      }\n      var tmpRichText, hasHyperlinks, richText = html;\n      richText = richText.replace(/<(?:hr)(?:\\s+[^>]*)?\\s*[\\/]?>/gi, \"{\\\\pard \\\\brdrb \\\\brdrs \\\\brdrw10 \\\\brsp20 \\\\par}\\n{\\\\pard\\\\par}\\n\");\n      richText = richText.replace(/<(?:br)(?:\\s+[^>]*)?\\s*[\\/]?>/gi, \"{\\\\pard\\\\par}\\n\");\n      richText = richText.replace(/<(?:p|div|section|article)(?:\\s+[^>]*)?\\s*[\\/]>/gi, \"{\\\\pard\\\\par}\\n\");\n      richText = richText.replace(/<(?:[^>]+)\\/>/g, \"\");\n      richText = richText.replace(/<a(?:\\s+[^>]*)?(?:\\s+href=([\"'])(?:javascript:void\\(0?\\);?|#|return false;?|void\\(0?\\);?|)\\1)(?:\\s+[^>]*)?>/gi, \"{{{\\n\");\n      tmpRichText = richText;\n      richText = richText.replace(/<a(?:\\s+[^>]*)?(?:\\s+href=([\"'])(.+)\\1)(?:\\s+[^>]*)?>/gi, '{\\\\field{\\\\*\\\\fldinst{HYPERLINK\\n \"$2\"\\n}}{\\\\fldrslt{\\\\ul\\\\cf1\\n');\n      hasHyperlinks = richText !== tmpRichText;\n      richText = richText.replace(/<a(?:\\s+[^>]*)?>/gi, \"{{{\\n\");\n      richText = richText.replace(/<\\/a(?:\\s+[^>]*)?>/gi, \"\\n}}}\");\n      richText = richText.replace(/<(?:b|strong)(?:\\s+[^>]*)?>/gi, \"{\\\\b\\n\");\n      richText = richText.replace(/<(?:i|em)(?:\\s+[^>]*)?>/gi, \"{\\\\i\\n\");\n      richText = richText.replace(/<(?:u|ins)(?:\\s+[^>]*)?>/gi, \"{\\\\ul\\n\");\n      richText = richText.replace(/<(?:strike|del)(?:\\s+[^>]*)?>/gi, \"{\\\\strike\\n\");\n      richText = richText.replace(/<sup(?:\\s+[^>]*)?>/gi, \"{\\\\super\\n\");\n      richText = richText.replace(/<sub(?:\\s+[^>]*)?>/gi, \"{\\\\sub\\n\");\n      richText = richText.replace(/<(?:p|div|section|article)(?:\\s+[^>]*)?>/gi, \"{\\\\pard\\n\");\n      richText = richText.replace(/<\\/(?:p|div|section|article)(?:\\s+[^>]*)?>/gi, \"\\n\\\\par}\\n\");\n      richText = richText.replace(/<\\/(?:b|strong|i|em|u|ins|strike|del|sup|sub)(?:\\s+[^>]*)?>/gi, \"\\n}\");\n      richText = richText.replace(/<(?:[^>]+)>/g, \"\");\n      richText = \"{\\\\rtf1\\\\ansi\\n\" + (hasHyperlinks ? \"{\\\\colortbl\\n;\\n\\\\red0\\\\green0\\\\blue255;\\n}\\n\" : \"\") + richText + \"\\n}\";\n      return richText;\n    }\n    function zcEventHandler(e) {\n      var $event = $.Event(e.type, $.extend(e, {\n        _source: \"swf\"\n      }));\n      $(e.target).trigger($event);\n      if ($event.type === \"copy\") {\n        if ($.event.special.copy.options.requirePreventDefault === true && !$event.isDefaultPrevented()) {\n          e.clipboardData.clearData();\n          var selectionData = getSelectionData();\n          if (selectionData[\"text/plain\"] || selectionData[\"text/html\"]) {\n            e.clipboardData.setData(selectionData);\n          }\n        }\n        var _clipData = ZeroClipboard.getData();\n        if ($.event.special.copy.options.autoConvertHtmlToRtf === true && _clipData[\"text/html\"] && !_clipData[\"application/rtf\"]) {\n          var richText = convertHtmlToRtf(_clipData[\"text/html\"]);\n          e.clipboardData.setData(\"application/rtf\", richText);\n        }\n      }\n    }\n    function zcErrorHandler(e) {\n      var $event = $.Event(\"copy-error\", $.extend(e, {\n        type: \"copy-error\",\n        _source: \"swf\"\n      }));\n      $(e.target).trigger($event);\n    }\n    function setup() {\n      $.event.props.push(\"clipboardData\");\n      ZeroClipboard.config($.extend(true, {\n        autoActivate: false\n      }, copyEventDef.options));\n      ZeroClipboard.on(\"beforecopy copy aftercopy\", zcEventHandler);\n      ZeroClipboard.on(\"error\", zcErrorHandler);\n      ZeroClipboard.create();\n    }\n    function teardown() {\n      ZeroClipboard.destroy();\n      var indy = $.event.props.indexOf(\"clipboardData\");\n      if (indy !== -1) {\n        $.event.props.splice(indy, 1);\n      }\n    }\n    function mouseEnterHandler($event) {\n      mouseSuppressor($event);\n      if ($event.target && $event.target !== ZeroClipboard.activeElement() && $event.target !== $(\"#\" + ZeroClipboard.config(\"containerId\"))[0] && $event.target !== $(\"#\" + ZeroClipboard.config(\"swfObjectId\"))[0]) {\n        ZeroClipboard.focus($event.target);\n      }\n    }\n    function mouseLeaveHandler($event) {\n      mouseSuppressor($event);\n      if ($event.relatedTarget && $event.relatedTarget !== ZeroClipboard.activeElement() && $event.relatedTarget !== $(\"#\" + ZeroClipboard.config(\"containerId\"))[0] && $event.relatedTarget !== $(\"#\" + ZeroClipboard.config(\"swfObjectId\"))[0]) {\n        ZeroClipboard.blur();\n      }\n    }\n    function mouseSuppressor($event) {\n      if (!ZeroClipboard.isFlashUnusable() && $event.originalEvent._source !== \"js\") {\n        $event.stopImmediatePropagation();\n        $event.preventDefault();\n      }\n    }\n    var copyEventDef = {\n      add: function(handleObj) {\n        if (0 === mouseEnterBindingCount++) {\n          setup();\n        }\n        var namespaces = customEventNamespace + (handleObj.namespace ? \".\" + handleObj.namespace : \"\"), selector = handleObj.selector, zcDataKey = \"zc|{\" + selector + \"}|{\" + namespaces + \"}|count\", $this = $(this);\n        if (typeof $this.data(zcDataKey) !== \"number\") {\n          $this.data(zcDataKey, 0);\n        }\n        if ($this.data(zcDataKey) === 0) {\n          $this.on(\"mouseenter\" + namespaces, selector, mouseEnterHandler);\n          $this.on(\"mouseleave\" + namespaces, selector, mouseLeaveHandler);\n          $this.on(\"mouseover\" + namespaces, selector, mouseSuppressor);\n          $this.on(\"mouseout\" + namespaces, selector, mouseSuppressor);\n          $this.on(\"mousemove\" + namespaces, selector, mouseSuppressor);\n          $this.on(\"mousedown\" + namespaces, selector, mouseSuppressor);\n          $this.on(\"mouseup\" + namespaces, selector, mouseSuppressor);\n          $this.on(\"click\" + namespaces, selector, mouseSuppressor);\n        }\n        $this.data(zcDataKey, $this.data(zcDataKey) + 1);\n      },\n      remove: function(handleObj) {\n        var namespaces = customEventNamespace + (handleObj.namespace ? \".\" + handleObj.namespace : \"\"), selector = handleObj.selector, zcDataKey = \"zc|{\" + selector + \"}|{\" + namespaces + \"}|count\", $this = $(this);\n        $this.data(zcDataKey, $this.data(zcDataKey) - 1);\n        if ($this.data(zcDataKey) === 0) {\n          $this.off(\"click\" + namespaces, selector, mouseSuppressor);\n          $this.off(\"mouseup\" + namespaces, selector, mouseSuppressor);\n          $this.off(\"mousedown\" + namespaces, selector, mouseSuppressor);\n          $this.off(\"mousemove\" + namespaces, selector, mouseSuppressor);\n          $this.off(\"mouseout\" + namespaces, selector, mouseSuppressor);\n          $this.off(\"mouseover\" + namespaces, selector, mouseSuppressor);\n          $this.off(\"mouseleave\" + namespaces, selector, mouseLeaveHandler);\n          $this.off(\"mouseenter\" + namespaces, selector, mouseEnterHandler);\n          $this.removeData(zcDataKey);\n        }\n        if (0 === --mouseEnterBindingCount) {\n          teardown();\n        }\n      },\n      trigger: function($event) {\n        if ($event.type === \"copy\") {\n          var $this = $(this);\n          var sourceIsSwf = $event._source === \"swf\";\n          delete $event._source;\n          if (!sourceIsSwf) {\n            $this.trigger($.extend(true, {}, $event, {\n              type: \"beforecopy\"\n            }));\n            $this.one(\"copy\", function() {\n              var successData = {}, _clipData = ZeroClipboard.getData();\n              $.each(_clipData, function(key) {\n                successData[key] = false;\n              });\n              var $e = $.extend(true, {}, $event, {\n                type: \"aftercopy\",\n                data: $.extend(true, {}, _clipData),\n                success: successData\n              });\n              $this.trigger($e);\n            });\n          }\n        }\n      },\n      _default: function() {\n        return true;\n      },\n      options: {\n        requirePreventDefault: true,\n        autoConvertHtmlToRtf: true,\n        trustedDomains: _trustedDomains,\n        hoverClass: \"hover\",\n        activeClass: \"active\"\n      }\n    };\n    $.event.special.beforecopy = copyEventDef;\n    $.event.special.copy = copyEventDef;\n    $.event.special.aftercopy = copyEventDef;\n    $.event.special[\"copy-error\"] = copyEventDef;\n  })(jQuery, function() {\n    return this || window;\n  }());\n  if (!zcExistsAlready) {\n    delete window.ZeroClipboard;\n  }\n})(jQuery, function() {\n  return this || window;\n}());"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/.gitignore",
    "content": ".idea\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/CONTRIBUTING.md",
    "content": "Contributing to Select2\n=======================\nLooking to contribute something to Select2? **Here's how you can help.**\n\nPlease take a moment to review this document in order to make the contribution\nprocess easy and effective for everyone involved.\n\nFollowing these guidelines helps to communicate that you respect the time of\nthe developers managing and developing this open source project. In return,\nthey should reciprocate that respect in addressing your issue or assessing\npatches and features.\n\nUsing the issue tracker\n-----------------------\nWhen [reporting bugs][reporting-bugs] or\n[requesting features][requesting-features], the\n[issue tracker on GitHub][issue-tracker] is the recommended channel to use.\n\nThe issue tracker **is not** a place for support requests. The\n[mailing list][mailing-list] or [IRC channel][irc-channel] are better places to\nget help.\n\nReporting bugs with Select2\n---------------------------\nWe really appreciate clear bug reports that _consistently_ show an issue\n_within Select2_.\n\nThe ideal bug report follows these guidelines:\n\n1. **Use the [GitHub issue search][issue-search]**  &mdash; Check if the issue\n   has already been reported.\n2. **Check if the issue has been fixed**  &mdash; Try to reproduce the problem\n   using the code in the `master` branch.\n3. **Isolate the problem**  &mdash; Try to create an\n   [isolated test case][isolated-case] that consistently reproduces the problem.\n\nPlease try to be as detailed as possible in your bug report, especially if an\nisolated test case cannot be made. Some useful questions to include the answer\nto are:\n\n- What steps can be used to reproduce the issue?\n- What is the bug and what is the expected outcome?\n- What browser(s) and Operating System have you tested with?\n- Does the bug happen consistently across all tested browsers?\n- What version of jQuery are you using? And what version of Select2?\n- Are you using Select2 with other plugins?\n\nAll of these questions will help people fix and identify any potential bugs.\n\nRequesting features in Select2\n------------------------------\nSelect2 is a large library that carries with it a lot of functionality. Because\nof this, many feature requests will not be implemented in the core library.\n\nBefore starting work on a major feature for Select2, **contact the\n[community][community] first** or you may risk spending a considerable amount of\ntime on something which the project developers are not interested in bringing\ninto the project.\n\n### Select2 4.0\n\nMany feature requests will be closed off until 4.0, where Select2 plans to adopt\na more flexible API.  If you are interested in helping with the development of\nthe next major Select2 release, please send a message to the\n[mailing list][mailing-list] or [irc channel][irc-channel] for more information.\n\nTriaging issues and pull requests\n---------------------------------\nAnyone can help the project maintainers triage issues and review pull requests.\n\n### Handling new issues\n\nSelect2 regularly receives new issues which need to be tested and organized.\n\nWhen a new issue that comes in that is similar to another existing issue, it\nshould be checked to make sure it is not a duplicate.  Duplicates issues should\nbe marked by replying to the issue with \"Duplicate of #[issue number]\" where\n`[issue number]` is the url or issue number for the existing issue.  This will\nallow the project maintainers to quickly close off additional issues and keep\nthe discussion focused within a single issue.\n\nIf you can test issues that are reported to Select2 that contain test cases and\nconfirm under what conditions bugs happen, that will allow others to identify\nwhat causes a bug quicker.\n\n### Reviewing pull requests\n\nIt is very common for pull requests to be opened for issues that contain a clear\nsolution to the problem.  These pull requests should be rigorously reviewed by\nthe community before being accepted.  If you are not sure about a piece of\nsubmitted code, or know of a better way to do something, do not hesitate to make\na comment on the pull request.\n\nIt should also be made clear that **all code contributed to Select** must be\nlicensable under the [Apache 2 or GPL 2 licenses][licensing].  Code that cannot\nbe released under either of these licenses **cannot be accepted** into the\nproject.\n\n[community]: https://github.com/ivaynberg/select2#community\n[reporting-bugs]: #reporting-bugs-with-select2\n[requesting-features]: #requesting-features-in-select2\n[issue-tracker]: https://github.com/ivaynberg/select2/issues\n[mailing-list]: https://github.com/ivaynberg/select2#mailing-list\n[irc-channel]: https://github.com/ivaynberg/select2#irc-channel\n[issue-search]: https://github.com/ivaynberg/select2/search?q=&type=Issues\n[isolated-case]: http://css-tricks.com/6263-reduced-test-cases/\n[licensing]: https://github.com/ivaynberg/select2#copyright-and-license\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/LICENSE",
    "content": "Copyright 2014 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License.\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/README.md",
    "content": "Select2\n=======\n\nSelect2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\n\nTo get started, checkout examples and documentation at http://select2.github.io/select2/\n\nUse cases\n---------\n\n* Enhancing native selects with search.\n* Enhancing native selects with a better multi-select interface.\n* Loading data from JavaScript: easily load items via ajax and have them searchable.\n* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction.\n* Tagging: ability to add new items on the fly.\n* Working with large, remote datasets: ability to partially load a dataset based on the search term.\n* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.\n* Templating: support for custom rendering of results and selections.\n\nBrowser compatibility\n---------------------\n* IE 8+\n* Chrome 8+\n* Firefox 10+\n* Safari 3+\n* Opera 10.6+\n\nUsage\n-----\nYou can source Select2 directly from a CDN like [jsDelivr](http://www.jsdelivr.com/#!select2) or [CDNJS](http://www.cdnjs.com/libraries/select2), [download it from this GitHub repo](https://github.com/select2/select2/tags), or use one of the integrations below.\n\nIntegrations\n------------\n\n* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org))\n* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)\n* [AngularUI](http://angular-ui.github.io/#ui-select) ([AngularJS](https://angularjs.org/))\n* [Django](https://github.com/applegrew/django-select2)\n* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin)\n* [Symfony2](https://github.com/avocode/FormExtensions)\n* [Bootstrap 2](https://github.com/t0m/select2-bootstrap-css) and [Bootstrap 3](https://github.com/t0m/select2-bootstrap-css/tree/bootstrap3) (CSS skins)\n* [Meteor](https://github.com/nate-strauser/meteor-select2) (modern reactive JavaScript framework; + [Bootstrap 3 skin](https://github.com/esperadomedia/meteor-select2-bootstrap3-css/))\n* [Meteor](https://jquery-select2.meteor.com)\n* [Yii 2.x](http://demos.krajee.com/widgets#select2)\n* [Yii 1.x](https://github.com/tonybolzan/yii-select2)\n* [AtmosphereJS](https://atmospherejs.com/package/jquery-select2)\n* [EmberJS](https://github.com/iStefo/ember-select-2)\n\n### Example Integrations\n\n* [Knockout.js](https://github.com/ivaynberg/select2/wiki/Knockout.js-Integration)\n* [Socket.IO](https://github.com/ivaynberg/select2/wiki/Socket.IO-Integration)\n* [PHP](https://github.com/ivaynberg/select2/wiki/PHP-Example)\n* [.Net MVC] (https://github.com/ivaynberg/select2/wiki/.Net-MVC-Example)\n\nInternationalization (i18n)\n---------------------------\n\nSelect2 supports multiple languages by simply including the right language JS\nfile (`select2_locale_it.js`, `select2_locale_nl.js`, etc.) after `select2.js`.\n\nMissing a language? Just copy `select2_locale_en.js.template`, translate\nit, and make a pull request back to Select2 here on GitHub.\n\nDocumentation\n-------------\n\nThe documentation for Select2 is available [through GitHub Pages](http://select2.github.io/select2/) and is located within this repository in the [`gh-pages` branch](https://github.com/ivaynberg/select2/tree/gh-pages).\n\nCommunity\n---------\n\n### Bug tracker\n\nHave a bug? Please create an issue here on GitHub!\n\nhttps://github.com/ivaynberg/select2/issues\n\n### Mailing list\n\nHave a question? Ask on our mailing list!\n\nselect2@googlegroups.com\n\nhttps://groups.google.com/d/forum/select2\n\n### IRC channel\n\nNeed help implementing Select2 in your project? Ask in our IRC channel!\n\n**Network:** [Freenode](https://freenode.net/) (`chat.freenode.net`)\n\n**Channel:** `#select2`\n\n**Web access:** https://webchat.freenode.net/?channels=select2\n\nCopyright and license\n---------------------\n\nCopyright 2015 Igor Vaynberg\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License.\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/bower.json",
    "content": "{\n    \"name\": \"select2\",\n    \"version\": \"3.5.3\",\n    \"main\": [\"select2.js\", \"select2.css\", \"select2.png\", \"select2x2.png\", \"select2-spinner.gif\"],\n    \"dependencies\": {\n        \"jquery\": \">= 1.7.1\"\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/component.json",
    "content": "{\n  \"name\": \"select2\",\n  \"repo\": \"ivaynberg/select2\",\n  \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n  \"version\": \"3.5.3\",\n  \"demo\": \"http://ivaynberg.github.io/select2/\",\n  \"keywords\": [\n    \"jquery\"\n  ],\n  \"main\": \"select2.js\",\n  \"styles\": [\n    \"select2.css\",\n    \"select2-bootstrap.css\"\n  ],\n  \"scripts\": [\n    \"select2.js\",\n    \"select2_locale_ar.js\",\n    \"select2_locale_bg.js\",\n    \"select2_locale_ca.js\",\n    \"select2_locale_cs.js\",\n    \"select2_locale_da.js\",\n    \"select2_locale_de.js\",\n    \"select2_locale_el.js\",\n    \"select2_locale_es.js\",\n    \"select2_locale_et.js\",\n    \"select2_locale_eu.js\",\n    \"select2_locale_fa.js\",\n    \"select2_locale_fi.js\",\n    \"select2_locale_fr.js\",\n    \"select2_locale_gl.js\",\n    \"select2_locale_he.js\",\n    \"select2_locale_hr.js\",\n    \"select2_locale_hu.js\",\n    \"select2_locale_id.js\",\n    \"select2_locale_is.js\",\n    \"select2_locale_it.js\",\n    \"select2_locale_ja.js\",\n    \"select2_locale_ka.js\",\n    \"select2_locale_ko.js\",\n    \"select2_locale_lt.js\",\n    \"select2_locale_lv.js\",\n    \"select2_locale_mk.js\",\n    \"select2_locale_ms.js\",\n    \"select2_locale_nl.js\",\n    \"select2_locale_no.js\",\n    \"select2_locale_pl.js\",\n    \"select2_locale_pt-BR.js\",\n    \"select2_locale_pt-PT.js\",\n    \"select2_locale_ro.js\",\n    \"select2_locale_ru.js\",\n    \"select2_locale_sk.js\",\n    \"select2_locale_sv.js\",\n    \"select2_locale_th.js\",\n    \"select2_locale_tr.js\",\n    \"select2_locale_uk.js\",\n    \"select2_locale_vi.js\",\n    \"select2_locale_zh-CN.js\",\n    \"select2_locale_zh-TW.js\"\n  ],\n  \"images\": [\n    \"select2-spinner.gif\",\n    \"select2.png\",\n    \"select2x2.png\"\n  ],\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/composer.json",
    "content": "{\n  \"name\":\n  \"ivaynberg/select2\",\n  \"description\": \"Select2 is a jQuery based replacement for select boxes.\",\n  \"version\": \"3.5.3\",\n  \"type\": \"component\",\n  \"homepage\": \"http://ivaynberg.github.io/select2/\",\n  \"license\": \"Apache-2.0\",\n  \"require\": {\n    \"robloach/component-installer\": \"*\",\n    \"components/jquery\": \">=1.7.1\"\n  },\n  \"extra\": {\n    \"component\": {\n      \"scripts\": [\n        \"select2.js\"\n      ],\n      \"files\": [\n        \"select2.js\",\n        \"select2_locale_*.js\",\n        \"select2.css\",\n        \"select2-bootstrap.css\",\n        \"select2-spinner.gif\",\n        \"select2.png\",\n        \"select2x2.png\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/release.sh",
    "content": "#!/bin/bash\nset -e\n\necho -n \"Enter the version for this release: \"\n\nread ver\n\nif [ ! $ver ]; then\n\techo \"Invalid version.\"\n\texit\nfi\n\nname=\"select2\"\njs=\"$name.js\"\nmini=\"$name.min.js\"\ncss=\"$name.css\"\nrelease=\"$name-$ver\"\ntag=\"$ver\"\nbranch=\"build-$ver\"\ncurbranch=`git branch | grep \"*\" | sed \"s/* //\"`\ntimestamp=$(date)\ntokens=\"s/@@ver@@/$ver/g;s/\\@@timestamp@@/$timestamp/g\"\nremote=\"origin\"\n\necho \"Pulling from origin\"\n\ngit pull\n\necho \"Updating Version Identifiers\"\n\nsed -E -e \"s/\\\"version\\\": \\\"([0-9\\.]+)\\\",/\\\"version\\\": \\\"$ver\\\",/g\" -i -- bower.json select2.jquery.json component.json composer.json package.json\n\ngit add bower.json\ngit add select2.jquery.json\ngit add component.json\ngit add composer.json\ngit add package.json\n\ngit commit -m \"modified version identifiers in descriptors for release $ver\"\ngit push\n\ngit branch \"$branch\"\ngit checkout \"$branch\"\n\necho \"Tokenizing...\"\n\nfind . -name \"$js\" | xargs -I{} sed -e \"$tokens\" -i -- {}\nfind . -name \"$css\" | xargs -I{} sed -e \"$tokens\" -i -- {}\n\nsed -e \"s/latest/$ver/g\" -i -- bower.json\n\ngit add \"$js\"\ngit add \"$css\"\n\necho \"Minifying...\"\n\necho \"/*\" > \"$mini\"\ncat LICENSE | sed \"$tokens\" >> \"$mini\"\necho \"*/\" >> \"$mini\"\n\ncurl -s \\\n\t--data-urlencode \"js_code@$js\" \\\n\thttp://marijnhaverbeke.nl/uglifyjs \\\n\t>> \"$mini\"\n\ngit add \"$mini\"\n\ngit commit -m \"release $ver\"\n\necho \"Tagging...\"\ngit tag -a \"$tag\" -m \"tagged version $ver\"\ngit push \"$remote\" --tags\n\necho \"Cleaning Up...\"\n\ngit checkout \"$curbranch\"\ngit branch -D \"$branch\"\n\necho \"Done\"\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2-bootstrap.css",
    "content": ".form-control .select2-choice {\n    border: 0;\n    border-radius: 2px;\n}\n\n.form-control .select2-choice .select2-arrow {\n    border-radius: 0 2px 2px 0;   \n}\n\n.form-control.select2-container {\n    height: auto !important;\n    padding: 0;\n}\n\n.form-control.select2-container.select2-dropdown-open {\n    border-color: #5897FB;\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control .select2-container.select2-dropdown-open .select2-choices {\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control.select2-container .select2-choices {\n    border: 0 !important;\n    border-radius: 3px;\n}\n\n.control-group.warning .select2-container .select2-choice,\n.control-group.warning .select2-container .select2-choices,\n.control-group.warning .select2-container-active .select2-choice,\n.control-group.warning .select2-container-active .select2-choices,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.warning .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #C09853 !important;\n}\n\n.control-group.warning .select2-container .select2-choice div {\n    border-left: 1px solid #C09853 !important;\n    background: #FCF8E3 !important;\n}\n\n.control-group.error .select2-container .select2-choice,\n.control-group.error .select2-container .select2-choices,\n.control-group.error .select2-container-active .select2-choice,\n.control-group.error .select2-container-active .select2-choices,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.error .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #B94A48 !important;\n}\n\n.control-group.error .select2-container .select2-choice div {\n    border-left: 1px solid #B94A48 !important;\n    background: #F2DEDE !important;\n}\n\n.control-group.info .select2-container .select2-choice,\n.control-group.info .select2-container .select2-choices,\n.control-group.info .select2-container-active .select2-choice,\n.control-group.info .select2-container-active .select2-choices,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.info .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #3A87AD !important;\n}\n\n.control-group.info .select2-container .select2-choice div {\n    border-left: 1px solid #3A87AD !important;\n    background: #D9EDF7 !important;\n}\n\n.control-group.success .select2-container .select2-choice,\n.control-group.success .select2-container .select2-choices,\n.control-group.success .select2-container-active .select2-choice,\n.control-group.success .select2-container-active .select2-choices,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.success .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #468847 !important;\n}\n\n.control-group.success .select2-container .select2-choice div {\n    border-left: 1px solid #468847 !important;\n    background: #DFF0D8 !important;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2.css",
    "content": "/*\nVersion: 3.5.3 Timestamp: Wed Aug 19 21:55:46 EDT 2015\n*/\n.select2-container {\n    margin: 0;\n    position: relative;\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n     -moz-box-sizing: border-box; /* firefox */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    border-radius: 4px;\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n    padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    border-radius: 0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n    background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n    margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    text-overflow: ellipsis;\n    float: none;\n    width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n    margin-left: 26px;\n    margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n    display: none;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 24px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n    display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    border: 0;\n    margin: 0;\n    padding: 0;\n    position: fixed;\n    left: 0;\n    top: 0;\n    min-height: 100%;\n    min-width: 100%;\n    height: auto;\n    width: auto;\n    opacity: 0;\n    z-index: 9998;\n    /* styles required for IE to work */\n    background-color: #fff;\n    filter: alpha(opacity=0);\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top: -1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n    border: 1px solid #5897fb;\n    border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n    border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n    border-top: 1px solid #aaa;\n    width: auto;\n}\n\n.select2-container .select2-choice .select2-arrow {\n    display: inline-block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    border-radius: 0 4px 4px 0;\n\n    background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n    left: 0;\n    right: auto;\n\n    border-left: none;\n    border-right: 1px solid #aaa;\n    border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n    background-position: 2px 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding: 4px 4px 0 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    border-radius: 0;\n\n    -webkit-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n    background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n    padding: 4px 5px 4px 20px;\n\n    background: #fff url('select2.png') no-repeat -37px -22px;\n    background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n    border: 1px solid #5897fb;\n    border-top-color: transparent;\n\n    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n    border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n    padding: 0 4px 0 0;\n    margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n    padding-left: 0;\n}\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    min-height: 1em;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: #fff;\n    color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n    padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n    background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0 5px 0 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n    background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n    padding: 0 0 0 5px;\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n    float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n            box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n    margin: 3px 5px 3px 0;\n    padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n    right: auto;\n    left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n    left: auto;\n    right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {    display: none;\n    background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n    clip: rect(0 0 0 0) !important;\n    width: 1px !important;\n    height: 1px !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n    outline: 0 !important;\n    left: 0px !important;\n    top: 0px !important;\n}\n\n.select2-display-none {\n    display: none;\n}\n\n.select2-measure-scrollbar {\n    position: absolute;\n    top: -10000px;\n    left: -10000px;\n    width: 100px;\n    height: 100px;\n    overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx)  {\n    .select2-search input,\n    .select2-search-choice-close,\n    .select2-container .select2-choice abbr,\n    .select2-container .select2-choice .select2-arrow b {\n        background-image: url('select2x2.png') !important;\n        background-repeat: no-repeat !important;\n        background-size: 60px 40px !important;\n    }\n\n    .select2-search input {\n        background-position: 100% -21px !important;\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2.jquery.json",
    "content": "{\n    \"name\": \"select2\",\n    \"title\": \"Select2\",\n    \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n    \"keywords\": [\n        \"select\",\n        \"autocomplete\",\n        \"typeahead\",\n        \"dropdown\",\n        \"multiselect\",\n        \"tag\",\n        \"tagging\"\n    ],\n    \"version\": \"3.5.3\",\n    \"author\": {\n        \"name\": \"Igor Vaynberg\",\n        \"url\": \"https://github.com/ivaynberg\"\n    },\n    \"licenses\": [\n        {\n            \"type\": \"Apache\",\n            \"url\": \"http://www.apache.org/licenses/LICENSE-2.0\"\n        },\n        {\n            \"type\": \"GPL v2\",\n            \"url\": \"http://www.gnu.org/licenses/gpl-2.0.html\"\n        }\n    ],\n    \"bugs\": \"https://github.com/ivaynberg/select2/issues\",\n    \"homepage\": \"http://ivaynberg.github.com/select2\",\n    \"docs\": \"http://ivaynberg.github.com/select2/\",\n    \"download\": \"https://github.com/ivaynberg/select2/tags\",\n    \"dependencies\": {\n        \"jquery\": \">=1.7.1\"\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2.js",
    "content": "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: 3.5.3 Timestamp: Wed Aug 19 21:55:46 EDT 2015\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n(function ($) {\n    if(typeof $.fn.each2 == \"undefined\") {\n        $.extend($.fn, {\n            /*\n            * 4-10 times faster .each replacement\n            * use it carefully, as it overrides jQuery context of element on each iteration\n            */\n            each2 : function (c) {\n                var j = $([0]), i = -1, l = this.length;\n                while (\n                    ++i < l\n                    && (j.context = j[0] = this[i])\n                    && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n                );\n                return this;\n            }\n        });\n    }\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    },\n    MEASURE_SCROLLBAR_TEMPLATE = \"<div class='select2-measure-scrollbar'></div>\",\n\n    DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\",\"\\u0386\":\"\\u0391\",\"\\u0388\":\"\\u0395\",\"\\u0389\":\"\\u0397\",\"\\u038A\":\"\\u0399\",\"\\u03AA\":\"\\u0399\",\"\\u038C\":\"\\u039F\",\"\\u038E\":\"\\u03A5\",\"\\u03AB\":\"\\u03A5\",\"\\u038F\":\"\\u03A9\",\"\\u03AC\":\"\\u03B1\",\"\\u03AD\":\"\\u03B5\",\"\\u03AE\":\"\\u03B7\",\"\\u03AF\":\"\\u03B9\",\"\\u03CA\":\"\\u03B9\",\"\\u0390\":\"\\u03B9\",\"\\u03CC\":\"\\u03BF\",\"\\u03CD\":\"\\u03C5\",\"\\u03CB\":\"\\u03C5\",\"\\u03B0\":\"\\u03C5\",\"\\u03C9\":\"\\u03C9\",\"\\u03C2\":\"\\u03C3\"};\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n\n    function reinsertElement(element) {\n        var placeholder = $(document.createTextNode(''));\n\n        element.before(placeholder);\n        placeholder.before(element);\n        placeholder.remove();\n    }\n\n    function stripDiacritics(str) {\n        // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n        function match(a) {\n            return DIACRITICS[a] || a;\n        }\n\n        return str.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    function measureScrollbar () {\n        var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\n        $template.appendTo(document.body);\n\n        var dim = {\n            width: $template.width() - $template[0].clientWidth,\n            height: $template.height() - $template[0].clientHeight\n        };\n        $template.remove();\n\n        return dim;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        // Check whether 'a' or 'b' is a string (primitive or object).\n        // The concatenation of an empty string (+'') converts its argument to a string's primitive.\n        if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\n        if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, transforming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator, transform) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = transform(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.on(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.on(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n        element.on(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.on(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);\n            if (isVisible && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function getCursorInfo(el) {\n        el = $(el)[0];\n        var offset = 0;\n        var length = 0;\n        if ('selectionStart' in el) {\n            offset = el.selectionStart;\n            length = el.selectionEnd - offset;\n        } else if ('selection' in document) {\n            el.focus();\n            var sel = document.selection.createRange();\n            length = document.selection.createRange().text.length;\n            sel.moveStart('character', -el.value.length);\n            offset = sel.text.length - length;\n        }\n        return { offset: offset, length: length };\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n            var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n            sizer = $(document.createElement(\"div\")).css({\n                position: \"absolute\",\n                left: \"-10000px\",\n                top: \"-10000px\",\n                display: \"none\",\n                fontSize: style.fontSize,\n                fontFamily: style.fontFamily,\n                fontStyle: style.fontStyle,\n                fontWeight: style.fontWeight,\n                letterSpacing: style.letterSpacing,\n                textTransform: style.textTransform,\n                whiteSpace: \"nowrap\"\n            });\n            sizer.attr(\"class\",\"select2-sizer\");\n            $(document.body).append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = $.trim(dest.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n\n        classes = $.trim(src.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n\n                    if (adapted) {\n                        replacements.push(adapted);\n                    }\n                }\n            });\n        }\n\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    function defaultEscapeMarkup(markup) {\n        var replace_map = {\n            '\\\\': '&#92;',\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#39;',\n            \"/\": '&#47;'\n        };\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n            return replace_map[match];\n        });\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration parameters\n     * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                var data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.fn.select2.ajaxDefaults.transport,\n                    // deprecated - to be removed in 4.0  - use params instead\n                    deprecated = {\n                        type: options.type || 'GET', // set type of request (GET or POST)\n                        cache: options.cache || false,\n                        jsonpCallback: options.jsonpCallback||undefined,\n                        dataType: options.dataType||\"json\"\n                    },\n                    params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if (handler && typeof handler.abort === \"function\") { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    success: function (data) {\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        // added query as third paramter to keep backwards compatibility\n                        var results = options.results(data, query.page, query);\n                        query.callback(results);\n                    },\n                    error: function(jqXHR, textStatus, errorThrown){\n                        var results = {\n                            hasError: true,\n                            jqXHR: jqXHR,\n                            textStatus: textStatus,\n                            errorThrown: errorThrown\n                        };\n\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n         if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n         if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            var result = isFunc ? data(query) : data;\n            if ($.isArray(result)) {\n                $(result).each(function () {\n                    var isObject = this.text !== undefined,\n                        text = isObject ? this.text : this;\n                    if (t === \"\" || query.matcher(t, text)) {\n                        filtered.results.push(isObject ? this : {id: this, text: this});\n                    }\n                });\n                query.callback(filtered);\n            }\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        if (typeof(formatter) === 'string') return true;\n        throw new Error(formatterName +\" must be a string, function, or falsy value\");\n    }\n\n  /**\n   * Returns a given value\n   * If given a function, returns its output\n   *\n   * @param val string|function\n   * @param context value of \"this\" to be passed to function\n   * @returns {*}\n   */\n    function evaluate(val, context) {\n        if ($.isFunction(val)) {\n            var args = Array.prototype.slice.call(arguments, 2);\n            return val.apply(context, args);\n        }\n        return val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice.call(this, token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    function cleanupJQueryElements() {\n        var self = this;\n\n        $.each(arguments, function (i, element) {\n            self[element].remove();\n            self[element] = null;\n        });\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\";\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                opts.element.data(\"select2\").destroy();\n            }\n\n            this.container = this.createContainer();\n\n            this.liveRegion = $('.select2-hidden-accessible');\n            if (this.liveRegion.length == 0) {\n                this.liveRegion = $(\"<span>\", {\n                        role: \"status\",\n                        \"aria-live\": \"polite\"\n                    })\n                    .addClass(\"select2-hidden-accessible\")\n                    .appendTo(document.body);\n            }\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerEventName= this.containerId\n                .replace(/([.])/g, '_')\n                .replace(/([;&,\\-\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            this.container.attr(\"title\", opts.element.attr(\"title\"));\n\n            this.body = $(document.body);\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.attr(\"style\", opts.element.attr(\"style\"));\n            this.container.css(evaluate(opts.containerCss, this.opts.element));\n            this.container.addClass(evaluate(opts.containerCssClass, this.opts.element));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabindex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .attr(\"tabindex\", \"-1\")\n                .before(this.container)\n                .on(\"click.select2\", killEvent); // do not leak click events\n\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n\n            syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element));\n            this.dropdown.data(\"select2\", this);\n            this.dropdown.on(\"click\", killEvent);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            this.queryCount = 0;\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            this.container.on(\"click\", killEvent);\n\n            installFilteredMouseMove(this.results);\n\n            this.dropdown.on(\"mousemove-filtered\", resultsSelector, this.bind(this.highlightUnderEvent));\n            this.dropdown.on(\"touchstart touchmove touchend\", resultsSelector, this.bind(function (event) {\n                this._touchEvent = true;\n                this.highlightUnderEvent(event);\n            }));\n            this.dropdown.on(\"touchmove\", resultsSelector, this.bind(this.touchMoved));\n            this.dropdown.on(\"touchstart touchend\", resultsSelector, this.bind(this.clearTouchMoved));\n\n            // Waiting for a click event on touch devices to select option and hide dropdown\n            // otherwise click will be triggered on an underlying element\n            this.dropdown.on('click', this.bind(function (event) {\n                if (this._touchEvent) {\n                    this._touchEvent = false;\n                    this.selectHighlighted();\n                }\n            }));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\n\n            // do not propagate change event from the search field out of the component\n            $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n            $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop();\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.on(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.\n            this.dropdown.on(\"click mouseup mousedown touchstart touchend focusin\", function (e) { e.stopPropagation(); });\n\n            this.lastSearchTerm = undefined;\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.maximumInputLength !== null) {\n                this.search.attr(\"maxlength\", opts.maximumInputLength);\n            }\n\n            var disabled = opts.element.prop(\"disabled\");\n            if (disabled === undefined) disabled = false;\n            this.enable(!disabled);\n\n            var readonly = opts.element.prop(\"readonly\");\n            if (readonly === undefined) readonly = false;\n            this.readonly(readonly);\n\n            // Calculate size of scrollbar\n            scrollBarDimensions = scrollBarDimensions || measureScrollbar();\n\n            this.autofocus = opts.element.prop(\"autofocus\");\n            opts.element.prop(\"autofocus\", false);\n            if (this.autofocus) this.focus();\n\n            this.search.attr(\"placeholder\", opts.searchInputPlaceholder);\n        },\n\n        // abstract\n        destroy: function () {\n            var element=this.opts.element, select2 = element.data(\"select2\"), self = this;\n\n            this.close();\n\n            if (element.length && element[0].detachEvent && self._sync) {\n                element.each(function () {\n                    if (self._sync) {\n                        this.detachEvent(\"onpropertychange\", self._sync);\n                    }\n                });\n            }\n            if (this.propertyObserver) {\n                this.propertyObserver.disconnect();\n                this.propertyObserver = null;\n            }\n            this._sync = null;\n\n            if (select2 !== undefined) {\n                select2.container.remove();\n                select2.liveRegion.remove();\n                select2.dropdown.remove();\n                element.removeData(\"select2\")\n                    .off(\".select2\");\n                if (!element.is(\"input[type='hidden']\")) {\n                    element\n                        .show()\n                        .prop(\"autofocus\", this.autofocus || false);\n                    if (this.elementTabIndex) {\n                        element.attr({tabindex: this.elementTabIndex});\n                    } else {\n                        element.removeAttr(\"tabindex\");\n                    }\n                    element.show();\n                } else {\n                    element.css(\"display\", \"\");\n                }\n            }\n\n            cleanupJQueryElements.call(this,\n                \"container\",\n                \"liveRegion\",\n                \"dropdown\",\n                \"results\",\n                \"search\"\n            );\n        },\n\n        // abstract\n        optionToData: function(element) {\n            if (element.is(\"option\")) {\n                return {\n                    id:element.prop(\"value\"),\n                    text:element.text(),\n                    element: element.get(),\n                    css: element.attr(\"class\"),\n                    disabled: element.prop(\"disabled\"),\n                    locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\n                };\n            } else if (element.is(\"optgroup\")) {\n                return {\n                    text:element.attr(\"label\"),\n                    children:[],\n                    element: element.get(),\n                    css: element.attr(\"class\")\n                };\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl, self = this;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts.debug = opts.debug || $.fn.select2.defaults.debug;\n\n            // Warnings for options renamed/removed in Select2 4.0.0\n            // Only when it's enabled through debug mode\n            if (opts.debug && console && console.warn) {\n                // id was removed\n                if (opts.id != null) {\n                    console.warn(\n                        'Select2: The `id` option has been removed in Select2 4.0.0, ' +\n                        'consider renaming your `id` property or mapping the property before your data makes it to Select2. ' +\n                        'You can read more at https://select2.github.io/announcements-4.0.html#changed-id'\n                    );\n                }\n\n                // text was removed\n                if (opts.text != null) {\n                    console.warn(\n                        'Select2: The `text` option has been removed in Select2 4.0.0, ' +\n                        'consider renaming your `text` property or mapping the property before your data makes it to Select2. ' +\n                        'You can read more at https://select2.github.io/announcements-4.0.html#changed-id'\n                    );\n                }\n\n                // sortResults was renamed to results\n                if (opts.sortResults != null) {\n                    console.warn(\n                        'Select2: the `sortResults` option has been renamed to `sorter` in Select2 4.0.0. '\n                    );\n                }\n\n                // selectOnBlur was renamed to selectOnClose\n                if (opts.selectOnBlur != null) {\n                    console.warn(\n                        'Select2: The `selectOnBlur` option has been renamed to `selectOnClose` in Select2 4.0.0.'\n                    );\n                }\n\n                // ajax.results was renamed to ajax.processResults\n                if (opts.ajax != null && opts.ajax.results != null) {\n                    console.warn(\n                        'Select2: The `ajax.results` option has been renamed to `ajax.processResults` in Select2 4.0.0.'\n                    );\n                }\n\n                // format* options were renamed to language.*\n                if (opts.formatNoResults != null) {\n                    console.warn(\n                        'Select2: The `formatNoResults` option has been renamed to `language.noResults` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatSearching != null) {\n                    console.warn(\n                        'Select2: The `formatSearching` option has been renamed to `language.searching` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatInputTooShort != null) {\n                    console.warn(\n                        'Select2: The `formatInputTooShort` option has been renamed to `language.inputTooShort` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatInputTooLong != null) {\n                    console.warn(\n                        'Select2: The `formatInputTooLong` option has been renamed to `language.inputTooLong` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatLoading != null) {\n                    console.warn(\n                        'Select2: The `formatLoading` option has been renamed to `language.loadingMore` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatSelectionTooBig != null) {\n                    console.warn(\n                        'Select2: The `formatSelectionTooBig` option has been renamed to `language.maximumSelected` in Select2 4.0.0.'\n                    );\n                }\n\n                if (opts.element.data('select2Tags')) {\n                    console.warn(\n                        'Select2: The `data-select2-tags` attribute has been renamed to `data-tags` in Select2 4.0.0.'\n                    );\n                }\n            }\n\n            // Aliasing options renamed in Select2 4.0.0\n\n            // data-select2-tags -> data-tags\n            if (opts.element.data('tags') != null) {\n                var tags = opts.element.data('tags');\n\n                // data-tags should actually be a boolean\n                if (!$.isArray(tags)) {\n                    tags = [];\n                }\n\n                opts.element.data('select2Tags', tags);\n            }\n\n            // sortResults -> sorter\n            if (opts.sorter != null) {\n                opts.sortResults = opts.sorter;\n            }\n\n            // selectOnBlur -> selectOnClose\n            if (opts.selectOnClose != null) {\n                opts.selectOnBlur = opts.selectOnClose;\n            }\n\n            // ajax.results -> ajax.processResults\n            if (opts.ajax != null) {\n                if ($.isFunction(opts.ajax.processResults)) {\n                    opts.ajax.results = opts.ajax.processResults;\n                }\n            }\n\n            // Formatters/language options\n            if (opts.language != null) {\n                var lang = opts.language;\n\n                // formatNoMatches -> language.noMatches\n                if ($.isFunction(lang.noMatches)) {\n                    opts.formatNoMatches = lang.noMatches;\n                }\n\n                // formatSearching -> language.searching\n                if ($.isFunction(lang.searching)) {\n                    opts.formatSearching = lang.searching;\n                }\n\n                // formatInputTooShort -> language.inputTooShort\n                if ($.isFunction(lang.inputTooShort)) {\n                    opts.formatInputTooShort = lang.inputTooShort;\n                }\n\n                // formatInputTooLong -> language.inputTooLong\n                if ($.isFunction(lang.inputTooLong)) {\n                    opts.formatInputTooLong = lang.inputTooLong;\n                }\n\n                // formatLoading -> language.loadingMore\n                if ($.isFunction(lang.loadingMore)) {\n                    opts.formatLoading = lang.loadingMore;\n                }\n\n                // formatSelectionTooBig -> language.maximumSelected\n                if ($.isFunction(lang.maximumSelected)) {\n                    opts.formatSelectionTooBig = lang.maximumSelected;\n                }\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate, id=this.opts.id, liveRegion=this.liveRegion;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        // collect the created nodes for bulk append\n                        var nodes = [];\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n                            node.attr(\"role\", \"presentation\");\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n                            label.attr(\"id\", \"select2-result-label-\" + nextUid());\n                            label.attr(\"role\", \"option\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                                node.append(label);\n                            }\n\n\n                            if (compound) {\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            nodes.push(node[0]);\n                        }\n\n                        // bulk append the created nodes\n                        container.append(nodes);\n                        liveRegion.text(opts.formatMatches(results.length));\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.data(\"select2Tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, placeholderOption, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push(self.optionToData(element));\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group=self.optionToData(element);\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        placeholderOption = this.getPlaceholderOption();\n                        if (placeholderOption) {\n                            children=children.not(placeholderOption);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and their id is hardcoded\n                opts.id=function(e) { return e.id; };\n            } else {\n                if (!(\"query\" in opts)) {\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator, opts.transformVal)).each(function () {\n                                    var obj = { id: this, text: this },\n                                        tags = opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });\n                                    data.push(obj);\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            if (opts.createSearchChoicePosition === 'top') {\n                opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };\n            }\n            else if (opts.createSearchChoicePosition === 'bottom') {\n                opts.createSearchChoicePosition = function(list, item) { list.push(item); };\n            }\n            else if (typeof(opts.createSearchChoicePosition) !== \"function\")  {\n                throw \"invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function\";\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, observer, self = this;\n\n            el.on(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            this._sync = this.bind(function () {\n\n                // sync enabled state\n                var disabled = el.prop(\"disabled\");\n                if (disabled === undefined) disabled = false;\n                this.enable(!disabled);\n\n                var readonly = el.prop(\"readonly\");\n                if (readonly === undefined) readonly = false;\n                this.readonly(readonly);\n\n                if (this.container) {\n                    syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                    this.container.addClass(evaluate(this.opts.containerCssClass, this.opts.element));\n                }\n\n                if (this.dropdown) {\n                    syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                    this.dropdown.addClass(evaluate(this.opts.dropdownCssClass, this.opts.element));\n                }\n\n            });\n\n            // IE8-10 (IE9/10 won't fire propertyChange via attachEventListener)\n            if (el.length && el[0].attachEvent) {\n                el.each(function() {\n                    this.attachEvent(\"onpropertychange\", self._sync);\n                });\n            }\n\n            // safari, chrome, firefox, IE11\n            observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;\n            if (observer !== undefined) {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new observer(function (mutations) {\n                    $.each(mutations, self._sync);\n                });\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        // abstract\n        triggerSelect: function(data) {\n            var evt = $.Event(\"select2-selecting\", { val: this.id(data), object: data, choice: data });\n            this.opts.element.trigger(evt);\n            return !evt.isDefaultPrevented();\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignores the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        //abstract\n        isInterfaceEnabled: function()\n        {\n            return this.enabledInterface === true;\n        },\n\n        // abstract\n        enableInterface: function() {\n            var enabled = this._enabled && !this._readonly,\n                disabled = !enabled;\n\n            if (enabled === this.enabledInterface) return false;\n\n            this.container.toggleClass(\"select2-container-disabled\", disabled);\n            this.close();\n            this.enabledInterface = enabled;\n\n            return true;\n        },\n\n        // abstract\n        enable: function(enabled) {\n            if (enabled === undefined) enabled = true;\n            if (this._enabled === enabled) return;\n            this._enabled = enabled;\n\n            this.opts.element.prop(\"disabled\", !enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        disable: function() {\n            this.enable(false);\n        },\n\n        // abstract\n        readonly: function(enabled) {\n            if (enabled === undefined) enabled = false;\n            if (this._readonly === enabled) return;\n            this._readonly = enabled;\n\n            this.opts.element.prop(\"readonly\", enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        opened: function () {\n            return (this.container) ? this.container.hasClass(\"select2-dropdown-open\") : false;\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var $dropdown = this.dropdown,\n                container = this.container,\n                offset = container.offset(),\n                height = container.outerHeight(false),\n                width = container.outerWidth(false),\n                dropHeight = $dropdown.outerHeight(false),\n                $window = $(window),\n                windowWidth = $window.width(),\n                windowHeight = $window.height(),\n                viewPortRight = $window.scrollLeft() + windowWidth,\n                viewportBottom = $window.scrollTop() + windowHeight,\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(),\n                dropWidth = $dropdown.outerWidth(false),\n                enoughRoomOnRight = function() {\n                    return dropLeft + dropWidth <= viewPortRight;\n                },\n                enoughRoomOnLeft = function() {\n                    return offset.left + viewPortRight + container.outerWidth(false)  > dropWidth;\n                },\n                aboveNow = $dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                changeDirection,\n                css,\n                resultsListNode;\n\n            // always prefer the current above/below alignment, unless there is not enough room\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) {\n                    changeDirection = true;\n                    above = false;\n                }\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) {\n                    changeDirection = true;\n                    above = true;\n                }\n            }\n\n            //if we are changing direction we need to get positions when dropdown is hidden;\n            if (changeDirection) {\n                $dropdown.hide();\n                offset = this.container.offset();\n                height = this.container.outerHeight(false);\n                width = this.container.outerWidth(false);\n                dropHeight = $dropdown.outerHeight(false);\n                viewPortRight = $window.scrollLeft() + windowWidth;\n                viewportBottom = $window.scrollTop() + windowHeight;\n                dropTop = offset.top + height;\n                dropLeft = offset.left;\n                dropWidth = $dropdown.outerWidth(false);\n                $dropdown.show();\n\n                // fix so the cursor does not move to the left within the search-textbox in IE\n                this.focusSearch();\n            }\n\n            if (this.opts.dropdownAutoWidth) {\n                resultsListNode = $('.select2-results', $dropdown)[0];\n                $dropdown.addClass('select2-drop-auto-width');\n                $dropdown.css('width', '');\n                // Add scrollbar width to dropdown if vertical scrollbar is present\n                dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);\n                dropWidth > width ? width = dropWidth : dropWidth = width;\n                dropHeight = $dropdown.outerHeight(false);\n            }\n            else {\n                this.container.removeClass('select2-drop-auto-width');\n            }\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body.scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n            if (this.body.css('position') !== 'static') {\n                bodyOffset = this.body.offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            if (!enoughRoomOnRight() && enoughRoomOnLeft()) {\n                dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;\n            }\n\n            css =  {\n                left: dropLeft,\n                width: width\n            };\n\n            if (above) {\n                this.container.addClass(\"select2-drop-above\");\n                $dropdown.addClass(\"select2-drop-above\");\n                dropHeight = $dropdown.outerHeight(false);\n                css.top = offset.top - dropHeight;\n                css.bottom = 'auto';\n            }\n            else {\n                css.top = dropTop;\n                css.bottom = 'auto';\n                this.container.removeClass(\"select2-drop-above\");\n                $dropdown.removeClass(\"select2-drop-above\");\n            }\n            css = $.extend(css, evaluate(this.opts.dropdownCss, this.opts.element));\n\n            $dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            if (this._enabled === false || this._readonly === true) return false;\n\n            event = $.Event(\"select2-opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            this.opening();\n\n            // Only bind the document mousemove when the dropdown is visible\n            $document.on(\"mousemove.select2Event\", function (e) {\n                lastMousePosition.x = e.pageX;\n                lastMousePosition.y = e.pageY;\n            });\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n            this.clearDropdownAlignmentPreference();\n\n            if(this.dropdown[0] !== this.body.children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body);\n            }\n\n            // create the dropdown mask if doesn't already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length === 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body);\n                mask.on(\"mousedown touchstart click\", function (e) {\n                    // Prevent IE from generating a click event on the body\n                    reinsertElement(mask);\n\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close();\n                        e.preventDefault();\n                        e.stopPropagation();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.show();\n\n            this.positionDropdown();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).on(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    if (that.opened()) that.positionDropdown();\n                });\n            });\n\n\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\").removeClass(\"select2-container-active\");\n            this.results.empty();\n\n            // Now that the dropdown is closed, unbind the global document mousemove event\n            $document.off(\"mousemove.select2Event\");\n\n            this.clearSearch();\n            this.search.removeClass(\"select2-active\");\n\n            // Remove the aria active descendant for highlighted element\n            this.search.removeAttr(\"aria-activedescendant\");\n            this.opts.element.trigger($.Event(\"select2-close\"));\n        },\n\n        /**\n         * Opens control, sets input value, and updates results.\n         */\n        // abstract\n        externalSearch: function (term) {\n            this.open();\n            this.search.val(term);\n            this.updateResults(false);\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        /**\n         * @return {Boolean} Whether or not search value was changed.\n         * @private\n         */\n        prefillNextSearchTerm: function () {\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() !== \"\") {\n                return false;\n            }\n\n            var nextSearchTerm = this.opts.nextSearchTerm(this.data(), this.lastSearchTerm);\n            if(nextSearchTerm !== undefined){\n                this.search.val(nextSearchTerm);\n                this.search.select();\n                return true;\n            }\n\n            return false;\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize, this.opts.element);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more, topOffset;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices().find('.select2-result-label');\n\n            child = $(children[index]);\n\n            topOffset = (child.offset() || {}).top || 0;\n\n            hb = topOffset + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(false);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = topOffset - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            return this.results.find(\".select2-result-selectable:not(.select2-disabled):not(.select2-selected)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.removeHighlight();\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            // ensure assistive technology can determine the active choice\n            this.search.attr(\"aria-activedescendant\", choice.find(\".select2-result-label\").attr(\"id\"));\n\n            this.ensureHighlightVisible();\n\n            this.liveRegion.text(choice.text());\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"select2-highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        removeHighlight: function() {\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n        },\n\n        touchMoved: function() {\n            this._touchMoved = true;\n        },\n\n        clearTouchMoved: function() {\n          this._touchMoved = false;\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n                var choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove all highlights\n                this.removeHighlight();\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n\n                    if (data.more===true) {\n                        more.detach().appendTo(results).html(self.opts.escapeMarkup(evaluate(self.opts.formatLoadMore, self.opts.element, page+1)));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                    this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search,\n                results = this.results,\n                opts = this.opts,\n                data,\n                self = this,\n                input,\n                term = search.val(),\n                lastTerm = $.data(this.container, \"select2-last-term\"),\n                // sequence number used to drop out-of-order responses\n                queryNumber;\n\n            // prevent duplicate queries against the same term\n            if (initial !== true && lastTerm && equal(term, lastTerm)) return;\n\n            $.data(this.container, \"select2-last-term\", term);\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            function postRender() {\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n                if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {\n                    self.liveRegion.text(results.text());\n                }\n                else {\n                    self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable:not(\".select2-selected\")').length));\n                }\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            queryNumber = ++this.queryCount;\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n                    render(\"<li class='select2-selection-limit'>\" + evaluate(opts.formatSelectionTooBig, opts.element, maxSelSize) + \"</li>\");\n                    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooShort, opts.element, search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                if (initial && this.showSearch) this.showSearch(true);\n                return;\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooLong, opts.element, search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            if (opts.formatSearching && this.findHighlightableChoices().length === 0) {\n                render(\"<li class='select2-searching'>\" + evaluate(opts.formatSearching, opts.element) + \"</li>\");\n            }\n\n            search.addClass(\"select2-active\");\n\n            this.removeHighlight();\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore old responses\n                if (queryNumber != this.queryCount) {\n                  return;\n                }\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) {\n                    this.search.removeClass(\"select2-active\");\n                    return;\n                }\n\n                // handle ajax error\n                if(data.hasError !== undefined && checkFormatter(opts.formatAjaxError, \"formatAjaxError\")) {\n                    render(\"<li class='select2-ajax-error'>\" + evaluate(opts.formatAjaxError, opts.element, data.jqXHR, data.textStatus, data.errorThrown) + \"</li>\");\n                    return;\n                }\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(self, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            this.opts.createSearchChoicePosition(data.results, def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatNoMatches, opts.element, search.val()) + \"</li>\");\n                    if(this.showSearch){\n                        this.showSearch(search.val());\n                    }\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + opts.escapeMarkup(evaluate(opts.formatLoadMore, opts.element, this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n\n                this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            if (this._touchMoved) {\n              this.clearTouchMoved();\n              return;\n            }\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            } else if (options && options.noFocus) {\n                this.close();\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            var placeholderOption;\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder ||\n                ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);\n        },\n\n        // abstract\n        getPlaceholderOption: function() {\n            if (this.select) {\n                var firstOption = this.select.children('option').first();\n                if (this.opts.placeholderOption !== undefined ) {\n                    //Determine the placeholder option based on the specified placeholderOption setting\n                    return (this.opts.placeholderOption === \"first\" && firstOption) ||\n                           (typeof this.opts.placeholderOption === \"function\" && this.opts.placeholderOption(this.select));\n                } else if ($.trim(firstOption.text()) === \"\" && firstOption.val() === \"\") {\n                    //No explicit placeholder option specified, use the first if it's blank\n                    return firstOption;\n                }\n            }\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l, attr;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (typeof(style) === \"string\") {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            attr = attrs[i].replace(/\\s/g, '');\n                            matches = attr.match(/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>\",\n                \"   <span class='select2-chosen'>&#160;</span><abbr class='select2-search-choice-close'></abbr>\",\n                \"   <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>\",\n                \"</a>\",\n                \"<label for='' class='select2-offscreen'></label>\",\n                \"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />\",\n                \"<div class='select2-drop select2-display-none'>\",\n                \"   <div class='select2-search'>\",\n                \"       <label for='' class='select2-offscreen'></label>\",\n                \"       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'\",\n                \"       aria-autocomplete='list' />\",\n                \"   </div>\",\n                \"   <ul class='select2-results' role='listbox'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // single\n        opening: function () {\n            var el, range, len;\n\n            if (this.opts.minimumResultsForSearch >= 0) {\n                this.showSearch(true);\n            }\n\n            this.parent.opening.apply(this, arguments);\n\n            if (this.showSearchInput !== false) {\n                // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\n                // all other browsers handle this just fine\n\n                this.search.val(this.focusser.val());\n            }\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n                // move the cursor to the end after focussing, otherwise it will be at the beginning and\n                // new text will appear *before* focusser.val()\n                el = this.search.get(0);\n                if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                } else if (el.setSelectionRange) {\n                    len = this.search.val().length;\n                    el.setSelectionRange(len, len);\n                }\n            }\n\n            this.prefillNextSearchTerm();\n\n            this.focusser.prop(\"disabled\", true).val(\"\");\n            this.updateResults(true);\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // single\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.prop(\"disabled\", false);\n                if (this.opts.shouldFocusInput(this)) {\n                    this.focusser.focus();\n                }\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        destroy: function() {\n            $(\"label[for='\" + this.focusser.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"selection\",\n                \"focusser\"\n            );\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown,\n                idSuffix = nextUid(),\n                elementLabel;\n\n            if (this.opts.minimumResultsForSearch < 0) {\n                this.showSearch(false);\n            } else {\n                this.showSearch(true);\n            }\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            // add aria associations\n            selection.find(\".select2-chosen\").attr(\"id\", \"select2-chosen-\"+idSuffix);\n            this.focusser.attr(\"aria-labelledby\", \"select2-chosen-\"+idSuffix);\n            this.results.attr(\"id\", \"select2-results-\"+idSuffix);\n            this.search.attr(\"aria-owns\", \"select2-results-\"+idSuffix);\n\n            // rewrite labels from original element to focusser\n            this.focusser.attr(\"id\", \"s2id_autogen\"+idSuffix);\n\n            elementLabel = $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\");\n            this.opts.element.on('focus.select2', this.bind(function () { this.focus(); }));\n\n            this.focusser.prev()\n                .text(elementLabel.text())\n                .attr('for', this.focusser.attr('id'));\n\n            // Ensure the original element retains an accessible name\n            var originalTitle = this.opts.element.attr(\"title\");\n            this.opts.element.attr(\"title\", (originalTitle || elementLabel.text()));\n\n            this.focusser.attr(\"tabindex\", this.elementTabIndex);\n\n            // write label for search field using the label from the focusser element\n            this.search.attr(\"id\", this.focusser.attr('id') + '_search');\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.focusser.attr('id') + \"']\").text())\n                .attr('for', this.search.attr('id'));\n\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                // filter 229 keyCodes (input method editor is processing key input)\n                if (229 == e.keyCode) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus: true});\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body.get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        if (this.opened() && this.results && this.results.length > 1) {\n                            this.search.focus();\n                        }\n                    }), 0);\n                }\n            }));\n\n            this.focusser.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n\n                    if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\n\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.on(\"keyup-change input\", this.bind(function(e) {\n                if (this.opts.minimumResultsForSearch >= 0) {\n                    e.stopPropagation();\n                    if (this.opened()) return;\n                    this.open();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", \"abbr\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) {\n                    return;\n                }\n\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n\n                if (this.selection) {\n                    this.selection.focus();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", this.bind(function (e) {\n                // Prevent IE from generating a click event on the body\n                reinsertElement(selection);\n\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.isInterfaceEnabled()) {\n                    this.open();\n                }\n\n                killEvent(e);\n            }));\n\n            dropdown.on(\"mousedown touchstart\", this.bind(function() {\n                if (this.opts.shouldFocusInput(this)) {\n                    this.search.focus();\n                }\n            }));\n\n            selection.on(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            })).on(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                    this.opts.element.trigger($.Event(\"select2-blur\"));\n                }\n            }));\n            this.search.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.hide();\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                var evt = $.Event(\"select2-clearing\");\n                this.opts.element.trigger(evt);\n                if (evt.isDefaultPrevented()) {\n                    return;\n                }\n                var placeholderOption = this.getPlaceholderOption();\n                this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\n                this.selection.find(\".select2-chosen\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.isPlaceholderOptionSelected()) {\n                this.updateSelection(null);\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                        self.lastSearchTerm = self.search.val();\n                    }\n                });\n            }\n        },\n\n        isPlaceholderOptionSelected: function() {\n            var placeholderOption;\n            if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered\n            return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\n                || (this.opts.element.val() === \"\")\n                || (this.opts.element.val() === undefined)\n                || (this.opts.element.val() === null);\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\"option\").filter(function() { return this.selected && !this.disabled });\n                    // a single select box always has a value, no need to null check 'selected'\n                    callback(self.optionToData(selected));\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without a valid placeholder option ignore it\n            if (this.select) {\n                if (this.getPlaceholderOption() === undefined) {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\n\n                // check for a placeholder option if attached to a select\n                if (this.select && this.getPlaceholderOption() === undefined) return;\n\n                this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.container.removeClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                if (initial === true && selected >= 0) {\n                    this.highlight(selected);\n                } else {\n                    this.highlight(0);\n                }\n            }\n\n            // hide the search box if this is the first we got the results and there are enough of them for search\n\n            if (initial === true) {\n                var min = this.opts.minimumResultsForSearch;\n                if (min >= 0) {\n                    this.showSearch(countResults(data.results) >= min);\n                }\n            }\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            if (this.showSearchInput === showSearchInput) return;\n\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\n        },\n\n        // single\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data)) { return; }\n\n            var old = this.opts.element.val(),\n                oldData = this.data();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\n\n            this.lastSearchTerm = this.search.val();\n            this.close();\n\n            if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n\n            if (!equal(old, this.id(data))) {\n                this.triggerChange({ added: data, removed: oldData });\n            }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            if (data !== null) {\n                formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\n            }\n            if (formatted !== undefined) {\n                container.append(formatted);\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, container);\n            if (cssClass !== undefined) {\n                container.addClass(cssClass);\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.container.addClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        val: function () {\n            var val,\n                triggerChange = false,\n                data = null,\n                self = this,\n                oldData = this.data();\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n\n                if (this.opts.debug && console && console.warn) {\n                    console.warn(\n                        'Select2: The second option to `select2(\"val\")` is not supported in Select2 4.0.0. ' +\n                        'The `change` event will always be triggered in 4.0.0.'\n                    );\n                }\n            }\n\n            if (this.select) {\n                if (this.opts.debug && console && console.warn) {\n                    console.warn(\n                        'Select2: Setting the value on a <select> using `select2(\"val\")` is no longer supported in 4.0.0. ' +\n                        'You can use the `.val(newValue).trigger(\"change\")` method provided by jQuery instead.'\n                    );\n                }\n\n                this.select\n                    .val(val)\n                    .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n                        data = self.optionToData(elm);\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange({added: data, removed:oldData});\n                }\n            } else {\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    return;\n                }\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange({added: data, removed:oldData});\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data,\n                triggerChange = false;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (opts.debug && console && console.warn) {\n                    console.warn(\n                        'Select2: The `select2(\"data\")` method can no longer set selected values in 4.0.0, ' +\n                        'consider using the `.val()` method instead.'\n                    );\n                }\n\n                if (arguments.length > 1) {\n                    triggerChange = arguments[1];\n                }\n                if (!value) {\n                    this.clear(triggerChange);\n                } else {\n                    data = this.data();\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                    if (triggerChange) {\n                        this.triggerChange({added: value, removed:data});\n                    }\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"<ul class='select2-choices'>\",\n                \"  <li class='select2-search-field'>\",\n                \"    <label for='' class='select2-offscreen'></label>\",\n                \"    <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>\",\n                \"  </li>\",\n                \"</ul>\",\n                \"<div class='select2-drop select2-drop-multi select2-display-none'>\",\n                \"   <ul class='select2-results'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            // TODO validate placeholder is a string if specified\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\"option\").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {\n                        data.push(self.optionToData(elm));\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator, opts.transformVal);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            // reorder matches based on the order they appear in the ids array because right now\n                            // they are in the order in which they appear in data array\n                            var ordered = [];\n                            for (var i = 0; i < ids.length; i++) {\n                                var id = ids[i];\n                                for (var j = 0; j < matches.length; j++) {\n                                    var match = matches[j];\n                                    if (equal(id, opts.id(match))) {\n                                        ordered.push(match);\n                                        matches.splice(j, 1);\n                                        break;\n                                    }\n                                }\n                            }\n                            callback(ordered);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // multi\n        selectChoice: function (choice) {\n\n            var selected = this.container.find(\".select2-search-choice-focus\");\n            if (selected.length && choice && choice[0] == selected[0]) {\n\n            } else {\n                if (selected.length) {\n                    this.opts.element.trigger(\"choice-deselected\", selected);\n                }\n                selected.removeClass(\"select2-search-choice-focus\");\n                if (choice && choice.length) {\n                    this.close();\n                    choice.addClass(\"select2-search-choice-focus\");\n                    this.opts.element.trigger(\"choice-selected\", choice);\n                }\n            }\n        },\n\n        // multi\n        destroy: function() {\n            $(\"label[for='\" + this.search.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"searchContainer\",\n                \"selection\"\n            );\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            var _this = this;\n            this.selection.on(\"click\", \".select2-container:not(.select2-container-disabled) .select2-search-choice:not(.select2-locked)\", function (e) {\n                _this.search[0].focus();\n                _this.selectChoice($(this));\n            });\n\n            // rewrite labels from original element to focusser\n            this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\").text())\n                .attr('for', this.search.attr('id'));\n            this.opts.element.on('focus.select2', this.bind(function () { this.focus(); }));\n\n            this.search.on(\"input paste\", this.bind(function() {\n                if (this.search.attr('placeholder') && this.search.val().length == 0) return;\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.attr(\"tabindex\", this.elementTabIndex);\n\n            this.keydowns = 0;\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                ++this.keydowns;\n                var selected = selection.find(\".select2-search-choice-focus\");\n                var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\n                var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\n                var pos = getCursorInfo(this.search);\n\n                if (selected.length &&\n                    (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\n                    var selectedChoice = selected;\n                    if (e.which == KEY.LEFT && prev.length) {\n                        selectedChoice = prev;\n                    }\n                    else if (e.which == KEY.RIGHT) {\n                        selectedChoice = next.length ? next : null;\n                    }\n                    else if (e.which === KEY.BACKSPACE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = prev.length ? prev : next;\n                        }\n                    } else if (e.which == KEY.DELETE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = next.length ? next : null;\n                        }\n                    } else if (e.which == KEY.ENTER) {\n                        selectedChoice = null;\n                    }\n\n                    this.selectChoice(selectedChoice);\n                    killEvent(e);\n                    if (!selectedChoice || !selectedChoice.length) {\n                        this.open();\n                    }\n                    return;\n                } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\n                    || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\n\n                    this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\n                    killEvent(e);\n                    return;\n                } else {\n                    this.selectChoice(null);\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus:true});\n                        this.close();\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n\n                if (e.which === KEY.ENTER) {\n                    // prevent form from being submitted\n                    killEvent(e);\n                }\n\n            }));\n\n            this.search.on(\"keyup\", this.bind(function (e) {\n                this.keydowns = 0;\n                this.resizeSearch();\n            })\n            );\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                this.selectChoice(null);\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n                this.opts.element.trigger($.Event(\"select2-blur\"));\n            }));\n\n            this.container.on(\"click\", selector, this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.selectChoice(null);\n                this.clearPlaceholder();\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.on(\"focus\", selector, this.bind(function () {\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.hide();\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.search.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder(),\n                maxWidth = this.getMaxSearchWidth();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.clearPlaceholder(); // should be done before super so placeholder is not used to search\n            this.resizeSearch();\n\n            this.parent.opening.apply(this, arguments);\n\n            this.focusSearch();\n\n            this.prefillNextSearchTerm();\n            this.updateResults(true);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n            }\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = {}, filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (!(self.id(this) in ids)) {\n                    ids[self.id(this)] = 0;\n                    filtered.push(this);\n                }\n            });\n\n            this.selection.find(\".select2-search-choice\").remove();\n            this.addSelectedChoice(filtered);\n            self.postprocessResults();\n        },\n\n        // multi\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data) || data.text === \"\") { return; }\n\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            // keep track of the search's value before it gets cleared\n            this.lastSearchTerm = this.search.val();\n\n            this.clearSearch();\n            this.updateResults();\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    } else {\n                        // initializes search's value with nextSearchTerm and update search result\n                        if (this.prefillNextSearchTerm()) {\n                            this.updateResults();\n                        }\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var val = this.getVal(), self = this;\n            $(data).each(function () {\n                val.push(self.createChoice(this));\n            });\n            this.setVal(val);\n        },\n\n        createChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                formatted,\n                cssClass;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith($(\"<div></div>\").html(formatted));\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\n            if (cssClass != undefined) {\n                choice.addClass(cssClass);\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .on(\"mousedown\", killEvent)\n                  .on(\"click dblclick\", this.bind(function (e) {\n                  if (!this.isInterfaceEnabled()) return;\n\n                  this.unselect($(e.target));\n                  this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                  killEvent(e);\n                  this.close();\n                  this.focusSearch();\n              })).on(\"focus\", this.bind(function () {\n                  if (!this.isInterfaceEnabled()) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            return id;\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            var evt = $.Event(\"select2-removing\");\n            evt.val = this.id(data);\n            evt.choice = data;\n            this.opts.element.trigger(evt);\n\n            if (evt.isDefaultPrevented()) {\n                return false;\n            }\n\n            while((index = indexOf(this.id(data), val)) >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n\n            selected.remove();\n\n            this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n\n            return true;\n        },\n\n        // multi\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesn't have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1 && noHighlightUpdate !== false && this.opts.closeOnSelect === true){\n                self.highlight(0);\n            }\n\n            //If all results are chosen render formatNoMatches\n            if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\n                if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\n                    if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\n                        this.results.append(\"<li class='select2-no-results'>\" + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + \"</li>\");\n                    }\n                }\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n                sideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(Math.floor(searchWidth));\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator, this.opts.transformVal);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                var unique = [], valMap = {};\n                // filter out duplicates\n                $(val).each(function () {\n                    if (!(this in valMap)) {\n                        unique.push(this);\n                        valMap[this] = 0;\n                    }\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        buildChangeDetails: function (old, current) {\n            var current = current.slice(0),\n                old = old.slice(0);\n\n            // remove intersection from each array\n            for (var i = 0; i < current.length; i++) {\n                for (var j = 0; j < old.length; j++) {\n                    if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\n                        current.splice(i, 1);\n                        i--;\n                        old.splice(j, 1);\n                        break;\n                    }\n                }\n            }\n\n            return {added: current, removed: old};\n        },\n\n\n        // multi\n        val: function (val, triggerChange) {\n            var oldData, self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            oldData=this.data();\n            if (!oldData.length) oldData=[];\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange({added: this.data(), removed: oldData});\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(oldData, this.data()));\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$.map(data, self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange(self.buildChangeDetails(oldData, self.data()));\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values, triggerChange) {\n            var self=this, ids, old;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .children(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                old = this.data();\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(old, this.data()));\n                }\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            method, value, multiple,\n            allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\n            valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\n            propertyMethods = [\"val\", \"data\"],\n            methodsMap = { search: \"externalSearch\" };\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.prop(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new window.Select2[\"class\"].multi() : new window.Select2[\"class\"].single();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n\n                method=args[0];\n\n                if (method === \"container\") {\n                    value = select2.container;\n                } else if (method === \"dropdown\") {\n                    value = select2.dropdown;\n                } else {\n                    if (methodsMap[method]) method = methodsMap[method];\n\n                    value = select2[method].apply(select2, args.slice(1));\n                }\n                if (indexOf(args[0], valueMethods) >= 0\n                    || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {\n                    return false; // abort the iteration, ready to return first matched value\n                }\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        debug: false,\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(this.text(result), query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        transformVal: function(val) {\n            return $.trim(val);\n        },\n        formatSelection: function (data, container, escapeMarkup) {\n            return data ? escapeMarkup(this.text(data)) : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return data.css;},\n        formatSelectionCssClass: function(data, container) {return undefined;},\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e == undefined ? null : e.id; },\n        text: function (e) {\n          if (e && this.data && this.data.text) {\n            if ($.isFunction(this.data.text)) {\n              return this.data.text(e);\n            } else {\n              return e[this.data.text];\n            }\n          } else {\n            return e.text;\n          }\n        },\n        matcher: function(term, text) {\n            return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: defaultEscapeMarkup,\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; },\n        nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },\n        searchInputPlaceholder: '',\n        createSearchChoicePosition: 'top',\n        shouldFocusInput: function (instance) {\n            // Attempt to detect touch devices\n            var supportsTouchEvents = (('ontouchstart' in window) ||\n                                       (navigator.msMaxTouchPoints > 0));\n\n            // Only devices which support touch events should be special cased\n            if (!supportsTouchEvents) {\n                return true;\n            }\n\n            // Never focus the input if search is disabled\n            if (instance.opts.minimumResultsForSearch < 0) {\n                return false;\n            }\n\n            return true;\n        }\n    };\n\n    $.fn.select2.locales = [];\n\n    $.fn.select2.locales['en'] = {\n         formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n         formatNoMatches: function () { return \"No matches found\"; },\n         formatAjaxError: function (jqXHR, textStatus, errorThrown) { return \"Loading failed\"; },\n         formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n         formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n         formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n         formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n         formatSearching: function () { return \"Searching…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n\n    $.fn.select2.ajaxDefaults = {\n        transport: $.ajax,\n        params: {\n            type: \"GET\",\n            cache: false,\n            dataType: \"json\"\n        }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch,\n            escapeMarkup: defaultEscapeMarkup,\n            stripDiacritics: stripDiacritics\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ar.js",
    "content": "/**\n * Select2 Arabic translation.\n *\n * Author: Adel KEDJOUR <adel@kedjour.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ar'] = {\n        formatNoMatches: function () { return \"لم يتم العثور على مطابقات\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return \"الرجاء إدخال حرف واحد على الأكثر\"; } return n == 2 ? \"الرجاء إدخال حرفين على الأكثر\" : \"الرجاء إدخال \" + n + \" على الأكثر\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return \"الرجاء إدخال حرف واحد على الأقل\"; } return n == 2 ? \"الرجاء إدخال حرفين على الأقل\" : \"الرجاء إدخال \" + n + \" على الأقل \"; },\n        formatSelectionTooBig: function (limit) { if (limit == 1){ return \"يمكنك أن تختار إختيار واحد فقط\"; } return limit == 2 ? \"يمكنك أن تختار إختيارين فقط\" : \"يمكنك أن تختار \" + limit + \" إختيارات فقط\"; },\n        formatLoadMore: function (pageNumber) { return \"تحميل المزيد من النتائج…\"; },\n        formatSearching: function () { return \"البحث…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ar']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_az.js",
    "content": "/**\n * Select2 Azerbaijani translation.\n *\n * Author: Farhad Safarov <farhad.safarov@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n     $.fn.select2.locales['az'] = {\n        formatMatches: function (matches) { return matches + \" nəticə mövcuddur, hərəkət etdirmək üçün yuxarı və aşağı düymələrindən istifadə edin.\"; },\n        formatNoMatches: function () { return \"Nəticə tapılmadı\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return n + \" simvol daxil edin\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return n + \" simvol silin\"; },\n        formatSelectionTooBig: function (limit) { return \"Sadəcə \" + limit + \" element seçə bilərsiniz\"; },\n        formatLoadMore: function (pageNumber) { return \"Daha çox nəticə yüklənir…\"; },\n        formatSearching: function () { return \"Axtarılır…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['az']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_bg.js",
    "content": "/**\n * Select2 Bulgarian translation.\n * \n * @author  Lubomir Vikev <lubomirvikev@gmail.com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['bg'] = {\n        formatNoMatches: function () { return \"Няма намерени съвпадения\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Моля въведете още \" + n + \" символ\" + (n > 1 ? \"а\" : \"\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Моля въведете с \" + n + \" по-малко символ\" + (n > 1 ? \"а\" : \"\"); },\n        formatSelectionTooBig: function (limit) { return \"Можете да направите до \" + limit + (limit > 1 ? \" избора\" : \" избор\"); },\n        formatLoadMore: function (pageNumber) { return \"Зареждат се още…\"; },\n        formatSearching: function () { return \"Търсене…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['bg']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ca.js",
    "content": "/**\n * Select2 Catalan translation.\n * \n * Author: David Planella <david.planella@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ca'] = {\n        formatNoMatches: function () { return \"No s'ha trobat cap coincidència\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduïu \" + n + \" caràcter\" + (n == 1 ? \"\" : \"s\") + \" més\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Introduïu \" + n + \" caràcter\" + (n == 1? \"\" : \"s\") + \"menys\"; },\n        formatSelectionTooBig: function (limit) { return \"Només podeu seleccionar \" + limit + \" element\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"S'estan carregant més resultats…\"; },\n        formatSearching: function () { return \"S'està cercant…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ca']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_cs.js",
    "content": "/**\n * Select2 Czech translation.\n * \n * Author: Michal Marek <ahoj@michal-marek.cz>\n * Author - sklonovani: David Vallner <david@vallner.net>\n */\n(function ($) {\n    \"use strict\";\n    // use text for the numbers 2 through 4\n    var smallNumbers = {\n        2: function(masc) { return (masc ? \"dva\" : \"dvě\"); },\n        3: function() { return \"tři\"; },\n        4: function() { return \"čtyři\"; }\n    }\n    $.fn.select2.locales['cs'] = {\n        formatNoMatches: function () { return \"Nenalezeny žádné položky\"; },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n == 1) {\n                return \"Prosím zadejte ještě jeden znak\";\n            } else if (n <= 4) {\n                return \"Prosím zadejte ještě další \"+smallNumbers[n](true)+\" znaky\";\n            } else {\n                return \"Prosím zadejte ještě dalších \"+n+\" znaků\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n == 1) {\n                return \"Prosím zadejte o jeden znak méně\";\n            } else if (n <= 4) {\n                return \"Prosím zadejte o \"+smallNumbers[n](true)+\" znaky méně\";\n            } else {\n                return \"Prosím zadejte o \"+n+\" znaků méně\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit == 1) {\n                return \"Můžete zvolit jen jednu položku\";\n            } else if (limit <= 4) {\n                return \"Můžete zvolit maximálně \"+smallNumbers[limit](false)+\" položky\";\n            } else {\n                return \"Můžete zvolit maximálně \"+limit+\" položek\";\n            }\n        },\n        formatLoadMore: function (pageNumber) { return \"Načítají se další výsledky…\"; },\n        formatSearching: function () { return \"Vyhledávání…\"; }\n    };\n\n\t$.extend($.fn.select2.defaults, $.fn.select2.locales['cs']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_da.js",
    "content": "/**\n * Select2 Danish translation.\n *\n * Author: Anders Jenbo <anders@jenbo.dk>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['da'] = {\n        formatNoMatches: function () { return \"Ingen resultater fundet\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Angiv venligst \" + n + \" tegn mere\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Angiv venligst \" + n + \" tegn mindre\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan kun vælge \" + limit + \" emne\" + (limit === 1 ? \"\" : \"r\"); },\n        formatLoadMore: function (pageNumber) { return \"Indlæser flere resultater…\"; },\n        formatSearching: function () { return \"Søger…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['da']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_de.js",
    "content": "/**\n * Select2 German translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['de'] = {\n        formatNoMatches: function () { return \"Keine Übereinstimmungen gefunden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Bitte \" + n + \" Zeichen mehr eingeben\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Bitte \" + n + \" Zeichen weniger eingeben\"; },\n        formatSelectionTooBig: function (limit) { return \"Sie können nur \" + limit + \" Eintr\" + (limit === 1 ? \"ag\" : \"äge\") + \" auswählen\"; },\n        formatLoadMore: function (pageNumber) { return \"Lade mehr Ergebnisse…\"; },\n        formatSearching: function () { return \"Suche…\"; },\n        formatMatches: function (matches) { return matches + \" Ergebnis \" + (matches > 1 ? \"se\" : \"\") + \" verfügbar, zum Navigieren die Hoch-/Runter-Pfeiltasten verwenden.\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['de']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_el.js",
    "content": "/**\n * Select2 Greek translation.\n * \n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['el'] = {\n        formatNoMatches: function () { return \"Δεν βρέθηκαν αποτελέσματα\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Παρακαλούμε εισάγετε \" + n + \" περισσότερο\" + (n > 1 ? \"υς\" : \"\") + \" χαρακτήρ\" + (n > 1 ? \"ες\" : \"α\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Παρακαλούμε διαγράψτε \" + n + \" χαρακτήρ\" + (n > 1 ? \"ες\" : \"α\"); },\n        formatSelectionTooBig: function (limit) { return \"Μπορείτε να επιλέξετε μόνο \" + limit + \" αντικείμεν\" + (limit > 1 ? \"α\" : \"ο\"); },\n        formatLoadMore: function (pageNumber) { return \"Φόρτωση περισσότερων…\"; },\n        formatSearching: function () { return \"Αναζήτηση…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['el']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_en.js.template",
    "content": "/**\n * Select2 <Language> translation.\n *\n * Author: Your Name <your@email>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['en'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n        formatNoMatches: function () { return \"No matches found\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n        formatSearching: function () { return \"Searching…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_es.js",
    "content": "/**\n * Select2 Spanish translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['es'] = {\n    \tformatMatches: function (matches) { if (matches === 1) { return \"Un resultado disponible, presione enter para seleccionarlo.\"; } return matches + \" resultados disponibles, use las teclas de dirección para navegar.\"; },\n        formatNoMatches: function () { return \"No se encontraron resultados\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Por favor, introduzca \" + n + \" car\" + (n == 1? \"ácter\" : \"acteres\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Por favor, elimine \" + n + \" car\" + (n == 1? \"ácter\" : \"acteres\"); },\n        formatSelectionTooBig: function (limit) { return \"Sólo puede seleccionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Cargando más resultados…\"; },\n        formatSearching: function () { return \"Buscando…\"; },\n        formatAjaxError: function() { return \"La carga falló\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['es']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_et.js",
    "content": "/**\n * Select2 Estonian translation.\n *\n * Author: Kuldar Kalvik <kuldar@kalvik.ee>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['et'] = {\n        formatNoMatches: function () { return \"Tulemused puuduvad\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Sisesta \" + n + \" täht\" + (n == 1 ? \"\" : \"e\") + \" rohkem\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Sisesta \" + n + \" täht\" + (n == 1? \"\" : \"e\") + \" vähem\"; },\n        formatSelectionTooBig: function (limit) { return \"Saad vaid \" + limit + \" tulemus\" + (limit == 1 ? \"e\" : \"t\") + \" valida\"; },\n        formatLoadMore: function (pageNumber) { return \"Laen tulemusi..\"; },\n        formatSearching: function () { return \"Otsin..\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['et']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_eu.js",
    "content": "/**\n * Select2 Basque translation.\n *\n * Author: Julen Ruiz Aizpuru <julenx at gmail dot com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['eu'] = {\n        formatNoMatches: function () {\n          return \"Ez da bat datorrenik aurkitu\";\n        },\n        formatInputTooShort: function (input, min) {\n          var n = min - input.length;\n          if (n === 1) {\n            return \"Idatzi karaktere bat gehiago\";\n          } else {\n            return \"Idatzi \" + n + \" karaktere gehiago\";\n          }\n        },\n        formatInputTooLong: function (input, max) {\n          var n = input.length - max;\n          if (n === 1) {\n            return \"Idatzi karaktere bat gutxiago\";\n          } else {\n            return \"Idatzi \" + n + \" karaktere gutxiago\";\n          }\n        },\n        formatSelectionTooBig: function (limit) {\n          if (limit === 1 ) {\n            return \"Elementu bakarra hauta dezakezu\";\n          } else {\n            return limit + \" elementu hauta ditzakezu soilik\";\n          }\n        },\n        formatLoadMore: function (pageNumber) {\n          return \"Emaitza gehiago kargatzen…\";\n        },\n        formatSearching: function () {\n          return \"Bilatzen…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['eu']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_fa.js",
    "content": "/**\n * Select2 Persian translation.\n * \n * Author: Ali Choopan <choopan@arsh.co>\n * Author: Ebrahim Byagowi <ebrahim@gnu.org>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['fa'] = {\n        formatMatches: function (matches) { return matches + \" نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید.\"; },\n        formatNoMatches: function () { return \"نتیجه‌ای یافت نشد.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"لطفاً \" + n + \" نویسه بیشتر وارد نمایید\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"لطفاً \" + n + \" نویسه را حذف کنید.\"; },\n        formatSelectionTooBig: function (limit) { return \"شما فقط می‌توانید \" + limit + \" مورد را انتخاب کنید\"; },\n        formatLoadMore: function (pageNumber) { return \"در حال بارگیری موارد بیشتر…\"; },\n        formatSearching: function () { return \"در حال جستجو…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fa']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_fi.js",
    "content": "/**\n * Select2 Finnish translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['fi'] = {\n        formatNoMatches: function () {\n            return \"Ei tuloksia\";\n        },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            return \"Ole hyvä ja anna \" + n + \" merkkiä lisää\";\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            return \"Ole hyvä ja anna \" + n + \" merkkiä vähemmän\";\n        },\n        formatSelectionTooBig: function (limit) {\n            return \"Voit valita ainoastaan \" + limit + \" kpl\";\n        },\n        formatLoadMore: function (pageNumber) {\n            return \"Ladataan lisää tuloksia…\";\n        },\n        formatSearching: function () {\n            return \"Etsitään…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fi']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_fr.js",
    "content": "/**\n * Select2 French translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['fr'] = {\n        formatMatches: function (matches) { return matches + \" résultats sont disponibles, utilisez les flèches haut et bas pour naviguer.\"; },\n        formatNoMatches: function () { return \"Aucun résultat trouvé\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Saisissez \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" supplémentaire\" + (n == 1? \"\" : \"s\") ; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Supprimez \" + n + \" caractère\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"Vous pouvez seulement sélectionner \" + limit + \" élément\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Chargement de résultats supplémentaires…\"; },\n        formatSearching: function () { return \"Recherche en cours…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fr']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_gl.js",
    "content": "/**\n * Select2 Galician translation\n * \n * Author: Leandro Regueiro <leandro.regueiro@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['gl'] = {\n        formatNoMatches: function () {\n            return \"Non se atoparon resultados\";\n        },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n === 1) {\n                return \"Engada un carácter\";\n            } else {\n                return \"Engada \" + n + \" caracteres\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n === 1) {\n                return \"Elimine un carácter\";\n            } else {\n                return \"Elimine \" + n + \" caracteres\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit === 1 ) {\n                return \"Só pode seleccionar un elemento\";\n            } else {\n                return \"Só pode seleccionar \" + limit + \" elementos\";\n            }\n        },\n        formatLoadMore: function (pageNumber) {\n            return \"Cargando máis resultados…\";\n        },\n        formatSearching: function () {\n            return \"Buscando…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['gl']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_he.js",
    "content": "/**\n* Select2 Hebrew translation.\n*\n* Author: Yakir Sitbon <http://www.yakirs.net/>\n*/\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['he'] = {\n        formatNoMatches: function () { return \"לא נמצאו התאמות\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"נא להזין עוד \" + n + \" תווים נוספים\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"נא להזין פחות \" + n + \" תווים\"; },\n        formatSelectionTooBig: function (limit) { return \"ניתן לבחור \" + limit + \" פריטים\"; },\n        formatLoadMore: function (pageNumber) { return \"טוען תוצאות נוספות…\"; },\n        formatSearching: function () { return \"מחפש…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['he']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_hr.js",
    "content": "/**\n * Select2 Croatian translation.\n *\n * @author  Edi Modrić <edi.modric@gmail.com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['hr'] = {\n        formatNoMatches: function () { return \"Nema rezultata\"; },\n        formatInputTooShort: function (input, min) { return \"Unesite još\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Unesite\" + character(input.length - max) + \" manje\"; },\n        formatSelectionTooBig: function (limit) { return \"Maksimalan broj odabranih stavki je \" + limit; },\n        formatLoadMore: function (pageNumber) { return \"Učitavanje rezultata…\"; },\n        formatSearching: function () { return \"Pretraga…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['hr']);\n\n    function character (n) {\n        return \" \" + n + \" znak\" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? \"a\" : \"\" : \"ova\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_hu.js",
    "content": "/**\n * Select2 Hungarian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['hu'] = {\n        formatNoMatches: function () { return \"Nincs találat.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Túl rövid. Még \" + n + \" karakter hiányzik.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Túl hosszú. \" + n + \" karakterrel több, mint kellene.\"; },\n        formatSelectionTooBig: function (limit) { return \"Csak \" + limit + \" elemet lehet kiválasztani.\"; },\n        formatLoadMore: function (pageNumber) { return \"Töltés…\"; },\n        formatSearching: function () { return \"Keresés…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['hu']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_id.js",
    "content": "/**\n * Select2 Indonesian translation.\n * \n * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com>\n * Author: Salahuddin Hairai <mr.od3n@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['id'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Satu keputusan ditemui, tekan enter untuk memilih.\"; } return matches + \" keputusan ditemui, gunakan kekunci anak panah ke atas dan ke bawah untuk menavigasi.\"; },\n        formatNoMatches: function () { return \"Tidak ada data yang sesuai\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Masukkan \" + n + \" huruf lagi\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Hapuskan \" + n + \" huruf\" ; },\n        formatSelectionTooBig: function (limit) { return \"Anda hanya dapat memilih \" + limit + \" pilihan\"; },\n        formatLoadMore: function (pageNumber) { return \"Mengambil data…\"; },\n        formatSearching: function () { return \"Mencari…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['id']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_is.js",
    "content": "/**\n * Select2 Icelandic translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['is'] = {\n        formatNoMatches: function () { return \"Ekkert fannst\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vinsamlegast skrifið \" + n + \" staf\" + (n > 1 ? \"i\" : \"\") + \" í viðbót\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vinsamlegast styttið texta um \" + n + \" staf\" + (n > 1 ? \"i\" : \"\"); },\n        formatSelectionTooBig: function (limit) { return \"Þú getur aðeins valið \" + limit + \" atriði\"; },\n        formatLoadMore: function (pageNumber) { return \"Sæki fleiri niðurstöður…\"; },\n        formatSearching: function () { return \"Leita…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['is']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_it.js",
    "content": "/**\n * Select2 Italian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['it'] = {\n        formatNoMatches: function () { return \"Nessuna corrispondenza trovata\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Inserisci ancora \" + n + \" caratter\" + (n == 1? \"e\" : \"i\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Inserisci \" + n + \" caratter\" + (n == 1? \"e\" : \"i\") + \" in meno\"; },\n        formatSelectionTooBig: function (limit) { return \"Puoi selezionare solo \" + limit + \" element\" + (limit == 1 ? \"o\" : \"i\"); },\n        formatLoadMore: function (pageNumber) { return \"Caricamento in corso…\"; },\n        formatSearching: function () { return \"Ricerca…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['it']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ja.js",
    "content": "/**\n * Select2 Japanese translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ja'] = {\n        formatNoMatches: function () { return \"該当なし\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"後\" + n + \"文字入れてください\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"検索文字列が\" + n + \"文字長すぎます\"; },\n        formatSelectionTooBig: function (limit) { return \"最多で\" + limit + \"項目までしか選択できません\"; },\n        formatLoadMore: function (pageNumber) { return \"読込中･･･\"; },\n        formatSearching: function () { return \"検索中･･･\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ja']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ka.js",
    "content": "/**\n * Select2 Georgian (Kartuli) translation.\n * \n * Author: Dimitri Kurashvili dimakura@gmail.com\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ka'] = {\n        formatNoMatches: function () { return \"ვერ მოიძებნა\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"გთხოვთ შეიყვანოთ კიდევ \" + n + \" სიმბოლო\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"გთხოვთ წაშალოთ \" + n + \" სიმბოლო\"; },\n        formatSelectionTooBig: function (limit) { return \"თქვენ შეგიძლიათ მხოლოდ \" + limit + \" ჩანაწერის მონიშვნა\"; },\n        formatLoadMore: function (pageNumber) { return \"შედეგის ჩატვირთვა…\"; },\n        formatSearching: function () { return \"ძებნა…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ka']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ko.js",
    "content": "/**\n * Select2 Korean translation.\n * \n * @author  Swen Mun <longfinfunnel@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ko'] = {\n        formatNoMatches: function () { return \"결과 없음\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"너무 짧습니다. \"+n+\"글자 더 입력해주세요.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"너무 깁니다. \"+n+\"글자 지워주세요.\"; },\n        formatSelectionTooBig: function (limit) { return \"최대 \"+limit+\"개까지만 선택하실 수 있습니다.\"; },\n        formatLoadMore: function (pageNumber) { return \"불러오는 중…\"; },\n        formatSearching: function () { return \"검색 중…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ko']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_lt.js",
    "content": "/**\n * Select2 Lithuanian translation.\n * \n * @author  CRONUS Karmalakas <cronus dot karmalakas at gmail dot com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['lt'] = {\n        formatNoMatches: function () { return \"Atitikmenų nerasta\"; },\n        formatInputTooShort: function (input, min) { return \"Įrašykite dar\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Pašalinkite\" + character(input.length - max); },\n        formatSelectionTooBig: function (limit) {\n        \treturn \"Jūs galite pasirinkti tik \" + limit + \" element\" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? \"ų\" : limit%10 > 1 ? \"us\" : \"ą\");\n        },\n        formatLoadMore: function (pageNumber) { return \"Kraunama daugiau rezultatų…\"; },\n        formatSearching: function () { return \"Ieškoma…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['lt']);\n\n    function character (n) {\n        return \" \" + n + \" simbol\" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? \"ių\" : n%10 > 1 ? \"ius\" : \"į\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_lv.js",
    "content": "/**\n * Select2 Latvian translation.\n *\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['lv'] = {\n        formatNoMatches: function () { return \"Sakritību nav\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Lūdzu ievadiet vēl \" + n + \" simbol\" + (n == 11 ? \"us\" : n%10 == 1 ? \"u\" : \"us\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Lūdzu ievadiet par \" + n + \" simbol\" + (n == 11 ? \"iem\" : n%10 == 1 ? \"u\" : \"iem\") + \" mazāk\"; },\n        formatSelectionTooBig: function (limit) { return \"Jūs varat izvēlēties ne vairāk kā \" + limit + \" element\" + (limit == 11 ? \"us\" : limit%10 == 1 ? \"u\" : \"us\"); },\n        formatLoadMore: function (pageNumber) { return \"Datu ielāde…\"; },\n        formatSearching: function () { return \"Meklēšana…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['lv']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_mk.js",
    "content": "/**\n * Select2 Macedonian translation.\n * \n * Author: Marko Aleksic <psybaron@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['mk'] = {\n        formatNoMatches: function () { return \"Нема пронајдено совпаѓања\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Ве молиме внесете уште \" + n + \" карактер\" + (n == 1 ? \"\" : \"и\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Ве молиме внесете \" + n + \" помалку карактер\" + (n == 1? \"\" : \"и\"); },\n        formatSelectionTooBig: function (limit) { return \"Можете да изберете само \" + limit + \" ставк\" + (limit == 1 ? \"а\" : \"и\"); },\n        formatLoadMore: function (pageNumber) { return \"Вчитување резултати…\"; },\n        formatSearching: function () { return \"Пребарување…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['mk']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ms.js",
    "content": "/**\n * Select2 Malay translation.\n * \n * Author: Kepoweran <kepoweran@gmail.com>\n * Author: Salahuddin Hairai <mr.od3n@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ms'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Satu keputusan ditemui, tekan enter untuk memilih.\"; } return matches + \" keputusan ditemui, gunakan kekunci anak panah ke atas dan ke bawah untuk menavigasi.\"; },\n        formatNoMatches: function () { return \"Tiada padanan yang ditemui\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Sila masukkan \" + n + \" aksara lagi\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Sila hapuskan \" + n + \" aksara\"; },\n        formatSelectionTooBig: function (limit) { return \"Anda hanya boleh memilih \" + limit + \" pilihan\"; },\n        formatLoadMore: function (pageNumber) { return \"Sedang memuatkan keputusan…\"; },\n        formatSearching: function () { return \"Mencari…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ms']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_nb.js",
    "content": "/**\n * Select2 Norwegian Bokmål translation.\n *\n * Author: Torgeir Veimo <torgeir.veimo@gmail.com>\n * Author: Bjørn Johansen <post@bjornjohansen.no>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['nb'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Ett resultat er tilgjengelig, trykk enter for å velge det.\"; } return matches + \" resultater er tilgjengelig. Bruk piltastene opp og ned for å navigere.\"; },\n        formatNoMatches: function () { return \"Ingen treff\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vennligst skriv inn \" + n + (n>1 ? \" flere tegn\" : \" tegn til\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vennligst fjern \" + n + \" tegn\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan velge maks \" + limit + \" elementer\"; },\n        formatLoadMore: function (pageNumber) { return \"Laster flere resultater …\"; },\n        formatSearching: function () { return \"Søker …\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['no']);\n})(jQuery);\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_nl.js",
    "content": "/**\n * Select2 Dutch translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['nl'] = {\n        formatNoMatches: function () { return \"Geen resultaten gevonden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vul nog \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" in\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Haal \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" weg\"; },\n        formatSelectionTooBig: function (limit) { return \"Maximaal \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\") + \" toegestaan\"; },\n        formatLoadMore: function (pageNumber) { return \"Meer resultaten laden…\"; },\n        formatSearching: function () { return \"Zoeken…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['nl']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_pl.js",
    "content": "/**\n * Select2 Polish translation.\n *\n * @author  Jan Kondratowicz <jan@kondratowicz.pl>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n * @author  Michał Połtyn <mike@poltyn.com>\n * @author  Damian Zajkowski <damian.zajkowski@gmail.com>\n */\n(function($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pl'] = {\n        formatNoMatches: function() {\n            return \"Brak wyników\";\n        },\n        formatInputTooShort: function(input, min) {\n            return \"Wpisz co najmniej\" + character(min - input.length, \"znak\", \"i\");\n        },\n        formatInputTooLong: function(input, max) {\n            return \"Wpisana fraza jest za długa o\" + character(input.length - max, \"znak\", \"i\");\n        },\n        formatSelectionTooBig: function(limit) {\n            return \"Możesz zaznaczyć najwyżej\" + character(limit, \"element\", \"y\");\n        },\n        formatLoadMore: function(pageNumber) {\n            return \"Ładowanie wyników…\";\n        },\n        formatSearching: function() {\n            return \"Szukanie…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pl']);\n\n    function character(n, word, pluralSuffix) {\n        //Liczba pojedyncza - brak suffiksu\n        //jeden znak\n        //jeden element\n        var suffix = '';\n        if (n > 1 && n < 5) {\n            //Liczaba mnoga ilość od 2 do 4 - własny suffiks\n            //Dwa znaki, trzy znaki, cztery znaki.\n            //Dwa elementy, trzy elementy, cztery elementy\n            suffix = pluralSuffix;\n        } else if (n == 0 || n >= 5) {\n            //Ilość 0 suffiks ów\n            //Liczaba mnoga w ilości 5 i więcej - suffiks ów (nie poprawny dla wszystkich wyrazów, np. 100 wiadomości)\n            //Zero znaków, Pięć znaków, sześć znaków, siedem znaków, osiem znaków.\n            //Zero elementów Pięć elementów, sześć elementów, siedem elementów, osiem elementów.\n            suffix = 'ów';\n        }\n        return \" \" + n + \" \" + word + suffix;\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_pt-BR.js",
    "content": "/**\n * Select2 Brazilian Portuguese translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pt-BR'] = {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatAjaxError: function () { return \"Erro na busca\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Digite \" + (min == 1 ? \"\" : \"mais\") + \" \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Carregando mais resultados…\"; },\n        formatSearching: function () { return \"Buscando…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-BR']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_pt-PT.js",
    "content": "/**\n * Select2 Portuguese (Portugal) translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pt-PT'] = {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduza \" + n + \" car\" + (n == 1 ? \"ácter\" : \"acteres\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" car\" + (n == 1 ? \"ácter\" : \"acteres\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"A carregar mais resultados…\"; },\n        formatSearching: function () { return \"A pesquisar…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-PT']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ro.js",
    "content": "/**\n * Select2 Romanian translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ro'] = {\n        formatNoMatches: function () { return \"Nu a fost găsit nimic\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vă rugăm să introduceți incă \" + n + \" caracter\" + (n == 1 ? \"\" : \"e\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vă rugăm să introduceți mai puțin de \" + n + \" caracter\" + (n == 1? \"\" : \"e\"); },\n        formatSelectionTooBig: function (limit) { return \"Aveți voie să selectați cel mult \" + limit + \" element\" + (limit == 1 ? \"\" : \"e\"); },\n        formatLoadMore: function (pageNumber) { return \"Se încarcă…\"; },\n        formatSearching: function () { return \"Căutare…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ro']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_rs.js",
    "content": "/**\n * Select2 Serbian translation.\n *\n * @author  Limon Monte <limon.monte@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['rs'] = {\n        formatNoMatches: function () { return \"Ništa nije pronađeno\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Ukucajte bar još \" + n + \" simbol\" + (n % 10 == 1 && n % 100 != 11 ? \"\" : \"a\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Obrišite \" + n + \" simbol\" + (n % 10 == 1 && n % 100 != 11\t ? \"\" : \"a\"); },\n        formatSelectionTooBig: function (limit) { return \"Možete izabrati samo \" + limit + \" stavk\" + (limit % 10 == 1 && limit % 100 != 11\t ? \"u\" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? \"e\" : \"i\")); },\n        formatLoadMore: function (pageNumber) { return \"Preuzimanje još rezultata…\"; },\n        formatSearching: function () { return \"Pretraga…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['rs']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ru.js",
    "content": "/**\n * Select2 Russian translation.\n *\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ru'] = {\n        formatNoMatches: function () { return \"Совпадений не найдено\"; },\n        formatInputTooShort: function (input, min) { return \"Пожалуйста, введите еще хотя бы\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Пожалуйста, введите на\" + character(input.length - max) + \" меньше\"; },\n        formatSelectionTooBig: function (limit) { return \"Вы можете выбрать не более \" + limit + \" элемент\" + (limit%10 == 1 && limit%100 != 11 ? \"а\" : \"ов\"); },\n        formatLoadMore: function (pageNumber) { return \"Загрузка данных…\"; },\n        formatSearching: function () { return \"Поиск…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ru']);\n\n    function character (n) {\n        return \" \" + n + \" символ\" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? \"a\" : \"\" : \"ов\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_sk.js",
    "content": "/**\n * Select2 Slovak translation.\n *\n * Author: David Vallner <david@vallner.net>\n */\n(function ($) {\n    \"use strict\";\n    // use text for the numbers 2 through 4\n    var smallNumbers = {\n        2: function(masc) { return (masc ? \"dva\" : \"dve\"); },\n        3: function() { return \"tri\"; },\n        4: function() { return \"štyri\"; }\n    };\n    $.fn.select2.locales['sk'] = {\n        formatNoMatches: function () { return \"Nenašli sa žiadne položky\"; },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n == 1) {\n                return \"Prosím, zadajte ešte jeden znak\";\n            } else if (n <= 4) {\n                return \"Prosím, zadajte ešte ďalšie \"+smallNumbers[n](true)+\" znaky\";\n            } else {\n                return \"Prosím, zadajte ešte ďalších \"+n+\" znakov\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n == 1) {\n                return \"Prosím, zadajte o jeden znak menej\";\n            } else if (n >= 2 && n <= 4) {\n                return \"Prosím, zadajte o \"+smallNumbers[n](true)+\" znaky menej\";\n            } else {\n                return \"Prosím, zadajte o \"+n+\" znakov menej\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit == 1) {\n                return \"Môžete zvoliť len jednu položku\";\n            } else if (limit >= 2 && limit <= 4) {\n                return \"Môžete zvoliť najviac \"+smallNumbers[limit](false)+\" položky\";\n            } else {\n                return \"Môžete zvoliť najviac \"+limit+\" položiek\";\n            }\n        },\n        formatLoadMore: function (pageNumber) { return \"Načítavajú sa ďalšie výsledky…\"; },\n        formatSearching: function () { return \"Vyhľadávanie…\"; }\n    };\n\n\t$.extend($.fn.select2.defaults, $.fn.select2.locales['sk']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_sv.js",
    "content": "/**\n * Select2 Swedish translation.\n *\n * Author: Jens Rantil <jens.rantil@telavox.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['sv'] = {\n        formatNoMatches: function () { return \"Inga träffar\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Var god skriv in \" + n + (n>1 ? \" till tecken\" : \" tecken till\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Var god sudda ut \" + n + \" tecken\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan max välja \" + limit + \" element\"; },\n        formatLoadMore: function (pageNumber) { return \"Laddar fler resultat…\"; },\n        formatSearching: function () { return \"Söker…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['sv']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_th.js",
    "content": "/**\n * Select2 Thai translation.\n *\n * Author: Atsawin Chaowanakritsanakul <joke@nakhon.net>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['th'] = {\n        formatNoMatches: function () { return \"ไม่พบข้อมูล\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"โปรดพิมพ์เพิ่มอีก \" + n + \" ตัวอักษร\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"โปรดลบออก \" + n + \" ตัวอักษร\"; },\n        formatSelectionTooBig: function (limit) { return \"คุณสามารถเลือกได้ไม่เกิน \" + limit + \" รายการ\"; },\n        formatLoadMore: function (pageNumber) { return \"กำลังค้นข้อมูลเพิ่ม…\"; },\n        formatSearching: function () { return \"กำลังค้นข้อมูล…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['th']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_tr.js",
    "content": "/**\n * Select2 Turkish translation.\n * \n * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['tr'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Sadece bir sonuç bulundu, seçmek için enter tuşuna basabilirsiniz.\"; } return matches + \" sonuç bulundu, yukarı ve aşağı tuşları ile seçebilirsiniz.\"; },\n        formatNoMatches: function () { return \"Sonuç bulunamadı\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"En az \" + n + \" karakter daha girmelisiniz\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return n + \" karakter azaltmalısınız\"; },\n        formatSelectionTooBig: function (limit) { return \"Sadece \" + limit + \" seçim yapabilirsiniz\"; },\n        formatLoadMore: function (pageNumber) { return \"Daha fazla…\"; },\n        formatSearching: function () { return \"Aranıyor…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['tr']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_ug-CN.js",
    "content": "/**\n * Select2 Uyghur translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['ug-CN'] = {\n        formatNoMatches: function () { return \"ماس كېلىدىغان ئۇچۇر تېپىلمىدى\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"يەنە \" + n + \" ھەرپ كىرگۈزۈڭ\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"\" + n + \"ھەرپ ئۆچۈرۈڭ\";},\n        formatSelectionTooBig: function (limit) { return \"ئەڭ كۆپ بولغاندا\" + limit + \" تال ئۇچۇر تاللىيالايسىز\"; },\n        formatLoadMore: function (pageNumber) { return \"ئۇچۇرلار ئوقۇلىۋاتىدۇ…\"; },\n        formatSearching: function () { return \"ئىزدەۋاتىدۇ…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ug-CN']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_uk.js",
    "content": "/**\n * Select2 Ukrainian translation.\n * \n * @author  bigmihail <bigmihail@bigmir.net>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['uk'] = {\n        formatMatches: function (matches) { return character(matches, \"результат\") + \" знайдено, використовуйте клавіші зі стрілками вверх та вниз для навігації.\"; },\n        formatNoMatches: function () { return \"Нічого не знайдено\"; },\n        formatInputTooShort: function (input, min) { return \"Введіть буль ласка ще \" + character(min - input.length, \"символ\"); },\n        formatInputTooLong: function (input, max) { return \"Введіть буль ласка на \" + character(input.length - max, \"символ\") + \" менше\"; },\n        formatSelectionTooBig: function (limit) { return \"Ви можете вибрати лише \" + character(limit, \"елемент\"); },\n        formatLoadMore: function (pageNumber) { return \"Завантаження даних…\"; },\n        formatSearching: function () { return \"Пошук…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['uk']);\n\n    function character (n, word) {\n        return n + \" \" + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? \"и\" : \"\" : \"ів\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_vi.js",
    "content": "/**\n * Select2 Vietnamese translation.\n * \n * Author: Long Nguyen <olragon@gmail.com>, Nguyen Chien Cong\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['vi'] = {\n        formatNoMatches: function () { return \"Không tìm thấy kết quả\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vui lòng nhập nhiều hơn \" + n + \" ký tự\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vui lòng nhập ít hơn \" + n + \" ký tự\"; },\n        formatSelectionTooBig: function (limit) { return \"Chỉ có thể chọn được \" + limit + \" lựa chọn\"; },\n        formatLoadMore: function (pageNumber) { return \"Đang lấy thêm kết quả…\"; },\n        formatSearching: function () { return \"Đang tìm…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['vi']);\n})(jQuery);\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_zh-CN.js",
    "content": "/**\n * Select2 Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['zh-CN'] = {\n        formatNoMatches: function () { return \"没有找到匹配项\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"请再输入\" + n + \"个字符\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"请删掉\" + n + \"个字符\";},\n        formatSelectionTooBig: function (limit) { return \"你只能选择最多\" + limit + \"项\"; },\n        formatLoadMore: function (pageNumber) { return \"加载结果中…\"; },\n        formatSearching: function () { return \"搜索中…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-CN']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/assets/select2-3.5.3/select2_locale_zh-TW.js",
    "content": "/**\n * Select2 Traditional Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['zh-TW'] = {\n        formatNoMatches: function () { return \"沒有找到相符的項目\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"請再輸入\" + n + \"個字元\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"請刪掉\" + n + \"個字元\";},\n        formatSelectionTooBig: function (limit) { return \"你只能選擇最多\" + limit + \"項\"; },\n        formatLoadMore: function (pageNumber) { return \"載入中…\"; },\n        formatSearching: function () { return \"搜尋中…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-TW']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/base.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nhtml {\n\t-ms-text-size-adjust:100%;\n\t-webkit-text-size-adjust:100%;\n\toverflow-y: scroll;\n}\n\n\n/*webkit滚动条样式*/\n::-webkit-scrollbar-track-piece{background-color:#f5f5f5;border-left:1px solid #d2d2d2}\n::-webkit-scrollbar{width:13px;height:13px}\n::-webkit-scrollbar-thumb{background-color:#c2c2c2;background-clip:padding-box;border:1px solid #979797;min-height:28px}\n::-webkit-scrollbar-thumb:hover{border:1px solid #636363;background-color:#929292}\n\nbody {\n\t-webkit-font-smoothing:antialiased;\n\tline-height:1.6\n}\ninput,textarea,button,a {\n\toutline:0\n}\nbody,h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,fieldset,textarea {\n\tmargin:0\n}\nfieldset,legend,textarea,input {\n\tpadding:0\n}\nul,ol {\n\tpadding-left:0;\n\tlist-style-type:none\n}\na img,fieldset {\n\tborder:0\n}\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary {\n\tdisplay:block\n}\naudio,canvas,video {\n\tdisplay:inline-block\n}\naudio:not([controls]) {\n\tdisplay:none;\n\theight:0\n}\n[hidden] {\n\tdisplay:none\n}\nsvg:not(:root) {\n\toverflow:hidden\n}\nfigure {\n\tmargin:0\n}\nbutton,input,select,textarea {\n\tfont-family:inherit;\n\tfont-size:100%;\n\tmargin:0\n}\nbutton,select {\n\ttext-transform:none\n}\nbutton,html input[type=\"button\"],input[type=\"reset\"],input[type=\"submit\"] {\n\tcursor:pointer;\n\t-webkit-appearance:button\n}\nbutton[disabled],html input[disabled] {\n\tcursor:default\n}\ninput[type=\"checkbox\"],input[type=\"radio\"] {\n\tbox-sizing:border-box;\n\tpadding:0\n}\ninput[type=\"search\"] {\n\tbox-sizing:content-box;\n\t-moz-box-sizing:content-box;\n\t-webkit-appearance:textfield;\n\t-webkit-box-sizing:content-box\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration {\n\t-webkit-appearance:none\n}\n\nbutton::-moz-focus-inner,input::-moz-focus-inner {\n\tborder:0;\n\tpadding:0\n}\ntextarea {\n\toverflow:auto;\n\tvertical-align:top;\n\tresize:none\n}\ninput:-webkit-autofill,textarea:-webkit-autofill,select:-webkit-autofill {\n\tbox-shadow:inset 0 0 0 1000px #fff;\n\t-moz-box-shadow:inset 0 0 0 1000px #fff;\n\t-webkit-box-shadow:inset 0 0 0 1000px #fff\n}\nselect {\n\tborder-radius:0;\n\t-webkit-border-radius:0\n}\nbody {\n\tline-height:1.6;\n\tfont-family:\"Helvetica Neue\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",\"黑体\",\"\\xe8\\x93\\x9d\\xe9\\xb2\\xb8\\xe6\\x99\\xba\\xe8\\x90\\xa5\",Arial,sans-serif;\n\tcolor:#222;\n\tfont-size:14px\n}\ntextarea,input {\n\tcolor:#222\n}\ntextarea::-webkit-input-placeholder,input::-webkit-input-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea:-moz-placeholder,input:-moz-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea::-moz-placeholder,input::-moz-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea:-ms-input-placeholder,input:-ms-input-placeholder {\n\tcolor:#a3a3a3\n}\ntextarea {\n\tresize:none;\n\toverflow-y:auto\n}\na {\n\tcolor:#459ae9;\n\ttext-decoration:none\n}\na:hover {\n\ttext-decoration:underline\n}\nbutton,input,select,textarea {\n\t*font-family:\"Helvetica Neue\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",\"黑体\",Arial,sans-serif\n}\n.page_pay_qrcode .main_bd {\n\tpadding:50px 80px\n}\n.page_appmsg_edit .main_bd {\n\tpadding:50px 30px 0\n}\n.page_tpl_edit .main_bd {\n\tpadding:50px\n}\n.page_media_list .main_bd {\n\tpadding:20px 0 40px 0\n}\n.page_mass_list .main_bd {\n\tpadding-bottom:40px\n}\n.container_box {\n\tmin-height:650px\n}\n.container_box.float_layout {\n\toverflow:hidden;\n\t*zoom:1\n}\n.container_box.float_layout .col_side {\n\twidth:208px;\n\tpadding-bottom:9999em;\n\tmargin-bottom:-9999em\n}\n.container_box.float_layout .col_main {\n\toverflow:hidden;\n\t*zoom:1\n}\n.container_box.float_layout.side_l .col_side {\n\tfloat:left\n}\n.container_box.float_layout.side_r .col_side {\n\tfloat:right\n}\n.container_box.cell_layout {\n\t*overflow:hidden\n}\n.container_box.cell_layout .col_side,.container_box.cell_layout .col_main {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.container_box.cell_layout .col_side {\n\twidth:208px;\n\tmax-width:208px\n}\n.container_box.cell_layout .col_main {\n\twidth:990px;\n\theight:650px\n}\n.container_box.cell_layout .col_side {\n\t*float:left;\n\t*width:208px;\n\t*padding-bottom:9999em;\n\t*margin-bottom:-9999em\n}\n.container_box.cell_layout .col_main {\n\t*zoom:1;\n\t*width:auto;\n\t*height:auto\n}\n.container_box.cell_layout.side_r .col_side {\n\t*float:right\n}\n.col_ext {\n\twidth:20%\n}\n.container_hd,.main_hd {\n\tline-height:40px\n}\n.container_hd .info,.main_hd .info {\n\tmargin-top:-40px;\n\ttext-align:right\n}\n.container_hd h2,.main_hd h2 {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.container_hd .extra_info,.main_hd .extra_info {\n\tmargin-top:-40px;\n\ttext-align:right\n}\n.ft.links {\n\tfont-size:12px;\n}\n.ft .links_item {\n\tborder-left-color:#f1f1f1\n}\n.ft .links_item a {\n\tcolor:#fff;\n}\n\n.ft a {\n\tcolor:#fff;\n}\n\n.foot {\n\tpadding:24px 0;\n\tcolor:#fff;\n\ttext-align:center;\n\tbackground-color:#999\n}\n.copyright {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1\n}\n.page {\n\twidth:100%;\n\tmargin-left:auto;\n\tmargin-right:auto\n}\n.body {\n\twidth:1200px;\n\tmargin-left:auto;\n\tmargin-right:auto;\n\tpadding:36px 0 88px\n}\n.container_box {\n\tborder:1px solid #d9dadc;\n\tbackground-color:#fff\n}\n.container_box.simple {\n\toverflow:hidden;\n\tbackground-color:#fff\n}\n.container_hd h2,.main_hd h2 {\n\tfont-size:16px;\n\tpadding:0 30px;\n\tline-height:75px\n}\n.container_hd .extra_info,.main_hd .extra_info {\n\tline-height:43px;\n\tmargin-top:-43px;\n\tpadding-right:30px\n}\n.container_hd .extra_info.align_title,.main_hd .extra_info.align_title {\n\tmargin-top:-75px;\n\tline-height:75px\n}\n.container_hd .extra_info.align_nav,.main_hd .extra_info.align_nav {\n\tmargin-top:-80px;\n\tline-height:80px\n}\n.container_hd .title_tab,.main_hd .title_tab {\n\tmargin-top:-14px\n}\n.page_news .container_hd h2,.page_simple .container_hd h2,.page_news .main_hd h2,.page_simple .main_hd h2 {\n\tline-height:52px;\n\tbackground-color:#f4f5f9\n}\n.page_news .container_hd .extra_info.align_title,.page_simple .container_hd .extra_info.align_title,.page_news .main_hd .extra_info.align_title,.page_simple .main_hd .extra_info.align_title {\n\tmargin-top:-52px;\n\tline-height:52px\n}\n.container_bd,.main_bd {\n\tpadding-bottom:30px\n}\n.inner_container_box {\n\t*zoom:1;\n\t*overflow:hidden;\n\tbackground-color:#fff;\n\tborder:1px solid #e7e7eb\n}\n.inner_container_box:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.inner_container_box .bd {\n\tmin-height:530px\n}\n.inner_container_box.split {\n\tborder-width:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.inner_container_box.split .bd {\n\tborder:1px solid #d9dadc;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px\n}\n.inner_container_box.cell_layout {\n\t*position:relative\n}\n.inner_container_box.cell_layout .inner_side,.inner_container_box.cell_layout .inner_main {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.inner_container_box.cell_layout .inner_side {\n\twidth:27%;\n\tmax-width:240px\n}\n.inner_container_box.cell_layout .inner_main {\n\twidth:2000px\n}\n.inner_container_box.cell_layout .inner_main {\n\t*zoom:1;\n\t*width:auto\n}\n.inner_container_box.cell_layout .inner_side {\n\t*position:absolute;\n\t*top:0;\n\t*width:240px\n}\n.inner_container_box.cell_layout.side_r .inner_side {\n\t*right:0\n}\n.inner_container_box.cell_layout.side_r .inner_main {\n\t*margin-right:240px\n}\n.inner_container_box.cell_layout.side_l .inner_side {\n\t*left:0\n}\n.inner_container_box.cell_layout.side_l .inner_main {\n\t*margin-left:240px\n}\n.col_side {\n\tbackground-color:#fff\n}\n.col_side,.inner_side {\n\t*padding-bottom:9999em;\n\t*margin-bottom:-9999em;\n\tmin-height:1px\n}\n.col_side_primary {\n\twidth:208px\n}\n.col_main_primary {\n\toverflow:hidden;\n\t*zoom:1\n}\n.side_l .col_side {\n\t*float:left;\n\tborder-right:1px solid #e7e7eb\n}\n.side_l .col_side_primary {\n\tfloat:left;\n\tborder-right:1px solid #e7e7eb;\n\tmargin-right:-1px\n}\n.side_l .col_main_primary {\n\tborder-left:1px solid #e7e7eb\n}\n.side_l.inner_container_box .inner_side {\n\tborder-right:1px solid #e7e7eb\n}\n.side_r .col_side {\n\t*float:right;\n\tborder-left:1px solid #e7e7eb\n}\n.side_r .col_side_primary {\n\tfloat:right;\n\tborder-left:1px solid #e7e7eb;\n\tmargin-left:-1px\n}\n.side_r .col_main_primary {\n\tborder-right:1px solid #e7e7eb\n}\n.side_r.inner_container_box .inner_side {\n\tborder-left:1px solid #e7e7eb\n}\n.grid_line {\n\t*zoom:1\n}\n.grid_line:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.grid_item {\n\tfloat:left\n}\n.grid_item.no_extra {\n\tfloat:none;\n\twidth:auto;\n\toverflow:hidden;\n\t*zoom:1;\n\t*overflow:visible\n}\n.grid_item.no_extra_flex {\n\tfloat:none;\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tfloat:none;\n\twidth:auto;\n\t*display:block;\n\t*zoom:1\n}\n.grid_item.no_extra_flex:after {\n\tcontent:\" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \";\n\tvisibility:hidden;\n\tclear:both;\n\theight:0!important;\n\tdisplay:block;\n\tline-height:0\n}\n.size1of1 {\n\twidth:100%\n}\n.size1of2 {\n\twidth:50%\n}\n.size1of3 {\n\twidth:33.33%\n}\n.size1of4 {\n\twidth:25%\n}\n.size1of5 {\n\twidth:20%\n}\n.size1of6 {\n\twidth:16.66%\n}\n.size1of7 {\n\twidth:14.28%\n}\n.size1of8 {\n\twidth:12.5%\n}\n.icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 0 no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tmargin-top:-0.2em;\n\t*margin-top:0\n}\n.icon_radio.selected,.selected .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -26px no-repeat\n}\n.icon_radio.selected.disabled,.selected.disabled .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -52px no-repeat\n}\n.icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -78px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tmargin-top:-0.2em;\n\t*margin-top:0\n}\n.icon_checkbox.selected,.selected .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -104px no-repeat\n}\n.icon_checkbox.disabled,.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -130px no-repeat\n}\n.icon_checkbox.selected.disabled,.selected.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -156px no-repeat\n}\n.frm_tab {\n\toverflow:hidden;\n\t*zoom:1\n}\n.frm_tab_navs {\n\t*zoom:1\n}\n.frm_tab_navs:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\t62r:both\n}\n.frm_tab_nav {\n\tfloat:left;\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\twidth:auto;\n\tpadding-left:36px;\n\tpadding-right:36px;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tmargin-right:-1px\n}\n.frm_tab_nav button {\n\tcolor:#222\n}\n.frm_tab_nav:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.frm_tab_nav:hover button {\n\tcolor:#222\n}\n.frm_tab_nav:hover {\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.frm_tab_nav.selected {\n\tbackground:0;\n\tbackground-color:#888;\n\tborder-color:#e7e7eb;\n\tbox-shadow:inset 0 3px 8px #555;\n\t-moz-box-shadow:inset 0 3px 8px #555;\n\t-webkit-box-shadow:inset 0 3px 8px #555;\n\tcolor:#fff\n}\n.frm_tab_panel {\n\tpadding:10px 0\n}\n.frm_tab_split {\n\tposition:relative;\n\tmargin-top:20px;\n\tborder-bottom:1px solid #e7e7eb;\n\tbox-shadow:0 1px 0 0 #fff;\n\t-moz-box-shadow:0 1px 0 0 #fff;\n\t-webkit-box-shadow:0 1px 0 0 #fff\n}\n.frm_tab_split .arrow_stop {\n\tposition:relative\n}\n.frm_tab_split .arrow {\n\tposition:absolute;\n\tleft:0;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:12px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-top-width:0;\n\tborder-bottom-color:#e7e7eb;\n\tborder-bottom-style:solid\n}\n.frm_tab_split .arrow_out {\n\ttop:-12px;\n\tborder-bottom-color:#e7e7eb\n}\n.frm_tab_split .arrow_in {\n\ttop:-10px;\n\tborder-bottom-color:#fff\n}\n.frm_tab_split .arrow_extra {\n\ttop:-11px;\n\tborder-bottom-color:#fff\n}\n.frm_tab_tips {\n\tpadding-top:4px;\n\tcolor:#8d8d8d\n}\n.form_wrp.simple {\n\ttext-align:center\n}\n.form_wrp.simple .form {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left\n}\n.form.tips_inline .frm_tips {\n\twidth:auto;\n\tdisplay:inline-block\n}\n.frm_vertical_lh {\n\tline-height:32px\n}\n.frm_vertical_pt {\n\tpadding-top:.3em\n}\n.frm_fieldset {\n\tpadding-top:25px;\n\tpadding-top:0\\9\n}\n.frm_fieldset.no_legend {\n\tpadding-top:25px\n}\n.frm_legend {\n\tdisplay:block;\n\twidth:100%;\n\t*margin-left:-0.35em;\n\tmargin-bottom:25px \\9;\n\tpadding-bottom:5px\n}\n.frm_legend .tips {\n\tcolor:#8d8d8d;\n\tmargin-left:14px\n}\n.frm_desc {\n\tcolor:#222\n}\n.frm_tips {\n\twidth:300px;\n\tpadding-top:4px;\n\tcolor:#8d8d8d\n}\n.frm_msg {\n\tdisplay:none;\n\toverflow:hidden;\n\t*zoom:1;\n\twidth:300px\n}\n.frm_msg i {\n\tfloat:left;\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-right:3px\n}\n.frm_msg.success {\n\tcolor:#7fba4f\n}\n.frm_msg.fail {\n\tcolor:#e15f63\n}\n.frm_control_group {\n\t*zoom:1;\n\tpadding-bottom:25px\n}\n.frm_control_group:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.frm_control_group.show_value {\n\tpadding-bottom:15px\n}\n.frm_control_group.show_value .frm_input_box {\n\theight:auto;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\tpadding:0;\n\tborder-width:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tbackground:0;\n\tline-height:1.6;\n\tvertical-align:top;\n\tmargin-top:.3em\n}\n.frm_label {\n\tfloat:left;\n\twidth:5em;\n\tmargin-top:.3em;\n\tmargin-right:1em;\n\tfont-size:14px\n}\n.frm_label_tips {\n\tdisplay:block;\n\tcolor:#8d8d8d\n}\n.frm_controls {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tfloat:none;\n\twidth:auto;\n\t*display:block;\n\t*zoom:1\n}\n.frm_controls:after {\n\tcontent:\" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \";\n\tvisibility:hidden;\n\tclear:both;\n\theight:0!important;\n\tdisplay:block;\n\tline-height:0\n}\n.frm_input,.frm_textarea {\n\twidth:100%;\n\tbackground-color:transparent;\n\tborder:0;\n\toutline:0\n}\n.frm_input {\n\theight:22px;\n\t*line-height:22px;\n\tmargin:4px 0\n}\n.frm_textarea {\n\theight:100px\n}\n.frm_input_box {\n\tdisplay:inline-block;\n\tposition:relative;\n\theight:30px;\n\tline-height:30px;\n\tvertical-align:middle;\n\twidth:278px;\n\tfont-size:14px;\n\tpadding:0 10px;\n\tborder:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#fff\n}\n.frm_input_box .frm_input_append {\n\t*height:30px;\n\tfont-size:0\n}\n.frm_input_box.search {\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.frm_input_box.append {\n\tpadding-right:30px\n}\n.frm_input_box.append .frm_input_append {\n\tposition:absolute;\n\ttop:0;\n\tright:.8em\n}\n.frm_input_box.prepend {\n\tpadding-left:30px\n}\n.frm_input_box.prepend .frm_input_append {\n\tposition:absolute;\n\ttop:0;\n\tleft:.8em\n}\n.frm_input_box.with_counter .frm_counter {\n\twidth:50px;\n\tcolor:#8d8d8d;\n\tfont-size:14px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.frm_input_box.with_counter.warn .frm_counter {\n\tcolor:#e15f63\n}\n.frm_input_box.counter_in {\n\tpadding-right:70px\n}\n.frm_input_box.counter_in .frm_counter {\n\tright:0;\n\ttext-align:right;\n\tpadding-right:10px\n}\n.frm_input_box.counter_out {\n\tpadding-right:10px\n}\n.frm_input_box.counter_out .frm_counter {\n\tright:-60px;\n\tpadding-left:10px\n}\n.frm_input_box.vcode {\n\twidth:157px\n}\n.frm_input_box.zone {\n\twidth:72px;\n\tmargin-right:5px\n}\n.frm_input_box.phone {\n\twidth:175px\n}\n.frm_textarea_box {\n\tdisplay:inline-block;\n\twidth:288px;\n\tpadding:4px 0 4px 10px;\n\tfont-size:14px;\n\tborder:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#fff\n}\n.disabled.frm_input_box,.disabled.frm_textarea_box {\n\tbackground-color:#eee\n}\n.disabled .frm_input_box,.disabled .frm_textarea_box {\n\tbackground-color:#eee\n}\n.focus.frm_input_box,.focus.frm_textarea_box,.focus.frm_select_box {\n\tborder-color:#4a9bdf;\n\tbox-shadow:0 0 5px #aedcfa;\n\t-moz-box-shadow:0 0 5px #aedcfa;\n\t-webkit-box-shadow:0 0 5px #aedcfa\n}\n.focus.frm_select_box {\n\t*border-color:transparent\n}\n.frm_radio,.frm_checkbox {\n\tposition:absolute;\n\tleft:-999em\n}\n.frm_radio_label,.frm_checkbox_label {\n\tdisplay:inline-block;\n\ttext-align:left;\n\tcursor:pointer;\n\tmargin-right:1em\n}\n.frm_radio_label.no_extra,.frm_checkbox_label.no_extra {\n\tmargin-right:0\n}\n.frm_radio_label.disabled,.frm_checkbox_label.disabled {\n\tcolor:#999;\n\tcursor:default\n}\n.icon_radio {\n\tmargin-right:4px\n}\n.icon_checkbox {\n\tmargin-right:4px\n}\n.frm_select_box {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tposition:relative;\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\tvertical-align:middle;\n\tfont-size:14px;\n\t*top:.6em;\n\t*margin-right:5px;\n\tpadding:4px 0;\n\tborder:1px solid #e7e7eb;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px;\n\t*background-color:transparent;\n\t*border-color:transparent;\n\t*padding-top:0;\n\t*padding-bottom:0\n}\n.frm_select_box button {\n\tcolor:#222\n}\n.frm_select_box:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.frm_select_box:hover button {\n\tcolor:#222\n}\n.frm_select_label {\n\t*margin-top:-0.2em\n}\n.frm_select {\n\tposition:relative;\n\tz-index:1;\n\theight:22px;\n\tpadding:0 30px 0 10px;\n\tline-height:22px;\n\tbackground-color:transparent;\n\tborder:0;\n\toutline:0\n}\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n\t.frm_select_box {\n\tpadding:0\n}\n.frm_select_box:after {\n\tcontent:\" \";\n\tposition:absolute;\n\tright:15px;\n\ttop:50%;\n\tmargin-top:-2px;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:4px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-bottom-width:0;\n\tborder-top-color:#777;\n\tborder-top-style:solid\n}\n.frm_select {\n\t-webkit-appearance:none;\n\theight:32px\n}\n}.frm_input_box.search .frm_input_append {\n\tborder-left:1px solid #e7e7eb;\n\tright:0;\n\twidth:30px;\n\ttext-align:center\n}\n.frm_input_box.search .search_gray {\n\tmargin-top:-0.2em\n}\n.frm_input_box.disabled .frm_input,.frm_input_box .frm_input[disabled] {\n\tcolor:#8d8d8d\n}\n.frm_control {\n\tmargin-bottom:25px\n}\n.icon_radio,.icon_checkbox {\n\tmargin-right:3px;\n\tmargin-top:-2px;\n\t*margin-top:0\n}\n.icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -182px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_radio.selected,.selected .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -208px no-repeat\n}\n.icon_radio.disabled,.disabled .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -234px no-repeat\n}\n.icon_radio.selected.disabled,.selected.disabled .icon_radio {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -260px no-repeat\n}\n.icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -286px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_checkbox.selected,.selected .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -312px no-repeat\n}\n.icon_checkbox.disabled,.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -338px no-repeat\n}\n.icon_checkbox.selected.disabled,.selected.disabled .icon_checkbox {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -364px no-repeat\n}\n.tab_navs {\n\t*zoom:1;\n\ttext-align:center;\n\tline-height:30px;\n\tborder-bottom:1px solid #e7e7eb;\n\tbox-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);\n\t-moz-box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);\n\t-webkit-box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5)\n}\n.tab_navs:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.tab_nav {\n\tfloat:left;\n\tfont-size:14px\n}\n.tab_nav a {\n\tdisplay:block;\n\t*height:1%;\n\ttext-decoration:none;\n\tcolor:#222;\n\toutline:0;\n\tpadding:0 20px\n}\n.tab_nav.selected {\n\tbackground-color:#d4d5d5\n}\n.mt .tab_nav a {\n\tborder-right:1px solid #e7e7eb\n}\n.mt .tab_nav.selected {\n\tborder-top:3px solid #757474;\n\tposition:relative;\n\ttop:-1px\n}\n.mt .tab_nav.selected a {\n\tposition:relative;\n\tbackground-color:#d4d5d5;\n\tline-height:29px;\n\tmargin-bottom:-2px\n}\n.mt .tab_nav.no_extra a {\n\tborder-right-width:0\n}\n.title_tab .tab_navs {\n\tline-height:40px;\n\tborder-bottom-color:#e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.title_tab .tab_nav {\n\tmargin-bottom:-1px\n}\n.title_tab .tab_nav a {\n\tpadding:0 21px\n}\n.title_tab .tab_nav.first a {\n\tpadding-left:30px\n}\n.title_tab .tab_nav:hover {\n\tborder-bottom:3px solid #a0a3ab\n}\n.title_tab .tab_nav.selected {\n\tbackground:0;\n\tborder-bottom:3px solid #44b549\n}\n.tips_box {\n\tpadding:6px 15px;\n\tbackground-color:#e0eaf6;\n\tborder:0;\n\tcolor:#222;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.tips_box .em {\n\tcolor:#e15f63\n}\n.tips_box_primary {\n\tpadding:6px 15px;\n\tbackground-color:#f1f1f1;\n\tborder:1px solid #d1d1d1;\n\tcolor:#666;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px\n}\n.tips_box_primary .em {\n\tcolor:#e15f63\n}\n.disabled_box {\n\tpadding:.4em .8em;\n\tfont-size:14px;\n\tborder:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#f4f5f9\n}\n.notices_box {\n\tline-height:40px;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbackground-color:#fff;\n\tborder:1px solid #e7e7eb\n}\n.msg_box {\n\tline-height:36px;\n\ttext-align:center\n}\n.msg_box .inner {\n\tbackground-color:#c8e7fc\n}\n.msg_box a {\n\tdisplay:block;\n\tcolor:#6d7f8b\n}\n.empty_tips {\n\tpadding:100px 0;\n\ttext-align:center;\n\tfont-size:14px;\n\tcolor:#8d8d8d\n}\n.mini_tips i {\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-top:-3px;\n\tmargin-right:3px;\n\t*margin-top:0\n}\n.mini_tips .icon_mini_tips {\n\t*margin-top:2px\n}\n.mini_tips.warn {\n\tcolor:#e15f63\n}\n.mini_tips.success {\n\tcolor:#7fba4f\n}\n.mini_tips.weak_text {\n\tcolor:#8d8d8d\n}\n.mini_tips.icon_after i {\n\tmargin-right:0;\n\tmargin-left:3px\n}\n.article_box.inset {\n\tborder:1px solid #e7e7eb;\n\tbackground-color:#f4f5f9;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\theight:500px;\n\toverflow-y:auto\n}\n.article_box.inset .inner {\n\tpadding-left:50px;\n\tpadding-right:50px\n}\n.article_box .inner {\n\tpadding:90px 75px\n}\n.article_box h3 {\n\ttext-align:center;\n\tfont-size:22px;\n\tpadding-bottom:14px\n}\n.article_box h4 {\n\tpadding-bottom:14px;\n\tfont-weight:700;\n\tfont-size:16px\n}\n.article_box h5 {\n\tpadding-bottom:14px;\n\tfont-weight:700;\n\tfont-size:16px\n}\n.article_box h6 {\n\tpadding-bottom:14px;\n\tfont-weight:700;\n\tfont-size:14px\n}\n.article_box ul.disc {\n\tpadding-left:20px;\n\tlist-style-type:disc\n}\n.article_box dl,.article_box li,.article_box p {\n\tpadding-bottom:14px;\n\tfont-size:14px\n}\n.article_box pre {\n\twhite-space:pre-wrap\n}\n.article_box strong {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.article_box .media {\n\ttext-align:center;\n\tpadding-bottom:28px\n}\n.article_box .img_wrp {\n\tdisplay:inline-block;\n\tmax-width:750px\n}\n.article_box .img_wrp img {\n\twidth:100%;\n\t*width:auto;\n\t*max-width:100%;\n\tvertical-align:top\n}\n.article_box .img_wrp .mobile_width {\n\twidth:175px\n}\n.article_box .sign,.article_box .company_sign {\n\tpadding-top:4em;\n\ttext-align:right\n}\n.article_box .sign.strong,.article_box .company_sign.strong {\n\tfont-weight:700;\n\tfont-size:16px\n}\n.article_box .no_extra {\n\tpadding-bottom:0\n}\n.text_box h4 {\n\tfont-size:16px;\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-bottom:10px\n}\n.text_box .spacing {\n\tmargin-top:10px\n}\n.mod_hd,.mod_ft {\n\t*zoom:1\n}\n.mod_hd:after,.mod_ft:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.mod_info {\n\tfloat:left\n}\n.mod_opr {\n\ttext-align:right\n}\n.mod_opr .btn {\n\tmargin-top:-0.2em\n}\n.global_mod .global_extra {\n\ttext-align:right\n}\n.global_mod.mt_layout {\n\tline-height:30px\n}\n.global_mod.mt_layout .global_extra {\n\tmargin-top:-30px\n}\n.global_mod.float_layout {\n\t*zoom:1\n}\n.global_mod.float_layout:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.global_mod.float_layout .global_info {\n\tfloat:left\n}\n.vm_box {\n\tdisplay:inline-block;\n\theight:100%;\n\tvertical-align:middle\n}\n.msg_box {\n\tdisplay:none\n}\n.tips_box_tl {\n\tpadding:6px 15px;\n\tbackground-color:#e0eaf6;\n\ttext-align:left\n}\n.mini_tips a {\n\tcolor:#222\n}\n.article_box h3 {\n\tpadding-bottom:1em;\n\tfont-size:18px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.article_box h4,.article_box h5,.article_box h6 {\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.news_box.inset {\n\tborder:1px solid #e7e7eb;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\theight:500px;\n\toverflow-y:auto\n}\n.news_box.inset .inner {\n\tpadding-left:50px;\n\tpadding-right:50px\n}\n.news_box .inner {\n\tpadding:90px 75px\n}\n.news_box pre {\n\twhite-space:pre-wrap\n}\n.news_box h3 {\n\tpadding-bottom:1em;\n\ttext-align:center;\n\tfont-size:18px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.news_box h4,.news_box h5,.news_box h6 {\n\tpadding-bottom:1em;\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.news_box p,.news_box .table_wrp {\n\tpadding-bottom:1em;\n\tfont-size:14px\n}\n.news_box ol,.news_box ul {\n\tpadding-bottom:14px\n}\n.news_box li p {\n\tpadding-bottom:0\n}\n.news_box strong {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.news_box .em_text {\n\tfont-weight:700\n}\n.news_box .warn_text {\n\tcolor:#e15f63\n}\n.news_box img {\n\tmax-width:100%\n}\n.news_box .media {\n\ttext-align:center;\n\tpadding-bottom:2em\n}\n.news_box .img_wrp {\n\tdisplay:inline-block;\n\tmax-width:750px\n}\n.news_box .img_wrp img {\n\twidth:100%;\n\t*width:auto;\n\t*max-width:100%;\n\tvertical-align:top\n}\n.news_box .img_wrp .mobile_width {\n\twidth:175px\n}\n.news_box .sign,.news_box .company_sign {\n\tpadding-top:4em;\n\ttext-align:right\n}\n.news_box .sign.strong,.news_box .company_sign.strong {\n\tfont-weight:700;\n\tfont-size:16px\n}\n.news_box .no_extra {\n\tpadding-bottom:0\n}\n.highlight_box {\n\tpadding:9px 30px;\n/*\tbackground-color:#f4f5f9;*/\n\tmargin-bottom:20px;\n\tline-height:1.6;\n\t*zoom:1\n}\n.highlight_box .opr {\n\tfloat:right;\n\tpadding:7px 0 0 2em\n}\n.highlight_box .opr.opr_desc {\n\tpadding-top:0;\n\tcolor:#8d8d8d\n}\n.highlight_box .links {\n\tmargin-left:-1em\n}\n.highlight_box .links .links_item {\n\tvertical-align:middle;\n\tmargin-top:-0.2em;\n\tborder-left-color:#d9dadc\n}\n.highlight_box .links .links_item:hover a {\n\tcolor:#222\n}\n.highlight_box .links .selected a {\n\tcolor:#222\n}\n.highlight_box .title {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.highlight_box .title .icon_common.new {\n\theight:14px;\n\tmargin-top:0\n}\n.highlight_box .desc {\n\tcolor:#8d8d8d;\n\toverflow:hidden\n}\n.highlight_box.border {\n\t/*border-top:1px solid #e7e7eb*/\n/*\tborder-bottom:1px solid #e7e7eb*/\n}\n.highlight_box.icon_wrap {\n\tposition:relative;\n\tpadding-top:14px;\n\tpadding-bottom:14px\n}\n.highlight_box.icon_wrap .icon {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\twidth:48px;\n\theight:48px;\n\tposition:absolute;\n\ttop:12px\n}\n.highlight_box.icon_wrap .icon.lock {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -390px no-repeat;\n\twidth:48px;\n\theight:48px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.highlight_box.icon_wrap .icon.unlock {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -448px no-repeat;\n\twidth:48px;\n\theight:48px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.highlight_box.icon_wrap .title,.highlight_box.icon_wrap .desc {\n\tpadding-left:60px\n}\n.highlight_box.icon_small .icon {\n\tmargin-left:-10px\n}\n.highlight_box.icon_small .title,.highlight_box.icon_small .desc {\n\tpadding-left:40px\n}\n.highlight_box.page_global_tips {\n\tmargin:-12px 30px 20px\n}\n.tool_bar {\n\t*zoom:1;\n\tmargin-top:40px;\n\tpadding-top:20px\n}\n.tool_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.tool_bar .btn {\n\tmargin-right:1em\n}\n.tool_bar.with_form {\n\tmargin-top:15px\n}\n.tool_bar.border {\n\tborder-top:1px solid #e7e7eb;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.tool_bar.tc .btn {\n\tmargin-left:.5em;\n\tmargin-right:.5em\n}\n.tool_bar.tr .btn {\n\tmargin-left:1em;\n\tmargin-right:0\n}\n.tool_area {\n\t*zoom:1\n}\n.tool_area:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.title_bar {\n\t*zoom:1\n}\n.title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.title_bar .info {\n\tfloat:left\n}\n.title_bar .opr {\n\tfloat:right\n}\n.parent_title_bar {\n\t*zoom:1;\n\tline-height:35px;\n\tborder-bottom:2px solid #e7e7eb\n}\n.parent_title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.parent_title_bar h3 {\n\tfont-size:16px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.sub_title_bar {\n\t*zoom:1;\n\tline-height:38px;\n\tpadding:0 20px\n}\n.sub_title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.sub_title_bar .info {\n\tfloat:left\n}\n.sub_title_bar .opr {\n\tfloat:right\n}\n.sub_title_bar h3 {\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.sub_title_bar h4 {\n\tfloat:left;\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.tool_bar {\n\tpadding-bottom:50px;\n\tpadding-top:20px\n}\n.tool_bar.simple_gap {\n\tmargin-left:20px;\n\tmargin-bottom:20px\n}\n.title_bar {\n\tpadding:0 20px;\n\tbackground-color:#f4f5f9;\n\tborder-bottom:1px solid #e7e7eb;\n\tline-height:40px\n}\n.title_bar h3 {\n\tfont-size:14px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.global_title_bar {\n\t*zoom:1;\n\tbackground-color:#f4f5f9;\n\tfont-size:16px;\n\tborder-bottom:1px solid #e7e7eb\n}\n.global_title_bar:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.global_title_bar .info {\n\tfloat:left\n}\n.global_title_bar .opr {\n\tfloat:right\n}\n.parent_title_bar {\n\tborder-width:1px\n}\n.sub_title_bar {\n\tpadding:0 30px;\n\tline-height:55px\n}\n.sub_title_bar.default {\n\tbackground-color:#f4f5f9;\n\tborder-bottom:1px solid #e7e7eb\n}\n.sub_title_bar.light {\n\tbackground-color:#f4f5f9;\n\tborder-bottom:1px solid #e7e7eb\n}\n.sub_title_bar.in_dialog {\n\tbackground-color:#fff;\n\tpadding:0 20px;\n\tborder-bottom:1px solid #e7e7eb\n}\n.sub_title_bar.dark {\n\tbackground-color:#dfdfdf;\n\tbackground-image:-moz-linear-gradient(top,#dfdfdf 0,#dfdfdf 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#dfdfdf),to(#dfdfdf));\n\tbackground-image:-webkit-linear-gradient(top,#dfdfdf 0,#dfdfdf 100%);\n\tbackground-image:-o-linear-gradient(top,#dfdfdf 0,#dfdfdf 100%);\n\tbackground-image:linear-gradient(to bottom,#dfdfdf 0,#dfdfdf 100%);\n\tborder-bottom:1px solid #bebebe;\n\tbox-shadow:inset 0 1px 0 0 #ebebeb,0 1px 2px #ddd;\n\t-moz-box-shadow:inset 0 1px 0 0 #ebebeb,0 1px 2px #ddd;\n\t-webkit-box-shadow:inset 0 1px 0 0 #ebebeb,0 1px 2px #ddd\n}\n.sub_title_bar.global {\n\tpadding:0;\n\tfont-size:16px\n}\n.sub_title_bar.no_extra {\n\tbackground:0;\n\tborder-bottom-width:0;\n\tline-height:normal;\n\tpadding:0\n}\n.tool_area {\n\tpadding:0 30px\n}\nbutton.btn {\n\theight:32px;\n\tline-height:28px\n}\n.btn button {\n\tdisplay:block;\n\theight:100%;\n\tbackground-color:transparent;\n\tborder:0;\n\toutline:0;\n\toverflow:visible;\n\tpadding:0 22px\n}\n.btn.btn_input {\n\tpadding:0\n}\n.btn.btn_input.btn_vcode {\n\tmargin-left:5px\n}\n.btn.btn_input.btn_vcode button {\n\twidth:110px;\n\tpadding:0\n}\n.btn.btn_vcode {\n\tpadding:0;\n\twidth:110px;\n\tmargin-left:5px\n}\n.btn {\n\tdisplay:inline-block;\n\toverflow:visible;\n\tpadding:0 22px;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\tvertical-align:middle;\n\ttext-align:center;\n\ttext-decoration:none;\n\tborder-radius:3px;\n\t-moz-border-radius:3px;\n\t-webkit-border-radius:3px;\n\tfont-size:14px;\n\tborder-width:1px;\n\tborder-style:solid;\n\tcursor:pointer\n}\n.btn:hover {\n\ttext-decoration:none\n}\n.btn.btn_mini {\n\theight:21px;\n\tline-height:21px;\n\t*line-height:19px;\n\tpadding:0 10px\n}\n.btn.btn_small {\n\theight:25px;\n\tline-height:25px;\n\t*line-height:23px;\n\tpadding:0 12px\n}\n.btn.btn_large {\n\theight:38px;\n\tline-height:38px;\n\t*line-height:36px;\n\tpadding:0 70px\n}\n.btn.btn_p20 {\n\tpadding:0 20px\n}\n.btn.btn_p30 {\n\tpadding:0 30px\n}\n.btn.btn_w125 {\n\twidth:125px;\n\tpadding:0\n}\n.btn.btn_w150 {\n\twidth:150px;\n\tpadding:0\n}\n.btn.btn_w220 {\n\twidth:220px;\n\tpadding:0\n}\n.btn_default {\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222\n}\n.btn_default button {\n\tcolor:#222\n}\n.btn_default:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.btn_default:hover button {\n\tcolor:#222\n}\n.btn_warn {\n\tbackground-color:#f24d4d;\n\tbackground-image:-moz-linear-gradient(top,#f24d4d 0,#f24d4d 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#f24d4d),to(#f24d4d));\n\tbackground-image:-webkit-linear-gradient(top,#f24d4d 0,#f24d4d 100%);\n\tbackground-image:-o-linear-gradient(top,#f24d4d 0,#f24d4d 100%);\n\tbackground-image:linear-gradient(to bottom,#f24d4d 0,#f24d4d 100%);\n\tborder-color:#f24d4d;\n\tcolor:#fff\n}\n.btn_warn button {\n\tcolor:#fff\n}\n.btn_warn:hover {\n\tbackground-color:#d43d3d;\n\tbackground-image:-moz-linear-gradient(top,#d43d3d 0,#d43d3d 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#d43d3d),to(#d43d3d));\n\tbackground-image:-webkit-linear-gradient(top,#d43d3d 0,#d43d3d 100%);\n\tbackground-image:-o-linear-gradient(top,#d43d3d 0,#d43d3d 100%);\n\tbackground-image:linear-gradient(to bottom,#d43d3d 0,#d43d3d 100%);\n\tborder-color:#d43d3d;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#fff\n}\n.btn_warn:hover button {\n\tcolor:#fff\n}\n.btn_primary {\n\tbackground-color:#44b549;\n\tbackground-image:-moz-linear-gradient(top,#44b549 0,#44b549 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#44b549),to(#44b549));\n\tbackground-image:-webkit-linear-gradient(top,#44b549 0,#44b549 100%);\n\tbackground-image:-o-linear-gradient(top,#44b549 0,#44b549 100%);\n\tbackground-image:linear-gradient(to bottom,#44b549 0,#44b549 100%);\n\tborder-color:#44b549;\n\tcolor:#fff\n}\n.btn_primary button {\n\tcolor:#fff\n}\n.btn_primary:hover {\n\tbackground-color:#2f9833;\n\tbackground-image:-moz-linear-gradient(top,#2f9833 0,#2f9833 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#2f9833),to(#2f9833));\n\tbackground-image:-webkit-linear-gradient(top,#2f9833 0,#2f9833 100%);\n\tbackground-image:-o-linear-gradient(top,#2f9833 0,#2f9833 100%);\n\tbackground-image:linear-gradient(to bottom,#2f9833 0,#2f9833 100%);\n\tborder-color:#2f9833;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#fff\n}\n.btn_primary:hover button {\n\tcolor:#fff\n}\n.btn_disabled {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_disabled button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_disabled:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa\n}\n.btn_disabled:hover button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_loading {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa;\n\tcursor:default;\n\tposition:relative;\n\tpadding-left:42px;\n\tpadding-right:30px\n}\n.btn_loading button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_loading:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-color:#dadbe0;\n\tcolor:#a5a6aa\n}\n.btn_loading:hover button {\n\tcolor:#a5a6aa;\n\tcursor:default\n}\n.btn_loading button {\n\tposition:relative;\n\tpadding-left:42px;\n\tpadding-right:30px\n}\n.btn_loading i {\n\tposition:absolute;\n\ttop:50%;\n\tleft:16px;\n\tmargin-top:-8px;\n\tbackground:transparent url(../img/base/icon16_loading_light1e5b3a.gif) no-repeat 0 0;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.btn {\n\tmin-width:60px\n}\n.btn.btn_input {\n\tmin-width:104px\n}\n.btn.btn_input button {\n\twidth:100%\n}\n.btn.btn_loading {\n\tmin-width:32px\n}\n.btn.btn_add i {\n\tmargin-right:3px;\n\tmargin-top:-2px;\n\t*margin-top:2px\n}\n.btn.btn_add .add_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -506px no-repeat\n}\n.btn.btn_disabled .add_white {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -530px no-repeat\n}\n.btn.btn_small {\n\tmin-width:0\n}\n.icon_msg {\n\twidth:56px;\n\theight:56px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -554px no-repeat\n}\n.icon_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -620px no-repeat\n}\n.icon_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -686px no-repeat\n}\n.icon_msg.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -752px no-repeat\n}\n.icon_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -818px no-repeat\n}\n.icon_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -884px no-repeat\n}\n.icon_msg_mini {\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg_mini.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -950px no-repeat\n}\n.icon_msg_mini.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -976px no-repeat\n}\n.icon_msg_mini.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1002px no-repeat\n}\n.icon_msg_mini.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1028px no-repeat\n}\n.icon_msg_mini.ask {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1054px no-repeat\n}\n.icon_msg_small {\n\twidth:32px;\n\theight:32px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg_small.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1080px no-repeat\n}\n.icon_msg_small.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1122px no-repeat\n}\n.icon_msg_small.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1164px no-repeat\n}\n.icon_msg_small.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1206px no-repeat\n}\n.icon_msg_small.ask {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1248px no-repeat\n}\n.icon37_msg {\n\twidth:37px;\n\theight:37px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon37_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1290px no-repeat\n}\n.icon37_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1337px no-repeat\n}\n.icon37_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1384px no-repeat\n}\n.icon37_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1431px no-repeat\n}\n.icon37_msg.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1478px no-repeat\n}\n.icon37_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1525px no-repeat\n}\n.icon20_msg {\n\twidth:20px;\n\theight:20px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon20_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1572px no-repeat\n}\n.icon20_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1602px no-repeat\n}\n.icon20_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1632px no-repeat\n}\n.icon20_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1662px no-repeat\n}\n.icon18_msg {\n\twidth:18px;\n\theight:18px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon18_msg.ask {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1692px no-repeat\n}\n.icon18_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1720px no-repeat\n}\n.icon18_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1748px no-repeat\n}\n.icon18_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1776px no-repeat\n}\n.icon18_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1804px no-repeat\n}\n.icon18_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1832px no-repeat\n}\n.page_msg .inner {\n\tposition:relative;\n\t*zoom:1;\n\tbackground-color:#e0eaf6\n}\n.page_msg .inner:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.page_msg .msg_icon_wrp,.page_msg .msg_icon_wrapper {\n\tfloat:left;\n\tmargin-right:10px;\n\tfont-size:0\n}\n.page_msg .msg_content {\n\toverflow:hidden;\n\t*zoom:1;\n\tpadding-top:5px\n}\n.page_msg .msg_opr {\n\tdisplay:none;\n\tposition:absolute;\n\tright:10px;\n\ttop:50%;\n\tmargin-top:-10px\n}\n.page_msg h4 {\n\tfont-size:16px;\n\tfont-weight:700\n}\n.page_msg p {\n\tfont-size:14px;\n\tcolor:#8d8d8d\n}\n.page_msg .spacing {\n\tpadding:.5em 0 2em\n}\n.page_msg .line_break_before {\n\tpadding-top:1em\n}\n.page_msg .icon_dot {\n\tmargin-right:5px;\n\tmargin-top:-0.2em;\n\tcolor:#8d8d8d\n}\n.page_msg.large .inner {\n\tpadding:12px 70px\n}\n.page_msg.small .inner {\n\tpadding:40px\n}\n.page_msg.mini .inner {\n\tpadding:9px 20px\n}\n.page_msg.mini .msg_icon_wrp {\n\tmargin-top:3px;\n\tmargin-right:6px\n}\n.page_msg.mini .msg_content {\n\tpadding-top:0\n}\n.page_msg.single_line .msg_content {\n\tpadding-top:15px\n}\n.page_msg.default .inner {\n\tbackground-color:transparent;\n\tborder:0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.page_msg.simple {\n\ttext-align:center\n}\n.page_msg.simple .inner {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left;\n\tmin-width:55%\n}\n.icon_msg {\n\twidth:46px;\n\theight:46px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1860px no-repeat\n}\n.icon_msg.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1916px no-repeat\n}\n.icon_msg.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -1972px no-repeat\n}\n.icon_msg.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2028px no-repeat\n}\n.icon_msg.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2084px no-repeat\n}\n.icon_msg.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2140px no-repeat\n}\n.icon_msg_primary {\n\twidth:46px;\n\theight:46px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_msg_primary.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2196px no-repeat\n}\n.icon_msg_primary.warn {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2252px no-repeat\n}\n.icon_msg_primary.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2308px no-repeat\n}\n.icon_msg_primary.info {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2364px no-repeat\n}\n.icon_msg_primary.mail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2420px no-repeat\n}\n.page_msg.mini p {\n\tcolor:#222\n}\n.page_msg.mini .msg_icon_wrapper,.page_msg.mini .msg_icon_wrp {\n\tmargin-top:4px\n}\n.page_msg.single_line .msg_content {\n\tpadding-top:10px\n}\n.page_msg h4 {\n\tfont-size:14px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.page_msg .msg_content {\n\tpadding-top:0\n}\n.popover_close {\n\tdisplay:none;\n\tposition:absolute;\n\tright:10px;\n\ttop:22px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2476px no-repeat\n}\n.popover_close:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2502px no-repeat\n}\n.popover {\n\twidth:257px;\n\tposition:absolute;\n\tmargin-top:12px;\n\tz-index:999\n}\n.popover .popover_inner {\n\tborder:1px solid #d9dadc;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\tpadding:30px 25px;\n\tbackground-color:#fff;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.popover .popover_arrow {\n\tposition:absolute;\n\tleft:50%;\n\tmargin-left:-8px;\n\tmargin-top:-8px;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:8px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-top-width:0;\n\tborder-bottom-color:#d9dadc;\n\tborder-bottom-style:solid\n}\n.popover .popover_arrow_out {\n\ttop:0\n}\n.popover .popover_arrow_in {\n\tborder-bottom-color:#fff;\n\ttop:1px\n}\n.popover .popover_title {\n\tfont-size:14px;\n\tfont-weight:700\n}\n.popover .popover_tips {\n\tcolor:#8d8d8d\n}\n.popover .popover_bar {\n\ttext-align:center;\n\tmargin-top:20px\n}\n.popover .popover_bar .btn {\n\tmargin:0 .3em\n}\n.popover.simple .popover_bar {\n\ttext-align:left\n}\n.popover.simple .btn {\n\tmargin-left:0;\n\tmargin-right:.6em\n}\n.popover.pos_left .popover_arrow {\n\tleft:42px\n}\n.popover.pos_right .popover_arrow {\n\tleft:auto;\n\tright:28px\n}\n.popover.normal_flow {\n\tposition:relative;\n\twidth:auto;\n\tz-index:0\n}\n.popover.normal_flow .popover_inner {\n\tpadding:14px 20px;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tborder-color:#e7e7eb\n}\n.popover.normal_flow .popover_content {\n\twidth:auto\n}\n.popover.normal_flow .popover_arrow_out {\n\tborder-bottom-color:#e7e7eb\n}\n.popover.arrow_left {\n\tmargin-left:8px;\n\tmargin-top:0\n}\n.popover.arrow_left .popover_arrow {\n\ttop:25px;\n\tleft:0;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:8px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-left-width:0;\n\tborder-right-color:#d9dadc;\n\tborder-right-style:solid\n}\n.popover.arrow_left .popover_arrow_in {\n\tleft:1px;\n\tborder-right-color:#fff\n}\n.popover.z_top {\n\tz-index:10000\n}\n.popover {\n\twidth:280px\n}\n.popover .popover_title {\n\tfont-weight:400;\n\tfont-style:normal;\n\tpadding-bottom:5px\n}\n.popover .frm_input_box {\n\tdisplay:block;\n\twidth:auto\n}\n.popover .popover_bar {\n\ttext-align:justify;\n\ttext-justify:distribute-all-lines;\n\tfont-size:0\n}\n.popover .popover_bar:after {\n\tdisplay:inline-block;\n\twidth:100%;\n\theight:0;\n\tfont-size:0;\n\tmargin:0;\n\tpadding:0;\n\toverflow:hidden;\n\tcontent:\".\"\n}\n.popover .popover_bar .tj_item {\n\tfont-size:14px;\n\ttext-align:left;\n\ttext-justify:auto\n}\n.popover .popover_bar .btn {\n\tmargin:0\n}\n.copylink_wrp {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1\n}\n.copylink {\n\tdisplay:inline-block\n}\n.icon_goback {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2528px no-repeat;\n\twidth:26px;\n\theight:26px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_goback:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2564px no-repeat\n}\n.page_nav {\n\tmargin:20px 30px\n}\n.page_nav .icon_goback {\n\tmargin-right:.5em\n}\n.page_nav a {\n\tcolor:#8d8d8d\n}\n.page_nav a:hover {\n\tcolor:#459ae9\n}\n.page_nav.title_bottom {\n\tmargin-top:0\n}\n.gototop {\n\tposition:fixed;\n\tbottom:100px;\n\tleft:0;\n\tright:0\n}\n.gototop_inner {\n\twidth:1200px;\n\tmargin-left:auto;\n\tmargin-right:auto;\n\ttext-align:right\n}\n.gototop_tips {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2600px no-repeat;\n\twidth:47px;\n\theight:47px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tcursor:pointer;\n\tline-height:200px;\n\toverflow:hidden;\n\tmargin-right:-80px\n}\n.page_tips {\n\tposition:fixed;\n\ttop:0;\n\tleft:0;\n\ttext-align:center;\n\twidth:100%;\n\tz-index:10000\n}\n.page_tips .inner {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tmin-width:250px;\n\tpadding:5px 30px;\n\tcolor:#fff\n}\n.page_tips.success .inner {\n\tbackground-color:#44b549\n}\n.page_tips.error .inner {\n\tbackground-color:#eaa000\n}\n.mask {\n\tposition:fixed;\n\ttop:0;\n\tleft:0;\n\twidth:100%;\n\theight:100%;\n\tfilter:alpha(opacity = 75);\n\t-moz-opacity:.75;\n\t-khtml-opacity:.75;\n\topacity:.75;\n\tbackground-color:#000;\n\tz-index:9998\n}\n.table_wrp.list {\n\tpadding:20px\n}\n.table_wrp.list .table {\n\tborder-top-width:0\n}\n.table_wrp.list .table_cell {\n\tvertical-align:top;\n\tpadding-left:20px;\n\tpadding-right:20px\n}\n.table_wrp.list .tbody .table_cell {\n\tpadding-top:15px;\n\tpadding-bottom:15px\n}\n.table_wrp.with_border .table {\n\tborder:1px solid #e7e7eb\n}\n.table {\n\twidth:100%;\n\tfont-size:14px;\n\tbackground-color:#fff;\n\ttext-align:center;\n\tborder-top:1px solid #e7e7eb;\n\tborder-bottom:1px solid #e7e7eb\n}\n.table_cell {\n\tpadding:0;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.thead {\n\tbackground-color:#f4f5f9\n}\n.thead .table_cell {\n\tline-height:32px;\n\tborder-left:1px solid #e7e7eb;\n\tborder-bottom:1px solid #e7e7eb\n}\n.thead .table_cell:first-child {\n\tborder-left-width:0\n}\n.tbody tr:hover,.tbody tr.even {\n\tbackground-color:transparent\n}\n.tbody tr.empty_item:hover {\n\tbackground:0\n}\n.tbody tr:first-child .table_cell {\n\tborder-top-width:0\n}\n.tbody .table_cell {\n\tpadding-top:6px;\n\tpadding-bottom:6px;\n\tborder-top:1px solid #e7e7eb\n}\n.thead .table_cell {\n\tborder-left-width:0\n}\n.tbody .table_cell.hd_dropdown_area {\n\tpadding-left:30px\n}\n.links_item {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tpadding:0 1em;\n\tline-height:1em;\n\t*line-height:18px;\n\tborder-left:1px solid #797979\n}\n.links_item.no_extra {\n\tborder-left-width:0\n}\n.links_item:first-child {\n\tborder-left-width:0\n}\n.links_item a {\n\tdisplay:block;\n\tcolor:#797979\n}\n.links.tab_links {\n\tmargin-left:-1em\n}\n.links.tab_links .links_item {\n\tborder-left-color:#d9dadc\n}\n.links.tab_links .links_item:hover a {\n\tcolor:#222\n}\n.links.tab_links .selected a {\n\tcolor:#222\n}\n.faq {\n\twidth:178px;\n\tmargin-top:-60px;\n\tpadding-left:20px;\n\tfont-size:0\n}\n.faq .links {\n\ttext-align:center\n}\n.faq .links_item {\n\tpadding:0 .5em;\n\tfont-size:12px;\n\tborder-left-color:#8d8d8d\n}\n.faq .links_item a {\n\tcolor:#8d8d8d\n}\n.faq .links_item a:hover {\n\tcolor:#459ae9\n}\n.faq .links_item.no_extra {\n\tpadding-left:0\n}\n.faq .tail {\n\tcolor:#8d8d8d;\n\tfont-size:12px;\n\tline-height:30px;\n\tword-break: normal;\n\tword-wrap: normal;\n}\n.pop_closed {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2657px no-repeat\n}\n.pop_closed:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2683px no-repeat\n}\n.dialog_wrp {\n\tposition:fixed;\n\ttop:50%;\n\tleft:50%;\n\twidth:726px;\n\tz-index:3\n}\n.dialog_wrp.label_block .frm_control_group {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1\n}\n.dialog_wrp.label_block .frm_label {\n\tfloat:none;\n\tfont-size:14px;\n\tmargin-bottom:.5em\n}\n.dialog_wrp.label_block .frm_input_box,.dialog_wrp.label_block .frm_label,.dialog_wrp.label_block .frm_tips,.dialog_wrp.label_block .frm_msg {\n\twidth:auto\n}\n.dialog_wrp.label_block .frm_input_box,.dialog_wrp.label_block .frm_label {\n\tdisplay:block\n}\n.dialog_wrp.label_block .frm_controls {\n\tpadding-left:0\n}\n.dialog_wrp.align_edge .dialog_bd {\n\tpadding:0\n}\n.dialog_wrp.simple .dialog_bd {\n\ttext-align:center\n}\n.dialog {\n\toverflow:hidden;\n\tborder:1px solid transparent;\n\tbackground-color:#fff;\n\tborder-radius:0;\n\t-moz-border-radius:0;\n\t-webkit-border-radius:0\n}\n.dialog_hd {\n\tposition:relative;\n\tpadding:0 20px;\n\tline-height:38px;\n\theight:38px;\n\tbackground-color:#f4f5f9;\n\tbackground-image:-moz-linear-gradient(top,#f4f5f9 0,#f4f5f9 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#f4f5f9),to(#f4f5f9));\n\tbackground-image:-webkit-linear-gradient(top,#f4f5f9 0,#f4f5f9 100%);\n\tbackground-image:-o-linear-gradient(top,#f4f5f9 0,#f4f5f9 100%);\n\tbackground-image:linear-gradient(to bottom,#f4f5f9 0,#f4f5f9 100%);\n\tborder-bottom:1px solid #e7e7eb\n}\n.dialog_hd h3 {\n\tcolor:#222\n}\n.dialog_hd .pop_closed {\n\tposition:absolute;\n\ttop:50%;\n\tmargin-top:-8px;\n\tright:20px;\n\twidth:16px;\n\theight:16px;\n\tline-height:999em;\n\toverflow:hidden\n}\n.dialog_bd {\n\tpadding:55px 45px\n}\n.dialog_ft {\n\tmargin:0;\n\tpadding:25px 0;\n\ttext-align:center;\n\tborder-top:1px solid transparent;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none\n}\n.dialog_ft .btn {\n\tmargin-left:.3em;\n\tmargin-right:.3em\n}\n.dialog_content_list {\n\theight:420px;\n\tpadding:0 120px;\n\toverflow-y:scroll;\n\tposition:relative\n}\n.simple_dialog_content {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left;\n\twidth:420px\n}\n.simple_dialog_content .frm_input_box,.simple_dialog_content .frm_textarea_box {\n\tdisplay:block\n}\n.simple_dialog_content .frm_input_box,.simple_dialog_content .frm_textarea_box,.simple_dialog_content .frm_tips,.simple_dialog_content .frm_msg {\n\twidth:auto\n}\n.dialog_wrp {\n\tz-index:9999\n}\n.dialog {\n\tborder-width:0;\n\toverflow:visible\n}\n.dialog_ft {\n\tpadding:16px 0;\n\tbackground-color:#f4f5f9\n}\n.dialog_bd {\n\tmin-height:110px\n}\n.dialog_hd {\n\tline-height:52px;\n\theight:52px;\n\tborder-bottom-width:0\n}\n.dialog_hd h3 {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.tc_dialog_content {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\ttext-align:left;\n\twidth:420px\n}\n.has_ft_desc .dialog_bd {\n\tposition:relative\n}\n.has_ft_desc .dialog_ft_desc {\n\tposition:absolute;\n\tbottom:-40px;\n\tleft:20px\n}\n.pop_closed {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2709px no-repeat\n}\n.pop_closed:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2735px no-repeat\n}\n.ml1e {\n\tmargin-left:1em\n}\n.dialog_process .form {\n\tpadding-left:45px;\n\tpadding-right:45px\n}\n.dialog_process .dialog_bd {\n\tpadding:0 0 55px\n}\n.dialog_process .processor_bar {\n\tmargin-bottom:45px\n}\n.safe_check .form .inner {\n\twidth:425px;\n\tmargin:0 auto\n}\n.safe_check .form .frm_hd {\n\tmargin-bottom:1.5em\n}\n.safe_check .form .frm_hd .frm_title {\n\tmargin-bottom:0;\n\tfont-weight:400;\n\tfont-style:normal;\n\tfont-size:14px\n}\n.safe_check .form .frm_hd .frm_desc {\n\tcolor:#8d8d8d\n}\n.safe_check .form .frm_label {\n\tfloat:left;\n\twidth:5em;\n\tmargin-bottom:0;\n\tfont-size:14px\n}\n.safe_check .form .frm_radio_block_desc {\n\tpadding-left:23px\n}\n.safe_check .form .page_msg {\n\tmargin-left:-14em\n}\n.safe_check .form_width_auto .inner {\n\twidth:auto;\n\tmax-width:500px;\n\tmargin:0 auto\n}\n.safe_check .form_owner_info .frm_label {\n\twidth:8em\n}\n.safe_check .form_owner_info .inner {\n\twidth:500px\n}\n.safe_check .tool_bar {\n\tpadding-bottom:0\n}\n.safe_check .tool_bar.tc {\n\tpadding-left:0;\n\ttext-align:center\n}\n.page_msg .extra_msg h4 {\n\tfont-weight:400;\n\tfont-style:normal\n}\n.qrcode_scan .js_status {\n\twidth:280px\n}\n.qrcode_scan .qrcode_wrp {\n\twidth:280px;\n\theight:280px\n}\n.bubbleTips {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tvertical-align:middle;\n\tposition:relative\n}\n.bubbleTips.warn {\n\tcolor:#e15f63\n}\n.bubbleTips.success {\n\tcolor:#7fba4f\n}\n.bubble_left {\n\tmargin-left:.5em\n}\n.bubble_left .bubbleTips_arrow.in {\n\tleft:-5px\n}\n.bubble_left .bubbleTips_arrow.out {\n\tborder-right-color:#e7e7eb;\n\tleft:-6px\n}\n.bubble_right {\n\tmargin-right:.5em\n}\n.bubble_right .bubbleTips_arrow {\n\tborder-left-width:6px;\n\tborder-right-color:transparent;\n\tborder-right-style:dashed;\n\tborder-right-width:0;\n\tborder-left-color:#fff;\n\tborder-left-style:solid\n}\n.bubble_right .bubbleTips_arrow.in {\n\tright:-5px\n}\n.bubble_right .bubbleTips_arrow.out {\n\tborder-left-color:#e7e7eb;\n\tright:-6px\n}\n.bubble_top {\n\tmargin-top:.5em\n}\n.bubble_top .bubbleTips_arrow {\n\tborder-left-width:6px;\n\tborder-right-color:transparent;\n\tborder-right-style:dashed;\n\tborder-top-width:0;\n\tborder-bottom-color:#fff;\n\tborder-bottom-style:solid;\n\tleft:50%;\n\tmargin-left:-6px\n}\n.bubble_top .bubbleTips_arrow.in {\n\ttop:1px\n}\n.bubble_top .bubbleTips_arrow.out {\n\tborder-bottom-color:#e7e7eb;\n\ttop:0\n}\n.bubble_bottom {\n\tmargin-bottom:.5em\n}\n.bubble_bottom .bubbleTips_arrow {\n\tborder-left-width:6px;\n\tborder-right-color:transparent;\n\tborder-right-style:dashed;\n\tborder-bottom-width:0;\n\tborder-top-color:#fff;\n\tborder-top-style:solid;\n\tleft:50%;\n\tmargin-left:-6px\n}\n.bubble_bottom .bubbleTips_arrow.in {\n\tbottom:1px\n}\n.bubble_bottom .bubbleTips_arrow.out {\n\tborder-top-color:#e7e7eb;\n\tbottom:0\n}\n.bubbleTips_inner {\n\tpadding:4.5px 12px;\n\tborder:1px solid #e7e7eb;\n\tline-height:21px;\n\tbackground-color:#fff;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.bubbleTips_arrow {\n\tposition:absolute;\n\ttop:50%;\n\tmargin-top:-6px;\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:6px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-left-width:0;\n\tborder-right-color:#fff;\n\tborder-right-style:solid\n}\n.icon20_common {\n\twidth:20px;\n\theight:20px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:300px;\n\toverflow:hidden\n}\n.icon20_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2761px no-repeat\n}\n.icon36_common {\n\twidth:36px;\n\theight:36px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:300px;\n\toverflow:hidden\n}\n.icon36_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2791px no-repeat\n}\n.create_access {\n\tdisplay:block;\n\tborder:2px dotted #d9dadc;\n\tline-height:80px;\n\ttext-align:center;\n\tmargin-bottom:20px\n}\n.create_access i {\n\tcursor:pointer\n}\n.create_access a {\n\tdisplay:none;\n\tvertical-align:middle;\n\tmargin-left:10px;\n\tmargin-right:10px;\n\tcolor:#d9d9d9;\n\tfont-size:14px;\n\tline-height:normal\n}\n.create_access a strong {\n\tdisplay:block;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.create_access:hover {\n\tborder-color:#b3b3b3\n}\n.create_access:hover .add_gray {\n\tdisplay:none\n}\n.create_access:hover a {\n\tdisplay:inline-block\n}\n.create_access:hover a:hover {\n\tcolor:#b3b3b3\n}\n.create_access_primary {\n\tdisplay:block;\n\tborder:2px dotted #d9dadc;\n\tline-height:60px;\n\tfont-size:0;\n\ttext-align:center;\n\tmargin-bottom:20px\n}\n.create_access_primary i {\n\tcursor:pointer\n}\n.create_access_primary:hover {\n\tborder-color:#b3b3b3\n}\n.create_access_primary:hover .icon20_common {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2837px no-repeat\n}\n.create_access_primary:hover .icon36_common {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2867px no-repeat\n}\n.create_access_primary:hover .icon42_common {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2913px no-repeat\n}\n.icon_menu {\n\twidth:23px;\n\theight:23px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_menu.manage {\n\tbackground:transparent url(../img/base/icon_menu_manage.png?__sprite) no-repeat 0 0\n}\n.icon_menu.function {\n\tbackground:transparent url(../img/base/icon_menu_function.png?__sprite) no-repeat 0 0\n}\n.icon_menu.statistics {\n\tbackground:transparent url(../img/base/icon_menu_statistics.png?__sprite) no-repeat 0 0\n}\n.icon_menu.service {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2965px no-repeat\n}\n.icon_menu.setting {\n\tbackground:transparent url(../img/base/icon_menu_setting.png?__sprite) no-repeat 0 0\n}\n.icon_menu.appcenter {\n\tbackground:transparent url(../img/base/icon_menu_appcenter.png?__sprite) no-repeat 0 0\n}\n.icon_menu.guide {\n\tbackground:transparent url(../img/base/icon_menu_guide.png?__sprite) no-repeat 0 0\n}\n.icon_menu.store {\n\tbackground:transparent url(../img/base/icon_menu_store.png?__sprite) no-repeat 0 0\n}\n.icon_menu.adclient {\n\tbackground:transparent url(../img/base/icon_menu_adclient.png?__sprite) no-repeat 0 0\n}\n.icon_menu.adhost {\n\tbackground:transparent url(../img/base/icon_menu_adhost.png?__sprite) no-repeat 0 0\n}\n.icon_menu.advert {\n\tbackground:transparent url(../img/base/icon_menu_advert.png?__sprite) no-repeat 0 0\n}\n.icon_menu.task {\n\tbackground:transparent url(../img/base/icon_menu_task.png?__sprite) no-repeat 0 0\n}\n.icon_menu.tool {\n\tbackground:transparent url(../img/base/icon_menu_tool.png?__sprite) no-repeat 0 0\n}\n.icon_menu.log {\n\tbackground:transparent url(../img/base/icon_menu_log.png?__sprite) no-repeat 0 0\n}\n.icon_menu.access {\n\tbackground:transparent url(../img/base/icon_menu_access.png?__sprite) no-repeat 0 0\n}\n.icon_menu.monitor {\n\tbackground:transparent url(../img/base/icon_menu_monitor.png?__sprite) no-repeat 0 0\n}\n.icon_menu.user {\n\tbackground:transparent url(../img/base/icon_menu_user.png?__sprite) no-repeat 0 0\n}\n.icon_menu.db {\n\tbackground:transparent url(../img/base/icon_menu_db.png?__sprite) no-repeat 0 0\n}\n\n.icon_menu.sample {\n\tbackground:transparent url(../img/base/icon_menu_sample.png?__sprite) no-repeat 0 0\n}\n.icon_menu.service {\n\tbackground:transparent url(../img/base/icon_menu_service.png?__sprite) no-repeat 0 0\n}\n.icon_menu.esb {\n\tbackground:transparent url(../img/base/icon_menu_tool.png?__sprite) no-repeat 0 0\n}\n\n.selected .icon_menu.manage {\n\tbackground:transparent url(../img/base/icon_menu_manage_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.function {\n\tbackground:transparent url(../img/base/icon_menu_function_selected.png?__sprite) no-repeat 0 0\n}\n\n.selected .icon_menu.sample {\n\tbackground:transparent url(../img/base/icon_menu_sample_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.service {\n\tbackground:transparent url(../img/base/icon_menu_service_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.statistics {\n\tbackground:transparent url(../img/base/icon_menu_statistics_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.service {\n\tbackground:transparent url(../img/base/icon_menu_service_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.setting {\n\tbackground:transparent url(../img/base/icon_menu_setting_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.appcenter {\n\tbackground:transparent url(../img/base/icon_menu_appcenter_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.guide {\n\tbackground:transparent url(../img/base/icon_menu_guide_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.store {\n\tbackground:transparent url(../img/base/icon_menu_store_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.adhost {\n\tbackground:transparent url(../img/base/icon_menu_adhost_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.advert {\n\tbackground:transparent url(../img/base/icon_menu_advert_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.task {\n\tbackground:transparent url(../img/base/icon_menu_task_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.tool {\n\tbackground:transparent url(../img/base/icon_menu_tool_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.log {\n\tbackground:transparent url(../img/base/icon_menu_log_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.access {\n\tbackground:transparent url(../img/base/icon_menu_access_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.monitor {\n\tbackground:transparent url(../img/base/icon_menu_monitor_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.user {\n\tbackground:transparent url(../img/base/icon_menu_user_selected.png?__sprite) no-repeat 0 0\n}\n.selected .icon_menu.db {\n\tbackground:transparent url(../img/base/icon_menu_db_selected.png?__sprite) no-repeat 0 0\n}\n.icon_menu_switch {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -2993px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.closed .icon_menu_switch {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3019px no-repeat\n}\n.closed.selected .icon_menu_switch {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3045px no-repeat\n}\n.menu_box {\n\tmargin-bottom:150px\n}\n.menu {\n\tpadding-top:8px\n}\n.menu.closed .menu_item {\n\tdisplay:none\n}\n.menu_title {\n\tposition:relative;\n\tpadding:0 30px 0;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tline-height:34px;\n\tcolor:#8d8d8d;\n\tfont-weight: normal;\n}\n.menu_title .new {\n\tmargin-left:3px\n}\n.menu_title a {\n\tdisplay:block;\n\tpadding:0 30px 0;\n\tcolor:#222;\n\ttext-decoration:none\n}\n.menu_title a:hover {\n\ttext-decoration:none\n}\n.menu_title.clickable {\n\tpadding:0\n}\n.menu_title.clickable i {\n\tcursor:pointer\n}\n.menu_title.clickable:hover {\n\tbackground-color:#f4f5f9\n}\n.menu_title.selected {\n\tbackground-color:#44b549;\n\tcolor:#fff\n}\n.menu_title.selected:hover {\n\tbackground-color:#44b549\n}\n.menu_title.selected a {\n\tcolor:#fff\n}\n.menu .icon-download{\n  display: inline-block;\n  width: 23px;\n  text-align: center;\n  vertical-align: middle;\n  color: #BFBFBF;\n}\n.menu .selected .icon-download{\n  color: #fff;\n}\n.menu_item {\n\tline-height:34px\n}\n.menu_item a {\n\t/*display:block;*/\n\tpadding:0 0 0 63px;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tcolor:#222\n}\n.menu_item a:hover {\n\ttext-decoration:none\n}\n.icon_menu {\n\tmargin-right:10px;\n\t*margin-top:.2em\n}\n.icon_menu_switch {\n\tposition:absolute;\n\tright:16px;\n\ttop:50%;\n\tmargin-top:-9px\n}\n.menu {\n\tpadding-bottom:6px;\n\tborder-top:1px solid #e7e7eb\n}\n.menu.no_extra {\n\tborder-top-width:0;\n\tmargin-top:13px\n}\n.menu.extra {\n\tborder-bottom:1px solid #e7e7eb\n}\n.menu_title {\n\tmargin-bottom:0\n}\n.menu_item:hover {\n\tbackground-color:#f4f5f9\n}\n.menu_item.selected {\n\tbackground-color:#44b549;\n\tcolor:#fff\n}\n.menu_item.selected a {\n\tcolor:#fff\n}\n.menu_plugins {\n\tpadding:10px 0\n}\n.menu_plugins .btn_plugins_add {\n\tdisplay:block;\n\tline-height:34px;\n\tcolor:#8d8d8d;\n\tpadding-left:41px;\n\twidth:121px;\n\tmargin:0 auto;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3071px no-repeat;\n\tcursor:pointer\n}\n.menu_plugins .btn_plugins_add:hover {\n\ttext-decoration:none;\n\tcolor:#222;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3115px no-repeat\n}\n.menu_plugins .btn_plugins_add i {\n\tmargin-right:5px\n}\n.menu_primary_box {\n\twidth:208px\n}\n.menu_primary_item {\n\tline-height:32px\n}\n.menu_primary_item:hover {\n\tbackground-color:#f4f5f9\n}\n.menu_primary_item.selected {\n\tbackground-color:#44b549\n}\n.menu_primary_item.selected .menu_primary_link {\n\tcolor:#fff\n}\n.menu_primary_item.sub .menu_primary_link strong {\n\tmargin-left:28px\n}\n.menu_primary_link {\n\tdisplay:block;\n\tcolor:#222\n}\n.menu_primary_link:hover {\n\ttext-decoration:none\n}\n.menu_primary_link strong {\n\tdisplay:block;\n\tcursor:pointer;\n\tmargin:0 14px;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.inner_menu_box.sorting .inner_menu_item {\n\tbackground-color:#fff\n}\n.inner_menu_box.sorting .menu_opr {\n\tdisplay:block\n}\n.inner_menu_box.gray .inner_menu.dragging dt.inner_menu_item {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_box.gray .inner_menu_item:hover,.inner_menu_box.gray .inner_menu_item.selected {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_box.gray.sorting .inner_menu_item {\n\tbackground-color:#fff\n}\n.inner_menu_box.gray.sorting .inner_menu_item.dragging {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_box.with_switch .icon_dot {\n\tposition:absolute;\n\ttop:50%;\n\tleft:25px;\n\tmargin-top:-14px;\n\t-webkit-transform:scale(0.8);\n\tfont-size:10px\n}\n.inner_menu_box.with_switch dt .inner_menu_link {\n\tpadding-left:20px\n}\n.inner_menu_box.with_switch dd .inner_menu_link {\n\tpadding-left:36px\n}\n.inner_menu {\n\tborder-top:1px solid #e7e7eb\n}\n.inner_menu:first-child {\n\tborder-top-width:0\n}\n.inner_menu .menu_opr {\n\tdisplay:none;\n\tposition:absolute;\n\ttop:0;\n\tright:1em\n}\n.inner_menu .menu_opr a {\n\tdisplay:inline-block;\n\tmargin-left:.5em;\n\tmargin-top:-0.2em\n}\n.inner_menu .menu_opr a.no_extra {\n\tmargin-left:0\n}\n.inner_menu.no_extra {\n\tborder-top-width:0\n}\n.inner_menu_item {\n\tposition:relative;\n\tline-height:32px\n}\n.inner_menu_item:hover,.inner_menu_item.selected {\n\tbackground-color:#f4f5f9\n}\n.inner_menu_item:hover .menu_opr,.inner_menu_item.selected .menu_opr {\n\tdisplay:block\n}\n.inner_menu_item:hover a,.inner_menu_item.selected a {\n\ttext-decoration:none\n}\n.inner_menu_link {\n\tdisplay:block;\n\tcolor:#222;\n\tpadding-left:1em;\n\ttext-decoration:none\n}\ndd .inner_menu_link {\n\tpadding-left:2em\n}\n.inner_menu_link strong {\n\tdisplay:inline-block;\n\tmargin-top:-2px;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tmax-width:80px;\n\tfont-weight:400;\n\tfont-style:normal;\n\tvertical-align:middle;\n\tcursor:pointer\n}\n.drag_placeholder {\n\tmargin:8px;\n\theight:80px;\n\tborder:1px solid #e7e7eb\n}\n.sub_drag_placeholder {\n\tmargin:8px;\n\theight:32px;\n\tborder:1px solid #e7e7eb\n}\n.icon_common.new {\n\tmargin-left:3px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3159px no-repeat;\n\twidth:18px;\n\theight:12px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_common.beta {\n\tmargin-top:-5px;\n\tmargin-left:3px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3178px no-repeat;\n\twidth:25px;\n\theight:12px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_dot {\n\tdisplay:inline-block;\n\tfont-weight:400;\n\tfont-style:normal;\n\tvertical-align:middle;\n\tfont-size:8px;\n\tcolor:#d5d5d5\n}\n.icon_dropdown_switch {\n\tdisplay:inline-block;\n\twidth:0;\n\theight:0;\n\tborder-width:5px;\n\tborder-style:dashed;\n\tborder-color:transparent;\n\tborder-bottom-width:0;\n\tborder-top-color:#c6c6c6;\n\tborder-top-style:solid;\n\toverflow:hidden\n}\n.icon_dropdown_switch.highlight {\n\tborder-top-color:#a0a0a0\n}\n.open .icon_dropdown_switch,.single_up .icon_dropdown_switch,.icon_dropdown_switch.single_up {\n\tborder-top-color:transparent;\n\tborder-top-style:dashed;\n\tborder-bottom-width:5px;\n\tborder-bottom-color:#c6c6c6;\n\tborder-bottom-style:solid;\n\tborder-top-width:0\n}\n.open .icon_dropdown_switch.highlight,.single_up .icon_dropdown_switch.highlight,.icon_dropdown_switch.single_up.highlight {\n\tborder-bottom-color:#a0a0a0\n}\n.icon_rank {\n\tposition:relative;\n\twidth:5px;\n\tdisplay:inline-block;\n\twidth:14px;\n\theight:14px\n}\n.icon_rank .single_up {\n\tposition:absolute;\n\ttop:1px;\n\tright:0\n}\n.icon_rank .single_down {\n\tposition:absolute;\n\ttop:7px;\n\tright:0\n}\n.icon_rank:hover .single_down {\n\tborder-top-color:#a0a0a0\n}\n.icon_rank:hover .single_up {\n\tborder-bottom-color:#a0a0a0\n}\n.icon12_del {\n\tdisplay:inline-block;\n\ttext-decoration:none;\n\tvertical-align:middle;\n\tfont-weight:400;\n\tfont-style:normal;\n\tcursor:pointer;\n\tfont-size:12px;\n\tcolor:#b3b3b3\n}\n.icon12_del:hover {\n\tcolor:#545454\n}\n.icon_card_selected {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3201px no-repeat;\n\twidth:46px;\n\theight:46px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_verify {\n\twidth:82px;\n\theight:30px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_verify.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3257px no-repeat\n}\n.icon_verify.fail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3297px no-repeat\n}\n.icon_verify_checked {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3337px no-repeat;\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block\n}\n.icon_wxverify_status {\n\tdisplay:inline-block;\n\tvertical-align:middle\n}\n.icon_wxverify_status.name_waiting {\n\twidth:86px;\n\theight:24px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3363px no-repeat\n}\n.icon_wxverify_status.file_success {\n\twidth:96px;\n\theight:24px;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3397px no-repeat\n}\n.icon_loading_small {\n\twidth:30px;\n\theight:30px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_loading_small.dark {\n\tbackground:transparent url(../img/base/icon30_loading_gray_dark1e5b3a.png) no-repeat 0 0\n}\n.icon_loading_small.light {\n\tbackground:transparent url(../img/base/icon30_loading_gray_ligth1e5b3a.png) no-repeat 0 0\n}\n.icon32_loading {\n\twidth:32px;\n\theight:32px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon32_loading.dark {\n\tbackground:transparent url(../img/base/icon32_loading_dark1e5b3a.gif) no-repeat 0 0\n}\n.icon32_loading.light {\n\tbackground:transparent url(../img/base/icon32_loading_light1e5b3a.gif) no-repeat 0 0\n}\n.icon13_common {\n\twidth:13px;\n\theight:13px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon13_common.arrow_right_gray {\n\tbackground:transparent url(../img/base/icon13_arrow_right_gray1e5b3a.png) no-repeat 0 0\n}\n.icon14_common {\n\twidth:14px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon14_common.rank_gray {\n\tcursor:pointer;\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3431px no-repeat\n}\n.icon14_common.rank_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3455px no-repeat\n}\n.single_up .icon14_common.rank_gray,.icon14_common.rank_gray.single_up {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3479px no-repeat\n}\n.single_up .icon14_common.rank_gray:hover,.icon14_common.rank_gray.single_up:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3503px no-repeat\n}\n.single_down .icon14_common.rank_gray,.icon14_common.rank_gray.single_down {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3527px no-repeat\n}\n.single_down .icon14_common.rank_gray:hover,.icon14_common.rank_gray.single_down:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3551px no-repeat\n}\n.icon14_common.add_white {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3575px no-repeat\n}\n.icon14_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3599px no-repeat\n}\n.icon14_common.add_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3623px no-repeat\n}\n.icon14_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3647px no-repeat\n}\n.icon14_common.edit_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3671px no-repeat\n}\n.icon14_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3695px no-repeat\n}\n.icon14_common.del_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3719px no-repeat\n}\n.icon14_common.sort_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3743px no-repeat\n}\n.icon14_common.sort_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3767px no-repeat\n}\n.icon14_common.add_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3791px no-repeat\n}\n.icon14_common.switch_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3815px no-repeat\n}\n.icon14_common.switch_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3839px no-repeat\n}\na:hover .icon14_common.switch_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3863px no-repeat\n}\n.icon_mini_tips {\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_mini_tips.document_link {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3887px no-repeat\n}\n.icon16_common {\n\twidth:16px;\n\theight:16px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon16_common.close {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3913px no-repeat\n}\n.icon16_common.close:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3939px no-repeat\n}\n.icon16_common.close_flat {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3965px no-repeat\n}\n.icon16_common.close_flat:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -3991px no-repeat\n}\n.icon16_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4017px no-repeat\n}\n.icon16_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4043px no-repeat\n}\n.icon16_common.enter_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4069px no-repeat\n}\n.icon16_common.enter_gray.frm_input_append {\n\tmargin-top:-8px\n}\n.icon16_common.star_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4095px no-repeat\n}\n.icon16_common.star_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4120px no-repeat\n}\n.icon16_common.star_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4146px no-repeat\n}\n.icon16_common.star_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4172px no-repeat\n}\n.icon16_common.star_orange:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4200px no-repeat\n}\n.icon16_common.woman_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4226px no-repeat\n}\n.icon16_common.man_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4252px no-repeat\n}\n.icon16_common.reply_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4278px no-repeat\n}\n.icon16_common.reply_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4304px no-repeat\n}\n.icon16_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4330px no-repeat\n}\n.icon16_common.del_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4356px no-repeat\n}\n.icon16_common.search_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4382px no-repeat\n}\n.icon16_common.sort_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4408px no-repeat\n}\n.icon16_common.sort_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4434px no-repeat\n}\n.icon16_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4460px no-repeat\n}\n.icon16_common.add_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4486px no-repeat\n}\n.icon16_common.save_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4512px no-repeat\n}\n.icon16_common.save_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4538px no-repeat\n}\n.icon18_common {\n\twidth:18px;\n\theight:18px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon18_common.woman_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4564px no-repeat\n}\n.icon18_common.man_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4592px no-repeat\n}\n.icon18_common.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4620px no-repeat\n}\n.icon18_common.add_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4648px no-repeat\n}\n.selected .icon18_common.add_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4676px no-repeat\n}\n.icon18_common.add_white {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4704px no-repeat\n}\n.icon18_common.del_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4732px no-repeat\n}\n.icon18_common.del_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4760px no-repeat\n}\n.icon18_common.del_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4788px no-repeat\n}\na:hover .icon18_common.del_gray,.icon18_common.del_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4816px no-repeat\n}\n.icon18_common.link_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4844px no-repeat\n}\n.icon18_common.link_gray:hover,.hover .icon18_common.link_gray,a:hover .icon18_common.link_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4872px no-repeat\n}\n.icon18_common.download_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4900px no-repeat\n}\n.icon18_common.download_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4928px no-repeat\n}\n.icon18_common.upload_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4956px no-repeat\n}\n.icon18_common.upload_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -4984px no-repeat\n}\n.icon18_common.download_simple_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5012px no-repeat\n}\n.icon18_common.download_simple_gray:hover,a:hover .icon18_common.download_simple_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5040px no-repeat\n}\n.icon18_common.download_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5068px no-repeat\n}\n.icon18_common.download_gray:hover,a:hover .icon18_common.download_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5096px no-repeat\n}\n.icon18_common.move_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5124px no-repeat\n}\n.icon18_common.move_gray:hover,a:hover .icon18_common.move_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5152px no-repeat\n}\n.icon18_common.reply_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5180px no-repeat\n}\n.icon18_common.reply_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5208px no-repeat\n}\n.icon18_common.star_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5236px no-repeat\n}\n.icon18_common.star_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5264px no-repeat\n}\n.icon18_common.save_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5292px no-repeat\n}\n.icon18_common.save_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5320px no-repeat\n}\n.icon18_common.edit_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5348px no-repeat\n}\n.icon18_common.edit_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5376px no-repeat\n}\n.selected .icon18_common.edit_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5404px no-repeat\n}\n.icon18_common.zoomout_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5432px no-repeat\n}\n.icon18_common.zoomout_gray:hover,a:hover .icon18_common.zoomout_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5460px no-repeat\n}\n.icon18_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5488px no-repeat\n}\n.icon18_common.edit_gray:hover,a:hover .icon18_common.edit_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5516px no-repeat\n}\n.icon18_common.star_orange {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5544px no-repeat\n}\n.icon18_common.save_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5572px no-repeat\n}\n.icon18_common.save_blue:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5600px no-repeat\n}\n.icon18_common.qrcode_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5628px no-repeat\n}\n.icon18_common.qrcode_gray:hover,a:hover .icon18_common.qrcode_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5656px no-repeat\n}\n.icon20_common {\n\twidth:20px;\n\theight:20px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon20_common.reply_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5684px no-repeat\n}\n.icon20_common.reply_gray:hover {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5714px no-repeat\n}\n.icon20_common.speaker {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5744px no-repeat\n}\n.icon21_common {\n\twidth:21px;\n\theight:21px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon21_common.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5770px no-repeat\n}\n.icon21_common.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5801px no-repeat\n}\n.icon21_common.waiting {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5832px no-repeat\n}\n.icon22_common {\n\twidth:22px;\n\theight:22px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon22_common.checked {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5863px no-repeat\n}\n.icon22_common.error {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5895px no-repeat\n}\n.icon22_common.success {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5927px no-repeat\n}\n.icon22_common.fail {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5959px no-repeat\n}\n.icon24_common {\n\twidth:24px;\n\theight:24px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon24_common.add_gray {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -5991px no-repeat\n}\n.icon28_common {\n\twidth:28px;\n\theight:28px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon28_common.upload_blue {\n\tbackground:url(\"../img/base/base_spring.png\") 0 -6025px no-repeat\n}\nbody {\n\tmin-width:1200px;\n\tbackground:#e7e8eb\n}\n\n/*主页顶部样式*/\n.main-header{height: 41px;padding:0px 0 0 20px;margin:6px -15px 20px -15px;clear:both;font-weight:400;font-size:16px;display:block;color:#5b5b5b;border-bottom:1px solid #ddd}\n\n/* 分页样式 （暂时）*/\n#page .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:12px;line-height:18px;*line-height:18px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}\n#page .btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}\n#page .btn:active,.btn.active{background-color:#cccccc \\9;}\n#page .btn:first-child{*margin-left:0;}\n#page .btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}\n#page .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}\n/*#page .btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \\9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}*/\n#page .btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \\9;background-image:none;outline:0;}\n#page .btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}\n#page .btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}\n#page .btn-group+.btn-group{margin-left:5px;}\n#page .btn-toolbar{font-size:0;margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px;}\n#page .btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n#page .btn-group>.btn+.btn{margin-left:-1px;}\n#page .btn-group>.btn,.btn-group>.dropdown-menu{font-size:12px;}\n#page .btn-group>.btn-mini{font-size:11px;}\n#page .btn-group>.btn-small{font-size:12px;}\n#page .btn-group>.btn-large{font-size:16px;}\n#page .btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:0px;-moz-border-radius-topleft:0px;border-top-left-radius:0px;-webkit-border-bottom-left-radius:0px;-moz-border-radius-bottomleft:0px;border-bottom-left-radius:0px;}\n#page .btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:0px;-moz-border-radius-topright:0px;border-top-right-radius:0px;-webkit-border-bottom-right-radius:0px;-moz-border-radius-bottomright:0px;border-bottom-right-radius:0px;}\n#page .btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:0px;-moz-border-radius-topleft:0px;border-top-left-radius:0px;-webkit-border-bottom-left-radius:0px;-moz-border-radius-bottomleft:0px;border-bottom-left-radius:0px;}\n#page .btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:0px;-moz-border-radius-topright:0px;border-top-right-radius:0px;-webkit-border-bottom-right-radius:0px;-moz-border-radius-bottomright:0px;border-bottom-right-radius:0px;}\n#page .btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}\n#page .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}\n#page .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}\n#page .btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}\n#page .btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}\n#page .btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}\n#page .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}\n#page .btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}\n#page .btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}\n#page .btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}\n#page .btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}\n#page .btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}\n#page .btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}\n#page .btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}\n#page .btn .caret{margin-top:8px;margin-left:0;}\n#page .btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;}\n#page .btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}\n#page .dropup .btn-large .caret{border-bottom-width:5px;}\n#page .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}\n#page .btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}\n#page .btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n#page .btn-group-vertical .btn+.btn{margin-left:0;margin-top:-1px;}\n#page .btn-group-vertical .btn:first-child{-webkit-border-radius:0px 0px 0 0;-moz-border-radius:0px 0px 0 0;border-radius:0px 0px 0 0;}\n#page .btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 0px 0px;-moz-border-radius:0 0 0px 0px;border-radius:0 0 0px 0px;}\n#page .btn-group-vertical .btn-large:first-child{-webkit-border-radius:0px 0px 0 0;-moz-border-radius:0px 0px 0 0;border-radius:0px 0px 0 0;}\n#page .btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 0px 0px;-moz-border-radius:0 0 0px 0px;border-radius:0 0 0px 0px;}\n\n/***************** button 样式**********************************/\n\n.btn{position:relative;display:inline-block;padding:0px 30px;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;-webkit-appearance:none;font-size:15px;font-weight:bold;text-align:center}\n.btn{color:#fff;cursor:pointer;margin-bottom:10px}\n.btn-black{background-color:#595b61}\n.btn-blue{background-color:#015991}\n.btn-red{background-color:#ee5315}\n.btn-green{background-color:#38be35}\n.btn-azure{background-color:#13b8d5}\n.btn-purple{background-color:#7b4aa9}\n.btn:hover, .btn:focus{color:#fff;text-decoration:none;outline:0}\n.btn-black:hover{background-color:#4e5055}\n.btn-blue:hover{background-color:#015083}\n.btn-red:hover{background-color:#d3470f}\n.btn-green:hover{background-color:rgba(56,190,53,.8)}\n.btn-azure:hover{background-color:rgba(19,184,213,.8)}\n.btn-purple:hover{background-color:rgba(123,74,169,.8)}\n.btn-min-w{min-width:30px}\n.btn-wxl{width:350px}\n.btn-wl{width:272px}\n.btn-wm{width:130px}\n.btn-l{padding:.7em .9em .72em;font-size:22px;font-weight:normal}\n.btn-disabled{opacity: 0.5;}\n\n\n/*增加按钮*/\n.btn.btn-white{border-width:1px; text-shadow: none !important; background-color: #FFF !important;}\n.btn.btn-bold{border-bottom-width:2px;}\n.btn.btn-round{border-bottom-width:2px; border-radius:4px !important;}\n.btn-white.btn-default{border-color:#abbac3; color:#80909a !important;}\n.btn-white.btn-info{border-color:#8fbcd9; color:#70a0c1 !important;}\n.btn-white.btn-warning{border-color:#e7b979; color:#daa458 !important;}\n.bigger-120{font-size:120% !important;}\n.blue{color:#478fca !important;}\n.orange{color:#ff892a !important;}\n.red2{color:#e08374 !important;}\n\n.btn-white.btn-default:hover,\n.btn-white.btn-default:focus,\n.btn-white.btn-default:active{background-color:#eff2f4 !important; border-color:#abbac3;}\n.btn-white.btn-default:hover{color:#6b8595 !important;}\n.btn-white.btn-info:hover,\n.btn-white.btn-info:focus,\n.btn-white.btn-info:active{background-color:#eef5fa !important; border-color:#8fbcd9;}\n.btn-white.btn-info:hover{color:#5896bf !important;}\n.btn-white.btn-warning:hover,\n.btn-white.btn-warning:focus,\n.btn-white.btn-warning:active{background-color:#fef7ec !important; border-color:#e7b979;}\n.btn-white.btn-warning:hover{color:#db9a3d !important;}\n.btn.btn-c-white{border:0 !important;}\n.btn-w-120{width:120px; height:38px; font-size:15px;}\n.btn-c-white{color:#fff !important; text-shadow:none !important;}\n\n\n/*表格样式*/\ntable{margin:0}\ntable tr th,table tr td{padding-left:15px;padding-right:15px}\n\n.table>thead>tr>th{vertical-align:top;border-bottom:1px solid #ddd}\n.table-message tr.unread{font-weight:600;background:#fffce0}\n.table-hover>tbody>tr:hover.unread>td{background:#fcf5bf}\n/*sortable theme bootstrap css*/\ntable[data-sortable]{border-collapse:collapse;border-spacing:0}\ntable[data-sortable] th{vertical-align:bottom;font-weight:bold}\ntable[data-sortable] th,table[data-sortable] td{text-align:left;padding:10px}\ntable[data-sortable] th:not([data-sortable=\"false\"]){-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;cursor:pointer}\ntable[data-sortable] th:after{content:\"\";visibility:hidden;display:inline-block;vertical-align:inherit;height:0;width:0;border-width:5px;border-style:solid;border-color:transparent;margin-right:1px;margin-left:10px;float:right}\ntable[data-sortable] th[data-sorted=\"true\"]:after{visibility:visible}\ntable[data-sortable] th[data-sorted-direction=\"descending\"]:after{border-top-color:inherit;margin-top:8px}\ntable[data-sortable] th[data-sorted-direction=\"ascending\"]:after{border-bottom-color:inherit;margin-top:3px}\ntable[data-sortable].sortable-theme-bootstrap{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background:white}\ntable[data-sortable].sortable-theme-bootstrap thead th{border-bottom:2px solid #e0e0e0}\ntable[data-sortable].sortable-theme-bootstrap tbody td{border-top:1px solid #e0e0e0}\ntable[data-sortable].sortable-theme-bootstrap th[data-sorted=\"true\"]{color:#3a87ad;background:#d9edf7;border-bottom-color:#bce8f1}\ntable[data-sortable].sortable-theme-bootstrap th[data-sorted=\"true\"][data-sorted-direction=\"descending\"]:after{border-top-color:#3a87ad}\ntable[data-sortable].sortable-theme-bootstrap th[data-sorted=\"true\"][data-sorted-direction=\"ascending\"]:after{border-bottom-color:#3a87ad}\ntable[data-sortable].sortable-theme-bootstrap.sortable-theme-bootstrap-striped tbody>tr:nth-child(odd)>td{background-color:#f9f9f9}\n\n\n\n/*表格相关样式*/\n.table-message>tbody>tr>td>a{display:block;color:#5b5b5b}\n.table-message>tbody>tr>td>a:hover{text-decoration:none}\n.data-table-toolbar{margin:15px 0}\n.data-table-toolbar span.paging-status{font-weight:bold;margin:10px 10px 0 0}\n.data-table-toolbar{margin:15px 0;padding:0 15px}\n.toolbar-btn-action{text-align:right}\n\n.box-info{position:relative;padding:15px;background:#fff;color:#5b5b5b;margin-bottom:20px}\n.box-info:hover{color:#393e48}\n.box-info:before,.box-info:after{display:table;content:\" \"}\n.box-info:after{clear:both}\n/* 无应用时提示样式 */\n.app-tip p{padding:9px 15px 15px 15px;margin:5px -15px 20px -15px;font-weight:400;font-size:16px;display:block;color:#5b5b5b;border-bottom:1px solid #ddd}\n.app-tip p.no-style{padding:0;margin:20px 0 10px 0;margin-top:20px;margin-bottom:10px;font-size:30px;border-bottom:0}\n\n/* 表格上方搜索框css  */\n.form-control{font-size:13px;border-radius:0;border-color:#ddd;}\n.form-inline .form-control {display: inline-block;width: auto;vertical-align: middle;}\n.form-control:focus{border-color:#dadada}\n\n/*多列表单*/\n.form-columns .form-group{width:100%; margin-bottom:15px;}\n.form-columns .form-group .control-label{float:left; width:15%; text-align:right; line-height:34px;font-weight: 500;}\n.form-columns .form-group .controls{float:left; width:80%; min-height: 45px; margin-left:14px;}\n.form-columns .form-group .controls input[type=\"text\"],\n.form-columns .form-group .controls input[type=\"password\"],\n.form-columns .form-group .controls select{width:270px;}\n.form-columns .form-group .controls textarea{width:50%;}\n.form-columns .form-group .controls textarea{resize:none; overflow:hidden;}\n.form-columns .form-group .required{margin-left:4px; color:#f00;}\n.form-columns .form-group .controls .required{margin-left:4px; color:#f00;}\n.form-columns .radio-inline input[type=\"radio\"],\n.form-columns .checkbox-inline input[type=\"checkbox\"]{margin-left:-16px;}\n/*表单填写行hover样式*/\n.form-group:hover > label{color:#66afe9;}\n.form-group:hover .form-control{border-color:#66afe9; outline:0; -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6); box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);}\n/* 表单错误提示信息 */\nspan.error{display:inline; margin-top:5px; color:#b94a48;}\n/*表单帮组信息*/\n.form-group .help-block {border-bottom: none;color: #AAA6A6;font-size: 14px;}\n\n/*加载中*/\n.loading{position:absolute; top:50%; left:50%; margin-top:-190px; margin-left:-254px; background:url(../img/loading.gif) no-repeat;}\n.icon-loading{display:inline-block; vertical-align:middle; width:16px; height:16px; background:url(../img/btn_loading.gif) no-repeat;}\n\n/* app 创建流程图 css*/\n.create_flow  .btn-default{background:#fff !important; color:#333 !important; border:1px solid #ccc !important;}\n.create_flow  .btn-default:hover{background:#ebebeb !important; border:1px solid #adadad !important;}\n.create_flow .easywizardsteps{list-style:none;height: 62px;overflow:hidden;margin:0;padding:0;border-bottom:1px solid #ccc;margin-bottom:20px;background:#fafafa}\n.create_flow .easywizardsteps li{font-size:18px;display:inline-block;padding:15px 20px;color:#b0b1b3;margin-right:0}\n.create_flow .easywizardsteps li span{font-size:20px;padding:2px 10px;border-radius:50%;margin-top:-5px}\n.create_flow .easywizardsteps li.current span{background:#65bd77;color:#fff}\n.create_flow .easywizardsteps li.current{color:#2c7439;background:#fff;height: 62px}\n.create_flow .easywizardbuttons li.current{color:#2c7439;background:#fff;width: 1048px;height: 62px;}\n.create_flow .easyWizardButtons{overflow:hidden;padding:10px}\n.create_flow .easywizardbuttons button,.create_flow .easywizardbuttons .submit{cursor:pointer}\n.create_flow .easywizardbuttons .prev{float:left}\n.create_flow .easywizardbuttons .next,.create_flow .easywizardbuttons .submit{float:right}\n.create_flow .notes{padding:15px;border:1px dashed #ddd}\n.create_flow section.step{padding:0 30px}\n@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){.create_flow .icheckbox_minimal-grey,.create_flow .iradio_minimal-grey{background-image:url(grey@2x.png);-webkit-background-size:200px 20px;background-size:200px 20px}\n}\n\n/*流程图 wizard css*/\n#dev-flow #fuelux-wizard{margin-top:60px}\n#dev-flow .wizard-steps{list-style:none;display:block;width:100%;padding:0;margin:12px 0 0;position:relative;left:-40px}\n#dev-flow .wizard-steps li{display:block;text-align:center;float:left;min-width:33%;max-width:33%}\n#dev-flow .wizard-steps li:before{display:block;content:\"\";width:100%;height:1px;font-size:0;overflow:hidden;border-top:3px solid #e5e8ed;position:relative;top:12px;z-index:1}\n#dev-flow .wizard-steps li:first-child:before{max-width:50%;left:50%}\n#dev-flow .wizard-steps li:last-child:before{max-width:50%;width:50%}\n#dev-flow .wizard-steps li.last-child:before{max-width:50%;width:50%}\n#dev-flow .wizard-steps li.active:before,#dev-flow .wizard-steps li.complete:before,#dev-flow .wizard-steps li.active .step,#dev-flow .wizard-steps li.complete .step{border-color:#65BD77;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#dev-flow .wizard-steps li .step{text-align:center;border:2px solid #e5e8ed;color:#d8dce6;font-size:19px;border-radius:32px;line-height:12px;padding:7px 15px;background-color:#FFF;position:relative;z-index:2;display:inline}\n#dev-flow .wizard-steps li.complete .title,#dev-flow .wizard-steps li.active .title{color:#2b3d53}\n#dev-flow .wizard-steps li .title{display:block;max-width:100%;color:#b1bcc5;font-size:16px;z-index:104;text-align:center;table-layout:fixed;word-wrap:break-word;position:relative;top:-76px;line-height:15px}\n#dev-flow .wizard-steps li .title.active{color:#F3BA41;font-weight: bold;}\n#dev-flow .wizard-steps li .step.active{background-color:#F7CB17;color:#fff;}\n#dev-flow .step-content{margin-top:40px;margin-left:60px}\n#dev-flow .step-content .step-pane{display:none;min-height:267px}\n#dev-flow .step-content .active{display:block}\n#dev-flow .form-wrapper .field-box{margin-bottom:25px;margin-left:0;float:left;width:100%}\n#dev-flow .form-wrapper .field-box:last-child{margin-bottom:0}\n#dev-flow .form-wrapper label{display:inline-block;float:left;font-weight:600;cursor:auto;font-size:12px;width:120px;text-align:left;position:relative;top:2px;color:#333;}\n#dev-flow .form-wrapper input[type=\"text\"]{width:100%}\n#dev-flow .step-content .form-wrapper input[type=\"text\"]{width:400px;}\n#dev-flow .form-wrapper.payment-info label{width:150px}\n#dev-flow .form-wrapper .alert-msg{display:block;margin-left:120px;margin-bottom:-4px;margin-top:10px}\n#dev-flow .form-wrapper .alert-msg i{font-size:14px}\n#dev-flow .form-wrapper .field-box.error label,#dev-flow .form-wrapper .field-box.error .alert-msg{color:#c73939}\n#dev-flow .form-wrapper .field-box.error input{border-color:#c73939}\n#dev-flow .form-wrapper .field-box.success label,#dev-flow .form-wrapper .field-box.success .alert-msg{color:#379e48}\n#dev-flow .form-wrapper .field-box.success input{border-color:#379e48}\n#dev-flow .wizard-actions{float:right;margin-top:30px;margin-right:130px}\n#dev-flow .wizard-actions .btn-next{margin-left:15px}\n#dev-flow .wizard-actions .btn-finish{display:none;margin-left:15px}\n#dev-flow .wizard-steps li .step.error{background-color: #D5CCCE;color:#fff;}\n#dev-flow .wizard-steps li.error .step{border-color: #F00;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#dev-flow .wizard-steps li.error:before{\n\tborder-top-color: rgb(255, 0, 0);\n}\n@media(max-width:979px){#dev-flow .step-content{margin-left:0}\n}\n@media(max-width:600px){#dev-flow .wizard-steps{left:0}\n#dev-flow .form-wrapper input[type=\"text\"]{width:200px}\n}\n\n/*提测流程*/\n#release-flow .fuelux-wizard{margin-top:60px}\n#release-flow .wizard-steps{list-style:none;display:block;width:100%;padding:0;margin:12px 0 0;position:relative;left:-40px}\n#release-flow .wizard-steps li{display:block;text-align:center;float:left;min-width:33%;max-width:33%}\n#release-flow .wizard-steps li:before{display:block;content:\"\";width:100%;height:1px;font-size:0;overflow:hidden;border-top:3px solid #e5e8ed;position:relative;top:12px;z-index:1}\n#release-flow .wizard-steps li:first-child:before{max-width:50%;left:50%}\n#release-flow .wizard-steps li:last-child:before{max-width:50%;width:50%}\n#release-flow .wizard-steps li.last-child:before{max-width:50%;width:50%}\n#release-flow .wizard-steps li.active:before,#release-flow .wizard-steps li.complete:before,#release-flow .wizard-steps li.active .step,#release-flow .wizard-steps li.complete .step{border-color:#65BD77;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#release-flow .wizard-steps li .step{text-align:center;border:2px solid #e5e8ed;color:#d8dce6;font-size:19px;border-radius:32px;line-height:12px;padding:7px 15px;background-color:#FFF;position:relative;z-index:2;display:inline}\n#release-flow .wizard-steps li.complete .title,#release-flow .wizard-steps li.active .title{color:#2b3d53}\n#release-flow .wizard-steps li .title{display:block;max-width:100%;color:#b1bcc5;font-size:16px;z-index:104;text-align:center;table-layout:fixed;word-wrap:break-word;position:relative;top:-76px;line-height:15px}\n#release-flow .wizard-steps li .title.active{color:#F3BA41;font-weight: bold;}\n#release-flow .wizard-steps li .step.active{background-color:#F7CB17;color:#fff;}\n#release-flow .step-content{margin-top:40px;margin-left:60px}\n#release-flow .step-content .step-pane{display:none;min-height:267px}\n#release-flow .step-content .active{display:block}\n#release-flow .form-wrapper .field-box{margin-bottom:25px;margin-left:0;float:left;width:100%}\n#release-flow .form-wrapper .field-box:last-child{margin-bottom:0}\n#release-flow .form-wrapper label{display:inline-block;float:left;font-weight:600;cursor:auto;font-size:12px;width:120px;text-align:left;position:relative;top:2px;color:#333;}\n#release-flow .form-wrapper input[type=\"text\"]{width:100%}\n#release-flow .step-content .form-wrapper input[type=\"text\"]{width:400px;}\n#release-flow .form-wrapper.payment-info label{width:150px}\n#release-flow .form-wrapper .alert-msg{display:block;margin-left:120px;margin-bottom:-4px;margin-top:10px}\n#release-flow .form-wrapper .alert-msg i{font-size:14px}\n#release-flow .form-wrapper .field-box.error label,#release-flow .form-wrapper .field-box.error .alert-msg{color:#c73939}\n#release-flow .form-wrapper .field-box.error input{border-color:#c73939}\n#release-flow .form-wrapper .field-box.success label,#release-flow .form-wrapper .field-box.success .alert-msg{color:#379e48}\n#release-flow .form-wrapper .field-box.success input{border-color:#379e48}\n#release-flow .wizard-actions{float:right;margin-top:30px;margin-right:130px}\n#release-flow .wizard-actions .btn-next{margin-left:15px}\n#release-flow .wizard-actions .btn-finish{display:none;margin-left:15px}\n#release-flow .wizard-steps li .step.error{background-color: #D5CCCE;color:#fff;}\n#release-flow .wizard-steps li.error .step{border-color: #F00;color:#65BD77;background-color:#f2f7fb;font-weight:bold;box-shadow:inset 0 0 1px 2px #fff}\n#release-flow .wizard-steps li.error:before{\n\tborder-top-color: rgb(255, 0, 0);\n}\n@media(max-width:979px){#release-flow .step-content{margin-left:0}\n}\n@media(max-width:600px){#release-flow .wizard-steps{left:0}\n#release-flow .form-wrapper input[type=\"text\"]{width:200px}\n}\n\n\n/*bootstrip 样式重写*/\n.alert{border-radius: 0px;}\n\n/*快样式*/\n.the-notes {\n\tpadding: 25px 25px 25px 30px;\n\tborder-left: 4px solid #909090;\n\tmargin-bottom: 20px;\n\theight: inherit;\n\tmargin-top: 20px;\n\tbackground: #f2f2f2;\n}\n\n.the-notes.success {\nborder-left-color: #65bd77;\n}\n\n\n.the-notes.warning {\nborder-left-color: #f7cb17;\n}\n\n.the-notes.danger{\nborder-left-color:#d9534f;\n}\n\n.the-notes.info{\nborder-left-color:#4393d8;\n}\n\n/*公用css*/\n/* 文本样式定义--begin\n --------------------------------*/\n.t_s20 {font-size:20px}\n.t_s19 {font-size:19px}\n.t_s18 {font-size:18px}\n.t_s17 {font-size:17px}\n.t_s16 {font-size:16px}\n.t_s15 {font-size:15px}\n.t_s14 {font-size:14px}\n.t_s13 {font-size:13px}\n.t_s12 {font-size:12px}\n.t_l {text-align:left}\n.t_c {text-align:center}\n.t_r {text-align:right}\n.t_b {font-weight:bold}\n.t_it {font-style:italic}\n.t_n {font-weight:normal}\n.t_no {text-decoration:none}\n.t_udl {text-decoration:underline}\n.t_del {text-decoration:line-through}\n.t_unbr {overflow:hidden; text-overflow:ellipsis; white-space:nowrap}\n.t_br {word-wrap:break-word; word-break:normal}\n.t_unbr_auto{ white-space:nowrap; overflow:visible;}\n.align {font-size:12px}\n.align label input {display:block}\n.align label {display:block; margin-left:20px !important; margin-left:11px; margin-top:-16px}\n/* 文本字体大小--end\n --------------------------------*/\n.t_white{color:#FFF;}\n.t_white a{color:#FFF;}\n.t_white .active a,.t_white .active a:hover{color:#555555}\n.t_blue{color:#2985c2}\n.t_red{color:#ff0000}\n.t_yellow{color:#ff9900}\n.t_succes,.t_success,.t_green{color: #468847}\n.t_error{color: #b94a48}\n.t_help{color: #c09853}\n.t_info{color: #3a87ad}\n.t_silver{color:#999999}\n\n\n/* 外边距定义--begin\n --------------------------------*/\n.mg60 {margin:60px;}\n.mg55 {margin:55px;}\n.mg50 {margin:50px;}\n.mg45 {margin:45px;}\n.mg40 {margin:40px;}\n.mg30 {margin:30px}\n.mg25 {margin:25px}\n.mg20 {margin:20px}\n.mg15 {margin:15px}\n.mg10 {margin:10px}\n.mg5 {margin:5px}\n.mg4 {margin:4px}\n.mg3 {margin:3px}\n.mg2 {margin:2px}\n.mg1 {margin:1px}\n.mg0 {margin:0}\n\n.mtb50 {margin:50px 0}\n.mtb45 {margin:45px 0}\n.mtb40 {margin:40px 0}\n.mtb35 {margin:35px 0}\n.mtb30 {margin:30px 0}\n.mtb25 {margin:25px 0}\n.mtb20 {margin:20px 0}\n.mtb15 {margin:15px 0}\n.mtb10 {margin:10px 0}\n.mtb5 {margin:5px 0}\n.mtb4 {margin:4px 0}\n.mtb3 {margin:3px 0}\n.mtb2 {margin:2px 0}\n.mtb1 {margin:1px 0}\n\n.mtr {margin:-2px 15px 0 0}\n.mlr60 {margin:0 60px}\n.mlr55 {margin:0 55px}\n.mlr50 {margin:0 50px}\n.mlr45 {margin:0 45px}\n.mlr40 {margin:0 40px}\n.mlr35 {margin:0 35px}\n.mlr30 {margin:0 30px}\n.mlr25 {margin:0 25px}\n.mlr20 {margin:0 20px}\n.mlr15 {margin:0 15px}\n.mlr10 {margin:0 10px}\n.mlr5 {margin:0 5px}\n.mlr4 {margin:0 4px}\n.mlr3 {margin:0 3px}\n.mlr2 {margin:0 2px}\n.mlr1 {margin:0 1px}\n\n.mt55 {margin-top:55px; *padding-top:55px}\n.mt50 {margin-top:50px}\n.mt40 {margin-top:40px; *padding-top:40px}\n.mt36 {margin-top:36px; *padding-top:36px}\n.mt35 {margin-top:35px}\n.mt30 {margin-top:30px}\n.mt25 {margin-top:25px}\n.mt20 {margin-top:20px}\n.mt15 {margin-top:15px}\n.mt10 {margin-top:10px}\n.mt5 {margin-top:5px}\n.mt4 {margin-top:4px}\n.mt3{margin-top:3px}\n.mt2{margin-top:2px}\n.mt1{margin-top:1px}\n.mt0 {margin-top:0}\n\n.mr50 {margin-right:50px}\n.mr45 {margin-right:45px}\n.mr40 {margin-right:40px}\n.mr35 {margin-right:35px}\n.mr30 {margin-right:30px}\n.mr25 {margin-right:25px}\n.mr20 {margin-right:20px}\n.mr15 {margin-right:15px}\n.mr10 {margin-right:10px}\n.mr5 {margin-right:5px}\n.mr4 {margin-right:4px}\n.mr3 {margin-right:3px}\n.mr2 {margin-right:2px}\n.mr1 {margin-right:1px}\n.mr0 {margin-right:0}\n\n.mb50 {margin-bottom:50px}\n.mb45 {margin-bottom:45px}\n.mb40 {margin-bottom:40px}\n.mb35 {margin-bottom:35px}\n.mb30 {margin-bottom:30px}\n.mb25 {margin-bottom:25px}\n.mb20 {margin-bottom:20px}\n.mb15 {margin-bottom:15px}\n.mb10 {margin-bottom:10px}\n.mb5 {margin-bottom:5px}\n.mb4 {margin-bottom:4px}\n.mb3 {margin-bottom:3px}\n.mb2 {margin-bottom:2px}\n.mb1 {margin-bottom:1px}\n.mb0 {margin-bottom:0}\n\n.ml50 {margin-left:50px}\n.ml45 {margin-left:45px}\n.ml40 {margin-left:40px}\n.ml35 {margin-left:35px}\n.ml30 {margin-left:30px}\n.ml25 {margin-left:25px}\n.ml20 {margin-left:20px}\n.ml15 {margin-left:15px}\n.ml10 {margin-left:10px}\n.ml5 {margin-left:5px}\n.ml4 {margin-left:4px}\n.ml3 {margin-left:3px}\n.ml2 {margin-left:2px}\n.ml1 {margin-left:1px}\n.ml0 {margin-left:0px}\n\n.m_t4 {margin-top:-4px}\n.m_l14{margin-left:-14px}\n.m_c {margin:0 auto; width:600px}\n.m_c50 {margin:0 auto; width:50%}\n.mlr_auto {margin:0 auto}\n.mr_nav {margin-top:-37px; margin-right:10px}\n/* 外边距定义--end\n --------------------------------*/\n.cursor_point{cursor:pointer}\n.cursor_default{cursor:default}\n/* 内边距定义--begin\n --------------------------------*/\n.pg60 {padding:60px}\n.pg55 {padding:55px}\n.pg50 {padding:50px}\n.pg45 {padding:45px}\n.pg40 {padding:40px}\n.pg35 {padding:35px}\n.pg30 {padding:30px}\n.pg25 {padding:25px}\n.pg20 {padding:20px}\n.pg15 {padding:15px}\n.pg10 {padding:10px}\n.pg5 {padding:5px}\n.pg4 {padding:4px}\n.pg3 {padding:3px}\n.pg2 {padding:2px}\n.pg1 {padding:1px}\n.pg0 {padding:0px}\n\n.ptb60 {padding:60px 0}\n.ptb55 {padding:55px 0}\n.ptb50 {padding:50px 0}\n.ptb45 {padding:45px 0}\n.ptb40 {padding:40px 0}\n.ptb35 {padding:35px 0}\n.ptb30 {padding:30px 0}\n.ptb25 {padding:25px 0}\n.ptb20 {padding:20px 0}\n.ptb15 {padding:15px 0}\n.ptb10 {padding:10px 0}\n.ptb5 {padding:5px 0}\n.ptb4 {padding:4px 0}\n.ptb3 {padding:3px 0}\n.ptb2 {padding:2px 0}\n.ptb1 {padding:1px 0}\n\n.plr60 {padding:0 60px}\n.plr55 {padding:0 55px}\n.plr50 {padding:0 50px}\n.plr45 {padding:0 45px}\n.plr40 {padding:0 40px}\n.plr35 {padding:0 35px}\n.plr30 {padding:0 30px}\n.plr25 {padding:0 25px}\n.plr20 {padding:0 20px}\n.plr15 {padding:0 15px}\n.plr10 {padding:0 10px}\n.plr5 {padding:0 5px}\n.plr4 {padding:0 4px}\n.plr3 {padding:0 3px}\n.plr2 {padding:0 2px}\n.plr1 {padding:0 1px}\n\n.pt60{padding-top:60px}\n.pt55{padding-top:55px}\n.pt50{padding-top:50px}\n.pt45{padding-top:45px}\n.pt40{padding-top:40px}\n.pt35 {padding-top:35px}\n.pt25 {padding-top:25px}\n.pt20 {padding-top:20px}\n.pt15 {padding-top:15px}\n.pt10 {padding-top:10px}\n.pt5 {padding-top:5px}\n.pt4 {padding-top:4px}\n.pt3 {padding-top:3px}\n.pt2 {padding-top:2px}\n.pt1 {padding-top:1px}\n.pt0 {padding-top:0}\n\n.pr60 {padding-right:60px}\n.pr55 {padding-right:55px}\n.pr50 {padding-right:50px}\n.pr45 {padding-right:45px}\n.pr40 {padding-right:40px}\n.pr35 {padding-right:35px}\n.pr30 {padding-right:30px}\n.pr25 {padding-right:25px}\n.pr20 {padding-right:20px}\n.pr15 {padding-right:15px}\n.pr10 {padding-right:10px}\n.pr5 {padding-right:5px}\n.pr4 {padding-right:5px}\n.pr3 {padding-right:5px}\n.pr2 {padding-right:5px}\n.pr1 {padding-right:1px}\n.pr0 {padding-right:0px}\n\n.pb60 {padding-bottom:60px}\n.pb55 {padding-bottom:55px}\n.pb50 {padding-bottom:50px}\n.pb45 {padding-bottom:45px}\n.pb40 {padding-bottom:40px}\n.pb35 {padding-bottom:35px}\n.pb30 {padding-bottom:30px}\n.pb25 {padding-bottom:25px}\n.pb20 {padding-bottom:20px}\n.pb15 {padding-bottom:15px}\n.pb10 {padding-bottom:10px}\n.pb5 {padding-bottom:5px}\n.pb4 {padding-bottom:4px}\n.pb3 {padding-bottom:3px}\n.pb2 {padding-bottom:2px}\n.pb1 {padding-bottom:1px}\n.pb0 {padding-bottom:0px}\n\n.pl60 {padding-left:60px}\n.pl55 {padding-left:55px}\n.pl50 {padding-left:50px}\n.pl45 {padding-left:45px}\n.pl40 {padding-left:40px}\n.pt37 {padding-top:36px}\n.pl35 {padding-left:35px}\n.pt30 {padding-top:30px}\n.pl25 {padding-left:25px}\n.pl20 {padding-left:20px}\n.pl15 {padding-left:15px}\n.pl10 {padding-left:10px}\n.pl5 {padding-left:5px}\n.pl4 {padding-left:4px}\n.pl3 {padding-left:3px}\n.pl2 {padding-left:2px}\n.pl1 {padding-left:1px}\n.pl0 {padding-left:0px}\n.p_all {padding:5px 15px}\n/* 内边距定义--end\n --------------------------------*/\n\n/* 浮动元素--begin\n --------------------------------*/\n .f_r {float:right}\n .f_l {float:left}\n .f_no {float:none}\n .f_l10 {float:left; width:10%}\n .f_l90 {float:left; width:90%}\n/* 浮动元素--end\n --------------------------------*/\n\n/* 清楚浮动--begin\n --------------------------------*/\n .c_r {clear:right}\n .c_l {clear:left}\n .c_b {clear:both}\n\n.icon-loading {\ndisplay: inline-block;\nvertical-align: middle;\nwidth: 16px;\nheight: 16px;\nbackground: url(../bootstrap3.1.1/img/btn_loading.gif) no-repeat;\n}\n\na:hover{text-decoration: none;}\n\n\n/*.arrow {\n\tcolor:#ff5c03;\n\tfont-size:13px;\n\tmargin-right:2px;\n\tdisplay:inline-block;\n\tposition:absolute;\n\ttop:16px;\n\tright:20px;\n\twidth:0;\n\theight:0;\n\tborder-style:solid;\n\tborder-width:4px;\n\tborder-color:#c2c0be #fff #fff\n}\na:hover .arrow {\n\ttop:16px;\n\tborder-color:#c2c0be #f4f5f9 #f4f5f9\n}\n.uparrow {\n\tborder-color:#fff #fff #c2c0be;\n\ttop:12px;\n}\na:hover .uparrow {\n\ttop:12px;\n\tborder-color:#f4f5f9 #f4f5f9 #c2c0be;\n}\n.none {\n\tdisplay:none;\n}*/\n\n/*提示信息图标*/\n.intro dt .ico_intro {\n\tbackground: url(\"../img/base/page_service_package_intro_z21b651.png\") 0 0 no-repeat;\n}\n.intro dt .ico {\n\twidth: 16px;\n\theight: 16px;\n\tdisplay: inline-block;\n\tmargin: 6px 8px 0 0;\n}\n\n.intro:first-child {\nborder-top-width: 0;\n}\n.intro {\npadding: 0 60px;\nborder: 0;\nmargin-top: 40px;\n}\n.intro dt h3 {\ndisplay: inline-block;\nheight: 26px;\nline-height: 26px;\nvertical-align: top;\nfont-size: 14px;\nfont-weight: normal;\n}\n.intro dd {\npadding-left: 24px;\nmargin: 0;\nfont-size: 14px;\nline-height: 1.8em;\ncolor: #8d8d8d;\n}\n\n/*返回顶部*/\n.return_btn{\n\toutline: none;\n\tposition: fixed;\n\tleft: 10px;\n\tbottom: 155px;\n    text-align: center;\n    line-height: 44px;\n    color: #fff;\n    display: block;\n    height: 44px;\n    z-index: 2;\n    width: 44px;\n    cursor: pointer;\n    /*text-indent: -99999px;*/\n    /*background: rgba(0,0,0,.4) url(../img/return_top.png) no-repeat center center;*/\n    background: #ccc;\n    /*background: rgba(0,0,0,.4);*/\n}\n\n.return_btn:hover{\n\tbackground-color: rgba(0,0,0,.7);\n}\n\n.return_top{\n\tbottom: 155px;\n}\n.return_bottom{\n\tbottom: 110px;\n}\n\n/*new_fun_icon*/\n.new_fun_icon{\n\tdisplay: inline-block;\n\twidth: 17px;\n\theight: 9px;\n\tbackground: url(../img/new.png) no-repeat;\n\tmargin-left: 6px;\n}\n.new_fun_dot{\n\tdisplay: inline-block;\n\twidth: 11px;\n\theight: 11px;\n\tbackground: url(../img/icon_dots.png) no-repeat;\n\tmargin-left: 6px;\n}\n/* base app css*/\n.app_name{width: 135px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;padding-left:10px;line-height: 27px;}\n.back:hover{color:#85C3FF!important }\n.col_main {padding-bottom:40px;}\n#pro-test a{color: #459ae9;text-decoration: none;padding:0;}\n#pro-test a:hover, #pro-test a:focus {color: #2a6496;}\n\n/*服务状态*/\n.service_table th{\n\tbackground: #f7f7f7;\n}\n.service_table td{\n\ttext-align: left;\n\tcolor: #666;\n\tvertical-align: middle;\n\tpadding: 12px 8px !important;\n\tline-height: 30px !important;\n}\n.service_icon{\n\twidth: 30px;\n\theight: 30px;\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tvertical-align: middle;\n}\n.service_icon img{\n\twidth: 30px;\n}\n.service_status{\n\twidth: 12px;\n\theight: 12px;\n\tdisplay: inline-block;\n\tmargin-right: 5px;\n\tvertical-align: middle;\n\tborder-radius: 50%;\n}\n.service_status.running{\n\tbackground: #44b549;\n}\n.service_status.stop{\n\tbackground: red;\n}\n.service_status.disabled{\n\tbackground: #ccc;\n}\n.btn.service_btn{\n\tpadding: 0 !important;\n\twidth: 50px;\n\tborder-radius: 20px;\n}\n.btn.service_btn.primary{\n\tbackground: #13b8d5;\n}\n.btn.service_btn.info{\n\tbackground: #fff;\n\tcolor: #555;\n\tborder: 1px solid #ddd;\n}\n.btn.service_btn.set{\n\tbackground: #44b549;\n}\n.btn.service_btn.unset{\n\tbackground: #df5a5a ;\n}\n\n\n/*资源下载样式*/\n.mr10{\n  margin-right: 10px;\n}\n.f18{\n  font-size: 18px;\n}\n.f23{\n    font-size:23px;\n}\n.download-list{\n  overflow: hidden;\n  margin-left: 6px;\n}\n.download-version {\n    margin-right: 10px;\n}\n.download-item{\n  float: left;\n  width: 302px;\n  height: 140px;\n  border: 1px solid #ddd;\n  margin: 0 20px 20px 0;\n}\n.download-item:nth-child(3n){\n  margin-right: 0;\n}\n.download-logo{\n  float: left;\n  width: 90px;\n  line-height: 138px;\n  text-align: center;\n}\n.download-logo img{\n  max-width: 58px;\n}\n\n.download-detail{\n  margin: 30px 0 0 90px;\n}\n.download-title{\n  font-size: 14px;\n  color: #333;\n  margin-bottom: 10px;\n}\n.download-metadata{\n  font-size: 12px;\n  color: #666;\n  margin-bottom: 15px;\n}\n.download-btn{\n  width: 90px;\n  height: 30px;\n  line-height: 28px;\n    display: inline-block;\n    outline: none;\n    cursor: pointer;\n    text-align: center;\n    vertical-align: middle;\n    font-size: 12px;\n    background: #5c90d2;\n    border: 1px solid #3675c5;\n    color: #fff;\n    border-radius: 2px;\n    float:left;\n}\na.doc-url-btn{\n    margin-left:15px;\n    float:left;\n    margin-top:6px\n}\n.download-btn:hover{\n  color: #fff;\n  background: #4A7FC1;\n}\n.download-btn:focus{\n    text-decoration:none\n}\n\n\n/* IE和Firefox中div定位样式 */\n.top_left {max-width:400px; top:0; left:0; position:fixed; z-index:9999}\n.top_right {max-width:400px; top:0; right:0; position:fixed; z-index:9999}\n.bottom_left {max-width:400px; bottom:0; left:0; position:fixed; z-index:9999}\n.bottom_right {max-width:400px; bottom:0; right:0; position:fixed; z-index:9999}\n.top_center {max-width:400px; top:0; left:50%; position:fixed; margin-left:-150px; z-index:9999}\n.bottom_center {max-width:400px; bottom:0; left:50%; position:fixed; margin-left:-150px; z-index:9999}\n.label{border-radius: 0px;}\n\n/*图标 icon*/\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline-block;\n  width: 14px;\n  height: 14px;\n  *margin-right: .3em;\n  line-height: 14px;\n  vertical-align: text-top;\n  background-image: url(\"../img/glyphicons-halflings.png\");\n  background-position: 14px 14px;\n  background-repeat: no-repeat;\n}\n\n[class^=\"icon-\"]:last-child,\n[class*=\" icon-\"]:last-child {\n  *margin-left: 0;\n}\n/*===================================================*\\\n * 异常页面的样式\n\\*===================================================*/\n.king-errorpage-middle {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  margin-top: -185px;\n  margin-left: -268px;\n}\n.king-errorpage-middle .king-exception-box img {\n  vertical-align: middle;\n  display: inherit;\n  margin: 0 auto;\n}\n.king-errorpage-middle .king-exception-box h1 {\n  font-weight: normal;\n  line-height: 1.1;\n  font-size: 28px;\n  margin: 26px 0;\n  color: #2b2c2d;\n}\n.king-errorpage-middle .king-exception-box p {\n  font-size: 16px;\n  color: #505152;\n}\n.king-errorpage-middle .king-exception-box .king-403-btn1, .king-errorpage-middle .king-exception-box .king-403-btn2 {\n  font-size: 14px;\n}\n.king-errorpage-middle .king-exception-box .king-403-btn2 {\n  background: #5CB85C;\n}\n.king-errorpage-middle .king-exception-box .king-login-back {\n  font-size: 12px;\n}\n.king-errorpage-middle .king-exception-box .king-login-back span {\n  color: #5d9cec;\n}\n.king-errorpage-middle .king-exception-box .king-login-back a {\n  padding: 3px 10px;\n  font-size: 14px;\n}\n\n.king-500-page, .king-401-page, .king-login-page, .king-403-page {\n  width: 536px;\n  text-align: center;\n  margin: auto;\n  font-family: STHeiti, \"微软雅黑\", Arial;\n}\n\n.king-login-fail {\n  width: 536px;\n  height: 300px;\n  text-align: center;\n  margin: auto;\n}\n.king-login-fail .login-tip {\n  margin-top: 20px;\n  font-size: 14px;\n}\n.king-login-fail .login-tip a {\n  font-size: 14px;\n  margin-left: 10px;\n}\n\n.king-500-page1 {\n  font-family: STHeiti, \"微软雅黑\", Arial;\n  color: #616161;\n}\n.king-500-page1 .error-number {\n  font-size: 100px;\n}\n.king-500-page1 .error-title {\n  font-size: 14px;\n  font-weight: bold;\n  margin: 15px 0;\n}\n.king-500-page1 .error-tip {\n  font-size: 12px;\n}\n.king-500-page1 .error-tip a {\n  color: #616161;\n  display: inline;\n  background: none;\n  padding: 0;\n  margin: 0;\n  font-size: 12px;\n}\n\n.JColResizer.table th, .JColResizer.table td {\n  overflow: hidden;\n  padding-left: 8px !important;\n  padding-right: 8px !important;\n}\n\n.JCLRgripDrag {\n  border: 0 !important;\n}\n/*IE 10 */\n.dev_env_table select[disabled]::-ms-expand{\n    display: none;\n}\n.dev_env_table select[disabled]{\n    /* Chrome */\n    -webkit-appearance: none;\n    /* Firefox */\n    -moz-appearance: none;\n    text-indent: 0.01px;\n    text-overflow: ' '; /* space */\n}\n\n/* 服务器信息页面样式 */\n.dev_center_wrap{padding: 30px}\n.dev_center_module{margin-bottom: 30px;}\n.dev_center_module .dev_module_title{padding-bottom: 15px; border-bottom: 1px solid #ddd; margin-bottom: 15px;}\n.dev_center_module .table th{background: #fafafa;}\n.dev_center_module .table td{text-align: left; font-size: 12px; color: #333; vertical-align: middle; padding: 10px;}\n.env_introduce_box{margin: 0;  vertical-align: middle; font-size: 13px; line-height: 28px; color: #666; background: none; white-space: pre-wrap; word-wrap: break-word; white-space : normal ;  border-radius: 0; border-top: 0; display: block;}\n.env_introduce_box p:before{content: ' '; width:3px; border-radius: 50%; height: 3px; margin-right: 7px; display: inline-block; background: #999; vertical-align: middle;}\n.dev_env_table .env_useage{display: none;}\n.dev_env_opera{ font-size: 16px; margin-right: 12px; vertical-align: middle; color: #44b549;}\n.dev_env_table input{display: inline-block; color: #333 !important;  height: 32px; box-shadow: none; transition: none; padding:3px;}\n.dev_env_table input:focus{border-color: #5bc0de; box-shadow: none;}\n.dev_env_table button{border: none; margin-right:5px; border-radius: 0; padding: 5px 10px; display: none;}\n.dev_env_table input[disabled]{background: none; border: 1px solid #fff;  color: #333 !important;  box-shadow: none; cursor: default;}\n.dev_env_table select[disabled]{background: none; border: 1px solid #fff;  color: #333 !important;  box-shadow: none; cursor: default;}\n.dev_env_table .env_edit_status button{display: inline-block;}\n.dev_env_table .env_edit_status .dev_env_opera{display: none;}\n.dev_env_table .env_edit_status td{background: #fafafa;}\n.dev_center_module .env_add_btn,.dev_center_module .env_check_btn{ border-radius: 0; display: inline-block !important; font-size: 12px; padding: 0; height: 28px; line-height: 20px; padding: 4px 10px; margin: 0 0 0 15px; float: right; border: none;}\n.dev_center_module .glyphicon{margin-right: 3px;}\n.dev_center_module .glyphicon-saved{color: #FFB83A}\n.dev_env_table{margin-bottom: 0;}\n.dev_env_table .env_key_box{position: relative;}\n.dev_env_table .env_prefix{position: absolute; left: 3px; top: 8px;}\n.dev_env_table .env_key{padding-left: 48px;}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/guide_newbie.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n@charset \"utf-8\";\n\n.main-nav{margin:0 -15px;padding:15px 0 20px 0;border-bottom:1px solid #ddd}\n.king-bg-blue{background-color: #62a8ea !important;}\n\n/*===================================================*\n * 步骤流程\n\\*===================================================*/\n.king-pearls{margin-bottom:22px;}\n.king-pearls.row{display:block;margin: 0 -60px;}\n.king-pearl{position:relative;float:left;width:20%;padding:0;margin:0;text-align:center;}\n.king-pearl:after,.king-pearl:before{position:absolute;top:17px;z-index:0;width:50%;height:2px;content:\"\";background-color:#62a8ea;}\n.king-pearl:before{left:0}\n.king-pearl:after{right:0}\n.king-pearl:first-child:before,\n.king-pearl:last-child:after{display:none!important}\n.king-pearl-icon,\n.king-pearl-number{position:relative;z-index:1;display:inline-block;width:36px;height:36px;line-height:30px;color:#62a8ea;text-align:center;background:#fff;border-radius:50%;border:3px solid #62a8ea}\n.king-pearl-number{font-size:18px}\n.king-pearl-icon{font-size:18px}\n.king-pearl-title{margin:.5em auto;display:block;width:80px;font-size:14px;color:#526069;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;word-wrap:normal;white-space:nowrap}\n\n/*===================================================*\\\n * 时间轴 timeline\n\\*===================================================*/\n.king-timeline{position:relative;margin:33px 0;padding:0 18px;list-style:none;}\n.king-timeline:before{content:'';position:absolute;top:0px;bottom:0;width:4px;background:#ddd;left:34px;margin:0;border-radius:2px;}\n.king-timeline > li{position:relative;margin-bottom:15px;}\n.king-timeline > li:before,.king-timeline > li:after{content:\" \";display:table;}\n.king-timeline > li:after{clear:both;}\n.king-timeline > li > .king-timeline-header{position: relative;cursor: pointer;}\n.king-timeline > li > .king-timeline-header .bk-icon{\n\tfont-size: 8px;\n\twidth: auto;height: auto;\n\tposition: absolute;top: 10px;right: 10px;margin: 0px;\n\t-webkit-transition: all .5s ease-in-out 0s;\n\t-o-transition: all .5s ease-in-out 0s;\n\t-moz-transition: all .5s ease-in-out 0s;\n\ttransition: all .5s ease-in-out 0s;\n\ttransform: scale(0.8,0.8);\n}\n.king-timeline > li > .king-timeline-header .fa{\n\twidth: auto;height: auto;\n\tposition: absolute;top: 10px;right: 10px;margin: 0px;\n\t-webkit-transition: all .5s ease-in-out 0s;\n\t-o-transition: all .5s ease-in-out 0s;\n\t-moz-transition: all .5s ease-in-out 0s;\n\ttransition: all .5s ease-in-out 0s;\n}\n.king-timeline > li > .king-timeline-item{margin-top:15px;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative;}\n.king-timeline > li > .king-timeline-item p{margin: 0px;padding:0px;line-height: 28px;font-size: 14px;border: none;}\n.king-timeline > li > .king-timeline-item img{margin: 15px 0;}\n.king-timeline > li > .king-timeline-item .red{color: red;}\n.king-timeline > li > .king-timeline-item > .time{color:#999;float:right;padding:10px;font-size:12px;}\n.king-timeline > li > .king-timeline-item > .king-timeline-header{margin:0;color:#555;border-bottom:1px solid #eee;padding:10px;font-size:14px;line-height:1.1;}\n.king-timeline > li > .king-timeline-item > .king-timeline-header > a{font-weight:600;}\n.king-timeline > li > .king-timeline-item > .king-timeline-body,\n.king-timeline > li > .king-timeline-item > .king-timeline-footer{padding:15px 15px 30px 5px;}\n.king-timeline > li .king-timeline-header{height:36px;line-height: 36px;border-bottom: 1px solid #ddd;font-size: 16px;font-weight: 400;color: #666;}\n.king-timeline > li .king-timeline-header > span.num{display:inline-block;width: 36px;height: 36px;margin-right:14px;background-color:#fff;border-radius:4px;color:#fff;border-radius:0;font-weight:normal;text-align: center;line-height: 36px;font-weight:600;}\n.king-timeline > li > .bk-icon,\n.king-timeline > li > .fa,\n.king-timeline > li > .glyphicon,\n.king-timeline > li > .ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#fff;background:#d2d6de;border-radius:50%;text-align:center;left:3px;top:0;}\n\n.king-timeline > li.open > .king-timeline-header .bk-icon,\n.king-timeline > li.open > .king-timeline-header .fa{\n\t-webkit-transform:rotate(-180deg);\n\t-moz-transform:rotate(-180deg);\n\t-o-transform:rotate(-180deg);\n\t-ms-transform:rotate(-180deg);\n\ttransform:rotate(-180deg) scale(0.8,0.8);\n}\n\n.guide-list li, .guide-list span{margin-left: 20px;list-style-type:decimal;line-height: 28px;color: #666666;}\n.guide-list ul li{margin-left: 20px;list-style-type: lower-roman;}\n.guide-list .three-list{margin-bottom: 20px;}\n\n.tab-navs-cont{padding: 0 15px;}\n\n.faq-list:before{background: transparent;}\n.faq-list > li > .king-timeline-item{margin-left: 46px;}\n.faq-list > li > .king-timeline-item dt{position: relative;margin-bottom:15px;font-size: 14px;font-weight: 400;color: #333;}\n/*.faq-list > li > .king-timeline-item dt.question:before{content:\"\\e085\";position: absolute;top: 50%;left: -20px;margin-top:-10px;font-family: 'Glyphicons Halflings';color: #999;}*/\n.faq-list > li > .king-timeline-item dd{margin-bottom: 25px;color: #787878;}\n.faq-list > li > .king-timeline-item dd p{margin-top: 15px;color: #787878;}\n.faq-list > li > .king-timeline-item dd .tit{color: #999;}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/layout_head.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.head .inner {\n\t*zoom:1;\n\theight:60px\n}\n.head .inner:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.head .inner.wrp {\n\twidth:1200px;\n\tmargin-left:auto;\n\tmargin-right:auto\n}\n.head_box {\n\tposition:relative;\n\tbackground-color:#fff;\n\tborder-top:4px solid #44b549;\n\tborder-bottom:1px solid #d9dadc\n}\n.icon_subscribe_label {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 0 no-repeat;\n\twidth:38px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_service_label {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -24px no-repeat;\n\twidth:38px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_verify_label {\n\twidth:37px;\n\theight:14px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_verify_label.fail {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -48px no-repeat\n}\n.icon_verify_label.success {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -72px no-repeat\n}\n.icon_inbox {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -96px no-repeat;\n\twidth:20px;\n\theight:15px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.icon_dot_notices {\n\tbackground:url(\"../img/layout_head/layout_head_z213560.png\") 0 -121px no-repeat;\n\twidth:10px;\n\theight:10px;\n\tvertical-align:middle;\n\tdisplay:inline-block;\n\tline-height:100px;\n\toverflow:hidden\n}\n.account {\n\tfloat:right;\n\tpadding-top:10px\n}\n.account_meta {\n\tdisplay:inline-block;\n\t*display:inline;\n\t*zoom:1;\n\tvertical-align:bottom\n}\n.account_faq {\n\tpadding-top:18px\n}\n.account {\n\tfont-size:0\n}\n.account_meta {\n\tfont-size:14px\n}\n.account_meta_primary a {\n\tcolor:#222\n}\n.account_meta_primary a:hover {\n\tcolor:#459ae9\n}\n.account_info {\n\tposition:relative;\n\tmargin-right:8px;\n}\n.account_info .avatar {\n\twidth:38px;\n\theight:38px;\n\tbackground-color:#f0f0f0;\n\tborder-radius: 50%;\n}\n.account_info .type_wrp {\n\tposition:absolute;\n\ttop:2px;\n\tleft:0\n}\n.account_info .type_wrp .type {\n\tvertical-align:top\n}\n.account_info .nickname {\n\tdisplay:inline-block;\n\tfont-weight:400;\n\tfont-style:normal;\n\tmargin-top:6px;\n\tfloat: right;\n\tmargin-left: 5px;\n\tcolor: #555;\n}\n.account_info .crown {\n    position: absolute;\n    width: 12px;\n    height: 11px;\n    display: inline-block;\n    background: url(../img/crown.png);\n    top: -5px;\n    left: 23px;\n}\n.account_inbox {\n\tposition:relative;\n\tfont-size:11px;\n\tz-index:1;\n\ttop:2px\n}\n.account_inbox .icon_inbox {\n\tmargin-left:3px\n}\n.account_inbox .icon_dot_notices {\n\tmargin-top:-14px;\n\tmargin-left:-10px;\n\t*margin-top:-11px\n}\n.account_inbox.on .account_inbox_switch {\n\tposition:relative;\n\tz-index:1;\n\tborder-color:#d9dadc;\n\tbackground-color:#fff\n}\n.account_inbox_switch {\n\tdisplay:block;\n\twidth:35px;\n\theight:28px;\n\tline-height:28px;\n\ttext-align:center;\n\tborder:1px solid transparent;\n\tborder-bottom-width:0\n}\n.account_inbox_switch:hover {\n\ttext-decoration:none\n}\n.account_inbox_switch i.icon_common {\n\tcursor:pointer;\n\tvertical-align:top;\n\tmargin-top:16px\n}\n.account_inbox_switch i.inbox {\n\t*margin-top:6px\n}\n.account_inbox_switch i.notices {\n\t*margin-top:6px;\n\tmargin-left:-12px\n}\n.account_message_box {\n\tposition:absolute;\n\ttop:100%;\n\tright:0;\n\tmargin-top:-1px;\n\tpadding:16px 0;\n\tborder:1px solid #d9dadc;\n\tbackground-color:#fff\n}\n.account_message_box ul {\n\twidth:190px\n}\n.account_message_box li {\n\tmin-height:32px\n}\n.account_message_link {\n\tposition:relative;\n\tdisplay:block;\n\tline-height:32px;\n\tpadding-left:18px\n}\n.account_message_link strong {\n\tdisplay:block;\n\twidth:auto;\n\toverflow:hidden;\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\tword-wrap:normal;\n\tmargin-right:18px;\n\tfont-weight:400;\n\tfont-style:normal;\n\tcursor:pointer\n}\n.account_message_link .read_more {\n\tposition:absolute;\n\tright:1em;\n\ttop:0;\n\tcolor:#459ae9;\n\tcursor:pointer\n}\n.account_message_link:hover {\n\tbackground-color:#eee;\n\ttext-decoration:none\n}\n.account .account_message_link {\n\tcolor:#8d8d8d\n}\n.btn.btn_inbox_closed {\n\tdisplay:block;\n\tmargin:10px 18px 0;\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\twidth:auto;\n\tpadding-left:0;\n\tpadding-right:0;\n\tfont-size:11px\n}\n.btn.btn_inbox_closed button {\n\tcolor:#222\n}\n.btn.btn_inbox_closed:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.btn.btn_inbox_closed:hover button {\n\tcolor:#222\n}\n.btn.btn_inbox_closed:hover {\n\tcolor:#222\n}\n.account_logout{\n\tfloat: right;\n}\n.account_logout a {\n\tdisplay:inline-block;\n\tmargin-left:5px;\n\tpadding-left:14px;\n\tline-height:16px;\n\tmargin-top:10px;\n\tpadding-left:14px;\n\tborder-left:1px solid #e7e7eb\n}\n.account_faq a {\n\tdisplay:inline-block\n}\n.logo_qcloud, .logo_tencent, .logo_bk{\n\tfloat:left;\n\tpadding-top:10px;\n}\n\n/*qcloud*/\n.logo_qcloud a {\n\tdisplay:block;\n\twidth: 378px;\n\theight:40px;\n\toverflow:hidden;\n\ttext-decoration:none;\n\t*background:transparent url(\"../img/logo/bg_logo.png\") 0 0 no-repeat;\n\t*line-height:120px\n}\n.logo_qcloud a:before {\n\tdisplay:inline-block;\n\tcontent:url(\"../img/logo/bg_logo.png\")\n}\n\n/*tencent*/\n\n.logo_tencent a {\n\tdisplay:block;\n\twidth:278px;\n\theight:40px;\n\toverflow:hidden;\n\ttext-decoration:none;\n\t*background:transparent url(\"../img/logo/bg_logo.png\") 0 0 no-repeat;\n\t*line-height:120px\n}\n.logo_tencent a:before {\n\tdisplay:inline-block;\n\tcontent:url(\"../img/logo/bg_logo.png\")\n}\n\n/*消息提示*/\n.head_notice_box{\n\tdisplay: inline-block;\n\twidth: 60px;\n\tfont-size: 18px;\n\tcolor: #555;\n\ttext-align: center;\n\tposition: relative;\n\toverflow: hidden;\n\tmargin-top: -5px;\n}\n.head_notice_box a{\n\tcolor: #999;\n}\n.head_notice_box a:hover{\n\tcolor: #459ae9;\n}\n.head_notice_box .icon_dot_notices{\n    height: 11px;\n    width: 11px;\n    overflow: hidden;\n    position: absolute;\n    right: 16px;\n    top: 3px;\n    background: url(../img/icon_dots.png) no-repeat center center;\n}\n.head_notice_box .notice_num{\n\tbackground-color: #f86868;\n    border-radius: 50%;\n    color: #fff;\n    font-size: 8px;\n    height: 18px;\n    line-height: 18px;\n    overflow: hidden;\n    position: absolute;\n    right: 9px;\n    text-align: center;\n    top: 0;\n    width: 18px;\n    font-family: arial;\n}\n.body.page_index{\n\tmin-height:calc(100% - 170px) \n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/login.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n@charset \"UTF-8\";\n/* reset */\nbody, .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6, button, input, select, textarea, .ui-dialog { font-family: microsoft yahei,Arial,sans-serif; }\n\nbody { font-size: 13px; }\n/*login页面*/\n.head_level1 { height: 35px; background: #171F2A; position: relative; }\n\n.head_level1 div { width: 1200px; margin: 0 auto; position: relative; }\n\n.head_level1 .logoimg { width: 112px; height: 93px; background: url(../img/logo/logoimg.png); position: absolute; top: 0px; left: 0px; z-index: 151; }\n\n.head_level2 { height: 60px; position: relative; background: #27303f; }\n\n.bg_body { background: url(../img/logo/bg_login.jpg) no-repeat center; position: relative; height: 774px; width: 100%; }\n\n.bg_body .login_wrapper { width: 1000px; margin: 0 auto; position: relative; }\n\n.bg_body .login_wrapper .login_text { position: absolute; width: 550px; height: 374px; overflow: hidden; background: url(../img/logo/login_text.png) no-repeat center top; }\n\n.bg_body .login_wrapper .login_text1 { top: 75px; height: 187px; background-position: 0 0; -webkit-animation: text-show 3s 1; }\n\n.bg_body .login_wrapper .login_text2 { top: 249px; height: 180px; background-position: 0 -187px; -webkit-animation: text-show 3s 1; }\n\n.bg_body #logo { position: absolute; top: 75px; right: 0px; background-color: #fff; border-radius: 5px; padding: 30px 40px 40px 40px; }\n\n.bg_body #logo h1 { font-weight: 400; color: #333; padding: 0px; margin-top: 0px; }\n\n.bg_body #logo .center { border: #eee 2px solid; padding: 25px 30px 10px 30px; }\n\n.bg_body #logo .center .ipt { border: 1px solid #6e7781; height: 38px; line-height: 38px; width: 358px; text-indent: 10px; margin-bottom: 20px; display: block; }\n\n.bg_body #logo .center .ipt:focus { border: 1px solid #6e7781; }\n\n.bg_body #logo .center .btn_login { background: #007fff; color: #fff; text-align: center; line-height: 46px; font-size: 18px; cursor: pointer; border: none; width: 360px; margin-bottom: 20px; display: block; }\n\n.bg_body #logo .center .login_error_tips { opacity: 1; color: #ea1921; }\n\n.bg_body #logo .center .login_error_tips .icon_error { display: inline-block; height: 14px; width: 14px; vertical-align: middle; margin-right: 3px; margin-top: -2px; background: url(../img/logo/icon_error.png) no-repeat 0 0; }\n\n.footer-menu { background: #171f2a; height: 110px; line-height: 110px; color: #73787e; text-align: center; padding: 0px; margin: 0px; font-size: 12px; }\n\n@-webkit-keyframes text-show { 0% { opacity: 0; -webkit-transform: scale(1.1, 1.1); }\n  100% { opacity: 1; } }\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_app.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.app-flowp{\n\ttext-align:center;\n\tmargin-left:80px;\n\tmargin-top:10px;\n\tpadding-top: 15px;\n\tpadding-bottom: 15px;\n\tpadding-left: 5px;\n\tpadding-right: 5px;\n\twidth:320px;\n\tborder: 1px solid #e5e5e5;\n\tborder-radius:5px;\n}\n.app-tip p {\n\tfont-size: 14px;\n\tdisplay: block;\n\tcolor: #5b5b5b;\n\tborder-bottom: none;\n}\n.t_grey{color:#999;}\n\n.form-control:hover, .form-control:focus{\n    border-color: #66afe9;\n    outline: 0;\n    box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\n}\n.can_a{\n    color: #FBC15E;\n}\n.app-logo-edit a{\n  position: relative;\n}\n.app-logo-edit-mask{\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  background: rgba(0,0,0,.5);\n  left: 0;\n  top: 0;\n  text-align: center;\n  line-height: 40px;\n  color: #fff;\n  display: none;\n}\n.app-logo-edit-mask i{\n    position: absolute;\n    right: 0px;\n    bottom: 0px;\n}\n.app-logo-edit a:hover .app-logo-edit-mask{\n    display: block;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_app_env.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.dev_center_wrap{padding: 30px}\r\n.dev_center_module{margin-bottom: 30px;}\r\n.dev_center_module .dev_module_title{padding-bottom: 15px; border-bottom: 1px solid #ddd; margin-bottom: 15px;}\r\n.dev_center_module .table th{background: #fafafa;}\r\n.dev_center_module .table td{text-align: left; font-size: 12px; color: #333; vertical-align: middle; padding: 10px;}\r\n.env_introduce_box{margin: 0;  vertical-align: middle; font-size: 13px; line-height: 28px; color: #666; background: none; white-space: pre-wrap; word-wrap: break-word; white-space : normal ;  border-radius: 0; border-top: 0; display: block;}\r\n.env_introduce_box p:before{content: ' '; width:3px; border-radius: 50%; height: 3px; margin-right: 7px; display: inline-block; background: #999; vertical-align: middle;}\r\n.dev_env_table .env_useage{display: none;}\r\n.dev_env_opera{ font-size: 16px; margin-right: 20px; vertical-align: middle; color: #44b549;}\r\n/* .dev_env_table input{width: 210px; display: inline-block; color: #333 !important;  height: 32px; box-shadow: none; transition: none; padding:3px;} */\r\n.dev_env_table input{display: inline-block; color: #333 !important;  height: 32px; box-shadow: none; transition: none; padding:3px;}\r\n.dev_env_table input:focus{border-color: #5bc0de; box-shadow: none;}\r\n.dev_env_table button{border: none; margin-right:0px; border-radius: 0; padding: 5px 20px; display: none;}\r\n.dev_env_table input[disabled]{background: none; border: 1px solid #fff;  color: #333 !important;  box-shadow: none; cursor: default;}\r\n.dev_env_table .env_edit_status button{display: inline-block;}\r\n.dev_env_table .env_edit_status .dev_env_opera{display: none;}\r\n.dev_env_table .env_edit_status td{background: #fafafa;}\r\n.dev_center_module .env_add_btn,.dev_center_module .env_check_btn{ border-radius: 0; display: inline-block !important; font-size: 12px; padding: 0; height: 28px; line-height: 20px; padding: 4px 10px; margin: 0 0 0 15px; float: right; border: none;}\r\n.dev_center_module .glyphicon{margin-right: 3px;}\r\n.dev_env_table{margin-bottom: 0;}\r\n.dev_env_table .env_key_box{position: relative;}\r\n.dev_env_table .env_prefix{position: absolute; left: 3px; top: 8px;}\r\n.dev_env_table .env_name{padding-left: 48px;}\r\n.dev_env_table .font-title{width:100px;text-align:right;display:inline;}\r\n.dev_env_table .font-content{display:inline-block;}\r\n.dev_env_table .content-p{padding:5px;}\r\n.dev_center_module .loading-jpg{width:100px;height:100px;margin-left: 40%;margin-top:20%;}\r\n.dev_center_module .env_add_btn, .dev_center_module .env_check_btn{cursor: pointer;}\r\n.notice-form .form-columns .form-group .controls{min-height:35px;}\r\n.notice-form span.form-control{height:28px !important;}\r\n.notice-form .form-columns .form-group .controls input[type=\"text\"], .form-columns .form-group .controls input[type=\"password\"], .form-columns .form-group .controls select{\r\n\twidth:100% !important;\r\n}\r\n.notice-form .help-block{margin-bottom:0px;}\r\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_guide.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.dataclass h4{\n\tfont-size: 16px;\n\tfont-weight: 400;\n\tcolor: #555555;\n\tborder-top: 1px solid #c6cdd3;\n\tbackground: #f4f5f8;\n\theight: 35px;\n\tline-height: 35px;\n\tpadding-left: 15px;\n}\n.dataclass h4 .no-num {\n\tbackground: #44B549;\n\tcolor: #fff;\n\twidth: 35px;\n\ttext-align: center;\n\tdisplay: inline-block;\n\theight: 35px;\n\tmargin-left: -15px;\n\tmargin-right: 10px;\n\tmargin-top: -1px;\n\tfont-style:normal;\n\tvertical-align: top;\n\tfloat: left;\n}\n.wm {\n\tborder: 1px solid #5898d7;\n}\n.navbar-collapse{\n\tpadding-left:0;\n}\n.navbar {\n\tmargin: 6px -15px 20px -15px;\n\tborder-radius: 0;\n\tborder: 0 solid transparent;\n\tborder-bottom: 1px solid #ddd !important;\n}\n.navbar-default {\n\tbackground-color: #FFFFFF;\n}\n.abz{\n\tbackground: #44B549;\n\tpadding:10px !important;\n\tmargin-top:5px;\n\tmargin-right:10px;\n}\n.lh2{\n\tline-height:2;\n}\n.navbar-default .navbar-nav>li>a {\n\tcolor: #FFF;\n}\n.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus {\n\tcolor: #FFF;\n\tbackground-color: #44B549;\n}\n.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333 !important;background-color:#44B549 !important;}\n#toc_container {\nwidth: 673px;\nborder: 1px solid #e0e0e0;\nmargin-top: 5px;\nbackground-color: #fff;\n}\n\n#toc_container {\nbackground: #f9f9f9;\nborder: 1px solid #aaa;\npadding: 10px;\nmargin-bottom: 1em;\nwidth: auto;\ndisplay: table;\nfont-size: 95%;\n}\n#toc_container p.toc_title {\ntext-align: center;\nfont-weight: bold;\nmargin: 0;\npadding: 0;\n}\n\n#toc_container .toc_title {\nheight: 34px;\nmargin: 0 0 0 15px;\ntext-align: left;\nfont-size: 16px;\nline-height: 36px;\n}\n\np {\nfont-size: 12px;\nline-height: 24px;\nword-wrap: break-word;\nword-break: break-all;\n}\n\n#toc_container .toc_title .toc_toggle {\ndisplay: inline-block;\nwidth: 40px;\nheight: 20px;\nline-height: 20px;\nfont-size: 12px;\n}\n\n#toc_container span.toc_toggle {\nfont-weight: normal;\nfont-size: 90%;\n}\n\n#toc_container p.toc_title {\ntext-align: center;\nfont-weight: bold;\nmargin: 0;\npadding: 0;\n}\n#toc_container .toc_list {\nmargin-left: 10px;\n}\n#toc_container .toc_list li {\nline-height: 24px;\n}\n#toc_container ul ul {\nmargin-left: 1.5em;\n}\n.box-info p{\n\tborder-bottom:0px;\n}\n\n/*service intro*/\ndiv.service-wrap {\n  padding-top:0px;\n  font-family:Microsoft Yahei;\n  width:100%;\n  /*height:100%;*/\n  margin:0 auto;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs {\n  height:132px;\n  margin-bottom:0;\n  border-bottom:0px solid #3cace7;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs li.item {\n  width:93px;\n  height:133px;\n  margin-right:20px;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a {\n  padding-left:10px;\n  padding-right:10px;\n  border:1px solid #ddd;\n  border-radius:4px;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon {\n  display:block;\n  width:70px;\n  height:62px;\n  margin-left: 10px;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon1 { background:url(\"../img/service/createapp.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon2 { background:url(\"../img/service/deploy.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon3 { background:url(\"../img/service/log.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon4 { background:url(\"../img/service/monitor.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon5 { background:url(\"../img/service/db.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon6 { background:url(\"../img/service/code.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon7 { background:url(\"../img/service/security.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon8 { background:url(\"../img/service/analysis.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon9 { background:url(\"../img/service/third.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon10 { background:url(\"../img/service/tools.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.service-icon11 { background:url(\"../img/service/sample.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item a span.zh {\n  display:block;\n  width:70px;\n  font-size:13px;\n  color:#666;\n  text-align:center;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon1 { background:url(\"../img/service/createapp_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon2 { background:url(\"../img/service/deploy_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon3 { background:url(\"../img/service/log_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon4 { background:url(\"../img/service/monitor_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon5 { background:url(\"../img/service/db_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon6 { background:url(\"../img/service/code_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon7 { background:url(\"../img/service/security_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon8 { background:url(\"../img/service/analysis_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon9 { background:url(\"../img/service/third_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon10 { background:url(\"../img/service/tools_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.item:hover a span.service-icon11 { background:url(\"../img/service/sample_hover.png\") no-repeat; }\n\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon1 { background:url(\"../img/service/createapp_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon2 { background:url(\"../img/service/deploy_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon3 { background:url(\"../img/service/log_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon4 { background:url(\"../img/service/monitor_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon5 { background:url(\"../img/service/db_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon6 { background:url(\"../img/service/code_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon7 { background:url(\"../img/service/security_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon8 { background:url(\"../img/service/analysis_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon9 { background:url(\"../img/service/third_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon10 { background:url(\"../img/service/tools_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a span.service-icon11 { background:url(\"../img/service/sample_hover.png\") no-repeat; }\ndiv.service-wrap div.service-tab ul.nav-tabs li.active {\n  border:1px solid #3cace7;\n  border-bottom-color:#FFF;\n  border-radius:4px 4px 0 0;\n  background-color:#FFF;\n}\ndiv.service-wrap div.service-tab ul.nav-tabs li.active a { border:none; }\ndiv.service-wrap div.service-tab div.service-inner {\n  padding-left:20px;\n  padding-bottom:50px;\n  border:1px solid #3cace7;\n  border-radius:0 0 4px 4px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area h4 {\n  margin-top:40px;\n  margin-bottom:19px;\n  font-weight: bold;\n  color: #585757;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area h5 {\n  margin-top:40px;\n  margin-bottom:19px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area h5 a {\n  font-size:16px;\n  color:#3cace7;\n  letter-spacing:1px;\n  text-decoration:none;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area h5.data-safe { margin-top:0; }\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area p {\n  font-size:13px;\n  color:#666;\n  letter-spacing:1px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area ul.storage-list { list-style-type:none; }\ndiv.service-wrap div.service-tab div.service-inner div.item div.text-area ul.storage-list li {\n  font-size:13px;\n  color:#666;\n  letter-spacing:1px;\n  line-height:30px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.image-area {\n  margin-top:20px;\n  margin-left:60px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item ul.sandbox-list { list-style-type:none; }\ndiv.service-wrap div.service-tab div.service-inner div.item ul.sandbox-list li {\n  font-size:13px;\n  color:#666;\n  letter-spacing:1px;\n  line-height:40px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.lang-area { margin-bottom:50px; }\ndiv.service-wrap div.service-tab div.service-inner div.item div.lang-area h5 {\n  margin-top:40px;\n  margin-bottom:19px;\n  font-size:16px;\n  color:#3cace7;\n  letter-spacing:1px;\n  text-decoration:none;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.lang-area ul.lang-list { list-style-type:none; }\ndiv.service-wrap div.service-tab div.service-inner div.item div.lang-area ul.lang-list li {\n  float:left;\n  width:300px;\n  text-align:center;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.mem-area h5 {\n  color:#666;\n  letter-spacing:1px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.mem-area p {\n  font-size:13px;\n  color:#666;\n  letter-spacing:1px;\n}\ndiv.service-wrap div.service-tab div.service-inner div.item div.mini-icon-area { margin-top:40px; }\ndiv.service-wrap div.sae-use { margin-top:50px; }\ndiv.service-wrap div.sae-use div.auth-icon {\n  text-align:center;\n  margin:20px 0;\n}\ndiv.service-inner img{max-width:100%;}\ndiv.service-wrap div.sae-use p {\n  font-size:20px;\n  color:#666;\n  letter-spacing:1px;\n  text-align:center;\n}\ndiv.service-wrap div.sae-use p a {\n  color:#37b2e9;\n  text-decoration:none;\n}\ndiv.service-wrap div.start-use { margin-bottom:60px; }\ndiv.service-wrap div.start-use .use-button {\n  text-align:center;\n  background:url(\"../image/index/start_now.png\") no-repeat center;\n}\ndiv.service-wrap div.start-use .use-button a {\n  font-size:20px;\n  color:#fff;\n  letter-spacing:1px;\n  text-decoration:none;\n  line-height:53px;\n}\ndiv.div-hide{display:none;}\n/* 开发者工具页面 */\n.tool_header {padding-left: 0px;padding-right: 0px;}\n.tool_ul {line-height: 44px;}\n.json_btns {margin-top: 20px;}\n#json_tool {margin: 0px 0px 0px 23px;}\n#json_textarea {width:940px;height:250px;}\n.CodeContainer {border-radius: 0;}\n.Canvas {margin-top:10px; margin-right: 25px;}\n#text_reset {background-color: #999999;}\n#ijobs_search {margin-bottom: 0px;}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_monitor.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.k-grid table {\n   table-layout: fixed;\n}\n\n.k-grid tbody tr{\n    height: 30px;\n}\n\n.k-grid td{\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    padding-left: 0px;\n}\n.k-detail-cell td {\n    padding-left: 7px;\n}\n\n.basic_toggle {\n    background-color: whitesmoke;\n    cursor: pointer;\n}\n\n.config-box {\n    width: 100%;\n    margin-bottom: 1px;\n}\n\n.config_btn {\n    margin-left: 20px;\n    margin-bottom: 18px;\n\n}\n\ndiv.table-responsive table tbody tr td{\n    border-width: 0px 0px 1px 0px;\n\n}\n\ndiv.table-responsive table tbody tr td:first-child{\n    color: #8d8d8d;\n}\n\ndiv.table-responsive table {\n    border-width: 0px;\n}\n\n.table-responsive table td {\n    text-align: left;\n\n}\n\n.config_checkbox {\n    margin-right :25px;\n\n}\n.input_checkbox,.input_checkbox_label {\n    cursor: pointer;\n}\n\ndiv.basic_alarm {\n    display: none;\n}\n\n.config_check {\n    cursor: pointer;\n}\n\n\n.highlight_box.icon_wrap {\nposition: relative;\npadding-top: 14px;\npadding-bottom: 14px;\n}\n.highlight_box.border {\nborder-width: 0px;\nborder-top: 1px solid #e7e7eb;\n}\n.highlight_box {\npadding: 9px 30px;\nbackground-color: #f4f5f9;\nmargin-bottom: 20px;\nline-height: 1.6;\n}\n.highlight_box .desc {\ncolor: #8d8d8d;\noverflow: hidden;\n}\n\n.desc {\ncolor: #8d8d8d;\noverflow: hidden;\n}\n\ntd.k-detail-cell table tbody tr td{\n    border-bottom: solid 1px lightgray;\n\n}\n\n\n/*从paas_app_analysis文件拷贝*/\n.mod_basic {\n    margin: 20px 30px 0;\n    border-color: #e7e7eb;\n    box-shadow: none;\n    background: #FFF;\n    border: 1px solid #BABABB;\n}\n.mod_basic .title {\n    min-height: 40px;\n    border-color: #e7e7eb;\n    background: #f4f5f9;\n}\n.mod_basic .title {\n    position: relative;\n    line-height: 0;\n    font-size: 12px;\n    border-bottom: 1px solid #d8d8d8;\n}\n.mod_basic .title h3 {\n    min-height: 40px;\n    line-height: 40px;\n    font-size: 14px;\n    padding-left: 20px;\n}\n.mod_basic .content {\n    position: relative;\n    border-top: 0 none;\n}\nbody, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td {\n    margin: 0;\n    padding: 0;\n}\na, a:hover, a:active, a:focus{\n    text-decoration: none;\n}\n.ui_trendgrid {\n    margin: 20px 0;\n}\n.ui_trendgrid {\n    width: 100%;\n    table-layout: fixed;\n    margin: 5px 0;\n}\ntable {\n    border-collapse: collapse;\n    border-spacing: 0;\n}\ntable {\n    display: table;\n    border-color: gray;\n}\n.ui_trendgrid td {\n    height: 130px;\n    border-color: #e7e7eb;\n}\n.ui_trendgrid td {\n    border-right: 1px solid #d8d8d8;\n}\n.ui_trendgrid_item {\n    text-align: center;\n}\n.ui_trendgrid_item {\n    position: relative;\n    overflow: hidden;\n}\n.ui_trendgrid_chart {\n    width: 100%;\n    position: absolute;\n    bottom: 0;\n    left: 1px;\n}\n.ui_trendgrid dl {\n    display: inline-block;\n    margin-top: 0;\n    padding: 0;\n    text-align: left;\n}\n.ui_trendgrid dl {\n    position: relative;\n    z-index: 2;\n}\n.ui_trendgrid dt {\n    padding-bottom: 12px;\n    font-size: 14px;\n    font-weight: normal;\n    text-align: center;\n}\n.ui_trendgrid dt b {\n    font-weight: normal;\n    font-size:18px;\n}\ndd .ui_trendgrid_number {\n    text-align: center;\n    color: #676767;\n}\n.ui_trendgrid_3 .ui_trendgrid_number {\n    margin-right: 10px;\n}\n.ui_trendgrid .ui_trendgrid_number {\n    position: relative;\n    margin-bottom: 10px;\n    height: 24px;\n}\n.ui_trendgrid dd {\n    margin-top: 2px;\n    line-height: 18px;\n    white-space: nowrap;\n}\n.ui_trendgrid_unit {\n    margin-top: 20px;\n    margin-bottom: 20px;\n    font-size: 38px;\n    text-align: center;\n}\n.ui_trendgrid td.last {\n    border-right: 0 none;\n}\n.mod_basic .title .tabs {\n    display: inline-block;\n    padding-left: 10px;\n    vertical-align: middle;\n}\n.mod_basic .title .tabs a.current, .mod_basic .title .tabs a.current:hover {\n    color: #fff;\n    background: #44b549;\n    box-shadow: none;\n}\n.mod_basic .title .tabs a {\n    min-height: 40px;\n    line-height: 40px;\n}\n.mod_basic .title .tabs a {\n    margin: 0;\n    padding: 0 15px;\n    min-width: 76px;\n    text-align: center;\n    border-right: none;\n}\n.mod_basic .title .tabs a:hover{\n    background: #e6e7ec;\n}\n.mod_basic .title .tabs a.current, .mod_basic .title .tabs a.current:hover {\n    cursor: default;\n}\n.mod_basic .title .tabs a {\n    position: relative;\n    float: left;\n}\n.mod_basic .title h3 {\n    display: inline-block;\n}\n.mod_basic .title .sub_menu {\n    background: #f4f5f9;\n    box-shadow: none;\n    border-color: #e7e7eb;\n}\n.mod_basic .title .sub_menu {\n    padding: 10px 20px;\n    min-height: 53px;\n    line-height: 1em;\n    border-top: 1px solid #d8d8d8;\n}\nlabel{\n    font-weight:400;\n}\n.button_primary {\n    background-color: #44b549;\n    border-color: #44b549;\n    color: #ffffff;\n    border: 1px solid #5BACF1;\n}\n.button, .button.current {\n    padding: 0 22px;\n    height: 32px;\n    line-height: 30px;\n    font-size: 14px;\n    box-shadow: none;\n    text-shadow: none;\n}\n.button {\n    display: inline-block;\n    margin: 0;\n    text-align: center;\n    cursor: pointer;\n    border-radius: 2px;\n    background-repeat: repeat-x;\n    vertical-align: middle;\n    outline: 0;\n}\n.date-section {\n    margin: 0;\n    margin-right: -1px;\n    font-size: 14px;\n    float: left;\n}\n.date-section a {\n    display: block;\n    padding: 0 22px;\n    min-width: 60px;\n    height: 30px;\n    border: 1px solid #e6e7ec;\n    background: #fff;\n    line-height: 30px;\n    color: #222;\n    text-align: center;\n    text-decoration: none;\n}\n.setup {\n    float: right;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_profile.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.form-group:hover > label{\n  color:inherit;\n}\n.form-group label{\n  font-weight:normal;\n}\nh4{\n  font-size:13px;\n  margin-top:3px;\n}\n\n.main_bd {\n\tpadding:20px 80px\n}\n.account_setting_item {\n\t*zoom:1;\n\tborder-top:1px solid #e7e7eb;\n\tpadding:24px 0\n}\n.account_setting_item:after {\n\tcontent:\"\\200B\";\n\tdisplay:block;\n\theight:0;\n\tclear:both\n}\n.account_setting_item:first-child {\n\tborder-top-width:0\n}\n.account_setting_item.no_extra {\n\tborder-bottom-width:0\n}\n.account_setting_item:hover {\n\tbackground-color:#fff\n}\n.account_setting_item h4 {\n\tfloat:left;\n\twidth:130px;\n\tmargin-right:20px;\n\tfont-weight:400;\n\tfont-style:normal\n}\n.account_setting_item .meta_opr {\n\tfloat:right;\n\tmargin-left:16px;\n\tword-wrap:break-word;\n\tword-break:break-all;\n\ttext-align:right;\n\tcolor:#8d8d8d\n}\n.account_setting_item .meta_opr .btn {\n\tbackground-color:#fff;\n\tbackground-image:-moz-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#fff));\n\tbackground-image:-webkit-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:-o-linear-gradient(top,#fff 0,#fff 100%);\n\tbackground-image:linear-gradient(to bottom,#fff 0,#fff 100%);\n\tborder-color:#e6e7ec;\n\tcolor:#222;\n\theight:30px;\n\tline-height:30px;\n\t*line-height:28px;\n\twidth:auto;\n\tpadding-left:14px;\n\tpadding-right:14px\n}\n.account_setting_item .meta_opr .btn button {\n\tcolor:#222\n}\n.account_setting_item .meta_opr .btn:hover {\n\tbackground-color:#e6e7ec;\n\tbackground-image:-moz-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e7ec),to(#e6e7ec));\n\tbackground-image:-webkit-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:-o-linear-gradient(top,#e6e7ec 0,#e6e7ec 100%);\n\tbackground-image:linear-gradient(to bottom,#e6e7ec 0,#e6e7ec 100%);\n\tborder-color:#dadbe0;\n\tbox-shadow:none;\n\t-moz-box-shadow:none;\n\t-webkit-box-shadow:none;\n\tcolor:#000\n}\n.account_setting_item .meta_opr .btn:hover button {\n\tcolor:#222\n}\n.account_setting_item .meta_opr a {\n\tmargin-left:14px\n}\n.account_setting_item .meta_content {\n\tdisplay:table-cell;\n\tvertical-align:top;\n\tfloat:none;\n\twidth:auto;\n\t*display:block;\n\t*zoom:1;\n\tword-wrap:break-word;\n\tword-break:break-all\n}\n.account_setting_item .meta_content:after {\n\tcontent:\" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \";\n\tvisibility:hidden;\n\tclear:both;\n\theight:0!important;\n\tdisplay:block;\n\tline-height:0\n}\n.account_setting_item .meta_content .avatar {\n\twidth:80px;\n\theight:80px;\n\tbackground:transparent url(/mpres/htmledition/images/icon/page-setting/avatar/icon_avatar_default1eae8e.png) no-repeat 0 0\n}\n.account_setting_item .meta_content .dropdown_menu {\n\tmargin-right:16px;\n\tvertical-align:top\n}\n.account_setting_item .meta_content .icon_verify_checked {\n\tmargin-top:-3px;\n\tmargin-left:3px\n}\n.account_setting_item .meta_content .tips {\n\tcolor:#8d8d8d\n}\n.account_setting_item .meta_content .meta_preview {\n\tmargin-top:6px\n}\n.account_setting_item .meta_content .meta_preview img {\n\twidth:224px;\n\theight:149px\n}\n.account_setting_item .meta_content .meta_preview p {\n\tcolor:#a3a3a3;\n\tmargin-top:-6px;\n\tpadding-left:88px\n}\n.right_tip{\n\tmargin-left: 10px;\n\tfont-size: 10px !important;\n\tcolor: #999;\n}\n.password_label{\n\twidth: 100px;\n}\n.password_input{\n\twidth: 200px;\n\theight: 30px;\n\tmargin-bottom: 10px;\n\tdisplay: inline-block;\n}\n.app-form .form-group{\n    margin-bottom: 7px;\n}\n\n.app-form p{\n    border: 0px;\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_release.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.deploy_box{ margin:15px 40px;}\n.deploy_box h4{margin-bottom: 15px;}\n.deploy_box .env_list{margin-bottom: 0; border-top: 0; width:100%; font-size: 14px;}\n.deploy_box .env_block .btn{margin: 0; font-size: 12px; font-weight: normal; box-sizing:content-box; height: 22px; line-height: 22px; padding: 0 15px; margin-right: 5px;}\n.deploy_box .env_list td{text-align: left; padding: 15px 10px; vertical-align: middle; border-left: 1px solid #ddd;}\n.deploy_box .env_list td:nth-child(2n){border-right: 1px solid #ddd;}\n.deploy_box .env_name{margin-right: 50px;}\n.deploy_box .status{display: inline-block; width: 150px;}\n.deploy_box .status_success{color: #5cb85c;}\n.deploy_box .status_default{color: #5bc0de;}\n.deploy_box .status_normal{color: #f0ad4e;}\n.deploy_box .deploy_block_tip .btn{width:70px;line-height: 32px;height: 32px;}\n.deploy_box h3{margin-bottom: 20px;}\n.deploy_box .deploy_block{margin-bottom: 30px;}\n.deploy_box .deploy_tab_box{}\n.deploy_box .tabs{overflow: hidden;}\n.deploy_box .tabs li{float: left; height: 20px; line-height: 20px; text-align: center; width: 50%; padding: 10px 0;}\n.deploy_box .btn{margin: 15px 50px 15px 0;}\n.deploy_box .btn.disabled{background-color: #87b87f!important;border-color: #87b87f;color: #ffffff;}\n.deploy_box .deploy_content{padding:40px; border: 1px solid #ddd; border-top: none;min-height:300px;}\n.deploy_box .form-horizontal .btn{margin: 0;}\n.deploy_box .form-horizontal .control-label{padding-top: 0}\n.deploy_box .env_item{float: left; width: 300px; border-radius: none;}\n\n#deploy_tab{border: 1px solid #ddd; border-bottom: 0;}\n#deploy_tab li{border-bottom: 2px solid #ddd; border-right: 1px solid #ddd; }\n#deploy_tab li:last-child{border-right: none;}\n#deploy_tab li a{border: none; outline: none; border-radius: none; background: none; font-weight: bold; color: #333;}\n#deploy_tab li a span{background: #eee; font-size: 10px; margin-left:2px;}\n#deploy_tab li a:focus{border: none; color: #444; outline: none;}\n#deploy_tab li a:hover{background: none; }\n#deploy_tab .active{border-bottom: 2px solid #2196f3}\n#deploy_tab .active a{font-weight: bold; color: #333; }\n#deploy_tab .disabled_status a:hover{background: none; color: #999; font-weight: normal;}\n.notice_btn{background: #d9534f !important; border-color: #b92c28 !important; font-size: 14px; font-weight: normal; height: 40px !important; line-height: 40px !important; width: 120px !important; }\n.notice_btn:hover{background: #c12e2a !important; }\n\n\n.deploy_box .deploy_btn{width: 120px; height: 40px; line-height: 40px; font-weight: normal; font-size: 14px; }\n.deploy_box .deploy_btn[disabled]{border-color: #ccc;}\n.deploy_box .deploy_content label{font-weight: normal;}\n.deploy_box .deploy_block_tip{padding: 10px 10px 10px 0px;color:#FE9603;font-weight:bold;font-szie:14px;}\n.deploy_box .disabled_status {}\n.deploy_box .disabled_status a{cursor: not-allowed; background: none !important; color: #999 !important ; font-weight: normal !important;}\n.deploy_box .deploy_popover{margin-top:17px; max-width: 849px; width: 100%; height: auto; border-color: rgb(221, 221, 221); border-radius: 0px; position: relative; box-shadow: none; border-color: #ddd;}\n.deploy_box .deploy_popover > .arrow{left:20%;}\n.deploy_box .deploy_popover h3{margin-bottom: 5px;}\n.deploy_box .deploy_detail p{color: #666;padding-bottom:10px;}\n.deploy_box .deploy_detail .success{color:green;}\n.deploy_box .deploy_detail .fail{color:red;}\n.deploy_box .streamline{border: 1px dotted #ddd; padding: 8px; border-left: 5px solid #ddd;}\n.deploy_box .streamline pre{padding:0; line-height: 20px; margin: 5px 0; background: none; border: none; white-space: pre-wrap; word-wrap: break-word; white-space : normal ; font-family:\"Helvetica Neue\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",\"黑体\",Arial,sans-serif;}\n.deploy_box .appstate{color:red;font-size:14px;}\n.deploy_box .error{margin-left:70px;padding: 4px 12px !important;width: 590px !important;}\n.deploy_box .applying{color:#FF8A01;margin-right: -20px;font-size:14px;}\n.deploy_box .apply_not{padding: 4px 12px !important; margin-left: 53px; width: 590px !important;}\n.deploy_box .apply_not .glyphicon{margin-right: 5px;}\n.deploy_box .apply_ok{padding: 4px 12px !important; color:green;margin-right: -20px;font-size:14px;width: 590px !important;}\n\n.icon.ok {\n    background:url(\"../img/base/base_spring.png\") 0 -1572px no-repeat;\n    width:20px;\n    height:20px;\n    vertical-align:middle;\n    display:inline-block;\n    margin-right:5px;\n}\n\n.icon.forbid {\n    background:url(\"../img/base/base_spring.png\") 0 -1632px no-repeat;\n    width:20px;\n    height:20px;\n    vertical-align:middle;\n    display:inline-block;\n    margin-right:5px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/css/paas_saas.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.inline-block{display: inline-block;}\n.deploy_box .btn{margin:0;}\n.deploy_box{margin-top: -10px; margin: 0; padding: 10px;}\n.bushu-file{height: 40px;line-height: 40px;margin-bottom: 20px;}\n.deploy_box .choose-file-btn{height: 40px;line-height: 40px;background: #F4F4F4;color: #555;border-color: #ddd;font-weight: 400;margin-right: 10px;}\n.choose-file-btn:hover,.choose-file-btn:focus{background: #E6E6E6;color: #555;border-color: #ddd;}\n#detail_info{box-shadow: none;border-color: #ddd;}\n#saas_file{opacity: 0;position: absolute;top: -1000px;}\n.import-validate{display: inline-block;}\n.not-bold{font-weight: 200;}"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/api_data.js",
    "content": "define({ \"api\": [\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_all_user/\",\n    \"title\": \"get_all_user\",\n    \"name\": \"get_all_user\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取所有用户信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，0：普通用户，1：管理员，2：开发者</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"username\\\": \\\"admin\\\",\\n            \\\"qq\\\": \\\"12345\\\",\\n            \\\"phone\\\": \\\"12345678911\\\",\\n            \\\"role\\\": \\\"1\\\",\\n            \\\"email\\\": \\\"11@qq.com\\\",\\n            \\\"chname\\\": \\\"管理员\\\"\\n        },\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_all_user.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_batch_user/\",\n    \"title\": \"get_batch_user\",\n    \"name\": \"get_batch_user\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取多个用户信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"username_list\",\n            \"description\": \"<p>待获取信息的用户名列表</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"username_list\\\": \\\"admin;test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": {\\n        \\\"admin\\\": {\\n            \\\"username\\\": \\\"admin\\\",\\n            \\\"qq\\\": \\\"123123\\\",\\n            \\\"phone\\\": \\\"11111111111\\\",\\n            \\\"role\\\": \\\"1\\\",\\n            \\\"email\\\": \\\"11@qq.com\\\",\\n            \\\"chname\\\": \\\"admin\\\"\\n        }\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，0：普通用户，1：管理员，2：开发者</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_batch_user.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_batch_user_platform_role/\",\n    \"title\": \"get_batch_user_platform_role\",\n    \"name\": \"get_batch_user_platform_role\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取多个用户在平台应用的角色</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"username_list\",\n            \"description\": \"<p>待获取信息的用户名列表</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"username_list\\\": \\\"admin;test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": {\\n        \\\"admin\\\": {\\n            \\\"bkdata\\\": [1],\\n            \\\"job\\\": [1],\\n            \\\"cmdb\\\": [1, 2]\\n        }\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"list\",\n            \"optional\": false,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，1：管理员，2：操作员</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_batch_user_platform_role.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_user/\",\n    \"title\": \"get_user\",\n    \"name\": \"get_user\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取用户信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": {\\n        \\\"username\\\": \\\"admin\\\",\\n        \\\"qq\\\": \\\"12345\\\",\\n        \\\"phone\\\": \\\"12345678911\\\",\\n        \\\"role\\\": \\\"1\\\",\\n        \\\"email\\\": \\\"11@qq.com\\\",\\n        \\\"chname\\\": \\\"管理员\\\"\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，0：普通用户，1：管理员，2：开发者</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_user.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_paas/get_app_info/\",\n    \"title\": \"get_app_info\",\n    \"name\": \"get_app_info\",\n    \"group\": \"API_BK_PAAS\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取应用信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"target_app_code\",\n            \"description\": \"<p>目标蓝鲸应用ID，多个以英文逗号分隔，为空则表示所有应用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"target_app_code\\\": \\\"bk_test,esb_test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"app_code\\\": \\\"bk_test\\\",\\n            \\\"app_name\\\": \\\"BKTest\\\"\\n        },\\n        {\\n            \\\"app_code\\\": \\\"esb_test\\\",\\n            \\\"app_name\\\": \\\"ESBTest\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/bk_paas/apidoc/get_app_info.js\",\n    \"groupTitle\": \"API_BK_PAAS\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_app/\",\n    \"title\": \"add_app\",\n    \"name\": \"add_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_name\",\n            \"description\": \"<p>业务名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"maintainers\",\n            \"description\": \"<p>运维人员, 多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"product_pm\",\n            \"description\": \"<p>产品人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"developer\",\n            \"description\": \"<p>开发人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"tester\",\n            \"description\": \"<p>测试人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>操作者，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"company_name\",\n            \"description\": \"<p>公司名,cmdb配置文件中定义的constants.php中的 COMPANY_NAME</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"level\",\n            \"description\": \"<p>业务拓扑级别，2或者3</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"life_cycle\",\n            \"description\": \"<p>生成周期，测试中, 已上线, 停运其中的一个值</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_name\\\": \\\"测试\\\",\\n    \\\"maintainers\\\": \\\"admin\\\",\\n    \\\"product_pm\\\": \\\"admin\\\",\\n    \\\"company_name\\\": \\\"公司名称\\\",\\n    \\\"level\\\": 3,\\n    \\\"life_cycle\\\": \\\"测试中\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"appId\\\": 25\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_module/\",\n    \"title\": \"add_module\",\n    \"name\": \"add_module\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"set_id\",\n            \"description\": \"<p>集群ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名，多个用英文逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>操作人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bak_operator\",\n            \"description\": \"<p>备份操作人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"module_type\",\n            \"description\": \"<p>模块类型，1: 普通, 2: 数据库</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": true,\n            \"field\": \"properties\",\n            \"description\": \"<p>模块属性，自定义属性用customerxx来修改</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"set_id\\\": 10,\\n    \\\"module_name\\\": \\\"test1,test2\\\",\\n    \\\"module_type\\\": 1,\\n    \\\"operator\\\": \\\"user1\\\",\\n    \\\"bak_operator\\\": \\\"user2\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {},\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_module.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_plat_id/\",\n    \"title\": \"add_plat_id\",\n    \"name\": \"add_plat_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新增子网ID</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"plat_name\",\n            \"description\": \"<p>子网名称</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"plat_name\\\": \\\"test_plat\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": 2,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_plat_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_set/\",\n    \"title\": \"add_set\",\n    \"name\": \"add_set\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建集群</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"set_names\",\n            \"description\": \"<p>集群名称，多个以半角逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"chn_name\",\n            \"description\": \"<p>中文名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"group_flag\",\n            \"description\": \"<p>分组标识</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"env_type\",\n            \"description\": \"<p>环境类型，包含1：测试 2：体验 3：正式，默认为3</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"service_status\",\n            \"description\": \"<p>服务状态，包含0：关闭，1：开启，默认为1</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"capacity\",\n            \"description\": \"<p>设计容量</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"des\",\n            \"description\": \"<p>描述</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_names\\\": \\\"test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_set.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/clone_host_property/\",\n    \"title\": \"clone_host_property\",\n    \"name\": \"clone_host_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>克隆主机属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"org_ip\",\n            \"description\": \"<p>主机（内网IP）</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"dst_ip\",\n            \"description\": \"<p>目标主机（内网IP）</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 12,\\n    \\\"plat_id\\\": 2,\\n    \\\"org_ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n    \\\"dst_ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": null,\\n    \\\"message\\\": \\\"\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/clone_host_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_app/\",\n    \"title\": \"del_app\",\n    \"name\": \"del_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {}\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_host_in_app/\",\n    \"title\": \"del_host_in_app\",\n    \"name\": \"del_host_in_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>从业务空闲机集群中删除主机 ，如果主机在当前业务下不存在，也提示不在空闲机集群的错误信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"host_id\",\n            \"description\": \"<p>主机ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"host_id\\\": 12345\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_host_in_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_module/\",\n    \"title\": \"del_module\",\n    \"name\": \"del_module\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"module_ids\",\n            \"description\": \"<p>模块ID, 多个ID用英文逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"module_ids\\\": \\\"10,11\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {}\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_module.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_plat/\",\n    \"title\": \"del_plat\",\n    \"name\": \"del_plat\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除子网</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"plat_id\\\": 1234,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_plat.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_set/\",\n    \"title\": \"del_set\",\n    \"name\": \"del_set\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除集群</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_set.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_set_host/\",\n    \"title\": \"del_set_host\",\n    \"name\": \"del_set_host\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>清空集群下所有主机</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_set_host.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/edit_app/\",\n    \"title\": \"edit_app\",\n    \"name\": \"edit_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>编辑业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"app_name\",\n            \"description\": \"<p>业务名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"maintainers\",\n            \"description\": \"<p>运维人员, 多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"product_pm\",\n            \"description\": \"<p>产品人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"developer\",\n            \"description\": \"<p>开发人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"tester\",\n            \"description\": \"<p>测试人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>操作者，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"life_cycle\",\n            \"description\": \"<p>生成周期，测试中, 已上线, 停运其中的一个值</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"app_name\\\": \\\"测试\\\",\\n    \\\"operator\\\": \\\"test1,test2\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {},\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/edit_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/enter_ip/\",\n    \"title\": \"enter_ip\",\n    \"name\": \"enter_ip\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>导入主机到业务 ，如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ips\",\n            \"description\": \"<p>IP地址，多个用英文逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"hostname\",\n            \"description\": \"<p>主机名, 多个用英文逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"app_name\",\n            \"description\": \"<p>业务名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_name\",\n            \"description\": \"<p>集群名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"os_type\",\n            \"description\": \"<p>操作系统类型，linux或windows</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"ips\\\": \\\"10.10.10.10,10.10.10.11\\\",\\n    \\\"hostname\\\": \\\"test\\\",\\n    \\\"app_name\\\": \\\"test\\\",\\n    \\\"set_name\\\": \\\"test\\\",\\n    \\\"module_name\\\": \\\"test\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/enter_ip.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_agent_status/\",\n    \"title\": \"get_app_agent_status\",\n    \"name\": \"get_app_agent_status\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下Agent状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"message\\\": \\\"\\\",\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": {\\n        \\\"agentNorList\\\": [ ],\\n        \\\"agentAbnorCnt\\\": 3,\\n        \\\"agentNorCnt\\\": 0,\\n        \\\"agentAbnorList\\\": [\\n            {\\n                \\\"Ip\\\": \\\"10.0.0.1\\\",\\n                \\\"PlatId\\\": \\\"1\\\",\\n                \\\"CompanyId\\\": 0\\n            },\\n            {\\n                \\\"Ip\\\": \\\"10.0.0.2\\\",\\n                \\\"PlatId\\\": \\\"1\\\",\\n                \\\"CompanyId\\\": 0\\n            },\\n            {\\n                \\\"Ip\\\": \\\"10.0.0.3\\\",\\n                \\\"PlatId\\\": \\\"1\\\",\\n                \\\"CompanyId\\\": 0\\n            },\\n        ]\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"error\": {\n      \"examples\": [\n        {\n          \"title\": \"Error-Response:\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"code\\\": \\\"50000\\\",\\n    \\\"error\\\": {\\n        \\\"error_data\\\": {\\n            \\\"api_spec\\\": {\\n            }\\n        }\\n    },\\n    \\\"result\\\": false,\\n    \\\"message\\\": \\\"没权利访问业务\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_agent_status.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_by_id/\",\n    \"title\": \"get_app_by_id\",\n    \"name\": \"get_app_by_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 516\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"测试版\\\",\\n            \\\"GroupName\\\": \\\"\\\",\\n            \\\"Description\\\": \\\"\\\",\\n            \\\"BusinessDeptName\\\": \\\"\\\",\\n            \\\"Creator\\\": \\\"2323232\\\",\\n            \\\"Default\\\": \\\"0\\\",\\n            \\\"ApplicationID\\\": \\\"51\\\",\\n            \\\"DeptName\\\": \\\"23223\\\",\\n            \\\"CompanyID\\\": \\\"6\\\",\\n            \\\"LifeCycle\\\": \\\"内测\\\",\\n            \\\"Source\\\": \\\"qcloud\\\",\\n            \\\"Maintainers\\\": \\\"12345\\\",\\n            \\\"CreateTime\\\": \\\"2015-12-17 17:12:14\\\",\\n            \\\"ProjectID\\\": \\\"0\\\",\\n            \\\"Owner\\\": \\\"232232\\\",\\n            \\\"ProductPm\\\": \\\"2323232\\\",\\n            \\\"Level\\\": \\\"3\\\",\\n            \\\"LastTime\\\": \\\"2016-05-16 10:27:39\\\",\\n            \\\"Type\\\": \\\"1\\\",\\n            \\\"Display\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"error\": {\n      \"examples\": [\n        {\n          \"title\": \"Error-Response:\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"code\\\": \\\"50000\\\",\\n    \\\"error\\\": {\\n        \\\"error_data\\\": {\\n            \\\"api_spec\\\": {\\n            }\\n        }\\n    },\\n    \\\"result\\\": false,\\n    \\\"message\\\": \\\"没权利访问业务\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_by_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_by_user/\",\n    \"title\": \"get_app_by_user\",\n    \"name\": \"get_app_by_user\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询用户有权限的业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"filter_only\",\n            \"description\": \"<p>是否不显示已经停止运行的业务，默认为False</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"示例业务\\\",\\n            \\\"GroupName\\\": \\\"\\\",\\n            \\\"Description\\\": \\\"\\\",\\n            \\\"BusinessDeptName\\\": \\\"\\\",\\n            \\\"Creator\\\": \\\"admin\\\",\\n            \\\"Default\\\": \\\"0\\\",\\n            \\\"ApplicationID\\\": \\\"2\\\",\\n            \\\"DeptName\\\": \\\"公司名称\\\",\\n            \\\"Level\\\": \\\"3\\\",\\n            \\\"LifeCycle\\\": \\\"公测\\\",\\n            \\\"Source\\\": \\\"\\\",\\n            \\\"Maintainers\\\": \\\"admin\\\",\\n            \\\"CreateTime\\\": \\\"2016-08-10 20:43:38\\\",\\n            \\\"CompanyID\\\": \\\"0\\\",\\n            \\\"Owner\\\": \\\"公司名称\\\",\\n            \\\"ProductPm\\\": \\\"admin\\\",\\n            \\\"LastTime\\\": \\\"2016-08-10 20:43:38\\\",\\n            \\\"Type\\\": \\\"0\\\",\\n            \\\"Display\\\": \\\"1\\\"\\n        }\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"Default\",\n            \"description\": \"<p>为1表示系统默认创建业务</p>\"\n          }\n        ]\n      }\n    },\n    \"error\": {\n      \"examples\": [\n        {\n          \"title\": \"Error-Response:\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"code\\\": \\\"50000\\\",\\n    \\\"error\\\": {\\n        \\\"error_data\\\": {\\n            \\\"api_spec\\\": {\\n                \\\"msg\\\": \\\"only right to app\\\",\\n                \\\"extmsg\\\": \\\"没权利访问业务\\\",\\n                \\\"code\\\": \\\"0006\\\"\\n            }\\n        }\\n    },\\n    \\\"result\\\": false,\\n    \\\"request_id\\\": \\\"bb8e27bbd86e4802ada9027e2d933cc1\\\",\\n    \\\"message\\\": \\\"没权利访问业务\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Error\": [\n          {\n            \"group\": \"Error\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"error\",\n            \"description\": \"<p>错误详情，api_spec为配置平台接口的错误信息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_by_user.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_by_user_role/\",\n    \"title\": \"get_app_by_user_role\",\n    \"name\": \"get_app_by_user_role\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据用户角色查询用户业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"user_role\",\n            \"description\": \"<p>用户角色，多个以逗号分隔，可选值为：Maintainers,ProductPm,Cooperation等</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"user_role\\\": \\\"Maintainers,ProductPm\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"ProductPm\\\": [\\n            {\\n                \\\"ApplicationName\\\": \\\"蓝鲸\\\",\\n                \\\"ApplicationID\\\": \\\"620\\\",\\n                \\\"DeptName\\\": \\\"蓝鲸\\\",\\n                \\\"Owner\\\": \\\"bk\\\"\\n            }\\n        ],\\n        \\\"Maintainers\\\": [\\n            {\\n                \\\"ApplicationName\\\": \\\"蓝鲸\\\",\\n                \\\"ApplicationID\\\": \\\"620\\\",\\n                \\\"DeptName\\\": \\\"蓝鲸\\\",\\n                \\\"Owner\\\": \\\"bk\\\"\\n            }\\n        ],\\n        \\\"Cooperation\\\": []\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_by_user_role.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_host_list/\",\n    \"title\": \"get_app_host_list\",\n    \"name\": \"get_app_host_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\",\\n            \\\"ModuleID\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_host_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_list/\",\n    \"title\": \"get_app_list\",\n    \"name\": \"get_app_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"示例业务\\\",\\n            \\\"Type\\\": \\\"0\\\",\\n            \\\"Description\\\": \\\"\\\",\\n            \\\"BusinessDeptName\\\": \\\"\\\",\\n            \\\"Creator\\\": \\\"admin\\\",\\n            \\\"Default\\\": \\\"0\\\",\\n            \\\"ApplicationID\\\": \\\"2\\\",\\n            \\\"Level\\\": \\\"3\\\",\\n            \\\"Display\\\": \\\"1\\\",\\n            \\\"Source\\\": \\\"\\\",\\n            \\\"GroupName\\\": \\\"\\\",\\n            \\\"Maintainers\\\": \\\"admin\\\",\\n            \\\"CompanyID\\\": \\\"0\\\",\\n            \\\"Owner\\\": \\\"公司名称\\\",\\n            \\\"ProductPm\\\": \\\"admin\\\",\\n            \\\"LifeCycle\\\": \\\"公测\\\",\\n            \\\"LastTime\\\": \\\"2016-03-25 04:02:05\\\",\\n            \\\"DeptName\\\": \\\"公司名称\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_by_company_id/\",\n    \"title\": \"get_host_by_company_id\",\n    \"name\": \"get_host_by_company_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据开发商ID、子网ID、主机IP获取主机信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"company_id\",\n            \"description\": \"<p>开发商ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机ip</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"company_id\\\": 0,\\n    \\\"ip\\\": \\\"10.0.0.1\\\",\\n    \\\"plat_id\\\": 1,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"ApplicationName\\\": \\\"示例业务\\\",\\n        \\\"ModuleName\\\": \\\"示例模块\\\",\\n        \\\"BakOperator\\\": \\\"admin\\\",\\n        \\\"SetName\\\": \\\"示例集群\\\",\\n        \\\"Operator\\\": \\\"admin\\\",\\n        \\\"SetID\\\": \\\"3\\\",\\n        \\\"ApplicationID\\\": \\\"1\\\",\\n        \\\"ModuleID\\\": \\\"3\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_by_company_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_company_id/\",\n    \"title\": \"get_host_company_id\",\n    \"name\": \"get_host_company_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取主机开发商</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ips\",\n            \"description\": \"<p>主机内网IP，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"ips\\\": \\\"10.0.0.1,10.0.0.2\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"10.0.0.1\\\": {\\n            \\\"102\\\": {\\n                \\\"CompanyID\\\": \\\"0\\\",\\n                \\\"AssetID\\\": \\\"\\\",\\n                \\\"Region\\\": \\\"\\\",\\n                \\\"Owner\\\": \\\"公司名称\\\",\\n                \\\"PlatID\\\": \\\"1\\\",\\n                \\\"ApplicationID\\\": \\\"1\\\"\\n            }\\n        },\\n        \\\"10.0.0.2\\\": {\\n            \\\"102\\\": {\\n                \\\"CompanyID\\\": \\\"0\\\",\\n                \\\"AssetID\\\": \\\"\\\",\\n                \\\"Region\\\": \\\"\\\",\\n                \\\"Owner\\\": \\\"公司名称\\\",\\n                \\\"PlatID\\\": \\\"1\\\",\\n                \\\"ApplicationID\\\": \\\"1\\\"\\n            }\\n        }\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_company_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_list_by_field/\",\n    \"title\": \"get_host_list_by_field\",\n    \"name\": \"get_host_list_by_field\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据主机属性的值group主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>app标识</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"field\",\n            \"description\": \"<p>主机属性字段</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"appId\\\": \\\"1\\\",\\n    \\\"field\\\": \\\"OSName\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"message\\\": \\\"\\\",\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": {\\n      \\\"\\\": [\\n        {\\n          \\\"Source\\\": \\\"1\\\",\\n          \\\"ApplicationID\\\": \\\"1\\\",\\n          \\\"HostID\\\": \\\"66\\\",\\n          \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n          \\\"OSName\\\": \\\"\\\"\\n        },\\n        {\\n          \\\"Source\\\": \\\"1\\\",\\n          \\\"ApplicationID\\\": \\\"1\\\",\\n          \\\"HostID\\\": \\\"67\\\",\\n          \\\"InnerIP\\\": \\\"10.0.0.2\\\",\\n          \\\"OSName\\\": \\\"\\\"\\n        }\\n      ]\\n    },\\n    \\\"result\\\": true\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_list_by_field.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_list_by_ip/\",\n    \"title\": \"get_host_list_by_ip\",\n    \"name\": \"get_host_list_by_ip\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据IP查询主机信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机IP(内网IP或外网IP)</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"ip\\\": \\\"10.0.0.1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"70\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\",\\n            \\\"ModuleID\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_list_by_ip.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_hosts_by_property/\",\n    \"title\": \"get_hosts_by_property\",\n    \"name\": \"get_hosts_by_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据 set 属性查询主机</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_id\",\n            \"description\": \"<p>大区ID，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_envi_type\",\n            \"description\": \"<p>Set 环境类型，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_service_status\",\n            \"description\": \"<p>Set 开放状态，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名称，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"set_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Source\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_hosts_by_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_ip_and_proxy_by_company/\",\n    \"title\": \"get_ip_and_proxy_by_company\",\n    \"name\": \"get_ip_and_proxy_by_company\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下IP及ProxyIP</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>内网IP列表，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"plat_id\\\": 1,\\n    \\\"ip_list\\\": \\\"10.0.0.1,10.0.0.2\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"proxy_list\\\": [],\\n        \\\"ip_list\\\": [\\n            \\\"10.0.0.1\\\",\\n            \\\"10.0.0.2\\\",\\n        ],\\n        \\\"invalid_ips\\\": []\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_ip_and_proxy_by_company.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_module_host_list/\",\n    \"title\": \"get_module_host_list\",\n    \"name\": \"get_module_host_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询模块主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"module_id\",\n            \"description\": \"<p>模块ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"module_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"Source\\\": \\\"3\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"Mem\\\": \\\"0\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"ModuleID\\\": \\\"1\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_module_host_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_modules/\",\n    \"title\": \"get_modules\",\n    \"name\": \"get_modules\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下的所有模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        \\\"空闲机\\\"\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_modules.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_modules_by_property/\",\n    \"title\": \"get_modules_by_property\",\n    \"name\": \"get_modules_by_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据 set 属性查询模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务 ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_id\",\n            \"description\": \"<p>大区ID，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_envi_type\",\n            \"description\": \"<p>Set 环境类型，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_service_status\",\n            \"description\": \"<p>Set 开放状态，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"set_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        \\\"空闲机\\\"\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_modules_by_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_plat_id/\",\n    \"title\": \"get_plat_id\",\n    \"name\": \"get_plat_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询子网列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"platId\\\": \\\"1\\\",\\n            \\\"platCompany\\\": \\\"0\\\",\\n            \\\"platName\\\": \\\"esb_test\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_plat_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_process_port_by_app_id/\",\n    \"title\": \"get_process_port_by_app_id\",\n    \"name\": \"get_process_port_by_app_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询进程端口</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_id\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"message\\\": \\\"\\\",\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"示例业务\\\",\\n            \\\"Process\\\": [\\n                {\\n                    \\\"WorkPath\\\": \\\"\\\",\\n                    \\\"AutoTimeGap\\\": \\\"0\\\",\\n                    \\\"LastTime\\\": \\\"2017-06-14 09:57:42\\\",\\n                    \\\"StartCmd\\\": \\\"\\\",\\n                    \\\"FuncID\\\": \\\"0\\\",\\n                    \\\"BindIP\\\": \\\"10.0.0.1\\\",\\n                    \\\"FuncName\\\": \\\"\\\",\\n                    \\\"Flag\\\": \\\"\\\",\\n                    \\\"User\\\": \\\"\\\",\\n                    \\\"StopCmd\\\": \\\"\\\",\\n                    \\\"ProcNum\\\": \\\"0\\\",\\n                    \\\"ReloadCmd\\\": \\\"\\\",\\n                    \\\"ProcessName\\\": \\\"nginx\\\",\\n                    \\\"OpTimeout\\\": \\\"0\\\",\\n                    \\\"KillCmd\\\": \\\"\\\",\\n                    \\\"Protocol\\\": \\\"TCP\\\",\\n                    \\\"Seq\\\": \\\"0\\\",\\n                    \\\"ProcGrp\\\": \\\"\\\",\\n                    \\\"Port\\\": \\\"80\\\",\\n                    \\\"ReStartCmd\\\": \\\"\\\",\\n                    \\\"AutoStart\\\": \\\"0\\\",\\n                    \\\"CreateTime\\\": \\\"2017-06-14 09:55:02\\\",\\n                    \\\"PidFile\\\": \\\"\\\"\\n                }\\n            ],\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Source\\\": \\\"2\\\",\\n            \\\"OuterIP\\\": \\\"123.0.0.1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\"\\n        }\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_process_port_by_app_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_property_list/\",\n    \"title\": \"get_property_list\",\n    \"name\": \"get_property_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询属性列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务 ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"type\",\n            \"description\": \"<p>属性类型，包含1:业务，2:集群，3:模块，4:主机</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"type\\\": \\\"4\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"standard\\\": {\\n                \\\"HostID\\\": \\\"主机ID\\\",\\n                \\\"OuterIP\\\": \\\"外网IP\\\",\\n                \\\"InnerIP\\\": \\\"内网IP\\\"\\n            }\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_property_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_set_host_list/\",\n    \"title\": \"get_set_host_list\",\n    \"name\": \"get_set_host_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询Set主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"set_id\",\n            \"description\": \"<p>SetID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"set_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"Mem\\\": \\\"0\\\",\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\",\\n            \\\"ModuleID\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_set_host_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_set_property/\",\n    \"title\": \"get_set_property\",\n    \"name\": \"get_set_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取所有 set 属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"SetEnviType\\\": [\\n            {\\n                \\\"Property\\\": \\\"2\\\",\\n                \\\"value\\\": \\\"开放4\\\"\\n            }\\n        ],\\n        \\\"SetServiceStatus\\\": [\\n            {\\n                \\\"Property\\\": \\\"0\\\",\\n                \\\"value\\\": \\\"开放4\\\"\\n            }\\n        ]\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_set_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_sets_by_property/\",\n    \"title\": \"get_sets_by_property\",\n    \"name\": \"get_sets_by_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据 set 属性获取 set</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务 ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_envi_type\",\n            \"description\": \"<p>Set 环境类型</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_service_status\",\n            \"description\": \"<p>Set 开放状态</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"SetName\\\": \\\"空闲机池\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_sets_by_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_topo_tree_by_app_id/\",\n    \"title\": \"get_topo_tree_by_app_id\",\n    \"name\": \"get_topo_tree_by_app_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务拓扑树</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"ApplicationName\\\": \\\"资源池\\\",\\n        \\\"Type\\\": \\\"0\\\",\\n        \\\"Children\\\": [\\n            {\\n                \\\"Capacity\\\": \\\"0\\\",\\n                \\\"Description\\\": \\\"\\\",\\n                \\\"SetName\\\": \\\"空闲机池\\\",\\n                \\\"Default\\\": \\\"1\\\",\\n                \\\"ServiceStatus\\\": \\\"\\\",\\n                \\\"ChnName\\\": \\\"\\\",\\n                \\\"EnviType\\\": \\\"\\\",\\n                \\\"Children\\\": [\\n                    {\\n                        \\\"LastTime\\\": \\\"2016-03-18 13:08:19\\\",\\n                        \\\"Description\\\": \\\"\\\",\\n                        \\\"Default\\\": \\\"1\\\",\\n                        \\\"ModuleName\\\": \\\"空闲机\\\",\\n                        \\\"Operator\\\": \\\"\\\",\\n                        \\\"HostNum\\\": 1,\\n                        \\\"SetID\\\": \\\"1\\\",\\n                        \\\"ModuleID\\\": \\\"1\\\",\\n                        \\\"ApplicationID\\\": \\\"1\\\",\\n                        \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\",\\n                        \\\"BakOperator\\\": \\\"\\\"\\n                    }\\n                ],\\n                \\\"Openstatus\\\": \\\"\\\",\\n                \\\"ParentID\\\": \\\"0\\\",\\n                \\\"SetID\\\": \\\"1\\\",\\n                \\\"LastTime\\\": \\\"2016-03-18 13:08:19\\\",\\n                \\\"ApplicationID\\\": \\\"1\\\",\\n                \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\"\\n            }\\n        ],\\n        \\\"Description\\\": \\\"\\\",\\n        \\\"BusinessDeptName\\\": \\\"\\\",\\n        \\\"Creator\\\": \\\"公司名称\\\",\\n        \\\"Default\\\": \\\"1\\\",\\n        \\\"ApplicationID\\\": \\\"1\\\",\\n        \\\"Level\\\": \\\"2\\\",\\n        \\\"Display\\\": \\\"1\\\",\\n        \\\"Source\\\": \\\"0\\\",\\n        \\\"GroupName\\\": \\\"\\\",\\n        \\\"Maintainers\\\": \\\"公司名称\\\",\\n        \\\"CompanyID\\\": \\\"0\\\",\\n        \\\"Owner\\\": \\\"公司名称\\\",\\n        \\\"ProductPm\\\": \\\"\\\",\\n        \\\"LifeCycle\\\": \\\"\\\",\\n        \\\"LastTime\\\": \\\"2016-03-18 13:08:19\\\",\\n        \\\"DeptName\\\": \\\"\\\",\\n        \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_topo_tree_by_app_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_custom_property/\",\n    \"title\": \"update_custom_property\",\n    \"name\": \"update_custom_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>修改主机自定义属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"host_ids\",\n            \"description\": \"<p>主机ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"property\",\n            \"description\": \"<p>自定义属性</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"host_ids\\\": [\\\"1\\\"],\\n    \\\"property\\\": {\\n        \\\"a\\\": \\\"test\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_custom_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_gse_proxy_status/\",\n    \"title\": \"update_gse_proxy_status\",\n    \"name\": \"update_gse_proxy_status\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机gse agent proxy 状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>主机子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机内网IP</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>状态，包含1: 设置gse proxy, 0: 删除gse proxy</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"plat_id\\\": 1,\\n    \\\"ip\\\": \\\"10.0.0.1\\\",\\n    \\\"status\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_gse_proxy_status.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_by_app_id/\",\n    \"title\": \"update_host_by_app_id\",\n    \"name\": \"update_host_by_app_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机的gse agent状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"proxy_list\",\n            \"description\": \"<p>Proxy信息，Proxy中每项包含内容见下面参数描述</p>\"\n          }\n        ],\n        \"proxy_list\": [\n          {\n            \"group\": \"proxy_list\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"inner_ip\",\n            \"description\": \"<p>内网IP</p>\"\n          },\n          {\n            \"group\": \"proxy_list\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"outer_ip\",\n            \"description\": \"<p>外网IP</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 2,\\n    \\\"plat_id\\\": 1,\\n    \\\"proxy_list\\\": [\\n        {\\n            \\\"inner_ip\\\": \\\"10.0.0.1\\\",\\n            \\\"outer_ip\\\": \\\"\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_by_app_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_info/\",\n    \"title\": \"update_host_info\",\n    \"name\": \"update_host_info\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"host_id\",\n            \"description\": \"<p>主机ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"std_property\",\n            \"description\": \"<p>标准属性数据, 数组格式；允许修改的标准属性：HostName, BakOperator, Operator, Description, Source, OSName, DeviceClass, Mem, Cpu, osType</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"cus_property\",\n            \"description\": \"<p>自定义属性</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"host_id\\\": 12345,\\n    \\\"std_property\\\": {\\n        \\\"HostName\\\": \\\"hostname\\\",\\n        \\\"OSName\\\": \\\"linux\\\",\\n        \\\"Cpu\\\": 4,\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": null,\\n    \\\"message\\\": \\\"\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_info.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_module/\",\n    \"title\": \"update_host_module\",\n    \"name\": \"update_host_module\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>修改主机模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>内网IP</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"dst_module_id\",\n            \"description\": \"<p>目标模块ID，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 12,\\n    \\\"ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n    \\\"plat_id\\\": 2,\\n    \\\"dst_module_id\\\": \\\"1232\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": null,\\n    \\\"message\\\": \\\"\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_module.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_plat/\",\n    \"title\": \"update_host_plat\",\n    \"name\": \"update_host_plat\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机云子网</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"src_plat_id\",\n            \"description\": \"<p>主机现子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"dst_plat_id\",\n            \"description\": \"<p>变更后的子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机内网IP</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 2,\\n    \\\"src_plat_id\\\": 1,\\n    \\\"dst_plat_id\\\": 2,\\n    \\\"ip\\\": \\\"10.0.0.1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_plat.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_module_property/\",\n    \"title\": \"update_module_property\",\n    \"name\": \"update_module_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新模块属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"module_ids\",\n            \"description\": \"<p>模块ID，多个以半角逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名称. 模块ID多个时，该值无效</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>维护人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bak_operator\",\n            \"description\": \"<p>备份维护人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"module_type\",\n            \"description\": \"<p>模块类型，包含1：普通模块 2：数据库</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"module_ids\\\": \\\"4\\\",\\n    \\\"module_name\\\": \\\"test\\\",\\n    \\\"module_type\\\": 1\\n   }\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_module_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_set_property/\",\n    \"title\": \"update_set_property\",\n    \"name\": \"update_set_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新集群属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_name\",\n            \"description\": \"<p>集群名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"chn_name\",\n            \"description\": \"<p>中文名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"group_flag\",\n            \"description\": \"<p>分组标识</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"env_type\",\n            \"description\": \"<p>环境类型，包含1：测试 2：体验 3：正式，默认为3</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"service_status\",\n            \"description\": \"<p>服务状态，包含0：关闭，1：开启，默认为1</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"capacity\",\n            \"description\": \"<p>设计容量</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"des\",\n            \"description\": \"<p>描述</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"],\\n    \\\"set_name\\\": \\\"test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_set_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_set_service_status/\",\n    \"title\": \"update_set_service_status\",\n    \"name\": \"update_set_service_status\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>修改集群服务状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>服务状态，包含0：关闭 1：开启</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"],\\n    \\\"status\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_set_service_status.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/noc_notice/\",\n    \"title\": \"noc_notice\",\n    \"name\": \"noc_notice\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>公共语音通知</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"auto_read_message\",\n            \"description\": \"<p>自动语音读字信息</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": true,\n            \"field\": \"user_list_information\",\n            \"description\": \"<p>待通知的用户列表，自动语音通知列表，若user_list_information、receiver__username同时存在，以user_list_information为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>待通知的用户列表，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若user_list_information、receiver__username同时存在，以user_list_information为准</p>\"\n          }\n        ],\n        \"user_list_information\": [\n          {\n            \"group\": \"user_list_information\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"username\",\n            \"description\": \"<p>被通知人</p>\"\n          },\n          {\n            \"group\": \"user_list_information\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"mobile_phone\",\n            \"description\": \"<p>被通知人手机号</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"auto_read_message\\\": \\\"This is a test\\\",\\n    \\\"user_list_information\\\": [{\\n        \\\"username\\\": \\\"admin\\\",\\n        \\\"mobile_phone\\\": \\\"1234567890\\\",\\n    }]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"instance_id\\\": \\\"2662152044\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/noc_notice.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_mail/\",\n    \"title\": \"send_mail\",\n    \"name\": \"send_mail\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送邮件</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver\",\n            \"description\": \"<p>邮件接收者，包含邮件完整地址，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>邮件接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"sender\",\n            \"description\": \"<p>发件人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"title\",\n            \"description\": \"<p>邮件主题</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"content\",\n            \"description\": \"<p>邮件内容</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"cc\",\n            \"description\": \"<p>抄送人，包含邮件完整地址，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"cc__username\",\n            \"description\": \"<p>抄送人，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若cc、cc__username同时存在，以cc为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"body_format\",\n            \"description\": \"<p>邮件格式，包含'Html', 'Text'，默认为'Html'</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_content_base64\",\n            \"description\": \"<p>邮件内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"admin@bking.com\\\",\\n    \\\"sender\\\": \\\"admin@bking.com\\\",\\n    \\\"title\\\": \\\"This is a Test\\\",\\n    \\\"content\\\": \\\"<html>Welcome to Blueking</html>\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"邮件发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_mail.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_mp_weixin/\",\n    \"title\": \"send_mp_weixin\",\n    \"name\": \"send_mp_weixin\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送公众号微信消息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"receiver\",\n            \"description\": \"<p>微信接收者，包含绑定在指定公众号上的微信用户的 openid，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>消息内容</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"heading\",\n            \"description\": \"<p>通知头部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>通知文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"date\",\n            \"description\": \"<p>通知发送时间，默认为当前时间 &quot;YYYY-mm-dd HH:MM&quot;</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"remark\",\n            \"description\": \"<p>通知尾部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_message_base64\",\n            \"description\": \"<p>通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"xxx\\\",\\n    \\\"data\\\": {\\n        \\\"heading\\\": \\\"蓝鲸平台通知\\\",\\n        \\\"message\\\": \\\"This 是 a test.\\\",\\n        \\\"date\\\": \\\"2017-02-22 15:36\\\",\\n        \\\"remark\\\": \\\"zhen 是一个测试！\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"微信消息发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_mp_weixin.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_sms/\",\n    \"title\": \"send_sms\",\n    \"name\": \"send_sms\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送短信</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver\",\n            \"description\": \"<p>短信接收者，包含接收者电话号码，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>短信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"content\",\n            \"description\": \"<p>短信内容</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_content_base64\",\n            \"description\": \"<p>消息内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"1234567890\\\",\\n    \\\"receiver__username\\\": \\\"admin\\\",\\n    \\\"content\\\": \\\"Welcome to Blueking\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"短信发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_sms.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_weixin/\",\n    \"title\": \"send_weixin\",\n    \"name\": \"send_weixin\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送微信消息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver\",\n            \"description\": \"<p>微信接收者，包含绑定在指定公众号上的微信用户的 openid 或 企业号上的微信用户的用户ID，多个以逗号分隔 |</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>微信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>消息内容</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"heading\",\n            \"description\": \"<p>通知头部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>通知文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"date\",\n            \"description\": \"<p>通知发送时间，默认为当前时间 &quot;YYYY-mm-dd HH:MM&quot;</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"remark\",\n            \"description\": \"<p>通知尾部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_message_base64\",\n            \"description\": \"<p>通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"xxx\\\",\\n    \\\"data\\\": {\\n        \\\"heading\\\": \\\"蓝鲸平台通知\\\",\\n        \\\"message\\\": \\\"This 是 a test.\\\",\\n        \\\"date\\\": \\\"2017-02-22 15:36\\\",\\n        \\\"remark\\\": \\\"zhen 是一个测试！\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"微信消息发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_weixin.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/change_cron_status/\",\n    \"title\": \"change_cron_status\",\n    \"name\": \"change_cron_status\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新定时作业状态 ，如启动或暂停；操作者必须是业务的创建人或运维</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>作业状态，1.启动、2.暂停</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"crontab_task_id\",\n            \"description\": \"<p>定时任务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"status\\\": \\\"1\\\",\\n    \\\"crontab_task_id\\\": 123,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"crontabTaskId\\\": 2\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/change_cron_status.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/execute_task/\",\n    \"title\": \"execute_task\",\n    \"name\": \"execute_task\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据作业模板ID启动作业</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>作业ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"steps\",\n            \"description\": \"<p>步骤参数，每项的具体参数见下面描述</p>\"\n          }\n        ],\n        \"steps\": [\n          {\n            \"group\": \"steps\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"scriptTimeout\",\n            \"description\": \"<p>脚本超时时间</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"scriptParam\",\n            \"description\": \"<p>脚本参数</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"scriptId\",\n            \"description\": \"<p>脚本ID</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"stepId\",\n            \"description\": \"<p>步骤ID，可以只指定某几步执行</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ipList\",\n            \"description\": \"<p>IP列表格式：子网ID:IP，多个之间逗号，分割，例如：1:10.0.0.1,1:10.0.0.2</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"account\",\n            \"description\": \"<p>执行账户账户名</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"fileTargetPath\",\n            \"description\": \"<p>目标路径</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"array\",\n            \"optional\": true,\n            \"field\": \"fileSource\",\n            \"description\": \"<p>源文件信息，整个参数替换，不支持内部某个变量替换。格式参考下面说明</p>\"\n          }\n        ],\n        \"fileSource\": [\n          {\n            \"group\": \"fileSource\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"file\",\n            \"description\": \"<p>源文件路径，如：/tmp/t.txt</p>\"\n          },\n          {\n            \"group\": \"fileSource\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ipList\",\n            \"description\": \"<p>源文件服务器地址，格式为：子网ID:IP，多个之间逗号分割</p>\"\n          },\n          {\n            \"group\": \"fileSource\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>源文件机器执行账户账户名</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"task_id\\\": \\\"195\\\",\\n    \\\"steps\\\": [{\\n        \\\"scriptTimeout\\\": 1000,\\n        \\\"scriptParam\\\": \\\"-a\\\",\\n        \\\"ipList\\\": \\\"1:10.0.0.1,1:10.0.0.2\\\",\\n        \\\"scriptId\\\": 203,\\n        \\\"stepId\\\": 244,\\n        \\\"account\\\": \\\"root\\\",\\n    },\\n    {\\n        \\\"fileTargetPath\\\": \\\"/tmp/[FILESRCIP]/\\\",\\n        \\\"fileSource\\\": [{\\n            \\\"file\\\": \\\"/tmp/t.txt\\\",\\n            \\\"ipList\\\": \\\"1:10.0.0.3,1:10.0.0.4\\\",\\n            \\\"account\\\": \\\"root\\\",\\n        }],\\n        \\\"ipList\\\": \\\"1:10.0.0.1,1:10.0.0.2\\\",\\n        \\\"stepId\\\": 246,\\n        \\\"account\\\": \\\"root\\\",\\n    }]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"测试\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/execute_task.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/execute_task_ext/\",\n    \"title\": \"execute_task_ext\",\n    \"name\": \"execute_task_ext\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>启动作业Ext(带全局变量启动)</p> <p>如果全局变量的类型为IP，参数值必须包含groupIds或ipList。没有设置的参数将使用作业模版中的默认值</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>作业ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"global_var\",\n            \"description\": \"<p>全局变量信息，作业包含的全局变量和类型可以通过接口“查询作业模板详情”(get_task_detail)获取</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"46\\\",\\n    \\\"task_id\\\": \\\"195\\\",\\n    \\\"global_var\\\": [{\\n        \\\"id\\\": 436,\\n        \\\"ipList\\\": \\\"1:10.0.0.1\\\",\\n    },\\n    {\\n        \\\"id\\\": 437,\\n        \\\"value\\\": \\\"newValue\\\",\\n    }]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"测试\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/execute_task_ext.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/fast_execute_script/\",\n    \"title\": \"fast_execute_script\",\n    \"name\": \"fast_execute_script\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>快速执行脚本</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"content\",\n            \"description\": \"<p>执行脚本步骤的脚本内容，base64编码后的内容</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"script_timeout\",\n            \"description\": \"<p>脚本执行超时时间，范围60~3600，默认1000</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"script_param\",\n            \"description\": \"<p>脚本执行参数</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"type\",\n            \"description\": \"<p>脚本类型：1(shell脚本)、2(bat脚本)、3(perl脚本)、4(python脚本)、5(Powershell脚本)</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>目标机器，包含以下内容：</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>目标机器账户名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"is_param_sensitive\",\n            \"description\": \"<p>是否敏感参数: 1是, 0不是(默认为0)</p>\"\n          }\n        ],\n        \"ip_list\": [\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>IP地址</p>\"\n          },\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"source\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"content\\\": \\\"xxx\\\",\\n    \\\"ip_list\\\": [\\n        {\\n            \\\"ip\\\": \\\"10.0.0.1\\\",\\n            \\\"source\\\": 1\\n        }\\n    ],\\n    \\\"type\\\": 1,\\n    \\\"account\\\": \\\"root\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"API执行脚本1456715609220\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/fast_execute_script.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/fast_push_file/\",\n    \"title\": \"fast_push_file\",\n    \"name\": \"fast_push_file\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>快速分发文件</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"file_source\",\n            \"description\": \"<p>源文件信息，包含内容见下面参数描述</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"file_target_path\",\n            \"description\": \"<p>目标路径</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>目标机器，包含内容见下面参数描述</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"target_app_id\",\n            \"description\": \"<p>目标机器所属业务，全业务需要</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>目标机器账户名</p>\"\n          }\n        ],\n        \"file_source\": [\n          {\n            \"group\": \"file_source\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"source_app_id\",\n            \"description\": \"<p>为源机器所属业务，全业务需要</p>\"\n          },\n          {\n            \"group\": \"file_source\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"file\",\n            \"description\": \"<p>源文件路径</p>\"\n          },\n          {\n            \"group\": \"file_source\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>IP信息，其中包含ip（源文件服务器IP）和source（IP的子网ID）</p>\"\n          },\n          {\n            \"group\": \"file_source\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>源文件服务器账户名</p>\"\n          }\n        ],\n        \"ip_list\": [\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>IP地址</p>\"\n          },\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"source\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"46\\\",\\n    \\\"file_source\\\": [\\n        {\\n            \\\"account\\\": \\\"root\\\",\\n            \\\"ip_list\\\": [\\n                {\\n                    \\\"ip\\\": \\\"10.0.0.1\\\",\\n                    \\\"source\\\": 1\\n                }\\n            ],\\n            \\\"file\\\": \\\"/tmp/tmp.txt\\\"\\n        }\\n    ],\\n    \\\"account\\\": \\\"root\\\",\\n    \\\"file_target_path\\\": \\\"/tmp\\\",\\n    \\\"ip_list\\\": [\\n        {\\n            \\\"ip\\\": \\\"10.0.0.2\\\",\\n            \\\"source\\\": 1\\n        }\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"API分发文件1456316951760\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/fast_push_file.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/get_agent_status/\",\n    \"title\": \"get_agent_status\",\n    \"name\": \"get_agent_status\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询Agent状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_infos\",\n            \"description\": \"<p>IP信息，每项条目包含信息见下面参数描述</p>\"\n          }\n        ],\n        \"ip_infos\": [\n          {\n            \"group\": \"ip_infos\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>IP地址</p>\"\n          },\n          {\n            \"group\": \"ip_infos\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"ip_infos\\\": [\\n        {\\n            \\\"ip\\\": \\\"10.0.0.1\\\",\\n            \\\"plat_id\\\": 1,\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"status\\\": 1,\\n            \\\"ip\\\": \\\"10.0.0.1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"Number\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>主机Agent状态码，1.正常; 0.异常</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_agent_status.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_cron/\",\n    \"title\": \"get_cron\",\n    \"name\": \"get_cron\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下定时作业信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"crontab_task_id\",\n            \"description\": \"<p>定时任务ID，如果存在，则忽略其他筛选条件，只查询这个指定的作业信息</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"name\",\n            \"description\": \"<p>定时作业的名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"status\",\n            \"description\": \"<p>作业的状态：1.已启动、2.已暂停、3.已完成</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"creater\",\n            \"description\": \"<p>作业创建人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_user\",\n            \"description\": \"<p>最后修改人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_start\",\n            \"description\": \"<p>创建起始时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_end\",\n            \"description\": \"<p>创建结束时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_start\",\n            \"description\": \"<p>最后修改起始时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_end\",\n            \"description\": \"<p>最后修改结束时间，YYYY-MM-DD格式</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"crontab_task_id\\\": 123456,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"status\\\": 1,\\n            \\\"lastModifyUser\\\": \\\"admin\\\",\\n            \\\"des\\\": \\\"\\\",\\n            \\\"createTime\\\": \\\"2017-03-01 19:45:51\\\",\\n            \\\"creater\\\": \\\"admin\\\",\\n            \\\"lastModifyTime\\\": \\\"2017-03-01 20:01:08\\\",\\n            \\\"cronExpression\\\": \\\"2 0/5 * * * ?\\\",\\n            \\\"taskId\\\": 5,\\n            \\\"appId\\\": 3,\\n            \\\"taskName\\\": \\\"de\\\",\\n            \\\"type\\\": 0,\\n            \\\"id\\\": 2,\\n            \\\"name\\\": \\\"hello test2 a\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_cron.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task/\",\n    \"title\": \"get_task\",\n    \"name\": \"get_task\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询作业模板</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"name\",\n            \"description\": \"<p>作业名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"creater\",\n            \"description\": \"<p>创建人QQ号</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_user\",\n            \"description\": \"<p>最后修改人QQ号</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_start\",\n            \"description\": \"<p>创建起始时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_end\",\n            \"description\": \"<p>创建结束时间 YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_start\",\n            \"description\": \"<p>最后修改起始时间 YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_end\",\n            \"description\": \"<p>最后修改结束时间YYYY-MM-DD格式</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"name\\\": \\\"hotest\\\",\\n    \\\"creater\\\": \\\"12345\\\",\\n    \\\"last_modify_user\\\": \\\"12345\\\",\\n    \\\"create_time_start\\\": \\\"2016-02-22 23:12:34\\\",\\n    \\\"create_time_end\\\": \\\"2016-02-22 23:12:34\\\",\\n    \\\"last_modify_time_start\\\": \\\"2016-02-22 23:12:34\\\",\\n    \\\"last_modify_time_end\\\": \\\"2016-02-22 23:12:34\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"account\\\": \\\"\\\",\\n            \\\"name\\\": \\\"hotest\\\",\\n            \\\"creater\\\": \\\"12345\\\",\\n            \\\"stepNum\\\": 1,\\n            \\\"serverSetId\\\": 0,\\n            \\\"nmStepBeanList\\\": [],\\n            \\\"lastModifyTime\\\": \\\"2016-02-22 23:12:34\\\",\\n            \\\"appId\\\": 46,\\n            \\\"id\\\": 190,\\n            \\\"ipList\\\": \\\"\\\",\\n            \\\"createTime\\\": \\\"2016-02-22 23:12:34\\\",\\n            \\\"lastModifyUser\\\": \\\"12345\\\"\\n        },\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task_detail/\",\n    \"title\": \"get_task_detail\",\n    \"name\": \"get_task_detail\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询作业模板详情</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>作业模板ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"task_id\\\": 192\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"account\\\": \\\"\\\",\\n        \\\"name\\\": \\\"demo演示\\\",\\n        \\\"creater\\\": \\\"12345\\\",\\n        \\\"stepNum\\\": 0,\\n        \\\"serverSetId\\\": 0,\\n        \\\"nmStepBeanList\\\": [\\n            {\\n                \\\"ccScriptName\\\": \\\"\\\",\\n                \\\"text\\\": \\\"\\\",\\n                \\\"serverSetId\\\": 0,\\n                \\\"stepId\\\": 524,\\n                \\\"ipList\\\": \\\"1:10.0.0.1\\\",\\n                \\\"serverSetName\\\": \\\"\\\",\\n                \\\"ccScriptId\\\": 0,\\n                \\\"fileSpeedLimit\\\": 0,\\n                \\\"scriptTimeout\\\": 1000,\\n                \\\"scriptParam\\\": \\\"\\\",\\n                \\\"scriptContent\\\": \\\"xxx\\\",\\n                \\\"lastModifyTime\\\": \\\"\\\",\\n                \\\"fileSource\\\": \\\"\\\",\\n                \\\"type\\\": 1,\\n                \\\"scriptType\\\": 4,\\n                \\\"lastModifyUser\\\": \\\"\\\",\\n                \\\"blockName\\\": \\\"step1\\\",\\n                \\\"paramType\\\": 1,\\n                \\\"fileTargetPath\\\": \\\"\\\",\\n                \\\"scriptId\\\": 523,\\n                \\\"taskId\\\": 195,\\n                \\\"appId\\\": 46,\\n                \\\"isPause\\\": 0,\\n                \\\"ord\\\": 1,\\n                \\\"createTime\\\": \\\"2016-02-24 21:50:31\\\",\\n                \\\"account\\\": \\\"root\\\",\\n                \\\"name\\\": \\\"作业执行步骤1\\\",\\n                \\\"companyId\\\": 15,\\n                \\\"creater\\\": \\\"12345\\\",\\n                \\\"ccScriptParam\\\": \\\"\\\",\\n                \\\"blockOrd\\\": 1\\n            },\\n        ],\\n        \\\"lastModifyTime\\\": \\\"2016-02-26 16:15:43\\\",\\n        \\\"appId\\\": 46,\\n        \\\"id\\\": 195,\\n        \\\"ipList\\\": \\\"\\\",\\n        \\\"createTime\\\": \\\"2016-02-24 21:50:31\\\",\\n        \\\"lastModifyUser\\\": \\\"12345\\\",\\n        \\\"globalVarList\\\":[\\n            {\\n                \\\"id\\\": 11,\\n                \\\"type\\\": 1,\\n                \\\"name\\\": \\\"varA1\\\",\\n                \\\"defaultValue\\\": \\\"valueisMe\\\",\\n                \\\"appId\\\": 3,\\n                \\\"taskId\\\": 13,\\n                \\\"description\\\": \\\"字符串全局变量\\\",\\n                \\\"stepIds\\\": \\\"1\\\",\\n                \\\"ipListStatus\\\": [],\\n                \\\"ccGroupInfoList\\\": []\\n            },\\n            {\\n                \\\"id\\\": 12,\\n                \\\"type\\\": 2,\\n                \\\"name\\\": \\\"id-201782815057397\\\",\\n                \\\"ipList\\\": \\\"1:10.0.0.1,1:10.0.0.2\\\",\\n                \\\"serverSetId\\\": \\\"\\\",\\n                \\\"ccServerSetId\\\": \\\"\\\",\\n                \\\"appId\\\": 3,\\n                \\\"taskId\\\": 13,\\n                \\\"description\\\": \\\"IP全局变量\\\",\\n                \\\"stepIds\\\": \\\"13\\\",\\n                \\\"ipListStatus\\\": [\\n                    {\\n                        \\\"ip\\\": \\\"10.0.0.1\\\",\\n                        \\\"source\\\": 1,\\n                        \\\"alived\\\": 0,\\n                        \\\"valid\\\": 1,\\n                        \\\"name\\\": \\\"host\\\",\\n                        \\\"displayIp\\\": \\\"10.0.0.1\\\"\\n                    },\\n                    {\\n                        \\\"ip\\\": \\\"10.0.0.2\\\",\\n                        \\\"source\\\": 1,\\n                        \\\"alived\\\": 0,\\n                        \\\"valid\\\": 1,\\n                        \\\"name\\\": \\\"host\\\",\\n                        \\\"displayIp\\\": \\\"10.0.0.2\\\"\\n                    }\\n                ],\\n                \\\"ccGroupInfoList\\\": []\\n            }\\n        ]\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task_detail.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task_ip_log/\",\n    \"title\": \"get_task_ip_log\",\n    \"name\": \"get_task_ip_log\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据作业实例ID查询作业执行日志</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_instance_id\",\n            \"description\": \"<p>作业实例ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"task_instance_id\\\": \\\"100932\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"isFinished\\\": true,\\n            \\\"stepInstanceName\\\": \\\"读取文件\\\",\\n            \\\"stepAnalyseResult\\\": [\\n                {\\n                    \\\"count\\\": \\\"1\\\",\\n                    \\\"resultType\\\": 9,\\n                    \\\"ipLogContent\\\": [\\n                        {\\n                            \\\"status\\\": 9,\\n                            \\\"totalTime\\\": 0.24799999594688416,\\n                            \\\"stepInstanceId\\\": 156965,\\n                            \\\"isJobIp\\\": 1,\\n                            \\\"ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n                            \\\"errCode\\\": 0,\\n                            \\\"source\\\": 1,\\n                            \\\"logContent\\\": \\\"QlpoOTFBWSZTWekFHDQAGcHf+XMyQA...\\\",\\n                            \\\"startTime\\\": \\\"2016-06-12 14:29:39\\\",\\n                            \\\"retryCount\\\": 0,\\n                            \\\"endTime\\\": \\\"2016-06-12 14:29:39\\\",\\n                            \\\"exitCode\\\": 0\\n                        }\\n                    ],\\n                    \\\"resultTypeText\\\": \\\"执行成功\\\"\\n                }\\n            ],\\n            \\\"stepInstanceId\\\": 156965,\\n            \\\"stepInstanceStatus\\\": 3\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"ipLogContent\": [\n          {\n            \"group\": \"ipLogContent\",\n            \"type\": \"Number\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>主机任务状态码， 1.Agent异常; 3.上次已成功; 5.等待执行; 7.正在执行; 9.执行成功; 11.任务失败; 12.任务下发失败; 13.任务超时; 15.任务日志错误; 101.脚本执行失败; 102.脚本执行超时; 103.脚本执行被终止; 104.脚本返回码非零; 202.文件传输失败; 203.源文件不存在; 310.Agent异常; 311.用户名不存在; 320.文件获取失败; 321.文件超出限制; 329.文件传输错误; 399.任务执行出错</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task_ip_log.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task_result/\",\n    \"title\": \"get_task_result\",\n    \"name\": \"get_task_result\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据作业实例 ID 查询作业执行状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_instance_id\",\n            \"description\": \"<p>作业实例ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"task_instance_id\\\": \\\"65\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"isFinished\\\": true,\\n        \\\"taskInstance\\\": {\\n            \\\"status\\\": 3,\\n            \\\"totalTime\\\": 0,\\n            \\\"endTime\\\": \\\"2015-09-09 15:05:32\\\",\\n            \\\"startTime\\\": \\\"2015-09-09 15:05:32\\\",\\n            \\\"operationList\\\": [],\\n            \\\"startWay\\\": 1,\\n            \\\"taskId\\\": -1,\\n            \\\"appId\\\": 1,\\n            \\\"operator\\\": \\\"2797261603\\\",\\n            \\\"taskInstanceId\\\": 65,\\n            \\\"currentStepId\\\": 75,\\n            \\\"createTime\\\": \\\"2015-09-09 15:05:31\\\",\\n            \\\"name\\\": \\\"执行脚本-20158915516182\\\"\\n        },\\n        \\\"blocks\\\": [\\n            {\\n                \\\"type\\\": 1,\\n                \\\"stepInstances\\\": [\\n                    {\\n                        \\\"totalTime\\\": 0,\\n                        \\\"failIPNum\\\": 0,\\n                        \\\"text\\\": null,\\n                        \\\"successIPNum\\\": 2,\\n                        \\\"isPause\\\": 0,\\n                        \\\"operator\\\": \\\"2797261603\\\",\\n                        \\\"stepInstanceId\\\": 75,\\n                        \\\"taskInstanceId\\\": 65,\\n                        \\\"type\\\": 1,\\n                        \\\"badIPNum\\\": 0,\\n                        \\\"status\\\": 3,\\n                        \\\"stepId\\\": -1,\\n                        \\\"blockName\\\": \\\"执行脚本-20158915516182\\\",\\n                        \\\"operationList\\\": [],\\n                        \\\"startTime\\\": \\\"2015-09-09 15:05:32\\\",\\n                        \\\"appId\\\": 1,\\n                        \\\"totalIPNum\\\": 2,\\n                        \\\"ord\\\": 1,\\n                        \\\"createTime\\\": \\\"2015-09-09 15:05:31\\\",\\n                        \\\"name\\\": \\\"执行脚本-20158915516182\\\",\\n                        \\\"blockOrd\\\": 1,\\n                        \\\"retryCount\\\": 0,\\n                        \\\"endTime\\\": \\\"2015-09-09 15:05:32\\\",\\n                        \\\"runIPNum\\\": 2\\n                    }\\n                ],\\n                \\\"blockOrd\\\": 1,\\n                \\\"blockName\\\": \\\"执行脚本-20158915516182\\\"\\n            }\\n        ]\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"Number\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>任务状态码， 1.未执行; 2.正在执行; 3.执行成功; 4.执行失败; 5.跳过; 6.忽略错误; 7.等待用户; 8.手动结束; 9.状态异常; 10.步骤强制终止中; 11.步骤强制终止成功; 12.步骤强制终止失败</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task_result.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/save_cron/\",\n    \"title\": \"save_cron\",\n    \"name\": \"save_cron\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建或保存定时作业 ；新建定时作业，作业状态默认为暂停；操作者必须是业务的创建人或运维</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"name\",\n            \"description\": \"<p>定时作业的名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>要定时执行的作业的作业ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"crontab_task_id\",\n            \"description\": \"<p>定时任务ID，更新定时任务时，必须传这个值</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"cron_expression\",\n            \"description\": \"<p>定时任务crontab的定时规则，各自段含义为：秒 分 时 日 月 周 年（可选），如: 0 0/5 * * * ?  表示每5分钟执行一次</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"name\\\": \\\"hotest\\\",\\n    \\\"task_id\\\": 123,\\n    \\\"cron_expression\\\": \\\"0 0/5 * * * ?\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"crontabTaskId\\\": 2\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/save_cron.js\",\n    \"groupTitle\": \"API_JOB\"\n  }\n] });\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/api_data.json",
    "content": "[\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_all_user/\",\n    \"title\": \"get_all_user\",\n    \"name\": \"get_all_user\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取所有用户信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，0：普通用户，1：管理员，2：开发者</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"username\\\": \\\"admin\\\",\\n            \\\"qq\\\": \\\"12345\\\",\\n            \\\"phone\\\": \\\"12345678911\\\",\\n            \\\"role\\\": \\\"1\\\",\\n            \\\"email\\\": \\\"11@qq.com\\\",\\n            \\\"chname\\\": \\\"管理员\\\"\\n        },\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_all_user.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_batch_user/\",\n    \"title\": \"get_batch_user\",\n    \"name\": \"get_batch_user\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取多个用户信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"username_list\",\n            \"description\": \"<p>待获取信息的用户名列表</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"username_list\\\": \\\"admin;test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": {\\n        \\\"admin\\\": {\\n            \\\"username\\\": \\\"admin\\\",\\n            \\\"qq\\\": \\\"123123\\\",\\n            \\\"phone\\\": \\\"11111111111\\\",\\n            \\\"role\\\": \\\"1\\\",\\n            \\\"email\\\": \\\"11@qq.com\\\",\\n            \\\"chname\\\": \\\"admin\\\"\\n        }\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，0：普通用户，1：管理员，2：开发者</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_batch_user.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_batch_user_platform_role/\",\n    \"title\": \"get_batch_user_platform_role\",\n    \"name\": \"get_batch_user_platform_role\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取多个用户在平台应用的角色</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"username_list\",\n            \"description\": \"<p>待获取信息的用户名列表</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"username_list\\\": \\\"admin;test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": {\\n        \\\"admin\\\": {\\n            \\\"bkdata\\\": [1],\\n            \\\"job\\\": [1],\\n            \\\"cmdb\\\": [1, 2]\\n        }\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"list\",\n            \"optional\": false,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，1：管理员，2：操作员</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_batch_user_platform_role.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_login/get_user/\",\n    \"title\": \"get_user\",\n    \"name\": \"get_user\",\n    \"group\": \"API_BK_LOGIN\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取用户信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"用户信息获取成功\\\",\\n    \\\"data\\\": {\\n        \\\"username\\\": \\\"admin\\\",\\n        \\\"qq\\\": \\\"12345\\\",\\n        \\\"phone\\\": \\\"12345678911\\\",\\n        \\\"role\\\": \\\"1\\\",\\n        \\\"email\\\": \\\"11@qq.com\\\",\\n        \\\"chname\\\": \\\"管理员\\\"\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"role\",\n            \"description\": \"<p>用户角色，0：普通用户，1：管理员，2：开发者</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/bk_login/apidoc/get_user.js\",\n    \"groupTitle\": \"API_BK_LOGIN\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/bk_paas/get_app_info/\",\n    \"title\": \"get_app_info\",\n    \"name\": \"get_app_info\",\n    \"group\": \"API_BK_PAAS\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取应用信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"target_app_code\",\n            \"description\": \"<p>目标蓝鲸应用ID，多个以英文逗号分隔，为空则表示所有应用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"target_app_code\\\": \\\"bk_test,esb_test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"app_code\\\": \\\"bk_test\\\",\\n            \\\"app_name\\\": \\\"BKTest\\\"\\n        },\\n        {\\n            \\\"app_code\\\": \\\"esb_test\\\",\\n            \\\"app_name\\\": \\\"ESBTest\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/bk_paas/apidoc/get_app_info.js\",\n    \"groupTitle\": \"API_BK_PAAS\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_app/\",\n    \"title\": \"add_app\",\n    \"name\": \"add_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_name\",\n            \"description\": \"<p>业务名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"maintainers\",\n            \"description\": \"<p>运维人员, 多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"product_pm\",\n            \"description\": \"<p>产品人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"developer\",\n            \"description\": \"<p>开发人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"tester\",\n            \"description\": \"<p>测试人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>操作者，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"company_name\",\n            \"description\": \"<p>公司名,cmdb配置文件中定义的constants.php中的 COMPANY_NAME</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"level\",\n            \"description\": \"<p>业务拓扑级别，2或者3</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"life_cycle\",\n            \"description\": \"<p>生成周期，测试中, 已上线, 停运其中的一个值</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_name\\\": \\\"测试\\\",\\n    \\\"maintainers\\\": \\\"admin\\\",\\n    \\\"product_pm\\\": \\\"admin\\\",\\n    \\\"company_name\\\": \\\"公司名称\\\",\\n    \\\"level\\\": 3,\\n    \\\"life_cycle\\\": \\\"测试中\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"appId\\\": 25\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_module/\",\n    \"title\": \"add_module\",\n    \"name\": \"add_module\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"set_id\",\n            \"description\": \"<p>集群ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名，多个用英文逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>操作人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bak_operator\",\n            \"description\": \"<p>备份操作人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"module_type\",\n            \"description\": \"<p>模块类型，1: 普通, 2: 数据库</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": true,\n            \"field\": \"properties\",\n            \"description\": \"<p>模块属性，自定义属性用customerxx来修改</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"set_id\\\": 10,\\n    \\\"module_name\\\": \\\"test1,test2\\\",\\n    \\\"module_type\\\": 1,\\n    \\\"operator\\\": \\\"user1\\\",\\n    \\\"bak_operator\\\": \\\"user2\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {},\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_module.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_plat_id/\",\n    \"title\": \"add_plat_id\",\n    \"name\": \"add_plat_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新增子网ID</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"plat_name\",\n            \"description\": \"<p>子网名称</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"plat_name\\\": \\\"test_plat\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": 2,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_plat_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/add_set/\",\n    \"title\": \"add_set\",\n    \"name\": \"add_set\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建集群</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"set_names\",\n            \"description\": \"<p>集群名称，多个以半角逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"chn_name\",\n            \"description\": \"<p>中文名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"group_flag\",\n            \"description\": \"<p>分组标识</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"env_type\",\n            \"description\": \"<p>环境类型，包含1：测试 2：体验 3：正式，默认为3</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"service_status\",\n            \"description\": \"<p>服务状态，包含0：关闭，1：开启，默认为1</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"capacity\",\n            \"description\": \"<p>设计容量</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"des\",\n            \"description\": \"<p>描述</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_names\\\": \\\"test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/add_set.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/clone_host_property/\",\n    \"title\": \"clone_host_property\",\n    \"name\": \"clone_host_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>克隆主机属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"org_ip\",\n            \"description\": \"<p>主机（内网IP）</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"dst_ip\",\n            \"description\": \"<p>目标主机（内网IP）</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 12,\\n    \\\"plat_id\\\": 2,\\n    \\\"org_ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n    \\\"dst_ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": null,\\n    \\\"message\\\": \\\"\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/clone_host_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_app/\",\n    \"title\": \"del_app\",\n    \"name\": \"del_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {}\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_host_in_app/\",\n    \"title\": \"del_host_in_app\",\n    \"name\": \"del_host_in_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>从业务空闲机集群中删除主机 ，如果主机在当前业务下不存在，也提示不在空闲机集群的错误信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"host_id\",\n            \"description\": \"<p>主机ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"host_id\\\": 12345\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_host_in_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_module/\",\n    \"title\": \"del_module\",\n    \"name\": \"del_module\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"module_ids\",\n            \"description\": \"<p>模块ID, 多个ID用英文逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"module_ids\\\": \\\"10,11\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {}\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_module.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_plat/\",\n    \"title\": \"del_plat\",\n    \"name\": \"del_plat\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除子网</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"plat_id\\\": 1234,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_plat.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_set/\",\n    \"title\": \"del_set\",\n    \"name\": \"del_set\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>删除集群</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_set.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/del_set_host/\",\n    \"title\": \"del_set_host\",\n    \"name\": \"del_set_host\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>清空集群下所有主机</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/del_set_host.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/edit_app/\",\n    \"title\": \"edit_app\",\n    \"name\": \"edit_app\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>编辑业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"app_name\",\n            \"description\": \"<p>业务名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"maintainers\",\n            \"description\": \"<p>运维人员, 多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"product_pm\",\n            \"description\": \"<p>产品人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"developer\",\n            \"description\": \"<p>开发人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"tester\",\n            \"description\": \"<p>测试人员，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>操作者，多个人之间用逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"life_cycle\",\n            \"description\": \"<p>生成周期，测试中, 已上线, 停运其中的一个值</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"app_name\\\": \\\"测试\\\",\\n    \\\"operator\\\": \\\"test1,test2\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {},\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/edit_app.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/enter_ip/\",\n    \"title\": \"enter_ip\",\n    \"name\": \"enter_ip\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>导入主机到业务 ，如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系如果业务不存在，将导入到资源池中，如果主机已经存在，将会删除原有主机与模块的关系</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ips\",\n            \"description\": \"<p>IP地址，多个用英文逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"hostname\",\n            \"description\": \"<p>主机名, 多个用英文逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"app_name\",\n            \"description\": \"<p>业务名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_name\",\n            \"description\": \"<p>集群名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"os_type\",\n            \"description\": \"<p>操作系统类型，linux或windows</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"ips\\\": \\\"10.10.10.10,10.10.10.11\\\",\\n    \\\"hostname\\\": \\\"test\\\",\\n    \\\"app_name\\\": \\\"test\\\",\\n    \\\"set_name\\\": \\\"test\\\",\\n    \\\"module_name\\\": \\\"test\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/enter_ip.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_agent_status/\",\n    \"title\": \"get_app_agent_status\",\n    \"name\": \"get_app_agent_status\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下Agent状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"message\\\": \\\"\\\",\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": {\\n        \\\"agentNorList\\\": [ ],\\n        \\\"agentAbnorCnt\\\": 3,\\n        \\\"agentNorCnt\\\": 0,\\n        \\\"agentAbnorList\\\": [\\n            {\\n                \\\"Ip\\\": \\\"10.0.0.1\\\",\\n                \\\"PlatId\\\": \\\"1\\\",\\n                \\\"CompanyId\\\": 0\\n            },\\n            {\\n                \\\"Ip\\\": \\\"10.0.0.2\\\",\\n                \\\"PlatId\\\": \\\"1\\\",\\n                \\\"CompanyId\\\": 0\\n            },\\n            {\\n                \\\"Ip\\\": \\\"10.0.0.3\\\",\\n                \\\"PlatId\\\": \\\"1\\\",\\n                \\\"CompanyId\\\": 0\\n            },\\n        ]\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"error\": {\n      \"examples\": [\n        {\n          \"title\": \"Error-Response:\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"code\\\": \\\"50000\\\",\\n    \\\"error\\\": {\\n        \\\"error_data\\\": {\\n            \\\"api_spec\\\": {\\n            }\\n        }\\n    },\\n    \\\"result\\\": false,\\n    \\\"message\\\": \\\"没权利访问业务\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_agent_status.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_by_id/\",\n    \"title\": \"get_app_by_id\",\n    \"name\": \"get_app_by_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 516\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"测试版\\\",\\n            \\\"GroupName\\\": \\\"\\\",\\n            \\\"Description\\\": \\\"\\\",\\n            \\\"BusinessDeptName\\\": \\\"\\\",\\n            \\\"Creator\\\": \\\"2323232\\\",\\n            \\\"Default\\\": \\\"0\\\",\\n            \\\"ApplicationID\\\": \\\"51\\\",\\n            \\\"DeptName\\\": \\\"23223\\\",\\n            \\\"CompanyID\\\": \\\"6\\\",\\n            \\\"LifeCycle\\\": \\\"内测\\\",\\n            \\\"Source\\\": \\\"qcloud\\\",\\n            \\\"Maintainers\\\": \\\"12345\\\",\\n            \\\"CreateTime\\\": \\\"2015-12-17 17:12:14\\\",\\n            \\\"ProjectID\\\": \\\"0\\\",\\n            \\\"Owner\\\": \\\"232232\\\",\\n            \\\"ProductPm\\\": \\\"2323232\\\",\\n            \\\"Level\\\": \\\"3\\\",\\n            \\\"LastTime\\\": \\\"2016-05-16 10:27:39\\\",\\n            \\\"Type\\\": \\\"1\\\",\\n            \\\"Display\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"error\": {\n      \"examples\": [\n        {\n          \"title\": \"Error-Response:\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"code\\\": \\\"50000\\\",\\n    \\\"error\\\": {\\n        \\\"error_data\\\": {\\n            \\\"api_spec\\\": {\\n            }\\n        }\\n    },\\n    \\\"result\\\": false,\\n    \\\"message\\\": \\\"没权利访问业务\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_by_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_by_user/\",\n    \"title\": \"get_app_by_user\",\n    \"name\": \"get_app_by_user\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询用户有权限的业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"filter_only\",\n            \"description\": \"<p>是否不显示已经停止运行的业务，默认为False</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"示例业务\\\",\\n            \\\"GroupName\\\": \\\"\\\",\\n            \\\"Description\\\": \\\"\\\",\\n            \\\"BusinessDeptName\\\": \\\"\\\",\\n            \\\"Creator\\\": \\\"admin\\\",\\n            \\\"Default\\\": \\\"0\\\",\\n            \\\"ApplicationID\\\": \\\"2\\\",\\n            \\\"DeptName\\\": \\\"公司名称\\\",\\n            \\\"Level\\\": \\\"3\\\",\\n            \\\"LifeCycle\\\": \\\"公测\\\",\\n            \\\"Source\\\": \\\"\\\",\\n            \\\"Maintainers\\\": \\\"admin\\\",\\n            \\\"CreateTime\\\": \\\"2016-08-10 20:43:38\\\",\\n            \\\"CompanyID\\\": \\\"0\\\",\\n            \\\"Owner\\\": \\\"公司名称\\\",\\n            \\\"ProductPm\\\": \\\"admin\\\",\\n            \\\"LastTime\\\": \\\"2016-08-10 20:43:38\\\",\\n            \\\"Type\\\": \\\"0\\\",\\n            \\\"Display\\\": \\\"1\\\"\\n        }\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"Default\",\n            \"description\": \"<p>为1表示系统默认创建业务</p>\"\n          }\n        ]\n      }\n    },\n    \"error\": {\n      \"examples\": [\n        {\n          \"title\": \"Error-Response:\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"code\\\": \\\"50000\\\",\\n    \\\"error\\\": {\\n        \\\"error_data\\\": {\\n            \\\"api_spec\\\": {\\n                \\\"msg\\\": \\\"only right to app\\\",\\n                \\\"extmsg\\\": \\\"没权利访问业务\\\",\\n                \\\"code\\\": \\\"0006\\\"\\n            }\\n        }\\n    },\\n    \\\"result\\\": false,\\n    \\\"request_id\\\": \\\"bb8e27bbd86e4802ada9027e2d933cc1\\\",\\n    \\\"message\\\": \\\"没权利访问业务\\\",\\n    \\\"data\\\": null\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Error\": [\n          {\n            \"group\": \"Error\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"error\",\n            \"description\": \"<p>错误详情，api_spec为配置平台接口的错误信息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_by_user.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_by_user_role/\",\n    \"title\": \"get_app_by_user_role\",\n    \"name\": \"get_app_by_user_role\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据用户角色查询用户业务</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"user_role\",\n            \"description\": \"<p>用户角色，多个以逗号分隔，可选值为：Maintainers,ProductPm,Cooperation等</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"user_role\\\": \\\"Maintainers,ProductPm\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"ProductPm\\\": [\\n            {\\n                \\\"ApplicationName\\\": \\\"蓝鲸\\\",\\n                \\\"ApplicationID\\\": \\\"620\\\",\\n                \\\"DeptName\\\": \\\"蓝鲸\\\",\\n                \\\"Owner\\\": \\\"bk\\\"\\n            }\\n        ],\\n        \\\"Maintainers\\\": [\\n            {\\n                \\\"ApplicationName\\\": \\\"蓝鲸\\\",\\n                \\\"ApplicationID\\\": \\\"620\\\",\\n                \\\"DeptName\\\": \\\"蓝鲸\\\",\\n                \\\"Owner\\\": \\\"bk\\\"\\n            }\\n        ],\\n        \\\"Cooperation\\\": []\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_by_user_role.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_host_list/\",\n    \"title\": \"get_app_host_list\",\n    \"name\": \"get_app_host_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\",\\n            \\\"ModuleID\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_host_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_app_list/\",\n    \"title\": \"get_app_list\",\n    \"name\": \"get_app_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"示例业务\\\",\\n            \\\"Type\\\": \\\"0\\\",\\n            \\\"Description\\\": \\\"\\\",\\n            \\\"BusinessDeptName\\\": \\\"\\\",\\n            \\\"Creator\\\": \\\"admin\\\",\\n            \\\"Default\\\": \\\"0\\\",\\n            \\\"ApplicationID\\\": \\\"2\\\",\\n            \\\"Level\\\": \\\"3\\\",\\n            \\\"Display\\\": \\\"1\\\",\\n            \\\"Source\\\": \\\"\\\",\\n            \\\"GroupName\\\": \\\"\\\",\\n            \\\"Maintainers\\\": \\\"admin\\\",\\n            \\\"CompanyID\\\": \\\"0\\\",\\n            \\\"Owner\\\": \\\"公司名称\\\",\\n            \\\"ProductPm\\\": \\\"admin\\\",\\n            \\\"LifeCycle\\\": \\\"公测\\\",\\n            \\\"LastTime\\\": \\\"2016-03-25 04:02:05\\\",\\n            \\\"DeptName\\\": \\\"公司名称\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_app_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_by_company_id/\",\n    \"title\": \"get_host_by_company_id\",\n    \"name\": \"get_host_by_company_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据开发商ID、子网ID、主机IP获取主机信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"company_id\",\n            \"description\": \"<p>开发商ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机ip</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"company_id\\\": 0,\\n    \\\"ip\\\": \\\"10.0.0.1\\\",\\n    \\\"plat_id\\\": 1,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"ApplicationName\\\": \\\"示例业务\\\",\\n        \\\"ModuleName\\\": \\\"示例模块\\\",\\n        \\\"BakOperator\\\": \\\"admin\\\",\\n        \\\"SetName\\\": \\\"示例集群\\\",\\n        \\\"Operator\\\": \\\"admin\\\",\\n        \\\"SetID\\\": \\\"3\\\",\\n        \\\"ApplicationID\\\": \\\"1\\\",\\n        \\\"ModuleID\\\": \\\"3\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_by_company_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_company_id/\",\n    \"title\": \"get_host_company_id\",\n    \"name\": \"get_host_company_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取主机开发商</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ips\",\n            \"description\": \"<p>主机内网IP，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"ips\\\": \\\"10.0.0.1,10.0.0.2\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"10.0.0.1\\\": {\\n            \\\"102\\\": {\\n                \\\"CompanyID\\\": \\\"0\\\",\\n                \\\"AssetID\\\": \\\"\\\",\\n                \\\"Region\\\": \\\"\\\",\\n                \\\"Owner\\\": \\\"公司名称\\\",\\n                \\\"PlatID\\\": \\\"1\\\",\\n                \\\"ApplicationID\\\": \\\"1\\\"\\n            }\\n        },\\n        \\\"10.0.0.2\\\": {\\n            \\\"102\\\": {\\n                \\\"CompanyID\\\": \\\"0\\\",\\n                \\\"AssetID\\\": \\\"\\\",\\n                \\\"Region\\\": \\\"\\\",\\n                \\\"Owner\\\": \\\"公司名称\\\",\\n                \\\"PlatID\\\": \\\"1\\\",\\n                \\\"ApplicationID\\\": \\\"1\\\"\\n            }\\n        }\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_company_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_list_by_field/\",\n    \"title\": \"get_host_list_by_field\",\n    \"name\": \"get_host_list_by_field\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据主机属性的值group主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>app标识</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"field\",\n            \"description\": \"<p>主机属性字段</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"appId\\\": \\\"1\\\",\\n    \\\"field\\\": \\\"OSName\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"message\\\": \\\"\\\",\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": {\\n      \\\"\\\": [\\n        {\\n          \\\"Source\\\": \\\"1\\\",\\n          \\\"ApplicationID\\\": \\\"1\\\",\\n          \\\"HostID\\\": \\\"66\\\",\\n          \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n          \\\"OSName\\\": \\\"\\\"\\n        },\\n        {\\n          \\\"Source\\\": \\\"1\\\",\\n          \\\"ApplicationID\\\": \\\"1\\\",\\n          \\\"HostID\\\": \\\"67\\\",\\n          \\\"InnerIP\\\": \\\"10.0.0.2\\\",\\n          \\\"OSName\\\": \\\"\\\"\\n        }\\n      ]\\n    },\\n    \\\"result\\\": true\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_list_by_field.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_host_list_by_ip/\",\n    \"title\": \"get_host_list_by_ip\",\n    \"name\": \"get_host_list_by_ip\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据IP查询主机信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机IP(内网IP或外网IP)</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"ip\\\": \\\"10.0.0.1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"70\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\",\\n            \\\"ModuleID\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_host_list_by_ip.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_hosts_by_property/\",\n    \"title\": \"get_hosts_by_property\",\n    \"name\": \"get_hosts_by_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据 set 属性查询主机</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_id\",\n            \"description\": \"<p>大区ID，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_envi_type\",\n            \"description\": \"<p>Set 环境类型，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_service_status\",\n            \"description\": \"<p>Set 开放状态，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名称，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"set_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Source\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_hosts_by_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_ip_and_proxy_by_company/\",\n    \"title\": \"get_ip_and_proxy_by_company\",\n    \"name\": \"get_ip_and_proxy_by_company\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下IP及ProxyIP</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>内网IP列表，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"plat_id\\\": 1,\\n    \\\"ip_list\\\": \\\"10.0.0.1,10.0.0.2\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"proxy_list\\\": [],\\n        \\\"ip_list\\\": [\\n            \\\"10.0.0.1\\\",\\n            \\\"10.0.0.2\\\",\\n        ],\\n        \\\"invalid_ips\\\": []\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_ip_and_proxy_by_company.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_module_host_list/\",\n    \"title\": \"get_module_host_list\",\n    \"name\": \"get_module_host_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询模块主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"module_id\",\n            \"description\": \"<p>模块ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"module_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"Source\\\": \\\"3\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"Mem\\\": \\\"0\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"ModuleID\\\": \\\"1\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_module_host_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_modules/\",\n    \"title\": \"get_modules\",\n    \"name\": \"get_modules\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下的所有模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        \\\"空闲机\\\"\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_modules.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_modules_by_property/\",\n    \"title\": \"get_modules_by_property\",\n    \"name\": \"get_modules_by_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据 set 属性查询模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务 ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_id\",\n            \"description\": \"<p>大区ID，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_envi_type\",\n            \"description\": \"<p>Set 环境类型，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_service_status\",\n            \"description\": \"<p>Set 开放状态，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"set_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        \\\"空闲机\\\"\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_modules_by_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_plat_id/\",\n    \"title\": \"get_plat_id\",\n    \"name\": \"get_plat_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询子网列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"platId\\\": \\\"1\\\",\\n            \\\"platCompany\\\": \\\"0\\\",\\n            \\\"platName\\\": \\\"esb_test\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_plat_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_process_port_by_app_id/\",\n    \"title\": \"get_process_port_by_app_id\",\n    \"name\": \"get_process_port_by_app_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询进程端口</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_id\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"message\\\": \\\"\\\",\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"ApplicationName\\\": \\\"示例业务\\\",\\n            \\\"Process\\\": [\\n                {\\n                    \\\"WorkPath\\\": \\\"\\\",\\n                    \\\"AutoTimeGap\\\": \\\"0\\\",\\n                    \\\"LastTime\\\": \\\"2017-06-14 09:57:42\\\",\\n                    \\\"StartCmd\\\": \\\"\\\",\\n                    \\\"FuncID\\\": \\\"0\\\",\\n                    \\\"BindIP\\\": \\\"10.0.0.1\\\",\\n                    \\\"FuncName\\\": \\\"\\\",\\n                    \\\"Flag\\\": \\\"\\\",\\n                    \\\"User\\\": \\\"\\\",\\n                    \\\"StopCmd\\\": \\\"\\\",\\n                    \\\"ProcNum\\\": \\\"0\\\",\\n                    \\\"ReloadCmd\\\": \\\"\\\",\\n                    \\\"ProcessName\\\": \\\"nginx\\\",\\n                    \\\"OpTimeout\\\": \\\"0\\\",\\n                    \\\"KillCmd\\\": \\\"\\\",\\n                    \\\"Protocol\\\": \\\"TCP\\\",\\n                    \\\"Seq\\\": \\\"0\\\",\\n                    \\\"ProcGrp\\\": \\\"\\\",\\n                    \\\"Port\\\": \\\"80\\\",\\n                    \\\"ReStartCmd\\\": \\\"\\\",\\n                    \\\"AutoStart\\\": \\\"0\\\",\\n                    \\\"CreateTime\\\": \\\"2017-06-14 09:55:02\\\",\\n                    \\\"PidFile\\\": \\\"\\\"\\n                }\\n            ],\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Source\\\": \\\"2\\\",\\n            \\\"OuterIP\\\": \\\"123.0.0.1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\"\\n        }\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_process_port_by_app_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_property_list/\",\n    \"title\": \"get_property_list\",\n    \"name\": \"get_property_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询属性列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务 ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"type\",\n            \"description\": \"<p>属性类型，包含1:业务，2:集群，3:模块，4:主机</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"type\\\": \\\"4\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"standard\\\": {\\n                \\\"HostID\\\": \\\"主机ID\\\",\\n                \\\"OuterIP\\\": \\\"外网IP\\\",\\n                \\\"InnerIP\\\": \\\"内网IP\\\"\\n            }\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_property_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_set_host_list/\",\n    \"title\": \"get_set_host_list\",\n    \"name\": \"get_set_host_list\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询Set主机列表</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"set_id\",\n            \"description\": \"<p>SetID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"set_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"Status\\\": \\\"\\\",\\n            \\\"HardMemo\\\": \\\"\\\",\\n            \\\"HostID\\\": \\\"1\\\",\\n            \\\"BakOperator\\\": \\\"\\\",\\n            \\\"SetName\\\": \\\"\\\",\\n            \\\"AssetID\\\": \\\"test-1\\\",\\n            \\\"InnerIP\\\": \\\"10.0.0.1\\\",\\n            \\\"Region\\\": \\\"test\\\",\\n            \\\"HostName\\\": \\\"host\\\",\\n            \\\"IdcName\\\": \\\"\\\",\\n            \\\"OSName\\\": \\\"\\\",\\n            \\\"Mem\\\": \\\"0\\\",\\n            \\\"ModuleName\\\": \\\"空闲机\\\",\\n            \\\"DeviceClass\\\": \\\"\\\",\\n            \\\"ApplicationName\\\": \\\"资源池\\\",\\n            \\\"OuterIP\\\": \\\"\\\",\\n            \\\"Operator\\\": \\\"\\\",\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"ApplicationID\\\": \\\"1\\\",\\n            \\\"CreateTime\\\": \\\"2016-03-22 21:07:47\\\",\\n            \\\"ModuleID\\\": \\\"1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_set_host_list.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_set_property/\",\n    \"title\": \"get_set_property\",\n    \"name\": \"get_set_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>获取所有 set 属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"SetEnviType\\\": [\\n            {\\n                \\\"Property\\\": \\\"2\\\",\\n                \\\"value\\\": \\\"开放4\\\"\\n            }\\n        ],\\n        \\\"SetServiceStatus\\\": [\\n            {\\n                \\\"Property\\\": \\\"0\\\",\\n                \\\"value\\\": \\\"开放4\\\"\\n            }\\n        ]\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_set_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_sets_by_property/\",\n    \"title\": \"get_sets_by_property\",\n    \"name\": \"get_sets_by_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据 set 属性获取 set</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务 ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_envi_type\",\n            \"description\": \"<p>Set 环境类型</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_service_status\",\n            \"description\": \"<p>Set 开放状态</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"SetID\\\": \\\"1\\\",\\n            \\\"SetName\\\": \\\"空闲机池\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_sets_by_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/cc/get_topo_tree_by_app_id/\",\n    \"title\": \"get_topo_tree_by_app_id\",\n    \"name\": \"get_topo_tree_by_app_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务拓扑树</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"ApplicationName\\\": \\\"资源池\\\",\\n        \\\"Type\\\": \\\"0\\\",\\n        \\\"Children\\\": [\\n            {\\n                \\\"Capacity\\\": \\\"0\\\",\\n                \\\"Description\\\": \\\"\\\",\\n                \\\"SetName\\\": \\\"空闲机池\\\",\\n                \\\"Default\\\": \\\"1\\\",\\n                \\\"ServiceStatus\\\": \\\"\\\",\\n                \\\"ChnName\\\": \\\"\\\",\\n                \\\"EnviType\\\": \\\"\\\",\\n                \\\"Children\\\": [\\n                    {\\n                        \\\"LastTime\\\": \\\"2016-03-18 13:08:19\\\",\\n                        \\\"Description\\\": \\\"\\\",\\n                        \\\"Default\\\": \\\"1\\\",\\n                        \\\"ModuleName\\\": \\\"空闲机\\\",\\n                        \\\"Operator\\\": \\\"\\\",\\n                        \\\"HostNum\\\": 1,\\n                        \\\"SetID\\\": \\\"1\\\",\\n                        \\\"ModuleID\\\": \\\"1\\\",\\n                        \\\"ApplicationID\\\": \\\"1\\\",\\n                        \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\",\\n                        \\\"BakOperator\\\": \\\"\\\"\\n                    }\\n                ],\\n                \\\"Openstatus\\\": \\\"\\\",\\n                \\\"ParentID\\\": \\\"0\\\",\\n                \\\"SetID\\\": \\\"1\\\",\\n                \\\"LastTime\\\": \\\"2016-03-18 13:08:19\\\",\\n                \\\"ApplicationID\\\": \\\"1\\\",\\n                \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\"\\n            }\\n        ],\\n        \\\"Description\\\": \\\"\\\",\\n        \\\"BusinessDeptName\\\": \\\"\\\",\\n        \\\"Creator\\\": \\\"公司名称\\\",\\n        \\\"Default\\\": \\\"1\\\",\\n        \\\"ApplicationID\\\": \\\"1\\\",\\n        \\\"Level\\\": \\\"2\\\",\\n        \\\"Display\\\": \\\"1\\\",\\n        \\\"Source\\\": \\\"0\\\",\\n        \\\"GroupName\\\": \\\"\\\",\\n        \\\"Maintainers\\\": \\\"公司名称\\\",\\n        \\\"CompanyID\\\": \\\"0\\\",\\n        \\\"Owner\\\": \\\"公司名称\\\",\\n        \\\"ProductPm\\\": \\\"\\\",\\n        \\\"LifeCycle\\\": \\\"\\\",\\n        \\\"LastTime\\\": \\\"2016-03-18 13:08:19\\\",\\n        \\\"DeptName\\\": \\\"\\\",\\n        \\\"CreateTime\\\": \\\"2016-03-18 13:08:19\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/get_topo_tree_by_app_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_custom_property/\",\n    \"title\": \"update_custom_property\",\n    \"name\": \"update_custom_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>修改主机自定义属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"host_ids\",\n            \"description\": \"<p>主机ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"property\",\n            \"description\": \"<p>自定义属性</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"host_ids\\\": [\\\"1\\\"],\\n    \\\"property\\\": {\\n        \\\"a\\\": \\\"test\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_custom_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_gse_proxy_status/\",\n    \"title\": \"update_gse_proxy_status\",\n    \"name\": \"update_gse_proxy_status\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机gse agent proxy 状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>主机子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机内网IP</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>状态，包含1: 设置gse proxy, 0: 删除gse proxy</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"plat_id\\\": 1,\\n    \\\"ip\\\": \\\"10.0.0.1\\\",\\n    \\\"status\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_gse_proxy_status.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_by_app_id/\",\n    \"title\": \"update_host_by_app_id\",\n    \"name\": \"update_host_by_app_id\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机的gse agent状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"proxy_list\",\n            \"description\": \"<p>Proxy信息，Proxy中每项包含内容见下面参数描述</p>\"\n          }\n        ],\n        \"proxy_list\": [\n          {\n            \"group\": \"proxy_list\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"inner_ip\",\n            \"description\": \"<p>内网IP</p>\"\n          },\n          {\n            \"group\": \"proxy_list\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"outer_ip\",\n            \"description\": \"<p>外网IP</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 2,\\n    \\\"plat_id\\\": 1,\\n    \\\"proxy_list\\\": [\\n        {\\n            \\\"inner_ip\\\": \\\"10.0.0.1\\\",\\n            \\\"outer_ip\\\": \\\"\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_by_app_id.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_info/\",\n    \"title\": \"update_host_info\",\n    \"name\": \"update_host_info\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"host_id\",\n            \"description\": \"<p>主机ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"std_property\",\n            \"description\": \"<p>标准属性数据, 数组格式；允许修改的标准属性：HostName, BakOperator, Operator, Description, Source, OSName, DeviceClass, Mem, Cpu, osType</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"cus_property\",\n            \"description\": \"<p>自定义属性</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"host_id\\\": 12345,\\n    \\\"std_property\\\": {\\n        \\\"HostName\\\": \\\"hostname\\\",\\n        \\\"OSName\\\": \\\"linux\\\",\\n        \\\"Cpu\\\": 4,\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": null,\\n    \\\"message\\\": \\\"\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_info.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_module/\",\n    \"title\": \"update_host_module\",\n    \"name\": \"update_host_module\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>修改主机模块</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>内网IP</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"dst_module_id\",\n            \"description\": \"<p>目标模块ID，多个以逗号分隔</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 12,\\n    \\\"ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n    \\\"plat_id\\\": 2,\\n    \\\"dst_module_id\\\": \\\"1232\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"data\\\": null,\\n    \\\"message\\\": \\\"\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_module.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_host_plat/\",\n    \"title\": \"update_host_plat\",\n    \"name\": \"update_host_plat\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新主机云子网</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"src_plat_id\",\n            \"description\": \"<p>主机现子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"dst_plat_id\",\n            \"description\": \"<p>变更后的子网ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>主机内网IP</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 2,\\n    \\\"src_plat_id\\\": 1,\\n    \\\"dst_plat_id\\\": 2,\\n    \\\"ip\\\": \\\"10.0.0.1\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_host_plat.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_module_property/\",\n    \"title\": \"update_module_property\",\n    \"name\": \"update_module_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新模块属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"module_ids\",\n            \"description\": \"<p>模块ID，多个以半角逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"module_name\",\n            \"description\": \"<p>模块名称. 模块ID多个时，该值无效</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"operator\",\n            \"description\": \"<p>维护人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bak_operator\",\n            \"description\": \"<p>备份维护人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"module_type\",\n            \"description\": \"<p>模块类型，包含1：普通模块 2：数据库</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"module_ids\\\": \\\"4\\\",\\n    \\\"module_name\\\": \\\"test\\\",\\n    \\\"module_type\\\": 1\\n   }\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_module_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_set_property/\",\n    \"title\": \"update_set_property\",\n    \"name\": \"update_set_property\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新集群属性</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"set_name\",\n            \"description\": \"<p>集群名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"chn_name\",\n            \"description\": \"<p>中文名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"group_flag\",\n            \"description\": \"<p>分组标识</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"env_type\",\n            \"description\": \"<p>环境类型，包含1：测试 2：体验 3：正式，默认为3</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"service_status\",\n            \"description\": \"<p>服务状态，包含0：关闭，1：开启，默认为1</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"capacity\",\n            \"description\": \"<p>设计容量</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"des\",\n            \"description\": \"<p>描述</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"],\\n    \\\"set_name\\\": \\\"test\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_set_property.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cc/update_set_service_status/\",\n    \"title\": \"update_set_service_status\",\n    \"name\": \"update_set_service_status\",\n    \"group\": \"API_CC\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>修改集群服务状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"set_ids\",\n            \"description\": \"<p>集群ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>服务状态，包含0：关闭 1：开启</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 3,\\n    \\\"set_ids\\\": [\\\"1\\\"],\\n    \\\"status\\\": 1\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": null,\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/cc/apidoc/update_set_service_status.js\",\n    \"groupTitle\": \"API_CC\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/noc_notice/\",\n    \"title\": \"noc_notice\",\n    \"name\": \"noc_notice\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>公共语音通知</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"auto_read_message\",\n            \"description\": \"<p>自动语音读字信息</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": true,\n            \"field\": \"user_list_information\",\n            \"description\": \"<p>待通知的用户列表，自动语音通知列表，若user_list_information、receiver__username同时存在，以user_list_information为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>待通知的用户列表，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若user_list_information、receiver__username同时存在，以user_list_information为准</p>\"\n          }\n        ],\n        \"user_list_information\": [\n          {\n            \"group\": \"user_list_information\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"username\",\n            \"description\": \"<p>被通知人</p>\"\n          },\n          {\n            \"group\": \"user_list_information\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"mobile_phone\",\n            \"description\": \"<p>被通知人手机号</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"auto_read_message\\\": \\\"This is a test\\\",\\n    \\\"user_list_information\\\": [{\\n        \\\"username\\\": \\\"admin\\\",\\n        \\\"mobile_phone\\\": \\\"1234567890\\\",\\n    }]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"instance_id\\\": \\\"2662152044\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/noc_notice.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_mail/\",\n    \"title\": \"send_mail\",\n    \"name\": \"send_mail\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送邮件</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver\",\n            \"description\": \"<p>邮件接收者，包含邮件完整地址，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>邮件接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"sender\",\n            \"description\": \"<p>发件人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"title\",\n            \"description\": \"<p>邮件主题</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"content\",\n            \"description\": \"<p>邮件内容</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"cc\",\n            \"description\": \"<p>抄送人，包含邮件完整地址，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"cc__username\",\n            \"description\": \"<p>抄送人，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若cc、cc__username同时存在，以cc为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"body_format\",\n            \"description\": \"<p>邮件格式，包含'Html', 'Text'，默认为'Html'</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_content_base64\",\n            \"description\": \"<p>邮件内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"admin@bking.com\\\",\\n    \\\"sender\\\": \\\"admin@bking.com\\\",\\n    \\\"title\\\": \\\"This is a Test\\\",\\n    \\\"content\\\": \\\"<html>Welcome to Blueking</html>\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"邮件发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_mail.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_mp_weixin/\",\n    \"title\": \"send_mp_weixin\",\n    \"name\": \"send_mp_weixin\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送公众号微信消息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"receiver\",\n            \"description\": \"<p>微信接收者，包含绑定在指定公众号上的微信用户的 openid，多个以逗号分隔</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>消息内容</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"heading\",\n            \"description\": \"<p>通知头部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>通知文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"date\",\n            \"description\": \"<p>通知发送时间，默认为当前时间 &quot;YYYY-mm-dd HH:MM&quot;</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"remark\",\n            \"description\": \"<p>通知尾部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_message_base64\",\n            \"description\": \"<p>通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"xxx\\\",\\n    \\\"data\\\": {\\n        \\\"heading\\\": \\\"蓝鲸平台通知\\\",\\n        \\\"message\\\": \\\"This 是 a test.\\\",\\n        \\\"date\\\": \\\"2017-02-22 15:36\\\",\\n        \\\"remark\\\": \\\"zhen 是一个测试！\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"微信消息发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_mp_weixin.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_sms/\",\n    \"title\": \"send_sms\",\n    \"name\": \"send_sms\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送短信</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver\",\n            \"description\": \"<p>短信接收者，包含接收者电话号码，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>短信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"content\",\n            \"description\": \"<p>短信内容</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_content_base64\",\n            \"description\": \"<p>消息内容是否base64编码，默认False，不编码，请使用base64.b64encode方法编码</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"1234567890\\\",\\n    \\\"receiver__username\\\": \\\"admin\\\",\\n    \\\"content\\\": \\\"Welcome to Blueking\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"短信发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_sms.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/cmsi/send_weixin/\",\n    \"title\": \"send_weixin\",\n    \"name\": \"send_weixin\",\n    \"group\": \"API_CMSI\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>发送微信消息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver\",\n            \"description\": \"<p>微信接收者，包含绑定在指定公众号上的微信用户的 openid 或 企业号上的微信用户的用户ID，多个以逗号分隔 |</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"receiver__username\",\n            \"description\": \"<p>微信接收者，包含用户名，用户需在蓝鲸平台注册，多个以逗号分隔，若receiver、receiver__username同时存在，以receiver为准</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"dict\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>消息内容</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"heading\",\n            \"description\": \"<p>通知头部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>通知文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"date\",\n            \"description\": \"<p>通知发送时间，默认为当前时间 &quot;YYYY-mm-dd HH:MM&quot;</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"remark\",\n            \"description\": \"<p>通知尾部文字</p>\"\n          },\n          {\n            \"group\": \"data\",\n            \"type\": \"bool\",\n            \"optional\": true,\n            \"field\": \"is_message_base64\",\n            \"description\": \"<p>通知文字message是否base64编码，默认False，不编码，若编码请使用base64.b64encode方法</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"receiver\\\": \\\"xxx\\\",\\n    \\\"data\\\": {\\n        \\\"heading\\\": \\\"蓝鲸平台通知\\\",\\n        \\\"message\\\": \\\"This 是 a test.\\\",\\n        \\\"date\\\": \\\"2017-02-22 15:36\\\",\\n        \\\"remark\\\": \\\"zhen 是一个测试！\\\"\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"微信消息发送成功。\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/generic/apis/cmsi/apidoc/send_weixin.js\",\n    \"groupTitle\": \"API_CMSI\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/change_cron_status/\",\n    \"title\": \"change_cron_status\",\n    \"name\": \"change_cron_status\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>更新定时作业状态 ，如启动或暂停；操作者必须是业务的创建人或运维</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>作业状态，1.启动、2.暂停</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"crontab_task_id\",\n            \"description\": \"<p>定时任务ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"status\\\": \\\"1\\\",\\n    \\\"crontab_task_id\\\": 123,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"crontabTaskId\\\": 2\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/change_cron_status.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/execute_task/\",\n    \"title\": \"execute_task\",\n    \"name\": \"execute_task\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据作业模板ID启动作业</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>作业ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"steps\",\n            \"description\": \"<p>步骤参数，每项的具体参数见下面描述</p>\"\n          }\n        ],\n        \"steps\": [\n          {\n            \"group\": \"steps\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"scriptTimeout\",\n            \"description\": \"<p>脚本超时时间</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"scriptParam\",\n            \"description\": \"<p>脚本参数</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"scriptId\",\n            \"description\": \"<p>脚本ID</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"stepId\",\n            \"description\": \"<p>步骤ID，可以只指定某几步执行</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ipList\",\n            \"description\": \"<p>IP列表格式：子网ID:IP，多个之间逗号，分割，例如：1:10.0.0.1,1:10.0.0.2</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"account\",\n            \"description\": \"<p>执行账户账户名</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"fileTargetPath\",\n            \"description\": \"<p>目标路径</p>\"\n          },\n          {\n            \"group\": \"steps\",\n            \"type\": \"array\",\n            \"optional\": true,\n            \"field\": \"fileSource\",\n            \"description\": \"<p>源文件信息，整个参数替换，不支持内部某个变量替换。格式参考下面说明</p>\"\n          }\n        ],\n        \"fileSource\": [\n          {\n            \"group\": \"fileSource\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"file\",\n            \"description\": \"<p>源文件路径，如：/tmp/t.txt</p>\"\n          },\n          {\n            \"group\": \"fileSource\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ipList\",\n            \"description\": \"<p>源文件服务器地址，格式为：子网ID:IP，多个之间逗号分割</p>\"\n          },\n          {\n            \"group\": \"fileSource\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>源文件机器执行账户账户名</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"1\\\",\\n    \\\"task_id\\\": \\\"195\\\",\\n    \\\"steps\\\": [{\\n        \\\"scriptTimeout\\\": 1000,\\n        \\\"scriptParam\\\": \\\"-a\\\",\\n        \\\"ipList\\\": \\\"1:10.0.0.1,1:10.0.0.2\\\",\\n        \\\"scriptId\\\": 203,\\n        \\\"stepId\\\": 244,\\n        \\\"account\\\": \\\"root\\\",\\n    },\\n    {\\n        \\\"fileTargetPath\\\": \\\"/tmp/[FILESRCIP]/\\\",\\n        \\\"fileSource\\\": [{\\n            \\\"file\\\": \\\"/tmp/t.txt\\\",\\n            \\\"ipList\\\": \\\"1:10.0.0.3,1:10.0.0.4\\\",\\n            \\\"account\\\": \\\"root\\\",\\n        }],\\n        \\\"ipList\\\": \\\"1:10.0.0.1,1:10.0.0.2\\\",\\n        \\\"stepId\\\": 246,\\n        \\\"account\\\": \\\"root\\\",\\n    }]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"测试\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/execute_task.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/execute_task_ext/\",\n    \"title\": \"execute_task_ext\",\n    \"name\": \"execute_task_ext\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>启动作业Ext(带全局变量启动)</p> <p>如果全局变量的类型为IP，参数值必须包含groupIds或ipList。没有设置的参数将使用作业模版中的默认值</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>作业ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"global_var\",\n            \"description\": \"<p>全局变量信息，作业包含的全局变量和类型可以通过接口“查询作业模板详情”(get_task_detail)获取</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"46\\\",\\n    \\\"task_id\\\": \\\"195\\\",\\n    \\\"global_var\\\": [{\\n        \\\"id\\\": 436,\\n        \\\"ipList\\\": \\\"1:10.0.0.1\\\",\\n    },\\n    {\\n        \\\"id\\\": 437,\\n        \\\"value\\\": \\\"newValue\\\",\\n    }]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"测试\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/execute_task_ext.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/fast_execute_script/\",\n    \"title\": \"fast_execute_script\",\n    \"name\": \"fast_execute_script\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>快速执行脚本</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"content\",\n            \"description\": \"<p>执行脚本步骤的脚本内容，base64编码后的内容</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"script_timeout\",\n            \"description\": \"<p>脚本执行超时时间，范围60~3600，默认1000</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"script_param\",\n            \"description\": \"<p>脚本执行参数</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"type\",\n            \"description\": \"<p>脚本类型：1(shell脚本)、2(bat脚本)、3(perl脚本)、4(python脚本)、5(Powershell脚本)</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>目标机器，包含以下内容：</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>目标机器账户名</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"is_param_sensitive\",\n            \"description\": \"<p>是否敏感参数: 1是, 0不是(默认为0)</p>\"\n          }\n        ],\n        \"ip_list\": [\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>IP地址</p>\"\n          },\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"source\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"content\\\": \\\"xxx\\\",\\n    \\\"ip_list\\\": [\\n        {\\n            \\\"ip\\\": \\\"10.0.0.1\\\",\\n            \\\"source\\\": 1\\n        }\\n    ],\\n    \\\"type\\\": 1,\\n    \\\"account\\\": \\\"root\\\",\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"API执行脚本1456715609220\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/fast_execute_script.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/fast_push_file/\",\n    \"title\": \"fast_push_file\",\n    \"name\": \"fast_push_file\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>快速分发文件</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"file_source\",\n            \"description\": \"<p>源文件信息，包含内容见下面参数描述</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"file_target_path\",\n            \"description\": \"<p>目标路径</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>目标机器，包含内容见下面参数描述</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"target_app_id\",\n            \"description\": \"<p>目标机器所属业务，全业务需要</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>目标机器账户名</p>\"\n          }\n        ],\n        \"file_source\": [\n          {\n            \"group\": \"file_source\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"source_app_id\",\n            \"description\": \"<p>为源机器所属业务，全业务需要</p>\"\n          },\n          {\n            \"group\": \"file_source\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"file\",\n            \"description\": \"<p>源文件路径</p>\"\n          },\n          {\n            \"group\": \"file_source\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_list\",\n            \"description\": \"<p>IP信息，其中包含ip（源文件服务器IP）和source（IP的子网ID）</p>\"\n          },\n          {\n            \"group\": \"file_source\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"account\",\n            \"description\": \"<p>源文件服务器账户名</p>\"\n          }\n        ],\n        \"ip_list\": [\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>IP地址</p>\"\n          },\n          {\n            \"group\": \"ip_list\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"source\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": \\\"46\\\",\\n    \\\"file_source\\\": [\\n        {\\n            \\\"account\\\": \\\"root\\\",\\n            \\\"ip_list\\\": [\\n                {\\n                    \\\"ip\\\": \\\"10.0.0.1\\\",\\n                    \\\"source\\\": 1\\n                }\\n            ],\\n            \\\"file\\\": \\\"/tmp/tmp.txt\\\"\\n        }\\n    ],\\n    \\\"account\\\": \\\"root\\\",\\n    \\\"file_target_path\\\": \\\"/tmp\\\",\\n    \\\"ip_list\\\": [\\n        {\\n            \\\"ip\\\": \\\"10.0.0.2\\\",\\n            \\\"source\\\": 1\\n        }\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"taskInstanceName\\\": \\\"API分发文件1456316951760\\\",\\n        \\\"taskInstanceId\\\": 10000\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/fast_push_file.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/get_agent_status/\",\n    \"title\": \"get_agent_status\",\n    \"name\": \"get_agent_status\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询Agent状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"array\",\n            \"optional\": false,\n            \"field\": \"ip_infos\",\n            \"description\": \"<p>IP信息，每项条目包含信息见下面参数描述</p>\"\n          }\n        ],\n        \"ip_infos\": [\n          {\n            \"group\": \"ip_infos\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"ip\",\n            \"description\": \"<p>IP地址</p>\"\n          },\n          {\n            \"group\": \"ip_infos\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"plat_id\",\n            \"description\": \"<p>子网ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"ip_infos\\\": [\\n        {\\n            \\\"ip\\\": \\\"10.0.0.1\\\",\\n            \\\"plat_id\\\": 1,\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"status\\\": 1,\\n            \\\"ip\\\": \\\"10.0.0.1\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"Number\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>主机Agent状态码，1.正常; 0.异常</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_agent_status.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_cron/\",\n    \"title\": \"get_cron\",\n    \"name\": \"get_cron\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询业务下定时作业信息</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"crontab_task_id\",\n            \"description\": \"<p>定时任务ID，如果存在，则忽略其他筛选条件，只查询这个指定的作业信息</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"name\",\n            \"description\": \"<p>定时作业的名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"status\",\n            \"description\": \"<p>作业的状态：1.已启动、2.已暂停、3.已完成</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"creater\",\n            \"description\": \"<p>作业创建人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_user\",\n            \"description\": \"<p>最后修改人</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_start\",\n            \"description\": \"<p>创建起始时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_end\",\n            \"description\": \"<p>创建结束时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_start\",\n            \"description\": \"<p>最后修改起始时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_end\",\n            \"description\": \"<p>最后修改结束时间，YYYY-MM-DD格式</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"crontab_task_id\\\": 123456,\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"status\\\": 1,\\n            \\\"lastModifyUser\\\": \\\"admin\\\",\\n            \\\"des\\\": \\\"\\\",\\n            \\\"createTime\\\": \\\"2017-03-01 19:45:51\\\",\\n            \\\"creater\\\": \\\"admin\\\",\\n            \\\"lastModifyTime\\\": \\\"2017-03-01 20:01:08\\\",\\n            \\\"cronExpression\\\": \\\"2 0/5 * * * ?\\\",\\n            \\\"taskId\\\": 5,\\n            \\\"appId\\\": 3,\\n            \\\"taskName\\\": \\\"de\\\",\\n            \\\"type\\\": 0,\\n            \\\"id\\\": 2,\\n            \\\"name\\\": \\\"hello test2 a\\\"\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_cron.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task/\",\n    \"title\": \"get_task\",\n    \"name\": \"get_task\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询作业模板</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"name\",\n            \"description\": \"<p>作业名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"creater\",\n            \"description\": \"<p>创建人QQ号</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_user\",\n            \"description\": \"<p>最后修改人QQ号</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_start\",\n            \"description\": \"<p>创建起始时间，YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"create_time_end\",\n            \"description\": \"<p>创建结束时间 YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_start\",\n            \"description\": \"<p>最后修改起始时间 YYYY-MM-DD格式</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"last_modify_time_end\",\n            \"description\": \"<p>最后修改结束时间YYYY-MM-DD格式</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"name\\\": \\\"hotest\\\",\\n    \\\"creater\\\": \\\"12345\\\",\\n    \\\"last_modify_user\\\": \\\"12345\\\",\\n    \\\"create_time_start\\\": \\\"2016-02-22 23:12:34\\\",\\n    \\\"create_time_end\\\": \\\"2016-02-22 23:12:34\\\",\\n    \\\"last_modify_time_start\\\": \\\"2016-02-22 23:12:34\\\",\\n    \\\"last_modify_time_end\\\": \\\"2016-02-22 23:12:34\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"account\\\": \\\"\\\",\\n            \\\"name\\\": \\\"hotest\\\",\\n            \\\"creater\\\": \\\"12345\\\",\\n            \\\"stepNum\\\": 1,\\n            \\\"serverSetId\\\": 0,\\n            \\\"nmStepBeanList\\\": [],\\n            \\\"lastModifyTime\\\": \\\"2016-02-22 23:12:34\\\",\\n            \\\"appId\\\": 46,\\n            \\\"id\\\": 190,\\n            \\\"ipList\\\": \\\"\\\",\\n            \\\"createTime\\\": \\\"2016-02-22 23:12:34\\\",\\n            \\\"lastModifyUser\\\": \\\"12345\\\"\\n        },\\n    ],\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task_detail/\",\n    \"title\": \"get_task_detail\",\n    \"name\": \"get_task_detail\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>查询作业模板详情</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>作业模板ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 1,\\n    \\\"task_id\\\": 192\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"account\\\": \\\"\\\",\\n        \\\"name\\\": \\\"demo演示\\\",\\n        \\\"creater\\\": \\\"12345\\\",\\n        \\\"stepNum\\\": 0,\\n        \\\"serverSetId\\\": 0,\\n        \\\"nmStepBeanList\\\": [\\n            {\\n                \\\"ccScriptName\\\": \\\"\\\",\\n                \\\"text\\\": \\\"\\\",\\n                \\\"serverSetId\\\": 0,\\n                \\\"stepId\\\": 524,\\n                \\\"ipList\\\": \\\"1:10.0.0.1\\\",\\n                \\\"serverSetName\\\": \\\"\\\",\\n                \\\"ccScriptId\\\": 0,\\n                \\\"fileSpeedLimit\\\": 0,\\n                \\\"scriptTimeout\\\": 1000,\\n                \\\"scriptParam\\\": \\\"\\\",\\n                \\\"scriptContent\\\": \\\"xxx\\\",\\n                \\\"lastModifyTime\\\": \\\"\\\",\\n                \\\"fileSource\\\": \\\"\\\",\\n                \\\"type\\\": 1,\\n                \\\"scriptType\\\": 4,\\n                \\\"lastModifyUser\\\": \\\"\\\",\\n                \\\"blockName\\\": \\\"step1\\\",\\n                \\\"paramType\\\": 1,\\n                \\\"fileTargetPath\\\": \\\"\\\",\\n                \\\"scriptId\\\": 523,\\n                \\\"taskId\\\": 195,\\n                \\\"appId\\\": 46,\\n                \\\"isPause\\\": 0,\\n                \\\"ord\\\": 1,\\n                \\\"createTime\\\": \\\"2016-02-24 21:50:31\\\",\\n                \\\"account\\\": \\\"root\\\",\\n                \\\"name\\\": \\\"作业执行步骤1\\\",\\n                \\\"companyId\\\": 15,\\n                \\\"creater\\\": \\\"12345\\\",\\n                \\\"ccScriptParam\\\": \\\"\\\",\\n                \\\"blockOrd\\\": 1\\n            },\\n        ],\\n        \\\"lastModifyTime\\\": \\\"2016-02-26 16:15:43\\\",\\n        \\\"appId\\\": 46,\\n        \\\"id\\\": 195,\\n        \\\"ipList\\\": \\\"\\\",\\n        \\\"createTime\\\": \\\"2016-02-24 21:50:31\\\",\\n        \\\"lastModifyUser\\\": \\\"12345\\\",\\n        \\\"globalVarList\\\":[\\n            {\\n                \\\"id\\\": 11,\\n                \\\"type\\\": 1,\\n                \\\"name\\\": \\\"varA1\\\",\\n                \\\"defaultValue\\\": \\\"valueisMe\\\",\\n                \\\"appId\\\": 3,\\n                \\\"taskId\\\": 13,\\n                \\\"description\\\": \\\"字符串全局变量\\\",\\n                \\\"stepIds\\\": \\\"1\\\",\\n                \\\"ipListStatus\\\": [],\\n                \\\"ccGroupInfoList\\\": []\\n            },\\n            {\\n                \\\"id\\\": 12,\\n                \\\"type\\\": 2,\\n                \\\"name\\\": \\\"id-201782815057397\\\",\\n                \\\"ipList\\\": \\\"1:10.0.0.1,1:10.0.0.2\\\",\\n                \\\"serverSetId\\\": \\\"\\\",\\n                \\\"ccServerSetId\\\": \\\"\\\",\\n                \\\"appId\\\": 3,\\n                \\\"taskId\\\": 13,\\n                \\\"description\\\": \\\"IP全局变量\\\",\\n                \\\"stepIds\\\": \\\"13\\\",\\n                \\\"ipListStatus\\\": [\\n                    {\\n                        \\\"ip\\\": \\\"10.0.0.1\\\",\\n                        \\\"source\\\": 1,\\n                        \\\"alived\\\": 0,\\n                        \\\"valid\\\": 1,\\n                        \\\"name\\\": \\\"host\\\",\\n                        \\\"displayIp\\\": \\\"10.0.0.1\\\"\\n                    },\\n                    {\\n                        \\\"ip\\\": \\\"10.0.0.2\\\",\\n                        \\\"source\\\": 1,\\n                        \\\"alived\\\": 0,\\n                        \\\"valid\\\": 1,\\n                        \\\"name\\\": \\\"host\\\",\\n                        \\\"displayIp\\\": \\\"10.0.0.2\\\"\\n                    }\\n                ],\\n                \\\"ccGroupInfoList\\\": []\\n            }\\n        ]\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task_detail.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task_ip_log/\",\n    \"title\": \"get_task_ip_log\",\n    \"name\": \"get_task_ip_log\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据作业实例ID查询作业执行日志</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_instance_id\",\n            \"description\": \"<p>作业实例ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"task_instance_id\\\": \\\"100932\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": [\\n        {\\n            \\\"isFinished\\\": true,\\n            \\\"stepInstanceName\\\": \\\"读取文件\\\",\\n            \\\"stepAnalyseResult\\\": [\\n                {\\n                    \\\"count\\\": \\\"1\\\",\\n                    \\\"resultType\\\": 9,\\n                    \\\"ipLogContent\\\": [\\n                        {\\n                            \\\"status\\\": 9,\\n                            \\\"totalTime\\\": 0.24799999594688416,\\n                            \\\"stepInstanceId\\\": 156965,\\n                            \\\"isJobIp\\\": 1,\\n                            \\\"ip\\\": \\\"xxx.xxx.xxx.xxx\\\",\\n                            \\\"errCode\\\": 0,\\n                            \\\"source\\\": 1,\\n                            \\\"logContent\\\": \\\"QlpoOTFBWSZTWekFHDQAGcHf+XMyQA...\\\",\\n                            \\\"startTime\\\": \\\"2016-06-12 14:29:39\\\",\\n                            \\\"retryCount\\\": 0,\\n                            \\\"endTime\\\": \\\"2016-06-12 14:29:39\\\",\\n                            \\\"exitCode\\\": 0\\n                        }\\n                    ],\\n                    \\\"resultTypeText\\\": \\\"执行成功\\\"\\n                }\\n            ],\\n            \\\"stepInstanceId\\\": 156965,\\n            \\\"stepInstanceStatus\\\": 3\\n        }\\n    ]\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"ipLogContent\": [\n          {\n            \"group\": \"ipLogContent\",\n            \"type\": \"Number\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>主机任务状态码， 1.Agent异常; 3.上次已成功; 5.等待执行; 7.正在执行; 9.执行成功; 11.任务失败; 12.任务下发失败; 13.任务超时; 15.任务日志错误; 101.脚本执行失败; 102.脚本执行超时; 103.脚本执行被终止; 104.脚本返回码非零; 202.文件传输失败; 203.源文件不存在; 310.Agent异常; 311.用户名不存在; 320.文件获取失败; 321.文件超出限制; 329.文件传输错误; 399.任务执行出错</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task_ip_log.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"get\",\n    \"url\": \"/api/c/compapi/job/get_task_result/\",\n    \"title\": \"get_task_result\",\n    \"name\": \"get_task_result\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>根据作业实例 ID 查询作业执行状态</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_instance_id\",\n            \"description\": \"<p>作业实例ID</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"task_instance_id\\\": \\\"65\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"isFinished\\\": true,\\n        \\\"taskInstance\\\": {\\n            \\\"status\\\": 3,\\n            \\\"totalTime\\\": 0,\\n            \\\"endTime\\\": \\\"2015-09-09 15:05:32\\\",\\n            \\\"startTime\\\": \\\"2015-09-09 15:05:32\\\",\\n            \\\"operationList\\\": [],\\n            \\\"startWay\\\": 1,\\n            \\\"taskId\\\": -1,\\n            \\\"appId\\\": 1,\\n            \\\"operator\\\": \\\"2797261603\\\",\\n            \\\"taskInstanceId\\\": 65,\\n            \\\"currentStepId\\\": 75,\\n            \\\"createTime\\\": \\\"2015-09-09 15:05:31\\\",\\n            \\\"name\\\": \\\"执行脚本-20158915516182\\\"\\n        },\\n        \\\"blocks\\\": [\\n            {\\n                \\\"type\\\": 1,\\n                \\\"stepInstances\\\": [\\n                    {\\n                        \\\"totalTime\\\": 0,\\n                        \\\"failIPNum\\\": 0,\\n                        \\\"text\\\": null,\\n                        \\\"successIPNum\\\": 2,\\n                        \\\"isPause\\\": 0,\\n                        \\\"operator\\\": \\\"2797261603\\\",\\n                        \\\"stepInstanceId\\\": 75,\\n                        \\\"taskInstanceId\\\": 65,\\n                        \\\"type\\\": 1,\\n                        \\\"badIPNum\\\": 0,\\n                        \\\"status\\\": 3,\\n                        \\\"stepId\\\": -1,\\n                        \\\"blockName\\\": \\\"执行脚本-20158915516182\\\",\\n                        \\\"operationList\\\": [],\\n                        \\\"startTime\\\": \\\"2015-09-09 15:05:32\\\",\\n                        \\\"appId\\\": 1,\\n                        \\\"totalIPNum\\\": 2,\\n                        \\\"ord\\\": 1,\\n                        \\\"createTime\\\": \\\"2015-09-09 15:05:31\\\",\\n                        \\\"name\\\": \\\"执行脚本-20158915516182\\\",\\n                        \\\"blockOrd\\\": 1,\\n                        \\\"retryCount\\\": 0,\\n                        \\\"endTime\\\": \\\"2015-09-09 15:05:32\\\",\\n                        \\\"runIPNum\\\": 2\\n                    }\\n                ],\\n                \\\"blockOrd\\\": 1,\\n                \\\"blockName\\\": \\\"执行脚本-20158915516182\\\"\\n            }\\n        ]\\n    },\\n}\",\n          \"type\": \"json\"\n        }\n      ],\n      \"fields\": {\n        \"Success 200\": [\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Boolean\",\n            \"optional\": false,\n            \"field\": \"result\",\n            \"description\": \"<p>包含True和False，其中True表示成功，False表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"code\",\n            \"description\": \"<p>返回错误码，其中&quot;00&quot;表示成功，其它表示失败</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"String\",\n            \"optional\": false,\n            \"field\": \"message\",\n            \"description\": \"<p>返回错误消息</p>\"\n          },\n          {\n            \"group\": \"Success 200\",\n            \"type\": \"Object\",\n            \"optional\": false,\n            \"field\": \"data\",\n            \"description\": \"<p>返回数据，成功返回请求数据</p>\"\n          }\n        ],\n        \"data\": [\n          {\n            \"group\": \"data\",\n            \"type\": \"Number\",\n            \"optional\": false,\n            \"field\": \"status\",\n            \"description\": \"<p>任务状态码， 1.未执行; 2.正在执行; 3.执行成功; 4.执行失败; 5.跳过; 6.忽略错误; 7.等待用户; 8.手动结束; 9.状态异常; 10.步骤强制终止中; 11.步骤强制终止成功; 12.步骤强制终止失败</p>\"\n          }\n        ]\n      }\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/get_task_result.js\",\n    \"groupTitle\": \"API_JOB\"\n  },\n  {\n    \"type\": \"post\",\n    \"url\": \"/api/c/compapi/job/save_cron/\",\n    \"title\": \"save_cron\",\n    \"name\": \"save_cron\",\n    \"group\": \"API_JOB\",\n    \"version\": \"1.0.0\",\n    \"description\": \"<p>新建或保存定时作业 ；新建定时作业，作业状态默认为暂停；操作者必须是业务的创建人或运维</p>\",\n    \"parameter\": {\n      \"fields\": {\n        \"Parameter\": [\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_code\",\n            \"description\": \"<p>应用ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"app_secret\",\n            \"description\": \"<p>应用TOKEN，可以通过 开发者中心 -&gt; 点击应用ID -&gt; 基本信息 获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"bk_token\",\n            \"description\": \"<p>当前用户登录态，bk_token与username必须一个有效，bk_token可以通过Cookie获取</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": true,\n            \"field\": \"username\",\n            \"description\": \"<p>当前用户用户名，白名单中app可使用</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"app_id\",\n            \"description\": \"<p>业务ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"name\",\n            \"description\": \"<p>定时作业的名称</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": false,\n            \"field\": \"task_id\",\n            \"description\": \"<p>要定时执行的作业的作业ID</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"int\",\n            \"optional\": true,\n            \"field\": \"crontab_task_id\",\n            \"description\": \"<p>定时任务ID，更新定时任务时，必须传这个值</p>\"\n          },\n          {\n            \"group\": \"Parameter\",\n            \"type\": \"string\",\n            \"optional\": false,\n            \"field\": \"cron_expression\",\n            \"description\": \"<p>定时任务crontab的定时规则，各自段含义为：秒 分 时 日 月 周 年（可选），如: 0 0/5 * * * ?  表示每5分钟执行一次</p>\"\n          }\n        ]\n      },\n      \"examples\": [\n        {\n          \"title\": \"Request-Example:\",\n          \"content\": \"{\\n    \\\"app_code\\\": \\\"esb_test\\\",\\n    \\\"app_secret\\\": \\\"xxx\\\",\\n    \\\"bk_token\\\": \\\"xxx\\\",\\n    \\\"app_id\\\": 46,\\n    \\\"name\\\": \\\"hotest\\\",\\n    \\\"task_id\\\": 123,\\n    \\\"cron_expression\\\": \\\"0 0/5 * * * ?\\\"\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"success\": {\n      \"examples\": [\n        {\n          \"title\": \"Success-Response\",\n          \"content\": \"HTTP/1.1 200 OK\\n{\\n    \\\"result\\\": true,\\n    \\\"code\\\": \\\"00\\\",\\n    \\\"message\\\": \\\"\\\",\\n    \\\"data\\\": {\\n        \\\"crontabTaskId\\\": 2\\n    }\\n}\",\n          \"type\": \"json\"\n        }\n      ]\n    },\n    \"filename\": \"esb/components/bk/apis/job/apidoc/save_cron.js\",\n    \"groupTitle\": \"API_JOB\"\n  }\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/api_project.js",
    "content": "define({\n  \"name\": \"apidoc\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"title\": \"ESB文档|蓝鲸智云社区版\",\n  \"url\": \"\",\n  \"sampleUrl\": false,\n  \"template\": {\n    \"withCompare\": true,\n    \"withGenerator\": true\n  },\n  \"defaultVersion\": \"0.0.0\",\n  \"apidoc\": \"0.3.0\",\n  \"generator\": {\n    \"name\": \"apidoc\",\n    \"time\": \"2018-04-02T04:28:37.090Z\",\n    \"url\": \"http://apidocjs.com\",\n    \"version\": \"0.17.6\"\n  }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/api_project.json",
    "content": "{\n  \"name\": \"apidoc\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"title\": \"ESB文档|蓝鲸智云社区版\",\n  \"url\": \"\",\n  \"sampleUrl\": false,\n  \"template\": {\n    \"withCompare\": true,\n    \"withGenerator\": true\n  },\n  \"defaultVersion\": \"0.0.0\",\n  \"apidoc\": \"0.3.0\",\n  \"generator\": {\n    \"name\": \"apidoc\",\n    \"time\": \"2018-04-02T04:28:37.090Z\",\n    \"url\": \"http://apidocjs.com\",\n    \"version\": \"0.17.6\"\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/apidoc.json",
    "content": "{\n  \"name\": \"apidoc\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"title\": \"ESB文档|蓝鲸智云社区版\",\n  \"url\" : \"\",\n  \"sampleUrl\": false,\n  \"template\": {\n      \"withCompare\": true,\n      \"withGenerator\": true\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/css/style.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/* ------------------------------------------------------------------------------------------\n * Content\n * ------------------------------------------------------------------------------------------ */\nbody {\n  min-width: 980px;\n  max-width: 1280px;\n}\n\nbody, p, a, div, th, td {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n}\n\ntd.code {\n  font-size: 14px;\n  font-family: \"Source Code Pro\", monospace;\n  font-style: normal;\n  font-weight: 400;\n}\n\n#content {\n  padding-top: 16px;\n  z-Index: -1;\n  margin-left: 270px;\n}\n\np {\n  color: #808080;\n}\n\nh1 {\n  font-family: \"Source Sans Pro Semibold\", sans-serif;\n  font-weight: normal;\n  font-size: 44px;\n  line-height: 50px;\n  margin: 0 0 10px 0;\n  padding: 0;\n}\n\nh2 {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: normal;\n  font-size: 24px;\n  line-height: 40px;\n  margin: 0 0 20px 0;\n  padding: 0;\n}\n\nsection {\n  border-top: 1px solid #ebebeb;\n  padding: 30px 0;\n}\n\nsection h1 {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 700;\n  font-size: 32px;\n  line-height: 40px;\n  padding-bottom: 14px;\n  margin: 0 0 20px 0;\n  padding: 0;\n}\n\narticle {\n  padding: 14px 0 30px 0;\n}\n\narticle h1 {\n  font-family: \"Source Sans Pro Bold\", sans-serif;\n  font-weight: 600;\n  font-size: 24px;\n  line-height: 26px;\n}\n\narticle h2 {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 600;\n  font-size: 18px;\n  line-height: 24px;\n  margin: 0 0 10px 0;\n}\n\narticle h3 {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 600;\n  font-size: 16px;\n  line-height: 18px;\n  margin: 0 0 10px 0;\n}\n\narticle h4 {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 600;\n  font-size: 14px;\n  line-height: 16px;\n  margin: 0 0 8px 0;\n}\n\ntable {\n  border-collapse: collapse;\n  width: 100%;\n  margin: 0 0 20px 0;\n}\n\nth {\n  background-color: #f5f5f5;\n  text-align: left;\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 700;\n  padding: 4px 8px;\n  border: #e0e0e0 1px solid;\n}\n\ntd {\n  vertical-align: top;\n  padding: 10px 8px 0 8px;\n  border: #e0e0e0 1px solid;\n}\n\n#generator .content {\n  color: #b0b0b0;\n  border-top: 1px solid #ebebeb;\n  padding: 10px 0;\n}\n\n.label-optional {\n  float: right;\n  background-color: grey;\n  margin-top: 4px;\n}\n\n.open-left {\n  right: 0;\n  left: auto;\n}\n\n/* ------------------------------------------------------------------------------------------\n * apidoc - intro\n * ------------------------------------------------------------------------------------------ */\n\n#apidoc .apidoc {\n  border-top: 1px solid #ebebeb;\n  padding: 30px 0;\n}\n\n#apidoc h1 {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 700;\n  font-size: 32px;\n  line-height: 40px;\n  padding-bottom: 14px;\n  margin: 0 0 20px 0;\n  padding: 0;\n}\n\n#apidoc h2 {\n  font-family: \"Source Sans Pro Bold\", sans-serif;\n  font-weight: 600;\n  font-size: 22px;\n  line-height: 26px;\n  padding-top: 14px;\n}\n\n/* ------------------------------------------------------------------------------------------\n * pre / code\n * ------------------------------------------------------------------------------------------ */\npre {\n  background-color: #292b36;\n  color: #ffffff;\n  padding: 10px;\n  border-radius: 6px;\n  position: relative;\n  margin: 10px 0 20px 0;\n  overflow-x: auto;\n}\n\npre.prettyprint {\n  width: 100%;\n}\n\ncode.language-text {\n  word-wrap: break-word;\n}\n\npre.language-json {\n  overflow: auto;\n}\n\npre.language-html {\n  margin: 0 0 20px 0;\n}\n\n.type {\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 600;\n  font-size: 15px;\n  display: inline-block;\n  margin: 0 0 5px 0;\n  padding: 4px 5px;\n  border-radius: 6px;\n  text-transform: uppercase;\n  background-color: #3387CC;\n  color: #ffffff;\n}\n\n.type__get {\n  background-color: green;\n}\n\n.type__put {\n  background-color: #e5c500;\n}\n\n.type__post {\n  background-color: #4070ec;\n}\n\n.type__delete {\n  background-color: #ed0039;\n}\n\npre.language-api .str {\n  color: #ffffff;\n}\n\npre.language-api .pln,\npre.language-api .pun {\n  color: #65B042;\n}\n\npre code {\n  display: block;\n  font-size: 14px;\n  font-family: \"Source Code Pro\", monospace;\n  font-style: normal;\n  font-weight: 400;\n  word-wrap: normal;\n  white-space: pre;\n}\n\npre code.sample-request-response-json {\n  white-space: pre-wrap;\n  max-height: 500px;\n  overflow: auto;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Sidenav\n * ------------------------------------------------------------------------------------------ */\n.sidenav {\n  width: 228px;\n  margin: 0;\n  padding: 0 20px 20px 20px;\n  position: fixed;\n  top: 50px;\n  left: 0;\n  bottom: 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n  background-color: #f5f5f5;\n  z-index: 10;\n}\n\n.sidenav > li > a {\n  display: block;\n  width: 192px;\n  margin: 0;\n  padding: 2px 11px;\n  border: 0;\n  border-left: transparent 4px solid;\n  border-right: transparent 4px solid;\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n}\n\n.sidenav > li.nav-header {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n\n.sidenav > li.nav-header > a {\n  padding: 5px 15px;\n  border: 1px solid #e5e5e5;\n  width: 190px;\n  font-family: \"Source Sans Pro\", sans-serif;\n  font-weight: 700;\n  font-size: 16px;\n  background-color: #ffffff;\n}\n\n.sidenav > li.active > a {\n    position: relative;\n    z-index: 2;\n    background-color: #0088cc;\n    color: #ffffff;\n}\n\n.sidenav > li.has-modifications a {\n  border-right: #60d060 4px solid;\n}\n\n.sidenav > li.is-new a {\n  border-left: #e5e5e5 4px solid;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Side nav search\n * ------------------------------------------------------------------------------------------ */\n.sidenav-search {\n  width: 228px;\n  left: 0px;\n  position: fixed;\n  padding: 16px 20px 10px 20px;\n  background-color: #F5F5F5;\n  z-index: 11;\n}\n\n.sidenav-search .search {\n  height: 26px;\n}\n\n.search-reset {\n  position: absolute;\n  display: block;\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  text-align: center;\n  right: 28px;\n  top: 17px;\n  background-color: #fff;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Compare\n * ------------------------------------------------------------------------------------------ */\n\nins {\n  background: #60d060;\n  text-decoration: none;\n  color: #000000;\n}\n\ndel {\n  background: #f05050;\n  color: #000000;\n}\n\n.label-ins {\n  background-color: #60d060;\n}\n\n.label-del {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\npre.ins {\n  background-color: #60d060;\n}\n\npre.del {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\ntable.ins th,\ntable.ins td {\n  background-color: #60d060;\n}\n\ntable.del th,\ntable.del td {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\ntr.ins td {\n  background-color: #60d060;\n}\n\ntr.del td {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Spinner\n * ------------------------------------------------------------------------------------------ */\n\n#loader {\n  position: absolute;\n  width: 100%;\n}\n\n#loader p {\n  padding-top: 80px;\n  margin-left: -4px;\n}\n\n.spinner {\n  margin: 200px auto;\n  width: 60px;\n  height: 60px;\n  position: relative;\n}\n\n.container1 > div, .container2 > div, .container3 > div {\n  width: 14px;\n  height: 14px;\n  background-color: #0088cc;\n\n  border-radius: 100%;\n  position: absolute;\n  -webkit-animation: bouncedelay 1.2s infinite ease-in-out;\n  animation: bouncedelay 1.2s infinite ease-in-out;\n  /* Prevent first frame from flickering when animation starts */\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.spinner .spinner-container {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n}\n\n.container2 {\n  -webkit-transform: rotateZ(45deg);\n  transform: rotateZ(45deg);\n}\n\n.container3 {\n  -webkit-transform: rotateZ(90deg);\n  transform: rotateZ(90deg);\n}\n\n.circle1 { top: 0; left: 0; }\n.circle2 { top: 0; right: 0; }\n.circle3 { right: 0; bottom: 0; }\n.circle4 { left: 0; bottom: 0; }\n\n.container2 .circle1 {\n  -webkit-animation-delay: -1.1s;\n  animation-delay: -1.1s;\n}\n\n.container3 .circle1 {\n  -webkit-animation-delay: -1.0s;\n  animation-delay: -1.0s;\n}\n\n.container1 .circle2 {\n  -webkit-animation-delay: -0.9s;\n  animation-delay: -0.9s;\n}\n\n.container2 .circle2 {\n  -webkit-animation-delay: -0.8s;\n  animation-delay: -0.8s;\n}\n\n.container3 .circle2 {\n  -webkit-animation-delay: -0.7s;\n  animation-delay: -0.7s;\n}\n\n.container1 .circle3 {\n  -webkit-animation-delay: -0.6s;\n  animation-delay: -0.6s;\n}\n\n.container2 .circle3 {\n  -webkit-animation-delay: -0.5s;\n  animation-delay: -0.5s;\n}\n\n.container3 .circle3 {\n  -webkit-animation-delay: -0.4s;\n  animation-delay: -0.4s;\n}\n\n.container1 .circle4 {\n  -webkit-animation-delay: -0.3s;\n  animation-delay: -0.3s;\n}\n\n.container2 .circle4 {\n  -webkit-animation-delay: -0.2s;\n  animation-delay: -0.2s;\n}\n\n.container3 .circle4 {\n  -webkit-animation-delay: -0.1s;\n  animation-delay: -0.1s;\n}\n\n@-webkit-keyframes bouncedelay {\n  0%, 80%, 100% { -webkit-transform: scale(0.0) }\n  40% { -webkit-transform: scale(1.0) }\n}\n\n@keyframes bouncedelay {\n  0%, 80%, 100% {\n    transform: scale(0.0);\n    -webkit-transform: scale(0.0);\n  } 40% {\n    transform: scale(1.0);\n    -webkit-transform: scale(1.0);\n  }\n}\n\n/* ------------------------------------------------------------------------------------------\n * Tabs\n * ------------------------------------------------------------------------------------------ */\nul.nav-tabs {\n  margin: 0;\n}\n\np.deprecated span{\n  color: #ff0000;\n  font-weight: bold;\n  text-decoration: underline;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Print\n * ------------------------------------------------------------------------------------------ */\n\n@media print {\n\n  #sidenav,\n  #version,\n  #versions,\n  section .version,\n  section .versions {\n    display: none;\n  }\n\n  #content {\n    margin-left: 0;\n  }\n\n  a {\n    text-decoration: none;\n    color: inherit;\n  }\n\n  a:after {\n    content: \" [\" attr(href) \"] \";\n  }\n\n  p {\n    color: #000000\n  }\n\n  pre {\n    background-color: #ffffff;\n    color: #000000;\n    padding: 10px;\n    border: #808080 1px solid;\n    border-radius: 6px;\n    position: relative;\n    margin: 10px 0 20px 0;\n  }\n\n} /* /@media print */\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n  <title>Loading...</title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n  <link href=\"vendor/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n  <link href=\"vendor/prettify.css\" rel=\"stylesheet\" media=\"screen\">\n  <link href=\"css/style.css\" rel=\"stylesheet\" media=\"screen, print\">\n  <link href=\"img/favicon.ico\" rel=\"icon\" type=\"image/x-icon\">\n  <script src=\"vendor/polyfill.js\"></script>\n</head>\n<body>\n\n<script id=\"template-sidenav\" type=\"text/x-handlebars-template\">\n<nav id=\"scrollingNav\">\n  <div class=\"sidenav-search\">\n    <input class=\"form-control search\" type=\"text\" placeholder=\"{{__ \"Filter...\"}}\">\n    <span class=\"search-reset\">x</span>\n  </div>\n  <ul class=\"sidenav nav nav-list list\">\n  {{#each nav}}\n    {{#if title}}\n      {{#if isHeader}}\n        {{#if isFixed}}\n          <li class=\"nav-fixed nav-header navbar-btn nav-list-item\" data-group=\"{{group}}\"><a href=\"#api-{{group}}\">{{underscoreToSpace title}}</a></li>\n        {{else}}\n          <li class=\"nav-header nav-list-item\" data-group=\"{{group}}\"><a href=\"#api-{{group}}\">{{underscoreToSpace title}}</a></li>\n        {{/if}}\n      {{else}}\n        <li class=\"{{#if hidden}}hide {{/if}}\" data-group=\"{{group}}\" data-name=\"{{name}}\" data-version=\"{{version}}\">\n          <a href=\"#api-{{group}}-{{name}}\" class=\"nav-list-item\">{{title}}</a>\n        </li>\n      {{/if}}\n    {{/if}}\n  {{/each}}\n  </ul>\n</nav>\n</script>\n\n<script id=\"template-project\" type=\"text/x-handlebars-template\">\n  <div class=\"pull-left\">\n    <h1>{{name}}</h1>\n    {{#if description}}<h2>{{{nl2br description}}}</h2>{{/if}}\n  </div>\n  {{#if template.withCompare}}\n  <div class=\"pull-right\">\n    <div class=\"btn-group\">\n      <button id=\"version\" class=\"btn btn-lg btn-default dropdown-toggle\" data-toggle=\"dropdown\">\n        <strong>{{version}}</strong>&nbsp;<span class=\"caret\"></span>\n      </button>\n      <ul id=\"versions\" class=\"dropdown-menu open-left\">\n        <li><a id=\"compareAllWithPredecessor\" href=\"#\">{{__ \"Compare all with predecessor\"}}</a></li>\n        <li class=\"divider\"></li>\n        <li class=\"disabled\"><a href=\"#\">{{__ \"show up to version:\"}}</a></li>\n      {{#each versions}}\n        <li class=\"version\"><a href=\"#\">{{this}}</a></li>\n      {{/each}}\n      </ul>\n    </div>\n  </div>\n  {{/if}}\n  <div class=\"clearfix\"></div>\n</script>\n\n<script id=\"template-header\" type=\"text/x-handlebars-template\">\n  {{#if content}}\n    <div id=\"api-_\">{{{content}}}</div>\n  {{/if}}\n</script>\n\n<script id=\"template-footer\" type=\"text/x-handlebars-template\">\n  {{#if content}}\n    <div id=\"api-_footer\">{{{content}}}</div>\n  {{/if}}\n</script>\n\n<script id=\"template-generator\" type=\"text/x-handlebars-template\">\n  {{#if template.withGenerator}}\n    {{#if generator}}\n      <div class=\"content\">\n        {{__ \"Generated with\"}} <a href=\"{{{generator.url}}}\">{{{generator.name}}}</a> {{{generator.version}}} - {{{generator.time}}}\n      </div>\n    {{/if}}\n  {{/if}}\n</script>\n\n<script id=\"template-sections\" type=\"text/x-handlebars-template\">\n  <section id=\"api-{{group}}\">\n    <h1>{{underscoreToSpace title}}</h1>\n    {{#if description}}\n      <p>{{{nl2br description}}}</p>\n    {{/if}}\n    {{#each articles}}\n      <div id=\"api-{{group}}-{{name}}\">\n        {{{article}}}\n      </div>\n    {{/each}}\n  </section>\n</script>\n\n<script id=\"template-article\" type=\"text/x-handlebars-template\">\n  <article id=\"api-{{article.group}}-{{article.name}}-{{article.version}}\" {{#if hidden}}class=\"hide\"{{/if}} data-group=\"{{article.group}}\" data-name=\"{{article.name}}\" data-version=\"{{article.version}}\">\n    <div class=\"pull-left\">\n      <h1>{{article.groupTitle}}{{#if article.title}} - {{article.title}}{{/if}}</h1>\n    </div>\n    {{#if template.withCompare}}\n    <div class=\"pull-right\">\n      <div class=\"btn-group\">\n        <button class=\"version btn btn-default dropdown-toggle\" data-toggle=\"dropdown\">\n          <strong>{{article.version}}</strong>&nbsp;<span class=\"caret\"></span>\n        </button>\n        <ul class=\"versions dropdown-menu open-left\">\n          <li class=\"disabled\"><a href=\"#\">{{__ \"compare changes to:\"}}</a></li>\n        {{#each versions}}\n          <li class=\"version\"><a href=\"#\">{{this}}</a></li>\n        {{/each}}\n        </ul>\n      </div>\n    </div>\n    {{/if}}\n    <div class=\"clearfix\"></div>\n\n    {{#if article.deprecated}}\n      <p class=\"deprecated\"><span>{{__ \"DEPRECATED\"}}</span>\n        {{{markdown article.deprecated.content}}}\n      </p>\n    {{/if}}\n\n    {{#if article.description}}\n      <p>{{{nl2br article.description}}}</p>\n    {{/if}}\n    <span class=\"type type__{{toLowerCase article.type}}\">{{toLowerCase article.type}}</span>\n    <pre class=\"prettyprint language-html\" data-type=\"{{toLowerCase article.type}}\"><code>{{article.url}}</code></pre>\n\n    {{#if article.permission}}\n      <p>\n        {{__ \"Permission:\"}}\n        {{#each article.permission}}\n          {{name}}\n          {{#if title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{title}}\" data-content=\"{{nl2br description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n              <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{/if}}\n        {{/each}}\n      </p>\n    {{/if}}\n\n    {{#if_gt article.examples.length compare=0}}\n      <ul class=\"nav nav-tabs nav-tabs-examples\">\n        {{#each article.examples}}\n          <li{{#if_eq @index compare=0}} class=\"active\"{{/if_eq}}>\n            <a href=\"#examples-{{../id}}-{{@index}}\">{{title}}</a>\n          </li>\n        {{/each}}\n      </ul>\n\n      <div class=\"tab-content\">\n      {{#each article.examples}}\n        <div class=\"tab-pane{{#if_eq @index compare=0}} active{{/if_eq}}\" id=\"examples-{{../id}}-{{@index}}\">\n          <pre class=\"prettyprint language-{{type}}\" data-type=\"{{type}}\"><code>{{content}}</code></pre>\n        </div>\n      {{/each}}\n      </div>\n    {{/if_gt}}\n\n    {{subTemplate \"article-param-block\" params=article.header _hasType=_hasTypeInHeaderFields section=\"header\"}}\n    {{subTemplate \"article-param-block\" params=article.parameter _hasType=_hasTypeInParameterFields section=\"parameter\"}}\n    {{subTemplate \"article-param-block\" params=article.success _hasType=_hasTypeInSuccessFields section=\"success\"}}\n    {{subTemplate \"article-param-block\" params=article.error _col1=\"Name\" _hasType=_hasTypeInErrorFields section=\"error\"}}\n\n    {{subTemplate \"article-sample-request\" article=article id=id}}\n  </article>\n</script>\n\n<script id=\"template-article-param-block\" type=\"text/x-handlebars-template\">\n  {{#if params}}\n    {{#each params.fields}}\n      <h2>{{__ @key}}</h2>\n      <table>\n        <thead>\n          <tr>\n          <th style=\"width: 30%\">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ \"Field\"}}{{/if}}</th>\n            {{#if ../_hasType}}<th style=\"width: 10%\">{{__ \"Type\"}}</th>{{/if}}\n            <th style=\"width: {{#if ../_hasType}}60%{{else}}70%{{/if}}\">{{__ \"Description\"}}</th>\n          </tr>\n        </thead>\n        <tbody>\n        {{#each this}}\n          <tr>\n            <td class=\"code\">{{{splitFill field \".\" \"&nbsp;&nbsp;\"}}}{{#if optional}} <span class=\"label label-optional\">{{__ \"optional\"}}</span>{{/if}}</td>\n            {{#if ../../_hasType}}\n              <td>\n                {{{type}}}\n              </td>\n            {{/if}}\n            <td>\n            {{{nl2br description}}}\n            {{#if defaultValue}}<p class=\"default-value\">{{__ \"Default value:\"}} <code>{{{defaultValue}}}</code></p>{{/if}}\n            {{#if size}}<p class=\"type-size\">{{__ \"Size range:\"}} <code>{{{size}}}</code></p>{{/if}}\n            {{#if allowedValues}}<p class=\"type-size\">{{__ \"Allowed values:\"}}\n              {{#each allowedValues}}\n                <code>{{{this}}}</code>{{#unless @last}}, {{/unless}}\n              {{/each}}\n              </p>\n            {{/if}}\n            </td>\n          </tr>\n        {{/each}}\n        </tbody>\n      </table>\n    {{/each}}\n    {{#if_gt params.examples.length compare=0}}\n      <ul class=\"nav nav-tabs nav-tabs-examples\">\n      {{#each params.examples}}\n        <li{{#if_eq @index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#{{../section}}-examples-{{../id}}-{{@index}}\">{{title}}</a>\n        </li>\n      {{/each}}\n      </ul>\n\n      <div class=\"tab-content\">\n      {{#each params.examples}}\n        <div class=\"tab-pane{{#if_eq @index compare=0}} active{{/if_eq}}\" id=\"{{../section}}-examples-{{../id}}-{{@index}}\">\n        <pre class=\"prettyprint language-{{type}}\" data-type=\"{{type}}\"><code>{{reformat content type}}</code></pre>\n        </div>\n      {{/each}}\n      </div>\n    {{/if_gt}}\n  {{/if}}\n</script>\n\n<script id=\"template-article-sample-request\" type=\"text/x-handlebars-template\">\n    {{#if article.sampleRequest}}\n      <h2>{{__ \"Send a Sample Request\"}}</h2>\n      <form class=\"form-horizontal\">\n        <fieldset>\n            <div class=\"form-group\">\n              <label class=\"col-md-3 control-label\" for=\"{{../id}}-sample-request-url\"></label>\n              <div class=\"input-group\">\n                <input id=\"{{../id}}-sample-request-url\" type=\"text\" class=\"form-control sample-request-url\" value=\"{{article.sampleRequest.0.url}}\" />\n                <span class=\"input-group-addon\">{{__ \"url\"}}</span>\n              </div>\n            </div>\n\n      {{#if article.header}}\n        {{#if article.header.fields}}\n          <h3>{{__ \"Headers\"}}</h3>\n          {{#each article.header.fields}}\n            <h4><input type=\"radio\" data-sample-request-header-group-id=\"sample-request-header-{{@index}}\" name=\"{{../id}}-sample-request-header\" value=\"{{@index}}\" class=\"sample-request-header sample-request-switch\" {{#if_eq @index compare=0}} checked{{/if_eq}} />{{@key}}</h4>\n            <div class=\"{{../id}}-sample-request-header-fields{{#if_gt @index compare=0}} hide{{/if_gt}}\">\n              {{#each this}}\n              <div class=\"form-group\">\n                <label class=\"col-md-3 control-label\" for=\"sample-request-header-field-{{field}}\">{{field}}</label>\n                <div class=\"input-group\">\n                  <input type=\"text\" placeholder=\"{{field}}\" id=\"sample-request-header-field-{{field}}\" class=\"form-control sample-request-header\" data-sample-request-header-name=\"{{field}}\" data-sample-request-header-group=\"sample-request-header-{{@../index}}\">\n                  <span class=\"input-group-addon\">{{{type}}}</span>\n                </div>\n              </div>\n              {{/each}}\n            </div>\n          {{/each}}\n        {{/if}}\n      {{/if}}\n\n      {{#if article.parameter}}\n        {{#if article.parameter.fields}}\n          <h3>{{__ \"Parameters\"}}</h3>\n          {{#each article.parameter.fields}}\n            <h4><input type=\"radio\" data-sample-request-param-group-id=\"sample-request-param-{{@index}}\"  name=\"{{../id}}-sample-request-param\" value=\"{{@index}}\" class=\"sample-request-param sample-request-switch\" {{#if_eq @index compare=0}} checked{{/if_eq}} />{{@key}}</h4>\n            <div class=\"form-group {{../id}}-sample-request-param-fields{{#if_gt @index compare=0}} hide{{/if_gt}}\">\n              {{#each this}}\n                <label class=\"col-md-3 control-label\" for=\"sample-request-param-field-{{field}}\">{{field}}</label>\n                <div class=\"input-group\">\n                  <input id=\"sample-request-param-field-{{field}}\" type=\"text\" placeholder=\"{{field}}\" class=\"form-control sample-request-param\" data-sample-request-param-name=\"{{field}}\" data-sample-request-param-group=\"sample-request-param-{{@../index}}\" {{#if optional}}data-sample-request-param-optional=\"true\"{{/if}}>\n                  <div class=\"input-group-addon\">{{{type}}}</div>\n                </div>\n              {{/each}}\n            </div>\n          {{/each}}\n        {{/if}}\n      {{/if}}\n\n          <div class=\"form-group\">\n            <div class=\"controls pull-right\">\n              <button class=\"btn btn-primary sample-request-send\" data-sample-request-type=\"{{article.type}}\">{{__ \"Send\"}}</button>\n            </div>\n          </div>\n          <div class=\"form-group sample-request-response\" style=\"display: none;\">\n            <h3>\n              {{__ \"Response\"}}\n              <button class=\"btn btn-default btn-xs pull-right sample-request-clear\">X</button>\n            </h3>\n            <pre class=\"prettyprint language-json\" data-type=\"json\"><code class=\"sample-request-response-json\"></code></pre>\n          </div>\n        </fieldset>\n      </form>\n    {{/if}}\n</script>\n\n<script id=\"template-compare-article\" type=\"text/x-handlebars-template\">\n  <article id=\"api-{{article.group}}-{{article.name}}-{{article.version}}\" {{#if hidden}}class=\"hide\"{{/if}} data-group=\"{{article.group}}\" data-name=\"{{article.name}}\" data-version=\"{{article.version}}\" data-compare-version=\"{{compare.version}}\">\n    <div class=\"pull-left\">\n      <h1>{{underscoreToSpace article.group}} - {{{showDiff article.title compare.title}}}</h1>\n    </div>\n\n    <div class=\"pull-right\">\n      <div class=\"btn-group\">\n        <button class=\"btn btn-success\" disabled>\n          <strong>{{article.version}}</strong> {{__ \"compared to\"}}\n        </button>\n        <button class=\"version btn btn-danger dropdown-toggle\" data-toggle=\"dropdown\">\n          <strong>{{compare.version}}</strong>&nbsp;<span class=\"caret\"></span>\n        </button>\n        <ul class=\"versions dropdown-menu open-left\">\n          <li class=\"disabled\"><a href=\"#\">{{__ \"compare changes to:\"}}</a></li>\n          <li class=\"divider\"></li>\n        {{#each versions}}\n          <li class=\"version\"><a href=\"#\">{{this}}</a></li>\n        {{/each}}\n        </ul>\n      </div>\n    </div>\n    <div class=\"clearfix\"></div>\n\n    {{#if article.description}}\n      <p>{{{showDiff article.description compare.description \"nl2br\"}}}</p>\n    {{else}}\n      {{#if compare.description}}\n      <p>{{{showDiff \"\" compare.description \"nl2br\"}}}</p>\n      {{/if}}\n    {{/if}}\n\n    <pre class=\"prettyprint language-html\" data-type=\"{{toLowerCase article.type}}\"><code>{{{showDiff article.url compare.url}}}</code></pre>\n\n    {{subTemplate \"article-compare-permission\" article=article compare=compare}}\n\n    <ul class=\"nav nav-tabs nav-tabs-examples\">\n    {{#each_compare_title article.examples compare.examples}}\n      {{#if typeSame}}\n        <li{{#if_eq index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#compare-examples-{{../../article.id}}-{{index}}\">{{{showDiff source.title compare.title}}}</a>\n        </li>\n      {{/if}}\n\n      {{#if typeIns}}\n        <li{{#if_eq index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#compare-examples-{{../../article.id}}-{{index}}\"><ins>{{{source.title}}}</ins></a>\n        </li>\n      {{/if}}\n\n      {{#if typeDel}}\n        <li{{#if_eq index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#compare-examples-{{../../article.id}}-{{index}}\"><del>{{{compare.title}}}</del></a>\n        </li>\n      {{/if}}\n    {{/each_compare_title}}\n    </ul>\n\n    <div class=\"tab-content\">\n    {{#each_compare_title article.examples compare.examples}}\n\n      {{#if typeSame}}\n        <div class=\"tab-pane{{#if_eq index compare=0}} active{{/if_eq}}\" id=\"compare-examples-{{../../article.id}}-{{index}}\">\n          <pre class=\"prettyprint language-{{source.type}}\" data-type=\"{{source.type}}\"><code>{{{showDiff source.content compare.content}}}</code></pre>\n        </div>\n      {{/if}}\n\n      {{#if typeIns}}\n        <div class=\"tab-pane{{#if_eq index compare=0}} active{{/if_eq}}\" id=\"compare-examples-{{../../article.id}}-{{index}}\">\n          <pre class=\"prettyprint language-{{source.type}}\" data-type=\"{{source.type}}\"><code>{{{source.content}}}</code></pre>\n        </div>\n      {{/if}}\n\n      {{#if typeDel}}\n        <div class=\"tab-pane{{#if_eq index compare=0}} active{{/if_eq}}\" id=\"compare-examples-{{../../article.id}}-{{index}}\">\n          <pre class=\"prettyprint language-{{source.type}}\" data-type=\"{{compare.type}}\"><code>{{{compare.content}}}</code></pre>\n        </div>\n      {{/if}}\n\n    {{/each_compare_title}}\n    </div>\n\n    {{subTemplate \"article-compare-param-block\" source=article.parameter compare=compare.parameter _hasType=_hasTypeInParameterFields section=\"parameter\"}}\n    {{subTemplate \"article-compare-param-block\" source=article.success compare=compare.success _hasType=_hasTypeInSuccessFields section=\"success\"}}\n    {{subTemplate \"article-compare-param-block\" source=article.error compare=compare.error _col1=\"Name\" _hasType=_hasTypeInErrorFields section=\"error\"}}\n\n    {{subTemplate \"article-sample-request\" article=article id=id}}\n\n  </article>\n</script>\n\n<script id=\"template-article-compare-permission\" type=\"text/x-handlebars-template\">\n  <p>\n  {{__ \"Permission:\"}}\n  {{#each_compare_list_field article.permission compare.permission field=\"name\"}}\n    {{#if source}}\n      {{#if typeSame}}\n        {{source.name}}\n        {{#if source.title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{source.title}}\" data-content=\"{{nl2br source.description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n            <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{#unless _last}}, {{/unless}}\n        {{/if}}\n      {{/if}}\n\n      {{#if typeIns}}\n        <ins>{{source.name}}</ins>\n        {{#if source.title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{source.title}}\" data-content=\"{{nl2br source.description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n            <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{#unless _last}}, {{/unless}}\n        {{/if}}\n      {{/if}}\n\n      {{#if typeDel}}\n        <del>{{source.name}}</del>\n        {{#if source.title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{source.title}}\" data-content=\"{{nl2br source.description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n            <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{#unless _last}}, {{/unless}}\n        {{/if}}\n      {{/if}}\n    {{else}}\n      {{#if typeSame}}\n        {{compare.name}}\n        {{#if compare.title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{compare.title}}\" data-content=\"{{nl2br compare.description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n            <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{#unless _last}}, {{/unless}}\n        {{/if}}\n      {{/if}}\n\n      {{#if typeIns}}\n        <ins>{{compare.name}}</ins>\n        {{#if compare.title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{compare.title}}\" data-content=\"{{nl2br compare.description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n            <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{#unless _last}}, {{/unless}}\n        {{/if}}\n      {{/if}}\n\n      {{#if typeDel}}\n        <del>{{compare.name}}</del>\n        {{#if compare.title}}\n          <button type=\"button\" class=\"btn btn-info btn-xs\" data-title=\"{{compare.title}}\" data-content=\"{{nl2br compare.description}}\" data-html=\"true\" data-toggle=\"popover\" data-placement=\"right\" data-trigger=\"hover\">\n            <span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span>\n          </button>\n          {{#unless _last}}, {{/unless}}\n        {{/if}}\n      {{/if}}\n    {{/if}}\n  {{/each_compare_list_field}}\n  </p>\n</script>\n\n<script id=\"template-article-compare-param-block\" type=\"text/x-handlebars-template\">\n  {{#if source}}\n    {{#each_compare_keys source.fields compare.fields}}\n      {{#if typeSame}}\n        <h2>{{__ source.key}}</h2>\n        <table>\n        <thead>\n          <tr>\n            <th style=\"width: 30%\">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ \"Field\"}}{{/if}}</th>\n            {{#if ../_hasType}}<th style=\"width: 10%\">{{__ \"Type\"}}</th>{{/if}}\n            <th style=\"width: {{#if ../_hasType}}60%{{else}}70%{{/if}}\">{{__ \"Description\"}}</th>\n          </tr>\n        </thead>\n        {{subTemplate \"article-compare-param-block-body\" source=source.value compare=compare.value _hasType=../_hasType}}\n        </table>\n      {{/if}}\n\n      {{#if typeIns}}\n        <h2><ins>{{__ source.key}}</ins></h2>\n        <table class=\"ins\">\n        <thead>\n          <tr>\n            <th style=\"width: 30%\">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ \"Field\"}}{{/if}}</th>\n            {{#if ../_hasType}}<th style=\"width: 10%\">{{__ \"Type\"}}</th>{{/if}}\n            <th style=\"width: {{#if ../_hasType}}60%{{else}}70%{{/if}}\">{{__ \"Description\"}}</th>\n          </tr>\n        </thead>\n        {{subTemplate \"article-compare-param-block-body\" source=source.value compare=source.value _hasType=../_hasType}}\n        </table>\n      {{/if}}\n\n      {{#if typeDel}}\n        <h2><del>{{__ compare.key}}</del></h2>\n        <table class=\"del\">\n        <thead>\n          <tr>\n            <th style=\"width: 30%\">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ \"Field\"}}{{/if}}</th>\n            {{#if ../_hasType}}<th style=\"width: 10%\">{{__ \"Type\"}}</th>{{/if}}\n            <th style=\"width: {{#if ../_hasType}}60%{{else}}70%{{/if}}\">{{__ \"Description\"}}</th>\n          </tr>\n        </thead>\n        {{subTemplate \"article-compare-param-block-body\" source=compare.value compare=compare.value _hasType=../_hasType}}\n        </table>\n      {{/if}}\n    {{/each_compare_keys}}\n\n    {{#if source.examples}}\n    <ul class=\"nav nav-tabs nav-tabs-examples\">\n    {{#each_compare_title source.examples compare.examples}}\n      {{#if typeSame}}\n        <li{{#if_eq index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#{{../../section}}-compare-examples-{{../../article.id}}-{{index}}\">{{{showDiff source.title compare.title}}}</a>\n        </li>\n      {{/if}}\n\n      {{#if typeIns}}\n        <li{{#if_eq index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#{{../../section}}-compare-examples-{{../../article.id}}-{{index}}\"><ins>{{{source.title}}}</ins></a>\n        </li>\n      {{/if}}\n\n      {{#if typeDel}}\n        <li{{#if_eq index compare=0}} class=\"active\"{{/if_eq}}>\n          <a href=\"#{{../../section}}-compare-examples-{{../../article.id}}-{{index}}\"><del>{{{compare.title}}}</del></a>\n        </li>\n      {{/if}}\n    {{/each_compare_title}}\n    </ul>\n\n    <div class=\"tab-content\">\n    {{#each_compare_title source.examples compare.examples}}\n\n      {{#if typeSame}}\n        <div class=\"tab-pane{{#if_eq index compare=0}} active{{/if_eq}}\" id=\"{{../../section}}-compare-examples-{{../../article.id}}-{{index}}\">\n          <pre class=\"prettyprint language-{{source.type}}\" data-type=\"{{source.type}}\"><code>{{{showDiff source.content compare.content}}}</code></pre>\n        </div>\n      {{/if}}\n\n      {{#if typeIns}}\n        <div class=\"tab-pane{{#if_eq index compare=0}} active{{/if_eq}}\" id=\"{{../../section}}-compare-examples-{{../../article.id}}-{{index}}\">\n          <pre class=\"prettyprint language-{{source.type}}\" data-type=\"{{source.type}}\"><code>{{{source.content}}}</code></pre>\n        </div>\n      {{/if}}\n\n      {{#if typeDel}}\n        <div class=\"tab-pane{{#if_eq index compare=0}} active{{/if_eq}}\" id=\"{{../../section}}-compare-examples-{{../../article.id}}-{{index}}\">\n          <pre class=\"prettyprint language-{{source.type}}\" data-type=\"{{compare.type}}\"><code>{{{compare.content}}}</code></pre>\n        </div>\n      {{/if}}\n    {{/each_compare_title}}\n    </div>\n    {{/if}}\n  {{/if}}\n</script>\n\n<script id=\"template-article-compare-param-block-body\" type=\"text/x-handlebars-template\">\n  <tbody>\n    {{#each_compare_field source compare}}\n      {{#if typeSame}}\n        <tr>\n          <td class=\"code\">\n            {{{splitFill source.field \".\" \"&nbsp;&nbsp;\"}}}\n            {{#if source.optional}}\n              {{#if compare.optional}} <span class=\"label label-optional\">{{__ \"optional\"}}</span>\n              {{else}} <span class=\"label label-optional label-ins\">{{__ \"optional\"}}</span>\n              {{/if}}\n            {{else}}\n              {{#if compare.optional}} <span class=\"label label-optional label-del\">{{__ \"optional\"}}</span>{{/if}}\n            {{/if}}\n          </td>\n\n        {{#if source.type}}\n          {{#if compare.type}}\n          <td>{{{showDiff source.type compare.type}}}</td>\n          {{else}}\n          <td>{{{source.type}}}</td>\n          {{/if}}\n        {{else}}\n          {{#if compare.type}}\n          <td>{{{compare.type}}}</td>\n          {{else}}\n            {{#if ../../../../_hasType}}<td></td>{{/if}}\n          {{/if}}\n        {{/if}}\n          <td>\n            {{{showDiff source.description compare.description \"nl2br\"}}}\n            {{#if source.defaultValue}}<p class=\"default-value\">{{__ \"Default value:\"}} <code>{{{showDiff source.defaultValue compare.defaultValue}}}</code><p>{{/if}}\n          </td>\n        </tr>\n      {{/if}}\n\n      {{#if typeIns}}\n        <tr class=\"ins\">\n          <td class=\"code\">\n            {{{splitFill source.field \".\" \"&nbsp;&nbsp;\"}}}\n            {{#if source.optional}} <span class=\"label label-optional label-ins\">{{__ \"optional\"}}</span>{{/if}}\n          </td>\n\n        {{#if source.type}}\n          <td>{{{source.type}}}</td>\n        {{else}}\n          {{{typRowTd}}}\n        {{/if}}\n\n          <td>\n            {{{nl2br source.description}}}\n            {{#if source.defaultValue}}<p class=\"default-value\">{{__ \"Default value:\"}} <code>{{{source.defaultValue}}}</code><p>{{/if}}\n          </td>\n        </tr>\n      {{/if}}\n\n      {{#if typeDel}}\n        <tr class=\"del\">\n          <td class=\"code\">\n            {{{splitFill compare.field \".\" \"&nbsp;&nbsp;\"}}}\n            {{#if compare.optional}} <span class=\"label label-optional label-del\">{{__ \"optional\"}}</span>{{/if}}\n          </td>\n\n        {{#if compare.type}}\n          <td>{{{compare.type}}}</td>\n        {{else}}\n          {{{typRowTd}}}\n        {{/if}}\n\n          <td>\n            {{{nl2br compare.description}}}\n            {{#if compare.defaultValue}}<p class=\"default-value\">{{__ \"Default value:\"}} <code>{{{compare.defaultValue}}}</code><p>{{/if}}\n          </td>\n        </tr>\n      {{/if}}\n\n    {{/each_compare_field}}\n  </tbody>\n</script>\n\n<div class=\"container-fluid\">\n  <div class=\"row\">\n    <div id=\"sidenav\" class=\"span2\"></div>\n    <div id=\"content\">\n      <div id=\"project\"></div>\n      <div id=\"header\"></div>\n      <div id=\"sections\"></div>\n      <div id=\"footer\"></div>\n      <div id=\"generator\"></div>\n    </div>\n  </div>\n</div>\n\n<div id=\"loader\">\n  <div class=\"spinner\">\n    <div class=\"spinner-container container1\">\n      <div class=\"circle1\"></div><div class=\"circle2\"></div><div class=\"circle3\"></div><div class=\"circle4\"></div>\n    </div>\n    <div class=\"spinner-container container2\">\n      <div class=\"circle1\"></div><div class=\"circle2\"></div><div class=\"circle3\"></div><div class=\"circle4\"></div>\n    </div>\n    <div class=\"spinner-container container3\">\n      <div class=\"circle1\"></div><div class=\"circle2\"></div><div class=\"circle3\"></div><div class=\"circle4\"></div>\n    </div>\n    <p>Loading...</p>\n  </div>\n</div>\n\n<script data-main=\"main.js\" src=\"vendor/require.min.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/ca.js",
    "content": "define({\n    ca: {\n        'Allowed values:'             : 'Valors permesos:',\n        'Compare all with predecessor': 'Comparar tot amb versió anterior',\n        'compare changes to:'         : 'comparar canvis amb:',\n        'compared to'                 : 'comparat amb',\n        'Default value:'              : 'Valor per defecte:',\n        'Description'                 : 'Descripció',\n        'Field'                       : 'Camp',\n        'General'                     : 'General',\n        'Generated with'              : 'Generat amb',\n        'Name'                        : 'Nom',\n        'No response values.'         : 'Sense valors en la resposta.',\n        'optional'                    : 'opcional',\n        'Parameter'                   : 'Paràmetre',\n        'Permission:'                 : 'Permisos:',\n        'Response'                    : 'Resposta',\n        'Send'                        : 'Enviar',\n        'Send a Sample Request'       : 'Enviar una petició d\\'exemple',\n        'show up to version:'         : 'mostrar versió:',\n        'Size range:'                 : 'Tamany de rang:',\n        'Type'                        : 'Tipus',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/de.js",
    "content": "define({\n    de: {\n        'Allowed values:'             : 'Erlaubte Werte:',\n        'Compare all with predecessor': 'Vergleiche alle mit ihren Vorgängern',\n        'compare changes to:'         : 'vergleiche Änderungen mit:',\n        'compared to'                 : 'verglichen mit',\n        'Default value:'              : 'Standardwert:',\n        'Description'                 : 'Beschreibung',\n        'Field'                       : 'Feld',\n        'General'                     : 'Allgemein',\n        'Generated with'              : 'Erstellt mit',\n        'Name'                        : 'Name',\n        'No response values.'         : 'Keine Rückgabewerte.',\n        'optional'                    : 'optional',\n        'Parameter'                   : 'Parameter',\n        'Permission:'                 : 'Berechtigung:',\n        'Response'                    : 'Antwort',\n        'Send'                        : 'Senden',\n        'Send a Sample Request'       : 'Eine Beispielanfrage senden',\n        'show up to version:'         : 'zeige bis zur Version:',\n        'Size range:'                 : 'Größenbereich:',\n        'Type'                        : 'Typ',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/es.js",
    "content": "define({\n    es: {\n        'Allowed values:'             : 'Valores permitidos:',\n        'Compare all with predecessor': 'Comparar todo con versión anterior',\n        'compare changes to:'         : 'comparar cambios con:',\n        'compared to'                 : 'comparado con',\n        'Default value:'              : 'Valor por defecto:',\n        'Description'                 : 'Descripción',\n        'Field'                       : 'Campo',\n        'General'                     : 'General',\n        'Generated with'              : 'Generado con',\n        'Name'                        : 'Nombre',\n        'No response values.'         : 'Sin valores en la respuesta.',\n        'optional'                    : 'opcional',\n        'Parameter'                   : 'Parámetro',\n        'Permission:'                 : 'Permisos:',\n        'Response'                    : 'Respuesta',\n        'Send'                        : 'Enviar',\n        'Send a Sample Request'       : 'Enviar una petición de ejemplo',\n        'show up to version:'         : 'mostrar a versión:',\n        'Size range:'                 : 'Tamaño de rango:',\n        'Type'                        : 'Tipo',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/fr.js",
    "content": "define({\n    fr: {\n        'Allowed values:'             : 'Valeurs autorisées :',\n        'Compare all with predecessor': 'Tout comparer avec ...',\n        'compare changes to:'         : 'comparer les changements à :',\n        'compared to'                 : 'comparer à',\n        'Default value:'              : 'Valeur par défaut :',\n        'Description'                 : 'Description',\n        'Field'                       : 'Champ',\n        'General'                     : 'Général',\n        'Generated with'              : 'Généré avec',\n        'Name'                        : 'Nom',\n        'No response values.'         : 'Aucune valeur de réponse.',\n        'optional'                    : 'optionnel',\n        'Parameter'                   : 'Paramètre',\n        'Permission:'                 : 'Permission :',\n        'Response'                    : 'Réponse',\n        'Send'                        : 'Envoyer',\n        'Send a Sample Request'       : 'Envoyer une requête représentative',\n        'show up to version:'         : 'Montrer à partir de la version :',\n        'Size range:'                 : 'Ordre de grandeur :',\n        'Type'                        : 'Type',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/it.js",
    "content": "define({\n    it: {\n        'Allowed values:'             : 'Valori permessi:',\n        'Compare all with predecessor': 'Confronta tutto con versioni precedenti',\n        'compare changes to:'         : 'confronta modifiche con:',\n        'compared to'                 : 'confrontato con',\n        'Default value:'              : 'Valore predefinito:',\n        'Description'                 : 'Descrizione',\n        'Field'                       : 'Campo',\n        'General'                     : 'Generale',\n        'Generated with'              : 'Creato con',\n        'Name'                        : 'Nome',\n        'No response values.'         : 'Nessun valore di risposta.',\n        'optional'                    : 'opzionale',\n        'Parameter'                   : 'Parametro',\n        'Permission:'                 : 'Permessi:',\n        'Response'                    : 'Risposta',\n        'Send'                        : 'Invia',\n        'Send a Sample Request'       : 'Invia una richiesta di esempio',\n        'show up to version:'         : 'mostra alla versione:',\n        'Size range:'                 : 'Intervallo dimensione:',\n        'Type'                        : 'Tipo',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/locale.js",
    "content": "define([\n    './locales/ca.js',\n    './locales/de.js',\n    './locales/es.js',\n    './locales/fr.js',\n    './locales/it.js',\n    './locales/nl.js',\n    './locales/pl.js',\n    './locales/pt_br.js',\n    './locales/ro.js',\n    './locales/ru.js',\n    './locales/tr.js',\n    './locales/vi.js',\n    './locales/zh.js',\n    './locales/zh_cn.js'\n], function() {\n    var langId = (navigator.language || navigator.userLanguage).toLowerCase().replace('-', '_');\n    var language = langId.substr(0, 2);\n    var locales = {};\n\n    for (index in arguments) {\n        for (property in arguments[index])\n            locales[property] = arguments[index][property];\n    }\n    if ( ! locales['en'])\n        locales['en'] = {};\n\n    if ( ! locales[langId] && ! locales[language])\n        language = 'en';\n\n    var locale = (locales[langId] ? locales[langId] : locales[language]);\n\n    function __(text) {\n        var index = locale[text];\n        if (index === undefined)\n            return text;\n        return index;\n    };\n\n    function setLanguage(language) {\n        locale = locales[language];\n    }\n\n    return {\n        __         : __,\n        locales    : locales,\n        locale     : locale,\n        setLanguage: setLanguage\n    };\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/nl.js",
    "content": "define({\n    nl: {\n        'Allowed values:'             : 'Toegestane waarden:',\n        'Compare all with predecessor': 'Vergelijk alle met voorgaande versie',\n        'compare changes to:'         : 'vergelijk veranderingen met:',\n        'compared to'                 : 'vergelijk met',\n        'Default value:'              : 'Standaard waarde:',\n        'Description'                 : 'Omschrijving',\n        'Field'                       : 'Veld',\n        'General'                     : 'Algemeen',\n        'Generated with'              : 'Gegenereerd met',\n        'Name'                        : 'Naam',\n        'No response values.'         : 'Geen response waardes.',\n        'optional'                    : 'optioneel',\n        'Parameter'                   : 'Parameter',\n        'Permission:'                 : 'Permissie:',\n        'Response'                    : 'Antwoorden',\n        'Send'                        : 'Sturen',\n        'Send a Sample Request'       : 'Stuur een sample aanvragen',\n        'show up to version:'         : 'toon tot en met versie:',\n        'Size range:'                 : 'Maatbereik:',\n        'Type'                        : 'Type',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/pl.js",
    "content": "define({\n    pl: {\n        'Allowed values:'             : 'Dozwolone wartości:',\n        'Compare all with predecessor': 'Porównaj z poprzednimi wersjami',\n        'compare changes to:'         : 'porównaj zmiany do:',\n        'compared to'                 : 'porównaj do:',\n        'Default value:'              : 'Wartość domyślna:',\n        'Description'                 : 'Opis',\n        'Field'                       : 'Pole',\n        'General'                     : 'Generalnie',\n        'Generated with'              : 'Wygenerowano z',\n        'Name'                        : 'Nazwa',\n        'No response values.'         : 'Brak odpowiedzi.',\n        'optional'                    : 'opcjonalny',\n        'Parameter'                   : 'Parametr',\n        'Permission:'                 : 'Uprawnienia:',\n        'Response'                    : 'Odpowiedź',\n        'Send'                        : 'Wyślij',\n        'Send a Sample Request'       : 'Wyślij przykładowe żądanie',\n        'show up to version:'         : 'pokaż do wersji:',\n        'Size range:'                 : 'Zakres rozmiaru:',\n        'Type'                        : 'Typ',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/pt_br.js",
    "content": "define({\n    'pt_br': {\n        'Allowed values:'             : 'Valores permitidos:',\n        'Compare all with predecessor': 'Compare todos com antecessores',\n        'compare changes to:'         : 'comparar alterações com:',\n        'compared to'                 : 'comparado com',\n        'Default value:'              : 'Valor padrão:',\n        'Description'                 : 'Descrição',\n        'Field'                       : 'Campo',\n        'General'                     : 'Geral',\n        'Generated with'              : 'Gerado com',\n        'Name'                        : 'Nome',\n        'No response values.'         : 'Sem valores de resposta.',\n        'optional'                    : 'opcional',\n        'Parameter'                   : 'Parâmetro',\n        'Permission:'                 : 'Permissão:',\n        'Response'                    : 'Resposta',\n        'Send'                        : 'Enviar',\n        'Send a Sample Request'       : 'Enviar um Exemplo de Pedido',\n        'show up to version:'         : 'aparecer para a versão:',\n        'Size range:'                 : 'Faixa de tamanho:',\n        'Type'                        : 'Tipo',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/ro.js",
    "content": "define({\n    ro: {\n        'Allowed values:'             : 'Valori permise:',\n        'Compare all with predecessor': 'Compară toate cu versiunea precedentă',\n        'compare changes to:'         : 'compară cu versiunea:',\n        'compared to'                 : 'comparat cu',\n        'Default value:'              : 'Valoare implicită:',\n        'Description'                 : 'Descriere',\n        'Field'                       : 'Câmp',\n        'General'                     : 'General',\n        'Generated with'              : 'Generat cu',\n        'Name'                        : 'Nume',\n        'No response values.'         : 'Nici o valoare returnată.',\n        'optional'                    : 'opțional',\n        'Parameter'                   : 'Parametru',\n        'Permission:'                 : 'Permisiune:',\n        'Response'                    : 'Răspuns',\n        'Send'                        : 'Trimite',\n        'Send a Sample Request'       : 'Trimite o cerere de probă',\n        'show up to version:'         : 'arată până la versiunea:',\n        'Size range:'                 : 'Interval permis:',\n        'Type'                        : 'Tip',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/ru.js",
    "content": "define({\n    ru: {\n        'Allowed values:'             : 'Допустимые значения:',\n        'Compare all with predecessor': 'Сравнить с предыдущей версией',\n        'compare changes to:'         : 'сравнить с:',\n        'compared to'                 : 'в сравнении с',\n        'Default value:'              : 'По умолчанию:',\n        'Description'                 : 'Описание',\n        'Field'                       : 'Название',\n        'General'                     : 'Общая информация',\n        'Generated with'              : 'Сгенерировано с помощью',\n        'Name'                        : 'Название',\n        'No response values.'         : 'Нет значений для ответа.',\n        'optional'                    : 'необязательный',\n        'Parameter'                   : 'Параметр',\n        'Permission:'                 : 'Разрешено:',\n        'Response'                    : 'Ответ',\n        'Send'                        : 'Отправить',\n        'Send a Sample Request'       : 'Отправить тестовый запрос',\n        'show up to version:'         : 'показать версию:',\n        'Size range:'                 : 'Ограничения:',\n        'Type'                        : 'Тип',\n        'url'                         : 'URL'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/tr.js",
    "content": "define({\n    tr: {\n        'Allowed values:'             : 'İzin verilen değerler:',\n        'Compare all with predecessor': 'Tümünü öncekiler ile karşılaştır',\n        'compare changes to:'         : 'değişiklikleri karşılaştır:',\n        'compared to'                 : 'karşılaştır',\n        'Default value:'              : 'Varsayılan değer:',\n        'Description'                 : 'Açıklama',\n        'Field'                       : 'Alan',\n        'General'                     : 'Genel',\n        'Generated with'              : 'Oluşturan',\n        'Name'                        : 'İsim',\n        'No response values.'         : 'Dönüş verisi yok.',\n        'optional'                    : 'opsiyonel',\n        'Parameter'                   : 'Parametre',\n        'Permission:'                 : 'İzin:',\n        'Response'                    : 'Dönüş',\n        'Send'                        : 'Gönder',\n        'Send a Sample Request'       : 'Örnek istek gönder',\n        'show up to version:'         : 'bu versiyona kadar göster:',\n        'Size range:'                 : 'Boyut aralığı:',\n        'Type'                        : 'Tip',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/vi.js",
    "content": "define({\n    vi: {\n        'Allowed values:'             : 'Giá trị chấp nhận:',\n        'Compare all with predecessor': 'So sánh với tất cả phiên bản trước',\n        'compare changes to:'         : 'so sánh sự thay đổi với:',\n        'compared to'                 : 'so sánh với',\n        'Default value:'              : 'Giá trị mặc định:',\n        'Description'                 : 'Chú thích',\n        'Field'                       : 'Trường dữ liệu',\n        'General'                     : 'Tổng quan',\n        'Generated with'              : 'Được tạo bởi',\n        'Name'                        : 'Tên',\n        'No response values.'         : 'Không có kết quả trả về.',\n        'optional'                    : 'Tùy chọn',\n        'Parameter'                   : 'Tham số',\n        'Permission:'                 : 'Quyền hạn:',\n        'Response'                    : 'Kết quả',\n        'Send'                        : 'Gửi',\n        'Send a Sample Request'       : 'Gửi một yêu cầu mẫu',\n        'show up to version:'         : 'hiển thị phiên bản:',\n        'Size range:'                 : 'Kích cỡ:',\n        'Type'                        : 'Kiểu',\n        'url'                         : 'liên kết'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/zh.js",
    "content": "define({\n    zh: {\n        'Allowed values​​:'             : '允許值:',\n        'Compare all with predecessor': '預先比較所有',\n        'compare changes to:'         : '比較變更:',\n        'compared to'                 : '對比',\n        'Default value:'              : '默認值:',\n        'Description'                 : '描述',\n        'Field'                       : '字段',\n        'General'                     : '概括',\n        'Generated with'              : '生成工具',\n        'Name'                        : '名稱',\n        'No response values​​.'         : '無對應資料.',\n        'optional'                    : '選項',\n        'Parameter'                   : '參數',\n        'Permission:'                 : '允許:',\n        'Response'                    : '回應',\n        'Send'                        : '發送',\n        'Send a Sample Request'       : '發送試用需求',\n        'show up to version:'         : '顯示到版本:',\n        'Size range:'                 : '尺寸範圍:',\n        'Type'                        : '類型',\n        'url'                         : '網址'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/locales/zh_cn.js",
    "content": "define({\n    'zh_cn': {\n        'Allowed values:'             : '允许值:',\n        'Compare all with predecessor': '与所有较早的比较',\n        'compare changes to:'         : '将当前版本与指定版本比较:',\n        'compared to'                 : '相比于',\n        'Default value:'              : '默认值:',\n        'Description'                 : '描述',\n        'Field'                       : '字段',\n        'General'                     : '概要',\n        'Generated with'              : '基于',\n        'Name'                        : '名称',\n        'No response values.'         : '无返回值.',\n        'optional'                    : '可选',\n        'Parameter'                   : '参数',\n        'Permission:'                 : '权限:',\n        'Response'                    : '返回',\n        'Send'                        : '发送',\n        'Send a Sample Request'       : '发送示例请求',\n        'show up to version:'         : '显示到指定版本:',\n        'Size range:'                 : '取值范围:',\n        'Type'                        : '类型',\n        'url'                         : '网址'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/main.js",
    "content": "require.config({\n    paths: {\n        bootstrap: './vendor/bootstrap.min',\n        diffMatchPatch: './vendor/diff_match_patch.min',\n        handlebars: './vendor/handlebars.min',\n        handlebarsExtended: './utils/handlebars_helper',\n        jquery: './vendor/jquery.min',\n        locales: './locales/locale',\n        lodash: './vendor/lodash.custom.min',\n        pathToRegexp: './vendor/path-to-regexp/index',\n        prettify: './vendor/prettify/prettify',\n        semver: './vendor/semver.min',\n        utilsSampleRequest: './utils/send_sample_request',\n        webfontloader: './vendor/webfontloader',\n        list: './vendor/list.min'\n    },\n    shim: {\n        bootstrap: {\n            deps: ['jquery']\n        },\n        diffMatchPatch: {\n            exports: 'diff_match_patch'\n        },\n        handlebars: {\n            exports: 'Handlebars'\n        },\n        handlebarsExtended: {\n            deps: ['jquery', 'handlebars'],\n            exports: 'Handlebars'\n        },\n        prettify: {\n            exports: 'prettyPrint'\n        }\n    },\n    urlArgs: 'v=' + (new Date()).getTime(),\n    waitSeconds: 15\n});\n\nrequire([\n    'jquery',\n    'lodash',\n    'locales',\n    'handlebarsExtended',\n    './api_project.js',\n    './api_data.js',\n    'prettify',\n    'utilsSampleRequest',\n    'semver',\n    'webfontloader',\n    'bootstrap',\n    'pathToRegexp',\n    'list'\n], function($, _, locale, Handlebars, apiProject, apiData, prettyPrint, sampleRequest, semver, WebFont) {\n\n    // load google web fonts\n    loadGoogleFontCss();\n\n    var api = apiData.api;\n\n    //\n    // Templates\n    //\n    var templateHeader         = Handlebars.compile( $('#template-header').html() );\n    var templateFooter         = Handlebars.compile( $('#template-footer').html() );\n    var templateArticle        = Handlebars.compile( $('#template-article').html() );\n    var templateCompareArticle = Handlebars.compile( $('#template-compare-article').html() );\n    var templateGenerator      = Handlebars.compile( $('#template-generator').html() );\n    var templateProject        = Handlebars.compile( $('#template-project').html() );\n    var templateSections       = Handlebars.compile( $('#template-sections').html() );\n    var templateSidenav        = Handlebars.compile( $('#template-sidenav').html() );\n\n    //\n    // apiProject defaults\n    //\n    if ( ! apiProject.template)\n        apiProject.template = {};\n\n    if (apiProject.template.withCompare == null)\n        apiProject.template.withCompare = true;\n\n    if (apiProject.template.withGenerator == null)\n        apiProject.template.withGenerator = true;\n\n    if (apiProject.template.forceLanguage)\n        locale.setLanguage(apiProject.template.forceLanguage);\n\n    // Setup jQuery Ajax\n    $.ajaxSetup(apiProject.template.jQueryAjaxSetup);\n\n    //\n    // Data transform\n    //\n    // grouped by group\n    var apiByGroup = _.groupBy(api, function(entry) {\n        return entry.group;\n    });\n\n    // grouped by group and name\n    var apiByGroupAndName = {};\n    $.each(apiByGroup, function(index, entries) {\n        apiByGroupAndName[index] = _.groupBy(entries, function(entry) {\n            return entry.name;\n        });\n    });\n\n    //\n    // sort api within a group by title ASC and custom order\n    //\n    var newList = [];\n    var umlauts = { 'ä': 'ae', 'ü': 'ue', 'ö': 'oe', 'ß': 'ss' }; // TODO: remove in version 1.0\n    $.each (apiByGroupAndName, function(index, groupEntries) {\n        // get titles from the first entry of group[].name[] (name has versioning)\n        var titles = [];\n        $.each (groupEntries, function(titleName, entries) {\n            var title = entries[0].title;\n            if(title !== undefined) {\n                title.toLowerCase().replace(/[äöüß]/g, function($0) { return umlauts[$0]; });\n                titles.push(title + '#~#' + titleName); // '#~#' keep reference to titleName after sorting\n            }\n        });\n        // sort by name ASC\n        titles.sort();\n\n        // custom order\n        if (apiProject.order)\n            titles = sortByOrder(titles, apiProject.order, '#~#');\n\n        // add single elements to the new list\n        titles.forEach(function(name) {\n            var values = name.split('#~#');\n            var key = values[1];\n            groupEntries[key].forEach(function(entry) {\n                newList.push(entry);\n            });\n        });\n    });\n    // api overwrite with ordered list\n    api = newList;\n\n    //\n    // Group- and Versionlists\n    //\n    var apiGroups = {};\n    var apiGroupTitles = {};\n    var apiVersions = {};\n    apiVersions[apiProject.version] = 1;\n\n    $.each(api, function(index, entry) {\n        apiGroups[entry.group] = 1;\n        apiGroupTitles[entry.group] = entry.groupTitle || entry.group;\n        apiVersions[entry.version] = 1;\n    });\n\n    // sort groups\n    apiGroups = Object.keys(apiGroups);\n    apiGroups.sort();\n\n    // custom order\n    if (apiProject.order)\n        apiGroups = sortByOrder(apiGroups, apiProject.order);\n\n    // sort versions DESC\n    apiVersions = Object.keys(apiVersions);\n    apiVersions.sort(semver.compare);\n    apiVersions.reverse();\n\n    //\n    // create Navigationlist\n    //\n    var nav = [];\n    apiGroups.forEach(function(group) {\n        // Mainmenu entry\n        nav.push({\n            group: group,\n            isHeader: true,\n            title: apiGroupTitles[group]\n        });\n\n        // Submenu\n        var oldName = '';\n        api.forEach(function(entry) {\n            if (entry.group === group) {\n                if (oldName !== entry.name) {\n                    nav.push({\n                        title: entry.title,\n                        group: group,\n                        name: entry.name,\n                        type: entry.type,\n                        version: entry.version\n                    });\n                } else {\n                    nav.push({\n                        title: entry.title,\n                        group: group,\n                        hidden: true,\n                        name: entry.name,\n                        type: entry.type,\n                        version: entry.version\n                    });\n                }\n                oldName = entry.name;\n            }\n        });\n    });\n\n    /**\n     * Add navigation items by analyzing the HTML content and searching for h1 and h2 tags\n     * @param nav Object the navigation array\n     * @param content string the compiled HTML content\n     * @param index where to insert items\n     * @return boolean true if any good-looking (i.e. with a group identifier) <h1> tag was found\n     */\n    function add_nav(nav, content, index) {\n        var found_level1 = false;\n        if ( ! content) {\n          return found_level1;\n        }\n        var topics = content.match(/<h(1|2).*?>(.+?)<\\/h(1|2)>/gi);\n        if ( topics ) {\n          topics.forEach(function(entry) {\n              var level = entry.substring(2,3);\n              var title = entry.replace(/<.+?>/g, '');    // Remove all HTML tags for the title\n              var entry_tags = entry.match(/id=\"api-([^\\-]+)(?:-(.+))?\"/);    // Find the group and name in the id property\n              var group = (entry_tags ? entry_tags[1] : null);\n              var name = (entry_tags ? entry_tags[2] : null);\n              if (level==1 && title && group)  {\n                  nav.splice(index, 0, {\n                      group: group,\n                      isHeader: true,\n                      title: title,\n                      isFixed: true\n                  });\n                  index++;\n                  found_level1 = true;\n              }\n              if (level==2 && title && group && name)    {\n                  nav.splice(index, 0, {\n                      group: group,\n                      name: name,\n                      isHeader: false,\n                      title: title,\n                      isFixed: false,\n                      version: '1.0'\n                  });\n                  index++;\n              }\n          });\n        }\n        return found_level1;\n    }\n\n    // Mainmenu Header entry\n    if (apiProject.header) {\n        var found_level1 = add_nav(nav, apiProject.header.content, 0); // Add level 1 and 2 titles\n        if (!found_level1) {    // If no Level 1 tags were found, make a title\n            nav.unshift({\n                group: '_',\n                isHeader: true,\n                title: (apiProject.header.title == null) ? locale.__('General') : apiProject.header.title,\n                isFixed: true\n            });\n        }\n    }\n\n    // Mainmenu Footer entry\n    if (apiProject.footer) {\n        var last_nav_index = nav.length;\n        var found_level1 = add_nav(nav, apiProject.footer.content, nav.length); // Add level 1 and 2 titles\n        if (!found_level1 && apiProject.footer.title != null) {    // If no Level 1 tags were found, make a title\n            nav.splice(last_nav_index, 0, {\n                group: '_footer',\n                isHeader: true,\n                title: apiProject.footer.title,\n                isFixed: true\n            });\n        }\n    }\n\n    // render pagetitle\n    var title = apiProject.title ? apiProject.title : 'apiDoc: ' + apiProject.name + ' - ' + apiProject.version;\n    $(document).attr('title', title);\n\n    // remove loader\n    $('#loader').remove();\n\n    // render sidenav\n    var fields = {\n        nav: nav\n    };\n    $('#sidenav').append( templateSidenav(fields) );\n\n    // render Generator\n    $('#generator').append( templateGenerator(apiProject) );\n\n    // render Project\n    _.extend(apiProject, { versions: apiVersions});\n    $('#project').append( templateProject(apiProject) );\n\n    // render apiDoc, header/footer documentation\n    if (apiProject.header)\n        $('#header').append( templateHeader(apiProject.header) );\n\n    if (apiProject.footer)\n        $('#footer').append( templateFooter(apiProject.footer) );\n\n    //\n    // Render Sections and Articles\n    //\n    var articleVersions = {};\n    var content = '';\n    apiGroups.forEach(function(groupEntry) {\n        var articles = [];\n        var oldName = '';\n        var fields = {};\n        var title = groupEntry;\n        var description = '';\n        articleVersions[groupEntry] = {};\n\n        // render all articles of a group\n        api.forEach(function(entry) {\n            if(groupEntry === entry.group) {\n                if (oldName !== entry.name) {\n                    // determine versions\n                    api.forEach(function(versionEntry) {\n                        if (groupEntry === versionEntry.group && entry.name === versionEntry.name) {\n                            if ( ! articleVersions[entry.group].hasOwnProperty(entry.name) ) {\n                                articleVersions[entry.group][entry.name] = [];\n                            }\n                            articleVersions[entry.group][entry.name].push(versionEntry.version);\n                        }\n                    });\n                    fields = {\n                        article: entry,\n                        versions: articleVersions[entry.group][entry.name]\n                    };\n                } else {\n                    fields = {\n                        article: entry,\n                        hidden: true,\n                        versions: articleVersions[entry.group][entry.name]\n                    };\n                }\n\n                // add prefix URL for endpoint\n                if (apiProject.url)\n                    fields.article.url = apiProject.url + fields.article.url;\n\n                addArticleSettings(fields, entry);\n\n                if (entry.groupTitle)\n                    title = entry.groupTitle;\n\n                // TODO: make groupDescription compareable with older versions (not important for the moment)\n                if (entry.groupDescription)\n                    description = entry.groupDescription;\n\n                articles.push({\n                    article: templateArticle(fields),\n                    group: entry.group,\n                    name: entry.name\n                });\n                oldName = entry.name;\n            }\n        });\n\n        // render Section with Articles\n        var fields = {\n            group: groupEntry,\n            title: title,\n            description: description,\n            articles: articles\n        };\n        content += templateSections(fields);\n    });\n    $('#sections').append( content );\n\n    // Bootstrap Scrollspy\n    $(this).scrollspy({ target: '#scrollingNav', offset: 18 });\n\n    // Content-Scroll on Navigation click.\n    $('.sidenav').find('a').on('click', function(e) {\n        e.preventDefault();\n        var id = $(this).attr('href');\n        if ($(id).length > 0)\n            $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 400);\n        window.location.hash = $(this).attr('href');\n    });\n\n    // Quickjump on Pageload to hash position.\n    if(window.location.hash) {\n        var id = window.location.hash;\n        if ($(id).length > 0)\n            $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 0);\n    }\n\n    /**\n     * Check if Parameter (sub) List has a type Field.\n     * Example: @apiSuccess          varname1 No type.\n     *          @apiSuccess {String} varname2 With type.\n     *\n     * @param {Object} fields\n     */\n    function _hasTypeInFields(fields) {\n        var result = false;\n        $.each(fields, function(name) {\n            result = result || _.some(fields[name], function(item) { return item.type; });\n        });\n        return result;\n    }\n\n    /**\n     * On Template changes, recall plugins.\n     */\n    function initDynamic() {\n        // Bootstrap popover\n        $('button[data-toggle=\"popover\"]').popover().click(function(e) {\n            e.preventDefault();\n        });\n\n        var version = $('#version strong').html();\n        $('#sidenav li').removeClass('is-new');\n        if (apiProject.template.withCompare) {\n            $('#sidenav li[data-version=\\'' + version + '\\']').each(function(){\n                var group = $(this).data('group');\n                var name = $(this).data('name');\n                var length = $('#sidenav li[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\']').length;\n                var index  = $('#sidenav li[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\']').index($(this));\n                if (length === 1 || index === (length - 1))\n                    $(this).addClass('is-new');\n            });\n        }\n\n        // tabs\n        $('.nav-tabs-examples a').click(function (e) {\n            e.preventDefault();\n            $(this).tab('show');\n        });\n        $('.nav-tabs-examples').find('a:first').tab('show');\n\n        // sample request switch\n        $('.sample-request-switch').click(function (e) {\n            var name = '.' + $(this).attr('name') + '-fields';\n            $(name).addClass('hide');\n            $(this).parent().next(name).removeClass('hide');\n        });\n\n        // call scrollspy refresh method\n        $(window).scrollspy('refresh');\n\n        // init modules\n        sampleRequest.initDynamic();\n    }\n    initDynamic();\n\n    // Pre- / Code-Format\n    prettyPrint();\n\n    //\n    // HTML-Template specific jQuery-Functions\n    //\n    // Change Main Version\n    $('#versions li.version a').on('click', function(e) {\n        e.preventDefault();\n\n        var selectedVersion = $(this).html();\n        $('#version strong').html(selectedVersion);\n\n        // hide all\n        $('article').addClass('hide');\n        $('#sidenav li:not(.nav-fixed)').addClass('hide');\n\n        // show 1st equal or lower Version of each entry\n        $('article[data-version]').each(function(index) {\n            var group = $(this).data('group');\n            var name = $(this).data('name');\n            var version = $(this).data('version');\n\n            if (semver.lte(version, selectedVersion)) {\n                if ($('article[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\']:visible').length === 0) {\n                    // enable Article\n                    $('article[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\'][data-version=\\'' + version + '\\']').removeClass('hide');\n                    // enable Navigation\n                    $('#sidenav li[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\'][data-version=\\'' + version + '\\']').removeClass('hide');\n                    $('#sidenav li.nav-header[data-group=\\'' + group + '\\']').removeClass('hide');\n                }\n            }\n        });\n\n        // show 1st equal or lower Version of each entry\n        $('article[data-version]').each(function(index) {\n            var group = $(this).data('group');\n            $('section#api-' + group).removeClass('hide');\n            if ($('section#api-' + group + ' article:visible').length === 0) {\n                $('section#api-' + group).addClass('hide');\n            } else {\n                $('section#api-' + group).removeClass('hide');\n            }\n        });\n\n        initDynamic();\n        return;\n    });\n\n    // compare all article with their predecessor\n    $('#compareAllWithPredecessor').on('click', changeAllVersionCompareTo);\n\n    // change version of an article\n    $('article .versions li.version a').on('click', changeVersionCompareTo);\n\n    // compare url-parameter\n    $.urlParam = function(name) {\n        var results = new RegExp('[\\\\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);\n        return (results && results[1]) ? results[1] : null;\n    };\n\n    if ($.urlParam('compare')) {\n        // URL Paramter ?compare=1 is set\n        $('#compareAllWithPredecessor').trigger('click');\n\n        if (window.location.hash) {\n            var id = window.location.hash;\n            $('html,body').animate({ scrollTop: parseInt($(id).offset().top) - 18 }, 0);\n        }\n    }\n\n    /**\n     * Initialize search\n     */\n    var options = {\n      valueNames: [ 'nav-list-item' ]\n    };\n    var endpointsList = new List('scrollingNav', options);\n\n    /**\n     * Set initial focus to search input\n     */\n    $('#scrollingNav .sidenav-search input.search').focus();\n\n    /**\n     * Detect ESC key to reset search\n     */\n    $(document).keyup(function(e) {\n      if (e.keyCode === 27) $('span.search-reset').click();\n    });\n\n    /**\n     * Search reset\n     */\n    $('span.search-reset').on('click', function() {\n      $('#scrollingNav .sidenav-search input.search')\n        .val(\"\")\n        .focus()\n      ;\n      endpointsList.search();\n    });\n\n    /**\n     * Change version of an article to compare it to an other version.\n     */\n    function changeVersionCompareTo(e) {\n        e.preventDefault();\n\n        var $root = $(this).parents('article');\n        var selectedVersion = $(this).html();\n        var $button = $root.find('.version');\n        var currentVersion = $button.find('strong').html();\n        $button.find('strong').html(selectedVersion);\n\n        var group = $root.data('group');\n        var name = $root.data('name');\n        var version = $root.data('version');\n\n        var compareVersion = $root.data('compare-version');\n\n        if (compareVersion === selectedVersion)\n            return;\n\n        if ( ! compareVersion && version == selectedVersion)\n            return;\n\n        if (compareVersion && articleVersions[group][name][0] === selectedVersion || version === selectedVersion) {\n            // the version of the entry is set to the highest version (reset)\n            resetArticle(group, name, version);\n        } else {\n            var $compareToArticle = $('article[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\'][data-version=\\'' + selectedVersion + '\\']');\n\n            var sourceEntry = {};\n            var compareEntry = {};\n            $.each(apiByGroupAndName[group][name], function(index, entry) {\n                if (entry.version === version)\n                    sourceEntry = entry;\n                if (entry.version === selectedVersion)\n                    compareEntry = entry;\n            });\n\n            var fields = {\n                article: sourceEntry,\n                compare: compareEntry,\n                versions: articleVersions[group][name]\n            };\n\n            // add unique id\n            // TODO: replace all group-name-version in template with id.\n            fields.article.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version;\n            fields.article.id = fields.article.id.replace(/\\./g, '_');\n\n            fields.compare.id = fields.compare.group + '-' + fields.compare.name + '-' + fields.compare.version;\n            fields.compare.id = fields.compare.id.replace(/\\./g, '_');\n\n            var entry = sourceEntry;\n            if (entry.parameter && entry.parameter.fields)\n                fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields);\n\n            if (entry.error && entry.error.fields)\n                fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields);\n\n            if (entry.success && entry.success.fields)\n                fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields);\n\n            if (entry.info && entry.info.fields)\n                fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields);\n\n            var entry = compareEntry;\n            if (fields._hasTypeInParameterFields !== true && entry.parameter && entry.parameter.fields)\n                fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields);\n\n            if (fields._hasTypeInErrorFields !== true && entry.error && entry.error.fields)\n                fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields);\n\n            if (fields._hasTypeInSuccessFields !== true && entry.success && entry.success.fields)\n                fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields);\n\n            if (fields._hasTypeInInfoFields !== true && entry.info && entry.info.fields)\n                fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields);\n\n            var content = templateCompareArticle(fields);\n            $root.after(content);\n            var $content = $root.next();\n\n            // Event on.click re-assign\n            $content.find('.versions li.version a').on('click', changeVersionCompareTo);\n\n            // select navigation\n            $('#sidenav li[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\'][data-version=\\'' + currentVersion + '\\']').addClass('has-modifications');\n\n            $root.remove();\n            // TODO: on change main version or select the highest version re-render\n        }\n\n        initDynamic();\n    }\n\n    /**\n     * Compare all currently selected Versions with their predecessor.\n     */\n    function changeAllVersionCompareTo(e) {\n        e.preventDefault();\n        $('article:visible .versions').each(function(){\n            var $root = $(this).parents('article');\n            var currentVersion = $root.data('version');\n            var $foundElement = null;\n            $(this).find('li.version a').each(function() {\n                var selectVersion = $(this).html();\n                if (selectVersion < currentVersion && ! $foundElement)\n                    $foundElement = $(this);\n            });\n\n            if($foundElement)\n                $foundElement.trigger('click');\n        });\n        initDynamic();\n    }\n\n    /**\n     * Sort the fields.\n     */\n    function sortFields(fields_object) {\n        $.each(fields_object, function (key, fields) {\n\n            var reversed = fields.slice().reverse()\n\n            var max_dot_count = Math.max.apply(null, reversed.map(function (item) {\n                return item.field.split(\".\").length - 1;\n            }))\n\n            for (var dot_count = 1; dot_count <= max_dot_count; dot_count++) {\n                reversed.forEach(function (item, index) {\n                    var parts = item.field.split(\".\");\n                    if (parts.length - 1 == dot_count) {\n                        var fields_names = fields.map(function (item) { return item.field; });\n                        if (parts.slice(1).length  >= 1) {\n                            var prefix = parts.slice(0, parts.length - 1).join(\".\");\n                            var prefix_index = fields_names.indexOf(prefix);\n                            if (prefix_index > -1) {\n                                fields.splice(fields_names.indexOf(item.field), 1);\n                                fields.splice(prefix_index + 1, 0, item);\n                            }\n                        }\n                    }\n                });\n            }\n        });\n    }\n\n    /**\n     * Add article settings.\n     */\n    function addArticleSettings(fields, entry) {\n        // add unique id\n        // TODO: replace all group-name-version in template with id.\n        fields.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version;\n        fields.id = fields.id.replace(/\\./g, '_');\n\n        if (entry.header && entry.header.fields) {\n            sortFields(entry.header.fields);\n            fields._hasTypeInHeaderFields = _hasTypeInFields(entry.header.fields);\n        }\n\n        if (entry.parameter && entry.parameter.fields) {\n            sortFields(entry.parameter.fields);\n            fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields);\n        }\n\n        if (entry.error && entry.error.fields) {\n            sortFields(entry.error.fields);\n            fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields);\n        }\n\n        if (entry.success && entry.success.fields) {\n            sortFields(entry.success.fields);\n            fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields);\n        }\n\n        if (entry.info && entry.info.fields) {\n            sortFields(entry.info.fields);\n            fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields);\n        }\n\n        // add template settings\n        fields.template = apiProject.template;\n    }\n\n    /**\n     * Render Article.\n     */\n    function renderArticle(group, name, version) {\n        var entry = {};\n        $.each(apiByGroupAndName[group][name], function(index, currentEntry) {\n            if (currentEntry.version === version)\n                entry = currentEntry;\n        });\n        var fields = {\n            article: entry,\n            versions: articleVersions[group][name]\n        };\n\n        addArticleSettings(fields, entry);\n\n        return templateArticle(fields);\n    }\n\n    /**\n     * Render original Article and remove the current visible Article.\n     */\n    function resetArticle(group, name, version) {\n        var $root = $('article[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\']:visible');\n        var content = renderArticle(group, name, version);\n\n        $root.after(content);\n        var $content = $root.next();\n\n        // Event on.click muss neu zugewiesen werden (sollte eigentlich mit on automatisch funktionieren... sollte)\n        $content.find('.versions li.version a').on('click', changeVersionCompareTo);\n\n        $('#sidenav li[data-group=\\'' + group + '\\'][data-name=\\'' + name + '\\'][data-version=\\'' + version + '\\']').removeClass('has-modifications');\n\n        $root.remove();\n        return;\n    }\n\n    /**\n     * Load google fonts.\n     */\n    function loadGoogleFontCss() {\n        WebFont.load({\n            active: function() {\n                // Update scrollspy\n                $(window).scrollspy('refresh')\n            },\n            google: {\n                families: ['Source Code Pro', 'Source Sans Pro:n4,n6,n7']\n            }\n        });\n    }\n\n    /**\n     * Return ordered entries by custom order and append not defined entries to the end.\n     * @param  {String[]} elements\n     * @param  {String[]} order\n     * @param  {String}   splitBy\n     * @return {String[]} Custom ordered list.\n     */\n    function sortByOrder(elements, order, splitBy) {\n        var results = [];\n        order.forEach (function(name) {\n            if (splitBy)\n                elements.forEach (function(element) {\n                    var parts = element.split(splitBy);\n                    var key = parts[1]; // reference keep for sorting\n                    if (key == name)\n                        results.push(element);\n                });\n            else\n                elements.forEach (function(key) {\n                    if (key == name)\n                        results.push(name);\n                });\n        });\n        // Append all other entries that ar not defined in order\n        elements.forEach(function(element) {\n            if (results.indexOf(element) === -1)\n                results.push(element);\n        });\n        return results;\n    }\n\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/utils/handlebars_helper.js",
    "content": "define([\n    'locales',\n    'handlebars',\n    'diffMatchPatch'\n], function(locale, Handlebars, DiffMatchPatch) {\n\n    /**\n     * Return a text as markdown.\n     * Currently only a little helper to replace apidoc-inline Links (#Group:Name).\n     * Should be replaced with a full markdown lib.\n     * @param string text\n     */\n    Handlebars.registerHelper('markdown', function(text) {\n        if ( ! text ) {\n          return text;\n        }\n        text = text.replace(/((\\[(.*?)\\])?\\(#)((.+?):(.+?))(\\))/mg, function(match, p1, p2, p3, p4, p5, p6) {\n          var link = p3 || p5 + '/' + p6;\n          return '<a href=\"#api-' + p5 + '-' + p6 + '\">' + link + '</a>';\n        });\n        return text;\n    });\n\n    /**\n     * start/stop timer for simple performance check.\n     */\n    var timer;\n    Handlebars.registerHelper('startTimer', function(text) {\n        timer = new Date();\n        return '';\n    });\n\n    Handlebars.registerHelper('stopTimer', function(text) {\n        console.log(new Date() - timer);\n        return '';\n    });\n\n    /**\n     * Return localized Text.\n     * @param string text\n     */\n    Handlebars.registerHelper('__', function(text) {\n        return locale.__(text);\n    });\n\n    /**\n     * Console log.\n     * @param mixed obj\n     */\n    Handlebars.registerHelper('cl', function(obj) {\n        console.log(obj);\n        return '';\n    });\n\n    /**\n     * Replace underscore with space.\n     * @param string text\n     */\n    Handlebars.registerHelper('underscoreToSpace', function(text) {\n        return text.replace(/(_+)/g, ' ');\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('assign', function(name) {\n        if(arguments.length > 0) {\n            var type = typeof(arguments[1]);\n            var arg = null;\n            if(type === 'string' || type === 'number' || type === 'boolean') arg = arguments[1];\n            Handlebars.registerHelper(name, function() { return arg; });\n        }\n        return '';\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('nl2br', function(text) {\n        return _handlebarsNewlineToBreak(text);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('if_eq', function(context, options) {\n        var compare = context;\n        // Get length if context is an object\n        if (context instanceof Object && ! (options.hash.compare instanceof Object))\n             compare = Object.keys(context).length;\n\n        if (compare === options.hash.compare)\n            return options.fn(this);\n\n        return options.inverse(this);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('if_gt', function(context, options) {\n        var compare = context;\n        // Get length if context is an object\n        if (context instanceof Object && ! (options.hash.compare instanceof Object))\n             compare = Object.keys(context).length;\n\n        if(compare > options.hash.compare)\n            return options.fn(this);\n\n        return options.inverse(this);\n    });\n\n    /**\n     *\n     */\n    var templateCache = {};\n    Handlebars.registerHelper('subTemplate', function(name, sourceContext) {\n        if ( ! templateCache[name])\n            templateCache[name] = Handlebars.compile($('#template-' + name).html());\n\n        var template = templateCache[name];\n        var templateContext = $.extend({}, this, sourceContext.hash);\n        return new Handlebars.SafeString( template(templateContext) );\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('toLowerCase', function(value) {\n        return (value && typeof value === 'string') ? value.toLowerCase() : '';\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('splitFill', function(value, splitChar, fillChar) {\n        var splits = value.split(splitChar);\n        return new Array(splits.length).join(fillChar) + splits[splits.length - 1];\n    });\n\n    /**\n     * Convert Newline to HTML-Break (nl2br).\n     *\n     * @param {String} text\n     * @returns {String}\n     */\n    function _handlebarsNewlineToBreak(text) {\n        return ('' + text).replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + '<br>' + '$2');\n    }\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_list_field', function(source, compare, options) {\n        var fieldName = options.hash.field;\n        var newSource = [];\n        if (source) {\n            source.forEach(function(entry) {\n                var values = entry;\n                values['key'] = entry[fieldName];\n                newSource.push(values);\n            });\n        }\n\n        var newCompare = [];\n        if (compare) {\n            compare.forEach(function(entry) {\n                var values = entry;\n                values['key'] = entry[fieldName];\n                newCompare.push(values);\n            });\n        }\n        return _handlebarsEachCompared('key', newSource, newCompare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_keys', function(source, compare, options) {\n        var newSource = [];\n        if (source) {\n            var sourceFields = Object.keys(source);\n            sourceFields.forEach(function(name) {\n                var values = {};\n                values['value'] = source[name];\n                values['key'] = name;\n                newSource.push(values);\n            });\n        }\n\n        var newCompare = [];\n        if (compare) {\n            var compareFields = Object.keys(compare);\n            compareFields.forEach(function(name) {\n                var values = {};\n                values['value'] = compare[name];\n                values['key'] = name;\n                newCompare.push(values);\n            });\n        }\n        return _handlebarsEachCompared('key', newSource, newCompare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_field', function(source, compare, options) {\n        return _handlebarsEachCompared('field', source, compare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_title', function(source, compare, options) {\n        return _handlebarsEachCompared('title', source, compare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('reformat', function(source, type){\n        if (type == 'json')\n            try {\n               return JSON.stringify(JSON.parse(source.trim()),null, \"    \");\n            } catch(e) {\n\n            }\n        return source\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('showDiff', function(source, compare, options) {\n        var ds = '';\n        if(source === compare) {\n            ds = source;\n        } else {\n            if( ! source)\n                return compare;\n\n            if( ! compare)\n                return source;\n\n            var d = diffMatchPatch.diff_main(compare, source);\n            diffMatchPatch.diff_cleanupSemantic(d);\n            ds = diffMatchPatch.diff_prettyHtml(d);\n            ds = ds.replace(/&para;/gm, '');\n        }\n        if(options === 'nl2br')\n            ds = _handlebarsNewlineToBreak(ds);\n\n        return ds;\n    });\n\n    /**\n     *\n     */\n    function _handlebarsEachCompared(fieldname, source, compare, options)\n    {\n        var dataList = [];\n        var index = 0;\n        if(source) {\n            source.forEach(function(sourceEntry) {\n                var found = false;\n                if (compare) {\n                    compare.forEach(function(compareEntry) {\n                        if(sourceEntry[fieldname] === compareEntry[fieldname]) {\n                            var data = {\n                                typeSame: true,\n                                source: sourceEntry,\n                                compare: compareEntry,\n                                index: index\n                            };\n                            dataList.push(data);\n                            found = true;\n                            index++;\n                        }\n                    });\n                }\n                if ( ! found) {\n                    var data = {\n                        typeIns: true,\n                        source: sourceEntry,\n                        index: index\n                    };\n                    dataList.push(data);\n                    index++;\n                }\n            });\n        }\n\n        if (compare) {\n            compare.forEach(function(compareEntry) {\n                var found = false;\n                if (source) {\n                    source.forEach(function(sourceEntry) {\n                        if(sourceEntry[fieldname] === compareEntry[fieldname])\n                            found = true;\n                    });\n                }\n                if ( ! found) {\n                    var data = {\n                        typeDel: true,\n                        compare: compareEntry,\n                        index: index\n                    };\n                    dataList.push(data);\n                    index++;\n                }\n            });\n        }\n\n        var ret = '';\n        var length = dataList.length;\n        for (var index in dataList) {\n            if(index == (length - 1))\n                dataList[index]['_last'] = true;\n            ret = ret + options.fn(dataList[index]);\n        }\n        return ret;\n    }\n\n    var diffMatchPatch = new DiffMatchPatch();\n\n    /**\n     * Overwrite Colors\n     */\n    DiffMatchPatch.prototype.diff_prettyHtml = function(diffs) {\n      var html = [];\n      var pattern_amp = /&/g;\n      var pattern_lt = /</g;\n      var pattern_gt = />/g;\n      var pattern_para = /\\n/g;\n      for (var x = 0; x < diffs.length; x++) {\n        var op = diffs[x][0];    // Operation (insert, delete, equal)\n        var data = diffs[x][1];  // Text of change.\n        var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')\n            .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');\n        switch (op) {\n          case DIFF_INSERT:\n            html[x] = '<ins>' + text + '</ins>';\n            break;\n          case DIFF_DELETE:\n            html[x] = '<del>' + text + '</del>';\n            break;\n          case DIFF_EQUAL:\n            html[x] = '<span>' + text + '</span>';\n            break;\n        }\n      }\n      return html.join('');\n    };\n\n    // Exports\n    return Handlebars;\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/utils/send_sample_request.js",
    "content": "define([\r\n  'jquery',\r\n  'lodash'\r\n], function($, _) {\r\n\r\n  var initDynamic = function() {\r\n      // Button send\r\n      $(\".sample-request-send\").off(\"click\");\r\n      $(\".sample-request-send\").on(\"click\", function(e) {\r\n          e.preventDefault();\r\n          var $root = $(this).parents(\"article\");\r\n          var group = $root.data(\"group\");\r\n          var name = $root.data(\"name\");\r\n          var version = $root.data(\"version\");\r\n          sendSampleRequest(group, name, version, $(this).data(\"sample-request-type\"));\r\n      });\r\n\r\n      // Button clear\r\n      $(\".sample-request-clear\").off(\"click\");\r\n      $(\".sample-request-clear\").on(\"click\", function(e) {\r\n          e.preventDefault();\r\n          var $root = $(this).parents(\"article\");\r\n          var group = $root.data(\"group\");\r\n          var name = $root.data(\"name\");\r\n          var version = $root.data(\"version\");\r\n          clearSampleRequest(group, name, version);\r\n      });\r\n  }; // initDynamic\r\n\r\n  function sendSampleRequest(group, name, version, type)\r\n  {\r\n      var $root = $('article[data-group=\"' + group + '\"][data-name=\"' + name + '\"][data-version=\"' + version + '\"]');\r\n\r\n      // Optional header\r\n      var header = {};\r\n      $root.find(\".sample-request-header:checked\").each(function(i, element) {\r\n          var group = $(element).data(\"sample-request-header-group-id\");\r\n          $root.find(\"[data-sample-request-header-group=\\\"\" + group + \"\\\"]\").each(function(i, element) {\r\n            var key = $(element).data(\"sample-request-header-name\");\r\n            var value = element.value;\r\n            if ( ! element.optional && element.defaultValue !== '') {\r\n                value = element.defaultValue;\r\n            }\r\n            header[key] = value;\r\n          });\r\n      });\r\n\r\n      // create JSON dictionary of parameters\r\n      var param = {};\r\n      var paramType = {};\r\n      $root.find(\".sample-request-param:checked\").each(function(i, element) {\r\n          var group = $(element).data(\"sample-request-param-group-id\");\r\n          $root.find(\"[data-sample-request-param-group=\\\"\" + group + \"\\\"]\").not(function(){\r\n            return $(this).val() == \"\" && $(this).is(\"[data-sample-request-param-optional='true']\");\r\n          }).each(function(i, element) {\r\n            var key = $(element).data(\"sample-request-param-name\");\r\n            var value = element.value;\r\n            if ( ! element.optional && element.defaultValue !== '') {\r\n                value = element.defaultValue;\r\n            }\r\n            param[key] = value;\r\n            paramType[key] = $(element).next().text();\r\n          });\r\n      });\r\n\r\n      // grab user-inputted URL\r\n      var url = $root.find(\".sample-request-url\").val();\r\n\r\n      // Insert url parameter\r\n      var pattern = pathToRegexp(url, null);\r\n      var matches = pattern.exec(url);\r\n      for (var i = 1; i < matches.length; i++) {\r\n          var key = matches[i].substr(1);\r\n          if (param[key] !== undefined) {\r\n              url = url.replace(matches[i], encodeURIComponent(param[key]));\r\n\r\n              // remove URL parameters from list\r\n              delete param[key];\r\n          }\r\n      } // for\r\n\r\n      $root.find(\".sample-request-response\").fadeTo(250, 1);\r\n      $root.find(\".sample-request-response-json\").html(\"Loading...\");\r\n      refreshScrollSpy();\r\n\r\n      _.each( param, function( val, key ) {\r\n          var t = paramType[ key ].toLowerCase();\r\n          if ( t === 'object' || t === 'array' ) {\r\n              try {\r\n                  param[ key ] = JSON.parse( val );\r\n              } catch (e) {\r\n              }\r\n          }\r\n      });\r\n\r\n      // send AJAX request, catch success or error callback\r\n      var ajaxRequest = {\r\n          url        : url,\r\n          headers    : header,\r\n          data       : param,\r\n          type       : type.toUpperCase(),\r\n          success    : displaySuccess,\r\n          error      : displayError\r\n      };\r\n\r\n      $.ajax(ajaxRequest);\r\n\r\n\r\n      function displaySuccess(data, status, jqXHR) {\r\n          var jsonResponse;\r\n          try {\r\n              jsonResponse = JSON.parse(jqXHR.responseText);\r\n              jsonResponse = JSON.stringify(jsonResponse, null, 4);\r\n          } catch (e) {\r\n              jsonResponse = data;\r\n          }\r\n          $root.find(\".sample-request-response-json\").html(jsonResponse);\r\n          refreshScrollSpy();\r\n      };\r\n\r\n      function displayError(jqXHR, textStatus, error) {\r\n          var message = \"Error \" + jqXHR.status + \": \" + error;\r\n          var jsonResponse;\r\n          try {\r\n              jsonResponse = JSON.parse(jqXHR.responseText);\r\n              jsonResponse = JSON.stringify(jsonResponse, null, 4);\r\n          } catch (e) {\r\n              jsonResponse = escape(jqXHR.responseText);\r\n          }\r\n\r\n          if (jsonResponse)\r\n              message += \"<br>\" + jsonResponse;\r\n\r\n          // flicker on previous error to make clear that there is a new response\r\n          if($root.find(\".sample-request-response\").is(\":visible\"))\r\n              $root.find(\".sample-request-response\").fadeTo(1, 0.1);\r\n\r\n          $root.find(\".sample-request-response\").fadeTo(250, 1);\r\n          $root.find(\".sample-request-response-json\").html(message);\r\n          refreshScrollSpy();\r\n      };\r\n  }\r\n\r\n  function clearSampleRequest(group, name, version)\r\n  {\r\n      var $root = $('article[data-group=\"' + group + '\"][data-name=\"' + name + '\"][data-version=\"' + version + '\"]');\r\n\r\n      // hide sample response\r\n      $root.find(\".sample-request-response-json\").html(\"\");\r\n      $root.find(\".sample-request-response\").hide();\r\n\r\n      // reset value of parameters\r\n      $root.find(\".sample-request-param\").each(function(i, element) {\r\n          element.value = \"\";\r\n      });\r\n\r\n      // restore default URL\r\n      var $urlElement = $root.find(\".sample-request-url\");\r\n      $urlElement.val($urlElement.prop(\"defaultValue\"));\r\n\r\n      refreshScrollSpy();\r\n  }\r\n\r\n  function refreshScrollSpy()\r\n  {\r\n      $('[data-spy=\"scroll\"]').each(function () {\r\n          $(this).scrollspy(\"refresh\");\r\n      });\r\n  }\r\n\r\n  function escapeHtml(str) {\r\n      var div = document.createElement(\"div\");\r\n      div.appendChild(document.createTextNode(str));\r\n      return div.innerHTML;\r\n  }\r\n\r\n  /**\r\n   * Exports.\r\n   */\r\n  return {\r\n      initDynamic: initDynamic\r\n  };\r\n\r\n});\r\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/path-to-regexp/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/path-to-regexp/index.js",
    "content": "var isArray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\n// module.exports = pathToRegexp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n  // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n  '([\\\\/.])?(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^)])*)\\\\))?|\\\\(((?:\\\\\\\\.|[^)])*)\\\\))([+*?])?',\n  // Match regexp special characters that are always escaped.\n  '([.+*?=^!:${}()[\\\\]|\\\\/])'\n].join('|'), 'g');\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {String} group\n * @return {String}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1');\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {RegExp} re\n * @param  {Array}  keys\n * @return {RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys;\n  return re;\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {String}\n */\nfunction flags (options) {\n  return options.sensitive ? '' : 'i';\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {RegExp} path\n * @param  {Array}  keys\n * @return {RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name:      i,\n        delimiter: null,\n        optional:  false,\n        repeat:    false\n      });\n    }\n  }\n\n  return attachKeys(path, keys);\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {Array}  path\n * @param  {Array}  keys\n * @param  {Object} options\n * @return {RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n  return attachKeys(regexp, keys);\n}\n\n/**\n * Replace the specific tags with regexp strings.\n *\n * @param  {String} path\n * @param  {Array}  keys\n * @return {String}\n */\nfunction replacePath (path, keys) {\n  var index = 0;\n\n  function replace (_, escaped, prefix, key, capture, group, suffix, escape) {\n    if (escaped) {\n      return escaped;\n    }\n\n    if (escape) {\n      return '\\\\' + escape;\n    }\n\n    var repeat   = suffix === '+' || suffix === '*';\n    var optional = suffix === '?' || suffix === '*';\n\n    keys.push({\n      name:      key || index++,\n      delimiter: prefix || '/',\n      optional:  optional,\n      repeat:    repeat\n    });\n\n    prefix = prefix ? ('\\\\' + prefix) : '';\n    capture = escapeGroup(capture || group || '[^' + (prefix || '\\\\/') + ']+?');\n\n    if (repeat) {\n      capture = capture + '(?:' + prefix + capture + ')*';\n    }\n\n    if (optional) {\n      return '(?:' + prefix + '(' + capture + '))?';\n    }\n\n    // Basic parameter support.\n    return prefix + '(' + capture + ')';\n  }\n\n  return path.replace(PATH_REGEXP, replace);\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(String|RegExp|Array)} path\n * @param  {Array}                 [keys]\n * @param  {Object}                [options]\n * @return {RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  keys = keys || [];\n\n  if (!isArray(keys)) {\n    options = keys;\n    keys = [];\n  } else if (!options) {\n    options = {};\n  }\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, keys, options);\n  }\n\n  if (isArray(path)) {\n    return arrayToRegexp(path, keys, options);\n  }\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var route = replacePath(path, keys);\n  var endsWithSlash = path.charAt(path.length - 1) === '/';\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\\\/(?=$))?';\n  }\n\n  if (end) {\n    route += '$';\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithSlash ? '' : '(?=\\\\/|$)';\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys);\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/polyfill.js",
    "content": "// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n  Object.keys = (function () {\n    'use strict';\n    var hasOwnProperty = Object.prototype.hasOwnProperty,\n        hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n        dontEnums = [\n          'toString',\n          'toLocaleString',\n          'valueOf',\n          'hasOwnProperty',\n          'isPrototypeOf',\n          'propertyIsEnumerable',\n          'constructor'\n        ],\n        dontEnumsLength = dontEnums.length;\n\n    return function (obj) {\n      if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n        throw new TypeError('Object.keys called on non-object');\n      }\n\n      var result = [], prop, i;\n\n      for (prop in obj) {\n        if (hasOwnProperty.call(obj, prop)) {\n          result.push(prop);\n        }\n      }\n\n      if (hasDontEnumBug) {\n        for (i = 0; i < dontEnumsLength; i++) {\n          if (hasOwnProperty.call(obj, dontEnums[i])) {\n            result.push(dontEnums[i]);\n          }\n        }\n      }\n      return result;\n    };\n  }());\n}\n\n//Production steps of ECMA-262, Edition 5, 15.4.4.18\n//Reference: http://es5.github.com/#x15.4.4.18\nif (!Array.prototype.forEach) {\n  Array.prototype.forEach = function (callback, thisArg) {\n    var T, k;\n\n    if (this == null) {\n      throw new TypeError(' this is null or not defined');\n    }\n\n    // 1. Let O be the result of calling ToObject passing the |this| value as the argument.\n    var O = Object(this);\n\n    // 2. Let lenValue be the result of calling the Get internal method of O with the argument \"length\".\n    // 3. Let len be ToUint32(lenValue).\n    var len = O.length >>> 0;\n\n    // 4. If IsCallable(callback) is false, throw a TypeError exception.\n    // See: http://es5.github.com/#x9.11\n    if (typeof callback !== \"function\") {\n      throw new TypeError(callback + \" is not a function\");\n    }\n\n    // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n    if (arguments.length > 1) {\n      T = thisArg;\n    }\n\n    // 6. Let k be 0\n    k = 0;\n\n    // 7. Repeat, while k < len\n    while (k < len) {\n      var kValue;\n\n      // a. Let Pk be ToString(k).\n      //   This is implicit for LHS operands of the in operator\n      // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.\n      //   This step can be combined with c\n      // c. If kPresent is true, then\n      if (k in O) {\n        // i. Let kValue be the result of calling the Get internal method of O with argument Pk.\n        kValue = O[k];\n\n        // ii. Call the Call internal method of callback with T as the this value and\n        // argument list containing kValue, k, and O.\n        callback.call(T, kValue, k, O);\n      }\n      // d. Increase k by 1.\n      k++;\n    }\n    // 8. return undefined\n  };\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-Splus.js",
    "content": "/*\n\n Copyright (C) 2012 Jeffrey B. Arnold\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$)/,null,\"'\"]],[[\"com\",/^#.*/],[\"kwd\",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],[\"lit\",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],[\"lit\",/^[+-]?([0-9]+(\\.[0-9]+)?|\\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],[\"lit\",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\\.\\.(?:\\.|[0-9]+))(?![A-Za-z0-9_.])/],\n[\"pun\",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\\|\\|?|\\*|\\+|\\^|\\/|!|%.*?%|=|~|\\$|@|:{1,3}|[\\[\\](){};,?])/],[\"pln\",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\\.[a-zA-Z_][0-9a-zA-Z\\._]*)(?![A-Za-z0-9_.])/],[\"str\",/^`.+`/]]),[\"r\",\"s\",\"R\",\"S\",\"Splus\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-aea.js",
    "content": "/*\n\n Copyright (C) 2009 Onno Hommes.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\r\\n]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\nnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\\=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[!-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-agc.js",
    "content": "/*\n\n Copyright (C) 2009 Onno Hommes.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\r\\n]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\nnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\\=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[!-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-apollo.js",
    "content": "/*\n\n Copyright (C) 2009 Onno Hommes.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\r\\n]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\nnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\\=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[!-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-basic.js",
    "content": "/*\n\n Copyright (C) 2013 Peter Kofler\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:\"(?:[^\\\\\"\\r\\n]|\\\\.)*(?:\"|$))/,null,'\"'],[\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^REM[^\\r\\n]*/,null],[\"kwd\",/^\\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\\b/,null],[\"pln\",/^[A-Z][A-Z0-9]?(?:\\$|%)?/i,null],[\"lit\",/^(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+\\-]?\\d+)?/i,\nnull,\"0123456789\"],[\"pun\",/^.[^\\s\\w\\.$%\"]*/,null]]),[\"basic\",\"cbm\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-cbm.js",
    "content": "/*\n\n Copyright (C) 2013 Peter Kofler\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:\"(?:[^\\\\\"\\r\\n]|\\\\.)*(?:\"|$))/,null,'\"'],[\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^REM[^\\r\\n]*/,null],[\"kwd\",/^\\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\\b/,null],[\"pln\",/^[A-Z][A-Z0-9]?(?:\\$|%)?/i,null],[\"lit\",/^(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+\\-]?\\d+)?/i,\nnull,\"0123456789\"],[\"pun\",/^.[^\\s\\w\\.$%\"]*/,null]]),[\"basic\",\"cbm\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-cl.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-clj.js",
    "content": "/*\n Copyright (C) 2011 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^[\\(\\{\\[]+/,null,\"([{\"],[\"clo\",/^[\\)\\}\\]]+/,null,\")]}\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\\b/,\nnull],[\"typ\",/^:[0-9a-zA-Z\\-]+/]]),[\"clj\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-css.js",
    "content": "/*\n\n Copyright (C) 2009 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[ \\t\\r\\n\\f]+/,null,\" \\t\\r\\n\\f\"]],[[\"str\",/^\\\"(?:[^\\n\\r\\f\\\\\\\"]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\s\\S])*\\\"/,null],[\"str\",/^\\'(?:[^\\n\\r\\f\\\\\\']|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\s\\S])*\\'/,null],[\"lang-css-str\",/^url\\(([^\\)\\\"\\']+)\\)/i],[\"kwd\",/^(?:url|rgb|\\!important|@import|@page|@media|@charset|inherit)(?=[^\\-\\w]|$)/i,null],[\"lang-css-kw\",/^(-?(?:[_a-z]|(?:\\\\[0-9a-f]+ ?))(?:[_a-z0-9\\-]|\\\\(?:\\\\[0-9a-f]+ ?))*)\\s*:/i],[\"com\",/^\\/\\*[^*]*\\*+(?:[^\\/*][^*]*\\*+)*\\//],\n[\"com\",/^(?:\\x3c!--|--\\x3e)/],[\"lit\",/^(?:\\d+|\\d*\\.\\d+)(?:%|[a-z]+)?/i],[\"lit\",/^#(?:[0-9a-f]{3}){1,2}\\b/i],[\"pln\",/^-?(?:[_a-z]|(?:\\\\[\\da-f]+ ?))(?:[_a-z\\d\\-]|\\\\(?:\\\\[\\da-f]+ ?))*/i],[\"pun\",/^[^\\s\\w\\'\\\"]+/]]),[\"css\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"kwd\",/^-?(?:[_a-z]|(?:\\\\[\\da-f]+ ?))(?:[_a-z\\d\\-]|\\\\(?:\\\\[\\da-f]+ ?))*/i]]),[\"css-kw\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"str\",/^[^\\)\\\"\\']+/]]),[\"css-str\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-dart.js",
    "content": "/*\n\n Copyright (C) 2013 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"com\",/^#!(?:.*)/],[\"kwd\",/^\\b(?:import|library|part of|part|as|show|hide)\\b/i],[\"com\",/^\\/\\/(?:.*)/],[\"com\",/^\\/\\*[^*]*\\*+(?:[^\\/*][^*]*\\*+)*\\//],[\"kwd\",/^\\b(?:class|interface)\\b/i],[\"kwd\",/^\\b(?:assert|async|await|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|sync|this|throw|try|while)\\b/i],[\"kwd\",/^\\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\\b/i],\n[\"typ\",/^\\b(?:bool|double|Dynamic|int|num|Object|String|void)\\b/i],[\"kwd\",/^\\b(?:false|null|true)\\b/i],[\"str\",/^r?[\\']{3}[\\s|\\S]*?[^\\\\][\\']{3}/],[\"str\",/^r?[\\\"]{3}[\\s|\\S]*?[^\\\\][\\\"]{3}/],[\"str\",/^r?\\'(\\'|(?:[^\\n\\r\\f])*?[^\\\\]\\')/],[\"str\",/^r?\\\"(\\\"|(?:[^\\n\\r\\f])*?[^\\\\]\\\")/],[\"typ\",/^[A-Z]\\w*/],[\"pln\",/^[a-z_$][a-z0-9_]*/i],[\"pun\",/^[~!%^&*+=|?:<>/-]/],[\"lit\",/^\\b0x[0-9a-f]+/i],[\"lit\",/^\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i],[\"lit\",\n/^\\b\\.\\d+(?:e[+-]?\\d+)?/i],[\"pun\",/^[(){}\\[\\],.;]/]]),[\"dart\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-el.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-erl.js",
    "content": "/*\n\n Copyright (C) 2013 Andrew Allen\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\x0B\\x0C\\r ]+/,null,\"\\t\\n\\x0B\\f\\r \"],[\"str\",/^\\\"(?:[^\\\"\\\\\\n\\x0C\\r]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"lit\",/^[a-z][a-zA-Z0-9_]*/],[\"lit\",/^\\'(?:[^\\'\\\\\\n\\x0C\\r]|\\\\[^&])+\\'?/,null,\"'\"],[\"lit\",/^\\?[^ \\t\\n({]+/,null,\"?\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+\\-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^%[^\\n]*/],[\"kwd\",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\\b/],\n[\"kwd\",/^-[a-z_]+/],[\"typ\",/^[A-Z_][a-zA-Z0-9_]*/],[\"pun\",/^[.,;]/]]),[\"erlang\",\"erl\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-erlang.js",
    "content": "/*\n\n Copyright (C) 2013 Andrew Allen\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\x0B\\x0C\\r ]+/,null,\"\\t\\n\\x0B\\f\\r \"],[\"str\",/^\\\"(?:[^\\\"\\\\\\n\\x0C\\r]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"lit\",/^[a-z][a-zA-Z0-9_]*/],[\"lit\",/^\\'(?:[^\\'\\\\\\n\\x0C\\r]|\\\\[^&])+\\'?/,null,\"'\"],[\"lit\",/^\\?[^ \\t\\n({]+/,null,\"?\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+\\-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^%[^\\n]*/],[\"kwd\",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\\b/],\n[\"kwd\",/^-[a-z_]+/],[\"typ\",/^[A-Z_][a-zA-Z0-9_]*/],[\"pun\",/^[.,;]/]]),[\"erlang\",\"erl\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-fs.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^#(?:if[\\t\\n\\r \\xA0]+(?:[a-z_$][\\w\\']*|``[^\\r\\n\\t`]*(?:``|$))|else|endif|light)/i,null,\"#\"],[\"str\",/^(?:\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)|\\'(?:[^\\'\\\\]|\\\\[\\s\\S])(?:\\'|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\r\\n]*|\\(\\*[\\s\\S]*?\\*\\))/],[\"kwd\",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\\b/],\n[\"lit\",/^[+\\-]?(?:0x[\\da-f]+|(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+\\-]?\\d+)?))/i],[\"pln\",/^(?:[a-z_][\\w']*[!?#]?|``[^\\r\\n\\t`]*(?:``|$))/i],[\"pun\",/^[^\\t\\n\\r \\xA0\\\"\\'\\w]+/]]),[\"fs\",\"ml\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-go.js",
    "content": "/*\n\n Copyright (C) 2010 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"pln\",/^(?:\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)|\\'(?:[^\\'\\\\]|\\\\[\\s\\S])+(?:\\'|$)|`[^`]*(?:`|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\r\\n]*|\\/\\*[\\s\\S]*?\\*\\/)/],[\"pln\",/^(?:[^\\/\\\"\\'`]|\\/(?![\\/\\*]))+/i]]),[\"go\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-hs.js",
    "content": "/*\n\n Copyright (C) 2009 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\x0B\\x0C\\r ]+/,null,\"\\t\\n\\x0B\\f\\r \"],[\"str\",/^\\\"(?:[^\\\"\\\\\\n\\x0C\\r]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\'(?:[^\\'\\\\\\n\\x0C\\r]|\\\\[^&])\\'?/,null,\"'\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+\\-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^(?:(?:--+(?:[^\\r\\n\\x0C]*)?)|(?:\\{-(?:[^-]|-+[^-\\}])*-\\}))/],[\"kwd\",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\\']|$)/,\nnull],[\"pln\",/^(?:[A-Z][\\w\\']*\\.)*[a-zA-Z][\\w\\']*/],[\"pun\",/^[^\\t\\n\\x0B\\x0C\\r a-zA-Z0-9\\'\\\"]+/]]),[\"hs\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-lasso.js",
    "content": "/*\n\n Copyright (C) 2013 Eric Knibbe\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$)/,null,\"'\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\`[^\\`]*(?:\\`|$)/,null,\"`\"],[\"lit\",/^0x[\\da-f]+|\\d+/i,null,\"0123456789\"],[\"atn\",/^#\\d+|[#$][a-z_][\\w.]*|#![ \\S]+lasso9\\b/i,null,\"#$\"]],[[\"tag\",/^[[\\]]|<\\?(?:lasso(?:script)?|=)|\\?>|noprocess\\b|no_square_brackets\\b/i],[\"com\",/^\\/\\/[^\\r\\n]*|\\/\\*[\\s\\S]*?\\*\\//],\n[\"atn\",/^-(?!infinity)[a-z_][\\w.]*|\\.\\s*'[a-z_][\\w.]*'/i],[\"lit\",/^\\d*\\.\\d+(?:e[-+]?\\d+)?|infinity\\b|NaN\\b/i],[\"atv\",/^::\\s*[a-z_][\\w.]*/i],[\"lit\",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\\b/i],[\"kwd\",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\\b/i],\n[\"typ\",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\\b|^\\.\\.?/i],[\"pln\",/^[a-z_][\\w.]*(?:=\\s*(?=\\())?/i],[\"pun\",/^:=|[-+*\\/%=<>&|!?\\\\]/]]),[\"lasso\",\"ls\",\"lassoscript\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-lassoscript.js",
    "content": "/*\n\n Copyright (C) 2013 Eric Knibbe\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$)/,null,\"'\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\`[^\\`]*(?:\\`|$)/,null,\"`\"],[\"lit\",/^0x[\\da-f]+|\\d+/i,null,\"0123456789\"],[\"atn\",/^#\\d+|[#$][a-z_][\\w.]*|#![ \\S]+lasso9\\b/i,null,\"#$\"]],[[\"tag\",/^[[\\]]|<\\?(?:lasso(?:script)?|=)|\\?>|noprocess\\b|no_square_brackets\\b/i],[\"com\",/^\\/\\/[^\\r\\n]*|\\/\\*[\\s\\S]*?\\*\\//],\n[\"atn\",/^-(?!infinity)[a-z_][\\w.]*|\\.\\s*'[a-z_][\\w.]*'/i],[\"lit\",/^\\d*\\.\\d+(?:e[-+]?\\d+)?|infinity\\b|NaN\\b/i],[\"atv\",/^::\\s*[a-z_][\\w.]*/i],[\"lit\",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\\b/i],[\"kwd\",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\\b/i],\n[\"typ\",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\\b|^\\.\\.?/i],[\"pln\",/^[a-z_][\\w.]*(?:=\\s*(?=\\())?/i],[\"pun\",/^:=|[-+*\\/%=<>&|!?\\\\]/]]),[\"lasso\",\"ls\",\"lassoscript\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-latex.js",
    "content": "/*\n\n Copyright (C) 2011 Martin S.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\r\\n]*/,null,\"%\"]],[[\"kwd\",/^\\\\[a-zA-Z@]+/],[\"kwd\",/^\\\\./],[\"typ\",/^[$&]/],[\"lit\",/[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[\"pun\",/^[{}()\\[\\]=]+/]]),[\"latex\",\"tex\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-lgt.js",
    "content": "/*\n\n Copyright (C) 2014 Paulo Moura\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^\\\"(?:[^\\\"\\\\\\n\\x0C\\r]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"lit\",/^[a-z][a-zA-Z0-9_]*/],[\"lit\",/^\\'(?:[^\\'\\\\\\n\\x0C\\r]|\\\\[^&])+\\'?/,null,\"'\"],[\"lit\",/^(?:0'.|0b[0-1]+|0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+\\-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^%[^\\r\\n]*/,null,\"%\"],[\"com\",/^\\/\\*[\\s\\S]*?\\*\\//],[\"kwd\",/^\\s*:-\\s(c(a(lls|tegory)|oinductive)|p(ublic|r(ot(ocol|ected)|ivate))|e(l(if|se)|n(coding|sure_loaded)|xport)|i(f|n(clude|itialization|fo))|alias|d(ynamic|iscontiguous)|m(eta_(non_terminal|predicate)|od(e|ule)|ultifile)|reexport|s(et_(logtalk|prolog)_flag|ynchronized)|o(bject|p)|use(s|_module))/],\n[\"kwd\",/^\\s*:-\\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],[\"typ\",/^[A-Z_][a-zA-Z0-9_]*/],[\"pun\",/^[.,;{}:^<>=\\\\/+*?#!-]/]]),[\"logtalk\",\"lgt\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-lisp.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-ll.js",
    "content": "/*\n\n Copyright (C) 2013 Nikhil Dabas\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^!?\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"com\",/^;[^\\r\\n]*/,null,\";\"]],[[\"pln\",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\\d+)/],[\"kwd\",/^[A-Za-z_][0-9A-Za-z_]*/,null],[\"lit\",/^\\d+\\.\\d+/],[\"lit\",/^(?:\\d+|0[xX][a-fA-F0-9]+)/],[\"pun\",/^[()\\[\\]{},=*<>:]|\\.\\.\\.$/]]),[\"llvm\",\"ll\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-llvm.js",
    "content": "/*\n\n Copyright (C) 2013 Nikhil Dabas\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^!?\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"com\",/^;[^\\r\\n]*/,null,\";\"]],[[\"pln\",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\\d+)/],[\"kwd\",/^[A-Za-z_][0-9A-Za-z_]*/,null],[\"lit\",/^\\d+\\.\\d+/],[\"lit\",/^(?:\\d+|0[xX][a-fA-F0-9]+)/],[\"pun\",/^[()\\[\\]{},=*<>:]|\\.\\.\\.$/]]),[\"llvm\",\"ll\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-logtalk.js",
    "content": "/*\n\n Copyright (C) 2014 Paulo Moura\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^\\\"(?:[^\\\"\\\\\\n\\x0C\\r]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"lit\",/^[a-z][a-zA-Z0-9_]*/],[\"lit\",/^\\'(?:[^\\'\\\\\\n\\x0C\\r]|\\\\[^&])+\\'?/,null,\"'\"],[\"lit\",/^(?:0'.|0b[0-1]+|0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+\\-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^%[^\\r\\n]*/,null,\"%\"],[\"com\",/^\\/\\*[\\s\\S]*?\\*\\//],[\"kwd\",/^\\s*:-\\s(c(a(lls|tegory)|oinductive)|p(ublic|r(ot(ocol|ected)|ivate))|e(l(if|se)|n(coding|sure_loaded)|xport)|i(f|n(clude|itialization|fo))|alias|d(ynamic|iscontiguous)|m(eta_(non_terminal|predicate)|od(e|ule)|ultifile)|reexport|s(et_(logtalk|prolog)_flag|ynchronized)|o(bject|p)|use(s|_module))/],\n[\"kwd\",/^\\s*:-\\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],[\"typ\",/^[A-Z_][a-zA-Z0-9_]*/],[\"pun\",/^[.,;{}:^<>=\\\\/+*?#!-]/]]),[\"logtalk\",\"lgt\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-ls.js",
    "content": "/*\n\n Copyright (C) 2013 Eric Knibbe\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$)/,null,\"'\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\`[^\\`]*(?:\\`|$)/,null,\"`\"],[\"lit\",/^0x[\\da-f]+|\\d+/i,null,\"0123456789\"],[\"atn\",/^#\\d+|[#$][a-z_][\\w.]*|#![ \\S]+lasso9\\b/i,null,\"#$\"]],[[\"tag\",/^[[\\]]|<\\?(?:lasso(?:script)?|=)|\\?>|noprocess\\b|no_square_brackets\\b/i],[\"com\",/^\\/\\/[^\\r\\n]*|\\/\\*[\\s\\S]*?\\*\\//],\n[\"atn\",/^-(?!infinity)[a-z_][\\w.]*|\\.\\s*'[a-z_][\\w.]*'/i],[\"lit\",/^\\d*\\.\\d+(?:e[-+]?\\d+)?|infinity\\b|NaN\\b/i],[\"atv\",/^::\\s*[a-z_][\\w.]*/i],[\"lit\",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\\b/i],[\"kwd\",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\\b/i],\n[\"typ\",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\\b|^\\.\\.?/i],[\"pln\",/^[a-z_][\\w.]*(?:=\\s*(?=\\())?/i],[\"pun\",/^:=|[-+*\\/%=<>&|!?\\\\]/]]),[\"lasso\",\"ls\",\"lassoscript\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-lsp.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-lua.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)|\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$))/,null,\"\\\"'\"]],[[\"com\",/^--(?:\\[(=*)\\[[\\s\\S]*?(?:\\]\\1\\]|$)|[^\\r\\n]*)/],[\"str\",/^\\[(=*)\\[[\\s\\S]*?(?:\\]\\1\\]|$)/],[\"kwd\",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,null],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+\\-]?\\d+)?))/i],\n[\"pln\",/^[a-z_]\\w*/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0][^\\w\\t\\n\\r \\xA0\\\"\\'\\-\\+=]*/]]),[\"lua\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-matlab.js",
    "content": "/*\n\n Copyright (c) 2013 by Amro <amroamroamro@gmail.com>\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nvar a=window.PR,b=[[a.PR_PLAIN,/^[ \\t\\r\\n\\v\\f\\xA0]+/,null,\" \\t\\r\\n\\x0B\\f\\u00a0\"],[a.PR_COMMENT,/^%\\{[^%]*%+(?:[^\\}%][^%]*%+)*\\}/,null],[a.PR_COMMENT,/^%[^\\r\\n]*/,null,\"%\"],[\"syscmd\",/^![^\\r\\n]*/,null,\"!\"]],c=[[\"linecont\",/^\\.\\.\\.\\s*[\\r\\n]/,null],[\"err\",/^\\?\\?\\? [^\\r\\n]*/,null],[\"wrn\",/^Warning: [^\\r\\n]*/,null],[\"codeoutput\",/^>>\\s+/,null],[\"codeoutput\",/^octave:\\d+>\\s+/,null],[\"lang-matlab-operators\",/^((?:[a-zA-Z][a-zA-Z0-9_]*(?:\\.[a-zA-Z][a-zA-Z0-9_]*)*|\\)|\\]|\\}|\\.)')/,null],[\"lang-matlab-identifiers\",\n/^([a-zA-Z][a-zA-Z0-9_]*(?:\\.[a-zA-Z][a-zA-Z0-9_]*)*)(?!')/,null],[a.PR_STRING,/^'(?:[^']|'')*'/,null],[a.PR_LITERAL,/^[+\\-]?\\.?\\d+(?:\\.\\d*)?(?:[Ee][+\\-]?\\d+)?[ij]?/,null],[a.PR_TAG,/^(?:\\{|\\}|\\(|\\)|\\[|\\])/,null],[a.PR_PUNCTUATION,/^(?:<|>|=|~|@|&|;|,|:|!|\\-|\\+|\\*|\\^|\\.|\\||\\\\|\\/)/,null]],d=[[\"lang-matlab-identifiers\",/^([a-zA-Z][a-zA-Z0-9_]*(?:\\.[a-zA-Z][a-zA-Z0-9_]*)*)/,null],[a.PR_TAG,/^(?:\\{|\\}|\\(|\\)|\\[|\\])/,null],[a.PR_PUNCTUATION,/^(?:<|>|=|~|@|&|;|,|:|!|\\-|\\+|\\*|\\^|\\.|\\||\\\\|\\/)/,null],[\"transpose\",\n/^'/,null]];\na.registerLangHandler(a.createSimpleLexer([],[[a.PR_KEYWORD,/^\\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\\b/,null],[\"const\",/^\\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\\b/,null],[a.PR_TYPE,/^\\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\\b/,null],[\"fun\",/^\\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\\b/,null],\n[\"fun_tbx\",/^\\b(?:addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest)\\b/,\nnull],[\"fun_tbx\",/^\\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\\b/,\nnull],[\"fun_tbx\",/^\\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\\b/,null],[\"ident\",/^[a-zA-Z][a-zA-Z0-9_]*(?:\\.[a-zA-Z][a-zA-Z0-9_]*)*/,null]]),[\"matlab-identifiers\"]);a.registerLangHandler(a.createSimpleLexer([],d),[\"matlab-operators\"]);a.registerLangHandler(a.createSimpleLexer(b,c),[\"matlab\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-ml.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^#(?:if[\\t\\n\\r \\xA0]+(?:[a-z_$][\\w\\']*|``[^\\r\\n\\t`]*(?:``|$))|else|endif|light)/i,null,\"#\"],[\"str\",/^(?:\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)|\\'(?:[^\\'\\\\]|\\\\[\\s\\S])(?:\\'|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\r\\n]*|\\(\\*[\\s\\S]*?\\*\\))/],[\"kwd\",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\\b/],\n[\"lit\",/^[+\\-]?(?:0x[\\da-f]+|(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+\\-]?\\d+)?))/i],[\"pln\",/^(?:[a-z_][\\w']*[!?#]?|``[^\\r\\n\\t`]*(?:``|$))/i],[\"pun\",/^[^\\t\\n\\r \\xA0\\\"\\'\\w]+/]]),[\"fs\",\"ml\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-mumps.js",
    "content": "/*\n\n Copyright (C) 2011 Kitware Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:[^\"]|\\\\.)*\")/,null,'\"']],[[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"dec\",/^(?:\\$(?:D|DEVICE|EC|ECODE|ES|ESTACK|ET|ETRAP|H|HOROLOG|I|IO|J|JOB|K|KEY|P|PRINCIPAL|Q|QUIT|ST|STACK|S|STORAGE|SY|SYSTEM|T|TEST|TL|TLEVEL|TR|TRESTART|X|Y|Z[A-Z]*|A|ASCII|C|CHAR|D|DATA|E|EXTRACT|F|FIND|FN|FNUMBER|G|GET|J|JUSTIFY|L|LENGTH|NA|NAME|O|ORDER|P|PIECE|QL|QLENGTH|QS|QSUBSCRIPT|Q|QUERY|R|RANDOM|RE|REVERSE|S|SELECT|ST|STACK|T|TEXT|TR|TRANSLATE|NaN))\\b/i,\nnull],[\"kwd\",/^(?:[^\\$]B|BREAK|C|CLOSE|D|DO|E|ELSE|F|FOR|G|GOTO|H|HALT|H|HANG|I|IF|J|JOB|K|KILL|L|LOCK|M|MERGE|N|NEW|O|OPEN|Q|QUIT|R|READ|S|SET|TC|TCOMMIT|TRE|TRESTART|TRO|TROLLBACK|TS|TSTART|U|USE|V|VIEW|W|WRITE|X|XECUTE)\\b/i,null],[\"lit\",/^[+-]?(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:E[+\\-]?\\d+)?)/i],[\"pln\",/^[a-z][a-zA-Z0-9]*/i],[\"pun\",/^[^\\w\\t\\n\\r\\xA0\\\"\\$;%\\^]|_/]]),[\"mumps\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-n.js",
    "content": "/*\n\n Copyright (C) 2011 Zimin A.V.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*\\'|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,null,'\"'],[\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,null,\"#\"],[\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]],[[\"str\",/^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/,null],[\"str\",/^<#(?:[^#>])*(?:#>|$)/,null],[\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,null],[\"com\",/^\\/\\/[^\\r\\n]*/,\nnull],[\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null],[\"kwd\",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\\b/,\nnull],[\"typ\",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\\b/,null],[\"lit\",/^@[a-z_$][a-z_$@0-9]*/i,null],[\"typ\",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],[\"pln\",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],[\"lit\",/^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*/i,null,\"0123456789\"],[\"pun\",/^.[^\\s\\w\\.$@\\'\\\"\\`\\/\\#]*/,null]]),[\"n\",\"nemerle\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-nemerle.js",
    "content": "/*\n\n Copyright (C) 2011 Zimin A.V.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*\\'|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,null,'\"'],[\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,null,\"#\"],[\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]],[[\"str\",/^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/,null],[\"str\",/^<#(?:[^#>])*(?:#>|$)/,null],[\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,null],[\"com\",/^\\/\\/[^\\r\\n]*/,\nnull],[\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null],[\"kwd\",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\\b/,\nnull],[\"typ\",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\\b/,null],[\"lit\",/^@[a-z_$][a-z_$@0-9]*/i,null],[\"typ\",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],[\"pln\",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],[\"lit\",/^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*/i,null,\"0123456789\"],[\"pun\",/^.[^\\s\\w\\.$@\\'\\\"\\`\\/\\#]*/,null]]),[\"n\",\"nemerle\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-pascal.js",
    "content": "/*\n\n Copyright (C) 2013 Peter Kofler\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$))/,null,\"'\"],[\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^\\(\\*[\\s\\S]*?(?:\\*\\)|$)|^\\{[\\s\\S]*?(?:\\}|$)/,null],[\"kwd\",/^(?:ABSOLUTE|AND|ARRAY|ASM|ASSEMBLER|BEGIN|CASE|CONST|CONSTRUCTOR|DESTRUCTOR|DIV|DO|DOWNTO|ELSE|END|EXTERNAL|FOR|FORWARD|FUNCTION|GOTO|IF|IMPLEMENTATION|IN|INLINE|INTERFACE|INTERRUPT|LABEL|MOD|NOT|OBJECT|OF|OR|PACKED|PROCEDURE|PROGRAM|RECORD|REPEAT|SET|SHL|SHR|THEN|TO|TYPE|UNIT|UNTIL|USES|VAR|VIRTUAL|WHILE|WITH|XOR)\\b/i,\nnull],[\"lit\",/^(?:true|false|self|nil)/i,null],[\"pln\",/^[a-z][a-z0-9]*/i,null],[\"lit\",/^(?:\\$[a-f0-9]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+\\-]?\\d+)?)/i,null,\"0123456789\"],[\"pun\",/^.[^\\s\\w\\.$@\\'\\/]*/,null]]),[\"pascal\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-proto.js",
    "content": "/*\n\n Copyright (C) 2006 Google Inc.\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*/\nPR.registerLangHandler(PR.sourceDecorator({keywords:\"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true\",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\\b/,cStyleComments:!0}),[\"proto\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-r.js",
    "content": "/*\n\n Copyright (C) 2012 Jeffrey B. Arnold\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$)/,null,\"'\"]],[[\"com\",/^#.*/],[\"kwd\",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],[\"lit\",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],[\"lit\",/^[+-]?([0-9]+(\\.[0-9]+)?|\\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],[\"lit\",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\\.\\.(?:\\.|[0-9]+))(?![A-Za-z0-9_.])/],\n[\"pun\",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\\|\\|?|\\*|\\+|\\^|\\/|!|%.*?%|=|~|\\$|@|:{1,3}|[\\[\\](){};,?])/],[\"pln\",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\\.[a-zA-Z_][0-9a-zA-Z\\._]*)(?![A-Za-z0-9_.])/],[\"str\",/^`.+`/]]),[\"r\",\"s\",\"R\",\"S\",\"Splus\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-rd.js",
    "content": "/*\n\n Copyright (C) 2012 Jeffrey Arnold\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\r\\n]*/,null,\"%\"]],[[\"lit\",/^\\\\(?:cr|l?dots|R|tab)\\b/],[\"kwd\",/^\\\\[a-zA-Z@]+/],[\"kwd\",/^#(?:ifn?def|endif)/],[\"pln\",/^\\\\[{}]/],[\"pun\",/^[{}()\\[\\]]+/]]),[\"Rd\",\"rd\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-rkt.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-rust.js",
    "content": "/*\n\n Copyright (C) 2015 Chris Morgan\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*/\nPR.registerLangHandler(PR.createSimpleLexer([],[[\"pln\",/^[\\t\\n\\r \\xA0]+/],[\"com\",/^\\/\\/.*/],[\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/],[\"str\",/^b\"(?:[^\\\\]|\\\\(?:.|x[\\da-fA-F]{2}))*?\"/],[\"str\",/^\"(?:[^\\\\]|\\\\(?:.|x[\\da-fA-F]{2}|u\\{\\[\\da-fA-F]{1,6}\\}))*?\"/],[\"str\",/^b?r(#*)\\\"[\\s\\S]*?\\\"\\1/],[\"str\",/^b'([^\\\\]|\\\\(.|x[\\da-fA-F]{2}))'/],[\"str\",/^'([^\\\\]|\\\\(.|x[\\da-fA-F]{2}|u\\{[\\da-fA-F]{1,6}\\}))'/],[\"tag\",/^'\\w+?\\b/],[\"kwd\",/^(?:match|if|else|as|break|box|continue|extern|fn|for|in|if|impl|let|loop|pub|return|super|unsafe|where|while|use|mod|trait|struct|enum|type|move|mut|ref|static|const|crate)\\b/],\n[\"kwd\",/^(?:alignof|become|do|offsetof|priv|pure|sizeof|typeof|unsized|yield|abstract|virtual|final|override|macro)\\b/],[\"typ\",/^(?:[iu](8|16|32|64|size)|char|bool|f32|f64|str|Self)\\b/],[\"typ\",/^(?:Copy|Send|Sized|Sync|Drop|Fn|FnMut|FnOnce|Box|ToOwned|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator|Option|Some|None|Result|Ok|Err|SliceConcatExt|String|ToString|Vec)\\b/],[\"lit\",/^(self|true|false|null)\\b/],\n[\"lit\",/^\\d[0-9_]*(?:[iu](?:size|8|16|32|64))?/],[\"lit\",/^0x[a-fA-F0-9_]+(?:[iu](?:size|8|16|32|64))?/],[\"lit\",/^0o[0-7_]+(?:[iu](?:size|8|16|32|64))?/],[\"lit\",/^0b[01_]+(?:[iu](?:size|8|16|32|64))?/],[\"lit\",/^\\d[0-9_]*\\.(?![^\\s\\d.])/],[\"lit\",/^\\d[0-9_]*(?:\\.\\d[0-9_]*)(?:[eE][+-]?[0-9_]+)?(?:f32|f64)?/],[\"lit\",/^\\d[0-9_]*(?:\\.\\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)(?:f32|f64)?/],[\"lit\",/^\\d[0-9_]*(?:\\.\\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)?(?:f32|f64)/],\n[\"atn\",/^[a-z_]\\w*!/i],[\"pln\",/^[a-z_]\\w*/i],[\"atv\",/^#!?\\[[\\s\\S]*?\\]/],[\"pun\",/^[+\\-/*=^&|!<>%[\\](){}?:.,;]/],[\"pln\",/./]]),[\"rust\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-s.js",
    "content": "/*\n\n Copyright (C) 2012 Jeffrey B. Arnold\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"'],[\"str\",/^\\'(?:[^\\'\\\\]|\\\\[\\s\\S])*(?:\\'|$)/,null,\"'\"]],[[\"com\",/^#.*/],[\"kwd\",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],[\"lit\",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],[\"lit\",/^[+-]?([0-9]+(\\.[0-9]+)?|\\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],[\"lit\",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\\.\\.(?:\\.|[0-9]+))(?![A-Za-z0-9_.])/],\n[\"pun\",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\\|\\|?|\\*|\\+|\\^|\\/|!|%.*?%|=|~|\\$|@|:{1,3}|[\\[\\](){};,?])/],[\"pln\",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\\.[a-zA-Z_][0-9a-zA-Z\\._]*)(?![A-Za-z0-9_.])/],[\"str\",/^`.+`/]]),[\"r\",\"s\",\"R\",\"S\",\"Splus\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-scala.js",
    "content": "/*\n\n Copyright (C) 2010 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:(?:\"\"(?:\"\"?(?!\")|[^\\\\\"]|\\\\.)*\"{0,3})|(?:[^\"\\r\\n\\\\]|\\\\.)*\"?))/,null,'\"'],[\"lit\",/^`(?:[^\\r\\n\\\\`]|\\\\.)*`?/,null,\"`\"],[\"pun\",/^[!#%&()*+,\\-:;<=>?@\\[\\\\\\]^{|}~]+/,null,\"!#%&()*+,-:;<=>?@[\\\\]^{|}~\"]],[[\"str\",/^'(?:[^\\r\\n\\\\']|\\\\(?:'|[^\\r\\n']+))'/],[\"lit\",/^'[a-zA-Z_$][\\w$]*(?!['$\\w])/],[\"kwd\",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\\b/],\n[\"lit\",/^(?:true|false|null|this)\\b/],[\"lit\",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\\.[0-9]+)?(?:E[+\\-]?[0-9]+)?F?|L?))|\\\\.[0-9]+(?:E[+\\-]?[0-9]+)?F?)/i],[\"typ\",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\\w$]*/],[\"pln\",/^[$a-zA-Z_][\\w$]*/],[\"com\",/^\\/(?:\\/.*|\\*(?:\\/|\\**[^*/])*(?:\\*+\\/?)?)/],[\"pun\",/^(?:\\.+|\\/)/]]),[\"scala\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-scm.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-sql.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:[^\\\"\\\\]|\\\\.)*\"|'(?:[^\\'\\\\]|\\\\.)*')/,null,\"\\\"'\"]],[[\"com\",/^(?:--[^\\r\\n]*|\\/\\*[\\s\\S]*?(?:\\*\\/|$))/],[\"kwd\",/^(?:ADD|ALL|ALTER|AND|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONNECT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOLLOWING|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MATCHED|MERGE|NATURAL|NATIONAL|NOCHECK|NONCLUSTERED|NOCYCLE|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PARTITION|PERCENT|PIVOT|PLAN|PRECEDING|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|ROWS?|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|START|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNBOUNDED|UNION|UNIQUE|UNPIVOT|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WITHIN|WRITETEXT|XML)(?=[^\\w-]|$)/i,\nnull],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+\\-]?\\d+)?))/i],[\"pln\",/^[a-z_][\\w-]*/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0\\\"\\'][^\\w\\t\\n\\r \\xA0+\\-\\\"\\']*/]]),[\"sql\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-ss.js",
    "content": "/*\n\n Copyright (C) 2008 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,null,\"(\"],[\"clo\",/^\\)+/,null,\")\"],[\"com\",/^;[^\\r\\n]*/,null,\";\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,\nnull],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),\"cl el lisp lsp scm ss rkt\".split(\" \"));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-swift.js",
    "content": "/*\n\n Copyright (C) 2015 Google Inc.\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 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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[ \\n\\r\\t\\v\\f\\0]+/,null,\" \\n\\r\\t\\v\\f\\x00\"],[\"str\",/^\"(?:[^\"\\\\]|(?:\\\\.)|(?:\\\\\\((?:[^\"\\\\)]|\\\\.)*\\)))*\"/,null,'\"']],[[\"lit\",/^(?:(?:0x[\\da-fA-F][\\da-fA-F_]*\\.[\\da-fA-F][\\da-fA-F_]*[pP]?)|(?:\\d[\\d_]*\\.\\d[\\d_]*[eE]?))[+-]?\\d[\\d_]*/,null],[\"lit\",/^-?(?:(?:0(?:(?:b[01][01_]*)|(?:o[0-7][0-7_]*)|(?:x[\\da-fA-F][\\da-fA-F_]*)))|(?:\\d[\\d_]*))/,null],[\"lit\",/^(?:true|false|nil)\\b/,null],[\"kwd\",/^\\b(?:__COLUMN__|__FILE__|__FUNCTION__|__LINE__|#available|#else|#elseif|#endif|#if|#line|arch|arm|arm64|associativity|as|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|dynamicType|else|enum|fallthrough|final|for|func|get|import|indirect|infix|init|inout|internal|i386|if|in|iOS|iOSApplicationExtension|is|lazy|left|let|mutating|none|nonmutating|operator|optional|OSX|OSXApplicationExtension|override|postfix|precedence|prefix|private|protocol|Protocol|public|required|rethrows|return|right|safe|self|set|static|struct|subscript|super|switch|throw|try|Type|typealias|unowned|unsafe|var|weak|watchOS|while|willSet|x86_64)\\b/,\nnull],[\"com\",/^\\/\\/.*?[\\n\\r]/,null],[\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null],[\"pun\",/^<<=|<=|<<|>>=|>=|>>|===|==|\\.\\.\\.|&&=|\\.\\.<|!==|!=|&=|~=|~|\\(|\\)|\\[|\\]|{|}|@|#|;|\\.|,|:|\\|\\|=|\\?\\?|\\|\\||&&|&\\*|&\\+|&-|&=|\\+=|-=|\\/=|\\*=|\\^=|%=|\\|=|->|`|==|\\+\\+|--|\\/|\\+|!|\\*|%|<|>|&|\\||\\^|\\?|=|-|_/,null],[\"typ\",/^\\b(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/,null]]),[\"swift\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-tcl.js",
    "content": "/*\n\n Copyright (C) 2012 Pyrios\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\{+/,null,\"{\"],[\"clo\",/^\\}+/,null,\"}\"],[\"com\",/^#[^\\r\\n]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)/,null,'\"']],[[\"kwd\",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\\b/,null],[\"lit\",/^[+\\-]?(?:[0#]x[0-9a-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[ed][+\\-]?\\d+)?)/i],\n[\"lit\",/^\\'(?:-*(?:\\w|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?)?/],[\"pln\",/^-*(?:[a-z_]|\\\\[\\x21-\\x7e])(?:[\\w-]*|\\\\[\\x21-\\x7e])[=!?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0()\\\"\\\\\\';]+/]]),[\"tcl\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-tex.js",
    "content": "/*\n\n Copyright (C) 2011 Martin S.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\r\\n]*/,null,\"%\"]],[[\"kwd\",/^\\\\[a-zA-Z@]+/],[\"kwd\",/^\\\\./],[\"typ\",/^[$&]/],[\"lit\",/[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[\"pun\",/^[{}()\\[\\]=]+/]]),[\"latex\",\"tex\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-vb.js",
    "content": "/*\n\n Copyright (C) 2009 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0\\u2028\\u2029]+/,null,\"\\t\\n\\r \\u00a0\\u2028\\u2029\"],[\"str\",/^(?:[\\\"\\u201C\\u201D](?:[^\\\"\\u201C\\u201D]|[\\\"\\u201C\\u201D]{2})(?:[\\\"\\u201C\\u201D]c|$)|[\\\"\\u201C\\u201D](?:[^\\\"\\u201C\\u201D]|[\\\"\\u201C\\u201D]{2})*(?:[\\\"\\u201C\\u201D]|$))/i,null,'\"\\u201c\\u201d'],[\"com\",/^[\\'\\u2018\\u2019](?:_(?:\\r\\n?|[^\\r]?)|[^\\r\\n_\\u2028\\u2029])*/,null,\"'\\u2018\\u2019\"]],[[\"kwd\",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\\b/i,\nnull],[\"com\",/^REM\\b[^\\r\\n\\u2028\\u2029]*/i],[\"lit\",/^(?:True\\b|False\\b|Nothing\\b|\\d+(?:E[+\\-]?\\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\\d*\\.\\d+(?:E[+\\-]?\\d+)?[FRD]?|#\\s+(?:\\d+[\\-\\/]\\d+[\\-\\/]\\d+(?:\\s+\\d+:\\d+(?::\\d+)?(\\s*(?:AM|PM))?)?|\\d+:\\d+(?::\\d+)?(\\s*(?:AM|PM))?)\\s+#)/i],[\"pln\",/^(?:(?:[a-z]|_\\w)\\w*(?:\\[[%&@!#]+\\])?|\\[(?:[a-z]|_\\w)\\w*\\])/i],[\"pun\",/^[^\\w\\t\\n\\r \\\"\\'\\[\\]\\xA0\\u2018\\u2019\\u201C\\u201D\\u2028\\u2029]+/],[\"pun\",/^(?:\\[|\\])/]]),[\"vb\",\n\"vbs\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-vbs.js",
    "content": "/*\n\n Copyright (C) 2009 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0\\u2028\\u2029]+/,null,\"\\t\\n\\r \\u00a0\\u2028\\u2029\"],[\"str\",/^(?:[\\\"\\u201C\\u201D](?:[^\\\"\\u201C\\u201D]|[\\\"\\u201C\\u201D]{2})(?:[\\\"\\u201C\\u201D]c|$)|[\\\"\\u201C\\u201D](?:[^\\\"\\u201C\\u201D]|[\\\"\\u201C\\u201D]{2})*(?:[\\\"\\u201C\\u201D]|$))/i,null,'\"\\u201c\\u201d'],[\"com\",/^[\\'\\u2018\\u2019](?:_(?:\\r\\n?|[^\\r]?)|[^\\r\\n_\\u2028\\u2029])*/,null,\"'\\u2018\\u2019\"]],[[\"kwd\",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\\b/i,\nnull],[\"com\",/^REM\\b[^\\r\\n\\u2028\\u2029]*/i],[\"lit\",/^(?:True\\b|False\\b|Nothing\\b|\\d+(?:E[+\\-]?\\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\\d*\\.\\d+(?:E[+\\-]?\\d+)?[FRD]?|#\\s+(?:\\d+[\\-\\/]\\d+[\\-\\/]\\d+(?:\\s+\\d+:\\d+(?::\\d+)?(\\s*(?:AM|PM))?)?|\\d+:\\d+(?::\\d+)?(\\s*(?:AM|PM))?)\\s+#)/i],[\"pln\",/^(?:(?:[a-z]|_\\w)\\w*(?:\\[[%&@!#]+\\])?|\\[(?:[a-z]|_\\w)\\w*\\])/i],[\"pun\",/^[^\\w\\t\\n\\r \\\"\\'\\[\\]\\xA0\\u2018\\u2019\\u201C\\u201D\\u2028\\u2029]+/],[\"pun\",/^(?:\\[|\\])/]]),[\"vb\",\n\"vbs\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-vhd.js",
    "content": "/*\n\n Copyright (C) 2010 benoit@ryder.fr\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"str\",/^(?:[BOX]?\"(?:[^\\\"]|\"\")*\"|'.')/i],[\"com\",/^--[^\\r\\n]*/],[\"kwd\",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\\w-]|$)/i,\nnull],[\"typ\",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\\w-]|$)/i,null],[\"typ\",/^\\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\\w-]|$)/i,null],[\"lit\",/^\\d+(?:_\\d+)*(?:#[\\w\\\\.]+#(?:[+\\-]?\\d+(?:_\\d+)*)?|(?:\\.\\d+(?:_\\d+)*)?(?:E[+\\-]?\\d+(?:_\\d+)*)?)/i],\n[\"pln\",/^(?:[a-z]\\w*|\\\\[^\\\\]*\\\\)/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0\\\"\\'][^\\w\\t\\n\\r \\xA0\\-\\\"\\']*/]]),[\"vhdl\",\"vhd\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-vhdl.js",
    "content": "/*\n\n Copyright (C) 2010 benoit@ryder.fr\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xA0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"str\",/^(?:[BOX]?\"(?:[^\\\"]|\"\")*\"|'.')/i],[\"com\",/^--[^\\r\\n]*/],[\"kwd\",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\\w-]|$)/i,\nnull],[\"typ\",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\\w-]|$)/i,null],[\"typ\",/^\\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\\w-]|$)/i,null],[\"lit\",/^\\d+(?:_\\d+)*(?:#[\\w\\\\.]+#(?:[+\\-]?\\d+(?:_\\d+)*)?|(?:\\.\\d+(?:_\\d+)*)?(?:E[+\\-]?\\d+(?:_\\d+)*)?)/i],\n[\"pln\",/^(?:[a-z]\\w*|\\\\[^\\\\]*\\\\)/i],[\"pun\",/^[^\\w\\t\\n\\r \\xA0\\\"\\'][^\\w\\t\\n\\r \\xA0\\-\\\"\\']*/]]),[\"vhdl\",\"vhd\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-wiki.js",
    "content": "/*\n\n Copyright (C) 2009 Google Inc.\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t \\xA0a-gi-z0-9]+/,null,\"\\t \\u00a0abcdefgijklmnopqrstuvwxyz0123456789\"],[\"pun\",/^[=*~\\^\\[\\]]+/,null,\"=*~^[]\"]],[[\"lang-wiki.meta\",/(?:^^|\\r\\n?|\\n)(#[a-z]+)\\b/],[\"lit\",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\\b/],[\"lang-\",/^\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/],[\"lang-\",/^`([^\\r\\n`]+)`/],[\"str\",/^https?:\\/\\/[^\\/?#\\s]*(?:\\/[^?#\\s]*)?(?:\\?[^#\\s]*)?(?:#\\S*)?/i],[\"pln\",/^(?:\\r\\n|[\\s\\S])[^#=*~^A-Zh\\{`\\[\\r\\n]*/]]),[\"wiki\"]);\nPR.registerLangHandler(PR.createSimpleLexer([[\"kwd\",/^#[a-z]+/i,null,\"#\"]],[]),[\"wiki.meta\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-xq.js",
    "content": "/*\n\n Copyright (C) 2011 Patrick Wied\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"var pln\",/^\\$[A-Za-z0-9_\\-]+/,null,\"$\"]],[[\"pln\",/^[\\s=][<>][\\s=]/],[\"lit\",/^\\@[\\w-]+/],[\"tag\",/^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],[\"com\",/^\\(:[\\s\\S]*?:\\)/],[\"pln\",/^[\\/\\{\\};,\\[\\]\\(\\)]$/],[\"str\",/^(?:\\\"(?:[^\\\"\\\\\\{]|\\\\[\\s\\S])*(?:\\\"|$)|\\'(?:[^\\'\\\\\\{]|\\\\[\\s\\S])*(?:\\'|$))/,null,\"\\\"'\"],[\"kwd\",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\\b/],\n[\"typ\",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\\b/,null],[\"fun pln\",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\\b/],\n[\"pln\",/^[A-Za-z0-9_\\-\\:]+/],[\"pln\",/^[\\t\\n\\r \\xA0]+/]]),[\"xq\",\"xquery\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-xquery.js",
    "content": "/*\n\n Copyright (C) 2011 Patrick Wied\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"var pln\",/^\\$[A-Za-z0-9_\\-]+/,null,\"$\"]],[[\"pln\",/^[\\s=][<>][\\s=]/],[\"lit\",/^\\@[\\w-]+/],[\"tag\",/^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],[\"com\",/^\\(:[\\s\\S]*?:\\)/],[\"pln\",/^[\\/\\{\\};,\\[\\]\\(\\)]$/],[\"str\",/^(?:\\\"(?:[^\\\"\\\\\\{]|\\\\[\\s\\S])*(?:\\\"|$)|\\'(?:[^\\'\\\\\\{]|\\\\[\\s\\S])*(?:\\'|$))/,null,\"\\\"'\"],[\"kwd\",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\\b/],\n[\"typ\",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\\b/,null],[\"fun pln\",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\\b/],\n[\"pln\",/^[A-Za-z0-9_\\-\\:]+/],[\"pln\",/^[\\t\\n\\r \\xA0]+/]]),[\"xq\",\"xquery\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-yaml.js",
    "content": "/*\n\n Copyright (C) 2015 ribrdb @ code.google.com\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pun\",/^[:|>?]+/,null,\":|>?\"],[\"dec\",/^%(?:YAML|TAG)[^#\\r\\n]+/,null,\"%\"],[\"typ\",/^[&]\\S+/,null,\"&\"],[\"typ\",/^!\\S*/,null,\"!\"],[\"str\",/^\"(?:[^\\\\\"]|\\\\.)*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^']|'')*(?:'|$)/,null,\"'\"],[\"com\",/^#[^\\r\\n]*/,null,\"#\"],[\"pln\",/^\\s+/,null,\" \\t\\r\\n\"]],[[\"dec\",/^(?:---|\\.\\.\\.)(?:[\\r\\n]|$)/],[\"pun\",/^-/],[\"kwd\",/^[\\w-]+:[ \\r\\n]/],[\"pln\",\n/^\\w+/]]),[\"yaml\",\"yml\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/lang-yml.js",
    "content": "/*\n\n Copyright (C) 2015 ribrdb @ code.google.com\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*/\nPR.registerLangHandler(PR.createSimpleLexer([[\"pun\",/^[:|>?]+/,null,\":|>?\"],[\"dec\",/^%(?:YAML|TAG)[^#\\r\\n]+/,null,\"%\"],[\"typ\",/^[&]\\S+/,null,\"&\"],[\"typ\",/^!\\S*/,null,\"!\"],[\"str\",/^\"(?:[^\\\\\"]|\\\\.)*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^']|'')*(?:'|$)/,null,\"'\"],[\"com\",/^#[^\\r\\n]*/,null,\"#\"],[\"pln\",/^\\s+/,null,\" \\t\\r\\n\"]],[[\"dec\",/^(?:---|\\.\\.\\.)(?:[\\r\\n]|$)/],[\"pun\",/^-/],[\"kwd\",/^[\\w-]+:[ \\r\\n]/],[\"pln\",\n/^\\w+/]]),[\"yaml\",\"yml\"]);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/prettify.css",
    "content": ".pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/prettify.js",
    "content": "!function(){/*\n\n Copyright (C) 2006 Google Inc.\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*/\nwindow.PR_SHOULD_USE_CONTINUATION=!0;\n(function(){function T(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=w[a])?b:\"0\"<=a&&\"7\">=a?parseInt(e.substring(1),8):\"u\"===a||\"x\"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?\"\\\\x0\":\"\\\\x\")+e.toString(16);e=String.fromCharCode(e);return\"\\\\\"===e||\"-\"===e||\"]\"===e||\"^\"===e?\"\\\\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]/g);e=\n[];var a=\"^\"===b[0],c=[\"[\"];a&&c.push(\"^\");for(var a=a?1:0,g=b.length;a<g;++a){var h=b[a];if(/\\\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),k;a+2<g&&\"-\"===b[a+1]?(k=d(b[a+2]),a+=2):k=h;e.push([h,k]);65>k||122<h||(65>k||90<h||e.push([Math.max(65,h)|32,Math.min(k,90)|32]),97>k||122<h||e.push([Math.max(97,h)&-33,Math.min(k,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];g=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=g[1]+1?g[1]=Math.max(g[1],h[1]):b.push(g=h);for(a=0;a<b.length;++a)h=b[a],\nc.push(f(h[0])),h[1]>h[0]&&(h[1]+1>h[0]&&c.push(\"-\"),c.push(f(h[1])));c.push(\"]\");return c.join(\"\")}function v(e){for(var a=e.source.match(/(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)/g),c=a.length,d=[],g=0,h=0;g<c;++g){var k=a[g];\"(\"===k?++h:\"\\\\\"===k.charAt(0)&&(k=+k.substring(1))&&(k<=h?d[k]=-1:a[g]=f(k))}for(g=1;g<d.length;++g)-1===d[g]&&(d[g]=++A);for(h=g=0;g<c;++g)k=a[g],\"(\"===k?(++h,d[h]||(a[g]=\"(?:\")):\"\\\\\"===\nk.charAt(0)&&(k=+k.substring(1))&&k<=h&&(a[g]=\"\\\\\"+d[k]);for(g=0;g<c;++g)\"^\"===a[g]&&\"^\"!==a[g+1]&&(a[g]=\"\");if(e.ignoreCase&&n)for(g=0;g<c;++g)k=a[g],e=k.charAt(0),2<=k.length&&\"[\"===e?a[g]=b(k):\"\\\\\"!==e&&(a[g]=k.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return a.join(\"\")}for(var A=0,n=!1,l=!1,m=0,c=a.length;m<c;++m){var p=a[m];if(p.ignoreCase)l=!0;else if(/[a-z]/i.test(p.source.replace(/\\\\u[0-9a-f]{4}|\\\\x[0-9a-f]{2}|\\\\[^ux]/gi,\"\"))){n=!0;\nl=!1;break}}for(var w={b:8,t:9,n:10,v:11,f:12,r:13},r=[],m=0,c=a.length;m<c;++m){p=a[m];if(p.global||p.multiline)throw Error(\"\"+p);r.push(\"(?:\"+v(p)+\")\")}return new RegExp(r.join(\"|\"),l?\"gi\":\"g\")}function U(a,d){function f(a){var c=a.nodeType;if(1==c){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)f(c);c=a.nodeName.toLowerCase();if(\"br\"===c||\"li\"===c)v[l]=\"\\n\",n[l<<1]=A++,n[l++<<1|1]=a}}else if(3==c||4==c)c=a.nodeValue,c.length&&(c=d?c.replace(/\\r\\n?/g,\"\\n\"):c.replace(/[ \\t\\r\\n]+/g,\n\" \"),v[l]=c,n[l<<1]=A,A+=c.length,n[l++<<1|1]=a)}var b=/(?:^|\\s)nocode(?:\\s|$)/,v=[],A=0,n=[],l=0;f(a);return{a:v.join(\"\").replace(/\\n$/,\"\"),c:n}}function J(a,d,f,b,v){f&&(a={h:a,l:1,j:null,m:null,a:f,c:null,i:d,g:null},b(a),v.push.apply(v,a.g))}function V(a){for(var d=void 0,f=a.firstChild;f;f=f.nextSibling)var b=f.nodeType,d=1===b?d?a:f:3===b?W.test(f.nodeValue)?a:d:d;return d===a?void 0:d}function G(a,d){function f(a){for(var l=a.i,m=a.h,c=[l,\"pln\"],p=0,w=a.a.match(v)||[],r={},e=0,t=w.length;e<\nt;++e){var z=w[e],q=r[z],g=void 0,h;if(\"string\"===typeof q)h=!1;else{var k=b[z.charAt(0)];if(k)g=z.match(k[1]),q=k[0];else{for(h=0;h<A;++h)if(k=d[h],g=z.match(k[1])){q=k[0];break}g||(q=\"pln\")}!(h=5<=q.length&&\"lang-\"===q.substring(0,5))||g&&\"string\"===typeof g[1]||(h=!1,q=\"src\");h||(r[z]=q)}k=p;p+=z.length;if(h){h=g[1];var B=z.indexOf(h),D=B+h.length;g[2]&&(D=z.length-g[2].length,B=D-h.length);q=q.substring(5);J(m,l+k,z.substring(0,B),f,c);J(m,l+k+B,h,K(q,h),c);J(m,l+k+D,z.substring(D),f,c)}else c.push(l+\nk,q)}a.g=c}var b={},v;(function(){for(var f=a.concat(d),l=[],m={},c=0,p=f.length;c<p;++c){var w=f[c],r=w[3];if(r)for(var e=r.length;0<=--e;)b[r.charAt(e)]=w;w=w[1];r=\"\"+w;m.hasOwnProperty(r)||(l.push(w),m[r]=null)}l.push(/[\\0-\\uffff]/);v=T(l)})();var A=d.length;return f}function y(a){var d=[],f=[];a.tripleQuotedStrings?d.push([\"str\",/^(?:\\'\\'\\'(?:[^\\'\\\\]|\\\\[\\s\\S]|\\'{1,2}(?=[^\\']))*(?:\\'\\'\\'|$)|\\\"\\\"\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S]|\\\"{1,2}(?=[^\\\"]))*(?:\\\"\\\"\\\"|$)|\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$))/,\nnull,\"'\\\"\"]):a.multiLineStrings?d.push([\"str\",/^(?:\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$)|\\`(?:[^\\\\\\`]|\\\\[\\s\\S])*(?:\\`|$))/,null,\"'\\\"`\"]):d.push([\"str\",/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$)|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,null,\"\\\"'\"]);a.verbatimStrings&&f.push([\"str\",/^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/,null]);var b=a.hashComments;b&&(a.cStyleComments?(1<b?d.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,\"#\"]):d.push([\"com\",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,\nnull,\"#\"]),f.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h(?:h|pp|\\+\\+)?|[a-z]\\w*)>/,null])):d.push([\"com\",/^#[^\\r\\n]*/,null,\"#\"]));a.cStyleComments&&(f.push([\"com\",/^\\/\\/[^\\r\\n]*/,null]),f.push([\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null]));if(b=a.regexLiterals){var v=(b=1<b?\"\":\"\\n\\r\")?\".\":\"[\\\\S\\\\s]\";f.push([\"lang-regex\",RegExp(\"^(?:^^\\\\.?|[+-]|[!=]=?=?|\\\\#|%=?|&&?=?|\\\\(|\\\\*=?|[+\\\\-]=|->|\\\\/=?|::?|<<?=?|>>?>?=?|,|;|\\\\?|@|\\\\[|~|{|\\\\^\\\\^?=?|\\\\|\\\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*(\"+\n(\"/(?=[^/*\"+b+\"])(?:[^/\\\\x5B\\\\x5C\"+b+\"]|\\\\x5C\"+v+\"|\\\\x5B(?:[^\\\\x5C\\\\x5D\"+b+\"]|\\\\x5C\"+v+\")*(?:\\\\x5D|$))+/\")+\")\")])}(b=a.types)&&f.push([\"typ\",b]);b=(\"\"+a.keywords).replace(/^ | $/g,\"\");b.length&&f.push([\"kwd\",new RegExp(\"^(?:\"+b.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),null]);d.push([\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]);b=\"^.[^\\\\s\\\\w.$@'\\\"`/\\\\\\\\]*\";a.regexLiterals&&(b+=\"(?!s*/)\");f.push([\"lit\",/^@[a-z_$][a-z_$@0-9]*/i,null],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/,null],[\"pln\",/^[a-z_$][a-z_$@0-9]*/i,\nnull],[\"lit\",/^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*/i,null,\"0123456789\"],[\"pln\",/^\\\\[\\s\\S]?/,null],[\"pun\",new RegExp(b),null]);return G(d,f)}function L(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!A.test(a.className))if(\"br\"===a.nodeName)v(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,q=d.match(n);q&&(c=d.substring(0,q.index),a.nodeValue=c,(d=d.substring(q.index+q[0].length))&&\na.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),v(a),c||a.parentNode.removeChild(a))}}function v(a){function b(a,c){var d=c?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=b(k,1),e=a.nextSibling;k.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,k.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var A=/(?:^|\\s)nocode(?:\\s|$)/,n=/\\r\\n?|\\n/,l=a.ownerDocument,m=l.createElement(\"li\");a.firstChild;)m.appendChild(a.firstChild);\nfor(var c=[m],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute(\"value\",d);var w=l.createElement(\"ol\");w.className=\"linenums\";d=Math.max(0,d-1|0)||0;for(var p=0,r=c.length;p<r;++p)m=c[p],m.className=\"L\"+(p+d)%10,m.firstChild||m.appendChild(l.createTextNode(\"\\u00a0\")),w.appendChild(m);a.appendChild(w)}function t(a,d){for(var f=d.length;0<=--f;){var b=d[f];I.hasOwnProperty(b)?E.console&&console.warn(\"cannot override language handler %s\",b):I[b]=a}}function K(a,d){a&&I.hasOwnProperty(a)||(a=/^\\s*</.test(d)?\n\"default-markup\":\"default-code\");return I[a]}function M(a){var d=a.j;try{var f=U(a.h,a.l),b=f.a;a.a=b;a.c=f.c;a.i=0;K(d,b)(a);var v=/\\bMSIE\\s(\\d+)/.exec(navigator.userAgent),v=v&&8>=+v[1],d=/\\n/g,A=a.a,n=A.length,f=0,l=a.c,m=l.length,b=0,c=a.g,p=c.length,w=0;c[p]=n;var r,e;for(e=r=0;e<p;)c[e]!==c[e+2]?(c[r++]=c[e++],c[r++]=c[e++]):e+=2;p=r;for(e=r=0;e<p;){for(var t=c[e],z=c[e+1],q=e+2;q+2<=p&&c[q+1]===z;)q+=2;c[r++]=t;c[r++]=z;e=q}c.length=r;var g=a.h;a=\"\";g&&(a=g.style.display,g.style.display=\"none\");\ntry{for(;b<m;){var h=l[b+2]||n,k=c[w+2]||n,q=Math.min(h,k),B=l[b+1],D;if(1!==B.nodeType&&(D=A.substring(f,q))){v&&(D=D.replace(d,\"\\r\"));B.nodeValue=D;var N=B.ownerDocument,u=N.createElement(\"span\");u.className=c[w+1];var y=B.parentNode;y.replaceChild(u,B);u.appendChild(B);f<h&&(l[b+1]=B=N.createTextNode(A.substring(q,h)),y.insertBefore(B,u.nextSibling))}f=q;f>=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=[\"break,continue,do,else,for,if,return,while\"],\nF=[[C,\"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],H=[F,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],\nO=[F,\"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient\"],P=[F,\"abstract,as,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where\"],F=[F,\"debugger,eval,export,function,get,instanceof,null,set,undefined,var,with,Infinity,NaN\"],\nQ=[C,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],R=[C,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],C=[C,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],S=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)\\b/,\nW=/\\S/,X=y({keywords:[H,P,O,F,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,[\"default-code\"]);t(G([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\s\\S]*?(?:-\\->|$)/],[\"lang-\",/^<\\?([\\s\\S]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\s\\S]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",\n/^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),\"default-markup htm html mxml xhtml xml xsl\".split(\" \"));t(G([[\"pln\",/^[\\s]+/,null,\" \\t\\r\\n\"],[\"atv\",/^(?:\\\"[^\\\"]*\\\"?|\\'[^\\']*\\'?)/,null,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^>\\'\\\"\\s]*(?:[^>\\'\\\"\\s\\/]|\\/(?=\\s)))/],\n[\"pun\",/^[=<>\\/]+/],[\"lang-js\",/^on\\w+\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\\"\\'>\\s]+)/i],[\"lang-css\",/^style\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-css\",/^style\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-css\",/^style\\s*=\\s*([^\\\"\\'>\\s]+)/i]]),[\"in.tag\"]);t(G([],[[\"atv\",/^[\\s\\S]+/]]),[\"uq.val\"]);t(y({keywords:H,hashComments:!0,cStyleComments:!0,types:S}),\"c cc cpp cxx cyc m\".split(\" \"));t(y({keywords:\"null,true,false\"}),[\"json\"]);t(y({keywords:P,hashComments:!0,cStyleComments:!0,\nverbatimStrings:!0,types:S}),[\"cs\"]);t(y({keywords:O,cStyleComments:!0}),[\"java\"]);t(y({keywords:C,hashComments:!0,multiLineStrings:!0}),[\"bash\",\"bsh\",\"csh\",\"sh\"]);t(y({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),[\"cv\",\"py\",\"python\"]);t(y({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),\n[\"perl\",\"pl\",\"pm\"]);t(y({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\",\"ruby\"]);t(y({keywords:F,cStyleComments:!0,regexLiterals:!0}),[\"javascript\",\"js\"]);t(y({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes\",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),[\"coffee\"]);t(G([],[[\"str\",/^[\\s\\S]+/]]),[\"regex\"]);\nvar Y=E.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:y,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",PR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\",prettyPrintOne:E.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var b=document.createElement(\"div\");b.innerHTML=\"<pre>\"+a+\"</pre>\";b=b.firstChild;f&&L(b,f,!0);M({j:d,m:f,h:b,l:1,a:null,i:null,c:null,\ng:null});return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function f(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<t.length&&c.now()<b;p++){for(var d=t[p],l=g,m=d;m=m.previousSibling;){var n=m.nodeType,u=(7===n||8===n)&&m.nodeValue;if(u?!/^\\??prettify\\b/.test(u):3!==n||/\\S/.test(m.nodeValue))break;if(u){l={};u.replace(/\\b(\\w+)=([\\w:.%+-]+)/g,function(a,b,c){l[b]=c});break}}m=d.className;if((l!==g||r.test(m))&&!e.test(m)){n=!1;for(u=d.parentNode;u;u=u.parentNode)if(q.test(u.tagName)&&\nu.className&&r.test(u.className)){n=!0;break}if(!n){d.className+=\" prettyprinted\";n=l.lang;if(!n){var n=m.match(w),C;!n&&(C=V(d))&&z.test(C.tagName)&&(n=C.className.match(w));n&&(n=n[1])}if(y.test(d.tagName))u=1;else var u=d.currentStyle,x=v.defaultView,u=(u=u?u.whiteSpace:x&&x.getComputedStyle?x.getComputedStyle(d,null).getPropertyValue(\"white-space\"):0)&&\"pre\"===u.substring(0,3);x=l.linenums;(x=\"true\"===x||+x)||(x=(x=m.match(/\\blinenums\\b(?::(\\d+))?/))?x[1]&&x[1].length?+x[1]:!0:!1);x&&L(d,x,u);\nM({j:n,h:d,m:x,l:u,a:null,i:null,c:null,g:null})}}}p<t.length?E.setTimeout(f,250):\"function\"===typeof a&&a()}for(var b=d||document.body,v=b.ownerDocument||document,b=[b.getElementsByTagName(\"pre\"),b.getElementsByTagName(\"code\"),b.getElementsByTagName(\"xmp\")],t=[],n=0;n<b.length;++n)for(var l=0,m=b[n].length;l<m;++l)t.push(b[n][l]);var b=null,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,w=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/,r=/\\bprettyprint\\b/,e=/\\bprettyprinted\\b/,y=/pre|xmp/i,z=/^code$/i,\nq=/^(?:pre|code|xmp)$/i,g={};f()}},H=E.define;\"function\"===typeof H&&H.amd&&H(\"google-code-prettify\",[],function(){return Y})})();}()\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify/run_prettify.js",
    "content": "!function(){/*\n\n Copyright (C) 2013 Google Inc.\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 Copyright (C) 2006 Google Inc.\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(function(){function ba(g){function k(){try{M.doScroll(\"left\")}catch(g){t.setTimeout(k,50);return}z(\"poll\")}function z(k){if(\"readystatechange\"!=k.type||\"complete\"==A.readyState)(\"load\"==k.type?t:A)[B](p+k.type,z,!1),!q&&(q=!0)&&g.call(t,k.type||k)}var Y=A.addEventListener,q=!1,C=!0,x=Y?\"addEventListener\":\"attachEvent\",B=Y?\"removeEventListener\":\"detachEvent\",p=Y?\"\":\"on\";if(\"complete\"==A.readyState)g.call(t,\"lazy\");else{if(A.createEventObject&&M.doScroll){try{C=!t.frameElement}catch(da){}C&&k()}A[x](p+\n\"DOMContentLoaded\",z,!1);A[x](p+\"readystatechange\",z,!1);t[x](p+\"load\",z,!1)}}function U(){V&&ba(function(){var g=N.length;ca(g?function(){for(var k=0;k<g;++k)(function(g){t.setTimeout(function(){t.exports[N[g]].apply(t,arguments)},0)})(k)}:void 0)})}for(var t=window,A=document,M=A.documentElement,O=A.head||A.getElementsByTagName(\"head\")[0]||M,B=\"\",F=A.getElementsByTagName(\"script\"),q=F.length;0<=--q;){var P=F[q],Z=P.src.match(/^[^?#]*\\/run_prettify\\.js(\\?[^#]*)?(?:#.*)?$/);if(Z){B=Z[1]||\"\";P.parentNode.removeChild(P);\nbreak}}var V=!0,H=[],Q=[],N=[];B.replace(/[?&]([^&=]+)=([^&]+)/g,function(g,k,z){z=decodeURIComponent(z);k=decodeURIComponent(k);\"autorun\"==k?V=!/^[0fn]/i.test(z):\"lang\"==k?H.push(z):\"skin\"==k?Q.push(z):\"callback\"==k&&N.push(z)});q=0;for(B=H.length;q<B;++q)(function(){var g=A.createElement(\"script\");g.onload=g.onerror=g.onreadystatechange=function(){!g||g.readyState&&!/loaded|complete/.test(g.readyState)||(g.onerror=g.onload=g.onreadystatechange=null,--T,T||t.setTimeout(U,0),g.parentNode&&g.parentNode.removeChild(g),\ng=null)};g.type=\"text/javascript\";g.src=\"https://cdn.rawgit.com/google/code-prettify/master/loader/lang-\"+encodeURIComponent(H[q])+\".js\";O.insertBefore(g,O.firstChild)})(H[q]);for(var T=H.length,F=[],q=0,B=Q.length;q<B;++q)F.push(\"https://cdn.rawgit.com/google/code-prettify/master/loader/skins/\"+encodeURIComponent(Q[q])+\".css\");F.push(\"https://cdn.rawgit.com/google/code-prettify/master/loader/prettify.css\");(function(g){function k(q){if(q!==z){var t=A.createElement(\"link\");t.rel=\"stylesheet\";t.type=\n\"text/css\";q+1<z&&(t.error=t.onerror=function(){k(q+1)});t.href=g[q];O.appendChild(t)}}var z=g.length;k(0)})(F);var ca=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var g;(function(){function k(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=W[a])?b:\"0\"<=a&&\"7\">=a?parseInt(e.substring(1),8):\"u\"===a||\"x\"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?\"\\\\x0\":\"\\\\x\")+e.toString(16);e=String.fromCharCode(e);return\"\\\\\"===e||\"-\"===\ne||\"]\"===e||\"^\"===e?\"\\\\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]/g);e=[];var a=\"^\"===b[0],c=[\"[\"];a&&c.push(\"^\");for(var a=a?1:0,h=b.length;a<h;++a){var l=b[a];if(/\\\\[bdsw]/i.test(l))c.push(l);else{var l=d(l),n;a+2<h&&\"-\"===b[a+1]?(n=d(b[a+2]),a+=2):n=l;e.push([l,n]);65>n||122<l||(65>n||90<l||e.push([Math.max(65,l)|32,Math.min(n,90)|32]),97>n||122<l||e.push([Math.max(97,l)&-33,Math.min(n,122)&-33]))}}e.sort(function(e,\na){return e[0]-a[0]||a[1]-e[1]});b=[];h=[];for(a=0;a<e.length;++a)l=e[a],l[0]<=h[1]+1?h[1]=Math.max(h[1],l[1]):b.push(h=l);for(a=0;a<b.length;++a)l=b[a],c.push(f(l[0])),l[1]>l[0]&&(l[1]+1>l[0]&&c.push(\"-\"),c.push(f(l[1])));c.push(\"]\");return c.join(\"\")}function g(e){for(var a=e.source.match(/(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)/g),c=a.length,d=[],h=0,l=0;h<c;++h){var n=a[h];\"(\"===n?++l:\"\\\\\"===n.charAt(0)&&(n=\n+n.substring(1))&&(n<=l?d[n]=-1:a[h]=f(n))}for(h=1;h<d.length;++h)-1===d[h]&&(d[h]=++k);for(l=h=0;h<c;++h)n=a[h],\"(\"===n?(++l,d[l]||(a[h]=\"(?:\")):\"\\\\\"===n.charAt(0)&&(n=+n.substring(1))&&n<=l&&(a[h]=\"\\\\\"+d[n]);for(h=0;h<c;++h)\"^\"===a[h]&&\"^\"!==a[h+1]&&(a[h]=\"\");if(e.ignoreCase&&I)for(h=0;h<c;++h)n=a[h],e=n.charAt(0),2<=n.length&&\"[\"===e?a[h]=b(n):\"\\\\\"!==e&&(a[h]=n.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return a.join(\"\")}for(var k=0,I=!1,\nm=!1,J=0,c=a.length;J<c;++J){var r=a[J];if(r.ignoreCase)m=!0;else if(/[a-z]/i.test(r.source.replace(/\\\\u[0-9a-f]{4}|\\\\x[0-9a-f]{2}|\\\\[^ux]/gi,\"\"))){I=!0;m=!1;break}}for(var W={b:8,t:9,n:10,v:11,f:12,r:13},u=[],J=0,c=a.length;J<c;++J){r=a[J];if(r.global||r.multiline)throw Error(\"\"+r);u.push(\"(?:\"+g(r)+\")\")}return new RegExp(u.join(\"|\"),m?\"gi\":\"g\")}function q(a,d){function f(a){var c=a.nodeType;if(1==c){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)f(c);c=a.nodeName.toLowerCase();if(\"br\"===\nc||\"li\"===c)g[m]=\"\\n\",I[m<<1]=k++,I[m++<<1|1]=a}}else if(3==c||4==c)c=a.nodeValue,c.length&&(c=d?c.replace(/\\r\\n?/g,\"\\n\"):c.replace(/[ \\t\\r\\n]+/g,\" \"),g[m]=c,I[m<<1]=k,k+=c.length,I[m++<<1|1]=a)}var b=/(?:^|\\s)nocode(?:\\s|$)/,g=[],k=0,I=[],m=0;f(a);return{a:g.join(\"\").replace(/\\n$/,\"\"),c:I}}function t(a,d,f,b,g){f&&(a={h:a,l:1,j:null,m:null,a:f,c:null,i:d,g:null},b(a),g.push.apply(g,a.g))}function A(a){for(var d=void 0,f=a.firstChild;f;f=f.nextSibling)var b=f.nodeType,d=1===b?d?a:f:3===b?T.test(f.nodeValue)?\na:d:d;return d===a?void 0:d}function C(a,d){function f(a){for(var m=a.i,k=a.h,c=[m,\"pln\"],r=0,W=a.a.match(g)||[],u={},e=0,q=W.length;e<q;++e){var D=W[e],w=u[D],h=void 0,l;if(\"string\"===typeof w)l=!1;else{var n=b[D.charAt(0)];if(n)h=D.match(n[1]),w=n[0];else{for(l=0;l<p;++l)if(n=d[l],h=D.match(n[1])){w=n[0];break}h||(w=\"pln\")}!(l=5<=w.length&&\"lang-\"===w.substring(0,5))||h&&\"string\"===typeof h[1]||(l=!1,w=\"src\");l||(u[D]=w)}n=r;r+=D.length;if(l){l=h[1];var E=D.indexOf(l),G=E+l.length;h[2]&&(G=D.length-\nh[2].length,E=G-l.length);w=w.substring(5);t(k,m+n,D.substring(0,E),f,c);t(k,m+n+E,l,F(w,l),c);t(k,m+n+G,D.substring(G),f,c)}else c.push(m+n,w)}a.g=c}var b={},g;(function(){for(var f=a.concat(d),m=[],p={},c=0,r=f.length;c<r;++c){var q=f[c],u=q[3];if(u)for(var e=u.length;0<=--e;)b[u.charAt(e)]=q;q=q[1];u=\"\"+q;p.hasOwnProperty(u)||(m.push(q),p[u]=null)}m.push(/[\\0-\\uffff]/);g=k(m)})();var p=d.length;return f}function x(a){var d=[],f=[];a.tripleQuotedStrings?d.push([\"str\",/^(?:\\'\\'\\'(?:[^\\'\\\\]|\\\\[\\s\\S]|\\'{1,2}(?=[^\\']))*(?:\\'\\'\\'|$)|\\\"\\\"\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S]|\\\"{1,2}(?=[^\\\"]))*(?:\\\"\\\"\\\"|$)|\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$))/,\nnull,\"'\\\"\"]):a.multiLineStrings?d.push([\"str\",/^(?:\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$)|\\`(?:[^\\\\\\`]|\\\\[\\s\\S])*(?:\\`|$))/,null,\"'\\\"`\"]):d.push([\"str\",/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$)|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,null,\"\\\"'\"]);a.verbatimStrings&&f.push([\"str\",/^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/,null]);var b=a.hashComments;b&&(a.cStyleComments?(1<b?d.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,\"#\"]):d.push([\"com\",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,\nnull,\"#\"]),f.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h(?:h|pp|\\+\\+)?|[a-z]\\w*)>/,null])):d.push([\"com\",/^#[^\\r\\n]*/,null,\"#\"]));a.cStyleComments&&(f.push([\"com\",/^\\/\\/[^\\r\\n]*/,null]),f.push([\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null]));if(b=a.regexLiterals){var g=(b=1<b?\"\":\"\\n\\r\")?\".\":\"[\\\\S\\\\s]\";f.push([\"lang-regex\",RegExp(\"^(?:^^\\\\.?|[+-]|[!=]=?=?|\\\\#|%=?|&&?=?|\\\\(|\\\\*=?|[+\\\\-]=|->|\\\\/=?|::?|<<?=?|>>?>?=?|,|;|\\\\?|@|\\\\[|~|{|\\\\^\\\\^?=?|\\\\|\\\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*(\"+\n(\"/(?=[^/*\"+b+\"])(?:[^/\\\\x5B\\\\x5C\"+b+\"]|\\\\x5C\"+g+\"|\\\\x5B(?:[^\\\\x5C\\\\x5D\"+b+\"]|\\\\x5C\"+g+\")*(?:\\\\x5D|$))+/\")+\")\")])}(b=a.types)&&f.push([\"typ\",b]);b=(\"\"+a.keywords).replace(/^ | $/g,\"\");b.length&&f.push([\"kwd\",new RegExp(\"^(?:\"+b.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),null]);d.push([\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]);b=\"^.[^\\\\s\\\\w.$@'\\\"`/\\\\\\\\]*\";a.regexLiterals&&(b+=\"(?!s*/)\");f.push([\"lit\",/^@[a-z_$][a-z_$@0-9]*/i,null],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/,null],[\"pln\",/^[a-z_$][a-z_$@0-9]*/i,\nnull],[\"lit\",/^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*/i,null,\"0123456789\"],[\"pln\",/^\\\\[\\s\\S]?/,null],[\"pun\",new RegExp(b),null]);return C(d,f)}function B(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!k.test(a.className))if(\"br\"===a.nodeName)g(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,p=d.match(q);p&&(c=d.substring(0,p.index),a.nodeValue=c,(d=d.substring(p.index+p[0].length))&&\na.parentNode.insertBefore(m.createTextNode(d),a.nextSibling),g(a),c||a.parentNode.removeChild(a))}}function g(a){function b(a,c){var d=c?a.cloneNode(!1):a,n=a.parentNode;if(n){var n=b(n,1),e=a.nextSibling;n.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,n.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var k=/(?:^|\\s)nocode(?:\\s|$)/,q=/\\r\\n?|\\n/,m=a.ownerDocument,p=m.createElement(\"li\");a.firstChild;)p.appendChild(a.firstChild);\nfor(var c=[p],r=0;r<c.length;++r)b(c[r]);d===(d|0)&&c[0].setAttribute(\"value\",d);var t=m.createElement(\"ol\");t.className=\"linenums\";d=Math.max(0,d-1|0)||0;for(var r=0,u=c.length;r<u;++r)p=c[r],p.className=\"L\"+(r+d)%10,p.firstChild||p.appendChild(m.createTextNode(\"\\u00a0\")),t.appendChild(p);a.appendChild(t)}function p(a,d){for(var f=d.length;0<=--f;){var b=d[f];X.hasOwnProperty(b)?R.console&&console.warn(\"cannot override language handler %s\",b):X[b]=a}}function F(a,d){a&&X.hasOwnProperty(a)||(a=/^\\s*</.test(d)?\n\"default-markup\":\"default-code\");return X[a]}function H(a){var d=a.j;try{var f=q(a.h,a.l),b=f.a;a.a=b;a.c=f.c;a.i=0;F(d,b)(a);var g=/\\bMSIE\\s(\\d+)/.exec(navigator.userAgent),g=g&&8>=+g[1],d=/\\n/g,p=a.a,k=p.length,f=0,m=a.c,t=m.length,b=0,c=a.g,r=c.length,x=0;c[r]=k;var u,e;for(e=u=0;e<r;)c[e]!==c[e+2]?(c[u++]=c[e++],c[u++]=c[e++]):e+=2;r=u;for(e=u=0;e<r;){for(var A=c[e],D=c[e+1],w=e+2;w+2<=r&&c[w+1]===D;)w+=2;c[u++]=A;c[u++]=D;e=w}c.length=u;var h=a.h;a=\"\";h&&(a=h.style.display,h.style.display=\"none\");\ntry{for(;b<t;){var l=m[b+2]||k,n=c[x+2]||k,w=Math.min(l,n),E=m[b+1],G;if(1!==E.nodeType&&(G=p.substring(f,w))){g&&(G=G.replace(d,\"\\r\"));E.nodeValue=G;var aa=E.ownerDocument,v=aa.createElement(\"span\");v.className=c[x+1];var B=E.parentNode;B.replaceChild(v,E);v.appendChild(E);f<l&&(m[b+1]=E=aa.createTextNode(p.substring(w,l)),B.insertBefore(E,v.nextSibling))}f=w;f>=l&&(b+=2);f>=n&&(x+=2)}}finally{h&&(h.style.display=a)}}catch(y){R.console&&console.log(y&&y.stack||y)}}var R=window,K=[\"break,continue,do,else,for,if,return,while\"],\nL=[[K,\"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],S=[L,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],\nM=[L,\"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient\"],N=[L,\"abstract,as,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where\"],L=[L,\"debugger,eval,export,function,get,instanceof,null,set,undefined,var,with,Infinity,NaN\"],\nO=[K,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],P=[K,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],K=[K,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)\\b/,\nT=/\\S/,U=x({keywords:[S,N,M,L,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",O,P,K],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),X={};p(U,[\"default-code\"]);p(C([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\s\\S]*?(?:-\\->|$)/],[\"lang-\",/^<\\?([\\s\\S]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\s\\S]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",\n/^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),\"default-markup htm html mxml xhtml xml xsl\".split(\" \"));p(C([[\"pln\",/^[\\s]+/,null,\" \\t\\r\\n\"],[\"atv\",/^(?:\\\"[^\\\"]*\\\"?|\\'[^\\']*\\'?)/,null,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^>\\'\\\"\\s]*(?:[^>\\'\\\"\\s\\/]|\\/(?=\\s)))/],\n[\"pun\",/^[=<>\\/]+/],[\"lang-js\",/^on\\w+\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\\"\\'>\\s]+)/i],[\"lang-css\",/^style\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-css\",/^style\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-css\",/^style\\s*=\\s*([^\\\"\\'>\\s]+)/i]]),[\"in.tag\"]);p(C([],[[\"atv\",/^[\\s\\S]+/]]),[\"uq.val\"]);p(x({keywords:S,hashComments:!0,cStyleComments:!0,types:Q}),\"c cc cpp cxx cyc m\".split(\" \"));p(x({keywords:\"null,true,false\"}),[\"json\"]);p(x({keywords:N,hashComments:!0,cStyleComments:!0,\nverbatimStrings:!0,types:Q}),[\"cs\"]);p(x({keywords:M,cStyleComments:!0}),[\"java\"]);p(x({keywords:K,hashComments:!0,multiLineStrings:!0}),[\"bash\",\"bsh\",\"csh\",\"sh\"]);p(x({keywords:O,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),[\"cv\",\"py\",\"python\"]);p(x({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),\n[\"perl\",\"pl\",\"pm\"]);p(x({keywords:P,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\",\"ruby\"]);p(x({keywords:L,cStyleComments:!0,regexLiterals:!0}),[\"javascript\",\"js\"]);p(x({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes\",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),[\"coffee\"]);p(C([],[[\"str\",/^[\\s\\S]+/]]),[\"regex\"]);\nvar V=R.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:x,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",PR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\",prettyPrintOne:function(a,d,f){f=f||!1;d=d||null;var b=document.createElement(\"div\");b.innerHTML=\"<pre>\"+a+\"</pre>\";b=b.firstChild;f&&B(b,f,!0);H({j:d,m:f,h:b,l:1,a:null,i:null,c:null,g:null});return b.innerHTML},\nprettyPrint:g=g=function(a,d){function f(){for(var b=R.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;r<p.length&&c.now()<b;r++){for(var d=p[r],k=h,q=d;q=q.previousSibling;){var m=q.nodeType,v=(7===m||8===m)&&q.nodeValue;if(v?!/^\\??prettify\\b/.test(v):3!==m||/\\S/.test(q.nodeValue))break;if(v){k={};v.replace(/\\b(\\w+)=([\\w:.%+-]+)/g,function(a,b,c){k[b]=c});break}}q=d.className;if((k!==h||u.test(q))&&!e.test(q)){m=!1;for(v=d.parentNode;v;v=v.parentNode)if(w.test(v.tagName)&&v.className&&u.test(v.className)){m=\n!0;break}if(!m){d.className+=\" prettyprinted\";m=k.lang;if(!m){var m=q.match(t),C;!m&&(C=A(d))&&z.test(C.tagName)&&(m=C.className.match(t));m&&(m=m[1])}if(x.test(d.tagName))v=1;else var v=d.currentStyle,y=g.defaultView,v=(v=v?v.whiteSpace:y&&y.getComputedStyle?y.getComputedStyle(d,null).getPropertyValue(\"white-space\"):0)&&\"pre\"===v.substring(0,3);y=k.linenums;(y=\"true\"===y||+y)||(y=(y=q.match(/\\blinenums\\b(?::(\\d+))?/))?y[1]&&y[1].length?+y[1]:!0:!1);y&&B(d,y,v);H({j:m,h:d,m:y,l:v,a:null,i:null,c:null,\ng:null})}}}r<p.length?R.setTimeout(f,250):\"function\"===typeof a&&a()}for(var b=d||document.body,g=b.ownerDocument||document,b=[b.getElementsByTagName(\"pre\"),b.getElementsByTagName(\"code\"),b.getElementsByTagName(\"xmp\")],p=[],k=0;k<b.length;++k)for(var m=0,q=b[k].length;m<q;++m)p.push(b[k][m]);var b=null,c=Date;c.now||(c={now:function(){return+new Date}});var r=0,t=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/,u=/\\bprettyprint\\b/,e=/\\bprettyprinted\\b/,x=/pre|xmp/i,z=/^code$/i,w=/^(?:pre|code|xmp)$/i,h={};f()}},\nS=R.define;\"function\"===typeof S&&S.amd&&S(\"google-code-prettify\",[],function(){return V})})();return g}();T||t.setTimeout(U,0)})();}()\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/prettify.css",
    "content": "/* Pretty printing styles. Used with prettify.js. */\n/* Vim sunburst theme by David Leibovic */\n\npre .str, code .str { color: #65B042; } /* string  - green */\npre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */\npre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */\npre .typ, code .typ { color: #89bdff; } /* type - light blue */\npre .lit, code .lit { color: #3387CC; } /* literal - blue */\npre .pun, code .pun { color: #fff; } /* punctuation - white */\npre .pln, code .pln { color: #fff; } /* plaintext - white */\npre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */\npre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */\npre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */\npre .dec, code .dec { color: #3387CC; } /* decimal - blue */\n\npre.prettyprint, code.prettyprint {\n  background-color: #000;\n  -moz-border-radius: 8px;\n  -webkit-border-radius: 8px;\n  -o-border-radius: 8px;\n  -ms-border-radius: 8px;\n  -khtml-border-radius: 8px;\n  border-radius: 8px;\n}\n\npre.prettyprint {\n  width: 95%;\n  margin: 1em auto;\n  padding: 1em;\n  white-space: pre-wrap;\n}\n\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */\nli.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }\n/* Alternate shading for lines */\nli.L1,li.L3,li.L5,li.L7,li.L9 { }\n\n@media print {\n  pre .str, code .str { color: #060; }\n  pre .kwd, code .kwd { color: #006; font-weight: bold; }\n  pre .com, code .com { color: #600; font-style: italic; }\n  pre .typ, code .typ { color: #404; font-weight: bold; }\n  pre .lit, code .lit { color: #044; }\n  pre .pun, code .pun { color: #440; }\n  pre .pln, code .pln { color: #000; }\n  pre .tag, code .tag { color: #006; font-weight: bold; }\n  pre .atn, code .atn { color: #404; }\n  pre .atv, code .atv { color: #060; }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/doc/vendor/webfontloader.js",
    "content": "/* Web Font Loader v1.6.24 - (c) Adobe Systems, Google. License: Apache 2.0 */\n(function(){function aa(a,b,d){return a.call.apply(a.bind,arguments)}function ba(a,b,d){if(!a)throw Error();if(2<arguments.length){var c=Array.prototype.slice.call(arguments,2);return function(){var d=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(d,c);return a.apply(b,d)}}return function(){return a.apply(b,arguments)}}function p(a,b,d){p=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?aa:ba;return p.apply(null,arguments)}var q=Date.now||function(){return+new Date};function ca(a,b){this.a=a;this.m=b||a;this.c=this.m.document}var da=!!window.FontFace;function t(a,b,d,c){b=a.c.createElement(b);if(d)for(var e in d)d.hasOwnProperty(e)&&(\"style\"==e?b.style.cssText=d[e]:b.setAttribute(e,d[e]));c&&b.appendChild(a.c.createTextNode(c));return b}function u(a,b,d){a=a.c.getElementsByTagName(b)[0];a||(a=document.documentElement);a.insertBefore(d,a.lastChild)}function v(a){a.parentNode&&a.parentNode.removeChild(a)}\nfunction w(a,b,d){b=b||[];d=d||[];for(var c=a.className.split(/\\s+/),e=0;e<b.length;e+=1){for(var f=!1,g=0;g<c.length;g+=1)if(b[e]===c[g]){f=!0;break}f||c.push(b[e])}b=[];for(e=0;e<c.length;e+=1){f=!1;for(g=0;g<d.length;g+=1)if(c[e]===d[g]){f=!0;break}f||b.push(c[e])}a.className=b.join(\" \").replace(/\\s+/g,\" \").replace(/^\\s+|\\s+$/,\"\")}function y(a,b){for(var d=a.className.split(/\\s+/),c=0,e=d.length;c<e;c++)if(d[c]==b)return!0;return!1}\nfunction z(a){if(\"string\"===typeof a.f)return a.f;var b=a.m.location.protocol;\"about:\"==b&&(b=a.a.location.protocol);return\"https:\"==b?\"https:\":\"http:\"}function ea(a){return a.m.location.hostname||a.a.location.hostname}\nfunction A(a,b,d){function c(){k&&e&&f&&(k(g),k=null)}b=t(a,\"link\",{rel:\"stylesheet\",href:b,media:\"all\"});var e=!1,f=!0,g=null,k=d||null;da?(b.onload=function(){e=!0;c()},b.onerror=function(){e=!0;g=Error(\"Stylesheet failed to load\");c()}):setTimeout(function(){e=!0;c()},0);u(a,\"head\",b)}\nfunction B(a,b,d,c){var e=a.c.getElementsByTagName(\"head\")[0];if(e){var f=t(a,\"script\",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&\"loaded\"!=this.readyState&&\"complete\"!=this.readyState||(g=!0,d&&d(null),f.onload=f.onreadystatechange=null,\"HEAD\"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);setTimeout(function(){g||(g=!0,d&&d(Error(\"Script load timeout\")))},c||5E3);return f}return null};function C(){this.a=0;this.c=null}function D(a){a.a++;return function(){a.a--;E(a)}}function F(a,b){a.c=b;E(a)}function E(a){0==a.a&&a.c&&(a.c(),a.c=null)};function G(a){this.a=a||\"-\"}G.prototype.c=function(a){for(var b=[],d=0;d<arguments.length;d++)b.push(arguments[d].replace(/[\\W_]+/g,\"\").toLowerCase());return b.join(this.a)};function H(a,b){this.c=a;this.f=4;this.a=\"n\";var d=(b||\"n4\").match(/^([nio])([1-9])$/i);d&&(this.a=d[1],this.f=parseInt(d[2],10))}function fa(a){return I(a)+\" \"+(a.f+\"00\")+\" 300px \"+J(a.c)}function J(a){var b=[];a=a.split(/,\\s*/);for(var d=0;d<a.length;d++){var c=a[d].replace(/['\"]/g,\"\");-1!=c.indexOf(\" \")||/^\\d/.test(c)?b.push(\"'\"+c+\"'\"):b.push(c)}return b.join(\",\")}function K(a){return a.a+a.f}function I(a){var b=\"normal\";\"o\"===a.a?b=\"oblique\":\"i\"===a.a&&(b=\"italic\");return b}\nfunction ga(a){var b=4,d=\"n\",c=null;a&&((c=a.match(/(normal|oblique|italic)/i))&&c[1]&&(d=c[1].substr(0,1).toLowerCase()),(c=a.match(/([1-9]00|normal|bold)/i))&&c[1]&&(/bold/i.test(c[1])?b=7:/[1-9]00/.test(c[1])&&(b=parseInt(c[1].substr(0,1),10))));return d+b};function ha(a,b){this.c=a;this.f=a.m.document.documentElement;this.h=b;this.a=new G(\"-\");this.j=!1!==b.events;this.g=!1!==b.classes}function ia(a){a.g&&w(a.f,[a.a.c(\"wf\",\"loading\")]);L(a,\"loading\")}function M(a){if(a.g){var b=y(a.f,a.a.c(\"wf\",\"active\")),d=[],c=[a.a.c(\"wf\",\"loading\")];b||d.push(a.a.c(\"wf\",\"inactive\"));w(a.f,d,c)}L(a,\"inactive\")}function L(a,b,d){if(a.j&&a.h[b])if(d)a.h[b](d.c,K(d));else a.h[b]()};function ja(){this.c={}}function ka(a,b,d){var c=[],e;for(e in b)if(b.hasOwnProperty(e)){var f=a.c[e];f&&c.push(f(b[e],d))}return c};function N(a,b){this.c=a;this.f=b;this.a=t(this.c,\"span\",{\"aria-hidden\":\"true\"},this.f)}function O(a){u(a.c,\"body\",a.a)}function P(a){return\"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:\"+J(a.c)+\";\"+(\"font-style:\"+I(a)+\";font-weight:\"+(a.f+\"00\")+\";\")};function Q(a,b,d,c,e,f){this.g=a;this.j=b;this.a=c;this.c=d;this.f=e||3E3;this.h=f||void 0}Q.prototype.start=function(){var a=this.c.m.document,b=this,d=q(),c=new Promise(function(c,e){function k(){q()-d>=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?c():setTimeout(k,25)},function(){e()})}k()}),e=new Promise(function(a,c){setTimeout(c,b.f)});Promise.race([e,c]).then(function(){b.g(b.a)},function(){b.j(b.a)})};function R(a,b,d,c,e,f,g){this.v=a;this.B=b;this.c=d;this.a=c;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.o=this.j=this.h=this.g=null;this.g=new N(this.c,this.s);this.h=new N(this.c,this.s);this.j=new N(this.c,this.s);this.o=new N(this.c,this.s);a=new H(this.a.c+\",serif\",K(this.a));a=P(a);this.g.a.style.cssText=a;a=new H(this.a.c+\",sans-serif\",K(this.a));a=P(a);this.h.a.style.cssText=a;a=new H(\"serif\",K(this.a));a=P(a);this.j.a.style.cssText=a;a=new H(\"sans-serif\",K(this.a));a=\nP(a);this.o.a.style.cssText=a;O(this.g);O(this.h);O(this.j);O(this.o)}var S={D:\"serif\",C:\"sans-serif\"},T=null;function U(){if(null===T){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);T=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return T}R.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.o.a.offsetWidth;this.A=q();la(this)};\nfunction ma(a,b,d){for(var c in S)if(S.hasOwnProperty(c)&&b===a.f[S[c]]&&d===a.f[S[c]])return!0;return!1}function la(a){var b=a.g.a.offsetWidth,d=a.h.a.offsetWidth,c;(c=b===a.f.serif&&d===a.f[\"sans-serif\"])||(c=U()&&ma(a,b,d));c?q()-a.A>=a.w?U()&&ma(a,b,d)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):na(a):V(a,a.v)}function na(a){setTimeout(p(function(){la(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.o.a);b(this.a)},a),0)};function W(a,b,d){this.c=a;this.a=b;this.f=0;this.o=this.j=!1;this.s=d}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,K(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,K(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,K(a).toString(),\"inactive\")]);L(b,\"fontactive\",a);this.o=!0;oa(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var d=y(b.f,b.a.c(\"wf\",a.c,K(a).toString(),\"active\")),c=[],e=[b.a.c(\"wf\",a.c,K(a).toString(),\"loading\")];d||c.push(b.a.c(\"wf\",a.c,K(a).toString(),\"inactive\"));w(b.f,c,e)}L(b,\"fontinactive\",a);oa(this)};function oa(a){0==--a.f&&a.j&&(a.o?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),L(a,\"active\")):M(a.a))};function pa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}pa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;qa(this,new ha(this.c,a),a)};\nfunction ra(a,b,d,c,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,k=c||null||{};if(0===d.length&&f)M(b.a);else{b.f+=d.length;f&&(b.j=f);var h,m=[];for(h=0;h<d.length;h++){var l=d[h],n=k[l.c],r=b.a,x=l;r.g&&w(r.f,[r.a.c(\"wf\",x.c,K(x).toString(),\"loading\")]);L(r,\"fontloading\",x);r=null;null===X&&(X=window.FontFace?(x=/Gecko.*Firefox\\/(\\d+)/.exec(window.navigator.userAgent))?42<parseInt(x[1],10):!0:!1);X?r=new Q(p(b.g,b),p(b.h,b),b.c,l,b.s,n):r=new R(p(b.g,b),p(b.h,b),b.c,l,b.s,a,\nn);m.push(r)}for(h=0;h<m.length;h++)m[h].start()}},0)}function qa(a,b,d){var c=[],e=d.timeout;ia(b);var c=ka(a.a,d,a.c),f=new W(a.c,b,e);a.h=c.length;b=0;for(d=c.length;b<d;b++)c[b].load(function(b,c,d){ra(a,f,b,c,d)})};function sa(a,b){this.c=a;this.a=b}function ta(a,b,d){var c=z(a.c);a=(a.a.api||\"fast.fonts.net/jsapi\").replace(/^.*http(s?):(\\/\\/)?/,\"\");return c+\"//\"+a+\"/\"+b+\".js\"+(d?\"?v=\"+d:\"\")}\nsa.prototype.load=function(a){function b(){if(e[\"__mti_fntLst\"+d]){var c=e[\"__mti_fntLst\"+d](),g=[],k;if(c)for(var h=0;h<c.length;h++){var m=c[h].fontfamily;void 0!=c[h].fontStyle&&void 0!=c[h].fontWeight?(k=c[h].fontStyle+c[h].fontWeight,g.push(new H(m,k))):g.push(new H(m))}a(g)}else setTimeout(function(){b()},50)}var d=this.a.projectId,c=this.a.version;if(d){var e=this.c.m;B(this.c,ta(this,d,c),function(c){c?a([]):b()}).id=\"__MonotypeAPIScript__\"+d}else a([])};function ua(a,b){this.c=a;this.a=b}ua.prototype.load=function(a){var b,d,c=this.a.urls||[],e=this.a.families||[],f=this.a.testStrings||{},g=new C;b=0;for(d=c.length;b<d;b++)A(this.c,c[b],D(g));var k=[];b=0;for(d=e.length;b<d;b++)if(c=e[b].split(\":\"),c[1])for(var h=c[1].split(\",\"),m=0;m<h.length;m+=1)k.push(new H(c[0],h[m]));else k.push(new H(c[0]));F(g,function(){a(k,f)})};function va(a,b,d){a?this.c=a:this.c=b+wa;this.a=[];this.f=[];this.g=d||\"\"}var wa=\"//fonts.googleapis.com/css\";function xa(a,b){for(var d=b.length,c=0;c<d;c++){var e=b[c].split(\":\");3==e.length&&a.f.push(e.pop());var f=\"\";2==e.length&&\"\"!=e[1]&&(f=\":\");a.a.push(e.join(f))}}\nfunction ya(a){if(0==a.a.length)throw Error(\"No fonts to load!\");if(-1!=a.c.indexOf(\"kit=\"))return a.c;for(var b=a.a.length,d=[],c=0;c<b;c++)d.push(a.a[c].replace(/ /g,\"+\"));b=a.c+\"?family=\"+d.join(\"%7C\");0<a.f.length&&(b+=\"&subset=\"+a.f.join(\",\"));0<a.g.length&&(b+=\"&text=\"+encodeURIComponent(a.g));return b};function za(a){this.f=a;this.a=[];this.c={}}\nvar Aa={latin:\"BESbswy\",cyrillic:\"\\u0439\\u044f\\u0416\",greek:\"\\u03b1\\u03b2\\u03a3\",khmer:\"\\u1780\\u1781\\u1782\",Hanuman:\"\\u1780\\u1781\\u1782\"},Ba={thin:\"1\",extralight:\"2\",\"extra-light\":\"2\",ultralight:\"2\",\"ultra-light\":\"2\",light:\"3\",regular:\"4\",book:\"4\",medium:\"5\",\"semi-bold\":\"6\",semibold:\"6\",\"demi-bold\":\"6\",demibold:\"6\",bold:\"7\",\"extra-bold\":\"8\",extrabold:\"8\",\"ultra-bold\":\"8\",ultrabold:\"8\",black:\"9\",heavy:\"9\",l:\"3\",r:\"4\",b:\"7\"},Ca={i:\"i\",italic:\"i\",n:\"n\",normal:\"n\"},Da=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;\nfunction Ea(a){for(var b=a.f.length,d=0;d<b;d++){var c=a.f[d].split(\":\"),e=c[0].replace(/\\+/g,\" \"),f=[\"n4\"];if(2<=c.length){var g;var k=c[1];g=[];if(k)for(var k=k.split(\",\"),h=k.length,m=0;m<h;m++){var l;l=k[m];if(l.match(/^[\\w-]+$/)){var n=Da.exec(l.toLowerCase());if(null==n)l=\"\";else{l=n[2];l=null==l||\"\"==l?\"n\":Ca[l];n=n[1];if(null==n||\"\"==n)n=\"4\";else var r=Ba[n],n=r?r:isNaN(n)?\"4\":n.substr(0,1);l=[l,n].join(\"\")}}else l=\"\";l&&g.push(l)}0<g.length&&(f=g);3==c.length&&(c=c[2],g=[],c=c?c.split(\",\"):\ng,0<c.length&&(c=Aa[c[0]])&&(a.c[e]=c))}a.c[e]||(c=Aa[e])&&(a.c[e]=c);for(c=0;c<f.length;c+=1)a.a.push(new H(e,f[c]))}};function Fa(a,b){this.c=a;this.a=b}var Ga={Arimo:!0,Cousine:!0,Tinos:!0};Fa.prototype.load=function(a){var b=new C,d=this.c,c=new va(this.a.api,z(d),this.a.text),e=this.a.families;xa(c,e);var f=new za(e);Ea(f);A(d,ya(c),D(b));F(b,function(){a(f.a,f.c,Ga)})};function Ha(a,b){this.c=a;this.a=b}Ha.prototype.load=function(a){var b=this.a.id,d=this.c.m;b?B(this.c,(this.a.api||\"https://use.typekit.net\")+\"/\"+b+\".js\",function(b){if(b)a([]);else if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){b=d.Typekit.config.fn;for(var e=[],f=0;f<b.length;f+=2)for(var g=b[f],k=b[f+1],h=0;h<k.length;h++)e.push(new H(g,k[h]));try{d.Typekit.load({events:!1,classes:!1,async:!0})}catch(m){}a(e)}},2E3):a([])};function Ia(a,b){this.c=a;this.f=b;this.a=[]}Ia.prototype.load=function(a){var b=this.f.id,d=this.c.m,c=this;b?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[b]=function(b,d){for(var g=0,k=d.fonts.length;g<k;++g){var h=d.fonts[g];c.a.push(new H(h.name,ga(\"font-weight:\"+h.weight+\";font-style:\"+h.style)))}a(c.a)},B(this.c,z(this.c)+(this.f.api||\"//f.fontdeck.com/s/css/js/\")+ea(this.c)+\"/\"+b+\".js\",function(b){b&&a([])})):a([])};var Y=new pa(window);Y.a.c.custom=function(a,b){return new ua(b,a)};Y.a.c.fontdeck=function(a,b){return new Ia(b,a)};Y.a.c.monotype=function(a,b){return new sa(b,a)};Y.a.c.typekit=function(a,b){return new Ha(b,a)};Y.a.c.google=function(a,b){return new Fa(b,a)};var Z={load:p(Y.load,Y)};\"function\"===typeof define&&define.amd?define(function(){return Z}):\"undefined\"!==typeof module&&module.exports?module.exports=Z:(window.WebFont=Z,window.WebFontConfig&&Y.load(window.WebFontConfig));}());\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/css/index.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n@charset \"utf-8\";\n\n.sidebar .navbar-sample1 .navbar-nav a{color:#555759}\n.sidebar{position:fixed; top:0; left:0px; width:180px; height:100%; min-height: 800px; background:#e5e8eb; overflow:auto;}\n.navbar-sample1{position:relative; border:0; border-bottom:3px solid #73797C; z-index:1; clear:both; border-radius:0;}\nli.active{color:#fff;}\n.sidebar .navbar-sample1 .navbar-nav>.active>a{color:#3498db}\n.right_wrapper{height:auto; width:auto; min-width:1200px;float:left; position:absolute; left:180px;z-index:-1}\n.left_wraper{width:180px; height:100%;}\n\n\n.dropdown:hover .menu-top {\n    display: block;\n}\n\n.dropdown-submenu{\n    position:relative;\n}\n\n.dropdown-submenu > .dropdown-menu{\n    top:0;\n    left:100%;\n    margin-top:-6px;\n    margin-left:-1px;\n}\n\n.dropdown-submenu:hover > .dropdown-menu{\n    display:block;\n}\n\n.dropdown-submenu > a:after{\n    display:block;\n    content:\" \";\n    float:right;\n    width:0;\n    height:0;\n    border-color:transparent;\n    border-style:solid;\n    border-width:5px 0 5px 5px;\n    border-left-color:#cccccc;\n    margin-top:5px;\n    margin-right:-10px;\n}\n\n.dropdown-submenu:hover > a:after{\n    border-left-color:#ffffff;\n}\n\n.dropdown-submenu .pull-left{\n    float:none;\n}\n\n.dropdown-submenu.pull-left > .dropdown-menu{\n    left:-100%;\n    margin-left:10px;\n    -webkit-border-radius:6px 0 6px 6px;\n    -moz-border-radius:6px 0 6px 6px;\n    border-radius:6px 0 6px 6px;\n}\n\n\n/*二级页面样式 start*/\n.secondary-page .panel{\n    border:none;\n    background: #fafafa;\n}\n.secondary-page .nav-top-div{\n    border:none;\n}\n.secondary-page .doc-content-box{\n    border:none;\n    background: #fff;\n    /*box-shadow: 0 0 16px rgba(0,0,0,0.2);*/\n}\n.secondary-page .dropdown-content{\n    box-shadow: 0 0 10px rgba(0,0,0,0.2);\n    width: 928px;\n    right: -1094px;\n    background: #fafafa;\n}\n.secondary-page .dropdown-content::after{\n    content:\"\";\n    position: absolute;\n    width: 21px;\n    height: 60px;\n    background: #fafafa;\n    top:0;\n    left:0;\n    z-index: 1000;\n    margin-left: -12px;\n    border-color:#fafafa;\n}\n.sidebar-nav ul a.all-system-title{\n    padding: 26px 0 18px 20px;\n    font-size:16px;\n    line-height: 1;\n    color:#333;\n    cursor: pointer;\n}\n.right-content a{\n    color:#57a3f1;   \n}\n.right-content{\n    border-bottom: 1px solid #e5e5e5;\n    padding-bottom: 14px;\n}\n.secondary-page .dropdown-content .hide-overflow-content a{\n    color:#7b7d8a;\n    font-size:14px;\n\n}\n.secondary-page .dropdown-content .hide-overflow-content a span{\n    color:#bbb;\n    font-size: 12px;  \n}\n.secondary-page .dropdown-content .hide-overflow-content a:hover{\n    color: #57a3f1;\n}\n.secondary-page .sidebar-nav .title-contrl a{\n    font-size: 14px;\n    font-weight:bold;\n    color:#333;\n    padding:10px 0 10px 20px;\n}\n.secondary-page .sidebar-nav .api-list-title{\n    font-size: 14px;\n    font-weight:bold;\n    color:#333;\n    padding:10px 0 10px 20px;\n}\n.secondary-page .sidebar-nav .api-hover-a:hover{\n    border:none;\n    background-color: #57a3f1;\n    color: #fff;\n}\n.secondary-page .sidebar-nav .drop-down-list{\n    font-size: 12px;\n    color:#333;\n}\n.secondary-page .sidebar-nav .api-hover-a{\n    position: relative;\n}\n.secondary-page .sidebar-nav .api-hover-a .add-project-tip{\n    position: absolute;\n    top: 0;\n    right: 0;\n    color: #57e724;\n    margin-right: 20px;\n    font-size:10px;\n    margin-top: 10px;\n}\n.secondary-page .sidebar-nav .drop-down-list li a{\n    height: 53px;\n    line-height: 53px;\n    padding: 0 0 0 30px;\n    transition: all .0s;\n    padding: 10px 0 0 20px;\n}\n.secondary-page .sidebar-nav .api-hover-a .describe{\n    font-size: 12px;\n    color: #999;\n    padding-top: 3px;\n}\n.secondary-page .sidebar-nav .api-hover-a:hover .describe{\n    color:#fff;\n}\n/*API列表 satrt*/\n.api_docs-list{\n    padding-top: 20px;\n}\n.api_docs-list table tr th{\n    padding:15px 0 15px 15px;\n    line-height: 1;\n    border:none;\n}\n.api_docs-list table tr td{\n    padding: 20px 0 20px 15px;\n    line-height: 1;\n    border:none;\n}\n\n/*API列表 end*/\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/css/md_render.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.document {\n  font-weight: normal;\n  font-size: 14px;\n  line-height: 1.6;\n  padding-top: 10px;\n  padding-bottom: 10px;\n  background-color: white;\n  padding: 30px;\n  color: #333;\n}\ntt, code, kbd, samp {\n   font-family: 'Microsoft Yahei', 'Open Sans', sans-serif;\n   font-size: 75%;\n}\n\n.clear {\n    clear: both;\n}\n\n.document > *:first-child {\n  margin-top: 0 !important;\n}\n\n.document > *:last-child {\n  margin-bottom: 0 !important;\n}\n\n.document a {\n  color: #0000ff;\n  text-decoration: none;\n}\n\n.document a.absent {\n  color: #cc0000;\n}\n\n.document a.anchor {\n  display: block;\n  padding-left: 30px;\n  margin-left: -30px;\n  cursor: pointer;\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin: 20px 0 10px;\n  padding: 0;\n  font-weight: bold;\n  -webkit-font-smoothing: antialiased;\n  cursor: text;\n  position: relative;\n}\nh1 {\n  font-size: 24px;\n  color: black;\n  margin-top: 24px;\n  padding-bottom: 10px;\n  border-bottom: 1px solid #cccccc;\n}\n\nh1:first-child + h2, h3:first-child, h4:first-child, h5:first-child, h6:first-child {\n  margin-top: 0;\n  padding-top: 0;\n}\n\nh1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {\n  text-decoration: none;\n}\n\nh1 tt, h1 code {\n  font-size: inherit;\n}\n\nh2 tt, h2 code {\n  font-size: inherit;\n}\n\nh3 tt, h3 code {\n  font-size: inherit;\n}\n\nh4 tt, h4 code {\n  font-size: inherit;\n}\n\nh5 tt, h5 code {\n  font-size: inherit;\n}\n\nh6 tt, h6 code {\n  font-size: inherit;\n}\n\n\nh2 {\n  font-size: 20px;\n  color: black;\n  margin: 20px 0 10px 0;\n}\n\nh3 {\n  font-size: 18px;\n  margin: 18px 0 9px 0;\n}\n\nh4 {\n  font-size: 14px;\n  padding-top: 15px;\n}\n\nh5 {\n  font-size: 14px;\n}\n\nh6 {\n  color: #777777;\n  font-size: 14px;\n}\n\n.document p, .document blockquote, .document ul, .document ol, .document dl, .document li, .document table, .document pre {\n  margin: 14px 0 14px 0;\n}\nhr {\n  border: 0 none;\n  color: #cccccc;\n  height: 4px;\n  padding: 0;\n}\n\n.document > h2:first-child {\n  margin-top: 0;\n  padding-top: 0;\n}\n\n.document > h1:first-child {\n  margin-top: 0;\n  padding-top: 0;\n}\n\n.document > h1:first-child + h2 {\n  margin-top: 0;\n  padding-top: 0;\n}\n\n.document > h3:first-child, .document > h4:first-child, .document > h5:first-child, .document > h6:first-child {\n  margin-top: 0;\n  padding-top: 0;\n}\n\na:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {\n  margin-top: 0;\n  padding-top: 0;\n}\n\nh1 p, h2 p, h3 p, h4 p, h5 p, h6 p {\n  margin-top: 0;\n}\n\n.document li p.first {\n  display: inline-block;\n}\n\n.document ul, .document ol {\n  padding-left: 30px;\n  list-style: initial;\n}\n\n.document ul :first-child, .document ol :first-child {\n  margin-top: 0;\n}\n.document ul li {\n  margin: 3px 0;\n  padding: 0;\n}\n\n.document ul :last-child, .document ol :last-child {\n  margin-bottom: 0;\n}\n\ndl {\n  padding: 0;\n}\n\ndl dt {\n  font-size: 14px;\n  font-weight: bold;\n  font-style: italic;\n  padding: 0;\n  margin: 15px 0 5px;\n}\n\ndl dt:first-child {\n  padding: 0;\n}\n\ndl dt > :first-child {\n  margin-top: 0;\n}\n\ndl dt > :last-child {\n  margin-bottom: 0;\n}\n\ndl dd {\n  margin: 0 0 15px;\n  padding: 0 15px;\n}\n\ndl dd > :first-child {\n  margin-top: 0;\n}\n\ndl dd > :last-child {\n  margin-bottom: 0;\n}\n\nblockquote {\n  border-left: 4px solid #dddddd;\n  padding: 0 15px;\n  color: #777777;\n}\n\nblockquote > :first-child {\n  margin-top: 0;\n}\n\nblockquote > :last-child {\n  margin-bottom: 0;\n}\n\ntable {\n  padding: 0;\n  width: 100%;\n  border: 1px solid #ccc;\n  border-spacing: 0;\n  border-collapse: collapse;\n  border-width: 0 0 0 0;\n}\ntable tr {\n  background-color: white;\n  margin: 0;\n  padding: 0;\n}\ntable tr>th {\n  border-bottom: 2px solid #ddd;\n}\ntable tr>td {\n  border-top: 1px solid #ddd;\n}\n\ntable tr:nth-child(2n) {\n  background-color: #f8f8f8;\n}\n\ntable tr th {\n  font-weight: bold;\n  text-align: left;\n  margin: 0;\n  padding: 6px 10px;\n}\n\ntable tr td {\n  text-align: left;\n  margin: 0;\n  padding: 6px 10px;\n}\n\ntable tr th :first-child, table tr td :first-child {\n  margin-top: 0;\n}\n\ntable tr th :last-child, table tr td :last-child {\n  margin-bottom: 0;\n}\n\nimg {\n  max-width: 100%;\n}\n\nspan.frame {\n  display: block;\n  overflow: hidden;\n}\n\nspan.frame > span {\n  border: 1px solid #dddddd;\n  display: block;\n  float: left;\n  overflow: hidden;\n  margin: 13px 0 0;\n  padding: 7px;\n  width: auto;\n}\n\nspan.frame span img {\n  display: block;\n  float: left;\n}\n\nspan.frame span span {\n  clear: both;\n  color: #333333;\n  display: block;\n  padding: 5px 0 0;\n}\n\nspan.align-center {\n  display: block;\n  overflow: hidden;\n  clear: both;\n}\n\nspan.align-center > span {\n  display: block;\n  overflow: hidden;\n  margin: 13px auto 0;\n  text-align: center;\n}\n\nspan.align-center span img {\n  margin: 0 auto;\n  text-align: center;\n}\n\nspan.align-right {\n  display: block;\n  overflow: hidden;\n  clear: both;\n}\n\nspan.align-right > span {\n  display: block;\n  overflow: hidden;\n  margin: 13px 0 0;\n  text-align: right;\n}\n\nspan.align-right span img {\n  margin: 0;\n  text-align: right;\n}\n\nspan.float-left {\n  display: block;\n  margin-right: 13px;\n  overflow: hidden;\n  float: left;\n}\n\nspan.float-left span {\n  margin: 13px 0 0;\n}\n\nspan.float-right {\n  display: block;\n  margin-left: 13px;\n  overflow: hidden;\n  float: right;\n}\n\nspan.float-right > span {\n  display: block;\n  overflow: hidden;\n  margin: 13px auto 0;\n  text-align: right;\n}\n\ncode, tt {\n  margin: 0 2px;\n  padding: 0 5px;\n  white-space: nowrap;\n  border: 1px solid #eaeaea;\n  background-color: #f8f8f8;\n  border-radius: 3px;\n}\n\npre code {\n  margin: 0;\n  padding: 0;\n  white-space: pre;\n  border: none;\n  background: transparent;\n}\n\n.highlight pre {\n  background-color: #f8f8f8;\n  border: 1px solid #cccccc;\n  font-size: 13px;\n  line-height: 19px;\n  overflow: auto;\n  padding: 6px 10px;\n  border-radius: 3px;\n}\n\npre {\n  background-color: #f8f8f8;\n  /*\n  border: 1px solid #cccccc;\n  border-radius: 3px;\n  */\n  border-width: 0;\n  border-radius: 0;\n  font-size: 13px;\n  line-height: 19px;\n  overflow: auto;\n  padding: 6px 10px;\n}\npre {\n    display: block;\n    padding: 9.5px;\n    margin: 0 0 10px;\n    font-size: 13px;\n    line-height: 1.8;\n    color: #333;\n    word-break: break-all;\n    word-wrap: break-word;\n    background-color: #f5f5f5;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n}\n\npre code, pre tt {\n  background-color: transparent;\n  border: none;\n}\n\np {\n    /*color: #7b7d8a;*/\n}\n\n/*code, kbd, pre, samp {*/\n    /*font-family: 'Microsoft Yahei', 'Open Sans', sans-serif;*/\n/*}*/\n\n/* google fonts From RTD */\n@font-face {\nfont-family: 'Inconsolata';\nfont-style: normal;\nfont-weight: 400;\nsrc: local('Inconsolata'), url(https://themes.googleusercontent.com/static/fonts/inconsolata/v7/BjAYBlHtW3CJxDcjzrnZCLrIa-7acMAeDBVuclsi6Gc.woff) format('woff');\n}\n@font-face {\nfont-family: 'Inconsolata';\nfont-style: normal;\nfont-weight: 700;\nsrc: local('Inconsolata Bold'), local('Inconsolata-Bold'), url(https://themes.googleusercontent.com/static/fonts/inconsolata/v7/AIed271kqQlcIRSOnQH0yRbnBKKEOwRKgsHDreGcocg.woff) format('woff');\n}\n@font-face {\nfont-family: 'Lato';\nfont-style: normal;\nfont-weight: 400;\nsrc: local('Lato Regular'), local('Lato-Regular'), url(https://themes.googleusercontent.com/static/fonts/lato/v7/qIIYRU-oROkIk8vfvxw6QvesZW2xOQ-xsNqO47m55DA.woff) format('woff');\n}\n@font-face {\nfont-family: 'Lato';\nfont-style: normal;\nfont-weight: 700;\nsrc: local('Lato Bold'), local('Lato-Bold'), url(https://themes.googleusercontent.com/static/fonts/lato/v7/qdgUG4U09HnJwhYI-uK18wLUuEpTyoUstqEm5AMlJo4.woff) format('woff');\n}\n@font-face {\nfont-family: 'Roboto Slab';\nfont-style: normal;\nfont-weight: 400;\nsrc: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://themes.googleusercontent.com/static/fonts/robotoslab/v3/y7lebkjgREBJK96VQi37ZrrIa-7acMAeDBVuclsi6Gc.woff) format('woff');\n}\n@font-face {\nfont-family: 'Roboto Slab';\nfont-style: normal;\nfont-weight: 700;\nsrc: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://themes.googleusercontent.com/static/fonts/robotoslab/v3/dazS1PrQQuCxC3iOAJFEJRbnBKKEOwRKgsHDreGcocg.woff) format('woff');\n}\n\n\n\n\n\npre.code .ln { color: grey; } /* line numbers */\npre.code, code { background-color: #eeeeee }\npre.code .comment, code .comment { color: #5C6576 }\npre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }\npre.code .literal.string, code .literal.string { color: #0C5404 }\npre.code .name.builtin, code .name.builtin { color: #352B84 }\npre.code .deleted, code .deleted { background-color: #DEB0A1}\npre.code .inserted, code .inserted { background-color: #A3D289}\n\n\n.document {\n  margin: auto;\n  margin-top: 0;\n  margin-bottom: 0;\n  padding: 14px 28px;\n  background-color: white;\n}\n\n\n.codehilite .hll { background-color: #ffffcc }\n.codehilite  { background: #f8f8f8; }\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\n.codehilite .o { color: #666666 } /* Operator */\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\n.codehilite .ge { font-style: italic } /* Generic.Emph */\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\n.codehilite .go { color: #808080 } /* Generic.Output */\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n.codehilite .gt { color: #0040D0 } /* Generic.Traceback */\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\n.codehilite .m { color: #666666 } /* Literal.Number */\n.codehilite .s { color: #BA2121 } /* Literal.String */\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\n.codehilite .nb { color: #008000 } /* Name.Builtin */\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n.codehilite .no { color: #880000 } /* Name.Constant */\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n.codehilite .nf { color: #0000FF } /* Name.Function */\n.codehilite .nl { color: #A0A000 } /* Name.Label */\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\n.codehilite .nv { color: #19177C } /* Name.Variable */\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\nsub, sup {\n    position: relative;\n    font-size: 75%;\n    line-height: 0;\n    vertical-align: middle;\n    background-color: #dddddd;\n    border-radius: 4px;\n    text-align: center;\n    min-width: 20px;\n    margin: 0 5px 0 3px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/css/search.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/* 页面搜索框样式 */\n.search-wrapper {\n    z-index: 150;\n    /*\n\tposition: fixed;\n\tleft: 0px;\n\ttop: 66px;\n\theight: 132px;\n    background: #f9f9f9;\n    */\n}\n.scrollfiexd {\n    /*\n\tposition: fixed;\n\tleft: 0px;\n\ttop: 0px;\n\theight: 132px;\n    background: #f9f9f9;\n    */\n}\n.search-wrapper .bk-search {\n\theight: 100%;\n\twidth: 100%;\n\tline-height: 132px;\n\ttext-align: center;\n}\n.search-wrapper .bk-search .input-wrapper{\n\tdisplay: inline-block;\n\tposition: relative;\n}\n.search-wrapper .bk-search .input-wrapper .search-result {\n\tposition: absolute;\n\ttop: 92px;\n\twidth: 100%;\n\tmax-height: 384px;\n\toverflow: auto;\n\tborder: 1px solid #c3cdd7;\n\tbackground: #fff;\n\tz-index: 1000;\n}\n.search-wrapper .bk-search .input-wrapper .search-result > li {\n\n\tline-height: 32px;\n\ttext-align: left;\n\tpadding-left: 15px;\n}\n.search-wrapper .bk-search .input-wrapper .search-result > li:hover {\n\tbackground: #ebf4ff;\n\tcursor: pointer;\n}\n.search-wrapper .bk-search .title{\n\tfont-size: 16px;\n\tmargin-right: 20px;\n}\n.search-wrapper .bk-search input {\n\twidth: 496px;\n\theight: 42px;\n\tpadding-left: 15px;\n}\n.search-wrapper .bk-search .btn-select {\n    position: relative;\n    top: -1px;\n\tdisplay: inline-block;\n\theight: 42px;\n\twidth: 44px;\n\tfont-size: 0;\n\tmargin-left: -5px;\n\tcursor: pointer;\n\tvertical-align: middle;\n\tbackground: #4399fc;\n\tborder-radius: 2px;\n}\n.search-wrapper .bk-search .btn-select .icon-angle-down {\n\tposition: absolute;\n\tleft: 14px;\n\ttop: 12px;\n\tfont-size: 16px;\n\tcolor: #fbfdff;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/js/search.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nfunction screenWidth () {\n    var lWidth = window.innerWidth;\n    var contentMain = document.querySelector('#js_container_box');\n    contentMain.style.display = '';\n}\n\nvar vue = new Vue({\n    el: '#newVue',\n    data: function() {\n        return {\n            searchText: '',\n            searchResult: [],\n            allModule: [],\n            descriptionUrl: UrlMaker.make('index'),\n            showSearchDom: true,\n            fiexd: false\n        };\n    },\n    created: function() {\n        var self = this;\n        window.screenWidth();\n        // 优化DOM渲染顺序\n        this.$nextTick(function() {\n            var textNode = this.$refs.content;\n            var mainContent = document.querySelector('#js_container_box');\n            textNode.style.display = \"\";\n            mainContent.style.display = '';\n            document.addEventListener('click', function() {\n                self.searchResult = [];\n                self.showSearchDom = true;\n            })\n            // 监听滚动条，调整fixe布局\n            window.onscroll = function() {\n                var scrollHeight = document.documentElement.scrollTop;\n                if (scrollHeight === 0) {\n                    self.fiexd = false;\n                    return;\n                }\n                self.fiexd = true;\n            }\n        })\n        this.getAllModule();\n    },\n    methods: {\n        openPrompt: function(e) {\n            if (this.showSearchDom) {\n                this.searchKeyWord(e);\n            } else {\n                this.searchResult = [];\n            }\n            this.showSearchDom = !this.showSearchDom;\n        },\n        selectPrompt: function(obj) {\n            var url = UrlMaker.make('api_doc', {system_name: obj.system_name, api_name: obj.name});\n            this.searchText = obj.name;\n            this.searchResult = [];\n            window.open(url);\n        },\n        searchKeyWord: function(e) {\n            if (!this.searchText && e.keyCode === 8) {\n                return this.searchResult = [];\n            }\n            var self = this;\n            $.ajax({\n                type: 'GET',\n                url: UrlMaker.make('all_api'),\n                dataType: 'json',\n                data: {keyword: this.searchText},\n                success: function(data) {\n                    self.searchResult = data;\n                }\n            });\n        },\n        getAllModule: function() {\n            var self = this;\n            $.ajax({\n                type: 'GET',\n                url: UrlMaker.make('system_doc_category'),\n                dataType: 'json',\n                success: function(data) {\n                    var result = [];\n                    for(var i = 0, len = data.length; i<len; i += 3){\n                       result.push(data.slice(i,i+3));\n                    }\n                    self.allModule = result;\n                    self.setHeight();\n                }\n            })\n        },\n        setHeight: function() {\n            this.$nextTick(function() {\n                var aCard = document.querySelectorAll('.a-card');\n                for (var i = 0; i < aCard.length; i++) {\n                    var height = aCard[i].offsetHeight;\n                    aCard[i].style.height = height + 'px';\n                }\n            })\n        }\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/js/system_api_docs_info.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// system info render\n\n$(function () {\n    var ContentView = Backbone.View.extend({\n        el: '#system_api_info',\n        feedback_default_template: Handlebars.compile($('#tmpl-feedback-default').html()),\n        feedback_content_template: Handlebars.compile($('#tmpl-feedback-content').html()),\n        events: {\n            'click #system_desc': function () {\n                this.init_desc_content();\n            },\n            'click .sub-menu a': 'render_right_content',\n            'click #question': function () {\n                $(\"#user_feedback\").empty().html(this.feedback_content_template());\n            },\n            'click #cancel': function () {\n                $(\"#user_feedback\").empty().html(this.feedback_default_template());\n            },\n            'click #submit': 'submit_the_advice',\n            'click #ok': 'submit_the_advice',\n        },\n        initialize: function (ev) {\n            this.init_left_nav();\n            this.render_right_content();\n        },\n        init_left_nav: function (ev) {\n            var menu = $('.has_submenu>a').parent(\"li\");\n            var sunMenu = $('.has_submenu>a').next(\"ul\");\n            $(\".navi > li > ul\").slideUp(350);\n            setTimeout(function(){\n                $(\".navi > li\").removeClass(\"open\");\n                sunMenu.slideDown(350);\n                menu.addClass(\"open\");\n            },350);\n            $(\".has_submenu > a\").click(function(e) {\n                var menu = $(this).parent(\"li\");\n                var sunMenu = $(this).next(\"ul\");\n                if (menu.hasClass(\"open\")) {\n                    sunMenu.slideUp(350,function(){\n                        menu.removeClass(\"open\");\n                    });\n                } else {\n                    $(\".navi > li > ul\").slideUp(350);\n                    setTimeout(function(){\n                        $(\".navi > li\").removeClass(\"open\");\n                        sunMenu.slideDown(350);\n                        menu.addClass(\"open\");\n                    },350);\n                }\n                return false;\n            });\n        },\n        render_right_content: function (ev) {\n            //处理面包屑\n            var name = $('.a-active-style').attr('name');\n            if(name!='desc'){\n                $(\"#curr_breadcrumb\").empty().html(gettext('API列表') + ' > '+name);\n                this.init_doc_content()\n            }else{\n                $(\"#curr_breadcrumb\").empty().html('简介');\n            }\n        },\n        init_doc_content: function (ev) {\n            $.get(docs_content_url, function (data) {\n                $('#api_docs').empty().html(data['doc_html'] || gettext('暂无文档，请联系 API 负责人处理'));\n            });\n            $(\"#user_feedback\").empty().html(this.feedback_default_template());\n        },\n        submit_the_advice: function (ev) {\n            var data = {\n                'api_id': api_id,\n                'system_name': system_name,\n                'component_name': component_name,\n                'content': $('textarea').val()\n            }\n            $.post(submit_url, data, function (data) {\n                if(data['result']){\n                    $(\"#user_feedback\").empty().html(gettext(\"感谢您的反馈！\"));\n                }\n            })\n        }\n    });\n\n    window.content_view = new ContentView();\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/js/system_info.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// system info render\n\n$(function () {\n    var NavView = Backbone.View.extend({\n        el: '#system_api_info',\n        api_list_template: Handlebars.compile($('#tmpl-api-list-content').html()),\n        events: {\n            'click #system_desc': function () {\n                this.init_desc_content();\n            },\n            'click .sub-menu a': 'render_right_content',\n            'click #all_api_info a': 'jump_the_api_docs',\n        },\n        initialize: function (ev) {\n            this.init_left_nav();\n            this.render_right_content();\n        },\n        init_left_nav: function (ev) {\n            var menu = $('.has_submenu>a').parent(\"li\");\n            var sunMenu = $('.has_submenu>a').next(\"ul\");\n            $(\".navi > li > ul\").slideUp(350);\n\n            setTimeout(function(){\n                $(\".navi > li\").removeClass(\"open\");\n                sunMenu.slideDown(350);\n                menu.addClass(\"open\");\n            },350);\n            $(\".has_submenu > a\").click(function(e) {\n                var menu = $(this).parent(\"li\");\n                var sunMenu = $(this).next(\"ul\");\n                if (menu.hasClass(\"open\")) {\n                    sunMenu.slideUp(350,function(){\n                        menu.removeClass(\"open\");\n                    });\n                } else {\n                    $(\".navi > li > ul\").slideUp(350);\n                    setTimeout(function(){\n                        $(\".navi > li\").removeClass(\"open\");\n                        sunMenu.slideDown(350);\n                        menu.addClass(\"open\");\n                    },350);\n                }\n                return false;\n            });\n        },\n        render_right_content: function () {\n            //处理面包屑\n            var name = $('.a-active-style').attr('name');\n            if(name!='desc'){\n                $(\"#curr_breadcrumb\").empty().html(gettext('API列表') + ' > '+name);\n            }else{\n                $(\"#curr_breadcrumb\").empty().html(gettext('简介'));\n                this.init_desc_content();\n            }\n        },\n        init_desc_content: function(ev){\n            var tmpl = this.api_list_template;\n            $.get(desc_content_url,function (data) {\n                $('#right-content').empty().html(tmpl(data));\n            });\n        },\n        jump_the_api_docs: function (ev) {\n            //组装请求路径\n            var api_name = $(ev.currentTarget).attr('name');\n            //url = root_url+api_name+'/';  root_url bug，被修改，没有系统部分\n            url = window.location.pathname +api_name+'/';\n            window.location.href=url;\n        }\n    });\n\n    window.nav_view = new NavView();\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/res/cc/classIcon.json",
    "content": "[\n    {\n        \"value\": \"icon-cc-default-class\"\n    },\n    {\n        \"value\": \"icon-cc-business\"\n    },\n    {\n        \"value\": \"icon-cc-square\"\n    },\n    {\n        \"value\": \"icon-cc-free-pool\"\n    },\n    {\n        \"value\": \"icon-cc-networks\"\n    },\n    {\n        \"value\": \"icon-cc-record\"\n    },\n    {\n        \"value\": \"icon-cc-security\"\n    },\n    {\n        \"value\": \"icon-cc-other\"\n    },\n    {\n        \"value\": \"icon-cc-database\"\n    },\n    {\n        \"value\": \"icon-cc-network-equipment2\"\n    },\n    {\n        \"value\": \"icon-cc-virtual\"\n    },\n    {\n        \"value\": \"icon-cc-hardware\"\n    },\n    {\n        \"value\": \"icon-cc-middleware\"\n    },\n    {\n        \"value\": \"icon-cc-resources\"\n    },\n    {\n        \"value\": \"icon-cc-organization\"\n    }\n]"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/api_docs/res/cc/modleIcon.json",
    "content": "[\n    {\n        \"value\": \"icon-cc-business\"\n    },\n    {\n        \"value\": \"icon-cc-square\"\n    },\n    {\n        \"value\": \"icon-cc-ip\"\n    },\n    {\n        \"value\": \"icon-cc-security\"\n    },\n    {\n        \"value\": \"icon-cc-pie-chart\"\n    },\n    {\n        \"value\": \"icon-cc-icon-city\"\n    },\n    {\n        \"value\": \"icon-cc-storage\"\n    },\n    {\n        \"value\": \"icon-cc-switch\"\n    },\n    {\n        \"value\": \"icon-cc-senior\"\n    },\n    {\n        \"value\": \"icon-cc-compact\"\n    },\n    {\n        \"value\": \"icon-cc-backstage\"\n    },\n    {\n        \"value\": \"icon-cc-engine-room\"\n    },\n    {\n        \"value\": \"icon-cc-cabinet\"\n    },\n    {\n        \"value\": \"icon-cc-curve\"\n    },\n    {\n        \"value\": \"icon-cc-module\"\n    },\n    {\n        \"value\": \"icon-cc-model\"\n    },\n    {\n        \"value\": \"icon-cc-equipment\"\n    },\n    {\n        \"value\": \"icon-cc-lock\"\n    },\n    {\n        \"value\": \"icon-cc-networks\"\n    },\n    {\n        \"value\": \"icon-cc-net-port\"\n    },\n    {\n        \"value\": \"icon-cc-network-equipment\"\n    },\n    {\n        \"value\": \"icon-cc-information\"\n    },\n    {\n        \"value\": \"icon-cc-triangle\"\n    },\n    {\n        \"value\": \"icon-cc-columnar\"\n    },\n    {\n        \"value\": \"icon-cc-subnet\"\n    },\n    {\n        \"value\": \"icon-cc-host\"\n    },\n    {\n        \"value\": \"icon-cc-subnet\"\n    },\n    {\n        \"value\": \"icon-cc-process\"\n    },\n    {\n        \"value\": \"icon-cc-set\"\n    },\n    {\n        \"value\": \"icon-cc-activeMQ\"\n    },\n    {\n        \"value\": \"icon-cc-android\"\n    },\n    {\n        \"value\": \"icon-cc-apache\"\n    },\n    {\n        \"value\": \"icon-cc-apple\"\n    },\n    {\n        \"value\": \"icon-cc-balance\"\n    },\n    {\n        \"value\": \"icon-cc-biz\"\n    },\n    {\n        \"value\": \"icon-cc-branch-company\"\n    },\n    {\n        \"value\": \"icon-cc-branch-shop\"\n    },\n    {\n        \"value\": \"icon-cc-camera\"\n    },\n    {\n        \"value\": \"icon-cc-certificate\"\n    },\n    {\n        \"value\": \"icon-cc-classroom\"\n    },\n    {\n        \"value\": \"icon-cc-company\"\n    },\n    {\n        \"value\": \"icon-cc-cpu\"\n    },\n    {\n        \"value\": \"icon-cc-db2\"\n    },\n    {\n        \"value\": \"icon-cc-default\"\n    },\n    {\n        \"value\": \"icon-cc-department\"\n    },\n    {\n        \"value\": \"icon-cc-directory\"\n    },\n    {\n        \"value\": \"icon-cc-disk\"\n    },\n    {\n        \"value\": \"icon-cc-domain\"\n    },\n    {\n        \"value\": \"icon-cc-elastic-search\"\n    },\n    {\n        \"value\": \"icon-cc-factory\"\n    },\n    {\n        \"value\": \"icon-cc-firewall\"\n    },\n    {\n        \"value\": \"icon-cc-group\"\n    },\n    {\n        \"value\": \"icon-cc-headoffice\"\n    },\n    {\n        \"value\": \"icon-cc-idc\"\n    },\n    {\n        \"value\": \"icon-cc-iis\"\n    },\n    {\n        \"value\": \"icon-cc-influxdb\"\n    },\n    {\n        \"value\": \"icon-cc-International\"\n    },\n    {\n        \"value\": \"icon-cc-ip2\"\n    },\n    {\n        \"value\": \"icon-cc-kafka\"\n    },\n    {\n        \"value\": \"icon-cc-linux\"\n    },\n    {\n        \"value\": \"icon-cc-log\"\n    },\n    {\n        \"value\": \"icon-cc-machine\"\n    },\n    {\n        \"value\": \"icon-cc-mail-server\"\n    },\n    {\n        \"value\": \"icon-cc-mainboard\"\n    },\n    {\n        \"value\": \"icon-cc-map\"\n    },\n    {\n        \"value\": \"icon-cc-market\"\n    },\n    {\n        \"value\": \"icon-cc-memory\"\n    },\n    {\n        \"value\": \"icon-cc-minicomputer\"\n    },\n    {\n        \"value\": \"icon-cc-model2\"\n    },\n    {\n        \"value\": \"icon-cc-mongodb\"\n    },\n    {\n        \"value\": \"icon-cc-mysql\"\n    },\n    {\n        \"value\": \"icon-cc-network-card\"\n    },\n    {\n        \"value\": \"icon-cc-network-manage\"\n    },\n    {\n        \"value\": \"icon-cc-network-segment\"\n    },\n    {\n        \"value\": \"icon-cc-nginx\"\n    },\n    {\n        \"value\": \"icon-cc-operator\"\n    },\n    {\n        \"value\": \"icon-cc-oracle\"\n    },\n    {\n        \"value\": \"icon-cc-port\"\n    },\n    {\n        \"value\": \"icon-cc-postgresql\"\n    },\n    {\n        \"value\": \"icon-cc-printer\"\n    },\n    {\n        \"value\": \"icon-cc-process2\"\n    },\n    {\n        \"value\": \"icon-cc-program\"\n    },\n    {\n        \"value\": \"icon-cc-project\"\n    },\n    {\n        \"value\": \"icon-cc-redis\"\n    },\n    {\n        \"value\": \"icon-cc-repeater\"\n    },\n    {\n        \"value\": \"icon-cc-router\"\n    },\n    {\n        \"value\": \"icon-cc-server\"\n    },\n    {\n        \"value\": \"icon-cc-service\"\n    },\n    {\n        \"value\": \"icon-cc-set2\"\n    },\n    {\n        \"value\": \"icon-cc-sql-server\"\n    },\n    {\n        \"value\": \"icon-cc-sqlite\"\n    },\n    {\n        \"value\": \"icon-cc-storage2\"\n    },\n    {\n        \"value\": \"icon-cc-switch2\"\n    },\n    {\n        \"value\": \"icon-cc-tomcat\"\n    },\n    {\n        \"value\": \"icon-cc-unix\"\n    },\n    {\n        \"value\": \"icon-cc-ups\"\n    },\n    {\n        \"value\": \"icon-cc-vmware\"\n    },\n    {\n        \"value\": \"icon-cc-vsphere\"\n    },\n    {\n        \"value\": \"icon-cc-win\"\n    },\n    {\n        \"value\": \"icon-cc-weblogic\"\n    }\n]"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/backbone-1.3.3-min.js",
    "content": "(function(t){var e=typeof self==\"object\"&&self.self===self&&self||typeof global==\"object\"&&global.global===global&&global;if(typeof define===\"function\"&&define.amd){define([\"underscore\",\"jquery\",\"exports\"],function(i,r,n){e.Backbone=t(e,n,i,r)})}else if(typeof exports!==\"undefined\"){var i=require(\"underscore\"),r;try{r=require(\"jquery\")}catch(n){}t(e,exports,i,r)}else{e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}})(function(t,e,i,r){var n=t.Backbone;var s=Array.prototype.slice;e.VERSION=\"1.3.3\";e.$=r;e.noConflict=function(){t.Backbone=n;return this};e.emulateHTTP=false;e.emulateJSON=false;var a=function(t,e,r){switch(t){case 1:return function(){return i[e](this[r])};case 2:return function(t){return i[e](this[r],t)};case 3:return function(t,n){return i[e](this[r],o(t,this),n)};case 4:return function(t,n,s){return i[e](this[r],o(t,this),n,s)};default:return function(){var t=s.call(arguments);t.unshift(this[r]);return i[e].apply(i,t)}}};var h=function(t,e,r){i.each(e,function(e,n){if(i[n])t.prototype[n]=a(e,n,r)})};var o=function(t,e){if(i.isFunction(t))return t;if(i.isObject(t)&&!e._isModel(t))return l(t);if(i.isString(t))return function(e){return e.get(t)};return t};var l=function(t){var e=i.matches(t);return function(t){return e(t.attributes)}};var u=e.Events={};var c=/\\s+/;var f=function(t,e,r,n,s){var a=0,h;if(r&&typeof r===\"object\"){if(n!==void 0&&\"context\"in s&&s.context===void 0)s.context=n;for(h=i.keys(r);a<h.length;a++){e=f(t,e,h[a],r[h[a]],s)}}else if(r&&c.test(r)){for(h=r.split(c);a<h.length;a++){e=t(e,h[a],n,s)}}else{e=t(e,r,n,s)}return e};u.on=function(t,e,i){return d(this,t,e,i)};var d=function(t,e,i,r,n){t._events=f(v,t._events||{},e,i,{context:r,ctx:t,listening:n});if(n){var s=t._listeners||(t._listeners={});s[n.id]=n}return t};u.listenTo=function(t,e,r){if(!t)return this;var n=t._listenId||(t._listenId=i.uniqueId(\"l\"));var s=this._listeningTo||(this._listeningTo={});var a=s[n];if(!a){var h=this._listenId||(this._listenId=i.uniqueId(\"l\"));a=s[n]={obj:t,objId:n,id:h,listeningTo:s,count:0}}d(t,e,r,this,a);return this};var v=function(t,e,i,r){if(i){var n=t[e]||(t[e]=[]);var s=r.context,a=r.ctx,h=r.listening;if(h)h.count++;n.push({callback:i,context:s,ctx:s||a,listening:h})}return t};u.off=function(t,e,i){if(!this._events)return this;this._events=f(g,this._events,t,e,{context:i,listeners:this._listeners});return this};u.stopListening=function(t,e,r){var n=this._listeningTo;if(!n)return this;var s=t?[t._listenId]:i.keys(n);for(var a=0;a<s.length;a++){var h=n[s[a]];if(!h)break;h.obj.off(e,r,this)}return this};var g=function(t,e,r,n){if(!t)return;var s=0,a;var h=n.context,o=n.listeners;if(!e&&!r&&!h){var l=i.keys(o);for(;s<l.length;s++){a=o[l[s]];delete o[a.id];delete a.listeningTo[a.objId]}return}var u=e?[e]:i.keys(t);for(;s<u.length;s++){e=u[s];var c=t[e];if(!c)break;var f=[];for(var d=0;d<c.length;d++){var v=c[d];if(r&&r!==v.callback&&r!==v.callback._callback||h&&h!==v.context){f.push(v)}else{a=v.listening;if(a&&--a.count===0){delete o[a.id];delete a.listeningTo[a.objId]}}}if(f.length){t[e]=f}else{delete t[e]}}return t};u.once=function(t,e,r){var n=f(p,{},t,e,i.bind(this.off,this));if(typeof t===\"string\"&&r==null)e=void 0;return this.on(n,e,r)};u.listenToOnce=function(t,e,r){var n=f(p,{},e,r,i.bind(this.stopListening,this,t));return this.listenTo(t,n)};var p=function(t,e,r,n){if(r){var s=t[e]=i.once(function(){n(e,s);r.apply(this,arguments)});s._callback=r}return t};u.trigger=function(t){if(!this._events)return this;var e=Math.max(0,arguments.length-1);var i=Array(e);for(var r=0;r<e;r++)i[r]=arguments[r+1];f(m,this._events,t,void 0,i);return this};var m=function(t,e,i,r){if(t){var n=t[e];var s=t.all;if(n&&s)s=s.slice();if(n)_(n,r);if(s)_(s,[e].concat(r))}return t};var _=function(t,e){var i,r=-1,n=t.length,s=e[0],a=e[1],h=e[2];switch(e.length){case 0:while(++r<n)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<n)(i=t[r]).callback.call(i.ctx,s);return;case 2:while(++r<n)(i=t[r]).callback.call(i.ctx,s,a);return;case 3:while(++r<n)(i=t[r]).callback.call(i.ctx,s,a,h);return;default:while(++r<n)(i=t[r]).callback.apply(i.ctx,e);return}};u.bind=u.on;u.unbind=u.off;i.extend(e,u);var y=e.Model=function(t,e){var r=t||{};e||(e={});this.cid=i.uniqueId(this.cidPrefix);this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};var n=i.result(this,\"defaults\");r=i.defaults(i.extend({},n,r),n);this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(y.prototype,u,{changed:null,validationError:null,idAttribute:\"id\",cidPrefix:\"c\",initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},matches:function(t){return!!i.iteratee(t,this)(this.attributes)},set:function(t,e,r){if(t==null)return this;var n;if(typeof t===\"object\"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))return false;var s=r.unset;var a=r.silent;var h=[];var o=this._changing;this._changing=true;if(!o){this._previousAttributes=i.clone(this.attributes);this.changed={}}var l=this.attributes;var u=this.changed;var c=this._previousAttributes;for(var f in n){e=n[f];if(!i.isEqual(l[f],e))h.push(f);if(!i.isEqual(c[f],e)){u[f]=e}else{delete u[f]}s?delete l[f]:l[f]=e}if(this.idAttribute in n)this.id=this.get(this.idAttribute);if(!a){if(h.length)this._pending=r;for(var d=0;d<h.length;d++){this.trigger(\"change:\"+h[d],this,l[h[d]],r)}}if(o)return this;if(!a){while(this._pending){r=this._pending;this._pending=false;this.trigger(\"change\",this,r)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e=this._changing?this._previousAttributes:this.attributes;var r={};for(var n in t){var s=t[n];if(i.isEqual(e[n],s))continue;r[n]=s}return i.size(r)?r:false},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=i.extend({parse:true},t);var e=this;var r=t.success;t.success=function(i){var n=t.parse?e.parse(i,t):i;if(!e.set(n,t))return false;if(r)r.call(t.context,e,i,t);e.trigger(\"sync\",e,i,t)};B(this,t);return this.sync(\"read\",this,t)},save:function(t,e,r){var n;if(t==null||typeof t===\"object\"){n=t;r=e}else{(n={})[t]=e}r=i.extend({validate:true,parse:true},r);var s=r.wait;if(n&&!s){if(!this.set(n,r))return false}else if(!this._validate(n,r)){return false}var a=this;var h=r.success;var o=this.attributes;r.success=function(t){a.attributes=o;var e=r.parse?a.parse(t,r):t;if(s)e=i.extend({},n,e);if(e&&!a.set(e,r))return false;if(h)h.call(r.context,a,t,r);a.trigger(\"sync\",a,t,r)};B(this,r);if(n&&s)this.attributes=i.extend({},o,n);var l=this.isNew()?\"create\":r.patch?\"patch\":\"update\";if(l===\"patch\"&&!r.attrs)r.attrs=n;var u=this.sync(l,this,r);this.attributes=o;return u},destroy:function(t){t=t?i.clone(t):{};var e=this;var r=t.success;var n=t.wait;var s=function(){e.stopListening();e.trigger(\"destroy\",e,e.collection,t)};t.success=function(i){if(n)s();if(r)r.call(t.context,e,i,t);if(!e.isNew())e.trigger(\"sync\",e,i,t)};var a=false;if(this.isNew()){i.defer(t.success)}else{B(this,t);a=this.sync(\"delete\",this,t)}if(!n)s();return a},url:function(){var t=i.result(this,\"urlRoot\")||i.result(this.collection,\"url\")||F();if(this.isNew())return t;var e=this.get(this.idAttribute);return t.replace(/[^\\/]$/,\"$&/\")+encodeURIComponent(e)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend({},t,{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;if(!r)return true;this.trigger(\"invalid\",this,r,i.extend(e,{validationError:r}));return false}});var b={keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1};h(y,b,\"attributes\");var x=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var w={add:true,remove:true,merge:true};var E={add:true,remove:false};var I=function(t,e,i){i=Math.min(Math.max(i,0),t.length);var r=Array(t.length-i);var n=e.length;var s;for(s=0;s<r.length;s++)r[s]=t[s+i];for(s=0;s<n;s++)t[s+i]=e[s];for(s=0;s<r.length;s++)t[s+n+i]=r[s]};i.extend(x.prototype,u,{model:y,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,E))},remove:function(t,e){e=i.extend({},e);var r=!i.isArray(t);t=r?[t]:t.slice();var n=this._removeModels(t,e);if(!e.silent&&n.length){e.changes={added:[],merged:[],removed:n};this.trigger(\"update\",this,e)}return r?n[0]:n},set:function(t,e){if(t==null)return;e=i.extend({},w,e);if(e.parse&&!this._isModel(t)){t=this.parse(t,e)||[]}var r=!i.isArray(t);t=r?[t]:t.slice();var n=e.at;if(n!=null)n=+n;if(n>this.length)n=this.length;if(n<0)n+=this.length+1;var s=[];var a=[];var h=[];var o=[];var l={};var u=e.add;var c=e.merge;var f=e.remove;var d=false;var v=this.comparator&&n==null&&e.sort!==false;var g=i.isString(this.comparator)?this.comparator:null;var p,m;for(m=0;m<t.length;m++){p=t[m];var _=this.get(p);if(_){if(c&&p!==_){var y=this._isModel(p)?p.attributes:p;if(e.parse)y=_.parse(y,e);_.set(y,e);h.push(_);if(v&&!d)d=_.hasChanged(g)}if(!l[_.cid]){l[_.cid]=true;s.push(_)}t[m]=_}else if(u){p=t[m]=this._prepareModel(p,e);if(p){a.push(p);this._addReference(p,e);l[p.cid]=true;s.push(p)}}}if(f){for(m=0;m<this.length;m++){p=this.models[m];if(!l[p.cid])o.push(p)}if(o.length)this._removeModels(o,e)}var b=false;var x=!v&&u&&f;if(s.length&&x){b=this.length!==s.length||i.some(this.models,function(t,e){return t!==s[e]});this.models.length=0;I(this.models,s,0);this.length=this.models.length}else if(a.length){if(v)d=true;I(this.models,a,n==null?this.length:n);this.length=this.models.length}if(d)this.sort({silent:true});if(!e.silent){for(m=0;m<a.length;m++){if(n!=null)e.index=n+m;p=a[m];p.trigger(\"add\",p,this,e)}if(d||b)this.trigger(\"sort\",this,e);if(a.length||o.length||h.length){e.changes={added:a,removed:o,merged:h};this.trigger(\"update\",this,e)}}return r?t[0]:t},reset:function(t,e){e=e?i.clone(e):{};for(var r=0;r<this.models.length;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger(\"reset\",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);return this.remove(e,t)},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);return this.remove(e,t)},slice:function(){return s.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[this.modelId(t.attributes||t)]||t.cid&&this._byId[t.cid]},has:function(t){return this.get(t)!=null},at:function(t){if(t<0)t+=this.length;return this.models[t]},where:function(t,e){return this[e?\"find\":\"filter\"](t)},findWhere:function(t){return this.where(t,true)},sort:function(t){var e=this.comparator;if(!e)throw new Error(\"Cannot sort a set without a comparator\");t||(t={});var r=e.length;if(i.isFunction(e))e=i.bind(e,this);if(r===1||i.isString(e)){this.models=this.sortBy(e)}else{this.models.sort(e)}if(!t.silent)this.trigger(\"sort\",this,t);return this},pluck:function(t){return this.map(t+\"\")},fetch:function(t){t=i.extend({parse:true},t);var e=t.success;var r=this;t.success=function(i){var n=t.reset?\"reset\":\"set\";r[n](i,t);if(e)e.call(t.context,r,i,t);r.trigger(\"sync\",r,i,t)};B(this,t);return this.sync(\"read\",this,t)},create:function(t,e){e=e?i.clone(e):{};var r=e.wait;t=this._prepareModel(t,e);if(!t)return false;if(!r)this.add(t,e);var n=this;var s=e.success;e.success=function(t,e,i){if(r)n.add(t,i);if(s)s.call(i.context,t,e,i)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(t){return t[this.model.prototype.idAttribute||\"id\"]},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(this._isModel(t)){if(!t.collection)t.collection=this;return t}e=e?i.clone(e):{};e.collection=this;var r=new this.model(t,e);if(!r.validationError)return r;this.trigger(\"invalid\",this,r.validationError,e);return false},_removeModels:function(t,e){var i=[];for(var r=0;r<t.length;r++){var n=this.get(t[r]);if(!n)continue;var s=this.indexOf(n);this.models.splice(s,1);this.length--;delete this._byId[n.cid];var a=this.modelId(n.attributes);if(a!=null)delete this._byId[a];if(!e.silent){e.index=s;n.trigger(\"remove\",n,this,e)}i.push(n);this._removeReference(n,e)}return i},_isModel:function(t){return t instanceof y},_addReference:function(t,e){this._byId[t.cid]=t;var i=this.modelId(t.attributes);if(i!=null)this._byId[i]=t;t.on(\"all\",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var i=this.modelId(t.attributes);if(i!=null)delete this._byId[i];if(this===t.collection)delete t.collection;t.off(\"all\",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if(e){if((t===\"add\"||t===\"remove\")&&i!==this)return;if(t===\"destroy\")this.remove(e,r);if(t===\"change\"){var n=this.modelId(e.previousAttributes());var s=this.modelId(e.attributes);if(n!==s){if(n!=null)delete this._byId[n];if(s!=null)this._byId[s]=e}}}this.trigger.apply(this,arguments)}});var S={forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3};h(x,S,\"models\");var k=e.View=function(t){this.cid=i.uniqueId(\"view\");i.extend(this,i.pick(t,P));this._ensureElement();this.initialize.apply(this,arguments)};var T=/^(\\S+)\\s*(.*)$/;var P=[\"model\",\"collection\",\"el\",\"id\",\"attributes\",\"className\",\"tagName\",\"events\"];i.extend(k.prototype,u,{tagName:\"div\",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this._removeElement();this.stopListening();return this},_removeElement:function(){this.$el.remove()},setElement:function(t){this.undelegateEvents();this._setElement(t);this.delegateEvents();return this},_setElement:function(t){this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0]},delegateEvents:function(t){t||(t=i.result(this,\"events\"));if(!t)return this;this.undelegateEvents();for(var e in t){var r=t[e];if(!i.isFunction(r))r=this[r];if(!r)continue;var n=e.match(T);this.delegate(n[1],n[2],i.bind(r,this))}return this},delegate:function(t,e,i){this.$el.on(t+\".delegateEvents\"+this.cid,e,i);return this},undelegateEvents:function(){if(this.$el)this.$el.off(\".delegateEvents\"+this.cid);return this},undelegate:function(t,e,i){this.$el.off(t+\".delegateEvents\"+this.cid,e,i);return this},_createElement:function(t){return document.createElement(t)},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,\"attributes\"));if(this.id)t.id=i.result(this,\"id\");if(this.className)t[\"class\"]=i.result(this,\"className\");this.setElement(this._createElement(i.result(this,\"tagName\")));this._setAttributes(t)}else{this.setElement(i.result(this,\"el\"))}},_setAttributes:function(t){this.$el.attr(t)}});e.sync=function(t,r,n){var s=H[t];i.defaults(n||(n={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:s,dataType:\"json\"};if(!n.url){a.url=i.result(r,\"url\")||F()}if(n.data==null&&r&&(t===\"create\"||t===\"update\"||t===\"patch\")){a.contentType=\"application/json\";a.data=JSON.stringify(n.attrs||r.toJSON(n))}if(n.emulateJSON){a.contentType=\"application/x-www-form-urlencoded\";a.data=a.data?{model:a.data}:{}}if(n.emulateHTTP&&(s===\"PUT\"||s===\"DELETE\"||s===\"PATCH\")){a.type=\"POST\";if(n.emulateJSON)a.data._method=s;var h=n.beforeSend;n.beforeSend=function(t){t.setRequestHeader(\"X-HTTP-Method-Override\",s);if(h)return h.apply(this,arguments)}}if(a.type!==\"GET\"&&!n.emulateJSON){a.processData=false}var o=n.error;n.error=function(t,e,i){n.textStatus=e;n.errorThrown=i;if(o)o.call(n.context,t,e,i)};var l=n.xhr=e.ajax(i.extend(a,n));r.trigger(\"request\",r,l,n);return l};var H={create:\"POST\",update:\"PUT\",patch:\"PATCH\",\"delete\":\"DELETE\",read:\"GET\"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var A=/\\((.*?)\\)/g;var C=/(\\(\\?)?:\\w+/g;var R=/\\*\\w+/g;var j=/[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,n){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){n=r;r=\"\"}if(!n)n=this[r];var s=this;e.history.route(t,function(i){var a=s._extractParameters(t,i);if(s.execute(n,a,r)!==false){s.trigger.apply(s,[\"route:\"+r].concat(a));s.trigger(\"route\",r,a);e.history.trigger(\"route\",s,r,a)}});return this},execute:function(t,e,i){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,\"routes\");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(j,\"\\\\$&\").replace(A,\"(?:$1)?\").replace(C,function(t,e){return e?t:\"([^/?]+)\"}).replace(R,\"([^?]*?)\");return new RegExp(\"^\"+t+\"(?:\\\\?([\\\\s\\\\S]*))?$\")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];this.checkUrl=i.bind(this.checkUrl,this);if(typeof window!==\"undefined\"){this.location=window.location;this.history=window.history}};var M=/^[#\\/]|\\s+$/g;var O=/^\\/+|\\/+$/g;var U=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){var t=this.location.pathname.replace(/[^\\/]$/,\"$&/\");return t===this.root&&!this.getSearch()},matchRoot:function(){var t=this.decodeFragment(this.location.pathname);var e=t.slice(0,this.root.length-1)+\"/\";return e===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,\"%2525\"))},getSearch:function(){var t=this.location.href.replace(/#.*/,\"\").match(/\\?.+/);return t?t[0]:\"\"},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:\"\"},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return t.charAt(0)===\"/\"?t.slice(1):t},getFragment:function(t){if(t==null){if(this._usePushState||!this._wantsHashChange){t=this.getPath()}else{t=this.getHash()}}return t.replace(M,\"\")},start:function(t){if(N.started)throw new Error(\"Backbone.history has already been started\");N.started=true;this.options=i.extend({root:\"/\"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._hasHashChange=\"onhashchange\"in window&&(document.documentMode===void 0||document.documentMode>7);this._useHashChange=this._wantsHashChange&&this._hasHashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.history&&this.history.pushState);this._usePushState=this._wantsPushState&&this._hasPushState;this.fragment=this.getFragment();this.root=(\"/\"+this.root+\"/\").replace(O,\"/\");if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||\"/\";this.location.replace(e+\"#\"+this.getPath());return true}else if(this._hasPushState&&this.atRoot()){this.navigate(this.getHash(),{replace:true})}}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement(\"iframe\");this.iframe.src=\"javascript:0\";this.iframe.style.display=\"none\";this.iframe.tabIndex=-1;var r=document.body;var n=r.insertBefore(this.iframe,r.firstChild).contentWindow;n.document.open();n.document.close();n.location.hash=\"#\"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent(\"on\"+t,e)};if(this._usePushState){s(\"popstate\",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){s(\"hashchange\",this.checkUrl,false)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}if(!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent(\"on\"+t,e)};if(this._usePushState){t(\"popstate\",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){t(\"hashchange\",this.checkUrl,false)}if(this.iframe){document.body.removeChild(this.iframe);this.iframe=null}if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getHash(this.iframe.contentWindow)}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){if(!this.matchRoot())return false;t=this.fragment=this.getFragment(t);return i.some(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};t=this.getFragment(t||\"\");var i=this.root;if(t===\"\"||t.charAt(0)===\"?\"){i=i.slice(0,-1)||\"/\"}var r=i+t;t=this.decodeFragment(t.replace(U,\"\"));if(this.fragment===t)return;this.fragment=t;if(this._usePushState){this.history[e.replace?\"replaceState\":\"pushState\"]({},document.title,r)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var n=this.iframe.contentWindow;if(!e.replace){n.document.open();n.document.close()}this._updateHash(n.location,t,e.replace)}}else{return this.location.assign(r)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,\"\");t.replace(r+\"#\"+e)}else{t.hash=\"#\"+e}}});e.history=new N;var q=function(t,e){var r=this;var n;if(t&&i.has(t,\"constructor\")){n=t.constructor}else{n=function(){return r.apply(this,arguments)}}i.extend(n,r,e);n.prototype=i.create(r.prototype,t);n.prototype.constructor=n;n.__super__=r.prototype;return n};y.extend=x.extend=$.extend=k.extend=N.extend=q;var F=function(){throw new Error('A \"url\" property or function must be specified')};var B=function(t,e){var i=e.error;e.error=function(r){if(i)i.call(e.context,t,r,e);t.trigger(\"error\",t,r,e)}};return e});\n//# sourceMappingURL=backbone-min.map"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/bkDialog-1.0/css/ui-dialog.css",
    "content": ".bk-dialog-box{\r\n\tposition: absolute;\r\n    z-index: 10240;\r\n    background: #fff;\r\n    border: 1px solid #ddd;\r\n    outline: 0;\r\n    background-clip: padding-box;\r\n    font-size: 14px;\r\n    color: #333;\r\n    left: 50%;\r\n    top: 50%;\r\n    transform: translate(-50%, -50%);\r\n}\r\n.bk-dialog-mask{\r\n\topacity: 0; \r\n\tbackground: rgb(0, 0, 0); \r\n\tposition: fixed; \r\n\tleft: 0px; \r\n\ttop: 0px; \r\n\twidth: 100%; \r\n\theight: 100%; \r\n\toverflow: hidden; \r\n\tuser-select: none; \r\n\tz-index: 1024;\r\n\tdisplay: none;\r\n}\r\n.bk-dialog-header{\r\n    border: 0 none;\r\n    text-align: left;\r\n    background: #f8f8f8;\r\n    height: 40px;\r\n    line-height: 40px;\r\n    padding: 0 18px;\r\n    border-bottom: 1px solid #E5E5E5;\r\n}\r\n.bk-dialog-close{\r\n\tposition: relative;\r\n    float: right;\r\n    top: 7px;\r\n    right: 0;\r\n    padding: 0 4px;\r\n    font-size: 21px;\r\n    font-weight: bold;\r\n    line-height: 1;\r\n    color: #000;\r\n    opacity: .7;\r\n    filter: alpha(opacity=70);\r\n    cursor: pointer;\r\n    background: transparent;\r\n    border: 0;\r\n}\r\n.bk-dialog-title{\r\n\tmargin: 0;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    text-overflow: ellipsis;\r\n    font-weight: bold;\r\n    cursor: default;\r\n    font-size: 12px;\r\n}\r\n.bk-dialog-content{\r\n\ttext-align: left;\r\n    padding: 20px;\r\n    min-width: 200px;\r\n}\r\n.bk-dialog-btn{\r\n\tfont-size: 12px;\r\n\twidth: auto;\r\n    overflow: visible;\r\n    display: inline-block;\r\n    margin-bottom: 0;\r\n    font-size: 12px;\r\n    font-weight: normal;\r\n    line-height: 18px;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    vertical-align: middle;\r\n    cursor: pointer;\r\n    background-image: none;\r\n    border: 1px solid transparent;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    -o-user-select: none;\r\n    user-select: none;\r\n    min-width: 50px;\r\n}\r\n.bk-dialog-ok{\r\n\tcolor: #ffffff;\r\n    background-color: #4A9BFF;\r\n    border-color: #2180F5;\r\n}\r\n.bk-dialog-cancel{\r\n\tcolor: #333333;\r\n    background-color: #ffffff;\r\n    border-color: #cccccc;\r\n}\r\n.bk-dialog-footer{\r\n\tpadding: 0 20px 20px 20px;\r\n\ttext-align: right;\r\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/bkDialog-1.0/js/dialog.js",
    "content": "(function(){\n    function isString(str){\n        return (typeof str=='string') && str.constructor == String;\n    }\n    function dialog(options){\n        var defaultOptions = {\n            id: '',\n            width: 'auto',\n            title: '',\n            lock: false,\n            fixed: false,\n            zIndex: 1024,\n            quickClose: false,\n            content: '',\n            okValue: '确定',\n            ok: null,\n            cancelValue: '取消',\n            cancel: null,\n            onshow: null,\n            onclose: null\n        };\n        var prev, next, parent, width, height, display, contentDom;\n        var dialogOptions = $.extend({}, defaultOptions, options);\n        var dialogNode = null;\n\n        function _init(){\n\n            var _html = [\n                        '<div class=\"bk-dialog\" style=\"display:none;\" id=\"'+ dialogOptions.id +'\">',\n                        '<div class=\"bk-dialog-mask\"></div>',\n                        '<div class=\"bk-dialog-box\" style=\"width:'+ dialogOptions.width +'px; z-index:'+ dialogOptions.zIndex +'; \">',\n                        '    <div class=\"bk-dialog-header\">',\n                        '        <strong class=\"bk-dialog-title\">'+ dialogOptions.title +'</strong>',\n                        '        <button class=\"bk-dialog-close\">×</button>',\n                        '    </div>',\n                        '    <div class=\"bk-dialog-content\"></div>',\n                        '    <div class=\"bk-dialog-footer\">',\n                        '        <button type=\"button\" class=\"bk-dialog-btn bk-dialog-ok\">'+ dialogOptions.okValue +'</button>',\n                        '        <button type=\"button\" class=\"bk-dialog-btn bk-dialog-cancel\">'+ dialogOptions.cancelValue +'</button>',\n                        '    </div>',\n                        '</div>',\n                        '</div>'\n                        ].join('');\n\n            dialogNode = $(_html);\n            if (dialogOptions.content && isString(dialogOptions.content)){\n                dialogNode.find('.bk-dialog-content').html(dialogOptions.content);\n            }else if(dialogOptions.content.nodeType == 1){\n                contentDom = dialogOptions.content;\n                display = contentDom.style.display;\n                prev = contentDom.previousSibling;\n                next = contentDom.nextSibling;\n                parent = contentDom.parentNode;\n                dialogNode.find('.bk-dialog-content').get(0).appendChild(contentDom);\n                contentDom.style.display = 'block';\n            }else if(dialogOptions.content.get){\n                contentDom = dialogOptions.content.get(0);\n                display = contentDom.style.display;\n                prev = contentDom.previousSibling;\n                next = contentDom.nextSibling;\n                parent = contentDom.parentNode;\n                dialogNode.find('.bk-dialog-content').get(0).appendChild(contentDom);\n                contentDom.style.display = 'block';\n            }\n            if (dialogOptions.id){\n                if ($('#'+dialogOptions.id).length){\n                    $('#'+dialogOptions.id).remove();\n                }\n                dialogNode.attr('id', dialogNode.id);\n            }\n            dialogNode.find('.bk-dialog-close').on('click', function(){\n                _remove();\n            });\n\n            dialogNode.find('.bk-dialog-ok').on('click', function(){\n                if (dialogOptions.ok){\n                    if (dialogOptions.ok() === false){\n                    }else{\n                        _remove();\n                    }\n                }else{\n                    _remove();\n                }\n            });\n\n            dialogNode.find('.bk-dialog-cancel').on('click', function(){\n                dialogOptions.cancel && dialogOptions.cancel();\n                _remove();\n            });\n\n            _render();\n            $('body').append(dialogNode);\n        }\n\n        function _render(){\n            if (!dialogOptions.ok){\n                dialogNode.find('.bk-dialog-ok').remove();\n            }\n            if (!dialogOptions.cancel){\n                dialogNode.find('.bk-dialog-cancel').remove();\n            }\n            if (dialogOptions.cancel === false){\n                dialogNode.find('.bk-dialog-close').remove();\n            }\n            if (!dialogOptions.title){\n                dialogNode.find('.bk-dialog-header').remove();\n            }\n            if (!dialogOptions.ok && !dialogOptions.cancel){\n                dialogNode.find('.bk-dialog-footer').remove();\n            }\n            if (dialogOptions.fixed){\n                dialogNode.find('.bk-dialog-box').css({position: 'fixed'});\n            }\n            if (dialogOptions.quickClose){\n                dialogNode.find('.bk-dialog-mask').show();\n                dialogNode.find('.bk-dialog-box').on('click', function(){\n                    return false;\n                });\n                dialogNode.find('.bk-dialog-mask').on('click', function(){\n                    _close();\n                })\n            }\n            if (dialogOptions.lock){\n                _showModal();\n            }else{\n                _show();\n            }\n\n        }\n\n        function _show(){\n            dialogNode.show();\n            dialogOptions.onshow && dialogOptions.onshow();\n        }\n\n        function _showModal(){\n            dialogNode.show();\n            dialogNode.find('.bk-dialog-mask').css('opacity', '0.7').show();\n            dialogNode.find('.bk-dialog-box').css('position', 'fixed');\n            dialogOptions.onshow && dialogOptions.onshow();\n        }\n\n        function _close(){\n            dialogNode.hide();\n            dialogOptions.onclose && dialogOptions.onclose();\n        }\n\n        function _remove(){\n            dialogNode.remove();\n            _elemBack();\n            dialogOptions.onclose && dialogOptions.onclose();\n        }\n\n        function _content(html){\n            dialogNode.find('.bk-dialog-content').html(html);\n        }\n\n        function _title(text){\n            dialogNode.find('.bk-dialog-title').text(text);\n        }\n\n        function _width(width){\n            dialogNode.width(width);\n        }\n\n        function _height(height){\n            dialogNode.height(height);\n        }\n\n        function _elemBack(){\n            if (contentDom){\n                if (prev && prev.parentNode) {\n                    prev.parentNode.insertBefore(contentDom, prev.nextSibling);\n                } else if (next && prev.parentNode) {\n                    next.parentNode.insertBefore(contentDom, next);\n                } else if (parent) {\n                    parent.appendChild(contentDom);\n                };\n                contentDom.style.display = display;\n            }\n        }\n\n        function Dialog(){\n            _init();\n        }\n        Dialog.prototype = {\n            show: function(){\n                _show();\n                return this;\n            },\n            showModal: function(){\n                _showModal();\n                return this;\n            },\n            close: function(){\n                _close();\n                return this;\n            },\n            remove: function(){\n                _remove();\n                return this;\n            },\n            content: function(html){\n                _content(html);\n                return this;\n            },\n            title: function(text){\n                _text(text);\n                return this;\n            },\n            width: function(width){\n                _width(width);\n                return this;\n            },\n            height: function(height){\n                _height(height);\n                return this;\n            },\n            time: function(sec){\n                if (sec){\n                    setTimeout(function(){\n                        _remove();\n                    }, sec * 1000);\n                }\n            }\n        };\n\n        return new Dialog();\n\n    }\n    window.dialog = dialog;\n    var art = {};\n    art.dialog = dialog;\n    window.art = art;\n})();"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/handlebars-3.0.1.js",
    "content": "/*!\n\n handlebars v3.0.1\n\nCopyright (C) 2011-2014 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n@license\n*/\n/* exported Handlebars */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory();\n  } else {\n    root.Handlebars = factory();\n  }\n}(this, function () {\n// handlebars/utils.js\nvar __module3__ = (function() {\n  \"use strict\";\n  var __exports__ = {};\n  /*jshint -W004 */\n  var escape = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#x27;\",\n    \"`\": \"&#x60;\"\n  };\n\n  var badChars = /[&<>\"'`]/g;\n  var possible = /[&<>\"'`]/;\n\n  function escapeChar(chr) {\n    return escape[chr];\n  }\n\n  function extend(obj /* , ...source */) {\n    for (var i = 1; i < arguments.length; i++) {\n      for (var key in arguments[i]) {\n        if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n          obj[key] = arguments[i][key];\n        }\n      }\n    }\n\n    return obj;\n  }\n\n  __exports__.extend = extend;var toString = Object.prototype.toString;\n  __exports__.toString = toString;\n  // Sourced from lodash\n  // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n  var isFunction = function(value) {\n    return typeof value === 'function';\n  };\n  // fallback for older versions of Chrome and Safari\n  /* istanbul ignore next */\n  if (isFunction(/x/)) {\n    isFunction = function(value) {\n      return typeof value === 'function' && toString.call(value) === '[object Function]';\n    };\n  }\n  var isFunction;\n  __exports__.isFunction = isFunction;\n  /* istanbul ignore next */\n  var isArray = Array.isArray || function(value) {\n    return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;\n  };\n  __exports__.isArray = isArray;\n  // Older IE versions do not directly support indexOf so we must implement our own, sadly.\n  function indexOf(array, value) {\n    for (var i = 0, len = array.length; i < len; i++) {\n      if (array[i] === value) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  __exports__.indexOf = indexOf;\n  function escapeExpression(string) {\n    if (typeof string !== 'string') {\n      // don't escape SafeStrings, since they're already safe\n      if (string && string.toHTML) {\n        return string.toHTML();\n      } else if (string == null) {\n        return '';\n      } else if (!string) {\n        return string + '';\n      }\n\n      // Force a string conversion as this will be done by the append regardless and\n      // the regex test will do this transparently behind the scenes, causing issues if\n      // an object's to string has escaped characters in it.\n      string = '' + string;\n    }\n\n    if (!possible.test(string)) { return string; }\n    return string.replace(badChars, escapeChar);\n  }\n\n  __exports__.escapeExpression = escapeExpression;function isEmpty(value) {\n    if (!value && value !== 0) {\n      return true;\n    } else if (isArray(value) && value.length === 0) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  __exports__.isEmpty = isEmpty;function blockParams(params, ids) {\n    params.path = ids;\n    return params;\n  }\n\n  __exports__.blockParams = blockParams;function appendContextPath(contextPath, id) {\n    return (contextPath ? contextPath + '.' : '') + id;\n  }\n\n  __exports__.appendContextPath = appendContextPath;\n  return __exports__;\n})();\n\n// handlebars/exception.js\nvar __module4__ = (function() {\n  \"use strict\";\n  var __exports__;\n\n  var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\n  function Exception(message, node) {\n    var loc = node && node.loc,\n        line,\n        column;\n    if (loc) {\n      line = loc.start.line;\n      column = loc.start.column;\n\n      message += ' - ' + line + ':' + column;\n    }\n\n    var tmp = Error.prototype.constructor.call(this, message);\n\n    // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n    for (var idx = 0; idx < errorProps.length; idx++) {\n      this[errorProps[idx]] = tmp[errorProps[idx]];\n    }\n\n    if (loc) {\n      this.lineNumber = line;\n      this.column = column;\n    }\n  }\n\n  Exception.prototype = new Error();\n\n  __exports__ = Exception;\n  return __exports__;\n})();\n\n// handlebars/base.js\nvar __module2__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Utils = __dependency1__;\n  var Exception = __dependency2__;\n\n  var VERSION = \"3.0.1\";\n  __exports__.VERSION = VERSION;var COMPILER_REVISION = 6;\n  __exports__.COMPILER_REVISION = COMPILER_REVISION;\n  var REVISION_CHANGES = {\n    1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n    2: '== 1.0.0-rc.3',\n    3: '== 1.0.0-rc.4',\n    4: '== 1.x.x',\n    5: '== 2.0.0-alpha.x',\n    6: '>= 2.0.0-beta.1'\n  };\n  __exports__.REVISION_CHANGES = REVISION_CHANGES;\n  var isArray = Utils.isArray,\n      isFunction = Utils.isFunction,\n      toString = Utils.toString,\n      objectType = '[object Object]';\n\n  function HandlebarsEnvironment(helpers, partials) {\n    this.helpers = helpers || {};\n    this.partials = partials || {};\n\n    registerDefaultHelpers(this);\n  }\n\n  __exports__.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n    constructor: HandlebarsEnvironment,\n\n    logger: logger,\n    log: log,\n\n    registerHelper: function(name, fn) {\n      if (toString.call(name) === objectType) {\n        if (fn) { throw new Exception('Arg not supported with multiple helpers'); }\n        Utils.extend(this.helpers, name);\n      } else {\n        this.helpers[name] = fn;\n      }\n    },\n    unregisterHelper: function(name) {\n      delete this.helpers[name];\n    },\n\n    registerPartial: function(name, partial) {\n      if (toString.call(name) === objectType) {\n        Utils.extend(this.partials,  name);\n      } else {\n        if (typeof partial === 'undefined') {\n          throw new Exception('Attempting to register a partial as undefined');\n        }\n        this.partials[name] = partial;\n      }\n    },\n    unregisterPartial: function(name) {\n      delete this.partials[name];\n    }\n  };\n\n  function registerDefaultHelpers(instance) {\n    instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n      if(arguments.length === 1) {\n        // A missing field in a {{foo}} constuct.\n        return undefined;\n      } else {\n        // Someone is actually trying to call something, blow up.\n        throw new Exception(\"Missing helper: '\" + arguments[arguments.length-1].name + \"'\");\n      }\n    });\n\n    instance.registerHelper('blockHelperMissing', function(context, options) {\n      var inverse = options.inverse,\n          fn = options.fn;\n\n      if(context === true) {\n        return fn(this);\n      } else if(context === false || context == null) {\n        return inverse(this);\n      } else if (isArray(context)) {\n        if(context.length > 0) {\n          if (options.ids) {\n            options.ids = [options.name];\n          }\n\n          return instance.helpers.each(context, options);\n        } else {\n          return inverse(this);\n        }\n      } else {\n        if (options.data && options.ids) {\n          var data = createFrame(options.data);\n          data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name);\n          options = {data: data};\n        }\n\n        return fn(context, options);\n      }\n    });\n\n    instance.registerHelper('each', function(context, options) {\n      if (!options) {\n        throw new Exception('Must pass iterator to #each');\n      }\n\n      var fn = options.fn, inverse = options.inverse;\n      var i = 0, ret = \"\", data;\n\n      var contextPath;\n      if (options.data && options.ids) {\n        contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n      }\n\n      if (isFunction(context)) { context = context.call(this); }\n\n      if (options.data) {\n        data = createFrame(options.data);\n      }\n\n      function execIteration(key, i, last) {\n        if (data) {\n          data.key = key;\n          data.index = i;\n          data.first = i === 0;\n          data.last  = !!last;\n\n          if (contextPath) {\n            data.contextPath = contextPath + key;\n          }\n        }\n\n        ret = ret + fn(context[key], {\n          data: data,\n          blockParams: Utils.blockParams([context[key], key], [contextPath + key, null])\n        });\n      }\n\n      if(context && typeof context === 'object') {\n        if (isArray(context)) {\n          for(var j = context.length; i<j; i++) {\n            execIteration(i, i, i === context.length-1);\n          }\n        } else {\n          var priorKey;\n\n          for(var key in context) {\n            if(context.hasOwnProperty(key)) {\n              // We're running the iterations one step out of sync so we can detect\n              // the last iteration without have to scan the object twice and create\n              // an itermediate keys array. \n              if (priorKey) {\n                execIteration(priorKey, i-1);\n              }\n              priorKey = key;\n              i++;\n            }\n          }\n          if (priorKey) {\n            execIteration(priorKey, i-1, true);\n          }\n        }\n      }\n\n      if(i === 0){\n        ret = inverse(this);\n      }\n\n      return ret;\n    });\n\n    instance.registerHelper('if', function(conditional, options) {\n      if (isFunction(conditional)) { conditional = conditional.call(this); }\n\n      // Default behavior is to render the positive path if the value is truthy and not empty.\n      // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n      // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n      if ((!options.hash.includeZero && !conditional) || Utils.isEmpty(conditional)) {\n        return options.inverse(this);\n      } else {\n        return options.fn(this);\n      }\n    });\n\n    instance.registerHelper('unless', function(conditional, options) {\n      return instance.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});\n    });\n\n    instance.registerHelper('with', function(context, options) {\n      if (isFunction(context)) { context = context.call(this); }\n\n      var fn = options.fn;\n\n      if (!Utils.isEmpty(context)) {\n        if (options.data && options.ids) {\n          var data = createFrame(options.data);\n          data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]);\n          options = {data:data};\n        }\n\n        return fn(context, options);\n      } else {\n        return options.inverse(this);\n      }\n    });\n\n    instance.registerHelper('log', function(message, options) {\n      var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n      instance.log(level, message);\n    });\n\n    instance.registerHelper('lookup', function(obj, field) {\n      return obj && obj[field];\n    });\n  }\n\n  var logger = {\n    methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },\n\n    // State enum\n    DEBUG: 0,\n    INFO: 1,\n    WARN: 2,\n    ERROR: 3,\n    level: 1,\n\n    // Can be overridden in the host environment\n    log: function(level, message) {\n      if (typeof console !== 'undefined' && logger.level <= level) {\n        var method = logger.methodMap[level];\n        (console[method] || console.log).call(console, message);\n      }\n    }\n  };\n  __exports__.logger = logger;\n  var log = logger.log;\n  __exports__.log = log;\n  var createFrame = function(object) {\n    var frame = Utils.extend({}, object);\n    frame._parent = object;\n    return frame;\n  };\n  __exports__.createFrame = createFrame;\n  return __exports__;\n})(__module3__, __module4__);\n\n// handlebars/safe-string.js\nvar __module5__ = (function() {\n  \"use strict\";\n  var __exports__;\n  // Build out our basic SafeString type\n  function SafeString(string) {\n    this.string = string;\n  }\n\n  SafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n    return \"\" + this.string;\n  };\n\n  __exports__ = SafeString;\n  return __exports__;\n})();\n\n// handlebars/runtime.js\nvar __module6__ = (function(__dependency1__, __dependency2__, __dependency3__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Utils = __dependency1__;\n  var Exception = __dependency2__;\n  var COMPILER_REVISION = __dependency3__.COMPILER_REVISION;\n  var REVISION_CHANGES = __dependency3__.REVISION_CHANGES;\n  var createFrame = __dependency3__.createFrame;\n\n  function checkRevision(compilerInfo) {\n    var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n        currentRevision = COMPILER_REVISION;\n\n    if (compilerRevision !== currentRevision) {\n      if (compilerRevision < currentRevision) {\n        var runtimeVersions = REVISION_CHANGES[currentRevision],\n            compilerVersions = REVISION_CHANGES[compilerRevision];\n        throw new Exception(\"Template was precompiled with an older version of Handlebars than the current runtime. \"+\n              \"Please update your precompiler to a newer version (\"+runtimeVersions+\") or downgrade your runtime to an older version (\"+compilerVersions+\").\");\n      } else {\n        // Use the embedded version info since the runtime doesn't know about this revision yet\n        throw new Exception(\"Template was precompiled with a newer version of Handlebars than the current runtime. \"+\n              \"Please update your runtime to a newer version (\"+compilerInfo[1]+\").\");\n      }\n    }\n  }\n\n  __exports__.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n\n  function template(templateSpec, env) {\n    /* istanbul ignore next */\n    if (!env) {\n      throw new Exception(\"No environment passed to template\");\n    }\n    if (!templateSpec || !templateSpec.main) {\n      throw new Exception('Unknown template object: ' + typeof templateSpec);\n    }\n\n    // Note: Using env.VM references rather than local var references throughout this section to allow\n    // for external users to override these as psuedo-supported APIs.\n    env.VM.checkRevision(templateSpec.compiler);\n\n    var invokePartialWrapper = function(partial, context, options) {\n      if (options.hash) {\n        context = Utils.extend({}, context, options.hash);\n      }\n\n      partial = env.VM.resolvePartial.call(this, partial, context, options);\n      var result = env.VM.invokePartial.call(this, partial, context, options);\n\n      if (result == null && env.compile) {\n        options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n        result = options.partials[options.name](context, options);\n      }\n      if (result != null) {\n        if (options.indent) {\n          var lines = result.split('\\n');\n          for (var i = 0, l = lines.length; i < l; i++) {\n            if (!lines[i] && i + 1 === l) {\n              break;\n            }\n\n            lines[i] = options.indent + lines[i];\n          }\n          result = lines.join('\\n');\n        }\n        return result;\n      } else {\n        throw new Exception(\"The partial \" + options.name + \" could not be compiled when running in runtime-only mode\");\n      }\n    };\n\n    // Just add water\n    var container = {\n      strict: function(obj, name) {\n        if (!(name in obj)) {\n          throw new Exception('\"' + name + '\" not defined in ' + obj);\n        }\n        return obj[name];\n      },\n      lookup: function(depths, name) {\n        var len = depths.length;\n        for (var i = 0; i < len; i++) {\n          if (depths[i] && depths[i][name] != null) {\n            return depths[i][name];\n          }\n        }\n      },\n      lambda: function(current, context) {\n        return typeof current === 'function' ? current.call(context) : current;\n      },\n\n      escapeExpression: Utils.escapeExpression,\n      invokePartial: invokePartialWrapper,\n\n      fn: function(i) {\n        return templateSpec[i];\n      },\n\n      programs: [],\n      program: function(i, data, declaredBlockParams, blockParams, depths) {\n        var programWrapper = this.programs[i],\n            fn = this.fn(i);\n        if (data || depths || blockParams || declaredBlockParams) {\n          programWrapper = program(this, i, fn, data, declaredBlockParams, blockParams, depths);\n        } else if (!programWrapper) {\n          programWrapper = this.programs[i] = program(this, i, fn);\n        }\n        return programWrapper;\n      },\n\n      data: function(data, depth) {\n        while (data && depth--) {\n          data = data._parent;\n        }\n        return data;\n      },\n      merge: function(param, common) {\n        var ret = param || common;\n\n        if (param && common && (param !== common)) {\n          ret = Utils.extend({}, common, param);\n        }\n\n        return ret;\n      },\n\n      noop: env.VM.noop,\n      compilerInfo: templateSpec.compiler\n    };\n\n    var ret = function(context, options) {\n      options = options || {};\n      var data = options.data;\n\n      ret._setup(options);\n      if (!options.partial && templateSpec.useData) {\n        data = initData(context, data);\n      }\n      var depths,\n          blockParams = templateSpec.useBlockParams ? [] : undefined;\n      if (templateSpec.useDepths) {\n        depths = options.depths ? [context].concat(options.depths) : [context];\n      }\n\n      return templateSpec.main.call(container, context, container.helpers, container.partials, data, blockParams, depths);\n    };\n    ret.isTop = true;\n\n    ret._setup = function(options) {\n      if (!options.partial) {\n        container.helpers = container.merge(options.helpers, env.helpers);\n\n        if (templateSpec.usePartial) {\n          container.partials = container.merge(options.partials, env.partials);\n        }\n      } else {\n        container.helpers = options.helpers;\n        container.partials = options.partials;\n      }\n    };\n\n    ret._child = function(i, data, blockParams, depths) {\n      if (templateSpec.useBlockParams && !blockParams) {\n        throw new Exception('must pass block params');\n      }\n      if (templateSpec.useDepths && !depths) {\n        throw new Exception('must pass parent depths');\n      }\n\n      return program(container, i, templateSpec[i], data, 0, blockParams, depths);\n    };\n    return ret;\n  }\n\n  __exports__.template = template;function program(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n    var prog = function(context, options) {\n      options = options || {};\n\n      return fn.call(container,\n          context,\n          container.helpers, container.partials,\n          options.data || data,\n          blockParams && [options.blockParams].concat(blockParams),\n          depths && [context].concat(depths));\n    };\n    prog.program = i;\n    prog.depth = depths ? depths.length : 0;\n    prog.blockParams = declaredBlockParams || 0;\n    return prog;\n  }\n\n  __exports__.program = program;function resolvePartial(partial, context, options) {\n    if (!partial) {\n      partial = options.partials[options.name];\n    } else if (!partial.call && !options.name) {\n      // This is a dynamic partial that returned a string\n      options.name = partial;\n      partial = options.partials[partial];\n    }\n    return partial;\n  }\n\n  __exports__.resolvePartial = resolvePartial;function invokePartial(partial, context, options) {\n    options.partial = true;\n\n    if(partial === undefined) {\n      throw new Exception(\"The partial \" + options.name + \" could not be found\");\n    } else if(partial instanceof Function) {\n      return partial(context, options);\n    }\n  }\n\n  __exports__.invokePartial = invokePartial;function noop() { return \"\"; }\n\n  __exports__.noop = noop;function initData(context, data) {\n    if (!data || !('root' in data)) {\n      data = data ? createFrame(data) : {};\n      data.root = context;\n    }\n    return data;\n  }\n  return __exports__;\n})(__module3__, __module4__, __module2__);\n\n// handlebars.runtime.js\nvar __module1__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__;\n  /*globals Handlebars: true */\n  var base = __dependency1__;\n\n  // Each of these augment the Handlebars object. No need to setup here.\n  // (This is done to easily share code between commonjs and browse envs)\n  var SafeString = __dependency2__;\n  var Exception = __dependency3__;\n  var Utils = __dependency4__;\n  var runtime = __dependency5__;\n\n  // For compatibility and usage outside of module systems, make the Handlebars object a namespace\n  var create = function() {\n    var hb = new base.HandlebarsEnvironment();\n\n    Utils.extend(hb, base);\n    hb.SafeString = SafeString;\n    hb.Exception = Exception;\n    hb.Utils = Utils;\n    hb.escapeExpression = Utils.escapeExpression;\n\n    hb.VM = runtime;\n    hb.template = function(spec) {\n      return runtime.template(spec, hb);\n    };\n\n    return hb;\n  };\n\n  var Handlebars = create();\n  Handlebars.create = create;\n\n  /*jshint -W040 */\n  /* istanbul ignore next */\n  var root = typeof global !== 'undefined' ? global : window,\n      $Handlebars = root.Handlebars;\n  /* istanbul ignore next */\n  Handlebars.noConflict = function() {\n    if (root.Handlebars === Handlebars) {\n      root.Handlebars = $Handlebars;\n    }\n  };\n\n  Handlebars['default'] = Handlebars;\n\n  __exports__ = Handlebars;\n  return __exports__;\n})(__module2__, __module5__, __module4__, __module3__, __module6__);\n\n// handlebars/compiler/ast.js\nvar __module7__ = (function() {\n  \"use strict\";\n  var __exports__;\n  var AST = {\n    Program: function(statements, blockParams, strip, locInfo) {\n      this.loc = locInfo;\n      this.type = 'Program';\n      this.body = statements;\n\n      this.blockParams = blockParams;\n      this.strip = strip;\n    },\n\n    MustacheStatement: function(path, params, hash, escaped, strip, locInfo) {\n      this.loc = locInfo;\n      this.type = 'MustacheStatement';\n\n      this.path = path;\n      this.params = params || [];\n      this.hash = hash;\n      this.escaped = escaped;\n\n      this.strip = strip;\n    },\n\n    BlockStatement: function(path, params, hash, program, inverse, openStrip, inverseStrip, closeStrip, locInfo) {\n      this.loc = locInfo;\n      this.type = 'BlockStatement';\n\n      this.path = path;\n      this.params = params || [];\n      this.hash = hash;\n      this.program  = program;\n      this.inverse  = inverse;\n\n      this.openStrip = openStrip;\n      this.inverseStrip = inverseStrip;\n      this.closeStrip = closeStrip;\n    },\n\n    PartialStatement: function(name, params, hash, strip, locInfo) {\n      this.loc = locInfo;\n      this.type = 'PartialStatement';\n\n      this.name = name;\n      this.params = params || [];\n      this.hash = hash;\n\n      this.indent = '';\n      this.strip = strip;\n    },\n\n    ContentStatement: function(string, locInfo) {\n      this.loc = locInfo;\n      this.type = 'ContentStatement';\n      this.original = this.value = string;\n    },\n\n    CommentStatement: function(comment, strip, locInfo) {\n      this.loc = locInfo;\n      this.type = 'CommentStatement';\n      this.value = comment;\n\n      this.strip = strip;\n    },\n\n    SubExpression: function(path, params, hash, locInfo) {\n      this.loc = locInfo;\n\n      this.type = 'SubExpression';\n      this.path = path;\n      this.params = params || [];\n      this.hash = hash;\n    },\n\n    PathExpression: function(data, depth, parts, original, locInfo) {\n      this.loc = locInfo;\n      this.type = 'PathExpression';\n\n      this.data = data;\n      this.original = original;\n      this.parts    = parts;\n      this.depth    = depth;\n    },\n\n    StringLiteral: function(string, locInfo) {\n      this.loc = locInfo;\n      this.type = 'StringLiteral';\n      this.original =\n        this.value = string;\n    },\n\n    NumberLiteral: function(number, locInfo) {\n      this.loc = locInfo;\n      this.type = 'NumberLiteral';\n      this.original =\n        this.value = Number(number);\n    },\n\n    BooleanLiteral: function(bool, locInfo) {\n      this.loc = locInfo;\n      this.type = 'BooleanLiteral';\n      this.original =\n        this.value = bool === 'true';\n    },\n\n    Hash: function(pairs, locInfo) {\n      this.loc = locInfo;\n      this.type = 'Hash';\n      this.pairs = pairs;\n    },\n    HashPair: function(key, value, locInfo) {\n      this.loc = locInfo;\n      this.type = 'HashPair';\n      this.key = key;\n      this.value = value;\n    },\n\n    // Public API used to evaluate derived attributes regarding AST nodes\n    helpers: {\n      // a mustache is definitely a helper if:\n      // * it is an eligible helper, and\n      // * it has at least one parameter or hash segment\n      // TODO: Make these public utility methods\n      helperExpression: function(node) {\n        return !!(node.type === 'SubExpression' || node.params.length || node.hash);\n      },\n\n      scopedId: function(path) {\n        return (/^\\.|this\\b/).test(path.original);\n      },\n\n      // an ID is simple if it only has one part, and that part is not\n      // `..` or `this`.\n      simpleId: function(path) {\n        return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;\n      }\n    }\n  };\n\n\n  // Must be exported as an object rather than the root of the module as the jison lexer\n  // must modify the object to operate properly.\n  __exports__ = AST;\n  return __exports__;\n})();\n\n// handlebars/compiler/parser.js\nvar __module9__ = (function() {\n  \"use strict\";\n  var __exports__;\n  /* jshint ignore:start */\n  /* istanbul ignore next */\n  /* Jison generated parser */\n  var handlebars = (function(){\n  var parser = {trace: function trace() { },\n  yy: {},\n  symbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"content\":12,\"COMMENT\":13,\"CONTENT\":14,\"openRawBlock\":15,\"END_RAW_BLOCK\":16,\"OPEN_RAW_BLOCK\":17,\"helperName\":18,\"openRawBlock_repetition0\":19,\"openRawBlock_option0\":20,\"CLOSE_RAW_BLOCK\":21,\"openBlock\":22,\"block_option0\":23,\"closeBlock\":24,\"openInverse\":25,\"block_option1\":26,\"OPEN_BLOCK\":27,\"openBlock_repetition0\":28,\"openBlock_option0\":29,\"openBlock_option1\":30,\"CLOSE\":31,\"OPEN_INVERSE\":32,\"openInverse_repetition0\":33,\"openInverse_option0\":34,\"openInverse_option1\":35,\"openInverseChain\":36,\"OPEN_INVERSE_CHAIN\":37,\"openInverseChain_repetition0\":38,\"openInverseChain_option0\":39,\"openInverseChain_option1\":40,\"inverseAndProgram\":41,\"INVERSE\":42,\"inverseChain\":43,\"inverseChain_option0\":44,\"OPEN_ENDBLOCK\":45,\"OPEN\":46,\"mustache_repetition0\":47,\"mustache_option0\":48,\"OPEN_UNESCAPED\":49,\"mustache_repetition1\":50,\"mustache_option1\":51,\"CLOSE_UNESCAPED\":52,\"OPEN_PARTIAL\":53,\"partialName\":54,\"partial_repetition0\":55,\"partial_option0\":56,\"param\":57,\"sexpr\":58,\"OPEN_SEXPR\":59,\"sexpr_repetition0\":60,\"sexpr_option0\":61,\"CLOSE_SEXPR\":62,\"hash\":63,\"hash_repetition_plus0\":64,\"hashSegment\":65,\"ID\":66,\"EQUALS\":67,\"blockParams\":68,\"OPEN_BLOCK_PARAMS\":69,\"blockParams_repetition_plus0\":70,\"CLOSE_BLOCK_PARAMS\":71,\"path\":72,\"dataName\":73,\"STRING\":74,\"NUMBER\":75,\"BOOLEAN\":76,\"DATA\":77,\"pathSegments\":78,\"SEP\":79,\"$accept\":0,\"$end\":1},\n  terminals_: {2:\"error\",5:\"EOF\",13:\"COMMENT\",14:\"CONTENT\",16:\"END_RAW_BLOCK\",17:\"OPEN_RAW_BLOCK\",21:\"CLOSE_RAW_BLOCK\",27:\"OPEN_BLOCK\",31:\"CLOSE\",32:\"OPEN_INVERSE\",37:\"OPEN_INVERSE_CHAIN\",42:\"INVERSE\",45:\"OPEN_ENDBLOCK\",46:\"OPEN\",49:\"OPEN_UNESCAPED\",52:\"CLOSE_UNESCAPED\",53:\"OPEN_PARTIAL\",59:\"OPEN_SEXPR\",62:\"CLOSE_SEXPR\",66:\"ID\",67:\"EQUALS\",69:\"OPEN_BLOCK_PARAMS\",71:\"CLOSE_BLOCK_PARAMS\",74:\"STRING\",75:\"NUMBER\",76:\"BOOLEAN\",77:\"DATA\",79:\"SEP\"},\n  productions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[12,1],[10,3],[15,5],[9,4],[9,4],[22,6],[25,6],[36,6],[41,2],[43,3],[43,1],[24,3],[8,5],[8,5],[11,5],[57,1],[57,1],[58,5],[63,1],[65,3],[68,3],[18,1],[18,1],[18,1],[18,1],[18,1],[54,1],[54,1],[73,2],[72,1],[78,3],[78,1],[6,0],[6,2],[19,0],[19,2],[20,0],[20,1],[23,0],[23,1],[26,0],[26,1],[28,0],[28,2],[29,0],[29,1],[30,0],[30,1],[33,0],[33,2],[34,0],[34,1],[35,0],[35,1],[38,0],[38,2],[39,0],[39,1],[40,0],[40,1],[44,0],[44,1],[47,0],[47,2],[48,0],[48,1],[50,0],[50,2],[51,0],[51,1],[55,0],[55,2],[56,0],[56,1],[60,0],[60,2],[61,0],[61,1],[64,1],[64,2],[70,1],[70,2]],\n  performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {\n\n  var $0 = $$.length - 1;\n  switch (yystate) {\n  case 1: return $$[$0-1]; \n  break;\n  case 2:this.$ = new yy.Program($$[$0], null, {}, yy.locInfo(this._$));\n  break;\n  case 3:this.$ = $$[$0];\n  break;\n  case 4:this.$ = $$[$0];\n  break;\n  case 5:this.$ = $$[$0];\n  break;\n  case 6:this.$ = $$[$0];\n  break;\n  case 7:this.$ = $$[$0];\n  break;\n  case 8:this.$ = new yy.CommentStatement(yy.stripComment($$[$0]), yy.stripFlags($$[$0], $$[$0]), yy.locInfo(this._$));\n  break;\n  case 9:this.$ = new yy.ContentStatement($$[$0], yy.locInfo(this._$));\n  break;\n  case 10:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\n  break;\n  case 11:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\n  break;\n  case 12:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\n  break;\n  case 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\n  break;\n  case 14:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\n  break;\n  case 15:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\n  break;\n  case 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\n  break;\n  case 17:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\n  break;\n  case 18:\n      var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n          program = new yy.Program([inverse], null, {}, yy.locInfo(this._$));\n      program.chained = true;\n\n      this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n    \n  break;\n  case 19:this.$ = $$[$0];\n  break;\n  case 20:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\n  break;\n  case 21:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\n  break;\n  case 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\n  break;\n  case 23:this.$ = new yy.PartialStatement($$[$0-3], $$[$0-2], $$[$0-1], yy.stripFlags($$[$0-4], $$[$0]), yy.locInfo(this._$));\n  break;\n  case 24:this.$ = $$[$0];\n  break;\n  case 25:this.$ = $$[$0];\n  break;\n  case 26:this.$ = new yy.SubExpression($$[$0-3], $$[$0-2], $$[$0-1], yy.locInfo(this._$));\n  break;\n  case 27:this.$ = new yy.Hash($$[$0], yy.locInfo(this._$));\n  break;\n  case 28:this.$ = new yy.HashPair($$[$0-2], $$[$0], yy.locInfo(this._$));\n  break;\n  case 29:this.$ = $$[$0-1];\n  break;\n  case 30:this.$ = $$[$0];\n  break;\n  case 31:this.$ = $$[$0];\n  break;\n  case 32:this.$ = new yy.StringLiteral($$[$0], yy.locInfo(this._$));\n  break;\n  case 33:this.$ = new yy.NumberLiteral($$[$0], yy.locInfo(this._$));\n  break;\n  case 34:this.$ = new yy.BooleanLiteral($$[$0], yy.locInfo(this._$));\n  break;\n  case 35:this.$ = $$[$0];\n  break;\n  case 36:this.$ = $$[$0];\n  break;\n  case 37:this.$ = yy.preparePath(true, $$[$0], this._$);\n  break;\n  case 38:this.$ = yy.preparePath(false, $$[$0], this._$);\n  break;\n  case 39: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \n  break;\n  case 40:this.$ = [{part: $$[$0]}];\n  break;\n  case 41:this.$ = [];\n  break;\n  case 42:$$[$0-1].push($$[$0]);\n  break;\n  case 43:this.$ = [];\n  break;\n  case 44:$$[$0-1].push($$[$0]);\n  break;\n  case 51:this.$ = [];\n  break;\n  case 52:$$[$0-1].push($$[$0]);\n  break;\n  case 57:this.$ = [];\n  break;\n  case 58:$$[$0-1].push($$[$0]);\n  break;\n  case 63:this.$ = [];\n  break;\n  case 64:$$[$0-1].push($$[$0]);\n  break;\n  case 71:this.$ = [];\n  break;\n  case 72:$$[$0-1].push($$[$0]);\n  break;\n  case 75:this.$ = [];\n  break;\n  case 76:$$[$0-1].push($$[$0]);\n  break;\n  case 79:this.$ = [];\n  break;\n  case 80:$$[$0-1].push($$[$0]);\n  break;\n  case 83:this.$ = [];\n  break;\n  case 84:$$[$0-1].push($$[$0]);\n  break;\n  case 87:this.$ = [$$[$0]];\n  break;\n  case 88:$$[$0-1].push($$[$0]);\n  break;\n  case 89:this.$ = [$$[$0]];\n  break;\n  case 90:$$[$0-1].push($$[$0]);\n  break;\n  }\n  },\n  table: [{3:1,4:2,5:[2,41],6:3,13:[2,41],14:[2,41],17:[2,41],27:[2,41],32:[2,41],46:[2,41],49:[2,41],53:[2,41]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:[1,11],14:[1,18],15:16,17:[1,21],22:14,25:15,27:[1,19],32:[1,20],37:[2,2],42:[2,2],45:[2,2],46:[1,12],49:[1,13],53:[1,17]},{1:[2,1]},{5:[2,42],13:[2,42],14:[2,42],17:[2,42],27:[2,42],32:[2,42],37:[2,42],42:[2,42],45:[2,42],46:[2,42],49:[2,42],53:[2,42]},{5:[2,3],13:[2,3],14:[2,3],17:[2,3],27:[2,3],32:[2,3],37:[2,3],42:[2,3],45:[2,3],46:[2,3],49:[2,3],53:[2,3]},{5:[2,4],13:[2,4],14:[2,4],17:[2,4],27:[2,4],32:[2,4],37:[2,4],42:[2,4],45:[2,4],46:[2,4],49:[2,4],53:[2,4]},{5:[2,5],13:[2,5],14:[2,5],17:[2,5],27:[2,5],32:[2,5],37:[2,5],42:[2,5],45:[2,5],46:[2,5],49:[2,5],53:[2,5]},{5:[2,6],13:[2,6],14:[2,6],17:[2,6],27:[2,6],32:[2,6],37:[2,6],42:[2,6],45:[2,6],46:[2,6],49:[2,6],53:[2,6]},{5:[2,7],13:[2,7],14:[2,7],17:[2,7],27:[2,7],32:[2,7],37:[2,7],42:[2,7],45:[2,7],46:[2,7],49:[2,7],53:[2,7]},{5:[2,8],13:[2,8],14:[2,8],17:[2,8],27:[2,8],32:[2,8],37:[2,8],42:[2,8],45:[2,8],46:[2,8],49:[2,8],53:[2,8]},{18:22,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{18:31,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{4:32,6:3,13:[2,41],14:[2,41],17:[2,41],27:[2,41],32:[2,41],37:[2,41],42:[2,41],45:[2,41],46:[2,41],49:[2,41],53:[2,41]},{4:33,6:3,13:[2,41],14:[2,41],17:[2,41],27:[2,41],32:[2,41],42:[2,41],45:[2,41],46:[2,41],49:[2,41],53:[2,41]},{12:34,14:[1,18]},{18:36,54:35,58:37,59:[1,38],66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{5:[2,9],13:[2,9],14:[2,9],16:[2,9],17:[2,9],27:[2,9],32:[2,9],37:[2,9],42:[2,9],45:[2,9],46:[2,9],49:[2,9],53:[2,9]},{18:39,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{18:40,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{18:41,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{31:[2,71],47:42,59:[2,71],66:[2,71],74:[2,71],75:[2,71],76:[2,71],77:[2,71]},{21:[2,30],31:[2,30],52:[2,30],59:[2,30],62:[2,30],66:[2,30],69:[2,30],74:[2,30],75:[2,30],76:[2,30],77:[2,30]},{21:[2,31],31:[2,31],52:[2,31],59:[2,31],62:[2,31],66:[2,31],69:[2,31],74:[2,31],75:[2,31],76:[2,31],77:[2,31]},{21:[2,32],31:[2,32],52:[2,32],59:[2,32],62:[2,32],66:[2,32],69:[2,32],74:[2,32],75:[2,32],76:[2,32],77:[2,32]},{21:[2,33],31:[2,33],52:[2,33],59:[2,33],62:[2,33],66:[2,33],69:[2,33],74:[2,33],75:[2,33],76:[2,33],77:[2,33]},{21:[2,34],31:[2,34],52:[2,34],59:[2,34],62:[2,34],66:[2,34],69:[2,34],74:[2,34],75:[2,34],76:[2,34],77:[2,34]},{21:[2,38],31:[2,38],52:[2,38],59:[2,38],62:[2,38],66:[2,38],69:[2,38],74:[2,38],75:[2,38],76:[2,38],77:[2,38],79:[1,43]},{66:[1,30],78:44},{21:[2,40],31:[2,40],52:[2,40],59:[2,40],62:[2,40],66:[2,40],69:[2,40],74:[2,40],75:[2,40],76:[2,40],77:[2,40],79:[2,40]},{50:45,52:[2,75],59:[2,75],66:[2,75],74:[2,75],75:[2,75],76:[2,75],77:[2,75]},{23:46,36:48,37:[1,50],41:49,42:[1,51],43:47,45:[2,47]},{26:52,41:53,42:[1,51],45:[2,49]},{16:[1,54]},{31:[2,79],55:55,59:[2,79],66:[2,79],74:[2,79],75:[2,79],76:[2,79],77:[2,79]},{31:[2,35],59:[2,35],66:[2,35],74:[2,35],75:[2,35],76:[2,35],77:[2,35]},{31:[2,36],59:[2,36],66:[2,36],74:[2,36],75:[2,36],76:[2,36],77:[2,36]},{18:56,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{28:57,31:[2,51],59:[2,51],66:[2,51],69:[2,51],74:[2,51],75:[2,51],76:[2,51],77:[2,51]},{31:[2,57],33:58,59:[2,57],66:[2,57],69:[2,57],74:[2,57],75:[2,57],76:[2,57],77:[2,57]},{19:59,21:[2,43],59:[2,43],66:[2,43],74:[2,43],75:[2,43],76:[2,43],77:[2,43]},{18:63,31:[2,73],48:60,57:61,58:64,59:[1,38],63:62,64:65,65:66,66:[1,67],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{66:[1,68]},{21:[2,37],31:[2,37],52:[2,37],59:[2,37],62:[2,37],66:[2,37],69:[2,37],74:[2,37],75:[2,37],76:[2,37],77:[2,37],79:[1,43]},{18:63,51:69,52:[2,77],57:70,58:64,59:[1,38],63:71,64:65,65:66,66:[1,67],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{24:72,45:[1,73]},{45:[2,48]},{4:74,6:3,13:[2,41],14:[2,41],17:[2,41],27:[2,41],32:[2,41],37:[2,41],42:[2,41],45:[2,41],46:[2,41],49:[2,41],53:[2,41]},{45:[2,19]},{18:75,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{4:76,6:3,13:[2,41],14:[2,41],17:[2,41],27:[2,41],32:[2,41],45:[2,41],46:[2,41],49:[2,41],53:[2,41]},{24:77,45:[1,73]},{45:[2,50]},{5:[2,10],13:[2,10],14:[2,10],17:[2,10],27:[2,10],32:[2,10],37:[2,10],42:[2,10],45:[2,10],46:[2,10],49:[2,10],53:[2,10]},{18:63,31:[2,81],56:78,57:79,58:64,59:[1,38],63:80,64:65,65:66,66:[1,67],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{59:[2,83],60:81,62:[2,83],66:[2,83],74:[2,83],75:[2,83],76:[2,83],77:[2,83]},{18:63,29:82,31:[2,53],57:83,58:64,59:[1,38],63:84,64:65,65:66,66:[1,67],69:[2,53],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{18:63,31:[2,59],34:85,57:86,58:64,59:[1,38],63:87,64:65,65:66,66:[1,67],69:[2,59],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{18:63,20:88,21:[2,45],57:89,58:64,59:[1,38],63:90,64:65,65:66,66:[1,67],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{31:[1,91]},{31:[2,72],59:[2,72],66:[2,72],74:[2,72],75:[2,72],76:[2,72],77:[2,72]},{31:[2,74]},{21:[2,24],31:[2,24],52:[2,24],59:[2,24],62:[2,24],66:[2,24],69:[2,24],74:[2,24],75:[2,24],76:[2,24],77:[2,24]},{21:[2,25],31:[2,25],52:[2,25],59:[2,25],62:[2,25],66:[2,25],69:[2,25],74:[2,25],75:[2,25],76:[2,25],77:[2,25]},{21:[2,27],31:[2,27],52:[2,27],62:[2,27],65:92,66:[1,93],69:[2,27]},{21:[2,87],31:[2,87],52:[2,87],62:[2,87],66:[2,87],69:[2,87]},{21:[2,40],31:[2,40],52:[2,40],59:[2,40],62:[2,40],66:[2,40],67:[1,94],69:[2,40],74:[2,40],75:[2,40],76:[2,40],77:[2,40],79:[2,40]},{21:[2,39],31:[2,39],52:[2,39],59:[2,39],62:[2,39],66:[2,39],69:[2,39],74:[2,39],75:[2,39],76:[2,39],77:[2,39],79:[2,39]},{52:[1,95]},{52:[2,76],59:[2,76],66:[2,76],74:[2,76],75:[2,76],76:[2,76],77:[2,76]},{52:[2,78]},{5:[2,12],13:[2,12],14:[2,12],17:[2,12],27:[2,12],32:[2,12],37:[2,12],42:[2,12],45:[2,12],46:[2,12],49:[2,12],53:[2,12]},{18:96,66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{36:48,37:[1,50],41:49,42:[1,51],43:98,44:97,45:[2,69]},{31:[2,63],38:99,59:[2,63],66:[2,63],69:[2,63],74:[2,63],75:[2,63],76:[2,63],77:[2,63]},{45:[2,17]},{5:[2,13],13:[2,13],14:[2,13],17:[2,13],27:[2,13],32:[2,13],37:[2,13],42:[2,13],45:[2,13],46:[2,13],49:[2,13],53:[2,13]},{31:[1,100]},{31:[2,80],59:[2,80],66:[2,80],74:[2,80],75:[2,80],76:[2,80],77:[2,80]},{31:[2,82]},{18:63,57:102,58:64,59:[1,38],61:101,62:[2,85],63:103,64:65,65:66,66:[1,67],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{30:104,31:[2,55],68:105,69:[1,106]},{31:[2,52],59:[2,52],66:[2,52],69:[2,52],74:[2,52],75:[2,52],76:[2,52],77:[2,52]},{31:[2,54],69:[2,54]},{31:[2,61],35:107,68:108,69:[1,106]},{31:[2,58],59:[2,58],66:[2,58],69:[2,58],74:[2,58],75:[2,58],76:[2,58],77:[2,58]},{31:[2,60],69:[2,60]},{21:[1,109]},{21:[2,44],59:[2,44],66:[2,44],74:[2,44],75:[2,44],76:[2,44],77:[2,44]},{21:[2,46]},{5:[2,21],13:[2,21],14:[2,21],17:[2,21],27:[2,21],32:[2,21],37:[2,21],42:[2,21],45:[2,21],46:[2,21],49:[2,21],53:[2,21]},{21:[2,88],31:[2,88],52:[2,88],62:[2,88],66:[2,88],69:[2,88]},{67:[1,94]},{18:63,57:110,58:64,59:[1,38],66:[1,30],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{5:[2,22],13:[2,22],14:[2,22],17:[2,22],27:[2,22],32:[2,22],37:[2,22],42:[2,22],45:[2,22],46:[2,22],49:[2,22],53:[2,22]},{31:[1,111]},{45:[2,18]},{45:[2,70]},{18:63,31:[2,65],39:112,57:113,58:64,59:[1,38],63:114,64:65,65:66,66:[1,67],69:[2,65],72:23,73:24,74:[1,25],75:[1,26],76:[1,27],77:[1,29],78:28},{5:[2,23],13:[2,23],14:[2,23],17:[2,23],27:[2,23],32:[2,23],37:[2,23],42:[2,23],45:[2,23],46:[2,23],49:[2,23],53:[2,23]},{62:[1,115]},{59:[2,84],62:[2,84],66:[2,84],74:[2,84],75:[2,84],76:[2,84],77:[2,84]},{62:[2,86]},{31:[1,116]},{31:[2,56]},{66:[1,118],70:117},{31:[1,119]},{31:[2,62]},{14:[2,11]},{21:[2,28],31:[2,28],52:[2,28],62:[2,28],66:[2,28],69:[2,28]},{5:[2,20],13:[2,20],14:[2,20],17:[2,20],27:[2,20],32:[2,20],37:[2,20],42:[2,20],45:[2,20],46:[2,20],49:[2,20],53:[2,20]},{31:[2,67],40:120,68:121,69:[1,106]},{31:[2,64],59:[2,64],66:[2,64],69:[2,64],74:[2,64],75:[2,64],76:[2,64],77:[2,64]},{31:[2,66],69:[2,66]},{21:[2,26],31:[2,26],52:[2,26],59:[2,26],62:[2,26],66:[2,26],69:[2,26],74:[2,26],75:[2,26],76:[2,26],77:[2,26]},{13:[2,14],14:[2,14],17:[2,14],27:[2,14],32:[2,14],37:[2,14],42:[2,14],45:[2,14],46:[2,14],49:[2,14],53:[2,14]},{66:[1,123],71:[1,122]},{66:[2,89],71:[2,89]},{13:[2,15],14:[2,15],17:[2,15],27:[2,15],32:[2,15],42:[2,15],45:[2,15],46:[2,15],49:[2,15],53:[2,15]},{31:[1,124]},{31:[2,68]},{31:[2,29]},{66:[2,90],71:[2,90]},{13:[2,16],14:[2,16],17:[2,16],27:[2,16],32:[2,16],37:[2,16],42:[2,16],45:[2,16],46:[2,16],49:[2,16],53:[2,16]}],\n  defaultActions: {4:[2,1],47:[2,48],49:[2,19],53:[2,50],62:[2,74],71:[2,78],76:[2,17],80:[2,82],90:[2,46],97:[2,18],98:[2,70],103:[2,86],105:[2,56],108:[2,62],109:[2,11],121:[2,68],122:[2,29]},\n  parseError: function parseError(str, hash) {\n      throw new Error(str);\n  },\n  parse: function parse(input) {\n      var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n      this.lexer.setInput(input);\n      this.lexer.yy = this.yy;\n      this.yy.lexer = this.lexer;\n      this.yy.parser = this;\n      if (typeof this.lexer.yylloc == \"undefined\")\n          this.lexer.yylloc = {};\n      var yyloc = this.lexer.yylloc;\n      lstack.push(yyloc);\n      var ranges = this.lexer.options && this.lexer.options.ranges;\n      if (typeof this.yy.parseError === \"function\")\n          this.parseError = this.yy.parseError;\n      function popStack(n) {\n          stack.length = stack.length - 2 * n;\n          vstack.length = vstack.length - n;\n          lstack.length = lstack.length - n;\n      }\n      function lex() {\n          var token;\n          token = self.lexer.lex() || 1;\n          if (typeof token !== \"number\") {\n              token = self.symbols_[token] || token;\n          }\n          return token;\n      }\n      var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n      while (true) {\n          state = stack[stack.length - 1];\n          if (this.defaultActions[state]) {\n              action = this.defaultActions[state];\n          } else {\n              if (symbol === null || typeof symbol == \"undefined\") {\n                  symbol = lex();\n              }\n              action = table[state] && table[state][symbol];\n          }\n          if (typeof action === \"undefined\" || !action.length || !action[0]) {\n              var errStr = \"\";\n              if (!recovering) {\n                  expected = [];\n                  for (p in table[state])\n                      if (this.terminals_[p] && p > 2) {\n                          expected.push(\"'\" + this.terminals_[p] + \"'\");\n                      }\n                  if (this.lexer.showPosition) {\n                      errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n                  } else {\n                      errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n                  }\n                  this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n              }\n          }\n          if (action[0] instanceof Array && action.length > 1) {\n              throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n          }\n          switch (action[0]) {\n          case 1:\n              stack.push(symbol);\n              vstack.push(this.lexer.yytext);\n              lstack.push(this.lexer.yylloc);\n              stack.push(action[1]);\n              symbol = null;\n              if (!preErrorSymbol) {\n                  yyleng = this.lexer.yyleng;\n                  yytext = this.lexer.yytext;\n                  yylineno = this.lexer.yylineno;\n                  yyloc = this.lexer.yylloc;\n                  if (recovering > 0)\n                      recovering--;\n              } else {\n                  symbol = preErrorSymbol;\n                  preErrorSymbol = null;\n              }\n              break;\n          case 2:\n              len = this.productions_[action[1]][1];\n              yyval.$ = vstack[vstack.length - len];\n              yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n              if (ranges) {\n                  yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n              }\n              r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n              if (typeof r !== \"undefined\") {\n                  return r;\n              }\n              if (len) {\n                  stack = stack.slice(0, -1 * len * 2);\n                  vstack = vstack.slice(0, -1 * len);\n                  lstack = lstack.slice(0, -1 * len);\n              }\n              stack.push(this.productions_[action[1]][0]);\n              vstack.push(yyval.$);\n              lstack.push(yyval._$);\n              newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n              stack.push(newState);\n              break;\n          case 3:\n              return true;\n          }\n      }\n      return true;\n  }\n  };\n  /* Jison generated lexer */\n  var lexer = (function(){\n  var lexer = ({EOF:1,\n  parseError:function parseError(str, hash) {\n          if (this.yy.parser) {\n              this.yy.parser.parseError(str, hash);\n          } else {\n              throw new Error(str);\n          }\n      },\n  setInput:function (input) {\n          this._input = input;\n          this._more = this._less = this.done = false;\n          this.yylineno = this.yyleng = 0;\n          this.yytext = this.matched = this.match = '';\n          this.conditionStack = ['INITIAL'];\n          this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n          if (this.options.ranges) this.yylloc.range = [0,0];\n          this.offset = 0;\n          return this;\n      },\n  input:function () {\n          var ch = this._input[0];\n          this.yytext += ch;\n          this.yyleng++;\n          this.offset++;\n          this.match += ch;\n          this.matched += ch;\n          var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n          if (lines) {\n              this.yylineno++;\n              this.yylloc.last_line++;\n          } else {\n              this.yylloc.last_column++;\n          }\n          if (this.options.ranges) this.yylloc.range[1]++;\n\n          this._input = this._input.slice(1);\n          return ch;\n      },\n  unput:function (ch) {\n          var len = ch.length;\n          var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n          this._input = ch + this._input;\n          this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n          //this.yyleng -= len;\n          this.offset -= len;\n          var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n          this.match = this.match.substr(0, this.match.length-1);\n          this.matched = this.matched.substr(0, this.matched.length-1);\n\n          if (lines.length-1) this.yylineno -= lines.length-1;\n          var r = this.yylloc.range;\n\n          this.yylloc = {first_line: this.yylloc.first_line,\n            last_line: this.yylineno+1,\n            first_column: this.yylloc.first_column,\n            last_column: lines ?\n                (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n                this.yylloc.first_column - len\n            };\n\n          if (this.options.ranges) {\n              this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n          }\n          return this;\n      },\n  more:function () {\n          this._more = true;\n          return this;\n      },\n  less:function (n) {\n          this.unput(this.match.slice(n));\n      },\n  pastInput:function () {\n          var past = this.matched.substr(0, this.matched.length - this.match.length);\n          return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n      },\n  upcomingInput:function () {\n          var next = this.match;\n          if (next.length < 20) {\n              next += this._input.substr(0, 20-next.length);\n          }\n          return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n      },\n  showPosition:function () {\n          var pre = this.pastInput();\n          var c = new Array(pre.length + 1).join(\"-\");\n          return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n      },\n  next:function () {\n          if (this.done) {\n              return this.EOF;\n          }\n          if (!this._input) this.done = true;\n\n          var token,\n              match,\n              tempMatch,\n              index,\n              col,\n              lines;\n          if (!this._more) {\n              this.yytext = '';\n              this.match = '';\n          }\n          var rules = this._currentRules();\n          for (var i=0;i < rules.length; i++) {\n              tempMatch = this._input.match(this.rules[rules[i]]);\n              if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                  match = tempMatch;\n                  index = i;\n                  if (!this.options.flex) break;\n              }\n          }\n          if (match) {\n              lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n              if (lines) this.yylineno += lines.length;\n              this.yylloc = {first_line: this.yylloc.last_line,\n                             last_line: this.yylineno+1,\n                             first_column: this.yylloc.last_column,\n                             last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n              this.yytext += match[0];\n              this.match += match[0];\n              this.matches = match;\n              this.yyleng = this.yytext.length;\n              if (this.options.ranges) {\n                  this.yylloc.range = [this.offset, this.offset += this.yyleng];\n              }\n              this._more = false;\n              this._input = this._input.slice(match[0].length);\n              this.matched += match[0];\n              token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n              if (this.done && this._input) this.done = false;\n              if (token) return token;\n              else return;\n          }\n          if (this._input === \"\") {\n              return this.EOF;\n          } else {\n              return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n                      {text: \"\", token: null, line: this.yylineno});\n          }\n      },\n  lex:function lex() {\n          var r = this.next();\n          if (typeof r !== 'undefined') {\n              return r;\n          } else {\n              return this.lex();\n          }\n      },\n  begin:function begin(condition) {\n          this.conditionStack.push(condition);\n      },\n  popState:function popState() {\n          return this.conditionStack.pop();\n      },\n  _currentRules:function _currentRules() {\n          return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n      },\n  topState:function () {\n          return this.conditionStack[this.conditionStack.length-2];\n      },\n  pushState:function begin(condition) {\n          this.begin(condition);\n      }});\n  lexer.options = {};\n  lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\n\n  function strip(start, end) {\n    return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng-end);\n  }\n\n\n  var YYSTATE=YY_START\n  switch($avoiding_name_collisions) {\n  case 0:\n                                     if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n                                       strip(0,1);\n                                       this.begin(\"mu\");\n                                     } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n                                       strip(0,1);\n                                       this.begin(\"emu\");\n                                     } else {\n                                       this.begin(\"mu\");\n                                     }\n                                     if(yy_.yytext) return 14;\n                                   \n  break;\n  case 1:return 14;\n  break;\n  case 2:\n                                     this.popState();\n                                     return 14;\n                                   \n  break;\n  case 3:\n                                    yy_.yytext = yy_.yytext.substr(5, yy_.yyleng-9);\n                                    this.popState();\n                                    return 16;\n                                   \n  break;\n  case 4: return 14; \n  break;\n  case 5:\n    this.popState();\n    return 13;\n\n  break;\n  case 6:return 59;\n  break;\n  case 7:return 62;\n  break;\n  case 8: return 17; \n  break;\n  case 9:\n                                    this.popState();\n                                    this.begin('raw');\n                                    return 21;\n                                   \n  break;\n  case 10:return 53;\n  break;\n  case 11:return 27;\n  break;\n  case 12:return 45;\n  break;\n  case 13:this.popState(); return 42;\n  break;\n  case 14:this.popState(); return 42;\n  break;\n  case 15:return 32;\n  break;\n  case 16:return 37;\n  break;\n  case 17:return 49;\n  break;\n  case 18:return 46;\n  break;\n  case 19:\n    this.unput(yy_.yytext);\n    this.popState();\n    this.begin('com');\n\n  break;\n  case 20:\n    this.popState();\n    return 13;\n\n  break;\n  case 21:return 46;\n  break;\n  case 22:return 67;\n  break;\n  case 23:return 66;\n  break;\n  case 24:return 66;\n  break;\n  case 25:return 79;\n  break;\n  case 26:// ignore whitespace\n  break;\n  case 27:this.popState(); return 52;\n  break;\n  case 28:this.popState(); return 31;\n  break;\n  case 29:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 74;\n  break;\n  case 30:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 74;\n  break;\n  case 31:return 77;\n  break;\n  case 32:return 76;\n  break;\n  case 33:return 76;\n  break;\n  case 34:return 75;\n  break;\n  case 35:return 69;\n  break;\n  case 36:return 71;\n  break;\n  case 37:return 66;\n  break;\n  case 38:yy_.yytext = strip(1,2); return 66;\n  break;\n  case 39:return 'INVALID';\n  break;\n  case 40:return 5;\n  break;\n  }\n  };\n  lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]*?(?=(\\{\\{\\{\\{\\/)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[[^\\]]*\\])/,/^(?:.)/,/^(?:$)/];\n  lexer.conditions = {\"mu\":{\"rules\":[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],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[5],\"inclusive\":false},\"raw\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,40],\"inclusive\":true}};\n  return lexer;})()\n  parser.lexer = lexer;\n  function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\n  return new Parser;\n  })();__exports__ = handlebars;\n  /* jshint ignore:end */\n  return __exports__;\n})();\n\n// handlebars/compiler/visitor.js\nvar __module11__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__;\n  var Exception = __dependency1__;\n  var AST = __dependency2__;\n\n  function Visitor() {\n    this.parents = [];\n  }\n\n  Visitor.prototype = {\n    constructor: Visitor,\n    mutating: false,\n\n    // Visits a given value. If mutating, will replace the value if necessary.\n    acceptKey: function(node, name) {\n      var value = this.accept(node[name]);\n      if (this.mutating) {\n        // Hacky sanity check:\n        if (value && (!value.type || !AST[value.type])) {\n          throw new Exception('Unexpected node type \"' + value.type + '\" found when accepting ' + name + ' on ' + node.type);\n        }\n        node[name] = value;\n      }\n    },\n\n    // Performs an accept operation with added sanity check to ensure\n    // required keys are not removed.\n    acceptRequired: function(node, name) {\n      this.acceptKey(node, name);\n\n      if (!node[name]) {\n        throw new Exception(node.type + ' requires ' + name);\n      }\n    },\n\n    // Traverses a given array. If mutating, empty respnses will be removed\n    // for child elements.\n    acceptArray: function(array) {\n      for (var i = 0, l = array.length; i < l; i++) {\n        this.acceptKey(array, i);\n\n        if (!array[i]) {\n          array.splice(i, 1);\n          i--;\n          l--;\n        }\n      }\n    },\n\n    accept: function(object) {\n      if (!object) {\n        return;\n      }\n\n      if (this.current) {\n        this.parents.unshift(this.current);\n      }\n      this.current = object;\n\n      var ret = this[object.type](object);\n\n      this.current = this.parents.shift();\n\n      if (!this.mutating || ret) {\n        return ret;\n      } else if (ret !== false) {\n        return object;\n      }\n    },\n\n    Program: function(program) {\n      this.acceptArray(program.body);\n    },\n\n    MustacheStatement: function(mustache) {\n      this.acceptRequired(mustache, 'path');\n      this.acceptArray(mustache.params);\n      this.acceptKey(mustache, 'hash');\n    },\n\n    BlockStatement: function(block) {\n      this.acceptRequired(block, 'path');\n      this.acceptArray(block.params);\n      this.acceptKey(block, 'hash');\n\n      this.acceptKey(block, 'program');\n      this.acceptKey(block, 'inverse');\n    },\n\n    PartialStatement: function(partial) {\n      this.acceptRequired(partial, 'name');\n      this.acceptArray(partial.params);\n      this.acceptKey(partial, 'hash');\n    },\n\n    ContentStatement: function(/* content */) {},\n    CommentStatement: function(/* comment */) {},\n\n    SubExpression: function(sexpr) {\n      this.acceptRequired(sexpr, 'path');\n      this.acceptArray(sexpr.params);\n      this.acceptKey(sexpr, 'hash');\n    },\n    PartialExpression: function(partial) {\n      this.acceptRequired(partial, 'name');\n      this.acceptArray(partial.params);\n      this.acceptKey(partial, 'hash');\n    },\n\n    PathExpression: function(/* path */) {},\n\n    StringLiteral: function(/* string */) {},\n    NumberLiteral: function(/* number */) {},\n    BooleanLiteral: function(/* bool */) {},\n\n    Hash: function(hash) {\n      this.acceptArray(hash.pairs);\n    },\n    HashPair: function(pair) {\n      this.acceptRequired(pair, 'value');\n    }\n  };\n\n  __exports__ = Visitor;\n  return __exports__;\n})(__module4__, __module7__);\n\n// handlebars/compiler/whitespace-control.js\nvar __module10__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__;\n  var Visitor = __dependency1__;\n\n  function WhitespaceControl() {\n  }\n  WhitespaceControl.prototype = new Visitor();\n\n  WhitespaceControl.prototype.Program = function(program) {\n    var isRoot = !this.isRootSeen;\n    this.isRootSeen = true;\n\n    var body = program.body;\n    for (var i = 0, l = body.length; i < l; i++) {\n      var current = body[i],\n          strip = this.accept(current);\n\n      if (!strip) {\n        continue;\n      }\n\n      var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n          _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n\n          openStandalone = strip.openStandalone && _isPrevWhitespace,\n          closeStandalone = strip.closeStandalone && _isNextWhitespace,\n          inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n      if (strip.close) {\n        omitRight(body, i, true);\n      }\n      if (strip.open) {\n        omitLeft(body, i, true);\n      }\n\n      if (inlineStandalone) {\n        omitRight(body, i);\n\n        if (omitLeft(body, i)) {\n          // If we are on a standalone node, save the indent info for partials\n          if (current.type === 'PartialStatement') {\n            // Pull out the whitespace from the final line\n            current.indent = (/([ \\t]+$)/).exec(body[i-1].original)[1];\n          }\n        }\n      }\n      if (openStandalone) {\n        omitRight((current.program || current.inverse).body);\n\n        // Strip out the previous content node if it's whitespace only\n        omitLeft(body, i);\n      }\n      if (closeStandalone) {\n        // Always strip the next node\n        omitRight(body, i);\n\n        omitLeft((current.inverse || current.program).body);\n      }\n    }\n\n    return program;\n  };\n  WhitespaceControl.prototype.BlockStatement = function(block) {\n    this.accept(block.program);\n    this.accept(block.inverse);\n\n    // Find the inverse program that is involed with whitespace stripping.\n    var program = block.program || block.inverse,\n        inverse = block.program && block.inverse,\n        firstInverse = inverse,\n        lastInverse = inverse;\n\n    if (inverse && inverse.chained) {\n      firstInverse = inverse.body[0].program;\n\n      // Walk the inverse chain to find the last inverse that is actually in the chain.\n      while (lastInverse.chained) {\n        lastInverse = lastInverse.body[lastInverse.body.length-1].program;\n      }\n    }\n\n    var strip = {\n      open: block.openStrip.open,\n      close: block.closeStrip.close,\n\n      // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n      // so our parent can determine if we actually are standalone\n      openStandalone: isNextWhitespace(program.body),\n      closeStandalone: isPrevWhitespace((firstInverse || program).body)\n    };\n\n    if (block.openStrip.close) {\n      omitRight(program.body, null, true);\n    }\n\n    if (inverse) {\n      var inverseStrip = block.inverseStrip;\n\n      if (inverseStrip.open) {\n        omitLeft(program.body, null, true);\n      }\n\n      if (inverseStrip.close) {\n        omitRight(firstInverse.body, null, true);\n      }\n      if (block.closeStrip.open) {\n        omitLeft(lastInverse.body, null, true);\n      }\n\n      // Find standalone else statments\n      if (isPrevWhitespace(program.body)\n          && isNextWhitespace(firstInverse.body)) {\n\n        omitLeft(program.body);\n        omitRight(firstInverse.body);\n      }\n    } else {\n      if (block.closeStrip.open) {\n        omitLeft(program.body, null, true);\n      }\n    }\n\n    return strip;\n  };\n\n  WhitespaceControl.prototype.MustacheStatement = function(mustache) {\n    return mustache.strip;\n  };\n\n  WhitespaceControl.prototype.PartialStatement = \n      WhitespaceControl.prototype.CommentStatement = function(node) {\n    /* istanbul ignore next */\n    var strip = node.strip || {};\n    return {\n      inlineStandalone: true,\n      open: strip.open,\n      close: strip.close\n    };\n  };\n\n\n  function isPrevWhitespace(body, i, isRoot) {\n    if (i === undefined) {\n      i = body.length;\n    }\n\n    // Nodes that end with newlines are considered whitespace (but are special\n    // cased for strip operations)\n    var prev = body[i-1],\n        sibling = body[i-2];\n    if (!prev) {\n      return isRoot;\n    }\n\n    if (prev.type === 'ContentStatement') {\n      return (sibling || !isRoot ? (/\\r?\\n\\s*?$/) : (/(^|\\r?\\n)\\s*?$/)).test(prev.original);\n    }\n  }\n  function isNextWhitespace(body, i, isRoot) {\n    if (i === undefined) {\n      i = -1;\n    }\n\n    var next = body[i+1],\n        sibling = body[i+2];\n    if (!next) {\n      return isRoot;\n    }\n\n    if (next.type === 'ContentStatement') {\n      return (sibling || !isRoot ? (/^\\s*?\\r?\\n/) : (/^\\s*?(\\r?\\n|$)/)).test(next.original);\n    }\n  }\n\n  // Marks the node to the right of the position as omitted.\n  // I.e. {{foo}}' ' will mark the ' ' node as omitted.\n  //\n  // If i is undefined, then the first child will be marked as such.\n  //\n  // If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n  // content is met.\n  function omitRight(body, i, multiple) {\n    var current = body[i == null ? 0 : i + 1];\n    if (!current || current.type !== 'ContentStatement' || (!multiple && current.rightStripped)) {\n      return;\n    }\n\n    var original = current.value;\n    current.value = current.value.replace(multiple ? (/^\\s+/) : (/^[ \\t]*\\r?\\n?/), '');\n    current.rightStripped = current.value !== original;\n  }\n\n  // Marks the node to the left of the position as omitted.\n  // I.e. ' '{{foo}} will mark the ' ' node as omitted.\n  //\n  // If i is undefined then the last child will be marked as such.\n  //\n  // If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n  // content is met.\n  function omitLeft(body, i, multiple) {\n    var current = body[i == null ? body.length - 1 : i - 1];\n    if (!current || current.type !== 'ContentStatement' || (!multiple && current.leftStripped)) {\n      return;\n    }\n\n    // We omit the last node if it's whitespace only and not preceeded by a non-content node.\n    var original = current.value;\n    current.value = current.value.replace(multiple ? (/\\s+$/) : (/[ \\t]+$/), '');\n    current.leftStripped = current.value !== original;\n    return current.leftStripped;\n  }\n\n  __exports__ = WhitespaceControl;\n  return __exports__;\n})(__module11__);\n\n// handlebars/compiler/helpers.js\nvar __module12__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Exception = __dependency1__;\n\n  function SourceLocation(source, locInfo) {\n    this.source = source;\n    this.start = {\n      line: locInfo.first_line,\n      column: locInfo.first_column\n    };\n    this.end = {\n      line: locInfo.last_line,\n      column: locInfo.last_column\n    };\n  }\n\n  __exports__.SourceLocation = SourceLocation;function stripFlags(open, close) {\n    return {\n      open: open.charAt(2) === '~',\n      close: close.charAt(close.length-3) === '~'\n    };\n  }\n\n  __exports__.stripFlags = stripFlags;function stripComment(comment) {\n    return comment.replace(/^\\{\\{~?\\!-?-?/, '')\n                  .replace(/-?-?~?\\}\\}$/, '');\n  }\n\n  __exports__.stripComment = stripComment;function preparePath(data, parts, locInfo) {\n    /*jshint -W040 */\n    locInfo = this.locInfo(locInfo);\n\n    var original = data ? '@' : '',\n        dig = [],\n        depth = 0,\n        depthString = '';\n\n    for(var i=0,l=parts.length; i<l; i++) {\n      var part = parts[i].part;\n      original += (parts[i].separator || '') + part;\n\n      if (part === '..' || part === '.' || part === 'this') {\n        if (dig.length > 0) {\n          throw new Exception('Invalid path: ' + original, {loc: locInfo});\n        } else if (part === '..') {\n          depth++;\n          depthString += '../';\n        }\n      } else {\n        dig.push(part);\n      }\n    }\n\n    return new this.PathExpression(data, depth, dig, original, locInfo);\n  }\n\n  __exports__.preparePath = preparePath;function prepareMustache(path, params, hash, open, strip, locInfo) {\n    /*jshint -W040 */\n    // Must use charAt to support IE pre-10\n    var escapeFlag = open.charAt(3) || open.charAt(2),\n        escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n    return new this.MustacheStatement(path, params, hash, escaped, strip, this.locInfo(locInfo));\n  }\n\n  __exports__.prepareMustache = prepareMustache;function prepareRawBlock(openRawBlock, content, close, locInfo) {\n    /*jshint -W040 */\n    if (openRawBlock.path.original !== close) {\n      var errorNode = {loc: openRawBlock.path.loc};\n\n      throw new Exception(openRawBlock.path.original + \" doesn't match \" + close, errorNode);\n    }\n\n    locInfo = this.locInfo(locInfo);\n    var program = new this.Program([content], null, {}, locInfo);\n\n    return new this.BlockStatement(\n        openRawBlock.path, openRawBlock.params, openRawBlock.hash,\n        program, undefined,\n        {}, {}, {},\n        locInfo);\n  }\n\n  __exports__.prepareRawBlock = prepareRawBlock;function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {\n    /*jshint -W040 */\n    // When we are chaining inverse calls, we will not have a close path\n    if (close && close.path && openBlock.path.original !== close.path.original) {\n      var errorNode = {loc: openBlock.path.loc};\n\n      throw new Exception(openBlock.path.original + ' doesn\\'t match ' + close.path.original, errorNode);\n    }\n\n    program.blockParams = openBlock.blockParams;\n\n    var inverse,\n        inverseStrip;\n\n    if (inverseAndProgram) {\n      if (inverseAndProgram.chain) {\n        inverseAndProgram.program.body[0].closeStrip = close.strip;\n      }\n\n      inverseStrip = inverseAndProgram.strip;\n      inverse = inverseAndProgram.program;\n    }\n\n    if (inverted) {\n      inverted = inverse;\n      inverse = program;\n      program = inverted;\n    }\n\n    return new this.BlockStatement(\n        openBlock.path, openBlock.params, openBlock.hash,\n        program, inverse,\n        openBlock.strip, inverseStrip, close && close.strip,\n        this.locInfo(locInfo));\n  }\n\n  __exports__.prepareBlock = prepareBlock;\n  return __exports__;\n})(__module4__);\n\n// handlebars/compiler/base.js\nvar __module8__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__ = {};\n  var parser = __dependency1__;\n  var AST = __dependency2__;\n  var WhitespaceControl = __dependency3__;\n  var Helpers = __dependency4__;\n  var extend = __dependency5__.extend;\n\n  __exports__.parser = parser;\n\n  var yy = {};\n  extend(yy, Helpers, AST);\n\n  function parse(input, options) {\n    // Just return if an already-compiled AST was passed in.\n    if (input.type === 'Program') { return input; }\n\n    parser.yy = yy;\n\n    // Altering the shared object here, but this is ok as parser is a sync operation\n    yy.locInfo = function(locInfo) {\n      return new yy.SourceLocation(options && options.srcName, locInfo);\n    };\n\n    var strip = new WhitespaceControl();\n    return strip.accept(parser.parse(input));\n  }\n\n  __exports__.parse = parse;\n  return __exports__;\n})(__module9__, __module7__, __module10__, __module12__, __module3__);\n\n// handlebars/compiler/compiler.js\nvar __module13__ = (function(__dependency1__, __dependency2__, __dependency3__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Exception = __dependency1__;\n  var isArray = __dependency2__.isArray;\n  var indexOf = __dependency2__.indexOf;\n  var AST = __dependency3__;\n\n  var slice = [].slice;\n\n\n  function Compiler() {}\n\n  __exports__.Compiler = Compiler;// the foundHelper register will disambiguate helper lookup from finding a\n  // function in a context. This is necessary for mustache compatibility, which\n  // requires that context functions in blocks are evaluated by blockHelperMissing,\n  // and then proceed as if the resulting value was provided to blockHelperMissing.\n\n  Compiler.prototype = {\n    compiler: Compiler,\n\n    equals: function(other) {\n      var len = this.opcodes.length;\n      if (other.opcodes.length !== len) {\n        return false;\n      }\n\n      for (var i = 0; i < len; i++) {\n        var opcode = this.opcodes[i],\n            otherOpcode = other.opcodes[i];\n        if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {\n          return false;\n        }\n      }\n\n      // We know that length is the same between the two arrays because they are directly tied\n      // to the opcode behavior above.\n      len = this.children.length;\n      for (i = 0; i < len; i++) {\n        if (!this.children[i].equals(other.children[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    guid: 0,\n\n    compile: function(program, options) {\n      this.sourceNode = [];\n      this.opcodes = [];\n      this.children = [];\n      this.options = options;\n      this.stringParams = options.stringParams;\n      this.trackIds = options.trackIds;\n\n      options.blockParams = options.blockParams || [];\n\n      // These changes will propagate to the other compiler components\n      var knownHelpers = options.knownHelpers;\n      options.knownHelpers = {\n        'helperMissing': true,\n        'blockHelperMissing': true,\n        'each': true,\n        'if': true,\n        'unless': true,\n        'with': true,\n        'log': true,\n        'lookup': true\n      };\n      if (knownHelpers) {\n        for (var name in knownHelpers) {\n          options.knownHelpers[name] = knownHelpers[name];\n        }\n      }\n\n      return this.accept(program);\n    },\n\n    compileProgram: function(program) {\n      var result = new this.compiler().compile(program, this.options);\n      var guid = this.guid++;\n\n      this.usePartial = this.usePartial || result.usePartial;\n\n      this.children[guid] = result;\n      this.useDepths = this.useDepths || result.useDepths;\n\n      return guid;\n    },\n\n    accept: function(node) {\n      this.sourceNode.unshift(node);\n      var ret = this[node.type](node);\n      this.sourceNode.shift();\n      return ret;\n    },\n\n    Program: function(program) {\n      this.options.blockParams.unshift(program.blockParams);\n\n      var body = program.body;\n      for(var i=0, l=body.length; i<l; i++) {\n        this.accept(body[i]);\n      }\n\n      this.options.blockParams.shift();\n\n      this.isSimple = l === 1;\n      this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n      return this;\n    },\n\n    BlockStatement: function(block) {\n      transformLiteralToPath(block);\n\n      var program = block.program,\n          inverse = block.inverse;\n\n      program = program && this.compileProgram(program);\n      inverse = inverse && this.compileProgram(inverse);\n\n      var type = this.classifySexpr(block);\n\n      if (type === 'helper') {\n        this.helperSexpr(block, program, inverse);\n      } else if (type === 'simple') {\n        this.simpleSexpr(block);\n\n        // now that the simple mustache is resolved, we need to\n        // evaluate it by executing `blockHelperMissing`\n        this.opcode('pushProgram', program);\n        this.opcode('pushProgram', inverse);\n        this.opcode('emptyHash');\n        this.opcode('blockValue', block.path.original);\n      } else {\n        this.ambiguousSexpr(block, program, inverse);\n\n        // now that the simple mustache is resolved, we need to\n        // evaluate it by executing `blockHelperMissing`\n        this.opcode('pushProgram', program);\n        this.opcode('pushProgram', inverse);\n        this.opcode('emptyHash');\n        this.opcode('ambiguousBlockValue');\n      }\n\n      this.opcode('append');\n    },\n\n    PartialStatement: function(partial) {\n      this.usePartial = true;\n\n      var params = partial.params;\n      if (params.length > 1) {\n        throw new Exception('Unsupported number of partial arguments: ' + params.length, partial);\n      } else if (!params.length) {\n        params.push({type: 'PathExpression', parts: [], depth: 0});\n      }\n\n      var partialName = partial.name.original,\n          isDynamic = partial.name.type === 'SubExpression';\n      if (isDynamic) {\n        this.accept(partial.name);\n      }\n\n      this.setupFullMustacheParams(partial, undefined, undefined, true);\n\n      var indent = partial.indent || '';\n      if (this.options.preventIndent && indent) {\n        this.opcode('appendContent', indent);\n        indent = '';\n      }\n\n      this.opcode('invokePartial', isDynamic, partialName, indent);\n      this.opcode('append');\n    },\n\n    MustacheStatement: function(mustache) {\n      this.SubExpression(mustache);\n\n      if(mustache.escaped && !this.options.noEscape) {\n        this.opcode('appendEscaped');\n      } else {\n        this.opcode('append');\n      }\n    },\n\n    ContentStatement: function(content) {\n      if (content.value) {\n        this.opcode('appendContent', content.value);\n      }\n    },\n\n    CommentStatement: function() {},\n\n    SubExpression: function(sexpr) {\n      transformLiteralToPath(sexpr);\n      var type = this.classifySexpr(sexpr);\n\n      if (type === 'simple') {\n        this.simpleSexpr(sexpr);\n      } else if (type === 'helper') {\n        this.helperSexpr(sexpr);\n      } else {\n        this.ambiguousSexpr(sexpr);\n      }\n    },\n    ambiguousSexpr: function(sexpr, program, inverse) {\n      var path = sexpr.path,\n          name = path.parts[0],\n          isBlock = program != null || inverse != null;\n\n      this.opcode('getContext', path.depth);\n\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n\n      this.accept(path);\n\n      this.opcode('invokeAmbiguous', name, isBlock);\n    },\n\n    simpleSexpr: function(sexpr) {\n      this.accept(sexpr.path);\n      this.opcode('resolvePossibleLambda');\n    },\n\n    helperSexpr: function(sexpr, program, inverse) {\n      var params = this.setupFullMustacheParams(sexpr, program, inverse),\n          path = sexpr.path,\n          name = path.parts[0];\n\n      if (this.options.knownHelpers[name]) {\n        this.opcode('invokeKnownHelper', params.length, name);\n      } else if (this.options.knownHelpersOnly) {\n        throw new Exception(\"You specified knownHelpersOnly, but used the unknown helper \" + name, sexpr);\n      } else {\n        path.falsy = true;\n\n        this.accept(path);\n        this.opcode('invokeHelper', params.length, path.original, AST.helpers.simpleId(path));\n      }\n    },\n\n    PathExpression: function(path) {\n      this.addDepth(path.depth);\n      this.opcode('getContext', path.depth);\n\n      var name = path.parts[0],\n          scoped = AST.helpers.scopedId(path),\n          blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n      if (blockParamId) {\n        this.opcode('lookupBlockParam', blockParamId, path.parts);\n      } else  if (!name) {\n        // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n        this.opcode('pushContext');\n      } else if (path.data) {\n        this.options.data = true;\n        this.opcode('lookupData', path.depth, path.parts);\n      } else {\n        this.opcode('lookupOnContext', path.parts, path.falsy, scoped);\n      }\n    },\n\n    StringLiteral: function(string) {\n      this.opcode('pushString', string.value);\n    },\n\n    NumberLiteral: function(number) {\n      this.opcode('pushLiteral', number.value);\n    },\n\n    BooleanLiteral: function(bool) {\n      this.opcode('pushLiteral', bool.value);\n    },\n\n    Hash: function(hash) {\n      var pairs = hash.pairs, i, l;\n\n      this.opcode('pushHash');\n\n      for (i=0, l=pairs.length; i<l; i++) {\n        this.pushParam(pairs[i].value);\n      }\n      while (i--) {\n        this.opcode('assignToHash', pairs[i].key);\n      }\n      this.opcode('popHash');\n    },\n\n    // HELPERS\n    opcode: function(name) {\n      this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc });\n    },\n\n    addDepth: function(depth) {\n      if (!depth) {\n        return;\n      }\n\n      this.useDepths = true;\n    },\n\n    classifySexpr: function(sexpr) {\n      var isSimple = AST.helpers.simpleId(sexpr.path);\n\n      var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n      // a mustache is an eligible helper if:\n      // * its id is simple (a single part, not `this` or `..`)\n      var isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n      // if a mustache is an eligible helper but not a definite\n      // helper, it is ambiguous, and will be resolved in a later\n      // pass or at runtime.\n      var isEligible = !isBlockParam && (isHelper || isSimple);\n\n      var options = this.options;\n\n      // if ambiguous, we can possibly resolve the ambiguity now\n      // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n      if (isEligible && !isHelper) {\n        var name = sexpr.path.parts[0];\n\n        if (options.knownHelpers[name]) {\n          isHelper = true;\n        } else if (options.knownHelpersOnly) {\n          isEligible = false;\n        }\n      }\n\n      if (isHelper) { return 'helper'; }\n      else if (isEligible) { return 'ambiguous'; }\n      else { return 'simple'; }\n    },\n\n    pushParams: function(params) {\n      for(var i=0, l=params.length; i<l; i++) {\n        this.pushParam(params[i]);\n      }\n    },\n\n    pushParam: function(val) {\n      var value = val.value != null ? val.value : val.original || '';\n\n      if (this.stringParams) {\n        if (value.replace) {\n          value = value\n              .replace(/^(\\.?\\.\\/)*/g, '')\n              .replace(/\\//g, '.');\n        }\n\n        if(val.depth) {\n          this.addDepth(val.depth);\n        }\n        this.opcode('getContext', val.depth || 0);\n        this.opcode('pushStringParam', value, val.type);\n\n        if (val.type === 'SubExpression') {\n          // SubExpressions get evaluated and passed in\n          // in string params mode.\n          this.accept(val);\n        }\n      } else {\n        if (this.trackIds) {\n          var blockParamIndex;\n          if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n             blockParamIndex = this.blockParamIndex(val.parts[0]);\n          }\n          if (blockParamIndex) {\n            var blockParamChild = val.parts.slice(1).join('.');\n            this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n          } else {\n            value = val.original || value;\n            if (value.replace) {\n              value = value\n                  .replace(/^\\.\\//g, '')\n                  .replace(/^\\.$/g, '');\n            }\n\n            this.opcode('pushId', val.type, value);\n          }\n        }\n        this.accept(val);\n      }\n    },\n\n    setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n      var params = sexpr.params;\n      this.pushParams(params);\n\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n\n      if (sexpr.hash) {\n        this.accept(sexpr.hash);\n      } else {\n        this.opcode('emptyHash', omitEmpty);\n      }\n\n      return params;\n    },\n\n    blockParamIndex: function(name) {\n      for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {\n        var blockParams = this.options.blockParams[depth],\n            param = blockParams && indexOf(blockParams, name);\n        if (blockParams && param >= 0) {\n          return [depth, param];\n        }\n      }\n    }\n  };\n\n  function precompile(input, options, env) {\n    if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {\n      throw new Exception(\"You must pass a string or Handlebars AST to Handlebars.precompile. You passed \" + input);\n    }\n\n    options = options || {};\n    if (!('data' in options)) {\n      options.data = true;\n    }\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    var ast = env.parse(input, options);\n    var environment = new env.Compiler().compile(ast, options);\n    return new env.JavaScriptCompiler().compile(environment, options);\n  }\n\n  __exports__.precompile = precompile;function compile(input, options, env) {\n    if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {\n      throw new Exception(\"You must pass a string or Handlebars AST to Handlebars.compile. You passed \" + input);\n    }\n\n    options = options || {};\n\n    if (!('data' in options)) {\n      options.data = true;\n    }\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    var compiled;\n\n    function compileInput() {\n      var ast = env.parse(input, options);\n      var environment = new env.Compiler().compile(ast, options);\n      var templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);\n      return env.template(templateSpec);\n    }\n\n    // Template is only compiled on first use and cached after that point.\n    var ret = function(context, options) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled.call(this, context, options);\n    };\n    ret._setup = function(options) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled._setup(options);\n    };\n    ret._child = function(i, data, blockParams, depths) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled._child(i, data, blockParams, depths);\n    };\n    return ret;\n  }\n\n  __exports__.compile = compile;function argEquals(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (isArray(a) && isArray(b) && a.length === b.length) {\n      for (var i = 0; i < a.length; i++) {\n        if (!argEquals(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  function transformLiteralToPath(sexpr) {\n    if (!sexpr.path.parts) {\n      var literal = sexpr.path;\n      // Casting to string here to make false and 0 literal values play nicely with the rest\n      // of the system.\n      sexpr.path = new AST.PathExpression(false, 0, [literal.original+''], literal.original+'', literal.loc);\n    }\n  }\n  return __exports__;\n})(__module4__, __module3__, __module7__);\n\n// handlebars/compiler/code-gen.js\nvar __module15__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__;\n  var isArray = __dependency1__.isArray;\n\n  try {\n    var SourceMap = require('source-map'),\n          SourceNode = SourceMap.SourceNode;\n  } catch (err) {\n    /* istanbul ignore next: tested but not covered in istanbul due to dist build  */\n    SourceNode = function(line, column, srcFile, chunks) {\n      this.src = '';\n      if (chunks) {\n        this.add(chunks);\n      }\n    };\n    /* istanbul ignore next */\n    SourceNode.prototype = {\n      add: function(chunks) {\n        if (isArray(chunks)) {\n          chunks = chunks.join('');\n        }\n        this.src += chunks;\n      },\n      prepend: function(chunks) {\n        if (isArray(chunks)) {\n          chunks = chunks.join('');\n        }\n        this.src = chunks + this.src;\n      },\n      toStringWithSourceMap: function() {\n        return {code: this.toString()};\n      },\n      toString: function() {\n        return this.src;\n      }\n    };\n  }\n\n\n  function castChunk(chunk, codeGen, loc) {\n    if (isArray(chunk)) {\n      var ret = [];\n\n      for (var i = 0, len = chunk.length; i < len; i++) {\n        ret.push(codeGen.wrap(chunk[i], loc));\n      }\n      return ret;\n    } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n      // Handle primitives that the SourceNode will throw up on\n      return chunk+'';\n    }\n    return chunk;\n  }\n\n\n  function CodeGen(srcFile) {\n    this.srcFile = srcFile;\n    this.source = [];\n  }\n\n  CodeGen.prototype = {\n    prepend: function(source, loc) {\n      this.source.unshift(this.wrap(source, loc));\n    },\n    push: function(source, loc) {\n      this.source.push(this.wrap(source, loc));\n    },\n\n    merge: function() {\n      var source = this.empty();\n      this.each(function(line) {\n        source.add(['  ', line, '\\n']);\n      });\n      return source;\n    },\n\n    each: function(iter) {\n      for (var i = 0, len = this.source.length; i < len; i++) {\n        iter(this.source[i]);\n      }\n    },\n\n    empty: function(loc) {\n      loc = loc || this.currentLocation || {start:{}};\n      return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n    },\n    wrap: function(chunk, loc) {\n      if (chunk instanceof SourceNode) {\n        return chunk;\n      }\n\n      loc = loc || this.currentLocation || {start:{}};\n      chunk = castChunk(chunk, this, loc);\n\n      return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);\n    },\n\n    functionCall: function(fn, type, params) {\n      params = this.generateList(params);\n      return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n    },\n\n    quotedString: function(str) {\n      return '\"' + (str + '')\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/\\u2028/g, '\\\\u2028')   // Per Ecma-262 7.3 + 7.8.4\n        .replace(/\\u2029/g, '\\\\u2029') + '\"';\n    },\n\n    objectLiteral: function(obj) {\n      var pairs = [];\n\n      for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n          var value = castChunk(obj[key], this);\n          if (value !== 'undefined') {\n            pairs.push([this.quotedString(key), ':', value]);\n          }\n        }\n      }\n\n      var ret = this.generateList(pairs);\n      ret.prepend('{');\n      ret.add('}');\n      return ret;\n    },\n\n\n    generateList: function(entries, loc) {\n      var ret = this.empty(loc);\n\n      for (var i = 0, len = entries.length; i < len; i++) {\n        if (i) {\n          ret.add(',');\n        }\n\n        ret.add(castChunk(entries[i], this, loc));\n      }\n\n      return ret;\n    },\n\n    generateArray: function(entries, loc) {\n      var ret = this.generateList(entries, loc);\n      ret.prepend('[');\n      ret.add(']');\n\n      return ret;\n    }\n  };\n\n  __exports__ = CodeGen;\n  return __exports__;\n})(__module3__);\n\n// handlebars/compiler/javascript-compiler.js\nvar __module14__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {\n  \"use strict\";\n  var __exports__;\n  var COMPILER_REVISION = __dependency1__.COMPILER_REVISION;\n  var REVISION_CHANGES = __dependency1__.REVISION_CHANGES;\n  var Exception = __dependency2__;\n  var isArray = __dependency3__.isArray;\n  var CodeGen = __dependency4__;\n\n  function Literal(value) {\n    this.value = value;\n  }\n\n  function JavaScriptCompiler() {}\n\n  JavaScriptCompiler.prototype = {\n    // PUBLIC API: You can override these methods in a subclass to provide\n    // alternative compiled forms for name lookup and buffering semantics\n    nameLookup: function(parent, name /* , type*/) {\n      if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {\n        return [parent, \".\", name];\n      } else {\n        return [parent, \"['\", name, \"']\"];\n      }\n    },\n    depthedLookup: function(name) {\n      return [this.aliasable('this.lookup'), '(depths, \"', name, '\")'];\n    },\n\n    compilerInfo: function() {\n      var revision = COMPILER_REVISION,\n          versions = REVISION_CHANGES[revision];\n      return [revision, versions];\n    },\n\n    appendToBuffer: function(source, location, explicit) {\n      // Force a source as this simplifies the merge logic.\n      if (!isArray(source)) {\n        source = [source];\n      }\n      source = this.source.wrap(source, location);\n\n      if (this.environment.isSimple) {\n        return ['return ', source, ';'];\n      } else if (explicit) {\n        // This is a case where the buffer operation occurs as a child of another\n        // construct, generally braces. We have to explicitly output these buffer\n        // operations to ensure that the emitted code goes in the correct location.\n        return ['buffer += ', source, ';'];\n      } else {\n        source.appendToBuffer = true;\n        return source;\n      }\n    },\n\n    initializeBuffer: function() {\n      return this.quotedString(\"\");\n    },\n    // END PUBLIC API\n\n    compile: function(environment, options, context, asObject) {\n      this.environment = environment;\n      this.options = options;\n      this.stringParams = this.options.stringParams;\n      this.trackIds = this.options.trackIds;\n      this.precompile = !asObject;\n\n      this.name = this.environment.name;\n      this.isChild = !!context;\n      this.context = context || {\n        programs: [],\n        environments: []\n      };\n\n      this.preamble();\n\n      this.stackSlot = 0;\n      this.stackVars = [];\n      this.aliases = {};\n      this.registers = { list: [] };\n      this.hashes = [];\n      this.compileStack = [];\n      this.inlineStack = [];\n      this.blockParams = [];\n\n      this.compileChildren(environment, options);\n\n      this.useDepths = this.useDepths || environment.useDepths || this.options.compat;\n      this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n      var opcodes = environment.opcodes,\n          opcode,\n          firstLoc,\n          i,\n          l;\n\n      for (i = 0, l = opcodes.length; i < l; i++) {\n        opcode = opcodes[i];\n\n        this.source.currentLocation = opcode.loc;\n        firstLoc = firstLoc || opcode.loc;\n        this[opcode.opcode].apply(this, opcode.args);\n      }\n\n      // Flush any trailing content that might be pending.\n      this.source.currentLocation = firstLoc;\n      this.pushSource('');\n\n      /* istanbul ignore next */\n      if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n        throw new Exception('Compile completed with content left on stack');\n      }\n\n      var fn = this.createFunctionContext(asObject);\n      if (!this.isChild) {\n        var ret = {\n          compiler: this.compilerInfo(),\n          main: fn\n        };\n        var programs = this.context.programs;\n        for (i = 0, l = programs.length; i < l; i++) {\n          if (programs[i]) {\n            ret[i] = programs[i];\n          }\n        }\n\n        if (this.environment.usePartial) {\n          ret.usePartial = true;\n        }\n        if (this.options.data) {\n          ret.useData = true;\n        }\n        if (this.useDepths) {\n          ret.useDepths = true;\n        }\n        if (this.useBlockParams) {\n          ret.useBlockParams = true;\n        }\n        if (this.options.compat) {\n          ret.compat = true;\n        }\n\n        if (!asObject) {\n          ret.compiler = JSON.stringify(ret.compiler);\n\n          this.source.currentLocation = {start: {line: 1, column: 0}};\n          ret = this.objectLiteral(ret);\n\n          if (options.srcName) {\n            ret = ret.toStringWithSourceMap({file: options.destName});\n            ret.map = ret.map && ret.map.toString();\n          } else {\n            ret = ret.toString();\n          }\n        } else {\n          ret.compilerOptions = this.options;\n        }\n\n        return ret;\n      } else {\n        return fn;\n      }\n    },\n\n    preamble: function() {\n      // track the last context pushed into place to allow skipping the\n      // getContext opcode when it would be a noop\n      this.lastContext = 0;\n      this.source = new CodeGen(this.options.srcName);\n    },\n\n    createFunctionContext: function(asObject) {\n      var varDeclarations = '';\n\n      var locals = this.stackVars.concat(this.registers.list);\n      if(locals.length > 0) {\n        varDeclarations += \", \" + locals.join(\", \");\n      }\n\n      // Generate minimizer alias mappings\n      //\n      // When using true SourceNodes, this will update all references to the given alias\n      // as the source nodes are reused in situ. For the non-source node compilation mode,\n      // aliases will not be used, but this case is already being run on the client and\n      // we aren't concern about minimizing the template size.\n      var aliasCount = 0;\n      for (var alias in this.aliases) {\n        var node = this.aliases[alias];\n\n        if (this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1) {\n          varDeclarations += ', alias' + (++aliasCount) + '=' + alias;\n          node.children[0] = 'alias' + aliasCount;\n        }\n      }\n\n      var params = [\"depth0\", \"helpers\", \"partials\", \"data\"];\n\n      if (this.useBlockParams || this.useDepths) {\n        params.push('blockParams');\n      }\n      if (this.useDepths) {\n        params.push('depths');\n      }\n\n      // Perform a second pass over the output to merge content when possible\n      var source = this.mergeSource(varDeclarations);\n\n      if (asObject) {\n        params.push(source);\n\n        return Function.apply(this, params);\n      } else {\n        return this.source.wrap(['function(', params.join(','), ') {\\n  ', source, '}']);\n      }\n    },\n    mergeSource: function(varDeclarations) {\n      var isSimple = this.environment.isSimple,\n          appendOnly = !this.forceBuffer,\n          appendFirst,\n\n          sourceSeen,\n          bufferStart,\n          bufferEnd;\n      this.source.each(function(line) {\n        if (line.appendToBuffer) {\n          if (bufferStart) {\n            line.prepend('  + ');\n          } else {\n            bufferStart = line;\n          }\n          bufferEnd = line;\n        } else {\n          if (bufferStart) {\n            if (!sourceSeen) {\n              appendFirst = true;\n            } else {\n              bufferStart.prepend('buffer += ');\n            }\n            bufferEnd.add(';');\n            bufferStart = bufferEnd = undefined;\n          }\n\n          sourceSeen = true;\n          if (!isSimple) {\n            appendOnly = false;\n          }\n        }\n      });\n\n\n      if (appendOnly) {\n        if (bufferStart) {\n          bufferStart.prepend('return ');\n          bufferEnd.add(';');\n        } else if (!sourceSeen) {\n          this.source.push('return \"\";');\n        }\n      } else {\n        varDeclarations += \", buffer = \" + (appendFirst ? '' : this.initializeBuffer());\n\n        if (bufferStart) {\n          bufferStart.prepend('return buffer + ');\n          bufferEnd.add(';');\n        } else {\n          this.source.push('return buffer;');\n        }\n      }\n\n      if (varDeclarations) {\n        this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n'));\n      }\n\n      return this.source.merge();\n    },\n\n    // [blockValue]\n    //\n    // On stack, before: hash, inverse, program, value\n    // On stack, after: return value of blockHelperMissing\n    //\n    // The purpose of this opcode is to take a block of the form\n    // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n    // replace it on the stack with the result of properly\n    // invoking blockHelperMissing.\n    blockValue: function(name) {\n      var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),\n          params = [this.contextName(0)];\n      this.setupHelperArgs(name, 0, params);\n\n      var blockName = this.popStack();\n      params.splice(1, 0, blockName);\n\n      this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n    },\n\n    // [ambiguousBlockValue]\n    //\n    // On stack, before: hash, inverse, program, value\n    // Compiler value, before: lastHelper=value of last found helper, if any\n    // On stack, after, if no lastHelper: same as [blockValue]\n    // On stack, after, if lastHelper: value\n    ambiguousBlockValue: function() {\n      // We're being a bit cheeky and reusing the options value from the prior exec\n      var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),\n          params = [this.contextName(0)];\n      this.setupHelperArgs('', 0, params, true);\n\n      this.flushInline();\n\n      var current = this.topStack();\n      params.splice(1, 0, current);\n\n      this.pushSource([\n          'if (!', this.lastHelper, ') { ',\n            current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params),\n          '}']);\n    },\n\n    // [appendContent]\n    //\n    // On stack, before: ...\n    // On stack, after: ...\n    //\n    // Appends the string value of `content` to the current buffer\n    appendContent: function(content) {\n      if (this.pendingContent) {\n        content = this.pendingContent + content;\n      } else {\n        this.pendingLocation = this.source.currentLocation;\n      }\n\n      this.pendingContent = content;\n    },\n\n    // [append]\n    //\n    // On stack, before: value, ...\n    // On stack, after: ...\n    //\n    // Coerces `value` to a String and appends it to the current buffer.\n    //\n    // If `value` is truthy, or 0, it is coerced into a string and appended\n    // Otherwise, the empty string is appended\n    append: function() {\n      if (this.isInline()) {\n        this.replaceStack(function(current) {\n          return [' != null ? ', current, ' : \"\"'];\n        });\n\n        this.pushSource(this.appendToBuffer(this.popStack()));\n      } else {\n        var local = this.popStack();\n        this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);\n        if (this.environment.isSimple) {\n          this.pushSource(['else { ', this.appendToBuffer(\"''\", undefined, true), ' }']);\n        }\n      }\n    },\n\n    // [appendEscaped]\n    //\n    // On stack, before: value, ...\n    // On stack, after: ...\n    //\n    // Escape `value` and append it to the buffer\n    appendEscaped: function() {\n      this.pushSource(this.appendToBuffer(\n          [this.aliasable('this.escapeExpression'), '(', this.popStack(), ')']));\n    },\n\n    // [getContext]\n    //\n    // On stack, before: ...\n    // On stack, after: ...\n    // Compiler value, after: lastContext=depth\n    //\n    // Set the value of the `lastContext` compiler value to the depth\n    getContext: function(depth) {\n      this.lastContext = depth;\n    },\n\n    // [pushContext]\n    //\n    // On stack, before: ...\n    // On stack, after: currentContext, ...\n    //\n    // Pushes the value of the current context onto the stack.\n    pushContext: function() {\n      this.pushStackLiteral(this.contextName(this.lastContext));\n    },\n\n    // [lookupOnContext]\n    //\n    // On stack, before: ...\n    // On stack, after: currentContext[name], ...\n    //\n    // Looks up the value of `name` on the current context and pushes\n    // it onto the stack.\n    lookupOnContext: function(parts, falsy, scoped) {\n      var i = 0;\n\n      if (!scoped && this.options.compat && !this.lastContext) {\n        // The depthed query is expected to handle the undefined logic for the root level that\n        // is implemented below, so we evaluate that directly in compat mode\n        this.push(this.depthedLookup(parts[i++]));\n      } else {\n        this.pushContext();\n      }\n\n      this.resolvePath('context', parts, i, falsy);\n    },\n\n    // [lookupBlockParam]\n    //\n    // On stack, before: ...\n    // On stack, after: blockParam[name], ...\n    //\n    // Looks up the value of `parts` on the given block param and pushes\n    // it onto the stack.\n    lookupBlockParam: function(blockParamId, parts) {\n      this.useBlockParams = true;\n\n      this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n      this.resolvePath('context', parts, 1);\n    },\n\n    // [lookupData]\n    //\n    // On stack, before: ...\n    // On stack, after: data, ...\n    //\n    // Push the data lookup operator\n    lookupData: function(depth, parts) {\n      /*jshint -W083 */\n      if (!depth) {\n        this.pushStackLiteral('data');\n      } else {\n        this.pushStackLiteral('this.data(data, ' + depth + ')');\n      }\n\n      this.resolvePath('data', parts, 0, true);\n    },\n\n    resolvePath: function(type, parts, i, falsy) {\n      /*jshint -W083 */\n      if (this.options.strict || this.options.assumeObjects) {\n        this.push(strictLookup(this.options.strict, this, parts, type));\n        return;\n      }\n\n      var len = parts.length;\n      for (; i < len; i++) {\n        this.replaceStack(function(current) {\n          var lookup = this.nameLookup(current, parts[i], type);\n          // We want to ensure that zero and false are handled properly if the context (falsy flag)\n          // needs to have the special handling for these values.\n          if (!falsy) {\n            return [' != null ? ', lookup, ' : ', current];\n          } else {\n            // Otherwise we can use generic falsy handling\n            return [' && ', lookup];\n          }\n        });\n      }\n    },\n\n    // [resolvePossibleLambda]\n    //\n    // On stack, before: value, ...\n    // On stack, after: resolved value, ...\n    //\n    // If the `value` is a lambda, replace it on the stack by\n    // the return value of the lambda\n    resolvePossibleLambda: function() {\n      this.push([this.aliasable('this.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);\n    },\n\n    // [pushStringParam]\n    //\n    // On stack, before: ...\n    // On stack, after: string, currentContext, ...\n    //\n    // This opcode is designed for use in string mode, which\n    // provides the string value of a parameter along with its\n    // depth rather than resolving it immediately.\n    pushStringParam: function(string, type) {\n      this.pushContext();\n      this.pushString(type);\n\n      // If it's a subexpression, the string result\n      // will be pushed after this opcode.\n      if (type !== 'SubExpression') {\n        if (typeof string === 'string') {\n          this.pushString(string);\n        } else {\n          this.pushStackLiteral(string);\n        }\n      }\n    },\n\n    emptyHash: function(omitEmpty) {\n      if (this.trackIds) {\n        this.push('{}'); // hashIds\n      }\n      if (this.stringParams) {\n        this.push('{}'); // hashContexts\n        this.push('{}'); // hashTypes\n      }\n      this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n    },\n    pushHash: function() {\n      if (this.hash) {\n        this.hashes.push(this.hash);\n      }\n      this.hash = {values: [], types: [], contexts: [], ids: []};\n    },\n    popHash: function() {\n      var hash = this.hash;\n      this.hash = this.hashes.pop();\n\n      if (this.trackIds) {\n        this.push(this.objectLiteral(hash.ids));\n      }\n      if (this.stringParams) {\n        this.push(this.objectLiteral(hash.contexts));\n        this.push(this.objectLiteral(hash.types));\n      }\n\n      this.push(this.objectLiteral(hash.values));\n    },\n\n    // [pushString]\n    //\n    // On stack, before: ...\n    // On stack, after: quotedString(string), ...\n    //\n    // Push a quoted version of `string` onto the stack\n    pushString: function(string) {\n      this.pushStackLiteral(this.quotedString(string));\n    },\n\n    // [pushLiteral]\n    //\n    // On stack, before: ...\n    // On stack, after: value, ...\n    //\n    // Pushes a value onto the stack. This operation prevents\n    // the compiler from creating a temporary variable to hold\n    // it.\n    pushLiteral: function(value) {\n      this.pushStackLiteral(value);\n    },\n\n    // [pushProgram]\n    //\n    // On stack, before: ...\n    // On stack, after: program(guid), ...\n    //\n    // Push a program expression onto the stack. This takes\n    // a compile-time guid and converts it into a runtime-accessible\n    // expression.\n    pushProgram: function(guid) {\n      if (guid != null) {\n        this.pushStackLiteral(this.programExpression(guid));\n      } else {\n        this.pushStackLiteral(null);\n      }\n    },\n\n    // [invokeHelper]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of helper invocation\n    //\n    // Pops off the helper's parameters, invokes the helper,\n    // and pushes the helper's return value onto the stack.\n    //\n    // If the helper is not found, `helperMissing` is called.\n    invokeHelper: function(paramSize, name, isSimple) {\n      var nonHelper = this.popStack();\n      var helper = this.setupHelper(paramSize, name);\n      var simple = isSimple ? [helper.name, ' || '] : '';\n\n      var lookup = ['('].concat(simple, nonHelper);\n      if (!this.options.strict) {\n        lookup.push(' || ', this.aliasable('helpers.helperMissing'));\n      }\n      lookup.push(')');\n\n      this.push(this.source.functionCall(lookup, 'call', helper.callParams));\n    },\n\n    // [invokeKnownHelper]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of helper invocation\n    //\n    // This operation is used when the helper is known to exist,\n    // so a `helperMissing` fallback is not required.\n    invokeKnownHelper: function(paramSize, name) {\n      var helper = this.setupHelper(paramSize, name);\n      this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n    },\n\n    // [invokeAmbiguous]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of disambiguation\n    //\n    // This operation is used when an expression like `{{foo}}`\n    // is provided, but we don't know at compile-time whether it\n    // is a helper or a path.\n    //\n    // This operation emits more code than the other options,\n    // and can be avoided by passing the `knownHelpers` and\n    // `knownHelpersOnly` flags at compile-time.\n    invokeAmbiguous: function(name, helperCall) {\n      this.useRegister('helper');\n\n      var nonHelper = this.popStack();\n\n      this.emptyHash();\n      var helper = this.setupHelper(0, name, helperCall);\n\n      var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');\n\n      var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n      if (!this.options.strict) {\n        lookup[0] = '(helper = ';\n        lookup.push(\n          ' != null ? helper : ',\n          this.aliasable('helpers.helperMissing')\n        );\n      }\n\n      this.push([\n          '(', lookup,\n          (helper.paramsInit ? ['),(', helper.paramsInit] : []), '),',\n          '(typeof helper === ', this.aliasable('\"function\"'), ' ? ',\n          this.source.functionCall('helper','call', helper.callParams), ' : helper))'\n      ]);\n    },\n\n    // [invokePartial]\n    //\n    // On stack, before: context, ...\n    // On stack after: result of partial invocation\n    //\n    // This operation pops off a context, invokes a partial with that context,\n    // and pushes the result of the invocation back.\n    invokePartial: function(isDynamic, name, indent) {\n      var params = [],\n          options = this.setupParams(name, 1, params, false);\n\n      if (isDynamic) {\n        name = this.popStack();\n        delete options.name;\n      }\n\n      if (indent) {\n        options.indent = JSON.stringify(indent);\n      }\n      options.helpers = 'helpers';\n      options.partials = 'partials';\n\n      if (!isDynamic) {\n        params.unshift(this.nameLookup('partials', name, 'partial'));\n      } else {\n        params.unshift(name);\n      }\n\n      if (this.options.compat) {\n        options.depths = 'depths';\n      }\n      options = this.objectLiteral(options);\n      params.push(options);\n\n      this.push(this.source.functionCall('this.invokePartial', '', params));\n    },\n\n    // [assignToHash]\n    //\n    // On stack, before: value, ..., hash, ...\n    // On stack, after: ..., hash, ...\n    //\n    // Pops a value off the stack and assigns it to the current hash\n    assignToHash: function(key) {\n      var value = this.popStack(),\n          context,\n          type,\n          id;\n\n      if (this.trackIds) {\n        id = this.popStack();\n      }\n      if (this.stringParams) {\n        type = this.popStack();\n        context = this.popStack();\n      }\n\n      var hash = this.hash;\n      if (context) {\n        hash.contexts[key] = context;\n      }\n      if (type) {\n        hash.types[key] = type;\n      }\n      if (id) {\n        hash.ids[key] = id;\n      }\n      hash.values[key] = value;\n    },\n\n    pushId: function(type, name, child) {\n      if (type === 'BlockParam') {\n        this.pushStackLiteral(\n            'blockParams[' + name[0] + '].path[' + name[1] + ']'\n            + (child ? ' + ' + JSON.stringify('.' + child) : ''));\n      } else if (type === 'PathExpression') {\n        this.pushString(name);\n      } else if (type === 'SubExpression') {\n        this.pushStackLiteral('true');\n      } else {\n        this.pushStackLiteral('null');\n      }\n    },\n\n    // HELPERS\n\n    compiler: JavaScriptCompiler,\n\n    compileChildren: function(environment, options) {\n      var children = environment.children, child, compiler;\n\n      for(var i=0, l=children.length; i<l; i++) {\n        child = children[i];\n        compiler = new this.compiler();\n\n        var index = this.matchExistingProgram(child);\n\n        if (index == null) {\n          this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children\n          index = this.context.programs.length;\n          child.index = index;\n          child.name = 'program' + index;\n          this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);\n          this.context.environments[index] = child;\n\n          this.useDepths = this.useDepths || compiler.useDepths;\n          this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n        } else {\n          child.index = index;\n          child.name = 'program' + index;\n\n          this.useDepths = this.useDepths || child.useDepths;\n          this.useBlockParams = this.useBlockParams || child.useBlockParams;\n        }\n      }\n    },\n    matchExistingProgram: function(child) {\n      for (var i = 0, len = this.context.environments.length; i < len; i++) {\n        var environment = this.context.environments[i];\n        if (environment && environment.equals(child)) {\n          return i;\n        }\n      }\n    },\n\n    programExpression: function(guid) {\n      var child = this.environment.children[guid],\n          programParams = [child.index, 'data', child.blockParams];\n\n      if (this.useBlockParams || this.useDepths) {\n        programParams.push('blockParams');\n      }\n      if (this.useDepths) {\n        programParams.push('depths');\n      }\n\n      return 'this.program(' + programParams.join(', ') + ')';\n    },\n\n    useRegister: function(name) {\n      if(!this.registers[name]) {\n        this.registers[name] = true;\n        this.registers.list.push(name);\n      }\n    },\n\n    push: function(expr) {\n      if (!(expr instanceof Literal)) {\n        expr = this.source.wrap(expr);\n      }\n\n      this.inlineStack.push(expr);\n      return expr;\n    },\n\n    pushStackLiteral: function(item) {\n      this.push(new Literal(item));\n    },\n\n    pushSource: function(source) {\n      if (this.pendingContent) {\n        this.source.push(\n            this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));\n        this.pendingContent = undefined;\n      }\n\n      if (source) {\n        this.source.push(source);\n      }\n    },\n\n    replaceStack: function(callback) {\n      var prefix = ['('],\n          stack,\n          createdStack,\n          usedLiteral;\n\n      /* istanbul ignore next */\n      if (!this.isInline()) {\n        throw new Exception('replaceStack on non-inline');\n      }\n\n      // We want to merge the inline statement into the replacement statement via ','\n      var top = this.popStack(true);\n\n      if (top instanceof Literal) {\n        // Literals do not need to be inlined\n        stack = [top.value];\n        prefix = ['(', stack];\n        usedLiteral = true;\n      } else {\n        // Get or create the current stack name for use by the inline\n        createdStack = true;\n        var name = this.incrStack();\n\n        prefix = ['((', this.push(name), ' = ', top, ')'];\n        stack = this.topStack();\n      }\n\n      var item = callback.call(this, stack);\n\n      if (!usedLiteral) {\n        this.popStack();\n      }\n      if (createdStack) {\n        this.stackSlot--;\n      }\n      this.push(prefix.concat(item, ')'));\n    },\n\n    incrStack: function() {\n      this.stackSlot++;\n      if(this.stackSlot > this.stackVars.length) { this.stackVars.push(\"stack\" + this.stackSlot); }\n      return this.topStackName();\n    },\n    topStackName: function() {\n      return \"stack\" + this.stackSlot;\n    },\n    flushInline: function() {\n      var inlineStack = this.inlineStack;\n      this.inlineStack = [];\n      for (var i = 0, len = inlineStack.length; i < len; i++) {\n        var entry = inlineStack[i];\n        /* istanbul ignore if */\n        if (entry instanceof Literal) {\n          this.compileStack.push(entry);\n        } else {\n          var stack = this.incrStack();\n          this.pushSource([stack, ' = ', entry, ';']);\n          this.compileStack.push(stack);\n        }\n      }\n    },\n    isInline: function() {\n      return this.inlineStack.length;\n    },\n\n    popStack: function(wrapped) {\n      var inline = this.isInline(),\n          item = (inline ? this.inlineStack : this.compileStack).pop();\n\n      if (!wrapped && (item instanceof Literal)) {\n        return item.value;\n      } else {\n        if (!inline) {\n          /* istanbul ignore next */\n          if (!this.stackSlot) {\n            throw new Exception('Invalid stack pop');\n          }\n          this.stackSlot--;\n        }\n        return item;\n      }\n    },\n\n    topStack: function() {\n      var stack = (this.isInline() ? this.inlineStack : this.compileStack),\n          item = stack[stack.length - 1];\n\n      /* istanbul ignore if */\n      if (item instanceof Literal) {\n        return item.value;\n      } else {\n        return item;\n      }\n    },\n\n    contextName: function(context) {\n      if (this.useDepths && context) {\n        return 'depths[' + context + ']';\n      } else {\n        return 'depth' + context;\n      }\n    },\n\n    quotedString: function(str) {\n      return this.source.quotedString(str);\n    },\n\n    objectLiteral: function(obj) {\n      return this.source.objectLiteral(obj);\n    },\n\n    aliasable: function(name) {\n      var ret = this.aliases[name];\n      if (ret) {\n        ret.referenceCount++;\n        return ret;\n      }\n\n      ret = this.aliases[name] = this.source.wrap(name);\n      ret.aliasable = true;\n      ret.referenceCount = 1;\n\n      return ret;\n    },\n\n    setupHelper: function(paramSize, name, blockHelper) {\n      var params = [],\n          paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n      var foundHelper = this.nameLookup('helpers', name, 'helper');\n\n      return {\n        params: params,\n        paramsInit: paramsInit,\n        name: foundHelper,\n        callParams: [this.contextName(0)].concat(params)\n      };\n    },\n\n    setupParams: function(helper, paramSize, params) {\n      var options = {}, contexts = [], types = [], ids = [], param;\n\n      options.name = this.quotedString(helper);\n      options.hash = this.popStack();\n\n      if (this.trackIds) {\n        options.hashIds = this.popStack();\n      }\n      if (this.stringParams) {\n        options.hashTypes = this.popStack();\n        options.hashContexts = this.popStack();\n      }\n\n      var inverse = this.popStack(),\n          program = this.popStack();\n\n      // Avoid setting fn and inverse if neither are set. This allows\n      // helpers to do a check for `if (options.fn)`\n      if (program || inverse) {\n        options.fn = program || 'this.noop';\n        options.inverse = inverse || 'this.noop';\n      }\n\n      // The parameters go on to the stack in order (making sure that they are evaluated in order)\n      // so we need to pop them off the stack in reverse order\n      var i = paramSize;\n      while (i--) {\n        param = this.popStack();\n        params[i] = param;\n\n        if (this.trackIds) {\n          ids[i] = this.popStack();\n        }\n        if (this.stringParams) {\n          types[i] = this.popStack();\n          contexts[i] = this.popStack();\n        }\n      }\n\n      if (this.trackIds) {\n        options.ids = this.source.generateArray(ids);\n      }\n      if (this.stringParams) {\n        options.types = this.source.generateArray(types);\n        options.contexts = this.source.generateArray(contexts);\n      }\n\n      if (this.options.data) {\n        options.data = 'data';\n      }\n      if (this.useBlockParams) {\n        options.blockParams = 'blockParams';\n      }\n      return options;\n    },\n\n    setupHelperArgs: function(helper, paramSize, params, useRegister) {\n      var options = this.setupParams(helper, paramSize, params, true);\n      options = this.objectLiteral(options);\n      if (useRegister) {\n        this.useRegister('options');\n        params.push('options');\n        return ['options=', options];\n      } else {\n        params.push(options);\n        return '';\n      }\n    }\n  };\n\n\n  var reservedWords = (\n    \"break else new var\" +\n    \" case finally return void\" +\n    \" catch for switch while\" +\n    \" continue function this with\" +\n    \" default if throw\" +\n    \" delete in try\" +\n    \" do instanceof typeof\" +\n    \" abstract enum int short\" +\n    \" boolean export interface static\" +\n    \" byte extends long super\" +\n    \" char final native synchronized\" +\n    \" class float package throws\" +\n    \" const goto private transient\" +\n    \" debugger implements protected volatile\" +\n    \" double import public let yield await\" +\n    \" null true false\"\n  ).split(\" \");\n\n  var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};\n\n  for(var i=0, l=reservedWords.length; i<l; i++) {\n    compilerWords[reservedWords[i]] = true;\n  }\n\n  JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n    return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);\n  };\n\n  function strictLookup(requireTerminal, compiler, parts, type) {\n    var stack = compiler.popStack();\n\n    var i = 0,\n        len = parts.length;\n    if (requireTerminal) {\n      len--;\n    }\n\n    for (; i < len; i++) {\n      stack = compiler.nameLookup(stack, parts[i], type);\n    }\n\n    if (requireTerminal) {\n      return [compiler.aliasable('this.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ')'];\n    } else {\n      return stack;\n    }\n  }\n\n  __exports__ = JavaScriptCompiler;\n  return __exports__;\n})(__module2__, __module4__, __module3__, __module15__);\n\n// handlebars.js\nvar __module0__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__;\n  /*globals Handlebars: true */\n  var Handlebars = __dependency1__;\n\n  // Compiler imports\n  var AST = __dependency2__;\n  var Parser = __dependency3__.parser;\n  var parse = __dependency3__.parse;\n  var Compiler = __dependency4__.Compiler;\n  var compile = __dependency4__.compile;\n  var precompile = __dependency4__.precompile;\n  var JavaScriptCompiler = __dependency5__;\n\n  var _create = Handlebars.create;\n  var create = function() {\n    var hb = _create();\n\n    hb.compile = function(input, options) {\n      return compile(input, options, hb);\n    };\n    hb.precompile = function (input, options) {\n      return precompile(input, options, hb);\n    };\n\n    hb.AST = AST;\n    hb.Compiler = Compiler;\n    hb.JavaScriptCompiler = JavaScriptCompiler;\n    hb.Parser = Parser;\n    hb.parse = parse;\n\n    return hb;\n  };\n\n  Handlebars = create();\n  Handlebars.create = create;\n\n  /*jshint -W040 */\n  /* istanbul ignore next */\n  var root = typeof global !== 'undefined' ? global : window,\n      $Handlebars = root.Handlebars;\n  /* istanbul ignore next */\n  Handlebars.noConflict = function() {\n    if (root.Handlebars === Handlebars) {\n      root.Handlebars = $Handlebars;\n    }\n  };\n\n  Handlebars['default'] = Handlebars;\n\n  __exports__ = Handlebars;\n  return __exports__;\n})(__module1__, __module7__, __module8__, __module13__, __module14__);\n\n  return __module0__;\n}));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/jquery.cookie-1.4.1.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2006, 2014 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD (Register as an anonymous module)\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node/CommonJS\n\t\tmodule.exports = factory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (arguments.length > 1 && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setMilliseconds(t.getMilliseconds() + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {},\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling $.cookie().\n\t\t\tcookies = document.cookie ? document.cookie.split('; ') : [],\n\t\t\ti = 0,\n\t\t\tl = cookies.length;\n\n\t\tfor (; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('='),\n\t\t\t\tname = decode(parts.shift()),\n\t\t\t\tcookie = parts.join('=');\n\n\t\t\tif (key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/jquery.validate-1.11.0.js",
    "content": "/*! jQuery Validation Plugin - v1.11.0 - 2/4/2013\n* https://github.com/jzaefferer/jquery-validation\n* Copyright (c) 2013 J枚rn Zaefferer; Licensed MIT */\n\n(function($) {\n\n$.extend($.fn, {\n\t// http://docs.jquery.com/Plugins/Validation/validate\n\tvalidate: function( options ) {\n\n\t\t// if nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// check if a validator for this form was already created\n\t\tvar validator = $.data( this[0], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[0] );\n\t\t$.data( this[0], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.validateDelegate( \":submit\", \"click\", function( event ) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = event.target;\n\t\t\t\t}\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $(event.target).hasClass(\"cancel\") ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// validate the form on submit\n\t\t\tthis.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\t\t\t\t\t// prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $(\"<input type='hidden'/>\").attr(\"name\", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn validator;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/valid\n\tvalid: function() {\n\t\tif ( $(this[0]).is(\"form\")) {\n\t\t\treturn this.validate().form();\n\t\t} else {\n\t\t\tvar valid = true;\n\t\t\tvar validator = $(this[0].form).validate();\n\t\t\tthis.each(function() {\n\t\t\t\tvalid &= validator.element(this);\n\t\t\t});\n\t\t\treturn valid;\n\t\t}\n\t},\n\t// attributes: space seperated list of attributes to retrieve and remove\n\tremoveAttrs: function( attributes ) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each(attributes.split(/\\s/), function( index, value ) {\n\t\t\tresult[value] = $element.attr(value);\n\t\t\t$element.removeAttr(value);\n\t\t});\n\t\treturn result;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/rules\n\trules: function( command, argument ) {\n\t\tvar element = this[0];\n\n\t\tif ( command ) {\n\t\t\tvar settings = $.data(element.form, \"validator\").settings;\n\t\t\tvar staticRules = settings.rules;\n\t\t\tvar existingRules = $.validator.staticRules(element);\n\t\t\tswitch(command) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend(existingRules, $.validator.normalizeRule(argument));\n\t\t\t\tstaticRules[element.name] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[element.name];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tvar filtered = {};\n\t\t\t\t$.each(argument.split(/\\s/), function( index, method ) {\n\t\t\t\t\tfiltered[method] = existingRules[method];\n\t\t\t\t\tdelete existingRules[method];\n\t\t\t\t});\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tvar data = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules(element),\n\t\t\t$.validator.attributeRules(element),\n\t\t\t$.validator.dataRules(element),\n\t\t\t$.validator.staticRules(element)\n\t\t), element);\n\n\t\t// make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tvar param = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend({required: param}, data);\n\t\t}\n\n\t\treturn data;\n\t}\n});\n\n// Custom selectors\n$.extend($.expr[\":\"], {\n\t// http://docs.jquery.com/Plugins/Validation/blank\n\tblank: function( a ) { return !$.trim(\"\" + a.value); },\n\t// http://docs.jquery.com/Plugins/Validation/filled\n\tfilled: function( a ) { return !!$.trim(\"\" + a.value); },\n\t// http://docs.jquery.com/Plugins/Validation/unchecked\n\tunchecked: function( a ) { return !a.checked; }\n});\n\n// constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray(arguments);\n\t\t\targs.unshift(source);\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray(arguments).slice(1);\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each(params, function( i, n ) {\n\t\tsource = source.replace( new RegExp(\"\\\\{\" + i + \"\\\\}\", \"g\"), function() {\n\t\t\treturn n;\n\t\t});\n\t});\n\treturn source;\n};\n\n$.extend($.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusInvalid: true,\n\t\terrorContainer: $([]),\n\t\terrorLabelContainer: $([]),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element, event ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.addWrapper(this.errorsFor(element)).hide();\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element, event ) {\n\t\t\tif ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\t\t\tif ( event.which === 9 && this.elementValue(element) === \"\" ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonclick: function( element, event ) {\n\t\t\t// click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t\t// or option elements, check parent select in that case\n\t\t\telse if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element(element.parentNode);\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName(element.name).addClass(errorClass).removeClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).addClass(errorClass).removeClass(validClass);\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName(element.name).removeClass(errorClass).addClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).removeClass(errorClass).addClass(validClass);\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tcreditcard: \"Please enter a valid credit card number.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format(\"Please enter no more than {0} characters.\"),\n\t\tminlength: $.validator.format(\"Please enter at least {0} characters.\"),\n\t\trangelength: $.validator.format(\"Please enter a value between {0} and {1} characters long.\"),\n\t\trange: $.validator.format(\"Please enter a value between {0} and {1}.\"),\n\t\tmax: $.validator.format(\"Please enter a value less than or equal to {0}.\"),\n\t\tmin: $.validator.format(\"Please enter a value greater than or equal to {0}.\")\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $(this.settings.errorLabelContainer);\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\n\t\t\tthis.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = (this.groups = {});\n\t\t\t$.each(this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split(/\\s/);\n\t\t\t\t}\n\t\t\t\t$.each(value, function( index, name ) {\n\t\t\t\t\tgroups[name] = key;\n\t\t\t\t});\n\t\t\t});\n\t\t\tvar rules = this.settings.rules;\n\t\t\t$.each(rules, function( key, value ) {\n\t\t\t\trules[key] = $.validator.normalizeRule(value);\n\t\t\t});\n\n\t\t\tfunction delegate(event) {\n\t\t\t\tvar validator = $.data(this[0].form, \"validator\"),\n\t\t\t\t\teventType = \"on\" + event.type.replace(/^validate/, \"\");\n\t\t\t\tif ( validator.settings[eventType] ) {\n\t\t\t\t\tvalidator.settings[eventType].call(validator, this[0], event);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(this.currentForm)\n\t\t\t\t.validateDelegate(\":text, [type='password'], [type='file'], select, textarea, \" +\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\n\t\t\t\t\t\"[type='range'], [type='color'] \",\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\n\t\t\t\t.validateDelegate(\"[type='radio'], [type='checkbox'], select, option\", \"click\", delegate);\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$(this.currentForm).bind(\"invalid-form.validate\", this.settings.invalidHandler);\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/form\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend(this.submitted, this.errorMap);\n\t\t\tthis.invalid = $.extend({}, this.errorMap);\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\n\t\t\t\tthis.check( elements[i] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/element\n\t\telement: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\t\t\tthis.lastElement = element;\n\t\t\tthis.prepareElement( element );\n\t\t\tthis.currentElements = $(element);\n\t\t\tvar result = this.check( element ) !== false;\n\t\t\tif ( result ) {\n\t\t\t\tdelete this.invalid[element.name];\n\t\t\t} else {\n\t\t\t\tthis.invalid[element.name] = true;\n\t\t\t}\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/showErrors\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[name],\n\t\t\t\t\t\telement: this.findByName(name)[0]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !(element.name in errors);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/resetForm\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$(this.currentForm).resetForm();\n\t\t\t}\n\t\t\tthis.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tthis.elements().removeClass( this.settings.errorClass ).removeData( \"previousValue\" );\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength(this.invalid);\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\tvar count = 0;\n\t\t\tfor ( var i in obj ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.addWrapper( this.toHide ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])\n\t\t\t\t\t.filter(\":visible\")\n\t\t\t\t\t.focus()\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger(\"focusin\");\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep(this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t}).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $(this.currentForm)\n\t\t\t.find(\"input, select, textarea\")\n\t\t\t.not(\":submit, :reset, :image, [disabled]\")\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter(function() {\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this);\n\t\t\t\t}\n\n\t\t\t\t// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[this.name] = true;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $(selector)[0];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.replace(\" \", \".\");\n\t\t\treturn $(this.settings.errorElement + \".\" + errorClass, this.errorContext);\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $([]);\n\t\t\tthis.toHide = $([]);\n\t\t\tthis.currentElements = $([]);\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor(element);\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar type = $(element).attr(\"type\"),\n\t\t\t\tval = $(element).val();\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn $(\"input[name='\" + $(element).attr(\"name\") + \"']:checked\").val();\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace(/\\r/g, \"\");\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $(element).rules();\n\t\t\tvar dependencyMismatch = false;\n\t\t\tvar val = this.elementValue(element);\n\t\t\tvar result;\n\n\t\t\tfor (var method in rules ) {\n\t\t\t\tvar rule = { method: method, parameters: rules[method] };\n\t\t\t\ttry {\n\n\t\t\t\t\tresult = $.validator.methods[method].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor(element) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occured when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength(rules) ) {\n\t\t\t\tthis.successList.push(element);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $(element).data(\"msg-\" + method.toLowerCase()) || (element.attributes && $(element).attr(\"data-msg-\" + method.toLowerCase()));\n\t\t},\n\n\t\t// return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[name];\n\t\t\treturn m && (m.constructor === String ? m : m[method]);\n\t\t},\n\n\t\t// return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor(var i = 0; i < arguments.length; i++) {\n\t\t\t\tif ( arguments[i] !== undefined ) {\n\t\t\t\t\treturn arguments[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\tdefaultMessage: function( element, method ) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[method],\n\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call(this, rule.parameters, element);\n\t\t\t} else if (theregex.test(message)) {\n\t\t\t\tmessage = $.validator.format(message.replace(theregex, \"{$1}\"), rule.parameters);\n\t\t\t}\n\t\t\tthis.errorList.push({\n\t\t\t\tmessage: message,\n\t\t\t\telement: element\n\t\t\t});\n\n\t\t\tthis.errorMap[element.name] = message;\n\t\t\tthis.submitted[element.name] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements;\n\t\t\tfor ( i = 0; this.errorList[i]; i++ ) {\n\t\t\t\tvar error = this.errorList[i];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[i]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[i]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not(this.invalidElements());\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $(this.errorList).map(function() {\n\t\t\t\treturn this.element;\n\t\t\t});\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar label = this.errorsFor( element );\n\t\t\tif ( label.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\tlabel.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\t\t\t\t// replace message on existing label\n\t\t\t\tlabel.html(message);\n\t\t\t} else {\n\t\t\t\t// create label\n\t\t\t\tlabel = $(\"<\" + this.settings.errorElement + \">\")\n\t\t\t\t\t.attr(\"for\", this.idOrName(element))\n\t\t\t\t\t.addClass(this.settings.errorClass)\n\t\t\t\t\t.html(message || \"\");\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\t// make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tlabel = label.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent();\n\t\t\t\t}\n\t\t\t\tif ( !this.labelContainer.append(label).length ) {\n\t\t\t\t\tif ( this.settings.errorPlacement ) {\n\t\t\t\t\t\tthis.settings.errorPlacement(label, $(element) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabel.insertAfter(element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\tlabel.text(\"\");\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\tlabel.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( label, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add(label);\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.idOrName(element);\n\t\t\treturn this.errors().filter(function() {\n\t\t\t\treturn $(this).attr(\"for\") === name;\n\t\t\t});\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\t\t\t// if radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\telement = this.findByName( element.name ).not(this.settings.ignore)[0];\n\t\t\t}\n\t\t\treturn element;\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn (/radio|checkbox/i).test(element.type);\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $(this.currentForm).find(\"[name='\" + name + \"']\");\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $(\"option:selected\", element).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element) ) {\n\t\t\t\t\treturn this.findByName(element.name).filter(\":checked\").length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param, element ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$(param, element.form).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param(element);\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue(element);\n\t\t\treturn !$.validator.methods.required.call(this, val, element) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[element.name] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\tthis.pending[element.name] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[element.name];\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$(this.currentForm).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element ) {\n\t\t\treturn $.data(element, \"previousValue\") || $.data(element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\n\t\t\t});\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: {required: true},\n\t\temail: {email: true},\n\t\turl: {url: true},\n\t\tdate: {date: true},\n\t\tdateISO: {dateISO: true},\n\t\tnumber: {number: true},\n\t\tdigits: {digits: true},\n\t\tcreditcard: {creditcard: true}\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[className] = rules;\n\t\t} else {\n\t\t\t$.extend(this.classRuleSettings, className);\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {};\n\t\tvar classes = $(element).attr(\"class\");\n\t\tif ( classes ) {\n\t\t\t$.each(classes.split(\" \"), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend(rules, $.validator.classRuleSettings[this]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn rules;\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {};\n\t\tvar $element = $(element);\n\n\t\tfor (var method in $.validator.methods) {\n\t\t\tvar value;\n\n\t\t\t// support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = $element.get(0).getAttribute(method);\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\t\t\t// force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr(method);\n\t\t\t}\n\n\t\t\tif ( value ) {\n\t\t\t\trules[method] = value;\n\t\t\t} else if ( $element[0].getAttribute(\"type\") === method ) {\n\t\t\t\trules[method] = true;\n\t\t\t}\n\t\t}\n\n\t\t// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar method, value,\n\t\t\trules = {}, $element = $(element);\n\t\tfor (method in $.validator.methods) {\n\t\t\tvalue = $element.data(\"rule-\" + method.toLowerCase());\n\t\t\tif ( value !== undefined ) {\n\t\t\t\trules[method] = value;\n\t\t\t}\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {};\n\t\tvar validator = $.data(element.form, \"validator\");\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\t\t// handle dependency check\n\t\t$.each(rules, function( prop, val ) {\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[prop];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch (typeof val.depends) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$(val.depends, element.form).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call(element, element);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[prop] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\tdelete rules[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// evaluate parameters\n\t\t$.each(rules, function( rule, parameter ) {\n\t\t\trules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;\n\t\t});\n\n\t\t// clean number parameters\n\t\t$.each(['minlength', 'maxlength'], function() {\n\t\t\tif ( rules[this] ) {\n\t\t\t\trules[this] = Number(rules[this]);\n\t\t\t}\n\t\t});\n\t\t$.each(['rangelength'], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[this] ) {\n\t\t\t\tif ( $.isArray(rules[this]) ) {\n\t\t\t\t\trules[this] = [Number(rules[this][0]), Number(rules[this][1])];\n\t\t\t\t} else if ( typeof rules[this] === \"string\" ) {\n\t\t\t\t\tparts = rules[this].split(/[\\s,]+/);\n\t\t\t\t\trules[this] = [Number(parts[0]), Number(parts[1])];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\t\t\t// auto-create ranges\n\t\t\tif ( rules.min && rules.max ) {\n\t\t\t\trules.range = [rules.min, rules.max];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength && rules.maxlength ) {\n\t\t\t\trules.rangelength = [rules.minlength, rules.maxlength];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each(data.split(/\\s/), function() {\n\t\t\t\ttransformed[this] = true;\n\t\t\t});\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/addMethod\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[name] = method;\n\t\t$.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules(name, $.validator.normalizeRule(name));\n\t\t}\n\t},\n\n\tmethods: {\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/required\n\t\trequired: function( value, element, param ) {\n\t\t\t// check if dependency is met\n\t\t\tif ( !this.depend(param, element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $(element).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\treturn this.getLength(value, element) > 0;\n\t\t\t}\n\t\t\treturn $.trim(value).length > 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/remote\n\t\tremote: function( value, element, param ) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue(element);\n\t\t\tif (!this.settings.messages[element.name] ) {\n\t\t\t\tthis.settings.messages[element.name] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = this.settings.messages[element.name].remote;\n\t\t\tthis.settings.messages[element.name].remote = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && {url:param} || param;\n\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\n\t\t\tvar validator = this;\n\t\t\tthis.startRequest(element);\n\t\t\tvar data = {};\n\t\t\tdata[element.name] = value;\n\t\t\t$.ajax($.extend(true, {\n\t\t\t\turl: param,\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvalidator.settings.messages[element.name].remote = previous.originalMessage;\n\t\t\t\t\tvar valid = response === true || response === \"true\";\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tvar submitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.prepareElement(element);\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push(element);\n\t\t\t\t\t\tdelete validator.invalid[element.name];\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar errors = {};\n\t\t\t\t\t\tvar message = response || validator.defaultMessage( element, \"remote\" );\n\t\t\t\t\t\terrors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;\n\t\t\t\t\t\tvalidator.invalid[element.name] = true;\n\t\t\t\t\t\tvalidator.showErrors(errors);\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest(element, valid);\n\t\t\t\t}\n\t\t\t}, param));\n\t\t\treturn \"pending\";\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/minlength\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/maxlength\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/rangelength\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || ( length >= param[0] && length <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/min\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/max\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/range\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional(element) || ( value >= param[0] && value <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/email\n\t\temail: function( value, element ) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\n\t\t\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/url\n\t\turl: function( value, element ) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional(element) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/date\n\t\tdate: function( value, element ) {\n\t\t\treturn this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/dateISO\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional(element) || /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/number\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/digits\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional(element) || /^\\d+$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/creditcard\n\t\t// based on http://en.wikipedia.org/wiki/Luhn\n\t\tcreditcard: function( value, element ) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif ( /[^0-9 \\-]+/.test(value) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false;\n\n\t\t\tvalue = value.replace(/\\D/g, \"\");\n\n\t\t\tfor (var n = value.length - 1; n >= 0; n--) {\n\t\t\t\tvar cDigit = value.charAt(n);\n\t\t\t\tnDigit = parseInt(cDigit, 10);\n\t\t\t\tif ( bEven ) {\n\t\t\t\t\tif ( (nDigit *= 2) > 9 ) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn (nCheck % 10) === 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/equalTo\n\t\tequalTo: function( value, element, param ) {\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $(param);\n\t\t\tif ( this.settings.onfocusout ) {\n\t\t\t\ttarget.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\", function() {\n\t\t\t\t\t$(element).valid();\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t}\n\n\t}\n\n});\n\n// deprecated, use $.validator.format instead\n$.format = $.validator.format;\n\n}(jQuery));\n\n// ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n(function($) {\n\tvar pendingRequests = {};\n\t// Use a prefilter if available (1.5+)\n\tif ( $.ajaxPrefilter ) {\n\t\t$.ajaxPrefilter(function( settings, _, xhr ) {\n\t\t\tvar port = settings.port;\n\t\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = xhr;\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Proxy ajax\n\t\tvar ajax = $.ajax;\n\t\t$.ajax = function( settings ) {\n\t\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\t\tif ( mode === \"abort\" ) {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\treturn (pendingRequests[port] = ajax.apply(this, arguments));\n\t\t\t}\n\t\t\treturn ajax.apply(this, arguments);\n\t\t};\n\t}\n}(jQuery));\n\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n(function($) {\n\t$.extend($.fn, {\n\t\tvalidateDelegate: function( delegate, type, handler ) {\n\t\t\treturn this.bind(type, function( event ) {\n\t\t\t\tvar target = $(event.target);\n\t\t\t\tif ( target.is(delegate) ) {\n\t\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}(jQuery));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/metis_menu-2.6.1/metisMenu.css",
    "content": "/*\n * metismenu - v2.6.1\n * A jQuery menu plugin\n * https://github.com/onokumus/metisMenu#readme\n *\n * Made by Osman Nuri Okumuş <onokumus@gmail.com> (https://github.com/onokumus)\n * Under MIT License\n */\n\n.metismenu .arrow {\n  float: right;\n  line-height: 1.42857;\n}\n*[dir=\"rtl\"] .metismenu .arrow {\n  float: left;\n}\n\n/*\n * Require Bootstrap\n * https://github.com/twbs/bootstrap\n*/\n\n.metismenu .glyphicon.arrow:before {\n  content: \"\\e079\";\n}\n.metismenu .active > a > .glyphicon.arrow:before {\n  content: \"\\e114\";\n}\n\n\n.metismenu .fa.arrow:before {\n  content: \"\\f104\";\n}\n.metismenu .active > a > .fa.arrow:before {\n  content: \"\\f107\";\n}\n\n/*\n * Require Ionicons\n * http://ionicons.com/\n*/\n\n.metismenu .ion.arrow:before {\n  content: \"\\f3d2\"\n}\n.metismenu .active > a > .ion.arrow:before {\n  content: \"\\f3d0\";\n}\n.metismenu .plus-times {\n  float: right;\n}\n*[dir=\"rtl\"] .metismenu .plus-times {\n  float: left;\n}\n.metismenu .fa.plus-times:before {\n  content: \"\\f067\";\n}\n.metismenu .active > a > .fa.plus-times {\n  -webkit-transform: rotate(45deg);\n      -ms-transform: rotate(45deg);\n       -o-transform: rotate(45deg);\n          transform: rotate(45deg);\n}\n.metismenu .plus-minus {\n  float: right;\n}\n*[dir=\"rtl\"] .metismenu .plus-minus {\n  float: left;\n}\n.metismenu .fa.plus-minus:before {\n  content: \"\\f067\";\n}\n.metismenu .active > a > .fa.plus-minus:before {\n  content: \"\\f068\";\n}\n.metismenu .collapse {\n  display: none;\n}\n.metismenu .collapse.in {\n  display: block;\n}\n.metismenu .collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n  -o-transition-property: height, visibility;\n  transition-property: height, visibility;\n}\n\n.metismenu .has-arrow {\n  position: relative;\n}\n\n.metismenu .has-arrow::after {\n  position: absolute;\n  content: '';\n  width: .5em;\n  height: .5em;\n  border-width: 1px 0 0 1px;\n  border-style: solid;\n  border-color: #fff;\n  right: 1em;\n  -webkit-transform: rotate(-45deg) translate(0, -50%);\n      -ms-transform: rotate(-45deg) translate(0, -50%);\n       -o-transform: rotate(-45deg) translate(0, -50%);\n          transform: rotate(-45deg) translate(0, -50%);\n  -webkit-transform-origin: top;\n      -ms-transform-origin: top;\n       -o-transform-origin: top;\n          transform-origin: top;\n  top: 50%;\n  -webkit-transition: all .3s ease-out;\n  -o-transition: all .3s ease-out;\n  transition: all .3s ease-out;\n}\n\n*[dir=\"rtl\"] .metismenu .has-arrow::after {\n  right: auto;\n  left: 1em;\n  -webkit-transform: rotate(135deg) translate(0, -50%);\n      -ms-transform: rotate(135deg) translate(0, -50%);\n       -o-transform: rotate(135deg) translate(0, -50%);\n          transform: rotate(135deg) translate(0, -50%);\n}\n\n.metismenu .active > .has-arrow::after,\n.metismenu .has-arrow[aria-expanded=\"true\"]::after {\n  -webkit-transform: rotate(-135deg) translate(0, -50%);\n      -ms-transform: rotate(-135deg) translate(0, -50%);\n       -o-transform: rotate(-135deg) translate(0, -50%);\n          transform: rotate(-135deg) translate(0, -50%);\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/metis_menu-2.6.1/metisMenu.js",
    "content": "/*\n * metismenu - v2.6.1\n * A jQuery menu plugin\n * https://github.com/onokumus/metisMenu#readme\n *\n * Made by Osman Nuri Okumuş <onokumus@gmail.com> (https://github.com/onokumus)\n * Under MIT License\n */\n\n(function (global, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define(['jquery'], factory);\n  } else if (typeof exports !== \"undefined\") {\n    factory(require('jquery'));\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(global.jquery);\n    global.metisMenu = mod.exports;\n  }\n})(this, function (_jquery) {\n  'use strict';\n\n  var _jquery2 = _interopRequireDefault(_jquery);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n      default: obj\n    };\n  }\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n\n  var MetisMenu = function ($) {\n\n    var NAME = 'metisMenu';\n    var DATA_KEY = 'metisMenu';\n    var EVENT_KEY = '.' + DATA_KEY;\n    var DATA_API_KEY = '.data-api';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var TRANSITION_DURATION = 350;\n\n    var Default = {\n      toggle: true,\n      doubleTapToGo: false,\n      preventDefault: true,\n      activeClass: 'active',\n      collapseClass: 'collapse',\n      collapseInClass: 'in',\n      collapsingClass: 'collapsing'\n    };\n\n    var Event = {\n      SHOW: 'show' + EVENT_KEY,\n      SHOWN: 'shown' + EVENT_KEY,\n      HIDE: 'hide' + EVENT_KEY,\n      HIDDEN: 'hidden' + EVENT_KEY,\n      CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY\n    };\n\n    var transition = false;\n\n    var TransitionEndEvent = {\n      WebkitTransition: 'webkitTransitionEnd',\n      MozTransition: 'transitionend',\n      OTransition: 'oTransitionEnd otransitionend',\n      transition: 'transitionend'\n    };\n\n    function getSpecialTransitionEndEvent() {\n      return {\n        bindType: transition.end,\n        delegateType: transition.end,\n        handle: function handle(event) {\n          if ($(event.target).is(this)) {\n            return event.handleObj.handler.apply(this, arguments);\n          }\n        }\n      };\n    }\n\n    function transitionEndTest() {\n      if (window.QUnit) {\n        return false;\n      }\n\n      var el = document.createElement('mm');\n\n      for (var name in TransitionEndEvent) {\n        if (el.style[name] !== undefined) {\n          return {\n            end: TransitionEndEvent[name]\n          };\n        }\n      }\n\n      return false;\n    }\n\n    function transitionEndEmulator(duration) {\n      var _this2 = this;\n\n      var called = false;\n\n      $(this).one(Util.TRANSITION_END, function () {\n        called = true;\n      });\n\n      setTimeout(function () {\n        if (!called) {\n          Util.triggerTransitionEnd(_this2);\n        }\n      }, duration);\n    }\n\n    function setTransitionEndSupport() {\n      transition = transitionEndTest();\n\n      if (Util.supportsTransitionEnd()) {\n        $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n      }\n    }\n\n    var Util = {\n      TRANSITION_END: 'mmTransitionEnd',\n\n      triggerTransitionEnd: function triggerTransitionEnd(element) {\n        $(element).trigger(transition.end);\n      },\n      supportsTransitionEnd: function supportsTransitionEnd() {\n        return Boolean(transition);\n      }\n    };\n\n    setTransitionEndSupport();\n\n    var MetisMenu = function () {\n      function MetisMenu(element, config) {\n        _classCallCheck(this, MetisMenu);\n\n        this._element = element;\n        this._config = this._getConfig(config);\n        this._transitioning = null;\n\n        this.init();\n      }\n\n      _createClass(MetisMenu, [{\n        key: 'init',\n        value: function init() {\n          var self = this;\n          $(this._element).find('li.' + this._config.activeClass).has('ul').children('ul').attr('aria-expanded', true).addClass(this._config.collapseClass + ' ' + this._config.collapseInClass);\n\n          $(this._element).find('li').not('.' + this._config.activeClass).has('ul').children('ul').attr('aria-expanded', false).addClass(this._config.collapseClass);\n\n          //add the 'doubleTapToGo' class to active items if needed\n          if (this._config.doubleTapToGo) {\n            $(this._element).find('li.' + this._config.activeClass).has('ul').children('a').addClass('doubleTapToGo');\n          }\n          $(this._element).find('li').has('ul').children('a').on(Event.CLICK_DATA_API, function (e) {\n            var _this = $(this);\n            var _parent = _this.parent('li');\n            var _siblings = _parent.siblings('li').children('a');\n            var _list = _parent.children('ul');\n            if (self._config.preventDefault) {\n              e.preventDefault();\n            }\n            if (_this.attr('aria-disabled') === 'true') {\n              return;\n            }\n            if (_parent.hasClass(self._config.activeClass) && !self._config.doubleTapToGo) {\n              _this.attr('aria-expanded', false);\n              self._hide(_list);\n            } else {\n              self._show(_list);\n              _this.attr('aria-expanded', true);\n              if (self._config.toggle) {\n                _siblings.attr('aria-expanded', false);\n              }\n            }\n\n            if (self._config.onTransitionStart) {\n              self._config.onTransitionStart(e);\n            }\n\n            //Do we need to enable the double tap\n            if (self._config.doubleTapToGo) {\n              //if we hit a second time on the link and the href is valid, navigate to that url\n              if (self._doubleTapToGo(_this) && _this.attr('href') !== '#' && _this.attr('href') !== '') {\n                e.stopPropagation();\n                document.location = _this.attr('href');\n                return;\n              }\n            }\n          });\n        }\n      }, {\n        key: '_show',\n        value: function _show(element) {\n          if (this._transitioning || $(element).hasClass(this._config.collapsingClass)) {\n            return;\n          }\n          var _this = this;\n          var _el = $(element);\n\n          var startEvent = $.Event(Event.SHOW);\n          _el.trigger(startEvent);\n\n          if (startEvent.isDefaultPrevented()) {\n            return;\n          }\n\n          _el.parent('li').addClass(this._config.activeClass);\n\n          if (this._config.toggle) {\n            this._hide(_el.parent('li').siblings().children('ul.' + this._config.collapseInClass).attr('aria-expanded', false));\n          }\n\n          _el.removeClass(this._config.collapseClass).addClass(this._config.collapsingClass).height(0);\n\n          this.setTransitioning(true);\n\n          var complete = function complete() {\n\n            _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass + ' ' + _this._config.collapseInClass).height('').attr('aria-expanded', true);\n\n            _this.setTransitioning(false);\n\n            _el.trigger(Event.SHOWN);\n          };\n\n          if (!Util.supportsTransitionEnd()) {\n            complete();\n            return;\n          }\n\n          _el.height(_el[0].scrollHeight).one(Util.TRANSITION_END, complete);\n\n          transitionEndEmulator(TRANSITION_DURATION);\n        }\n      }, {\n        key: '_hide',\n        value: function _hide(element) {\n\n          if (this._transitioning || !$(element).hasClass(this._config.collapseInClass)) {\n            return;\n          }\n          var _this = this;\n          var _el = $(element);\n\n          var startEvent = $.Event(Event.HIDE);\n          _el.trigger(startEvent);\n\n          if (startEvent.isDefaultPrevented()) {\n            return;\n          }\n\n          _el.parent('li').removeClass(this._config.activeClass);\n          _el.height(_el.height())[0].offsetHeight;\n\n          _el.addClass(this._config.collapsingClass).removeClass(this._config.collapseClass).removeClass(this._config.collapseInClass);\n\n          this.setTransitioning(true);\n\n          var complete = function complete() {\n            if (_this._transitioning && _this._config.onTransitionEnd) {\n              _this._config.onTransitionEnd();\n            }\n\n            _this.setTransitioning(false);\n            _el.trigger(Event.HIDDEN);\n\n            _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass).attr('aria-expanded', false);\n          };\n\n          if (!Util.supportsTransitionEnd()) {\n            complete();\n            return;\n          }\n\n          _el.height() == 0 || _el.css('display') == 'none' ? complete() : _el.height(0).one(Util.TRANSITION_END, complete);\n\n          transitionEndEmulator(TRANSITION_DURATION);\n        }\n      }, {\n        key: '_doubleTapToGo',\n        value: function _doubleTapToGo(element) {\n          if (element.hasClass('doubleTapToGo')) {\n            element.removeClass('doubleTapToGo');\n            return true;\n          }\n          if (element.parent().children('ul').length) {\n            $(this._element).find('.doubleTapToGo').removeClass('doubleTapToGo');\n\n            element.addClass('doubleTapToGo');\n            return false;\n          }\n        }\n      }, {\n        key: 'setTransitioning',\n        value: function setTransitioning(isTransitioning) {\n          this._transitioning = isTransitioning;\n        }\n      }, {\n        key: 'dispose',\n        value: function dispose() {\n          $.removeData(this._element, DATA_KEY);\n\n          $(this._element).find('li').has('ul').children('a').off('click');\n\n          this._transitioning = null;\n          this._config = null;\n          this._element = null;\n        }\n      }, {\n        key: '_getConfig',\n        value: function _getConfig(config) {\n          config = $.extend({}, Default, config);\n          return config;\n        }\n      }], [{\n        key: '_jQueryInterface',\n        value: function _jQueryInterface(config) {\n          return this.each(function () {\n            var $this = $(this);\n            var data = $this.data(DATA_KEY);\n            var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);\n\n            if (!data && /dispose/.test(config)) {\n              this.dispose();\n            }\n\n            if (!data) {\n              data = new MetisMenu(this, _config);\n              $this.data(DATA_KEY, data);\n            }\n\n            if (typeof config === 'string') {\n              if (data[config] === undefined) {\n                throw new Error('No method named \"' + config + '\"');\n              }\n              data[config]();\n            }\n          });\n        }\n      }]);\n\n      return MetisMenu;\n    }();\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     */\n\n    $.fn[NAME] = MetisMenu._jQueryInterface;\n    $.fn[NAME].Constructor = MetisMenu;\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return MetisMenu._jQueryInterface;\n    };\n    return MetisMenu;\n  }(jQuery);\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/sFlow-1.0/sFlow.css",
    "content": "/*\n * sFlow v1.0 \n */\n.flow-box-list{\n  position: relative;\n  visibility: hidden;\n  margin-top: 10px;\n}\n.flow-box{\n    width: 150px;\n    float: left;\n    border: 1px solid #ddd;\n    color: #666;\n    text-align: center;\n    line-height: 50px;\n}\n/* s形流程图 箭头样式 */\n.flow-arrow{\n  position: absolute;\n  top: 50%;\n  margin-top: -5px;\n}\n.odd.last .flow-arrow,.even.last .flow-arrow{\n    margin-left: 50%;\n    left: auto;\n    right: auto;\n    top: 100%;\n    margin-top: 0;\n  -webkit-transform:rotate(-90deg); \n     -moz-transform:rotate(-90deg); \n          transform:rotate(-90deg);\n}\n.flow-arrow>div {\n    display: block;\n    border: 5px solid rgba(0,0,0,0);\n    border-left:10px solid #ddd;\n    border-right: none;\n    width: 0;\n    height: 0;\n    float: right;\n}\n.flow-arrow>div:before{\n    display: block;\n    content: \" \";\n    position: absolute;\n    left: 0;\n    top: 0;\n    right: 10px;\n    margin-top: 4px;\n    border-top-width:2px;\n    border-top-style:solid;\n    border-top-color:#ddd;\n}\n.odd .flow-arrow>div {\n    border: 5px solid rgba(0,0,0,0);\n    border-right-width:10px;\n    border-right-style:solid;\n    border-right-color:#ddd;\n    border-left: none;\n    width: 0;\n    height: 0;\n    float: left;\n}\n.odd .flow-arrow>div:before{\n    left: 10px;\n    right: 0;\n}\n.even.last .flow-arrow>div{\n    float: left;\n    border-right-width:10px;\n    border-right-style:solid;\n    border-right-color:#ddd;\n    border-left: none;\n}\n.even.last .flow-arrow>div:before{\n    left: 10px;\n    top: 0;\n    right: 0px;\n}\n/* 不同状态样式 */\n/* info */\n.flow-box.border-info{\n    border-color: #4A9BFF;\n}\n.flow-arrow .border-info{\n    border: 5px solid rgba(0,0,0,0);\n    border-left:10px solid #4A9BFF;\n    border-right: none;\n}\n.odd .flow-arrow .border-info{\n    border-right-color: #4A9BFF;\n}\n.even.last .flow-arrow .border-info{\n    border-right-color: #4A9BFF;\n}\n.flow-arrow .border-info:before,\n.odd .flow-arrow .border-info:before,\n.even .flow-arrow .border-info:before{\n    border-color:#4A9BFF;\n}\n/* primary */\n.flow-box.border-primary{\n    border-color: #5C90D2;\n}\n.flow-arrow .border-primary{\n    border: 5px solid rgba(0,0,0,0);\n    border-left:10px solid #5C90D2;\n    border-right: none;\n}\n.odd .flow-arrow .border-primary{\n    border-right-color: #5C90D2;\n}\n.even.last .flow-arrow .border-primary{\n    border-right-color: #5C90D2;\n}\n.flow-arrow .border-primary:before,\n.odd .flow-arrow .border-primary:before,\n.even .flow-arrow .border-primary:before{\n    border-color:#5C90D2;\n}\n/* success */\n.flow-box.border-success{\n    border-color: #46C37B;\n}\n.flow-arrow .border-success{\n    border: 5px solid rgba(0,0,0,0);\n    border-left:10px solid #46C37B;\n    border-right: none;\n}\n.odd .flow-arrow .border-success{\n    border-right-color: #46C37B;\n}\n.even.last .flow-arrow .border-success{\n    border-right-color: #46C37B;\n}\n.flow-arrow .border-success:before,\n.odd .flow-arrow .border-success:before,\n.even .flow-arrow .border-success:before{\n    border-color:#46C37B;\n}\n/* warning */\n.flow-box.border-warning{\n    border-color: #F0A63A;\n}\n.flow-arrow .border-warning{\n    border: 5px solid rgba(0,0,0,0);\n    border-left:10px solid #F0A63A;\n    border-right: none;\n}\n.odd .flow-arrow .border-warning{\n    border-right-color: #F0A63A;\n}\n.even.last .flow-arrow .border-warning{\n    border-right-color: #F0A63A;\n}\n.flow-arrow .border-warning:before,\n.odd .flow-arrow .border-warning:before,\n.even .flow-arrow .border-warning:before{\n    border-color:#F0A63A;\n}\n/* danger */\n.flow-box.border-danger{\n    border-color: #C54736;\n}\n.flow-arrow .border-danger{\n    border: 5px solid rgba(0,0,0,0);\n    border-left:10px solid #C54736;\n    border-right: none;\n}\n.odd .flow-arrow .border-danger{\n    border-right-color: #C54736;\n}\n.even.last .flow-arrow .border-danger{\n    border-right-color: #C54736;\n}\n.flow-arrow .border-danger:before,\n.odd .flow-arrow .border-danger:before,\n.even .flow-arrow .border-danger:before{\n    border-color:#C54736;\n}\n/* 其他 */\n.top-msg{\n    text-overflow: ellipsis;\n    display: block;\n    padding:15px 14px 10px 14px;\n    border-bottom:1px solid #DDDDDD; \n    font-size: 12px;\n}\n.bottom-msg{\n    padding:5px 14px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    word-wrap: normal;\n    white-space: nowrap;\n    max-width: 100%;\n}\n.flow-one-bg-success{\n    background-color: #dff0d8;\n}\n.flow-two-bg-success{\n    background-color: #bcd9e6;\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/sFlow-1.0/sFlow.js",
    "content": "/*\n * sFlow v1.0 \n */\n;(function($){\n    $.fn.flowList=function(options){\n        var defaults={\n            gap : 60 ,\n            vGap : 30 ,\n            format : function (data,i){\n               return '<li class=\"flow-box '+ data[i].addClass +'\">'+\n                         '<div class=\"flow-text\" title=\"'+ data[i].title +'\">'+ data[i].text +'</div>'+\n                         '<div class=\"flow-arrow\"><div class=\"'+data[i].arrowClass+'\"></div></div>'+\n                      '</li>'; \n            }\n        }\n        var options=$.extend({},defaults,options);\n        //第一个空对象{}可以不写,写成(defaults,options)\n        var target = this;\n        var flowLi,\n            len ,\n            parentW ,\n            w  ,\n            h  ,\n            line  ,\n            tag ,\n            /* posArr = [ [left,top ,direct ],... ]\n             * parms 存储li的left、top和奇偶行\n             */\n            posArr ;\n\n\n        target.each(function (){\n            var that=$(this);\n            init(that);\n        });\n        $(window).resize(function(event) {\n            target.each(function (){\n                var that=$(this);\n                init(that);\n            });\n        });\n\n        function init(that){\n            var flowList=that;\n            if(options.url){\n                $.ajax({\n                    url: options.url ,\n                    type: 'GET',\n                    dataType: 'json',\n                    success:function (rep){\n                        if (!flowList.attr('finished')) {\n                            var data = rep.data;\n                            flowList.empty();\n                            for (var i = 0; i < data.length; i++) {\n                                var liItem=options.format(data,i);\n                                flowList.append(liItem);                      \n                            };\n                            flowList.attr('finished',true);\n                        };\n                        render();\n                        getMaxHeight();\n                    }\n                })\n            }else{\n                render();\n            }\n\n            \n            // 变量\n            function parms(){\n                flowLi = flowList.find('>li') ,\n                len = flowLi.length ,\n                parentW = flowList.parent().width() ,\n                w = flowLi.eq(0).outerWidth() ,\n                h = flowLi.eq(0).outerHeight() ,\n                line = Math.floor((parentW+options.gap)/(w+options.gap)) ,\n                tag = false,\n                /* posArr = [ [left,top ,direct ],... ]\n                 * parms 存储li的left、top和奇偶行\n                 */\n                posArr = [];\n            }\n            // 布局\n            function layout(){\n                // 初始化 flowList\n                flowList.css({ width: parentW }); \n                flowLi.last().find('.flow-arrow').remove();\n                flowLi.removeClass('odd').removeClass('even').removeClass('last');\n                // 计算每个li的 left、top和方向\n                for (var i = 0; i < len ; i++) {\n                    if (i%line==0) {\n                        tag=!tag;\n                    }   \n                    if (!tag) {\n                        posArr.push( [ ((line-1)-(i%line))*(w+options.gap) , (Math.floor(i/line))*(h+options.vGap) , \"odd\" ] );\n                    }else{\n                        posArr.push( [ (i%line)*(w+options.gap) , (Math.floor(i/line))*(h+options.vGap) , \"even\" ] );\n                    }\n                }\n                // 布局转换\n                for (var i = 0; i < len ; i++) {\n                   flowLi.eq(i).css({\n                       position : 'absolute',\n                       left: posArr[i][0] ,\n                       top: posArr[i][1] ,\n                       margin : 0 \n                   }).attr('even-odd', posArr[i][2] ).addClass( posArr[i][2] );\n                };\n                // 每行末尾添加last类\n                flowList.find('.odd').prev('.even').addClass('last');\n                flowList.find('.even').prev('.odd').addClass('last');\n            }\n            // 设置箭头位置\n            function setArrow(){\n                var borderWidth = flowList.find('.flow-box').css('border-right-width');\n                flowLi.filter('.last').find('.flow-arrow').removeAttr('style');\n                flowLi.filter('.last').find('.flow-arrow').css({\n                    'height': options.vGap,\n                    'width': options.vGap,\n                    'margin-top': borderWidth\n                });\n                flowLi.filter('.even:not(.last)').find('.flow-arrow').css({\n                    'right' : -options.gap - parseInt(borderWidth),\n                    'left' : 'auto' ,\n                    'width' : options.gap\n                });\n                flowLi.filter('.odd:not(.last)').find('.flow-arrow').css({\n                    'right' : 'auto' ,\n                    'left' : -options.gap - parseInt(borderWidth),\n                    'width' : options.gap\n                });                \n            }\n            // 设置父级的高度\n            function setHeight(){\n                flowList.css({\n                    width:  len > line-1 ? posArr[line-1][0]+w : posArr[len-1][0]+w ,\n                    height: posArr[len-1][1]+h ,\n                    visibility : \"visible\"\n                });                \n            }\n            // 渲染\n            function render(){\n                parms();\n                layout();\n                setArrow();\n                setHeight();\n            }\n            function getMaxHeight(){\n                var maxHeight = -1;\n                var heightArr = [];\n\n                flowList.find('.flow-box').each(function(index, el) {\n                    if ($(this).height()>maxHeight) {\n                        maxHeight = $(this).outerHeight();\n                    };\n                });\n                flowList.find('.flow-box').css('height', maxHeight);\n            }\n\n        };\n    }\n\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/.gitignore",
    "content": ".idea\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/CONTRIBUTING.md",
    "content": "Contributing to Select2\n=======================\nLooking to contribute something to Select2? **Here's how you can help.**\n\nPlease take a moment to review this document in order to make the contribution\nprocess easy and effective for everyone involved.\n\nFollowing these guidelines helps to communicate that you respect the time of\nthe developers managing and developing this open source project. In return,\nthey should reciprocate that respect in addressing your issue or assessing\npatches and features.\n\nUsing the issue tracker\n-----------------------\nWhen [reporting bugs][reporting-bugs] or\n[requesting features][requesting-features], the\n[issue tracker on GitHub][issue-tracker] is the recommended channel to use.\n\nThe issue tracker **is not** a place for support requests. The\n[mailing list][mailing-list] or [IRC channel][irc-channel] are better places to\nget help.\n\nReporting bugs with Select2\n---------------------------\nWe really appreciate clear bug reports that _consistently_ show an issue\n_within Select2_.\n\nThe ideal bug report follows these guidelines:\n\n1. **Use the [GitHub issue search][issue-search]**  &mdash; Check if the issue\n   has already been reported.\n2. **Check if the issue has been fixed**  &mdash; Try to reproduce the problem\n   using the code in the `master` branch.\n3. **Isolate the problem**  &mdash; Try to create an\n   [isolated test case][isolated-case] that consistently reproduces the problem.\n\nPlease try to be as detailed as possible in your bug report, especially if an\nisolated test case cannot be made. Some useful questions to include the answer\nto are:\n\n- What steps can be used to reproduce the issue?\n- What is the bug and what is the expected outcome?\n- What browser(s) and Operating System have you tested with?\n- Does the bug happen consistently across all tested browsers?\n- What version of jQuery are you using? And what version of Select2?\n- Are you using Select2 with other plugins?\n\nAll of these questions will help people fix and identify any potential bugs.\n\nRequesting features in Select2\n------------------------------\nSelect2 is a large library that carries with it a lot of functionality. Because\nof this, many feature requests will not be implemented in the core library.\n\nBefore starting work on a major feature for Select2, **contact the\n[community][community] first** or you may risk spending a considerable amount of\ntime on something which the project developers are not interested in bringing\ninto the project.\n\n### Select2 4.0\n\nMany feature requests will be closed off until 4.0, where Select2 plans to adopt\na more flexible API.  If you are interested in helping with the development of\nthe next major Select2 release, please send a message to the\n[mailing list][mailing-list] or [irc channel][irc-channel] for more information.\n\nTriaging issues and pull requests\n---------------------------------\nAnyone can help the project maintainers triage issues and review pull requests.\n\n### Handling new issues\n\nSelect2 regularly receives new issues which need to be tested and organized.\n\nWhen a new issue that comes in that is similar to another existing issue, it\nshould be checked to make sure it is not a duplicate.  Duplicates issues should\nbe marked by replying to the issue with \"Duplicate of #[issue number]\" where\n`[issue number]` is the url or issue number for the existing issue.  This will\nallow the project maintainers to quickly close off additional issues and keep\nthe discussion focused within a single issue.\n\nIf you can test issues that are reported to Select2 that contain test cases and\nconfirm under what conditions bugs happen, that will allow others to identify\nwhat causes a bug quicker.\n\n### Reviewing pull requests\n\nIt is very common for pull requests to be opened for issues that contain a clear\nsolution to the problem.  These pull requests should be rigorously reviewed by\nthe community before being accepted.  If you are not sure about a piece of\nsubmitted code, or know of a better way to do something, do not hesitate to make\na comment on the pull request.\n\nIt should also be made clear that **all code contributed to Select** must be\nlicensable under the [Apache 2 or GPL 2 licenses][licensing].  Code that cannot\nbe released under either of these licenses **cannot be accepted** into the\nproject.\n\n[community]: https://github.com/ivaynberg/select2#community\n[reporting-bugs]: #reporting-bugs-with-select2\n[requesting-features]: #requesting-features-in-select2\n[issue-tracker]: https://github.com/ivaynberg/select2/issues\n[mailing-list]: https://github.com/ivaynberg/select2#mailing-list\n[irc-channel]: https://github.com/ivaynberg/select2#irc-channel\n[issue-search]: https://github.com/ivaynberg/select2/search?q=&type=Issues\n[isolated-case]: http://css-tricks.com/6263-reduced-test-cases/\n[licensing]: https://github.com/ivaynberg/select2#copyright-and-license\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/LICENSE",
    "content": "Copyright 2014 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License.\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/README.md",
    "content": "Select2\n=======\n\nSelect2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\n\nTo get started, checkout examples and documentation at http://select2.github.io/select2/\n\nUse cases\n---------\n\n* Enhancing native selects with search.\n* Enhancing native selects with a better multi-select interface.\n* Loading data from JavaScript: easily load items via ajax and have them searchable.\n* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction.\n* Tagging: ability to add new items on the fly.\n* Working with large, remote datasets: ability to partially load a dataset based on the search term.\n* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.\n* Templating: support for custom rendering of results and selections.\n\nBrowser compatibility\n---------------------\n* IE 8+\n* Chrome 8+\n* Firefox 10+\n* Safari 3+\n* Opera 10.6+\n\nUsage\n-----\nYou can source Select2 directly from a CDN like [jsDelivr](http://www.jsdelivr.com/#!select2) or [CDNJS](http://www.cdnjs.com/libraries/select2), [download it from this GitHub repo](https://github.com/select2/select2/tags), or use one of the integrations below.\n\nIntegrations\n------------\n\n* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org))\n* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)\n* [AngularUI](http://angular-ui.github.io/#ui-select) ([AngularJS](https://angularjs.org/))\n* [Django](https://github.com/applegrew/django-select2)\n* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin)\n* [Symfony2](https://github.com/avocode/FormExtensions)\n* [Bootstrap 2](https://github.com/t0m/select2-bootstrap-css) and [Bootstrap 3](https://github.com/t0m/select2-bootstrap-css/tree/bootstrap3) (CSS skins)\n* [Meteor](https://github.com/nate-strauser/meteor-select2) (modern reactive JavaScript framework; + [Bootstrap 3 skin](https://github.com/esperadomedia/meteor-select2-bootstrap3-css/))\n* [Meteor](https://jquery-select2.meteor.com)\n* [Yii 2.x](http://demos.krajee.com/widgets#select2)\n* [Yii 1.x](https://github.com/tonybolzan/yii-select2)\n* [AtmosphereJS](https://atmospherejs.com/package/jquery-select2)\n* [EmberJS](https://github.com/iStefo/ember-select-2)\n\n### Example Integrations\n\n* [Knockout.js](https://github.com/ivaynberg/select2/wiki/Knockout.js-Integration)\n* [Socket.IO](https://github.com/ivaynberg/select2/wiki/Socket.IO-Integration)\n* [PHP](https://github.com/ivaynberg/select2/wiki/PHP-Example)\n* [.Net MVC] (https://github.com/ivaynberg/select2/wiki/.Net-MVC-Example)\n\nInternationalization (i18n)\n---------------------------\n\nSelect2 supports multiple languages by simply including the right language JS\nfile (`select2_locale_it.js`, `select2_locale_nl.js`, etc.) after `select2.js`.\n\nMissing a language? Just copy `select2_locale_en.js.template`, translate\nit, and make a pull request back to Select2 here on GitHub.\n\nDocumentation\n-------------\n\nThe documentation for Select2 is available [through GitHub Pages](http://select2.github.io/select2/) and is located within this repository in the [`gh-pages` branch](https://github.com/ivaynberg/select2/tree/gh-pages).\n\nCommunity\n---------\n\n### Bug tracker\n\nHave a bug? Please create an issue here on GitHub!\n\nhttps://github.com/ivaynberg/select2/issues\n\n### Mailing list\n\nHave a question? Ask on our mailing list!\n\nselect2@googlegroups.com\n\nhttps://groups.google.com/d/forum/select2\n\n### IRC channel\n\nNeed help implementing Select2 in your project? Ask in our IRC channel!\n\n**Network:** [Freenode](https://freenode.net/) (`chat.freenode.net`)\n\n**Channel:** `#select2`\n\n**Web access:** https://webchat.freenode.net/?channels=select2\n\nCopyright and license\n---------------------\n\nCopyright 2015 Igor Vaynberg\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License.\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/bower.json",
    "content": "{\n    \"name\": \"select2\",\n    \"version\": \"3.5.3\",\n    \"main\": [\"select2.js\", \"select2.css\", \"select2.png\", \"select2x2.png\", \"select2-spinner.gif\"],\n    \"dependencies\": {\n        \"jquery\": \">= 1.7.1\"\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/component.json",
    "content": "{\n  \"name\": \"select2\",\n  \"repo\": \"ivaynberg/select2\",\n  \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n  \"version\": \"3.5.3\",\n  \"demo\": \"http://ivaynberg.github.io/select2/\",\n  \"keywords\": [\n    \"jquery\"\n  ],\n  \"main\": \"select2.js\",\n  \"styles\": [\n    \"select2.css\",\n    \"select2-bootstrap.css\"\n  ],\n  \"scripts\": [\n    \"select2.js\",\n    \"select2_locale_ar.js\",\n    \"select2_locale_bg.js\",\n    \"select2_locale_ca.js\",\n    \"select2_locale_cs.js\",\n    \"select2_locale_da.js\",\n    \"select2_locale_de.js\",\n    \"select2_locale_el.js\",\n    \"select2_locale_es.js\",\n    \"select2_locale_et.js\",\n    \"select2_locale_eu.js\",\n    \"select2_locale_fa.js\",\n    \"select2_locale_fi.js\",\n    \"select2_locale_fr.js\",\n    \"select2_locale_gl.js\",\n    \"select2_locale_he.js\",\n    \"select2_locale_hr.js\",\n    \"select2_locale_hu.js\",\n    \"select2_locale_id.js\",\n    \"select2_locale_is.js\",\n    \"select2_locale_it.js\",\n    \"select2_locale_ja.js\",\n    \"select2_locale_ka.js\",\n    \"select2_locale_ko.js\",\n    \"select2_locale_lt.js\",\n    \"select2_locale_lv.js\",\n    \"select2_locale_mk.js\",\n    \"select2_locale_ms.js\",\n    \"select2_locale_nl.js\",\n    \"select2_locale_no.js\",\n    \"select2_locale_pl.js\",\n    \"select2_locale_pt-BR.js\",\n    \"select2_locale_pt-PT.js\",\n    \"select2_locale_ro.js\",\n    \"select2_locale_ru.js\",\n    \"select2_locale_sk.js\",\n    \"select2_locale_sv.js\",\n    \"select2_locale_th.js\",\n    \"select2_locale_tr.js\",\n    \"select2_locale_uk.js\",\n    \"select2_locale_vi.js\",\n    \"select2_locale_zh-CN.js\",\n    \"select2_locale_zh-TW.js\"\n  ],\n  \"images\": [\n    \"select2-spinner.gif\",\n    \"select2.png\",\n    \"select2x2.png\"\n  ],\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/composer.json",
    "content": "{\n  \"name\":\n  \"ivaynberg/select2\",\n  \"description\": \"Select2 is a jQuery based replacement for select boxes.\",\n  \"version\": \"3.5.3\",\n  \"type\": \"component\",\n  \"homepage\": \"http://ivaynberg.github.io/select2/\",\n  \"license\": \"Apache-2.0\",\n  \"require\": {\n    \"robloach/component-installer\": \"*\",\n    \"components/jquery\": \">=1.7.1\"\n  },\n  \"extra\": {\n    \"component\": {\n      \"scripts\": [\n        \"select2.js\"\n      ],\n      \"files\": [\n        \"select2.js\",\n        \"select2_locale_*.js\",\n        \"select2.css\",\n        \"select2-bootstrap.css\",\n        \"select2-spinner.gif\",\n        \"select2.png\",\n        \"select2x2.png\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/release.sh",
    "content": "#!/bin/bash\nset -e\n\necho -n \"Enter the version for this release: \"\n\nread ver\n\nif [ ! $ver ]; then\n\techo \"Invalid version.\"\n\texit\nfi\n\nname=\"select2\"\njs=\"$name.js\"\nmini=\"$name.min.js\"\ncss=\"$name.css\"\nrelease=\"$name-$ver\"\ntag=\"$ver\"\nbranch=\"build-$ver\"\ncurbranch=`git branch | grep \"*\" | sed \"s/* //\"`\ntimestamp=$(date)\ntokens=\"s/@@ver@@/$ver/g;s/\\@@timestamp@@/$timestamp/g\"\nremote=\"origin\"\n\necho \"Pulling from origin\"\n\ngit pull\n\necho \"Updating Version Identifiers\"\n\nsed -E -e \"s/\\\"version\\\": \\\"([0-9\\.]+)\\\",/\\\"version\\\": \\\"$ver\\\",/g\" -i -- bower.json select2.jquery.json component.json composer.json package.json\n\ngit add bower.json\ngit add select2.jquery.json\ngit add component.json\ngit add composer.json\ngit add package.json\n\ngit commit -m \"modified version identifiers in descriptors for release $ver\"\ngit push\n\ngit branch \"$branch\"\ngit checkout \"$branch\"\n\necho \"Tokenizing...\"\n\nfind . -name \"$js\" | xargs -I{} sed -e \"$tokens\" -i -- {}\nfind . -name \"$css\" | xargs -I{} sed -e \"$tokens\" -i -- {}\n\nsed -e \"s/latest/$ver/g\" -i -- bower.json\n\ngit add \"$js\"\ngit add \"$css\"\n\necho \"Minifying...\"\n\necho \"/*\" > \"$mini\"\ncat LICENSE | sed \"$tokens\" >> \"$mini\"\necho \"*/\" >> \"$mini\"\n\ncurl -s \\\n\t--data-urlencode \"js_code@$js\" \\\n\thttp://marijnhaverbeke.nl/uglifyjs \\\n\t>> \"$mini\"\n\ngit add \"$mini\"\n\ngit commit -m \"release $ver\"\n\necho \"Tagging...\"\ngit tag -a \"$tag\" -m \"tagged version $ver\"\ngit push \"$remote\" --tags\n\necho \"Cleaning Up...\"\n\ngit checkout \"$curbranch\"\ngit branch -D \"$branch\"\n\necho \"Done\"\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2-bootstrap.css",
    "content": ".form-control .select2-choice {\n    border: 0;\n    border-radius: 2px;\n}\n\n.form-control .select2-choice .select2-arrow {\n    border-radius: 0 2px 2px 0;   \n}\n\n.form-control.select2-container {\n    height: auto !important;\n    padding: 0;\n}\n\n.form-control.select2-container.select2-dropdown-open {\n    border-color: #5897FB;\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control .select2-container.select2-dropdown-open .select2-choices {\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control.select2-container .select2-choices {\n    border: 0 !important;\n    border-radius: 3px;\n}\n\n.control-group.warning .select2-container .select2-choice,\n.control-group.warning .select2-container .select2-choices,\n.control-group.warning .select2-container-active .select2-choice,\n.control-group.warning .select2-container-active .select2-choices,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.warning .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #C09853 !important;\n}\n\n.control-group.warning .select2-container .select2-choice div {\n    border-left: 1px solid #C09853 !important;\n    background: #FCF8E3 !important;\n}\n\n.control-group.error .select2-container .select2-choice,\n.control-group.error .select2-container .select2-choices,\n.control-group.error .select2-container-active .select2-choice,\n.control-group.error .select2-container-active .select2-choices,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.error .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #B94A48 !important;\n}\n\n.control-group.error .select2-container .select2-choice div {\n    border-left: 1px solid #B94A48 !important;\n    background: #F2DEDE !important;\n}\n\n.control-group.info .select2-container .select2-choice,\n.control-group.info .select2-container .select2-choices,\n.control-group.info .select2-container-active .select2-choice,\n.control-group.info .select2-container-active .select2-choices,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.info .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #3A87AD !important;\n}\n\n.control-group.info .select2-container .select2-choice div {\n    border-left: 1px solid #3A87AD !important;\n    background: #D9EDF7 !important;\n}\n\n.control-group.success .select2-container .select2-choice,\n.control-group.success .select2-container .select2-choices,\n.control-group.success .select2-container-active .select2-choice,\n.control-group.success .select2-container-active .select2-choices,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.success .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #468847 !important;\n}\n\n.control-group.success .select2-container .select2-choice div {\n    border-left: 1px solid #468847 !important;\n    background: #DFF0D8 !important;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2.css",
    "content": "/*\nVersion: 3.5.3 Timestamp: Wed Aug 19 21:55:46 EDT 2015\n*/\n.select2-container {\n    margin: 0;\n    position: relative;\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n     -moz-box-sizing: border-box; /* firefox */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    border-radius: 4px;\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n    padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    border-radius: 0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n    background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n    margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    text-overflow: ellipsis;\n    float: none;\n    width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n    margin-left: 26px;\n    margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n    display: none;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 24px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n    display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    border: 0;\n    margin: 0;\n    padding: 0;\n    position: fixed;\n    left: 0;\n    top: 0;\n    min-height: 100%;\n    min-width: 100%;\n    height: auto;\n    width: auto;\n    opacity: 0;\n    z-index: 9998;\n    /* styles required for IE to work */\n    background-color: #fff;\n    filter: alpha(opacity=0);\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top: -1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n    border: 1px solid #5897fb;\n    border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n    border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n    border-top: 1px solid #aaa;\n    width: auto;\n}\n\n.select2-container .select2-choice .select2-arrow {\n    display: inline-block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    border-radius: 0 4px 4px 0;\n\n    background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n    left: 0;\n    right: auto;\n\n    border-left: none;\n    border-right: 1px solid #aaa;\n    border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n    background-position: 2px 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding: 4px 4px 0 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    border-radius: 0;\n\n    -webkit-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n    background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n    padding: 4px 5px 4px 20px;\n\n    background: #fff url('select2.png') no-repeat -37px -22px;\n    background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n    border: 1px solid #5897fb;\n    border-top-color: transparent;\n\n    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n    border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n    padding: 0 4px 0 0;\n    margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n    padding-left: 0;\n}\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    min-height: 1em;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: #fff;\n    color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n    padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n    background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0 5px 0 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n    background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n    padding: 0 0 0 5px;\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n    float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n            box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n    margin: 3px 5px 3px 0;\n    padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n    right: auto;\n    left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n    left: auto;\n    right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {    display: none;\n    background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n    clip: rect(0 0 0 0) !important;\n    width: 1px !important;\n    height: 1px !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n    outline: 0 !important;\n    left: 0px !important;\n    top: 0px !important;\n}\n\n.select2-display-none {\n    display: none;\n}\n\n.select2-measure-scrollbar {\n    position: absolute;\n    top: -10000px;\n    left: -10000px;\n    width: 100px;\n    height: 100px;\n    overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx)  {\n    .select2-search input,\n    .select2-search-choice-close,\n    .select2-container .select2-choice abbr,\n    .select2-container .select2-choice .select2-arrow b {\n        background-image: url('select2x2.png') !important;\n        background-repeat: no-repeat !important;\n        background-size: 60px 40px !important;\n    }\n\n    .select2-search input {\n        background-position: 100% -21px !important;\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2.jquery.json",
    "content": "{\n    \"name\": \"select2\",\n    \"title\": \"Select2\",\n    \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n    \"keywords\": [\n        \"select\",\n        \"autocomplete\",\n        \"typeahead\",\n        \"dropdown\",\n        \"multiselect\",\n        \"tag\",\n        \"tagging\"\n    ],\n    \"version\": \"3.5.3\",\n    \"author\": {\n        \"name\": \"Igor Vaynberg\",\n        \"url\": \"https://github.com/ivaynberg\"\n    },\n    \"licenses\": [\n        {\n            \"type\": \"Apache\",\n            \"url\": \"http://www.apache.org/licenses/LICENSE-2.0\"\n        },\n        {\n            \"type\": \"GPL v2\",\n            \"url\": \"http://www.gnu.org/licenses/gpl-2.0.html\"\n        }\n    ],\n    \"bugs\": \"https://github.com/ivaynberg/select2/issues\",\n    \"homepage\": \"http://ivaynberg.github.com/select2\",\n    \"docs\": \"http://ivaynberg.github.com/select2/\",\n    \"download\": \"https://github.com/ivaynberg/select2/tags\",\n    \"dependencies\": {\n        \"jquery\": \">=1.7.1\"\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2.js",
    "content": "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: 3.5.3 Timestamp: Wed Aug 19 21:55:46 EDT 2015\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n(function ($) {\n    if(typeof $.fn.each2 == \"undefined\") {\n        $.extend($.fn, {\n            /*\n            * 4-10 times faster .each replacement\n            * use it carefully, as it overrides jQuery context of element on each iteration\n            */\n            each2 : function (c) {\n                var j = $([0]), i = -1, l = this.length;\n                while (\n                    ++i < l\n                    && (j.context = j[0] = this[i])\n                    && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n                );\n                return this;\n            }\n        });\n    }\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    },\n    MEASURE_SCROLLBAR_TEMPLATE = \"<div class='select2-measure-scrollbar'></div>\",\n\n    DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\",\"\\u0386\":\"\\u0391\",\"\\u0388\":\"\\u0395\",\"\\u0389\":\"\\u0397\",\"\\u038A\":\"\\u0399\",\"\\u03AA\":\"\\u0399\",\"\\u038C\":\"\\u039F\",\"\\u038E\":\"\\u03A5\",\"\\u03AB\":\"\\u03A5\",\"\\u038F\":\"\\u03A9\",\"\\u03AC\":\"\\u03B1\",\"\\u03AD\":\"\\u03B5\",\"\\u03AE\":\"\\u03B7\",\"\\u03AF\":\"\\u03B9\",\"\\u03CA\":\"\\u03B9\",\"\\u0390\":\"\\u03B9\",\"\\u03CC\":\"\\u03BF\",\"\\u03CD\":\"\\u03C5\",\"\\u03CB\":\"\\u03C5\",\"\\u03B0\":\"\\u03C5\",\"\\u03C9\":\"\\u03C9\",\"\\u03C2\":\"\\u03C3\"};\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n\n    function reinsertElement(element) {\n        var placeholder = $(document.createTextNode(''));\n\n        element.before(placeholder);\n        placeholder.before(element);\n        placeholder.remove();\n    }\n\n    function stripDiacritics(str) {\n        // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n        function match(a) {\n            return DIACRITICS[a] || a;\n        }\n\n        return str.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    function measureScrollbar () {\n        var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\n        $template.appendTo(document.body);\n\n        var dim = {\n            width: $template.width() - $template[0].clientWidth,\n            height: $template.height() - $template[0].clientHeight\n        };\n        $template.remove();\n\n        return dim;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        // Check whether 'a' or 'b' is a string (primitive or object).\n        // The concatenation of an empty string (+'') converts its argument to a string's primitive.\n        if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\n        if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, transforming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator, transform) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = transform(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.on(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.on(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n        element.on(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.on(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);\n            if (isVisible && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function getCursorInfo(el) {\n        el = $(el)[0];\n        var offset = 0;\n        var length = 0;\n        if ('selectionStart' in el) {\n            offset = el.selectionStart;\n            length = el.selectionEnd - offset;\n        } else if ('selection' in document) {\n            el.focus();\n            var sel = document.selection.createRange();\n            length = document.selection.createRange().text.length;\n            sel.moveStart('character', -el.value.length);\n            offset = sel.text.length - length;\n        }\n        return { offset: offset, length: length };\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n            var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n            sizer = $(document.createElement(\"div\")).css({\n                position: \"absolute\",\n                left: \"-10000px\",\n                top: \"-10000px\",\n                display: \"none\",\n                fontSize: style.fontSize,\n                fontFamily: style.fontFamily,\n                fontStyle: style.fontStyle,\n                fontWeight: style.fontWeight,\n                letterSpacing: style.letterSpacing,\n                textTransform: style.textTransform,\n                whiteSpace: \"nowrap\"\n            });\n            sizer.attr(\"class\",\"select2-sizer\");\n            $(document.body).append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = $.trim(dest.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n\n        classes = $.trim(src.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n\n                    if (adapted) {\n                        replacements.push(adapted);\n                    }\n                }\n            });\n        }\n\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    function defaultEscapeMarkup(markup) {\n        var replace_map = {\n            '\\\\': '&#92;',\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#39;',\n            \"/\": '&#47;'\n        };\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n            return replace_map[match];\n        });\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration parameters\n     * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                var data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.fn.select2.ajaxDefaults.transport,\n                    // deprecated - to be removed in 4.0  - use params instead\n                    deprecated = {\n                        type: options.type || 'GET', // set type of request (GET or POST)\n                        cache: options.cache || false,\n                        jsonpCallback: options.jsonpCallback||undefined,\n                        dataType: options.dataType||\"json\"\n                    },\n                    params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if (handler && typeof handler.abort === \"function\") { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    success: function (data) {\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        // added query as third paramter to keep backwards compatibility\n                        var results = options.results(data, query.page, query);\n                        query.callback(results);\n                    },\n                    error: function(jqXHR, textStatus, errorThrown){\n                        var results = {\n                            hasError: true,\n                            jqXHR: jqXHR,\n                            textStatus: textStatus,\n                            errorThrown: errorThrown\n                        };\n\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n         if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n         if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            var result = isFunc ? data(query) : data;\n            if ($.isArray(result)) {\n                $(result).each(function () {\n                    var isObject = this.text !== undefined,\n                        text = isObject ? this.text : this;\n                    if (t === \"\" || query.matcher(t, text)) {\n                        filtered.results.push(isObject ? this : {id: this, text: this});\n                    }\n                });\n                query.callback(filtered);\n            }\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        if (typeof(formatter) === 'string') return true;\n        throw new Error(formatterName +\" must be a string, function, or falsy value\");\n    }\n\n  /**\n   * Returns a given value\n   * If given a function, returns its output\n   *\n   * @param val string|function\n   * @param context value of \"this\" to be passed to function\n   * @returns {*}\n   */\n    function evaluate(val, context) {\n        if ($.isFunction(val)) {\n            var args = Array.prototype.slice.call(arguments, 2);\n            return val.apply(context, args);\n        }\n        return val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice.call(this, token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    function cleanupJQueryElements() {\n        var self = this;\n\n        $.each(arguments, function (i, element) {\n            self[element].remove();\n            self[element] = null;\n        });\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\";\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                opts.element.data(\"select2\").destroy();\n            }\n\n            this.container = this.createContainer();\n\n            this.liveRegion = $('.select2-hidden-accessible');\n            if (this.liveRegion.length == 0) {\n                this.liveRegion = $(\"<span>\", {\n                        role: \"status\",\n                        \"aria-live\": \"polite\"\n                    })\n                    .addClass(\"select2-hidden-accessible\")\n                    .appendTo(document.body);\n            }\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerEventName= this.containerId\n                .replace(/([.])/g, '_')\n                .replace(/([;&,\\-\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            this.container.attr(\"title\", opts.element.attr(\"title\"));\n\n            this.body = $(document.body);\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.attr(\"style\", opts.element.attr(\"style\"));\n            this.container.css(evaluate(opts.containerCss, this.opts.element));\n            this.container.addClass(evaluate(opts.containerCssClass, this.opts.element));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabindex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .attr(\"tabindex\", \"-1\")\n                .before(this.container)\n                .on(\"click.select2\", killEvent); // do not leak click events\n\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n\n            syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element));\n            this.dropdown.data(\"select2\", this);\n            this.dropdown.on(\"click\", killEvent);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            this.queryCount = 0;\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            this.container.on(\"click\", killEvent);\n\n            installFilteredMouseMove(this.results);\n\n            this.dropdown.on(\"mousemove-filtered\", resultsSelector, this.bind(this.highlightUnderEvent));\n            this.dropdown.on(\"touchstart touchmove touchend\", resultsSelector, this.bind(function (event) {\n                this._touchEvent = true;\n                this.highlightUnderEvent(event);\n            }));\n            this.dropdown.on(\"touchmove\", resultsSelector, this.bind(this.touchMoved));\n            this.dropdown.on(\"touchstart touchend\", resultsSelector, this.bind(this.clearTouchMoved));\n\n            // Waiting for a click event on touch devices to select option and hide dropdown\n            // otherwise click will be triggered on an underlying element\n            this.dropdown.on('click', this.bind(function (event) {\n                if (this._touchEvent) {\n                    this._touchEvent = false;\n                    this.selectHighlighted();\n                }\n            }));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\n\n            // do not propagate change event from the search field out of the component\n            $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n            $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop();\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.on(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.\n            this.dropdown.on(\"click mouseup mousedown touchstart touchend focusin\", function (e) { e.stopPropagation(); });\n\n            this.lastSearchTerm = undefined;\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.maximumInputLength !== null) {\n                this.search.attr(\"maxlength\", opts.maximumInputLength);\n            }\n\n            var disabled = opts.element.prop(\"disabled\");\n            if (disabled === undefined) disabled = false;\n            this.enable(!disabled);\n\n            var readonly = opts.element.prop(\"readonly\");\n            if (readonly === undefined) readonly = false;\n            this.readonly(readonly);\n\n            // Calculate size of scrollbar\n            scrollBarDimensions = scrollBarDimensions || measureScrollbar();\n\n            this.autofocus = opts.element.prop(\"autofocus\");\n            opts.element.prop(\"autofocus\", false);\n            if (this.autofocus) this.focus();\n\n            this.search.attr(\"placeholder\", opts.searchInputPlaceholder);\n        },\n\n        // abstract\n        destroy: function () {\n            var element=this.opts.element, select2 = element.data(\"select2\"), self = this;\n\n            this.close();\n\n            if (element.length && element[0].detachEvent && self._sync) {\n                element.each(function () {\n                    if (self._sync) {\n                        this.detachEvent(\"onpropertychange\", self._sync);\n                    }\n                });\n            }\n            if (this.propertyObserver) {\n                this.propertyObserver.disconnect();\n                this.propertyObserver = null;\n            }\n            this._sync = null;\n\n            if (select2 !== undefined) {\n                select2.container.remove();\n                select2.liveRegion.remove();\n                select2.dropdown.remove();\n                element.removeData(\"select2\")\n                    .off(\".select2\");\n                if (!element.is(\"input[type='hidden']\")) {\n                    element\n                        .show()\n                        .prop(\"autofocus\", this.autofocus || false);\n                    if (this.elementTabIndex) {\n                        element.attr({tabindex: this.elementTabIndex});\n                    } else {\n                        element.removeAttr(\"tabindex\");\n                    }\n                    element.show();\n                } else {\n                    element.css(\"display\", \"\");\n                }\n            }\n\n            cleanupJQueryElements.call(this,\n                \"container\",\n                \"liveRegion\",\n                \"dropdown\",\n                \"results\",\n                \"search\"\n            );\n        },\n\n        // abstract\n        optionToData: function(element) {\n            if (element.is(\"option\")) {\n                return {\n                    id:element.prop(\"value\"),\n                    text:element.text(),\n                    element: element.get(),\n                    css: element.attr(\"class\"),\n                    disabled: element.prop(\"disabled\"),\n                    locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\n                };\n            } else if (element.is(\"optgroup\")) {\n                return {\n                    text:element.attr(\"label\"),\n                    children:[],\n                    element: element.get(),\n                    css: element.attr(\"class\")\n                };\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl, self = this;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts.debug = opts.debug || $.fn.select2.defaults.debug;\n\n            // Warnings for options renamed/removed in Select2 4.0.0\n            // Only when it's enabled through debug mode\n            if (opts.debug && console && console.warn) {\n                // id was removed\n                if (opts.id != null) {\n                    console.warn(\n                        'Select2: The `id` option has been removed in Select2 4.0.0, ' +\n                        'consider renaming your `id` property or mapping the property before your data makes it to Select2. ' +\n                        'You can read more at https://select2.github.io/announcements-4.0.html#changed-id'\n                    );\n                }\n\n                // text was removed\n                if (opts.text != null) {\n                    console.warn(\n                        'Select2: The `text` option has been removed in Select2 4.0.0, ' +\n                        'consider renaming your `text` property or mapping the property before your data makes it to Select2. ' +\n                        'You can read more at https://select2.github.io/announcements-4.0.html#changed-id'\n                    );\n                }\n\n                // sortResults was renamed to results\n                if (opts.sortResults != null) {\n                    console.warn(\n                        'Select2: the `sortResults` option has been renamed to `sorter` in Select2 4.0.0. '\n                    );\n                }\n\n                // selectOnBlur was renamed to selectOnClose\n                if (opts.selectOnBlur != null) {\n                    console.warn(\n                        'Select2: The `selectOnBlur` option has been renamed to `selectOnClose` in Select2 4.0.0.'\n                    );\n                }\n\n                // ajax.results was renamed to ajax.processResults\n                if (opts.ajax != null && opts.ajax.results != null) {\n                    console.warn(\n                        'Select2: The `ajax.results` option has been renamed to `ajax.processResults` in Select2 4.0.0.'\n                    );\n                }\n\n                // format* options were renamed to language.*\n                if (opts.formatNoResults != null) {\n                    console.warn(\n                        'Select2: The `formatNoResults` option has been renamed to `language.noResults` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatSearching != null) {\n                    console.warn(\n                        'Select2: The `formatSearching` option has been renamed to `language.searching` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatInputTooShort != null) {\n                    console.warn(\n                        'Select2: The `formatInputTooShort` option has been renamed to `language.inputTooShort` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatInputTooLong != null) {\n                    console.warn(\n                        'Select2: The `formatInputTooLong` option has been renamed to `language.inputTooLong` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatLoading != null) {\n                    console.warn(\n                        'Select2: The `formatLoading` option has been renamed to `language.loadingMore` in Select2 4.0.0.'\n                    );\n                }\n                if (opts.formatSelectionTooBig != null) {\n                    console.warn(\n                        'Select2: The `formatSelectionTooBig` option has been renamed to `language.maximumSelected` in Select2 4.0.0.'\n                    );\n                }\n\n                if (opts.element.data('select2Tags')) {\n                    console.warn(\n                        'Select2: The `data-select2-tags` attribute has been renamed to `data-tags` in Select2 4.0.0.'\n                    );\n                }\n            }\n\n            // Aliasing options renamed in Select2 4.0.0\n\n            // data-select2-tags -> data-tags\n            if (opts.element.data('tags') != null) {\n                var tags = opts.element.data('tags');\n\n                // data-tags should actually be a boolean\n                if (!$.isArray(tags)) {\n                    tags = [];\n                }\n\n                opts.element.data('select2Tags', tags);\n            }\n\n            // sortResults -> sorter\n            if (opts.sorter != null) {\n                opts.sortResults = opts.sorter;\n            }\n\n            // selectOnBlur -> selectOnClose\n            if (opts.selectOnClose != null) {\n                opts.selectOnBlur = opts.selectOnClose;\n            }\n\n            // ajax.results -> ajax.processResults\n            if (opts.ajax != null) {\n                if ($.isFunction(opts.ajax.processResults)) {\n                    opts.ajax.results = opts.ajax.processResults;\n                }\n            }\n\n            // Formatters/language options\n            if (opts.language != null) {\n                var lang = opts.language;\n\n                // formatNoMatches -> language.noMatches\n                if ($.isFunction(lang.noMatches)) {\n                    opts.formatNoMatches = lang.noMatches;\n                }\n\n                // formatSearching -> language.searching\n                if ($.isFunction(lang.searching)) {\n                    opts.formatSearching = lang.searching;\n                }\n\n                // formatInputTooShort -> language.inputTooShort\n                if ($.isFunction(lang.inputTooShort)) {\n                    opts.formatInputTooShort = lang.inputTooShort;\n                }\n\n                // formatInputTooLong -> language.inputTooLong\n                if ($.isFunction(lang.inputTooLong)) {\n                    opts.formatInputTooLong = lang.inputTooLong;\n                }\n\n                // formatLoading -> language.loadingMore\n                if ($.isFunction(lang.loadingMore)) {\n                    opts.formatLoading = lang.loadingMore;\n                }\n\n                // formatSelectionTooBig -> language.maximumSelected\n                if ($.isFunction(lang.maximumSelected)) {\n                    opts.formatSelectionTooBig = lang.maximumSelected;\n                }\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate, id=this.opts.id, liveRegion=this.liveRegion;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        // collect the created nodes for bulk append\n                        var nodes = [];\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n                            node.attr(\"role\", \"presentation\");\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n                            label.attr(\"id\", \"select2-result-label-\" + nextUid());\n                            label.attr(\"role\", \"option\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                                node.append(label);\n                            }\n\n\n                            if (compound) {\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            nodes.push(node[0]);\n                        }\n\n                        // bulk append the created nodes\n                        container.append(nodes);\n                        liveRegion.text(opts.formatMatches(results.length));\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.data(\"select2Tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, placeholderOption, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push(self.optionToData(element));\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group=self.optionToData(element);\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        placeholderOption = this.getPlaceholderOption();\n                        if (placeholderOption) {\n                            children=children.not(placeholderOption);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and their id is hardcoded\n                opts.id=function(e) { return e.id; };\n            } else {\n                if (!(\"query\" in opts)) {\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator, opts.transformVal)).each(function () {\n                                    var obj = { id: this, text: this },\n                                        tags = opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });\n                                    data.push(obj);\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            if (opts.createSearchChoicePosition === 'top') {\n                opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };\n            }\n            else if (opts.createSearchChoicePosition === 'bottom') {\n                opts.createSearchChoicePosition = function(list, item) { list.push(item); };\n            }\n            else if (typeof(opts.createSearchChoicePosition) !== \"function\")  {\n                throw \"invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function\";\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, observer, self = this;\n\n            el.on(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            this._sync = this.bind(function () {\n\n                // sync enabled state\n                var disabled = el.prop(\"disabled\");\n                if (disabled === undefined) disabled = false;\n                this.enable(!disabled);\n\n                var readonly = el.prop(\"readonly\");\n                if (readonly === undefined) readonly = false;\n                this.readonly(readonly);\n\n                if (this.container) {\n                    syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                    this.container.addClass(evaluate(this.opts.containerCssClass, this.opts.element));\n                }\n\n                if (this.dropdown) {\n                    syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                    this.dropdown.addClass(evaluate(this.opts.dropdownCssClass, this.opts.element));\n                }\n\n            });\n\n            // IE8-10 (IE9/10 won't fire propertyChange via attachEventListener)\n            if (el.length && el[0].attachEvent) {\n                el.each(function() {\n                    this.attachEvent(\"onpropertychange\", self._sync);\n                });\n            }\n\n            // safari, chrome, firefox, IE11\n            observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;\n            if (observer !== undefined) {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new observer(function (mutations) {\n                    $.each(mutations, self._sync);\n                });\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        // abstract\n        triggerSelect: function(data) {\n            var evt = $.Event(\"select2-selecting\", { val: this.id(data), object: data, choice: data });\n            this.opts.element.trigger(evt);\n            return !evt.isDefaultPrevented();\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignores the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        //abstract\n        isInterfaceEnabled: function()\n        {\n            return this.enabledInterface === true;\n        },\n\n        // abstract\n        enableInterface: function() {\n            var enabled = this._enabled && !this._readonly,\n                disabled = !enabled;\n\n            if (enabled === this.enabledInterface) return false;\n\n            this.container.toggleClass(\"select2-container-disabled\", disabled);\n            this.close();\n            this.enabledInterface = enabled;\n\n            return true;\n        },\n\n        // abstract\n        enable: function(enabled) {\n            if (enabled === undefined) enabled = true;\n            if (this._enabled === enabled) return;\n            this._enabled = enabled;\n\n            this.opts.element.prop(\"disabled\", !enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        disable: function() {\n            this.enable(false);\n        },\n\n        // abstract\n        readonly: function(enabled) {\n            if (enabled === undefined) enabled = false;\n            if (this._readonly === enabled) return;\n            this._readonly = enabled;\n\n            this.opts.element.prop(\"readonly\", enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        opened: function () {\n            return (this.container) ? this.container.hasClass(\"select2-dropdown-open\") : false;\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var $dropdown = this.dropdown,\n                container = this.container,\n                offset = container.offset(),\n                height = container.outerHeight(false),\n                width = container.outerWidth(false),\n                dropHeight = $dropdown.outerHeight(false),\n                $window = $(window),\n                windowWidth = $window.width(),\n                windowHeight = $window.height(),\n                viewPortRight = $window.scrollLeft() + windowWidth,\n                viewportBottom = $window.scrollTop() + windowHeight,\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(),\n                dropWidth = $dropdown.outerWidth(false),\n                enoughRoomOnRight = function() {\n                    return dropLeft + dropWidth <= viewPortRight;\n                },\n                enoughRoomOnLeft = function() {\n                    return offset.left + viewPortRight + container.outerWidth(false)  > dropWidth;\n                },\n                aboveNow = $dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                changeDirection,\n                css,\n                resultsListNode;\n\n            // always prefer the current above/below alignment, unless there is not enough room\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) {\n                    changeDirection = true;\n                    above = false;\n                }\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) {\n                    changeDirection = true;\n                    above = true;\n                }\n            }\n\n            //if we are changing direction we need to get positions when dropdown is hidden;\n            if (changeDirection) {\n                $dropdown.hide();\n                offset = this.container.offset();\n                height = this.container.outerHeight(false);\n                width = this.container.outerWidth(false);\n                dropHeight = $dropdown.outerHeight(false);\n                viewPortRight = $window.scrollLeft() + windowWidth;\n                viewportBottom = $window.scrollTop() + windowHeight;\n                dropTop = offset.top + height;\n                dropLeft = offset.left;\n                dropWidth = $dropdown.outerWidth(false);\n                $dropdown.show();\n\n                // fix so the cursor does not move to the left within the search-textbox in IE\n                this.focusSearch();\n            }\n\n            if (this.opts.dropdownAutoWidth) {\n                resultsListNode = $('.select2-results', $dropdown)[0];\n                $dropdown.addClass('select2-drop-auto-width');\n                $dropdown.css('width', '');\n                // Add scrollbar width to dropdown if vertical scrollbar is present\n                dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);\n                dropWidth > width ? width = dropWidth : dropWidth = width;\n                dropHeight = $dropdown.outerHeight(false);\n            }\n            else {\n                this.container.removeClass('select2-drop-auto-width');\n            }\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body.scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n            if (this.body.css('position') !== 'static') {\n                bodyOffset = this.body.offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            if (!enoughRoomOnRight() && enoughRoomOnLeft()) {\n                dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;\n            }\n\n            css =  {\n                left: dropLeft,\n                width: width\n            };\n\n            if (above) {\n                this.container.addClass(\"select2-drop-above\");\n                $dropdown.addClass(\"select2-drop-above\");\n                dropHeight = $dropdown.outerHeight(false);\n                css.top = offset.top - dropHeight;\n                css.bottom = 'auto';\n            }\n            else {\n                css.top = dropTop;\n                css.bottom = 'auto';\n                this.container.removeClass(\"select2-drop-above\");\n                $dropdown.removeClass(\"select2-drop-above\");\n            }\n            css = $.extend(css, evaluate(this.opts.dropdownCss, this.opts.element));\n\n            $dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            if (this._enabled === false || this._readonly === true) return false;\n\n            event = $.Event(\"select2-opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            this.opening();\n\n            // Only bind the document mousemove when the dropdown is visible\n            $document.on(\"mousemove.select2Event\", function (e) {\n                lastMousePosition.x = e.pageX;\n                lastMousePosition.y = e.pageY;\n            });\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n            this.clearDropdownAlignmentPreference();\n\n            if(this.dropdown[0] !== this.body.children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body);\n            }\n\n            // create the dropdown mask if doesn't already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length === 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body);\n                mask.on(\"mousedown touchstart click\", function (e) {\n                    // Prevent IE from generating a click event on the body\n                    reinsertElement(mask);\n\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close();\n                        e.preventDefault();\n                        e.stopPropagation();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.show();\n\n            this.positionDropdown();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).on(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    if (that.opened()) that.positionDropdown();\n                });\n            });\n\n\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\").removeClass(\"select2-container-active\");\n            this.results.empty();\n\n            // Now that the dropdown is closed, unbind the global document mousemove event\n            $document.off(\"mousemove.select2Event\");\n\n            this.clearSearch();\n            this.search.removeClass(\"select2-active\");\n\n            // Remove the aria active descendant for highlighted element\n            this.search.removeAttr(\"aria-activedescendant\");\n            this.opts.element.trigger($.Event(\"select2-close\"));\n        },\n\n        /**\n         * Opens control, sets input value, and updates results.\n         */\n        // abstract\n        externalSearch: function (term) {\n            this.open();\n            this.search.val(term);\n            this.updateResults(false);\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        /**\n         * @return {Boolean} Whether or not search value was changed.\n         * @private\n         */\n        prefillNextSearchTerm: function () {\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() !== \"\") {\n                return false;\n            }\n\n            var nextSearchTerm = this.opts.nextSearchTerm(this.data(), this.lastSearchTerm);\n            if(nextSearchTerm !== undefined){\n                this.search.val(nextSearchTerm);\n                this.search.select();\n                return true;\n            }\n\n            return false;\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize, this.opts.element);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more, topOffset;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices().find('.select2-result-label');\n\n            child = $(children[index]);\n\n            topOffset = (child.offset() || {}).top || 0;\n\n            hb = topOffset + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(false);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = topOffset - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            return this.results.find(\".select2-result-selectable:not(.select2-disabled):not(.select2-selected)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.removeHighlight();\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            // ensure assistive technology can determine the active choice\n            this.search.attr(\"aria-activedescendant\", choice.find(\".select2-result-label\").attr(\"id\"));\n\n            this.ensureHighlightVisible();\n\n            this.liveRegion.text(choice.text());\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"select2-highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        removeHighlight: function() {\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n        },\n\n        touchMoved: function() {\n            this._touchMoved = true;\n        },\n\n        clearTouchMoved: function() {\n          this._touchMoved = false;\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n                var choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove all highlights\n                this.removeHighlight();\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n\n                    if (data.more===true) {\n                        more.detach().appendTo(results).html(self.opts.escapeMarkup(evaluate(self.opts.formatLoadMore, self.opts.element, page+1)));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                    this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search,\n                results = this.results,\n                opts = this.opts,\n                data,\n                self = this,\n                input,\n                term = search.val(),\n                lastTerm = $.data(this.container, \"select2-last-term\"),\n                // sequence number used to drop out-of-order responses\n                queryNumber;\n\n            // prevent duplicate queries against the same term\n            if (initial !== true && lastTerm && equal(term, lastTerm)) return;\n\n            $.data(this.container, \"select2-last-term\", term);\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            function postRender() {\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n                if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {\n                    self.liveRegion.text(results.text());\n                }\n                else {\n                    self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable:not(\".select2-selected\")').length));\n                }\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            queryNumber = ++this.queryCount;\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n                    render(\"<li class='select2-selection-limit'>\" + evaluate(opts.formatSelectionTooBig, opts.element, maxSelSize) + \"</li>\");\n                    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooShort, opts.element, search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                if (initial && this.showSearch) this.showSearch(true);\n                return;\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooLong, opts.element, search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            if (opts.formatSearching && this.findHighlightableChoices().length === 0) {\n                render(\"<li class='select2-searching'>\" + evaluate(opts.formatSearching, opts.element) + \"</li>\");\n            }\n\n            search.addClass(\"select2-active\");\n\n            this.removeHighlight();\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore old responses\n                if (queryNumber != this.queryCount) {\n                  return;\n                }\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) {\n                    this.search.removeClass(\"select2-active\");\n                    return;\n                }\n\n                // handle ajax error\n                if(data.hasError !== undefined && checkFormatter(opts.formatAjaxError, \"formatAjaxError\")) {\n                    render(\"<li class='select2-ajax-error'>\" + evaluate(opts.formatAjaxError, opts.element, data.jqXHR, data.textStatus, data.errorThrown) + \"</li>\");\n                    return;\n                }\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(self, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            this.opts.createSearchChoicePosition(data.results, def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatNoMatches, opts.element, search.val()) + \"</li>\");\n                    if(this.showSearch){\n                        this.showSearch(search.val());\n                    }\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + opts.escapeMarkup(evaluate(opts.formatLoadMore, opts.element, this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n\n                this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            if (this._touchMoved) {\n              this.clearTouchMoved();\n              return;\n            }\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            } else if (options && options.noFocus) {\n                this.close();\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            var placeholderOption;\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder ||\n                ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);\n        },\n\n        // abstract\n        getPlaceholderOption: function() {\n            if (this.select) {\n                var firstOption = this.select.children('option').first();\n                if (this.opts.placeholderOption !== undefined ) {\n                    //Determine the placeholder option based on the specified placeholderOption setting\n                    return (this.opts.placeholderOption === \"first\" && firstOption) ||\n                           (typeof this.opts.placeholderOption === \"function\" && this.opts.placeholderOption(this.select));\n                } else if ($.trim(firstOption.text()) === \"\" && firstOption.val() === \"\") {\n                    //No explicit placeholder option specified, use the first if it's blank\n                    return firstOption;\n                }\n            }\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l, attr;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (typeof(style) === \"string\") {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            attr = attrs[i].replace(/\\s/g, '');\n                            matches = attr.match(/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>\",\n                \"   <span class='select2-chosen'>&#160;</span><abbr class='select2-search-choice-close'></abbr>\",\n                \"   <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>\",\n                \"</a>\",\n                \"<label for='' class='select2-offscreen'></label>\",\n                \"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />\",\n                \"<div class='select2-drop select2-display-none'>\",\n                \"   <div class='select2-search'>\",\n                \"       <label for='' class='select2-offscreen'></label>\",\n                \"       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'\",\n                \"       aria-autocomplete='list' />\",\n                \"   </div>\",\n                \"   <ul class='select2-results' role='listbox'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // single\n        opening: function () {\n            var el, range, len;\n\n            if (this.opts.minimumResultsForSearch >= 0) {\n                this.showSearch(true);\n            }\n\n            this.parent.opening.apply(this, arguments);\n\n            if (this.showSearchInput !== false) {\n                // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\n                // all other browsers handle this just fine\n\n                this.search.val(this.focusser.val());\n            }\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n                // move the cursor to the end after focussing, otherwise it will be at the beginning and\n                // new text will appear *before* focusser.val()\n                el = this.search.get(0);\n                if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                } else if (el.setSelectionRange) {\n                    len = this.search.val().length;\n                    el.setSelectionRange(len, len);\n                }\n            }\n\n            this.prefillNextSearchTerm();\n\n            this.focusser.prop(\"disabled\", true).val(\"\");\n            this.updateResults(true);\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // single\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.prop(\"disabled\", false);\n                if (this.opts.shouldFocusInput(this)) {\n                    this.focusser.focus();\n                }\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        destroy: function() {\n            $(\"label[for='\" + this.focusser.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"selection\",\n                \"focusser\"\n            );\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown,\n                idSuffix = nextUid(),\n                elementLabel;\n\n            if (this.opts.minimumResultsForSearch < 0) {\n                this.showSearch(false);\n            } else {\n                this.showSearch(true);\n            }\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            // add aria associations\n            selection.find(\".select2-chosen\").attr(\"id\", \"select2-chosen-\"+idSuffix);\n            this.focusser.attr(\"aria-labelledby\", \"select2-chosen-\"+idSuffix);\n            this.results.attr(\"id\", \"select2-results-\"+idSuffix);\n            this.search.attr(\"aria-owns\", \"select2-results-\"+idSuffix);\n\n            // rewrite labels from original element to focusser\n            this.focusser.attr(\"id\", \"s2id_autogen\"+idSuffix);\n\n            elementLabel = $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\");\n            this.opts.element.on('focus.select2', this.bind(function () { this.focus(); }));\n\n            this.focusser.prev()\n                .text(elementLabel.text())\n                .attr('for', this.focusser.attr('id'));\n\n            // Ensure the original element retains an accessible name\n            var originalTitle = this.opts.element.attr(\"title\");\n            this.opts.element.attr(\"title\", (originalTitle || elementLabel.text()));\n\n            this.focusser.attr(\"tabindex\", this.elementTabIndex);\n\n            // write label for search field using the label from the focusser element\n            this.search.attr(\"id\", this.focusser.attr('id') + '_search');\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.focusser.attr('id') + \"']\").text())\n                .attr('for', this.search.attr('id'));\n\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                // filter 229 keyCodes (input method editor is processing key input)\n                if (229 == e.keyCode) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus: true});\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body.get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        if (this.opened() && this.results && this.results.length > 1) {\n                            this.search.focus();\n                        }\n                    }), 0);\n                }\n            }));\n\n            this.focusser.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n\n                    if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\n\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.on(\"keyup-change input\", this.bind(function(e) {\n                if (this.opts.minimumResultsForSearch >= 0) {\n                    e.stopPropagation();\n                    if (this.opened()) return;\n                    this.open();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", \"abbr\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) {\n                    return;\n                }\n\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n\n                if (this.selection) {\n                    this.selection.focus();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", this.bind(function (e) {\n                // Prevent IE from generating a click event on the body\n                reinsertElement(selection);\n\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.isInterfaceEnabled()) {\n                    this.open();\n                }\n\n                killEvent(e);\n            }));\n\n            dropdown.on(\"mousedown touchstart\", this.bind(function() {\n                if (this.opts.shouldFocusInput(this)) {\n                    this.search.focus();\n                }\n            }));\n\n            selection.on(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            })).on(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                    this.opts.element.trigger($.Event(\"select2-blur\"));\n                }\n            }));\n            this.search.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.hide();\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                var evt = $.Event(\"select2-clearing\");\n                this.opts.element.trigger(evt);\n                if (evt.isDefaultPrevented()) {\n                    return;\n                }\n                var placeholderOption = this.getPlaceholderOption();\n                this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\n                this.selection.find(\".select2-chosen\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.isPlaceholderOptionSelected()) {\n                this.updateSelection(null);\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                        self.lastSearchTerm = self.search.val();\n                    }\n                });\n            }\n        },\n\n        isPlaceholderOptionSelected: function() {\n            var placeholderOption;\n            if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered\n            return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\n                || (this.opts.element.val() === \"\")\n                || (this.opts.element.val() === undefined)\n                || (this.opts.element.val() === null);\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\"option\").filter(function() { return this.selected && !this.disabled });\n                    // a single select box always has a value, no need to null check 'selected'\n                    callback(self.optionToData(selected));\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without a valid placeholder option ignore it\n            if (this.select) {\n                if (this.getPlaceholderOption() === undefined) {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\n\n                // check for a placeholder option if attached to a select\n                if (this.select && this.getPlaceholderOption() === undefined) return;\n\n                this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.container.removeClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                if (initial === true && selected >= 0) {\n                    this.highlight(selected);\n                } else {\n                    this.highlight(0);\n                }\n            }\n\n            // hide the search box if this is the first we got the results and there are enough of them for search\n\n            if (initial === true) {\n                var min = this.opts.minimumResultsForSearch;\n                if (min >= 0) {\n                    this.showSearch(countResults(data.results) >= min);\n                }\n            }\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            if (this.showSearchInput === showSearchInput) return;\n\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\n        },\n\n        // single\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data)) { return; }\n\n            var old = this.opts.element.val(),\n                oldData = this.data();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\n\n            this.lastSearchTerm = this.search.val();\n            this.close();\n\n            if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n\n            if (!equal(old, this.id(data))) {\n                this.triggerChange({ added: data, removed: oldData });\n            }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            if (data !== null) {\n                formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\n            }\n            if (formatted !== undefined) {\n                container.append(formatted);\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, container);\n            if (cssClass !== undefined) {\n                container.addClass(cssClass);\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.container.addClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        val: function () {\n            var val,\n                triggerChange = false,\n                data = null,\n                self = this,\n                oldData = this.data();\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n\n                if (this.opts.debug && console && console.warn) {\n                    console.warn(\n                        'Select2: The second option to `select2(\"val\")` is not supported in Select2 4.0.0. ' +\n                        'The `change` event will always be triggered in 4.0.0.'\n                    );\n                }\n            }\n\n            if (this.select) {\n                if (this.opts.debug && console && console.warn) {\n                    console.warn(\n                        'Select2: Setting the value on a <select> using `select2(\"val\")` is no longer supported in 4.0.0. ' +\n                        'You can use the `.val(newValue).trigger(\"change\")` method provided by jQuery instead.'\n                    );\n                }\n\n                this.select\n                    .val(val)\n                    .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n                        data = self.optionToData(elm);\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange({added: data, removed:oldData});\n                }\n            } else {\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    return;\n                }\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange({added: data, removed:oldData});\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data,\n                triggerChange = false;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (opts.debug && console && console.warn) {\n                    console.warn(\n                        'Select2: The `select2(\"data\")` method can no longer set selected values in 4.0.0, ' +\n                        'consider using the `.val()` method instead.'\n                    );\n                }\n\n                if (arguments.length > 1) {\n                    triggerChange = arguments[1];\n                }\n                if (!value) {\n                    this.clear(triggerChange);\n                } else {\n                    data = this.data();\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                    if (triggerChange) {\n                        this.triggerChange({added: value, removed:data});\n                    }\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"<ul class='select2-choices'>\",\n                \"  <li class='select2-search-field'>\",\n                \"    <label for='' class='select2-offscreen'></label>\",\n                \"    <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>\",\n                \"  </li>\",\n                \"</ul>\",\n                \"<div class='select2-drop select2-drop-multi select2-display-none'>\",\n                \"   <ul class='select2-results'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            // TODO validate placeholder is a string if specified\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\"option\").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {\n                        data.push(self.optionToData(elm));\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator, opts.transformVal);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            // reorder matches based on the order they appear in the ids array because right now\n                            // they are in the order in which they appear in data array\n                            var ordered = [];\n                            for (var i = 0; i < ids.length; i++) {\n                                var id = ids[i];\n                                for (var j = 0; j < matches.length; j++) {\n                                    var match = matches[j];\n                                    if (equal(id, opts.id(match))) {\n                                        ordered.push(match);\n                                        matches.splice(j, 1);\n                                        break;\n                                    }\n                                }\n                            }\n                            callback(ordered);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // multi\n        selectChoice: function (choice) {\n\n            var selected = this.container.find(\".select2-search-choice-focus\");\n            if (selected.length && choice && choice[0] == selected[0]) {\n\n            } else {\n                if (selected.length) {\n                    this.opts.element.trigger(\"choice-deselected\", selected);\n                }\n                selected.removeClass(\"select2-search-choice-focus\");\n                if (choice && choice.length) {\n                    this.close();\n                    choice.addClass(\"select2-search-choice-focus\");\n                    this.opts.element.trigger(\"choice-selected\", choice);\n                }\n            }\n        },\n\n        // multi\n        destroy: function() {\n            $(\"label[for='\" + this.search.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"searchContainer\",\n                \"selection\"\n            );\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            var _this = this;\n            this.selection.on(\"click\", \".select2-container:not(.select2-container-disabled) .select2-search-choice:not(.select2-locked)\", function (e) {\n                _this.search[0].focus();\n                _this.selectChoice($(this));\n            });\n\n            // rewrite labels from original element to focusser\n            this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\").text())\n                .attr('for', this.search.attr('id'));\n            this.opts.element.on('focus.select2', this.bind(function () { this.focus(); }));\n\n            this.search.on(\"input paste\", this.bind(function() {\n                if (this.search.attr('placeholder') && this.search.val().length == 0) return;\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.attr(\"tabindex\", this.elementTabIndex);\n\n            this.keydowns = 0;\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                ++this.keydowns;\n                var selected = selection.find(\".select2-search-choice-focus\");\n                var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\n                var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\n                var pos = getCursorInfo(this.search);\n\n                if (selected.length &&\n                    (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\n                    var selectedChoice = selected;\n                    if (e.which == KEY.LEFT && prev.length) {\n                        selectedChoice = prev;\n                    }\n                    else if (e.which == KEY.RIGHT) {\n                        selectedChoice = next.length ? next : null;\n                    }\n                    else if (e.which === KEY.BACKSPACE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = prev.length ? prev : next;\n                        }\n                    } else if (e.which == KEY.DELETE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = next.length ? next : null;\n                        }\n                    } else if (e.which == KEY.ENTER) {\n                        selectedChoice = null;\n                    }\n\n                    this.selectChoice(selectedChoice);\n                    killEvent(e);\n                    if (!selectedChoice || !selectedChoice.length) {\n                        this.open();\n                    }\n                    return;\n                } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\n                    || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\n\n                    this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\n                    killEvent(e);\n                    return;\n                } else {\n                    this.selectChoice(null);\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus:true});\n                        this.close();\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n\n                if (e.which === KEY.ENTER) {\n                    // prevent form from being submitted\n                    killEvent(e);\n                }\n\n            }));\n\n            this.search.on(\"keyup\", this.bind(function (e) {\n                this.keydowns = 0;\n                this.resizeSearch();\n            })\n            );\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                this.selectChoice(null);\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n                this.opts.element.trigger($.Event(\"select2-blur\"));\n            }));\n\n            this.container.on(\"click\", selector, this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.selectChoice(null);\n                this.clearPlaceholder();\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.on(\"focus\", selector, this.bind(function () {\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.hide();\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.search.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder(),\n                maxWidth = this.getMaxSearchWidth();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.clearPlaceholder(); // should be done before super so placeholder is not used to search\n            this.resizeSearch();\n\n            this.parent.opening.apply(this, arguments);\n\n            this.focusSearch();\n\n            this.prefillNextSearchTerm();\n            this.updateResults(true);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n            }\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = {}, filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (!(self.id(this) in ids)) {\n                    ids[self.id(this)] = 0;\n                    filtered.push(this);\n                }\n            });\n\n            this.selection.find(\".select2-search-choice\").remove();\n            this.addSelectedChoice(filtered);\n            self.postprocessResults();\n        },\n\n        // multi\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data) || data.text === \"\") { return; }\n\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            // keep track of the search's value before it gets cleared\n            this.lastSearchTerm = this.search.val();\n\n            this.clearSearch();\n            this.updateResults();\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    } else {\n                        // initializes search's value with nextSearchTerm and update search result\n                        if (this.prefillNextSearchTerm()) {\n                            this.updateResults();\n                        }\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var val = this.getVal(), self = this;\n            $(data).each(function () {\n                val.push(self.createChoice(this));\n            });\n            this.setVal(val);\n        },\n\n        createChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                formatted,\n                cssClass;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith($(\"<div></div>\").html(formatted));\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\n            if (cssClass != undefined) {\n                choice.addClass(cssClass);\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .on(\"mousedown\", killEvent)\n                  .on(\"click dblclick\", this.bind(function (e) {\n                  if (!this.isInterfaceEnabled()) return;\n\n                  this.unselect($(e.target));\n                  this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                  killEvent(e);\n                  this.close();\n                  this.focusSearch();\n              })).on(\"focus\", this.bind(function () {\n                  if (!this.isInterfaceEnabled()) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            return id;\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            var evt = $.Event(\"select2-removing\");\n            evt.val = this.id(data);\n            evt.choice = data;\n            this.opts.element.trigger(evt);\n\n            if (evt.isDefaultPrevented()) {\n                return false;\n            }\n\n            while((index = indexOf(this.id(data), val)) >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n\n            selected.remove();\n\n            this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n\n            return true;\n        },\n\n        // multi\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesn't have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1 && noHighlightUpdate !== false && this.opts.closeOnSelect === true){\n                self.highlight(0);\n            }\n\n            //If all results are chosen render formatNoMatches\n            if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\n                if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\n                    if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\n                        this.results.append(\"<li class='select2-no-results'>\" + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + \"</li>\");\n                    }\n                }\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n                sideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(Math.floor(searchWidth));\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator, this.opts.transformVal);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                var unique = [], valMap = {};\n                // filter out duplicates\n                $(val).each(function () {\n                    if (!(this in valMap)) {\n                        unique.push(this);\n                        valMap[this] = 0;\n                    }\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        buildChangeDetails: function (old, current) {\n            var current = current.slice(0),\n                old = old.slice(0);\n\n            // remove intersection from each array\n            for (var i = 0; i < current.length; i++) {\n                for (var j = 0; j < old.length; j++) {\n                    if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\n                        current.splice(i, 1);\n                        i--;\n                        old.splice(j, 1);\n                        break;\n                    }\n                }\n            }\n\n            return {added: current, removed: old};\n        },\n\n\n        // multi\n        val: function (val, triggerChange) {\n            var oldData, self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            oldData=this.data();\n            if (!oldData.length) oldData=[];\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange({added: this.data(), removed: oldData});\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(oldData, this.data()));\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$.map(data, self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange(self.buildChangeDetails(oldData, self.data()));\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values, triggerChange) {\n            var self=this, ids, old;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .children(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                old = this.data();\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(old, this.data()));\n                }\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            method, value, multiple,\n            allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\n            valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\n            propertyMethods = [\"val\", \"data\"],\n            methodsMap = { search: \"externalSearch\" };\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.prop(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new window.Select2[\"class\"].multi() : new window.Select2[\"class\"].single();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n\n                method=args[0];\n\n                if (method === \"container\") {\n                    value = select2.container;\n                } else if (method === \"dropdown\") {\n                    value = select2.dropdown;\n                } else {\n                    if (methodsMap[method]) method = methodsMap[method];\n\n                    value = select2[method].apply(select2, args.slice(1));\n                }\n                if (indexOf(args[0], valueMethods) >= 0\n                    || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {\n                    return false; // abort the iteration, ready to return first matched value\n                }\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        debug: false,\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(this.text(result), query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        transformVal: function(val) {\n            return $.trim(val);\n        },\n        formatSelection: function (data, container, escapeMarkup) {\n            return data ? escapeMarkup(this.text(data)) : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return data.css;},\n        formatSelectionCssClass: function(data, container) {return undefined;},\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e == undefined ? null : e.id; },\n        text: function (e) {\n          if (e && this.data && this.data.text) {\n            if ($.isFunction(this.data.text)) {\n              return this.data.text(e);\n            } else {\n              return e[this.data.text];\n            }\n          } else {\n            return e.text;\n          }\n        },\n        matcher: function(term, text) {\n            return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: defaultEscapeMarkup,\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; },\n        nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },\n        searchInputPlaceholder: '',\n        createSearchChoicePosition: 'top',\n        shouldFocusInput: function (instance) {\n            // Attempt to detect touch devices\n            var supportsTouchEvents = (('ontouchstart' in window) ||\n                                       (navigator.msMaxTouchPoints > 0));\n\n            // Only devices which support touch events should be special cased\n            if (!supportsTouchEvents) {\n                return true;\n            }\n\n            // Never focus the input if search is disabled\n            if (instance.opts.minimumResultsForSearch < 0) {\n                return false;\n            }\n\n            return true;\n        }\n    };\n\n    $.fn.select2.locales = [];\n\n    $.fn.select2.locales['en'] = {\n         formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n         formatNoMatches: function () { return \"No matches found\"; },\n         formatAjaxError: function (jqXHR, textStatus, errorThrown) { return \"Loading failed\"; },\n         formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n         formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n         formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n         formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n         formatSearching: function () { return \"Searching…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n\n    $.fn.select2.ajaxDefaults = {\n        transport: $.ajax,\n        params: {\n            type: \"GET\",\n            cache: false,\n            dataType: \"json\"\n        }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch,\n            escapeMarkup: defaultEscapeMarkup,\n            stripDiacritics: stripDiacritics\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ar.js",
    "content": "/**\n * Select2 Arabic translation.\n *\n * Author: Adel KEDJOUR <adel@kedjour.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ar'] = {\n        formatNoMatches: function () { return \"لم يتم العثور على مطابقات\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return \"الرجاء إدخال حرف واحد على الأكثر\"; } return n == 2 ? \"الرجاء إدخال حرفين على الأكثر\" : \"الرجاء إدخال \" + n + \" على الأكثر\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return \"الرجاء إدخال حرف واحد على الأقل\"; } return n == 2 ? \"الرجاء إدخال حرفين على الأقل\" : \"الرجاء إدخال \" + n + \" على الأقل \"; },\n        formatSelectionTooBig: function (limit) { if (limit == 1){ return \"يمكنك أن تختار إختيار واحد فقط\"; } return limit == 2 ? \"يمكنك أن تختار إختيارين فقط\" : \"يمكنك أن تختار \" + limit + \" إختيارات فقط\"; },\n        formatLoadMore: function (pageNumber) { return \"تحميل المزيد من النتائج…\"; },\n        formatSearching: function () { return \"البحث…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ar']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_az.js",
    "content": "/**\n * Select2 Azerbaijani translation.\n *\n * Author: Farhad Safarov <farhad.safarov@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n     $.fn.select2.locales['az'] = {\n        formatMatches: function (matches) { return matches + \" nəticə mövcuddur, hərəkət etdirmək üçün yuxarı və aşağı düymələrindən istifadə edin.\"; },\n        formatNoMatches: function () { return \"Nəticə tapılmadı\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return n + \" simvol daxil edin\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return n + \" simvol silin\"; },\n        formatSelectionTooBig: function (limit) { return \"Sadəcə \" + limit + \" element seçə bilərsiniz\"; },\n        formatLoadMore: function (pageNumber) { return \"Daha çox nəticə yüklənir…\"; },\n        formatSearching: function () { return \"Axtarılır…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['az']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_bg.js",
    "content": "/**\n * Select2 Bulgarian translation.\n * \n * @author  Lubomir Vikev <lubomirvikev@gmail.com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['bg'] = {\n        formatNoMatches: function () { return \"Няма намерени съвпадения\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Моля въведете още \" + n + \" символ\" + (n > 1 ? \"а\" : \"\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Моля въведете с \" + n + \" по-малко символ\" + (n > 1 ? \"а\" : \"\"); },\n        formatSelectionTooBig: function (limit) { return \"Можете да направите до \" + limit + (limit > 1 ? \" избора\" : \" избор\"); },\n        formatLoadMore: function (pageNumber) { return \"Зареждат се още…\"; },\n        formatSearching: function () { return \"Търсене…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['bg']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ca.js",
    "content": "/**\n * Select2 Catalan translation.\n * \n * Author: David Planella <david.planella@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ca'] = {\n        formatNoMatches: function () { return \"No s'ha trobat cap coincidència\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduïu \" + n + \" caràcter\" + (n == 1 ? \"\" : \"s\") + \" més\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Introduïu \" + n + \" caràcter\" + (n == 1? \"\" : \"s\") + \"menys\"; },\n        formatSelectionTooBig: function (limit) { return \"Només podeu seleccionar \" + limit + \" element\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"S'estan carregant més resultats…\"; },\n        formatSearching: function () { return \"S'està cercant…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ca']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_cs.js",
    "content": "/**\n * Select2 Czech translation.\n * \n * Author: Michal Marek <ahoj@michal-marek.cz>\n * Author - sklonovani: David Vallner <david@vallner.net>\n */\n(function ($) {\n    \"use strict\";\n    // use text for the numbers 2 through 4\n    var smallNumbers = {\n        2: function(masc) { return (masc ? \"dva\" : \"dvě\"); },\n        3: function() { return \"tři\"; },\n        4: function() { return \"čtyři\"; }\n    }\n    $.fn.select2.locales['cs'] = {\n        formatNoMatches: function () { return \"Nenalezeny žádné položky\"; },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n == 1) {\n                return \"Prosím zadejte ještě jeden znak\";\n            } else if (n <= 4) {\n                return \"Prosím zadejte ještě další \"+smallNumbers[n](true)+\" znaky\";\n            } else {\n                return \"Prosím zadejte ještě dalších \"+n+\" znaků\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n == 1) {\n                return \"Prosím zadejte o jeden znak méně\";\n            } else if (n <= 4) {\n                return \"Prosím zadejte o \"+smallNumbers[n](true)+\" znaky méně\";\n            } else {\n                return \"Prosím zadejte o \"+n+\" znaků méně\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit == 1) {\n                return \"Můžete zvolit jen jednu položku\";\n            } else if (limit <= 4) {\n                return \"Můžete zvolit maximálně \"+smallNumbers[limit](false)+\" položky\";\n            } else {\n                return \"Můžete zvolit maximálně \"+limit+\" položek\";\n            }\n        },\n        formatLoadMore: function (pageNumber) { return \"Načítají se další výsledky…\"; },\n        formatSearching: function () { return \"Vyhledávání…\"; }\n    };\n\n\t$.extend($.fn.select2.defaults, $.fn.select2.locales['cs']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_da.js",
    "content": "/**\n * Select2 Danish translation.\n *\n * Author: Anders Jenbo <anders@jenbo.dk>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['da'] = {\n        formatNoMatches: function () { return \"Ingen resultater fundet\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Angiv venligst \" + n + \" tegn mere\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Angiv venligst \" + n + \" tegn mindre\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan kun vælge \" + limit + \" emne\" + (limit === 1 ? \"\" : \"r\"); },\n        formatLoadMore: function (pageNumber) { return \"Indlæser flere resultater…\"; },\n        formatSearching: function () { return \"Søger…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['da']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_de.js",
    "content": "/**\n * Select2 German translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['de'] = {\n        formatNoMatches: function () { return \"Keine Übereinstimmungen gefunden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Bitte \" + n + \" Zeichen mehr eingeben\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Bitte \" + n + \" Zeichen weniger eingeben\"; },\n        formatSelectionTooBig: function (limit) { return \"Sie können nur \" + limit + \" Eintr\" + (limit === 1 ? \"ag\" : \"äge\") + \" auswählen\"; },\n        formatLoadMore: function (pageNumber) { return \"Lade mehr Ergebnisse…\"; },\n        formatSearching: function () { return \"Suche…\"; },\n        formatMatches: function (matches) { return matches + \" Ergebnis \" + (matches > 1 ? \"se\" : \"\") + \" verfügbar, zum Navigieren die Hoch-/Runter-Pfeiltasten verwenden.\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['de']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_el.js",
    "content": "/**\n * Select2 Greek translation.\n * \n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['el'] = {\n        formatNoMatches: function () { return \"Δεν βρέθηκαν αποτελέσματα\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Παρακαλούμε εισάγετε \" + n + \" περισσότερο\" + (n > 1 ? \"υς\" : \"\") + \" χαρακτήρ\" + (n > 1 ? \"ες\" : \"α\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Παρακαλούμε διαγράψτε \" + n + \" χαρακτήρ\" + (n > 1 ? \"ες\" : \"α\"); },\n        formatSelectionTooBig: function (limit) { return \"Μπορείτε να επιλέξετε μόνο \" + limit + \" αντικείμεν\" + (limit > 1 ? \"α\" : \"ο\"); },\n        formatLoadMore: function (pageNumber) { return \"Φόρτωση περισσότερων…\"; },\n        formatSearching: function () { return \"Αναζήτηση…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['el']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_en.js.template",
    "content": "/**\n * Select2 <Language> translation.\n *\n * Author: Your Name <your@email>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['en'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n        formatNoMatches: function () { return \"No matches found\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n        formatSearching: function () { return \"Searching…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_es.js",
    "content": "/**\n * Select2 Spanish translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['es'] = {\n    \tformatMatches: function (matches) { if (matches === 1) { return \"Un resultado disponible, presione enter para seleccionarlo.\"; } return matches + \" resultados disponibles, use las teclas de dirección para navegar.\"; },\n        formatNoMatches: function () { return \"No se encontraron resultados\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Por favor, introduzca \" + n + \" car\" + (n == 1? \"ácter\" : \"acteres\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Por favor, elimine \" + n + \" car\" + (n == 1? \"ácter\" : \"acteres\"); },\n        formatSelectionTooBig: function (limit) { return \"Sólo puede seleccionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Cargando más resultados…\"; },\n        formatSearching: function () { return \"Buscando…\"; },\n        formatAjaxError: function() { return \"La carga falló\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['es']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_et.js",
    "content": "/**\n * Select2 Estonian translation.\n *\n * Author: Kuldar Kalvik <kuldar@kalvik.ee>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['et'] = {\n        formatNoMatches: function () { return \"Tulemused puuduvad\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Sisesta \" + n + \" täht\" + (n == 1 ? \"\" : \"e\") + \" rohkem\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Sisesta \" + n + \" täht\" + (n == 1? \"\" : \"e\") + \" vähem\"; },\n        formatSelectionTooBig: function (limit) { return \"Saad vaid \" + limit + \" tulemus\" + (limit == 1 ? \"e\" : \"t\") + \" valida\"; },\n        formatLoadMore: function (pageNumber) { return \"Laen tulemusi..\"; },\n        formatSearching: function () { return \"Otsin..\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['et']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_eu.js",
    "content": "/**\n * Select2 Basque translation.\n *\n * Author: Julen Ruiz Aizpuru <julenx at gmail dot com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['eu'] = {\n        formatNoMatches: function () {\n          return \"Ez da bat datorrenik aurkitu\";\n        },\n        formatInputTooShort: function (input, min) {\n          var n = min - input.length;\n          if (n === 1) {\n            return \"Idatzi karaktere bat gehiago\";\n          } else {\n            return \"Idatzi \" + n + \" karaktere gehiago\";\n          }\n        },\n        formatInputTooLong: function (input, max) {\n          var n = input.length - max;\n          if (n === 1) {\n            return \"Idatzi karaktere bat gutxiago\";\n          } else {\n            return \"Idatzi \" + n + \" karaktere gutxiago\";\n          }\n        },\n        formatSelectionTooBig: function (limit) {\n          if (limit === 1 ) {\n            return \"Elementu bakarra hauta dezakezu\";\n          } else {\n            return limit + \" elementu hauta ditzakezu soilik\";\n          }\n        },\n        formatLoadMore: function (pageNumber) {\n          return \"Emaitza gehiago kargatzen…\";\n        },\n        formatSearching: function () {\n          return \"Bilatzen…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['eu']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_fa.js",
    "content": "/**\n * Select2 Persian translation.\n * \n * Author: Ali Choopan <choopan@arsh.co>\n * Author: Ebrahim Byagowi <ebrahim@gnu.org>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['fa'] = {\n        formatMatches: function (matches) { return matches + \" نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید.\"; },\n        formatNoMatches: function () { return \"نتیجه‌ای یافت نشد.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"لطفاً \" + n + \" نویسه بیشتر وارد نمایید\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"لطفاً \" + n + \" نویسه را حذف کنید.\"; },\n        formatSelectionTooBig: function (limit) { return \"شما فقط می‌توانید \" + limit + \" مورد را انتخاب کنید\"; },\n        formatLoadMore: function (pageNumber) { return \"در حال بارگیری موارد بیشتر…\"; },\n        formatSearching: function () { return \"در حال جستجو…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fa']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_fi.js",
    "content": "/**\n * Select2 Finnish translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['fi'] = {\n        formatNoMatches: function () {\n            return \"Ei tuloksia\";\n        },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            return \"Ole hyvä ja anna \" + n + \" merkkiä lisää\";\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            return \"Ole hyvä ja anna \" + n + \" merkkiä vähemmän\";\n        },\n        formatSelectionTooBig: function (limit) {\n            return \"Voit valita ainoastaan \" + limit + \" kpl\";\n        },\n        formatLoadMore: function (pageNumber) {\n            return \"Ladataan lisää tuloksia…\";\n        },\n        formatSearching: function () {\n            return \"Etsitään…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fi']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_fr.js",
    "content": "/**\n * Select2 French translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['fr'] = {\n        formatMatches: function (matches) { return matches + \" résultats sont disponibles, utilisez les flèches haut et bas pour naviguer.\"; },\n        formatNoMatches: function () { return \"Aucun résultat trouvé\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Saisissez \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" supplémentaire\" + (n == 1? \"\" : \"s\") ; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Supprimez \" + n + \" caractère\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"Vous pouvez seulement sélectionner \" + limit + \" élément\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Chargement de résultats supplémentaires…\"; },\n        formatSearching: function () { return \"Recherche en cours…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['fr']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_gl.js",
    "content": "/**\n * Select2 Galician translation\n * \n * Author: Leandro Regueiro <leandro.regueiro@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['gl'] = {\n        formatNoMatches: function () {\n            return \"Non se atoparon resultados\";\n        },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n === 1) {\n                return \"Engada un carácter\";\n            } else {\n                return \"Engada \" + n + \" caracteres\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n === 1) {\n                return \"Elimine un carácter\";\n            } else {\n                return \"Elimine \" + n + \" caracteres\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit === 1 ) {\n                return \"Só pode seleccionar un elemento\";\n            } else {\n                return \"Só pode seleccionar \" + limit + \" elementos\";\n            }\n        },\n        formatLoadMore: function (pageNumber) {\n            return \"Cargando máis resultados…\";\n        },\n        formatSearching: function () {\n            return \"Buscando…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['gl']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_he.js",
    "content": "/**\n* Select2 Hebrew translation.\n*\n* Author: Yakir Sitbon <http://www.yakirs.net/>\n*/\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['he'] = {\n        formatNoMatches: function () { return \"לא נמצאו התאמות\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"נא להזין עוד \" + n + \" תווים נוספים\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"נא להזין פחות \" + n + \" תווים\"; },\n        formatSelectionTooBig: function (limit) { return \"ניתן לבחור \" + limit + \" פריטים\"; },\n        formatLoadMore: function (pageNumber) { return \"טוען תוצאות נוספות…\"; },\n        formatSearching: function () { return \"מחפש…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['he']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_hr.js",
    "content": "/**\n * Select2 Croatian translation.\n *\n * @author  Edi Modrić <edi.modric@gmail.com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['hr'] = {\n        formatNoMatches: function () { return \"Nema rezultata\"; },\n        formatInputTooShort: function (input, min) { return \"Unesite još\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Unesite\" + character(input.length - max) + \" manje\"; },\n        formatSelectionTooBig: function (limit) { return \"Maksimalan broj odabranih stavki je \" + limit; },\n        formatLoadMore: function (pageNumber) { return \"Učitavanje rezultata…\"; },\n        formatSearching: function () { return \"Pretraga…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['hr']);\n\n    function character (n) {\n        return \" \" + n + \" znak\" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? \"a\" : \"\" : \"ova\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_hu.js",
    "content": "/**\n * Select2 Hungarian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['hu'] = {\n        formatNoMatches: function () { return \"Nincs találat.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Túl rövid. Még \" + n + \" karakter hiányzik.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Túl hosszú. \" + n + \" karakterrel több, mint kellene.\"; },\n        formatSelectionTooBig: function (limit) { return \"Csak \" + limit + \" elemet lehet kiválasztani.\"; },\n        formatLoadMore: function (pageNumber) { return \"Töltés…\"; },\n        formatSearching: function () { return \"Keresés…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['hu']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_id.js",
    "content": "/**\n * Select2 Indonesian translation.\n * \n * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com>\n * Author: Salahuddin Hairai <mr.od3n@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['id'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Satu keputusan ditemui, tekan enter untuk memilih.\"; } return matches + \" keputusan ditemui, gunakan kekunci anak panah ke atas dan ke bawah untuk menavigasi.\"; },\n        formatNoMatches: function () { return \"Tidak ada data yang sesuai\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Masukkan \" + n + \" huruf lagi\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Hapuskan \" + n + \" huruf\" ; },\n        formatSelectionTooBig: function (limit) { return \"Anda hanya dapat memilih \" + limit + \" pilihan\"; },\n        formatLoadMore: function (pageNumber) { return \"Mengambil data…\"; },\n        formatSearching: function () { return \"Mencari…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['id']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_is.js",
    "content": "/**\n * Select2 Icelandic translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['is'] = {\n        formatNoMatches: function () { return \"Ekkert fannst\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vinsamlegast skrifið \" + n + \" staf\" + (n > 1 ? \"i\" : \"\") + \" í viðbót\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vinsamlegast styttið texta um \" + n + \" staf\" + (n > 1 ? \"i\" : \"\"); },\n        formatSelectionTooBig: function (limit) { return \"Þú getur aðeins valið \" + limit + \" atriði\"; },\n        formatLoadMore: function (pageNumber) { return \"Sæki fleiri niðurstöður…\"; },\n        formatSearching: function () { return \"Leita…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['is']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_it.js",
    "content": "/**\n * Select2 Italian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['it'] = {\n        formatNoMatches: function () { return \"Nessuna corrispondenza trovata\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Inserisci ancora \" + n + \" caratter\" + (n == 1? \"e\" : \"i\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Inserisci \" + n + \" caratter\" + (n == 1? \"e\" : \"i\") + \" in meno\"; },\n        formatSelectionTooBig: function (limit) { return \"Puoi selezionare solo \" + limit + \" element\" + (limit == 1 ? \"o\" : \"i\"); },\n        formatLoadMore: function (pageNumber) { return \"Caricamento in corso…\"; },\n        formatSearching: function () { return \"Ricerca…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['it']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ja.js",
    "content": "/**\n * Select2 Japanese translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ja'] = {\n        formatNoMatches: function () { return \"該当なし\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"後\" + n + \"文字入れてください\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"検索文字列が\" + n + \"文字長すぎます\"; },\n        formatSelectionTooBig: function (limit) { return \"最多で\" + limit + \"項目までしか選択できません\"; },\n        formatLoadMore: function (pageNumber) { return \"読込中･･･\"; },\n        formatSearching: function () { return \"検索中･･･\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ja']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ka.js",
    "content": "/**\n * Select2 Georgian (Kartuli) translation.\n * \n * Author: Dimitri Kurashvili dimakura@gmail.com\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ka'] = {\n        formatNoMatches: function () { return \"ვერ მოიძებნა\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"გთხოვთ შეიყვანოთ კიდევ \" + n + \" სიმბოლო\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"გთხოვთ წაშალოთ \" + n + \" სიმბოლო\"; },\n        formatSelectionTooBig: function (limit) { return \"თქვენ შეგიძლიათ მხოლოდ \" + limit + \" ჩანაწერის მონიშვნა\"; },\n        formatLoadMore: function (pageNumber) { return \"შედეგის ჩატვირთვა…\"; },\n        formatSearching: function () { return \"ძებნა…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ka']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ko.js",
    "content": "/**\n * Select2 Korean translation.\n * \n * @author  Swen Mun <longfinfunnel@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ko'] = {\n        formatNoMatches: function () { return \"결과 없음\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"너무 짧습니다. \"+n+\"글자 더 입력해주세요.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"너무 깁니다. \"+n+\"글자 지워주세요.\"; },\n        formatSelectionTooBig: function (limit) { return \"최대 \"+limit+\"개까지만 선택하실 수 있습니다.\"; },\n        formatLoadMore: function (pageNumber) { return \"불러오는 중…\"; },\n        formatSearching: function () { return \"검색 중…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ko']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_lt.js",
    "content": "/**\n * Select2 Lithuanian translation.\n * \n * @author  CRONUS Karmalakas <cronus dot karmalakas at gmail dot com>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['lt'] = {\n        formatNoMatches: function () { return \"Atitikmenų nerasta\"; },\n        formatInputTooShort: function (input, min) { return \"Įrašykite dar\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Pašalinkite\" + character(input.length - max); },\n        formatSelectionTooBig: function (limit) {\n        \treturn \"Jūs galite pasirinkti tik \" + limit + \" element\" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? \"ų\" : limit%10 > 1 ? \"us\" : \"ą\");\n        },\n        formatLoadMore: function (pageNumber) { return \"Kraunama daugiau rezultatų…\"; },\n        formatSearching: function () { return \"Ieškoma…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['lt']);\n\n    function character (n) {\n        return \" \" + n + \" simbol\" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? \"ių\" : n%10 > 1 ? \"ius\" : \"į\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_lv.js",
    "content": "/**\n * Select2 Latvian translation.\n *\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['lv'] = {\n        formatNoMatches: function () { return \"Sakritību nav\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Lūdzu ievadiet vēl \" + n + \" simbol\" + (n == 11 ? \"us\" : n%10 == 1 ? \"u\" : \"us\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Lūdzu ievadiet par \" + n + \" simbol\" + (n == 11 ? \"iem\" : n%10 == 1 ? \"u\" : \"iem\") + \" mazāk\"; },\n        formatSelectionTooBig: function (limit) { return \"Jūs varat izvēlēties ne vairāk kā \" + limit + \" element\" + (limit == 11 ? \"us\" : limit%10 == 1 ? \"u\" : \"us\"); },\n        formatLoadMore: function (pageNumber) { return \"Datu ielāde…\"; },\n        formatSearching: function () { return \"Meklēšana…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['lv']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_mk.js",
    "content": "/**\n * Select2 Macedonian translation.\n * \n * Author: Marko Aleksic <psybaron@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['mk'] = {\n        formatNoMatches: function () { return \"Нема пронајдено совпаѓања\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Ве молиме внесете уште \" + n + \" карактер\" + (n == 1 ? \"\" : \"и\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Ве молиме внесете \" + n + \" помалку карактер\" + (n == 1? \"\" : \"и\"); },\n        formatSelectionTooBig: function (limit) { return \"Можете да изберете само \" + limit + \" ставк\" + (limit == 1 ? \"а\" : \"и\"); },\n        formatLoadMore: function (pageNumber) { return \"Вчитување резултати…\"; },\n        formatSearching: function () { return \"Пребарување…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['mk']);\n})(jQuery);"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ms.js",
    "content": "/**\n * Select2 Malay translation.\n * \n * Author: Kepoweran <kepoweran@gmail.com>\n * Author: Salahuddin Hairai <mr.od3n@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ms'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Satu keputusan ditemui, tekan enter untuk memilih.\"; } return matches + \" keputusan ditemui, gunakan kekunci anak panah ke atas dan ke bawah untuk menavigasi.\"; },\n        formatNoMatches: function () { return \"Tiada padanan yang ditemui\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Sila masukkan \" + n + \" aksara lagi\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Sila hapuskan \" + n + \" aksara\"; },\n        formatSelectionTooBig: function (limit) { return \"Anda hanya boleh memilih \" + limit + \" pilihan\"; },\n        formatLoadMore: function (pageNumber) { return \"Sedang memuatkan keputusan…\"; },\n        formatSearching: function () { return \"Mencari…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ms']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_nb.js",
    "content": "/**\n * Select2 Norwegian Bokmål translation.\n *\n * Author: Torgeir Veimo <torgeir.veimo@gmail.com>\n * Author: Bjørn Johansen <post@bjornjohansen.no>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['nb'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Ett resultat er tilgjengelig, trykk enter for å velge det.\"; } return matches + \" resultater er tilgjengelig. Bruk piltastene opp og ned for å navigere.\"; },\n        formatNoMatches: function () { return \"Ingen treff\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vennligst skriv inn \" + n + (n>1 ? \" flere tegn\" : \" tegn til\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vennligst fjern \" + n + \" tegn\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan velge maks \" + limit + \" elementer\"; },\n        formatLoadMore: function (pageNumber) { return \"Laster flere resultater …\"; },\n        formatSearching: function () { return \"Søker …\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['no']);\n})(jQuery);\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_nl.js",
    "content": "/**\n * Select2 Dutch translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['nl'] = {\n        formatNoMatches: function () { return \"Geen resultaten gevonden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vul nog \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" in\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Haal \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" weg\"; },\n        formatSelectionTooBig: function (limit) { return \"Maximaal \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\") + \" toegestaan\"; },\n        formatLoadMore: function (pageNumber) { return \"Meer resultaten laden…\"; },\n        formatSearching: function () { return \"Zoeken…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['nl']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_pl.js",
    "content": "/**\n * Select2 Polish translation.\n *\n * @author  Jan Kondratowicz <jan@kondratowicz.pl>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n * @author  Michał Połtyn <mike@poltyn.com>\n * @author  Damian Zajkowski <damian.zajkowski@gmail.com>\n */\n(function($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pl'] = {\n        formatNoMatches: function() {\n            return \"Brak wyników\";\n        },\n        formatInputTooShort: function(input, min) {\n            return \"Wpisz co najmniej\" + character(min - input.length, \"znak\", \"i\");\n        },\n        formatInputTooLong: function(input, max) {\n            return \"Wpisana fraza jest za długa o\" + character(input.length - max, \"znak\", \"i\");\n        },\n        formatSelectionTooBig: function(limit) {\n            return \"Możesz zaznaczyć najwyżej\" + character(limit, \"element\", \"y\");\n        },\n        formatLoadMore: function(pageNumber) {\n            return \"Ładowanie wyników…\";\n        },\n        formatSearching: function() {\n            return \"Szukanie…\";\n        }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pl']);\n\n    function character(n, word, pluralSuffix) {\n        //Liczba pojedyncza - brak suffiksu\n        //jeden znak\n        //jeden element\n        var suffix = '';\n        if (n > 1 && n < 5) {\n            //Liczaba mnoga ilość od 2 do 4 - własny suffiks\n            //Dwa znaki, trzy znaki, cztery znaki.\n            //Dwa elementy, trzy elementy, cztery elementy\n            suffix = pluralSuffix;\n        } else if (n == 0 || n >= 5) {\n            //Ilość 0 suffiks ów\n            //Liczaba mnoga w ilości 5 i więcej - suffiks ów (nie poprawny dla wszystkich wyrazów, np. 100 wiadomości)\n            //Zero znaków, Pięć znaków, sześć znaków, siedem znaków, osiem znaków.\n            //Zero elementów Pięć elementów, sześć elementów, siedem elementów, osiem elementów.\n            suffix = 'ów';\n        }\n        return \" \" + n + \" \" + word + suffix;\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_pt-BR.js",
    "content": "/**\n * Select2 Brazilian Portuguese translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pt-BR'] = {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatAjaxError: function () { return \"Erro na busca\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Digite \" + (min == 1 ? \"\" : \"mais\") + \" \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Carregando mais resultados…\"; },\n        formatSearching: function () { return \"Buscando…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-BR']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_pt-PT.js",
    "content": "/**\n * Select2 Portuguese (Portugal) translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['pt-PT'] = {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduza \" + n + \" car\" + (n == 1 ? \"ácter\" : \"acteres\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" car\" + (n == 1 ? \"ácter\" : \"acteres\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"A carregar mais resultados…\"; },\n        formatSearching: function () { return \"A pesquisar…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-PT']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ro.js",
    "content": "/**\n * Select2 Romanian translation.\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ro'] = {\n        formatNoMatches: function () { return \"Nu a fost găsit nimic\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vă rugăm să introduceți incă \" + n + \" caracter\" + (n == 1 ? \"\" : \"e\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vă rugăm să introduceți mai puțin de \" + n + \" caracter\" + (n == 1? \"\" : \"e\"); },\n        formatSelectionTooBig: function (limit) { return \"Aveți voie să selectați cel mult \" + limit + \" element\" + (limit == 1 ? \"\" : \"e\"); },\n        formatLoadMore: function (pageNumber) { return \"Se încarcă…\"; },\n        formatSearching: function () { return \"Căutare…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ro']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_rs.js",
    "content": "/**\n * Select2 Serbian translation.\n *\n * @author  Limon Monte <limon.monte@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['rs'] = {\n        formatNoMatches: function () { return \"Ništa nije pronađeno\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Ukucajte bar još \" + n + \" simbol\" + (n % 10 == 1 && n % 100 != 11 ? \"\" : \"a\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Obrišite \" + n + \" simbol\" + (n % 10 == 1 && n % 100 != 11\t ? \"\" : \"a\"); },\n        formatSelectionTooBig: function (limit) { return \"Možete izabrati samo \" + limit + \" stavk\" + (limit % 10 == 1 && limit % 100 != 11\t ? \"u\" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? \"e\" : \"i\")); },\n        formatLoadMore: function (pageNumber) { return \"Preuzimanje još rezultata…\"; },\n        formatSearching: function () { return \"Pretraga…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['rs']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ru.js",
    "content": "/**\n * Select2 Russian translation.\n *\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['ru'] = {\n        formatNoMatches: function () { return \"Совпадений не найдено\"; },\n        formatInputTooShort: function (input, min) { return \"Пожалуйста, введите еще хотя бы\" + character(min - input.length); },\n        formatInputTooLong: function (input, max) { return \"Пожалуйста, введите на\" + character(input.length - max) + \" меньше\"; },\n        formatSelectionTooBig: function (limit) { return \"Вы можете выбрать не более \" + limit + \" элемент\" + (limit%10 == 1 && limit%100 != 11 ? \"а\" : \"ов\"); },\n        formatLoadMore: function (pageNumber) { return \"Загрузка данных…\"; },\n        formatSearching: function () { return \"Поиск…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ru']);\n\n    function character (n) {\n        return \" \" + n + \" символ\" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? \"a\" : \"\" : \"ов\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_sk.js",
    "content": "/**\n * Select2 Slovak translation.\n *\n * Author: David Vallner <david@vallner.net>\n */\n(function ($) {\n    \"use strict\";\n    // use text for the numbers 2 through 4\n    var smallNumbers = {\n        2: function(masc) { return (masc ? \"dva\" : \"dve\"); },\n        3: function() { return \"tri\"; },\n        4: function() { return \"štyri\"; }\n    };\n    $.fn.select2.locales['sk'] = {\n        formatNoMatches: function () { return \"Nenašli sa žiadne položky\"; },\n        formatInputTooShort: function (input, min) {\n            var n = min - input.length;\n            if (n == 1) {\n                return \"Prosím, zadajte ešte jeden znak\";\n            } else if (n <= 4) {\n                return \"Prosím, zadajte ešte ďalšie \"+smallNumbers[n](true)+\" znaky\";\n            } else {\n                return \"Prosím, zadajte ešte ďalších \"+n+\" znakov\";\n            }\n        },\n        formatInputTooLong: function (input, max) {\n            var n = input.length - max;\n            if (n == 1) {\n                return \"Prosím, zadajte o jeden znak menej\";\n            } else if (n >= 2 && n <= 4) {\n                return \"Prosím, zadajte o \"+smallNumbers[n](true)+\" znaky menej\";\n            } else {\n                return \"Prosím, zadajte o \"+n+\" znakov menej\";\n            }\n        },\n        formatSelectionTooBig: function (limit) {\n            if (limit == 1) {\n                return \"Môžete zvoliť len jednu položku\";\n            } else if (limit >= 2 && limit <= 4) {\n                return \"Môžete zvoliť najviac \"+smallNumbers[limit](false)+\" položky\";\n            } else {\n                return \"Môžete zvoliť najviac \"+limit+\" položiek\";\n            }\n        },\n        formatLoadMore: function (pageNumber) { return \"Načítavajú sa ďalšie výsledky…\"; },\n        formatSearching: function () { return \"Vyhľadávanie…\"; }\n    };\n\n\t$.extend($.fn.select2.defaults, $.fn.select2.locales['sk']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_sv.js",
    "content": "/**\n * Select2 Swedish translation.\n *\n * Author: Jens Rantil <jens.rantil@telavox.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['sv'] = {\n        formatNoMatches: function () { return \"Inga träffar\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Var god skriv in \" + n + (n>1 ? \" till tecken\" : \" tecken till\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Var god sudda ut \" + n + \" tecken\"; },\n        formatSelectionTooBig: function (limit) { return \"Du kan max välja \" + limit + \" element\"; },\n        formatLoadMore: function (pageNumber) { return \"Laddar fler resultat…\"; },\n        formatSearching: function () { return \"Söker…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['sv']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_th.js",
    "content": "/**\n * Select2 Thai translation.\n *\n * Author: Atsawin Chaowanakritsanakul <joke@nakhon.net>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['th'] = {\n        formatNoMatches: function () { return \"ไม่พบข้อมูล\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"โปรดพิมพ์เพิ่มอีก \" + n + \" ตัวอักษร\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"โปรดลบออก \" + n + \" ตัวอักษร\"; },\n        formatSelectionTooBig: function (limit) { return \"คุณสามารถเลือกได้ไม่เกิน \" + limit + \" รายการ\"; },\n        formatLoadMore: function (pageNumber) { return \"กำลังค้นข้อมูลเพิ่ม…\"; },\n        formatSearching: function () { return \"กำลังค้นข้อมูล…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['th']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_tr.js",
    "content": "/**\n * Select2 Turkish translation.\n * \n * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['tr'] = {\n        formatMatches: function (matches) { if (matches === 1) { return \"Sadece bir sonuç bulundu, seçmek için enter tuşuna basabilirsiniz.\"; } return matches + \" sonuç bulundu, yukarı ve aşağı tuşları ile seçebilirsiniz.\"; },\n        formatNoMatches: function () { return \"Sonuç bulunamadı\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"En az \" + n + \" karakter daha girmelisiniz\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return n + \" karakter azaltmalısınız\"; },\n        formatSelectionTooBig: function (limit) { return \"Sadece \" + limit + \" seçim yapabilirsiniz\"; },\n        formatLoadMore: function (pageNumber) { return \"Daha fazla…\"; },\n        formatSearching: function () { return \"Aranıyor…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['tr']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_ug-CN.js",
    "content": "/**\n * Select2 Uyghur translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['ug-CN'] = {\n        formatNoMatches: function () { return \"ماس كېلىدىغان ئۇچۇر تېپىلمىدى\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"يەنە \" + n + \" ھەرپ كىرگۈزۈڭ\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"\" + n + \"ھەرپ ئۆچۈرۈڭ\";},\n        formatSelectionTooBig: function (limit) { return \"ئەڭ كۆپ بولغاندا\" + limit + \" تال ئۇچۇر تاللىيالايسىز\"; },\n        formatLoadMore: function (pageNumber) { return \"ئۇچۇرلار ئوقۇلىۋاتىدۇ…\"; },\n        formatSearching: function () { return \"ئىزدەۋاتىدۇ…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['ug-CN']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_uk.js",
    "content": "/**\n * Select2 Ukrainian translation.\n * \n * @author  bigmihail <bigmihail@bigmir.net>\n * @author  Uriy Efremochkin <efremochkin@uriy.me>\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['uk'] = {\n        formatMatches: function (matches) { return character(matches, \"результат\") + \" знайдено, використовуйте клавіші зі стрілками вверх та вниз для навігації.\"; },\n        formatNoMatches: function () { return \"Нічого не знайдено\"; },\n        formatInputTooShort: function (input, min) { return \"Введіть буль ласка ще \" + character(min - input.length, \"символ\"); },\n        formatInputTooLong: function (input, max) { return \"Введіть буль ласка на \" + character(input.length - max, \"символ\") + \" менше\"; },\n        formatSelectionTooBig: function (limit) { return \"Ви можете вибрати лише \" + character(limit, \"елемент\"); },\n        formatLoadMore: function (pageNumber) { return \"Завантаження даних…\"; },\n        formatSearching: function () { return \"Пошук…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['uk']);\n\n    function character (n, word) {\n        return n + \" \" + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? \"и\" : \"\" : \"ів\");\n    }\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_vi.js",
    "content": "/**\n * Select2 Vietnamese translation.\n * \n * Author: Long Nguyen <olragon@gmail.com>, Nguyen Chien Cong\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['vi'] = {\n        formatNoMatches: function () { return \"Không tìm thấy kết quả\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vui lòng nhập nhiều hơn \" + n + \" ký tự\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vui lòng nhập ít hơn \" + n + \" ký tự\"; },\n        formatSelectionTooBig: function (limit) { return \"Chỉ có thể chọn được \" + limit + \" lựa chọn\"; },\n        formatLoadMore: function (pageNumber) { return \"Đang lấy thêm kết quả…\"; },\n        formatSearching: function () { return \"Đang tìm…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['vi']);\n})(jQuery);\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_zh-CN.js",
    "content": "/**\n * Select2 Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['zh-CN'] = {\n        formatNoMatches: function () { return \"没有找到匹配项\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"请再输入\" + n + \"个字符\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"请删掉\" + n + \"个字符\";},\n        formatSelectionTooBig: function (limit) { return \"你只能选择最多\" + limit + \"项\"; },\n        formatLoadMore: function (pageNumber) { return \"加载结果中…\"; },\n        formatSearching: function () { return \"搜索中…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-CN']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/select2-3.5.3/select2_locale_zh-TW.js",
    "content": "/**\n * Select2 Traditional Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.fn.select2.locales['zh-TW'] = {\n        formatNoMatches: function () { return \"沒有找到相符的項目\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"請再輸入\" + n + \"個字元\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"請刪掉\" + n + \"個字元\";},\n        formatSelectionTooBig: function (limit) { return \"你只能選擇最多\" + limit + \"項\"; },\n        formatLoadMore: function (pageNumber) { return \"載入中…\"; },\n        formatSearching: function () { return \"搜尋中…\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-TW']);\n})(jQuery);\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/underscore-1.8.3-min.js",
    "content": "//     Underscore.js 1.8.3\n//     http://underscorejs.org\n//     (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\n(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if(\"number\"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i=\"constructor\";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};\"undefined\"!=typeof exports?(\"undefined\"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION=\"1.8.3\";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w(\"length\"),k=function(n){var t=O(n);return\"number\"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),(\"number\"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),\"value\")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])<u?i=a+1:o=a}return i},m.indexOf=r(1,m.findIndex,m.sortedIndex),m.lastIndexOf=r(-1,m.findLastIndex),m.range=function(n,t,r){null==t&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError(\"Bind must be called on a function\");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e<arguments.length;)i.push(arguments[e++]);return E(n,r,this,this,i)};return r},m.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error(\"bindAll must be passed function names\");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=\"\"+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable(\"toString\"),I=[\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case\"[object RegExp]\":case\"[object String]\":return\"\"+n==\"\"+t;case\"[object Number]\":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case\"[object Date]\":case\"[object Boolean]\":return+n===+t}var i=\"[object Array]\"===u;if(!i){if(\"object\"!=typeof n||\"object\"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&\"constructor\"in n&&\"constructor\"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return\"[object Array]\"===s.call(n)},m.isObject=function(n){var t=typeof n;return\"function\"===t||\"object\"===t&&!!n},m.each([\"Arguments\",\"Function\",\"String\",\"Number\",\"Date\",\"RegExp\",\"Error\"],function(n){m[\"is\"+n]=function(t){return s.call(t)===\"[object \"+n+\"]\"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,\"callee\")}),\"function\"!=typeof/./&&\"object\"!=typeof Int8Array&&(m.isFunction=function(n){return\"function\"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||\"[object Boolean]\"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r=\"(?:\"+m.keys(n).join(\"|\")+\")\",e=RegExp(r),u=RegExp(r,\"g\");return function(n){return n=null==n?\"\":\"\"+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+\"\";return n?n+t:t},m.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var K=/(.)^/,z={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},D=/\\\\|'|\\r|\\n|\\u2028|\\u2029/g,L=function(n){return\"\\\\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join(\"|\")+\"|$\",\"g\"),u=0,i=\"__p+='\";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+=\"'+\\n((__t=(\"+r+\"))==null?'':_.escape(__t))+\\n'\":e?i+=\"'+\\n((__t=(\"+e+\"))==null?'':__t)+\\n'\":o&&(i+=\"';\\n\"+o+\"\\n__p+='\"),t}),i+=\"';\\n\",t.variable||(i=\"with(obj||{}){\\n\"+i+\"}\\n\"),i=\"var __t,__p='',__j=Array.prototype.join,\"+\"print=function(){__p+=__j.call(arguments,'');};\\n\"+i+\"return __p;\\n\";try{var o=new Function(t.variable||\"obj\",\"_\",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||\"obj\";return c.source=\"function(\"+f+\"){\\n\"+i+\"}\",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each([\"pop\",\"push\",\"reverse\",\"shift\",\"sort\",\"splice\",\"unshift\"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),\"shift\"!==n&&\"splice\"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each([\"concat\",\"join\",\"slice\"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return\"\"+this._wrapped},\"function\"==typeof define&&define.amd&&define(\"underscore\",[],function(){return m})}).call(this);\n//# sourceMappingURL=underscore-min.map"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/assets/vue-2.4.2.js",
    "content": "/*!\n * Vue.js v2.4.2\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n        typeof define === 'function' && define.amd ? define(factory) :\n            (global.Vue = factory());\n}(this, (function () { 'use strict';\n\n    /*  */\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\n    function isUndef (v) {\n        return v === undefined || v === null\n    }\n\n    function isDef (v) {\n        return v !== undefined && v !== null\n    }\n\n    function isTrue (v) {\n        return v === true\n    }\n\n    function isFalse (v) {\n        return v === false\n    }\n\n    /**\n     * Check if value is primitive\n     */\n    function isPrimitive (value) {\n        return (\n            typeof value === 'string' ||\n            typeof value === 'number' ||\n            typeof value === 'boolean'\n        )\n    }\n\n    /**\n     * Quick object check - this is primarily used to tell\n     * Objects from primitive values when we know the value\n     * is a JSON-compliant type.\n     */\n    function isObject (obj) {\n        return obj !== null && typeof obj === 'object'\n    }\n\n    var _toString = Object.prototype.toString;\n\n    /**\n     * Strict object type check. Only returns true\n     * for plain JavaScript objects.\n     */\n    function isPlainObject (obj) {\n        return _toString.call(obj) === '[object Object]'\n    }\n\n    function isRegExp (v) {\n        return _toString.call(v) === '[object RegExp]'\n    }\n\n    /**\n     * Check if val is a valid array index.\n     */\n    function isValidArrayIndex (val) {\n        var n = parseFloat(val);\n        return n >= 0 && Math.floor(n) === n && isFinite(val)\n    }\n\n    /**\n     * Convert a value to a string that is actually rendered.\n     */\n    function toString (val) {\n        return val == null\n            ? ''\n            : typeof val === 'object'\n            ? JSON.stringify(val, null, 2)\n            : String(val)\n    }\n\n    /**\n     * Convert a input value to a number for persistence.\n     * If the conversion fails, return original string.\n     */\n    function toNumber (val) {\n        var n = parseFloat(val);\n        return isNaN(n) ? val : n\n    }\n\n    /**\n     * Make a map and return a function for checking if a key\n     * is in that map.\n     */\n    function makeMap (\n        str,\n        expectsLowerCase\n    ) {\n        var map = Object.create(null);\n        var list = str.split(',');\n        for (var i = 0; i < list.length; i++) {\n            map[list[i]] = true;\n        }\n        return expectsLowerCase\n            ? function (val) { return map[val.toLowerCase()]; }\n            : function (val) { return map[val]; }\n    }\n\n    /**\n     * Check if a tag is a built-in tag.\n     */\n    var isBuiltInTag = makeMap('slot,component', true);\n\n    /**\n     * Check if a attribute is a reserved attribute.\n     */\n    var isReservedAttribute = makeMap('key,ref,slot,is');\n\n    /**\n     * Remove an item from an array\n     */\n    function remove (arr, item) {\n        if (arr.length) {\n            var index = arr.indexOf(item);\n            if (index > -1) {\n                return arr.splice(index, 1)\n            }\n        }\n    }\n\n    /**\n     * Check whether the object has the property.\n     */\n    var hasOwnProperty = Object.prototype.hasOwnProperty;\n    function hasOwn (obj, key) {\n        return hasOwnProperty.call(obj, key)\n    }\n\n    /**\n     * Create a cached version of a pure function.\n     */\n    function cached (fn) {\n        var cache = Object.create(null);\n        return (function cachedFn (str) {\n            var hit = cache[str];\n            return hit || (cache[str] = fn(str))\n        })\n    }\n\n    /**\n     * Camelize a hyphen-delimited string.\n     */\n    var camelizeRE = /-(\\w)/g;\n    var camelize = cached(function (str) {\n        return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n    });\n\n    /**\n     * Capitalize a string.\n     */\n    var capitalize = cached(function (str) {\n        return str.charAt(0).toUpperCase() + str.slice(1)\n    });\n\n    /**\n     * Hyphenate a camelCase string.\n     */\n    var hyphenateRE = /([^-])([A-Z])/g;\n    var hyphenate = cached(function (str) {\n        return str\n            .replace(hyphenateRE, '$1-$2')\n            .replace(hyphenateRE, '$1-$2')\n            .toLowerCase()\n    });\n\n    /**\n     * Simple bind, faster than native\n     */\n    function bind (fn, ctx) {\n        function boundFn (a) {\n            var l = arguments.length;\n            return l\n                ? l > 1\n                ? fn.apply(ctx, arguments)\n                : fn.call(ctx, a)\n                : fn.call(ctx)\n        }\n        // record original fn length\n        boundFn._length = fn.length;\n        return boundFn\n    }\n\n    /**\n     * Convert an Array-like object to a real Array.\n     */\n    function toArray (list, start) {\n        start = start || 0;\n        var i = list.length - start;\n        var ret = new Array(i);\n        while (i--) {\n            ret[i] = list[i + start];\n        }\n        return ret\n    }\n\n    /**\n     * Mix properties into target object.\n     */\n    function extend (to, _from) {\n        for (var key in _from) {\n            to[key] = _from[key];\n        }\n        return to\n    }\n\n    /**\n     * Merge an Array of Objects into a single Object.\n     */\n    function toObject (arr) {\n        var res = {};\n        for (var i = 0; i < arr.length; i++) {\n            if (arr[i]) {\n                extend(res, arr[i]);\n            }\n        }\n        return res\n    }\n\n    /**\n     * Perform no operation.\n     * Stubbing args to make Flow happy without leaving useless transpiled code\n     * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n     */\n    function noop (a, b, c) {}\n\n    /**\n     * Always return false.\n     */\n    var no = function (a, b, c) { return false; };\n\n    /**\n     * Return same value\n     */\n    var identity = function (_) { return _; };\n\n    /**\n     * Generate a static keys string from compiler modules.\n     */\n    function genStaticKeys (modules) {\n        return modules.reduce(function (keys, m) {\n            return keys.concat(m.staticKeys || [])\n        }, []).join(',')\n    }\n\n    /**\n     * Check if two values are loosely equal - that is,\n     * if they are plain objects, do they have the same shape?\n     */\n    function looseEqual (a, b) {\n        if (a === b) { return true }\n        var isObjectA = isObject(a);\n        var isObjectB = isObject(b);\n        if (isObjectA && isObjectB) {\n            try {\n                var isArrayA = Array.isArray(a);\n                var isArrayB = Array.isArray(b);\n                if (isArrayA && isArrayB) {\n                    return a.length === b.length && a.every(function (e, i) {\n                            return looseEqual(e, b[i])\n                        })\n                } else if (!isArrayA && !isArrayB) {\n                    var keysA = Object.keys(a);\n                    var keysB = Object.keys(b);\n                    return keysA.length === keysB.length && keysA.every(function (key) {\n                            return looseEqual(a[key], b[key])\n                        })\n                } else {\n                    /* istanbul ignore next */\n                    return false\n                }\n            } catch (e) {\n                /* istanbul ignore next */\n                return false\n            }\n        } else if (!isObjectA && !isObjectB) {\n            return String(a) === String(b)\n        } else {\n            return false\n        }\n    }\n\n    function looseIndexOf (arr, val) {\n        for (var i = 0; i < arr.length; i++) {\n            if (looseEqual(arr[i], val)) { return i }\n        }\n        return -1\n    }\n\n    /**\n     * Ensure a function is called only once.\n     */\n    function once (fn) {\n        var called = false;\n        return function () {\n            if (!called) {\n                called = true;\n                fn.apply(this, arguments);\n            }\n        }\n    }\n\n    var SSR_ATTR = 'data-server-rendered';\n\n    var ASSET_TYPES = [\n        'component',\n        'directive',\n        'filter'\n    ];\n\n    var LIFECYCLE_HOOKS = [\n        'beforeCreate',\n        'created',\n        'beforeMount',\n        'mounted',\n        'beforeUpdate',\n        'updated',\n        'beforeDestroy',\n        'destroyed',\n        'activated',\n        'deactivated'\n    ];\n\n    /*  */\n\n    var config = ({\n        /**\n         * Option merge strategies (used in core/util/options)\n         */\n        optionMergeStrategies: Object.create(null),\n\n        /**\n         * Whether to suppress warnings.\n         */\n        silent: false,\n\n        /**\n         * Show production mode tip message on boot?\n         */\n        productionTip: \"development\" !== 'production',\n\n        /**\n         * Whether to enable devtools\n         */\n        devtools: \"development\" !== 'production',\n\n        /**\n         * Whether to record perf\n         */\n        performance: false,\n\n        /**\n         * Error handler for watcher errors\n         */\n        errorHandler: null,\n\n        /**\n         * Warn handler for watcher warns\n         */\n        warnHandler: null,\n\n        /**\n         * Ignore certain custom elements\n         */\n        ignoredElements: [],\n\n        /**\n         * Custom user key aliases for v-on\n         */\n        keyCodes: Object.create(null),\n\n        /**\n         * Check if a tag is reserved so that it cannot be registered as a\n         * component. This is platform-dependent and may be overwritten.\n         */\n        isReservedTag: no,\n\n        /**\n         * Check if an attribute is reserved so that it cannot be used as a component\n         * prop. This is platform-dependent and may be overwritten.\n         */\n        isReservedAttr: no,\n\n        /**\n         * Check if a tag is an unknown element.\n         * Platform-dependent.\n         */\n        isUnknownElement: no,\n\n        /**\n         * Get the namespace of an element\n         */\n        getTagNamespace: noop,\n\n        /**\n         * Parse the real tag name for the specific platform.\n         */\n        parsePlatformTagName: identity,\n\n        /**\n         * Check if an attribute must be bound using property, e.g. value\n         * Platform-dependent.\n         */\n        mustUseProp: no,\n\n        /**\n         * Exposed for legacy reasons\n         */\n        _lifecycleHooks: LIFECYCLE_HOOKS\n    });\n\n    /*  */\n\n    var emptyObject = Object.freeze({});\n\n    /**\n     * Check if a string starts with $ or _\n     */\n    function isReserved (str) {\n        var c = (str + '').charCodeAt(0);\n        return c === 0x24 || c === 0x5F\n    }\n\n    /**\n     * Define a property.\n     */\n    function def (obj, key, val, enumerable) {\n        Object.defineProperty(obj, key, {\n            value: val,\n            enumerable: !!enumerable,\n            writable: true,\n            configurable: true\n        });\n    }\n\n    /**\n     * Parse simple path.\n     */\n    var bailRE = /[^\\w.$]/;\n    function parsePath (path) {\n        if (bailRE.test(path)) {\n            return\n        }\n        var segments = path.split('.');\n        return function (obj) {\n            for (var i = 0; i < segments.length; i++) {\n                if (!obj) { return }\n                obj = obj[segments[i]];\n            }\n            return obj\n        }\n    }\n\n    /*  */\n\n    var warn = noop;\n    var tip = noop;\n    var formatComponentName = (null); // work around flow check\n\n    {\n        var hasConsole = typeof console !== 'undefined';\n        var classifyRE = /(?:^|[-_])(\\w)/g;\n        var classify = function (str) { return str\n            .replace(classifyRE, function (c) { return c.toUpperCase(); })\n            .replace(/[-_]/g, ''); };\n\n        warn = function (msg, vm) {\n            var trace = vm ? generateComponentTrace(vm) : '';\n\n            if (config.warnHandler) {\n                config.warnHandler.call(null, msg, vm, trace);\n            } else if (hasConsole && (!config.silent)) {\n                console.error((\"[Vue warn]: \" + msg + trace));\n            }\n        };\n\n        tip = function (msg, vm) {\n            if (hasConsole && (!config.silent)) {\n                console.warn(\"[Vue tip]: \" + msg + (\n                        vm ? generateComponentTrace(vm) : ''\n                    ));\n            }\n        };\n\n        formatComponentName = function (vm, includeFile) {\n            if (vm.$root === vm) {\n                return '<Root>'\n            }\n            var name = typeof vm === 'string'\n                ? vm\n                : typeof vm === 'function' && vm.options\n                ? vm.options.name\n                : vm._isVue\n                ? vm.$options.name || vm.$options._componentTag\n                : vm.name;\n\n            var file = vm._isVue && vm.$options.__file;\n            if (!name && file) {\n                var match = file.match(/([^/\\\\]+)\\.vue$/);\n                name = match && match[1];\n            }\n\n            return (\n                (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n                (file && includeFile !== false ? (\" at \" + file) : '')\n            )\n        };\n\n        var repeat = function (str, n) {\n            var res = '';\n            while (n) {\n                if (n % 2 === 1) { res += str; }\n                if (n > 1) { str += str; }\n                n >>= 1;\n            }\n            return res\n        };\n\n        var generateComponentTrace = function (vm) {\n            if (vm._isVue && vm.$parent) {\n                var tree = [];\n                var currentRecursiveSequence = 0;\n                while (vm) {\n                    if (tree.length > 0) {\n                        var last = tree[tree.length - 1];\n                        if (last.constructor === vm.constructor) {\n                            currentRecursiveSequence++;\n                            vm = vm.$parent;\n                            continue\n                        } else if (currentRecursiveSequence > 0) {\n                            tree[tree.length - 1] = [last, currentRecursiveSequence];\n                            currentRecursiveSequence = 0;\n                        }\n                    }\n                    tree.push(vm);\n                    vm = vm.$parent;\n                }\n                return '\\n\\nfound in\\n\\n' + tree\n                        .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n                            ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n                            : formatComponentName(vm))); })\n                        .join('\\n')\n            } else {\n                return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n            }\n        };\n    }\n\n    /*  */\n\n    function handleError (err, vm, info) {\n        if (config.errorHandler) {\n            config.errorHandler.call(null, err, vm, info);\n        } else {\n            {\n                warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n            }\n            /* istanbul ignore else */\n            if (inBrowser && typeof console !== 'undefined') {\n                console.error(err);\n            } else {\n                throw err\n            }\n        }\n    }\n\n    /*  */\n    /* globals MutationObserver */\n\n// can we use __proto__?\n    var hasProto = '__proto__' in {};\n\n// Browser environment sniffing\n    var inBrowser = typeof window !== 'undefined';\n    var UA = inBrowser && window.navigator.userAgent.toLowerCase();\n    var isIE = UA && /msie|trident/.test(UA);\n    var isIE9 = UA && UA.indexOf('msie 9.0') > 0;\n    var isEdge = UA && UA.indexOf('edge/') > 0;\n    var isAndroid = UA && UA.indexOf('android') > 0;\n    var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\n    var isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefix has a \"watch\" function on Object.prototype...\n    var nativeWatch = ({}).watch;\n\n    var supportsPassive = false;\n    if (inBrowser) {\n        try {\n            var opts = {};\n            Object.defineProperty(opts, 'passive', ({\n                get: function get () {\n                    /* istanbul ignore next */\n                    supportsPassive = true;\n                }\n            })); // https://github.com/facebook/flow/issues/285\n            window.addEventListener('test-passive', null, opts);\n        } catch (e) {}\n    }\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\n    var _isServer;\n    var isServerRendering = function () {\n        if (_isServer === undefined) {\n            /* istanbul ignore if */\n            if (!inBrowser && typeof global !== 'undefined') {\n                // detect presence of vue-server-renderer and avoid\n                // Webpack shimming the process\n                _isServer = global['process'].env.VUE_ENV === 'server';\n            } else {\n                _isServer = false;\n            }\n        }\n        return _isServer\n    };\n\n// detect devtools\n    var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n    /* istanbul ignore next */\n    function isNative (Ctor) {\n        return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n    }\n\n    var hasSymbol =\n        typeof Symbol !== 'undefined' && isNative(Symbol) &&\n        typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\n    /**\n     * Defer a task to execute it asynchronously.\n     */\n    var nextTick = (function () {\n        var callbacks = [];\n        var pending = false;\n        var timerFunc;\n\n        function nextTickHandler () {\n            pending = false;\n            var copies = callbacks.slice(0);\n            callbacks.length = 0;\n            for (var i = 0; i < copies.length; i++) {\n                copies[i]();\n            }\n        }\n\n        // the nextTick behavior leverages the microtask queue, which can be accessed\n        // via either native Promise.then or MutationObserver.\n        // MutationObserver has wider support, however it is seriously bugged in\n        // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n        // completely stops working after triggering a few times... so, if native\n        // Promise is available, we will use it:\n        /* istanbul ignore if */\n        if (typeof Promise !== 'undefined' && isNative(Promise)) {\n            var p = Promise.resolve();\n            var logError = function (err) { console.error(err); };\n            timerFunc = function () {\n                p.then(nextTickHandler).catch(logError);\n                // in problematic UIWebViews, Promise.then doesn't completely break, but\n                // it can get stuck in a weird state where callbacks are pushed into the\n                // microtask queue but the queue isn't being flushed, until the browser\n                // needs to do some other work, e.g. handle a timer. Therefore we can\n                // \"force\" the microtask queue to be flushed by adding an empty timer.\n                if (isIOS) { setTimeout(noop); }\n            };\n        } else if (typeof MutationObserver !== 'undefined' && (\n                isNative(MutationObserver) ||\n                    // PhantomJS and iOS 7.x\n                MutationObserver.toString() === '[object MutationObserverConstructor]'\n            )) {\n            // use MutationObserver where native Promise is not available,\n            // e.g. PhantomJS IE11, iOS7, Android 4.4\n            var counter = 1;\n            var observer = new MutationObserver(nextTickHandler);\n            var textNode = document.createTextNode(String(counter));\n            observer.observe(textNode, {\n                characterData: true\n            });\n            timerFunc = function () {\n                counter = (counter + 1) % 2;\n                textNode.data = String(counter);\n            };\n        } else {\n            // fallback to setTimeout\n            /* istanbul ignore next */\n            timerFunc = function () {\n                setTimeout(nextTickHandler, 0);\n            };\n        }\n\n        return function queueNextTick (cb, ctx) {\n            var _resolve;\n            callbacks.push(function () {\n                if (cb) {\n                    try {\n                        cb.call(ctx);\n                    } catch (e) {\n                        handleError(e, ctx, 'nextTick');\n                    }\n                } else if (_resolve) {\n                    _resolve(ctx);\n                }\n            });\n            if (!pending) {\n                pending = true;\n                timerFunc();\n            }\n            if (!cb && typeof Promise !== 'undefined') {\n                return new Promise(function (resolve, reject) {\n                    _resolve = resolve;\n                })\n            }\n        }\n    })();\n\n    var _Set;\n    /* istanbul ignore if */\n    if (typeof Set !== 'undefined' && isNative(Set)) {\n        // use native Set when available.\n        _Set = Set;\n    } else {\n        // a non-standard Set polyfill that only works with primitive keys.\n        _Set = (function () {\n            function Set () {\n                this.set = Object.create(null);\n            }\n            Set.prototype.has = function has (key) {\n                return this.set[key] === true\n            };\n            Set.prototype.add = function add (key) {\n                this.set[key] = true;\n            };\n            Set.prototype.clear = function clear () {\n                this.set = Object.create(null);\n            };\n\n            return Set;\n        }());\n    }\n\n    /*  */\n\n\n    var uid = 0;\n\n    /**\n     * A dep is an observable that can have multiple\n     * directives subscribing to it.\n     */\n    var Dep = function Dep () {\n        this.id = uid++;\n        this.subs = [];\n    };\n\n    Dep.prototype.addSub = function addSub (sub) {\n        this.subs.push(sub);\n    };\n\n    Dep.prototype.removeSub = function removeSub (sub) {\n        remove(this.subs, sub);\n    };\n\n    Dep.prototype.depend = function depend () {\n        if (Dep.target) {\n            Dep.target.addDep(this);\n        }\n    };\n\n    Dep.prototype.notify = function notify () {\n        // stabilize the subscriber list first\n        var subs = this.subs.slice();\n        for (var i = 0, l = subs.length; i < l; i++) {\n            subs[i].update();\n        }\n    };\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\n    Dep.target = null;\n    var targetStack = [];\n\n    function pushTarget (_target) {\n        if (Dep.target) { targetStack.push(Dep.target); }\n        Dep.target = _target;\n    }\n\n    function popTarget () {\n        Dep.target = targetStack.pop();\n    }\n\n    /*\n     * not type checking this file because flow doesn't play well with\n     * dynamically accessing methods on Array prototype\n     */\n\n    var arrayProto = Array.prototype;\n    var arrayMethods = Object.create(arrayProto);[\n        'push',\n        'pop',\n        'shift',\n        'unshift',\n        'splice',\n        'sort',\n        'reverse'\n    ]\n        .forEach(function (method) {\n            // cache original method\n            var original = arrayProto[method];\n            def(arrayMethods, method, function mutator () {\n                var args = [], len = arguments.length;\n                while ( len-- ) args[ len ] = arguments[ len ];\n\n                var result = original.apply(this, args);\n                var ob = this.__ob__;\n                var inserted;\n                switch (method) {\n                    case 'push':\n                    case 'unshift':\n                        inserted = args;\n                        break\n                    case 'splice':\n                        inserted = args.slice(2);\n                        break\n                }\n                if (inserted) { ob.observeArray(inserted); }\n                // notify change\n                ob.dep.notify();\n                return result\n            });\n        });\n\n    /*  */\n\n    var arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n    /**\n     * By default, when a reactive property is set, the new value is\n     * also converted to become reactive. However when passing down props,\n     * we don't want to force conversion because the value may be a nested value\n     * under a frozen data structure. Converting it would defeat the optimization.\n     */\n    var observerState = {\n        shouldConvert: true\n    };\n\n    /**\n     * Observer class that are attached to each observed\n     * object. Once attached, the observer converts target\n     * object's property keys into getter/setters that\n     * collect dependencies and dispatches updates.\n     */\n    var Observer = function Observer (value) {\n        this.value = value;\n        this.dep = new Dep();\n        this.vmCount = 0;\n        def(value, '__ob__', this);\n        if (Array.isArray(value)) {\n            var augment = hasProto\n                ? protoAugment\n                : copyAugment;\n            augment(value, arrayMethods, arrayKeys);\n            this.observeArray(value);\n        } else {\n            this.walk(value);\n        }\n    };\n\n    /**\n     * Walk through each property and convert them into\n     * getter/setters. This method should only be called when\n     * value type is Object.\n     */\n    Observer.prototype.walk = function walk (obj) {\n        var keys = Object.keys(obj);\n        for (var i = 0; i < keys.length; i++) {\n            defineReactive$$1(obj, keys[i], obj[keys[i]]);\n        }\n    };\n\n    /**\n     * Observe a list of Array items.\n     */\n    Observer.prototype.observeArray = function observeArray (items) {\n        for (var i = 0, l = items.length; i < l; i++) {\n            observe(items[i]);\n        }\n    };\n\n// helpers\n\n    /**\n     * Augment an target Object or Array by intercepting\n     * the prototype chain using __proto__\n     */\n    function protoAugment (target, src, keys) {\n        /* eslint-disable no-proto */\n        target.__proto__ = src;\n        /* eslint-enable no-proto */\n    }\n\n    /**\n     * Augment an target Object or Array by defining\n     * hidden properties.\n     */\n    /* istanbul ignore next */\n    function copyAugment (target, src, keys) {\n        for (var i = 0, l = keys.length; i < l; i++) {\n            var key = keys[i];\n            def(target, key, src[key]);\n        }\n    }\n\n    /**\n     * Attempt to create an observer instance for a value,\n     * returns the new observer if successfully observed,\n     * or the existing observer if the value already has one.\n     */\n    function observe (value, asRootData) {\n        if (!isObject(value)) {\n            return\n        }\n        var ob;\n        if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n            ob = value.__ob__;\n        } else if (\n            observerState.shouldConvert &&\n            !isServerRendering() &&\n            (Array.isArray(value) || isPlainObject(value)) &&\n            Object.isExtensible(value) &&\n            !value._isVue\n        ) {\n            ob = new Observer(value);\n        }\n        if (asRootData && ob) {\n            ob.vmCount++;\n        }\n        return ob\n    }\n\n    /**\n     * Define a reactive property on an Object.\n     */\n    function defineReactive$$1 (\n        obj,\n        key,\n        val,\n        customSetter,\n        shallow\n    ) {\n        var dep = new Dep();\n\n        var property = Object.getOwnPropertyDescriptor(obj, key);\n        if (property && property.configurable === false) {\n            return\n        }\n\n        // cater for pre-defined getter/setters\n        var getter = property && property.get;\n        var setter = property && property.set;\n\n        var childOb = !shallow && observe(val);\n        Object.defineProperty(obj, key, {\n            enumerable: true,\n            configurable: true,\n            get: function reactiveGetter () {\n                var value = getter ? getter.call(obj) : val;\n                if (Dep.target) {\n                    dep.depend();\n                    if (childOb) {\n                        childOb.dep.depend();\n                    }\n                    if (Array.isArray(value)) {\n                        dependArray(value);\n                    }\n                }\n                return value\n            },\n            set: function reactiveSetter (newVal) {\n                var value = getter ? getter.call(obj) : val;\n                /* eslint-disable no-self-compare */\n                if (newVal === value || (newVal !== newVal && value !== value)) {\n                    return\n                }\n                /* eslint-enable no-self-compare */\n                if (\"development\" !== 'production' && customSetter) {\n                    customSetter();\n                }\n                if (setter) {\n                    setter.call(obj, newVal);\n                } else {\n                    val = newVal;\n                }\n                childOb = !shallow && observe(newVal);\n                dep.notify();\n            }\n        });\n    }\n\n    /**\n     * Set a property on an object. Adds the new property and\n     * triggers change notification if the property doesn't\n     * already exist.\n     */\n    function set (target, key, val) {\n        if (Array.isArray(target) && isValidArrayIndex(key)) {\n            target.length = Math.max(target.length, key);\n            target.splice(key, 1, val);\n            return val\n        }\n        if (hasOwn(target, key)) {\n            target[key] = val;\n            return val\n        }\n        var ob = (target).__ob__;\n        if (target._isVue || (ob && ob.vmCount)) {\n            \"development\" !== 'production' && warn(\n                'Avoid adding reactive properties to a Vue instance or its root $data ' +\n                'at runtime - declare it upfront in the data option.'\n            );\n            return val\n        }\n        if (!ob) {\n            target[key] = val;\n            return val\n        }\n        defineReactive$$1(ob.value, key, val);\n        ob.dep.notify();\n        return val\n    }\n\n    /**\n     * Delete a property and trigger change if necessary.\n     */\n    function del (target, key) {\n        if (Array.isArray(target) && isValidArrayIndex(key)) {\n            target.splice(key, 1);\n            return\n        }\n        var ob = (target).__ob__;\n        if (target._isVue || (ob && ob.vmCount)) {\n            \"development\" !== 'production' && warn(\n                'Avoid deleting properties on a Vue instance or its root $data ' +\n                '- just set it to null.'\n            );\n            return\n        }\n        if (!hasOwn(target, key)) {\n            return\n        }\n        delete target[key];\n        if (!ob) {\n            return\n        }\n        ob.dep.notify();\n    }\n\n    /**\n     * Collect dependencies on array elements when the array is touched, since\n     * we cannot intercept array element access like property getters.\n     */\n    function dependArray (value) {\n        for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n            e = value[i];\n            e && e.__ob__ && e.__ob__.dep.depend();\n            if (Array.isArray(e)) {\n                dependArray(e);\n            }\n        }\n    }\n\n    /*  */\n\n    /**\n     * Option overwriting strategies are functions that handle\n     * how to merge a parent option value and a child option\n     * value into the final value.\n     */\n    var strats = config.optionMergeStrategies;\n\n    /**\n     * Options with restrictions\n     */\n    {\n        strats.el = strats.propsData = function (parent, child, vm, key) {\n            if (!vm) {\n                warn(\n                    \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n                    'creation with the `new` keyword.'\n                );\n            }\n            return defaultStrat(parent, child)\n        };\n    }\n\n    /**\n     * Helper that recursively merges two data objects together.\n     */\n    function mergeData (to, from) {\n        if (!from) { return to }\n        var key, toVal, fromVal;\n        var keys = Object.keys(from);\n        for (var i = 0; i < keys.length; i++) {\n            key = keys[i];\n            toVal = to[key];\n            fromVal = from[key];\n            if (!hasOwn(to, key)) {\n                set(to, key, fromVal);\n            } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n                mergeData(toVal, fromVal);\n            }\n        }\n        return to\n    }\n\n    /**\n     * Data\n     */\n    function mergeDataOrFn (\n        parentVal,\n        childVal,\n        vm\n    ) {\n        if (!vm) {\n            // in a Vue.extend merge, both should be functions\n            if (!childVal) {\n                return parentVal\n            }\n            if (!parentVal) {\n                return childVal\n            }\n            // when parentVal & childVal are both present,\n            // we need to return a function that returns the\n            // merged result of both functions... no need to\n            // check if parentVal is a function here because\n            // it has to be a function to pass previous merges.\n            return function mergedDataFn () {\n                return mergeData(\n                    typeof childVal === 'function' ? childVal.call(this) : childVal,\n                    typeof parentVal === 'function' ? parentVal.call(this) : parentVal\n                )\n            }\n        } else if (parentVal || childVal) {\n            return function mergedInstanceDataFn () {\n                // instance merge\n                var instanceData = typeof childVal === 'function'\n                    ? childVal.call(vm)\n                    : childVal;\n                var defaultData = typeof parentVal === 'function'\n                    ? parentVal.call(vm)\n                    : undefined;\n                if (instanceData) {\n                    return mergeData(instanceData, defaultData)\n                } else {\n                    return defaultData\n                }\n            }\n        }\n    }\n\n    strats.data = function (\n        parentVal,\n        childVal,\n        vm\n    ) {\n        if (!vm) {\n            if (childVal && typeof childVal !== 'function') {\n                \"development\" !== 'production' && warn(\n                    'The \"data\" option should be a function ' +\n                    'that returns a per-instance value in component ' +\n                    'definitions.',\n                    vm\n                );\n\n                return parentVal\n            }\n            return mergeDataOrFn.call(this, parentVal, childVal)\n        }\n\n        return mergeDataOrFn(parentVal, childVal, vm)\n    };\n\n    /**\n     * Hooks and props are merged as arrays.\n     */\n    function mergeHook (\n        parentVal,\n        childVal\n    ) {\n        return childVal\n            ? parentVal\n            ? parentVal.concat(childVal)\n            : Array.isArray(childVal)\n            ? childVal\n            : [childVal]\n            : parentVal\n    }\n\n    LIFECYCLE_HOOKS.forEach(function (hook) {\n        strats[hook] = mergeHook;\n    });\n\n    /**\n     * Assets\n     *\n     * When a vm is present (instance creation), we need to do\n     * a three-way merge between constructor options, instance\n     * options and parent options.\n     */\n    function mergeAssets (parentVal, childVal) {\n        var res = Object.create(parentVal || null);\n        return childVal\n            ? extend(res, childVal)\n            : res\n    }\n\n    ASSET_TYPES.forEach(function (type) {\n        strats[type + 's'] = mergeAssets;\n    });\n\n    /**\n     * Watchers.\n     *\n     * Watchers hashes should not overwrite one\n     * another, so we merge them as arrays.\n     */\n    strats.watch = function (parentVal, childVal) {\n        // work around Firefox's Object.prototype.watch...\n        if (parentVal === nativeWatch) { parentVal = undefined; }\n        if (childVal === nativeWatch) { childVal = undefined; }\n        /* istanbul ignore if */\n        if (!childVal) { return Object.create(parentVal || null) }\n        if (!parentVal) { return childVal }\n        var ret = {};\n        extend(ret, parentVal);\n        for (var key in childVal) {\n            var parent = ret[key];\n            var child = childVal[key];\n            if (parent && !Array.isArray(parent)) {\n                parent = [parent];\n            }\n            ret[key] = parent\n                ? parent.concat(child)\n                : Array.isArray(child) ? child : [child];\n        }\n        return ret\n    };\n\n    /**\n     * Other object hashes.\n     */\n    strats.props =\n        strats.methods =\n            strats.inject =\n                strats.computed = function (parentVal, childVal) {\n                    if (!parentVal) { return childVal }\n                    var ret = Object.create(null);\n                    extend(ret, parentVal);\n                    if (childVal) { extend(ret, childVal); }\n                    return ret\n                };\n    strats.provide = mergeDataOrFn;\n\n    /**\n     * Default strategy.\n     */\n    var defaultStrat = function (parentVal, childVal) {\n        return childVal === undefined\n            ? parentVal\n            : childVal\n    };\n\n    /**\n     * Validate component names\n     */\n    function checkComponents (options) {\n        for (var key in options.components) {\n            var lower = key.toLowerCase();\n            if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n                warn(\n                    'Do not use built-in or reserved HTML elements as component ' +\n                    'id: ' + key\n                );\n            }\n        }\n    }\n\n    /**\n     * Ensure all props option syntax are normalized into the\n     * Object-based format.\n     */\n    function normalizeProps (options) {\n        var props = options.props;\n        if (!props) { return }\n        var res = {};\n        var i, val, name;\n        if (Array.isArray(props)) {\n            i = props.length;\n            while (i--) {\n                val = props[i];\n                if (typeof val === 'string') {\n                    name = camelize(val);\n                    res[name] = { type: null };\n                } else {\n                    warn('props must be strings when using array syntax.');\n                }\n            }\n        } else if (isPlainObject(props)) {\n            for (var key in props) {\n                val = props[key];\n                name = camelize(key);\n                res[name] = isPlainObject(val)\n                    ? val\n                    : { type: val };\n            }\n        }\n        options.props = res;\n    }\n\n    /**\n     * Normalize all injections into Object-based format\n     */\n    function normalizeInject (options) {\n        var inject = options.inject;\n        if (Array.isArray(inject)) {\n            var normalized = options.inject = {};\n            for (var i = 0; i < inject.length; i++) {\n                normalized[inject[i]] = inject[i];\n            }\n        }\n    }\n\n    /**\n     * Normalize raw function directives into object format.\n     */\n    function normalizeDirectives (options) {\n        var dirs = options.directives;\n        if (dirs) {\n            for (var key in dirs) {\n                var def = dirs[key];\n                if (typeof def === 'function') {\n                    dirs[key] = { bind: def, update: def };\n                }\n            }\n        }\n    }\n\n    /**\n     * Merge two option objects into a new one.\n     * Core utility used in both instantiation and inheritance.\n     */\n    function mergeOptions (\n        parent,\n        child,\n        vm\n    ) {\n        {\n            checkComponents(child);\n        }\n\n        if (typeof child === 'function') {\n            child = child.options;\n        }\n\n        normalizeProps(child);\n        normalizeInject(child);\n        normalizeDirectives(child);\n        var extendsFrom = child.extends;\n        if (extendsFrom) {\n            parent = mergeOptions(parent, extendsFrom, vm);\n        }\n        if (child.mixins) {\n            for (var i = 0, l = child.mixins.length; i < l; i++) {\n                parent = mergeOptions(parent, child.mixins[i], vm);\n            }\n        }\n        var options = {};\n        var key;\n        for (key in parent) {\n            mergeField(key);\n        }\n        for (key in child) {\n            if (!hasOwn(parent, key)) {\n                mergeField(key);\n            }\n        }\n        function mergeField (key) {\n            var strat = strats[key] || defaultStrat;\n            options[key] = strat(parent[key], child[key], vm, key);\n        }\n        return options\n    }\n\n    /**\n     * Resolve an asset.\n     * This function is used because child instances need access\n     * to assets defined in its ancestor chain.\n     */\n    function resolveAsset (\n        options,\n        type,\n        id,\n        warnMissing\n    ) {\n        /* istanbul ignore if */\n        if (typeof id !== 'string') {\n            return\n        }\n        var assets = options[type];\n        // check local registration variations first\n        if (hasOwn(assets, id)) { return assets[id] }\n        var camelizedId = camelize(id);\n        if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n        var PascalCaseId = capitalize(camelizedId);\n        if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n        // fallback to prototype chain\n        var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n        if (\"development\" !== 'production' && warnMissing && !res) {\n            warn(\n                'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n                options\n            );\n        }\n        return res\n    }\n\n    /*  */\n\n    function validateProp (\n        key,\n        propOptions,\n        propsData,\n        vm\n    ) {\n        var prop = propOptions[key];\n        var absent = !hasOwn(propsData, key);\n        var value = propsData[key];\n        // handle boolean props\n        if (isType(Boolean, prop.type)) {\n            if (absent && !hasOwn(prop, 'default')) {\n                value = false;\n            } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {\n                value = true;\n            }\n        }\n        // check default value\n        if (value === undefined) {\n            value = getPropDefaultValue(vm, prop, key);\n            // since the default value is a fresh copy,\n            // make sure to observe it.\n            var prevShouldConvert = observerState.shouldConvert;\n            observerState.shouldConvert = true;\n            observe(value);\n            observerState.shouldConvert = prevShouldConvert;\n        }\n        {\n            assertProp(prop, key, value, vm, absent);\n        }\n        return value\n    }\n\n    /**\n     * Get the default value of a prop.\n     */\n    function getPropDefaultValue (vm, prop, key) {\n        // no default, return undefined\n        if (!hasOwn(prop, 'default')) {\n            return undefined\n        }\n        var def = prop.default;\n        // warn against non-factory defaults for Object & Array\n        if (\"development\" !== 'production' && isObject(def)) {\n            warn(\n                'Invalid default value for prop \"' + key + '\": ' +\n                'Props with type Object/Array must use a factory function ' +\n                'to return the default value.',\n                vm\n            );\n        }\n        // the raw prop value was also undefined from previous render,\n        // return previous default value to avoid unnecessary watcher trigger\n        if (vm && vm.$options.propsData &&\n            vm.$options.propsData[key] === undefined &&\n            vm._props[key] !== undefined\n        ) {\n            return vm._props[key]\n        }\n        // call factory function for non-Function types\n        // a value is Function if its prototype is function even across different execution context\n        return typeof def === 'function' && getType(prop.type) !== 'Function'\n            ? def.call(vm)\n            : def\n    }\n\n    /**\n     * Assert whether a prop is valid.\n     */\n    function assertProp (\n        prop,\n        name,\n        value,\n        vm,\n        absent\n    ) {\n        if (prop.required && absent) {\n            warn(\n                'Missing required prop: \"' + name + '\"',\n                vm\n            );\n            return\n        }\n        if (value == null && !prop.required) {\n            return\n        }\n        var type = prop.type;\n        var valid = !type || type === true;\n        var expectedTypes = [];\n        if (type) {\n            if (!Array.isArray(type)) {\n                type = [type];\n            }\n            for (var i = 0; i < type.length && !valid; i++) {\n                var assertedType = assertType(value, type[i]);\n                expectedTypes.push(assertedType.expectedType || '');\n                valid = assertedType.valid;\n            }\n        }\n        if (!valid) {\n            warn(\n                'Invalid prop: type check failed for prop \"' + name + '\".' +\n                ' Expected ' + expectedTypes.map(capitalize).join(', ') +\n                ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',\n                vm\n            );\n            return\n        }\n        var validator = prop.validator;\n        if (validator) {\n            if (!validator(value)) {\n                warn(\n                    'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n                    vm\n                );\n            }\n        }\n    }\n\n    var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\n    function assertType (value, type) {\n        var valid;\n        var expectedType = getType(type);\n        if (simpleCheckRE.test(expectedType)) {\n            valid = typeof value === expectedType.toLowerCase();\n        } else if (expectedType === 'Object') {\n            valid = isPlainObject(value);\n        } else if (expectedType === 'Array') {\n            valid = Array.isArray(value);\n        } else {\n            valid = value instanceof type;\n        }\n        return {\n            valid: valid,\n            expectedType: expectedType\n        }\n    }\n\n    /**\n     * Use function string name to check built-in types,\n     * because a simple equality check will fail when running\n     * across different vms / iframes.\n     */\n    function getType (fn) {\n        var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n        return match ? match[1] : ''\n    }\n\n    function isType (type, fn) {\n        if (!Array.isArray(fn)) {\n            return getType(fn) === getType(type)\n        }\n        for (var i = 0, len = fn.length; i < len; i++) {\n            if (getType(fn[i]) === getType(type)) {\n                return true\n            }\n        }\n        /* istanbul ignore next */\n        return false\n    }\n\n    /*  */\n\n    var mark;\n    var measure;\n\n    {\n        var perf = inBrowser && window.performance;\n        /* istanbul ignore if */\n        if (\n            perf &&\n            perf.mark &&\n            perf.measure &&\n            perf.clearMarks &&\n            perf.clearMeasures\n        ) {\n            mark = function (tag) { return perf.mark(tag); };\n            measure = function (name, startTag, endTag) {\n                perf.measure(name, startTag, endTag);\n                perf.clearMarks(startTag);\n                perf.clearMarks(endTag);\n                perf.clearMeasures(name);\n            };\n        }\n    }\n\n    /* not type checking this file because flow doesn't play well with Proxy */\n\n    var initProxy;\n\n    {\n        var allowedGlobals = makeMap(\n            'Infinity,undefined,NaN,isFinite,isNaN,' +\n            'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n            'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n            'require' // for Webpack/Browserify\n        );\n\n        var warnNonPresent = function (target, key) {\n            warn(\n                \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n                \"referenced during render. Make sure to declare reactive data \" +\n                \"properties in the data option.\",\n                target\n            );\n        };\n\n        var hasProxy =\n            typeof Proxy !== 'undefined' &&\n            Proxy.toString().match(/native code/);\n\n        if (hasProxy) {\n            var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta');\n            config.keyCodes = new Proxy(config.keyCodes, {\n                set: function set (target, key, value) {\n                    if (isBuiltInModifier(key)) {\n                        warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n                        return false\n                    } else {\n                        target[key] = value;\n                        return true\n                    }\n                }\n            });\n        }\n\n        var hasHandler = {\n            has: function has (target, key) {\n                var has = key in target;\n                var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n                if (!has && !isAllowed) {\n                    warnNonPresent(target, key);\n                }\n                return has || !isAllowed\n            }\n        };\n\n        var getHandler = {\n            get: function get (target, key) {\n                if (typeof key === 'string' && !(key in target)) {\n                    warnNonPresent(target, key);\n                }\n                return target[key]\n            }\n        };\n\n        initProxy = function initProxy (vm) {\n            if (hasProxy) {\n                // determine which proxy handler to use\n                var options = vm.$options;\n                var handlers = options.render && options.render._withStripped\n                    ? getHandler\n                    : hasHandler;\n                vm._renderProxy = new Proxy(vm, handlers);\n            } else {\n                vm._renderProxy = vm;\n            }\n        };\n    }\n\n    /*  */\n\n    var VNode = function VNode (\n        tag,\n        data,\n        children,\n        text,\n        elm,\n        context,\n        componentOptions,\n        asyncFactory\n    ) {\n        this.tag = tag;\n        this.data = data;\n        this.children = children;\n        this.text = text;\n        this.elm = elm;\n        this.ns = undefined;\n        this.context = context;\n        this.functionalContext = undefined;\n        this.key = data && data.key;\n        this.componentOptions = componentOptions;\n        this.componentInstance = undefined;\n        this.parent = undefined;\n        this.raw = false;\n        this.isStatic = false;\n        this.isRootInsert = true;\n        this.isComment = false;\n        this.isCloned = false;\n        this.isOnce = false;\n        this.asyncFactory = asyncFactory;\n        this.asyncMeta = undefined;\n        this.isAsyncPlaceholder = false;\n    };\n\n    var prototypeAccessors = { child: {} };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n    /* istanbul ignore next */\n    prototypeAccessors.child.get = function () {\n        return this.componentInstance\n    };\n\n    Object.defineProperties( VNode.prototype, prototypeAccessors );\n\n    var createEmptyVNode = function (text) {\n        if ( text === void 0 ) text = '';\n\n        var node = new VNode();\n        node.text = text;\n        node.isComment = true;\n        return node\n    };\n\n    function createTextVNode (val) {\n        return new VNode(undefined, undefined, undefined, String(val))\n    }\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\n    function cloneVNode (vnode) {\n        var cloned = new VNode(\n            vnode.tag,\n            vnode.data,\n            vnode.children,\n            vnode.text,\n            vnode.elm,\n            vnode.context,\n            vnode.componentOptions,\n            vnode.asyncFactory\n        );\n        cloned.ns = vnode.ns;\n        cloned.isStatic = vnode.isStatic;\n        cloned.key = vnode.key;\n        cloned.isComment = vnode.isComment;\n        cloned.isCloned = true;\n        return cloned\n    }\n\n    function cloneVNodes (vnodes) {\n        var len = vnodes.length;\n        var res = new Array(len);\n        for (var i = 0; i < len; i++) {\n            res[i] = cloneVNode(vnodes[i]);\n        }\n        return res\n    }\n\n    /*  */\n\n    var normalizeEvent = cached(function (name) {\n        var passive = name.charAt(0) === '&';\n        name = passive ? name.slice(1) : name;\n        var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n        name = once$$1 ? name.slice(1) : name;\n        var capture = name.charAt(0) === '!';\n        name = capture ? name.slice(1) : name;\n        return {\n            name: name,\n            once: once$$1,\n            capture: capture,\n            passive: passive\n        }\n    });\n\n    function createFnInvoker (fns) {\n        function invoker () {\n            var arguments$1 = arguments;\n\n            var fns = invoker.fns;\n            if (Array.isArray(fns)) {\n                var cloned = fns.slice();\n                for (var i = 0; i < cloned.length; i++) {\n                    cloned[i].apply(null, arguments$1);\n                }\n            } else {\n                // return handler return value for single handlers\n                return fns.apply(null, arguments)\n            }\n        }\n        invoker.fns = fns;\n        return invoker\n    }\n\n    function updateListeners (\n        on,\n        oldOn,\n        add,\n        remove$$1,\n        vm\n    ) {\n        var name, cur, old, event;\n        for (name in on) {\n            cur = on[name];\n            old = oldOn[name];\n            event = normalizeEvent(name);\n            if (isUndef(cur)) {\n                \"development\" !== 'production' && warn(\n                    \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n                    vm\n                );\n            } else if (isUndef(old)) {\n                if (isUndef(cur.fns)) {\n                    cur = on[name] = createFnInvoker(cur);\n                }\n                add(event.name, cur, event.once, event.capture, event.passive);\n            } else if (cur !== old) {\n                old.fns = cur;\n                on[name] = old;\n            }\n        }\n        for (name in oldOn) {\n            if (isUndef(on[name])) {\n                event = normalizeEvent(name);\n                remove$$1(event.name, oldOn[name], event.capture);\n            }\n        }\n    }\n\n    /*  */\n\n    function mergeVNodeHook (def, hookKey, hook) {\n        var invoker;\n        var oldHook = def[hookKey];\n\n        function wrappedHook () {\n            hook.apply(this, arguments);\n            // important: remove merged hook to ensure it's called only once\n            // and prevent memory leak\n            remove(invoker.fns, wrappedHook);\n        }\n\n        if (isUndef(oldHook)) {\n            // no existing hook\n            invoker = createFnInvoker([wrappedHook]);\n        } else {\n            /* istanbul ignore if */\n            if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n                // already a merged invoker\n                invoker = oldHook;\n                invoker.fns.push(wrappedHook);\n            } else {\n                // existing plain hook\n                invoker = createFnInvoker([oldHook, wrappedHook]);\n            }\n        }\n\n        invoker.merged = true;\n        def[hookKey] = invoker;\n    }\n\n    /*  */\n\n    function extractPropsFromVNodeData (\n        data,\n        Ctor,\n        tag\n    ) {\n        // we are only extracting raw values here.\n        // validation and default values are handled in the child\n        // component itself.\n        var propOptions = Ctor.options.props;\n        if (isUndef(propOptions)) {\n            return\n        }\n        var res = {};\n        var attrs = data.attrs;\n        var props = data.props;\n        if (isDef(attrs) || isDef(props)) {\n            for (var key in propOptions) {\n                var altKey = hyphenate(key);\n                {\n                    var keyInLowerCase = key.toLowerCase();\n                    if (\n                        key !== keyInLowerCase &&\n                        attrs && hasOwn(attrs, keyInLowerCase)\n                    ) {\n                        tip(\n                            \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n                            (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n                            \" \\\"\" + key + \"\\\". \" +\n                            \"Note that HTML attributes are case-insensitive and camelCased \" +\n                            \"props need to use their kebab-case equivalents when using in-DOM \" +\n                            \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n                        );\n                    }\n                }\n                checkProp(res, props, key, altKey, true) ||\n                checkProp(res, attrs, key, altKey, false);\n            }\n        }\n        return res\n    }\n\n    function checkProp (\n        res,\n        hash,\n        key,\n        altKey,\n        preserve\n    ) {\n        if (isDef(hash)) {\n            if (hasOwn(hash, key)) {\n                res[key] = hash[key];\n                if (!preserve) {\n                    delete hash[key];\n                }\n                return true\n            } else if (hasOwn(hash, altKey)) {\n                res[key] = hash[altKey];\n                if (!preserve) {\n                    delete hash[altKey];\n                }\n                return true\n            }\n        }\n        return false\n    }\n\n    /*  */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\n    function simpleNormalizeChildren (children) {\n        for (var i = 0; i < children.length; i++) {\n            if (Array.isArray(children[i])) {\n                return Array.prototype.concat.apply([], children)\n            }\n        }\n        return children\n    }\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\n    function normalizeChildren (children) {\n        return isPrimitive(children)\n            ? [createTextVNode(children)]\n            : Array.isArray(children)\n            ? normalizeArrayChildren(children)\n            : undefined\n    }\n\n    function isTextNode (node) {\n        return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n    }\n\n    function normalizeArrayChildren (children, nestedIndex) {\n        var res = [];\n        var i, c, last;\n        for (i = 0; i < children.length; i++) {\n            c = children[i];\n            if (isUndef(c) || typeof c === 'boolean') { continue }\n            last = res[res.length - 1];\n            //  nested\n            if (Array.isArray(c)) {\n                res.push.apply(res, normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i)));\n            } else if (isPrimitive(c)) {\n                if (isTextNode(last)) {\n                    // merge adjacent text nodes\n                    // this is necessary for SSR hydration because text nodes are\n                    // essentially merged when rendered to HTML strings\n                    (last).text += String(c);\n                } else if (c !== '') {\n                    // convert primitive to vnode\n                    res.push(createTextVNode(c));\n                }\n            } else {\n                if (isTextNode(c) && isTextNode(last)) {\n                    // merge adjacent text nodes\n                    res[res.length - 1] = createTextVNode(last.text + c.text);\n                } else {\n                    // default key for nested array children (likely generated by v-for)\n                    if (isTrue(children._isVList) &&\n                        isDef(c.tag) &&\n                        isUndef(c.key) &&\n                        isDef(nestedIndex)) {\n                        c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n                    }\n                    res.push(c);\n                }\n            }\n        }\n        return res\n    }\n\n    /*  */\n\n    function ensureCtor (comp, base) {\n        if (comp.__esModule && comp.default) {\n            comp = comp.default;\n        }\n        return isObject(comp)\n            ? base.extend(comp)\n            : comp\n    }\n\n    function createAsyncPlaceholder (\n        factory,\n        data,\n        context,\n        children,\n        tag\n    ) {\n        var node = createEmptyVNode();\n        node.asyncFactory = factory;\n        node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n        return node\n    }\n\n    function resolveAsyncComponent (\n        factory,\n        baseCtor,\n        context\n    ) {\n        if (isTrue(factory.error) && isDef(factory.errorComp)) {\n            return factory.errorComp\n        }\n\n        if (isDef(factory.resolved)) {\n            return factory.resolved\n        }\n\n        if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n            return factory.loadingComp\n        }\n\n        if (isDef(factory.contexts)) {\n            // already pending\n            factory.contexts.push(context);\n        } else {\n            var contexts = factory.contexts = [context];\n            var sync = true;\n\n            var forceRender = function () {\n                for (var i = 0, l = contexts.length; i < l; i++) {\n                    contexts[i].$forceUpdate();\n                }\n            };\n\n            var resolve = once(function (res) {\n                // cache resolved\n                factory.resolved = ensureCtor(res, baseCtor);\n                // invoke callbacks only if this is not a synchronous resolve\n                // (async resolves are shimmed as synchronous during SSR)\n                if (!sync) {\n                    forceRender();\n                }\n            });\n\n            var reject = once(function (reason) {\n                \"development\" !== 'production' && warn(\n                    \"Failed to resolve async component: \" + (String(factory)) +\n                    (reason ? (\"\\nReason: \" + reason) : '')\n                );\n                if (isDef(factory.errorComp)) {\n                    factory.error = true;\n                    forceRender();\n                }\n            });\n\n            var res = factory(resolve, reject);\n\n            if (isObject(res)) {\n                if (typeof res.then === 'function') {\n                    // () => Promise\n                    if (isUndef(factory.resolved)) {\n                        res.then(resolve, reject);\n                    }\n                } else if (isDef(res.component) && typeof res.component.then === 'function') {\n                    res.component.then(resolve, reject);\n\n                    if (isDef(res.error)) {\n                        factory.errorComp = ensureCtor(res.error, baseCtor);\n                    }\n\n                    if (isDef(res.loading)) {\n                        factory.loadingComp = ensureCtor(res.loading, baseCtor);\n                        if (res.delay === 0) {\n                            factory.loading = true;\n                        } else {\n                            setTimeout(function () {\n                                if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                                    factory.loading = true;\n                                    forceRender();\n                                }\n                            }, res.delay || 200);\n                        }\n                    }\n\n                    if (isDef(res.timeout)) {\n                        setTimeout(function () {\n                            if (isUndef(factory.resolved)) {\n                                reject(\n                                    \"timeout (\" + (res.timeout) + \"ms)\"\n                                );\n                            }\n                        }, res.timeout);\n                    }\n                }\n            }\n\n            sync = false;\n            // return in case resolved synchronously\n            return factory.loading\n                ? factory.loadingComp\n                : factory.resolved\n        }\n    }\n\n    /*  */\n\n    function getFirstComponentChild (children) {\n        if (Array.isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n                var c = children[i];\n                if (isDef(c) && isDef(c.componentOptions)) {\n                    return c\n                }\n            }\n        }\n    }\n\n    /*  */\n\n    /*  */\n\n    function initEvents (vm) {\n        vm._events = Object.create(null);\n        vm._hasHookEvent = false;\n        // init parent attached events\n        var listeners = vm.$options._parentListeners;\n        if (listeners) {\n            updateComponentListeners(vm, listeners);\n        }\n    }\n\n    var target;\n\n    function add (event, fn, once$$1) {\n        if (once$$1) {\n            target.$once(event, fn);\n        } else {\n            target.$on(event, fn);\n        }\n    }\n\n    function remove$1 (event, fn) {\n        target.$off(event, fn);\n    }\n\n    function updateComponentListeners (\n        vm,\n        listeners,\n        oldListeners\n    ) {\n        target = vm;\n        updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n    }\n\n    function eventsMixin (Vue) {\n        var hookRE = /^hook:/;\n        Vue.prototype.$on = function (event, fn) {\n            var this$1 = this;\n\n            var vm = this;\n            if (Array.isArray(event)) {\n                for (var i = 0, l = event.length; i < l; i++) {\n                    this$1.$on(event[i], fn);\n                }\n            } else {\n                (vm._events[event] || (vm._events[event] = [])).push(fn);\n                // optimize hook:event cost by using a boolean flag marked at registration\n                // instead of a hash lookup\n                if (hookRE.test(event)) {\n                    vm._hasHookEvent = true;\n                }\n            }\n            return vm\n        };\n\n        Vue.prototype.$once = function (event, fn) {\n            var vm = this;\n            function on () {\n                vm.$off(event, on);\n                fn.apply(vm, arguments);\n            }\n            on.fn = fn;\n            vm.$on(event, on);\n            return vm\n        };\n\n        Vue.prototype.$off = function (event, fn) {\n            var this$1 = this;\n\n            var vm = this;\n            // all\n            if (!arguments.length) {\n                vm._events = Object.create(null);\n                return vm\n            }\n            // array of events\n            if (Array.isArray(event)) {\n                for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n                    this$1.$off(event[i$1], fn);\n                }\n                return vm\n            }\n            // specific event\n            var cbs = vm._events[event];\n            if (!cbs) {\n                return vm\n            }\n            if (arguments.length === 1) {\n                vm._events[event] = null;\n                return vm\n            }\n            // specific handler\n            var cb;\n            var i = cbs.length;\n            while (i--) {\n                cb = cbs[i];\n                if (cb === fn || cb.fn === fn) {\n                    cbs.splice(i, 1);\n                    break\n                }\n            }\n            return vm\n        };\n\n        Vue.prototype.$emit = function (event) {\n            var vm = this;\n            {\n                var lowerCaseEvent = event.toLowerCase();\n                if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n                    tip(\n                        \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n                        (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n                        \"Note that HTML attributes are case-insensitive and you cannot use \" +\n                        \"v-on to listen to camelCase events when using in-DOM templates. \" +\n                        \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n                    );\n                }\n            }\n            var cbs = vm._events[event];\n            if (cbs) {\n                cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n                var args = toArray(arguments, 1);\n                for (var i = 0, l = cbs.length; i < l; i++) {\n                    try {\n                        cbs[i].apply(vm, args);\n                    } catch (e) {\n                        handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n                    }\n                }\n            }\n            return vm\n        };\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for resolving raw children VNodes into a slot object.\n     */\n    function resolveSlots (\n        children,\n        context\n    ) {\n        var slots = {};\n        if (!children) {\n            return slots\n        }\n        var defaultSlot = [];\n        for (var i = 0, l = children.length; i < l; i++) {\n            var child = children[i];\n            // named slots should only be respected if the vnode was rendered in the\n            // same context.\n            if ((child.context === context || child.functionalContext === context) &&\n                child.data && child.data.slot != null\n            ) {\n                var name = child.data.slot;\n                var slot = (slots[name] || (slots[name] = []));\n                if (child.tag === 'template') {\n                    slot.push.apply(slot, child.children);\n                } else {\n                    slot.push(child);\n                }\n            } else {\n                defaultSlot.push(child);\n            }\n        }\n        // ignore whitespace\n        if (!defaultSlot.every(isWhitespace)) {\n            slots.default = defaultSlot;\n        }\n        return slots\n    }\n\n    function isWhitespace (node) {\n        return node.isComment || node.text === ' '\n    }\n\n    function resolveScopedSlots (\n        fns, // see flow/vnode\n        res\n    ) {\n        res = res || {};\n        for (var i = 0; i < fns.length; i++) {\n            if (Array.isArray(fns[i])) {\n                resolveScopedSlots(fns[i], res);\n            } else {\n                res[fns[i].key] = fns[i].fn;\n            }\n        }\n        return res\n    }\n\n    /*  */\n\n    var activeInstance = null;\n    var isUpdatingChildComponent = false;\n\n    function initLifecycle (vm) {\n        var options = vm.$options;\n\n        // locate first non-abstract parent\n        var parent = options.parent;\n        if (parent && !options.abstract) {\n            while (parent.$options.abstract && parent.$parent) {\n                parent = parent.$parent;\n            }\n            parent.$children.push(vm);\n        }\n\n        vm.$parent = parent;\n        vm.$root = parent ? parent.$root : vm;\n\n        vm.$children = [];\n        vm.$refs = {};\n\n        vm._watcher = null;\n        vm._inactive = null;\n        vm._directInactive = false;\n        vm._isMounted = false;\n        vm._isDestroyed = false;\n        vm._isBeingDestroyed = false;\n    }\n\n    function lifecycleMixin (Vue) {\n        Vue.prototype._update = function (vnode, hydrating) {\n            var vm = this;\n            if (vm._isMounted) {\n                callHook(vm, 'beforeUpdate');\n            }\n            var prevEl = vm.$el;\n            var prevVnode = vm._vnode;\n            var prevActiveInstance = activeInstance;\n            activeInstance = vm;\n            vm._vnode = vnode;\n            // Vue.prototype.__patch__ is injected in entry points\n            // based on the rendering backend used.\n            if (!prevVnode) {\n                // initial render\n                vm.$el = vm.__patch__(\n                    vm.$el, vnode, hydrating, false /* removeOnly */,\n                    vm.$options._parentElm,\n                    vm.$options._refElm\n                );\n                // no need for the ref nodes after initial patch\n                // this prevents keeping a detached DOM tree in memory (#5851)\n                vm.$options._parentElm = vm.$options._refElm = null;\n            } else {\n                // updates\n                vm.$el = vm.__patch__(prevVnode, vnode);\n            }\n            activeInstance = prevActiveInstance;\n            // update __vue__ reference\n            if (prevEl) {\n                prevEl.__vue__ = null;\n            }\n            if (vm.$el) {\n                vm.$el.__vue__ = vm;\n            }\n            // if parent is an HOC, update its $el as well\n            if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n                vm.$parent.$el = vm.$el;\n            }\n            // updated hook is called by the scheduler to ensure that children are\n            // updated in a parent's updated hook.\n        };\n\n        Vue.prototype.$forceUpdate = function () {\n            var vm = this;\n            if (vm._watcher) {\n                vm._watcher.update();\n            }\n        };\n\n        Vue.prototype.$destroy = function () {\n            var vm = this;\n            if (vm._isBeingDestroyed) {\n                return\n            }\n            callHook(vm, 'beforeDestroy');\n            vm._isBeingDestroyed = true;\n            // remove self from parent\n            var parent = vm.$parent;\n            if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n                remove(parent.$children, vm);\n            }\n            // teardown watchers\n            if (vm._watcher) {\n                vm._watcher.teardown();\n            }\n            var i = vm._watchers.length;\n            while (i--) {\n                vm._watchers[i].teardown();\n            }\n            // remove reference from data ob\n            // frozen object may not have observer.\n            if (vm._data.__ob__) {\n                vm._data.__ob__.vmCount--;\n            }\n            // call the last hook...\n            vm._isDestroyed = true;\n            // invoke destroy hooks on current rendered tree\n            vm.__patch__(vm._vnode, null);\n            // fire destroyed hook\n            callHook(vm, 'destroyed');\n            // turn off all instance listeners.\n            vm.$off();\n            // remove __vue__ reference\n            if (vm.$el) {\n                vm.$el.__vue__ = null;\n            }\n        };\n    }\n\n    function mountComponent (\n        vm,\n        el,\n        hydrating\n    ) {\n        vm.$el = el;\n        if (!vm.$options.render) {\n            vm.$options.render = createEmptyVNode;\n            {\n                /* istanbul ignore if */\n                if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n                    vm.$options.el || el) {\n                    warn(\n                        'You are using the runtime-only build of Vue where the template ' +\n                        'compiler is not available. Either pre-compile the templates into ' +\n                        'render functions, or use the compiler-included build.',\n                        vm\n                    );\n                } else {\n                    warn(\n                        'Failed to mount component: template or render function not defined.',\n                        vm\n                    );\n                }\n            }\n        }\n        callHook(vm, 'beforeMount');\n\n        var updateComponent;\n        /* istanbul ignore if */\n        if (\"development\" !== 'production' && config.performance && mark) {\n            updateComponent = function () {\n                var name = vm._name;\n                var id = vm._uid;\n                var startTag = \"vue-perf-start:\" + id;\n                var endTag = \"vue-perf-end:\" + id;\n\n                mark(startTag);\n                var vnode = vm._render();\n                mark(endTag);\n                measure((name + \" render\"), startTag, endTag);\n\n                mark(startTag);\n                vm._update(vnode, hydrating);\n                mark(endTag);\n                measure((name + \" patch\"), startTag, endTag);\n            };\n        } else {\n            updateComponent = function () {\n                vm._update(vm._render(), hydrating);\n            };\n        }\n\n        vm._watcher = new Watcher(vm, updateComponent, noop);\n        hydrating = false;\n\n        // manually mounted instance, call mounted on self\n        // mounted is called for render-created child components in its inserted hook\n        if (vm.$vnode == null) {\n            vm._isMounted = true;\n            callHook(vm, 'mounted');\n        }\n        return vm\n    }\n\n    function updateChildComponent (\n        vm,\n        propsData,\n        listeners,\n        parentVnode,\n        renderChildren\n    ) {\n        {\n            isUpdatingChildComponent = true;\n        }\n\n        // determine whether component has slot children\n        // we need to do this before overwriting $options._renderChildren\n        var hasChildren = !!(\n            renderChildren ||               // has new static slots\n            vm.$options._renderChildren ||  // has old static slots\n            parentVnode.data.scopedSlots || // has new scoped slots\n            vm.$scopedSlots !== emptyObject // has old scoped slots\n        );\n\n        vm.$options._parentVnode = parentVnode;\n        vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n        if (vm._vnode) { // update child tree's parent\n            vm._vnode.parent = parentVnode;\n        }\n        vm.$options._renderChildren = renderChildren;\n\n        // update $attrs and $listensers hash\n        // these are also reactive so they may trigger child update if the child\n        // used them during render\n        vm.$attrs = parentVnode.data && parentVnode.data.attrs;\n        vm.$listeners = listeners;\n\n        // update props\n        if (propsData && vm.$options.props) {\n            observerState.shouldConvert = false;\n            var props = vm._props;\n            var propKeys = vm.$options._propKeys || [];\n            for (var i = 0; i < propKeys.length; i++) {\n                var key = propKeys[i];\n                props[key] = validateProp(key, vm.$options.props, propsData, vm);\n            }\n            observerState.shouldConvert = true;\n            // keep a copy of raw propsData\n            vm.$options.propsData = propsData;\n        }\n\n        // update listeners\n        if (listeners) {\n            var oldListeners = vm.$options._parentListeners;\n            vm.$options._parentListeners = listeners;\n            updateComponentListeners(vm, listeners, oldListeners);\n        }\n        // resolve slots + force update if has children\n        if (hasChildren) {\n            vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n            vm.$forceUpdate();\n        }\n\n        {\n            isUpdatingChildComponent = false;\n        }\n    }\n\n    function isInInactiveTree (vm) {\n        while (vm && (vm = vm.$parent)) {\n            if (vm._inactive) { return true }\n        }\n        return false\n    }\n\n    function activateChildComponent (vm, direct) {\n        if (direct) {\n            vm._directInactive = false;\n            if (isInInactiveTree(vm)) {\n                return\n            }\n        } else if (vm._directInactive) {\n            return\n        }\n        if (vm._inactive || vm._inactive === null) {\n            vm._inactive = false;\n            for (var i = 0; i < vm.$children.length; i++) {\n                activateChildComponent(vm.$children[i]);\n            }\n            callHook(vm, 'activated');\n        }\n    }\n\n    function deactivateChildComponent (vm, direct) {\n        if (direct) {\n            vm._directInactive = true;\n            if (isInInactiveTree(vm)) {\n                return\n            }\n        }\n        if (!vm._inactive) {\n            vm._inactive = true;\n            for (var i = 0; i < vm.$children.length; i++) {\n                deactivateChildComponent(vm.$children[i]);\n            }\n            callHook(vm, 'deactivated');\n        }\n    }\n\n    function callHook (vm, hook) {\n        var handlers = vm.$options[hook];\n        if (handlers) {\n            for (var i = 0, j = handlers.length; i < j; i++) {\n                try {\n                    handlers[i].call(vm);\n                } catch (e) {\n                    handleError(e, vm, (hook + \" hook\"));\n                }\n            }\n        }\n        if (vm._hasHookEvent) {\n            vm.$emit('hook:' + hook);\n        }\n    }\n\n    /*  */\n\n\n    var MAX_UPDATE_COUNT = 100;\n\n    var queue = [];\n    var activatedChildren = [];\n    var has = {};\n    var circular = {};\n    var waiting = false;\n    var flushing = false;\n    var index = 0;\n\n    /**\n     * Reset the scheduler's state.\n     */\n    function resetSchedulerState () {\n        index = queue.length = activatedChildren.length = 0;\n        has = {};\n        {\n            circular = {};\n        }\n        waiting = flushing = false;\n    }\n\n    /**\n     * Flush both queues and run the watchers.\n     */\n    function flushSchedulerQueue () {\n        flushing = true;\n        var watcher, id;\n\n        // Sort queue before flush.\n        // This ensures that:\n        // 1. Components are updated from parent to child. (because parent is always\n        //    created before the child)\n        // 2. A component's user watchers are run before its render watcher (because\n        //    user watchers are created before the render watcher)\n        // 3. If a component is destroyed during a parent component's watcher run,\n        //    its watchers can be skipped.\n        queue.sort(function (a, b) { return a.id - b.id; });\n\n        // do not cache length because more watchers might be pushed\n        // as we run existing watchers\n        for (index = 0; index < queue.length; index++) {\n            watcher = queue[index];\n            id = watcher.id;\n            has[id] = null;\n            watcher.run();\n            // in dev build, check and stop circular updates.\n            if (\"development\" !== 'production' && has[id] != null) {\n                circular[id] = (circular[id] || 0) + 1;\n                if (circular[id] > MAX_UPDATE_COUNT) {\n                    warn(\n                        'You may have an infinite update loop ' + (\n                            watcher.user\n                                ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n                                : \"in a component render function.\"\n                        ),\n                        watcher.vm\n                    );\n                    break\n                }\n            }\n        }\n\n        // keep copies of post queues before resetting state\n        var activatedQueue = activatedChildren.slice();\n        var updatedQueue = queue.slice();\n\n        resetSchedulerState();\n\n        // call component updated and activated hooks\n        callActivatedHooks(activatedQueue);\n        callUpdatedHooks(updatedQueue);\n\n        // devtool hook\n        /* istanbul ignore if */\n        if (devtools && config.devtools) {\n            devtools.emit('flush');\n        }\n    }\n\n    function callUpdatedHooks (queue) {\n        var i = queue.length;\n        while (i--) {\n            var watcher = queue[i];\n            var vm = watcher.vm;\n            if (vm._watcher === watcher && vm._isMounted) {\n                callHook(vm, 'updated');\n            }\n        }\n    }\n\n    /**\n     * Queue a kept-alive component that was activated during patch.\n     * The queue will be processed after the entire tree has been patched.\n     */\n    function queueActivatedComponent (vm) {\n        // setting _inactive to false here so that a render function can\n        // rely on checking whether it's in an inactive tree (e.g. router-view)\n        vm._inactive = false;\n        activatedChildren.push(vm);\n    }\n\n    function callActivatedHooks (queue) {\n        for (var i = 0; i < queue.length; i++) {\n            queue[i]._inactive = true;\n            activateChildComponent(queue[i], true /* true */);\n        }\n    }\n\n    /**\n     * Push a watcher into the watcher queue.\n     * Jobs with duplicate IDs will be skipped unless it's\n     * pushed when the queue is being flushed.\n     */\n    function queueWatcher (watcher) {\n        var id = watcher.id;\n        if (has[id] == null) {\n            has[id] = true;\n            if (!flushing) {\n                queue.push(watcher);\n            } else {\n                // if already flushing, splice the watcher based on its id\n                // if already past its id, it will be run next immediately.\n                var i = queue.length - 1;\n                while (i > index && queue[i].id > watcher.id) {\n                    i--;\n                }\n                queue.splice(i + 1, 0, watcher);\n            }\n            // queue the flush\n            if (!waiting) {\n                waiting = true;\n                nextTick(flushSchedulerQueue);\n            }\n        }\n    }\n\n    /*  */\n\n    var uid$2 = 0;\n\n    /**\n     * A watcher parses an expression, collects dependencies,\n     * and fires callback when the expression value changes.\n     * This is used for both the $watch() api and directives.\n     */\n    var Watcher = function Watcher (\n        vm,\n        expOrFn,\n        cb,\n        options\n    ) {\n        this.vm = vm;\n        vm._watchers.push(this);\n        // options\n        if (options) {\n            this.deep = !!options.deep;\n            this.user = !!options.user;\n            this.lazy = !!options.lazy;\n            this.sync = !!options.sync;\n        } else {\n            this.deep = this.user = this.lazy = this.sync = false;\n        }\n        this.cb = cb;\n        this.id = ++uid$2; // uid for batching\n        this.active = true;\n        this.dirty = this.lazy; // for lazy watchers\n        this.deps = [];\n        this.newDeps = [];\n        this.depIds = new _Set();\n        this.newDepIds = new _Set();\n        this.expression = expOrFn.toString();\n        // parse expression for getter\n        if (typeof expOrFn === 'function') {\n            this.getter = expOrFn;\n        } else {\n            this.getter = parsePath(expOrFn);\n            if (!this.getter) {\n                this.getter = function () {};\n                \"development\" !== 'production' && warn(\n                    \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n                    'Watcher only accepts simple dot-delimited paths. ' +\n                    'For full control, use a function instead.',\n                    vm\n                );\n            }\n        }\n        this.value = this.lazy\n            ? undefined\n            : this.get();\n    };\n\n    /**\n     * Evaluate the getter, and re-collect dependencies.\n     */\n    Watcher.prototype.get = function get () {\n        pushTarget(this);\n        var value;\n        var vm = this.vm;\n        try {\n            value = this.getter.call(vm, vm);\n        } catch (e) {\n            if (this.user) {\n                handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n            } else {\n                throw e\n            }\n        } finally {\n            // \"touch\" every property so they are all tracked as\n            // dependencies for deep watching\n            if (this.deep) {\n                traverse(value);\n            }\n            popTarget();\n            this.cleanupDeps();\n        }\n        return value\n    };\n\n    /**\n     * Add a dependency to this directive.\n     */\n    Watcher.prototype.addDep = function addDep (dep) {\n        var id = dep.id;\n        if (!this.newDepIds.has(id)) {\n            this.newDepIds.add(id);\n            this.newDeps.push(dep);\n            if (!this.depIds.has(id)) {\n                dep.addSub(this);\n            }\n        }\n    };\n\n    /**\n     * Clean up for dependency collection.\n     */\n    Watcher.prototype.cleanupDeps = function cleanupDeps () {\n        var this$1 = this;\n\n        var i = this.deps.length;\n        while (i--) {\n            var dep = this$1.deps[i];\n            if (!this$1.newDepIds.has(dep.id)) {\n                dep.removeSub(this$1);\n            }\n        }\n        var tmp = this.depIds;\n        this.depIds = this.newDepIds;\n        this.newDepIds = tmp;\n        this.newDepIds.clear();\n        tmp = this.deps;\n        this.deps = this.newDeps;\n        this.newDeps = tmp;\n        this.newDeps.length = 0;\n    };\n\n    /**\n     * Subscriber interface.\n     * Will be called when a dependency changes.\n     */\n    Watcher.prototype.update = function update () {\n        /* istanbul ignore else */\n        if (this.lazy) {\n            this.dirty = true;\n        } else if (this.sync) {\n            this.run();\n        } else {\n            queueWatcher(this);\n        }\n    };\n\n    /**\n     * Scheduler job interface.\n     * Will be called by the scheduler.\n     */\n    Watcher.prototype.run = function run () {\n        if (this.active) {\n            var value = this.get();\n            if (\n                value !== this.value ||\n                    // Deep watchers and watchers on Object/Arrays should fire even\n                    // when the value is the same, because the value may\n                    // have mutated.\n                isObject(value) ||\n                this.deep\n            ) {\n                // set new value\n                var oldValue = this.value;\n                this.value = value;\n                if (this.user) {\n                    try {\n                        this.cb.call(this.vm, value, oldValue);\n                    } catch (e) {\n                        handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n                    }\n                } else {\n                    this.cb.call(this.vm, value, oldValue);\n                }\n            }\n        }\n    };\n\n    /**\n     * Evaluate the value of the watcher.\n     * This only gets called for lazy watchers.\n     */\n    Watcher.prototype.evaluate = function evaluate () {\n        this.value = this.get();\n        this.dirty = false;\n    };\n\n    /**\n     * Depend on all deps collected by this watcher.\n     */\n    Watcher.prototype.depend = function depend () {\n        var this$1 = this;\n\n        var i = this.deps.length;\n        while (i--) {\n            this$1.deps[i].depend();\n        }\n    };\n\n    /**\n     * Remove self from all dependencies' subscriber list.\n     */\n    Watcher.prototype.teardown = function teardown () {\n        var this$1 = this;\n\n        if (this.active) {\n            // remove self from vm's watcher list\n            // this is a somewhat expensive operation so we skip it\n            // if the vm is being destroyed.\n            if (!this.vm._isBeingDestroyed) {\n                remove(this.vm._watchers, this);\n            }\n            var i = this.deps.length;\n            while (i--) {\n                this$1.deps[i].removeSub(this$1);\n            }\n            this.active = false;\n        }\n    };\n\n    /**\n     * Recursively traverse an object to evoke all converted\n     * getters, so that every nested property inside the object\n     * is collected as a \"deep\" dependency.\n     */\n    var seenObjects = new _Set();\n    function traverse (val) {\n        seenObjects.clear();\n        _traverse(val, seenObjects);\n    }\n\n    function _traverse (val, seen) {\n        var i, keys;\n        var isA = Array.isArray(val);\n        if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\n            return\n        }\n        if (val.__ob__) {\n            var depId = val.__ob__.dep.id;\n            if (seen.has(depId)) {\n                return\n            }\n            seen.add(depId);\n        }\n        if (isA) {\n            i = val.length;\n            while (i--) { _traverse(val[i], seen); }\n        } else {\n            keys = Object.keys(val);\n            i = keys.length;\n            while (i--) { _traverse(val[keys[i]], seen); }\n        }\n    }\n\n    /*  */\n\n    var sharedPropertyDefinition = {\n        enumerable: true,\n        configurable: true,\n        get: noop,\n        set: noop\n    };\n\n    function proxy (target, sourceKey, key) {\n        sharedPropertyDefinition.get = function proxyGetter () {\n            return this[sourceKey][key]\n        };\n        sharedPropertyDefinition.set = function proxySetter (val) {\n            this[sourceKey][key] = val;\n        };\n        Object.defineProperty(target, key, sharedPropertyDefinition);\n    }\n\n    function initState (vm) {\n        vm._watchers = [];\n        var opts = vm.$options;\n        if (opts.props) { initProps(vm, opts.props); }\n        if (opts.methods) { initMethods(vm, opts.methods); }\n        if (opts.data) {\n            initData(vm);\n        } else {\n            observe(vm._data = {}, true /* asRootData */);\n        }\n        if (opts.computed) { initComputed(vm, opts.computed); }\n        if (opts.watch && opts.watch !== nativeWatch) {\n            initWatch(vm, opts.watch);\n        }\n    }\n\n    function checkOptionType (vm, name) {\n        var option = vm.$options[name];\n        if (!isPlainObject(option)) {\n            warn(\n                (\"component option \\\"\" + name + \"\\\" should be an object.\"),\n                vm\n            );\n        }\n    }\n\n    function initProps (vm, propsOptions) {\n        var propsData = vm.$options.propsData || {};\n        var props = vm._props = {};\n        // cache prop keys so that future props updates can iterate using Array\n        // instead of dynamic object key enumeration.\n        var keys = vm.$options._propKeys = [];\n        var isRoot = !vm.$parent;\n        // root instance props should be converted\n        observerState.shouldConvert = isRoot;\n        var loop = function ( key ) {\n            keys.push(key);\n            var value = validateProp(key, propsOptions, propsData, vm);\n            /* istanbul ignore else */\n            {\n                if (isReservedAttribute(key) || config.isReservedAttr(key)) {\n                    warn(\n                        (\"\\\"\" + key + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n                        vm\n                    );\n                }\n                defineReactive$$1(props, key, value, function () {\n                    if (vm.$parent && !isUpdatingChildComponent) {\n                        warn(\n                            \"Avoid mutating a prop directly since the value will be \" +\n                            \"overwritten whenever the parent component re-renders. \" +\n                            \"Instead, use a data or computed property based on the prop's \" +\n                            \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n                            vm\n                        );\n                    }\n                });\n            }\n            // static props are already proxied on the component's prototype\n            // during Vue.extend(). We only need to proxy props defined at\n            // instantiation here.\n            if (!(key in vm)) {\n                proxy(vm, \"_props\", key);\n            }\n        };\n\n        for (var key in propsOptions) loop( key );\n        observerState.shouldConvert = true;\n    }\n\n    function initData (vm) {\n        var data = vm.$options.data;\n        data = vm._data = typeof data === 'function'\n            ? getData(data, vm)\n            : data || {};\n        if (!isPlainObject(data)) {\n            data = {};\n            \"development\" !== 'production' && warn(\n                'data functions should return an object:\\n' +\n                'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n                vm\n            );\n        }\n        // proxy data on instance\n        var keys = Object.keys(data);\n        var props = vm.$options.props;\n        var methods = vm.$options.methods;\n        var i = keys.length;\n        while (i--) {\n            var key = keys[i];\n            {\n                if (methods && hasOwn(methods, key)) {\n                    warn(\n                        (\"method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n                        vm\n                    );\n                }\n            }\n            if (props && hasOwn(props, key)) {\n                \"development\" !== 'production' && warn(\n                    \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n                    \"Use prop default value instead.\",\n                    vm\n                );\n            } else if (!isReserved(key)) {\n                proxy(vm, \"_data\", key);\n            }\n        }\n        // observe data\n        observe(data, true /* asRootData */);\n    }\n\n    function getData (data, vm) {\n        try {\n            return data.call(vm)\n        } catch (e) {\n            handleError(e, vm, \"data()\");\n            return {}\n        }\n    }\n\n    var computedWatcherOptions = { lazy: true };\n\n    function initComputed (vm, computed) {\n        \"development\" !== 'production' && checkOptionType(vm, 'computed');\n        var watchers = vm._computedWatchers = Object.create(null);\n\n        for (var key in computed) {\n            var userDef = computed[key];\n            var getter = typeof userDef === 'function' ? userDef : userDef.get;\n            if (\"development\" !== 'production' && getter == null) {\n                warn(\n                    (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n                    vm\n                );\n            }\n            // create internal watcher for the computed property.\n            watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);\n\n            // component-defined computed properties are already defined on the\n            // component prototype. We only need to define computed properties defined\n            // at instantiation here.\n            if (!(key in vm)) {\n                defineComputed(vm, key, userDef);\n            } else {\n                if (key in vm.$data) {\n                    warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n                } else if (vm.$options.props && key in vm.$options.props) {\n                    warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n                }\n            }\n        }\n    }\n\n    function defineComputed (target, key, userDef) {\n        if (typeof userDef === 'function') {\n            sharedPropertyDefinition.get = createComputedGetter(key);\n            sharedPropertyDefinition.set = noop;\n        } else {\n            sharedPropertyDefinition.get = userDef.get\n                ? userDef.cache !== false\n                ? createComputedGetter(key)\n                : userDef.get\n                : noop;\n            sharedPropertyDefinition.set = userDef.set\n                ? userDef.set\n                : noop;\n        }\n        if (\"development\" !== 'production' &&\n            sharedPropertyDefinition.set === noop) {\n            sharedPropertyDefinition.set = function () {\n                warn(\n                    (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n                    this\n                );\n            };\n        }\n        Object.defineProperty(target, key, sharedPropertyDefinition);\n    }\n\n    function createComputedGetter (key) {\n        return function computedGetter () {\n            var watcher = this._computedWatchers && this._computedWatchers[key];\n            if (watcher) {\n                if (watcher.dirty) {\n                    watcher.evaluate();\n                }\n                if (Dep.target) {\n                    watcher.depend();\n                }\n                return watcher.value\n            }\n        }\n    }\n\n    function initMethods (vm, methods) {\n        \"development\" !== 'production' && checkOptionType(vm, 'methods');\n        var props = vm.$options.props;\n        for (var key in methods) {\n            vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n            {\n                if (methods[key] == null) {\n                    warn(\n                        \"method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n                        \"Did you reference the function correctly?\",\n                        vm\n                    );\n                }\n                if (props && hasOwn(props, key)) {\n                    warn(\n                        (\"method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n                        vm\n                    );\n                }\n            }\n        }\n    }\n\n    function initWatch (vm, watch) {\n        \"development\" !== 'production' && checkOptionType(vm, 'watch');\n        for (var key in watch) {\n            var handler = watch[key];\n            if (Array.isArray(handler)) {\n                for (var i = 0; i < handler.length; i++) {\n                    createWatcher(vm, key, handler[i]);\n                }\n            } else {\n                createWatcher(vm, key, handler);\n            }\n        }\n    }\n\n    function createWatcher (\n        vm,\n        keyOrFn,\n        handler,\n        options\n    ) {\n        if (isPlainObject(handler)) {\n            options = handler;\n            handler = handler.handler;\n        }\n        if (typeof handler === 'string') {\n            handler = vm[handler];\n        }\n        return vm.$watch(keyOrFn, handler, options)\n    }\n\n    function stateMixin (Vue) {\n        // flow somehow has problems with directly declared definition object\n        // when using Object.defineProperty, so we have to procedurally build up\n        // the object here.\n        var dataDef = {};\n        dataDef.get = function () { return this._data };\n        var propsDef = {};\n        propsDef.get = function () { return this._props };\n        {\n            dataDef.set = function (newData) {\n                warn(\n                    'Avoid replacing instance root $data. ' +\n                    'Use nested data properties instead.',\n                    this\n                );\n            };\n            propsDef.set = function () {\n                warn(\"$props is readonly.\", this);\n            };\n        }\n        Object.defineProperty(Vue.prototype, '$data', dataDef);\n        Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n        Vue.prototype.$set = set;\n        Vue.prototype.$delete = del;\n\n        Vue.prototype.$watch = function (\n            expOrFn,\n            cb,\n            options\n        ) {\n            var vm = this;\n            if (isPlainObject(cb)) {\n                return createWatcher(vm, expOrFn, cb, options)\n            }\n            options = options || {};\n            options.user = true;\n            var watcher = new Watcher(vm, expOrFn, cb, options);\n            if (options.immediate) {\n                cb.call(vm, watcher.value);\n            }\n            return function unwatchFn () {\n                watcher.teardown();\n            }\n        };\n    }\n\n    /*  */\n\n    function initProvide (vm) {\n        var provide = vm.$options.provide;\n        if (provide) {\n            vm._provided = typeof provide === 'function'\n                ? provide.call(vm)\n                : provide;\n        }\n    }\n\n    function initInjections (vm) {\n        var result = resolveInject(vm.$options.inject, vm);\n        if (result) {\n            observerState.shouldConvert = false;\n            Object.keys(result).forEach(function (key) {\n                /* istanbul ignore else */\n                {\n                    defineReactive$$1(vm, key, result[key], function () {\n                        warn(\n                            \"Avoid mutating an injected value directly since the changes will be \" +\n                            \"overwritten whenever the provided component re-renders. \" +\n                            \"injection being mutated: \\\"\" + key + \"\\\"\",\n                            vm\n                        );\n                    });\n                }\n            });\n            observerState.shouldConvert = true;\n        }\n    }\n\n    function resolveInject (inject, vm) {\n        if (inject) {\n            // inject is :any because flow is not smart enough to figure out cached\n            var result = Object.create(null);\n            var keys = hasSymbol\n                ? Reflect.ownKeys(inject)\n                : Object.keys(inject);\n\n            for (var i = 0; i < keys.length; i++) {\n                var key = keys[i];\n                var provideKey = inject[key];\n                var source = vm;\n                while (source) {\n                    if (source._provided && provideKey in source._provided) {\n                        result[key] = source._provided[provideKey];\n                        break\n                    }\n                    source = source.$parent;\n                }\n                if (\"development\" !== 'production' && !source) {\n                    warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n                }\n            }\n            return result\n        }\n    }\n\n    /*  */\n\n    function createFunctionalComponent (\n        Ctor,\n        propsData,\n        data,\n        context,\n        children\n    ) {\n        var props = {};\n        var propOptions = Ctor.options.props;\n        if (isDef(propOptions)) {\n            for (var key in propOptions) {\n                props[key] = validateProp(key, propOptions, propsData || {});\n            }\n        } else {\n            if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n            if (isDef(data.props)) { mergeProps(props, data.props); }\n        }\n        // ensure the createElement function in functional components\n        // gets a unique context - this is necessary for correct named slot check\n        var _context = Object.create(context);\n        var h = function (a, b, c, d) { return createElement(_context, a, b, c, d, true); };\n        var vnode = Ctor.options.render.call(null, h, {\n            data: data,\n            props: props,\n            children: children,\n            parent: context,\n            listeners: data.on || {},\n            injections: resolveInject(Ctor.options.inject, context),\n            slots: function () { return resolveSlots(children, context); }\n        });\n        if (vnode instanceof VNode) {\n            vnode.functionalContext = context;\n            vnode.functionalOptions = Ctor.options;\n            if (data.slot) {\n                (vnode.data || (vnode.data = {})).slot = data.slot;\n            }\n        }\n        return vnode\n    }\n\n    function mergeProps (to, from) {\n        for (var key in from) {\n            to[camelize(key)] = from[key];\n        }\n    }\n\n    /*  */\n\n// hooks to be invoked on component VNodes during patch\n    var componentVNodeHooks = {\n        init: function init (\n            vnode,\n            hydrating,\n            parentElm,\n            refElm\n        ) {\n            if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\n                var child = vnode.componentInstance = createComponentInstanceForVnode(\n                    vnode,\n                    activeInstance,\n                    parentElm,\n                    refElm\n                );\n                child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n            } else if (vnode.data.keepAlive) {\n                // kept-alive components, treat as a patch\n                var mountedNode = vnode; // work around flow\n                componentVNodeHooks.prepatch(mountedNode, mountedNode);\n            }\n        },\n\n        prepatch: function prepatch (oldVnode, vnode) {\n            var options = vnode.componentOptions;\n            var child = vnode.componentInstance = oldVnode.componentInstance;\n            updateChildComponent(\n                child,\n                options.propsData, // updated props\n                options.listeners, // updated listeners\n                vnode, // new parent vnode\n                options.children // new children\n            );\n        },\n\n        insert: function insert (vnode) {\n            var context = vnode.context;\n            var componentInstance = vnode.componentInstance;\n            if (!componentInstance._isMounted) {\n                componentInstance._isMounted = true;\n                callHook(componentInstance, 'mounted');\n            }\n            if (vnode.data.keepAlive) {\n                if (context._isMounted) {\n                    // vue-router#1212\n                    // During updates, a kept-alive component's child components may\n                    // change, so directly walking the tree here may call activated hooks\n                    // on incorrect children. Instead we push them into a queue which will\n                    // be processed after the whole patch process ended.\n                    queueActivatedComponent(componentInstance);\n                } else {\n                    activateChildComponent(componentInstance, true /* direct */);\n                }\n            }\n        },\n\n        destroy: function destroy (vnode) {\n            var componentInstance = vnode.componentInstance;\n            if (!componentInstance._isDestroyed) {\n                if (!vnode.data.keepAlive) {\n                    componentInstance.$destroy();\n                } else {\n                    deactivateChildComponent(componentInstance, true /* direct */);\n                }\n            }\n        }\n    };\n\n    var hooksToMerge = Object.keys(componentVNodeHooks);\n\n    function createComponent (\n        Ctor,\n        data,\n        context,\n        children,\n        tag\n    ) {\n        if (isUndef(Ctor)) {\n            return\n        }\n\n        var baseCtor = context.$options._base;\n\n        // plain options object: turn it into a constructor\n        if (isObject(Ctor)) {\n            Ctor = baseCtor.extend(Ctor);\n        }\n\n        // if at this stage it's not a constructor or an async component factory,\n        // reject.\n        if (typeof Ctor !== 'function') {\n            {\n                warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n            }\n            return\n        }\n\n        // async component\n        var asyncFactory;\n        if (isUndef(Ctor.cid)) {\n            asyncFactory = Ctor;\n            Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n            if (Ctor === undefined) {\n                // return a placeholder node for async component, which is rendered\n                // as a comment node but preserves all the raw information for the node.\n                // the information will be used for async server-rendering and hydration.\n                return createAsyncPlaceholder(\n                    asyncFactory,\n                    data,\n                    context,\n                    children,\n                    tag\n                )\n            }\n        }\n\n        data = data || {};\n\n        // resolve constructor options in case global mixins are applied after\n        // component constructor creation\n        resolveConstructorOptions(Ctor);\n\n        // transform component v-model data into props & events\n        if (isDef(data.model)) {\n            transformModel(Ctor.options, data);\n        }\n\n        // extract props\n        var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n        // functional component\n        if (isTrue(Ctor.options.functional)) {\n            return createFunctionalComponent(Ctor, propsData, data, context, children)\n        }\n\n        // extract listeners, since these needs to be treated as\n        // child component listeners instead of DOM listeners\n        var listeners = data.on;\n        // replace with listeners with .native modifier\n        // so it gets processed during parent component patch.\n        data.on = data.nativeOn;\n\n        if (isTrue(Ctor.options.abstract)) {\n            // abstract components do not keep anything\n            // other than props & listeners & slot\n\n            // work around flow\n            var slot = data.slot;\n            data = {};\n            if (slot) {\n                data.slot = slot;\n            }\n        }\n\n        // merge component management hooks onto the placeholder node\n        mergeHooks(data);\n\n        // return a placeholder vnode\n        var name = Ctor.options.name || tag;\n        var vnode = new VNode(\n            (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n            data, undefined, undefined, undefined, context,\n            { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n            asyncFactory\n        );\n        return vnode\n    }\n\n    function createComponentInstanceForVnode (\n        vnode, // we know it's MountedComponentVNode but flow doesn't\n        parent, // activeInstance in lifecycle state\n        parentElm,\n        refElm\n    ) {\n        var vnodeComponentOptions = vnode.componentOptions;\n        var options = {\n            _isComponent: true,\n            parent: parent,\n            propsData: vnodeComponentOptions.propsData,\n            _componentTag: vnodeComponentOptions.tag,\n            _parentVnode: vnode,\n            _parentListeners: vnodeComponentOptions.listeners,\n            _renderChildren: vnodeComponentOptions.children,\n            _parentElm: parentElm || null,\n            _refElm: refElm || null\n        };\n        // check inline-template render functions\n        var inlineTemplate = vnode.data.inlineTemplate;\n        if (isDef(inlineTemplate)) {\n            options.render = inlineTemplate.render;\n            options.staticRenderFns = inlineTemplate.staticRenderFns;\n        }\n        return new vnodeComponentOptions.Ctor(options)\n    }\n\n    function mergeHooks (data) {\n        if (!data.hook) {\n            data.hook = {};\n        }\n        for (var i = 0; i < hooksToMerge.length; i++) {\n            var key = hooksToMerge[i];\n            var fromParent = data.hook[key];\n            var ours = componentVNodeHooks[key];\n            data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n        }\n    }\n\n    function mergeHook$1 (one, two) {\n        return function (a, b, c, d) {\n            one(a, b, c, d);\n            two(a, b, c, d);\n        }\n    }\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\n    function transformModel (options, data) {\n        var prop = (options.model && options.model.prop) || 'value';\n        var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n        var on = data.on || (data.on = {});\n        if (isDef(on[event])) {\n            on[event] = [data.model.callback].concat(on[event]);\n        } else {\n            on[event] = data.model.callback;\n        }\n    }\n\n    /*  */\n\n    var SIMPLE_NORMALIZE = 1;\n    var ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\n    function createElement (\n        context,\n        tag,\n        data,\n        children,\n        normalizationType,\n        alwaysNormalize\n    ) {\n        if (Array.isArray(data) || isPrimitive(data)) {\n            normalizationType = children;\n            children = data;\n            data = undefined;\n        }\n        if (isTrue(alwaysNormalize)) {\n            normalizationType = ALWAYS_NORMALIZE;\n        }\n        return _createElement(context, tag, data, children, normalizationType)\n    }\n\n    function _createElement (\n        context,\n        tag,\n        data,\n        children,\n        normalizationType\n    ) {\n        if (isDef(data) && isDef((data).__ob__)) {\n            \"development\" !== 'production' && warn(\n                \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n                'Always create fresh vnode data objects in each render!',\n                context\n            );\n            return createEmptyVNode()\n        }\n        // object syntax in v-bind\n        if (isDef(data) && isDef(data.is)) {\n            tag = data.is;\n        }\n        if (!tag) {\n            // in case of component :is set to falsy value\n            return createEmptyVNode()\n        }\n        // warn against non-primitive key\n        if (\"development\" !== 'production' &&\n            isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n        ) {\n            warn(\n                'Avoid using non-primitive value as key, ' +\n                'use string/number value instead.',\n                context\n            );\n        }\n        // support single function children as default scoped slot\n        if (Array.isArray(children) &&\n            typeof children[0] === 'function'\n        ) {\n            data = data || {};\n            data.scopedSlots = { default: children[0] };\n            children.length = 0;\n        }\n        if (normalizationType === ALWAYS_NORMALIZE) {\n            children = normalizeChildren(children);\n        } else if (normalizationType === SIMPLE_NORMALIZE) {\n            children = simpleNormalizeChildren(children);\n        }\n        var vnode, ns;\n        if (typeof tag === 'string') {\n            var Ctor;\n            ns = config.getTagNamespace(tag);\n            if (config.isReservedTag(tag)) {\n                // platform built-in elements\n                vnode = new VNode(\n                    config.parsePlatformTagName(tag), data, children,\n                    undefined, undefined, context\n                );\n            } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n                // component\n                vnode = createComponent(Ctor, data, context, children, tag);\n            } else {\n                // unknown or unlisted namespaced elements\n                // check at runtime because it may get assigned a namespace when its\n                // parent normalizes children\n                vnode = new VNode(\n                    tag, data, children,\n                    undefined, undefined, context\n                );\n            }\n        } else {\n            // direct component options / constructor\n            vnode = createComponent(tag, data, context, children);\n        }\n        if (isDef(vnode)) {\n            if (ns) { applyNS(vnode, ns); }\n            return vnode\n        } else {\n            return createEmptyVNode()\n        }\n    }\n\n    function applyNS (vnode, ns) {\n        vnode.ns = ns;\n        if (vnode.tag === 'foreignObject') {\n            // use default namespace inside foreignObject\n            return\n        }\n        if (isDef(vnode.children)) {\n            for (var i = 0, l = vnode.children.length; i < l; i++) {\n                var child = vnode.children[i];\n                if (isDef(child.tag) && isUndef(child.ns)) {\n                    applyNS(child, ns);\n                }\n            }\n        }\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for rendering v-for lists.\n     */\n    function renderList (\n        val,\n        render\n    ) {\n        var ret, i, l, keys, key;\n        if (Array.isArray(val) || typeof val === 'string') {\n            ret = new Array(val.length);\n            for (i = 0, l = val.length; i < l; i++) {\n                ret[i] = render(val[i], i);\n            }\n        } else if (typeof val === 'number') {\n            ret = new Array(val);\n            for (i = 0; i < val; i++) {\n                ret[i] = render(i + 1, i);\n            }\n        } else if (isObject(val)) {\n            keys = Object.keys(val);\n            ret = new Array(keys.length);\n            for (i = 0, l = keys.length; i < l; i++) {\n                key = keys[i];\n                ret[i] = render(val[key], key, i);\n            }\n        }\n        if (isDef(ret)) {\n            (ret)._isVList = true;\n        }\n        return ret\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for rendering <slot>\n     */\n    function renderSlot (\n        name,\n        fallback,\n        props,\n        bindObject\n    ) {\n        var scopedSlotFn = this.$scopedSlots[name];\n        if (scopedSlotFn) { // scoped slot\n            props = props || {};\n            if (bindObject) {\n                props = extend(extend({}, bindObject), props);\n            }\n            return scopedSlotFn(props) || fallback\n        } else {\n            var slotNodes = this.$slots[name];\n            // warn duplicate slot usage\n            if (slotNodes && \"development\" !== 'production') {\n                slotNodes._rendered && warn(\n                    \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n                    \"- this will likely cause render errors.\",\n                    this\n                );\n                slotNodes._rendered = true;\n            }\n            return slotNodes || fallback\n        }\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for resolving filters\n     */\n    function resolveFilter (id) {\n        return resolveAsset(this.$options, 'filters', id, true) || identity\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for checking keyCodes from config.\n     */\n    function checkKeyCodes (\n        eventKeyCode,\n        key,\n        builtInAlias\n    ) {\n        var keyCodes = config.keyCodes[key] || builtInAlias;\n        if (Array.isArray(keyCodes)) {\n            return keyCodes.indexOf(eventKeyCode) === -1\n        } else {\n            return keyCodes !== eventKeyCode\n        }\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n     */\n    function bindObjectProps (\n        data,\n        tag,\n        value,\n        asProp,\n        isSync\n    ) {\n        if (value) {\n            if (!isObject(value)) {\n                \"development\" !== 'production' && warn(\n                    'v-bind without argument expects an Object or Array value',\n                    this\n                );\n            } else {\n                if (Array.isArray(value)) {\n                    value = toObject(value);\n                }\n                var hash;\n                var loop = function ( key ) {\n                    if (\n                        key === 'class' ||\n                        key === 'style' ||\n                        isReservedAttribute(key)\n                    ) {\n                        hash = data;\n                    } else {\n                        var type = data.attrs && data.attrs.type;\n                        hash = asProp || config.mustUseProp(tag, type, key)\n                            ? data.domProps || (data.domProps = {})\n                            : data.attrs || (data.attrs = {});\n                    }\n                    if (!(key in hash)) {\n                        hash[key] = value[key];\n\n                        if (isSync) {\n                            var on = data.on || (data.on = {});\n                            on[(\"update:\" + key)] = function ($event) {\n                                value[key] = $event;\n                            };\n                        }\n                    }\n                };\n\n                for (var key in value) loop( key );\n            }\n        }\n        return data\n    }\n\n    /*  */\n\n    /**\n     * Runtime helper for rendering static trees.\n     */\n    function renderStatic (\n        index,\n        isInFor\n    ) {\n        var tree = this._staticTrees[index];\n        // if has already-rendered static tree and not inside v-for,\n        // we can reuse the same tree by doing a shallow clone.\n        if (tree && !isInFor) {\n            return Array.isArray(tree)\n                ? cloneVNodes(tree)\n                : cloneVNode(tree)\n        }\n        // otherwise, render a fresh tree.\n        tree = this._staticTrees[index] =\n            this.$options.staticRenderFns[index].call(this._renderProxy);\n        markStatic(tree, (\"__static__\" + index), false);\n        return tree\n    }\n\n    /**\n     * Runtime helper for v-once.\n     * Effectively it means marking the node as static with a unique key.\n     */\n    function markOnce (\n        tree,\n        index,\n        key\n    ) {\n        markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n        return tree\n    }\n\n    function markStatic (\n        tree,\n        key,\n        isOnce\n    ) {\n        if (Array.isArray(tree)) {\n            for (var i = 0; i < tree.length; i++) {\n                if (tree[i] && typeof tree[i] !== 'string') {\n                    markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n                }\n            }\n        } else {\n            markStaticNode(tree, key, isOnce);\n        }\n    }\n\n    function markStaticNode (node, key, isOnce) {\n        node.isStatic = true;\n        node.key = key;\n        node.isOnce = isOnce;\n    }\n\n    /*  */\n\n    function bindObjectListeners (data, value) {\n        if (value) {\n            if (!isPlainObject(value)) {\n                \"development\" !== 'production' && warn(\n                    'v-on without argument expects an Object value',\n                    this\n                );\n            } else {\n                var on = data.on = data.on ? extend({}, data.on) : {};\n                for (var key in value) {\n                    var existing = on[key];\n                    var ours = value[key];\n                    on[key] = existing ? [].concat(ours, existing) : ours;\n                }\n            }\n        }\n        return data\n    }\n\n    /*  */\n\n    function initRender (vm) {\n        vm._vnode = null; // the root of the child tree\n        vm._staticTrees = null;\n        var parentVnode = vm.$vnode = vm.$options._parentVnode; // the placeholder node in parent tree\n        var renderContext = parentVnode && parentVnode.context;\n        vm.$slots = resolveSlots(vm.$options._renderChildren, renderContext);\n        vm.$scopedSlots = emptyObject;\n        // bind the createElement fn to this instance\n        // so that we get proper render context inside it.\n        // args order: tag, data, children, normalizationType, alwaysNormalize\n        // internal version is used by render functions compiled from templates\n        vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n        // normalization is always applied for the public version, used in\n        // user-written render functions.\n        vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n        // $attrs & $listeners are exposed for easier HOC creation.\n        // they need to be reactive so that HOCs using them are always updated\n        var parentData = parentVnode && parentVnode.data;\n        /* istanbul ignore else */\n        {\n            defineReactive$$1(vm, '$attrs', parentData && parentData.attrs, function () {\n                !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n            }, true);\n            defineReactive$$1(vm, '$listeners', vm.$options._parentListeners, function () {\n                !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n            }, true);\n        }\n    }\n\n    function renderMixin (Vue) {\n        Vue.prototype.$nextTick = function (fn) {\n            return nextTick(fn, this)\n        };\n\n        Vue.prototype._render = function () {\n            var vm = this;\n            var ref = vm.$options;\n            var render = ref.render;\n            var staticRenderFns = ref.staticRenderFns;\n            var _parentVnode = ref._parentVnode;\n\n            if (vm._isMounted) {\n                // clone slot nodes on re-renders\n                for (var key in vm.$slots) {\n                    vm.$slots[key] = cloneVNodes(vm.$slots[key]);\n                }\n            }\n\n            vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;\n\n            if (staticRenderFns && !vm._staticTrees) {\n                vm._staticTrees = [];\n            }\n            // set parent vnode. this allows render functions to have access\n            // to the data on the placeholder node.\n            vm.$vnode = _parentVnode;\n            // render self\n            var vnode;\n            try {\n                vnode = render.call(vm._renderProxy, vm.$createElement);\n            } catch (e) {\n                handleError(e, vm, \"render function\");\n                // return error render result,\n                // or previous vnode to prevent render error causing blank component\n                /* istanbul ignore else */\n                {\n                    vnode = vm.$options.renderError\n                        ? vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e)\n                        : vm._vnode;\n                }\n            }\n            // return empty vnode in case the render function errored out\n            if (!(vnode instanceof VNode)) {\n                if (\"development\" !== 'production' && Array.isArray(vnode)) {\n                    warn(\n                        'Multiple root nodes returned from render function. Render function ' +\n                        'should return a single root node.',\n                        vm\n                    );\n                }\n                vnode = createEmptyVNode();\n            }\n            // set parent\n            vnode.parent = _parentVnode;\n            return vnode\n        };\n\n        // internal render helpers.\n        // these are exposed on the instance prototype to reduce generated render\n        // code size.\n        Vue.prototype._o = markOnce;\n        Vue.prototype._n = toNumber;\n        Vue.prototype._s = toString;\n        Vue.prototype._l = renderList;\n        Vue.prototype._t = renderSlot;\n        Vue.prototype._q = looseEqual;\n        Vue.prototype._i = looseIndexOf;\n        Vue.prototype._m = renderStatic;\n        Vue.prototype._f = resolveFilter;\n        Vue.prototype._k = checkKeyCodes;\n        Vue.prototype._b = bindObjectProps;\n        Vue.prototype._v = createTextVNode;\n        Vue.prototype._e = createEmptyVNode;\n        Vue.prototype._u = resolveScopedSlots;\n        Vue.prototype._g = bindObjectListeners;\n    }\n\n    /*  */\n\n    var uid$1 = 0;\n\n    function initMixin (Vue) {\n        Vue.prototype._init = function (options) {\n            var vm = this;\n            // a uid\n            vm._uid = uid$1++;\n\n            var startTag, endTag;\n            /* istanbul ignore if */\n            if (\"development\" !== 'production' && config.performance && mark) {\n                startTag = \"vue-perf-init:\" + (vm._uid);\n                endTag = \"vue-perf-end:\" + (vm._uid);\n                mark(startTag);\n            }\n\n            // a flag to avoid this being observed\n            vm._isVue = true;\n            // merge options\n            if (options && options._isComponent) {\n                // optimize internal component instantiation\n                // since dynamic options merging is pretty slow, and none of the\n                // internal component options needs special treatment.\n                initInternalComponent(vm, options);\n            } else {\n                vm.$options = mergeOptions(\n                    resolveConstructorOptions(vm.constructor),\n                    options || {},\n                    vm\n                );\n            }\n            /* istanbul ignore else */\n            {\n                initProxy(vm);\n            }\n            // expose real self\n            vm._self = vm;\n            initLifecycle(vm);\n            initEvents(vm);\n            initRender(vm);\n            callHook(vm, 'beforeCreate');\n            initInjections(vm); // resolve injections before data/props\n            initState(vm);\n            initProvide(vm); // resolve provide after data/props\n            callHook(vm, 'created');\n\n            /* istanbul ignore if */\n            if (\"development\" !== 'production' && config.performance && mark) {\n                vm._name = formatComponentName(vm, false);\n                mark(endTag);\n                measure(((vm._name) + \" init\"), startTag, endTag);\n            }\n\n            if (vm.$options.el) {\n                vm.$mount(vm.$options.el);\n            }\n        };\n    }\n\n    function initInternalComponent (vm, options) {\n        var opts = vm.$options = Object.create(vm.constructor.options);\n        // doing this because it's faster than dynamic enumeration.\n        opts.parent = options.parent;\n        opts.propsData = options.propsData;\n        opts._parentVnode = options._parentVnode;\n        opts._parentListeners = options._parentListeners;\n        opts._renderChildren = options._renderChildren;\n        opts._componentTag = options._componentTag;\n        opts._parentElm = options._parentElm;\n        opts._refElm = options._refElm;\n        if (options.render) {\n            opts.render = options.render;\n            opts.staticRenderFns = options.staticRenderFns;\n        }\n    }\n\n    function resolveConstructorOptions (Ctor) {\n        var options = Ctor.options;\n        if (Ctor.super) {\n            var superOptions = resolveConstructorOptions(Ctor.super);\n            var cachedSuperOptions = Ctor.superOptions;\n            if (superOptions !== cachedSuperOptions) {\n                // super option changed,\n                // need to resolve new options.\n                Ctor.superOptions = superOptions;\n                // check if there are any late-modified/attached options (#4976)\n                var modifiedOptions = resolveModifiedOptions(Ctor);\n                // update base extend options\n                if (modifiedOptions) {\n                    extend(Ctor.extendOptions, modifiedOptions);\n                }\n                options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n                if (options.name) {\n                    options.components[options.name] = Ctor;\n                }\n            }\n        }\n        return options\n    }\n\n    function resolveModifiedOptions (Ctor) {\n        var modified;\n        var latest = Ctor.options;\n        var extended = Ctor.extendOptions;\n        var sealed = Ctor.sealedOptions;\n        for (var key in latest) {\n            if (latest[key] !== sealed[key]) {\n                if (!modified) { modified = {}; }\n                modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n            }\n        }\n        return modified\n    }\n\n    function dedupe (latest, extended, sealed) {\n        // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n        // between merges\n        if (Array.isArray(latest)) {\n            var res = [];\n            sealed = Array.isArray(sealed) ? sealed : [sealed];\n            extended = Array.isArray(extended) ? extended : [extended];\n            for (var i = 0; i < latest.length; i++) {\n                // push original options and not sealed options to exclude duplicated options\n                if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n                    res.push(latest[i]);\n                }\n            }\n            return res\n        } else {\n            return latest\n        }\n    }\n\n    function Vue$3 (options) {\n        if (\"development\" !== 'production' &&\n            !(this instanceof Vue$3)\n        ) {\n            warn('Vue is a constructor and should be called with the `new` keyword');\n        }\n        this._init(options);\n    }\n\n    initMixin(Vue$3);\n    stateMixin(Vue$3);\n    eventsMixin(Vue$3);\n    lifecycleMixin(Vue$3);\n    renderMixin(Vue$3);\n\n    /*  */\n\n    function initUse (Vue) {\n        Vue.use = function (plugin) {\n            var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n            if (installedPlugins.indexOf(plugin) > -1) {\n                return this\n            }\n\n            // additional parameters\n            var args = toArray(arguments, 1);\n            args.unshift(this);\n            if (typeof plugin.install === 'function') {\n                plugin.install.apply(plugin, args);\n            } else if (typeof plugin === 'function') {\n                plugin.apply(null, args);\n            }\n            installedPlugins.push(plugin);\n            return this\n        };\n    }\n\n    /*  */\n\n    function initMixin$1 (Vue) {\n        Vue.mixin = function (mixin) {\n            this.options = mergeOptions(this.options, mixin);\n            return this\n        };\n    }\n\n    /*  */\n\n    function initExtend (Vue) {\n        /**\n         * Each instance constructor, including Vue, has a unique\n         * cid. This enables us to create wrapped \"child\n         * constructors\" for prototypal inheritance and cache them.\n         */\n        Vue.cid = 0;\n        var cid = 1;\n\n        /**\n         * Class inheritance\n         */\n        Vue.extend = function (extendOptions) {\n            extendOptions = extendOptions || {};\n            var Super = this;\n            var SuperId = Super.cid;\n            var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n            if (cachedCtors[SuperId]) {\n                return cachedCtors[SuperId]\n            }\n\n            var name = extendOptions.name || Super.options.name;\n            {\n                if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n                    warn(\n                        'Invalid component name: \"' + name + '\". Component names ' +\n                        'can only contain alphanumeric characters and the hyphen, ' +\n                        'and must start with a letter.'\n                    );\n                }\n            }\n\n            var Sub = function VueComponent (options) {\n                this._init(options);\n            };\n            Sub.prototype = Object.create(Super.prototype);\n            Sub.prototype.constructor = Sub;\n            Sub.cid = cid++;\n            Sub.options = mergeOptions(\n                Super.options,\n                extendOptions\n            );\n            Sub['super'] = Super;\n\n            // For props and computed properties, we define the proxy getters on\n            // the Vue instances at extension time, on the extended prototype. This\n            // avoids Object.defineProperty calls for each instance created.\n            if (Sub.options.props) {\n                initProps$1(Sub);\n            }\n            if (Sub.options.computed) {\n                initComputed$1(Sub);\n            }\n\n            // allow further extension/mixin/plugin usage\n            Sub.extend = Super.extend;\n            Sub.mixin = Super.mixin;\n            Sub.use = Super.use;\n\n            // create asset registers, so extended classes\n            // can have their private assets too.\n            ASSET_TYPES.forEach(function (type) {\n                Sub[type] = Super[type];\n            });\n            // enable recursive self-lookup\n            if (name) {\n                Sub.options.components[name] = Sub;\n            }\n\n            // keep a reference to the super options at extension time.\n            // later at instantiation we can check if Super's options have\n            // been updated.\n            Sub.superOptions = Super.options;\n            Sub.extendOptions = extendOptions;\n            Sub.sealedOptions = extend({}, Sub.options);\n\n            // cache constructor\n            cachedCtors[SuperId] = Sub;\n            return Sub\n        };\n    }\n\n    function initProps$1 (Comp) {\n        var props = Comp.options.props;\n        for (var key in props) {\n            proxy(Comp.prototype, \"_props\", key);\n        }\n    }\n\n    function initComputed$1 (Comp) {\n        var computed = Comp.options.computed;\n        for (var key in computed) {\n            defineComputed(Comp.prototype, key, computed[key]);\n        }\n    }\n\n    /*  */\n\n    function initAssetRegisters (Vue) {\n        /**\n         * Create asset registration methods.\n         */\n        ASSET_TYPES.forEach(function (type) {\n            Vue[type] = function (\n                id,\n                definition\n            ) {\n                if (!definition) {\n                    return this.options[type + 's'][id]\n                } else {\n                    /* istanbul ignore if */\n                    {\n                        if (type === 'component' && config.isReservedTag(id)) {\n                            warn(\n                                'Do not use built-in or reserved HTML elements as component ' +\n                                'id: ' + id\n                            );\n                        }\n                    }\n                    if (type === 'component' && isPlainObject(definition)) {\n                        definition.name = definition.name || id;\n                        definition = this.options._base.extend(definition);\n                    }\n                    if (type === 'directive' && typeof definition === 'function') {\n                        definition = { bind: definition, update: definition };\n                    }\n                    this.options[type + 's'][id] = definition;\n                    return definition\n                }\n            };\n        });\n    }\n\n    /*  */\n\n    var patternTypes = [String, RegExp, Array];\n\n    function getComponentName (opts) {\n        return opts && (opts.Ctor.options.name || opts.tag)\n    }\n\n    function matches (pattern, name) {\n        if (Array.isArray(pattern)) {\n            return pattern.indexOf(name) > -1\n        } else if (typeof pattern === 'string') {\n            return pattern.split(',').indexOf(name) > -1\n        } else if (isRegExp(pattern)) {\n            return pattern.test(name)\n        }\n        /* istanbul ignore next */\n        return false\n    }\n\n    function pruneCache (cache, current, filter) {\n        for (var key in cache) {\n            var cachedNode = cache[key];\n            if (cachedNode) {\n                var name = getComponentName(cachedNode.componentOptions);\n                if (name && !filter(name)) {\n                    if (cachedNode !== current) {\n                        pruneCacheEntry(cachedNode);\n                    }\n                    cache[key] = null;\n                }\n            }\n        }\n    }\n\n    function pruneCacheEntry (vnode) {\n        if (vnode) {\n            vnode.componentInstance.$destroy();\n        }\n    }\n\n    var KeepAlive = {\n        name: 'keep-alive',\n        abstract: true,\n\n        props: {\n            include: patternTypes,\n            exclude: patternTypes\n        },\n\n        created: function created () {\n            this.cache = Object.create(null);\n        },\n\n        destroyed: function destroyed () {\n            var this$1 = this;\n\n            for (var key in this$1.cache) {\n                pruneCacheEntry(this$1.cache[key]);\n            }\n        },\n\n        watch: {\n            include: function include (val) {\n                pruneCache(this.cache, this._vnode, function (name) { return matches(val, name); });\n            },\n            exclude: function exclude (val) {\n                pruneCache(this.cache, this._vnode, function (name) { return !matches(val, name); });\n            }\n        },\n\n        render: function render () {\n            var vnode = getFirstComponentChild(this.$slots.default);\n            var componentOptions = vnode && vnode.componentOptions;\n            if (componentOptions) {\n                // check pattern\n                var name = getComponentName(componentOptions);\n                if (name && (\n                        (this.include && !matches(this.include, name)) ||\n                        (this.exclude && matches(this.exclude, name))\n                    )) {\n                    return vnode\n                }\n                var key = vnode.key == null\n                    // same constructor may get registered as different local components\n                    // so cid alone is not enough (#3269)\n                    ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n                    : vnode.key;\n                if (this.cache[key]) {\n                    vnode.componentInstance = this.cache[key].componentInstance;\n                } else {\n                    this.cache[key] = vnode;\n                }\n                vnode.data.keepAlive = true;\n            }\n            return vnode\n        }\n    };\n\n    var builtInComponents = {\n        KeepAlive: KeepAlive\n    };\n\n    /*  */\n\n    function initGlobalAPI (Vue) {\n        // config\n        var configDef = {};\n        configDef.get = function () { return config; };\n        {\n            configDef.set = function () {\n                warn(\n                    'Do not replace the Vue.config object, set individual fields instead.'\n                );\n            };\n        }\n        Object.defineProperty(Vue, 'config', configDef);\n\n        // exposed util methods.\n        // NOTE: these are not considered part of the public API - avoid relying on\n        // them unless you are aware of the risk.\n        Vue.util = {\n            warn: warn,\n            extend: extend,\n            mergeOptions: mergeOptions,\n            defineReactive: defineReactive$$1\n        };\n\n        Vue.set = set;\n        Vue.delete = del;\n        Vue.nextTick = nextTick;\n\n        Vue.options = Object.create(null);\n        ASSET_TYPES.forEach(function (type) {\n            Vue.options[type + 's'] = Object.create(null);\n        });\n\n        // this is used to identify the \"base\" constructor to extend all plain-object\n        // components with in Weex's multi-instance scenarios.\n        Vue.options._base = Vue;\n\n        extend(Vue.options.components, builtInComponents);\n\n        initUse(Vue);\n        initMixin$1(Vue);\n        initExtend(Vue);\n        initAssetRegisters(Vue);\n    }\n\n    initGlobalAPI(Vue$3);\n\n    Object.defineProperty(Vue$3.prototype, '$isServer', {\n        get: isServerRendering\n    });\n\n    Object.defineProperty(Vue$3.prototype, '$ssrContext', {\n        get: function get () {\n            /* istanbul ignore next */\n            return this.$vnode && this.$vnode.ssrContext\n        }\n    });\n\n    Vue$3.version = '2.4.2';\n\n    /*  */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\n    var isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\n    var acceptValue = makeMap('input,textarea,option,select');\n    var mustUseProp = function (tag, type, attr) {\n        return (\n            (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n            (attr === 'selected' && tag === 'option') ||\n            (attr === 'checked' && tag === 'input') ||\n            (attr === 'muted' && tag === 'video')\n        )\n    };\n\n    var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\n    var isBooleanAttr = makeMap(\n        'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n        'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n        'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n        'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n        'required,reversed,scoped,seamless,selected,sortable,translate,' +\n        'truespeed,typemustmatch,visible'\n    );\n\n    var xlinkNS = 'http://www.w3.org/1999/xlink';\n\n    var isXlink = function (name) {\n        return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n    };\n\n    var getXlinkProp = function (name) {\n        return isXlink(name) ? name.slice(6, name.length) : ''\n    };\n\n    var isFalsyAttrValue = function (val) {\n        return val == null || val === false\n    };\n\n    /*  */\n\n    function genClassForVnode (vnode) {\n        var data = vnode.data;\n        var parentNode = vnode;\n        var childNode = vnode;\n        while (isDef(childNode.componentInstance)) {\n            childNode = childNode.componentInstance._vnode;\n            if (childNode.data) {\n                data = mergeClassData(childNode.data, data);\n            }\n        }\n        while (isDef(parentNode = parentNode.parent)) {\n            if (parentNode.data) {\n                data = mergeClassData(data, parentNode.data);\n            }\n        }\n        return renderClass(data.staticClass, data.class)\n    }\n\n    function mergeClassData (child, parent) {\n        return {\n            staticClass: concat(child.staticClass, parent.staticClass),\n            class: isDef(child.class)\n                ? [child.class, parent.class]\n                : parent.class\n        }\n    }\n\n    function renderClass (\n        staticClass,\n        dynamicClass\n    ) {\n        if (isDef(staticClass) || isDef(dynamicClass)) {\n            return concat(staticClass, stringifyClass(dynamicClass))\n        }\n        /* istanbul ignore next */\n        return ''\n    }\n\n    function concat (a, b) {\n        return a ? b ? (a + ' ' + b) : a : (b || '')\n    }\n\n    function stringifyClass (value) {\n        if (Array.isArray(value)) {\n            return stringifyArray(value)\n        }\n        if (isObject(value)) {\n            return stringifyObject(value)\n        }\n        if (typeof value === 'string') {\n            return value\n        }\n        /* istanbul ignore next */\n        return ''\n    }\n\n    function stringifyArray (value) {\n        var res = '';\n        var stringified;\n        for (var i = 0, l = value.length; i < l; i++) {\n            if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n                if (res) { res += ' '; }\n                res += stringified;\n            }\n        }\n        return res\n    }\n\n    function stringifyObject (value) {\n        var res = '';\n        for (var key in value) {\n            if (value[key]) {\n                if (res) { res += ' '; }\n                res += key;\n            }\n        }\n        return res\n    }\n\n    /*  */\n\n    var namespaceMap = {\n        svg: 'http://www.w3.org/2000/svg',\n        math: 'http://www.w3.org/1998/Math/MathML'\n    };\n\n    var isHTMLTag = makeMap(\n        'html,body,base,head,link,meta,style,title,' +\n        'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n        'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n        'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n        's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n        'embed,object,param,source,canvas,script,noscript,del,ins,' +\n        'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n        'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n        'output,progress,select,textarea,' +\n        'details,dialog,menu,menuitem,summary,' +\n        'content,element,shadow,template,blockquote,iframe,tfoot'\n    );\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\n    var isSVG = makeMap(\n        'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n        'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n        'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n        true\n    );\n\n    var isPreTag = function (tag) { return tag === 'pre'; };\n\n    var isReservedTag = function (tag) {\n        return isHTMLTag(tag) || isSVG(tag)\n    };\n\n    function getTagNamespace (tag) {\n        if (isSVG(tag)) {\n            return 'svg'\n        }\n        // basic support for MathML\n        // note it doesn't support other MathML elements being component roots\n        if (tag === 'math') {\n            return 'math'\n        }\n    }\n\n    var unknownElementCache = Object.create(null);\n    function isUnknownElement (tag) {\n        /* istanbul ignore if */\n        if (!inBrowser) {\n            return true\n        }\n        if (isReservedTag(tag)) {\n            return false\n        }\n        tag = tag.toLowerCase();\n        /* istanbul ignore if */\n        if (unknownElementCache[tag] != null) {\n            return unknownElementCache[tag]\n        }\n        var el = document.createElement(tag);\n        if (tag.indexOf('-') > -1) {\n            // http://stackoverflow.com/a/28210364/1070244\n            return (unknownElementCache[tag] = (\n                el.constructor === window.HTMLUnknownElement ||\n                el.constructor === window.HTMLElement\n            ))\n        } else {\n            return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n        }\n    }\n\n    /*  */\n\n    /**\n     * Query an element selector if it's not an element already.\n     */\n    function query (el) {\n        if (typeof el === 'string') {\n            var selected = document.querySelector(el);\n            if (!selected) {\n                \"development\" !== 'production' && warn(\n                    'Cannot find element: ' + el\n                );\n                return document.createElement('div')\n            }\n            return selected\n        } else {\n            return el\n        }\n    }\n\n    /*  */\n\n    function createElement$1 (tagName, vnode) {\n        var elm = document.createElement(tagName);\n        if (tagName !== 'select') {\n            return elm\n        }\n        // false or null will remove the attribute but undefined will not\n        if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n            elm.setAttribute('multiple', 'multiple');\n        }\n        return elm\n    }\n\n    function createElementNS (namespace, tagName) {\n        return document.createElementNS(namespaceMap[namespace], tagName)\n    }\n\n    function createTextNode (text) {\n        return document.createTextNode(text)\n    }\n\n    function createComment (text) {\n        return document.createComment(text)\n    }\n\n    function insertBefore (parentNode, newNode, referenceNode) {\n        parentNode.insertBefore(newNode, referenceNode);\n    }\n\n    function removeChild (node, child) {\n        node.removeChild(child);\n    }\n\n    function appendChild (node, child) {\n        node.appendChild(child);\n    }\n\n    function parentNode (node) {\n        return node.parentNode\n    }\n\n    function nextSibling (node) {\n        return node.nextSibling\n    }\n\n    function tagName (node) {\n        return node.tagName\n    }\n\n    function setTextContent (node, text) {\n        node.textContent = text;\n    }\n\n    function setAttribute (node, key, val) {\n        node.setAttribute(key, val);\n    }\n\n\n    var nodeOps = Object.freeze({\n        createElement: createElement$1,\n        createElementNS: createElementNS,\n        createTextNode: createTextNode,\n        createComment: createComment,\n        insertBefore: insertBefore,\n        removeChild: removeChild,\n        appendChild: appendChild,\n        parentNode: parentNode,\n        nextSibling: nextSibling,\n        tagName: tagName,\n        setTextContent: setTextContent,\n        setAttribute: setAttribute\n    });\n\n    /*  */\n\n    var ref = {\n        create: function create (_, vnode) {\n            registerRef(vnode);\n        },\n        update: function update (oldVnode, vnode) {\n            if (oldVnode.data.ref !== vnode.data.ref) {\n                registerRef(oldVnode, true);\n                registerRef(vnode);\n            }\n        },\n        destroy: function destroy (vnode) {\n            registerRef(vnode, true);\n        }\n    };\n\n    function registerRef (vnode, isRemoval) {\n        var key = vnode.data.ref;\n        if (!key) { return }\n\n        var vm = vnode.context;\n        var ref = vnode.componentInstance || vnode.elm;\n        var refs = vm.$refs;\n        if (isRemoval) {\n            if (Array.isArray(refs[key])) {\n                remove(refs[key], ref);\n            } else if (refs[key] === ref) {\n                refs[key] = undefined;\n            }\n        } else {\n            if (vnode.data.refInFor) {\n                if (!Array.isArray(refs[key])) {\n                    refs[key] = [ref];\n                } else if (refs[key].indexOf(ref) < 0) {\n                    // $flow-disable-line\n                    refs[key].push(ref);\n                }\n            } else {\n                refs[key] = ref;\n            }\n        }\n    }\n\n    /**\n     * Virtual DOM patching algorithm based on Snabbdom by\n     * Simon Friis Vindum (@paldepind)\n     * Licensed under the MIT License\n     * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n     *\n     * modified by Evan You (@yyx990803)\n     *\n\n     /*\n     * Not type-checking this because this file is perf-critical and the cost\n     * of making flow understand it is not worth it.\n     */\n\n    var emptyNode = new VNode('', {}, []);\n\n    var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\n    function sameVnode (a, b) {\n        return (\n            a.key === b.key && (\n                (\n                    a.tag === b.tag &&\n                    a.isComment === b.isComment &&\n                    isDef(a.data) === isDef(b.data) &&\n                    sameInputType(a, b)\n                ) || (\n                    isTrue(a.isAsyncPlaceholder) &&\n                    a.asyncFactory === b.asyncFactory &&\n                    isUndef(b.asyncFactory.error)\n                )\n            )\n        )\n    }\n\n// Some browsers do not support dynamically changing type for <input>\n// so they need to be treated as different nodes\n    function sameInputType (a, b) {\n        if (a.tag !== 'input') { return true }\n        var i;\n        var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n        var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n        return typeA === typeB\n    }\n\n    function createKeyToOldIdx (children, beginIdx, endIdx) {\n        var i, key;\n        var map = {};\n        for (i = beginIdx; i <= endIdx; ++i) {\n            key = children[i].key;\n            if (isDef(key)) { map[key] = i; }\n        }\n        return map\n    }\n\n    function createPatchFunction (backend) {\n        var i, j;\n        var cbs = {};\n\n        var modules = backend.modules;\n        var nodeOps = backend.nodeOps;\n\n        for (i = 0; i < hooks.length; ++i) {\n            cbs[hooks[i]] = [];\n            for (j = 0; j < modules.length; ++j) {\n                if (isDef(modules[j][hooks[i]])) {\n                    cbs[hooks[i]].push(modules[j][hooks[i]]);\n                }\n            }\n        }\n\n        function emptyNodeAt (elm) {\n            return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n        }\n\n        function createRmCb (childElm, listeners) {\n            function remove$$1 () {\n                if (--remove$$1.listeners === 0) {\n                    removeNode(childElm);\n                }\n            }\n            remove$$1.listeners = listeners;\n            return remove$$1\n        }\n\n        function removeNode (el) {\n            var parent = nodeOps.parentNode(el);\n            // element may have already been removed due to v-html / v-text\n            if (isDef(parent)) {\n                nodeOps.removeChild(parent, el);\n            }\n        }\n\n        var inPre = 0;\n        function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {\n            vnode.isRootInsert = !nested; // for transition enter check\n            if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n                return\n            }\n\n            var data = vnode.data;\n            var children = vnode.children;\n            var tag = vnode.tag;\n            if (isDef(tag)) {\n                {\n                    if (data && data.pre) {\n                        inPre++;\n                    }\n                    if (\n                        !inPre &&\n                        !vnode.ns &&\n                        !(config.ignoredElements.length && config.ignoredElements.indexOf(tag) > -1) &&\n                        config.isUnknownElement(tag)\n                    ) {\n                        warn(\n                            'Unknown custom element: <' + tag + '> - did you ' +\n                            'register the component correctly? For recursive components, ' +\n                            'make sure to provide the \"name\" option.',\n                            vnode.context\n                        );\n                    }\n                }\n                vnode.elm = vnode.ns\n                    ? nodeOps.createElementNS(vnode.ns, tag)\n                    : nodeOps.createElement(tag, vnode);\n                setScope(vnode);\n\n                /* istanbul ignore if */\n                {\n                    createChildren(vnode, children, insertedVnodeQueue);\n                    if (isDef(data)) {\n                        invokeCreateHooks(vnode, insertedVnodeQueue);\n                    }\n                    insert(parentElm, vnode.elm, refElm);\n                }\n\n                if (\"development\" !== 'production' && data && data.pre) {\n                    inPre--;\n                }\n            } else if (isTrue(vnode.isComment)) {\n                vnode.elm = nodeOps.createComment(vnode.text);\n                insert(parentElm, vnode.elm, refElm);\n            } else {\n                vnode.elm = nodeOps.createTextNode(vnode.text);\n                insert(parentElm, vnode.elm, refElm);\n            }\n        }\n\n        function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n            var i = vnode.data;\n            if (isDef(i)) {\n                var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n                if (isDef(i = i.hook) && isDef(i = i.init)) {\n                    i(vnode, false /* hydrating */, parentElm, refElm);\n                }\n                // after calling the init hook, if the vnode is a child component\n                // it should've created a child instance and mounted it. the child\n                // component also has set the placeholder vnode's elm.\n                // in that case we can just return the element and be done.\n                if (isDef(vnode.componentInstance)) {\n                    initComponent(vnode, insertedVnodeQueue);\n                    if (isTrue(isReactivated)) {\n                        reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n                    }\n                    return true\n                }\n            }\n        }\n\n        function initComponent (vnode, insertedVnodeQueue) {\n            if (isDef(vnode.data.pendingInsert)) {\n                insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n                vnode.data.pendingInsert = null;\n            }\n            vnode.elm = vnode.componentInstance.$el;\n            if (isPatchable(vnode)) {\n                invokeCreateHooks(vnode, insertedVnodeQueue);\n                setScope(vnode);\n            } else {\n                // empty component root.\n                // skip all element-related modules except for ref (#3455)\n                registerRef(vnode);\n                // make sure to invoke the insert hook\n                insertedVnodeQueue.push(vnode);\n            }\n        }\n\n        function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n            var i;\n            // hack for #4339: a reactivated component with inner transition\n            // does not trigger because the inner node's created hooks are not called\n            // again. It's not ideal to involve module-specific logic in here but\n            // there doesn't seem to be a better way to do it.\n            var innerNode = vnode;\n            while (innerNode.componentInstance) {\n                innerNode = innerNode.componentInstance._vnode;\n                if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n                    for (i = 0; i < cbs.activate.length; ++i) {\n                        cbs.activate[i](emptyNode, innerNode);\n                    }\n                    insertedVnodeQueue.push(innerNode);\n                    break\n                }\n            }\n            // unlike a newly created component,\n            // a reactivated keep-alive component doesn't insert itself\n            insert(parentElm, vnode.elm, refElm);\n        }\n\n        function insert (parent, elm, ref$$1) {\n            if (isDef(parent)) {\n                if (isDef(ref$$1)) {\n                    if (ref$$1.parentNode === parent) {\n                        nodeOps.insertBefore(parent, elm, ref$$1);\n                    }\n                } else {\n                    nodeOps.appendChild(parent, elm);\n                }\n            }\n        }\n\n        function createChildren (vnode, children, insertedVnodeQueue) {\n            if (Array.isArray(children)) {\n                for (var i = 0; i < children.length; ++i) {\n                    createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);\n                }\n            } else if (isPrimitive(vnode.text)) {\n                nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));\n            }\n        }\n\n        function isPatchable (vnode) {\n            while (vnode.componentInstance) {\n                vnode = vnode.componentInstance._vnode;\n            }\n            return isDef(vnode.tag)\n        }\n\n        function invokeCreateHooks (vnode, insertedVnodeQueue) {\n            for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n                cbs.create[i$1](emptyNode, vnode);\n            }\n            i = vnode.data.hook; // Reuse variable\n            if (isDef(i)) {\n                if (isDef(i.create)) { i.create(emptyNode, vnode); }\n                if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n            }\n        }\n\n        // set scope id attribute for scoped CSS.\n        // this is implemented as a special case to avoid the overhead\n        // of going through the normal attribute patching process.\n        function setScope (vnode) {\n            var i;\n            var ancestor = vnode;\n            while (ancestor) {\n                if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n                    nodeOps.setAttribute(vnode.elm, i, '');\n                }\n                ancestor = ancestor.parent;\n            }\n            // for slot content they should also get the scopeId from the host instance.\n            if (isDef(i = activeInstance) &&\n                i !== vnode.context &&\n                isDef(i = i.$options._scopeId)\n            ) {\n                nodeOps.setAttribute(vnode.elm, i, '');\n            }\n        }\n\n        function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n            for (; startIdx <= endIdx; ++startIdx) {\n                createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);\n            }\n        }\n\n        function invokeDestroyHook (vnode) {\n            var i, j;\n            var data = vnode.data;\n            if (isDef(data)) {\n                if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n                for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n            }\n            if (isDef(i = vnode.children)) {\n                for (j = 0; j < vnode.children.length; ++j) {\n                    invokeDestroyHook(vnode.children[j]);\n                }\n            }\n        }\n\n        function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n            for (; startIdx <= endIdx; ++startIdx) {\n                var ch = vnodes[startIdx];\n                if (isDef(ch)) {\n                    if (isDef(ch.tag)) {\n                        removeAndInvokeRemoveHook(ch);\n                        invokeDestroyHook(ch);\n                    } else { // Text node\n                        removeNode(ch.elm);\n                    }\n                }\n            }\n        }\n\n        function removeAndInvokeRemoveHook (vnode, rm) {\n            if (isDef(rm) || isDef(vnode.data)) {\n                var i;\n                var listeners = cbs.remove.length + 1;\n                if (isDef(rm)) {\n                    // we have a recursively passed down rm callback\n                    // increase the listeners count\n                    rm.listeners += listeners;\n                } else {\n                    // directly removing\n                    rm = createRmCb(vnode.elm, listeners);\n                }\n                // recursively invoke hooks on child component root node\n                if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n                    removeAndInvokeRemoveHook(i, rm);\n                }\n                for (i = 0; i < cbs.remove.length; ++i) {\n                    cbs.remove[i](vnode, rm);\n                }\n                if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n                    i(vnode, rm);\n                } else {\n                    rm();\n                }\n            } else {\n                removeNode(vnode.elm);\n            }\n        }\n\n        function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n            var oldStartIdx = 0;\n            var newStartIdx = 0;\n            var oldEndIdx = oldCh.length - 1;\n            var oldStartVnode = oldCh[0];\n            var oldEndVnode = oldCh[oldEndIdx];\n            var newEndIdx = newCh.length - 1;\n            var newStartVnode = newCh[0];\n            var newEndVnode = newCh[newEndIdx];\n            var oldKeyToIdx, idxInOld, elmToMove, refElm;\n\n            // removeOnly is a special flag used only by <transition-group>\n            // to ensure removed elements stay in correct relative positions\n            // during leaving transitions\n            var canMove = !removeOnly;\n\n            while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n                if (isUndef(oldStartVnode)) {\n                    oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n                } else if (isUndef(oldEndVnode)) {\n                    oldEndVnode = oldCh[--oldEndIdx];\n                } else if (sameVnode(oldStartVnode, newStartVnode)) {\n                    patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n                    oldStartVnode = oldCh[++oldStartIdx];\n                    newStartVnode = newCh[++newStartIdx];\n                } else if (sameVnode(oldEndVnode, newEndVnode)) {\n                    patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n                    oldEndVnode = oldCh[--oldEndIdx];\n                    newEndVnode = newCh[--newEndIdx];\n                } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n                    patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n                    canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n                    oldStartVnode = oldCh[++oldStartIdx];\n                    newEndVnode = newCh[--newEndIdx];\n                } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n                    patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n                    canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n                    oldEndVnode = oldCh[--oldEndIdx];\n                    newStartVnode = newCh[++newStartIdx];\n                } else {\n                    if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n                    idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null;\n                    if (isUndef(idxInOld)) { // New element\n                        createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n                        newStartVnode = newCh[++newStartIdx];\n                    } else {\n                        elmToMove = oldCh[idxInOld];\n                        /* istanbul ignore if */\n                        if (\"development\" !== 'production' && !elmToMove) {\n                            warn(\n                                'It seems there are duplicate keys that is causing an update error. ' +\n                                'Make sure each v-for item has a unique key.'\n                            );\n                        }\n                        if (sameVnode(elmToMove, newStartVnode)) {\n                            patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n                            oldCh[idxInOld] = undefined;\n                            canMove && nodeOps.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n                            newStartVnode = newCh[++newStartIdx];\n                        } else {\n                            // same key but different element. treat as new element\n                            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n                            newStartVnode = newCh[++newStartIdx];\n                        }\n                    }\n                }\n            }\n            if (oldStartIdx > oldEndIdx) {\n                refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n                addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n            } else if (newStartIdx > newEndIdx) {\n                removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n            }\n        }\n\n        function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n            if (oldVnode === vnode) {\n                return\n            }\n\n            var elm = vnode.elm = oldVnode.elm;\n\n            if (isTrue(oldVnode.isAsyncPlaceholder)) {\n                if (isDef(vnode.asyncFactory.resolved)) {\n                    hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n                } else {\n                    vnode.isAsyncPlaceholder = true;\n                }\n                return\n            }\n\n            // reuse element for static trees.\n            // note we only do this if the vnode is cloned -\n            // if the new node is not cloned it means the render functions have been\n            // reset by the hot-reload-api and we need to do a proper re-render.\n            if (isTrue(vnode.isStatic) &&\n                isTrue(oldVnode.isStatic) &&\n                vnode.key === oldVnode.key &&\n                (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n            ) {\n                vnode.componentInstance = oldVnode.componentInstance;\n                return\n            }\n\n            var i;\n            var data = vnode.data;\n            if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n                i(oldVnode, vnode);\n            }\n\n            var oldCh = oldVnode.children;\n            var ch = vnode.children;\n            if (isDef(data) && isPatchable(vnode)) {\n                for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n                if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n            }\n            if (isUndef(vnode.text)) {\n                if (isDef(oldCh) && isDef(ch)) {\n                    if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n                } else if (isDef(ch)) {\n                    if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n                    addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n                } else if (isDef(oldCh)) {\n                    removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n                } else if (isDef(oldVnode.text)) {\n                    nodeOps.setTextContent(elm, '');\n                }\n            } else if (oldVnode.text !== vnode.text) {\n                nodeOps.setTextContent(elm, vnode.text);\n            }\n            if (isDef(data)) {\n                if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n            }\n        }\n\n        function invokeInsertHook (vnode, queue, initial) {\n            // delay insert hooks for component root nodes, invoke them after the\n            // element is really inserted\n            if (isTrue(initial) && isDef(vnode.parent)) {\n                vnode.parent.data.pendingInsert = queue;\n            } else {\n                for (var i = 0; i < queue.length; ++i) {\n                    queue[i].data.hook.insert(queue[i]);\n                }\n            }\n        }\n\n        var bailed = false;\n        // list of modules that can skip create hook during hydration because they\n        // are already rendered on the client or has no need for initialization\n        var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');\n\n        // Note: this is a browser-only function so we can assume elms are DOM nodes.\n        function hydrate (elm, vnode, insertedVnodeQueue) {\n            if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n                vnode.elm = elm;\n                vnode.isAsyncPlaceholder = true;\n                return true\n            }\n            {\n                if (!assertNodeMatch(elm, vnode)) {\n                    return false\n                }\n            }\n            vnode.elm = elm;\n            var tag = vnode.tag;\n            var data = vnode.data;\n            var children = vnode.children;\n            if (isDef(data)) {\n                if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n                if (isDef(i = vnode.componentInstance)) {\n                    // child component. it should have hydrated its own tree.\n                    initComponent(vnode, insertedVnodeQueue);\n                    return true\n                }\n            }\n            if (isDef(tag)) {\n                if (isDef(children)) {\n                    // empty element, allow client to pick up and populate children\n                    if (!elm.hasChildNodes()) {\n                        createChildren(vnode, children, insertedVnodeQueue);\n                    } else {\n                        var childrenMatch = true;\n                        var childNode = elm.firstChild;\n                        for (var i$1 = 0; i$1 < children.length; i$1++) {\n                            if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {\n                                childrenMatch = false;\n                                break\n                            }\n                            childNode = childNode.nextSibling;\n                        }\n                        // if childNode is not null, it means the actual childNodes list is\n                        // longer than the virtual children list.\n                        if (!childrenMatch || childNode) {\n                            if (\"development\" !== 'production' &&\n                                typeof console !== 'undefined' &&\n                                !bailed\n                            ) {\n                                bailed = true;\n                                console.warn('Parent: ', elm);\n                                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n                            }\n                            return false\n                        }\n                    }\n                }\n                if (isDef(data)) {\n                    for (var key in data) {\n                        if (!isRenderedModule(key)) {\n                            invokeCreateHooks(vnode, insertedVnodeQueue);\n                            break\n                        }\n                    }\n                }\n            } else if (elm.data !== vnode.text) {\n                elm.data = vnode.text;\n            }\n            return true\n        }\n\n        function assertNodeMatch (node, vnode) {\n            if (isDef(vnode.tag)) {\n                return (\n                    vnode.tag.indexOf('vue-component') === 0 ||\n                    vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n                )\n            } else {\n                return node.nodeType === (vnode.isComment ? 8 : 3)\n            }\n        }\n\n        return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n            if (isUndef(vnode)) {\n                if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n                return\n            }\n\n            var isInitialPatch = false;\n            var insertedVnodeQueue = [];\n\n            if (isUndef(oldVnode)) {\n                // empty mount (likely as component), create new root element\n                isInitialPatch = true;\n                createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n            } else {\n                var isRealElement = isDef(oldVnode.nodeType);\n                if (!isRealElement && sameVnode(oldVnode, vnode)) {\n                    // patch existing root node\n                    patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n                } else {\n                    if (isRealElement) {\n                        // mounting to a real element\n                        // check if this is server-rendered content and if we can perform\n                        // a successful hydration.\n                        if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n                            oldVnode.removeAttribute(SSR_ATTR);\n                            hydrating = true;\n                        }\n                        if (isTrue(hydrating)) {\n                            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n                                invokeInsertHook(vnode, insertedVnodeQueue, true);\n                                return oldVnode\n                            } else {\n                                warn(\n                                    'The client-side rendered virtual DOM tree is not matching ' +\n                                    'server-rendered content. This is likely caused by incorrect ' +\n                                    'HTML markup, for example nesting block-level elements inside ' +\n                                    '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                                    'full client-side render.'\n                                );\n                            }\n                        }\n                        // either not server-rendered, or hydration failed.\n                        // create an empty node and replace it\n                        oldVnode = emptyNodeAt(oldVnode);\n                    }\n                    // replacing existing element\n                    var oldElm = oldVnode.elm;\n                    var parentElm$1 = nodeOps.parentNode(oldElm);\n                    createElm(\n                        vnode,\n                        insertedVnodeQueue,\n                        // extremely rare edge case: do not insert if old element is in a\n                        // leaving transition. Only happens when combining transition +\n                        // keep-alive + HOCs. (#4590)\n                        oldElm._leaveCb ? null : parentElm$1,\n                        nodeOps.nextSibling(oldElm)\n                    );\n\n                    if (isDef(vnode.parent)) {\n                        // component root element replaced.\n                        // update parent placeholder node element, recursively\n                        var ancestor = vnode.parent;\n                        while (ancestor) {\n                            ancestor.elm = vnode.elm;\n                            ancestor = ancestor.parent;\n                        }\n                        if (isPatchable(vnode)) {\n                            for (var i = 0; i < cbs.create.length; ++i) {\n                                cbs.create[i](emptyNode, vnode.parent);\n                            }\n                        }\n                    }\n\n                    if (isDef(parentElm$1)) {\n                        removeVnodes(parentElm$1, [oldVnode], 0, 0);\n                    } else if (isDef(oldVnode.tag)) {\n                        invokeDestroyHook(oldVnode);\n                    }\n                }\n            }\n\n            invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n            return vnode.elm\n        }\n    }\n\n    /*  */\n\n    var directives = {\n        create: updateDirectives,\n        update: updateDirectives,\n        destroy: function unbindDirectives (vnode) {\n            updateDirectives(vnode, emptyNode);\n        }\n    };\n\n    function updateDirectives (oldVnode, vnode) {\n        if (oldVnode.data.directives || vnode.data.directives) {\n            _update(oldVnode, vnode);\n        }\n    }\n\n    function _update (oldVnode, vnode) {\n        var isCreate = oldVnode === emptyNode;\n        var isDestroy = vnode === emptyNode;\n        var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n        var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n        var dirsWithInsert = [];\n        var dirsWithPostpatch = [];\n\n        var key, oldDir, dir;\n        for (key in newDirs) {\n            oldDir = oldDirs[key];\n            dir = newDirs[key];\n            if (!oldDir) {\n                // new directive, bind\n                callHook$1(dir, 'bind', vnode, oldVnode);\n                if (dir.def && dir.def.inserted) {\n                    dirsWithInsert.push(dir);\n                }\n            } else {\n                // existing directive, update\n                dir.oldValue = oldDir.value;\n                callHook$1(dir, 'update', vnode, oldVnode);\n                if (dir.def && dir.def.componentUpdated) {\n                    dirsWithPostpatch.push(dir);\n                }\n            }\n        }\n\n        if (dirsWithInsert.length) {\n            var callInsert = function () {\n                for (var i = 0; i < dirsWithInsert.length; i++) {\n                    callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n                }\n            };\n            if (isCreate) {\n                mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);\n            } else {\n                callInsert();\n            }\n        }\n\n        if (dirsWithPostpatch.length) {\n            mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {\n                for (var i = 0; i < dirsWithPostpatch.length; i++) {\n                    callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n                }\n            });\n        }\n\n        if (!isCreate) {\n            for (key in oldDirs) {\n                if (!newDirs[key]) {\n                    // no longer present, unbind\n                    callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n                }\n            }\n        }\n    }\n\n    var emptyModifiers = Object.create(null);\n\n    function normalizeDirectives$1 (\n        dirs,\n        vm\n    ) {\n        var res = Object.create(null);\n        if (!dirs) {\n            return res\n        }\n        var i, dir;\n        for (i = 0; i < dirs.length; i++) {\n            dir = dirs[i];\n            if (!dir.modifiers) {\n                dir.modifiers = emptyModifiers;\n            }\n            res[getRawDirName(dir)] = dir;\n            dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n        }\n        return res\n    }\n\n    function getRawDirName (dir) {\n        return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n    }\n\n    function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n        var fn = dir.def && dir.def[hook];\n        if (fn) {\n            try {\n                fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n            } catch (e) {\n                handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n            }\n        }\n    }\n\n    var baseModules = [\n        ref,\n        directives\n    ];\n\n    /*  */\n\n    function updateAttrs (oldVnode, vnode) {\n        var opts = vnode.componentOptions;\n        if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n            return\n        }\n        if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n            return\n        }\n        var key, cur, old;\n        var elm = vnode.elm;\n        var oldAttrs = oldVnode.data.attrs || {};\n        var attrs = vnode.data.attrs || {};\n        // clone observed objects, as the user probably wants to mutate it\n        if (isDef(attrs.__ob__)) {\n            attrs = vnode.data.attrs = extend({}, attrs);\n        }\n\n        for (key in attrs) {\n            cur = attrs[key];\n            old = oldAttrs[key];\n            if (old !== cur) {\n                setAttr(elm, key, cur);\n            }\n        }\n        // #4391: in IE9, setting type can reset value for input[type=radio]\n        /* istanbul ignore if */\n        if (isIE9 && attrs.value !== oldAttrs.value) {\n            setAttr(elm, 'value', attrs.value);\n        }\n        for (key in oldAttrs) {\n            if (isUndef(attrs[key])) {\n                if (isXlink(key)) {\n                    elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n                } else if (!isEnumeratedAttr(key)) {\n                    elm.removeAttribute(key);\n                }\n            }\n        }\n    }\n\n    function setAttr (el, key, value) {\n        if (isBooleanAttr(key)) {\n            // set attribute for blank value\n            // e.g. <option disabled>Select one</option>\n            if (isFalsyAttrValue(value)) {\n                el.removeAttribute(key);\n            } else {\n                el.setAttribute(key, key);\n            }\n        } else if (isEnumeratedAttr(key)) {\n            el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n        } else if (isXlink(key)) {\n            if (isFalsyAttrValue(value)) {\n                el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n            } else {\n                el.setAttributeNS(xlinkNS, key, value);\n            }\n        } else {\n            if (isFalsyAttrValue(value)) {\n                el.removeAttribute(key);\n            } else {\n                el.setAttribute(key, value);\n            }\n        }\n    }\n\n    var attrs = {\n        create: updateAttrs,\n        update: updateAttrs\n    };\n\n    /*  */\n\n    function updateClass (oldVnode, vnode) {\n        var el = vnode.elm;\n        var data = vnode.data;\n        var oldData = oldVnode.data;\n        if (\n            isUndef(data.staticClass) &&\n            isUndef(data.class) && (\n                isUndef(oldData) || (\n                    isUndef(oldData.staticClass) &&\n                    isUndef(oldData.class)\n                )\n            )\n        ) {\n            return\n        }\n\n        var cls = genClassForVnode(vnode);\n\n        // handle transition classes\n        var transitionClass = el._transitionClasses;\n        if (isDef(transitionClass)) {\n            cls = concat(cls, stringifyClass(transitionClass));\n        }\n\n        // set the class\n        if (cls !== el._prevClass) {\n            el.setAttribute('class', cls);\n            el._prevClass = cls;\n        }\n    }\n\n    var klass = {\n        create: updateClass,\n        update: updateClass\n    };\n\n    /*  */\n\n    var validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\n    function parseFilters (exp) {\n        var inSingle = false;\n        var inDouble = false;\n        var inTemplateString = false;\n        var inRegex = false;\n        var curly = 0;\n        var square = 0;\n        var paren = 0;\n        var lastFilterIndex = 0;\n        var c, prev, i, expression, filters;\n\n        for (i = 0; i < exp.length; i++) {\n            prev = c;\n            c = exp.charCodeAt(i);\n            if (inSingle) {\n                if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n            } else if (inDouble) {\n                if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n            } else if (inTemplateString) {\n                if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n            } else if (inRegex) {\n                if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n            } else if (\n                c === 0x7C && // pipe\n                exp.charCodeAt(i + 1) !== 0x7C &&\n                exp.charCodeAt(i - 1) !== 0x7C &&\n                !curly && !square && !paren\n            ) {\n                if (expression === undefined) {\n                    // first filter, end of expression\n                    lastFilterIndex = i + 1;\n                    expression = exp.slice(0, i).trim();\n                } else {\n                    pushFilter();\n                }\n            } else {\n                switch (c) {\n                    case 0x22: inDouble = true; break         // \"\n                    case 0x27: inSingle = true; break         // '\n                    case 0x60: inTemplateString = true; break // `\n                    case 0x28: paren++; break                 // (\n                    case 0x29: paren--; break                 // )\n                    case 0x5B: square++; break                // [\n                    case 0x5D: square--; break                // ]\n                    case 0x7B: curly++; break                 // {\n                    case 0x7D: curly--; break                 // }\n                }\n                if (c === 0x2f) { // /\n                    var j = i - 1;\n                    var p = (void 0);\n                    // find first non-whitespace prev char\n                    for (; j >= 0; j--) {\n                        p = exp.charAt(j);\n                        if (p !== ' ') { break }\n                    }\n                    if (!p || !validDivisionCharRE.test(p)) {\n                        inRegex = true;\n                    }\n                }\n            }\n        }\n\n        if (expression === undefined) {\n            expression = exp.slice(0, i).trim();\n        } else if (lastFilterIndex !== 0) {\n            pushFilter();\n        }\n\n        function pushFilter () {\n            (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n            lastFilterIndex = i + 1;\n        }\n\n        if (filters) {\n            for (i = 0; i < filters.length; i++) {\n                expression = wrapFilter(expression, filters[i]);\n            }\n        }\n\n        return expression\n    }\n\n    function wrapFilter (exp, filter) {\n        var i = filter.indexOf('(');\n        if (i < 0) {\n            // _f: resolveFilter\n            return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n        } else {\n            var name = filter.slice(0, i);\n            var args = filter.slice(i + 1);\n            return (\"_f(\\\"\" + name + \"\\\")(\" + exp + \",\" + args)\n        }\n    }\n\n    /*  */\n\n    function baseWarn (msg) {\n        console.error((\"[Vue compiler]: \" + msg));\n    }\n\n    function pluckModuleFunction (\n        modules,\n        key\n    ) {\n        return modules\n            ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n            : []\n    }\n\n    function addProp (el, name, value) {\n        (el.props || (el.props = [])).push({ name: name, value: value });\n    }\n\n    function addAttr (el, name, value) {\n        (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n    }\n\n    function addDirective (\n        el,\n        name,\n        rawName,\n        value,\n        arg,\n        modifiers\n    ) {\n        (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n    }\n\n    function addHandler (\n        el,\n        name,\n        value,\n        modifiers,\n        important,\n        warn\n    ) {\n        // warn prevent and passive modifier\n        /* istanbul ignore if */\n        if (\n            \"development\" !== 'production' && warn &&\n            modifiers && modifiers.prevent && modifiers.passive\n        ) {\n            warn(\n                'passive and prevent can\\'t be used together. ' +\n                'Passive handler can\\'t prevent default event.'\n            );\n        }\n        // check capture modifier\n        if (modifiers && modifiers.capture) {\n            delete modifiers.capture;\n            name = '!' + name; // mark the event as captured\n        }\n        if (modifiers && modifiers.once) {\n            delete modifiers.once;\n            name = '~' + name; // mark the event as once\n        }\n        /* istanbul ignore if */\n        if (modifiers && modifiers.passive) {\n            delete modifiers.passive;\n            name = '&' + name; // mark the event as passive\n        }\n        var events;\n        if (modifiers && modifiers.native) {\n            delete modifiers.native;\n            events = el.nativeEvents || (el.nativeEvents = {});\n        } else {\n            events = el.events || (el.events = {});\n        }\n        var newHandler = { value: value, modifiers: modifiers };\n        var handlers = events[name];\n        /* istanbul ignore if */\n        if (Array.isArray(handlers)) {\n            important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n        } else if (handlers) {\n            events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n        } else {\n            events[name] = newHandler;\n        }\n    }\n\n    function getBindingAttr (\n        el,\n        name,\n        getStatic\n    ) {\n        var dynamicValue =\n            getAndRemoveAttr(el, ':' + name) ||\n            getAndRemoveAttr(el, 'v-bind:' + name);\n        if (dynamicValue != null) {\n            return parseFilters(dynamicValue)\n        } else if (getStatic !== false) {\n            var staticValue = getAndRemoveAttr(el, name);\n            if (staticValue != null) {\n                return JSON.stringify(staticValue)\n            }\n        }\n    }\n\n    function getAndRemoveAttr (el, name) {\n        var val;\n        if ((val = el.attrsMap[name]) != null) {\n            var list = el.attrsList;\n            for (var i = 0, l = list.length; i < l; i++) {\n                if (list[i].name === name) {\n                    list.splice(i, 1);\n                    break\n                }\n            }\n        }\n        return val\n    }\n\n    /*  */\n\n    /**\n     * Cross-platform code generation for component v-model\n     */\n    function genComponentModel (\n        el,\n        value,\n        modifiers\n    ) {\n        var ref = modifiers || {};\n        var number = ref.number;\n        var trim = ref.trim;\n\n        var baseValueExpression = '$$v';\n        var valueExpression = baseValueExpression;\n        if (trim) {\n            valueExpression =\n                \"(typeof \" + baseValueExpression + \" === 'string'\" +\n                \"? \" + baseValueExpression + \".trim()\" +\n                \": \" + baseValueExpression + \")\";\n        }\n        if (number) {\n            valueExpression = \"_n(\" + valueExpression + \")\";\n        }\n        var assignment = genAssignmentCode(value, valueExpression);\n\n        el.model = {\n            value: (\"(\" + value + \")\"),\n            expression: (\"\\\"\" + value + \"\\\"\"),\n            callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n        };\n    }\n\n    /**\n     * Cross-platform codegen helper for generating v-model value assignment code.\n     */\n    function genAssignmentCode (\n        value,\n        assignment\n    ) {\n        var modelRs = parseModel(value);\n        if (modelRs.idx === null) {\n            return (value + \"=\" + assignment)\n        } else {\n            return (\"$set(\" + (modelRs.exp) + \", \" + (modelRs.idx) + \", \" + assignment + \")\")\n        }\n    }\n\n    /**\n     * parse directive model to do the array update transform. a[idx] = val => $$a.splice($$idx, 1, val)\n     *\n     * for loop possible cases:\n     *\n     * - test\n     * - test[idx]\n     * - test[test1[idx]]\n     * - test[\"a\"][idx]\n     * - xxx.test[a[a].test1[idx]]\n     * - test.xxx.a[\"asa\"][test1[idx]]\n     *\n     */\n\n    var len;\n    var str;\n    var chr;\n    var index$1;\n    var expressionPos;\n    var expressionEndPos;\n\n    function parseModel (val) {\n        str = val;\n        len = str.length;\n        index$1 = expressionPos = expressionEndPos = 0;\n\n        if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n            return {\n                exp: val,\n                idx: null\n            }\n        }\n\n        while (!eof()) {\n            chr = next();\n            /* istanbul ignore if */\n            if (isStringStart(chr)) {\n                parseString(chr);\n            } else if (chr === 0x5B) {\n                parseBracket(chr);\n            }\n        }\n\n        return {\n            exp: val.substring(0, expressionPos),\n            idx: val.substring(expressionPos + 1, expressionEndPos)\n        }\n    }\n\n    function next () {\n        return str.charCodeAt(++index$1)\n    }\n\n    function eof () {\n        return index$1 >= len\n    }\n\n    function isStringStart (chr) {\n        return chr === 0x22 || chr === 0x27\n    }\n\n    function parseBracket (chr) {\n        var inBracket = 1;\n        expressionPos = index$1;\n        while (!eof()) {\n            chr = next();\n            if (isStringStart(chr)) {\n                parseString(chr);\n                continue\n            }\n            if (chr === 0x5B) { inBracket++; }\n            if (chr === 0x5D) { inBracket--; }\n            if (inBracket === 0) {\n                expressionEndPos = index$1;\n                break\n            }\n        }\n    }\n\n    function parseString (chr) {\n        var stringQuote = chr;\n        while (!eof()) {\n            chr = next();\n            if (chr === stringQuote) {\n                break\n            }\n        }\n    }\n\n    /*  */\n\n    var warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\n    var RANGE_TOKEN = '__r';\n    var CHECKBOX_RADIO_TOKEN = '__c';\n\n    function model (\n        el,\n        dir,\n        _warn\n    ) {\n        warn$1 = _warn;\n        var value = dir.value;\n        var modifiers = dir.modifiers;\n        var tag = el.tag;\n        var type = el.attrsMap.type;\n\n        {\n            var dynamicType = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n            if (tag === 'input' && dynamicType) {\n                warn$1(\n                    \"<input :type=\\\"\" + dynamicType + \"\\\" v-model=\\\"\" + value + \"\\\">:\\n\" +\n                    \"v-model does not support dynamic input types. Use v-if branches instead.\"\n                );\n            }\n            // inputs with type=\"file\" are read only and setting the input's\n            // value will throw an error.\n            if (tag === 'input' && type === 'file') {\n                warn$1(\n                    \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n                    \"File inputs are read only. Use a v-on:change listener instead.\"\n                );\n            }\n        }\n\n        if (el.component) {\n            genComponentModel(el, value, modifiers);\n            // component v-model doesn't need extra runtime\n            return false\n        } else if (tag === 'select') {\n            genSelect(el, value, modifiers);\n        } else if (tag === 'input' && type === 'checkbox') {\n            genCheckboxModel(el, value, modifiers);\n        } else if (tag === 'input' && type === 'radio') {\n            genRadioModel(el, value, modifiers);\n        } else if (tag === 'input' || tag === 'textarea') {\n            genDefaultModel(el, value, modifiers);\n        } else if (!config.isReservedTag(tag)) {\n            genComponentModel(el, value, modifiers);\n            // component v-model doesn't need extra runtime\n            return false\n        } else {\n            warn$1(\n                \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n                \"v-model is not supported on this element type. \" +\n                'If you are working with contenteditable, it\\'s recommended to ' +\n                'wrap a library dedicated for that purpose inside a custom component.'\n            );\n        }\n\n        // ensure runtime directive metadata\n        return true\n    }\n\n    function genCheckboxModel (\n        el,\n        value,\n        modifiers\n    ) {\n        var number = modifiers && modifiers.number;\n        var valueBinding = getBindingAttr(el, 'value') || 'null';\n        var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n        var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n        addProp(el, 'checked',\n            \"Array.isArray(\" + value + \")\" +\n            \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n                trueValueBinding === 'true'\n                    ? (\":(\" + value + \")\")\n                    : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n            )\n        );\n        addHandler(el, CHECKBOX_RADIO_TOKEN,\n            \"var $$a=\" + value + \",\" +\n            '$$el=$event.target,' +\n            \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n            'if(Array.isArray($$a)){' +\n            \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n            '$$i=_i($$a,$$v);' +\n            \"if($$el.checked){$$i<0&&(\" + value + \"=$$a.concat($$v))}\" +\n            \"else{$$i>-1&&(\" + value + \"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}\" +\n            \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n            null, true\n        );\n    }\n\n    function genRadioModel (\n        el,\n        value,\n        modifiers\n    ) {\n        var number = modifiers && modifiers.number;\n        var valueBinding = getBindingAttr(el, 'value') || 'null';\n        valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n        addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n        addHandler(el, CHECKBOX_RADIO_TOKEN, genAssignmentCode(value, valueBinding), null, true);\n    }\n\n    function genSelect (\n        el,\n        value,\n        modifiers\n    ) {\n        var number = modifiers && modifiers.number;\n        var selectedVal = \"Array.prototype.filter\" +\n            \".call($event.target.options,function(o){return o.selected})\" +\n            \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n            \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n        var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n        var code = \"var $$selectedVal = \" + selectedVal + \";\";\n        code = code + \" \" + (genAssignmentCode(value, assignment));\n        addHandler(el, 'change', code, null, true);\n    }\n\n    function genDefaultModel (\n        el,\n        value,\n        modifiers\n    ) {\n        var type = el.attrsMap.type;\n        var ref = modifiers || {};\n        var lazy = ref.lazy;\n        var number = ref.number;\n        var trim = ref.trim;\n        var needCompositionGuard = !lazy && type !== 'range';\n        var event = lazy\n            ? 'change'\n            : type === 'range'\n            ? RANGE_TOKEN\n            : 'input';\n\n        var valueExpression = '$event.target.value';\n        if (trim) {\n            valueExpression = \"$event.target.value.trim()\";\n        }\n        if (number) {\n            valueExpression = \"_n(\" + valueExpression + \")\";\n        }\n\n        var code = genAssignmentCode(value, valueExpression);\n        if (needCompositionGuard) {\n            code = \"if($event.target.composing)return;\" + code;\n        }\n\n        addProp(el, 'value', (\"(\" + value + \")\"));\n        addHandler(el, event, code, null, true);\n        if (trim || number) {\n            addHandler(el, 'blur', '$forceUpdate()');\n        }\n    }\n\n    /*  */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\n    function normalizeEvents (on) {\n        var event;\n        /* istanbul ignore if */\n        if (isDef(on[RANGE_TOKEN])) {\n            // IE input[type=range] only supports `change` event\n            event = isIE ? 'change' : 'input';\n            on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n            delete on[RANGE_TOKEN];\n        }\n        if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n            // Chrome fires microtasks in between click/change, leads to #4521\n            event = isChrome ? 'click' : 'change';\n            on[event] = [].concat(on[CHECKBOX_RADIO_TOKEN], on[event] || []);\n            delete on[CHECKBOX_RADIO_TOKEN];\n        }\n    }\n\n    var target$1;\n\n    function add$1 (\n        event,\n        handler,\n        once$$1,\n        capture,\n        passive\n    ) {\n        if (once$$1) {\n            var oldHandler = handler;\n            var _target = target$1; // save current target element in closure\n            handler = function (ev) {\n                var res = arguments.length === 1\n                    ? oldHandler(ev)\n                    : oldHandler.apply(null, arguments);\n                if (res !== null) {\n                    remove$2(event, handler, capture, _target);\n                }\n            };\n        }\n        target$1.addEventListener(\n            event,\n            handler,\n            supportsPassive\n                ? { capture: capture, passive: passive }\n                : capture\n        );\n    }\n\n    function remove$2 (\n        event,\n        handler,\n        capture,\n        _target\n    ) {\n        (_target || target$1).removeEventListener(event, handler, capture);\n    }\n\n    function updateDOMListeners (oldVnode, vnode) {\n        if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n            return\n        }\n        var on = vnode.data.on || {};\n        var oldOn = oldVnode.data.on || {};\n        target$1 = vnode.elm;\n        normalizeEvents(on);\n        updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n    }\n\n    var events = {\n        create: updateDOMListeners,\n        update: updateDOMListeners\n    };\n\n    /*  */\n\n    function updateDOMProps (oldVnode, vnode) {\n        if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n            return\n        }\n        var key, cur;\n        var elm = vnode.elm;\n        var oldProps = oldVnode.data.domProps || {};\n        var props = vnode.data.domProps || {};\n        // clone observed objects, as the user probably wants to mutate it\n        if (isDef(props.__ob__)) {\n            props = vnode.data.domProps = extend({}, props);\n        }\n\n        for (key in oldProps) {\n            if (isUndef(props[key])) {\n                elm[key] = '';\n            }\n        }\n        for (key in props) {\n            cur = props[key];\n            // ignore children if the node has textContent or innerHTML,\n            // as these will throw away existing DOM nodes and cause removal errors\n            // on subsequent patches (#3360)\n            if (key === 'textContent' || key === 'innerHTML') {\n                if (vnode.children) { vnode.children.length = 0; }\n                if (cur === oldProps[key]) { continue }\n            }\n\n            if (key === 'value') {\n                // store value as _value as well since\n                // non-string values will be stringified\n                elm._value = cur;\n                // avoid resetting cursor position when value is the same\n                var strCur = isUndef(cur) ? '' : String(cur);\n                if (shouldUpdateValue(elm, vnode, strCur)) {\n                    elm.value = strCur;\n                }\n            } else {\n                elm[key] = cur;\n            }\n        }\n    }\n\n// check platforms/web/util/attrs.js acceptValue\n\n\n    function shouldUpdateValue (\n        elm,\n        vnode,\n        checkVal\n    ) {\n        return (!elm.composing && (\n            vnode.tag === 'option' ||\n            isDirty(elm, checkVal) ||\n            isInputChanged(elm, checkVal)\n        ))\n    }\n\n    function isDirty (elm, checkVal) {\n        // return true when textbox (.number and .trim) loses focus and its value is\n        // not equal to the updated value\n        var notInFocus = true;\n        // #6157\n        // work around IE bug when accessing document.activeElement in an iframe\n        try { notInFocus = document.activeElement !== elm; } catch (e) {}\n        return notInFocus && elm.value !== checkVal\n    }\n\n    function isInputChanged (elm, newVal) {\n        var value = elm.value;\n        var modifiers = elm._vModifiers; // injected by v-model runtime\n        if (isDef(modifiers) && modifiers.number) {\n            return toNumber(value) !== toNumber(newVal)\n        }\n        if (isDef(modifiers) && modifiers.trim) {\n            return value.trim() !== newVal.trim()\n        }\n        return value !== newVal\n    }\n\n    var domProps = {\n        create: updateDOMProps,\n        update: updateDOMProps\n    };\n\n    /*  */\n\n    var parseStyleText = cached(function (cssText) {\n        var res = {};\n        var listDelimiter = /;(?![^(]*\\))/g;\n        var propertyDelimiter = /:(.+)/;\n        cssText.split(listDelimiter).forEach(function (item) {\n            if (item) {\n                var tmp = item.split(propertyDelimiter);\n                tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n            }\n        });\n        return res\n    });\n\n// merge static and dynamic style data on the same vnode\n    function normalizeStyleData (data) {\n        var style = normalizeStyleBinding(data.style);\n        // static style is pre-processed into an object during compilation\n        // and is always a fresh object, so it's safe to merge into it\n        return data.staticStyle\n            ? extend(data.staticStyle, style)\n            : style\n    }\n\n// normalize possible array / string values into Object\n    function normalizeStyleBinding (bindingStyle) {\n        if (Array.isArray(bindingStyle)) {\n            return toObject(bindingStyle)\n        }\n        if (typeof bindingStyle === 'string') {\n            return parseStyleText(bindingStyle)\n        }\n        return bindingStyle\n    }\n\n    /**\n     * parent component style should be after child's\n     * so that parent component's style could override it\n     */\n    function getStyle (vnode, checkChild) {\n        var res = {};\n        var styleData;\n\n        if (checkChild) {\n            var childNode = vnode;\n            while (childNode.componentInstance) {\n                childNode = childNode.componentInstance._vnode;\n                if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n                    extend(res, styleData);\n                }\n            }\n        }\n\n        if ((styleData = normalizeStyleData(vnode.data))) {\n            extend(res, styleData);\n        }\n\n        var parentNode = vnode;\n        while ((parentNode = parentNode.parent)) {\n            if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n                extend(res, styleData);\n            }\n        }\n        return res\n    }\n\n    /*  */\n\n    var cssVarRE = /^--/;\n    var importantRE = /\\s*!important$/;\n    var setProp = function (el, name, val) {\n        /* istanbul ignore if */\n        if (cssVarRE.test(name)) {\n            el.style.setProperty(name, val);\n        } else if (importantRE.test(val)) {\n            el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n        } else {\n            var normalizedName = normalize(name);\n            if (Array.isArray(val)) {\n                // Support values array created by autoprefixer, e.g.\n                // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n                // Set them one by one, and the browser will only set those it can recognize\n                for (var i = 0, len = val.length; i < len; i++) {\n                    el.style[normalizedName] = val[i];\n                }\n            } else {\n                el.style[normalizedName] = val;\n            }\n        }\n    };\n\n    var vendorNames = ['Webkit', 'Moz', 'ms'];\n\n    var emptyStyle;\n    var normalize = cached(function (prop) {\n        emptyStyle = emptyStyle || document.createElement('div').style;\n        prop = camelize(prop);\n        if (prop !== 'filter' && (prop in emptyStyle)) {\n            return prop\n        }\n        var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n        for (var i = 0; i < vendorNames.length; i++) {\n            var name = vendorNames[i] + capName;\n            if (name in emptyStyle) {\n                return name\n            }\n        }\n    });\n\n    function updateStyle (oldVnode, vnode) {\n        var data = vnode.data;\n        var oldData = oldVnode.data;\n\n        if (isUndef(data.staticStyle) && isUndef(data.style) &&\n            isUndef(oldData.staticStyle) && isUndef(oldData.style)\n        ) {\n            return\n        }\n\n        var cur, name;\n        var el = vnode.elm;\n        var oldStaticStyle = oldData.staticStyle;\n        var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n        // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n        var oldStyle = oldStaticStyle || oldStyleBinding;\n\n        var style = normalizeStyleBinding(vnode.data.style) || {};\n\n        // store normalized style under a different key for next diff\n        // make sure to clone it if it's reactive, since the user likley wants\n        // to mutate it.\n        vnode.data.normalizedStyle = isDef(style.__ob__)\n            ? extend({}, style)\n            : style;\n\n        var newStyle = getStyle(vnode, true);\n\n        for (name in oldStyle) {\n            if (isUndef(newStyle[name])) {\n                setProp(el, name, '');\n            }\n        }\n        for (name in newStyle) {\n            cur = newStyle[name];\n            if (cur !== oldStyle[name]) {\n                // ie9 setting to null has no effect, must use empty string\n                setProp(el, name, cur == null ? '' : cur);\n            }\n        }\n    }\n\n    var style = {\n        create: updateStyle,\n        update: updateStyle\n    };\n\n    /*  */\n\n    /**\n     * Add class with compatibility for SVG since classList is not supported on\n     * SVG elements in IE\n     */\n    function addClass (el, cls) {\n        /* istanbul ignore if */\n        if (!cls || !(cls = cls.trim())) {\n            return\n        }\n\n        /* istanbul ignore else */\n        if (el.classList) {\n            if (cls.indexOf(' ') > -1) {\n                cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n            } else {\n                el.classList.add(cls);\n            }\n        } else {\n            var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n            if (cur.indexOf(' ' + cls + ' ') < 0) {\n                el.setAttribute('class', (cur + cls).trim());\n            }\n        }\n    }\n\n    /**\n     * Remove class with compatibility for SVG since classList is not supported on\n     * SVG elements in IE\n     */\n    function removeClass (el, cls) {\n        /* istanbul ignore if */\n        if (!cls || !(cls = cls.trim())) {\n            return\n        }\n\n        /* istanbul ignore else */\n        if (el.classList) {\n            if (cls.indexOf(' ') > -1) {\n                cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n            } else {\n                el.classList.remove(cls);\n            }\n            if (!el.classList.length) {\n                el.removeAttribute('class');\n            }\n        } else {\n            var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n            var tar = ' ' + cls + ' ';\n            while (cur.indexOf(tar) >= 0) {\n                cur = cur.replace(tar, ' ');\n            }\n            cur = cur.trim();\n            if (cur) {\n                el.setAttribute('class', cur);\n            } else {\n                el.removeAttribute('class');\n            }\n        }\n    }\n\n    /*  */\n\n    function resolveTransition (def$$1) {\n        if (!def$$1) {\n            return\n        }\n        /* istanbul ignore else */\n        if (typeof def$$1 === 'object') {\n            var res = {};\n            if (def$$1.css !== false) {\n                extend(res, autoCssTransition(def$$1.name || 'v'));\n            }\n            extend(res, def$$1);\n            return res\n        } else if (typeof def$$1 === 'string') {\n            return autoCssTransition(def$$1)\n        }\n    }\n\n    var autoCssTransition = cached(function (name) {\n        return {\n            enterClass: (name + \"-enter\"),\n            enterToClass: (name + \"-enter-to\"),\n            enterActiveClass: (name + \"-enter-active\"),\n            leaveClass: (name + \"-leave\"),\n            leaveToClass: (name + \"-leave-to\"),\n            leaveActiveClass: (name + \"-leave-active\")\n        }\n    });\n\n    var hasTransition = inBrowser && !isIE9;\n    var TRANSITION = 'transition';\n    var ANIMATION = 'animation';\n\n// Transition property/event sniffing\n    var transitionProp = 'transition';\n    var transitionEndEvent = 'transitionend';\n    var animationProp = 'animation';\n    var animationEndEvent = 'animationend';\n    if (hasTransition) {\n        /* istanbul ignore if */\n        if (window.ontransitionend === undefined &&\n            window.onwebkittransitionend !== undefined\n        ) {\n            transitionProp = 'WebkitTransition';\n            transitionEndEvent = 'webkitTransitionEnd';\n        }\n        if (window.onanimationend === undefined &&\n            window.onwebkitanimationend !== undefined\n        ) {\n            animationProp = 'WebkitAnimation';\n            animationEndEvent = 'webkitAnimationEnd';\n        }\n    }\n\n// binding to window is necessary to make hot reload work in IE in strict mode\n    var raf = inBrowser && window.requestAnimationFrame\n        ? window.requestAnimationFrame.bind(window)\n        : setTimeout;\n\n    function nextFrame (fn) {\n        raf(function () {\n            raf(fn);\n        });\n    }\n\n    function addTransitionClass (el, cls) {\n        var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n        if (transitionClasses.indexOf(cls) < 0) {\n            transitionClasses.push(cls);\n            addClass(el, cls);\n        }\n    }\n\n    function removeTransitionClass (el, cls) {\n        if (el._transitionClasses) {\n            remove(el._transitionClasses, cls);\n        }\n        removeClass(el, cls);\n    }\n\n    function whenTransitionEnds (\n        el,\n        expectedType,\n        cb\n    ) {\n        var ref = getTransitionInfo(el, expectedType);\n        var type = ref.type;\n        var timeout = ref.timeout;\n        var propCount = ref.propCount;\n        if (!type) { return cb() }\n        var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n        var ended = 0;\n        var end = function () {\n            el.removeEventListener(event, onEnd);\n            cb();\n        };\n        var onEnd = function (e) {\n            if (e.target === el) {\n                if (++ended >= propCount) {\n                    end();\n                }\n            }\n        };\n        setTimeout(function () {\n            if (ended < propCount) {\n                end();\n            }\n        }, timeout + 1);\n        el.addEventListener(event, onEnd);\n    }\n\n    var transformRE = /\\b(transform|all)(,|$)/;\n\n    function getTransitionInfo (el, expectedType) {\n        var styles = window.getComputedStyle(el);\n        var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n        var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n        var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n        var animationDelays = styles[animationProp + 'Delay'].split(', ');\n        var animationDurations = styles[animationProp + 'Duration'].split(', ');\n        var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n        var type;\n        var timeout = 0;\n        var propCount = 0;\n        /* istanbul ignore if */\n        if (expectedType === TRANSITION) {\n            if (transitionTimeout > 0) {\n                type = TRANSITION;\n                timeout = transitionTimeout;\n                propCount = transitionDurations.length;\n            }\n        } else if (expectedType === ANIMATION) {\n            if (animationTimeout > 0) {\n                type = ANIMATION;\n                timeout = animationTimeout;\n                propCount = animationDurations.length;\n            }\n        } else {\n            timeout = Math.max(transitionTimeout, animationTimeout);\n            type = timeout > 0\n                ? transitionTimeout > animationTimeout\n                ? TRANSITION\n                : ANIMATION\n                : null;\n            propCount = type\n                ? type === TRANSITION\n                ? transitionDurations.length\n                : animationDurations.length\n                : 0;\n        }\n        var hasTransform =\n            type === TRANSITION &&\n            transformRE.test(styles[transitionProp + 'Property']);\n        return {\n            type: type,\n            timeout: timeout,\n            propCount: propCount,\n            hasTransform: hasTransform\n        }\n    }\n\n    function getTimeout (delays, durations) {\n        /* istanbul ignore next */\n        while (delays.length < durations.length) {\n            delays = delays.concat(delays);\n        }\n\n        return Math.max.apply(null, durations.map(function (d, i) {\n            return toMs(d) + toMs(delays[i])\n        }))\n    }\n\n    function toMs (s) {\n        return Number(s.slice(0, -1)) * 1000\n    }\n\n    /*  */\n\n    function enter (vnode, toggleDisplay) {\n        var el = vnode.elm;\n\n        // call leave callback now\n        if (isDef(el._leaveCb)) {\n            el._leaveCb.cancelled = true;\n            el._leaveCb();\n        }\n\n        var data = resolveTransition(vnode.data.transition);\n        if (isUndef(data)) {\n            return\n        }\n\n        /* istanbul ignore if */\n        if (isDef(el._enterCb) || el.nodeType !== 1) {\n            return\n        }\n\n        var css = data.css;\n        var type = data.type;\n        var enterClass = data.enterClass;\n        var enterToClass = data.enterToClass;\n        var enterActiveClass = data.enterActiveClass;\n        var appearClass = data.appearClass;\n        var appearToClass = data.appearToClass;\n        var appearActiveClass = data.appearActiveClass;\n        var beforeEnter = data.beforeEnter;\n        var enter = data.enter;\n        var afterEnter = data.afterEnter;\n        var enterCancelled = data.enterCancelled;\n        var beforeAppear = data.beforeAppear;\n        var appear = data.appear;\n        var afterAppear = data.afterAppear;\n        var appearCancelled = data.appearCancelled;\n        var duration = data.duration;\n\n        // activeInstance will always be the <transition> component managing this\n        // transition. One edge case to check is when the <transition> is placed\n        // as the root node of a child component. In that case we need to check\n        // <transition>'s parent for appear check.\n        var context = activeInstance;\n        var transitionNode = activeInstance.$vnode;\n        while (transitionNode && transitionNode.parent) {\n            transitionNode = transitionNode.parent;\n            context = transitionNode.context;\n        }\n\n        var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n        if (isAppear && !appear && appear !== '') {\n            return\n        }\n\n        var startClass = isAppear && appearClass\n            ? appearClass\n            : enterClass;\n        var activeClass = isAppear && appearActiveClass\n            ? appearActiveClass\n            : enterActiveClass;\n        var toClass = isAppear && appearToClass\n            ? appearToClass\n            : enterToClass;\n\n        var beforeEnterHook = isAppear\n            ? (beforeAppear || beforeEnter)\n            : beforeEnter;\n        var enterHook = isAppear\n            ? (typeof appear === 'function' ? appear : enter)\n            : enter;\n        var afterEnterHook = isAppear\n            ? (afterAppear || afterEnter)\n            : afterEnter;\n        var enterCancelledHook = isAppear\n            ? (appearCancelled || enterCancelled)\n            : enterCancelled;\n\n        var explicitEnterDuration = toNumber(\n            isObject(duration)\n                ? duration.enter\n                : duration\n        );\n\n        if (\"development\" !== 'production' && explicitEnterDuration != null) {\n            checkDuration(explicitEnterDuration, 'enter', vnode);\n        }\n\n        var expectsCSS = css !== false && !isIE9;\n        var userWantsControl = getHookArgumentsLength(enterHook);\n\n        var cb = el._enterCb = once(function () {\n            if (expectsCSS) {\n                removeTransitionClass(el, toClass);\n                removeTransitionClass(el, activeClass);\n            }\n            if (cb.cancelled) {\n                if (expectsCSS) {\n                    removeTransitionClass(el, startClass);\n                }\n                enterCancelledHook && enterCancelledHook(el);\n            } else {\n                afterEnterHook && afterEnterHook(el);\n            }\n            el._enterCb = null;\n        });\n\n        if (!vnode.data.show) {\n            // remove pending leave element on enter by injecting an insert hook\n            mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {\n                var parent = el.parentNode;\n                var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n                if (pendingNode &&\n                    pendingNode.tag === vnode.tag &&\n                    pendingNode.elm._leaveCb\n                ) {\n                    pendingNode.elm._leaveCb();\n                }\n                enterHook && enterHook(el, cb);\n            });\n        }\n\n        // start enter transition\n        beforeEnterHook && beforeEnterHook(el);\n        if (expectsCSS) {\n            addTransitionClass(el, startClass);\n            addTransitionClass(el, activeClass);\n            nextFrame(function () {\n                addTransitionClass(el, toClass);\n                removeTransitionClass(el, startClass);\n                if (!cb.cancelled && !userWantsControl) {\n                    if (isValidDuration(explicitEnterDuration)) {\n                        setTimeout(cb, explicitEnterDuration);\n                    } else {\n                        whenTransitionEnds(el, type, cb);\n                    }\n                }\n            });\n        }\n\n        if (vnode.data.show) {\n            toggleDisplay && toggleDisplay();\n            enterHook && enterHook(el, cb);\n        }\n\n        if (!expectsCSS && !userWantsControl) {\n            cb();\n        }\n    }\n\n    function leave (vnode, rm) {\n        var el = vnode.elm;\n\n        // call enter callback now\n        if (isDef(el._enterCb)) {\n            el._enterCb.cancelled = true;\n            el._enterCb();\n        }\n\n        var data = resolveTransition(vnode.data.transition);\n        if (isUndef(data)) {\n            return rm()\n        }\n\n        /* istanbul ignore if */\n        if (isDef(el._leaveCb) || el.nodeType !== 1) {\n            return\n        }\n\n        var css = data.css;\n        var type = data.type;\n        var leaveClass = data.leaveClass;\n        var leaveToClass = data.leaveToClass;\n        var leaveActiveClass = data.leaveActiveClass;\n        var beforeLeave = data.beforeLeave;\n        var leave = data.leave;\n        var afterLeave = data.afterLeave;\n        var leaveCancelled = data.leaveCancelled;\n        var delayLeave = data.delayLeave;\n        var duration = data.duration;\n\n        var expectsCSS = css !== false && !isIE9;\n        var userWantsControl = getHookArgumentsLength(leave);\n\n        var explicitLeaveDuration = toNumber(\n            isObject(duration)\n                ? duration.leave\n                : duration\n        );\n\n        if (\"development\" !== 'production' && isDef(explicitLeaveDuration)) {\n            checkDuration(explicitLeaveDuration, 'leave', vnode);\n        }\n\n        var cb = el._leaveCb = once(function () {\n            if (el.parentNode && el.parentNode._pending) {\n                el.parentNode._pending[vnode.key] = null;\n            }\n            if (expectsCSS) {\n                removeTransitionClass(el, leaveToClass);\n                removeTransitionClass(el, leaveActiveClass);\n            }\n            if (cb.cancelled) {\n                if (expectsCSS) {\n                    removeTransitionClass(el, leaveClass);\n                }\n                leaveCancelled && leaveCancelled(el);\n            } else {\n                rm();\n                afterLeave && afterLeave(el);\n            }\n            el._leaveCb = null;\n        });\n\n        if (delayLeave) {\n            delayLeave(performLeave);\n        } else {\n            performLeave();\n        }\n\n        function performLeave () {\n            // the delayed leave may have already been cancelled\n            if (cb.cancelled) {\n                return\n            }\n            // record leaving element\n            if (!vnode.data.show) {\n                (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n            }\n            beforeLeave && beforeLeave(el);\n            if (expectsCSS) {\n                addTransitionClass(el, leaveClass);\n                addTransitionClass(el, leaveActiveClass);\n                nextFrame(function () {\n                    addTransitionClass(el, leaveToClass);\n                    removeTransitionClass(el, leaveClass);\n                    if (!cb.cancelled && !userWantsControl) {\n                        if (isValidDuration(explicitLeaveDuration)) {\n                            setTimeout(cb, explicitLeaveDuration);\n                        } else {\n                            whenTransitionEnds(el, type, cb);\n                        }\n                    }\n                });\n            }\n            leave && leave(el, cb);\n            if (!expectsCSS && !userWantsControl) {\n                cb();\n            }\n        }\n    }\n\n// only used in dev mode\n    function checkDuration (val, name, vnode) {\n        if (typeof val !== 'number') {\n            warn(\n                \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n                \"got \" + (JSON.stringify(val)) + \".\",\n                vnode.context\n            );\n        } else if (isNaN(val)) {\n            warn(\n                \"<transition> explicit \" + name + \" duration is NaN - \" +\n                'the duration expression might be incorrect.',\n                vnode.context\n            );\n        }\n    }\n\n    function isValidDuration (val) {\n        return typeof val === 'number' && !isNaN(val)\n    }\n\n    /**\n     * Normalize a transition hook's argument length. The hook may be:\n     * - a merged hook (invoker) with the original in .fns\n     * - a wrapped component method (check ._length)\n     * - a plain function (.length)\n     */\n    function getHookArgumentsLength (fn) {\n        if (isUndef(fn)) {\n            return false\n        }\n        var invokerFns = fn.fns;\n        if (isDef(invokerFns)) {\n            // invoker\n            return getHookArgumentsLength(\n                Array.isArray(invokerFns)\n                    ? invokerFns[0]\n                    : invokerFns\n            )\n        } else {\n            return (fn._length || fn.length) > 1\n        }\n    }\n\n    function _enter (_, vnode) {\n        if (vnode.data.show !== true) {\n            enter(vnode);\n        }\n    }\n\n    var transition = inBrowser ? {\n        create: _enter,\n        activate: _enter,\n        remove: function remove$$1 (vnode, rm) {\n            /* istanbul ignore else */\n            if (vnode.data.show !== true) {\n                leave(vnode, rm);\n            } else {\n                rm();\n            }\n        }\n    } : {};\n\n    var platformModules = [\n        attrs,\n        klass,\n        events,\n        domProps,\n        style,\n        transition\n    ];\n\n    /*  */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\n    var modules = platformModules.concat(baseModules);\n\n    var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n    /**\n     * Not type checking this file because flow doesn't like attaching\n     * properties to Elements.\n     */\n\n    var isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n    /* istanbul ignore if */\n    if (isIE9) {\n        // http://www.matts411.com/post/internet-explorer-9-oninput/\n        document.addEventListener('selectionchange', function () {\n            var el = document.activeElement;\n            if (el && el.vmodel) {\n                trigger(el, 'input');\n            }\n        });\n    }\n\n    var model$1 = {\n        inserted: function inserted (el, binding, vnode) {\n            if (vnode.tag === 'select') {\n                var cb = function () {\n                    setSelected(el, binding, vnode.context);\n                };\n                cb();\n                /* istanbul ignore if */\n                if (isIE || isEdge) {\n                    setTimeout(cb, 0);\n                }\n                el._vOptions = [].map.call(el.options, getValue);\n            } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n                el._vModifiers = binding.modifiers;\n                if (!binding.modifiers.lazy) {\n                    // Safari < 10.2 & UIWebView doesn't fire compositionend when\n                    // switching focus before confirming composition choice\n                    // this also fixes the issue where some browsers e.g. iOS Chrome\n                    // fires \"change\" instead of \"input\" on autocomplete.\n                    el.addEventListener('change', onCompositionEnd);\n                    if (!isAndroid) {\n                        el.addEventListener('compositionstart', onCompositionStart);\n                        el.addEventListener('compositionend', onCompositionEnd);\n                    }\n                    /* istanbul ignore if */\n                    if (isIE9) {\n                        el.vmodel = true;\n                    }\n                }\n            }\n        },\n        componentUpdated: function componentUpdated (el, binding, vnode) {\n            if (vnode.tag === 'select') {\n                setSelected(el, binding, vnode.context);\n                // in case the options rendered by v-for have changed,\n                // it's possible that the value is out-of-sync with the rendered options.\n                // detect such cases and filter out values that no longer has a matching\n                // option in the DOM.\n                var prevOptions = el._vOptions;\n                var curOptions = el._vOptions = [].map.call(el.options, getValue);\n                if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n                    trigger(el, 'change');\n                }\n            }\n        }\n    };\n\n    function setSelected (el, binding, vm) {\n        var value = binding.value;\n        var isMultiple = el.multiple;\n        if (isMultiple && !Array.isArray(value)) {\n            \"development\" !== 'production' && warn(\n                \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n                \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n                vm\n            );\n            return\n        }\n        var selected, option;\n        for (var i = 0, l = el.options.length; i < l; i++) {\n            option = el.options[i];\n            if (isMultiple) {\n                selected = looseIndexOf(value, getValue(option)) > -1;\n                if (option.selected !== selected) {\n                    option.selected = selected;\n                }\n            } else {\n                if (looseEqual(getValue(option), value)) {\n                    if (el.selectedIndex !== i) {\n                        el.selectedIndex = i;\n                    }\n                    return\n                }\n            }\n        }\n        if (!isMultiple) {\n            el.selectedIndex = -1;\n        }\n    }\n\n    function getValue (option) {\n        return '_value' in option\n            ? option._value\n            : option.value\n    }\n\n    function onCompositionStart (e) {\n        e.target.composing = true;\n    }\n\n    function onCompositionEnd (e) {\n        // prevent triggering an input event for no reason\n        if (!e.target.composing) { return }\n        e.target.composing = false;\n        trigger(e.target, 'input');\n    }\n\n    function trigger (el, type) {\n        var e = document.createEvent('HTMLEvents');\n        e.initEvent(type, true, true);\n        el.dispatchEvent(e);\n    }\n\n    /*  */\n\n// recursively search for possible transition defined inside the component root\n    function locateNode (vnode) {\n        return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n            ? locateNode(vnode.componentInstance._vnode)\n            : vnode\n    }\n\n    var show = {\n        bind: function bind (el, ref, vnode) {\n            var value = ref.value;\n\n            vnode = locateNode(vnode);\n            var transition$$1 = vnode.data && vnode.data.transition;\n            var originalDisplay = el.__vOriginalDisplay =\n                el.style.display === 'none' ? '' : el.style.display;\n            if (value && transition$$1) {\n                vnode.data.show = true;\n                enter(vnode, function () {\n                    el.style.display = originalDisplay;\n                });\n            } else {\n                el.style.display = value ? originalDisplay : 'none';\n            }\n        },\n\n        update: function update (el, ref, vnode) {\n            var value = ref.value;\n            var oldValue = ref.oldValue;\n\n            /* istanbul ignore if */\n            if (value === oldValue) { return }\n            vnode = locateNode(vnode);\n            var transition$$1 = vnode.data && vnode.data.transition;\n            if (transition$$1) {\n                vnode.data.show = true;\n                if (value) {\n                    enter(vnode, function () {\n                        el.style.display = el.__vOriginalDisplay;\n                    });\n                } else {\n                    leave(vnode, function () {\n                        el.style.display = 'none';\n                    });\n                }\n            } else {\n                el.style.display = value ? el.__vOriginalDisplay : 'none';\n            }\n        },\n\n        unbind: function unbind (\n            el,\n            binding,\n            vnode,\n            oldVnode,\n            isDestroy\n        ) {\n            if (!isDestroy) {\n                el.style.display = el.__vOriginalDisplay;\n            }\n        }\n    };\n\n    var platformDirectives = {\n        model: model$1,\n        show: show\n    };\n\n    /*  */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\n    var transitionProps = {\n        name: String,\n        appear: Boolean,\n        css: Boolean,\n        mode: String,\n        type: String,\n        enterClass: String,\n        leaveClass: String,\n        enterToClass: String,\n        leaveToClass: String,\n        enterActiveClass: String,\n        leaveActiveClass: String,\n        appearClass: String,\n        appearActiveClass: String,\n        appearToClass: String,\n        duration: [Number, String, Object]\n    };\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\n    function getRealChild (vnode) {\n        var compOptions = vnode && vnode.componentOptions;\n        if (compOptions && compOptions.Ctor.options.abstract) {\n            return getRealChild(getFirstComponentChild(compOptions.children))\n        } else {\n            return vnode\n        }\n    }\n\n    function extractTransitionData (comp) {\n        var data = {};\n        var options = comp.$options;\n        // props\n        for (var key in options.propsData) {\n            data[key] = comp[key];\n        }\n        // events.\n        // extract listeners and pass them directly to the transition methods\n        var listeners = options._parentListeners;\n        for (var key$1 in listeners) {\n            data[camelize(key$1)] = listeners[key$1];\n        }\n        return data\n    }\n\n    function placeholder (h, rawChild) {\n        if (/\\d-keep-alive$/.test(rawChild.tag)) {\n            return h('keep-alive', {\n                props: rawChild.componentOptions.propsData\n            })\n        }\n    }\n\n    function hasParentTransition (vnode) {\n        while ((vnode = vnode.parent)) {\n            if (vnode.data.transition) {\n                return true\n            }\n        }\n    }\n\n    function isSameChild (child, oldChild) {\n        return oldChild.key === child.key && oldChild.tag === child.tag\n    }\n\n    function isAsyncPlaceholder (node) {\n        return node.isComment && node.asyncFactory\n    }\n\n    var Transition = {\n        name: 'transition',\n        props: transitionProps,\n        abstract: true,\n\n        render: function render (h) {\n            var this$1 = this;\n\n            var children = this.$options._renderChildren;\n            if (!children) {\n                return\n            }\n\n            // filter out text nodes (possible whitespaces)\n            children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n            /* istanbul ignore if */\n            if (!children.length) {\n                return\n            }\n\n            // warn multiple elements\n            if (\"development\" !== 'production' && children.length > 1) {\n                warn(\n                    '<transition> can only be used on a single element. Use ' +\n                    '<transition-group> for lists.',\n                    this.$parent\n                );\n            }\n\n            var mode = this.mode;\n\n            // warn invalid mode\n            if (\"development\" !== 'production' &&\n                mode && mode !== 'in-out' && mode !== 'out-in'\n            ) {\n                warn(\n                    'invalid <transition> mode: ' + mode,\n                    this.$parent\n                );\n            }\n\n            var rawChild = children[0];\n\n            // if this is a component root node and the component's\n            // parent container node also has transition, skip.\n            if (hasParentTransition(this.$vnode)) {\n                return rawChild\n            }\n\n            // apply transition data to child\n            // use getRealChild() to ignore abstract components e.g. keep-alive\n            var child = getRealChild(rawChild);\n            /* istanbul ignore if */\n            if (!child) {\n                return rawChild\n            }\n\n            if (this._leaving) {\n                return placeholder(h, rawChild)\n            }\n\n            // ensure a key that is unique to the vnode type and to this transition\n            // component instance. This key will be used to remove pending leaving nodes\n            // during entering.\n            var id = \"__transition-\" + (this._uid) + \"-\";\n            child.key = child.key == null\n                ? child.isComment\n                ? id + 'comment'\n                : id + child.tag\n                : isPrimitive(child.key)\n                ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n                : child.key;\n\n            var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n            var oldRawChild = this._vnode;\n            var oldChild = getRealChild(oldRawChild);\n\n            // mark v-show\n            // so that the transition module can hand over the control to the directive\n            if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n                child.data.show = true;\n            }\n\n            if (\n                oldChild &&\n                oldChild.data &&\n                !isSameChild(child, oldChild) &&\n                !isAsyncPlaceholder(oldChild)\n            ) {\n                // replace old child transition data with fresh one\n                // important for dynamic transitions!\n                var oldData = oldChild && (oldChild.data.transition = extend({}, data));\n                // handle transition mode\n                if (mode === 'out-in') {\n                    // return placeholder node and queue update when leave finishes\n                    this._leaving = true;\n                    mergeVNodeHook(oldData, 'afterLeave', function () {\n                        this$1._leaving = false;\n                        this$1.$forceUpdate();\n                    });\n                    return placeholder(h, rawChild)\n                } else if (mode === 'in-out') {\n                    if (isAsyncPlaceholder(child)) {\n                        return oldRawChild\n                    }\n                    var delayedLeave;\n                    var performLeave = function () { delayedLeave(); };\n                    mergeVNodeHook(data, 'afterEnter', performLeave);\n                    mergeVNodeHook(data, 'enterCancelled', performLeave);\n                    mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n                }\n            }\n\n            return rawChild\n        }\n    };\n\n    /*  */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\n    var props = extend({\n        tag: String,\n        moveClass: String\n    }, transitionProps);\n\n    delete props.mode;\n\n    var TransitionGroup = {\n        props: props,\n\n        render: function render (h) {\n            var tag = this.tag || this.$vnode.data.tag || 'span';\n            var map = Object.create(null);\n            var prevChildren = this.prevChildren = this.children;\n            var rawChildren = this.$slots.default || [];\n            var children = this.children = [];\n            var transitionData = extractTransitionData(this);\n\n            for (var i = 0; i < rawChildren.length; i++) {\n                var c = rawChildren[i];\n                if (c.tag) {\n                    if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n                        children.push(c);\n                        map[c.key] = c\n                        ;(c.data || (c.data = {})).transition = transitionData;\n                    } else {\n                        var opts = c.componentOptions;\n                        var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n                        warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n                    }\n                }\n            }\n\n            if (prevChildren) {\n                var kept = [];\n                var removed = [];\n                for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n                    var c$1 = prevChildren[i$1];\n                    c$1.data.transition = transitionData;\n                    c$1.data.pos = c$1.elm.getBoundingClientRect();\n                    if (map[c$1.key]) {\n                        kept.push(c$1);\n                    } else {\n                        removed.push(c$1);\n                    }\n                }\n                this.kept = h(tag, null, kept);\n                this.removed = removed;\n            }\n\n            return h(tag, null, children)\n        },\n\n        beforeUpdate: function beforeUpdate () {\n            // force removing pass\n            this.__patch__(\n                this._vnode,\n                this.kept,\n                false, // hydrating\n                true // removeOnly (!important, avoids unnecessary moves)\n            );\n            this._vnode = this.kept;\n        },\n\n        updated: function updated () {\n            var children = this.prevChildren;\n            var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n            if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n                return\n            }\n\n            // we divide the work into three loops to avoid mixing DOM reads and writes\n            // in each iteration - which helps prevent layout thrashing.\n            children.forEach(callPendingCbs);\n            children.forEach(recordPosition);\n            children.forEach(applyTranslation);\n\n            // force reflow to put everything in position\n            var body = document.body;\n            var f = body.offsetHeight; // eslint-disable-line\n\n            children.forEach(function (c) {\n                if (c.data.moved) {\n                    var el = c.elm;\n                    var s = el.style;\n                    addTransitionClass(el, moveClass);\n                    s.transform = s.WebkitTransform = s.transitionDuration = '';\n                    el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n                        if (!e || /transform$/.test(e.propertyName)) {\n                            el.removeEventListener(transitionEndEvent, cb);\n                            el._moveCb = null;\n                            removeTransitionClass(el, moveClass);\n                        }\n                    });\n                }\n            });\n        },\n\n        methods: {\n            hasMove: function hasMove (el, moveClass) {\n                /* istanbul ignore if */\n                if (!hasTransition) {\n                    return false\n                }\n                /* istanbul ignore if */\n                if (this._hasMove) {\n                    return this._hasMove\n                }\n                // Detect whether an element with the move class applied has\n                // CSS transitions. Since the element may be inside an entering\n                // transition at this very moment, we make a clone of it and remove\n                // all other transition classes applied to ensure only the move class\n                // is applied.\n                var clone = el.cloneNode();\n                if (el._transitionClasses) {\n                    el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n                }\n                addClass(clone, moveClass);\n                clone.style.display = 'none';\n                this.$el.appendChild(clone);\n                var info = getTransitionInfo(clone);\n                this.$el.removeChild(clone);\n                return (this._hasMove = info.hasTransform)\n            }\n        }\n    };\n\n    function callPendingCbs (c) {\n        /* istanbul ignore if */\n        if (c.elm._moveCb) {\n            c.elm._moveCb();\n        }\n        /* istanbul ignore if */\n        if (c.elm._enterCb) {\n            c.elm._enterCb();\n        }\n    }\n\n    function recordPosition (c) {\n        c.data.newPos = c.elm.getBoundingClientRect();\n    }\n\n    function applyTranslation (c) {\n        var oldPos = c.data.pos;\n        var newPos = c.data.newPos;\n        var dx = oldPos.left - newPos.left;\n        var dy = oldPos.top - newPos.top;\n        if (dx || dy) {\n            c.data.moved = true;\n            var s = c.elm.style;\n            s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n            s.transitionDuration = '0s';\n        }\n    }\n\n    var platformComponents = {\n        Transition: Transition,\n        TransitionGroup: TransitionGroup\n    };\n\n    /*  */\n\n// install platform specific utils\n    Vue$3.config.mustUseProp = mustUseProp;\n    Vue$3.config.isReservedTag = isReservedTag;\n    Vue$3.config.isReservedAttr = isReservedAttr;\n    Vue$3.config.getTagNamespace = getTagNamespace;\n    Vue$3.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\n    extend(Vue$3.options.directives, platformDirectives);\n    extend(Vue$3.options.components, platformComponents);\n\n// install platform patch function\n    Vue$3.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\n    Vue$3.prototype.$mount = function (\n        el,\n        hydrating\n    ) {\n        el = el && inBrowser ? query(el) : undefined;\n        return mountComponent(this, el, hydrating)\n    };\n\n// devtools global hook\n    /* istanbul ignore next */\n    setTimeout(function () {\n        if (config.devtools) {\n            if (devtools) {\n                devtools.emit('init', Vue$3);\n            } else if (\"development\" !== 'production' && isChrome) {\n                console[console.info ? 'info' : 'log'](\n                    'Download the Vue Devtools extension for a better development experience:\\n' +\n                    'https://github.com/vuejs/vue-devtools'\n                );\n            }\n        }\n        if (\"development\" !== 'production' &&\n            config.productionTip !== false &&\n            inBrowser && typeof console !== 'undefined'\n        ) {\n            console[console.info ? 'info' : 'log'](\n                \"You are running Vue in development mode.\\n\" +\n                \"Make sure to turn on production mode when deploying for production.\\n\" +\n                \"See more tips at https://vuejs.org/guide/deployment.html\"\n            );\n        }\n    }, 0);\n\n    /*  */\n\n// check whether current browser encodes a char inside attribute values\n    function shouldDecode (content, encoded) {\n        var div = document.createElement('div');\n        div.innerHTML = \"<div a=\\\"\" + content + \"\\\"/>\";\n        return div.innerHTML.indexOf(encoded) > 0\n    }\n\n// #3663\n// IE encodes newlines inside attribute values while other browsers don't\n    var shouldDecodeNewlines = inBrowser ? shouldDecode('\\n', '&#10;') : false;\n\n    /*  */\n\n    var defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\n    var regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\n    var buildRegex = cached(function (delimiters) {\n        var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n        var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n        return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n    });\n\n    function parseText (\n        text,\n        delimiters\n    ) {\n        var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n        if (!tagRE.test(text)) {\n            return\n        }\n        var tokens = [];\n        var lastIndex = tagRE.lastIndex = 0;\n        var match, index;\n        while ((match = tagRE.exec(text))) {\n            index = match.index;\n            // push text token\n            if (index > lastIndex) {\n                tokens.push(JSON.stringify(text.slice(lastIndex, index)));\n            }\n            // tag token\n            var exp = parseFilters(match[1].trim());\n            tokens.push((\"_s(\" + exp + \")\"));\n            lastIndex = index + match[0].length;\n        }\n        if (lastIndex < text.length) {\n            tokens.push(JSON.stringify(text.slice(lastIndex)));\n        }\n        return tokens.join('+')\n    }\n\n    /*  */\n\n    function transformNode (el, options) {\n        var warn = options.warn || baseWarn;\n        var staticClass = getAndRemoveAttr(el, 'class');\n        if (\"development\" !== 'production' && staticClass) {\n            var expression = parseText(staticClass, options.delimiters);\n            if (expression) {\n                warn(\n                    \"class=\\\"\" + staticClass + \"\\\": \" +\n                    'Interpolation inside attributes has been removed. ' +\n                    'Use v-bind or the colon shorthand instead. For example, ' +\n                    'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n                );\n            }\n        }\n        if (staticClass) {\n            el.staticClass = JSON.stringify(staticClass);\n        }\n        var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n        if (classBinding) {\n            el.classBinding = classBinding;\n        }\n    }\n\n    function genData (el) {\n        var data = '';\n        if (el.staticClass) {\n            data += \"staticClass:\" + (el.staticClass) + \",\";\n        }\n        if (el.classBinding) {\n            data += \"class:\" + (el.classBinding) + \",\";\n        }\n        return data\n    }\n\n    var klass$1 = {\n        staticKeys: ['staticClass'],\n        transformNode: transformNode,\n        genData: genData\n    };\n\n    /*  */\n\n    function transformNode$1 (el, options) {\n        var warn = options.warn || baseWarn;\n        var staticStyle = getAndRemoveAttr(el, 'style');\n        if (staticStyle) {\n            /* istanbul ignore if */\n            {\n                var expression = parseText(staticStyle, options.delimiters);\n                if (expression) {\n                    warn(\n                        \"style=\\\"\" + staticStyle + \"\\\": \" +\n                        'Interpolation inside attributes has been removed. ' +\n                        'Use v-bind or the colon shorthand instead. For example, ' +\n                        'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n                    );\n                }\n            }\n            el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n        }\n\n        var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n        if (styleBinding) {\n            el.styleBinding = styleBinding;\n        }\n    }\n\n    function genData$1 (el) {\n        var data = '';\n        if (el.staticStyle) {\n            data += \"staticStyle:\" + (el.staticStyle) + \",\";\n        }\n        if (el.styleBinding) {\n            data += \"style:(\" + (el.styleBinding) + \"),\";\n        }\n        return data\n    }\n\n    var style$1 = {\n        staticKeys: ['staticStyle'],\n        transformNode: transformNode$1,\n        genData: genData$1\n    };\n\n    var modules$1 = [\n        klass$1,\n        style$1\n    ];\n\n    /*  */\n\n    function text (el, dir) {\n        if (dir.value) {\n            addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n        }\n    }\n\n    /*  */\n\n    function html (el, dir) {\n        if (dir.value) {\n            addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n        }\n    }\n\n    var directives$1 = {\n        model: model,\n        text: text,\n        html: html\n    };\n\n    /*  */\n\n    var isUnaryTag = makeMap(\n        'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n        'link,meta,param,source,track,wbr'\n    );\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\n    var canBeLeftOpenTag = makeMap(\n        'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n    );\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\n    var isNonPhrasingTag = makeMap(\n        'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n        'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n        'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n        'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n        'title,tr,track'\n    );\n\n    /*  */\n\n    var baseOptions = {\n        expectHTML: true,\n        modules: modules$1,\n        directives: directives$1,\n        isPreTag: isPreTag,\n        isUnaryTag: isUnaryTag,\n        mustUseProp: mustUseProp,\n        canBeLeftOpenTag: canBeLeftOpenTag,\n        isReservedTag: isReservedTag,\n        getTagNamespace: getTagNamespace,\n        staticKeys: genStaticKeys(modules$1)\n    };\n\n    /*  */\n\n    var decoder;\n\n    var he = {\n        decode: function decode (html) {\n            decoder = decoder || document.createElement('div');\n            decoder.innerHTML = html;\n            return decoder.textContent\n        }\n    };\n\n    /**\n     * Not type-checking this file because it's mostly vendor code.\n     */\n\n    /*!\n     * HTML Parser By John Resig (ejohn.org)\n     * Modified by Juriy \"kangax\" Zaytsev\n     * Original code by Erik Arvidsson, Mozilla Public License\n     * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n     */\n\n// Regular Expressions for parsing tags and attributes\n    var singleAttrIdentifier = /([^\\s\"'<>/=]+)/;\n    var singleAttrAssign = /(?:=)/;\n    var singleAttrValues = [\n        // attr value double quotes\n        /\"([^\"]*)\"+/.source,\n        // attr value, single quotes\n        /'([^']*)'+/.source,\n        // attr value, no quotes\n        /([^\\s\"'=<>`]+)/.source\n    ];\n    var attribute = new RegExp(\n        '^\\\\s*' + singleAttrIdentifier.source +\n        '(?:\\\\s*(' + singleAttrAssign.source + ')' +\n        '\\\\s*(?:' + singleAttrValues.join('|') + '))?'\n    );\n\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\n    var ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\n    var qnameCapture = '((?:' + ncname + '\\\\:)?' + ncname + ')';\n    var startTagOpen = new RegExp('^<' + qnameCapture);\n    var startTagClose = /^\\s*(\\/?)>/;\n    var endTag = new RegExp('^<\\\\/' + qnameCapture + '[^>]*>');\n    var doctype = /^<!DOCTYPE [^>]+>/i;\n    var comment = /^<!--/;\n    var conditionalComment = /^<!\\[/;\n\n    var IS_REGEX_CAPTURING_BROKEN = false;\n    'x'.replace(/x(.)?/g, function (m, g) {\n        IS_REGEX_CAPTURING_BROKEN = g === '';\n    });\n\n// Special Elements (can contain anything)\n    var isPlainTextElement = makeMap('script,style,textarea', true);\n    var reCache = {};\n\n    var decodingMap = {\n        '&lt;': '<',\n        '&gt;': '>',\n        '&quot;': '\"',\n        '&amp;': '&',\n        '&#10;': '\\n'\n    };\n    var encodedAttr = /&(?:lt|gt|quot|amp);/g;\n    var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10);/g;\n\n// #5992\n    var isIgnoreNewlineTag = makeMap('pre,textarea', true);\n    var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\n    function decodeAttr (value, shouldDecodeNewlines) {\n        var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n        return value.replace(re, function (match) { return decodingMap[match]; })\n    }\n\n    function parseHTML (html, options) {\n        var stack = [];\n        var expectHTML = options.expectHTML;\n        var isUnaryTag$$1 = options.isUnaryTag || no;\n        var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n        var index = 0;\n        var last, lastTag;\n        while (html) {\n            last = html;\n            // Make sure we're not in a plaintext content element like script/style\n            if (!lastTag || !isPlainTextElement(lastTag)) {\n                var textEnd = html.indexOf('<');\n                if (textEnd === 0) {\n                    // Comment:\n                    if (comment.test(html)) {\n                        var commentEnd = html.indexOf('-->');\n\n                        if (commentEnd >= 0) {\n                            if (options.shouldKeepComment) {\n                                options.comment(html.substring(4, commentEnd));\n                            }\n                            advance(commentEnd + 3);\n                            continue\n                        }\n                    }\n\n                    // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n                    if (conditionalComment.test(html)) {\n                        var conditionalEnd = html.indexOf(']>');\n\n                        if (conditionalEnd >= 0) {\n                            advance(conditionalEnd + 2);\n                            continue\n                        }\n                    }\n\n                    // Doctype:\n                    var doctypeMatch = html.match(doctype);\n                    if (doctypeMatch) {\n                        advance(doctypeMatch[0].length);\n                        continue\n                    }\n\n                    // End tag:\n                    var endTagMatch = html.match(endTag);\n                    if (endTagMatch) {\n                        var curIndex = index;\n                        advance(endTagMatch[0].length);\n                        parseEndTag(endTagMatch[1], curIndex, index);\n                        continue\n                    }\n\n                    // Start tag:\n                    var startTagMatch = parseStartTag();\n                    if (startTagMatch) {\n                        handleStartTag(startTagMatch);\n                        if (shouldIgnoreFirstNewline(lastTag, html)) {\n                            advance(1);\n                        }\n                        continue\n                    }\n                }\n\n                var text = (void 0), rest = (void 0), next = (void 0);\n                if (textEnd >= 0) {\n                    rest = html.slice(textEnd);\n                    while (\n                    !endTag.test(rest) &&\n                    !startTagOpen.test(rest) &&\n                    !comment.test(rest) &&\n                    !conditionalComment.test(rest)\n                        ) {\n                        // < in plain text, be forgiving and treat it as text\n                        next = rest.indexOf('<', 1);\n                        if (next < 0) { break }\n                        textEnd += next;\n                        rest = html.slice(textEnd);\n                    }\n                    text = html.substring(0, textEnd);\n                    advance(textEnd);\n                }\n\n                if (textEnd < 0) {\n                    text = html;\n                    html = '';\n                }\n\n                if (options.chars && text) {\n                    options.chars(text);\n                }\n            } else {\n                var endTagLength = 0;\n                var stackedTag = lastTag.toLowerCase();\n                var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n                var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n                    endTagLength = endTag.length;\n                    if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n                        text = text\n                            .replace(/<!--([\\s\\S]*?)-->/g, '$1')\n                            .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n                    }\n                    if (shouldIgnoreFirstNewline(stackedTag, text)) {\n                        text = text.slice(1);\n                    }\n                    if (options.chars) {\n                        options.chars(text);\n                    }\n                    return ''\n                });\n                index += html.length - rest$1.length;\n                html = rest$1;\n                parseEndTag(stackedTag, index - endTagLength, index);\n            }\n\n            if (html === last) {\n                options.chars && options.chars(html);\n                if (\"development\" !== 'production' && !stack.length && options.warn) {\n                    options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n                }\n                break\n            }\n        }\n\n        // Clean up any remaining tags\n        parseEndTag();\n\n        function advance (n) {\n            index += n;\n            html = html.substring(n);\n        }\n\n        function parseStartTag () {\n            var start = html.match(startTagOpen);\n            if (start) {\n                var match = {\n                    tagName: start[1],\n                    attrs: [],\n                    start: index\n                };\n                advance(start[0].length);\n                var end, attr;\n                while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n                    advance(attr[0].length);\n                    match.attrs.push(attr);\n                }\n                if (end) {\n                    match.unarySlash = end[1];\n                    advance(end[0].length);\n                    match.end = index;\n                    return match\n                }\n            }\n        }\n\n        function handleStartTag (match) {\n            var tagName = match.tagName;\n            var unarySlash = match.unarySlash;\n\n            if (expectHTML) {\n                if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n                    parseEndTag(lastTag);\n                }\n                if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n                    parseEndTag(tagName);\n                }\n            }\n\n            var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n            var l = match.attrs.length;\n            var attrs = new Array(l);\n            for (var i = 0; i < l; i++) {\n                var args = match.attrs[i];\n                // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n                if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n                    if (args[3] === '') { delete args[3]; }\n                    if (args[4] === '') { delete args[4]; }\n                    if (args[5] === '') { delete args[5]; }\n                }\n                var value = args[3] || args[4] || args[5] || '';\n                attrs[i] = {\n                    name: args[1],\n                    value: decodeAttr(\n                        value,\n                        options.shouldDecodeNewlines\n                    )\n                };\n            }\n\n            if (!unary) {\n                stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n                lastTag = tagName;\n            }\n\n            if (options.start) {\n                options.start(tagName, attrs, unary, match.start, match.end);\n            }\n        }\n\n        function parseEndTag (tagName, start, end) {\n            var pos, lowerCasedTagName;\n            if (start == null) { start = index; }\n            if (end == null) { end = index; }\n\n            if (tagName) {\n                lowerCasedTagName = tagName.toLowerCase();\n            }\n\n            // Find the closest opened tag of the same type\n            if (tagName) {\n                for (pos = stack.length - 1; pos >= 0; pos--) {\n                    if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n                        break\n                    }\n                }\n            } else {\n                // If no tag name is provided, clean shop\n                pos = 0;\n            }\n\n            if (pos >= 0) {\n                // Close all the open elements, up the stack\n                for (var i = stack.length - 1; i >= pos; i--) {\n                    if (\"development\" !== 'production' &&\n                        (i > pos || !tagName) &&\n                        options.warn\n                    ) {\n                        options.warn(\n                            (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n                        );\n                    }\n                    if (options.end) {\n                        options.end(stack[i].tag, start, end);\n                    }\n                }\n\n                // Remove the open elements from the stack\n                stack.length = pos;\n                lastTag = pos && stack[pos - 1].tag;\n            } else if (lowerCasedTagName === 'br') {\n                if (options.start) {\n                    options.start(tagName, [], true, start, end);\n                }\n            } else if (lowerCasedTagName === 'p') {\n                if (options.start) {\n                    options.start(tagName, [], false, start, end);\n                }\n                if (options.end) {\n                    options.end(tagName, start, end);\n                }\n            }\n        }\n    }\n\n    /*  */\n\n    var onRE = /^@|^v-on:/;\n    var dirRE = /^v-|^@|^:/;\n    var forAliasRE = /(.*?)\\s+(?:in|of)\\s+(.*)/;\n    var forIteratorRE = /\\((\\{[^}]*\\}|[^,]*),([^,]*)(?:,([^,]*))?\\)/;\n\n    var argRE = /:(.*)$/;\n    var bindRE = /^:|^v-bind:/;\n    var modifierRE = /\\.[^.]+/g;\n\n    var decodeHTMLCached = cached(he.decode);\n\n// configurable state\n    var warn$2;\n    var delimiters;\n    var transforms;\n    var preTransforms;\n    var postTransforms;\n    var platformIsPreTag;\n    var platformMustUseProp;\n    var platformGetTagNamespace;\n\n    /**\n     * Convert HTML string to AST.\n     */\n    function parse (\n        template,\n        options\n    ) {\n        warn$2 = options.warn || baseWarn;\n\n        platformIsPreTag = options.isPreTag || no;\n        platformMustUseProp = options.mustUseProp || no;\n        platformGetTagNamespace = options.getTagNamespace || no;\n\n        transforms = pluckModuleFunction(options.modules, 'transformNode');\n        preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n        postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n        delimiters = options.delimiters;\n\n        var stack = [];\n        var preserveWhitespace = options.preserveWhitespace !== false;\n        var root;\n        var currentParent;\n        var inVPre = false;\n        var inPre = false;\n        var warned = false;\n\n        function warnOnce (msg) {\n            if (!warned) {\n                warned = true;\n                warn$2(msg);\n            }\n        }\n\n        function endPre (element) {\n            // check pre state\n            if (element.pre) {\n                inVPre = false;\n            }\n            if (platformIsPreTag(element.tag)) {\n                inPre = false;\n            }\n        }\n\n        parseHTML(template, {\n            warn: warn$2,\n            expectHTML: options.expectHTML,\n            isUnaryTag: options.isUnaryTag,\n            canBeLeftOpenTag: options.canBeLeftOpenTag,\n            shouldDecodeNewlines: options.shouldDecodeNewlines,\n            shouldKeepComment: options.comments,\n            start: function start (tag, attrs, unary) {\n                // check namespace.\n                // inherit parent ns if there is one\n                var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n                // handle IE svg bug\n                /* istanbul ignore if */\n                if (isIE && ns === 'svg') {\n                    attrs = guardIESVGBug(attrs);\n                }\n\n                var element = {\n                    type: 1,\n                    tag: tag,\n                    attrsList: attrs,\n                    attrsMap: makeAttrsMap(attrs),\n                    parent: currentParent,\n                    children: []\n                };\n                if (ns) {\n                    element.ns = ns;\n                }\n\n                if (isForbiddenTag(element) && !isServerRendering()) {\n                    element.forbidden = true;\n                    \"development\" !== 'production' && warn$2(\n                        'Templates should only be responsible for mapping the state to the ' +\n                        'UI. Avoid placing tags with side-effects in your templates, such as ' +\n                        \"<\" + tag + \">\" + ', as they will not be parsed.'\n                    );\n                }\n\n                // apply pre-transforms\n                for (var i = 0; i < preTransforms.length; i++) {\n                    preTransforms[i](element, options);\n                }\n\n                if (!inVPre) {\n                    processPre(element);\n                    if (element.pre) {\n                        inVPre = true;\n                    }\n                }\n                if (platformIsPreTag(element.tag)) {\n                    inPre = true;\n                }\n                if (inVPre) {\n                    processRawAttrs(element);\n                } else {\n                    processFor(element);\n                    processIf(element);\n                    processOnce(element);\n                    processKey(element);\n\n                    // determine whether this is a plain element after\n                    // removing structural attributes\n                    element.plain = !element.key && !attrs.length;\n\n                    processRef(element);\n                    processSlot(element);\n                    processComponent(element);\n                    for (var i$1 = 0; i$1 < transforms.length; i$1++) {\n                        transforms[i$1](element, options);\n                    }\n                    processAttrs(element);\n                }\n\n                function checkRootConstraints (el) {\n                    {\n                        if (el.tag === 'slot' || el.tag === 'template') {\n                            warnOnce(\n                                \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n                                'contain multiple nodes.'\n                            );\n                        }\n                        if (el.attrsMap.hasOwnProperty('v-for')) {\n                            warnOnce(\n                                'Cannot use v-for on stateful component root element because ' +\n                                'it renders multiple elements.'\n                            );\n                        }\n                    }\n                }\n\n                // tree management\n                if (!root) {\n                    root = element;\n                    checkRootConstraints(root);\n                } else if (!stack.length) {\n                    // allow root elements with v-if, v-else-if and v-else\n                    if (root.if && (element.elseif || element.else)) {\n                        checkRootConstraints(element);\n                        addIfCondition(root, {\n                            exp: element.elseif,\n                            block: element\n                        });\n                    } else {\n                        warnOnce(\n                            \"Component template should contain exactly one root element. \" +\n                            \"If you are using v-if on multiple elements, \" +\n                            \"use v-else-if to chain them instead.\"\n                        );\n                    }\n                }\n                if (currentParent && !element.forbidden) {\n                    if (element.elseif || element.else) {\n                        processIfConditions(element, currentParent);\n                    } else if (element.slotScope) { // scoped slot\n                        currentParent.plain = false;\n                        var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n                    } else {\n                        currentParent.children.push(element);\n                        element.parent = currentParent;\n                    }\n                }\n                if (!unary) {\n                    currentParent = element;\n                    stack.push(element);\n                } else {\n                    endPre(element);\n                }\n                // apply post-transforms\n                for (var i$2 = 0; i$2 < postTransforms.length; i$2++) {\n                    postTransforms[i$2](element, options);\n                }\n            },\n\n            end: function end () {\n                // remove trailing whitespace\n                var element = stack[stack.length - 1];\n                var lastNode = element.children[element.children.length - 1];\n                if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n                    element.children.pop();\n                }\n                // pop stack\n                stack.length -= 1;\n                currentParent = stack[stack.length - 1];\n                endPre(element);\n            },\n\n            chars: function chars (text) {\n                if (!currentParent) {\n                    {\n                        if (text === template) {\n                            warnOnce(\n                                'Component template requires a root element, rather than just text.'\n                            );\n                        } else if ((text = text.trim())) {\n                            warnOnce(\n                                (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n                            );\n                        }\n                    }\n                    return\n                }\n                // IE textarea placeholder bug\n                /* istanbul ignore if */\n                if (isIE &&\n                    currentParent.tag === 'textarea' &&\n                    currentParent.attrsMap.placeholder === text\n                ) {\n                    return\n                }\n                var children = currentParent.children;\n                text = inPre || text.trim()\n                    ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n                    // only preserve whitespace if its not right after a starting tag\n                    : preserveWhitespace && children.length ? ' ' : '';\n                if (text) {\n                    var expression;\n                    if (!inVPre && text !== ' ' && (expression = parseText(text, delimiters))) {\n                        children.push({\n                            type: 2,\n                            expression: expression,\n                            text: text\n                        });\n                    } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n                        children.push({\n                            type: 3,\n                            text: text\n                        });\n                    }\n                }\n            },\n            comment: function comment (text) {\n                currentParent.children.push({\n                    type: 3,\n                    text: text,\n                    isComment: true\n                });\n            }\n        });\n        return root\n    }\n\n    function processPre (el) {\n        if (getAndRemoveAttr(el, 'v-pre') != null) {\n            el.pre = true;\n        }\n    }\n\n    function processRawAttrs (el) {\n        var l = el.attrsList.length;\n        if (l) {\n            var attrs = el.attrs = new Array(l);\n            for (var i = 0; i < l; i++) {\n                attrs[i] = {\n                    name: el.attrsList[i].name,\n                    value: JSON.stringify(el.attrsList[i].value)\n                };\n            }\n        } else if (!el.pre) {\n            // non root node in pre blocks with no attributes\n            el.plain = true;\n        }\n    }\n\n    function processKey (el) {\n        var exp = getBindingAttr(el, 'key');\n        if (exp) {\n            if (\"development\" !== 'production' && el.tag === 'template') {\n                warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n            }\n            el.key = exp;\n        }\n    }\n\n    function processRef (el) {\n        var ref = getBindingAttr(el, 'ref');\n        if (ref) {\n            el.ref = ref;\n            el.refInFor = checkInFor(el);\n        }\n    }\n\n    function processFor (el) {\n        var exp;\n        if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n            var inMatch = exp.match(forAliasRE);\n            if (!inMatch) {\n                \"development\" !== 'production' && warn$2(\n                    (\"Invalid v-for expression: \" + exp)\n                );\n                return\n            }\n            el.for = inMatch[2].trim();\n            var alias = inMatch[1].trim();\n            var iteratorMatch = alias.match(forIteratorRE);\n            if (iteratorMatch) {\n                el.alias = iteratorMatch[1].trim();\n                el.iterator1 = iteratorMatch[2].trim();\n                if (iteratorMatch[3]) {\n                    el.iterator2 = iteratorMatch[3].trim();\n                }\n            } else {\n                el.alias = alias;\n            }\n        }\n    }\n\n    function processIf (el) {\n        var exp = getAndRemoveAttr(el, 'v-if');\n        if (exp) {\n            el.if = exp;\n            addIfCondition(el, {\n                exp: exp,\n                block: el\n            });\n        } else {\n            if (getAndRemoveAttr(el, 'v-else') != null) {\n                el.else = true;\n            }\n            var elseif = getAndRemoveAttr(el, 'v-else-if');\n            if (elseif) {\n                el.elseif = elseif;\n            }\n        }\n    }\n\n    function processIfConditions (el, parent) {\n        var prev = findPrevElement(parent.children);\n        if (prev && prev.if) {\n            addIfCondition(prev, {\n                exp: el.elseif,\n                block: el\n            });\n        } else {\n            warn$2(\n                \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n                \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n            );\n        }\n    }\n\n    function findPrevElement (children) {\n        var i = children.length;\n        while (i--) {\n            if (children[i].type === 1) {\n                return children[i]\n            } else {\n                if (\"development\" !== 'production' && children[i].text !== ' ') {\n                    warn$2(\n                        \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n                        \"will be ignored.\"\n                    );\n                }\n                children.pop();\n            }\n        }\n    }\n\n    function addIfCondition (el, condition) {\n        if (!el.ifConditions) {\n            el.ifConditions = [];\n        }\n        el.ifConditions.push(condition);\n    }\n\n    function processOnce (el) {\n        var once$$1 = getAndRemoveAttr(el, 'v-once');\n        if (once$$1 != null) {\n            el.once = true;\n        }\n    }\n\n    function processSlot (el) {\n        if (el.tag === 'slot') {\n            el.slotName = getBindingAttr(el, 'name');\n            if (\"development\" !== 'production' && el.key) {\n                warn$2(\n                    \"`key` does not work on <slot> because slots are abstract outlets \" +\n                    \"and can possibly expand into multiple elements. \" +\n                    \"Use the key on a wrapping element instead.\"\n                );\n            }\n        } else {\n            var slotTarget = getBindingAttr(el, 'slot');\n            if (slotTarget) {\n                el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n            }\n            if (el.tag === 'template') {\n                el.slotScope = getAndRemoveAttr(el, 'scope');\n            }\n        }\n    }\n\n    function processComponent (el) {\n        var binding;\n        if ((binding = getBindingAttr(el, 'is'))) {\n            el.component = binding;\n        }\n        if (getAndRemoveAttr(el, 'inline-template') != null) {\n            el.inlineTemplate = true;\n        }\n    }\n\n    function processAttrs (el) {\n        var list = el.attrsList;\n        var i, l, name, rawName, value, modifiers, isProp;\n        for (i = 0, l = list.length; i < l; i++) {\n            name = rawName = list[i].name;\n            value = list[i].value;\n            if (dirRE.test(name)) {\n                // mark element as dynamic\n                el.hasBindings = true;\n                // modifiers\n                modifiers = parseModifiers(name);\n                if (modifiers) {\n                    name = name.replace(modifierRE, '');\n                }\n                if (bindRE.test(name)) { // v-bind\n                    name = name.replace(bindRE, '');\n                    value = parseFilters(value);\n                    isProp = false;\n                    if (modifiers) {\n                        if (modifiers.prop) {\n                            isProp = true;\n                            name = camelize(name);\n                            if (name === 'innerHtml') { name = 'innerHTML'; }\n                        }\n                        if (modifiers.camel) {\n                            name = camelize(name);\n                        }\n                        if (modifiers.sync) {\n                            addHandler(\n                                el,\n                                (\"update:\" + (camelize(name))),\n                                genAssignmentCode(value, \"$event\")\n                            );\n                        }\n                    }\n                    if (isProp || (\n                            !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n                        )) {\n                        addProp(el, name, value);\n                    } else {\n                        addAttr(el, name, value);\n                    }\n                } else if (onRE.test(name)) { // v-on\n                    name = name.replace(onRE, '');\n                    addHandler(el, name, value, modifiers, false, warn$2);\n                } else { // normal directives\n                    name = name.replace(dirRE, '');\n                    // parse arg\n                    var argMatch = name.match(argRE);\n                    var arg = argMatch && argMatch[1];\n                    if (arg) {\n                        name = name.slice(0, -(arg.length + 1));\n                    }\n                    addDirective(el, name, rawName, value, arg, modifiers);\n                    if (\"development\" !== 'production' && name === 'model') {\n                        checkForAliasModel(el, value);\n                    }\n                }\n            } else {\n                // literal attribute\n                {\n                    var expression = parseText(value, delimiters);\n                    if (expression) {\n                        warn$2(\n                            name + \"=\\\"\" + value + \"\\\": \" +\n                            'Interpolation inside attributes has been removed. ' +\n                            'Use v-bind or the colon shorthand instead. For example, ' +\n                            'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n                        );\n                    }\n                }\n                addAttr(el, name, JSON.stringify(value));\n            }\n        }\n    }\n\n    function checkInFor (el) {\n        var parent = el;\n        while (parent) {\n            if (parent.for !== undefined) {\n                return true\n            }\n            parent = parent.parent;\n        }\n        return false\n    }\n\n    function parseModifiers (name) {\n        var match = name.match(modifierRE);\n        if (match) {\n            var ret = {};\n            match.forEach(function (m) { ret[m.slice(1)] = true; });\n            return ret\n        }\n    }\n\n    function makeAttrsMap (attrs) {\n        var map = {};\n        for (var i = 0, l = attrs.length; i < l; i++) {\n            if (\n                \"development\" !== 'production' &&\n                map[attrs[i].name] && !isIE && !isEdge\n            ) {\n                warn$2('duplicate attribute: ' + attrs[i].name);\n            }\n            map[attrs[i].name] = attrs[i].value;\n        }\n        return map\n    }\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\n    function isTextTag (el) {\n        return el.tag === 'script' || el.tag === 'style'\n    }\n\n    function isForbiddenTag (el) {\n        return (\n            el.tag === 'style' ||\n            (el.tag === 'script' && (\n                !el.attrsMap.type ||\n                el.attrsMap.type === 'text/javascript'\n            ))\n        )\n    }\n\n    var ieNSBug = /^xmlns:NS\\d+/;\n    var ieNSPrefix = /^NS\\d+:/;\n\n    /* istanbul ignore next */\n    function guardIESVGBug (attrs) {\n        var res = [];\n        for (var i = 0; i < attrs.length; i++) {\n            var attr = attrs[i];\n            if (!ieNSBug.test(attr.name)) {\n                attr.name = attr.name.replace(ieNSPrefix, '');\n                res.push(attr);\n            }\n        }\n        return res\n    }\n\n    function checkForAliasModel (el, value) {\n        var _el = el;\n        while (_el) {\n            if (_el.for && _el.alias === value) {\n                warn$2(\n                    \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n                    \"You are binding v-model directly to a v-for iteration alias. \" +\n                    \"This will not be able to modify the v-for source array because \" +\n                    \"writing to the alias is like modifying a function local variable. \" +\n                    \"Consider using an array of objects and use v-model on an object property instead.\"\n                );\n            }\n            _el = _el.parent;\n        }\n    }\n\n    /*  */\n\n    var isStaticKey;\n    var isPlatformReservedTag;\n\n    var genStaticKeysCached = cached(genStaticKeys$1);\n\n    /**\n     * Goal of the optimizer: walk the generated template AST tree\n     * and detect sub-trees that are purely static, i.e. parts of\n     * the DOM that never needs to change.\n     *\n     * Once we detect these sub-trees, we can:\n     *\n     * 1. Hoist them into constants, so that we no longer need to\n     *    create fresh nodes for them on each re-render;\n     * 2. Completely skip them in the patching process.\n     */\n    function optimize (root, options) {\n        if (!root) { return }\n        isStaticKey = genStaticKeysCached(options.staticKeys || '');\n        isPlatformReservedTag = options.isReservedTag || no;\n        // first pass: mark all non-static nodes.\n        markStatic$1(root);\n        // second pass: mark static roots.\n        markStaticRoots(root, false);\n    }\n\n    function genStaticKeys$1 (keys) {\n        return makeMap(\n            'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n            (keys ? ',' + keys : '')\n        )\n    }\n\n    function markStatic$1 (node) {\n        node.static = isStatic(node);\n        if (node.type === 1) {\n            // do not make component slot content static. this avoids\n            // 1. components not able to mutate slot nodes\n            // 2. static slot content fails for hot-reloading\n            if (\n                !isPlatformReservedTag(node.tag) &&\n                node.tag !== 'slot' &&\n                node.attrsMap['inline-template'] == null\n            ) {\n                return\n            }\n            for (var i = 0, l = node.children.length; i < l; i++) {\n                var child = node.children[i];\n                markStatic$1(child);\n                if (!child.static) {\n                    node.static = false;\n                }\n            }\n            if (node.ifConditions) {\n                for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n                    var block = node.ifConditions[i$1].block;\n                    markStatic$1(block);\n                    if (!block.static) {\n                        node.static = false;\n                    }\n                }\n            }\n        }\n    }\n\n    function markStaticRoots (node, isInFor) {\n        if (node.type === 1) {\n            if (node.static || node.once) {\n                node.staticInFor = isInFor;\n            }\n            // For a node to qualify as a static root, it should have children that\n            // are not just static text. Otherwise the cost of hoisting out will\n            // outweigh the benefits and it's better off to just always render it fresh.\n            if (node.static && node.children.length && !(\n                    node.children.length === 1 &&\n                    node.children[0].type === 3\n                )) {\n                node.staticRoot = true;\n                return\n            } else {\n                node.staticRoot = false;\n            }\n            if (node.children) {\n                for (var i = 0, l = node.children.length; i < l; i++) {\n                    markStaticRoots(node.children[i], isInFor || !!node.for);\n                }\n            }\n            if (node.ifConditions) {\n                for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n                    markStaticRoots(node.ifConditions[i$1].block, isInFor);\n                }\n            }\n        }\n    }\n\n    function isStatic (node) {\n        if (node.type === 2) { // expression\n            return false\n        }\n        if (node.type === 3) { // text\n            return true\n        }\n        return !!(node.pre || (\n            !node.hasBindings && // no dynamic bindings\n            !node.if && !node.for && // not v-if or v-for or v-else\n            !isBuiltInTag(node.tag) && // not a built-in\n            isPlatformReservedTag(node.tag) && // not a component\n            !isDirectChildOfTemplateFor(node) &&\n            Object.keys(node).every(isStaticKey)\n        ))\n    }\n\n    function isDirectChildOfTemplateFor (node) {\n        while (node.parent) {\n            node = node.parent;\n            if (node.tag !== 'template') {\n                return false\n            }\n            if (node.for) {\n                return true\n            }\n        }\n        return false\n    }\n\n    /*  */\n\n    var fnExpRE = /^\\s*([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\n    var simplePathRE = /^\\s*[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?']|\\[\".*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*\\s*$/;\n\n// keyCode aliases\n    var keyCodes = {\n        esc: 27,\n        tab: 9,\n        enter: 13,\n        space: 32,\n        up: 38,\n        left: 37,\n        right: 39,\n        down: 40,\n        'delete': [8, 46]\n    };\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\n    var genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\n    var modifierCode = {\n        stop: '$event.stopPropagation();',\n        prevent: '$event.preventDefault();',\n        self: genGuard(\"$event.target !== $event.currentTarget\"),\n        ctrl: genGuard(\"!$event.ctrlKey\"),\n        shift: genGuard(\"!$event.shiftKey\"),\n        alt: genGuard(\"!$event.altKey\"),\n        meta: genGuard(\"!$event.metaKey\"),\n        left: genGuard(\"'button' in $event && $event.button !== 0\"),\n        middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n        right: genGuard(\"'button' in $event && $event.button !== 2\")\n    };\n\n    function genHandlers (\n        events,\n        isNative,\n        warn\n    ) {\n        var res = isNative ? 'nativeOn:{' : 'on:{';\n        for (var name in events) {\n            var handler = events[name];\n            // #5330: warn click.right, since right clicks do not actually fire click events.\n            if (\"development\" !== 'production' &&\n                name === 'click' &&\n                handler && handler.modifiers && handler.modifiers.right\n            ) {\n                warn(\n                    \"Use \\\"contextmenu\\\" instead of \\\"click.right\\\" since right clicks \" +\n                    \"do not actually fire \\\"click\\\" events.\"\n                );\n            }\n            res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, handler)) + \",\";\n        }\n        return res.slice(0, -1) + '}'\n    }\n\n    function genHandler (\n        name,\n        handler\n    ) {\n        if (!handler) {\n            return 'function(){}'\n        }\n\n        if (Array.isArray(handler)) {\n            return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n        }\n\n        var isMethodPath = simplePathRE.test(handler.value);\n        var isFunctionExpression = fnExpRE.test(handler.value);\n\n        if (!handler.modifiers) {\n            return isMethodPath || isFunctionExpression\n                ? handler.value\n                : (\"function($event){\" + (handler.value) + \"}\") // inline statement\n        } else {\n            var code = '';\n            var genModifierCode = '';\n            var keys = [];\n            for (var key in handler.modifiers) {\n                if (modifierCode[key]) {\n                    genModifierCode += modifierCode[key];\n                    // left/right\n                    if (keyCodes[key]) {\n                        keys.push(key);\n                    }\n                } else {\n                    keys.push(key);\n                }\n            }\n            if (keys.length) {\n                code += genKeyFilter(keys);\n            }\n            // Make sure modifiers like prevent and stop get executed after key filtering\n            if (genModifierCode) {\n                code += genModifierCode;\n            }\n            var handlerCode = isMethodPath\n                ? handler.value + '($event)'\n                : isFunctionExpression\n                ? (\"(\" + (handler.value) + \")($event)\")\n                : handler.value;\n            return (\"function($event){\" + code + handlerCode + \"}\")\n        }\n    }\n\n    function genKeyFilter (keys) {\n        return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n    }\n\n    function genFilterCode (key) {\n        var keyVal = parseInt(key, 10);\n        if (keyVal) {\n            return (\"$event.keyCode!==\" + keyVal)\n        }\n        var alias = keyCodes[key];\n        return (\"_k($event.keyCode,\" + (JSON.stringify(key)) + (alias ? ',' + JSON.stringify(alias) : '') + \")\")\n    }\n\n    /*  */\n\n    function on (el, dir) {\n        if (\"development\" !== 'production' && dir.modifiers) {\n            warn(\"v-on without argument does not support modifiers.\");\n        }\n        el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n    }\n\n    /*  */\n\n    function bind$1 (el, dir) {\n        el.wrapData = function (code) {\n            return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n        };\n    }\n\n    /*  */\n\n    var baseDirectives = {\n        on: on,\n        bind: bind$1,\n        cloak: noop\n    };\n\n    /*  */\n\n    var CodegenState = function CodegenState (options) {\n        this.options = options;\n        this.warn = options.warn || baseWarn;\n        this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n        this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n        this.directives = extend(extend({}, baseDirectives), options.directives);\n        var isReservedTag = options.isReservedTag || no;\n        this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\n        this.onceId = 0;\n        this.staticRenderFns = [];\n    };\n\n\n\n    function generate (\n        ast,\n        options\n    ) {\n        var state = new CodegenState(options);\n        var code = ast ? genElement(ast, state) : '_c(\"div\")';\n        return {\n            render: (\"with(this){return \" + code + \"}\"),\n            staticRenderFns: state.staticRenderFns\n        }\n    }\n\n    function genElement (el, state) {\n        if (el.staticRoot && !el.staticProcessed) {\n            return genStatic(el, state)\n        } else if (el.once && !el.onceProcessed) {\n            return genOnce(el, state)\n        } else if (el.for && !el.forProcessed) {\n            return genFor(el, state)\n        } else if (el.if && !el.ifProcessed) {\n            return genIf(el, state)\n        } else if (el.tag === 'template' && !el.slotTarget) {\n            return genChildren(el, state) || 'void 0'\n        } else if (el.tag === 'slot') {\n            return genSlot(el, state)\n        } else {\n            // component or element\n            var code;\n            if (el.component) {\n                code = genComponent(el.component, el, state);\n            } else {\n                var data = el.plain ? undefined : genData$2(el, state);\n\n                var children = el.inlineTemplate ? null : genChildren(el, state, true);\n                code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n            }\n            // module transforms\n            for (var i = 0; i < state.transforms.length; i++) {\n                code = state.transforms[i](el, code);\n            }\n            return code\n        }\n    }\n\n// hoist static sub-trees out\n    function genStatic (el, state) {\n        el.staticProcessed = true;\n        state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n        return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n    }\n\n// v-once\n    function genOnce (el, state) {\n        el.onceProcessed = true;\n        if (el.if && !el.ifProcessed) {\n            return genIf(el, state)\n        } else if (el.staticInFor) {\n            var key = '';\n            var parent = el.parent;\n            while (parent) {\n                if (parent.for) {\n                    key = parent.key;\n                    break\n                }\n                parent = parent.parent;\n            }\n            if (!key) {\n                \"development\" !== 'production' && state.warn(\n                    \"v-once can only be used inside v-for that is keyed. \"\n                );\n                return genElement(el, state)\n            }\n            return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + (key ? (\",\" + key) : \"\") + \")\")\n        } else {\n            return genStatic(el, state)\n        }\n    }\n\n    function genIf (\n        el,\n        state,\n        altGen,\n        altEmpty\n    ) {\n        el.ifProcessed = true; // avoid recursion\n        return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n    }\n\n    function genIfConditions (\n        conditions,\n        state,\n        altGen,\n        altEmpty\n    ) {\n        if (!conditions.length) {\n            return altEmpty || '_e()'\n        }\n\n        var condition = conditions.shift();\n        if (condition.exp) {\n            return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n        } else {\n            return (\"\" + (genTernaryExp(condition.block)))\n        }\n\n        // v-if with v-once should generate code like (a)?_m(0):_m(1)\n        function genTernaryExp (el) {\n            return altGen\n                ? altGen(el, state)\n                : el.once\n                ? genOnce(el, state)\n                : genElement(el, state)\n        }\n    }\n\n    function genFor (\n        el,\n        state,\n        altGen,\n        altHelper\n    ) {\n        var exp = el.for;\n        var alias = el.alias;\n        var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n        var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n        if (\"development\" !== 'production' &&\n            state.maybeComponent(el) &&\n            el.tag !== 'slot' &&\n            el.tag !== 'template' &&\n            !el.key\n        ) {\n            state.warn(\n                \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n                \"v-for should have explicit keys. \" +\n                \"See https://vuejs.org/guide/list.html#key for more info.\",\n                true /* tip */\n            );\n        }\n\n        el.forProcessed = true; // avoid recursion\n        return (altHelper || '_l') + \"((\" + exp + \"),\" +\n            \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n            \"return \" + ((altGen || genElement)(el, state)) +\n            '})'\n    }\n\n    function genData$2 (el, state) {\n        var data = '{';\n\n        // directives first.\n        // directives may mutate the el's other properties before they are generated.\n        var dirs = genDirectives(el, state);\n        if (dirs) { data += dirs + ','; }\n\n        // key\n        if (el.key) {\n            data += \"key:\" + (el.key) + \",\";\n        }\n        // ref\n        if (el.ref) {\n            data += \"ref:\" + (el.ref) + \",\";\n        }\n        if (el.refInFor) {\n            data += \"refInFor:true,\";\n        }\n        // pre\n        if (el.pre) {\n            data += \"pre:true,\";\n        }\n        // record original tag name for components using \"is\" attribute\n        if (el.component) {\n            data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n        }\n        // module data generation functions\n        for (var i = 0; i < state.dataGenFns.length; i++) {\n            data += state.dataGenFns[i](el);\n        }\n        // attributes\n        if (el.attrs) {\n            data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n        }\n        // DOM props\n        if (el.props) {\n            data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n        }\n        // event handlers\n        if (el.events) {\n            data += (genHandlers(el.events, false, state.warn)) + \",\";\n        }\n        if (el.nativeEvents) {\n            data += (genHandlers(el.nativeEvents, true, state.warn)) + \",\";\n        }\n        // slot target\n        if (el.slotTarget) {\n            data += \"slot:\" + (el.slotTarget) + \",\";\n        }\n        // scoped slots\n        if (el.scopedSlots) {\n            data += (genScopedSlots(el.scopedSlots, state)) + \",\";\n        }\n        // component v-model\n        if (el.model) {\n            data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n        }\n        // inline-template\n        if (el.inlineTemplate) {\n            var inlineTemplate = genInlineTemplate(el, state);\n            if (inlineTemplate) {\n                data += inlineTemplate + \",\";\n            }\n        }\n        data = data.replace(/,$/, '') + '}';\n        // v-bind data wrap\n        if (el.wrapData) {\n            data = el.wrapData(data);\n        }\n        // v-on data wrap\n        if (el.wrapListeners) {\n            data = el.wrapListeners(data);\n        }\n        return data\n    }\n\n    function genDirectives (el, state) {\n        var dirs = el.directives;\n        if (!dirs) { return }\n        var res = 'directives:[';\n        var hasRuntime = false;\n        var i, l, dir, needRuntime;\n        for (i = 0, l = dirs.length; i < l; i++) {\n            dir = dirs[i];\n            needRuntime = true;\n            var gen = state.directives[dir.name];\n            if (gen) {\n                // compile-time directive that manipulates AST.\n                // returns true if it also needs a runtime counterpart.\n                needRuntime = !!gen(el, dir, state.warn);\n            }\n            if (needRuntime) {\n                hasRuntime = true;\n                res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n            }\n        }\n        if (hasRuntime) {\n            return res.slice(0, -1) + ']'\n        }\n    }\n\n    function genInlineTemplate (el, state) {\n        var ast = el.children[0];\n        if (\"development\" !== 'production' && (\n                el.children.length > 1 || ast.type !== 1\n            )) {\n            state.warn('Inline-template components must have exactly one child element.');\n        }\n        if (ast.type === 1) {\n            var inlineRenderFns = generate(ast, state.options);\n            return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n        }\n    }\n\n    function genScopedSlots (\n        slots,\n        state\n    ) {\n        return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) {\n            return genScopedSlot(key, slots[key], state)\n        }).join(',')) + \"])\")\n    }\n\n    function genScopedSlot (\n        key,\n        el,\n        state\n    ) {\n        if (el.for && !el.forProcessed) {\n            return genForScopedSlot(key, el, state)\n        }\n        return \"{key:\" + key + \",fn:function(\" + (String(el.attrsMap.scope)) + \"){\" +\n            \"return \" + (el.tag === 'template'\n                ? genChildren(el, state) || 'void 0'\n                : genElement(el, state)) + \"}}\"\n    }\n\n    function genForScopedSlot (\n        key,\n        el,\n        state\n    ) {\n        var exp = el.for;\n        var alias = el.alias;\n        var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n        var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n        el.forProcessed = true; // avoid recursion\n        return \"_l((\" + exp + \"),\" +\n            \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n            \"return \" + (genScopedSlot(key, el, state)) +\n            '})'\n    }\n\n    function genChildren (\n        el,\n        state,\n        checkSkip,\n        altGenElement,\n        altGenNode\n    ) {\n        var children = el.children;\n        if (children.length) {\n            var el$1 = children[0];\n            // optimize single v-for\n            if (children.length === 1 &&\n                el$1.for &&\n                el$1.tag !== 'template' &&\n                el$1.tag !== 'slot'\n            ) {\n                return (altGenElement || genElement)(el$1, state)\n            }\n            var normalizationType = checkSkip\n                ? getNormalizationType(children, state.maybeComponent)\n                : 0;\n            var gen = altGenNode || genNode;\n            return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n        }\n    }\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\n    function getNormalizationType (\n        children,\n        maybeComponent\n    ) {\n        var res = 0;\n        for (var i = 0; i < children.length; i++) {\n            var el = children[i];\n            if (el.type !== 1) {\n                continue\n            }\n            if (needsNormalization(el) ||\n                (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n                res = 2;\n                break\n            }\n            if (maybeComponent(el) ||\n                (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n                res = 1;\n            }\n        }\n        return res\n    }\n\n    function needsNormalization (el) {\n        return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n    }\n\n    function genNode (node, state) {\n        if (node.type === 1) {\n            return genElement(node, state)\n        } if (node.type === 3 && node.isComment) {\n            return genComment(node)\n        } else {\n            return genText(node)\n        }\n    }\n\n    function genText (text) {\n        return (\"_v(\" + (text.type === 2\n            ? text.expression // no need for () because already wrapped in _s()\n            : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n    }\n\n    function genComment (comment) {\n        return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n    }\n\n    function genSlot (el, state) {\n        var slotName = el.slotName || '\"default\"';\n        var children = genChildren(el, state);\n        var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n        var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n        var bind$$1 = el.attrsMap['v-bind'];\n        if ((attrs || bind$$1) && !children) {\n            res += \",null\";\n        }\n        if (attrs) {\n            res += \",\" + attrs;\n        }\n        if (bind$$1) {\n            res += (attrs ? '' : ',null') + \",\" + bind$$1;\n        }\n        return res + ')'\n    }\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\n    function genComponent (\n        componentName,\n        el,\n        state\n    ) {\n        var children = el.inlineTemplate ? null : genChildren(el, state, true);\n        return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n    }\n\n    function genProps (props) {\n        var res = '';\n        for (var i = 0; i < props.length; i++) {\n            var prop = props[i];\n            res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n        }\n        return res.slice(0, -1)\n    }\n\n// #3895, #4268\n    function transformSpecialNewlines (text) {\n        return text\n            .replace(/\\u2028/g, '\\\\u2028')\n            .replace(/\\u2029/g, '\\\\u2029')\n    }\n\n    /*  */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\n    var prohibitedKeywordRE = new RegExp('\\\\b' + (\n            'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n            'super,throw,while,yield,delete,export,import,return,switch,default,' +\n            'extends,finally,continue,debugger,function,arguments'\n        ).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\n    var unaryOperatorsRE = new RegExp('\\\\b' + (\n            'delete,typeof,void'\n        ).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// check valid identifier for v-for\n    var identRE = /[A-Za-z_$][\\w$]*/;\n\n// strip strings in expressions\n    var stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\n    function detectErrors (ast) {\n        var errors = [];\n        if (ast) {\n            checkNode(ast, errors);\n        }\n        return errors\n    }\n\n    function checkNode (node, errors) {\n        if (node.type === 1) {\n            for (var name in node.attrsMap) {\n                if (dirRE.test(name)) {\n                    var value = node.attrsMap[name];\n                    if (value) {\n                        if (name === 'v-for') {\n                            checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n                        } else if (onRE.test(name)) {\n                            checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n                        } else {\n                            checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n                        }\n                    }\n                }\n            }\n            if (node.children) {\n                for (var i = 0; i < node.children.length; i++) {\n                    checkNode(node.children[i], errors);\n                }\n            }\n        } else if (node.type === 2) {\n            checkExpression(node.expression, node.text, errors);\n        }\n    }\n\n    function checkEvent (exp, text, errors) {\n        var stipped = exp.replace(stripStringRE, '');\n        var keywordMatch = stipped.match(unaryOperatorsRE);\n        if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n            errors.push(\n                \"avoid using JavaScript unary operator as property name: \" +\n                \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n            );\n        }\n        checkExpression(exp, text, errors);\n    }\n\n    function checkFor (node, text, errors) {\n        checkExpression(node.for || '', text, errors);\n        checkIdentifier(node.alias, 'v-for alias', text, errors);\n        checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n        checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n    }\n\n    function checkIdentifier (ident, type, text, errors) {\n        if (typeof ident === 'string' && !identRE.test(ident)) {\n            errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n        }\n    }\n\n    function checkExpression (exp, text, errors) {\n        try {\n            new Function((\"return \" + exp));\n        } catch (e) {\n            var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n            if (keywordMatch) {\n                errors.push(\n                    \"avoid using JavaScript keyword as property name: \" +\n                    \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n                );\n            } else {\n                errors.push((\"invalid expression: \" + (text.trim())));\n            }\n        }\n    }\n\n    /*  */\n\n    function createFunction (code, errors) {\n        try {\n            return new Function(code)\n        } catch (err) {\n            errors.push({ err: err, code: code });\n            return noop\n        }\n    }\n\n    function createCompileToFunctionFn (compile) {\n        var cache = Object.create(null);\n\n        return function compileToFunctions (\n            template,\n            options,\n            vm\n        ) {\n            options = options || {};\n\n            /* istanbul ignore if */\n            {\n                // detect possible CSP restriction\n                try {\n                    new Function('return 1');\n                } catch (e) {\n                    if (e.toString().match(/unsafe-eval|CSP/)) {\n                        warn(\n                            'It seems you are using the standalone build of Vue.js in an ' +\n                            'environment with Content Security Policy that prohibits unsafe-eval. ' +\n                            'The template compiler cannot work in this environment. Consider ' +\n                            'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n                            'templates into render functions.'\n                        );\n                    }\n                }\n            }\n\n            // check cache\n            var key = options.delimiters\n                ? String(options.delimiters) + template\n                : template;\n            if (cache[key]) {\n                return cache[key]\n            }\n\n            // compile\n            var compiled = compile(template, options);\n\n            // check compilation errors/tips\n            {\n                if (compiled.errors && compiled.errors.length) {\n                    warn(\n                        \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n                        compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n                        vm\n                    );\n                }\n                if (compiled.tips && compiled.tips.length) {\n                    compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n                }\n            }\n\n            // turn code into functions\n            var res = {};\n            var fnGenErrors = [];\n            res.render = createFunction(compiled.render, fnGenErrors);\n            res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n                return createFunction(code, fnGenErrors)\n            });\n\n            // check function generation errors.\n            // this should only happen if there is a bug in the compiler itself.\n            // mostly for codegen development use\n            /* istanbul ignore if */\n            {\n                if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n                    warn(\n                        \"Failed to generate render function:\\n\\n\" +\n                        fnGenErrors.map(function (ref) {\n                            var err = ref.err;\n                            var code = ref.code;\n\n                            return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n                        }).join('\\n'),\n                        vm\n                    );\n                }\n            }\n\n            return (cache[key] = res)\n        }\n    }\n\n    /*  */\n\n    function createCompilerCreator (baseCompile) {\n        return function createCompiler (baseOptions) {\n            function compile (\n                template,\n                options\n            ) {\n                var finalOptions = Object.create(baseOptions);\n                var errors = [];\n                var tips = [];\n                finalOptions.warn = function (msg, tip) {\n                    (tip ? tips : errors).push(msg);\n                };\n\n                if (options) {\n                    // merge custom modules\n                    if (options.modules) {\n                        finalOptions.modules =\n                            (baseOptions.modules || []).concat(options.modules);\n                    }\n                    // merge custom directives\n                    if (options.directives) {\n                        finalOptions.directives = extend(\n                            Object.create(baseOptions.directives),\n                            options.directives\n                        );\n                    }\n                    // copy other options\n                    for (var key in options) {\n                        if (key !== 'modules' && key !== 'directives') {\n                            finalOptions[key] = options[key];\n                        }\n                    }\n                }\n\n                var compiled = baseCompile(template, finalOptions);\n                {\n                    errors.push.apply(errors, detectErrors(compiled.ast));\n                }\n                compiled.errors = errors;\n                compiled.tips = tips;\n                return compiled\n            }\n\n            return {\n                compile: compile,\n                compileToFunctions: createCompileToFunctionFn(compile)\n            }\n        }\n    }\n\n    /*  */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\n    var createCompiler = createCompilerCreator(function baseCompile (\n        template,\n        options\n    ) {\n        var ast = parse(template.trim(), options);\n        optimize(ast, options);\n        var code = generate(ast, options);\n        return {\n            ast: ast,\n            render: code.render,\n            staticRenderFns: code.staticRenderFns\n        }\n    });\n\n    /*  */\n\n    var ref$1 = createCompiler(baseOptions);\n    var compileToFunctions = ref$1.compileToFunctions;\n\n    /*  */\n\n    var idToTemplate = cached(function (id) {\n        var el = query(id);\n        return el && el.innerHTML\n    });\n\n    var mount = Vue$3.prototype.$mount;\n    Vue$3.prototype.$mount = function (\n        el,\n        hydrating\n    ) {\n        el = el && query(el);\n\n        /* istanbul ignore if */\n        if (el === document.body || el === document.documentElement) {\n            \"development\" !== 'production' && warn(\n                \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n            );\n            return this\n        }\n\n        var options = this.$options;\n        // resolve template/el and convert to render function\n        if (!options.render) {\n            var template = options.template;\n            if (template) {\n                if (typeof template === 'string') {\n                    if (template.charAt(0) === '#') {\n                        template = idToTemplate(template);\n                        /* istanbul ignore if */\n                        if (\"development\" !== 'production' && !template) {\n                            warn(\n                                (\"Template element not found or is empty: \" + (options.template)),\n                                this\n                            );\n                        }\n                    }\n                } else if (template.nodeType) {\n                    template = template.innerHTML;\n                } else {\n                    {\n                        warn('invalid template option:' + template, this);\n                    }\n                    return this\n                }\n            } else if (el) {\n                template = getOuterHTML(el);\n            }\n            if (template) {\n                /* istanbul ignore if */\n                if (\"development\" !== 'production' && config.performance && mark) {\n                    mark('compile');\n                }\n\n                var ref = compileToFunctions(template, {\n                    shouldDecodeNewlines: shouldDecodeNewlines,\n                    delimiters: options.delimiters,\n                    comments: options.comments\n                }, this);\n                var render = ref.render;\n                var staticRenderFns = ref.staticRenderFns;\n                options.render = render;\n                options.staticRenderFns = staticRenderFns;\n\n                /* istanbul ignore if */\n                if (\"development\" !== 'production' && config.performance && mark) {\n                    mark('compile end');\n                    measure(((this._name) + \" compile\"), 'compile', 'compile end');\n                }\n            }\n        }\n        return mount.call(this, el, hydrating)\n    };\n\n    /**\n     * Get outerHTML of elements, taking care\n     * of SVG elements in IE as well.\n     */\n    function getOuterHTML (el) {\n        if (el.outerHTML) {\n            return el.outerHTML\n        } else {\n            var container = document.createElement('div');\n            container.appendChild(el.cloneNode(true));\n            return container.innerHTML\n        }\n    }\n\n    Vue$3.compile = compileToFunctions;\n\n    return Vue$3;\n\n})));"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/css/base.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nhtml,body {\n    height: 100%;\n    font-family: microsoft yahei, Arial, sans-serif, \"\\xe8\\x93\\x9d\\xe9\\xb2\\xb8\\xe6\\x99\\xba\\xe8\\x90\\xa5\";\n}\n.body.page_index {\n    min-height:calc(100% - 151px);\n}\n\n.btn-default,.btn-link {\n    color: #333;\n}\n.btn-default:hover, .btn-default:focus, .btn-link:hover {\n    color: #808080;\n}\n\n.header {\n    width: 100%;\n    min-width: 1180px;  \n    line-height: 1;\n}\n.header .header-inner {\n    width: 1180px;\n    margin: 0 auto;\n}\n.header {\n    background: white;\n    border-bottom: 2px solid #6fc673; \n}\n.header .header-inner {\n    height: 63px; \n}\n.header .logo {\n    margin-top: 12px;\n    display: inline-block; \n}\n.header .list {\n    float: right;\n    list-style: none;\n    padding-top: 17px; \n}\n.header .list li {\n    float: left;\n    margin-right: 12px;\n    font-size: 14px;\n    padding: 6px 12px;\n    border: 2px solid white; \n}\n.header .list li a {\n    color: #666;\n    letter-spacing: 1px; \n}\n.header .list li a:hover {\n    color: #6FC673; \n}\n.header .list li.active {\n    border: 2px solid #6FC673;\n    border-radius: 15px; \n}\n.header .list li.active a {\n    color: #6FC673; \n}\n\n.account {\n    padding-top: 14px;\n}\n.account_info .nickname {\n    margin-top: 12px;\n}\n\n.row-selected td {\n    background-color: #ffc !important;\n}\n\n\n.form-columns .form-group .controls textarea {\n    width: 80%;\n}\n.form-group.action {\n    margin-left: 135px;\n}\n.form-columns .form-group .controls input[type=\"text\"], \n.form-columns .form-group .controls input[type=\"url\"], \n.form-columns .form-group .controls input[type=\"password\"],\n.form-columns .form-group .controls select {\n    width: 450px;\n}\n.form-columns .form-group .controls .checkbox {\n    margin-left: 19%;\n}\n.form-group-inline {\n    margin-bottom: 15px;\n}\n.form-group-inline .form-control {\n    width: 100%;\n}\n.kv-rows, .pair-add-row {\n    margin-left: 155px;\n}\n.add-system{\n    color: #a09f9f;\n    font-size: 18px;\n}\n.glyphicon {\n    position: relative;\n    top: 2px;\n    display: inline-block;\n    font-style: normal;\n    font-weight: 400;\n    line-height: 1;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n.esb_url>.btn{\n    height: 23px;\n    width: 75px;\n    padding-top: 3px;\n    padding-bottom: 0;\n    padding-right: 5px;\n    padding-left: 5px;\n    margin: 0;\n    font-size: 10px;\n    line-height: 0.5;\n}\nbody.menu-active .mymodal-backdrop {\n    position: fixed;\n    top: 0;\n    left: 0;\n    z-index: 40;\n    display: block;\n    width: 100%;\n    height: 100%;\n}\n.dropdown {\n    position: relative;\n    display: inline-block;\n    margin-top: -6px;\n}\n.dropdown .show-resource-url {\n    position: relative;\n}\n.dropdown-content {\n    z-index: 41;\n    display: none;\n    position: absolute;\n    width: 410px;\n    top: 41px;\n    right: 0;\n    padding: 6px 8px 0 8px;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid rgba(0,0,0,0.15);\n    box-shadow: 0 3px 12px rgba(0,0,0,0.15);\n}\n.dropdown-content:before,.dropdown-content:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tborder-left: 7px solid transparent;\n\tborder-right: 7px solid transparent;\n\ttop: -7px;\n\tright: 37px;\n\tmargin-left: -10px;\n}\n.dropdown-content:before {\n    border-bottom: 7px solid rgba(0, 0, 0, 0.5);\n    margin-bottom: 5px;\n}\n\n.dropdown-content:after{\n    border-bottom: 7px solid #fff;\n    margin-bottom: -2px;\n    z-index: 1;\n}\n.dropdown-content .btn-link-url {\n    padding: 3px 4px;\n    color: #337ab7;\n    height: 34px;\n}\n.dropdown-content .form-control {\n    height: 34px;\n}\n.dropdown-content .tooltip-inner {\n    width: 100px;\n}\n.dropdown-content input.invoke-url {\n    background-color: white;\n}\n.btn {\n    min-width: 15px;\n}\nbutton.btn {\n    height: 34px;\n    line-height: 28px;\n}\n.input-group-btn>.btn {\n    cursor: pointer;\n    margin-bottom: 5px;\n    padding-right: 5px;\n}\n.input-group-btn:last-child>.btn, .input-group-btn:last-child>.btn-group {\n    margin-left: -25px;\n    z-index: 1;\n}\n.input-group-btn>.btn:hover, .input-group-btn>.btn:focus, .input-group-btn>.btn:active {\n    z-index: 1;\n}\n\n.channel-name-inactive {\n    color: #999;\n    text-decoration: line-through;\n}\n\n\n.panel-title-text{\n  position: relative;\n  padding: 3px 15px;\n  display: inline-block;\n  background-color: #147BD0;\n  color: white;\n  float: left;\n  font-size: 15px;\n}\n.panel-title-text:before{display: inline-block;width:6px;height: 100%;background: #147BD0 ;content: ' ';position: absolute;right: -8px;top: 0;opacity: 0.7;}\n.panel-title-text:after{display: inline-block;width:5px;height: 100%;background: #147BD0 ;content: ' ';position: absolute;right: -15px;top: 0;opacity: 0.4;}\n\n.dropdown-menu {\n    text-align: left;\n}\n.btn-group>.dropdown-menu {\n    font-size: 14px;\n}\n\n.rate-limit-config-container {\n    display: inline-block;\n    width: 100%;\n    margin-top: 5px;\n    margin-bottom: 0px;\n    padding-bottom: 0px;\n}\n\n.king-notice-box.king-notice-success {\n    background: url(../img/notice_success_icon.png) no-repeat left center;\n}\n.king-notice-box.king-notice-fail {\n    background: url(../img/notice_fail_icon.png) no-repeat left center;\n}\n.king-notice-box {\n    margin-left: 10px;\n    padding: 10px;\n    padding-left: 33px;\n    text-align: left;\n    display: inline-block;\n}\n.king-notice-box .king-notice-text {\n    margin: 0;\n    line-height: 30px;\n    padding-left: 8px;\n    min-width: 150px;\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/css/helper.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.document {\n    padding: 10px 5px;\n}\n.document li p.first {\n    display: inline-block;\n}\n\n.document ul, .document ol {\n    padding-left: 15px;\n    list-style: initial;\n}\n\n.document ul :first-child, .document ol :first-child {\n    margin-top: 0;\n}\n.document ul li {\n    margin: 3px 0;\n    padding: 0;\n}\n\n.document ul :last-child, .document ol :last-child {\n    margin-bottom: 0;\n}\n.panel-info {\n    border-color: #dddddd;\n}\n.panel-info>.panel-heading {\n    color: #31708f;\n    background-color: #f9f9f9;\n    border-color: #dddddd;\n}\n.panel-heading {\n    padding: 5px 10px;\n    border-bottom: 1px solid transparent;\n    border-top-right-radius: 3px;\n    border-top-left-radius: 3px;\n}\n.panel-body {\n    padding: 5px 15px;\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/css/md2html.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/* md to html style */\n.document {\n    /*font-family: \"Lato\",\"proxima-nova\",\"Helvetica Neue\",Arial,sans-serif;*/\n    font-weight: normal;\n    font-size: 14px;\n    line-height: 1.6;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    background-color: white;\n    padding: 30px;\n    color: #333;\n}\ntt, code, kbd, samp {\n    font-family: \"Incosolata\",\"Consolata\",\"Monaco\",monospace;\n    font-size: 75%;\n}\n\n.clear {\n    clear: both;\n}\n\n.document > *:first-child {\n    margin-top: 0 !important;\n}\n\n.document > *:last-child {\n    margin-bottom: 0 !important;\n}\n\n.document a {\n    color: #0000ff;\n    text-decoration: none;\n}\n\n.document a.absent {\n    color: #cc0000;\n}\n\n.document a.anchor {\n    display: block;\n    padding-left: 30px;\n    margin-left: -30px;\n    cursor: pointer;\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n}\n\nh1, h2, h3, h4, h5, h6 {\n    margin: 20px 0 10px;\n    padding: 0;\n    font-weight: bold;\n    -webkit-font-smoothing: antialiased;\n    cursor: text;\n    position: relative;\n    color: black;\n}\nh1 {\n    font-size: 24px;\n    color: black;\n    margin-top: 24px;\n    padding-bottom: 10px;\n    border-bottom: 1px solid #cccccc;\n}\n\nh1:first-child + h2, h3:first-child, h4:first-child, h5:first-child, h6:first-child {\n    margin-top: 0;\n    padding-top: 0;\n}\n\nh1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {\n   text-decoration: none;\n}\n\nh1 tt, h1 code {\n    font-size: inherit;\n}\n\nh2 tt, h2 code {\n    font-size: inherit;\n}\n\nh3 tt, h3 code {\n    font-size: inherit;\n}\n\nh4 tt, h4 code {\n    font-size: inherit;\n}\n\nh5 tt, h5 code {\n    font-size: inherit;\n}\n\nh6 tt, h6 code {\n    font-size: inherit;\n}\n\nh2 {\n    font-size: 20px;\n    color: black;\n    margin: 20px 0 10px 0;\n}\n\nh3 {\n    font-size: 16px;\n    margin: 18px 0 9px 0;\n}\n\nh4 {\n    font-size: 14px;\n}\n\nh5 {\n    font-size: 14px;\n}\n\nh6 {\n    color: #777777;\n    font-size: 14px;\n}\n\n.document p, .document blockquote, .document ul, .document ol, .document dl, .document li, .document table, .document pre {\n    margin: 14px 0 14px 0;\n}\nhr {\n    border: 0 none;\n    color: #cccccc;\n    height: 4px;\n    padding: 0;\n}\n\n.document > h2:first-child {\n    margin-top: 0;\n    padding-top: 0;\n}\n\n.document > h1:first-child {\n    margin-top: 0;\n    padding-top: 0;\n}\n\n.document > h1:first-child + h2 {\n    margin-top: 0;\n    padding-top: 0;\n}\n\n.document > h3:first-child, .document > h4:first-child, .document > h5:first-child, .document > h6:first-child {\n    margin-top: 0;\n    padding-top: 0;\n}\n\na:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {\n    margin-top: 0;\n    padding-top: 0;\n}\n\nh1 p, h2 p, h3 p, h4 p, h5 p, h6 p {\n    margin-top: 0;\n}\n\n.document li p.first {\n    display: inline-block;\n}\n\n.document ul, .document ol {\n    padding-left: 30px;\n    list-style: initial;\n}\n\n.document ul :first-child, .document ol :first-child {\n    margin-top: 0;\n}\n.document ul li {\n    margin: 3px 0;\n    padding: 0;\n}\n\n.document ul :last-child, .document ol :last-child {\n    margin-bottom: 0;\n}\n\ndl {\n    padding: 0;\n}\n\ndl dt {\n    font-size: 14px;\n    font-weight: bold;\n    font-style: italic;\n    padding: 0;\n    margin: 15px 0 5px;\n}\n\ndl dt:first-child {\n    padding: 0;\n}\n\ndl dt > :first-child {\n    margin-top: 0;\n}\n\ndl dt > :last-child {\n    margin-bottom: 0;\n}\n\ndl dd {\n    margin: 0 0 15px;\n    padding: 0 15px;\n}\n\ndl dd > :first-child {\n    margin-top: 0;\n}\n\ndl dd > :last-child {\n    margin-bottom: 0;\n}\n\nblockquote {\n    border-left: 4px solid #dddddd;\n    padding: 0 15px;\n    color: #777777;\n}\n\nblockquote > :first-child {\n    margin-top: 0;\n}\n\nblockquote > :last-child {\n    margin-bottom: 0;\n}\n\ntable {\n    padding: 0;\n    width: 100%;\n    border: 1px solid #ccc;\n    border-spacing: 0;\n    border-collapse: collapse;\n    border-width: 0 0 0 0;\n}\ntable tr {\n    background-color: white;\n    margin: 0;\n    padding: 0;\n}\ntable tr>th {\n    border-bottom: 2px solid #ddd;\n}\ntable tr>td {\n    border-top: 1px solid #ddd;\n}\n\ntable tr:nth-child(2n) {\n    background-color: #f8f8f8;\n}\n\ntable tr th {\n    font-weight: bold;\n    text-align: left;\n    margin: 0;\n    padding: 6px 10px;\n}\n\ntable tr td {\n    text-align: left;\n    margin: 0;\n    padding: 6px 10px;\n}\n\ntable tr th :first-child, table tr td :first-child {\n    margin-top: 0;\n}\n\ntable tr th :last-child, table tr td :last-child {\n    margin-bottom: 0;\n}\n\nimg {\n    max-width: 100%;\n}\n\nspan.frame {\n    display: block;\n    overflow: hidden;\n}\n\nspan.frame > span {\n    border: 1px solid #dddddd;\n    display: block;\n    float: left;\n    overflow: hidden;\n    margin: 13px 0 0;\n    padding: 7px;\n    width: auto;\n}\n\nspan.frame span img {\n    display: block;\n    float: left;\n}\n\nspan.frame span span {\n    clear: both;\n    color: #333333;\n    display: block;\n    padding: 5px 0 0;\n}\n\nspan.align-center {\n    display: block;\n    overflow: hidden;\n    clear: both;\n}\n\nspan.align-center > span {\n    display: block;\n    overflow: hidden;\n    margin: 13px auto 0;\n    text-align: center;\n}\n\nspan.align-center span img {\n    margin: 0 auto;\n    text-align: center;\n}\n\nspan.align-right {\n    display: block;\n    overflow: hidden;\n    clear: both;\n}\n\nspan.align-right > span {\n    display: block;\n    overflow: hidden;\n    margin: 13px 0 0;\n    text-align: right;\n}\n\nspan.align-right span img {\n    margin: 0;\n    text-align: right;\n}\n\nspan.float-left {\n    display: block;\n    margin-right: 13px;\n    overflow: hidden;\n    float: left;\n}\n\nspan.float-left span {\n    margin: 13px 0 0;\n}\n\nspan.float-right {\n    display: block;\n    margin-left: 13px;\n    overflow: hidden;\n    float: right;\n}\n\nspan.float-right > span {\n    display: block;\n    overflow: hidden;\n    margin: 13px auto 0;\n    text-align: right;\n}\n\ncode, tt {\n    margin: 0 2px;\n    padding: 0 5px;\n    white-space: nowrap;\n    border: 1px solid #eaeaea;\n    background-color: #f8f8f8;\n    border-radius: 3px;\n}\n\npre code {\n    margin: 0;\n    padding: 0;\n    white-space: pre;\n    border: none;\n    background: transparent;\n}\n\n.highlight pre {\n    background-color: #f8f8f8;\n    border: 1px solid #cccccc;\n    font-size: 13px;\n    line-height: 19px;\n    overflow: auto;\n    padding: 6px 10px;\n    border-radius: 3px;\n}\n\npre {\n    background-color: #f8f8f8;\n    /*\n    border: 1px solid #cccccc;\n    border-radius: 3px;\n     */\n    border-width: 0;\n    border-radius: 0;\n    font-size: 13px;\n    line-height: 19px;\n    overflow: auto;\n    padding: 6px 10px;\n}\n\npre code, pre tt {\n    background-color: transparent;\n    border: none;\n}\n\n/* google fonts From RTD */\n@font-face {\n    font-family: 'Inconsolata';\n    font-style: normal;\n    font-weight: 400;\n    src: local('Inconsolata'), url(https://themes.googleusercontent.com/static/fonts/inconsolata/v7/BjAYBlHtW3CJxDcjzrnZCLrIa-7acMAeDBVuclsi6Gc.woff) format('woff');\n}\n@font-face {\n    font-family: 'Inconsolata';\n    font-style: normal;\n    font-weight: 700;\n    src: local('Inconsolata Bold'), local('Inconsolata-Bold'), url(https://themes.googleusercontent.com/static/fonts/inconsolata/v7/AIed271kqQlcIRSOnQH0yRbnBKKEOwRKgsHDreGcocg.woff) format('woff');\n}\n@font-face {\n    font-family: 'Lato';\n    font-style: normal;\n    font-weight: 400;\n    src: local('Lato Regular'), local('Lato-Regular'), url(https://themes.googleusercontent.com/static/fonts/lato/v7/qIIYRU-oROkIk8vfvxw6QvesZW2xOQ-xsNqO47m55DA.woff) format('woff');\n}\n@font-face {\n    font-family: 'Lato';\n    font-style: normal;\n    font-weight: 700;\n    src: local('Lato Bold'), local('Lato-Bold'), url(https://themes.googleusercontent.com/static/fonts/lato/v7/qdgUG4U09HnJwhYI-uK18wLUuEpTyoUstqEm5AMlJo4.woff) format('woff');\n}\n@font-face {\n    font-family: 'Roboto Slab';\n    font-style: normal;\n    font-weight: 400;\n    src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://themes.googleusercontent.com/static/fonts/robotoslab/v3/y7lebkjgREBJK96VQi37ZrrIa-7acMAeDBVuclsi6Gc.woff) format('woff');\n}\n@font-face {\n    font-family: 'Roboto Slab';\n    font-style: normal;\n    font-weight: 700;\n    src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://themes.googleusercontent.com/static/fonts/robotoslab/v3/dazS1PrQQuCxC3iOAJFEJRbnBKKEOwRKgsHDreGcocg.woff) format('woff');\n}\n\npre.code .ln { color: grey; } /* line numbers */\npre.code, code { background-color: #eeeeee;}\npre.code .comment, code .comment { color: #5C6576 }\npre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }\npre.code .literal.string, code .literal.string { color: #0C5404 }\npre.code .name.builtin, code .name.builtin { color: #352B84 }\npre.code .deleted, code .deleted { background-color: #DEB0A1}\npre.code .inserted, code .inserted { background-color: #A3D289}\n\n.document {\n    margin: auto;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding: 14px 28px 0 28px;\n    background-color: white;\n}\n\n.codehilite .hll { background-color: #ffffcc }\n.codehilite  { background: #f8f8f8; }\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\n.codehilite .o { color: #666666 } /* Operator */\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\n.codehilite .c1 { color: #408080; /* font-style: italic */ } /* Comment.Single */\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\n.codehilite .ge { font-style: italic } /* Generic.Emph */\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\n.codehilite .go { color: #808080 } /* Generic.Output */\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n.codehilite .gt { color: #0040D0 } /* Generic.Traceback */\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\n.codehilite .m { color: #666666 } /* Literal.Number */\n.codehilite .s { color: #BA2121 } /* Literal.String */\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\n.codehilite .nb { color: #008000 } /* Name.Builtin */\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n.codehilite .no { color: #880000 } /* Name.Constant */\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n.codehilite .nf { color: #0000FF } /* Name.Function */\n.codehilite .nl { color: #A0A000 } /* Name.Label */\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\n.codehilite .nv { color: #19177C } /* Name.Variable */\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\n\ndiv.table-cell {\n    float: none;\n    display: table-cell;\n    vertical-align: top;\n}\n.left-nav-menus>li.active>a {\n    background-color: white;\n    color: #258cec;\n}\n.container_box {\n    border: 0;\n    background-color: #fff;\n}\n.pull-right {\n    float: right!important;\n    margin-bottom: 30px;\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/css/style.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/* ------------------------------------------------------------------------------------------\n * Content\n * ------------------------------------------------------------------------------------------ */\nbody {\n  min-width: 980px;\n  max-width: 1280px;\n}\n\nbody, p, a, div, th, td {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n}\n\ntd.code {\n  font-size: 14px;\n  font-family: \"Source Code Pro\", monospace;\n  font-style: normal;\n  font-weight: 400;\n}\n\n#content {\n  padding-top: 16px;\n  z-Index: -1;\n  margin-left: 270px;\n}\n\np {\n  color: #808080;\n}\n\nh1 {\n  font-family: \"Source Sans Pro Semibold\", monospace, sans-serif;\n  font-weight: normal;\n  font-size: 44px;\n  line-height: 50px;\n  margin: 0 0 10px 0;\n  padding: 0;\n}\n\nh2 {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: normal;\n  font-size: 24px;\n  line-height: 40px;\n  margin: 0 0 20px 0;\n  padding: 0;\n}\n\nsection {\n  border-top: 1px solid #ebebeb;\n  padding: 30px 0;\n}\n\nsection h1 {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 700;\n  font-size: 32px;\n  line-height: 40px;\n  padding-bottom: 14px;\n  margin: 0 0 20px 0;\n  padding: 0;\n}\n\narticle {\n  padding: 14px 0 30px 0;\n}\n\narticle h1 {\n  font-family: \"Source Sans Pro Bold\", monospace, sans-serif;\n  font-weight: 600;\n  font-size: 24px;\n  line-height: 26px;\n}\n\narticle h2 {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 600;\n  font-size: 18px;\n  line-height: 24px;\n  margin: 0 0 10px 0;\n}\n\narticle h3 {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 600;\n  font-size: 16px;\n  line-height: 18px;\n  margin: 0 0 10px 0;\n}\n\narticle h4 {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 600;\n  font-size: 14px;\n  line-height: 16px;\n  margin: 0 0 8px 0;\n}\n\ntable {\n  border-collapse: collapse;\n  width: 100%;\n  margin: 0 0 20px 0;\n}\n\nth {\n  background-color: #f5f5f5;\n  text-align: left;\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 700;\n  padding: 4px 8px;\n  border: #e0e0e0 1px solid;\n}\n\ntd {\n  vertical-align: top;\n  padding: 2px 8px;\n  border: #e0e0e0 1px solid;\n}\n\n#generator .content {\n  color: #b0b0b0;\n  border-top: 1px solid #ebebeb;\n  padding: 10px 0;\n}\n\n.label-optional {\n  float: right;\n}\n\n.open-left {\n  right: 0;\n  left: auto;\n}\n\n/* ------------------------------------------------------------------------------------------\n * apidoc - intro\n * ------------------------------------------------------------------------------------------ */\n\n#apidoc .apidoc {\n  border-top: 1px solid #ebebeb;\n  padding: 30px 0;\n}\n\n#apidoc h1 {\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 700;\n  font-size: 32px;\n  line-height: 40px;\n  padding-bottom: 14px;\n  margin: 0 0 20px 0;\n  padding: 0;\n}\n\n#apidoc h2 {\n  font-family: \"Source Sans Pro Bold\", monospace, sans-serif;\n  font-weight: 600;\n  font-size: 22px;\n  line-height: 26px;\n  padding-top: 14px;\n}\n\n/* ------------------------------------------------------------------------------------------\n * pre / code\n * ------------------------------------------------------------------------------------------ */\npre {\n  background-color: #292b36;\n  color: #ffffff;\n  padding: 10px;\n  border-radius: 6px;\n  position: relative;\n  margin: 10px 0 20px 0;\n}\n\ncode.language-text {\n  word-wrap: break-word;\n}\n\npre.language-json {\n  overflow: auto;\n}\n\npre.language-html {\n  margin: 40px 0 20px 0;\n}\n\npre.language-html:before {\n  content: attr(data-type);\n  position: absolute;\n  top: -30px;\n  left: 0;\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 600;\n  font-size: 15px;\n  display: inline-block;\n  padding: 2px 5px;\n  border-radius: 6px;\n  text-transform: uppercase;\n  background-color: #3387CC;\n  color: #ffffff;\n}\n\npre.language-html[data-type=\"get\"]:before {\n  background-color: green;\n}\n\npre.language-html[data-type=\"put\"]:before {\n  background-color: #e5c500;\n}\n\npre.language-html[data-type=\"post\"]:before {\n  background-color: #4070ec;\n}\n\npre.language-html[data-type=\"delete\"]:before {\n  background-color: #ed0039;\n}\n\npre.language-api .str {\n  color: #ffffff;\n}\n\npre.language-api .pln,\npre.language-api .pun {\n  color: #65B042;\n}\n\npre code {\n  display: block;\n  font-size: 14px;\n  font-family: \"Source Code Pro\";\n  font-style: normal;\n  font-weight: 400;\n  word-wrap: normal;\n  white-space: pre;\n}\n\npre code.sample-request-response-json {\n  white-space: pre-wrap;\n  max-height: 500px;\n  overflow: auto;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Sidenav\n * ------------------------------------------------------------------------------------------ */\n.sidenav {\n  width: 228px;\n  margin: 0;\n  padding: 20px;\n  position: fixed;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n  background-color: #f5f5f5;\n  z-index: 10;\n}\n\n.sidenav > li > a {\n  display: block;\n  width: 192px;\n  margin: 0;\n  padding: 2px 11px;\n  border: 0;\n  border-left: transparent 4px solid;\n  border-right: transparent 4px solid;\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n}\n\n.sidenav > li.nav-header > a {\n  padding: 5px 15px;\n  border: 1px solid #e5e5e5;\n  width: 190px;\n  font-family: \"Source Sans Pro\", monospace, sans-serif;\n  font-weight: 700;\n  font-size: 16px;\n  background-color: #ffffff;\n}\n\n.sidenav > li.nav-header.active > a {\n  background-color: #0088cc;\n}\n\n.sidenav > .active > a {\n  position: relative;\n  z-index: 2;\n}\n\n.sidenav > li > a:hover {\n  background-color: #ffffff;\n}\n\n.sidenav > li.has-modifications a {\n  border-right: #60d060 4px solid;\n}\n\n.sidenav > li.is-new a {\n  border-left: #e5e5e5 4px solid;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Compare\n * ------------------------------------------------------------------------------------------ */\n\nins {\n  background: #60d060;\n  text-decoration: none;\n  color: #000000;\n}\n\ndel {\n  background: #f05050;\n  color: #000000;\n}\n\n.label-ins {\n  background-color: #60d060;\n}\n\n.label-del {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\npre.ins {\n  background-color: #60d060;\n}\n\npre.del {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\ntable.ins th,\ntable.ins td {\n  background-color: #60d060;\n}\n\ntable.del th,\ntable.del td {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\ntr.ins td {\n  background-color: #60d060;\n}\n\ntr.del td {\n  background-color: #f05050;\n  text-decoration: line-through;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Spinner\n * ------------------------------------------------------------------------------------------ */\n\n#loader {\n  position: absolute;\n  width: 100%;\n}\n\n#loader p {\n  padding-top: 80px;\n  margin-left: -4px;\n}\n\n.spinner {\n  margin: 200px auto;\n  width: 60px;\n  height: 60px;\n  position: relative;\n}\n\n.container1 > div, .container2 > div, .container3 > div {\n  width: 14px;\n  height: 14px;\n  background-color: #0088cc;\n\n  border-radius: 100%;\n  position: absolute;\n  -webkit-animation: bouncedelay 1.2s infinite ease-in-out;\n  animation: bouncedelay 1.2s infinite ease-in-out;\n  /* Prevent first frame from flickering when animation starts */\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.spinner .spinner-container {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n}\n\n.container2 {\n  -webkit-transform: rotateZ(45deg);\n  transform: rotateZ(45deg);\n}\n\n.container3 {\n  -webkit-transform: rotateZ(90deg);\n  transform: rotateZ(90deg);\n}\n\n.circle1 { top: 0; left: 0; }\n.circle2 { top: 0; right: 0; }\n.circle3 { right: 0; bottom: 0; }\n.circle4 { left: 0; bottom: 0; }\n\n.container2 .circle1 {\n  -webkit-animation-delay: -1.1s;\n  animation-delay: -1.1s;\n}\n\n.container3 .circle1 {\n  -webkit-animation-delay: -1.0s;\n  animation-delay: -1.0s;\n}\n\n.container1 .circle2 {\n  -webkit-animation-delay: -0.9s;\n  animation-delay: -0.9s;\n}\n\n.container2 .circle2 {\n  -webkit-animation-delay: -0.8s;\n  animation-delay: -0.8s;\n}\n\n.container3 .circle2 {\n  -webkit-animation-delay: -0.7s;\n  animation-delay: -0.7s;\n}\n\n.container1 .circle3 {\n  -webkit-animation-delay: -0.6s;\n  animation-delay: -0.6s;\n}\n\n.container2 .circle3 {\n  -webkit-animation-delay: -0.5s;\n  animation-delay: -0.5s;\n}\n\n.container3 .circle3 {\n  -webkit-animation-delay: -0.4s;\n  animation-delay: -0.4s;\n}\n\n.container1 .circle4 {\n  -webkit-animation-delay: -0.3s;\n  animation-delay: -0.3s;\n}\n\n.container2 .circle4 {\n  -webkit-animation-delay: -0.2s;\n  animation-delay: -0.2s;\n}\n\n.container3 .circle4 {\n  -webkit-animation-delay: -0.1s;\n  animation-delay: -0.1s;\n}\n\n@-webkit-keyframes bouncedelay {\n  0%, 80%, 100% { -webkit-transform: scale(0.0) }\n  40% { -webkit-transform: scale(1.0) }\n}\n\n@keyframes bouncedelay {\n  0%, 80%, 100% {\n    transform: scale(0.0);\n    -webkit-transform: scale(0.0);\n  } 40% {\n    transform: scale(1.0);\n    -webkit-transform: scale(1.0);\n  }\n}\n\n/* ------------------------------------------------------------------------------------------\n * Tabs\n * ------------------------------------------------------------------------------------------ */\nul.nav-tabs {\n  margin: 0;\n}\n\n/* ------------------------------------------------------------------------------------------\n * Print\n * ------------------------------------------------------------------------------------------ */\n\n@media print {\n\n  #sidenav,\n  #version,\n  #versions,\n  section .version,\n  section .versions {\n    display: none;\n  }\n\n  #content {\n    margin-left: 0;\n  }\n\n  a {\n    text-decoration: none;\n    color: inherit;\n  }\n\n  a:after {\n    content: \" [\" attr(href) \"] \";\n  }\n\n  p {\n    color: #000000\n  }\n\n  pre {\n    background-color: #ffffff;\n    color: #000000;\n    padding: 10px;\n    border: #808080 1px solid;\n    border-radius: 6px;\n    position: relative;\n    margin: 10px 0 20px 0;\n  }\n\n} /* /@media print */\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/buffet_list.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function(){\n    $('[data-toggle=\"tooltip\"]').tooltip();\n    $('.show_esb_url').bind('click', function (ev) {\n        $('body').addClass('menu-active');\n        $(ev.currentTarget).find('.dropdown-content').show();\n    });\n    $('.mymodal-backdrop').bind('click', function () {\n        $('body').removeClass('menu-active');\n        $('.dropdown .dropdown-content').hide();\n    });\n    $('.copy-to-clipboard').bind('click', function (ev) {\n        var btn = ev.currentTarget;\n        var input = $(btn).parent().prev();\n        var el_tooltip = $(btn).parent().find('.tooltip-inner');\n\n        input[0].select();\n        try {\n            document.execCommand(\"copy\");\n            el_tooltip.text(gettext('已复制'));\n        } catch(err) {\n            el_tooltip.text(gettext('复制失败，请手动复制'));\n        }\n        clearSelection();\n    });\n    function clearSelection() {\n        var sel;\n        if ( (sel = document.selection) && sel.empty ) {\n            sel.empty();\n        } else {\n            if (window.getSelection) {\n                window.getSelection().removeAllRanges();\n            }\n            var activeEl = document.activeElement;\n            if (activeEl) {\n                var tagName = activeEl.nodeName.toLowerCase();\n                if ( tagName == \"textarea\" ||\n                        (tagName == \"input\" && activeEl.type == \"text\") ) {\n                    // Collapse the selection to the end\n                    activeEl.selectionStart = activeEl.selectionEnd;\n                }\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/buffet_update.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function() {\n    var kv_extra_headers = new KeyValueInputPair({\n        container: $('#pair-extra-headers'),\n        label: gettext('请求额外头信息'),\n        initial: current_conf.extra_headers,\n    });\n    kv_extra_headers.initialize();\n\n    $('form[name=\"form-apply\"]').bind('submit', function(event) {\n        $('#id_extra_headers').val(JSON.stringify(kv_extra_headers.get_value()));\n    });\n\n    $('button.cancel').bind('click', function() {\n       window.location.href = UrlMaker.make('buffet_list');\n    });\n    // 添加系统\n    var url_add_system = UrlMaker.make('system_add');\n    add_system(url_add_system, current_conf.csrf_token, $('#id_system'));\n\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/channel.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function() {\n    $('#id_component_system').bind('change', function() {\n        var component_system_name = $(this).find('option:selected').text();\n\n        var component_system_name = component_system_name.match(/^\\[(.*?)\\]/);\n        if (component_system_name) {\n            component_system_name = component_system_name[1];\n        } else {\n            component_system_name = '';\n        }\n\n        var id_component_codename = $('#id_component_codename');\n        var component_codename = id_component_codename.val();\n        component_codename = component_codename.split('.');\n        if (component_codename.length == 3) {\n            component_codename[0] = 'generic'\n            component_codename[1] = component_system_name.toLowerCase();\n            component_codename = component_codename.join('.');\n        } else {\n            component_codename = 'generic.' + component_system_name.toLowerCase() + '.';\n        }\n        id_component_codename.val(component_codename);\n    });\n\n    $('#id_rate_limit_required').bind('change', function() {\n        if ($(this).is(\":checked\")) {\n            $('.rate-limit-config-container').show();\n        } else {\n            $('.rate-limit-config-container').hide();\n        };\n    });\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/channel_list.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function() {\n    $('.mymodal-backdrop').bind('click', function () {\n        $('body').removeClass('menu-active');\n        $('.dropdown .dropdown-content').hide();\n    });\n    $('#search_channel_system').select2();\n\n    function clearSelection() {\n        var sel;\n        if ( (sel = document.selection) && sel.empty ) {\n            sel.empty();\n        } else {\n            if (window.getSelection) {\n                window.getSelection().removeAllRanges();\n            }\n            var activeEl = document.activeElement;\n            if (activeEl) {\n                var tagName = activeEl.nodeName.toLowerCase();\n                if ( tagName == \"textarea\" ||\n                    (tagName == \"input\" && activeEl.type == \"text\") ) {\n                    // Collapse the selection to the end\n                    activeEl.selectionStart = activeEl.selectionEnd;\n                }\n            }\n        }\n    }\n    var channels_manager = {\n        get_selected_channel_ids: function() {\n            var result = []\n            $('input[name=\"channel_id\"]:checked').each(function(i, j){\n                result.push($(j).val());\n            });\n            return result;\n        }\n    };\n\n    // 为删除按钮绑定事件\n    $('#channels_delete').bind('click', function(){\n        channel_ids = channels_manager.get_selected_channel_ids();\n        if (channel_ids.length === 0) {\n            dialog({id: 'bktips', lock: true, title: '<span style=\"font-size: 15px;\">'+gettext('消息')+'</span>', content: '<i class=\"bk-icon icon-close2\" style=\"color: red\"></i> ' + gettext('请先选择待删除的通道！')}).showModal();\n            return\n        }\n\n        dialog({\n          title: \"<span style='font-size:15px;'>\"+gettext(\"删除确认\")+\"</span>\",\n            width: 300,\n            fixed: true,\n            content: gettext(\"该操作不可恢复，是否继续？\"),\n            ok: function () {\n                $.post(\n                    UrlMaker.make('channel_deleted'),\n                    {\n                        channel_ids: channel_ids.join(','),\n                    },\n                    function(data) {\n                        if (!data.error_message) {\n                            tmp_msg = ngettext('成功删除 %s 个通道！', '成功删除 %s 个通道！', data.affected_rows);\n                            tmp_msg = interpolate(tmp_msg, [data.affected_rows]);\n                            dialog({id: 'bktips', fixed: true, content: '<i class=\"bk-icon icon-check2\" style=\"color: green\"></i>  ' + tmp_msg}).show();\n                            setTimeout(function(){\n                              window.location.reload();\n                            }, 2000)\n                        } else {\n                            dialog({id: 'bktips', fixed: true, title: \"<span style='font-size:15px;'>\"+gettext(\"消息\")+\"</span>\", content: '<i class=\"bk-icon icon-close2\" style=\"color: red\"></i> ' + data.error_message}).showModal();\n                        }\n                    }\n                );\n            },\n            cancel: function () {},\n            okValue: gettext(\"确认删除\"),\n            cancelValue: gettext(\"取消\")\n        }).showModal();\n    });\n\n    // 为查询按钮绑定事件\n    Handlebars.registerHelper(\"channel_edit_url\", function(value) {\n        return UrlMaker.make('channel_edit', {'channel_id': value});\n    });\n\n    var PageConf = Backbone.Model.extend();\n    var SearchConf = new PageConf();\n\n    function get_search_conf() {\n        return {\n            'system_name': $('#search_channel_system').val(),\n            'channel_path': $('#search_channel_path').val(),\n            'channel_name': $('#search_channel_name').val(),\n        }\n    }\n\n    var MainView = Backbone.View.extend({\n        el: 'body',\n        template: Handlebars.compile($('#tmpl_channel_list').html()),\n        events: {\n            'click #search_channel_btn': function(ev) {\n                SearchConf.set(get_search_conf());\n            },\n            'click .show_esb_url': function(ev) {\n                $('body').addClass('menu-active');\n                $(ev.currentTarget).find('.dropdown-content').show();\n            },\n            'click .copy-to-clipboard': function(ev) {\n                var btn = ev.currentTarget;\n                var input = $(btn).parent().prev();\n                var el_tooltip = $(btn).parent().find('.tooltip-inner');\n\n                input[0].select();\n                try {\n                    document.execCommand(\"copy\");\n                    el_tooltip.text(gettext('已复制'));\n                } catch(err) {\n                    el_tooltip.text(gettext('复制失败，请手动复制'));\n                }\n                clearSelection();\n            },\n            'change input[name=\"channel_id\"]': function(ev) {\n                // 绑定checkbox修改事件\n                target = $(ev.target);\n                if (target.is(':checked')) {\n                    target.parents('tr').addClass('row-selected');\n                } else {\n                    target.parents('tr').removeClass('row-selected');\n                }\n            }\n        },\n        initialize: function() {\n            this.listenTo(SearchConf, 'change', this.render);\n        },\n        render: function() {\n            var tmpl = this.template;\n            $.getJSON(\n                UrlMaker.make('channel_list'),\n                {\n                    system_name: SearchConf.get('system_name'),\n                    channel_path: SearchConf.get('channel_path'),\n                    channel_name: SearchConf.get('channel_name'),\n                },\n                function(data) {\n                    $('#table_channels').html(tmpl(data));\n\n                    $('[data-toggle=\"tooltip\"]').tooltip();\n                }\n            )\n        }\n    });\n\n    var EMainView = new MainView();\n    SearchConf.set(get_search_conf());\n    SearchConf.trigger('change');\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/core.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n(function() {\n  // 一个帮助输入key-value对的组件\n  var KeyValueInputPair = function(options) {\n    var self = this;\n    self.options = options;\n    self.container = options.container;\n    self.initial = options.initial;\n\n    // 以给定的容器初始化\n    self.initialize = function() {\n      var template = Handlebars.compile($('#tmpl-kvip').html());\n      var template_row = Handlebars.compile($('#tmpl-kvip-row').html());\n\n      // 如果设置了初始值，使用这些初始值来初始化\n      if (self.initial && !$.isEmptyObject(self.initial)) {\n        var part_rows = '';\n        $.each(self.initial, function(key, value) {\n            part_rows += template_row({key: key, value: value});\n        });\n      } else {\n        var part_rows = template_row();\n      }\n\n      self.container.html(template({\n        label: self.options.label,\n        part_rows: part_rows\n      }));\n\n\n      // bind events\n      self.container.find('.pair-add-row').bind('click', function() {\n        self.container.find('.kv-rows').append(template_row());\n      });\n      self.container.on('click', '.pair-remove-row', function() {\n          $(this).parents('.kv-row').remove();\n      });\n    };\n\n    //获取当前填写的Key-Value对\n    self.get_value = function() {\n      var result = {};\n      self.container.find('.kv-row').each(function(i, row) {\n        var input_key = $(row).find('input[name=\"key\"]');\n        var input_value = $(row).find('input[name=\"value\"]');\n        if (input_key.val()) {\n          result[input_key.val()] = input_value.val();\n        }\n      });\n      return result;\n    };\n  };\n\n\n  window.KeyValueInputPair = KeyValueInputPair;\n})();\n\n\nfunction populate(frm, data) {\n    $.each(data, function(key, value){\n      var $ctrl = $('[name='+key+']', frm);\n      if ($ctrl.prop(\"tagName\")) {\n          $ctrl.val(value);\n          return;\n      }\n      switch($ctrl.attr(\"type\"))\n      {\n          case \"text\" :\n          case \"hidden\":\n          $ctrl.val(value);\n          break;\n          case \"radio\" : case \"checkbox\":\n          $ctrl.each(function(){\n             if($(this).attr('value') == value) {  $(this).attr(\"checked\",value); } });\n          break;\n      }\n    });\n}\n\n\n// simplified $.deparam analog\nvar deparam = function(paramString){\n    var result = {};\n    if(!paramString){\n        return result;\n    }\n    $.each(paramString.split('&'), function(index, value){\n        if(value){\n            var param = value.split('=');\n            result[param[0]] = param[1];\n        }\n    });\n    return result;\n};\n\n\n$.fn.serializeObject = function()\n{\n    var o = {};\n    var a = this.serializeArray();\n    $.each(a, function() {\n        if (o[this.name] !== undefined) {\n            if (!o[this.name].push) {\n                o[this.name] = [o[this.name]];\n            }\n            o[this.name].push(this.value || '');\n        } else {\n            o[this.name] = this.value || '';\n        }\n    });\n    return o;\n};\n\n// This plugin comes from:\n//\n// http://www.keyframesandcode.com/resources/javascript/jQuery/demos/populate-demo.html\n\njQuery.fn.populate = function(obj, options) {\n\n  // ------------------------------------------------------------------------------------------\n  // JSON conversion function\n\n  // convert\n  function parseJSON(obj, path) {\n    // prepare\n    path = path || '';\n\n    // iteration (objects / arrays)\n    if(obj == undefined) {\n      // do nothing\n    } else if(obj.constructor == Object) {\n      for(var prop in obj) {\n        var name\t= path + (path == '' ? prop : '[' +prop+ ']');\n        parseJSON(obj[prop], name);\n      }\n    }\n\n    else if(obj.constructor == Array) {\n      for(var i = 0; i < obj.length; i++) {\n        var index\t= options.useIndices ? i : '';\n        index\t\t= options.phpNaming ? '[' +index+']' : index;\n        var name\t= path + index;\n        parseJSON(obj[i], name);\n      }\n      // assignment (values)\n    } else {\n      // if the element name hasn't yet been defined, create it as a single value\n      if(arr[path] == undefined) {\n        arr[path] = obj;\n        // if the element name HAS been defined, but it's a single value, convert to an array and add the new value\n      } else if(arr[path].constructor != Array) {\n        arr[path] = [arr[path], obj];\n        // if the element name HAS been defined, and is already an array, push the single value on the end of the stack\n      } else {\n        arr[path].push(obj);\n      }\n    }\n  };\n\n\n  // ------------------------------------------------------------------------------------------\n  // population functions\n\n  function debug(str) {\n    if(window.console && console.log) {\n      console.log(str);\n    }\n  }\n\n  // To get an escape selector (see http://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/)\n  function jq( myid ) {\n        return \"#\" + myid.replace(/(:|\\[|\\]|\\.)/g, \"\\\\$1\");\n    }\n\n  function getElementName(name) {\n    if (!options.phpNaming) {\n      name = name.replace(/\\[\\]$/,'');\n    }\n    return name;\n  }\n\n  function populateElement(parentElement, name, value) {\n    var selector\t= options.identifier == 'id' ? '#' + name : '[' +options.identifier+ '=\"' +name+ '\"]';\n    var element\t\t= jQuery(selector, parentElement);\n    value\t\t\t= value.toString();\n    value\t\t\t= value == 'null' ? '' : value;\n    element.html(value);\n  }\n\n  function populateFormElement(form, name, value) {\n    // check that the named element exists in the form\n    var name\t= getElementName(name); // handle non-php naming\n    var element\t= form[name];\n\n    // if the form element doesn't exist, check if there is a tag with that id\n    if(element == undefined) {\n      // look for the element\n      element = jQuery(jq(name), form);\n      if(element && element.length != 0) {\n        element.html(value);\n        return true;\n      }\n\n      // nope, so exit\n      if(options.debug) {\n        debug('No such element as ' + name);\n      }\n      return false;\n    }\n\n    // debug options\n    if(options.debug) {\n      _populate.elements.push(element);\n    }\n\n    // now, place any single elements in an array.\n    // this is so that the next bit of code (a loop) can treat them the\n    // same as any array-elements passed, ie radiobutton or checkox arrays,\n    // and the code will just work\n    elements = element.type == undefined && element.length ? element : [element];\n\n    // populate the element correctly\n    for(var e = 0; e < elements.length; e++) {\n      // grab the element\n      var element = elements[e];\n      // skip undefined elements or function objects (IE only)\n      if(!element || typeof element == 'undefined' ||\n          typeof element == 'function') {\n        continue;\n      }\n\n      // anything else, process\n      switch(element.type || element.tagName) {\n        case 'radio':\n          // use the single value to check the radio button\n          element.checked = (element.value != '' && value.toString() == element.value);\n\n        case 'checkbox':\n          // depends on the value.\n          // if it's an array, perform a sub loop\n          // if it's a value, just do the check\n\n\n          var values = value.constructor == Array ? value : [value];\n          for(var j = 0; j < values.length; j++) {\n            element.checked |= element.value == values[j];\n          }\n\n          //element.checked = (element.value != '' && value.toString().toLowerCase() == element.value.toLowerCase());\n          break;\n\n        case 'select-multiple':\n          var values = value.constructor == Array ? value : [value];\n          for(var i = 0; i < element.options.length; i++) {\n            for(var j = 0; j < values.length; j++) {\n              element.options[i].selected |= element.options[i].value == values[j];\n            }\n          }\n          break;\n\n        case 'select':\n        case 'select-one':\n          // if the select box has been replaced by this\n          // selectbox plugin: https://gist.github.com/1139558\n          if ($('#' + element.id + '_container').length > 0) {\n            // Click the correct li to set the select box.\n            $('li#' + element.id + '_input_' + value).click()\n          // Otherwise just let it work the usual way.\n          } else {\n            element.value = value.toString() || value;\n          }\n          break;\n\n        case 'text':\n        case 'button':\n        case 'textarea':\n        case 'submit':\n        default:\n          value\t\t\t= value == null ? '' : value;\n          element.value\t= value;\n\n      }\n\n    }\n\n  }\n\n\n\n  // ------------------------------------------------------------------------------------------\n  // options & setup\n\n  // exit if no data object supplied\n  if (obj === undefined) {\n    return this;\n  };\n\n  // options\n  var options = jQuery.extend({\n    phpNaming:\t\t\ttrue,\n      phpIndices:\t\t\tfalse,\n      resetForm:\t\t\ttrue,\n      identifier:\t\t\t'id',\n      debug:\t\t\t\tfalse\n  }, options);\n\n  if(options.phpIndices) {\n    options.phpNaming = true;\n  }\n\n  // ------------------------------------------------------------------------------------------\n  // convert hierarchical JSON to flat array\n\n  var arr\t= [];\n  parseJSON(obj);\n\n  if(options.debug) {\n    _populate = {\n      arr:\t\tarr,\n      obj:\t\tobj,\n      elements:\t[]\n    }\n  }\n\n  // ------------------------------------------------------------------------------------------\n  // main process function\n\n  this.each(function(){\n    // variables\n    var tagName\t= this.tagName.toLowerCase();\n    var method\t= tagName == 'form' ? populateFormElement : populateElement;\n\n    // reset form?\n    if(tagName == 'form' && options.resetForm) {\n      this.reset();\n    }\n\n    // update elements\n    for(var i in arr) {\n      if (arr.hasOwnProperty(i)) {\n        method(this, i, arr[i]);\n      }\n    }\n  });\n\n  return this;\n};\n\nmoment.locale('zh-CN');\n\n\nfunction ReplaceNumberWithCommas(yourNumber) {\n    //Seperates the components of the number\n    var n= yourNumber.toString().split(\".\");\n    //Comma-fies the first part\n    n[0] = n[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n    //Combines the two sections\n    return n.join(\".\");\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/csrftoken.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// AJAX请求，获取csrftoken\n$.ajaxSetup({\n    beforeSend: function(xhr, settings) {\n        function getCookie(name) {\n            var cookieValue = null;\n            if (document.cookie && document.cookie != '') {\n                var cookies = document.cookie.split(';');\n                for (var i = 0; i < cookies.length; i++) {\n                    var cookie = jQuery.trim(cookies[i]);\n                    // Does this cookie string begin with the name we want?\n                    if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                        break;\n                    }\n                }\n            }\n            return cookieValue;\n        }\n        function csrfSafeMethod(method) {\n            // these HTTP methods do not require CSRF protection\n            return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));\n        }\n        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {\n            var csrftoken = getCookie('bk_csrftoken');\n            xhr.setRequestHeader(\"X-CSRFToken\", csrftoken);\n        }\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/esb_add_system.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nfunction add_system(url_add_system, csrf_token, system_id) {\n    var add_system_dialog;\n    $('.add-system').bind('click', function () {\n        add_system_dialog = dialog({\n            id: 'add_system_dialog',\n            title: '<span style=\"font-size: 15px;\">'+gettext('添加新组件系统')+'</span>',\n            content: $('#system-add-tmpl'),\n            width: 830,\n            fixed: true,\n        });\n\n        add_system_dialog.showModal();\n    });\n\n    $('#add_system_btn').bind('click', function (event) {\n        event.preventDefault()\n\n        var is_valid_form = document.getElementById(\"system_info\").reportValidity();\n        if (!is_valid_form) {\n            return false;\n        }\n\n        var continue_flag = true\n        if(!$(\"#system-add-tmpl\").find('#id_name').val()){\n            $(\"#system-add-tmpl\").find('.form-group').eq(0).addClass('has-error');\n            var item_nam = $(\"#system-add-tmpl\").find('#id_name').next();\n            $(\"#system-add-tmpl\").find('#tip_name').empty();\n            item_nam.after('<span id=\"tip_name\" class=\"tips error\">'+gettext('这个字段是必填项。')+'</span>');\n            continue_flag = false\n        }else{\n            $(\"#system-add-tmpl\").find('.form-group').eq(0).removeClass('has-error');\n            $(\"#system-add-tmpl\").find('#tip_name').empty();\n            continue_flag = true\n        }\n        if(!$(\"#system-add-tmpl\").find('#id_label').val()){\n            $(\"#system-add-tmpl\").find('.form-group').eq(1).addClass('has-error');\n            var item_label = $(\"#system-add-tmpl\").find('#id_label').next();\n            $(\"#system-add-tmpl\").find('#tip_label').empty();\n            item_label.after('<span id=\"tip_label\" class=\"tips error\">'+gettext('这个字段是必填项。')+'</span>');\n            continue_flag = false\n        }else{\n            $(\"#system-add-tmpl\").find('.form-group').eq(1).removeClass('has-error');\n            $(\"#system-add-tmpl\").find('#tip_label').empty();\n            continue_flag = true\n        }\n        if(!continue_flag){\n            return false\n        }\n        data = {\n            'csrfmiddlewaretoken': csrf_token,\n            'name': $(\"#system-add-tmpl\").find('#id_name').val(),\n            'label': $(\"#system-add-tmpl\").find('#id_label').val(),\n            'interface_admin': $(\"#system-add-tmpl\").find('#id_interface_admin').val(),\n            'execute_timeout': $(\"#system-add-tmpl\").find(\"#id_execute_timeout\").val(),\n            'query_timeout': $(\"#system-add-tmpl\").find(\"#id_query_timeout\").val(),\n            'remark': $(\"#system-add-tmpl\").find('#id_remark').val(),\n        };\n        $.post(url_add_system, data, function(result){\n            add_system_dialog.close();\n            $(\"#system-add-tmpl\").find(\"form\")[0].reset();\n            if(result['result']){\n                var d = dialog({id: 'bktips', fixed: true, content: '<i class=\"bk-icon icon-check2\" style=\"color: green\"></i> ' + gettext('系统创建成功'), title: '<span style=\"font-size:15px\">'+gettext('消息')+'</span>'}).show();\n                setTimeout(function(){\n                  d.close().remove();\n                }, 2000);\n\n                system_id.append('<option value=\"'+ result['data']['id'] + '\">'+result['data']['display_name']+'</option>')\n                system_id.find('option[value=\"' + result['data']['id'] + '\"]').attr(\"selected\", true);\n                system_id.change();\n            }else{\n                dialog({id: 'bktips', title: '<span style=\"font-size: 15px;\">'+gettext('消息')+'</span>', fixed: true, content: '<i class=\"bk-icon icon-close2\" style=\"color: red\"></i> ' + gettext('系统创建失败')+': ' + result.error_message}).showModal();\n            }\n        }, 'json');\n    });\n    $('#cancel_system_btn').bind('click', function () {\n        add_system_dialog.close();\n        $(\"#system-add-tmpl\").find(\"form\")[0].reset();\n    });\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/js/system_list.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function(){\n    var systems_manager = {\n        get_selected_system_ids: function() {\n            var result = []\n            $('input[name=\"system_id\"]:checked').each(function(i, j){\n                result.push($(j).val());\n            });\n            return result;\n        }\n    };\n\n    // 绑定checkbox修改事件\n    $('input[name=\"system_id\"]').bind('change', function(event){\n        if ($(this).is(':checked')) {\n            $(this).parents('tr').addClass('row-selected');\n        } else {\n            $(this).parents('tr').removeClass('row-selected');\n        }\n    });\n\n    // 为删除按钮绑定事件\n    $('#systems_delete').bind('click', function(){\n        system_ids = systems_manager.get_selected_system_ids();\n        if (system_ids.length === 0) {\n          dialog({id: 'bktips', fixed: true, title: \"<span style='font-size: 15px;'>\" + gettext(\"消息\") + \"</span>\", content: '<i class=\"bk-icon icon-close2\" style=\"color: red\"></i> ' + gettext('请先选择待删除的系统！')}).showModal();\n            return\n        }\n        dialog({\n          title: \"<span style='font-size: 15px'>\" + gettext(\"删除确认\") + \"</span>\",\n            width: 420,\n            fixed: true,\n            content: gettext(\"该操作将删除关联的通道和组件，且不可恢复，是否继续？\"),\n            ok: function () {\n                $.post(UrlMaker.make('system_deleted'), {system_ids: system_ids.join(',')},\n                    function(data) {\n                        if (!data.error_message) {\n                            tmp_msg = ngettext('成功删除 %s 个系统！', '成功删除 %s 个系统！', data.affected_rows);\n                            tmp_msg = interpolate(tmp_msg, [data.affected_rows]);\n                            dialog({id: 'bktips', lock: true, content: '<i class=\"bk-icon icon-check2\" style=\"color: green\"></i>  ' + tmp_msg}).show();\n                            setTimeout(function () {\n                                window.location.reload();\n                            }, 2000);\n                        } else {\n                          dialog({id: 'bktips', lock: true, title: \"<span style='font-size: 15px;'>\" + gettext(\"消息\") + \"</span<>\", content: '<i class=\"bk-icon icon-close2\" style=\"color: red\"> ' + data.error_message}).showModal();\n                        }\n                    }\n                );\n            },\n            cancel: function () {},\n            okValue: gettext(\"确认删除\"),\n            cancelValue: gettext(\"取消\")\n        }).showModal();\n    });\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/ca.js",
    "content": "define({\n    ca: {\n        'Allowed values:'             : 'Valors permesos:',\n        'Compare all with predecessor': 'Comparar tot amb versió anterior',\n        'compare changes to:'         : 'comparar canvis amb:',\n        'compared to'                 : 'comparat amb',\n        'Default value:'              : 'Valor per defecte:',\n        'Description'                 : 'Descripció',\n        'Field'                       : 'Camp',\n        'General'                     : 'General',\n        'Generated with'              : 'Generat amb',\n        'Name'                        : 'Nom',\n        'No response values.'         : 'Sense valors en la resposta.',\n        'optional'                    : 'opcional',\n        'Parameter'                   : 'Paràmetre',\n        'Permission:'                 : 'Permisos:',\n        'Response'                    : 'Resposta',\n        'Send'                        : 'Enviar',\n        'Send a Sample Request'       : 'Enviar una petició d\\'exemple',\n        'show up to version:'         : 'mostrar versió:',\n        'Size range:'                 : 'Tamany de rang:',\n        'Type'                        : 'Tipus',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/de.js",
    "content": "define({\n    de: {\n        'Allowed values:'             : 'Erlaubte Werte:',\n        'Compare all with predecessor': 'Vergleiche alle mit ihren Vorgängern',\n        'compare changes to:'         : 'vergleiche Änderungen mit:',\n        'compared to'                 : 'verglichen mit',\n        'Default value:'              : 'Standardwert:',\n        'Description'                 : 'Beschreibung',\n        'Field'                       : 'Feld',\n        'General'                     : 'Allgemein',\n        'Generated with'              : 'Erstellt mit',\n        'Name'                        : 'Name',\n        'No response values.'         : 'Keine Rückgabewerte.',\n        'optional'                    : 'optional',\n        'Parameter'                   : 'Parameter',\n        'Permission:'                 : 'Berechtigung:',\n        'Response'                    : 'Antwort',\n        'Send'                        : 'Senden',\n        'Send a Sample Request'       : 'Eine Beispielanfrage senden',\n        'show up to version:'         : 'zeige bis zur Version:',\n        'Size range:'                 : 'Größenbereich:',\n        'Type'                        : 'Typ',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/es.js",
    "content": "define({\n    es: {\n        'Allowed values:'             : 'Valores permitidos:',\n        'Compare all with predecessor': 'Comparar todo con versión anterior',\n        'compare changes to:'         : 'comparar cambios con:',\n        'compared to'                 : 'comparado con',\n        'Default value:'              : 'Valor por defecto:',\n        'Description'                 : 'Descripción',\n        'Field'                       : 'Campo',\n        'General'                     : 'General',\n        'Generated with'              : 'Generado con',\n        'Name'                        : 'Nombre',\n        'No response values.'         : 'Sin valores en la respuesta.',\n        'optional'                    : 'opcional',\n        'Parameter'                   : 'Parámetro',\n        'Permission:'                 : 'Permisos:',\n        'Response'                    : 'Respuesta',\n        'Send'                        : 'Enviar',\n        'Send a Sample Request'       : 'Enviar una petición de ejemplo',\n        'show up to version:'         : 'mostrar a versión:',\n        'Size range:'                 : 'Tamaño de rango:',\n        'Type'                        : 'Tipo',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/fr.js",
    "content": "define({\n    fr: {\n        'Allowed values:'             : 'Valeurs autorisées :',\n        'Compare all with predecessor': 'Tout comparer avec ...',\n        'compare changes to:'         : 'comparer les changements à :',\n        'compared to'                 : 'comparer à',\n        'Default value:'              : 'Valeur par défaut :',\n        'Description'                 : 'Description',\n        'Field'                       : 'Champ',\n        'General'                     : 'Général',\n        'Generated with'              : 'Généré avec',\n        'Name'                        : 'Nom',\n        'No response values.'         : 'Aucune valeur de réponse.',\n        'optional'                    : 'optionnel',\n        'Parameter'                   : 'Paramètre',\n        'Permission:'                 : 'Permission :',\n        'Response'                    : 'Réponse',\n        'Send'                        : 'Envoyer',\n        'Send a Sample Request'       : 'Envoyer une requête représentative',\n        'show up to version:'         : 'Montrer à partir de la version :',\n        'Size range:'                 : 'Ordre de grandeur :',\n        'Type'                        : 'Type',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/locale.js",
    "content": "define([\n    './locales/ca.js',\n    './locales/de.js',\n    './locales/es.js',\n    './locales/fr.js',\n    './locales/nl.js',\n    './locales/pl.js',\n    './locales/pt_br.js',\n    './locales/ru.js',\n    './locales/zh.js',\n    './locales/zh_cn.js'\n], function() {\n    var langId = (navigator.language || navigator.userLanguage).toLowerCase().replace('-', '_');\n    var language = langId.substr(0, 2);\n    var locales = {};\n\n    for (index in arguments) {\n        for (property in arguments[index])\n            locales[property] = arguments[index][property];\n    }\n    if ( ! locales['en'])\n        locales['en'] = {};\n\n    if ( ! locales[langId] && ! locales[language])\n        language = 'en';\n\n    var locale = (locales[langId] ? locales[langId] : locales[language]);\n\n    function __(text) {\n        var index = locale[text];\n        if (index === undefined)\n            return text;\n        return index;\n    };\n\n    function setLanguage(language) {\n        locale = locales[language];\n    }\n\n    return {\n        __         : __,\n        locales    : locales,\n        locale     : locale,\n        setLanguage: setLanguage\n    };\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/nl.js",
    "content": "define({\n    nl: {\n        'Allowed values:'             : 'Toegestane waarden:',\n        'Compare all with predecessor': 'Vergelijk alle met voorgaande versie',\n        'compare changes to:'         : 'vergelijk veranderingen met:',\n        'compared to'                 : 'vergelijk met',\n        'Default value:'              : 'Standaard waarde:',\n        'Description'                 : 'Omschrijving',\n        'Field'                       : 'Veld',\n        'General'                     : 'Algemeen',\n        'Generated with'              : 'Gegenereerd met',\n        'Name'                        : 'Naam',\n        'No response values.'         : 'Geen response waardes.',\n        'optional'                    : 'optioneel',\n        'Parameter'                   : 'Parameter',\n        'Permission:'                 : 'Permissie:',\n        'Response'                    : 'Antwoorden',\n        'Send'                        : 'Sturen',\n        'Send a Sample Request'       : 'Stuur een sample aanvragen',\n        'show up to version:'         : 'toon tot en met versie:',\n        'Size range:'                 : 'Maatbereik:',\n        'Type'                        : 'Type',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/pl.js",
    "content": "define({\n    pl: {\n        'Allowed values:'             : 'Dozwolone wartości:',\n        'Compare all with predecessor': 'Porównaj z poprzednimi wersjami',\n        'compare changes to:'         : 'porównaj zmiany do:',\n        'compared to'                 : 'porównaj do:',\n        'Default value:'              : 'Wartość domyślna:',\n        'Description'                 : 'Opis',\n        'Field'                       : 'Pole',\n        'General'                     : 'Generalnie',\n        'Generated with'              : 'Wygenerowano z',\n        'Name'                        : 'Nazwa',\n        'No response values.'         : 'Brak odpowiedzi.',\n        'optional'                    : 'opcjonalny',\n        'Parameter'                   : 'Parametr',\n        'Permission:'                 : 'Uprawnienia:',\n        'Response'                    : 'Odpowiedź',\n        'Send'                        : 'Wyślij',\n        'Send a Sample Request'       : 'Wyślij przykładowe żądanie',\n        'show up to version:'         : 'pokaż do wersji:',\n        'Size range:'                 : 'Zakres rozmiaru:',\n        'Type'                        : 'Typ',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/pt_br.js",
    "content": "define({\n    'pt_br': {\n        'Allowed values:'             : 'Valores permitidos:',\n        'Compare all with predecessor': 'Compare todos com antecessores',\n        'compare changes to:'         : 'comparar alterações com:',\n        'compared to'                 : 'comparado com',\n        'Default value:'              : 'Valor padrão:',\n        'Description'                 : 'Descrição',\n        'Field'                       : 'Campo',\n        'General'                     : 'Geral',\n        'Generated with'              : 'Gerado com',\n        'Name'                        : 'Nome',\n        'No response values.'         : 'Sem valores de resposta.',\n        'optional'                    : 'opcional',\n        'Parameter'                   : 'Parâmetro',\n        'Permission:'                 : 'Permissão:',\n        'Response'                    : 'Resposta',\n        'Send'                        : 'Enviar',\n        'Send a Sample Request'       : 'Enviar um Exemplo de Pedido',\n        'show up to version:'         : 'aparecer para a versão:',\n        'Size range:'                 : 'Faixa de tamanho:',\n        'Type'                        : 'Tipo',\n        'url'                         : 'url'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/ru.js",
    "content": "define({\n    ru: {\n        'Allowed values:'             : 'Допустимые значения:',\n        'Compare all with predecessor': 'Сравнить с предыдущей версией',\n        'compare changes to:'         : 'сравнить с:',\n        'compared to'                 : 'в сравнении с',\n        'Default value:'              : 'По умолчанию:',\n        'Description'                 : 'Описание',\n        'Field'                       : 'Название',\n        'General'                     : 'Общая информация',\n        'Generated with'              : 'Сгенерировано с помощью',\n        'Name'                        : 'Название',\n        'No response values.'         : 'Нет значений для ответа.',\n        'optional'                    : 'необязательный',\n        'Parameter'                   : 'Параметр',\n        'Permission:'                 : 'Разрешено:',\n        'Response'                    : 'Ответ',\n        'Send'                        : 'Отправить',\n        'Send a Sample Request'       : 'Отправить тестовый запрос',\n        'show up to version:'         : 'показать версию:',\n        'Size range:'                 : 'Ограничения:',\n        'Type'                        : 'Тип',\n        'url'                         : 'URL'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/zh.js",
    "content": "define({\n    zh: {\n        'Allowed values​​:'             : '允許值:',\n        'Compare all with predecessor': '預先比較所有',\n        'compare changes to:'         : '比較變更:',\n        'compared to'                 : '對比',\n        'Default value:'              : '默認值:',\n        'Description'                 : '描述',\n        'Field'                       : '字段',\n        'General'                     : '概括',\n        'Generated with'              : '生成工具',\n        'Name'                        : '名稱',\n        'No response values​​.'         : '無對應資料.',\n        'optional'                    : '選項',\n        'Parameter'                   : '參數',\n        'Permission:'                 : '允許:',\n        'Response'                    : '回應',\n        'Send'                        : '發送',\n        'Send a Sample Request'       : '發送試用需求',\n        'show up to version:'         : '顯示到版本:',\n        'Size range:'                 : '尺寸範圍:',\n        'Type'                        : '類型',\n        'url'                         : '網址'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/locales/zh_cn.js",
    "content": "define({\n    'zh_cn': {\n        'Allowed values:'             : '允许值:',\n        'Compare all with predecessor': '与所有较早的比较',\n        'compare changes to:'         : '将当前版本与指定版本比较:',\n        'compared to'                 : '相比于',\n        'Default value:'              : '默认值:',\n        'Description'                 : '描述',\n        'Field'                       : '字段',\n        'General'                     : '概要',\n        'Generated with'              : '基于',\n        'Name'                        : '名称',\n        'No response values.'         : '无返回值.',\n        'optional'                    : '可选',\n        'Parameter'                   : '参数',\n        'Permission:'                 : '权限:',\n        'Response'                    : '返回',\n        'Send'                        : '发送',\n        'Send a Sample Request'       : '发送示例请求',\n        'show up to version:'         : '显示到指定版本:',\n        'Size range:'                 : '取值范围:',\n        'Type'                        : '类型',\n        'url'                         : '网址'\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/utils/handlebars_helper.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\ndefine([\n    'locales',\n    'handlebars',\n    'diffMatchPatch'\n], function(locale, Handlebars, DiffMatchPatch) {\n\n    /**\n     * start/stop timer for simple performance check.\n     */\n    var timer;\n    Handlebars.registerHelper('startTimer', function(text) {\n        timer = new Date();\n        return '';\n    });\n\n    Handlebars.registerHelper('stopTimer', function(text) {\n        console.log(new Date() - timer);\n        return '';\n    });\n\n    /**\n     * Return localized Text.\n     * @param string text\n     */\n    Handlebars.registerHelper('__', function(text) {\n        return locale.__(text);\n    });\n\n    /**\n     * Console log.\n     * @param mixed obj\n     */\n    Handlebars.registerHelper('cl', function(obj) {\n        console.log(obj);\n        return '';\n    });\n\n    /**\n     * Replace underscore with space.\n     * @param string text\n     */\n    Handlebars.registerHelper('underscoreToSpace', function(text) {\n        return text.replace(/(_+)/g, ' ');\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('assign', function(name) {\n        if(arguments.length > 0) {\n            var type = typeof(arguments[1]);\n            var arg = null;\n            if(type === 'string' || type === 'number' || type === 'boolean') arg = arguments[1];\n            Handlebars.registerHelper(name, function() { return arg; });\n        }\n        return '';\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('nl2br', function(text) {\n        return _handlebarsNewlineToBreak(text);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('if_eq', function(context, options) {\n        var compare = context;\n        // Get length if context is an object\n        if (context instanceof Object && ! (options.hash.compare instanceof Object))\n             compare = Object.keys(context).length;\n\n        if (compare === options.hash.compare)\n            return options.fn(this);\n\n        return options.inverse(this);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('if_gt', function(context, options) {\n        var compare = context;\n        // Get length if context is an object\n        if (context instanceof Object && ! (options.hash.compare instanceof Object))\n             compare = Object.keys(context).length;\n\n        if(compare > options.hash.compare)\n            return options.fn(this);\n\n        return options.inverse(this);\n    });\n\n    /**\n     *\n     */\n    var templateCache = {};\n    Handlebars.registerHelper('subTemplate', function(name, sourceContext) {\n        if ( ! templateCache[name])\n            templateCache[name] = Handlebars.compile($('#template-' + name).html());\n\n        var template = templateCache[name];\n        var templateContext = $.extend({}, this, sourceContext.hash);\n        return new Handlebars.SafeString( template(templateContext) );\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('toLowerCase', function(value) {\n        return (value && typeof value === 'string') ? value.toLowerCase() : '';\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('splitFill', function(value, splitChar, fillChar) {\n        var splits = value.split(splitChar);\n        return new Array(splits.length).join(fillChar) + splits[splits.length - 1];\n    });\n\n    /**\n     * Convert Newline to HTML-Break (nl2br).\n     *\n     * @param {String} text\n     * @returns {String}\n     */\n    function _handlebarsNewlineToBreak(text) {\n        return ('' + text).replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + '<br>' + '$2');\n    }\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_list_field', function(source, compare, options) {\n        var fieldName = options.hash.field;\n        var newSource = [];\n        if (source) {\n            source.forEach(function(entry) {\n                var values = entry;\n                values['key'] = entry[fieldName];\n                newSource.push(values);\n            });\n        }\n\n        var newCompare = [];\n        if (compare) {\n            compare.forEach(function(entry) {\n                var values = entry;\n                values['key'] = entry[fieldName];\n                newCompare.push(values);\n            });\n        }\n        return _handlebarsEachCompared('key', newSource, newCompare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_keys', function(source, compare, options) {\n        var newSource = [];\n        if (source) {\n            var sourceFields = Object.keys(source);\n            sourceFields.forEach(function(name) {\n                var values = {};\n                values['value'] = source[name];\n                values['key'] = name;\n                newSource.push(values);\n            });\n        }\n\n        var newCompare = [];\n        if (compare) {\n            var compareFields = Object.keys(compare);\n            compareFields.forEach(function(name) {\n                var values = {};\n                values['value'] = compare[name];\n                values['key'] = name;\n                newCompare.push(values);\n            });\n        }\n        return _handlebarsEachCompared('key', newSource, newCompare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_field', function(source, compare, options) {\n        return _handlebarsEachCompared('field', source, compare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('each_compare_title', function(source, compare, options) {\n        return _handlebarsEachCompared('title', source, compare, options);\n    });\n\n    /**\n     *\n     */\n    Handlebars.registerHelper('showDiff', function(source, compare, options) {\n        var ds = '';\n        if(source === compare) {\n            ds = source;\n        } else {\n            if( ! source)\n                return compare;\n\n            if( ! compare)\n                return source;\n\n            var d = diffMatchPatch.diff_main(compare, source);\n            diffMatchPatch.diff_cleanupSemantic(d);\n            ds = diffMatchPatch.diff_prettyHtml(d);\n            ds = ds.replace(/&para;/gm, '');\n        }\n        if(options === 'nl2br')\n            ds = _handlebarsNewlineToBreak(ds);\n\n        return ds;\n    });\n\n    /**\n     *\n     */\n    function _handlebarsEachCompared(fieldname, source, compare, options)\n    {\n        var dataList = [];\n        var index = 0;\n        if(source) {\n            source.forEach(function(sourceEntry) {\n                var found = false;\n                if (compare) {\n                    compare.forEach(function(compareEntry) {\n                        if(sourceEntry[fieldname] === compareEntry[fieldname]) {\n                            var data = {\n                                typeSame: true,\n                                source: sourceEntry,\n                                compare: compareEntry,\n                                index: index\n                            };\n                            dataList.push(data);\n                            found = true;\n                            index++;\n                        }\n                    });\n                }\n                if ( ! found) {\n                    var data = {\n                        typeIns: true,\n                        source: sourceEntry,\n                        index: index\n                    };\n                    dataList.push(data);\n                    index++;\n                }\n            });\n        }\n\n        if (compare) {\n            compare.forEach(function(compareEntry) {\n                var found = false;\n                if (source) {\n                    source.forEach(function(sourceEntry) {\n                        if(sourceEntry[fieldname] === compareEntry[fieldname])\n                            found = true;\n                    });\n                }\n                if ( ! found) {\n                    var data = {\n                        typeDel: true,\n                        compare: compareEntry,\n                        index: index\n                    };\n                    dataList.push(data);\n                    index++;\n                }\n            });\n        }\n\n        var ret = '';\n        var length = dataList.length;\n        for (var index in dataList) {\n            if(index == (length - 1))\n                dataList[index]['_last'] = true;\n            ret = ret + options.fn(dataList[index]);\n        }\n        return ret;\n    }\n\n    var diffMatchPatch = new DiffMatchPatch();\n\n    /**\n     * Overwrite Colors\n     */\n    DiffMatchPatch.prototype.diff_prettyHtml = function(diffs) {\n      var html = [];\n      var pattern_amp = /&/g;\n      var pattern_lt = /</g;\n      var pattern_gt = />/g;\n      var pattern_para = /\\n/g;\n      for (var x = 0; x < diffs.length; x++) {\n        var op = diffs[x][0];    // Operation (insert, delete, equal)\n        var data = diffs[x][1];  // Text of change.\n        var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')\n            .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');\n        switch (op) {\n          case DIFF_INSERT:\n            html[x] = '<ins>' + text + '</ins>';\n            break;\n          case DIFF_DELETE:\n            html[x] = '<del>' + text + '</del>';\n            break;\n          case DIFF_EQUAL:\n            html[x] = '<span>' + text + '</span>';\n            break;\n        }\n      }\n      return html.join('');\n    };\n\n    // Exports\n    return Handlebars;\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/esb/utils/send_sample_request.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\ndefine([\r\n  'jquery'\r\n], function($) {\r\n\r\n  var initDynamic = function() {\r\n      // Button send\r\n      $(\".sample-request-send\").off(\"click\");\r\n      $(\".sample-request-send\").on(\"click\", function(e) {\r\n          e.preventDefault();\r\n          var $root = $(this).parents(\"article\");\r\n          var group = $root.data(\"group\");\r\n          var name = $root.data(\"name\");\r\n          var version = $root.data(\"version\");\r\n          sendSampleRequest(group, name, version, $(this).data(\"sample-request-type\"));\r\n      });\r\n\r\n      // Button clear\r\n      $(\".sample-request-clear\").off(\"click\");\r\n      $(\".sample-request-clear\").on(\"click\", function(e) {\r\n          e.preventDefault();\r\n          var $root = $(this).parents(\"article\");\r\n          var group = $root.data(\"group\");\r\n          var name = $root.data(\"name\");\r\n          var version = $root.data(\"version\");\r\n          clearSampleRequest(group, name, version);\r\n      });\r\n  }; // initDynamic\r\n\r\n  function sendSampleRequest(group, name, version, type)\r\n  {\r\n      var $root = $('article[data-group=\"' + group + '\"][data-name=\"' + name + '\"][data-version=\"' + version + '\"]');\r\n\r\n      // Optional header\r\n      var header = {};\r\n      $root.find(\".sample-request-header:checked\").each(function(i, element) {\r\n          var group = $(element).data(\"sample-request-header-group-id\");\r\n          $root.find(\"[data-sample-request-header-group=\\\"\" + group + \"\\\"]\").each(function(i, element) {\r\n            var key = $(element).data(\"sample-request-header-name\");\r\n            var value = element.value;\r\n            if ( ! element.optional && element.defaultValue !== '') {\r\n                value = element.defaultValue;\r\n            }\r\n            header[key] = value;\r\n          });\r\n      });\r\n\r\n      // create JSON dictionary of parameters\r\n      var param = {};\r\n      var paramType = {};\r\n      $root.find(\".sample-request-param:checked\").each(function(i, element) {\r\n          var group = $(element).data(\"sample-request-param-group-id\");\r\n          $root.find(\"[data-sample-request-param-group=\\\"\" + group + \"\\\"]\").each(function(i, element) {\r\n            var key = $(element).data(\"sample-request-param-name\");\r\n            var value = element.value;\r\n            if ( ! element.optional && element.defaultValue !== '') {\r\n                value = element.defaultValue;\r\n            }\r\n            param[key] = value;\r\n            paramType[key] = $(element).next().text();\r\n          });\r\n      });\r\n\r\n      // grab user-inputted URL\r\n      var url = $root.find(\".sample-request-url\").val();\r\n\r\n      // Insert url parameter\r\n      var pattern = pathToRegexp(url, null);\r\n      var matches = pattern.exec(url);\r\n      for (var i = 1; i < matches.length; i++) {\r\n          var key = matches[i].substr(1);\r\n          if (param[key] !== undefined) {\r\n              url = url.replace(matches[i], encodeURIComponent(param[key]));\r\n\r\n              // remove URL parameters from list\r\n              delete param[key];\r\n          }\r\n      } // for\r\n\r\n      $root.find(\".sample-request-response\").fadeTo(250, 1);\r\n      $root.find(\".sample-request-response-json\").html(\"Loading...\");\r\n      refreshScrollSpy();\r\n\r\n      _.each( param, function( val, key ) {\r\n          var t = paramType[ key ].toLowerCase();\r\n          if ( t === 'object' || t === 'array' ) {\r\n              try {\r\n                  param[ key ] = JSON.parse( val );\r\n              } catch (e) {\r\n              }\r\n          }\r\n      });\r\n\r\n      // send AJAX request, catch success or error callback\r\n      var ajaxRequest = {\r\n          url        : url,\r\n          headers    : header,\r\n          data       : param,\r\n          type       : type.toUpperCase(),\r\n          success    : displaySuccess,\r\n          error      : displayError\r\n      };\r\n\r\n      $.ajax(ajaxRequest);\r\n\r\n\r\n      function displaySuccess(data, status, jqXHR) {\r\n          var jsonResponse;\r\n          try {\r\n              jsonResponse = JSON.parse(jqXHR.responseText);\r\n              jsonResponse = JSON.stringify(jsonResponse, null, 4);\r\n          } catch (e) {\r\n              jsonResponse = data;\r\n          }\r\n          $root.find(\".sample-request-response-json\").html(jsonResponse);\r\n          refreshScrollSpy();\r\n      };\r\n\r\n      function displayError(jqXHR, textStatus, error) {\r\n          var message = \"Error \" + jqXHR.status + \": \" + error;\r\n          var jsonResponse;\r\n          try {\r\n              jsonResponse = JSON.parse(jqXHR.responseText);\r\n              jsonResponse = JSON.stringify(jsonResponse, null, 4);\r\n          } catch (e) {\r\n              jsonResponse = escape(jqXHR.responseText);\r\n          }\r\n\r\n          if (jsonResponse)\r\n              message += \"<br>\" + jsonResponse;\r\n\r\n          // flicker on previous error to make clear that there is a new response\r\n          if($root.find(\".sample-request-response\").is(\":visible\"))\r\n              $root.find(\".sample-request-response\").fadeTo(1, 0.1);\r\n\r\n          $root.find(\".sample-request-response\").fadeTo(250, 1);\r\n          $root.find(\".sample-request-response-json\").html(message);\r\n          refreshScrollSpy();\r\n      };\r\n  }\r\n\r\n  function clearSampleRequest(group, name, version)\r\n  {\r\n      var $root = $('article[data-group=\"' + group + '\"][data-name=\"' + name + '\"][data-version=\"' + version + '\"]');\r\n\r\n      // hide sample response\r\n      $root.find(\".sample-request-response-json\").html(\"\");\r\n      $root.find(\".sample-request-response\").hide();\r\n\r\n      // reset value of parameters\r\n      $root.find(\".sample-request-param\").each(function(i, element) {\r\n          element.value = \"\";\r\n      });\r\n\r\n      // restore default URL\r\n      var $urlElement = $root.find(\".sample-request-url\");\r\n      $urlElement.val($urlElement.prop(\"defaultValue\"));\r\n\r\n      refreshScrollSpy();\r\n  }\r\n\r\n  function refreshScrollSpy()\r\n  {\r\n      $('[data-spy=\"scroll\"]').each(function () {\r\n          $(this).scrollspy(\"refresh\");\r\n      });\r\n  }\r\n\r\n  function escapeHtml(str) {\r\n      var div = document.createElement(\"div\");\r\n      div.appendChild(document.createTextNode(str));\r\n      return div.innerHTML;\r\n  }\r\n\r\n  /**\r\n   * Exports.\r\n   */\r\n  return {\r\n      initDynamic: initDynamic\r\n  };\r\n\r\n});\r\n"
  },
  {
    "path": "paas-ce/paas/paas/static/home/css/index.css",
    "content": "/**\r\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\r\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\r\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\r\n* http://opensource.org/licenses/MIT\r\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\r\n*/\r\n/* common start */\r\nhtml, body{\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n\tfont-family: \"微软雅黑\",\"\\xe8\\x93\\x9d\\xe9\\xb2\\xb8\\xe6\\x99\\xba\\xe8\\x90\\xa5\";\r\n\tfont-size: 16px;\r\n\tcolor: #505862;\r\n\tmin-width: 1200px;\r\n\theight: 100%;\r\n}\r\na img {\r\n\tvertical-align:middle;\r\n\t}\r\na{\r\n\ttext-decoration: none;\r\n\tcolor: #505862;\r\n}\r\np{\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n}\r\nul, li{\r\n\tlist-style: none;\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n}\r\n.cl:after{\r\n\tcontent: \"\";\r\n\tclear: both;\r\n\tdisplay: block;\r\n}\r\n/* common end */\r\n/* 导航 start */\r\n.navbar{\r\n\theight: 72px;\r\n\tbackground: #313b4c;\r\n\tposition: relative;\r\n}\r\n.logo{\r\n\tpadding: 19px 0 0 24px;\r\n\tposition: absolute;\r\n}\r\n.nav-list{\r\n\theight: 72px;\r\n}\r\n.nav-list li{\r\n\tfloat: left;\r\n\tposition: relative;\r\n\tleft: 50%;\r\n\ttop: 50%;\r\n\ttransform: translate(-100%, -50%);\r\n\t-o-transform: translate(-100%, -50%);\r\n\t-ms-transform: translate(-100%, -50%);\r\n\t-moz-transform: translate(-100%, -50%);\r\n\t-webkit-transform: translate(-100%, -50%);\r\n\ttext-align: center;\r\n\tpadding: 0 20px;\r\n\theight: 72px;\r\n}\r\n.nav-list a{\r\n\tcolor: #bfcbd7;\r\n\toutline: none\r\n}\r\n.nav-list p{\r\n\theight: 72px;\r\n\tline-height: 72px;\r\n}\r\n.nav-list .active a{\r\n\tcolor: #fff;\r\n}\r\n\r\n.nav-list .active .line{\r\n\tdisplay: inline-block;\r\n\twidth: 30px;\r\n\theight: 4px;\r\n\tbackground: #fff;\r\n\tposition: relative;\r\n\ttop: -17px;\r\n}\r\n.userInfo{\r\n\tposition: absolute;\r\n\tright: 20px;\r\n\ttop: 50%;\r\n\tcolor: #fff;\r\n\tmargin-top: -19px;\r\n\theight: 45px;\r\n\tpadding-right: 20px;\r\n}\r\n.userInfo:hover .dropdown{\r\n\tdisplay: block;\r\n}\r\n.userImg{\r\n\tvertical-align: middle;\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\tdisplay: inline-block;\r\n\tborder: 1px solid #575f6d;\r\n\tborder-radius: 50%;\r\n\tposition: relative;\r\n}\r\n.userImg img{\r\n\tborder-radius: 50%;\r\n}\r\n.avatar{\r\n\tmargin: 2px;\r\n\twidth: 32px;\r\n\theight: 32px;\r\n}\r\n.crown{\r\n\tposition: absolute;\r\n\twidth: 12px;\r\n\theight: 11px;\r\n\tdisplay: inline-block;\r\n\tbackground: url(../images/crown.png);\r\n\ttop: -5px;\r\n\tleft: 23px;\r\n}\r\n.caret{\r\n\twidth: 0;\r\n\theight: 0;\r\n\tborder: 5px solid transparent;\r\n\tborder-top: 5px solid #fff;\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\ttop: 16px;\r\n\tright: 4px;\r\n}\r\n.dropdown{\r\n\tposition: absolute;\r\n\tright: -2px;\r\n\tbackground: #fff;\r\n\tborder: 1px solid #e5e5e5;\r\n\twidth: 118px;\r\n\ttop: 45px;\r\n\tfont-size: 14px;\r\n\tdisplay: none;\r\n}\r\n.dropdown .caret-up{\r\n\twidth: 0;\r\n\theight: 0;\r\n\tborder: 6px solid transparent;\r\n\tborder-bottom: 6px solid #fff;\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\ttop: -12px;\r\n\tright: 4px;\r\n}\r\n.dropdown-menu li{\r\n\theight: 42px;\r\n\tline-height: 42px;\r\n}\r\n.dropdown-menu li:hover{\r\n\tbackground: #f4f6f9;\r\n}\r\n.dropdown-menu li a{\r\n\tpadding-left: 14px;\r\n\tdisplay: inline-block;\r\n\twidth: 104px;\r\n\theight: 42px;\r\n}\r\n.dropdown-menu .icon{\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle;\r\n\tmargin-right: 9px;\r\n}\r\n.icon-userinfo{\r\n\tbackground: url(../images/icon-userinfo.png) no-repeat;\r\n}\r\n.icon-um{\r\n\tbackground: url(../images/icon-um.png) no-repeat;\r\n}\r\n.icon-logout{\r\n\tbackground: url(../images/icon-logout.png) no-repeat;\r\n}\r\n.icon-bind-weixin{\r\n\tbackground: url(../images/icon-bind-weixin.png) no-repeat;\r\n}\r\n.icon-unbind-weixin{\r\n\tbackground: url(../images/icon-unbind-weixin.png) no-repeat;\r\n}\r\n/* 导航 end */\r\n.container{\r\n\twidth: 1200px;\r\n\tmargin: 60px auto 0;\r\n\tmin-height: calc(100% - 232px);\r\n\tmin-height: -moz-calc(100% - 232px);\r\n\tmin-height: -webkit-calc(100% - 232px);\r\n}\r\n/* 应用列表 start */\r\n.main-left{\r\n\twidth: 885px;\r\n\tfloat: left;\r\n}\r\n.left-title{\r\n\tmargin-bottom: 9px;\r\n}\r\n.left-title p{\r\n\tfloat: left;\r\n}\r\n.conf{\r\n\tfloat: right;\r\n\tfont-size: 14px;\r\n}\r\n.conf .active{\r\n\tdisplay: block;\r\n}\r\n.edit, .comp{\r\n\twidth: 54px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tcursor: pointer;\r\n\tdisplay: none;\r\n}\r\n.edit .gear{\r\n\twidth: 15px;\r\n\theight: 14px;\r\n\tdisplay: inline-block;\r\n\tbackground: url(../images/gear.png);\r\n\tposition: relative;\r\n\ttop: 2px;\r\n}\r\n.edit span{\r\n\tcolor: #9a9da2;\r\n}\r\n.comp{\r\n\tcolor: #fff;\r\n\tbackground: #3385f4;\r\n\ttext-align: center;\r\n}\r\n.app-list{\r\n\twidth: 100%;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n}\r\n.app-list-item{\r\n\tfloat: left;\r\n\tborder: 1px solid #ebecee;\r\n\twidth: 218px;\r\n\theight: 218px;\r\n\tpadding: 1px;\r\n\tmargin:0 0 -1px -1px;\r\n\tposition: relative;\r\n\tz-index: 0;\r\n    overflow: hidden;\r\n}\r\n.mask{\r\n\tposition: absolute;\r\n\twidth: 178px;\r\n\t/*height: 178px;*/\r\n\theight: 0;\r\n\tbackground: #313b4c;\r\n\t/*opacity: 0;*/\r\n\tcolor: #fff;\r\n\tfont-size: 12px;\r\n\tpadding: 20px;\r\n\ttext-align: left;\r\n\tline-height: 18px;\r\n\tleft: 1px;\r\n\t/*top: 1px;*/\r\n    bottom: -40px;\r\n    text-overflow: ellipsis;\r\n\ttransition: all .3s;\r\n\r\n}\r\n.app-list-item:hover .mask{\r\n    height: auto;\r\n    max-height: 108px;\r\n    bottom: 0;\r\n\topacity: 0.93;\r\n}\r\n.mask-text{\r\n    text-overflow: ellipsis;\r\n    height: auto;\r\n    max-height: 108px;\r\n    overflow: hidden;\r\n    -webkit-box-orient: vertical;\r\n    -webkit-line-clamp: 6;\r\n    display: -webkit-box;\r\n}\r\n.app-list-item:hover{\r\n\tbackground: #f4f6f9;\r\n\tcursor: pointer;\r\n}\r\n.app-list-item.state-edit{\r\n\tborder: 1px dashed #999;\r\n}\r\n.app-list-item.state-edit:hover{\r\n\tborder: 2px dashed #ffc000;\r\n\tpadding: 0;\r\n\tz-index: 1;\r\n}\r\n.app-list-item a{\r\n\tdisplay: inline-block;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tcolor: #505862;\r\n}\r\n.ui-state-highlight{\r\n\tfloat: left;\r\n\twidth: 220px;\r\n\theight: 220px;\r\n\tmargin: 0 0 -1px -1px;\r\n\tposition: relative;\r\n\tz-index: 1;\r\n}\r\n.app-list-item .item{\r\n\twidth: 58px;\r\n\theight: 58px;\r\n\tdisplay: inline-block;\r\n\tmargin: 63px 0 20px;\r\n}\r\n.loadMore{\r\n\tborder: 1px solid #ebecee;\r\n\tbackground: #fcfcfd;\r\n\theight: 40px;\r\n\tmargin: 0 0 50px;\r\n\ttext-align: center;\r\n\tline-height: 40px;\r\n\tcursor: pointer;\r\n}\r\n.loading{\r\n\tdisplay: none;\r\n}\r\n/* 应用列表 end */\r\n/*常用链接 start*/\r\n.main-right{\r\n\tmargin-left: 41px;\r\n\tfloat: left;\r\n\twidth: 274px;\r\n}\r\n.right-title{\r\n\tpadding-bottom: 15px;\r\n\tborder-bottom: 1px solid #ced9ee;\r\n}\r\n.list{\r\n\tline-height: 43px;\r\n\tfont-size: 14px;\r\n}\r\n.list a{\r\n\tcolor: #505862;\r\n}\r\n.list a:hover{\r\n\tcolor: #57a3f1;\r\n}\r\n/*常用链接 end*/\r\n/*footer start*/\r\n.footer{\r\n\theight: 70px;\r\n\tbackground: #313b4c;\r\n\tcolor: #bfcbd7;\r\n\ttext-align: center;\r\n\tfont-size: 12px;\r\n\tline-height: 20px;\r\n\tpadding: 20px 0 30px 0;\r\n}\r\n.footer a{\r\n\tcolor: #bfcbd7;\r\n\tmargin: 0 5px;\r\n}\r\n.footer a:hover{\r\n\tcolor: #fff;\r\n}\r\n.follow-us{\r\n\tposition: relative;\r\n}\r\n.follow-us:hover .qr-box{\r\n\tdisplay: inline-block;\r\n}\r\n.qr-box{\r\n\tdisplay: none;\r\n\tposition: absolute;\r\n\tleft: -25px;\r\n\ttop: -110px;\r\n}\r\n.qr{\r\n\tpadding: 4px;\r\n\tborder: 1px solid #e4e4e4;\r\n\tbackground: #fff;\r\n\tdisplay: inline-block;\r\n}\r\n.qr-caret{\r\n\twidth: 0px;\r\n\theight: 0px;\r\n\tborder: 7px solid transparent;\r\n\tborder-top: 7px solid #fff;\r\n\tposition: absolute;\r\n\ttop: 98px;\r\n\tleft: 42px;\r\n}\r\n.logo-qt{\r\n    margin-bottom: 10px;\r\n}\r\n.logo-qt .img-logo{\r\n    position: relative;\r\n    top: 4px;\r\n    margin-right: 8px;\r\n}\r\n/*footer end*/\r\na:active,a:hover{outline: none;}\r\n"
  },
  {
    "path": "paas-ce/paas/paas/static/home/js/csrftoken_v3.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// /**\n//  * ajax全局设置\n//  */\n// $.ajaxSetup({\n//   //    timeout: 8000,\n//   cache: false,\n//   statusCode: {\n//     // 401未授权\n//     401: function(xhr) {\n//       // 重新加载页面后跳转到登录页面，重新获取登录态\n//       window.location.reload();\n//       },\n//       // 402 权限验证不通过\n//       402:function(xhr){\n//         var _src = xhr.responseText;\n//         ajax_content = '<iframe name=\"access_control_iframe\" frameborder=\"0\" src=\"'+_src+'\"></iframe>';\n//         art.dialog({id: 'bktips'}).close();\n//         art.dialog({\n//             id: 'bktips',\n//             title: \"提示\",\n//             lock: true,\n//             content: ajax_content\n//       });\n//         return;\n//       },\n//       500: function(xhr, textStatus) {\n//         art.dialog({id: 'bktips'}).close();\n//           // 异常\n//           art.dialog({\n//               id: 'bktips',\n//               title: \"提示\",\n//               lock: true,\n//               content: \"系统出现异常：\"+textStatus+\"---\"+xhr.status+'===='\n//         });\n//       }\n//   },\n// });\n// AJAX请求，获取csrftoken\n// AJAX请求，获取csrftoken\n$.ajaxSetup({\n    beforeSend: function(xhr, settings) {\n        function getCookie(name) {\n            var cookieValue = null;\n            if (document.cookie && document.cookie != '') {\n                var cookies = document.cookie.split(';');\n                for (var i = 0; i < cookies.length; i++) {\n                    var cookie = jQuery.trim(cookies[i]);\n                    // Does this cookie string begin with the name we want?\n                    if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                        break;\n                    }\n                }\n            }\n            return cookieValue;\n        }\n        function csrfSafeMethod(method) {\n            // these HTTP methods do not require CSRF protection\n            return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));\n        }\n        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {\n            var csrftoken = getCookie('bk_csrftoken');\n            xhr.setRequestHeader(\"X-CSRFToken\", csrftoken);\n        }\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/home/js/index.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function(){\n\n\t//\t应用列表 start\n\t$(\"#app-list\").sortable({\n\t\tplaceholder: \"ui-state-highlight\"\n\t});\n\t$( \"#app-list\" ).sortable({ containment: \".app-list\" });\n\t// 常用链接不允许编辑顺序\n\t// $( \"#app-list\" ).sortable({ cancel: '.no-editable' });\n\n\t$(\"#app-list\").sortable(\"disable\");\n\t$(\"#app-list\").disableSelection();\n\t$(\".edit\").on(\"click\", function(){\n\t\t$(this).removeClass(\"active\");\n\t\t$(\".comp\").addClass(\"active\");\n\t\t$(\"#app-list .app-list-item\").addClass(\"state-edit\");\n\t\t$(\"#app-list\").sortable(\"enable\");\n\t});\n\t$(\".comp\").on(\"click\", function(){\n\t\t$(this).removeClass(\"active\");\n\t\t$(\".edit\").addClass(\"active\");\n\t\t$(\"#app-list .app-list-item\").removeClass(\"state-edit\");\n\t\t$(\"#app-list\").sortable(\"disable\");\n\t\t// 获取当前应用的排序\n\t\tapp_code_list = [];\n\t\t$(\".app-list-item\").each(function(){\n\t\t\tvar app_code = $(this).attr('app_code');\n\t\t\tapp_code_list.push(app_code);\n\t\t});\n\t\tvar url = site_url + 'platform/user/app/';\n\t\t$.post(url,{\n\t\t\t'apps': JSON.stringify(app_code_list),\n\t\t}, function(data){\n\t\t}, 'json')\n\t});\n\t//\t应用列表 end\n\n\t//  加载更多 start\n\t$(\".loadMore .load-text\").on(\"click\", function(){\n\t\t$(this).hide();\n\t\t$(\".loading\").show();\n\t\t$(\".app-list-item .item\").each(function(){\n\t\t\tvar img_url = $(this).attr('img_url');\n\t\t\t$(this).attr('src', img_url);\n\t\t})\n\t\t$(\".app-list-item\").css('display', '');\n\t\t$(\".loading\").hide();\n\t\t$(\".loadMore\").hide();\n\t//  加载更多 end\n\t})\n})\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/core.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n//全局设置\nvar S = {\n  // 其他参数...\n  debug: false        // 调试模式设置，正式环境上，应该设置为false。如果为false，则缓存加载的css、js文件\n};\n/**\n * ajax全局设置\n */\n$.ajaxSetup({\n  //    timeout: 8000,\n  cache: false,\n  statusCode: {\n    // 401未授权\n    401: function(xhr) {\n      // 重新加载页面后跳转到登录页面，重新获取登录态\n      window.location.reload();\n      },\n      // 402 权限验证不通过\n      402:function(xhr){\n        var _src = xhr.responseText;\n        ajax_content = '<iframe name=\"access_control_iframe\" frameborder=\"0\" src=\"'+_src+'\"></iframe>';\n        art.dialog({id: 'bktips'}).close();\n        art.dialog({\n            id: 'bktips',\n            title: \"提示\",\n            lock: true,\n            content: ajax_content\n      });\n        return;\n      },\n      500: function(xhr, textStatus) {\n        art.dialog({id: 'bktips'}).close();\n          // 异常\n          art.dialog({\n              id: 'bktips',\n              title: \"提示\",\n              lock: true,\n              content: \"系统出现异常：\"+textStatus+\"---\"+xhr.status+'===='\n        });\n      }\n  },\n});\nvar BLUEKING = {\n        BK_HOST: function(){\n            var host_now = window.location.host;\n            return host_now;\n        }\n};\n// paas_host 为settings 中SITE_URL的值\nBLUEKING.config = (function(){\n    return {\n        paas_host: function(){\n            return '/';\n        }\n    }\n})()\nvar staticUrl = BLUEKING.config.paas_host() + 'static/';\n//var staticUrl = 'http://1251000004.cdn.myqcloud.com/1251000004/bk_paas/';\n//csrftoken处理js\ndocument.write(\" <script lanague=\\\"javascript\\\" src=\\\"\"+staticUrl+\"js/csrftoken.min.js?v=1\\\"> <\\/script>\");\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/csrftoken.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// AJAX请求，获取csrftoken\n$('html').ajaxSend(function(event, xhr, settings) {\n    function getCookie(name) {\n        var cookieValue = null;\n        if (document.cookie && document.cookie != '') {\n            var cookies = document.cookie.split(';');\n            for (var i = 0; i < cookies.length; i++) {\n                var cookie = jQuery.trim(cookies[i]);\n                // Does this cookie string begin with the name we want?\n                if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                    break;\n                }\n            }\n        }\n        return cookieValue;\n    }\n    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {\n    \t// 引用jquery cookie使用\n    \t//var csrftoken = $.cookie('bkcsrftoken');\n        // Only send the token to relative URLs i.e. locally.\n    \tvar csrftoken = getCookie('bk_csrftoken');\n    \txhr.setRequestHeader(\"X-CSRFToken\", csrftoken);\n    }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_app.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/*\n * 应用 创建展示相关\n */\n// 用户中心相关\nAPP_PROFILE = (function(){\n    return{\n        // 修改用户密码\n        change_password:function(){\n            $('.error_tip').hide();\n            $(\".password_input\").val('');\n            $(\"#password_tip\").text('');\n            art.dialog({\n                id: \"bktips\",\n                title:\"重置密码\",\n                lock: true,\n                width: 500,\n                content: $(\"#change_password_div\").get(0),\n                cancelVal: \"取消\",\n                cancel: function(){\n                },\n                okVal: \"重置密码\",\n                ok: function(){\n                    var flag = true;\n                    $('.error_tip').hide();\n                    $(\"#pattern_tip\").css('color', 'black');\n                    $(\".password_input\").each(function(){\n                        var curl_val = $.trim($(this).val());\n                        if(!curl_val){\n                            $(this).next('.error_tip').show();\n                            $(this).focus();\n                            flag = false;\n                            return false;\n                        }\n                        // 第一个密码需要验证格式\n                        if (!curl_val.match(/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9!@#\\$%\\^\\*\\(\\)-_\\+=]{8,20}$/) && $(this).attr('name')=='password1'){\n                            $(\"#pattern_tip\").css('color', 'red');\n                            $(this).focus();\n                            flag = false;\n                            return false;\n                        }\n                    });\n                    if(!flag){\n                        return false;\n                    }\n                    var old_password = $.trim($(\"#id_old_password\").val());\n                    var password1 = $.trim($(\"#id_password1\").val().trim());\n                    var password2 = $.trim($(\"#id_password2\").val().trim());\n                    if(password1 != password2){\n                        $(\"#password_tip\").text('两次输入的新密码不一致');\n                        flag = false;\n                    }\n                    if(!flag){\n                        return false;\n                    }else{\n                        var url = BLUEKING.config.paas_host() + 'accounts/user/password/';\n                        var post_flag = true;\n                        $.ajax({\n                            type: 'POST',\n                            url: url,\n                            data: {\n                                        'old_password':old_password,\n                                        'new_password1':password1,\n                                        'new_password2':password2,\n                                      },\n                            success: function(data){\n                               if(data.result){\n                                  //art.dialog({id: 'bktips'}).close();\n                              }else{\n                                  $(\"#password_tip\").text(data.message);\n                                  post_flag = false;\n                              }\n                            },\n                            dataType: 'json',\n                            async: false,\n                        });\n                        // 出错则不关闭当前对话框\n                        if(!post_flag){\n                          return false;\n                        }else{\n                          art.dialog({width: 300,icon: 'succeed',lock: true,content: '密码重置成功'}).time(1);\n                          // logout\n                          window.location.href = \"/accounts/logout/\";\n                      }\n                    }\n                }\n            });\n        },\n        // 修改个人信息\n        show_modify_user: function(){\n          var url = BLUEKING.config.paas_host() + 'accounts/user/info/';\n          $.get(url, {}, function(data){\n              art.dialog({\n                id: \"bktips\",\n                title:\"修改个人信息\",\n                lock: true,\n                width: 500,\n                content: data\n              });\n          })\n        },\n        // 保存用户信息\n        modify_user_info: function(){\n          var chname = $.trim($(\"#chname\").val());\n          if (!chname.match(/^[\\u4e00-\\u9fa5a-zA-Z0-9_]{1,16}$/)){\n              $(\"#error_tip\").html('中文名只能包含数字、字母、中文汉字、<br><span style=\"margin-left:105px\">下划线，长度在1-16个字符</span>');\n              $('#chname').focus();\n              return false;\n          }\n          var phone = $.trim($(\"#phone\").val());\n          if (!phone.match(/^\\d{11}$/)){\n              $(\"#error_tip\").text('仅支持中国大陆手机号码（11位数字）')\n              $('#phone').focus();\n              return false;\n          }\n          var email = $.trim($(\"#email\").val());\n          if (!email.match(/^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*@([A-Za-z0-9]+[-.])+[A-Za-z0-9]{2,5}$/)){\n              $(\"#error_tip\").text('请输入正确的邮箱格式')\n              $('#email').focus();\n              return false;\n          }\n          var url = site_url + 'accounts/user/info/';\n          $.post(url,{\n            chname: chname,\n            phone: phone,\n            email: email\n          },function(data){\n            if(data.result){\n              art.dialog({id: 'bktips'}).close();\n              art.dialog({\n                id: 'bktips',\n                width: 300,\n                icon: 'succeed',\n                lock: true,\n                content: '用户信息修改成功'\n              })\n              setTimeout(window.location.reload(),1000);\n            }else{\n              $(\"#error_tip\").text(data.message)\n            }\n          }, 'json')\n        },\n        // 取消编辑\n        cancel_edit: function(){\n          art.dialog({id: 'bktips'}).close();\n        }\n    }\n})(),\n// 我的应用页面相关\nAPP_LIST = (function(){\n    return{\n        // 查询列表分页的回调方法\n        _callback_fun:function(){\n          var total_app = $('#table_app thead').attr('total_app'); //获取app总数\n          $(\"#total_app\").text(total_app);\n          if(typeof(total_app) != \"undefined\"){\n            if(parseInt(total_app)==0){\n              $(\"#page\").hide();        //app个数为0时隐藏分页条\n              $(\"#app_num_div\").hide();\n              $(\"#app_num\").text(total_app);\n            }else{\n              $(\"#page\").show();        //app个数为0时显示分页条\n              $(\"#app_num_div\").show();\n              $(\"#app_num\").text(total_app);\n            }\n          }\n        },\n        // 查询App列表\n        // note:需要在之前引用 pagination.js 文件\n        search_app:function(){\n          var keyword = $.trim($(\"#search_app\").val());\n          // check keyword\n          if (keyword.indexOf('&') != -1) {\n            art.dialog({id: 'bktips',width: 300,icon: 'warning',lock: true,content: '错误的搜索参数! 参数中不能包含符号[&]'});\n            return\n          }\n\n          //获取当前tabid\n          var status = $('#status').val();\n          var hide_offline = $('#set_hide_offline').val();\n          //分页请求\n          var opt={\n            url:BLUEKING.config.paas_host() +'app/list/query/?keyword='+keyword+'&'+'hide_offline='+hide_offline+'&',\n            items_per_page:8,\n            current_page:1,\n            callback:APP_LIST._callback_fun,\n            table_obj:'#table_app'\n          };\n          $(\"#pagination_id\").pagination(opt);\n        },\n        // 查询按钮\n        // 清空搜索条件\n        clear_search_input:function(){\n          $('#search_app').val('');\n          $(\"#close_span\").css('display', 'none');\n          $('#j_display_all_app').click();\n        }\n    }\n})(),\n// 应用创建\nAPP_CREATE = (function(){\n    return{\n        _check_app_code:function(){\n          var re_code = false;\n          $.ajax({\n            type: 'GET',\n            url: BLUEKING.config.paas_host() +'app/check/app_code/',\n            data: {app_code: $.trim($('#code').val())},\n            success: function(d){\n              if(d.result){\n                re_code = true\n              }else{\n                $('#tip_code').html(d.message);\n                re_code = false;\n              }\n            },\n            dataType: 'json',\n            async: false,\n          });\n          return re_code;\n        },\n        _check_app_name:function(){\n          var re_name = false;\n          var operation = $(\"#name\").attr('operation');\n          if(operation == 'modify'){\n              var old_name = $.trim($('#name').val());\n          }else{\n              var old_name = '';\n          }\n\n          $.ajax({\n            type: 'GET',\n            url: BLUEKING.config.paas_host() +'app/check/app_name/',\n            data: {'name': $.trim($('#name').val()), 'old_name': old_name},\n            success: function(d){\n              if(d.result){\n                re_name = true\n              }else{\n                $('#tip_name').html(d.message);\n                re_name = false;\n              }\n            },\n            dataType: 'json',\n            async: false,\n          });\n\n          return re_name;\n        },\n        check_app_code:function(is_focus){\n         var flag = true;\n         if($.trim($(\"#code\").val()) == ''){\n            $('#tip_code').html('请填写应用 ID');\n            flag = false;\n          }else{\n            var return_re = APP_CREATE._check_app_code();\n            flag = return_re;\n            if(return_re){\n              $('#tip_code').html('');\n            }\n          }\n          if(!flag && is_focus==1){\n            $(\"#code\").focus();\n          }\n          return flag;\n        },\n        check_app_name:function(is_focus){\n          var flag = true;\n          if($.trim($(\"#name\").val()) == ''){\n            $('#tip_name').html('请填写应用名称');\n            flag = false;\n          }else{\n            var return_re = APP_CREATE._check_app_name();\n            flag = return_re;\n            if(return_re){\n              $('#tip_name').html('');\n            }\n          }\n          if(!flag && is_focus==1){\n            $(\"#name\").focus();\n          }\n          return flag;\n        },\n        check_introduction:function(is_focus){\n          var flag = true;\n          if($.trim($(\"#introduction\").val()) == ''){\n            $('#tip_introduction').html('请填写应用简介');\n            flag = false;\n          }else if(UTILS.chkstrlen($.trim($('#introduction').val())) > 30){\n            $('#tip_introduction').html('长度不能超过30个字符');\n            flag = false;\n          }else{\n            $('#tip_introduction').html('');\n          }\n          if(!flag && is_focus==1){\n            $(\"#introduction\").focus();\n          }\n          return flag;\n        },\n        check_developer:function(is_focus){\n          var flag = true;\n          if($.trim($(\"#developer\").val()) == ''){\n            $('#tip_developer').html('请填写开发负责人');\n            flag = false;\n          }else{\n              $('#tip_developer').html('');\n          }\n          if(!flag && is_focus==1){\n            $(\"#developer\").select2(\"open\");\n          }\n          return flag;\n        },\n        check_vcs_url:function(is_focus){\n          var flag = true;\n          var vcs_url = $.trim($(\"#vcs_url\").val());\n          // if (vcs_url.length != $(\"#vcs_url\").val().length) {\n          //     $(\"#tip_vcs_url\").html('请填写正确的仓库地址, 不能包含空格');\n          //     if(is_focus==1){\n          //       $(\"#vcs_url\").focus();\n          //     }\n          //     return false;\n          // } else {\n          //     $(\"#tip_vcs_url\").html('');\n          // }\n\n          var vcs_type = $(\"input[name='vcs_type']:checked\").val();\n          if(!vcs_type){\n            vcs_type = $(\"#vcs_type_id\").val();\n          }\n          if(vcs_type == '0'){\n            var url_pattern = new RegExp(\"(http[s]{0,1}|git)://\", \"gi\");\n          }else{\n            var url_pattern = new RegExp(\"(http[s]{0,1}|svn)://\", \"gi\");\n          }\n\n          if( vcs_url.match(url_pattern) ){\n              $(\"#tip_vcs_url\").html('');\n          }else{\n              $(\"#tip_vcs_url\").html('请填写正确的仓库地址');\n              flag = false;\n          }\n          if(!flag && is_focus==1){\n            $(\"#vcs_url\").focus();\n          }\n          return flag;\n        },\n        check_vcs_username:function(is_focus){\n          var flag = true;\n          var vcs_username = $.trim($(\"#vcs_username\").val());\n          if(vcs_username == ''){\n              $(\"#tip_vcs_username\").html('请填写账号');\n              if(is_focus==1){\n                $(\"#vcs_username\").focus();\n              }\n              flag = false;\n          }else{\n              $(\"#tip_vcs_username\").html('');\n          }\n          return flag;\n        },\n        check_vcs_password:function(is_focus){\n          var flag = true;\n          var vcs_password = $.trim($(\"#vcs_password\").val());\n          if(vcs_password == ''){\n              $(\"#tip_vcs_password\").html('请填写密码');\n              if(is_focus==1){\n                $(\"#vcs_password\").focus();\n              }\n              flag = false;\n          }else{\n              $(\"#tip_vcs_password\").html('');\n          }\n          return flag;\n        },\n        check_app_tags:function(){\n            var flag = true;\n            var apptags = $.trim($(\"#app_tags\").val());\n            if(apptags == ''){\n                flag = false;\n            }\n            return flag;\n        },\n        check_db_host:function(){\n          var flag = true;\n          var db_host = $.trim($(\"#db_host\").val());\n          if(!db_host){\n              $(\"#tip_db_host\").html('请填写HOST');\n              flag = false;\n          }else{\n              $(\"#tip_db_host\").html('');\n          }\n          return flag;\n        },\n        check_db_port:function(){\n          var flag = true;\n          var db_port = $.trim($(\"#db_port\").val());\n          if(!UTILS.isInt(db_port)){\n              $(\"#tip_db_port\").html('请填写端口，必须为数字');\n              flag = false;\n          }else{\n              $(\"#tip_db_port\").html('');\n          }\n          return flag;\n        },\n        check_db_username:function(){\n          var flag = true;\n          var db_username = $.trim($(\"#db_username\").val());\n          if(!db_username){\n              $(\"#tip_db_username\").html('请填写数据库用户名');\n              flag = false;\n          }else{\n              $(\"#tip_db_username\").html('');\n          }\n          return flag;\n        },\n        // 提交数据前验证表单\n        validate_form:function(){\n          $(\".tips\").text('');\n          var flag = false;\n          flag = APP_CREATE.check_app_code(1);\n          if(!flag){return false;}\n          flag = APP_CREATE.check_app_name(1);\n          if(!flag){return false;}\n          flag = APP_CREATE.check_introduction(1);\n          if(!flag){return false;}\n\n          flag = APP_CREATE.check_developer(1);\n          if(!flag){return false;}\n          flag = APP_CREATE.check_vcs_url(1);\n          if(!flag){return false;}\n          flag = APP_CREATE.check_vcs_username(1);\n          if(!flag){return false;}\n          flag = APP_CREATE.check_vcs_password(1);\n          if(!flag){return false;}\n          $('button').attr('disabled', 'disabled');\n          art.dialog({id: 'bktips',width: 300,icon: 'warning',lock: true,content: '正在创建应用，请稍后...'});\n          return true;\n        }\n    }\n})(),\n// 应用基本信息页面相关函数\nAPP_INFO = (function(){\n    return{\n        // 保存基本信息\n        save_base_info:function(){\n            // 验证前台输入\n            var flag = false\n            flag = APP_CREATE.check_app_name();\n            if(!flag){return false;}\n            flag = APP_CREATE.check_developer();\n             if(!flag){return false;}\n             // 后台保存\n             var app_code = $(\"#app_code_id\").val();\n             var modify_app_url = BLUEKING.config.paas_host() +'app/' +app_code + '/';\n\n             $.ajax({\n                type: 'POST',\n                url: modify_app_url,\n                data: {\n                     'operate': 'base',\n                     'name': $.trim($(\"#name\").val()),\n                     'developer': $.trim($(\"#developer\").val()),\n                     'app_tags': $.trim($(\"#app_tags\").val())\n                 },\n                success: function(data){\n                   flag = data.result;\n                   if(!flag){\n                       $('#tip_name').html(data.message);\n                   }else{\n                       $(\"#app_tags_dis\").html($(\"#app_tags option[value=\"+ $(\"#app_tags\").val() +\"]\").text());\n                   }\n                },\n                dataType: 'json',\n                async: false,\n              });\n\n             return flag;\n        },\n        // 获取代码仓库的密码\n        get_vcs_password:function(){\n          var app_code = $(\"#app_code_id\").val();\n          var vcs_password = '';\n          var url = BLUEKING.config.paas_host() +'app/' +app_code + '/vcs/password/';\n          $.ajax({\n                type: 'GET',\n                url: url,\n                data: {},\n                success: function(resp){\n                   vcs_password = resp.data.password;\n                },\n                dataType: 'json',\n                async: false,\n            });\n            return vcs_password;\n        },\n        // 保存应用简介\n        save_introduction: function(){\n            // 验证前台输入\n            var flag = false;\n            flag = APP_CREATE.check_introduction();\n              if(!flag){return false;}\n              // 后台保存\n              var app_code = $(\"#app_code_id\").val();\n             var modify_app_url = BLUEKING.config.paas_host() +'app/' +app_code + '/';\n\n              $.ajax({\n                type: 'POST',\n                url: modify_app_url,\n                data: {\n                     'operate': 'introduction',\n                     'introduction': $.trim($(\"#introduction\").val())\n                 },\n                success: function(data){\n                  flag = data.result;\n                   if(!flag){\n                       $('#tip_introduction').html(data.message);\n                   }\n                },\n                dataType: 'json',\n                async: false,\n              });\n\n             return flag;\n        },\n        // 保存源代码信息\n        save_vcs:function(){\n            // 验证前台输入\n            var flag = false;\n            flag = APP_CREATE.check_vcs_url();\n              if(!flag){return false;}\n              flag = APP_CREATE.check_vcs_username();\n              if(!flag){return false;}\n              flag = APP_CREATE.check_vcs_password();\n              if(!flag){return false;}\n              // 后台保存\n              var app_code = $(\"#app_code_id\").val();\n             var modify_app_url = BLUEKING.config.paas_host() +'app/' +app_code + '/';\n\n             $.ajax({\n                type: 'POST',\n                url: modify_app_url,\n                data: {\n                     'operate': 'vcs',\n                     'vcs_type': $(\"#vcs_type_id\").val(),\n                     'vcs_url': $.trim($(\"#vcs_url\").val()),\n                     'vcs_username': $.trim($(\"#vcs_username\").val()),\n                     'vcs_password': $.trim($(\"#vcs_password\").val())\n                 },\n                success: function(data){\n                   flag = data.result;\n                   if(!flag){\n                       $('#tip_vcs').html(data.message);\n                   }\n                },\n                dataType: 'json',\n                async: false,\n              });\n\n             return flag;\n        },\n        // 保存db信息\n        save_db_info: function(){\n            // 验证前台输入\n            var flag = false;\n            flag = APP_CREATE.check_db_host();\n            if(!flag){return false;}\n            flag = APP_CREATE.check_db_port();\n            if(!flag){return false;}\n            flag = APP_CREATE.check_db_username();\n            if(!flag){return false;}\n            // 后台保存\n            var app_code = $(\"#app_code_id\").val();\n           var modify_app_url = BLUEKING.config.paas_host() +'app/' +app_code + '/';\n\n           $.ajax({\n              type: 'POST',\n              url: modify_app_url,\n              data: {\n                   'operate': 'db',\n                   'db_type': $(\"#db_type_id\").val(),\n                   'db_host': $.trim($(\"#db_host\").val()),\n                   'db_port': $.trim($(\"#db_port\").val()),\n                   'db_username': $.trim($(\"#db_username\").val()),\n                   'db_password': $.trim($(\"#db_password\").val()),\n               },\n              success: function(data){\n                 flag = data.result;\n                 if(!flag){\n                     $('#tip_db').html(data.message);\n                 }\n              },\n              dataType: 'json',\n              async: false,\n            });\n\n           return flag;\n        },\n        // 获取应用访问地址信息\n        get_access_info:function(app_code){\n            var url = BLUEKING.config.paas_host() + \"app/\"+app_code+\"/status/\";\n            $.get(url, {}, function(resp){\n                data = resp.data;\n                app_test_url = data.app_test_url;\n                app_prod_url = data.app_prod_url;\n                if(data.status == 1 || data.status == 2){\n                    $(\"#test_access_span\").html( '<a href=\"'+app_test_url+'\" target=\"_blank\" >'+app_test_url+'</a>');\n                }else{\n                  $(\"#test_access_span\").html('<span data-toggle=\"tooltip\" data-placement=\"top\" title=\"应用未提测或已下架\">'+app_test_url+'</span>');\n                }\n\n                if(data.status == 1 || data.status == 3){\n                    $(\"#prod_access_span\").html( '<a href=\"'+app_prod_url+'\" target=\"_blank\" >'+app_prod_url+'</a>');\n                }else{\n                    $(\"#prod_access_span\").html('<span data-toggle=\"tooltip\" data-placement=\"top\" title=\"应用未上线或已下架\">'+app_prod_url+'</span>');\n                }\n            }, 'json');\n        },\n    }\n})()\n//页面元素绑定事件\n// 个人信息页面\n$(\"#show_password_change\").on('click', APP_PROFILE.change_password);\n$(\"#show_modify_user\").on('click', APP_PROFILE.show_modify_user);\n// 我的应用页面\n$(\"#set_hide_offline\").on('change', APP_LIST.search_app);\n$(\"#j_display_all_app\").on('click', APP_LIST.search_app);\n$(\"#close_span\").on('click', APP_LIST.clear_search_input);\n$(\"#search_app\").keyup(function(e){\n    var search_val = $.trim($(\"#search_app\").val());\n    if(search_val){\n          $(\"#close_span\").css('display', '');\n        }else{\n              $(\"#close_span\").css('display', 'none');\n       }\n      // 回车事件\n      if(e.keyCode=='13'){\n        $('#j_display_all_app').click();\n      }\n});\n//  创建应用 & 基本信息 输入元素onblur事件\n$(\"input[name='code']\").on('blur', APP_CREATE.check_app_code);\n$(\"input[name='name']\").on('blur', APP_CREATE.check_app_name);\n$(\"input[name='introduction']\").on('blur', APP_CREATE.check_introduction);\n$(\"input[name='vcs_url']\").on('blur', APP_CREATE.check_vcs_url);\n$(\"input[name='vcs_username']\").on('blur', APP_CREATE.check_vcs_username);\n$(\"input[name='vcs_password']\").on('blur', APP_CREATE.check_vcs_password);\n// SaaS应用基本信息页面\n$(\"input[name='db_host']\").on('blur', APP_CREATE.check_db_host);\n$(\"input[name='db_port']\").on('blur', APP_CREATE.check_db_port);\n$(\"input[name='db_username']\").on('blur', APP_CREATE.check_db_username);\n\n// 取消按钮事件\n$(\".can_a\").click(function(){\n    $(this).hide();\n    $(this).next('.operate').attr({\"data\": \"0\"});\n    $(this).next('.operate').html(\"编辑\");\n    var cur_class = $(this).next('.operate').attr('edit-class');\n    if(cur_class=='base'){$(\"#developer_div\").hide();}\n    // 更新输入选项\n    $(\".col_main .\"+cur_class).each(function(){\n        var cur_value = $(this).text();\n        $(this).show();\n        $(this).prev('.app-edit').hide();\n        $(this).parents('.app-info').find('.app-info-tips').text('');\n        // 密码不显示明文\n        if($(this).attr('id')=='vcs_password_value'){\n          $(\".password_show\").show();\n          $(\".password_show\").attr('data', '0');\n          $(\".password_show\").attr('title', '显示密码');\n          $(\".password_show\").html('<i class=\"bk-icon icon-eye t_b t_s12\" style=\"transform: scale(0.8,0.8);\"></i>');\n          $(this).prev('.app-edit').val('');\n        }else{\n          $(this).prev('.app-edit').val(cur_value);\n        }\n    });\n})\n// // 编辑、保存按钮事件\n$(\".operate\").click(function(){\n    // 当前按钮状态\n    var stat = $(this).attr(\"data\");\n    var cur_class = $(this).attr('edit-class');\n    // 编辑状态\n    if(stat=='0'){\n        // 更改状态\n        $(this).attr({\"data\": \"1\"});\n        $(this).html(\"保存\");\n        $(this).prev('.can_a').show();\n        // 隐藏text值\n        $(\".col_main .\"+cur_class).hide();\n          // 显示input、text等输入选项\n        $(\".\"+cur_class).prev('.app-edit').show();\n        switch (cur_class){\n            case 'base':\n                $(\"#developer_div\").show();\n                $(\"#app_tags_div\").show();\n                break;\n            case 'vcs':\n                $(\".\"+cur_class).prev('.app-edit').css('display', 'inline-block');\n                $(\".password_show\").hide();\n                break;\n            case 'db':\n                $(\".\"+cur_class).prev('.app-edit').css('display', 'inline-block');\n                $(\".password_show\").hide();\n                break;\n        }\n    }else{\n        var op_flag = false;\n        switch (cur_class){\n            case 'base':\n                op_flag = APP_INFO.save_base_info();\n                break;\n            case 'introduction':\n                op_flag = APP_INFO.save_introduction();\n                break;\n            case 'vcs':\n                op_flag = APP_INFO.save_vcs();\n                break;\n            case 'db':\n                op_flag = APP_INFO.save_db_info();\n        }\n        // 保存成功操作\n        if(op_flag){\n            $(this).attr({\"data\": \"0\"});\n            $(this).html(\"编辑\");\n            $(this).prev('.can_a').hide();\n            // 隐藏input、text等输入选项\n            $(\".\"+cur_class).prev('.app-edit').hide();\n            if(cur_class=='base'){$(\"#developer_div\").hide();$(\"#app_tags_div\").hide();}\n            // 更新输入选项\n            $(\".col_main .\"+cur_class).each(function(){\n                var cur_value = $.trim($(this).prev('.app-value').val());\n                $(this).show();\n                // 密码不显示明文\n                if($(this).attr('id')=='vcs_password_value'){\n                  $(this).html('******');\n                  $(this).prev('.app-value').val('')\n                  $(\".password_show\").show();\n                  $(\".password_show\").attr('data', '0');\n                  $(\".password_show\").attr('title', '显示密码');\n                  $(\".password_show\").html('<i class=\"bk-icon icon-eye t_b t_s12\" style=\"transform: scale(0.8,0.8);\"></i>');\n                }else{\n                  $(this).text(cur_value);\n                }\n            });\n        }\n    }\n})\n// 渲染多选择框\n$(\"#developer_select\").select2( {placeholder:\"负责人，可选多个\"}).on(\"change\", function(e) {\n    var developer_now = e.val.join(';');\n    $(\"#developer\").val(developer_now);\n});\n// 代码仓库提示\n$(\"input[name='vcs_type']\").click(function(){\n  var type = $(this).val();\n  if(type=='0'){\n    $(\"#vcs_url_help\").html('支持以下协议：http(s)://, git://');\n    $(\"#vcs_type_help\").html('通过Git方式获取应用代码');\n    $(\"#cur_protocol\").val('');\n    $(\"#vcs_text\").text('Git');\n  }else{\n    $(\"#vcs_url_help\").html('支持以下协议：http(s)://, svn://<br>请确保 <code>requirements.txt</code> 文件在该目录下');\n    $(\"#vcs_type_help\").html('通过SVN方式获取应用代码');\n    $(\"#cur_protocol\").val('svn://');\n    $(\"#vcs_text\").text('SVN');\n  }\n})\n// 显示/ 隐藏 代码仓库密码\n$(\".password_show\").click(function(){\n  var data = $(this).attr('data');\n  if(data=='0'){\n    $(this).attr('data', '1');\n    // 获取用户密码\n    var vcs_password = APP_INFO.get_vcs_password();\n    $(\"#vcs_password_value\").html(vcs_password);\n    $(this).attr('title', '隐藏密码');\n    $(this).html('<i class=\"bk-icon icon-eye-slash t_b t_s12\" style=\"transform: scale(0.8,0.8);\"></i>');\n  }else{\n    $(\"#vcs_password_value\").html('******');\n    $(this).attr('data', '0');\n    $(this).attr('title', '显示密码');\n    $(this).html('<i class=\"bk-icon icon-eye t_b t_s12\" style=\"transform: scale(0.8,0.8);\"></i>');\n  }\n})\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_app_env.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n$(function(){\n  // 编辑\n  $('#user_env_table').on('click','.env_edit_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    curRecord.addClass('env_edit_status');\n    curRecord.find('input').removeAttr('disabled');\n    curRecord.find('select').removeAttr('disabled');\n    var envName = curRecord.find('.env_name').val();\n    var envVal = curRecord.find('.env_val').val();\n    var envMode = curRecord.find('.env_mode').val();\n    var envIntro = curRecord.find('.env_intro').val();\n    //保存旧值\n    curRecord.attr('data-old-name',envName);\n    curRecord.attr('data-old-val',envVal);\n    curRecord.attr('data-old-intro',envIntro);\n    curRecord.attr('data-old-mode',envMode);\n    return false;\n  });\n\n  // 取消编辑\n  $('#user_env_table').on('click','.env_cancel_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    curRecord.removeClass('env_edit_status');\n\n    curRecord.find('input').attr('disabled','disabled');\n    curRecord.find('select').attr('disabled','disabled');\n\n    //显示旧值\n    var oldName = curRecord.attr('data-old-name');\n    var oldVal = curRecord.attr('data-old-val');\n    var oldIntro = curRecord.attr('data-old-intro');\n    var oldMode = curRecord.attr('data-old-mode');\n\n    if (oldName || oldVal || oldIntro || oldMode){\n      var envName = curRecord.find('.env_name').val(oldName);\n      var envVal = curRecord.find('.env_val').val(oldVal);\n      var envIntro = curRecord.find('.env_intro').val(oldIntro);\n      var envMode = curRecord.find('.env_mode').val(oldMode);\n    }else{\n      curRecord.remove();\n    }\n\n    return false;\n  });\n\n  // 保存\n  $('#user_env_table').on('click','.env_save_btn',function(){\n\n    var btn_obj = $(this);\n    var curRecord = $(this).closest('.env_record');\n    var envIntro = curRecord.find('.env_intro').val();\n    var envName = curRecord.find('.env_name').val();\n    var envVal = curRecord.find('.env_val').val();\n    var envMode = curRecord.find('.env_mode').val();\n    var recordId = curRecord.find('.env_id').val();\n\n    if (!envName){\n      art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: '请输入变量名'}).time(1);\n      curRecord.find('.env_name').focus();\n      return false;\n    }\n    if (!envVal){\n      art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: '请输入变量值'}).time(1);\n      curRecord.find('.env_val').focus();\n      return false;\n    }\n    if (!envIntro){\n      art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: '请输入说明'}).time(1);\n      curRecord.find('.env_intro').focus();\n      return false;\n    }\n\n    var request_data = {\n      name: envName,\n      value: envVal,\n      intro: envIntro,\n      mode: envMode,\n    }\n\n    var app_code = $(\"#app_code\").val()\n    var url = site_url + 'app/' + app_code + '/env/';\n    type = \"POST\";\n    if (recordId) {\n      request_data[\"id\"] = recordId\n      type = \"PUT\"\n      url = url + recordId + \"/\";\n    }\n    console.log(\"it the type:\" + type)\n    console.log(request_data )\n    // 有记录id则进行修改\n    var request = $.ajax({\n      url: url,\n      type: type,\n      data: request_data,\n      // contentType: 'application/json',\n      success: function(data) {\n          if (data.result){\n            art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: '保存成功'}).time(1);\n            curRecord.find('input').attr('disabled','disabled');\n            curRecord.find('select').attr('disabled','disabled');\n            curRecord.removeClass('env_edit_status');\n\n            curRecord.find('.env_id').val(data.id);\n          }else{\n            art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message}).time(1);\n          }\n      },\n      fail: function(request,msg,error) {\n          art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: \"保存失败!\"}).time(1);\n      }\n    })\n\n    return false;\n  });\n\n  // 添加变量 - 按钮\n  $('.env_add_btn').on('click',function(){\n    var mode_choices_html = $(\"#mode_choices_html\").html();\n\n    var tpl = [\n      '<tr class=\"env_record env_edit_status\">',\n      '<input  type=\"hidden\" class=\"env_id\" disabled value=\"\" />',\n      '    <td>',\n      '       <div class=\"env_key_box\">',\n      '           <input class=\"form-control env_name\" value=\"\" placeholder=\"请输入变量名\"/>',\n      '           <span class=\"env_prefix\">BKAPP_</span>',\n      '        </div>',\n      '    </td>',\n      '    <td>',\n      '        <input class=\"form-control env_val\" value=\"\" placeholder=\"请输入变量值\">',\n      '    </td>',\n      '    <td>',\n      mode_choices_html,\n      '    </td>',\n      '    <td>',\n      '       <input class=\"form-control env_intro\" value=\"\" placeholder=\"请输入说明\">' ,\n      '    </td>',\n      '    <td>',\n      '    <button type=\"button\" class=\"btn-info btn-xs env_save_btn\">保存</button>',\n      '       <button type=\"button\" class=\"btn-xs env_cancel_btn\">取消</button> ',\n      '  <a href=\"#\" title=\"编辑\" class=\"dev_env_opera env_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>',\n      '  <a href=\"#\" title=\"删除\" class=\"dev_env_opera env_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>',\n      '    </td>',\n      '</tr>'\n    ].join('');\n    $('#no_record_row').hide();\n    $('#user_env_table').append($(tpl));\n\n    return false;\n  });\n\n  // 删除变量\n  $('#user_env_table').on('click','.env_del_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    var recordId = curRecord.find('.env_id').val();\n    console.log(recordId);\n    if (recordId){\n\n      var app_code = $(\"#app_code\").val()\n      var url = site_url + 'app/' + app_code + '/env/' + recordId + '/';\n\n      art.dialog({\n        title: \"删除确认\",\n        width: 340,\n        icon: 'question',\n        lock: true,\n        content: \"<div class='t_s14'>\"+\"您确定删除该环境变量吗?\"+\"</div>\",\n        ok: function(){\n          art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: \"正在进行删除操作，请稍后...\"})\n\n          $.ajax({\n            url: url,\n            type: \"DELETE\",\n            success: function(data){\n              art.dialog({id: 'bktips'}).close();\n              if(data.result){\n                art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: data.message}).time(1);\n                curRecord.remove();\n              }else{\n                art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message}).time(1);\n              }\n            }\n          })\n\n        },\n        cancel: function(){},\n        okVal: \"确定\",\n        cancelVal: \"取消\"\n      });\n\n    }\n\n  });\n\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_base.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/**\n * 页面滚动条\n */\n  var minHeight = 100;\n  var scrollOffset = $(document).height()-$(window).height() - 100;\n  var returnTopDom = $('#return_top');\n  var returnBottomDom = $('#return_bottom');\n\n  //确定按钮位置\n  function setBtnPosition(){\n    var returnTopLeft = $('#body').offset().left + $('#body').width() + 10;\n    if ($(window).width() >= returnTopLeft) {\n      $('.return_btn').css({'left': returnTopLeft+'px'});\n    } else {\n      $('.return_btn').css({'left': 'auto', 'right': '10px', 'position': 'fixed'});\n    }\n  }\n  //监听滚动条\n  $(window).on('scroll',function(){\n    var sTop = $(this).scrollTop();\n    if (sTop > minHeight){\n      returnTopDom.fadeIn(300);\n    }else{\n      returnTopDom.fadeOut(300);\n    }\n\n    if (sTop >= scrollOffset){\n      returnBottomDom.fadeOut(300);\n    }else{\n      returnBottomDom.fadeIn(300);\n    }\n  });\n\n  //监听窗口resize\n  $(window).on('resize',function(){\n    setBtnPosition();\n  });\n\n  //返回顶部\n  returnTopDom.on('click',function(){\n    $('html,body').animate({scrollTop:0},700);\n    return false;\n  });\n  returnBottomDom.on('click',function(){\n    $('html,body').animate({scrollTop:scrollOffset+100},700);\n    return false;\n  });\n  setBtnPosition();\n  $(window).trigger('scroll');\n\n  // base_app页面内容\n  BASE_APP = (function(){\n    return{\n      pro_test_on:function(app_test_url, app_prod_url){\n        $(\"#pro-test\").html(\n            '<span class=\"f_l\">快捷入口：</span>'+\n            '<a href=\"'+app_test_url+'\" target=\"_blank\" class=\"f_l\" style=\"width:50px;margin-left:12px;\">测试环境</a>'+\n            '<a href=\"'+app_prod_url+'\" target=\"_blank\" class=\"\" style=\"width:50px;margin-left:135.5px;\">正式环境</a>'\n        );\n      },\n      pro_test_off:function(app_test_url, app_prod_url){\n        $(\"#pro-test\").html(\n            '<span class=\"f_l\">快捷入口：</span>'+\n            '<span data-toggle=\"tooltip\" data-placement=\"top\" title=\"应用未提测或已下架\" style=\"color:#999;width:50px;margin-left:12px;\">测试环境</span>'+\n            '<span data-toggle=\"tooltip\" data-placement=\"left\" title=\"应用未上线或已下架\" style=\"color:#999;width:50px;margin-left:15.5px;\">正式环境</span>'\n        );\n      },\n      pro_on_test_off:function(app_test_url, app_prod_url){\n        $(\"#pro-test\").html(\n            '<span class=\"f_l\">快捷入口：</span>'+\n            '<span class=\"f_l\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"应用未提测或已下架\" style=\"color:#999;width:50px;margin-left:12px;\">测试环境</span>'+\n            '<a href=\"'+app_prod_url+'\" target=\"_blank\" class=\"\" style=\"width:50px;margin-left:135.5px;\">正式环境</a>'\n        );\n      },\n      pro_off_test_on:function(app_test_url, app_prod_url){\n        $(\"#pro-test\").html(\n            '<span class=\"f_l\">快捷入口：</span>'+\n            '<a href=\"'+app_test_url+'\" target=\"_blank\" class=\"f_l\" style=\"width:50px;margin-left:12px;\">测试环境</a>'+\n            '<span data-toggle=\"tooltip\" data-placement=\"left\" title=\"应用未上线或已下架\" style=\"color:#999;width:50px;margin-left:13.5px;\">正式环境</span>'\n        );\n      },\n      refresh_app_status:function(app_code){\n          var url = BLUEKING.config.paas_host() + \"app/\"+app_code+\"/status/\";\n          $.get(url, {}, function(resp){\n              data = resp.data;\n              app_test_url = data.app_test_url;\n              app_prod_url = data.app_prod_url;\n              if(data.status == 1){\n                  BASE_APP.pro_test_on(app_test_url, app_prod_url);\n              }\n              else if(data.status == 2){\n                  BASE_APP.pro_off_test_on(app_test_url, app_prod_url);\n              }else if(data.status == 3){\n                  BASE_APP.pro_on_test_off(app_test_url, app_prod_url);\n              }else{\n                  BASE_APP.pro_test_off(app_test_url, app_prod_url);\n              }\n              // 渲染应用名称\n              $(\"#app_info_name_id\").text(data.app_name);\n              $(\"#app_info_name_id\").attr('title', data.app_name);\n              // logo\n              $(\"#app_logo_now\").attr('src', data.app_log_url);\n          }, 'json');\n      },\n      modify_app_logo: function(app_code, is_saas){\n        var logo_test = $(\"#logo_m\");\n        if(is_saas){\n          var url_prefix = 'saas';\n        }else{\n          var url_prefix = 'app'\n        }\n        var url = BLUEKING.config.paas_host() + url_prefix +\"/\"+app_code+\"/logo/\";\n        $(\"#form_logo\").attr('action', url)\n        art.dialog({\n              title: \"温馨提示\",\n              width: 340,\n              icon: 'warning',\n              lock: true,\n              content: $(\"#div_m_logo\").get(0),\n              ok: function(){\n                var value =document.getElementById(\"logo_m\").value;\n              if(value == '' || value==null){\n                $(\"#logo_error_tips\").html('请选择要上传的图片');\n                return false;\n              }\n              else if(value.substring(value.lastIndexOf(\".\")+1)!=\"png\"){\n                $(\"#logo_error_tips\").html('上传图片必须为png格式');\n                return false;\n              }\n              else if(logo_test.get(0).files[0].size > 6*1024*1024){\n                $(\"#logo_error_tips\").html('图片大小限制为6M');\n                return false;\n              }\n              else{\n                $('#form_logo').target=\"logo_target_frame\";\n                $('#form_logo').submit();\n              }\n              },\n              okVal: \"确定\",\n              cancel: function(){},\n            cancelVal: \"取消\"\n        });\n      }\n    }\n  })()\n\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_engine.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/*\n * 服务器信息相关\n */\n //添加变量\n$('.env_add_btn').on('click',function(){\n    var tpl = [\n                '<tr class=\"env_record env_edit_status\">',\n                '<input  type=\"hidden\" class=\"server_id\" disabled value=\"\" />',\n                '    <td>',\n                '       <div class=\"env_key_box\">',\n                '           <span class=\"s_id\"></span>',\n                '        </div>',\n                '    </td>',\n                '    <td>',\n                '        <span class=\"server_token\"></span>',\n                '    </td>',\n                '    <td>',\n                '       <input class=\"form-control server_ip\"  value=\"\" placeholder=\"请输入服务器IP\"/>' ,\n                '    </td>',\n                '    <td>',\n                '       <input type=\"number\" min=\"1\" max=\"65535\" class=\"form-control server_port\"  value=\"4245\" placeholder=\"请输入Agent端口\"/>' ,\n                '    </td>',\n                '    <td>',\n                '       <input type=\"number\" min=\"1\" max=\"65535\" class=\"form-control app_port\"  value=\"8085\" placeholder=\"请输入App服务端口\"/>' ,\n                '    </td>',\n                '    <td>',\n                '       <select class=\"form-control server_cate\"  placeholder=\"请选择服务器类别\">' ,\n                '           <option value=\"tapp\">测试服务器</option>',\n                '           <option value=\"app\">正式服务器</option>',\n                '       <\\select>',\n                '    </td>',\n                '    <td>',\n                '        <span class=\"server_active\">否</span>',\n                '    </td>',\n                '    <td>',\n                '    <button type=\"button\" class=\"btn-info btn-xs env_save_btn\">保存</button>',\n                '       <button type=\"button\" class=\"btn-xs env_cancel_btn\">取消</button> ',\n                '  <a href=\"###\" title=\"编辑\" class=\"dev_env_opera env_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>',\n                '  <a href=\"###\" title=\"删除\" class=\"dev_env_opera env_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>',\n                '  <a href=\"###\" title=\"激活\" class=\"dev_env_opera env_active_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span></a>',\n                '    </td>',\n                '</tr>'\n              ].join('');\n\n        $('#no_record_row').hide();\n        $('#user_env_table').append($(tpl));\n    return false;\n});\n// 保存\n$('#user_env_table').on('click','.env_save_btn',function(){\n    var btn_obj = $(this);\n    var curRecord = $(this).closest('.env_record');\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var app_port = curRecord.find('.app_port').val();\n    var server_cate = curRecord.find('.server_cate').val();\n    var server_id = curRecord.find('.server_id').val();\n    //var recordId =  $(this).val();\n    if (!server_ip){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的IP地址'}).time(2);\n        curRecord.find('.server_ip').focus();\n        return false;\n    }\n    if (!UTILS.isInt(server_port) || parseInt(server_port) < 0 || parseInt(server_port) > 65535){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的Agent端口'}).time(2);\n        curRecord.find('.server_port').focus();\n        return false;\n    }\n    if (!UTILS.isInt(app_port) || parseInt(app_port) < 0 || parseInt(app_port) > 65535){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的App服务端口'}).time(2);\n        curRecord.find('.app_port').focus();\n        return false;\n    }\n    if (!server_cate){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请选择服务器类别'}).time(2);\n        curRecord.find('.server_cate').focus();\n        return false;\n    }\n\n    if (server_id){\n        // 有记录id则进行修改\n        var url = BLUEKING.config.paas_host() + 'engine/server/';\n        $.post(url,\n                {server_ip: server_ip,\n                server_port: server_port,\n                app_port: app_port,\n                server_cate: server_cate,\n                server_id: server_id\n               },\n               function(data, status){\n                    if(status == \"success\"){\n                        if (data.result){\n                            art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: '保存成功'}).time(1);\n                            curRecord.find('input').attr('disabled','disabled');\n                            curRecord.find('select').attr('disabled','disabled');\n                            curRecord.removeClass('env_edit_status');\n                        }else{\n                            art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message});\n                        }\n                    }else{\n                        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '保存失败'});\n                    };\n               }\n        ,'json');\n    }else{\n        // 没有记录id则进行添加\n        var url = BLUEKING.config.paas_host() + 'engine/server/';\n        $.post(url,\n               {server_ip: server_ip,\n                server_port: server_port,\n                app_port: app_port,\n                server_cate: server_cate\n               },\n               function(data, status){\n                    if(status == \"success\"){\n                        if (data.result){\n                            art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: '添加成功'}).time(1);\n                            server_data = data.data\n                            curRecord.find('.server_id').val(server_data.server_id);\n                            curRecord.find('.s_id').text(server_data.s_id);\n                            curRecord.find('.server_token').text(server_data.token);\n\n                            curRecord.find('input').attr('disabled','disabled');\n                            curRecord.find('select').attr('disabled','disabled');\n                            curRecord.removeClass('env_edit_status');\n                        }else{\n                            art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message});\n                            //curRecord.remove();\n                        }\n                    }else{\n                        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '添加失败'});\n                        //curRecord.remove();\n                    };\n               }\n        ,'json');\n    }\n    return false;\n});\n//编辑\n$('#user_env_table').on('click','.env_edit_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    curRecord.addClass('env_edit_status');\n    curRecord.find('input').removeAttr('disabled');\n    curRecord.find('select').removeAttr('disabled');\n\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_cate = curRecord.find('.server_cate').val();\n    var app_port = curRecord.find('.app_port').val();\n\n    //保存旧值\n    curRecord.attr('data-old-ip',server_ip);\n    curRecord.attr('data-old-port',server_port);\n    curRecord.attr('data-old-cate',server_cate);\n    curRecord.attr('data-old-app-port',app_port);\n\n    return false;\n});\n// 取消编辑\n$('#user_env_table').on('click','.env_cancel_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    curRecord.removeClass('env_edit_status');\n\n    curRecord.find('input').attr('disabled','disabled');\n    curRecord.find('select').attr('disabled','disabled');\n\n    //显示旧值\n    var server_ip = curRecord.attr('data-old-ip');\n    var server_port = curRecord.attr('data-old-port');\n    var server_cate = curRecord.attr('data-old-cate');\n    var app_port = curRecord.attr('data-old-app-port');\n\n    if (server_ip || server_port || server_cate || app_port){\n        var envName = curRecord.find('.server_ip').val(server_ip);\n        var envKey = curRecord.find('.server_port').val(server_port);\n        var envVal = curRecord.find('.server_cate').val(server_cate);\n        curRecord.find('.app_port').val(app_port);\n    }else{\n        curRecord.remove();\n    }\n\n    return false;\n});\n//删除\n$('#user_env_table').on('click','.env_del_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    var server_id = curRecord.find('.server_id').val();\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_active = curRecord.find('.server_active').attr('data');\n    console.log(server_id);\n    if (server_id){\n        var url = BLUEKING.config.paas_host() + 'engine/server/' + server_id + '/';\n        var content = \"<div class='t_s14'>您确定删除该服务器吗?<br>IP : \"+server_ip+\" , Agent端口 : \"+server_port+\"</div>\";\n        var width = 340;\n        if (server_active == '1'){\n            var width = 440;\n            content += \"<div style='color:red;margin-top: 10px;font-size: 14px;font-weight: bold;'>该服务器已经激活，删除后将不能在该机器上部署应用<br>请确认不再使用后再删除</div>\"\n        }\n        art.dialog({\n            title: \"删除确认\",\n            width: width,\n            icon: 'question',\n            lock: true,\n            content: content,\n            ok: function(){\n                art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: '正在进行删除操作，请稍后...'});\n                $.ajax({\n                  url: url,\n                  type: \"DELETE\",\n                  success: function(data){\n                            art.dialog({id: 'bktips'}).close();\n                            if(data.result){\n                                art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: data.message}).time(1);\n                                curRecord.remove();\n                            }else{\n                                art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message});\n                            }\n                  },\n                })\n            },\n            cancel: function(){},\n            okVal: \"确认删除\",\n            cancelVal: \"取消\"\n        });\n    }\n});\n//激活服务器\n$('#user_env_table').on('click','.env_active_btn',function(){\n    var curButon = $(this).closest('.env_active_btn');\n    var curRecord = $(this).closest('.env_record');\n    var server_id = curRecord.find('.server_id').val();\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_active = curRecord.find('.server_active').attr('data');\n    if (server_id){\n        var url = BLUEKING.config.paas_host() + 'engine/server/active/';\n        var content = \"<div class='t_s14'>正在检测服务器上的agent状态，请稍后....<br><br>IP : \"+server_ip+\" , Agent端口 : \"+server_port+\"</div>\";\n        art.dialog({id: 'bktips', width: 450, height:200, icon: 'face-smile',lock: true,content: content});\n        $.post(url,\n               {server_id:server_id},\n               function(data){\n                    art.dialog({id: 'bktips'}).close();\n                    if(data.result){\n                        art.dialog({id: 'bktips',icon: 'succeed',lock: true,content: data.message}).time(1);\n                        curRecord.find('.server_active').attr('data', '1');\n                        curRecord.find('.server_active').text('是');\n                        curButon.removeClass('env_active_btn').addClass('env_refresh_btn').html('<span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span>');\n                        //curButon.remove();\n                    }else{\n                        art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message}).time(3);\n                    }\n               }, 'json')\n    }\n});\n\n//刷新服务器状态\n$(\"#user_env_table\").on('click', '.env_refresh_btn', function(){\n    var curButon = $(this).closest('.env_refresh_btn');\n    var curRecord = $(this).closest('.env_record');\n    var server_id = curRecord.find('.server_id').val();\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_active = curRecord.find('.server_active').attr('data');\n    if(server_id){\n        var url = BLUEKING.config.paas_host() + 'engine/server/refresh/';\n        var content = \"<div class='t_s14'>正在刷新服务器上的agent状态，请稍后....<br><br>IP : \"+server_ip+\" , Agent端口 : \"+server_port+\"</div>\";\n        art.dialog({id: 'bktips', width: 450, height:200, icon: 'face-smile',lock: true,content: content});\n        $.post(url,\n               {server_id:server_id},\n               function(data){\n                    art.dialog({id: 'bktips'}).close();\n                    if(data.result){\n                        // 服务器已经激活\n                        art.dialog({id: 'bktips',icon: 'succeed',lock: true,content: data.message}).time(1);\n                        curRecord.find('.server_active').attr('data', '1');\n                        curRecord.find('.server_active').text('是');\n                        curButon.removeClass('env_active_btn').addClass('env_refresh_btn').html('<span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span>');\n                        curButon.attr('title', '刷新');\n                    }else{\n                        // 服务器未激活\n                        art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n                        curRecord.find('.server_active').attr('data', '0');\n                        curRecord.find('.server_active').text('否');\n                        curButon.removeClass('env_refresh_btn').addClass('env_active_btn').html('<span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span>');\n                        curButon.attr('title', '激活')\n                    }\n\n                    // if(data.result){\n                    //     if(data.code=='0'){\n                    //         // 服务器已经激活\n                    //         art.dialog({id: 'bktips',icon: 'succeed',lock: true,content: data.message}).time(1);\n                    //         curRecord.find('.server_active').attr('data', '1');\n                    //         curRecord.find('.server_active').text('是');\n                    //         curButon.removeClass('env_active_btn').addClass('env_refresh_btn').html('<span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span>');\n                    //         curButon.attr('title', '刷新');\n                    //     }else{\n                    //         // 服务器未激活\n                    //         art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n                    //         curRecord.find('.server_active').attr('data', '0');\n                    //         curRecord.find('.server_active').text('否');\n                    //         curButon.removeClass('env_refresh_btn').addClass('env_active_btn').html('<span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span>');\n                    //         curButon.attr('title', '激活')\n                    //     }\n                    // }else{\n                    //     art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n                    // }\n\n        }, 'json')\n    }\n})\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_engine_third.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/*\n * 服务器信息相关\n */\n //添加变量\n$('.env_add_btn').on('click',function(){\n    var tpl = [\n                '<tr class=\"env_record env_edit_status\">',\n                '<input  type=\"hidden\" class=\"server_id\" disabled value=\"\" />',\n                '    <td>',\n                '       <input class=\"form-control server_ip\"  value=\"\" placeholder=\"请输入服务器IP\"/>' ,\n                '    </td>',\n                '    <td>',\n                '       <input type=\"number\" min=\"1\" max=\"65535\" class=\"form-control server_port\"  value=\"15672\" placeholder=\"请输入端口\"/>' ,\n                '    </td>',\n                '    <td>',\n                '           <input class=\"form-control username\" value=\"\" placeholder=\"请输入用户名\"/>',\n                '    </td>',\n                '    <td>',\n                '        <input class=\"form-control password\" value=\"\" placeholder=\"请输入密码\"/>',\n                '    </td>',\n                '    <td>',\n                '       <select class=\"form-control server_cate\"  placeholder=\"请选择服务器类型\">' ,\n                '           <option value=\"rabbitmq\">RabbitMQ服务</option>',\n                '       <\\select>',\n                '    </td>',\n                '    <td>',\n                '        <span class=\"server_active\">否</span>',\n                '    </td>',\n                '    <td>',\n                '    <button type=\"button\" class=\"btn-info btn-xs env_save_btn\">保存</button>',\n                '       <button type=\"button\" class=\"btn-xs env_cancel_btn\">取消</button> ',\n                '  <a href=\"###\" title=\"编辑\" class=\"dev_env_opera env_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>',\n                '  <a href=\"###\" title=\"删除\" class=\"dev_env_opera env_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>',\n                '  <a href=\"###\" title=\"激活\" class=\"dev_env_opera env_active_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span></a>',\n                '    </td>',\n                '</tr>'\n              ].join('');\n\n        $('#no_record_row').hide();\n        $('#user_env_table').append($(tpl));\n    return false;\n});\n// 保存\n$('#user_env_table').on('click','.env_save_btn',function(){\n    var btn_obj = $(this);\n    var curRecord = $(this).closest('.env_record');\n    var server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var username = curRecord.find('.username').val();\n    var password = curRecord.find('.password').val();\n    var server_cate = curRecord.find('.server_cate').val();\n    var server_id = curRecord.find('.server_id').val();\n    //var recordId =  $(this).val();\n    if (!server_ip){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的IP地址'}).time(1);\n        curRecord.find('.server_ip').focus();\n        return false;\n    }\n    if (!UTILS.isInt(server_port) || parseInt(server_port) < 0 || parseInt(server_port) > 65535){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的端口'}).time(1);\n        curRecord.find('.server_port').focus();\n        return false;\n    }\n    if (!username){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的用户名'}).time(1);\n        curRecord.find('.username').focus();\n        return false;\n    }\n    if (!password){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请输入正确的密码'}).time(1);\n        curRecord.find('.password').focus();\n        return false;\n    }\n    if (password.match(/[\\u3400-\\u9FBF]/)) {\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '密码不能包含中文字符'}).time(1);\n        curRecord.find('.password').focus();\n        return false;\n    }\n    if (!server_cate){\n        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '请选择服务器类型'}).time(1);\n        curRecord.find('.server_cate').focus();\n        return false;\n    }\n    if (server_id){\n        // 有记录id则进行修改\n        var url = BLUEKING.config.paas_host() + 'engine/external_server/';\n        $.post(url,\n                {\n                'server_ip': server_ip,\n                'server_port': server_port,\n                'username': username,\n                'password': password,\n                'server_cate': server_cate,\n                'server_id': server_id\n               },\n               function(data,status){\n                    if(status == \"success\"){\n                        if (data.result){\n                            art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: '保存成功'}).time(1);\n                            curRecord.find('input').attr('disabled','disabled');\n                            curRecord.find('select').attr('disabled','disabled');\n                            curRecord.removeClass('env_edit_status');\n                        }else{\n                            art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message});\n                        }\n                    }else{\n                        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '保存失败'});\n                    };\n               }\n        ,'json');\n    }else{\n        // 没有记录id则进行添加\n        var url = BLUEKING.config.paas_host() + 'engine/external_server/';\n        $.post(url,\n               {\n                'server_ip': server_ip,\n                'server_port': server_port,\n                'username': username,\n                'password': password,\n                'server_cate': server_cate\n               },\n               function(data, status){\n                    if(status == \"success\"){\n                        if (data.result){\n                            art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: '添加成功'}).time(1);\n                            server_data = data.data\n                            curRecord.find('.server_id').val(server_data.server_id);\n\n                            curRecord.find('input').attr('disabled','disabled');\n                            curRecord.find('select').attr('disabled','disabled');\n                            curRecord.removeClass('env_edit_status');\n                        }else{\n                            art.dialog({id: 'bktips', width: 400,icon: 'error',lock: true,content: data.message});\n                            //curRecord.remove();\n                        }\n                    }else{\n                        art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: '添加失败'});\n                        //curRecord.remove();\n                    };\n               }\n        ,'json');\n    }\n    return false;\n});\n//编辑\n$('#user_env_table').on('click','.env_edit_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    curRecord.addClass('env_edit_status');\n    curRecord.find('input').removeAttr('disabled');\n    curRecord.find('select').removeAttr('disabled');\n\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_cate = curRecord.find('.server_cate').val();\n    var username = curRecord.find('.username').val();\n    var password = curRecord.find('.password').val();\n\n    //保存旧值\n    curRecord.attr('data-old-ip',server_ip);\n    curRecord.attr('data-old-port',server_port);\n    curRecord.attr('data-old-cate',server_cate);\n    curRecord.attr('data-old-username',username);\n    curRecord.attr('data-old-password', password);\n\n    return false;\n});\n// 取消编辑\n$('#user_env_table').on('click','.env_cancel_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    curRecord.removeClass('env_edit_status');\n\n    curRecord.find('input').attr('disabled','disabled');\n    curRecord.find('select').attr('disabled','disabled');\n\n    //显示旧值\n    var server_ip = curRecord.attr('data-old-ip');\n    var server_port = curRecord.attr('data-old-port');\n    var server_cate = curRecord.attr('data-old-cate');\n    var username = curRecord.attr('data-old-username');\n    var password = curRecord.attr('data-old-password');\n\n    if (server_ip || server_port || server_cate || username || password){\n        curRecord.find('.server_ip').val(server_ip);\n        curRecord.find('.server_port').val(server_port);\n        curRecord.find('.server_cate').val(server_cate);\n        curRecord.find('.username').val(username);\n        curRecord.find('.password').val(password);\n    }else{\n        curRecord.remove();\n    }\n\n    return false;\n});\n//删除\n$('#user_env_table').on('click','.env_del_btn',function(){\n    var curRecord = $(this).closest('.env_record');\n    var server_id = curRecord.find('.server_id').val();\n    var server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_active = curRecord.find('.server_active').attr('data');\n    if (server_id){\n        var url = BLUEKING.config.paas_host() + 'engine/external_server/' + server_id +'/';\n        var content = \"<div class='t_s14'>您确定删除该服务器吗?<br>IP : \"+server_ip+\" , 端口 : \"+server_port+\"</div>\";\n        var width = 340;\n        if (server_active == '1'){\n            var width = 460;\n            content += \"<div style='color:red;margin-top: 10px;font-size: 14px;font-weight: bold;'>该服务器已经激活，删除后应用中的celery任务将不能正常执行<br>请确认不再使用后再删除</div>\"\n        }\n        art.dialog({\n            title: \"删除确认\",\n            width: width,\n            icon: 'question',\n            lock: true,\n            content: content,\n            ok: function(){\n                art.dialog({id: 'bktips', width: 300,icon: 'warning',lock: true,content: '正在进行删除操作，请稍后...'});\n                $.ajax({\n                  url: url,\n                  type: \"DELETE\",\n                  success: function(data){\n                            art.dialog({id: 'bktips'}).close();\n                            if(data.result){\n                                art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: data.message}).time(1);\n                                curRecord.remove();\n                            }else{\n                                art.dialog({id: 'bktips', width: 300,icon: 'error',lock: true,content: data.message}).time(3);\n                            }\n                  },\n                })\n            },\n            cancel: function(){},\n            okVal: \"确认删除\",\n            cancelVal: \"取消\"\n        });\n    }\n});\n//激活服务器\n$('#user_env_table').on('click','.env_active_btn',function(){\n    var curButon = $(this).closest('.env_active_btn');\n    var curRecord = $(this).closest('.env_record');\n    var server_id = curRecord.find('.server_id').val();\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_active = curRecord.find('.server_active').attr('data');\n    console.log(server_id);\n    if (server_id){\n        var url = BLUEKING.config.paas_host() + 'engine/external_server/active/';\n        var content = \"<div class='t_s14'>正在检测服务器状态，请稍后....<br><br>IP : \"+server_ip+\" , 端口 : \"+server_port+\"</div>\";\n        art.dialog({id: 'bktips', width: 450, height:200, icon: 'face-smile',lock: true,content: content});\n        $.post(url,\n               {server_id:server_id},\n               function(data){\n                    art.dialog({id: 'bktips'}).close();\n                    if(data.result){\n                        art.dialog({id: 'bktips',icon: 'succeed',lock: true,content: data.message}).time(1);\n                        curRecord.find('.server_active').attr('data', '1');\n                        curRecord.find('.server_active').text('是');\n                        curButon.removeClass('env_active_btn').addClass('env_refresh_btn').html('<span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span>');\n                        //curButon.remove();\n                    }else{\n                        art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n            }\n        }, 'json')\n    }\n});\n\n//刷新服务器状态\n$(\"#user_env_table\").on('click', '.env_refresh_btn', function(){\n    var curButon = $(this).closest('.env_refresh_btn');\n    var curRecord = $(this).closest('.env_record');\n    var server_id = curRecord.find('.server_id').val();\n    var  server_ip = curRecord.find('.server_ip').val();\n    var server_port = curRecord.find('.server_port').val();\n    var server_active = curRecord.find('.server_active').attr('data');\n    if(server_id){\n        var url = BLUEKING.config.paas_host() + 'engine/external_server/refresh/';\n        var content = \"<div class='t_s14'>正在刷新服务器上的agent状态，请稍后....<br><br>IP : \"+server_ip+\" , Agent端口 : \"+server_port+\"</div>\";\n        art.dialog({id: 'bktips', width: 450, height:200, icon: 'face-smile',lock: true,content: content});\n        $.post(url,\n               {server_id:server_id},\n               function(data){\n                    art.dialog({id: 'bktips'}).close();\n                        if(data.result){\n                            // 服务器已经激活\n                            art.dialog({id: 'bktips',icon: 'succeed',lock: true,content: data.message}).time(1);\n                            curRecord.find('.server_active').attr('data', '1');\n                            curRecord.find('.server_active').text('是');\n                            curButon.removeClass('env_active_btn').addClass('env_refresh_btn').html('<span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span>');\n                            curButon.attr('title', '刷新');\n                        }else{\n                            // 服务器未激活\n                            art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n                            curRecord.find('.server_active').attr('data', '0');\n                            curRecord.find('.server_active').text('否');\n                            curButon.removeClass('env_refresh_btn').addClass('env_active_btn').html('<span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span>');\n                            curButon.attr('title', '激活')\n                        }\n\n                    // if(data.result){\n                    //     if(data.code=='0'){\n                    //         // 服务器已经激活\n                    //         art.dialog({id: 'bktips',icon: 'succeed',lock: true,content: data.message}).time(1);\n                    //         curRecord.find('.server_active').attr('data', '1');\n                    //         curRecord.find('.server_active').text('是');\n                    //         curButon.removeClass('env_active_btn').addClass('env_refresh_btn').html('<span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span>');\n                    //         curButon.attr('title', '刷新');\n                    //     }else{\n                    //         // 服务器未激活\n                    //         art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n                    //         curRecord.find('.server_active').attr('data', '0');\n                    //         curRecord.find('.server_active').text('否');\n                    //         curButon.removeClass('env_refresh_btn').addClass('env_active_btn').html('<span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span>');\n                    //         curButon.attr('title', '激活')\n                    //     }\n                    // }else{\n                    //     art.dialog({id: 'bktips',width: 450, height:200, icon: 'error',lock: true,content: data.message});\n                    // }\n        }, 'json')\n    }\n})\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_release.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/*\n * app发布相关\n */\nREL_MANAGER = (function(){\n  return {\n    // 删除app\n    app_del: function(obj, app_code){\n      var app_del_url = BLUEKING.config.paas_host() + 'release/'+app_code+'/delete/';\n      art.dialog({\n        title: \"删除确认\",\n        width: 300,\n        icon: 'question',\n        lock: true,\n        content: \"<div class='t_s14'>您确定要删除应用“\"+app_code+\"”吗?</div>\",\n        ok: function(){\n          art.dialog({id: 'bktips',width: 300,icon: 'warning', lock: true,content: '正在进行删除操作，请稍后...'});\n          $.post(app_del_url, function(data){\n            if(data.result){\n              art.dialog({id: 'bktips'}).close();\n              window.location.href = BLUEKING.config.paas_host() + 'app/list/';\n            }else{\n              art.dialog({\n                id: 'bktips',\n                title: \"温馨提示\",\n                width: 340,\n                icon: 'error',\n                lock: true,\n                content: data.message,\n                ok: function(){},\n                okVal: \"关闭\",\n              });\n            }\n          }, 'json');\n        },\n        cancel: function(){},\n        okVal: \"确定\",\n        cancelVal: \"取消\"\n      });\n    },\n    // 删除 SaaS 应用\n    saas_app_del: function(obj, app_code){\n      var app_del_url = BLUEKING.config.paas_host() + 'saas/'+app_code+'/delete/';\n      art.dialog({\n        title: \"删除确认\",\n        width: 300,\n        icon: 'question',\n        lock: true,\n        content: \"<div class='t_s14'>您确定要删除应用“\"+app_code+\"”吗?</div>\",\n        ok: function(){\n          art.dialog({id: 'bktips', width: 300,icon: 'warning', lock: true,content: '正在进行删除操作，请稍后...'});\n          $.post(app_del_url, function(data){\n            if(data.result){\n              art.dialog({id: 'bktips'}).close();\n              window.location.href = BLUEKING.config.paas_host() + 'saas/list/';\n            }else{\n              art.dialog({id: 'bktips'}).close();\n              art.dialog({\n                id: 'bktips',\n                title: \"温馨提示\",\n                width: 340,\n                icon: 'error',\n                lock: true,\n                content: data.message,\n                ok: function(){},\n                okVal: \"关闭\",\n              });\n            }\n          }, 'json');\n        },\n        cancel: function(){},\n        okVal: \"确定\",\n        cancelVal: \"取消\"\n      });\n    },\n    // app提测\n    app_test: function(obj, app_code){\n      //按钮灰掉\n      if ($(obj).hasClass('btn-disabled')){\n        return false;\n      }\n\n      //组装参数\n      var is_use_celery = $(\"#is_use_celery\").attr(\"checked\")\n      var is_use_celery_beat = $(\"#is_use_celery_beat\").attr(\"checked\")\n      var form_data = {is_use_celery: is_use_celery,\n                       is_use_celery_beat: is_use_celery_beat};\n      var test_url = BLUEKING.config.paas_host() + 'release/'+app_code+'/test/';\n      // 提交测试部署任务\n      REL_MANAGER._app_release_task(obj, app_code, test_url, form_data, 1);\n    },\n\n    // app上线\n    app_online: function(obj, app_code){\n      //按钮灰掉\n      if ($(obj).hasClass('btn-disabled')){\n        return false;\n      }\n\n      var tips = $(\"#is_tips\").attr('checked');\n      var is_tips = tips ? '1' : '0';\n      var features = $('#features').val();\n      var bugs = $('#bugs').val();\n\n      //组装参数\n      var form_data = {\n        'is_tips': is_tips,\n        'features': features,\n        'bugs': bugs,\n      };\n      var online_url = BLUEKING.config.paas_host() + 'release/'+app_code+'/online/';\n      //上线操作\n      REL_MANAGER._app_release_task(obj, app_code, online_url, form_data, 2);\n    },\n    // app下架\n    app_offline: function(obj, app_code){\n      //获取表单信息\n      var t_check = $(\"#t_check\").attr('checked');\n      var o_check = $(\"#o_check\").attr('checked');\n      $('#offline_form_error').html('').hide();\n\n      //按钮灰掉\n      if ($(obj).hasClass('btn-disabled')){\n        return false;\n      }\n\n      if(!t_check && !o_check){\n        $('#offline_form_error').text('请选择下架环境！').show();\n        return false;\n      }\n\n      var mode = 'all';\n      if(t_check && o_check){\n        mode = 'all';\n      }else if(t_check){\n        mode = 'test';\n      }else if(o_check){\n        mode = 'prod';\n      }\n      var form_data = {'mode': mode};\n      var offline_url = BLUEKING.config.paas_host() + 'release/'+app_code+'/offline/';\n      // 下架操作\n      REL_MANAGER._app_release_task(obj, app_code, offline_url, form_data, 3);\n    },\n\n    /*\n     * 操作任务\n     * @param url: 访问的url\n     * @param app_code: app编码\n     * @param form_data: 参数\n     * @param app_state: 1:上线部署，2：测试部署， 3：下架\n     */\n    _app_release_task: function(obj, app_code, url, form_data, app_state){\n      if(app_state== 1){\n        $('#release_msg_test').parent().parent().hide();\n      }else if(app_state == 2){\n        $('#release_msg_pro').parent().parent().hide();\n      }else{\n        $('#release_msg_offline').parent().parent().hide();\n      }\n\n      var tips_msg = '';\n\n      var _env = '';\n      if (app_state == 1) {\n        _env = '上线部署';\n      } else if (app_state == 2){\n        _env = '测试部署';\n      } else {\n        _env = '下架';\n      }\n      // var _env = app_state==2? '上线': '测试';\n      tips_msg = '<div class=\"ml30\"><span style=\"font-size: 16px;margin-left:30px;\"><i class=\"icon-loading mr10\"></i>正在提交' + _env + '请求，请稍后...</div>';\n\n      // 部署流程图显示\n      $(\"#release-flow-before\").hide();\n      $(\"#tips_info\").html(\"\");\n      $(\"#tips_info\").show();\n      $(\"#deploy_input\").hide();\n      $(\"#release-flow-before\").html(tips_msg);\n      $(\"#release-flow-before\").show();\n\n      //部署请求操作\n      $.post(url, {\n        'form_data': JSON.stringify(form_data)\n      },function(data){\n        //部署任务提交失败\n        if(!data.result){\n          REL_MANAGER.back();\n\n          var _operate = '';\n          if(app_state == 1){\n            _operate = '测试部署';\n          }else if(app_state == 2){\n            _operate = '上线部署';\n          }else{\n            _operate = '下架';\n          }\n          // TODO: maybe show message here\n          var msg_bk = \"<p><span class='icon forbid'></span><strong class='fail'>\" + _operate + \"操作执行失败，错误详情：</strong></span>\" +\"<div class='streamline'> <pre>\"+data.message+\"</pre></div>\";\n\n          if(app_state == 1){\n            $('#release_msg_test').html(msg_bk).parent().parent().show();\n          }else if(app_state == 2){\n            $('#release_msg_pro').html(msg_bk).parent().parent().show();\n          }else{\n            $('#release_msg_offline').html(msg_bk).parent().parent().show();\n          }\n\n          //显示部署操作按钮\n          $('button[n_btn=deploy]').parent().find('span[n_m=run]').remove();\n          $('button[n_btn=deploy]').show();\n          $('button[n_btn=deploy]').removeAttr(\"disabled\");\n          // 显示SaaS部署操作按钮\n          $('button[n_btn=saas_deploy]').removeAttr(\"disabled\");\n        }else if(data.result){\n          // 轮询执行结果\n          var event_id = data.event_id;\n          REL_MANAGER._app_to_poll_task(obj, app_code, data, app_state, form_data);\n        }\n      }, 'json');\n    },\n    // 用户确认下架\n    confirm_saas_app_offline: function(obj, app_code){\n      art.dialog({\n            title: \"温馨提示\",\n            width: 340,\n            icon: 'warning',\n            lock: true,\n            content: \"<span>您确认下架该应用吗?<br><br>下架后用户将无法访问该应用<br>但应用的数据库依然保留</span>\",\n            ok: function(){\n              var form_data = {'mode': 'prod'};\n              var offline_url = BLUEKING.config.paas_host() + 'release/'+app_code+'/offline/';\n              $(obj).attr({\"disabled\":\"disabled\"});\n              REL_MANAGER._app_release_task(obj, app_code, offline_url, form_data, 3);\n            },\n            okVal: \"确认\",\n            cancelVal: \"取消\",\n            cancel:function(){}\n      });\n    },\n    // 用户确认是否重新部署\n    confirm_saas_app_online: function(obj, app_code, saas_app_version_id, app_state){\n      // 新创建应用（app_state为空）、state为 0（开发中）、1（已下架）不提示用户,直接部署\n      if(!app_state || app_state=='0' || app_state == '1'){\n        REL_MANAGER.saas_app_online(obj, app_code, saas_app_version_id);\n      }else{\n        var cur_file = $('.import-file-name').text();\n        var online_file = $('.import-file-name').attr('online_file');\n        art.dialog({\n            title: \"温馨提示\",\n            width: 400,\n            icon: 'warning',\n            lock: true,\n            content: \"<span>您确认重新部署该应用吗?<br><br>线上运行版本：\"+online_file+\"<br>您要部署的版本：\"+cur_file+\"</span>\",\n            ok: function(){\n              REL_MANAGER.saas_app_online(obj, app_code, saas_app_version_id);\n            },\n            okVal: \"确认\",\n            cancelVal: \"取消\",\n            cancel:function(){}\n        });\n      }\n    },\n    // 部署saas 应用\n    saas_app_online: function(obj, app_code, saas_app_version_id){\n      //按钮灰掉\n      $(obj).attr({\"disabled\":\"disabled\"})\n      var saaa_online_url = BLUEKING.config.paas_host() + 'saas/'+app_code+'/release/online/'+saas_app_version_id+'/';\n\n      tips_msg = '<div class=\"ml30\"><span style=\"font-size: 16px;margin-left:30px;\"><i class=\"icon-loading mr10\"></i>正在提交部署请求，请稍后...</div>';\n\n      // 部署流程图显示\n      $(\"#release-flow-before\").hide();\n      $(\"#tips_info\").html(\"\");\n      $(\"#tips_info\").show();\n      $(\"#deploy_input\").hide();\n      $(\"#release-flow-before\").html(tips_msg);\n      $(\"#release-flow-before\").show();\n      $('#release_msg_pro').parent().parent().hide();\n      //部署请求操作\n      $.post(saaa_online_url, function(data){\n        //部署任务提交失败\n        if(!data.result){\n          REL_MANAGER.back();\n\n          var msg_bk = \"<p><span class='icon forbid'></span><strong class='fail'>部署操作执行失败，错误详情：</strong></span>\" +\"<div class='streamline'> <pre>\"+data.message+\"</pre></div>\";\n          $('#release_msg_pro').html(msg_bk).parent().parent().show();\n          //显示部署操作按钮\n          $('#saas_app_online').removeAttr(\"disabled\");\n        }else if(data.result){\n          // 轮询执行结果\n          var event_id = data.event_id;\n          var app_code = data.app_code;\n          REL_MANAGER._app_to_poll_task(obj, app_code, data, 2, {});\n        }\n      }, 'json');\n    },\n    /*\n     * 任务轮询\n     * @param app_code: app编码\n     * @param data_operate: 操作数据\n     * @param operate_type: 操作类型\n     * @param app_state: app操作状态，0：删除，1：提测，2：上线，3：下架\n     */\n    _app_to_poll_task: function(obj, app_code, data_operate, app_state, form_data){\n      var poll_url = '';\n\n      poll_url = BLUEKING.config.paas_host() + 'release/'+app_code+'/task/';\n      // 获取提测轮询任务数据\n      $.get(poll_url, {\n        'event_id': data_operate.event_id,\n        'app_state': app_state\n      }, function(resp){\n\n        data = resp.data\n        html_data = data.html;\n\n        // 展示过程流程图\n        // $(\"#release-flow\").html(data.data);\n        $(\"#release-flow\").html(html_data);\n        if($(\"#release-flow-before\").is(\":hidden\") === false){\n          $(\"#release-flow-before\").hide();\n        }\n        if($(\"#release-flow\").is(\":hidden\")){\n          $(\"#release-flow\").show();\n        }\n\n        if(data.status === 0){ //失败\n          REL_MANAGER._app_operate_fail(obj, app_code, data, app_state, form_data);\n        }else if(data.status == 1){//成功\n          REL_MANAGER._app_operate_success(obj, app_code, data, app_state, form_data);\n        }else{//轮询\n          window.setTimeout(function(){REL_MANAGER._app_to_poll_task(obj, app_code, data_operate, app_state, form_data)}, 2*1000);\n        }\n      }, 'json');\n    },\n\n    /*\n     * 执行失败\n     */\n    _app_operate_fail: function(obj, app_code, data, app_state, form_data){\n      // 暂时不需要这个效果\n      // var msg_bk = '';\n      // console.log(app_state);\n      // if(app_state == 1){\n        // msg_bk = \"<div class='mt5' style='font-size:14px;padding:5px;background-color:#FFF;;font-family:Microsoft YaHei'><span class='icon forbid'></span>测试部署操作执行失败，请查看详细错误信息：<br/></div>\";\n      // }else if(app_state == 2){\n        // msg_bk = \"<div class='mt5' style='font-size:14px;padding:5px;background-color:#FFF;;font-family:Microsoft YaHei'><span class='icon forbid'></span>上线部署操作执行失败，请查看详细错误信息：<br/></div>\";\n      // }else{\n        // msg_bk = \"<pre class='mt5' style='font-size:14px;padding:5px;background-color:#FFF;;font-family:Microsoft YaHei'><span class='icon forbid'></span>下架操作执行失败，请查看详细错误信息：<br/>\"+data.message+\"</pre>\";\n      // }\n      // $('.appstate').html('');\n      // $('button[n_btn=deploy]').removeClass('disabled');\n      // $(\"#tips_info\").html(msg_bk);\n      // SaaS应用部署失败，可重新操作\n      $('button[n_btn=saas_deploy]').removeClass('disabled');\n      $('button[n_btn=saas_deploy]').removeAttr('disabled');\n    },\n\n    /*\n     * 执行成功\n     * @param app_code: app编码\n     * @param data: 返回数据\n     * @param app_state: 操作状态,1： 测试，2：上线\n     * @param form_data: 表单数据\n     */\n    _app_operate_success: function(obj, app_code, data, app_state, form_data){\n      $(\"#deploy_apply div[apply]\").hide();\n      $('#error_dev').html('');\n      $('#app_del').remove();\n\n      REL_MANAGER.refresh_app_state(obj, app_state, data, form_data);\n      //刷新快捷入口信息\n      BASE_APP.refresh_app_status(app_code);\n\n      // 特性信息填写\n      $('textarea[name=features], textarea[name=bugs]').val('');\n      $('#is_tips').removeAttr('checked');\n\n      //提测操作成功提示\n      $('.appstate').html('');\n      $('button[n_btn=deploy]').removeClass('disabled');\n      $('button[n_btn=deploy]').removeAttr('disabled');\n\n      //其他操作状态修改\n      if(app_state == 1){ //测试\n        REL_MANAGER._modify_online_state('show');\n        // 下架操作打开\n        REL_MANAGER._modify_offline_state('show');\n      } else if(app_state == 2){//上线\n\n        REL_MANAGER._modify_online_state('hide', false, '<span aria-hidden=\"true\" class=\"glyphicon glyphicon-info-sign\"></span>应用已上线，请重新测试部署后，再执行正式部署操作！');\n        REL_MANAGER._modify_offline_state('show');\n\n      } else {//下架\n        // 下架成功切换按钮和选项状态\n        var mode = form_data.mode;\n        var t_check = $(\"#t_check\");\n        var o_check = $(\"#o_check\");\n        if (mode == 'all') {\n          t_check.attr(\"checked\", false);\n          t_check.attr(\"disabled\", true);\n\n          o_check.attr(\"checked\", false);\n          o_check.attr(\"disabled\", true);\n\n        } else if (mode == 'test') {\n          t_check.attr(\"checked\", false);\n          t_check.attr(\"disabled\", true);\n\n        } else if (mode == 'prod') {\n          o_check.attr(\"checked\", false);\n          o_check.attr(\"disabled\", true);\n        }\n        if (t_check.attr(\"disabled\") && o_check.attr(\"disabled\")) {\n          $(obj).addClass('btn-disabled');\n          REL_MANAGER._modify_offline_state('hide');\n        }\n\n        if(mode == 'all' || mode == 'prod'){\n          REL_MANAGER._modify_online_state('hide', false, '<span aria-hidden=\"true\" class=\"glyphicon glyphicon-info-sign\"></span>应用已下架，请您重新测试部署后，再进行正式部署操作！');\n        }else{\n          //测试环境下架 可以进行正式部署\n        }\n\n      }\n    },\n\n    _modify_online_state: function(state, is_show_tab, msg){\n      //上线状态栏关闭\n      if(state == 'hide'){\n        if(!is_show_tab){\n          $('#deploy_tab li[data-id=online_form]').addClass('disabled_status');\n          $('#deploy_tab li[data-id=online_form] span').show();\n          $('#deploy_tab li[data-id=online_form] a').attr('title', '请重新测试部署后，再进行正式部署！');\n        }\n        //上线操作按钮禁止\n        $(\"#app_online, #create_new_ver\").addClass('disabled');\n        $(\"#app_online\").removeAttr('id');\n        $(\"#create_new_ver\").removeAttr('id');\n        $(\"#online_form_error\").html(msg).show();\n      }else if(state == 'show'){\n        $('#deploy_tab li[data-id=online_form]').removeClass('disabled_status');\n        $('#deploy_tab li[data-id=online_form] a').removeAttr('title');\n        $('#deploy_tab li[data-id=online_form] span').hide();\n      }\n    },\n\n    _modify_offline_state: function(state){\n      //下架栏操作打开\n      if (state == 'show'){\n        $('#deploy_tab li[data-id=offline_form]').removeClass('disabled_status');\n        $('#deploy_tab li[data-id=offline_form] a').removeAttr('title');\n        $('#deploy_tab li[data-id=offline_form] span').hide();\n      } else if (state == 'hide') {\n        $('#deploy_tab li[data-id=offline_form]').addClass('disabled_status');\n        $('#deploy_tab li[data-id=offline_form] a').attr('title', '请测试部署后，再进行正式部署');\n        $('#deploy_tab li[data-id=offline_form] span').show();\n      }\n    },\n\n    //修改app的环境状态\n    refresh_app_state: function(obj, app_state, data, form_data){\n      if (app_state == 1){\n        $('#test_state').html(\n          '<a href=\"'+data.app_test_url+'\" target=\"_blank\">' +'<span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-right\"></span>马上访问' +'</a>'\n        );\n        $('span[name_state=test]').text('正在运行').removeClass('status_normal').addClass('status_success');\n      }else if(app_state == 2){\n        $('#pro_state').html(\n          '<a href=\"'+data.app_prod_url+'\" target=\"_blank\">' +'<span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-right\"></span>马上访问' +'</a>'\n        );\n        $('span[name_state=pro]').text('正在运行').removeClass('status_normal').addClass('status_success');\n      }else{\n        var env = form_data.mode;\n        var _prod_state_html = '<span class=\"glyphicon glyphicon-chevron-right ml40\" style=\"color:#999;\" data-toggle=\"tooltip\" data-placement=\"right\" title=\"应用未进行上线部署或者已经下架，访问入口关闭！\"></span>' +'马上访问';\n        var _test_state_html = '<span class=\"glyphicon glyphicon-chevron-right ml40\" style=\"color:#999;\" data-toggle=\"tooltip\" data-placement=\"right\" title=\"应用未进行测试部署或者已经下架，访问入口关闭！\"></span>' +'马上访问';\n        if (env == 'test' || env == 'all'){\n          $('#test_state').html(_test_state_html);\n          $('span[name_state=test]').text('已下架').removeClass('status_success').addClass('status_normal');\n        }\n        if (env == 'prod' || env == 'all'){\n          $('#pro_state').html(_prod_state_html);\n          $('span[name_state=pro]').text('已下架').removeClass('status_success').addClass('status_normal');\n        }\n      }\n    },\n\n    back: function() {\n      $(\"#release-flow-before\").hide();\n      $(\"#release-flow\").hide();\n      $(\"#detail_log\").hide();\n      $(\"#detail_button\").hide();\n      $(\"#detail_click\").html(\"点击查看详情\");\n      $(\"#tips_info\").hide();\n      $(\"#deploy_input\").show();\n    },\n    // 返回到SaaS应用列表页面\n    back_saas: function(){\n      window.location.href = BLUEKING.config.paas_host() + 'saas/list/';\n    },\n    get_app_release_detail: function() {\n      if($(\"#detail_log\").is(\":hidden\")){\n        $(\"#detail_log\").show();\n        var scrollTop = $(\"#detail_info\")[0].scrollHeight;\n        $(\"#detail_info\").scrollTop(scrollTop);\n        $(\"#detail_click\").html(\"点击隐藏详情\");\n      }else{\n        $(\"#detail_log\").hide();\n        $(\"#detail_click\").html(\"点击查看详情\");\n      }\n    },\n\n    // 发布部署 - 部署操作tab, 更新\n    refresh_roll: function(app_code, app_state, msg_id, show_tip, type) {\n      var url = BLUEKING.config.paas_host() + 'release/'+app_code+'/record/last_release/';\n\n      $.get(url,{},function(resp){\n        if(resp.result){\n          // $(msg_id).parent().parent().hide();\n          // var tips_msg = \"<span n_m='run' class='mr5'><i class='icon-loading mr5'></i>正在执行\" + show_tip + \"部署操作，请稍候...</span>\";\n          // //隐藏部署按钮，显示正在执行状态\n          // $('button[n_btn=deploy]').parent().append(tips_msg);\n          // $('button[n_btn=deploy]').hide();\n\n          data = resp.data;\n          // get flow div show\n          REL_MANAGER._app_to_poll_task(null, app_code, data, type, {});\n        }\n      }, 'json');\n    },\n\n    // 发布部署 - 部署操作的tab展示\n    deploy_tab_show: function(obj, first_load, app_code, app_state, msg_id, show_tip, type, static_url) {\n      var first = first_load;\n      if(obj.hasClass('disabled_status')){\n        //不做处理\n      }else{\n        var formId = obj.attr('data-id');\n        var url = BLUEKING.config.paas_host() + 'release/' + app_code +'/deploy_page/'+formId+'/';\n        $('#' + formId).html('<div style=\"text-align: center;margin-top:50px;opacity:0.2;filter:alpha(opacity=20);\"><img src=\"' + static_url + 'img/base/icon32_loading_light1e5b3a.gif\"></div>');\n        $.get(url, function(data){\n          $('#' + formId).html(data);\n\n          if (app_state == 8 || app_state == 9 || app_state == 10) {\n            if(first){\n              // NOTE: hidden here\n              $(\"#release-flow-before\").hide();\n              $(\"#tips_info\").html(\"\");\n              // $(\"#tips_info\").show();\n              $(\"#deploy_input\").hide();\n              // $(\"#release-flow-before\").show();\n\n              REL_MANAGER.refresh_roll(app_code, app_state, msg_id, show_tip, type);\n            }\n          }\n\n        });\n\n        $('#deploy_tab').find('.active').removeClass('active');\n        obj.addClass('active');\n\n        $('.deploy_content').find('div[n_form]').hide();\n        $('#' + formId).show();\n      }\n      return first;\n    },\n\n    // 版本记录搜索\n    search_app_record: function(app_code, operate_id){\n      var url = BLUEKING.config.paas_host() + 'release/' + app_code + '/record/list/'+operate_id+'/';\n      $.get(url, function(data){\n        $('#record_list').html(data);\n      });\n    },\n\n\n    // 发布记录 - 点击展示详情\n    pub_record_show: function(obj){\n      var tr_obj = obj.next('tr');\n      if (tr_obj.attr('class') == 'detail'){\n        // 显示、隐藏组件内容\n        var is_hiden = $(tr_obj).is(\":hidden\");\n        var icon_obj = obj.find('i');\n        if(is_hiden){\n          obj.next('tr').css('display', '');\n          icon_obj.removeClass(\"glyphicon-chevron-down\").addClass(\"glyphicon-chevron-up\");\n        }else{\n          obj.next('tr').css('display', 'none');\n          icon_obj.removeClass(\"glyphicon-chevron-up\").addClass(\"glyphicon-chevron-down\");\n        }\n      }\n    },\n\n    // 查询未完成任务的状态, 更新数据库\n    check_unfinished_task: function(app_code) {\n      var url = BLUEKING.config.paas_host() + 'release/' + app_code + '/task/unfinished/';\n      $.get(url, function(data){\n      });\n    },\n\n\n    // 使用/取消celery/celery_beat\n    check_use_celery: function(is_checked) {\n\t\t\tif(!is_checked){\n\t\t\t\t//提示\n\t\t\t\tart.dialog({\n\t\t\t\t\t\t\t    title: \"温馨提示\",\n\t\t\t\t\t\t\t    width: 340,\n\t\t\t\t\t\t\t    icon: 'warning',\n\t\t\t\t\t\t\t    lock: true,\n\t\t\t\t\t\t\t    content: \"<font style='color:red;'>您确认该应用没有使用celery吗？取消celery部署后，应用相关celery功能将不能使用！</font>\",\n\t\t\t\t\t\t\t    ok: function(){\n\t\t\t\t\t\t\t    \t$('#is_use_celery_beat').removeAttr('checked');\n\t\t\t\t\t\t\t    },\n\t\t\t\t\t\t\t    okVal: \"确认\",\n\t\t\t\t\t\t\t    cancelVal: \"关闭\",\n\t\t\t\t\t\t\t    cancel:function(){\n\t\t\t\t\t\t\t    \t$('#is_use_celery').attr('checked', 'checked');\n\t\t\t\t\t\t\t    }\n\t\t\t\t\t\t\t});\n\t\t\t}\n    },\n\n    check_use_celery_beat: function(is_checked) {\n\t\t\tif(is_checked){\n\t\t\t\t$('#is_use_celery').attr('checked', 'checked');\n\t\t\t}else{\n\t\t\t\tart.dialog({\n\t\t\t\t\t\t\t    title: \"温馨提示\",\n\t\t\t\t\t\t\t    width: 340,\n\t\t\t\t\t\t\t    icon: 'warning',\n\t\t\t\t\t\t\t    lock: true,\n\t\t\t\t\t\t\t    content: \"<font style='color:red;'>取消“周期性任务”部署，已有周期性任务执行将会失效！您确认取消“周期性任务”部署吗？</font>\",\n\t\t\t\t\t\t\t    ok: function(){},\n\t\t\t\t\t\t\t    okVal: \"确认\",\n\t\t\t\t\t\t\t    cancelVal: \"关闭\",\n\t\t\t\t\t\t\t    cancel:function(){\n\t\t\t\t\t\t\t    \t$('#is_use_celery_beat').attr('checked', 'checked');\n\t\t\t\t\t\t\t    }\n\t\t\t\t\t\t\t});\n\t\t\t}\n    }\n\n  };\n})();\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/paas_saas.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// 应用列表页面相关\nPAAS_LIST = (function(){\n    return{\n        // 查询列表分页的回调方法\n        _callback_fun:function(){\n          var total_app = $('#table_app thead').attr('total_app'); //获取app总数\n          $(\"#total_app\").text(total_app);\n          if(typeof(total_app) != \"undefined\"){\n            if(parseInt(total_app)==0){\n              $(\"#page\").hide();        //app个数为0时隐藏分页条\n              $(\"#app_num_div\").hide();\n              $(\"#app_num\").text(total_app);\n            }else{\n              $(\"#page\").show();        //app个数为0时显示分页条\n              $(\"#app_num_div\").show();\n              $(\"#app_num\").text(total_app);\n            }\n          }\n        },\n        // 查询App列表\n        // note:需要在之前引用 pagination.js 文件\n        search_app:function(){\n          var keyword = $.trim($(\"#search_app\").val());\n          // check keyword\n          if (keyword.indexOf('&') != -1) {\n            art.dialog({id: 'bktips',width: 300,icon: 'warning',lock: true,content: '错误的搜索参数! 参数中不能包含符号[&]'});\n            return\n          }\n          //获取当前tabid\n          var status = $('#status').val();\n          var hide_offline = $('#set_hide_offline').val();\n          //分页请求\n          var opt={\n            url:BLUEKING.config.paas_host() +'saas/list/query/?keyword='+keyword+'&'+'hide_offline='+hide_offline+'&',\n            items_per_page:8,\n            current_page:1,\n            callback:PAAS_LIST._callback_fun,\n            table_obj:'#table_app'\n          };\n          $(\"#pagination_id\").pagination(opt);\n        },\n        // 查询按钮\n        // 清空搜索条件\n        clear_search_input:function(){\n          $('#search_app').val('');\n          $(\"#close_span\").css('display', 'none');\n          $('#j_display_all_app').click();\n        }\n    }\n})()\n// 应用列表页面\n$(\"#set_hide_offline\").on('change', PAAS_LIST.search_app);\n$(\"#j_display_all_app\").on('click', PAAS_LIST.search_app);\n$(\"#close_span\").on('click', PAAS_LIST.clear_search_input);\n$(\"#search_app\").keyup(function(e){\n    var search_val = $.trim($(\"#search_app\").val());\n    if(search_val){\n          $(\"#close_span\").css('display', '');\n        }else{\n              $(\"#close_span\").css('display', 'none');\n       }\n      // 回车事件\n      if(e.keyCode=='13'){\n        $('#j_display_all_app').click();\n      }\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/pagination.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/**\n * table表格数据分页\n * @param   url                          异步获取的thead与tbody模板数据的url\n * @param   table_obj                 请求数据table对象\n * @param   items_per_page            table表格中，每页显示多少条\n * @param   current_page              当前显示页数\n * @param   callback                  处理扩展功能的回调函数\n * @param   is_select                 是否显示每页显示多少行的选择下拉框\n */\n\njQuery.fn.pagination = function(opt){\n    //初始化一些默认参数值\n    var opts = jQuery.extend({url : ''\n               ,items_per_page : 10\n               ,current_page : 1\n               ,link_to : \"###\"\n               ,num_display_items : 4      //显示多少页数后省略余下的页码\n               ,table_obj : ''\n               ,callback : function(){}\n               ,is_select : false\n               ,async : true\n               },opt||{});\n\n    var total_num                        //异步请求数据总的记录数\n        ,extends_par                    //用于table数据扩展功能的参数，例如，文件下载等\n        ,panel = $(this)               //分页条对象\n        ,loading_img = \"\"    //加载图片\n        ,is_select = opts.is_select;        //每页显示多少行的选择下拉框\n    return this.each(function(){\n        if(!$('#loading_example')[0]){\n            if($(opts.table_obj).get(0).tagName==\"TBODY\"){\n                var cols=0;\n                $(opts.table_obj).parent('table').find('thead tr:first th').each(function(){\n                    cols += $(this).attr('colspan') ? parseInt($(this).attr('colspan')) : 1;\n                });\n                $('<tr><td style=\"height:275px; padding:0\" colspan=\"'+cols+'\"><div class=\"loading_position\"><div class=\"loading_example opacity_7 hide\">'\n                +'<img class=\"loading_image\" src=\"' + loading_img + '\" title=\"正在努力加载数据。。。\" alt=\"正在努力加载数据。。。\"/></div></div></td></tr>').appendTo($(opts.table_obj));\n            }\n        }\n        if(opts.async){\n            $(\".loading_example\").show();\n            //根据url请求数据源\n            $.getJSON(opts.url+(opts.url.indexOf('?')<0?\"?page=\":\"page=\")+opts.current_page,\n              function(data){\n                // 2018-11-20, refactor, change to receive JSON response\n                //请求的字符串转换为json对象\n                // var get_data =  eval(\"(\"+data+\")\");\n                var get_data = data;\n                //请求的表格数据添加到table对象\n                $(opts.table_obj).html(get_data.data);\n                total_num = get_data.total_num;\n                extends_par = get_data.extends_par;\n                if(total_num>=0){\n                    draw_link(total_num);\n                }\n                opts.callback.call(this,extends_par);\n                $(\".loading_example\").hide();\n            });\n        }else{\n            var from = (opts.current_page - 1) * opts.items_per_page + 1;\n            var to = from + opts.items_per_page - 1;\n            var rows = $(opts.table_obj).find('tr');\n            for (var i = 1; i < rows.length; i++) { // i starts from 1 to skip table header row\n                if (i < from || i > to)\n                    rows[i].style.display = 'none';\n                else\n                    rows[i].style.display = '';\n            }\n            total_num = rows.length-1;\n            extends_par = '';\n            if(total_num>=0){\n                draw_link(total_num);\n            }\n        }\n\n        //计算有多少页数\n        function num_pages(total_num){\n            return Math.ceil(total_num/opts.items_per_page);\n        }\n\n        //根据current_page和num_display_items计算分页条开始和结束页码,返回一个数组\n        function get_interval(total_num){\n            var num_half = Math.ceil(opts.num_display_items/2);\n            var np = num_pages(total_num);\n            var upper_limit = np-opts.num_display_items;\n            var start = opts.current_page>num_half?Math.max(Math.min(opts.current_page-num_half,upper_limit),1):1;\n            var end = opts.current_page>num_half?Math.min(opts.current_page+num_half,np):Math.min(opts.num_display_items,np);\n            return [start,end];\n        }\n\n        /**\n         * 处理请求数据函数\n         * @param   page_id              当前显示页数\n         * @param   evt                  阻止浏览器冒泡事件\n         */\n        function page_selected(page_id,evt,total_num){\n            opts.current_page = page_id;\n            draw_link(total_num);\n            var continue_propagation = get_table_data(page_id, panel);\n            if(!continue_propagation){\n                if(evt.stopPropagation){\n                    evt.stopPropagation();\n                }else{\n                    evt.cancelBubble = true;\n                }\n            }\n            return continue_propagation;\n        }\n\n        //将点击页码事件与请求数据关联\n        function draw_link(total_num){\n            $('#pagination_id').show();\n            $('#page_goto').show();\n            panel.empty();\n            var interval = get_interval(total_num);\n            var np = num_pages(total_num);\n            //返回page_selected，以获取正确的页码\n            var get_clickhandler = function(page_id){\n                return function(evt){\n                    return page_selected(page_id,evt,total_num);\n                }\n            }\n            //生成页码及其绑定事件\n            var append_item = function(page_id,appendopts){\n                //计算page_id，以预防错误的page_id\n                page_id = page_id<1?1:(page_id<np?page_id:np);\n                appendopts = jQuery.extend({text:page_id, classes:\"\"}, appendopts||{});\n                if(page_id == opts.current_page){\n                    //生成当前分页码\n                    var lnk = $(\"<span class='active btn'>\"+(appendopts.text)+\"</span>\");\n                }else{\n                    //生成当前页码以外的页码，及绑定事件\n                    if(appendopts.classes!='disabled'){\n                        var lnk = $(\"<a class='btn'>\"+(appendopts.text)+\"</a>\")\n                            .bind(\"click\",get_clickhandler(page_id))\n                            .attr(\"href\",opts.link_to.replace(/__id__/,page_id));\n                    }else{\n                        var lnk = $(\"<a class='btn'>\"+(appendopts.text)+\"</a>\")\n                    }\n                }\n                if(appendopts.classes){\n                    //为生成的页码添加样式\n                    lnk.addClass(appendopts.classes);\n                }\n                panel.append(lnk);\n            }\n            //创建上一页链接\n            if(opts.current_page>1){\n                append_item(opts.current_page-1,{text:\"上一页\", classes:\"prev\"});\n            }else{\n                append_item(opts.current_page+1,{text:\"上一页\", classes:\"disabled\"});\n            }\n\n\n            if (interval[1] - interval[0] > 4){\n                interval[1] = interval[0] + 4\n                }\n            //创建中间页码的开始页\n            if(interval[0]>0){\n                //计算结束页码,\"2\"表示省略号后显示最后两页或者省略号前显示前两页\n                var end = Math.min(2,interval[0]);\n                for(var i=1; i<end; i++){\n                    append_item(i);\n                }\n                //如果中间开始页码大于2，则在第二页后添加省略页码\n                if(interval[0]>2){\n                    $(\"<span class='btn cursor_default'>...</span>\").appendTo(panel);\n                }\n            }\n            //生成中间页码\n            for(var i=interval[0];i<interval[1];i++){\n                append_item(i);\n            }\n            //创建中间页码的结束页\n            if(interval[1]<np+1){\n                if(np-2>interval[1]){\n                    $(\"<span class='btn cursor_default'>...</span>\").appendTo(panel);\n                }\n                var begin = Math.max(np-2,interval[1]);\n                //添加中间页码\n                for(var i=begin; i<np+1; i++){\n                    append_item(i);\n                }\n            }\n            //创建下一页链接\n            if(opts.current_page<np){\n                append_item(opts.current_page+1,{text:\"下一页\", classes:\"next\"});\n            }else{\n                append_item(opts.current_page+1,{text:\"下一页\", classes:\"disabled\"});\n            }\n\n            if (total_num == 0){\n                $('#pagination_id').hide();\n                $('#page_goto').hide();\n            }\n        }\n\n        //get_table_data(current_page,this);\n    });\n\n\n    /**\n     * 生成table数据的回调函数\n     * @param   page_index                当前页数\n     * @param   panel                     添加分页导航的对象\n\n     */\n    function get_table_data(page_index,contain_obj){\n        if(is_select){\n            //添加自定义每页显示多少条的select选择框\n            if(!$(\"#select_pagination\").attr('class')){\n                //初次请求数据时，添加分页条数select选择框\n                $('<label>每页显示行</label>'+\n                    '<select id=\"select_pagination\" name=\"items_per_page\" class=\"span1\">'+\n                    '<option> </option><option>5</option><option>10</option><option>15</option>'+\n                    '<option>20</option><option>25</option><option>30</option></select>').insertBefore(panel);\n            }\n        }\n        //每页显示记录条数\n        var items_per_page=!parseInt($(\"#select_pagination\").val())?(!opts.items_per_page?10:opts.items_per_page):parseInt($(\"#select_pagination\").val());\n        var max_elem=Math.min((page_index+1)*items_per_page,total_num)-1;\n        if(!$('#loading_example')[0]){\n            if($(opts.table_obj).get(0).tagName==\"TBODY\"){\n                $(opts.table_obj).parent('table').addClass('loading_position');\n                var cols=0;\n                $(opts.table_obj).parent('table').find('thead tr:first th').each(function(){\n                    cols += $(this).attr('colspan') ? parseInt($(this).attr('colspan')) : 1;\n                });\n                $('<td style=\"padding:0\" colspan=\"'+cols+\n                    '\"><div class=\"loading_example opacity_7\" style=\"top:'+$(opts.table_obj).parent('table').find('thead').height()\n                    +'px; height:'+$(opts.table_obj).height()+'px\"><img class=\"loading_image\" src=\"' + loading_img + '\" title=\"正在努力加载数据。。。\" alt=\"正在努力加载数据。。。\"/></div></td>').appendTo($(opts.table_obj));\n            }\n        }\n        if(opts.async){\n            //根据url请求数据源\n            $(\".loading_example\").show();\n            $.get(opts.url+(opts.url.indexOf('?')<0?\"?page=\":\"page=\")+page_index,function(data){\n                //请求的字符串转换为json对象\n                // var get_data =  eval(\"(\"+data+\")\");\n                var get_data = data;\n                //请求的表格数据添加到table对象\n                $(opts.table_obj).html(get_data.data);\n                total_num = get_data.total_num;\n                extends_par = get_data.extends_par;\n                opts.callback.call(this,extends_par);\n                $(\".loading_example\").hide();\n            });\n        }else{\n            var from = (page_index - 1) * items_per_page + 1;\n            var to = from + items_per_page - 1;\n            var rows = $(opts.table_obj).find('tr');\n            for (var i = 1; i < rows.length; i++) { // i starts from 1 to skip table header row\n                if (i < from || i > to)\n                    rows[i].style.display = 'none';\n                else\n                    rows[i].style.display = '';\n            }\n            total_num = rows.length-1;\n            extends_par = '';\n        }\n        return false;\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/paas/static/js/utils.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n// utils.js\nUTILS = (function(){\n  return {\n            // 是否为整数\n            isInt: function(value) {\n                      return !isNaN(value) &&\n                            parseInt(Number(value)) == value &&\n                            !isNaN(parseInt(value, 10));\n            },\n            // 计算字符串长度\n            chkstrlen: function(str) {\n                          var strlen = 0;\n                          var i;\n                          for(i=0; i<str.length; i++)\n                          {\n                            strlen+=1;\n                          }\n                          return strlen;\n                      },\n\n              // 验证是否包含中文字母\n              chkstrch: function(field){\n                          with(field)\n                          {\n                            for(var i=0; i<value.length; i++)\n                            {\n                              if(value.charCodeAt(i)>255){\n                                $('#tip_code').attr('class', 'ml5');\n                                $('#tip_code').attr('style', 'color:#C09853');\n                                //$('#tip_code').html(\"不能包含中文字符!\");\n                                $('#tip_code').html('<span class=\"error ml5\">不能包含中文字符!</span>');\n                                return false;\n                              }\n                            }\n                          }\n                          return true;\n                        },\n\n\n  };\n})();\n"
  },
  {
    "path": "paas-ce/paas/paas/static/user_center/css/weixin.css",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n.bk-dialog-footer {\n    display: none;\n}\n.bk-dialog-body{\n    text-align: center;\n}\n.loading_img{\n    margin-top: 20px;\n    margin-bottom: 20px;\n    width: 36px;\n    height: 36px;\n}\n.code_img{\n    width:200px;\n    height:200px;\n    box-shadow: rgb(153, 153, 153) 0px 6px 6px;\n    vertical-align: middle;\n}"
  },
  {
    "path": "paas-ce/paas/paas/static/user_center/js/weixin.js",
    "content": "/**\n* Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n* Licensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n* http://opensource.org/licenses/MIT\n* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\nvar timeout_event;\nvar execute_cnt = 0;\n// 查询绑定状态\nfunction get_bind_status(callback){\n    execute_cnt += 1;\n\t$.get(site_url + 'console/user_center/weixin/get_bind_status/', function(res){\n\t\tif(res.result){\n\t\t\tcallback && callback();\n\t\t}else{\n\t\t    // 小于半个小时，就间隔1.5秒查询，大于则以 （execute_cnt-120）* 1.5秒查询\n            var execute_time = 1500;\n\t\t    if(execute_cnt > 120){\n                execute_time = (execute_cnt - 120) * 1500;\n            }\n\t\t\ttimeout_event = setTimeout(function(){\n\t\t\t    get_bind_status(callback);\n            }, execute_time);\n\t\t}\n\t});\n}\n\n$(\"#weixin_action\").on('click', '.unbind_weixin', function(){\n    $.ajax({\n        method: \"post\",\n        dataType: \"json\",\n        url: site_url + 'console/user_center/weixin/unbind_wx_user_info/',\n        async: false,\n        success: function (res) {\n            if(res.result) {\n                location.reload();\n            }else{\n                console.log(res.message);\n            }\n        }\n    });\n});\n\n$(\"#weixin_action\").on('click', '.bind_qy_weixin', function(){\n    clearTimeout(timeout_event);\n    execute_cnt = 0;\n    // 后台请求登录URL\n    $.ajax({\n        method: \"get\",\n        dataType: \"json\",\n        url: site_url + 'console/user_center/weixin/qy/get_login_url/',\n        async: false,\n        success: function (res) {\n            if (res.result) {\n                window.open(res.url, '_blank');\n                get_bind_status(function(){\n                    location.reload();\n                });\n            }\n        }\n    });\n});\n\n$(\"#weixin_action\").on('click', '.bind_mp_weixin', function(){\n    clearTimeout(timeout_event);\n    execute_cnt = 0;\n    var dialog = new bkDialog({\n      type: 'default',\n      width: 400,\n      padding: 20,\n      content: '<div id=\"qrcode_div\"><img class=\"loading_img\" src=\"' + static_url + 'home/user_center/img/loading_2_36x36.gif\"></div>',\n      hasHeader: false,\n      closeIcon: true,\n      onClose: function(){\n          clearTimeout(timeout_event);\n      }\n    });\n    dialog.show();\n\t$.getJSON(site_url + \"console/user_center/weixin/mp/get_qrcode/\", function(res) {\n\t\tif(res.result){\n            $(\"#qrcode_div\").html('<img class=\"code_img\" src=\"' + res.url + '\">');\n\t\t\tget_bind_status(function(){\n                location.reload();\n            });\n\t\t}else{\n\t\t    console.log(res.message);\n\t\t}\n\t});\n});\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/401.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>未登录(401页)</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-login-page\">\n            <img src=\"/static/img/error/401.png\" />\n            <h1 style=\"margin-top: 0\">您需要登录</h1>\n            <a href=\"${LOGOUT_URL}\" style=\"cursor: pointer\">立即登录</a>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/403.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>您没有访问权限(403页)</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-login-page\">\n            <img src=\"/static/img/error/403.png\" />\n            <h1 style=\"margin-top: 0\">您没有访问权限，请联系系统管理员添加</h1>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/404.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>页面找不到（404页）</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-500-page\">\n            <img src=\"/static/img/error/404.png\" />\n            <h1 style=\"margin-top: 0\">页面找不到了</h1>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/500.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>系统异常(500页)</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <!--HTML-->\n        <div class=\"king-exception-box king-500-page\">\n            <img src=\"/static/img/error/500.png\" />\n            <h1 style=\"margin-top: 0\">系统出现异常</h1>\n            <p>努力恢复中，请稍后再试......</p>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/50x.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n        <title>服务故障，努力修复中...</title>\n        <link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\" />\n        <style type=\"text/css\">\n            body {\n                min-width: initial !important;\n                background: none;\n            }\n        </style>\n    </head>\n\n    <body style=\"font-family: Microsoft Yahei; margin-top: -350px\" class=\"king-errorpage-middle\">\n        <div class=\"king-exception-box king-500-page\" style=\"top: 50%\">\n            <img src=\"/static/img/error/500.png\" />\n            <h1 style=\"margin-top: 0\">服务故障，努力修复中...</h1>\n            <p>服务出现故障，我们正在紧急修复，给您带来不便，敬请谅解。</p>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/account/profile.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n\n<%block name=\"right_content\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_profile.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n<!-- 右侧内容 start -->\n<div class=\"\">\n  <div class=\"box-info full\" >\n    <div class=\"main-header\"><span>个人信息</span></div>\n    <div class=\"main_bd\">\n      <div class=\"account_setting_area\" id=\"svn_info\">\n        <ul>\n          <li class=\"account_setting_item\">\n            <h4>用户名：</h4>\n            <div class=\"meta_content\">\n              ${username}\n            </div>\n          </li>\n          <li class=\"account_setting_item\">\n            <h4>中文名：</h4>\n            <div class=\"meta_content\">\n              ${chname}\n            </div>\n          </li>\n          <li class=\"account_setting_item\">\n            <h4>联系电话：</h4>\n            <div class=\"meta_content\">\n                ${phone}\n            </div>\n          </li>\n          <li class=\"account_setting_item\">\n            <h4>常用邮箱：</h4>\n            <div class=\"meta_content\">\n                ${email}\n            </div>\n          </li>\n          <li class=\"account_setting_item\">\n              <h4>常用操作：</h4>\n              <div class=\"meta_content\">\n                  <a href=\"###\" id=\"show_modify_user\" >修改个人信息</a>\n                  <a href=\"###\" id=\"show_password_change\" class=\"ml50\">重置密码</a>\n              </div>\n          </li>\n          % if request.user.is_superuser:\n            <li class=\"account_setting_item\">\n              <h4>用户管理：</h4>\n              <div class=\"meta_content\">\n                  <a target=\"_blank\" href=\"${user_manage_url}\">用户管理</a>\n              </div>\n            </li>\n          % endif\n        </ul>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- 右侧内容 end -->\n<div id=\"change_password_div\" style=\"display:none\">\n    <div>\n        <label class=\"password_label\">新密码：<span style=\"color:red\">*</span> </label>\n        <!-- 防止Firefox下密码自动填充 -->\n        <input type=\"text\" style=\"display:none\">\n        <input type=\"password\" style=\"display:none\">\n        <input class=\"form-control password_input\" id=\"id_password1\" name=\"password1\"  type=\"text\" onfocus=\"this.type='password'\">\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">必填</span>\n        <p style=\"margin-left: 105px;\" class=\"tip ml10\" id=\"pattern_tip\">请输入密码，长度在8-20个字符，可支持数字、字母以及!@#$%^*()_-+=，必须保证密码包含大小写字母和数字</p>\n    </div>\n    <div class=\"mt5\">\n        <label class=\"password_label\">确认密码：<span style=\"color:red\">*</span> </label>\n        <input class=\"form-control password_input\" id=\"id_password2\" name=\"password2\"  type=\"text\" onfocus=\"this.type='password'\">\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">必填</span>\n    </div>\n    <span id=\"password_tip\" style=\"color:red;margin-left: 100px;\"></span>\n</div>\n</%block>\n<script src=\"${STATIC_URL}js/paas_app.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/account/profile_modify.html",
    "content": "<div class=\"mt30\" style=\"width:406px\">\n\t<div>\n        <label class=\"password_label\">&nbsp&nbsp 中文名：<span style=\"color:red\">*</span> </label>\n        <input class=\"form-control password_input\" id=\"chname\" name=\"chname\" value=\"${request.user.chname}\" type=\"text\">\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">必填</span>\n    </div>\n    <div>\n        <label class=\"password_label\">联系电话：<span style=\"color:red\">*</span> </label>\n        <input class=\"form-control password_input\" id=\"phone\" name=\"phone\"  value=\"${request.user.phone}\" type=\"text\" >\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">必填</span>\n    </div>\n    <div>\n        <label class=\"password_label\">常用邮箱：<span style=\"color:red\">*</span> </label>\n        <input class=\"form-control password_input\" id=\"email\" name=\"email\"  value=\"${request.user.email}\" type=\"text\" >\n        <span style=\"color:red;display:none\" class=\"error_tip ml10\">必填</span>\n    </div>\n    <div>\n        <label class=\"password_label\"></label>\n        <span id=\"error_tip\" class=\"mb10\" style=\"color:red\"></span>\n    </div>\n    <div class=\"t_c mt10\">\n\t    <button onclick=\"APP_PROFILE.modify_user_info()\" type=\"button\" class=\"btn btn-green\" id=\"submit_form_create\">保存</button>\n\t    <button onclick=\"APP_PROFILE.cancel_edit()\" type=\"button\" class=\"btn btn-black ml10\" id=\"reset_btn\">取消</button>\n\t</div>\n</div>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/admin/base_site.html",
    "content": "{% extends \"admin/base.html\" %}\n{% load i18n %}\n\n{% block title %}{{ title }} | 管理{% endblock %}\n\n{% block branding %}\n<h1 id=\"site-name\">OpsAny后台管理</h1>\n{% endblock %}\n\n{% block userlinks %}\n    {% if site_url %}\n        <a href=\"{{ site_url }}\">技术运营中台</a> /\n    {% endif %}\n    {% if user.has_usable_password %}\n        <a href=\"{% url 'admin:password_change' %}\">修改密码</a> /\n    {% endif %}\n    <a href=\"{{LOGOUT_URL}}?c_url=/admin\">注销</a>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/admin/login.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load url from future %}\n{% load i18n %}\n\n{% block content %}\n<div id=\"content-main\">\n    <p>您暂时不能访问该站点的后台管理，这是以下原因造成的：</p>\n    <ul>\n    {% if user.is_anonymous %}\n        <script>\n            window.location.href=\"{{ LOGIN_URL }}?c_url=/admin\";\n        </script>\n    {% else %}\n        {% if not user.is_active %}\n            <li>用户（<strong>{{ user.username }}</strong>）未激活！</li>\n        {% else %}{% if not user.is_staff %}\n            <li>用户（<strong>{{ user.username }}</strong>）没有管理员权限，请联系管理员！</li>\n        {% endif %}{% endif %}\n    {% endif %}\n        <br>\n        <li><a href=\"{{LOGOUT_URL}}?c_url=/admin\">注销</a></li>\n    </ul>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/create.html",
    "content": "<!-- 应用 创建页面  -->\n<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_profile.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n<!-- 右侧内容 start -->\n<div class=\"box-info full\">\n  <div class=\"main-header\">\n    <span>基本信息填写</span>\n  </div>\n  <div class=\"create_flow\">\n      <!--     错误提示信息     -->\n      % if error:\n        <div class=\"the-notes danger\">\n          <span class=\"\">应用创建失败，请重新填写！错误信息：${error}!</span>\n        </div>\n      % endif\n      <!-- 应用 信息填写     -->\n      <div id=\"app_info\">\n        <form  id=\"form_app\" style=\"font-family:微软雅黑\" method=\"post\" action='${SITE_URL}app/'  onsubmit=\"return APP_CREATE.validate_form(this)\">\n          <input type='hidden' name='csrfmiddlewaretoken' value='${csrf_token}'>\n          <%include file=\"create_detail.part\" />\n        </form>\n      </div>\n  </div>\n</div>\n</%block>\n<!-- 右侧内容 end -->\n\n<script src=\"${STATIC_URL}js/paas_app.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n// 重置 是清空详细描述\n$(\"#reset_btn\").click(function(){\n  $('.tips').text('');\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/create_detail.part",
    "content": "<div class=\"row\">\n    <div class=\"col-md-12\">\n        <div class=\"panel-body\" style=\"margin-left: -60px;margin-bottom: -30px;\">\n            <div class=\"form-inline form-columns app-form\">\n              <!-- 应用 ID -->\n              <div class=\"form-group\">\n                <label class=\"control-label\" for=\"\">应用 ID</label>\n                <div class=\"controls\">\n                <input type=\"text\" class=\"form-control\" id=\"code\" name=\"code\" />\n                <span class=\"required\">*</span>\n                <span id=\"tip_code\" class=\"tips error\"></span>\n                  <!--             使用独立域名，appcode中不用下划线改用连接符             -->\n                  <span class=\"help-block\">\n                  由小写英文字母、连接符(-)或数字组成，长度为3~16个字符, 并且以字母开头。\n                  </span>\n                </div>\n              </div>\n\n              <!--应用名称     -->\n              <div class=\"form-group\">\n                <label class=\"control-label\" for=\"\">应用名称</label>\n                <div class=\"controls\">\n                  <input type=\"text\" class=\"form-control\" id=\"name\" name=\"name\" value=\"\" >\n                  <span class=\"required\">*</span>\n                  <span id=\"tip_name\" class=\"tips error\"></span>\n                  <span class=\"help-block\">应用名称，长度小于20个字符。</span>\n                </div>\n              </div>\n              <!-- 应用简介 -->\n              <div class=\"form-group\">\n                <label class=\"control-label\" for=\"\">应用简介</label>\n                <div class=\"controls\">\n                  <input type=\"text\" class=\"form-control\" id=\"introduction\" name=\"introduction\" value=\"\" >\n                  <span class=\"required\">*</span>\n                  <span id=\"tip_introduction\" class=\"tips error\"></span>\n                  <span class=\"help-block\">应用简要介绍，长度小于30个字符。</span>\n                </div>\n              </div>\n              <!-- 开发负责人 -->\n              <hr style=\"margin-left: 50px;margin-top: 10px;\">\n              <div class=\"form-group\">\n                <label class=\"control-label\" for=\"\">负责人</label>\n                <div class=\"controls\">\n                    <input type=\"hidden\" name=\"developer\" id=\"developer\" value=\"${request.user.username}\">\n                    <select multiple=\"multiple\" id=\"developer_select\"  style=\"width: 545px;\">\n                        % for _user in users:\n                            % if _user['username'] == request.user.username:\n                                <option value=\"${_user['username']}\" selected >${_user['username']}</option>\n                            % else:\n                                <option value=\"${_user['username']}\" >${_user['username']}</option>\n                            % endif\n                        % endfor\n                    </select>\n                  <span class=\"required\">*</span>\n                  <span id=\"tip_developer\" class=\"tips error\"></span>\n                  <span class=\"help-block\">负责人可以管理、部署该应用</span>\n                </div>\n              </div>\n              <hr style=\"margin-left: 50px;margin-top: 10px;\">\n              <!--版本控制 start-->\n              <div class=\"form-group php\" isthird=0>\n                <label class=\"control-label\" for=\"\">代码仓库</label>\n                <div class=\"controls mt5\">\n                  %for value, key in vcs_type_choices:\n                    <label class=\"radio-inline\">\n                      <input type=\"radio\" name=\"vcs_type\" value=\"${value}\"\n                          %if key == \"Git\":\n                            checked\n                          %endif\n                      > ${key}\n                    </label>\n                  %endfor\n                  <span class=\"help-block\" id=\"vcs_type_help\">通过Git方式获取应用代码</span>\n                </div>\n              </div>\n              <div class=\"form-group\">\n                <label class=\"control-label\">仓库地址</label>\n                <div class=\"controls\">\n                  <input type=\"text\" class=\"form-control\" name=\"vcs_url\" id=\"vcs_url\" value=\"\" style=\"width:270px\" title=\"\">\n                  <span class=\"required\">*</span>\n                  <span id=\"tip_vcs_url\" class=\"tips mt10 mb5 ml150 error\"></span>\n                  <span class=\"help-block\" id=\"vcs_url_help\">支持以下协议：http(s)://, git://</span>\n                </div>\n              </div>\n              <div class=\"form-group\">\n                <label class=\"control-label\"><span id=\"vcs_text\">Git</span>账号</label>\n                <div class=\"controls\">\n                  <input type=\"text\" class=\"form-control\" name=\"vcs_username\" id=\"vcs_username\" value=\"\" onblur=\"APP_CREATE.check_vcs_username()\" style=\"width:270px\" title=\"\">\n                  <span class=\"required\">*</span>\n                  <span id=\"tip_vcs_username\" class=\"tips mt10 mb5 ml150 error\"></span>\n                  <span class=\"help-block\"></span>\n                </div>\n              </div>\n              <div class=\"form-group\">\n                <label class=\"control-label\">密码</label>\n                <div class=\"controls\">\n                  <!-- 防止Firefox下密码自动填充 -->\n                  <input type=\"text\" style=\"display:none\">\n                  <input type=\"password\" style=\"display:none\">\n                  <input type=\"text\" onfocus=\"this.type='password'\" class=\"form-control\" name=\"vcs_password\" id=\"vcs_password\" value=\"\" onblur=\"APP_CREATE.check_vcs_password()\" style=\"width:270px\" title=\"\">\n                  <span class=\"required\">*</span>\n                  <span id=\"tip_vcs_password\" class=\"tips mt10 mb5 ml150 error\"></span>\n                </div>\n              </div>\n              <!--版本控制 end-->\n              <!-- form end-->\n            </div>\n        </div>\n    </div>\n</div>\n<hr/>\n<!--     操作按钮  -->\n<div class=\"t_c mt35\">\n    <button type=\"submit\" class=\"btn btn-green btn-l btn-wm\" id=\"submit_form_create\" style=\"width:130px;height: 60px\">创建应用</button>\n</div>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/info.html",
    "content": "<%inherit file=\"/base_app.html\"/>\n<%block name=\"title_content\">\n    <a class=\"btn btn-green btn-min-w f_r mr10\"  href=\"${SITE_URL}release/${app_info.get('code', '--')}/\">发布部署</a>\n</%block>\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_app.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n        <hr/>\n        <div class=\"ml50 app-info\">\n            <div class=\"t_b mb10\">注册信息\n            </div>\n            <div class=\"row\">\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">应用ID：</font>${app_info.get('code', '--')}\n                </div>\n                <div class=\"col-sm-8 col-xs-8\">\n                    <font class=\"t_grey\">应用TOKEN：</font>${app_info.get('auth_token', '--')}\n                </div>\n            </div>\n        </div>\n        <hr/>\n        <div class=\"ml50 app-info\">\n            <div class=\"t_b mb10\">基本信息\n                <div class=\"f_r mr30\">\n                    <a href=\"###\" style=\"margin-left:10px;font-weight: 400;display:none;\" class=\"can_a\" id=\"base_cancle\">取消</a>\n                    <a href=\"###\" style=\"margin-left:10px;font-weight: 400;\" id=\"base_operate\" data=\"0\" class=\"operate\" edit-class=\"base\">编辑</a>\n                </div>\n                <span id=\"tip_name\" style=\"color: #f00;\" class=\"f_r app-info-tips\"></span>\n            </div>\n            <div class=\"mb10\" ></div>\n            <div class=\"row\">\n                <div class=\"col-sm-4 col-xs-4\">\n                    <input type=\"hidden\" id=\"app_code_id\" value=\"${app_info.get('code', '--')}\"></input>\n                    <font class=\"t_grey\">应用 ID：</font>${app_info.get('code', '--')}\n                </div>\n                <div class=\"col-sm-4 col-xs-4\">\n                    <div class=\"\"><font class=\"t_grey\">创建者：</font>${app_info.get('creater', '--')}</div>\n                </div>\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey f_l\">应用名称：</font>\n                    <input type=\"text\" class=\"form-control app-edit app-value\" id=\"name\" name=\"name\" value=\"${app_info.get('name', '--')}\" operation=\"modify\" style=\"width:200px;margin-top:-6px;display:none;margin-left: 85px;\">\n                    <div id=\"app_name\" class=\"base\">${app_info.get('name', '--')}</div>\n                </div>\n            </div>\n            <div class=\"row mt5 chmt\">\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">首次提测：</font>${app_info.get('first_test_time', '--') or '--'}\n                </div>\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">首次上线：</font>${app_info.get('first_online_time',  '--') or '--'}\n                </div>\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">开发语言：</font>Python\n                </div>\n            </div>\n            <div class=\"row mt5 chmt\">\n                <div class=\"col-sm-10 col-xs-10\" style=\"width:100%\">\n                    <div class=\"row\" >\n                        <div class=\"col-sm-2 col-xs-2\">\n                            <div><font class=\"t_grey\">负责人：</font></div>\n                        </div>\n                        <div class=\"col-sm-8 col-xs-8\" style=\"margin-left: -93px;\">\n                            <div id=\"developer_div\" class=\"app-edit\" style=\"display:none;margin-left: 7px;\">\n                                <select multiple=\"multiple\" id=\"developer_select\"  style=\"width: 545px;\">\n                                % for _user in app_info.get('users', []):\n                                    % if _user['username'] in app_info.get('developers_value_name_list', []):\n                                            <option value=\"${_user['username']}\" selected >${_user['username']}</option>\n                                    % else:\n                                            <option value=\"${_user['username']}\">${_user['username']}</option>\n                                    % endif\n                                % endfor\n                                </select>\n                            </div>\n                                <input type=\"hidden\" class=\"app-value\" name=\"developer\" id=\"developer\" value=\"${app_info.get('developers_value_name', '')}\">\n                               <div id=\"app_developer\" class=\"base\" >${app_info.get('developers_value_name', '--')}</div>\n                        </div>\n                         <div class=\"col-sm-2 col-xs-2\">\n                            <div id=\"tip_developer\" style=\"color: #f00;\" class=\"app-info-tips\"></div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <hr/>\n        <div class=\"ml50 app-info\">\n            <div class=\"t_b mb10\">访问地址\n            </div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    <font class=\"t_grey\">测试地址：</font> <span id=\"test_access_span\"></span>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    <font class=\"t_grey\">正式地址：</font> <span id=\"prod_access_span\"></span>\n                </div>\n            </div>\n        </div>\n        <hr/>\n        <div class=\"ml50 app-info\">\n            <div class=\"t_b mb10\">应用简介\n                <div class=\"f_r mr30\">\n                    <a href=\"###\" style=\"margin-left:10px;font-weight: 400;display:none;\" class=\"can_a\" id=\"introduction_cancle\">取消</a>\n                    <a href=\"###\" style=\"margin-left:10px;font-weight: 400;\" id=\"intro_operate\" data=\"0\" class=\"operate\" edit-class=\"introduction\">编辑</a>\n                </div>\n                <span id=\"tip_introduction\" style=\"color: #f00;\" class=\"f_r app-info-tips\"></span>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    <input type=\"text\" class=\"form-control app-edit app-value\" id=\"introduction\" name=\"introduction\"  value=\"${app_info.get('introduction', '')}\" style=\"display:none;width:908px;\">\n                    <div id=\"intro_value\" value=\"${app_info.get('introduction', '')}\" class=\"introduction\">${app_info.get('introduction', '--')}</div>\n                </div>\n            </div>\n        </div>\n        <hr/>\n        <div class=\"mb10 ml50 app-info\">\n          <div class=\"t_b mb10\">源代码管理信息\n                 <div class=\"f_r mr30\">\n                    <a href=\"###\" style=\"margin-left:10px;font-weight: 400;display:none;\" class=\"can_a\" id=\"vcs_cancle\">取消</a>\n                    <a href=\"###\" style=\"margin-left:10px;font-weight: 400;\" id=\"intro_operate\" data=\"0\" class=\"operate\" edit-class=\"vcs\">编辑</a>\n                </div>\n                <span id=\"tip_vcs\" style=\"color: #f00;\" class=\"f_r\"></span>\n          </div>\n          <div class=\"row\">\n              <div class=\"col-sm-4 col-xs-4\">\n                  <input type=\"hidden\" id='vcs_type_id' value=\"${app_info.get('vcs_type', '')}\"> </input>\n                  <font class=\"t_grey\">代码仓库：</font>${app_info.get('vcs_type_name', '--') or '--'}\n              </div>\n            <div class=\"col-sm-8 col-xs-8\">\n              <font class=\"t_grey\">地址：</font>\n              <input type=\"text\" class=\"form-control app-edit app-value\" id=\"vcs_url\" name=\"vcs_url\" value=\"${app_info.get('vcs_url', '')}\" style=\"display:none;width:278px;margin-bottom: 5px;\">\n              <span id=\"vcs_url_value\" value=\"${app_info.get('vcs_url', '')}\" class=\"vcs\">${app_info.get('vcs_url', '--') or '--'}</span>\n              <span id=\"tip_vcs_url\" class=\"app-info-tips mt10 mb5 ml150 error\"></span>\n            </div>\n          </div>\n          <div class=\"row\">\n            <div class=\"col-sm-4 col-xs-4\">\n              <font class=\"t_grey\">${app_info.get('vcs_type_name', '') or ''}帐号：</font>\n              <input type=\"text\" class=\"form-control app-edit app-value\" id=\"vcs_username\" name=\"vcs_username\" value=\"${app_info.get('vcs_username', '--')}\" style=\"display:none;width:200px;margin-bottom: 5px;\">\n              <span id=\"vcs_username_value\" value=\"${app_info.get('vcs_username', '')}\" class=\"vcs\" >${app_info.get('vcs_username', '--') or '--'}</span>\n              <br><span id=\"tip_vcs_username\" class=\"app-info-tips mt10 mb5 ml150 error\"></span>\n            </div>\n            <div class=\"col-sm-8 col-xs-8\">\n              <font class=\"t_grey\">密码：</font>\n              <!-- 防止Firefox下密码自动填充 -->\n              <input type=\"text\" style=\"display:none\">\n              <input type=\"password\" style=\"display:none\">\n              <input type=\"text\" onfocus=\"this.type='password'\" class=\"form-control app-edit app-value\" id=\"vcs_password\" name=\"vcs_password\" value=\"\" style=\"display:none;width:278px;margin-bottom: 5px;\">\n              <span id=\"vcs_password_value\" class=\"vcs\" >******</span>\n              <a href=\"###\" title=\"显示密码\" class=\"ml5 password_show\" data=\"0\"><i class=\"bk-icon icon-eye t_b t_s12\" style=\"transform: scale(0.8,0.8);\"></i></a>\n             <span id=\"tip_vcs_password\" class=\"app-info-tips mt10 mb5 ml150 error\"></span>\n            </div>\n          </div>\n        </div>\n        <hr/>\n        <div class=\"ml50\">\n            <div class=\"t_b mb10\">删除应用</div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    % if request.user.username != app_info.get('creater'):\n                        <div class=\"mb5\">非创建人不允许删除应用，如需删除请联系创建人。</div>\n                    % elif app_info.get('state', '') == 1:\n                        <div class=\"mb5\">只有创建人能删除该应用，请在删除前与其他同事提前沟通，确定<a href=\"###\" onclick=\"REL_MANAGER.app_del(this, '${app_info.get('code', '')}');\" app_code=\"${app_info.get('code', '')}\" class=\"hit app_del\"><strong>删除</strong></a>!</div>\n                    % else:\n                        <div class=\"mb5\">只有开发中的应用才能删除，提测和上线过的应用不能删除！</div>\n                    % endif\n                </div>\n            </div>\n        </div><hr/>\n</%block>\n\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script src=\"${STATIC_URL}js/paas_app.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script type=\"text/javascript\">\n    $(function(){\n        APP_INFO.get_access_info('${app_code}');\n    })\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/info_error.html",
    "content": "<%inherit file=\"/base_app.html\"/>\n<%block name=\"right_content\">\n    <div class=\"main_hd\">\n        <!--     错误提示信息      -->\n         <div class=\"ml20\" style=\"color:red;font-weight: bold\">${error}</div>\n    </div>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/list.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_app.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <!-- 右侧内容 start -->\n    <div class=\"\">\n        <div class=\"app_center\">\n            <div class=\"box-info full\">\n                <div class=\"main-header\"><span>我的应用</span>\n                    <a class=\"btn btn-green btn-min-w f_r mr10\" href=\"${SITE_URL}app/\">创建应用</a>\n                </div>\n                <!--     工具栏 start    -->\n                <div class=\"data-table-toolbar\">\n                    <!--         搜索 start             -->\n                    <div class=\"row\">\n                      <div class=\"col-md-10\" style=\"padding-left:5px;\">\n                        <div id=\"seacher_input\" class=\"form-inline\" style=\"margin-top:-5px;display: none;\">\n                          <input id=\"search_app\" type=\"text\" class=\"form-control\" style=\"width:250px\" placeholder=\"搜索：按ID、名称、创建者\" >\n                          <span class=\"close\" id=\"close_span\" style=\"display:none;position:absolute;left:231px;margin-top:16px;cursor: pointer;background-color:#bbbbbb;border-radius:10px;text-align:center;width:22px;height:22px\">×</span>\n                          <select class=\"form-control\"  id=\"set_hide_offline\" style=\"\">\n                            <option value=\"0\" selected>隐藏已下架应用</option>\n                            <option value=\"1\">显示已下架应用</option>\n                          </select>\n                          <button id=\"j_display_all_app\"  class=\"btn btn-azure btn-min-w\" style=\"margin-top:9px;height:34px\">搜索</button>\n                        </div>\n                      </div>\n                    </div>\n                    <!--     搜索 end    -->\n                </div>\n                <!--     工具栏 end    -->\n                <div class=\"table-responsive\">\n                  <!--     app table -->\n                  <div id=\"table_app\">\n                  </div>\n\n                  <!--     app 总数展示    -->\n                  <div class=\"col-md-2\" style=\"padding-left:0px;\">\n                    <div id=\"app_num_div\" class=\"form-inline mt10\" style=\"display:none;\">共 <strong style=\"color:red;\" id=\"app_num\"></strong> 个应用</div>\n                  </div>\n\n                  <!--     分页 开始    -->\n                  <div class=\"f_r form-inline mt10\" id=\"page\">\n                    <div id=\"pagination_id\" class=\"btn-group\"></div>\n                  </div>\n                  <!--    分页 结束      -->\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 右侧内容 end -->\n</%block>\n\n<!--  分页的样式文件    -->\n<script src=\"${STATIC_URL}js/pagination.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script src=\"${STATIC_URL}js/paas_app.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function(){\n   // 查询app列表\n  $(\"#j_display_all_app\").click();\n});\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/list_table.part",
    "content": "<table data-sortable=\"\" class=\"table table-hover table-striped\" data-sortable-initialized=\"true\">\n    <thead total_app=\"${total}\">\n        <tr>\n            <th style=\"width:20%\">应用ID</th>\n            <th style=\"width:15%\">应用名称</th>\n            <th style=\"width:10%\">创建者</th>\n            <th style=\"width:10%\">创建时间</th>\n            <th style=\"width:10%\">状态</th>\n            <th style=\"width:25%;\">常用功能</th>\n        </tr>\n    </thead>\n    <tbody>\n        % if app_list:\n            % for _app in app_list:\n            <tr>\n                <td style=\"vertical-align:middle;\">\n                    <div style=\"margin-right:10px;display: inline-block;\" class=\"app-logo-edit\">\n                        <a href=\"###\" title=\"点击更换logo\" onclick=\"BASE_APP.modify_app_logo('${_app.code}', 0)\" style=\"display: inherit;padding: 0;\">\n                            <img id=\"app_logo_now\" style='width:40px;height:40px' src=\"${_app.logo_url}\" onerror=\"javascript:this.src='${STATIC_URL}img/app_logo/default.png';\">\n                            <div class=\"app-logo-edit-mask\">\n                                <i class=\"bk-icon icon-edit t_b mr1 mb1 t_s12\"></i>\n                            </div>\n                        </a>\n                    </div>\n                    <a href=\"${SITE_URL}app/${_app.code}/info/\" class=\"hit\" title='${_app.code}'>${_app.code}</a>\n                </td>\n                <td style=\"vertical-align:middle;\" title=\"${_app.name}\">\n                        % if len(_app.name) > 16:\n                            ${_app.name[0:16]}...\n                        % else:\n                            ${_app.name}\n                        % endif\n                </td>\n                <!--     创建时间     -->\n                <td style=\"vertical-align:middle;\">${_app.creater}</td>\n                <td style=\"vertical-align:middle;\">${_app.created_date_display}</td>\n                <!--状态-->\n                <td style=\"vertical-align:middle;\">\n                    % if _app.state in [0, 10]:\n                        <label class=\"label label-default\">${_app.state_display}</label>\n                    % elif _app.state in [1]:\n                        <label class=\"label label-warning\">${_app.state_display}</label>\n                    % elif _app.state in [3, 8]:\n                            <label class=\"label label-info\">${_app.state_display}</label>\n                    % elif _app.state in [4, 9]:\n                        <label class=\"label label-success\">${_app.state_display}</label>\n                    % endif\n                </td>\n                <td style=\"vertical-align:middle;\">\n                    <a href=\"${SITE_URL}release/${_app.code}\" target=\"_blank\" class=\"hit mr10\">部署</a>\n                    <!-- 未部署 且是 当前用户创建的 应用 才可以删除-->\n                    % if _app.state in [1] and request.user.username == _app.creater:\n                        <a href=\"###\" onclick=\"REL_MANAGER.app_del(this, '${_app.code}');\" app_code=\"_app.code\"  class=\"app_del hit mr10\">删除</a>\n                    % endif\n                    % if _app.state in [0, 1] or (not _app.is_already_test and not _app.is_already_online):\n                        <a href=\"###\" class=\"hit mr10\"></a>\n                    % else:\n                        <a href=\"${_app.app_test_url}\" target=\"_blank\" class=\"hit mr10\">测试地址</a>\n                    % endif\n\n                    % if _app.state in [0, 1] or (not _app.is_already_online):\n                        <a href=\"###\" class=\"hit mr10\"></a>\n                    % else:\n                        <a href=\"${_app.app_prod_url}\" target=\"_blank\" class=\"hit mr10\">正式地址</a>\n                    % endif\n                </td>\n            </tr>\n            % endfor\n        % else:\n    <tr id=\"none\">\n      <td colspan=\"9\" style=\"text-align: center\">您还没有相关应用信息\n    </tr>\n        % endif\n    </tbody>\n</table>\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function(){\n    $(\"#seacher_input\").show();\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/list_tip.part",
    "content": "<div class=\"app-tip\" style=\"margin-left:250px;margin-top:20px;\">\n    <div style=\"margin-bottom:20px;\">\n        <p>您还没有应用，<a href=\"${SITE_URL}app/\">立即创建</a></p>\n    </div>\n    <div style=\"float:left;\">\n        <p>流程介绍：</p>\n    </div>\n    <div>\n        <div class=\"app-flowp\">\n            1 创建应用<br>\n            填写应用信息，创建应用\n        </div>\n        <div class=\"app-flowp\">\n            2 应用部署<br>\n            支持部署到测试、正式两个环境<br>\n            支持应用下架\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app/show_apply_process.html",
    "content": "<style type=\"text/css\">\n\t.copy-btn{\n\t\tmargin: 0 5px 5px 0;\n    \tfont-size: 12px;\n    \tfont-weight: normal;\n    \tbox-sizing: content-box;\n\t    height: 22px !important;\n\t    line-height: 22px !important;\n    \tmargin-right: 5px;\n    \tpadding: 0px;\n    \twidth: 40px;\n    \tmin-width: 40px;\n\t}\n\t.show-text{\n\t\twidth: \t650px;\n\t\tborder-radius: 0;\n    min-height: 45px;\n        background-color: #e1f4e2 !important;\n    padding: 8px;\n    word-wrap: break-word;\n\t}\n</style>\n<h4 class=\"dev_module_title mb20\">激活码申请流程:</h4>\n<div class=\"env_introduce_box\"> \n% if mac_info:\n\t<span> 1.系统检测到您的 AppServer 的MAC地址为: <a class=\"btn btn-success btn-lg copy-btn\" id=\"copy_mac\">复制</a></span><br>\n\t<div class=\"show-text\" id=\"mac_text\">${mac_info}</div>\n% else:\n\t<span> 1.请查看你所有的AppServer（包括正式和测试服务器）的MAC地址，多个MAC地址以英文分号(;)分隔</span> <br>\n% endif\n\n% if is_base_info == '1':\n\t<span> 2.根据您的应用ID：<code>${app_code}</code> 和第一步获取到的 <code>MAC地址</code>，到下面的链接地址申请激活码</span> <br>\n\t<span><a href=\"http://o.qcloud.com/console/?app=product-download&url=/deploy_token_product_page\" target=\"_blank\">http://o.qcloud.com/console/?app=product-download&url=/deploy_token_product_page</a></span> \n% else:\n\t<span> 2.请填写<code>应用ID</code></span> <br>\n\t<span> 3.根据您的<code>应用ID</code>和第一步获取到的<code>MAC地址</code>，到下面的链接地址申请激活码</span> <br>\n\t<span><a href=\"http://o.qcloud.com/console/?app=product-download&url=/deploy_token_product_page\" target=\"_blank\">http://o.qcloud.com/console/?app=product-download&url=/deploy_token_product_page</a></span> \n% endif\n\t<hr>\n\t<p><code>AppServer</code>是在蓝鲸智云上注册的应用部署的服务器,\n\t% if active_server_ips:\n\t\t您目前已激活的服务器有： <a href=\"${SITE_URL}engine/server/\" target=\"_blank\"> 点击查看详情</a></p>\n\t\t<div class=\"show-text\">${active_server_ips}</div>\n\t% else:\n\t\t您目前还没有激活服务器，<a href=\"${SITE_URL}engine/server/\" target=\"_blank\">点击这里</a> 添加并激活服务器</p>\n\t% endif\n\t\n\t<p><code>MAC地址</code>变更后（新增或修改AppServer），需要重新申请激活码</p>\n</div>\n<script type=\"text/javascript\">\n$(document).ready(function() {\n    $('#copy_mac').on('copy', function(e){\n    \tvar mac_text = $(\"#mac_text\").text();\n        e.clipboardData.clearData();\n        e.clipboardData.setData(\"text/plain\", mac_text);\n        e.preventDefault();\n        art.dialog({id: 'bktips', width: 300,icon: 'succeed',lock: true,content: '复制成功'}).time(1);\n    })\n});\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/app_env/home.html",
    "content": "<%!\r\n   def inherit( context ):\r\n       if not context.get('base_tpl'):\r\n           return '/base_app.html'\r\n       else:\r\n           return context.get('base_tpl')\r\n%>\r\n<%inherit file=\"${inherit(context)}\"/>\r\n\r\n<%block name=\"right_content\">\r\n<p style=\"font-size: 0.8em; margin-left: 4px\">环境变量</p>\r\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_app_env.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\r\n<hr/>\r\n\r\n<div class=\"col_main\">\r\n\r\n  <div class=\"dev_center_wrap dev_center_module\">\r\n    <h4 class=\"dev_module_title\">\r\n    &nbsp;\r\n    <button type=\"button\" class=\"btn-info btn-xs env_add_btn fr\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-plus\"></span>添加变量</button>\r\n    </h4>\r\n\r\n    <table class=\"table table-bordered dev_env_table\" id=\"user_env_table\">\r\n      <thead>\r\n        <tr>\r\n          <th width=\"30%\">变量名</th>\r\n          <th width=\"20%\">值</th>\r\n          <th width=\"15%\">生效环境</th>\r\n          <th width=\"15%\">说明</th>\r\n          <th width=\"20%\">操作</th>\r\n        </tr>\r\n      </thead>\r\n      <tbody>\r\n        <input type=\"hidden\" id=\"app_code\" value=\"${app_code}\"/>\r\n        <div style=\"display:none;\" id=\"mode_choices_html\">\r\n        ${mode_choices_html}\r\n        </div>\r\n        % if env_vars:\r\n          % for env_var in env_vars:\r\n          <tr class=\"env_record\">\r\n            <input  type=\"hidden\" class=\"env_id\" disabled value=\"${env_var.id}\" />\r\n            <td>\r\n              <div class=\"env_key_box\">\r\n                <input class=\"form-control env_name\" disabled value=\"${env_var.name[6:]}\" />\r\n                <span class=\"env_prefix\">BKAPP_</span>\r\n              </div>\r\n            </td>\r\n            <td>\r\n              <input class=\"form-control env_val\" disabled value=\"${env_var.value|h}\" />\r\n            </td>\r\n            <td>\r\n              <select class=\"form-control env_mode\" disabled>\r\n                % for key, value in mode_choices:\r\n                <option value=\"${key}\"\r\n                        % if key == env_var.mode:\r\n                        selected\r\n                        % endif\r\n                > ${value} </option>\r\n                % endfor\r\n              </select>\r\n            </td>\r\n            <td>\r\n              <input class=\"form-control env_intro\" disabled value=\"${env_var.intro}\" />\r\n            </td>\r\n            <td>\r\n              <button type=\"button\" class=\"btn-info btn-xs env_save_btn\">保存</button>\r\n              <button type=\"button\" class=\"btn-xs env_cancel_btn\">取消</button>\r\n              <a href=\"#\" title=\"编辑\" class=\"dev_env_opera env_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>\r\n              <a href=\"#\" value=\"${env_var.id}\" title=\"删除\" class=\"dev_env_opera env_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>\r\n            </td>\r\n          </tr>\r\n          % endfor\r\n        % else:\r\n          <tr class=\"env_record\" id=\"no_record_row\"><td colspan=\"5\"><center>未设置环境变量</center></td><tr>\r\n        % endif\r\n      </tbody>\r\n    </table>\r\n\r\n    <h4 class=\"dev_module_title mt30\">使用说明</h4>\r\n    <div class=\"env_introduce_box\">\r\n      <p> 您可以设置应用运行时的环境变量，在进行 <font color='red'>测试部署</font>和<font color='red'>正式部署</font>操作时会生效。</p>\r\n      <p> 同一个变量, 仅允许配置到 <font color='red'>测试环境</font>和<font color='red'>正式环境</font> 或者<font color='red'>所有环境(包含正式/测试)</font></p>\r\n      <p> 在您的应用中可以执行\r\n      <code>Python: os.environ.get('BKAPP_variable_name')</code> / <code>PHP: env('BKAPP_variable_name')</code>\r\n      访问您设置的环境变量.\r\n      </p>\r\n      <p>环境变量名都以\"BKAPP_\"为前缀，您输入名字时不需要输入前缀。</p>\r\n      <p>变量名和变量的值均以大小写英文字母，数字或者下划线组成，变量名最大长度为50字符，值的最大长度为1000字符。</p>\r\n      <p>开发框架: 可以使用变量<font color='red'> BKAPP_CONTAINER_MEM </font>设置容器最大内存, 值为整数, 单位M。</p>\r\n    </div>\r\n  </div>\r\n</div>\r\n</%block>\r\n\r\n<script src=\"${STATIC_URL}js/paas_app_env.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\r\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/base.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <script type=\"text/javascript\">\n      var _speedMark = new Date();\n      //在js中使用site_url,则这个javascript片段一定要保留\n      var site_url = \"${SITE_URL}\";            // app的url前缀,在ajax调用的时候，应该加上该前缀\n    </script>\n\n    <%block name='head'>\n      <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n      <title>开发中心 | OpsAny</title>\n      <meta name=\"keywords\" content=\"技术运营中\" />\n      <meta name=\"description\" content=\"技术运营中\" />\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />\n\n      <link href=\"${STATIC_URL}favicon.ico\" rel=\"Shortcut Icon\">\n\n      <!-- bootstrap CSS 公共样式 -->\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}assets/bootstrap-3.1.1/css/bootstrap.min.css\">\n      <!-- 图标（bk-icon） -->\n      <link href=\"${STATIC_URL}assets/bk-icon-2.0/iconfont.css\" rel=\"stylesheet\">\n      <!-- bkdialog -->\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}assets/bkDialog-1.0/css/ui-dialog.css\">\n      <!-- 顶部导航css 私有样式 -->\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/layout_head.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n      <!-- base 基本样式 -->\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/base.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n      <!--select2-->\n      <link href=\"${STATIC_URL}assets/select2-3.5.3/select2.css?v=1\" rel=\"stylesheet\">\n    </%block>\n    <style>\n      html,body{\n          height: 100%;\n      }\n    </style>\n</head>\n\n<body>\n\n    <%block name='head_content'>\n        <!-- 通知公告 -->\n        <div class='flayer_desk'></div>\n\n        <!-- 头部横向导航 start -->\n        <div class=\"head\" id=\"header\">\n\n            <div class=\"head_box\">\n                <div class=\"inner wrp\">\n                  <span class=\"logo_bk\">\n                      <a title=\"开发中心\" href=\"${SITE_URL}\">\n                        <img src=\"${STATIC_URL}img/logo/logo_develper_01.png\"/>\n                      </a>\n                      <a title=\"开发中心\" href=\"${SITE_URL}app/list/\">\n                        <img src=\"${STATIC_URL}img/logo/logo_develper_02.png\"/>\n                      </a>\n                  </span>\n                    <input type='hidden' name='csrfmiddlewaretoken' value='${csrf_token}'>\n                    <div class=\"account\">\n                        <div class=\"account_meta account_info account_meta_primary\">\n                              <a href=\"${SITE_URL}accounts/profile/\" class=\"nickname\" title=\"${request.user.username if request.user and request.user.username else ''}\">${request.user.username if request.user and request.user.username else ''}</a>\n                               <a href=\"${SITE_URL}accounts/profile/\">\n                                % if request.user.is_superuser:\n                                  <img src=\"${STATIC_URL}img/getadminheadimg.jpg\" class=\"avatar\">\n                                % else:\n                                  <img src=\"${STATIC_URL}img/getheadimg.jpg\" class=\"avatar\">\n                                % endif\n                               </a>\n                        </div>\n                        % if request.user.username:\n                            <div class=\"account_meta account_logout account_meta_primary\"><a id=\"logout\" href=\"${LOGOUT_URL}\">注销</a></div>\n                        % endif\n                    </div>\n\n                </div>\n            </div>\n\n        </div>\n        <!-- 头部横向导航 end -->\n    </%block>\n      <!-- 中间主体内容 start -->\n      <div id=\"body\" class=\"body page_index\">\n          <div id=\"js_container_box\" class=\"container_box cell_layout side_l\">\n\n            <%block name=\"body_content\">\n              <!-- 左侧导航 start -->\n              <div class=\"col_side\">\n                <%block name='left_content'>\n                </%block>\n              </div>\n              <!-- 左侧导航 end -->\n\n              <!-- 右侧内容 start -->\n              <div class=\"col_main\">\n                <%block name=\"right_content_base\">\n                </%block>\n              </div>\n              <!-- 右侧内容 end -->\n            </%block>\n\n          </div>\n\n          <div id=\"return_top\" class=\"return_btn return_top\" href=\"#\" title=\"返回顶部\" style=\"display:none;\">\n          <span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-up\"></span>\n        </div>\n        <div id=\"return_bottom\" class=\"return_btn return_bottom\" href=\"#\" title=\"返回底部\" style=\"display:none;\">\n          <span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-down\"></span>\n        </div>\n\n        <!-- <div class=\"faq\"> -->\n          <!-- <ul class=\"links\"> -->\n            <!-- <li class=\"links_item\"><a href=\"mailto:contactus_bk@tencent.com\" style=\"font-size:14px;\">联系我们</a></li> -->\n          <!-- </ul> -->\n          <!-- <p class=\"tail\">contactus_bk@tencent.com</p> -->\n        <!-- </div> -->\n      </div>\n      <!-- 中间主体内容 end -->\n      <!-- 尾部声明 start -->\n      <div class=\"foot\" id=\"footer\">\n        <ul class=\"links ft\">\n            <!--\n            <li>\n                <a href=\"https://www.womaiyun.com/\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">官网</a>\n                | <a href=\"${SITE_URL}\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">工作台</a>\n            </li>\n            -->\n            <li><p class=\"copyright\">Copyright © 2012-${NOW.year} OpsAny. All Rights Reserved.</p> </li>\n        </ul>\n      </div>\n      <!-- 尾部声明 end -->\n      <!--logo修改-->\n      <div id=\"div_m_logo\" style=\"display:none\">\n          <form method='post' id='form_logo' action=''  enctype='multipart/form-data'>\n              <input type=\"hidden\" name=\"csrfmiddlewaretoken\" value=\"${csrf_token}\"/>\n              <input type='file' name='logo_m' id='logo_m'>\n              <div class=\"ml3 mt10\" style=\"color:#999;\">建议LOGO大小为100px*100px</div>\n              <div class=\"ml3 mt10\" style=\"color:red\" id=\"logo_error_tips\"></div>\n              <div class=\"ml3 mt10\" style=\"color:green\" id=\"logo_success_tips\"></div>\n          </form>\n          <iframe name=\"logo_target_frame\" style=\"display:none;\"></iframe>\n      </div>\n      <!-- jQery库 公共脚本 -->\n      <script src=\"${STATIC_URL}assets/jquery-1.8.2.min.js\"></script>\n      <script src=\"${STATIC_URL}assets/jquery.zeroclipboard-0.2.0/jquery.zeroclipboard.min.js\"></script>\n      <!-- bootstrap JS 公共脚本 -->\n      <script src=\"${STATIC_URL}assets/bootstrap-3.1.1/js/bootstrap.min.js\"></script>\n      <!-- bkdialog -->\n      <script src=\"${STATIC_URL}assets/bkDialog-1.0/js/dialog.js\"></script>\n      <!--select2-->\n      <script src=\"${STATIC_URL}assets/select2-3.5.3/select2.min.js\"></script>\n      <!--[if lt IE 9]>\n        <script src=\"${STATIC_URL}assets/html5shiv-3.7.2.min.js\"></script>\n        <script src=\"${STATIC_URL}assets/respond-1.4.2.min.js\"></script>\n      <![endif]-->\n      <!-- Pass配置文件  -->\n      <script src=\"${STATIC_URL}js/core.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n      <script src=\"${STATIC_URL}js/utils.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n      <script src=\"${STATIC_URL}js/paas_base.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n      <!-- 兼容性设置 -->\n      <!--[if lt IE 6]>\\xe8\\x93\\x9d\\xe9\\xb2\\xb8\\xe6\\x99\\xba\\xe8\\x90\\xa5\\x20\\xe7\\x89\\x88\\xe6\\x9d\\x83\\xe6\\x89\\x80\\xe6\\x9c\\x89<![endif]-->\n      <%block name=\"base_app\">\n      </%block>\n      ${self.body()}\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/base_app.html",
    "content": "<%inherit file=\"/base.html\"/>\n<!-- 左侧导航 start -->\n<%block name='left_content'>\n    <%\n        app_baseinfo = release_record = release_home = unrelease = ''\n        log = app_env = monitor = ''\n        relative_path = APP_PATH\n        if relative_path == SITE_URL or (relative_path.startswith(SITE_URL + \"app/\") and relative_path.endswith(\"info/\")):\n            app_baseinfo = 'selected'\n        elif (relative_path.startswith(SITE_URL + \"release/\") and relative_path.endswith(SITE_URL + \"record/\")) \\\n          or (relative_path.startswith(SITE_URL + \"release/\") and relative_path.endswith(SITE_URL + \"version/\")):\n            release_record = 'selected'\n        elif (relative_path.startswith(SITE_URL + \"release/\") and relative_path.endswith(\"offline/\")):\n            unrelease = 'selected'\n        elif relative_path.startswith(SITE_URL + \"release/\"):\n            release_home = 'selected'\n        elif relative_path.startswith(SITE_URL + \"log/\"):\n            log = 'selected'\n        elif (relative_path.startswith(SITE_URL + \"app/\") and relative_path.endswith(SITE_URL + \"env/\")):\n            app_env = 'selected'\n        elif relative_path.startswith(SITE_URL + \"monitor/\"):\n            monitor = 'selected'\n    %>\n    <div class=\"menu_box\" id=\"menuBar\">\n        <dl class=\"menu\" style=\"border-top:none;\">\n            <dt class=\"menu_title\" style=\"padding: 0;\">\n                <a class=\"\" href='${SITE_URL}app/list/' style=\"padding-left:10px;color:#44B549;\"> 《 返回我的应用</a>\n                <div style=\"padding: 15px 10px 10px;cursor:default\">\n                    <div style=\"display:inline; overflow:visible; position:relative;width:120px;\">\n                        <label style=\"color: #000; width:70px\">应用名称：</label>\n                        <span  id=\"app_info_name_id\"></span>\n                    </div>\n                    <div title=\"${app_code}\" style=\"width:120px;\">\n                        <label style=\"color: #000; width:70px\">应用 ID&nbsp&nbsp：</label>\n                        ${app_code}\n                    </div>\n                    <div id=\"pro-test\" style=\"height:15px;font-size:12px;margin-top:5px;\">\n                        <span class=\"f_l\">快捷入口：</span>\n                        <span data-toggle=\"tooltip\" data-placement=\"top\" title=\"应用未提测或已下架\" style=\"color:#999;width:50px;margin-left:12px;\">测试环境</span>\n                        <span data-toggle=\"tooltip\" data-placement=\"left\" title=\"应用未上线或已下架\" style=\"color:#999;width:50px;margin-left:12px;\">正式环境</span>\n                    </div>\n                </div>\n            </dt>\n        </dl>\n        <!--应用管理-->\n        <dl class=\"menu\">\n                <dt class=\"menu_title\">\n                    <i class=\"icon_menu setting\" ></i>应用管理\n                </dt>\n                <dd class=\"menu_item ${app_baseinfo}\"><a href=\"${SITE_URL}app/${app_code}/info/\">基本信息</a></dd>\n                <dd class=\"menu_item ${app_env}\"><a href=\"${SITE_URL}app/${app_code}/env/\">环境变量</a></dd>\n        </dl>\n        <!--应用部署-->\n        <dl class=\"menu\">\n                <dt class=\"menu_title\">\n                    <i class=\"icon_menu function\"></i>应用部署\n                </dt>\n                <dd class=\"menu_item ${release_home}\"><a href=\"${SITE_URL}release/${app_code}/\">发布部署</a></dd>\n                <dd class=\"menu_item ${unrelease}\"><a href=\"${SITE_URL}release/${app_code}/offline/\">下架</a></dd>\n                <dd class=\"menu_item ${release_record}\"><a href=\"${SITE_URL}release/${app_code}/record/\">发布历史</a></dd>\n        </dl>\n    </div>\n</%block>\n<!-- 左侧导航 end -->\n<!-- 右侧内容 start -->\n<%block name=\"right_content_base\">\n    <%\n        title_msg = ''\n        relative_path = APP_PATH\n        if relative_path == SITE_URL or (relative_path.startswith(SITE_URL + \"app/\") and relative_path.endswith(\"info/\")):\n            title_msg = u'基本信息管理'\n        elif relative_path.startswith(SITE_URL + \"release/history\") or (relative_path.startswith(SITE_URL + \"release/\") and relative_path.endswith(SITE_URL + \"version/\")):\n            title_msg = u'发布历史'\n        elif (relative_path.startswith(SITE_URL + \"release/\") and relative_path.endswith(\"offline/\")):\n            title_msg = u'下架'\n        elif relative_path.startswith(SITE_URL + \"release/\"):\n            title_msg = u'发布部署'\n    %>\n    <div class=\"main_hd\">\n        <h5>&nbsp;</h5>\n        <div class=\"ml10 t_s16\">${title_msg}\n        \t  <%block name=\"title_content\"></%block>\n            <%doc><div class=\"f_r mr20\"><a class=\"btn btn-white btn-default\" href='${SITE_URL}'>返回首页</a></div></%doc>\n        </div>\n    </div>\n    <%block name=\"right_content\">\n    </%block>\n</%block>\n<!-- 右侧内容 end -->\n<%block name=\"base_app\">\n<script>\n    $(function () {\n        BASE_APP.refresh_app_status('${app_code}');\n    })\n</script>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/base_center.html",
    "content": "<%inherit file=\"/base.html\"/>\n\n<!-- 左侧导航 start -->\n<%block name='left_content'>\n    <%\n        user_center = app_create = app_center = developer_tool = newbie_guide = services = server = external_server = faq = esb = saas_center = ''\n        relative_path = APP_PATH\n        if relative_path.startswith(SITE_URL + \"accounts/profile/\"):\n            user_center = 'selected'\n        elif relative_path == (SITE_URL + \"app/\"):\n            app_create = 'selected'\n        elif relative_path.startswith(SITE_URL + \"app/list/\"):\n            app_center = 'selected'\n        elif relative_path.startswith(SITE_URL + \"guide/tools/\"):\n            developer_tool = 'selected'\n        elif relative_path.startswith(SITE_URL + \"engine/server/\"):\n            server = 'selected'\n        elif relative_path.startswith(SITE_URL + \"engine/external_server/\"):\n            external_server = 'selected'\n        elif relative_path.startswith(SITE_URL + \"esb/channel/list\"):\n            esb = 'selected'\n        elif relative_path.startswith(SITE_URL + \"guide/services/\"):\n            services = 'selected'\n        elif relative_path.startswith(SITE_URL + \"guide/newbie/\"):\n           newbie_guide = 'selected'\n        elif relative_path.startswith(SITE_URL + \"saas/\"):\n           saas_center = 'selected'\n    %>\n  <div class=\"menu_box\" id=\"menuBar\">\n    <dl class=\"menu no_extra\" style=\"border-top:none;\">\n      <dt class=\"menu_title clickable ${user_center}\">\n      <a href=\"${SITE_URL}accounts/profile/\"><i class=\"icon_menu icon_menu manage\"></i>个人信息</a>\n      </dt>\n    </dl>\n\n    <dl class=\"menu\">\n      <dt class=\"menu_title\">\n      <i class=\"icon_menu appcenter\"></i>应用中心<i class=\"arrow\"></i>\n      </dt>\n      <dd class=\"menu_item none ${app_create}\"><a href=\"${SITE_URL}app/\">应用创建</a></dd>\n      <dd class=\"menu_item none ${app_center}\"><a href=\"${SITE_URL}app/list/\">我的应用</a></dd>\n      <!-- 超级管理员才有权限查看，我们版本暂时不显示  -->\n      % if request.user.is_staff and request.user.is_superuser:\n        <dd class=\"menu_item none ${saas_center}\"><a href=\"${SITE_URL}saas/list/\">内置应用</a></dd>\n      % endif\n    </dl>\n   \n    <!-- 超级管理员才有权限查看 -->\n    % if request.user.is_staff and request.user.is_superuser:\n      <dl class=\"menu\">\n        <dt class=\"menu_title clickable ${server}\">\n        <a href=\"${SITE_URL}engine/server/\"><i class=\"icon_menu task\"></i>服务器信息</a>\n        </dt>\n      </dl>\n      <dl class=\"menu\">\n        <dt class=\"menu_title clickable ${external_server}\">\n        <a href=\"${SITE_URL}engine/external_server/\"><i class=\"icon_menu db\"></i>第三方服务</a>\n        </dt>\n      </dl>\n    % endif\n\n    <dl class=\"menu\">\n      <dt class=\"menu_title clickable ${newbie_guide}\">\n      <a href=\"${SITE_URL}guide/newbie/\"><i class=\"icon_menu guide\"></i>新手指南</a>\n      </dt>\n    </dl>\n\n    <dl class=\"menu\">\n      <dt class=\"menu_title clickable ${services}\">\n      <a href=\"${SITE_URL}guide/services/\"><i class=\"icon_menu service\"></i>服务介绍</a>\n      </dt>\n    </dl>\n    \n    <!-- 超级管理员才有权限查看, NOTE: 合并一行, 为了自动化生成开源版本方便 -->\n    % if request.user.is_staff and request.user.is_superuser:\n    <!-- esb manage -->\n    <!-- 超级管理员才有权限查看, NOTE: 合并一行, 为了自动化生成开源版本方便 -->\n    <dl class=\"menu\"> <dt class=\"menu_title clickable ${esb}\"> <a href=\"${SITE_URL}esb/manager/index/\" target=\"_blank\"><i class=\"icon_menu esb\"></i>API网关</a> </dt> </dl>\n    % else:\n    <!-- 超级管理员才有权限查看, NOTE: 合并一行, 为了自动化生成开源版本方便 -->\n    <dl class=\"menu\"> <dt class=\"menu_title clickable ${esb}\"> <a href=\"${SITE_URL}esb/api_docs/system/\" target=\"_blank\"><i class=\"icon_menu esb\"></i>API文档</a> </dt> </dl>\n    % endif\n\n  </div>\n</%block>\n<!-- 左侧导航 end -->\n\n<!-- 右侧内容 start -->\n<%block name=\"right_content_base\">\n    <%block name=\"right_content\">\n    </%block>\n</%block>\n<!-- 右侧内容 end -->\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/csrf_failure.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>CSRF验证失败</title>\n<link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\"/>\n<style type=\"text/css\">\n\tbody {\n\t\tmin-width: initial !important;\n\t\tbackground: none;\n\t}\n</style>\n</head>\n\n<body style=\"font-family:Microsoft Yahei;margin-left: -800px\" class=\"king-errorpage-middle\">\n\t<!--HTML-->\n\t<div class=\"king-exception-box king-login-page\" style=\"width:1600px\">\n\t\t<img src=\"/static/img/error/403.png\">\n\t\t<h1>CSRF验证失败</h1>\n\t\t<div>\n\t\t\t<p>您看到此消息是由于该站点在提交表单时需要一个CSRF cookie。此项是出于安全考虑，以确保您的浏览器没有被第三方劫持。</p>\n\t\t\t<p>如果您已经设置浏览器禁用cookies，请重新启用，至少针对这个站点，全部HTTPS请求，或者同源请求（same-origin）启用cookies。</p>\n\t\t\t<p style=\"margin-top:10px\"><a href=\"${LOGOUT_URL}\">重新登录</a></p>\n\t\t</div>\n\t</div>\n</body>\n\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/developer_403.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>您没有开发权限(403页)</title>\n<link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\"/>\n<style type=\"text/css\">\n    body {\n        min-width: initial !important;\n        background: none;\n    }\n    .king-errorpage-middle .king-exception-box h1 {\n        line-height: 1.8;\n        font-size: 24px;\n    }\n</style>\n</head>\n\n<body style=\"font-family:Microsoft Yahei;\" class=\"king-errorpage-middle\">\n    <!--HTML-->\n    <div class=\"king-exception-box king-login-page\">\n        <img src=\"/static/img/error/403.png\">\n        <h1>您没有开发权限，请到联系管理员添加开发权限！</h1>\n    </div>\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/engine/external_server.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n<!-- 右侧内容 start -->\n<div class=\"box-info full\">\n  <div class=\"main-header\">\n    <span>第三方服务信息</span>\n  </div>\n  <div class=\"dev_center_module\">\n    <h4 class=\"dev_module_title\">\n            &nbsp\n           <button type=\"button\" class=\"btn-info btn-xs env_add_btn f_r\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-plus\"></span>添加第三方服务</button>\n    </h4>\n     <table class=\"table table-bordered dev_env_table mt10\" id=\"user_env_table\">\n        <thead>\n            <tr>\n                <th width=\"14%\">IP</th>\n                <th width=\"10%\">端口</th>\n                <th width=\"15%\">用户名</th>\n                <th width=\"15%\">密码</th>\n                <th width=\"16%\">类别</th>\n                <th width=\"6%\">启用</th>\n                <th width=\"13%\">操作</th>\n            </tr>\n        </thead>\n        <tbody>\n        % if servers:\n            % for server in servers:\n                <tr class=\"env_record\">\n                    <input  type=\"hidden\" class=\"server_id\" disabled value=\"${server.id}\" />\n                    <td>\n                        <input class=\"form-control server_ip\" disabled value=\"${server.server_data.get('ip_address') or ''}\" placeholder=\"请输入服务器IP\"/>\n                    </td>\n                    <td>\n                        <input  type=\"number\" min=\"1\" max=\"65535\" class=\"form-control server_port\" disabled value=\"${server.server_data.get('ip_port', '')}\" placeholder=\"请输入端口\"/>\n                    </td>\n                    <td>\n                        <input class=\"form-control username\" disabled value=\"${server.server_data.get('username', '')}\" placeholder=\"请输入用户名\"/>\n                    </td>\n                    <td>\n                        <input class=\"form-control password\" disabled value=\"${server.server_data.get('password', '')}\" placeholder=\"请输入密码\"/>\n                    </td>\n                    <td>\n                        <select class=\"form-control server_cate\" disabled placeholder=\"请选择服务器类型\">\n                            % for cate in third_cates:\n                                <option value=\"${cate[0]}\" ${'selected' if server.category=='${cate[0]}' else ''} >${cate[1]}</option>\n                            % endfor\n                        </select>\n                    </td>\n                    <td>\n                        <span class=\"server_active\" data=\"${'1' if server.is_active else '0'}\">${u\"是\" if server.is_active else u\"否\"}</span>\n                    </td>\n                    <td>\n                        <button type=\"button\" class=\"btn-info btn-xs env_save_btn\">保存</button>\n                        <button type=\"button\" class=\"btn-xs env_cancel_btn\">取消</button>\n                        % if not server.is_active:\n                            <a href=\"###\" title=\"编辑\" class=\"dev_env_opera env_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>\n                        % endif\n                        <a href=\"###\" value=\"${server.id}\" title=\"删除\" class=\"dev_env_opera env_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>\n                        % if not server.is_active:\n                            <a href=\"###\" title=\"激活\" class=\"dev_env_opera env_active_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span></a>\n                        % else:\n                            <a href=\"###\" title=\"刷新\" class=\"dev_env_opera env_refresh_btn\"><span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span></a>\n                        % endif\n                    </td>\n                </tr>\n            % endfor\n        % else:\n            <tr id=\"no_record_row\"><td colspan=\"8\"><center>没有第三方服务信息</center></td></tr>\n        % endif\n        </tbody>\n    </table>\n    <h4 class=\"dev_module_title mt30\">使用说明</h4>\n    <div class=\"env_introduce_box\">\n        <p>RabbitMQ服务是用来做应用后台任务（celery任务）的消息队列 </p>\n        <p>RabbitMQ服务可部署在任意一台服务器上，但需保证<code>15672</code>和<code>5672</code>端口未被占用 </p>\n        <p>端口默认<code>15672</code>(一般不需要更改) </p>\n        <p>只能添加一台RabbitMQ服务 </p>\n        <p>只有管理员可以管理第三方服务信息 </p>\n        <hr>\n    </div>\n  </div>\n</div>\n</%block>\n<script src=\"${STATIC_URL}js/paas_engine_third.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/engine/server.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n<!-- 右侧内容 start -->\n<div class=\"box-info full\">\n  <div class=\"main-header\">\n    <span>服务器信息</span>\n  </div>\n  <div class=\"dev_center_module\">\n    <h4 class=\"dev_module_title\">\n            &nbsp\n           <button type=\"button\" class=\"btn-info btn-xs env_add_btn f_r\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-plus\"></span>添加服务器信息</button>\n    </h4>\n     <table class=\"table table-bordered dev_env_table mt10\" id=\"user_env_table\">\n        <thead>\n            <tr>\n                <th width=\"16%\">服务器ID</th>\n                <th width=\"16%\">Token</th>\n                <th width=\"14%\">IP</th>\n                <th width=\"10%\">Agent端口</th>\n                <th width=\"11%\">App服务端口</th>\n                <th width=\"14%\">类别</th>\n                <th width=\"6%\">启用</th>\n                <th width=\"13%\">操作</th>\n            </tr>\n        </thead>\n        <tbody>\n        % if servers:\n            % for server in servers:\n                <tr class=\"env_record\">\n                    <input  type=\"hidden\" class=\"server_id\" disabled value=\"${server.id}\" />\n                    <td>\n                        <span class=\"s_id\">${server.s_id}</span>\n                    </td>\n                    <td>\n                        <span class=\"server_token\">${server.token}</span>\n                    </td>\n                    <td>\n                        <input class=\"form-control server_ip\" disabled value=\"${server.ip_address}\" placeholder=\"请输入服务器IP\"/>\n                    </td>\n                    <td>\n                        <input  type=\"number\" min=\"1\" max=\"65535\" class=\"form-control server_port\" disabled value=\"${server.ip_port}\" placeholder=\"请输入Agent端口\"/>\n                    </td>\n                    <td>\n                        <input  type=\"number\" min=\"1\" max=\"65535\" class=\"form-control app_port\" disabled value=\"${server.app_port}\" placeholder=\"请输入App服务端口\"/>\n                    </td>\n                    <td>\n                        <select class=\"form-control server_cate\" disabled placeholder=\"请选择服务器类别\">\n                            <option value=\"tapp\" ${'selected' if server.category=='tapp' else ''} >测试服务器</option>\n                            <option value=\"app\" ${'selected' if server.category=='app' else ''}  >正式服务器</option>\n                        </select>\n                    </td>\n                    <td>\n                        <span class=\"server_active\" data=\"${'1' if server.is_active else '0'}\">${u\"是\" if server.is_active else u\"否\"}</span>\n                    </td>\n                    <td>\n                        <button type=\"button\" class=\"btn-info btn-xs env_save_btn\">保存</button>\n                        <button type=\"button\" class=\"btn-xs env_cancel_btn\">取消</button>\n                        <!-- 未激活服务器才能编辑，修改ip、端口等信息 -->\n                        % if not server.is_active:\n                            <a href=\"###\" title=\"编辑\" class=\"dev_env_opera env_edit_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-edit\"></span></a>\n                        % endif\n                        <a href=\"###\" value=\"${server.id}\" title=\"删除\" class=\"dev_env_opera env_del_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\"></span></a>\n                        % if not server.is_active:\n                            <a href=\"###\" title=\"激活\" class=\"dev_env_opera env_active_btn\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-saved\"></span></a>\n                        % else:\n                            <a href=\"###\" title=\"刷新\" class=\"dev_env_opera env_refresh_btn\"><span aria-hidden=\"true\" class=\"glyphicon  glyphicon-refresh\"></span></a>\n                        % endif\n                    </td>\n                </tr>\n            % endfor\n        % else:\n            <tr id=\"no_record_row\"><td colspan=\"8\"><center>没有服务器信息</center></td></tr>\n        % endif\n        </tbody>\n    </table>\n    <h4 class=\"dev_module_title mt30\">使用说明</h4>\n    <div class=\"env_introduce_box\">\n        <p>AppServer是在开发中心上注册的应用部署的服务器 </p>\n        <p>Agent端口：PaaSAgent 的启动端口 </p>\n        <p>App服务端口：App服务器上，App代理服务Nginx端口 </p>\n        <p>如果要停用已激活的服务器，点击页面上的删除按钮(<span aria-hidden=\"true\" class=\"glyphicon glyphicon-remove-circle\" style=\"color: #44b549;\"></span>)删除服务器即可；删除后， 将无法在该机器上部署应用</p>\n        <p>如果启用新的机器， 则之后的部署操作， 都会在新的机器上进行；此时若 nginx 没有变更，用户访问服务还是老机器上的，需变更 nginx，将测试/正式环境指向新的机器，并重新加载配置</p>\n        <p>如果进行机器迁移， 即要停用某个机器， 将服务迁移到新的机器，请按以下步骤执行：<br>\n            <span class=\"ml20\">1. 停用老机器</span> <br>\n            <span class=\"ml20\">2. 注册并激活新机器</span> <br>\n            <span class=\"ml20\">3. 对所有已上线应用， 执行重新上线</span> <br>\n            <span class=\"ml20\">4. 修改nginx.conf中测试/正式环境机器配置， 重新加载配置</span> <br>\n            <span class=\"ml20\">5. 完成迁移</span> <br>\n        </p>\n        <p>测试环境/正式环境分别只能激活一台服务器</p>\n        <p>如果用到数据库， 需要对激活的服务器授权</p>\n        <p>只有管理员可以管理服务器信息 </p>\n    </div>\n  </div>\n</div>\n</%block>\n<script src=\"${STATIC_URL}js/paas_engine.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error1.html",
    "content": "<%inherit file=\"/base_app.html\"/>\n<%block name=\"right_content\">\n    <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n        <div class=\"t_c mt30\">出错了！应用不存在！</div>\n    </div>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error2.html",
    "content": "<%inherit file=\"/base_app.html\"/>\n<%block name=\"right_content\">\n    <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n        <div class=\"t_c mt30\">您没有权限！</div>\n    </div>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error3.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n    <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n        <div class=\"t_c mt30\">出错了！应用不存在！</div>\n    </div>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error4.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n    <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n        <div class=\"t_c mt30\">您没有权限！</div>\n    </div>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error_dialog1.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>错误信息</title>\n    </head>\n    <body style=\"font-family:Microsoft Yahei;\">\n        <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n            <div class=\"t_c mt30\">出错了！应用不存在！</div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error_dialog2.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>错误信息</title>\n    </head>\n    <body style=\"font-family:Microsoft Yahei;\">\n        <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n            <div class=\"t_c mt30\">您没有权限！</div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error_dialog3.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>错误信息</title>\n    </head>\n    <body style=\"font-family:Microsoft Yahei;\">\n        <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n            <div class=\"t_c mt30\">出错了！应用不存在！</div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/error/app_error_dialog4.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>错误信息</title>\n    </head>\n    <body style=\"font-family:Microsoft Yahei;\">\n        <div class=\"dev_center_wrap dev_center_module\" data-index=\"0\" style=\"display: block;\">\n            <div class=\"t_c mt30\">您没有权限！</div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/guide/newbie.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n    <link href=\"${STATIC_URL}css/guide_newbie.${CSS_SUFFIX}?v=${STATIC_VERSION}\" rel=\"stylesheet\">\n    <%\n      import settings\n      img_dir = 'dev_guide_qcloud'\n    %>\n    <!-- 右侧内容 start -->\n    <div class=\"col_main\">\n        <!-- 根据开发者中心内容 ，嵌入时可拷贝col_main 中的代码到对应开发者中心的节点内 -->\n        <div class=\"box-info full\">\n            <div class=\"main-header\"><span>新手指南</span></div>\n            <div class=\"main-nav\">\n                <div class=\"king-pearls row\">\n                    <div class=\"king-pearl\">\n                        <a data-index=\"0\" class=\"anchor-link\" href=\"#step1\">\n                            <span class=\"king-pearl-number\">1</span>\n                            <span class=\"king-pearl-title\">安装环境</span>\n                        </a>\n                    </div>\n                    <div class=\"king-pearl\">\n                        <a data-index=\"1\" class=\"anchor-link\" href=\"#step2\">\n                            <span class=\"king-pearl-number\">2</span>\n                            <span class=\"king-pearl-title\">创建应用</span>\n                        </a>\n                    </div>\n                    <div class=\"king-pearl\">\n                        <a data-index=\"2\" class=\"anchor-link\" href=\"#step3\">\n                            <span class=\"king-pearl-number\">3</span>\n                            <span class=\"king-pearl-title\">配置修改</span>\n                        </a>\n                    </div>\n                    <div class=\"king-pearl\">\n                        <a data-index=\"3\" class=\"anchor-link\" href=\"#step4\">\n                            <span class=\"king-pearl-number\">4</span>\n                            <span class=\"king-pearl-title\">开发项目</span>\n                        </a>\n                    </div>\n                    <div class=\"king-pearl\">\n                        <a data-index=\"4\" class=\"anchor-link\" href=\"#step5\">\n                            <span class=\"king-pearl-number\">5</span>\n                            <span class=\"king-pearl-title\">部署项目</span>\n                        </a>\n                    </div>\n                </div>\n            </div>\n            <ul class=\"king-timeline\">\n\t\t\t\t<li class=\"time-label open\">\n                    <a name=\"step1\"></a>\n                    <div class=\"king-timeline-header\"><span class=\"king-bg-blue num\">1</span>本地开发环境安装 <i class=\"bk-icon icon-angle-down pull-right\"></i></div>\n                    <div class=\"king-timeline-item\">\n                        <div class=\"king-timeline-body\">\n                            <ol class=\"guide-list\">\n                                <li>本地开发环境搭建教程 <a href=\"https://docs.bk.tencent.com/blueapps/USAGE.html#2-%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%EF%BC%88python%EF%BC%89\" target=\"_blank\">点击了解</a> ;</li>\n                                <br>\n                                <strong>注意：应用测试、正式部署时会自动安装运行环境，并部署应用</strong>\n                            </ol>\n                        </div>\n                    </div>\n                </li>\n                <li class=\"time-label open\">\n                    <a name=\"step2\"></a>\n                    <div class=\"king-timeline-header\"><span class=\"king-bg-blue num\">2</span>通过以下几个步骤来创建您的应用 <i class=\"bk-icon icon-angle-down pull-right\"></i></div>\n                    <div class=\"king-timeline-item\">\n                        <div class=\"king-timeline-body\">\n                            <ol class=\"guide-list\">\n                                <li>点击左侧导航中的“应用创建”;</li>\n                                <li>填写应用基本注册信息（应用 ID、代码仓库信息等）;</li>\n                            </ol>\n                        </div>\n                    </div>\n                </li>\n                <li class=\"time-label open\">\n                    <a name=\"step3\"></a>\n                    <div class=\"king-timeline-header\"><span class=\"king-bg-blue num\">3</span>配置修改 <i class=\"bk-icon icon-angle-down pull-right\"></i></div>\n                    <div class=\"king-timeline-item\">\n                        <div><strong>Python开发框架（2.0.0）：</strong></div>\n                        <div class=\"king-timeline-body\">\n                            <strong>示例1：<a href=\"${SITE_URL}media/framework_py.tar.gz\">点击下载Python开发框架(2.0.0)代码 </a> ，将框架代码放到自己的代码仓库中，并按以下提示修改：</strong>\n                            <ol class=\"guide-list\">\n                                <li>config/__init__.py 文件: `APP_CODE`(应用ID) 和 `SECRET_KEY`(应用TOKEN)\n                                    <span>（开发中心 -> 点击应用ID -> 基本信息 中可以查看到这两个值的信息）;</span>\n                                </li>\n\n                                <li>config/__init__.py 文件: BK_URL 的值设置为: <code>${paas_host}</code>;\n                                </li>\n                                <li>config/dev.py 文件：DATABASES（请创建本地开发数据库，并修改配置信息）;</li>\n                                <li>config/stag.py 文件：DATABASES（请创建测试环境数据库，并修改配置信息）;</li>\n                                <li>config/prod.py 文件：DATABASES（请创建正式环境数据库，并修改配置信息）。</li>\n                                <p class=\"mt5\"><strong><code>注意：</code>测试环境 和 正式环境 的数据库需要对 AppServer 授权</strong>\n                                (\n                                % if active_server_ips:\n                                    <code>${active_server_ips}</code>\n                                % else:\n                                    <a href=\"${SITE_URL}engine/server/\" target=\"_blank\">添加并激活 AppServer</a>\n                                % endif\n                                )\n                                </p>\n                                <li class=\"mt10\">若需要使用 celery，请修改以下配置：(<a href=\"http://bkopen-10032816.file.myqcloud.com/paas/celery_packages.zip\">点击下载 celery 开发指引</a>)</li>\n                                <span class=\"ml40\">config/default.py 文件：IS_USE_CELERY的值设置为: <code>True</code></span><br>\n                                <span class=\"ml40\">config/dev.py 文件：BROKER_URL（请创建本地开发的 celery消息队列，并修改配置信息，推荐使用 RabbitMQ）</span><br>\n                                <span class=\"ml40\">config/default.py 文件：CELERY_IMPORTS（添加celery任务模块）</span>\n                            </ol>\n                            <br>\n\n                        </div>\n\n\n                    </div>\n                </li>\n\n                <li class=\"time-label\">\n                    <a name=\"step4\"></a>\n                    <div class=\"king-timeline-header\"><span class=\"king-bg-blue num\">4</span>开发项目 <i class=\"bk-icon icon-angle-down pull-right\"></i></div>\n                    <div class=\"king-timeline-item\" style=\"overflow: hidden; display: none;\">\n                        <div class=\"king-timeline-body\">\n                            <ol class=\"guide-list\">\n                            <strong id='step4.2'>Django数据库操作</strong>\n\n                                    <div id=\"django18_db\">\n                                        <p>应用使用Django自带的Migration来管理数据库。Migration是django自带的同步models和数据库的数据迁移工具，Migration能够检测对models的更改并同步到数据库。</p>\n                                        <p>Migration的使用（<a href=\"###\" id=\"show_migrate\" class=\"show_simple_18\">查看详细使用</a>）方法如下:</p>\n                                        <div id=\"simple_migrate\" style=\"display: block;\">\n                                            <ol>\n                                                <li>执行 manage.py migrate;</li>\n                                                <li>执行 manage.py startapp yourappname、添加yourappname到config/default.py文件\"INSTALLED_APPS_CUSTOM\"中;</li>\n                                                <li>在django的models.py中建立数据库模型后，执行manage.py makemigrations yourappname;</li>\n                                                <li>执行manage.py migrate yourappname。</li>\n                                            </ol>\n                                            <p>注意： 必须按上面的步骤顺序执行，在执行第（1）步时最好不要加入自己的app，除非您保证自己的app已经有migration的initial文件。</p>\n                                        </div>\n                                        <div id=\"detail_migrate\" style=\"display: none;\">\n                                            <ol>\n                                                <li>执行 manage.py migrate（作用是在数据库中创建django自带的表，包括django_migrations的表，用来存放数据库的变更历史）;</li>\n                                                <li>执行 manage.py startapp yourappname、添加yourappname到config/settings_custom.py文件\"INSTALLED_APPS_CUSTOM\"中;</li>\n                                                <li>在django的models.py中建立数据库模型后，执行manage.py makemigrations yourappname;</li>\n                                                <li>步骤（3）执行成功后再执行manage.py migrate yourappname ，这时候数据库中已经建立了您定义的表;</li>\n                                                <li>在工程中新增app，只需再次执行2—4的步骤即可; </li>\n                                                <li>更改models.py的内容，只需执行manage.py makemigrations yourappname和 manage.py migrate yourappname即可。</li>\n                                            </ol>\n                                            <p>注意： 必须按上面的步骤顺序执行，在执行第（1）步时最好不要加入自己的app，除非您保证自己的app已经有migration的initial文件。</p>\n                                        </div>\n                                    </div>\n                            </ol>\n                            <ol class=\"guide-list mt10\">\n                                <strong id='step4.3'>本地启动项目</strong>\n                                <div>\n                                    <ol>\n                                        <li>本地配置host：127.0.0.1 dev.xxx.xxx（注意：必须与PaaS平台主站在同一个一级域名）;</li>\n                                        <li>执行python manage.py runserver 127.0.0.1:8000 启动项目;</li>\n                                        <li>访问http://dev.xxx.xxx:8000/ 即可进行本地开发调试。</li>\n                                    </ol>\n                                </div>\n                            </ol>\n                        </div>\n                    </div>\n                </li>\n\n                <li class=\"time-label\">\n                    <a name=\"step5\"></a>\n                    <div class=\"king-timeline-header\"><span class=\"king-bg-blue num\">5</span>部署项目 <i class=\"bk-icon icon-angle-down pull-right\"></i></div>\n                    <div class=\"king-timeline-item\" style=\"overflow: hidden; display: none;\">\n                        <div class=\"king-timeline-body\">\n                            <p>操作入口：“我的应用 -> 点击应用ID -> 应用部署” </p>\n                            <ol class=\"guide-list\">\n                                <li>测试部署：将应用代码在测试环境上进行部署，部署成功后就可以在测试环境中使用您的应用。</li>\n                                <li>正式部署：将应用代码在正式环境上进行部署，部署成功后就可以在正式环境中使用您的应用。</li>\n                                <li>下架操作：系统将应用代码从您选择的环境上撤销部署，届时用户将无法访问该应用，但是该应用的数据库依然保留。</li>\n                            </ol>\n                        </div>\n                    </div>\n                </li>\n\n                <li>\n                    <i class=\"bk-icon icon-clock king-bg-gray\"></i>\n                </li>\n            </ul>\n        </div>\n    </div>\n    <!-- 右侧内容 end -->\n</%block>\n\n<script type=\"text/javascript\">\n$(function() {\n    // 锚点跳转并打开对应步骤\n    var  anchor_links = $('.anchor-link'),\n         time_label = $('.time-label');\n\n    anchor_links.click(function() {\n        var index = $(this).attr('data-index');\n        if ($(time_label[index]).hasClass('open')) {\n            return;\n        }else{\n            $(time_label[index]).addClass('open');\n            $(time_label[index]).children(\".king-timeline-item\").slideDown(350);\n        };\n    });\n\n    $(\".king-timeline-header\").click(function(e) {\n        e.preventDefault();\n        var time_li = $(this).parent(\"li\");\n        var time_cont = $(this).next(\".king-timeline-item\");\n\n        if (time_li.hasClass(\"open\")) {\n            time_cont.slideUp(350);\n            time_li.removeClass(\"open\");\n        } else {\n            time_cont.slideDown(350);\n            time_li.addClass(\"open\");\n        }\n    });\n    $(\"#show_south\").click(function(){\n            if($(\"#show_south\").hasClass(\"show_simple\")){\n                $(\"#show_south\").removeClass(\"show_simple\");\n                $(\"#show_south\").html(\"查看简单使用\");\n                $(\"#simple_south\").hide();\n                $(\"#detail_south\").show();\n            }else{\n                $(\"#show_south\").addClass(\"show_simple\");\n                $(\"#show_south\").html(\"查看详细使用\");\n                $(\"#detail_south\").hide();\n                $(\"#simple_south\").show();\n            }\n        });\n    $(\"#show_migrate\").click(function(){\n            if($(\"#show_migrate\").hasClass(\"show_simple_18\")){\n                $(\"#show_migrate\").removeClass(\"show_simple_18\");\n                $(\"#show_migrate\").html(\"查看简单使用\");\n                $(\"#simple_migrate\").hide();\n                $(\"#detail_migrate\").show();\n            }else{\n                $(\"#show_migrate\").addClass(\"show_simple_18\");\n                $(\"#show_migrate\").html(\"查看详细使用\");\n                $(\"#detail_migrate\").hide();\n                $(\"#simple_migrate\").show();\n            }\n        });\n});\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/guide/services.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n\n<%block name=\"right_content\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_guide.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n\n<div data-index=\"0\" class=\"col_main\">\n    <div class=\"box-info full\" >\n        <div class=\"main-header\"><span>服务介绍</span></div>\n        <div class=\"\">\n            <div class=\"service-wrap\">\n               <div class=\"service-tab service-tab0\">\n                    <ul class=\"nav nav-tabs\">\n                        <li class=\"item active\">\n                            <a href=\"javascript:;\">\n                                <span class=\"service-icon service-icon1\"></span>\n                                <span class=\"zh\">创建应用</span>\n                            </a>\n                        </li>\n                        <li class=\"item\">\n                            <a href=\"javascript:;\">\n                                <span class=\"service-icon service-icon2\"></span>\n                                <span class=\"zh\">自动部署</span>\n                            </a>\n                        </li>\n                        <li class=\"item\">\n                            <a href=\"javascript:;\">\n                                <span class=\"service-icon service-icon7\"></span>\n                                <span class=\"zh\">安全</span>\n                            </a>\n                        </li>\n                        <!-- <li class=\"item\">\n                            <a href=\"javascript:;\">\n                                <span class=\"service-icon service-icon9\"></span>\n                                <span class=\"zh\">第三方服务</span>\n                            </a>\n                        </li> -->\n                    </ul>\n                    <div class=\"service-inner service-inner0\">\n                        <!--应用管理开始-->\n                        <div class=\"inner-item row\">\n                            <div class=\"item\">\n                                <div class=\"text-area col-md-12\">\n                                    <h4><a href=\"${SITE_URL}app/\">快速创建</a></h4>\n                                    <div>开发中心提供应用全自助创建服务。</div>\n                                    <div>另外，除了快速创建应用以外，应用基本信息管理也是全自助模式开放。</div>\n                                </div>\n                                <!-- <div class=\"image-area col-md-3\">\n                                </div> -->\n                            </div>\n                            <div class=\"item\">\n                                <div class=\"text-area col-md-12\">\n                                    <h4>角色管理</h4>\n                                    <div>开发中心应用维护者角色分为创建者、负责人；其中，系统超级管理员拥有所有应用的管理权限。</div>\n                                </div>\n                                <!-- <div class=\"image-area col-md-3\">\n                                </div> -->\n                            </div>\n                         </div>\n                        <!--应用管理结束-->\n                        <!--自动部署开始-->\n                        <div class=\"div-hide inner-item row\" style=\"display: none;\">\n                            <div class=\"item\">\n                                <div class=\"text-area col-md-12\">\n                              <h4>自动部署</h4>\n                                    <div>开发中心提供在线一键自动部署应用服务。</div>\n                                </div>\n                            </div>\n                        </div>\n                        <!--自动部署结束-->\n                        <!--安全开始-->\n                        <div class=\"inner-item row div-hide\" style=\"display: none;\">\n                            <div class=\"item\">\n                                <div class=\"text-area col-md-12\">\n                                    <h4>web安全方案</h4>\n                                    <div>开发中心应用开发框架集成了常见web安全防护方案，包括SQL注入、跨站、挂马，为应用安全保驾护航。</div>\n                                </div>\n                            </div>\n                        </div>\n                        <!--安全结束-->\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n</%block>\n\n<script>\n$(function(){\n    var switch_item = function () {\n        var tab_items = $('div.service-tab0 ul.nav-tabs li.item');\n        var content_items = $('div.service-inner0 div.inner-item');\n        var c_name = 'active';\n\n        tab_items.bind('click', function (e) {\n            var target = $(this);\n            var index = target.index();\n            tab_items.removeClass(c_name);\n            target.addClass(c_name);\n            content_items.hide().eq(index).show();\n        })\n\n        var tab_items1 = $('div.service-tab1 ul.nav-tabs li.item');\n        var content_items1 = $('div.service-inner1 div.inner-item');\n\n        tab_items1.bind('click', function (e) {\n            var target = $(this);\n            var index = target.index();\n            tab_items1.removeClass(c_name);\n            target.addClass(c_name);\n            content_items1.hide().eq(index).show();\n        })\n    }\n    switch_item();\n\n    $('ul.tab_navs li').click(function(){\n            $('ul.tab_navs li').removeClass('selected');\n            $(this).addClass('selected');\n            var index = $(this).attr('data-index');\n            $('div[data-index]').hide();\n            $('div[data-index='+index+']').show();\n        });\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/home/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <script type=\"text/javascript\">\n      //在js中使用site_url,则这个javascript片段一定要保留\n      var site_url = \"${SITE_URL}\";            // app的url前缀,在ajax调用的时候，应该加上该前缀\n      var static_url = \"${STATIC_URL}\";\n    </script>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n\t<title>工作台 | OpsAny</title>\n\t<meta name=\"keywords\" content=\"技术运营中台\" />\n\t<meta name=\"description\" content=\"技术运营中台\" />\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />\n\n\t<link href=\"${STATIC_URL}favicon.ico\" rel=\"Shortcut Icon\">\n    <!-- 以下两个插件用于在IE8以及以下版本浏览器支持HTML5元素和媒体查询，如果不需要用可以移除 -->\n    <!--[if lt IE 9]>\n    <script src=\"${STATIC_URL}assets/html5shiv-3.7.2.min.js\"></script>\n    <script src=\"${STATIC_URL}assets/respond-1.4.2.min.js\"></script>\n    <![endif]-->\n    <link href=\"${STATIC_URL}assets/jquery-ui-1.11.0.custom/jquery-ui.css\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}assets/bk-icon-2.0/iconfont.css\">\n    <!-- bkdialog -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}assets/bkDialog-2.0/css/dialog.css\">\n    <link rel=\"stylesheet\" href=\"${STATIC_URL}home/css/index.${CSS_SUFFIX}?v=${STATIC_VERSION}\"/>\n    <link rel=\"stylesheet\" href=\"${STATIC_URL}user_center/css/weixin.${CSS_SUFFIX}?v=${STATIC_VERSION}\"/>\n</head>\n<body>\n\t<nav class=\"navbar\">\n\t\t<a href=\"${SITE_URL}\" class=\"logo\">\n\t\t\t<img src=\"${STATIC_URL}home/images/logo.png\" style=\"border: 0;\">\n\t\t</a>\n\t\t<ul class=\"nav-list\">\n\t\t\t<li class=\"active\">\n\t\t\t\t<a href=\"${SITE_URL}\">\n\t\t\t\t\t<p>应用面板</p>\n\t\t\t\t\t<span class=\"line\"></span>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t% if request.user.has_developer_perm:\n\t\t\t<li>\n\t\t\t\t<a href=\"${SITE_URL}app/list/\" target=\"_blank\">\n\t\t\t\t\t<p>开发中心</p>\n\t\t\t\t\t<span class=\"line\"></span>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t% endif\n\t\t</ul>\n\t\t<div class=\"userInfo\">\n\t\t\t<span class=\"userName\">${request.user.username}</span>\n\t\t\t<div class=\"userImg\">\n\t\t\t\t% if request.user.is_superuser:\n\t\t\t\t\t<img class=\"avatar\" src=\"${STATIC_URL}img/getadminheadimg.jpg\"/>\n\t\t\t\t% else:\n\t\t\t\t\t<img class=\"avatar\" src=\"${STATIC_URL}img/getheadimg.jpg\"/>\n\t\t\t\t% endif\n\t\t\t</div>\n\t\t\t<span class=\"caret\"></span>\n\t\t\t<div class=\"dropdown\">\n\t\t\t\t<span class=\"caret-up\"></span>\n\t\t\t\t<ul class=\"dropdown-menu\">\n\t\t\t\t\t% if request.user.has_developer_perm:\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"${SITE_URL}accounts/profile/\" target=\"_blank\">\n\t\t\t\t\t\t\t<i class=\"icon icon-userinfo\"></i><span>个人信息</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t% else:\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"/login/accounts/user/list/\" target=\"_blank\">\n\t\t\t\t\t\t\t<i class=\"icon icon-userinfo\"></i><span>个人信息</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t% endif\n\t\t\t\t\t% if request.user.is_superuser:\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<a href=\"/login/accounts/user/list/\" target=\"_blank\">\n\t\t\t\t\t\t\t\t<i class=\"icon icon-um\"></i><span>用户管理</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t% endif\n                    % if wx_type:\n                        <li id=\"weixin_action\">\n                            % if wx_userid:\n                                <a href=\"###\" class=\"unbind_weixin\"><i class=\"icon icon-unbind-weixin\"></i><span>解绑微信</span></a>\n                            % else:\n                                % if wx_type == 'mp':\n                                    <a href=\"###\" class=\"bind_mp_weixin\"><i class=\"icon icon-bind-weixin\"></i><span>绑定微信</span></a>\n                                % elif wx_type == 'qy' or wx_type == 'qywx':\n                                    <a href=\"###\" class=\"bind_qy_weixin\"><i class=\"icon icon-bind-weixin\"></i><span>绑定微信</span></a>\n                                % endif\n                            % endif\n                        </li>\n                    % endif\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"${SITE_URL}accounts/logout/\">\n\t\t\t\t\t\t\t<i class=\"icon icon-logout\"></i><span>注销</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t</nav>\n\t<div class=\"container cl\">\n\t\t<div class=\"main-left\">\n\t\t\t<div class=\"left-title cl\">\n\t\t\t\t<p>应用面板</p>\n\t\t\t\t<div class=\"conf\">\n\t\t\t\t\t<div class=\"edit active\">\n\t\t\t\t\t\t<i class=\"gear\"></i>\n\t\t\t\t\t\t<span>排序</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comp\">完成</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<ul class=\"app-list cl\" id=\"app-list\">\n\t\t\t% for index, user_app in enumerate(user_app_list):\n\t\t\t    <li class=\"app-list-item\"  app_code=\"${user_app.get('code')}\" style=\"display:${'' if index < first_show_count else 'none'}\">\n\t\t\t        <a href=\"${user_app.get('link')}\" target=\"_blank\">\n\t\t\t            <img class=\"item\" src=\"${user_app.get('logo') if index < first_show_count else ''}\" img_url=\"${user_app.get('logo')}\"  onerror=\"javascript:this.src='${STATIC_URL}home/images/img-zw.png';\"/>\n\t\t\t            <p class=\"item-detail\">${user_app.get('name', '--')}</p>\n\t\t\t            % if user_app.get('introduction', ''):\n\t\t\t            <span class=\"mask\">\n\t\t\t                <span class=\"mask-text\">${user_app.get('introduction')}</span>\n\t\t\t            </span>\n\t\t\t            % endif\n\t\t\t        </a>\n\t\t\t    </li>\n\t\t\t% endfor\n\t\t\t</ul>\n\t\t\t% if user_app_count > first_show_count:\n\t\t\t\t<div class=\"loadMore\">\n\t\t\t\t\t<p class=\"load-text\">加载更多</p>\n\t\t\t\t\t<img class=\"loading\" src=\"${STATIC_URL}home/images/loading.png\"/>\n\t\t\t\t</div>\n\t\t\t% endif\n\t\t</div>\n\t\t<div class=\"main-right\">\n\t\t\t<p class=\"right-title\">常用链接</p>\n\t\t\t<ul class=\"list\">\n\t\t\t\t% if request.user.is_superuser:\n\t\t\t\t\t<li class=\"list-item\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"/login/accounts/user/list/\">用户管理</a>\n\t\t\t\t\t</li>\n\t\t\t\t% endif\n\t\t\t\t% if request.user.has_developer_perm:\n\t\t\t\t<li class=\"list-item\">\n\t\t\t\t\t<a target=\"_blank\" href=\"${SITE_URL}accounts/profile/\">个人信息</a>\n\t\t\t\t</li>\n\t\t\t\t% else:\n\t\t\t\t<li class=\"list-item\">\n\t\t\t\t\t<a target=\"_blank\" href=\"/login/accounts/\">个人信息</a>\n\t\t\t\t</li>\n\t\t\t\t% endif\n\t\t\t\t% for _l in links:\n\t\t\t\t\t<li class=\"list-item\" style=\"text-overflow: ellipsis;overflow: hidden;\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"${_l.link}\">${_l.name}</a>\n\t\t\t\t\t</li>\n\t\t\t\t% endfor\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n\t<footer class=\"footer\">\n\t    <!--\n\t\t<p>\n\t\t    <a href=\"http://www.womaiyun.com/\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">官网</a>\n\t\t    | <a href=\"${SITE_URL}\" target=\"_blank\" hotrep=\"hp.footer.feedback\" class=\"link\">工作台</a>\n\t\t</p>\n\t\t-->\n\t\t<p>Copyright © 2012-${NOW.year} OpsAny. All Rights Reserved.</p>\n\t</footer>\n    <script src=\"${STATIC_URL}assets/jquery-1.10.2.min.js\"></script>\n    <script src=\"${STATIC_URL}assets/jquery-ui-1.11.0.custom/jquery-ui.js\"></script>\n    <script src=\"${STATIC_URL}home/js/csrftoken_v3.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n    <!-- bkdialog -->\n    <script src=\"${STATIC_URL}assets/bkDialog-2.0/js/dialog.js\"></script>\n\t<script src=\"${STATIC_URL}home/js/index.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n    <script src=\"${STATIC_URL}user_center/js/weixin.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/base_history.html",
    "content": "<%inherit file=\"/base_app.html\"/>\n\n<%block name=\"right_content\">\n<div class=\"main_hd\">\n    <h4>&nbsp;</h4>\n    <div class=\"title_tab\" id=\"topTab\">\n        <ul class=\"tab_navs title_tab\" data-index=\"0\">\n            <li data-index=\"0\" class=\"tab_nav first js_top\n          %if tab == 'record':\n          selected\n          %endif\n        \"><a href=\"${SITE_URL}release/${app_code}/record/\">发布记录</a></li>\n\n            <li data-index=\"0\" class=\"tab_nav first js_top\n          %if tab == 'version':\n          selected\n          %endif\n          \"><a href=\"${SITE_URL}release/${app_code}/version/\">版本历史</a></li>\n        </ul>\n    </div>\n</div>\n\n<%block name=\"content\">\n</%block>\n\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/home.html",
    "content": "<%inherit file=\"/base_app.html\"/>\n\n<%block name=\"right_content\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_release.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n<!-- 部署-start -->\n% if app:\n<div class=\"deploy_box\">\n    <div class=\"deploy_block env_block\">\n        <h4>运行状态</h4>\n\n        <!-- 运行环境列表start -->\n        <table class=\"table env_list\">\n            <tbody>\n                <tr>\n                    <!--测试环境-->\n                    <td>\n                        <strong class=\"env_name\">测试环境</strong>\n                        % if app.is_already_test and app.state not in [1]:\n                            <span class=\"status status_success\" name_state=\"test\">正在运行</span>\n                        % else:\n                            % if not app.is_already_test and app.state not in [1]:\n                                <span class=\"status status_normal\" name_state=\"test\">已下架</span>\n                            % else:\n                                <span class=\"status status_normal\" name_state=\"test\">未部署</span>\n                            % endif\n                        % endif\n                        <span id=\"test_state\">\n                            % if app.is_already_test and app.state not in [1]:\n                                <a href=\"${app_test_url}\" target='_blank' id=\"deploy_test_url\">\n                                    <span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-right\"></span>马上访问\n                                </a>\n                            % else:\n                                <span class=\"glyphicon glyphicon-chevron-right ml40\" style=\"color:#999;\"\n                                data-toggle=\"tooltip\" data-placement=\"right\" title=\"应用未进行测试部署或者已经下架，访问入口关闭！\"></span>\n                                马上访问\n                            % endif\n\n                        </span>\n                    </td>\n\n                    <!--正式环境-->\n                    <td>\n                        <strong class=\"env_name\">正式环境</strong>\n                        % if app.is_already_online and app.state not in [0, 1]:\n                            <span class=\"status status_success\" name_state=\"pro\">正在运行</span>\n                        % else:\n                            % if not app.is_already_online and app.state in [0]:\n                                <span class=\"status status_normal\" name_state=\"pro\">已下架</span>\n                            % else:\n                                <span class=\"status status_normal\" name_state=\"pro\">未部署</span>\n                            % endif\n                        % endif\n                        <span id=\"pro_state\">\n                            % if app.is_already_online and app.state not in [0, 1]:\n                                <a href=\"${app_prod_url}\" target='_blank' id=\"deploy_pro_url\">\n                                    <span aria-hidden=\"true\" class=\"glyphicon glyphicon-chevron-right\"></span>马上访问\n                                </a>\n                            % else:\n                                <span class=\"glyphicon glyphicon-chevron-right ml40\" style=\"color:#999;\"\n                                data-toggle=\"tooltip\" data-placement=\"right\" title=\"应用未进行上线部署或者已经下架，访问入口关闭！\"></span>\n                                马上访问\n                            % endif\n                        </span>\n                    </td>\n                </tr>\n\n            </tbody>\n        </table>\n        <!-- 运行环境列表end -->\n    </div>\n\n    <!--部署操作-->\n    <div class=\"deploy_block\">\n\n    <h4>部署操作\n      % if app.state in [8]:\n      <span class=\"ml40 appstate\">应用正在“测试部署”，请稍后进行其他操作！</span>\n      % elif app.state in [9]:\n      <span class=\"ml40 appstate\">应用正在“正式部署”，请稍后进行其他操作！</span>\n      % elif app.state in [10]:\n      <span class=\"ml40 appstate\">应用正在“下架”，请稍后进行其他操作！</span>\n      % else:\n        % if lastest_record:\n        <span class=\"ml20 appstate\" style=\"font-size: 14px;margin-top: 5px;\">\n          <a href=\"${SITE_URL}release/${app_code}/record/\" title=\"最近操作\">\n            最近操作：${lastest_record['username']} 于${lastest_record['datetime']} 进行${lastest_record['operate_type']}操作${lastest_record['result']}\n          </a>\n        </span>\n        % endif\n      % endif\n      <span style=\"float: right;font-size: 14px;margin-top: 5px;\">\n        <a target=\"_blank\" href=\"${SITE_URL}guide/newbie/#step3\" title=\"开发框架代码&配置修改\">\n          开发框架代码 & 配置修改\n          <span aria-hidden=\"true\" class=\"glyphicon glyphicon-question-sign\"></span>\n        </a>\n        <!-- <a href=\"${SITE_URL}guide/faq\" target=\"_blank\" title=\"下载本地安装包\" style=\"margin-left:20px;\"> -->\n          <!-- 下载本地安装包 -->\n          <!-- <span aria-hidden=\"true\" class=\"glyphicon glyphicon-question-sign\"></span> -->\n        <!-- </a> -->\n      </span>\n    </h4>\n\n        <div class=\"deploy_tab_box\" id=\"deploy_input\">\n            <ul class=\"nav nav-tabs nav-justified\" id=\"deploy_tab\">\n\n              % if page != \"unrelease\":\n\n                <!--测试部署tab-->\n                <li class=\"active\" class=\"width: 50px;\" role=\"presentation\" data-id=\"test_form\"><a href=\"#\">测试部署</a></li>\n\n                <!--正式部署tab-->\n                % if app.state in [3]:\n                    <li role=\"presentation\" class=\"\" data-id=\"online_form\" ><a href=\"#\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-ban-circle\" style=\"display:none;\"></span>正式部署</a></li>\n                % elif app.state in [4]:\n                  <li role=\"presentation\" class=\"disabled_status\" data-id=\"online_form\" ><a href=\"#\" title=\"应用已上线，请重新测试部署后，再进行正式部署\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-ban-circle\"></span>正式部署</a></li>\n                % elif app.state in [0]:\n                  <li role=\"presentation\" class=\"disabled_status\" data-id=\"online_form\" ><a href=\"#\" title=\"应用已下架，请重新测试部署后，再进行正式部署\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-ban-circle\"></span>正式部署</a></li>\n                % else:\n                    <li role=\"presentation\" class=\"disabled_status\" data-id=\"online_form\" ><a href=\"#\" title=\"应用未部署，请测试部署后，再进行正式部署\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-ban-circle\"></span>正式部署</a></li>\n                % endif\n\n              % else:\n\n                <!--下架tab-->\n                % if app.state in [0, 3, 4] and (app.is_already_test or app.is_already_online):\n                    <li role=\"presentation\" class=\"\" data-id=\"offline_form\" ><a href=\"#\"><span aria-hidden=\"true\" class=\"glyphicon glyphicon-ban-circle\" style=\"display:none;\"></span>下架</a>\n                    <li class=\"disabled_status\" data-id=\"placeholder\" > </li>\n\n                % else:\n                    <li role=\"presentation\" class=\"disabled_status\" data-id=\"offline_form\" ><a href=\"#\" title=\"应用未部署或者已下架，不能进行下架操作\" ><span aria-hidden=\"true\" class=\"glyphicon glyphicon-ban-circle\"></span>下架</a>\n                    <li class=\"disabled_status\" data-id=\"placeholder\" > </li>\n                % endif\n\n              % endif\n\n\n            </ul>\n            <!--操作-->\n            <div class=\"deploy_content\">\n                <!-- 测试部署表单start -->\n                <div id=\"test_form\" n_form>\n                </div>\n                <!-- 测试部署表单end -->\n\n                <!--正式部署start -->\n                <div id=\"online_form\" n_form style=\"display:none;\">\n                </div>\n                <!--正式部署end-->\n\n                <!-- 下架操作表单start -->\n                <div id=\"offline_form\" n_form\n                  % if page != \"unrelease\":\n                  style=\"display:none;\"\n                  % endif\n                >\n\n\n                </div>\n                <!-- 下架操作表单end -->\n            </div>\n        </div>\n\n        <!--流程图-->\n        <div id=\"release-flow-before\" class=\"pt20\" style=\"display:none;\">\n        </div>\n        <div id=\"release-flow\" class=\"pt20 mb10\" style=\"display:none;\">\n        </div>\n        <div id=\"tips_info\" class=\"pt20 mr30\" style=\"margin-left:20px;max-width:820px;\">\n        </div>\n\n        <div id=\"detail_button_2\" style=\"margin-top:15px; margin-left:30px;display:none;\">\n            <a href=\"javascript:REL_MANAGER.get_app_release_detail()\" title=\"点击查看详情\" >\n                <span aria-hidden=\"true\" class=\"glyphicon glyphicon-list\" style=\"margin-right:5px;\"></span>\n                <span id=\"detail_click\">点击查看详情</span>\n            </a>\n        </div>\n        <div id=\"detail_log\" style=\"margin-top:15px; margin-left:30px;display:none;\">\n            <textarea id=\"detail_info\" class=\"form-control\" style=\"width:850px; height:300px;background-color: #000; color: #FFF;\" readonly>\n            </textarea>\n        </div>\n\n    </div>\n</div>\n<!-- 部署end -->\n% else:\n    <div class=\"error-app\">您访问的应用信息不存在！</div>\n% endif\n</%block>\n\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script type=\"text/javascript\">\n  var first_load = true;\n  var app_code = '${app_code}';\n  $(function(){\n\n    $('#deploy_tab').find('li[role=\"presentation\"]').on('click',function() {\n      var msg_id = '';\n      var show_tip = '';\n      var type = undefined;\n      % if app.state == 8:\n        var msg_id = '#release_msg_test';\n        var show_tip = '测试';\n        var type = 1;\n      % elif app.state == 9:\n        var msg_id = '#release_msg_pro';\n        var show_tip = '上线';\n        var type = 2;\n      % endif\n\n      var app_state = ${app.state};\n      var obj = $(this);\n      var static_url = '${STATIC_URL}';\n\n      % if page == \"unrelease\":\n        var is_disabled = obj.hasClass(\"disabled_status\");\n        if (is_disabled) {\n          obj.removeClass(\"disabled_status\")\n        }\n        REL_MANAGER.deploy_tab_show(obj, first_load, app_code, app_state, msg_id, show_tip, type, static_url);\n        if (is_disabled) {\n          obj.addClass(\"disabled_status\")\n        }\n      % else:\n        REL_MANAGER.deploy_tab_show(obj, first_load, app_code, app_state, msg_id, show_tip, type, static_url);\n      % endif\n\n      // REL_MANAGER.deploy_tab_show(obj, first_load, app_code, app_state, msg_id, show_tip, type, static_url);\n      // 置为false\n      if (app_state == 8 || app_state == 9 || app_state == 10) {\n        first_load = false;\n      }\n    });\n\n    $('#deploy_tab').find('li:eq(0)').click();\n\n    // 发起状态更新\n    REL_MANAGER.check_unfinished_task(app_code);\n\n    // ---------------------- operation --------------------------------\n    // 测试环境celery选择\n    $('#is_use_celery').live('click', function(){\n      var is_checked = $(this).attr('checked');\n      REL_MANAGER.check_use_celery(is_checked);\n    })\n    $('#is_use_celery_beat').live('click', function(){\n      var is_checked = $(this).attr('checked');\n      REL_MANAGER.check_use_celery_beat(is_checked);\n    })\n\n    //删除操作\n    $('#app_del').live('click', function(){\n      REL_MANAGER.app_del(this, '${app_code}');\n    })\n    //提测操作\n    $('#app_test').live('click', function(){\n      REL_MANAGER.app_test(this, '${app_code}');\n    })\n\n    //上线操作\n    $('#app_online').live('click', function(){\n      REL_MANAGER.app_online(this, '${app_code}');\n    })\n\n    //下架测试环境\n    $('#app_offline').live('click', function(){\n      REL_MANAGER.app_offline(this, '${app_code}');\n    })\n  });\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/offline_form.part",
    "content": "% if app:\n    <form class=\"form form-horizontal\">\n        <div class=\"form-group error alert alert-danger\" id=\"offline_form_error\" style=\"display: none\"></div>\n        <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">下架环境</label>\n            <div class=\"col-xs-10\">\n               <label>\n                 % if app.is_already_test:\n                 <input type=\"checkbox\" id=\"t_check\" value='0' checked> 测试环境\n                 % else:\n                 <input type=\"checkbox\" id=\"t_check\" value='0' disabled='disabled'> 测试环境\n                 % endif\n                </label>\n\n                <label class=\"ml40\">\n                  % if app.is_already_online:\n                  <input type=\"checkbox\" id=\"o_check\" value='1' checked> 正式环境\n                  % else:\n                  <input type=\"checkbox\" id=\"o_check\" value='1' disabled='disabled'> 正式环境\n                  % endif\n                </label>\n            </div>\n          </div>\n\n          <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\"></label>\n            <div class=\"col-xs-10\">\n\n                <button type=\"button\" id=\"app_offline\" n_btn='deploy' class=\"\n                % if app.state in [8, 9, 10] or (not (app.is_already_test or app.is_already_online)):\n                disabled\n                % endif\n                btn btn-success btn-lg deploy_btn\">下架</button>\n\n              </div>\n          </div>\n          <div class=\"popover bottom deploy_popover deploy_detail\" style=\"display:none;\">\n            <div class=\"popover-content\">\n                <div id=\"release_msg_offline\"></div>\n            </div>\n        </div>\n    </form>\n% else:\n    <div>获取下架信息失败！</div>\n% endif\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/online_form.part",
    "content": "<!--上线申请 -->\n% if app:\n          <!-- 正式部署表单start -->\n          <form class=\"form form-horizontal\">\n          % if app.state in [4]:\n          <div class=\"form-group error alert alert-danger\" id=\"online_form_error\">\n            <span aria-hidden=\"true\" class=\"glyphicon glyphicon-info-sign\"></span>应用已上线，请重新测试部署后，再执行正式部署操作！\n          % elif app.state in [0]:\n          <div class=\"form-group error alert alert-danger\" id=\"online_form_error\">\n            <span aria-hidden=\"true\" class=\"glyphicon glyphicon-info-sign\"></span>应用已下架，请重新测试部署后，再执行正式部署操作！\n          % elif app.state in [1]:\n          <div class=\"form-group error alert alert-danger\" id=\"online_form_error\">\n            <span aria-hidden=\"true\" class=\"glyphicon glyphicon-info-sign\"></span>应用未进行测试部署，请测试部署后，再执行正式部署操作！\n          % else:\n          <div class=\"form-group error alert alert-danger\" id=\"online_form_error\" style=\"display: none\">\n          % endif\n          </div>\n\n\n          <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">部署版本</label>\n            <div class=\"col-xs-6\">\n                  <input type=\"text\" class=\"form-control\" disabled=\"\" value=\"${vcs_url}\">\n            </div>\n            </div>\n          </div>\n\n          <div class=\"form-group\" style=\"display: none;\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">显示新特性</label>\n            <div class=\"col-xs-10\">\n              <label><input type=\"checkbox\" id=\"is_tips\"> 是否显示新特性</label>\n            </div>\n          </div>\n          <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">更新特性</label>\n            <div class=\"col-xs-6\">\n              <textarea  rows=\"4\" class=\"form-control\" value=\"\" id=\"features\" placeholder=\"请输入内容...\" />\n            </div>\n            <div class=\"col-xs-4\">\n            </div>\n          </div>\n          <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">修改bug</label>\n            <div class=\"col-xs-6\">\n              <textarea rows=\"4\" class=\"form-control\" id=\"bugs\" value=\"\" placeholder=\"请输入内容...\" />\n            </div>\n            <div class=\"col-xs-4\">\n            </div>\n          </div>\n\n            <div class=\"form-group\">\n              <label for=\"inputEmail3\" class=\"col-xs-2 control-label\"></label>\n              <div class=\"col-xs-10\">\n\n                <button type=\"button\" id=\"app_online\" n_btn='deploy' class=\"\n                % if app.state in [0, 4, 8, 9, 10]:\n                diabled\n                % endif\n                btn btn-success btn-lg deploy_btn\">一键部署</button>\n\n              </div>\n            </div>\n            <div class=\"popover bottom deploy_popover deploy_detail\" style=\"display:none;\">\n                <div class=\"popover-content\">\n                  <div id=\"release_msg_pro\"></div>\n                </div>\n          </div>\n        </form>\n% else:\n    <div>获取正式部署信息失败！</div>\n% endif\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/record.html",
    "content": "<%inherit file=\"/release/base_history.html\"/>\n<%block name=\"content\">\n<div class=\"mt10\">\n    <select class=\"form-control\" onchange=\"search_app_record(this);\" id=\"app_record\" style=\"width:200px;margin-left:10px;\">\n        <option value=\"0\" selected>全部记录</option>\n        <option value=\"1\">提测记录</option>\n        <option value=\"2\">上线记录</option>\n        <option value=\"3\">下架记录</option>\n    </select>\n</div>\n<div id=\"record_list\">\n\n</div>\n</%block>\n\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function(){\n  var app_code = '${app_code}';\n  $(\"#app_record\").on('change', function() {\n    var operate_id = $(this).val();\n    REL_MANAGER.search_app_record(app_code, operate_id);\n  });\n  REL_MANAGER.search_app_record(app_code, 0);\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/record_list.part",
    "content": "<div class=\"mt10 ml10 mr10\">\n    <table data-sortable=\"\" class=\"table table-hover table-striped\" data-sortable-initialized=\"true\">\n        <thead>\n            <tr>\n                <th style=\"width:10%\">操作类型</th>\n                <th style=\"width:15%\">操作人</th>\n                <th style=\"width:12%\">操作结果</th>\n                <th style=\"width:17%\">操作时间</th>\n                <th style=\"width:32%\">选择参数</th>\n                <th style=\"width:10%\">&nbsp;&nbsp;</th>\n            </tr>\n        </thead>\n        <tbody>\n            % if record_list:\n                % for record in record_list:\n                    <tr style=\"cursor: pointer;\">\n                        <td>${record['operate_type']}</td>\n                        <td>${record['operate_user']}</td>\n                        % if record['is_done']:\n                          % if record['is_success']:\n                              <td><label class=\"label label-success\">成功</label></td>\n                          % else:\n                              <td><label class=\"label label-danger\">失败</label></td>\n                          % endif\n                        % else:\n                          <td><label class=\"label label-success\">正在处理...</label></td>\n                        % endif\n                        <td>${record['operate_time']}</td>\n                        <td>${record['extra_data']}</td>\n                        <td><i class=\"glyphicon glyphicon-chevron-down\" style=\"color:silver\"></i></td>\n                    </tr>\n                    <tr class='detail' style=\"display:none;\">\n                        <td colspan=\"6\">\n                        <pre style='width: 954px;line-height: 20px;'>${record['detail']}<hr>${record['task_detail']}</pre>\n                        </td>\n                    </tr>\n                % endfor\n            % else:\n                <tr id=\"none\">\n                     <td colspan=\"6\" style=\"text-align: center;\">没有记录\n                 </tr>\n            % endif\n        </tbody>\n    </table>\n</div>\n\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n  $(function(){\n    $(\"table tbody tr\").click(function () {\n      var obj = $(this);\n      REL_MANAGER.pub_record_show(obj);\n    })\n  });\n\n</script>\n\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/release_flow.part",
    "content": "<style>\n.inactive{\n\tcolor:#b1bcc5;\n}\n.ml120{\n\tmargin-left:120px;\n}\n</style>\n<div class=\"ml30\">\n\t<div class=\"\">\n\t\t% if operate_id == 3:\n\t\t\t<span class=\"icon_goback\" title=\"正在测试部署中不能返回\">返回上一层</span>\n\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#F3BA41;\">正在进行测试部署，请稍候...</span>\n\t\t% elif operate_id == 4:\n\t\t\t<span class=\"icon_goback\" title=\"正在上线部署中不能返回\">返回上一层</span>\n\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#F3BA41;\">正在进行上线部署，请稍候...</span>\n    % elif operate_id == 5:\n\t\t\t<span class=\"icon_goback\" title=\"正在下架中不能返回\">返回上一层</span>\n\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#F3BA41;\">正在进行下架操作，请稍候...</span>\n\n\t\t% elif operate_id == 0:\n\t\t\t<a class=\"icon_goback\" href=\"###\" onclick=${\"REL_MANAGER.back_saas()\" if is_saas else \"REL_MANAGER.back()\"} title=\"返回上一层\">返回上一层</a>\n\t\t\t% if is_success:\n\t\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#44b549;\">测试部署成功</span>\n\t\t\t% else:\n\t\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#F00;\">测试部署失败</span>\n\t\t\t% endif\n\n\t\t% elif operate_id == 1:\n\t\t\t<a class=\"icon_goback\" href=\"###\" onclick=${\"REL_MANAGER.back_saas()\" if is_saas else \"REL_MANAGER.back()\"} title=\"返回上一层\">返回上一层</a>\n\t\t\t% if is_success:\n\t\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#44b549;\">上线部署成功</span>\n\t\t\t% else:\n\t\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#F00;\">上线部署失败</span>\n\t\t\t% endif\n\n\t\t% elif operate_id == 2:\n\t\t\t<a class=\"icon_goback\" href=\"###\" onclick=${\"REL_MANAGER.back_saas()\" if is_saas else \"REL_MANAGER.back()\"} title=\"返回上一层\">返回上一层</a>\n\t\t\t% if is_success:\n\t\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#44b549;\">下架成功</span>\n\t\t\t% else:\n\t\t\t\t<span style=\"font-size: 16px;margin-left:10px;color:#F00;\">下架失败</span>\n\t\t\t% endif\n\t\t% endif\n\t</div>\n\n  <input id=\"logs\" type=\"hidden\" value=\"${event_log | h}\">\n</div>\n<script>\n$(function(){\n\t$(\"#detail_button\").show();\n  var logs = $(\"#logs\").val();\n  $(\"#detail_info\").text(logs);\n\n  // if operate_id in [0, 1, 2]:\n    // if($(\"#detail_log\").is(\":hidden\") && !$(\"#release-flow\").is(\":hidden\")){\n    if($(\"#detail_log\").is(\":hidden\")){\n      $(\"#detail_log\").show();\n      var scrollTop = $(\"#detail_info\")[0].scrollHeight;\n      $(\"#detail_info\").scrollTop(scrollTop);\n      $(\"#detail_click\").html(\"点击隐藏详情\");\n    } else {\n      // scroll to bottom\n      var scrollTop = $(\"#detail_info\")[0].scrollHeight;\n      $(\"#detail_info\").scrollTop(scrollTop - $(\"#detail_info\").height());\n    }\n  // endif\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/test_form.part",
    "content": "% if app:\n        <form class=\"form form-horizontal\">\n        <div class=\"form-group error alert alert-danger\" id=\"test_form_error\" style=\"display: none\"></div>\n\n        <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">部署版本</label>\n            <div class=\"col-xs-6\">\n              <input type=\"text\" class=\"form-control\" disabled=\"\" value=\"${vcs_url}\">\n            </div>\n            <div class=\"col-xs-4\"></div>\n        </div>\n\n        <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">启用服务</label>\n\n              % if is_service_rabbitmq_active:\n              <div class=\"col-xs-6\">\n                <label class=\"mr20\">\n                  % if app.is_use_celery:\n                  <input type=\"checkbox\" id=\"is_use_celery\" checked=\"checked\"/>\n                  % else:\n                  <input type=\"checkbox\" id=\"is_use_celery\" />\n                  % endif\n                  启用celery</label>\n\n                <label class=\"mr20\">\n                  % if app.is_use_celery_beat:\n                  <input type=\"checkbox\" id=\"is_use_celery_beat\" checked=\"checked\"/>\n                  % else:\n                  <input type=\"checkbox\" id=\"is_use_celery_beat\" />\n                  % endif\n                  启用周期性任务</label>\n              </div>\n              <div class=\"col-xs-4\"></div>\n              % else:\n              <div class=\"col-xs-9\">\n                <label class=\"mr20\">\n                  <input type=\"checkbox\" id=\"is_use_celery\" disabled/>\n                  <S>启用celery</S></label>\n\n                <label class=\"mr20\">\n                  <input type=\"checkbox\" id=\"is_use_celery_beat\" disabled/>\n                  <S>启用周期性任务</S></label>\n                <br>\n                <font color='red'> 未注册激活第三方服务: Rabbitmq. 无法启用celery和周期性任务.</font><a href=\"${SITE_URL}engine/external_server/\"> [开发者中心-第三方服务] </a>\n              </div>\n              % endif\n        </div>\n\n        <!--测试部署操作-->\n        <div class=\"form-group\">\n            <label for=\"inputEmail3\" class=\"col-xs-2 control-label\"></label>\n            <div class=\"col-xs-10\">\n                <button type=\"button\" id=\"app_test\" n_btn='deploy' class=\"\n                % if app.state in [8, 9, 10]:\n                disabled\n                % endif\n                btn btn-success btn-lg deploy_btn\">一键部署</button>\n            </div>\n        </div>\n        <!--测试部署详情-->\n        <div class=\"popover bottom deploy_popover deploy_detail\" style=\"display:none;\">\n              <div class=\"popover-content\">\n                <div id=\"release_msg_test\"></div>\n            </div>\n        </div>\n        </form>\n% else:\n    <div>获取测试部署信息失败！</div>\n% endif\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/release/version.html",
    "content": "<%inherit file=\"/release/base_history.html\"/>\n\n<%block name=\"content\">\n<div id=\"record_list\">\n    <table class=\"table border_top mb20\" style=\"text-align:left;\" id=\"table\">\n     %if version_list:\n            % for version in version_list:\n            <tr class=\"border_bottom\" id=\"message\" style=\"cursor: pointer\">\n            <td style=\"width:25%\">\n              <p class=\"ml5 mb5\"><span style=\"color:#999999\">版本号：</span>${version['version']}</p>\n              <p class=\"ml5 mb5 \"><span style=\"color:#999999\">发布者：</span>${version['publisher']}</p>\n              <p class=\"ml5 mb5\"><span style=\"color:#999999\">发布日期：</span>${version['pubdate']}</p>\n            </td>\n\n            <td style=\"width:35%\">\n              <div class=\"row-fluid ml5\">\n                <span class=\"t_b span3\" id=\"info\" style=\"color:#008000\">更新特性：</span>\n                <span class=\"span9\" id=\"feature_l\" style=\"margin-left:-20px\">\n                  % if version['features']:\n                    % for feature in version['features']:\n                    <div class=\"mt5\">${feature}</div>\n                    % endfor\n                  % else:\n                    <div class=\"mt5\">暂无特性信息</div>\n                  % endif\n                </span>\n              </div>\n            </td>\n\n            <td style=\"width:30%\">\n              <div class=\"row-fluid ml5\">\n                <span class=\"t_b span3\" id=\"info\" style=\"color:#FF0033\">修复BUG：</span>\n                <span class=\"span9\" id=\"feature_l\" style=\"margin-left:-30px\">\n                  % if version['bug']:\n                  % for bug in version['bug']:\n                  <div class=\"mt5\">${bug}</div>\n                  % endfor\n                  % else:\n                  <div class=\"mt5\">暂无bug信息</div>\n                  % endif\n                </span>\n              </div>\n            </td>\n\n            </tr>\n            % endfor\n        % else:\n          <tr id=\"none\" class=\"t_c\">\n            <td colspan=\"5\">没有版本信息\n          </tr>\n        % endif\n    </table>\n</div>\n</%block>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/resource/index.html",
    "content": "<%inherit file=\"/base_center.html\"/>\r\n<%block name=\"right_content\">\r\n<div class=\"\">\r\n    <div class=\"box-info full\">\r\n        <div class=\"main-header\">\r\n            <span>\r\n                资源下载\r\n            </span>\r\n        </div>\r\n        % if resources:\r\n          <div class=\"download-list\">\r\n            % for i in resources:\r\n                <div class=\"download-item\">\r\n                    <div class=\"download-logo\">\r\n                        <img src=\"${i[\"icon_url\"]}\" alt=\"\">\r\n                    </div>\r\n                    <div class=\"download-detail\">\r\n                        <h5 class=\"download-title\">${i[\"name\"]}</h5>\r\n                        <div class=\"download-metadata\">\r\n                            <span class=\"download-version\">版本号：${i[\"version\"]}</span>\r\n                            <span class=\"download-size\">大小：${i[\"size\"]}</span>\r\n                        </div>\r\n                        <a href=\"${i[\"download_url\"]}\" class=\"download-btn\" target=\"_blank\">下载</a>\r\n                        % if i[\"doc_url\"]:\r\n                        <a href=\"${i[\"doc_url\"]}\" class=\"doc-url-btn\" target=\"_blank\">查看文档</a>\r\n                        % endif\r\n                    </div>\r\n                </div>\r\n            % endfor\r\n          </div>\r\n        % else:\r\n          <div class=\"paas-no-item\">无可用资源</div>\r\n        % endif\r\n    </div>\r\n</div>\r\n</%block>\r\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/saas/info.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_app.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n        <input type=\"hidden\" value=\"${app_code}\" id=\"app_code_id\">\n        <div class=\"main_hd\">\n            <h4>&nbsp;</h4>\n            <div class=\"title_tab\" id=\"topTab\">\n                <ul class=\"tab_navs title_tab\" data-index=\"0\">\n                    <li data-index=\"0\" class=\"tab_nav first js_top selected\"><a href=\"${SITE_URL}saas/${app_code}/info/\">基本信息</a></li>\n\n                    <li data-index=\"0\" class=\"tab_nav first js_top \"><a href=\"${SITE_URL}saas/${app_code}/release/record/\">发布记录</a></li>\n                </ul>\n            </div>\n        </div>\n        <div class=\"ml50 app-info mt30\">\n            <div class=\"t_b mb10\">基本信息</div>\n            <div class=\"row\">\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">应用ID：</font>${app_info.get('code', '--')}\n                </div>\n                <div class=\"col-sm-8 col-xs-8\">\n                    <font class=\"t_grey\">应用名称：</font>${app_info.get('name', '--') }\n                </div>\n            </div>\n        </div>\n        <hr/>\n        <div class=\"ml50 app-info\">\n            <div class=\"t_b mb10\">访问地址\n            </div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    <font class=\"t_grey\">访问地址：</font> <span id=\"prod_access_span\"></span>\n                </div>\n            </div>\n        </div>\n        <hr/>\n        <div class=\"ml50 app-info\">\n            <div class=\"t_b mb10\">应用简介\n            </div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    <div class=\"introduction\">${app_info.get('introduction', '--')}</div>\n                </div>\n            </div>\n        </div>\n\n        <hr/>\n        <div class=\"ml50 version-info mt30\">\n            <div class=\"t_b mb10\">当前版本信息</div>\n            <div class=\"row\">\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">部署版本：</font>${app_info.get('version', '--') or '--'}\n                </div>\n                <div class=\"col-sm-8 col-xs-8\">\n                    <font class=\"t_grey\">部署文件：</font>${app_info.get('file_name', '--') or '--'}\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-sm-4 col-xs-4\">\n                    <font class=\"t_grey\">文件大小：</font>${app_info.get('file_size', '--') or '--'} (M)\n                </div>\n                <div class=\"col-sm-8 col-xs-8\">\n                    <font class=\"t_grey\">MD5：</font>${app_info.get('md5', '--') or '--'}\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    <font class=\"t_grey\">配置信息：</font><br>\n                    <pre style=\"max-height:200px;white-space: pre-wrap; border:none; border-radius:inherit; background-color: rgba(244, 244, 244, 0.65);\">${app_info.get('settings', '--') or '--'}</pre>\n                </div>\n            </div>\n\n        </div>\n        <hr/>\n\n        <div class=\"ml50\">\n            <div class=\"t_b mb10\">删除应用</div>\n            <div class=\"row\">\n                <div class=\"col-sm-10 col-xs-10\">\n                    % if app_info.get('state', '') == 1:\n                        <div class=\"mb5\">请在删除前与其他同事提前沟通，确定<a href=\"###\" onclick=\"REL_MANAGER.saas_app_del(this, '${app_info.get('code', '')}');\" app_code=\"${app_info.get('code', '')}\" class=\"hit saas_app_del\"><strong>删除</strong></a>!</div>\n                    % else:\n                        <div class=\"mb5\">只有未部署的应用才能删除，已部署过的应用不能删除！</div>\n                    % endif\n                </div>\n            </div>\n        </div>\n        <hr/>\n\n</%block>\n\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script src=\"${STATIC_URL}js/paas_app.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script type=\"text/javascript\">\n    $(function(){\n        APP_INFO.get_access_info('${app_code}');\n    })\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/saas/list.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_app.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <!-- 右侧内容 start -->\n    <div class=\"\">\n        <div class=\"app_center\">\n            <div class=\"box-info full\">\n                <div class=\"main-header\"><span>内置应用</span>\n                    <a class=\"btn btn-green btn-min-w f_r mr10\" href=\"${SITE_URL}saas/0/release/\">上传部署新应用</a>\n                </div>\n                <!--     工具栏 start    -->\n                <div class=\"data-table-toolbar\">\n                    <!--         搜索 start             -->\n                    <div class=\"row\">\n                      <div class=\"col-md-10\" style=\"padding-left:5px;\">\n                        <div id=\"seacher_input\" class=\"form-inline\" style=\"margin-top:-5px;display: none;\">\n                          <input id=\"search_app\" type=\"text\" class=\"form-control\" style=\"width:250px\" placeholder=\"搜索：按ID、名称\" >\n                          <span class=\"close\" id=\"close_span\" style=\"display:none;position:absolute;left:231px;margin-top:16px;cursor: pointer;background-color:#bbbbbb;border-radius:10px;text-align:center;width:22px;height:22px\">×</span>\n                          <select class=\"form-control\"  id=\"set_hide_offline\" style=\"\">\n                            <option value=\"0\" selected>隐藏已下架应用</option>\n                            <option value=\"1\">显示已下架应用</option>\n                          </select>\n                          <button id=\"j_display_all_app\"  class=\"btn btn-azure btn-min-w\" style=\"margin-top:9px;height:34px\">搜索</button>\n                        </div>\n                      </div>\n\n                    <!--<a class=\"f_r\" href=\"http://bk.tencent.com/s-mart/?from=bk_community_devcenter\" target=\"_blank\" style=\"font-size: 13px;margin-top:-10px;\">获取更多应用</a> -->\n                    </div>\n                    <!--     搜索 end    -->\n                </div>\n                <!--     工具栏 end    -->\n                <div class=\"table-responsive\">\n                  <!--     app table -->\n                  <div id=\"table_app\">\n                  </div>\n\n                  <!--     app 总数展示    -->\n                  <div class=\"col-md-2\" style=\"padding-left:0px;\">\n                    <div id=\"app_num_div\" class=\"form-inline mt10\" style=\"display:none;\">共 <strong style=\"color:red;\" id=\"app_num\"></strong> 个应用</div>\n                  </div>\n\n                  <!--     分页 开始    -->\n                  <div class=\"f_r form-inline mt10\" id=\"page\">\n                    <div id=\"pagination_id\" class=\"btn-group\"></div>\n                  </div>\n                  <!--    分页 结束      -->\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 右侧内容 end -->\n</%block>\n\n<!--  分页的样式文件    -->\n<script src=\"${STATIC_URL}js/pagination.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script src=\"${STATIC_URL}js/paas_saas.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function(){\n   // 查询app列表\n  $(\"#j_display_all_app\").click();\n});\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/saas/list_table.part",
    "content": "<table data-sortable=\"\" class=\"table table-hover table-striped\" data-sortable-initialized=\"true\">\n    <thead total_app=\"${total}\">\n        <tr>\n            <th style=\"width:22%\">应用ID</th>\n            <th style=\"width:15%\">应用名称</th>\n            <th style=\"width:15%\">创建者</th>\n            <th style=\"width:10%\">版本</th>\n            <!-- <th style=\"width:15%\">创建时间</th> -->\n            <th style=\"width:10%\">状态</th>\n            <th style=\"width:28%;\">操作</th>\n        </tr>\n    </thead>\n    <tbody>\n        % if app_list:\n            % for _app in app_list:\n            <tr>\n                <td style=\"vertical-align:middle;\">\n                    <div style=\"margin-right:10px;display: inline-block;\">\n                        <a href=\"###\" title=\"点击更换logo\" onclick=\"BASE_APP.modify_app_logo('${_app.code}', 1)\" style=\"display: inherit;padding: 0;\"><img id=\"app_logo_now\" style='width:40px;height:40px' src=\"${_app.logo_url}\" onerror=\"javascript:this.src='${STATIC_URL}img/app_logo/default.png';\"></a>\n                    </div>\n                    <a href=\"${SITE_URL}saas/${_app.code}/info/\" class=\"hit\" title='${_app.code}'>${_app.code}</a>\n                </td>\n                <td style=\"vertical-align:middle;\" title=\"${_app.name}\">\n                        % if len(_app.name) > 15:\n                            ${_app.name[0:15]}...\n                        % else:\n                            ${_app.name}\n                        % endif\n                </td>\n                <td style=\"vertical-align:middle;\">${_app.creater}</td>\n                <td style=\"vertical-align:middle;\">${_app.version or '--'}</td>\n                <!--     创建时间     -->\n                <!-- <td style=\"vertical-align:middle;\">${_app.created_date_display}</td> -->\n                <!--状态 -->\n                <td style=\"vertical-align:middle;\">\n                    % if _app.state in [0, 10]:\n                        <label class=\"label label-default\">${_app.saas_state_display}</label>\n                    % elif _app.state in [1]:\n                        <label class=\"label label-warning\">${_app.saas_state_display}</label>\n                    % elif _app.state in [3, 8]:\n                            <label class=\"label label-info\">${_app.saas_state_display}</label>\n                    % elif _app.state in [4, 9]:\n                        <label class=\"label label-success\">${_app.saas_state_display}</label>\n                    % endif\n                </td>\n                <td style=\"vertical-align:middle;\">\n                    <a href=\"${SITE_URL}saas/${_app.code}/release/\" class=\"hit mr10\">部署</a>\n                    % if _app.state in [1]:\n                        <a href=\"###\" onclick=\"REL_MANAGER.saas_app_del(this, '${_app.code}');\" app_code=\"${_app.code}\" class=\"hit saas_app_del mr10\">删除</a>\n                    % endif\n                    % if _app.state in [0, 3, 4] and _app.is_already_online:\n                        <a href=\"${SITE_URL}saas/${_app.code}/release/offline/\" class=\"hit mr10\">下架</a>\n                    % endif\n                    % if _app.state not in [0, 1] and _app.is_already_online:\n                        <a href=\"${_app.app_prod_url}\" target=\"_blank\" class=\"hit mr10\">访问地址</a>\n                    % endif\n                </td>\n            </tr>\n            % endfor\n        % else:\n            <tr id=\"none\">\n                <td colspan=\"9\" style=\"text-align: center\">您还没有相关应用信息\n            </tr>\n        % endif\n    </tbody>\n</table>\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function(){\n    $(\"#seacher_input\").show();\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/saas/offline.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_release.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_saas.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <!-- 右侧内容 start -->\n    <div class=\"\">\n        <div class=\"app_center\">\n            <div class=\"box-info full\">\n                <div class=\"main-header\">\n                    <span>下架应用【${app_code}】</span>\n                    <input type=\"hidden\" id=\"app_code_id\" value=\"${app_code}\">\n                    <input type=\"hidden\" id=\"app_state_id\" value=\"${app_state}\">\n                </div>\n                <div class=\"deploy_box\">\n                  <form class=\"form form-horizontal\">\n                    <div class=\"form-group\">\n                      <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">当前部署文件：</label>\n                      <div class=\"col-xs-7\">\n                        <label class=\"control-label not-bold\">${file_name}</label>\n                      </div>\n                      <div class=\"col-xs-2\">\n                        <button type=\"button\" id=\"app_offline\" n_btn=\"saas_deploy\" class=\"btn btn-success btn-lg deploy_btn mb0\">下架</button>\n                      </div>\n                    </div>\n\n                    <div class=\"form-group\">\n                      <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">当前部署版本：</label>\n                      <div class=\"col-xs-6\">\n                        <label class=\"control-label not-bold\">${version}</label>\n                      </div>\n                    </div>\n                    <div class=\"form-group\">\n                      <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">文件大小：</label>\n                      <div class=\"col-xs-6\">\n                        <label class=\"control-label not-bold\">${file_size} (M)</label>\n                      </div>\n                    </div>\n\n                    <div class=\"form-group\">\n                      <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">MD5：</label>\n                      <div class=\"col-xs-6\">\n                        <label class=\"control-label not-bold\">${md5}</label>\n                      </div>\n                    </div>\n                    <div class=\"form-group\">\n                      <label for=\"inputEmail3\" class=\"col-xs-2 control-label\">配置信息：</label>\n                      <div class=\"col-xs-7\">\n                        <pre style=\"max-height:200px;white-space: normal; border:none; border-radius:inherit;background-color: rgba(244, 244, 244, 0.65);\">${settings}</pre>\n                      </div>\n                    </div>\n\n                    <div class=\"deploy_box\">\n                      <div class=\"popover bottom deploy_popover deploy_detail\" style=\"display:none; max-width: 940px\">\n                          <div class=\"popover-content\">\n                            <div id=\"release_msg_offline\"></div>\n                          </div>\n                      </div>\n                    </div>\n                  </form>\n                </div>\n\n                <div class=\"deploy_tab_box\" id=\"deploy_input\">\n                    <div class=\"\">\n                        <!--正式部署start -->\n                        <div id=\"offline_form\" n_form style=\"display:none;\">\n                        </div>\n                        <!--正式部署end-->\n\n                    </div>\n                </div>\n\n                <!--流程图-->\n                <div id=\"release-flow-before\" class=\"pt20\" style=\"display:none;\">\n                </div>\n                <div id=\"release-flow\" class=\"pt20 mb10\" style=\"display:none;\">\n                </div>\n                <div id=\"tips_info\" class=\"pt20 mr30\" style=\"margin-left:20px;max-width:820px;\">\n                </div>\n\n                <div id=\"detail_button_2\" style=\"margin-top:15px; margin-left:30px;display:none;\">\n                  <a href=\"javascript:REL_MANAGER.get_app_release_detail()\" title=\"点击查看详情\" >\n                  <span aria-hidden=\"true\" class=\"glyphicon glyphicon-list\" style=\"margin-right:5px;\"></span>\n                  <span id=\"detail_click\">点击查看详情</span>\n                  </a>\n                </div>\n\n                <div id=\"detail_log\" class=\"mt20\" style=\"display:none;\">\n                    <textarea id=\"detail_info\" class=\"form-control\" style=\"height:300px;background-color: #000; color: #FFF;\" readonly=\"\"></textarea>\n                </div>\n                  </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 右侧内容 end -->\n</%block>\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n  $(function(){\n    // 正在部署，则显示状态图\n    var app_code = $(\"#app_code_id\").val();\n    var app_state = $(\"#app_state_id\").val();\n\n    // 未部署的应用外，其他应用需要轮询当前状态\n    if(app_code && app_state != '1'){\n      if(app_state == '8' || app_state == '9' || app_state == '10'){\n        $('button[n_btn=saas_deploy]').attr({\"disabled\":\"disabled\"});\n        REL_MANAGER.refresh_roll(app_code, app_state, '#release_msg_pro', '下架', 3);\n      }\n      // 发起状态更新\n      REL_MANAGER.check_unfinished_task(app_code);\n    }\n  })\n  // 下架操作\n  $('#app_offline').live('click', function(){\n      var app_code = $(\"#app_code_id\").val();\n      REL_MANAGER.confirm_saas_app_offline(this, app_code);\n  })\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/saas/record.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_app.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <input type=\"hidden\" value=\"${app_code}\" id=\"app_code_id\">\n    <input type=\"hidden\" value=\"${app_state}\" id=\"app_state_id\">\n    <div class=\"main_hd\">\n\t    <h4>&nbsp;</h4>\n\t    <div class=\"title_tab\" id=\"topTab\">\n\t        <ul class=\"tab_navs title_tab\" data-index=\"0\">\n\t            <li data-index=\"0\" class=\"tab_nav first js_top\"><a href=\"${SITE_URL}saas/${app_code}/info/\">基本信息</a></li>\n\n\t            <li data-index=\"0\" class=\"tab_nav first js_top selected\"><a href=\"${SITE_URL}saas/${app_code}/release/record/\">发布记录</a></li>\n\t        </ul>\n\t    </div>\n\t</div>\n  % if app_state != 1:\n    <div class=\"mt10\">\n        <select class=\"form-control\" id=\"app_record\" style=\"width:200px;margin-left:10px;\">\n            <option value=\"0\" selected>全部记录</option>\n            <option value=\"2\">上线记录</option>\n            <option value=\"3\">下架记录</option>\n        </select>\n    </div>\n    <div id=\"record_list\"></div>\n  % else:\n    <p class=\"t_c mt20\">没有记录</p>\n  % endif\n</%block>\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function(){\n  var app_code = $(\"#app_code_id\").val();\n  var app_state = $(\"#app_state_id\").val();\n  $(\"#app_record\").on('change', function() {\n    var operate_id = $(this).val();\n    if(app_state != '1'){\n      REL_MANAGER.search_app_record(app_code, operate_id);\n    }\n  });\n  $(\"#app_record\").trigger('change');\n  //REL_MANAGER.search_app_record(app_code, 0);\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/saas/release.html",
    "content": "<%inherit file=\"/base_center.html\"/>\n\n<%block name=\"right_content\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_release.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"${STATIC_URL}css/paas_saas.${CSS_SUFFIX}?v=${STATIC_VERSION}\">\n    <!-- 右侧内容 start -->\n    <div class=\"\">\n        <div class=\"app_center\">\n            <div class=\"box-info full\">\n                <div class=\"main-header\">\n                  % if app_code and app_code not in (0, '0'):\n                    <span>部署应用【${app_code}】</span>\n                    　<input type=\"hidden\" id=\"app_code_id\" value=\"${app_code}\">\n                    　<input type=\"hidden\" id=\"app_state_id\" value=\"${app_state}\">\n                  % else:\n                    <span>上传部署新应用</span>\n                  % endif\n                </div>\n                <div class=\"deploy_box\">\n                  <div class=\"\">\n                    <form  id=\"file_form\" enctype=\"multipart/form-data\" method=\"post\" action=\"${SITE_URL}saas/${app_code}/upload/\" class=\"form form-horizontal\">\n                      <input type=\"hidden\" name=\"csrfmiddlewaretoken\" value=\"${csrf_token}\" />\n                      <label class=\"control-label\">部署文件：</label>\n                      <div class=\"inline-block\">\n                        <a href=\"###\" id=\"saas_upload\" class=\"btn btn-default btn-lg choose-file-btn\">选择文件</a>\n                        <div class=\"inline-block\">\n                            <span id=\"file_version_display\" class=\"import-file-name mr15\" online_file=\"${version_info.get('file_version_display','')}\">${version_info.get('file_version_display','')}</span>\n\n\n                            <div id=\"loading_div\" style=\"display:none\"><img alt=\"loadding\" src=\"${STATIC_URL}img/loading_2_24x24.gif\"> 正在上传...</div>\n                            <div id=\"file_tips_div\" style=\"display:none\">\n                              <span class=\"text-danger\"><i class=\"bk-icon icon-exclamation-triangle t_b\"></i> 请先选择要部署的文件</span>\n                            </div>\n                        </div>\n                        <input name=\"saas_file\" id=\"saas_file\" type=\"file\">\n                      </div>\n                      <div class=\"pull-right\">\n                        <button type=\"button\" id=\"saas_app_online\" n_btn=\"saas_deploy\" class=\"btn btn-success btn-lg deploy_btn\" data-id=\"online_form\">一键部署</button>\n                      </div>\n                      <div id=\"import_msg\" class=\"import-validate text-success\"></div>\n                      <div class=\"popover bottom deploy_popover deploy_detail\" style=\"display:none; max-width: 940px\">\n                        <div class=\"popover-content\">\n                          <div id=\"release_msg_pro\"></div>\n                        </div>\n                      </div>\n                    </form>\n\n                    <span id=\"saas_app_version_id\" style=\"display:none\">${version_info.get('id', '')}</span>\n                    <iframe name=\"target_frame\" style=\"display:none;\"></iframe>\n\n                    <div class=\"deploy_tab_box\" id=\"deploy_input\">\n                        <div class=\"\">\n                            <!--正式部署start -->\n                            <div id=\"online_form\" n_form style=\"display:none;\">\n                            </div>\n                            <!--正式部署end-->\n\n                        </div>\n                    </div>\n\n                    <!--流程图-->\n                    <div id=\"release-flow-before\" class=\"pt20\" style=\"display:none;\">\n                    </div>\n                    <div id=\"release-flow\" class=\"pt20 mb10\" style=\"display:none;\">\n                    </div>\n                    <div id=\"tips_info\" class=\"pt20 mr30\" style=\"margin-left:20px;max-width:820px;\">\n                    </div>\n\n                    <div id=\"detail_button_2\" style=\"margin-top:15px; margin-left:30px;display:none;\">\n                      <a href=\"javascript:REL_MANAGER.get_app_release_detail()\" title=\"点击查看详情\" >\n                      <span aria-hidden=\"true\" class=\"glyphicon glyphicon-list\" style=\"margin-right:5px;\"></span>\n                      <span id=\"detail_click\">点击查看详情</span>\n                      </a>\n                    </div>\n\n                    <div id=\"detail_log\" class=\"mt20\" style=\"display:none;\">\n                      <textarea id=\"detail_info\" class=\"form-control\" style=\"height:300px;background-color: #000; color: #FFF;\" readonly=\"\">部署日志：------create virtualenv for test1------\n                      </textarea>\n                  </div>\n                  </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 右侧内容 end -->\n</%block>\n<script src=\"${STATIC_URL}js/paas_release.${JS_SUFFIX}?v=${STATIC_VERSION}\"></script>\n<script>\n$(function (argument) {\n    $('.choose-file-btn').click(function(event) {\n        //触发选择文件的按钮\n        $('#saas_file').trigger('click');\n    });\n    $('#saas_file').on('change', function(){\n        // 把路径去掉，只显示文件名\n        var tag = $('.import-file-name').text($('#saas_file').val().split('\\\\')[$('#saas_file').val().split('\\\\').length-1]);\n        if (!tag) {\n            $('.import-file-name').text($('#saas_file').val().split('/')[$('#saas_file').val().split('/').length-1])\n        };\n    });\n\n    $(\"#saas_file\").on(\"change\", function(event) {\n      $(\"#import_msg\").html($(\"#loading_div\").html());\n       //oMsg.text(\"加载中...\");\n       file_form.target=\"target_frame\";\n       $('#saas_app_online').attr({\"disabled\":\"disabled\"});\n       $('#saas_upload').attr({\"disabled\":\"disabled\"});\n       file_form.submit();\n    });\n\n    $('#saas_file').on('click', function(){\n      this.value = null;\n    });\n\n    var app_code = $(\"#app_code_id\").val();\n    var app_state = $(\"#app_state_id\").val();\n\n    // 未部署的应用外，其他应用需要轮询当前状态\n    if(app_code && app_state != '1'){\n      // 正在部署，则显示状态图\n      if(app_state == '8' || app_state == '9' || app_state == '10'){\n        $('button[n_btn=saas_deploy]').attr({\"disabled\":\"disabled\"});\n        REL_MANAGER.refresh_roll(app_code, app_state, '#release_msg_pro', '部署', 2);\n      }\n      // 发起状态更新\n      if (app_code != '0') {\n        REL_MANAGER.check_unfinished_task(app_code);\n      }\n    }\n\n})\n//上线操作\n$('#saas_app_online').live('click', function(){\n  var saas_app_version_id = $(\"#saas_app_version_id\").text();\n  var app_code = $(\"#app_code_id\").val();\n  var app_state = $(\"#app_state_id\").val();\n  if (!saas_app_version_id){\n    $(\"#import_msg\").html($(\"#file_tips_div\").html());\n    return false;\n  }\n  REL_MANAGER.confirm_saas_app_online(this, app_code, saas_app_version_id, app_state);\n})\n</script>\n"
  },
  {
    "path": "paas-ce/paas/paas/templates/user_center/weixin_bind_error.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>绑定失败</title>\n<link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\"/>\n<style type=\"text/css\">\n\tbody {\n\t\tmin-width: initial !important;\n\t\tbackground: none;\n\t}\n</style>\n</head>\n\n<body style=\"font-family:Microsoft Yahei;\" class=\"king-errorpage-middle\">\n\t<!--HTML-->\n\t<div class=\"king-exception-box king-login-page\">\n\t\t<img src=\"/static/img/error/403.png\">\n\t\t<h1>{{error_message}}</h1>\n\t</div>\n</body>\n\n</html>"
  },
  {
    "path": "paas-ce/paas/paas/templates/user_center/weixin_qy_bind_success.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>微信绑定成功</title>\n<link href=\"/static/css/base.min.css?v=1.0.1\" rel=\"stylesheet\" type=\"text/css\"/>\n<style type=\"text/css\">\n\tbody {\n\t\tmin-width: initial !important;\n\t\tbackground: none;\n\t}\n</style>\n</head>\n\n<body style=\"font-family:Microsoft Yahei;\" class=\"king-errorpage-middle\">\n\t<!--HTML-->\n\t<div class=\"king-exception-box king-login-page\">\n\t\t<img src=\"/static/img/error/401.png\">\n\t\t<h1>绑定成功，3秒后将自动关闭页面</h1>\n\t</div>\n</body>\n<script>setTimeout(function(){window.close();}, 3000);</script>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/paas/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\"  # noqa\n\"\"\"paas URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/1.8/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')\nIncluding another URLconf\n    1. Add an import:  from blog import urls as blog_urls\n    2. Add a URL to urlpatterns:  url(r'^blog/', include(blog_urls))\n\"\"\"\n\nfrom django.conf import settings\nfrom django.urls import include, path, re_path\nfrom django.contrib import admin\nfrom django.http import HttpResponse\nfrom django.views.generic import RedirectView\nfrom django.views.i18n import JavaScriptCatalog\n\nfrom account.decorators import login_exempt\n\n\nwx_verify_code = \"glbPQflGmIr9nFCj\"\nwx_verify_code_url = \"WW_verify_glbPQflGmIr9nFCj.txt\"\n\n@login_exempt\ndef wx_verify(request):\n    return HttpResponse(content=wx_verify_code)\n\n\nurlpatterns = [\n    # 首页, 重定向到首页, pattern => /platform/  permanent => 301\n    path(wx_verify_code_url, wx_verify),\n    path('', RedirectView.as_view(pattern_name=\"platform\", permanent=True)),\n    path(wx_verify_code_url, wx_verify),\n    # url(r'^$', RedirectView.as_view(url='/o/workbench/', permanent=True)),\n\n    # 首页\n    path('platform/', include(\"home.urls\")),\n\n    # 用户账号相关\n    path('accounts/', include(\"account.urls\")),\n\n    # 服务器信息\n    path('engine/', include(\"engine.urls\")),\n\n    # 应用相关\n    path('app/', include(\"app.urls\")),\n\n    # SaaS 服务相关\n    path('saas/', include(\"saas.urls\")),\n\n    # 发布相关\n    path('release/', include(\"release.urls\")),\n\n    # 资源下载\n    path('resource/', include(\"resource.urls\")),\n    # 指南\n    path('guide/', include(\"guide.urls\")),\n\n    # API 相关\n    path('paas/api/', include(\"api.urls\")),\n    # ESB\n    path('esb/', include(\"esb.configs.urls\")),\n    # 服务检测\n    path('healthz/', include(\"healthz.urls\")),\n\n    # 个人中心 - 微信相关\n    path('console/user_center/', include(\"user_center.urls\")),\n\n    # admin\n    path('admin/', admin.site.urls),\n\n    # 反搜索\n    re_path(r'^robots\\.txt$', lambda r: HttpResponse('User-agent: *\\nDisallow: /', content_type='text/plain')),\n\n    # i18n\n    #re_path(r'^jsi18n/(?P<packages>\\S+?)/$', JavaScriptCatalog.as_view, name='javascript-catalog'),\n    path('jsi18n/i18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),\n]\n\n# for upload/download\n# urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\nfrom account.decorators import login_exempt  # noqa\nimport django.views  # noqa\n\nstatic_serve = login_exempt(django.views.static.serve)\nurlpatterns.append(re_path(r'^media/(?P<path>.*)$', static_serve, {'document_root': settings.MEDIA_ROOT}))\n\n# for static\nfrom django.contrib.staticfiles.urls import staticfiles_urlpatterns  # noqa\n\nurlpatterns += staticfiles_urlpatterns()\n\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/admin.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.contrib import admin  # noqa\n\n# Register your models here.\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/constants.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom enum import Enum\n\n\n# 微信类型\nclass WxTypeEnum(Enum):\n    MP = 'mp'\n    QY = 'qy'\n    QYWX = 'qywx'\n\n\n# 微信公众号API相关URL\nWEIXIN_MP_API_URL = {\n    'get_access_token': 'https://api.weixin.qq.com/cgi-bin/token',\n    'create_qrcode': 'https://api.weixin.qq.com/cgi-bin/qrcode/create',\n    'show_qrcode_url': 'https://mp.weixin.qq.com/cgi-bin/showqrcode'\n}\n\n# 微信企业号/企业微信API相关URL\nWEIXIN_QY_API_URL = {\n    WxTypeEnum.QY.value: {\n        'get_access_token': 'https://qyapi.weixin.qq.com/cgi-bin/gettoken',\n        'login_url': 'https://qy.weixin.qq.com/cgi-bin/loginpage',\n        'get_login_info': 'https://qyapi.weixin.qq.com/cgi-bin/service/get_login_info'\n    },\n    WxTypeEnum.QYWX.value: {\n        'get_access_token': 'https://qyapi.weixin.qq.com/cgi-bin/gettoken',\n        'login_url': 'https://open.work.weixin.qq.com/wwopen/sso/qrConnect',\n        'get_user_info': 'https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo'\n    }\n}\n\n# 微信公众号临时二维码过期时长\nWEIXIN_MP_QRCODE_EXPIRE_SECONDS = 7200\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom functools import WRAPPER_ASSIGNMENTS, wraps\n\nfrom django.http import JsonResponse\n#from django.utils.decorators import available_attrs\nfrom django.utils.translation import gettext as _\n\nfrom user_center.weixin.utils import get_user_wx_info\n\n\ndef is_unbound_weixin(view_func):\n    \"\"\"\n    检查是否未绑定\n    \"\"\"\n    @wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)\n    def _wrapped_view(request, *args, **kwargs):\n        wx_type, wx_userid = get_user_wx_info(request)\n        if not wx_type:\n            return JsonResponse({'result': False, 'message': _(\"系统管理员未启用微信通知组件\")})\n        if wx_userid:\n            return JsonResponse({'result': False, 'message': _(\"您已绑定微信，无需再绑定\")})\n        return view_func(request, *args, **kwargs)\n\n    return _wrapped_view\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/manager.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models\nfrom django.conf import settings\n\n\nclass WxBkUserTmpRecordManager(models.Manager):\n    def create_tmp_record(self, request, wx_ticket):\n        \"\"\"\n        创建临时记录\n        \"\"\"\n        username = request.user.username\n        bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME)\n        self.create(username=username, bk_token=bk_token, wx_ticket=wx_ticket)\n        return True\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='WxBkUserTmpRecord',\n            fields=[\n                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),\n                ('username', models.CharField(max_length=32, verbose_name='\\u7528\\u6237\\u540d')),\n                ('bk_token', models.CharField(max_length=255, verbose_name='\\u767b\\u5f55\\u6001token')),\n                ('wx_ticket', models.CharField(unique=True, max_length=127, verbose_name='\\u5fae\\u4fe1\\u4e34\\u65f6\\u6807\\u8bc6(state\\u6216\\u4e8c\\u7ef4\\u7801ticket)', db_index=True)),\n                ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='\\u521b\\u5efa\\u65f6\\u95f4', null=True)),\n            ],\n            options={\n                'db_table': 'console_wx_bkuser_tmp_record',\n                'verbose_name': '\\u5fae\\u4fe1\\u4e0e\\u84dd\\u9cb8\\u7528\\u6237\\u7ed1\\u5b9a\\u8fc7\\u7a0b\\u4e34\\u65f6\\u8868',\n                'verbose_name_plural': '\\u5fae\\u4fe1\\u4e0e\\u84dd\\u9cb8\\u7528\\u6237\\u7ed1\\u5b9a\\u8fc7\\u7a0b\\u4e34\\u65f6\\u8868',\n            },\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/migrations/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.db import models\n\nfrom user_center.manager import WxBkUserTmpRecordManager\n\n\nclass WxBkUserTmpRecord(models.Model):\n    \"\"\"\n    微信与蓝鲸用户绑定过程临时表（后续可迁移到redis中，并设置过期时间）\n    \"\"\"\n    username = models.CharField(\"用户名\", max_length=32)\n    bk_token = models.CharField(\"登录态token\", max_length=255)\n    wx_ticket = models.CharField(\"微信临时标识(state或二维码ticket)\", max_length=127, unique=True, db_index=True)\n    create_time = models.DateTimeField(\"创建时间\", auto_now_add=True, blank=True, null=True)\n\n    objects = WxBkUserTmpRecordManager()\n\n    class Meta:\n        verbose_name = \"微信与蓝鲸用户绑定过程临时表\"\n        verbose_name_plural = \"微信与蓝鲸用户绑定过程临时表\"\n        db_table = 'console_wx_bkuser_tmp_record'\n\n    def __unicode__(self):\n        return self.username\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\nfrom django.test import TestCase  # noqa\n\n# Create your tests here.\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/urls.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.urls import include, path\n\nfrom user_center import views\n\n# 统计应用\nurlpatterns = [\n    path('weixin/', include([\n        # 微信公众号\n        path('mp/', include([\n            path('get_qrcode/', views.get_qrcode_by_mp),\n            path('callback/', views.weixin_mp_callback),\n        ])),\n\n        # 微信企业号/企业微信\n        path('qy/', include([\n            path('get_login_url/', views.get_login_url_by_qy),\n            path('login_callback/', views.weixin_qy_login_callback),\n        ])),\n\n        # 查询绑定状态\n        path('get_bind_status/', views.get_bind_status),\n\n        # 解绑用户微信信息\n        path('unbind_wx_user_info/', views.unbind_wx_user_info),\n    ])),\n]\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/views.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.http import HttpResponse, JsonResponse\nfrom django.shortcuts import render\nfrom django.utils.translation import gettext as _\nfrom django.views.decorators.csrf import csrf_exempt\nfrom django.views.decorators.http import require_POST\n\nfrom account.decorators import login_exempt\nfrom common.constants import ConsoleErrorCodes\nfrom common.log import logger\nfrom components import login\nfrom user_center.decorators import is_unbound_weixin\nfrom user_center.models import WxBkUserTmpRecord\nfrom user_center.weixin.core import WeiXinMpApi, WeiXinQyApi\nfrom user_center.weixin.utils import get_wx_userid\n\n\ndef get_bind_status(request):\n    \"\"\"\n    【公众号/企业号/企业微信】查询绑定状态\n    \"\"\"\n    wx_userid = get_wx_userid(request)\n    is_bind = True if wx_userid else False\n    return JsonResponse({'result': is_bind})\n\n\n@require_POST\ndef unbind_wx_user_info(request):\n    \"\"\"\n    【公众号/企业号/企业微信】解绑微信\n    \"\"\"\n    bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME)\n    ok, message = login.unbind_wx_user_info(bk_token)\n    return JsonResponse({'result': ok, 'message': message})\n\n\n@is_unbound_weixin\ndef get_qrcode_by_mp(request):\n    \"\"\"\n    【公众号】获取临时唯一二维码\n    \"\"\"\n    # 创建二维码\n    wxapi = WeiXinMpApi()\n    ticket = wxapi.create_qrcode_with_scene()\n    if not ticket:\n        return JsonResponse({'result': False, 'message': _(\"后台获取公众号二维码失败，请联系系统管理员检查微信配置\")})\n    # 记录username, bk_token, 与 ticket的关系\n    ok = WxBkUserTmpRecord.objects.create_tmp_record(request, ticket)\n    if not ok:\n        return JsonResponse({'result': False, 'message': _(\"创建记录失败，请联系系统管理员处理\")})\n    # 组装页面需展示的二维码URL\n    url = wxapi.gen_qrcode_url(ticket)\n    return JsonResponse({'result': True, 'url': url})\n\n\n@csrf_exempt\n@login_exempt\ndef weixin_mp_callback(request):\n    \"\"\"\n    【公众号】接收微信事件的推送\n    \"\"\"\n    signature = request.GET.get('signature')\n    timestamp = request.GET.get('timestamp')\n    nonce = request.GET.get('nonce')\n    # 校验签名\n    wxapi = WeiXinMpApi()\n    is_vaild, message = wxapi.check_sign(signature, timestamp, nonce)\n    if not is_vaild:\n        return HttpResponse(message)\n\n    # GET请求，微信服务器确实开发服务配置是否正确\n    if request.method == 'GET':\n        return HttpResponse(request.GET.get('echostr'))\n\n    try:\n        # POST请求，处理微信推送\n        message = wxapi.handle_weixin_push(request.body)\n    except Exception as error:\n        error_message = '{} weixin_mp_callback error: {}'.format(ConsoleErrorCodes.E1303202_WEIXIN_MP_EVENT_PUSH_RESPONSE_ERROR.value,  # noqa\n                                                                 error)\n        logger.error(error_message)\n        message = _(\"API请求异常，请联系管理员处理\")\n    return HttpResponse(message)\n\n\n@is_unbound_weixin\ndef get_login_url_by_qy(request):\n    \"\"\"\n    【企业号/企业微信】获取扫描登录的URL\n    \"\"\"\n    # 生成企业号/企业微信登录链接\n    wxapi = WeiXinQyApi()\n    url, state = wxapi.gen_login_url()\n    # 记录username, bk_token, 与 ticket的关系\n    ok = WxBkUserTmpRecord.objects.create_tmp_record(request, state)\n    if not ok:\n        return JsonResponse({'result': False, 'message': _(\"创建记录失败，请联系系统管理员处理\")})\n    return JsonResponse({'result': True, 'url': url})\n\n\ndef weixin_qy_login_callback(request):\n    \"\"\"\n    【企业号/企业微信】企业号/企业微信登录后回调\n    \"\"\"\n    state = request.GET.get('state')\n    bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME)\n    # 企业号为auth_code, 企业微信为 code\n    auth_code = request.GET.get('auth_code') or request.GET.get('code')\n    # 检查state，防止跨域攻击\n    if not WxBkUserTmpRecord.objects.filter(bk_token=bk_token, wx_ticket=state).exists():\n        return render(request, 'user_center/weixin_bind_error.html',\n                      {'error_message': _(\"您没有权限，请联系系统管理员\")})\n    # 获取登录用户的wx_userid\n    wxapi = WeiXinQyApi()\n    wx_userid = wxapi.get_login_user_info(auth_code)\n    if not wx_userid:\n        return render(request, 'user_center/weixin_bind_error.html',\n                      {'error_message': _(\"绑定失败，请联系系统管理员\")})\n    # 绑定\n    ok, message = login.bind_wx_user_info(bk_token, wx_userid)\n    if not ok:\n        return render(request, 'user_center/weixin_bind_error.html',\n                      {'error_message': _(\"绑定出错，请联系系统管理员\")})\n\n    return render(request, 'user_center/weixin_qy_bind_success.html')\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/weixin/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/weixin/core.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nimport hashlib\nimport json\nimport random\nimport time\nimport uuid\nimport xml.etree.cElementTree as ET\n\nfrom django.conf import settings\nfrom django.utils.http import urlencode\nfrom django.utils.translation import gettext as _\n\nimport requests\nfrom blueking.component.shortcuts import get_client_by_user\nfrom common.constants import ConsoleErrorCodes\nfrom common.log import logger\nfrom user_center.constants import (WEIXIN_MP_API_URL,\n                                   WEIXIN_MP_QRCODE_EXPIRE_SECONDS,\n                                   WEIXIN_QY_API_URL, WxTypeEnum)\nfrom user_center.weixin.utils import (bind_user_wx_info, get_smart_paas_domain,\n                                      get_wx_config)\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n# Use connection pool\nrpool = requests.Session()\n\n\nclass WeiXinApiBase(object):\n    \"\"\"\n    Api 请求的基础类型\n    \"\"\"\n\n    def __init__(self):\n        self.timeout = 10\n        self.ssl_verify = False\n\n    def get(self, url, **kwargs):\n        \"\"\"\n        GET方法，编码问题解决\n        \"\"\"\n        try:\n            resp = rpool.get(url, params=kwargs, timeout=self.timeout, verify=self.ssl_verify)\n            resp.encoding = 'utf-8'\n            result = resp.json()\n        except Exception as error:\n            error_message = '%s requests get url:%s error: %s'.format(ConsoleErrorCodes.E1303200_WEIXIN_HTTP_GET_REQUEST_ERROR.value, # noqa\n                                                                      url,\n                                                                      error)\n            logger.error(error_message)\n            result = {}\n        return result\n\n    def post(self, url, params={}, data={}, json_data={}):\n        \"\"\"\n        POST方法\n        \"\"\"\n        try:\n            resp = rpool.post(\n                url, params=params, json=json_data, data=data, timeout=self.timeout, verify=self.ssl_verify)\n            resp.encoding = 'utf-8'\n            result = resp.json()\n        except Exception as error:\n            error_message = '{} requests post url:{} error: {}'.format(ConsoleErrorCodes.E1303201_WEIXIN_HTTP_POST_REQUEST_ERROR.value, # noqa\n                                                                       url,\n                                                                       error)\n            logger.error(error_message)\n            result = {}\n        return result\n\n    def get_access_token_from_esb(self):\n        \"\"\"\n        从ESB获取access_token\n        \"\"\"\n        client = get_client_by_user('admin')\n        esb_result = client.esb.get_weixin_access_token({})\n        return esb_result\n\n\nclass WeiXinMpApi(WeiXinApiBase):\n    \"\"\"\n    微信公众号相关API请求\n    \"\"\"\n    def __init__(self):\n        super(WeiXinMpApi, self).__init__()\n        comp_conf = get_wx_config()\n        self.appid = comp_conf.get('wx_app_id')\n        self.secret = comp_conf.get('wx_secret')\n        self.token = comp_conf.get('wx_token')\n        self.event = None\n\n    @property\n    def access_token(self):\n        \"\"\"\n        使用ESB提供的token\n        \"\"\"\n        if settings.ENVIRONMENT == 'development':\n            import redis\n            rd = redis.Redis('127.0.0.1', 6379)\n            cache_token = rd.get('WEIXIN_MP_ACCESS_TOKEN')\n            if cache_token:\n                token = json.loads(cache_token)['ACCESS_TOKEN']\n                return token\n            token = self._get_access_token()\n            return token\n\n        result = self.get_access_token_from_esb()\n        if not result.get('result'):\n            logger.error('esb get_access_token error: %s', result)\n        token = result['data'].get('access_token')\n        return token\n\n    def _get_access_token(self):\n        \"\"\"\n        获取access_token\n        \"\"\"\n        url = WEIXIN_MP_API_URL['get_access_token']\n        param = {'appid': self.appid, 'secret': self.secret, 'grant_type': 'client_credential'}\n        resp = self.get(url, **param)\n        token = resp.get('access_token')\n        expires_in = resp.get('expires_in', 7200)\n        data = {'ACCESS_TOKEN': token, 'expires_in': expires_in}\n        if token and expires_in:\n            import redis\n            rd = redis.Redis('127.0.0.1', 6379)\n            rd.set('WEIXIN_MP_ACCESS_TOKEN', json.dumps(data))\n        return token\n\n    def create_qrcode_with_scene(self):\n        \"\"\"\n        创建临时二维码\n        :return ok, ticket\n        \"\"\"\n        url = WEIXIN_MP_API_URL['create_qrcode']\n        params = {'access_token': self.access_token}\n        scene_id = random.randint(1, 2**31)\n        data = {'action_name': 'QR_SCENE',\n                'expire_seconds': WEIXIN_MP_QRCODE_EXPIRE_SECONDS,\n                'action_info': {'scene': {'scene_id': scene_id}}}\n        resp = self.post(url, params=params, json_data=data)\n        if resp.get('errcode'):\n            logger.error('create qrcode failed %s', resp)\n            return None\n        return resp.get('ticket')\n\n    def gen_qrcode_url(self, ticket):\n        \"\"\"\n        生成可展示的二维码图片URL\n        \"\"\"\n        param = {'ticket': ticket}\n        url = \"{}?{}\".format(WEIXIN_MP_API_URL['show_qrcode_url'], urlencode(param))\n        return url\n\n    def check_sign(self, signature, timestamp, nonce):\n        \"\"\"\n        微信服务器回调后的签名认证\n        \"\"\"\n        if not signature:\n            return False, _(\"验证失败：signature参数不能为空\")\n        if not timestamp:\n            return False, _(\"验证失败：timestamp参数不能为空\")\n        if not nonce:\n            return False, _(\"验证失败：nonce参数不能为空\")\n        raw = ''.join(sorted([self.token, timestamp, nonce]))\n        _sign = hashlib.sha1(raw).hexdigest()\n        if _sign != signature:\n            return False, _(\"验证失败：signature错误\")\n        return True, ''\n\n    def parse(self, raw_data):\n        \"\"\"\n        解析微信推送的事件或消息内容\n        \"\"\"\n        logger.info('weixin push raw_data is: %s', raw_data)\n        try:\n            doc = ET.fromstring(raw_data)\n            data = dict((i.tag, i.text) for i in doc)\n        except Exception as error:\n            logger.info('parse raw_data: error: %s', error)\n            data = {}\n        return data\n\n    def render_msg(self, from_user, to_user, content):\n        \"\"\"\n        组装渲染响应消息\n        \"\"\"\n        tpl = '''<xml>\n                <ToUserName><![CDATA[%s]]></ToUserName>\n                <FromUserName><![CDATA[%s]]></FromUserName>\n                <CreateTime>%s</CreateTime>\n                <MsgType><![CDATA[%s]]></MsgType>\n                <Content><![CDATA[%s]]></Content>\n                <FuncFlag>0</FuncFlag>\n                </xml>'''\n        return tpl % (to_user, from_user, int(time.time()), 'text', content)\n\n    def handle_weixin_push(self, raw_data):\n        \"\"\"\n        处理微信推送（包括：普通消息，消息事件，菜单事件推送），暂时只处理消息事件中事件为：SCAN和subscribe\n        \"\"\"\n        event = self.parse(raw_data)\n        # 非法消息，直接回复空字符串\n        if not event.get('MsgType') or not event.get('ToUserName') or not event.get('FromUserName'):\n            return ''\n        # 只处理消息事件中事件为：SCAN和subscribe，其他回复空字符串\n        if event['MsgType'] != 'event' or (event['Event'] != 'SCAN' and event['Event'] != 'subscribe'):\n            return ''\n\n        from_user = event['FromUserName']\n        to_user = event['ToUserName']\n        ticket = event['Ticket']\n        # 绑定用户\n        ok, message = bind_user_wx_info(ticket, from_user)\n        if not ok:\n            return self.render_msg(to_user, from_user, message)\n        return self.render_msg(to_user, from_user, _(\"绑定成功\"))\n\n\nclass WeiXinQyApi(WeiXinApiBase):\n    \"\"\"\n    微信企业号/企业微信相关API请求\n    \"\"\"\n    def __init__(self):\n        super(WeiXinQyApi, self).__init__()\n        comp_conf = get_wx_config()\n        self.wx_type = comp_conf.get('wx_type')\n        self.corpid = comp_conf.get('wx_qy_corpid')\n        self.secret = comp_conf.get('wx_qy_corpsecret')\n        self.agentid = comp_conf.get('wx_qy_agentid')\n        self.api_url = WEIXIN_QY_API_URL[self.wx_type]\n        self.login_callback_url = 'http://{}/console/user_center/weixin/qy/login_callback/'.format(get_smart_paas_domain()) # noqa\n\n    @property\n    def access_token(self):\n        \"\"\"\n        使用ESB提供的token\n        \"\"\"\n        if settings.ENVIRONMENT == 'development':\n            import redis\n            rd = redis.Redis('127.0.0.1', 6379)\n            token_rd_key = 'WEIXIN_{}_ACCESS_TOKEN'.format(self.wx_type.upper())\n            cache_token = rd.get(token_rd_key)\n            if cache_token:\n                token = json.loads(cache_token)['ACCESS_TOKEN']\n                return token\n            token = self._get_access_token()\n            return token\n\n        result = self.get_access_token_from_esb()\n        if not result.get('result'):\n            logger.error('esb get_access_token error: %s', result)\n        token = result['data'].get('access_token')\n        return token\n\n    def _get_access_token(self):\n        \"\"\"\n        获取access_token\n        \"\"\"\n        url = self.api_url['get_access_token']\n        param = {'corpid': self.corpid, 'corpsecret': self.secret}\n        resp = self.get(url, **param)\n        token = resp.get('access_token')\n        expires_in = resp.get('expires_in', 7200)\n        data = {'ACCESS_TOKEN': token, 'expires_in': expires_in}\n        if token and expires_in:\n            import redis\n            rd = redis.Redis('127.0.0.1', 6379)\n            token_rd_key = 'WEIXIN_{}_ACCESS_TOKEN'.format(self.wx_type.upper())\n            rd.set(token_rd_key, json.dumps(data))\n        return token\n\n    def gen_login_url(self):\n        \"\"\"\n        生成企业号/企业微信的登录链接\n        \"\"\"\n        param_dict = {\n            WxTypeEnum.QY.value: {\n                'corp_id': self.corpid,\n                'usertype': 'all'\n            },\n            WxTypeEnum.QYWX.value: {\n                'appid': self.corpid,\n                'agentid': self.agentid\n            }\n        }\n        param = param_dict[self.wx_type]\n        state = str(uuid.uuid4())\n        param['state'] = state\n        param['redirect_uri'] = self.login_callback_url\n        url = \"{}?{}\".format(self.api_url['login_url'], urlencode(param))\n        return url, state\n\n    def _get_login_user_info_by_qy(self, auth_code):\n        \"\"\"\n        【企业号】通过auth_code 获取登录的用户信息\n        \"\"\"\n        url = self.api_url['get_login_info']\n        params = {'access_token': self.access_token}\n        data = {'auth_code': auth_code}\n        resp = self.post(url, params=params, json_data=data)\n        if resp.get('errcode'):\n            logger.error('get login user info failed %s', resp)\n            return None\n        if not resp.get('user_info').get('userid'):\n            logger.error('get login userid error %s', resp)\n            return None\n        return resp.get('user_info').get('userid')\n\n    def _get_login_user_info_by_qywx(self, code):\n        \"\"\"\n        【企业微信】通过code 获取登录的用户信息\n        \"\"\"\n        url = self.api_url['get_user_info']\n        params = {'access_token': self.access_token, 'code': code}\n        resp = self.get(url, **params)\n        if resp.get('errcode'):\n            logger.error('get login user info failed %s', resp)\n            return None\n        if not resp.get('UserId'):\n            logger.error('get login userid error %s', resp)\n            return None\n        return resp.get('UserId')\n\n    def get_login_user_info(self, auth_code):\n        \"\"\"\n        通过登录的code获取用户信息\n        \"\"\"\n        if self.wx_type == WxTypeEnum.QYWX.value:\n            return self._get_login_user_info_by_qywx(auth_code)\n        return self._get_login_user_info_by_qy(auth_code)\n"
  },
  {
    "path": "paas-ce/paas/paas/user_center/weixin/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\"\"\" # noqa\n\n\n\nfrom django.conf import settings\nfrom django.utils.translation import gettext as _\n\nfrom common.log import logger\nfrom components import login\nfrom home.esb.bkcore.models import ESBChannel\nfrom user_center.constants import WxTypeEnum\nfrom user_center.models import WxBkUserTmpRecord\n\n\ndef get_smart_paas_domain():\n    \"\"\"\n    智能获取paas域名，80端口去除\n    \"\"\"\n    host_port = settings.PAAS_DOMAIN.split(':')\n    port = host_port[1] if len(host_port) >= 2 else ''\n    paas_domain = host_port[0] if port in ['80'] else settings.PAAS_DOMAIN\n    return paas_domain\n\n\ndef get_wx_config():\n    \"\"\"\n    获取微信相关配置\n    \"\"\"\n    wx_comp_path = '/cmsi/send_weixin/'\n    # 检查是否配置了微信通知组件\n    if not ESBChannel.objects.filter(path=wx_comp_path).exists():\n        return None\n\n    esb_channel = ESBChannel.objects.get(path=wx_comp_path)\n    comp_conf = esb_channel.comp_conf_dict\n    # 检查微信配置的完整性\n    if not comp_conf or not isinstance(comp_conf, dict):\n        logger.error(\"WeChat notification component configuration is empty\")\n        return None\n\n    if comp_conf.get('wx_type') not in [WxTypeEnum.MP.value, WxTypeEnum.QY.value, WxTypeEnum.QYWX.value]:\n        logger.error(\"WeChat notification component WeChat type configuration error, Comp_conf:%s\", comp_conf)\n        return None\n\n    is_complete = comp_conf.get('wx_app_id') and comp_conf.get('wx_secret') and comp_conf.get('wx_token')\n    if comp_conf.get('wx_type') == WxTypeEnum.MP.value and not is_complete:\n        error_msg = (\"WeChat Official Account notification component configuration is incomplete\"\n                     \"Is_complete: {}, Comp_conf:{}\").format(is_complete, comp_conf)\n        logger.error(error_msg)\n        return None\n\n    is_complete = comp_conf.get('wx_qy_corpid') and comp_conf.get('wx_qy_corpsecret') and comp_conf.get('wx_qy_agentid')\n    if comp_conf.get('wx_type') in [WxTypeEnum.QY.value, WxTypeEnum.QYWX.value] and not is_complete:\n        error_msg = (\"WeChat Corporation ID / Work WeChat notification component configuration is incomplete\"\n                     \"Is_complete: {}, Comp_conf:{}\").format(is_complete, comp_conf)\n        logger.error(error_msg)\n        return None\n\n    return comp_conf\n\n\ndef get_wx_userid(request):\n    \"\"\"\n    获取微信userid\n    \"\"\"\n    bk_token = request.COOKIES.get(settings.BK_COOKIE_NAME)\n    ok, data = login.get_user_info(bk_token)\n    wx_userid = data.get('wx_userid', '') if ok else ''\n    return wx_userid\n\n\ndef get_user_wx_info(request):\n    \"\"\"\n    查询是否用户的微信信息（包括微信类型和微信用户id）\n    :return: (wx_type, wx_userid)\n    \"\"\"\n    comp_conf = get_wx_config()\n    is_use_wx_component = comp_conf is not None\n    wx_type = comp_conf.get('wx_type') if is_use_wx_component else None\n    wx_userid = get_wx_userid(request) if is_use_wx_component else ''\n    return (wx_type, wx_userid)\n\n\ndef bind_user_wx_info(wx_ticket, wx_userid):\n    \"\"\"\n    绑定用户微信信息\n    \"\"\"\n    try:\n        bk_token = WxBkUserTmpRecord.objects.get(wx_ticket=wx_ticket).bk_token\n    except WxBkUserTmpRecord.DoesNotExist:\n        ok, message = False, _(\"不存在该微信二维码的扫描用户\")\n\n    ok, message = login.bind_wx_user_info(bk_token, wx_userid)\n    return ok, message\n"
  },
  {
    "path": "paas-ce/paas/paas/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nTencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\nCopyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\nLicensed under the MIT License (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://opensource.org/licenses/MIT\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\nWSGI config for paas project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/\n\"\"\" # noqa\n\nimport os  # noqa\n\nfrom django.core.wsgi import get_wsgi_application  # noqa\nfrom dj_static import Cling  # noqa\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\napplication = Cling(get_wsgi_application())\n"
  },
  {
    "path": "paas-ce/paas/package.json",
    "content": "{\n  \"name\": \"bk-gulp\",\n  \"version\": \"1.0.0\",\n  \"description\": \"bk-gulp\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"lint\": \"jshint static/js/*.js\",\n    \"build-js\": \"uglifyjs static/js/app.js > dist/js/app.min.js\",\n    \"build-css\": \"uglifycss static/css/app.css > dist/css/app.min.css\",\n    \"build\": \"npm run build-js && npm run build-css\",\n    \"prebuild-js\": \"npm run lint\",\n    \"clean\": \"find static -name '*.npm.*' -delete\",\n    \"list\": \"find static -name '*.npm.*'\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"\"\n  },\n  \"author\": \"miya\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"del\": \"^2.2.2\",\n    \"gulp\": \"^3.9.1\",\n    \"gulp-babel\": \"^6.1.2\",\n    \"gulp-cache\": \"^0.4.5\",\n    \"gulp-concat\": \"^2.6.1\",\n    \"gulp-htmlmin\": \"^3.0.0\",\n    \"gulp-jshint\": \"^2.0.4\",\n    \"gulp-load-plugins\": \"^1.4.0\",\n    \"gulp-minify-css\": \"^1.2.4\",\n    \"gulp-minify-html\": \"^1.0.6\",\n    \"gulp-plumber\": \"^1.1.0\",\n    \"gulp-rename\": \"^1.2.2\",\n    \"gulp-sass\": \"^2.3.2\",\n    \"gulp-size\": \"^2.1.0\",\n    \"gulp-strip-debug\": \"^1.1.0\",\n    \"gulp-uglify\": \"^2.0.0\",\n    \"gulp-watch\": \"^4.3.11\",\n    \"gulp-zip\": \"^3.2.0\",\n    \"jshint\": \"^2.9.4\",\n    \"jshint-stylish\": \"^2.2.1\",\n    \"plumber\": \"^0.4.8\",\n    \"uglifyjs\": \"^2.4.10\",\n    \"vinyl-paths\": \"^2.1.0\",\n    \"gulp-header\": \"^1.8.8\"\n  }\n}\n"
  },
  {
    "path": "paas-ce/paas/websocket/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n.DS_Store\n# C extensions\n*.so\n.vscode/\n.idea/\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# IDE\n.idea\n"
  },
  {
    "path": "paas-ce/paas/websocket/README.md",
    "content": "# Websocket服务\n\nWebsocket服务用于通过Web界面（HTTP/HTTPS协议）连接到目标设备上，支持RDP、SSH、Telnet、MySQL、Redis协议，是堡垒机的底层支持服务。\n\n## 安装部署\n\n- 环境：\n\n  - CentOS 7\n  - Python 3.6.8\n  - Supervisord 3.4.0\n\n### OpsAny Bastion 后端手工部署\n\n1. 创建Python虚拟环境：\n\n```\n[root@opsany ~]# yum install -y supervisor\n[root@opsany ~]# mkdir -p /opt/opsany/logs\n[root@opsany ~]# cd /opt/\n[root@opsany ~]# git clone https://github.com/unixhot/opsany-bastion.git\n[root@opsany opt]# python3 -m venv /opt/bastion-runtime/\n[root@opsany opt]# source /opt/bastion-runtime/bin/activate\n(bastion-runtime) [root@opsany opt]# pip install -r /opt/opsany-bastion/requirements.txt\n```\n\n2. 配置Supervisord：\n\n- 生成bastion.ini\n\n```\n[root@opsany ~]# vim /opt/opsany-bastion/bastion.ini\nlogdate = true\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\nmemory-report = true\nmaster = true\nvacuum = true\nchdir = /opt/opsany-bastion\nmodule = wsgi:application\n      \n#cheaper = 4\n#cheaper-initial = 4\n      \n#workers = 4\nprocesses = 4\nthreads = 2\n#cheaper-algo = busyness\n#cheaper-overload = 5\n#cheaper-step = 2\n#cheaper-busyness-multiplier = 60\n      \n#buffer-size = 8192\n#post-buffering = 8192\n      \nmax-requests = 1024\nmount = /t/bastion=wsgi.py\nmanage-script-name = true\n```\n\n- 增加bastion的Supervisor配置\n\n```\n[root@opsany ~]# vim /etc/supervisord.d/bastion.ini\n\n[program: bastion_uwsgi]\ncommand = /opt/bastion-runtime/bin/uwsgi --ini /opt/opsany-bastion/bastion.ini\nstdout_logfile = /opt/opsany/logs/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs/\",BK_PAAS_INNER_HOST=\"http://\",APP_ID=\"bastion\",BK_PAAS_HOST=\"https://\",APP_TOKEN=\"\",BK_CC_HOST=\"https://\",BK_JOB_HOST=\"https://\"\n```\n\n- 增加bastion websocket的Supervisor配置\n\n```\n[root@opsany ~]# vim /etc/supervisord.d/websocket.ini\n\n[program:websocket]\ncommand=/opt/bastion-runtime/bin/daphne --proxy-headers -b 0.0.0.0 -p 8004 asgi:application\ndirectory=/opt/opsany-bastion\nenvironment=BK_ENV=\"production\",BK_LOG_DIR=\"/opt/opsany/logs\",APP_ID=\"bastion\",BK_PAAS_HOST=\"https://\",APP_TOKEN=\"4f49d205-87fc-4137-a446-27ab878bfa4c\"\nstartsecs=0\nstopwaitsecs=0\nautostart=true\nautorestart=true\nredirect_stderr=true\nstdout_logfile=/opt/opsany/logs/websocket.log\n```\n\n> 注意：需要补齐APP_TOKEN，BK_PAAS_HOST，或使用PaaS部署，即可忽略uwsgi的supervisord配置，仅需配置websocket的内容即可.\n\n3. 启动Supervisor\n\n```\n[root@opsany bastion]# systemctl enable --now supervisord\n[root@opsany bastion]# supervisorctl status\nwebsocket                        RUNNING   pid 30554, uptime 0:00:00\n```\n\n#### 目录结构\n\n- 本项目基于蓝鲸SaaS开发框架进行开发，框架代码内容概不介绍，仅介绍本项目所用内容\n\n  ```\n  ├── bastion  # 主要业务逻辑代码目录\n  │   ├── component  # 业务组件目录\n  │   │   ├── __init__.py\n  │   │   ├── common.py\n  │   │   ├── core.py\n  │   │   └── redis_client_conn.py\n  │   ├── core  # 堡垒机核心组件\n  │   │   ├── guacamole\n  │   │   │   ├── client.py\n  │   │   │   ├── component.py\n  │   │   │   ├── exceptions.py\n  │   │   │   ├── __init__.py\n  │   │   │   └── instruction.py\n  │   │   ├── terminal\n  │   │   │   ├── __init__.py\n  │   │   │   └── component.py\n  │   │   ├── __init__.py\n  │   │   ├── consumers.py\n  │   │   ├── consumers_database_mysql_web.py\n  │   │   ├── consumers_database_redis_web.py\n  │   │   ├── consumers_database_shell.py\n  │   │   ├── consumers_namespace_pod.py\n  │   │   ├── consumers_network.py\n  │   │   ├── consumers_windows.py\n  │   │   └── status_code.py\n  │   ├── migrations\n  │   │   └── __init__.py\n  │   ├── utils  # 常用工具目录\n  │   │   ├── __init__.py\n  │   │   ├── base_model.py\n  │   │   ├── constants.py\n  │   │   ├── encryption.py\n  │   │   ├── esb_api.py\n  │   ├── __init__.py\n  │   ├── admin.py\n  │   ├── apps.py\n  │   ├── constants.py\n  │   ├── models.py  # 项目模型\n  │   ├── routing.py  # Webscocket路由文件\n  │   ├── tests.py\n  ├── config  # 项目配置文件目录\n  │   ├── __init__.py\n  │   ├── default.py\n  │   ├── dev.py\n  │   ├── prod.py\n  │   └── stag.py\n  ├── manage.py\n  ├── README.md\n  ├── requirements.txt\n  ├── runtime.txt\n  ├── app.yml\n  ├── asgi.py\n  ├── settings.py\n  ├── urls.py\n  ├── VERSION\n  └── wsgi.py\n  ```\n"
  },
  {
    "path": "paas-ce/paas/websocket/VERSION",
    "content": "3.1.0.75\n"
  },
  {
    "path": "paas-ce/paas/websocket/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/app.yml",
    "content": "app_code: bastion\napp_name: 堡垒机\nsecret_key: a0483726-f73e-11eb-bafb-00163e105ceb\nauthor: OpsAny\ncategory: OpsAny\n!!python/unicode 'date': '2021-01-06 19:56:50'\ndesktop:\n  height: 720\n  is_max: true\n  width: 1300\nintroduction: OpsAny堡垒机\nis_use_celery: False\n!!python/unicode 'language': python\nlibraries:\n- name: autobahn\n  version: 20.1.3\n- name: Django\n  version: 2.2.6\n- name: mysqlclient\n  version: 1.4.4\n- name: MarkupSafe\n  version: 1.1\n- name: Mako\n  version: 1.0.6\n- name: requests\n  version: 2.25.0\n- name: urllib3\n  version: 1.26.2\n- name: redis\n  version: 3.4.0\n- name: celery\n  version: 3.1.25\n- name: django-celery\n  version: 3.2.1\n- name: python-json-logger\n  version: 0.1.7\n- name: whitenoise\n  version: 3.3.0\n- name: six\n  version: 1.11.0\n- name: uwsgi\n  version: 2.0.19.1\n# - name: daphne\n#   version: 2.2.1\n- name: httplib2\n  version: 0.9.1\n- name: bcrypt\n  version: 3.2.0\n- name: pycryptodomex\n  version: 3.9.8\n- name: cryptography\n  version: 3.3.1\n- name: django-cors-headers\n  version: 3.2.1\n- name: PyNaCl\n  version: 1.4.0\n- name: paramiko\n  version: 3.5.0\n- name: channels\n  version: 2.1.4\n- name: channels-redis\n  version: 2.3.1\n- name: django_redis\n  version: 4.11.0\n- name: XlsxWriter\n  version: 1.2.8\n- name: xlrd\n  version: 1.2.0\n- name: PyMySQL\n  version: 1.0.2\n- name: sshtunnel\n  version: 0.4.0\n- name: kubernetes\n  version: 26.1.0\n- name: elastic-apm\n  version: 6.18.0\nversion: 2.2.2.2\n"
  },
  {
    "path": "paas-ce/paas/websocket/asgi.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nASGI entrypoint. Configures Django and then runs the application\ndefined in the ASGI_APPLICATION setting.\n\"\"\"\n\nimport os\nimport django\n#from channels.routing import get_default_application\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\ndjango.setup()\n#application = get_default_application()\nfrom bastion.routing import application\n\n\"\"\"\nuvicorn --proxy-headers --host 192.168.0.13 --port 8012 asgi:application --log-level=info --access-log\n\n\"\"\"\n# uvicorn --proxy-headers --host 192.168.0.13 --port 8012 asgi:application\n# uvicorn asgi:application\n\na =  ('VERSION_1_5_0', 'hostname', 'port', 'domain', 'username', 'password', 'width', 'height', 'dpi', 'initial-program', 'color-depth', 'disable-audio', 'enable-printing', 'printer-name', 'enable-drive', 'drive-name', 'drive-path', 'create-drive-path', 'disable-download', 'disable-upload', 'console', 'console-audio', 'server-layout', 'security', 'ignore-cert', 'disable-auth', 'remote-app', 'remote-app-dir', 'remote-app-args', 'static-channels', 'client-name', 'enable-wallpaper', 'enable-theming', 'enable-font-smoothing', 'enable-full-window-drag', 'enable-desktop-composition', 'enable-menu-animations', 'disable-bitmap-caching', 'disable-offscreen-caching', 'disable-glyph-caching', 'preconnection-id', 'preconnection-blob', 'timezone', 'enable-sftp', 'sftp-hostname', 'sftp-host-key', 'sftp-port', 'sftp-username', 'sftp-password', 'sftp-private-key', 'sftp-passphrase', 'sftp-directory', 'sftp-root-directory', 'sftp-server-alive-interval', 'sftp-disable-download', 'sftp-disable-upload', 'recording-path', 'recording-name', 'recording-exclude-output', 'recording-exclude-mouse', 'recording-exclude-touch', 'recording-include-keys', 'create-recording-path', 'resize-method', 'enable-audio-input', 'enable-touch', 'read-only', 'gateway-hostname', 'gateway-port', 'gateway-domain', 'gateway-username', 'gateway-password', 'load-balance-info', 'disable-copy', 'disable-paste', 'wol-send-packet', 'wol-mac-addr', 'wol-broadcast-addr', 'wol-udp-port', 'wol-wait-time', 'force-lossless', 'normalize-clipboard')\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/admin.py",
    "content": "from django.contrib import admin\n\n# Register your models here.\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/apps.py",
    "content": "from django.apps import AppConfig\n\n\nclass BastionConfig(AppConfig):\n    name = 'bastion'\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/component/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/component/common.py",
    "content": "from bastion.models import UserInfo\nfrom bastion.utils.esb_api import EsbApi\n\n\nclass GetUserInfo:\n    def get_user_info(self, request=None, bk_token=None):\n        try:\n            from django.conf import settings\n            bk_token = settings.BK_TOKEN\n        except Exception as e:\n            pass\n        if not bk_token:\n            bk_token = request.COOKIES.get(\"bk_token\")\n        esb_obj = EsbApi(bk_token)\n        user_info = esb_obj.get_user_info()\n        if not user_info:\n            return None\n        return UserInfo.fetch_one(username=user_info.get(\"username\"))\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/component/core.py",
    "content": "import datetime\n\nimport logging\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass CheckUserHostComponent:\n    def check_access_strategy(self, access_strategy=None, access_ip=\"\"):\n        if access_strategy is None:\n            access_strategy = []\n        flag = False\n        week_day = datetime.datetime.now().isoweekday()\n        hour = datetime.datetime.now().hour\n        data = {\n            \"access_ip\": access_ip,\n            \"login_time_limit\": []\n        }\n        for _access_strategy in access_strategy:\n            _access_strategy[\"status\"] = True\n            if _access_strategy.get(\"status\") and self.get_time(_access_strategy):\n                check_ip = False\n                check_time = False\n                # 验证黑白名单\n                if _access_strategy.get(\"ip_limit\") == 2:\n                    try:\n                        if access_ip not in _access_strategy.get(\"limit_list\"):\n                            check_ip = True\n                    except Exception as e:\n                        app_logging.error(\"[ERROR] Check IP black list error: {}, param: {}\".format(\n                                str(e), str(_access_strategy.id))\n                        )\n                elif _access_strategy.get(\"ip_limit\") == 3:\n                    try:\n                        if access_ip in _access_strategy.get(\"limit_list\"):\n                            check_ip = True\n                    except Exception as e:\n                        app_logging.error(\"[ERROR] Check IP white list error: {}, param: {}\".format(\n                                str(e), str(_access_strategy.id))\n                        )\n                else:\n                    check_ip = True\n                # 验证访问时间\n                if _access_strategy.get(\"login_time_limit\"):\n                    try:\n                        for _login_time_limit in _access_strategy.get(\"login_time_limit\"):\n                            if _login_time_limit.get(\"week\") == week_day:\n                                if hour in _login_time_limit.get(\"time\"):\n                                    check_time = True\n                        data[\"login_time_limit\"] = _access_strategy.get(\"login_time_limit\")\n                    except Exception as e:\n                        app_logging.error(\"[ERROR] Check time error: {}, param: {}\".format(\n                                str(e), str(_access_strategy.id))\n                        )\n                if check_ip and check_time:\n                    flag = True\n        return flag, data\n\n    def get_time(self, strategy):\n        start_time = self._get_datetime_query(strategy.get(\"start_time\"))\n        end_time = self._get_datetime_query(strategy.get(\"end_time\"))\n        if start_time and end_time:\n            if start_time < datetime.datetime.now() < end_time:\n                return True\n            return False\n        elif start_time:\n            if start_time < datetime.datetime.now():\n                return True\n            return False\n        elif end_time:\n            if datetime.datetime.now() < end_time:\n                return True\n            return False\n        else:\n            return True\n\n    def _get_datetime_query(self, datetime_str):\n        if not datetime_str:\n            return datetime_str\n        if datetime_str == \"None\":\n            return None\n        try:\n            if not isinstance(datetime_str, datetime.datetime):\n                return datetime.datetime.strptime(datetime_str, \"%Y-%m-%d %H:%M:%S\")\n        except Exception as e:\n            try:\n                if not isinstance(datetime_str, datetime.datetime):\n                    return datetime.datetime.strptime(datetime_str, \"%Y-%m-%d %H:%M:%S.%f\")\n            except Exception as e:\n                return datetime_str\n        return datetime_str\n\n    def check_command(self, info=None, command=\"\", token=\"\"):\n        if info is None:\n            info = {}\n        if token:\n            try:\n                data = get_redis_dict_data(\"cache\", token)\n                # if not data:\n                #     return False, 0, {}\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return True, 0, {}\n                info = data.get(\"command_data\")\n            except Exception as e:\n                app_logging.error(\"[ERROR] Check command, check_command error: {}\".format(str(e))\n                )\n                info = {}\n        flag = True\n        level = 0\n        message = {}\n        current_time = datetime.datetime.now()\n        # current_time = datetime.datetime.strptime(\"2021-08-31T13:06:24\", \"%Y-%m-%dT%H:%M:%S\")\n        week_day = current_time.isoweekday()\n        hour = current_time.hour\n        command_list = self.handle_command(command)\n        # app_logging.debug(\"[DEBUG] Check command, check_command {}, {}\".format(command, token))\n        for _command in command_list:\n            if info.get(_command):\n                for strategy in info.get(_command):\n                    start_time = strategy.get(\"start_time\")\n                    end_time = strategy.get(\"end_time\")\n                    login_time_limit = strategy.get(\"login_time_limit\")\n                    block_type = strategy.get(\"block_type\")\n                    block_info = strategy.get(\"block_info\")\n                    if self.check_time(start_time, end_time, current_time):\n                        for _login_time_limit in login_time_limit:\n                            if _login_time_limit.get(\"week\") == week_day:\n                                if hour in _login_time_limit.get(\"time\"):\n                                    flag = False\n                                    if level:\n                                        if level != 1:\n                                            level = block_type\n                                            message[_command] = block_info\n                                    else:\n                                        level = block_type\n                                        message[_command] = block_info\n                                    if block_type == 1:\n                                        message[_command] = block_info\n        return flag, level, message\n\n    def handle_command(self, command: str):\n        \"\"\"\n        处理|,&,||,&&,;的情况\n        ls | rm && cp; ls\n        ls && rm\n        \"\"\"\n        command_list = [command]\n        flag_list = [\"|\", \"&\", \";\", \" \"]\n\n        def get_status(flag_list, command):\n            for flag in flag_list:\n                if flag in command:\n                    return True\n            return False\n\n        if command in flag_list:\n            return command_list\n        while get_status(flag_list, command):\n            for command in command_list:\n                command_index = command_list.index(command)\n                for flag in flag_list:\n                    if flag in command:\n                        command = command_list.pop(command_index)\n                        res = command.split(flag)\n                        for _res in res:\n                            if _res:\n                                command_list.insert(command_index, _res.strip())\n        command_list.reverse()\n        return command_list\n\n    def check_time(self, start_time, end_time, check_time):\n        start_time = self._get_datetime_query(start_time)\n        end_time = self._get_datetime_query(end_time)\n        if start_time or end_time:\n            if start_time and end_time:\n                if start_time < check_time < end_time:\n                    return True\n                return False\n            elif start_time and not end_time:\n                if start_time < check_time:\n                    return True\n                return False\n            elif not start_time and end_time:\n                if check_time < end_time:\n                    return True\n                return False\n            else:\n                return False\n        return True\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/component/redis_client_conn.py",
    "content": "import aioredis\nimport json\nfrom django.conf import settings\n\nasync def get_async_redis_connection(alias=\"default\"):\n    redis_config = settings.CACHES[alias]\n    conn = await aioredis.from_url(\n        f\"redis://{redis_config['LOCATION']}\",\n        decode_responses=True\n    )\n    return conn\n\nasync def get_redis_dict_data_async(conn, token):\n    if not isinstance(conn, aioredis.Redis):\n        conn = await get_async_redis_connection(str(conn))\n    data = await conn.get(token)\n    if not data:\n        return None\n    try:\n        return json.loads(data)\n    except json.JSONDecodeError:\n        try:\n            return eval(data)\n        except Exception:\n            return data\n\nasync def get_redis_str_data_async(conn, token):\n    if not isinstance(conn, aioredis.Redis):\n        conn = await get_async_redis_connection(str(conn))\n    return await conn.get(token)\n\nasync def set_redis_data_async(conn, key, value, ex=None):\n    if not isinstance(conn, aioredis.Redis):\n        conn = await get_async_redis_connection(str(conn))\n    await conn.set(key, value, ex=ex)\n    return True\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/constant.py",
    "content": "# 全部命令  https://redis.io/commands/\nALL_REDIS_COMMAND_LIST = [\n    \"ACL CAT\",\n    \"ACL DELUSER\",\n    \"ACL DRYRUN\",\n    \"ACL GENPASS\",\n    \"ACL GETUSER\",\n    \"ACL LIST\",\n    \"ACL LOAD\",\n    \"ACL LOG\",\n    \"ACL SAVE\",\n    \"ACL SETUSER\",\n    \"ACL USERS\",\n    \"ACL WHOAMI\",\n    \"APPEND\",\n    \"ASKING\",\n    \"AUTH\",\n    \"BF.ADD\",\n    \"BF.CARD\",\n    \"BF.EXISTS\",\n    \"BF.INFO\",\n    \"BF.INSERT\",\n    \"BF.LOADCHUNK\",\n    \"BF.MADD\",\n    \"BF.MEXISTS\",\n    \"BF.RESERVE\",\n    \"BF.SCANDUMP\",\n    \"BGREWRITEAOF\",\n    \"BGSAVE\",\n    \"BITCOUNT\",\n    \"BITFIELD\",\n    \"BITFIELD_RO\",\n    \"BITOP\",\n    \"BITPOS\",\n    \"BLMOVE\",\n    \"BLMPOP\",\n    \"BLPOP\",\n    \"BRPOP\",\n    \"BRPOPLPUSH\",\n    \"BZMPOP\",\n    \"BZPOPMAX\",\n    \"BZPOPMIN\",\n    \"CF.ADD\",\n    \"CF.ADDNX\",\n    \"CF.COUNT\",\n    \"CF.DEL\",\n    \"CF.EXISTS\",\n    \"CF.INFO\",\n    \"CF.INSERT\",\n    \"CF.INSERTNX\",\n    \"CF.LOADCHUNK\",\n    \"CF.MEXISTS\",\n    \"CF.RESERVE\",\n    \"CF.SCANDUMP\",\n    \"CLIENT CACHING\",\n    \"CLIENT GETNAME\",\n    \"CLIENT GETREDIR\",\n    \"CLIENT ID\",\n    \"CLIENT INFO\",\n    \"CLIENT KILL\",\n    \"CLIENT LIST\",\n    \"CLIENT NO-EVICT\",\n    \"CLIENT NO-TOUCH\",\n    \"CLIENT PAUSE\",\n    \"CLIENT REPLY\",\n    \"CLIENT SETINFO\",\n    \"CLIENT SETNAME\",\n    \"CLIENT TRACKING\",\n    \"CLIENT TRACKINGINFO\",\n    \"CLIENT UNBLOCK\",\n    \"CLIENT UNPAUSE\",\n    \"CLUSTER ADDSLOTS\",\n    \"CLUSTER ADDSLOTSRANGE\",\n    \"CLUSTER BUMPEPOCH\",\n    \"CLUSTER COUNT-FAILURE-REPORTS\",\n    \"CLUSTER COUNTKEYSINSLOT\",\n    \"CLUSTER DELSLOTS\",\n    \"CLUSTER DELSLOTSRANGE\",\n    \"CLUSTER FAILOVER\",\n    \"CLUSTER FLUSHSLOTS\",\n    \"CLUSTER FORGET\",\n    \"CLUSTER GETKEYSINSLOT\",\n    \"CLUSTER INFO\",\n    \"CLUSTER KEYSLOT\",\n    \"CLUSTER LINKS\",\n    \"CLUSTER MEET\",\n    \"CLUSTER MYID\",\n    \"CLUSTER MYSHARDID\",\n    \"CLUSTER NODES\",\n    \"CLUSTER REPLICAS\",\n    \"CLUSTER REPLICATE\",\n    \"CLUSTER RESET\",\n    \"CLUSTER SAVECONFIG\",\n    \"CLUSTER SET-CONFIG-EPOCH\",\n    \"CLUSTER SETSLOT\",\n    \"CLUSTER SHARDS\",\n    \"CLUSTER SLAVES\",\n    \"CLUSTER SLOTS\",\n    \"CMS.INCRBY\",\n    \"CMS.INFO\",\n    \"CMS.INITBYDIM\",\n    \"CMS.INITBYPROB\",\n    \"CMS.MERGE\",\n    \"CMS.QUERY\",\n    \"COMMAND\",\n    \"COMMAND COUNT\",\n    \"COMMAND DOCS\",\n    \"COMMAND GETKEYS\",\n    \"COMMAND GETKEYSANDFLAGS\",\n    \"COMMAND INFO\",\n    \"COMMAND LIST\",\n    \"CONFIG GET\",\n    \"CONFIG RESETSTAT\",\n    \"CONFIG REWRITE\",\n    \"CONFIG SET\",\n    \"COPY\",\n    \"DBSIZE\",\n    \"DECR\",\n    \"DECRBY\",\n    \"DEL\",\n    \"DISCARD\",\n    \"DUMP\",\n    \"ECHO\",\n    \"EVAL\",\n    \"EVAL_RO\",\n    \"EVALSHA\",\n    \"EVALSHA_RO\",\n    \"EXEC\",\n    \"EXISTS\",\n    \"EXPIRE\",\n    \"EXPIREAT\",\n    \"EXPIRETIME\",\n    \"FAILOVER\",\n    \"FCALL\",\n    \"FCALL_RO\",\n    \"FLUSHALL\",\n    \"FLUSHDB\",\n    \"FT._LIST\",\n    \"FT.AGGREGATE\",\n    \"FT.ALIASADD\",\n    \"FT.ALIASDEL\",\n    \"FT.ALIASUPDATE\",\n    \"FT.ALTER\",\n    \"FT.CONFIG GET\",\n    \"FT.CONFIG SET\",\n    \"FT.CREATE\",\n    \"FT.CURSOR DEL\",\n    \"FT.CURSOR READ\",\n    \"FT.DICTADD\",\n    \"FT.DICTDEL\",\n    \"FT.DICTDUMP\",\n    \"FT.DROPINDEX\",\n    \"FT.EXPLAIN\",\n    \"FT.EXPLAINCLI\",\n    \"FT.INFO\",\n    \"FT.PROFILE\",\n    \"FT.SEARCH\",\n    \"FT.SPELLCHECK\",\n    \"FT.SUGADD\",\n    \"FT.SUGDEL\",\n    \"FT.SUGGET\",\n    \"FT.SUGLEN\",\n    \"FT.SYNDUMP\",\n    \"FT.SYNUPDATE\",\n    \"FT.TAGVALS\",\n    \"FUNCTION DELETE\",\n    \"FUNCTION DUMP\",\n    \"FUNCTION FLUSH\",\n    \"FUNCTION KILL\",\n    \"FUNCTION LIST\",\n    \"FUNCTION LOAD\",\n    \"FUNCTION RESTORE\",\n    \"FUNCTION STATS\",\n    \"GEOADD\",\n    \"GEODIST\",\n    \"GEOHASH\",\n    \"GEOPOS\",\n    \"GEORADIUS\",\n    \"GEORADIUS_RO\",\n    \"GEORADIUSBYMEMBER\",\n    \"GEORADIUSBYMEMBER_RO\",\n    \"GEOSEARCH\",\n    \"GEOSEARCHSTORE\",\n    \"GET\",\n    \"GETBIT\",\n    \"GETDEL\",\n    \"GETEX\",\n    \"GETRANGE\",\n    \"GETSET\",\n    \"GRAPH.CONFIG GET\",\n    \"GRAPH.CONFIG SET\",\n    \"GRAPH.CONSTRAINT CREATE\",\n    \"GRAPH.CONSTRAINT DROP\",\n    \"GRAPH.DELETE\",\n    \"GRAPH.EXPLAIN\",\n    \"GRAPH.LIST\",\n    \"GRAPH.PROFILE\",\n    \"GRAPH.QUERY\",\n    \"GRAPH.RO_QUERY\",\n    \"GRAPH.SLOWLOG\",\n    \"HDEL\",\n    \"HELLO\",\n    \"HEXISTS\",\n    \"HGET\",\n    \"HGETALL\",\n    \"HINCRBY\",\n    \"HINCRBYFLOAT\",\n    \"HKEYS\",\n    \"HLEN\",\n    \"HMGET\",\n    \"HMSET\",\n    \"HRANDFIELD\",\n    \"HSCAN\",\n    \"HSET\",\n    \"HSETNX\",\n    \"HSTRLEN\",\n    \"HVALS\",\n    \"INCR\",\n    \"INCRBY\",\n    \"INCRBYFLOAT\",\n    \"INFO\",\n    \"JSON.ARRAPPEND\",\n    \"JSON.ARRINDEX\",\n    \"JSON.ARRINSERT\",\n    \"JSON.ARRLEN\",\n    \"JSON.ARRPOP\",\n    \"JSON.ARRTRIM\",\n    \"JSON.CLEAR\",\n    \"JSON.DEBUG\",\n    \"JSON.DEBUG MEMORY\",\n    \"JSON.DEL\",\n    \"JSON.FORGET\",\n    \"JSON.GET\",\n    \"JSON.MGET\",\n    \"JSON.NUMINCRBY\",\n    \"JSON.NUMMULTBY\",\n    \"JSON.OBJKEYS\",\n    \"JSON.OBJLEN\",\n    \"JSON.RESP\",\n    \"JSON.SET\",\n    \"JSON.STRAPPEND\",\n    \"JSON.STRLEN\",\n    \"JSON.TOGGLE\",\n    \"JSON.TYPE\",\n    \"KEYS\",\n    \"LASTSAVE\",\n    \"LATENCY DOCTOR\",\n    \"LATENCY GRAPH\",\n    \"LATENCY HISTOGRAM\",\n    \"LATENCY HISTORY\",\n    \"LATENCY LATEST\",\n    \"LATENCY RESET\",\n    \"LCS\",\n    \"LINDEX\",\n    \"LINSERT\",\n    \"LLEN\",\n    \"LMOVE\",\n    \"LMPOP\",\n    \"LOLWUT\",\n    \"LPOP\",\n    \"LPOS\",\n    \"LPUSH\",\n    \"LPUSHX\",\n    \"LRANGE\",\n    \"LREM\",\n    \"LSET\",\n    \"LTRIM\",\n    \"MEMORY DOCTOR\",\n    \"MEMORY MALLOC-STATS\",\n    \"MEMORY PURGE\",\n    \"MEMORY STATS\",\n    \"MEMORY USAGE\",\n    \"MGET\",\n    \"MIGRATE\",\n    \"MODULE LIST\",\n    \"MODULE LOAD\",\n    \"MODULE LOADEX\",\n    \"MODULE UNLOAD\",\n    \"MONITOR\",\n    \"MOVE\",\n    \"MSET\",\n    \"MSETNX\",\n    \"MULTI\",\n    \"OBJECT ENCODING\",\n    \"OBJECT FREQ\",\n    \"OBJECT IDLETIME\",\n    \"OBJECT REFCOUNT\",\n    \"PERSIST\",\n    \"PEXPIRE\",\n    \"PEXPIREAT\",\n    \"PEXPIRETIME\",\n    \"PFADD\",\n    \"PFCOUNT\",\n    \"PFDEBUG\",\n    \"PFMERGE\",\n    \"PFSELFTEST\",\n    \"PING\",\n    \"PSETEX\",\n    \"PSUBSCRIBE\",\n    \"PSYNC\",\n    \"PTTL\",\n    \"PUBLISH\",\n    \"PUBSUB CHANNELS\",\n    \"PUBSUB NUMPAT\",\n    \"PUBSUB NUMSUB\",\n    \"PUBSUB SHARDCHANNELS\",\n    \"PUBSUB SHARDNUMSUB\",\n    \"PUNSUBSCRIBE\",\n    \"QUIT\",\n    \"RANDOMKEY\",\n    \"READONLY\",\n    \"READWRITE\",\n    \"RENAME\",\n    \"RENAMENX\",\n    \"REPLCONF\",\n    \"REPLICAOF\",\n    \"RESET\",\n    \"RESTORE\",\n    \"RESTORE-ASKING\",\n    \"ROLE\",\n    \"RPOP\",\n    \"RPOPLPUSH\",\n    \"RPUSH\",\n    \"RPUSHX\",\n    \"SADD\",\n    \"SAVE\",\n    \"SCAN\",\n    \"SCARD\",\n    \"SCRIPT DEBUG\",\n    \"SCRIPT EXISTS\",\n    \"SCRIPT FLUSH\",\n    \"SCRIPT KILL\",\n    \"SCRIPT LOAD\",\n    \"SDIFF\",\n    \"SDIFFSTORE\",\n    \"SELECT\",\n    \"SET\",\n    \"SETBIT\",\n    \"SETEX\",\n    \"SETNX\",\n    \"SETRANGE\",\n    \"SHUTDOWN\",\n    \"SINTER\",\n    \"SINTERCARD\",\n    \"SINTERSTORE\",\n    \"SISMEMBER\",\n    \"SLAVEOF\",\n    \"SLOWLOG GET\",\n    \"SLOWLOG LEN\",\n    \"SLOWLOG RESET\",\n    \"SMEMBERS\",\n    \"SMISMEMBER\",\n    \"SMOVE\",\n    \"SORT\",\n    \"SORT_RO\",\n    \"SPOP\",\n    \"SPUBLISH\",\n    \"SRANDMEMBER\",\n    \"SREM\",\n    \"SSCAN\",\n    \"SSUBSCRIBE\",\n    \"STRLEN\",\n    \"SUBSCRIBE\",\n    \"SUBSTR\",\n    \"SUNION\",\n    \"SUNIONSTORE\",\n    \"SUNSUBSCRIBE\",\n    \"SWAPDB\",\n    \"SYNC\",\n    \"TDIGEST.ADD\",\n    \"TDIGEST.BYRANK\",\n    \"TDIGEST.BYREVRANK\",\n    \"TDIGEST.CDF\",\n    \"TDIGEST.CREATE\",\n    \"TDIGEST.INFO\",\n    \"TDIGEST.MAX\",\n    \"TDIGEST.MERGE\",\n    \"TDIGEST.MIN\",\n    \"TDIGEST.QUANTILE\",\n    \"TDIGEST.RANK\",\n    \"TDIGEST.RESET\",\n    \"TDIGEST.REVRANK\",\n    \"TDIGEST.TRIMMED_MEAN\",\n    \"TIME\",\n    \"TOPK.ADD\",\n    \"TOPK.COUNT\",\n    \"TOPK.INCRBY\",\n    \"TOPK.INFO\",\n    \"TOPK.LIST\",\n    \"TOPK.QUERY\",\n    \"TOPK.RESERVE\",\n    \"TOUCH\",\n    \"TS.ADD\",\n    \"TS.ALTER\",\n    \"TS.CREATE\",\n    \"TS.CREATERULE\",\n    \"TS.DECRBY\",\n    \"TS.DEL\",\n    \"TS.DELETERULE\",\n    \"TS.GET\",\n    \"TS.INCRBY\",\n    \"TS.INFO\",\n    \"TS.MADD\",\n    \"TS.MGET\",\n    \"TS.MRANGE\",\n    \"TS.MREVRANGE\",\n    \"TS.QUERYINDEX\",\n    \"TS.RANGE\",\n    \"TS.REVRANGE\",\n    \"TTL\",\n    \"TYPE\",\n    \"UNLINK\",\n    \"UNSUBSCRIBE\",\n    \"UNWATCH\",\n    \"WAIT\",\n    \"WAITAOF\",\n    \"WATCH\",\n    \"XACK\",\n    \"XADD\",\n    \"XAUTOCLAIM\",\n    \"XCLAIM\",\n    \"XDEL\",\n    \"XGROUP CREATE\",\n    \"XGROUP CREATECONSUMER\",\n    \"XGROUP DELCONSUMER\",\n    \"XGROUP DESTROY\",\n    \"XGROUP SETID\",\n    \"XINFO CONSUMERS\",\n    \"XINFO GROUPS\",\n    \"XINFO STREAM\",\n    \"XLEN\",\n    \"XPENDING\",\n    \"XRANGE\",\n    \"XREAD\",\n    \"XREADGROUP\",\n    \"XREVRANGE\",\n    \"XSETID\",\n    \"XTRIM\",\n    \"ZADD\",\n    \"ZCARD\",\n    \"ZCOUNT\",\n    \"ZDIFF\",\n    \"ZDIFFSTORE\",\n    \"ZINCRBY\",\n    \"ZINTER\",\n    \"ZINTERCARD\",\n    \"ZINTERSTORE\",\n    \"ZLEXCOUNT\",\n    \"ZMPOP\",\n    \"ZMSCORE\",\n    \"ZPOPMAX\",\n    \"ZPOPMIN\",\n    \"ZRANDMEMBER\",\n    \"ZRANGE\",\n    \"ZRANGEBYLEX\",\n    \"ZRANGEBYSCORE\",\n    \"ZRANGESTORE\",\n    \"ZRANK\",\n    \"ZREM\",\n    \"ZREMRANGEBYLEX\",\n    \"ZREMRANGEBYRANK\",\n    \"ZREMRANGEBYSCORE\",\n    \"ZREVRANGE\",\n    \"ZREVRANGEBYLEX\",\n    \"ZREVRANGEBYSCORE\",\n    \"ZREVRANK\",\n    \"ZSCAN\",\n    \"ZSCORE\",\n    \"ZUNION\",\n    \"ZUNIONSTORE\"\n]\n\nPIECE_COMMAND_DICT = {\n    \"ACL\": [\n        \"ACL CAT\",\n        \"ACL DELUSER\",\n        \"ACL DRYRUN\",\n        \"ACL GENPASS\",\n        \"ACL GETUSER\",\n        \"ACL LIST\",\n        \"ACL LOAD\",\n        \"ACL LOG\",\n        \"ACL SAVE\",\n        \"ACL SETUSER\",\n        \"ACL USERS\",\n        \"ACL WHOAMI\",\n    ],\n    \"CLIENT\": [\n        \"CLIENT CACHING\",\n        \"CLIENT GETNAME\",\n        \"CLIENT GETREDIR\",\n        \"CLIENT ID\",\n        \"CLIENT INFO\",\n        \"CLIENT KILL\",\n        \"CLIENT LIST\",\n        \"CLIENT NO-EVICT\",\n        \"CLIENT NO-TOUCH\",\n        \"CLIENT PAUSE\",\n        \"CLIENT REPLY\",\n        \"CLIENT SETINFO\",\n        \"CLIENT SETNAME\",\n        \"CLIENT TRACKING\",\n        \"CLIENT TRACKINGINFO\",\n        \"CLIENT UNBLOCK\",\n        \"CLIENT UNPAUSE\",\n    ],\n    \"CLUSTER\": [\n        \"CLUSTER ADDSLOTS\",\n        \"CLUSTER ADDSLOTSRANGE\",\n        \"CLUSTER BUMPEPOCH\",\n        \"CLUSTER COUNT-FAILURE-REPORTS\",\n        \"CLUSTER COUNTKEYSINSLOT\",\n        \"CLUSTER DELSLOTS\",\n        \"CLUSTER DELSLOTSRANGE\",\n        \"CLUSTER FAILOVER\",\n        \"CLUSTER FLUSHSLOTS\",\n        \"CLUSTER FORGET\",\n        \"CLUSTER GETKEYSINSLOT\",\n        \"CLUSTER INFO\",\n        \"CLUSTER KEYSLOT\",\n        \"CLUSTER LINKS\",\n        \"CLUSTER MEET\",\n        \"CLUSTER MYID\",\n        \"CLUSTER MYSHARDID\",\n        \"CLUSTER NODES\",\n        \"CLUSTER REPLICAS\",\n        \"CLUSTER REPLICATE\",\n        \"CLUSTER RESET\",\n        \"CLUSTER SAVECONFIG\",\n        \"CLUSTER SET-CONFIG-EPOCH\",\n        \"CLUSTER SETSLOT\",\n        \"CLUSTER SHARDS\",\n        \"CLUSTER SLAVES\",\n        \"CLUSTER SLOTS\",\n    ],\n    \"COMMAND\": [\n        \"COMMAND\",\n        \"COMMAND COUNT\",\n        \"COMMAND DOCS\",\n        \"COMMAND GETKEYS\",\n        \"COMMAND GETKEYSANDFLAGS\",\n        \"COMMAND INFO\",\n        \"COMMAND LIST\",\n    ],\n    \"CONFIG\": [\n        \"CONFIG GET\",\n        \"CONFIG RESETSTAT\",\n        \"CONFIG REWRITE\",\n        \"CONFIG SET\",\n    ],\n    \"FUNCTION\": [\n        \"FUNCTION DELETE\",\n        \"FUNCTION DUMP\",\n        \"FUNCTION FLUSH\",\n        \"FUNCTION KILL\",\n        \"FUNCTION LIST\",\n        \"FUNCTION LOAD\",\n        \"FUNCTION RESTORE\",\n        \"FUNCTION STATS\",\n    ],\n    \"LATENCY\": [\n        \"LATENCY DOCTOR\",\n        \"LATENCY GRAPH\",\n        \"LATENCY HISTOGRAM\",\n        \"LATENCY HISTORY\",\n        \"LATENCY LATEST\",\n        \"LATENCY RESET\",\n    ],\n    \"MEMORY\": [\n        \"MEMORY DOCTOR\",\n        \"MEMORY MALLOC-STATS\",\n        \"MEMORY PURGE\",\n        \"MEMORY STATS\",\n        \"MEMORY USAGE\",\n    ],\n    \"MODULE\": [\n        \"MODULE LIST\",\n        \"MODULE LOAD\",\n        \"MODULE LOADEX\",\n        \"MODULE UNLOAD\",\n    ],\n    \"OBJECT\": [\n        \"OBJECT ENCODING\",\n        \"OBJECT FREQ\",\n        \"OBJECT IDLETIME\",\n        \"OBJECT REFCOUNT\",\n    ],\n    \"PUBSUB\": [\n        \"PUBSUB CHANNELS\",\n        \"PUBSUB NUMPAT\",\n        \"PUBSUB NUMSUB\",\n        \"PUBSUB SHARDCHANNELS\",\n        \"PUBSUB SHARDNUMSUB\",\n    ],\n    \"SCRIPT\": [\n        \"SCRIPT DEBUG\",\n        \"SCRIPT EXISTS\",\n        \"SCRIPT FLUSH\",\n        \"SCRIPT KILL\",\n        \"SCRIPT LOAD\",\n    ],\n    \"SLOWLOG\": [\n        \"SLOWLOG GET\",\n        \"SLOWLOG LEN\",\n        \"SLOWLOG RESET\",\n    ],\n    \"XGROUP\": [\n        \"XGROUP CREATE\",\n        \"XGROUP CREATECONSUMER\",\n        \"XGROUP DELCONSUMER\",\n        \"XGROUP DESTROY\",\n        \"XGROUP SETID\",\n    ],\n    \"XINFO\": [\n        \"XINFO CONSUMERS\",\n        \"XINFO GROUPS\",\n        \"XINFO STREAM\",\n    ]\n}\n\n# 通用命令\nREDIS_GENERIC_KEY_LIST = [\n    \"KEYS\",\n    \"DEL\",\n    \"OBJECT\",\n    \"EXISTS\",\n    \"EXPIRE\",\n    \"MOVE\",\n    \"PERSIST\",\n    \"PTTL\",\n    \"RANDOMKEY\",\n    \"RENAME\",\n    \"RENAMENX\",\n    \"SCAN\",\n    \"SORT\",\n    \"TTL\",\n    \"TYPE\",  # 引号处理\n]\n\n# 字符串命令\nREDIS_STRING_KEY_LIST = [\n    \"APPEND\",\n    \"BITCOUNT\",\n    \"BITOP\",\n    \"BITPOS\",\n    \"DECR\",\n    \"DECRBY\",\n    \"GET\",\n    \"GETRANGE\",\n    \"GETSET\",\n    \"INCR\",\n    \"INCRBY\",\n    \"INCRBYFLOAT\",\n    \"MGET\",\n    \"MSET\",\n    \"MSETNX\",\n    \"PSETEX\",\n    \"SET\",\n    \"SETBIT\",\n    \"SETEX\",\n    \"SETNX\",\n    \"SETRANGE\",\n    \"STRLEN\",\n    \"BITFIELD\",\n]\n\n# 列表命令\nREDIS_LIST_KEY_LIST = [\n    \"LPUSH\",\n    \"RPUSH\",\n    \"RPUSHX\",\n    \"BRPOPLRUSH\",\n    \"LINDEX\",\n    \"LINSERT\",\n    \"LLEN\",\n    \"LPOP\",\n    \"LPUSHX\",\n    \"LRANGE\",\n    \"LREM\",\n    \"LSET\",\n    \"LTRIM\",\n    \"RPOP\",\n    \"RPOPLPU\",\n    \"RPOPLPUSH\",\n]\n\n# 集合命令\nREDIS_SET_KEY_LIST = [\n    \"SADD\",\n    \"SCARD\",\n    \"SDIFF\",\n    \"SDIFFSTORE\",\n    \"SINTER\",\n    \"SINTERSTORE\",\n    \"SISMEMBER\",\n    \"SMEMBERS\",\n    \"SMOVE\",\n    \"SPOP\",\n    \"SRANDMEMBER\",\n    \"SREM\",\n    \"SUNION\",\n    \"SUNIONSTORE\",\n    \"SSCAN\",\n]\n\n# 有序集合命令\nREDIS_SORTED_SET_KEY_LIST = [\n    \"ZADD\",\n    \"ZCARD\",\n    \"ZCOUNT\",\n    \"ZINCRBY\",\n    \"ZRANGE\",\n    \"ZRANGEBYSCORE\",\n    \"ZRANK\",\n    \"ZREMRANGEBYRANK\",\n    \"ZREMRANGEBYCORE\",\n    \"ZREVRANGE\",\n    \"ZREVRANGEBYSCORE\",\n    \"ZREVRANK\",\n    \"ZSCORE\",\n    \"ZUNIONSTORE\",\n    \"ZINTERSTORE\",\n    \"ZSCAN\",\n    \"ZRANGEBYLEX\",\n    \"ZLEXCOUNT\",\n]\n\n# 服务命令\nREDIS_SORTED_SERVER_KEY_LIST = [\n    # \"FLUSHALL\",  # 返回值处理，危险命令暂时不支持使用（删除全部库数据）\n    \"FLUSHDB\",  # 返回值处理（删除当前库数据）\n    \"DBSIZE\",\n    \"TIME\",  # 引号处理\n    \"INFO\",  # 引号处理\n    \"CLIENT KILL\",\n    \"CLIENT LIST\",  # 引号处理\n    \"CLIENT GETNAME\",\n    \"CLIENT SETNAME\",\n    \"CONFIG GET\",\n    # \"MONITOR\",\n    \"SLOWLOG\",\n    \"ROLE\",\n    \"SWAPDB\",\n    \"MEMORY\",\n]\n\n# 字典命令\nREDIS_SORTED_HASH_KEY_LIST = [\n    \"HDEL\",\n    \"HEXISTS\",\n    \"HGET\",\n    \"HGETALL\",\n    \"HINCRBY\",\n    \"HINCRBYFLOAT\",\n    \"HKEYS\",\n    \"HMGET\",\n    \"HMSET\",\n    \"HSET\",\n    \"HSETNX\",\n    \"HVALS\",\n    \"HSCAN\",\n    \"HSTRLEN\",\n]\n\n# # 消息订阅命令\n# REDIS_SORTED_PUB_SUB_KEY_LIST = [\n#     \"PSUBSCRIBE\",\n#     \"PUBLISH\",\n#     \"PUBSUB\",\n#     \"PUNSUBSCRIBE\",\n#     \"SUBSCRIBE\",\n#     \"UNSUBSCRIBE\",\n# ]\n\n# 基数统计命令\nREDIS_SORTED_HYPER_LOG_KEY_LIST = [\n    \"PFADD\",\n    \"PFCOUNT\",\n    \"PFMERGE\",\n]\n\n# 连接命令\nREDIS_SORTED_CONNECTION_KEY_LIST = [\n    # \"AUTH\",\n    \"ECHO\",\n    \"PING\",  # 返回值处理 引号处理\n    \"QUIT\",\n]\n\n# 脚本命令\nREDIS_SORTED_SCRIPTING_KEY_LIST = [\n    \"EVAL\",\n    \"EVALSHA\",\n    \"SCRIPT EXISTS\",\n    \"SCRIPT FLUSH\",\n    \"SCRIPT KILL\",\n    \"SCRIPT LOAD\",\n]\n\n# 地图命令\nREDIS_SORTED_GEO_KEY_LIST = [\n    \"GEOADD\",\n    \"GEOHASH\",\n    \"GEOPOS\",\n    \"GEODIST\",\n    \"GEORADIUS\",\n    \"GEORADIUSBYMEMBER\",\n]\n\n# REDIS_SORTED_PUB_SUB_KEY_LIST\nREDIS_SUPPORT_KEY_LIST = REDIS_GENERIC_KEY_LIST + REDIS_STRING_KEY_LIST + REDIS_LIST_KEY_LIST + REDIS_SET_KEY_LIST + REDIS_SORTED_SET_KEY_LIST + REDIS_SORTED_SERVER_KEY_LIST + REDIS_SORTED_HASH_KEY_LIST + REDIS_SORTED_HYPER_LOG_KEY_LIST + REDIS_SORTED_CONNECTION_KEY_LIST + REDIS_SORTED_SCRIPTING_KEY_LIST + REDIS_SORTED_GEO_KEY_LIST\n\n# 有些命令小写输出更加友好，将其使用小写执行\nCOMMAND_CLEAN_LOWER_COMMAND_LIST = [\"INFO\", \"CLIENT LIST\"]\n# 有些命令返回\nCOMMAND_CLEAN_RETURN_DICT = {\n    \"PING\": \"PONG\",\n    \"FLUSHALL\": \"OK\",\n    \"FLUSHDB\": \"OK\",\n}"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers.py",
    "content": "import contextlib\nimport paramiko\nimport time\nimport json\nimport logging\nimport uuid\nimport datetime\nimport contextlib\nimport io\nimport socket\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom django_redis import get_redis_connection\nfrom paramiko.ssh_exception import NoValidConnectionsError\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data_async  // 更新导入\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import WebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, CredentialModel, SessionLogModel, HostCredentialRelationshipModel, \\\n    NetworkProxyModel\nfrom bastion.core.terminal.component import SshTerminalThread, InterActiveShellThread\nfrom bastion.utils.encryption import PasswordEncryption\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass WebSSH(AsyncWebsocketConsumer):\n    ssh = None\n    http_user = True\n    channel_session = False\n    channel_session_user = False\n    first_flag = True\n    wait_time = time.time()\n    user = None\n    cache = get_redis_connection(\"cache\")\n    token = \"\"\n    link_config = {}\n    host = None\n    session_log = None\n    stop_key = \"\"\n\n    # 从ws接口中获取cookies内用户信息\n    def get_user_query(self):\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    # 从ws接口中获取cookies\n    def get_cookie(self):\n        cookie = {}\n        cookies = next((header[1].decode() for header in self.scope['headers'] if header[0] == b'cookie'), None)\n\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    # 处理ws接口上参数\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    # 校验用户信息-登录用户是否与连接(登录前缓存用户主机相关信息)用户相同\n    def check_link_user(self, user_id):\n        self.user = self.get_user_query()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] SSH web socket, check_link_user error: {}, param: {}\".format(str(e), str(user_id)))\n                return False\n        return False\n\n    # 获取登录前缓存的登录信息\n    # 异步获取链接配置\n    async def get_link_config(self, token):\n        try:\n            if not self.link_config:\n                self.link_config = await get_redis_dict_data_async(\"cache\", token)  // 异步调用\n            return True, self.link_config\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, get_link_config error: {}, param: {}\".format(str(e), str(token)[:5]))\n            return False, {}\n\n    # 缓存中数据校验权限策略\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    #校验token的可用性，用户是否管理员或外部登录，\n    async def check_token(self, check_user=False):\n        request_param = self.get_request_param_dict()\n        if not self.token:\n            if request_param.get(\"token\"):\n                self.token = request_param.get(\"token\")\n            else:\n                self.token = self.get_cookie().get(\"link_token\")\n        status, data = await self.get_link_config(self.token)  // 异步调用\n        if status and data:\n            if not check_user:\n                status = self.check_link_user(data.get(\"user_id\"))\n            else:\n                status = True\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, WebSocketStatusCode.ACCESS_ERROR, {}\n            return False, WebSocketStatusCode.USER_ERROR, {}\n        return False, WebSocketStatusCode.PARAM_ERROR, {}\n\n    async def close_connect(self, text):\n        try:\n            await self.send(text_data=str(text))  \n            await self.close()\n        except Exception as e:\n            pass\n        return\n\n    # 创建会话\n    def create_session_log(self, data):\n        # sourcery skip: lift-return-into-if, remove-unnecessary-else, swap-if-else-branches\n        try:\n            query_string = self.scope['query_string'].decode()\n            query_dict = dict([x.split('=', 1) for x in query_string.split('&')])\n            width = int(float(query_dict[\"width\"]))\n            height = int(float(query_dict[\"height\"]))\n        except Exception:\n            width = 175\n            height = 55\n        \"\"\"\n        根据Token获取的缓存数据记录登陆日志\n        \"\"\"\n        log_name = str(uuid.uuid4())\n        if not data.get(\"cache\"):\n            try:\n                login_name = HostCredentialRelationshipModel.fetch_one(id=data.get(\"credential_host_id\")).credential.login_name\n            except Exception as e:\n                app_logging.error(\"[ERROR] Ws api error, get credential error: {}\".format(str(e)))\n                login_name = \"root\"\n            session_log = SessionLogModel.create(**{\n                \"host_id\": data.get(\"host_id\"),\n                \"channel\": self.channel_name,\n                \"host_name\": self.host.host_name,\n                \"system_type\": self.host.system_type,\n                \"host_address\": self.host.host_address,\n                \"protocol_type\": self.host.protocol_type,\n                \"login_type\": 1,\n                \"port\": self.host.port,\n                \"login_name\": login_name,\n                \"log_name\": log_name,\n                \"user\": self.user.username,\n                \"width\": width,\n                \"height\": height\n            })\n        else:\n            session_log = SessionLogModel.create(**{\n                \"channel\": self.channel_name,\n                \"host_name\": data.get(\"host_info\").get(\"host_name\"),\n                \"system_type\": data.get(\"host_info\").get(\"system_type\"),\n                \"host_address\": data.get(\"host_info\").get(\"ip\"),\n                \"protocol_type\": \"ssh\",\n                \"login_type\": 1,\n                \"port\": data.get(\"host_info\").get(\"port\"),\n                \"login_name\": data.get(\"host_info\").get(\"username\", \"\"),\n                \"log_name\": log_name,\n                \"user\": self.user.username,\n                \"width\": width,\n                \"height\": height\n            })\n        return session_log\n\n    # 通过密码连接\n    def client_ssh_by_password(self, ip, port, username, password, sock=None, timeout=5):\n        try:\n            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            # self.ssh.load_system_host_keys()\n            self.ssh.connect(hostname=ip, port=port, username=username, password=password, sock=sock, timeout=timeout)\n            return True, \"\"\n        except socket.timeout:\n            return False, WebSocketStatusCode.TIME_OUT\n        except NoValidConnectionsError as e:\n            app_logging.error(\"[ERROR] SSH web socket NoValidConnectionsError, client_ssh_by_password error: {}, param: {}\".format(str(e), str([ip, port])))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, client_ssh_by_password error: {}, param: {}\".format(str(e), str([ip, port])))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n\n    # 通过key登录\n    def client_ssh_by_ssh_key(self, ip, port, login_name, ssh_key, passphrase, sock=None, timeout=5):\n        \"\"\"\n        创建秘钥登陆SSH连接\n        \"\"\"\n        app_logging.error(\"[INFO]:{}\".format(str([ip, port, login_name, ssh_key, passphrase])))\n        try:\n            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            io_pri_key = io.StringIO(ssh_key)\n            pri_key = paramiko.RSAKey.from_private_key(io_pri_key, password=passphrase)\n            self.ssh.connect(hostname=ip, port=port, username=login_name, pkey=pri_key, timeout=timeout, sock=sock)\n            # /usr/local/lib/python3.7/site-packages/paramiko/transport.py +757\n            # self.server_extensions = {\"server-sig-algs\": \"ssh-rsa\"}\n            # t = paramiko.Transport(sock)\n            # if hasattr(t, 'server_extensions'):\n            #     t.server_extensions = {'server-sig-algs': 'ssh-rsa'}\n            return True, \"\"\n        except socket.timeout:\n            return False, WebSocketStatusCode.TIME_OUT\n        except NoValidConnectionsError as e:\n            app_logging.error(\"[ERROR] SSH web socket NoValidConnectionsError, client_ssh_by_password error: {}, param: {}\".format(str(e), str([ip, port])))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, client_ssh_by_ssh_key error: {}, param: {}\".format(\n                    str(e), str([ip, port, login_name, ssh_key, passphrase])\n            ))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n            # return False, str(e)\n\n    def get_password(self, password):\n        \"\"\"\n        密码解密\n        \"\"\"\n        try:\n            password = PasswordEncryption().decrypt(password)\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, get_password error: {}\".format(str(e)))\n            password = \"\"\n        return password\n\n    # 通代理密码连接\n    def create_proxy_sock_by_password(self, ip, port, username, password, host_ip, host_port, timeout=5):\n        \"\"\"\n        通过密码创建代理连接\n        \"\"\"\n        try:\n            proxy = paramiko.SSHClient()\n            proxy.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            proxy.connect(hostname=ip, port=port, username=username, password=self.get_password(password), timeout=timeout)\n            sock = proxy.get_transport().open_channel('direct-tcpip', (host_ip, host_port), (ip, 0))\n            return True, sock\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, create_proxy_sock_by_password error: {}, param: {}\".format(str(e), str(ip)))\n            return False, None\n\n    # 通过代理key连接\n    def create_proxy_sock_by_ssh_key(self, ip, port, username, ssh_key, passphrase, host_ip, host_port, timeout=5):\n        \"\"\"\n        通过key创建代理连接\n        \"\"\"\n        try:\n            proxy = paramiko.SSHClient()\n            proxy.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            io_pri_key = io.StringIO(ssh_key)\n            pri_key = paramiko.RSAKey.from_private_key(io_pri_key, password=self.get_password(passphrase))\n            proxy.connect(hostname=ip, port=port, username=username, pkey=pri_key, timeout=timeout)\n            sock = proxy.get_transport().open_channel('direct-tcpip', (host_ip, host_port), (ip, 0))\n            return True, sock\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, create_proxy_sock_by_ssh_key error: {}, param: {}\".format(\n                    str(e), str(ip)\n            ))\n            return False, None\n\n    # 创建本地登录SSH连接\n    async def _create_ssh_link(self, credential, host, password, timeout=5):\n        \"\"\"\n        创建SSH连接\n        \"\"\"\n        network_proxy = host.network_proxy\n        sock = None\n        if network_proxy:\n            try:\n                linux_timeout = network_proxy.linux_timeout or 5\n            except Exception:\n                linux_timeout = 5\n            if network_proxy.credential_type == network_proxy.CREDENTIAL_PASSWORD:\n                status, sock = self.create_proxy_sock_by_password(\n                    network_proxy.linux_ip,\n                    network_proxy.linux_port,\n                    network_proxy.linux_login_name,\n                    network_proxy.linux_login_password,\n                    self.host.host_address,\n                    self.host.port,\n                    linux_timeout\n                )\n            else:\n                status, sock = self.create_proxy_sock_by_ssh_key(\n                    network_proxy.linux_ip,\n                    network_proxy.linux_port,\n                    network_proxy.linux_login_name,\n                    network_proxy.ssh_key,\n                    network_proxy.passphrase,\n                    self.host.host_address,\n                    self.host.port,\n                    linux_timeout\n                )\n            if not status:\n                return False, WebSocketStatusCode.PROXY_LINK_ERROR\n        if credential.login_type == CredentialModel.LOGIN_AUTO:\n            if credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                password = self.get_password(credential.login_password)\n                login_name = credential.login_name\n                status, code = self.client_ssh_by_password(host.host_address, host.port, login_name, password, sock, timeout)\n            else:\n                password = self.get_password(credential.passphrase)\n                ssh_key = credential.ssh_key\n                login_name = credential.login_name\n                status, code = self.client_ssh_by_ssh_key(host.host_address, host.port, login_name, ssh_key, password, sock, timeout)\n        else:\n            login_name = credential.login_name\n            if credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                status, code = self.client_ssh_by_password(host.host_address, host.port, login_name, password, sock, timeout)\n            else:\n                ssh_key = credential.ssh_key\n                status, code = self.client_ssh_by_ssh_key(host.host_address, host.port, login_name, ssh_key, password, sock, timeout)\n        if not status:\n            return False, code\n        return True, \"\"\n\n    # 创建外部登录SSH连接\n    def _create_cache_ssh_link(self, token_data, timeout=5):\n        \"\"\"\n        创建SSH连接\n        \"\"\"\n        host_info = token_data.get(\"host_info\")\n        network_proxy_id = host_info.get(\"network_proxy\")\n        ip = host_info.get(\"ip\")\n        port = host_info.get(\"port\")\n        username = host_info.get(\"username\", \"root\")\n        ssh_key = host_info.get(\"ssh_key\")\n        password = host_info.get(\"password\")\n        sock = None\n        # app_logging.info(\"network_proxy_id--\" + str(network_proxy_id))\n        if network_proxy_id:  # 使用代理登录\n            try: network_proxy_id = int(network_proxy_id)\n            except: return False, WebSocketStatusCode.PROXY_LINK_ERROR\n            network_proxy = NetworkProxyModel.fetch_one(id=network_proxy_id)\n            # app_logging.info(\"network_proxy--\" + str(network_proxy))\n\n            if not network_proxy:\n                return False, WebSocketStatusCode.PROXY_LINK_ERROR\n            try:\n                linux_timeout = network_proxy.linux_timeout or 5\n            except Exception:\n                linux_timeout = 5\n            if network_proxy.credential_type == network_proxy.CREDENTIAL_PASSWORD:\n                status, sock = self.create_proxy_sock_by_password(\n                        network_proxy.linux_ip,\n                        network_proxy.linux_port,\n                        network_proxy.linux_login_name,\n                        network_proxy.linux_login_password,\n                        ip,\n                        port,\n                        linux_timeout\n                )\n            else:\n                status, sock = self.create_proxy_sock_by_ssh_key(\n                        network_proxy.linux_ip,\n                        network_proxy.linux_port,\n                        network_proxy.linux_login_name,\n                        network_proxy.ssh_key,\n                        network_proxy.passphrase,\n                        ip,\n                        port,\n                        linux_timeout\n                    )\n            if not status:\n                return False, WebSocketStatusCode.PROXY_LINK_ERROR\n        # app_logging.info(sock)\n\n        if token_data.get(\"login_type\") == \"password\":\n            status, code = await self._create_ssh_link(credential_host.credential, self.host, password, timeout=timeout)\n        else:\n            status, code = self.client_ssh_by_ssh_key(ip, port, username, ssh_key, password, sock, timeout=timeout)\n        if not status:\n            return False, code\n        return True, \"\"\n\n    # 创建SSH连接入口\n    def create_ssh_link(self, data):\n        \"\"\"\n        校验数据以及创建SSH连接\n        \"\"\"\n        # app_logging.info(str(data))\n        try:\n            timeout = int(data.get(\"timeout\", 5))\n        except Exception:\n            timeout = 5\n        if not data.get(\"cache\"):\n            host_id = data.get(\"host_id\")\n            credential_host_id = data.get(\"credential_host_id\")\n            password = data.get(\"password\")\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=credential_host_id)\n            self.host = HostModel.fetch_one(id=host_id)\n            if not self.host:\n                return False, WebSocketStatusCode.PARAM_ERROR\n            if not credential_host:\n                return False, WebSocketStatusCode.PARAM_ERROR\n            if self.host.system_type != HostModel.SYSTEM_LINUX:\n                return False, WebSocketStatusCode.HOST_TYPE_ERROR\n            status, code = self._create_ssh_link(credential_host.credential, self.host, password, timeout=timeout)\n        else:\n            status, code = await self._create_cache_ssh_link(data, timeout)\n\n        if not status:\n            return False, code\n        return True, \"\"\n\n    async def connect(self):\n        self.wait_time = time.time()\n        await self.accept()\n        # 验证token\n        self.ssh = paramiko.SSHClient()\n        status, code, data = self.check_token()\n        if status in [False]:\n            await self.close_connect(code)\n            return\n        try:\n            status, code = self.create_ssh_link(data)\n            if status:\n                self.session_log = self.create_session_log(data)\n                self.start_ssh()\n            else:\n                await self.close_connect(code)\n                return\n        except Exception as e:\n            app_logging.error(\"[ERROR] Create ssh link error: {}\".format(str(e)))\n            await self.close_connect(WebSocketStatusCode.SSH_LINK_ERROR)\n            return\n\n    # SSH开始工作，进入两个线程\n    # SshTerminalThread\n    # InterActiveShellThread\n    def start_ssh(self):\n        chan = self.ssh.invoke_shell(width=self.session_log.width, height=self.session_log.height, term='xterm')\n        # chan.setblocking(1)  # 设置为阻塞模式\n        # chan.settimeout(None)  # 设置超时为 None，意味着无超时\n        sshterminal = SshTerminalThread(self, chan, self.user.username, self.token)\n        # sshterminal.setDaemon = True\n        sshterminal.start()\n        log_name = self.session_log.log_name + '.log'\n        self.stop_key = str(uuid.uuid4())\n        interactivessh = InterActiveShellThread(chan, self, log_name=log_name, width=self.session_log.width,\n                                                    height=self.session_log.height, stop_key=self.stop_key)\n        # interactivessh.setDaemon = True\n        interactivessh.start()\n\n    async def disconnect(self, close_code):\n        self.close_ssh()\n        time.sleep(0.5)\n        try:\n            if self.session_log:\n                self.session_log.update(**{\n                    \"is_finished\": True,\n                    \"end_time\": datetime.datetime.now()\n                })\n        except Exception as e:\n            app_logging.error(\"[ERROR] Update Session Log error: {}, param: {}\".format(str(e), str(self.session_log)))\n        with contextlib.suppress(Exception):\n            await self.close()  \n\n    def close_ssh(self):  // 改为异步方法\n        self.queue.publish(self.channel_name, json.dumps(['close']))\n        redis_client = await get_async_redis_connection(\"cache\")  // 异步获取连接\n        await redis_client.set(self.stop_key, \"true\")  // 异步调用\n        await redis_client.expire(self.stop_key, 10)  // 异步调用\n        await asyncio.sleep(2)  // 使用异步sleep\n\n    @property\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        try:\n            status, code, data = self.check_token(check_user=True)\n            if status in [False]:\n                self.close_connect(code)\n                return\n            if text_data is not None:           # 普通命令执行\n                self.queue.publish(self.channel_name, text_data)\n            if bytes_data:                       # RZ SZ\n                self.queue.publish(self.channel_name, bytes_data)\n        except socket.error:\n            self.disconnect(1000)\n            return\n        except ValueError:\n            if self.first_flag:\n                self.first_flag = False\n            self.queue.publish(self.channel_name, smart_unicode(text_data))\n        except Exception as e:\n            self.disconnect(1000)\n            return\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers.py.old",
    "content": "import contextlib\nimport paramiko\nimport time\nimport json\nimport logging\nimport uuid\nimport datetime\nimport io\nimport socket\nfrom channels.generic.websocket import WebsocketConsumer\nfrom django_redis import get_redis_connection\nfrom paramiko.ssh_exception import NoValidConnectionsError\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_text as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import WebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, CredentialModel, SessionLogModel, HostCredentialRelationshipModel, \\\n    NetworkProxyModel\nfrom bastion.core.terminal.component import SshTerminalThread, InterActiveShellThread\nfrom bastion.utils.encryption import PasswordEncryption\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass WebSSH(WebsocketConsumer):\n    ssh = None\n    http_user = True\n    channel_session = False\n    channel_session_user = False\n    first_flag = True\n    wait_time = time.time()\n    user = None\n    cache = get_redis_connection(\"cache\")\n    token = \"\"\n    link_config = {}\n    host = None\n    session_log = None\n    stop_key = \"\"\n\n    # 从ws接口中获取cookies内用户信息\n    def get_user_query(self):\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    # 从ws接口中获取cookies\n    def get_cookie(self):\n        cookie = {}\n        cookies = next((header[1].decode() for header in self.scope['headers'] if header[0] == b'cookie'), None)\n\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    # 处理ws接口上参数\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    # 校验用户信息-登录用户是否与连接(登录前缓存用户主机相关信息)用户相同\n    def check_link_user(self, user_id):\n        self.user = self.get_user_query()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] SSH web socket, check_link_user error: {}, param: {}\".format(str(e), str(user_id)))\n                return False\n        return False\n\n    # 获取登录前缓存的登录信息\n    def get_link_config(self, token):\n        try:\n            if not self.link_config:\n                self.link_config = get_redis_dict_data(self.cache, token)\n            return True, self.link_config\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, get_link_config error: {}, param: {}\".format(str(e), str(token)[:5]))\n            return False, {}\n\n    # 缓存中数据校验权限策略\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    #校验token的可用性，用户是否管理员或外部登录，\n    def check_token(self, check_user=False):\n        request_param = self.get_request_param_dict()\n        if not self.token:\n            if request_param.get(\"token\"):\n                self.token = request_param.get(\"token\")\n            else:\n                self.token = self.get_cookie().get(\"link_token\")\n        status, data = self.get_link_config(self.token)\n        if status and data:\n            if not check_user:\n                status = self.check_link_user(data.get(\"user_id\"))\n            else:\n                status = True\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, WebSocketStatusCode.ACCESS_ERROR, {}\n            return False, WebSocketStatusCode.USER_ERROR, {}\n        return False, WebSocketStatusCode.PARAM_ERROR, {}\n\n    def close_connect(self, text):\n        try:\n            self.send(text_data=str(text))\n            self.close()\n        except Exception as e:\n            pass\n        return\n\n    # 创建会话\n    def create_session_log(self, data):\n        # sourcery skip: lift-return-into-if, remove-unnecessary-else, swap-if-else-branches\n        try:\n            query_string = self.scope['query_string'].decode()\n            query_dict = dict([x.split('=', 1) for x in query_string.split('&')])\n            width = int(float(query_dict[\"width\"]))\n            height = int(float(query_dict[\"height\"]))\n        except Exception:\n            width = 175\n            height = 55\n        \"\"\"\n        根据Token获取的缓存数据记录登陆日志\n        \"\"\"\n        log_name = str(uuid.uuid4())\n        if not data.get(\"cache\"):\n            try:\n                login_name = HostCredentialRelationshipModel.fetch_one(id=data.get(\"credential_host_id\")).credential.login_name\n            except Exception as e:\n                app_logging.error(\"[ERROR] Ws api error, get credential error: {}\".format(str(e)))\n                login_name = \"root\"\n            session_log = SessionLogModel.create(**{\n                \"host_id\": data.get(\"host_id\"),\n                \"channel\": self.channel_name,\n                \"host_name\": self.host.host_name,\n                \"system_type\": self.host.system_type,\n                \"host_address\": self.host.host_address,\n                \"protocol_type\": self.host.protocol_type,\n                \"login_type\": 1,\n                \"port\": self.host.port,\n                \"login_name\": login_name,\n                \"log_name\": log_name,\n                \"user\": self.user.username,\n                \"width\": width,\n                \"height\": height\n            })\n        else:\n            session_log = SessionLogModel.create(**{\n                \"channel\": self.channel_name,\n                \"host_name\": data.get(\"host_info\").get(\"host_name\"),\n                \"system_type\": data.get(\"host_info\").get(\"system_type\"),\n                \"host_address\": data.get(\"host_info\").get(\"ip\"),\n                \"protocol_type\": \"ssh\",\n                \"login_type\": 1,\n                \"port\": data.get(\"host_info\").get(\"port\"),\n                \"login_name\": data.get(\"host_info\").get(\"username\", \"\"),\n                \"log_name\": log_name,\n                \"user\": self.user.username,\n                \"width\": width,\n                \"height\": height\n            })\n        return session_log\n\n    # 通过密码连接\n    def client_ssh_by_password(self, ip, port, username, password, sock=None):\n        try:\n            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            # self.ssh.load_system_host_keys()\n            self.ssh.connect(hostname=ip, port=port, username=username, password=password, sock=sock, timeout=3)\n            return True, \"\"\n        except socket.timeout:\n            return False, WebSocketStatusCode.TIME_OUT\n        except NoValidConnectionsError as e:\n            app_logging.error(\"[ERROR] SSH web socket NoValidConnectionsError, client_ssh_by_password error: {}, param: {}\".format(str(e), str([ip, port])))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, client_ssh_by_password error: {}, param: {}\".format(str(e), str([ip, port])))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n\n    # 通过key登录\n    def client_ssh_by_ssh_key(self, ip, port, login_name, ssh_key, passphrase, sock=None):\n        \"\"\"\n        创建秘钥登陆SSH连接\n        \"\"\"\n        app_logging.error(\"[INFO]:{}\".format(str([ip, port, login_name, ssh_key, passphrase])))\n        if 1:\n            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            io_pri_key = io.StringIO(ssh_key)\n            print(\"client_ssh_by_ssh_key\", ip, port, login_name, ssh_key, passphrase)\n            pri_key = paramiko.RSAKey.from_private_key(io_pri_key, password=passphrase)\n            self.ssh.connect(hostname=ip, port=port, username=login_name, pkey=pri_key, timeout=3, sock=sock)\n            # self.server_extensions = {\"server-sig-algs\": \"ssh-rsa\"}\n            # t = paramiko.Transport(sock)\n            # if hasattr(t, 'server_extensions'):\n            #     t.server_extensions = {'server-sig-algs': 'ssh-rsa'}\n            return True, \"\"\n        # except socket.timeout:\n        #     return False, WebSocketStatusCode.TIME_OUT\n        # except NoValidConnectionsError as e:\n        #     app_logging.error(\"[ERROR] SSH web socket NoValidConnectionsError, client_ssh_by_password error: {}, param: {}\".format(str(e), str([ip, port])))\n        #     return False, WebSocketStatusCode.SSH_CHECK_ERROR\n        # except Exception as e:\n        #     app_logging.error(\"[ERROR] SSH web socket, client_ssh_by_ssh_key error: {}, param: {}\".format(\n        #             str(e), str([ip, port, login_name, ssh_key, passphrase])\n        #     ))\n        #     return False, WebSocketStatusCode.SSH_CHECK_ERROR\n            # return False, str(e)\n\n    def get_password(self, password):\n        \"\"\"\n        密码解密\n        \"\"\"\n        try:\n            password = PasswordEncryption().decrypt(password)\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, get_password error: {}\".format(str(e)))\n            password = \"\"\n        return password\n\n    # 通代理密码连接\n    def create_proxy_sock_by_password(self, ip, port, username, password, host_ip, host_port):\n        \"\"\"\n        通过密码创建代理连接\n        \"\"\"\n        try:\n            proxy = paramiko.SSHClient()\n            proxy.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            proxy.connect(hostname=ip, port=port, username=username, password=self.get_password(password))\n            sock = proxy.get_transport().open_channel('direct-tcpip', (host_ip, host_port), (ip, 0))\n            return True, sock\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, create_proxy_sock_by_password error: {}, param: {}\".format(str(e), str(ip)))\n            return False, None\n\n    # 通过代理key连接\n    def create_proxy_sock_by_ssh_key(self, ip, port, username, ssh_key, passphrase, host_ip, host_port):\n        \"\"\"\n        通过key创建代理连接\n        \"\"\"\n        try:\n            proxy = paramiko.SSHClient()\n            proxy.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            io_pri_key = io.StringIO(ssh_key)\n            pri_key = paramiko.RSAKey.from_private_key(io_pri_key, password=self.get_password(passphrase))\n            proxy.connect(hostname=ip, port=port, username=username, pkey=pri_key)\n            sock = proxy.get_transport().open_channel('direct-tcpip', (host_ip, host_port), (ip, 0))\n            return True, sock\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, create_proxy_sock_by_ssh_key error: {}, param: {}\".format(\n                    str(e), str(ip)\n            ))\n            return False, None\n\n    # 创建本地登录SSH连接\n    def _create_ssh_link(self, credential, host, password):\n        \"\"\"\n        创建SSH连接\n        \"\"\"\n        network_proxy = host.network_proxy\n        sock = None\n        if network_proxy:\n            if network_proxy.credential_type == network_proxy.CREDENTIAL_PASSWORD:\n                status, sock = self.create_proxy_sock_by_password(\n                        network_proxy.linux_ip,\n                        network_proxy.linux_port,\n                        network_proxy.linux_login_name,\n                        network_proxy.linux_login_password,\n                        self.host.host_address,\n                        self.host.port\n                    )\n            else:\n                status, sock = self.create_proxy_sock_by_ssh_key(\n                        network_proxy.linux_ip,\n                        network_proxy.linux_port,\n                        network_proxy.linux_login_name,\n                        network_proxy.ssh_key,\n                        network_proxy.passphrase,\n                        self.host.host_address,\n                        self.host.port\n                    )\n            if not status:\n                return False, WebSocketStatusCode.PROXY_LINK_ERROR\n        if credential.login_type == CredentialModel.LOGIN_AUTO:\n            if credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                password = self.get_password(credential.login_password)\n                login_name = credential.login_name\n                status, code = self.client_ssh_by_password(host.host_address, host.port, login_name, password, sock)\n            else:\n                password = self.get_password(credential.passphrase)\n                ssh_key = credential.ssh_key\n                login_name = credential.login_name\n                status, code = self.client_ssh_by_ssh_key(host.host_address, host.port, login_name, ssh_key, password, sock)\n        else:\n            login_name = credential.login_name\n            if credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                status, code = self.client_ssh_by_password(host.host_address, host.port, login_name, password, sock)\n            else:\n                ssh_key = credential.ssh_key\n                status, code = self.client_ssh_by_ssh_key(host.host_address, host.port, login_name, ssh_key, password, sock)\n        if not status:\n            return False, code\n        return True, \"\"\n\n    # 创建外部登录SSH连接\n    def _create_cache_ssh_link(self, token_data):\n        \"\"\"\n        创建SSH连接\n        \"\"\"\n        host_info = token_data.get(\"host_info\")\n        network_proxy_id = host_info.get(\"network_proxy\")\n        ip = host_info.get(\"ip\")\n        port = host_info.get(\"port\")\n        username = host_info.get(\"username\", \"root\")\n        ssh_key = host_info.get(\"ssh_key\")\n        password = host_info.get(\"password\")\n        sock = None\n        # app_logging.info(\"network_proxy_id--\" + str(network_proxy_id))\n        if network_proxy_id:  # 使用代理登录\n            try: network_proxy_id = int(network_proxy_id)\n            except: return False, WebSocketStatusCode.PROXY_LINK_ERROR\n            network_proxy = NetworkProxyModel.fetch_one(id=network_proxy_id)\n            # app_logging.info(\"network_proxy--\" + str(network_proxy))\n\n            if not network_proxy:\n                return False, WebSocketStatusCode.PROXY_LINK_ERROR\n            if network_proxy.credential_type == network_proxy.CREDENTIAL_PASSWORD:\n                status, sock = self.create_proxy_sock_by_password(\n                        network_proxy.linux_ip,\n                        network_proxy.linux_port,\n                        network_proxy.linux_login_name,\n                        network_proxy.linux_login_password,\n                        ip,\n                        port\n                    )\n            else:\n                status, sock = self.create_proxy_sock_by_ssh_key(\n                        network_proxy.linux_ip,\n                        network_proxy.linux_port,\n                        network_proxy.linux_login_name,\n                        network_proxy.ssh_key,\n                        network_proxy.passphrase,\n                        ip,\n                        port\n                    )\n            if not status:\n                return False, WebSocketStatusCode.PROXY_LINK_ERROR\n        # app_logging.info(sock)\n\n        if token_data.get(\"login_type\") == \"password\":\n            status, code = self.client_ssh_by_password(ip, port, username, password, sock)\n        else:\n            status, code = self.client_ssh_by_ssh_key(ip, port, username, ssh_key, password, sock)\n        if not status:\n            return False, code\n        return True, \"\"\n\n    # 创建SSH连接入口\n    def create_ssh_link(self, data):\n        \"\"\"\n        校验数据以及创建SSH连接\n        \"\"\"\n        # app_logging.info(str(data))\n        if not data.get(\"cache\"):\n            host_id = data.get(\"host_id\")\n            credential_host_id = data.get(\"credential_host_id\")\n            password = data.get(\"password\")\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=credential_host_id)\n            self.host = HostModel.fetch_one(id=host_id)\n            if not self.host or not credential_host:\n                self.close_connect(WebSocketStatusCode.PARAM_ERROR)\n            if self.host.system_type != HostModel.SYSTEM_LINUX:\n                self.close_connect(WebSocketStatusCode.HOST_TYPE_ERROR)\n            status, code = self._create_ssh_link(credential_host.credential, self.host, password)\n        else:\n            status, code = self._create_cache_ssh_link(data)\n\n        if not status:\n            return False, code\n        return True, \"\"\n\n    def connect(self):\n        self.wait_time = time.time()\n        self.accept()\n        # 验证token\n        self.ssh = paramiko.SSHClient()\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        if 1:\n            status, code = self.create_ssh_link(data)\n            if status:\n                self.session_log = self.create_session_log(data)\n                self.start_ssh()\n            else:\n                self.close_connect(code)\n                return\n        # except Exception as e:\n        #     app_logging.error(\"[ERROR] Create ssh link error: {}\".format(str(e)))\n        #     self.close_connect(WebSocketStatusCode.SSH_LINK_ERROR)\n            return\n\n    # SSH开始工作，进入两个线程\n    # SshTerminalThread\n    # InterActiveShellThread\n    def start_ssh(self):\n        chan = self.ssh.invoke_shell(width=self.session_log.width, height=self.session_log.height, term='xterm')\n        sshterminal = SshTerminalThread(self, chan, self.user.username, self.token)\n        # sshterminal.setDaemon = True\n        sshterminal.start()\n        log_name = self.session_log.log_name + '.log'\n        self.stop_key = str(uuid.uuid4())\n        interactivessh = InterActiveShellThread(chan, self, log_name=log_name, width=self.session_log.width,\n                                                    height=self.session_log.height, stop_key=self.stop_key)\n        # interactivessh.setDaemon = True\n        interactivessh.start()\n\n    def disconnect(self, close_code):\n        self.close_ssh()\n        time.sleep(0.5)\n        try:\n            if self.session_log:\n                self.session_log.update(**{\n                    \"is_finished\": True,\n                    \"end_time\": datetime.datetime.now()\n                })\n        except Exception as e:\n            app_logging.error(\"[ERROR] Update Session Log error: {}, param: {}\".format(str(e), str(self.session_log)))\n        with contextlib.suppress(Exception):\n            self.close()\n\n    def close_ssh(self):\n        self.queue.publish(self.channel_name, json.dumps(['close']))\n        redis_client = get_redis_connection(\"cache\")\n        redis_client.set(self.stop_key, \"true\")\n        redis_client.expire(self.stop_key, 10)\n        time.sleep(2)\n\n    @property\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        try:\n            status, code, data = self.check_token(check_user=True)\n            if not status and status is not None:\n                self.close_connect(code)\n                return\n            if text_data is not None:           # 普通命令执行\n                self.queue.publish(self.channel_name, text_data)\n            if bytes_data:                       # RZ SZ\n                self.queue.publish(self.channel_name, bytes_data)\n        except socket.error:\n            self.disconnect(1000)\n            return\n        except ValueError:\n            if self.first_flag:\n                self.first_flag = False\n            self.queue.publish(self.channel_name, smart_unicode(text_data))\n        except Exception as e:\n            self.disconnect(1000)\n            return\n\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers_database_mysql_web.py",
    "content": "import ast\nimport time\nimport json\nimport logging\nimport uuid\nimport pymysql\nimport sshtunnel\nfrom sqlparse import parsestream\n\nimport settings\nimport threading\nimport socket\nfrom six import string_types as basestring\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\ntry:\n    unicode = str\nexcept NameError:\n    unicode = str\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom django_redis import get_redis_connection\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import MySQLWebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, CredentialModel, HostCredentialRelationshipModel\nfrom bastion.utils.encryption import PasswordEncryption\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass DatabaseMysqlWeb(AsyncWebsocketConsumer):\n    data_type_dict = {\n        \"sql\": \"sql语句查询\",\n        \"sql_run\": \"心跳：sql正在执行\",\n        \"result\": \"sql语句查询后获取剩余结果\",\n        \"open_database\": \"切换数据库\",\n        \"default_data\": \"默认数据\",\n        \"close\": \"手动关闭数据库\",\n        \"error\": \"连接错误关闭连接\",\n    }\n    ssh = None\n    mysql_conn = None\n    mysql_cursor = None\n    http_user = True\n    channel_session = True\n    channel_session_user = True\n    first_flag = True\n    wait_time = time.time()\n    user = None\n    cache = get_redis_connection(\"cache\")\n    token = \"\"\n    database = None\n    session_log = None\n\n    def connect(self):\n        # 连接 Websocket\n        self.wait_time = time.time()\n        self.accept()\n        # 验证token\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        else:\n            # self.session_log = self.create_session_log(data)\n            self.start_ssh(data)\n\n    def check_token(self):\n        request_param = self.get_request_param_dict()\n        if not self.token:\n            if request_param.get(\"token\"):\n                self.token = request_param.get(\"token\")\n            else:\n                self.token = self.get_cookie().get(\"link_token\")\n        status, data = self.get_link_config(self.token)\n        if status:\n            status = self.check_link_user(data.get(\"user_id\"))\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, MySQLWebSocketStatusCode.ACCESS_ERROR, {}\n            return False, MySQLWebSocketStatusCode.USER_ERROR, {}\n        return False, MySQLWebSocketStatusCode.PARAM_ERROR, {}\n\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    def get_cookie(self):\n        cookies = None\n        cookie = {}\n        for header in self.scope['headers']:\n            if header[0] == b'cookie':\n                cookies = header[1].decode()\n                break\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    def get_link_config(self, token):\n        try:\n            data = get_redis_dict_data(self.cache, token)\n            return True, data\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_link_config error: {}, param: {}\".format(\n                str(e), str(token))\n            )\n            return False, {}\n\n    def get_user(self):\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    def check_link_user(self, user_id):\n        self.user = self.get_user()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] Databases web socket, check_link_user error: {}, param: {}\".format(\n                    str(e), str(user_id))\n                )\n                return False\n        return False\n\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    def get_password(self, password):\n        \"\"\"\n        密码解密\n        \"\"\"\n        try:\n            password = PasswordEncryption().decrypt(password)\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_password error: {}\".format(str(e)))\n            password = \"\"\n        return password\n\n    def close_connect(self, text):\n        if text:\n            try:\n                text = json.dumps(text)\n            except:\n                pass\n            self.send(text_data=text)\n        time.sleep(1)\n        self.close()\n        if self.mysql_cursor:\n            self.mysql_cursor.close()\n        if self.mysql_conn:\n            self.mysql_conn.close()\n        if self.ssh:\n            self.ssh.close()\n        return\n\n    def start_ssh(self, data):\n        try:\n            timeout = int(data.get(\"timeout\", 10))\n        except Exception:\n            timeout = 10\n        if not data.get(\"cache\"):\n            host_id = data.get(\"host_id\")\n            credential_host_id = data.get(\"credential_host_id\")\n            password = data.get(\"password\")\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=credential_host_id)\n            self.database = HostModel.fetch_one(id=host_id)\n            if (not self.database) or (not credential_host):\n                self.close_connect(MySQLWebSocketStatusCode.PARAM_ERROR)\n            if self.database.resource_type != HostModel.RESOURCE_DATABASE:\n                self.close_connect(MySQLWebSocketStatusCode.HOST_TYPE_ERROR)\n            if credential_host.credential.login_type == CredentialModel.LOGIN_AUTO:\n                password = self.get_password(credential_host.credential.login_password)\n            network_proxy = self.database.network_proxy\n            dic = {\n                \"host\": self.database.host_address,\n                \"port\": self.database.port,\n                \"user\": credential_host.credential.login_name,\n                \"password\": password,\n                \"ssl_ca\": False,\n                \"connect_timeout\": timeout,\n                \"charset\": \"utf8\"\n            }\n            if network_proxy:\n                network_dict = {\n                    \"ssh_address_or_host\": (network_proxy.linux_ip, network_proxy.linux_port),\n                    \"ssh_username\": network_proxy.linux_login_name,\n                    \"ssh_password\": self.get_password(network_proxy.linux_login_password),\n                    \"remote_bind_address\": (self.database.host_address, self.database.port),\n                }\n                try:\n                    self.ssh = sshtunnel.SSHTunnelForwarder(**network_dict)\n                    self.ssh.start()\n                    dic[\"port\"] = self.ssh.local_bind_port\n                except Exception as e:\n                    print(\"ssh_tunnel_forwarder_error\", str(e))\n                    self.close_connect(MySQLWebSocketStatusCode.DATABASE_PROXY_ERROR)\n            # print(\"dicdic\", dic)\n            try:\n                self.mysql_conn = pymysql.connect(**dic)\n                self.mysql_cursor = self.mysql_conn.cursor(cursor=pymysql.cursors.DictCursor)\n                try:\n                    default_data = json.dumps(self._get_default_data())\n                    self.send(text_data=(default_data))\n                except Exception as e:\n                    print(\"default_data_error\", e)\n                    self.send(text_data=json.dumps(MySQLWebSocketStatusCode.DATA_CHECK_ERROR))\n            except Exception as e:\n                logging.info(\"pymysql.connect_error\" + str(e))\n                self.close_connect(MySQLWebSocketStatusCode.DATABASE_CHECK_ERROR)\n                return\n\n        sshterminal = MySQLThread(self, self.mysql_conn, self.mysql_cursor, self.user.username, self.token,\n                                  ssh_type=self.database.resource_type)\n        sshterminal.setDaemon = True\n        sshterminal.start()\n\n    def _get_default_data(self, database=None):\n        default_database = [\"mysql\", \"information_schema\", \"performance_schema\", \"sys\"]\n        all_databases_sql = \"\"\"show databases;\"\"\"\n        database_table_fields_sql = \"\"\"SELECT information_schema.COLUMNS.TABLE_SCHEMA,information_schema.COLUMNS.TABLE_NAME,information_schema.COLUMNS.COLUMN_NAME,information_schema.COLUMNS.COLUMN_TYPE FROM information_schema.COLUMNS where information_schema.COLUMNS.TABLE_SCHEMA=\\\"{}\\\";\"\"\"\n        open_database_sql = \"\"\"use `{}`;\"\"\"\n\n        dic = {\"data_type\": \"default_data\"}\n        all_databases = self._clean_databases(self._execute_sql(all_databases_sql))\n        dic[\"databases\"] = all_databases\n        if database:\n            if database not in all_databases:\n                dic.update({\"open_database\": database, \"open_database_tables\": [],\n                            \"error\": \"1049 - Unknown database '{}'\".format(database)})\n                return dic\n            open_database = database\n        else:\n            open_database = \"\"\n            for database in all_databases:\n                if database not in default_database:\n                    open_database = database\n                    break\n            if not open_database:\n                open_database = all_databases[0]\n\n            # open_database = \"bastion\"\n\n        dic.update(\n            open_database=open_database,\n            open_database_tables=self._clean_database_table(\n                self._execute_sql(database_table_fields_sql.format(open_database)))\n        )\n        res = self._execute_sql(open_database_sql.format(open_database))\n        return dic\n\n    def _clean_databases(self, all_databases):\n        li = []\n        if isinstance(all_databases, list):\n            for d in all_databases:\n                li.append(d.get(\"Database\"))\n            return li\n\n        return all_databases\n\n    def _clean_database_table(self, tables_data):\n        dic = {\"tables\": [], \"database\": \"\"}\n        if tables_data:\n            dic[\"database\"] = tables_data[0].get(\"TABLE_SCHEMA\")\n        tables = {}  # type dict\n        for i in tables_data:\n            # fields = {\"fields_name\": i.get(\"COLUMN_NAME\"), \"fields_type\": i.get(\"COLUMN_TYPE\")}\n            fields = [i.get(\"COLUMN_NAME\"), i.get(\"COLUMN_TYPE\")]\n            table_name = i.get(\"TABLE_NAME\")\n            columns = tables.get(table_name) or []\n            if columns:\n                columns.append(fields)\n                tables[table_name] = columns\n            else:\n                tables[table_name] = [fields]\n\n        for k, v in tables.items():\n            dic[\"tables\"].append({\"table_name\": k, \"column_list\": v})\n        return dic\n\n    def _execute_sql(self, sql):\n        self.mysql_cursor.execute(sql)\n        self.mysql_conn.commit()\n        return self.mysql_cursor.fetchall()\n\n    def disconnect(self, close_code):\n        self.close()\n\n    @property\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        try:\n            self.queue.publish(self.channel_name, text_data)\n        except socket.error:\n            self.disconnect(1000)\n            return\n        except ValueError:\n            if self.first_flag:\n                self.first_flag = False\n            self.queue.publish(self.channel_name, smart_unicode(text_data))\n        except Exception as e:\n            self.disconnect(1000)\n            return\n\n\nclass MySQLThread(threading.Thread):\n    \"\"\"\n    Thread class with a stop() method. The thread itself has to check\n    regularly for the stopped() condition.\n    \"\"\"\n\n    def __init__(self, websocket, mysql_conn: pymysql.connect, mysql_cursor: pymysql.cursors.Cursor, opt_name, token,\n                 elementid=None, ssh_type=\"host\"):\n        super(MySQLThread, self).__init__()\n        self._stop_event = threading.Event()\n        self.websocket = websocket\n        self.mysql_conn = mysql_conn\n        self.mysql_cursor = mysql_cursor\n        self.ssh_base_component = SSHBaseComponent()\n        self.token = token\n        self.elementid = elementid\n        self.opt_name = opt_name\n        self.queue = self.redis_queue()\n        self.result_dict = {}\n        self.ssh_type = ssh_type  # ssh  mysql  redis  mongo\n        self.run_sql = False  # 防止执行超长命令超过待机时间时退出问题\n\n    def stop(self):\n        self._stop_event.set()\n\n    def stopped(self):\n        return self._stop_event.is_set()\n\n    def redis_queue(self):\n        redis_instance = self.ssh_base_component.get_redis_instance()\n        redis_sub = redis_instance.pubsub()\n        if self.elementid:\n            redis_sub.subscribe(self.elementid.rsplit('_')[0])\n        else:\n            redis_sub.subscribe(self.websocket.channel_name)\n        return redis_sub\n\n    def check_timeout_close(self):\n        # 空闲超时退出\n        current_time = time.time()\n        if int(current_time - self.websocket.wait_time) > settings.TERMINAL_TIMEOUT:\n            # self.websocket.send(json.dumps(MySQLWebSocketStatusCode.LEAVE_TIME_OUT))\n            # self.websocket.disconnect(1001)\n            self.websocket.close_connect(MySQLWebSocketStatusCode.LEAVE_TIME_OUT)\n\n    def sql_queryset_id(self):\n        return str(uuid.uuid4())\n\n    def _handler_command(self, text):\n        # print(\"从前端Web取出命令(原生)：\", text)\n        self.websocket.wait_time = time.time()\n        if isinstance(text['data'], (str, basestring, unicode, bytes)):\n            if isinstance(text['data'], bytes):\n                try:\n                    data = ast.literal_eval(text['data'].decode('utf8'))\n                except Exception as e:\n                    data = text['data']\n            else:\n                try:\n                    data = ast.literal_eval(text['data'])\n                except Exception as e:\n                    data = text['data']\n        else:\n            data = text['data']\n        # print(\"从前端Web取出命令处理成字符串：\", data, type(data))\n        try:\n            if not isinstance(data, (dict, list)):\n                data = json.loads(data)\n        except Exception as e:\n            print(\"_handler_command_error\", text, e)\n            # self.websocket.send(str(e))\n        return data\n\n    def _handler_sql_result(self, res_list):\n        if res_list:\n            new_list = []\n            if isinstance(res_list, list):\n                for res in res_list:\n                    if isinstance(res, dict):\n                        for k, v in res.items():\n                            # datetime.datetime\n                            if not isinstance(v, (int, bool, float)):\n                                res[k] = str(v)\n                        # new_list.append(list(res.values()))\n                # new_list.insert(0, list(res_list[0].keys()))\n\n            # return new_list\n        # else:\n        #     return res_list\n        return res_list\n\n    def _run_sql(self, data):\n        sql_str = data.get(\"sql\")\n        limit = data.get(\"limit\")\n        offset = data.get(\"offset\")\n        try:\n            limit = int(limit)\n        except:\n            limit = 20\n        # sql_list = [str(s.replace(\"\\n\", \"\").strip()) + \";\" for s in sql_str.split(\";\") if s.replace(\"\\n\", \"\").strip()]\n        sql_list = [str(sql).replace(\"\\n\", \"\").replace(\"\\r\", \"\").strip() for sql in parsestream(sql_str)]\n\n        sql_return = {\"data_type\": \"sql\"}\n        is_stop = False\n        line = 0\n        data_list = []\n        message = []\n        self.result_dict = {}\n        for sql in sql_list:\n            line += 1\n            t1 = time.time()\n            if not is_stop:\n                try:\n                    self.mysql_cursor.execute(sql)\n                    self.mysql_conn.commit()\n                    rowcount = self.mysql_cursor.rowcount\n                    # res_list = self.mysql_cursor.fetchmany(size)\n                    res_list = self.mysql_cursor.fetchall()\n\n                    res_list = self._handler_sql_result(res_list)\n                    if res_list:\n                        result_id = self.sql_queryset_id()\n                        self.result_dict[result_id] = res_list\n                        limit_data = res_list[:limit]\n                        data_list.append({\"rowcount\": rowcount, \"result_data\": limit_data, \"result_id\": result_id})\n                    t2 = time.time()\n                    message.append(\n                        {\"sql\": sql, \"message\": \"OK\", \"rowcount\": rowcount, \"execute_time\": round(t2 - t1, 6),\n                         \"status\": 1, \"result\": \"结果集{}\".format(line)})\n                except Exception as e:\n                    is_stop = True\n                    try:\n                        args = e.args\n                        if isinstance(args, tuple):\n                            error_str = \" - \".join([str(i) for i in args])\n                        else:\n                            error_str = str(args)\n                    except:\n                        error_str = str(e)\n                    t2 = time.time()\n                    message.append(\n                        {\"sql\": sql, \"message\": str(error_str), \"execute_time\": round(t2 - t1, 6), \"status\": 0})\n            else:\n                message.append({\"sql\": sql, \"message\": \"终止执行\", \"execute_time\": 0, \"status\": 2})\n        sql_return.update(data_list=data_list, message=message)\n        self.websocket.send(json.dumps(sql_return))\n\n    def _sql_result(self, data):\n        result_id = data.get(\"result_id\")\n        try:\n            limit = int(data.get(\"limit\"))\n        except:\n            limit = 20\n        try:\n            offset = int(data.get(\"offset\"))\n        except:\n            offset = 0\n        # res = self.mysql_cursor.fetchmany(size)\n        if self.result_dict.get(result_id):\n            res = self.result_dict.get(result_id)[offset: offset + limit]\n        else:\n            res = []\n\n        sql_return = {\"data_type\": \"result\",\n                      \"data_list\": [{\"rowcount\": len(self.result_dict.get(result_id)), \"result_data\": res}]}\n        self.websocket.send(json.dumps(sql_return))\n\n    def _cut_database(self, data):\n        self.result_dict = {}\n        database = data.get(\"database\")\n        self.websocket.send(json.dumps(self.websocket._get_default_data(database)))\n\n    def _default_data(self, data):\n        self.result_dict = {}\n        self.websocket.send(json.dumps(self.websocket._get_default_data()))\n\n    def run(self):\n        try:\n            while not self._stop_event.is_set():\n                if self.run_sql is False:\n                    self.check_timeout_close()\n                else:\n                    self.run_sql = False\n                    self.websocket.send(json.dumps({\"data_type\": \"sql_run\", \"status\": 0}))\n                text = self.queue.get_message()\n                if text:\n                    try:\n                        data = self._handler_command(text)\n                        if isinstance(data, dict):\n                            data_type = data.get(\"data_type\")  # sql, default_data, open_database\n                            \"\"\"\n                            1sql语句查询传参：{\"data_type\": \"sql\", \"sql\": \"use control;select * from task_record;\", \"size\": 20} {\"data_type\": \"sql\", \"sql\": \"select * from user_info\", \"size\": 50}\n                            1sql语句查询返回：{\n                                'data_type': 'sql', \n                                'data_list': [\n                                    {\n                                        'rowcount': 287596, \n                                        'result_data': [{'id': 609}]\n                                    }\n                                ], \n                                \"message\": [\n                                    {'sql': 'select * from task_record;', 'message': 'OK', 'execute_time': 11.332820177078247}\n                                ]\n                            }\n                            2sql获取剩余返回值传参: {\"data_type\": \"result\", \"size\": 20}\n                            2sql获取剩余返回值返回: {\"data_type\": \"result\", \"data_list\": [\n                                    {\n                                        \"rowcount\": 287596, \n                                        \"result_data\": [{\"id\": 609}]\n                                    }\n                                ], \n\n                            3sql切换数据库传参：{\"data_type\": \"open_database\", \"database\": \"control\"}\n                            3sql切换数据库返回：{\n                                \"data_type\": \"default_data\",\n                                \"databases\": [\"information_schema\", \"agile\",],\n                                \"open_database\": \"bastion\",\n                                \"open_database_tables\": {\n                                    \"tables\": {\n                                        [\n                                            {\"table_name\": \"account_user\", \"column_list\": [[\"id\", \"int(11)\"], [\"password\", \"varchar(128)\"],]},\n                                            {\"table_name\": \"account_user_groups\", \"column_list\": [[\"id\", \"int(11)\"], [\"user_id\", \"int(11)\"],]}\n                                        ]\n                                    }\n                                }\n                            }\n                            \"\"\"\n\n                            if data_type == \"sql\":  # 执行SQL语句\n                                self.run_sql = True\n                                self._run_sql(data)\n                            elif data_type == \"result\":  # 获取上一次查询集\n                                self._sql_result(data)\n                            elif data_type == \"open_database\":  # 切换数据库\n                                self._cut_database(data)\n                            elif data_type == \"default_data\":  # 初始数据\n                                self._default_data(data)\n                            elif data_type == \"close\":  # 主动关闭\n                                self.websocket.close_connect(MySQLWebSocketStatusCode.CLOSE_SUCCESS)\n                    except Exception as e:\n                        app_logging.warning(\"MySQLThread_run_ while_not_self._stop_event.is_set\" + str(e))\n                        dic = MySQLWebSocketStatusCode.SERVER_ERROR\n                        dic[\"message\"] = dic[\"message\"].format(str(e))\n                        self.websocket.send(json.dumps(dic))\n\n                time.sleep(0.001)\n        except Exception as e:\n            app_logging.warning(\"MySQLThread_run_mysql_error\" + str(e))\n            dic = MySQLWebSocketStatusCode.SERVER_ERROR\n            dic[\"message\"] = dic[\"message\"].format(str(e))\n            self.websocket.send(json.dumps(dic))\n        finally:\n            try:\n                self.websocket.send(json.dumps(MySQLWebSocketStatusCode.CHANNEL_CREATE_ERROR))\n            except:\n                pass\n            try:\n                self.websocket.close_connect()\n            except:\n                pass\n            time.sleep(2)\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers_database_redis_web.py",
    "content": "import ast\nimport time\nimport json\nimport logging\nimport uuid\nimport redis\nimport sshtunnel\nimport settings\nimport threading\nfrom six import string_types as basestring\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\ntry:\n    unicode = str\nexcept NameError:\n    unicode = str\nimport socket\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom django_redis import get_redis_connection\n\nfrom bastion import constant\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import MySQLWebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, CredentialModel, HostCredentialRelationshipModel\nfrom bastion.utils.encryption import PasswordEncryption\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass DatabaseRedisWeb(AsyncWebsocketConsumer):\n    data_type_dict = {\n        \"command\": \"输入Redis命令\",\n        \"result\": \"后获取剩余结果\",\n        \"select_database\": \"切换数据库\",\n        \"default_data\": \"默认数据\",\n        \"close\": \"手动关闭数据库\",\n        \"error\": \"连接错误关闭连接\",\n    }\n    ssh = None\n    redis_conn = None\n    http_user = True\n    channel_session = True\n    channel_session_user = True\n    first_flag = True\n    wait_time = time.time()\n    user = None\n    cache = get_redis_connection(\"cache\")\n    token = \"\"\n    database = None\n    session_log = None\n\n    def connect(self):\n        # 连接 Websocket\n        self.wait_time = time.time()\n        self.accept()\n        # 验证token\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        else:\n            # self.session_log = self.create_session_log(data)\n            self.start_ssh(data)\n\n    def check_token(self):\n        request_param = self.get_request_param_dict()\n        if not self.token:\n            if request_param.get(\"token\"):\n                self.token = request_param.get(\"token\")\n            else:\n                self.token = self.get_cookie().get(\"link_token\")\n        status, data = self.get_link_config(self.token)\n        if status:\n            status = self.check_link_user(data.get(\"user_id\"))\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, MySQLWebSocketStatusCode.ACCESS_ERROR, {}\n            return False, MySQLWebSocketStatusCode.USER_ERROR, {}\n        return False, MySQLWebSocketStatusCode.PARAM_ERROR, {}\n\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    def get_cookie(self):\n        cookies = None\n        cookie = {}\n        for header in self.scope['headers']:\n            if header[0] == b'cookie':\n                cookies = header[1].decode()\n                break\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    def get_link_config(self, token):\n        try:\n            data = get_redis_dict_data(self.cache, token)\n            return True, data\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_link_config error: {}, param: {}\".format(\n                str(e), str(token))\n            )\n            return False, {}\n\n    def get_user(self):\n        # self.scope[\"cookies\"][\"bk_token\"] = \"joCppIpMU5T5nIwbQmo37xHPOo_b7YRwnwCWwbuCaA8\"\n\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    def check_link_user(self, user_id):\n        self.user = self.get_user()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] Databases web socket, check_link_user error: {}, param: {}\".format(\n                    str(e), str(user_id))\n                )\n                return False\n        return False\n\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    def get_password(self, password):\n        \"\"\"\n        密码解密\n        \"\"\"\n        try:\n            password = PasswordEncryption().decrypt(password)\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_password error: {}\".format(str(e)))\n            password = \"\"\n        return password\n\n    def close_connect(self, text):\n        if text:\n            try:\n                text = json.dumps(text)\n            except:\n                pass\n\n            self.send(text_data=text)\n        time.sleep(1)\n        self.close()\n        if self.ssh:\n            self.ssh.close()\n        return\n\n    def start_ssh(self, data):\n        try:\n            timeout = int(data.get(\"timeout\", 10))\n        except Exception:\n            timeout = 10\n        if not data.get(\"cache\"):\n            host_id = data.get(\"host_id\")\n            credential_host_id = data.get(\"credential_host_id\")\n            password = data.get(\"password\")\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=credential_host_id)\n            self.database = HostModel.fetch_one(id=host_id, resource_type=HostModel.RESOURCE_DATABASE, )\n            if (not self.database) or (not credential_host):\n                self.close_connect(MySQLWebSocketStatusCode.PARAM_ERROR)\n            if self.database.resource_type != HostModel.RESOURCE_DATABASE:\n                self.close_connect(MySQLWebSocketStatusCode.HOST_TYPE_ERROR)\n            network_proxy = self.database.network_proxy\n            dic = {\n                \"host\": self.database.host_address,\n                \"port\": self.database.port,\n                \"socket_connect_timeout\": timeout,\n                # \"port\": \"16379\",\n                \"password\": password,\n                \"decode_responses\": True\n            }\n            if credential_host.credential.login_type == CredentialModel.LOGIN_AUTO:\n                username = credential_host.credential.login_name\n                password = self.get_password(credential_host.credential.login_password)\n                if username:\n                    dic.update(username=username)\n                if password:\n                    dic.update(password=password)\n            if network_proxy:\n                network_dict = {\n                    \"ssh_address_or_host\": (network_proxy.linux_ip, network_proxy.linux_port),\n                    \"ssh_username\": network_proxy.linux_login_name,\n                    \"ssh_password\": self.get_password(network_proxy.linux_login_password),\n                    \"remote_bind_address\": (self.database.host_address, self.database.port),\n                }\n                try:\n                    self.ssh = sshtunnel.SSHTunnelForwarder(**network_dict)\n                    self.ssh.start()\n                    dic[\"port\"] = self.ssh.local_bind_port\n                except Exception as e:\n                    print(\"ssh_tunnel_forwarder_error\", str(e))\n                    self.close_connect(MySQLWebSocketStatusCode.DATABASE_PROXY_ERROR)\n            try:\n                self.redis_conn = redis.Redis(**dic)\n                try:\n                    default_data = json.dumps(self._get_default_data())\n                    self.send(text_data=(default_data))\n                except Exception as e:\n                    if \"this user has no permissions\" in str(e):\n                        MySQLWebSocketStatusCode.USER_PERMISSIONS_ERROR[\"message\"] += str(e)\n                        self.close_connect(json.dumps(MySQLWebSocketStatusCode.USER_PERMISSIONS_ERROR))\n                    else:\n                        MySQLWebSocketStatusCode.LINK_DATA_CHECK_ERROR[\"message\"] += str(e)\n                        self.close_connect(json.dumps(MySQLWebSocketStatusCode.LINK_DATA_CHECK_ERROR))\n                    return\n            except Exception as e:\n                MySQLWebSocketStatusCode.LINK_DATA_CHECK_ERROR[\"message\"] += str(e)\n                self.close_connect(MySQLWebSocketStatusCode.LINK_DATA_CHECK_ERROR)\n                return\n\n        sshterminal = RedisThread(self, self.redis_conn, self.user.username, self.token,\n                                  ssh_type=self.database.resource_type)\n        sshterminal.setDaemon = True\n        sshterminal.start()\n\n    def _get_default_data(self, database=None):\n        try:\n            all_dbs_command = \"config get databases\"\n            select_dbs_command = \"select {}\"\n            dic = {\"data_type\": \"default_data\"}\n            all_databases = self._clean_databases(self.redis_conn.execute_command(all_dbs_command))\n            dic[\"databases\"] = all_databases\n            if database:\n                db = database\n            else:\n                db = 0\n            res = self.redis_conn.execute_command(select_dbs_command.format(db))\n            dic[\"select_database\"]=db\n            dic[\"data\"]= \"Databases {}\".format(db) + \" \" + res\n            return dic\n        except Exception as e:\n            MySQLWebSocketStatusCode.LINK_DATA_CHECK_ERROR[\"message\"] += str(e)\n            self.close_connect(MySQLWebSocketStatusCode.LINK_DATA_CHECK_ERROR)\n\n\n    def _clean_databases(self, all_databases):\n        li = []\n        if isinstance(all_databases, list):\n            if len(all_databases) == 2:\n                for i in range(int(all_databases[1])):\n                    li.append(\"Databases {}\".format(i))\n            return li\n\n        return all_databases\n\n    def disconnect(self, close_code):\n        self.close()\n\n    @property\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        try:\n            self.queue.publish(self.channel_name, text_data)\n        except socket.error:\n            self.disconnect(1000)\n            return\n        except ValueError:\n            if self.first_flag:\n                self.first_flag = False\n            self.queue.publish(self.channel_name, smart_unicode(text_data))\n        except Exception as e:\n            self.disconnect(1000)\n            return\n\n\nclass RedisThread(threading.Thread):\n    \"\"\"\n    Thread class with a stop() method. The thread itself has to check\n    regularly for the stopped() condition.\n    \"\"\"\n\n    def __init__(self, websocket, redis_conn: redis.StrictRedis, opt_name, token, elementid=None, ssh_type=\"host\"):\n        super(RedisThread, self).__init__()\n        self._stop_event = threading.Event()\n        self.websocket = websocket\n        self.redis_conn = redis_conn\n        self.ssh_base_component = SSHBaseComponent()\n        self.token = token\n        self.elementid = elementid\n        self.opt_name = opt_name\n        self.queue = self.redis_queue()\n        self.result_dict = {}\n        self.ssh_type = ssh_type  # ssh  mysql  redis  mongo\n        self.run_command = False  # 防止执行超长命令超过待机时间时退出问题\n        self.command_all_list = constant.ALL_REDIS_COMMAND_LIST\n        self.command_can_list = constant.REDIS_SUPPORT_KEY_LIST\n        self.command_piece_dict = constant.PIECE_COMMAND_DICT\n        self.command_lower_dict = constant.COMMAND_CLEAN_LOWER_COMMAND_LIST\n        self.command_return_dict = constant.COMMAND_CLEAN_RETURN_DICT\n\n    def stop(self):\n        self._stop_event.set()\n\n    def stopped(self):\n        return self._stop_event.is_set()\n\n    def redis_queue(self):\n        redis_instance = self.ssh_base_component.get_redis_instance()\n        redis_sub = redis_instance.pubsub()\n        if self.elementid:\n            redis_sub.subscribe(self.elementid.rsplit('_')[0])\n        else:\n            redis_sub.subscribe(self.websocket.channel_name)\n        return redis_sub\n\n    def check_timeout_close(self):\n        # 空闲超时退出\n        current_time = time.time()\n        if int(current_time - self.websocket.wait_time) > settings.TERMINAL_TIMEOUT:\n            # self.websocket.send(json.dumps(MySQLWebSocketStatusCode.LEAVE_TIME_OUT))\n            # self.websocket.disconnect(1001)\n            self.websocket.close_connect(MySQLWebSocketStatusCode.LEAVE_TIME_OUT)\n\n    def sql_queryset_id(self):\n        return str(uuid.uuid4())\n\n    def _check_command(self, command: str):\n        \"\"\"\n        命令校验，仅可以执行授权过的命令，处理两个单词的命令\n        \"\"\"\n        command_list = command.rsplit()\n        try:\n            new_command = command_list[0].upper()\n            if new_command in self.command_can_list:\n                return True\n            else:\n                if new_command in self.command_piece_dict.keys():\n                    if len(command_list) >= 2:\n                        new_command = command_list[0].upper() + \" \" + command_list[1].upper()\n                        if new_command in self.command_can_list:\n                            return True\n                if new_command not in self.command_all_list:\n                    return True\n                return False\n        except Exception as e:\n            print(\"_check_command\", str(e))\n            return False\n\n    def _clean_command(self, command_str: str):\n        # 有些命令小写输出更加友好，将其使用小写执行\n        if command_str.strip().upper() in self.command_lower_dict:\n            return command_str.strip().lower()\n        else:\n            return command_str\n\n    def _run_command(self, data):\n        command_str = str(data.get(\"command\", \"\")).strip()\n        command_return = {\"data_type\": \"command\", \"command\": command_str}\n        self.result_dict = {}\n        t1 = time.time()\n        status = self._check_command(command_str)\n        if not status:\n            t2 = time.time()\n            # print(\"command_str\", command_str)\n            command_return.update({\"data\": \"不支持的命令\", \"execute_time\": t2 - t1, \"message\": \"不支持的命令\", \"status\": 0})\n            self.websocket.send(json.dumps(command_return))\n            return\n        try:\n            res = self.redis_conn.execute_command(self._clean_command(command_str))\n            t2 = time.time()\n            command_return.update(\n                {\"data\": self._clean_command_res(res, command_str), \"execute_time\": t2 - t1, \"message\": \"OK\", \"status\": 1})\n        except Exception as e:\n            print(\"_run_command_run_command\", type(e), e)\n            t2 = time.time()\n            command_return.update({\"data\": \"\", \"execute_time\": t2 - t1, \"message\": str(e), \"status\": 0})\n        self.websocket.send(json.dumps(command_return))\n        return\n\n    def _clean_command_res(self, res, command_str=None):\n        # print(\"resres\", res)\n        # print(\"command_str\", command_str)\n        # 有些命令小写输出不一致，将其统一\n        command_str_end = command_str.rsplit()[0]\n        if command_str_end in self.command_return_dict.keys():\n            if res is True:\n                return self.command_return_dict.get(\"command_str_end\", \"OK!\")\n        # 当数据是列表时处理列表内部数据转为固定格式字符串\n        if isinstance(res, list):\n            new_list = []\n            for d in res:\n                if isinstance(d, dict):\n                    new_list.append(\" \".join([str(k) + \"=\" + str(v) for k, v in d.items()]))\n                else:\n                    new_list.append(d)\n            return new_list\n        elif isinstance(res, dict):\n            return res\n        else:\n            return res\n\n    def _handler_command(self, text):\n        # print(\"从前端Web取出命令(原生)：\", text)\n        self.websocket.wait_time = time.time()\n        if isinstance(text['data'], (str, basestring, unicode, bytes)):\n            if isinstance(text['data'], bytes):\n                try:\n                    data = ast.literal_eval(text['data'].decode('utf8'))\n                except Exception as e:\n                    data = text['data']\n            else:\n                try:\n                    data = ast.literal_eval(text['data'])\n                except Exception as e:\n                    data = text['data']\n        else:\n            data = text['data']\n        # print(\"从前端Web取出命令处理成字符串：\", data, type(data))\n        try:\n            if not isinstance(data, (dict, list)):\n                data = json.loads(data)\n        except Exception as e:\n            print(\"_handler_command_error\", text, e)\n            # self.websocket.send(str(e))\n        return data\n\n    def _handler_sql_result(self, res_list):\n        if res_list:\n            new_list = []\n            if isinstance(res_list, list):\n                for res in res_list:\n                    if isinstance(res, dict):\n                        for k, v in res.items():\n                            # datetime.datetime\n                            if not isinstance(v, (int, bool, float)):\n                                res[k] = str(v)\n                        # new_list.append(list(res.values()))\n                # new_list.insert(0, list(res_list[0].keys()))\n\n            # return new_list\n        # else:\n        #     return res_list\n        return res_list\n\n    def _sql_result(self, data):\n        result_id = data.get(\"result_id\")\n        try:\n            limit = int(data.get(\"limit\"))\n        except:\n            limit = 20\n        try:\n            offset = int(data.get(\"offset\"))\n        except:\n            offset = 0\n        # res = self.mysql_cursor.fetchmany(size)\n        if self.result_dict.get(result_id):\n            res = self.result_dict.get(result_id)[offset: offset + limit]\n        else:\n            res = []\n\n        sql_return = {\"data_type\": \"result\",\n                      \"data_list\": [{\"rowcount\": len(self.result_dict.get(result_id)), \"result_data\": res}]}\n        self.websocket.send(json.dumps(sql_return))\n\n    def _select_database(self, data):\n        self.result_dict = {}\n        database = data.get(\"database\")\n        self.websocket.send(json.dumps(self.websocket._get_default_data(database)))\n\n    def _default_data(self, data):\n        self.result_dict = {}\n        self.websocket.send(json.dumps(self.websocket._get_default_data()))\n\n    def run(self):\n        try:\n            while not self._stop_event.is_set():\n                if self.run_command is False:\n                    self.check_timeout_close()\n                else:\n                    self.run_command = False\n                    self.websocket.send(json.dumps({\"data_type\": \"sql_run\", \"status\": 0}))\n                text = self.queue.get_message()\n                if text:\n                    try:\n                        data = self._handler_command(text)\n                        if isinstance(data, dict):\n                            data_type = data.get(\"data_type\")  # sql, default_data, open_database\n                            \"\"\"\n                            命令查询传参：{\"data_type\": \"command\", \"command\": \"keys *\"}\n                            1sql语句查询返回：{\n                                'data_type': 'command', \n                                'data': [\n                                    {\n                                        'rowcount': 287596, \n                                        'result_data': [{'id': 609}]\n                                    }\n                                ], \n                                \"command\": \"keys *\",\n                                \"execute_time\": 11.332820177078247\n                                \"message\": \"OK\",\n                                \"status\": 1\n                            }\n                            2sql获取剩余返回值传参: {\"data_type\": \"result\", \"size\": 20}\n                            2sql获取剩余返回值返回: {\"data_type\": \"result\", \"data_list\": [\n                                    {\n                                        \"rowcount\": 287596, \n                                        \"result_data\": [{\"id\": 609}]\n                                    }\n                                ], \n\n                            3sql切换数据库传参：{\"data_type\": \"open_database\", \"database\": \"control\"}\n                            3sql切换数据库返回：{\n                                \"data_type\": \"default_data\",\n                                \"databases\": [\"information_schema\", \"agile\",],\n                                \"open_database\": \"bastion\",\n                                \"open_database_tables\": {\n                                    \"tables\": {\n                                        [\n                                            {\"table_name\": \"account_user\", \"column_list\": [[\"id\", \"int(11)\"], [\"password\", \"varchar(128)\"],]},\n                                            {\"table_name\": \"account_user_groups\", \"column_list\": [[\"id\", \"int(11)\"], [\"user_id\", \"int(11)\"],]}\n                                        ]\n                                    }\n                                }\n                            }\n                            \"\"\"\n\n                            if data_type == \"command\":  # 执行SQL语句\n                                # data = {\"data_type\": \"command\", \"command\": \"keys *\"}\n\n                                self.run_command = True\n                                self._run_command(data)\n                            elif data_type == \"result\":  # 获取上一次查询集\n                                self._sql_result(data)\n                            elif data_type == \"select_database\":  # 切换数据库\n                                self._select_database(data)\n                            elif data_type == \"default_data\":  # 初始数据\n                                self._default_data(data)\n                            elif data_type == \"close\":  # 主动关闭\n                                self.websocket.close_connect(MySQLWebSocketStatusCode.CLOSE_SUCCESS)\n                    except Exception as e:\n                        app_logging.warning(\"MySQLThread_run_ while_not_self._stop_event.is_set\" + str(e))\n                        dic = MySQLWebSocketStatusCode.SERVER_ERROR\n                        dic[\"message\"] = dic[\"message\"].format(str(e))\n                        self.websocket.send(json.dumps(dic))\n\n                time.sleep(0.001)\n        except Exception as e:\n            app_logging.warning(\"RedisThread_run_redis_error\" + str(e))\n            dic = MySQLWebSocketStatusCode.SERVER_ERROR\n            dic[\"message\"] = dic[\"message\"].format(str(e))\n            self.websocket.send(json.dumps(dic))\n        finally:\n            try:\n                self.websocket.send(json.dumps(MySQLWebSocketStatusCode.CHANNEL_CREATE_ERROR))\n            except:\n                pass\n            try:\n                self.websocket.close_connect()\n            except:\n                pass\n            time.sleep(2)\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers_database_shell.py",
    "content": "import contextlib\nimport paramiko\nimport time\nimport json\nimport logging\nimport uuid\nimport datetime\nimport socket\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom django_redis import get_redis_connection\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import WebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, CredentialModel, SessionLogModel, HostCredentialRelationshipModel\nfrom bastion.core.terminal.component import SshTerminalThread, InterActiveShellThread\nfrom bastion.utils.encryption import PasswordEncryption\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass Database(AsyncWebsocketConsumer):\n    ssh = paramiko.SSHClient()\n    http_user = True\n    channel_session = True\n    channel_session_user = True\n    first_flag = True\n    wait_time = time.time()\n    user = None\n    cache = get_redis_connection(\"cache\")\n    token = \"\"\n    database = None\n    session_log = None\n\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    def get_cookie(self):\n        cookies = None\n        cookie = {}\n        for header in self.scope['headers']:\n            if header[0] == b'cookie':\n                cookies = header[1].decode()\n                break\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    def get_link_config(self, token):\n        try:\n            data = get_redis_dict_data(self.cache, token)\n            return True, data\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_link_config error: {}, param: {}\".format(\n                str(e), str(token))\n            )\n            return False, {}\n\n    def get_user(self):\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    def check_link_user(self, user_id):\n        self.user = self.get_user()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] Databases web socket, check_link_user error: {}, param: {}\".format(\n                    str(e), str(user_id))\n                )\n                return False\n        return False\n\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    def check_token(self):\n        request_param = self.get_request_param_dict()\n        if not self.token:\n            if request_param.get(\"token\"):\n                self.token = request_param.get(\"token\")\n            else:\n                self.token = self.get_cookie().get(\"link_token\")\n        status, data = self.get_link_config(self.token)\n        if status:\n            status = self.check_link_user(data.get(\"user_id\"))\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, WebSocketStatusCode.ACCESS_ERROR, {}\n            return False, WebSocketStatusCode.USER_ERROR, {}\n        return False, WebSocketStatusCode.PARAM_ERROR, {}\n\n    def get_password(self, password):\n        \"\"\"\n        密码解密\n        \"\"\"\n        try:\n            password = PasswordEncryption().decrypt(password)\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_password error: {}\".format(str(e)))\n            password = \"\"\n        return password\n\n    def client_proxy_or_local_link(self, ip=\"127.0.0.1\", port=22, username=\"\", password=\"\", timeout=5):\n        \"\"\"\n        创建本地连接或者代理连接\n        \"\"\"\n        try:\n            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n            if username:\n                self.ssh.connect(hostname=ip, port=port, username=username, password=password, timeout=timeout)\n            else:\n                self.ssh.connect(hostname=ip, port=port, password=password, timeout=timeout)\n            return True, \"\"\n        except socket.timeout:\n            return False, WebSocketStatusCode.TIME_OUT\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, client_proxy_or_local_link error: {}, param: {}\".format(\n                str(e), str([ip, port])\n            ))\n            return False, WebSocketStatusCode.SSH_CHECK_ERROR\n\n    def close_connect(self, text):\n        self.send(text_data=str(text))\n        self.close()\n        return\n\n    def get_login_database_command(self, database_type, ip=\"\", port=\"\", username=\"\", password=\"\"):\n        try:\n            database_type = database_type.lower()\n        except Exception as e:\n            app_logging.error(\"[ERROR] Databases web socket, get_login_database_command error: {}, param: {}\".format(\n                str(e), str(database_type)\n            ))\n            database_type = \"\"\n        if database_type in [\"mysql\", \"redis\", \"mongodb\"]:\n            if database_type == \"mysql\":\n                command = \"mysql -u{} -p{}\".format(username, password)\n                command += \" -h{}\".format(ip) if ip else \"\"\n                command += \" -P{}\".format(port) if port else \"\"\n                return True, command\n            if database_type == \"redis\":\n                command = \"redis-cli -a {}\".format(password)\n                command += \" -h {}\".format(ip) if ip else \"\"\n                command += \" -p {}\".format(port) if port else \"\"\n                return True, command\n            if database_type == \"mongodb\":\n                command = \"mongo --username {} --password {}\".format(username, password)\n                command += \" --host {}\".format(ip) if ip else \"\"\n                command += \" --port {}\".format(port) if port else \"\"\n                return True, command\n        return False, WebSocketStatusCode.DATABASE_TYPE_ERROR\n\n    def _create_databases_link(self, credential, database, password, timeout=5):\n        \"\"\"\n        获取数据库连接命令，创建代理/本地连接\n        \"\"\"\n        if credential.login_type == CredentialModel.LOGIN_AUTO:\n            password = self.get_password(credential.login_password)\n            login_name = credential.login_name\n            port = database.port\n            host_address = database.host_address\n            database_type = database.database_type\n            command_status, command = self.get_login_database_command(\n                database_type,\n                host_address,\n                port,\n                login_name,\n                password\n            )\n        else:\n            login_name = credential.login_name\n            host_address = database.host_address\n            database_type = database.database_type\n            port = database.port\n            command_status, command = self.get_login_database_command(\n                database_type,\n                host_address,\n                port,\n                login_name,\n                password\n            )\n        if not command_status:\n            self.close_connect(command)\n            return \"\"\n        # 如果有代理\n        if database.network_proxy:\n            network_proxy = database.network_proxy\n            status, code = self.client_proxy_or_local_link(\n                ip=network_proxy.linux_ip,\n                port=network_proxy.linux_port,\n                username=network_proxy.linux_login_name,\n                password=self.get_password(network_proxy.linux_login_password),\n                timeout=timeout\n            )\n        else:\n            status, code = self.client_proxy_or_local_link(timeout=timeout)\n        if not status:\n            self.close_connect(code)\n            return \"\"\n        return command\n\n    def _create_cache_databases_link(self, token_data, timeout):\n        \"\"\"\n        创建外平台连接\n        \"\"\"\n        host_info = token_data.get(\"host_info\")\n\n        command_status, command = self.get_login_database_command(\n            host_info.get(\"database_type\"),\n            host_info.get(\"ip\"),\n            host_info.get(\"port\"),\n            host_info.get(\"username\"),\n            host_info.get(\"password\")\n        )\n        if not command_status:\n            self.close_connect(command)\n            return \"\"\n        status, code = self.client_proxy_or_local_link(timeout=timeout)\n        if not status:\n            self.close_connect(code)\n            return \"\"\n        return command\n\n    def create_database_link(self, data):\n        \"\"\"\n        校验数据以及创建SSH连接\n        \"\"\"\n        try:\n            timeout = int(data.get(\"timeout\", 10))\n        except Exception:\n            timeout = 10\n        if not data.get(\"cache\"):\n            host_id = data.get(\"host_id\")\n            credential_host_id = data.get(\"credential_host_id\")\n            password = data.get(\"password\")\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=credential_host_id)\n            self.database = HostModel.fetch_one(id=host_id)\n            if not self.database or not credential_host:\n                self.close_connect(WebSocketStatusCode.PARAM_ERROR)\n            if self.database.resource_type != HostModel.RESOURCE_DATABASE:\n                self.close_connect(WebSocketStatusCode.HOST_TYPE_ERROR)\n            command = self._create_databases_link(credential_host.credential, self.database, password, timeout)\n        else:\n            command = self._create_cache_databases_link(data, timeout)\n        return command\n\n    def create_session_log(self, data):\n        try:\n            query_string = self.scope['query_string'].decode()\n            query_dict = dict([x.split('=', 1) for x in query_string.split('&')])\n            width = int(float(query_dict[\"width\"]))\n            height = int(float(query_dict[\"height\"]))\n        except:\n            width = 175\n            height = 55\n        \"\"\"\n        根据Token获取的缓存数据记录登陆日志\n        \"\"\"\n        log_name = str(uuid.uuid4())\n        if not data.get(\"cache\"):\n            try:\n                login_name = HostCredentialRelationshipModel.fetch_one(\n                    id=data.get(\"credential_host_id\")).credential.login_name\n            except Exception as e:\n                app_logging.error(\"[ERROR] Ws api error, get credential error: {}\".format(str(e)))\n                login_name = \"root\"\n            session_log = SessionLogModel.create(**{\n                \"host_id\": data.get(\"host_id\"),\n                \"channel\": self.channel_name,\n                \"host_name\": self.database.host_name,\n                \"system_type\": self.database.system_type,\n                \"host_address\": self.database.host_address,\n                \"protocol_type\": self.database.protocol_type,\n                \"login_type\": 1,\n                \"port\": self.database.port,\n                \"login_name\": login_name,\n                \"log_name\": log_name,\n                \"user\": self.user.username,\n                \"width\": width,\n                \"height\": height\n            })\n        else:\n            session_log = SessionLogModel.create(**{\n                \"channel\": self.channel_name,\n                \"host_name\": data.get(\"host_info\").get(\"host_name\"),\n                \"system_type\": data.get(\"host_info\").get(\"system_type\"),\n                \"host_address\": data.get(\"host_info\").get(\"ip\"),\n                \"protocol_type\": \"ssh\",\n                \"login_type\": 1,\n                \"port\": data.get(\"host_info\").get(\"port\"),\n                \"login_name\": data.get(\"host_info\").get(\"username\", \"\"),\n                \"log_name\": log_name,\n                \"user\": self.user.username,\n                \"width\": width,\n                \"height\": height\n            })\n        return session_log\n\n    def start_ssh(self, command):\n        chan = self.ssh.invoke_shell(width=self.session_log.width, height=self.session_log.height, term='xterm')\n        chan.send(command + \"\\n\")\n        res = chan.recv(1024)\n        sshterminal = SshTerminalThread(self, chan, self.user.username, self.token,\n                                        ssh_type=self.database.resource_type)\n        sshterminal.setDaemon = True\n        sshterminal.start()\n        log_name = self.session_log.log_name + '.log'\n        interactivessh = InterActiveShellThread(chan, self, log_name=log_name, width=self.session_log.width,\n                                                height=self.session_log.height,\n                                                database_client=command)\n        interactivessh.setDaemon = True\n        interactivessh.start()\n\n    def connect(self):\n        self.wait_time = time.time()\n        self.accept()\n        # 验证token\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        try:\n            command = self.create_database_link(data)\n        except Exception as e:\n            app_logging.error(\"[ERROR] Create database link error: {}\".format(str(e)))\n            command = \"\"\n            self.close_connect(WebSocketStatusCode.SSH_CHECK_ERROR)\n        self.session_log = self.create_session_log(data)\n        self.start_ssh(command)\n\n    def disconnect(self, close_code):\n        self.close_ssh()\n        time.sleep(0.5)\n        try:\n            self.session_log.update(**{\n                \"is_finished\": True,\n                \"end_time\": datetime.datetime.now()\n            })\n        except Exception as e:\n            app_logging.error(\"[ERROR] Update Session Log error: {}, param: {}\".format(str(e), str(self.session_log)))\n        self.close()\n\n    def close_ssh(self):\n        self.queue.publish(self.channel_name, json.dumps(['close']))\n\n    @property\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            self.close_connect(code)\n        try:\n            if text_data is not None:  # 普通命令执行\n                self.queue.publish(self.channel_name, text_data)\n            if bytes_data:  # RZ SZ\n                self.queue.publish(self.channel_name, bytes_data)\n        except socket.error:\n            self.disconnect(1000)\n            return\n        except ValueError:\n            if self.first_flag:\n                self.first_flag = False\n            self.queue.publish(self.channel_name, smart_unicode(text_data))\n        except Exception as e:\n            self.disconnect(1000)\n            return\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers_namespace_pod.py",
    "content": "import json\nimport time\n\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom threading import Thread\n\nfrom django.conf import settings\nfrom django.contrib import auth\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\nfrom k8s_api import K8sApi\n\n\nclass K8SStreamThread(Thread):\n    def __init__(self, websocket, container_stream):\n        Thread.__init__(self)\n        self.start_time = time.time()\n        self.websocket = websocket\n        self.stream = container_stream\n    \n    def run(self):\n        while self.stream.is_open():\n            if self.check_timeout():\n                break\n            if self.stream.peek_stdout():\n                stdout = self.stream.read_stdout()\n                self.websocket.send(stdout)\n                self.start_time = time.time()\n            if self.stream.peek_stderr():\n                stderr = self.stream.read_stderr()\n                self.websocket.send(stderr)\n                self.start_time = time.time()\n        else:\n            self.websocket._close_ws_connect(\"\\nPod断开连接!\")\n    \n    def check_timeout(self):\n        # if s >= 10:\n        stop = False\n        now = time.time()\n        if now - self.start_time >= self.websocket.long_time_break_time:\n            self.websocket._close_ws_connect(\"\\nPod断开连接: 长时间没有任何操作\")\n            stop = True\n        if now >= self.websocket.invalid_timestamp:\n            self.websocket._close_ws_connect(\"\\nPod断开连接: 登录令牌已过期,请重新登录!\")\n            stop = True\n        return stop\n\n\nclass PodConsumer(AsyncWebsocketConsumer):\n    def connect(self):\n        # self.scope[\"cookies\"][\"bk_token\"] = \"wBWDmiR5rM1pHcIf3lqWs7OERpXE8gFVgdoRngDyoCk\"\n        self._update_scope_user()\n        # [\"set_size\", 466, 2133]\n        self.height = 240\n        self.width = 300\n        self.stream = None\n        self.token = None\n        self.invalid_timestamp = 0\n        self.long_time_break_time = 60 * 30\n        self.accept()\n        \n        check_status, api, namespace, pod, container, message = self._check_pod_auth()\n        if not check_status:\n            self._close_ws_connect(\"\\nPod登录失败: \" + message)\n            return\n        status, self.stream = api.pod_exec(namespace, pod, self.height, self.width, container)\n        if not status:\n            self._close_ws_connect(str(\"\\nPod登录失败: \" + self.stream))\n            return\n        kub_stream = K8SStreamThread(self, self.stream)\n        kub_stream.start()\n    \n    def _update_scope_user(self):\n        user = auth.authenticate(request=None, bk_token=self.get_token())\n        if user:\n            self.scope[\"user\"] = user\n        return user\n    \n    def _close_ws_connect(self, close_code):\n        try:\n            self.send(close_code)\n            self.disconnect(close_code)\n            self.close()\n        except Exception as e:\n            pass\n    \n    def disconnect(self, close_code):\n        try:\n            self.stream.write_stdin('exit\\r')\n        except Exception as e:\n            pass\n    \n    def receive(self, text_data=None, bytes_data=None):\n        # print(\"text_data\", text_data)\n        is_change = self.change_size(text_data)\n        if not is_change:\n            try:\n                self.stream.write_stdin(text_data)\n            except Exception as e:\n                pass\n    \n    def change_size(self, text_data):\n        # [\"set_size\", 466 , 2133]\n        # [\"set_size\", 120, 120]\n        is_change = False\n        try:\n            if \"set_size\" not in text_data:\n                return False\n            li = eval(text_data)\n            if isinstance(li, list) and len(li) == 3:\n                name = li[0]\n                height = li[1]\n                width = li[2]\n                if name == \"set_size\":\n                    self.height = height\n                    self.width = width\n                    is_change = True\n                    if self.stream:\n                        self.stream.write_channel(4, json.dumps({\"Height\": int(height), \"Width\": int(width)}))\n        \n        except Exception:\n            pass\n        return is_change\n    \n    def get_token(self):\n        cookies = self.scope.get(\"cookies\") or {}\n        try:\n            return settings.BK_TOKEN\n        except:\n            pass\n        return cookies.get(\"bk_token\")\n    \n    def get_request_param_dict(self):\n        try:\n            query_string = self.scope.get(\"query_string\").decode()\n        except:\n            query_string = self.scope.get(\"query_string\")\n        \n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n    \n    def _check_pod_auth(self):\n        params = self.get_request_param_dict()\n        pod_token = params.get(\"token\")  # pod_login_48289284298b4e8faf3ab4cf76287c45\n        bk_token = self.get_token()\n        user = self.scope.get(\"user\")\n        data = get_redis_dict_data(\"pod_login\", str(pod_token))\n        if not data:\n            return False, None, None, None, None, \"登录令牌已过期,请重新登录\"\n        # try:\n        #     data_str = data_b.decode()\n        #     data = eval(data_str)\n        #     if not isinstance(data, dict):\n        #         return False, None, None, None, None, \"登录令牌数据失效,请重新登录\"\n        # except Exception as e:\n        #     return False, None, None, None, None, \"登录令牌数据失效,请重新登录!\"\n        \n        cluster_config = data.get(\"cluster_config\")\n        long_time_break_time = data.get(\"long_time_break_time\")\n        if long_time_break_time and isinstance(long_time_break_time, int):\n            self.long_time_break_time = long_time_break_time\n        # cluster = data.get(\"cluster\")\n        # cluster_unique = data.get(\"cluster_unique\")\n        # project_unique = data.get(\"project_unique\")\n        namespace = data.get(\"namespace\")\n        pod = data.get(\"pod\")\n        container = data.get(\"container\")\n        username = data.get(\"username\")\n        cache_bk_token = data.get(\"bk_token\")\n        if bk_token != cache_bk_token:\n            return False, None, None, None, None, \"当前用户无访问权限,请重新登录或联系管理员授权\"\n        if not user:\n            return False, None, None, None, None, \"当前用户已失效,请重新登录或联系管理员授权!\"\n        # if username != user.username:\n        #     return False, None, None, None, None, \"当前用户无访问权限,请重新登录或联系管理员授权!\"\n        api = K8sApi(cluster_config)\n        self.invalid_timestamp = data.get(\"invalid_timestamp\")\n        return True, api, namespace, pod, container, \"Success\"\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers_network.py",
    "content": "import contextlib\nimport time\nimport json\nimport logging\nimport uuid\nimport datetime\nimport settings\nimport threading\nimport os\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom django_redis import get_redis_connection\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import WebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, CredentialModel, SessionLogModel, HostCredentialRelationshipModel\nfrom bastion.utils.encryption import PasswordEncryption\nfrom bastion.core.guacamole.component import GuacamoleThread, GuacamoleThreadWrite\nfrom bastion.core.guacamole.client import GuacamoleClient\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass GuacamoleNetWorkWebsocket(AsyncWebsocketConsumer):\n    GUACD_CLIENT = None\n    width = 1920\n    height = 1080\n    dpi = 900\n    wait_time = time.time()\n    token = \"\"\n    cache = get_redis_connection(\"cache\")\n    user = None\n    recording_path = os.path.join(settings.GUACD_PATH, \"logfile\")\n    recording_name = str(uuid.uuid4())\n\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    def get_user(self):\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    def get_cookie(self):\n        cookie = {}\n        cookies = next((header[1].decode() for header in self.scope['headers'] if header[0] == b'cookie'), None)\n\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    def get_link_config(self, token):\n        try:\n            data = get_redis_dict_data(self.cache, token.split(\"/\")[0])\n            return True, data\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, get_link_config error: {}, param: {}\".format(\n                    str(e), str(token))\n            )\n            return False, {}\n\n    def check_link_user(self, user_id):\n        self.user = self.get_user()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] SSH web socket, check_link_user error: {}, param: {}\".format(\n                        str(e), str(user_id))\n                )\n                return False\n        return False\n\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    def check_token(self):\n        request_param = self.get_request_param_dict()\n        self.token = request_param.get(\"token\")\n        if not self.token:\n            self.token = self.get_cookie().get(\"link_token\")\n        status, data = self.get_link_config(self.token)\n        if status:\n            status = self.check_link_user(data.get(\"user_id\"))\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, WebSocketStatusCode.ACCESS_ERROR, {}\n            return False, WebSocketStatusCode.USER_ERROR, {}\n        return False, WebSocketStatusCode.PARAM_ERROR, {}\n\n    def connect(self):  # sourcery skip: raise-specific-error\n        self.accept('guacamole')\n        # py3.7老版本修复bug\n        self.recording_name = str(uuid.uuid4())\n        self.wait_time = time.time()\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            raise Exception(code)\n        query_string = self.scope['query_string'].decode()\n        if query_string:\n            query_dict = dict([x.split('=', 1) for x in query_string.split('&')])\n            if query_dict.get(\"width\") and query_dict.get(\"height\") and query_dict.get(\"dpi\"):\n                self.width = int(float(query_dict[\"width\"]))\n                self.height = int(float(query_dict[\"height\"]))\n                self.dpi = int(float(query_dict[\"dpi\"]))\n        try:\n            timeout = int(data.get(\"timeout\", 10))\n        except Exception:\n            timeout = 10\n        if not data.get(\"cache\"):\n            server_ = HostModel.fetch_one(id=data.get(\"host_id\"))\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=data.get(\"credential_host_id\"))\n            drive_path = os.path.join(settings.GUACD_PATH, str(server_.id))\n            ori_drive_path = os.path.join(settings.ORI_GUACD_PATH, str(server_.id))\n        else:\n            server_ = None\n            credential_host = None\n            drive_path = os.path.join(settings.GUACD_PATH, str(data.get(\"host_id\")))\n            ori_drive_path = os.path.join(settings.ORI_GUACD_PATH, str(data.get(\"host_id\")))\n        guacamole_host = settings.GUACD_HOST\n        guacamole_port = settings.GUACD_PORT\n        if server_:\n            network_proxy = server_.network_proxy\n            if network_proxy:\n                guacamole_host = network_proxy.windows_ip\n                guacamole_port = network_proxy.windows_port\n        self.GUACD_CLIENT = GuacamoleClient(guacamole_host, guacamole_port, timeout=timeout)\n        # if not os.path.exists(ori_drive_path + \"/Download\"):\n        #     os.makedirs(ori_drive_path + \"/Download\")\n        if not os.path.exists(self.recording_path):\n            os.makedirs(self.recording_path)\n        args = {\n            \"enable_drive\": \"true\",\n            \"create_drive_path\": \"true\",\n            \"client_name\": \"OpsAny\",  # 目标主机显示 OpsAny 上的 Downloads\n            \"drive_name\": \"Downloads\",\n            \"drive_path\": drive_path\n        }\n        if server_:\n            credential = credential_host.credential\n            hostname = server_.host_address.strip()\n            port = server_.port\n            username = credential.login_name.strip()\n            if credential.login_type == credential.LOGIN_AUTO:\n                password = PasswordEncryption().decrypt(credential.login_password.strip())\n            else:\n                password = data.get(\"password\")\n            if server_.resource_type == HostModel.RESOURCE_NETWORK:\n                if server_.protocol_type == \"SSH\":\n                    protocol = \"ssh\"\n                else:\n                    protocol = \"telnet\"\n            elif server_.system_type.strip() == \"Linux\":\n                protocol = \"ssh\"\n            else:\n                protocol = \"rdp\"\n        elif data.get(\"cache\"):\n            protocol = \"rdp\"\n            hostname = data.get(\"host_info\").get(\"ip\")\n            port = int(data.get(\"host_info\").get(\"port\"))\n            username = data.get(\"host_info\").get(\"username\")\n            password = data.get(\"host_info\").get(\"password\")\n            # app_logging.info(hostname, port, username, password)\n        else:\n            raise Exception(\"Server not exist!!!\")\n        args.update({\n            \"security\": 'any',\n            \"ignore_cert\": \"true\",\n            \"disable_audio\": \"true\",\n            \"recording_path\": self.recording_path,\n            \"recording_name\": self.recording_name,\n            \"create_recording_path\": 'true'\n        })\n        dic = dict(\n            protocol=protocol,\n            hostname=hostname,\n            port=port,\n            username=username,\n            password=password,\n            width=self.width,\n            height=self.height,\n            dpi=self.dpi,\n            **args\n        )\n        self.GUACD_CLIENT.handshake(**dic)\n        # print(\"dicdic\", dic)\n        self.closed = threading.Event()\n        guacamolethread = GuacamoleThread(self)\n        guacamolethread.setDaemon = True\n        guacamolethread.start()\n        guacamolethreadwrite = GuacamoleThreadWrite(self)\n        guacamolethreadwrite.setDaemon = True\n        guacamolethreadwrite.start()\n        if server_:\n            SessionLogModel.objects.create(\n                user=self.user.username,\n                host=server_,\n                channel=self.channel_name,\n                host_name=server_.host_name,\n                system_type=server_.system_type,\n                host_address=server_.host_address,\n                login_name=credential_host.credential.login_name,\n                log_name=self.recording_name,\n                guacamole_client_id=self.GUACD_CLIENT.id,\n                width=self.width,\n                height=self.height\n                )\n        else:\n            SessionLogModel.objects.create(\n                user=self.user.username,\n                channel=self.channel_name,\n                host_name=data.get(\"host_info\").get(\"host_name\"),\n                system_type=\"Network\",\n                host_address=data.get(\"host_info\").get(\"ip\"),\n                login_name=data.get(\"host_info\").get(\"username\"),\n                log_name=self.recording_name,\n                guacamole_client_id=self.GUACD_CLIENT.id,\n                width=self.width,\n                height=self.height\n                )\n\n    def disconnect(self, code):\n        self.closed.set()\n        audit_log = SessionLogModel.objects.filter(channel=self.channel_name)\n        if audit_log:\n            audit_log.update(\n                    is_finished=True,\n                    end_time=datetime.datetime.now()\n                )\n            width = str(audit_log[0].width)\n            height = str(audit_log[0].height)\n            full_path = os.path.join(self.recording_path, self.recording_name)\n            command = '/opt /guacamole-server-1.2.0/src/guacenc/guacenc -s '\\\n                      + width + \"x\" + height + ' -r 1000000 -f ' + full_path\n            os.system(command)\n        else:\n            app_logging.error(\"[ERROR] Windows Terminal Not Find Session Log, Channel name: {}\".format(self.channel_name))\n        with contextlib.suppress(Exception):\n            self.close()\n        self.GUACD_CLIENT.client.close()\n        with contextlib.suppress(Exception):\n            self.close()\n        self.closeguacamole()\n\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def closeguacamole(self):\n        self.queue().publish(self.channel_name, json.dumps(['close']))\n\n    def check_timeout_close(self):\n        # 空闲超时退出\n        current_time = time.time()\n        if int(current_time - self.wait_time) > settings.TERMINAL_TIMEOUT:\n            self._extracted_from_receive_5()\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        self.check_timeout_close()\n        # status, _, _ = self.check_token()\n        status = True\n        if status:\n            self.queue().publish(self.channel_name, text_data)\n            if not text_data.startswith(\"4.sync,1\"):\n                self.wait_time = time.time()\n            if text_data == '10.disconnect;':\n                self.disconnect(1000)\n        else:\n            self._extracted_from_receive_5()\n\n    # TODO Rename this here and in `check_timeout_close` and `receive`\n    def _extracted_from_receive_5(self):\n        self.send(\"10.disconnect;\")\n        self.queue().publish(self.channel_name, \"10.disconnect;\")\n        self.disconnect(1001)\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/consumers_windows.py",
    "content": "import contextlib\nimport time\nimport json\nimport logging\nimport uuid\nimport datetime\nimport settings\nimport threading\nimport os\nfrom channels.generic.websocket import AsyncWebsocketConsumer\nfrom django_redis import get_redis_connection\n\nfrom bastion.component.redis_client_conn import get_redis_dict_data\n\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\n\nfrom bastion.core.terminal.component import SSHBaseComponent\nfrom bastion.core.status_code import WebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nfrom bastion.component.common import GetUserInfo\nfrom bastion.models import HostModel, SessionLogModel, HostCredentialRelationshipModel, NetworkProxyModel\nfrom bastion.utils.encryption import PasswordEncryption\nfrom bastion.core.guacamole.component import GuacamoleThread, GuacamoleThreadWrite\nfrom bastion.core.guacamole.client import GuacamoleClient\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass GuacamoleWebsocket(AsyncWebsocketConsumer):\n    GUACD_CLIENT = None\n    width = 1920\n    height = 1080\n    dpi = 900\n    wait_time = time.time()\n    token = \"\"\n    cache = get_redis_connection(\"cache\")\n    user = None\n    recording_path = os.path.join(settings.GUACD_PATH, \"logfile\")\n    recording_name = \"UUID\"\n\n    def get_request_param_dict(self):\n        query_string = self.scope.get(\"query_string\").decode()\n        request_param = dict([x.split('=', 1) for x in query_string.split('&')])\n        return request_param\n\n    def get_user(self):\n        # token = \"VdM0Qc5j2JOXCeociGMm9moDoiHblwIF3m1X58rwkzc\"\n        # user = GetUserInfo().get_user_info(bk_token=token)\n        user = GetUserInfo().get_user_info(bk_token=self.scope.get(\"cookies\").get(\"bk_token\"))\n        return user\n\n    def get_cookie(self):\n        cookie = {}\n        cookies = next((header[1].decode() for header in self.scope['headers'] if header[0] == b'cookie'), None)\n\n        if cookies:\n            cookie = dict([cookie.split('=', 1) for cookie in cookies.split('&')])\n        return cookie\n\n    def get_link_config(self, token):\n        try:\n            data = get_redis_dict_data(self.cache, token.split(\"/\")[0])\n            return True, data\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, get_link_config error: {}, param: {}\".format(\n                str(e), str(token))\n            )\n            return False, {}\n\n    def check_link_user(self, user_id):\n        self.user = self.get_user()\n        if self.user:\n            try:\n                if self.user.id == user_id:\n                    return True\n                return False\n            except Exception as e:\n                app_logging.error(\"[ERROR] SSH web socket, check_link_user error: {}, param: {}\".format(\n                    str(e), str(user_id))\n                )\n                return False\n        return False\n\n    def check_link_time(self, data):\n        \"\"\"\n        使用Token从缓存中读取验证数据\n        \"\"\"\n        access_data = data.get(\"access_data\")\n        try:\n            access_ip = self.scope.get(\"client\")[0]\n        except Exception as e:\n            app_logging.error(\"[ERROR] SSH web socket, check_link_time error: {}\".format(str(e)))\n            access_ip = \"\"\n        status, _ = CheckUserHostComponent().check_access_strategy(access_data, access_ip)\n        return status\n\n    def check_token(self):\n        request_param = self.get_request_param_dict()\n        self.token = request_param.get(\"token\")\n        if not self.token:\n            self.token = self.get_cookie().get(\"link_token\")\n        status, data = self.get_link_config(self.token)\n        if status:\n            status = self.check_link_user(data.get(\"user_id\"))\n            if status:\n                if data.get(\"admin\") or data.get(\"cache\"):\n                    return None, \"\", data\n                status = self.check_link_time(data)\n                if status:\n                    return True, \"\", data\n                return False, WebSocketStatusCode.ACCESS_ERROR, {}\n            return False, WebSocketStatusCode.USER_ERROR, {}\n        return False, WebSocketStatusCode.PARAM_ERROR, {}\n\n    def connect(self):  # sourcery skip: raise-specific-error\n        self.accept('guacamole')\n        self.recording_name = str(uuid.uuid4())\n        self.wait_time = time.time()\n        status, code, data = self.check_token()\n        if not status and status is not None:\n            raise Exception(code)\n        query_string = self.scope['query_string'].decode()\n        if query_string:\n            query_dict = dict([x.split('=', 1) for x in query_string.split('&')])\n            if query_dict.get(\"width\") and query_dict.get(\"height\") and query_dict.get(\"dpi\"):\n                self.width = int(float(query_dict[\"width\"]))\n                self.height = int(float(query_dict[\"height\"]))\n                self.dpi = int(float(query_dict[\"dpi\"]))\n        guacamole_host, guacamole_port = None, None\n        try:\n            timeout = int(data.get(\"timeout\", 10))\n        except Exception:\n            timeout = 10\n        if not data.get(\"cache\"):\n            server_ = HostModel.fetch_one(id=data.get(\"host_id\"))\n            credential_host = HostCredentialRelationshipModel.fetch_one(id=data.get(\"credential_host_id\"))\n            drive_path = os.path.join(settings.GUACD_PATH, str(server_.id))\n            ori_drive_path = os.path.join(settings.ORI_GUACD_PATH, str(server_.id))\n            network_proxy = server_.network_proxy\n            if network_proxy:\n                guacamole_host = network_proxy.windows_ip\n                guacamole_port = network_proxy.windows_port\n        else:\n            server_ = None\n            credential_host = None\n            drive_path = os.path.join(settings.GUACD_PATH, str(data.get(\"host_id\")))\n            ori_drive_path = os.path.join(settings.ORI_GUACD_PATH, str(data.get(\"host_id\")))\n            network_proxy_id = data.get(\"host_info\", {}).get(\"network_proxy\")\n            if network_proxy_id:\n                try: network_proxy_id = int(network_proxy_id)\n                except: raise Exception(WebSocketStatusCode.PROXY_LINK_ERROR)\n                network_proxy = NetworkProxyModel.fetch_one(id=network_proxy_id)\n                if not network_proxy:\n                    raise Exception(WebSocketStatusCode.PROXY_LINK_ERROR)\n                guacamole_host = network_proxy.windows_ip\n                guacamole_port = network_proxy.windows_port\n        if (not guacamole_host) and (not guacamole_port):\n            guacamole_host = settings.GUACD_HOST\n            guacamole_port = settings.GUACD_PORT\n\n        self.GUACD_CLIENT = GuacamoleClient(guacamole_host, guacamole_port, timeout=timeout)\n        # if not os.path.exists(ori_drive_path + \"/Download\"):\n        #     os.makedirs(ori_drive_path + \"/Download\")\n        if not os.path.exists(self.recording_path):\n            os.makedirs(self.recording_path)\n        args = {\n            \"enable_drive\": \"true\",\n            \"create_drive_path\": \"true\",\n            \"client_name\": \"OpsAny\",    # 目标主机显示 OpsAny 上的 Downloads\n            \"drive_name\": \"Downloads\",\n            \"drive_path\": drive_path\n        }\n        if server_:\n            credential = credential_host.credential\n            hostname = server_.host_address.strip()\n            port = server_.port\n            username = credential.login_name.strip()\n            if credential.login_type == credential.LOGIN_AUTO:\n                if credential.login_password:\n                    password = PasswordEncryption().decrypt(credential.login_password.strip())\n                else:\n                    password = \"\"\n\n            else:\n                password = data.get(\"password\")\n            if server_.resource_type == HostModel.RESOURCE_NETWORK:\n                if server_.protocol_type == HostModel.PROTOCOL_SSH:\n                    protocol = \"ssh\"\n                else:\n                    protocol = \"telnet\"\n            elif server_.system_type.strip() == \"Linux\":\n                protocol = \"ssh\"\n            else:\n                protocol = \"rdp\"\n        elif data.get(\"cache\"):\n            protocol = \"rdp\"\n            hostname = data.get(\"host_info\").get(\"ip\")\n            port = int(data.get(\"host_info\").get(\"port\"))\n            username = data.get(\"host_info\").get(\"username\")\n            password = data.get(\"host_info\").get(\"password\")\n            # app_logging.info(hostname, port, username, password)\n        else:\n            raise Exception(\"Server not exist!!!\")\n        args.update({\n            \"security\": 'any',\n            \"ignore_cert\": \"true\",\n            \"disable_audio\": \"true\",\n            \"recording_path\": self.recording_path,\n            \"recording_name\": self.recording_name,\n            \"create_recording_path\": 'true'\n        })\n        handshake_dict = dict(\n            protocol=protocol,\n            hostname=hostname,\n            port=port,\n            username=username,\n            password=password,\n            width=self.width,\n            height=self.height,\n            dpi=self.dpi,\n            **args\n        )\n        self.GUACD_CLIENT.handshake(**handshake_dict)\n        # print(\"dicdic\", dic)\n        self.closed = threading.Event()\n        guacamolethread = GuacamoleThread(self)\n        guacamolethread.setDaemon = True\n        guacamolethread.start()\n        guacamolethreadwrite = GuacamoleThreadWrite(self)\n        guacamolethreadwrite.setDaemon = True\n        guacamolethreadwrite.start()\n        if server_:\n            SessionLogModel.objects.create(\n                user=self.user.username,\n                host=server_,\n                channel=self.channel_name,\n                host_name=server_.host_name,\n                system_type=server_.system_type,\n                host_address=server_.host_address,\n                login_name=credential_host.credential.login_name,\n                log_name=self.recording_name,\n                guacamole_client_id=self.GUACD_CLIENT.id,\n                width=self.width,\n                height=self.height\n            )\n        else:\n            SessionLogModel.objects.create(\n                user=self.user.username,\n                channel=self.channel_name,\n                host_name=data.get(\"host_info\").get(\"host_name\"),\n                system_type=\"Windows\",\n                host_address=data.get(\"host_info\").get(\"ip\"),\n                login_name=data.get(\"host_info\").get(\"username\"),\n                log_name=self.recording_name,\n                guacamole_client_id=self.GUACD_CLIENT.id,\n                width=self.width,\n                height=self.height\n            )\n\n    def disconnect(self, code):\n        self.closed.set()\n        audit_log = SessionLogModel.objects.filter(channel=self.channel_name)\n        if audit_log:\n            audit_log.update(\n                is_finished=True,\n                end_time=datetime.datetime.now()\n            )\n            # width = str(audit_log[0].width)\n            # height = str(audit_log[0].height)\n            # full_path = os.path.join(self.recording_path, self.recording_name)\n            # command = '/opt /guacamole-server-1.2.0/src/guacenc/guacenc -s ' \\\n            #           + width + \"x\" + height + ' -r 1000000 -f ' + full_path\n            # os.system(command)\n        else:\n            app_logging.error(\n                \"[ERROR] Windows Terminal Not Find Session Log, Channel name: {}\".format(self.channel_name))\n        with contextlib.suppress(Exception):\n            self.close()\n        self.GUACD_CLIENT.client.close()\n        with contextlib.suppress(Exception):\n            self.close()\n        self.closeguacamole()\n\n    def queue(self):\n        queue = SSHBaseComponent().get_redis_instance()\n        queue.pubsub()\n        return queue\n\n    def closeguacamole(self):\n        self.queue().publish(self.channel_name, json.dumps(['close']))\n\n    def check_timeout_close(self):\n        # 空闲超时退出\n        current_time = time.time()\n        if int(current_time - self.wait_time) > settings.TERMINAL_TIMEOUT:\n            self._extracted_from_receive_5()\n\n    def receive(self, text_data=None, bytes_data=None, **kwargs):\n        self.check_timeout_close()\n        # status, _, _ = self.check_token()\n        status = True\n        if status:\n            self.queue().publish(self.channel_name, text_data)\n            if not text_data.startswith(\"4.sync,1\"):\n                self.wait_time = time.time()\n            if text_data == '10.disconnect;':\n                self.disconnect(1000)\n        else:\n            self._extracted_from_receive_5()\n\n    # TODO Rename this here and in `check_timeout_close` and `receive`\n    def _extracted_from_receive_5(self):\n        self.send(\"10.disconnect;\")\n        self.queue().publish(self.channel_name, \"10.disconnect;\")\n        self.disconnect(1001)\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/guacamole/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/guacamole/client.py",
    "content": "\"\"\"\nThe MIT License (MIT)\n\nCopyright (c)   2014 rescale\n                2014 - 2016 Mohab Usama\n\"\"\"\n\n\"\"\"\nGuacamole.Status.Code = {\n    /**\n     * The operation succeeded.\n     *\n     * @type {!number}\n     */\n    \"SUCCESS\": 0x0000, 0\n    /**\n     * The requested operation is unsupported.\n     *\n     * @type {!number}\n     */\n    \"UNSUPPORTED\": 0x0100, 256\n    /**\n     * The operation could not be performed due to an internal failure.\n     *\n     * @type {!number}\n     */\n    \"SERVER_ERROR\": 0x0200, 512\n    /**\n     * The operation could not be performed as the server is busy.\n     *\n     * @type {!number}\n     */\n    \"SERVER_BUSY\": 0x0201, 513\n    /**\n     * The operation could not be performed because the upstream server is not\n     * responding.\n     *\n     * @type {!number}\n     */\n    \"UPSTREAM_TIMEOUT\": 0x0202, 514\n    /**\n     * The operation was unsuccessful due to an error or otherwise unexpected\n     * condition of the upstream server.\n     *\n     * @type {!number}\n     */\n    \"UPSTREAM_ERROR\": 0x0203, 515\n    /**\n     * The operation could not be performed as the requested resource does not\n     * exist.\n     *\n     * @type {!number}\n     */\n    \"RESOURCE_NOT_FOUND\": 0x0204, 516\n    /**\n     * The operation could not be performed as the requested resource is\n     * already in use.\n     *\n     * @type {!number}\n     */\n    \"RESOURCE_CONFLICT\": 0x0205,517\n    /**\n     * The operation could not be performed as the requested resource is now\n     * closed.\n     *\n     * @type {!number}\n     */\n    \"RESOURCE_CLOSED\": 0x0206, 518\n    /**\n     * The operation could not be performed because the upstream server does\n     * not appear to exist.\n     *\n     * @type {!number}\n     */\n    \"UPSTREAM_NOT_FOUND\": 0x0207, 519\n    /**\n     * The operation could not be performed because the upstream server is not\n     * available to service the request.\n     *\n     * @type {!number}\n     */\n    \"UPSTREAM_UNAVAILABLE\": 0x0208, 520\n    /**\n     * The session within the upstream server has ended because it conflicted\n     * with another session.\n     *\n     * @type {!number}\n     */\n    \"SESSION_CONFLICT\": 0x0209, 521\n    /**\n     * The session within the upstream server has ended because it appeared to\n     * be inactive.\n     *\n     * @type {!number}\n     */\n    \"SESSION_TIMEOUT\": 0x020A, 522\n    /**\n     * The session within the upstream server has been forcibly terminated.\n     *\n     * @type {!number}\n     */\n    \"SESSION_CLOSED\": 0x020B, 523\n    /**\n     * The operation could not be performed because bad parameters were given.\n     *\n     * @type {!number}\n     */\n    \"CLIENT_BAD_REQUEST\": 0x0300, 768\n    /**\n     * Permission was denied to perform the operation, as the user is not yet\n     * authorized (not yet logged in, for example).\n     *\n     * @type {!number}\n     */\n    \"CLIENT_UNAUTHORIZED\": 0x0301, 769\n    /**\n     * Permission was denied to perform the operation, and this permission will\n     * not be granted even if the user is authorized.\n     *\n     * @type {!number}\n     */\n    \"CLIENT_FORBIDDEN\": 0x0303, 771\n    /**\n     * The client took too long to respond.\n     *\n     * @type {!number}\n     */\n    \"CLIENT_TIMEOUT\": 0x0308, 776\n    /**\n     * The client sent too much data.\n     *\n     * @type {!number}\n     */\n    \"CLIENT_OVERRUN\": 0x030D, 781\n    /**\n     * The client sent data of an unsupported or unexpected type.\n     *\n     * @type {!number}\n     */\n    \"CLIENT_BAD_TYPE\": 0x030F, 783\n    /**\n     * The operation failed because the current client is already using too\n     * many resources.\n     *\n     * @type {!number}\n     */\n    \"CLIENT_TOO_MANY\": 0x031D 797\n};\n\n\"\"\"\n\n\nimport socket\nimport logging\n\nfrom bastion.core.guacamole.exceptions import GuacamoleError\n\nfrom bastion.core.guacamole.instruction import INST_TERM\nfrom bastion.core.guacamole.instruction import GuacamoleInstruction as Instruction\n\n# supported protocols\nPROTOCOLS = ('vnc', 'rdp', 'ssh', 'telnet')\n\nPROTOCOL_NAME = 'guacamole'\n\nBUF_LEN = 4096\n\nguac_logger = logging.getLogger('django.server')\nguac_logger.setLevel(logging.INFO)\n\n\nclass GuacamoleClient(object):\n    \"\"\"Guacamole Client class.\"\"\"\n\n    def __init__(self, host, port, timeout=20, debug=False, logger=None):\n        \"\"\"\n        Guacamole Client class. This class can handle communication with guacd\n        server.\n\n        :param host: guacd server host.\n\n        :param port: guacd server port.\n\n        :param timeout: socket connection timeout.\n\n        :param debug: if True, default logger will switch to Debug level.\n        \"\"\"\n        self.host = host\n        self.port = port\n        self.timeout = timeout\n\n        self._client = None\n\n        # handshake established?\n        self.connected = False\n\n        # Receiving buffer\n        self._buffer = bytearray()\n\n        # Client ID\n        self._id = None\n\n        self.logger = guac_logger\n        if logger:\n            self.logger = logger\n\n        if debug:\n            self.logger.setLevel(logging.debug)\n\n\n    @property\n    def client(self):\n        \"\"\"\n        Socket connection.\n        \"\"\"\n        if not self._client:\n            self._client = socket.create_connection(\n                (self.host, self.port), self.timeout)\n\n        return self._client\n\n    @property\n    def id(self):\n        \"\"\"Return client id\"\"\"\n        return self._id\n\n    def close(self):\n        \"\"\"\n        Terminate connection with Guacamole guacd server.\n        \"\"\"\n        self.client.close()\n        self._client = None\n        self.connected = False\n        self.logger.debug('Connection closed.')\n\n    def receive(self):\n        \"\"\"\n        Receive instructions from Guacamole guacd server.\n        \"\"\"\n        start = 0\n\n        while True:\n            idx = self._buffer.find(INST_TERM.encode(), start)\n            if idx != -1:\n                # instruction was fully received!\n                line = self._buffer[:idx + 1].decode()\n                self._buffer = self._buffer[idx + 1:]\n                self.logger.debug('Received instruction: %s' % line)\n                return line\n            else:\n                start = len(self._buffer)\n                # we are still waiting for instruction termination\n                buf = self.client.recv(BUF_LEN)\n                if not buf:\n                    # No data recieved, connection lost?!\n                    self.close()\n                    return None\n                self._buffer.extend(buf)\n\n    def send(self, data):\n        \"\"\"\n        Send encoded instructions to Guacamole guacd server.\n        \"\"\"\n        if not isinstance(data, bytes):\n            data = data.encode()\n        self.client.sendall(data)\n\n    def read_instruction(self):\n        \"\"\"\n        Read and decode instruction.\n        \"\"\"\n        return Instruction.load(self.receive())\n\n    def send_instruction(self, instruction):\n        \"\"\"\n        Send instruction after encoding.\n        \"\"\"\n        return self.send(instruction.encode())\n\n    def handshake(self, protocol='vnc', width=1920, height=1080, dpi=96,\n                  audio=None, video=None, image=None, **kwargs):\n        \"\"\"\n        Establish connection with Guacamole guacd server via handshake.\n\n        \"\"\"\n        if protocol not in PROTOCOLS and 'connectionid' not in kwargs:\n            raise GuacamoleError('Cannot start Handshake. '\n                                 'Missing protocol or connectionid.')\n\n        if audio is None:\n            audio = list()\n\n        if video is None:\n            video = list()\n\n        if image is None:\n            image = list()\n\n        if 'connectionid' in kwargs:\n            self.send_instruction(Instruction('select',\n                                              kwargs.get('connectionid')))\n        else:\n            self.send_instruction(Instruction('select', protocol))\n\n        instruction = self.read_instruction()\n\n        if not instruction:\n            self.close()\n            raise GuacamoleError(\n                'Cannot establish Handshake. Connection Lost!')\n\n        if instruction.opcode != 'args':\n            self.close()\n            raise GuacamoleError(\n                'Cannot establish Handshake. Expected opcode `args`, '\n                'received `%s` instead.' % instruction.opcode)\n\n        self.send_instruction(Instruction('size', width, height, dpi))\n\n        self.send_instruction(Instruction('audio', *audio))\n\n        self.send_instruction(Instruction('video', *video))\n\n        self.send_instruction(Instruction('image', *image))\n\n        # 4. Send `connect` instruction with proper values\n        connection_args = [\n            kwargs.get(arg.replace('-', '_'), '') for arg in instruction.args\n        ]\n\n        self.send_instruction(Instruction('connect', *connection_args))\n\n        # 5. Receive ``ready`` instruction, with client ID.\n        instruction = self.read_instruction()\n\n        if instruction.opcode != 'ready':\n            self.logger.warning(\n                'Expected `ready` instruction, received: %s instead')\n\n        if instruction.args:\n            self._id = instruction.args[0]\n\n        self.connected = True\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/guacamole/component.py",
    "content": "# -*- coding: utf-8 -*-\nimport threading\ntry:\n    import simplejson as json\nexcept ImportError:\n    import json\nfrom bastion.core.terminal.component import SSHBaseComponent\nimport ast\nfrom bastion.core.guacamole.client import guac_logger as logger\nimport time\ntry:\n    long = int\nexcept NameError:\n    long = int\ntry:\n    unicode = str\nexcept NameError:\n    unicode = str\nfrom six import string_types as basestring\n\n\nclass GuacamoleThread(threading.Thread):\n    \"\"\"Thread class with a stop() method. The thread itself has to check\n    regularly for the stopped() condition.\"\"\"\n\n    def __init__(self, websocket):\n        super(GuacamoleThread, self).__init__()\n        self.websocket = websocket\n        self._stop_event = self.websocket.closed\n        self.queue = self.redis_queue()\n        self.client = self.websocket.GUACD_CLIENT\n        self.read_lock = threading.RLock()\n        self.write_lock = threading.RLock()\n\n    def stop(self):\n        self._stop_event.set()\n        self.websocket.disconnect(1000)\n\n    def stopped(self):\n        return self._stop_event.is_set()\n\n    def redis_queue(self):\n        redis_instance = SSHBaseComponent().get_redis_instance()\n        redis_sub = redis_instance.pubsub()\n        redis_sub.subscribe(self.websocket.channel_name)\n        return redis_sub\n\n    def run(self):\n        with self.read_lock:\n            while True:\n                try:\n                    instruction = self.client.receive()\n                except:\n                    break\n                if instruction:\n                    self.websocket.send(instruction)\n\n\nclass GuacamoleThreadWrite(GuacamoleThread):\n\n    def run(self):\n        while True:\n            if self.stopped():\n                    break\n            text = self.queue.get_message()\n            if text:\n                logger.debug('******recv info from redis: %s' % text)\n            try:\n                data = ast.literal_eval(text['data'])\n            except Exception:\n                if isinstance(text, dict) and 'data' in text:\n                    data = text['data']\n                elif isinstance(text, (unicode, basestring)):\n                    data = text\n                else:\n                    data = text\n\n            if data:\n                if isinstance(data, (list, tuple)):\n                    if data[0] == 'close':\n                        self.stop()\n                if isinstance(data, (long, int)) and data == 1:\n                    pass\n                else:\n                    with self.write_lock:\n                        self.client.send(data)\n            else:\n                time.sleep(0.001)"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/guacamole/exceptions.py",
    "content": "\"\"\"\nThe MIT License (MIT)\n\nCopyright (c) 2014 - 2016 Mohab Usama\n\"\"\"\n\n\nclass GuacamoleError(Exception):\n    def __init__(self, message):\n        super(GuacamoleError, self).__init__(\n            'Guacamole Protocol Error. %s' % message\n        )\n\n\nclass InvalidInstruction(Exception):\n    def __init__(self, message):\n        super(InvalidInstruction, self).__init__(\n            'Invalid Guacamole Instruction! %s' % message\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/guacamole/instruction.py",
    "content": "\"\"\"\nThe MIT License (MIT)\n\nCopyright (c)   2014 rescale\n                2014 - 2015 Mohab Usama\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\"\"\"\nimport itertools\nimport six\n\nfrom builtins import str as __unicode__\n\nfrom bastion.core.guacamole.exceptions import InvalidInstruction\n\n\nINST_TERM = ';'  # instruction terminator character\nARG_SEP = ','  # instruction arg separator character\nELEM_SEP = '.'  # instruction arg element separator character (e.g. 4.size)\n\n# @TODO: enumerate instruction set\n\n\ndef utf8(unicode_str):\n    \"\"\"\n    Return a utf-8 encoded string from a valid unicode string.\n\n    :param unicode_str: Unicode string.\n\n    :return: str\n    \"\"\"\n    if six.PY2 and isinstance(unicode_str, __unicode__):\n        return unicode_str.encode('utf-8')\n\n    return unicode_str\n\n\nclass GuacamoleInstruction(object):\n\n    def __init__(self, opcode, *args, **kwargs):\n        self.opcode = opcode\n        self.args = args\n\n    @classmethod\n    def load(cls, instruction):\n        \"\"\"\n        Loads a new GuacamoleInstruction from encoded instruction string.\n\n        :param instruction: Instruction string.\n\n        :return: GuacamoleInstruction()\n        \"\"\"\n        if not instruction.endswith(INST_TERM):\n            raise InvalidInstruction('Instruction termination not found.')\n\n        args = cls.decode_instruction(instruction)\n\n        return cls(args[0], *args[1:])\n\n    @staticmethod\n    def decode_instruction(instruction):\n        \"\"\"\n        Decode whole instruction and return list of args.\n        Usually, returned arg[0] is the instruction opcode.\n\n        example:\n        >> args = decode_instruction('4.size,4.1024;')\n        >> args == ['size', '1024']\n        >> True\n\n        :param instruction: Instruction string.\n\n        :return: list\n        \"\"\"\n        if not instruction.endswith(INST_TERM):\n            raise InvalidInstruction('Instruction termination not found.')\n\n        # Use proper encoding\n        instruction = utf8(instruction)\n\n        # Get arg size\n        elems = instruction.split(ELEM_SEP, 1)\n\n        try:\n            arg_size = int(elems[0])\n        except Exception:\n            # Expected ValueError\n            raise InvalidInstruction(\n                'Invalid arg length.' +\n                ' Possibly due to missing element separator!')\n\n        arg_str = elems[1][:arg_size]\n\n        remaining = elems[1][arg_size:]\n\n        args = [arg_str]\n\n        if remaining.startswith(ARG_SEP):\n            # Ignore the ARG_SEP to parse next arg.\n            remaining = remaining[1:]\n        elif remaining == INST_TERM:\n            # This was the last arg!\n            return args\n        else:\n            # The remaining is neither starting with ARG_SEP nor INST_TERM.\n            raise InvalidInstruction(\n                'Instruction arg (%s) has invalid length.' % arg_str)\n\n        next_args = GuacamoleInstruction.decode_instruction(remaining)\n\n        if next_args:\n            args = args + next_args\n\n        return args\n\n    @staticmethod\n    def encode_arg(arg):\n        \"\"\"\n        Encode argument to be sent in a valid GuacamoleInstruction.\n\n        example:\n        >> arg = encode_arg('size')\n        >> arg == '4.size'\n        >> True\n\n        :param arg: arg string.\n\n        :return: str\n        \"\"\"\n        arg_utf8 = utf8(arg)\n\n        return ELEM_SEP.join([str(len(str(arg_utf8))), str(arg_utf8)])\n\n    def encode(self):\n        \"\"\"\n        Prepare the instruction to be sent over the wire.\n\n        :return: str\n        \"\"\"\n        instruction_iter = itertools.chain([self.opcode], self.args)\n\n        elems = ARG_SEP.join(self.encode_arg(arg) for arg in instruction_iter)\n\n        return elems + INST_TERM\n\n    def __str__(self):\n        return self.encode()\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/status_code.py",
    "content": "class WebSocketStatusCode:\n    # 参数错误，一般指Token错误\n    PARAM_ERROR = \"ws_errcode:1\"                        # 您的访问令牌无法通过验证，请尝试重新登录或联系管理员\n    # 校验用户错误，即登陆用户与当前请求用户不是同一用户\n    USER_ERROR = \"ws_errcode:2\"                         # 用户校验失败，请尝试重新登录或者联系管理员\n    # 没有通过访问策略\n    ACCESS_ERROR = \"ws_errcode:3\"                       # 您的当次访问已不符合访问策略要求 (其实就是超过了访问时间的时间段)\n    # 主机类型错误\n    HOST_TYPE_ERROR = \"ws_errcode:4\"                    # 您选择的主机不支持SSH协议\n    # 连接超时\n    TIME_OUT = \"ws_errcode:5\"                           # SSH连接超时，请稍后再试或联系管理员\n    # SSH验证失败\n    SSH_CHECK_ERROR = \"ws_errcode:6\"                    # SSH验证失败，请校验您输入的密码或联系管理员确认凭证内容\n    # Channel创建失败\n    CHANNEL_CREATE_ERROR = \"ws_errcode:7\"               # 服务器出现了一点小问题，请稍后再试或联系管理员\n\n    # 数据库类型错误\n    DATABASE_TYPE_ERROR = \"ws_errcode:8\"                # 目前不支持该类型数据库\n\n    # Proxy连接失败\n    PROXY_LINK_ERROR = \"ws_errcode:9\"                   # 无法连接到代理服务器\n    # Proxy连接失败\n    SSH_LINK_ERROR = \"ws_errcode:10\"                   # 连接服务器失败或登录认证失败\n    HOST_NOT_FOUND_ERROR = \"ws_errcode:11\"              # 当前主机已不存在\n    CRED_NOT_FOUND_ERROR = \"ws_errcode:12\"              # 当前凭证已不存在\n\n\nclass MySQLWebSocketStatusCode:\n    # 参数错误，一般指Token错误\n    PARAM_ERROR = {\"data_type\": \"error\", \"message\": \"您的访问令牌无法通过验证，请尝试重新登录或联系管理员\"}\n    # 校验用户错误，即登陆用户与当前请求用户不是同一用户\n    USER_ERROR = {\"data_type\": \"error\", \"message\": \"用户校验失败，请尝试重新登录或者联系管理员\"}\n    # 没有通过访问策略\n    ACCESS_ERROR = {\"data_type\": \"error\", \"message\": \"您的当次访问已不符合访问策略要求\"} # (其实就是超过了访问时间的时间段)\n    # 主机类型错误\n    HOST_TYPE_ERROR = {\"data_type\": \"error\", \"message\": \"您的当次访问已不符合访问策略要求\"}  # 您选择的主机不支持SSH协议\n    # 连接超时\n    TIME_OUT = {\"data_type\": \"error\", \"message\": \"数据库连接超时，请稍后再试或联系管理员\"}\n    # 断开连接\n    LEAVE_TIME_OUT = {\"data_type\": \"error\", \"message\": \"数据库长时间未操作，断开连接!\"}\n    # 数据库网络代理失败\n    DATABASE_PROXY_ERROR = {\"data_type\": \"error\", \"message\": \"数据库代理连接失败，请校验代理信息或联系管理员确认代理相关配置\"}\n    # 数据库验证失败\n    DATABASE_CHECK_ERROR = {\"data_type\": \"error\", \"message\": \"数据库验证失败，请校验您输入的密码或联系管理员确认凭证内容\"}\n    # 数据库处理失败\n    DATA_CHECK_ERROR = {\"data_type\": \"error\", \"message\": \"数据处理失败，请重新登录或联系管理员处理\"}\n    LINK_DATA_CHECK_ERROR = {\"data_type\": \"error\", \"message\": \"连接错误，请重新登录或联系管理员处理: \"}\n    # 用户没有权限\n    USER_PERMISSIONS_ERROR = {\"data_type\": \"error\", \"message\": \"用户没有相关权限，请联系管理员或授权后重试: \"}\n    # Channel创建失败\n    CHANNEL_CREATE_ERROR = {\"data_type\": \"error\", \"message\": \"服务器出现了一点小问题，请稍后再试或联系管理员\"}\n    # 数据库类型错误\n    DATABASE_TYPE_ERROR = {\"data_type\": \"error\", \"message\": \"目前不支持该类型数据库\"}\n    # Proxy连接失败\n    PROXY_LINK_ERROR = {\"data_type\": \"error\", \"message\": \"无法连接到代理服务器\"}\n    SERVER_ERROR = {\"data_type\": \"error\", \"message\": \"异常退出：{}\"}\n    CLOSE_SUCCESS = {\"data_type\": \"close\", \"message\": \"退出\"}\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/terminal/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/core/terminal/component.py",
    "content": "import datetime\nimport threading\nimport uuid\n\nimport pymysql\nfrom sqlparse import parsestream\n\nimport settings\nimport socket\nimport ast\nimport re\nimport time\nimport redis\nfrom six import string_types as basestring\nimport struct\nimport paramiko\nimport select\nimport sys\nimport json\nimport codecs\n# from paramiko.py3compat import u\nimport errno\nimport os\n\nfrom bastion.component.redis_client_conn import get_redis_str_data\n\ntry:\n    unicode = str\nexcept NameError:\n    unicode = str\ntry:\n    from django.utils.encoding import smart_unicode\nexcept ImportError:\n    from django.utils.encoding import smart_str as smart_unicode\ntry:\n    import termios\n    import tty\n    has_termios = True\nexcept ImportError:\n    has_termios = False\n    if getattr(settings, \"run_env\") == \"dev\":\n        has_termios = True\n    else:\n        raise Exception('This project does\\'t support windows system!')\n\nfrom bastion.models import SessionLogModel, CommandLogModel, SessionCommandHistoryModel, SessionLogInfoModel\nfrom bastion.core.status_code import WebSocketStatusCode\nfrom bastion.component.core import CheckUserHostComponent\nimport logging\n\napp_logger = logging.getLogger(\"app\")\n\ntry:\n    from channels.layers import get_channel_layer\n    channel_layer = get_channel_layer()\nexcept:\n    pass\n\n\nclass SSHBaseComponent:\n    @staticmethod\n    def get_redis_instance():\n        redis_server = channel_layer.hosts[0][\"address\"]\n        redis_list = redis_server.split('/')\n        db = 0\n        if len(redis_list) == 4:\n            db = redis_list[3]\n        host_str = redis_list[2]\n        if len(host_str.split(\":\")) < 3:\n            port = host_str.split(\":\")[1]\n            host = host_str.split(\":\")[0]\n            return redis.StrictRedis(host=host, port=port, db=db)\n        else:\n            port = host_str.split(\":\")[2]\n            password, host = host_str.split(\":\")[1].split('@')\n            return redis.StrictRedis(host=host, port=port, password=password, db=db)\n\n    @staticmethod\n    def remove_obstruct_char(cmd_str):\n        \"\"\"\n        Delete some special control delimiter\n        \"\"\"\n        control_char = re.compile(r'\\x07 | \\x1b\\[1P | \\r ', re.X)\n        cmd_str = control_char.sub('', cmd_str.strip())\n        patch_char = re.compile('\\x08\\x1b\\[C')\n        while patch_char.search(cmd_str):\n            cmd_str = patch_char.sub('', cmd_str.rstrip())\n        return cmd_str\n\n    @staticmethod\n    def deal_backspace(match_str, result_command, pattern_str, backspace_num):\n        \"\"\"\n        Deal with delete key\n        \"\"\"\n        if backspace_num > 0:\n            if backspace_num > len(result_command):\n                result_command += pattern_str\n                result_command = result_command[0:-backspace_num]\n            else:\n                result_command = result_command[0:-backspace_num]\n                result_command += pattern_str\n        del_len = len(match_str) - 3\n        if del_len > 0:\n            result_command = result_command[0:-del_len]\n        return result_command, len(match_str)\n\n    @staticmethod\n    def deal_replace_char(match_str, result_command, backspace_num):\n        \"\"\"\n        Deal and replace command\n        \"\"\"\n        str_lists = re.findall(r'(?<=\\x1b\\[1@)\\w', match_str)\n        tmp_str = ''.join(str_lists)\n        result_command_list = list(result_command)\n        if len(tmp_str) > 1:\n            result_command_list[-backspace_num:-\n                                (backspace_num - len(tmp_str))] = tmp_str\n        elif len(tmp_str) > 0:\n            if result_command_list[-backspace_num] == ' ':\n                result_command_list.insert(-backspace_num, tmp_str)\n            else:\n                result_command_list[-backspace_num] = tmp_str\n        result_command = ''.join(result_command_list)\n        return result_command, len(match_str)\n\n    def remove_control_char(self, result_command):\n        \"\"\"\n        deal with special key\n        \"\"\"\n        control_char = re.compile(r\"\"\"\n            \\x1b[ #%()*+\\-.\\/]. |\n            \\r |                                               # enter key(CR)\n            (?:\\x1b\\[|\\x9b) [ -?]* [@-~] |                     # enter control key(CSI)... Cmd\n            (?:\\x1b\\]|\\x9d) .*? (?:\\x1b\\\\|[\\a\\x9c]) | \\x07 |   # enter system control key(OSC)...terminate key(ST|BEL)\n            (?:\\x1b[P^_]|[\\x90\\x9e\\x9f]) .*? (?:\\x1b\\\\|\\x9c) | # enter serial communication key(DCS|PM|APC)...terminate key(ST)\n            \\x1b.                                              # special key\n            [\\x80-\\x9f] | (?:\\x1b\\]0.*) | \\[.*@.*\\][\\$#] | (.*mysql>.*)      # enter every special key\n            \"\"\", re.X)\n        result_command = control_char.sub('', result_command.strip())\n        try:\n            return result_command.decode('utf8', \"ignore\")\n        except:\n            return result_command\n\n    def generate_final_command(self, command):\n        command_res = []\n        index = 0\n        for i,v in enumerate(list(command)):\n            if v == '\\x1b[D':\n                if index > 0:\n                    index -= 1\n            elif v == '\\x1b[C':\n                if index < len(command_res):\n                    index += 1\n            elif v == '\\x7f':\n                if index < len(command_res):\n                    command_res.pop(index-1)\n                    index -= 1\n            elif v == '\\x15':\n                for n in range(0, index):\n                    command.pop(0)\n                index = 0\n            else:\n                command_res.insert(index, v)\n                index += 1\n        return ''.join(command_res)\n\n    def deal_command(self, command):\n        \"\"\"\n        deal with command special key\n        \"\"\"\n        command = self.remove_obstruct_char(command)\n        result_command = ''  # final result\n        backspace_num = 0               # cursor num\n        reach_backspace_flag = False    # detect if there is cursor key\n        pattern_str = ''\n        while command:\n            tmp = re.match(r'\\s*\\w+\\s*', command)\n            if tmp:\n                command = command[len(str(tmp.group(0))):]\n                if reach_backspace_flag:\n                    pattern_str += str(tmp.group(0))\n                    continue\n                else:\n                    result_command += str(tmp.group(0))\n                    continue\n            tmp = re.match(r'\\x1b\\[K[\\x08]*', command)\n            if tmp:\n                result_command, del_len = self.deal_backspace(\n                    str(tmp.group(0)), result_command, pattern_str, backspace_num)\n                reach_backspace_flag = False\n                backspace_num = 0\n                pattern_str = ''\n                command = command[del_len:]\n                continue\n            tmp = re.match(r'\\x08+', command)\n            if tmp:\n                command = command[len(str(tmp.group(0))):]\n                if len(command) != 0:\n                    if reach_backspace_flag:\n                        result_command = result_command[0:-\n                                                        backspace_num] + pattern_str\n                        pattern_str = ''\n                    else:\n                        reach_backspace_flag = True\n                    backspace_num = len(str(tmp.group(0)))\n                    continue\n                else:\n                    break\n            tmp = re.match(r'(\\x1b\\[1@\\w)+', command)\n            if tmp:\n                result_command, del_len = self.deal_replace_char(\n                    str(tmp.group(0)), result_command, backspace_num)\n                command = command[del_len:]\n                backspace_num = 0\n                continue\n            if reach_backspace_flag:\n                pattern_str += command[0]\n            else:\n                result_command += command[0]\n            command = command[1:]\n        if backspace_num > 0:\n            result_command = result_command[0:-backspace_num] + pattern_str\n        result_command = self.remove_control_char(result_command)\n        result_command = self.generate_final_command(result_command)\n        return result_command\n\n\nclass SshTerminalThread(threading.Thread):\n    \"\"\"\n    Thread class with a stop() method. The thread itself has to check\n    regularly for the stopped() condition.\n    \"\"\"\n\n    def __init__(self, websocket, sshchan, opt_name, token, elementid=None, ssh_type=\"host\"):\n        super(SshTerminalThread, self).__init__()\n        self._stop_event = threading.Event()\n        self.ssh_base_component = SSHBaseComponent()\n        self.websocket = websocket\n        self.chan = sshchan\n        self.token = token\n        self.elementid = elementid\n        self.opt_name = opt_name\n        self.queue = self.redis_queue()\n        self.chan.vim_flag = False\n        self.ssh_type = ssh_type  # ssh  mysql  redis  mongo\n\n    def stop(self):\n        self._stop_event.set()\n\n    def stopped(self):\n        return self._stop_event.is_set()\n\n    def redis_queue(self):\n        redis_instance = self.ssh_base_component.get_redis_instance()\n        redis_sub = redis_instance.pubsub()\n        if self.elementid:\n            redis_sub.subscribe(self.elementid.rsplit('_')[0])\n        else:\n            redis_sub.subscribe(self.websocket.channel_name)\n        return redis_sub\n\n    # def check_command(self, command):\n    #     while command.find('  ') >= 0:\n    #         command = command.replace('  ', ' ')\n    #     # Check command\n    #     return True, \"\", \"\", \"\"\n\n    def check_timeout_close(self):\n        # 空闲超时退出\n        try:\n            current_time = time.time()\n            idle_duration = current_time - getattr(self.websocket, 'wait_time', current_time)\n            \n            if int(idle_duration) > settings.TERMINAL_TIMEOUT:\n                # 尝试发送超时提示\n                try:\n                    self.websocket.send(\"\\r\\nTimeout...\\r\\nconnection closed...\")\n                except Exception as e:\n                    # 客户端已断开，无需处理\n                    pass\n                \n                # 尝试主动断开连接\n                try:\n                    self.websocket.disconnect(1001)  # 1001 = going away\n                except Exception as e:\n                    # 已断开或对象无效，忽略\n                    pass\n        \n        except Exception as e:\n            app_logger.warning(f\"Error in check_timeout_close: {e}\")\n    \n    def get_block_info(self, block: dict):\n        block_info = \"\"\n        for key, value in block.items():\n            block_info += \"{}: {}\".format(key, value)\n            block_info += \"\\n\"\n        return block_info\n\n    def _clean_text_data(self, text):\n        text_data = text.get(\"data\")\n        if isinstance(text_data, (str, basestring, unicode, bytes)):\n            # print(\"1. 数据类型是字符串字节进入....\")\n            if isinstance(text_data, bytes):\n                try:\n                    data = ast.literal_eval(text_data.decode('utf8'))\n                except Exception as e:\n                    data = text_data\n            else:\n                try:\n                    data = ast.literal_eval(text_data)\n                except Exception as e:\n                    data = text_data\n        else:\n            data = text_data\n        return data\n\n    def send_large_text_or_bytes(self, text, chunk_size=2048):\n        if isinstance(text, bytes):\n            self.chan.send(text)\n            # print(\"发送字节\", len(str(text)))\n            return \"send-bytes\"\n        else:\n            text = str(text)\n            for i in range(0, len(text), chunk_size):\n                self.chan.send(text[i:i + chunk_size])\n                if i > 1:\n                    time.sleep(0.1)  # 等待一段时间确保数据被处理\n            return \"send-string\"\n\n    def run(self):\n        first_flag = True\n        command = list()\n        try:\n            session_obj = SessionLogModel.objects.get(channel=self.websocket.channel_name)\n        except Exception:\n            # DoesNotExist\n            self.websocket.send(WebSocketStatusCode.CHANNEL_CREATE_ERROR)\n            self.stop()\n            self.websocket.disconnect(1000)\n            return\n        block_flag = True\n        block_type = 0\n        block_info = {}\n        command_history_obj = None\n        while not self._stop_event.is_set():\n            self.check_timeout_close()\n            text = self.queue.get_message()\n            if text:\n                self.websocket.wait_time = time.time()\n                # print(\"tttttttttttttttttttttttttttt\", len(str(text['data'])), type(text['data']), (text['type']), text['data'])\n                data = self._clean_text_data(text)\n                if isinstance(data, (list, tuple)):\n                    if data[0] == 'command':\n                        command.append(data[1])\n                    elif data[0] in ['close', 'exit'] or data[0] in [\"'close'\", \"'exit'\", '\"exit\"']:\n                        try:\n                            self.chan.send('<<<close>>>')  # close flag\n                            break\n                        except OSError:\n                            pass\n                        self.stop()\n                    elif data[0] == 'set_size':\n                        try:\n                            self.chan.resize_pty(\n                                width=data[3], height=data[4], width_pixels=data[1], height_pixels=data[2])\n                        except (TypeError, struct.error, paramiko.SSHException):\n                            pass\n                    elif data[0] in ['stdin', 'stdout']:\n                        if '\\r' not in str(data[1]):\n                            command.append(data[1])\n                        else:\n                            if len(data) >= 3 and data[2] == 'command':\n                                pass\n                        self.chan.send(data[1])\n                else:\n                    try:\n                        try:\n                            new_data = str(data, encoding=\"utf8\")\n                        except:\n                            new_data = str(data)\n                        # command.append(new_data)\n                        app_logger.info(\"{}\".format(new_data))\n                        if self.chan.vim_flag:\n                            # in vim or 多行输入\n                            pass\n                        elif '\\r' in new_data and len(command) > 0 and command[len(command)-1] == '\\\\':\n                            # 多行输入 换行处理\n                            command.pop(len(command)-1)\n                        else:\n                            if not block_flag and block_type == 2:\n                                if new_data.lower() == 'y':\n                                    command_history_obj.status = \"y\"\n                                    command_history_obj.save()\n                                    self.websocket.send(new_data)\n                                    data = '\\r'\n                                elif new_data.lower() == 'n' or new_data == '\\x03':\n                                    if new_data == '\\x03':\n                                        new_data = '^C'\n                                    self.websocket.send(new_data+'\\r')\n                                    self.websocket.send('\\r\\n\\033[31m命令未执行!! \\033[0m')\n                                    data = '\\x03'\n                                else:\n                                    self.websocket.send(new_data+'\\r')\n                                    self.websocket.send(\n                                            '\\r\\n\\033[31m' + self.get_block_info(block_info) + ': [Y/N] \\033[0m'\n                                    )\n                                    continue\n                            # 重置block_flag\n                            block_flag = True\n                            block_type = 0\n                            if new_data == '\\r':\n                                # 特殊控制字符处理\n                                record_command = self.ssh_base_component.deal_command(\n                                        ''.join(command).strip().replace('\\\\\\r', '\\r')\n                                )\n                                if isinstance(record_command, str):\n                                    record_command = str(record_command).encode('utf-16', errors='ignore').decode('utf-16')\n                                # 命令拦截匹配策略\n                                block_flag, block_type, block_info = CheckUserHostComponent().check_command(\n                                        command=record_command.strip(), token=self.token\n                                )\n                                if record_command.strip():\n                                    SessionCommandHistoryModel.create(**{\n                                        \"session_log\": session_obj,\n                                        \"command\": str(record_command).strip()\n                                    })\n                                    if self.ssh_type == \"database\":\n                                        quits = record_command.strip()\n                                        if quits in [\"exit\", \"quit\"] or (\"quit;\" in quits) or (\"exit;\" in quits):\n                                            try:\n                                                self.websocket.send('\\n\\r<<<close>>>')  # close flag\n                                                self.websocket.close_connect()\n                                                self.chan.close()\n                                                break\n                                            except OSError:\n                                                pass\n                                            self.stop()\n                                            break\n                                if not block_flag:\n                                    command_history_obj = CommandLogModel.objects.create(\n                                            command=record_command.strip(),\n                                            block_type=str(block_type),\n                                            intercept_command=record_command.strip(),\n                                            hostname=self.websocket.host.host_address,\n                                            user=self.websocket.user.username,\n                                            login_type=1,\n                                            opt_user=self.websocket.user.username\n                                    )\n                                    command = list()\n                                    if block_type == 2:\n                                        self.websocket.send(\n                                                '\\r\\n\\033[31m' + self.get_block_info(block_info) + ': [Y/N] \\033[0m'\n                                        )\n                                        continue\n                                    elif block_type == 1:\n                                        self.websocket.send(\n                                                '\\r\\n\\033[31m' + self.get_block_info(block_info) + '\\033[0m'\n                                        )\n                                        data = '\\x03'\n                                else:\n                                    if len(record_command) != 0:\n                                        command = list()\n                        if first_flag:\n                            first_flag = False\n                            command = list()\n                        else:\n                            self.send_large_text_or_bytes(data)\n                            # self.chan.send(str(data))\n                    except socket.error:\n                        self.websocket.disconnect(1000)\n                        self.stop()\n            time.sleep(0.001)\n\n\nclass FloatEncoder(json.JSONEncoder):\n    def encode(self, obj):\n        if isinstance(obj, float):\n            return format(obj, '.6f')\n        return json.JSONEncoder.encode(self, obj)\n\n\nclass InterActiveShellThread(threading.Thread):\n    SZ_START = b'rz\\r**\\x18B00000000000000\\r\\x8a'\n    SZ_END = b'**\\x18B0800000000022d\\r\\x8a'\n    RZ_START = b'rz waiting to receive.**\\x18B0100000023be50\\r\\x8a'\n    RZ_END = b'**\\x18B0800000000022d\\r\\x8a'\n    CANCEL = b'\\x18\\x18\\x18\\x18\\x18\\x08\\x08\\x08\\x08\\x08'\n\n    def __init__(self, chan, channel, log_name=None, width=90, height=40, elementid=None, database_client=\"\",\n                 stop_key=\"\"):\n        super(InterActiveShellThread, self).__init__()\n        self.chan = chan\n        self.channel = channel\n        self.log_name = log_name\n        self.width = width\n        self.height = height\n        self.elementid = elementid\n        self.ssh_base_component = SSHBaseComponent()\n        self.database_client = database_client\n        self.database_flag = False\n        self.error_flag = False\n        self.stop_key = stop_key\n        self.database_command = \"\"      # 用于监听用户退出Mysql 命令行\n\n    def make_log_dir(self, path):\n        try:\n            os.makedirs(path)\n        except OSError as exc:\n            if exc.errno == errno.EEXIST:\n                pass\n            else:\n                raise  # The original exception\n\n    def u(self, s, encoding=\"utf8\"):\n        \"\"\"cast bytes or unicode to unicode\"\"\"\n        if isinstance(s, bytes):\n            return s.decode(encoding)\n        elif isinstance(s, str):\n            return s\n        else:\n            raise TypeError(\"Expected unicode or bytes, got {!r}\".format(s))\n\n    def create_log(self, width, height, begin_time, stdout, log_name):\n        attrs = {\n            \"version\": 1,\n            \"width\": width,\n            \"height\": height,\n            \"duration\": round(time.time() - begin_time, 6),\n            \"command\": os.environ.get('SHELL', None),\n            'title': None,\n            \"env\": {\n                \"TERM\": os.environ.get('TERM'),\n                \"SHELL\": os.environ.get('SHELL', 'sh')\n            },\n            'stdout': list(map(lambda frame: [round(frame[0], 6), frame[1]], stdout))\n        }\n        SessionLogInfoModel.create(**{\n            \"log_name\": log_name,\n            \"info\": str(json.dumps(attrs, ensure_ascii=True, cls=FloatEncoder, indent=2)),\n        })\n\n    def handle_sz_end(self, data, channel):\n        if data == b'rz\\r' or data == b'OO':\n            return False\n        else:\n            data = data.replace(b'OO',b'')\n            channel.send(bytes_data=data)\n            return True\n\n    def handle_rz_sz_status(self, data, channel):\n        rz_sz_status = True\n        sz_end = False\n        if self.SZ_END in data or self.RZ_END in data:\n            rz_sz_status = False\n            if self.SZ_END in data:\n                sz_end = True\n        if self.CANCEL in data:\n            rz_sz_status = False\n        channel.send(bytes_data=data)\n        return rz_sz_status, sz_end\n\n    def posix_shell(self, sshchan, channel, log_name=None, width=90, height=40, elementid=None):\n        if not has_termios:\n            sys.exit(1)\n        rz_sz_status = sz_end = False\n        stdout = []\n        command = []\n        begin_time = time.time()\n        last_write_time = {'last_activity_time': begin_time}\n        # session_obj = SessionLog.objects.get(channel=channel.channel_name)\n        session_obj = None\n        database_re = \"^ERROR \\d+ .*?: \\S+\"\n        queue = self.ssh_base_component.get_redis_instance()\n        queue.pubsub()\n        vim_data = ''\n        try:\n            sshchan.settimeout(0)\n            data = None\n            while True:\n                if get_redis_str_data(\"cache\", self.stop_key):\n                    break\n                try:\n                    try:\n                        r, w, x = select.select([sshchan], [], [])\n                    except Exception as e:\n                        pass\n\n                    data = sshchan.recv(102400)\n                    # print(\"dddddddddddddddddddddddd\", data)\n                    if self.database_client:\n                        # app_logger.info(\"self.database_client: ||||{}||||\".format(self.database_client))\n                        # 获取命令行样式\n                        data_str = data.decode(\"utf-8\")\n                        if self.database_client in data_str:\n                            data_str = data_str.split(self.database_client)\n                            if data_str:\n                                data_str = data_str[-1]\n                            # self.database_command = res.split(self.database_client)[0]\n                        # app_logger.info(\"data:||{}||\".format(data.decode(\"utf-8\")))\n                        self.database_flag = True\n                        channel.send(data_str)\n                        continue\n                    if self.database_flag and not self.error_flag:\n                        # if \"ERROR 1045 (28000): Access denied for user\" in data.decode(\"utf-8\"):\n                        if re.match(database_re, data.decode(\"utf-8\")):\n                            self.error_flag = True\n                            self.database_flag = False\n                            data = data.decode(\"utf-8\").split(\"\\r\\n\")[0].encode(\"utf-8\")\n                    elif self.database_flag and self.error_flag:\n                        break\n                    # 该判定还存在缺陷\n                    if self.database_flag and self.database_command.split(\"\\n\")[-1] in data.decode(\"utf-8\"):\n                        break\n                    if sz_end:\n                        sz_end = False\n                        status = self.handle_sz_end(data, channel)\n                        if not status:\n                            continue\n                    else:\n                        if not len(data):\n                            break\n                    if rz_sz_status:\n                        rz_sz_status, sz_end = self.handle_rz_sz_status(data, channel)\n                    else:\n                        if data == b'rz\\r':\n                            continue\n                        if self.SZ_START in data or self.RZ_START in data or b'**\\x18B00000000000000\\r\\x8a\\x11' in data:\n                            rz_sz_status = True\n                            channel.send(bytes_data=data)\n                        else:\n                            if len(data) == 0:\n                                channel.send({'text_data': json.dumps(['disconnect', smart_unicode('\\r\\n*** EOF\\r\\n')])})\n                                break\n                            x = self.u(data)\n                            now = time.time()\n                            delay = now - last_write_time['last_activity_time']\n                            last_write_time['last_activity_time'] = now\n                            if x == \"exit\\r\\n\" or x == \"\\r\\nlogout\\r\\n\" or x == '<<<close>>>':\n                                try:\n                                    channel.send(x)\n                                except Exception as e:\n                                    print(\"posix_shell /bastion/core/terminal/component.py 784\", str(e))\n                                break\n                            else:\n                                re_pro1 = re.compile('\\[.*@.*\\][\\$#]')\n                                re_pro2 = re.compile('\\x1b]0;.*@.*\\x07')\n                                if sshchan.vim_flag:\n                                    # vim_data 持续在Vi中操作数据量会变大\n                                    vim_data += x\n                                    vim_data = vim_data[-500:]\n                                    if re_pro1.search(vim_data):\n                                        sshchan.vim_flag = False\n                                        del vim_data\n                                        # global vim_data\n                                        vim_data = ''\n                                if not sshchan.vim_flag and '\\r\\n' not in x and not re_pro1.search(x) and not re_pro2.search(x):\n                                    # app_logger.debug(\"Line 690 DEBUG {}\".format(str(x)))\n                                    command.append(x)\n                                    queue.publish(channel.channel_name, json.dumps(['command', x]))\n                                elif data == b'\\r\\n> ' and len(command) > 0 and command[len(command)-1] == '\\\\':\n                                    # 多行命令 输入\n                                    command.pop(len(command)-1)\n                                else:\n                                    if len(command) == 0 and '\\\\\\r\\n>' in x and (x.endswith(']# ') or x.endswith(']$ ')):\n                                        # 多行命令 粘贴输入\n                                        command_result = ''.join(x.split('\\\\\\r\\n>')).split('\\r\\n')[0]\n                                    else:\n                                        command_result = self.ssh_base_component.deal_command(''.join(command))\n                                    if len(command_result) != 0:\n                                        if command_result.strip().startswith('vi') or command_result.strip().startswith('fg'):\n                                            sshchan.vim_flag = True\n                                        # CommandLog.objects.create(log=session_obj, command=command_result[0:255])\n                                        # 创建命令日志\n                                        command = []\n                                # stdout 持续使用列表数量递增\n                                if isinstance(x, unicode):\n                                    stdout.append([delay, x])\n                                else:\n                                    stdout.append([delay, codecs.getincrementaldecoder('UTF-8')('replace').decode(x)])\n                            if isinstance(x, unicode):\n                                if elementid:\n                                    channel.send(json.dumps(['stdout', x, elementid.rsplit('_')[0]]))\n                                else:\n                                    try:\n                                        channel.send(str(x))\n                                    except Exception as e:\n                                        pass\n                            else:\n                                if elementid:\n                                    channel_layer.send(channel, {'text_data': json.dumps(\n                                        ['stdout', smart_unicode(x), elementid.rsplit('_')[0]])})\n                                else:\n                                    channel_layer.send(channel, {'bytes_data': data})\n                except socket.timeout as e:\n                    print(\"socket.timeout\", e)\n                    channel.disconnect(1000)\n                    break\n                except UnicodeDecodeError:\n                    channel.send(bytes_data=data)\n                # except Exception as e:\n                #     print(\"Exception\", e)\n                #     try:\n                #         if elementid:\n                #             channel.send(json.dumps(['stdout', 'A bug find,You can report it to me' + smart_unicode(e),\n                #                                      elementid.rsplit('_')[0]]))\n                #         else:\n                #             channel.send(\"\\r\")\n                #     except:\n                #         pass\n        # except Exception as e:\n        #     print(\"finallyfinally\", e)\n        finally:\n            try:\n                channel.send('\\r\\nconnection closed....')\n            except:\n                pass\n            try:\n                channel.close()\n            except:\n                pass\n            sshchan.close()\n            time.sleep(2)\n            self.create_log(width, height, begin_time, stdout, log_name)\n\n    def run(self):\n        self.posix_shell(self.chan, self.channel, self.log_name, self.width, self.height, elementid=self.elementid)\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/migrations/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/models.py",
    "content": "import datetime\n\nfrom django.db.models import Q\n\nfrom django.db import models\nimport logging\n\nfrom bastion.utils.base_model import BaseModel\n\napp_logging = logging.getLogger(\"app\")\n\n\nclass UserConfigModel(BaseModel):\n    # 1 所有用户授权无均可以使用堡垄机 导入全部用户和用户组\n    # 2 仅允许导入的用肩授权后使用堡垒机 导入全部用户和用户组\n    config = models.CharField(max_length=10, default=\"2\", null=True, verbose_name=\"配置\")\n\n\n# 用户体系\nclass UserInfo(BaseModel):\n    phone = models.CharField(max_length=30, null=True, verbose_name=\"手机号\")\n    username = models.CharField(max_length=255, verbose_name=\"用户名\")\n    email = models.CharField(max_length=255, null=True, verbose_name=\"邮箱\")\n    ch_name = models.CharField(max_length=255, null=True, verbose_name=\"中文名\")\n    role = models.IntegerField(verbose_name=\"用户角色\")\n    is_activate = models.BooleanField(default=True)\n    icon_url = models.CharField(max_length=500, default=\"\", verbose_name=\"用户图标\")\n    # 1 .用户 2 组\n    import_from = models.CharField(max_length=10, default=\"1\", verbose_name=\"导入源-用户 组\")\n\n    class Meta:\n        db_table = \"user_info\"\n        verbose_name = \"用户\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['username']),\n            models.Index(fields=['is_activate']),\n        ]\n\n    def to_base_dict(self):\n        return {\n            \"id\": self.id,\n            \"username\": self.username,\n            \"ch_name\": self.ch_name,\n        }\n\n    def check_update_dict(self):\n        dt = {\n            \"ch_name\": self.ch_name,\n            \"phone\": self.phone,\n            \"email\": self.email,\n            \"role\": self.role,\n            # \"is_activate\": self.is_activate\n        }\n        return dt\n\n    def check_update_list(self):\n        li = [self.ch_name, self.phone, self.email, self.role]\n        return li\n\n    def to_dict(self):\n        return {\n            \"id\": self.id,\n            \"phone\": self.phone,\n            \"username\": self.username,\n            \"email\": self.email,\n            \"ch_name\": self.ch_name,\n            \"role\": self.role,\n            \"import_from\": self.import_from,\n            \"icon_url\": self.icon_url\n        }\n\n    def to_user_info_dict(self):\n        dt = {\n            \"phone\": self.phone,\n            \"username\": self.username,\n            \"email\": self.email,\n            \"ch_name\": self.ch_name,\n            \"role\": self.role,\n        }\n        return dt\n\n    def get_user_strategy_access_queryset(self):\n        # strategy_access_user_group_queryset = StrategyAccessUserGroupRelationshipModel.fetch_all(status=True)\n        strategy_access_user_group_queryset = list(self.user_strategy_access.get_queryset())\n        for group_user in self.user_group.get_queryset():\n            strategy_access_user_group_queryset.extend(group_user.user_group.user_group_strategy_access.get_queryset())\n        strategy_access_queryset = list(\n            set([strategy_user.strategy_access for strategy_user in strategy_access_user_group_queryset]))\n        # 校验有效时间和开启状态\n        login_time_open_strategy_access_query = list()\n        for strategy_access_query in strategy_access_queryset:\n            check_time = self.check_strategy_valid(strategy_access_query)\n            if check_time and strategy_access_query not in login_time_open_strategy_access_query:\n                login_time_open_strategy_access_query.append(strategy_access_query)\n        return login_time_open_strategy_access_query\n\n    def get_user_strategy_access_queryset_v3(self):\n        strategy_access_user_group_queryset = list(self.user_strategy_access.get_queryset())\n        for group_user in self.user_group.get_queryset():\n            strategy_access_user_group_queryset.extend(group_user.user_group.user_group_strategy_access.get_queryset())\n        strategy_access_queryset = list(\n            set([strategy_user.strategy_access for strategy_user in strategy_access_user_group_queryset]))\n        # 状态开启，有效期内，登录时段外（登录变灰）\n        login_time_open_strategy_access_query = list()\n        # 状态开启，有效期内，登录时段内（正常）\n        time_frame_open_strategy_access_query = list()\n        for strategy_access_query in strategy_access_queryset:\n            check_time = self.check_strategy_valid_v3(strategy_access_query)\n            # print(\"check_time\", check_time)\n            if check_time and strategy_access_query not in login_time_open_strategy_access_query:\n                login_time_open_strategy_access_query.append(strategy_access_query)\n        return login_time_open_strategy_access_query\n\n    def check_strategy_valid_v3(self, strategy_query):\n        # 0 关闭，不在有效期 1. 在有效期内，不在登录时段内 2 在登录时段内\n        now_datetime = datetime.datetime.now()\n        week_day = datetime.datetime.now().isoweekday()\n        hour = datetime.datetime.now().hour\n        if strategy_query.status:\n            check_time = 1\n        else:\n            return 0\n        start_time = strategy_query.start_time\n        end_time = strategy_query.end_time\n        if start_time and not end_time:\n            if now_datetime > start_time:\n                check_time = 1\n            else:\n                return 0\n        if end_time and not start_time:\n            if now_datetime < end_time:\n                check_time = 1\n            else:\n                return 0\n        if end_time and start_time:\n            if start_time < now_datetime < end_time:\n                check_time = 1\n            else:\n                return 0\n        if not start_time and not end_time:\n            check_time = 1\n        if strategy_query.login_time_limit:\n            try:\n                in_login_time_limit = list()\n                for _login_time_limit in eval(strategy_query.login_time_limit):\n                    if _login_time_limit.get(\"week\") == week_day:\n                        if hour in _login_time_limit.get(\"time\"):\n                            in_login_time_limit.append((week_day, hour))\n                            break\n                if in_login_time_limit:\n                    check_time = 2\n            except Exception as e:\n                return 0\n        return check_time\n\n    def check_strategy_valid(self, strategy_query):\n        now_datetime = datetime.datetime.now()\n        week_day = datetime.datetime.now().isoweekday()\n        hour = datetime.datetime.now().hour\n        check_time = False\n        if strategy_query.status:\n            check_time = True\n        else:\n            return False\n        start_time = strategy_query.start_time\n        end_time = strategy_query.end_time\n        if start_time and not end_time:\n            if now_datetime > start_time:\n                check_time = True\n            else:\n                return False\n        if end_time and not start_time:\n            if now_datetime < end_time:\n                check_time = True\n            else:\n                return False\n        if end_time and start_time:\n            if start_time < now_datetime < end_time:\n                check_time = True\n            else:\n                return False\n        if not start_time and not end_time:\n            check_time = True\n        if strategy_query.login_time_limit:\n            try:\n                in_login_time_limit = list()\n                for _login_time_limit in eval(strategy_query.login_time_limit):\n                    if _login_time_limit.get(\"week\") == week_day:\n                        if hour in _login_time_limit.get(\"time\"):\n                            in_login_time_limit.append((week_day, hour))\n                            break\n                if in_login_time_limit:\n                    check_time = True\n                else:\n                    return False\n            except Exception as e:\n                return False\n        return check_time\n\n    def get_host_credential_queryset(self):\n        strategy_access_queryset = self.get_user_strategy_access_queryset()\n        strategy_access_credential_host_queryset = StrategyAccessCredentialHostModel.fetch_all(\n            strategy_access__in=strategy_access_queryset)\n        host_credential_queryset = [strategy_access_credential_host_query.credential_host for\n                                    strategy_access_credential_host_query in strategy_access_credential_host_queryset if\n                                    strategy_access_credential_host_query.credential_host]\n        credential_group_queryset = [strategy_access_credential_host_query.credential_group for\n                                     strategy_access_credential_host_query in strategy_access_credential_host_queryset\n                                     if\n                                     strategy_access_credential_host_query.credential_group]\n        host_credential_queryset.extend(\n            HostCredentialRelationshipModel.fetch_all(credential_group__in=credential_group_queryset))\n        return list(set(host_credential_queryset))\n\n    def get_host_credential_queryset_v3(self):\n        strategy_access_queryset = self.get_user_strategy_access_queryset_v3()\n        queryset = HostCredentialRelationshipModel.objects.filter(Q(new_credential_host_strategy_access__strategy_access__in=strategy_access_queryset) | Q(credential_group__new_credential_group_strategy_access__strategy_access__in=strategy_access_queryset))\n        return queryset\n        # strategy_access_credential_host_queryset = StrategyAccessCredentialHostModel.fetch_all(\n        #     strategy_access__in=strategy_access_queryset)\n        # host_credential_queryset = [strategy_access_credential_host_query.credential_host for\n        #                             strategy_access_credential_host_query in strategy_access_credential_host_queryset if\n        #                             strategy_access_credential_host_query.credential_host]\n        # credential_group_queryset = [strategy_access_credential_host_query.credential_group for\n        #                              strategy_access_credential_host_query in strategy_access_credential_host_queryset\n        #                              if\n        #                              strategy_access_credential_host_query.credential_group]\n        # host_credential_queryset.extend(\n        #     HostCredentialRelationshipModel.fetch_all(credential_group__in=credential_group_queryset))\n        # return list(set(host_credential_queryset))\n\n    def get_user_credential_queryset(self):\n        # 通过用户查询授权的凭证\n        # 1. 获取访问策略\n        strategy_access_queryset = self.get_user_strategy_access_queryset()\n        credential_strategy_rel_queryset = []\n        credential_group_rel_queryset = []\n        # 2. 获取策略相关凭证\n        for strategy_access in strategy_access_queryset:\n            credential_strategy_rel_queryset.extend(\n                strategy_access.strategy_access_credential_or_credential_group.get_queryset())\n        credential_queryset = [credential_strategy.credential for credential_strategy in\n                               credential_strategy_rel_queryset if credential_strategy.credential]\n        # 3. 获取策略相关凭证组\n        credential_group_queryset = [credential_strategy.credential_group for credential_strategy in\n                                     credential_strategy_rel_queryset if credential_strategy.credential_group]\n        for credential_group in credential_group_queryset:\n            credential_group_rel_queryset.extend(credential_group.credential_group_queryset.get_queryset())\n        # 4. 增加凭证组内凭证\n        for credential_group_query in credential_group_rel_queryset:\n            credential_queryset.append(credential_group_query.credential)\n        return list(set(credential_queryset))\n\n    def get_auth_host_credential_queryset(self):\n        host_credential_queryset = self.get_host_credential_queryset()\n        resource_credential = [host_credential_query for host_credential_query in host_credential_queryset]\n        return resource_credential\n\n    def get_user_host_queryset(self):\n        credential_queryset = self.get_user_credential_queryset()\n        host_credential_queryset = []\n        host_queryset = []\n        for credential in credential_queryset:\n            host_credential_queryset.extend(credential.credential_host.get_queryset())\n        for host_credential in host_credential_queryset:\n            host_queryset.append(host_credential.host)\n        return list(set(host_queryset))\n\n    def get_user_host_queryset_v2(self):\n        # 获取用户授权的主机\n        \"\"\"\n        获取当前用户可以登录的主机，与V3版本有本质的区别，是V3的子集\n        \"\"\"\n        host_credential_queryset = self.get_host_credential_queryset()\n        host_queryset = [host_credential_query.host for host_credential_query in host_credential_queryset]\n        return list(set(host_queryset))\n\n    def get_user_host_queryset_v3(self):\n        # 当有关联策略且状态为开启，时显示列表，否则不显示\n        # 当登录时段被限制时登录按钮变灰，否则正常\n        \"\"\"\n        获取当前用户所有可访问的主机，即使该主机并不再可登陆时间段内\n        \"\"\"\n        host_credential_queryset = self.get_host_credential_queryset_v3()\n        host_queryset = [host_credential_query.host for host_credential_query in host_credential_queryset]\n        return list(set(host_queryset))\n\n    def get_user_host_queryset_search_data_v4(self, group_type=\"host\", search_data=None, all_children_group=None, host_credential_queryset=None):\n        # 当有关联策略且状态为开启，时显示列表，否则不显示\n        # 当登录时段被限制时登录按钮变灰，否则正常\n        \"\"\"\n        获取当前用户所有可访问的主机，即使该主机并不再可登陆时间段内\n        \"\"\"\n        if not host_credential_queryset:\n            host_credential_queryset = []\n        dic = {\"host_credential_or_credential_group__in\": host_credential_queryset, \"resource_type\": group_type, \"group__in\": all_children_group}\n        if search_data:\n            host_queryset = HostModel.objects.filter(Q(host_name__contains=search_data) | Q(host_address__contains=search_data), **dic).distinct()\n        else:\n            host_queryset = HostModel.objects.filter(**dic).distinct()\n        return host_queryset\n\n    def get_user_host_in_group(self, group, search_data=None):\n        host_credential_queryset = self.get_host_credential_queryset_v3()\n        dic = {\"group\": group, \"id__in\": [host_credential.host_id for host_credential in host_credential_queryset]}\n        # .distinct()\n        if search_data:\n            host_queryset = HostModel.objects.filter(Q(host_name__icontains=search_data) | Q(host_address__icontains=search_data), **dic).distinct()\n        else:\n            host_queryset = HostModel.objects.filter(**dic).distinct()\n        return host_queryset\n\n    def get_user_host_in_group_to_group_console(self, group, search_data=None, host_credential_queryset=None):\n        if not host_credential_queryset:\n            host_credential_queryset = []\n        dic = {\"group\": group, \"id__in\": [host_credential.host_id for host_credential in host_credential_queryset]}\n        # .distinct()\n        if search_data:\n            host_queryset = HostModel.objects.filter(Q(host_name__icontains=search_data) | Q(host_address__icontains=search_data), **dic).distinct()\n        else:\n            host_queryset = HostModel.objects.filter(**dic).distinct()\n        return host_queryset\n\n    def get_strategy_command_queryset(self):\n        # 查询命令策略打开，有效期内，生效时间段内全部策略\n        user_strategy_command_queryset = list(self.user_strategy_command.get_queryset())\n        for group_user in self.user_group.get_queryset():\n            user_strategy_command_queryset.extend(group_user.user_group.user_group_strategy_command.get_queryset())\n        all_strategy_command_queryset = [strategy_command_user_group.strategy_command for strategy_command_user_group in\n                                         user_strategy_command_queryset]\n        login_time_open_strategy_command_query = list()\n        for strategy_command_query in all_strategy_command_queryset:\n            check_time = self.check_strategy_command_valid(strategy_command_query)\n            if check_time and strategy_command_query not in login_time_open_strategy_command_query:\n                login_time_open_strategy_command_query.append(strategy_command_query)\n        return login_time_open_strategy_command_query\n\n    def check_strategy_command_valid(self, strategy_query):\n        now_datetime = datetime.datetime.now()\n        week_day = datetime.datetime.now().isoweekday()\n        hour = datetime.datetime.now().hour\n        check_time = False\n        if strategy_query.status:\n            check_time = True\n        else:\n            return False\n        start_time = strategy_query.start_time\n        end_time = strategy_query.end_time\n        if start_time and not end_time:\n            if now_datetime > start_time:\n                check_time = True\n            else:\n                return False\n        if end_time and not start_time:\n            if now_datetime < end_time:\n                check_time = True\n            else:\n                return False\n        if end_time and start_time:\n            if start_time < now_datetime < end_time:\n                check_time = True\n            else:\n                return False\n        if not start_time and not end_time:\n            check_time = True\n        if strategy_query.login_time_limit:\n            try:\n                in_login_time_limit = list()\n                for _login_time_limit in eval(strategy_query.login_time_limit):\n                    if _login_time_limit.get(\"week\") == week_day:\n                        if hour in _login_time_limit.get(\"time\"):\n                            in_login_time_limit.append((week_day, hour))\n                            break\n                if in_login_time_limit:\n                    check_time = True\n                else:\n                    return False\n            except Exception as e:\n                return False\n        return check_time\n\n    def get_strategy_command_queryset_v3(self):\n        # 查询命令策略打开，有效期内（生效时间段无论是否有效都将统计到内）全部策略\n        user_strategy_command_queryset = list(self.user_strategy_command.get_queryset())\n        for group_user in self.user_group.get_queryset():\n            user_strategy_command_queryset.extend(group_user.user_group.user_group_strategy_command.get_queryset())\n        all_strategy_command_queryset = [strategy_command_user_group.strategy_command for strategy_command_user_group in\n                                         user_strategy_command_queryset]\n        login_time_open_strategy_command_query = list()\n        for strategy_command_query in all_strategy_command_queryset:\n            check_time = self.check_strategy_command_valid_v3(strategy_command_query)\n            if check_time and strategy_command_query not in login_time_open_strategy_command_query:\n                login_time_open_strategy_command_query.append(strategy_command_query)\n        return login_time_open_strategy_command_query\n\n    def check_strategy_command_valid_v3(self, strategy_query):\n        now_datetime = datetime.datetime.now()\n        if strategy_query.status:\n            check_time = True\n        else:\n            return False\n        start_time = strategy_query.start_time\n        end_time = strategy_query.end_time\n        if start_time and not end_time:\n            if now_datetime > start_time:\n                check_time = True\n            else:\n                return False\n        if end_time and not start_time:\n            if now_datetime < end_time:\n                check_time = True\n            else:\n                return False\n        if end_time and start_time:\n            if start_time < now_datetime < end_time:\n                check_time = True\n            else:\n                return False\n        if not start_time and not end_time:\n            check_time = True\n        return check_time\n\n\nclass UserUpdateInfo(BaseModel):\n    last_update_time = models.DateTimeField()\n\n    class Meta:\n        db_table = \"update_user_data\"\n\n\n# 用户组\nclass UserGroupModel(BaseModel):\n    name = models.CharField(max_length=128, verbose_name=\"用户组名称\")\n    rbac_group_id = models.IntegerField(null=True)\n    description = models.CharField(max_length=500, unique=False, null=True, blank=True, verbose_name=\"描述\")\n\n    class Meta:\n        db_table = \"user_group\"\n        verbose_name = \"用户组\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description\n        }\n        return dic\n\n    def to_list_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description\n        }\n        all_rel = self.group_user.get_queryset()\n        user_list = []\n        for rel in all_rel:\n            if rel and rel.user:\n                user_list.append({\n                    \"id\": rel.user.id,\n                    \"ch_name\": rel.user.ch_name,\n                    \"username\": rel.user.username,\n                    \"email\": rel.user.email,\n                    \"role\": rel.user.role,\n                    \"phone\": rel.user.phone\n                })\n        dic[\"user_list\"] = user_list\n        return dic\n\n\n# 用户、组关联表\nclass UserGroupRelationshipModel(BaseModel):\n    user_group = models.ForeignKey(UserGroupModel, related_name=\"group_user\", on_delete=models.CASCADE,\n                                   verbose_name=\"组\")\n    user = models.ForeignKey(UserInfo, models.CASCADE, related_name=\"user_group\", db_index=True, verbose_name=\"用户\")\n\n    class Meta:\n        db_table = \"group_user_relationship\"\n        verbose_name = \"用户、组关联表\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"group\": self.user_group.to_dict(),\n            \"user\": self.user.to_dict(),\n        }\n        return dic\n\n\n# 访问策略\nclass StrategyAccessModel(BaseModel):\n    DEFAULT_LOGIN_TIME = [\n        {\"week\": 1, \"time\": []},\n        {\"week\": 2, \"time\": []},\n        {\"week\": 3, \"time\": []},\n        {\"week\": 4, \"time\": []},\n        {\"week\": 5, \"time\": []},\n        {\"week\": 6, \"time\": []},\n        {\"week\": 7, \"time\": []}\n    ]\n    name = models.CharField(max_length=128, verbose_name=\"策略名称\", unique=True)\n    start_time = models.DateTimeField(verbose_name=\"生效时间\", null=True)\n    end_time = models.DateTimeField(verbose_name=\"失效时间\", null=True)\n    file_upload = models.BooleanField(default=False, verbose_name=\"文件上传\")\n    file_download = models.BooleanField(default=False, verbose_name=\"文件下载\")\n    file_manager = models.BooleanField(default=False, verbose_name=\"文件管理\")\n    mfa_status = models.BooleanField(default=False, verbose_name=\"MFA验证\")\n    copy_tool = models.BooleanField(default=False, verbose_name=\"剪切板\")\n    login_time_limit = models.TextField(blank=True, verbose_name=\"登录时段限制\", null=True)\n    # 1 无  2 黑名单  3 白名单\n    ip_limit = models.IntegerField(default=1)\n    limit_list = models.TextField()\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n    status = models.BooleanField(default=True)\n\n    class Meta:\n        db_table = \"strategy_access\"\n        verbose_name = \"访问策略\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['status']),\n        ]\n\n    def get_list_field(self, field):\n        try:\n            if field:\n                return eval(field)\n            else:\n                return []\n        except Exception as e:\n            app_logging.error(\"[ERROR] StrategyAccessModel eval error: {}, param: {}\".format(str(e), str(field)))\n            return []\n\n    def to_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0] if self.create_time else \"\",\n            \"start_time\": str(self.start_time).rsplit(\".\", 1)[0] if self.start_time else \"\",\n            \"end_time\": str(self.end_time).rsplit(\".\", 1)[0] if self.end_time else \"\",\n            \"file_upload\": self.file_upload,\n            \"file_download\": self.file_download,\n            \"mfa_status\": self.mfa_status,\n            \"file_manager\": self.file_manager,\n            \"status\": self.status,\n            \"ip_limit\": self.ip_limit,\n            \"limit_list\": self.get_list_field(self.limit_list),\n            \"login_time_limit\": self.get_list_field(self.login_time_limit) if self.get_list_field(\n                self.login_time_limit) else self.DEFAULT_LOGIN_TIME,\n            \"copy_tool\": self.copy_tool\n        }\n        return dt\n\n    def to_all_dict(self):\n        dt = {\n            \"strategy\": self.to_dict(),\n            \"user\": {\n                \"user\": [],\n                \"user_group\": []\n            },\n            \"credential_host\": {\n                \"ssh_credential_host_id\": [],\n                \"password_credential_host_id\": [],\n                \"credential_group\": []\n            }\n        }\n        if self.strategy_access_user_or_user_group.get_queryset():\n            user_list = []\n            user_group_list = []\n            for _query in self.strategy_access_user_or_user_group.get_queryset():\n                if _query.user:\n                    user_list.append(_query.user.id)\n                if _query.user_group:\n                    user_group_list.append(_query.user_group.id)\n            dt[\"user\"].update({\"user\": user_list})\n            dt[\"user\"].update({\"user_group\": user_group_list})\n        if self.new_strategy_access_credential_or_credential_group.get_queryset():\n            ssh_credential_host = []\n            password_credential_host = []\n            credential_group = []\n            for _query in self.new_strategy_access_credential_or_credential_group.get_queryset():\n                if _query.credential_host:\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_SSH_KEY:\n                        ssh_credential_host.append(_query.credential_host.to_dict())\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                        password_credential_host.append(_query.credential_host.to_dict())\n                if _query.credential_group:\n                    credential_group.append(_query.credential_group.to_base_dict())\n            dt[\"credential_host\"].update({\"ssh_credential_host_id\": ssh_credential_host})\n            dt[\"credential_host\"].update({\"password_credential_host_id\": password_credential_host})\n            dt[\"credential_host\"].update({\"credential_group\": credential_group})\n        return dt\n\n    def _check_start_end_time_access_valid(self):\n        is_valid = False\n        if self.status:\n            start_time = self.start_time\n            end_time = self.end_time\n            now_datetime = datetime.datetime.now()\n            if start_time and not end_time:\n                if now_datetime > start_time:\n                    is_valid = True\n                else:\n                    is_valid = False\n            if end_time and (not start_time):\n                if now_datetime < end_time:\n                    is_valid = True\n                else:\n                    is_valid = False\n            if end_time and start_time:\n                if start_time < now_datetime < end_time:\n                    is_valid = True\n                else:\n                    is_valid = False\n            if (not start_time) and (not end_time):\n                is_valid = True\n        return is_valid\n\n    def to_list_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0] if self.create_time else \"\",\n            \"start_time\": str(self.start_time).rsplit(\".\", 1)[0] if self.start_time else \"\",\n            \"end_time\": str(self.end_time).rsplit(\".\", 1)[0] if self.end_time else \"\",\n            \"file_upload\": self.file_upload,\n            \"file_download\": self.file_download,\n            \"mfa_status\": self.mfa_status,\n            \"file_manager\": self.file_manager,\n            \"status\": self.status,\n            \"is_valid\": self._check_start_end_time_access_valid(),\n            \"ip_limit\": self.ip_limit,\n            \"limit_list\": self.get_list_field(self.limit_list),\n            \"login_time_limit\": self.get_list_field(self.login_time_limit) if self.get_list_field(\n                self.login_time_limit) else self.DEFAULT_LOGIN_TIME,\n            \"copy_tool\": self.copy_tool,\n            \"user\": {\n                \"user\": [],\n                \"user_group\": []\n            },\n            \"credential_host\": {\n                \"ssh_credential_host_id\": [],\n                \"password_credential_host_id\": [],\n                \"credential_group\": []\n            }\n        }\n        if self.strategy_access_user_or_user_group.get_queryset():\n            user_list = []\n            user_group_list = []\n            for _query in self.strategy_access_user_or_user_group.get_queryset():\n                if _query.user:\n                    user_list.append({\"user_id\": _query.user.id, \"user_name\": _query.user.username})\n                if _query.user_group:\n                    user_group_list.append(\n                        {\"user_group_id\": _query.user_group.id, \"user_group_name\": _query.user_group.name})\n            dt[\"user\"].update({\"user\": user_list})\n            dt[\"user\"].update({\"user_group\": user_group_list})\n        if self.new_strategy_access_credential_or_credential_group.get_queryset():\n            ssh_credential_host = []\n            password_credential_host = []\n            credential_group = []\n            for _query in self.new_strategy_access_credential_or_credential_group.get_queryset():\n                if _query.credential_host:\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_SSH_KEY:\n                        ssh_credential_host.append({\"credential_host_id\": _query.credential_host.id})\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                        password_credential_host.append({\"credential_host_id\": _query.credential_host.id})\n                if _query.credential_group:\n                    credential_group.append({\"credential_group_id\": _query.credential_group.id})\n            dt[\"credential_host\"].update({\"ssh_credential_host_id\": ssh_credential_host})\n            dt[\"credential_host\"].update({\"password_credential_host_id\": password_credential_host})\n            dt[\"credential_host\"].update({\"credential_group\": credential_group})\n        return dt\n\n\n# 访问策略关联用户，用户组\nclass StrategyAccessUserGroupRelationshipModel(BaseModel):\n    strategy_access = models.ForeignKey(StrategyAccessModel, on_delete=models.CASCADE, verbose_name=\"关联策略\",\n                                        related_name=\"strategy_access_user_or_user_group\")\n    user = models.ForeignKey(UserInfo, on_delete=models.CASCADE, null=True, blank=True, verbose_name=\"关联用户\",\n                             related_name=\"user_strategy_access\")\n    user_group = models.ForeignKey(UserGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                   verbose_name=\"关联用户组\", related_name=\"user_group_strategy_access\")\n\n    class Meta:\n        db_table = \"strategy_access_user_group_relationship\"\n        verbose_name = \"访问策略关联用户，用户组\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"strategy\": self.strategy_access.to_dict(),\n            \"user\": self.user.to_dict(),\n            \"user_group\": self.user_group.to_dict()\n        }\n        return dic\n\n\n# 命令\nclass CommandModel(BaseModel):\n    command = models.CharField(max_length=255, verbose_name=\"命令名称\")\n    # 1 阻断  2 提醒\n    block_type = models.IntegerField(default=1, verbose_name=\"阻断类型\")\n    block_info = models.CharField(max_length=255, verbose_name=\"阻断提示信息\")\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"command\"\n        verbose_name = \"命令\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['command']),\n            models.Index(fields=['block_type']),\n        ]\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"command\": self.command,\n            \"block_type\": self.block_type,\n            \"block_info\": self.block_info\n        }\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"command\": self.command,\n            \"block_type\": self.block_type,\n            \"block_info\": self.block_info\n        }\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n        if self.get_command_group():\n            dic[\"command_group\"] = self.get_command_group()\n        return dic\n\n    def get_command_group(self):\n        command_group_queryset = self.command_queryset.get_queryset()\n        command_group = [command_group.command_group.to_base_dict() for command_group in command_group_queryset]\n        return command_group\n\n\n# 命令分组\nclass CommandGroupModel(BaseModel):\n    name = models.CharField(max_length=255, verbose_name=\"命令分组名称\")\n    description = models.CharField(max_length=2000, null=True, blank=True, verbose_name=\"描述\")\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"command_group\"\n        verbose_name = \"命令分组\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['name']),\n        ]\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n        }\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        if self.get_command_list():\n            dic[\"command\"] = self.get_command_list()\n        return dic\n\n    def to_all_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        if self.get_command_list():\n            dic[\"command\"] = self.get_command_list()\n        return dic\n\n    def get_command_list(self):\n        return [command_group.command.to_base_dict() for command_group in self.command_group_queryset.get_queryset()]\n\n\n# 命令分组关联\nclass CommandGroupRelationshipModel(BaseModel):\n    command = models.ForeignKey(CommandModel, on_delete=models.CASCADE, related_name=\"command_queryset\",\n                                verbose_name=\"命令\")\n    command_group = models.ForeignKey(CommandGroupModel, on_delete=models.CASCADE,\n                                      related_name=\"command_group_queryset\", null=True, verbose_name=\"命令分组\")\n\n    class Meta:\n        db_table = \"command_group_relationship\"\n        verbose_name = \"命令分组关联\"\n        verbose_name_plural = verbose_name\n        unique_together = ((\"command\", \"command_group\"),)\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"command\": self.command.to_dict(),\n            \"command_group\": self.command_group.to_dict()\n        }\n        return dic\n\n\n# 命令策略\nclass StrategyCommandModel(BaseModel):\n    DEFAULT_LOGIN_TIME = [\n        {\"week\": 1, \"time\": []},\n        {\"week\": 2, \"time\": []},\n        {\"week\": 3, \"time\": []},\n        {\"week\": 4, \"time\": []},\n        {\"week\": 5, \"time\": []},\n        {\"week\": 6, \"time\": []},\n        {\"week\": 7, \"time\": []}\n    ]\n    name = models.CharField(max_length=128, unique=True, verbose_name=\"命令策略名称\")\n    start_time = models.DateTimeField(verbose_name=\"生效时间\", null=True)\n    end_time = models.DateTimeField(verbose_name=\"失效时间\", null=True)\n    login_time_limit = models.TextField(blank=True, verbose_name=\"登录时段限制\")\n    status = models.BooleanField(default=True)\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"strategy_command\"\n        verbose_name = \"命令策略\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['status']),\n        ]\n\n    def get_list_field(self, field):\n        try:\n            if field:\n                return eval(field)\n            else:\n                return []\n        except Exception as e:\n            app_logging.error(\"[ERROR] StrategyCommandModel eval error: {}, param: {}\".format(str(e), str(field)))\n            return []\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"status\": self.status,\n            \"start_time\": str(self.start_time).rsplit(\".\", 1)[0] if self.start_time else \"\",\n            \"end_time\": str(self.end_time).rsplit(\".\", 1)[0] if self.end_time else \"\",\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0] if self.create_time else \"\",\n            \"login_time_limit\": self.get_list_field(self.login_time_limit) if self.get_list_field(\n                self.login_time_limit) else self.DEFAULT_LOGIN_TIME,\n        }\n        return dic\n\n    def to_all_dict(self):\n        dt = {\n            \"strategy\": self.to_dict(),\n            \"user\": {\n                \"user\": [],\n                \"user_group\": []\n            },\n            \"command\": {\n                \"command\": [],\n                \"command_group\": [],\n            },\n            \"credential_host\": {\n                \"ssh_credential_host_id\": [],\n                \"password_credential_host_id\": [],\n                \"credential_group\": []\n            }\n        }\n        if self.strategy_command_user_or_user_group.get_queryset():\n            user_list = []\n            user_group_list = []\n            for _query in self.strategy_command_user_or_user_group.get_queryset():\n                if _query.user:\n                    user_list.append(_query.user.id)\n                if _query.user_group:\n                    user_group_list.append(_query.user_group.id)\n            if user_list:\n                dt[\"user\"].update({\"user\": user_list})\n            if user_group_list:\n                dt[\"user\"].update({\"user_group\": user_group_list})\n        if self.strategy_command_or_group.get_queryset():\n            command_list = []\n            command_group_list = []\n            for _query in self.strategy_command_or_group.get_queryset():\n                if _query.command:\n                    command_list.append(_query.command.id)\n                if _query.command_group:\n                    command_group_list.append(_query.command_group.id)\n            if command_list:\n                dt[\"command\"].update({\"command\": command_list})\n            if command_group_list:\n                dt[\"command\"].update({\"command_group\": command_group_list})\n        if self.new_strategy_command_credential_or_credential_group.get_queryset():\n            ssh_credential_host = []\n            password_credential_host = []\n            credential_group = []\n            for _query in self.new_strategy_command_credential_or_credential_group.get_queryset():\n                if _query.credential_host:\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_SSH_KEY:\n                        ssh_credential_host.append(_query.credential_host.to_dict())\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                        password_credential_host.append(_query.credential_host.to_dict())\n                if _query.credential_group:\n                    credential_group.append(_query.credential_group.to_base_dict())\n            dt[\"credential_host\"].update({\"ssh_credential_host_id\": ssh_credential_host})\n            dt[\"credential_host\"].update({\"password_credential_host_id\": password_credential_host})\n            dt[\"credential_host\"].update({\"credential_group\": credential_group})\n        return dt\n\n    def _check_start_end_time_access_valid(self):\n        is_valid = False\n        if self.status:\n            start_time = self.start_time\n            end_time = self.end_time\n            now_datetime = datetime.datetime.now()\n            if start_time and not end_time:\n                if now_datetime > start_time:\n                    is_valid = True\n                else:\n                    is_valid = False\n            if end_time and (not start_time):\n                if now_datetime < end_time:\n                    is_valid = True\n                else:\n                    is_valid = False\n            if end_time and start_time:\n                if start_time < now_datetime < end_time:\n                    is_valid = True\n                else:\n                    is_valid = False\n            if (not start_time) and (not end_time):\n                is_valid = True\n        return is_valid\n\n    def to_list_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"status\": self.status,\n            \"is_valid\": self._check_start_end_time_access_valid(),\n            \"start_time\": str(self.start_time).rsplit(\".\", 1)[0] if self.start_time else \"\",\n            \"end_time\": str(self.end_time).rsplit(\".\", 1)[0] if self.end_time else \"\",\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0] if self.create_time else \"\",\n            \"login_time_limit\": self.get_list_field(self.login_time_limit) if self.get_list_field(\n                self.login_time_limit) else self.DEFAULT_LOGIN_TIME,\n            \"user\": {\n                \"user\": [],\n                \"user_group\": []\n            },\n            \"command\": {\n                \"command\": [],\n                \"command_group\": [],\n            },\n            \"credential_host\": {\n                \"ssh_credential_host_id\": [],\n                \"password_credential_host_id\": [],\n                \"credential_group\": []\n            }\n        }\n        if self.strategy_command_user_or_user_group.get_queryset():\n            user_list = []\n            user_group_list = []\n            for _query in self.strategy_command_user_or_user_group.get_queryset():\n                if _query.user:\n                    user_list.append({\"user_id\": _query.user.id, \"user_name\": _query.user.username})\n                if _query.user_group:\n                    user_group_list.append(\n                        {\"user_group_id\": _query.user_group.id, \"user_group_name\": _query.user_group.name})\n            dt[\"user\"].update({\"user\": user_list})\n            dt[\"user\"].update({\"user_group\": user_group_list})\n        if self.strategy_command_or_group.get_queryset():\n            command_list = []\n            command_group_list = []\n            for _query in self.strategy_command_or_group.get_queryset():\n                if _query.command:\n                    command_list.append({\"command_id\": _query.command.id})\n                if _query.command_group:\n                    command_group_list.append({\"command_group_id\": _query.command_group.id})\n            dt[\"command\"].update({\"command\": command_list})\n            dt[\"command\"].update({\"command_group\": command_group_list})\n        if self.new_strategy_command_credential_or_credential_group.get_queryset():\n            ssh_credential_host = []\n            password_credential_host = []\n            credential_group = []\n            for _query in self.new_strategy_command_credential_or_credential_group.get_queryset():\n                if _query.credential_host:\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_SSH_KEY:\n                        ssh_credential_host.append({\"credential_host_id\": _query.credential_host.id})\n                    if _query.credential_host.credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                        password_credential_host.append({\"credential_host_id\": _query.credential_host.id})\n                if _query.credential_group:\n                    credential_group.append({\"credential_group_id\": _query.credential_group.id})\n            dt[\"credential_host\"].update({\"ssh_credential_host_id\": ssh_credential_host})\n            dt[\"credential_host\"].update({\"password_credential_host_id\": password_credential_host})\n            dt[\"credential_host\"].update({\"credential_group\": credential_group})\n        return dt\n\n\n# 命令策略关联命令，命令分组\nclass StrategyCommandGroupRelationshipModel(BaseModel):\n    strategy_command = models.ForeignKey(StrategyCommandModel, on_delete=models.CASCADE, verbose_name=\"命令策略\",\n                                         related_name=\"strategy_command_or_group\")\n    command = models.ForeignKey(CommandModel, on_delete=models.CASCADE, null=True, blank=True, verbose_name=\"命令\",\n                                related_name=\"command_strategy\")\n    command_group = models.ForeignKey(CommandGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                      verbose_name=\"命令分组\", related_name=\"command_group_strategy\")\n\n    class Meta:\n        db_table = \"strategy_command_group_relationship\"\n        verbose_name = \"命令策略关联命令，命令分组\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"strategy\": self.strategy_command.to_dict(),\n            \"command\": self.command.to_dict(),\n            \"command_group\": self.command_group.to_dict(),\n        }\n        return dic\n\n\n# 命令策略关联用户，用户分组\nclass StrategyCommandUserGroupRelationshipModel(BaseModel):\n    strategy_command = models.ForeignKey(StrategyCommandModel, on_delete=models.CASCADE, verbose_name=\"关联策略\",\n                                         related_name=\"strategy_command_user_or_user_group\")\n    user = models.ForeignKey(UserInfo, on_delete=models.CASCADE, null=True, blank=True, verbose_name=\"用户\",\n                             related_name=\"user_strategy_command\")\n    user_group = models.ForeignKey(UserGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                   verbose_name=\"用户组\", related_name=\"user_group_strategy_command\")\n\n    class Meta:\n        db_table = \"strategy_command_user_group_relationship\"\n        verbose_name = \"命令策略关联用户，用户组\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"strategy\": self.strategy_command.to_dict(),\n            \"user\": self.user.to_dict(),\n            \"user_group\": self.user_group.to_dict(),\n        }\n        return dic\n\n\n# 凭证分组\nclass CredentialGroupModel(BaseModel):\n    name = models.CharField(max_length=100, verbose_name=\"分组名称\")\n    description = models.CharField(max_length=2000, null=True, blank=True, verbose_name=\"描述\")\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"credential_group\"\n        verbose_name = \"凭证分组\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['name']),\n        ]\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n        }\n        return dic\n\n    def to_list_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"credential\": self.get_base_ssh_password_credential_list(),\n            \"host_list\": self.get_base_host_and_database_count()\n        }\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"credential\": self.get_base_ssh_password_credential_list(),\n        }\n        base_host_list = self.get_base_host_list()\n        if base_host_list:\n            dic[\"host_list\"] = base_host_list\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n        return dic\n\n    def to_all_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"credential\": self.get_ssh_password_credential_list(),\n            \"host_list\": self.get_host_and_database_list()\n        }\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n        return dic\n\n    def get_base_host_list(self):\n        queryset = HostModel.fetch_all(host_credential_or_credential_group__credential_group=self).distinct()\n        host_list = [query.to_base_dict() for query in queryset]\n        return host_list\n\n    def get_base_host_and_database_count(self):\n        queryset = HostModel.fetch_all(host_credential_or_credential_group__credential_group=self).distinct()\n        host_list, database_list = [], []\n        for query in queryset:\n            resource_type = query.resource_type\n            if resource_type == HostModel.RESOURCE_HOST:\n                host_list.append(query)\n            else:\n                database_list.append(query)\n        return {\"host\": len(host_list), \"database\": len(database_list)}\n\n    def get_host_and_database_list(self):\n        queryset = HostModel.fetch_all(host_credential_or_credential_group__credential_group=self).distinct()\n        host_list, database_list = [], []\n        for query in queryset:\n            dic = query.to_credential_group_dict()\n            resource_type = query.resource_type\n            if resource_type == HostModel.RESOURCE_HOST:\n                host_list.append(dic)\n            else:\n                database_list.append(dic)\n        return {\"host\": host_list, \"database\": database_list}\n\n    def get_base_ssh_password_credential_list(self):\n        credential_group_queryset = self.credential_group_queryset.get_queryset()\n        password_credential, ssh_credential = list(), list()\n        for credential_group in credential_group_queryset:\n            if credential_group.credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                password_credential.append(credential_group.credential.to_base_dict())\n            if credential_group.credential.credential_type == CredentialModel.CREDENTIAL_SSH_KEY:\n                ssh_credential.append(credential_group.credential.to_base_dict())\n        return {\"password_credential\": password_credential, \"ssh_credential\": ssh_credential}\n\n    def get_host_list(self):\n        queryset = HostModel.fetch_all(host_credential_or_credential_group__credential_group=self).distinct()\n        host_list = [query.to_dict() for query in queryset]\n        return host_list\n\n    def get_ssh_password_credential_list(self):\n        credential_group_queryset = self.credential_group_queryset.get_queryset()\n        password_credential, ssh_credential = list(), list()\n        for credential_group in credential_group_queryset:\n            if credential_group.credential.credential_type == CredentialModel.CREDENTIAL_PASSWORD:\n                password_credential.append(credential_group.credential.to_dict())\n            if credential_group.credential.credential_type == CredentialModel.CREDENTIAL_SSH_KEY:\n                ssh_credential.append(credential_group.credential.to_dict())\n        return {\"password_credential\": password_credential, \"ssh_credential\": ssh_credential}\n\n\n# 凭证\nclass CredentialModel(BaseModel):\n    LOGIN_AUTO = \"auto\"\n    LOGIN_HAND = \"hand\"\n    CREDENTIAL_PASSWORD = \"password\"\n    CREDENTIAL_SSH_KEY = \"ssh_key\"\n    LOGIN_TYPE = [(LOGIN_AUTO, '自动登录'), (LOGIN_HAND, '手动登录')]\n    CREDENTIAL_TYPE = [(CREDENTIAL_PASSWORD, '密码凭证'), (CREDENTIAL_SSH_KEY, 'SSH秘钥')]\n    name = models.CharField(max_length=100, verbose_name=\"凭证名称\")\n    login_type = models.CharField(max_length=20, choices=LOGIN_TYPE, default=LOGIN_AUTO, verbose_name=\"登录方式\")\n    credential_type = models.CharField(max_length=20, choices=CREDENTIAL_TYPE, default=CREDENTIAL_PASSWORD,\n                                       verbose_name=\"凭证类型\")\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                         verbose_name=\"凭证分组\")\n    login_name = models.CharField(max_length=128, null=True, blank=True, verbose_name=\"资源账户\")\n    login_password = models.CharField(max_length=500, null=True, blank=True, verbose_name=\"密码\")\n    ssh_key = models.TextField(null=True, blank=True, verbose_name=\"SSH Key\")\n    passphrase = models.CharField(max_length=500, null=True, blank=True, verbose_name=\"通行码\")\n    description = models.CharField(max_length=2000, null=True, blank=True, verbose_name=\"描述\")\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"credential\"\n        verbose_name = \"凭证\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['name']),\n            models.Index(fields=['credential_type']),\n            models.Index(fields=['login_name']),\n        ]\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"login_type\": self.login_type,\n            \"credential_type\": self.credential_type,\n            \"login_name\": self.login_name,\n            \"description\": self.description,\n        }\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"login_type\": self.login_type,\n            \"credential_type\": self.credential_type,\n            \"login_name\": self.login_name,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        if self.credential_type == \"password\":\n            if not self.login_password:\n                dic[\"login_password\"] = None\n        elif self.credential_type == \"ssh_key\":\n            if not self.passphrase:\n                dic[\"passphrase\"] = None\n        if self.get_credential_group():\n            dic[\"credential_group\"] = self.get_credential_group()\n        if self.get_host_list:\n            dic.update({\"host_list\": self.get_host_list()})\n        return dic\n\n    def get_credential_group(self):\n        \"\"\"获取当前凭证关联的全部分组\"\"\"\n        credential_group_queryset = self.credential_queryset.get_queryset()\n        credential_group = [credential_group.credential_group.to_base_dict() for credential_group in\n                            credential_group_queryset]\n        return credential_group\n\n    def get_host_list(self):\n        # credential_queryset = self.credential_host.get_queryset()\n        credential_queryset = HostCredentialRelationshipModel.fetch_all(credential=self, credential_group__isnull=True)\n        host_list = [credential_host.host.to_base_dict() for credential_host in credential_queryset]\n        return host_list\n\n\n# 凭证，凭证分组关联表\nclass CredentialGroupRelationshipModel(BaseModel):\n    credential = models.ForeignKey(CredentialModel, on_delete=models.CASCADE, related_name=\"credential_queryset\",\n                                   verbose_name=\"关联凭证\")\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE,\n                                         related_name=\"credential_group_queryset\", null=True, verbose_name=\"关联凭证分组\")\n\n    class Meta:\n        db_table = \"credential_group_relationship\"\n        verbose_name = \"凭证，凭证分组关联表\"\n        verbose_name_plural = verbose_name\n        unique_together = ((\"credential\", \"credential_group\"),)\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"credential\": self.credential.to_base_dict(),\n            \"credential_group\": self.credential_group.to_base_dict(),\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        return dic\n\n\n# 凭证凭证分组关联访问策略\nclass CredentialGroupStrategyAccessRelationshipModel(BaseModel):\n    strategy_access = models.ForeignKey(StrategyAccessModel, on_delete=models.CASCADE, verbose_name=\"关联策略\",\n                                        related_name=\"strategy_access_credential_or_credential_group\")\n    credential = models.ForeignKey(CredentialModel, on_delete=models.CASCADE, null=True, blank=True,\n                                   verbose_name=\"关联凭证\", related_name=\"credential_strategy_access\")\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                         verbose_name=\"关联凭证分组\", related_name=\"credential_group_strategy_access\")\n\n    class Meta:\n        db_table = \"credential_Group_strategy_access_relationship\"\n        verbose_name = \"凭证凭证分组关联访问策略\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"strategy_access\": self.strategy_access.to_dict(),\n            \"credential\": self.credential.to_dict(),\n            \"credential_group\": self.credential_group.to_dict(),\n        }\n        return dic\n\n\n# 凭证凭证分组关联命令策略\nclass CredentialGroupStrategyCommandRelationshipModel(BaseModel):\n    strategy_command = models.ForeignKey(StrategyCommandModel, on_delete=models.CASCADE, verbose_name=\"关联策略\",\n                                         related_name=\"strategy_command_credential_or_credential_group\")\n    credential = models.ForeignKey(CredentialModel, on_delete=models.CASCADE, null=True, blank=True,\n                                   verbose_name=\"关联凭证\", related_name=\"credential_strategy_command\")\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                         verbose_name=\"关联凭证分组\", related_name=\"credential_group_strategy_command\")\n\n    class Meta:\n        db_table = \"credential_Group_strategy_command_relationship\"\n        verbose_name = \"凭证凭证分组关联命令策略\"\n        verbose_name_plural = verbose_name\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"strategy\": self.strategy_command.to_dict(),\n            \"credential\": self.credential.to_dict(),\n            \"credential_group\": self.credential_group.to_dict(),\n        }\n        return dic\n\n\n# 主机分组\nclass HostGroupModel(BaseModel):\n    RESOURCE_HOST = \"host\"\n    RESOURCE_DATABASE = \"database\"\n    RESOURCE_NETWORK = \"network\"\n    RESOURCE_TYPE = [(RESOURCE_HOST, \"主机资源\"), (RESOURCE_DATABASE, \"数据库\"), (RESOURCE_NETWORK, \"Network\")]\n    name = models.CharField(max_length=100, verbose_name=\"主机分组名称\")\n    description = models.CharField(max_length=500, null=True, blank=True, verbose_name=\"描述\")\n    parent = models.ForeignKey(\"self\", on_delete=models.CASCADE, null=True, blank=True, related_name=\"children_group\",\n                               verbose_name=\"上级\")\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n    # host databases\n    group_type = models.CharField(max_length=20, choices=RESOURCE_TYPE, default=RESOURCE_HOST, verbose_name=\"主机分组类型\")\n\n    class Meta:\n        db_table = \"host_group\"\n        verbose_name = \"主机分组\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['name']),\n            models.Index(fields=['group_type']),\n        ]\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name\n        }\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"description\": self.description,\n            \"group_type\": self.group_type,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        if self.get_host_list():\n            dic[\"host\"] = self.get_host_list()\n        return dic\n\n    def to_parent_dict(self, user_query=None, host_credential_queryset=None, group_type=\"host\"):\n        if not host_credential_queryset:\n            host_credential_queryset = []\n        children = []\n        children_query_set = HostGroupModel.fetch_all(parent=self).order_by(\"create_time\")\n        for i in children_query_set:\n            children.append(i.to_parent_dict(user_query, host_credential_queryset, group_type))\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"children\": children\n        }\n        if HostModel.fetch_one(group=self):\n            dic[\"host\"] = True\n        else:\n            dic[\"host\"] = False\n        if user_query:\n            dic[\"count\"] = self.get_group_resource_count_group_console_v3(user_query, None, group_type=group_type, host_credential_queryset=host_credential_queryset)\n        else:\n            dic[\"count\"] = 0\n        return dic\n\n    def get_group_resource_count(self, user_query):\n        # 基础版暂时弃用\n        resource_count = 0\n        all_children_group = self.get_children_group_queryset()\n        if user_query.role == 1:\n            kwargs = {\"resource_type\": self.group_type}\n            kwargs[\"group__in\"] = all_children_group\n            resource_count = HostModel.fetch_all(**kwargs).count()\n        else:\n            resource_queryset = user_query.get_user_host_queryset_v3()\n            for resource_query in resource_queryset:\n                if resource_query.group in all_children_group:\n                    if resource_query.resource_type == self.group_type:\n                        resource_count += 1\n        return resource_count\n\n    def get_group_resource_count_v2(self, user_query, search_data=None, group_type=\"host\"):\n        \"\"\"search_data 主机名 IP 总数\"\"\"\n        all_children_group = self.get_children_group_queryset()\n        if user_query.role == 1:\n            kwargs = {\"resource_type\": self.group_type}\n            kwargs[\"group__in\"] = all_children_group\n            if search_data:\n                resource_queryset = list(HostModel.fetch_all(host_name__contains=search_data, **kwargs)) + list(HostModel.fetch_all(host_address__contains=search_data, **kwargs))\n            else:\n                resource_queryset = HostModel.fetch_all(**kwargs)\n            resource_count = len(list(set(resource_queryset)))\n        else:\n            resource_count = len(user_query.get_user_host_queryset_search_data_v4(group_type, search_data, all_children_group))\n            # resource_queryset = user_query.get_user_host_queryset_v3()\n            # for resource_query in resource_queryset:\n            #     if resource_query.group in all_children_group:\n            #         if resource_query.resource_type == self.group_type:\n            #             if search_data:\n            #                 if search_data in resource_query.host_name:\n            #                     resource_count += 1\n            #                 elif search_data in resource_query.host_address:\n            #                     resource_count += 1\n            #             else:\n            #                 resource_count += 1\n        return resource_count\n\n    def get_group_resource_count_group_console_v3(self, user_query, search_data=None, group_type=\"host\", host_credential_queryset=None):\n        if not host_credential_queryset:\n            host_credential_queryset = []\n        \"\"\"search_data 主机名 IP 总数\"\"\"\n        all_children_group = self.get_children_group_queryset()\n        if user_query.role == 1:\n            kwargs = {\"resource_type\": self.group_type}\n            kwargs[\"group__in\"] = all_children_group\n            if search_data:\n                resource_queryset = list(HostModel.fetch_all(host_name__contains=search_data, **kwargs)) + list(HostModel.fetch_all(host_address__contains=search_data, **kwargs))\n            else:\n                resource_queryset = HostModel.fetch_all(**kwargs)\n            resource_count = len(list(set(resource_queryset)))\n        else:\n            resource_count = len(user_query.get_user_host_queryset_search_data_v4(group_type, search_data, all_children_group, host_credential_queryset))\n        return resource_count\n\n    def to_parent_host_dict(self, **kwargs):\n        children = []\n        children_query_set = HostGroupModel.fetch_all(parent=self, **kwargs).order_by(\"create_time\")\n        for i in children_query_set:\n            children.append(i.to_parent_host_dict())\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"host\": 1,\n            \"children\": children\n        }\n        if self.get_host_list():\n            dic[\"host\"] = self.get_host_list()\n        return dic\n\n    def get_host_list(self):\n        host_group_queryset = self.host_group.get_queryset()\n        return [host.to_dict() for host in host_group_queryset]\n\n    def check_host_dict(self):\n        host_query = HostModel.fetch_one(group=self)\n        if host_query:\n            return True\n        children_query_set = HostGroupModel.fetch_all(parent=self)\n        for children_query in children_query_set:\n            children_host_query = HostModel.fetch_one(group=children_query)\n            if children_host_query:\n                return True\n            else:\n                return children_query.check_host_dict()\n        return False\n\n    def get_children_group_queryset(self):\n        children_group_queryset = [self]\n        query_set = HostGroupModel.fetch_all(parent=self)\n        children_group_queryset.extend(query_set)\n        for children_query in query_set:\n            children_query_set = HostGroupModel.fetch_all(parent=children_query)\n            children_group_queryset.extend(children_query_set)\n            if children_query_set:\n                children_group_queryset += children_query.get_children_group_queryset()\n\n        return list(set(children_group_queryset))\n\n    def get_access_host(self, user_query=None, search_data=None):\n        if search_data:\n            host_queryset = list(HostModel.objects.filter(Q(host_name__contains=search_data) | Q(host_address__contains=search_data), group=self))\n        else:\n            host_queryset = self.host_group.get_queryset()\n        if user_query:\n            host_queryset = user_query.get_user_host_in_group(self, search_data)\n        return list(set(host_queryset))\n\n    def get_access_host_to_group_console(self, user_query=None, search_data=None, host_credential_queryset=None):\n        if host_credential_queryset is None:\n            host_credential_queryset = []\n        if search_data:\n            host_queryset = list(HostModel.objects.filter(Q(host_name__contains=search_data) | Q(host_address__contains=search_data), group=self))\n        else:\n            host_queryset = self.host_group.get_queryset()\n        if user_query:\n            host_queryset = user_query.get_user_host_in_group_to_group_console(self, search_data, host_credential_queryset)\n        return list(set(host_queryset))\n\n    def to_all_dict(self, user_query=None, search_data=None, user=None, host_queryset_v2=None, group_type=\"host\"):\n        dt = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"group_type\": self.group_type,\n            \"key\": self.group_type + \"_group_\" + str(self.id),\n            \"type\": \"group\",\n        }\n        if user:\n            dt[\"count\"] = self.get_group_resource_count_v2(user, search_data, group_type=group_type)\n        else:\n            dt[\"count\"] = 0\n        children = []\n        host_queryset = self.get_access_host(user_query, search_data)\n        if self.children_group.get_queryset():\n            children = [children.to_all_dict(user_query, search_data, user=user, host_queryset_v2=host_queryset_v2, group_type=group_type) for children in\n                        self.children_group.get_queryset()]\n            host_queryset.extend(self.get_access_host(user_query, search_data))\n        for host_query in list(set(host_queryset)):\n            dic = host_query.to_console_dict()\n            if host_queryset_v2:\n                if host_query in host_queryset_v2:\n                    dic[\"disabled\"] = False\n                else:\n                    dic[\"disabled\"] = True\n            else:\n                dic[\"disabled\"] = False\n            children.append(dic)\n        dt[\"children\"] = children\n        return dt\n\n    def to_all_host_group_console_dict(self, user_query=None, search_data=None, user=None, host_queryset_v2=None, group_type=\"host\", host_credential_queryset=None):\n        if not host_credential_queryset:\n            host_credential_queryset = []\n        dt = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"group_type\": self.group_type,\n            \"key\": self.group_type + \"_group_\" + str(self.id),\n            \"type\": \"group\",\n        }\n        if user:\n            dt[\"count\"] = self.get_group_resource_count_group_console_v3(user, search_data, group_type=group_type, host_credential_queryset=host_credential_queryset)\n        else:\n            dt[\"count\"] = 0\n        children = []\n        # host_credential_queryset = user_query.get_host_credential_queryset_v3()\n        host_queryset = self.get_access_host_to_group_console(user_query, search_data, host_credential_queryset)\n        if self.children_group.get_queryset():\n            children = [children.to_all_host_group_console_dict(user_query, search_data, user=user,\n                host_queryset_v2=host_queryset_v2, group_type=group_type,\n                host_credential_queryset=host_credential_queryset) for children in self.children_group.get_queryset()]\n            host_queryset.extend(self.get_access_host_to_group_console(user_query, search_data, host_credential_queryset))\n        for host_query in list(set(host_queryset)):\n            dic = host_query.to_console_dict()\n            if host_queryset_v2:\n                if host_query in host_queryset_v2:\n                    dic[\"disabled\"] = False\n                else:\n                    dic[\"disabled\"] = True\n            else:\n                dic[\"disabled\"] = False\n            children.append(dic)\n        dt[\"children\"] = children\n        return dt\n\n\nclass NetworkProxyModel(BaseModel):\n    CREDENTIAL_PASSWORD = \"password\"\n    CREDENTIAL_SSH_KEY = \"ssh_key\"\n    CREDENTIAL_TYPE = [(CREDENTIAL_PASSWORD, '密码凭证'), (CREDENTIAL_SSH_KEY, 'SSH秘钥')]\n    name = models.CharField(max_length=255, verbose_name=\"网路代理名称\")\n    linux_ip = models.CharField(max_length=150, null=True, blank=True, verbose_name=\"Linux IP地址\")\n    linux_port = models.IntegerField(default=22, null=True, blank=True, verbose_name=\"Linux端口\")\n    linux_login_name = models.CharField(max_length=50, null=True, blank=True, verbose_name=\"Linux登录名\")\n    linux_login_password = models.CharField(max_length=500, null=True, blank=True, verbose_name=\"Linux密码\")\n    linux_timeout = models.IntegerField(default=10, null=True, blank=True, verbose_name=\"Linux超时时间\")\n    credential_type = models.CharField(max_length=20, choices=CREDENTIAL_TYPE, default=CREDENTIAL_PASSWORD,\n                                       verbose_name=\"凭证类型\")\n    ssh_key = models.TextField(null=True, blank=True, verbose_name=\"SSH Key\")\n    passphrase = models.CharField(max_length=500, null=True, blank=True, verbose_name=\"通行码\")\n    # 1 正常 2 未使用 3 异常 4 未知\n    linux_state = models.IntegerField(default=4, null=True, blank=True, verbose_name=\"Linux代理状态\")\n    linux_message = models.TextField(null=True, blank=True, verbose_name=\"Linux信息\")\n\n    windows_ip = models.CharField(max_length=150, null=True, blank=True, verbose_name=\"Windows IP地址\")\n    windows_port = models.IntegerField(default=22, null=True, blank=True, verbose_name=\"Windows端口\")\n    windows_timeout = models.IntegerField(default=10, null=True, blank=True, verbose_name=\"Windows超时时间\")\n    description = models.TextField(max_length=2000, null=True, blank=True, verbose_name=\"网路代理描述\")\n\n    # 1 正常 2 未使用 3 异常 4 未知\n    windows_state = models.IntegerField(default=4, null=True, blank=True, verbose_name=\"Linux代理状态\")\n    windows_message = models.TextField(null=True, blank=True, verbose_name=\"Linux信息\")\n\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"network_proxy\"\n        verbose_name = \"网络代理\"\n        verbose_name_plural = verbose_name\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"credential_type\": self.credential_type\n        }\n        return dic\n\n    def to_check_ping(self, ping_type=\"all\"):\n        dic = {\n            \"id\": self.id,\n            \"linux_ip\": self.linux_ip,\n            \"linux_port\": self.linux_port,\n            \"credential_type\": self.credential_type,\n            \"linux_login_name\": self.linux_login_name,\n            \"linux_login_password\": \"******\",\n            \"passphrase\": \"******\",\n            \"ssh_key\": self.ssh_key,\n            \"windows_ip\": self.windows_ip,\n            \"windows_port\": self.windows_port,\n            \"ping_type\": ping_type,\n        }\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"linux_ip\": self.linux_ip,\n            \"linux_port\": self.linux_port,\n            \"credential_type\": self.credential_type,\n            \"linux_login_name\": self.linux_login_name,\n            # \"linux_login_password\": self.linux_login_password,\n            \"windows_ip\": self.windows_ip,\n            \"windows_port\": self.windows_port,\n            \"description\": self.description,\n            \"linux_state\": self.linux_state,\n            \"linux_message\": self.linux_message,\n            \"windows_state\": self.windows_state,\n            \"windows_message\": self.windows_message,\n        }\n        if self.linux_login_password:\n            dic[\"linux_login_password\"] = \"******\"\n        if self.ssh_key:\n            dic[\"ssh_key\"] = \"******\"\n        if self.passphrase:\n            dic[\"passphrase\"] = \"******\"\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n\n        if HostModel.fetch_all(network_proxy=self):\n            dic[\"resource\"] = True\n        else:\n            dic[\"resource\"] = False\n        return dic\n\n    def to_safe_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.name,\n        }\n        return dic\n\n\nclass EquipmentTypeCMDBModel(BaseModel):\n    name = models.CharField(max_length=255, verbose_name=\"cmdb网络设备名称\")\n    code = models.CharField(max_length=255, verbose_name=\"cmdb网络设备唯一标识\")\n    built_in = models.BooleanField(default=False, verbose_name=\"是否内置\")\n    islet = models.BooleanField(default=False, verbose_name=\"孤岛数据\")\n\n    class Meta:\n        db_table = 'equipment_type'\n        # verbose_name = \"设备类型（CMDB设备类型分组）\"\n\n        indexes = [\n            models.Index(fields=['name']),\n            models.Index(fields=['code']),\n            models.Index(fields=['built_in']),\n            models.Index(fields=['islet']),\n        ]\n\n    def to_base_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"name\": self.name,\n            \"code\": self.code,\n            \"built_in\": self.built_in,\n            \"islet\": self.islet\n        }\n        return dt\n\n\n# 主机资源\nclass HostModel(BaseModel):\n    # DATABASES_MYSQL = \"MySQL\"\n    # DATABASES_MongoDB = \"MongoDB\"\n    # DATABASES_Redis = \"Redis\"\n    # DATABASES_TYPE = [(DATABASES_MYSQL, \"MYSQL\"), (DATABASES_MongoDB, \"MongoDB\"), (DATABASES_Redis, \"Redis\")]\n    SYSTEM_LINUX = \"Linux\"\n    SYSTEM_WINDOWS = \"Windows\"\n    SYSTEM_TYPE = [(SYSTEM_LINUX, 'Linux'), (SYSTEM_WINDOWS, 'Windows')]\n    PROTOCOL_SSH = \"SSH\"\n    PROTOCOL_RDP = \"RDP\"\n    PROTOCOL_TELNET = \"Telnet\"\n    PROTOCOL_VNC = \"VNC\"\n    PROTOCOL_TYPE = [(PROTOCOL_SSH, 'SSH'), (PROTOCOL_RDP, 'RDP'), (PROTOCOL_TELNET, 'Telnet'), (PROTOCOL_VNC, 'VNC')]\n    RESOURCE_HOST = \"host\"\n    RESOURCE_DATABASE = \"database\"\n    RESOURCE_NETWORK = \"network\"\n    RESOURCE_TYPE = [(RESOURCE_HOST, \"主机资源\"), (RESOURCE_DATABASE, \"数据库\"), (RESOURCE_NETWORK, \"Network\")]\n\n    host_name_code = models.CharField(max_length=200, default=\"\", verbose_name=\"主机唯一标识\")\n    host_name = models.CharField(max_length=100, verbose_name=\"主机名称\")\n    # mysql mongodb redis\n    database_type = models.CharField(max_length=20, null=True, blank=True, verbose_name=\"数据库类型\")\n    system_type = models.CharField(max_length=20, choices=SYSTEM_TYPE, default=SYSTEM_LINUX, verbose_name=\"系统类型\")\n    # 1: 路由器 2： 交换机 3 防火墙\n    network_type = models.CharField(max_length=128, null=True, blank=True, verbose_name=\"网络设备类型\")\n    protocol_type = models.CharField(max_length=20, choices=PROTOCOL_TYPE, default=PROTOCOL_SSH, verbose_name=\"协议类型\")\n    host_address = models.CharField(max_length=150, verbose_name=\"主机地址\")\n    # hand 手动添加 cmdb 资源平台添加 cmdb_batch 资源批量添加 excel_batch 表格批量添加 control 管控自动导入\n    resource_from = models.CharField(max_length=30, default=\"hand\", null=True, blank=True, verbose_name=\"数据来源\")\n    port = models.IntegerField(default=22, verbose_name=\"端口\")\n    group = models.ForeignKey(HostGroupModel, on_delete=models.CASCADE, related_name=\"host_group\", verbose_name=\"所属分组\")\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n    description = models.CharField(max_length=3000, null=True, blank=True, verbose_name=\"主机描述\")\n    # host database network\n    resource_type = models.CharField(max_length=20, choices=RESOURCE_TYPE, default=RESOURCE_HOST, verbose_name=\"资源类型\")\n    network_proxy = models.ForeignKey(NetworkProxyModel, on_delete=models.SET_NULL, null=True, blank=True, related_name=\"network_proxy\")\n\n    class Meta:\n        db_table = \"host\"\n        verbose_name = \"主机资源\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['host_name_code']),\n            models.Index(fields=['host_name']),\n            models.Index(fields=['database_type']),\n            models.Index(fields=['system_type']),\n            models.Index(fields=['network_type']),\n            models.Index(fields=['protocol_type']),\n            models.Index(fields=['host_address']),\n            models.Index(fields=['port']),\n            models.Index(fields=['resource_type']),\n        ]\n\n    def to_base_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            \"host_address\": self.host_address,\n            \"resource_type\": self.resource_type,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        if self.network_proxy:\n            dic[\"network_proxy\"] = self.network_proxy.to_base_dict()\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        return dic\n\n    def to_credential_group_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            \"host_address\": self.host_address,\n            \"resource_from\": self.resource_from,\n            \"port\": self.port,\n            \"group\": self.group.to_base_dict(),\n            \"resource_type\": self.resource_type,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n        }\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        return dic\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            \"host_address\": self.host_address,\n            \"resource_from\": self.resource_from,\n            \"port\": self.port,\n            \"group\": self.group.to_base_dict(),\n            \"resource_type\": self.resource_type,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"credential\": self.get_base_credential_or_credential_group(),\n            # \"credential\": self.get_base_credential_or_credential_group_v2(),\n        }\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n        if self.network_proxy:\n            dic[\"network_proxy\"] = self.network_proxy.to_base_dict()\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        return dic\n\n    def to_network_proxy_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            \"host_address\": self.host_address,\n            \"resource_type\": self.resource_type,\n            \"description\": self.description,\n        }\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        return dic\n\n    def to_auth_host_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            \"host_address\": self.host_address,\n            \"port\": self.port,\n            \"resource_type\": self.resource_type,\n            \"group\": self.group.to_base_dict(),\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n        }\n        if self.network_proxy:\n            dic[\"network_proxy\"] = self.network_proxy.to_base_dict()\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        return dic\n\n    def to_console_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"name\": self.host_name,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            \"host_address\": self.host_address,\n            \"resource_from\": self.resource_from,\n            \"type\": \"host\",\n            \"key\": \"host_\" + str(self.id),\n            \"port\": self.port,\n            \"group\": self.group.to_base_dict(),\n            \"resource_type\": self.resource_type,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n        }\n        if self.network_proxy:\n            dic[\"network_proxy\"] = self.network_proxy.to_base_dict()\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        return dic\n\n    def get_all_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host_name\": self.host_name,\n            \"host_name_code\": self.host_name_code,\n            # \"system_type\": self.system_type,\n            # \"protocol_type\": self.protocol_type,\n            \"host_address\": self.host_address,\n            \"resource_from\": self.resource_from,\n            \"port\": self.port,\n            \"group\": self.group.to_base_dict(),\n            \"resource_type\": self.resource_type,\n            \"description\": self.description,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0],\n            \"credential\": self.get_base_credential_or_credential_group(),\n            # \"credential\": self.get_base_credential_or_credential_group_v2(),\n        }\n        if self.network_proxy:\n            dic[\"network_proxy\"] = self.network_proxy.to_base_dict()\n        if self.resource_type == self.RESOURCE_HOST:\n            dic[\"system_type\"] = self.system_type\n            dic[\"protocol_type\"] = self.protocol_type\n        elif self.resource_type == self.RESOURCE_DATABASE:\n            dic[\"database_type\"] = self.database_type\n        elif self.resource_type == self.RESOURCE_NETWORK:\n            dic[\"network_type\"] = self.network_type\n            dic[\"protocol_type\"] = self.protocol_type\n        if self.user:\n            dic[\"user\"] = self.user.to_base_dict()\n        return dic\n\n    def get_base_credential_or_credential_group(self):\n        credential_or_credential_group = dict()\n        password_credential_list, ssh_credential_list, credential_group_list = list(), list(), list()\n        for _query in self.host_credential_or_credential_group.get_queryset().order_by(\"-update_time\"):\n            if _query.credential and not _query.credential_group:\n                if _query.credential.credential_type == _query.credential.CREDENTIAL_SSH_KEY:\n                    ssh_credential_list.append(_query.credential.to_base_dict())\n                if _query.credential.credential_type == _query.credential.CREDENTIAL_PASSWORD:\n                    password_credential_list.append(_query.credential.to_base_dict())\n            if _query.credential_group:\n                if _query.credential_group.to_base_dict() not in credential_group_list:\n                    credential_group_list.append(_query.credential_group.to_base_dict())\n        if password_credential_list:\n            credential_or_credential_group[\"password_credential\"] = password_credential_list\n        if ssh_credential_list:\n            credential_or_credential_group[\"ssh_credential\"] = ssh_credential_list\n        if credential_group_list:\n            credential_or_credential_group[\"credential_group\"] = credential_group_list\n        return credential_or_credential_group\n\n    def get_base_credential_or_credential_group_v2(self):\n        credential_or_credential_group = dict()\n        password_credential_list, ssh_credential_list, credential_group_list = list(), list(), list()\n        for _query in self.host_credential_or_credential_group.get_queryset():\n            if _query.credential and not _query.credential_group:\n                if _query.credential.credential_type == _query.credential.CREDENTIAL_SSH_KEY:\n                    ssh_credential_list.append(_query.credential.id)\n                if _query.credential.credential_type == _query.credential.CREDENTIAL_PASSWORD:\n                    password_credential_list.append(_query.credential.id)\n            if _query.credential_group:\n                if _query.credential_group.to_base_dict() not in credential_group_list:\n                    credential_group_list.append(_query.credential_group.id)\n        if password_credential_list:\n            credential_or_credential_group[\"password_credential\"] = password_credential_list\n        if ssh_credential_list:\n            credential_or_credential_group[\"ssh_credential\"] = ssh_credential_list\n        if credential_group_list:\n            credential_or_credential_group[\"credential_group\"] = credential_group_list\n        return credential_or_credential_group\n\n    def get_all_credential_queryset(self):\n        credential_queryset = list()\n        for _query in self.host_credential_or_credential_group.get_queryset():\n            if _query.credential:\n                credential_queryset.append(_query.credential)\n            if _query.credential_group:\n                for credential_group in _query.credential_group.credential_group_queryset.get_queryset():\n                    credential_queryset.append(credential_group.credential)\n        return credential_queryset\n\n\n# 主机与凭证，凭证组关联\nclass HostCredentialRelationshipModel(BaseModel):\n    host = models.ForeignKey(HostModel, related_name=\"host_credential_or_credential_group\", on_delete=models.CASCADE)\n    credential = models.ForeignKey(CredentialModel, on_delete=models.CASCADE, related_name=\"credential_host\", null=True,\n                                   blank=True)\n    # 前端回显\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE,\n                                         related_name=\"credential_group_host\", null=True, blank=True)\n    user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, null=True, verbose_name=\"创建人\")\n\n    class Meta:\n        db_table = \"host_credential_relationship\"\n        verbose_name = \"主机与凭证，凭证组关联\"\n        verbose_name_plural = verbose_name\n        unique_together = ((\"host\", \"credential\", \"credential_group\"),)\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"host\": self.host.to_dict()\n        }\n        if self.credential:\n            dic[\"credential\"] = self.credential.to_base_dict()\n        if self.credential_group:\n            dic[\"credential_group\"] = self.credential_group.to_base_dict()\n        return dic\n\n    def to_base_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"host_name\": self.host.host_name,\n            \"credential_name\": self.credential.name,\n            \"host_address\": self.host.host_address,\n            \"credential_type\": self.credential.credential_type,\n            \"login_type\": self.credential.login_type,\n            \"login_name\": self.credential.login_name,\n            \"update_time\": str(self.update_time).rsplit(\".\", 1)[0] if self.update_time else \"\",\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0] if self.create_time else \"\",\n        }\n        return dt\n\n\n# 操作日志\nclass OperationLogModel(BaseModel):\n    username = models.CharField(max_length=100, verbose_name=\"操作人用户名\")\n    operation_type = models.CharField(max_length=50, verbose_name=\"操作类型\")\n    operation_object = models.CharField(max_length=100, verbose_name=\"操作对象\")\n    operation_content = models.CharField(max_length=5000, verbose_name=\"操作内容\")\n    parameter = models.TextField(null=True, blank=True, verbose_name=\"参数\")\n    method = models.CharField(max_length=20, null=True, blank=True, verbose_name=\"请求方式\")\n\n    class Meta:\n        db_table = \"operation_log\"\n        verbose_name = \"操作日志\"\n        verbose_name_plural = verbose_name\n\n        indexes = [\n            models.Index(fields=['username']),\n            models.Index(fields=['operation_type']),\n            models.Index(fields=['operation_object']),\n            models.Index(fields=['method']),\n        ]\n\n    def to_dict(self):\n        dic = {\n            \"id\": self.id,\n            \"username\": self.username,\n            \"operation_type\": self.operation_type,\n            \"operation_object\": self.operation_object,\n            \"operation_content\": self.operation_content,\n            \"parameter\": self.parameter,\n            \"method\": self.method,\n            \"create_time\": str(self.create_time).rsplit(\".\")[0]\n        }\n        return dic\n\n\n# 会话日志\nclass SessionLogModel(BaseModel):\n    host = models.ForeignKey(HostModel, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=\"主机\")\n    channel = models.CharField(max_length=100, verbose_name=\"通道名\", blank=False, unique=True, editable=False)\n    log_name = models.CharField(max_length=100, verbose_name=\"日志名\", blank=False, unique=False, editable=False)\n    host_name = models.CharField(max_length=100, verbose_name=\"主机名称\", blank=True, null=True)\n    system_type = models.CharField(max_length=100, verbose_name=\"系统类型\", default=\"Linux\")\n    host_address = models.CharField(max_length=100, verbose_name=\"主机地址\", blank=True, null=True)\n    port = models.IntegerField(default=22, verbose_name=\"端口\")\n    protocol_type = models.CharField(max_length=20, blank=True, null=True, verbose_name=\"协议类型\")\n    login_name = models.CharField(max_length=100, verbose_name=\"系统用户\", blank=True, null=True)\n    # 1 正常登陆     2 临时登陆\n    login_type = models.IntegerField(default=1)\n    start_time = models.DateTimeField(auto_now_add=True, verbose_name=\"开始时间\")\n    end_time = models.DateTimeField(auto_created=True, auto_now=True, verbose_name=\"结束时间\")\n    is_finished = models.BooleanField(default=False, verbose_name=\"是否完成\")\n    user = models.CharField(max_length=100, verbose_name=\"用户名\", blank=False, unique=False)\n    width = models.PositiveIntegerField(default=1024, verbose_name=\"宽度\")\n    height = models.PositiveIntegerField(default=768, verbose_name=\"高度\")\n    guacamole_client_id = models.CharField(max_length=100, verbose_name=\"Gucamole通道名称\", blank=True, editable=False)\n    # TAG CHOICE: [init, connect]\n    tag = models.CharField(max_length=100, verbose_name=\"标签\", blank=True, null=True)\n\n    class Meta:\n        db_table = \"session_log\"\n        verbose_name = \"会话日志\"\n        verbose_name_plural = verbose_name\n        ordering = [\n            ('-start_time')\n        ]\n\n        indexes = [\n            models.Index(fields=['channel']),\n            models.Index(fields=['log_name']),\n            models.Index(fields=['host_address']),\n            models.Index(fields=['login_name']),\n            models.Index(fields=['is_finished']),\n            models.Index(fields=['user']),\n        ]\n\n    def to_dict(self):\n        dt = {\n            \"id\": self.id,\n            \"channel\": self.channel,\n            \"log_name\": self.log_name,\n            \"host_name\": self.host_name,\n            \"system_type\": self.system_type,\n            \"port\": self.port,\n            \"protocol_type\": self.protocol_type,\n            \"host_address\": self.host_address,\n            \"login_name\": self.login_name,\n            \"width\": self.width,\n            \"height\": self.height,\n            \"start_time\": self.start_time.strftime(\"%Y-%m-%d %H:%M:%S\"),\n            \"end_time\": self.end_time.strftime(\"%Y-%m-%d %H:%M:%S\"),\n            \"is_finished\": self.is_finished,\n            \"user\": self.user,\n        }\n        if self.host:\n            dt[\"host_name\"] = self.host.host_name\n            dt[\"system_type\"] = self.host.system_type\n            dt[\"host_address\"] = self.host.host_address\n            dt[\"port\"] = self.host.port\n            dt[\"protocol_type\"] = self.host.protocol_type\n            dt[\"resource_type\"] = self.host.resource_type\n\n        return dt\n\n\nclass SessionCommandHistoryModel(BaseModel):\n    session_log = models.ForeignKey(SessionLogModel, on_delete=models.CASCADE)\n    command = models.TextField()\n\n    class Meta:\n        db_table = \"session_command_history\"\n\n    def to_dict(self):\n        return {\n            \"id\": self.id,\n            \"session_log_id\": self.session_log.id,\n            \"command\": self.command,\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0],\n        }\n\n\n# 命令日志\nclass CommandLogModel(BaseModel):\n    command = models.CharField(max_length=255, verbose_name=\"指令\")\n    block_type = models.CharField(max_length=8, null=True, verbose_name=\"阻断类型\")\n    intercept_command = models.CharField(max_length=255, null=True)\n    status_choice = [('y', '执行'), ('n', '未执行')]\n    status = models.CharField(max_length=8, choices=status_choice, default='n', verbose_name=\"指令是否执行\")\n    hostname = models.CharField(max_length=255, verbose_name=\"服务器IP\")\n    user = models.CharField(max_length=128, null=True, verbose_name=\"用户名\")\n    opt_user = models.CharField(max_length=128, null=True, verbose_name=\"操作用户\")\n    login_type = models.IntegerField(default=1, null=True)\n\n    class Meta:\n        db_table = \"command_log\"\n        verbose_name = \"命令日志\"\n        verbose_name_plural = verbose_name\n        ordering = [\n            ('-create_time')\n        ]\n\n        indexes = [\n            models.Index(fields=['command']),\n            models.Index(fields=['block_type']),\n            models.Index(fields=['intercept_command']),\n            models.Index(fields=['status']),\n            models.Index(fields=['hostname']),\n            models.Index(fields=['user']),\n            models.Index(fields=['opt_user']),\n        ]\n\n    def __unicode__(self):\n        return self.command\n\n    def __str__(self):\n        return self.command\n\n    def to_dict(self):\n        return {\n            \"id\": self.id,\n            \"block_type\": self.block_type,\n            \"intercept_command\": self.intercept_command,\n            \"command\": self.command,\n            \"status\": self.status,\n            \"hostname\": self.hostname,\n            \"user\": self.user,\n            \"opt_user\": self.opt_user,\n            \"create_time\": str(self.create_time).rsplit(\".\", 1)[0],\n        }\n\n\n# 访问策略关联   凭证与主机的中间关系   替代CredentialGroupStrategyAccessRelationshipModel\nclass StrategyAccessCredentialHostModel(BaseModel):\n    strategy_access = models.ForeignKey(StrategyAccessModel, on_delete=models.CASCADE, verbose_name=\"关联策略\",\n                                        related_name=\"new_strategy_access_credential_or_credential_group\")\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                         verbose_name=\"关联凭证分组\", related_name=\"new_credential_group_strategy_access\")\n    credential_host = models.ForeignKey(HostCredentialRelationshipModel, on_delete=models.CASCADE, null=True,\n                                        related_name=\"new_credential_host_strategy_access\")\n\n    def to_dict(self):\n        dt = {\n            \"id\": self.id,\n        }\n        if self.credential_host:\n            dt[\"credential_host\"] = self.credential_host.to_base_dict()\n        if self.credential_group:\n            dt[\"credential_group\"] = self.credential_group.to_base_dict()\n        return dt\n\n\n# 命令策略关联   凭证与主机的中间关系      替代CredentialGroupStrategyCommandRelationshipModel\nclass StrategyCommandCredentialHostModel(BaseModel):\n    strategy_command = models.ForeignKey(StrategyCommandModel, on_delete=models.CASCADE, verbose_name=\"关联策略\",\n                                         related_name=\"new_strategy_command_credential_or_credential_group\")\n    credential_host = models.ForeignKey(HostCredentialRelationshipModel, on_delete=models.CASCADE, null=True,\n                                        related_name=\"new_credential_strategy_command\")\n    credential_group = models.ForeignKey(CredentialGroupModel, on_delete=models.CASCADE, null=True, blank=True,\n                                         verbose_name=\"关联凭证分组\", related_name=\"new_credential_group_strategy_command\")\n\n    def to_dict(self):\n        dt = {\n            \"id\": self.id,\n        }\n        if self.credential_host:\n            dt[\"credential_host\"] = self.credential_host.to_base_dict()\n        if self.credential_group:\n            dt[\"credential_group\"] = self.credential_group.to_base_dict()\n        return dt\n\n\nclass SessionLogInfoModel(BaseModel):\n    log_name = models.CharField(max_length=128)\n    info = models.TextField()\n\n    class Meta:\n        db_table = \"session_log_info\"\n\n        indexes = [\n            models.Index(fields=['log_name']),\n        ]\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/routing.py",
    "content": "from django.urls import path\n\nfrom channels.auth import AuthMiddlewareStack\nfrom channels.routing import ProtocolTypeRouter, URLRouter\n\nfrom bastion.core.consumers import WebSSH\nfrom bastion.core.consumers_database_shell import Database\nfrom bastion.core.consumers_database_redis_web import DatabaseRedisWeb\nfrom bastion.core.consumers_database_mysql_web import DatabaseMysqlWeb\nfrom bastion.core.consumers_network import GuacamoleNetWorkWebsocket\nfrom bastion.core.consumers_windows import GuacamoleWebsocket\nfrom bastion.core.consumers_namespace_pod import PodConsumer\n\nwebsocket_urlpatterns = [\n    # 堡垒机登录\n    path('ws/bastion/terminalchannel/', WebSSH.as_asgi()), \n    path('ws/bastion/guacamole/', GuacamoleWebsocket.as_asgi()),\n    path('ws/bastion/network/guacamole/', GuacamoleNetWorkWebsocket.as_asgi()), \n    path('ws/bastion/databases/', Database.as_asgi()), \n    path('ws/bastion/databases/web/', DatabaseMysqlWeb.as_asgi()),\n    path('ws/bastion/database/mysql/web/', DatabaseMysqlWeb.as_asgi()), \n    path('ws/bastion/database/redis/web/', DatabaseRedisWeb.as_asgi()), \n    \n    # k8s容器登录\n    path('ws/bastion/namespace/pod/container/login/', PodConsumer.as_asgi()),\n]\napplication = ProtocolTypeRouter({\n    # (http->django views is added by default)\n    'websocket': AuthMiddlewareStack(\n        URLRouter(\n            websocket_urlpatterns\n        )\n    ),\n})\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/tests.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/utils/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/bastion/utils/base_model.py",
    "content": "from django.db import models\nimport datetime\n\n\nclass BaseModel(models.Model):\n    create_time = models.DateTimeField(auto_now_add=True)  # 修改为 auto_now_add=True\n    update_time = models.DateTimeField(auto_now=True)  # 修改为 auto_now=True\n\n    class Meta:\n        abstract = True\n        ordering = [\"-create_time\", \"-update_time\"]\n\n    def __str__(self):\n        return '<{} {}>'.format(self.__class__.__name__, self.pk)\n\n    def __repr__(self):\n        return '<{} {}>'.format(self.__class__.__name__, self.pk)\n\n    @classmethod\n    def create(cls, **kwargs):\n        kwargs[\"create_time\"] = datetime.datetime.now()\n        kwargs[\"update_time\"] = datetime.datetime.now()\n        obj = cls(**kwargs)\n        obj.save()\n        return obj\n\n    def update(self, **kwargs):\n        kwargs['update_time'] = datetime.datetime.now()\n        for k, v in kwargs.items():\n            setattr(self, k, v)\n        self.save()\n        return self\n\n    @classmethod\n    def fetch_all(cls, **kwargs):\n        return cls.objects.filter(**kwargs).order_by(\"-create_time\")\n\n    @classmethod\n    def fetch_one(cls, **kwargs):\n        return cls.objects.filter(**kwargs).first()\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/utils/constants.py",
    "content": "import re\n\n# 内网正则校验\nPRIVATE_IP_PATTERN = re.compile(r'^(127\\.0\\.0\\.1)|(localhost)|(10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})|(172\\.((1[6-9])|(2\\d)|(3[01]))\\.\\d{1,3}\\.\\d{1,3})|(192\\.168\\.\\d{1,3}\\.\\d{1,3})$')\n# IP正则校验\nIP_PATTERN = re.compile(r'((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}')\n# 英文正则校验\nENGLISH_PATTERN = re.compile(r'[a-zA-Z]+')\n\n# Model config\nBLOCK_TYPE = [1, 2]\n# IP限制类型 1 无 2 黑名单 3 白名单\nIP_LIMIT = [1, 2, 3]\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/utils/encryption.py",
    "content": "import hashlib\nimport random\nfrom base64 import urlsafe_b64encode, urlsafe_b64decode\nfrom Cryptodome.Cipher import AES\nfrom django.conf import settings\n\n\nclass PasswordEncryption(object):\n    def get_random_string(self, length=8):\n        \"\"\"\n        生成长度为length 的随机字符串\n        \"\"\"\n        aplhabet = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n        return ''.join(map(lambda _: random.choice(aplhabet), range(length)))\n\n    def pad(self, text, blocksize=16):\n        \"\"\"\n        PKCS#5 Padding\n        \"\"\"\n        pad = blocksize - (len(text) % blocksize)\n        return (text + pad * chr(pad)).encode('utf-8')\n\n    def encrypt(self, plaintext, key='', base64=True):\n        \"\"\"\n        AES Encrypt\n        \"\"\"\n        if not key:\n            key = settings.SECRET_KEY\n\n        key = hashlib.md5(key.encode('utf-8')).digest()\n        cipher = AES.new(key, AES.MODE_ECB)\n        ciphertext = cipher.encrypt(self.pad(plaintext))\n        # 将密文base64加密\n        if base64:\n            ciphertext = urlsafe_b64encode(ciphertext).decode(\"utf-8\").rstrip('=')\n\n        return ciphertext\n\n    def decrypt(self, ciphertext, key='', base64=True):\n        \"\"\"\n        AES Decrypt\n        \"\"\"\n        if not key:\n            key = settings.SECRET_KEY\n\n        if base64:\n            ciphertext = urlsafe_b64decode(str(ciphertext + '=' * (4 - len(ciphertext) % 4)))\n\n        data = ciphertext\n\n        key = hashlib.md5(key.encode('utf-8')).digest()\n        cipher = AES.new(key, AES.MODE_ECB)\n        return self.unpad(cipher.decrypt(data).decode(\"utf-8\"))\n\n    def unpad(self, text):\n        \"\"\"\n        PKCS#5 Padding\n        \"\"\"\n        pad = ord(text[-1])\n        return text[:-pad]\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/bastion/utils/esb_api.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2020 OpsAny. All Rights Reserved.\n\"\"\"  # noqa\n\nimport requests\nimport json\n\nimport settings\ntry:\n    from config import APP_CODE, SECRET_KEY, BK_URL, DEFAULT_LANGUAGE\n    from bastion.utils.constants import IP_PATTERN, PRIVATE_IP_PATTERN\nexcept Exception as e:\n    raise Exception(\"导包错误：\", str(e))\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass EsbApi(object):\n    def __init__(self, token=None, language=DEFAULT_LANGUAGE):\n        self.token = token if token else \"\"\n        self.app_code = APP_CODE\n        self.app_secret = SECRET_KEY\n        self.url = BK_URL\n        self.headers = {\n            \"Cookie\": \"bk_token={}; opsany_language={}\".format(self.token, language)\n        }\n\n    def get_user_info(self):\n        API = \"/api/c/compapi/v2/bk_login/get_user/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_token\": self.token\n        }\n        URL = self.url + API\n        response = requests.get(url=URL, params=req, headers=self.headers, verify=False)\n        end_data = json.loads(response.text)\n        dt = {}\n        if end_data.get(\"result\"):\n            dt[\"phone\"] = end_data.get(\"data\").get(\"phone\")\n            dt[\"username\"] = end_data.get(\"data\").get(\"bk_username\")\n            dt[\"email\"] = end_data.get(\"data\").get(\"email\")\n            dt[\"ch_name\"] = end_data.get(\"data\").get(\"chname\")\n            dt[\"role\"] = end_data.get(\"data\").get(\"bk_role\")\n        return dt\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nVERSION = '3.1.0'\n__version__ = VERSION\n\n\nRUN_VER = \"\"\n\n\ndef get_run_ver():\n    from django.conf import settings\n    try:\n        return settings.RUN_VER\n    except AttributeError:\n        return RUN_VER\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.conf import settings\n\nfrom blueapps.account.utils import load_backend\nfrom blueapps.account.conf import ConfFixture, AUTH_USER_MODEL\n\n\ndef get_user_model():\n    \"\"\"\n    返回平台对应版本 User Proxy Model\n    \"\"\"\n    return load_backend(ConfFixture.USER_MODEL)\n\n\ndef get_bk_login_ticket(request):\n    form_cls = 'AuthenticationForm'\n    context = [request.COOKIES, request.GET]\n\n    if request.is_rio():\n        form_cls = 'RioAuthenticationForm'\n        context.insert(0, request.META)\n\n    elif request.is_wechat():\n        form_cls = 'WeixinAuthenticationForm'\n\n    AuthenticationForm = load_backend(\"forms.{}\".format(form_cls))\n\n    for form in (AuthenticationForm(c) for c in context):\n        if form.is_valid():\n            return form.cleaned_data\n\n    return {}\n\n\nif AUTH_USER_MODEL == settings.AUTH_USER_MODEL:\n    from django.contrib import auth\n    auth.get_user_model = get_user_model\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/admin.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.contrib import admin\nfrom django.utils.translation import gettext_lazy as _\n\nfrom blueapps.account.forms import UserCreationForm\nfrom blueapps.account.models import User\n\n\n@admin.register(User)\nclass UserAdmin(admin.ModelAdmin):\n\n    fieldsets = (\n        (None, {'fields': ('username', 'password')}),\n        (_('Personal info'), {'fields': ('nickname',)}),\n        (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',\n                                       'groups', 'user_permissions')}),\n        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),\n    )\n    add_fieldsets = (\n        (None, {\n            'classes': ('wide',),\n            'fields': ('username',),\n        }),\n    )\n    add_form = UserCreationForm\n    filter_horizontal = ['groups']\n    list_display = ['username', 'nickname', 'is_active', 'is_staff',\n                    'is_superuser', 'last_login']\n\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/apps.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.apps import AppConfig\nfrom django.utils.translation import gettext_lazy as _\n\n\nclass AccountConfig(AppConfig):\n\n    name = 'blueapps.account'\n    verbose_name = _('account')\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/backends.py",
    "content": "# -*- coding: utf-8 -*-\nfrom blueapps.account.conf import ConfFixture\nfrom blueapps.account.utils import load_backend\n\nif hasattr(ConfFixture, 'USER_BACKEND'):\n    UserBackend = load_backend(ConfFixture.USER_BACKEND)\n\nif hasattr(ConfFixture, 'WEIXIN_BACKEND'):\n    WeixinBackend = load_backend(ConfFixture.WEIXIN_BACKEND)\n\nif hasattr(ConfFixture, 'RIO_BACKEND'):\n    RioBackend = load_backend(ConfFixture.RIO_BACKEND)\n\nif hasattr(ConfFixture, 'BK_JWT_BACKEND'):\n    BkJwtBackend = load_backend(ConfFixture.BK_JWT_BACKEND)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_jwt/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_jwt/backends.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\n\nfrom django.conf import settings\nfrom django.contrib.auth.backends import ModelBackend\nfrom blueapps.account import get_user_model\n\nbkoauth_jwt_client_exists = True\ntry:\n    from bkoauth.jwt_client import JWTClient\nexcept ImportError:\n    bkoauth_jwt_client_exists = False\n\nlogger = logging.getLogger('component')\n\n\nclass BkJwtBackend(ModelBackend):\n\n    def authenticate(self, request=None):\n        logger.debug(u\"进入 BK_JWT 认证 Backend\")\n\n        try:\n            verify_data = self.verify_bk_jwt_request(request)\n        except Exception as e:\n            logger.exception(u\"[BK_JWT]校验异常: %s\" % e)\n            return None\n\n        if not verify_data['result'] or not verify_data['data']:\n            logger.error(u\"BK_JWT 验证失败： %s\" % (\n                verify_data)\n            )\n            return None\n\n        user_info = verify_data['data']['user']\n        user_model = get_user_model()\n        try:\n            user, _ = user_model.objects.get_or_create(\n                username=user_info['bk_username'])\n            user.nickname = user_info['bk_username']\n            user.save()\n        except Exception as e:\n            logger.exception(u\"自动创建 & 更新 User Model 失败: %s\" % e)\n            return None\n\n        return user\n\n    def get_user(self, user_id):\n        user_model = get_user_model()\n        try:\n            return user_model.objects.get(pk=user_id)\n        except user_model.DoesNotExist:\n            return None\n\n    @staticmethod\n    def verify_bk_jwt_request(request):\n        \"\"\"\n        验证 BK_JWT 请求\n        @param {string} x_bkapi_jwt JWT请求头\n        @return {dict}\n            {\n                'result': True,\n                'message': '',\n                'data': {\n                    'user': {\n                        'bk_username': '调用方用户'\n                    },\n                    'app': {\n                        'bk_app_code': '调用方app'\n                    }\n                }\n            }\n        \"\"\"\n        ret = {\n            'result': False,\n            'message': '',\n            'data': {}\n        }\n        # 兼容bkoauth未支持jwt协议情况\n        if not bkoauth_jwt_client_exists:\n            ret['message'] = u'bkoauth暂不支持JWT协议'\n            return ret\n\n        jwt = JWTClient(request)\n        if not jwt.is_valid:\n            ret['message'] = u\"jwt_invalid: %s\" % jwt.error_message\n            return ret\n\n        # verify: user && app\n        app = jwt.get_app_model()\n        if not app['verified']:\n            ret['message'] = app.get('valid_error_message', u'APP鉴权失败')\n            ret['data']['app'] = app\n            return ret\n\n        if not app.get('bk_app_code'):\n            app['bk_app_code'] = app['app_code']\n\n        user = jwt.get_user_model()\n        # ESB默认需要校验用户信息\n        use_esb_white_list = getattr(settings, 'USE_ESB_WHITE_LIST', True)\n\n        if not use_esb_white_list and not user['verified']:\n            ret['message'] = user.get('valid_error_message', u'用户鉴权失败且不支持ESB白名单')\n            ret['data']['user'] = user\n            return ret\n        if not user.get('bk_username'):\n            user['bk_username'] = user['username']\n\n        if not app['bk_app_code'] or not user['bk_username']:\n            ret['message'] = u'用户或来源为空'\n            return ret\n\n        ret['result'] = True\n        ret['data'] = {\n            \"user\": user,\n            \"app\": app\n        }\n        return ret\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_jwt/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\n\nfrom django.conf import settings\nfrom django.contrib import auth\nfrom django.utils.deprecation import MiddlewareMixin\n\nfrom blueapps.account.conf import ConfFixture\nfrom blueapps.account.handlers.response import ResponseHandler\n\nlogger = logging.getLogger('component')\n\n\nclass BkJwtLoginRequiredMiddleware(MiddlewareMixin):\n    def process_view(self, request, view, args, kwargs):\n        \"\"\"\n        可通过登录认证的请求：\n        1. 带有BK JWT HEADER\n        2. JWT签名正确\n        \"\"\"\n        # 框架前置中间件，已将识别的客户端信息填充进 request\n        if not hasattr(request, 'is_bk_jwt') or not request.is_bk_jwt():\n            return None\n\n        logger.debug('当前请求是否经过JWT转发')\n        login_exempt = getattr(view, 'login_exempt', False)\n\n        # 每次请求都需要做校验\n        if not (login_exempt or request.user.is_authenticated):\n            user = auth.authenticate(request=request)\n            if user:\n                # 登录成功，确认登陆正常后退出\n                auth.login(request, user)\n                if request.user.is_authenticated:\n                    return None\n\n            handler = ResponseHandler(ConfFixture, settings)\n            return handler.build_bk_jwt_401_response(request)\n        return None\n\n    def process_response(self, request, response):\n        return response\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_token/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_token/backends.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nimport traceback\n\nfrom django.conf import settings\nfrom django.contrib.auth.backends import ModelBackend\nfrom django.db import IntegrityError\n\nfrom blueapps.account import get_user_model\nfrom blueapps.account.conf import ConfFixture\nfrom blueapps.account.utils.http import send\nfrom blueapps.utils import client\n\nlogger = logging.getLogger('component')\n\nROLE_TYPE_ADMIN = '1'\n\n\nclass TokenBackend(ModelBackend):\n    def authenticate(self, request=None, bk_token=None):\n        logger.debug(u\"Enter in TokenBackend\")\n        # 判断是否传入验证所需的bk_token,没传入则返回None\n        if not bk_token:\n            return None\n\n        verify_result, username = self.verify_bk_token(bk_token)\n        # 判断bk_token是否验证通过,不通过则返回None\n        if not verify_result:\n            return None\n\n        user_model = get_user_model()\n        try:\n            user, _ = user_model.objects.get_or_create(username=username)\n            get_user_info_result, user_info = self.get_user_info(bk_token)\n            # 判断是否获取到用户信息,获取不到则返回None\n            if not get_user_info_result:\n                return None\n            user.set_property(key='qq', value=user_info.get('qq', ''))\n            user.set_property(key='language',\n                              value=user_info.get('language', ''))\n            user.set_property(key='time_zone',\n                              value=user_info.get('time_zone', ''))\n            user.set_property(key='role', value=user_info.get('role', ''))\n            user.set_property(key='phone', value=user_info.get('phone', ''))\n            user.set_property(key='email', value=user_info.get('email', ''))\n            user.set_property(key='wx_userid',\n                              value=user_info.get('wx_userid', ''))\n            user.set_property(key='chname', value=user_info.get('chname', ''))\n\n            # 用户如果不是管理员，则需要判断是否存在平台权限，如果有则需要加上\n            if not user.is_superuser and not user.is_staff:\n                role = user_info.get('role', '')\n                is_admin = True if str(role) == ROLE_TYPE_ADMIN else False\n                user.is_superuser = is_admin\n                user.is_staff = is_admin\n                user.save()\n\n            return user\n\n        except IntegrityError:\n            logger.exception(traceback.format_exc())\n            logger.exception(\n                u\"get_or_create UserModel fail or update_or_create UserProperty\"\n            )\n            return None\n        except Exception:\n            logger.exception(traceback.format_exc())\n            logger.exception(u\"Auto create & update UserModel fail\")\n            return None\n\n    @staticmethod\n    def get_user_info(bk_token):\n        \"\"\"\n        请求平台ESB接口获取用户信息\n        @param bk_token: bk_token\n        @type bk_token: str\n        @return:True, {\n            u'message': u'\\u7528\\u6237\\u4fe1\\u606f\\u83b7\\u53d6\\u6210\\u529f',\n            u'code': 0,\n            u'data': {\n                u'qq': u'',\n                u'wx_userid': u'',\n                u'language': u'zh-cn',\n                u'username': u'test',\n                u'time_zone': u'Asia/Shanghai',\n                u'role': 2,\n                u'phone': u'11111111111',\n                u'email': u'test',\n                u'chname': u'test'\n            },\n            u'result': True,\n            u'request_id': u'eac0fee52ba24a47a335fd3fef75c099'\n        }\n        @rtype: bool,dict\n        \"\"\"\n        api_params = {\n            'bk_token': bk_token\n        }\n\n        try:\n            response = client.bk_login.get_user(api_params)\n        except Exception as e:\n            logger.exception(u\"Abnormal error in get_user_info...:%s\" % e)\n            return False, {}\n\n        if response.get('result') is True:\n            # 由于v1,v2的get_user存在差异,在这里屏蔽字段的差异,返回字段相同的字典\n            origin_user_info = response.get('data', '')\n            user_info = dict()\n            # v1,v2字段相同的部分\n            user_info['wx_userid'] = origin_user_info.get('wx_userid', '')\n            user_info['language'] = origin_user_info.get('language', '')\n            user_info['time_zone'] = origin_user_info.get('time_zone', '')\n            user_info['phone'] = origin_user_info.get('phone', '')\n            user_info['chname'] = origin_user_info.get('chname', '')\n            user_info['email'] = origin_user_info.get('email', '')\n            user_info['qq'] = origin_user_info.get('qq', '')\n            # v2版本特有的字段\n            if settings.DEFAULT_BK_API_VER == 'v2':\n                user_info['username'] = origin_user_info.get('bk_username', '')\n                user_info['role'] = origin_user_info.get('bk_role', '')\n            # v1版本特有的字段\n            elif settings.DEFAULT_BK_API_VER == '':\n                user_info['username'] = origin_user_info.get('username', '')\n                user_info['role'] = origin_user_info.get('role', '')\n            return True, user_info\n        else:\n            error_msg = response.get('message', '')\n            error_data = response.get('data', '')\n            logger.error(u\"Failed to Get User Info: error=%(err)s, ret=%(ret)s\"\n                         % {\n                             u'err': error_msg,\n                             u'ret': error_data,\n                         })\n            return False, {}\n\n    @staticmethod\n    def verify_bk_token(bk_token):\n        \"\"\"\n        请求VERIFY_URL,认证bk_token是否正确\n        @param bk_token: \"_FrcQiMNevOD05f8AY0tCynWmubZbWz86HslzmOqnhk\"\n        @type bk_token: str\n        @return: False,None True,username\n        @rtype: bool,None/str\n        \"\"\"\n        api_params = {\n            'bk_token': bk_token\n        }\n        \n        try:\n            response = send(ConfFixture.VERIFY_URL, 'GET', api_params,\n                            verify=False)\n        except Exception:\n            logger.exception(u\"Abnormal error in verify_bk_token...\")\n            return False, None\n\n        if response.get('result'):\n            data = response.get('data')\n            username = data.get('username')\n            return True, username\n        else:\n            error_msg = response.get('message', '')\n            error_data = response.get('data', '')\n            logger.error(u\"Fail to verify bk_token, error=%s, ret=%s\" % (\n                error_msg, error_data))\n            return False, None\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_token/forms.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django import forms\n\n\nclass AuthenticationForm(forms.Form):\n    # bk_token format: KH7P4-VSFi_nOEoV3kj0ytcs0uZnGOegIBLV-eM3rw8\n    bk_token = forms.CharField()\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_token/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\nimport datetime\nimport logging\nimport time\n\nfrom django.http import HttpResponseForbidden\nfrom django.utils import timezone\nfrom django.conf import settings\nfrom django.contrib import auth\nimport json\n\nfrom bastion.models import UserInfo\n\ntry:\n    from django.utils.deprecation import MiddlewareMixin\nexcept Exception:\n    MiddlewareMixin = object\nfrom config import BK_URL, APP_CODE, SECRET_KEY\nimport settings as env_config\nfrom blueapps.account.conf import ConfFixture\nfrom blueapps.account.handlers.response import ResponseHandler\nfrom blueapps.account.components.bk_token.forms import AuthenticationForm\n\nlogger = logging.getLogger('component')\n\n\nclass LoginRequiredMiddleware(MiddlewareMixin):\n    def process_view(self, request, view, args, kwargs):\n        request.COOKIES.update(**{\"bk_token_username\": None})\n        request.COOKIES.update(**{\"bk_esb_username\": None})\n        try:\n            from django.conf import settings\n            request.COOKIES.update(**{\"bk_token\": settings.BK_TOKEN})\n        except Exception as e:\n            pass\n\n        if getattr(view, 'login_exempt', False):\n            return None\n        form = AuthenticationForm(request.COOKIES)\n        if form.is_valid():\n            bk_token = form.cleaned_data['bk_token']\n            user = None\n            if bk_token:\n                user = auth.authenticate(request=request, bk_token=bk_token)\n            if not user:\n                if self._check_app_token(request):\n                    return None\n\n                return HttpResponseForbidden(\"Token无效！\")\n            if user.username and user.is_active:\n                request.COOKIES.update(**{\"bk_token_username\": user.username})\n                return None\n            return HttpResponseForbidden(\"Token无效！\")\n\n        if self._check_app_token(request):\n            return None\n        \n        if request.path_info == \"/\":\n            handler = ResponseHandler(ConfFixture, env_config)\n            return handler.build_401_response(request)\n        else:\n            return HttpResponseForbidden(\"Token无效！\")\n\n    def _check_app_token(self, request):\n        headers = request.headers\n        app_code = headers.get(\"X-APP-CODE\")\n        app_token = headers.get(\"X-APP-TOKEN\")\n        if APP_CODE == app_code and app_token == SECRET_KEY:\n            try:\n                data = json.loads(request.body)\n            except:\n                data = {}\n            bk_esb_username = request.GET.get(\"operator\") or request.POST.get(\"operator\") or data.get(\n                \"operator\")\n            query = UserInfo.objects.filter(username=bk_esb_username).first()\n            if query:\n                if query.username and query.is_activate:\n                    request.COOKIES.update(**{\"bk_esb_username\": bk_esb_username})\n                    return True\n        return False\n\n    def process_response(self, request, response):\n        # if self.bk_token:\n        #     now_time = int(time.time())\n        #     expire_time = now_time + 60 * 60 * 24\n        #     response.set_cookie(\"bk_token\", self.bk_token,\n        #                         expires=datetime.datetime.fromtimestamp(expire_time, timezone.get_current_timezone()),\n        #                         domain=\"192.168.0.19\",\n        #                         httponly=True)\n        return response\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/bk_token/models.py",
    "content": "# -*- coding=utf-8 -*-\nfrom blueapps.account.models import (\n    User as BaseUser,\n    UserManager as BaseUserManager\n)\n\n\nclass UserProxyManager(BaseUserManager):\n    pass\n\n\nclass UserProxy(BaseUser):\n    objects = UserProxyManager()\n\n    class Meta:\n        proxy = True\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/null/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.utils.deprecation import MiddlewareMixin\n\n\nclass NullMiddleware(MiddlewareMixin):\n    pass\n\n\nclass NullBackend(object):\n\n    def authenticate(self, **kwargs):\n        return None\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/weixin/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/weixin/backends.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\n\nfrom django.contrib.auth.backends import ModelBackend\n\nfrom blueapps.account.utils.http import send\nfrom blueapps.account import get_user_model\nfrom blueapps.account.conf import ConfFixture\n\nlogger = logging.getLogger('component')\n\n\nclass WeixinBackend(ModelBackend):\n\n    def authenticate(self, request=None, code=None, is_wechat=True):\n        \"\"\"\n        is_wechat 参数是为了使得 WeixinBackend 与其他 Backend 参数个数不同，在框架选择\n        认证 backend 时，快速定位\n        \"\"\"\n        logger.debug(u\"进入 WEIXIN 认证 Backend\")\n        if not code:\n            return None\n\n        result, user_info = self.verify_weixin_code(code)\n        logger.debug(u\"微信 CODE 验证结果，result：%s，user_info：%s\" % (\n            result, user_info)\n        )\n\n        if not result:\n            return None\n\n        user_model = get_user_model()\n        try:\n            user, _ = user_model.objects.get_or_create(\n                username=user_info['username'])\n            user.nickname = user_info['username']\n            user.avatar_url = user_info['avatar']\n            user.save()\n        except Exception:\n            logger.exception(u\"自动创建 & 更新 User Model 失败\")\n        else:\n            return user\n\n    def get_user(self, user_id):\n        user_model = get_user_model()\n        try:\n            return user_model.objects.get(pk=user_id)\n        except user_model.DoesNotExist:\n            return None\n\n    @staticmethod\n    def verify_weixin_code(code):\n        \"\"\"\n        验证 WEIXIN 认证返回的授权码\n        @param {string} code WEIXIN 认证返回的授权码\n        @return {tuple} ret\n        @return {boolean} ret[0] 是否认证通过\n        @return {dict} ret[1] 当 result=True，该字段为用户信息，举例\n            {\n                u'username': u'',\n                u'avatar': u''\n            }\n        \"\"\"\n        api_params = {\n            'code': code,\n        }\n        try:\n            response = send(ConfFixture.WEIXIN_INFO_URL, 'GET', api_params)\n            ret = response.get('ret')\n            if ret == 0:\n                return True, response['data']\n            else:\n                logger.error(u\"通过微信授权码，获取用户信息失败，error=%s，ret=%s\" % (\n                    response['msg'], ret))\n                return False, None\n        except Exception:\n            logger.exception(u\"通过微信授权码，获取用户信息异常\")\n            return False, None\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/weixin/forms.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django import forms\n\n\nclass WeixinAuthenticationForm(forms.Form):\n\n    # code 格式： ...\n    code = forms.CharField()\n    state = forms.CharField()\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/components/weixin/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nimport random\nimport time\n\nfrom django.conf import settings\nfrom django.contrib import auth\nfrom django.utils.deprecation import MiddlewareMixin\n\nfrom blueapps.account.conf import ConfFixture\nfrom blueapps.account.handlers.response import ResponseHandler\nfrom blueapps.account.components.weixin.forms import WeixinAuthenticationForm\n\nlogger = logging.getLogger('component')\n\n\nclass WeixinLoginRequiredMiddleware(MiddlewareMixin):\n    def process_view(self, request, view, args, kwargs):\n        \"\"\"\n        可通过登录认证的方式，仅有两种\n        1. 带有 login_exemp 标识的 view 函数\n        2. 用户已成功 auth.login\n        \"\"\"\n        # 框架前置中间件，已将识别的客户端信息填充进 request\n        if not request.is_wechat():\n            return None\n\n        logger.debug('当前请求客户端为微信端')\n        login_exempt = getattr(view, 'login_exempt', False)\n        if not (login_exempt or request.user.is_authenticated):\n\n            form = WeixinAuthenticationForm(request.GET)\n\n            if form.is_valid():\n                code = form.cleaned_data['code']\n                state = form.cleaned_data['state']\n                logger.debug(\n                    u\"微信请求链接，检测到微信验证码，code：%s，state：%s\" % (\n                        code,\n                        state\n                    )\n                )\n\n                if self.valid_state(request, state):\n                    user = auth.authenticate(request=request, code=code,\n                                             is_wechat=True)\n                    if user:\n                        # 登录成功，重新调用自身函数，即可退出\n                        auth.login(request, user)\n                        return self.process_view(request, view, args, kwargs)\n            else:\n                logger.debug(\n                    u\"微信请求链接，未检测到微信验证码，url：%s，params：%s\" % (\n                        request.path_info, request.GET)\n                )\n\n            self.set_state(request)\n            handler = ResponseHandler(ConfFixture, settings)\n            return handler.build_weixin_401_response(request)\n        return None\n\n    def process_response(self, request, response):\n        return response\n\n    def set_state(self, request, length=32):\n        \"\"\"\n        生成随机数 state，表示客户端的当前状态，根据 oauth2.0 标准，在请求授权码时需要\n        附带上的参数，认证服务器的回应必须一模一样包含这个参数，此处将 state 设置在\n        session\n        \"\"\"\n        allowed_chars = ('abcdefghijkmnpqrstuvwxyz'\n                         'ABCDEFGHIJKLMNPQRSTUVWXYZ'\n                         '0123456789')\n        state = ''.join(random.choice(allowed_chars)\n                        for _ in range(length))\n        request.session['WEIXIN_OAUTH_STATE'] = state\n        request.session['WEIXIN_OAUTH_STATE_TIMESTAMP'] = time.time()\n        return True\n\n    def valid_state(self, request, state, expires_in=60):\n        \"\"\"\n        验证微信认证服务器返回的 code & state 是否合法\n        \"\"\"\n        raw_state = request.session.get('WEIXIN_OAUTH_STATE')\n        raw_timestamp = request.session.get('WEIXIN_OAUTH_STATE_TIMESTAMP')\n\n        if not raw_state or raw_state != state:\n            logger.warning(\n                (u\"验证 WEIXIN 服务器返回信息，state 不一致，\"\n                 u\"WEIXIN_OAUTH_STATE=%s，state=%s\") % (\n                    raw_state, state\n                )\n            )\n            return False\n\n        if not raw_timestamp or time.time() - raw_timestamp > expires_in:\n            logger.warning(\n                (u\"验证 WEIXIN 服务器返回信息，state 过期，\"\n                 u\"WEIXIN_OAUTH_STATE_TIMESTAMP=%s\") % (\n                    raw_timestamp\n                )\n            )\n            return False\n\n        request.session['WEIXIN_OAUTH_STATE'] = None\n        request.session['WEIXIN_OAUTH_STATE_TIMESTAMP'] = None\n        return True\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/conf.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.utils.module_loading import import_string\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.conf import settings\n\nfrom blueapps.account.sites.default import ConfFixture as default_fixture\n\n\nclass _ConfFixture(object):\n\n    def __init__(self, fixture_module):\n        # store the module\n        self._fixture = import_string(fixture_module)\n\n    def __getattr__(self, name):\n        # first, site fixture\n        if hasattr(self._fixture, name):\n            return getattr(self._fixture, name)\n\n        # next, default fixture\n        if hasattr(default_fixture, name):\n            setting = getattr(default_fixture, name)\n            if setting is None:\n                raise ImproperlyConfigured(\n                    'Requested %s, but ConfFixture are not configured. '\n                    'You must set options in ConfFixture in right site.conf.py'\n                    % (name))\n            return setting\n\n        raise KeyError('%s not exist' % name)\n\n\nmod = 'blueapps.account.sites.{VER}.conf.ConfFixture'.format(\n    VER=settings.RUN_VER)\nConfFixture = _ConfFixture(mod)\n\nAUTH_USER_MODEL = 'account.User'\n\n######################\n# 二次验证配置默认参数 #\n######################\n\n# 短信验证有效时间\nSECOND_VERIFY_CONF = {\n    'VALID_MINUTES': 5,\n    'RETRY_MINUTES': 3,\n    'SMS_FORMAT': u'您正在蓝鲸应用上执行敏感操作，验证码：{}',\n    'CODE_NAME': 'bk_verify_code'\n}\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/decorators.py",
    "content": "# -*- coding: utf-8 -*-\nfrom functools import wraps\n\n\ndef login_exempt(view_func):\n    \"\"\"\"Mark a view function as being exempt from login view protection\"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n    wrapped_view.login_exempt = True\n    return wraps(view_func)(wrapped_view)\n\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/forms.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django import forms\n\nfrom blueapps.account.models import User\n\n\nclass UserCreationForm(forms.ModelForm):\n\n    class Meta:\n        model = User\n        fields = ('username',)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/handlers/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/handlers/response.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.http import HttpResponseRedirect, JsonResponse\nfrom django.conf import settings\n\ntry:\n    from django.urls import reverse\nexcept Exception:\n    from django.urls import reverse\n\nfrom blueapps.account.utils.http import build_redirect_url\nfrom blueapps.core.exceptions import RioVerifyError, BkJwtVerifyError\n\n\nclass ResponseHandler(object):\n    def __init__(self, _confFixture, _settings):\n        \"\"\"\n        @param {object} confFixture Account Package Settings\n        @param {object} settings Django User Settings\n        \"\"\"\n        self._conf = _confFixture\n        self._settings = _settings\n\n    def build_401_response(self, request):\n\n        # 强制要求进行跳转的方式\n        if getattr(settings, 'IS_AJAX_PLAIN_MODE', False) and request.is_ajax():\n            return self._build_ajax_401_response(request)\n\n        # Just redirect to PAAS-LOGIN-PLATRORM no matter whether request.is_ajax\n        if self._conf.HAS_PLAIN:\n            if request.is_ajax():\n                return self._build_ajax_401_response(request)\n            else:\n                return self._build_page_401_response(request)\n        else:\n            if request.is_ajax():\n                context = {\n                    'has_plain': False\n                }\n                return JsonResponse(context, status=401)\n            else:\n                return self._build_page_401_response_to_platform(request)\n\n    def _build_ajax_401_response(self, request):\n        \"\"\"\n        Return 401 info, inlclude login_url to PAAS-LOGIN-PLATFORM,\n        width & height for adjusting iframe window, login_url as\n        http://xxx/login/?c_url=http%3A//xxx/t/data/&app_id=data\n        \"\"\"\n        _next = request.build_absolute_uri(reverse('account:login_success'))\n\n        if self._conf.ADD_CROSS_PREFIX:\n            _next = self._conf.CROSS_PREFIX + _next\n\n        _login_url = build_redirect_url(_next,\n                                        self._conf.LOGIN_PLAIN_URL,\n                                        self._conf.C_URL,\n                                        extra_args=self._build_extra_args())\n\n        context = {\n            'login_url': _login_url,\n            'width': self._conf.IFRAME_WIDTH,\n            'height': self._conf.IFRAME_HEIGHT,\n            'has_plain': True\n        }\n        return JsonResponse(context, status=401)\n\n    def _build_page_401_response(self, request):\n        \"\"\"\n        Redirect to login page in self app, redirect url format as\n        http://xxx:8000/account/login_page/?refer_url=http%3A//xxx%3A8000/\n        \"\"\"\n        _login_url = request.build_absolute_uri(reverse('account:login_page'))\n\n        _next = request.build_absolute_uri()\n        _redirect = build_redirect_url(_next, _login_url, 'refer_url')\n        return HttpResponseRedirect(_redirect)\n\n    def _build_page_401_response_to_platform(self, request):\n        \"\"\"\n        Directly redirect to PAAS-LOGIN-PLATFORM\n        \"\"\"\n        _next = request.build_absolute_uri()\n        if self._conf.ADD_CROSS_PREFIX:\n            _next = self._conf.CROSS_PREFIX + _next\n\n        _login_url = build_redirect_url(_next,\n                                        self._conf.LOGIN_URL,\n                                        self._conf.C_URL,\n                                        extra_args=self._build_extra_args())\n        return HttpResponseRedirect(_login_url)\n\n    def _build_extra_args(self):\n        extra_args = None\n        if self._conf.ADD_APP_CODE:\n            extra_args = {\n                self._conf.APP_KEY: getattr(self._settings,\n                                            self._conf.SETTINGS_APP_KEY)\n            }\n        return extra_args\n\n    def build_weixin_401_response(self, request):\n        \"\"\"\n        todo，说明 url 格式\n        \"\"\"\n        _login_url = self._conf.WEIXIN_OAUTH_URL\n        _next = request.build_absolute_uri()\n\n        extra_args = {\n            'appid': self._conf.WEIXIN_APP_ID,\n            'response_type': 'code',\n            'scope': 'snsapi_base',\n            'state': request.session['WEIXIN_OAUTH_STATE']\n        }\n        _redirect = build_redirect_url(\n            _next, _login_url, 'redirect_uri', extra_args=extra_args)\n        return HttpResponseRedirect(_redirect)\n\n    def build_rio_401_response(self, request):\n        context = {\n            'result': False,\n            'code': RioVerifyError.ERROR_CODE,\n            'message': u'您的登陆请求无法经智能网关正常检测，请与管理人员联系'\n        }\n        return JsonResponse(context, status=401)\n\n    def build_bk_jwt_401_response(self, request):\n        \"\"\"\n        BK_JWT鉴权异常\n        \"\"\"\n        context = {\n            \"result\": False,\n            \"code\": BkJwtVerifyError.ERROR_CODE,\n            \"message\": u\"您的登陆请求无法经BK JWT检测，请与管理人员联系\"\n        }\n        return JsonResponse(context, status=401)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.utils.module_loading import import_string\n\nfrom blueapps.account.conf import ConfFixture\n\n\ndef load_middleware(middleware):\n    path = 'blueapps.account.components.{middleware}'.format(\n        middleware=middleware)\n    return import_string(path)\n\n\nif hasattr(ConfFixture, 'LOGIN_REQUIRED_MIDDLEWARE'):\n    LoginRequiredMiddleware = load_middleware(\n        ConfFixture.LOGIN_REQUIRED_MIDDLEWARE)\n\nif hasattr(ConfFixture, 'WEIXIN_MIDDLEWARE'):\n    WeixinLoginRequiredMiddleware = load_middleware(\n        ConfFixture.WEIXIN_MIDDLEWARE)\n\nif hasattr(ConfFixture, 'RIO_MIDDLEWARE'):\n    RioLoginRequiredMiddleware = load_middleware(\n        ConfFixture.RIO_MIDDLEWARE)\n\nif hasattr(ConfFixture, 'BK_JWT_MIDDLEWARE'):\n    BkJwtLoginRequiredMiddleware = load_middleware(\n        ConfFixture.BK_JWT_MIDDLEWARE)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/migrations/0001_initial.py",
    "content": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.2 on 2017-08-09 14:51\nfrom __future__ import unicode_literals\n\nimport django.utils.timezone\nimport django.core.validators\nfrom django.db import migrations, models\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n\n    initial = True\n\n    dependencies = [\n        ('auth', '0008_alter_user_username_max_length'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='User',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('password', models.CharField(max_length=128, verbose_name='password')),\n                ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),\n                ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),\n                ('username', models.CharField(error_messages={'unique': 'A user with that openid already exists.'}, help_text='Required. 64 characters or fewer. Letters, digits and underlined only.', max_length=64, unique=True, validators=[django.core.validators.RegexValidator('^[a-zA-Z0-9_]+$', 'Enter a valid openid. This value may contain only letters, numbers and underlined characters.', 'invalid')], verbose_name='username')),\n                ('nickname', models.CharField(blank=True, help_text='Required. 64 characters or fewer.', max_length=64, verbose_name='nick name')),\n                ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),\n                ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),\n                ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),\n                ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),\n                ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),\n            ],\n            options={\n                'verbose_name': 'user',\n                'verbose_name_plural': 'users',\n            },\n        ),\n        migrations.CreateModel(\n            name='UserProperty',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('key', models.CharField(help_text='Required. 64 characters or fewer. Letters, digits and underlined only.', max_length=64, validators=[django.core.validators.RegexValidator('^[a-zA-Z0-9_]+$', 'Enter a valid key. This value may contain only letters, numbers and underlined characters.', 'invalid')])),\n                ('value', models.TextField()),\n                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='properties', to=settings.AUTH_USER_MODEL)),\n            ],\n            options={\n                'db_table': 'account_user_property',\n                'verbose_name': 'user property',\n                'verbose_name_plural': 'user properties',\n            },\n        ),\n        migrations.CreateModel(\n            name='UserProxy',\n            fields=[\n            ],\n            options={\n                'proxy': True,\n                'indexes': [],\n            },\n            bases=('account.user',),\n        ),\n        migrations.AlterUniqueTogether(\n            name='userproperty',\n            unique_together=set([('user', 'key')]),\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/migrations/0002_init_superuser.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.db import migrations\nfrom django.conf import settings\n\n\ndef load_data(apps, schema_editor):\n    \"\"\"\n    添加用户为管理员\n    \"\"\"\n    User = apps.get_model(\"account\", \"User\")\n    for name in settings.INIT_SUPERUSER:\n        User.objects.update_or_create(\n            username=name,\n            defaults={'is_staff': True, 'is_active': True, 'is_superuser': True}\n        )\n\n\nclass Migration(migrations.Migration):\n    dependencies = [\n        ('account', '0001_initial')\n    ]\n    operations = [\n        migrations.RunPython(load_data)\n    ]\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/migrations/0003_verifyinfo.py",
    "content": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.2 on 2018-12-29 14:30\nfrom __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.db import migrations, models\nimport django.db.models.deletion\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('account', '0002_init_superuser'),\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='VerifyInfo',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('code', models.CharField(max_length=6)),\n                ('updated_at', models.DateTimeField(auto_now=True)),\n                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),\n            ],\n        ),\n    ]\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/migrations/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/models.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\nimport datetime\nimport random\nimport logging\nimport traceback\n\nfrom django.contrib.auth.models import (\n    AbstractBaseUser, BaseUserManager, PermissionsMixin,\n)\nfrom django.conf import settings\nfrom django.core import validators\nfrom django.db import models\nfrom django.utils import timezone\nfrom django.utils.translation import gettext_lazy as _\n\nfrom blueapps.account import conf\nfrom blueapps.account.utils import sms\n\nConfFixture = conf.ConfFixture\n\n# 结合获取用户配置的二步验证配置结果\nSV_CONF = conf.SECOND_VERIFY_CONF\nuser_sv_conf = getattr(settings, 'SECOND_VERIFY_CONF', {})\nSV_CONF.update(user_sv_conf)\n\nlogger = logging.getLogger('app')\n\n\nclass UserManager(BaseUserManager):\n\n    def _create_user(self, username, is_staff=False, is_superuser=False,\n                     password=None, **extra_fields):\n        now = timezone.now()\n        if not username:\n            raise ValueError('The given username must be set')\n        user = self.model(username=username, is_active=True,\n                          is_staff=is_staff, is_superuser=is_superuser,\n                          date_joined=now, **extra_fields)\n        if password:\n            user.set_password(password)\n        user.save(using=self._db)\n        return user\n\n    def create_user(self, username, password=None, **extra_fields):\n        return self._create_user(username, False, False, password,\n                                 **extra_fields)\n\n    def create_superuser(self, username, password=None, **extra_fields):\n        return self._create_user(username, True, True, password,\n                                 **extra_fields)\n\n\nclass User(AbstractBaseUser, PermissionsMixin):\n    username = models.CharField(\n        _('username'),\n        max_length=64,\n        unique=True,\n        help_text=_('Required. 64 characters or fewer. Letters, '\n                    'digits and underlined only.'),\n        validators=[\n            validators.RegexValidator(r'^[a-zA-Z0-9_]+$',\n                                      _('Enter a valid openid. '\n                                        'This value may contain only letters, '\n                                        'numbers and underlined characters.'),\n                                      'invalid'),\n        ],\n        error_messages={\n            'unique': _(\"A user with that openid already exists.\"),\n        },\n    )\n\n    nickname = models.CharField(\n        _('nick name'),\n        max_length=64,\n        blank=True,\n        help_text=_('Required. 64 characters or fewer.'),\n    )\n    is_staff = models.BooleanField(\n        _('staff status'),\n        default=False,\n        help_text=_('Designates whether the user can log into this '\n                    'admin site.'),\n    )\n    is_active = models.BooleanField(\n        _('active'),\n        default=True,\n        help_text=_('Designates whether this user should be treated as '\n                    'active. Unselect this instead of deleting accounts.'),\n    )\n    date_joined = models.DateTimeField(\n        _('date joined'),\n        default=timezone.now,\n    )\n\n    objects = UserManager()\n\n    USERNAME_FIELD = 'username'\n    REQUIRED_FIELDS = ['nickname']\n\n    class Meta:\n        verbose_name = _('user')\n        verbose_name_plural = _('users')\n\n        # Pass platform default user table\n        # db_table = 'auth_user'\n\n    def get_full_name(self):\n        full_name = '%s(%s)' % (self.username, self.nickname)\n        return full_name.strip()\n\n    def get_short_name(self):\n        return self.nickname\n\n    def get_property(self, key):\n        try:\n            return self.properties.get(key=key).value\n        except UserProperty.DoesNotExist:\n            return None\n\n    def set_property(self, key, value):\n        key_property, _ = self.properties.get_or_create(key=key)\n        key_property.value = value\n        key_property.save()\n\n    @property\n    def avatar_url(self):\n        return self.get_property('avatar_url')\n\n    @avatar_url.setter\n    def avatar_url(self, a_url):\n        self.set_property('avatar_url', a_url)\n\n    def send_sms(self, code):\n\n        try:\n            result = sms.send_sms([self.username], SV_CONF['SMS_FORMAT'].format(code))\n        except Exception:\n            logger.error(\n                u'cmsi.send_sms_for_external_user failed. '\n                'username->[%s], code->[%s] for->[%s]' % (self.username, code, traceback.format_exc())\n            )\n            return {\n                'result': False,\n                'message': u'ESB发送短信接口错误，可能由权限问题导致'\n            }\n        return {\n            'result': result['result'],\n            'message': result['message']\n        }\n\n    def send_code(self):\n        now = datetime.datetime.now()\n        v_info = VerifyInfo.objects.filter(user=self)\n        v_info_cnt = v_info.count()\n        if v_info_cnt == 0:\n            # 从未发送过验证码 或 发送过验证码但已被使用（使用后会删除db中的记录）\n            # 生成新的验证码并发送\n            code = random.randint(111111, 999999)\n            VerifyInfo.objects.create(user=self, code=code)\n            ret = self.send_sms(code)\n            if ret['result']:\n                ret['message'] = u'初始化验证码，发送成功'\n\n        elif v_info_cnt == 1:\n            cur = v_info[0]\n            if cur.updated_at >= now - datetime.timedelta(\n                    minutes=SV_CONF['VALID_MINUTES']\n            ):\n                # 早前生成过验证码，且未过期\n                if cur.updated_at < now - datetime.timedelta(\n                        minutes=SV_CONF['RETRY_MINUTES']\n                ):\n                    # 重发已生成的\n                    ret = self.send_sms(cur.code)\n                    if ret['result']:\n                        ret['message'] = u'已生成的验证码，重发成功'\n                else:\n                    # 等待时间不足，不重发\n                    ret = {'result': False, 'message': u'暂不能重发验证码，请稍等'}\n            else:\n                # 已过期，重新生成并重发\n                new_code = random.randint(111111, 999999)\n                cur.code = new_code\n                cur.save()\n                ret = self.send_sms(new_code)\n                if ret['result']:\n                    ret['message'] = u'重新生成验证码，发送成功'\n        else:\n            logger.error(\n                u'found more than one code of the user->[%s]' % self.id\n            )\n            ret = {'result': False, 'message': u'数据库中的验证码异常'}\n        return ret\n\n    def verify_code(self, code):\n        check = VerifyInfo.objects.filter(\n            user=self, code=code,\n            updated_at__gt=datetime.datetime.now() - datetime.timedelta(\n                minutes=SV_CONF['VALID_MINUTES']\n            )\n        ).count()\n        if check == 1:\n            # 一个验证码只能用一次 用完删除\n            VerifyInfo.objects.filter(user=self, code=code).delete()\n            return True\n        return False\n\n\nclass UserProperty(models.Model):\n    \"\"\"\n    Add user extra property\n    \"\"\"\n    user = models.ForeignKey(\n        User,\n        on_delete=models.CASCADE,\n        related_name='properties',\n    )\n    key = models.CharField(\n        max_length=64,\n        help_text=_('Required. 64 characters or fewer. Letters, '\n                    'digits and underlined only.'),\n        validators=[\n            validators.RegexValidator(r'^[a-zA-Z0-9_]+$',\n                                      _('Enter a valid key. '\n                                        'This value may contain only letters, '\n                                        'numbers and underlined characters.'),\n                                      'invalid'),\n        ],\n    )\n    value = models.TextField()\n\n    class Meta:\n        verbose_name = _('user property')\n        verbose_name_plural = _('user properties')\n        db_table = 'account_user_property'\n        unique_together = (('user', 'key'),)\n\n\nclass VerifyInfo(models.Model):\n    user = models.ForeignKey(User, on_delete=models.CASCADE)\n    code = models.CharField(max_length=6)\n    updated_at = models.DateTimeField(auto_now=True)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/readme.md",
    "content": "### Account 使用说明\n\nblueapps.account 作为开发框架的登录模块，可解决内部版 OA 登录、外部版 ptlogin QQ 登录，自动跳转至 PASS 统一登录平台，完成登录认证，获取用户信息。\n\n#### 申明 USER_MODEL\n\n```\nAUTH_USER_MODEL = 'account.User'\n```\n\n#### USER_MODEL 字段说明\n\n* [a] username  \n    用户唯一标识，在内部版为 RTX，在混合云为 QQ 号，在腾讯云为 openid\n* [a] nickname\n    用于前端展示的用户名，在内部版为 RTX，在混合云为 QQ 昵称，在腾讯云为 QQ 昵称\n* [a] avatar_url\n    用户头像 URL\n* [m] get_full_name\n    用于前端展示的完整用户名，在内部版为 rtx，在混合云为 昵称（QQ），腾讯云为 昵称\n\n\n#### 添加统一登录中间件（WeixinLoginRequiredMiddleware 可选添加）\n\n```\nMIDDLEWARE = (\n    # Auth middleware\n    'blueapps.account.middlewares.WeixinLoginRequiredMiddleware',\n    'blueapps.account.middlewares.LoginRequiredMiddleware',\n)\n```\n\n#### 添加统一登录认证 Backend（WeixinBackend 可选添加）\n\n```\nAUTHENTICATION_BACKENDS = (\n    'blueapps.account.backends.WeixinBackend',\n    'blueapps.account.backends.UserBackend',\n)\n```\n\n\n#### 目前所支持的平台&版本\n\n|   | ieod（内部版）| clouds（混合云） | qcloud（腾讯云）|\n| ------------ | ------------ |------------ | ------------ |\n| PAAS   |     √        |       √         |       √       |\n| WEIXIN |     √        |       ×         |       ×       |\n\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/sites/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/sites/default.py",
    "content": "# -*- coding: utf-8 -*-\n\n\nclass ConfFixture(object):\n    \"\"\"\n    登录模块项目变量汇总\n    \"\"\"\n    #################\n    # 浏览器参数说明 #\n    #################\n\n    # 登录模块,可选项为 components 目录下的模块,如 qcloud_tlogin\n    BACKEND_TYPE = None\n\n    # 用户验证 Backend  qcloud_tlogin.backends.QPtloginBackend\n    USER_BACKEND = None\n\n    # 用户登录验证中间件 qcloud_tlogin.middlewares.LoginRequiredMiddleware\n    LOGIN_REQUIRED_MIDDLEWARE = None\n\n    # 用户模型 qcloud_tlogin.models.UserProxy\n    USER_MODEL = None\n\n    # 登录平台弹窗链接 http://xxxx.com/accounts/login_page/\n    CONSOLE_LOGIN_URL = None\n\n    # 登录平台链接 http://login.o.qcloud.com\n    LOGIN_URL = None\n\n    # 内嵌式的登录平台链接（可嵌入弹框、IFrame）http://xxx.com/plain/\n    LOGIN_PLAIN_URL = None\n\n    # 是否提供内嵌式的统一登录页面\n    HAS_PLAIN = True\n\n    # 跳转至登录平台是否加跨域前缀标识\n    # http://xxx.com/login/?c_url={CROSS_PREFIX}http%3A//xxx.com%3A8000/\n    ADD_CROSS_PREFIX = True\n    CROSS_PREFIX = ''\n\n    # 跳转至登录平台是否加上APP_CODE\n    # http://xxx.com/login/?c_url=http%3A//xxx.com%3A8000/&app_code=xxx\n    ADD_APP_CODE = True\n    # http://xxx.com/login/?c_url=http%3A//xxx.com%3A8000/&{APP_KEY}=xxx\n    APP_KEY = 'app_code'\n    SETTINGS_APP_KEY = 'APP_CODE'\n\n    # 跳转至登录平台，回调参数名称\n    # http://xxx.com/login/?{C_URL}=http%3A//xxx.com%3A8000/\n    C_URL = 'c_url'\n\n    # 内嵌式的登录平台的尺寸大小，决定前端适配的弹框大小\n    IFRAME_HEIGHT = 490\n    IFRAME_WIDTH = 460\n\n    ###############\n    # 微信参数说明 #\n    ###############\n\n    # 登录模块 weixin\n    WEIXIN_BACKEND_TYPE = None\n\n    # 用户认证中间件 bk_ticket.middlewares.LoginRequiredMiddleware\n    WEIXIN_MIDDLEWARE = None\n\n    # 用户认证 Backend bk_ticket.backends.TicketBackend\n    WEIXIN_BACKEND = None\n\n    # 用户信息链接 http://xxx.com/user/weixin/get_user_info/\n    WEIXIN_INFO_URL = None\n\n    # 用户 OAUTH 认证链接 https://xxx.com/connect/oauth2/authorize\n    WEIXIN_OAUTH_URL = None\n\n    # 在微信端的应用ID 'xxxx'\n    WEIXIN_APP_ID = None\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/sites/open/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/sites/open/conf.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.conf import settings\n\n\nclass ConfFixture(object):\n    BACKEND_TYPE = 'bk_token'\n    USER_BACKEND = 'bk_token.backends.TokenBackend'\n    LOGIN_REQUIRED_MIDDLEWARE = 'bk_token.middlewares.LoginRequiredMiddleware'\n    USER_MODEL = 'bk_token.models.UserProxy'\n\n    CONSOLE_LOGIN_URL = settings.BK_PAAS_HOST\n    LOGIN_URL = settings.BK_PAAS_HOST + '/login/'\n    LOGIN_PLAIN_URL = settings.BK_PAAS_HOST + '/login/plain/'\n    VERIFY_URL = settings.BK_PAAS_INNER_HOST + '/login/accounts/is_login/'\n    USER_INFO_URL = settings.BK_PAAS_INNER_HOST + '/login/accounts/get_user/'\n    HAS_PLAIN = False\n    ADD_CROSS_PREFIX = False\n    ADD_APP_CODE = True\n\n    IFRAME_HEIGHT = 490\n    IFRAME_WIDTH = 460\n\n    WEIXIN_BACKEND_TYPE = 'null'\n    WEIXIN_MIDDLEWARE = 'null.NullMiddleware'\n    WEIXIN_BACKEND = 'null.NullBackend'\n\n    SMS_CLIENT_MODULE = 'cmsi'\n    SMS_CLIENT_FUNC = 'send_sms'\n    SMS_CLIENT_USER_ARGS_NAME = 'receiver__username'\n    SMS_CLIENT_CONTENT_ARGS_NAME = 'content'\n\n    RIO_BACKEND_TYPE = 'null'\n    RIO_MIDDLEWARE = 'null.NullMiddleware'\n    RIO_BACKEND = 'null.NullBackend'\n\n    BK_JWT_MIDDLEWARE = 'bk_jwt.middlewares.BkJwtLoginRequiredMiddleware'\n    BK_JWT_BACKEND = 'bk_jwt.backends.BkJwtBackend'\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/static/account/login.js",
    "content": "/**\n * 登录相关 JS，其中 remote_static_url & static_url 来源于全局变量\n */ \n\ndocument.write(\" <script lanague=\\\"javascript\\\" src=\\\"\"+remote_static_url+\"artdialog/jquery.artDialog.js?skin=simple\\\"> <\\/script>\");\n\n/**\n * 对 AJAX 请求做一些统一公共处理，目前主要是对登录页面做处理\n */\n$.ajaxSetup({\n    statusCode: {\n        401: function(xhr) {\n            var response = JSON.parse(xhr.responseText);\n            // 确认当前版本是否支持 Iframe 登录方式\n            if (!response.has_plain) {\n                window.location.reload();\n            }\n\n            try{\n                window.top.BLUEKING.corefunc.open_login_dialog(response['login_url']);\n            }catch(err){\n                open_login_dialog(\n                    response['login_url'], response['width'], response['height']);\n            }\n        }\n    }\n});\n\n/**\n * 打开登录窗口\n */\nfunction open_login_dialog(src, width, height){\n    var login_html = '<div class=\"mod_login\" id=\"loginbox\" style=\"padding: 0px 0px; visibility: visible;\" align=\"center\">' +\n                        '<iframe name=\"login_frame\" id=\"login_frame\"  width=\"100%\" height=\"100%\" frameborder=\"0\" allowtransparency=\"yes\"  src=\"'+src+\n                        '\" style=\"width:'+width+'px;height:'+height+'px;\"></iframe>' +\n                     '</div>';\n    art.dialog({\n        id:\"401_dialog\",\n        fixed: true,\n        lock: true,\n        padding: \"0px 0px\",\n        content: login_html\n    });\n}\n\n/**\n * 关闭登录框\n */\nfunction close_login_dialog(){\n    art.dialog({id: '401_dialog'}).close();\n\n    try {\n        window.close_login_dialog_after();\n    } catch(err){}\n}\n\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/templates/account/login_page.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>即将转入蓝鲸登录...</title>\n        <link href=\"{{ REMOTE_STATIC_URL }}bk/base.css?v={{ STATIC_VERSION }}\" rel=\"stylesheet\" type=\"text/css\"/>\n        <link href=\"{{ REMOTE_STATIC_URL }}bk/bk.css?v={{ STATIC_VERSION }}\" rel=\"stylesheet\" type=\"text/css\"/>\n    </head>\n    <body>\n        <div class=\"errors-login-wrap box\">\n            <img src=\"{{ REMOTE_STATIC_URL }}bk/style_custom/images/expre_login.jpg\" width=\"183\" height=\"113\" />\n            <div class=\"errors-login-con clearfix\">          \n                <h1>您需要登录蓝鲸</h1>\n                <p><strong>看起来：</strong></p>\n                <p>1.您还没有登录蓝鲸</p>\n                <p>2.您之前的登录已经失效了</p> \n                <a href=\"javascript:;\" class=\"btn-jump f_r\" onclick='login()'>立即登录</a>\n            </div>\n        </div>\n\n\n        <script type=\"text/javascript\">\n            var remote_static_url = \"{{ REMOTE_STATIC_URL }}\";\n            var refer_url = \"{{ refer_url }}\";\n        </script>\n\n        <script src=\"{{ REMOTE_STATIC_URL }}jquery/jquery-1.7.2.min.js\"></script>\n        <script src=\"{{ REMOTE_STATIC_URL }}jquery/jquery.json-2.3.min.js\"></script>\n        <script type=\"text/javascript\" src=\"{{ STATIC_URL }}account/login.js\"></script>\n\n        <script type=\"text/javascript\">\n            $(function(){\n                login();\n            })\n            \n            function login(){\n                // 仅触发弹框\n                $.get(refer_url, {}, function(){}, 'json');\n\n                window.close_login_dialog_after = function () {\n                    window.location.href = refer_url;\n                }\n            }\n        </script>\n    </body>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/templates/account/login_success.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>登录成功</title>\n        <script src=\"{{ REMOTE_STATIC_URL }}jquery/jquery-1.7.2.min.js\"></script>\n        <script src=\"{{ REMOTE_STATIC_URL }}jquery/jquery.json-2.3.min.js\"></script>\n        <link href=\"{{ REMOTE_STATIC_URL }}bk/bk.css\" rel=\"stylesheet\" type=\"text/css\"/>\n    </head>\n    <body>\n        <div class=\"errors-login-failure-wrap box\">\n            <div class=\"errors-login-fialure-con clearfix\" style=\"border: none;\">\n                <img src=\"{{ REMOTE_STATIC_URL }}bk/style_custom/images/expre_login.jpg\" width=\"183\" height=\"112\" />\n                <h1>登录成功</h1>\n            </div>\n        </div>\n    </body>\n    <script type=\"text/javascript\">\n        $(document).ready(function () {\n            // 关闭登录弹出框\n            try{\n                window.top.BLUEKING.corefunc.close_login_dialog();\n            }catch(err){\n                try{\n                    window.parent.close_login_dialog();\n                }catch(err){}\n            }\n        });\n    </script>\n</html>\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/urls.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.urls import path\n\nfrom blueapps.account import views\n\napp_name = 'account'\n\nurlpatterns = [\n    path('healthz/', views.healthz, name=\"healthz\"),\n]\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/utils/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.utils.module_loading import import_string\n\n\ndef load_backend(backend):\n    path = 'blueapps.account.components.{backend}'.format(backend=backend)\n    return import_string(path)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/utils/http.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\nimport logging\nimport traceback\n\nimport requests\nfrom django.shortcuts import resolve_url\nfrom django.http import QueryDict\nfrom django.utils.six.moves.urllib.parse import urlparse, urlunparse\n\nfrom blueapps.core.exceptions.base import ApiResultError, ApiNetworkError\n\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\nlogger = logging.getLogger('component')\n\n\ndef send(url, method, params, timeout=None, **kwargs):\n    \"\"\"\n    统一请求处理，定制化参数， GET 参数使用 form-data，POST 参数使用 json 字符串，返回内容\n    要求为 JSON 格式\n\n    @exception\n        ApiResultError：非 JSON 返回，抛出 ApiResultError\n        ApiNetworkError： 请求服务端超时\n\n    @param url：string，请求 URL\n    @param method：string，请求方法，目前仅支持 GET、POST\n    @param params：dict，请求参数 KV 结构\n    @param timeout: float，服务器在 timeout 秒内没有应答，将会引发一个异常\n    \"\"\"\n    session = requests.session()\n\n    try:\n        if method.upper() == 'GET':\n            response = session.request(method='GET', url=url, params=params,\n                                       timeout=timeout, **kwargs)\n        elif method.upper() == 'POST':\n            session.headers.update({\n                'Content-Type': 'application/json; chartset=utf-8'})\n            response = session.request(method='POST', url=url,\n                                       data=json.dumps(params),\n                                       timeout=timeout, **kwargs)\n        else:\n            raise Exception(u\"异常请求方式，%s\" % method)\n    except requests.exceptions.Timeout:\n        err_msg = (u\"请求超时，url=%s，method=%s，params=%s，timeout=%s\" % (\n            url, method, params, timeout))\n        raise ApiNetworkError(err_msg)\n\n    logger.debug('请求记录, url=%s, method=%s, params=%s, response=%s' % (\n        url, method, params, response))\n\n    if response.status_code != requests.codes.ok:\n        err_msg = (u\"返回异常状态码，status_code=%s，url=%s，method=%s，\"\n                   u\"params=%s\" % (response.status_code, url, method,\n                                   json.dumps(params)))\n        raise ApiResultError(err_msg)\n\n    try:\n        return response.json()\n    except Exception:\n        err_msg = (u\"返回内容不符合 JSON 格式，url=%s，method=%s，params=%s，error=%s，\"\n                   u\"response=%s\" % (url, method, json.dumps(params),\n                                     traceback.format_exc(),\n                                     response.text[:1000]))\n        raise ApiResultError(err_msg)\n\n\ndef build_redirect_url(next_url, current_url, redirect_field_name,\n                       extra_args=None):\n    \"\"\"\n    即将访问的 CUR_URL 页面， 加上下一步要跳转的 NEXT 页面\n    @param {string} next_url 页面链接，比如 http://a.com/page1/\n    @param {string} current_url\n    \"\"\"\n    resolved_url = resolve_url(current_url)\n\n    login_url_parts = list(urlparse(resolved_url))\n\n    querystring = QueryDict(login_url_parts[4], mutable=True)\n    querystring[redirect_field_name] = next_url\n\n    if extra_args:\n        querystring.update(extra_args)\n\n    login_url_parts[4] = querystring.urlencode(safe='/')\n\n    return urlunparse(login_url_parts)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/utils/sms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n发送短信工具文件，开发者可以直接调用此处的send_sms函数，屏蔽环境之间的差异\n\"\"\"\n\n\nfrom blueapps.utils import client\nfrom blueapps.account.conf import ConfFixture\nfrom blueapps.utils.esbclient import CustomComponentAPI\n\n\ndef send_sms(user_list, content):\n    \"\"\"\n    发送短信给指定的用户，\n    :param user_list: 用户列表，list\n    :param content: 消息内容\n    :return: True | raise Exception\n    \"\"\"\n\n    # 1. 获取发送短信的函数实际句柄\n    sms_module = client.__getattr__(ConfFixture.SMS_CLIENT_MODULE)\n    sms_func = sms_module.__getattr__(ConfFixture.SMS_CLIENT_FUNC)\n\n    # 2. 拼接发送函数的内容\n    request_args = {\n        ConfFixture.SMS_CLIENT_USER_ARGS_NAME: ','.join(user_list),\n        ConfFixture.SMS_CLIENT_CONTENT_ARGS_NAME: content\n    }\n\n    # 3. 发送短信\n    if type(sms_func) == CustomComponentAPI:\n        result = sms_func.post(request_args)\n\n    else:\n        result = sms_func(request_args)\n\n    return result\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/account/views.py",
    "content": "# -*- coding: utf-8 -*-\nimport datetime\nfrom django.http import JsonResponse, HttpResponse\nfrom django_redis import get_redis_connection\nfrom bastion.models import UserInfo\nfrom blueapps.account.decorators import login_exempt\n\n\n@login_exempt\ndef healthz(request):\n    code, status, message = 1, \"OK\", \"\"\n    dic = {\"check_mysql\": True, \"check_redis\": True, \"check_superuser\": True}\n    try:\n        client = get_redis_connection()  # redis校验\n        access_token = client.get(\"OpsAny\")\n    except Exception as e:\n        dic[\"check_redis\"] = False\n        code, status = 0, \"ERROR\"\n        message += \"Redis初始化失败 \"\n\n    if not UserInfo.objects.filter(username=\"admin\"):  # 校验超级管理员初始化\n        dic[\"check_superuser\"] = False\n        code, status = 0, \"ERROR\"\n        message += \"超级管理员初始化失败 \"\n    if not message:\n        message = \"Success\"\n    if code == 1:\n        data = {\"code\": code, \"status\": status, \"message\": message, \"time\": str(datetime.datetime.now()), \"details\": dic}\n        return JsonResponse(data)\n    else:\n        data = message\n        return HttpResponse(content=data, status=500)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/__init__.py",
    "content": "\"\"\"\nblueapps.conf\n=============\n\"\"\"\n\n\nclass BlueSettings(object):\n\n    def __init__(self):\n        from django.conf import settings as django_settings\n        from blueapps.conf import default_settings\n\n        self._django_settings = django_settings\n        self._default_settings = default_settings\n\n    def __getattr__(self, key):\n        if key == key.upper():\n            if hasattr(self._django_settings, key):\n                return getattr(self._django_settings, key)\n            elif hasattr(self._default_settings, key):\n                return getattr(self._default_settings, key)\n\n        raise AttributeError(\"%r object has no attribute %r\"\n                             % (self.__class__.__name__, key))\n\n\nsettings = BlueSettings()\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/database.py",
    "content": "# -*- coding: utf-8 -*-\nimport os\n\n\ndef get_default_database_config_dict(settings_module):\n    if os.getenv('GCS_MYSQL_NAME') and os.getenv('MYSQL_NAME'):\n        db_prefix = settings_module.get('DB_PREFIX', '')\n        if not db_prefix:\n            raise EnvironmentError('no DB_PREFIX config while multiple '\n                                   'databases found in environment')\n    elif os.getenv('GCS_MYSQL_NAME'):\n        db_prefix = 'GCS_MYSQL'\n    elif os.getenv('MYSQL_NAME'):\n        db_prefix = 'MYSQL'\n    else:\n        if settings_module.get('IS_LOCAL', False):\n            return {}\n        else:\n            raise EnvironmentError('no database[GCS_MYSQL or MYSQL] config')\n    return {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': os.environ['%s_NAME' % db_prefix],\n        'USER': os.environ['%s_USER' % db_prefix],\n        'PASSWORD': os.environ['%s_PASSWORD' % db_prefix],\n        'HOST': os.environ['%s_HOST' % db_prefix],\n        'PORT': os.environ['%s_PORT' % db_prefix],\n    }\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/default_settings.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\nimport re\n\nfrom blueapps.conf.environ import *  # noqa\nfrom blueapps.conf.database import get_default_database_config_dict\n\nROOT_URLCONF = 'urls'\n\nSITE_ID = 1\n\nINSTALLED_APPS = (\n    'bkoauth',\n    # 框架自定义命令\n    'blueapps.contrib.bk_commands',\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.sites',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    # account app\n    'blueapps.account',\n)\n\nMIDDLEWARE = (\n    # request instance provider\n    'blueapps.middleware.request_provider.RequestProvider',\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.common.CommonMiddleware',\n    # 'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    # 跨域检测中间件， 默认关闭\n    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n    'django.middleware.security.SecurityMiddleware',\n    # 蓝鲸静态资源服务\n    'whitenoise.middleware.WhiteNoiseMiddleware',\n    # Auth middleware\n    'blueapps.account.middlewares.RioLoginRequiredMiddleware',\n    'blueapps.account.middlewares.WeixinLoginRequiredMiddleware',\n    'blueapps.account.middlewares.LoginRequiredMiddleware',\n    # exception middleware\n    'blueapps.core.exceptions.middleware.AppExceptionMiddleware'\n)\n\nDATABASES = {\n    'default': get_default_database_config_dict(locals())\n}\n\n# Cache\n\nCACHES = {\n    'db': {\n        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',\n        'LOCATION': 'django_cache',\n    },\n    'dummy': {\n        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',\n    },\n    'locmem': {\n        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n    },\n}\n\nCACHES['default'] = CACHES['dummy']\n\n# Template\n\nMAKO_DIR_NAME = 'mako_templates'\n\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': (\n            os.path.join(BASE_DIR, 'templates'),\n        ),\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.contrib.messages.context_processors.messages',\n                'blueapps.template.context_processors.blue_settings'\n            ],\n        },\n    },\n    {\n        'BACKEND': 'blueapps.template.backends.mako.MakoTemplates',\n        'DIRS': (\n            os.path.join(BASE_DIR, MAKO_DIR_NAME),\n        ),\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.contrib.messages.context_processors.messages',\n                'blueapps.template.context_processors.blue_settings'\n            ],\n            # mako templates cache, None means not using cache\n            'module_directory': os.path.join(os.path.dirname(BASE_DIR),\n                                             'templates_module', APP_CODE)\n        },\n    },\n]\n\n# Internationalization\n# https://docs.djangoproject.com/en/1.8/topics/i18n/\n\nALLOWED_HOSTS = ['*']\nTIME_ZONE = 'Asia/Shanghai'\nLANGUAGE_CODE = 'zh-hans'\nUSE_I18N = True\n\n# Authentication & Authorization\n\nSESSION_COOKIE_AGE = 60\nAUTH_USER_MODEL = 'account.User'\n\nAUTHENTICATION_BACKENDS = (\n    'blueapps.account.backends.RioBackend',\n    'blueapps.account.backends.WeixinBackend',\n    'blueapps.account.backends.UserBackend',\n)\n\nRE_MOBILE = re.compile(r'Mobile|Android|iPhone|iPad|iPod', re.IGNORECASE)\nRE_WECHAT = re.compile(r'MicroMessenger', re.IGNORECASE)\n\n# CSRF Config\nCSRF_COOKIE_NAME = 'csrftoken'\n\n# close celery hijack root logger\nCELERYD_HIJACK_ROOT_LOGGER = False\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/environ.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nblueapps environ variables from paas\n\"\"\"\nfrom __future__ import absolute_import\n\nimport os\nimport importlib\n\n# 由用户初始化\nfrom config import celery_app, RUN_VER, APP_CODE, SECRET_KEY, BASE_DIR  # noqa\n\ntry:\n    from config import BK_URL\nexcept ImportError:\n    BK_URL = None\n\n# 根据平台加载对应变量\ntry:\n    site_mod = importlib.import_module('blueapps.conf.sites.%s' % RUN_VER)\nexcept ImportError:\n    raise ImportError(u'unknown RUN_VER: %s' % RUN_VER)\nfor _setting in dir(site_mod):\n    if _setting.isupper():\n        locals()[_setting] = getattr(site_mod, _setting)\n\n# Inherit from paas environment\n# all = [\n#     'BKPAAS_LOG_NAME_PREFIX',\n#     'BKPAAS_ENGINE_APP_NAME',\n#     'BKPAAS_ENGINE_REGION',\n#     'BKPAAS_ENVIRONMENT',\n#     'BKPAAS_URL',\n#     'BKPAAS_SUB_PATH',\n#     'BKPAAS_REMOTE_STATIC_URL',\n#     'BKPAAS_WEIXIN_URL',\n#     'BKPAAS_WEIXIN_REMOTE_STATIC_URL',\n# ]\n\n# 蓝鲸平台URL\nBK_URL = os.getenv('BKPAAS_URL', BK_URL)  # noqa\n\n# 蓝鲸开发者页面\nBK_DEV_URL = BK_URL\n\n# 站点URL\nSITE_URL = os.getenv('BKPAAS_SUB_PATH', '/')\n\n# 远程静态文件URL\nREMOTE_STATIC_URL = os.getenv('BKPAAS_REMOTE_STATIC_URL',\n                              '%s/static_api/' % BK_URL)\n\n# 判断是否为本地开发环境\nIS_LOCAL = not os.getenv('BKPAAS_ENVIRONMENT', False)\n\n# static root and dirs to find blueapps static\nif not IS_LOCAL:\n    STATIC_ROOT = 'staticfiles'\n    FORCE_SCRIPT_NAME = SITE_URL\n\n    # 开启子域名时静态文件统一使用子域名访问\n    app_subdomains = os.getenv('BKPAAS_ENGINE_APP_DEFAULT_SUBDOMAINS', None)\n    # 存在该变量，而且不是空字符串\n    if app_subdomains is not None and app_subdomains != '':\n        STATIC_URL = 'http://%s/static/' % app_subdomains.split(';')[0]\n    else:\n        STATIC_URL = '%sstatic/' % FORCE_SCRIPT_NAME\nelse:\n    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')\n    STATIC_URL = '/static/'\n\n# About Log\nLOG_NAME_PREFIX = os.getenv('BKPAAS_LOG_NAME_PREFIX')\n\n# About whitenoise\nWHITENOISE_STATIC_PREFIX = '/static/'\n\n# Rabbitmq & Celery\nif 'RABBITMQ_VHOST' in os.environ:\n    RABBITMQ_VHOST = os.getenv('RABBITMQ_VHOST')\n    RABBITMQ_PORT = os.getenv('RABBITMQ_PORT')\n    RABBITMQ_HOST = os.getenv('RABBITMQ_HOST')\n    RABBITMQ_USER = os.getenv('RABBITMQ_USER')\n    RABBITMQ_PASSWORD = os.getenv('RABBITMQ_PASSWORD')\n    BROKER_URL = 'amqp://{user}:{password}@{host}:{port}/{vhost}'.format(\n        user=RABBITMQ_USER,\n        password=RABBITMQ_PASSWORD,\n        host=RABBITMQ_HOST,\n        port=RABBITMQ_PORT,\n        vhost=RABBITMQ_VHOST)\n\n# WEIXIN Settings\n\n# 微信 URL 前缀\nWEIXIN_URL_PREFIX = 'weixin'\n\n# APP 微信 ROOT URL\nWEIXIN_SITE_URL = '%s%s/' % (SITE_URL, WEIXIN_URL_PREFIX)\n\n# 平台微信 URL 域名\nWEIXIN_BK_URL = os.getenv('BKPAAS_WEIXIN_URL', 'https://mt.bk.tencent.com')\n\n# APP 微信本地静态资源目录\n# TODO 环境变量中无WEXIN_STATIC_URL或BKPAAS_WEIXIN_STATIC_URL\nWEIXIN_STATIC_URL = os.getenv('BKPAAS_WEIXIN_STATIC_URL',\n                              '%sstatic/weixin/' % SITE_URL)\n\n# APP 微信远程静态资源目录\nWEIXIN_REMOTE_STATIC_URL = os.getenv('BKPAAS_WEIXIN_REMOTE_STATIC_URL',\n                                     '%s/static_api/' % WEIXIN_BK_URL)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/log.py",
    "content": "# -*- coding: utf-8 -*-\nimport os\nimport string\nimport random\n\nfrom blueapps.conf.default_settings import BASE_DIR, APP_CODE\n\nAPP_CODE = os.environ.get('APP_ID', APP_CODE)\n\n\ndef get_logging_config_dict(settings_module):\n    log_class = 'logging.handlers.RotatingFileHandler'\n    log_level = settings_module.get('LOG_LEVEL', 'INFO')\n\n    if settings_module.get('IS_LOCAL', False):\n        log_dir = os.path.join(os.path.dirname(BASE_DIR), 'logs', APP_CODE)\n        log_name_prefix = os.getenv('BKPAAS_LOG_NAME_PREFIX', APP_CODE)\n        logging_format = {\n            'format': ('%(levelname)s [%(asctime)s] %(pathname)s '\n                       '%(lineno)d %(funcName)s %(process)d %(thread)d '\n                       '\\n \\t %(message)s \\n'),\n            'datefmt': '%Y-%m-%d %H:%M:%S'\n        }\n    else:\n        log_dir = '/app/v3logs/'\n        rand_str = ''.join(\n            random.sample(string.ascii_letters + string.digits, 4))\n        log_name_prefix = '%s-%s' % (os.getenv('BKPAAS_PROCESS_TYPE'), rand_str)\n\n        logging_format = {\n            '()': 'pythonjsonlogger.jsonlogger.JsonFormatter',\n            'fmt': ('%(levelname)s %(asctime)s %(pathname)s %(lineno)d '\n                    '%(funcName)s %(process)d %(thread)d %(message)s')\n        }\n    if not os.path.exists(log_dir):\n        os.makedirs(log_dir)\n\n    return {\n        'version': 1,\n        'disable_existing_loggers': False,\n        'formatters': {\n            'verbose': logging_format,\n            'simple': {\n                'format': '%(levelname)s %(message)s'\n            },\n        },\n        'handlers': {\n            'null': {\n                'level': 'DEBUG',\n                'class': 'logging.NullHandler',\n            },\n            'console': {\n                'level': 'DEBUG',\n                'class': 'logging.StreamHandler',\n                'formatter': 'simple'\n            },\n            'root': {\n                'class': log_class,\n                'formatter': 'verbose',\n                'filename': os.path.join(\n                    log_dir, '%s-django.log' % log_name_prefix),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n            'component': {\n                'class': log_class,\n                'formatter': 'verbose',\n                'filename': os.path.join(\n                    log_dir, '%s-component.log' % log_name_prefix),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n            'mysql': {\n                'class': log_class,\n                'formatter': 'verbose',\n                'filename': os.path.join(\n                    log_dir, '%s-mysql.log' % log_name_prefix),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n            'celery': {\n                'class': log_class,\n                'formatter': 'verbose',\n                'filename': os.path.join(\n                    log_dir, '%s-celery.log' % log_name_prefix),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n            'blueapps': {\n                'class': log_class,\n                'formatter': 'verbose',\n                'filename': os.path.join(\n                    log_dir, '%s-django.log' % log_name_prefix),\n                # TODO blueapps log 等待平台提供单独的路径\n                # log_dir, '%s-blueapps.log' % log_name_prefix),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n        },\n        'loggers': {\n            'django': {\n                'handlers': ['null'],\n                'level': 'INFO',\n                'propagate': True,\n            },\n            'django.server': {\n                'handlers': ['console'],\n                'level': log_level,\n                'propagate': True,\n            },\n            'django.request': {\n                'handlers': ['root'],\n                'level': 'ERROR',\n                'propagate': True,\n            },\n            'django.db.backends': {\n                'handlers': ['mysql'],\n                'level': log_level,\n                'propagate': True,\n            },\n            # the root logger ,用于整个project的logger\n            'root': {\n                'handlers': ['root'],\n                'level': log_level,\n                'propagate': True,\n            },\n            # 组件调用日志\n            'component': {\n                'handlers': ['component'],\n                'level': log_level,\n                'propagate': True,\n            },\n            'celery': {\n                'handlers': ['celery'],\n                'level': log_level,\n                'propagate': True,\n            },\n            # other loggers...\n            # blueapps\n            'blueapps': {\n                'handlers': ['blueapps'],\n                'level': log_level,\n                'propagate': True,\n            },\n            # 普通app日志\n            'app': {\n                'handlers': ['root'],\n                'level': log_level,\n                'propagate': True,\n            }\n        }\n    }\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/sites/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/conf/sites/open/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n@created: 2017/6/7\n@desc:\n\"\"\"\nfrom django.conf import settings\nfrom django.core.management import execute_from_command_line\n\n\ndef bk_admin(argv=None):\n    if not settings.configured:\n        settings.configure()\n    settings.INSTALLED_APPS += (\"blueapps.contrib.bk_commands\",)\n    return execute_from_command_line(argv)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/commands/init.py",
    "content": "# -*- coding: utf-8 -*-\nimport os\nfrom importlib import import_module\nfrom collections import OrderedDict\nfrom os import path\n\nfrom six.moves import input\n\nfrom django.core.management.base import CommandError\n\nimport blueapps\nfrom blueapps.contrib.bk_commands.management.templates import \\\n    BlueTemplateCommand\n\nplatform_esb_minimum_version_map = OrderedDict(\n    [('ieod', '0.0.68'),\n     ('clouds', '0.0.42'),\n     ('qcloud', '0.1.14'),\n     ('tencent', '0.0.21'),\n     ('open', '')]\n)\n\nplatform_secret_key_length_map = {\n    'ieod': 50,\n    'clouds': 50,\n    'qcloud': 50,\n    'tencent': 50,\n    'open': 36\n}\n\n\nclass Command(BlueTemplateCommand):\n    help = ('Creates a Django project directory structure for the given '\n            'project name in the current directory or optionally in the '\n            'given directory.')\n    missing_args_message = 'You must provide a project name.'\n\n    def add_arguments(self, parser):\n        parser.add_argument('name', help='Name of the application or project.')\n        parser.add_argument('directory', nargs='?',\n                            help='Optional destination directory')\n        parser.add_argument('--template',\n                            help='The path or URL to load the template from.')\n        parser.add_argument(\n            '--secret_key',\n            dest='secret_key',\n            help='App secret of the application, you can also enter later.'\n        )\n        parser.add_argument(\n            '--run_ver',\n            dest='run_ver',\n            choices=list(platform_esb_minimum_version_map.keys()),\n            help='App run_ver of the application, you can also enter later.'\n        )\n        parser.add_argument(\n            '--extension', '-e', dest='extensions',\n            action='append', default=['py', 'txt'],\n            help='The file extension(s) to render (default: \"py,txt\"). '\n                 'Separate multiple extensions with commas, or use '\n                 '-e multiple times.'\n        )\n        parser.add_argument(\n            '--name', '-n', dest='files',\n            action='append', default=[],\n            help='The file name(s) to render. Separate multiple extensions '\n                 'with commas, or use -n multiple times.'\n        )\n\n    def handle(self, **options):\n        app_code, target = options.pop('name'), options.pop('directory')\n        self.validate_name(app_code, 'project')\n\n        # Check that the project_name cannot be imported.\n        try:\n            import_module(app_code)\n        except ImportError:\n            pass\n        else:\n            raise CommandError('%r conflicts with the name of an existing '\n                               'Python module and cannot be used as a '\n                               'project name. Please try another name.' %\n                               app_code)\n\n        run_ver = blueapps.get_run_ver() or options.get('run_ver')\n        # Create a random SECRET_KEY to put it in the main settings.\n        if not options.get('secret_key'):\n            secret_key = input('secret_key: ').strip()\n            if not run_ver:\n                run_ver = self.confirm_run_ver()\n            if not secret_key or len(secret_key) != \\\n                    platform_secret_key_length_map[run_ver]:\n                raise CommandError(\"secret_key is necessary and \"\n                                   \"it's length is %s\" %\n                                   platform_secret_key_length_map[run_ver])\n            options['secret_key'] = secret_key\n        options['run_ver'] = run_ver\n        options['app_code'] = app_code\n        options['blueapps_version'] = blueapps.__version__\n        options[\n            'esb_sdk_minimum_version'] = platform_esb_minimum_version_map.get(\n            run_ver)\n        project_name = 'trunk'\n        super(Command, self).handle('project', project_name, target,\n                                    **options)\n\n        # 根据版本确定requirements.txt\n        if target is None:\n            top_dir = path.join(os.getcwd(), project_name)\n        else:\n            top_dir = os.path.abspath(path.expanduser(target))\n        # open版本的requirements-open.txt路径\n        open_requirements_file = os.path.join(top_dir, 'requirements-open.txt')\n        # v3版本的requirements-v3.txt路径\n        v3_requirements_file = os.path.join(top_dir, 'requirements-v3.txt')\n        # 最终的requirements.txt路径\n        requirements_file = os.path.join(top_dir, 'requirements.txt')\n\n        # open版本包定制\n        if run_ver == 'open':\n            # 保留requirements - open.txt, 并重命名为requirements.txt\n            os.remove(v3_requirements_file)\n            os.rename(open_requirements_file, requirements_file)\n        # v3(ieod,qcloud,clouds,tencent)版本包定制\n        else:\n            # 保留requirements-v3.txt,并重命名为requirements.txt\n            os.remove(open_requirements_file)\n            os.rename(v3_requirements_file, requirements_file)\n\n    def confirm_run_ver(self):\n        run_ver_choice = list(platform_esb_minimum_version_map.keys())\n        choice = self.choice_input(\n            'Please select a run version:', run_ver_choice)\n        return run_ver_choice[choice - 1]\n\n    def choice_input(self, question, choices):\n        self.stdout.write(question)\n        for i, choice in enumerate(choices):\n            self.stdout.write(' %s -> %s' % (i + 1, choice))\n        result = input('Select an option: ').strip()\n        while True:\n            try:\n                value = int(result)\n                if 0 < value <= len(choices):\n                    return value\n            except ValueError:\n                pass\n            result = input('Please select a valid option: ')\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/commands/startexample.py",
    "content": "# -*- coding: utf-8 -*-\nimport io\nimport re\nimport json\nimport os\nimport sys\nimport shutil\nfrom os import path\nfrom codecs import open\n\nimport django\nfrom django.core.management.base import CommandError\nfrom django.core.management.templates import TemplateCommand\nfrom django.conf import settings\n\nimport blueapps\nPY_VER = sys.version\n\n\nclass Command(TemplateCommand):\n    help = u\"基于蓝鲸开发框架初始化开发样例\"\n\n    def add_arguments(self, parser):\n        parser.add_argument('directory', nargs='?', default='./',\n                            help='Optional destination directory')\n\n    def handle(self, **options):\n        target = options.pop('directory')\n\n        # 先获取原内容\n        old_file = open('config/default.py', encoding='utf-8')\n\n        # if some directory is given, make sure it's nicely expanded\n        top_dir = path.abspath(path.expanduser(target))\n        if not path.exists(top_dir):\n            raise CommandError(\"Destination directory '%s' does not \"\n                               \"exist, please init first.\" % top_dir)\n        if not path.exists(path.join(top_dir, 'manage.py')):\n            raise CommandError(\"Current directory '%s' is not \"\n                               \"a django project dir, please init first. \"\n                               \"(bk-admin init ${app_code})\" %\n                               top_dir)\n\n        base_subdir = 'example_template'\n\n        append_file_tuple = (('', 'requirements.txt'),)\n\n        # Setup a stub settings environment for template rendering\n        if not settings.configured:\n            settings.configure()\n            django.setup()\n\n        template_dir = path.join(blueapps.__path__[0], 'conf', base_subdir)\n        run_ver = None\n        conf_file = open(path.join(os.getcwd(), 'config', '__init__.py'), encoding='utf-8')\n        for line in conf_file.readlines():\n            if line.startswith('RUN_VER'):\n                run_ver = re.search(\"\\'(.+)\\'\", line).group(1)\n        conf_file.close()\n\n        prefix_length = len(template_dir) + 1\n\n        for root, dirs, files in os.walk(template_dir):\n\n            relative_dir = root[prefix_length:]\n\n            target_dir = path.join(top_dir, relative_dir)\n            if not path.exists(target_dir):\n                os.mkdir(target_dir)\n\n            flag = root.endswith('sites')\n            for dirname in dirs[:]:\n                if dirname.startswith('.') or dirname == '__pycache__' or (flag and dirname != run_ver):\n                    dirs.remove(dirname)\n\n            for filename in files:\n                if filename.endswith(('.pyo', '.pyc', '.py.class', '.json')):\n                    # Ignore some files as they cause various breakages.\n                    continue\n                old_path = path.join(root, filename)\n                new_path = path.join(top_dir, relative_dir, filename)\n                for old_suffix, new_suffix in self.rewrite_template_suffixes:\n                    if new_path.endswith(old_suffix):\n                        new_path = new_path[:-len(old_suffix)] + new_suffix\n                        break  # Only rewrite once\n\n                with io.open(old_path, 'rb') as template_file:\n                    content = template_file.read()\n                w_mode = 'wb'\n                for _root, _filename in append_file_tuple:\n                    if _root == relative_dir and _filename == filename:\n                        w_mode = 'ab'\n                with io.open(new_path, w_mode) as new_file:\n                    new_file.write(content)\n\n                try:\n                    shutil.copymode(old_path, new_path)\n                    self.make_writeable(new_path)\n                except OSError:\n                    self.stderr.write(\n                        \"Notice: Couldn't set permission bits on %s. You're \"\n                        \"probably using an uncommon filesystem setup. No \"\n                        \"problem.\" % new_path, self.style.NOTICE)\n\n        # 处理open版本导入的blueking与其他版本不同的情况\n        test_component_base = path.join(top_dir, 'blueapps_example', 'test_component')\n        test_app_tags_base = path.join(top_dir, 'blueapps_example', 'test_app_tags')\n        if run_ver == 'open':\n            os.remove(path.join(test_component_base, 'views.py'))\n            shutil.move(path.join(test_component_base, 'views_open.py'), path.join(test_component_base, 'views.py'))\n            os.remove(path.join(test_app_tags_base, 'views.py'))\n            shutil.move(path.join(test_app_tags_base, 'views_open.py'), path.join(test_app_tags_base, 'views.py'))\n        else:\n            os.remove(path.join(test_component_base, 'views_open.py'))\n            os.remove(path.join(test_app_tags_base, 'views_open.py'))\n        # 将静态文件夹移到项目根目录的static文件夹中\n        shutil.move(path.join(top_dir, 'blueapps_example', 'static', 'blueapps_example'),\n                    path.join(top_dir, 'static'))\n        shutil.rmtree(path.join(top_dir, 'blueapps_example', 'static'))\n\n        # 修改文件\n        modify_default_file(old_file)\n\n\n# 获取原先的 default 文件并对其进行追加和覆盖\ndef modify_default_file(old_file_object):\n    # 打开覆盖前的文件和替换的 json 文件\n    with open(\"%s/conf/example_template/config/default.json\" % blueapps.__path__[0], 'r') as json_file:\n        with old_file_object as old_file:\n            # 获取 json 数据内容\n            result_content = old_file.read()\n            json_dict = json.load(json_file)\n            # 根据 key 进行替换会追加内容\n            for replace_property in json_dict:\n                # 获得 key 值\n                propertys = json_dict.get(replace_property)\n                # 寻找 key 值所在位置\n                start_index = result_content.find(str(replace_property))\n                # 获得 key 的 content 内容\n                content = propertys.get('content')\n                # mode 为 add 追加内容\n                if propertys.get('mode') == 'add':\n                    end_index = result_content.find(')', start_index) - 1\n                    temp_content = result_content[start_index:end_index].strip()\n                    # 检查最后一个是不是,结尾\n                    if temp_content[-1] == ',' or temp_content[-1] == '(':\n                        temp_content += '\\n'\n                    else:\n                        temp_content += ',\\n'\n                    # 内容替换 content 需要进行 str 方法转换\n                    result_content = ''.join(\n                        [result_content[:start_index], temp_content,\n                         str(content),\n                         result_content[end_index:]])\n                # mode 为 cover 进行覆盖内容\n                elif propertys.get('mode') == 'cover':\n                    end_index = result_content.find('False', start_index)\n                    # 即最后一个是 True 不需要做任何覆盖\n                    if end_index == -1:\n                        continue\n                    # 需要位移 start_index 防止覆盖变量名称\n                    start_index += len(replace_property)\n                    # 内容覆盖\n                    result_content = ''.join(\n                        [result_content[:start_index], str(content),\n                         result_content[end_index + 5:]])\n                else:\n                    # 其他情况\n                    break\n            with open('config/default.py', 'w', encoding='utf-8') as default_file:\n                default_file.write(result_content)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/commands/startweixin.py",
    "content": "# -*- coding: utf-8 -*-\nimport io\nimport json\nimport os\nimport sys\nimport shutil\nfrom os import path\n\nimport django\nfrom django.core.management.base import CommandError\nfrom django.core.management.templates import TemplateCommand\nfrom django.conf import settings\n\nimport blueapps\nPY_VER = sys.version\n\n\nclass Command(TemplateCommand):\n    help = u\"基于蓝鲸开发框架初始化开发样例\"\n\n    def add_arguments(self, parser):\n        parser.add_argument('directory', nargs='?', default='./',\n                            help='Optional destination directory')\n\n    def handle(self, **options):\n        target = options.pop('directory')\n        # 先获取原内容\n        if PY_VER[0] == '2':\n            old_file = open('config/default.py')\n        else:\n            old_file = open('config/default.py', encoding='utf-8')\n\n        # if some directory is given, make sure it's nicely expanded\n        top_dir = path.abspath(path.expanduser(target))\n        if not path.exists(top_dir):\n            raise CommandError(\"Destination directory '%s' does not \"\n                               \"exist, please init first.\" % top_dir)\n        if not path.exists(path.join(top_dir, 'manage.py')):\n            raise CommandError(\"Current directory '%s' is not \"\n                               \"a django project dir, please init first. \"\n                               \"(bk-admin init ${app_code})\" %\n                               top_dir)\n\n        base_subdir = 'weixin_template'\n\n        append_file_tuple = (('', 'requirements.txt'),)\n\n        # Setup a stub settings environment for template rendering\n        if not settings.configured:\n            settings.configure()\n            django.setup()\n\n        template_dir = path.join(blueapps.__path__[0], 'conf', base_subdir)\n        run_ver = None\n        conf_file = open(path.join(os.getcwd(), 'config', '__init__.py'))\n        for line in conf_file.readlines():\n            if line.startswith('RUN_VER'):\n                run_ver = line[11:-2]\n        conf_file.close()\n\n        prefix_length = len(template_dir) + 1\n\n        for root, dirs, files in os.walk(template_dir):\n\n            relative_dir = root[prefix_length:]\n\n            target_dir = path.join(top_dir, relative_dir)\n            if not path.exists(target_dir):\n                os.mkdir(target_dir)\n\n            flag = root.endswith('sites')\n            for dirname in dirs[:]:\n                if (\n                        dirname.startswith('.') or\n                        dirname == '__pycache__' or\n                        (flag and dirname != run_ver)\n                ):\n                    dirs.remove(dirname)\n\n            for filename in files:\n                if filename.endswith(('.pyo', '.pyc', '.py.class', '.json')):\n                    # Ignore some files as they cause various breakages.\n                    continue\n                old_path = path.join(root, filename)\n                new_path = path.join(top_dir, relative_dir, filename)\n                for old_suffix, new_suffix in self.rewrite_template_suffixes:\n                    if new_path.endswith(old_suffix):\n                        new_path = new_path[:-len(old_suffix)] + new_suffix\n                        break  # Only rewrite once\n\n                with io.open(old_path, 'rb') as template_file:\n                    content = template_file.read()\n                w_mode = 'wb'\n                for _root, _filename in append_file_tuple:\n                    if _root == relative_dir and _filename == filename:\n                        w_mode = 'ab'\n                with io.open(new_path, w_mode) as new_file:\n                    new_file.write(content)\n\n                try:\n                    shutil.copymode(old_path, new_path)\n                    self.make_writeable(new_path)\n                except OSError:\n                    self.stderr.write(\n                        \"Notice: Couldn't set permission bits on %s. You're \"\n                        \"probably using an uncommon filesystem setup. No \"\n                        \"problem.\" % new_path, self.style.NOTICE)\n        # 修改文件\n        modify_default_file(old_file)\n\n\n# 获取原先的 default 文件并对其进行追加和覆盖\ndef modify_default_file(old_file):\n    # 打开覆盖前的文件和替换的 json 文件\n    with open(\n            \"%s/conf/weixin_template/config/default.json\" % blueapps.__path__[\n                0], 'r') as json_file:\n        with old_file as old_file:\n            # 获取 json 数据内容\n            result_content = old_file.read()\n            json_dict = json.load(json_file)\n            # 根据 key 进行替换会追加内容\n            for replace_property in json_dict:\n                # 获得 key 值\n                propertys = json_dict.get(replace_property)\n                # 寻找 key 值所在位置\n                start_index = result_content.find(str(replace_property))\n                # 获得 key 的 content 内容\n                content = propertys.get('content')\n                # mode 为 add 追加内容\n                if propertys.get('mode') == 'add':\n                    end_index = result_content.find(')', start_index) - 1\n                    temp_content = result_content[start_index:end_index]\n                    # 检查最后一个是不是,结尾\n                    if temp_content[-1] == ',' or temp_content[-1] == '(':\n                        temp_content += '\\n'\n                    else:\n                        temp_content += ',\\n'\n                    # 内容替换 content 需要进行 str 方法转换\n                    result_content = ''.join(\n                        [result_content[:start_index], temp_content,\n                         str(content),\n                         result_content[end_index:]])\n                # mode 为 cover 进行覆盖内容\n                elif propertys.get('mode') == 'cover':\n                    end_index = result_content.find('False', start_index)\n                    # 即最后一个是 True 不需要做任何覆盖\n                    if end_index == -1:\n                        continue\n                    # 需要位移 start_index 防止覆盖变量名称\n                    start_index += len(replace_property)\n                    # 内容覆盖\n                    result_content = ''.join(\n                        [result_content[:start_index], str(content),\n                         result_content[end_index + 5:]])\n                else:\n                    # 其他情况\n                    break\n            if PY_VER[0] == '2':\n                with open('config/default.py', 'w') as default_file:\n                    default_file.write(result_content)\n            else:\n                with open('config/default.py', 'w',\n                          encoding='utf-8') as default_file:\n                    default_file.write(result_content)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/commands/startwxapp.py",
    "content": "# -*- coding: utf-8 -*-\nimport io\nimport os\nimport sys\nimport shutil\nfrom os import path\n\nimport django\nfrom django.core.management.base import CommandError\nfrom django.core.management.templates import TemplateCommand\nfrom django.conf import settings\n\nimport blueapps\nPY_VER = sys.version\n\n\nclass Command(TemplateCommand):\n    help = u\"基于蓝鲸开发框架初始化小程序开发样例\"\n\n    def add_arguments(self, parser):\n        parser.add_argument('directory', nargs='?', default='./',\n                            help='Optional destination directory')\n\n    def handle(self, **options):\n        target = options.pop('directory')\n\n        # if some directory is given, make sure it's nicely expanded\n        top_dir = path.abspath(path.expanduser(target))\n        if not path.exists(top_dir):\n            raise CommandError(\"Destination directory '%s' does not \"\n                               \"exist, please init first.\" % top_dir)\n        if not path.exists(path.join(top_dir, 'manage.py')):\n            raise CommandError(\"Current directory '%s' is not \"\n                               \"a django project dir, please init first. \"\n                               \"(bk-admin init ${app_code})\" %\n                               top_dir)\n\n        base_subdir = 'wxapp_template'\n\n        append_file_tuple = (('', 'requirements.txt'),)\n\n        # Setup a stub settings environment for template rendering\n        if not settings.configured:\n            settings.configure()\n            django.setup()\n\n        template_dir = path.join(blueapps.__path__[0], 'conf', base_subdir)\n        run_ver = None\n        conf_file = open(path.join(os.getcwd(), 'config', '__init__.py'))\n        for line in conf_file.readlines():\n            if line.startswith('RUN_VER'):\n                run_ver = line[11:-2]\n        conf_file.close()\n\n        if run_ver != u'ieod':\n            self.stderr.write(\n                \"Error: Currently only ieod version is supported. \"\n                \"Your version is %s\" % run_ver\n            )\n            sys.exit(-1)\n\n        prefix_length = len(template_dir) + 1\n\n        for root, dirs, files in os.walk(template_dir):\n\n            relative_dir = root[prefix_length:]\n\n            target_dir = path.join(top_dir, relative_dir)\n            if not path.exists(target_dir):\n                os.mkdir(target_dir)\n\n            flag = root.endswith('sites')\n            for dirname in dirs[:]:\n                if (\n                        dirname.startswith('.') or\n                        dirname == '__pycache__' or\n                        (flag and dirname != run_ver)\n                ):\n                    dirs.remove(dirname)\n\n            for filename in files:\n                if filename.endswith(('.pyo', '.pyc', '.py.class', '.json')):\n                    # Ignore some files as they cause various breakages.\n                    if filename != u'app.json':\n                        continue\n                old_path = path.join(root, filename)\n                new_path = path.join(top_dir, relative_dir, filename)\n                for old_suffix, new_suffix in self.rewrite_template_suffixes:\n                    if new_path.endswith(old_suffix):\n                        new_path = new_path[:-len(old_suffix)] + new_suffix\n                        break  # Only rewrite once\n\n                with io.open(old_path, 'rb') as template_file:\n                    content = template_file.read()\n                w_mode = 'wb'\n                for _root, _filename in append_file_tuple:\n                    if _root == relative_dir and _filename == filename:\n                        w_mode = 'ab'\n                with io.open(new_path, w_mode) as new_file:\n                    new_file.write(content)\n\n                try:\n                    shutil.copymode(old_path, new_path)\n                    self.make_writeable(new_path)\n                except OSError:\n                    self.stderr.write(\n                        \"Notice: Couldn't set permission bits on %s. You're \"\n                        \"probably using an uncommon filesystem setup. No \"\n                        \"problem.\" % new_path, self.style.NOTICE)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/management/templates.py",
    "content": "# -*- coding: utf-8 -*-\nimport errno\nimport os\nimport shutil\nfrom os import path\n\nimport django\nfrom django.core.management import CommandError\nfrom django.core.management.templates import TemplateCommand\nfrom django.core.management.utils import handle_extensions\nfrom django.template import Context, Engine\nfrom django.utils.version import get_docs_version\n\nimport blueapps\n\n\nclass BlueTemplateCommand(TemplateCommand):\n\n    def handle_template(self, template, subdir):\n        if template is None:\n            return path.join(blueapps.__path__[0], 'conf', subdir)\n\n        else:\n            return super(BlueTemplateCommand,\n                         self).handle_template(template, subdir)\n\n    def handle(self, app_or_project, name, target=None, **options):\n        self.app_or_project = app_or_project\n        self.paths_to_remove = []\n        self.verbosity = options['verbosity']\n\n        self.validate_name(name, app_or_project)\n\n        # if some directory is given, make sure it's nicely expanded\n        if target is None:\n            top_dir = path.join(os.getcwd(), name)\n            try:\n                os.makedirs(top_dir)\n            except OSError as e:\n                if e.errno == errno.EEXIST:\n                    message = \"'%s' already exists\" % top_dir\n                else:\n                    message = e\n                raise CommandError(message)\n        else:\n            top_dir = os.path.abspath(path.expanduser(target))\n            if not os.path.exists(top_dir):\n                raise CommandError(\"Destination directory '%s' does not \"\n                                   \"exist, please create it first.\" % top_dir)\n\n        extensions = tuple(handle_extensions(options['extensions']))\n        extra_files = ['csrftoken.js']\n        for file in options['files']:\n            extra_files.extend(map(lambda x: x.strip(), file.split(',')))\n        if self.verbosity >= 2:\n            self.stdout.write(\"Rendering %s template files with \"\n                              \"extensions: %s\\n\" %\n                              (app_or_project, ', '.join(extensions)))\n            self.stdout.write(\"Rendering %s template files with \"\n                              \"filenames: %s\\n\" %\n                              (app_or_project, ', '.join(extra_files)))\n\n        base_name = '%s_name' % app_or_project\n        base_subdir = '%s_template' % app_or_project\n        base_directory = '%s_directory' % app_or_project\n\n        context = Context(dict(options, **{\n            base_name: name,\n            base_directory: top_dir,\n            'docs_version': get_docs_version(),\n            'django_version': django.__version__,\n        }), autoescape=False)\n\n        # Setup a stub settings environment for template rendering\n        from django.conf import settings\n        if not settings.configured:\n            settings.configure()\n\n        template_dir = self.handle_template(options['template'],\n                                            base_subdir)\n        prefix_length = len(template_dir) + 1\n\n        for root, dirs, files in os.walk(template_dir):\n\n            path_rest = root[prefix_length:]\n            relative_dir = path_rest.replace(base_name, name)\n            if relative_dir:\n                target_dir = path.join(top_dir, relative_dir)\n                if not path.exists(target_dir):\n                    os.mkdir(target_dir)\n\n            for dirname in dirs[:]:\n                if dirname.startswith('.') or dirname == '__pycache__':\n                    dirs.remove(dirname)\n                # 处理多版本差异，将只对指定版本初始化\n                if \"run_ver\" in options and os.path.basename(root) == \"sites\":\n                    if dirname != options[\"run_ver\"]:\n                        dirs.remove(dirname)\n\n            for filename in files:\n                if filename.endswith(('.pyo', '.pyc', '.py.class')):\n                    # Ignore some files as they cause various breakages.\n                    continue\n                old_path = path.join(root, filename)\n                new_path = path.join(top_dir, relative_dir,\n                                     filename.replace(base_name, name))\n                if path.exists(new_path):\n                    raise CommandError(\"%s already exists, overlaying a \"\n                                       \"project or app into an existing \"\n                                       \"directory won't replace conflicting \"\n                                       \"files\" % new_path)\n\n                # Only render the Python files, as we don't want to\n                # accidentally render Django templates files\n                with open(old_path, 'rb') as template_file:\n                    content = template_file.read()\n                if filename.endswith(extensions) or filename in extra_files:\n                    content = content.decode('utf-8')\n                    template = Engine().from_string(content)\n                    content = template.render(context)\n                    content = content.encode('utf-8')\n                with open(new_path, 'wb') as new_file:\n                    new_file.write(content)\n\n                if self.verbosity >= 2:\n                    self.stdout.write(\"Creating %s\\n\" % new_path)\n                try:\n                    shutil.copymode(old_path, new_path)\n                    self.make_writeable(new_path)\n                except OSError:\n                    self.stderr.write(\n                        \"Notice: Couldn't set permission bits on %s. You're \"\n                        \"probably using an uncommon filesystem setup. No \"\n                        \"problem.\" % new_path, self.style.NOTICE)\n\n        if self.paths_to_remove:\n            if self.verbosity >= 2:\n                self.stdout.write(\"Cleaning up temporary files.\\n\")\n            for path_to_remove in self.paths_to_remove:\n                if path.isfile(path_to_remove):\n                    os.remove(path_to_remove)\n                else:\n                    shutil.rmtree(path_to_remove)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/contrib/bk_commands/test.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n@author: 蓝鲸\n@created: 2017/6/14\n@desc:\n\"\"\"\nimport sys\n\nfrom blueapps.contrib.bk_commands import bk_admin\n\nbk_admin(sys.argv)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/celery/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom blueapps.core.celery.celery import app as celery_app # noqa\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/celery/celery.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport os\n\nfrom django.conf import settings\nfrom celery import Celery, platforms\n\n# http://docs.celeryproject.org/en/latest/userguide/daemonizing.html#running-the-worker-with-superuser-privileges-root\n# for root start celery\n\nplatforms.C_FORCE_ROOT = True\n\n# set the default Django settings module for the 'celery' program.\nos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')\n\napp = Celery('proj')\n\n# Using a string here means the worker don't have to serialize\n# the configuration object to child processes.\n# - namespace='CELERY' means all celery-related configuration keys\n#   should have a `CELERY_` prefix.\napp.config_from_object('django.conf:settings')\n\n# Load task modules from all registered Django app configs.\napp.autodiscover_tasks(lambda: settings.INSTALLED_APPS)\n\n\n@app.task(bind=True)\ndef debug_task(self):\n    print('Request: {0!r}'.format(self.request))\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/exceptions/__init__.py",
    "content": "from blueapps.core.exceptions.base import *  # noqa\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/exceptions/base.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport logging\n\n\nclass BlueException(Exception):\n\n    ERROR_CODE = \"0000000\"\n    MESSAGE = \"APP异常\"\n    STATUS_CODE = 500\n    LOG_LEVEL = logging.ERROR\n\n    def __init__(self, message=None, data=None, *args):\n        \"\"\"\n        :param message: 错误消息\n        :param data: 其他数据\n        :param context: 错误消息 format dict\n        :param args: 其他参数\n        \"\"\"\n        super(BlueException, self).__init__(*args)\n        self.message = self.MESSAGE if message is None else message\n        self.data = data\n\n    def render_data(self):\n        return self.data\n\n    def response_data(self):\n        return {\n            \"result\": False,\n            \"code\": self.ERROR_CODE,\n            \"message\": self.message,\n            \"data\": self.render_data()\n        }\n\n\nclass ClientBlueException(BlueException):\n\n    MESSAGE = \"客户端请求异常\"\n    ERROR_CODE = \"40000\"\n    STATUS_CODE = 400\n\n\nclass ServerBlueException(BlueException):\n\n    MESSAGE = \"服务端服务异常\"\n    ERROR_CODE = \"50000\"\n    STATUS_CODE = 500\n\n\nclass ResourceNotFound(ClientBlueException):\n\n    MESSAGE = \"找不到请求的资源\"\n    ERROR_CODE = \"40400\"\n    STATUS_CODE = 404\n\n\nclass ParamValidationError(ClientBlueException):\n\n    MESSAGE = \"参数验证失败\"\n    ERROR_CODE = \"40000\"\n    STATUS_CODE = 400\n\n\nclass ParamRequired(ClientBlueException):\n\n    MESSAGE = \"关键参数缺失\"\n    ERROR_CODE = \"40001\"\n    STATUS_CODE = 400\n\n\nclass AccessForbidden(ClientBlueException):\n\n    MESSAGE = \"登陆失败\"\n    ERROR_CODE = \"40301\"\n    STATUS_CODE = 403\n\n\nclass RequestForbidden(ClientBlueException):\n\n    MESSAGE = \"请求拒绝\"\n    ERROR_CODE = \"40320\"\n    STATUS_CODE = 403\n\n\nclass ResourceLock(ClientBlueException):\n\n    MESSAGE = \"请求资源被锁定\"\n    ERROR_CODE = \"40330\"\n    STATUS_CODE = 403\n\n\nclass MethodError(ClientBlueException):\n\n    MESSAGE = \"请求方法不支持\"\n    ERROR_CODE = \"40501\"\n    STATUS_CODE = 405\n\n\nclass RioVerifyError(ClientBlueException):\n\n    MESSAGE = \"登陆请求经智能网关检测失败\"\n    ERROR_CODE = \"40502\"\n    STATUS_CODE = 405\n\n\nclass BkJwtVerifyError(ClientBlueException):\n\n    MESSAGE = \"登陆请求经JWT检测失败\"\n    ERROR_CODE = \"40503\"\n    STATUS_CODE = 401\n\n\nclass DatabaseError(ServerBlueException):\n\n    MESSAGE = \"数据库异常\"\n    ERROR_CODE = \"50110\"\n\n\nclass ApiNetworkError(ServerBlueException):\n\n    MESSAGE = \"网络异常导致远程服务失效\"\n    ERROR_CODE = \"50301\"\n    STATUS_CODE = 503\n\n\nclass ApiResultError(ServerBlueException):\n\n    MESSAGE = \"远程服务请求结果异常\"\n    ERROR_CODE = \"50302\"\n    STATUS_CODE = 503\n\n\nclass ApiNotAcceptable(ServerBlueException):\n\n    MESSAGE = \"远程服务返回结果格式异常\"\n    ERROR_CODE = \"50303\"\n    STATUS_CODE = 503\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/exceptions/middleware.py",
    "content": "# -*- coding: utf-8 -*-\n\nimport json\nimport logging\nimport traceback\n\nfrom django.conf import settings\nfrom django.http import JsonResponse, Http404\nfrom django.utils.deprecation import MiddlewareMixin\n\nfrom blueapps.core.exceptions.base import BlueException\n\ntry:\n    from raven.contrib.django.raven_compat.models import \\\n        sentry_exception_handler\n# 兼容未有安装sentry的情况\nexcept ImportError:\n    sentry_exception_handler = None\n\nlogger = logging.getLogger('blueapps')\n\n\nclass AppExceptionMiddleware(MiddlewareMixin):\n\n    def process_exception(self, request, exception):\n        \"\"\"\n        app后台错误统一处理\n        \"\"\"\n\n        self.exception = exception\n        self.request = request\n\n        # 用户自我感知的异常抛出\n        if isinstance(exception, BlueException):\n            logger.log(\n                exception.LOG_LEVEL,\n                (u\"\"\"捕获主动抛出异常, 具体异常堆栈->[%s] status_code->[%s] & \"\"\"\n                 u\"\"\"client_message->[%s] & args->[%s] \"\"\") % (\n                    traceback.format_exc(),\n                    exception.ERROR_CODE,\n                    exception.message,\n                    exception.args\n                )\n            )\n\n            response = JsonResponse(exception.response_data())\n\n            response.status_code = exception.STATUS_CODE\n            return response\n\n        # 用户未主动捕获的异常\n        logger.error(\n            (u\"\"\"捕获未处理异常,异常具体堆栈->[%s], 请求URL->[%s], \"\"\"\n             u\"\"\"请求方法->[%s] 请求参数->[%s]\"\"\") % (\n                traceback.format_exc(),\n                request.path,\n                request.method,\n                json.dumps(getattr(request, request.method, None))\n            )\n        )\n\n        # 对于check开头函数进行遍历调用，如有满足条件的函数，则不屏蔽异常\n        check_funtions = self.get_check_functions()\n        for check_function in check_funtions:\n            if check_function():\n                return None\n\n        response = JsonResponse({\n            \"result\": False,\n            'code': \"50000\",\n            'message': u\"系统异常,请联系管理员处理\",\n            'data': None\n        })\n        response.status_code = 500\n\n        # notify sentry\n        if sentry_exception_handler is not None:\n            sentry_exception_handler(request=request)\n\n        return response\n\n    def get_check_functions(self):\n        \"\"\"获取需要判断的函数列表\"\"\"\n        return [getattr(self, func) for func in dir(self) if func.startswith('check') and callable(getattr(self, func))]\n\n    def check_is_debug(self):\n        \"\"\"判断是否是开发模式\"\"\"\n        return settings.DEBUG\n\n    def check_is_http404(self):\n        \"\"\"判断是否基于Http404异常\"\"\"\n        return isinstance(self.exception, Http404)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/handler/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/handler/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.core.handlers.wsgi import WSGIHandler\nfrom django.conf import settings\n\n\nclass BkWSGIHandler(WSGIHandler):\n    def __call__(self, environ, start_response):\n        script_name = environ.get('HTTP_X_SCRIPT_NAME')\n        if script_name is not None:\n            if script_name == '/':\n                # '/'的含义：独立域名，不启用script_name\n                script_name = ''\n            environ['SCRIPT_NAME'] = script_name\n            settings.FORCE_SCRIPT_NAME = settings.SITE_URL = '%s/' % script_name\n\n            # 如果没有独立域名的配置，需要不断的适配，否则可以直接使用\n            if not settings.STATIC_URL.startswith(\"http\"):\n                settings.STATIC_URL = '%sstatic/' % settings.SITE_URL\n        return super(BkWSGIHandler, self).__call__(environ, start_response)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/sites/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/sites/middleware.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.http.request import split_domain_port, validate_host\nfrom django.utils.module_loading import import_module\n\nfrom blueapps.conf import settings\n\n\nclass UserAgentMiddleware(object):\n\n    def process_request(self, request):\n        request.is_mobile = lambda: bool(settings.RE_MOBILE.search(\n            request.headers.get('user-agent', '')))\n\n        request.is_rio = lambda: bool(\n            request.headers.get('staffname', '') and settings.RIO_TOKEN and\n            settings.RE_WECHAT.search(request.headers.get('user-agent', ''))\n        )\n\n        request.is_wechat = lambda: bool(settings.RE_WECHAT.search(\n            request.headers.get('user-agent', '')) and not request.is_rio())\n\n        request.is_bk_jwt = lambda: bool(request.headers.get('x-bkapi-jwt', ''))\n\n\nclass SiteUrlconfMiddleware(object):\n    top_module = 'conf.sites'\n\n    def process_request(self, request):\n        domain, port = split_domain_port(request.get_host())\n\n        for site in settings.SITES:\n            site = site.copy()\n            try:\n                if validate_host(domain, site['HOSTS']):\n                    urlconf = '.'.join([self.top_module, site['NAME'], 'urls'])\n                    import_module(urlconf)\n                    break\n            except ImportError:\n                pass\n            except Exception:\n                pass\n        else:\n            urlconf = settings.ROOT_URLCONF\n\n        request.urlconf = urlconf\n\n\nclass SiteSettingsMiddleware(object):\n    top_module = 'conf.sites'\n\n    def _enter(self, module):\n        for key in dir(module):\n            if not key.startswith('_') and key == key.upper():\n                self._changes[key] = {}\n                if hasattr(settings, key):\n                    self._changes[key]['func'] = setattr\n                    self._changes[key]['args'] = [key, getattr(settings, key)]\n                else:\n                    self._changes[key]['func'] = delattr\n                    self._changes[key]['args'] = [key]\n\n                setattr(settings, key, getattr(module, key))\n\n    def _exit(self):\n        for key in self._changes:\n            self._changes[key]['func'](settings, *self._changes[key]['args'])\n\n    def process_request(self, request):\n        domain, port = split_domain_port(request.get_host())\n\n        self._changes = {}\n\n        for site in settings.SITES:\n            site = site.copy()\n            try:\n                if validate_host(domain, site['HOSTS']):\n                    site_settings = '.'.join([self.top_module,\n                                              site['NAME'],\n                                              'settings'])\n                    self._enter(import_module(site_settings))\n                    break\n            except ImportError:\n                pass\n\n    def process_response(self, request, response):\n        self._exit()\n        return response\n\n    def process_exception(self, request, exception):\n        self._exit()\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/core/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\nimport django\nfrom blueapps.core.handler.wsgi import BkWSGIHandler\n\n\ndef get_wsgi_application():\n    \"\"\"\n    The public interface to Django's WSGI support. Should return a WSGI\n    callable.\n\n    Allows us to avoid making django.core.handlers.WSGIHandler public API, in\n    case the internal WSGI implementation changes or moves in the future.\n    \"\"\"\n    django.setup(set_prefix=False)\n    return BkWSGIHandler()\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/bkui/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/bkui/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom __future__ import unicode_literals\n\nfrom django.urls import resolve\nfrom django.conf import settings\n\n\nclass BkuiPageMiddleware(object):\n\n    def __init__(self, get_response):\n        self.get_response = get_response\n\n    def __call__(self, request):\n        response = self.get_response(request)\n\n        # 判断是否发生404的问题，及BKUI的\n        if response.status_code == 404 and settings.IS_BKUI_HISTORY_MODE:\n            home_view_func = resolve('/')\n            return home_view_func.func(request)\n\n        return response\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/request_provider.py",
    "content": "# -*- coding: utf-8 -*-\nfrom blueapps.utils.request_provider import RequestProvider\n\n__all__ = [\"RequestProvider\"]\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/xss/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/xss/decorators.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom django.utils.decorators import available_attrs\n\ntry:\n    from functools import wraps\nexcept ImportError:\n    from django.utils.functional import wraps  # Python 2.4 fallback.\n\n\n# ===============================================================================\n# 转义装饰器\n# ===============================================================================\ndef escape_exempt(view_func):\n    \"\"\"\n    转义豁免，被此装饰器修饰的action可以不进行中间件escape\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n    wrapped_view.escape_exempt = True\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n\n\ndef escape_script(view_func):\n    \"\"\"\n    被此装饰器修饰的action会对GET与POST参数进行javascript escape\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n    wrapped_view.escape_script = True\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n\n\ndef escape_url(view_func):\n    \"\"\"\n    被此装饰器修饰的action会对GET与POST参数进行url escape\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n    wrapped_view.escape_url = True\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n\n\ndef escape_exempt_param(*param_list, **param_list_dict):\n    \"\"\"\n    此装饰器用来豁免某个view函数的某个参数\n    @param param_list: 参数列表\n    @return:\n    \"\"\"\n    def _escape_exempt_param(view_func):\n        def wrapped_view(*args, **kwargs):\n            return view_func(*args, **kwargs)\n        if param_list_dict.get('param_list'):\n            wrapped_view.escape_exempt_param = param_list_dict['param_list']\n        else:\n            wrapped_view.escape_exempt_param = list(param_list)\n        return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n    return _escape_exempt_param\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/xss/middlewares.py",
    "content": "# -*- coding: utf-8 -*-\nimport re\nimport json\nimport logging\n\nfrom django.conf import settings\nfrom django.utils.deprecation import MiddlewareMixin\nfrom .utils import html_escape, url_escape, html_escape_name, check_script\n\n\nSITE_URL = settings.SITE_URL\nlogger = logging.getLogger(\"app\")\n\n\nclass CheckXssMiddleware(MiddlewareMixin):\n\n    def __init__(self, *args, **kwargs):\n        self.__escape_param_list = []\n        super(CheckXssMiddleware, self).__init__(*args, **kwargs)\n\n    def process_view(self, request, view, args, kwargs):\n        try:\n            # 判断豁免权\n            if getattr(view, 'escape_exempt', False):\n                return None\n\n            # 获取豁免参数名\n            self.__escape_param_list = getattr(view, 'escape_exempt_param', []) if getattr(\n                view, 'escape_exempt_param', False) else []\n\n            escapeType = None\n            if getattr(view, 'escape_script', False):\n                escapeType = \"script\"\n            elif getattr(view, 'escape_url', False):\n                escapeType = \"url\"\n            # get参数转换\n            request.GET = self.__escape_data(request.path, request.GET, escapeType)\n            # post参数转换\n            request.POST = self.__escape_data(request.path, request.POST, escapeType)\n        except Exception as e:\n            logger.error(u\"CheckXssMiddleware 转换失败！%s\" % e)\n        return None\n\n    def __escape_data(self, path, query_dict, escape_type=None):\n        \"\"\"\n        GET/POST参数转义\n        \"\"\"\n        data_copy = query_dict.copy()\n        for _get_key, _get_value_list in data_copy.lists():\n            new_value_list = []\n            for _get_value in _get_value_list:\n                new_value = _get_value\n                # json串不进行转义\n                try:\n                    json.loads(_get_value)\n                    is_json = True\n                except Exception:\n                    is_json = False\n                # 转义新数据\n                if not is_json:\n                    try:\n                        if escape_type is None:\n                            use_type = self.__filter_param(path, _get_key)\n                        else:\n                            use_type = escape_type\n\n                        if use_type == 'url':\n                            new_value = url_escape(_get_value)\n                        elif use_type == 'script':\n                            new_value = check_script(_get_value, 1)\n                        elif use_type == 'name':\n                            new_value = html_escape_name(_get_value)\n                        elif _get_key in self.__escape_param_list:\n                            new_value = _get_value\n                        else:\n                            new_value = html_escape(_get_value, 1)\n                    except Exception as e:\n                        logger.error(u\"CheckXssMiddleware GET/POST参数 转换失败！%s\" % e)\n                        new_value = _get_value\n                else:\n                    try:\n                        new_value = html_escape(_get_value, 1, True)\n                    except Exception as e:\n                        logger.error(u\"CheckXssMiddleware GET/POST参数 转换失败！%s\" % e)\n                        new_value = _get_value\n                new_value_list.append(new_value)\n            data_copy.setlist(_get_key, new_value_list)\n        return data_copy\n\n    def __filter_param(self, path, param):\n        \"\"\"\n        特殊path处理\n        @param path: 路径\n        @param param: 参数\n        @return: 'html/name/url/script/exempt'\n        \"\"\"\n        use_name, use_url, use_script = self.__filter_path_list()\n        try:\n            result = 'html'\n            # name过滤\n            for name_path, name_v in use_name.items():\n                is_path = re.match(r'^%s' % name_path, path)\n                if is_path and param in name_v:\n                    result = 'name'\n                    break\n            # url过滤\n            if result == 'html':\n                for url_path, url_v in use_url.items():\n                    is_path = re.match(r'^%s' % url_path, path)\n                    if is_path and param in url_v:\n                        result = 'url'\n                        break\n            # script过滤\n            if result == 'html':\n                for script_path, script_v in use_script.items():\n                    is_path = re.match(r'^%s' % script_path, path)\n                    if is_path and param in script_v:\n                        result = 'script'\n                        break\n        except Exception as e:\n            logger.error(u\"CheckXssMiddleware 特殊path处理失败！%s\" % e)\n            result = 'html'\n        return result\n\n    def __filter_path_list(self):\n        \"\"\"\n        特殊path注册\n        \"\"\"\n        use_name = {}\n        use_url = {\n            '%saccounts/login' % SITE_URL: ['next'],\n            '%saccounts/login_page' % SITE_URL: ['req_url'],\n            '%saccounts/login_success' % SITE_URL: ['req_url'],\n            '%s' % SITE_URL: ['url'],\n        }\n        use_script = {}\n        return (use_name, use_url, use_script)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/xss/pxfilter.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nPython 富文本XSS过滤类\n@package XssHtml\n@version 0.1\n@link http://phith0n.github.io/python-xss-filter\n@since 20150407\n@copyright (c) Phithon All Rights Reserved\nBased on native Python module HTMLParser purifier of HTML, To Clear all javascript in html\nYou can use it in all python web framework\nWritten by Phithon <root@leavesongs.com> in 2015 and placed in the public domain.\nphithon <root@leavesongs.com> 编写于20150407\nFrom: XDSEC <www.xdsec.org> & 离别歌 <www.leavesongs.com>\nGitHub Pages: https://github.com/phith0n/python-xss-filter\nUsage:\n    parser = XssHtml()\n    parser.feed('<html code>')\n    parser.close()\n    html = parser.getHtml()\n    print html\nRequirements\nPython 2.6+ or 3.2+\nCannot defense xss in browser which is belowed IE7\n浏览器版本：IE7+ 或其他浏览器，无法防御IE6及以下版本浏览器中的XSS\n\"\"\"\nimport re\nfrom six.moves.html_parser import HTMLParser\n\n\nclass XssHtml(HTMLParser):\n    allow_tags = ['a', 'img', 'br', 'strong', 'b', 'code', 'pre',\n                  'p', 'div', 'em', 'span', 'h1', 'h2', 'h3', 'h4',\n                  'h5', 'h6', 'blockquote', 'ul', 'ol', 'tr', 'th', 'td',\n                  'hr', 'li', 'u', 'embed', 's', 'table', 'thead', 'tbody',\n                  'caption', 'small', 'q', 'sup', 'sub']\n    common_attrs = [\"id\", \"style\", \"class\", \"name\"]\n    nonend_tags = [\"img\", \"hr\", \"br\", \"embed\"]\n    tags_own_attrs = {\n        \"img\": [\"src\", \"width\", \"height\", \"alt\", \"align\"],\n        \"a\": [\"href\", \"target\", \"rel\", \"title\"],\n        \"embed\": [\"src\", \"width\", \"height\", \"type\", \"allowfullscreen\", \"loop\", \"play\", \"wmode\", \"menu\"],\n        \"table\": [\"border\", \"cellpadding\", \"cellspacing\"],\n    }\n\n    def __init__(self, allows=[]):\n        HTMLParser.__init__(self)\n        self.allow_tags = allows if allows else self.allow_tags\n        self.result = []\n        self.start = []\n        self.data = []\n\n    def getHtml(self):\n        \"\"\"\n        Get the safe html code\n        \"\"\"\n        for i in range(0, len(self.result)):\n            tmp = self.result[i].rstrip('\\n')\n            tmp = tmp.lstrip('\\n')\n            if tmp:\n                self.data.append(tmp)\n        return ''.join(self.data)\n\n    def handle_startendtag(self, tag, attrs):\n        self.handle_starttag(tag, attrs)\n\n    def handle_starttag(self, tag, attrs):\n        if tag not in self.allow_tags:\n            return\n        end_diagonal = ' /' if tag in self.nonend_tags else ''\n        if not end_diagonal:\n            self.start.append(tag)\n        attdict = {}\n        for attr in attrs:\n            attdict[attr[0]] = attr[1]\n\n        attdict = self.__wash_attr(attdict, tag)\n        if hasattr(self, \"node_%s\" % tag):\n            attdict = getattr(self, \"node_%s\" % tag)(attdict)\n        else:\n            attdict = self.node_default(attdict)\n\n        attrs = []\n        for (key, value) in attdict.items():\n            attrs.append('%s=\"%s\"' % (key, self.__htmlspecialchars(value)))\n        attrs = (' ' + ' '.join(attrs)) if attrs else ''\n        self.result.append('<' + tag + attrs + end_diagonal + '>')\n\n    def handle_endtag(self, tag):\n        if self.start and tag == self.start[len(self.start) - 1]:\n            self.result.append('</' + tag + '>')\n            self.start.pop()\n\n    def handle_data(self, data):\n        self.result.append(self.__htmlspecialchars(data))\n\n    def handle_entityref(self, name):\n        if name.isalpha():\n            self.result.append(\"&%s;\" % name)\n\n    def handle_charref(self, name):\n        if name.isdigit():\n            self.result.append(\"&#%s;\" % name)\n\n    def node_default(self, attrs):\n        attrs = self.__common_attr(attrs)\n        return attrs\n\n    def node_a(self, attrs):\n        attrs = self.__common_attr(attrs)\n        attrs = self.__get_link(attrs, \"href\")\n        attrs = self.__set_attr_default(attrs, \"target\", \"_blank\")\n        attrs = self.__limit_attr(attrs, {\n            \"target\": [\"_blank\", \"_self\"]\n        })\n        return attrs\n\n    def node_embed(self, attrs):\n        attrs = self.__common_attr(attrs)\n        attrs = self.__get_link(attrs, \"src\")\n        attrs = self.__limit_attr(attrs, {\n            \"type\": [\"application/x-shockwave-flash\"],\n            \"wmode\": [\"transparent\", \"window\", \"opaque\"],\n            \"play\": [\"true\", \"false\"],\n            \"loop\": [\"true\", \"false\"],\n            \"menu\": [\"true\", \"false\"],\n            \"allowfullscreen\": [\"true\", \"false\"]\n        })\n        attrs[\"allowscriptaccess\"] = \"never\"\n        attrs[\"allownetworking\"] = \"none\"\n        return attrs\n\n    def __true_url(self, url):\n        prog = re.compile(r\"^(http|https|ftp)://.+\", re.I | re.S)\n        if prog.match(url):\n            return url\n        else:\n            return \"http://%s\" % url\n\n    def __true_style(self, style):\n        if style:\n            style = re.sub(r\"(\\\\|&#|/\\*|\\*/)\", \"_\", style)\n            style = re.sub(r\"e.*x.*p.*r.*e.*s.*s.*i.*o.*n\", \"_\", style)\n        return style\n\n    def __get_style(self, attrs):\n        if \"style\" in attrs:\n            attrs[\"style\"] = self.__true_style(attrs.get(\"style\"))\n        return attrs\n\n    def __get_link(self, attrs, name):\n        if name in attrs:\n            attrs[name] = self.__true_url(attrs[name])\n        return attrs\n\n    def __wash_attr(self, attrs, tag):\n        if tag in self.tags_own_attrs:\n            other = self.tags_own_attrs.get(tag)\n        else:\n            other = []\n        if attrs:\n            for (key, value) in list(attrs.items()):\n                if key not in self.common_attrs + other:\n                    del attrs[key]\n        return attrs\n\n    def __common_attr(self, attrs):\n        attrs = self.__get_style(attrs)\n        return attrs\n\n    def __set_attr_default(self, attrs, name, default=''):\n        if name not in attrs:\n            attrs[name] = default\n        return attrs\n\n    def __limit_attr(self, attrs, limit={}):\n        for (key, value) in limit.items():\n            if key in attrs and attrs[key] not in value:\n                del attrs[key]\n        return attrs\n\n    def __htmlspecialchars(self, html):\n        return html.replace(\"<\", \"&lt;\")\\\n            .replace(\">\", \"&gt;\")\\\n            .replace('\"', \"&quot;\")\\\n            .replace(\"'\", \"&#039;\")\n\n\nif \"__main__\" == __name__:\n    parser = XssHtml()\n    parser.feed(\"\"\"<p><img src=1 onerror=alert(/xss/)></p><div class=\"left\">\n        <a href='javascript:prompt(1)'><br />hehe</a></div>\n        <p id=\"test\" onmouseover=\"alert(1)\">&gt;M<svg>\n        <a href=\"https://www.baidu.com\" target=\"self\">MM</a></p>\n        <embed src='javascript:alert(/hehe/)' allowscriptaccess=always />\"\"\")\n    parser.close()\n    print(parser.getHtml())\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/middleware/xss/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n蓝鲸平台提供的公用方法\n\n#===============================================================================\n# 1.页面输入内容转义（防止xss攻击）\nfrom common.utils import html_escape, url_escape\n\n # 转义html内容\n html_content = html_escape(input_content)\n\n # 转义url内容\n url_content = url_escape(input_content)\n#===============================================================================\n\"\"\"\nfrom .pxfilter import XssHtml\n\n\ndef html_escape(str_escape, fromtype=0, is_json=False):\n    \"\"\"\n    字符串转义为html代码\n    @param str_escape: 需要解析的html代码\n    @param fromtype: 来源，0：views函数，1：middleware\n    @param is_json: 是否为json串\n    \"\"\"\n    try:\n        result_str = escape_new(str_escape, fromtype, is_json)\n        return result_str\n    except Exception:\n        return str_escape\n\n\ndef url_escape(url_escape):\n    \"\"\"\n    转义url中的特殊字符\n    @param str_escape: 需要解析的url\n    \"\"\"\n    try:\n        result_str = escape_url(url_escape)\n        return result_str\n    except Exception:\n        return url_escape\n\n\ndef html_escape_name(str_escape):\n    \"\"\"\n    字符串转义为html代码\n    @param str_escape: 需要解析的html代码\n    \"\"\"\n    try:\n        result_str = escape_name(str_escape)\n        return result_str\n    except Exception:\n        return str_escape\n\n\ndef escape_url(s):\n    s = s.replace(\"<\", \"\")\n    s = s.replace(\">\", \"\")\n    s = s.replace(' ', \"\")\n    s = s.replace('\"', \"\")\n    s = s.replace(\"'\", \"\")\n    return s\n\n\ndef escape_name(s):\n    '''Replace special characters \"&\", \"<\" and \">\" to HTML-safe sequences.\n    If the optional flag quote is true, the quotation mark character (\")\n    is also translated.\n    rewrite the cgi method\n    '''\n    s = s.replace(\"&\", \"\")  # Must be done first!\n    s = s.replace(\"<\", \"\")\n    s = s.replace(\">\", \"\")\n    s = s.replace(' ', \"\")\n    s = s.replace('\"', \"\")\n    s = s.replace(\"'\", \"\")\n    return s\n\n\ndef check_script(str_escape):\n    \"\"\"\n    防止js脚本注入\n    @param str_escape: 要检测的字符串\n    @param fromtype: 0：views，1：middleware\n    \"\"\"\n    try:\n        parser = XssHtml()\n        parser.feed(str_escape)\n        parser.close()\n        return parser.getHtml()\n    except Exception:\n        return str_escape\n\n\ndef escape_new(s, fromtype, is_json):\n    '''Replace special characters \"&\", \"<\" and \">\" to HTML-safe sequences.\n    If the optional flag quote is true, the quotation mark character (\")\n    is also translated.\n    rewrite the cgi method\n    @param fromtype: 来源，0：views函数，1：middleware（对&做转换），默认是0\n    @param is_json: 是否为json串（True/False\n    '''\n    # &转换\n    if fromtype == 1 and not is_json:\n        s = s.replace(\"&\", \"&amp;\")\n    # <>转换\n    s = s.replace(\"<\", \"&lt;\")\n    s = s.replace(\">\", \"&gt;\")\n    # 单双引号转换\n    if not is_json:\n        s = s.replace(' ', \"&nbsp;\")\n        s = s.replace('\"', \"&quot;\")\n        s = s.replace(\"'\", \"&#39;\")\n    return s\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/patch/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/patch/log.py",
    "content": "# -*- coding: utf-8 -*-\nimport os\n\nfrom blueapps.conf.default_settings import BASE_DIR, APP_CODE\n\n\ndef get_paas_v2_logging_config_dict(is_local, bk_log_dir, log_level):\n    \"\"\"\n    日志V2对外版设置\n    \"\"\"\n\n    app_code = os.environ.get('APP_ID', APP_CODE)\n\n    # 设置日志文件夹路径\n    if is_local:\n        log_dir = os.path.join(os.path.dirname(BASE_DIR), 'logs', app_code)\n    else:\n        log_dir = os.path.join(os.path.join(bk_log_dir, app_code))\n\n    # 如果日志文件夹不存在则创建,日志文件存在则延用\n    if not os.path.exists(log_dir):\n        os.makedirs(log_dir)\n\n    return {\n        'version': 1,\n        'disable_existing_loggers': False,\n        'formatters': {\n            'simple': {\n                'format': '%(levelname)s %(message)s \\n',\n            },\n            'verbose': {\n                'format': '%(levelname)s [%(asctime)s] %(pathname)s '\n                          '%(lineno)d %(funcName)s %(process)d %(thread)d '\n                          '\\n \\t %(message)s \\n',\n                'datefmt': '%Y-%m-%d %H:%M:%S',\n            },\n        },\n        'handlers': {\n            'component': {\n                'class': 'logging.handlers.RotatingFileHandler',\n                'formatter': 'verbose',\n                'filename': os.path.join(log_dir, 'component.log'),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n            'console': {\n                'level': 'DEBUG',\n                'class': 'logging.StreamHandler',\n                'formatter': 'simple'\n            },\n            'null': {\n                'level': 'DEBUG',\n                'class': 'logging.NullHandler',\n            },\n            'root': {\n                'class': 'logging.handlers.RotatingFileHandler',\n                'formatter': 'verbose',\n                'filename': os.path.join(log_dir, '%s.log' % app_code),\n                'maxBytes': 1024 * 1024 * 10,\n                'backupCount': 5\n            },\n            'wb_mysql': {\n                'class': 'logging.handlers.RotatingFileHandler',\n                'formatter': 'verbose',\n                'filename': os.path.join(log_dir, 'wb_mysql.log'),\n                'maxBytes': 1024 * 1024 * 4,\n                'backupCount': 5\n            },\n        },\n        'loggers': {\n            # V2旧版开发框架使用的logger\n            'component': {\n                'handlers': ['component'],\n                'level': 'WARNING',\n                'propagate': True,\n            },\n            'django': {\n                'handlers': ['null'],\n                'level': 'INFO',\n                'propagate': True,\n            },\n            'django.server': {\n                'handlers': ['console'],\n                'level': log_level,\n                'propagate': True,\n            },\n            'django.request': {\n                'handlers': ['console'],\n                'level': 'ERROR',\n                'propagate': True,\n            },\n            'django.db.backends': {\n                'handlers': ['wb_mysql'],\n                'level': log_level,\n                'propagate': True,\n            },\n            'root': {\n                'handlers': ['root'],\n                'level': log_level,\n                'propagate': True,\n            },\n\n            # V3新版使用的日志\n            'celery': {\n                'handlers': ['root'],\n                'level': log_level,\n                'propagate': True,\n            },\n            'blueapps': {\n                'handlers': ['root'],\n                'level': log_level,\n                'propagate': True,\n            },\n            'app': {\n                'handlers': ['root'],\n                'level': log_level,\n                'propagate': True,\n            }\n        }\n    }\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/patch/settings_open_saas.py",
    "content": "# coding=utf-8\nimport os\nfrom blueapps.patch.log import get_paas_v2_logging_config_dict\nfrom config.default import *  # noqa\nfrom config import APP_CODE, SECRET_KEY\n\n# IS_LOCAL,V2和V3的判断方式不同,V2用BK_ENV\nIS_LOCAL = not os.getenv('BK_ENV', False)\n\n# ESB component\nESB_SDK_NAME = 'blueking.component'\n\n# 蓝鲸PASS平台URL\nBK_PAAS_HOST = os.getenv('BK_PAAS_HOST', BK_URL)\n\n# 蓝鲸开发者页面\nBK_DEV_URL = '%s/app/list/' % BK_PAAS_HOST\n\n# 兼容component的APP_ID,APP_TOKEN\nAPP_CODE = APP_ID = os.environ.get('APP_ID', APP_CODE)\nSECRET_KEY = APP_TOKEN = os.environ.get('APP_TOKEN', SECRET_KEY)\n\n# 用于 用户认证、用户信息获取 的蓝鲸主机\nBK_PAAS_INNER_HOST = os.getenv('BK_PAAS_INNER_HOST', BK_PAAS_HOST)\n\n# PAASV2对外版不需要bkoauth,DISABLED_APPS加入bkoauth\nINSTALLED_APPS = (INSTALLED_APPS[0: INSTALLED_APPS.index('bkoauth')] +\n                  INSTALLED_APPS[INSTALLED_APPS.index('bkoauth') + 1:])\n\n# PAASV2对外版不需要whitenoise,MIDDLEWARE中去除'whitenoise.middleware.WhiteNoiseMiddleware'\nMIDDLEWARE = (MIDDLEWARE[0: MIDDLEWARE.index('whitenoise.middleware.'\n                                             'WhiteNoiseMiddleware')] +\n              MIDDLEWARE[MIDDLEWARE.index('whitenoise.middleware.'\n                                          'WhiteNoiseMiddleware') + 1:])\n\n# BROKER_URL\nif 'BK_BROKER_URL' in os.environ:\n    BROKER_URL = os.getenv('BK_BROKER_URL')\n\n# SITE_URL,STATIC_URL,,FORCE_SCRIPT_NAME\n# 测试环境\nif os.getenv('BK_ENV') == 'testing':\n    BK_URL = os.environ.get(\"BK_URL\", \"%s/console/\" % BK_PAAS_HOST)\n    SITE_URL = os.environ.get(\"BK_SITE_URL\", '/t/%s/' % APP_CODE)\n    STATIC_URL = '%sstatic/' % SITE_URL\n# 正式环境\nif os.getenv('BK_ENV') == 'production':\n    BK_URL = os.environ.get(\"BK_URL\", \"%s/console/\" % BK_PAAS_HOST)\n    SITE_URL = os.environ.get(\"BK_SITE_URL\", '/o/%s/' % APP_CODE)\n    STATIC_URL = '%sstatic/' % SITE_URL\n\n# REMOTE_STATIC_URL\nREMOTE_STATIC_URL = '%sremote/' % STATIC_URL\n\n# 日志\nBK_LOG_DIR = os.getenv('BK_LOG_DIR', '/data/apps/logs/')\nLOGGING = get_paas_v2_logging_config_dict(\n    is_local=IS_LOCAL,\n    bk_log_dir=BK_LOG_DIR,\n    log_level=locals().get('LOG_LEVEL', 'INFO')\n)\n\n# 请求官方 API 默认版本号，可选值为：\"v2\" 或 \"\"；其中，\"v2\"表示规范化API，\n# \"\"表示未规范化API.如果外面设置了该值则使用设置值,否则默认使用v2\nDEFAULT_BK_API_VER = locals().get('DEFAULT_BK_API_VER', 'v2')\n\n# STATIC_ROOT,静态文件收集文件夹,由于企业版需要用户手动收集,此处设为空,\n# 同时需要设置STATICFILES_DIRS不改变\nSTATIC_ROOT = None\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/patch/settings_paas_services.py",
    "content": "# coding=utf-8\nimport os\n\nfrom config.default import *  # noqa\n\n# sentry support\n\nSENTRY_DSN = os.environ.get(\"SENTRY_DSN\")\nif SENTRY_DSN:\n    INSTALLED_APPS += (\n        'raven.contrib.django.raven_compat',\n    )\n    RAVEN_CONFIG = {\n        'dsn': SENTRY_DSN,\n    }\n\n# apm support\nAPM_ID = os.environ.get(\"APM_ID\")\nAPM_TOKEN = os.environ.get(\"APM_TOKEN\")\nif APM_ID and APM_TOKEN:\n    INSTALLED_APPS += (\n        'ddtrace.contrib.django',\n    )\n    DATADOG_TRACE = {\n        'TAGS': {\n            'env': os.getenv('BKPAAS_ENVIRONMENT', 'dev'),\n            'apm_id': APM_ID,\n            'apm_token': APM_TOKEN,\n        },\n    }\n    # requests for APIGateway/ESB\n    # remove pymysql while Django Defaultdb has been traced already\n    try:\n        import requests # noqa\n        from ddtrace import patch\n        patch(requests=True, pymysql=False)\n    except Exception as e:\n        print(\"patch fail for requests and pymysql: %s\" % e)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/template/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/template/backends/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/template/backends/mako.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nLearn more at:\nhttps://gist.github.com/artscoop/0eba5033527f9e488ee17b346d16284d\n\"\"\"\nfrom __future__ import absolute_import\n\nimport tempfile\n\nfrom django.conf import settings\nfrom django.template import TemplateDoesNotExist, TemplateSyntaxError\nfrom django.template.backends.base import BaseEngine\nfrom django.template.backends.utils import csrf_input_lazy, csrf_token_lazy\nfrom django.template.context import _builtin_context_processors\nfrom django.utils.functional import cached_property\nfrom django.utils.module_loading import import_string\nfrom mako import exceptions as mako_exceptions\nfrom mako.lookup import TemplateLookup as MakoTemplateLookup\nfrom mako.template import Template as MakoTemplate\n\n\nclass MakoTemplates(BaseEngine):\n    app_dirname = settings.MAKO_DIR_NAME\n\n    def __init__(self, params):\n        params = params.copy()\n        options = params.pop('OPTIONS').copy()\n        super(MakoTemplates, self).__init__(params)\n\n        # Defaut values for initializing the MakoTemplateLookup class\n        # You can define them in the backend OPTIONS dict.\n        options.setdefault('directories', self.template_dirs)\n        options.setdefault('module_directory', tempfile.gettempdir())\n        options.setdefault('input_encoding', settings.FILE_CHARSET)\n        options.setdefault('output_encoding', settings.FILE_CHARSET)\n        options.setdefault('encoding_errors', 'replace')\n        options.setdefault('collection_size', 500)\n        options.setdefault('default_filters',\n                           settings.MAKO_DEFAULT_FILTERS\n                           if hasattr(settings, 'MAKO_DEFAULT_FILTERS') else []\n                           )\n\n        # Use context processors like Django\n        context_processors = options.pop('context_processors', [])\n        self.context_processors = context_processors\n\n        # Use the mako template lookup class to find templates\n        self.lookup = MakoTemplateLookup(**options)\n\n    @cached_property\n    def template_context_processors(self):\n        context_processors = _builtin_context_processors\n        context_processors += tuple(self.context_processors)\n        return tuple(import_string(path) for path in set(context_processors))\n\n    def from_string(self, template_code):\n        try:\n            return Template(MakoTemplate(template_code, lookup=self.lookup), [])\n        except mako_exceptions.SyntaxException as e:\n            raise TemplateSyntaxError(e.args)\n\n    def get_template(self, template_name):\n        try:\n            return Template(self.lookup.get_template(template_name),\n                            self.template_context_processors)\n        except mako_exceptions.TemplateLookupException as e:\n            raise TemplateDoesNotExist(e.args)\n        except mako_exceptions.CompileException as e:\n            raise TemplateSyntaxError(e.args)\n\n\nclass Template(object):\n\n    def __init__(self, template, context_processors):\n        self.template = template\n        self.context_processors = context_processors\n\n    def render(self, context=None, request=None):\n        if context is None:\n            context = {}\n\n        if request is not None:\n            for processor in self.context_processors:\n                try:\n                    context.update(processor(request))\n                except Exception:\n                    pass\n\n            context['request'] = request\n            context['csrf_input'] = csrf_input_lazy(request)\n            context['csrf_token'] = csrf_token_lazy(request)\n\n        return self.template.render_unicode(**context)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/template/context_processors.py",
    "content": "# coding=utf-8\nfrom __future__ import absolute_import\n\nimport json\nimport logging\nimport datetime\n\nfrom django.conf import settings\n\nlogger = logging.getLogger('blueapps')\n\n\ndef blue_settings(request):\n    try:\n        if request.user.is_anonymous:\n            username = ''\n            nickname = ''\n            avatar_url = ''\n        else:\n            username = request.user.username\n            nickname = request.user.nickname\n            avatar_url = request.user.avatar_url\n\n        context = {\n            # 本地静态文件访问\n            'STATIC_URL': settings.STATIC_URL,\n            # 当前页面，主要为了login_required做跳转用\n            'APP_PATH': request.get_full_path(),\n            # 运行模式\n            'RUN_MODE': settings.RUN_MODE,\n            # 运行版本（内部版、混合云版...）\n            'RUN_VER': settings.RUN_VER,\n            # 在蓝鲸系统中注册的  \"应用编码\"\n            'APP_CODE': settings.APP_CODE,\n            # URL前缀\n            'SITE_URL': settings.SITE_URL,\n            # 远程静态资源url\n            'REMOTE_STATIC_URL': settings.REMOTE_STATIC_URL,\n            # 静态资源版本号,用于指示浏览器更新缓存\n            'STATIC_VERSION': settings.STATIC_VERSION,\n            # 蓝鲸平台URL\n            'BK_URL': settings.BK_URL,\n            # 蓝鲸开发者页面\n            'BK_DEV_URL': settings.BK_DEV_URL,\n            # 用户名\n            'USERNAME': username,\n            # 用户昵称\n            'NICKNAME': nickname,\n            # 用户头像\n            'AVATAR_URL': avatar_url,\n            # WEIXIN ROOT URL\n            'WEIXIN_SITE_URL': settings.WEIXIN_SITE_URL,\n            # WEIXIN 本地静态资源链接\n            'WEIXIN_STATIC_URL': settings.WEIXIN_STATIC_URL,\n            # WEIXIN 远程静态资源链接\n            'WEIXIN_REMOTE_STATIC_URL': settings.WEIXIN_REMOTE_STATIC_URL,\n            # 是否调试模式\n            'DEBUG': json.dumps(settings.DEBUG),\n            # 当前时间\n            'NOW': datetime.datetime.now(),\n            # 前后端联合开发的静态资源路径, 这个变量可选配置\n            'BK_STATIC_URL': getattr(settings, 'BK_STATIC_URL', ''),\n        }\n    except Exception:\n        logger.exception(u\"自定义模板上下文异常\")\n        raise\n    return context\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nimport six\n\nfrom blueapps.utils.request_provider import get_request, get_x_request_id\nfrom blueapps.utils.esbclient import (\n    client, get_client_by_user,\n    backend_client,\n    get_client_by_request\n)\n\n__all__ = [\n    'get_request', 'get_x_request_id', 'client', 'ok', 'ok_data', 'failed',\n    'failed_data', 'backend_client', 'get_client_by_user',\n    'get_client_by_request'\n]\n\n\ndef ok(message=\"\", **options):\n    result = {'result': True, 'message': message, 'msg': message}\n    result.update(**options)\n    return result\n\n\ndef failed(message=\"\", **options):\n    if not isinstance(message, str):\n        if isinstance(message, six.string_types):\n            message = message.encode('utf-8')\n        message = str(message)\n    result = {'result': False, 'message': message, 'data': {}, 'msg': message}\n    result.update(**options)\n    return result\n\n\ndef failed_data(message, data, **options):\n    if not isinstance(message, str):\n        if isinstance(message, six.string_types):\n            message = message.encode('utf-8')\n        message = str(message)\n    result = {\n        'result': False,\n        'message': message,\n        'data': data,\n        'msg': message\n    }\n    result.update(**options)\n    return result\n\n\ndef ok_data(data=None, **options):\n    if data is None:\n        data = {}\n    result = {\n        'result': True,\n        'message': \"\",\n        'data': data,\n        'msg': \"\"\n    }\n    result.update(**options)\n    return result\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/esbclient.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n全平台 esb-sdk 封装，依赖于 esb-sdk 包，但不依赖 sdk 的版本。\nsdk 中有封装好 cc.get_app_by_user 方法时，可直接按以前 sdk 的习惯调用\n\nfrom blueapps.utils import client\nclient.cc.get_app_by_user()\n\nfrom blueapps.utils import backend_client\nb_client = backend_client(access_token=\"SfgcGlBHmPWttwlGd7nOLAbOP3TAOG\")\nb_client.cc.get_app_by_user()\n\n当前版本 sdk 中未封装好，但 api 已经有 get_app_by_user 的时候。需要指定请求方法\nclient.cc.get_app_by_user.get()\n\"\"\"\n\nimport collections\n\nfrom django.contrib.auth import get_user_model\nfrom django.utils.module_loading import import_string\n\nfrom blueapps.conf import settings\nfrom blueapps.core.exceptions import AccessForbidden, MethodError\nfrom blueapps.utils.request_provider import get_request\n\n__all__ = [\n    'client', 'backend_client', 'get_client_by_user', 'get_client_by_request', 'CustomComponentAPI'\n]\n\n\n# esb api的url path前缀\ndef get_api_prefix():\n    platform_api_prefix_map = {\n        # 内部版\n        \"ieod\": \"/component/compapi/\",\n        # 腾讯云\n        \"qcloud\": \"/c/qcloud/compapi/\",\n        # 混合云\n        \"clouds\": \"/c/clouds/compapi/\",\n        # tencet\n        \"tencent\": \"/c/ieg/compapi\",\n        # open\n        \"open\": \"/api/c/compapi/\"\n    }\n    return platform_api_prefix_map[settings.RUN_VER]\n\n\nESB_API_PREFIX = get_api_prefix()\n\ntry:\n    ESB_SDK_NAME = settings.ESB_SDK_NAME\n    if not ESB_SDK_NAME:\n        raise AttributeError\nexcept AttributeError:\n    ESB_SDK_NAME = 'blueking.component.{platform}'.format(\n        platform=settings.RUN_VER)\n\n\nclass SDKClient(object):\n    sdk_package = None\n\n    @property\n    def __version__(self):\n        return self.sdk_package.__version__\n\n    @property\n    def __backend__(self):\n        return self.sdk_package.__name__\n\n    def __new__(cls, **kwargs):\n        if cls.sdk_package is None:\n            try:\n                cls.sdk_package = __import__(ESB_SDK_NAME,\n                                             fromlist=['shortcuts'])\n            except ImportError as e:\n                raise ImportError(\"%s is not installed: %s\"\n                                  % (ESB_SDK_NAME, e))\n        return super(SDKClient, cls).__new__(cls)\n\n    def __init__(self, **kwargs):\n        self.mod_name = \"\"\n        self.sdk_mod = None\n        for ignored_field in ['app_code', 'app_secret']:\n            if ignored_field in kwargs:\n                kwargs.pop(ignored_field)\n        self.common_args = kwargs\n\n    def __getattr__(self, item):\n        if not self.mod_name:\n            ret = SDKClient(**self.common_args)\n            ret.mod_name = item\n            ret.setup_modules()\n            if isinstance(ret.sdk_mod, collections.Callable):\n                return ret.sdk_mod\n            return ret\n        else:\n            # 真实sdk调用入口\n            ret = getattr(self.sdk_mod, item, None)\n            if ret is None:\n                ret = ComponentAPICollection(self).add_api(item)\n        if not isinstance(ret, collections.Callable):\n            ret = self\n        return ret\n\n    def setup_modules(self):\n        self.sdk_mod = getattr(self.sdk_client, self.mod_name, None)\n        if self.sdk_mod is None:\n            self.sdk_mod = ComponentAPICollection(self)\n\n    @property\n    def sdk_client(self):\n        try:\n            request = get_request()\n            # 调用sdk方法获取sdk client\n            return self.load_sdk_class(\n                \"shortcuts\", \"get_client_by_request\")(request)\n        except Exception:\n            if settings.RUN_MODE != \"DEVELOP\":\n                if self.common_args:\n                    return self.load_sdk_class(\n                        \"client\", \"ComponentClient\"\n                    )(\n                        app_code=settings.APP_CODE,\n                        app_secret=settings.SECRET_KEY,\n                        common_args=self.common_args\n                    )\n                else:\n                    raise AccessForbidden(\n                        \"sdk can only be called through the Web request\")\n            else:\n                # develop mode\n                # 根据RUN_VER获得get_component_client_common_args函数\n                get_component_client_common_args = import_string(\n                    \"blueapps.utils.sites.{platform}.\"\n                    \"get_component_client_common_args\".format(\n                        platform=settings.RUN_VER\n                    )\n                )\n                return self.load_sdk_class(\n                    \"client\", \"ComponentClient\"\n                )(\n                    app_code=settings.APP_CODE,\n                    app_secret=settings.SECRET_KEY,\n                    common_args=get_component_client_common_args()\n                )\n\n    def load_sdk_class(self, mod, attr_or_class):\n        dotted_path = \"%s.%s.%s\" % (self.__backend__, mod, attr_or_class)\n        return import_string(dotted_path)\n\n    def patch_sdk_component_api_class(self):\n        def patch_get_item(self, item):\n            if item.startswith('__'):\n                # make client can be pickled\n                raise AttributeError()\n\n            method = item.upper()\n            if method not in self.allowed_methods:\n                raise MethodError(\"esb api does not support method: %s\" %\n                                  method)\n            self.method = method\n            return self\n\n        api_cls = self.load_sdk_class(\"base\", \"ComponentAPI\")\n        setattr(api_cls, \"allowed_methods\", CustomComponentAPI.allowed_methods)\n        setattr(api_cls, \"__getattr__\", patch_get_item)\n\n\nclass ComponentAPICollection(object):\n    mod_map = dict()\n\n    def __new__(cls, sdk_client, *args, **kwargs):\n        if sdk_client.mod_name not in cls.mod_map:\n            cls.mod_map[sdk_client.mod_name] = super(\n                ComponentAPICollection, cls).__new__(cls)\n        return cls.mod_map[sdk_client.mod_name]\n\n    def __init__(self, sdk_client):\n        self.client = sdk_client\n\n    def add_api(self, action):\n        custom_api = CustomComponentAPI(self, action)\n        setattr(self, action, custom_api)\n        return custom_api\n\n    def __getattr__(self, item):\n        api = self.add_api(item)\n        return api\n\n\nclass CustomComponentAPI(object):\n    allowed_methods = [\"GET\", \"POST\"]\n\n    def __init__(self, collection, action):\n        self.collection = collection\n        self.action = action\n\n    def __getattr__(self, method):\n        method = method.upper()\n        if method not in self.allowed_methods:\n            raise MethodError(\"esb api does not support method: %s\" % method)\n        api_cls = self.collection.client.load_sdk_class(\"base\", \"ComponentAPI\")\n        return api_cls(\n            client=SDKClient(**self.collection.client.common_args),\n            method=method,\n            path='{api_prefix}{collection}/{action}/'.format(\n                api_prefix=ESB_API_PREFIX,\n                collection=self.collection.client.mod_name,\n                action=self.action\n            ),\n            description='custom api(%s)' % self.action\n        )\n\n    def __call__(self, *args, **kwargs):\n        raise NotImplementedError(\n            'custom api `%s` must specify the request method' % self.action)\n\n\nclient = SDKClient()\nbackend_client = SDKClient\nclient.patch_sdk_component_api_class()\n\n\ndef get_client_by_user(user_or_username):\n    user_model = get_user_model()\n    if isinstance(user_or_username, user_model):\n        username = user_or_username.username\n    else:\n        username = user_or_username\n    get_client_by_user = import_string(\n        \".\".join([ESB_SDK_NAME, 'shortcuts', 'get_client_by_user']))\n    return get_client_by_user(username)\n\n\ndef get_client_by_request(request=None):\n    return client\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/logger.py",
    "content": "import logging\n\n__all__ = ['logger', 'logger_celery']\n\nlogger = logging.getLogger('app')\nlogger_celery = logging.getLogger('celery')\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/request_provider.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.dispatch import Signal\nfrom django.utils.deprecation import MiddlewareMixin\n\nfrom blueapps.conf import settings\nfrom blueapps.core.exceptions import AccessForbidden, ServerBlueException\n\n# since each thread has its own greenlet we can just use those as identifiers\n# for the context.  If greenlets are not available we fall back to the\n# current thread ident depending on where it is.\ntry:\n    from greenlet import getcurrent as get_ident\nexcept ImportError:\n    try:\n        from thread import get_ident\n    except ImportError:\n        from _thread import get_ident\n\n\nclass AccessorSignal(Signal):\n    allowed_receiver = 'blueapps.utils.request_provider.RequestProvider'\n\n    def __init__(self, providing_args=None):\n        Signal.__init__(self, providing_args)\n\n    def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):\n        receiver_name = '.'.join(\n            [receiver.__class__.__module__, receiver.__class__.__name__]\n        )\n        if receiver_name != self.allowed_receiver:\n            raise AccessForbidden(\n                u\"%s is not allowed to connect\" % receiver_name)\n        Signal.connect(self, receiver, sender, weak, dispatch_uid)\n\n\nrequest_accessor = AccessorSignal()\n\n\nclass RequestProvider(MiddlewareMixin):\n    \"\"\"\n    @summary: request事件接收者\n    \"\"\"\n    _instance = None\n\n    def __new__(cls, get_response):\n        if cls._instance is None:\n            cls._instance = super(\n                RequestProvider, cls).__new__(cls)\n        return cls._instance\n\n    def __init__(self, get_response):\n        super(RequestProvider, self).__init__(get_response)\n        self._request_pool = {}\n        request_accessor.connect(self)\n\n    def process_request(self, request):\n        request.is_mobile = lambda: bool(settings.RE_MOBILE.search(\n            request.headers.get('user-agent', '')))\n\n        # 是否为合法的RIO请求\n        request.is_rio = lambda: bool(\n            request.headers.get('staffname', '') and settings.RIO_TOKEN and\n            settings.RE_WECHAT.search(request.headers.get('user-agent', ''))\n        )\n\n        # 是否为合法 WEIXIN 请求，必须符合两个条件，wx 客户端 & WX PAAS 域名\n        request_origin_url = \"%s://%s\" % (request.scheme, request.get_host())\n        request.is_wechat = lambda: (\n            bool(settings.RE_WECHAT.search(\n                request.headers.get('user-agent', ''))\n            ) and request_origin_url == settings.WEIXIN_BK_URL and\n            not request.is_rio()\n        )\n\n        # JWT请求\n        request.is_bk_jwt = lambda: bool(request.headers.get('x-bkapi-jwt', ''))\n\n        self._request_pool[get_ident()] = request\n        return None\n\n    def process_response(self, request, response):\n        assert request is self._request_pool.pop(get_ident())\n        return response\n\n    def __call__(self, *args, **kwargs):\n        \"\"\"\n        1）接受 signal 请求响应，\n        2）继承 MiddlewareMixin.__call__ 兼容 djagno 1.10 之前中间件\n        \"\"\"\n        from_signal = kwargs.get('from_signal', False)\n        if from_signal:\n            return self.get_request(**kwargs)\n        else:\n            return super(RequestProvider, self).__call__(args[0])\n\n    def get_request(self, **kwargs):\n        sender = kwargs.get(\"sender\")\n        if sender is None:\n            sender = get_ident()\n        if sender not in self._request_pool:\n            raise ServerBlueException(\n                u\"get_request can't be called in a new thread.\")\n        return self._request_pool[sender]\n\n\ndef get_request():\n    return request_accessor.send(get_ident(), from_signal=True)[0][1]\n\n\ndef get_x_request_id():\n    x_request_id = ''\n    http_request = get_request()\n    if hasattr(http_request, 'META'):\n        meta = http_request.META\n        x_request_id = (meta.get('HTTP_X_REQUEST_ID', '')\n                        if isinstance(meta, dict) else '')\n    return x_request_id\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/sites/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/sites/clouds/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nfrom bkoauth import get_access_token_by_user\n\nfrom blueapps.account import get_user_model\n\nlogger = logging.getLogger('blueapps')\n\n\ndef get_component_client_common_args():\n    \"\"\"\n    获取ComponentClient需要的common_args\n    @return:\n    {\n        access_token = 'xxx'\n    }\n    @rtype: dict\n    \"\"\"\n    try:\n        last_login_user = \\\n            get_user_model().objects.all().order_by(\"-last_login\")[0]\n    except IndexError:\n        logger.exception(\"There is not a last_login_user\")\n        raise IndexError(\"There is not a last_login_user\")\n    access_token = get_access_token_by_user(\n        last_login_user.username).access_token\n    return dict(access_token=access_token)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/sites/ieod/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nfrom bkoauth import get_access_token_by_user\nfrom blueapps.account import get_user_model\n\nlogger = logging.getLogger('blueapps')\n\n\ndef get_component_client_common_args():\n    \"\"\"\n    获取ComponentClient需要的common_args\n    @return:\n    {\n        access_token = 'xxx'\n    }\n    @rtype: dict\n    \"\"\"\n    try:\n        last_login_user = \\\n            get_user_model().objects.all().order_by(\"-last_login\")[0]\n    except IndexError:\n        logger.exception(\"There is not a last_login_user\")\n        raise IndexError(\"There is not a last_login_user\")\n    access_token = get_access_token_by_user(\n        last_login_user.username).access_token\n    return dict(access_token=access_token)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/sites/open/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nfrom blueapps.account import get_user_model\n\nlogger = logging.getLogger('blueapps')\n\n\ndef get_component_client_common_args():\n    \"\"\"\n    获取ComponentClient需要的common_args\n    @return:\n    {\n        bk_username = 'xxx'\n    }\n    @rtype: dict\n    \"\"\"\n    try:\n        last_login_user = \\\n            get_user_model().objects.all().order_by(\"-last_login\")[0]\n    except IndexError:\n        logger.exception(\"There is not a last_login_user\")\n        raise IndexError(\"There is not a last_login_user\")\n    username = last_login_user.username\n    return dict(bk_username=username)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/sites/qcloud/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nfrom bkoauth import get_access_token_by_user\nfrom blueapps.account import get_user_model\n\nlogger = logging.getLogger('blueapps')\n\n\ndef get_component_client_common_args():\n    \"\"\"\n    获取ComponentClient需要的common_args\n    @return:\n    {\n        access_token = 'xxx'\n    }\n    @rtype: dict\n    \"\"\"\n    try:\n        last_login_user = \\\n            get_user_model().objects.all().order_by(\"-last_login\")[0]\n    except IndexError:\n        logger.exception(\"There is not a last_login_user\")\n        raise IndexError(\"There is not a last_login_user\")\n    access_token = get_access_token_by_user(\n        last_login_user.username).access_token\n    return dict(access_token=access_token)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/sites/tencent/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\nfrom bkoauth import get_access_token_by_user\nfrom blueapps.account import get_user_model\n\nlogger = logging.getLogger('blueapps')\n\n\ndef get_component_client_common_args():\n    \"\"\"\n    获取ComponentClient需要的common_args\n    @return:\n    {\n        access_token = 'xxx'\n    }\n    @rtype: dict\n    \"\"\"\n    try:\n        last_login_user = \\\n            get_user_model().objects.all().order_by(\"-last_login\")[0]\n    except IndexError:\n        logger.warn(\"There is not a last_login_user\")\n        raise IndexError(\"There is not a last_login_user\")\n    access_token = get_access_token_by_user(\n        last_login_user.username).access_token\n    return dict(access_token=access_token)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueapps/utils/unique.py",
    "content": "# -*- coding: utf-8 -*-\n\nimport uuid\n\n\ndef uniqid():\n    return uuid.uuid3(\n        uuid.uuid1(),\n        uuid.uuid4().hex\n    ).hex\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n__author__ = u\"蓝鲸智云\"\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/README.md",
    "content": "# 蓝鲸智云 API 网关 SDK 使用文档\n\n- 第一部分: API 组件的访问方式\n- 第二部分: API 组件的版本说明\n\n# 目录\n\n[TOC]\n\n----------------------------------------------------------\n\n# 第一部分: API 组件的访问方式\n\n有两种方式访问组件，shortcuts或ComponentClient。使用示例如下：\n\n## 1. 使用shortcuts\n\n### 1.1 get_client_by_request\n\n```\nfrom blueking.component.shortcuts import get_client_by_request\n# 从环境配置获取APP信息，从request获取当前用户信息\nclient = get_client_by_request(request)\nkwargs = {'bk_biz_id': 1}\nresult = client.cc.get_app_host_list(kwargs)\n```\n\n### 1.2 get_client_by_user\n\n```\nfrom blueking.component.shortcuts import get_client_by_user\n# 从环境配置获取APP信息，从user获取当前用户信息，user为User对象或User中username数据\nuser = 'xxx'\nclient = get_client_by_user(user)\nkwargs = {'bk_biz_id': 1}\nresult = client.cc.get_app_host_list(kwargs)\n```\n\n\n## 2. 使用ComponentClient\n\n```\nfrom blueking.component.client import ComponentClient\n# APP信息\nbk_app_code = 'xxx' \nbk_app_secret = 'xxx' \n# 用户信息\ncommon_args = {'bk_token': 'xxx'}\n# APP信息bk_app_code, bk_app_secret如未提供，从环境配置获取\nclient = ComponentClient(\n    bk_app_code=bk_app_code, \n    bk_app_secret=bk_app_secret, \n    common_args=common_args\n)\nkwargs = {'bk_biz_id': 1}\nresult = client.cc.get_app_host_list(kwargs)\n```\n\n\n# 第二部分: API 组件的版本说明\n\n蓝鲸官方提供的 API，包括 v1、v2 两个版本，推荐使用 v2 版本；\n为保持兼容，SDK 同时支持访问 v1、v2 两个版本的 API。\n\nSDK 使用 settings 中的变量 **DEFAULT_BK_API_VER** 设置访问的默认 API 版本，可选值为: \"v2\"（v2 版本），\"\"（v1 版本），默认值为\"v2\"。\n\n如果需要访问非默认版本的 API，可通过明确指定版本号的方式实现，如：\n```\n# client = get_client_by_request(request)\nclient = ComponentClient(xxx, xxx)\n# 指定访问 v1 版本的 API\nclient.set_bk_api_ver(\"\")\nresult = client.cc.get_app_host_list(xxx)\n\n# 指定访问 v2 版本的 API\nclient.set_bk_api_ver(\"v2\")\nresult = client.cc.search_host(xxx)\n```\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/bk_login.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsBkLogin(object):\n    \"\"\"Collections of BK_LOGIN APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.get_all_users = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_all_users/',\n            description=u'获取所有用户信息'\n        )\n        self.get_batch_users = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_batch_users/',\n            description=u'批量获取用户信息'\n        )\n        self.get_batch_users_platform_role = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_batch_users_platform_role/',\n            description=u'批量获取用户各平台角色信息'\n        )\n        self.get_user = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_user/',\n            description=u'获取用户信息'\n        )\n        self.get_all_user = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_all_user/',\n            description=u'获取所有用户信息'\n        )\n        self.get_batch_user = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_batch_user/',\n            description=u'获取多个用户信息'\n        )\n        self.get_batch_user_platform_role = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/bk_login/get_batch_user_platform_role/',\n            description=u'获取多个用户在平台应用的角色'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/bk_paas.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsBkPaas(object):\n    \"\"\"Collections of BK_PAAS APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.get_app_info = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/bk_paas/get_app_info/',\n            description=u'获取应用信息'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/cc.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsCC(object):\n    \"\"\"Collections of CC APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.add_host_lock = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_host_lock/',\n            description=u'新加主机锁'\n        )\n        self.add_host_to_resource = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_host_to_resource/',\n            description=u'新增主机到资源池'\n        )\n        self.add_instance_association = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_instance_association/',\n            description=u'新建模型实例之间的关联关系'\n        )\n        self.batch_delete_inst = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/batch_delete_inst/',\n            description=u'批量删除实例'\n        )\n        self.batch_delete_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/batch_delete_set/',\n            description=u'批量删除集群'\n        )\n        self.batch_update_inst = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/batch_update_inst/',\n            description=u'批量更新对象实例'\n        )\n        self.bind_process_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/bind_process_module/',\n            description=u'绑定进程到模块'\n        )\n        self.bind_role_privilege = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/bind_role_privilege/',\n            description=u'绑定角色权限'\n        )\n        self.create_business = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_business/',\n            description=u'新建业务'\n        )\n        self.create_classification = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_classification/',\n            description=u'添加模型分类'\n        )\n        self.create_custom_query = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_custom_query/',\n            description=u'添加自定义API'\n        )\n        self.create_inst = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_inst/',\n            description=u'创建实例'\n        )\n        self.create_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_module/',\n            description=u'创建模块'\n        )\n        self.create_object = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_object/',\n            description=u'创建模型'\n        )\n        self.create_object_attribute = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_object_attribute/',\n            description=u'创建模型属性'\n        )\n        self.create_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_set/',\n            description=u'创建集群'\n        )\n        self.create_user_group = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/create_user_group/',\n            description=u'新建用户分组'\n        )\n        self.delete_business = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_business/',\n            description=u'删除业务'\n        )\n        self.delete_classification = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_classification/',\n            description=u'删除模型分类'\n        )\n        self.delete_custom_query = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_custom_query/',\n            description=u'删除自定义API'\n        )\n        self.delete_host = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_host/',\n            description=u'删除主机'\n        )\n        self.delete_host_lock = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_host_lock/',\n            description=u'删除主机锁'\n        )\n        self.delete_inst = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_inst/',\n            description=u'删除实例'\n        )\n        self.delete_instance_association = ComponentAPI(\n            client=self.client, method='DELETE',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_instance_association/',\n            description=u'删除模型实例之间的关联关系'\n        )\n        self.delete_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_module/',\n            description=u'删除模块'\n        )\n        self.delete_object = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_object/',\n            description=u'删除模型'\n        )\n        self.delete_object_attribute = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_object_attribute/',\n            description=u'删除对象模型属性'\n        )\n        self.delete_process_module_bind = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_process_module_bind/',\n            description=u'解绑进程模块'\n        )\n        self.delete_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_set/',\n            description=u'删除集群'\n        )\n        self.delete_user_group = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/delete_user_group/',\n            description=u'删除用户分组'\n        )\n        self.find_host_by_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/find_host_by_module/',\n            description=u'根据模块查询主机'\n        )\n        self.find_instance_association = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/find_instance_association/',\n            description=u'查询模型实例之间的关联关系'\n        )\n        self.find_object_association = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/find_object_association/',\n            description=u'查询模型之间的关联关系'\n        )\n        self.get_biz_internal_module = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_biz_internal_module/',\n            description=u'查询业务的空闲机和故障机模块'\n        )\n        self.get_custom_query_data = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_custom_query_data/',\n            description=u'根据自定义api获取数据'\n        )\n        self.get_custom_query_detail = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_custom_query_detail/',\n            description=u'获取自定义API详情'\n        )\n        self.get_host_base_info = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_host_base_info/',\n            description=u'获取主机详情'\n        )\n        self.get_mainline_object_topo = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_mainline_object_topo/',\n            description=u'查询主线模型的业务拓扑'\n        )\n        self.get_operation_log = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/get_operation_log/',\n            description=u'获取操作日志'\n        )\n        self.get_process_bind_module = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_process_bind_module/',\n            description=u'查询进程绑定模块'\n        )\n        self.get_role_privilege = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_role_privilege/',\n            description=u'获取角色绑定权限'\n        )\n        self.get_user_privilege = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/get_user_privilege/',\n            description=u'查询用户权限'\n        )\n        self.search_biz_inst_topo = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/search_biz_inst_topo/',\n            description=u'查询业务实例拓扑'\n        )\n        self.search_business = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_business/',\n            description=u'查询业务'\n        )\n        self.search_classifications = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_classifications/',\n            description=u'查询模型分类'\n        )\n        self.search_custom_query = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_custom_query/',\n            description=u'查询自定义API'\n        )\n        self.search_group_privilege = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_group_privilege/',\n            description=u'查询分组权限'\n        )\n        self.search_host = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_host/',\n            description=u'根据条件查询主机'\n        )\n        self.search_host_lock = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_host_lock/',\n            description=u'查询主机锁'\n        )\n        self.search_inst = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_inst/',\n            description=u'查询实例'\n        )\n        self.search_inst_association_topo = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_inst_association_topo/',\n            description=u'查询实例关联拓扑'\n        )\n        self.search_inst_by_object = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_inst_by_object/',\n            description=u'查询实例详情'\n        )\n        self.search_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_module/',\n            description=u'查询模块'\n        )\n        self.search_object_attribute = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_object_attribute/',\n            description=u'查询对象模型属性'\n        )\n        self.search_object_topo = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_object_topo/',\n            description=u'查询普通模型拓扑'\n        )\n        self.search_object_topo_graphics = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_object_topo_graphics/',\n            description=u'查询拓扑图'\n        )\n        self.search_objects = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_objects/',\n            description=u'查询模型'\n        )\n        self.search_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_set/',\n            description=u'查询集群'\n        )\n        self.search_subscription = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_subscription/',\n            description=u'查询订阅'\n        )\n        self.search_user_group = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/search_user_group/',\n            description=u'查询用户分组'\n        )\n        self.subscribe_event = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/subscribe_event/',\n            description=u'订阅事件'\n        )\n        self.testing_connection = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/testing_connection/',\n            description=u'测试推送（只测试连通性）'\n        )\n        self.transfer_host_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/transfer_host_module/',\n            description=u'业务内主机转移模块'\n        )\n        self.transfer_host_to_faultmodule = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/transfer_host_to_faultmodule/',\n            description=u'上交主机到业务的故障机模块'\n        )\n        self.transfer_host_to_idlemodule = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/transfer_host_to_idlemodule/',\n            description=u'上交主机到业务的空闲机模块'\n        )\n        self.transfer_host_to_resourcemodule = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/transfer_host_to_resourcemodule/',\n            description=u'上交主机至资源池'\n        )\n        self.transfer_resourcehost_to_idlemodule = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/transfer_resourcehost_to_idlemodule/',\n            description=u'资源池主机分配至业务的空闲机模块'\n        )\n        self.transfer_sethost_to_idle_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/transfer_sethost_to_idle_module/',\n            description=u'清空业务下集群/模块中主机'\n        )\n        self.unsubcribe_event = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/unsubcribe_event/',\n            description=u'退订事件'\n        )\n        self.update_business = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_business/',\n            description=u'修改业务'\n        )\n        self.update_business_enable_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_business_enable_status/',\n            description=u'修改业务启用状态'\n        )\n        self.update_classification = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_classification/',\n            description=u'更新模型分类'\n        )\n        self.update_custom_query = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_custom_query/',\n            description=u'更新自定义API'\n        )\n        self.update_event_subscribe = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_event_subscribe/',\n            description=u'修改订阅'\n        )\n        self.update_host = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_host/',\n            description=u'更新主机属性'\n        )\n        self.update_inst = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_inst/',\n            description=u'更新对象实例'\n        )\n        self.update_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_module/',\n            description=u'更新模块'\n        )\n        self.update_object = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_object/',\n            description=u'更新定义'\n        )\n        self.update_object_attribute = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_object_attribute/',\n            description=u'更新对象模型属性'\n        )\n        self.update_object_topo_graphics = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_object_topo_graphics/',\n            description=u'更新拓扑图'\n        )\n        self.update_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_set/',\n            description=u'更新集群'\n        )\n        self.update_user_group = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_user_group/',\n            description=u'更新用户分组'\n        )\n        self.clone_host_property = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/clone_host_property/',\n            description=u'克隆主机属性'\n        )\n        self.add_app = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_app/',\n            description=u'新建业务'\n        )\n        self.add_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_module/',\n            description=u'新建模块'\n        )\n        self.add_plat_id = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_plat_id/',\n            description=u'新增子网ID'\n        )\n        self.add_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/add_set/',\n            description=u'新建集群'\n        )\n        self.del_app = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/del_app/',\n            description=u'删除业务'\n        )\n        self.del_host_in_app = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/del_host_in_app/',\n            description=u'从业务空闲机集群中删除主机'\n        )\n        self.del_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/del_module/',\n            description=u'删除模块'\n        )\n        self.del_plat = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/del_plat/',\n            description=u'删除子网'\n        )\n        self.del_set = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/del_set/',\n            description=u'删除集群'\n        )\n        self.del_set_host = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/del_set_host/',\n            description=u'清空集群下所有主机'\n        )\n        self.edit_app = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/edit_app/',\n            description=u'编辑业务'\n        )\n        self.enter_ip = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/enter_ip/',\n            description=u'导入主机到业务'\n        )\n        self.get_app_agent_status = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_app_agent_status/',\n            description=u'查询业务下Agent状态'\n        )\n        self.get_app_by_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_app_by_id/',\n            description=u'查询业务信息'\n        )\n        self.get_app_by_user = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_app_by_user/',\n            description=u'查询用户有权限的业务'\n        )\n        self.get_app_by_user_role = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_app_by_user_role/',\n            description=u'根据用户角色查询用户业务'\n        )\n        self.get_app_host_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_app_host_list/',\n            description=u'查询业务主机列表'\n        )\n        self.get_app_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_app_list/',\n            description=u'查询业务列表'\n        )\n        self.get_host_by_company_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_host_by_company_id/',\n            description=u'根据开发商ID、子网ID、主机IP获取主机信息'\n        )\n        self.get_host_company_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_host_company_id/',\n            description=u'获取主机开发商'\n        )\n        self.get_host_list_by_field = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_host_list_by_field/',\n            description=u'根据主机属性的值group主机列表'\n        )\n        self.get_host_list_by_ip = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_host_list_by_ip/',\n            description=u'根据IP查询主机信息'\n        )\n        self.get_hosts_by_property = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_hosts_by_property/',\n            description=u'根据 set 属性查询主机'\n        )\n        self.get_ip_and_proxy_by_company = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_ip_and_proxy_by_company/',\n            description=u'查询业务下IP及ProxyIP'\n        )\n        self.get_module_host_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_module_host_list/',\n            description=u'查询模块主机列表'\n        )\n        self.get_modules = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_modules/',\n            description=u'查询业务下的所有模块'\n        )\n        self.get_modules_by_property = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_modules_by_property/',\n            description=u'根据 set 属性查询模块'\n        )\n        self.get_plat_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_plat_id/',\n            description=u'查询子网列表'\n        )\n        self.get_proc_config_instance_status = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_proc_config_instance_status/',\n            description=u'获取刷新进程实例状态'\n        )\n        self.get_process_port_by_app_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_process_port_by_app_id/',\n            description=u'查询进程端口'\n        )\n        self.get_property_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_property_list/',\n            description=u'查询属性列表'\n        )\n        self.get_set_host_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_set_host_list/',\n            description=u'查询Set主机列表'\n        )\n        self.get_set_property = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_set_property/',\n            description=u'获取所有 set 属性'\n        )\n        self.get_sets_by_property = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_sets_by_property/',\n            description=u'根据 set 属性获取 set'\n        )\n        self.get_topo_tree_by_app_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cc/get_topo_tree_by_app_id/',\n            description=u'查询业务拓扑树'\n        )\n        self.update_custom_property = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_custom_property/',\n            description=u'修改主机自定义属性'\n        )\n        self.update_gse_proxy_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_gse_proxy_status/',\n            description=u'更新主机gse agent proxy 状态'\n        )\n        self.update_host_by_app_id = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_host_by_app_id/',\n            description=u'更新主机的gse agent状态'\n        )\n        self.update_host_info = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_host_info/',\n            description=u'更新主机属性'\n        )\n        self.update_host_module = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_host_module/',\n            description=u'修改主机模块'\n        )\n        self.update_host_plat = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_host_plat/',\n            description=u'更新主机云子网'\n        )\n        self.update_module_property = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_module_property/',\n            description=u'修改模块属性'\n        )\n        self.update_proc_config_instance = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_proc_config_instance/',\n            description=u'刷新进程配置实例'\n        )\n        self.update_set_property = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_set_property/',\n            description=u'更新集群属性'\n        )\n        self.update_set_service_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cc/update_set_service_status/',\n            description=u'修改集群服务状态'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/cmsi.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsCMSI(object):\n    \"\"\"Collections of CMSI APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.get_msg_type = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/cmsi/get_msg_type/',\n            description=u'查询消息发送类型'\n        )\n        self.send_mail = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_mail/',\n            description=u'发送邮件'\n        )\n        self.send_mp_weixin = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_mp_weixin/',\n            description=u'发送公众号微信消息'\n        )\n        self.send_msg = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_msg/',\n            description=u'通用消息发送'\n        )\n        self.send_qy_weixin = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_qy_weixin/',\n            description=u'发送企业微信'\n        )\n        self.send_sms = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_sms/',\n            description=u'发送短信'\n        )\n        self.send_voice_msg = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_voice_msg/',\n            description=u'公共语音通知'\n        )\n        self.send_weixin = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/cmsi/send_weixin/',\n            description=u'发送微信消息'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/gse.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsGSE(object):\n    \"\"\"Collections of GSE APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.get_agent_info = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/gse/get_agent_info/',\n            description=u'Agent心跳信息查询'\n        )\n        self.get_agent_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/gse/get_agent_status/',\n            description=u'Agent在线状态查询'\n        )\n        self.proc_create_session = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/gse/proc_create_session/',\n            description=u'进程管理：新建 session'\n        )\n        self.proc_get_task_result_by_id = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/gse/proc_get_task_result_by_id/',\n            description=u'进程管理：获取任务结果'\n        )\n        self.proc_run_command = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/gse/proc_run_command/',\n            description=u'进程管理：执行命令'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/job.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsJOB(object):\n    \"\"\"Collections of JOB APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.execute_job = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/execute_job/',\n            description=u'启动作业'\n        )\n        self.fast_execute_sql = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/fast_execute_sql/',\n            description=u'快速执行SQL脚本'\n        )\n        self.get_cron_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_cron_list/',\n            description=u'查询业务下定时作业信息'\n        )\n        self.get_job_detail = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_job_detail/',\n            description=u'查询作业模板详情'\n        )\n        self.get_job_instance_log = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_job_instance_log/',\n            description=u'根据作业实例ID查询作业执行日志'\n        )\n        self.get_job_instance_status = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_job_instance_status/',\n            description=u'查询作业执行状态'\n        )\n        self.get_job_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_job_list/',\n            description=u'查询作业模板'\n        )\n        self.get_os_account = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_os_account/',\n            description=u'查询业务下的执行账号'\n        )\n        self.get_own_db_account_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_own_db_account_list/',\n            description=u'查询用户有权限的DB帐号列表'\n        )\n        self.get_script_detail = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_script_detail/',\n            description=u'查询脚本详情'\n        )\n        self.get_script_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_script_list/',\n            description=u'查询脚本列表'\n        )\n        self.get_step_instance_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/get_step_instance_status/',\n            description=u'查询作业步骤的执行状态'\n        )\n        self.update_cron_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/update_cron_status/',\n            description=u'更新定时作业状态'\n        )\n        self.fast_execute_script = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/fast_execute_script/',\n            description=u'快速执行脚本'\n        )\n        self.fast_push_file = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/fast_push_file/',\n            description=u'快速分发文件'\n        )\n        self.save_cron = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/save_cron/',\n            description=u'新建或保存定时作业'\n        )\n        self.change_cron_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/change_cron_status/',\n            description=u'更新定时作业状态'\n        )\n        self.execute_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/execute_task/',\n            description=u'根据作业模板ID启动作业'\n        )\n        self.execute_task_ext = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/execute_task_ext/',\n            description=u'启动作业Ext(带全局变量启动)'\n        )\n        self.get_agent_status = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/job/get_agent_status/',\n            description=u'查询Agent状态'\n        )\n        self.get_cron = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_cron/',\n            description=u'查询业务下定时作业信息'\n        )\n        self.get_task = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_task/',\n            description=u'查询作业模板'\n        )\n        self.get_task_detail = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_task_detail/',\n            description=u'查询作业模板详情'\n        )\n        self.get_task_ip_log = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_task_ip_log/',\n            description=u'根据作业实例ID查询作业执行日志'\n        )\n        self.get_task_result = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/job/get_task_result/',\n            description=u'根据作业实例 ID 查询作业执行状态'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/apis/sops.py",
    "content": "# -*- coding: utf-8 -*-\nfrom ..base import ComponentAPI\n\n\nclass CollectionsSOPS(object):\n    \"\"\"Collections of SOPS APIS\"\"\"\n\n    def __init__(self, client):\n        self.client = client\n\n        self.create_periodic_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/create_periodic_task/',\n            description=u'通过流程模板新建周期任务'\n        )\n        self.create_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/create_task/',\n            description=u'通过流程模板新建任务'\n        )\n        self.get_periodic_task_info = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_periodic_task_info/',\n            description=u'查询业务下的某个周期任务详情'\n        )\n        self.get_periodic_task_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_periodic_task_list/',\n            description=u'查询业务下的周期任务列表'\n        )\n        self.get_task_detail = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_task_detail/',\n            description=u'查询任务执行详情'\n        )\n        self.get_task_node_detail = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_task_node_detail/',\n            description=u'查询任务节点执行详情'\n        )\n        self.get_task_status = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_task_status/',\n            description=u'查询任务或任务节点执行状态'\n        )\n        self.get_template_info = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_template_info/',\n            description=u'查询单个模板详情'\n        )\n        self.get_template_list = ComponentAPI(\n            client=self.client, method='GET',\n            path='/api/c/compapi{bk_api_ver}/sops/get_template_list/',\n            description=u'查询模板列表'\n        )\n        self.import_common_template = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/import_common_template/',\n            description=u'导入公共流程'\n        )\n        self.modify_constants_for_periodic_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/modify_constants_for_periodic_task/',\n            description=u'修改周期任务的全局参数'\n        )\n        self.modify_cron_for_periodic_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/modify_cron_for_periodic_task/',\n            description=u'修改周期任务的调度策略'\n        )\n        self.node_callback = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/node_callback/',\n            description=u'回调任务节点'\n        )\n        self.operate_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/operate_task/',\n            description=u'操作任务'\n        )\n        self.query_task_count = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/query_task_count/',\n            description=u'查询任务分类统计总数'\n        )\n        self.set_periodic_task_enabled = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/set_periodic_task_enabled/',\n            description=u'设置周期任务是否激活'\n        )\n        self.start_task = ComponentAPI(\n            client=self.client, method='POST',\n            path='/api/c/compapi{bk_api_ver}/sops/start_task/',\n            description=u'开始执行任务'\n        )\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/base.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\nimport logging\n\nfrom .exceptions import ComponentAPIException\nfrom .conf import COMPONENT_SYSTEM_HOST\n\n\nlogger = logging.getLogger('component')\n\n\nclass ComponentAPI(object):\n    \"\"\"Single API for Component\"\"\"\n\n    HTTP_STATUS_OK = 200\n\n    def __init__(self, client, method, path, description='', default_return_value=None):\n        host = COMPONENT_SYSTEM_HOST\n        # Do not use join, use '+' because path may starts with '/'\n        self.host = host.rstrip('/')\n        self.path = path\n        self.url = ''\n        self.client = client\n        self.method = method\n        self.default_return_value = default_return_value\n\n    def get_url_with_api_ver(self):\n        bk_api_ver = self.client.get_bk_api_ver()\n        sub_path = '/{}'.format(bk_api_ver) if bk_api_ver else ''\n        return self.host + self.path.format(bk_api_ver=sub_path)\n\n    def __call__(self, *args, **kwargs):\n        self.url = self.get_url_with_api_ver()\n        try:\n            return self._call(*args, **kwargs)\n        except ComponentAPIException as e:\n            # Combine log message\n            log_message = [e.error_message, ]\n            log_message.append('url=%(url)s' % {'url': e.api_obj.url})\n            if e.resp:\n                log_message.append('content: %s' % e.resp.text)\n\n            logger.exception('\\n'.join(log_message))\n\n            # Try return error message from remote service\n            if e.resp is not None:\n                try:\n                    return e.resp.json()\n                except Exception:\n                    pass\n            return {'result': False, 'message': e.error_message, 'data': None}\n\n    def _call(self, *args, **kwargs):\n        params, data = {}, {}\n        if args and isinstance(args[0], dict):\n            params = args[0]\n        params.update(kwargs)\n\n        # Validate params for POST request\n        if self.method == 'POST':\n            data = params\n            params = None\n            try:\n                json.dumps(data)\n            except Exception:\n                raise ComponentAPIException(self, 'Request parameter error (please pass in a dict or json string)')\n\n        # Request remote server\n        try:\n            resp = self.client.request(self.method, self.url, params=params, data=data)\n        except Exception as e:\n            logger.exception('Error occurred when requesting method=%s url=%s',\n                             self.method, self.url)\n            raise ComponentAPIException(self, u'Request component error, Exception: %s' % str(e))\n\n        # Parse result\n        if resp.status_code != self.HTTP_STATUS_OK:\n            message = 'Request component error, status_code: %s' % resp.status_code\n            raise ComponentAPIException(self, message, resp=resp)\n        try:\n            # Parse response\n            json_resp = resp.json()\n            if not json_resp['result']:\n                # 组件返回错误时，记录相应的 request_id\n                log_message = (u'Component return error message: %(message)s, request_id=%(request_id)s, '\n                               u'url=%(url)s, params=%(params)s, data=%(data)s, response=%(response)s') % {\n                    'request_id': json_resp.get('request_id'),\n                    'message': json_resp['message'],\n                    'url': self.url,\n                    'params': params,\n                    'data': data,\n                    'response': resp.text,\n                }\n                logger.error(log_message)\n\n            # Return default return value\n            if not json_resp and self.default_return_value is not None:\n                return self.default_return_value\n            return json_resp\n        except Exception:\n            raise ComponentAPIException(\n                self, 'Return data format is incorrect, which shall be unified as json', resp=resp)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/client.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"Component API Client\n\"\"\"\nimport requests\nimport json\nimport time\nimport random\nimport logging\n\nfrom .compat import urlparse\nfrom . import conf\nfrom . import collections\nfrom .utils import get_signature\n\n# shutdown urllib3's warning\ntry:\n    from requests.packages.urllib3.exceptions import InsecureRequestWarning\n    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)\nexcept Exception:\n    pass\n\n\nlogger = logging.getLogger('component')\n\n\nclass BaseComponentClient(object):\n    \"\"\"Base client class for component\"\"\"\n\n    @classmethod\n    def setup_components(cls, components):\n        cls.available_collections = components\n\n    def __init__(self, app_code=None, app_secret=None, common_args=None, use_test_env=False, language=None,\n                 bk_app_code=None, bk_app_secret=None):\n        \"\"\"\n        :param str app_code: App code to use\n        :param str app_secret: App secret to use\n        :param dict common_args: Args that will apply to every request\n        :param bool use_test_env: whether use test version of components\n        \"\"\"\n        self.app_code = bk_app_code or app_code or conf.APP_CODE\n        self.app_secret = bk_app_secret or app_secret or conf.SECRET_KEY\n        self.bk_api_ver = conf.DEFAULT_BK_API_VER\n        self.common_args = common_args or {}\n        self._cached_collections = {}\n        self.use_test_env = use_test_env\n        self.language = language or self.get_cur_language()\n\n    def set_use_test_env(self, use_test_env):\n        \"\"\"Change the value of use_test_env\n\n        :param bool use_test_env: whether use test version of components\n        \"\"\"\n        self.use_test_env = use_test_env\n\n    def set_language(self, language):\n        self.language = language\n\n    def get_cur_language(self):\n        try:\n            from django.utils import translation\n            return translation.get_language()\n        except Exception:\n            return None\n\n    def set_bk_api_ver(self, bk_api_ver):\n        self.bk_api_ver = bk_api_ver\n\n    def get_bk_api_ver(self):\n        return self.bk_api_ver\n\n    def merge_params_data_with_common_args(self, method, params, data, enable_app_secret=False):\n        \"\"\"get common args when request\n        \"\"\"\n        common_args = dict(bk_app_code=self.app_code, **self.common_args)\n        if enable_app_secret:\n            common_args['bk_app_secret'] = self.app_secret\n        if method == 'GET':\n            _params = common_args.copy()\n            _params.update(params or {})\n            params = _params\n        elif method == 'POST':\n            _data = common_args.copy()\n            _data.update(data or {})\n            data = json.dumps(_data)\n        return params, data\n\n    def request(self, method, url, params=None, data=None, **kwargs):\n        \"\"\"Send request\n        \"\"\"\n        # determine whether access test environment of third-party system\n        headers = kwargs.pop('headers', {})\n        if self.use_test_env:\n            headers['x-use-test-env'] = '1'\n        if self.language:\n            headers['blueking-language'] = self.language\n\n        params, data = self.merge_params_data_with_common_args(method, params, data, enable_app_secret=True)\n        logger.debug('Calling %s %s with params=%s, data=%s, headers=%s', method, url, params, data, headers)\n        return requests.request(method, url, params=params, data=data, verify=False,\n                                headers=headers, **kwargs)\n\n    def __getattr__(self, key):\n        if key not in self.available_collections:\n            return getattr(super(BaseComponentClient, self), key)\n\n        if key not in self._cached_collections:\n            collection = self.available_collections[key]\n            self._cached_collections[key] = collection(self)\n        return self._cached_collections[key]\n\n\nclass ComponentClientWithSignature(BaseComponentClient):\n    \"\"\"Client class for component with signature\"\"\"\n\n    def request(self, method, url, params=None, data=None, **kwargs):\n        \"\"\"Send request, will add \"signature\" parameter.\n        \"\"\"\n        # determine whether access test environment of third-party system\n        headers = kwargs.pop('headers', {})\n        if self.use_test_env:\n            headers['x-use-test-env'] = '1'\n        if self.language:\n            headers['blueking-language'] = self.language\n\n        params, data = self.merge_params_data_with_common_args(method, params, data, enable_app_secret=False)\n        if method == 'POST':\n            params = {}\n\n        url_path = urlparse(url).path\n        # signature always in GET params\n        params.update({\n            'bk_timestamp': int(time.time()),\n            'bk_nonce': random.randint(1, 2147483647),\n        })\n        params['bk_signature'] = get_signature(method, url_path, self.app_secret, params=params, data=data)\n\n        logger.debug('Calling %s %s with params=%s, data=%s', method, url, params, data)\n        return requests.request(method, url, params=params, data=data, verify=False,\n                                headers=headers, **kwargs)\n\n\n# 根据是否开启signature来判断使用的Client版本\nif conf.CLIENT_ENABLE_SIGNATURE:\n    ComponentClient = ComponentClientWithSignature\nelse:\n    ComponentClient = BaseComponentClient\n\nComponentClient.setup_components(collections.AVAILABLE_COLLECTIONS)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/collections.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"Collections for component client\"\"\"\nfrom .apis.bk_login import CollectionsBkLogin\nfrom .apis.bk_paas import CollectionsBkPaas\nfrom .apis.cc import CollectionsCC\nfrom .apis.cmsi import CollectionsCMSI\nfrom .apis.gse import CollectionsGSE\nfrom .apis.job import CollectionsJOB\nfrom .apis.sops import CollectionsSOPS\n\n\n# Available components\nAVAILABLE_COLLECTIONS = {\n    'bk_login': CollectionsBkLogin,\n    'bk_paas': CollectionsBkPaas,\n    'cc': CollectionsCC,\n    'cmsi': CollectionsCMSI,\n    'gse': CollectionsGSE,\n    'job': CollectionsJOB,\n    'sops': CollectionsSOPS,\n}\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/compat.py",
    "content": "# -*- coding: utf-8 -*-\nimport sys\n\n_ver = sys.version_info\n\nis_py2 = (_ver[0] == 2)\n\nis_py3 = (_ver[0] == 3)\n\n\nif is_py2:\n    from urlparse import urlparse\n\n    str = unicode\n\nelif is_py3:\n    from urllib.parse import urlparse  # noqa\n\n    str = str\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/conf.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"Django project settings\n\"\"\"\n\n\ntry:\n    from django.conf import settings\n\n    APP_CODE = settings.APP_ID\n    SECRET_KEY = settings.APP_TOKEN\n    COMPONENT_SYSTEM_HOST = getattr(settings, 'BK_PAAS_INNER_HOST', settings.BK_PAAS_HOST)\n    DEFAULT_BK_API_VER = getattr(settings, 'DEFAULT_BK_API_VER', 'v2')\nexcept Exception:\n    APP_CODE = ''\n    SECRET_KEY = ''\n    COMPONENT_SYSTEM_HOST = ''\n    DEFAULT_BK_API_VER = 'v2'\n\nCLIENT_ENABLE_SIGNATURE = False\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/exceptions.py",
    "content": "# -*- coding: utf-8 -*-\n\n\nclass ComponentBaseException(Exception):\n    pass\n\n\nclass ComponentAPIException(ComponentBaseException):\n    \"\"\"Exception for Component API\"\"\"\n\n    def __init__(self, api_obj, error_message, resp=None):\n        self.api_obj = api_obj\n        self.error_message = error_message\n        self.resp = resp\n\n        if self.resp is not None:\n            error_message = '%s, resp=%s' % (error_message, self.resp.text)\n        super(ComponentAPIException, self).__init__(error_message)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/shortcuts.py",
    "content": "# -*- coding: utf-8 -*-\nimport logging\n\nfrom .client import ComponentClient\nfrom . import conf\n\nlogger = logging.getLogger('component')\n\n__all__ = [\n    'get_client_by_request',\n    'get_client_by_user',\n]\n\n\ndef get_client_by_request(request, **kwargs):\n    \"\"\"根据当前请求返回一个client\n\n    :param request: 一个django request实例\n    :returns: 一个初始化好的ComponentClint对象\n    \"\"\"\n    is_authenticated = request.user.is_authenticated\n    if callable(is_authenticated):\n        is_authenticated = is_authenticated()\n    if is_authenticated:\n        bk_token = request.COOKIES.get('bk_token', '')\n    else:\n        bk_token = ''\n\n    common_args = {\n        'bk_token': bk_token,\n    }\n    common_args.update(kwargs)\n    return ComponentClient(conf.APP_CODE, conf.SECRET_KEY, common_args=common_args)\n\n\ndef get_client_by_user(user, **kwargs):\n    \"\"\"根据user实例返回一个client\n\n    :param user: User实例或者User.username数据\n    :returns: 一个初始化好的ComponentClint对象\n    \"\"\"\n    try:\n        from account.models import BkUser as User\n    except Exception:\n        from django.contrib.auth.models import User\n\n    try:\n        if isinstance(user, User):\n            username = user.username\n        else:\n            username = user\n    except Exception:\n        logger.exception('Failed to get user according to user (%s)' % user)\n\n    common_args = {'bk_username': username}\n    common_args.update(kwargs)\n    return ComponentClient(conf.APP_CODE, conf.SECRET_KEY, common_args=common_args)\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/component/utils.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\nimport base64\nimport hmac\nimport hashlib\n\nfrom .compat import str\n\n\ndef get_signature(method, path, app_secret, params=None, data=None):\n    \"\"\"generate signature\n    \"\"\"\n    kwargs = {}\n    if params:\n        kwargs.update(params)\n    if data:\n        data = json.dumps(data) if isinstance(data, dict) else data\n        kwargs['data'] = data\n    kwargs = '&'.join([\n        '%s=%s' % (k, v)\n        for k, v in sorted(kwargs.items(), key=lambda x: x[0])\n    ])\n    orignal = '%s%s?%s' % (method, path, kwargs)\n    app_secret = app_secret.encode('utf-8') if isinstance(app_secret, str) else app_secret\n    orignal = orignal.encode('utf-8') if isinstance(orignal, str) else orignal\n    signature = base64.b64encode(hmac.new(app_secret, orignal, hashlib.sha1).digest())\n    return signature if isinstance(signature, str) else signature.decode('utf-8')\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/README.md",
    "content": "# 完善测试数据\n\n- 更新 blueking/tests/utils/utils.py 中 load_tests_settings 返回的数据为有效值\n- 更新 conf/default.py 中 APP_ID、APP_TOKEN、BK_PAAS_HOST 为有效值\n\n# 执行测试\n\n```\npython manage.py test --keepdb blueking.tests.test_client\npython manage.py test --keepdb blueking.tests.test_shortcuts\npython manage.py test --keepdb blueking.tests.test_utils\n```\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/test_client.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django.test import TestCase\n\nfrom blueking.component import collections\nfrom blueking.component.client import BaseComponentClient, ComponentClientWithSignature\nfrom blueking.tests.utils.utils import tests_settings as TS  # noqa\n\n\nclass TestBaseComponentClient(TestCase):\n\n    @classmethod\n    def setUpTestData(cls):  # noqa\n        cls.ComponentClient = BaseComponentClient\n        cls.ComponentClient.setup_components(collections.AVAILABLE_COLLECTIONS)\n\n    def test_api_get(self):\n        client = self.ComponentClient(\n            TS['valid_app']['bk_app_code'],\n            TS['valid_app']['bk_app_secret'],\n            common_args={\n                'bk_username': TS['bk_user']['bk_username'],\n            }\n        )\n        result = client.bk_login.get_user()\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertTrue(result['data']['bk_username'], TS['bk_user']['bk_username'])\n\n    def test_api_post(self):\n        client = self.ComponentClient(\n            TS['valid_app']['bk_app_code'],\n            TS['valid_app']['bk_app_secret'],\n            common_args={\n                'bk_username': TS['bk_user']['bk_username'],\n            }\n        )\n        result = client.bk_login.get_batch_users({'bk_username_list': [TS['bk_user']['bk_username']]})\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertTrue(result['data'][TS['bk_user']['bk_username']]['bk_username'], TS['bk_user']['bk_username'])\n\n    def test_set_bk_api_ver(self):\n        client = self.ComponentClient(\n            TS['valid_app']['bk_app_code'],\n            TS['valid_app']['bk_app_secret'],\n            common_args={\n                'bk_username': TS['bk_user']['bk_username'],\n            }\n        )\n        client.set_bk_api_ver('')\n        result = client.bk_login.get_user({'username': TS['bk_user']['bk_username']})\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertTrue(result['data']['username'], TS['bk_user']['bk_username'])\n\n\nclass TestComponentClientWithSignature(TestCase):\n\n    @classmethod\n    def setUpTestData(cls):  # noqa\n        cls.ComponentClient = ComponentClientWithSignature\n        cls.ComponentClient.setup_components(collections.AVAILABLE_COLLECTIONS)\n\n    def test_api(self):\n        client = self.ComponentClient(\n            TS['valid_app']['bk_app_code'],\n            TS['valid_app']['bk_app_secret'],\n            common_args={\n                'bk_username': TS['bk_user']['bk_username'],\n            }\n        )\n        result = client.bk_login.get_user()\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertTrue(result['data']['bk_username'], TS['bk_user']['bk_username'])\n\n    def test_api_post(self):\n        client = self.ComponentClient(\n            TS['valid_app']['bk_app_code'],\n            TS['valid_app']['bk_app_secret'],\n            common_args={\n                'bk_username': TS['bk_user']['bk_username'],\n            }\n        )\n        result = client.bk_login.get_batch_users({'bk_username_list': [TS['bk_user']['bk_username']]})\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertTrue(result['data'][TS['bk_user']['bk_username']]['bk_username'], TS['bk_user']['bk_username'])\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/test_shortcuts.py",
    "content": "# -*- coding: utf-8 -*-\nimport json\n\nfrom django.test import TestCase, RequestFactory\n\nfrom blueking.component.shortcuts import get_client_by_user, get_client_by_request\nfrom blueking.tests.utils.utils import tests_settings as TS  # noqa\nfrom blueking.tests.utils.utils import get_user_model\n\n\nclass TestShortcuts(TestCase):\n\n    def setUp(self):\n        self.factory = RequestFactory()\n        self.user_model = get_user_model()\n\n    def test_get_client_by_request(self):\n        request = self.factory.get('/')\n        request.user = self.user_model(username=TS['bk_user']['bk_username'])\n        request.COOKIES = {'bk_token': TS['bk_user']['bk_token']}\n\n        client = get_client_by_request(request)\n        result = client.bk_login.get_user()\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertEqual(result['data']['bk_username'], TS['bk_user']['bk_username'])\n\n    def test_get_client_by_user(self):\n        user = self.user_model(username=TS['bk_user']['bk_username'])\n        client = get_client_by_user(user)\n        result = client.bk_login.get_user()\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertEqual(result['data']['bk_username'], TS['bk_user']['bk_username'])\n\n        client = get_client_by_user(TS['bk_user']['bk_username'])\n        result = client.bk_login.get_user()\n        self.assertTrue(result['result'], json.dumps(result))\n        self.assertEqual(result['data']['bk_username'], TS['bk_user']['bk_username'])\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/test_utils.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.test import TestCase\n\nfrom blueking.component.utils import get_signature\n\n\nclass TestUtils(TestCase):\n\n    def test_get_signature(self):\n        params = {\n            'method': 'GET',\n            'path': '/blueking/component/',\n            'app_secret': 'test',\n            'params': {'p1': 1, 'p2': 'abc'},\n        }\n        signature = get_signature(**params)\n        self.assertEqual(signature, 'S73XVZx3HvPRcak1z3k7jUkA7FM=')\n\n        params = {\n            'method': 'POST',\n            'path': '/blueking/component/',\n            'app_secret': 'test',\n            'data': {'p1': 1, 'p2': 'abc'},\n        }\n        # python3 could sort the dict\n        signature = get_signature(**params)\n        self.assertIn(signature, ['qTzporCDYXqaWKuk/MNUXPT3A5U=', 'PnmqLk/8PVpsLHDFkolCQoi5lmg='])\n"
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/utils/__init__.py",
    "content": ""
  },
  {
    "path": "paas-ce/paas/websocket/blueking/tests/utils/utils.py",
    "content": "# -*- coding: utf-8 -*-\n\n\ndef get_user_model():\n    try:\n        from account.models import BkUser as User\n    except Exception:\n        from django.contrib.auth.models import User\n    return User\n\n\ndef load_tests_settings():\n    return {\n        'valid_app': {\n            'bk_app_code': '',\n            'bk_app_secret': '',\n        },\n        'bk_user': {\n            'bk_username': 'admin',\n            'bk_token': '',\n        }\n    }\n\n\ntests_settings = load_tests_settings()\n"
  },
  {
    "path": "paas-ce/paas/websocket/config/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'BASE_DIR']\n\nimport os\n\n# This will make sure the app is always imported when\n# Django starts so that shared_task will use this app.\nfrom blueapps.core.celery import celery_app\n\n# app 基本信息\n\n# SaaS运行版本，如非必要请勿修改\nRUN_VER = 'open'\n# SaaS应用ID\nAPP_CODE = 'bastion'\n# SaaS安全密钥，注意请勿泄露该密钥\nSECRET_KEY = os.getenv(\"APP_TOKEN\", 'a4abe3a6-e171-49e1-9431-fe50ea2406bc')\n# PAAS平台URL\nBK_URL = os.getenv(\"BK_PAAS_HOST\", \"https://dev.opsany.cn\")\n# UploadPath\nUPLOAD_PATH = os.getenv(\"UPLOAD_PATH\", \"/opt/opsany/\")\n# MFA过期时间，单位：秒\nMFA_TIME_OUT = 1800\n\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(\n    __file__)))\n\n\nDEFAULT_LANGUAGE = \"chinese_simplified\"\nDEFAULT_THEME = \"theme-default\""
  },
  {
    "path": "paas-ce/paas/websocket/config/default.py",
    "content": "# -*- coding: utf-8 -*-\nfrom blueapps.conf.log import get_logging_config_dict\nfrom blueapps.conf.default_settings import *  # noqa\n\n\n\n# 请在这里加入你的自定义 APP\nINSTALLED_APPS += (\n    'channels',\n    'bastion',\n    # 'elasticapm.contrib.django',\n)\n\nASGI_APPLICATION = 'bastion.routing.application'\n\n# 自定义中间件\nMIDDLEWARE += (\n    'corsheaders.middleware.CorsMiddleware',\n)\n\n# 所有环境的日志级别可以在这里配置\n# LOG_LEVEL = 'INFO'\n\n# STATIC_VERSION_BEGIN\n# 静态资源文件(js,css等）在APP上线更新后, 由于浏览器有缓存,\n# 可能会造成没更新的情况. 所以在引用静态资源的地方，都把这个加上\n# Django 模板中：<script src=\"/a.js?v={{ STATIC_VERSION }}\"></script>\n# mako 模板中：<script src=\"/a.js?v=${ STATIC_VERSION }\"></script>\n# 如果静态资源修改了以后，上线前改这个版本号即可\n# STATIC_VERSION_END\nSTATIC_VERSION = '1.0'\n\nSTATICFILES_DIRS = [\n    os.path.join(BASE_DIR, 'static')\n]\n\n# CELERY 开关，使用时请改为 True，否则请保持为False。启动方式为以下两行命令：\n# worker: python manage.py celery worker -l info\n# beat: python manage.py celery beat -l info\nIS_USE_CELERY = False\n\n# CELERY 并发数，默认为 2，可以通过环境变量或者 Procfile 设置\nCELERYD_CONCURRENCY = os.getenv('BK_CELERYD_CONCURRENCY', 2)\n\n# CELERY 配置，申明任务的文件路径，即包含有 @task 装饰器的函数文件\nCELERY_IMPORTS = (\n\n)\n\n# load logging settings\nLOGGING = get_logging_config_dict(locals())\n\n# 初始化管理员列表，列表中的人员将拥有预发布环境和正式环境的管理员权限\n# 注意：请在首次提测和上线前修改，之后的修改将不会生效\nINIT_SUPERUSER = []\n\n\n# 使用mako模板时，默认打开的过滤器：h(过滤html)\nMAKO_DEFAULT_FILTERS = ['h']\n\n# BKUI是否使用了history模式\nIS_BKUI_HISTORY_MODE = False\n\n# 是否需要对AJAX弹窗登录强行打开\nIS_AJAX_PLAIN_MODE = False\n\n# Terminal log path\nTERMINAL_PATH = os.getenv(\"TERMINAL_PATH\", \"/opt/opsany/\")\n\n\"\"\"\n以下为框架代码 请勿修改\n\"\"\"\n# celery settings\nif IS_USE_CELERY:\n    INSTALLED_APPS = locals().get('INSTALLED_APPS', [])\n    import djcelery\n    INSTALLED_APPS += (\n        'djcelery',\n    )\n    djcelery.setup_loader()\n    CELERY_ENABLE_UTC = False\n    CELERYBEAT_SCHEDULER = \"djcelery.schedulers.DatabaseScheduler\"\n\n# remove disabled apps\nif locals().get('DISABLED_APPS'):\n    INSTALLED_APPS = locals().get('INSTALLED_APPS', [])\n    DISABLED_APPS = locals().get('DISABLED_APPS', [])\n\n    INSTALLED_APPS = [_app for _app in INSTALLED_APPS\n                      if _app not in DISABLED_APPS]\n\n    _keys = ('AUTHENTICATION_BACKENDS',\n             'DATABASE_ROUTERS',\n             'FILE_UPLOAD_HANDLERS',\n             'MIDDLEWARE',\n             'PASSWORD_HASHERS',\n             'TEMPLATE_LOADERS',\n             'STATICFILES_FINDERS',\n             'TEMPLATE_CONTEXT_PROCESSORS')\n\n    import itertools\n\n    for _app, _key in itertools.product(DISABLED_APPS, _keys):\n        if locals().get(_key) is None:\n            continue\n        locals()[_key] = tuple([_item for _item in locals()[_key]\n                                if not _item.startswith(_app + '.')])\n\n# 跨域增加忽略\nCORS_ALLOW_CREDENTIALS = True\nCORS_ORIGIN_ALLOW_ALL = True\nCORS_ORIGIN_WHITELIST = ()\n\nCORS_ALLOW_METHODS = (\n        'DELETE',\n        'GET',\n        'OPTIONS',\n        'PATCH',\n        'POST',\n        'PUT',\n        'VIEW',\n    )\n\nCORS_ALLOW_HEADERS = (\n        'accept',\n        'accept-encoding',\n        'authorization',\n        'content-type',\n        'dnt',\n        'origin',\n        'user-agent',\n        'x-csrftoken',\n        'x-requested-with',\n    )\n"
  },
  {
    "path": "paas-ce/paas/websocket/config/dev.py",
    "content": "# -*- coding: utf-8 -*-\nimport os\nfrom urllib import parse\nfrom config import RUN_VER, MFA_TIME_OUT\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 本地开发环境\nRUN_MODE = 'DEVELOP'\n\n# APP本地静态资源目录\nSTATIC_URL = '/static/'\n\n# pycryptodomex             3.9.8\n# APP静态资源目录url\n# REMOTE_STATIC_URL = '%sremote/' % STATIC_URL\n\n# Celery 消息队列设置 RabbitMQ\n# Celery 消息队列设置 Redis\n# BROKER_URL = 'redis://127.0.0.1:6379/8'\n\n\n# DEBUG = True\nDEBUG = False\n\nTERMINAL_PATH = os.getenv(\"TERMINAL_PATH\", \"D:/womaiyun/upload/terminal\")\nGUACD_HOST = '101.251.220.46'\nGUACD_PORT = '4822'\n# paas服务器本地路径，\nORI_GUACD_PATH = '/opt/dev-paas/uploads/guacamole/'\nGUACD_PATH = '/srv/guacamole'\n# 堡垒机超时时间，单位s\nTERMINAL_TIMEOUT = 1800\nMEDIA_URL = ''\nUPLOAD_PATH = '/opt/opsany/'\n# 本地开发数据库设置\n# USE FOLLOWING SQL TO CREATE THE DATABASE NAMED APP_CODE\n# SQL: CREATE DATABASE `framework_py` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; # noqa: E501\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': APP_CODE,\n        'USER': 'root',\n        'PASSWORD': '123456',\n        'HOST': '127.0.0.1',\n        'PORT': '3306',\n    },\n}\nBK_TOKEN = \"PyPvDq71XFeDK24GkcJhwgPsxr8a1Xvs575Ac8oFVyQ\"\n# BK_TOKEN = \"zywDokcgpuKsZ7YUkR3zh4-EGJ21gez65XX1rfc5wdM\"\nCACHES = {\n    \"default\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://127.0.0.1:6379/1\",\n        'TIMEOUT': 86400,  # 1天\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            \"PASSWORD\": \"123456\"\n        }\n        },\n    \"cache\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://127.0.0.1:6379/1\",\n        'TIMEOUT': 1800,  # 30分钟\n        \"OPTIONS\": {\n            \"CLIENT_CALSS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            \"PASSWORD\": \"123456\"\n        }\n    },\n    \"mfa\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://127.0.0.1:6379/1\",\n        'TIMEOUT': MFA_TIME_OUT,\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            \"PASSWORD\": \"123456\"\n        }\n    },\n    \"pod_login\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://127.0.0.1:6379/1\",\n        'TIMEOUT': 86400,\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            \"PASSWORD\": \"123456\"\n        }\n    }\n}\n\nCHANNEL_LAYERS = {\n    'default': {\n        'BACKEND': 'channels_redis.core.RedisChannelLayer',\n        'CONFIG': {\n            'hosts': [\"redis://:123456@127.0.0.1:6379/11\"],\n            \"symmetric_encryption_keys\": [SECRET_KEY],\n        },\n    }\n}\n\n\n# 多人开发时，无法共享的本地配置可以放到新建的 local_settings.py 文件中\n# 并且把 local_settings.py 加入版本管理忽略文件中\ntry:\n    from .local_settings import *  # noqa\nexcept ImportError:\n    pass\n"
  },
  {
    "path": "paas-ce/paas/websocket/config/prod.py",
    "content": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nfrom config import RUN_VER, MFA_TIME_OUT\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import *  # noqa\n\n# 正式环境\nRUN_MODE = 'PRODUCT'\n\n# 只对正式环境日志级别进行配置，可以在这里修改\nLOG_LEVEL = 'ERROR'\n\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\nGUACD_HOST = '127.0.0.1'\nGUACD_PORT = '4822'\n# 对应guacd的路径如下\nGUACD_PATH = \"/srv/guacamole\"\n\nMEDIA_URL = ''\nUPLOAD_PATH = os.getenv(\"UPLOAD_PATH\", \"/opt/opsany/\")\nTERMINAL_PATH = os.path.join(os.getenv(\"UPLOAD_PATH\", \"/opt/opsany/\"), \"uploads/terminal\")\nORI_GUACD_PATH = os.path.join(os.getenv(\"UPLOAD_PATH\", \"/opt/opsany/\"), \"uploads/guacamole\")\nTERMINAL_TIMEOUT = int(os.getenv(\"TERMINAL_TIMEOUT\", 1800))\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': 'bastion',  # 数据库名\n            'USER': 'bastion',  # 数据库用户\n            'PASSWORD': os.getenv(\"MYSQL_PASSWORD\", APP_CODE),  # 数据库密码\n            'HOST': os.getenv(\"MYSQL_HOST\", \"127.0.0.1\"),  # 数据库主机\n            'PORT': int(os.getenv(\"MYSQL_PORT\", \"3306\")),  # 数据库端口\n            'OPTIONS': {\n                \"init_command\": \"SET default_storage_engine=INNODB\",\n            }\n\n        },\n    }\n)\n\nREDIS_HOST = os.getenv(\"REDIS_HOST\", \"127.0.0.1\")\nREDIS_PORT = os.getenv(\"REDIS_PORT\", \"6379\")\nREDIS_USERNAME = parse.quote(os.getenv(\"REDIS_USERNAME\", \"\") or \"\")\nREDIS_PASSWORD = parse.quote(os.getenv(\"REDIS_PASSWORD\", APP_CODE))  # 密码URL编译，防止出现@等符号\n\nCACHES.update(\n    {\n        \"default\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/1\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 86400,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            }\n        },\n        \"cache\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/9\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"mfa\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        },\n        \"pod_login\": {\n            \"BACKEND\": \"django_redis.cache.RedisCache\",\n            \"LOCATION\": \"redis://{}:{}@{}:{}/14\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),\n            'TIMEOUT': 1800,\n            \"OPTIONS\": {\n                \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n                \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n                # \"PASSWORD\": REDIS_PASSWORD,\n            }\n        }\n    }\n)\n\n\nCHANNEL_LAYERS = {\n    'default': {\n        'BACKEND': 'channels_redis.core.RedisChannelLayer',\n        'CONFIG': {\n            'hosts': [\"redis://{}:{}@{}:{}/8\".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT)],\n            \"symmetric_encryption_keys\": [SECRET_KEY],\n        },\n    }\n}\n"
  },
  {
    "path": "paas-ce/paas/websocket/config/redis_demo.py",
    "content": "from redis import StrictRedis\nimport json\n\nqueue = StrictRedis(host=\"10.0.0.73\", port=6379, password=\"123456.coM\", db=8)\nchannel_name = \"specific.jZZgsueU!xndwbjhvQQAa\"\naa = queue.pubsub_numsub(channel_name)\nii = queue.publish(channel_name, json.dumps(['echo huxingqi > demo']))\nprint(\"ii\", ii)\nprint(type(aa))\nprint(\"aaaaaaaaa\", aa)\nbb = channels = queue.pubsub_channels()\nprint(type(bb))\nprint(bb)\n"
  },
  {
    "path": "paas-ce/paas/websocket/config/stag.py",
    "content": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, MFA_TIME_OUT\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas import *  # noqa\nelse:\n    from blueapps.patch.settings_paas_services import  * # noqa\n\n# 预发布环境\nRUN_MODE = 'STAGING'\n\nDEBUG = True\n\n# Terminal log path\nTERMINAL_PATH = os.getenv(\"TERMINAL_PATH\", \"/opt/opsany/uploads/terminal\")\n# 正式环境的日志级别可以在这里配置\n# V2\n# import logging\n# logging.getLogger('root').setLevel('INFO')\n# V3\n# import logging\n# logging.getLogger('app').setLevel('INFO')\n\n# 预发布环境数据库可以在这里配置\n\nDATABASES.update(\n    {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': 'bastion',  # 数据库名\n            'USER': 'bastion',  # 数据库用户\n            'PASSWORD': 'bastion',  # 数据库密码\n            'HOST': 'localhost',  # 数据库主机\n            'PORT': '3306',  # 数据库端口\n            'ATOMIC_REQUESTS': True,\n        },\n    }\n)\n\nCACHES = {\n    \"default\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://:123456.coM@127.0.0.1:6379/1\",\n        'TIMEOUT': 86400,  # 1天\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": \"123456.coM\"\n        }\n    },\n    \"cache\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://:123456.coM@127.0.0.1:6379/9\",\n        'TIMEOUT': 1800,  # 30分钟\n        \"OPTIONS\": {\n            \"CLIENT_CALSS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": \"123456.coM\",\n        }\n    },\n    \"mfa\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://:123456.coM@127.0.0.1:6379/8\",\n        'TIMEOUT': 1800,  # 30分钟\n        \"OPTIONS\": {\n            \"CLIENT_CALSS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": \"123456.coM\",\n        }\n    },\n    \"pod_login\": {\n        \"BACKEND\": \"django_redis.cache.RedisCache\",\n        \"LOCATION\": \"redis://:123456.coM@127.0.0.1:6379/14\",\n        'TIMEOUT': 1800,\n        \"OPTIONS\": {\n            \"CLIENT_CLASS\": \"django_redis.client.DefaultClient\",\n            \"CONNECTION_POOL_KWARGS\": {\"max_connections\": 1000},\n            # \"PASSWORD\": \"123456.coM\",\n        }\n    }\n}\n\nCHANNEL_LAYERS = {\n    'default': {\n        # 'BACKEND': 'asgi_redis.RedisChannelLayer',\n        'BACKEND': 'channels_redis.core.RedisChannelLayer',\n        'CONFIG': {\n            'hosts': ['redis://:123456.coM@localhost:6379/8'],\n            \"symmetric_encryption_keys\": [SECRET_KEY],\n        },\n        # 'ROUTING': 'shell.routing.channel_routing',\n    }\n}\n\n\nGUACD_HOST = '127.0.0.1'\nGUACD_PORT = '4822'\n# paas服务器本地路径，\nORI_GUACD_PATH = '/opt/opsany/uploads/guacamole'\n# 对应guacd的路径如下\nGUACD_PATH = '/srv/guacamole'\n# # 堡垒机超时时间，单位:秒\nTERMINAL_TIMEOUT = 1800\nMEDIA_URL = ''\nUPLOAD_PATH = '/opt/opsany/'\n\nELASTIC_APM = {\n  'SERVICE_NAME': 'saas-bastion',\n  'SECRET_TOKEN': '',\n  'SERVER_URL': 'http://192.168.18.194:8200',\n  'ENVIRONMENT': 'dev',\n}\n\n"
  },
  {
    "path": "paas-ce/paas/websocket/k8s_api.py",
    "content": "import json\nfrom kubernetes.config.kube_config import _get_kube_config_loader\nfrom kubernetes.client import ApiClient, Configuration\nfrom kubernetes import client\nfrom kubernetes.client.exceptions import ApiException\nfrom kubernetes.stream import stream\nimport io\n\nimport urllib3\n\nurllib3.disable_warnings()\n\n\nclass K8sApi:\n    def __init__(self, config_string):\n        io_space = io.StringIO()\n        io_space.write(config_string)\n        self._base_kwargs = {\n            # 实际超时时间 是 _request_timeout 的 4 倍\n            \"_request_timeout\": 2\n        }\n        try:\n            config = Configuration()\n            config.verify_ssl = False\n            loader = _get_kube_config_loader(io_space)\n            loader.load_and_set(config)\n            self.api_client = ApiClient(configuration=config)\n        except Exception as e:\n            self.api_client = None\n        io_space.close()\n\n    def pod_exec(self, namespace, name, height, width, container=\"\"):\n        try:\n            api_instance = client.CoreV1Api(self.api_client)\n            \n            exec_command = [\n                \"/bin/sh\",\n                \"-c\",\n                'TERM=xterm-256color; export TERM; [ -x /bin/bash ] '\n                '&& ([ -x /usr/bin/script ] '\n                '&& /usr/bin/script -q -c \"/bin/bash\" /dev/null || exec /bin/bash) '\n                '|| exec /bin/sh'\n                '&& cp -rp /etc/skel/.bash* /root/']\n            \n            cont_stream = stream(api_instance.connect_get_namespaced_pod_exec,\n                                 name=name,\n                                 namespace=namespace,\n                                 container=container,\n                                 command=exec_command,\n                                 stderr=True,\n                                 stdin=True,\n                                 stdout=True,\n                                 tty=True,\n                                 _preload_content=False\n                                 )\n            cont_stream.write_channel(4, json.dumps({\"Height\": int(height), \"Width\": int(width)}))\n            return True, cont_stream\n        except ApiException as api_e:\n            return False, str(api_e.reason)\n        except Exception as e:\n            return False, str(e)\n    \n    def websocket_handler(self, msg):\n        print(f\"Received message: {msg}\")\n"
  },
  {
    "path": "paas-ce/paas/websocket/manage.py",
    "content": "#!/usr/bin/env python\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "paas-ce/paas/websocket/requirements.txt",
    "content": "# -*- coding: utf-8 -*-\n# 工程预装模块\n# 需要额外的python包，可直接在文件后面添加\n# 请确保指定的包和版本号，可通过pip安装\n\n# blueapps requirement\nDjango==4.2.16\nMako==1.0.6\nmysqlclient==1.4.6\nPyMySQL==1.0.2\nredis==4.2.0\ndjango_redis==5.0.0\ncelery==5.5.3\nkombu==5.5.4\nimportlib-metadata==7.0\ndjango-cors-headers==3.2.1\nchannels==4.0.0\nchannels-redis==4.0.0\nrequests==2.25.0\nparamiko==3.5.0\nsshtunnel==0.4.0\nkubernetes==26.1.0\ncryptography==3.4.7\npycryptodomex==3.9.8\ngrafana-api==1.0.3\nuvicorn==0.35.0\ngevent==24.11.1\ngunicorn==23.0.0\nwebsockets==15.0.1\n"
  },
  {
    "path": "paas-ce/paas/websocket/runtime.txt",
    "content": "python-3.6.7\n"
  },
  {
    "path": "paas-ce/paas/websocket/settings.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n请不要修改该文件\n如果你需要对settings里的内容做修改，config/default.py 文件中 添加即可\n\"\"\"\n\nimport os\nrun_env = \"\"\n# V3判断环境的环境变量为BKPAAS_ENVIRONMENT\nif 'BKPAAS_ENVIRONMENT' in os.environ:\n    ENVIRONMENT = os.getenv('BKPAAS_ENVIRONMENT', 'dev')\n    run_env = \"dev\"\n# V2判断环境的环境变量为BK_ENV\nelse:\n    PAAS_V2_ENVIRONMENT = os.environ.get('BK_ENV', 'development')\n    ENVIRONMENT = {\n        'development': 'dev',\n        'testing': 'stag',\n        'production': 'prod',\n    }.get(PAAS_V2_ENVIRONMENT)\n    run_env = ENVIRONMENT\nDJANGO_CONF_MODULE = 'config.{env}'.format(env=ENVIRONMENT)\n\ntry:\n    _module = __import__(DJANGO_CONF_MODULE, globals(), locals(), ['*'])\nexcept ImportError as e:\n    raise ImportError(\"Could not import config '%s' (Is it on sys.path?): %s\"\n                      % (DJANGO_CONF_MODULE, e))\n\nfor _setting in dir(_module):\n    if _setting == _setting.upper():\n        locals()[_setting] = getattr(_module, _setting)\n"
  },
  {
    "path": "paas-ce/paas/websocket/tianyi.pem",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1CsD3SijulOg0wFhYnKHfjNVSSTcJ+xBBgBaVFmuWNtLz34e\nawNxH/swtmPPBcwRe5IgLfdDiOGujNfn76F1K9XbB4x9Zgj14gCUQmlAKVwkhfuC\n0jVhO/AC/SyPNcDxQWnQPrUr7gEQbEpCl7a777qlJHrJTGfsrncGW3wof8GEHC+L\njHRuYXdFMCkeBZvIKL7fSasaD55q1DEmVRjkckpv9iOaML5w5CbTj1untw2jev1J\nsRFfPdS4EUpNKlBtO15YaxZT7KCBFx4g7vJIAgpeK5R+2eCFqNPVSVc+XkSULik3\nJhOyVGaoNvXxEeG7ZQbwRfOcdCsTP9vAOVXVDQIDAQABAoIBAQDFn1t2AIig4YyH\nfl2rSWqTTlU+UCsQtKrMYD/DGdWfxoQSvTKwEwCn/V0eRlFq4O3X4ABBUHODaFMh\ntWnAdu+g6Q2fNmkHRYlh/ZAbW9X7sGwEsITmL/plzeW61GqAcztE5r6l6jME+dDG\nTVVB41+iqINyOzyNArAewZcWV8uRUogHFYYLvPjrVgzxAQM4avrd6HcRsG4lqi04\nSVyckXh0/VxHvRlPTWa+nJBEFfkwp/MsiEb9nLevJVekGrj1nHg+MepBfp7TNDP8\n91+mJvdeM0zRCBjQ39wNv16hcqLgN3TEQ3HZKEXE6WXS5MBPowYNTdi5Vp/fq9KA\nMkllqleBAoGBAPlgL9bFAjgSxslENzyX29lckcfQkVbMU0jPqBETha8sBFSjw0x+\nQCMcxGKJ53cjxHqfHyn/hysCFouYFU2wG2dzwrRyz7XjmK/iyfdGsZvaJAs0fR7q\ny7QzYokii7kn+iTBrnUFbOZi6eXcSc0v1mbt2PG/q2drCJAuzbrjIda5AoGBANnN\nzqKbUNgmMwqC5JgRCwUN0ZTFi6Fz8GLO8ixdHEmPykUaaONGvNCa98IxF6vkfNw2\nfMPTrYJwIE+xx0lRjkpLJZPiofiyAcxm5AEBappi743pEFJTUxldkxBDGwPED7x0\nacGwWiyHDgi9bnq5c7qn+lpaZuZix9GBZGeAwwb1AoGAbgw1cEimTwpyMPVqjtHR\nEh3Ys13mFXC7vCDvYQHFd+Ur0BIoqEP6l8QlIfsLazcciKRZw1XhV2hnfJjTpeH2\nZfPe03TrFrBmfA/P4tCOpmFgkJVMNe2VkWMvs6bMFByBNeFG1JtdUFoMMATDiMn4\nipmhqCVWRaAlOkN9RGDhWPkCgYEAtD1mVJYnTtg9wOMU/OqNrf8DgxP/OvrQ4VPU\ngPYEpLODdbAnQH2XXyH/CgrKRgttcGb+1KdlnN3hP1IlUv1UvRJ25GzWERJt/pLe\n+B4N8/kPuOY4BYjC6ejP/NMrlfA3/YJwykKAPPz+lij9Nj4mET9VJFRPdzQjm7Jy\nPl0GB8kCgYEAuYMgb7C7zRw/Je1M6enxjiAbnfR0aPFN0XMsXhGQAwf56fvf+YvU\nAXOmSm9H7CqDtuTRG5CldVL138QBUXFk6d3L78j/522QHEy1dbmGl0QmZ7HlKbrq\nxrxAVE17ZKjvXT/HF17YIdEcUt5OF5Hl1T4jxCUzkA8+rSupLBtc0/o=\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "paas-ce/paas/websocket/urls.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.urls import path\nfrom django.urls import include\n\n\nurlpatterns = [\n    path('', include('blueapps.account.urls')),\n]\n"
  },
  {
    "path": "paas-ce/paas/websocket/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nWSGI config for project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/\n\"\"\"\n\nimport os\n\nfrom blueapps.core.wsgi import get_wsgi_application\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\napplication = get_wsgi_application()\n"
  },
  {
    "path": "paas-ce/paasagent/Gopkg.toml",
    "content": "# Gopkg.toml example\n#\n# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html\n# for detailed Gopkg.toml documentation.\n#\n# required = [\"github.com/user/thing/cmd/thing\"]\n# ignored = [\"github.com/user/project/pkgX\", \"bitbucket.org/user/project/pkgA/pkgY\"]\n#\n# [[constraint]]\n#   name = \"github.com/user/project\"\n#   version = \"1.0.0\"\n#\n# [[constraint]]\n#   name = \"github.com/user/project2\"\n#   branch = \"dev\"\n#   source = \"github.com/myfork/project2\"\n#\n# [[override]]\n#   name = \"github.com/x/y\"\n#   version = \"2.4.0\"\n#\n# [prune]\n#   non-go = false\n#   go-tests = true\n#   unused-packages = true\n\n\n[[constraint]]\n  name = \"github.com/labstack/echo\"\n  version = \"2.2.0\"\n\n[[constraint]]\n  name = \"github.com/parnurzeal/gorequest\"\n  version = \"0.2.15\"\n\n[[constraint]]\n  name = \"github.com/pkg/errors\"\n  version = \"0.8.0\"\n\n[[constraint]]\n  name = \"github.com/spf13/viper\"\n  version = \"1.2.1\"\n\n[prune]\n  go-tests = true\n  unused-packages = true\n"
  },
  {
    "path": "paas-ce/paasagent/Makefile",
    "content": "# Go parameters\nGOCMD=go\nGOBUILD=$(GOCMD) build\nGOCLEAN=$(GOCMD) clean\nGOTEST=$(GOCMD) test\nGOGET=$(GOCMD) get\nGOVET=$(GOCMD) vet\n\n.PHONY: build build-linux clean\n\nbuild:\n\t$(GOBUILD) -o bin/paas_agent -v -i main.go\n\nbuild-linux:\n\tGOOS=linux GOARCH=amd64 $(GOBUILD) -o bin/paas_agent -v -i main.go\n\nclean:\n\t$(GOCLEAN)\n"
  },
  {
    "path": "paas-ce/paasagent/README.md",
    "content": "# PaaSAgent\n\n## 简介\n\npaasagent目录是PaaS平台中应用引擎(appengine)对应的agent模块源码目录\n\n主要作用是:\n\n- agent需要部署在应用服务器上\n- 负责接收上层应用引擎(appengine)的请求指令，执行SaaS应用的部署和下架等任务操作(应用运行时环境的构建和进程托管)\n\n## 技术栈\n\n- framework: labstack/echo\n- python run time: virtualenv, uwsgi\n\n## 依赖说明\n\n- appengine: 需要调用appengine的接口, 回写SaaS应用的部署日志\n"
  },
  {
    "path": "paas-ce/paasagent/VERSION",
    "content": "3.1.02\n"
  },
  {
    "path": "paas-ce/paasagent/core/http.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 core\n\nimport (\n\t\"strings\"\n\n\t\"github.com/parnurzeal/gorequest\"\n\t\"github.com/pkg/errors\"\n\t\"github.com/spf13/viper\"\n)\n\nfunc newReqAgent(method string, url string) *gorequest.SuperAgent {\n\tsid := viper.GetString(\"auth.sid\")\n\ttoken := viper.GetString(\"auth.token\")\n\trequest := gorequest.New()\n\trequest = request.CustomMethod(method, url)\n\treturn request.Set(\"Content-Type\", \"application/json\").Set(\"X-ID\", sid).Set(\"X-TOKEN\", token)\n}\n\n// DoGet do get request\nfunc DoGet(url string) (gorequest.Response, string, error) {\n\treqAgent := newReqAgent(\"GET\", url)\n\tresp, body, errs := reqAgent.End()\n\treturn resp, body, errorsJoin(errs)\n\n}\n\n// DoPost do post request\nfunc DoPost(url string, data interface{}) (gorequest.Response, string, error) {\n\treqAgent := newReqAgent(\"POST\", url)\n\tresp, body, errs := reqAgent.Send(data).End()\n\treturn resp, body, errorsJoin(errs)\n}\n\nfunc errorsJoin(errs []error) error {\n\tif errs != nil {\n\t\tvar errStrings []string\n\t\tfor _, err := range errs {\n\t\t\terrStrings = append(errStrings, err.Error())\n\t\t}\n\t\treturn errors.New(strings.Join(errStrings, \";\"))\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/core/states.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 core\n\nconst (\n\tPENDING = \"PENDING\"\n\tSTARTED = \"STARTED\"\n\tSUCCESS = \"SUCCESS\"\n\tFAILURE = \"FAILURE\"\n)\n"
  },
  {
    "path": "paas-ce/paasagent/core/utils.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 core\n\nimport (\n\t\"crypto/md5\"\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"syscall\"\n\t\"text/template\"\n)\n\n// IsDirExists\nfunc IsDirExists(path string) bool {\n\tfi, err := os.Stat(path)\n\tif err != nil {\n\t\treturn os.IsExist(err)\n\t}\n\treturn fi.IsDir()\n}\n\n// KillCmdProcess\nfunc KillCmdProcess(pid int) error {\n\terr := syscall.Kill(-pid, syscall.SIGKILL)\n\tif err != nil {\n\t\tlog.Println(\"failed to kill: \", err)\n\t}\n\treturn err\n}\n\n// GetMacAddrs\nfunc GetMacAddrs() ([]string, error) {\n\tmacAddrs := []string{}\n\tinterfaces, err := net.Interfaces()\n\tif err != nil {\n\t\tlog.Println(\"GetMacAddr fail: \", err.Error())\n\t\treturn macAddrs, err\n\t}\n\tfor _, inter := range interfaces {\n\t\tmacString := inter.HardwareAddr.String()\n\t\tif macString != \"\" {\n\t\t\tmacAddrs = append(macAddrs, strings.ToUpper(macString))\n\t\t}\n\t}\n\treturn macAddrs, nil\n}\n\n// DownLoadFile download the saas archive from platform\nfunc DownLoadFile(url string, dstPath string) error {\n\ttokens := strings.Split(url, \"/\")\n\tfileName := tokens[len(tokens)-1]\n\tif !IsDirExists(dstPath) {\n\t\terr := os.MkdirAll(dstPath, os.ModePerm)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"DownLoadFile fail: creating %s-%s\", dstPath, err)\n\t\t}\n\t}\n\toutput, err := os.Create(dstPath + \"/\" + fileName)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"DownLoadFile fail: creating %s-%s\", fileName, err)\n\t}\n\tdefer output.Close()\n\ttr := &http.Transport{\n\t    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},\n\t    DisableCompression: true}\n\tclient := &http.Client{Transport: tr}\n\tresponse, err := client.Get(url)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"DownLoadFile fail: downloading %s-%s\", url, err)\n\t}\n\tdefer response.Body.Close()\n\tif response.StatusCode != 200 {\n\t\treturn fmt.Errorf(\"DownLoadFile fail: file address %s return %d\", url, response.StatusCode)\n\t}\n\t_, err = io.Copy(output, response.Body)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"DownLoadFile fail: copy body %s-%s\", fileName, err)\n\t}\n\treturn nil\n}\n\n// ComputeMd5\nfunc ComputeMd5(filePath string) ([]byte, error) {\n\tvar result []byte\n\tfile, err := os.Open(filePath)\n\tif err != nil {\n\t\treturn result, err\n\t}\n\tdefer file.Close()\n\thash := md5.New()\n\tif _, err := io.Copy(hash, file); err != nil {\n\t\treturn result, err\n\t}\n\treturn hash.Sum(result), nil\n}\n\n// GetProjPath\nfunc GetProjPath() string {\n\tdir, err := filepath.Abs(filepath.Dir(os.Args[0]))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tcurlPath := strings.Replace(dir, \"\\\\\", \"/\", -1)\n\treturn curlPath[:strings.LastIndex(curlPath, \"/\")]\n}\n\n// RenderTemplate renders configuration file like uwsgi.ini\nfunc RenderTemplate(templateFile string, destFile string, context map[string]string) error {\n\ttmpl, err := template.ParseFiles(templateFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfout, err := os.Create(destFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer fout.Close()\n\treturn tmpl.Execute(fout, context)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/etc/build/packages/requirements.txt",
    "content": "Django==1.8.11\nPyMySQL==0.6.7\nrequests==2.21.0\ncelery==3.1.18\nkombu==3.0.35\ndjango-celery==3.2.1\nredis==2.10.5\nhttplib2==0.9.1\nxlrd==1.0.0\nxlwt==1.1.2\nMako==1.0.4\nJinja2==2.8\nMarkupSafe==0.23\nmeld3==1.0.2\npbr==1.10.0\npycrypto==2.6.1\npytz==2016.6.1\ngunicorn==19.6.0\nsix==1.10.0\nSQLAlchemy==1.0.12\nstevedore==1.17.1\nsuds==0.4\nurllib3==1.24.1\namqp==1.4.9\nanyjson==0.3.3\nbilliard==3.3.0.23\npytest-runner==2.8\nsetuptools_scm==1.11.1\nuWSGI==2.0.13.1\n"
  },
  {
    "path": "paas-ce/paasagent/etc/build/virtualenv/build",
    "content": "#! /bin/bash\n\n# Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n# Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n# Licensed under the MIT License (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://opensource.org/licenses/MIT\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\nexec 2>&1\n\nexport PATH=\"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:${BASE_PATH}/.envs/paas_agent/bin:$PATH\"\n\n# ========================= helper functions start ===============================\n\nfunction if_fail_then_exit() {\n    if [ \"$1\" != \"0\" ]; then\n        echo \"$2\"\n        exit $1\n    fi\n}\n\n# ========================= helper functions end ===============================\n\nCODE_PATH=\"$APP_PATH/code\"\nCONF_PATH=\"$APP_PATH/conf\"\nENV_PATH=\"$CONF_PATH/env\"\nRUN_PATH=\"$APP_PATH/run\"\nVCS_TYPE=\"$VCS_TYPE\"\nAPP_CODE=\"$APP_CODE\"\n\nmkdir -p \"$APP_PATH\" \"$CODE_PATH\" \"$CONF_PATH\" \"$RUN_PATH\" \"$LOG_PATH\"\ntouch $ENV_PATH\nexport WORKON_HOME=\"${BASE_APP_PATH}apps/Envs\"\n\n#  offline\nif [ \"$HANDLE\" = \"OFF\" ]; then\n    echo \"starting offline job\"\n    if [ -e \"$RUN_PATH/supervisord.pid\" ]; then\n        echo \"remove process\"\n        kill -SIGTERM `cat $RUN_PATH/supervisord.pid`\n        while [ -e \"$RUN_PATH/supervisord.sock\" ]\n        do\n            echo \"waiting process stop\"\n            sleep 1\n        done\n        rm $RUN_PATH/uwsgi.pid\n        rm $RUN_PATH/uwsgi.sock\n        echo \"process stop done\"\n    fi\n    if [ \"$APP_PATH\" != \"/\" ]; then\n        rm -rf \"$APP_PATH\"\n    fi\n    if [ \"$LOG_PATH\" != \"/\" ]; then\n        rm -rf \"$LOG_PATH\"\n    fi\n    rm -rf \"$WORKON_HOME/$APP_CODE\"\n    echo \"Job Done\"\n    exit 0\nfi\n\ncd $CODE_PATH\nif [ -d $APP_CODE ]; then\n    rm -rf $APP_CODE\nfi\necho \"------get app_code for $APP_CODE------\"\nif [ \"$VCS_TYPE\" = \"git\" ]; then\n    git clone $VCS_PATH $APP_CODE\nelse\n    svn checkout $VCS_PATH $APP_CODE --non-interactive --no-auth-cache --username=$VCS_USERNAME --password=$VCS_PASSWORD 1> /dev/null\nfi\nif_fail_then_exit \"$?\" \"------get app_code fail------\"\necho \"------get app_code success------\"\n\necho \"------create virtualenv for $APP_CODE------\"\nif [ -f \"$CODE_PATH/$APP_CODE/runtime.txt\" ]; then\n    RUNTIME=`cat $CODE_PATH/$APP_CODE/runtime.txt`\nfi\nif [[ $RUNTIME =~ [P|p]ython(-)*3.* ]]; then\n    mkdir -p $WORKON_HOME\n    PYTHON3_PATH=\"/opt/py36\"\n    if [ ! -e \"$WORKON_HOME/$APP_CODE/bin/activate\" ]; then\n        $PYTHON3_PATH/bin/python -m venv --system-site-packages $WORKON_HOME/$APP_CODE\n    fi\n    if [ \"$BK_ENV\" == \"testing\" ]; then\n        echo \"mount = /t/$APP_CODE=wsgi.py\" >> $CONF_PATH/$APP_CODE.ini\n    else\n        echo \"mount = /o/$APP_CODE=wsgi.py\" >> $CONF_PATH/$APP_CODE.ini\n    fi\n    echo \"manage-script-name = true\" >> $CONF_PATH/$APP_CODE.ini\nelse\n    export VIRTUALENVWRAPPER_PYTHON=\"/usr/bin/python\"\n    source /usr/bin/virtualenvwrapper.sh\n    cd \"$RUN_PATH\" || exit 1\n    if [ ! -e \"$WORKON_HOME/$APP_CODE/bin/activate\" ]; then\n        mkvirtualenv \"$APP_CODE\" --system-site-packages\n    fi\nfi\nsource \"$WORKON_HOME/$APP_CODE/bin/activate\"\nsource \"$ENV_PATH\"\necho \"------create virtualenv success------\"\n\ncd \"$CODE_PATH/$APP_CODE\" || exit 1\n\necho \"------pip install------\"\npip install uwsgi==2.0.13.1 -i $PYPI_SERVER_URL --trusted-host $PYPI_SERVER_HOST\nif_fail_then_exit \"$?\" \"------pip install fail------\"\npip install -r requirements.txt -i $PYPI_SERVER_URL --trusted-host $PYPI_SERVER_HOST\nif_fail_then_exit \"$?\" \"------pip install fail------\"\necho \"------pip install success------\"\n\necho \"------change db------\"\npython manage.py migrate --noinput && \\\necho \"------change db success------\" || exit 1\n\npython manage.py createcachetable django_cache > /dev/null\n\n#chown -R apps.apps \"$APP_PATH\" \"$LOG_PATH\"\n\nSUPERVISOR_PATH=\"/usr/bin\"\n\nif [ -e \"$RUN_PATH/supervisord.sock\" ]; then\n    echo \"------ restart app server ------\"\n    #su -m - apps <<EOF\n    export LC_ALL=en_US.UTF-8\n    $SUPERVISOR_PATH/supervisorctl -c  $CONF_PATH/supervisord.conf update\n    $SUPERVISOR_PATH/supervisorctl -c  $CONF_PATH/supervisord.conf restart all\n#EOF\nelse\n    echo \"------ start app server ------\"\n    #su -m - apps <<EOF\n    export LC_ALL=en_US.UTF-8\n    $SUPERVISOR_PATH/supervisord -c $CONF_PATH/supervisord.conf\n#EOF\nfi\n\nsleep 2\n$SUPERVISOR_PATH/supervisorctl -c  $CONF_PATH/supervisord.conf status | grep \"$APP_CODE\"_uwsgi | grep RUNNING &>/dev/null\nif_fail_then_exit \"$?\" \"Job Fail\"\necho \"Job Done\"\n\n"
  },
  {
    "path": "paas-ce/paasagent/etc/build/virtualenv/saas/buildsaas",
    "content": "#! /bin/bash\n\n# Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n# Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n# Licensed under the MIT License (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://opensource.org/licenses/MIT\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\nexec 2>&1\n\nexport PATH=\"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:${BASE_PATH}/.envs/paas_agent/bin:$PATH\"\n\n# ========================= helper functions start ===============================\n\nfunction if_fail_then_exit() {\n    if [ \"$1\" != \"0\" ]; then\n        echo \"$2\"\n        exit $1\n    fi\n}\n\n# ========================= helper functions end ===============================\n\nCODE_PATH=\"$APP_PATH/code\"\nCONF_PATH=\"$APP_PATH/conf\"\nENV_PATH=\"$CONF_PATH/env\"\nRUN_PATH=\"$APP_PATH/run\"\nVCS_TYPE=\"$VCS_TYPE\"\nAPP_CODE=\"$APP_CODE\"\n\nmkdir -p \"$APP_PATH\" \"$CODE_PATH\" \"$CONF_PATH\" \"$RUN_PATH\" \"$LOG_PATH\"\ntouch $ENV_PATH\nexport WORKON_HOME=\"${BASE_APP_PATH}apps/Envs\"\n\n#  offline\nif [ \"$HANDLE\" = \"OFF\" ]; then \n    echo \"starting offline job\"\n    if [ -e \"$RUN_PATH/supervisord.pid\" ]; then\n        echo \"remove process\"\n        kill -SIGTERM `cat $RUN_PATH/supervisord.pid`\n        while [ -e \"$RUN_PATH/supervisord.sock\" ]\n        do\n            echo \"waiting process stop\"\n            sleep 1\n        done\n        rm $RUN_PATH/uwsgi.pid\n        rm $RUN_PATH/uwsgi.sock\n        echo \"process stop done\"\n    fi\n    if [ \"$APP_PATH\" != \"/\" ]; then\n        rm -rf \"$APP_PATH\"\n    fi\n    if [ \"$LOG_PATH\" != \"/\" ]; then\n        rm -rf \"$LOG_PATH\"\n    fi\n    rm -rf \"$WORKON_HOME/$APP_CODE\"\n    echo \"Job Done\"\n    exit\nfi\n\nif [ -d \"$SaaS_PATH/$APP_CODE\" ]; then\n    rm -rf \"$SaaS_PATH/$APP_CODE\"\nfi\n\necho \"------extract app_code for $APP_CODE------\"\ncd \"$SaaS_PATH\" || exit\ntar -xzf $FILE_NAME\nif_fail_then_exit \"$?\" \"------extract app_code fail------\"\necho \"------extract app_code success------\"\ncd $CODE_PATH\nif [ -d $APP_CODE ]; then\n    rm -rf $APP_CODE\nfi\nmv $SaaS_PATH/$APP_CODE/src $CODE_PATH/$APP_CODE\n\necho \"------create virtualenv for $APP_CODE------\"\nif [ -f \"$CODE_PATH/$APP_CODE/runtime.txt\" ]; then\n    RUNTIME=`cat $CODE_PATH/$APP_CODE/runtime.txt`\nfi\nif [[ $RUNTIME =~ [P|p]ython(-)*3.* ]]; then\n    mkdir -p $WORKON_HOME\n    PYTHON3_PATH=\"/opt/py36\"\n    if [ ! -e \"$WORKON_HOME/$APP_CODE/bin/activate\" ]; then\n        $PYTHON3_PATH/bin/python -m venv --system-site-packages $WORKON_HOME/$APP_CODE\n    fi\n    if [ \"$BK_ENV\" == \"testing\" ]; then\n        echo \"mount = /t/$APP_CODE=wsgi.py\" >> $CONF_PATH/$APP_CODE.ini\n    else\n        echo \"mount = /o/$APP_CODE=wsgi.py\" >> $CONF_PATH/$APP_CODE.ini\n    fi\n    echo \"manage-script-name = true\" >> $CONF_PATH/$APP_CODE.ini\nelse\n    export VIRTUALENVWRAPPER_PYTHON=\"/usr/bin/python\"\n    source /usr/bin/virtualenvwrapper.sh\n    cd \"$RUN_PATH\" || exit 1\n    if [ ! -e \"$WORKON_HOME/$APP_CODE/bin/activate\" ]; then\n        mkvirtualenv \"$APP_CODE\" --system-site-packages\n    fi\nfi\nsource \"$WORKON_HOME/$APP_CODE/bin/activate\"\nsource \"$ENV_PATH\"\necho \"------create virtualenv success------\"\n\ncd \"$CODE_PATH/$APP_CODE\" || exit 1\n\nif [ \"$YUM_LIST\" != \"\" ]; then\n    echo \"------yum install------\"\n    yum install -y $YUM_LIST\n    if_fail_then_exit \"$?\" \"------yum $YUM_LIST fail------\"\n    echo \"------yum install success------\"\nfi\n\necho \"------pip install------\"\n#pip install uwsgi==2.0.13.1 -i $PYPI_SERVER_URL --trusted-host $PYPI_SERVER_HOST\n#if_fail_then_exit \"$?\" \"------pip install supervisor uwsgi fail------\"\nif [ \"$PIP_LIST\" != \"\" ]; then\n    pip install $PIP_LIST --no-index --find-links=$SaaS_PATH/$APP_CODE/pkgs\n    if_fail_then_exit \"$?\" \"------pip install $PIP_LIST fail------\"\nfi\necho \"------pip install success------\"\n\necho \"------change db------\"\npython manage.py migrate --noinput && \\\necho \"------change db success------\" || exit 1\n\npython manage.py createcachetable django_cache > /dev/null\n\n#chown -R apps.apps \"$APP_PATH\" \"$LOG_PATH\"\n\nSUPERVISOR_PATH=\"/usr/bin\"\n\nif [ -e \"$RUN_PATH/supervisord.sock\" ]; then\n    echo \"------ restart app server ------\"\n    #su -m - apps <<EOF\n    export LC_ALL=en_US.UTF-8\n    $SUPERVISOR_PATH/supervisorctl -c  $CONF_PATH/supervisord.conf update\n    $SUPERVISOR_PATH/supervisorctl -c  $CONF_PATH/supervisord.conf restart all\n#EOF\nelse\n    echo \"------ start app server ------\"\n    #su -m - apps <<EOF\n    export LC_ALL=en_US.UTF-8\n    $SUPERVISOR_PATH/supervisord -c $CONF_PATH/supervisord.conf\n#EOF\nfi\n\nsleep 2\n$SUPERVISOR_PATH/supervisorctl -c  $CONF_PATH/supervisord.conf status | grep \"$APP_CODE\"_uwsgi | grep RUNNING &>/dev/null\nif_fail_then_exit \"$?\" \"Job Fail\"\necho \"Job Done\"\n\nrm -rf $SaaS_PATH/$APP_CODE\n"
  },
  {
    "path": "paas-ce/paasagent/etc/nginx/paasagent.conf",
    "content": "server {\n    listen       \t8085;\n\tserver_name\t \tlocalhost;\n\n    client_max_body_size    512m;\n\n\tlocation ~ ^/t/([^/]+)/static/(.*)$ {\n\t\talias TPL_AGENT_ROOT/apps/projects/$1/code/$1/static/$2;\n\t}\n\n\tlocation ~ ^/o/([^/]+)/static/(.*)$ {\n\t\talias TPL_AGENT_ROOT/apps/projects/$1/code/$1/static/$2;\n\t}\n\n    location ~ ^/(t|o)/([^/]+) {\n        include uwsgi_params;\n\n        if (!-f TPL_AGENT_ROOT/apps/projects/$2/run/uwsgi.pid) {\n            return 404;\n        }\n        uwsgi_pass  unix:TPL_AGENT_ROOT/apps/projects/$2/run/uwsgi.sock;\n        uwsgi_param SCRIPT_NAME /$1/$2;\n        uwsgi_read_timeout 300;\n        uwsgi_modifier1 30;\n    }\n\n}\n"
  },
  {
    "path": "paas-ce/paasagent/etc/paas_agent_config.yaml",
    "content": "auth:\n  sid: bdb209f0-747a-4011-9c8b-9e10b2aceace  # agent sid\n  token: 41ea9d39-8c01-46e4-b7cd-62651fb5b018 # agent token\nsettings:\n  CONTROLLER_SERVER_URL: 'http://www.opsany.com' # App Engine地址\n  BASE_PATH: 'TPL_AGENT_ROOT' # eg. /data/paas\n  BASE_APP_PATH: 'TPL_AGENT_ROOT/paas_agent'\n  USE_PYPI: 'true'\n  AGENT_LOG_PATH: 'TPL_AGENT_ROOT/logs/agent.log'\n  TEMPLATE_PATH: 'etc/templates'\n  BUILD_PATH: 'etc/build'\n  EXECUTE_TIME_LIMIT: 300\n  PYTHON_PIP: 'http://pypi.douban.com/simple/'\nport: 4245\nip: ''\n"
  },
  {
    "path": "paas-ce/paasagent/etc/templates/supervisord.conf",
    "content": "[unix_http_server]\nfile = {{.app_project_path}}/{{.app_code}}/run/supervisord.sock\n\n[supervisorctl]\nconfiguration = {{.app_project_path}}/{{.app_code}}/conf/supervisord.conf\nserverurl = unix://{{.app_project_path}}/{{.app_code}}/run/supervisord.sock\n\n[supervisord]\npidfile = {{.app_project_path}}/{{.app_code}}/run/supervisord.pid\nlogfile = {{.log_home}}/{{.app_code}}/supervisord.log\ndirectory = {{.app_project_path}}/{{.app_code}}\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[program: {{.app_code}}_uwsgi]\ncommand = {{.base_app_path}}/Envs/{{.app_code}}/bin/uwsgi --ini {{.app_project_path}}/{{.app_code}}/conf/{{.app_code}}.ini\nstdout_logfile = {{.log_home}}/{{.app_code}}/uwsgi.log\nredirect_stderr = true\nautorestart = true\nstopsignal = QUIT\nenvironment = {{.environment}}\n\n{{if eq .IS_USE_CELERY \"true\"}}\n[program: {{.app_code }}_celery]\ncommand = {{.base_app_path}}/Envs/{{.app_code}}/bin/python {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}/manage.py celery worker -n {{.app_code}} -l INFO --concurrency=8\ndirectory = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nstdout_logfile = {{.log_home}}/{{.app_code}}/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = {{.environment}}\n{{end}}\n\n{{if eq .IS_USE_CELERY_BEAT \"true\"}}\n[program:{{.app_code }}_beat]\ncommand = {{.base_app_path}}/Envs/{{.app_code}}/bin/python {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}/manage.py celery beat\ndirectory = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nstdout_logfile ={{.log_home}}/{{.app_code}}/celery.log\nredirect_stderr = true\nstopwaitsecs = 10\nstopsignal = QUIT\nautorestart = true\nenvironment = {{.environment}}\n{{end}}\n"
  },
  {
    "path": "paas-ce/paasagent/etc/templates/uwsgi.ini",
    "content": "[uwsgi]\nsocket = {{.app_project_path}}/{{.app_code}}/run/uwsgi.sock\npidfile2 = {{.app_project_path}}/{{.app_code}}/run/uwsgi.pid\nlogto2 = {{.log_home}}/{{.app_code}}/uwsgi.log\n\nlogdate = true\nlog-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]\n\nmemory-report = true\n\nmaster = true\nvacuum = true\n\nchdir = {{.app_project_path}}/{{.app_code}}/code/{{.app_code}}\nmodule = wsgi:application\n\ncheaper = 2\ncheaper-initial = 2\n\nworkers = 4\n\ncheaper-algo = busyness\ncheaper-overload = 10\ncheaper-step = 1\ncheaper-busyness-multiplier = 60\n\nbuffer-size = 8192\npost-buffering = 8192\n\nmax-requests = 1024\n"
  },
  {
    "path": "paas-ce/paasagent/job/job.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 job\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/url\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/spf13/viper\"\n\n\t\"paasagent/core\"\n)\n\ntype (\n\tAppJob struct {\n\t\tAppCode      string\n\t\tMode         string\n\t\tEventID      string\n\t\tHandle       string\n\t\tDeployToken  string\n\t\tEnvs         map[string]interface{}\n\t\tDeployVars   map[string]interface{}\n\t\tSaaSSettings map[string]interface{}\n\t}\n\n\t// EventLog\n\tEventLog struct {\n\t\tStatus string `json:\"status\"`\n\t\tLog    string `json:\"log\"`\n\t}\n)\n\n// postEventLog to the Engine API\nfunc postEventLog(appCode string, eventID string, data *EventLog) {\n\tcontrollerServerURL := viper.GetString(\"settings.CONTROLLER_SERVER_URL\")\n\teventUrl := controllerServerURL + \"/v1/apps/\" + appCode + \"/events/\" + eventID\n\t_, _, err := core.DoPost(eventUrl, data)\n\tif err != nil {\n\t\tlog.Printf(\"postEventLog url %s error: %s\\n\", eventUrl, err)\n\t}\n}\n\nfunc (appJob AppJob) getBaseAppPath() string {\n\tbaseAppPath := viper.GetString(\"settings.BASE_APP_PATH\")\n\tif strings.HasSuffix(baseAppPath, \"/\") == false {\n\t\tbaseAppPath = baseAppPath + \"/\"\n\t}\n\treturn baseAppPath\n}\n\nfunc (appJob AppJob) getBuildPath() string {\n\tbuildPath := viper.GetString(\"settings.BUILD_PATH\")\n\tif strings.HasPrefix(buildPath, \"/\") == false {\n\t\tbuildPath = appJob.getBaseAppPath() + buildPath\n\t}\n\treturn buildPath\n}\n\nfunc (appJob AppJob) getCtx4Conf() map[string]string {\n\tisUseCelery := \"false\"\n\tif _, ok := appJob.Envs[\"IS_USE_CELERY\"]; ok {\n\t\tisUseCelery = appJob.Envs[\"IS_USE_CELERY\"].(string)\n\t}\n\tisUseCeleryBeat := \"false\"\n\tif _, ok := appJob.Envs[\"IS_USE_CELERY_BEAT\"]; ok {\n\t\tisUseCeleryBeat = appJob.Envs[\"IS_USE_CELERY_BEAT\"].(string)\n\t}\n\tenvironment := \"BK_ENV=\\\"production\\\"\"\n\tif appJob.Mode == \"test\" {\n\t\tenvironment = \"BK_ENV=\\\"testing\\\"\"\n\t}\n\n\tbaseAppPath := appJob.getBaseAppPath()\n\thostLogPath := fmt.Sprintf(\"%s%s\", baseAppPath, \"apps/logs\")\n\tenvironment = environment + \",BK_LOG_DIR=\\\"\" + hostLogPath + \"/\\\"\"\n\tfor key, value := range appJob.Envs {\n\t\tenvironment = fmt.Sprintf(\"%s,%s=\\\"%s\\\"\", environment, key, value)\n\t}\n\tcontext := map[string]string{\n\t\t\"app_code\":           appJob.AppCode,\n\t\t\"base_app_path\":      baseAppPath + \"apps\",\n\t\t\"app_project_path\":   baseAppPath + \"apps/projects\",\n\t\t\"environment\":        environment,\n\t\t\"log_home\":           hostLogPath,\n\t\t\"IS_USE_CELERY\":      isUseCelery,\n\t\t\"IS_USE_CELERY_BEAT\": isUseCeleryBeat,\n\t}\n\treturn context\n}\n\nfunc (appJob AppJob) generateConfig() error {\n\tbaseAppPath := appJob.getBaseAppPath()\n\tcfgHome := fmt.Sprintf(\"%s%s\", baseAppPath, \"apps/projects/\"+appJob.AppCode+\"/conf\")\n\tif !core.IsDirExists(cfgHome) {\n\t\terr := os.MkdirAll(cfgHome, os.ModePerm)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\ttemplatePath := viper.GetString(\"settings.TEMPLATE_PATH\")\n\tif strings.HasPrefix(templatePath, \"/\") == false {\n\t\ttemplatePath = baseAppPath + templatePath\n\t}\n\n\tcontext := appJob.getCtx4Conf()\n\n\terr := core.RenderTemplate(templatePath+\"/uwsgi.ini\", fmt.Sprintf(\"%s/%s.ini\", cfgHome, appJob.AppCode), context)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = core.RenderTemplate(templatePath+\"/supervisord.conf\", cfgHome+\"/supervisord.conf\", context)\n\treturn err\n}\n\n// getEnvs generates environment variables for app runtime\nfunc (appJob AppJob) getEnvs() map[string]string {\n\tenvMap := make(map[string]string)\n\tif appJob.Handle == \"ON\" {\n\t\tfor key, value := range appJob.Envs {\n\t\t\tenvMap[key] = fmt.Sprintf(\"%s\", value)\n\t\t}\n\t\tfor key, value := range appJob.DeployVars {\n\t\t\tenvMap[key] = fmt.Sprintf(\"%s\", value)\n\t\t}\n\t\tif envMap[\"VCS_TYPE\"] == \"git\" {\n\t\t\tvcsUsername, vcsPassword := url.QueryEscape(envMap[\"VCS_USERNAME\"]),\n\t\t\t\turl.QueryEscape(envMap[\"VCS_PASSWORD\"])\n\t\t\tif strings.HasPrefix(envMap[\"VCS_PATH\"], \"http\") {\n\t\t\t\tpathArray := strings.Split(envMap[\"VCS_PATH\"], \"//\")\n\t\t\t\tenvMap[\"VCS_PATH\"] = fmt.Sprintf(\"%s//%s:%s@%s\",\n\t\t\t\t\tpathArray[0], vcsUsername, vcsPassword, pathArray[1])\n\t\t\t}\n\t\t}\n\t}\n\n\tbaseAppPath := appJob.getBaseAppPath()\n\thostLogPath := fmt.Sprintf(\"%s%s\", baseAppPath, \"apps/logs\")\n\tenvMap[\"BASE_PATH\"] = viper.GetString(\"settings.BASE_PATH\")\n\tenvMap[\"BASE_APP_PATH\"] = baseAppPath\n\tenvMap[\"APP_PATH\"] = fmt.Sprintf(\"%s%s\", baseAppPath, \"apps/projects/\"+appJob.AppCode)\n\tenvMap[\"APP_CODE\"] = appJob.AppCode\n\tenvMap[\"HANDLE\"] = appJob.Handle\n\tenvMap[\"LOG_PATH\"] = fmt.Sprintf(\"%s/%s\", hostLogPath, appJob.AppCode)\n\tenvMap[\"BK_LOG_DIR\"] = hostLogPath\n\tenvMap[\"PYPI_SERVER_URL\"] = viper.GetString(\"settings.PYTHON_PIP\")\n\tpypiURL, _ := url.Parse(envMap[\"PYPI_SERVER_URL\"])\n\tenvMap[\"PYPI_SERVER_HOST\"] = pypiURL.Host\n\n\tenvMap[\"BK_ENV\"] = \"production\"\n\tif appJob.Mode == \"test\" {\n\t\tenvMap[\"BK_ENV\"] = \"testing\"\n\t}\n\n\t// user app and s-mart app use different build scripts\n\tenvMap[\"BUILD_ENTRY\"] = \"/virtualenv/build\"\n\tif appJob.isSaaSDeploy() {\n\t\tenvMap[\"BUILD_ENTRY\"] = \"/virtualenv/saas/buildsaas\"\n\t\tsaasSettings := appJob.SaaSSettings\n\t\tenvMap[\"YUM_LIST\"] = fmt.Sprintf(\"%s\", saasSettings[\"yum\"])\n\t\tenvMap[\"PIP_LIST\"] = fmt.Sprintf(\"%s\", saasSettings[\"pip\"])\n\t\tenvMap[\"SaaS_PATH\"] = fmt.Sprintf(\"%s%s\", baseAppPath, \"saasapp\")\n\n\t\turlSplitArray := strings.Split(saasSettings[\"url\"].(string), \"/\")\n\t\tenvMap[\"FILE_NAME\"] = urlSplitArray[len(urlSplitArray)-1]\n\t}\n\n\treturn envMap\n}\n\nfunc (appJob AppJob) isSaaSDeploy() bool {\n\tsaasSettings := appJob.SaaSSettings\n\tisSaaS := \"false\"\n\tif _, ok := saasSettings[\"is_saas\"]; ok {\n\t\tisSaaS = saasSettings[\"is_saas\"].(string)\n\t}\n\tif isSaaS == \"false\" {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (appJob AppJob) downLoadSaaSApp(fileName string, saasPath string) error {\n\tsaasSettings := appJob.SaaSSettings\n\tfileURL := saasSettings[\"url\"].(string)\n\tcontrollerServerURL := viper.GetString(\"settings.PAAS_SERVER_URL\")\n\terr := core.DownLoadFile(controllerServerURL+fileURL, saasPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error occurred in downloading file %s: %s\", fileName, err)\n\t}\n\t// compute tar md5\n\tfileMd5, err := core.ComputeMd5(saasPath + \"/\" + fileName)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error occurred in calculating file %s MD5 value: %s\", fileName, err)\n\t}\n\tif fmt.Sprintf(\"%x\", fileMd5) != saasSettings[\"md5\"].(string) {\n\t\tlog.Println(fmt.Sprintf(\"%s incomplete or has been modified\", fileName))\n\t}\n\treturn nil\n}\n\n// getJobStatus will deprecated\nfunc (appJob AppJob) getJobStatus(line string) string {\n\tisSuccess := strings.Contains(line, \"Job Done\")\n\tif isSuccess {\n\t\treturn core.SUCCESS\n\t}\n\n\tisFail := strings.Contains(line, \"spawn error\") || strings.Contains(line, \"fail\") ||\n\t\tstrings.Contains(line, \"Job Fail\")\n\tif isFail {\n\t\treturn core.FAILURE\n\t}\n\n\treturn core.STARTED\n}\n\nfunc (appJob AppJob) runCmd(envMap map[string]string) error {\n\tenv := os.Environ()\n\tcmdEnv := make([]string, 0, len(envMap))\n\tfor k, v := range envMap {\n\t\tcmdEnv = append(cmdEnv, fmt.Sprintf(\"%s=%s\", k, v))\n\t}\n\n\tbinary, err := exec.LookPath(appJob.getBuildPath() + envMap[\"BUILD_ENTRY\"])\n\tif err != nil {\n\t\tlog.Println(\"exec.LookPath error\", err)\n\t\treturn err\n\t}\n\tcmd := exec.Command(binary)\n\tcmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}\n\tcmd.Env = append(env, cmdEnv...)\n\tcmdOut, _ := cmd.StdoutPipe()\n\t// cmdErr, _ := cmd.StderrPipe()\n\tscanner := bufio.NewScanner(cmdOut)\n\tdone := make(chan error)\n\tsyncDone := make(chan struct{})\n\n\tstartTime := time.Now()\n\n\t// execute build or buildsaas script to build app runtime environment and start app\n\tif err = cmd.Start(); err != nil {\n\t\tlog.Println(\"cmd.Start error\", err)\n\t\treturn err\n\t}\n\n\tgo func() {\n\t\t<-syncDone\n\t\tdone <- cmd.Wait()\n\t}()\n\n\t// scan the output of the running script and post to open_paas\n\tgo func() {\n\t\tstatus := core.PENDING\n\t\tvar line string\n\n\t\tfor scanner.Scan() {\n\t\t\tline = scanner.Text()\n\t\t\tstatus = appJob.getJobStatus(line)\n\t\t\tline += \"\\r\\n\"\n\t\t\tlog.Println(line)\n\n\t\t\tif status == core.SUCCESS {\n\t\t\t\ttaskTime := fmt.Sprintf(\"Task execution is completed, and total time consumed is %d seconds\\r\\n\",\n\t\t\t\t\tint(time.Now().Sub(startTime).Seconds()))\n\t\t\t\tpostEventLog(appJob.AppCode, appJob.EventID, &EventLog{Status: status, Log: line + taskTime})\n\t\t\t} else {\n\t\t\t\tpostEventLog(appJob.AppCode, appJob.EventID, &EventLog{Status: status, Log: line})\n\t\t\t}\n\t\t}\n\t\tsyncDone <- struct{}{}\n\t}()\n\n\t// if the build script task times out, it will be killed\n\ttimeOutSeconds := viper.GetInt(\"settings.EXECUTE_TIME_LIMIT\")\n\tselect {\n\tcase <-time.After(time.Second * time.Duration(timeOutSeconds)):\n\t\ttimeoutStr := fmt.Sprintf(\"Task execution timeout, and the time is limited to %d seconds\\r\\n\", timeOutSeconds)\n\t\tpostEventLog(appJob.AppCode, appJob.EventID, &EventLog{Status: core.FAILURE, Log: timeoutStr})\n\t\tlog.Println(\"Deployment task execution timeout\")\n\t\tcore.KillCmdProcess(cmd.Process.Pid)\n\t\terr = <-done\n\t\treturn err\n\tcase err = <-done:\n\t\tif err != nil {\n\t\t\tpostEventLog(appJob.AppCode, appJob.EventID, &EventLog{Status: core.FAILURE, Log: fmt.Sprintf(\"%s\\r\\n\", err)})\n\t\t\tlog.Println(\"error waiting for Cmd\", err)\n\t\t} else {\n\t\t\tlog.Println(\"RunJob end ... ...\")\n\t\t}\n\t\treturn err\n\t}\n\n}\n\nfunc (appJob AppJob) OnlineJob() error {\n\terr := appJob.generateConfig()\n\tif err != nil {\n\t\tlog.Println(\"generateConfig error\", err)\n\t\tpostEventLog(appJob.AppCode, appJob.EventID,\n\t\t\t&EventLog{Status: core.FAILURE,\n\t\t\t\tLog: fmt.Sprintf(\"An error occurred while generating configuration file: %s\", err)})\n\t\treturn err\n\t}\n\n\tenvMap := appJob.getEnvs()\n\n\tif appJob.isSaaSDeploy() {\n\t\terr := appJob.downLoadSaaSApp(envMap[\"FILE_NAME\"], envMap[\"SaaS_PATH\"])\n\t\tif err != nil {\n\t\t\tlog.Println(err)\n\t\t\tpostEventLog(appJob.AppCode, appJob.EventID,\n\t\t\t\t&EventLog{Status: core.FAILURE,\n\t\t\t\t\tLog: err.Error()})\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn appJob.runCmd(envMap)\n\n}\n\nfunc (appJob AppJob) OfflineJob() error {\n\tenvMap := appJob.getEnvs()\n\treturn appJob.runCmd(envMap)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/main.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/spf13/viper\"\n\n\t\"paasagent/core\"\n\t\"paasagent/server\"\n)\n\nfunc config() error {\n\tviper.SetConfigName(\"paas_agent_config\")\n\tviper.AddConfigPath(core.GetProjPath() + \"/etc\")\n\treturn viper.ReadInConfig()\n}\n\nfunc initLog() error {\n\tlogPath := viper.GetString(\"settings.AGENT_LOG_PATH\")\n\tlogFile, logErr := os.OpenFile(filepath.Clean(logPath), os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)\n\tif logErr != nil {\n\t\treturn logErr\n\t}\n\tlog.SetOutput(logFile)\n\tlog.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)\n\treturn nil\n}\n\nfunc main() {\n\terr := config()\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"Fatal error config file: %s \\n\", err))\n\t}\n\n\terr = initLog()\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"Generating log file failed: %s \\n\", err))\n\t}\n\n\tif err = server.Run(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/server/http.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 server\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"strconv\"\n\n\t\"github.com/labstack/echo\"\n\t\"github.com/labstack/echo/engine/standard\"\n\t\"github.com/spf13/viper\"\n\n\t\"paasagent/core\"\n\t\"paasagent/job\"\n)\n\n// DeployData used for app deployment\ntype DeployData struct {\n\tAppCode      string                 `json:\"app_code\"`\n\tMode         string                 `json:\"mode\"`\n\tEnvs         map[string]interface{} `json:\"envs\"`\n\tEventID      string                 `json:\"event_id\"`\n\tDeployToken  string                 `json:\"deploy_token\"`\n\tDeployVars   map[string]interface{} `json:\"deploy_vars\"`\n\tSaaSSettings map[string]interface{} `json:\"saas_settings\"`\n}\n\nfunc validateAgentAuth(c echo.Context) (bool, string) {\n\tXID := c.Request().Header().Get(\"X-ID\")\n\tXTOKEN := c.Request().Header().Get(\"X-TOKEN\")\n\n\tsid := viper.GetString(\"auth.sid\")\n\ttoken := viper.GetString(\"auth.token\")\n\n\tif sid == XID && token == XTOKEN {\n\t\treturn true, \"\"\n\t}\n\treturn false, \"sid or token is not valid, please check\"\n}\n\nfunc controllerStatus(controllerServerURL string) error {\n\turl := controllerServerURL + \"/v1/healthz\"\n\t_, _, errs := core.DoGet(url)\n\treturn errs\n}\n\nfunc appJobHandler(c echo.Context, handle string) error {\n\tvalid, msg := validateAgentAuth(c)\n\tif !valid {\n\t\tlog.Println(msg)\n\t\treturn ForbiddenResponse(c, msg)\n\t}\n\n\tjobData := new(DeployData)\n\tif err := c.Bind(jobData); err != nil {\n\t\treturn JsonResponse(c, map[string]interface{}{\"error\": 1, \"msg\": \"envs params loads error\"})\n\t}\n\n\tgo func(handle string) {\n\t\tlog.Println(\"RunJob start ... ...\")\n\t\tif handle == \"OFF\" {\n\t\t\tappJob := job.AppJob{\n\t\t\t\tAppCode:      jobData.AppCode,\n\t\t\t\tMode:         jobData.Mode,\n\t\t\t\tEnvs:         map[string]interface{}{\"BK_VERSION\": \"2.0\"},\n\t\t\t\tEventID:      jobData.EventID,\n\t\t\t\tDeployToken:  jobData.DeployToken,\n\t\t\t\tDeployVars:   jobData.DeployVars,\n\t\t\t\tSaaSSettings: jobData.SaaSSettings,\n\t\t\t\tHandle:       handle,\n\t\t\t}\n\t\t\tappJob.OfflineJob()\n\t\t} else {\n\t\t\tappJob := job.AppJob{\n\t\t\t\tAppCode:      jobData.AppCode,\n\t\t\t\tMode:         jobData.Mode,\n\t\t\t\tEnvs:         jobData.Envs,\n\t\t\t\tEventID:      jobData.EventID,\n\t\t\t\tDeployToken:  jobData.DeployToken,\n\t\t\t\tDeployVars:   jobData.DeployVars,\n\t\t\t\tSaaSSettings: jobData.SaaSSettings,\n\t\t\t\tHandle:       handle,\n\t\t\t}\n\t\t\tappJob.OnlineJob()\n\t\t}\n\t}(handle)\n\n\treturn JsonResponse(c, map[string]int{\"error\": 0})\n}\n\nfunc appOnlineHandler(c echo.Context) error {\n\treturn appJobHandler(c, \"ON\")\n}\n\nfunc appOfflineHandler(c echo.Context) error {\n\treturn appJobHandler(c, \"OFF\")\n}\n\nfunc healthzHandler(c echo.Context) error {\n\tvalid, msg := validateAgentAuth(c)\n\tif !valid {\n\t\tlog.Println(msg)\n\t\treturn ForbiddenResponse(c, msg)\n\t}\n\tmacAddrs, _ := core.GetMacAddrs()\n\tif len(macAddrs) > 0 {\n\t\treturn JsonResponse(c, map[string]interface{}{\"error\": 0, \"mac\": macAddrs[0]})\n\t}\n\treturn JsonResponse(c, map[string]interface{}{\"error\": 0, \"mac\": \"\"})\n}\n\nfunc healthzCheckHandler(c echo.Context) error {\n\treturn StringResponse(c, \"paasagent is alive\")\n}\n\nfunc Run() error {\n\tcontrollerServerURL := viper.GetString(\"settings.CONTROLLER_SERVER_URL\")\n\tif err := controllerStatus(controllerServerURL); err != nil {\n\t\treturn fmt.Errorf(\"paasagent start failed, please make sure %s has been enabled, \"+\n\t\t\t\"and normal access to the service from this machine can be achieved.\\n%s\",\n\t\t\tcontrollerServerURL, err)\n\t}\n\n\te := echo.New()\n\te.POST(\"/v1/app/online\", appOnlineHandler)\n\te.POST(\"/v1/app/offline\", appOfflineHandler)\n\te.GET(\"/v1/app/healthz\", healthzHandler)\n\t// check if paasagent is alive\n\te.GET(\"/healthz\", healthzCheckHandler)\n\n\tport := viper.GetInt(\"port\")\n\tip := viper.GetString(\"ip\")\n\tlog.Println(\"Start agent Now listen on \", ip, port)\n\treturn e.Run(standard.New(ip + \":\" + strconv.Itoa(port)))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/server/response.go",
    "content": "// Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.\n// Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.\n// Licensed under the MIT License (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// \thttp://opensource.org/licenses/MIT\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 server\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/labstack/echo\"\n)\n\nfunc StringResponse(c echo.Context, msg string) error {\n\treturn c.String(http.StatusOK, msg)\n}\n\nfunc JsonResponse(c echo.Context, data interface{}) error {\n\treturn c.JSON(http.StatusOK, data)\n}\n\nfunc ForbiddenResponse(c echo.Context, msg string) error {\n\treturn c.JSON(http.StatusForbidden, map[string]interface{}{\"error\": 20100, \"msg\": msg})\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/.editorconfig",
    "content": "root = true\n\n[*]\nindent_style = tab\nindent_size = 4\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/.gitignore",
    "content": "# Setup a Global .gitignore for OS and editor generated files:\n# https://help.github.com/articles/ignoring-files\n# git config --global core.excludesfile ~/.gitignore_global\n\n.vagrant\n*.sublime-project\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/.travis.yml",
    "content": "sudo: false\nlanguage: go\n\ngo:\n  - 1.8.x\n  - 1.9.x\n  - tip\n\nmatrix:\n  allow_failures:\n    - go: tip\n  fast_finish: true\n\nbefore_script:\n  - go get -u github.com/golang/lint/golint\n\nscript:\n  - go test -v --race ./...\n\nafter_script:\n  - test -z \"$(gofmt -s -l -w . | tee /dev/stderr)\"\n  - test -z \"$(golint ./...     | tee /dev/stderr)\"\n  - go vet ./...\n\nos:\n  - linux\n  - osx\n\nnotifications:\n  email: false\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/AUTHORS",
    "content": "# Names should be added to this file as\n#\tName or Organization <email address>\n# The email address is not required for organizations.\n\n# You can update this list using the following command:\n#\n#   $ git shortlog -se | awk '{print $2 \" \" $3 \" \" $4}'\n\n# Please keep the list sorted.\n\nAaron L <aaron@bettercoder.net>\nAdrien Bustany <adrien@bustany.org>\nAmit Krishnan <amit.krishnan@oracle.com>\nAnmol Sethi <me@anmol.io>\nBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>\nBruno Bigras <bigras.bruno@gmail.com>\nCaleb Spare <cespare@gmail.com>\nCase Nelson <case@teammating.com>\nChris Howey <chris@howey.me> <howeyc@gmail.com>\nChristoffer Buchholz <christoffer.buchholz@gmail.com>\nDaniel Wagner-Hall <dawagner@gmail.com>\nDave Cheney <dave@cheney.net>\nEvan Phoenix <evan@fallingsnow.net>\nFrancisco Souza <f@souza.cc>\nHari haran <hariharan.uno@gmail.com>\nJohn C Barstow\nKelvin Fo <vmirage@gmail.com>\nKen-ichirou MATSUZAWA <chamas@h4.dion.ne.jp>\nMatt Layher <mdlayher@gmail.com>\nNathan Youngman <git@nathany.com>\nNickolai Zeldovich <nickolai@csail.mit.edu>\nPatrick <patrick@dropbox.com>\nPaul Hammond <paul@paulhammond.org>\nPawel Knap <pawelknap88@gmail.com>\nPieter Droogendijk <pieter@binky.org.uk>\nPursuit92 <JoshChase@techpursuit.net>\nRiku Voipio <riku.voipio@linaro.org>\nRob Figueiredo <robfig@gmail.com>\nRodrigo Chiossi <rodrigochiossi@gmail.com>\nSlawek Ligus <root@ooz.ie>\nSoge Zhang <zhssoge@gmail.com>\nTiffany Jernigan <tiffany.jernigan@intel.com>\nTilak Sharma <tilaks@google.com>\nTom Payne <twpayne@gmail.com>\nTravis Cline <travis.cline@gmail.com>\nTudor Golubenco <tudor.g@gmail.com>\nVahe Khachikyan <vahe@live.ca>\nYukang <moorekang@gmail.com>\nbronze1man <bronze1man@gmail.com>\ndebrando <denis.brandolini@gmail.com>\nhenrikedwards <henrik.edwards@gmail.com>\n铁哥 <guotie.9@gmail.com>\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md",
    "content": "# Changelog\n\n## v1.4.7 / 2018-01-09\n\n* BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine)\n* Tests: Fix missing verb on format string (thanks @rchiossi)\n* Linux: Fix deadlock in Remove (thanks @aarondl)\n* Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne)\n* Docs: Moved FAQ into the README (thanks @vahe)\n* Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich)\n* Docs: replace references to OS X with macOS\n\n## v1.4.2 / 2016-10-10\n\n* Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec [#178](https://github.com/fsnotify/fsnotify/pull/178) (thanks @pattyshack)\n\n## v1.4.1 / 2016-10-04\n\n* Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack)\n\n## v1.4.0 / 2016-10-01\n\n* add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie)\n\n## v1.3.1 / 2016-06-28\n\n* Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc)\n\n## v1.3.0 / 2016-04-19\n\n* Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135)\n\n## v1.2.10 / 2016-03-02\n\n* Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj)\n\n## v1.2.9 / 2016-01-13\n\nkqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep)\n\n## v1.2.8 / 2015-12-17\n\n* kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test)\n* inotify: fix race in test\n* enable race detection for continuous integration (Linux, Mac, Windows)\n\n## v1.2.5 / 2015-10-17\n\n* inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki)\n* inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken)\n* kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie)\n* kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion)\n\n## v1.2.1 / 2015-10-14\n\n* kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx)\n\n## v1.2.0 / 2015-02-08\n\n* inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD)\n* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD)\n* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59)\n\n## v1.1.1 / 2015-02-05\n\n* inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD)\n\n## v1.1.0 / 2014-12-12\n\n* kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43)\n    * add low-level functions\n    * only need to store flags on directories\n    * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13)\n    * done can be an unbuffered channel\n    * remove calls to os.NewSyscallError\n* More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher)\n* kqueue: fix regression in  rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48)\n* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)\n\n## v1.0.4 / 2014-09-07\n\n* kqueue: add dragonfly to the build tags.\n* Rename source code files, rearrange code so exported APIs are at the top.\n* Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang)\n\n## v1.0.3 / 2014-08-19\n\n* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36)\n\n## v1.0.2 / 2014-08-17\n\n* [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)\n* [Fix] Make ./path and path equivalent. (thanks @zhsso)\n\n## v1.0.0 / 2014-08-15\n\n* [API] Remove AddWatch on Windows, use Add.\n* Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30)\n* Minor updates based on feedback from golint.\n\n## dev / 2014-07-09\n\n* Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify).\n* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno)\n\n## dev / 2014-07-04\n\n* kqueue: fix incorrect mutex used in Close()\n* Update example to demonstrate usage of Op.\n\n## dev / 2014-06-28\n\n* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4)\n* Fix for String() method on Event (thanks Alex Brainman)\n* Don't build on Plan 9 or Solaris (thanks @4ad)\n\n## dev / 2014-06-21\n\n* Events channel of type Event rather than *Event.\n* [internal] use syscall constants directly for inotify and kqueue.\n* [internal] kqueue: rename events to kevents and fileEvent to event.\n\n## dev / 2014-06-19\n\n* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally).\n* [internal] remove cookie from Event struct (unused).\n* [internal] Event struct has the same definition across every OS.\n* [internal] remove internal watch and removeWatch methods.\n\n## dev / 2014-06-12\n\n* [API] Renamed Watch() to Add() and RemoveWatch() to Remove().\n* [API] Pluralized channel names: Events and Errors.\n* [API] Renamed FileEvent struct to Event.\n* [API] Op constants replace methods like IsCreate().\n\n## dev / 2014-06-12\n\n* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)\n\n## dev / 2014-05-23\n\n* [API] Remove current implementation of WatchFlags.\n    * current implementation doesn't take advantage of OS for efficiency\n    * provides little benefit over filtering events as they are received, but has  extra bookkeeping and mutexes\n    * no tests for the current implementation\n    * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195)\n\n## v0.9.3 / 2014-12-31\n\n* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)\n\n## v0.9.2 / 2014-08-17\n\n* [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)\n\n## v0.9.1 / 2014-06-12\n\n* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)\n\n## v0.9.0 / 2014-01-17\n\n* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany)\n* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare)\n* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library.\n\n## v0.8.12 / 2013-11-13\n\n* [API] Remove FD_SET and friends from Linux adapter\n\n## v0.8.11 / 2013-11-02\n\n* [Doc] Add Changelog [#72][] (thanks @nathany)\n* [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond)\n\n## v0.8.10 / 2013-10-19\n\n* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott)\n* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer)\n* [Doc] specify OS-specific limits in README (thanks @debrando)\n\n## v0.8.9 / 2013-09-08\n\n* [Doc] Contributing (thanks @nathany)\n* [Doc] update package path in example code [#63][] (thanks @paulhammond)\n* [Doc] GoCI badge in README (Linux only) [#60][]\n* [Doc] Cross-platform testing with Vagrant  [#59][] (thanks @nathany)\n\n## v0.8.8 / 2013-06-17\n\n* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie)\n\n## v0.8.7 / 2013-06-03\n\n* [API] Make syscall flags internal\n* [Fix] inotify: ignore event changes\n* [Fix] race in symlink test [#45][] (reported by @srid)\n* [Fix] tests on Windows\n* lower case error messages\n\n## v0.8.6 / 2013-05-23\n\n* kqueue: Use EVT_ONLY flag on Darwin\n* [Doc] Update README with full example\n\n## v0.8.5 / 2013-05-09\n\n* [Fix] inotify: allow monitoring of \"broken\" symlinks (thanks @tsg)\n\n## v0.8.4 / 2013-04-07\n\n* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz)\n\n## v0.8.3 / 2013-03-13\n\n* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin)\n* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin)\n\n## v0.8.2 / 2013-02-07\n\n* [Doc] add Authors\n* [Fix] fix data races for map access [#29][] (thanks @fsouza)\n\n## v0.8.1 / 2013-01-09\n\n* [Fix] Windows path separators\n* [Doc] BSD License\n\n## v0.8.0 / 2012-11-09\n\n* kqueue: directory watching improvements (thanks @vmirage)\n* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto)\n* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr)\n\n## v0.7.4 / 2012-10-09\n\n* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)\n* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig)\n* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)\n* [Fix] kqueue: modify after recreation of file\n\n## v0.7.3 / 2012-09-27\n\n* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)\n* [Fix] kqueue: no longer get duplicate CREATE events\n\n## v0.7.2 / 2012-09-01\n\n* kqueue: events for created directories\n\n## v0.7.1 / 2012-07-14\n\n* [Fix] for renaming files\n\n## v0.7.0 / 2012-07-02\n\n* [Feature] FSNotify flags\n* [Fix] inotify: Added file name back to event path\n\n## v0.6.0 / 2012-06-06\n\n* kqueue: watch files after directory created (thanks @tmc)\n\n## v0.5.1 / 2012-05-22\n\n* [Fix] inotify: remove all watches before Close()\n\n## v0.5.0 / 2012-05-03\n\n* [API] kqueue: return errors during watch instead of sending over channel\n* kqueue: match symlink behavior on Linux\n* inotify: add `DELETE_SELF` (requested by @taralx)\n* [Fix] kqueue: handle EINTR (reported by @robfig)\n* [Doc] Godoc example [#1][] (thanks @davecheney)\n\n## v0.4.0 / 2012-03-30\n\n* Go 1 released: build with go tool\n* [Feature] Windows support using winfsnotify\n* Windows does not have attribute change notifications\n* Roll attribute notifications into IsModify\n\n## v0.3.0 / 2012-02-19\n\n* kqueue: add files when watch directory\n\n## v0.2.0 / 2011-12-30\n\n* update to latest Go weekly code\n\n## v0.1.0 / 2011-10-19\n\n* kqueue: add watch on file creation to match inotify\n* kqueue: create file event\n* inotify: ignore `IN_IGNORED` events\n* event String()\n* linux: common FileEvent functions\n* initial commit\n\n[#79]: https://github.com/howeyc/fsnotify/pull/79\n[#77]: https://github.com/howeyc/fsnotify/pull/77\n[#72]: https://github.com/howeyc/fsnotify/issues/72\n[#71]: https://github.com/howeyc/fsnotify/issues/71\n[#70]: https://github.com/howeyc/fsnotify/issues/70\n[#63]: https://github.com/howeyc/fsnotify/issues/63\n[#62]: https://github.com/howeyc/fsnotify/issues/62\n[#60]: https://github.com/howeyc/fsnotify/issues/60\n[#59]: https://github.com/howeyc/fsnotify/issues/59\n[#49]: https://github.com/howeyc/fsnotify/issues/49\n[#45]: https://github.com/howeyc/fsnotify/issues/45\n[#40]: https://github.com/howeyc/fsnotify/issues/40\n[#36]: https://github.com/howeyc/fsnotify/issues/36\n[#33]: https://github.com/howeyc/fsnotify/issues/33\n[#29]: https://github.com/howeyc/fsnotify/issues/29\n[#25]: https://github.com/howeyc/fsnotify/issues/25\n[#24]: https://github.com/howeyc/fsnotify/issues/24\n[#21]: https://github.com/howeyc/fsnotify/issues/21\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md",
    "content": "# Contributing\n\n## Issues\n\n* Request features and report bugs using the [GitHub Issue Tracker](https://github.com/fsnotify/fsnotify/issues).\n* Please indicate the platform you are using fsnotify on.\n* A code example to reproduce the problem is appreciated.\n\n## Pull Requests\n\n### Contributor License Agreement\n\nfsnotify is derived from code in the [golang.org/x/exp](https://godoc.org/golang.org/x/exp) package and it may be included [in the standard library](https://github.com/fsnotify/fsnotify/issues/1) in the future. Therefore fsnotify carries the same [LICENSE](https://github.com/fsnotify/fsnotify/blob/master/LICENSE) as Go. Contributors retain their copyright, so you need to fill out a short form before we can accept your contribution: [Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual).\n\nPlease indicate that you have signed the CLA in your pull request.\n\n### How fsnotify is Developed\n\n* Development is done on feature branches.\n* Tests are run on BSD, Linux, macOS and Windows.\n* Pull requests are reviewed and [applied to master][am] using [hub][].\n  * Maintainers may modify or squash commits rather than asking contributors to.\n* To issue a new release, the maintainers will:\n  * Update the CHANGELOG\n  * Tag a version, which will become available through gopkg.in.\n \n### How to Fork\n\nFor smooth sailing, always use the original import path. Installing with `go get` makes this easy. \n\n1. Install from GitHub (`go get -u github.com/fsnotify/fsnotify`)\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Ensure everything works and the tests pass (see below)\n4. Commit your changes (`git commit -am 'Add some feature'`)\n\nContribute upstream:\n\n1. Fork fsnotify on GitHub\n2. Add your remote (`git remote add fork git@github.com:mycompany/repo.git`)\n3. Push to the branch (`git push fork my-new-feature`)\n4. Create a new Pull Request on GitHub\n\nThis workflow is [thoroughly explained by Katrina Owen](https://splice.com/blog/contributing-open-source-git-repositories-go/).\n\n### Testing\n\nfsnotify uses build tags to compile different code on Linux, BSD, macOS, and Windows.\n\nBefore doing a pull request, please do your best to test your changes on multiple platforms, and list which platforms you were able/unable to test on.\n\nTo aid in cross-platform testing there is a Vagrantfile for Linux and BSD.\n\n* Install [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/)\n* Setup [Vagrant Gopher](https://github.com/nathany/vagrant-gopher) in your `src` folder.\n* Run `vagrant up` from the project folder. You can also setup just one box with `vagrant up linux` or `vagrant up bsd` (note: the BSD box doesn't support Windows hosts at this time, and NFS may prompt for your host OS password)\n* Once setup, you can run the test suite on a given OS with a single command `vagrant ssh linux -c 'cd fsnotify/fsnotify; go test'`.\n* When you're done, you will want to halt or destroy the Vagrant boxes.\n\nNotice: fsnotify file system events won't trigger in shared folders. The tests get around this limitation by using the /tmp directory.\n\nRight now there is no equivalent solution for Windows and macOS, but there are Windows VMs [freely available from Microsoft](http://www.modern.ie/en-us/virtualization-tools#downloads).\n\n### Maintainers\n\nHelp maintaining fsnotify is welcome. To be a maintainer:\n\n* Submit a pull request and sign the CLA as above.\n* You must be able to run the test suite on Mac, Windows, Linux and BSD.\n\nTo keep master clean, the fsnotify project uses the \"apply mail\" workflow outlined in Nathaniel Talbott's post [\"Merge pull request\" Considered Harmful][am]. This requires installing [hub][].\n\nAll code changes should be internal pull requests.\n\nReleases are tagged using [Semantic Versioning](http://semver.org/).\n\n[hub]: https://github.com/github/hub\n[am]: http://blog.spreedly.com/2014/06/24/merge-pull-request-considered-harmful/#.VGa5yZPF_Zs\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/LICENSE",
    "content": "Copyright (c) 2012 The Go Authors. All rights reserved.\nCopyright (c) 2012 fsnotify Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/README.md",
    "content": "# File system notifications for Go\n\n[![GoDoc](https://godoc.org/github.com/fsnotify/fsnotify?status.svg)](https://godoc.org/github.com/fsnotify/fsnotify) [![Go Report Card](https://goreportcard.com/badge/github.com/fsnotify/fsnotify)](https://goreportcard.com/report/github.com/fsnotify/fsnotify)\n\nfsnotify utilizes [golang.org/x/sys](https://godoc.org/golang.org/x/sys) rather than `syscall` from the standard library. Ensure you have the latest version installed by running:\n\n```console\ngo get -u golang.org/x/sys/...\n```\n\nCross platform: Windows, Linux, BSD and macOS.\n\n|Adapter   |OS        |Status    |\n|----------|----------|----------|\n|inotify   |Linux 2.6.27 or later, Android\\*|Supported [![Build Status](https://travis-ci.org/fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/fsnotify/fsnotify)|\n|kqueue    |BSD, macOS, iOS\\*|Supported [![Build Status](https://travis-ci.org/fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/fsnotify/fsnotify)|\n|ReadDirectoryChangesW|Windows|Supported [![Build status](https://ci.appveyor.com/api/projects/status/ivwjubaih4r0udeh/branch/master?svg=true)](https://ci.appveyor.com/project/NathanYoungman/fsnotify/branch/master)|\n|FSEvents  |macOS         |[Planned](https://github.com/fsnotify/fsnotify/issues/11)|\n|FEN       |Solaris 11    |[In Progress](https://github.com/fsnotify/fsnotify/issues/12)|\n|fanotify  |Linux 2.6.37+ | |\n|USN Journals |Windows    |[Maybe](https://github.com/fsnotify/fsnotify/issues/53)|\n|Polling   |*All*         |[Maybe](https://github.com/fsnotify/fsnotify/issues/9)|\n\n\\* Android and iOS are untested.\n\nPlease see [the documentation](https://godoc.org/github.com/fsnotify/fsnotify) and consult the [FAQ](#faq) for usage information.\n\n## API stability\n\nfsnotify is a fork of [howeyc/fsnotify](https://godoc.org/github.com/howeyc/fsnotify) with a new API as of v1.0. The API is based on [this design document](http://goo.gl/MrYxyA). \n\nAll [releases](https://github.com/fsnotify/fsnotify/releases) are tagged based on [Semantic Versioning](http://semver.org/). Further API changes are [planned](https://github.com/fsnotify/fsnotify/milestones), and will be tagged with a new major revision number.\n\nGo 1.6 supports dependencies located in the `vendor/` folder. Unless you are creating a library, it is recommended that you copy fsnotify into `vendor/github.com/fsnotify/fsnotify` within your project, and likewise for `golang.org/x/sys`.\n\n## Contributing\n\nPlease refer to [CONTRIBUTING][] before opening an issue or pull request.\n\n## Example\n\nSee [example_test.go](https://github.com/fsnotify/fsnotify/blob/master/example_test.go).\n\n## FAQ\n\n**When a file is moved to another directory is it still being watched?**\n\nNo (it shouldn't be, unless you are watching where it was moved to).\n\n**When I watch a directory, are all subdirectories watched as well?**\n\nNo, you must add watches for any directory you want to watch (a recursive watcher is on the roadmap [#18][]).\n\n**Do I have to watch the Error and Event channels in a separate goroutine?**\n\nAs of now, yes. Looking into making this single-thread friendly (see [howeyc #7][#7])\n\n**Why am I receiving multiple events for the same file on OS X?**\n\nSpotlight indexing on OS X can result in multiple events (see [howeyc #62][#62]). A temporary workaround is to add your folder(s) to the *Spotlight Privacy settings* until we have a native FSEvents implementation (see [#11][]).\n\n**How many files can be watched at once?**\n\nThere are OS-specific limits as to how many watches can be created:\n* Linux: /proc/sys/fs/inotify/max_user_watches contains the limit, reaching this limit results in a \"no space left on device\" error.\n* BSD / OSX: sysctl variables \"kern.maxfiles\" and \"kern.maxfilesperproc\", reaching these limits results in a \"too many open files\" error.\n\n[#62]: https://github.com/howeyc/fsnotify/issues/62\n[#18]: https://github.com/fsnotify/fsnotify/issues/18\n[#11]: https://github.com/fsnotify/fsnotify/issues/11\n[#7]: https://github.com/howeyc/fsnotify/issues/7\n\n[contributing]: https://github.com/fsnotify/fsnotify/blob/master/CONTRIBUTING.md\n\n## Related Projects\n\n* [notify](https://github.com/rjeczalik/notify)\n* [fsevents](https://github.com/fsnotify/fsevents)\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/fen.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build solaris\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n)\n\n// Watcher watches a set of files, delivering events to a channel.\ntype Watcher struct {\n\tEvents chan Event\n\tErrors chan error\n}\n\n// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events.\nfunc NewWatcher() (*Watcher, error) {\n\treturn nil, errors.New(\"FEN based watcher not yet supported for fsnotify\\n\")\n}\n\n// Close removes all watches and closes the events channel.\nfunc (w *Watcher) Close() error {\n\treturn nil\n}\n\n// Add starts watching the named file or directory (non-recursively).\nfunc (w *Watcher) Add(name string) error {\n\treturn nil\n}\n\n// Remove stops watching the the named file or directory (non-recursively).\nfunc (w *Watcher) Remove(name string) error {\n\treturn nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/fsnotify.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !plan9\n\n// Package fsnotify provides a platform-independent interface for file system notifications.\npackage fsnotify\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Event represents a single file system notification.\ntype Event struct {\n\tName string // Relative path to the file or directory.\n\tOp   Op     // File operation that triggered the event.\n}\n\n// Op describes a set of file operations.\ntype Op uint32\n\n// These are the generalized file operations that can trigger a notification.\nconst (\n\tCreate Op = 1 << iota\n\tWrite\n\tRemove\n\tRename\n\tChmod\n)\n\nfunc (op Op) String() string {\n\t// Use a buffer for efficient string concatenation\n\tvar buffer bytes.Buffer\n\n\tif op&Create == Create {\n\t\tbuffer.WriteString(\"|CREATE\")\n\t}\n\tif op&Remove == Remove {\n\t\tbuffer.WriteString(\"|REMOVE\")\n\t}\n\tif op&Write == Write {\n\t\tbuffer.WriteString(\"|WRITE\")\n\t}\n\tif op&Rename == Rename {\n\t\tbuffer.WriteString(\"|RENAME\")\n\t}\n\tif op&Chmod == Chmod {\n\t\tbuffer.WriteString(\"|CHMOD\")\n\t}\n\tif buffer.Len() == 0 {\n\t\treturn \"\"\n\t}\n\treturn buffer.String()[1:] // Strip leading pipe\n}\n\n// String returns a string representation of the event in the form\n// \"file: REMOVE|WRITE|...\"\nfunc (e Event) String() string {\n\treturn fmt.Sprintf(\"%q: %s\", e.Name, e.Op.String())\n}\n\n// Common errors that can be reported by a watcher\nvar ErrEventOverflow = errors.New(\"fsnotify queue overflow\")\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/inotify.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of files, delivering events to a channel.\ntype Watcher struct {\n\tEvents   chan Event\n\tErrors   chan error\n\tmu       sync.Mutex // Map access\n\tfd       int\n\tpoller   *fdPoller\n\twatches  map[string]*watch // Map of inotify watches (key: path)\n\tpaths    map[int]string    // Map of watched paths (key: watch descriptor)\n\tdone     chan struct{}     // Channel for sending a \"quit message\" to the reader goroutine\n\tdoneResp chan struct{}     // Channel to respond to Close\n}\n\n// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events.\nfunc NewWatcher() (*Watcher, error) {\n\t// Create inotify fd\n\tfd, errno := unix.InotifyInit1(unix.IN_CLOEXEC)\n\tif fd == -1 {\n\t\treturn nil, errno\n\t}\n\t// Create epoll\n\tpoller, err := newFdPoller(fd)\n\tif err != nil {\n\t\tunix.Close(fd)\n\t\treturn nil, err\n\t}\n\tw := &Watcher{\n\t\tfd:       fd,\n\t\tpoller:   poller,\n\t\twatches:  make(map[string]*watch),\n\t\tpaths:    make(map[int]string),\n\t\tEvents:   make(chan Event),\n\t\tErrors:   make(chan error),\n\t\tdone:     make(chan struct{}),\n\t\tdoneResp: make(chan struct{}),\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tselect {\n\tcase <-w.done:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the events channel.\nfunc (w *Watcher) Close() error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\t// Send 'close' signal to goroutine, and set the Watcher to closed.\n\tclose(w.done)\n\n\t// Wake up goroutine\n\tw.poller.wake()\n\n\t// Wait for goroutine to close\n\t<-w.doneResp\n\n\treturn nil\n}\n\n// Add starts watching the named file or directory (non-recursively).\nfunc (w *Watcher) Add(name string) error {\n\tname = filepath.Clean(name)\n\tif w.isClosed() {\n\t\treturn errors.New(\"inotify instance already closed\")\n\t}\n\n\tconst agnosticEvents = unix.IN_MOVED_TO | unix.IN_MOVED_FROM |\n\t\tunix.IN_CREATE | unix.IN_ATTRIB | unix.IN_MODIFY |\n\t\tunix.IN_MOVE_SELF | unix.IN_DELETE | unix.IN_DELETE_SELF\n\n\tvar flags uint32 = agnosticEvents\n\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\twatchEntry := w.watches[name]\n\tif watchEntry != nil {\n\t\tflags |= watchEntry.flags | unix.IN_MASK_ADD\n\t}\n\twd, errno := unix.InotifyAddWatch(w.fd, name, flags)\n\tif wd == -1 {\n\t\treturn errno\n\t}\n\n\tif watchEntry == nil {\n\t\tw.watches[name] = &watch{wd: uint32(wd), flags: flags}\n\t\tw.paths[wd] = name\n\t} else {\n\t\twatchEntry.wd = uint32(wd)\n\t\twatchEntry.flags = flags\n\t}\n\n\treturn nil\n}\n\n// Remove stops watching the named file or directory (non-recursively).\nfunc (w *Watcher) Remove(name string) error {\n\tname = filepath.Clean(name)\n\n\t// Fetch the watch.\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\twatch, ok := w.watches[name]\n\n\t// Remove it from inotify.\n\tif !ok {\n\t\treturn fmt.Errorf(\"can't remove non-existent inotify watch for: %s\", name)\n\t}\n\n\t// We successfully removed the watch if InotifyRmWatch doesn't return an\n\t// error, we need to clean up our internal state to ensure it matches\n\t// inotify's kernel state.\n\tdelete(w.paths, int(watch.wd))\n\tdelete(w.watches, name)\n\n\t// inotify_rm_watch will return EINVAL if the file has been deleted;\n\t// the inotify will already have been removed.\n\t// watches and pathes are deleted in ignoreLinux() implicitly and asynchronously\n\t// by calling inotify_rm_watch() below. e.g. readEvents() goroutine receives IN_IGNORE\n\t// so that EINVAL means that the wd is being rm_watch()ed or its file removed\n\t// by another thread and we have not received IN_IGNORE event.\n\tsuccess, errno := unix.InotifyRmWatch(w.fd, watch.wd)\n\tif success == -1 {\n\t\t// TODO: Perhaps it's not helpful to return an error here in every case.\n\t\t// the only two possible errors are:\n\t\t// EBADF, which happens when w.fd is not a valid file descriptor of any kind.\n\t\t// EINVAL, which is when fd is not an inotify descriptor or wd is not a valid watch descriptor.\n\t\t// Watch descriptors are invalidated when they are removed explicitly or implicitly;\n\t\t// explicitly by inotify_rm_watch, implicitly when the file they are watching is deleted.\n\t\treturn errno\n\t}\n\n\treturn nil\n}\n\ntype watch struct {\n\twd    uint32 // Watch descriptor (as returned by the inotify_add_watch() syscall)\n\tflags uint32 // inotify flags of this watch (see inotify(7) for the list of valid flags)\n}\n\n// readEvents reads from the inotify file descriptor, converts the\n// received events into Event objects and sends them via the Events channel\nfunc (w *Watcher) readEvents() {\n\tvar (\n\t\tbuf   [unix.SizeofInotifyEvent * 4096]byte // Buffer for a maximum of 4096 raw events\n\t\tn     int                                  // Number of bytes read with read()\n\t\terrno error                                // Syscall errno\n\t\tok    bool                                 // For poller.wait\n\t)\n\n\tdefer close(w.doneResp)\n\tdefer close(w.Errors)\n\tdefer close(w.Events)\n\tdefer unix.Close(w.fd)\n\tdefer w.poller.close()\n\n\tfor {\n\t\t// See if we have been closed.\n\t\tif w.isClosed() {\n\t\t\treturn\n\t\t}\n\n\t\tok, errno = w.poller.wait()\n\t\tif errno != nil {\n\t\t\tselect {\n\t\t\tcase w.Errors <- errno:\n\t\t\tcase <-w.done:\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tn, errno = unix.Read(w.fd, buf[:])\n\t\t// If a signal interrupted execution, see if we've been asked to close, and try again.\n\t\t// http://man7.org/linux/man-pages/man7/signal.7.html :\n\t\t// \"Before Linux 3.8, reads from an inotify(7) file descriptor were not restartable\"\n\t\tif errno == unix.EINTR {\n\t\t\tcontinue\n\t\t}\n\n\t\t// unix.Read might have been woken up by Close. If so, we're done.\n\t\tif w.isClosed() {\n\t\t\treturn\n\t\t}\n\n\t\tif n < unix.SizeofInotifyEvent {\n\t\t\tvar err error\n\t\t\tif n == 0 {\n\t\t\t\t// If EOF is received. This should really never happen.\n\t\t\t\terr = io.EOF\n\t\t\t} else if n < 0 {\n\t\t\t\t// If an error occurred while reading.\n\t\t\t\terr = errno\n\t\t\t} else {\n\t\t\t\t// Read was too short.\n\t\t\t\terr = errors.New(\"notify: short read in readEvents()\")\n\t\t\t}\n\t\t\tselect {\n\t\t\tcase w.Errors <- err:\n\t\t\tcase <-w.done:\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tvar offset uint32\n\t\t// We don't know how many events we just read into the buffer\n\t\t// While the offset points to at least one whole event...\n\t\tfor offset <= uint32(n-unix.SizeofInotifyEvent) {\n\t\t\t// Point \"raw\" to the event in the buffer\n\t\t\traw := (*unix.InotifyEvent)(unsafe.Pointer(&buf[offset]))\n\n\t\t\tmask := uint32(raw.Mask)\n\t\t\tnameLen := uint32(raw.Len)\n\n\t\t\tif mask&unix.IN_Q_OVERFLOW != 0 {\n\t\t\t\tselect {\n\t\t\t\tcase w.Errors <- ErrEventOverflow:\n\t\t\t\tcase <-w.done:\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the event happened to the watched directory or the watched file, the kernel\n\t\t\t// doesn't append the filename to the event, but we would like to always fill the\n\t\t\t// the \"Name\" field with a valid filename. We retrieve the path of the watch from\n\t\t\t// the \"paths\" map.\n\t\t\tw.mu.Lock()\n\t\t\tname, ok := w.paths[int(raw.Wd)]\n\t\t\t// IN_DELETE_SELF occurs when the file/directory being watched is removed.\n\t\t\t// This is a sign to clean up the maps, otherwise we are no longer in sync\n\t\t\t// with the inotify kernel state which has already deleted the watch\n\t\t\t// automatically.\n\t\t\tif ok && mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF {\n\t\t\t\tdelete(w.paths, int(raw.Wd))\n\t\t\t\tdelete(w.watches, name)\n\t\t\t}\n\t\t\tw.mu.Unlock()\n\n\t\t\tif nameLen > 0 {\n\t\t\t\t// Point \"bytes\" at the first byte of the filename\n\t\t\t\tbytes := (*[unix.PathMax]byte)(unsafe.Pointer(&buf[offset+unix.SizeofInotifyEvent]))\n\t\t\t\t// The filename is padded with NULL bytes. TrimRight() gets rid of those.\n\t\t\t\tname += \"/\" + strings.TrimRight(string(bytes[0:nameLen]), \"\\000\")\n\t\t\t}\n\n\t\t\tevent := newEvent(name, mask)\n\n\t\t\t// Send the events that are not ignored on the events channel\n\t\t\tif !event.ignoreLinux(mask) {\n\t\t\t\tselect {\n\t\t\t\tcase w.Events <- event:\n\t\t\t\tcase <-w.done:\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Move to the next event in the buffer\n\t\t\toffset += unix.SizeofInotifyEvent + nameLen\n\t\t}\n\t}\n}\n\n// Certain types of events can be \"ignored\" and not sent over the Events\n// channel. Such as events marked ignore by the kernel, or MODIFY events\n// against files that do not exist.\nfunc (e *Event) ignoreLinux(mask uint32) bool {\n\t// Ignore anything the inotify API says to ignore\n\tif mask&unix.IN_IGNORED == unix.IN_IGNORED {\n\t\treturn true\n\t}\n\n\t// If the event is not a DELETE or RENAME, the file must exist.\n\t// Otherwise the event is ignored.\n\t// *Note*: this was put in place because it was seen that a MODIFY\n\t// event was sent after the DELETE. This ignores that MODIFY and\n\t// assumes a DELETE will come or has come if the file doesn't exist.\n\tif !(e.Op&Remove == Remove || e.Op&Rename == Rename) {\n\t\t_, statErr := os.Lstat(e.Name)\n\t\treturn os.IsNotExist(statErr)\n\t}\n\treturn false\n}\n\n// newEvent returns an platform-independent Event based on an inotify mask.\nfunc newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&unix.IN_CREATE == unix.IN_CREATE || mask&unix.IN_MOVED_TO == unix.IN_MOVED_TO {\n\t\te.Op |= Create\n\t}\n\tif mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF || mask&unix.IN_DELETE == unix.IN_DELETE {\n\t\te.Op |= Remove\n\t}\n\tif mask&unix.IN_MODIFY == unix.IN_MODIFY {\n\t\te.Op |= Write\n\t}\n\tif mask&unix.IN_MOVE_SELF == unix.IN_MOVE_SELF || mask&unix.IN_MOVED_FROM == unix.IN_MOVED_FROM {\n\t\te.Op |= Rename\n\t}\n\tif mask&unix.IN_ATTRIB == unix.IN_ATTRIB {\n\t\te.Op |= Chmod\n\t}\n\treturn e\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/inotify_poller.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\ntype fdPoller struct {\n\tfd   int    // File descriptor (as returned by the inotify_init() syscall)\n\tepfd int    // Epoll file descriptor\n\tpipe [2]int // Pipe for waking up\n}\n\nfunc emptyPoller(fd int) *fdPoller {\n\tpoller := new(fdPoller)\n\tpoller.fd = fd\n\tpoller.epfd = -1\n\tpoller.pipe[0] = -1\n\tpoller.pipe[1] = -1\n\treturn poller\n}\n\n// Create a new inotify poller.\n// This creates an inotify handler, and an epoll handler.\nfunc newFdPoller(fd int) (*fdPoller, error) {\n\tvar errno error\n\tpoller := emptyPoller(fd)\n\tdefer func() {\n\t\tif errno != nil {\n\t\t\tpoller.close()\n\t\t}\n\t}()\n\tpoller.fd = fd\n\n\t// Create epoll fd\n\tpoller.epfd, errno = unix.EpollCreate1(0)\n\tif poller.epfd == -1 {\n\t\treturn nil, errno\n\t}\n\t// Create pipe; pipe[0] is the read end, pipe[1] the write end.\n\terrno = unix.Pipe2(poller.pipe[:], unix.O_NONBLOCK)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Register inotify fd with epoll\n\tevent := unix.EpollEvent{\n\t\tFd:     int32(poller.fd),\n\t\tEvents: unix.EPOLLIN,\n\t}\n\terrno = unix.EpollCtl(poller.epfd, unix.EPOLL_CTL_ADD, poller.fd, &event)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Register pipe fd with epoll\n\tevent = unix.EpollEvent{\n\t\tFd:     int32(poller.pipe[0]),\n\t\tEvents: unix.EPOLLIN,\n\t}\n\terrno = unix.EpollCtl(poller.epfd, unix.EPOLL_CTL_ADD, poller.pipe[0], &event)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\treturn poller, nil\n}\n\n// Wait using epoll.\n// Returns true if something is ready to be read,\n// false if there is not.\nfunc (poller *fdPoller) wait() (bool, error) {\n\t// 3 possible events per fd, and 2 fds, makes a maximum of 6 events.\n\t// I don't know whether epoll_wait returns the number of events returned,\n\t// or the total number of events ready.\n\t// I decided to catch both by making the buffer one larger than the maximum.\n\tevents := make([]unix.EpollEvent, 7)\n\tfor {\n\t\tn, errno := unix.EpollWait(poller.epfd, events, -1)\n\t\tif n == -1 {\n\t\t\tif errno == unix.EINTR {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn false, errno\n\t\t}\n\t\tif n == 0 {\n\t\t\t// If there are no events, try again.\n\t\t\tcontinue\n\t\t}\n\t\tif n > 6 {\n\t\t\t// This should never happen. More events were returned than should be possible.\n\t\t\treturn false, errors.New(\"epoll_wait returned more events than I know what to do with\")\n\t\t}\n\t\tready := events[:n]\n\t\tepollhup := false\n\t\tepollerr := false\n\t\tepollin := false\n\t\tfor _, event := range ready {\n\t\t\tif event.Fd == int32(poller.fd) {\n\t\t\t\tif event.Events&unix.EPOLLHUP != 0 {\n\t\t\t\t\t// This should not happen, but if it does, treat it as a wakeup.\n\t\t\t\t\tepollhup = true\n\t\t\t\t}\n\t\t\t\tif event.Events&unix.EPOLLERR != 0 {\n\t\t\t\t\t// If an error is waiting on the file descriptor, we should pretend\n\t\t\t\t\t// something is ready to read, and let unix.Read pick up the error.\n\t\t\t\t\tepollerr = true\n\t\t\t\t}\n\t\t\t\tif event.Events&unix.EPOLLIN != 0 {\n\t\t\t\t\t// There is data to read.\n\t\t\t\t\tepollin = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif event.Fd == int32(poller.pipe[0]) {\n\t\t\t\tif event.Events&unix.EPOLLHUP != 0 {\n\t\t\t\t\t// Write pipe descriptor was closed, by us. This means we're closing down the\n\t\t\t\t\t// watcher, and we should wake up.\n\t\t\t\t}\n\t\t\t\tif event.Events&unix.EPOLLERR != 0 {\n\t\t\t\t\t// If an error is waiting on the pipe file descriptor.\n\t\t\t\t\t// This is an absolute mystery, and should never ever happen.\n\t\t\t\t\treturn false, errors.New(\"Error on the pipe descriptor.\")\n\t\t\t\t}\n\t\t\t\tif event.Events&unix.EPOLLIN != 0 {\n\t\t\t\t\t// This is a regular wakeup, so we have to clear the buffer.\n\t\t\t\t\terr := poller.clearWake()\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn false, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif epollhup || epollerr || epollin {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, nil\n\t}\n}\n\n// Close the write end of the poller.\nfunc (poller *fdPoller) wake() error {\n\tbuf := make([]byte, 1)\n\tn, errno := unix.Write(poller.pipe[1], buf)\n\tif n == -1 {\n\t\tif errno == unix.EAGAIN {\n\t\t\t// Buffer is full, poller will wake.\n\t\t\treturn nil\n\t\t}\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc (poller *fdPoller) clearWake() error {\n\t// You have to be woken up a LOT in order to get to 100!\n\tbuf := make([]byte, 100)\n\tn, errno := unix.Read(poller.pipe[0], buf)\n\tif n == -1 {\n\t\tif errno == unix.EAGAIN {\n\t\t\t// Buffer is empty, someone else cleared our wake.\n\t\t\treturn nil\n\t\t}\n\t\treturn errno\n\t}\n\treturn nil\n}\n\n// Close all poller file descriptors, but not the one passed to it.\nfunc (poller *fdPoller) close() {\n\tif poller.pipe[1] != -1 {\n\t\tunix.Close(poller.pipe[1])\n\t}\n\tif poller.pipe[0] != -1 {\n\t\tunix.Close(poller.pipe[0])\n\t}\n\tif poller.epfd != -1 {\n\t\tunix.Close(poller.epfd)\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/kqueue.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build freebsd openbsd netbsd dragonfly darwin\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of files, delivering events to a channel.\ntype Watcher struct {\n\tEvents chan Event\n\tErrors chan error\n\tdone   chan struct{} // Channel for sending a \"quit message\" to the reader goroutine\n\n\tkq int // File descriptor (as returned by the kqueue() syscall).\n\n\tmu              sync.Mutex        // Protects access to watcher data\n\twatches         map[string]int    // Map of watched file descriptors (key: path).\n\texternalWatches map[string]bool   // Map of watches added by user of the library.\n\tdirFlags        map[string]uint32 // Map of watched directories to fflags used in kqueue.\n\tpaths           map[int]pathInfo  // Map file descriptors to path names for processing kqueue events.\n\tfileExists      map[string]bool   // Keep track of if we know this file exists (to stop duplicate create events).\n\tisClosed        bool              // Set to true when Close() is first called\n}\n\ntype pathInfo struct {\n\tname  string\n\tisDir bool\n}\n\n// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events.\nfunc NewWatcher() (*Watcher, error) {\n\tkq, err := kqueue()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tw := &Watcher{\n\t\tkq:              kq,\n\t\twatches:         make(map[string]int),\n\t\tdirFlags:        make(map[string]uint32),\n\t\tpaths:           make(map[int]pathInfo),\n\t\tfileExists:      make(map[string]bool),\n\t\texternalWatches: make(map[string]bool),\n\t\tEvents:          make(chan Event),\n\t\tErrors:          make(chan error),\n\t\tdone:            make(chan struct{}),\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// Close removes all watches and closes the events channel.\nfunc (w *Watcher) Close() error {\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\tw.isClosed = true\n\n\t// copy paths to remove while locked\n\tvar pathsToRemove = make([]string, 0, len(w.watches))\n\tfor name := range w.watches {\n\t\tpathsToRemove = append(pathsToRemove, name)\n\t}\n\tw.mu.Unlock()\n\t// unlock before calling Remove, which also locks\n\n\tfor _, name := range pathsToRemove {\n\t\tw.Remove(name)\n\t}\n\n\t// send a \"quit\" message to the reader goroutine\n\tclose(w.done)\n\n\treturn nil\n}\n\n// Add starts watching the named file or directory (non-recursively).\nfunc (w *Watcher) Add(name string) error {\n\tw.mu.Lock()\n\tw.externalWatches[name] = true\n\tw.mu.Unlock()\n\t_, err := w.addWatch(name, noteAllEvents)\n\treturn err\n}\n\n// Remove stops watching the the named file or directory (non-recursively).\nfunc (w *Watcher) Remove(name string) error {\n\tname = filepath.Clean(name)\n\tw.mu.Lock()\n\twatchfd, ok := w.watches[name]\n\tw.mu.Unlock()\n\tif !ok {\n\t\treturn fmt.Errorf(\"can't remove non-existent kevent watch for: %s\", name)\n\t}\n\n\tconst registerRemove = unix.EV_DELETE\n\tif err := register(w.kq, []int{watchfd}, registerRemove, 0); err != nil {\n\t\treturn err\n\t}\n\n\tunix.Close(watchfd)\n\n\tw.mu.Lock()\n\tisDir := w.paths[watchfd].isDir\n\tdelete(w.watches, name)\n\tdelete(w.paths, watchfd)\n\tdelete(w.dirFlags, name)\n\tw.mu.Unlock()\n\n\t// Find all watched paths that are in this directory that are not external.\n\tif isDir {\n\t\tvar pathsToRemove []string\n\t\tw.mu.Lock()\n\t\tfor _, path := range w.paths {\n\t\t\twdir, _ := filepath.Split(path.name)\n\t\t\tif filepath.Clean(wdir) == name {\n\t\t\t\tif !w.externalWatches[path.name] {\n\t\t\t\t\tpathsToRemove = append(pathsToRemove, path.name)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tw.mu.Unlock()\n\t\tfor _, name := range pathsToRemove {\n\t\t\t// Since these are internal, not much sense in propagating error\n\t\t\t// to the user, as that will just confuse them with an error about\n\t\t\t// a path they did not explicitly watch themselves.\n\t\t\tw.Remove(name)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Watch all events (except NOTE_EXTEND, NOTE_LINK, NOTE_REVOKE)\nconst noteAllEvents = unix.NOTE_DELETE | unix.NOTE_WRITE | unix.NOTE_ATTRIB | unix.NOTE_RENAME\n\n// keventWaitTime to block on each read from kevent\nvar keventWaitTime = durationToTimespec(100 * time.Millisecond)\n\n// addWatch adds name to the watched file set.\n// The flags are interpreted as described in kevent(2).\n// Returns the real path to the file which was added, if any, which may be different from the one passed in the case of symlinks.\nfunc (w *Watcher) addWatch(name string, flags uint32) (string, error) {\n\tvar isDir bool\n\t// Make ./name and name equivalent\n\tname = filepath.Clean(name)\n\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn \"\", errors.New(\"kevent instance already closed\")\n\t}\n\twatchfd, alreadyWatching := w.watches[name]\n\t// We already have a watch, but we can still override flags.\n\tif alreadyWatching {\n\t\tisDir = w.paths[watchfd].isDir\n\t}\n\tw.mu.Unlock()\n\n\tif !alreadyWatching {\n\t\tfi, err := os.Lstat(name)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Don't watch sockets.\n\t\tif fi.Mode()&os.ModeSocket == os.ModeSocket {\n\t\t\treturn \"\", nil\n\t\t}\n\n\t\t// Don't watch named pipes.\n\t\tif fi.Mode()&os.ModeNamedPipe == os.ModeNamedPipe {\n\t\t\treturn \"\", nil\n\t\t}\n\n\t\t// Follow Symlinks\n\t\t// Unfortunately, Linux can add bogus symlinks to watch list without\n\t\t// issue, and Windows can't do symlinks period (AFAIK). To  maintain\n\t\t// consistency, we will act like everything is fine. There will simply\n\t\t// be no file events for broken symlinks.\n\t\t// Hence the returns of nil on errors.\n\t\tif fi.Mode()&os.ModeSymlink == os.ModeSymlink {\n\t\t\tname, err = filepath.EvalSymlinks(name)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", nil\n\t\t\t}\n\n\t\t\tw.mu.Lock()\n\t\t\t_, alreadyWatching = w.watches[name]\n\t\t\tw.mu.Unlock()\n\n\t\t\tif alreadyWatching {\n\t\t\t\treturn name, nil\n\t\t\t}\n\n\t\t\tfi, err = os.Lstat(name)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", nil\n\t\t\t}\n\t\t}\n\n\t\twatchfd, err = unix.Open(name, openMode, 0700)\n\t\tif watchfd == -1 {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tisDir = fi.IsDir()\n\t}\n\n\tconst registerAdd = unix.EV_ADD | unix.EV_CLEAR | unix.EV_ENABLE\n\tif err := register(w.kq, []int{watchfd}, registerAdd, flags); err != nil {\n\t\tunix.Close(watchfd)\n\t\treturn \"\", err\n\t}\n\n\tif !alreadyWatching {\n\t\tw.mu.Lock()\n\t\tw.watches[name] = watchfd\n\t\tw.paths[watchfd] = pathInfo{name: name, isDir: isDir}\n\t\tw.mu.Unlock()\n\t}\n\n\tif isDir {\n\t\t// Watch the directory if it has not been watched before,\n\t\t// or if it was watched before, but perhaps only a NOTE_DELETE (watchDirectoryFiles)\n\t\tw.mu.Lock()\n\n\t\twatchDir := (flags&unix.NOTE_WRITE) == unix.NOTE_WRITE &&\n\t\t\t(!alreadyWatching || (w.dirFlags[name]&unix.NOTE_WRITE) != unix.NOTE_WRITE)\n\t\t// Store flags so this watch can be updated later\n\t\tw.dirFlags[name] = flags\n\t\tw.mu.Unlock()\n\n\t\tif watchDir {\n\t\t\tif err := w.watchDirectoryFiles(name); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t}\n\treturn name, nil\n}\n\n// readEvents reads from kqueue and converts the received kevents into\n// Event values that it sends down the Events channel.\nfunc (w *Watcher) readEvents() {\n\teventBuffer := make([]unix.Kevent_t, 10)\n\nloop:\n\tfor {\n\t\t// See if there is a message on the \"done\" channel\n\t\tselect {\n\t\tcase <-w.done:\n\t\t\tbreak loop\n\t\tdefault:\n\t\t}\n\n\t\t// Get new events\n\t\tkevents, err := read(w.kq, eventBuffer, &keventWaitTime)\n\t\t// EINTR is okay, the syscall was interrupted before timeout expired.\n\t\tif err != nil && err != unix.EINTR {\n\t\t\tselect {\n\t\t\tcase w.Errors <- err:\n\t\t\tcase <-w.done:\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Flush the events we received to the Events channel\n\t\tfor len(kevents) > 0 {\n\t\t\tkevent := &kevents[0]\n\t\t\twatchfd := int(kevent.Ident)\n\t\t\tmask := uint32(kevent.Fflags)\n\t\t\tw.mu.Lock()\n\t\t\tpath := w.paths[watchfd]\n\t\t\tw.mu.Unlock()\n\t\t\tevent := newEvent(path.name, mask)\n\n\t\t\tif path.isDir && !(event.Op&Remove == Remove) {\n\t\t\t\t// Double check to make sure the directory exists. This can happen when\n\t\t\t\t// we do a rm -fr on a recursively watched folders and we receive a\n\t\t\t\t// modification event first but the folder has been deleted and later\n\t\t\t\t// receive the delete event\n\t\t\t\tif _, err := os.Lstat(event.Name); os.IsNotExist(err) {\n\t\t\t\t\t// mark is as delete event\n\t\t\t\t\tevent.Op |= Remove\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif event.Op&Rename == Rename || event.Op&Remove == Remove {\n\t\t\t\tw.Remove(event.Name)\n\t\t\t\tw.mu.Lock()\n\t\t\t\tdelete(w.fileExists, event.Name)\n\t\t\t\tw.mu.Unlock()\n\t\t\t}\n\n\t\t\tif path.isDir && event.Op&Write == Write && !(event.Op&Remove == Remove) {\n\t\t\t\tw.sendDirectoryChangeEvents(event.Name)\n\t\t\t} else {\n\t\t\t\t// Send the event on the Events channel.\n\t\t\t\tselect {\n\t\t\t\tcase w.Events <- event:\n\t\t\t\tcase <-w.done:\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif event.Op&Remove == Remove {\n\t\t\t\t// Look for a file that may have overwritten this.\n\t\t\t\t// For example, mv f1 f2 will delete f2, then create f2.\n\t\t\t\tif path.isDir {\n\t\t\t\t\tfileDir := filepath.Clean(event.Name)\n\t\t\t\t\tw.mu.Lock()\n\t\t\t\t\t_, found := w.watches[fileDir]\n\t\t\t\t\tw.mu.Unlock()\n\t\t\t\t\tif found {\n\t\t\t\t\t\t// make sure the directory exists before we watch for changes. When we\n\t\t\t\t\t\t// do a recursive watch and perform rm -fr, the parent directory might\n\t\t\t\t\t\t// have gone missing, ignore the missing directory and let the\n\t\t\t\t\t\t// upcoming delete event remove the watch from the parent directory.\n\t\t\t\t\t\tif _, err := os.Lstat(fileDir); err == nil {\n\t\t\t\t\t\t\tw.sendDirectoryChangeEvents(fileDir)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfilePath := filepath.Clean(event.Name)\n\t\t\t\t\tif fileInfo, err := os.Lstat(filePath); err == nil {\n\t\t\t\t\t\tw.sendFileCreatedEventIfNew(filePath, fileInfo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Move to next event\n\t\t\tkevents = kevents[1:]\n\t\t}\n\t}\n\n\t// cleanup\n\terr := unix.Close(w.kq)\n\tif err != nil {\n\t\t// only way the previous loop breaks is if w.done was closed so we need to async send to w.Errors.\n\t\tselect {\n\t\tcase w.Errors <- err:\n\t\tdefault:\n\t\t}\n\t}\n\tclose(w.Events)\n\tclose(w.Errors)\n}\n\n// newEvent returns an platform-independent Event based on kqueue Fflags.\nfunc newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&unix.NOTE_DELETE == unix.NOTE_DELETE {\n\t\te.Op |= Remove\n\t}\n\tif mask&unix.NOTE_WRITE == unix.NOTE_WRITE {\n\t\te.Op |= Write\n\t}\n\tif mask&unix.NOTE_RENAME == unix.NOTE_RENAME {\n\t\te.Op |= Rename\n\t}\n\tif mask&unix.NOTE_ATTRIB == unix.NOTE_ATTRIB {\n\t\te.Op |= Chmod\n\t}\n\treturn e\n}\n\nfunc newCreateEvent(name string) Event {\n\treturn Event{Name: name, Op: Create}\n}\n\n// watchDirectoryFiles to mimic inotify when adding a watch on a directory\nfunc (w *Watcher) watchDirectoryFiles(dirPath string) error {\n\t// Get all files\n\tfiles, err := ioutil.ReadDir(dirPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, fileInfo := range files {\n\t\tfilePath := filepath.Join(dirPath, fileInfo.Name())\n\t\tfilePath, err = w.internalWatch(filePath, fileInfo)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tw.mu.Lock()\n\t\tw.fileExists[filePath] = true\n\t\tw.mu.Unlock()\n\t}\n\n\treturn nil\n}\n\n// sendDirectoryEvents searches the directory for newly created files\n// and sends them over the event channel. This functionality is to have\n// the BSD version of fsnotify match Linux inotify which provides a\n// create event for files created in a watched directory.\nfunc (w *Watcher) sendDirectoryChangeEvents(dirPath string) {\n\t// Get all files\n\tfiles, err := ioutil.ReadDir(dirPath)\n\tif err != nil {\n\t\tselect {\n\t\tcase w.Errors <- err:\n\t\tcase <-w.done:\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Search for new files\n\tfor _, fileInfo := range files {\n\t\tfilePath := filepath.Join(dirPath, fileInfo.Name())\n\t\terr := w.sendFileCreatedEventIfNew(filePath, fileInfo)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// sendFileCreatedEvent sends a create event if the file isn't already being tracked.\nfunc (w *Watcher) sendFileCreatedEventIfNew(filePath string, fileInfo os.FileInfo) (err error) {\n\tw.mu.Lock()\n\t_, doesExist := w.fileExists[filePath]\n\tw.mu.Unlock()\n\tif !doesExist {\n\t\t// Send create event\n\t\tselect {\n\t\tcase w.Events <- newCreateEvent(filePath):\n\t\tcase <-w.done:\n\t\t\treturn\n\t\t}\n\t}\n\n\t// like watchDirectoryFiles (but without doing another ReadDir)\n\tfilePath, err = w.internalWatch(filePath, fileInfo)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\tw.fileExists[filePath] = true\n\tw.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (w *Watcher) internalWatch(name string, fileInfo os.FileInfo) (string, error) {\n\tif fileInfo.IsDir() {\n\t\t// mimic Linux providing delete events for subdirectories\n\t\t// but preserve the flags used if currently watching subdirectory\n\t\tw.mu.Lock()\n\t\tflags := w.dirFlags[name]\n\t\tw.mu.Unlock()\n\n\t\tflags |= unix.NOTE_DELETE | unix.NOTE_RENAME\n\t\treturn w.addWatch(name, flags)\n\t}\n\n\t// watch file to mimic Linux inotify\n\treturn w.addWatch(name, noteAllEvents)\n}\n\n// kqueue creates a new kernel event queue and returns a descriptor.\nfunc kqueue() (kq int, err error) {\n\tkq, err = unix.Kqueue()\n\tif kq == -1 {\n\t\treturn kq, err\n\t}\n\treturn kq, nil\n}\n\n// register events with the queue\nfunc register(kq int, fds []int, flags int, fflags uint32) error {\n\tchanges := make([]unix.Kevent_t, len(fds))\n\n\tfor i, fd := range fds {\n\t\t// SetKevent converts int to the platform-specific types:\n\t\tunix.SetKevent(&changes[i], fd, unix.EVFILT_VNODE, flags)\n\t\tchanges[i].Fflags = fflags\n\t}\n\n\t// register the events\n\tsuccess, err := unix.Kevent(kq, changes, nil, nil)\n\tif success == -1 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// read retrieves pending events, or waits until an event occurs.\n// A timeout of nil blocks indefinitely, while 0 polls the queue.\nfunc read(kq int, events []unix.Kevent_t, timeout *unix.Timespec) ([]unix.Kevent_t, error) {\n\tn, err := unix.Kevent(kq, nil, events, timeout)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn events[0:n], nil\n}\n\n// durationToTimespec prepares a timeout value\nfunc durationToTimespec(d time.Duration) unix.Timespec {\n\treturn unix.NsecToTimespec(d.Nanoseconds())\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build freebsd openbsd netbsd dragonfly\n\npackage fsnotify\n\nimport \"golang.org/x/sys/unix\"\n\nconst openMode = unix.O_NONBLOCK | unix.O_RDONLY\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build darwin\n\npackage fsnotify\n\nimport \"golang.org/x/sys/unix\"\n\n// note: this constant is not defined on BSD\nconst openMode = unix.O_EVTONLY\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/fsnotify/fsnotify/windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build windows\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Watcher watches a set of files, delivering events to a channel.\ntype Watcher struct {\n\tEvents   chan Event\n\tErrors   chan error\n\tisClosed bool           // Set to true when Close() is first called\n\tmu       sync.Mutex     // Map access\n\tport     syscall.Handle // Handle to completion port\n\twatches  watchMap       // Map of watches (key: i-number)\n\tinput    chan *input    // Inputs to the reader are sent on this channel\n\tquit     chan chan<- error\n}\n\n// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events.\nfunc NewWatcher() (*Watcher, error) {\n\tport, e := syscall.CreateIoCompletionPort(syscall.InvalidHandle, 0, 0, 0)\n\tif e != nil {\n\t\treturn nil, os.NewSyscallError(\"CreateIoCompletionPort\", e)\n\t}\n\tw := &Watcher{\n\t\tport:    port,\n\t\twatches: make(watchMap),\n\t\tinput:   make(chan *input, 1),\n\t\tEvents:  make(chan Event, 50),\n\t\tErrors:  make(chan error),\n\t\tquit:    make(chan chan<- error, 1),\n\t}\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// Close removes all watches and closes the events channel.\nfunc (w *Watcher) Close() error {\n\tif w.isClosed {\n\t\treturn nil\n\t}\n\tw.isClosed = true\n\n\t// Send \"quit\" message to the reader goroutine\n\tch := make(chan error)\n\tw.quit <- ch\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-ch\n}\n\n// Add starts watching the named file or directory (non-recursively).\nfunc (w *Watcher) Add(name string) error {\n\tif w.isClosed {\n\t\treturn errors.New(\"watcher already closed\")\n\t}\n\tin := &input{\n\t\top:    opAddWatch,\n\t\tpath:  filepath.Clean(name),\n\t\tflags: sysFSALLEVENTS,\n\t\treply: make(chan error),\n\t}\n\tw.input <- in\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-in.reply\n}\n\n// Remove stops watching the the named file or directory (non-recursively).\nfunc (w *Watcher) Remove(name string) error {\n\tin := &input{\n\t\top:    opRemoveWatch,\n\t\tpath:  filepath.Clean(name),\n\t\treply: make(chan error),\n\t}\n\tw.input <- in\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-in.reply\n}\n\nconst (\n\t// Options for AddWatch\n\tsysFSONESHOT = 0x80000000\n\tsysFSONLYDIR = 0x1000000\n\n\t// Events\n\tsysFSACCESS     = 0x1\n\tsysFSALLEVENTS  = 0xfff\n\tsysFSATTRIB     = 0x4\n\tsysFSCLOSE      = 0x18\n\tsysFSCREATE     = 0x100\n\tsysFSDELETE     = 0x200\n\tsysFSDELETESELF = 0x400\n\tsysFSMODIFY     = 0x2\n\tsysFSMOVE       = 0xc0\n\tsysFSMOVEDFROM  = 0x40\n\tsysFSMOVEDTO    = 0x80\n\tsysFSMOVESELF   = 0x800\n\n\t// Special events\n\tsysFSIGNORED   = 0x8000\n\tsysFSQOVERFLOW = 0x4000\n)\n\nfunc newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&sysFSCREATE == sysFSCREATE || mask&sysFSMOVEDTO == sysFSMOVEDTO {\n\t\te.Op |= Create\n\t}\n\tif mask&sysFSDELETE == sysFSDELETE || mask&sysFSDELETESELF == sysFSDELETESELF {\n\t\te.Op |= Remove\n\t}\n\tif mask&sysFSMODIFY == sysFSMODIFY {\n\t\te.Op |= Write\n\t}\n\tif mask&sysFSMOVE == sysFSMOVE || mask&sysFSMOVESELF == sysFSMOVESELF || mask&sysFSMOVEDFROM == sysFSMOVEDFROM {\n\t\te.Op |= Rename\n\t}\n\tif mask&sysFSATTRIB == sysFSATTRIB {\n\t\te.Op |= Chmod\n\t}\n\treturn e\n}\n\nconst (\n\topAddWatch = iota\n\topRemoveWatch\n)\n\nconst (\n\tprovisional uint64 = 1 << (32 + iota)\n)\n\ntype input struct {\n\top    int\n\tpath  string\n\tflags uint32\n\treply chan error\n}\n\ntype inode struct {\n\thandle syscall.Handle\n\tvolume uint32\n\tindex  uint64\n}\n\ntype watch struct {\n\tov     syscall.Overlapped\n\tino    *inode            // i-number\n\tpath   string            // Directory path\n\tmask   uint64            // Directory itself is being watched with these notify flags\n\tnames  map[string]uint64 // Map of names being watched and their notify flags\n\trename string            // Remembers the old name while renaming a file\n\tbuf    [4096]byte\n}\n\ntype indexMap map[uint64]*watch\ntype watchMap map[uint32]indexMap\n\nfunc (w *Watcher) wakeupReader() error {\n\te := syscall.PostQueuedCompletionStatus(w.port, 0, 0, nil)\n\tif e != nil {\n\t\treturn os.NewSyscallError(\"PostQueuedCompletionStatus\", e)\n\t}\n\treturn nil\n}\n\nfunc getDir(pathname string) (dir string, err error) {\n\tattr, e := syscall.GetFileAttributes(syscall.StringToUTF16Ptr(pathname))\n\tif e != nil {\n\t\treturn \"\", os.NewSyscallError(\"GetFileAttributes\", e)\n\t}\n\tif attr&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 {\n\t\tdir = pathname\n\t} else {\n\t\tdir, _ = filepath.Split(pathname)\n\t\tdir = filepath.Clean(dir)\n\t}\n\treturn\n}\n\nfunc getIno(path string) (ino *inode, err error) {\n\th, e := syscall.CreateFile(syscall.StringToUTF16Ptr(path),\n\t\tsyscall.FILE_LIST_DIRECTORY,\n\t\tsyscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,\n\t\tnil, syscall.OPEN_EXISTING,\n\t\tsyscall.FILE_FLAG_BACKUP_SEMANTICS|syscall.FILE_FLAG_OVERLAPPED, 0)\n\tif e != nil {\n\t\treturn nil, os.NewSyscallError(\"CreateFile\", e)\n\t}\n\tvar fi syscall.ByHandleFileInformation\n\tif e = syscall.GetFileInformationByHandle(h, &fi); e != nil {\n\t\tsyscall.CloseHandle(h)\n\t\treturn nil, os.NewSyscallError(\"GetFileInformationByHandle\", e)\n\t}\n\tino = &inode{\n\t\thandle: h,\n\t\tvolume: fi.VolumeSerialNumber,\n\t\tindex:  uint64(fi.FileIndexHigh)<<32 | uint64(fi.FileIndexLow),\n\t}\n\treturn ino, nil\n}\n\n// Must run within the I/O thread.\nfunc (m watchMap) get(ino *inode) *watch {\n\tif i := m[ino.volume]; i != nil {\n\t\treturn i[ino.index]\n\t}\n\treturn nil\n}\n\n// Must run within the I/O thread.\nfunc (m watchMap) set(ino *inode, watch *watch) {\n\ti := m[ino.volume]\n\tif i == nil {\n\t\ti = make(indexMap)\n\t\tm[ino.volume] = i\n\t}\n\ti[ino.index] = watch\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) addWatch(pathname string, flags uint64) error {\n\tdir, err := getDir(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif flags&sysFSONLYDIR != 0 && pathname != dir {\n\t\treturn nil\n\t}\n\tino, err := getIno(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\tw.mu.Lock()\n\twatchEntry := w.watches.get(ino)\n\tw.mu.Unlock()\n\tif watchEntry == nil {\n\t\tif _, e := syscall.CreateIoCompletionPort(ino.handle, w.port, 0, 0); e != nil {\n\t\t\tsyscall.CloseHandle(ino.handle)\n\t\t\treturn os.NewSyscallError(\"CreateIoCompletionPort\", e)\n\t\t}\n\t\twatchEntry = &watch{\n\t\t\tino:   ino,\n\t\t\tpath:  dir,\n\t\t\tnames: make(map[string]uint64),\n\t\t}\n\t\tw.mu.Lock()\n\t\tw.watches.set(ino, watchEntry)\n\t\tw.mu.Unlock()\n\t\tflags |= provisional\n\t} else {\n\t\tsyscall.CloseHandle(ino.handle)\n\t}\n\tif pathname == dir {\n\t\twatchEntry.mask |= flags\n\t} else {\n\t\twatchEntry.names[filepath.Base(pathname)] |= flags\n\t}\n\tif err = w.startRead(watchEntry); err != nil {\n\t\treturn err\n\t}\n\tif pathname == dir {\n\t\twatchEntry.mask &= ^provisional\n\t} else {\n\t\twatchEntry.names[filepath.Base(pathname)] &= ^provisional\n\t}\n\treturn nil\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) remWatch(pathname string) error {\n\tdir, err := getDir(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tino, err := getIno(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\tw.mu.Lock()\n\twatch := w.watches.get(ino)\n\tw.mu.Unlock()\n\tif watch == nil {\n\t\treturn fmt.Errorf(\"can't remove non-existent watch for: %s\", pathname)\n\t}\n\tif pathname == dir {\n\t\tw.sendEvent(watch.path, watch.mask&sysFSIGNORED)\n\t\twatch.mask = 0\n\t} else {\n\t\tname := filepath.Base(pathname)\n\t\tw.sendEvent(filepath.Join(watch.path, name), watch.names[name]&sysFSIGNORED)\n\t\tdelete(watch.names, name)\n\t}\n\treturn w.startRead(watch)\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) deleteWatch(watch *watch) {\n\tfor name, mask := range watch.names {\n\t\tif mask&provisional == 0 {\n\t\t\tw.sendEvent(filepath.Join(watch.path, name), mask&sysFSIGNORED)\n\t\t}\n\t\tdelete(watch.names, name)\n\t}\n\tif watch.mask != 0 {\n\t\tif watch.mask&provisional == 0 {\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSIGNORED)\n\t\t}\n\t\twatch.mask = 0\n\t}\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) startRead(watch *watch) error {\n\tif e := syscall.CancelIo(watch.ino.handle); e != nil {\n\t\tw.Errors <- os.NewSyscallError(\"CancelIo\", e)\n\t\tw.deleteWatch(watch)\n\t}\n\tmask := toWindowsFlags(watch.mask)\n\tfor _, m := range watch.names {\n\t\tmask |= toWindowsFlags(m)\n\t}\n\tif mask == 0 {\n\t\tif e := syscall.CloseHandle(watch.ino.handle); e != nil {\n\t\t\tw.Errors <- os.NewSyscallError(\"CloseHandle\", e)\n\t\t}\n\t\tw.mu.Lock()\n\t\tdelete(w.watches[watch.ino.volume], watch.ino.index)\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\te := syscall.ReadDirectoryChanges(watch.ino.handle, &watch.buf[0],\n\t\tuint32(unsafe.Sizeof(watch.buf)), false, mask, nil, &watch.ov, 0)\n\tif e != nil {\n\t\terr := os.NewSyscallError(\"ReadDirectoryChanges\", e)\n\t\tif e == syscall.ERROR_ACCESS_DENIED && watch.mask&provisional == 0 {\n\t\t\t// Watched directory was probably removed\n\t\t\tif w.sendEvent(watch.path, watch.mask&sysFSDELETESELF) {\n\t\t\t\tif watch.mask&sysFSONESHOT != 0 {\n\t\t\t\t\twatch.mask = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = nil\n\t\t}\n\t\tw.deleteWatch(watch)\n\t\tw.startRead(watch)\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// readEvents reads from the I/O completion port, converts the\n// received events into Event objects and sends them via the Events channel.\n// Entry point to the I/O thread.\nfunc (w *Watcher) readEvents() {\n\tvar (\n\t\tn, key uint32\n\t\tov     *syscall.Overlapped\n\t)\n\truntime.LockOSThread()\n\n\tfor {\n\t\te := syscall.GetQueuedCompletionStatus(w.port, &n, &key, &ov, syscall.INFINITE)\n\t\twatch := (*watch)(unsafe.Pointer(ov))\n\n\t\tif watch == nil {\n\t\t\tselect {\n\t\t\tcase ch := <-w.quit:\n\t\t\t\tw.mu.Lock()\n\t\t\t\tvar indexes []indexMap\n\t\t\t\tfor _, index := range w.watches {\n\t\t\t\t\tindexes = append(indexes, index)\n\t\t\t\t}\n\t\t\t\tw.mu.Unlock()\n\t\t\t\tfor _, index := range indexes {\n\t\t\t\t\tfor _, watch := range index {\n\t\t\t\t\t\tw.deleteWatch(watch)\n\t\t\t\t\t\tw.startRead(watch)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar err error\n\t\t\t\tif e := syscall.CloseHandle(w.port); e != nil {\n\t\t\t\t\terr = os.NewSyscallError(\"CloseHandle\", e)\n\t\t\t\t}\n\t\t\t\tclose(w.Events)\n\t\t\t\tclose(w.Errors)\n\t\t\t\tch <- err\n\t\t\t\treturn\n\t\t\tcase in := <-w.input:\n\t\t\t\tswitch in.op {\n\t\t\t\tcase opAddWatch:\n\t\t\t\t\tin.reply <- w.addWatch(in.path, uint64(in.flags))\n\t\t\t\tcase opRemoveWatch:\n\t\t\t\t\tin.reply <- w.remWatch(in.path)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch e {\n\t\tcase syscall.ERROR_MORE_DATA:\n\t\t\tif watch == nil {\n\t\t\t\tw.Errors <- errors.New(\"ERROR_MORE_DATA has unexpectedly null lpOverlapped buffer\")\n\t\t\t} else {\n\t\t\t\t// The i/o succeeded but the buffer is full.\n\t\t\t\t// In theory we should be building up a full packet.\n\t\t\t\t// In practice we can get away with just carrying on.\n\t\t\t\tn = uint32(unsafe.Sizeof(watch.buf))\n\t\t\t}\n\t\tcase syscall.ERROR_ACCESS_DENIED:\n\t\t\t// Watched directory was probably removed\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSDELETESELF)\n\t\t\tw.deleteWatch(watch)\n\t\t\tw.startRead(watch)\n\t\t\tcontinue\n\t\tcase syscall.ERROR_OPERATION_ABORTED:\n\t\t\t// CancelIo was called on this handle\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tw.Errors <- os.NewSyscallError(\"GetQueuedCompletionPort\", e)\n\t\t\tcontinue\n\t\tcase nil:\n\t\t}\n\n\t\tvar offset uint32\n\t\tfor {\n\t\t\tif n == 0 {\n\t\t\t\tw.Events <- newEvent(\"\", sysFSQOVERFLOW)\n\t\t\t\tw.Errors <- errors.New(\"short read in readEvents()\")\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Point \"raw\" to the event in the buffer\n\t\t\traw := (*syscall.FileNotifyInformation)(unsafe.Pointer(&watch.buf[offset]))\n\t\t\tbuf := (*[syscall.MAX_PATH]uint16)(unsafe.Pointer(&raw.FileName))\n\t\t\tname := syscall.UTF16ToString(buf[:raw.FileNameLength/2])\n\t\t\tfullname := filepath.Join(watch.path, name)\n\n\t\t\tvar mask uint64\n\t\t\tswitch raw.Action {\n\t\t\tcase syscall.FILE_ACTION_REMOVED:\n\t\t\t\tmask = sysFSDELETESELF\n\t\t\tcase syscall.FILE_ACTION_MODIFIED:\n\t\t\t\tmask = sysFSMODIFY\n\t\t\tcase syscall.FILE_ACTION_RENAMED_OLD_NAME:\n\t\t\t\twatch.rename = name\n\t\t\tcase syscall.FILE_ACTION_RENAMED_NEW_NAME:\n\t\t\t\tif watch.names[watch.rename] != 0 {\n\t\t\t\t\twatch.names[name] |= watch.names[watch.rename]\n\t\t\t\t\tdelete(watch.names, watch.rename)\n\t\t\t\t\tmask = sysFSMOVESELF\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsendNameEvent := func() {\n\t\t\t\tif w.sendEvent(fullname, watch.names[name]&mask) {\n\t\t\t\t\tif watch.names[name]&sysFSONESHOT != 0 {\n\t\t\t\t\t\tdelete(watch.names, name)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif raw.Action != syscall.FILE_ACTION_RENAMED_NEW_NAME {\n\t\t\t\tsendNameEvent()\n\t\t\t}\n\t\t\tif raw.Action == syscall.FILE_ACTION_REMOVED {\n\t\t\t\tw.sendEvent(fullname, watch.names[name]&sysFSIGNORED)\n\t\t\t\tdelete(watch.names, name)\n\t\t\t}\n\t\t\tif w.sendEvent(fullname, watch.mask&toFSnotifyFlags(raw.Action)) {\n\t\t\t\tif watch.mask&sysFSONESHOT != 0 {\n\t\t\t\t\twatch.mask = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\tif raw.Action == syscall.FILE_ACTION_RENAMED_NEW_NAME {\n\t\t\t\tfullname = filepath.Join(watch.path, watch.rename)\n\t\t\t\tsendNameEvent()\n\t\t\t}\n\n\t\t\t// Move to the next event in the buffer\n\t\t\tif raw.NextEntryOffset == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\toffset += raw.NextEntryOffset\n\n\t\t\t// Error!\n\t\t\tif offset >= n {\n\t\t\t\tw.Errors <- errors.New(\"Windows system assumed buffer larger than it is, events have likely been missed.\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif err := w.startRead(watch); err != nil {\n\t\t\tw.Errors <- err\n\t\t}\n\t}\n}\n\nfunc (w *Watcher) sendEvent(name string, mask uint64) bool {\n\tif mask == 0 {\n\t\treturn false\n\t}\n\tevent := newEvent(name, uint32(mask))\n\tselect {\n\tcase ch := <-w.quit:\n\t\tw.quit <- ch\n\tcase w.Events <- event:\n\t}\n\treturn true\n}\n\nfunc toWindowsFlags(mask uint64) uint32 {\n\tvar m uint32\n\tif mask&sysFSACCESS != 0 {\n\t\tm |= syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS\n\t}\n\tif mask&sysFSMODIFY != 0 {\n\t\tm |= syscall.FILE_NOTIFY_CHANGE_LAST_WRITE\n\t}\n\tif mask&sysFSATTRIB != 0 {\n\t\tm |= syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES\n\t}\n\tif mask&(sysFSMOVE|sysFSCREATE|sysFSDELETE) != 0 {\n\t\tm |= syscall.FILE_NOTIFY_CHANGE_FILE_NAME | syscall.FILE_NOTIFY_CHANGE_DIR_NAME\n\t}\n\treturn m\n}\n\nfunc toFSnotifyFlags(action uint32) uint64 {\n\tswitch action {\n\tcase syscall.FILE_ACTION_ADDED:\n\t\treturn sysFSCREATE\n\tcase syscall.FILE_ACTION_REMOVED:\n\t\treturn sysFSDELETE\n\tcase syscall.FILE_ACTION_MODIFIED:\n\t\treturn sysFSMODIFY\n\tcase syscall.FILE_ACTION_RENAMED_OLD_NAME:\n\t\treturn sysFSMOVEDFROM\n\tcase syscall.FILE_ACTION_RENAMED_NEW_NAME:\n\t\treturn sysFSMOVEDTO\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/.gitignore",
    "content": "y.output\r\n\r\n# ignore intellij files\r\n.idea\r\n*.iml\r\n*.ipr\r\n*.iws\r\n\r\n*.test\r\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/.travis.yml",
    "content": "sudo: false\n\nlanguage: go\n\ngo:\n  - 1.x\n  - tip\n\nbranches:\n  only:\n    - master\n\nscript: make test\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n     means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of version\n        1.1 or earlier of the License, but not also under the terms of a\n        Secondary License.\n\n1.6. “Executable Form”\n\n     means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n     means a work that combines Covered Software with other material, in a separate\n     file or files, that is not Covered Software.\n\n1.8. “License”\n\n     means this document.\n\n1.9. “Licensable”\n\n     means having the right to grant, to the maximum extent possible, whether at the\n     time of the initial grant or subsequently, any and all of the rights conveyed by\n     this License.\n\n1.10. “Modifications”\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to, deletion\n        from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n      means any patent claim(s), including without limitation, method, process,\n      and apparatus claims, in any patent Licensable by such Contributor that\n      would be infringed, but for the grant of the License, by the making,\n      using, selling, offering for sale, having made, import, or transfer of\n      either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n      means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, “You” includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, “control” means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or as\n        part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its Contributions\n        or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution become\n     effective for each Contribution on the date the Contributor first distributes\n     such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under this\n     License. No additional rights or licenses will be implied from the distribution\n     or licensing of Covered Software under this License. Notwithstanding Section\n     2.1(b) above, no patent license is granted by a Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party’s\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of its\n        Contributions.\n\n     This License does not grant any rights in the trademarks, service marks, or\n     logos of any Contributor (except as may be necessary to comply with the\n     notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this License\n     (see Section 10.2) or under the terms of a Secondary License (if permitted\n     under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its Contributions\n     are its original creation(s) or it has sufficient rights to grant the\n     rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under applicable\n     copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under the\n     terms of this License. You must inform recipients that the Source Code Form\n     of the Covered Software is governed by the terms of this License, and how\n     they can obtain a copy of this License. You may not attempt to alter or\n     restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this License,\n        or sublicense it under different terms, provided that the license for\n        the Executable Form does not attempt to limit or alter the recipients’\n        rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for the\n     Covered Software. If the Larger Work is a combination of Covered Software\n     with a work governed by one or more Secondary Licenses, and the Covered\n     Software is not Incompatible With Secondary Licenses, this License permits\n     You to additionally distribute such Covered Software under the terms of\n     such Secondary License(s), so that the recipient of the Larger Work may, at\n     their option, further distribute the Covered Software under the terms of\n     either this License or such Secondary License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices (including\n     copyright notices, patent notices, disclaimers of warranty, or limitations\n     of liability) contained within the Source Code Form of the Covered\n     Software, except that You may alter any license notices to the extent\n     required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on behalf\n     of any Contributor. You must make it absolutely clear that any such\n     warranty, support, indemnity, or liability obligation is offered by You\n     alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute, judicial\n   order, or regulation then You must: (a) comply with the terms of this License\n   to the maximum extent possible; and (b) describe the limitations and the code\n   they affect. Such description must be placed in a text file included with all\n   distributions of the Covered Software under this License. Except to the\n   extent prohibited by statute or regulation, such description must be\n   sufficiently detailed for a recipient of ordinary skill to be able to\n   understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n     if such Contributor fails to notify You of the non-compliance by some\n     reasonable means prior to 60 days after You have come back into compliance.\n     Moreover, Your grants from a particular Contributor are reinstated on an\n     ongoing basis if such Contributor notifies You of the non-compliance by\n     some reasonable means, this is the first time You have received notice of\n     non-compliance with this License from such Contributor, and You become\n     compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions, counter-claims,\n     and cross-claims) alleging that a Contributor Version directly or\n     indirectly infringes any patent, then the rights granted to You by any and\n     all Contributors for the Covered Software under Section 2.1 of this License\n     shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an “as is” basis, without\n   warranty of any kind, either expressed, implied, or statutory, including,\n   without limitation, warranties that the Covered Software is free of defects,\n   merchantable, fit for a particular purpose or non-infringing. The entire\n   risk as to the quality and performance of the Covered Software is with You.\n   Should any Covered Software prove defective in any respect, You (not any\n   Contributor) assume the cost of any necessary servicing, repair, or\n   correction. This disclaimer of warranty constitutes an essential part of this\n   License. No use of  any Covered Software is authorized under this License\n   except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from such\n   party’s negligence to the extent applicable law prohibits such limitation.\n   Some jurisdictions do not allow the exclusion or limitation of incidental or\n   consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts of\n   a jurisdiction where the defendant maintains its principal place of business\n   and such litigation shall be governed by laws of that jurisdiction, without\n   reference to its conflict-of-law provisions. Nothing in this Section shall\n   prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject matter\n   hereof. If any provision of this License is held to be unenforceable, such\n   provision shall be reformed only to the extent necessary to make it\n   enforceable. Any law or regulation which provides that the language of a\n   contract shall be construed against the drafter shall not be used to construe\n   this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version of\n      the License under which You originally received the Covered Software, or\n      under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a modified\n      version of this License if you rename the license and remove any\n      references to the name of the license steward (except to note that such\n      modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n      If You choose to distribute Source Code Form that is Incompatible With\n      Secondary Licenses under the terms of this version of the License, the\n      notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n      This Source Code Form is “Incompatible\n      With Secondary Licenses”, as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/Makefile",
    "content": "TEST?=./...\r\n\r\ndefault: test\r\n\r\nfmt: generate\r\n\tgo fmt ./...\r\n\r\ntest: generate\r\n\tgo get -t ./...\r\n\tgo test $(TEST) $(TESTARGS)\r\n\r\ngenerate:\r\n\tgo generate ./...\r\n\r\nupdatedeps:\r\n\tgo get -u golang.org/x/tools/cmd/stringer\r\n\r\n.PHONY: default generate test updatedeps\r\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/README.md",
    "content": "# HCL\n\n[![GoDoc](https://godoc.org/github.com/hashicorp/hcl?status.png)](https://godoc.org/github.com/hashicorp/hcl) [![Build Status](https://travis-ci.org/hashicorp/hcl.svg?branch=master)](https://travis-ci.org/hashicorp/hcl)\n\nHCL (HashiCorp Configuration Language) is a configuration language built\nby HashiCorp. The goal of HCL is to build a structured configuration language\nthat is both human and machine friendly for use with command-line tools, but\nspecifically targeted towards DevOps tools, servers, etc.\n\nHCL is also fully JSON compatible. That is, JSON can be used as completely\nvalid input to a system expecting HCL. This helps makes systems\ninteroperable with other systems.\n\nHCL is heavily inspired by\n[libucl](https://github.com/vstakhov/libucl),\nnginx configuration, and others similar.\n\n## Why?\n\nA common question when viewing HCL is to ask the question: why not\nJSON, YAML, etc.?\n\nPrior to HCL, the tools we built at [HashiCorp](http://www.hashicorp.com)\nused a variety of configuration languages from full programming languages\nsuch as Ruby to complete data structure languages such as JSON. What we\nlearned is that some people wanted human-friendly configuration languages\nand some people wanted machine-friendly languages.\n\nJSON fits a nice balance in this, but is fairly verbose and most\nimportantly doesn't support comments. With YAML, we found that beginners\nhad a really hard time determining what the actual structure was, and\nended up guessing more often than not whether to use a hyphen, colon, etc.\nin order to represent some configuration key.\n\nFull programming languages such as Ruby enable complex behavior\na configuration language shouldn't usually allow, and also forces\npeople to learn some set of Ruby.\n\nBecause of this, we decided to create our own configuration language\nthat is JSON-compatible. Our configuration language (HCL) is designed\nto be written and modified by humans. The API for HCL allows JSON\nas an input so that it is also machine-friendly (machines can generate\nJSON instead of trying to generate HCL).\n\nOur goal with HCL is not to alienate other configuration languages.\nIt is instead to provide HCL as a specialized language for our tools,\nand JSON as the interoperability layer.\n\n## Syntax\n\nFor a complete grammar, please see the parser itself. A high-level overview\nof the syntax and grammar is listed here.\n\n  * Single line comments start with `#` or `//`\n\n  * Multi-line comments are wrapped in `/*` and `*/`. Nested block comments\n    are not allowed. A multi-line comment (also known as a block comment)\n    terminates at the first `*/` found.\n\n  * Values are assigned with the syntax `key = value` (whitespace doesn't\n    matter). The value can be any primitive: a string, number, boolean,\n    object, or list.\n\n  * Strings are double-quoted and can contain any UTF-8 characters.\n    Example: `\"Hello, World\"`\n\n  * Multi-line strings start with `<<EOF` at the end of a line, and end\n    with `EOF` on its own line ([here documents](https://en.wikipedia.org/wiki/Here_document)).\n    Any text may be used in place of `EOF`. Example:\n```\n<<FOO\nhello\nworld\nFOO\n```\n\n  * Numbers are assumed to be base 10. If you prefix a number with 0x,\n    it is treated as a hexadecimal. If it is prefixed with 0, it is\n    treated as an octal. Numbers can be in scientific notation: \"1e10\".\n\n  * Boolean values: `true`, `false`\n\n  * Arrays can be made by wrapping it in `[]`. Example:\n    `[\"foo\", \"bar\", 42]`. Arrays can contain primitives,\n    other arrays, and objects. As an alternative, lists\n    of objects can be created with repeated blocks, using\n    this structure:\n\n    ```hcl\n    service {\n        key = \"value\"\n    }\n\n    service {\n        key = \"value\"\n    }\n    ```\n\nObjects and nested objects are created using the structure shown below:\n\n```\nvariable \"ami\" {\n    description = \"the AMI to use\"\n}\n```\nThis would be equivalent to the following json:\n``` json\n{\n  \"variable\": {\n      \"ami\": {\n          \"description\": \"the AMI to use\"\n        }\n    }\n}\n```\n\n## Thanks\n\nThanks to:\n\n  * [@vstakhov](https://github.com/vstakhov) - The original libucl parser\n    and syntax that HCL was based off of.\n\n  * [@fatih](https://github.com/fatih) - The rewritten HCL parser\n    in pure Go (no goyacc) and support for a printer.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/appveyor.yml",
    "content": "version: \"build-{branch}-{build}\"\nimage: Visual Studio 2015\nclone_folder: c:\\gopath\\src\\github.com\\hashicorp\\hcl\nenvironment:\n  GOPATH: c:\\gopath\ninit:\n  - git config --global core.autocrlf false\ninstall:\n- cmd: >-\n    echo %Path%\n\n    go version\n\n    go env\n\n    go get -t ./...\n\nbuild_script:\n- cmd: go test -v ./...\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/decoder.go",
    "content": "package hcl\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/hashicorp/hcl/hcl/parser\"\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// This is the tag to use with structures to have settings for HCL\nconst tagName = \"hcl\"\n\nvar (\n\t// nodeType holds a reference to the type of ast.Node\n\tnodeType reflect.Type = findNodeType()\n)\n\n// Unmarshal accepts a byte slice as input and writes the\n// data to the value pointed to by v.\nfunc Unmarshal(bs []byte, v interface{}) error {\n\troot, err := parse(bs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn DecodeObject(v, root)\n}\n\n// Decode reads the given input and decodes it into the structure\n// given by `out`.\nfunc Decode(out interface{}, in string) error {\n\tobj, err := Parse(in)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn DecodeObject(out, obj)\n}\n\n// DecodeObject is a lower-level version of Decode. It decodes a\n// raw Object into the given output.\nfunc DecodeObject(out interface{}, n ast.Node) error {\n\tval := reflect.ValueOf(out)\n\tif val.Kind() != reflect.Ptr {\n\t\treturn errors.New(\"result must be a pointer\")\n\t}\n\n\t// If we have the file, we really decode the root node\n\tif f, ok := n.(*ast.File); ok {\n\t\tn = f.Node\n\t}\n\n\tvar d decoder\n\treturn d.decode(\"root\", n, val.Elem())\n}\n\ntype decoder struct {\n\tstack []reflect.Kind\n}\n\nfunc (d *decoder) decode(name string, node ast.Node, result reflect.Value) error {\n\tk := result\n\n\t// If we have an interface with a valid value, we use that\n\t// for the check.\n\tif result.Kind() == reflect.Interface {\n\t\telem := result.Elem()\n\t\tif elem.IsValid() {\n\t\t\tk = elem\n\t\t}\n\t}\n\n\t// Push current onto stack unless it is an interface.\n\tif k.Kind() != reflect.Interface {\n\t\td.stack = append(d.stack, k.Kind())\n\n\t\t// Schedule a pop\n\t\tdefer func() {\n\t\t\td.stack = d.stack[:len(d.stack)-1]\n\t\t}()\n\t}\n\n\tswitch k.Kind() {\n\tcase reflect.Bool:\n\t\treturn d.decodeBool(name, node, result)\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn d.decodeFloat(name, node, result)\n\tcase reflect.Int, reflect.Int32, reflect.Int64:\n\t\treturn d.decodeInt(name, node, result)\n\tcase reflect.Interface:\n\t\t// When we see an interface, we make our own thing\n\t\treturn d.decodeInterface(name, node, result)\n\tcase reflect.Map:\n\t\treturn d.decodeMap(name, node, result)\n\tcase reflect.Ptr:\n\t\treturn d.decodePtr(name, node, result)\n\tcase reflect.Slice:\n\t\treturn d.decodeSlice(name, node, result)\n\tcase reflect.String:\n\t\treturn d.decodeString(name, node, result)\n\tcase reflect.Struct:\n\t\treturn d.decodeStruct(name, node, result)\n\tdefault:\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: unknown kind to decode into: %s\", name, k.Kind()),\n\t\t}\n\t}\n}\n\nfunc (d *decoder) decodeBool(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tif n.Token.Type == token.BOOL {\n\t\t\tv, err := strconv.ParseBool(n.Token.Text)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tresult.Set(reflect.ValueOf(v))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeFloat(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tif n.Token.Type == token.FLOAT || n.Token.Type == token.NUMBER {\n\t\t\tv, err := strconv.ParseFloat(n.Token.Text, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tresult.Set(reflect.ValueOf(v).Convert(result.Type()))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeInt(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tswitch n.Token.Type {\n\t\tcase token.NUMBER:\n\t\t\tv, err := strconv.ParseInt(n.Token.Text, 0, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif result.Kind() == reflect.Interface {\n\t\t\t\tresult.Set(reflect.ValueOf(int(v)))\n\t\t\t} else {\n\t\t\t\tresult.SetInt(v)\n\t\t\t}\n\t\t\treturn nil\n\t\tcase token.STRING:\n\t\t\tv, err := strconv.ParseInt(n.Token.Value().(string), 0, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif result.Kind() == reflect.Interface {\n\t\t\t\tresult.Set(reflect.ValueOf(int(v)))\n\t\t\t} else {\n\t\t\t\tresult.SetInt(v)\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeInterface(name string, node ast.Node, result reflect.Value) error {\n\t// When we see an ast.Node, we retain the value to enable deferred decoding.\n\t// Very useful in situations where we want to preserve ast.Node information\n\t// like Pos\n\tif result.Type() == nodeType && result.CanSet() {\n\t\tresult.Set(reflect.ValueOf(node))\n\t\treturn nil\n\t}\n\n\tvar set reflect.Value\n\tredecode := true\n\n\t// For testing types, ObjectType should just be treated as a list. We\n\t// set this to a temporary var because we want to pass in the real node.\n\ttestNode := node\n\tif ot, ok := node.(*ast.ObjectType); ok {\n\t\ttestNode = ot.List\n\t}\n\n\tswitch n := testNode.(type) {\n\tcase *ast.ObjectList:\n\t\t// If we're at the root or we're directly within a slice, then we\n\t\t// decode objects into map[string]interface{}, otherwise we decode\n\t\t// them into lists.\n\t\tif len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice {\n\t\t\tvar temp map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeMap(\n\t\t\t\treflect.MapOf(\n\t\t\t\t\treflect.TypeOf(\"\"),\n\t\t\t\t\ttempVal.Type().Elem()))\n\n\t\t\tset = result\n\t\t} else {\n\t\t\tvar temp []map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeSlice(\n\t\t\t\treflect.SliceOf(tempVal.Type().Elem()), 0, len(n.Items))\n\t\t\tset = result\n\t\t}\n\tcase *ast.ObjectType:\n\t\t// If we're at the root or we're directly within a slice, then we\n\t\t// decode objects into map[string]interface{}, otherwise we decode\n\t\t// them into lists.\n\t\tif len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice {\n\t\t\tvar temp map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeMap(\n\t\t\t\treflect.MapOf(\n\t\t\t\t\treflect.TypeOf(\"\"),\n\t\t\t\t\ttempVal.Type().Elem()))\n\n\t\t\tset = result\n\t\t} else {\n\t\t\tvar temp []map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeSlice(\n\t\t\t\treflect.SliceOf(tempVal.Type().Elem()), 0, 1)\n\t\t\tset = result\n\t\t}\n\tcase *ast.ListType:\n\t\tvar temp []interface{}\n\t\ttempVal := reflect.ValueOf(temp)\n\t\tresult := reflect.MakeSlice(\n\t\t\treflect.SliceOf(tempVal.Type().Elem()), 0, 0)\n\t\tset = result\n\tcase *ast.LiteralType:\n\t\tswitch n.Token.Type {\n\t\tcase token.BOOL:\n\t\t\tvar result bool\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(result)))\n\t\tcase token.FLOAT:\n\t\t\tvar result float64\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(result)))\n\t\tcase token.NUMBER:\n\t\t\tvar result int\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(result)))\n\t\tcase token.STRING, token.HEREDOC:\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(\"\")))\n\t\tdefault:\n\t\t\treturn &parser.PosError{\n\t\t\t\tPos: node.Pos(),\n\t\t\t\tErr: fmt.Errorf(\"%s: cannot decode into interface: %T\", name, node),\n\t\t\t}\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"%s: cannot decode into interface: %T\",\n\t\t\tname, node)\n\t}\n\n\t// Set the result to what its supposed to be, then reset\n\t// result so we don't reflect into this method anymore.\n\tresult.Set(set)\n\n\tif redecode {\n\t\t// Revisit the node so that we can use the newly instantiated\n\t\t// thing and populate it.\n\t\tif err := d.decode(name, node, result); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *decoder) decodeMap(name string, node ast.Node, result reflect.Value) error {\n\tif item, ok := node.(*ast.ObjectItem); ok {\n\t\tnode = &ast.ObjectList{Items: []*ast.ObjectItem{item}}\n\t}\n\n\tif ot, ok := node.(*ast.ObjectType); ok {\n\t\tnode = ot.List\n\t}\n\n\tn, ok := node.(*ast.ObjectList)\n\tif !ok {\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: not an object type for map (%T)\", name, node),\n\t\t}\n\t}\n\n\t// If we have an interface, then we can address the interface,\n\t// but not the slice itself, so get the element but set the interface\n\tset := result\n\tif result.Kind() == reflect.Interface {\n\t\tresult = result.Elem()\n\t}\n\n\tresultType := result.Type()\n\tresultElemType := resultType.Elem()\n\tresultKeyType := resultType.Key()\n\tif resultKeyType.Kind() != reflect.String {\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: map must have string keys\", name),\n\t\t}\n\t}\n\n\t// Make a map if it is nil\n\tresultMap := result\n\tif result.IsNil() {\n\t\tresultMap = reflect.MakeMap(\n\t\t\treflect.MapOf(resultKeyType, resultElemType))\n\t}\n\n\t// Go through each element and decode it.\n\tdone := make(map[string]struct{})\n\tfor _, item := range n.Items {\n\t\tif item.Val == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// github.com/hashicorp/terraform/issue/5740\n\t\tif len(item.Keys) == 0 {\n\t\t\treturn &parser.PosError{\n\t\t\t\tPos: node.Pos(),\n\t\t\t\tErr: fmt.Errorf(\"%s: map must have string keys\", name),\n\t\t\t}\n\t\t}\n\n\t\t// Get the key we're dealing with, which is the first item\n\t\tkeyStr := item.Keys[0].Token.Value().(string)\n\n\t\t// If we've already processed this key, then ignore it\n\t\tif _, ok := done[keyStr]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Determine the value. If we have more than one key, then we\n\t\t// get the objectlist of only these keys.\n\t\titemVal := item.Val\n\t\tif len(item.Keys) > 1 {\n\t\t\titemVal = n.Filter(keyStr)\n\t\t\tdone[keyStr] = struct{}{}\n\t\t}\n\n\t\t// Make the field name\n\t\tfieldName := fmt.Sprintf(\"%s.%s\", name, keyStr)\n\n\t\t// Get the key/value as reflection values\n\t\tkey := reflect.ValueOf(keyStr)\n\t\tval := reflect.Indirect(reflect.New(resultElemType))\n\n\t\t// If we have a pre-existing value in the map, use that\n\t\toldVal := resultMap.MapIndex(key)\n\t\tif oldVal.IsValid() {\n\t\t\tval.Set(oldVal)\n\t\t}\n\n\t\t// Decode!\n\t\tif err := d.decode(fieldName, itemVal, val); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Set the value on the map\n\t\tresultMap.SetMapIndex(key, val)\n\t}\n\n\t// Set the final map if we can\n\tset.Set(resultMap)\n\treturn nil\n}\n\nfunc (d *decoder) decodePtr(name string, node ast.Node, result reflect.Value) error {\n\t// Create an element of the concrete (non pointer) type and decode\n\t// into that. Then set the value of the pointer to this type.\n\tresultType := result.Type()\n\tresultElemType := resultType.Elem()\n\tval := reflect.New(resultElemType)\n\tif err := d.decode(name, node, reflect.Indirect(val)); err != nil {\n\t\treturn err\n\t}\n\n\tresult.Set(val)\n\treturn nil\n}\n\nfunc (d *decoder) decodeSlice(name string, node ast.Node, result reflect.Value) error {\n\t// If we have an interface, then we can address the interface,\n\t// but not the slice itself, so get the element but set the interface\n\tset := result\n\tif result.Kind() == reflect.Interface {\n\t\tresult = result.Elem()\n\t}\n\t// Create the slice if it isn't nil\n\tresultType := result.Type()\n\tresultElemType := resultType.Elem()\n\tif result.IsNil() {\n\t\tresultSliceType := reflect.SliceOf(resultElemType)\n\t\tresult = reflect.MakeSlice(\n\t\t\tresultSliceType, 0, 0)\n\t}\n\n\t// Figure out the items we'll be copying into the slice\n\tvar items []ast.Node\n\tswitch n := node.(type) {\n\tcase *ast.ObjectList:\n\t\titems = make([]ast.Node, len(n.Items))\n\t\tfor i, item := range n.Items {\n\t\t\titems[i] = item\n\t\t}\n\tcase *ast.ObjectType:\n\t\titems = []ast.Node{n}\n\tcase *ast.ListType:\n\t\titems = n.List\n\tdefault:\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"unknown slice type: %T\", node),\n\t\t}\n\t}\n\n\tfor i, item := range items {\n\t\tfieldName := fmt.Sprintf(\"%s[%d]\", name, i)\n\n\t\t// Decode\n\t\tval := reflect.Indirect(reflect.New(resultElemType))\n\n\t\t// if item is an object that was decoded from ambiguous JSON and\n\t\t// flattened, make sure it's expanded if it needs to decode into a\n\t\t// defined structure.\n\t\titem := expandObject(item, val)\n\n\t\tif err := d.decode(fieldName, item, val); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Append it onto the slice\n\t\tresult = reflect.Append(result, val)\n\t}\n\n\tset.Set(result)\n\treturn nil\n}\n\n// expandObject detects if an ambiguous JSON object was flattened to a List which\n// should be decoded into a struct, and expands the ast to properly deocode.\nfunc expandObject(node ast.Node, result reflect.Value) ast.Node {\n\titem, ok := node.(*ast.ObjectItem)\n\tif !ok {\n\t\treturn node\n\t}\n\n\telemType := result.Type()\n\n\t// our target type must be a struct\n\tswitch elemType.Kind() {\n\tcase reflect.Ptr:\n\t\tswitch elemType.Elem().Kind() {\n\t\tcase reflect.Struct:\n\t\t\t//OK\n\t\tdefault:\n\t\t\treturn node\n\t\t}\n\tcase reflect.Struct:\n\t\t//OK\n\tdefault:\n\t\treturn node\n\t}\n\n\t// A list value will have a key and field name. If it had more fields,\n\t// it wouldn't have been flattened.\n\tif len(item.Keys) != 2 {\n\t\treturn node\n\t}\n\n\tkeyToken := item.Keys[0].Token\n\titem.Keys = item.Keys[1:]\n\n\t// we need to un-flatten the ast enough to decode\n\tnewNode := &ast.ObjectItem{\n\t\tKeys: []*ast.ObjectKey{\n\t\t\t&ast.ObjectKey{\n\t\t\t\tToken: keyToken,\n\t\t\t},\n\t\t},\n\t\tVal: &ast.ObjectType{\n\t\t\tList: &ast.ObjectList{\n\t\t\t\tItems: []*ast.ObjectItem{item},\n\t\t\t},\n\t\t},\n\t}\n\n\treturn newNode\n}\n\nfunc (d *decoder) decodeString(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tswitch n.Token.Type {\n\t\tcase token.NUMBER:\n\t\t\tresult.Set(reflect.ValueOf(n.Token.Text).Convert(result.Type()))\n\t\t\treturn nil\n\t\tcase token.STRING, token.HEREDOC:\n\t\t\tresult.Set(reflect.ValueOf(n.Token.Value()).Convert(result.Type()))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type for string %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeStruct(name string, node ast.Node, result reflect.Value) error {\n\tvar item *ast.ObjectItem\n\tif it, ok := node.(*ast.ObjectItem); ok {\n\t\titem = it\n\t\tnode = it.Val\n\t}\n\n\tif ot, ok := node.(*ast.ObjectType); ok {\n\t\tnode = ot.List\n\t}\n\n\t// Handle the special case where the object itself is a literal. Previously\n\t// the yacc parser would always ensure top-level elements were arrays. The new\n\t// parser does not make the same guarantees, thus we need to convert any\n\t// top-level literal elements into a list.\n\tif _, ok := node.(*ast.LiteralType); ok && item != nil {\n\t\tnode = &ast.ObjectList{Items: []*ast.ObjectItem{item}}\n\t}\n\n\tlist, ok := node.(*ast.ObjectList)\n\tif !ok {\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: not an object type for struct (%T)\", name, node),\n\t\t}\n\t}\n\n\t// This slice will keep track of all the structs we'll be decoding.\n\t// There can be more than one struct if there are embedded structs\n\t// that are squashed.\n\tstructs := make([]reflect.Value, 1, 5)\n\tstructs[0] = result\n\n\t// Compile the list of all the fields that we're going to be decoding\n\t// from all the structs.\n\ttype field struct {\n\t\tfield reflect.StructField\n\t\tval   reflect.Value\n\t}\n\tfields := []field{}\n\tfor len(structs) > 0 {\n\t\tstructVal := structs[0]\n\t\tstructs = structs[1:]\n\n\t\tstructType := structVal.Type()\n\t\tfor i := 0; i < structType.NumField(); i++ {\n\t\t\tfieldType := structType.Field(i)\n\t\t\ttagParts := strings.Split(fieldType.Tag.Get(tagName), \",\")\n\n\t\t\t// Ignore fields with tag name \"-\"\n\t\t\tif tagParts[0] == \"-\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif fieldType.Anonymous {\n\t\t\t\tfieldKind := fieldType.Type.Kind()\n\t\t\t\tif fieldKind != reflect.Struct {\n\t\t\t\t\treturn &parser.PosError{\n\t\t\t\t\t\tPos: node.Pos(),\n\t\t\t\t\t\tErr: fmt.Errorf(\"%s: unsupported type to struct: %s\",\n\t\t\t\t\t\t\tfieldType.Name, fieldKind),\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We have an embedded field. We \"squash\" the fields down\n\t\t\t\t// if specified in the tag.\n\t\t\t\tsquash := false\n\t\t\t\tfor _, tag := range tagParts[1:] {\n\t\t\t\t\tif tag == \"squash\" {\n\t\t\t\t\t\tsquash = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif squash {\n\t\t\t\t\tstructs = append(\n\t\t\t\t\t\tstructs, result.FieldByName(fieldType.Name))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Normal struct field, store it away\n\t\t\tfields = append(fields, field{fieldType, structVal.Field(i)})\n\t\t}\n\t}\n\n\tusedKeys := make(map[string]struct{})\n\tdecodedFields := make([]string, 0, len(fields))\n\tdecodedFieldsVal := make([]reflect.Value, 0)\n\tunusedKeysVal := make([]reflect.Value, 0)\n\tfor _, f := range fields {\n\t\tfield, fieldValue := f.field, f.val\n\t\tif !fieldValue.IsValid() {\n\t\t\t// This should never happen\n\t\t\tpanic(\"field is not valid\")\n\t\t}\n\n\t\t// If we can't set the field, then it is unexported or something,\n\t\t// and we just continue onwards.\n\t\tif !fieldValue.CanSet() {\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldName := field.Name\n\n\t\ttagValue := field.Tag.Get(tagName)\n\t\ttagParts := strings.SplitN(tagValue, \",\", 2)\n\t\tif len(tagParts) >= 2 {\n\t\t\tswitch tagParts[1] {\n\t\t\tcase \"decodedFields\":\n\t\t\t\tdecodedFieldsVal = append(decodedFieldsVal, fieldValue)\n\t\t\t\tcontinue\n\t\t\tcase \"key\":\n\t\t\t\tif item == nil {\n\t\t\t\t\treturn &parser.PosError{\n\t\t\t\t\t\tPos: node.Pos(),\n\t\t\t\t\t\tErr: fmt.Errorf(\"%s: %s asked for 'key', impossible\",\n\t\t\t\t\t\t\tname, fieldName),\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfieldValue.SetString(item.Keys[0].Token.Value().(string))\n\t\t\t\tcontinue\n\t\t\tcase \"unusedKeys\":\n\t\t\t\tunusedKeysVal = append(unusedKeysVal, fieldValue)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif tagParts[0] != \"\" {\n\t\t\tfieldName = tagParts[0]\n\t\t}\n\n\t\t// Determine the element we'll use to decode. If it is a single\n\t\t// match (only object with the field), then we decode it exactly.\n\t\t// If it is a prefix match, then we decode the matches.\n\t\tfilter := list.Filter(fieldName)\n\n\t\tprefixMatches := filter.Children()\n\t\tmatches := filter.Elem()\n\t\tif len(matches.Items) == 0 && len(prefixMatches.Items) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Track the used key\n\t\tusedKeys[fieldName] = struct{}{}\n\n\t\t// Create the field name and decode. We range over the elements\n\t\t// because we actually want the value.\n\t\tfieldName = fmt.Sprintf(\"%s.%s\", name, fieldName)\n\t\tif len(prefixMatches.Items) > 0 {\n\t\t\tif err := d.decode(fieldName, prefixMatches, fieldValue); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tfor _, match := range matches.Items {\n\t\t\tvar decodeNode ast.Node = match.Val\n\t\t\tif ot, ok := decodeNode.(*ast.ObjectType); ok {\n\t\t\t\tdecodeNode = &ast.ObjectList{Items: ot.List.Items}\n\t\t\t}\n\n\t\t\tif err := d.decode(fieldName, decodeNode, fieldValue); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tdecodedFields = append(decodedFields, field.Name)\n\t}\n\n\tif len(decodedFieldsVal) > 0 {\n\t\t// Sort it so that it is deterministic\n\t\tsort.Strings(decodedFields)\n\n\t\tfor _, v := range decodedFieldsVal {\n\t\t\tv.Set(reflect.ValueOf(decodedFields))\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// findNodeType returns the type of ast.Node\nfunc findNodeType() reflect.Type {\n\tvar nodeContainer struct {\n\t\tNode ast.Node\n\t}\n\tvalue := reflect.ValueOf(nodeContainer).FieldByName(\"Node\")\n\treturn value.Type()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/go.mod",
    "content": "module github.com/hashicorp/hcl\n\nrequire github.com/davecgh/go-spew v1.1.1\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/go.sum",
    "content": "github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/ast/ast.go",
    "content": "// Package ast declares the types used to represent syntax trees for HCL\n// (HashiCorp Configuration Language)\npackage ast\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// Node is an element in the abstract syntax tree.\ntype Node interface {\n\tnode()\n\tPos() token.Pos\n}\n\nfunc (File) node()         {}\nfunc (ObjectList) node()   {}\nfunc (ObjectKey) node()    {}\nfunc (ObjectItem) node()   {}\nfunc (Comment) node()      {}\nfunc (CommentGroup) node() {}\nfunc (ObjectType) node()   {}\nfunc (LiteralType) node()  {}\nfunc (ListType) node()     {}\n\n// File represents a single HCL file\ntype File struct {\n\tNode     Node            // usually a *ObjectList\n\tComments []*CommentGroup // list of all comments in the source\n}\n\nfunc (f *File) Pos() token.Pos {\n\treturn f.Node.Pos()\n}\n\n// ObjectList represents a list of ObjectItems. An HCL file itself is an\n// ObjectList.\ntype ObjectList struct {\n\tItems []*ObjectItem\n}\n\nfunc (o *ObjectList) Add(item *ObjectItem) {\n\to.Items = append(o.Items, item)\n}\n\n// Filter filters out the objects with the given key list as a prefix.\n//\n// The returned list of objects contain ObjectItems where the keys have\n// this prefix already stripped off. This might result in objects with\n// zero-length key lists if they have no children.\n//\n// If no matches are found, an empty ObjectList (non-nil) is returned.\nfunc (o *ObjectList) Filter(keys ...string) *ObjectList {\n\tvar result ObjectList\n\tfor _, item := range o.Items {\n\t\t// If there aren't enough keys, then ignore this\n\t\tif len(item.Keys) < len(keys) {\n\t\t\tcontinue\n\t\t}\n\n\t\tmatch := true\n\t\tfor i, key := range item.Keys[:len(keys)] {\n\t\t\tkey := key.Token.Value().(string)\n\t\t\tif key != keys[i] && !strings.EqualFold(key, keys[i]) {\n\t\t\t\tmatch = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !match {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Strip off the prefix from the children\n\t\tnewItem := *item\n\t\tnewItem.Keys = newItem.Keys[len(keys):]\n\t\tresult.Add(&newItem)\n\t}\n\n\treturn &result\n}\n\n// Children returns further nested objects (key length > 0) within this\n// ObjectList. This should be used with Filter to get at child items.\nfunc (o *ObjectList) Children() *ObjectList {\n\tvar result ObjectList\n\tfor _, item := range o.Items {\n\t\tif len(item.Keys) > 0 {\n\t\t\tresult.Add(item)\n\t\t}\n\t}\n\n\treturn &result\n}\n\n// Elem returns items in the list that are direct element assignments\n// (key length == 0). This should be used with Filter to get at elements.\nfunc (o *ObjectList) Elem() *ObjectList {\n\tvar result ObjectList\n\tfor _, item := range o.Items {\n\t\tif len(item.Keys) == 0 {\n\t\t\tresult.Add(item)\n\t\t}\n\t}\n\n\treturn &result\n}\n\nfunc (o *ObjectList) Pos() token.Pos {\n\t// always returns the uninitiliazed position\n\treturn o.Items[0].Pos()\n}\n\n// ObjectItem represents a HCL Object Item. An item is represented with a key\n// (or keys). It can be an assignment or an object (both normal and nested)\ntype ObjectItem struct {\n\t// keys is only one length long if it's of type assignment. If it's a\n\t// nested object it can be larger than one. In that case \"assign\" is\n\t// invalid as there is no assignments for a nested object.\n\tKeys []*ObjectKey\n\n\t// assign contains the position of \"=\", if any\n\tAssign token.Pos\n\n\t// val is the item itself. It can be an object,list, number, bool or a\n\t// string. If key length is larger than one, val can be only of type\n\t// Object.\n\tVal Node\n\n\tLeadComment *CommentGroup // associated lead comment\n\tLineComment *CommentGroup // associated line comment\n}\n\nfunc (o *ObjectItem) Pos() token.Pos {\n\t// I'm not entirely sure what causes this, but removing this causes\n\t// a test failure. We should investigate at some point.\n\tif len(o.Keys) == 0 {\n\t\treturn token.Pos{}\n\t}\n\n\treturn o.Keys[0].Pos()\n}\n\n// ObjectKeys are either an identifier or of type string.\ntype ObjectKey struct {\n\tToken token.Token\n}\n\nfunc (o *ObjectKey) Pos() token.Pos {\n\treturn o.Token.Pos\n}\n\n// LiteralType represents a literal of basic type. Valid types are:\n// token.NUMBER, token.FLOAT, token.BOOL and token.STRING\ntype LiteralType struct {\n\tToken token.Token\n\n\t// comment types, only used when in a list\n\tLeadComment *CommentGroup\n\tLineComment *CommentGroup\n}\n\nfunc (l *LiteralType) Pos() token.Pos {\n\treturn l.Token.Pos\n}\n\n// ListStatement represents a HCL List type\ntype ListType struct {\n\tLbrack token.Pos // position of \"[\"\n\tRbrack token.Pos // position of \"]\"\n\tList   []Node    // the elements in lexical order\n}\n\nfunc (l *ListType) Pos() token.Pos {\n\treturn l.Lbrack\n}\n\nfunc (l *ListType) Add(node Node) {\n\tl.List = append(l.List, node)\n}\n\n// ObjectType represents a HCL Object Type\ntype ObjectType struct {\n\tLbrace token.Pos   // position of \"{\"\n\tRbrace token.Pos   // position of \"}\"\n\tList   *ObjectList // the nodes in lexical order\n}\n\nfunc (o *ObjectType) Pos() token.Pos {\n\treturn o.Lbrace\n}\n\n// Comment node represents a single //, # style or /*- style commment\ntype Comment struct {\n\tStart token.Pos // position of / or #\n\tText  string\n}\n\nfunc (c *Comment) Pos() token.Pos {\n\treturn c.Start\n}\n\n// CommentGroup node represents a sequence of comments with no other tokens and\n// no empty lines between.\ntype CommentGroup struct {\n\tList []*Comment // len(List) > 0\n}\n\nfunc (c *CommentGroup) Pos() token.Pos {\n\treturn c.List[0].Pos()\n}\n\n//-------------------------------------------------------------------\n// GoStringer\n//-------------------------------------------------------------------\n\nfunc (o *ObjectKey) GoString() string  { return fmt.Sprintf(\"*%#v\", *o) }\nfunc (o *ObjectList) GoString() string { return fmt.Sprintf(\"*%#v\", *o) }\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/ast/walk.go",
    "content": "package ast\n\nimport \"fmt\"\n\n// WalkFunc describes a function to be called for each node during a Walk. The\n// returned node can be used to rewrite the AST. Walking stops the returned\n// bool is false.\ntype WalkFunc func(Node) (Node, bool)\n\n// Walk traverses an AST in depth-first order: It starts by calling fn(node);\n// node must not be nil. If fn returns true, Walk invokes fn recursively for\n// each of the non-nil children of node, followed by a call of fn(nil). The\n// returned node of fn can be used to rewrite the passed node to fn.\nfunc Walk(node Node, fn WalkFunc) Node {\n\trewritten, ok := fn(node)\n\tif !ok {\n\t\treturn rewritten\n\t}\n\n\tswitch n := node.(type) {\n\tcase *File:\n\t\tn.Node = Walk(n.Node, fn)\n\tcase *ObjectList:\n\t\tfor i, item := range n.Items {\n\t\t\tn.Items[i] = Walk(item, fn).(*ObjectItem)\n\t\t}\n\tcase *ObjectKey:\n\t\t// nothing to do\n\tcase *ObjectItem:\n\t\tfor i, k := range n.Keys {\n\t\t\tn.Keys[i] = Walk(k, fn).(*ObjectKey)\n\t\t}\n\n\t\tif n.Val != nil {\n\t\t\tn.Val = Walk(n.Val, fn)\n\t\t}\n\tcase *LiteralType:\n\t\t// nothing to do\n\tcase *ListType:\n\t\tfor i, l := range n.List {\n\t\t\tn.List[i] = Walk(l, fn)\n\t\t}\n\tcase *ObjectType:\n\t\tn.List = Walk(n.List, fn).(*ObjectList)\n\tdefault:\n\t\t// should we panic here?\n\t\tfmt.Printf(\"unknown type: %T\\n\", n)\n\t}\n\n\tfn(nil)\n\treturn rewritten\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/parser/error.go",
    "content": "package parser\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// PosError is a parse error that contains a position.\ntype PosError struct {\n\tPos token.Pos\n\tErr error\n}\n\nfunc (e *PosError) Error() string {\n\treturn fmt.Sprintf(\"At %s: %s\", e.Pos, e.Err)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go",
    "content": "// Package parser implements a parser for HCL (HashiCorp Configuration\n// Language)\npackage parser\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/hashicorp/hcl/hcl/scanner\"\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\ntype Parser struct {\n\tsc *scanner.Scanner\n\n\t// Last read token\n\ttok       token.Token\n\tcommaPrev token.Token\n\n\tcomments    []*ast.CommentGroup\n\tleadComment *ast.CommentGroup // last lead comment\n\tlineComment *ast.CommentGroup // last line comment\n\n\tenableTrace bool\n\tindent      int\n\tn           int // buffer size (max = 1)\n}\n\nfunc newParser(src []byte) *Parser {\n\treturn &Parser{\n\t\tsc: scanner.New(src),\n\t}\n}\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc Parse(src []byte) (*ast.File, error) {\n\t// normalize all line endings\n\t// since the scanner and output only work with \"\\n\" line endings, we may\n\t// end up with dangling \"\\r\" characters in the parsed data.\n\tsrc = bytes.Replace(src, []byte(\"\\r\\n\"), []byte(\"\\n\"), -1)\n\n\tp := newParser(src)\n\treturn p.Parse()\n}\n\nvar errEofToken = errors.New(\"EOF token found\")\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc (p *Parser) Parse() (*ast.File, error) {\n\tf := &ast.File{}\n\tvar err, scerr error\n\tp.sc.Error = func(pos token.Pos, msg string) {\n\t\tscerr = &PosError{Pos: pos, Err: errors.New(msg)}\n\t}\n\n\tf.Node, err = p.objectList(false)\n\tif scerr != nil {\n\t\treturn nil, scerr\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tf.Comments = p.comments\n\treturn f, nil\n}\n\n// objectList parses a list of items within an object (generally k/v pairs).\n// The parameter\" obj\" tells this whether to we are within an object (braces:\n// '{', '}') or just at the top level. If we're within an object, we end\n// at an RBRACE.\nfunc (p *Parser) objectList(obj bool) (*ast.ObjectList, error) {\n\tdefer un(trace(p, \"ParseObjectList\"))\n\tnode := &ast.ObjectList{}\n\n\tfor {\n\t\tif obj {\n\t\t\ttok := p.scan()\n\t\t\tp.unscan()\n\t\t\tif tok.Type == token.RBRACE {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tn, err := p.objectItem()\n\t\tif err == errEofToken {\n\t\t\tbreak // we are finished\n\t\t}\n\n\t\t// we don't return a nil node, because might want to use already\n\t\t// collected items.\n\t\tif err != nil {\n\t\t\treturn node, err\n\t\t}\n\n\t\tnode.Add(n)\n\n\t\t// object lists can be optionally comma-delimited e.g. when a list of maps\n\t\t// is being expressed, so a comma is allowed here - it's simply consumed\n\t\ttok := p.scan()\n\t\tif tok.Type != token.COMMA {\n\t\t\tp.unscan()\n\t\t}\n\t}\n\treturn node, nil\n}\n\nfunc (p *Parser) consumeComment() (comment *ast.Comment, endline int) {\n\tendline = p.tok.Pos.Line\n\n\t// count the endline if it's multiline comment, ie starting with /*\n\tif len(p.tok.Text) > 1 && p.tok.Text[1] == '*' {\n\t\t// don't use range here - no need to decode Unicode code points\n\t\tfor i := 0; i < len(p.tok.Text); i++ {\n\t\t\tif p.tok.Text[i] == '\\n' {\n\t\t\t\tendline++\n\t\t\t}\n\t\t}\n\t}\n\n\tcomment = &ast.Comment{Start: p.tok.Pos, Text: p.tok.Text}\n\tp.tok = p.sc.Scan()\n\treturn\n}\n\nfunc (p *Parser) consumeCommentGroup(n int) (comments *ast.CommentGroup, endline int) {\n\tvar list []*ast.Comment\n\tendline = p.tok.Pos.Line\n\n\tfor p.tok.Type == token.COMMENT && p.tok.Pos.Line <= endline+n {\n\t\tvar comment *ast.Comment\n\t\tcomment, endline = p.consumeComment()\n\t\tlist = append(list, comment)\n\t}\n\n\t// add comment group to the comments list\n\tcomments = &ast.CommentGroup{List: list}\n\tp.comments = append(p.comments, comments)\n\n\treturn\n}\n\n// objectItem parses a single object item\nfunc (p *Parser) objectItem() (*ast.ObjectItem, error) {\n\tdefer un(trace(p, \"ParseObjectItem\"))\n\n\tkeys, err := p.objectKey()\n\tif len(keys) > 0 && err == errEofToken {\n\t\t// We ignore eof token here since it is an error if we didn't\n\t\t// receive a value (but we did receive a key) for the item.\n\t\terr = nil\n\t}\n\tif len(keys) > 0 && err != nil && p.tok.Type == token.RBRACE {\n\t\t// This is a strange boolean statement, but what it means is:\n\t\t// We have keys with no value, and we're likely in an object\n\t\t// (since RBrace ends an object). For this, we set err to nil so\n\t\t// we continue and get the error below of having the wrong value\n\t\t// type.\n\t\terr = nil\n\n\t\t// Reset the token type so we don't think it completed fine. See\n\t\t// objectType which uses p.tok.Type to check if we're done with\n\t\t// the object.\n\t\tp.tok.Type = token.EOF\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\to := &ast.ObjectItem{\n\t\tKeys: keys,\n\t}\n\n\tif p.leadComment != nil {\n\t\to.LeadComment = p.leadComment\n\t\tp.leadComment = nil\n\t}\n\n\tswitch p.tok.Type {\n\tcase token.ASSIGN:\n\t\to.Assign = p.tok.Pos\n\t\to.Val, err = p.object()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tcase token.LBRACE:\n\t\to.Val, err = p.objectType()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tdefault:\n\t\tkeyStr := make([]string, 0, len(keys))\n\t\tfor _, k := range keys {\n\t\t\tkeyStr = append(keyStr, k.Token.Text)\n\t\t}\n\n\t\treturn nil, &PosError{\n\t\t\tPos: p.tok.Pos,\n\t\t\tErr: fmt.Errorf(\n\t\t\t\t\"key '%s' expected start of object ('{') or assignment ('=')\",\n\t\t\t\tstrings.Join(keyStr, \" \")),\n\t\t}\n\t}\n\n\t// key=#comment\n\t// val\n\tif p.lineComment != nil {\n\t\to.LineComment, p.lineComment = p.lineComment, nil\n\t}\n\n\t// do a look-ahead for line comment\n\tp.scan()\n\tif len(keys) > 0 && o.Val.Pos().Line == keys[0].Pos().Line && p.lineComment != nil {\n\t\to.LineComment = p.lineComment\n\t\tp.lineComment = nil\n\t}\n\tp.unscan()\n\treturn o, nil\n}\n\n// objectKey parses an object key and returns a ObjectKey AST\nfunc (p *Parser) objectKey() ([]*ast.ObjectKey, error) {\n\tkeyCount := 0\n\tkeys := make([]*ast.ObjectKey, 0)\n\n\tfor {\n\t\ttok := p.scan()\n\t\tswitch tok.Type {\n\t\tcase token.EOF:\n\t\t\t// It is very important to also return the keys here as well as\n\t\t\t// the error. This is because we need to be able to tell if we\n\t\t\t// did parse keys prior to finding the EOF, or if we just found\n\t\t\t// a bare EOF.\n\t\t\treturn keys, errEofToken\n\t\tcase token.ASSIGN:\n\t\t\t// assignment or object only, but not nested objects. this is not\n\t\t\t// allowed: `foo bar = {}`\n\t\t\tif keyCount > 1 {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: p.tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\"nested object expected: LBRACE got: %s\", p.tok.Type),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif keyCount == 0 {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: p.tok.Pos,\n\t\t\t\t\tErr: errors.New(\"no object keys found!\"),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn keys, nil\n\t\tcase token.LBRACE:\n\t\t\tvar err error\n\n\t\t\t// If we have no keys, then it is a syntax error. i.e. {{}} is not\n\t\t\t// allowed.\n\t\t\tif len(keys) == 0 {\n\t\t\t\terr = &PosError{\n\t\t\t\t\tPos: p.tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\"expected: IDENT | STRING got: %s\", p.tok.Type),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// object\n\t\t\treturn keys, err\n\t\tcase token.IDENT, token.STRING:\n\t\t\tkeyCount++\n\t\t\tkeys = append(keys, &ast.ObjectKey{Token: p.tok})\n\t\tcase token.ILLEGAL:\n\t\t\treturn keys, &PosError{\n\t\t\t\tPos: p.tok.Pos,\n\t\t\t\tErr: fmt.Errorf(\"illegal character\"),\n\t\t\t}\n\t\tdefault:\n\t\t\treturn keys, &PosError{\n\t\t\t\tPos: p.tok.Pos,\n\t\t\t\tErr: fmt.Errorf(\"expected: IDENT | STRING | ASSIGN | LBRACE got: %s\", p.tok.Type),\n\t\t\t}\n\t\t}\n\t}\n}\n\n// object parses any type of object, such as number, bool, string, object or\n// list.\nfunc (p *Parser) object() (ast.Node, error) {\n\tdefer un(trace(p, \"ParseType\"))\n\ttok := p.scan()\n\n\tswitch tok.Type {\n\tcase token.NUMBER, token.FLOAT, token.BOOL, token.STRING, token.HEREDOC:\n\t\treturn p.literalType()\n\tcase token.LBRACE:\n\t\treturn p.objectType()\n\tcase token.LBRACK:\n\t\treturn p.listType()\n\tcase token.COMMENT:\n\t\t// implement comment\n\tcase token.EOF:\n\t\treturn nil, errEofToken\n\t}\n\n\treturn nil, &PosError{\n\t\tPos: tok.Pos,\n\t\tErr: fmt.Errorf(\"Unknown token: %+v\", tok),\n\t}\n}\n\n// objectType parses an object type and returns a ObjectType AST\nfunc (p *Parser) objectType() (*ast.ObjectType, error) {\n\tdefer un(trace(p, \"ParseObjectType\"))\n\n\t// we assume that the currently scanned token is a LBRACE\n\to := &ast.ObjectType{\n\t\tLbrace: p.tok.Pos,\n\t}\n\n\tl, err := p.objectList(true)\n\n\t// if we hit RBRACE, we are good to go (means we parsed all Items), if it's\n\t// not a RBRACE, it's an syntax error and we just return it.\n\tif err != nil && p.tok.Type != token.RBRACE {\n\t\treturn nil, err\n\t}\n\n\t// No error, scan and expect the ending to be a brace\n\tif tok := p.scan(); tok.Type != token.RBRACE {\n\t\treturn nil, &PosError{\n\t\t\tPos: tok.Pos,\n\t\t\tErr: fmt.Errorf(\"object expected closing RBRACE got: %s\", tok.Type),\n\t\t}\n\t}\n\n\to.List = l\n\to.Rbrace = p.tok.Pos // advanced via parseObjectList\n\treturn o, nil\n}\n\n// listType parses a list type and returns a ListType AST\nfunc (p *Parser) listType() (*ast.ListType, error) {\n\tdefer un(trace(p, \"ParseListType\"))\n\n\t// we assume that the currently scanned token is a LBRACK\n\tl := &ast.ListType{\n\t\tLbrack: p.tok.Pos,\n\t}\n\n\tneedComma := false\n\tfor {\n\t\ttok := p.scan()\n\t\tif needComma {\n\t\t\tswitch tok.Type {\n\t\t\tcase token.COMMA, token.RBRACK:\n\t\t\tdefault:\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\n\t\t\t\t\t\t\"error parsing list, expected comma or list end, got: %s\",\n\t\t\t\t\t\ttok.Type),\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tswitch tok.Type {\n\t\tcase token.BOOL, token.NUMBER, token.FLOAT, token.STRING, token.HEREDOC:\n\t\t\tnode, err := p.literalType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// If there is a lead comment, apply it\n\t\t\tif p.leadComment != nil {\n\t\t\t\tnode.LeadComment = p.leadComment\n\t\t\t\tp.leadComment = nil\n\t\t\t}\n\n\t\t\tl.Add(node)\n\t\t\tneedComma = true\n\t\tcase token.COMMA:\n\t\t\t// get next list item or we are at the end\n\t\t\t// do a look-ahead for line comment\n\t\t\tp.scan()\n\t\t\tif p.lineComment != nil && len(l.List) > 0 {\n\t\t\t\tlit, ok := l.List[len(l.List)-1].(*ast.LiteralType)\n\t\t\t\tif ok {\n\t\t\t\t\tlit.LineComment = p.lineComment\n\t\t\t\t\tl.List[len(l.List)-1] = lit\n\t\t\t\t\tp.lineComment = nil\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.unscan()\n\n\t\t\tneedComma = false\n\t\t\tcontinue\n\t\tcase token.LBRACE:\n\t\t\t// Looks like a nested object, so parse it out\n\t\t\tnode, err := p.objectType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\n\t\t\t\t\t\t\"error while trying to parse object within list: %s\", err),\n\t\t\t\t}\n\t\t\t}\n\t\t\tl.Add(node)\n\t\t\tneedComma = true\n\t\tcase token.LBRACK:\n\t\t\tnode, err := p.listType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\n\t\t\t\t\t\t\"error while trying to parse list within list: %s\", err),\n\t\t\t\t}\n\t\t\t}\n\t\t\tl.Add(node)\n\t\tcase token.RBRACK:\n\t\t\t// finished\n\t\t\tl.Rbrack = p.tok.Pos\n\t\t\treturn l, nil\n\t\tdefault:\n\t\t\treturn nil, &PosError{\n\t\t\t\tPos: tok.Pos,\n\t\t\t\tErr: fmt.Errorf(\"unexpected token while parsing list: %s\", tok.Type),\n\t\t\t}\n\t\t}\n\t}\n}\n\n// literalType parses a literal type and returns a LiteralType AST\nfunc (p *Parser) literalType() (*ast.LiteralType, error) {\n\tdefer un(trace(p, \"ParseLiteral\"))\n\n\treturn &ast.LiteralType{\n\t\tToken: p.tok,\n\t}, nil\n}\n\n// scan returns the next token from the underlying scanner. If a token has\n// been unscanned then read that instead. In the process, it collects any\n// comment groups encountered, and remembers the last lead and line comments.\nfunc (p *Parser) scan() token.Token {\n\t// If we have a token on the buffer, then return it.\n\tif p.n != 0 {\n\t\tp.n = 0\n\t\treturn p.tok\n\t}\n\n\t// Otherwise read the next token from the scanner and Save it to the buffer\n\t// in case we unscan later.\n\tprev := p.tok\n\tp.tok = p.sc.Scan()\n\n\tif p.tok.Type == token.COMMENT {\n\t\tvar comment *ast.CommentGroup\n\t\tvar endline int\n\n\t\t// fmt.Printf(\"p.tok.Pos.Line = %+v prev: %d endline %d \\n\",\n\t\t// p.tok.Pos.Line, prev.Pos.Line, endline)\n\t\tif p.tok.Pos.Line == prev.Pos.Line {\n\t\t\t// The comment is on same line as the previous token; it\n\t\t\t// cannot be a lead comment but may be a line comment.\n\t\t\tcomment, endline = p.consumeCommentGroup(0)\n\t\t\tif p.tok.Pos.Line != endline {\n\t\t\t\t// The next token is on a different line, thus\n\t\t\t\t// the last comment group is a line comment.\n\t\t\t\tp.lineComment = comment\n\t\t\t}\n\t\t}\n\n\t\t// consume successor comments, if any\n\t\tendline = -1\n\t\tfor p.tok.Type == token.COMMENT {\n\t\t\tcomment, endline = p.consumeCommentGroup(1)\n\t\t}\n\n\t\tif endline+1 == p.tok.Pos.Line && p.tok.Type != token.RBRACE {\n\t\t\tswitch p.tok.Type {\n\t\t\tcase token.RBRACE, token.RBRACK:\n\t\t\t\t// Do not count for these cases\n\t\t\tdefault:\n\t\t\t\t// The next token is following on the line immediately after the\n\t\t\t\t// comment group, thus the last comment group is a lead comment.\n\t\t\t\tp.leadComment = comment\n\t\t\t}\n\t\t}\n\n\t}\n\n\treturn p.tok\n}\n\n// unscan pushes the previously read token back onto the buffer.\nfunc (p *Parser) unscan() {\n\tp.n = 1\n}\n\n// ----------------------------------------------------------------------------\n// Parsing support\n\nfunc (p *Parser) printTrace(a ...interface{}) {\n\tif !p.enableTrace {\n\t\treturn\n\t}\n\n\tconst dots = \". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \"\n\tconst n = len(dots)\n\tfmt.Printf(\"%5d:%3d: \", p.tok.Pos.Line, p.tok.Pos.Column)\n\n\ti := 2 * p.indent\n\tfor i > n {\n\t\tfmt.Print(dots)\n\t\ti -= n\n\t}\n\t// i <= n\n\tfmt.Print(dots[0:i])\n\tfmt.Println(a...)\n}\n\nfunc trace(p *Parser, msg string) *Parser {\n\tp.printTrace(msg, \"(\")\n\tp.indent++\n\treturn p\n}\n\n// Usage pattern: defer un(trace(p, \"...\"))\nfunc un(p *Parser) {\n\tp.indent--\n\tp.printTrace(\")\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/printer/nodes.go",
    "content": "package printer\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\nconst (\n\tblank    = byte(' ')\n\tnewline  = byte('\\n')\n\ttab      = byte('\\t')\n\tinfinity = 1 << 30 // offset or line\n)\n\nvar (\n\tunindent = []byte(\"\\uE123\") // in the private use space\n)\n\ntype printer struct {\n\tcfg  Config\n\tprev token.Pos\n\n\tcomments           []*ast.CommentGroup // may be nil, contains all comments\n\tstandaloneComments []*ast.CommentGroup // contains all standalone comments (not assigned to any node)\n\n\tenableTrace bool\n\tindentTrace int\n}\n\ntype ByPosition []*ast.CommentGroup\n\nfunc (b ByPosition) Len() int           { return len(b) }\nfunc (b ByPosition) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }\nfunc (b ByPosition) Less(i, j int) bool { return b[i].Pos().Before(b[j].Pos()) }\n\n// collectComments comments all standalone comments which are not lead or line\n// comment\nfunc (p *printer) collectComments(node ast.Node) {\n\t// first collect all comments. This is already stored in\n\t// ast.File.(comments)\n\tast.Walk(node, func(nn ast.Node) (ast.Node, bool) {\n\t\tswitch t := nn.(type) {\n\t\tcase *ast.File:\n\t\t\tp.comments = t.Comments\n\t\t\treturn nn, false\n\t\t}\n\t\treturn nn, true\n\t})\n\n\tstandaloneComments := make(map[token.Pos]*ast.CommentGroup, 0)\n\tfor _, c := range p.comments {\n\t\tstandaloneComments[c.Pos()] = c\n\t}\n\n\t// next remove all lead and line comments from the overall comment map.\n\t// This will give us comments which are standalone, comments which are not\n\t// assigned to any kind of node.\n\tast.Walk(node, func(nn ast.Node) (ast.Node, bool) {\n\t\tswitch t := nn.(type) {\n\t\tcase *ast.LiteralType:\n\t\t\tif t.LeadComment != nil {\n\t\t\t\tfor _, comment := range t.LeadComment.List {\n\t\t\t\t\tif _, ok := standaloneComments[comment.Pos()]; ok {\n\t\t\t\t\t\tdelete(standaloneComments, comment.Pos())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif t.LineComment != nil {\n\t\t\t\tfor _, comment := range t.LineComment.List {\n\t\t\t\t\tif _, ok := standaloneComments[comment.Pos()]; ok {\n\t\t\t\t\t\tdelete(standaloneComments, comment.Pos())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase *ast.ObjectItem:\n\t\t\tif t.LeadComment != nil {\n\t\t\t\tfor _, comment := range t.LeadComment.List {\n\t\t\t\t\tif _, ok := standaloneComments[comment.Pos()]; ok {\n\t\t\t\t\t\tdelete(standaloneComments, comment.Pos())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif t.LineComment != nil {\n\t\t\t\tfor _, comment := range t.LineComment.List {\n\t\t\t\t\tif _, ok := standaloneComments[comment.Pos()]; ok {\n\t\t\t\t\t\tdelete(standaloneComments, comment.Pos())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nn, true\n\t})\n\n\tfor _, c := range standaloneComments {\n\t\tp.standaloneComments = append(p.standaloneComments, c)\n\t}\n\n\tsort.Sort(ByPosition(p.standaloneComments))\n}\n\n// output prints creates b printable HCL output and returns it.\nfunc (p *printer) output(n interface{}) []byte {\n\tvar buf bytes.Buffer\n\n\tswitch t := n.(type) {\n\tcase *ast.File:\n\t\t// File doesn't trace so we add the tracing here\n\t\tdefer un(trace(p, \"File\"))\n\t\treturn p.output(t.Node)\n\tcase *ast.ObjectList:\n\t\tdefer un(trace(p, \"ObjectList\"))\n\n\t\tvar index int\n\t\tfor {\n\t\t\t// Determine the location of the next actual non-comment\n\t\t\t// item. If we're at the end, the next item is at \"infinity\"\n\t\t\tvar nextItem token.Pos\n\t\t\tif index != len(t.Items) {\n\t\t\t\tnextItem = t.Items[index].Pos()\n\t\t\t} else {\n\t\t\t\tnextItem = token.Pos{Offset: infinity, Line: infinity}\n\t\t\t}\n\n\t\t\t// Go through the standalone comments in the file and print out\n\t\t\t// the comments that we should be for this object item.\n\t\t\tfor _, c := range p.standaloneComments {\n\t\t\t\t// Go through all the comments in the group. The group\n\t\t\t\t// should be printed together, not separated by double newlines.\n\t\t\t\tprinted := false\n\t\t\t\tnewlinePrinted := false\n\t\t\t\tfor _, comment := range c.List {\n\t\t\t\t\t// We only care about comments after the previous item\n\t\t\t\t\t// we've printed so that comments are printed in the\n\t\t\t\t\t// correct locations (between two objects for example).\n\t\t\t\t\t// And before the next item.\n\t\t\t\t\tif comment.Pos().After(p.prev) && comment.Pos().Before(nextItem) {\n\t\t\t\t\t\t// if we hit the end add newlines so we can print the comment\n\t\t\t\t\t\t// we don't do this if prev is invalid which means the\n\t\t\t\t\t\t// beginning of the file since the first comment should\n\t\t\t\t\t\t// be at the first line.\n\t\t\t\t\t\tif !newlinePrinted && p.prev.IsValid() && index == len(t.Items) {\n\t\t\t\t\t\t\tbuf.Write([]byte{newline, newline})\n\t\t\t\t\t\t\tnewlinePrinted = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Write the actual comment.\n\t\t\t\t\t\tbuf.WriteString(comment.Text)\n\t\t\t\t\t\tbuf.WriteByte(newline)\n\n\t\t\t\t\t\t// Set printed to true to note that we printed something\n\t\t\t\t\t\tprinted = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If we're not at the last item, write a new line so\n\t\t\t\t// that there is a newline separating this comment from\n\t\t\t\t// the next object.\n\t\t\t\tif printed && index != len(t.Items) {\n\t\t\t\t\tbuf.WriteByte(newline)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif index == len(t.Items) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tbuf.Write(p.output(t.Items[index]))\n\t\t\tif index != len(t.Items)-1 {\n\t\t\t\t// Always write a newline to separate us from the next item\n\t\t\t\tbuf.WriteByte(newline)\n\n\t\t\t\t// Need to determine if we're going to separate the next item\n\t\t\t\t// with a blank line. The logic here is simple, though there\n\t\t\t\t// are a few conditions:\n\t\t\t\t//\n\t\t\t\t//   1. The next object is more than one line away anyways,\n\t\t\t\t//      so we need an empty line.\n\t\t\t\t//\n\t\t\t\t//   2. The next object is not a \"single line\" object, so\n\t\t\t\t//      we need an empty line.\n\t\t\t\t//\n\t\t\t\t//   3. This current object is not a single line object,\n\t\t\t\t//      so we need an empty line.\n\t\t\t\tcurrent := t.Items[index]\n\t\t\t\tnext := t.Items[index+1]\n\t\t\t\tif next.Pos().Line != t.Items[index].Pos().Line+1 ||\n\t\t\t\t\t!p.isSingleLineObject(next) ||\n\t\t\t\t\t!p.isSingleLineObject(current) {\n\t\t\t\t\tbuf.WriteByte(newline)\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex++\n\t\t}\n\tcase *ast.ObjectKey:\n\t\tbuf.WriteString(t.Token.Text)\n\tcase *ast.ObjectItem:\n\t\tp.prev = t.Pos()\n\t\tbuf.Write(p.objectItem(t))\n\tcase *ast.LiteralType:\n\t\tbuf.Write(p.literalType(t))\n\tcase *ast.ListType:\n\t\tbuf.Write(p.list(t))\n\tcase *ast.ObjectType:\n\t\tbuf.Write(p.objectType(t))\n\tdefault:\n\t\tfmt.Printf(\" unknown type: %T\\n\", n)\n\t}\n\n\treturn buf.Bytes()\n}\n\nfunc (p *printer) literalType(lit *ast.LiteralType) []byte {\n\tresult := []byte(lit.Token.Text)\n\tswitch lit.Token.Type {\n\tcase token.HEREDOC:\n\t\t// Clear the trailing newline from heredocs\n\t\tif result[len(result)-1] == '\\n' {\n\t\t\tresult = result[:len(result)-1]\n\t\t}\n\n\t\t// Poison lines 2+ so that we don't indent them\n\t\tresult = p.heredocIndent(result)\n\tcase token.STRING:\n\t\t// If this is a multiline string, poison lines 2+ so we don't\n\t\t// indent them.\n\t\tif bytes.IndexRune(result, '\\n') >= 0 {\n\t\t\tresult = p.heredocIndent(result)\n\t\t}\n\t}\n\n\treturn result\n}\n\n// objectItem returns the printable HCL form of an object item. An object type\n// starts with one/multiple keys and has a value. The value might be of any\n// type.\nfunc (p *printer) objectItem(o *ast.ObjectItem) []byte {\n\tdefer un(trace(p, fmt.Sprintf(\"ObjectItem: %s\", o.Keys[0].Token.Text)))\n\tvar buf bytes.Buffer\n\n\tif o.LeadComment != nil {\n\t\tfor _, comment := range o.LeadComment.List {\n\t\t\tbuf.WriteString(comment.Text)\n\t\t\tbuf.WriteByte(newline)\n\t\t}\n\t}\n\n\t// If key and val are on different lines, treat line comments like lead comments.\n\tif o.LineComment != nil && o.Val.Pos().Line != o.Keys[0].Pos().Line {\n\t\tfor _, comment := range o.LineComment.List {\n\t\t\tbuf.WriteString(comment.Text)\n\t\t\tbuf.WriteByte(newline)\n\t\t}\n\t}\n\n\tfor i, k := range o.Keys {\n\t\tbuf.WriteString(k.Token.Text)\n\t\tbuf.WriteByte(blank)\n\n\t\t// reach end of key\n\t\tif o.Assign.IsValid() && i == len(o.Keys)-1 && len(o.Keys) == 1 {\n\t\t\tbuf.WriteString(\"=\")\n\t\t\tbuf.WriteByte(blank)\n\t\t}\n\t}\n\n\tbuf.Write(p.output(o.Val))\n\n\tif o.LineComment != nil && o.Val.Pos().Line == o.Keys[0].Pos().Line {\n\t\tbuf.WriteByte(blank)\n\t\tfor _, comment := range o.LineComment.List {\n\t\t\tbuf.WriteString(comment.Text)\n\t\t}\n\t}\n\n\treturn buf.Bytes()\n}\n\n// objectType returns the printable HCL form of an object type. An object type\n// begins with a brace and ends with a brace.\nfunc (p *printer) objectType(o *ast.ObjectType) []byte {\n\tdefer un(trace(p, \"ObjectType\"))\n\tvar buf bytes.Buffer\n\tbuf.WriteString(\"{\")\n\n\tvar index int\n\tvar nextItem token.Pos\n\tvar commented, newlinePrinted bool\n\tfor {\n\t\t// Determine the location of the next actual non-comment\n\t\t// item. If we're at the end, the next item is the closing brace\n\t\tif index != len(o.List.Items) {\n\t\t\tnextItem = o.List.Items[index].Pos()\n\t\t} else {\n\t\t\tnextItem = o.Rbrace\n\t\t}\n\n\t\t// Go through the standalone comments in the file and print out\n\t\t// the comments that we should be for this object item.\n\t\tfor _, c := range p.standaloneComments {\n\t\t\tprinted := false\n\t\t\tvar lastCommentPos token.Pos\n\t\t\tfor _, comment := range c.List {\n\t\t\t\t// We only care about comments after the previous item\n\t\t\t\t// we've printed so that comments are printed in the\n\t\t\t\t// correct locations (between two objects for example).\n\t\t\t\t// And before the next item.\n\t\t\t\tif comment.Pos().After(p.prev) && comment.Pos().Before(nextItem) {\n\t\t\t\t\t// If there are standalone comments and the initial newline has not\n\t\t\t\t\t// been printed yet, do it now.\n\t\t\t\t\tif !newlinePrinted {\n\t\t\t\t\t\tnewlinePrinted = true\n\t\t\t\t\t\tbuf.WriteByte(newline)\n\t\t\t\t\t}\n\n\t\t\t\t\t// add newline if it's between other printed nodes\n\t\t\t\t\tif index > 0 {\n\t\t\t\t\t\tcommented = true\n\t\t\t\t\t\tbuf.WriteByte(newline)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store this position\n\t\t\t\t\tlastCommentPos = comment.Pos()\n\n\t\t\t\t\t// output the comment itself\n\t\t\t\t\tbuf.Write(p.indent(p.heredocIndent([]byte(comment.Text))))\n\n\t\t\t\t\t// Set printed to true to note that we printed something\n\t\t\t\t\tprinted = true\n\n\t\t\t\t\t/*\n\t\t\t\t\t\tif index != len(o.List.Items) {\n\t\t\t\t\t\t\tbuf.WriteByte(newline) // do not print on the end\n\t\t\t\t\t\t}\n\t\t\t\t\t*/\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Stuff to do if we had comments\n\t\t\tif printed {\n\t\t\t\t// Always write a newline\n\t\t\t\tbuf.WriteByte(newline)\n\n\t\t\t\t// If there is another item in the object and our comment\n\t\t\t\t// didn't hug it directly, then make sure there is a blank\n\t\t\t\t// line separating them.\n\t\t\t\tif nextItem != o.Rbrace && nextItem.Line != lastCommentPos.Line+1 {\n\t\t\t\t\tbuf.WriteByte(newline)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif index == len(o.List.Items) {\n\t\t\tp.prev = o.Rbrace\n\t\t\tbreak\n\t\t}\n\n\t\t// At this point we are sure that it's not a totally empty block: print\n\t\t// the initial newline if it hasn't been printed yet by the previous\n\t\t// block about standalone comments.\n\t\tif !newlinePrinted {\n\t\t\tbuf.WriteByte(newline)\n\t\t\tnewlinePrinted = true\n\t\t}\n\n\t\t// check if we have adjacent one liner items. If yes we'll going to align\n\t\t// the comments.\n\t\tvar aligned []*ast.ObjectItem\n\t\tfor _, item := range o.List.Items[index:] {\n\t\t\t// we don't group one line lists\n\t\t\tif len(o.List.Items) == 1 {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// one means a oneliner with out any lead comment\n\t\t\t// two means a oneliner with lead comment\n\t\t\t// anything else might be something else\n\t\t\tcur := lines(string(p.objectItem(item)))\n\t\t\tif cur > 2 {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tcurPos := item.Pos()\n\n\t\t\tnextPos := token.Pos{}\n\t\t\tif index != len(o.List.Items)-1 {\n\t\t\t\tnextPos = o.List.Items[index+1].Pos()\n\t\t\t}\n\n\t\t\tprevPos := token.Pos{}\n\t\t\tif index != 0 {\n\t\t\t\tprevPos = o.List.Items[index-1].Pos()\n\t\t\t}\n\n\t\t\t// fmt.Println(\"DEBUG ----------------\")\n\t\t\t// fmt.Printf(\"prev = %+v prevPos: %s\\n\", prev, prevPos)\n\t\t\t// fmt.Printf(\"cur = %+v curPos: %s\\n\", cur, curPos)\n\t\t\t// fmt.Printf(\"next = %+v nextPos: %s\\n\", next, nextPos)\n\n\t\t\tif curPos.Line+1 == nextPos.Line {\n\t\t\t\taligned = append(aligned, item)\n\t\t\t\tindex++\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif curPos.Line-1 == prevPos.Line {\n\t\t\t\taligned = append(aligned, item)\n\t\t\t\tindex++\n\n\t\t\t\t// finish if we have a new line or comment next. This happens\n\t\t\t\t// if the next item is not adjacent\n\t\t\t\tif curPos.Line+1 != nextPos.Line {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\t// put newlines if the items are between other non aligned items.\n\t\t// newlines are also added if there is a standalone comment already, so\n\t\t// check it too\n\t\tif !commented && index != len(aligned) {\n\t\t\tbuf.WriteByte(newline)\n\t\t}\n\n\t\tif len(aligned) >= 1 {\n\t\t\tp.prev = aligned[len(aligned)-1].Pos()\n\n\t\t\titems := p.alignedItems(aligned)\n\t\t\tbuf.Write(p.indent(items))\n\t\t} else {\n\t\t\tp.prev = o.List.Items[index].Pos()\n\n\t\t\tbuf.Write(p.indent(p.objectItem(o.List.Items[index])))\n\t\t\tindex++\n\t\t}\n\n\t\tbuf.WriteByte(newline)\n\t}\n\n\tbuf.WriteString(\"}\")\n\treturn buf.Bytes()\n}\n\nfunc (p *printer) alignedItems(items []*ast.ObjectItem) []byte {\n\tvar buf bytes.Buffer\n\n\t// find the longest key and value length, needed for alignment\n\tvar longestKeyLen int // longest key length\n\tvar longestValLen int // longest value length\n\tfor _, item := range items {\n\t\tkey := len(item.Keys[0].Token.Text)\n\t\tval := len(p.output(item.Val))\n\n\t\tif key > longestKeyLen {\n\t\t\tlongestKeyLen = key\n\t\t}\n\n\t\tif val > longestValLen {\n\t\t\tlongestValLen = val\n\t\t}\n\t}\n\n\tfor i, item := range items {\n\t\tif item.LeadComment != nil {\n\t\t\tfor _, comment := range item.LeadComment.List {\n\t\t\t\tbuf.WriteString(comment.Text)\n\t\t\t\tbuf.WriteByte(newline)\n\t\t\t}\n\t\t}\n\n\t\tfor i, k := range item.Keys {\n\t\t\tkeyLen := len(k.Token.Text)\n\t\t\tbuf.WriteString(k.Token.Text)\n\t\t\tfor i := 0; i < longestKeyLen-keyLen+1; i++ {\n\t\t\t\tbuf.WriteByte(blank)\n\t\t\t}\n\n\t\t\t// reach end of key\n\t\t\tif i == len(item.Keys)-1 && len(item.Keys) == 1 {\n\t\t\t\tbuf.WriteString(\"=\")\n\t\t\t\tbuf.WriteByte(blank)\n\t\t\t}\n\t\t}\n\n\t\tval := p.output(item.Val)\n\t\tvalLen := len(val)\n\t\tbuf.Write(val)\n\n\t\tif item.Val.Pos().Line == item.Keys[0].Pos().Line && item.LineComment != nil {\n\t\t\tfor i := 0; i < longestValLen-valLen+1; i++ {\n\t\t\t\tbuf.WriteByte(blank)\n\t\t\t}\n\n\t\t\tfor _, comment := range item.LineComment.List {\n\t\t\t\tbuf.WriteString(comment.Text)\n\t\t\t}\n\t\t}\n\n\t\t// do not print for the last item\n\t\tif i != len(items)-1 {\n\t\t\tbuf.WriteByte(newline)\n\t\t}\n\t}\n\n\treturn buf.Bytes()\n}\n\n// list returns the printable HCL form of an list type.\nfunc (p *printer) list(l *ast.ListType) []byte {\n\tif p.isSingleLineList(l) {\n\t\treturn p.singleLineList(l)\n\t}\n\n\tvar buf bytes.Buffer\n\tbuf.WriteString(\"[\")\n\tbuf.WriteByte(newline)\n\n\tvar longestLine int\n\tfor _, item := range l.List {\n\t\t// for now we assume that the list only contains literal types\n\t\tif lit, ok := item.(*ast.LiteralType); ok {\n\t\t\tlineLen := len(lit.Token.Text)\n\t\t\tif lineLen > longestLine {\n\t\t\t\tlongestLine = lineLen\n\t\t\t}\n\t\t}\n\t}\n\n\thaveEmptyLine := false\n\tfor i, item := range l.List {\n\t\t// If we have a lead comment, then we want to write that first\n\t\tleadComment := false\n\t\tif lit, ok := item.(*ast.LiteralType); ok && lit.LeadComment != nil {\n\t\t\tleadComment = true\n\n\t\t\t// Ensure an empty line before every element with a\n\t\t\t// lead comment (except the first item in a list).\n\t\t\tif !haveEmptyLine && i != 0 {\n\t\t\t\tbuf.WriteByte(newline)\n\t\t\t}\n\n\t\t\tfor _, comment := range lit.LeadComment.List {\n\t\t\t\tbuf.Write(p.indent([]byte(comment.Text)))\n\t\t\t\tbuf.WriteByte(newline)\n\t\t\t}\n\t\t}\n\n\t\t// also indent each line\n\t\tval := p.output(item)\n\t\tcurLen := len(val)\n\t\tbuf.Write(p.indent(val))\n\n\t\t// if this item is a heredoc, then we output the comma on\n\t\t// the next line. This is the only case this happens.\n\t\tcomma := []byte{','}\n\t\tif lit, ok := item.(*ast.LiteralType); ok && lit.Token.Type == token.HEREDOC {\n\t\t\tbuf.WriteByte(newline)\n\t\t\tcomma = p.indent(comma)\n\t\t}\n\n\t\tbuf.Write(comma)\n\n\t\tif lit, ok := item.(*ast.LiteralType); ok && lit.LineComment != nil {\n\t\t\t// if the next item doesn't have any comments, do not align\n\t\t\tbuf.WriteByte(blank) // align one space\n\t\t\tfor i := 0; i < longestLine-curLen; i++ {\n\t\t\t\tbuf.WriteByte(blank)\n\t\t\t}\n\n\t\t\tfor _, comment := range lit.LineComment.List {\n\t\t\t\tbuf.WriteString(comment.Text)\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteByte(newline)\n\n\t\t// Ensure an empty line after every element with a\n\t\t// lead comment (except the first item in a list).\n\t\thaveEmptyLine = leadComment && i != len(l.List)-1\n\t\tif haveEmptyLine {\n\t\t\tbuf.WriteByte(newline)\n\t\t}\n\t}\n\n\tbuf.WriteString(\"]\")\n\treturn buf.Bytes()\n}\n\n// isSingleLineList returns true if:\n// * they were previously formatted entirely on one line\n// * they consist entirely of literals\n// * there are either no heredoc strings or the list has exactly one element\n// * there are no line comments\nfunc (printer) isSingleLineList(l *ast.ListType) bool {\n\tfor _, item := range l.List {\n\t\tif item.Pos().Line != l.Lbrack.Line {\n\t\t\treturn false\n\t\t}\n\n\t\tlit, ok := item.(*ast.LiteralType)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\n\t\tif lit.Token.Type == token.HEREDOC && len(l.List) != 1 {\n\t\t\treturn false\n\t\t}\n\n\t\tif lit.LineComment != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// singleLineList prints a simple single line list.\n// For a definition of \"simple\", see isSingleLineList above.\nfunc (p *printer) singleLineList(l *ast.ListType) []byte {\n\tbuf := &bytes.Buffer{}\n\n\tbuf.WriteString(\"[\")\n\tfor i, item := range l.List {\n\t\tif i != 0 {\n\t\t\tbuf.WriteString(\", \")\n\t\t}\n\n\t\t// Output the item itself\n\t\tbuf.Write(p.output(item))\n\n\t\t// The heredoc marker needs to be at the end of line.\n\t\tif lit, ok := item.(*ast.LiteralType); ok && lit.Token.Type == token.HEREDOC {\n\t\t\tbuf.WriteByte(newline)\n\t\t}\n\t}\n\n\tbuf.WriteString(\"]\")\n\treturn buf.Bytes()\n}\n\n// indent indents the lines of the given buffer for each non-empty line\nfunc (p *printer) indent(buf []byte) []byte {\n\tvar prefix []byte\n\tif p.cfg.SpacesWidth != 0 {\n\t\tfor i := 0; i < p.cfg.SpacesWidth; i++ {\n\t\t\tprefix = append(prefix, blank)\n\t\t}\n\t} else {\n\t\tprefix = []byte{tab}\n\t}\n\n\tvar res []byte\n\tbol := true\n\tfor _, c := range buf {\n\t\tif bol && c != '\\n' {\n\t\t\tres = append(res, prefix...)\n\t\t}\n\n\t\tres = append(res, c)\n\t\tbol = c == '\\n'\n\t}\n\treturn res\n}\n\n// unindent removes all the indentation from the tombstoned lines\nfunc (p *printer) unindent(buf []byte) []byte {\n\tvar res []byte\n\tfor i := 0; i < len(buf); i++ {\n\t\tskip := len(buf)-i <= len(unindent)\n\t\tif !skip {\n\t\t\tskip = !bytes.Equal(unindent, buf[i:i+len(unindent)])\n\t\t}\n\t\tif skip {\n\t\t\tres = append(res, buf[i])\n\t\t\tcontinue\n\t\t}\n\n\t\t// We have a marker. we have to backtrace here and clean out\n\t\t// any whitespace ahead of our tombstone up to a \\n\n\t\tfor j := len(res) - 1; j >= 0; j-- {\n\t\t\tif res[j] == '\\n' {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tres = res[:j]\n\t\t}\n\n\t\t// Skip the entire unindent marker\n\t\ti += len(unindent) - 1\n\t}\n\n\treturn res\n}\n\n// heredocIndent marks all the 2nd and further lines as unindentable\nfunc (p *printer) heredocIndent(buf []byte) []byte {\n\tvar res []byte\n\tbol := false\n\tfor _, c := range buf {\n\t\tif bol && c != '\\n' {\n\t\t\tres = append(res, unindent...)\n\t\t}\n\t\tres = append(res, c)\n\t\tbol = c == '\\n'\n\t}\n\treturn res\n}\n\n// isSingleLineObject tells whether the given object item is a single\n// line object such as \"obj {}\".\n//\n// A single line object:\n//\n//   * has no lead comments (hence multi-line)\n//   * has no assignment\n//   * has no values in the stanza (within {})\n//\nfunc (p *printer) isSingleLineObject(val *ast.ObjectItem) bool {\n\t// If there is a lead comment, can't be one line\n\tif val.LeadComment != nil {\n\t\treturn false\n\t}\n\n\t// If there is assignment, we always break by line\n\tif val.Assign.IsValid() {\n\t\treturn false\n\t}\n\n\t// If it isn't an object type, then its not a single line object\n\tot, ok := val.Val.(*ast.ObjectType)\n\tif !ok {\n\t\treturn false\n\t}\n\n\t// If the object has no items, it is single line!\n\treturn len(ot.List.Items) == 0\n}\n\nfunc lines(txt string) int {\n\tendline := 1\n\tfor i := 0; i < len(txt); i++ {\n\t\tif txt[i] == '\\n' {\n\t\t\tendline++\n\t\t}\n\t}\n\treturn endline\n}\n\n// ----------------------------------------------------------------------------\n// Tracing support\n\nfunc (p *printer) printTrace(a ...interface{}) {\n\tif !p.enableTrace {\n\t\treturn\n\t}\n\n\tconst dots = \". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \"\n\tconst n = len(dots)\n\ti := 2 * p.indentTrace\n\tfor i > n {\n\t\tfmt.Print(dots)\n\t\ti -= n\n\t}\n\t// i <= n\n\tfmt.Print(dots[0:i])\n\tfmt.Println(a...)\n}\n\nfunc trace(p *printer, msg string) *printer {\n\tp.printTrace(msg, \"(\")\n\tp.indentTrace++\n\treturn p\n}\n\n// Usage pattern: defer un(trace(p, \"...\"))\nfunc un(p *printer) {\n\tp.indentTrace--\n\tp.printTrace(\")\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/printer/printer.go",
    "content": "// Package printer implements printing of AST nodes to HCL format.\npackage printer\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"text/tabwriter\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/hashicorp/hcl/hcl/parser\"\n)\n\nvar DefaultConfig = Config{\n\tSpacesWidth: 2,\n}\n\n// A Config node controls the output of Fprint.\ntype Config struct {\n\tSpacesWidth int // if set, it will use spaces instead of tabs for alignment\n}\n\nfunc (c *Config) Fprint(output io.Writer, node ast.Node) error {\n\tp := &printer{\n\t\tcfg:                *c,\n\t\tcomments:           make([]*ast.CommentGroup, 0),\n\t\tstandaloneComments: make([]*ast.CommentGroup, 0),\n\t\t// enableTrace:        true,\n\t}\n\n\tp.collectComments(node)\n\n\tif _, err := output.Write(p.unindent(p.output(node))); err != nil {\n\t\treturn err\n\t}\n\n\t// flush tabwriter, if any\n\tvar err error\n\tif tw, _ := output.(*tabwriter.Writer); tw != nil {\n\t\terr = tw.Flush()\n\t}\n\n\treturn err\n}\n\n// Fprint \"pretty-prints\" an HCL node to output\n// It calls Config.Fprint with default settings.\nfunc Fprint(output io.Writer, node ast.Node) error {\n\treturn DefaultConfig.Fprint(output, node)\n}\n\n// Format formats src HCL and returns the result.\nfunc Format(src []byte) ([]byte, error) {\n\tnode, err := parser.Parse(src)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar buf bytes.Buffer\n\tif err := DefaultConfig.Fprint(&buf, node); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Add trailing newline to result\n\tbuf.WriteString(\"\\n\")\n\treturn buf.Bytes(), nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go",
    "content": "// Package scanner implements a scanner for HCL (HashiCorp Configuration\n// Language) source text.\npackage scanner\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// eof represents a marker rune for the end of the reader.\nconst eof = rune(0)\n\n// Scanner defines a lexical scanner\ntype Scanner struct {\n\tbuf *bytes.Buffer // Source buffer for advancing and scanning\n\tsrc []byte        // Source buffer for immutable access\n\n\t// Source Position\n\tsrcPos  token.Pos // current position\n\tprevPos token.Pos // previous position, used for peek() method\n\n\tlastCharLen int // length of last character in bytes\n\tlastLineLen int // length of last line in characters (for correct column reporting)\n\n\ttokStart int // token text start position\n\ttokEnd   int // token text end  position\n\n\t// Error is called for each error encountered. If no Error\n\t// function is set, the error is reported to os.Stderr.\n\tError func(pos token.Pos, msg string)\n\n\t// ErrorCount is incremented by one for each error encountered.\n\tErrorCount int\n\n\t// tokPos is the start position of most recently scanned token; set by\n\t// Scan. The Filename field is always left untouched by the Scanner.  If\n\t// an error is reported (via Error) and Position is invalid, the scanner is\n\t// not inside a token.\n\ttokPos token.Pos\n}\n\n// New creates and initializes a new instance of Scanner using src as\n// its source content.\nfunc New(src []byte) *Scanner {\n\t// even though we accept a src, we read from a io.Reader compatible type\n\t// (*bytes.Buffer). So in the future we might easily change it to streaming\n\t// read.\n\tb := bytes.NewBuffer(src)\n\ts := &Scanner{\n\t\tbuf: b,\n\t\tsrc: src,\n\t}\n\n\t// srcPosition always starts with 1\n\ts.srcPos.Line = 1\n\treturn s\n}\n\n// next reads the next rune from the bufferred reader. Returns the rune(0) if\n// an error occurs (or io.EOF is returned).\nfunc (s *Scanner) next() rune {\n\tch, size, err := s.buf.ReadRune()\n\tif err != nil {\n\t\t// advance for error reporting\n\t\ts.srcPos.Column++\n\t\ts.srcPos.Offset += size\n\t\ts.lastCharLen = size\n\t\treturn eof\n\t}\n\n\t// remember last position\n\ts.prevPos = s.srcPos\n\n\ts.srcPos.Column++\n\ts.lastCharLen = size\n\ts.srcPos.Offset += size\n\n\tif ch == utf8.RuneError && size == 1 {\n\t\ts.err(\"illegal UTF-8 encoding\")\n\t\treturn ch\n\t}\n\n\tif ch == '\\n' {\n\t\ts.srcPos.Line++\n\t\ts.lastLineLen = s.srcPos.Column\n\t\ts.srcPos.Column = 0\n\t}\n\n\tif ch == '\\x00' {\n\t\ts.err(\"unexpected null character (0x00)\")\n\t\treturn eof\n\t}\n\n\tif ch == '\\uE123' {\n\t\ts.err(\"unicode code point U+E123 reserved for internal use\")\n\t\treturn utf8.RuneError\n\t}\n\n\t// debug\n\t// fmt.Printf(\"ch: %q, offset:column: %d:%d\\n\", ch, s.srcPos.Offset, s.srcPos.Column)\n\treturn ch\n}\n\n// unread unreads the previous read Rune and updates the source position\nfunc (s *Scanner) unread() {\n\tif err := s.buf.UnreadRune(); err != nil {\n\t\tpanic(err) // this is user fault, we should catch it\n\t}\n\ts.srcPos = s.prevPos // put back last position\n}\n\n// peek returns the next rune without advancing the reader.\nfunc (s *Scanner) peek() rune {\n\tpeek, _, err := s.buf.ReadRune()\n\tif err != nil {\n\t\treturn eof\n\t}\n\n\ts.buf.UnreadRune()\n\treturn peek\n}\n\n// Scan scans the next token and returns the token.\nfunc (s *Scanner) Scan() token.Token {\n\tch := s.next()\n\n\t// skip white space\n\tfor isWhitespace(ch) {\n\t\tch = s.next()\n\t}\n\n\tvar tok token.Type\n\n\t// token text markings\n\ts.tokStart = s.srcPos.Offset - s.lastCharLen\n\n\t// token position, initial next() is moving the offset by one(size of rune\n\t// actually), though we are interested with the starting point\n\ts.tokPos.Offset = s.srcPos.Offset - s.lastCharLen\n\tif s.srcPos.Column > 0 {\n\t\t// common case: last character was not a '\\n'\n\t\ts.tokPos.Line = s.srcPos.Line\n\t\ts.tokPos.Column = s.srcPos.Column\n\t} else {\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\ts.tokPos.Line = s.srcPos.Line - 1\n\t\ts.tokPos.Column = s.lastLineLen\n\t}\n\n\tswitch {\n\tcase isLetter(ch):\n\t\ttok = token.IDENT\n\t\tlit := s.scanIdentifier()\n\t\tif lit == \"true\" || lit == \"false\" {\n\t\t\ttok = token.BOOL\n\t\t}\n\tcase isDecimal(ch):\n\t\ttok = s.scanNumber(ch)\n\tdefault:\n\t\tswitch ch {\n\t\tcase eof:\n\t\t\ttok = token.EOF\n\t\tcase '\"':\n\t\t\ttok = token.STRING\n\t\t\ts.scanString()\n\t\tcase '#', '/':\n\t\t\ttok = token.COMMENT\n\t\t\ts.scanComment(ch)\n\t\tcase '.':\n\t\t\ttok = token.PERIOD\n\t\t\tch = s.peek()\n\t\t\tif isDecimal(ch) {\n\t\t\t\ttok = token.FLOAT\n\t\t\t\tch = s.scanMantissa(ch)\n\t\t\t\tch = s.scanExponent(ch)\n\t\t\t}\n\t\tcase '<':\n\t\t\ttok = token.HEREDOC\n\t\t\ts.scanHeredoc()\n\t\tcase '[':\n\t\t\ttok = token.LBRACK\n\t\tcase ']':\n\t\t\ttok = token.RBRACK\n\t\tcase '{':\n\t\t\ttok = token.LBRACE\n\t\tcase '}':\n\t\t\ttok = token.RBRACE\n\t\tcase ',':\n\t\t\ttok = token.COMMA\n\t\tcase '=':\n\t\t\ttok = token.ASSIGN\n\t\tcase '+':\n\t\t\ttok = token.ADD\n\t\tcase '-':\n\t\t\tif isDecimal(s.peek()) {\n\t\t\t\tch := s.next()\n\t\t\t\ttok = s.scanNumber(ch)\n\t\t\t} else {\n\t\t\t\ttok = token.SUB\n\t\t\t}\n\t\tdefault:\n\t\t\ts.err(\"illegal char\")\n\t\t}\n\t}\n\n\t// finish token ending\n\ts.tokEnd = s.srcPos.Offset\n\n\t// create token literal\n\tvar tokenText string\n\tif s.tokStart >= 0 {\n\t\ttokenText = string(s.src[s.tokStart:s.tokEnd])\n\t}\n\ts.tokStart = s.tokEnd // ensure idempotency of tokenText() call\n\n\treturn token.Token{\n\t\tType: tok,\n\t\tPos:  s.tokPos,\n\t\tText: tokenText,\n\t}\n}\n\nfunc (s *Scanner) scanComment(ch rune) {\n\t// single line comments\n\tif ch == '#' || (ch == '/' && s.peek() != '*') {\n\t\tif ch == '/' && s.peek() != '/' {\n\t\t\ts.err(\"expected '/' for comment\")\n\t\t\treturn\n\t\t}\n\n\t\tch = s.next()\n\t\tfor ch != '\\n' && ch >= 0 && ch != eof {\n\t\t\tch = s.next()\n\t\t}\n\t\tif ch != eof && ch >= 0 {\n\t\t\ts.unread()\n\t\t}\n\t\treturn\n\t}\n\n\t// be sure we get the character after /* This allows us to find comment's\n\t// that are not erminated\n\tif ch == '/' {\n\t\ts.next()\n\t\tch = s.next() // read character after \"/*\"\n\t}\n\n\t// look for /* - style comments\n\tfor {\n\t\tif ch < 0 || ch == eof {\n\t\t\ts.err(\"comment not terminated\")\n\t\t\tbreak\n\t\t}\n\n\t\tch0 := ch\n\t\tch = s.next()\n\t\tif ch0 == '*' && ch == '/' {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// scanNumber scans a HCL number definition starting with the given rune\nfunc (s *Scanner) scanNumber(ch rune) token.Type {\n\tif ch == '0' {\n\t\t// check for hexadecimal, octal or float\n\t\tch = s.next()\n\t\tif ch == 'x' || ch == 'X' {\n\t\t\t// hexadecimal\n\t\t\tch = s.next()\n\t\t\tfound := false\n\t\t\tfor isHexadecimal(ch) {\n\t\t\t\tch = s.next()\n\t\t\t\tfound = true\n\t\t\t}\n\n\t\t\tif !found {\n\t\t\t\ts.err(\"illegal hexadecimal number\")\n\t\t\t}\n\n\t\t\tif ch != eof {\n\t\t\t\ts.unread()\n\t\t\t}\n\n\t\t\treturn token.NUMBER\n\t\t}\n\n\t\t// now it's either something like: 0421(octal) or 0.1231(float)\n\t\tillegalOctal := false\n\t\tfor isDecimal(ch) {\n\t\t\tch = s.next()\n\t\t\tif ch == '8' || ch == '9' {\n\t\t\t\t// this is just a possibility. For example 0159 is illegal, but\n\t\t\t\t// 0159.23 is valid. So we mark a possible illegal octal. If\n\t\t\t\t// the next character is not a period, we'll print the error.\n\t\t\t\tillegalOctal = true\n\t\t\t}\n\t\t}\n\n\t\tif ch == 'e' || ch == 'E' {\n\t\t\tch = s.scanExponent(ch)\n\t\t\treturn token.FLOAT\n\t\t}\n\n\t\tif ch == '.' {\n\t\t\tch = s.scanFraction(ch)\n\n\t\t\tif ch == 'e' || ch == 'E' {\n\t\t\t\tch = s.next()\n\t\t\t\tch = s.scanExponent(ch)\n\t\t\t}\n\t\t\treturn token.FLOAT\n\t\t}\n\n\t\tif illegalOctal {\n\t\t\ts.err(\"illegal octal number\")\n\t\t}\n\n\t\tif ch != eof {\n\t\t\ts.unread()\n\t\t}\n\t\treturn token.NUMBER\n\t}\n\n\ts.scanMantissa(ch)\n\tch = s.next() // seek forward\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.scanExponent(ch)\n\t\treturn token.FLOAT\n\t}\n\n\tif ch == '.' {\n\t\tch = s.scanFraction(ch)\n\t\tif ch == 'e' || ch == 'E' {\n\t\t\tch = s.next()\n\t\t\tch = s.scanExponent(ch)\n\t\t}\n\t\treturn token.FLOAT\n\t}\n\n\tif ch != eof {\n\t\ts.unread()\n\t}\n\treturn token.NUMBER\n}\n\n// scanMantissa scans the mantissa beginning from the rune. It returns the next\n// non decimal rune. It's used to determine wheter it's a fraction or exponent.\nfunc (s *Scanner) scanMantissa(ch rune) rune {\n\tscanned := false\n\tfor isDecimal(ch) {\n\t\tch = s.next()\n\t\tscanned = true\n\t}\n\n\tif scanned && ch != eof {\n\t\ts.unread()\n\t}\n\treturn ch\n}\n\n// scanFraction scans the fraction after the '.' rune\nfunc (s *Scanner) scanFraction(ch rune) rune {\n\tif ch == '.' {\n\t\tch = s.peek() // we peek just to see if we can move forward\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanExponent scans the remaining parts of an exponent after the 'e' or 'E'\n// rune.\nfunc (s *Scanner) scanExponent(ch rune) rune {\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.next()\n\t\tif ch == '-' || ch == '+' {\n\t\t\tch = s.next()\n\t\t}\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanHeredoc scans a heredoc string\nfunc (s *Scanner) scanHeredoc() {\n\t// Scan the second '<' in example: '<<EOF'\n\tif s.next() != '<' {\n\t\ts.err(\"heredoc expected second '<', didn't see it\")\n\t\treturn\n\t}\n\n\t// Get the original offset so we can read just the heredoc ident\n\toffs := s.srcPos.Offset\n\n\t// Scan the identifier\n\tch := s.next()\n\n\t// Indented heredoc syntax\n\tif ch == '-' {\n\t\tch = s.next()\n\t}\n\n\tfor isLetter(ch) || isDigit(ch) {\n\t\tch = s.next()\n\t}\n\n\t// If we reached an EOF then that is not good\n\tif ch == eof {\n\t\ts.err(\"heredoc not terminated\")\n\t\treturn\n\t}\n\n\t// Ignore the '\\r' in Windows line endings\n\tif ch == '\\r' {\n\t\tif s.peek() == '\\n' {\n\t\t\tch = s.next()\n\t\t}\n\t}\n\n\t// If we didn't reach a newline then that is also not good\n\tif ch != '\\n' {\n\t\ts.err(\"invalid characters in heredoc anchor\")\n\t\treturn\n\t}\n\n\t// Read the identifier\n\tidentBytes := s.src[offs : s.srcPos.Offset-s.lastCharLen]\n\tif len(identBytes) == 0 || (len(identBytes) == 1 && identBytes[0] == '-') {\n\t\ts.err(\"zero-length heredoc anchor\")\n\t\treturn\n\t}\n\n\tvar identRegexp *regexp.Regexp\n\tif identBytes[0] == '-' {\n\t\tidentRegexp = regexp.MustCompile(fmt.Sprintf(`^[[:space:]]*%s\\r*\\z`, identBytes[1:]))\n\t} else {\n\t\tidentRegexp = regexp.MustCompile(fmt.Sprintf(`^[[:space:]]*%s\\r*\\z`, identBytes))\n\t}\n\n\t// Read the actual string value\n\tlineStart := s.srcPos.Offset\n\tfor {\n\t\tch := s.next()\n\n\t\t// Special newline handling.\n\t\tif ch == '\\n' {\n\t\t\t// Math is fast, so we first compare the byte counts to see if we have a chance\n\t\t\t// of seeing the same identifier - if the length is less than the number of bytes\n\t\t\t// in the identifier, this cannot be a valid terminator.\n\t\t\tlineBytesLen := s.srcPos.Offset - s.lastCharLen - lineStart\n\t\t\tif lineBytesLen >= len(identBytes) && identRegexp.Match(s.src[lineStart:s.srcPos.Offset-s.lastCharLen]) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Not an anchor match, record the start of a new line\n\t\t\tlineStart = s.srcPos.Offset\n\t\t}\n\n\t\tif ch == eof {\n\t\t\ts.err(\"heredoc not terminated\")\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\n// scanString scans a quoted string\nfunc (s *Scanner) scanString() {\n\tbraces := 0\n\tfor {\n\t\t// '\"' opening already consumed\n\t\t// read character after quote\n\t\tch := s.next()\n\n\t\tif (ch == '\\n' && braces == 0) || ch < 0 || ch == eof {\n\t\t\ts.err(\"literal not terminated\")\n\t\t\treturn\n\t\t}\n\n\t\tif ch == '\"' && braces == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// If we're going into a ${} then we can ignore quotes for awhile\n\t\tif braces == 0 && ch == '$' && s.peek() == '{' {\n\t\t\tbraces++\n\t\t\ts.next()\n\t\t} else if braces > 0 && ch == '{' {\n\t\t\tbraces++\n\t\t}\n\t\tif braces > 0 && ch == '}' {\n\t\t\tbraces--\n\t\t}\n\n\t\tif ch == '\\\\' {\n\t\t\ts.scanEscape()\n\t\t}\n\t}\n\n\treturn\n}\n\n// scanEscape scans an escape sequence\nfunc (s *Scanner) scanEscape() rune {\n\t// http://en.cppreference.com/w/cpp/language/escape\n\tch := s.next() // read character after '/'\n\tswitch ch {\n\tcase 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\\\', '\"':\n\t\t// nothing to do\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t// octal notation\n\t\tch = s.scanDigits(ch, 8, 3)\n\tcase 'x':\n\t\t// hexademical notation\n\t\tch = s.scanDigits(s.next(), 16, 2)\n\tcase 'u':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 4)\n\tcase 'U':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 8)\n\tdefault:\n\t\ts.err(\"illegal char escape\")\n\t}\n\treturn ch\n}\n\n// scanDigits scans a rune with the given base for n times. For example an\n// octal notation \\184 would yield in scanDigits(ch, 8, 3)\nfunc (s *Scanner) scanDigits(ch rune, base, n int) rune {\n\tstart := n\n\tfor n > 0 && digitVal(ch) < base {\n\t\tch = s.next()\n\t\tif ch == eof {\n\t\t\t// If we see an EOF, we halt any more scanning of digits\n\t\t\t// immediately.\n\t\t\tbreak\n\t\t}\n\n\t\tn--\n\t}\n\tif n > 0 {\n\t\ts.err(\"illegal char escape\")\n\t}\n\n\tif n != start && ch != eof {\n\t\t// we scanned all digits, put the last non digit char back,\n\t\t// only if we read anything at all\n\t\ts.unread()\n\t}\n\n\treturn ch\n}\n\n// scanIdentifier scans an identifier and returns the literal string\nfunc (s *Scanner) scanIdentifier() string {\n\toffs := s.srcPos.Offset - s.lastCharLen\n\tch := s.next()\n\tfor isLetter(ch) || isDigit(ch) || ch == '-' || ch == '.' {\n\t\tch = s.next()\n\t}\n\n\tif ch != eof {\n\t\ts.unread() // we got identifier, put back latest char\n\t}\n\n\treturn string(s.src[offs:s.srcPos.Offset])\n}\n\n// recentPosition returns the position of the character immediately after the\n// character or token returned by the last call to Scan.\nfunc (s *Scanner) recentPosition() (pos token.Pos) {\n\tpos.Offset = s.srcPos.Offset - s.lastCharLen\n\tswitch {\n\tcase s.srcPos.Column > 0:\n\t\t// common case: last character was not a '\\n'\n\t\tpos.Line = s.srcPos.Line\n\t\tpos.Column = s.srcPos.Column\n\tcase s.lastLineLen > 0:\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\tpos.Line = s.srcPos.Line - 1\n\t\tpos.Column = s.lastLineLen\n\tdefault:\n\t\t// at the beginning of the source\n\t\tpos.Line = 1\n\t\tpos.Column = 1\n\t}\n\treturn\n}\n\n// err prints the error of any scanning to s.Error function. If the function is\n// not defined, by default it prints them to os.Stderr\nfunc (s *Scanner) err(msg string) {\n\ts.ErrorCount++\n\tpos := s.recentPosition()\n\n\tif s.Error != nil {\n\t\ts.Error(pos, msg)\n\t\treturn\n\t}\n\n\tfmt.Fprintf(os.Stderr, \"%s: %s\\n\", pos, msg)\n}\n\n// isHexadecimal returns true if the given rune is a letter\nfunc isLetter(ch rune) bool {\n\treturn 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch)\n}\n\n// isDigit returns true if the given rune is a decimal digit\nfunc isDigit(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch)\n}\n\n// isDecimal returns true if the given rune is a decimal number\nfunc isDecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9'\n}\n\n// isHexadecimal returns true if the given rune is an hexadecimal number\nfunc isHexadecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F'\n}\n\n// isWhitespace returns true if the rune is a space, tab, newline or carriage return\nfunc isWhitespace(ch rune) bool {\n\treturn ch == ' ' || ch == '\\t' || ch == '\\n' || ch == '\\r'\n}\n\n// digitVal returns the integer value of a given octal,decimal or hexadecimal rune\nfunc digitVal(ch rune) int {\n\tswitch {\n\tcase '0' <= ch && ch <= '9':\n\t\treturn int(ch - '0')\n\tcase 'a' <= ch && ch <= 'f':\n\t\treturn int(ch - 'a' + 10)\n\tcase 'A' <= ch && ch <= 'F':\n\t\treturn int(ch - 'A' + 10)\n\t}\n\treturn 16 // larger than any legal digit val\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go",
    "content": "package strconv\n\nimport (\n\t\"errors\"\n\t\"unicode/utf8\"\n)\n\n// ErrSyntax indicates that a value does not have the right syntax for the target type.\nvar ErrSyntax = errors.New(\"invalid syntax\")\n\n// Unquote interprets s as a single-quoted, double-quoted,\n// or backquoted Go string literal, returning the string value\n// that s quotes.  (If s is single-quoted, it would be a Go\n// character literal; Unquote returns the corresponding\n// one-character string.)\nfunc Unquote(s string) (t string, err error) {\n\tn := len(s)\n\tif n < 2 {\n\t\treturn \"\", ErrSyntax\n\t}\n\tquote := s[0]\n\tif quote != s[n-1] {\n\t\treturn \"\", ErrSyntax\n\t}\n\ts = s[1 : n-1]\n\n\tif quote != '\"' {\n\t\treturn \"\", ErrSyntax\n\t}\n\tif !contains(s, '$') && !contains(s, '{') && contains(s, '\\n') {\n\t\treturn \"\", ErrSyntax\n\t}\n\n\t// Is it trivial?  Avoid allocation.\n\tif !contains(s, '\\\\') && !contains(s, quote) && !contains(s, '$') {\n\t\tswitch quote {\n\t\tcase '\"':\n\t\t\treturn s, nil\n\t\tcase '\\'':\n\t\t\tr, size := utf8.DecodeRuneInString(s)\n\t\t\tif size == len(s) && (r != utf8.RuneError || size != 1) {\n\t\t\t\treturn s, nil\n\t\t\t}\n\t\t}\n\t}\n\n\tvar runeTmp [utf8.UTFMax]byte\n\tbuf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations.\n\tfor len(s) > 0 {\n\t\t// If we're starting a '${}' then let it through un-unquoted.\n\t\t// Specifically: we don't unquote any characters within the `${}`\n\t\t// section.\n\t\tif s[0] == '$' && len(s) > 1 && s[1] == '{' {\n\t\t\tbuf = append(buf, '$', '{')\n\t\t\ts = s[2:]\n\n\t\t\t// Continue reading until we find the closing brace, copying as-is\n\t\t\tbraces := 1\n\t\t\tfor len(s) > 0 && braces > 0 {\n\t\t\t\tr, size := utf8.DecodeRuneInString(s)\n\t\t\t\tif r == utf8.RuneError {\n\t\t\t\t\treturn \"\", ErrSyntax\n\t\t\t\t}\n\n\t\t\t\ts = s[size:]\n\n\t\t\t\tn := utf8.EncodeRune(runeTmp[:], r)\n\t\t\t\tbuf = append(buf, runeTmp[:n]...)\n\n\t\t\t\tswitch r {\n\t\t\t\tcase '{':\n\t\t\t\t\tbraces++\n\t\t\t\tcase '}':\n\t\t\t\t\tbraces--\n\t\t\t\t}\n\t\t\t}\n\t\t\tif braces != 0 {\n\t\t\t\treturn \"\", ErrSyntax\n\t\t\t}\n\t\t\tif len(s) == 0 {\n\t\t\t\t// If there's no string left, we're done!\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\t// If there's more left, we need to pop back up to the top of the loop\n\t\t\t\t// in case there's another interpolation in this string.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif s[0] == '\\n' {\n\t\t\treturn \"\", ErrSyntax\n\t\t}\n\n\t\tc, multibyte, ss, err := unquoteChar(s, quote)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\ts = ss\n\t\tif c < utf8.RuneSelf || !multibyte {\n\t\t\tbuf = append(buf, byte(c))\n\t\t} else {\n\t\t\tn := utf8.EncodeRune(runeTmp[:], c)\n\t\t\tbuf = append(buf, runeTmp[:n]...)\n\t\t}\n\t\tif quote == '\\'' && len(s) != 0 {\n\t\t\t// single-quoted must be single character\n\t\t\treturn \"\", ErrSyntax\n\t\t}\n\t}\n\treturn string(buf), nil\n}\n\n// contains reports whether the string contains the byte c.\nfunc contains(s string, c byte) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == c {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc unhex(b byte) (v rune, ok bool) {\n\tc := rune(b)\n\tswitch {\n\tcase '0' <= c && c <= '9':\n\t\treturn c - '0', true\n\tcase 'a' <= c && c <= 'f':\n\t\treturn c - 'a' + 10, true\n\tcase 'A' <= c && c <= 'F':\n\t\treturn c - 'A' + 10, true\n\t}\n\treturn\n}\n\nfunc unquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error) {\n\t// easy cases\n\tswitch c := s[0]; {\n\tcase c == quote && (quote == '\\'' || quote == '\"'):\n\t\terr = ErrSyntax\n\t\treturn\n\tcase c >= utf8.RuneSelf:\n\t\tr, size := utf8.DecodeRuneInString(s)\n\t\treturn r, true, s[size:], nil\n\tcase c != '\\\\':\n\t\treturn rune(s[0]), false, s[1:], nil\n\t}\n\n\t// hard case: c is backslash\n\tif len(s) <= 1 {\n\t\terr = ErrSyntax\n\t\treturn\n\t}\n\tc := s[1]\n\ts = s[2:]\n\n\tswitch c {\n\tcase 'a':\n\t\tvalue = '\\a'\n\tcase 'b':\n\t\tvalue = '\\b'\n\tcase 'f':\n\t\tvalue = '\\f'\n\tcase 'n':\n\t\tvalue = '\\n'\n\tcase 'r':\n\t\tvalue = '\\r'\n\tcase 't':\n\t\tvalue = '\\t'\n\tcase 'v':\n\t\tvalue = '\\v'\n\tcase 'x', 'u', 'U':\n\t\tn := 0\n\t\tswitch c {\n\t\tcase 'x':\n\t\t\tn = 2\n\t\tcase 'u':\n\t\t\tn = 4\n\t\tcase 'U':\n\t\t\tn = 8\n\t\t}\n\t\tvar v rune\n\t\tif len(s) < n {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tfor j := 0; j < n; j++ {\n\t\t\tx, ok := unhex(s[j])\n\t\t\tif !ok {\n\t\t\t\terr = ErrSyntax\n\t\t\t\treturn\n\t\t\t}\n\t\t\tv = v<<4 | x\n\t\t}\n\t\ts = s[n:]\n\t\tif c == 'x' {\n\t\t\t// single-byte string, possibly not UTF-8\n\t\t\tvalue = v\n\t\t\tbreak\n\t\t}\n\t\tif v > utf8.MaxRune {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tvalue = v\n\t\tmultibyte = true\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\tv := rune(c) - '0'\n\t\tif len(s) < 2 {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tfor j := 0; j < 2; j++ { // one digit already; two more\n\t\t\tx := rune(s[j]) - '0'\n\t\t\tif x < 0 || x > 7 {\n\t\t\t\terr = ErrSyntax\n\t\t\t\treturn\n\t\t\t}\n\t\t\tv = (v << 3) | x\n\t\t}\n\t\ts = s[2:]\n\t\tif v > 255 {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tvalue = v\n\tcase '\\\\':\n\t\tvalue = '\\\\'\n\tcase '\\'', '\"':\n\t\tif c != quote {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tvalue = rune(c)\n\tdefault:\n\t\terr = ErrSyntax\n\t\treturn\n\t}\n\ttail = s\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/token/position.go",
    "content": "package token\n\nimport \"fmt\"\n\n// Pos describes an arbitrary source position\n// including the file, line, and column location.\n// A Position is valid if the line number is > 0.\ntype Pos struct {\n\tFilename string // filename, if any\n\tOffset   int    // offset, starting at 0\n\tLine     int    // line number, starting at 1\n\tColumn   int    // column number, starting at 1 (character count)\n}\n\n// IsValid returns true if the position is valid.\nfunc (p *Pos) IsValid() bool { return p.Line > 0 }\n\n// String returns a string in one of several forms:\n//\n//\tfile:line:column    valid position with file name\n//\tline:column         valid position without file name\n//\tfile                invalid position with file name\n//\t-                   invalid position without file name\nfunc (p Pos) String() string {\n\ts := p.Filename\n\tif p.IsValid() {\n\t\tif s != \"\" {\n\t\t\ts += \":\"\n\t\t}\n\t\ts += fmt.Sprintf(\"%d:%d\", p.Line, p.Column)\n\t}\n\tif s == \"\" {\n\t\ts = \"-\"\n\t}\n\treturn s\n}\n\n// Before reports whether the position p is before u.\nfunc (p Pos) Before(u Pos) bool {\n\treturn u.Offset > p.Offset || u.Line > p.Line\n}\n\n// After reports whether the position p is after u.\nfunc (p Pos) After(u Pos) bool {\n\treturn u.Offset < p.Offset || u.Line < p.Line\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl/token/token.go",
    "content": "// Package token defines constants representing the lexical tokens for HCL\n// (HashiCorp Configuration Language)\npackage token\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\thclstrconv \"github.com/hashicorp/hcl/hcl/strconv\"\n)\n\n// Token defines a single HCL token which can be obtained via the Scanner\ntype Token struct {\n\tType Type\n\tPos  Pos\n\tText string\n\tJSON bool\n}\n\n// Type is the set of lexical tokens of the HCL (HashiCorp Configuration Language)\ntype Type int\n\nconst (\n\t// Special tokens\n\tILLEGAL Type = iota\n\tEOF\n\tCOMMENT\n\n\tidentifier_beg\n\tIDENT // literals\n\tliteral_beg\n\tNUMBER  // 12345\n\tFLOAT   // 123.45\n\tBOOL    // true,false\n\tSTRING  // \"abc\"\n\tHEREDOC // <<FOO\\nbar\\nFOO\n\tliteral_end\n\tidentifier_end\n\n\toperator_beg\n\tLBRACK // [\n\tLBRACE // {\n\tCOMMA  // ,\n\tPERIOD // .\n\n\tRBRACK // ]\n\tRBRACE // }\n\n\tASSIGN // =\n\tADD    // +\n\tSUB    // -\n\toperator_end\n)\n\nvar tokens = [...]string{\n\tILLEGAL: \"ILLEGAL\",\n\n\tEOF:     \"EOF\",\n\tCOMMENT: \"COMMENT\",\n\n\tIDENT:  \"IDENT\",\n\tNUMBER: \"NUMBER\",\n\tFLOAT:  \"FLOAT\",\n\tBOOL:   \"BOOL\",\n\tSTRING: \"STRING\",\n\n\tLBRACK:  \"LBRACK\",\n\tLBRACE:  \"LBRACE\",\n\tCOMMA:   \"COMMA\",\n\tPERIOD:  \"PERIOD\",\n\tHEREDOC: \"HEREDOC\",\n\n\tRBRACK: \"RBRACK\",\n\tRBRACE: \"RBRACE\",\n\n\tASSIGN: \"ASSIGN\",\n\tADD:    \"ADD\",\n\tSUB:    \"SUB\",\n}\n\n// String returns the string corresponding to the token tok.\nfunc (t Type) String() string {\n\ts := \"\"\n\tif 0 <= t && t < Type(len(tokens)) {\n\t\ts = tokens[t]\n\t}\n\tif s == \"\" {\n\t\ts = \"token(\" + strconv.Itoa(int(t)) + \")\"\n\t}\n\treturn s\n}\n\n// IsIdentifier returns true for tokens corresponding to identifiers and basic\n// type literals; it returns false otherwise.\nfunc (t Type) IsIdentifier() bool { return identifier_beg < t && t < identifier_end }\n\n// IsLiteral returns true for tokens corresponding to basic type literals; it\n// returns false otherwise.\nfunc (t Type) IsLiteral() bool { return literal_beg < t && t < literal_end }\n\n// IsOperator returns true for tokens corresponding to operators and\n// delimiters; it returns false otherwise.\nfunc (t Type) IsOperator() bool { return operator_beg < t && t < operator_end }\n\n// String returns the token's literal text. Note that this is only\n// applicable for certain token types, such as token.IDENT,\n// token.STRING, etc..\nfunc (t Token) String() string {\n\treturn fmt.Sprintf(\"%s %s %s\", t.Pos.String(), t.Type.String(), t.Text)\n}\n\n// Value returns the properly typed value for this token. The type of\n// the returned interface{} is guaranteed based on the Type field.\n//\n// This can only be called for literal types. If it is called for any other\n// type, this will panic.\nfunc (t Token) Value() interface{} {\n\tswitch t.Type {\n\tcase BOOL:\n\t\tif t.Text == \"true\" {\n\t\t\treturn true\n\t\t} else if t.Text == \"false\" {\n\t\t\treturn false\n\t\t}\n\n\t\tpanic(\"unknown bool value: \" + t.Text)\n\tcase FLOAT:\n\t\tv, err := strconv.ParseFloat(t.Text, 64)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\treturn float64(v)\n\tcase NUMBER:\n\t\tv, err := strconv.ParseInt(t.Text, 0, 64)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\treturn int64(v)\n\tcase IDENT:\n\t\treturn t.Text\n\tcase HEREDOC:\n\t\treturn unindentHeredoc(t.Text)\n\tcase STRING:\n\t\t// Determine the Unquote method to use. If it came from JSON,\n\t\t// then we need to use the built-in unquote since we have to\n\t\t// escape interpolations there.\n\t\tf := hclstrconv.Unquote\n\t\tif t.JSON {\n\t\t\tf = strconv.Unquote\n\t\t}\n\n\t\t// This case occurs if json null is used\n\t\tif t.Text == \"\" {\n\t\t\treturn \"\"\n\t\t}\n\n\t\tv, err := f(t.Text)\n\t\tif err != nil {\n\t\t\tpanic(fmt.Sprintf(\"unquote %s err: %s\", t.Text, err))\n\t\t}\n\n\t\treturn v\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unimplemented Value for type: %s\", t.Type))\n\t}\n}\n\n// unindentHeredoc returns the string content of a HEREDOC if it is started with <<\n// and the content of a HEREDOC with the hanging indent removed if it is started with\n// a <<-, and the terminating line is at least as indented as the least indented line.\nfunc unindentHeredoc(heredoc string) string {\n\t// We need to find the end of the marker\n\tidx := strings.IndexByte(heredoc, '\\n')\n\tif idx == -1 {\n\t\tpanic(\"heredoc doesn't contain newline\")\n\t}\n\n\tunindent := heredoc[2] == '-'\n\n\t// We can optimize if the heredoc isn't marked for indentation\n\tif !unindent {\n\t\treturn string(heredoc[idx+1 : len(heredoc)-idx+1])\n\t}\n\n\t// We need to unindent each line based on the indentation level of the marker\n\tlines := strings.Split(string(heredoc[idx+1:len(heredoc)-idx+2]), \"\\n\")\n\twhitespacePrefix := lines[len(lines)-1]\n\n\tisIndented := true\n\tfor _, v := range lines {\n\t\tif strings.HasPrefix(v, whitespacePrefix) {\n\t\t\tcontinue\n\t\t}\n\n\t\tisIndented = false\n\t\tbreak\n\t}\n\n\t// If all lines are not at least as indented as the terminating mark, return the\n\t// heredoc as is, but trim the leading space from the marker on the final line.\n\tif !isIndented {\n\t\treturn strings.TrimRight(string(heredoc[idx+1:len(heredoc)-idx+1]), \" \\t\")\n\t}\n\n\tunindentedLines := make([]string, len(lines))\n\tfor k, v := range lines {\n\t\tif k == len(lines)-1 {\n\t\t\tunindentedLines[k] = \"\"\n\t\t\tbreak\n\t\t}\n\n\t\tunindentedLines[k] = strings.TrimPrefix(v, whitespacePrefix)\n\t}\n\n\treturn strings.Join(unindentedLines, \"\\n\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/hcl.go",
    "content": "// Package hcl decodes HCL into usable Go structures.\n//\n// hcl input can come in either pure HCL format or JSON format.\n// It can be parsed into an AST, and then decoded into a structure,\n// or it can be decoded directly from a string into a structure.\n//\n// If you choose to parse HCL into a raw AST, the benefit is that you\n// can write custom visitor implementations to implement custom\n// semantic checks. By default, HCL does not perform any semantic\n// checks.\npackage hcl\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/json/parser/flatten.go",
    "content": "package parser\n\nimport \"github.com/hashicorp/hcl/hcl/ast\"\n\n// flattenObjects takes an AST node, walks it, and flattens\nfunc flattenObjects(node ast.Node) {\n\tast.Walk(node, func(n ast.Node) (ast.Node, bool) {\n\t\t// We only care about lists, because this is what we modify\n\t\tlist, ok := n.(*ast.ObjectList)\n\t\tif !ok {\n\t\t\treturn n, true\n\t\t}\n\n\t\t// Rebuild the item list\n\t\titems := make([]*ast.ObjectItem, 0, len(list.Items))\n\t\tfrontier := make([]*ast.ObjectItem, len(list.Items))\n\t\tcopy(frontier, list.Items)\n\t\tfor len(frontier) > 0 {\n\t\t\t// Pop the current item\n\t\t\tn := len(frontier)\n\t\t\titem := frontier[n-1]\n\t\t\tfrontier = frontier[:n-1]\n\n\t\t\tswitch v := item.Val.(type) {\n\t\t\tcase *ast.ObjectType:\n\t\t\t\titems, frontier = flattenObjectType(v, item, items, frontier)\n\t\t\tcase *ast.ListType:\n\t\t\t\titems, frontier = flattenListType(v, item, items, frontier)\n\t\t\tdefault:\n\t\t\t\titems = append(items, item)\n\t\t\t}\n\t\t}\n\n\t\t// Reverse the list since the frontier model runs things backwards\n\t\tfor i := len(items)/2 - 1; i >= 0; i-- {\n\t\t\topp := len(items) - 1 - i\n\t\t\titems[i], items[opp] = items[opp], items[i]\n\t\t}\n\n\t\t// Done! Set the original items\n\t\tlist.Items = items\n\t\treturn n, true\n\t})\n}\n\nfunc flattenListType(\n\tot *ast.ListType,\n\titem *ast.ObjectItem,\n\titems []*ast.ObjectItem,\n\tfrontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) {\n\t// If the list is empty, keep the original list\n\tif len(ot.List) == 0 {\n\t\titems = append(items, item)\n\t\treturn items, frontier\n\t}\n\n\t// All the elements of this object must also be objects!\n\tfor _, subitem := range ot.List {\n\t\tif _, ok := subitem.(*ast.ObjectType); !ok {\n\t\t\titems = append(items, item)\n\t\t\treturn items, frontier\n\t\t}\n\t}\n\n\t// Great! We have a match go through all the items and flatten\n\tfor _, elem := range ot.List {\n\t\t// Add it to the frontier so that we can recurse\n\t\tfrontier = append(frontier, &ast.ObjectItem{\n\t\t\tKeys:        item.Keys,\n\t\t\tAssign:      item.Assign,\n\t\t\tVal:         elem,\n\t\t\tLeadComment: item.LeadComment,\n\t\t\tLineComment: item.LineComment,\n\t\t})\n\t}\n\n\treturn items, frontier\n}\n\nfunc flattenObjectType(\n\tot *ast.ObjectType,\n\titem *ast.ObjectItem,\n\titems []*ast.ObjectItem,\n\tfrontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) {\n\t// If the list has no items we do not have to flatten anything\n\tif ot.List.Items == nil {\n\t\titems = append(items, item)\n\t\treturn items, frontier\n\t}\n\n\t// All the elements of this object must also be objects!\n\tfor _, subitem := range ot.List.Items {\n\t\tif _, ok := subitem.Val.(*ast.ObjectType); !ok {\n\t\t\titems = append(items, item)\n\t\t\treturn items, frontier\n\t\t}\n\t}\n\n\t// Great! We have a match go through all the items and flatten\n\tfor _, subitem := range ot.List.Items {\n\t\t// Copy the new key\n\t\tkeys := make([]*ast.ObjectKey, len(item.Keys)+len(subitem.Keys))\n\t\tcopy(keys, item.Keys)\n\t\tcopy(keys[len(item.Keys):], subitem.Keys)\n\n\t\t// Add it to the frontier so that we can recurse\n\t\tfrontier = append(frontier, &ast.ObjectItem{\n\t\t\tKeys:        keys,\n\t\t\tAssign:      item.Assign,\n\t\t\tVal:         subitem.Val,\n\t\t\tLeadComment: item.LeadComment,\n\t\t\tLineComment: item.LineComment,\n\t\t})\n\t}\n\n\treturn items, frontier\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/json/parser/parser.go",
    "content": "package parser\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\thcltoken \"github.com/hashicorp/hcl/hcl/token\"\n\t\"github.com/hashicorp/hcl/json/scanner\"\n\t\"github.com/hashicorp/hcl/json/token\"\n)\n\ntype Parser struct {\n\tsc *scanner.Scanner\n\n\t// Last read token\n\ttok       token.Token\n\tcommaPrev token.Token\n\n\tenableTrace bool\n\tindent      int\n\tn           int // buffer size (max = 1)\n}\n\nfunc newParser(src []byte) *Parser {\n\treturn &Parser{\n\t\tsc: scanner.New(src),\n\t}\n}\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc Parse(src []byte) (*ast.File, error) {\n\tp := newParser(src)\n\treturn p.Parse()\n}\n\nvar errEofToken = errors.New(\"EOF token found\")\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc (p *Parser) Parse() (*ast.File, error) {\n\tf := &ast.File{}\n\tvar err, scerr error\n\tp.sc.Error = func(pos token.Pos, msg string) {\n\t\tscerr = fmt.Errorf(\"%s: %s\", pos, msg)\n\t}\n\n\t// The root must be an object in JSON\n\tobject, err := p.object()\n\tif scerr != nil {\n\t\treturn nil, scerr\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We make our final node an object list so it is more HCL compatible\n\tf.Node = object.List\n\n\t// Flatten it, which finds patterns and turns them into more HCL-like\n\t// AST trees.\n\tflattenObjects(f.Node)\n\n\treturn f, nil\n}\n\nfunc (p *Parser) objectList() (*ast.ObjectList, error) {\n\tdefer un(trace(p, \"ParseObjectList\"))\n\tnode := &ast.ObjectList{}\n\n\tfor {\n\t\tn, err := p.objectItem()\n\t\tif err == errEofToken {\n\t\t\tbreak // we are finished\n\t\t}\n\n\t\t// we don't return a nil node, because might want to use already\n\t\t// collected items.\n\t\tif err != nil {\n\t\t\treturn node, err\n\t\t}\n\n\t\tnode.Add(n)\n\n\t\t// Check for a followup comma. If it isn't a comma, then we're done\n\t\tif tok := p.scan(); tok.Type != token.COMMA {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn node, nil\n}\n\n// objectItem parses a single object item\nfunc (p *Parser) objectItem() (*ast.ObjectItem, error) {\n\tdefer un(trace(p, \"ParseObjectItem\"))\n\n\tkeys, err := p.objectKey()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\to := &ast.ObjectItem{\n\t\tKeys: keys,\n\t}\n\n\tswitch p.tok.Type {\n\tcase token.COLON:\n\t\tpos := p.tok.Pos\n\t\to.Assign = hcltoken.Pos{\n\t\t\tFilename: pos.Filename,\n\t\t\tOffset:   pos.Offset,\n\t\t\tLine:     pos.Line,\n\t\t\tColumn:   pos.Column,\n\t\t}\n\n\t\to.Val, err = p.objectValue()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn o, nil\n}\n\n// objectKey parses an object key and returns a ObjectKey AST\nfunc (p *Parser) objectKey() ([]*ast.ObjectKey, error) {\n\tkeyCount := 0\n\tkeys := make([]*ast.ObjectKey, 0)\n\n\tfor {\n\t\ttok := p.scan()\n\t\tswitch tok.Type {\n\t\tcase token.EOF:\n\t\t\treturn nil, errEofToken\n\t\tcase token.STRING:\n\t\t\tkeyCount++\n\t\t\tkeys = append(keys, &ast.ObjectKey{\n\t\t\t\tToken: p.tok.HCLToken(),\n\t\t\t})\n\t\tcase token.COLON:\n\t\t\t// If we have a zero keycount it means that we never got\n\t\t\t// an object key, i.e. `{ :`. This is a syntax error.\n\t\t\tif keyCount == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"expected: STRING got: %s\", p.tok.Type)\n\t\t\t}\n\n\t\t\t// Done\n\t\t\treturn keys, nil\n\t\tcase token.ILLEGAL:\n\t\t\treturn nil, errors.New(\"illegal\")\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"expected: STRING got: %s\", p.tok.Type)\n\t\t}\n\t}\n}\n\n// object parses any type of object, such as number, bool, string, object or\n// list.\nfunc (p *Parser) objectValue() (ast.Node, error) {\n\tdefer un(trace(p, \"ParseObjectValue\"))\n\ttok := p.scan()\n\n\tswitch tok.Type {\n\tcase token.NUMBER, token.FLOAT, token.BOOL, token.NULL, token.STRING:\n\t\treturn p.literalType()\n\tcase token.LBRACE:\n\t\treturn p.objectType()\n\tcase token.LBRACK:\n\t\treturn p.listType()\n\tcase token.EOF:\n\t\treturn nil, errEofToken\n\t}\n\n\treturn nil, fmt.Errorf(\"Expected object value, got unknown token: %+v\", tok)\n}\n\n// object parses any type of object, such as number, bool, string, object or\n// list.\nfunc (p *Parser) object() (*ast.ObjectType, error) {\n\tdefer un(trace(p, \"ParseType\"))\n\ttok := p.scan()\n\n\tswitch tok.Type {\n\tcase token.LBRACE:\n\t\treturn p.objectType()\n\tcase token.EOF:\n\t\treturn nil, errEofToken\n\t}\n\n\treturn nil, fmt.Errorf(\"Expected object, got unknown token: %+v\", tok)\n}\n\n// objectType parses an object type and returns a ObjectType AST\nfunc (p *Parser) objectType() (*ast.ObjectType, error) {\n\tdefer un(trace(p, \"ParseObjectType\"))\n\n\t// we assume that the currently scanned token is a LBRACE\n\to := &ast.ObjectType{}\n\n\tl, err := p.objectList()\n\n\t// if we hit RBRACE, we are good to go (means we parsed all Items), if it's\n\t// not a RBRACE, it's an syntax error and we just return it.\n\tif err != nil && p.tok.Type != token.RBRACE {\n\t\treturn nil, err\n\t}\n\n\to.List = l\n\treturn o, nil\n}\n\n// listType parses a list type and returns a ListType AST\nfunc (p *Parser) listType() (*ast.ListType, error) {\n\tdefer un(trace(p, \"ParseListType\"))\n\n\t// we assume that the currently scanned token is a LBRACK\n\tl := &ast.ListType{}\n\n\tfor {\n\t\ttok := p.scan()\n\t\tswitch tok.Type {\n\t\tcase token.NUMBER, token.FLOAT, token.STRING:\n\t\t\tnode, err := p.literalType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tl.Add(node)\n\t\tcase token.COMMA:\n\t\t\tcontinue\n\t\tcase token.LBRACE:\n\t\t\tnode, err := p.objectType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tl.Add(node)\n\t\tcase token.BOOL:\n\t\t\t// TODO(arslan) should we support? not supported by HCL yet\n\t\tcase token.LBRACK:\n\t\t\t// TODO(arslan) should we support nested lists? Even though it's\n\t\t\t// written in README of HCL, it's not a part of the grammar\n\t\t\t// (not defined in parse.y)\n\t\tcase token.RBRACK:\n\t\t\t// finished\n\t\t\treturn l, nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unexpected token while parsing list: %s\", tok.Type)\n\t\t}\n\n\t}\n}\n\n// literalType parses a literal type and returns a LiteralType AST\nfunc (p *Parser) literalType() (*ast.LiteralType, error) {\n\tdefer un(trace(p, \"ParseLiteral\"))\n\n\treturn &ast.LiteralType{\n\t\tToken: p.tok.HCLToken(),\n\t}, nil\n}\n\n// scan returns the next token from the underlying scanner. If a token has\n// been unscanned then read that instead.\nfunc (p *Parser) scan() token.Token {\n\t// If we have a token on the buffer, then return it.\n\tif p.n != 0 {\n\t\tp.n = 0\n\t\treturn p.tok\n\t}\n\n\tp.tok = p.sc.Scan()\n\treturn p.tok\n}\n\n// unscan pushes the previously read token back onto the buffer.\nfunc (p *Parser) unscan() {\n\tp.n = 1\n}\n\n// ----------------------------------------------------------------------------\n// Parsing support\n\nfunc (p *Parser) printTrace(a ...interface{}) {\n\tif !p.enableTrace {\n\t\treturn\n\t}\n\n\tconst dots = \". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \"\n\tconst n = len(dots)\n\tfmt.Printf(\"%5d:%3d: \", p.tok.Pos.Line, p.tok.Pos.Column)\n\n\ti := 2 * p.indent\n\tfor i > n {\n\t\tfmt.Print(dots)\n\t\ti -= n\n\t}\n\t// i <= n\n\tfmt.Print(dots[0:i])\n\tfmt.Println(a...)\n}\n\nfunc trace(p *Parser, msg string) *Parser {\n\tp.printTrace(msg, \"(\")\n\tp.indent++\n\treturn p\n}\n\n// Usage pattern: defer un(trace(p, \"...\"))\nfunc un(p *Parser) {\n\tp.indent--\n\tp.printTrace(\")\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/json/scanner/scanner.go",
    "content": "package scanner\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/hashicorp/hcl/json/token\"\n)\n\n// eof represents a marker rune for the end of the reader.\nconst eof = rune(0)\n\n// Scanner defines a lexical scanner\ntype Scanner struct {\n\tbuf *bytes.Buffer // Source buffer for advancing and scanning\n\tsrc []byte        // Source buffer for immutable access\n\n\t// Source Position\n\tsrcPos  token.Pos // current position\n\tprevPos token.Pos // previous position, used for peek() method\n\n\tlastCharLen int // length of last character in bytes\n\tlastLineLen int // length of last line in characters (for correct column reporting)\n\n\ttokStart int // token text start position\n\ttokEnd   int // token text end  position\n\n\t// Error is called for each error encountered. If no Error\n\t// function is set, the error is reported to os.Stderr.\n\tError func(pos token.Pos, msg string)\n\n\t// ErrorCount is incremented by one for each error encountered.\n\tErrorCount int\n\n\t// tokPos is the start position of most recently scanned token; set by\n\t// Scan. The Filename field is always left untouched by the Scanner.  If\n\t// an error is reported (via Error) and Position is invalid, the scanner is\n\t// not inside a token.\n\ttokPos token.Pos\n}\n\n// New creates and initializes a new instance of Scanner using src as\n// its source content.\nfunc New(src []byte) *Scanner {\n\t// even though we accept a src, we read from a io.Reader compatible type\n\t// (*bytes.Buffer). So in the future we might easily change it to streaming\n\t// read.\n\tb := bytes.NewBuffer(src)\n\ts := &Scanner{\n\t\tbuf: b,\n\t\tsrc: src,\n\t}\n\n\t// srcPosition always starts with 1\n\ts.srcPos.Line = 1\n\treturn s\n}\n\n// next reads the next rune from the bufferred reader. Returns the rune(0) if\n// an error occurs (or io.EOF is returned).\nfunc (s *Scanner) next() rune {\n\tch, size, err := s.buf.ReadRune()\n\tif err != nil {\n\t\t// advance for error reporting\n\t\ts.srcPos.Column++\n\t\ts.srcPos.Offset += size\n\t\ts.lastCharLen = size\n\t\treturn eof\n\t}\n\n\tif ch == utf8.RuneError && size == 1 {\n\t\ts.srcPos.Column++\n\t\ts.srcPos.Offset += size\n\t\ts.lastCharLen = size\n\t\ts.err(\"illegal UTF-8 encoding\")\n\t\treturn ch\n\t}\n\n\t// remember last position\n\ts.prevPos = s.srcPos\n\n\ts.srcPos.Column++\n\ts.lastCharLen = size\n\ts.srcPos.Offset += size\n\n\tif ch == '\\n' {\n\t\ts.srcPos.Line++\n\t\ts.lastLineLen = s.srcPos.Column\n\t\ts.srcPos.Column = 0\n\t}\n\n\t// debug\n\t// fmt.Printf(\"ch: %q, offset:column: %d:%d\\n\", ch, s.srcPos.Offset, s.srcPos.Column)\n\treturn ch\n}\n\n// unread unreads the previous read Rune and updates the source position\nfunc (s *Scanner) unread() {\n\tif err := s.buf.UnreadRune(); err != nil {\n\t\tpanic(err) // this is user fault, we should catch it\n\t}\n\ts.srcPos = s.prevPos // put back last position\n}\n\n// peek returns the next rune without advancing the reader.\nfunc (s *Scanner) peek() rune {\n\tpeek, _, err := s.buf.ReadRune()\n\tif err != nil {\n\t\treturn eof\n\t}\n\n\ts.buf.UnreadRune()\n\treturn peek\n}\n\n// Scan scans the next token and returns the token.\nfunc (s *Scanner) Scan() token.Token {\n\tch := s.next()\n\n\t// skip white space\n\tfor isWhitespace(ch) {\n\t\tch = s.next()\n\t}\n\n\tvar tok token.Type\n\n\t// token text markings\n\ts.tokStart = s.srcPos.Offset - s.lastCharLen\n\n\t// token position, initial next() is moving the offset by one(size of rune\n\t// actually), though we are interested with the starting point\n\ts.tokPos.Offset = s.srcPos.Offset - s.lastCharLen\n\tif s.srcPos.Column > 0 {\n\t\t// common case: last character was not a '\\n'\n\t\ts.tokPos.Line = s.srcPos.Line\n\t\ts.tokPos.Column = s.srcPos.Column\n\t} else {\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\ts.tokPos.Line = s.srcPos.Line - 1\n\t\ts.tokPos.Column = s.lastLineLen\n\t}\n\n\tswitch {\n\tcase isLetter(ch):\n\t\tlit := s.scanIdentifier()\n\t\tif lit == \"true\" || lit == \"false\" {\n\t\t\ttok = token.BOOL\n\t\t} else if lit == \"null\" {\n\t\t\ttok = token.NULL\n\t\t} else {\n\t\t\ts.err(\"illegal char\")\n\t\t}\n\tcase isDecimal(ch):\n\t\ttok = s.scanNumber(ch)\n\tdefault:\n\t\tswitch ch {\n\t\tcase eof:\n\t\t\ttok = token.EOF\n\t\tcase '\"':\n\t\t\ttok = token.STRING\n\t\t\ts.scanString()\n\t\tcase '.':\n\t\t\ttok = token.PERIOD\n\t\t\tch = s.peek()\n\t\t\tif isDecimal(ch) {\n\t\t\t\ttok = token.FLOAT\n\t\t\t\tch = s.scanMantissa(ch)\n\t\t\t\tch = s.scanExponent(ch)\n\t\t\t}\n\t\tcase '[':\n\t\t\ttok = token.LBRACK\n\t\tcase ']':\n\t\t\ttok = token.RBRACK\n\t\tcase '{':\n\t\t\ttok = token.LBRACE\n\t\tcase '}':\n\t\t\ttok = token.RBRACE\n\t\tcase ',':\n\t\t\ttok = token.COMMA\n\t\tcase ':':\n\t\t\ttok = token.COLON\n\t\tcase '-':\n\t\t\tif isDecimal(s.peek()) {\n\t\t\t\tch := s.next()\n\t\t\t\ttok = s.scanNumber(ch)\n\t\t\t} else {\n\t\t\t\ts.err(\"illegal char\")\n\t\t\t}\n\t\tdefault:\n\t\t\ts.err(\"illegal char: \" + string(ch))\n\t\t}\n\t}\n\n\t// finish token ending\n\ts.tokEnd = s.srcPos.Offset\n\n\t// create token literal\n\tvar tokenText string\n\tif s.tokStart >= 0 {\n\t\ttokenText = string(s.src[s.tokStart:s.tokEnd])\n\t}\n\ts.tokStart = s.tokEnd // ensure idempotency of tokenText() call\n\n\treturn token.Token{\n\t\tType: tok,\n\t\tPos:  s.tokPos,\n\t\tText: tokenText,\n\t}\n}\n\n// scanNumber scans a HCL number definition starting with the given rune\nfunc (s *Scanner) scanNumber(ch rune) token.Type {\n\tzero := ch == '0'\n\tpos := s.srcPos\n\n\ts.scanMantissa(ch)\n\tch = s.next() // seek forward\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.scanExponent(ch)\n\t\treturn token.FLOAT\n\t}\n\n\tif ch == '.' {\n\t\tch = s.scanFraction(ch)\n\t\tif ch == 'e' || ch == 'E' {\n\t\t\tch = s.next()\n\t\t\tch = s.scanExponent(ch)\n\t\t}\n\t\treturn token.FLOAT\n\t}\n\n\tif ch != eof {\n\t\ts.unread()\n\t}\n\n\t// If we have a larger number and this is zero, error\n\tif zero && pos != s.srcPos {\n\t\ts.err(\"numbers cannot start with 0\")\n\t}\n\n\treturn token.NUMBER\n}\n\n// scanMantissa scans the mantissa beginning from the rune. It returns the next\n// non decimal rune. It's used to determine wheter it's a fraction or exponent.\nfunc (s *Scanner) scanMantissa(ch rune) rune {\n\tscanned := false\n\tfor isDecimal(ch) {\n\t\tch = s.next()\n\t\tscanned = true\n\t}\n\n\tif scanned && ch != eof {\n\t\ts.unread()\n\t}\n\treturn ch\n}\n\n// scanFraction scans the fraction after the '.' rune\nfunc (s *Scanner) scanFraction(ch rune) rune {\n\tif ch == '.' {\n\t\tch = s.peek() // we peek just to see if we can move forward\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanExponent scans the remaining parts of an exponent after the 'e' or 'E'\n// rune.\nfunc (s *Scanner) scanExponent(ch rune) rune {\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.next()\n\t\tif ch == '-' || ch == '+' {\n\t\t\tch = s.next()\n\t\t}\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanString scans a quoted string\nfunc (s *Scanner) scanString() {\n\tbraces := 0\n\tfor {\n\t\t// '\"' opening already consumed\n\t\t// read character after quote\n\t\tch := s.next()\n\n\t\tif ch == '\\n' || ch < 0 || ch == eof {\n\t\t\ts.err(\"literal not terminated\")\n\t\t\treturn\n\t\t}\n\n\t\tif ch == '\"' {\n\t\t\tbreak\n\t\t}\n\n\t\t// If we're going into a ${} then we can ignore quotes for awhile\n\t\tif braces == 0 && ch == '$' && s.peek() == '{' {\n\t\t\tbraces++\n\t\t\ts.next()\n\t\t} else if braces > 0 && ch == '{' {\n\t\t\tbraces++\n\t\t}\n\t\tif braces > 0 && ch == '}' {\n\t\t\tbraces--\n\t\t}\n\n\t\tif ch == '\\\\' {\n\t\t\ts.scanEscape()\n\t\t}\n\t}\n\n\treturn\n}\n\n// scanEscape scans an escape sequence\nfunc (s *Scanner) scanEscape() rune {\n\t// http://en.cppreference.com/w/cpp/language/escape\n\tch := s.next() // read character after '/'\n\tswitch ch {\n\tcase 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\\\', '\"':\n\t\t// nothing to do\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t// octal notation\n\t\tch = s.scanDigits(ch, 8, 3)\n\tcase 'x':\n\t\t// hexademical notation\n\t\tch = s.scanDigits(s.next(), 16, 2)\n\tcase 'u':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 4)\n\tcase 'U':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 8)\n\tdefault:\n\t\ts.err(\"illegal char escape\")\n\t}\n\treturn ch\n}\n\n// scanDigits scans a rune with the given base for n times. For example an\n// octal notation \\184 would yield in scanDigits(ch, 8, 3)\nfunc (s *Scanner) scanDigits(ch rune, base, n int) rune {\n\tfor n > 0 && digitVal(ch) < base {\n\t\tch = s.next()\n\t\tn--\n\t}\n\tif n > 0 {\n\t\ts.err(\"illegal char escape\")\n\t}\n\n\t// we scanned all digits, put the last non digit char back\n\ts.unread()\n\treturn ch\n}\n\n// scanIdentifier scans an identifier and returns the literal string\nfunc (s *Scanner) scanIdentifier() string {\n\toffs := s.srcPos.Offset - s.lastCharLen\n\tch := s.next()\n\tfor isLetter(ch) || isDigit(ch) || ch == '-' {\n\t\tch = s.next()\n\t}\n\n\tif ch != eof {\n\t\ts.unread() // we got identifier, put back latest char\n\t}\n\n\treturn string(s.src[offs:s.srcPos.Offset])\n}\n\n// recentPosition returns the position of the character immediately after the\n// character or token returned by the last call to Scan.\nfunc (s *Scanner) recentPosition() (pos token.Pos) {\n\tpos.Offset = s.srcPos.Offset - s.lastCharLen\n\tswitch {\n\tcase s.srcPos.Column > 0:\n\t\t// common case: last character was not a '\\n'\n\t\tpos.Line = s.srcPos.Line\n\t\tpos.Column = s.srcPos.Column\n\tcase s.lastLineLen > 0:\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\tpos.Line = s.srcPos.Line - 1\n\t\tpos.Column = s.lastLineLen\n\tdefault:\n\t\t// at the beginning of the source\n\t\tpos.Line = 1\n\t\tpos.Column = 1\n\t}\n\treturn\n}\n\n// err prints the error of any scanning to s.Error function. If the function is\n// not defined, by default it prints them to os.Stderr\nfunc (s *Scanner) err(msg string) {\n\ts.ErrorCount++\n\tpos := s.recentPosition()\n\n\tif s.Error != nil {\n\t\ts.Error(pos, msg)\n\t\treturn\n\t}\n\n\tfmt.Fprintf(os.Stderr, \"%s: %s\\n\", pos, msg)\n}\n\n// isHexadecimal returns true if the given rune is a letter\nfunc isLetter(ch rune) bool {\n\treturn 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch)\n}\n\n// isHexadecimal returns true if the given rune is a decimal digit\nfunc isDigit(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch)\n}\n\n// isHexadecimal returns true if the given rune is a decimal number\nfunc isDecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9'\n}\n\n// isHexadecimal returns true if the given rune is an hexadecimal number\nfunc isHexadecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F'\n}\n\n// isWhitespace returns true if the rune is a space, tab, newline or carriage return\nfunc isWhitespace(ch rune) bool {\n\treturn ch == ' ' || ch == '\\t' || ch == '\\n' || ch == '\\r'\n}\n\n// digitVal returns the integer value of a given octal,decimal or hexadecimal rune\nfunc digitVal(ch rune) int {\n\tswitch {\n\tcase '0' <= ch && ch <= '9':\n\t\treturn int(ch - '0')\n\tcase 'a' <= ch && ch <= 'f':\n\t\treturn int(ch - 'a' + 10)\n\tcase 'A' <= ch && ch <= 'F':\n\t\treturn int(ch - 'A' + 10)\n\t}\n\treturn 16 // larger than any legal digit val\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/json/token/position.go",
    "content": "package token\n\nimport \"fmt\"\n\n// Pos describes an arbitrary source position\n// including the file, line, and column location.\n// A Position is valid if the line number is > 0.\ntype Pos struct {\n\tFilename string // filename, if any\n\tOffset   int    // offset, starting at 0\n\tLine     int    // line number, starting at 1\n\tColumn   int    // column number, starting at 1 (character count)\n}\n\n// IsValid returns true if the position is valid.\nfunc (p *Pos) IsValid() bool { return p.Line > 0 }\n\n// String returns a string in one of several forms:\n//\n//\tfile:line:column    valid position with file name\n//\tline:column         valid position without file name\n//\tfile                invalid position with file name\n//\t-                   invalid position without file name\nfunc (p Pos) String() string {\n\ts := p.Filename\n\tif p.IsValid() {\n\t\tif s != \"\" {\n\t\t\ts += \":\"\n\t\t}\n\t\ts += fmt.Sprintf(\"%d:%d\", p.Line, p.Column)\n\t}\n\tif s == \"\" {\n\t\ts = \"-\"\n\t}\n\treturn s\n}\n\n// Before reports whether the position p is before u.\nfunc (p Pos) Before(u Pos) bool {\n\treturn u.Offset > p.Offset || u.Line > p.Line\n}\n\n// After reports whether the position p is after u.\nfunc (p Pos) After(u Pos) bool {\n\treturn u.Offset < p.Offset || u.Line < p.Line\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/json/token/token.go",
    "content": "package token\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\n\thcltoken \"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// Token defines a single HCL token which can be obtained via the Scanner\ntype Token struct {\n\tType Type\n\tPos  Pos\n\tText string\n}\n\n// Type is the set of lexical tokens of the HCL (HashiCorp Configuration Language)\ntype Type int\n\nconst (\n\t// Special tokens\n\tILLEGAL Type = iota\n\tEOF\n\n\tidentifier_beg\n\tliteral_beg\n\tNUMBER // 12345\n\tFLOAT  // 123.45\n\tBOOL   // true,false\n\tSTRING // \"abc\"\n\tNULL   // null\n\tliteral_end\n\tidentifier_end\n\n\toperator_beg\n\tLBRACK // [\n\tLBRACE // {\n\tCOMMA  // ,\n\tPERIOD // .\n\tCOLON  // :\n\n\tRBRACK // ]\n\tRBRACE // }\n\n\toperator_end\n)\n\nvar tokens = [...]string{\n\tILLEGAL: \"ILLEGAL\",\n\n\tEOF: \"EOF\",\n\n\tNUMBER: \"NUMBER\",\n\tFLOAT:  \"FLOAT\",\n\tBOOL:   \"BOOL\",\n\tSTRING: \"STRING\",\n\tNULL:   \"NULL\",\n\n\tLBRACK: \"LBRACK\",\n\tLBRACE: \"LBRACE\",\n\tCOMMA:  \"COMMA\",\n\tPERIOD: \"PERIOD\",\n\tCOLON:  \"COLON\",\n\n\tRBRACK: \"RBRACK\",\n\tRBRACE: \"RBRACE\",\n}\n\n// String returns the string corresponding to the token tok.\nfunc (t Type) String() string {\n\ts := \"\"\n\tif 0 <= t && t < Type(len(tokens)) {\n\t\ts = tokens[t]\n\t}\n\tif s == \"\" {\n\t\ts = \"token(\" + strconv.Itoa(int(t)) + \")\"\n\t}\n\treturn s\n}\n\n// IsIdentifier returns true for tokens corresponding to identifiers and basic\n// type literals; it returns false otherwise.\nfunc (t Type) IsIdentifier() bool { return identifier_beg < t && t < identifier_end }\n\n// IsLiteral returns true for tokens corresponding to basic type literals; it\n// returns false otherwise.\nfunc (t Type) IsLiteral() bool { return literal_beg < t && t < literal_end }\n\n// IsOperator returns true for tokens corresponding to operators and\n// delimiters; it returns false otherwise.\nfunc (t Type) IsOperator() bool { return operator_beg < t && t < operator_end }\n\n// String returns the token's literal text. Note that this is only\n// applicable for certain token types, such as token.IDENT,\n// token.STRING, etc..\nfunc (t Token) String() string {\n\treturn fmt.Sprintf(\"%s %s %s\", t.Pos.String(), t.Type.String(), t.Text)\n}\n\n// HCLToken converts this token to an HCL token.\n//\n// The token type must be a literal type or this will panic.\nfunc (t Token) HCLToken() hcltoken.Token {\n\tswitch t.Type {\n\tcase BOOL:\n\t\treturn hcltoken.Token{Type: hcltoken.BOOL, Text: t.Text}\n\tcase FLOAT:\n\t\treturn hcltoken.Token{Type: hcltoken.FLOAT, Text: t.Text}\n\tcase NULL:\n\t\treturn hcltoken.Token{Type: hcltoken.STRING, Text: \"\"}\n\tcase NUMBER:\n\t\treturn hcltoken.Token{Type: hcltoken.NUMBER, Text: t.Text}\n\tcase STRING:\n\t\treturn hcltoken.Token{Type: hcltoken.STRING, Text: t.Text, JSON: true}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unimplemented HCLToken for type: %s\", t.Type))\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/lex.go",
    "content": "package hcl\n\nimport (\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\ntype lexModeValue byte\n\nconst (\n\tlexModeUnknown lexModeValue = iota\n\tlexModeHcl\n\tlexModeJson\n)\n\n// lexMode returns whether we're going to be parsing in JSON\n// mode or HCL mode.\nfunc lexMode(v []byte) lexModeValue {\n\tvar (\n\t\tr      rune\n\t\tw      int\n\t\toffset int\n\t)\n\n\tfor {\n\t\tr, w = utf8.DecodeRune(v[offset:])\n\t\toffset += w\n\t\tif unicode.IsSpace(r) {\n\t\t\tcontinue\n\t\t}\n\t\tif r == '{' {\n\t\t\treturn lexModeJson\n\t\t}\n\t\tbreak\n\t}\n\n\treturn lexModeHcl\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/hashicorp/hcl/parse.go",
    "content": "package hcl\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\thclParser \"github.com/hashicorp/hcl/hcl/parser\"\n\tjsonParser \"github.com/hashicorp/hcl/json/parser\"\n)\n\n// ParseBytes accepts as input byte slice and returns ast tree.\n//\n// Input can be either JSON or HCL\nfunc ParseBytes(in []byte) (*ast.File, error) {\n\treturn parse(in)\n}\n\n// ParseString accepts input as a string and returns ast tree.\nfunc ParseString(input string) (*ast.File, error) {\n\treturn parse([]byte(input))\n}\n\nfunc parse(in []byte) (*ast.File, error) {\n\tswitch lexMode(in) {\n\tcase lexModeHcl:\n\t\treturn hclParser.Parse(in)\n\tcase lexModeJson:\n\t\treturn jsonParser.Parse(in)\n\t}\n\n\treturn nil, fmt.Errorf(\"unknown config format\")\n}\n\n// Parse parses the given input and returns the root object.\n//\n// The input format can be either HCL or JSON.\nfunc Parse(input string) (*ast.File, error) {\n\treturn parse([]byte(input))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 labstack\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/color/README.md",
    "content": "# Color\n\nStyle terminal text.\n\n## Installation\n\n```sh\ngo get github.com/labstack/gommon/color\n```\n\n## Windows?\n\nTry [cmder](http://bliker.github.io/cmder) or https://github.com/mattn/go-colorable\n\n## [Usage](https://github.com/labstack/gommon/blob/master/color/color_test.go)\n\n```sh\nimport github.com/labstack/gommon/color\n```\n\n### Colored text\n\n```go\ncolor.Println(color.Black(\"black\"))\ncolor.Println(color.Red(\"red\"))\ncolor.Println(color.Green(\"green\"))\ncolor.Println(color.Yellow(\"yellow\"))\ncolor.Println(color.Blue(\"blue\"))\ncolor.Println(color.Magenta(\"magenta\"))\ncolor.Println(color.Cyan(\"cyan\"))\ncolor.Println(color.White(\"white\"))\ncolor.Println(color.Grey(\"grey\"))\n```\n![Colored Text](http://i.imgur.com/8RtY1QR.png)\n\n### Colored background\n\n```go\ncolor.Println(color.BlackBg(\"black background\", color.Wht))\ncolor.Println(color.RedBg(\"red background\"))\ncolor.Println(color.GreenBg(\"green background\"))\ncolor.Println(color.YellowBg(\"yellow background\"))\ncolor.Println(color.BlueBg(\"blue background\"))\ncolor.Println(color.MagentaBg(\"magenta background\"))\ncolor.Println(color.CyanBg(\"cyan background\"))\ncolor.Println(color.WhiteBg(\"white background\"))\n```\n![Colored Background](http://i.imgur.com/SrrS6lw.png)\n\n### Emphasis\n\n```go\ncolor.Println(color.Bold(\"bold\"))\ncolor.Println(color.Dim(\"dim\"))\ncolor.Println(color.Italic(\"italic\"))\ncolor.Println(color.Underline(\"underline\"))\ncolor.Println(color.Inverse(\"inverse\"))\ncolor.Println(color.Hidden(\"hidden\"))\ncolor.Println(color.Strikeout(\"strikeout\"))\n```\n![Emphasis](http://i.imgur.com/3RSJBbc.png)\n\n### Mix and match\n\n```go\ncolor.Println(color.Green(\"bold green with white background\", color.B, color.WhtBg))\ncolor.Println(color.Red(\"underline red\", color.U))\ncolor.Println(color.Yellow(\"dim yellow\", color.D))\ncolor.Println(color.Cyan(\"inverse cyan\", color.In))\ncolor.Println(color.Blue(\"bold underline dim blue\", color.B, color.U, color.D))\n```\n![Mix and match](http://i.imgur.com/jWGq9Ca.png)\n\n### Enable/Disable the package\n\n```go\ncolor.Disable()\ncolor.Enable()\n```\n\n### New instance\n\n```go\nc := New()\nc.Green(\"green\")\n```\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/color/color.go",
    "content": "package color\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/mattn/go-colorable\"\n\t\"github.com/mattn/go-isatty\"\n)\n\ntype (\n\tinner func(interface{}, []string, *Color) string\n)\n\n// Color styles\nconst (\n\t// Blk Black text style\n\tBlk = \"30\"\n\t// Rd red text style\n\tRd = \"31\"\n\t// Grn green text style\n\tGrn = \"32\"\n\t// Yel yellow text style\n\tYel = \"33\"\n\t// Blu blue text style\n\tBlu = \"34\"\n\t// Mgn magenta text style\n\tMgn = \"35\"\n\t// Cyn cyan text style\n\tCyn = \"36\"\n\t// Wht white text style\n\tWht = \"37\"\n\t// Gry grey text style\n\tGry = \"90\"\n\n\t// BlkBg black background style\n\tBlkBg = \"40\"\n\t// RdBg red background style\n\tRdBg = \"41\"\n\t// GrnBg green background style\n\tGrnBg = \"42\"\n\t// YelBg yellow background style\n\tYelBg = \"43\"\n\t// BluBg blue background style\n\tBluBg = \"44\"\n\t// MgnBg magenta background style\n\tMgnBg = \"45\"\n\t// CynBg cyan background style\n\tCynBg = \"46\"\n\t// WhtBg white background style\n\tWhtBg = \"47\"\n\n\t// R reset emphasis style\n\tR = \"0\"\n\t// B bold emphasis style\n\tB = \"1\"\n\t// D dim emphasis style\n\tD = \"2\"\n\t// I italic emphasis style\n\tI = \"3\"\n\t// U underline emphasis style\n\tU = \"4\"\n\t// In inverse emphasis style\n\tIn = \"7\"\n\t// H hidden emphasis style\n\tH = \"8\"\n\t// S strikeout emphasis style\n\tS = \"9\"\n)\n\nvar (\n\tblack   = outer(Blk)\n\tred     = outer(Rd)\n\tgreen   = outer(Grn)\n\tyellow  = outer(Yel)\n\tblue    = outer(Blu)\n\tmagenta = outer(Mgn)\n\tcyan    = outer(Cyn)\n\twhite   = outer(Wht)\n\tgrey    = outer(Gry)\n\n\tblackBg   = outer(BlkBg)\n\tredBg     = outer(RdBg)\n\tgreenBg   = outer(GrnBg)\n\tyellowBg  = outer(YelBg)\n\tblueBg    = outer(BluBg)\n\tmagentaBg = outer(MgnBg)\n\tcyanBg    = outer(CynBg)\n\twhiteBg   = outer(WhtBg)\n\n\treset     = outer(R)\n\tbold      = outer(B)\n\tdim       = outer(D)\n\titalic    = outer(I)\n\tunderline = outer(U)\n\tinverse   = outer(In)\n\thidden    = outer(H)\n\tstrikeout = outer(S)\n\n\tglobal = New()\n)\n\nfunc outer(n string) inner {\n\treturn func(msg interface{}, styles []string, c *Color) string {\n\t\t// TODO: Drop fmt to boost performance?\n\t\tif c.disabled {\n\t\t\treturn fmt.Sprintf(\"%v\", msg)\n\t\t}\n\n\t\tb := new(bytes.Buffer)\n\t\tb.WriteString(\"\\x1b[\")\n\t\tb.WriteString(n)\n\t\tfor _, s := range styles {\n\t\t\tb.WriteString(\";\")\n\t\t\tb.WriteString(s)\n\t\t}\n\t\tb.WriteString(\"m\")\n\t\treturn fmt.Sprintf(\"%s%v\\x1b[0m\", b.String(), msg)\n\t}\n}\n\ntype (\n\tColor struct {\n\t\toutput   io.Writer\n\t\tdisabled bool\n\t}\n)\n\n// New creates a Color instance.\nfunc New() (c *Color) {\n\tc = new(Color)\n\tc.SetOutput(colorable.NewColorableStdout())\n\treturn\n}\n\n// Output returns the output.\nfunc (c *Color) Output() io.Writer {\n\treturn c.output\n}\n\n// SetOutput sets the output.\nfunc (c *Color) SetOutput(w io.Writer) {\n\tc.output = w\n\tif w, ok := w.(*os.File); !ok || !isatty.IsTerminal(w.Fd()) {\n\t\tc.disabled = true\n\t}\n}\n\n// Disable disables the colors and styles.\nfunc (c *Color) Disable() {\n\tc.disabled = true\n}\n\n// Enable enables the colors and styles.\nfunc (c *Color) Enable() {\n\tc.disabled = false\n}\n\n// Print is analogous to `fmt.Print` with termial detection.\nfunc (c *Color) Print(args ...interface{}) {\n\tfmt.Fprint(c.output, args...)\n}\n\n// Println is analogous to `fmt.Println` with termial detection.\nfunc (c *Color) Println(args ...interface{}) {\n\tfmt.Fprintln(c.output, args...)\n}\n\n// Printf is analogous to `fmt.Printf` with termial detection.\nfunc (c *Color) Printf(format string, args ...interface{}) {\n\tfmt.Fprintf(c.output, format, args...)\n}\n\nfunc (c *Color) Black(msg interface{}, styles ...string) string {\n\treturn black(msg, styles, c)\n}\n\nfunc (c *Color) Red(msg interface{}, styles ...string) string {\n\treturn red(msg, styles, c)\n}\n\nfunc (c *Color) Green(msg interface{}, styles ...string) string {\n\treturn green(msg, styles, c)\n}\n\nfunc (c *Color) Yellow(msg interface{}, styles ...string) string {\n\treturn yellow(msg, styles, c)\n}\n\nfunc (c *Color) Blue(msg interface{}, styles ...string) string {\n\treturn blue(msg, styles, c)\n}\n\nfunc (c *Color) Magenta(msg interface{}, styles ...string) string {\n\treturn magenta(msg, styles, c)\n}\n\nfunc (c *Color) Cyan(msg interface{}, styles ...string) string {\n\treturn cyan(msg, styles, c)\n}\n\nfunc (c *Color) White(msg interface{}, styles ...string) string {\n\treturn white(msg, styles, c)\n}\n\nfunc (c *Color) Grey(msg interface{}, styles ...string) string {\n\treturn grey(msg, styles, c)\n}\n\nfunc (c *Color) BlackBg(msg interface{}, styles ...string) string {\n\treturn blackBg(msg, styles, c)\n}\n\nfunc (c *Color) RedBg(msg interface{}, styles ...string) string {\n\treturn redBg(msg, styles, c)\n}\n\nfunc (c *Color) GreenBg(msg interface{}, styles ...string) string {\n\treturn greenBg(msg, styles, c)\n}\n\nfunc (c *Color) YellowBg(msg interface{}, styles ...string) string {\n\treturn yellowBg(msg, styles, c)\n}\n\nfunc (c *Color) BlueBg(msg interface{}, styles ...string) string {\n\treturn blueBg(msg, styles, c)\n}\n\nfunc (c *Color) MagentaBg(msg interface{}, styles ...string) string {\n\treturn magentaBg(msg, styles, c)\n}\n\nfunc (c *Color) CyanBg(msg interface{}, styles ...string) string {\n\treturn cyanBg(msg, styles, c)\n}\n\nfunc (c *Color) WhiteBg(msg interface{}, styles ...string) string {\n\treturn whiteBg(msg, styles, c)\n}\n\nfunc (c *Color) Reset(msg interface{}, styles ...string) string {\n\treturn reset(msg, styles, c)\n}\n\nfunc (c *Color) Bold(msg interface{}, styles ...string) string {\n\treturn bold(msg, styles, c)\n}\n\nfunc (c *Color) Dim(msg interface{}, styles ...string) string {\n\treturn dim(msg, styles, c)\n}\n\nfunc (c *Color) Italic(msg interface{}, styles ...string) string {\n\treturn italic(msg, styles, c)\n}\n\nfunc (c *Color) Underline(msg interface{}, styles ...string) string {\n\treturn underline(msg, styles, c)\n}\n\nfunc (c *Color) Inverse(msg interface{}, styles ...string) string {\n\treturn inverse(msg, styles, c)\n}\n\nfunc (c *Color) Hidden(msg interface{}, styles ...string) string {\n\treturn hidden(msg, styles, c)\n}\n\nfunc (c *Color) Strikeout(msg interface{}, styles ...string) string {\n\treturn strikeout(msg, styles, c)\n}\n\n// Output returns the output.\nfunc Output() io.Writer {\n\treturn global.output\n}\n\n// SetOutput sets the output.\nfunc SetOutput(w io.Writer) {\n\tglobal.SetOutput(w)\n}\n\nfunc Disable() {\n\tglobal.Disable()\n}\n\nfunc Enable() {\n\tglobal.Enable()\n}\n\n// Print is analogous to `fmt.Print` with termial detection.\nfunc Print(args ...interface{}) {\n\tglobal.Print(args...)\n}\n\n// Println is analogous to `fmt.Println` with termial detection.\nfunc Println(args ...interface{}) {\n\tglobal.Println(args...)\n}\n\n// Printf is analogous to `fmt.Printf` with termial detection.\nfunc Printf(format string, args ...interface{}) {\n\tglobal.Printf(format, args...)\n}\n\nfunc Black(msg interface{}, styles ...string) string {\n\treturn global.Black(msg, styles...)\n}\n\nfunc Red(msg interface{}, styles ...string) string {\n\treturn global.Red(msg, styles...)\n}\n\nfunc Green(msg interface{}, styles ...string) string {\n\treturn global.Green(msg, styles...)\n}\n\nfunc Yellow(msg interface{}, styles ...string) string {\n\treturn global.Yellow(msg, styles...)\n}\n\nfunc Blue(msg interface{}, styles ...string) string {\n\treturn global.Blue(msg, styles...)\n}\n\nfunc Magenta(msg interface{}, styles ...string) string {\n\treturn global.Magenta(msg, styles...)\n}\n\nfunc Cyan(msg interface{}, styles ...string) string {\n\treturn global.Cyan(msg, styles...)\n}\n\nfunc White(msg interface{}, styles ...string) string {\n\treturn global.White(msg, styles...)\n}\n\nfunc Grey(msg interface{}, styles ...string) string {\n\treturn global.Grey(msg, styles...)\n}\n\nfunc BlackBg(msg interface{}, styles ...string) string {\n\treturn global.BlackBg(msg, styles...)\n}\n\nfunc RedBg(msg interface{}, styles ...string) string {\n\treturn global.RedBg(msg, styles...)\n}\n\nfunc GreenBg(msg interface{}, styles ...string) string {\n\treturn global.GreenBg(msg, styles...)\n}\n\nfunc YellowBg(msg interface{}, styles ...string) string {\n\treturn global.YellowBg(msg, styles...)\n}\n\nfunc BlueBg(msg interface{}, styles ...string) string {\n\treturn global.BlueBg(msg, styles...)\n}\n\nfunc MagentaBg(msg interface{}, styles ...string) string {\n\treturn global.MagentaBg(msg, styles...)\n}\n\nfunc CyanBg(msg interface{}, styles ...string) string {\n\treturn global.CyanBg(msg, styles...)\n}\n\nfunc WhiteBg(msg interface{}, styles ...string) string {\n\treturn global.WhiteBg(msg, styles...)\n}\n\nfunc Reset(msg interface{}, styles ...string) string {\n\treturn global.Reset(msg, styles...)\n}\n\nfunc Bold(msg interface{}, styles ...string) string {\n\treturn global.Bold(msg, styles...)\n}\n\nfunc Dim(msg interface{}, styles ...string) string {\n\treturn global.Dim(msg, styles...)\n}\n\nfunc Italic(msg interface{}, styles ...string) string {\n\treturn global.Italic(msg, styles...)\n}\n\nfunc Underline(msg interface{}, styles ...string) string {\n\treturn global.Underline(msg, styles...)\n}\n\nfunc Inverse(msg interface{}, styles ...string) string {\n\treturn global.Inverse(msg, styles...)\n}\n\nfunc Hidden(msg interface{}, styles ...string) string {\n\treturn global.Hidden(msg, styles...)\n}\n\nfunc Strikeout(msg interface{}, styles ...string) string {\n\treturn global.Strikeout(msg, styles...)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/log/README.md",
    "content": "## WORK IN PROGRESS\n\n### Usage\n\n[log_test.go](log_test.go)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/log/color.go",
    "content": "// +build !appengine\n\npackage log\n\nimport (\n\t\"io\"\n\n\t\"github.com/mattn/go-colorable\"\n)\n\nfunc output() io.Writer {\n\treturn colorable.NewColorableStdout()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/log/log.go",
    "content": "package log\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"runtime\"\n\t\"sync\"\n\t\"time\"\n\n\t\"strconv\"\n\n\t\"github.com/mattn/go-isatty\"\n\t\"github.com/valyala/fasttemplate\"\n\n\t\"github.com/labstack/gommon/color\"\n)\n\ntype (\n\tLogger struct {\n\t\tprefix     string\n\t\tlevel      Lvl\n\t\toutput     io.Writer\n\t\ttemplate   *fasttemplate.Template\n\t\tlevels     []string\n\t\tcolor      *color.Color\n\t\tbufferPool sync.Pool\n\t\tmutex      sync.Mutex\n\t}\n\n\tLvl uint8\n\n\tJSON map[string]interface{}\n)\n\nconst (\n\tDEBUG Lvl = iota\n\tINFO\n\tWARN\n\tERROR\n\tFATAL\n\tOFF\n)\n\nvar (\n\tglobal        = New(\"-\")\n\tdefaultHeader = `{\"time\":\"${time_rfc3339}\",\"level\":\"${level}\",\"prefix\":\"${prefix}\",` +\n\t\t`\"file\":\"${short_file}\",\"line\":\"${line}\"}`\n)\n\nfunc New(prefix string) (l *Logger) {\n\tl = &Logger{\n\t\tlevel:    INFO,\n\t\tprefix:   prefix,\n\t\ttemplate: l.newTemplate(defaultHeader),\n\t\tcolor:    color.New(),\n\t\tbufferPool: sync.Pool{\n\t\t\tNew: func() interface{} {\n\t\t\t\treturn bytes.NewBuffer(make([]byte, 256))\n\t\t\t},\n\t\t},\n\t}\n\tl.initLevels()\n\tl.SetOutput(output())\n\treturn\n}\n\nfunc (l *Logger) initLevels() {\n\tl.levels = []string{\n\t\tl.color.Blue(\"DEBUG\"),\n\t\tl.color.Green(\"INFO\"),\n\t\tl.color.Yellow(\"WARN\"),\n\t\tl.color.Red(\"ERROR\"),\n\t\tl.color.RedBg(\"FATAL\"),\n\t}\n}\n\nfunc (l *Logger) newTemplate(format string) *fasttemplate.Template {\n\treturn fasttemplate.New(format, \"${\", \"}\")\n}\n\nfunc (l *Logger) DisableColor() {\n\tl.color.Disable()\n\tl.initLevels()\n}\n\nfunc (l *Logger) EnableColor() {\n\tl.color.Enable()\n\tl.initLevels()\n}\n\nfunc (l *Logger) Prefix() string {\n\treturn l.prefix\n}\n\nfunc (l *Logger) SetPrefix(p string) {\n\tl.prefix = p\n}\n\nfunc (l *Logger) Level() Lvl {\n\treturn l.level\n}\n\nfunc (l *Logger) SetLevel(v Lvl) {\n\tl.level = v\n}\n\nfunc (l *Logger) Output() io.Writer {\n\treturn l.output\n}\n\nfunc (l *Logger) SetOutput(w io.Writer) {\n\tl.output = w\n\tif w, ok := w.(*os.File); !ok || !isatty.IsTerminal(w.Fd()) {\n\t\tl.DisableColor()\n\t}\n}\n\nfunc (l *Logger) Color() *color.Color {\n\treturn l.color\n}\n\nfunc (l *Logger) SetHeader(h string) {\n\tl.template = l.newTemplate(h)\n}\n\nfunc (l *Logger) Print(i ...interface{}) {\n\tfmt.Fprintln(l.output, i...)\n}\n\nfunc (l *Logger) Printf(format string, args ...interface{}) {\n\tfmt.Fprintf(l.output, format, args...)\n}\n\nfunc (l *Logger) Printj(j JSON) {\n\tjson.NewEncoder(l.output).Encode(j)\n}\n\nfunc (l *Logger) Debug(i ...interface{}) {\n\tl.log(DEBUG, \"\", i...)\n}\n\nfunc (l *Logger) Debugf(format string, args ...interface{}) {\n\tl.log(DEBUG, format, args...)\n}\n\nfunc (l *Logger) Debugj(j JSON) {\n\tl.log(DEBUG, \"json\", j)\n}\n\nfunc (l *Logger) Info(i ...interface{}) {\n\tl.log(INFO, \"\", i...)\n}\n\nfunc (l *Logger) Infof(format string, args ...interface{}) {\n\tl.log(INFO, format, args...)\n}\n\nfunc (l *Logger) Infoj(j JSON) {\n\tl.log(INFO, \"json\", j)\n}\n\nfunc (l *Logger) Warn(i ...interface{}) {\n\tl.log(WARN, \"\", i...)\n}\n\nfunc (l *Logger) Warnf(format string, args ...interface{}) {\n\tl.log(WARN, format, args...)\n}\n\nfunc (l *Logger) Warnj(j JSON) {\n\tl.log(WARN, \"json\", j)\n}\n\nfunc (l *Logger) Error(i ...interface{}) {\n\tl.log(ERROR, \"\", i...)\n}\n\nfunc (l *Logger) Errorf(format string, args ...interface{}) {\n\tl.log(ERROR, format, args...)\n}\n\nfunc (l *Logger) Errorj(j JSON) {\n\tl.log(ERROR, \"json\", j)\n}\n\nfunc (l *Logger) Fatal(i ...interface{}) {\n\tl.log(FATAL, \"\", i...)\n\tos.Exit(1)\n}\n\nfunc (l *Logger) Fatalf(format string, args ...interface{}) {\n\tl.log(FATAL, format, args...)\n\tos.Exit(1)\n}\n\nfunc (l *Logger) Fatalj(j JSON) {\n\tl.log(FATAL, \"json\", j)\n}\n\nfunc DisableColor() {\n\tglobal.DisableColor()\n}\n\nfunc EnableColor() {\n\tglobal.EnableColor()\n}\n\nfunc Prefix() string {\n\treturn global.Prefix()\n}\n\nfunc SetPrefix(p string) {\n\tglobal.SetPrefix(p)\n}\n\nfunc Level() Lvl {\n\treturn global.Level()\n}\n\nfunc SetLevel(v Lvl) {\n\tglobal.SetLevel(v)\n}\n\nfunc Output() io.Writer {\n\treturn global.Output()\n}\n\nfunc SetOutput(w io.Writer) {\n\tglobal.SetOutput(w)\n}\n\nfunc SetHeader(h string) {\n\tglobal.SetHeader(h)\n}\n\nfunc Print(i ...interface{}) {\n\tglobal.Print(i...)\n}\n\nfunc Printf(format string, args ...interface{}) {\n\tglobal.Printf(format, args...)\n}\n\nfunc Printj(j JSON) {\n\tglobal.Printj(j)\n}\n\nfunc Debug(i ...interface{}) {\n\tglobal.Debug(i...)\n}\n\nfunc Debugf(format string, args ...interface{}) {\n\tglobal.Debugf(format, args...)\n}\n\nfunc Debugj(j JSON) {\n\tglobal.Debugj(j)\n}\n\nfunc Info(i ...interface{}) {\n\tglobal.Info(i...)\n}\n\nfunc Infof(format string, args ...interface{}) {\n\tglobal.Infof(format, args...)\n}\n\nfunc Infoj(j JSON) {\n\tglobal.Infoj(j)\n}\n\nfunc Warn(i ...interface{}) {\n\tglobal.Warn(i...)\n}\n\nfunc Warnf(format string, args ...interface{}) {\n\tglobal.Warnf(format, args...)\n}\n\nfunc Warnj(j JSON) {\n\tglobal.Warnj(j)\n}\n\nfunc Error(i ...interface{}) {\n\tglobal.Error(i...)\n}\n\nfunc Errorf(format string, args ...interface{}) {\n\tglobal.Errorf(format, args...)\n}\n\nfunc Errorj(j JSON) {\n\tglobal.Errorj(j)\n}\n\nfunc Fatal(i ...interface{}) {\n\tglobal.Fatal(i...)\n}\n\nfunc Fatalf(format string, args ...interface{}) {\n\tglobal.Fatalf(format, args...)\n}\n\nfunc Fatalj(j JSON) {\n\tglobal.Fatalj(j)\n}\n\nfunc (l *Logger) log(v Lvl, format string, args ...interface{}) {\n\tl.mutex.Lock()\n\tdefer l.mutex.Unlock()\n\tbuf := l.bufferPool.Get().(*bytes.Buffer)\n\tbuf.Reset()\n\tdefer l.bufferPool.Put(buf)\n\t_, file, line, _ := runtime.Caller(3)\n\n\tif v >= l.level {\n\t\tmessage := \"\"\n\t\tif format == \"\" {\n\t\t\tmessage = fmt.Sprint(args...)\n\t\t} else if format == \"json\" {\n\t\t\tb, err := json.Marshal(args[0])\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tmessage = string(b)\n\t\t} else {\n\t\t\tmessage = fmt.Sprintf(format, args...)\n\t\t}\n\n\t\tif v >= ERROR {\n\t\t\t// panic(message)\n\t\t}\n\n\t\t_, err := l.template.ExecuteFunc(buf, func(w io.Writer, tag string) (int, error) {\n\t\t\tswitch tag {\n\t\t\tcase \"time_rfc3339\":\n\t\t\t\treturn w.Write([]byte(time.Now().Format(time.RFC3339)))\n\t\t\tcase \"level\":\n\t\t\t\treturn w.Write([]byte(l.levels[v]))\n\t\t\tcase \"prefix\":\n\t\t\t\treturn w.Write([]byte(l.prefix))\n\t\t\tcase \"long_file\":\n\t\t\t\treturn w.Write([]byte(file))\n\t\t\tcase \"short_file\":\n\t\t\t\treturn w.Write([]byte(path.Base(file)))\n\t\t\tcase \"line\":\n\t\t\t\treturn w.Write([]byte(strconv.Itoa(line)))\n\t\t\t}\n\t\t\treturn 0, nil\n\t\t})\n\n\t\tif err == nil {\n\t\t\ts := buf.String()\n\t\t\ti := buf.Len() - 1\n\t\t\tif s[i] == '}' {\n\t\t\t\t// JSON header\n\t\t\t\tbuf.Truncate(i)\n\t\t\t\tbuf.WriteByte(',')\n\t\t\t\tif format == \"json\" {\n\t\t\t\t\tbuf.WriteString(message[1:])\n\t\t\t\t} else {\n\t\t\t\t\tbuf.WriteString(`\"message\":\"`)\n\t\t\t\t\tbuf.WriteString(message)\n\t\t\t\t\tbuf.WriteString(`\"}`)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Text header\n\t\t\t\tbuf.WriteByte(' ')\n\t\t\t\tbuf.WriteString(message)\n\t\t\t}\n\t\t\tbuf.WriteByte('\\n')\n\t\t\tl.output.Write(buf.Bytes())\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/labstack/gommon/log/white.go",
    "content": "// +build appengine\n\npackage log\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\nfunc output() io.Writer {\n\treturn os.Stdout\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/.gitignore",
    "content": "*.sublime-project\n*.sublime-workspace\n*.un~\n*.swp\n.idea/\n*.iml\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/.travis.yml",
    "content": "language: go\ngo:\n    - 1.4.x\n    - 1.5.x\n    - 1.6.x\n    - 1.7.x\n    - 1.8.x\n    - 1.9.x\n    - \"1.10.x\"\n    - tip\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/CHANGELOG.md",
    "content": "## Changelog\n\n### [1.8](https://github.com/magiconair/properties/tree/v1.8) - 15 May 2018\n\n * [PR #26](https://github.com/magiconair/properties/pull/26): Disable expansion during loading\n\n   This adds the option to disable property expansion during loading.\n\n   Thanks to [@kmala](https://github.com/kmala) for the patch.\n\n### [1.7.6](https://github.com/magiconair/properties/tree/v1.7.6) - 14 Feb 2018\n\n * [PR #29](https://github.com/magiconair/properties/pull/29): Reworked expansion logic to handle more complex cases.\n\n   See PR for an example.\n\n   Thanks to [@yobert](https://github.com/yobert) for the fix.\n\n### [1.7.5](https://github.com/magiconair/properties/tree/v1.7.5) - 13 Feb 2018\n\n * [PR #28](https://github.com/magiconair/properties/pull/28): Support duplicate expansions in the same value\n\n   Values which expand the same key multiple times (e.g. `key=${a} ${a}`) will no longer fail\n   with a `circular reference error`.\n\n   Thanks to [@yobert](https://github.com/yobert) for the fix.\n\n### [1.7.4](https://github.com/magiconair/properties/tree/v1.7.4) - 31 Oct 2017\n\n * [Issue #23](https://github.com/magiconair/properties/issues/23): Ignore blank lines with whitespaces\n\n * [PR #24](https://github.com/magiconair/properties/pull/24): Update keys when DisableExpansion is enabled\n\n   Thanks to [@mgurov](https://github.com/mgurov) for the fix.\n\n### [1.7.3](https://github.com/magiconair/properties/tree/v1.7.3) - 10 Jul 2017\n\n * [Issue #17](https://github.com/magiconair/properties/issues/17): Add [SetValue()](http://godoc.org/github.com/magiconair/properties#Properties.SetValue) method to set values generically\n * [Issue #22](https://github.com/magiconair/properties/issues/22): Add [LoadMap()](http://godoc.org/github.com/magiconair/properties#LoadMap) function to load properties from a string map\n\n### [1.7.2](https://github.com/magiconair/properties/tree/v1.7.2) - 20 Mar 2017\n\n * [Issue #15](https://github.com/magiconair/properties/issues/15): Drop gocheck dependency\n * [PR #21](https://github.com/magiconair/properties/pull/21): Add [Map()](http://godoc.org/github.com/magiconair/properties#Properties.Map) and [FilterFunc()](http://godoc.org/github.com/magiconair/properties#Properties.FilterFunc)\n\n### [1.7.1](https://github.com/magiconair/properties/tree/v1.7.1) - 13 Jan 2017\n\n * [Issue #14](https://github.com/magiconair/properties/issues/14): Decouple TestLoadExpandedFile from `$USER`\n * [PR #12](https://github.com/magiconair/properties/pull/12): Load from files and URLs\n * [PR #16](https://github.com/magiconair/properties/pull/16): Keep gofmt happy\n * [PR #18](https://github.com/magiconair/properties/pull/18): Fix Delete() function\n\n### [1.7.0](https://github.com/magiconair/properties/tree/v1.7.0) - 20 Mar 2016\n\n * [Issue #10](https://github.com/magiconair/properties/issues/10): Add [LoadURL,LoadURLs,MustLoadURL,MustLoadURLs](http://godoc.org/github.com/magiconair/properties#LoadURL) method to load properties from a URL.\n * [Issue #11](https://github.com/magiconair/properties/issues/11): Add [LoadString,MustLoadString](http://godoc.org/github.com/magiconair/properties#LoadString) method to load properties from an UTF8 string.\n * [PR #8](https://github.com/magiconair/properties/pull/8): Add [MustFlag](http://godoc.org/github.com/magiconair/properties#Properties.MustFlag) method to provide overrides via command line flags. (@pascaldekloe)\n\n### [1.6.0](https://github.com/magiconair/properties/tree/v1.6.0) - 11 Dec 2015\n\n * Add [Decode](http://godoc.org/github.com/magiconair/properties#Properties.Decode) method to populate struct from properties via tags.\n\n### [1.5.6](https://github.com/magiconair/properties/tree/v1.5.6) - 18 Oct 2015\n\n * Vendored in gopkg.in/check.v1\n\n### [1.5.5](https://github.com/magiconair/properties/tree/v1.5.5) - 31 Jul 2015\n\n * [PR #6](https://github.com/magiconair/properties/pull/6): Add [Delete](http://godoc.org/github.com/magiconair/properties#Properties.Delete) method to remove keys including comments. (@gerbenjacobs)\n\n### [1.5.4](https://github.com/magiconair/properties/tree/v1.5.4) - 23 Jun 2015\n\n * [Issue #5](https://github.com/magiconair/properties/issues/5): Allow disabling of property expansion [DisableExpansion](http://godoc.org/github.com/magiconair/properties#Properties.DisableExpansion). When property expansion is disabled Properties become a simple key/value store and don't check for circular references.\n\n### [1.5.3](https://github.com/magiconair/properties/tree/v1.5.3) - 02 Jun 2015\n\n * [Issue #4](https://github.com/magiconair/properties/issues/4): Maintain key order in [Filter()](http://godoc.org/github.com/magiconair/properties#Properties.Filter), [FilterPrefix()](http://godoc.org/github.com/magiconair/properties#Properties.FilterPrefix) and [FilterRegexp()](http://godoc.org/github.com/magiconair/properties#Properties.FilterRegexp)\n\n### [1.5.2](https://github.com/magiconair/properties/tree/v1.5.2) - 10 Apr 2015\n\n * [Issue #3](https://github.com/magiconair/properties/issues/3): Don't print comments in [WriteComment()](http://godoc.org/github.com/magiconair/properties#Properties.WriteComment) if they are all empty\n * Add clickable links to README\n\n### [1.5.1](https://github.com/magiconair/properties/tree/v1.5.1) - 08 Dec 2014\n\n * Added [GetParsedDuration()](http://godoc.org/github.com/magiconair/properties#Properties.GetParsedDuration) and [MustGetParsedDuration()](http://godoc.org/github.com/magiconair/properties#Properties.MustGetParsedDuration) for values specified compatible with\n   [time.ParseDuration()](http://golang.org/pkg/time/#ParseDuration).\n\n### [1.5.0](https://github.com/magiconair/properties/tree/v1.5.0) - 18 Nov 2014\n\n * Added support for single and multi-line comments (reading, writing and updating)\n * The order of keys is now preserved\n * Calling [Set()](http://godoc.org/github.com/magiconair/properties#Properties.Set) with an empty key now silently ignores the call and does not create a new entry\n * Added a [MustSet()](http://godoc.org/github.com/magiconair/properties#Properties.MustSet) method\n * Migrated test library from launchpad.net/gocheck to [gopkg.in/check.v1](http://gopkg.in/check.v1)\n\n### [1.4.2](https://github.com/magiconair/properties/tree/v1.4.2) - 15 Nov 2014\n\n * [Issue #2](https://github.com/magiconair/properties/issues/2): Fixed goroutine leak in parser which created two lexers but cleaned up only one\n\n### [1.4.1](https://github.com/magiconair/properties/tree/v1.4.1) - 13 Nov 2014\n\n * [Issue #1](https://github.com/magiconair/properties/issues/1): Fixed bug in Keys() method which returned an empty string\n\n### [1.4.0](https://github.com/magiconair/properties/tree/v1.4.0) - 23 Sep 2014\n\n * Added [Keys()](http://godoc.org/github.com/magiconair/properties#Properties.Keys) to get the keys\n * Added [Filter()](http://godoc.org/github.com/magiconair/properties#Properties.Filter), [FilterRegexp()](http://godoc.org/github.com/magiconair/properties#Properties.FilterRegexp) and [FilterPrefix()](http://godoc.org/github.com/magiconair/properties#Properties.FilterPrefix) to get a subset of the properties\n\n### [1.3.0](https://github.com/magiconair/properties/tree/v1.3.0) - 18 Mar 2014\n\n* Added support for time.Duration\n* Made MustXXX() failure beha[ior configurable (log.Fatal, panic](https://github.com/magiconair/properties/tree/vior configurable (log.Fatal, panic) - custom)\n* Changed default of MustXXX() failure from panic to log.Fatal\n\n### [1.2.0](https://github.com/magiconair/properties/tree/v1.2.0) - 05 Mar 2014\n\n* Added MustGet... functions\n* Added support for int and uint with range checks on 32 bit platforms\n\n### [1.1.0](https://github.com/magiconair/properties/tree/v1.1.0) - 20 Jan 2014\n\n* Renamed from goproperties to properties\n* Added support for expansion of environment vars in\n  filenames and value expressions\n* Fixed bug where value expressions were not at the\n  start of the string\n\n### [1.0.0](https://github.com/magiconair/properties/tree/v1.0.0) - 7 Jan 2014\n\n* Initial release\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/LICENSE",
    "content": "goproperties - properties file decoder for Go\n\nCopyright (c) 2013-2018 - Frank Schroeder\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/README.md",
    "content": "[![](https://img.shields.io/github/tag/magiconair/properties.svg?style=flat-square&label=release)](https://github.com/magiconair/properties/releases)\n[![Travis CI Status](https://img.shields.io/travis/magiconair/properties.svg?branch=master&style=flat-square&label=travis)](https://travis-ci.org/magiconair/properties)\n[![Codeship CI Status](https://img.shields.io/codeship/16aaf660-f615-0135-b8f0-7e33b70920c0/master.svg?label=codeship&style=flat-square)](https://app.codeship.com/projects/274177\")\n[![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg?style=flat-square)](https://raw.githubusercontent.com/magiconair/properties/master/LICENSE)\n[![GoDoc](http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square)](http://godoc.org/github.com/magiconair/properties)\n\n# Overview\n\n#### Please run `git pull --tags` to update the tags. See [below](#updated-git-tags) why.\n\nproperties is a Go library for reading and writing properties files.\n\nIt supports reading from multiple files or URLs and Spring style recursive\nproperty expansion of expressions like `${key}` to their corresponding value.\nValue expressions can refer to other keys like in `${key}` or to environment\nvariables like in `${USER}`.  Filenames can also contain environment variables\nlike in `/home/${USER}/myapp.properties`.\n\nProperties can be decoded into structs, maps, arrays and values through\nstruct tags.\n\nComments and the order of keys are preserved. Comments can be modified\nand can be written to the output.\n\nThe properties library supports both ISO-8859-1 and UTF-8 encoded data.\n\nStarting from version 1.3.0 the behavior of the MustXXX() functions is\nconfigurable by providing a custom `ErrorHandler` function. The default has\nchanged from `panic` to `log.Fatal` but this is configurable and custom\nerror handling functions can be provided. See the package documentation for\ndetails.\n\nRead the full documentation on [GoDoc](https://godoc.org/github.com/magiconair/properties)   [![GoDoc](https://godoc.org/github.com/magiconair/properties?status.png)](https://godoc.org/github.com/magiconair/properties)\n\n## Getting Started\n\n```go\nimport (\n\t\"flag\"\n\t\"github.com/magiconair/properties\"\n)\n\nfunc main() {\n\t// init from a file\n\tp := properties.MustLoadFile(\"${HOME}/config.properties\", properties.UTF8)\n\n\t// or multiple files\n\tp = properties.MustLoadFiles([]string{\n\t\t\t\"${HOME}/config.properties\",\n\t\t\t\"${HOME}/config-${USER}.properties\",\n\t\t}, properties.UTF8, true)\n\n\t// or from a map\n\tp = properties.LoadMap(map[string]string{\"key\": \"value\", \"abc\": \"def\"})\n\n\t// or from a string\n\tp = properties.MustLoadString(\"key=value\\nabc=def\")\n\n\t// or from a URL\n\tp = properties.MustLoadURL(\"http://host/path\")\n\n\t// or from multiple URLs\n\tp = properties.MustLoadURL([]string{\n\t\t\t\"http://host/config\",\n\t\t\t\"http://host/config-${USER}\",\n\t\t}, true)\n\n\t// or from flags\n\tp.MustFlag(flag.CommandLine)\n\n\t// get values through getters\n\thost := p.MustGetString(\"host\")\n\tport := p.GetInt(\"port\", 8080)\n\n\t// or through Decode\n\ttype Config struct {\n\t\tHost    string        `properties:\"host\"`\n\t\tPort    int           `properties:\"port,default=9000\"`\n\t\tAccept  []string      `properties:\"accept,default=image/png;image;gif\"`\n\t\tTimeout time.Duration `properties:\"timeout,default=5s\"`\n\t}\n\tvar cfg Config\n\tif err := p.Decode(&cfg); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\n```\n\n## Installation and Upgrade\n\n```\n$ go get -u github.com/magiconair/properties\n```\n\n## License\n\n2 clause BSD license. See [LICENSE](https://github.com/magiconair/properties/blob/master/LICENSE) file for details.\n\n## ToDo\n\n* Dump contents with passwords and secrets obscured\n\n## Updated Git tags\n\n#### 13 Feb 2018\n\nI realized that all of the git tags I had pushed before v1.7.5 were lightweight tags\nand I've only recently learned that this doesn't play well with `git describe` 😞\n\nI have replaced all lightweight tags with signed tags using this script which should\nretain the commit date, name and email address. Please run `git pull --tags` to update them.\n\nWorst case you have to reclone the repo.\n\n```shell\n#!/bin/bash\ntag=$1\necho \"Updating $tag\"\ndate=$(git show ${tag}^0 --format=%aD | head -1)\nemail=$(git show ${tag}^0 --format=%aE | head -1)\nname=$(git show ${tag}^0 --format=%aN | head -1)\nGIT_COMMITTER_DATE=\"$date\" GIT_COMMITTER_NAME=\"$name\" GIT_COMMITTER_EMAIL=\"$email\" git tag -s -f ${tag} ${tag}^0 -m ${tag}\n```\n\nI apologize for the inconvenience.\n\nFrank\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/decode.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage properties\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Decode assigns property values to exported fields of a struct.\n//\n// Decode traverses v recursively and returns an error if a value cannot be\n// converted to the field type or a required value is missing for a field.\n//\n// The following type dependent decodings are used:\n//\n// String, boolean, numeric fields have the value of the property key assigned.\n// The property key name is the name of the field. A different key and a default\n// value can be set in the field's tag. Fields without default value are\n// required. If the value cannot be converted to the field type an error is\n// returned.\n//\n// time.Duration fields have the result of time.ParseDuration() assigned.\n//\n// time.Time fields have the vaule of time.Parse() assigned. The default layout\n// is time.RFC3339 but can be set in the field's tag.\n//\n// Arrays and slices of string, boolean, numeric, time.Duration and time.Time\n// fields have the value interpreted as a comma separated list of values. The\n// individual values are trimmed of whitespace and empty values are ignored. A\n// default value can be provided as a semicolon separated list in the field's\n// tag.\n//\n// Struct fields are decoded recursively using the field name plus \".\" as\n// prefix. The prefix (without dot) can be overridden in the field's tag.\n// Default values are not supported in the field's tag. Specify them on the\n// fields of the inner struct instead.\n//\n// Map fields must have a key of type string and are decoded recursively by\n// using the field's name plus \".' as prefix and the next element of the key\n// name as map key. The prefix (without dot) can be overridden in the field's\n// tag. Default values are not supported.\n//\n// Examples:\n//\n//     // Field is ignored.\n//     Field int `properties:\"-\"`\n//\n//     // Field is assigned value of 'Field'.\n//     Field int\n//\n//     // Field is assigned value of 'myName'.\n//     Field int `properties:\"myName\"`\n//\n//     // Field is assigned value of key 'myName' and has a default\n//     // value 15 if the key does not exist.\n//     Field int `properties:\"myName,default=15\"`\n//\n//     // Field is assigned value of key 'Field' and has a default\n//     // value 15 if the key does not exist.\n//     Field int `properties:\",default=15\"`\n//\n//     // Field is assigned value of key 'date' and the date\n//     // is in format 2006-01-02\n//     Field time.Time `properties:\"date,layout=2006-01-02\"`\n//\n//     // Field is assigned the non-empty and whitespace trimmed\n//     // values of key 'Field' split by commas.\n//     Field []string\n//\n//     // Field is assigned the non-empty and whitespace trimmed\n//     // values of key 'Field' split by commas and has a default\n//     // value [\"a\", \"b\", \"c\"] if the key does not exist.\n//     Field []string `properties:\",default=a;b;c\"`\n//\n//     // Field is decoded recursively with \"Field.\" as key prefix.\n//     Field SomeStruct\n//\n//     // Field is decoded recursively with \"myName.\" as key prefix.\n//     Field SomeStruct `properties:\"myName\"`\n//\n//     // Field is decoded recursively with \"Field.\" as key prefix\n//     // and the next dotted element of the key as map key.\n//     Field map[string]string\n//\n//     // Field is decoded recursively with \"myName.\" as key prefix\n//     // and the next dotted element of the key as map key.\n//     Field map[string]string `properties:\"myName\"`\nfunc (p *Properties) Decode(x interface{}) error {\n\tt, v := reflect.TypeOf(x), reflect.ValueOf(x)\n\tif t.Kind() != reflect.Ptr || v.Elem().Type().Kind() != reflect.Struct {\n\t\treturn fmt.Errorf(\"not a pointer to struct: %s\", t)\n\t}\n\tif err := dec(p, \"\", nil, nil, v); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc dec(p *Properties, key string, def *string, opts map[string]string, v reflect.Value) error {\n\tt := v.Type()\n\n\t// value returns the property value for key or the default if provided.\n\tvalue := func() (string, error) {\n\t\tif val, ok := p.Get(key); ok {\n\t\t\treturn val, nil\n\t\t}\n\t\tif def != nil {\n\t\t\treturn *def, nil\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"missing required key %s\", key)\n\t}\n\n\t// conv converts a string to a value of the given type.\n\tconv := func(s string, t reflect.Type) (val reflect.Value, err error) {\n\t\tvar v interface{}\n\n\t\tswitch {\n\t\tcase isDuration(t):\n\t\t\tv, err = time.ParseDuration(s)\n\n\t\tcase isTime(t):\n\t\t\tlayout := opts[\"layout\"]\n\t\t\tif layout == \"\" {\n\t\t\t\tlayout = time.RFC3339\n\t\t\t}\n\t\t\tv, err = time.Parse(layout, s)\n\n\t\tcase isBool(t):\n\t\t\tv, err = boolVal(s), nil\n\n\t\tcase isString(t):\n\t\t\tv, err = s, nil\n\n\t\tcase isFloat(t):\n\t\t\tv, err = strconv.ParseFloat(s, 64)\n\n\t\tcase isInt(t):\n\t\t\tv, err = strconv.ParseInt(s, 10, 64)\n\n\t\tcase isUint(t):\n\t\t\tv, err = strconv.ParseUint(s, 10, 64)\n\n\t\tdefault:\n\t\t\treturn reflect.Zero(t), fmt.Errorf(\"unsupported type %s\", t)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn reflect.Zero(t), err\n\t\t}\n\t\treturn reflect.ValueOf(v).Convert(t), nil\n\t}\n\n\t// keydef returns the property key and the default value based on the\n\t// name of the struct field and the options in the tag.\n\tkeydef := func(f reflect.StructField) (string, *string, map[string]string) {\n\t\t_key, _opts := parseTag(f.Tag.Get(\"properties\"))\n\n\t\tvar _def *string\n\t\tif d, ok := _opts[\"default\"]; ok {\n\t\t\t_def = &d\n\t\t}\n\t\tif _key != \"\" {\n\t\t\treturn _key, _def, _opts\n\t\t}\n\t\treturn f.Name, _def, _opts\n\t}\n\n\tswitch {\n\tcase isDuration(t) || isTime(t) || isBool(t) || isString(t) || isFloat(t) || isInt(t) || isUint(t):\n\t\ts, err := value()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tval, err := conv(s, t)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(val)\n\n\tcase isPtr(t):\n\t\treturn dec(p, key, def, opts, v.Elem())\n\n\tcase isStruct(t):\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tfv := v.Field(i)\n\t\t\tfk, def, opts := keydef(t.Field(i))\n\t\t\tif !fv.CanSet() {\n\t\t\t\treturn fmt.Errorf(\"cannot set %s\", t.Field(i).Name)\n\t\t\t}\n\t\t\tif fk == \"-\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif key != \"\" {\n\t\t\t\tfk = key + \".\" + fk\n\t\t\t}\n\t\t\tif err := dec(p, fk, def, opts, fv); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn nil\n\n\tcase isArray(t):\n\t\tval, err := value()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvals := split(val, \";\")\n\t\ta := reflect.MakeSlice(t, 0, len(vals))\n\t\tfor _, s := range vals {\n\t\t\tval, err := conv(s, t.Elem())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\ta = reflect.Append(a, val)\n\t\t}\n\t\tv.Set(a)\n\n\tcase isMap(t):\n\t\tvalT := t.Elem()\n\t\tm := reflect.MakeMap(t)\n\t\tfor postfix := range p.FilterStripPrefix(key + \".\").m {\n\t\t\tpp := strings.SplitN(postfix, \".\", 2)\n\t\t\tmk, mv := pp[0], reflect.New(valT)\n\t\t\tif err := dec(p, key+\".\"+mk, nil, nil, mv); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.SetMapIndex(reflect.ValueOf(mk), mv.Elem())\n\t\t}\n\t\tv.Set(m)\n\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported type %s\", t)\n\t}\n\treturn nil\n}\n\n// split splits a string on sep, trims whitespace of elements\n// and omits empty elements\nfunc split(s string, sep string) []string {\n\tvar a []string\n\tfor _, v := range strings.Split(s, sep) {\n\t\tif v = strings.TrimSpace(v); v != \"\" {\n\t\t\ta = append(a, v)\n\t\t}\n\t}\n\treturn a\n}\n\n// parseTag parses a \"key,k=v,k=v,...\"\nfunc parseTag(tag string) (key string, opts map[string]string) {\n\topts = map[string]string{}\n\tfor i, s := range strings.Split(tag, \",\") {\n\t\tif i == 0 {\n\t\t\tkey = s\n\t\t\tcontinue\n\t\t}\n\n\t\tpp := strings.SplitN(s, \"=\", 2)\n\t\tif len(pp) == 1 {\n\t\t\topts[pp[0]] = \"\"\n\t\t} else {\n\t\t\topts[pp[0]] = pp[1]\n\t\t}\n\t}\n\treturn key, opts\n}\n\nfunc isArray(t reflect.Type) bool    { return t.Kind() == reflect.Array || t.Kind() == reflect.Slice }\nfunc isBool(t reflect.Type) bool     { return t.Kind() == reflect.Bool }\nfunc isDuration(t reflect.Type) bool { return t == reflect.TypeOf(time.Second) }\nfunc isMap(t reflect.Type) bool      { return t.Kind() == reflect.Map }\nfunc isPtr(t reflect.Type) bool      { return t.Kind() == reflect.Ptr }\nfunc isString(t reflect.Type) bool   { return t.Kind() == reflect.String }\nfunc isStruct(t reflect.Type) bool   { return t.Kind() == reflect.Struct }\nfunc isTime(t reflect.Type) bool     { return t == reflect.TypeOf(time.Time{}) }\nfunc isFloat(t reflect.Type) bool {\n\treturn t.Kind() == reflect.Float32 || t.Kind() == reflect.Float64\n}\nfunc isInt(t reflect.Type) bool {\n\treturn t.Kind() == reflect.Int || t.Kind() == reflect.Int8 || t.Kind() == reflect.Int16 || t.Kind() == reflect.Int32 || t.Kind() == reflect.Int64\n}\nfunc isUint(t reflect.Type) bool {\n\treturn t.Kind() == reflect.Uint || t.Kind() == reflect.Uint8 || t.Kind() == reflect.Uint16 || t.Kind() == reflect.Uint32 || t.Kind() == reflect.Uint64\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/doc.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package properties provides functions for reading and writing\n// ISO-8859-1 and UTF-8 encoded .properties files and has\n// support for recursive property expansion.\n//\n// Java properties files are ISO-8859-1 encoded and use Unicode\n// literals for characters outside the ISO character set. Unicode\n// literals can be used in UTF-8 encoded properties files but\n// aren't necessary.\n//\n// To load a single properties file use MustLoadFile():\n//\n//   p := properties.MustLoadFile(filename, properties.UTF8)\n//\n// To load multiple properties files use MustLoadFiles()\n// which loads the files in the given order and merges the\n// result. Missing properties files can be ignored if the\n// 'ignoreMissing' flag is set to true.\n//\n// Filenames can contain environment variables which are expanded\n// before loading.\n//\n//   f1 := \"/etc/myapp/myapp.conf\"\n//   f2 := \"/home/${USER}/myapp.conf\"\n//   p := MustLoadFiles([]string{f1, f2}, properties.UTF8, true)\n//\n// All of the different key/value delimiters ' ', ':' and '=' are\n// supported as well as the comment characters '!' and '#' and\n// multi-line values.\n//\n//   ! this is a comment\n//   # and so is this\n//\n//   # the following expressions are equal\n//   key value\n//   key=value\n//   key:value\n//   key = value\n//   key : value\n//   key = val\\\n//         ue\n//\n// Properties stores all comments preceding a key and provides\n// GetComments() and SetComments() methods to retrieve and\n// update them. The convenience functions GetComment() and\n// SetComment() allow access to the last comment. The\n// WriteComment() method writes properties files including\n// the comments and with the keys in the original order.\n// This can be used for sanitizing properties files.\n//\n// Property expansion is recursive and circular references\n// and malformed expressions are not allowed and cause an\n// error. Expansion of environment variables is supported.\n//\n//   # standard property\n//   key = value\n//\n//   # property expansion: key2 = value\n//   key2 = ${key}\n//\n//   # recursive expansion: key3 = value\n//   key3 = ${key2}\n//\n//   # circular reference (error)\n//   key = ${key}\n//\n//   # malformed expression (error)\n//   key = ${ke\n//\n//   # refers to the users' home dir\n//   home = ${HOME}\n//\n//   # local key takes precedence over env var: u = foo\n//   USER = foo\n//   u = ${USER}\n//\n// The default property expansion format is ${key} but can be\n// changed by setting different pre- and postfix values on the\n// Properties object.\n//\n//   p := properties.NewProperties()\n//   p.Prefix = \"#[\"\n//   p.Postfix = \"]#\"\n//\n// Properties provides convenience functions for getting typed\n// values with default values if the key does not exist or the\n// type conversion failed.\n//\n//   # Returns true if the value is either \"1\", \"on\", \"yes\" or \"true\"\n//   # Returns false for every other value and the default value if\n//   # the key does not exist.\n//   v = p.GetBool(\"key\", false)\n//\n//   # Returns the value if the key exists and the format conversion\n//   # was successful. Otherwise, the default value is returned.\n//   v = p.GetInt64(\"key\", 999)\n//   v = p.GetUint64(\"key\", 999)\n//   v = p.GetFloat64(\"key\", 123.0)\n//   v = p.GetString(\"key\", \"def\")\n//   v = p.GetDuration(\"key\", 999)\n//\n// As an alternative properties may be applied with the standard\n// library's flag implementation at any time.\n//\n//   # Standard configuration\n//   v = flag.Int(\"key\", 999, \"help message\")\n//   flag.Parse()\n//\n//   # Merge p into the flag set\n//   p.MustFlag(flag.CommandLine)\n//\n// Properties provides several MustXXX() convenience functions\n// which will terminate the app if an error occurs. The behavior\n// of the failure is configurable and the default is to call\n// log.Fatal(err). To have the MustXXX() functions panic instead\n// of logging the error set a different ErrorHandler before\n// you use the Properties package.\n//\n//   properties.ErrorHandler = properties.PanicHandler\n//\n//   # Will panic instead of logging an error\n//   p := properties.MustLoadFile(\"config.properties\")\n//\n// You can also provide your own ErrorHandler function. The only requirement\n// is that the error handler function must exit after handling the error.\n//\n//   properties.ErrorHandler = func(err error) {\n//\t     fmt.Println(err)\n//       os.Exit(1)\n//   }\n//\n//   # Will write to stdout and then exit\n//   p := properties.MustLoadFile(\"config.properties\")\n//\n// Properties can also be loaded into a struct via the `Decode`\n// method, e.g.\n//\n//   type S struct {\n//       A string        `properties:\"a,default=foo\"`\n//       D time.Duration `properties:\"timeout,default=5s\"`\n//       E time.Time     `properties:\"expires,layout=2006-01-02,default=2015-01-01\"`\n//   }\n//\n// See `Decode()` method for the full documentation.\n//\n// The following documents provide a description of the properties\n// file format.\n//\n// http://en.wikipedia.org/wiki/.properties\n//\n// http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load%28java.io.Reader%29\n//\npackage properties\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/integrate.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage properties\n\nimport \"flag\"\n\n// MustFlag sets flags that are skipped by dst.Parse when p contains\n// the respective key for flag.Flag.Name.\n//\n// It's use is recommended with command line arguments as in:\n// \tflag.Parse()\n// \tp.MustFlag(flag.CommandLine)\nfunc (p *Properties) MustFlag(dst *flag.FlagSet) {\n\tm := make(map[string]*flag.Flag)\n\tdst.VisitAll(func(f *flag.Flag) {\n\t\tm[f.Name] = f\n\t})\n\tdst.Visit(func(f *flag.Flag) {\n\t\tdelete(m, f.Name) // overridden\n\t})\n\n\tfor name, f := range m {\n\t\tv, ok := p.Get(name)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := f.Value.Set(v); err != nil {\n\t\t\tErrorHandler(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/lex.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n// Parts of the lexer are from the template/text/parser package\n// For these parts the following applies:\n//\n// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file of the go 1.2\n// distribution.\n\npackage properties\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// item represents a token or text string returned from the scanner.\ntype item struct {\n\ttyp itemType // The type of this item.\n\tpos int      // The starting position, in bytes, of this item in the input string.\n\tval string   // The value of this item.\n}\n\nfunc (i item) String() string {\n\tswitch {\n\tcase i.typ == itemEOF:\n\t\treturn \"EOF\"\n\tcase i.typ == itemError:\n\t\treturn i.val\n\tcase len(i.val) > 10:\n\t\treturn fmt.Sprintf(\"%.10q...\", i.val)\n\t}\n\treturn fmt.Sprintf(\"%q\", i.val)\n}\n\n// itemType identifies the type of lex items.\ntype itemType int\n\nconst (\n\titemError itemType = iota // error occurred; value is text of error\n\titemEOF\n\titemKey     // a key\n\titemValue   // a value\n\titemComment // a comment\n)\n\n// defines a constant for EOF\nconst eof = -1\n\n// permitted whitespace characters space, FF and TAB\nconst whitespace = \" \\f\\t\"\n\n// stateFn represents the state of the scanner as a function that returns the next state.\ntype stateFn func(*lexer) stateFn\n\n// lexer holds the state of the scanner.\ntype lexer struct {\n\tinput   string    // the string being scanned\n\tstate   stateFn   // the next lexing function to enter\n\tpos     int       // current position in the input\n\tstart   int       // start position of this item\n\twidth   int       // width of last rune read from input\n\tlastPos int       // position of most recent item returned by nextItem\n\trunes   []rune    // scanned runes for this item\n\titems   chan item // channel of scanned items\n}\n\n// next returns the next rune in the input.\nfunc (l *lexer) next() rune {\n\tif l.pos >= len(l.input) {\n\t\tl.width = 0\n\t\treturn eof\n\t}\n\tr, w := utf8.DecodeRuneInString(l.input[l.pos:])\n\tl.width = w\n\tl.pos += l.width\n\treturn r\n}\n\n// peek returns but does not consume the next rune in the input.\nfunc (l *lexer) peek() rune {\n\tr := l.next()\n\tl.backup()\n\treturn r\n}\n\n// backup steps back one rune. Can only be called once per call of next.\nfunc (l *lexer) backup() {\n\tl.pos -= l.width\n}\n\n// emit passes an item back to the client.\nfunc (l *lexer) emit(t itemType) {\n\ti := item{t, l.start, string(l.runes)}\n\tl.items <- i\n\tl.start = l.pos\n\tl.runes = l.runes[:0]\n}\n\n// ignore skips over the pending input before this point.\nfunc (l *lexer) ignore() {\n\tl.start = l.pos\n}\n\n// appends the rune to the current value\nfunc (l *lexer) appendRune(r rune) {\n\tl.runes = append(l.runes, r)\n}\n\n// accept consumes the next rune if it's from the valid set.\nfunc (l *lexer) accept(valid string) bool {\n\tif strings.ContainsRune(valid, l.next()) {\n\t\treturn true\n\t}\n\tl.backup()\n\treturn false\n}\n\n// acceptRun consumes a run of runes from the valid set.\nfunc (l *lexer) acceptRun(valid string) {\n\tfor strings.ContainsRune(valid, l.next()) {\n\t}\n\tl.backup()\n}\n\n// acceptRunUntil consumes a run of runes up to a terminator.\nfunc (l *lexer) acceptRunUntil(term rune) {\n\tfor term != l.next() {\n\t}\n\tl.backup()\n}\n\n// hasText returns true if the current parsed text is not empty.\nfunc (l *lexer) isNotEmpty() bool {\n\treturn l.pos > l.start\n}\n\n// lineNumber reports which line we're on, based on the position of\n// the previous item returned by nextItem. Doing it this way\n// means we don't have to worry about peek double counting.\nfunc (l *lexer) lineNumber() int {\n\treturn 1 + strings.Count(l.input[:l.lastPos], \"\\n\")\n}\n\n// errorf returns an error token and terminates the scan by passing\n// back a nil pointer that will be the next state, terminating l.nextItem.\nfunc (l *lexer) errorf(format string, args ...interface{}) stateFn {\n\tl.items <- item{itemError, l.start, fmt.Sprintf(format, args...)}\n\treturn nil\n}\n\n// nextItem returns the next item from the input.\nfunc (l *lexer) nextItem() item {\n\ti := <-l.items\n\tl.lastPos = i.pos\n\treturn i\n}\n\n// lex creates a new scanner for the input string.\nfunc lex(input string) *lexer {\n\tl := &lexer{\n\t\tinput: input,\n\t\titems: make(chan item),\n\t\trunes: make([]rune, 0, 32),\n\t}\n\tgo l.run()\n\treturn l\n}\n\n// run runs the state machine for the lexer.\nfunc (l *lexer) run() {\n\tfor l.state = lexBeforeKey(l); l.state != nil; {\n\t\tl.state = l.state(l)\n\t}\n}\n\n// state functions\n\n// lexBeforeKey scans until a key begins.\nfunc lexBeforeKey(l *lexer) stateFn {\n\tswitch r := l.next(); {\n\tcase isEOF(r):\n\t\tl.emit(itemEOF)\n\t\treturn nil\n\n\tcase isEOL(r):\n\t\tl.ignore()\n\t\treturn lexBeforeKey\n\n\tcase isComment(r):\n\t\treturn lexComment\n\n\tcase isWhitespace(r):\n\t\tl.ignore()\n\t\treturn lexBeforeKey\n\n\tdefault:\n\t\tl.backup()\n\t\treturn lexKey\n\t}\n}\n\n// lexComment scans a comment line. The comment character has already been scanned.\nfunc lexComment(l *lexer) stateFn {\n\tl.acceptRun(whitespace)\n\tl.ignore()\n\tfor {\n\t\tswitch r := l.next(); {\n\t\tcase isEOF(r):\n\t\t\tl.ignore()\n\t\t\tl.emit(itemEOF)\n\t\t\treturn nil\n\t\tcase isEOL(r):\n\t\t\tl.emit(itemComment)\n\t\t\treturn lexBeforeKey\n\t\tdefault:\n\t\t\tl.appendRune(r)\n\t\t}\n\t}\n}\n\n// lexKey scans the key up to a delimiter\nfunc lexKey(l *lexer) stateFn {\n\tvar r rune\n\nLoop:\n\tfor {\n\t\tswitch r = l.next(); {\n\n\t\tcase isEscape(r):\n\t\t\terr := l.scanEscapeSequence()\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\n\t\tcase isEndOfKey(r):\n\t\t\tl.backup()\n\t\t\tbreak Loop\n\n\t\tcase isEOF(r):\n\t\t\tbreak Loop\n\n\t\tdefault:\n\t\t\tl.appendRune(r)\n\t\t}\n\t}\n\n\tif len(l.runes) > 0 {\n\t\tl.emit(itemKey)\n\t}\n\n\tif isEOF(r) {\n\t\tl.emit(itemEOF)\n\t\treturn nil\n\t}\n\n\treturn lexBeforeValue\n}\n\n// lexBeforeValue scans the delimiter between key and value.\n// Leading and trailing whitespace is ignored.\n// We expect to be just after the key.\nfunc lexBeforeValue(l *lexer) stateFn {\n\tl.acceptRun(whitespace)\n\tl.accept(\":=\")\n\tl.acceptRun(whitespace)\n\tl.ignore()\n\treturn lexValue\n}\n\n// lexValue scans text until the end of the line. We expect to be just after the delimiter.\nfunc lexValue(l *lexer) stateFn {\n\tfor {\n\t\tswitch r := l.next(); {\n\t\tcase isEscape(r):\n\t\t\tif isEOL(l.peek()) {\n\t\t\t\tl.next()\n\t\t\t\tl.acceptRun(whitespace)\n\t\t\t} else {\n\t\t\t\terr := l.scanEscapeSequence()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn l.errorf(err.Error())\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase isEOL(r):\n\t\t\tl.emit(itemValue)\n\t\t\tl.ignore()\n\t\t\treturn lexBeforeKey\n\n\t\tcase isEOF(r):\n\t\t\tl.emit(itemValue)\n\t\t\tl.emit(itemEOF)\n\t\t\treturn nil\n\n\t\tdefault:\n\t\t\tl.appendRune(r)\n\t\t}\n\t}\n}\n\n// scanEscapeSequence scans either one of the escaped characters\n// or a unicode literal. We expect to be after the escape character.\nfunc (l *lexer) scanEscapeSequence() error {\n\tswitch r := l.next(); {\n\n\tcase isEscapedCharacter(r):\n\t\tl.appendRune(decodeEscapedCharacter(r))\n\t\treturn nil\n\n\tcase atUnicodeLiteral(r):\n\t\treturn l.scanUnicodeLiteral()\n\n\tcase isEOF(r):\n\t\treturn fmt.Errorf(\"premature EOF\")\n\n\t// silently drop the escape character and append the rune as is\n\tdefault:\n\t\tl.appendRune(r)\n\t\treturn nil\n\t}\n}\n\n// scans a unicode literal in the form \\uXXXX. We expect to be after the \\u.\nfunc (l *lexer) scanUnicodeLiteral() error {\n\t// scan the digits\n\td := make([]rune, 4)\n\tfor i := 0; i < 4; i++ {\n\t\td[i] = l.next()\n\t\tif d[i] == eof || !strings.ContainsRune(\"0123456789abcdefABCDEF\", d[i]) {\n\t\t\treturn fmt.Errorf(\"invalid unicode literal\")\n\t\t}\n\t}\n\n\t// decode the digits into a rune\n\tr, err := strconv.ParseInt(string(d), 16, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tl.appendRune(rune(r))\n\treturn nil\n}\n\n// decodeEscapedCharacter returns the unescaped rune. We expect to be after the escape character.\nfunc decodeEscapedCharacter(r rune) rune {\n\tswitch r {\n\tcase 'f':\n\t\treturn '\\f'\n\tcase 'n':\n\t\treturn '\\n'\n\tcase 'r':\n\t\treturn '\\r'\n\tcase 't':\n\t\treturn '\\t'\n\tdefault:\n\t\treturn r\n\t}\n}\n\n// atUnicodeLiteral reports whether we are at a unicode literal.\n// The escape character has already been consumed.\nfunc atUnicodeLiteral(r rune) bool {\n\treturn r == 'u'\n}\n\n// isComment reports whether we are at the start of a comment.\nfunc isComment(r rune) bool {\n\treturn r == '#' || r == '!'\n}\n\n// isEndOfKey reports whether the rune terminates the current key.\nfunc isEndOfKey(r rune) bool {\n\treturn strings.ContainsRune(\" \\f\\t\\r\\n:=\", r)\n}\n\n// isEOF reports whether we are at EOF.\nfunc isEOF(r rune) bool {\n\treturn r == eof\n}\n\n// isEOL reports whether we are at a new line character.\nfunc isEOL(r rune) bool {\n\treturn r == '\\n' || r == '\\r'\n}\n\n// isEscape reports whether the rune is the escape character which\n// prefixes unicode literals and other escaped characters.\nfunc isEscape(r rune) bool {\n\treturn r == '\\\\'\n}\n\n// isEscapedCharacter reports whether we are at one of the characters that need escaping.\n// The escape character has already been consumed.\nfunc isEscapedCharacter(r rune) bool {\n\treturn strings.ContainsRune(\" :=fnrt\", r)\n}\n\n// isWhitespace reports whether the rune is a whitespace character.\nfunc isWhitespace(r rune) bool {\n\treturn strings.ContainsRune(whitespace, r)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/load.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage properties\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\n// Encoding specifies encoding of the input data.\ntype Encoding uint\n\nconst (\n\t// utf8Default is a private placeholder for the zero value of Encoding to\n\t// ensure that it has the correct meaning. UTF8 is the default encoding but\n\t// was assigned a non-zero value which cannot be changed without breaking\n\t// existing code. Clients should continue to use the public constants.\n\tutf8Default Encoding = iota\n\n\t// UTF8 interprets the input data as UTF-8.\n\tUTF8\n\n\t// ISO_8859_1 interprets the input data as ISO-8859-1.\n\tISO_8859_1\n)\n\ntype Loader struct {\n\t// Encoding determines how the data from files and byte buffers\n\t// is interpreted. For URLs the Content-Type header is used\n\t// to determine the encoding of the data.\n\tEncoding Encoding\n\n\t// DisableExpansion configures the property expansion of the\n\t// returned property object. When set to true, the property values\n\t// will not be expanded and the Property object will not be checked\n\t// for invalid expansion expressions.\n\tDisableExpansion bool\n\n\t// IgnoreMissing configures whether missing files or URLs which return\n\t// 404 are reported as errors. When set to true, missing files and 404\n\t// status codes are not reported as errors.\n\tIgnoreMissing bool\n}\n\n// Load reads a buffer into a Properties struct.\nfunc (l *Loader) LoadBytes(buf []byte) (*Properties, error) {\n\treturn l.loadBytes(buf, l.Encoding)\n}\n\n// LoadAll reads the content of multiple URLs or files in the given order into\n// a Properties struct. If IgnoreMissing is true then a 404 status code or\n// missing file will not be reported as error. Encoding sets the encoding for\n// files. For the URLs see LoadURL for the Content-Type header and the\n// encoding.\nfunc (l *Loader) LoadAll(names []string) (*Properties, error) {\n\tall := NewProperties()\n\tfor _, name := range names {\n\t\tn, err := expandName(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar p *Properties\n\t\tswitch {\n\t\tcase strings.HasPrefix(n, \"http://\"):\n\t\t\tp, err = l.LoadURL(n)\n\t\tcase strings.HasPrefix(n, \"https://\"):\n\t\t\tp, err = l.LoadURL(n)\n\t\tdefault:\n\t\t\tp, err = l.LoadFile(n)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tall.Merge(p)\n\t}\n\n\tall.DisableExpansion = l.DisableExpansion\n\tif all.DisableExpansion {\n\t\treturn all, nil\n\t}\n\treturn all, all.check()\n}\n\n// LoadFile reads a file into a Properties struct.\n// If IgnoreMissing is true then a missing file will not be\n// reported as error.\nfunc (l *Loader) LoadFile(filename string) (*Properties, error) {\n\tdata, err := ioutil.ReadFile(filename)\n\tif err != nil {\n\t\tif l.IgnoreMissing && os.IsNotExist(err) {\n\t\t\tLogPrintf(\"properties: %s not found. skipping\", filename)\n\t\t\treturn NewProperties(), nil\n\t\t}\n\t\treturn nil, err\n\t}\n\treturn l.loadBytes(data, l.Encoding)\n}\n\n// LoadURL reads the content of the URL into a Properties struct.\n//\n// The encoding is determined via the Content-Type header which\n// should be set to 'text/plain'. If the 'charset' parameter is\n// missing, 'iso-8859-1' or 'latin1' the encoding is set to\n// ISO-8859-1. If the 'charset' parameter is set to 'utf-8' the\n// encoding is set to UTF-8. A missing content type header is\n// interpreted as 'text/plain; charset=utf-8'.\nfunc (l *Loader) LoadURL(url string) (*Properties, error) {\n\tresp, err := http.Get(url)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"properties: error fetching %q. %s\", url, err)\n\t}\n\n\tif resp.StatusCode == 404 && l.IgnoreMissing {\n\t\tLogPrintf(\"properties: %s returned %d. skipping\", url, resp.StatusCode)\n\t\treturn NewProperties(), nil\n\t}\n\n\tif resp.StatusCode != 200 {\n\t\treturn nil, fmt.Errorf(\"properties: %s returned %d\", url, resp.StatusCode)\n\t}\n\n\tbody, err := ioutil.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"properties: %s error reading response. %s\", url, err)\n\t}\n\tdefer resp.Body.Close()\n\n\tct := resp.Header.Get(\"Content-Type\")\n\tvar enc Encoding\n\tswitch strings.ToLower(ct) {\n\tcase \"text/plain\", \"text/plain; charset=iso-8859-1\", \"text/plain; charset=latin1\":\n\t\tenc = ISO_8859_1\n\tcase \"\", \"text/plain; charset=utf-8\":\n\t\tenc = UTF8\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"properties: invalid content type %s\", ct)\n\t}\n\n\treturn l.loadBytes(body, enc)\n}\n\nfunc (l *Loader) loadBytes(buf []byte, enc Encoding) (*Properties, error) {\n\tp, err := parse(convert(buf, enc))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp.DisableExpansion = l.DisableExpansion\n\tif p.DisableExpansion {\n\t\treturn p, nil\n\t}\n\treturn p, p.check()\n}\n\n// Load reads a buffer into a Properties struct.\nfunc Load(buf []byte, enc Encoding) (*Properties, error) {\n\tl := &Loader{Encoding: enc}\n\treturn l.LoadBytes(buf)\n}\n\n// LoadString reads an UTF8 string into a properties struct.\nfunc LoadString(s string) (*Properties, error) {\n\tl := &Loader{Encoding: UTF8}\n\treturn l.LoadBytes([]byte(s))\n}\n\n// LoadMap creates a new Properties struct from a string map.\nfunc LoadMap(m map[string]string) *Properties {\n\tp := NewProperties()\n\tfor k, v := range m {\n\t\tp.Set(k, v)\n\t}\n\treturn p\n}\n\n// LoadFile reads a file into a Properties struct.\nfunc LoadFile(filename string, enc Encoding) (*Properties, error) {\n\tl := &Loader{Encoding: enc}\n\treturn l.LoadAll([]string{filename})\n}\n\n// LoadFiles reads multiple files in the given order into\n// a Properties struct. If 'ignoreMissing' is true then\n// non-existent files will not be reported as error.\nfunc LoadFiles(filenames []string, enc Encoding, ignoreMissing bool) (*Properties, error) {\n\tl := &Loader{Encoding: enc, IgnoreMissing: ignoreMissing}\n\treturn l.LoadAll(filenames)\n}\n\n// LoadURL reads the content of the URL into a Properties struct.\n// See Loader#LoadURL for details.\nfunc LoadURL(url string) (*Properties, error) {\n\tl := &Loader{Encoding: UTF8}\n\treturn l.LoadAll([]string{url})\n}\n\n// LoadURLs reads the content of multiple URLs in the given order into a\n// Properties struct. If IgnoreMissing is true then a 404 status code will\n// not be reported as error. See Loader#LoadURL for the Content-Type header\n// and the encoding.\nfunc LoadURLs(urls []string, ignoreMissing bool) (*Properties, error) {\n\tl := &Loader{Encoding: UTF8, IgnoreMissing: ignoreMissing}\n\treturn l.LoadAll(urls)\n}\n\n// LoadAll reads the content of multiple URLs or files in the given order into a\n// Properties struct. If 'ignoreMissing' is true then a 404 status code or missing file will\n// not be reported as error. Encoding sets the encoding for files. For the URLs please see\n// LoadURL for the Content-Type header and the encoding.\nfunc LoadAll(names []string, enc Encoding, ignoreMissing bool) (*Properties, error) {\n\tl := &Loader{Encoding: enc, IgnoreMissing: ignoreMissing}\n\treturn l.LoadAll(names)\n}\n\n// MustLoadString reads an UTF8 string into a Properties struct and\n// panics on error.\nfunc MustLoadString(s string) *Properties {\n\treturn must(LoadString(s))\n}\n\n// MustLoadFile reads a file into a Properties struct and\n// panics on error.\nfunc MustLoadFile(filename string, enc Encoding) *Properties {\n\treturn must(LoadFile(filename, enc))\n}\n\n// MustLoadFiles reads multiple files in the given order into\n// a Properties struct and panics on error. If 'ignoreMissing'\n// is true then non-existent files will not be reported as error.\nfunc MustLoadFiles(filenames []string, enc Encoding, ignoreMissing bool) *Properties {\n\treturn must(LoadFiles(filenames, enc, ignoreMissing))\n}\n\n// MustLoadURL reads the content of a URL into a Properties struct and\n// panics on error.\nfunc MustLoadURL(url string) *Properties {\n\treturn must(LoadURL(url))\n}\n\n// MustLoadURLs reads the content of multiple URLs in the given order into a\n// Properties struct and panics on error. If 'ignoreMissing' is true then a 404\n// status code will not be reported as error.\nfunc MustLoadURLs(urls []string, ignoreMissing bool) *Properties {\n\treturn must(LoadURLs(urls, ignoreMissing))\n}\n\n// MustLoadAll reads the content of multiple URLs or files in the given order into a\n// Properties struct. If 'ignoreMissing' is true then a 404 status code or missing file will\n// not be reported as error. Encoding sets the encoding for files. For the URLs please see\n// LoadURL for the Content-Type header and the encoding. It panics on error.\nfunc MustLoadAll(names []string, enc Encoding, ignoreMissing bool) *Properties {\n\treturn must(LoadAll(names, enc, ignoreMissing))\n}\n\nfunc must(p *Properties, err error) *Properties {\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn p\n}\n\n// expandName expands ${ENV_VAR} expressions in a name.\n// If the environment variable does not exist then it will be replaced\n// with an empty string. Malformed expressions like \"${ENV_VAR\" will\n// be reported as error.\nfunc expandName(name string) (string, error) {\n\treturn expand(name, []string{}, \"${\", \"}\", make(map[string]string))\n}\n\n// Interprets a byte buffer either as an ISO-8859-1 or UTF-8 encoded string.\n// For ISO-8859-1 we can convert each byte straight into a rune since the\n// first 256 unicode code points cover ISO-8859-1.\nfunc convert(buf []byte, enc Encoding) string {\n\tswitch enc {\n\tcase utf8Default, UTF8:\n\t\treturn string(buf)\n\tcase ISO_8859_1:\n\t\trunes := make([]rune, len(buf))\n\t\tfor i, b := range buf {\n\t\t\trunes[i] = rune(b)\n\t\t}\n\t\treturn string(runes)\n\tdefault:\n\t\tErrorHandler(fmt.Errorf(\"unsupported encoding %v\", enc))\n\t}\n\tpanic(\"ErrorHandler should exit\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/parser.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage properties\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n)\n\ntype parser struct {\n\tlex *lexer\n}\n\nfunc parse(input string) (properties *Properties, err error) {\n\tp := &parser{lex: lex(input)}\n\tdefer p.recover(&err)\n\n\tproperties = NewProperties()\n\tkey := \"\"\n\tcomments := []string{}\n\n\tfor {\n\t\ttoken := p.expectOneOf(itemComment, itemKey, itemEOF)\n\t\tswitch token.typ {\n\t\tcase itemEOF:\n\t\t\tgoto done\n\t\tcase itemComment:\n\t\t\tcomments = append(comments, token.val)\n\t\t\tcontinue\n\t\tcase itemKey:\n\t\t\tkey = token.val\n\t\t\tif _, ok := properties.m[key]; !ok {\n\t\t\t\tproperties.k = append(properties.k, key)\n\t\t\t}\n\t\t}\n\n\t\ttoken = p.expectOneOf(itemValue, itemEOF)\n\t\tif len(comments) > 0 {\n\t\t\tproperties.c[key] = comments\n\t\t\tcomments = []string{}\n\t\t}\n\t\tswitch token.typ {\n\t\tcase itemEOF:\n\t\t\tproperties.m[key] = \"\"\n\t\t\tgoto done\n\t\tcase itemValue:\n\t\t\tproperties.m[key] = token.val\n\t\t}\n\t}\n\ndone:\n\treturn properties, nil\n}\n\nfunc (p *parser) errorf(format string, args ...interface{}) {\n\tformat = fmt.Sprintf(\"properties: Line %d: %s\", p.lex.lineNumber(), format)\n\tpanic(fmt.Errorf(format, args...))\n}\n\nfunc (p *parser) expect(expected itemType) (token item) {\n\ttoken = p.lex.nextItem()\n\tif token.typ != expected {\n\t\tp.unexpected(token)\n\t}\n\treturn token\n}\n\nfunc (p *parser) expectOneOf(expected ...itemType) (token item) {\n\ttoken = p.lex.nextItem()\n\tfor _, v := range expected {\n\t\tif token.typ == v {\n\t\t\treturn token\n\t\t}\n\t}\n\tp.unexpected(token)\n\tpanic(\"unexpected token\")\n}\n\nfunc (p *parser) unexpected(token item) {\n\tp.errorf(token.String())\n}\n\n// recover is the handler that turns panics into returns from the top level of Parse.\nfunc (p *parser) recover(errp *error) {\n\te := recover()\n\tif e != nil {\n\t\tif _, ok := e.(runtime.Error); ok {\n\t\t\tpanic(e)\n\t\t}\n\t\t*errp = e.(error)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/properties.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage properties\n\n// BUG(frank): Set() does not check for invalid unicode literals since this is currently handled by the lexer.\n// BUG(frank): Write() does not allow to configure the newline character. Therefore, on Windows LF is used.\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\nconst maxExpansionDepth = 64\n\n// ErrorHandlerFunc defines the type of function which handles failures\n// of the MustXXX() functions. An error handler function must exit\n// the application after handling the error.\ntype ErrorHandlerFunc func(error)\n\n// ErrorHandler is the function which handles failures of the MustXXX()\n// functions. The default is LogFatalHandler.\nvar ErrorHandler ErrorHandlerFunc = LogFatalHandler\n\n// LogHandlerFunc defines the function prototype for logging errors.\ntype LogHandlerFunc func(fmt string, args ...interface{})\n\n// LogPrintf defines a log handler which uses log.Printf.\nvar LogPrintf LogHandlerFunc = log.Printf\n\n// LogFatalHandler handles the error by logging a fatal error and exiting.\nfunc LogFatalHandler(err error) {\n\tlog.Fatal(err)\n}\n\n// PanicHandler handles the error by panicking.\nfunc PanicHandler(err error) {\n\tpanic(err)\n}\n\n// -----------------------------------------------------------------------------\n\n// A Properties contains the key/value pairs from the properties input.\n// All values are stored in unexpanded form and are expanded at runtime\ntype Properties struct {\n\t// Pre-/Postfix for property expansion.\n\tPrefix  string\n\tPostfix string\n\n\t// DisableExpansion controls the expansion of properties on Get()\n\t// and the check for circular references on Set(). When set to\n\t// true Properties behaves like a simple key/value store and does\n\t// not check for circular references on Get() or on Set().\n\tDisableExpansion bool\n\n\t// Stores the key/value pairs\n\tm map[string]string\n\n\t// Stores the comments per key.\n\tc map[string][]string\n\n\t// Stores the keys in order of appearance.\n\tk []string\n}\n\n// NewProperties creates a new Properties struct with the default\n// configuration for \"${key}\" expressions.\nfunc NewProperties() *Properties {\n\treturn &Properties{\n\t\tPrefix:  \"${\",\n\t\tPostfix: \"}\",\n\t\tm:       map[string]string{},\n\t\tc:       map[string][]string{},\n\t\tk:       []string{},\n\t}\n}\n\n// Load reads a buffer into the given Properties struct.\nfunc (p *Properties) Load(buf []byte, enc Encoding) error {\n\tl := &Loader{Encoding: enc, DisableExpansion: p.DisableExpansion}\n\tnewProperties, err := l.LoadBytes(buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\tp.Merge(newProperties)\n\treturn nil\n}\n\n// Get returns the expanded value for the given key if exists.\n// Otherwise, ok is false.\nfunc (p *Properties) Get(key string) (value string, ok bool) {\n\tv, ok := p.m[key]\n\tif p.DisableExpansion {\n\t\treturn v, ok\n\t}\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\n\texpanded, err := p.expand(key, v)\n\n\t// we guarantee that the expanded value is free of\n\t// circular references and malformed expressions\n\t// so we panic if we still get an error here.\n\tif err != nil {\n\t\tErrorHandler(fmt.Errorf(\"%s in %q\", err, key+\" = \"+v))\n\t}\n\n\treturn expanded, true\n}\n\n// MustGet returns the expanded value for the given key if exists.\n// Otherwise, it panics.\nfunc (p *Properties) MustGet(key string) string {\n\tif v, ok := p.Get(key); ok {\n\t\treturn v\n\t}\n\tErrorHandler(invalidKeyError(key))\n\tpanic(\"ErrorHandler should exit\")\n}\n\n// ----------------------------------------------------------------------------\n\n// ClearComments removes the comments for all keys.\nfunc (p *Properties) ClearComments() {\n\tp.c = map[string][]string{}\n}\n\n// ----------------------------------------------------------------------------\n\n// GetComment returns the last comment before the given key or an empty string.\nfunc (p *Properties) GetComment(key string) string {\n\tcomments, ok := p.c[key]\n\tif !ok || len(comments) == 0 {\n\t\treturn \"\"\n\t}\n\treturn comments[len(comments)-1]\n}\n\n// ----------------------------------------------------------------------------\n\n// GetComments returns all comments that appeared before the given key or nil.\nfunc (p *Properties) GetComments(key string) []string {\n\tif comments, ok := p.c[key]; ok {\n\t\treturn comments\n\t}\n\treturn nil\n}\n\n// ----------------------------------------------------------------------------\n\n// SetComment sets the comment for the key.\nfunc (p *Properties) SetComment(key, comment string) {\n\tp.c[key] = []string{comment}\n}\n\n// ----------------------------------------------------------------------------\n\n// SetComments sets the comments for the key. If the comments are nil then\n// all comments for this key are deleted.\nfunc (p *Properties) SetComments(key string, comments []string) {\n\tif comments == nil {\n\t\tdelete(p.c, key)\n\t\treturn\n\t}\n\tp.c[key] = comments\n}\n\n// ----------------------------------------------------------------------------\n\n// GetBool checks if the expanded value is one of '1', 'yes',\n// 'true' or 'on' if the key exists. The comparison is case-insensitive.\n// If the key does not exist the default value is returned.\nfunc (p *Properties) GetBool(key string, def bool) bool {\n\tv, err := p.getBool(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn v\n}\n\n// MustGetBool checks if the expanded value is one of '1', 'yes',\n// 'true' or 'on' if the key exists. The comparison is case-insensitive.\n// If the key does not exist the function panics.\nfunc (p *Properties) MustGetBool(key string) bool {\n\tv, err := p.getBool(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn v\n}\n\nfunc (p *Properties) getBool(key string) (value bool, err error) {\n\tif v, ok := p.Get(key); ok {\n\t\treturn boolVal(v), nil\n\t}\n\treturn false, invalidKeyError(key)\n}\n\nfunc boolVal(v string) bool {\n\tv = strings.ToLower(v)\n\treturn v == \"1\" || v == \"true\" || v == \"yes\" || v == \"on\"\n}\n\n// ----------------------------------------------------------------------------\n\n// GetDuration parses the expanded value as an time.Duration (in ns) if the\n// key exists. If key does not exist or the value cannot be parsed the default\n// value is returned. In almost all cases you want to use GetParsedDuration().\nfunc (p *Properties) GetDuration(key string, def time.Duration) time.Duration {\n\tv, err := p.getInt64(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn time.Duration(v)\n}\n\n// MustGetDuration parses the expanded value as an time.Duration (in ns) if\n// the key exists. If key does not exist or the value cannot be parsed the\n// function panics. In almost all cases you want to use MustGetParsedDuration().\nfunc (p *Properties) MustGetDuration(key string) time.Duration {\n\tv, err := p.getInt64(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn time.Duration(v)\n}\n\n// ----------------------------------------------------------------------------\n\n// GetParsedDuration parses the expanded value with time.ParseDuration() if the key exists.\n// If key does not exist or the value cannot be parsed the default\n// value is returned.\nfunc (p *Properties) GetParsedDuration(key string, def time.Duration) time.Duration {\n\ts, ok := p.Get(key)\n\tif !ok {\n\t\treturn def\n\t}\n\tv, err := time.ParseDuration(s)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn v\n}\n\n// MustGetParsedDuration parses the expanded value with time.ParseDuration() if the key exists.\n// If key does not exist or the value cannot be parsed the function panics.\nfunc (p *Properties) MustGetParsedDuration(key string) time.Duration {\n\ts, ok := p.Get(key)\n\tif !ok {\n\t\tErrorHandler(invalidKeyError(key))\n\t}\n\tv, err := time.ParseDuration(s)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn v\n}\n\n// ----------------------------------------------------------------------------\n\n// GetFloat64 parses the expanded value as a float64 if the key exists.\n// If key does not exist or the value cannot be parsed the default\n// value is returned.\nfunc (p *Properties) GetFloat64(key string, def float64) float64 {\n\tv, err := p.getFloat64(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn v\n}\n\n// MustGetFloat64 parses the expanded value as a float64 if the key exists.\n// If key does not exist or the value cannot be parsed the function panics.\nfunc (p *Properties) MustGetFloat64(key string) float64 {\n\tv, err := p.getFloat64(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn v\n}\n\nfunc (p *Properties) getFloat64(key string) (value float64, err error) {\n\tif v, ok := p.Get(key); ok {\n\t\tvalue, err = strconv.ParseFloat(v, 64)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\treturn value, nil\n\t}\n\treturn 0, invalidKeyError(key)\n}\n\n// ----------------------------------------------------------------------------\n\n// GetInt parses the expanded value as an int if the key exists.\n// If key does not exist or the value cannot be parsed the default\n// value is returned. If the value does not fit into an int the\n// function panics with an out of range error.\nfunc (p *Properties) GetInt(key string, def int) int {\n\tv, err := p.getInt64(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn intRangeCheck(key, v)\n}\n\n// MustGetInt parses the expanded value as an int if the key exists.\n// If key does not exist or the value cannot be parsed the function panics.\n// If the value does not fit into an int the function panics with\n// an out of range error.\nfunc (p *Properties) MustGetInt(key string) int {\n\tv, err := p.getInt64(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn intRangeCheck(key, v)\n}\n\n// ----------------------------------------------------------------------------\n\n// GetInt64 parses the expanded value as an int64 if the key exists.\n// If key does not exist or the value cannot be parsed the default\n// value is returned.\nfunc (p *Properties) GetInt64(key string, def int64) int64 {\n\tv, err := p.getInt64(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn v\n}\n\n// MustGetInt64 parses the expanded value as an int if the key exists.\n// If key does not exist or the value cannot be parsed the function panics.\nfunc (p *Properties) MustGetInt64(key string) int64 {\n\tv, err := p.getInt64(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn v\n}\n\nfunc (p *Properties) getInt64(key string) (value int64, err error) {\n\tif v, ok := p.Get(key); ok {\n\t\tvalue, err = strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\treturn value, nil\n\t}\n\treturn 0, invalidKeyError(key)\n}\n\n// ----------------------------------------------------------------------------\n\n// GetUint parses the expanded value as an uint if the key exists.\n// If key does not exist or the value cannot be parsed the default\n// value is returned. If the value does not fit into an int the\n// function panics with an out of range error.\nfunc (p *Properties) GetUint(key string, def uint) uint {\n\tv, err := p.getUint64(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn uintRangeCheck(key, v)\n}\n\n// MustGetUint parses the expanded value as an int if the key exists.\n// If key does not exist or the value cannot be parsed the function panics.\n// If the value does not fit into an int the function panics with\n// an out of range error.\nfunc (p *Properties) MustGetUint(key string) uint {\n\tv, err := p.getUint64(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn uintRangeCheck(key, v)\n}\n\n// ----------------------------------------------------------------------------\n\n// GetUint64 parses the expanded value as an uint64 if the key exists.\n// If key does not exist or the value cannot be parsed the default\n// value is returned.\nfunc (p *Properties) GetUint64(key string, def uint64) uint64 {\n\tv, err := p.getUint64(key)\n\tif err != nil {\n\t\treturn def\n\t}\n\treturn v\n}\n\n// MustGetUint64 parses the expanded value as an int if the key exists.\n// If key does not exist or the value cannot be parsed the function panics.\nfunc (p *Properties) MustGetUint64(key string) uint64 {\n\tv, err := p.getUint64(key)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn v\n}\n\nfunc (p *Properties) getUint64(key string) (value uint64, err error) {\n\tif v, ok := p.Get(key); ok {\n\t\tvalue, err = strconv.ParseUint(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\treturn value, nil\n\t}\n\treturn 0, invalidKeyError(key)\n}\n\n// ----------------------------------------------------------------------------\n\n// GetString returns the expanded value for the given key if exists or\n// the default value otherwise.\nfunc (p *Properties) GetString(key, def string) string {\n\tif v, ok := p.Get(key); ok {\n\t\treturn v\n\t}\n\treturn def\n}\n\n// MustGetString returns the expanded value for the given key if exists or\n// panics otherwise.\nfunc (p *Properties) MustGetString(key string) string {\n\tif v, ok := p.Get(key); ok {\n\t\treturn v\n\t}\n\tErrorHandler(invalidKeyError(key))\n\tpanic(\"ErrorHandler should exit\")\n}\n\n// ----------------------------------------------------------------------------\n\n// Filter returns a new properties object which contains all properties\n// for which the key matches the pattern.\nfunc (p *Properties) Filter(pattern string) (*Properties, error) {\n\tre, err := regexp.Compile(pattern)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p.FilterRegexp(re), nil\n}\n\n// FilterRegexp returns a new properties object which contains all properties\n// for which the key matches the regular expression.\nfunc (p *Properties) FilterRegexp(re *regexp.Regexp) *Properties {\n\tpp := NewProperties()\n\tfor _, k := range p.k {\n\t\tif re.MatchString(k) {\n\t\t\t// TODO(fs): we are ignoring the error which flags a circular reference.\n\t\t\t// TODO(fs): since we are just copying a subset of keys this cannot happen (fingers crossed)\n\t\t\tpp.Set(k, p.m[k])\n\t\t}\n\t}\n\treturn pp\n}\n\n// FilterPrefix returns a new properties object with a subset of all keys\n// with the given prefix.\nfunc (p *Properties) FilterPrefix(prefix string) *Properties {\n\tpp := NewProperties()\n\tfor _, k := range p.k {\n\t\tif strings.HasPrefix(k, prefix) {\n\t\t\t// TODO(fs): we are ignoring the error which flags a circular reference.\n\t\t\t// TODO(fs): since we are just copying a subset of keys this cannot happen (fingers crossed)\n\t\t\tpp.Set(k, p.m[k])\n\t\t}\n\t}\n\treturn pp\n}\n\n// FilterStripPrefix returns a new properties object with a subset of all keys\n// with the given prefix and the prefix removed from the keys.\nfunc (p *Properties) FilterStripPrefix(prefix string) *Properties {\n\tpp := NewProperties()\n\tn := len(prefix)\n\tfor _, k := range p.k {\n\t\tif len(k) > len(prefix) && strings.HasPrefix(k, prefix) {\n\t\t\t// TODO(fs): we are ignoring the error which flags a circular reference.\n\t\t\t// TODO(fs): since we are modifying keys I am not entirely sure whether we can create a circular reference\n\t\t\t// TODO(fs): this function should probably return an error but the signature is fixed\n\t\t\tpp.Set(k[n:], p.m[k])\n\t\t}\n\t}\n\treturn pp\n}\n\n// Len returns the number of keys.\nfunc (p *Properties) Len() int {\n\treturn len(p.m)\n}\n\n// Keys returns all keys in the same order as in the input.\nfunc (p *Properties) Keys() []string {\n\tkeys := make([]string, len(p.k))\n\tcopy(keys, p.k)\n\treturn keys\n}\n\n// Set sets the property key to the corresponding value.\n// If a value for key existed before then ok is true and prev\n// contains the previous value. If the value contains a\n// circular reference or a malformed expression then\n// an error is returned.\n// An empty key is silently ignored.\nfunc (p *Properties) Set(key, value string) (prev string, ok bool, err error) {\n\tif key == \"\" {\n\t\treturn \"\", false, nil\n\t}\n\n\t// if expansion is disabled we allow circular references\n\tif p.DisableExpansion {\n\t\tprev, ok = p.Get(key)\n\t\tp.m[key] = value\n\t\tif !ok {\n\t\t\tp.k = append(p.k, key)\n\t\t}\n\t\treturn prev, ok, nil\n\t}\n\n\t// to check for a circular reference we temporarily need\n\t// to set the new value. If there is an error then revert\n\t// to the previous state. Only if all tests are successful\n\t// then we add the key to the p.k list.\n\tprev, ok = p.Get(key)\n\tp.m[key] = value\n\n\t// now check for a circular reference\n\t_, err = p.expand(key, value)\n\tif err != nil {\n\n\t\t// revert to the previous state\n\t\tif ok {\n\t\t\tp.m[key] = prev\n\t\t} else {\n\t\t\tdelete(p.m, key)\n\t\t}\n\n\t\treturn \"\", false, err\n\t}\n\n\tif !ok {\n\t\tp.k = append(p.k, key)\n\t}\n\n\treturn prev, ok, nil\n}\n\n// SetValue sets property key to the default string value\n// as defined by fmt.Sprintf(\"%v\").\nfunc (p *Properties) SetValue(key string, value interface{}) error {\n\t_, _, err := p.Set(key, fmt.Sprintf(\"%v\", value))\n\treturn err\n}\n\n// MustSet sets the property key to the corresponding value.\n// If a value for key existed before then ok is true and prev\n// contains the previous value. An empty key is silently ignored.\nfunc (p *Properties) MustSet(key, value string) (prev string, ok bool) {\n\tprev, ok, err := p.Set(key, value)\n\tif err != nil {\n\t\tErrorHandler(err)\n\t}\n\treturn prev, ok\n}\n\n// String returns a string of all expanded 'key = value' pairs.\nfunc (p *Properties) String() string {\n\tvar s string\n\tfor _, key := range p.k {\n\t\tvalue, _ := p.Get(key)\n\t\ts = fmt.Sprintf(\"%s%s = %s\\n\", s, key, value)\n\t}\n\treturn s\n}\n\n// Write writes all unexpanded 'key = value' pairs to the given writer.\n// Write returns the number of bytes written and any write error encountered.\nfunc (p *Properties) Write(w io.Writer, enc Encoding) (n int, err error) {\n\treturn p.WriteComment(w, \"\", enc)\n}\n\n// WriteComment writes all unexpanced 'key = value' pairs to the given writer.\n// If prefix is not empty then comments are written with a blank line and the\n// given prefix. The prefix should be either \"# \" or \"! \" to be compatible with\n// the properties file format. Otherwise, the properties parser will not be\n// able to read the file back in. It returns the number of bytes written and\n// any write error encountered.\nfunc (p *Properties) WriteComment(w io.Writer, prefix string, enc Encoding) (n int, err error) {\n\tvar x int\n\n\tfor _, key := range p.k {\n\t\tvalue := p.m[key]\n\n\t\tif prefix != \"\" {\n\t\t\tif comments, ok := p.c[key]; ok {\n\t\t\t\t// don't print comments if they are all empty\n\t\t\t\tallEmpty := true\n\t\t\t\tfor _, c := range comments {\n\t\t\t\t\tif c != \"\" {\n\t\t\t\t\t\tallEmpty = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !allEmpty {\n\t\t\t\t\t// add a blank line between entries but not at the top\n\t\t\t\t\tif len(comments) > 0 && n > 0 {\n\t\t\t\t\t\tx, err = fmt.Fprintln(w)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn += x\n\t\t\t\t\t}\n\n\t\t\t\t\tfor _, c := range comments {\n\t\t\t\t\t\tx, err = fmt.Fprintf(w, \"%s%s\\n\", prefix, encode(c, \"\", enc))\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn += x\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tx, err = fmt.Fprintf(w, \"%s = %s\\n\", encode(key, \" :\", enc), encode(value, \"\", enc))\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tn += x\n\t}\n\treturn\n}\n\n// Map returns a copy of the properties as a map.\nfunc (p *Properties) Map() map[string]string {\n\tm := make(map[string]string)\n\tfor k, v := range p.m {\n\t\tm[k] = v\n\t}\n\treturn m\n}\n\n// FilterFunc returns a copy of the properties which includes the values which passed all filters.\nfunc (p *Properties) FilterFunc(filters ...func(k, v string) bool) *Properties {\n\tpp := NewProperties()\nouter:\n\tfor k, v := range p.m {\n\t\tfor _, f := range filters {\n\t\t\tif !f(k, v) {\n\t\t\t\tcontinue outer\n\t\t\t}\n\t\t\tpp.Set(k, v)\n\t\t}\n\t}\n\treturn pp\n}\n\n// ----------------------------------------------------------------------------\n\n// Delete removes the key and its comments.\nfunc (p *Properties) Delete(key string) {\n\tdelete(p.m, key)\n\tdelete(p.c, key)\n\tnewKeys := []string{}\n\tfor _, k := range p.k {\n\t\tif k != key {\n\t\t\tnewKeys = append(newKeys, k)\n\t\t}\n\t}\n\tp.k = newKeys\n}\n\n// Merge merges properties, comments and keys from other *Properties into p\nfunc (p *Properties) Merge(other *Properties) {\n\tfor k, v := range other.m {\n\t\tp.m[k] = v\n\t}\n\tfor k, v := range other.c {\n\t\tp.c[k] = v\n\t}\n\nouter:\n\tfor _, otherKey := range other.k {\n\t\tfor _, key := range p.k {\n\t\t\tif otherKey == key {\n\t\t\t\tcontinue outer\n\t\t\t}\n\t\t}\n\t\tp.k = append(p.k, otherKey)\n\t}\n}\n\n// ----------------------------------------------------------------------------\n\n// check expands all values and returns an error if a circular reference or\n// a malformed expression was found.\nfunc (p *Properties) check() error {\n\tfor key, value := range p.m {\n\t\tif _, err := p.expand(key, value); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *Properties) expand(key, input string) (string, error) {\n\t// no pre/postfix -> nothing to expand\n\tif p.Prefix == \"\" && p.Postfix == \"\" {\n\t\treturn input, nil\n\t}\n\n\treturn expand(input, []string{key}, p.Prefix, p.Postfix, p.m)\n}\n\n// expand recursively expands expressions of '(prefix)key(postfix)' to their corresponding values.\n// The function keeps track of the keys that were already expanded and stops if it\n// detects a circular reference or a malformed expression of the form '(prefix)key'.\nfunc expand(s string, keys []string, prefix, postfix string, values map[string]string) (string, error) {\n\tif len(keys) > maxExpansionDepth {\n\t\treturn \"\", fmt.Errorf(\"expansion too deep\")\n\t}\n\n\tfor {\n\t\tstart := strings.Index(s, prefix)\n\t\tif start == -1 {\n\t\t\treturn s, nil\n\t\t}\n\n\t\tkeyStart := start + len(prefix)\n\t\tkeyLen := strings.Index(s[keyStart:], postfix)\n\t\tif keyLen == -1 {\n\t\t\treturn \"\", fmt.Errorf(\"malformed expression\")\n\t\t}\n\n\t\tend := keyStart + keyLen + len(postfix) - 1\n\t\tkey := s[keyStart : keyStart+keyLen]\n\n\t\t// fmt.Printf(\"s:%q pp:%q start:%d end:%d keyStart:%d keyLen:%d key:%q\\n\", s, prefix + \"...\" + postfix, start, end, keyStart, keyLen, key)\n\n\t\tfor _, k := range keys {\n\t\t\tif key == k {\n\t\t\t\treturn \"\", fmt.Errorf(\"circular reference\")\n\t\t\t}\n\t\t}\n\n\t\tval, ok := values[key]\n\t\tif !ok {\n\t\t\tval = os.Getenv(key)\n\t\t}\n\t\tnew_val, err := expand(val, append(keys, key), prefix, postfix, values)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\ts = s[:start] + new_val + s[end+1:]\n\t}\n\treturn s, nil\n}\n\n// encode encodes a UTF-8 string to ISO-8859-1 and escapes some characters.\nfunc encode(s string, special string, enc Encoding) string {\n\tswitch enc {\n\tcase UTF8:\n\t\treturn encodeUtf8(s, special)\n\tcase ISO_8859_1:\n\t\treturn encodeIso(s, special)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unsupported encoding %v\", enc))\n\t}\n}\n\nfunc encodeUtf8(s string, special string) string {\n\tv := \"\"\n\tfor pos := 0; pos < len(s); {\n\t\tr, w := utf8.DecodeRuneInString(s[pos:])\n\t\tpos += w\n\t\tv += escape(r, special)\n\t}\n\treturn v\n}\n\nfunc encodeIso(s string, special string) string {\n\tvar r rune\n\tvar w int\n\tvar v string\n\tfor pos := 0; pos < len(s); {\n\t\tswitch r, w = utf8.DecodeRuneInString(s[pos:]); {\n\t\tcase r < 1<<8: // single byte rune -> escape special chars only\n\t\t\tv += escape(r, special)\n\t\tcase r < 1<<16: // two byte rune -> unicode literal\n\t\t\tv += fmt.Sprintf(\"\\\\u%04x\", r)\n\t\tdefault: // more than two bytes per rune -> can't encode\n\t\t\tv += \"?\"\n\t\t}\n\t\tpos += w\n\t}\n\treturn v\n}\n\nfunc escape(r rune, special string) string {\n\tswitch r {\n\tcase '\\f':\n\t\treturn \"\\\\f\"\n\tcase '\\n':\n\t\treturn \"\\\\n\"\n\tcase '\\r':\n\t\treturn \"\\\\r\"\n\tcase '\\t':\n\t\treturn \"\\\\t\"\n\tdefault:\n\t\tif strings.ContainsRune(special, r) {\n\t\t\treturn \"\\\\\" + string(r)\n\t\t}\n\t\treturn string(r)\n\t}\n}\n\nfunc invalidKeyError(key string) error {\n\treturn fmt.Errorf(\"unknown property: %s\", key)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/magiconair/properties/rangecheck.go",
    "content": "// Copyright 2018 Frank Schroeder. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage properties\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\n// make this a var to overwrite it in a test\nvar is32Bit = ^uint(0) == math.MaxUint32\n\n// intRangeCheck checks if the value fits into the int type and\n// panics if it does not.\nfunc intRangeCheck(key string, v int64) int {\n\tif is32Bit && (v < math.MinInt32 || v > math.MaxInt32) {\n\t\tpanic(fmt.Sprintf(\"Value %d for key %s out of range\", v, key))\n\t}\n\treturn int(v)\n}\n\n// uintRangeCheck checks if the value fits into the uint type and\n// panics if it does not.\nfunc uintRangeCheck(key string, v uint64) uint {\n\tif is32Bit && v > math.MaxUint32 {\n\t\tpanic(fmt.Sprintf(\"Value %d for key %s out of range\", v, key))\n\t}\n\treturn uint(v)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-colorable/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 Yasuhiro Matsumoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-colorable/README.md",
    "content": "# go-colorable\n\nColorable writer for windows.\n\nFor example, most of logger packages doesn't show colors on windows. (I know we can do it with ansicon. But I don't want.)\nThis package is possible to handle escape sequence for ansi color on windows.\n\n## Too Bad!\n\n![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/bad.png)\n\n\n## So Good!\n\n![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/good.png)\n\n## Usage\n\n```go\nlogrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})\nlogrus.SetOutput(colorable.NewColorableStdout())\n\nlogrus.Info(\"succeeded\")\nlogrus.Warn(\"not correct\")\nlogrus.Error(\"something error\")\nlogrus.Fatal(\"panic\")\n```\n\nYou can compile above code on non-windows OSs.\n\n## Installation\n\n```\n$ go get github.com/mattn/go-colorable\n```\n\n# License\n\nMIT\n\n# Author\n\nYasuhiro Matsumoto (a.k.a mattn)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-colorable/colorable_others.go",
    "content": "// +build !windows\n\npackage colorable\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\nfunc NewColorable(file *os.File) io.Writer {\n\tif file == nil {\n\t\tpanic(\"nil passed instead of *os.File to NewColorable()\")\n\t}\n\n\treturn file\n}\n\nfunc NewColorableStdout() io.Writer {\n\treturn os.Stdout\n}\n\nfunc NewColorableStderr() io.Writer {\n\treturn os.Stderr\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-colorable/colorable_windows.go",
    "content": "package colorable\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/mattn/go-isatty\"\n)\n\nconst (\n\tforegroundBlue      = 0x1\n\tforegroundGreen     = 0x2\n\tforegroundRed       = 0x4\n\tforegroundIntensity = 0x8\n\tforegroundMask      = (foregroundRed | foregroundBlue | foregroundGreen | foregroundIntensity)\n\tbackgroundBlue      = 0x10\n\tbackgroundGreen     = 0x20\n\tbackgroundRed       = 0x40\n\tbackgroundIntensity = 0x80\n\tbackgroundMask      = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity)\n)\n\ntype wchar uint16\ntype short int16\ntype dword uint32\ntype word uint16\n\ntype coord struct {\n\tx short\n\ty short\n}\n\ntype smallRect struct {\n\tleft   short\n\ttop    short\n\tright  short\n\tbottom short\n}\n\ntype consoleScreenBufferInfo struct {\n\tsize              coord\n\tcursorPosition    coord\n\tattributes        word\n\twindow            smallRect\n\tmaximumWindowSize coord\n}\n\ntype consoleCursorInfo struct {\n\tsize    dword\n\tvisible int32\n}\n\nvar (\n\tkernel32                       = syscall.NewLazyDLL(\"kernel32.dll\")\n\tprocGetConsoleScreenBufferInfo = kernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocSetConsoleTextAttribute    = kernel32.NewProc(\"SetConsoleTextAttribute\")\n\tprocSetConsoleCursorPosition   = kernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocFillConsoleOutputCharacter = kernel32.NewProc(\"FillConsoleOutputCharacterW\")\n\tprocFillConsoleOutputAttribute = kernel32.NewProc(\"FillConsoleOutputAttribute\")\n\tprocGetConsoleCursorInfo       = kernel32.NewProc(\"GetConsoleCursorInfo\")\n\tprocSetConsoleCursorInfo       = kernel32.NewProc(\"SetConsoleCursorInfo\")\n)\n\ntype Writer struct {\n\tout     io.Writer\n\thandle  syscall.Handle\n\tlastbuf bytes.Buffer\n\toldattr word\n}\n\nfunc NewColorable(file *os.File) io.Writer {\n\tif file == nil {\n\t\tpanic(\"nil passed instead of *os.File to NewColorable()\")\n\t}\n\n\tif isatty.IsTerminal(file.Fd()) {\n\t\tvar csbi consoleScreenBufferInfo\n\t\thandle := syscall.Handle(file.Fd())\n\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\treturn &Writer{out: file, handle: handle, oldattr: csbi.attributes}\n\t} else {\n\t\treturn file\n\t}\n}\n\nfunc NewColorableStdout() io.Writer {\n\treturn NewColorable(os.Stdout)\n}\n\nfunc NewColorableStderr() io.Writer {\n\treturn NewColorable(os.Stderr)\n}\n\nvar color256 = map[int]int{\n\t0:   0x000000,\n\t1:   0x800000,\n\t2:   0x008000,\n\t3:   0x808000,\n\t4:   0x000080,\n\t5:   0x800080,\n\t6:   0x008080,\n\t7:   0xc0c0c0,\n\t8:   0x808080,\n\t9:   0xff0000,\n\t10:  0x00ff00,\n\t11:  0xffff00,\n\t12:  0x0000ff,\n\t13:  0xff00ff,\n\t14:  0x00ffff,\n\t15:  0xffffff,\n\t16:  0x000000,\n\t17:  0x00005f,\n\t18:  0x000087,\n\t19:  0x0000af,\n\t20:  0x0000d7,\n\t21:  0x0000ff,\n\t22:  0x005f00,\n\t23:  0x005f5f,\n\t24:  0x005f87,\n\t25:  0x005faf,\n\t26:  0x005fd7,\n\t27:  0x005fff,\n\t28:  0x008700,\n\t29:  0x00875f,\n\t30:  0x008787,\n\t31:  0x0087af,\n\t32:  0x0087d7,\n\t33:  0x0087ff,\n\t34:  0x00af00,\n\t35:  0x00af5f,\n\t36:  0x00af87,\n\t37:  0x00afaf,\n\t38:  0x00afd7,\n\t39:  0x00afff,\n\t40:  0x00d700,\n\t41:  0x00d75f,\n\t42:  0x00d787,\n\t43:  0x00d7af,\n\t44:  0x00d7d7,\n\t45:  0x00d7ff,\n\t46:  0x00ff00,\n\t47:  0x00ff5f,\n\t48:  0x00ff87,\n\t49:  0x00ffaf,\n\t50:  0x00ffd7,\n\t51:  0x00ffff,\n\t52:  0x5f0000,\n\t53:  0x5f005f,\n\t54:  0x5f0087,\n\t55:  0x5f00af,\n\t56:  0x5f00d7,\n\t57:  0x5f00ff,\n\t58:  0x5f5f00,\n\t59:  0x5f5f5f,\n\t60:  0x5f5f87,\n\t61:  0x5f5faf,\n\t62:  0x5f5fd7,\n\t63:  0x5f5fff,\n\t64:  0x5f8700,\n\t65:  0x5f875f,\n\t66:  0x5f8787,\n\t67:  0x5f87af,\n\t68:  0x5f87d7,\n\t69:  0x5f87ff,\n\t70:  0x5faf00,\n\t71:  0x5faf5f,\n\t72:  0x5faf87,\n\t73:  0x5fafaf,\n\t74:  0x5fafd7,\n\t75:  0x5fafff,\n\t76:  0x5fd700,\n\t77:  0x5fd75f,\n\t78:  0x5fd787,\n\t79:  0x5fd7af,\n\t80:  0x5fd7d7,\n\t81:  0x5fd7ff,\n\t82:  0x5fff00,\n\t83:  0x5fff5f,\n\t84:  0x5fff87,\n\t85:  0x5fffaf,\n\t86:  0x5fffd7,\n\t87:  0x5fffff,\n\t88:  0x870000,\n\t89:  0x87005f,\n\t90:  0x870087,\n\t91:  0x8700af,\n\t92:  0x8700d7,\n\t93:  0x8700ff,\n\t94:  0x875f00,\n\t95:  0x875f5f,\n\t96:  0x875f87,\n\t97:  0x875faf,\n\t98:  0x875fd7,\n\t99:  0x875fff,\n\t100: 0x878700,\n\t101: 0x87875f,\n\t102: 0x878787,\n\t103: 0x8787af,\n\t104: 0x8787d7,\n\t105: 0x8787ff,\n\t106: 0x87af00,\n\t107: 0x87af5f,\n\t108: 0x87af87,\n\t109: 0x87afaf,\n\t110: 0x87afd7,\n\t111: 0x87afff,\n\t112: 0x87d700,\n\t113: 0x87d75f,\n\t114: 0x87d787,\n\t115: 0x87d7af,\n\t116: 0x87d7d7,\n\t117: 0x87d7ff,\n\t118: 0x87ff00,\n\t119: 0x87ff5f,\n\t120: 0x87ff87,\n\t121: 0x87ffaf,\n\t122: 0x87ffd7,\n\t123: 0x87ffff,\n\t124: 0xaf0000,\n\t125: 0xaf005f,\n\t126: 0xaf0087,\n\t127: 0xaf00af,\n\t128: 0xaf00d7,\n\t129: 0xaf00ff,\n\t130: 0xaf5f00,\n\t131: 0xaf5f5f,\n\t132: 0xaf5f87,\n\t133: 0xaf5faf,\n\t134: 0xaf5fd7,\n\t135: 0xaf5fff,\n\t136: 0xaf8700,\n\t137: 0xaf875f,\n\t138: 0xaf8787,\n\t139: 0xaf87af,\n\t140: 0xaf87d7,\n\t141: 0xaf87ff,\n\t142: 0xafaf00,\n\t143: 0xafaf5f,\n\t144: 0xafaf87,\n\t145: 0xafafaf,\n\t146: 0xafafd7,\n\t147: 0xafafff,\n\t148: 0xafd700,\n\t149: 0xafd75f,\n\t150: 0xafd787,\n\t151: 0xafd7af,\n\t152: 0xafd7d7,\n\t153: 0xafd7ff,\n\t154: 0xafff00,\n\t155: 0xafff5f,\n\t156: 0xafff87,\n\t157: 0xafffaf,\n\t158: 0xafffd7,\n\t159: 0xafffff,\n\t160: 0xd70000,\n\t161: 0xd7005f,\n\t162: 0xd70087,\n\t163: 0xd700af,\n\t164: 0xd700d7,\n\t165: 0xd700ff,\n\t166: 0xd75f00,\n\t167: 0xd75f5f,\n\t168: 0xd75f87,\n\t169: 0xd75faf,\n\t170: 0xd75fd7,\n\t171: 0xd75fff,\n\t172: 0xd78700,\n\t173: 0xd7875f,\n\t174: 0xd78787,\n\t175: 0xd787af,\n\t176: 0xd787d7,\n\t177: 0xd787ff,\n\t178: 0xd7af00,\n\t179: 0xd7af5f,\n\t180: 0xd7af87,\n\t181: 0xd7afaf,\n\t182: 0xd7afd7,\n\t183: 0xd7afff,\n\t184: 0xd7d700,\n\t185: 0xd7d75f,\n\t186: 0xd7d787,\n\t187: 0xd7d7af,\n\t188: 0xd7d7d7,\n\t189: 0xd7d7ff,\n\t190: 0xd7ff00,\n\t191: 0xd7ff5f,\n\t192: 0xd7ff87,\n\t193: 0xd7ffaf,\n\t194: 0xd7ffd7,\n\t195: 0xd7ffff,\n\t196: 0xff0000,\n\t197: 0xff005f,\n\t198: 0xff0087,\n\t199: 0xff00af,\n\t200: 0xff00d7,\n\t201: 0xff00ff,\n\t202: 0xff5f00,\n\t203: 0xff5f5f,\n\t204: 0xff5f87,\n\t205: 0xff5faf,\n\t206: 0xff5fd7,\n\t207: 0xff5fff,\n\t208: 0xff8700,\n\t209: 0xff875f,\n\t210: 0xff8787,\n\t211: 0xff87af,\n\t212: 0xff87d7,\n\t213: 0xff87ff,\n\t214: 0xffaf00,\n\t215: 0xffaf5f,\n\t216: 0xffaf87,\n\t217: 0xffafaf,\n\t218: 0xffafd7,\n\t219: 0xffafff,\n\t220: 0xffd700,\n\t221: 0xffd75f,\n\t222: 0xffd787,\n\t223: 0xffd7af,\n\t224: 0xffd7d7,\n\t225: 0xffd7ff,\n\t226: 0xffff00,\n\t227: 0xffff5f,\n\t228: 0xffff87,\n\t229: 0xffffaf,\n\t230: 0xffffd7,\n\t231: 0xffffff,\n\t232: 0x080808,\n\t233: 0x121212,\n\t234: 0x1c1c1c,\n\t235: 0x262626,\n\t236: 0x303030,\n\t237: 0x3a3a3a,\n\t238: 0x444444,\n\t239: 0x4e4e4e,\n\t240: 0x585858,\n\t241: 0x626262,\n\t242: 0x6c6c6c,\n\t243: 0x767676,\n\t244: 0x808080,\n\t245: 0x8a8a8a,\n\t246: 0x949494,\n\t247: 0x9e9e9e,\n\t248: 0xa8a8a8,\n\t249: 0xb2b2b2,\n\t250: 0xbcbcbc,\n\t251: 0xc6c6c6,\n\t252: 0xd0d0d0,\n\t253: 0xdadada,\n\t254: 0xe4e4e4,\n\t255: 0xeeeeee,\n}\n\nfunc (w *Writer) Write(data []byte) (n int, err error) {\n\tvar csbi consoleScreenBufferInfo\n\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\n\ter := bytes.NewBuffer(data)\nloop:\n\tfor {\n\t\tr1, _, err := procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\tif r1 == 0 {\n\t\t\tbreak loop\n\t\t}\n\n\t\tc1, _, err := er.ReadRune()\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c1 != 0x1b {\n\t\t\tfmt.Fprint(w.out, string(c1))\n\t\t\tcontinue\n\t\t}\n\t\tc2, _, err := er.ReadRune()\n\t\tif err != nil {\n\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\tbreak loop\n\t\t}\n\t\tif c2 != 0x5b {\n\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\tw.lastbuf.WriteRune(c2)\n\t\t\tcontinue\n\t\t}\n\n\t\tvar buf bytes.Buffer\n\t\tvar m rune\n\t\tfor {\n\t\t\tc, _, err := er.ReadRune()\n\t\t\tif err != nil {\n\t\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\t\tw.lastbuf.WriteRune(c2)\n\t\t\t\tw.lastbuf.Write(buf.Bytes())\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tif ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {\n\t\t\t\tm = c\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbuf.Write([]byte(string(c)))\n\t\t}\n\n\t\tvar csbi consoleScreenBufferInfo\n\t\tswitch m {\n\t\tcase 'A':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.y -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'B':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.y += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'C':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'D':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif n, err = strconv.Atoi(buf.String()); err == nil {\n\t\t\t\tvar csbi consoleScreenBufferInfo\n\t\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\t\tcsbi.cursorPosition.x += short(n)\n\t\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\t\t}\n\t\tcase 'E':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = 0\n\t\t\tcsbi.cursorPosition.y += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'F':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = 0\n\t\t\tcsbi.cursorPosition.y -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'G':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = short(n-1)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'H':\n\t\t\ttoken := strings.Split(buf.String(), \";\")\n\t\t\tif len(token) != 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tn1, err := strconv.Atoi(token[0])\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tn2, err := strconv.Atoi(token[1])\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcsbi.cursorPosition.x = short(n2-1)\n\t\t\tcsbi.cursorPosition.y = short(n1-1)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'J':\n\t\t\tn, err := strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tvar cursor coord\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\tcase 1:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top}\n\t\t\tcase 2:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top}\n\t\t\t}\n\t\t\tvar count, written dword\n\t\t\tcount = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.size.y-csbi.cursorPosition.y)*csbi.size.x)\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'K':\n\t\t\tn, err := strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tvar cursor coord\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\tcase 1:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y}\n\t\t\tcase 2:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y}\n\t\t\t}\n\t\t\tvar count, written dword\n\t\t\tcount = dword(csbi.size.x - csbi.cursorPosition.x)\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'm':\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tattr := csbi.attributes\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"\" {\n\t\t\t\tprocSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(w.oldattr))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttoken := strings.Split(cs, \";\")\n\t\t\tfor i := 0; i < len(token); i++ {\n\t\t\t\tns := token[i]\n\t\t\t\tif n, err = strconv.Atoi(ns); err == nil {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase n == 0 || n == 100:\n\t\t\t\t\t\tattr = w.oldattr\n\t\t\t\t\tcase 1 <= n && n <= 5:\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\tcase n == 7:\n\t\t\t\t\t\tattr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)\n\t\t\t\t\tcase 22 == n || n == 25 || n == 25:\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\tcase n == 27:\n\t\t\t\t\t\tattr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)\n\t\t\t\t\tcase 30 <= n && n <= 37:\n\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\tif (n-30)&1 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-30)&2 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-30)&4 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 38: // set foreground color.\n\t\t\t\t\t\tif i < len(token)-2 && (token[i+1] == \"5\" || token[i+1] == \"05\") {\n\t\t\t\t\t\t\tif n256, err := strconv.Atoi(token[i+2]); err == nil {\n\t\t\t\t\t\t\t\tif n256foreAttr == nil {\n\t\t\t\t\t\t\t\t\tn256setup()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\t\t\tattr |= n256foreAttr[n256]\n\t\t\t\t\t\t\t\ti += 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattr = attr & (w.oldattr & backgroundMask)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 39: // reset foreground color.\n\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\tattr |= w.oldattr & foregroundMask\n\t\t\t\t\tcase 40 <= n && n <= 47:\n\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\tif (n-40)&1 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-40)&2 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-40)&4 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 48: // set background color.\n\t\t\t\t\t\tif i < len(token)-2 && token[i+1] == \"5\" {\n\t\t\t\t\t\t\tif n256, err := strconv.Atoi(token[i+2]); err == nil {\n\t\t\t\t\t\t\t\tif n256backAttr == nil {\n\t\t\t\t\t\t\t\t\tn256setup()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\t\t\tattr |= n256backAttr[n256]\n\t\t\t\t\t\t\t\ti += 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattr = attr & (w.oldattr & foregroundMask)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 49: // reset foreground color.\n\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\tattr |= w.oldattr & backgroundMask\n\t\t\t\t\tcase 90 <= n && n <= 97:\n\t\t\t\t\t\tattr = (attr & backgroundMask)\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\t\tif (n-90)&1 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-90)&2 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-90)&4 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 100 <= n && n <= 107:\n\t\t\t\t\t\tattr = (attr & foregroundMask)\n\t\t\t\t\t\tattr |= backgroundIntensity\n\t\t\t\t\t\tif (n-100)&1 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-100)&2 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-100)&4 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tprocSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(attr))\n\t\t\t\t}\n\t\t\t}\n\t\tcase 'h':\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"?25\" {\n\t\t\t\tvar ci consoleCursorInfo\n\t\t\t\tprocGetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t\tci.visible = 1\n\t\t\t\tprocSetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t}\n\t\tcase 'l':\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"?25\" {\n\t\t\t\tvar ci consoleCursorInfo\n\t\t\t\tprocGetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t\tci.visible = 0\n\t\t\t\tprocSetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t}\n\t\t}\n\t}\n\treturn len(data) - w.lastbuf.Len(), nil\n}\n\ntype consoleColor struct {\n\trgb       int\n\tred       bool\n\tgreen     bool\n\tblue      bool\n\tintensity bool\n}\n\nfunc (c consoleColor) foregroundAttr() (attr word) {\n\tif c.red {\n\t\tattr |= foregroundRed\n\t}\n\tif c.green {\n\t\tattr |= foregroundGreen\n\t}\n\tif c.blue {\n\t\tattr |= foregroundBlue\n\t}\n\tif c.intensity {\n\t\tattr |= foregroundIntensity\n\t}\n\treturn\n}\n\nfunc (c consoleColor) backgroundAttr() (attr word) {\n\tif c.red {\n\t\tattr |= backgroundRed\n\t}\n\tif c.green {\n\t\tattr |= backgroundGreen\n\t}\n\tif c.blue {\n\t\tattr |= backgroundBlue\n\t}\n\tif c.intensity {\n\t\tattr |= backgroundIntensity\n\t}\n\treturn\n}\n\nvar color16 = []consoleColor{\n\tconsoleColor{0x000000, false, false, false, false},\n\tconsoleColor{0x000080, false, false, true, false},\n\tconsoleColor{0x008000, false, true, false, false},\n\tconsoleColor{0x008080, false, true, true, false},\n\tconsoleColor{0x800000, true, false, false, false},\n\tconsoleColor{0x800080, true, false, true, false},\n\tconsoleColor{0x808000, true, true, false, false},\n\tconsoleColor{0xc0c0c0, true, true, true, false},\n\tconsoleColor{0x808080, false, false, false, true},\n\tconsoleColor{0x0000ff, false, false, true, true},\n\tconsoleColor{0x00ff00, false, true, false, true},\n\tconsoleColor{0x00ffff, false, true, true, true},\n\tconsoleColor{0xff0000, true, false, false, true},\n\tconsoleColor{0xff00ff, true, false, true, true},\n\tconsoleColor{0xffff00, true, true, false, true},\n\tconsoleColor{0xffffff, true, true, true, true},\n}\n\ntype hsv struct {\n\th, s, v float32\n}\n\nfunc (a hsv) dist(b hsv) float32 {\n\tdh := a.h - b.h\n\tswitch {\n\tcase dh > 0.5:\n\t\tdh = 1 - dh\n\tcase dh < -0.5:\n\t\tdh = -1 - dh\n\t}\n\tds := a.s - b.s\n\tdv := a.v - b.v\n\treturn float32(math.Sqrt(float64(dh*dh + ds*ds + dv*dv)))\n}\n\nfunc toHSV(rgb int) hsv {\n\tr, g, b := float32((rgb&0xFF0000)>>16)/256.0,\n\t\tfloat32((rgb&0x00FF00)>>8)/256.0,\n\t\tfloat32(rgb&0x0000FF)/256.0\n\tmin, max := minmax3f(r, g, b)\n\th := max - min\n\tif h > 0 {\n\t\tif max == r {\n\t\t\th = (g - b) / h\n\t\t\tif h < 0 {\n\t\t\t\th += 6\n\t\t\t}\n\t\t} else if max == g {\n\t\t\th = 2 + (b-r)/h\n\t\t} else {\n\t\t\th = 4 + (r-g)/h\n\t\t}\n\t}\n\th /= 6.0\n\ts := max - min\n\tif max != 0 {\n\t\ts /= max\n\t}\n\tv := max\n\treturn hsv{h: h, s: s, v: v}\n}\n\ntype hsvTable []hsv\n\nfunc toHSVTable(rgbTable []consoleColor) hsvTable {\n\tt := make(hsvTable, len(rgbTable))\n\tfor i, c := range rgbTable {\n\t\tt[i] = toHSV(c.rgb)\n\t}\n\treturn t\n}\n\nfunc (t hsvTable) find(rgb int) consoleColor {\n\thsv := toHSV(rgb)\n\tn := 7\n\tl := float32(5.0)\n\tfor i, p := range t {\n\t\td := hsv.dist(p)\n\t\tif d < l {\n\t\t\tl, n = d, i\n\t\t}\n\t}\n\treturn color16[n]\n}\n\nfunc minmax3f(a, b, c float32) (min, max float32) {\n\tif a < b {\n\t\tif b < c {\n\t\t\treturn a, c\n\t\t} else if a < c {\n\t\t\treturn a, b\n\t\t} else {\n\t\t\treturn c, b\n\t\t}\n\t} else {\n\t\tif a < c {\n\t\t\treturn b, c\n\t\t} else if b < c {\n\t\t\treturn b, a\n\t\t} else {\n\t\t\treturn c, a\n\t\t}\n\t}\n}\n\nvar n256foreAttr []word\nvar n256backAttr []word\n\nfunc n256setup() {\n\tn256foreAttr = make([]word, 256)\n\tn256backAttr = make([]word, 256)\n\tt := toHSVTable(color16)\n\tfor i, rgb := range color256 {\n\t\tc := t.find(rgb)\n\t\tn256foreAttr[i] = c.foregroundAttr()\n\t\tn256backAttr[i] = c.backgroundAttr()\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-colorable/noncolorable.go",
    "content": "package colorable\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n)\n\ntype NonColorable struct {\n\tout     io.Writer\n\tlastbuf bytes.Buffer\n}\n\nfunc NewNonColorable(w io.Writer) io.Writer {\n\treturn &NonColorable{out: w}\n}\n\nfunc (w *NonColorable) Write(data []byte) (n int, err error) {\n\ter := bytes.NewBuffer(data)\nloop:\n\tfor {\n\t\tc1, _, err := er.ReadRune()\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c1 != 0x1b {\n\t\t\tfmt.Fprint(w.out, string(c1))\n\t\t\tcontinue\n\t\t}\n\t\tc2, _, err := er.ReadRune()\n\t\tif err != nil {\n\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\tbreak loop\n\t\t}\n\t\tif c2 != 0x5b {\n\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\tw.lastbuf.WriteRune(c2)\n\t\t\tcontinue\n\t\t}\n\n\t\tvar buf bytes.Buffer\n\t\tfor {\n\t\t\tc, _, err := er.ReadRune()\n\t\t\tif err != nil {\n\t\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\t\tw.lastbuf.WriteRune(c2)\n\t\t\t\tw.lastbuf.Write(buf.Bytes())\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tif ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbuf.Write([]byte(string(c)))\n\t\t}\n\t}\n\treturn len(data) - w.lastbuf.Len(), nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/LICENSE",
    "content": "Copyright (c) Yasuhiro MATSUMOTO <mattn.jp@gmail.com>\n\nMIT License (Expat)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/README.md",
    "content": "# go-isatty\n\nisatty for golang\n\n## Usage\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/mattn/go-isatty\"\n\t\"os\"\n)\n\nfunc main() {\n\tif isatty.IsTerminal(os.Stdout.Fd()) {\n\t\tfmt.Println(\"Is Terminal\")\n\t} else {\n\t\tfmt.Println(\"Is Not Terminal\")\n\t}\n}\n```\n\n## Installation\n\n```\n$ go get github.com/mattn/go-isatty\n```\n\n# License\n\nMIT\n\n# Author\n\nYasuhiro Matsumoto (a.k.a mattn)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/doc.go",
    "content": "// Package isatty implements interface to isatty\npackage isatty\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/isatty_appengine.go",
    "content": "// +build appengine\n\npackage isatty\n\n// IsTerminal returns true if the file descriptor is terminal which\n// is always false on on appengine classic which is a sandboxed PaaS.\nfunc IsTerminal(fd uintptr) bool {\n\treturn false\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/isatty_bsd.go",
    "content": "// +build darwin freebsd openbsd netbsd dragonfly\n// +build !appengine\n\npackage isatty\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ioctlReadTermios = syscall.TIOCGETA\n\n// IsTerminal return true if the file descriptor is terminal.\nfunc IsTerminal(fd uintptr) bool {\n\tvar termios syscall.Termios\n\t_, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)\n\treturn err == 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/isatty_linux.go",
    "content": "// +build linux\n// +build !appengine\n\npackage isatty\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ioctlReadTermios = syscall.TCGETS\n\n// IsTerminal return true if the file descriptor is terminal.\nfunc IsTerminal(fd uintptr) bool {\n\tvar termios syscall.Termios\n\t_, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)\n\treturn err == 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/isatty_solaris.go",
    "content": "// +build solaris\n// +build !appengine\n\npackage isatty\n\nimport (\n\t\"golang.org/x/sys/unix\"\n)\n\n// IsTerminal returns true if the given file descriptor is a terminal.\n// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c\nfunc IsTerminal(fd uintptr) bool {\n\tvar termio unix.Termio\n\terr := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio)\n\treturn err == nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mattn/go-isatty/isatty_windows.go",
    "content": "// +build windows\n// +build !appengine\n\npackage isatty\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar kernel32 = syscall.NewLazyDLL(\"kernel32.dll\")\nvar procGetConsoleMode = kernel32.NewProc(\"GetConsoleMode\")\n\n// IsTerminal return true if the file descriptor is terminal.\nfunc IsTerminal(fd uintptr) bool {\n\tvar st uint32\n\tr, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0)\n\treturn r != 0 && e == 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/.travis.yml",
    "content": "language: go\n\ngo:\n  - \"1.11.x\"\n  - tip\n\nscript:\n  - go test\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md",
    "content": "## 1.1.2\n\n* Fix error when decode hook decodes interface implementation into interface\n  type. [GH-140]\n\n## 1.1.1\n\n* Fix panic that can happen in `decodePtr`\n\n## 1.1.0\n\n* Added `StringToIPHookFunc` to convert `string` to `net.IP` and `net.IPNet` [GH-133]\n* Support struct to struct decoding [GH-137]\n* If source map value is nil, then destination map value is nil (instead of empty)\n* If source slice value is nil, then destination slice value is nil (instead of empty)\n* If source pointer is nil, then destination pointer is set to nil (instead of\n  allocated zero value of type)\n\n## 1.0.0\n\n* Initial tagged stable release.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Mitchell Hashimoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/README.md",
    "content": "# mapstructure [![Godoc](https://godoc.org/github.com/mitchellh/mapstructure?status.svg)](https://godoc.org/github.com/mitchellh/mapstructure)\n\nmapstructure is a Go library for decoding generic map values to structures\nand vice versa, while providing helpful error handling.\n\nThis library is most useful when decoding values from some data stream (JSON,\nGob, etc.) where you don't _quite_ know the structure of the underlying data\nuntil you read a part of it. You can therefore read a `map[string]interface{}`\nand use this library to decode it into the proper underlying native Go\nstructure.\n\n## Installation\n\nStandard `go get`:\n\n```\n$ go get github.com/mitchellh/mapstructure\n```\n\n## Usage & Example\n\nFor usage and examples see the [Godoc](http://godoc.org/github.com/mitchellh/mapstructure).\n\nThe `Decode` function has examples associated with it there.\n\n## But Why?!\n\nGo offers fantastic standard libraries for decoding formats such as JSON.\nThe standard method is to have a struct pre-created, and populate that struct\nfrom the bytes of the encoded format. This is great, but the problem is if\nyou have configuration or an encoding that changes slightly depending on\nspecific fields. For example, consider this JSON:\n\n```json\n{\n  \"type\": \"person\",\n  \"name\": \"Mitchell\"\n}\n```\n\nPerhaps we can't populate a specific structure without first reading\nthe \"type\" field from the JSON. We could always do two passes over the\ndecoding of the JSON (reading the \"type\" first, and the rest later).\nHowever, it is much simpler to just decode this into a `map[string]interface{}`\nstructure, read the \"type\" key, then use something like this library\nto decode it into the proper structure.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/decode_hooks.go",
    "content": "package mapstructure\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// typedDecodeHook takes a raw DecodeHookFunc (an interface{}) and turns\n// it into the proper DecodeHookFunc type, such as DecodeHookFuncType.\nfunc typedDecodeHook(h DecodeHookFunc) DecodeHookFunc {\n\t// Create variables here so we can reference them with the reflect pkg\n\tvar f1 DecodeHookFuncType\n\tvar f2 DecodeHookFuncKind\n\n\t// Fill in the variables into this interface and the rest is done\n\t// automatically using the reflect package.\n\tpotential := []interface{}{f1, f2}\n\n\tv := reflect.ValueOf(h)\n\tvt := v.Type()\n\tfor _, raw := range potential {\n\t\tpt := reflect.ValueOf(raw).Type()\n\t\tif vt.ConvertibleTo(pt) {\n\t\t\treturn v.Convert(pt).Interface()\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// DecodeHookExec executes the given decode hook. This should be used\n// since it'll naturally degrade to the older backwards compatible DecodeHookFunc\n// that took reflect.Kind instead of reflect.Type.\nfunc DecodeHookExec(\n\traw DecodeHookFunc,\n\tfrom reflect.Type, to reflect.Type,\n\tdata interface{}) (interface{}, error) {\n\tswitch f := typedDecodeHook(raw).(type) {\n\tcase DecodeHookFuncType:\n\t\treturn f(from, to, data)\n\tcase DecodeHookFuncKind:\n\t\treturn f(from.Kind(), to.Kind(), data)\n\tdefault:\n\t\treturn nil, errors.New(\"invalid decode hook signature\")\n\t}\n}\n\n// ComposeDecodeHookFunc creates a single DecodeHookFunc that\n// automatically composes multiple DecodeHookFuncs.\n//\n// The composed funcs are called in order, with the result of the\n// previous transformation.\nfunc ComposeDecodeHookFunc(fs ...DecodeHookFunc) DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tvar err error\n\t\tfor _, f1 := range fs {\n\t\t\tdata, err = DecodeHookExec(f1, f, t, data)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// Modify the from kind to be correct with the new data\n\t\t\tf = nil\n\t\t\tif val := reflect.ValueOf(data); val.IsValid() {\n\t\t\t\tf = val.Type()\n\t\t\t}\n\t\t}\n\n\t\treturn data, nil\n\t}\n}\n\n// StringToSliceHookFunc returns a DecodeHookFunc that converts\n// string to []string by splitting on the given sep.\nfunc StringToSliceHookFunc(sep string) DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Kind,\n\t\tt reflect.Kind,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f != reflect.String || t != reflect.Slice {\n\t\t\treturn data, nil\n\t\t}\n\n\t\traw := data.(string)\n\t\tif raw == \"\" {\n\t\t\treturn []string{}, nil\n\t\t}\n\n\t\treturn strings.Split(raw, sep), nil\n\t}\n}\n\n// StringToTimeDurationHookFunc returns a DecodeHookFunc that converts\n// strings to time.Duration.\nfunc StringToTimeDurationHookFunc() DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(time.Duration(5)) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\treturn time.ParseDuration(data.(string))\n\t}\n}\n\n// StringToIPHookFunc returns a DecodeHookFunc that converts\n// strings to net.IP\nfunc StringToIPHookFunc() DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(net.IP{}) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\tip := net.ParseIP(data.(string))\n\t\tif ip == nil {\n\t\t\treturn net.IP{}, fmt.Errorf(\"failed parsing ip %v\", data)\n\t\t}\n\n\t\treturn ip, nil\n\t}\n}\n\n// StringToIPNetHookFunc returns a DecodeHookFunc that converts\n// strings to net.IPNet\nfunc StringToIPNetHookFunc() DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(net.IPNet{}) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\t_, net, err := net.ParseCIDR(data.(string))\n\t\treturn net, err\n\t}\n}\n\n// StringToTimeHookFunc returns a DecodeHookFunc that converts\n// strings to time.Time.\nfunc StringToTimeHookFunc(layout string) DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(time.Time{}) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\treturn time.Parse(layout, data.(string))\n\t}\n}\n\n// WeaklyTypedHook is a DecodeHookFunc which adds support for weak typing to\n// the decoder.\n//\n// Note that this is significantly different from the WeaklyTypedInput option\n// of the DecoderConfig.\nfunc WeaklyTypedHook(\n\tf reflect.Kind,\n\tt reflect.Kind,\n\tdata interface{}) (interface{}, error) {\n\tdataVal := reflect.ValueOf(data)\n\tswitch t {\n\tcase reflect.String:\n\t\tswitch f {\n\t\tcase reflect.Bool:\n\t\t\tif dataVal.Bool() {\n\t\t\t\treturn \"1\", nil\n\t\t\t}\n\t\t\treturn \"0\", nil\n\t\tcase reflect.Float32:\n\t\t\treturn strconv.FormatFloat(dataVal.Float(), 'f', -1, 64), nil\n\t\tcase reflect.Int:\n\t\t\treturn strconv.FormatInt(dataVal.Int(), 10), nil\n\t\tcase reflect.Slice:\n\t\t\tdataType := dataVal.Type()\n\t\t\telemKind := dataType.Elem().Kind()\n\t\t\tif elemKind == reflect.Uint8 {\n\t\t\t\treturn string(dataVal.Interface().([]uint8)), nil\n\t\t\t}\n\t\tcase reflect.Uint:\n\t\t\treturn strconv.FormatUint(dataVal.Uint(), 10), nil\n\t\t}\n\t}\n\n\treturn data, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/error.go",
    "content": "package mapstructure\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Error implements the error interface and can represents multiple\n// errors that occur in the course of a single decode.\ntype Error struct {\n\tErrors []string\n}\n\nfunc (e *Error) Error() string {\n\tpoints := make([]string, len(e.Errors))\n\tfor i, err := range e.Errors {\n\t\tpoints[i] = fmt.Sprintf(\"* %s\", err)\n\t}\n\n\tsort.Strings(points)\n\treturn fmt.Sprintf(\n\t\t\"%d error(s) decoding:\\n\\n%s\",\n\t\tlen(e.Errors), strings.Join(points, \"\\n\"))\n}\n\n// WrappedErrors implements the errwrap.Wrapper interface to make this\n// return value more useful with the errwrap and go-multierror libraries.\nfunc (e *Error) WrappedErrors() []error {\n\tif e == nil {\n\t\treturn nil\n\t}\n\n\tresult := make([]error, len(e.Errors))\n\tfor i, e := range e.Errors {\n\t\tresult[i] = errors.New(e)\n\t}\n\n\treturn result\n}\n\nfunc appendErrors(errors []string, err error) []string {\n\tswitch e := err.(type) {\n\tcase *Error:\n\t\treturn append(errors, e.Errors...)\n\tdefault:\n\t\treturn append(errors, e.Error())\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/go.mod",
    "content": "module github.com/mitchellh/mapstructure\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/mitchellh/mapstructure/mapstructure.go",
    "content": "// Package mapstructure exposes functionality to convert an arbitrary\n// map[string]interface{} into a native Go structure.\n//\n// The Go structure can be arbitrarily complex, containing slices,\n// other structs, etc. and the decoder will properly decode nested\n// maps and so on into the proper structures in the native Go struct.\n// See the examples to see what the decoder is capable of.\npackage mapstructure\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// DecodeHookFunc is the callback function that can be used for\n// data transformations. See \"DecodeHook\" in the DecoderConfig\n// struct.\n//\n// The type should be DecodeHookFuncType or DecodeHookFuncKind.\n// Either is accepted. Types are a superset of Kinds (Types can return\n// Kinds) and are generally a richer thing to use, but Kinds are simpler\n// if you only need those.\n//\n// The reason DecodeHookFunc is multi-typed is for backwards compatibility:\n// we started with Kinds and then realized Types were the better solution,\n// but have a promise to not break backwards compat so we now support\n// both.\ntype DecodeHookFunc interface{}\n\n// DecodeHookFuncType is a DecodeHookFunc which has complete information about\n// the source and target types.\ntype DecodeHookFuncType func(reflect.Type, reflect.Type, interface{}) (interface{}, error)\n\n// DecodeHookFuncKind is a DecodeHookFunc which knows only the Kinds of the\n// source and target types.\ntype DecodeHookFuncKind func(reflect.Kind, reflect.Kind, interface{}) (interface{}, error)\n\n// DecoderConfig is the configuration that is used to create a new decoder\n// and allows customization of various aspects of decoding.\ntype DecoderConfig struct {\n\t// DecodeHook, if set, will be called before any decoding and any\n\t// type conversion (if WeaklyTypedInput is on). This lets you modify\n\t// the values before they're set down onto the resulting struct.\n\t//\n\t// If an error is returned, the entire decode will fail with that\n\t// error.\n\tDecodeHook DecodeHookFunc\n\n\t// If ErrorUnused is true, then it is an error for there to exist\n\t// keys in the original map that were unused in the decoding process\n\t// (extra keys).\n\tErrorUnused bool\n\n\t// ZeroFields, if set to true, will zero fields before writing them.\n\t// For example, a map will be emptied before decoded values are put in\n\t// it. If this is false, a map will be merged.\n\tZeroFields bool\n\n\t// If WeaklyTypedInput is true, the decoder will make the following\n\t// \"weak\" conversions:\n\t//\n\t//   - bools to string (true = \"1\", false = \"0\")\n\t//   - numbers to string (base 10)\n\t//   - bools to int/uint (true = 1, false = 0)\n\t//   - strings to int/uint (base implied by prefix)\n\t//   - int to bool (true if value != 0)\n\t//   - string to bool (accepts: 1, t, T, TRUE, true, True, 0, f, F,\n\t//     FALSE, false, False. Anything else is an error)\n\t//   - empty array = empty map and vice versa\n\t//   - negative numbers to overflowed uint values (base 10)\n\t//   - slice of maps to a merged map\n\t//   - single values are converted to slices if required. Each\n\t//     element is weakly decoded. For example: \"4\" can become []int{4}\n\t//     if the target type is an int slice.\n\t//\n\tWeaklyTypedInput bool\n\n\t// Metadata is the struct that will contain extra metadata about\n\t// the decoding. If this is nil, then no metadata will be tracked.\n\tMetadata *Metadata\n\n\t// Result is a pointer to the struct that will contain the decoded\n\t// value.\n\tResult interface{}\n\n\t// The tag name that mapstructure reads for field names. This\n\t// defaults to \"mapstructure\"\n\tTagName string\n}\n\n// A Decoder takes a raw interface value and turns it into structured\n// data, keeping track of rich error information along the way in case\n// anything goes wrong. Unlike the basic top-level Decode method, you can\n// more finely control how the Decoder behaves using the DecoderConfig\n// structure. The top-level Decode method is just a convenience that sets\n// up the most basic Decoder.\ntype Decoder struct {\n\tconfig *DecoderConfig\n}\n\n// Metadata contains information about decoding a structure that\n// is tedious or difficult to get otherwise.\ntype Metadata struct {\n\t// Keys are the keys of the structure which were successfully decoded\n\tKeys []string\n\n\t// Unused is a slice of keys that were found in the raw value but\n\t// weren't decoded since there was no matching field in the result interface\n\tUnused []string\n}\n\n// Decode takes an input structure and uses reflection to translate it to\n// the output structure. output must be a pointer to a map or struct.\nfunc Decode(input interface{}, output interface{}) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata: nil,\n\t\tResult:   output,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// WeakDecode is the same as Decode but is shorthand to enable\n// WeaklyTypedInput. See DecoderConfig for more info.\nfunc WeakDecode(input, output interface{}) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata:         nil,\n\t\tResult:           output,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// DecodeMetadata is the same as Decode, but is shorthand to\n// enable metadata collection. See DecoderConfig for more info.\nfunc DecodeMetadata(input interface{}, output interface{}, metadata *Metadata) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata: metadata,\n\t\tResult:   output,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// WeakDecodeMetadata is the same as Decode, but is shorthand to\n// enable both WeaklyTypedInput and metadata collection. See\n// DecoderConfig for more info.\nfunc WeakDecodeMetadata(input interface{}, output interface{}, metadata *Metadata) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata:         metadata,\n\t\tResult:           output,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// NewDecoder returns a new decoder for the given configuration. Once\n// a decoder has been returned, the same configuration must not be used\n// again.\nfunc NewDecoder(config *DecoderConfig) (*Decoder, error) {\n\tval := reflect.ValueOf(config.Result)\n\tif val.Kind() != reflect.Ptr {\n\t\treturn nil, errors.New(\"result must be a pointer\")\n\t}\n\n\tval = val.Elem()\n\tif !val.CanAddr() {\n\t\treturn nil, errors.New(\"result must be addressable (a pointer)\")\n\t}\n\n\tif config.Metadata != nil {\n\t\tif config.Metadata.Keys == nil {\n\t\t\tconfig.Metadata.Keys = make([]string, 0)\n\t\t}\n\n\t\tif config.Metadata.Unused == nil {\n\t\t\tconfig.Metadata.Unused = make([]string, 0)\n\t\t}\n\t}\n\n\tif config.TagName == \"\" {\n\t\tconfig.TagName = \"mapstructure\"\n\t}\n\n\tresult := &Decoder{\n\t\tconfig: config,\n\t}\n\n\treturn result, nil\n}\n\n// Decode decodes the given raw interface to the target pointer specified\n// by the configuration.\nfunc (d *Decoder) Decode(input interface{}) error {\n\treturn d.decode(\"\", input, reflect.ValueOf(d.config.Result).Elem())\n}\n\n// Decodes an unknown data type into a specific reflection value.\nfunc (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) error {\n\tvar inputVal reflect.Value\n\tif input != nil {\n\t\tinputVal = reflect.ValueOf(input)\n\n\t\t// We need to check here if input is a typed nil. Typed nils won't\n\t\t// match the \"input == nil\" below so we check that here.\n\t\tif inputVal.Kind() == reflect.Ptr && inputVal.IsNil() {\n\t\t\tinput = nil\n\t\t}\n\t}\n\n\tif input == nil {\n\t\t// If the data is nil, then we don't set anything, unless ZeroFields is set\n\t\t// to true.\n\t\tif d.config.ZeroFields {\n\t\t\toutVal.Set(reflect.Zero(outVal.Type()))\n\n\t\t\tif d.config.Metadata != nil && name != \"\" {\n\t\t\t\td.config.Metadata.Keys = append(d.config.Metadata.Keys, name)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tif !inputVal.IsValid() {\n\t\t// If the input value is invalid, then we just set the value\n\t\t// to be the zero value.\n\t\toutVal.Set(reflect.Zero(outVal.Type()))\n\t\tif d.config.Metadata != nil && name != \"\" {\n\t\t\td.config.Metadata.Keys = append(d.config.Metadata.Keys, name)\n\t\t}\n\t\treturn nil\n\t}\n\n\tif d.config.DecodeHook != nil {\n\t\t// We have a DecodeHook, so let's pre-process the input.\n\t\tvar err error\n\t\tinput, err = DecodeHookExec(\n\t\t\td.config.DecodeHook,\n\t\t\tinputVal.Type(), outVal.Type(), input)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error decoding '%s': %s\", name, err)\n\t\t}\n\t}\n\n\tvar err error\n\toutputKind := getKind(outVal)\n\tswitch outputKind {\n\tcase reflect.Bool:\n\t\terr = d.decodeBool(name, input, outVal)\n\tcase reflect.Interface:\n\t\terr = d.decodeBasic(name, input, outVal)\n\tcase reflect.String:\n\t\terr = d.decodeString(name, input, outVal)\n\tcase reflect.Int:\n\t\terr = d.decodeInt(name, input, outVal)\n\tcase reflect.Uint:\n\t\terr = d.decodeUint(name, input, outVal)\n\tcase reflect.Float32:\n\t\terr = d.decodeFloat(name, input, outVal)\n\tcase reflect.Struct:\n\t\terr = d.decodeStruct(name, input, outVal)\n\tcase reflect.Map:\n\t\terr = d.decodeMap(name, input, outVal)\n\tcase reflect.Ptr:\n\t\terr = d.decodePtr(name, input, outVal)\n\tcase reflect.Slice:\n\t\terr = d.decodeSlice(name, input, outVal)\n\tcase reflect.Array:\n\t\terr = d.decodeArray(name, input, outVal)\n\tcase reflect.Func:\n\t\terr = d.decodeFunc(name, input, outVal)\n\tdefault:\n\t\t// If we reached this point then we weren't able to decode it\n\t\treturn fmt.Errorf(\"%s: unsupported type: %s\", name, outputKind)\n\t}\n\n\t// If we reached here, then we successfully decoded SOMETHING, so\n\t// mark the key as used if we're tracking metainput.\n\tif d.config.Metadata != nil && name != \"\" {\n\t\td.config.Metadata.Keys = append(d.config.Metadata.Keys, name)\n\t}\n\n\treturn err\n}\n\n// This decodes a basic type (bool, int, string, etc.) and sets the\n// value to \"data\" of that type.\nfunc (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value) error {\n\tif val.IsValid() && val.Elem().IsValid() {\n\t\treturn d.decode(name, data, val.Elem())\n\t}\n\n\tdataVal := reflect.ValueOf(data)\n\n\t// If the input data is a pointer, and the assigned type is the dereference\n\t// of that exact pointer, then indirect it so that we can assign it.\n\t// Example: *string to string\n\tif dataVal.Kind() == reflect.Ptr && dataVal.Type().Elem() == val.Type() {\n\t\tdataVal = reflect.Indirect(dataVal)\n\t}\n\n\tif !dataVal.IsValid() {\n\t\tdataVal = reflect.Zero(val.Type())\n\t}\n\n\tdataValType := dataVal.Type()\n\tif !dataValType.AssignableTo(val.Type()) {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got '%s'\",\n\t\t\tname, val.Type(), dataValType)\n\t}\n\n\tval.Set(dataVal)\n\treturn nil\n}\n\nfunc (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\n\tconverted := true\n\tswitch {\n\tcase dataKind == reflect.String:\n\t\tval.SetString(dataVal.String())\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetString(\"1\")\n\t\t} else {\n\t\t\tval.SetString(\"0\")\n\t\t}\n\tcase dataKind == reflect.Int && d.config.WeaklyTypedInput:\n\t\tval.SetString(strconv.FormatInt(dataVal.Int(), 10))\n\tcase dataKind == reflect.Uint && d.config.WeaklyTypedInput:\n\t\tval.SetString(strconv.FormatUint(dataVal.Uint(), 10))\n\tcase dataKind == reflect.Float32 && d.config.WeaklyTypedInput:\n\t\tval.SetString(strconv.FormatFloat(dataVal.Float(), 'f', -1, 64))\n\tcase dataKind == reflect.Slice && d.config.WeaklyTypedInput,\n\t\tdataKind == reflect.Array && d.config.WeaklyTypedInput:\n\t\tdataType := dataVal.Type()\n\t\telemKind := dataType.Elem().Kind()\n\t\tswitch elemKind {\n\t\tcase reflect.Uint8:\n\t\t\tvar uints []uint8\n\t\t\tif dataKind == reflect.Array {\n\t\t\t\tuints = make([]uint8, dataVal.Len(), dataVal.Len())\n\t\t\t\tfor i := range uints {\n\t\t\t\t\tuints[i] = dataVal.Index(i).Interface().(uint8)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tuints = dataVal.Interface().([]uint8)\n\t\t\t}\n\t\t\tval.SetString(string(uints))\n\t\tdefault:\n\t\t\tconverted = false\n\t\t}\n\tdefault:\n\t\tconverted = false\n\t}\n\n\tif !converted {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s'\",\n\t\t\tname, val.Type(), dataVal.Type())\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\tdataType := dataVal.Type()\n\n\tswitch {\n\tcase dataKind == reflect.Int:\n\t\tval.SetInt(dataVal.Int())\n\tcase dataKind == reflect.Uint:\n\t\tval.SetInt(int64(dataVal.Uint()))\n\tcase dataKind == reflect.Float32:\n\t\tval.SetInt(int64(dataVal.Float()))\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetInt(1)\n\t\t} else {\n\t\t\tval.SetInt(0)\n\t\t}\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\ti, err := strconv.ParseInt(dataVal.String(), 0, val.Type().Bits())\n\t\tif err == nil {\n\t\t\tval.SetInt(i)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as int: %s\", name, err)\n\t\t}\n\tcase dataType.PkgPath() == \"encoding/json\" && dataType.Name() == \"Number\":\n\t\tjn := data.(json.Number)\n\t\ti, err := jn.Int64()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"error decoding json.Number into %s: %s\", name, err)\n\t\t}\n\t\tval.SetInt(i)\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s'\",\n\t\t\tname, val.Type(), dataVal.Type())\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\n\tswitch {\n\tcase dataKind == reflect.Int:\n\t\ti := dataVal.Int()\n\t\tif i < 0 && !d.config.WeaklyTypedInput {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s', %d overflows uint\",\n\t\t\t\tname, i)\n\t\t}\n\t\tval.SetUint(uint64(i))\n\tcase dataKind == reflect.Uint:\n\t\tval.SetUint(dataVal.Uint())\n\tcase dataKind == reflect.Float32:\n\t\tf := dataVal.Float()\n\t\tif f < 0 && !d.config.WeaklyTypedInput {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s', %f overflows uint\",\n\t\t\t\tname, f)\n\t\t}\n\t\tval.SetUint(uint64(f))\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetUint(1)\n\t\t} else {\n\t\t\tval.SetUint(0)\n\t\t}\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\ti, err := strconv.ParseUint(dataVal.String(), 0, val.Type().Bits())\n\t\tif err == nil {\n\t\t\tval.SetUint(i)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as uint: %s\", name, err)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s'\",\n\t\t\tname, val.Type(), dataVal.Type())\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\n\tswitch {\n\tcase dataKind == reflect.Bool:\n\t\tval.SetBool(dataVal.Bool())\n\tcase dataKind == reflect.Int && d.config.WeaklyTypedInput:\n\t\tval.SetBool(dataVal.Int() != 0)\n\tcase dataKind == reflect.Uint && d.config.WeaklyTypedInput:\n\t\tval.SetBool(dataVal.Uint() != 0)\n\tcase dataKind == reflect.Float32 && d.config.WeaklyTypedInput:\n\t\tval.SetBool(dataVal.Float() != 0)\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\tb, err := strconv.ParseBool(dataVal.String())\n\t\tif err == nil {\n\t\t\tval.SetBool(b)\n\t\t} else if dataVal.String() == \"\" {\n\t\t\tval.SetBool(false)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as bool: %s\", name, err)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s'\",\n\t\t\tname, val.Type(), dataVal.Type())\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\tdataType := dataVal.Type()\n\n\tswitch {\n\tcase dataKind == reflect.Int:\n\t\tval.SetFloat(float64(dataVal.Int()))\n\tcase dataKind == reflect.Uint:\n\t\tval.SetFloat(float64(dataVal.Uint()))\n\tcase dataKind == reflect.Float32:\n\t\tval.SetFloat(dataVal.Float())\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetFloat(1)\n\t\t} else {\n\t\t\tval.SetFloat(0)\n\t\t}\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\tf, err := strconv.ParseFloat(dataVal.String(), val.Type().Bits())\n\t\tif err == nil {\n\t\t\tval.SetFloat(f)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as float: %s\", name, err)\n\t\t}\n\tcase dataType.PkgPath() == \"encoding/json\" && dataType.Name() == \"Number\":\n\t\tjn := data.(json.Number)\n\t\ti, err := jn.Float64()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"error decoding json.Number into %s: %s\", name, err)\n\t\t}\n\t\tval.SetFloat(i)\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s'\",\n\t\t\tname, val.Type(), dataVal.Type())\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeMap(name string, data interface{}, val reflect.Value) error {\n\tvalType := val.Type()\n\tvalKeyType := valType.Key()\n\tvalElemType := valType.Elem()\n\n\t// By default we overwrite keys in the current map\n\tvalMap := val\n\n\t// If the map is nil or we're purposely zeroing fields, make a new map\n\tif valMap.IsNil() || d.config.ZeroFields {\n\t\t// Make a new map to hold our result\n\t\tmapType := reflect.MapOf(valKeyType, valElemType)\n\t\tvalMap = reflect.MakeMap(mapType)\n\t}\n\n\t// Check input type and based on the input type jump to the proper func\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tswitch dataVal.Kind() {\n\tcase reflect.Map:\n\t\treturn d.decodeMapFromMap(name, dataVal, val, valMap)\n\n\tcase reflect.Struct:\n\t\treturn d.decodeMapFromStruct(name, dataVal, val, valMap)\n\n\tcase reflect.Array, reflect.Slice:\n\t\tif d.config.WeaklyTypedInput {\n\t\t\treturn d.decodeMapFromSlice(name, dataVal, val, valMap)\n\t\t}\n\n\t\tfallthrough\n\n\tdefault:\n\t\treturn fmt.Errorf(\"'%s' expected a map, got '%s'\", name, dataVal.Kind())\n\t}\n}\n\nfunc (d *Decoder) decodeMapFromSlice(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {\n\t// Special case for BC reasons (covered by tests)\n\tif dataVal.Len() == 0 {\n\t\tval.Set(valMap)\n\t\treturn nil\n\t}\n\n\tfor i := 0; i < dataVal.Len(); i++ {\n\t\terr := d.decode(\n\t\t\tfmt.Sprintf(\"%s[%d]\", name, i),\n\t\t\tdataVal.Index(i).Interface(), val)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeMapFromMap(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {\n\tvalType := val.Type()\n\tvalKeyType := valType.Key()\n\tvalElemType := valType.Elem()\n\n\t// Accumulate errors\n\terrors := make([]string, 0)\n\n\t// If the input data is empty, then we just match what the input data is.\n\tif dataVal.Len() == 0 {\n\t\tif dataVal.IsNil() {\n\t\t\tif !val.IsNil() {\n\t\t\t\tval.Set(dataVal)\n\t\t\t}\n\t\t} else {\n\t\t\t// Set to empty allocated value\n\t\t\tval.Set(valMap)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tfor _, k := range dataVal.MapKeys() {\n\t\tfieldName := fmt.Sprintf(\"%s[%s]\", name, k)\n\n\t\t// First decode the key into the proper type\n\t\tcurrentKey := reflect.Indirect(reflect.New(valKeyType))\n\t\tif err := d.decode(fieldName, k.Interface(), currentKey); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Next decode the data into the proper type\n\t\tv := dataVal.MapIndex(k).Interface()\n\t\tcurrentVal := reflect.Indirect(reflect.New(valElemType))\n\t\tif err := d.decode(fieldName, v, currentVal); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tvalMap.SetMapIndex(currentKey, currentVal)\n\t}\n\n\t// Set the built up map to the value\n\tval.Set(valMap)\n\n\t// If we had errors, return those\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {\n\ttyp := dataVal.Type()\n\tfor i := 0; i < typ.NumField(); i++ {\n\t\t// Get the StructField first since this is a cheap operation. If the\n\t\t// field is unexported, then ignore it.\n\t\tf := typ.Field(i)\n\t\tif f.PkgPath != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Next get the actual value of this field and verify it is assignable\n\t\t// to the map value.\n\t\tv := dataVal.Field(i)\n\t\tif !v.Type().AssignableTo(valMap.Type().Elem()) {\n\t\t\treturn fmt.Errorf(\"cannot assign type '%s' to map value field of type '%s'\", v.Type(), valMap.Type().Elem())\n\t\t}\n\n\t\ttagValue := f.Tag.Get(d.config.TagName)\n\t\ttagParts := strings.Split(tagValue, \",\")\n\n\t\t// Determine the name of the key in the map\n\t\tkeyName := f.Name\n\t\tif tagParts[0] != \"\" {\n\t\t\tif tagParts[0] == \"-\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tkeyName = tagParts[0]\n\t\t}\n\n\t\t// If \"squash\" is specified in the tag, we squash the field down.\n\t\tsquash := false\n\t\tfor _, tag := range tagParts[1:] {\n\t\t\tif tag == \"squash\" {\n\t\t\t\tsquash = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif squash && v.Kind() != reflect.Struct {\n\t\t\treturn fmt.Errorf(\"cannot squash non-struct type '%s'\", v.Type())\n\t\t}\n\n\t\tswitch v.Kind() {\n\t\t// this is an embedded struct, so handle it differently\n\t\tcase reflect.Struct:\n\t\t\tx := reflect.New(v.Type())\n\t\t\tx.Elem().Set(v)\n\n\t\t\tvType := valMap.Type()\n\t\t\tvKeyType := vType.Key()\n\t\t\tvElemType := vType.Elem()\n\t\t\tmType := reflect.MapOf(vKeyType, vElemType)\n\t\t\tvMap := reflect.MakeMap(mType)\n\n\t\t\terr := d.decode(keyName, x.Interface(), vMap)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif squash {\n\t\t\t\tfor _, k := range vMap.MapKeys() {\n\t\t\t\t\tvalMap.SetMapIndex(k, vMap.MapIndex(k))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalMap.SetMapIndex(reflect.ValueOf(keyName), vMap)\n\t\t\t}\n\n\t\tdefault:\n\t\t\tvalMap.SetMapIndex(reflect.ValueOf(keyName), v)\n\t\t}\n\t}\n\n\tif val.CanAddr() {\n\t\tval.Set(valMap)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) error {\n\t// If the input data is nil, then we want to just set the output\n\t// pointer to be nil as well.\n\tisNil := data == nil\n\tif !isNil {\n\t\tswitch v := reflect.Indirect(reflect.ValueOf(data)); v.Kind() {\n\t\tcase reflect.Chan,\n\t\t\treflect.Func,\n\t\t\treflect.Interface,\n\t\t\treflect.Map,\n\t\t\treflect.Ptr,\n\t\t\treflect.Slice:\n\t\t\tisNil = v.IsNil()\n\t\t}\n\t}\n\tif isNil {\n\t\tif !val.IsNil() && val.CanSet() {\n\t\t\tnilValue := reflect.New(val.Type()).Elem()\n\t\t\tval.Set(nilValue)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\t// Create an element of the concrete (non pointer) type and decode\n\t// into that. Then set the value of the pointer to this type.\n\tvalType := val.Type()\n\tvalElemType := valType.Elem()\n\tif val.CanSet() {\n\t\trealVal := val\n\t\tif realVal.IsNil() || d.config.ZeroFields {\n\t\t\trealVal = reflect.New(valElemType)\n\t\t}\n\n\t\tif err := d.decode(name, data, reflect.Indirect(realVal)); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tval.Set(realVal)\n\t} else {\n\t\tif err := d.decode(name, data, reflect.Indirect(val)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (d *Decoder) decodeFunc(name string, data interface{}, val reflect.Value) error {\n\t// Create an element of the concrete (non pointer) type and decode\n\t// into that. Then set the value of the pointer to this type.\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tif val.Type() != dataVal.Type() {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s'\",\n\t\t\tname, val.Type(), dataVal.Type())\n\t}\n\tval.Set(dataVal)\n\treturn nil\n}\n\nfunc (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataValKind := dataVal.Kind()\n\tvalType := val.Type()\n\tvalElemType := valType.Elem()\n\tsliceType := reflect.SliceOf(valElemType)\n\n\tvalSlice := val\n\tif valSlice.IsNil() || d.config.ZeroFields {\n\t\tif d.config.WeaklyTypedInput {\n\t\t\tswitch {\n\t\t\t// Slice and array we use the normal logic\n\t\t\tcase dataValKind == reflect.Slice, dataValKind == reflect.Array:\n\t\t\t\tbreak\n\n\t\t\t// Empty maps turn into empty slices\n\t\t\tcase dataValKind == reflect.Map:\n\t\t\t\tif dataVal.Len() == 0 {\n\t\t\t\t\tval.Set(reflect.MakeSlice(sliceType, 0, 0))\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\t// Create slice of maps of other sizes\n\t\t\t\treturn d.decodeSlice(name, []interface{}{data}, val)\n\n\t\t\tcase dataValKind == reflect.String && valElemType.Kind() == reflect.Uint8:\n\t\t\t\treturn d.decodeSlice(name, []byte(dataVal.String()), val)\n\n\t\t\t// All other types we try to convert to the slice type\n\t\t\t// and \"lift\" it into it. i.e. a string becomes a string slice.\n\t\t\tdefault:\n\t\t\t\t// Just re-try this function with data as a slice.\n\t\t\t\treturn d.decodeSlice(name, []interface{}{data}, val)\n\t\t\t}\n\t\t}\n\n\t\t// Check input type\n\t\tif dataValKind != reflect.Array && dataValKind != reflect.Slice {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"'%s': source data must be an array or slice, got %s\", name, dataValKind)\n\n\t\t}\n\n\t\t// If the input value is empty, then don't allocate since non-nil != nil\n\t\tif dataVal.Len() == 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\t// Make a new slice to hold our result, same size as the original data.\n\t\tvalSlice = reflect.MakeSlice(sliceType, dataVal.Len(), dataVal.Len())\n\t}\n\n\t// Accumulate any errors\n\terrors := make([]string, 0)\n\n\tfor i := 0; i < dataVal.Len(); i++ {\n\t\tcurrentData := dataVal.Index(i).Interface()\n\t\tfor valSlice.Len() <= i {\n\t\t\tvalSlice = reflect.Append(valSlice, reflect.Zero(valElemType))\n\t\t}\n\t\tcurrentField := valSlice.Index(i)\n\n\t\tfieldName := fmt.Sprintf(\"%s[%d]\", name, i)\n\t\tif err := d.decode(fieldName, currentData, currentField); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\t}\n\n\t// Finally, set the value to the slice we built up\n\tval.Set(valSlice)\n\n\t// If there were errors, we return those\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeArray(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataValKind := dataVal.Kind()\n\tvalType := val.Type()\n\tvalElemType := valType.Elem()\n\tarrayType := reflect.ArrayOf(valType.Len(), valElemType)\n\n\tvalArray := val\n\n\tif valArray.Interface() == reflect.Zero(valArray.Type()).Interface() || d.config.ZeroFields {\n\t\t// Check input type\n\t\tif dataValKind != reflect.Array && dataValKind != reflect.Slice {\n\t\t\tif d.config.WeaklyTypedInput {\n\t\t\t\tswitch {\n\t\t\t\t// Empty maps turn into empty arrays\n\t\t\t\tcase dataValKind == reflect.Map:\n\t\t\t\t\tif dataVal.Len() == 0 {\n\t\t\t\t\t\tval.Set(reflect.Zero(arrayType))\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\n\n\t\t\t\t// All other types we try to convert to the array type\n\t\t\t\t// and \"lift\" it into it. i.e. a string becomes a string array.\n\t\t\t\tdefault:\n\t\t\t\t\t// Just re-try this function with data as a slice.\n\t\t\t\t\treturn d.decodeArray(name, []interface{}{data}, val)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"'%s': source data must be an array or slice, got %s\", name, dataValKind)\n\n\t\t}\n\t\tif dataVal.Len() > arrayType.Len() {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"'%s': expected source data to have length less or equal to %d, got %d\", name, arrayType.Len(), dataVal.Len())\n\n\t\t}\n\n\t\t// Make a new array to hold our result, same size as the original data.\n\t\tvalArray = reflect.New(arrayType).Elem()\n\t}\n\n\t// Accumulate any errors\n\terrors := make([]string, 0)\n\n\tfor i := 0; i < dataVal.Len(); i++ {\n\t\tcurrentData := dataVal.Index(i).Interface()\n\t\tcurrentField := valArray.Index(i)\n\n\t\tfieldName := fmt.Sprintf(\"%s[%d]\", name, i)\n\t\tif err := d.decode(fieldName, currentData, currentField); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\t}\n\n\t// Finally, set the value to the array we built up\n\tval.Set(valArray)\n\n\t// If there were errors, we return those\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\n\t// If the type of the value to write to and the data match directly,\n\t// then we just set it directly instead of recursing into the structure.\n\tif dataVal.Type() == val.Type() {\n\t\tval.Set(dataVal)\n\t\treturn nil\n\t}\n\n\tdataValKind := dataVal.Kind()\n\tswitch dataValKind {\n\tcase reflect.Map:\n\t\treturn d.decodeStructFromMap(name, dataVal, val)\n\n\tcase reflect.Struct:\n\t\t// Not the most efficient way to do this but we can optimize later if\n\t\t// we want to. To convert from struct to struct we go to map first\n\t\t// as an intermediary.\n\t\tm := make(map[string]interface{})\n\t\tmval := reflect.Indirect(reflect.ValueOf(&m))\n\t\tif err := d.decodeMapFromStruct(name, dataVal, mval, mval); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tresult := d.decodeStructFromMap(name, mval, val)\n\t\treturn result\n\n\tdefault:\n\t\treturn fmt.Errorf(\"'%s' expected a map, got '%s'\", name, dataVal.Kind())\n\t}\n}\n\nfunc (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) error {\n\tdataValType := dataVal.Type()\n\tif kind := dataValType.Key().Kind(); kind != reflect.String && kind != reflect.Interface {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' needs a map with string keys, has '%s' keys\",\n\t\t\tname, dataValType.Key().Kind())\n\t}\n\n\tdataValKeys := make(map[reflect.Value]struct{})\n\tdataValKeysUnused := make(map[interface{}]struct{})\n\tfor _, dataValKey := range dataVal.MapKeys() {\n\t\tdataValKeys[dataValKey] = struct{}{}\n\t\tdataValKeysUnused[dataValKey.Interface()] = struct{}{}\n\t}\n\n\terrors := make([]string, 0)\n\n\t// This slice will keep track of all the structs we'll be decoding.\n\t// There can be more than one struct if there are embedded structs\n\t// that are squashed.\n\tstructs := make([]reflect.Value, 1, 5)\n\tstructs[0] = val\n\n\t// Compile the list of all the fields that we're going to be decoding\n\t// from all the structs.\n\ttype field struct {\n\t\tfield reflect.StructField\n\t\tval   reflect.Value\n\t}\n\tfields := []field{}\n\tfor len(structs) > 0 {\n\t\tstructVal := structs[0]\n\t\tstructs = structs[1:]\n\n\t\tstructType := structVal.Type()\n\n\t\tfor i := 0; i < structType.NumField(); i++ {\n\t\t\tfieldType := structType.Field(i)\n\t\t\tfieldKind := fieldType.Type.Kind()\n\n\t\t\t// If \"squash\" is specified in the tag, we squash the field down.\n\t\t\tsquash := false\n\t\t\ttagParts := strings.Split(fieldType.Tag.Get(d.config.TagName), \",\")\n\t\t\tfor _, tag := range tagParts[1:] {\n\t\t\t\tif tag == \"squash\" {\n\t\t\t\t\tsquash = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif squash {\n\t\t\t\tif fieldKind != reflect.Struct {\n\t\t\t\t\terrors = appendErrors(errors,\n\t\t\t\t\t\tfmt.Errorf(\"%s: unsupported type for squash: %s\", fieldType.Name, fieldKind))\n\t\t\t\t} else {\n\t\t\t\t\tstructs = append(structs, structVal.FieldByName(fieldType.Name))\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Normal struct field, store it away\n\t\t\tfields = append(fields, field{fieldType, structVal.Field(i)})\n\t\t}\n\t}\n\n\t// for fieldType, field := range fields {\n\tfor _, f := range fields {\n\t\tfield, fieldValue := f.field, f.val\n\t\tfieldName := field.Name\n\n\t\ttagValue := field.Tag.Get(d.config.TagName)\n\t\ttagValue = strings.SplitN(tagValue, \",\", 2)[0]\n\t\tif tagValue != \"\" {\n\t\t\tfieldName = tagValue\n\t\t}\n\n\t\trawMapKey := reflect.ValueOf(fieldName)\n\t\trawMapVal := dataVal.MapIndex(rawMapKey)\n\t\tif !rawMapVal.IsValid() {\n\t\t\t// Do a slower search by iterating over each key and\n\t\t\t// doing case-insensitive search.\n\t\t\tfor dataValKey := range dataValKeys {\n\t\t\t\tmK, ok := dataValKey.Interface().(string)\n\t\t\t\tif !ok {\n\t\t\t\t\t// Not a string key\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif strings.EqualFold(mK, fieldName) {\n\t\t\t\t\trawMapKey = dataValKey\n\t\t\t\t\trawMapVal = dataVal.MapIndex(dataValKey)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !rawMapVal.IsValid() {\n\t\t\t\t// There was no matching key in the map for the value in\n\t\t\t\t// the struct. Just ignore.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Delete the key we're using from the unused map so we stop tracking\n\t\tdelete(dataValKeysUnused, rawMapKey.Interface())\n\n\t\tif !fieldValue.IsValid() {\n\t\t\t// This should never happen\n\t\t\tpanic(\"field is not valid\")\n\t\t}\n\n\t\t// If we can't set the field, then it is unexported or something,\n\t\t// and we just continue onwards.\n\t\tif !fieldValue.CanSet() {\n\t\t\tcontinue\n\t\t}\n\n\t\t// If the name is empty string, then we're at the root, and we\n\t\t// don't dot-join the fields.\n\t\tif name != \"\" {\n\t\t\tfieldName = fmt.Sprintf(\"%s.%s\", name, fieldName)\n\t\t}\n\n\t\tif err := d.decode(fieldName, rawMapVal.Interface(), fieldValue); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\t}\n\n\tif d.config.ErrorUnused && len(dataValKeysUnused) > 0 {\n\t\tkeys := make([]string, 0, len(dataValKeysUnused))\n\t\tfor rawKey := range dataValKeysUnused {\n\t\t\tkeys = append(keys, rawKey.(string))\n\t\t}\n\t\tsort.Strings(keys)\n\n\t\terr := fmt.Errorf(\"'%s' has invalid keys: %s\", name, strings.Join(keys, \", \"))\n\t\terrors = appendErrors(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\t// Add the unused keys to the list of unused keys if we're tracking metadata\n\tif d.config.Metadata != nil {\n\t\tfor rawKey := range dataValKeysUnused {\n\t\t\tkey := rawKey.(string)\n\t\t\tif name != \"\" {\n\t\t\t\tkey = fmt.Sprintf(\"%s.%s\", name, key)\n\t\t\t}\n\n\t\t\td.config.Metadata.Unused = append(d.config.Metadata.Unused, key)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getKind(val reflect.Value) reflect.Kind {\n\tkind := val.Kind()\n\n\tswitch {\n\tcase kind >= reflect.Int && kind <= reflect.Int64:\n\t\treturn reflect.Int\n\tcase kind >= reflect.Uint && kind <= reflect.Uint64:\n\t\treturn reflect.Uint\n\tcase kind >= reflect.Float32 && kind <= reflect.Float64:\n\t\treturn reflect.Float32\n\tdefault:\n\t\treturn kind\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/moul/http2curl/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/moul/http2curl/.travis.yml",
    "content": "language: go\n\ngo:\n- 1.7.3\n- tip\n\nenv:\n- GO15VENDOREXPERIMENT=1\n\nmatrix:\n  allow_failures:\n  - go: tip\n\nbefore_install:\n- go get -u github.com/axw/gocov/gocov\n- go get -u github.com/mattn/goveralls\n- go get golang.org/x/tools/cmd/cover\n\nscript:\n- make build\n- make test\n- make cover\n- goveralls -service=travis-ci -v -covermode=count -coverprofile=profile.out\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/moul/http2curl/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Manfred Touron\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/moul/http2curl/Makefile",
    "content": "# Project-specific variables\nCONVEY_PORT ?=\t9042\n\n\n# Common variables\nSOURCES :=\t$(shell find . -type f -name \"*.go\")\nCOMMANDS :=\t$(shell go list ./... | grep -v /vendor/ | grep /cmd/)\nPACKAGES :=\t$(shell go list ./... | grep -v /vendor/ | grep -v /cmd/)\nGOENV ?=\tGO15VENDOREXPERIMENT=1\nGO ?=\t\t$(GOENV) go\nGODEP ?=\t$(GOENV) godep\nUSER ?=\t\t$(shell whoami)\n\n\nall:\tbuild\n\n\n.PHONY: build\nbuild:\n\techo \"nothing to do\"\n\n\n.PHONY: test\ntest:\n\t$(GO) get -t .\n\t$(GO) test -v .\n\n\n.PHONY: godep-save\ngodep-save:\n\t$(GODEP) save $(PACKAGES) $(COMMANDS)\n\n\n.PHONY: re\nre:\tclean all\n\n\n.PHONY: convey\nconvey:\n\t$(GO) get github.com/smartystreets/goconvey\n\tgoconvey -cover -port=$(CONVEY_PORT) -workDir=\"$(realpath .)\" -depth=1\n\n\n.PHONY:\tcover\ncover:\tprofile.out\n\n\nprofile.out:\t$(SOURCES)\n\trm -f $@\n\t$(GO) test -covermode=count -coverpkg=. -coverprofile=$@ .\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/moul/http2curl/README.md",
    "content": "# http2curl\n:triangular_ruler: Convert Golang's http.Request to CURL command line\n\n[![Build Status](https://travis-ci.org/moul/http2curl.svg?branch=master)](https://travis-ci.org/moul/http2curl)\n[![GoDoc](https://godoc.org/github.com/moul/http2curl?status.svg)](https://godoc.org/github.com/moul/http2curl)\n[![Coverage Status](https://coveralls.io/repos/moul/http2curl/badge.svg)](https://coveralls.io/github/moul/http2curl)\n\nTo do the reverse, check out [mholt/curl-to-go](https://github.com/mholt/curl-to-go).\n\n## Example\n\n```go\nimport \"http\"\nimport \"github.com/moul/http2curl\"\n\ndata := bytes.NewBufferString(`{\"hello\":\"world\",\"answer\":42}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://www.example.com/abc/def.ghi?jlk=mno&pqr=stu\", data)\nreq.Header.Set(\"Content-Type\", \"application/json\")\n\ncommand, _ := http2curl.GetCurlCommand(req)\nfmt.Println(command)\n// Output: curl -X PUT -d \"{\\\"hello\\\":\\\"world\\\",\\\"answer\\\":42}\" -H \"Content-Type: application/json\" http://www.example.com/abc/def.ghi?jlk=mno&pqr=stu\n```\n\n## Install\n\n```php\n$ go get github.com/moul/http2curl\n```\n\n## Usages\n\n- https://github.com/parnurzeal/gorequest\n- https://github.com/scaleway/scaleway-cli\n- https://github.com/nmonterroso/cowsay-slackapp\n- https://github.com/moul/as-a-service\n- https://github.com/gavv/httpexpect\n- https://github.com/smallnest/goreq\n\n## License\n\nMIT\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/moul/http2curl/http2curl.go",
    "content": "package http2curl\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// CurlCommand contains exec.Command compatible slice + helpers\ntype CurlCommand struct {\n\tslice []string\n}\n\n// append appends a string to the CurlCommand\nfunc (c *CurlCommand) append(newSlice ...string) {\n\tc.slice = append(c.slice, newSlice...)\n}\n\n// String returns a ready to copy/paste command\nfunc (c *CurlCommand) String() string {\n\treturn strings.Join(c.slice, \" \")\n}\n\n// nopCloser is used to create a new io.ReadCloser for req.Body\ntype nopCloser struct {\n\tio.Reader\n}\n\nfunc bashEscape(str string) string {\n\treturn `'` + strings.Replace(str, `'`, `'\\''`, -1) + `'`\n}\n\nfunc (nopCloser) Close() error { return nil }\n\n// GetCurlCommand returns a CurlCommand corresponding to an http.Request\nfunc GetCurlCommand(req *http.Request) (*CurlCommand, error) {\n\tcommand := CurlCommand{}\n\n\tcommand.append(\"curl\")\n\n\tcommand.append(\"-X\", bashEscape(req.Method))\n\n\tif req.Body != nil {\n\t\tbody, err := ioutil.ReadAll(req.Body)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treq.Body = nopCloser{bytes.NewBuffer(body)}\n\t\tbodyEscaped := bashEscape(string(body))\n\t\tcommand.append(\"-d\", bodyEscaped)\n\t}\n\n\tvar keys []string\n\n\tfor k := range req.Header {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\n\tfor _, k := range keys {\n\t\tcommand.append(\"-H\", bashEscape(fmt.Sprintf(\"%s: %s\", k, strings.Join(req.Header[k], \" \"))))\n\t}\n\n\tcommand.append(bashEscape(req.URL.String()))\n\n\treturn &command, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n.idea\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\ntags\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/.travis.yml",
    "content": "language: go\ngo:\n  - 1.7\n  - 1.6\n  - 1.5\n  - 1.4\n  - 1.3\n  - 1.2\ninstall:\n  - go get -t -v ./...\nnotifications:\n  email:\n    recipients: parnurzeal@gmail.com\n    on_success: change\n    on_failure: always\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/CHANGELOG",
    "content": "Changelog\n=========\n\nv0.2.15 (2016-08-30)\n\n\tFeatures\n\t\t* Allow float and boolean in Query()'s queryStruct @davyzhang\n\t\t* Support Map in Query() @yangmls\n\t\t* Support Map in Send() @longlongh4\n\t\t* Document RedirectPolicy @codegoalie\n\t\t* Enable Debug mode by ENV variable @heytitle\n\t\t* Add Retry() @xild\n\tBug/Fixes\n\t\t* Allow bodies with all methods @pkopac\n\t\t* Change std \"errors\" pkg to \"github.com/pkg/errors\" @pkopac\n\nv0.2.14 (2016-08-30)\n\n\tFeatures\n\t\t* Support multipart @fraenky8\n\t\t* Support OPTIONS request @coderhaoxin\n\t\t* Add EndStruct method @franciscocpg\n\t\t* Add AsCurlCommand @jaytaylor\n\t\t* Add CustomMethod @WaveCutz\n\t\t* Add MakeRequest @quangbuule\n\tBug/Fixes\n\t\t* Disable keep alive by default\n\n\nv0.2.13 (2015-11-21)\n\n\tFeatures\n\t\t* Add DisableTransportSwap to stop gorequest from modifying Transport settings.\n\t\t\tNote that this will effect many functions that modify gorequest's\n\t\t\ttranport. (So, use with caution.) (Bug #47, PR #59 by @piotrmiskiewicz)\n\n\nv0.2.12 (2015-11-21)\n\n\tFeatures\n\t\t* Add SetCurlCommand for printing comparable CURL command of the request\n\t\t(PR #60 by @QuentinPerez)\n\nv0.2.11 (2015-10-24)\n\n\tBug/Fixes\n\t\t* Add support to Slice data structure (Bug #40, #42)\n\t\t* Refactor sendStruct to be public function SendStruct\n\nv0.2.10 (2015-10-24)\n\n\tBug/Fixes\n\t\t* Fix incorrect text output in tests (PR #52 by @QuentinPerez)\n\t\t* Fix Panic and runtime error properly (PR #53 by @QuentinPerez)\n\t\t* Add support for \"text/plain\" and \"application/xml\" (PR #51 by\n\t\t@smallnest)\n\t\t* Content-Type header is also equivalent with Type function to identify\n\t\tsupported Gorequest's Target Type\n\nv0.2.9 (2015-08-16)\n\n\tBug/Fixes\n\t\t* ParseQuery accepts ; as a synonym for &. thus Gorequest Query won't\n\t\taccept ; as in a query string. We add additional Param to solve this  (PR\n\t\t#43 by @6david9)\n\t\t* AddCookies for bulk adding cookies (PR #46 by @pencil001)\n\nv0.2.8 (2015-08-10)\n\n  Bug/Fixes\n    * Added SetDebug and SetLogger for debug mode (PR #28 by @dafang)\n    * Ensure the response Body is reusable (PR #37 by alaingilbert)\n\nv0.2.7 (2015-07-11)\n\n\tBug/Fixes\n\t\t* Incorrectly reset \"Authentication\" header (Hot fix by @na-ga PR #38 & Issue #39)\n\nv0.2.6 (2015-07-10)\n\n  Features\n    * Added EndBytes (PR #30 by @jaytaylor)\n\nv0.2.5 (2015-07-01)\n\n  Features\n    * Added Basic Auth support (pull request #24 by @dickeyxxx)\n\n  Bug/Fixes\n    * Fix #31 incorrect number conversion (PR #34 by @killix)\n\nv0.2.4 (2015-04-13)\n\n\tFeatures\n\t\t* Query() now supports Struct as same as Send() (pull request #25 by @figlief)\n\nv0.2.3 (2015-02-08)\n\n\tFeatures\n  \t* Added Patch HTTP Method\n\n\tBug/Fixes\n\t\t* Refactored testing code\n\nv0.2.2 (2015-01-03)\n\n\tFeatures\n  \t* Added TLSClientConfig for better control over tls\n\t\t* Added AddCookie func to set \"Cookie\" field in request (pull request #17 by @austinov) - Issue #7\n\t\t* Added CookieJar (pull request #15 by @kemadz)\n\nv0.2.1 (2014-07-06)\n\n\tFeatures\n  \t* Implemented timeout test\n\n\tBugs/Fixes\n  \t* Improved timeout feature by control over both dial + read/write timeout compared to previously controlling only dial connection timeout.\n\nv0.2.0 (2014-06-13) - Send is now supporting Struct type as a parameter\n\nv0.1.0 (2014-04-14) - Finished release with enough rich functions to do get, post, json and redirectpolicy\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/CONTRIBUTING.md",
    "content": "# Contributing to GoRequest\n\nThanks for taking the time to contribute!!\n\nGoRequest welcomes any kind of contributions including documentation, bug reports,\nissues, feature requests, feature implementations, pull requests, helping to manage and answer issues, etc.\n\n### Code Guidelines\n\nTo make the contribution process as seamless as possible, we ask for the following:\n\n* Go ahead and fork the project and make your changes.  We encourage pull requests to allow for review and discussion of code changes.\n* When you’re ready to create a pull request, be sure to:\n    * Have test cases for the new code.\n    * Follow [GoDoc](https://blog.golang.org/godoc-documenting-go-code) guideline and always add documentation for new function/variable definitions.\n    * Run `go fmt`.\n    * Additonally, add documentation to README.md if you are adding new features or changing functionality.\n    * Squash your commits into a single commit. `git rebase -i`. It’s okay to force update your pull request with `git push -f`.\n    * Make sure `go test ./...` passes, and `go build` completes.\n    * Follow the **Git Commit Message Guidelines** below.\n\n### Writing Commit Message\n\nFollow this [blog article](http://chris.beams.io/posts/git-commit/). It is a good resource for learning how to write good commit messages,\nthe most important part being that each commit message should have a title/subject in imperative mood starting with a capital letter and no trailing period:\n*\"Return error when sending incorrect JSON format\"*, **NOT** *\"returning some error.\"*\nAlso, if your commit references one or more GitHub issues, always end your commit message body with *See #1234* or *Fixes #1234*.\nReplace *1234* with the GitHub issue ID. The last example will close the issue when the commit is merged into *master*.\n\n### Sending a Pull Request\n\nDue to the way Go handles package imports, the best approach for working on a\nfork is to use Git Remotes.  You can follow the instructions below:\n\n1. Get the latest sources:\n\n    ```\n    go get -u -t github.com/parnurzeal/gorequest/...\n    ```\n\n1. Change to the GoRequest source directory:\n\n    ```\n    cd $GOPATH/src/github.com/parnurzeal/gorequest\n    ```\n\n1. Create a new branch for your changes (the branch name is arbitrary):\n\n    ```\n    git checkout -b issue_1234\n    ```\n\n1. After making your changes, commit them to your new branch:\n\n    ```\n    git commit -a -v\n    ```\n\n1. Fork GoRequest in Github.\n\n1. Add your fork as a new remote (the remote name, \"fork\" in this example, is arbitrary):\n\n    ```\n    git remote add fork git://github.com/USERNAME/gorequest.git\n    ```\n\n1. Push the changes to your new remote:\n\n    ```\n    git push --set-upstream fork issue_1234\n    ```\n\n1. You're now ready to submit a PR based upon the new branch in your forked repository.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Theeraphol Wattanavekin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/README.md",
    "content": "GoRequest\n=========\n\nGoRequest -- Simplified HTTP client ( inspired by famous SuperAgent lib in Node.js )\n\n![GopherGoRequest](https://raw.githubusercontent.com/parnurzeal/gorequest/gh-pages/images/Gopher_GoRequest_400x300.jpg)\n\n#### \"Shooting Requests like a Machine Gun\" - Gopher\n\nSending request would never been fun and easier than this. It comes with lots of feature:\n\n* Get/Post/Put/Head/Delete/Patch/Options\n* Set - simple header setting\n* JSON - made it simple with JSON string as a parameter\n* Multipart-Support - send data and files as multipart request\n* Proxy - sending request via proxy\n* Timeout - setting timeout for a request\n* TLSClientConfig - taking control over tls where at least you can disable security check for https\n* RedirectPolicy\n* Cookie - setting cookies for your request\n* CookieJar - automatic in-memory cookiejar\n* BasicAuth - setting basic authentication header\n* more to come..\n\n## Installation\n\n```bash\n$ go get github.com/parnurzeal/gorequest\n```\n\n## Documentation\nSee [Go Doc](http://godoc.org/github.com/parnurzeal/gorequest) or [Go Walker](http://gowalker.org/github.com/parnurzeal/gorequest) for usage and details.\n\n## Status\n\n[![Drone Build Status](https://drone.io/github.com/jmcvetta/restclient/status.png)](https://drone.io/github.com/parnurzeal/gorequest/latest)\n[![Travis Build Status](https://travis-ci.org/parnurzeal/gorequest.svg?branch=master)](https://travis-ci.org/parnurzeal/gorequest)\n\n## Why should you use GoRequest?\n\nGoRequest makes thing much more simple for you, making http client more awesome and fun like SuperAgent + golang style usage.\n\nThis is what you normally do for a simple GET without GoRequest:\n\n```go\nresp, err := http.Get(\"http://example.com/\")\n```\n\nWith GoRequest:\n\n```go\nrequest := gorequest.New()\nresp, body, errs := request.Get(\"http://example.com/\").End()\n```\n\nOr below if you don't want to reuse it for other requests.\n\n```go\nresp, body, errs := gorequest.New().Get(\"http://example.com/\").End()\n```\n\nHow about getting control over HTTP client headers, redirect policy, and etc. Things is getting more complicated in golang. You need to create a Client, setting header in different command, ... to do just only one __GET__\n\n```go\nclient := &http.Client{\n  CheckRedirect: redirectPolicyFunc,\n}\n\nreq, err := http.NewRequest(\"GET\", \"http://example.com\", nil)\n\nreq.Header.Add(\"If-None-Match\", `W/\"wyzzy\"`)\nresp, err := client.Do(req)\n```\n\nWhy making things ugly while you can just do as follows:\n\n```go\nrequest := gorequest.New()\nresp, body, errs := request.Get(\"http://example.com\").\n  RedirectPolicy(redirectPolicyFunc).\n  Set(\"If-None-Match\", `W/\"wyzzy\"`).\n  End()\n```\n\n__DELETE__, __HEAD__, __POST__, __PUT__, __PATCH__ are now supported and can be used the same way as __GET__:\n\n```go\nrequest := gorequest.New()\nresp, body, errs := request.Post(\"http://example.com\").End()\n// PUT -> request.Put(\"http://example.com\").End()\n// DELETE -> request.Delete(\"http://example.com\").End()\n// HEAD -> request.Head(\"http://example.com\").End()\n// ANYTHING -> request.CustomMethod(\"TRACE\", \"http://example.com\").End()\n```\n\n### JSON\n\nFor a __JSON POST__ with standard libraries, you might need to marshal map data structure to json format, setting header to 'application/json' (and other headers if you need to) and declare http.Client. So, you code become longer and hard to maintain:\n\n```go\nm := map[string]interface{}{\n  \"name\": \"backy\",\n  \"species\": \"dog\",\n}\nmJson, _ := json.Marshal(m)\ncontentReader := bytes.NewReader(mJson)\nreq, _ := http.NewRequest(\"POST\", \"http://example.com\", contentReader)\nreq.Header.Set(\"Content-Type\", \"application/json\")\nreq.Header.Set(\"Notes\",\"GoRequest is coming!\")\nclient := &http.Client{}\nresp, _ := client.Do(req)\n```\n\nCompared to our GoRequest version, JSON is for sure a default. So, it turns out to be just one simple line!:\n\n```go\nrequest := gorequest.New()\nresp, body, errs := request.Post(\"http://example.com\").\n  Set(\"Notes\",\"gorequst is coming!\").\n  Send(`{\"name\":\"backy\", \"species\":\"dog\"}`).\n  End()\n```\n\nMoreover, it also supports struct type. So, you can have a fun __Mix & Match__ sending the different data types for your request:\n\n```go\ntype BrowserVersionSupport struct {\n  Chrome string\n  Firefox string\n}\nver := BrowserVersionSupport{ Chrome: \"37.0.2041.6\", Firefox: \"30.0\" }\nrequest := gorequest.New()\nresp, body, errs := request.Post(\"http://version.com/update\").\n  Send(ver).\n  Send(`{\"Safari\":\"5.1.10\"}`).\n  End()\n```\n\nNot only for Send() but Query() is also supported. Just give it a try! :)\n\n## Callback\n\nMoreover, GoRequest also supports callback function. This gives you much more flexibility on using it. You can use it any way to match your own style!\nLet's see a bit of callback example:\n\n```go\nfunc printStatus(resp gorequest.Response, body string, errs []error){\n  fmt.Println(resp.Status)\n}\ngorequest.New().Get(\"http://example.com\").End(printStatus)\n```\n\n## Multipart/Form-Data\n\nYou can specify the content-type of the request to type `multipart` to send all data as `multipart/form-data`. This feature also allows you to send (multiple) files! Check the examples below!\n\n```go\ngorequest.New().Post(\"http://example.com/\").\n  Type(\"multipart\").\n  Send(`{\"query1\":\"test\"}`).\n  End()\n```\n\nThe `SendFile` function accepts `strings` as path to a file, `[]byte` slice or even a `os.File`! You can also combine them to send multiple files with either custom name and/or custom fieldname:\n\n```go\n          f, _ := filepath.Abs(\"./file2.txt\")\nbytesOfFile, _ := ioutil.ReadFile(f)\n\ngorequest.New().Post(\"http://example.com/\").\n  Type(\"multipart\").\n  SendFile(\"./file1.txt\").\n  SendFile(bytesOfFile, \"file2.txt\", \"my_file_fieldname\").\n  End()\n```\n\nCheck the docs for `SendFile` to get more information about the types of arguments.\n\n## Proxy\n\nIn the case when you are behind proxy, GoRequest can handle it easily with Proxy func:\n\n```go\nrequest := gorequest.New().Proxy(\"http://proxy:999\")\nresp, body, errs := request.Get(\"http://example-proxy.com\").End()\n// To reuse same client with no_proxy, use empty string:\nresp, body, errs = request.Proxy(\"\").Get(\"http://example-no-proxy.com\").End()\n```\n\n## Basic Authentication\n\nTo add a basic authentication header:\n\n```go\nrequest := gorequest.New().SetBasicAuth(\"username\", \"password\")\nresp, body, errs := request.Get(\"http://example-proxy.com\").End()\n```\n\n## Timeout\n\nTimeout can be set in any time duration using time package:\n\n```go\nrequest := gorequest.New().Timeout(2*time.Millisecond)\nresp, body, errs:= request.Get(\"http://example.com\").End()\n```\n\nTimeout func defines both dial + read/write timeout to the specified time parameter.\n\n## EndBytes\n\nThanks to @jaytaylor, we now have EndBytes to use when you want the body as bytes.\n\nThe callbacks work the same way as with `End`, except that a byte array is used instead of a string.\n\n```go\nresp, bodyBytes, errs := gorequest.New().Get(\"http://example.com/\").EndBytes()\n```\n\n## EndStruct\n\nWe now have EndStruct to use when you want the body as struct.\n\nThe callbacks work the same way as with `End`, except that a struct is used instead of a string.\n\nSupposing the URL **http://example.com/** returns the body `{\"hey\":\"you\"}`\n\n```go\nheyYou struct {\n  Hey string `json:\"hey\"`\n}\n\nvar heyYou heyYou\n\nresp, _, errs := gorequest.New().Get(\"http://example.com/\").EndStruct(&heyYou)\n```\n\n## Retry\n\nSupposing you need retry 3 times, with 5 seconds between each attempt when gets a BadRequest or a InternalServerError\n\n```go\nrequest := gorequest.New()\nresp, body, errs := request.Get(\"http://example.com/\").\n                    Retry(3, 5 * time.seconds, http.StatusBadRequest, http.StatusInternalServerError).\n                    End()\n```\n\n## Handling Redirects\n\nRedirects can be handled with RedirectPolicy which behaves similarly to\nnet/http Client's [CheckRedirect\nfunction](https://golang.org/pkg/net/http#Client). Simply specify a function\nwhich takes the Request about to be made and a slice of previous Requests in\norder of oldest first. When this function returns an error, the Request is not\nmade.\n\nFor example to redirect only to https endpoints:\n\n```go\nrequest := gorequest.New()\nresp, body, errs := request.Get(\"http://example.com/\").\n                    RedirectPolicy(func(req Request, via []*Request) error {\n                      if req.URL.Scheme != \"https\" {\n                        return http.ErrUseLastResponse\n                      }\n                    }).\n                    End()\n```\n\n## Debug\n\nFor debugging, GoRequest leverages `httputil` to dump details of every request/response. (Thanks to @dafang)\n\nYou can just use `SetDebug` or environment variable `GOREQUEST_DEBUG=0|1` to enable/disable debug mode and `SetLogger` to set your own choice of logger.\n\nThanks to @QuentinPerez, we can see even how gorequest is compared to CURL by using `SetCurlCommand`.\n\n## Noted\nAs the underlying gorequest is based on http.Client in most use cases, gorequest.New() should be called once and reuse gorequest as much as possible.\n\n## Contributing to GoRequest:\n\nIf you find any improvement or issue you want to fix, feel free to send me a pull request with testing.\n\nThanks to all contributors thus far:\n\n\n|   Contributors                        |\n|---------------------------------------|\n| https://github.com/alaingilbert       |\n| https://github.com/austinov           |\n| https://github.com/coderhaoxin        |\n| https://github.com/codegoalie         |\n| https://github.com/dafang             |\n| https://github.com/davyzhang          |\n| https://github.com/dickeyxxx          |\n| https://github.com/figlief            |\n| https://github.com/fraenky8           |\n| https://github.com/franciscocpg       |\n| https://github.com/heytitle           |\n| https://github.com/hownowstephen      |\n| https://github.com/kemadz             |\n| https://github.com/killix             |\n| https://github.com/jaytaylor          |\n| https://github.com/na-ga              |\n| https://github.com/piotrmiskiewicz    |\n| https://github.com/pencil001          |\n| https://github.com/pkopac             |\n| https://github.com/quangbuule         |\n| https://github.com/QuentinPerez       |\n| https://github.com/smallnest          |\n| https://github.com/WaveCutz           |\n| https://github.com/xild               |\n| https://github.com/yangmls            |\n| https://github.com/6david9            |\n\n\nAlso, co-maintainer is needed here. If anyone is interested, please email me (parnurzeal at gmail.com)\n\n## Credits\n\n* Renee French - the creator of Gopher mascot\n* [Wisi Mongkhonsrisawat](https://www.facebook.com/puairw) for providing an awesome GoRequest's Gopher image :)\n\n## License\n\nGoRequest is MIT License.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/parnurzeal/gorequest/gorequest.go",
    "content": "// Package gorequest inspired by Nodejs SuperAgent provides easy-way to write http client\npackage gorequest\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/cookiejar\"\n\t\"net/http/httputil\"\n\t\"net/url\"\n\t\"os\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/pkg/errors\"\n\n\t\"mime/multipart\"\n\n\t\"net/textproto\"\n\n\t\"fmt\"\n\n\t\"path/filepath\"\n\n\t\"github.com/moul/http2curl\"\n\t\"golang.org/x/net/publicsuffix\"\n)\n\ntype Request *http.Request\ntype Response *http.Response\n\n// HTTP methods we support\nconst (\n\tPOST    = \"POST\"\n\tGET     = \"GET\"\n\tHEAD    = \"HEAD\"\n\tPUT     = \"PUT\"\n\tDELETE  = \"DELETE\"\n\tPATCH   = \"PATCH\"\n\tOPTIONS = \"OPTIONS\"\n)\n\n// A SuperAgent is a object storing all request data for client.\ntype SuperAgent struct {\n\tUrl               string\n\tMethod            string\n\tHeader            map[string]string\n\tTargetType        string\n\tForceType         string\n\tData              map[string]interface{}\n\tSliceData         []interface{}\n\tFormData          url.Values\n\tQueryData         url.Values\n\tFileData          []File\n\tBounceToRawString bool\n\tRawString         string\n\tClient            *http.Client\n\tTransport         *http.Transport\n\tCookies           []*http.Cookie\n\tErrors            []error\n\tBasicAuth         struct{ Username, Password string }\n\tDebug             bool\n\tCurlCommand       bool\n\tlogger            *log.Logger\n\tRetryable         struct {\n\t\tRetryableStatus []int\n\t\tRetryerTime     time.Duration\n\t\tRetryerCount    int\n\t\tAttempt         int\n\t\tEnable          bool\n\t}\n}\n\nvar DisableTransportSwap = false\n\n// Used to create a new SuperAgent object.\nfunc New() *SuperAgent {\n\tcookiejarOptions := cookiejar.Options{\n\t\tPublicSuffixList: publicsuffix.List,\n\t}\n\tjar, _ := cookiejar.New(&cookiejarOptions)\n\n\tdebug := os.Getenv(\"GOREQUEST_DEBUG\") == \"1\"\n\n\ts := &SuperAgent{\n\t\tTargetType:        \"json\",\n\t\tData:              make(map[string]interface{}),\n\t\tHeader:            make(map[string]string),\n\t\tRawString:         \"\",\n\t\tSliceData:         []interface{}{},\n\t\tFormData:          url.Values{},\n\t\tQueryData:         url.Values{},\n\t\tFileData:          make([]File, 0),\n\t\tBounceToRawString: false,\n\t\tClient:            &http.Client{Jar: jar},\n\t\tTransport:         &http.Transport{},\n\t\tCookies:           make([]*http.Cookie, 0),\n\t\tErrors:            nil,\n\t\tBasicAuth:         struct{ Username, Password string }{},\n\t\tDebug:             debug,\n\t\tCurlCommand:       false,\n\t\tlogger:            log.New(os.Stderr, \"[gorequest]\", log.LstdFlags),\n\t}\n\t// disable keep alives by default, see this issue https://github.com/parnurzeal/gorequest/issues/75\n\ts.Transport.DisableKeepAlives = true\n\treturn s\n}\n\n// Enable the debug mode which logs request/response detail\nfunc (s *SuperAgent) SetDebug(enable bool) *SuperAgent {\n\ts.Debug = enable\n\treturn s\n}\n\n// Enable the curlcommand mode which display a CURL command line\nfunc (s *SuperAgent) SetCurlCommand(enable bool) *SuperAgent {\n\ts.CurlCommand = enable\n\treturn s\n}\n\nfunc (s *SuperAgent) SetLogger(logger *log.Logger) *SuperAgent {\n\ts.logger = logger\n\treturn s\n}\n\n// Clear SuperAgent data for another new request.\nfunc (s *SuperAgent) ClearSuperAgent() {\n\ts.Url = \"\"\n\ts.Method = \"\"\n\ts.Header = make(map[string]string)\n\ts.Data = make(map[string]interface{})\n\ts.SliceData = []interface{}{}\n\ts.FormData = url.Values{}\n\ts.QueryData = url.Values{}\n\ts.FileData = make([]File, 0)\n\ts.BounceToRawString = false\n\ts.RawString = \"\"\n\ts.ForceType = \"\"\n\ts.TargetType = \"json\"\n\ts.Cookies = make([]*http.Cookie, 0)\n\ts.Errors = nil\n}\n\n// Just a wrapper to initialize SuperAgent instance by method string\nfunc (s *SuperAgent) CustomMethod(method, targetUrl string) *SuperAgent {\n\tswitch method {\n\tcase POST:\n\t\treturn s.Post(targetUrl)\n\tcase GET:\n\t\treturn s.Get(targetUrl)\n\tcase HEAD:\n\t\treturn s.Head(targetUrl)\n\tcase PUT:\n\t\treturn s.Put(targetUrl)\n\tcase DELETE:\n\t\treturn s.Delete(targetUrl)\n\tcase PATCH:\n\t\treturn s.Patch(targetUrl)\n\tcase OPTIONS:\n\t\treturn s.Options(targetUrl)\n\tdefault:\n\t\ts.ClearSuperAgent()\n\t\ts.Method = method\n\t\ts.Url = targetUrl\n\t\ts.Errors = nil\n\t\treturn s\n\t}\n}\n\nfunc (s *SuperAgent) Get(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = GET\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\nfunc (s *SuperAgent) Post(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = POST\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\nfunc (s *SuperAgent) Head(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = HEAD\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\nfunc (s *SuperAgent) Put(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = PUT\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\nfunc (s *SuperAgent) Delete(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = DELETE\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\nfunc (s *SuperAgent) Patch(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = PATCH\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\nfunc (s *SuperAgent) Options(targetUrl string) *SuperAgent {\n\ts.ClearSuperAgent()\n\ts.Method = OPTIONS\n\ts.Url = targetUrl\n\ts.Errors = nil\n\treturn s\n}\n\n// Set is used for setting header fields.\n// Example. To set `Accept` as `application/json`\n//\n//    gorequest.New().\n//      Post(\"/gamelist\").\n//      Set(\"Accept\", \"application/json\").\n//      End()\nfunc (s *SuperAgent) Set(param string, value string) *SuperAgent {\n\ts.Header[param] = value\n\treturn s\n}\n\n// Retryable is used for setting a Retryer policy\n// Example. To set Retryer policy with 5 seconds between each attempt.\n//          3 max attempt.\n//          And StatusBadRequest and StatusInternalServerError as RetryableStatus\n\n//    gorequest.New().\n//      Post(\"/gamelist\").\n//      Retry(3, 5 * time.seconds, http.StatusBadRequest, http.StatusInternalServerError).\n//      End()\nfunc (s *SuperAgent) Retry(retryerCount int, retryerTime time.Duration, statusCode ...int) *SuperAgent {\n\tfor _, code := range statusCode {\n\t\tstatusText := http.StatusText(code)\n\t\tif len(statusText) == 0 {\n\t\t\ts.Errors = append(s.Errors, errors.New(\"StatusCode '\"+strconv.Itoa(code)+\"' doesn't exist in http package\"))\n\t\t}\n\t}\n\n\ts.Retryable = struct {\n\t\tRetryableStatus []int\n\t\tRetryerTime     time.Duration\n\t\tRetryerCount    int\n\t\tAttempt         int\n\t\tEnable          bool\n\t}{\n\t\tstatusCode,\n\t\tretryerTime,\n\t\tretryerCount,\n\t\t0,\n\t\ttrue,\n\t}\n\treturn s\n}\n\n// SetBasicAuth sets the basic authentication header\n// Example. To set the header for username \"myuser\" and password \"mypass\"\n//\n//    gorequest.New()\n//      Post(\"/gamelist\").\n//      SetBasicAuth(\"myuser\", \"mypass\").\n//      End()\nfunc (s *SuperAgent) SetBasicAuth(username string, password string) *SuperAgent {\n\ts.BasicAuth = struct{ Username, Password string }{username, password}\n\treturn s\n}\n\n// AddCookie adds a cookie to the request. The behavior is the same as AddCookie on Request from net/http\nfunc (s *SuperAgent) AddCookie(c *http.Cookie) *SuperAgent {\n\ts.Cookies = append(s.Cookies, c)\n\treturn s\n}\n\n// AddCookies is a convenient method to add multiple cookies\nfunc (s *SuperAgent) AddCookies(cookies []*http.Cookie) *SuperAgent {\n\ts.Cookies = append(s.Cookies, cookies...)\n\treturn s\n}\n\nvar Types = map[string]string{\n\t\"html\":       \"text/html\",\n\t\"json\":       \"application/json\",\n\t\"xml\":        \"application/xml\",\n\t\"text\":       \"text/plain\",\n\t\"urlencoded\": \"application/x-www-form-urlencoded\",\n\t\"form\":       \"application/x-www-form-urlencoded\",\n\t\"form-data\":  \"application/x-www-form-urlencoded\",\n\t\"multipart\":  \"multipart/form-data\",\n}\n\n// Type is a convenience function to specify the data type to send.\n// For example, to send data as `application/x-www-form-urlencoded` :\n//\n//    gorequest.New().\n//      Post(\"/recipe\").\n//      Type(\"form\").\n//      Send(`{ \"name\": \"egg benedict\", \"category\": \"brunch\" }`).\n//      End()\n//\n// This will POST the body \"name=egg benedict&category=brunch\" to url /recipe\n//\n// GoRequest supports\n//\n//    \"text/html\" uses \"html\"\n//    \"application/json\" uses \"json\"\n//    \"application/xml\" uses \"xml\"\n//    \"text/plain\" uses \"text\"\n//    \"application/x-www-form-urlencoded\" uses \"urlencoded\", \"form\" or \"form-data\"\n//\nfunc (s *SuperAgent) Type(typeStr string) *SuperAgent {\n\tif _, ok := Types[typeStr]; ok {\n\t\ts.ForceType = typeStr\n\t} else {\n\t\ts.Errors = append(s.Errors, errors.New(\"Type func: incorrect type \\\"\"+typeStr+\"\\\"\"))\n\t}\n\treturn s\n}\n\n// Query function accepts either json string or strings which will form a query-string in url of GET method or body of POST method.\n// For example, making \"/search?query=bicycle&size=50x50&weight=20kg\" using GET method:\n//\n//      gorequest.New().\n//        Get(\"/search\").\n//        Query(`{ query: 'bicycle' }`).\n//        Query(`{ size: '50x50' }`).\n//        Query(`{ weight: '20kg' }`).\n//        End()\n//\n// Or you can put multiple json values:\n//\n//      gorequest.New().\n//        Get(\"/search\").\n//        Query(`{ query: 'bicycle', size: '50x50', weight: '20kg' }`).\n//        End()\n//\n// Strings are also acceptable:\n//\n//      gorequest.New().\n//        Get(\"/search\").\n//        Query(\"query=bicycle&size=50x50\").\n//        Query(\"weight=20kg\").\n//        End()\n//\n// Or even Mixed! :)\n//\n//      gorequest.New().\n//        Get(\"/search\").\n//        Query(\"query=bicycle\").\n//        Query(`{ size: '50x50', weight:'20kg' }`).\n//        End()\n//\nfunc (s *SuperAgent) Query(content interface{}) *SuperAgent {\n\tswitch v := reflect.ValueOf(content); v.Kind() {\n\tcase reflect.String:\n\t\ts.queryString(v.String())\n\tcase reflect.Struct:\n\t\ts.queryStruct(v.Interface())\n\tcase reflect.Map:\n\t\ts.queryMap(v.Interface())\n\tdefault:\n\t}\n\treturn s\n}\n\nfunc (s *SuperAgent) queryStruct(content interface{}) *SuperAgent {\n\tif marshalContent, err := json.Marshal(content); err != nil {\n\t\ts.Errors = append(s.Errors, err)\n\t} else {\n\t\tvar val map[string]interface{}\n\t\tif err := json.Unmarshal(marshalContent, &val); err != nil {\n\t\t\ts.Errors = append(s.Errors, err)\n\t\t} else {\n\t\t\tfor k, v := range val {\n\t\t\t\tk = strings.ToLower(k)\n\t\t\t\tvar queryVal string\n\t\t\t\tswitch t := v.(type) {\n\t\t\t\tcase string:\n\t\t\t\t\tqueryVal = t\n\t\t\t\tcase float64:\n\t\t\t\t\tqueryVal = strconv.FormatFloat(t, 'f', -1, 64)\n\t\t\t\tcase time.Time:\n\t\t\t\t\tqueryVal = t.Format(time.RFC3339)\n\t\t\t\tdefault:\n\t\t\t\t\tj, err := json.Marshal(v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tqueryVal = string(j)\n\t\t\t\t}\n\t\t\t\ts.QueryData.Add(k, queryVal)\n\t\t\t}\n\t\t}\n\t}\n\treturn s\n}\n\nfunc (s *SuperAgent) queryString(content string) *SuperAgent {\n\tvar val map[string]string\n\tif err := json.Unmarshal([]byte(content), &val); err == nil {\n\t\tfor k, v := range val {\n\t\t\ts.QueryData.Add(k, v)\n\t\t}\n\t} else {\n\t\tif queryData, err := url.ParseQuery(content); err == nil {\n\t\t\tfor k, queryValues := range queryData {\n\t\t\t\tfor _, queryValue := range queryValues {\n\t\t\t\t\ts.QueryData.Add(k, string(queryValue))\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\ts.Errors = append(s.Errors, err)\n\t\t}\n\t\t// TODO: need to check correct format of 'field=val&field=val&...'\n\t}\n\treturn s\n}\n\nfunc (s *SuperAgent) queryMap(content interface{}) *SuperAgent {\n\treturn s.queryStruct(content)\n}\n\n// As Go conventions accepts ; as a synonym for &. (https://github.com/golang/go/issues/2210)\n// Thus, Query won't accept ; in a querystring if we provide something like fields=f1;f2;f3\n// This Param is then created as an alternative method to solve this.\nfunc (s *SuperAgent) Param(key string, value string) *SuperAgent {\n\ts.QueryData.Add(key, value)\n\treturn s\n}\n\nfunc (s *SuperAgent) Timeout(timeout time.Duration) *SuperAgent {\n\ts.Transport.Dial = func(network, addr string) (net.Conn, error) {\n\t\tconn, err := net.DialTimeout(network, addr, timeout)\n\t\tif err != nil {\n\t\t\ts.Errors = append(s.Errors, err)\n\t\t\treturn nil, err\n\t\t}\n\t\tconn.SetDeadline(time.Now().Add(timeout))\n\t\treturn conn, nil\n\t}\n\treturn s\n}\n\n// Set TLSClientConfig for underling Transport.\n// One example is you can use it to disable security check (https):\n//\n//      gorequest.New().TLSClientConfig(&tls.Config{ InsecureSkipVerify: true}).\n//        Get(\"https://disable-security-check.com\").\n//        End()\n//\nfunc (s *SuperAgent) TLSClientConfig(config *tls.Config) *SuperAgent {\n\ts.Transport.TLSClientConfig = config\n\treturn s\n}\n\n// Proxy function accepts a proxy url string to setup proxy url for any request.\n// It provides a convenience way to setup proxy which have advantages over usual old ways.\n// One example is you might try to set `http_proxy` environment. This means you are setting proxy up for all the requests.\n// You will not be able to send different request with different proxy unless you change your `http_proxy` environment again.\n// Another example is using Golang proxy setting. This is normal prefer way to do but too verbase compared to GoRequest's Proxy:\n//\n//      gorequest.New().Proxy(\"http://myproxy:9999\").\n//        Post(\"http://www.google.com\").\n//        End()\n//\n// To set no_proxy, just put empty string to Proxy func:\n//\n//      gorequest.New().Proxy(\"\").\n//        Post(\"http://www.google.com\").\n//        End()\n//\nfunc (s *SuperAgent) Proxy(proxyUrl string) *SuperAgent {\n\tparsedProxyUrl, err := url.Parse(proxyUrl)\n\tif err != nil {\n\t\ts.Errors = append(s.Errors, err)\n\t} else if proxyUrl == \"\" {\n\t\ts.Transport.Proxy = nil\n\t} else {\n\t\ts.Transport.Proxy = http.ProxyURL(parsedProxyUrl)\n\t}\n\treturn s\n}\n\n// RedirectPolicy accepts a function to define how to handle redirects. If the\n// policy function returns an error, the next Request is not made and the previous\n// request is returned.\n//\n// The policy function's arguments are the Request about to be made and the\n// past requests in order of oldest first.\nfunc (s *SuperAgent) RedirectPolicy(policy func(req Request, via []Request) error) *SuperAgent {\n\ts.Client.CheckRedirect = func(r *http.Request, v []*http.Request) error {\n\t\tvv := make([]Request, len(v))\n\t\tfor i, r := range v {\n\t\t\tvv[i] = Request(r)\n\t\t}\n\t\treturn policy(Request(r), vv)\n\t}\n\treturn s\n}\n\n// Send function accepts either json string or query strings which is usually used to assign data to POST or PUT method.\n// Without specifying any type, if you give Send with json data, you are doing requesting in json format:\n//\n//      gorequest.New().\n//        Post(\"/search\").\n//        Send(`{ query: 'sushi' }`).\n//        End()\n//\n// While if you use at least one of querystring, GoRequest understands and automatically set the Content-Type to `application/x-www-form-urlencoded`\n//\n//      gorequest.New().\n//        Post(\"/search\").\n//        Send(\"query=tonkatsu\").\n//        End()\n//\n// So, if you want to strictly send json format, you need to use Type func to set it as `json` (Please see more details in Type function).\n// You can also do multiple chain of Send:\n//\n//      gorequest.New().\n//        Post(\"/search\").\n//        Send(\"query=bicycle&size=50x50\").\n//        Send(`{ wheel: '4'}`).\n//        End()\n//\n// From v0.2.0, Send function provide another convenience way to work with Struct type. You can mix and match it with json and query string:\n//\n//      type BrowserVersionSupport struct {\n//        Chrome string\n//        Firefox string\n//      }\n//      ver := BrowserVersionSupport{ Chrome: \"37.0.2041.6\", Firefox: \"30.0\" }\n//      gorequest.New().\n//        Post(\"/update_version\").\n//        Send(ver).\n//        Send(`{\"Safari\":\"5.1.10\"}`).\n//        End()\n//\n// If you have set Type to text or Content-Type to text/plain, content will be sent as raw string in body instead of form\n//\n//      gorequest.New().\n//        Post(\"/greet\").\n//        Type(\"text\").\n//        Send(\"hello world\").\n//        End()\n//\nfunc (s *SuperAgent) Send(content interface{}) *SuperAgent {\n\t// TODO: add normal text mode or other mode to Send func\n\tswitch v := reflect.ValueOf(content); v.Kind() {\n\tcase reflect.String:\n\t\ts.SendString(v.String())\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: // includes rune\n\t\ts.SendString(strconv.FormatInt(v.Int(), 10))\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: // includes byte\n\t\ts.SendString(strconv.FormatUint(v.Uint(), 10))\n\tcase reflect.Float64:\n\t\ts.SendString(strconv.FormatFloat(v.Float(), 'f', -1, 64))\n\tcase reflect.Float32:\n\t\ts.SendString(strconv.FormatFloat(v.Float(), 'f', -1, 32))\n\tcase reflect.Bool:\n\t\ts.SendString(strconv.FormatBool(v.Bool()))\n\tcase reflect.Struct:\n\t\ts.SendStruct(v.Interface())\n\tcase reflect.Slice:\n\t\ts.SendSlice(makeSliceOfReflectValue(v))\n\tcase reflect.Array:\n\t\ts.SendSlice(makeSliceOfReflectValue(v))\n\tcase reflect.Ptr:\n\t\ts.Send(v.Elem().Interface())\n\tcase reflect.Map:\n\t\ts.SendMap(v.Interface())\n\tdefault:\n\t\t// TODO: leave default for handling other types in the future, such as complex numbers, (nested) maps, etc\n\t\treturn s\n\t}\n\treturn s\n}\n\nfunc makeSliceOfReflectValue(v reflect.Value) (slice []interface{}) {\n\n\tkind := v.Kind()\n\tif kind != reflect.Slice && kind != reflect.Array {\n\t\treturn slice\n\t}\n\n\tslice = make([]interface{}, v.Len())\n\tfor i := 0; i < v.Len(); i++ {\n\t\tslice[i] = v.Index(i).Interface()\n\t}\n\n\treturn slice\n}\n\n// SendSlice (similar to SendString) returns SuperAgent's itself for any next chain and takes content []interface{} as a parameter.\n// Its duty is to append slice of interface{} into s.SliceData ([]interface{}) which later changes into json array in the End() func.\nfunc (s *SuperAgent) SendSlice(content []interface{}) *SuperAgent {\n\ts.SliceData = append(s.SliceData, content...)\n\treturn s\n}\n\nfunc (s *SuperAgent) SendMap(content interface{}) *SuperAgent {\n\treturn s.SendStruct(content)\n}\n\n// SendStruct (similar to SendString) returns SuperAgent's itself for any next chain and takes content interface{} as a parameter.\n// Its duty is to transfrom interface{} (implicitly always a struct) into s.Data (map[string]interface{}) which later changes into appropriate format such as json, form, text, etc. in the End() func.\nfunc (s *SuperAgent) SendStruct(content interface{}) *SuperAgent {\n\tif marshalContent, err := json.Marshal(content); err != nil {\n\t\ts.Errors = append(s.Errors, err)\n\t} else {\n\t\tvar val map[string]interface{}\n\t\td := json.NewDecoder(bytes.NewBuffer(marshalContent))\n\t\td.UseNumber()\n\t\tif err := d.Decode(&val); err != nil {\n\t\t\ts.Errors = append(s.Errors, err)\n\t\t} else {\n\t\t\tfor k, v := range val {\n\t\t\t\ts.Data[k] = v\n\t\t\t}\n\t\t}\n\t}\n\treturn s\n}\n\n// SendString returns SuperAgent's itself for any next chain and takes content string as a parameter.\n// Its duty is to transform String into s.Data (map[string]interface{}) which later changes into appropriate format such as json, form, text, etc. in the End func.\n// Send implicitly uses SendString and you should use Send instead of this.\nfunc (s *SuperAgent) SendString(content string) *SuperAgent {\n\tif !s.BounceToRawString {\n\t\tvar val interface{}\n\t\td := json.NewDecoder(strings.NewReader(content))\n\t\td.UseNumber()\n\t\tif err := d.Decode(&val); err == nil {\n\t\t\tswitch v := reflect.ValueOf(val); v.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tfor k, v := range val.(map[string]interface{}) {\n\t\t\t\t\ts.Data[k] = v\n\t\t\t\t}\n\t\t\t// add to SliceData\n\t\t\tcase reflect.Slice:\n\t\t\t\ts.SendSlice(val.([]interface{}))\n\t\t\t// bounce to rawstring if it is arrayjson, or others\n\t\t\tdefault:\n\t\t\t\ts.BounceToRawString = true\n\t\t\t}\n\t\t} else if formData, err := url.ParseQuery(content); err == nil {\n\t\t\tfor k, formValues := range formData {\n\t\t\t\tfor _, formValue := range formValues {\n\t\t\t\t\t// make it array if already have key\n\t\t\t\t\tif val, ok := s.Data[k]; ok {\n\t\t\t\t\t\tvar strArray []string\n\t\t\t\t\t\tstrArray = append(strArray, string(formValue))\n\t\t\t\t\t\t// check if previous data is one string or array\n\t\t\t\t\t\tswitch oldValue := val.(type) {\n\t\t\t\t\t\tcase []string:\n\t\t\t\t\t\t\tstrArray = append(strArray, oldValue...)\n\t\t\t\t\t\tcase string:\n\t\t\t\t\t\t\tstrArray = append(strArray, oldValue)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ts.Data[k] = strArray\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// make it just string if does not already have same key\n\t\t\t\t\t\ts.Data[k] = formValue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ts.TargetType = \"form\"\n\t\t} else {\n\t\t\ts.BounceToRawString = true\n\t\t}\n\t}\n\t// Dump all contents to RawString in case in the end user doesn't want json or form.\n\ts.RawString += content\n\treturn s\n}\n\ntype File struct {\n\tFilename  string\n\tFieldname string\n\tData      []byte\n}\n\n// SendFile function works only with type \"multipart\". The function accepts one mandatory and up to two optional arguments. The mandatory (first) argument is the file.\n// The function accepts a path to a file as string:\n//\n//      gorequest.New().\n//        Post(\"http://example.com\").\n//        Type(\"multipart\").\n//        SendFile(\"./example_file.ext\").\n//        End()\n//\n// File can also be a []byte slice of a already file read by eg. ioutil.ReadFile:\n//\n//      b, _ := ioutil.ReadFile(\"./example_file.ext\")\n//      gorequest.New().\n//        Post(\"http://example.com\").\n//        Type(\"multipart\").\n//        SendFile(b).\n//        End()\n//\n// Furthermore file can also be a os.File:\n//\n//      f, _ := os.Open(\"./example_file.ext\")\n//      gorequest.New().\n//        Post(\"http://example.com\").\n//        Type(\"multipart\").\n//        SendFile(f).\n//        End()\n//\n// The first optional argument (second argument overall) is the filename, which will be automatically determined when file is a string (path) or a os.File.\n// When file is a []byte slice, filename defaults to \"filename\". In all cases the automatically determined filename can be overwritten:\n//\n//      b, _ := ioutil.ReadFile(\"./example_file.ext\")\n//      gorequest.New().\n//        Post(\"http://example.com\").\n//        Type(\"multipart\").\n//        SendFile(b, \"my_custom_filename\").\n//        End()\n//\n// The second optional argument (third argument overall) is the fieldname in the multipart/form-data request. It defaults to fileNUMBER (eg. file1), where number is ascending and starts counting at 1.\n// So if you send multiple files, the fieldnames will be file1, file2, ... unless it is overwritten. If fieldname is set to \"file\" it will be automatically set to fileNUMBER, where number is the greatest exsiting number+1.\n//\n//      b, _ := ioutil.ReadFile(\"./example_file.ext\")\n//      gorequest.New().\n//        Post(\"http://example.com\").\n//        Type(\"multipart\").\n//        SendFile(b, \"\", \"my_custom_fieldname\"). // filename left blank, will become \"example_file.ext\"\n//        End()\n//\nfunc (s *SuperAgent) SendFile(file interface{}, args ...string) *SuperAgent {\n\n\tfilename := \"\"\n\tfieldname := \"file\"\n\n\tif len(args) >= 1 && len(args[0]) > 0 {\n\t\tfilename = strings.TrimSpace(args[0])\n\t}\n\tif len(args) >= 2 && len(args[1]) > 0 {\n\t\tfieldname = strings.TrimSpace(args[1])\n\t}\n\tif fieldname == \"file\" || fieldname == \"\" {\n\t\tfieldname = \"file\" + strconv.Itoa(len(s.FileData)+1)\n\t}\n\n\tswitch v := reflect.ValueOf(file); v.Kind() {\n\tcase reflect.String:\n\t\tpathToFile, err := filepath.Abs(v.String())\n\t\tif err != nil {\n\t\t\ts.Errors = append(s.Errors, err)\n\t\t\treturn s\n\t\t}\n\t\tif filename == \"\" {\n\t\t\tfilename = filepath.Base(pathToFile)\n\t\t}\n\t\tdata, err := ioutil.ReadFile(v.String())\n\t\tif err != nil {\n\t\t\ts.Errors = append(s.Errors, err)\n\t\t\treturn s\n\t\t}\n\t\ts.FileData = append(s.FileData, File{\n\t\t\tFilename:  filename,\n\t\t\tFieldname: fieldname,\n\t\t\tData:      data,\n\t\t})\n\tcase reflect.Slice:\n\t\tslice := makeSliceOfReflectValue(v)\n\t\tif filename == \"\" {\n\t\t\tfilename = \"filename\"\n\t\t}\n\t\tf := File{\n\t\t\tFilename:  filename,\n\t\t\tFieldname: fieldname,\n\t\t\tData:      make([]byte, len(slice)),\n\t\t}\n\t\tfor i := range slice {\n\t\t\tf.Data[i] = slice[i].(byte)\n\t\t}\n\t\ts.FileData = append(s.FileData, f)\n\tcase reflect.Ptr:\n\t\tif len(args) == 1 {\n\t\t\treturn s.SendFile(v.Elem().Interface(), args[0])\n\t\t}\n\t\tif len(args) >= 2 {\n\t\t\treturn s.SendFile(v.Elem().Interface(), args[0], args[1])\n\t\t}\n\t\treturn s.SendFile(v.Elem().Interface())\n\tdefault:\n\t\tif v.Type() == reflect.TypeOf(os.File{}) {\n\t\t\tosfile := v.Interface().(os.File)\n\t\t\tif filename == \"\" {\n\t\t\t\tfilename = filepath.Base(osfile.Name())\n\t\t\t}\n\t\t\tdata, err := ioutil.ReadFile(osfile.Name())\n\t\t\tif err != nil {\n\t\t\t\ts.Errors = append(s.Errors, err)\n\t\t\t\treturn s\n\t\t\t}\n\t\t\ts.FileData = append(s.FileData, File{\n\t\t\t\tFilename:  filename,\n\t\t\t\tFieldname: fieldname,\n\t\t\t\tData:      data,\n\t\t\t})\n\t\t\treturn s\n\t\t}\n\n\t\ts.Errors = append(s.Errors, errors.New(\"SendFile currently only supports either a string (path/to/file), a slice of bytes (file content itself), or a os.File!\"))\n\t}\n\n\treturn s\n}\n\nfunc changeMapToURLValues(data map[string]interface{}) url.Values {\n\tvar newUrlValues = url.Values{}\n\tfor k, v := range data {\n\t\tswitch val := v.(type) {\n\t\tcase string:\n\t\t\tnewUrlValues.Add(k, val)\n\t\tcase bool:\n\t\t\tnewUrlValues.Add(k, strconv.FormatBool(val))\n\t\t// if a number, change to string\n\t\t// json.Number used to protect against a wrong (for GoRequest) default conversion\n\t\t// which always converts number to float64.\n\t\t// This type is caused by using Decoder.UseNumber()\n\t\tcase json.Number:\n\t\t\tnewUrlValues.Add(k, string(val))\n\t\tcase int:\n\t\t\tnewUrlValues.Add(k, strconv.FormatInt(int64(val), 10))\n\t\t// TODO add all other int-Types (int8, int16, ...)\n\t\tcase float64:\n\t\t\tnewUrlValues.Add(k, strconv.FormatFloat(float64(val), 'f', -1, 64))\n\t\tcase float32:\n\t\t\tnewUrlValues.Add(k, strconv.FormatFloat(float64(val), 'f', -1, 64))\n\t\t// following slices are mostly needed for tests\n\t\tcase []string:\n\t\t\tfor _, element := range val {\n\t\t\t\tnewUrlValues.Add(k, element)\n\t\t\t}\n\t\tcase []int:\n\t\t\tfor _, element := range val {\n\t\t\t\tnewUrlValues.Add(k, strconv.FormatInt(int64(element), 10))\n\t\t\t}\n\t\tcase []bool:\n\t\t\tfor _, element := range val {\n\t\t\t\tnewUrlValues.Add(k, strconv.FormatBool(element))\n\t\t\t}\n\t\tcase []float64:\n\t\t\tfor _, element := range val {\n\t\t\t\tnewUrlValues.Add(k, strconv.FormatFloat(float64(element), 'f', -1, 64))\n\t\t\t}\n\t\tcase []float32:\n\t\t\tfor _, element := range val {\n\t\t\t\tnewUrlValues.Add(k, strconv.FormatFloat(float64(element), 'f', -1, 64))\n\t\t\t}\n\t\t// these slices are used in practice like sending a struct\n\t\tcase []interface{}:\n\n\t\t\tif len(val) <= 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tswitch val[0].(type) {\n\t\t\tcase string:\n\t\t\t\tfor _, element := range val {\n\t\t\t\t\tnewUrlValues.Add(k, element.(string))\n\t\t\t\t}\n\t\t\tcase bool:\n\t\t\t\tfor _, element := range val {\n\t\t\t\t\tnewUrlValues.Add(k, strconv.FormatBool(element.(bool)))\n\t\t\t\t}\n\t\t\tcase json.Number:\n\t\t\t\tfor _, element := range val {\n\t\t\t\t\tnewUrlValues.Add(k, string(element.(json.Number)))\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\t// TODO add ptr, arrays, ...\n\t\t}\n\t}\n\treturn newUrlValues\n}\n\n// End is the most important function that you need to call when ending the chain. The request won't proceed without calling it.\n// End function returns Response which matchs the structure of Response type in Golang's http package (but without Body data). The body data itself returns as a string in a 2nd return value.\n// Lastly but worth noticing, error array (NOTE: not just single error value) is returned as a 3rd value and nil otherwise.\n//\n// For example:\n//\n//    resp, body, errs := gorequest.New().Get(\"http://www.google.com\").End()\n//    if (errs != nil) {\n//      fmt.Println(errs)\n//    }\n//    fmt.Println(resp, body)\n//\n// Moreover, End function also supports callback which you can put as a parameter.\n// This extends the flexibility and makes GoRequest fun and clean! You can use GoRequest in whatever style you love!\n//\n// For example:\n//\n//    func printBody(resp gorequest.Response, body string, errs []error){\n//      fmt.Println(resp.Status)\n//    }\n//    gorequest.New().Get(\"http://www..google.com\").End(printBody)\n//\nfunc (s *SuperAgent) End(callback ...func(response Response, body string, errs []error)) (Response, string, []error) {\n\tvar bytesCallback []func(response Response, body []byte, errs []error)\n\tif len(callback) > 0 {\n\t\tbytesCallback = []func(response Response, body []byte, errs []error){\n\t\t\tfunc(response Response, body []byte, errs []error) {\n\t\t\t\tcallback[0](response, string(body), errs)\n\t\t\t},\n\t\t}\n\t}\n\n\tresp, body, errs := s.EndBytes(bytesCallback...)\n\tbodyString := string(body)\n\n\treturn resp, bodyString, errs\n}\n\n// EndBytes should be used when you want the body as bytes. The callbacks work the same way as with `End`, except that a byte array is used instead of a string.\nfunc (s *SuperAgent) EndBytes(callback ...func(response Response, body []byte, errs []error)) (Response, []byte, []error) {\n\tvar (\n\t\terrs []error\n\t\tresp Response\n\t\tbody []byte\n\t)\n\n\tfor {\n\t\tresp, body, errs = s.getResponseBytes()\n\t\tif errs != nil {\n\t\t\treturn nil, nil, errs\n\t\t}\n\t\tif s.isRetryableRequest(resp) {\n\t\t\tresp.Header.Set(\"Retry-Count\", strconv.Itoa(s.Retryable.Attempt))\n\t\t\tbreak\n\t\t}\n\t}\n\n\trespCallback := *resp\n\tif len(callback) != 0 {\n\t\tcallback[0](&respCallback, body, s.Errors)\n\t}\n\treturn resp, body, nil\n}\n\nfunc (s *SuperAgent) isRetryableRequest(resp Response) bool {\n\tif s.Retryable.Enable && s.Retryable.Attempt < s.Retryable.RetryerCount && contains(resp.StatusCode, s.Retryable.RetryableStatus) {\n\t\ttime.Sleep(s.Retryable.RetryerTime)\n\t\ts.Retryable.Attempt++\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc contains(respStatus int, statuses []int) bool {\n\tfor _, status := range statuses {\n\t\tif status == respStatus {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// EndStruct should be used when you want the body as a struct. The callbacks work the same way as with `End`, except that a struct is used instead of a string.\nfunc (s *SuperAgent) EndStruct(v interface{}, callback ...func(response Response, v interface{}, body []byte, errs []error)) (Response, []byte, []error) {\n\tresp, body, errs := s.EndBytes()\n\tif errs != nil {\n\t\treturn nil, body, errs\n\t}\n\terr := json.Unmarshal(body, &v)\n\tif err != nil {\n\t\ts.Errors = append(s.Errors, err)\n\t\treturn resp, body, s.Errors\n\t}\n\trespCallback := *resp\n\tif len(callback) != 0 {\n\t\tcallback[0](&respCallback, v, body, s.Errors)\n\t}\n\treturn resp, body, nil\n}\n\nfunc (s *SuperAgent) getResponseBytes() (Response, []byte, []error) {\n\tvar (\n\t\treq  *http.Request\n\t\terr  error\n\t\tresp Response\n\t)\n\t// check whether there is an error. if yes, return all errors\n\tif len(s.Errors) != 0 {\n\t\treturn nil, nil, s.Errors\n\t}\n\t// check if there is forced type\n\tswitch s.ForceType {\n\tcase \"json\", \"form\", \"xml\", \"text\", \"multipart\":\n\t\ts.TargetType = s.ForceType\n\t\t// If forcetype is not set, check whether user set Content-Type header.\n\t\t// If yes, also bounce to the correct supported TargetType automatically.\n\tdefault:\n\t\tfor k, v := range Types {\n\t\t\tif s.Header[\"Content-Type\"] == v {\n\t\t\t\ts.TargetType = k\n\t\t\t}\n\t\t}\n\t}\n\n\t// if slice and map get mixed, let's bounce to rawstring\n\tif len(s.Data) != 0 && len(s.SliceData) != 0 {\n\t\ts.BounceToRawString = true\n\t}\n\n\t// Make Request\n\treq, err = s.MakeRequest()\n\tif err != nil {\n\t\ts.Errors = append(s.Errors, err)\n\t\treturn nil, nil, s.Errors\n\t}\n\n\t// Set Transport\n\tif !DisableTransportSwap {\n\t\ts.Client.Transport = s.Transport\n\t}\n\n\t// Log details of this request\n\tif s.Debug {\n\t\tdump, err := httputil.DumpRequest(req, true)\n\t\ts.logger.SetPrefix(\"[http] \")\n\t\tif err != nil {\n\t\t\ts.logger.Println(\"Error:\", err)\n\t\t} else {\n\t\t\ts.logger.Printf(\"HTTP Request: %s\", string(dump))\n\t\t}\n\t}\n\n\t// Display CURL command line\n\tif s.CurlCommand {\n\t\tcurl, err := http2curl.GetCurlCommand(req)\n\t\ts.logger.SetPrefix(\"[curl] \")\n\t\tif err != nil {\n\t\t\ts.logger.Println(\"Error:\", err)\n\t\t} else {\n\t\t\ts.logger.Printf(\"CURL command line: %s\", curl)\n\t\t}\n\t}\n\n\t// Send request\n\tresp, err = s.Client.Do(req)\n\tif err != nil {\n\t\ts.Errors = append(s.Errors, err)\n\t\treturn nil, nil, s.Errors\n\t}\n\tdefer resp.Body.Close()\n\n\t// Log details of this response\n\tif s.Debug {\n\t\tdump, err := httputil.DumpResponse(resp, true)\n\t\tif nil != err {\n\t\t\ts.logger.Println(\"Error:\", err)\n\t\t} else {\n\t\t\ts.logger.Printf(\"HTTP Response: %s\", string(dump))\n\t\t}\n\t}\n\n\tbody, _ := ioutil.ReadAll(resp.Body)\n\t// Reset resp.Body so it can be use again\n\tresp.Body = ioutil.NopCloser(bytes.NewBuffer(body))\n\n\treturn resp, body, nil\n}\n\nfunc (s *SuperAgent) MakeRequest() (*http.Request, error) {\n\tvar (\n\t\treq *http.Request\n\t\terr error\n\t)\n\n\tif s.Method == \"\" {\n\t\treturn nil, errors.New(\"No method specified\")\n\t}\n\n\tif s.TargetType == \"json\" {\n\t\t// If-case to give support to json array. we check if\n\t\t// 1) Map only: send it as json map from s.Data\n\t\t// 2) Array or Mix of map & array or others: send it as rawstring from s.RawString\n\t\tvar contentJson []byte\n\t\tif s.BounceToRawString {\n\t\t\tcontentJson = []byte(s.RawString)\n\t\t} else if len(s.Data) != 0 {\n\t\t\tcontentJson, _ = json.Marshal(s.Data)\n\t\t} else if len(s.SliceData) != 0 {\n\t\t\tcontentJson, _ = json.Marshal(s.SliceData)\n\t\t}\n\t\tcontentReader := bytes.NewReader(contentJson)\n\t\treq, err = http.NewRequest(s.Method, s.Url, contentReader)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treq.Header.Set(\"Content-Type\", \"application/json\")\n\t} else if s.TargetType == \"form\" || s.TargetType == \"form-data\" || s.TargetType == \"urlencoded\" {\n\t\tvar contentForm []byte\n\t\tif s.BounceToRawString || len(s.SliceData) != 0 {\n\t\t\tcontentForm = []byte(s.RawString)\n\t\t} else {\n\t\t\tformData := changeMapToURLValues(s.Data)\n\t\t\tcontentForm = []byte(formData.Encode())\n\t\t}\n\t\tcontentReader := bytes.NewReader(contentForm)\n\t\treq, err = http.NewRequest(s.Method, s.Url, contentReader)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treq.Header.Set(\"Content-Type\", \"application/x-www-form-urlencoded\")\n\t} else if s.TargetType == \"text\" {\n\t\treq, err = http.NewRequest(s.Method, s.Url, strings.NewReader(s.RawString))\n\t\treq.Header.Set(\"Content-Type\", \"text/plain\")\n\t} else if s.TargetType == \"xml\" {\n\t\treq, err = http.NewRequest(s.Method, s.Url, strings.NewReader(s.RawString))\n\t\treq.Header.Set(\"Content-Type\", \"application/xml\")\n\t} else if s.TargetType == \"multipart\" {\n\n\t\tvar buf bytes.Buffer\n\t\tmw := multipart.NewWriter(&buf)\n\n\t\tif s.BounceToRawString {\n\t\t\tfieldName, ok := s.Header[\"data_fieldname\"]\n\t\t\tif !ok {\n\t\t\t\tfieldName = \"data\"\n\t\t\t}\n\t\t\tfw, _ := mw.CreateFormField(fieldName)\n\t\t\tfw.Write([]byte(s.RawString))\n\t\t}\n\n\t\tif len(s.Data) != 0 {\n\t\t\tformData := changeMapToURLValues(s.Data)\n\t\t\tfor key, values := range formData {\n\t\t\t\tfor _, value := range values {\n\t\t\t\t\tfw, _ := mw.CreateFormField(key)\n\t\t\t\t\tfw.Write([]byte(value))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif len(s.SliceData) != 0 {\n\t\t\tfieldName, ok := s.Header[\"json_fieldname\"]\n\t\t\tif !ok {\n\t\t\t\tfieldName = \"data\"\n\t\t\t}\n\t\t\t// copied from CreateFormField() in mime/multipart/writer.go\n\t\t\th := make(textproto.MIMEHeader)\n\t\t\tfieldName = strings.Replace(strings.Replace(fieldName, \"\\\\\", \"\\\\\\\\\", -1), `\"`, \"\\\\\\\"\", -1)\n\t\t\th.Set(\"Content-Disposition\", fmt.Sprintf(`form-data; name=\"%s\"`, fieldName))\n\t\t\th.Set(\"Content-Type\", \"application/json\")\n\t\t\tfw, _ := mw.CreatePart(h)\n\t\t\tcontentJson, err := json.Marshal(s.SliceData)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tfw.Write(contentJson)\n\t\t}\n\n\t\t// add the files\n\t\tif len(s.FileData) != 0 {\n\t\t\tfor _, file := range s.FileData {\n\t\t\t\tfw, _ := mw.CreateFormFile(file.Fieldname, file.Filename)\n\t\t\t\tfw.Write(file.Data)\n\t\t\t}\n\t\t}\n\n\t\t// close before call to FormDataContentType ! otherwise its not valid multipart\n\t\tmw.Close()\n\n\t\treq, err = http.NewRequest(s.Method, s.Url, &buf)\n\t\treq.Header.Set(\"Content-Type\", mw.FormDataContentType())\n\t} else {\n\t\t// let's return an error instead of an nil pointer exception here\n\t\treturn nil, errors.New(\"TargetType '\" + s.TargetType + \"' could not be determined\")\n\t}\n\n\tfor k, v := range s.Header {\n\t\treq.Header.Set(k, v)\n\t\t// Setting the host header is a special case, see this issue: https://github.com/golang/go/issues/7682\n\t\tif strings.EqualFold(k, \"host\") {\n\t\t\treq.Host = v\n\t\t}\n\t}\n\t// Add all querystring from Query func\n\tq := req.URL.Query()\n\tfor k, v := range s.QueryData {\n\t\tfor _, vv := range v {\n\t\t\tq.Add(k, vv)\n\t\t}\n\t}\n\treq.URL.RawQuery = q.Encode()\n\n\t// Add basic auth\n\tif s.BasicAuth != struct{ Username, Password string }{} {\n\t\treq.SetBasicAuth(s.BasicAuth.Username, s.BasicAuth.Password)\n\t}\n\n\t// Add cookies\n\tfor _, cookie := range s.Cookies {\n\t\treq.AddCookie(cookie)\n\t}\n\n\treturn req, nil\n}\n\n// AsCurlCommand returns a string representing the runnable `curl' command\n// version of the request.\nfunc (s *SuperAgent) AsCurlCommand() (string, error) {\n\treq, err := s.MakeRequest()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tcmd, err := http2curl.GetCurlCommand(req)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn cmd.String(), nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/.gitignore",
    "content": "test_program/test_program_bin\nfuzz/\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/.travis.yml",
    "content": "sudo: false\nlanguage: go\ngo:\n  - 1.8.x\n  - 1.9.x\n  - 1.10.x\n  - tip\nmatrix:\n  allow_failures:\n    - go: tip\n  fast_finish: true\nscript:\n  - if [ -n \"$(go fmt ./...)\" ]; then exit 1; fi\n  - ./test.sh\n  - ./benchmark.sh $TRAVIS_BRANCH https://github.com/$TRAVIS_REPO_SLUG.git\nbefore_install:\n  - go get github.com/axw/gocov/gocov\n  - go get github.com/mattn/goveralls\n  - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi\nbranches:\n  only: [master]\nafter_success:\n  - $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=coverage.out -repotoken $COVERALLS_TOKEN\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 - 2017 Thomas Pelletier, Eric Anderton\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/README.md",
    "content": "# go-toml\n\nGo library for the [TOML](https://github.com/mojombo/toml) format.\n\nThis library supports TOML version\n[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)\n\n[![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml)\n[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE)\n[![Build Status](https://travis-ci.org/pelletier/go-toml.svg?branch=master)](https://travis-ci.org/pelletier/go-toml)\n[![Coverage Status](https://coveralls.io/repos/github/pelletier/go-toml/badge.svg?branch=master)](https://coveralls.io/github/pelletier/go-toml?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml)\n\n## Features\n\nGo-toml provides the following features for using data parsed from TOML documents:\n\n* Load TOML documents from files and string data\n* Easily navigate TOML structure using Tree\n* Mashaling and unmarshaling to and from data structures\n* Line & column position data for all parsed elements\n* [Query support similar to JSON-Path](query/)\n* Syntax errors contain line and column numbers\n\n## Import\n\n```go\nimport \"github.com/pelletier/go-toml\"\n```\n\n## Usage example\n\nRead a TOML document:\n\n```go\nconfig, _ := toml.Load(`\n[postgres]\nuser = \"pelletier\"\npassword = \"mypassword\"`)\n// retrieve data directly\nuser := config.Get(\"postgres.user\").(string)\n\n// or using an intermediate object\npostgresConfig := config.Get(\"postgres\").(*toml.Tree)\npassword := postgresConfig.Get(\"password\").(string)\n```\n\nOr use Unmarshal:\n\n```go\ntype Postgres struct {\n    User     string\n    Password string\n}\ntype Config struct {\n    Postgres Postgres\n}\n\ndoc := []byte(`\n[Postgres]\nUser = \"pelletier\"\nPassword = \"mypassword\"`)\n\nconfig := Config{}\ntoml.Unmarshal(doc, &config)\nfmt.Println(\"user=\", config.Postgres.User)\n```\n\nOr use a query:\n\n```go\n// use a query to gather elements without walking the tree\nq, _ := query.Compile(\"$..[user,password]\")\nresults := q.Execute(config)\nfor ii, item := range results.Values() {\n    fmt.Println(\"Query result %d: %v\", ii, item)\n}\n```\n\n## Documentation\n\nThe documentation and additional examples are available at\n[godoc.org](http://godoc.org/github.com/pelletier/go-toml).\n\n## Tools\n\nGo-toml provides two handy command line tools:\n\n* `tomll`: Reads TOML files and lint them.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/tomll\n    tomll --help\n    ```\n* `tomljson`: Reads a TOML file and outputs its JSON representation.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/tomljson\n    tomljson --help\n    ```\n\n## Contribute\n\nFeel free to report bugs and patches using GitHub's pull requests system on\n[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be\nmuch appreciated!\n\n### Run tests\n\nYou have to make sure two kind of tests run:\n\n1. The Go unit tests\n2. The TOML examples base\n\nYou can run both of them using `./test.sh`.\n\n### Fuzzing\n\nThe script `./fuzz.sh` is available to\nrun [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml.\n\n## Versioning\n\nGo-toml follows [Semantic Versioning](http://semver.org/). The supported version\nof [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of\nthis document. The last two major versions of Go are supported\n(see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)).\n\n## License\n\nThe MIT License (MIT). Read [LICENSE](LICENSE).\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/benchmark.json",
    "content": "{\n    \"array\": {\n        \"key1\": [\n            1,\n            2,\n            3\n        ],\n        \"key2\": [\n            \"red\",\n            \"yellow\",\n            \"green\"\n        ],\n        \"key3\": [\n            [\n                1,\n                2\n            ],\n            [\n                3,\n                4,\n                5\n            ]\n        ],\n        \"key4\": [\n            [\n                1,\n                2\n            ],\n            [\n                \"a\",\n                \"b\",\n                \"c\"\n            ]\n        ],\n        \"key5\": [\n            1,\n            2,\n            3\n        ],\n        \"key6\": [\n            1,\n            2\n        ]\n    },\n    \"boolean\": {\n        \"False\": false,\n        \"True\": true\n    },\n    \"datetime\": {\n        \"key1\": \"1979-05-27T07:32:00Z\",\n        \"key2\": \"1979-05-27T00:32:00-07:00\",\n        \"key3\": \"1979-05-27T00:32:00.999999-07:00\"\n    },\n    \"float\": {\n        \"both\": {\n            \"key\": 6.626e-34\n        },\n        \"exponent\": {\n            \"key1\": 5e+22,\n            \"key2\": 1000000,\n            \"key3\": -0.02\n        },\n        \"fractional\": {\n            \"key1\": 1,\n            \"key2\": 3.1415,\n            \"key3\": -0.01\n        },\n        \"underscores\": {\n            \"key1\": 9224617.445991227,\n            \"key2\": 1e+100\n        }\n    },\n    \"fruit\": [{\n            \"name\": \"apple\",\n            \"physical\": {\n                \"color\": \"red\",\n                \"shape\": \"round\"\n            },\n            \"variety\": [{\n                    \"name\": \"red delicious\"\n                },\n                {\n                    \"name\": \"granny smith\"\n                }\n            ]\n        },\n        {\n            \"name\": \"banana\",\n            \"variety\": [{\n                \"name\": \"plantain\"\n            }]\n        }\n    ],\n    \"integer\": {\n        \"key1\": 99,\n        \"key2\": 42,\n        \"key3\": 0,\n        \"key4\": -17,\n        \"underscores\": {\n            \"key1\": 1000,\n            \"key2\": 5349221,\n            \"key3\": 12345\n        }\n    },\n    \"products\": [{\n            \"name\": \"Hammer\",\n            \"sku\": 738594937\n        },\n        {},\n        {\n            \"color\": \"gray\",\n            \"name\": \"Nail\",\n            \"sku\": 284758393\n        }\n    ],\n    \"string\": {\n        \"basic\": {\n            \"basic\": \"I'm a string. \\\"You can quote me\\\". Name\\tJosé\\nLocation\\tSF.\"\n        },\n        \"literal\": {\n            \"multiline\": {\n                \"lines\": \"The first newline is\\ntrimmed in raw strings.\\n   All other whitespace\\n   is preserved.\\n\",\n                \"regex2\": \"I [dw]on't need \\\\d{2} apples\"\n            },\n            \"quoted\": \"Tom \\\"Dubs\\\" Preston-Werner\",\n            \"regex\": \"\\u003c\\\\i\\\\c*\\\\s*\\u003e\",\n            \"winpath\": \"C:\\\\Users\\\\nodejs\\\\templates\",\n            \"winpath2\": \"\\\\\\\\ServerX\\\\admin$\\\\system32\\\\\"\n        },\n        \"multiline\": {\n            \"continued\": {\n                \"key1\": \"The quick brown fox jumps over the lazy dog.\",\n                \"key2\": \"The quick brown fox jumps over the lazy dog.\",\n                \"key3\": \"The quick brown fox jumps over the lazy dog.\"\n            },\n            \"key1\": \"One\\nTwo\",\n            \"key2\": \"One\\nTwo\",\n            \"key3\": \"One\\nTwo\"\n        }\n    },\n    \"table\": {\n        \"inline\": {\n            \"name\": {\n                \"first\": \"Tom\",\n                \"last\": \"Preston-Werner\"\n            },\n            \"point\": {\n                \"x\": 1,\n                \"y\": 2\n            }\n        },\n        \"key\": \"value\",\n        \"subtable\": {\n            \"key\": \"another value\"\n        }\n    },\n    \"x\": {\n        \"y\": {\n            \"z\": {\n                \"w\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/benchmark.sh",
    "content": "#!/bin/bash\n\nset -e\n\nreference_ref=${1:-master}\nreference_git=${2:-.}\n\nif ! `hash benchstat 2>/dev/null`; then\n    echo \"Installing benchstat\"\n    go get golang.org/x/perf/cmd/benchstat\n    go install golang.org/x/perf/cmd/benchstat\nfi\n\ntempdir=`mktemp -d /tmp/go-toml-benchmark-XXXXXX`\nref_tempdir=\"${tempdir}/ref\"\nref_benchmark=\"${ref_tempdir}/benchmark-`echo -n ${reference_ref}|tr -s '/' '-'`.txt\"\nlocal_benchmark=\"`pwd`/benchmark-local.txt\"\n\necho \"=== ${reference_ref} (${ref_tempdir})\"\ngit clone ${reference_git} ${ref_tempdir} >/dev/null 2>/dev/null\npushd ${ref_tempdir} >/dev/null\ngit checkout ${reference_ref} >/dev/null 2>/dev/null\ngo test -bench=. -benchmem | tee ${ref_benchmark}\npopd >/dev/null\n\necho \"\"\necho \"=== local\"\ngo test -bench=. -benchmem  | tee ${local_benchmark}\n\necho \"\"\necho \"=== diff\"\nbenchstat -delta-test=none ${ref_benchmark} ${local_benchmark}"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/benchmark.toml",
    "content": "################################################################################\n## Comment\n\n# Speak your mind with the hash symbol. They go from the symbol to the end of\n# the line.\n\n\n################################################################################\n## Table\n\n# Tables (also known as hash tables or dictionaries) are collections of\n# key/value pairs. They appear in square brackets on a line by themselves.\n\n[table]\n\nkey = \"value\" # Yeah, you can do this.\n\n# Nested tables are denoted by table names with dots in them. Name your tables\n# whatever crap you please, just don't use #, ., [ or ].\n\n[table.subtable]\n\nkey = \"another value\"\n\n# You don't need to specify all the super-tables if you don't want to. TOML\n# knows how to do it for you.\n\n# [x] you\n# [x.y] don't\n# [x.y.z] need these\n[x.y.z.w] # for this to work\n\n\n################################################################################\n## Inline Table\n\n# Inline tables provide a more compact syntax for expressing tables. They are\n# especially useful for grouped data that can otherwise quickly become verbose.\n# Inline tables are enclosed in curly braces `{` and `}`. No newlines are\n# allowed between the curly braces unless they are valid within a value.\n\n[table.inline]\n\nname = { first = \"Tom\", last = \"Preston-Werner\" }\npoint = { x = 1, y = 2 }\n\n\n################################################################################\n## String\n\n# There are four ways to express strings: basic, multi-line basic, literal, and\n# multi-line literal. All strings must contain only valid UTF-8 characters.\n\n[string.basic]\n\nbasic = \"I'm a string. \\\"You can quote me\\\". Name\\tJos\\u00E9\\nLocation\\tSF.\"\n\n[string.multiline]\n\n# The following strings are byte-for-byte equivalent:\nkey1 = \"One\\nTwo\"\nkey2 = \"\"\"One\\nTwo\"\"\"\nkey3 = \"\"\"\nOne\nTwo\"\"\"\n\n[string.multiline.continued]\n\n# The following strings are byte-for-byte equivalent:\nkey1 = \"The quick brown fox jumps over the lazy dog.\"\n\nkey2 = \"\"\"\nThe quick brown \\\n\n\n  fox jumps over \\\n    the lazy dog.\"\"\"\n\nkey3 = \"\"\"\\\n       The quick brown \\\n       fox jumps over \\\n       the lazy dog.\\\n       \"\"\"\n\n[string.literal]\n\n# What you see is what you get.\nwinpath  = 'C:\\Users\\nodejs\\templates'\nwinpath2 = '\\\\ServerX\\admin$\\system32\\'\nquoted   = 'Tom \"Dubs\" Preston-Werner'\nregex    = '<\\i\\c*\\s*>'\n\n\n[string.literal.multiline]\n\nregex2 = '''I [dw]on't need \\d{2} apples'''\nlines  = '''\nThe first newline is\ntrimmed in raw strings.\n   All other whitespace\n   is preserved.\n'''\n\n\n################################################################################\n## Integer\n\n# Integers are whole numbers. Positive numbers may be prefixed with a plus sign.\n# Negative numbers are prefixed with a minus sign.\n\n[integer]\n\nkey1 = +99\nkey2 = 42\nkey3 = 0\nkey4 = -17\n\n[integer.underscores]\n\n# For large numbers, you may use underscores to enhance readability. Each\n# underscore must be surrounded by at least one digit.\nkey1 = 1_000\nkey2 = 5_349_221\nkey3 = 1_2_3_4_5     # valid but inadvisable\n\n\n################################################################################\n## Float\n\n# A float consists of an integer part (which may be prefixed with a plus or\n# minus sign) followed by a fractional part and/or an exponent part.\n\n[float.fractional]\n\nkey1 = +1.0\nkey2 = 3.1415\nkey3 = -0.01\n\n[float.exponent]\n\nkey1 = 5e+22\nkey2 = 1e6\nkey3 = -2E-2\n\n[float.both]\n\nkey = 6.626e-34\n\n[float.underscores]\n\nkey1 = 9_224_617.445_991_228_313\nkey2 = 1e1_00\n\n\n################################################################################\n## Boolean\n\n# Booleans are just the tokens you're used to. Always lowercase.\n\n[boolean]\n\nTrue = true\nFalse = false\n\n\n################################################################################\n## Datetime\n\n# Datetimes are RFC 3339 dates.\n\n[datetime]\n\nkey1 = 1979-05-27T07:32:00Z\nkey2 = 1979-05-27T00:32:00-07:00\nkey3 = 1979-05-27T00:32:00.999999-07:00\n\n\n################################################################################\n## Array\n\n# Arrays are square brackets with other primitives inside. Whitespace is\n# ignored. Elements are separated by commas. Data types may not be mixed.\n\n[array]\n\nkey1 = [ 1, 2, 3 ]\nkey2 = [ \"red\", \"yellow\", \"green\" ]\nkey3 = [ [ 1, 2 ], [3, 4, 5] ]\n#key4 = [ [ 1, 2 ], [\"a\", \"b\", \"c\"] ] # this is ok\n\n# Arrays can also be multiline. So in addition to ignoring whitespace, arrays\n# also ignore newlines between the brackets.  Terminating commas are ok before\n# the closing bracket.\n\nkey5 = [\n  1, 2, 3\n]\nkey6 = [\n  1,\n  2, # this is ok\n]\n\n\n################################################################################\n## Array of Tables\n\n# These can be expressed by using a table name in double brackets. Each table\n# with the same double bracketed name will be an element in the array. The\n# tables are inserted in the order encountered.\n\n[[products]]\n\nname = \"Hammer\"\nsku = 738594937\n\n[[products]]\n\n[[products]]\n\nname = \"Nail\"\nsku = 284758393\ncolor = \"gray\"\n\n\n# You can create nested arrays of tables as well.\n\n[[fruit]]\n  name = \"apple\"\n\n  [fruit.physical]\n    color = \"red\"\n    shape = \"round\"\n\n  [[fruit.variety]]\n    name = \"red delicious\"\n\n  [[fruit.variety]]\n    name = \"granny smith\"\n\n[[fruit]]\n  name = \"banana\"\n\n  [[fruit.variety]]\n    name = \"plantain\"\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/benchmark.yml",
    "content": "---\narray:\n  key1:\n  - 1\n  - 2\n  - 3\n  key2:\n  - red\n  - yellow\n  - green\n  key3:\n  - - 1\n    - 2\n  - - 3\n    - 4\n    - 5\n  key4:\n  - - 1\n    - 2\n  - - a\n    - b\n    - c\n  key5:\n  - 1\n  - 2\n  - 3\n  key6:\n  - 1\n  - 2\nboolean:\n  'False': false\n  'True': true\ndatetime:\n  key1: '1979-05-27T07:32:00Z'\n  key2: '1979-05-27T00:32:00-07:00'\n  key3: '1979-05-27T00:32:00.999999-07:00'\nfloat:\n  both:\n    key: 6.626e-34\n  exponent:\n    key1: 5.0e+22\n    key2: 1000000\n    key3: -0.02\n  fractional:\n    key1: 1\n    key2: 3.1415\n    key3: -0.01\n  underscores:\n    key1: 9224617.445991227\n    key2: 1.0e+100\nfruit:\n- name: apple\n  physical:\n    color: red\n    shape: round\n  variety:\n  - name: red delicious\n  - name: granny smith\n- name: banana\n  variety:\n  - name: plantain\ninteger:\n  key1: 99\n  key2: 42\n  key3: 0\n  key4: -17\n  underscores:\n    key1: 1000\n    key2: 5349221\n    key3: 12345\nproducts:\n- name: Hammer\n  sku: 738594937\n- {}\n- color: gray\n  name: Nail\n  sku: 284758393\nstring:\n  basic:\n    basic: \"I'm a string. \\\"You can quote me\\\". Name\\tJosé\\nLocation\\tSF.\"\n  literal:\n    multiline:\n      lines: |\n        The first newline is\n        trimmed in raw strings.\n           All other whitespace\n           is preserved.\n      regex2: I [dw]on't need \\d{2} apples\n    quoted: Tom \"Dubs\" Preston-Werner\n    regex: \"<\\\\i\\\\c*\\\\s*>\"\n    winpath: C:\\Users\\nodejs\\templates\n    winpath2: \"\\\\\\\\ServerX\\\\admin$\\\\system32\\\\\"\n  multiline:\n    continued:\n      key1: The quick brown fox jumps over the lazy dog.\n      key2: The quick brown fox jumps over the lazy dog.\n      key3: The quick brown fox jumps over the lazy dog.\n    key1: |-\n      One\n      Two\n    key2: |-\n      One\n      Two\n    key3: |-\n      One\n      Two\ntable:\n  inline:\n    name:\n      first: Tom\n      last: Preston-Werner\n    point:\n      x: 1\n      y: 2\n  key: value\n  subtable:\n    key: another value\nx:\n  y:\n    z:\n      w: {}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/doc.go",
    "content": "// Package toml is a TOML parser and manipulation library.\n//\n// This version supports the specification as described in\n// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md\n//\n// Marshaling\n//\n// Go-toml can marshal and unmarshal TOML documents from and to data\n// structures.\n//\n// TOML document as a tree\n//\n// Go-toml can operate on a TOML document as a tree. Use one of the Load*\n// functions to parse TOML data and obtain a Tree instance, then one of its\n// methods to manipulate the tree.\n//\n// JSONPath-like queries\n//\n// The package github.com/pelletier/go-toml/query implements a system\n// similar to JSONPath to quickly retrieve elements of a TOML document using a\n// single expression. See the package documentation for more information.\n//\npackage toml\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/example-crlf.toml",
    "content": "# This is a TOML document. Boom.\r\n\r\ntitle = \"TOML Example\"\r\n\r\n[owner]\r\nname = \"Tom Preston-Werner\"\r\norganization = \"GitHub\"\r\nbio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\"\r\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\r\n\r\n[database]\r\nserver = \"192.168.1.1\"\r\nports = [ 8001, 8001, 8002 ]\r\nconnection_max = 5000\r\nenabled = true\r\n\r\n[servers]\r\n\r\n  # You can indent as you please. Tabs or spaces. TOML don't care.\r\n  [servers.alpha]\r\n  ip = \"10.0.0.1\"\r\n  dc = \"eqdc10\"\r\n\r\n  [servers.beta]\r\n  ip = \"10.0.0.2\"\r\n  dc = \"eqdc10\"\r\n\r\n[clients]\r\ndata = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it\r\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/example.toml",
    "content": "# This is a TOML document. Boom.\n\ntitle = \"TOML Example\"\n\n[owner]\nname = \"Tom Preston-Werner\"\norganization = \"GitHub\"\nbio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\"\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\n\n[database]\nserver = \"192.168.1.1\"\nports = [ 8001, 8001, 8002 ]\nconnection_max = 5000\nenabled = true\n\n[servers]\n\n  # You can indent as you please. Tabs or spaces. TOML don't care.\n  [servers.alpha]\n  ip = \"10.0.0.1\"\n  dc = \"eqdc10\"\n\n  [servers.beta]\n  ip = \"10.0.0.2\"\n  dc = \"eqdc10\"\n\n[clients]\ndata = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/fuzz.go",
    "content": "// +build gofuzz\n\npackage toml\n\nfunc Fuzz(data []byte) int {\n\ttree, err := LoadBytes(data)\n\tif err != nil {\n\t\tif tree != nil {\n\t\t\tpanic(\"tree must be nil if there is an error\")\n\t\t}\n\t\treturn 0\n\t}\n\n\tstr, err := tree.ToTomlString()\n\tif err != nil {\n\t\tif str != \"\" {\n\t\t\tpanic(`str must be \"\" if there is an error`)\n\t\t}\n\t\tpanic(err)\n\t}\n\n\ttree, err = Load(str)\n\tif err != nil {\n\t\tif tree != nil {\n\t\t\tpanic(\"tree must be nil if there is an error\")\n\t\t}\n\t\treturn 0\n\t}\n\n\treturn 1\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/fuzz.sh",
    "content": "#! /bin/sh\nset -eu\n\ngo get github.com/dvyukov/go-fuzz/go-fuzz\ngo get github.com/dvyukov/go-fuzz/go-fuzz-build\n\nif [ ! -e toml-fuzz.zip ]; then\n    go-fuzz-build github.com/pelletier/go-toml\nfi\n\nrm -fr fuzz\nmkdir -p fuzz/corpus\ncp *.toml fuzz/corpus\n\ngo-fuzz -bin=toml-fuzz.zip -workdir=fuzz\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/keysparsing.go",
    "content": "// Parsing keys handling both bare and quoted keys.\n\npackage toml\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"unicode\"\n)\n\n// Convert the bare key group string to an array.\n// The input supports double quotation to allow \".\" inside the key name,\n// but escape sequences are not supported. Lexers must unescape them beforehand.\nfunc parseKey(key string) ([]string, error) {\n\tgroups := []string{}\n\tvar buffer bytes.Buffer\n\tinQuotes := false\n\twasInQuotes := false\n\tignoreSpace := true\n\texpectDot := false\n\n\tfor _, char := range key {\n\t\tif ignoreSpace {\n\t\t\tif char == ' ' {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tignoreSpace = false\n\t\t}\n\t\tswitch char {\n\t\tcase '\"':\n\t\t\tif inQuotes {\n\t\t\t\tgroups = append(groups, buffer.String())\n\t\t\t\tbuffer.Reset()\n\t\t\t\twasInQuotes = true\n\t\t\t}\n\t\t\tinQuotes = !inQuotes\n\t\t\texpectDot = false\n\t\tcase '.':\n\t\t\tif inQuotes {\n\t\t\t\tbuffer.WriteRune(char)\n\t\t\t} else {\n\t\t\t\tif !wasInQuotes {\n\t\t\t\t\tif buffer.Len() == 0 {\n\t\t\t\t\t\treturn nil, errors.New(\"empty table key\")\n\t\t\t\t\t}\n\t\t\t\t\tgroups = append(groups, buffer.String())\n\t\t\t\t\tbuffer.Reset()\n\t\t\t\t}\n\t\t\t\tignoreSpace = true\n\t\t\t\texpectDot = false\n\t\t\t\twasInQuotes = false\n\t\t\t}\n\t\tcase ' ':\n\t\t\tif inQuotes {\n\t\t\t\tbuffer.WriteRune(char)\n\t\t\t} else {\n\t\t\t\texpectDot = true\n\t\t\t}\n\t\tdefault:\n\t\t\tif !inQuotes && !isValidBareChar(char) {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid bare character: %c\", char)\n\t\t\t}\n\t\t\tif !inQuotes && expectDot {\n\t\t\t\treturn nil, errors.New(\"what?\")\n\t\t\t}\n\t\t\tbuffer.WriteRune(char)\n\t\t\texpectDot = false\n\t\t}\n\t}\n\tif inQuotes {\n\t\treturn nil, errors.New(\"mismatched quotes\")\n\t}\n\tif buffer.Len() > 0 {\n\t\tgroups = append(groups, buffer.String())\n\t}\n\tif len(groups) == 0 {\n\t\treturn nil, errors.New(\"empty key\")\n\t}\n\treturn groups, nil\n}\n\nfunc isValidBareChar(r rune) bool {\n\treturn isAlphanumeric(r) || r == '-' || unicode.IsNumber(r)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/lexer.go",
    "content": "// TOML lexer.\n//\n// Written using the principles developed by Rob Pike in\n// http://www.youtube.com/watch?v=HxaD_trXwRE\n\npackage toml\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar dateRegexp *regexp.Regexp\n\n// Define state functions\ntype tomlLexStateFn func() tomlLexStateFn\n\n// Define lexer\ntype tomlLexer struct {\n\tinputIdx          int\n\tinput             []rune // Textual source\n\tcurrentTokenStart int\n\tcurrentTokenStop  int\n\ttokens            []token\n\tdepth             int\n\tline              int\n\tcol               int\n\tendbufferLine     int\n\tendbufferCol      int\n}\n\n// Basic read operations on input\n\nfunc (l *tomlLexer) read() rune {\n\tr := l.peek()\n\tif r == '\\n' {\n\t\tl.endbufferLine++\n\t\tl.endbufferCol = 1\n\t} else {\n\t\tl.endbufferCol++\n\t}\n\tl.inputIdx++\n\treturn r\n}\n\nfunc (l *tomlLexer) next() rune {\n\tr := l.read()\n\n\tif r != eof {\n\t\tl.currentTokenStop++\n\t}\n\treturn r\n}\n\nfunc (l *tomlLexer) ignore() {\n\tl.currentTokenStart = l.currentTokenStop\n\tl.line = l.endbufferLine\n\tl.col = l.endbufferCol\n}\n\nfunc (l *tomlLexer) skip() {\n\tl.next()\n\tl.ignore()\n}\n\nfunc (l *tomlLexer) fastForward(n int) {\n\tfor i := 0; i < n; i++ {\n\t\tl.next()\n\t}\n}\n\nfunc (l *tomlLexer) emitWithValue(t tokenType, value string) {\n\tl.tokens = append(l.tokens, token{\n\t\tPosition: Position{l.line, l.col},\n\t\ttyp:      t,\n\t\tval:      value,\n\t})\n\tl.ignore()\n}\n\nfunc (l *tomlLexer) emit(t tokenType) {\n\tl.emitWithValue(t, string(l.input[l.currentTokenStart:l.currentTokenStop]))\n}\n\nfunc (l *tomlLexer) peek() rune {\n\tif l.inputIdx >= len(l.input) {\n\t\treturn eof\n\t}\n\treturn l.input[l.inputIdx]\n}\n\nfunc (l *tomlLexer) peekString(size int) string {\n\tmaxIdx := len(l.input)\n\tupperIdx := l.inputIdx + size // FIXME: potential overflow\n\tif upperIdx > maxIdx {\n\t\tupperIdx = maxIdx\n\t}\n\treturn string(l.input[l.inputIdx:upperIdx])\n}\n\nfunc (l *tomlLexer) follow(next string) bool {\n\treturn next == l.peekString(len(next))\n}\n\n// Error management\n\nfunc (l *tomlLexer) errorf(format string, args ...interface{}) tomlLexStateFn {\n\tl.tokens = append(l.tokens, token{\n\t\tPosition: Position{l.line, l.col},\n\t\ttyp:      tokenError,\n\t\tval:      fmt.Sprintf(format, args...),\n\t})\n\treturn nil\n}\n\n// State functions\n\nfunc (l *tomlLexer) lexVoid() tomlLexStateFn {\n\tfor {\n\t\tnext := l.peek()\n\t\tswitch next {\n\t\tcase '[':\n\t\t\treturn l.lexTableKey\n\t\tcase '#':\n\t\t\treturn l.lexComment(l.lexVoid)\n\t\tcase '=':\n\t\t\treturn l.lexEqual\n\t\tcase '\\r':\n\t\t\tfallthrough\n\t\tcase '\\n':\n\t\t\tl.skip()\n\t\t\tcontinue\n\t\t}\n\n\t\tif isSpace(next) {\n\t\t\tl.skip()\n\t\t}\n\n\t\tif l.depth > 0 {\n\t\t\treturn l.lexRvalue\n\t\t}\n\n\t\tif isKeyStartChar(next) {\n\t\t\treturn l.lexKey\n\t\t}\n\n\t\tif next == eof {\n\t\t\tl.next()\n\t\t\tbreak\n\t\t}\n\t}\n\n\tl.emit(tokenEOF)\n\treturn nil\n}\n\nfunc (l *tomlLexer) lexRvalue() tomlLexStateFn {\n\tfor {\n\t\tnext := l.peek()\n\t\tswitch next {\n\t\tcase '.':\n\t\t\treturn l.errorf(\"cannot start float with a dot\")\n\t\tcase '=':\n\t\t\treturn l.lexEqual\n\t\tcase '[':\n\t\t\tl.depth++\n\t\t\treturn l.lexLeftBracket\n\t\tcase ']':\n\t\t\tl.depth--\n\t\t\treturn l.lexRightBracket\n\t\tcase '{':\n\t\t\treturn l.lexLeftCurlyBrace\n\t\tcase '}':\n\t\t\treturn l.lexRightCurlyBrace\n\t\tcase '#':\n\t\t\treturn l.lexComment(l.lexRvalue)\n\t\tcase '\"':\n\t\t\treturn l.lexString\n\t\tcase '\\'':\n\t\t\treturn l.lexLiteralString\n\t\tcase ',':\n\t\t\treturn l.lexComma\n\t\tcase '\\r':\n\t\t\tfallthrough\n\t\tcase '\\n':\n\t\t\tl.skip()\n\t\t\tif l.depth == 0 {\n\t\t\t\treturn l.lexVoid\n\t\t\t}\n\t\t\treturn l.lexRvalue\n\t\tcase '_':\n\t\t\treturn l.errorf(\"cannot start number with underscore\")\n\t\t}\n\n\t\tif l.follow(\"true\") {\n\t\t\treturn l.lexTrue\n\t\t}\n\n\t\tif l.follow(\"false\") {\n\t\t\treturn l.lexFalse\n\t\t}\n\n\t\tif l.follow(\"inf\") {\n\t\t\treturn l.lexInf\n\t\t}\n\n\t\tif l.follow(\"nan\") {\n\t\t\treturn l.lexNan\n\t\t}\n\n\t\tif isSpace(next) {\n\t\t\tl.skip()\n\t\t\tcontinue\n\t\t}\n\n\t\tif next == eof {\n\t\t\tl.next()\n\t\t\tbreak\n\t\t}\n\n\t\tpossibleDate := l.peekString(35)\n\t\tdateMatch := dateRegexp.FindString(possibleDate)\n\t\tif dateMatch != \"\" {\n\t\t\tl.fastForward(len(dateMatch))\n\t\t\treturn l.lexDate\n\t\t}\n\n\t\tif next == '+' || next == '-' || isDigit(next) {\n\t\t\treturn l.lexNumber\n\t\t}\n\n\t\tif isAlphanumeric(next) {\n\t\t\treturn l.lexKey\n\t\t}\n\n\t\treturn l.errorf(\"no value can start with %c\", next)\n\t}\n\n\tl.emit(tokenEOF)\n\treturn nil\n}\n\nfunc (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenLeftCurlyBrace)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenRightCurlyBrace)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexDate() tomlLexStateFn {\n\tl.emit(tokenDate)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexTrue() tomlLexStateFn {\n\tl.fastForward(4)\n\tl.emit(tokenTrue)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexFalse() tomlLexStateFn {\n\tl.fastForward(5)\n\tl.emit(tokenFalse)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexInf() tomlLexStateFn {\n\tl.fastForward(3)\n\tl.emit(tokenInf)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexNan() tomlLexStateFn {\n\tl.fastForward(3)\n\tl.emit(tokenNan)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexEqual() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenEqual)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexComma() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenComma)\n\treturn l.lexRvalue\n}\n\n// Parse the key and emits its value without escape sequences.\n// bare keys, basic string keys and literal string keys are supported.\nfunc (l *tomlLexer) lexKey() tomlLexStateFn {\n\tgrowingString := \"\"\n\n\tfor r := l.peek(); isKeyChar(r) || r == '\\n' || r == '\\r'; r = l.peek() {\n\t\tif r == '\"' {\n\t\t\tl.next()\n\t\t\tstr, err := l.lexStringAsString(`\"`, false, true)\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\t\t\tgrowingString += str\n\t\t\tl.next()\n\t\t\tcontinue\n\t\t} else if r == '\\'' {\n\t\t\tl.next()\n\t\t\tstr, err := l.lexLiteralStringAsString(`'`, false)\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\t\t\tgrowingString += str\n\t\t\tl.next()\n\t\t\tcontinue\n\t\t} else if r == '\\n' {\n\t\t\treturn l.errorf(\"keys cannot contain new lines\")\n\t\t} else if isSpace(r) {\n\t\t\tbreak\n\t\t} else if !isValidBareChar(r) {\n\t\t\treturn l.errorf(\"keys cannot contain %c character\", r)\n\t\t}\n\t\tgrowingString += string(r)\n\t\tl.next()\n\t}\n\tl.emitWithValue(tokenKey, growingString)\n\treturn l.lexVoid\n}\n\nfunc (l *tomlLexer) lexComment(previousState tomlLexStateFn) tomlLexStateFn {\n\treturn func() tomlLexStateFn {\n\t\tfor next := l.peek(); next != '\\n' && next != eof; next = l.peek() {\n\t\t\tif next == '\\r' && l.follow(\"\\r\\n\") {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t\tl.ignore()\n\t\treturn previousState\n\t}\n}\n\nfunc (l *tomlLexer) lexLeftBracket() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenLeftBracket)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexLiteralStringAsString(terminator string, discardLeadingNewLine bool) (string, error) {\n\tgrowingString := \"\"\n\n\tif discardLeadingNewLine {\n\t\tif l.follow(\"\\r\\n\") {\n\t\t\tl.skip()\n\t\t\tl.skip()\n\t\t} else if l.peek() == '\\n' {\n\t\t\tl.skip()\n\t\t}\n\t}\n\n\t// find end of string\n\tfor {\n\t\tif l.follow(terminator) {\n\t\t\treturn growingString, nil\n\t\t}\n\n\t\tnext := l.peek()\n\t\tif next == eof {\n\t\t\tbreak\n\t\t}\n\t\tgrowingString += string(l.next())\n\t}\n\n\treturn \"\", errors.New(\"unclosed string\")\n}\n\nfunc (l *tomlLexer) lexLiteralString() tomlLexStateFn {\n\tl.skip()\n\n\t// handle special case for triple-quote\n\tterminator := \"'\"\n\tdiscardLeadingNewLine := false\n\tif l.follow(\"''\") {\n\t\tl.skip()\n\t\tl.skip()\n\t\tterminator = \"'''\"\n\t\tdiscardLeadingNewLine = true\n\t}\n\n\tstr, err := l.lexLiteralStringAsString(terminator, discardLeadingNewLine)\n\tif err != nil {\n\t\treturn l.errorf(err.Error())\n\t}\n\n\tl.emitWithValue(tokenString, str)\n\tl.fastForward(len(terminator))\n\tl.ignore()\n\treturn l.lexRvalue\n}\n\n// Lex a string and return the results as a string.\n// Terminator is the substring indicating the end of the token.\n// The resulting string does not include the terminator.\nfunc (l *tomlLexer) lexStringAsString(terminator string, discardLeadingNewLine, acceptNewLines bool) (string, error) {\n\tgrowingString := \"\"\n\n\tif discardLeadingNewLine {\n\t\tif l.follow(\"\\r\\n\") {\n\t\t\tl.skip()\n\t\t\tl.skip()\n\t\t} else if l.peek() == '\\n' {\n\t\t\tl.skip()\n\t\t}\n\t}\n\n\tfor {\n\t\tif l.follow(terminator) {\n\t\t\treturn growingString, nil\n\t\t}\n\n\t\tif l.follow(\"\\\\\") {\n\t\t\tl.next()\n\t\t\tswitch l.peek() {\n\t\t\tcase '\\r':\n\t\t\t\tfallthrough\n\t\t\tcase '\\n':\n\t\t\t\tfallthrough\n\t\t\tcase '\\t':\n\t\t\t\tfallthrough\n\t\t\tcase ' ':\n\t\t\t\t// skip all whitespace chars following backslash\n\t\t\t\tfor strings.ContainsRune(\"\\r\\n\\t \", l.peek()) {\n\t\t\t\t\tl.next()\n\t\t\t\t}\n\t\t\tcase '\"':\n\t\t\t\tgrowingString += \"\\\"\"\n\t\t\t\tl.next()\n\t\t\tcase 'n':\n\t\t\t\tgrowingString += \"\\n\"\n\t\t\t\tl.next()\n\t\t\tcase 'b':\n\t\t\t\tgrowingString += \"\\b\"\n\t\t\t\tl.next()\n\t\t\tcase 'f':\n\t\t\t\tgrowingString += \"\\f\"\n\t\t\t\tl.next()\n\t\t\tcase '/':\n\t\t\t\tgrowingString += \"/\"\n\t\t\t\tl.next()\n\t\t\tcase 't':\n\t\t\t\tgrowingString += \"\\t\"\n\t\t\t\tl.next()\n\t\t\tcase 'r':\n\t\t\t\tgrowingString += \"\\r\"\n\t\t\t\tl.next()\n\t\t\tcase '\\\\':\n\t\t\t\tgrowingString += \"\\\\\"\n\t\t\t\tl.next()\n\t\t\tcase 'u':\n\t\t\t\tl.next()\n\t\t\t\tcode := \"\"\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tc := l.peek()\n\t\t\t\t\tif !isHexDigit(c) {\n\t\t\t\t\t\treturn \"\", errors.New(\"unfinished unicode escape\")\n\t\t\t\t\t}\n\t\t\t\t\tl.next()\n\t\t\t\t\tcode = code + string(c)\n\t\t\t\t}\n\t\t\t\tintcode, err := strconv.ParseInt(code, 16, 32)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", errors.New(\"invalid unicode escape: \\\\u\" + code)\n\t\t\t\t}\n\t\t\t\tgrowingString += string(rune(intcode))\n\t\t\tcase 'U':\n\t\t\t\tl.next()\n\t\t\t\tcode := \"\"\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tc := l.peek()\n\t\t\t\t\tif !isHexDigit(c) {\n\t\t\t\t\t\treturn \"\", errors.New(\"unfinished unicode escape\")\n\t\t\t\t\t}\n\t\t\t\t\tl.next()\n\t\t\t\t\tcode = code + string(c)\n\t\t\t\t}\n\t\t\t\tintcode, err := strconv.ParseInt(code, 16, 64)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", errors.New(\"invalid unicode escape: \\\\U\" + code)\n\t\t\t\t}\n\t\t\t\tgrowingString += string(rune(intcode))\n\t\t\tdefault:\n\t\t\t\treturn \"\", errors.New(\"invalid escape sequence: \\\\\" + string(l.peek()))\n\t\t\t}\n\t\t} else {\n\t\t\tr := l.peek()\n\n\t\t\tif 0x00 <= r && r <= 0x1F && !(acceptNewLines && (r == '\\n' || r == '\\r')) {\n\t\t\t\treturn \"\", fmt.Errorf(\"unescaped control character %U\", r)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tgrowingString += string(r)\n\t\t}\n\n\t\tif l.peek() == eof {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"unclosed string\")\n}\n\nfunc (l *tomlLexer) lexString() tomlLexStateFn {\n\tl.skip()\n\n\t// handle special case for triple-quote\n\tterminator := `\"`\n\tdiscardLeadingNewLine := false\n\tacceptNewLines := false\n\tif l.follow(`\"\"`) {\n\t\tl.skip()\n\t\tl.skip()\n\t\tterminator = `\"\"\"`\n\t\tdiscardLeadingNewLine = true\n\t\tacceptNewLines = true\n\t}\n\n\tstr, err := l.lexStringAsString(terminator, discardLeadingNewLine, acceptNewLines)\n\n\tif err != nil {\n\t\treturn l.errorf(err.Error())\n\t}\n\n\tl.emitWithValue(tokenString, str)\n\tl.fastForward(len(terminator))\n\tl.ignore()\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexTableKey() tomlLexStateFn {\n\tl.next()\n\n\tif l.peek() == '[' {\n\t\t// token '[[' signifies an array of tables\n\t\tl.next()\n\t\tl.emit(tokenDoubleLeftBracket)\n\t\treturn l.lexInsideTableArrayKey\n\t}\n\t// vanilla table key\n\tl.emit(tokenLeftBracket)\n\treturn l.lexInsideTableKey\n}\n\n// Parse the key till \"]]\", but only bare keys are supported\nfunc (l *tomlLexer) lexInsideTableArrayKey() tomlLexStateFn {\n\tfor r := l.peek(); r != eof; r = l.peek() {\n\t\tswitch r {\n\t\tcase ']':\n\t\t\tif l.currentTokenStop > l.currentTokenStart {\n\t\t\t\tl.emit(tokenKeyGroupArray)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tif l.peek() != ']' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t\tl.emit(tokenDoubleRightBracket)\n\t\t\treturn l.lexVoid\n\t\tcase '[':\n\t\t\treturn l.errorf(\"table array key cannot contain ']'\")\n\t\tdefault:\n\t\t\tl.next()\n\t\t}\n\t}\n\treturn l.errorf(\"unclosed table array key\")\n}\n\n// Parse the key till \"]\" but only bare keys are supported\nfunc (l *tomlLexer) lexInsideTableKey() tomlLexStateFn {\n\tfor r := l.peek(); r != eof; r = l.peek() {\n\t\tswitch r {\n\t\tcase ']':\n\t\t\tif l.currentTokenStop > l.currentTokenStart {\n\t\t\t\tl.emit(tokenKeyGroup)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tl.emit(tokenRightBracket)\n\t\t\treturn l.lexVoid\n\t\tcase '[':\n\t\t\treturn l.errorf(\"table key cannot contain ']'\")\n\t\tdefault:\n\t\t\tl.next()\n\t\t}\n\t}\n\treturn l.errorf(\"unclosed table key\")\n}\n\nfunc (l *tomlLexer) lexRightBracket() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenRightBracket)\n\treturn l.lexRvalue\n}\n\ntype validRuneFn func(r rune) bool\n\nfunc isValidHexRune(r rune) bool {\n\treturn r >= 'a' && r <= 'f' ||\n\t\tr >= 'A' && r <= 'F' ||\n\t\tr >= '0' && r <= '9' ||\n\t\tr == '_'\n}\n\nfunc isValidOctalRune(r rune) bool {\n\treturn r >= '0' && r <= '7' || r == '_'\n}\n\nfunc isValidBinaryRune(r rune) bool {\n\treturn r == '0' || r == '1' || r == '_'\n}\n\nfunc (l *tomlLexer) lexNumber() tomlLexStateFn {\n\tr := l.peek()\n\n\tif r == '0' {\n\t\tfollow := l.peekString(2)\n\t\tif len(follow) == 2 {\n\t\t\tvar isValidRune validRuneFn\n\t\t\tswitch follow[1] {\n\t\t\tcase 'x':\n\t\t\t\tisValidRune = isValidHexRune\n\t\t\tcase 'o':\n\t\t\t\tisValidRune = isValidOctalRune\n\t\t\tcase 'b':\n\t\t\t\tisValidRune = isValidBinaryRune\n\t\t\tdefault:\n\t\t\t\tif follow[1] >= 'a' && follow[1] <= 'z' || follow[1] >= 'A' && follow[1] <= 'Z' {\n\t\t\t\t\treturn l.errorf(\"unknown number base: %s. possible options are x (hex) o (octal) b (binary)\", string(follow[1]))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif isValidRune != nil {\n\t\t\t\tl.next()\n\t\t\t\tl.next()\n\t\t\t\tdigitSeen := false\n\t\t\t\tfor {\n\t\t\t\t\tnext := l.peek()\n\t\t\t\t\tif !isValidRune(next) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdigitSeen = true\n\t\t\t\t\tl.next()\n\t\t\t\t}\n\n\t\t\t\tif !digitSeen {\n\t\t\t\t\treturn l.errorf(\"number needs at least one digit\")\n\t\t\t\t}\n\n\t\t\t\tl.emit(tokenInteger)\n\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t}\n\t}\n\n\tif r == '+' || r == '-' {\n\t\tl.next()\n\t\tif l.follow(\"inf\") {\n\t\t\treturn l.lexInf\n\t\t}\n\t\tif l.follow(\"nan\") {\n\t\t\treturn l.lexNan\n\t\t}\n\t}\n\n\tpointSeen := false\n\texpSeen := false\n\tdigitSeen := false\n\tfor {\n\t\tnext := l.peek()\n\t\tif next == '.' {\n\t\t\tif pointSeen {\n\t\t\t\treturn l.errorf(\"cannot have two dots in one float\")\n\t\t\t}\n\t\t\tl.next()\n\t\t\tif !isDigit(l.peek()) {\n\t\t\t\treturn l.errorf(\"float cannot end with a dot\")\n\t\t\t}\n\t\t\tpointSeen = true\n\t\t} else if next == 'e' || next == 'E' {\n\t\t\texpSeen = true\n\t\t\tl.next()\n\t\t\tr := l.peek()\n\t\t\tif r == '+' || r == '-' {\n\t\t\t\tl.next()\n\t\t\t}\n\t\t} else if isDigit(next) {\n\t\t\tdigitSeen = true\n\t\t\tl.next()\n\t\t} else if next == '_' {\n\t\t\tl.next()\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t\tif pointSeen && !digitSeen {\n\t\t\treturn l.errorf(\"cannot start float with a dot\")\n\t\t}\n\t}\n\n\tif !digitSeen {\n\t\treturn l.errorf(\"no digit in that number\")\n\t}\n\tif pointSeen || expSeen {\n\t\tl.emit(tokenFloat)\n\t} else {\n\t\tl.emit(tokenInteger)\n\t}\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) run() {\n\tfor state := l.lexVoid; state != nil; {\n\t\tstate = state()\n\t}\n}\n\nfunc init() {\n\tdateRegexp = regexp.MustCompile(`^\\d{1,4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})`)\n}\n\n// Entry point\nfunc lexToml(inputBytes []byte) []token {\n\trunes := bytes.Runes(inputBytes)\n\tl := &tomlLexer{\n\t\tinput:         runes,\n\t\ttokens:        make([]token, 0, 256),\n\t\tline:          1,\n\t\tcol:           1,\n\t\tendbufferLine: 1,\n\t\tendbufferCol:  1,\n\t}\n\tl.run()\n\treturn l.tokens\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/marshal.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst tagKeyMultiline = \"multiline\"\n\ntype tomlOpts struct {\n\tname      string\n\tcomment   string\n\tcommented bool\n\tmultiline bool\n\tinclude   bool\n\tomitempty bool\n}\n\ntype encOpts struct {\n\tquoteMapKeys            bool\n\tarraysOneElementPerLine bool\n}\n\nvar encOptsDefaults = encOpts{\n\tquoteMapKeys: false,\n}\n\nvar timeType = reflect.TypeOf(time.Time{})\nvar marshalerType = reflect.TypeOf(new(Marshaler)).Elem()\n\n// Check if the given marshall type maps to a Tree primitive\nfunc isPrimitive(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isPrimitive(mtype.Elem())\n\tcase reflect.Bool:\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Struct:\n\t\treturn mtype == timeType || isCustomMarshaler(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshall type maps to a Tree slice\nfunc isTreeSlice(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Slice:\n\t\treturn !isOtherSlice(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshall type maps to a non-Tree slice\nfunc isOtherSlice(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isOtherSlice(mtype.Elem())\n\tcase reflect.Slice:\n\t\treturn isPrimitive(mtype.Elem()) || isOtherSlice(mtype.Elem())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshall type maps to a Tree\nfunc isTree(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Map:\n\t\treturn true\n\tcase reflect.Struct:\n\t\treturn !isPrimitive(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isCustomMarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(marshalerType)\n}\n\nfunc callCustomMarshaler(mval reflect.Value) ([]byte, error) {\n\treturn mval.Interface().(Marshaler).MarshalTOML()\n}\n\n// Marshaler is the interface implemented by types that\n// can marshal themselves into valid TOML.\ntype Marshaler interface {\n\tMarshalTOML() ([]byte, error)\n}\n\n/*\nMarshal returns the TOML encoding of v.  Behavior is similar to the Go json\nencoder, except that there is no concept of a Marshaler interface or MarshalTOML\nfunction for sub-structs, and currently only definite types can be marshaled\n(i.e. no `interface{}`).\n\nThe following struct annotations are supported:\n\n  toml:\"Field\"      Overrides the field's name to output.\n  omitempty         When set, empty values and groups are not emitted.\n  comment:\"comment\" Emits a # comment on the same line. This supports new lines.\n  commented:\"true\"  Emits the value as commented.\n\nNote that pointers are automatically assigned the \"omitempty\" option, as TOML\nexplicitly does not handle null values (saying instead the label should be\ndropped).\n\nTree structural types and corresponding marshal types:\n\n  *Tree                            (*)struct, (*)map[string]interface{}\n  []*Tree                          (*)[](*)struct, (*)[](*)map[string]interface{}\n  []interface{} (as interface{})   (*)[]primitive, (*)[]([]interface{})\n  interface{}                      (*)primitive\n\nTree primitive types and corresponding marshal types:\n\n  uint64     uint, uint8-uint64, pointers to same\n  int64      int, int8-uint64, pointers to same\n  float64    float32, float64, pointers to same\n  string     string, pointers to same\n  bool       bool, pointers to same\n  time.Time  time.Time{}, pointers to same\n*/\nfunc Marshal(v interface{}) ([]byte, error) {\n\treturn NewEncoder(nil).marshal(v)\n}\n\n// Encoder writes TOML values to an output stream.\ntype Encoder struct {\n\tw io.Writer\n\tencOpts\n}\n\n// NewEncoder returns a new encoder that writes to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tw:       w,\n\t\tencOpts: encOptsDefaults,\n\t}\n}\n\n// Encode writes the TOML encoding of v to the stream.\n//\n// See the documentation for Marshal for details.\nfunc (e *Encoder) Encode(v interface{}) error {\n\tb, err := e.marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := e.w.Write(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// QuoteMapKeys sets up the encoder to encode\n// maps with string type keys with quoted TOML keys.\n//\n// This relieves the character limitations on map keys.\nfunc (e *Encoder) QuoteMapKeys(v bool) *Encoder {\n\te.quoteMapKeys = v\n\treturn e\n}\n\n// ArraysWithOneElementPerLine sets up the encoder to encode arrays\n// with more than one element on multiple lines instead of one.\n//\n// For example:\n//\n//   A = [1,2,3]\n//\n// Becomes\n//\n//   A = [\n//     1,\n//     2,\n//     3,\n//   ]\nfunc (e *Encoder) ArraysWithOneElementPerLine(v bool) *Encoder {\n\te.arraysOneElementPerLine = v\n\treturn e\n}\n\nfunc (e *Encoder) marshal(v interface{}) ([]byte, error) {\n\tmtype := reflect.TypeOf(v)\n\tif mtype.Kind() != reflect.Struct {\n\t\treturn []byte{}, errors.New(\"Only a struct can be marshaled to TOML\")\n\t}\n\tsval := reflect.ValueOf(v)\n\tif isCustomMarshaler(mtype) {\n\t\treturn callCustomMarshaler(sval)\n\t}\n\tt, err := e.valueToTree(mtype, sval)\n\tif err != nil {\n\t\treturn []byte{}, err\n\t}\n\n\tvar buf bytes.Buffer\n\t_, err = t.writeTo(&buf, \"\", \"\", 0, e.arraysOneElementPerLine)\n\n\treturn buf.Bytes(), err\n}\n\n// Convert given marshal struct or map value to toml tree\nfunc (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn e.valueToTree(mtype.Elem(), mval.Elem())\n\t}\n\ttval := newTree()\n\tswitch mtype.Kind() {\n\tcase reflect.Struct:\n\t\tfor i := 0; i < mtype.NumField(); i++ {\n\t\t\tmtypef, mvalf := mtype.Field(i), mval.Field(i)\n\t\t\topts := tomlOptions(mtypef)\n\t\t\tif opts.include && (!opts.omitempty || !isZero(mvalf)) {\n\t\t\t\tval, err := e.valueToToml(mtypef.Type, mvalf)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\ttval.SetWithOptions(opts.name, SetOptions{\n\t\t\t\t\tComment:   opts.comment,\n\t\t\t\t\tCommented: opts.commented,\n\t\t\t\t\tMultiline: opts.multiline,\n\t\t\t\t}, val)\n\t\t\t}\n\t\t}\n\tcase reflect.Map:\n\t\tfor _, key := range mval.MapKeys() {\n\t\t\tmvalf := mval.MapIndex(key)\n\t\t\tval, err := e.valueToToml(mtype.Elem(), mvalf)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif e.quoteMapKeys {\n\t\t\t\tkeyStr, err := tomlValueStringRepresentation(key.String(), \"\", e.arraysOneElementPerLine)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\ttval.SetPath([]string{keyStr}, val)\n\t\t\t} else {\n\t\t\t\ttval.Set(key.String(), val)\n\t\t\t}\n\t\t}\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal slice to slice of Toml trees\nfunc (e *Encoder) valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*Tree, error) {\n\ttval := make([]*Tree, mval.Len(), mval.Len())\n\tfor i := 0; i < mval.Len(); i++ {\n\t\tval, err := e.valueToTree(mtype.Elem(), mval.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttval[i] = val\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal slice to slice of toml values\nfunc (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) {\n\ttval := make([]interface{}, mval.Len(), mval.Len())\n\tfor i := 0; i < mval.Len(); i++ {\n\t\tval, err := e.valueToToml(mtype.Elem(), mval.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttval[i] = val\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal value to toml value\nfunc (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn e.valueToToml(mtype.Elem(), mval.Elem())\n\t}\n\tswitch {\n\tcase isCustomMarshaler(mtype):\n\t\treturn callCustomMarshaler(mval)\n\tcase isTree(mtype):\n\t\treturn e.valueToTree(mtype, mval)\n\tcase isTreeSlice(mtype):\n\t\treturn e.valueToTreeSlice(mtype, mval)\n\tcase isOtherSlice(mtype):\n\t\treturn e.valueToOtherSlice(mtype, mval)\n\tdefault:\n\t\tswitch mtype.Kind() {\n\t\tcase reflect.Bool:\n\t\t\treturn mval.Bool(), nil\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\treturn mval.Int(), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\treturn mval.Uint(), nil\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\treturn mval.Float(), nil\n\t\tcase reflect.String:\n\t\t\treturn mval.String(), nil\n\t\tcase reflect.Struct:\n\t\t\treturn mval.Interface().(time.Time), nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"Marshal can't handle %v(%v)\", mtype, mtype.Kind())\n\t\t}\n\t}\n}\n\n// Unmarshal attempts to unmarshal the Tree into a Go struct pointed by v.\n// Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for\n// sub-structs, and only definite types can be unmarshaled.\nfunc (t *Tree) Unmarshal(v interface{}) error {\n\td := Decoder{tval: t}\n\treturn d.unmarshal(v)\n}\n\n// Marshal returns the TOML encoding of Tree.\n// See Marshal() documentation for types mapping table.\nfunc (t *Tree) Marshal() ([]byte, error) {\n\tvar buf bytes.Buffer\n\terr := NewEncoder(&buf).Encode(t)\n\treturn buf.Bytes(), err\n}\n\n// Unmarshal parses the TOML-encoded data and stores the result in the value\n// pointed to by v. Behavior is similar to the Go json encoder, except that there\n// is no concept of an Unmarshaler interface or UnmarshalTOML function for\n// sub-structs, and currently only definite types can be unmarshaled to (i.e. no\n// `interface{}`).\n//\n// The following struct annotations are supported:\n//\n//   toml:\"Field\" Overrides the field's name to map to.\n//\n// See Marshal() documentation for types mapping table.\nfunc Unmarshal(data []byte, v interface{}) error {\n\tt, err := LoadReader(bytes.NewReader(data))\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn t.Unmarshal(v)\n}\n\n// Decoder reads and decodes TOML values from an input stream.\ntype Decoder struct {\n\tr    io.Reader\n\ttval *Tree\n\tencOpts\n}\n\n// NewDecoder returns a new decoder that reads from r.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tr:       r,\n\t\tencOpts: encOptsDefaults,\n\t}\n}\n\n// Decode reads a TOML-encoded value from it's input\n// and unmarshals it in the value pointed at by v.\n//\n// See the documentation for Marshal for details.\nfunc (d *Decoder) Decode(v interface{}) error {\n\tvar err error\n\td.tval, err = LoadReader(d.r)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d.unmarshal(v)\n}\n\nfunc (d *Decoder) unmarshal(v interface{}) error {\n\tmtype := reflect.TypeOf(v)\n\tif mtype.Kind() != reflect.Ptr || mtype.Elem().Kind() != reflect.Struct {\n\t\treturn errors.New(\"Only a pointer to struct can be unmarshaled from TOML\")\n\t}\n\n\tsval, err := d.valueFromTree(mtype.Elem(), d.tval)\n\tif err != nil {\n\t\treturn err\n\t}\n\treflect.ValueOf(v).Elem().Set(sval)\n\treturn nil\n}\n\n// Convert toml tree to marshal struct or map, using marshal type\nfunc (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree) (reflect.Value, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn d.unwrapPointer(mtype, tval)\n\t}\n\tvar mval reflect.Value\n\tswitch mtype.Kind() {\n\tcase reflect.Struct:\n\t\tmval = reflect.New(mtype).Elem()\n\t\tfor i := 0; i < mtype.NumField(); i++ {\n\t\t\tmtypef := mtype.Field(i)\n\t\t\topts := tomlOptions(mtypef)\n\t\t\tif opts.include {\n\t\t\t\tbaseKey := opts.name\n\t\t\t\tkeysToTry := []string{baseKey, strings.ToLower(baseKey), strings.ToTitle(baseKey)}\n\t\t\t\tfor _, key := range keysToTry {\n\t\t\t\t\texists := tval.Has(key)\n\t\t\t\t\tif !exists {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tval := tval.Get(key)\n\t\t\t\t\tmvalf, err := d.valueFromToml(mtypef.Type, val)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn mval, formatError(err, tval.GetPosition(key))\n\t\t\t\t\t}\n\t\t\t\t\tmval.Field(i).Set(mvalf)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Map:\n\t\tmval = reflect.MakeMap(mtype)\n\t\tfor _, key := range tval.Keys() {\n\t\t\t// TODO: path splits key\n\t\t\tval := tval.GetPath([]string{key})\n\t\t\tmvalf, err := d.valueFromToml(mtype.Elem(), val)\n\t\t\tif err != nil {\n\t\t\t\treturn mval, formatError(err, tval.GetPosition(key))\n\t\t\t}\n\t\t\tmval.SetMapIndex(reflect.ValueOf(key), mvalf)\n\t\t}\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal struct/map slice, using marshal type\nfunc (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) {\n\tmval := reflect.MakeSlice(mtype, len(tval), len(tval))\n\tfor i := 0; i < len(tval); i++ {\n\t\tval, err := d.valueFromTree(mtype.Elem(), tval[i])\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal primitive slice, using marshal type\nfunc (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) {\n\tmval := reflect.MakeSlice(mtype, len(tval), len(tval))\n\tfor i := 0; i < len(tval); i++ {\n\t\tval, err := d.valueFromToml(mtype.Elem(), tval[i])\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal value, using marshal type\nfunc (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}) (reflect.Value, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn d.unwrapPointer(mtype, tval)\n\t}\n\n\tswitch tval.(type) {\n\tcase *Tree:\n\t\tif isTree(mtype) {\n\t\t\treturn d.valueFromTree(mtype, tval.(*Tree))\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to a tree\", tval, tval)\n\tcase []*Tree:\n\t\tif isTreeSlice(mtype) {\n\t\t\treturn d.valueFromTreeSlice(mtype, tval.([]*Tree))\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to trees\", tval, tval)\n\tcase []interface{}:\n\t\tif isOtherSlice(mtype) {\n\t\t\treturn d.valueFromOtherSlice(mtype, tval.([]interface{}))\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to a slice\", tval, tval)\n\tdefault:\n\t\tswitch mtype.Kind() {\n\t\tcase reflect.Bool, reflect.Struct:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\t// if this passes for when mtype is reflect.Struct, tval is a time.Time\n\t\t\tif !val.Type().ConvertibleTo(mtype) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.String:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\t// stupidly, int64 is convertible to string. So special case this.\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Int()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif val.Int() < 0 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) is negative so does not fit in %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowUint(uint64(val.Int())) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Float()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tdefault:\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v(%v)\", tval, tval, mtype, mtype.Kind())\n\t\t}\n\t}\n}\n\nfunc (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}) (reflect.Value, error) {\n\tval, err := d.valueFromToml(mtype.Elem(), tval)\n\tif err != nil {\n\t\treturn reflect.ValueOf(nil), err\n\t}\n\tmval := reflect.New(mtype.Elem())\n\tmval.Elem().Set(val)\n\treturn mval, nil\n}\n\nfunc tomlOptions(vf reflect.StructField) tomlOpts {\n\ttag := vf.Tag.Get(\"toml\")\n\tparse := strings.Split(tag, \",\")\n\tvar comment string\n\tif c := vf.Tag.Get(\"comment\"); c != \"\" {\n\t\tcomment = c\n\t}\n\tcommented, _ := strconv.ParseBool(vf.Tag.Get(\"commented\"))\n\tmultiline, _ := strconv.ParseBool(vf.Tag.Get(tagKeyMultiline))\n\tresult := tomlOpts{name: vf.Name, comment: comment, commented: commented, multiline: multiline, include: true, omitempty: false}\n\tif parse[0] != \"\" {\n\t\tif parse[0] == \"-\" && len(parse) == 1 {\n\t\t\tresult.include = false\n\t\t} else {\n\t\t\tresult.name = strings.Trim(parse[0], \" \")\n\t\t}\n\t}\n\tif vf.PkgPath != \"\" {\n\t\tresult.include = false\n\t}\n\tif len(parse) > 1 && strings.Trim(parse[1], \" \") == \"omitempty\" {\n\t\tresult.omitempty = true\n\t}\n\tif vf.Type.Kind() == reflect.Ptr {\n\t\tresult.omitempty = true\n\t}\n\treturn result\n}\n\nfunc isZero(val reflect.Value) bool {\n\tswitch val.Type().Kind() {\n\tcase reflect.Map:\n\t\tfallthrough\n\tcase reflect.Array:\n\t\tfallthrough\n\tcase reflect.Slice:\n\t\treturn val.Len() == 0\n\tdefault:\n\t\treturn reflect.DeepEqual(val.Interface(), reflect.Zero(val.Type()).Interface())\n\t}\n}\n\nfunc formatError(err error, pos Position) error {\n\tif err.Error()[0] == '(' { // Error already contains position information\n\t\treturn err\n\t}\n\treturn fmt.Errorf(\"%s: %s\", pos, err)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/marshal_test.toml",
    "content": "title = \"TOML Marshal Testing\"\n\n[basic]\n  bool = true\n  date = 1979-05-27T07:32:00Z\n  float = 123.4\n  int = 5000\n  string = \"Bite me\"\n  uint = 5001\n\n[basic_lists]\n  bools = [true,false,true]\n  dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z]\n  floats = [12.3,45.6,78.9]\n  ints = [8001,8001,8002]\n  strings = [\"One\",\"Two\",\"Three\"]\n  uints = [5002,5003]\n\n[basic_map]\n  one = \"one\"\n  two = \"two\"\n\n[subdoc]\n\n  [subdoc.first]\n    name = \"First\"\n\n  [subdoc.second]\n    name = \"Second\"\n\n[[subdoclist]]\n  name = \"List.First\"\n\n[[subdoclist]]\n  name = \"List.Second\"\n\n[[subdocptrs]]\n  name = \"Second\"\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/parser.go",
    "content": "// TOML Parser.\n\npackage toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype tomlParser struct {\n\tflowIdx       int\n\tflow          []token\n\ttree          *Tree\n\tcurrentTable  []string\n\tseenTableKeys []string\n}\n\ntype tomlParserStateFn func() tomlParserStateFn\n\n// Formats and panics an error message based on a token\nfunc (p *tomlParser) raiseError(tok *token, msg string, args ...interface{}) {\n\tpanic(tok.Position.String() + \": \" + fmt.Sprintf(msg, args...))\n}\n\nfunc (p *tomlParser) run() {\n\tfor state := p.parseStart; state != nil; {\n\t\tstate = state()\n\t}\n}\n\nfunc (p *tomlParser) peek() *token {\n\tif p.flowIdx >= len(p.flow) {\n\t\treturn nil\n\t}\n\treturn &p.flow[p.flowIdx]\n}\n\nfunc (p *tomlParser) assume(typ tokenType) {\n\ttok := p.getToken()\n\tif tok == nil {\n\t\tp.raiseError(tok, \"was expecting token %s, but token stream is empty\", tok)\n\t}\n\tif tok.typ != typ {\n\t\tp.raiseError(tok, \"was expecting token %s, but got %s instead\", typ, tok)\n\t}\n}\n\nfunc (p *tomlParser) getToken() *token {\n\ttok := p.peek()\n\tif tok == nil {\n\t\treturn nil\n\t}\n\tp.flowIdx++\n\treturn tok\n}\n\nfunc (p *tomlParser) parseStart() tomlParserStateFn {\n\ttok := p.peek()\n\n\t// end of stream, parsing is finished\n\tif tok == nil {\n\t\treturn nil\n\t}\n\n\tswitch tok.typ {\n\tcase tokenDoubleLeftBracket:\n\t\treturn p.parseGroupArray\n\tcase tokenLeftBracket:\n\t\treturn p.parseGroup\n\tcase tokenKey:\n\t\treturn p.parseAssign\n\tcase tokenEOF:\n\t\treturn nil\n\tdefault:\n\t\tp.raiseError(tok, \"unexpected token\")\n\t}\n\treturn nil\n}\n\nfunc (p *tomlParser) parseGroupArray() tomlParserStateFn {\n\tstartToken := p.getToken() // discard the [[\n\tkey := p.getToken()\n\tif key.typ != tokenKeyGroupArray {\n\t\tp.raiseError(key, \"unexpected token %s, was expecting a table array key\", key)\n\t}\n\n\t// get or create table array element at the indicated part in the path\n\tkeys, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid table array key: %s\", err)\n\t}\n\tp.tree.createSubTree(keys[:len(keys)-1], startToken.Position) // create parent entries\n\tdestTree := p.tree.GetPath(keys)\n\tvar array []*Tree\n\tif destTree == nil {\n\t\tarray = make([]*Tree, 0)\n\t} else if target, ok := destTree.([]*Tree); ok && target != nil {\n\t\tarray = destTree.([]*Tree)\n\t} else {\n\t\tp.raiseError(key, \"key %s is already assigned and not of type table array\", key)\n\t}\n\tp.currentTable = keys\n\n\t// add a new tree to the end of the table array\n\tnewTree := newTree()\n\tnewTree.position = startToken.Position\n\tarray = append(array, newTree)\n\tp.tree.SetPath(p.currentTable, array)\n\n\t// remove all keys that were children of this table array\n\tprefix := key.val + \".\"\n\tfound := false\n\tfor ii := 0; ii < len(p.seenTableKeys); {\n\t\ttableKey := p.seenTableKeys[ii]\n\t\tif strings.HasPrefix(tableKey, prefix) {\n\t\t\tp.seenTableKeys = append(p.seenTableKeys[:ii], p.seenTableKeys[ii+1:]...)\n\t\t} else {\n\t\t\tfound = (tableKey == key.val)\n\t\t\tii++\n\t\t}\n\t}\n\n\t// keep this key name from use by other kinds of assignments\n\tif !found {\n\t\tp.seenTableKeys = append(p.seenTableKeys, key.val)\n\t}\n\n\t// move to next parser state\n\tp.assume(tokenDoubleRightBracket)\n\treturn p.parseStart\n}\n\nfunc (p *tomlParser) parseGroup() tomlParserStateFn {\n\tstartToken := p.getToken() // discard the [\n\tkey := p.getToken()\n\tif key.typ != tokenKeyGroup {\n\t\tp.raiseError(key, \"unexpected token %s, was expecting a table key\", key)\n\t}\n\tfor _, item := range p.seenTableKeys {\n\t\tif item == key.val {\n\t\t\tp.raiseError(key, \"duplicated tables\")\n\t\t}\n\t}\n\n\tp.seenTableKeys = append(p.seenTableKeys, key.val)\n\tkeys, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid table array key: %s\", err)\n\t}\n\tif err := p.tree.createSubTree(keys, startToken.Position); err != nil {\n\t\tp.raiseError(key, \"%s\", err)\n\t}\n\tp.assume(tokenRightBracket)\n\tp.currentTable = keys\n\treturn p.parseStart\n}\n\nfunc (p *tomlParser) parseAssign() tomlParserStateFn {\n\tkey := p.getToken()\n\tp.assume(tokenEqual)\n\n\tvalue := p.parseRvalue()\n\tvar tableKey []string\n\tif len(p.currentTable) > 0 {\n\t\ttableKey = p.currentTable\n\t} else {\n\t\ttableKey = []string{}\n\t}\n\n\t// find the table to assign, looking out for arrays of tables\n\tvar targetNode *Tree\n\tswitch node := p.tree.GetPath(tableKey).(type) {\n\tcase []*Tree:\n\t\ttargetNode = node[len(node)-1]\n\tcase *Tree:\n\t\ttargetNode = node\n\tdefault:\n\t\tp.raiseError(key, \"Unknown table type for path: %s\",\n\t\t\tstrings.Join(tableKey, \".\"))\n\t}\n\n\t// assign value to the found table\n\tkeyVals := []string{key.val}\n\tif len(keyVals) != 1 {\n\t\tp.raiseError(key, \"Invalid key\")\n\t}\n\tkeyVal := keyVals[0]\n\tlocalKey := []string{keyVal}\n\tfinalKey := append(tableKey, keyVal)\n\tif targetNode.GetPath(localKey) != nil {\n\t\tp.raiseError(key, \"The following key was defined twice: %s\",\n\t\t\tstrings.Join(finalKey, \".\"))\n\t}\n\tvar toInsert interface{}\n\n\tswitch value.(type) {\n\tcase *Tree, []*Tree:\n\t\ttoInsert = value\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value, position: key.Position}\n\t}\n\ttargetNode.values[keyVal] = toInsert\n\treturn p.parseStart\n}\n\nvar numberUnderscoreInvalidRegexp *regexp.Regexp\nvar hexNumberUnderscoreInvalidRegexp *regexp.Regexp\n\nfunc numberContainsInvalidUnderscore(value string) error {\n\tif numberUnderscoreInvalidRegexp.MatchString(value) {\n\t\treturn errors.New(\"invalid use of _ in number\")\n\t}\n\treturn nil\n}\n\nfunc hexNumberContainsInvalidUnderscore(value string) error {\n\tif hexNumberUnderscoreInvalidRegexp.MatchString(value) {\n\t\treturn errors.New(\"invalid use of _ in hex number\")\n\t}\n\treturn nil\n}\n\nfunc cleanupNumberToken(value string) string {\n\tcleanedVal := strings.Replace(value, \"_\", \"\", -1)\n\treturn cleanedVal\n}\n\nfunc (p *tomlParser) parseRvalue() interface{} {\n\ttok := p.getToken()\n\tif tok == nil || tok.typ == tokenEOF {\n\t\tp.raiseError(tok, \"expecting a value\")\n\t}\n\n\tswitch tok.typ {\n\tcase tokenString:\n\t\treturn tok.val\n\tcase tokenTrue:\n\t\treturn true\n\tcase tokenFalse:\n\t\treturn false\n\tcase tokenInf:\n\t\tif tok.val[0] == '-' {\n\t\t\treturn math.Inf(-1)\n\t\t}\n\t\treturn math.Inf(1)\n\tcase tokenNan:\n\t\treturn math.NaN()\n\tcase tokenInteger:\n\t\tcleanedVal := cleanupNumberToken(tok.val)\n\t\tvar err error\n\t\tvar val int64\n\t\tif len(cleanedVal) >= 3 && cleanedVal[0] == '0' {\n\t\t\tswitch cleanedVal[1] {\n\t\t\tcase 'x':\n\t\t\t\terr = hexNumberContainsInvalidUnderscore(tok.val)\n\t\t\t\tif err != nil {\n\t\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t\t}\n\t\t\t\tval, err = strconv.ParseInt(cleanedVal[2:], 16, 64)\n\t\t\tcase 'o':\n\t\t\t\terr = numberContainsInvalidUnderscore(tok.val)\n\t\t\t\tif err != nil {\n\t\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t\t}\n\t\t\t\tval, err = strconv.ParseInt(cleanedVal[2:], 8, 64)\n\t\t\tcase 'b':\n\t\t\t\terr = numberContainsInvalidUnderscore(tok.val)\n\t\t\t\tif err != nil {\n\t\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t\t}\n\t\t\t\tval, err = strconv.ParseInt(cleanedVal[2:], 2, 64)\n\t\t\tdefault:\n\t\t\t\tpanic(\"invalid base\") // the lexer should catch this first\n\t\t\t}\n\t\t} else {\n\t\t\terr = numberContainsInvalidUnderscore(tok.val)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t}\n\t\t\tval, err = strconv.ParseInt(cleanedVal, 10, 64)\n\t\t}\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenFloat:\n\t\terr := numberContainsInvalidUnderscore(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\tcleanedVal := cleanupNumberToken(tok.val)\n\t\tval, err := strconv.ParseFloat(cleanedVal, 64)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenDate:\n\t\tval, err := time.ParseInLocation(time.RFC3339Nano, tok.val, time.UTC)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLeftBracket:\n\t\treturn p.parseArray()\n\tcase tokenLeftCurlyBrace:\n\t\treturn p.parseInlineTable()\n\tcase tokenEqual:\n\t\tp.raiseError(tok, \"cannot have multiple equals for the same key\")\n\tcase tokenError:\n\t\tp.raiseError(tok, \"%s\", tok)\n\t}\n\n\tp.raiseError(tok, \"never reached\")\n\n\treturn nil\n}\n\nfunc tokenIsComma(t *token) bool {\n\treturn t != nil && t.typ == tokenComma\n}\n\nfunc (p *tomlParser) parseInlineTable() *Tree {\n\ttree := newTree()\n\tvar previous *token\nLoop:\n\tfor {\n\t\tfollow := p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated inline table\")\n\t\t}\n\t\tswitch follow.typ {\n\t\tcase tokenRightCurlyBrace:\n\t\t\tp.getToken()\n\t\t\tbreak Loop\n\t\tcase tokenKey:\n\t\t\tif !tokenIsComma(previous) && previous != nil {\n\t\t\t\tp.raiseError(follow, \"comma expected between fields in inline table\")\n\t\t\t}\n\t\t\tkey := p.getToken()\n\t\t\tp.assume(tokenEqual)\n\t\t\tvalue := p.parseRvalue()\n\t\t\ttree.Set(key.val, value)\n\t\tcase tokenComma:\n\t\t\tif previous == nil {\n\t\t\t\tp.raiseError(follow, \"inline table cannot start with a comma\")\n\t\t\t}\n\t\t\tif tokenIsComma(previous) {\n\t\t\t\tp.raiseError(follow, \"need field between two commas in inline table\")\n\t\t\t}\n\t\t\tp.getToken()\n\t\tdefault:\n\t\t\tp.raiseError(follow, \"unexpected token type in inline table: %s\", follow.String())\n\t\t}\n\t\tprevious = follow\n\t}\n\tif tokenIsComma(previous) {\n\t\tp.raiseError(previous, \"trailing comma at the end of inline table\")\n\t}\n\treturn tree\n}\n\nfunc (p *tomlParser) parseArray() interface{} {\n\tvar array []interface{}\n\tarrayType := reflect.TypeOf(nil)\n\tfor {\n\t\tfollow := p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated array\")\n\t\t}\n\t\tif follow.typ == tokenRightBracket {\n\t\t\tp.getToken()\n\t\t\tbreak\n\t\t}\n\t\tval := p.parseRvalue()\n\t\tif arrayType == nil {\n\t\t\tarrayType = reflect.TypeOf(val)\n\t\t}\n\t\tif reflect.TypeOf(val) != arrayType {\n\t\t\tp.raiseError(follow, \"mixed types in array\")\n\t\t}\n\t\tarray = append(array, val)\n\t\tfollow = p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated array\")\n\t\t}\n\t\tif follow.typ != tokenRightBracket && follow.typ != tokenComma {\n\t\t\tp.raiseError(follow, \"missing comma\")\n\t\t}\n\t\tif follow.typ == tokenComma {\n\t\t\tp.getToken()\n\t\t}\n\t}\n\t// An array of Trees is actually an array of inline\n\t// tables, which is a shorthand for a table array. If the\n\t// array was not converted from []interface{} to []*Tree,\n\t// the two notations would not be equivalent.\n\tif arrayType == reflect.TypeOf(newTree()) {\n\t\ttomlArray := make([]*Tree, len(array))\n\t\tfor i, v := range array {\n\t\t\ttomlArray[i] = v.(*Tree)\n\t\t}\n\t\treturn tomlArray\n\t}\n\treturn array\n}\n\nfunc parseToml(flow []token) *Tree {\n\tresult := newTree()\n\tresult.position = Position{1, 1}\n\tparser := &tomlParser{\n\t\tflowIdx:       0,\n\t\tflow:          flow,\n\t\ttree:          result,\n\t\tcurrentTable:  make([]string, 0),\n\t\tseenTableKeys: make([]string, 0),\n\t}\n\tparser.run()\n\treturn result\n}\n\nfunc init() {\n\tnumberUnderscoreInvalidRegexp = regexp.MustCompile(`([^\\d]_|_[^\\d])|_$|^_`)\n\thexNumberUnderscoreInvalidRegexp = regexp.MustCompile(`(^0x_)|([^\\da-f]_|_[^\\da-f])|_$|^_`)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/position.go",
    "content": "// Position support for go-toml\n\npackage toml\n\nimport (\n\t\"fmt\"\n)\n\n// Position of a document element within a TOML document.\n//\n// Line and Col are both 1-indexed positions for the element's line number and\n// column number, respectively.  Values of zero or less will cause Invalid(),\n// to return true.\ntype Position struct {\n\tLine int // line within the document\n\tCol  int // column within the line\n}\n\n// String representation of the position.\n// Displays 1-indexed line and column numbers.\nfunc (p Position) String() string {\n\treturn fmt.Sprintf(\"(%d, %d)\", p.Line, p.Col)\n}\n\n// Invalid returns whether or not the position is valid (i.e. with negative or\n// null values)\nfunc (p Position) Invalid() bool {\n\treturn p.Line <= 0 || p.Col <= 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/test.sh",
    "content": "#!/bin/bash\n# fail out of the script if anything here fails\nset -e\nset -o pipefail\n\n# set the path to the present working directory\nexport GOPATH=`pwd`\n\nfunction git_clone() {\n  path=$1\n  branch=$2\n  version=$3\n  if [ ! -d \"src/$path\" ]; then\n    mkdir -p src/$path\n    git clone https://$path.git src/$path\n  fi\n  pushd src/$path\n  git checkout \"$branch\"\n  git reset --hard \"$version\"\n  popd\n}\n\n# Remove potential previous runs\nrm -rf src test_program_bin toml-test\n\ngo get github.com/pelletier/go-buffruneio\ngo get github.com/davecgh/go-spew/spew\ngo get gopkg.in/yaml.v2\ngo get github.com/BurntSushi/toml\n\n# get code for BurntSushi TOML validation\n# pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)\ngit_clone github.com/BurntSushi/toml master HEAD\ngit_clone github.com/BurntSushi/toml-test master HEAD #was: 0.2.0 HEAD\n\n# build the BurntSushi test application\ngo build -o toml-test github.com/BurntSushi/toml-test\n\n# vendorize the current lib for testing\n# NOTE: this basically mocks an install without having to go back out to github for code\nmkdir -p src/github.com/pelletier/go-toml/cmd\nmkdir -p src/github.com/pelletier/go-toml/query\ncp *.go *.toml src/github.com/pelletier/go-toml\ncp -R cmd/* src/github.com/pelletier/go-toml/cmd\ncp -R query/* src/github.com/pelletier/go-toml/query\ngo build -o test_program_bin src/github.com/pelletier/go-toml/cmd/test_program.go\n\n# Run basic unit tests\ngo test github.com/pelletier/go-toml -covermode=count -coverprofile=coverage.out\ngo test github.com/pelletier/go-toml/cmd/tomljson\ngo test github.com/pelletier/go-toml/query\n\n# run the entire BurntSushi test suite\nif [[ $# -eq 0 ]] ; then\n  echo \"Running all BurntSushi tests\"\n  ./toml-test ./test_program_bin | tee test_out\nelse\n  # run a specific test\n  test=$1\n  test_path='src/github.com/BurntSushi/toml-test/tests'\n  valid_test=\"$test_path/valid/$test\"\n  invalid_test=\"$test_path/invalid/$test\"\n\n  if [ -e \"$valid_test.toml\" ]; then\n    echo \"Valid Test TOML for $test:\"\n    echo \"====\"\n    cat \"$valid_test.toml\"\n\n    echo \"Valid Test JSON for $test:\"\n    echo \"====\"\n    cat \"$valid_test.json\"\n\n    echo \"Go-TOML Output for $test:\"\n    echo \"====\"\n    cat \"$valid_test.toml\" | ./test_program_bin\n  fi\n\n  if [ -e \"$invalid_test.toml\" ]; then\n    echo \"Invalid Test TOML for $test:\"\n    echo \"====\"\n    cat \"$invalid_test.toml\"\n\n    echo \"Go-TOML Output for $test:\"\n    echo \"====\"\n    echo \"go-toml Output:\"\n    cat \"$invalid_test.toml\" | ./test_program_bin\n  fi\nfi\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/token.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"unicode\"\n)\n\n// Define tokens\ntype tokenType int\n\nconst (\n\teof = -(iota + 1)\n)\n\nconst (\n\ttokenError tokenType = iota\n\ttokenEOF\n\ttokenComment\n\ttokenKey\n\ttokenString\n\ttokenInteger\n\ttokenTrue\n\ttokenFalse\n\ttokenFloat\n\ttokenInf\n\ttokenNan\n\ttokenEqual\n\ttokenLeftBracket\n\ttokenRightBracket\n\ttokenLeftCurlyBrace\n\ttokenRightCurlyBrace\n\ttokenLeftParen\n\ttokenRightParen\n\ttokenDoubleLeftBracket\n\ttokenDoubleRightBracket\n\ttokenDate\n\ttokenKeyGroup\n\ttokenKeyGroupArray\n\ttokenComma\n\ttokenColon\n\ttokenDollar\n\ttokenStar\n\ttokenQuestion\n\ttokenDot\n\ttokenDotDot\n\ttokenEOL\n)\n\nvar tokenTypeNames = []string{\n\t\"Error\",\n\t\"EOF\",\n\t\"Comment\",\n\t\"Key\",\n\t\"String\",\n\t\"Integer\",\n\t\"True\",\n\t\"False\",\n\t\"Float\",\n\t\"Inf\",\n\t\"NaN\",\n\t\"=\",\n\t\"[\",\n\t\"]\",\n\t\"{\",\n\t\"}\",\n\t\"(\",\n\t\")\",\n\t\"]]\",\n\t\"[[\",\n\t\"Date\",\n\t\"KeyGroup\",\n\t\"KeyGroupArray\",\n\t\",\",\n\t\":\",\n\t\"$\",\n\t\"*\",\n\t\"?\",\n\t\".\",\n\t\"..\",\n\t\"EOL\",\n}\n\ntype token struct {\n\tPosition\n\ttyp tokenType\n\tval string\n}\n\nfunc (tt tokenType) String() string {\n\tidx := int(tt)\n\tif idx < len(tokenTypeNames) {\n\t\treturn tokenTypeNames[idx]\n\t}\n\treturn \"Unknown\"\n}\n\nfunc (t token) Int() int {\n\tif result, err := strconv.Atoi(t.val); err != nil {\n\t\tpanic(err)\n\t} else {\n\t\treturn result\n\t}\n}\n\nfunc (t token) String() string {\n\tswitch t.typ {\n\tcase tokenEOF:\n\t\treturn \"EOF\"\n\tcase tokenError:\n\t\treturn t.val\n\t}\n\n\treturn fmt.Sprintf(\"%q\", t.val)\n}\n\nfunc isSpace(r rune) bool {\n\treturn r == ' ' || r == '\\t'\n}\n\nfunc isAlphanumeric(r rune) bool {\n\treturn unicode.IsLetter(r) || r == '_'\n}\n\nfunc isKeyChar(r rune) bool {\n\t// Keys start with the first character that isn't whitespace or [ and end\n\t// with the last non-whitespace character before the equals sign. Keys\n\t// cannot contain a # character.\"\n\treturn !(r == '\\r' || r == '\\n' || r == eof || r == '=')\n}\n\nfunc isKeyStartChar(r rune) bool {\n\treturn !(isSpace(r) || r == '\\r' || r == '\\n' || r == eof || r == '[')\n}\n\nfunc isDigit(r rune) bool {\n\treturn unicode.IsNumber(r)\n}\n\nfunc isHexDigit(r rune) bool {\n\treturn isDigit(r) ||\n\t\t(r >= 'a' && r <= 'f') ||\n\t\t(r >= 'A' && r <= 'F')\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/toml.go",
    "content": "package toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n)\n\ntype tomlValue struct {\n\tvalue     interface{} // string, int64, uint64, float64, bool, time.Time, [] of any of this list\n\tcomment   string\n\tcommented bool\n\tmultiline bool\n\tposition  Position\n}\n\n// Tree is the result of the parsing of a TOML file.\ntype Tree struct {\n\tvalues    map[string]interface{} // string -> *tomlValue, *Tree, []*Tree\n\tcomment   string\n\tcommented bool\n\tposition  Position\n}\n\nfunc newTree() *Tree {\n\treturn &Tree{\n\t\tvalues:   make(map[string]interface{}),\n\t\tposition: Position{},\n\t}\n}\n\n// TreeFromMap initializes a new Tree object using the given map.\nfunc TreeFromMap(m map[string]interface{}) (*Tree, error) {\n\tresult, err := toTree(m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.(*Tree), nil\n}\n\n// Position returns the position of the tree.\nfunc (t *Tree) Position() Position {\n\treturn t.position\n}\n\n// Has returns a boolean indicating if the given key exists.\nfunc (t *Tree) Has(key string) bool {\n\tif key == \"\" {\n\t\treturn false\n\t}\n\treturn t.HasPath(strings.Split(key, \".\"))\n}\n\n// HasPath returns true if the given path of keys exists, false otherwise.\nfunc (t *Tree) HasPath(keys []string) bool {\n\treturn t.GetPath(keys) != nil\n}\n\n// Keys returns the keys of the toplevel tree (does not recurse).\nfunc (t *Tree) Keys() []string {\n\tkeys := make([]string, len(t.values))\n\ti := 0\n\tfor k := range t.values {\n\t\tkeys[i] = k\n\t\ti++\n\t}\n\treturn keys\n}\n\n// Get the value at key in the Tree.\n// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings.\n// If you need to retrieve non-bare keys, use GetPath.\n// Returns nil if the path does not exist in the tree.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) Get(key string) interface{} {\n\tif key == \"\" {\n\t\treturn t\n\t}\n\treturn t.GetPath(strings.Split(key, \".\"))\n}\n\n// GetPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetPath(keys []string) interface{} {\n\tif len(keys) == 0 {\n\t\treturn t\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn nil\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn nil // cannot navigate through other node types\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\treturn node.value\n\tdefault:\n\t\treturn node\n\t}\n}\n\n// GetPosition returns the position of the given key.\nfunc (t *Tree) GetPosition(key string) Position {\n\tif key == \"\" {\n\t\treturn t.position\n\t}\n\treturn t.GetPositionPath(strings.Split(key, \".\"))\n}\n\n// GetPositionPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetPositionPath(keys []string) Position {\n\tif len(keys) == 0 {\n\t\treturn t.position\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn Position{0, 0}\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn Position{0, 0}\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn Position{0, 0}\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\treturn node.position\n\tcase *Tree:\n\t\treturn node.position\n\tcase []*Tree:\n\t\t// go to most recent element\n\t\tif len(node) == 0 {\n\t\t\treturn Position{0, 0}\n\t\t}\n\t\treturn node[len(node)-1].position\n\tdefault:\n\t\treturn Position{0, 0}\n\t}\n}\n\n// GetDefault works like Get but with a default value\nfunc (t *Tree) GetDefault(key string, def interface{}) interface{} {\n\tval := t.Get(key)\n\tif val == nil {\n\t\treturn def\n\t}\n\treturn val\n}\n\n// SetOptions arguments are supplied to the SetWithOptions and SetPathWithOptions functions to modify marshalling behaviour.\n// The default values within the struct are valid default options.\ntype SetOptions struct {\n\tComment   string\n\tCommented bool\n\tMultiline bool\n}\n\n// SetWithOptions is the same as Set, but allows you to provide formatting\n// instructions to the key, that will be used by Marshal().\nfunc (t *Tree) SetWithOptions(key string, opts SetOptions, value interface{}) {\n\tt.SetPathWithOptions(strings.Split(key, \".\"), opts, value)\n}\n\n// SetPathWithOptions is the same as SetPath, but allows you to provide\n// formatting instructions to the key, that will be reused by Marshal().\nfunc (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interface{}) {\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\tnextTree = newTree()\n\t\t\tsubtree.values[intermediateKey] = nextTree // add new element here\n\t\t}\n\t\tswitch node := nextTree.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\t// create element if it does not exist\n\t\t\t\tsubtree.values[intermediateKey] = append(node, newTree())\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\t}\n\t}\n\n\tvar toInsert interface{}\n\n\tswitch value.(type) {\n\tcase *Tree:\n\t\ttt := value.(*Tree)\n\t\ttt.comment = opts.Comment\n\t\ttoInsert = value\n\tcase []*Tree:\n\t\ttoInsert = value\n\tcase *tomlValue:\n\t\ttt := value.(*tomlValue)\n\t\ttt.comment = opts.Comment\n\t\ttoInsert = tt\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value, comment: opts.Comment, commented: opts.Commented, multiline: opts.Multiline}\n\t}\n\n\tsubtree.values[keys[len(keys)-1]] = toInsert\n}\n\n// Set an element in the tree.\n// Key is a dot-separated path (e.g. a.b.c).\n// Creates all necessary intermediate trees, if needed.\nfunc (t *Tree) Set(key string, value interface{}) {\n\tt.SetWithComment(key, \"\", false, value)\n}\n\n// SetWithComment is the same as Set, but allows you to provide comment\n// information to the key, that will be reused by Marshal().\nfunc (t *Tree) SetWithComment(key string, comment string, commented bool, value interface{}) {\n\tt.SetPathWithComment(strings.Split(key, \".\"), comment, commented, value)\n}\n\n// SetPath sets an element in the tree.\n// Keys is an array of path elements (e.g. {\"a\",\"b\",\"c\"}).\n// Creates all necessary intermediate trees, if needed.\nfunc (t *Tree) SetPath(keys []string, value interface{}) {\n\tt.SetPathWithComment(keys, \"\", false, value)\n}\n\n// SetPathWithComment is the same as SetPath, but allows you to provide comment\n// information to the key, that will be reused by Marshal().\nfunc (t *Tree) SetPathWithComment(keys []string, comment string, commented bool, value interface{}) {\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\tnextTree = newTree()\n\t\t\tsubtree.values[intermediateKey] = nextTree // add new element here\n\t\t}\n\t\tswitch node := nextTree.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\t// create element if it does not exist\n\t\t\t\tsubtree.values[intermediateKey] = append(node, newTree())\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\t}\n\t}\n\n\tvar toInsert interface{}\n\n\tswitch value.(type) {\n\tcase *Tree:\n\t\ttt := value.(*Tree)\n\t\ttt.comment = comment\n\t\ttoInsert = value\n\tcase []*Tree:\n\t\ttoInsert = value\n\tcase *tomlValue:\n\t\ttt := value.(*tomlValue)\n\t\ttt.comment = comment\n\t\ttoInsert = tt\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value, comment: comment, commented: commented}\n\t}\n\n\tsubtree.values[keys[len(keys)-1]] = toInsert\n}\n\n// createSubTree takes a tree and a key and create the necessary intermediate\n// subtrees to create a subtree at that point. In-place.\n//\n// e.g. passing a.b.c will create (assuming tree is empty) tree[a], tree[a][b]\n// and tree[a][b][c]\n//\n// Returns nil on success, error object on failure\nfunc (t *Tree) createSubTree(keys []string, pos Position) error {\n\tsubtree := t\n\tfor _, intermediateKey := range keys {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\ttree := newTree()\n\t\t\ttree.position = pos\n\t\t\tsubtree.values[intermediateKey] = tree\n\t\t\tnextTree = tree\n\t\t}\n\n\t\tswitch node := nextTree.(type) {\n\t\tcase []*Tree:\n\t\t\tsubtree = node[len(node)-1]\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown type for path %s (%s): %T (%#v)\",\n\t\t\t\tstrings.Join(keys, \".\"), intermediateKey, nextTree, nextTree)\n\t\t}\n\t}\n\treturn nil\n}\n\n// LoadBytes creates a Tree from a []byte.\nfunc LoadBytes(b []byte) (tree *Tree, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t\terr = errors.New(r.(string))\n\t\t}\n\t}()\n\ttree = parseToml(lexToml(b))\n\treturn\n}\n\n// LoadReader creates a Tree from any io.Reader.\nfunc LoadReader(reader io.Reader) (tree *Tree, err error) {\n\tinputBytes, err := ioutil.ReadAll(reader)\n\tif err != nil {\n\t\treturn\n\t}\n\ttree, err = LoadBytes(inputBytes)\n\treturn\n}\n\n// Load creates a Tree from a string.\nfunc Load(content string) (tree *Tree, err error) {\n\treturn LoadBytes([]byte(content))\n}\n\n// LoadFile creates a Tree from a file.\nfunc LoadFile(path string) (tree *Tree, err error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\treturn LoadReader(file)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/tomltree_create.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\nvar kindToType = [reflect.String + 1]reflect.Type{\n\treflect.Bool:    reflect.TypeOf(true),\n\treflect.String:  reflect.TypeOf(\"\"),\n\treflect.Float32: reflect.TypeOf(float64(1)),\n\treflect.Float64: reflect.TypeOf(float64(1)),\n\treflect.Int:     reflect.TypeOf(int64(1)),\n\treflect.Int8:    reflect.TypeOf(int64(1)),\n\treflect.Int16:   reflect.TypeOf(int64(1)),\n\treflect.Int32:   reflect.TypeOf(int64(1)),\n\treflect.Int64:   reflect.TypeOf(int64(1)),\n\treflect.Uint:    reflect.TypeOf(uint64(1)),\n\treflect.Uint8:   reflect.TypeOf(uint64(1)),\n\treflect.Uint16:  reflect.TypeOf(uint64(1)),\n\treflect.Uint32:  reflect.TypeOf(uint64(1)),\n\treflect.Uint64:  reflect.TypeOf(uint64(1)),\n}\n\n// typeFor returns a reflect.Type for a reflect.Kind, or nil if none is found.\n// supported values:\n// string, bool, int64, uint64, float64, time.Time, int, int8, int16, int32, uint, uint8, uint16, uint32, float32\nfunc typeFor(k reflect.Kind) reflect.Type {\n\tif k > 0 && int(k) < len(kindToType) {\n\t\treturn kindToType[k]\n\t}\n\treturn nil\n}\n\nfunc simpleValueCoercion(object interface{}) (interface{}, error) {\n\tswitch original := object.(type) {\n\tcase string, bool, int64, uint64, float64, time.Time:\n\t\treturn original, nil\n\tcase int:\n\t\treturn int64(original), nil\n\tcase int8:\n\t\treturn int64(original), nil\n\tcase int16:\n\t\treturn int64(original), nil\n\tcase int32:\n\t\treturn int64(original), nil\n\tcase uint:\n\t\treturn uint64(original), nil\n\tcase uint8:\n\t\treturn uint64(original), nil\n\tcase uint16:\n\t\treturn uint64(original), nil\n\tcase uint32:\n\t\treturn uint64(original), nil\n\tcase float32:\n\t\treturn float64(original), nil\n\tcase fmt.Stringer:\n\t\treturn original.String(), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"cannot convert type %T to Tree\", object)\n\t}\n}\n\nfunc sliceToTree(object interface{}) (interface{}, error) {\n\t// arrays are a bit tricky, since they can represent either a\n\t// collection of simple values, which is represented by one\n\t// *tomlValue, or an array of tables, which is represented by an\n\t// array of *Tree.\n\n\t// holding the assumption that this function is called from toTree only when value.Kind() is Array or Slice\n\tvalue := reflect.ValueOf(object)\n\tinsideType := value.Type().Elem()\n\tlength := value.Len()\n\tif length > 0 {\n\t\tinsideType = reflect.ValueOf(value.Index(0).Interface()).Type()\n\t}\n\tif insideType.Kind() == reflect.Map {\n\t\t// this is considered as an array of tables\n\t\ttablesArray := make([]*Tree, 0, length)\n\t\tfor i := 0; i < length; i++ {\n\t\t\ttable := value.Index(i)\n\t\t\ttree, err := toTree(table.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ttablesArray = append(tablesArray, tree.(*Tree))\n\t\t}\n\t\treturn tablesArray, nil\n\t}\n\n\tsliceType := typeFor(insideType.Kind())\n\tif sliceType == nil {\n\t\tsliceType = insideType\n\t}\n\n\tarrayValue := reflect.MakeSlice(reflect.SliceOf(sliceType), 0, length)\n\n\tfor i := 0; i < length; i++ {\n\t\tval := value.Index(i).Interface()\n\t\tsimpleValue, err := simpleValueCoercion(val)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tarrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue))\n\t}\n\treturn &tomlValue{value: arrayValue.Interface(), position: Position{}}, nil\n}\n\nfunc toTree(object interface{}) (interface{}, error) {\n\tvalue := reflect.ValueOf(object)\n\n\tif value.Kind() == reflect.Map {\n\t\tvalues := map[string]interface{}{}\n\t\tkeys := value.MapKeys()\n\t\tfor _, key := range keys {\n\t\t\tif key.Kind() != reflect.String {\n\t\t\t\tif _, ok := key.Interface().(string); !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"map key needs to be a string, not %T (%v)\", key.Interface(), key.Kind())\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tv := value.MapIndex(key)\n\t\t\tnewValue, err := toTree(v.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvalues[key.String()] = newValue\n\t\t}\n\t\treturn &Tree{values: values, position: Position{}}, nil\n\t}\n\n\tif value.Kind() == reflect.Array || value.Kind() == reflect.Slice {\n\t\treturn sliceToTree(object)\n\t}\n\n\tsimpleValue, err := simpleValueCoercion(object)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &tomlValue{value: simpleValue, position: Position{}}, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pelletier/go-toml/tomltree_write.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Encodes a string to a TOML-compliant multi-line string value\n// This function is a clone of the existing encodeTomlString function, except that whitespace characters\n// are preserved. Quotation marks and backslashes are also not escaped.\nfunc encodeMultilineTomlString(value string) string {\n\tvar b bytes.Buffer\n\n\tfor _, rr := range value {\n\t\tswitch rr {\n\t\tcase '\\b':\n\t\t\tb.WriteString(`\\b`)\n\t\tcase '\\t':\n\t\t\tb.WriteString(\"\\t\")\n\t\tcase '\\n':\n\t\t\tb.WriteString(\"\\n\")\n\t\tcase '\\f':\n\t\t\tb.WriteString(`\\f`)\n\t\tcase '\\r':\n\t\t\tb.WriteString(\"\\r\")\n\t\tcase '\"':\n\t\t\tb.WriteString(`\"`)\n\t\tcase '\\\\':\n\t\t\tb.WriteString(`\\`)\n\t\tdefault:\n\t\t\tintRr := uint16(rr)\n\t\t\tif intRr < 0x001F {\n\t\t\t\tb.WriteString(fmt.Sprintf(\"\\\\u%0.4X\", intRr))\n\t\t\t} else {\n\t\t\t\tb.WriteRune(rr)\n\t\t\t}\n\t\t}\n\t}\n\treturn b.String()\n}\n\n// Encodes a string to a TOML-compliant string value\nfunc encodeTomlString(value string) string {\n\tvar b bytes.Buffer\n\n\tfor _, rr := range value {\n\t\tswitch rr {\n\t\tcase '\\b':\n\t\t\tb.WriteString(`\\b`)\n\t\tcase '\\t':\n\t\t\tb.WriteString(`\\t`)\n\t\tcase '\\n':\n\t\t\tb.WriteString(`\\n`)\n\t\tcase '\\f':\n\t\t\tb.WriteString(`\\f`)\n\t\tcase '\\r':\n\t\t\tb.WriteString(`\\r`)\n\t\tcase '\"':\n\t\t\tb.WriteString(`\\\"`)\n\t\tcase '\\\\':\n\t\t\tb.WriteString(`\\\\`)\n\t\tdefault:\n\t\t\tintRr := uint16(rr)\n\t\t\tif intRr < 0x001F {\n\t\t\t\tb.WriteString(fmt.Sprintf(\"\\\\u%0.4X\", intRr))\n\t\t\t} else {\n\t\t\t\tb.WriteRune(rr)\n\t\t\t}\n\t\t}\n\t}\n\treturn b.String()\n}\n\nfunc tomlValueStringRepresentation(v interface{}, indent string, arraysOneElementPerLine bool) (string, error) {\n\t// this interface check is added to dereference the change made in the writeTo function.\n\t// That change was made to allow this function to see formatting options.\n\ttv, ok := v.(*tomlValue)\n\tif ok {\n\t\tv = tv.value\n\t} else {\n\t\ttv = &tomlValue{}\n\t}\n\n\tswitch value := v.(type) {\n\tcase uint64:\n\t\treturn strconv.FormatUint(value, 10), nil\n\tcase int64:\n\t\treturn strconv.FormatInt(value, 10), nil\n\tcase float64:\n\t\t// Ensure a round float does contain a decimal point. Otherwise feeding\n\t\t// the output back to the parser would convert to an integer.\n\t\tif math.Trunc(value) == value {\n\t\t\treturn strings.ToLower(strconv.FormatFloat(value, 'f', 1, 32)), nil\n\t\t}\n\t\treturn strings.ToLower(strconv.FormatFloat(value, 'f', -1, 32)), nil\n\tcase string:\n\t\tif tv.multiline {\n\t\t\treturn \"\\\"\\\"\\\"\\n\" + encodeMultilineTomlString(value) + \"\\\"\\\"\\\"\", nil\n\t\t}\n\t\treturn \"\\\"\" + encodeTomlString(value) + \"\\\"\", nil\n\tcase []byte:\n\t\tb, _ := v.([]byte)\n\t\treturn tomlValueStringRepresentation(string(b), indent, arraysOneElementPerLine)\n\tcase bool:\n\t\tif value {\n\t\t\treturn \"true\", nil\n\t\t}\n\t\treturn \"false\", nil\n\tcase time.Time:\n\t\treturn value.Format(time.RFC3339), nil\n\tcase nil:\n\t\treturn \"\", nil\n\t}\n\n\trv := reflect.ValueOf(v)\n\n\tif rv.Kind() == reflect.Slice {\n\t\tvar values []string\n\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\titem := rv.Index(i).Interface()\n\t\t\titemRepr, err := tomlValueStringRepresentation(item, indent, arraysOneElementPerLine)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tvalues = append(values, itemRepr)\n\t\t}\n\t\tif arraysOneElementPerLine && len(values) > 1 {\n\t\t\tstringBuffer := bytes.Buffer{}\n\t\t\tvalueIndent := indent + `  ` // TODO: move that to a shared encoder state\n\n\t\t\tstringBuffer.WriteString(\"[\\n\")\n\n\t\t\tfor _, value := range values {\n\t\t\t\tstringBuffer.WriteString(valueIndent)\n\t\t\t\tstringBuffer.WriteString(value)\n\t\t\t\tstringBuffer.WriteString(`,`)\n\t\t\t\tstringBuffer.WriteString(\"\\n\")\n\t\t\t}\n\n\t\t\tstringBuffer.WriteString(indent + \"]\")\n\n\t\t\treturn stringBuffer.String(), nil\n\t\t}\n\t\treturn \"[\" + strings.Join(values, \",\") + \"]\", nil\n\t}\n\treturn \"\", fmt.Errorf(\"unsupported value type %T: %v\", v, v)\n}\n\nfunc (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) {\n\tsimpleValuesKeys := make([]string, 0)\n\tcomplexValuesKeys := make([]string, 0)\n\n\tfor k := range t.values {\n\t\tv := t.values[k]\n\t\tswitch v.(type) {\n\t\tcase *Tree, []*Tree:\n\t\t\tcomplexValuesKeys = append(complexValuesKeys, k)\n\t\tdefault:\n\t\t\tsimpleValuesKeys = append(simpleValuesKeys, k)\n\t\t}\n\t}\n\n\tsort.Strings(simpleValuesKeys)\n\tsort.Strings(complexValuesKeys)\n\n\tfor _, k := range simpleValuesKeys {\n\t\tv, ok := t.values[k].(*tomlValue)\n\t\tif !ok {\n\t\t\treturn bytesCount, fmt.Errorf(\"invalid value type at %s: %T\", k, t.values[k])\n\t\t}\n\n\t\trepr, err := tomlValueStringRepresentation(v, indent, arraysOneElementPerLine)\n\t\tif err != nil {\n\t\t\treturn bytesCount, err\n\t\t}\n\n\t\tif v.comment != \"\" {\n\t\t\tcomment := strings.Replace(v.comment, \"\\n\", \"\\n\"+indent+\"#\", -1)\n\t\t\tstart := \"# \"\n\t\t\tif strings.HasPrefix(comment, \"#\") {\n\t\t\t\tstart = \"\"\n\t\t\t}\n\t\t\twrittenBytesCountComment, errc := writeStrings(w, \"\\n\", indent, start, comment, \"\\n\")\n\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\tif errc != nil {\n\t\t\t\treturn bytesCount, errc\n\t\t\t}\n\t\t}\n\n\t\tvar commented string\n\t\tif v.commented {\n\t\t\tcommented = \"# \"\n\t\t}\n\t\twrittenBytesCount, err := writeStrings(w, indent, commented, k, \" = \", repr, \"\\n\")\n\t\tbytesCount += int64(writtenBytesCount)\n\t\tif err != nil {\n\t\t\treturn bytesCount, err\n\t\t}\n\t}\n\n\tfor _, k := range complexValuesKeys {\n\t\tv := t.values[k]\n\n\t\tcombinedKey := k\n\t\tif keyspace != \"\" {\n\t\t\tcombinedKey = keyspace + \".\" + combinedKey\n\t\t}\n\t\tvar commented string\n\t\tif t.commented {\n\t\t\tcommented = \"# \"\n\t\t}\n\n\t\tswitch node := v.(type) {\n\t\t// node has to be of those two types given how keys are sorted above\n\t\tcase *Tree:\n\t\t\ttv, ok := t.values[k].(*Tree)\n\t\t\tif !ok {\n\t\t\t\treturn bytesCount, fmt.Errorf(\"invalid value type at %s: %T\", k, t.values[k])\n\t\t\t}\n\t\t\tif tv.comment != \"\" {\n\t\t\t\tcomment := strings.Replace(tv.comment, \"\\n\", \"\\n\"+indent+\"#\", -1)\n\t\t\t\tstart := \"# \"\n\t\t\t\tif strings.HasPrefix(comment, \"#\") {\n\t\t\t\t\tstart = \"\"\n\t\t\t\t}\n\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, \"\\n\", indent, start, comment)\n\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\tif errc != nil {\n\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t}\n\t\t\t}\n\t\t\twrittenBytesCount, err := writeStrings(w, \"\\n\", indent, commented, \"[\", combinedKey, \"]\\n\")\n\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\tif err != nil {\n\t\t\t\treturn bytesCount, err\n\t\t\t}\n\t\t\tbytesCount, err = node.writeTo(w, indent+\"  \", combinedKey, bytesCount, arraysOneElementPerLine)\n\t\t\tif err != nil {\n\t\t\t\treturn bytesCount, err\n\t\t\t}\n\t\tcase []*Tree:\n\t\t\tfor _, subTree := range node {\n\t\t\t\twrittenBytesCount, err := writeStrings(w, \"\\n\", indent, commented, \"[[\", combinedKey, \"]]\\n\")\n\t\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn bytesCount, err\n\t\t\t\t}\n\n\t\t\t\tbytesCount, err = subTree.writeTo(w, indent+\"  \", combinedKey, bytesCount, arraysOneElementPerLine)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn bytesCount, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bytesCount, nil\n}\n\nfunc writeStrings(w io.Writer, s ...string) (int, error) {\n\tvar n int\n\tfor i := range s {\n\t\tb, err := io.WriteString(w, s[i])\n\t\tn += b\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t}\n\treturn n, nil\n}\n\n// WriteTo encode the Tree as Toml and writes it to the writer w.\n// Returns the number of bytes written in case of success, or an error if anything happened.\nfunc (t *Tree) WriteTo(w io.Writer) (int64, error) {\n\treturn t.writeTo(w, \"\", \"\", 0, false)\n}\n\n// ToTomlString generates a human-readable representation of the current tree.\n// Output spans multiple lines, and is suitable for ingest by a TOML parser.\n// If the conversion cannot be performed, ToString returns a non-nil error.\nfunc (t *Tree) ToTomlString() (string, error) {\n\tvar buf bytes.Buffer\n\t_, err := t.WriteTo(&buf)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn buf.String(), nil\n}\n\n// String generates a human-readable representation of the current tree.\n// Alias of ToString. Present to implement the fmt.Stringer interface.\nfunc (t *Tree) String() string {\n\tresult, _ := t.ToTomlString()\n\treturn result\n}\n\n// ToMap recursively generates a representation of the tree using Go built-in structures.\n// The following types are used:\n//\n//\t* bool\n//\t* float64\n//\t* int64\n//\t* string\n//\t* uint64\n//\t* time.Time\n//\t* map[string]interface{} (where interface{} is any of this list)\n//\t* []interface{} (where interface{} is any of this list)\nfunc (t *Tree) ToMap() map[string]interface{} {\n\tresult := map[string]interface{}{}\n\n\tfor k, v := range t.values {\n\t\tswitch node := v.(type) {\n\t\tcase []*Tree:\n\t\t\tvar array []interface{}\n\t\t\tfor _, item := range node {\n\t\t\t\tarray = append(array, item.ToMap())\n\t\t\t}\n\t\t\tresult[k] = array\n\t\tcase *Tree:\n\t\t\tresult[k] = node.ToMap()\n\t\tcase *tomlValue:\n\t\t\tresult[k] = node.value\n\t\t}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/.travis.yml",
    "content": "language: go\ngo_import_path: github.com/pkg/errors\ngo:\n  - 1.4.3\n  - 1.5.4\n  - 1.6.2\n  - 1.7.1\n  - tip\n\nscript:\n  - go test -v ./...\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/LICENSE",
    "content": "Copyright (c) 2015, Dave Cheney <dave@cheney.net>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/README.md",
    "content": "# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors)\n\nPackage errors provides simple error handling primitives.\n\n`go get github.com/pkg/errors`\n\nThe traditional error handling idiom in Go is roughly akin to\n```go\nif err != nil {\n        return err\n}\n```\nwhich applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error.\n\n## Adding context to an error\n\nThe errors.Wrap function returns a new error that adds context to the original error. For example\n```go\n_, err := ioutil.ReadAll(r)\nif err != nil {\n        return errors.Wrap(err, \"read failed\")\n}\n```\n## Retrieving the cause of an error\n\nUsing `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`.\n```go\ntype causer interface {\n        Cause() error\n}\n```\n`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example:\n```go\nswitch err := errors.Cause(err).(type) {\ncase *MyError:\n        // handle specifically\ndefault:\n        // unknown error\n}\n```\n\n[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors).\n\n## Contributing\n\nWe welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high.\n\nBefore proposing a change, please discuss your change by raising an issue.\n\n## Licence\n\nBSD-2-Clause\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/appveyor.yml",
    "content": "version: build-{build}.{branch}\n\nclone_folder: C:\\gopath\\src\\github.com\\pkg\\errors\nshallow_clone: true # for startup speed\n\nenvironment:\n  GOPATH: C:\\gopath\n\nplatform:\n  - x64\n\n# http://www.appveyor.com/docs/installed-software\ninstall:\n  # some helpful output for debugging builds\n  - go version\n  - go env\n  # pre-installed MinGW at C:\\MinGW is 32bit only\n  # but MSYS2 at C:\\msys64 has mingw64\n  - set PATH=C:\\msys64\\mingw64\\bin;%PATH%\n  - gcc --version\n  - g++ --version\n\nbuild_script:\n  - go install -v ./...\n\ntest_script:\n  - set PATH=C:\\gopath\\bin;%PATH%\n  - go test -v ./...\n\n#artifacts:\n#  - path: '%GOPATH%\\bin\\*.exe'\ndeploy: off\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/errors.go",
    "content": "// Package errors provides simple error handling primitives.\n//\n// The traditional error handling idiom in Go is roughly akin to\n//\n//     if err != nil {\n//             return err\n//     }\n//\n// which applied recursively up the call stack results in error reports\n// without context or debugging information. The errors package allows\n// programmers to add context to the failure path in their code in a way\n// that does not destroy the original value of the error.\n//\n// Adding context to an error\n//\n// The errors.Wrap function returns a new error that adds context to the\n// original error by recording a stack trace at the point Wrap is called,\n// and the supplied message. For example\n//\n//     _, err := ioutil.ReadAll(r)\n//     if err != nil {\n//             return errors.Wrap(err, \"read failed\")\n//     }\n//\n// If additional control is required the errors.WithStack and errors.WithMessage\n// functions destructure errors.Wrap into its component operations of annotating\n// an error with a stack trace and an a message, respectively.\n//\n// Retrieving the cause of an error\n//\n// Using errors.Wrap constructs a stack of errors, adding context to the\n// preceding error. Depending on the nature of the error it may be necessary\n// to reverse the operation of errors.Wrap to retrieve the original error\n// for inspection. Any error value which implements this interface\n//\n//     type causer interface {\n//             Cause() error\n//     }\n//\n// can be inspected by errors.Cause. errors.Cause will recursively retrieve\n// the topmost error which does not implement causer, which is assumed to be\n// the original cause. For example:\n//\n//     switch err := errors.Cause(err).(type) {\n//     case *MyError:\n//             // handle specifically\n//     default:\n//             // unknown error\n//     }\n//\n// causer interface is not exported by this package, but is considered a part\n// of stable public API.\n//\n// Formatted printing of errors\n//\n// All error values returned from this package implement fmt.Formatter and can\n// be formatted by the fmt package. The following verbs are supported\n//\n//     %s    print the error. If the error has a Cause it will be\n//           printed recursively\n//     %v    see %s\n//     %+v   extended format. Each Frame of the error's StackTrace will\n//           be printed in detail.\n//\n// Retrieving the stack trace of an error or wrapper\n//\n// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are\n// invoked. This information can be retrieved with the following interface.\n//\n//     type stackTracer interface {\n//             StackTrace() errors.StackTrace\n//     }\n//\n// Where errors.StackTrace is defined as\n//\n//     type StackTrace []Frame\n//\n// The Frame type represents a call site in the stack trace. Frame supports\n// the fmt.Formatter interface that can be used for printing information about\n// the stack trace of this error. For example:\n//\n//     if err, ok := err.(stackTracer); ok {\n//             for _, f := range err.StackTrace() {\n//                     fmt.Printf(\"%+s:%d\", f)\n//             }\n//     }\n//\n// stackTracer interface is not exported by this package, but is considered a part\n// of stable public API.\n//\n// See the documentation for Frame.Format for more details.\npackage errors\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// New returns an error with the supplied message.\n// New also records the stack trace at the point it was called.\nfunc New(message string) error {\n\treturn &fundamental{\n\t\tmsg:   message,\n\t\tstack: callers(),\n\t}\n}\n\n// Errorf formats according to a format specifier and returns the string\n// as a value that satisfies error.\n// Errorf also records the stack trace at the point it was called.\nfunc Errorf(format string, args ...interface{}) error {\n\treturn &fundamental{\n\t\tmsg:   fmt.Sprintf(format, args...),\n\t\tstack: callers(),\n\t}\n}\n\n// fundamental is an error that has a message and a stack, but no caller.\ntype fundamental struct {\n\tmsg string\n\t*stack\n}\n\nfunc (f *fundamental) Error() string { return f.msg }\n\nfunc (f *fundamental) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif s.Flag('+') {\n\t\t\tio.WriteString(s, f.msg)\n\t\t\tf.stack.Format(s, verb)\n\t\t\treturn\n\t\t}\n\t\tfallthrough\n\tcase 's':\n\t\tio.WriteString(s, f.msg)\n\tcase 'q':\n\t\tfmt.Fprintf(s, \"%q\", f.msg)\n\t}\n}\n\n// WithStack annotates err with a stack trace at the point WithStack was called.\n// If err is nil, WithStack returns nil.\nfunc WithStack(err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\treturn &withStack{\n\t\terr,\n\t\tcallers(),\n\t}\n}\n\ntype withStack struct {\n\terror\n\t*stack\n}\n\nfunc (w *withStack) Cause() error { return w.error }\n\nfunc (w *withStack) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif s.Flag('+') {\n\t\t\tfmt.Fprintf(s, \"%+v\", w.Cause())\n\t\t\tw.stack.Format(s, verb)\n\t\t\treturn\n\t\t}\n\t\tfallthrough\n\tcase 's':\n\t\tio.WriteString(s, w.Error())\n\tcase 'q':\n\t\tfmt.Fprintf(s, \"%q\", w.Error())\n\t}\n}\n\n// Wrap returns an error annotating err with a stack trace\n// at the point Wrap is called, and the supplied message.\n// If err is nil, Wrap returns nil.\nfunc Wrap(err error, message string) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\terr = &withMessage{\n\t\tcause: err,\n\t\tmsg:   message,\n\t}\n\treturn &withStack{\n\t\terr,\n\t\tcallers(),\n\t}\n}\n\n// Wrapf returns an error annotating err with a stack trace\n// at the point Wrapf is call, and the format specifier.\n// If err is nil, Wrapf returns nil.\nfunc Wrapf(err error, format string, args ...interface{}) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\terr = &withMessage{\n\t\tcause: err,\n\t\tmsg:   fmt.Sprintf(format, args...),\n\t}\n\treturn &withStack{\n\t\terr,\n\t\tcallers(),\n\t}\n}\n\n// WithMessage annotates err with a new message.\n// If err is nil, WithMessage returns nil.\nfunc WithMessage(err error, message string) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\treturn &withMessage{\n\t\tcause: err,\n\t\tmsg:   message,\n\t}\n}\n\ntype withMessage struct {\n\tcause error\n\tmsg   string\n}\n\nfunc (w *withMessage) Error() string { return w.msg + \": \" + w.cause.Error() }\nfunc (w *withMessage) Cause() error  { return w.cause }\n\nfunc (w *withMessage) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif s.Flag('+') {\n\t\t\tfmt.Fprintf(s, \"%+v\\n\", w.Cause())\n\t\t\tio.WriteString(s, w.msg)\n\t\t\treturn\n\t\t}\n\t\tfallthrough\n\tcase 's', 'q':\n\t\tio.WriteString(s, w.Error())\n\t}\n}\n\n// Cause returns the underlying cause of the error, if possible.\n// An error value has a cause if it implements the following\n// interface:\n//\n//     type causer interface {\n//            Cause() error\n//     }\n//\n// If the error does not implement Cause, the original error will\n// be returned. If the error is nil, nil will be returned without further\n// investigation.\nfunc Cause(err error) error {\n\ttype causer interface {\n\t\tCause() error\n\t}\n\n\tfor err != nil {\n\t\tcause, ok := err.(causer)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\terr = cause.Cause()\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/pkg/errors/stack.go",
    "content": "package errors\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// Frame represents a program counter inside a stack frame.\ntype Frame uintptr\n\n// pc returns the program counter for this frame;\n// multiple frames may have the same PC value.\nfunc (f Frame) pc() uintptr { return uintptr(f) - 1 }\n\n// file returns the full path to the file that contains the\n// function for this Frame's pc.\nfunc (f Frame) file() string {\n\tfn := runtime.FuncForPC(f.pc())\n\tif fn == nil {\n\t\treturn \"unknown\"\n\t}\n\tfile, _ := fn.FileLine(f.pc())\n\treturn file\n}\n\n// line returns the line number of source code of the\n// function for this Frame's pc.\nfunc (f Frame) line() int {\n\tfn := runtime.FuncForPC(f.pc())\n\tif fn == nil {\n\t\treturn 0\n\t}\n\t_, line := fn.FileLine(f.pc())\n\treturn line\n}\n\n// Format formats the frame according to the fmt.Formatter interface.\n//\n//    %s    source file\n//    %d    source line\n//    %n    function name\n//    %v    equivalent to %s:%d\n//\n// Format accepts flags that alter the printing of some verbs, as follows:\n//\n//    %+s   path of source file relative to the compile time GOPATH\n//    %+v   equivalent to %+s:%d\nfunc (f Frame) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 's':\n\t\tswitch {\n\t\tcase s.Flag('+'):\n\t\t\tpc := f.pc()\n\t\t\tfn := runtime.FuncForPC(pc)\n\t\t\tif fn == nil {\n\t\t\t\tio.WriteString(s, \"unknown\")\n\t\t\t} else {\n\t\t\t\tfile, _ := fn.FileLine(pc)\n\t\t\t\tfmt.Fprintf(s, \"%s\\n\\t%s\", fn.Name(), file)\n\t\t\t}\n\t\tdefault:\n\t\t\tio.WriteString(s, path.Base(f.file()))\n\t\t}\n\tcase 'd':\n\t\tfmt.Fprintf(s, \"%d\", f.line())\n\tcase 'n':\n\t\tname := runtime.FuncForPC(f.pc()).Name()\n\t\tio.WriteString(s, funcname(name))\n\tcase 'v':\n\t\tf.Format(s, 's')\n\t\tio.WriteString(s, \":\")\n\t\tf.Format(s, 'd')\n\t}\n}\n\n// StackTrace is stack of Frames from innermost (newest) to outermost (oldest).\ntype StackTrace []Frame\n\nfunc (st StackTrace) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tswitch {\n\t\tcase s.Flag('+'):\n\t\t\tfor _, f := range st {\n\t\t\t\tfmt.Fprintf(s, \"\\n%+v\", f)\n\t\t\t}\n\t\tcase s.Flag('#'):\n\t\t\tfmt.Fprintf(s, \"%#v\", []Frame(st))\n\t\tdefault:\n\t\t\tfmt.Fprintf(s, \"%v\", []Frame(st))\n\t\t}\n\tcase 's':\n\t\tfmt.Fprintf(s, \"%s\", []Frame(st))\n\t}\n}\n\n// stack represents a stack of program counters.\ntype stack []uintptr\n\nfunc (s *stack) Format(st fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tswitch {\n\t\tcase st.Flag('+'):\n\t\t\tfor _, pc := range *s {\n\t\t\t\tf := Frame(pc)\n\t\t\t\tfmt.Fprintf(st, \"\\n%+v\", f)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (s *stack) StackTrace() StackTrace {\n\tf := make([]Frame, len(*s))\n\tfor i := 0; i < len(f); i++ {\n\t\tf[i] = Frame((*s)[i])\n\t}\n\treturn f\n}\n\nfunc callers() *stack {\n\tconst depth = 32\n\tvar pcs [depth]uintptr\n\tn := runtime.Callers(3, pcs[:])\n\tvar st stack = pcs[0:n]\n\treturn &st\n}\n\n// funcname removes the path prefix component of a function's name reported by func.Name().\nfunc funcname(name string) string {\n\ti := strings.LastIndex(name, \"/\")\n\tname = name[i+1:]\n\ti = strings.Index(name, \".\")\n\treturn name[i+1:]\n}\n\nfunc trimGOPATH(name, file string) string {\n\t// Here we want to get the source file path relative to the compile time\n\t// GOPATH. As of Go 1.6.x there is no direct way to know the compiled\n\t// GOPATH at runtime, but we can infer the number of path segments in the\n\t// GOPATH. We note that fn.Name() returns the function name qualified by\n\t// the import path, which does not include the GOPATH. Thus we can trim\n\t// segments from the beginning of the file path until the number of path\n\t// separators remaining is one more than the number of path separators in\n\t// the function name. For example, given:\n\t//\n\t//    GOPATH     /home/user\n\t//    file       /home/user/src/pkg/sub/file.go\n\t//    fn.Name()  pkg/sub.Type.Method\n\t//\n\t// We want to produce:\n\t//\n\t//    pkg/sub/file.go\n\t//\n\t// From this we can easily see that fn.Name() has one less path separator\n\t// than our desired output. We count separators from the end of the file\n\t// path until it finds two more than in the function name and then move\n\t// one character forward to preserve the initial path segment without a\n\t// leading separator.\n\tconst sep = \"/\"\n\tgoal := strings.Count(name, sep) + 2\n\ti := len(file)\n\tfor n := 0; n < goal; n++ {\n\t\ti = strings.LastIndex(file[:i], sep)\n\t\tif i == -1 {\n\t\t\t// not enough separators found, set i so that the slice expression\n\t\t\t// below leaves file unmodified\n\t\t\ti = -len(sep)\n\t\t\tbreak\n\t\t}\n\t}\n\t// get back to 0 or trim the leading separator\n\tfile = file[i+len(sep):]\n\treturn file\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/.travis.yml",
    "content": "sudo: false\r\nlanguage: go\r\n\r\ngo:\r\n  - 1.9\r\n  - \"1.10\"\r\n  - tip\r\n\r\nos:\r\n  - linux\r\n  - osx\r\n\r\nmatrix:\r\n  allow_failures:\r\n    - go: tip\r\n  fast_finish: true\r\n\r\nscript:\r\n  - go build\r\n  - go test -race -v ./...\r\n\r\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/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"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/README.md",
    "content": "![afero logo-sm](https://cloud.githubusercontent.com/assets/173412/11490338/d50e16dc-97a5-11e5-8b12-019a300d0fcb.png)\n\nA FileSystem Abstraction System for Go\n\n[![Build Status](https://travis-ci.org/spf13/afero.svg)](https://travis-ci.org/spf13/afero) [![Build status](https://ci.appveyor.com/api/projects/status/github/spf13/afero?branch=master&svg=true)](https://ci.appveyor.com/project/spf13/afero) [![GoDoc](https://godoc.org/github.com/spf13/afero?status.svg)](https://godoc.org/github.com/spf13/afero) [![Join the chat at https://gitter.im/spf13/afero](https://badges.gitter.im/Dev%20Chat.svg)](https://gitter.im/spf13/afero?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n# Overview\n\nAfero is an filesystem framework providing a simple, uniform and universal API\ninteracting with any filesystem, as an abstraction layer providing interfaces,\ntypes and methods. Afero has an exceptionally clean interface and simple design\nwithout needless constructors or initialization methods.\n\nAfero is also a library providing a base set of interoperable backend\nfilesystems that make it easy to work with afero while retaining all the power\nand benefit of the os and ioutil packages.\n\nAfero provides significant improvements over using the os package alone, most\nnotably the ability to create mock and testing filesystems without relying on the disk.\n\nIt is suitable for use in a any situation where you would consider using the OS\npackage as it provides an additional abstraction that makes it easy to use a\nmemory backed file system during testing. It also adds support for the http\nfilesystem for full interoperability.\n\n\n## Afero Features\n\n* A single consistent API for accessing a variety of filesystems\n* Interoperation between a variety of file system types\n* A set of interfaces to encourage and enforce interoperability between backends\n* An atomic cross platform memory backed file system\n* Support for compositional (union) file systems by combining multiple file systems acting as one\n* Specialized backends which modify existing filesystems (Read Only, Regexp filtered)\n* A set of utility functions ported from io, ioutil & hugo to be afero aware\n\n\n# Using Afero\n\nAfero is easy to use and easier to adopt.\n\nA few different ways you could use Afero:\n\n* Use the interfaces alone to define you own file system.\n* Wrap for the OS packages.\n* Define different filesystems for different parts of your application.\n* Use Afero for mock filesystems while testing\n\n## Step 1: Install Afero\n\nFirst use go get to install the latest version of the library.\n\n    $ go get github.com/spf13/afero\n\nNext include Afero in your application.\n```go\nimport \"github.com/spf13/afero\"\n```\n\n## Step 2: Declare a backend\n\nFirst define a package variable and set it to a pointer to a filesystem.\n```go\nvar AppFs = afero.NewMemMapFs()\n\nor\n\nvar AppFs = afero.NewOsFs()\n```\nIt is important to note that if you repeat the composite literal you\nwill be using a completely new and isolated filesystem. In the case of\nOsFs it will still use the same underlying filesystem but will reduce\nthe ability to drop in other filesystems as desired.\n\n## Step 3: Use it like you would the OS package\n\nThroughout your application use any function and method like you normally\nwould.\n\nSo if my application before had:\n```go\nos.Open('/tmp/foo')\n```\nWe would replace it with:\n```go\nAppFs.Open('/tmp/foo')\n```\n\n`AppFs` being the variable we defined above.\n\n\n## List of all available functions\n\nFile System Methods Available:\n```go\nChmod(name string, mode os.FileMode) : error\nChtimes(name string, atime time.Time, mtime time.Time) : error\nCreate(name string) : File, error\nMkdir(name string, perm os.FileMode) : error\nMkdirAll(path string, perm os.FileMode) : error\nName() : string\nOpen(name string) : File, error\nOpenFile(name string, flag int, perm os.FileMode) : File, error\nRemove(name string) : error\nRemoveAll(path string) : error\nRename(oldname, newname string) : error\nStat(name string) : os.FileInfo, error\n```\nFile Interfaces and Methods Available:\n```go\nio.Closer\nio.Reader\nio.ReaderAt\nio.Seeker\nio.Writer\nio.WriterAt\n\nName() : string\nReaddir(count int) : []os.FileInfo, error\nReaddirnames(n int) : []string, error\nStat() : os.FileInfo, error\nSync() : error\nTruncate(size int64) : error\nWriteString(s string) : ret int, err error\n```\nIn some applications it may make sense to define a new package that\nsimply exports the file system variable for easy access from anywhere.\n\n## Using Afero's utility functions\n\nAfero provides a set of functions to make it easier to use the underlying file systems.\nThese functions have been primarily ported from io & ioutil with some developed for Hugo.\n\nThe afero utilities support all afero compatible backends.\n\nThe list of utilities includes:\n\n```go\nDirExists(path string) (bool, error)\nExists(path string) (bool, error)\nFileContainsBytes(filename string, subslice []byte) (bool, error)\nGetTempDir(subPath string) string\nIsDir(path string) (bool, error)\nIsEmpty(path string) (bool, error)\nReadDir(dirname string) ([]os.FileInfo, error)\nReadFile(filename string) ([]byte, error)\nSafeWriteReader(path string, r io.Reader) (err error)\nTempDir(dir, prefix string) (name string, err error)\nTempFile(dir, prefix string) (f File, err error)\nWalk(root string, walkFn filepath.WalkFunc) error\nWriteFile(filename string, data []byte, perm os.FileMode) error\nWriteReader(path string, r io.Reader) (err error)\n```\nFor a complete list see [Afero's GoDoc](https://godoc.org/github.com/spf13/afero)\n\nThey are available under two different approaches to use. You can either call\nthem directly where the first parameter of each function will be the file\nsystem, or you can declare a new `Afero`, a custom type used to bind these\nfunctions as methods to a given filesystem.\n\n### Calling utilities directly\n\n```go\nfs := new(afero.MemMapFs)\nf, err := afero.TempFile(fs,\"\", \"ioutil-test\")\n\n```\n\n### Calling via Afero\n\n```go\nfs := afero.NewMemMapFs()\nafs := &afero.Afero{Fs: fs}\nf, err := afs.TempFile(\"\", \"ioutil-test\")\n```\n\n## Using Afero for Testing\n\nThere is a large benefit to using a mock filesystem for testing. It has a\ncompletely blank state every time it is initialized and can be easily\nreproducible regardless of OS. You could create files to your heart’s content\nand the file access would be fast while also saving you from all the annoying\nissues with deleting temporary files, Windows file locking, etc. The MemMapFs\nbackend is perfect for testing.\n\n* Much faster than performing I/O operations on disk\n* Avoid security issues and permissions\n* Far more control. 'rm -rf /' with confidence\n* Test setup is far more easier to do\n* No test cleanup needed\n\nOne way to accomplish this is to define a variable as mentioned above.\nIn your application this will be set to afero.NewOsFs() during testing you\ncan set it to afero.NewMemMapFs().\n\nIt wouldn't be uncommon to have each test initialize a blank slate memory\nbackend. To do this I would define my `appFS = afero.NewOsFs()` somewhere\nappropriate in my application code. This approach ensures that Tests are order\nindependent, with no test relying on the state left by an earlier test.\n\nThen in my tests I would initialize a new MemMapFs for each test:\n```go\nfunc TestExist(t *testing.T) {\n\tappFS := afero.NewMemMapFs()\n\t// create test files and directories\n\tappFS.MkdirAll(\"src/a\", 0755)\n\tafero.WriteFile(appFS, \"src/a/b\", []byte(\"file b\"), 0644)\n\tafero.WriteFile(appFS, \"src/c\", []byte(\"file c\"), 0644)\n\tname := \"src/c\"\n\t_, err := appFS.Stat(name)\n\tif os.IsNotExist(err) {\n\t\tt.Errorf(\"file \\\"%s\\\" does not exist.\\n\", name)\n\t}\n}\n```\n\n# Available Backends\n\n## Operating System Native\n\n### OsFs\n\nThe first is simply a wrapper around the native OS calls. This makes it\nvery easy to use as all of the calls are the same as the existing OS\ncalls. It also makes it trivial to have your code use the OS during\noperation and a mock filesystem during testing or as needed.\n\n```go\nappfs := afero.NewOsFs()\nappfs.MkdirAll(\"src/a\", 0755))\n```\n\n## Memory Backed Storage\n\n### MemMapFs\n\nAfero also provides a fully atomic memory backed filesystem perfect for use in\nmocking and to speed up unnecessary disk io when persistence isn’t\nnecessary. It is fully concurrent and will work within go routines\nsafely.\n\n```go\nmm := afero.NewMemMapFs()\nmm.MkdirAll(\"src/a\", 0755))\n```\n\n#### InMemoryFile\n\nAs part of MemMapFs, Afero also provides an atomic, fully concurrent memory\nbacked file implementation. This can be used in other memory backed file\nsystems with ease. Plans are to add a radix tree memory stored file\nsystem using InMemoryFile.\n\n## Network Interfaces\n\n### SftpFs\n\nAfero has experimental support for secure file transfer protocol (sftp). Which can\nbe used to perform file operations over a encrypted channel.\n\n## Filtering Backends\n\n### BasePathFs\n\nThe BasePathFs restricts all operations to a given path within an Fs.\nThe given file name to the operations on this Fs will be prepended with\nthe base path before calling the source Fs.\n\n```go\nbp := afero.NewBasePathFs(afero.NewOsFs(), \"/base/path\")\n```\n\n### ReadOnlyFs\n\nA thin wrapper around the source Fs providing a read only view.\n\n```go\nfs := afero.NewReadOnlyFs(afero.NewOsFs())\n_, err := fs.Create(\"/file.txt\")\n// err = syscall.EPERM\n```\n\n# RegexpFs\n\nA filtered view on file names, any file NOT matching\nthe passed regexp will be treated as non-existing.\nFiles not matching the regexp provided will not be created.\nDirectories are not filtered.\n\n```go\nfs := afero.NewRegexpFs(afero.NewMemMapFs(), regexp.MustCompile(`\\.txt$`))\n_, err := fs.Create(\"/file.html\")\n// err = syscall.ENOENT\n```\n\n### HttpFs\n\nAfero provides an http compatible backend which can wrap any of the existing\nbackends.\n\nThe Http package requires a slightly specific version of Open which\nreturns an http.File type.\n\nAfero provides an httpFs file system which satisfies this requirement.\nAny Afero FileSystem can be used as an httpFs.\n\n```go\nhttpFs := afero.NewHttpFs(<ExistingFS>)\nfileserver := http.FileServer(httpFs.Dir(<PATH>)))\nhttp.Handle(\"/\", fileserver)\n```\n\n## Composite Backends\n\nAfero provides the ability have two filesystems (or more) act as a single\nfile system.\n\n### CacheOnReadFs\n\nThe CacheOnReadFs will lazily make copies of any accessed files from the base\nlayer into the overlay. Subsequent reads will be pulled from the overlay\ndirectly permitting the request is within the cache duration of when it was\ncreated in the overlay.\n\nIf the base filesystem is writeable, any changes to files will be\ndone first to the base, then to the overlay layer. Write calls to open file\nhandles like `Write()` or `Truncate()` to the overlay first.\n\nTo writing files to the overlay only, you can use the overlay Fs directly (not\nvia the union Fs).\n\nCache files in the layer for the given time.Duration, a cache duration of 0\nmeans \"forever\" meaning the file will not be re-requested from the base ever.\n\nA read-only base will make the overlay also read-only but still copy files\nfrom the base to the overlay when they're not present (or outdated) in the\ncaching layer.\n\n```go\nbase := afero.NewOsFs()\nlayer := afero.NewMemMapFs()\nufs := afero.NewCacheOnReadFs(base, layer, 100 * time.Second)\n```\n\n### CopyOnWriteFs()\n\nThe CopyOnWriteFs is a read only base file system with a potentially\nwriteable layer on top.\n\nRead operations will first look in the overlay and if not found there, will\nserve the file from the base.\n\nChanges to the file system will only be made in the overlay.\n\nAny attempt to modify a file found only in the base will copy the file to the\noverlay layer before modification (including opening a file with a writable\nhandle).\n\nRemoving and Renaming files present only in the base layer is not currently\npermitted. If a file is present in the base layer and the overlay, only the\noverlay will be removed/renamed.\n\n```go\n\tbase := afero.NewOsFs()\n\troBase := afero.NewReadOnlyFs(base)\n\tufs := afero.NewCopyOnWriteFs(roBase, afero.NewMemMapFs())\n\n\tfh, _ = ufs.Create(\"/home/test/file2.txt\")\n\tfh.WriteString(\"This is a test\")\n\tfh.Close()\n```\n\nIn this example all write operations will only occur in memory (MemMapFs)\nleaving the base filesystem (OsFs) untouched.\n\n\n## Desired/possible backends\n\nThe following is a short list of possible backends we hope someone will\nimplement:\n\n* SSH\n* ZIP\n* TAR\n* S3\n\n# About the project\n\n## What's in the name\n\nAfero comes from the latin roots Ad-Facere.\n\n**\"Ad\"** is a prefix meaning \"to\".\n\n**\"Facere\"** is a form of the root \"faciō\" making \"make or do\".\n\nThe literal meaning of afero is \"to make\" or \"to do\" which seems very fitting\nfor a library that allows one to make files and directories and do things with them.\n\nThe English word that shares the same roots as Afero is \"affair\". Affair shares\nthe same concept but as a noun it means \"something that is made or done\" or \"an\nobject of a particular type\".\n\nIt's also nice that unlike some of my other libraries (hugo, cobra, viper) it\nGoogles very well.\n\n## Release Notes\n\n* **0.10.0** 2015.12.10\n  * Full compatibility with Windows\n  * Introduction of afero utilities\n  * Test suite rewritten to work cross platform\n  * Normalize paths for MemMapFs\n  * Adding Sync to the file interface\n  * **Breaking Change** Walk and ReadDir have changed parameter order\n  * Moving types used by MemMapFs to a subpackage\n  * General bugfixes and improvements\n* **0.9.0** 2015.11.05\n  * New Walk function similar to filepath.Walk\n  * MemMapFs.OpenFile handles O_CREATE, O_APPEND, O_TRUNC\n  * MemMapFs.Remove now really deletes the file\n  * InMemoryFile.Readdir and Readdirnames work correctly\n  * InMemoryFile functions lock it for concurrent access\n  * Test suite improvements\n* **0.8.0** 2014.10.28\n  * First public version\n  * Interfaces feel ready for people to build using\n  * Interfaces satisfy all known uses\n  * MemMapFs passes the majority of the OS test suite\n  * OsFs passes the majority of the OS test suite\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\n## Contributors\n\nNames in no particular order:\n\n* [spf13](https://github.com/spf13)\n* [jaqx0r](https://github.com/jaqx0r)\n* [mbertschler](https://github.com/mbertschler)\n* [xor-gate](https://github.com/xor-gate)\n\n## License\n\nAfero is released under the Apache 2.0 license. See\n[LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/afero.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n// Copyright 2013 tsuru authors. All rights reserved.\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// 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// Package afero provides types and methods for interacting with the filesystem,\n// as an abstraction layer.\n\n// Afero also provides a few implementations that are mostly interoperable. One that\n// uses the operating system filesystem, one that uses memory to store files\n// (cross platform) and an interface that should be implemented if you want to\n// provide your own filesystem.\n\npackage afero\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n)\n\ntype Afero struct {\n\tFs\n}\n\n// File represents a file in the filesystem.\ntype File interface {\n\tio.Closer\n\tio.Reader\n\tio.ReaderAt\n\tio.Seeker\n\tio.Writer\n\tio.WriterAt\n\n\tName() string\n\tReaddir(count int) ([]os.FileInfo, error)\n\tReaddirnames(n int) ([]string, error)\n\tStat() (os.FileInfo, error)\n\tSync() error\n\tTruncate(size int64) error\n\tWriteString(s string) (ret int, err error)\n}\n\n// Fs is the filesystem interface.\n//\n// Any simulated or real filesystem should implement this interface.\ntype Fs interface {\n\t// Create creates a file in the filesystem, returning the file and an\n\t// error, if any happens.\n\tCreate(name string) (File, error)\n\n\t// Mkdir creates a directory in the filesystem, return an error if any\n\t// happens.\n\tMkdir(name string, perm os.FileMode) error\n\n\t// MkdirAll creates a directory path and all parents that does not exist\n\t// yet.\n\tMkdirAll(path string, perm os.FileMode) error\n\n\t// Open opens a file, returning it or an error, if any happens.\n\tOpen(name string) (File, error)\n\n\t// OpenFile opens a file using the given flags and the given mode.\n\tOpenFile(name string, flag int, perm os.FileMode) (File, error)\n\n\t// Remove removes a file identified by name, returning an error, if any\n\t// happens.\n\tRemove(name string) error\n\n\t// RemoveAll removes a directory path and any children it contains. It\n\t// does not fail if the path does not exist (return nil).\n\tRemoveAll(path string) error\n\n\t// Rename renames a file.\n\tRename(oldname, newname string) error\n\n\t// Stat returns a FileInfo describing the named file, or an error, if any\n\t// happens.\n\tStat(name string) (os.FileInfo, error)\n\n\t// The name of this FileSystem\n\tName() string\n\n\t//Chmod changes the mode of the named file to mode.\n\tChmod(name string, mode os.FileMode) error\n\n\t//Chtimes changes the access and modification times of the named file\n\tChtimes(name string, atime time.Time, mtime time.Time) error\n}\n\nvar (\n\tErrFileClosed        = errors.New(\"File is closed\")\n\tErrOutOfRange        = errors.New(\"Out of range\")\n\tErrTooLarge          = errors.New(\"Too large\")\n\tErrFileNotFound      = os.ErrNotExist\n\tErrFileExists        = os.ErrExist\n\tErrDestinationExists = os.ErrExist\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/appveyor.yml",
    "content": "version: '{build}'\nclone_folder: C:\\gopath\\src\\github.com\\spf13\\afero\nenvironment:\n  GOPATH: C:\\gopath\nbuild_script:\n- cmd: >-\n    go version\n\n    go env\n\n    go get -v github.com/spf13/afero/...\n\n    go build github.com/spf13/afero\ntest_script:\n- cmd: go test -race -v github.com/spf13/afero/...\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/basepath.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar _ Lstater = (*BasePathFs)(nil)\n\n// The BasePathFs restricts all operations to a given path within an Fs.\n// The given file name to the operations on this Fs will be prepended with\n// the base path before calling the base Fs.\n// Any file name (after filepath.Clean()) outside this base path will be\n// treated as non existing file.\n//\n// Note that it does not clean the error messages on return, so you may\n// reveal the real path on errors.\ntype BasePathFs struct {\n\tsource Fs\n\tpath   string\n}\n\ntype BasePathFile struct {\n\tFile\n\tpath string\n}\n\nfunc (f *BasePathFile) Name() string {\n\tsourcename := f.File.Name()\n\treturn strings.TrimPrefix(sourcename, filepath.Clean(f.path))\n}\n\nfunc NewBasePathFs(source Fs, path string) Fs {\n\treturn &BasePathFs{source: source, path: path}\n}\n\n// on a file outside the base path it returns the given file name and an error,\n// else the given file with the base path prepended\nfunc (b *BasePathFs) RealPath(name string) (path string, err error) {\n\tif err := validateBasePathName(name); err != nil {\n\t\treturn name, err\n\t}\n\n\tbpath := filepath.Clean(b.path)\n\tpath = filepath.Clean(filepath.Join(bpath, name))\n\tif !strings.HasPrefix(path, bpath) {\n\t\treturn name, os.ErrNotExist\n\t}\n\n\treturn path, nil\n}\n\nfunc validateBasePathName(name string) error {\n\tif runtime.GOOS != \"windows\" {\n\t\t// Not much to do here;\n\t\t// the virtual file paths all look absolute on *nix.\n\t\treturn nil\n\t}\n\n\t// On Windows a common mistake would be to provide an absolute OS path\n\t// We could strip out the base part, but that would not be very portable.\n\tif filepath.IsAbs(name) {\n\t\treturn os.ErrNotExist\n\t}\n\n\treturn nil\n}\n\nfunc (b *BasePathFs) Chtimes(name string, atime, mtime time.Time) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"chtimes\", Path: name, Err: err}\n\t}\n\treturn b.source.Chtimes(name, atime, mtime)\n}\n\nfunc (b *BasePathFs) Chmod(name string, mode os.FileMode) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"chmod\", Path: name, Err: err}\n\t}\n\treturn b.source.Chmod(name, mode)\n}\n\nfunc (b *BasePathFs) Name() string {\n\treturn \"BasePathFs\"\n}\n\nfunc (b *BasePathFs) Stat(name string) (fi os.FileInfo, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"stat\", Path: name, Err: err}\n\t}\n\treturn b.source.Stat(name)\n}\n\nfunc (b *BasePathFs) Rename(oldname, newname string) (err error) {\n\tif oldname, err = b.RealPath(oldname); err != nil {\n\t\treturn &os.PathError{Op: \"rename\", Path: oldname, Err: err}\n\t}\n\tif newname, err = b.RealPath(newname); err != nil {\n\t\treturn &os.PathError{Op: \"rename\", Path: newname, Err: err}\n\t}\n\treturn b.source.Rename(oldname, newname)\n}\n\nfunc (b *BasePathFs) RemoveAll(name string) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"remove_all\", Path: name, Err: err}\n\t}\n\treturn b.source.RemoveAll(name)\n}\n\nfunc (b *BasePathFs) Remove(name string) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"remove\", Path: name, Err: err}\n\t}\n\treturn b.source.Remove(name)\n}\n\nfunc (b *BasePathFs) OpenFile(name string, flag int, mode os.FileMode) (f File, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"openfile\", Path: name, Err: err}\n\t}\n\tsourcef, err := b.source.OpenFile(name, flag, mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &BasePathFile{sourcef, b.path}, nil\n}\n\nfunc (b *BasePathFs) Open(name string) (f File, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: name, Err: err}\n\t}\n\tsourcef, err := b.source.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &BasePathFile{File: sourcef, path: b.path}, nil\n}\n\nfunc (b *BasePathFs) Mkdir(name string, mode os.FileMode) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: err}\n\t}\n\treturn b.source.Mkdir(name, mode)\n}\n\nfunc (b *BasePathFs) MkdirAll(name string, mode os.FileMode) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: err}\n\t}\n\treturn b.source.MkdirAll(name, mode)\n}\n\nfunc (b *BasePathFs) Create(name string) (f File, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"create\", Path: name, Err: err}\n\t}\n\tsourcef, err := b.source.Create(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &BasePathFile{File: sourcef, path: b.path}, nil\n}\n\nfunc (b *BasePathFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tname, err := b.RealPath(name)\n\tif err != nil {\n\t\treturn nil, false, &os.PathError{Op: \"lstat\", Path: name, Err: err}\n\t}\n\tif lstater, ok := b.source.(Lstater); ok {\n\t\treturn lstater.LstatIfPossible(name)\n\t}\n\tfi, err := b.source.Stat(name)\n\treturn fi, false, err\n}\n\n// vim: ts=4 sw=4 noexpandtab nolist syn=go\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/cacheOnReadFs.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n)\n\n// If the cache duration is 0, cache time will be unlimited, i.e. once\n// a file is in the layer, the base will never be read again for this file.\n//\n// For cache times greater than 0, the modification time of a file is\n// checked. Note that a lot of file system implementations only allow a\n// resolution of a second for timestamps... or as the godoc for os.Chtimes()\n// states: \"The underlying filesystem may truncate or round the values to a\n// less precise time unit.\"\n//\n// This caching union will forward all write calls also to the base file\n// system first. To prevent writing to the base Fs, wrap it in a read-only\n// filter - Note: this will also make the overlay read-only, for writing files\n// in the overlay, use the overlay Fs directly, not via the union Fs.\ntype CacheOnReadFs struct {\n\tbase      Fs\n\tlayer     Fs\n\tcacheTime time.Duration\n}\n\nfunc NewCacheOnReadFs(base Fs, layer Fs, cacheTime time.Duration) Fs {\n\treturn &CacheOnReadFs{base: base, layer: layer, cacheTime: cacheTime}\n}\n\ntype cacheState int\n\nconst (\n\t// not present in the overlay, unknown if it exists in the base:\n\tcacheMiss cacheState = iota\n\t// present in the overlay and in base, base file is newer:\n\tcacheStale\n\t// present in the overlay - with cache time == 0 it may exist in the base,\n\t// with cacheTime > 0 it exists in the base and is same age or newer in the\n\t// overlay\n\tcacheHit\n\t// happens if someone writes directly to the overlay without\n\t// going through this union\n\tcacheLocal\n)\n\nfunc (u *CacheOnReadFs) cacheStatus(name string) (state cacheState, fi os.FileInfo, err error) {\n\tvar lfi, bfi os.FileInfo\n\tlfi, err = u.layer.Stat(name)\n\tif err == nil {\n\t\tif u.cacheTime == 0 {\n\t\t\treturn cacheHit, lfi, nil\n\t\t}\n\t\tif lfi.ModTime().Add(u.cacheTime).Before(time.Now()) {\n\t\t\tbfi, err = u.base.Stat(name)\n\t\t\tif err != nil {\n\t\t\t\treturn cacheLocal, lfi, nil\n\t\t\t}\n\t\t\tif bfi.ModTime().After(lfi.ModTime()) {\n\t\t\t\treturn cacheStale, bfi, nil\n\t\t\t}\n\t\t}\n\t\treturn cacheHit, lfi, nil\n\t}\n\n\tif err == syscall.ENOENT || os.IsNotExist(err) {\n\t\treturn cacheMiss, nil, nil\n\t}\n\n\treturn cacheMiss, nil, err\n}\n\nfunc (u *CacheOnReadFs) copyToLayer(name string) error {\n\treturn copyToLayer(u.base, u.layer, name)\n}\n\nfunc (u *CacheOnReadFs) Chtimes(name string, atime, mtime time.Time) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Chtimes(name, atime, mtime)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Chtimes(name, atime, mtime)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Chtimes(name, atime, mtime)\n}\n\nfunc (u *CacheOnReadFs) Chmod(name string, mode os.FileMode) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Chmod(name, mode)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Chmod(name, mode)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Chmod(name, mode)\n}\n\nfunc (u *CacheOnReadFs) Stat(name string) (os.FileInfo, error) {\n\tst, fi, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch st {\n\tcase cacheMiss:\n\t\treturn u.base.Stat(name)\n\tdefault: // cacheStale has base, cacheHit and cacheLocal the layer os.FileInfo\n\t\treturn fi, nil\n\t}\n}\n\nfunc (u *CacheOnReadFs) Rename(oldname, newname string) error {\n\tst, _, err := u.cacheStatus(oldname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Rename(oldname, newname)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(oldname); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Rename(oldname, newname)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Rename(oldname, newname)\n}\n\nfunc (u *CacheOnReadFs) Remove(name string) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit, cacheStale, cacheMiss:\n\t\terr = u.base.Remove(name)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Remove(name)\n}\n\nfunc (u *CacheOnReadFs) RemoveAll(name string) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit, cacheStale, cacheMiss:\n\t\terr = u.base.RemoveAll(name)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.RemoveAll(name)\n}\n\nfunc (u *CacheOnReadFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch st {\n\tcase cacheLocal, cacheHit:\n\tdefault:\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif flag&(os.O_WRONLY|syscall.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {\n\t\tbfi, err := u.base.OpenFile(name, flag, perm)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tlfi, err := u.layer.OpenFile(name, flag, perm)\n\t\tif err != nil {\n\t\t\tbfi.Close() // oops, what if O_TRUNC was set and file opening in the layer failed...?\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &UnionFile{Base: bfi, Layer: lfi}, nil\n\t}\n\treturn u.layer.OpenFile(name, flag, perm)\n}\n\nfunc (u *CacheOnReadFs) Open(name string) (File, error) {\n\tst, fi, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch st {\n\tcase cacheLocal:\n\t\treturn u.layer.Open(name)\n\n\tcase cacheMiss:\n\t\tbfi, err := u.base.Stat(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif bfi.IsDir() {\n\t\t\treturn u.base.Open(name)\n\t\t}\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn u.layer.Open(name)\n\n\tcase cacheStale:\n\t\tif !fi.IsDir() {\n\t\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn u.layer.Open(name)\n\t\t}\n\tcase cacheHit:\n\t\tif !fi.IsDir() {\n\t\t\treturn u.layer.Open(name)\n\t\t}\n\t}\n\t// the dirs from cacheHit, cacheStale fall down here:\n\tbfile, _ := u.base.Open(name)\n\tlfile, err := u.layer.Open(name)\n\tif err != nil && bfile == nil {\n\t\treturn nil, err\n\t}\n\treturn &UnionFile{Base: bfile, Layer: lfile}, nil\n}\n\nfunc (u *CacheOnReadFs) Mkdir(name string, perm os.FileMode) error {\n\terr := u.base.Mkdir(name, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.MkdirAll(name, perm) // yes, MkdirAll... we cannot assume it exists in the cache\n}\n\nfunc (u *CacheOnReadFs) Name() string {\n\treturn \"CacheOnReadFs\"\n}\n\nfunc (u *CacheOnReadFs) MkdirAll(name string, perm os.FileMode) error {\n\terr := u.base.MkdirAll(name, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.MkdirAll(name, perm)\n}\n\nfunc (u *CacheOnReadFs) Create(name string) (File, error) {\n\tbfh, err := u.base.Create(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlfh, err := u.layer.Create(name)\n\tif err != nil {\n\t\t// oops, see comment about OS_TRUNC above, should we remove? then we have to\n\t\t// remember if the file did not exist before\n\t\tbfh.Close()\n\t\treturn nil, err\n\t}\n\treturn &UnionFile{Base: bfh, Layer: lfh}, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/const_bsds.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\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// 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// +build darwin openbsd freebsd netbsd dragonfly\n\npackage afero\n\nimport (\n\t\"syscall\"\n)\n\nconst BADFD = syscall.EBADF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/const_win_unix.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\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// 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// +build !darwin\n// +build !openbsd\n// +build !freebsd\n// +build !dragonfly\n// +build !netbsd\n\npackage afero\n\nimport (\n\t\"syscall\"\n)\n\nconst BADFD = syscall.EBADFD\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/copyOnWriteFs.go",
    "content": "package afero\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"time\"\n)\n\nvar _ Lstater = (*CopyOnWriteFs)(nil)\n\n// The CopyOnWriteFs is a union filesystem: a read only base file system with\n// a possibly writeable layer on top. Changes to the file system will only\n// be made in the overlay: Changing an existing file in the base layer which\n// is not present in the overlay will copy the file to the overlay (\"changing\"\n// includes also calls to e.g. Chtimes() and Chmod()).\n//\n// Reading directories is currently only supported via Open(), not OpenFile().\ntype CopyOnWriteFs struct {\n\tbase  Fs\n\tlayer Fs\n}\n\nfunc NewCopyOnWriteFs(base Fs, layer Fs) Fs {\n\treturn &CopyOnWriteFs{base: base, layer: layer}\n}\n\n// Returns true if the file is not in the overlay\nfunc (u *CopyOnWriteFs) isBaseFile(name string) (bool, error) {\n\tif _, err := u.layer.Stat(name); err == nil {\n\t\treturn false, nil\n\t}\n\t_, err := u.base.Stat(name)\n\tif err != nil {\n\t\tif oerr, ok := err.(*os.PathError); ok {\n\t\t\tif oerr.Err == os.ErrNotExist || oerr.Err == syscall.ENOENT || oerr.Err == syscall.ENOTDIR {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t}\n\t\tif err == syscall.ENOENT {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\treturn true, err\n}\n\nfunc (u *CopyOnWriteFs) copyToLayer(name string) error {\n\treturn copyToLayer(u.base, u.layer, name)\n}\n\nfunc (u *CopyOnWriteFs) Chtimes(name string, atime, mtime time.Time) error {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn u.layer.Chtimes(name, atime, mtime)\n}\n\nfunc (u *CopyOnWriteFs) Chmod(name string, mode os.FileMode) error {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn u.layer.Chmod(name, mode)\n}\n\nfunc (u *CopyOnWriteFs) Stat(name string) (os.FileInfo, error) {\n\tfi, err := u.layer.Stat(name)\n\tif err != nil {\n\t\tisNotExist := u.isNotExist(err)\n\t\tif isNotExist {\n\t\t\treturn u.base.Stat(name)\n\t\t}\n\t\treturn nil, err\n\t}\n\treturn fi, nil\n}\n\nfunc (u *CopyOnWriteFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tllayer, ok1 := u.layer.(Lstater)\n\tlbase, ok2 := u.base.(Lstater)\n\n\tif ok1 {\n\t\tfi, b, err := llayer.LstatIfPossible(name)\n\t\tif err == nil {\n\t\t\treturn fi, b, nil\n\t\t}\n\n\t\tif !u.isNotExist(err) {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\n\tif ok2 {\n\t\tfi, b, err := lbase.LstatIfPossible(name)\n\t\tif err == nil {\n\t\t\treturn fi, b, nil\n\t\t}\n\t\tif !u.isNotExist(err) {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\n\tfi, err := u.Stat(name)\n\n\treturn fi, false, err\n}\n\nfunc (u *CopyOnWriteFs) isNotExist(err error) bool {\n\tif e, ok := err.(*os.PathError); ok {\n\t\terr = e.Err\n\t}\n\tif err == os.ErrNotExist || err == syscall.ENOENT || err == syscall.ENOTDIR {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Renaming files present only in the base layer is not permitted\nfunc (u *CopyOnWriteFs) Rename(oldname, newname string) error {\n\tb, err := u.isBaseFile(oldname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\treturn syscall.EPERM\n\t}\n\treturn u.layer.Rename(oldname, newname)\n}\n\n// Removing files present only in the base layer is not permitted. If\n// a file is present in the base layer and the overlay, only the overlay\n// will be removed.\nfunc (u *CopyOnWriteFs) Remove(name string) error {\n\terr := u.layer.Remove(name)\n\tswitch err {\n\tcase syscall.ENOENT:\n\t\t_, err = u.base.Stat(name)\n\t\tif err == nil {\n\t\t\treturn syscall.EPERM\n\t\t}\n\t\treturn syscall.ENOENT\n\tdefault:\n\t\treturn err\n\t}\n}\n\nfunc (u *CopyOnWriteFs) RemoveAll(name string) error {\n\terr := u.layer.RemoveAll(name)\n\tswitch err {\n\tcase syscall.ENOENT:\n\t\t_, err = u.base.Stat(name)\n\t\tif err == nil {\n\t\t\treturn syscall.EPERM\n\t\t}\n\t\treturn syscall.ENOENT\n\tdefault:\n\t\treturn err\n\t}\n}\n\nfunc (u *CopyOnWriteFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif flag&(os.O_WRONLY|os.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {\n\t\tif b {\n\t\t\tif err = u.copyToLayer(name); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn u.layer.OpenFile(name, flag, perm)\n\t\t}\n\n\t\tdir := filepath.Dir(name)\n\t\tisaDir, err := IsDir(u.base, dir)\n\t\tif err != nil && !os.IsNotExist(err) {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isaDir {\n\t\t\tif err = u.layer.MkdirAll(dir, 0777); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn u.layer.OpenFile(name, flag, perm)\n\t\t}\n\n\t\tisaDir, err = IsDir(u.layer, dir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isaDir {\n\t\t\treturn u.layer.OpenFile(name, flag, perm)\n\t\t}\n\n\t\treturn nil, &os.PathError{Op: \"open\", Path: name, Err: syscall.ENOTDIR} // ...or os.ErrNotExist?\n\t}\n\tif b {\n\t\treturn u.base.OpenFile(name, flag, perm)\n\t}\n\treturn u.layer.OpenFile(name, flag, perm)\n}\n\n// This function handles the 9 different possibilities caused\n// by the union which are the intersection of the following...\n//  layer: doesn't exist, exists as a file, and exists as a directory\n//  base:  doesn't exist, exists as a file, and exists as a directory\nfunc (u *CopyOnWriteFs) Open(name string) (File, error) {\n\t// Since the overlay overrides the base we check that first\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// If overlay doesn't exist, return the base (base state irrelevant)\n\tif b {\n\t\treturn u.base.Open(name)\n\t}\n\n\t// If overlay is a file, return it (base state irrelevant)\n\tdir, err := IsDir(u.layer, name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !dir {\n\t\treturn u.layer.Open(name)\n\t}\n\n\t// Overlay is a directory, base state now matters.\n\t// Base state has 3 states to check but 2 outcomes:\n\t// A. It's a file or non-readable in the base (return just the overlay)\n\t// B. It's an accessible directory in the base (return a UnionFile)\n\n\t// If base is file or nonreadable, return overlay\n\tdir, err = IsDir(u.base, name)\n\tif !dir || err != nil {\n\t\treturn u.layer.Open(name)\n\t}\n\n\t// Both base & layer are directories\n\t// Return union file (if opens are without error)\n\tbfile, bErr := u.base.Open(name)\n\tlfile, lErr := u.layer.Open(name)\n\n\t// If either have errors at this point something is very wrong. Return nil and the errors\n\tif bErr != nil || lErr != nil {\n\t\treturn nil, fmt.Errorf(\"BaseErr: %v\\nOverlayErr: %v\", bErr, lErr)\n\t}\n\n\treturn &UnionFile{Base: bfile, Layer: lfile}, nil\n}\n\nfunc (u *CopyOnWriteFs) Mkdir(name string, perm os.FileMode) error {\n\tdir, err := IsDir(u.base, name)\n\tif err != nil {\n\t\treturn u.layer.MkdirAll(name, perm)\n\t}\n\tif dir {\n\t\treturn syscall.EEXIST\n\t}\n\treturn u.layer.MkdirAll(name, perm)\n}\n\nfunc (u *CopyOnWriteFs) Name() string {\n\treturn \"CopyOnWriteFs\"\n}\n\nfunc (u *CopyOnWriteFs) MkdirAll(name string, perm os.FileMode) error {\n\tdir, err := IsDir(u.base, name)\n\tif err != nil {\n\t\treturn u.layer.MkdirAll(name, perm)\n\t}\n\tif dir {\n\t\treturn syscall.EEXIST\n\t}\n\treturn u.layer.MkdirAll(name, perm)\n}\n\nfunc (u *CopyOnWriteFs) Create(name string) (File, error) {\n\treturn u.OpenFile(name, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0666)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/go.mod",
    "content": "module github.com/spf13/afero\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/httpFs.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\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// 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 afero\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype httpDir struct {\n\tbasePath string\n\tfs       HttpFs\n}\n\nfunc (d httpDir) Open(name string) (http.File, error) {\n\tif filepath.Separator != '/' && strings.IndexRune(name, filepath.Separator) >= 0 ||\n\t\tstrings.Contains(name, \"\\x00\") {\n\t\treturn nil, errors.New(\"http: invalid character in file path\")\n\t}\n\tdir := string(d.basePath)\n\tif dir == \"\" {\n\t\tdir = \".\"\n\t}\n\n\tf, err := d.fs.Open(filepath.Join(dir, filepath.FromSlash(path.Clean(\"/\"+name))))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn f, nil\n}\n\ntype HttpFs struct {\n\tsource Fs\n}\n\nfunc NewHttpFs(source Fs) *HttpFs {\n\treturn &HttpFs{source: source}\n}\n\nfunc (h HttpFs) Dir(s string) *httpDir {\n\treturn &httpDir{basePath: s, fs: h}\n}\n\nfunc (h HttpFs) Name() string { return \"h HttpFs\" }\n\nfunc (h HttpFs) Create(name string) (File, error) {\n\treturn h.source.Create(name)\n}\n\nfunc (h HttpFs) Chmod(name string, mode os.FileMode) error {\n\treturn h.source.Chmod(name, mode)\n}\n\nfunc (h HttpFs) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\treturn h.source.Chtimes(name, atime, mtime)\n}\n\nfunc (h HttpFs) Mkdir(name string, perm os.FileMode) error {\n\treturn h.source.Mkdir(name, perm)\n}\n\nfunc (h HttpFs) MkdirAll(path string, perm os.FileMode) error {\n\treturn h.source.MkdirAll(path, perm)\n}\n\nfunc (h HttpFs) Open(name string) (http.File, error) {\n\tf, err := h.source.Open(name)\n\tif err == nil {\n\t\tif httpfile, ok := f.(http.File); ok {\n\t\t\treturn httpfile, nil\n\t\t}\n\t}\n\treturn nil, err\n}\n\nfunc (h HttpFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\treturn h.source.OpenFile(name, flag, perm)\n}\n\nfunc (h HttpFs) Remove(name string) error {\n\treturn h.source.Remove(name)\n}\n\nfunc (h HttpFs) RemoveAll(path string) error {\n\treturn h.source.RemoveAll(path)\n}\n\nfunc (h HttpFs) Rename(oldname, newname string) error {\n\treturn h.source.Rename(oldname, newname)\n}\n\nfunc (h HttpFs) Stat(name string) (os.FileInfo, error) {\n\treturn h.source.Stat(name)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/ioutil.go",
    "content": "// Copyright ©2015 The Go Authors\n// Copyright ©2015 Steve Francia <spf@spf13.com>\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 afero\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n)\n\n// byName implements sort.Interface.\ntype byName []os.FileInfo\n\nfunc (f byName) Len() int           { return len(f) }\nfunc (f byName) Less(i, j int) bool { return f[i].Name() < f[j].Name() }\nfunc (f byName) Swap(i, j int)      { f[i], f[j] = f[j], f[i] }\n\n// ReadDir reads the directory named by dirname and returns\n// a list of sorted directory entries.\nfunc (a Afero) ReadDir(dirname string) ([]os.FileInfo, error) {\n\treturn ReadDir(a.Fs, dirname)\n}\n\nfunc ReadDir(fs Fs, dirname string) ([]os.FileInfo, error) {\n\tf, err := fs.Open(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlist, err := f.Readdir(-1)\n\tf.Close()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsort.Sort(byName(list))\n\treturn list, nil\n}\n\n// ReadFile reads the file named by filename and returns the contents.\n// A successful call returns err == nil, not err == EOF. Because ReadFile\n// reads the whole file, it does not treat an EOF from Read as an error\n// to be reported.\nfunc (a Afero) ReadFile(filename string) ([]byte, error) {\n\treturn ReadFile(a.Fs, filename)\n}\n\nfunc ReadFile(fs Fs, filename string) ([]byte, error) {\n\tf, err := fs.Open(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\t// It's a good but not certain bet that FileInfo will tell us exactly how much to\n\t// read, so let's try it but be prepared for the answer to be wrong.\n\tvar n int64\n\n\tif fi, err := f.Stat(); err == nil {\n\t\t// Don't preallocate a huge buffer, just in case.\n\t\tif size := fi.Size(); size < 1e9 {\n\t\t\tn = size\n\t\t}\n\t}\n\t// As initial capacity for readAll, use n + a little extra in case Size is zero,\n\t// and to avoid another allocation after Read has filled the buffer.  The readAll\n\t// call will read into its allocated internal buffer cheaply.  If the size was\n\t// wrong, we'll either waste some space off the end or reallocate as needed, but\n\t// in the overwhelmingly common case we'll get it just right.\n\treturn readAll(f, n+bytes.MinRead)\n}\n\n// readAll reads from r until an error or EOF and returns the data it read\n// from the internal buffer allocated with a specified capacity.\nfunc readAll(r io.Reader, capacity int64) (b []byte, err error) {\n\tbuf := bytes.NewBuffer(make([]byte, 0, capacity))\n\t// If the buffer overflows, we will get bytes.ErrTooLarge.\n\t// Return that as an error. Any other panic remains.\n\tdefer func() {\n\t\te := recover()\n\t\tif e == nil {\n\t\t\treturn\n\t\t}\n\t\tif panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge {\n\t\t\terr = panicErr\n\t\t} else {\n\t\t\tpanic(e)\n\t\t}\n\t}()\n\t_, err = buf.ReadFrom(r)\n\treturn buf.Bytes(), err\n}\n\n// ReadAll reads from r until an error or EOF and returns the data it read.\n// A successful call returns err == nil, not err == EOF. Because ReadAll is\n// defined to read from src until EOF, it does not treat an EOF from Read\n// as an error to be reported.\nfunc ReadAll(r io.Reader) ([]byte, error) {\n\treturn readAll(r, bytes.MinRead)\n}\n\n// WriteFile writes data to a file named by filename.\n// If the file does not exist, WriteFile creates it with permissions perm;\n// otherwise WriteFile truncates it before writing.\nfunc (a Afero) WriteFile(filename string, data []byte, perm os.FileMode) error {\n\treturn WriteFile(a.Fs, filename, data, perm)\n}\n\nfunc WriteFile(fs Fs, filename string, data []byte, perm os.FileMode) error {\n\tf, err := fs.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\tn, err := f.Write(data)\n\tif err == nil && n < len(data) {\n\t\terr = io.ErrShortWrite\n\t}\n\tif err1 := f.Close(); err == nil {\n\t\terr = err1\n\t}\n\treturn err\n}\n\n// Random number state.\n// We generate random temporary file names so that there's a good\n// chance the file doesn't exist yet - keeps the number of tries in\n// TempFile to a minimum.\nvar rand uint32\nvar randmu sync.Mutex\n\nfunc reseed() uint32 {\n\treturn uint32(time.Now().UnixNano() + int64(os.Getpid()))\n}\n\nfunc nextSuffix() string {\n\trandmu.Lock()\n\tr := rand\n\tif r == 0 {\n\t\tr = reseed()\n\t}\n\tr = r*1664525 + 1013904223 // constants from Numerical Recipes\n\trand = r\n\trandmu.Unlock()\n\treturn strconv.Itoa(int(1e9 + r%1e9))[1:]\n}\n\n// TempFile creates a new temporary file in the directory dir\n// with a name beginning with prefix, opens the file for reading\n// and writing, and returns the resulting *File.\n// If dir is the empty string, TempFile uses the default directory\n// for temporary files (see os.TempDir).\n// Multiple programs calling TempFile simultaneously\n// will not choose the same file.  The caller can use f.Name()\n// to find the pathname of the file.  It is the caller's responsibility\n// to remove the file when no longer needed.\nfunc (a Afero) TempFile(dir, prefix string) (f File, err error) {\n\treturn TempFile(a.Fs, dir, prefix)\n}\n\nfunc TempFile(fs Fs, dir, prefix string) (f File, err error) {\n\tif dir == \"\" {\n\t\tdir = os.TempDir()\n\t}\n\n\tnconflict := 0\n\tfor i := 0; i < 10000; i++ {\n\t\tname := filepath.Join(dir, prefix+nextSuffix())\n\t\tf, err = fs.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600)\n\t\tif os.IsExist(err) {\n\t\t\tif nconflict++; nconflict > 10 {\n\t\t\t\trandmu.Lock()\n\t\t\t\trand = reseed()\n\t\t\t\trandmu.Unlock()\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\treturn\n}\n\n// TempDir creates a new temporary directory in the directory dir\n// with a name beginning with prefix and returns the path of the\n// new directory.  If dir is the empty string, TempDir uses the\n// default directory for temporary files (see os.TempDir).\n// Multiple programs calling TempDir simultaneously\n// will not choose the same directory.  It is the caller's responsibility\n// to remove the directory when no longer needed.\nfunc (a Afero) TempDir(dir, prefix string) (name string, err error) {\n\treturn TempDir(a.Fs, dir, prefix)\n}\nfunc TempDir(fs Fs, dir, prefix string) (name string, err error) {\n\tif dir == \"\" {\n\t\tdir = os.TempDir()\n\t}\n\n\tnconflict := 0\n\tfor i := 0; i < 10000; i++ {\n\t\ttry := filepath.Join(dir, prefix+nextSuffix())\n\t\terr = fs.Mkdir(try, 0700)\n\t\tif os.IsExist(err) {\n\t\t\tif nconflict++; nconflict > 10 {\n\t\t\t\trandmu.Lock()\n\t\t\t\trand = reseed()\n\t\t\t\trandmu.Unlock()\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif err == nil {\n\t\t\tname = try\n\t\t}\n\t\tbreak\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/lstater.go",
    "content": "// Copyright © 2018 Steve Francia <spf@spf13.com>.\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// 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 afero\n\nimport (\n\t\"os\"\n)\n\n// Lstater is an optional interface in Afero. It is only implemented by the\n// filesystems saying so.\n// It will call Lstat if the filesystem iself is, or it delegates to, the os filesystem.\n// Else it will call Stat.\n// In addtion to the FileInfo, it will return a boolean telling whether Lstat was called or not.\ntype Lstater interface {\n\tLstatIfPossible(name string) (os.FileInfo, bool, error)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/match.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n// Copyright 2009 The Go Authors. All rights reserved.\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// 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 afero\n\nimport (\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Glob returns the names of all files matching pattern or nil\n// if there is no matching file. The syntax of patterns is the same\n// as in Match. The pattern may describe hierarchical names such as\n// /usr/*/bin/ed (assuming the Separator is '/').\n//\n// Glob ignores file system errors such as I/O errors reading directories.\n// The only possible returned error is ErrBadPattern, when pattern\n// is malformed.\n//\n// This was adapted from (http://golang.org/pkg/path/filepath) and uses several\n// built-ins from that package.\nfunc Glob(fs Fs, pattern string) (matches []string, err error) {\n\tif !hasMeta(pattern) {\n\t\t// Lstat not supported by a ll filesystems.\n\t\tif _, err = lstatIfPossible(fs, pattern); err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn []string{pattern}, nil\n\t}\n\n\tdir, file := filepath.Split(pattern)\n\tswitch dir {\n\tcase \"\":\n\t\tdir = \".\"\n\tcase string(filepath.Separator):\n\t// nothing\n\tdefault:\n\t\tdir = dir[0 : len(dir)-1] // chop off trailing separator\n\t}\n\n\tif !hasMeta(dir) {\n\t\treturn glob(fs, dir, file, nil)\n\t}\n\n\tvar m []string\n\tm, err = Glob(fs, dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, d := range m {\n\t\tmatches, err = glob(fs, d, file, matches)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// glob searches for files matching pattern in the directory dir\n// and appends them to matches. If the directory cannot be\n// opened, it returns the existing matches. New matches are\n// added in lexicographical order.\nfunc glob(fs Fs, dir, pattern string, matches []string) (m []string, e error) {\n\tm = matches\n\tfi, err := fs.Stat(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tif !fi.IsDir() {\n\t\treturn\n\t}\n\td, err := fs.Open(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer d.Close()\n\n\tnames, _ := d.Readdirnames(-1)\n\tsort.Strings(names)\n\n\tfor _, n := range names {\n\t\tmatched, err := filepath.Match(pattern, n)\n\t\tif err != nil {\n\t\t\treturn m, err\n\t\t}\n\t\tif matched {\n\t\t\tm = append(m, filepath.Join(dir, n))\n\t\t}\n\t}\n\treturn\n}\n\n// hasMeta reports whether path contains any of the magic characters\n// recognized by Match.\nfunc hasMeta(path string) bool {\n\t// TODO(niemeyer): Should other magic characters be added here?\n\treturn strings.IndexAny(path, \"*?[\") >= 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/mem/dir.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\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// 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 mem\n\ntype Dir interface {\n\tLen() int\n\tNames() []string\n\tFiles() []*FileData\n\tAdd(*FileData)\n\tRemove(*FileData)\n}\n\nfunc RemoveFromMemDir(dir *FileData, f *FileData) {\n\tdir.memDir.Remove(f)\n}\n\nfunc AddToMemDir(dir *FileData, f *FileData) {\n\tdir.memDir.Add(f)\n}\n\nfunc InitializeDir(d *FileData) {\n\tif d.memDir == nil {\n\t\td.dir = true\n\t\td.memDir = &DirMap{}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/mem/dirmap.go",
    "content": "// Copyright © 2015 Steve Francia <spf@spf13.com>.\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// 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 mem\n\nimport \"sort\"\n\ntype DirMap map[string]*FileData\n\nfunc (m DirMap) Len() int           { return len(m) }\nfunc (m DirMap) Add(f *FileData)    { m[f.name] = f }\nfunc (m DirMap) Remove(f *FileData) { delete(m, f.name) }\nfunc (m DirMap) Files() (files []*FileData) {\n\tfor _, f := range m {\n\t\tfiles = append(files, f)\n\t}\n\tsort.Sort(filesSorter(files))\n\treturn files\n}\n\n// implement sort.Interface for []*FileData\ntype filesSorter []*FileData\n\nfunc (s filesSorter) Len() int           { return len(s) }\nfunc (s filesSorter) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\nfunc (s filesSorter) Less(i, j int) bool { return s[i].name < s[j].name }\n\nfunc (m DirMap) Names() (names []string) {\n\tfor x := range m {\n\t\tnames = append(names, x)\n\t}\n\treturn names\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/mem/file.go",
    "content": "// Copyright © 2015 Steve Francia <spf@spf13.com>.\n// Copyright 2013 tsuru authors. All rights reserved.\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// 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 mem\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\nimport \"time\"\n\nconst FilePathSeparator = string(filepath.Separator)\n\ntype File struct {\n\t// atomic requires 64-bit alignment for struct field access\n\tat           int64\n\treadDirCount int64\n\tclosed       bool\n\treadOnly     bool\n\tfileData     *FileData\n}\n\nfunc NewFileHandle(data *FileData) *File {\n\treturn &File{fileData: data}\n}\n\nfunc NewReadOnlyFileHandle(data *FileData) *File {\n\treturn &File{fileData: data, readOnly: true}\n}\n\nfunc (f File) Data() *FileData {\n\treturn f.fileData\n}\n\ntype FileData struct {\n\tsync.Mutex\n\tname    string\n\tdata    []byte\n\tmemDir  Dir\n\tdir     bool\n\tmode    os.FileMode\n\tmodtime time.Time\n}\n\nfunc (d *FileData) Name() string {\n\td.Lock()\n\tdefer d.Unlock()\n\treturn d.name\n}\n\nfunc CreateFile(name string) *FileData {\n\treturn &FileData{name: name, mode: os.ModeTemporary, modtime: time.Now()}\n}\n\nfunc CreateDir(name string) *FileData {\n\treturn &FileData{name: name, memDir: &DirMap{}, dir: true}\n}\n\nfunc ChangeFileName(f *FileData, newname string) {\n\tf.Lock()\n\tf.name = newname\n\tf.Unlock()\n}\n\nfunc SetMode(f *FileData, mode os.FileMode) {\n\tf.Lock()\n\tf.mode = mode\n\tf.Unlock()\n}\n\nfunc SetModTime(f *FileData, mtime time.Time) {\n\tf.Lock()\n\tsetModTime(f, mtime)\n\tf.Unlock()\n}\n\nfunc setModTime(f *FileData, mtime time.Time) {\n\tf.modtime = mtime\n}\n\nfunc GetFileInfo(f *FileData) *FileInfo {\n\treturn &FileInfo{f}\n}\n\nfunc (f *File) Open() error {\n\tatomic.StoreInt64(&f.at, 0)\n\tatomic.StoreInt64(&f.readDirCount, 0)\n\tf.fileData.Lock()\n\tf.closed = false\n\tf.fileData.Unlock()\n\treturn nil\n}\n\nfunc (f *File) Close() error {\n\tf.fileData.Lock()\n\tf.closed = true\n\tif !f.readOnly {\n\t\tsetModTime(f.fileData, time.Now())\n\t}\n\tf.fileData.Unlock()\n\treturn nil\n}\n\nfunc (f *File) Name() string {\n\treturn f.fileData.Name()\n}\n\nfunc (f *File) Stat() (os.FileInfo, error) {\n\treturn &FileInfo{f.fileData}, nil\n}\n\nfunc (f *File) Sync() error {\n\treturn nil\n}\n\nfunc (f *File) Readdir(count int) (res []os.FileInfo, err error) {\n\tif !f.fileData.dir {\n\t\treturn nil, &os.PathError{Op: \"readdir\", Path: f.fileData.name, Err: errors.New(\"not a dir\")}\n\t}\n\tvar outLength int64\n\n\tf.fileData.Lock()\n\tfiles := f.fileData.memDir.Files()[f.readDirCount:]\n\tif count > 0 {\n\t\tif len(files) < count {\n\t\t\toutLength = int64(len(files))\n\t\t} else {\n\t\t\toutLength = int64(count)\n\t\t}\n\t\tif len(files) == 0 {\n\t\t\terr = io.EOF\n\t\t}\n\t} else {\n\t\toutLength = int64(len(files))\n\t}\n\tf.readDirCount += outLength\n\tf.fileData.Unlock()\n\n\tres = make([]os.FileInfo, outLength)\n\tfor i := range res {\n\t\tres[i] = &FileInfo{files[i]}\n\t}\n\n\treturn res, err\n}\n\nfunc (f *File) Readdirnames(n int) (names []string, err error) {\n\tfi, err := f.Readdir(n)\n\tnames = make([]string, len(fi))\n\tfor i, f := range fi {\n\t\t_, names[i] = filepath.Split(f.Name())\n\t}\n\treturn names, err\n}\n\nfunc (f *File) Read(b []byte) (n int, err error) {\n\tf.fileData.Lock()\n\tdefer f.fileData.Unlock()\n\tif f.closed == true {\n\t\treturn 0, ErrFileClosed\n\t}\n\tif len(b) > 0 && int(f.at) == len(f.fileData.data) {\n\t\treturn 0, io.EOF\n\t}\n\tif int(f.at) > len(f.fileData.data) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t}\n\tif len(f.fileData.data)-int(f.at) >= len(b) {\n\t\tn = len(b)\n\t} else {\n\t\tn = len(f.fileData.data) - int(f.at)\n\t}\n\tcopy(b, f.fileData.data[f.at:f.at+int64(n)])\n\tatomic.AddInt64(&f.at, int64(n))\n\treturn\n}\n\nfunc (f *File) ReadAt(b []byte, off int64) (n int, err error) {\n\tatomic.StoreInt64(&f.at, off)\n\treturn f.Read(b)\n}\n\nfunc (f *File) Truncate(size int64) error {\n\tif f.closed == true {\n\t\treturn ErrFileClosed\n\t}\n\tif f.readOnly {\n\t\treturn &os.PathError{Op: \"truncate\", Path: f.fileData.name, Err: errors.New(\"file handle is read only\")}\n\t}\n\tif size < 0 {\n\t\treturn ErrOutOfRange\n\t}\n\tif size > int64(len(f.fileData.data)) {\n\t\tdiff := size - int64(len(f.fileData.data))\n\t\tf.fileData.data = append(f.fileData.data, bytes.Repeat([]byte{00}, int(diff))...)\n\t} else {\n\t\tf.fileData.data = f.fileData.data[0:size]\n\t}\n\tsetModTime(f.fileData, time.Now())\n\treturn nil\n}\n\nfunc (f *File) Seek(offset int64, whence int) (int64, error) {\n\tif f.closed == true {\n\t\treturn 0, ErrFileClosed\n\t}\n\tswitch whence {\n\tcase 0:\n\t\tatomic.StoreInt64(&f.at, offset)\n\tcase 1:\n\t\tatomic.AddInt64(&f.at, int64(offset))\n\tcase 2:\n\t\tatomic.StoreInt64(&f.at, int64(len(f.fileData.data))+offset)\n\t}\n\treturn f.at, nil\n}\n\nfunc (f *File) Write(b []byte) (n int, err error) {\n\tif f.readOnly {\n\t\treturn 0, &os.PathError{Op: \"write\", Path: f.fileData.name, Err: errors.New(\"file handle is read only\")}\n\t}\n\tn = len(b)\n\tcur := atomic.LoadInt64(&f.at)\n\tf.fileData.Lock()\n\tdefer f.fileData.Unlock()\n\tdiff := cur - int64(len(f.fileData.data))\n\tvar tail []byte\n\tif n+int(cur) < len(f.fileData.data) {\n\t\ttail = f.fileData.data[n+int(cur):]\n\t}\n\tif diff > 0 {\n\t\tf.fileData.data = append(bytes.Repeat([]byte{00}, int(diff)), b...)\n\t\tf.fileData.data = append(f.fileData.data, tail...)\n\t} else {\n\t\tf.fileData.data = append(f.fileData.data[:cur], b...)\n\t\tf.fileData.data = append(f.fileData.data, tail...)\n\t}\n\tsetModTime(f.fileData, time.Now())\n\n\tatomic.StoreInt64(&f.at, int64(len(f.fileData.data)))\n\treturn\n}\n\nfunc (f *File) WriteAt(b []byte, off int64) (n int, err error) {\n\tatomic.StoreInt64(&f.at, off)\n\treturn f.Write(b)\n}\n\nfunc (f *File) WriteString(s string) (ret int, err error) {\n\treturn f.Write([]byte(s))\n}\n\nfunc (f *File) Info() *FileInfo {\n\treturn &FileInfo{f.fileData}\n}\n\ntype FileInfo struct {\n\t*FileData\n}\n\n// Implements os.FileInfo\nfunc (s *FileInfo) Name() string {\n\ts.Lock()\n\t_, name := filepath.Split(s.name)\n\ts.Unlock()\n\treturn name\n}\nfunc (s *FileInfo) Mode() os.FileMode {\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn s.mode\n}\nfunc (s *FileInfo) ModTime() time.Time {\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn s.modtime\n}\nfunc (s *FileInfo) IsDir() bool {\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn s.dir\n}\nfunc (s *FileInfo) Sys() interface{} { return nil }\nfunc (s *FileInfo) Size() int64 {\n\tif s.IsDir() {\n\t\treturn int64(42)\n\t}\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn int64(len(s.data))\n}\n\nvar (\n\tErrFileClosed        = errors.New(\"File is closed\")\n\tErrOutOfRange        = errors.New(\"Out of range\")\n\tErrTooLarge          = errors.New(\"Too large\")\n\tErrFileNotFound      = os.ErrNotExist\n\tErrFileExists        = os.ErrExist\n\tErrDestinationExists = os.ErrExist\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/memmap.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\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// 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 afero\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/spf13/afero/mem\"\n)\n\ntype MemMapFs struct {\n\tmu   sync.RWMutex\n\tdata map[string]*mem.FileData\n\tinit sync.Once\n}\n\nfunc NewMemMapFs() Fs {\n\treturn &MemMapFs{}\n}\n\nfunc (m *MemMapFs) getData() map[string]*mem.FileData {\n\tm.init.Do(func() {\n\t\tm.data = make(map[string]*mem.FileData)\n\t\t// Root should always exist, right?\n\t\t// TODO: what about windows?\n\t\tm.data[FilePathSeparator] = mem.CreateDir(FilePathSeparator)\n\t})\n\treturn m.data\n}\n\nfunc (*MemMapFs) Name() string { return \"MemMapFS\" }\n\nfunc (m *MemMapFs) Create(name string) (File, error) {\n\tname = normalizePath(name)\n\tm.mu.Lock()\n\tfile := mem.CreateFile(name)\n\tm.getData()[name] = file\n\tm.registerWithParent(file)\n\tm.mu.Unlock()\n\treturn mem.NewFileHandle(file), nil\n}\n\nfunc (m *MemMapFs) unRegisterWithParent(fileName string) error {\n\tf, err := m.lockfreeOpen(fileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tparent := m.findParent(f)\n\tif parent == nil {\n\t\tlog.Panic(\"parent of \", f.Name(), \" is nil\")\n\t}\n\n\tparent.Lock()\n\tmem.RemoveFromMemDir(parent, f)\n\tparent.Unlock()\n\treturn nil\n}\n\nfunc (m *MemMapFs) findParent(f *mem.FileData) *mem.FileData {\n\tpdir, _ := filepath.Split(f.Name())\n\tpdir = filepath.Clean(pdir)\n\tpfile, err := m.lockfreeOpen(pdir)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn pfile\n}\n\nfunc (m *MemMapFs) registerWithParent(f *mem.FileData) {\n\tif f == nil {\n\t\treturn\n\t}\n\tparent := m.findParent(f)\n\tif parent == nil {\n\t\tpdir := filepath.Dir(filepath.Clean(f.Name()))\n\t\terr := m.lockfreeMkdir(pdir, 0777)\n\t\tif err != nil {\n\t\t\t//log.Println(\"Mkdir error:\", err)\n\t\t\treturn\n\t\t}\n\t\tparent, err = m.lockfreeOpen(pdir)\n\t\tif err != nil {\n\t\t\t//log.Println(\"Open after Mkdir error:\", err)\n\t\t\treturn\n\t\t}\n\t}\n\n\tparent.Lock()\n\tmem.InitializeDir(parent)\n\tmem.AddToMemDir(parent, f)\n\tparent.Unlock()\n}\n\nfunc (m *MemMapFs) lockfreeMkdir(name string, perm os.FileMode) error {\n\tname = normalizePath(name)\n\tx, ok := m.getData()[name]\n\tif ok {\n\t\t// Only return ErrFileExists if it's a file, not a directory.\n\t\ti := mem.FileInfo{FileData: x}\n\t\tif !i.IsDir() {\n\t\t\treturn ErrFileExists\n\t\t}\n\t} else {\n\t\titem := mem.CreateDir(name)\n\t\tm.getData()[name] = item\n\t\tm.registerWithParent(item)\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) Mkdir(name string, perm os.FileMode) error {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\t_, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif ok {\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: ErrFileExists}\n\t}\n\n\tm.mu.Lock()\n\titem := mem.CreateDir(name)\n\tm.getData()[name] = item\n\tm.registerWithParent(item)\n\tm.mu.Unlock()\n\n\tm.Chmod(name, perm|os.ModeDir)\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) MkdirAll(path string, perm os.FileMode) error {\n\terr := m.Mkdir(path, perm)\n\tif err != nil {\n\t\tif err.(*os.PathError).Err == ErrFileExists {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Handle some relative paths\nfunc normalizePath(path string) string {\n\tpath = filepath.Clean(path)\n\n\tswitch path {\n\tcase \".\":\n\t\treturn FilePathSeparator\n\tcase \"..\":\n\t\treturn FilePathSeparator\n\tdefault:\n\t\treturn path\n\t}\n}\n\nfunc (m *MemMapFs) Open(name string) (File, error) {\n\tf, err := m.open(name)\n\tif f != nil {\n\t\treturn mem.NewReadOnlyFileHandle(f), err\n\t}\n\treturn nil, err\n}\n\nfunc (m *MemMapFs) openWrite(name string) (File, error) {\n\tf, err := m.open(name)\n\tif f != nil {\n\t\treturn mem.NewFileHandle(f), err\n\t}\n\treturn nil, err\n}\n\nfunc (m *MemMapFs) open(name string) (*mem.FileData, error) {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: name, Err: ErrFileNotFound}\n\t}\n\treturn f, nil\n}\n\nfunc (m *MemMapFs) lockfreeOpen(name string) (*mem.FileData, error) {\n\tname = normalizePath(name)\n\tf, ok := m.getData()[name]\n\tif ok {\n\t\treturn f, nil\n\t} else {\n\t\treturn nil, ErrFileNotFound\n\t}\n}\n\nfunc (m *MemMapFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tchmod := false\n\tfile, err := m.openWrite(name)\n\tif os.IsNotExist(err) && (flag&os.O_CREATE > 0) {\n\t\tfile, err = m.Create(name)\n\t\tchmod = true\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif flag == os.O_RDONLY {\n\t\tfile = mem.NewReadOnlyFileHandle(file.(*mem.File).Data())\n\t}\n\tif flag&os.O_APPEND > 0 {\n\t\t_, err = file.Seek(0, os.SEEK_END)\n\t\tif err != nil {\n\t\t\tfile.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif flag&os.O_TRUNC > 0 && flag&(os.O_RDWR|os.O_WRONLY) > 0 {\n\t\terr = file.Truncate(0)\n\t\tif err != nil {\n\t\t\tfile.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif chmod {\n\t\tm.Chmod(name, perm)\n\t}\n\treturn file, nil\n}\n\nfunc (m *MemMapFs) Remove(name string) error {\n\tname = normalizePath(name)\n\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\n\tif _, ok := m.getData()[name]; ok {\n\t\terr := m.unRegisterWithParent(name)\n\t\tif err != nil {\n\t\t\treturn &os.PathError{Op: \"remove\", Path: name, Err: err}\n\t\t}\n\t\tdelete(m.getData(), name)\n\t} else {\n\t\treturn &os.PathError{Op: \"remove\", Path: name, Err: os.ErrNotExist}\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) RemoveAll(path string) error {\n\tpath = normalizePath(path)\n\tm.mu.Lock()\n\tm.unRegisterWithParent(path)\n\tm.mu.Unlock()\n\n\tm.mu.RLock()\n\tdefer m.mu.RUnlock()\n\n\tfor p, _ := range m.getData() {\n\t\tif strings.HasPrefix(p, path) {\n\t\t\tm.mu.RUnlock()\n\t\t\tm.mu.Lock()\n\t\t\tdelete(m.getData(), p)\n\t\t\tm.mu.Unlock()\n\t\t\tm.mu.RLock()\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) Rename(oldname, newname string) error {\n\toldname = normalizePath(oldname)\n\tnewname = normalizePath(newname)\n\n\tif oldname == newname {\n\t\treturn nil\n\t}\n\n\tm.mu.RLock()\n\tdefer m.mu.RUnlock()\n\tif _, ok := m.getData()[oldname]; ok {\n\t\tm.mu.RUnlock()\n\t\tm.mu.Lock()\n\t\tm.unRegisterWithParent(oldname)\n\t\tfileData := m.getData()[oldname]\n\t\tdelete(m.getData(), oldname)\n\t\tmem.ChangeFileName(fileData, newname)\n\t\tm.getData()[newname] = fileData\n\t\tm.registerWithParent(fileData)\n\t\tm.mu.Unlock()\n\t\tm.mu.RLock()\n\t} else {\n\t\treturn &os.PathError{Op: \"rename\", Path: oldname, Err: ErrFileNotFound}\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) Stat(name string) (os.FileInfo, error) {\n\tf, err := m.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfi := mem.GetFileInfo(f.(*mem.File).Data())\n\treturn fi, nil\n}\n\nfunc (m *MemMapFs) Chmod(name string, mode os.FileMode) error {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn &os.PathError{Op: \"chmod\", Path: name, Err: ErrFileNotFound}\n\t}\n\n\tm.mu.Lock()\n\tmem.SetMode(f, mode)\n\tm.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn &os.PathError{Op: \"chtimes\", Path: name, Err: ErrFileNotFound}\n\t}\n\n\tm.mu.Lock()\n\tmem.SetModTime(f, mtime)\n\tm.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) List() {\n\tfor _, x := range m.data {\n\t\ty := mem.FileInfo{FileData: x}\n\t\tfmt.Println(x.Name(), y.Size())\n\t}\n}\n\n// func debugMemMapList(fs Fs) {\n// \tif x, ok := fs.(*MemMapFs); ok {\n// \t\tx.List()\n// \t}\n// }\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/os.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n// Copyright 2013 tsuru authors. All rights reserved.\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// 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 afero\n\nimport (\n\t\"os\"\n\t\"time\"\n)\n\nvar _ Lstater = (*OsFs)(nil)\n\n// OsFs is a Fs implementation that uses functions provided by the os package.\n//\n// For details in any method, check the documentation of the os package\n// (http://golang.org/pkg/os/).\ntype OsFs struct{}\n\nfunc NewOsFs() Fs {\n\treturn &OsFs{}\n}\n\nfunc (OsFs) Name() string { return \"OsFs\" }\n\nfunc (OsFs) Create(name string) (File, error) {\n\tf, e := os.Create(name)\n\tif f == nil {\n\t\t// while this looks strange, we need to return a bare nil (of type nil) not\n\t\t// a nil value of type *os.File or nil won't be nil\n\t\treturn nil, e\n\t}\n\treturn f, e\n}\n\nfunc (OsFs) Mkdir(name string, perm os.FileMode) error {\n\treturn os.Mkdir(name, perm)\n}\n\nfunc (OsFs) MkdirAll(path string, perm os.FileMode) error {\n\treturn os.MkdirAll(path, perm)\n}\n\nfunc (OsFs) Open(name string) (File, error) {\n\tf, e := os.Open(name)\n\tif f == nil {\n\t\t// while this looks strange, we need to return a bare nil (of type nil) not\n\t\t// a nil value of type *os.File or nil won't be nil\n\t\treturn nil, e\n\t}\n\treturn f, e\n}\n\nfunc (OsFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tf, e := os.OpenFile(name, flag, perm)\n\tif f == nil {\n\t\t// while this looks strange, we need to return a bare nil (of type nil) not\n\t\t// a nil value of type *os.File or nil won't be nil\n\t\treturn nil, e\n\t}\n\treturn f, e\n}\n\nfunc (OsFs) Remove(name string) error {\n\treturn os.Remove(name)\n}\n\nfunc (OsFs) RemoveAll(path string) error {\n\treturn os.RemoveAll(path)\n}\n\nfunc (OsFs) Rename(oldname, newname string) error {\n\treturn os.Rename(oldname, newname)\n}\n\nfunc (OsFs) Stat(name string) (os.FileInfo, error) {\n\treturn os.Stat(name)\n}\n\nfunc (OsFs) Chmod(name string, mode os.FileMode) error {\n\treturn os.Chmod(name, mode)\n}\n\nfunc (OsFs) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\treturn os.Chtimes(name, atime, mtime)\n}\n\nfunc (OsFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tfi, err := os.Lstat(name)\n\treturn fi, true, err\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/path.go",
    "content": "// Copyright ©2015 The Go Authors\n// Copyright ©2015 Steve Francia <spf@spf13.com>\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 afero\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n)\n\n// readDirNames reads the directory named by dirname and returns\n// a sorted list of directory entries.\n// adapted from https://golang.org/src/path/filepath/path.go\nfunc readDirNames(fs Fs, dirname string) ([]string, error) {\n\tf, err := fs.Open(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnames, err := f.Readdirnames(-1)\n\tf.Close()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsort.Strings(names)\n\treturn names, nil\n}\n\n// walk recursively descends path, calling walkFn\n// adapted from https://golang.org/src/path/filepath/path.go\nfunc walk(fs Fs, path string, info os.FileInfo, walkFn filepath.WalkFunc) error {\n\terr := walkFn(path, info, nil)\n\tif err != nil {\n\t\tif info.IsDir() && err == filepath.SkipDir {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\n\tif !info.IsDir() {\n\t\treturn nil\n\t}\n\n\tnames, err := readDirNames(fs, path)\n\tif err != nil {\n\t\treturn walkFn(path, info, err)\n\t}\n\n\tfor _, name := range names {\n\t\tfilename := filepath.Join(path, name)\n\t\tfileInfo, err := lstatIfPossible(fs, filename)\n\t\tif err != nil {\n\t\t\tif err := walkFn(filename, fileInfo, err); err != nil && err != filepath.SkipDir {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\terr = walk(fs, filename, fileInfo, walkFn)\n\t\t\tif err != nil {\n\t\t\t\tif !fileInfo.IsDir() || err != filepath.SkipDir {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// if the filesystem supports it, use Lstat, else use fs.Stat\nfunc lstatIfPossible(fs Fs, path string) (os.FileInfo, error) {\n\tif lfs, ok := fs.(Lstater); ok {\n\t\tfi, _, err := lfs.LstatIfPossible(path)\n\t\treturn fi, err\n\t}\n\treturn fs.Stat(path)\n}\n\n// Walk walks the file tree rooted at root, calling walkFn for each file or\n// directory in the tree, including root. All errors that arise visiting files\n// and directories are filtered by walkFn. The files are walked in lexical\n// order, which makes the output deterministic but means that for very\n// large directories Walk can be inefficient.\n// Walk does not follow symbolic links.\n\nfunc (a Afero) Walk(root string, walkFn filepath.WalkFunc) error {\n\treturn Walk(a.Fs, root, walkFn)\n}\n\nfunc Walk(fs Fs, root string, walkFn filepath.WalkFunc) error {\n\tinfo, err := lstatIfPossible(fs, root)\n\tif err != nil {\n\t\treturn walkFn(root, nil, err)\n\t}\n\treturn walk(fs, root, info, walkFn)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/readonlyfs.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n)\n\nvar _ Lstater = (*ReadOnlyFs)(nil)\n\ntype ReadOnlyFs struct {\n\tsource Fs\n}\n\nfunc NewReadOnlyFs(source Fs) Fs {\n\treturn &ReadOnlyFs{source: source}\n}\n\nfunc (r *ReadOnlyFs) ReadDir(name string) ([]os.FileInfo, error) {\n\treturn ReadDir(r.source, name)\n}\n\nfunc (r *ReadOnlyFs) Chtimes(n string, a, m time.Time) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Chmod(n string, m os.FileMode) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Name() string {\n\treturn \"ReadOnlyFilter\"\n}\n\nfunc (r *ReadOnlyFs) Stat(name string) (os.FileInfo, error) {\n\treturn r.source.Stat(name)\n}\n\nfunc (r *ReadOnlyFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tif lsf, ok := r.source.(Lstater); ok {\n\t\treturn lsf.LstatIfPossible(name)\n\t}\n\tfi, err := r.Stat(name)\n\treturn fi, false, err\n}\n\nfunc (r *ReadOnlyFs) Rename(o, n string) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) RemoveAll(p string) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Remove(n string) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tif flag&(os.O_WRONLY|syscall.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {\n\t\treturn nil, syscall.EPERM\n\t}\n\treturn r.source.OpenFile(name, flag, perm)\n}\n\nfunc (r *ReadOnlyFs) Open(n string) (File, error) {\n\treturn r.source.Open(n)\n}\n\nfunc (r *ReadOnlyFs) Mkdir(n string, p os.FileMode) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) MkdirAll(n string, p os.FileMode) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Create(n string) (File, error) {\n\treturn nil, syscall.EPERM\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/regexpfs.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"regexp\"\n\t\"syscall\"\n\t\"time\"\n)\n\n// The RegexpFs filters files (not directories) by regular expression. Only\n// files matching the given regexp will be allowed, all others get a ENOENT error (\n// \"No such file or directory\").\n//\ntype RegexpFs struct {\n\tre     *regexp.Regexp\n\tsource Fs\n}\n\nfunc NewRegexpFs(source Fs, re *regexp.Regexp) Fs {\n\treturn &RegexpFs{source: source, re: re}\n}\n\ntype RegexpFile struct {\n\tf  File\n\tre *regexp.Regexp\n}\n\nfunc (r *RegexpFs) matchesName(name string) error {\n\tif r.re == nil {\n\t\treturn nil\n\t}\n\tif r.re.MatchString(name) {\n\t\treturn nil\n\t}\n\treturn syscall.ENOENT\n}\n\nfunc (r *RegexpFs) dirOrMatches(name string) error {\n\tdir, err := IsDir(r.source, name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif dir {\n\t\treturn nil\n\t}\n\treturn r.matchesName(name)\n}\n\nfunc (r *RegexpFs) Chtimes(name string, a, m time.Time) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Chtimes(name, a, m)\n}\n\nfunc (r *RegexpFs) Chmod(name string, mode os.FileMode) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Chmod(name, mode)\n}\n\nfunc (r *RegexpFs) Name() string {\n\treturn \"RegexpFs\"\n}\n\nfunc (r *RegexpFs) Stat(name string) (os.FileInfo, error) {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.source.Stat(name)\n}\n\nfunc (r *RegexpFs) Rename(oldname, newname string) error {\n\tdir, err := IsDir(r.source, oldname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif dir {\n\t\treturn nil\n\t}\n\tif err := r.matchesName(oldname); err != nil {\n\t\treturn err\n\t}\n\tif err := r.matchesName(newname); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Rename(oldname, newname)\n}\n\nfunc (r *RegexpFs) RemoveAll(p string) error {\n\tdir, err := IsDir(r.source, p)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !dir {\n\t\tif err := r.matchesName(p); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn r.source.RemoveAll(p)\n}\n\nfunc (r *RegexpFs) Remove(name string) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Remove(name)\n}\n\nfunc (r *RegexpFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.source.OpenFile(name, flag, perm)\n}\n\nfunc (r *RegexpFs) Open(name string) (File, error) {\n\tdir, err := IsDir(r.source, name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !dir {\n\t\tif err := r.matchesName(name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tf, err := r.source.Open(name)\n\treturn &RegexpFile{f: f, re: r.re}, nil\n}\n\nfunc (r *RegexpFs) Mkdir(n string, p os.FileMode) error {\n\treturn r.source.Mkdir(n, p)\n}\n\nfunc (r *RegexpFs) MkdirAll(n string, p os.FileMode) error {\n\treturn r.source.MkdirAll(n, p)\n}\n\nfunc (r *RegexpFs) Create(name string) (File, error) {\n\tif err := r.matchesName(name); err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.source.Create(name)\n}\n\nfunc (f *RegexpFile) Close() error {\n\treturn f.f.Close()\n}\n\nfunc (f *RegexpFile) Read(s []byte) (int, error) {\n\treturn f.f.Read(s)\n}\n\nfunc (f *RegexpFile) ReadAt(s []byte, o int64) (int, error) {\n\treturn f.f.ReadAt(s, o)\n}\n\nfunc (f *RegexpFile) Seek(o int64, w int) (int64, error) {\n\treturn f.f.Seek(o, w)\n}\n\nfunc (f *RegexpFile) Write(s []byte) (int, error) {\n\treturn f.f.Write(s)\n}\n\nfunc (f *RegexpFile) WriteAt(s []byte, o int64) (int, error) {\n\treturn f.f.WriteAt(s, o)\n}\n\nfunc (f *RegexpFile) Name() string {\n\treturn f.f.Name()\n}\n\nfunc (f *RegexpFile) Readdir(c int) (fi []os.FileInfo, err error) {\n\tvar rfi []os.FileInfo\n\trfi, err = f.f.Readdir(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, i := range rfi {\n\t\tif i.IsDir() || f.re.MatchString(i.Name()) {\n\t\t\tfi = append(fi, i)\n\t\t}\n\t}\n\treturn fi, nil\n}\n\nfunc (f *RegexpFile) Readdirnames(c int) (n []string, err error) {\n\tfi, err := f.Readdir(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, s := range fi {\n\t\tn = append(n, s.Name())\n\t}\n\treturn n, nil\n}\n\nfunc (f *RegexpFile) Stat() (os.FileInfo, error) {\n\treturn f.f.Stat()\n}\n\nfunc (f *RegexpFile) Sync() error {\n\treturn f.f.Sync()\n}\n\nfunc (f *RegexpFile) Truncate(s int64) error {\n\treturn f.f.Truncate(s)\n}\n\nfunc (f *RegexpFile) WriteString(s string) (int, error) {\n\treturn f.f.WriteString(s)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/unionFile.go",
    "content": "package afero\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n)\n\n// The UnionFile implements the afero.File interface and will be returned\n// when reading a directory present at least in the overlay or opening a file\n// for writing.\n//\n// The calls to\n// Readdir() and Readdirnames() merge the file os.FileInfo / names from the\n// base and the overlay - for files present in both layers, only those\n// from the overlay will be used.\n//\n// When opening files for writing (Create() / OpenFile() with the right flags)\n// the operations will be done in both layers, starting with the overlay. A\n// successful read in the overlay will move the cursor position in the base layer\n// by the number of bytes read.\ntype UnionFile struct {\n\tBase   File\n\tLayer  File\n\tMerger DirsMerger\n\toff    int\n\tfiles  []os.FileInfo\n}\n\nfunc (f *UnionFile) Close() error {\n\t// first close base, so we have a newer timestamp in the overlay. If we'd close\n\t// the overlay first, we'd get a cacheStale the next time we access this file\n\t// -> cache would be useless ;-)\n\tif f.Base != nil {\n\t\tf.Base.Close()\n\t}\n\tif f.Layer != nil {\n\t\treturn f.Layer.Close()\n\t}\n\treturn BADFD\n}\n\nfunc (f *UnionFile) Read(s []byte) (int, error) {\n\tif f.Layer != nil {\n\t\tn, err := f.Layer.Read(s)\n\t\tif (err == nil || err == io.EOF) && f.Base != nil {\n\t\t\t// advance the file position also in the base file, the next\n\t\t\t// call may be a write at this position (or a seek with SEEK_CUR)\n\t\t\tif _, seekErr := f.Base.Seek(int64(n), os.SEEK_CUR); seekErr != nil {\n\t\t\t\t// only overwrite err in case the seek fails: we need to\n\t\t\t\t// report an eventual io.EOF to the caller\n\t\t\t\terr = seekErr\n\t\t\t}\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Read(s)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) ReadAt(s []byte, o int64) (int, error) {\n\tif f.Layer != nil {\n\t\tn, err := f.Layer.ReadAt(s, o)\n\t\tif (err == nil || err == io.EOF) && f.Base != nil {\n\t\t\t_, err = f.Base.Seek(o+int64(n), os.SEEK_SET)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.ReadAt(s, o)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) Seek(o int64, w int) (pos int64, err error) {\n\tif f.Layer != nil {\n\t\tpos, err = f.Layer.Seek(o, w)\n\t\tif (err == nil || err == io.EOF) && f.Base != nil {\n\t\t\t_, err = f.Base.Seek(o, w)\n\t\t}\n\t\treturn pos, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Seek(o, w)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) Write(s []byte) (n int, err error) {\n\tif f.Layer != nil {\n\t\tn, err = f.Layer.Write(s)\n\t\tif err == nil && f.Base != nil { // hmm, do we have fixed size files where a write may hit the EOF mark?\n\t\t\t_, err = f.Base.Write(s)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Write(s)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) WriteAt(s []byte, o int64) (n int, err error) {\n\tif f.Layer != nil {\n\t\tn, err = f.Layer.WriteAt(s, o)\n\t\tif err == nil && f.Base != nil {\n\t\t\t_, err = f.Base.WriteAt(s, o)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.WriteAt(s, o)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) Name() string {\n\tif f.Layer != nil {\n\t\treturn f.Layer.Name()\n\t}\n\treturn f.Base.Name()\n}\n\n// DirsMerger is how UnionFile weaves two directories together.\n// It takes the FileInfo slices from the layer and the base and returns a\n// single view.\ntype DirsMerger func(lofi, bofi []os.FileInfo) ([]os.FileInfo, error)\n\nvar defaultUnionMergeDirsFn = func(lofi, bofi []os.FileInfo) ([]os.FileInfo, error) {\n\tvar files = make(map[string]os.FileInfo)\n\n\tfor _, fi := range lofi {\n\t\tfiles[fi.Name()] = fi\n\t}\n\n\tfor _, fi := range bofi {\n\t\tif _, exists := files[fi.Name()]; !exists {\n\t\t\tfiles[fi.Name()] = fi\n\t\t}\n\t}\n\n\trfi := make([]os.FileInfo, len(files))\n\n\ti := 0\n\tfor _, fi := range files {\n\t\trfi[i] = fi\n\t\ti++\n\t}\n\n\treturn rfi, nil\n\n}\n\n// Readdir will weave the two directories together and\n// return a single view of the overlayed directories\nfunc (f *UnionFile) Readdir(c int) (ofi []os.FileInfo, err error) {\n\tvar merge DirsMerger = f.Merger\n\tif merge == nil {\n\t\tmerge = defaultUnionMergeDirsFn\n\t}\n\n\tif f.off == 0 {\n\t\tvar lfi []os.FileInfo\n\t\tif f.Layer != nil {\n\t\t\tlfi, err = f.Layer.Readdir(-1)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tvar bfi []os.FileInfo\n\t\tif f.Base != nil {\n\t\t\tbfi, err = f.Base.Readdir(-1)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t}\n\t\tmerged, err := merge(lfi, bfi)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tf.files = append(f.files, merged...)\n\t}\n\tif c == -1 {\n\t\treturn f.files[f.off:], nil\n\t}\n\tdefer func() { f.off += c }()\n\treturn f.files[f.off:c], nil\n}\n\nfunc (f *UnionFile) Readdirnames(c int) ([]string, error) {\n\trfi, err := f.Readdir(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar names []string\n\tfor _, fi := range rfi {\n\t\tnames = append(names, fi.Name())\n\t}\n\treturn names, nil\n}\n\nfunc (f *UnionFile) Stat() (os.FileInfo, error) {\n\tif f.Layer != nil {\n\t\treturn f.Layer.Stat()\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Stat()\n\t}\n\treturn nil, BADFD\n}\n\nfunc (f *UnionFile) Sync() (err error) {\n\tif f.Layer != nil {\n\t\terr = f.Layer.Sync()\n\t\tif err == nil && f.Base != nil {\n\t\t\terr = f.Base.Sync()\n\t\t}\n\t\treturn err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Sync()\n\t}\n\treturn BADFD\n}\n\nfunc (f *UnionFile) Truncate(s int64) (err error) {\n\tif f.Layer != nil {\n\t\terr = f.Layer.Truncate(s)\n\t\tif err == nil && f.Base != nil {\n\t\t\terr = f.Base.Truncate(s)\n\t\t}\n\t\treturn err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Truncate(s)\n\t}\n\treturn BADFD\n}\n\nfunc (f *UnionFile) WriteString(s string) (n int, err error) {\n\tif f.Layer != nil {\n\t\tn, err = f.Layer.WriteString(s)\n\t\tif err == nil && f.Base != nil {\n\t\t\t_, err = f.Base.WriteString(s)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.WriteString(s)\n\t}\n\treturn 0, BADFD\n}\n\nfunc copyToLayer(base Fs, layer Fs, name string) error {\n\tbfh, err := base.Open(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer bfh.Close()\n\n\t// First make sure the directory exists\n\texists, err := Exists(layer, filepath.Dir(name))\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !exists {\n\t\terr = layer.MkdirAll(filepath.Dir(name), 0777) // FIXME?\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Create the file on the overlay\n\tlfh, err := layer.Create(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tn, err := io.Copy(lfh, bfh)\n\tif err != nil {\n\t\t// If anything fails, clean up the file\n\t\tlayer.Remove(name)\n\t\tlfh.Close()\n\t\treturn err\n\t}\n\n\tbfi, err := bfh.Stat()\n\tif err != nil || bfi.Size() != n {\n\t\tlayer.Remove(name)\n\t\tlfh.Close()\n\t\treturn syscall.EIO\n\t}\n\n\terr = lfh.Close()\n\tif err != nil {\n\t\tlayer.Remove(name)\n\t\tlfh.Close()\n\t\treturn err\n\t}\n\treturn layer.Chtimes(name, bfi.ModTime(), bfi.ModTime())\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/afero/util.go",
    "content": "// Copyright ©2015 Steve Francia <spf@spf13.com>\n// Portions Copyright ©2015 The Hugo Authors\n// Portions Copyright 2016-present Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>\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 afero\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"golang.org/x/text/transform\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// Filepath separator defined by os.Separator.\nconst FilePathSeparator = string(filepath.Separator)\n\n// Takes a reader and a path and writes the content\nfunc (a Afero) WriteReader(path string, r io.Reader) (err error) {\n\treturn WriteReader(a.Fs, path, r)\n}\n\nfunc WriteReader(fs Fs, path string, r io.Reader) (err error) {\n\tdir, _ := filepath.Split(path)\n\tospath := filepath.FromSlash(dir)\n\n\tif ospath != \"\" {\n\t\terr = fs.MkdirAll(ospath, 0777) // rwx, rw, r\n\t\tif err != nil {\n\t\t\tif err != os.ErrExist {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tfile, err := fs.Create(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer file.Close()\n\n\t_, err = io.Copy(file, r)\n\treturn\n}\n\n// Same as WriteReader but checks to see if file/directory already exists.\nfunc (a Afero) SafeWriteReader(path string, r io.Reader) (err error) {\n\treturn SafeWriteReader(a.Fs, path, r)\n}\n\nfunc SafeWriteReader(fs Fs, path string, r io.Reader) (err error) {\n\tdir, _ := filepath.Split(path)\n\tospath := filepath.FromSlash(dir)\n\n\tif ospath != \"\" {\n\t\terr = fs.MkdirAll(ospath, 0777) // rwx, rw, r\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\texists, err := Exists(fs, path)\n\tif err != nil {\n\t\treturn\n\t}\n\tif exists {\n\t\treturn fmt.Errorf(\"%v already exists\", path)\n\t}\n\n\tfile, err := fs.Create(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer file.Close()\n\n\t_, err = io.Copy(file, r)\n\treturn\n}\n\nfunc (a Afero) GetTempDir(subPath string) string {\n\treturn GetTempDir(a.Fs, subPath)\n}\n\n// GetTempDir returns the default temp directory with trailing slash\n// if subPath is not empty then it will be created recursively with mode 777 rwx rwx rwx\nfunc GetTempDir(fs Fs, subPath string) string {\n\taddSlash := func(p string) string {\n\t\tif FilePathSeparator != p[len(p)-1:] {\n\t\t\tp = p + FilePathSeparator\n\t\t}\n\t\treturn p\n\t}\n\tdir := addSlash(os.TempDir())\n\n\tif subPath != \"\" {\n\t\t// preserve windows backslash :-(\n\t\tif FilePathSeparator == \"\\\\\" {\n\t\t\tsubPath = strings.Replace(subPath, \"\\\\\", \"____\", -1)\n\t\t}\n\t\tdir = dir + UnicodeSanitize((subPath))\n\t\tif FilePathSeparator == \"\\\\\" {\n\t\t\tdir = strings.Replace(dir, \"____\", \"\\\\\", -1)\n\t\t}\n\n\t\tif exists, _ := Exists(fs, dir); exists {\n\t\t\treturn addSlash(dir)\n\t\t}\n\n\t\terr := fs.MkdirAll(dir, 0777)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tdir = addSlash(dir)\n\t}\n\treturn dir\n}\n\n// Rewrite string to remove non-standard path characters\nfunc UnicodeSanitize(s string) string {\n\tsource := []rune(s)\n\ttarget := make([]rune, 0, len(source))\n\n\tfor _, r := range source {\n\t\tif unicode.IsLetter(r) ||\n\t\t\tunicode.IsDigit(r) ||\n\t\t\tunicode.IsMark(r) ||\n\t\t\tr == '.' ||\n\t\t\tr == '/' ||\n\t\t\tr == '\\\\' ||\n\t\t\tr == '_' ||\n\t\t\tr == '-' ||\n\t\t\tr == '%' ||\n\t\t\tr == ' ' ||\n\t\t\tr == '#' {\n\t\t\ttarget = append(target, r)\n\t\t}\n\t}\n\n\treturn string(target)\n}\n\n// Transform characters with accents into plain forms.\nfunc NeuterAccents(s string) string {\n\tt := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)\n\tresult, _, _ := transform.String(t, string(s))\n\n\treturn result\n}\n\nfunc isMn(r rune) bool {\n\treturn unicode.Is(unicode.Mn, r) // Mn: nonspacing marks\n}\n\nfunc (a Afero) FileContainsBytes(filename string, subslice []byte) (bool, error) {\n\treturn FileContainsBytes(a.Fs, filename, subslice)\n}\n\n// Check if a file contains a specified byte slice.\nfunc FileContainsBytes(fs Fs, filename string, subslice []byte) (bool, error) {\n\tf, err := fs.Open(filename)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer f.Close()\n\n\treturn readerContainsAny(f, subslice), nil\n}\n\nfunc (a Afero) FileContainsAnyBytes(filename string, subslices [][]byte) (bool, error) {\n\treturn FileContainsAnyBytes(a.Fs, filename, subslices)\n}\n\n// Check if a file contains any of the specified byte slices.\nfunc FileContainsAnyBytes(fs Fs, filename string, subslices [][]byte) (bool, error) {\n\tf, err := fs.Open(filename)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer f.Close()\n\n\treturn readerContainsAny(f, subslices...), nil\n}\n\n// readerContains reports whether any of the subslices is within r.\nfunc readerContainsAny(r io.Reader, subslices ...[]byte) bool {\n\n\tif r == nil || len(subslices) == 0 {\n\t\treturn false\n\t}\n\n\tlargestSlice := 0\n\n\tfor _, sl := range subslices {\n\t\tif len(sl) > largestSlice {\n\t\t\tlargestSlice = len(sl)\n\t\t}\n\t}\n\n\tif largestSlice == 0 {\n\t\treturn false\n\t}\n\n\tbufflen := largestSlice * 4\n\thalflen := bufflen / 2\n\tbuff := make([]byte, bufflen)\n\tvar err error\n\tvar n, i int\n\n\tfor {\n\t\ti++\n\t\tif i == 1 {\n\t\t\tn, err = io.ReadAtLeast(r, buff[:halflen], halflen)\n\t\t} else {\n\t\t\tif i != 2 {\n\t\t\t\t// shift left to catch overlapping matches\n\t\t\t\tcopy(buff[:], buff[halflen:])\n\t\t\t}\n\t\t\tn, err = io.ReadAtLeast(r, buff[halflen:], halflen)\n\t\t}\n\n\t\tif n > 0 {\n\t\t\tfor _, sl := range subslices {\n\t\t\t\tif bytes.Contains(buff, sl) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (a Afero) DirExists(path string) (bool, error) {\n\treturn DirExists(a.Fs, path)\n}\n\n// DirExists checks if a path exists and is a directory.\nfunc DirExists(fs Fs, path string) (bool, error) {\n\tfi, err := fs.Stat(path)\n\tif err == nil && fi.IsDir() {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc (a Afero) IsDir(path string) (bool, error) {\n\treturn IsDir(a.Fs, path)\n}\n\n// IsDir checks if a given path is a directory.\nfunc IsDir(fs Fs, path string) (bool, error) {\n\tfi, err := fs.Stat(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn fi.IsDir(), nil\n}\n\nfunc (a Afero) IsEmpty(path string) (bool, error) {\n\treturn IsEmpty(a.Fs, path)\n}\n\n// IsEmpty checks if a given file or directory is empty.\nfunc IsEmpty(fs Fs, path string) (bool, error) {\n\tif b, _ := Exists(fs, path); !b {\n\t\treturn false, fmt.Errorf(\"%q path does not exist\", path)\n\t}\n\tfi, err := fs.Stat(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tif fi.IsDir() {\n\t\tf, err := fs.Open(path)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tdefer f.Close()\n\t\tlist, err := f.Readdir(-1)\n\t\treturn len(list) == 0, nil\n\t}\n\treturn fi.Size() == 0, nil\n}\n\nfunc (a Afero) Exists(path string) (bool, error) {\n\treturn Exists(a.Fs, path)\n}\n\n// Check if a file or directory exists.\nfunc Exists(fs Fs, path string) (bool, error) {\n\t_, err := fs.Stat(path)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc FullBaseFsPath(basePathFs *BasePathFs, relativePath string) string {\n\tcombinedPath := filepath.Join(basePathFs.path, relativePath)\n\tif parent, ok := basePathFs.source.(*BasePathFs); ok {\n\t\treturn FullBaseFsPath(parent, combinedPath)\n\t}\n\n\treturn combinedPath\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n\n*.bench\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/.travis.yml",
    "content": "language: go\nenv:\n  -  GO111MODULE=on\nsudo: required\ngo:\n  - \"1.11.x\"\n  - tip\nos:\n  - linux\nmatrix:\n  allow_failures:\n    - go: tip\n  fast_finish: true\nscript:\n  - make check\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Steve Francia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/Makefile",
    "content": "# A Self-Documenting Makefile: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html\n\n.PHONY: check fmt lint test test-race vet test-cover-html help\n.DEFAULT_GOAL := help\n\ncheck: test-race fmt vet lint ## Run tests and linters\n\ntest: ## Run tests\n\tgo test ./...\n\ntest-race: ## Run tests with race detector\n\tgo test -race ./...\n\nfmt: ## Run gofmt linter\n\t@for d in `go list` ; do \\\n\t\tif [ \"`gofmt -l -s $$GOPATH/src/$$d | tee /dev/stderr`\" ]; then \\\n\t\t\techo \"^ improperly formatted go files\" && echo && exit 1; \\\n\t\tfi \\\n\tdone\n\nlint: ## Run golint linter\n\t@for d in `go list` ; do \\\n\t\tif [ \"`golint $$d | tee /dev/stderr`\" ]; then \\\n\t\t\techo \"^ golint errors!\" && echo && exit 1; \\\n\t\tfi \\\n\tdone\n\nvet: ## Run go vet linter\n\t@if [ \"`go vet | tee /dev/stderr`\" ]; then \\\n\t\techo \"^ go vet errors!\" && echo && exit 1; \\\n\tfi\n\ntest-cover-html: ## Generate test coverage report\n\tgo test -coverprofile=coverage.out -covermode=count\n\tgo tool cover -func=coverage.out\n\nhelp:\n\t@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = \":.*?## \"}; {printf \"\\033[36m%-30s\\033[0m %s\\n\", $$1, $$2}'\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/README.md",
    "content": "cast\n====\n[![GoDoc](https://godoc.org/github.com/spf13/cast?status.svg)](https://godoc.org/github.com/spf13/cast)\n[![Build Status](https://api.travis-ci.org/spf13/cast.svg?branch=master)](https://travis-ci.org/spf13/cast)\n[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cast)](https://goreportcard.com/report/github.com/spf13/cast)\n\nEasy and safe casting from one type to another in Go\n\nDon’t Panic! ... Cast\n\n## What is Cast?\n\nCast is a library to convert between different go types in a consistent and easy way.\n\nCast provides simple functions to easily convert a number to a string, an\ninterface into a bool, etc. Cast does this intelligently when an obvious\nconversion is possible. It doesn’t make any attempts to guess what you meant,\nfor example you can only convert a string to an int when it is a string\nrepresentation of an int such as “8”. Cast was developed for use in\n[Hugo](http://hugo.spf13.com), a website engine which uses YAML, TOML or JSON\nfor meta data.\n\n## Why use Cast?\n\nWhen working with dynamic data in Go you often need to cast or convert the data\nfrom one type into another. Cast goes beyond just using type assertion (though\nit uses that when possible) to provide a very straightforward and convenient\nlibrary.\n\nIf you are working with interfaces to handle things like dynamic content\nyou’ll need an easy way to convert an interface into a given type. This\nis the library for you.\n\nIf you are taking in data from YAML, TOML or JSON or other formats which lack\nfull types, then Cast is the library for you.\n\n## Usage\n\nCast provides a handful of To_____ methods. These methods will always return\nthe desired type. **If input is provided that will not convert to that type, the\n0 or nil value for that type will be returned**.\n\nCast also provides identical methods To_____E. These return the same result as\nthe To_____ methods, plus an additional error which tells you if it successfully\nconverted. Using these methods you can tell the difference between when the\ninput matched the zero value or when the conversion failed and the zero value\nwas returned.\n\nThe following examples are merely a sample of what is available. Please review\nthe code for a complete set.\n\n### Example ‘ToString’:\n\n    cast.ToString(\"mayonegg\")         // \"mayonegg\"\n    cast.ToString(8)                  // \"8\"\n    cast.ToString(8.31)               // \"8.31\"\n    cast.ToString([]byte(\"one time\")) // \"one time\"\n    cast.ToString(nil)                // \"\"\n\n\tvar foo interface{} = \"one more time\"\n    cast.ToString(foo)                // \"one more time\"\n\n\n### Example ‘ToInt’:\n\n    cast.ToInt(8)                  // 8\n    cast.ToInt(8.31)               // 8\n    cast.ToInt(\"8\")                // 8\n    cast.ToInt(true)               // 1\n    cast.ToInt(false)              // 0\n\n\tvar eight interface{} = 8\n    cast.ToInt(eight)              // 8\n    cast.ToInt(nil)                // 0\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/cast.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\n// Package cast provides easy and safe casting in Go.\npackage cast\n\nimport \"time\"\n\n// ToBool casts an interface to a bool type.\nfunc ToBool(i interface{}) bool {\n\tv, _ := ToBoolE(i)\n\treturn v\n}\n\n// ToTime casts an interface to a time.Time type.\nfunc ToTime(i interface{}) time.Time {\n\tv, _ := ToTimeE(i)\n\treturn v\n}\n\n// ToDuration casts an interface to a time.Duration type.\nfunc ToDuration(i interface{}) time.Duration {\n\tv, _ := ToDurationE(i)\n\treturn v\n}\n\n// ToFloat64 casts an interface to a float64 type.\nfunc ToFloat64(i interface{}) float64 {\n\tv, _ := ToFloat64E(i)\n\treturn v\n}\n\n// ToFloat32 casts an interface to a float32 type.\nfunc ToFloat32(i interface{}) float32 {\n\tv, _ := ToFloat32E(i)\n\treturn v\n}\n\n// ToInt64 casts an interface to an int64 type.\nfunc ToInt64(i interface{}) int64 {\n\tv, _ := ToInt64E(i)\n\treturn v\n}\n\n// ToInt32 casts an interface to an int32 type.\nfunc ToInt32(i interface{}) int32 {\n\tv, _ := ToInt32E(i)\n\treturn v\n}\n\n// ToInt16 casts an interface to an int16 type.\nfunc ToInt16(i interface{}) int16 {\n\tv, _ := ToInt16E(i)\n\treturn v\n}\n\n// ToInt8 casts an interface to an int8 type.\nfunc ToInt8(i interface{}) int8 {\n\tv, _ := ToInt8E(i)\n\treturn v\n}\n\n// ToInt casts an interface to an int type.\nfunc ToInt(i interface{}) int {\n\tv, _ := ToIntE(i)\n\treturn v\n}\n\n// ToUint casts an interface to a uint type.\nfunc ToUint(i interface{}) uint {\n\tv, _ := ToUintE(i)\n\treturn v\n}\n\n// ToUint64 casts an interface to a uint64 type.\nfunc ToUint64(i interface{}) uint64 {\n\tv, _ := ToUint64E(i)\n\treturn v\n}\n\n// ToUint32 casts an interface to a uint32 type.\nfunc ToUint32(i interface{}) uint32 {\n\tv, _ := ToUint32E(i)\n\treturn v\n}\n\n// ToUint16 casts an interface to a uint16 type.\nfunc ToUint16(i interface{}) uint16 {\n\tv, _ := ToUint16E(i)\n\treturn v\n}\n\n// ToUint8 casts an interface to a uint8 type.\nfunc ToUint8(i interface{}) uint8 {\n\tv, _ := ToUint8E(i)\n\treturn v\n}\n\n// ToString casts an interface to a string type.\nfunc ToString(i interface{}) string {\n\tv, _ := ToStringE(i)\n\treturn v\n}\n\n// ToStringMapString casts an interface to a map[string]string type.\nfunc ToStringMapString(i interface{}) map[string]string {\n\tv, _ := ToStringMapStringE(i)\n\treturn v\n}\n\n// ToStringMapStringSlice casts an interface to a map[string][]string type.\nfunc ToStringMapStringSlice(i interface{}) map[string][]string {\n\tv, _ := ToStringMapStringSliceE(i)\n\treturn v\n}\n\n// ToStringMapBool casts an interface to a map[string]bool type.\nfunc ToStringMapBool(i interface{}) map[string]bool {\n\tv, _ := ToStringMapBoolE(i)\n\treturn v\n}\n\n// ToStringMapInt casts an interface to a map[string]int type.\nfunc ToStringMapInt(i interface{}) map[string]int {\n\tv, _ := ToStringMapIntE(i)\n\treturn v\n}\n\n// ToStringMapInt64 casts an interface to a map[string]int64 type.\nfunc ToStringMapInt64(i interface{}) map[string]int64 {\n\tv, _ := ToStringMapInt64E(i)\n\treturn v\n}\n\n// ToStringMap casts an interface to a map[string]interface{} type.\nfunc ToStringMap(i interface{}) map[string]interface{} {\n\tv, _ := ToStringMapE(i)\n\treturn v\n}\n\n// ToSlice casts an interface to a []interface{} type.\nfunc ToSlice(i interface{}) []interface{} {\n\tv, _ := ToSliceE(i)\n\treturn v\n}\n\n// ToBoolSlice casts an interface to a []bool type.\nfunc ToBoolSlice(i interface{}) []bool {\n\tv, _ := ToBoolSliceE(i)\n\treturn v\n}\n\n// ToStringSlice casts an interface to a []string type.\nfunc ToStringSlice(i interface{}) []string {\n\tv, _ := ToStringSliceE(i)\n\treturn v\n}\n\n// ToIntSlice casts an interface to a []int type.\nfunc ToIntSlice(i interface{}) []int {\n\tv, _ := ToIntSliceE(i)\n\treturn v\n}\n\n// ToDurationSlice casts an interface to a []time.Duration type.\nfunc ToDurationSlice(i interface{}) []time.Duration {\n\tv, _ := ToDurationSliceE(i)\n\treturn v\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/caste.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\npackage cast\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar errNegativeNotAllowed = errors.New(\"unable to cast negative value\")\n\n// ToTimeE casts an interface to a time.Time type.\nfunc ToTimeE(i interface{}) (tim time.Time, err error) {\n\ti = indirect(i)\n\n\tswitch v := i.(type) {\n\tcase time.Time:\n\t\treturn v, nil\n\tcase string:\n\t\treturn StringToDate(v)\n\tcase int:\n\t\treturn time.Unix(int64(v), 0), nil\n\tcase int64:\n\t\treturn time.Unix(v, 0), nil\n\tcase int32:\n\t\treturn time.Unix(int64(v), 0), nil\n\tcase uint:\n\t\treturn time.Unix(int64(v), 0), nil\n\tcase uint64:\n\t\treturn time.Unix(int64(v), 0), nil\n\tcase uint32:\n\t\treturn time.Unix(int64(v), 0), nil\n\tdefault:\n\t\treturn time.Time{}, fmt.Errorf(\"unable to cast %#v of type %T to Time\", i, i)\n\t}\n}\n\n// ToDurationE casts an interface to a time.Duration type.\nfunc ToDurationE(i interface{}) (d time.Duration, err error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase time.Duration:\n\t\treturn s, nil\n\tcase int, int64, int32, int16, int8, uint, uint64, uint32, uint16, uint8:\n\t\td = time.Duration(ToInt64(s))\n\t\treturn\n\tcase float32, float64:\n\t\td = time.Duration(ToFloat64(s))\n\t\treturn\n\tcase string:\n\t\tif strings.ContainsAny(s, \"nsuµmh\") {\n\t\t\td, err = time.ParseDuration(s)\n\t\t} else {\n\t\t\td, err = time.ParseDuration(s + \"ns\")\n\t\t}\n\t\treturn\n\tdefault:\n\t\terr = fmt.Errorf(\"unable to cast %#v of type %T to Duration\", i, i)\n\t\treturn\n\t}\n}\n\n// ToBoolE casts an interface to a bool type.\nfunc ToBoolE(i interface{}) (bool, error) {\n\ti = indirect(i)\n\n\tswitch b := i.(type) {\n\tcase bool:\n\t\treturn b, nil\n\tcase nil:\n\t\treturn false, nil\n\tcase int:\n\t\tif i.(int) != 0 {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, nil\n\tcase string:\n\t\treturn strconv.ParseBool(i.(string))\n\tdefault:\n\t\treturn false, fmt.Errorf(\"unable to cast %#v of type %T to bool\", i, i)\n\t}\n}\n\n// ToFloat64E casts an interface to a float64 type.\nfunc ToFloat64E(i interface{}) (float64, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase float64:\n\t\treturn s, nil\n\tcase float32:\n\t\treturn float64(s), nil\n\tcase int:\n\t\treturn float64(s), nil\n\tcase int64:\n\t\treturn float64(s), nil\n\tcase int32:\n\t\treturn float64(s), nil\n\tcase int16:\n\t\treturn float64(s), nil\n\tcase int8:\n\t\treturn float64(s), nil\n\tcase uint:\n\t\treturn float64(s), nil\n\tcase uint64:\n\t\treturn float64(s), nil\n\tcase uint32:\n\t\treturn float64(s), nil\n\tcase uint16:\n\t\treturn float64(s), nil\n\tcase uint8:\n\t\treturn float64(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseFloat(s, 64)\n\t\tif err == nil {\n\t\t\treturn v, nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to float64\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to float64\", i, i)\n\t}\n}\n\n// ToFloat32E casts an interface to a float32 type.\nfunc ToFloat32E(i interface{}) (float32, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase float64:\n\t\treturn float32(s), nil\n\tcase float32:\n\t\treturn s, nil\n\tcase int:\n\t\treturn float32(s), nil\n\tcase int64:\n\t\treturn float32(s), nil\n\tcase int32:\n\t\treturn float32(s), nil\n\tcase int16:\n\t\treturn float32(s), nil\n\tcase int8:\n\t\treturn float32(s), nil\n\tcase uint:\n\t\treturn float32(s), nil\n\tcase uint64:\n\t\treturn float32(s), nil\n\tcase uint32:\n\t\treturn float32(s), nil\n\tcase uint16:\n\t\treturn float32(s), nil\n\tcase uint8:\n\t\treturn float32(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseFloat(s, 32)\n\t\tif err == nil {\n\t\t\treturn float32(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to float32\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to float32\", i, i)\n\t}\n}\n\n// ToInt64E casts an interface to an int64 type.\nfunc ToInt64E(i interface{}) (int64, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase int:\n\t\treturn int64(s), nil\n\tcase int64:\n\t\treturn s, nil\n\tcase int32:\n\t\treturn int64(s), nil\n\tcase int16:\n\t\treturn int64(s), nil\n\tcase int8:\n\t\treturn int64(s), nil\n\tcase uint:\n\t\treturn int64(s), nil\n\tcase uint64:\n\t\treturn int64(s), nil\n\tcase uint32:\n\t\treturn int64(s), nil\n\tcase uint16:\n\t\treturn int64(s), nil\n\tcase uint8:\n\t\treturn int64(s), nil\n\tcase float64:\n\t\treturn int64(s), nil\n\tcase float32:\n\t\treturn int64(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseInt(s, 0, 0)\n\t\tif err == nil {\n\t\t\treturn v, nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int64\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int64\", i, i)\n\t}\n}\n\n// ToInt32E casts an interface to an int32 type.\nfunc ToInt32E(i interface{}) (int32, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase int:\n\t\treturn int32(s), nil\n\tcase int64:\n\t\treturn int32(s), nil\n\tcase int32:\n\t\treturn s, nil\n\tcase int16:\n\t\treturn int32(s), nil\n\tcase int8:\n\t\treturn int32(s), nil\n\tcase uint:\n\t\treturn int32(s), nil\n\tcase uint64:\n\t\treturn int32(s), nil\n\tcase uint32:\n\t\treturn int32(s), nil\n\tcase uint16:\n\t\treturn int32(s), nil\n\tcase uint8:\n\t\treturn int32(s), nil\n\tcase float64:\n\t\treturn int32(s), nil\n\tcase float32:\n\t\treturn int32(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseInt(s, 0, 0)\n\t\tif err == nil {\n\t\t\treturn int32(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int32\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int32\", i, i)\n\t}\n}\n\n// ToInt16E casts an interface to an int16 type.\nfunc ToInt16E(i interface{}) (int16, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase int:\n\t\treturn int16(s), nil\n\tcase int64:\n\t\treturn int16(s), nil\n\tcase int32:\n\t\treturn int16(s), nil\n\tcase int16:\n\t\treturn s, nil\n\tcase int8:\n\t\treturn int16(s), nil\n\tcase uint:\n\t\treturn int16(s), nil\n\tcase uint64:\n\t\treturn int16(s), nil\n\tcase uint32:\n\t\treturn int16(s), nil\n\tcase uint16:\n\t\treturn int16(s), nil\n\tcase uint8:\n\t\treturn int16(s), nil\n\tcase float64:\n\t\treturn int16(s), nil\n\tcase float32:\n\t\treturn int16(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseInt(s, 0, 0)\n\t\tif err == nil {\n\t\t\treturn int16(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int16\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int16\", i, i)\n\t}\n}\n\n// ToInt8E casts an interface to an int8 type.\nfunc ToInt8E(i interface{}) (int8, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase int:\n\t\treturn int8(s), nil\n\tcase int64:\n\t\treturn int8(s), nil\n\tcase int32:\n\t\treturn int8(s), nil\n\tcase int16:\n\t\treturn int8(s), nil\n\tcase int8:\n\t\treturn s, nil\n\tcase uint:\n\t\treturn int8(s), nil\n\tcase uint64:\n\t\treturn int8(s), nil\n\tcase uint32:\n\t\treturn int8(s), nil\n\tcase uint16:\n\t\treturn int8(s), nil\n\tcase uint8:\n\t\treturn int8(s), nil\n\tcase float64:\n\t\treturn int8(s), nil\n\tcase float32:\n\t\treturn int8(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseInt(s, 0, 0)\n\t\tif err == nil {\n\t\t\treturn int8(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int8\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int8\", i, i)\n\t}\n}\n\n// ToIntE casts an interface to an int type.\nfunc ToIntE(i interface{}) (int, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase int:\n\t\treturn s, nil\n\tcase int64:\n\t\treturn int(s), nil\n\tcase int32:\n\t\treturn int(s), nil\n\tcase int16:\n\t\treturn int(s), nil\n\tcase int8:\n\t\treturn int(s), nil\n\tcase uint:\n\t\treturn int(s), nil\n\tcase uint64:\n\t\treturn int(s), nil\n\tcase uint32:\n\t\treturn int(s), nil\n\tcase uint16:\n\t\treturn int(s), nil\n\tcase uint8:\n\t\treturn int(s), nil\n\tcase float64:\n\t\treturn int(s), nil\n\tcase float32:\n\t\treturn int(s), nil\n\tcase string:\n\t\tv, err := strconv.ParseInt(s, 0, 0)\n\t\tif err == nil {\n\t\t\treturn int(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int\", i, i)\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to int\", i, i)\n\t}\n}\n\n// ToUintE casts an interface to a uint type.\nfunc ToUintE(i interface{}) (uint, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase string:\n\t\tv, err := strconv.ParseUint(s, 0, 0)\n\t\tif err == nil {\n\t\t\treturn uint(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v to uint: %s\", i, err)\n\tcase int:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase int64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase int32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase int16:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase int8:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase uint:\n\t\treturn s, nil\n\tcase uint64:\n\t\treturn uint(s), nil\n\tcase uint32:\n\t\treturn uint(s), nil\n\tcase uint16:\n\t\treturn uint(s), nil\n\tcase uint8:\n\t\treturn uint(s), nil\n\tcase float64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase float32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint(s), nil\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to uint\", i, i)\n\t}\n}\n\n// ToUint64E casts an interface to a uint64 type.\nfunc ToUint64E(i interface{}) (uint64, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase string:\n\t\tv, err := strconv.ParseUint(s, 0, 64)\n\t\tif err == nil {\n\t\t\treturn v, nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v to uint64: %s\", i, err)\n\tcase int:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase int64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase int32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase int16:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase int8:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase uint:\n\t\treturn uint64(s), nil\n\tcase uint64:\n\t\treturn s, nil\n\tcase uint32:\n\t\treturn uint64(s), nil\n\tcase uint16:\n\t\treturn uint64(s), nil\n\tcase uint8:\n\t\treturn uint64(s), nil\n\tcase float32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase float64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint64(s), nil\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to uint64\", i, i)\n\t}\n}\n\n// ToUint32E casts an interface to a uint32 type.\nfunc ToUint32E(i interface{}) (uint32, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase string:\n\t\tv, err := strconv.ParseUint(s, 0, 32)\n\t\tif err == nil {\n\t\t\treturn uint32(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v to uint32: %s\", i, err)\n\tcase int:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase int64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase int32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase int16:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase int8:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase uint:\n\t\treturn uint32(s), nil\n\tcase uint64:\n\t\treturn uint32(s), nil\n\tcase uint32:\n\t\treturn s, nil\n\tcase uint16:\n\t\treturn uint32(s), nil\n\tcase uint8:\n\t\treturn uint32(s), nil\n\tcase float64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase float32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint32(s), nil\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to uint32\", i, i)\n\t}\n}\n\n// ToUint16E casts an interface to a uint16 type.\nfunc ToUint16E(i interface{}) (uint16, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase string:\n\t\tv, err := strconv.ParseUint(s, 0, 16)\n\t\tif err == nil {\n\t\t\treturn uint16(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v to uint16: %s\", i, err)\n\tcase int:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase int64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase int32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase int16:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase int8:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase uint:\n\t\treturn uint16(s), nil\n\tcase uint64:\n\t\treturn uint16(s), nil\n\tcase uint32:\n\t\treturn uint16(s), nil\n\tcase uint16:\n\t\treturn s, nil\n\tcase uint8:\n\t\treturn uint16(s), nil\n\tcase float64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase float32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint16(s), nil\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to uint16\", i, i)\n\t}\n}\n\n// ToUint8E casts an interface to a uint type.\nfunc ToUint8E(i interface{}) (uint8, error) {\n\ti = indirect(i)\n\n\tswitch s := i.(type) {\n\tcase string:\n\t\tv, err := strconv.ParseUint(s, 0, 8)\n\t\tif err == nil {\n\t\t\treturn uint8(v), nil\n\t\t}\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v to uint8: %s\", i, err)\n\tcase int:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase int64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase int32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase int16:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase int8:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase uint:\n\t\treturn uint8(s), nil\n\tcase uint64:\n\t\treturn uint8(s), nil\n\tcase uint32:\n\t\treturn uint8(s), nil\n\tcase uint16:\n\t\treturn uint8(s), nil\n\tcase uint8:\n\t\treturn s, nil\n\tcase float64:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase float32:\n\t\tif s < 0 {\n\t\t\treturn 0, errNegativeNotAllowed\n\t\t}\n\t\treturn uint8(s), nil\n\tcase bool:\n\t\tif s {\n\t\t\treturn 1, nil\n\t\t}\n\t\treturn 0, nil\n\tcase nil:\n\t\treturn 0, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"unable to cast %#v of type %T to uint8\", i, i)\n\t}\n}\n\n// From html/template/content.go\n// Copyright 2011 The Go Authors. All rights reserved.\n// indirect returns the value, after dereferencing as many times\n// as necessary to reach the base type (or nil).\nfunc indirect(a interface{}) interface{} {\n\tif a == nil {\n\t\treturn nil\n\t}\n\tif t := reflect.TypeOf(a); t.Kind() != reflect.Ptr {\n\t\t// Avoid creating a reflect.Value if it's not a pointer.\n\t\treturn a\n\t}\n\tv := reflect.ValueOf(a)\n\tfor v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\tv = v.Elem()\n\t}\n\treturn v.Interface()\n}\n\n// From html/template/content.go\n// Copyright 2011 The Go Authors. All rights reserved.\n// indirectToStringerOrError returns the value, after dereferencing as many times\n// as necessary to reach the base type (or nil) or an implementation of fmt.Stringer\n// or error,\nfunc indirectToStringerOrError(a interface{}) interface{} {\n\tif a == nil {\n\t\treturn nil\n\t}\n\n\tvar errorType = reflect.TypeOf((*error)(nil)).Elem()\n\tvar fmtStringerType = reflect.TypeOf((*fmt.Stringer)(nil)).Elem()\n\n\tv := reflect.ValueOf(a)\n\tfor !v.Type().Implements(fmtStringerType) && !v.Type().Implements(errorType) && v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\tv = v.Elem()\n\t}\n\treturn v.Interface()\n}\n\n// ToStringE casts an interface to a string type.\nfunc ToStringE(i interface{}) (string, error) {\n\ti = indirectToStringerOrError(i)\n\n\tswitch s := i.(type) {\n\tcase string:\n\t\treturn s, nil\n\tcase bool:\n\t\treturn strconv.FormatBool(s), nil\n\tcase float64:\n\t\treturn strconv.FormatFloat(s, 'f', -1, 64), nil\n\tcase float32:\n\t\treturn strconv.FormatFloat(float64(s), 'f', -1, 32), nil\n\tcase int:\n\t\treturn strconv.Itoa(s), nil\n\tcase int64:\n\t\treturn strconv.FormatInt(s, 10), nil\n\tcase int32:\n\t\treturn strconv.Itoa(int(s)), nil\n\tcase int16:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase int8:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase uint:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase uint64:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase uint32:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase uint16:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase uint8:\n\t\treturn strconv.FormatInt(int64(s), 10), nil\n\tcase []byte:\n\t\treturn string(s), nil\n\tcase template.HTML:\n\t\treturn string(s), nil\n\tcase template.URL:\n\t\treturn string(s), nil\n\tcase template.JS:\n\t\treturn string(s), nil\n\tcase template.CSS:\n\t\treturn string(s), nil\n\tcase template.HTMLAttr:\n\t\treturn string(s), nil\n\tcase nil:\n\t\treturn \"\", nil\n\tcase fmt.Stringer:\n\t\treturn s.String(), nil\n\tcase error:\n\t\treturn s.Error(), nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unable to cast %#v of type %T to string\", i, i)\n\t}\n}\n\n// ToStringMapStringE casts an interface to a map[string]string type.\nfunc ToStringMapStringE(i interface{}) (map[string]string, error) {\n\tvar m = map[string]string{}\n\n\tswitch v := i.(type) {\n\tcase map[string]string:\n\t\treturn v, nil\n\tcase map[string]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToString(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[interface{}]string:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToString(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[interface{}]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToString(val)\n\t\t}\n\t\treturn m, nil\n\tcase string:\n\t\terr := jsonStringToObject(v, &m)\n\t\treturn m, err\n\tdefault:\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]string\", i, i)\n\t}\n}\n\n// ToStringMapStringSliceE casts an interface to a map[string][]string type.\nfunc ToStringMapStringSliceE(i interface{}) (map[string][]string, error) {\n\tvar m = map[string][]string{}\n\n\tswitch v := i.(type) {\n\tcase map[string][]string:\n\t\treturn v, nil\n\tcase map[string][]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToStringSlice(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]string:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = []string{val}\n\t\t}\n\tcase map[string]interface{}:\n\t\tfor k, val := range v {\n\t\t\tswitch vt := val.(type) {\n\t\t\tcase []interface{}:\n\t\t\t\tm[ToString(k)] = ToStringSlice(vt)\n\t\t\tcase []string:\n\t\t\t\tm[ToString(k)] = vt\n\t\t\tdefault:\n\t\t\t\tm[ToString(k)] = []string{ToString(val)}\n\t\t\t}\n\t\t}\n\t\treturn m, nil\n\tcase map[interface{}][]string:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToStringSlice(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[interface{}]string:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToStringSlice(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[interface{}][]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToStringSlice(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[interface{}]interface{}:\n\t\tfor k, val := range v {\n\t\t\tkey, err := ToStringE(k)\n\t\t\tif err != nil {\n\t\t\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string][]string\", i, i)\n\t\t\t}\n\t\t\tvalue, err := ToStringSliceE(val)\n\t\t\tif err != nil {\n\t\t\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string][]string\", i, i)\n\t\t\t}\n\t\t\tm[key] = value\n\t\t}\n\tcase string:\n\t\terr := jsonStringToObject(v, &m)\n\t\treturn m, err\n\tdefault:\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string][]string\", i, i)\n\t}\n\treturn m, nil\n}\n\n// ToStringMapBoolE casts an interface to a map[string]bool type.\nfunc ToStringMapBoolE(i interface{}) (map[string]bool, error) {\n\tvar m = map[string]bool{}\n\n\tswitch v := i.(type) {\n\tcase map[interface{}]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToBool(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToBool(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]bool:\n\t\treturn v, nil\n\tcase string:\n\t\terr := jsonStringToObject(v, &m)\n\t\treturn m, err\n\tdefault:\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]bool\", i, i)\n\t}\n}\n\n// ToStringMapE casts an interface to a map[string]interface{} type.\nfunc ToStringMapE(i interface{}) (map[string]interface{}, error) {\n\tvar m = map[string]interface{}{}\n\n\tswitch v := i.(type) {\n\tcase map[interface{}]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = val\n\t\t}\n\t\treturn m, nil\n\tcase map[string]interface{}:\n\t\treturn v, nil\n\tcase string:\n\t\terr := jsonStringToObject(v, &m)\n\t\treturn m, err\n\tdefault:\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]interface{}\", i, i)\n\t}\n}\n\n// ToStringMapIntE casts an interface to a map[string]int{} type.\nfunc ToStringMapIntE(i interface{}) (map[string]int, error) {\n\tvar m = map[string]int{}\n\tif i == nil {\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]int\", i, i)\n\t}\n\n\tswitch v := i.(type) {\n\tcase map[interface{}]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToInt(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[k] = ToInt(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]int:\n\t\treturn v, nil\n\tcase string:\n\t\terr := jsonStringToObject(v, &m)\n\t\treturn m, err\n\t}\n\n\tif reflect.TypeOf(i).Kind() != reflect.Map {\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]int\", i, i)\n\t}\n\n\tmVal := reflect.ValueOf(m)\n\tv := reflect.ValueOf(i)\n\tfor _, keyVal := range v.MapKeys() {\n\t\tval, err := ToIntE(v.MapIndex(keyVal).Interface())\n\t\tif err != nil {\n\t\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]int\", i, i)\n\t\t}\n\t\tmVal.SetMapIndex(keyVal, reflect.ValueOf(val))\n\t}\n\treturn m, nil\n}\n\n// ToStringMapInt64E casts an interface to a map[string]int64{} type.\nfunc ToStringMapInt64E(i interface{}) (map[string]int64, error) {\n\tvar m = map[string]int64{}\n\tif i == nil {\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]int64\", i, i)\n\t}\n\n\tswitch v := i.(type) {\n\tcase map[interface{}]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[ToString(k)] = ToInt64(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]interface{}:\n\t\tfor k, val := range v {\n\t\t\tm[k] = ToInt64(val)\n\t\t}\n\t\treturn m, nil\n\tcase map[string]int64:\n\t\treturn v, nil\n\tcase string:\n\t\terr := jsonStringToObject(v, &m)\n\t\treturn m, err\n\t}\n\n\tif reflect.TypeOf(i).Kind() != reflect.Map {\n\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]int64\", i, i)\n\t}\n\tmVal := reflect.ValueOf(m)\n\tv := reflect.ValueOf(i)\n\tfor _, keyVal := range v.MapKeys() {\n\t\tval, err := ToInt64E(v.MapIndex(keyVal).Interface())\n\t\tif err != nil {\n\t\t\treturn m, fmt.Errorf(\"unable to cast %#v of type %T to map[string]int64\", i, i)\n\t\t}\n\t\tmVal.SetMapIndex(keyVal, reflect.ValueOf(val))\n\t}\n\treturn m, nil\n}\n\n// ToSliceE casts an interface to a []interface{} type.\nfunc ToSliceE(i interface{}) ([]interface{}, error) {\n\tvar s []interface{}\n\n\tswitch v := i.(type) {\n\tcase []interface{}:\n\t\treturn append(s, v...), nil\n\tcase []map[string]interface{}:\n\t\tfor _, u := range v {\n\t\t\ts = append(s, u)\n\t\t}\n\t\treturn s, nil\n\tdefault:\n\t\treturn s, fmt.Errorf(\"unable to cast %#v of type %T to []interface{}\", i, i)\n\t}\n}\n\n// ToBoolSliceE casts an interface to a []bool type.\nfunc ToBoolSliceE(i interface{}) ([]bool, error) {\n\tif i == nil {\n\t\treturn []bool{}, fmt.Errorf(\"unable to cast %#v of type %T to []bool\", i, i)\n\t}\n\n\tswitch v := i.(type) {\n\tcase []bool:\n\t\treturn v, nil\n\t}\n\n\tkind := reflect.TypeOf(i).Kind()\n\tswitch kind {\n\tcase reflect.Slice, reflect.Array:\n\t\ts := reflect.ValueOf(i)\n\t\ta := make([]bool, s.Len())\n\t\tfor j := 0; j < s.Len(); j++ {\n\t\t\tval, err := ToBoolE(s.Index(j).Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn []bool{}, fmt.Errorf(\"unable to cast %#v of type %T to []bool\", i, i)\n\t\t\t}\n\t\t\ta[j] = val\n\t\t}\n\t\treturn a, nil\n\tdefault:\n\t\treturn []bool{}, fmt.Errorf(\"unable to cast %#v of type %T to []bool\", i, i)\n\t}\n}\n\n// ToStringSliceE casts an interface to a []string type.\nfunc ToStringSliceE(i interface{}) ([]string, error) {\n\tvar a []string\n\n\tswitch v := i.(type) {\n\tcase []interface{}:\n\t\tfor _, u := range v {\n\t\t\ta = append(a, ToString(u))\n\t\t}\n\t\treturn a, nil\n\tcase []string:\n\t\treturn v, nil\n\tcase string:\n\t\treturn strings.Fields(v), nil\n\tcase interface{}:\n\t\tstr, err := ToStringE(v)\n\t\tif err != nil {\n\t\t\treturn a, fmt.Errorf(\"unable to cast %#v of type %T to []string\", i, i)\n\t\t}\n\t\treturn []string{str}, nil\n\tdefault:\n\t\treturn a, fmt.Errorf(\"unable to cast %#v of type %T to []string\", i, i)\n\t}\n}\n\n// ToIntSliceE casts an interface to a []int type.\nfunc ToIntSliceE(i interface{}) ([]int, error) {\n\tif i == nil {\n\t\treturn []int{}, fmt.Errorf(\"unable to cast %#v of type %T to []int\", i, i)\n\t}\n\n\tswitch v := i.(type) {\n\tcase []int:\n\t\treturn v, nil\n\t}\n\n\tkind := reflect.TypeOf(i).Kind()\n\tswitch kind {\n\tcase reflect.Slice, reflect.Array:\n\t\ts := reflect.ValueOf(i)\n\t\ta := make([]int, s.Len())\n\t\tfor j := 0; j < s.Len(); j++ {\n\t\t\tval, err := ToIntE(s.Index(j).Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn []int{}, fmt.Errorf(\"unable to cast %#v of type %T to []int\", i, i)\n\t\t\t}\n\t\t\ta[j] = val\n\t\t}\n\t\treturn a, nil\n\tdefault:\n\t\treturn []int{}, fmt.Errorf(\"unable to cast %#v of type %T to []int\", i, i)\n\t}\n}\n\n// ToDurationSliceE casts an interface to a []time.Duration type.\nfunc ToDurationSliceE(i interface{}) ([]time.Duration, error) {\n\tif i == nil {\n\t\treturn []time.Duration{}, fmt.Errorf(\"unable to cast %#v of type %T to []time.Duration\", i, i)\n\t}\n\n\tswitch v := i.(type) {\n\tcase []time.Duration:\n\t\treturn v, nil\n\t}\n\n\tkind := reflect.TypeOf(i).Kind()\n\tswitch kind {\n\tcase reflect.Slice, reflect.Array:\n\t\ts := reflect.ValueOf(i)\n\t\ta := make([]time.Duration, s.Len())\n\t\tfor j := 0; j < s.Len(); j++ {\n\t\t\tval, err := ToDurationE(s.Index(j).Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn []time.Duration{}, fmt.Errorf(\"unable to cast %#v of type %T to []time.Duration\", i, i)\n\t\t\t}\n\t\t\ta[j] = val\n\t\t}\n\t\treturn a, nil\n\tdefault:\n\t\treturn []time.Duration{}, fmt.Errorf(\"unable to cast %#v of type %T to []time.Duration\", i, i)\n\t}\n}\n\n// StringToDate attempts to parse a string into a time.Time type using a\n// predefined list of formats.  If no suitable format is found, an error is\n// returned.\nfunc StringToDate(s string) (time.Time, error) {\n\treturn parseDateWith(s, []string{\n\t\ttime.RFC3339,\n\t\t\"2006-01-02T15:04:05\", // iso8601 without timezone\n\t\ttime.RFC1123Z,\n\t\ttime.RFC1123,\n\t\ttime.RFC822Z,\n\t\ttime.RFC822,\n\t\ttime.RFC850,\n\t\ttime.ANSIC,\n\t\ttime.UnixDate,\n\t\ttime.RubyDate,\n\t\t\"2006-01-02 15:04:05.999999999 -0700 MST\", // Time.String()\n\t\t\"2006-01-02\",\n\t\t\"02 Jan 2006\",\n\t\t\"2006-01-02T15:04:05-0700\", // RFC3339 without timezone hh:mm colon\n\t\t\"2006-01-02 15:04:05 -07:00\",\n\t\t\"2006-01-02 15:04:05 -0700\",\n\t\t\"2006-01-02 15:04:05Z07:00\", // RFC3339 without T\n\t\t\"2006-01-02 15:04:05Z0700\",  // RFC3339 without T or timezone hh:mm colon\n\t\t\"2006-01-02 15:04:05\",\n\t\ttime.Kitchen,\n\t\ttime.Stamp,\n\t\ttime.StampMilli,\n\t\ttime.StampMicro,\n\t\ttime.StampNano,\n\t})\n}\n\nfunc parseDateWith(s string, dates []string) (d time.Time, e error) {\n\tfor _, dateType := range dates {\n\t\tif d, e = time.Parse(dateType, s); e == nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn d, fmt.Errorf(\"unable to parse date: %s\", s)\n}\n\n// jsonStringToObject attempts to unmarshall a string as JSON into\n// the object passed as pointer.\nfunc jsonStringToObject(s string, v interface{}) error {\n\tdata := []byte(s)\n\treturn json.Unmarshal(data, v)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/go.mod",
    "content": "module github.com/spf13/cast\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/stretchr/testify v1.2.2\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/cast/go.sum",
    "content": "github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Steve Francia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/README.md",
    "content": "jWalterWeatherman\n=================\n\nSeamless printing to the terminal (stdout) and logging to a io.Writer\n(file) that’s as easy to use as fmt.Println.\n\n![and_that__s_why_you_always_leave_a_note_by_jonnyetc-d57q7um](https://cloud.githubusercontent.com/assets/173412/11002937/ccd01654-847d-11e5-828e-12ebaf582eaf.jpg)\nGraphic by [JonnyEtc](http://jonnyetc.deviantart.com/art/And-That-s-Why-You-Always-Leave-a-Note-315311422)\n\nJWW is primarily a wrapper around the excellent standard log library. It\nprovides a few advantages over using the standard log library alone.\n\n1. Ready to go out of the box. \n2. One library for both printing to the terminal and logging (to files).\n3. Really easy to log to either a temp file or a file you specify.\n\n\nI really wanted a very straightforward library that could seamlessly do\nthe following things.\n\n1. Replace all the println, printf, etc statements thoughout my code with\n   something more useful\n2. Allow the user to easily control what levels are printed to stdout\n3. Allow the user to easily control what levels are logged\n4. Provide an easy mechanism (like fmt.Println) to print info to the user\n   which can be easily logged as well \n5. Due to 2 & 3 provide easy verbose mode for output and logs\n6. Not have any unnecessary initialization cruft. Just use it.\n\n# Usage\n\n## Step 1. Use it\nPut calls throughout your source based on type of feedback.\nNo initialization or setup needs to happen. Just start calling things.\n\nAvailable Loggers are:\n\n * TRACE\n * DEBUG\n * INFO\n * WARN\n * ERROR\n * CRITICAL\n * FATAL\n\nThese each are loggers based on the log standard library and follow the\nstandard usage. Eg.\n\n```go\n    import (\n        jww \"github.com/spf13/jwalterweatherman\"\n    )\n\n    ...\n\n    if err != nil {\n\n        // This is a pretty serious error and the user should know about\n        // it. It will be printed to the terminal as well as logged under the\n        // default thresholds.\n\n        jww.ERROR.Println(err)\n    }\n\n    if err2 != nil {\n        // This error isn’t going to materially change the behavior of the\n        // application, but it’s something that may not be what the user\n        // expects. Under the default thresholds, Warn will be logged, but\n        // not printed to the terminal. \n\n        jww.WARN.Println(err2)\n    }\n\n    // Information that’s relevant to what’s happening, but not very\n    // important for the user. Under the default thresholds this will be\n    // discarded.\n\n    jww.INFO.Printf(\"information %q\", response)\n\n```\n\nNOTE: You can also use the library in a non-global setting by creating an instance of a Notebook:\n\n```go\nnotepad = jww.NewNotepad(jww.LevelInfo, jww.LevelTrace, os.Stdout, ioutil.Discard, \"\", log.Ldate|log.Ltime)\nnotepad.WARN.Println(\"Some warning\"\")\n```\n\n_Why 7 levels?_\n\nMaybe you think that 7 levels are too much for any application... and you\nare probably correct. Just because there are seven levels doesn’t mean\nthat you should be using all 7 levels. Pick the right set for your needs.\nRemember they only have to mean something to your project.\n\n## Step 2. Optionally configure JWW\n\nUnder the default thresholds :\n\n * Debug, Trace & Info goto /dev/null\n * Warn and above is logged (when a log file/io.Writer is provided)\n * Error and above is printed to the terminal (stdout)\n\n### Changing the thresholds\n\nThe threshold can be changed at any time, but will only affect calls that\nexecute after the change was made.\n\nThis is very useful if your application has a verbose mode. Of course you\ncan decide what verbose means to you or even have multiple levels of\nverbosity.\n\n\n```go\n    import (\n        jww \"github.com/spf13/jwalterweatherman\"\n    )\n\n    if Verbose {\n        jww.SetLogThreshold(jww.LevelTrace)\n        jww.SetStdoutThreshold(jww.LevelInfo)\n    }\n```\n\nNote that JWW's own internal output uses log levels as well, so set the log\nlevel before making any other calls if you want to see what it's up to.\n\n\n### Setting a log file\n\nJWW can log to any `io.Writer`:\n\n\n```go\n\n    jww.SetLogOutput(customWriter) \n\n```\n\n\n# More information\n\nThis is an early release. I’ve been using it for a while and this is the\nthird interface I’ve tried. I like this one pretty well, but no guarantees\nthat it won’t change a bit.\n\nI wrote this for use in [hugo](https://gohugo.io). If you are looking\nfor a static website engine that’s super fast please checkout Hugo.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/default_notepad.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\npackage jwalterweatherman\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n)\n\nvar (\n\tTRACE    *log.Logger\n\tDEBUG    *log.Logger\n\tINFO     *log.Logger\n\tWARN     *log.Logger\n\tERROR    *log.Logger\n\tCRITICAL *log.Logger\n\tFATAL    *log.Logger\n\n\tLOG      *log.Logger\n\tFEEDBACK *Feedback\n\n\tdefaultNotepad *Notepad\n)\n\nfunc reloadDefaultNotepad() {\n\tTRACE = defaultNotepad.TRACE\n\tDEBUG = defaultNotepad.DEBUG\n\tINFO = defaultNotepad.INFO\n\tWARN = defaultNotepad.WARN\n\tERROR = defaultNotepad.ERROR\n\tCRITICAL = defaultNotepad.CRITICAL\n\tFATAL = defaultNotepad.FATAL\n\n\tLOG = defaultNotepad.LOG\n\tFEEDBACK = defaultNotepad.FEEDBACK\n}\n\nfunc init() {\n\tdefaultNotepad = NewNotepad(LevelError, LevelWarn, os.Stdout, ioutil.Discard, \"\", log.Ldate|log.Ltime)\n\treloadDefaultNotepad()\n}\n\n// SetLogThreshold set the log threshold for the default notepad. Trace by default.\nfunc SetLogThreshold(threshold Threshold) {\n\tdefaultNotepad.SetLogThreshold(threshold)\n\treloadDefaultNotepad()\n}\n\n// SetLogOutput set the log output for the default notepad. Discarded by default.\nfunc SetLogOutput(handle io.Writer) {\n\tdefaultNotepad.SetLogOutput(handle)\n\treloadDefaultNotepad()\n}\n\n// SetStdoutThreshold set the standard output threshold for the default notepad.\n// Info by default.\nfunc SetStdoutThreshold(threshold Threshold) {\n\tdefaultNotepad.SetStdoutThreshold(threshold)\n\treloadDefaultNotepad()\n}\n\n// SetPrefix set the prefix for the default logger. Empty by default.\nfunc SetPrefix(prefix string) {\n\tdefaultNotepad.SetPrefix(prefix)\n\treloadDefaultNotepad()\n}\n\n// SetFlags set the flags for the default logger. \"log.Ldate | log.Ltime\" by default.\nfunc SetFlags(flags int) {\n\tdefaultNotepad.SetFlags(flags)\n\treloadDefaultNotepad()\n}\n\n// Level returns the current global log threshold.\nfunc LogThreshold() Threshold {\n\treturn defaultNotepad.logThreshold\n}\n\n// Level returns the current global output threshold.\nfunc StdoutThreshold() Threshold {\n\treturn defaultNotepad.stdoutThreshold\n}\n\n// GetStdoutThreshold returns the defined Treshold for the log logger.\nfunc GetLogThreshold() Threshold {\n\treturn defaultNotepad.GetLogThreshold()\n}\n\n// GetStdoutThreshold returns the Treshold for the stdout logger.\nfunc GetStdoutThreshold() Threshold {\n\treturn defaultNotepad.GetStdoutThreshold()\n}\n\n// LogCountForLevel returns the number of log invocations for a given threshold.\nfunc LogCountForLevel(l Threshold) uint64 {\n\treturn defaultNotepad.LogCountForLevel(l)\n}\n\n// LogCountForLevelsGreaterThanorEqualTo returns the number of log invocations\n// greater than or equal to a given threshold.\nfunc LogCountForLevelsGreaterThanorEqualTo(threshold Threshold) uint64 {\n\treturn defaultNotepad.LogCountForLevelsGreaterThanorEqualTo(threshold)\n}\n\n// ResetLogCounters resets the invocation counters for all levels.\nfunc ResetLogCounters() {\n\tdefaultNotepad.ResetLogCounters()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/go.mod",
    "content": "module github.com/spf13/jwalterweatherman\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/log_counter.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\npackage jwalterweatherman\n\nimport (\n\t\"sync/atomic\"\n)\n\ntype logCounter struct {\n\tcounter uint64\n}\n\nfunc (c *logCounter) incr() {\n\tatomic.AddUint64(&c.counter, 1)\n}\n\nfunc (c *logCounter) resetCounter() {\n\tatomic.StoreUint64(&c.counter, 0)\n}\n\nfunc (c *logCounter) getCount() uint64 {\n\treturn atomic.LoadUint64(&c.counter)\n}\n\nfunc (c *logCounter) Write(p []byte) (n int, err error) {\n\tc.incr()\n\treturn len(p), nil\n}\n\n// LogCountForLevel returns the number of log invocations for a given threshold.\nfunc (n *Notepad) LogCountForLevel(l Threshold) uint64 {\n\treturn n.logCounters[l].getCount()\n}\n\n// LogCountForLevelsGreaterThanorEqualTo returns the number of log invocations\n// greater than or equal to a given threshold.\nfunc (n *Notepad) LogCountForLevelsGreaterThanorEqualTo(threshold Threshold) uint64 {\n\tvar cnt uint64\n\n\tfor i := int(threshold); i < len(n.logCounters); i++ {\n\t\tcnt += n.LogCountForLevel(Threshold(i))\n\t}\n\n\treturn cnt\n}\n\n// ResetLogCounters resets the invocation counters for all levels.\nfunc (n *Notepad) ResetLogCounters() {\n\tfor _, np := range n.logCounters {\n\t\tnp.resetCounter()\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/jwalterweatherman/notepad.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\npackage jwalterweatherman\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n)\n\ntype Threshold int\n\nfunc (t Threshold) String() string {\n\treturn prefixes[t]\n}\n\nconst (\n\tLevelTrace Threshold = iota\n\tLevelDebug\n\tLevelInfo\n\tLevelWarn\n\tLevelError\n\tLevelCritical\n\tLevelFatal\n)\n\nvar prefixes map[Threshold]string = map[Threshold]string{\n\tLevelTrace:    \"TRACE\",\n\tLevelDebug:    \"DEBUG\",\n\tLevelInfo:     \"INFO\",\n\tLevelWarn:     \"WARN\",\n\tLevelError:    \"ERROR\",\n\tLevelCritical: \"CRITICAL\",\n\tLevelFatal:    \"FATAL\",\n}\n\n// Notepad is where you leave a note!\ntype Notepad struct {\n\tTRACE    *log.Logger\n\tDEBUG    *log.Logger\n\tINFO     *log.Logger\n\tWARN     *log.Logger\n\tERROR    *log.Logger\n\tCRITICAL *log.Logger\n\tFATAL    *log.Logger\n\n\tLOG      *log.Logger\n\tFEEDBACK *Feedback\n\n\tloggers         [7]**log.Logger\n\tlogHandle       io.Writer\n\toutHandle       io.Writer\n\tlogThreshold    Threshold\n\tstdoutThreshold Threshold\n\tprefix          string\n\tflags           int\n\n\t// One per Threshold\n\tlogCounters [7]*logCounter\n}\n\n// NewNotepad create a new notepad.\nfunc NewNotepad(outThreshold Threshold, logThreshold Threshold, outHandle, logHandle io.Writer, prefix string, flags int) *Notepad {\n\tn := &Notepad{}\n\n\tn.loggers = [7]**log.Logger{&n.TRACE, &n.DEBUG, &n.INFO, &n.WARN, &n.ERROR, &n.CRITICAL, &n.FATAL}\n\tn.outHandle = outHandle\n\tn.logHandle = logHandle\n\tn.stdoutThreshold = outThreshold\n\tn.logThreshold = logThreshold\n\n\tif len(prefix) != 0 {\n\t\tn.prefix = \"[\" + prefix + \"] \"\n\t} else {\n\t\tn.prefix = \"\"\n\t}\n\n\tn.flags = flags\n\n\tn.LOG = log.New(n.logHandle,\n\t\t\"LOG:   \",\n\t\tn.flags)\n\tn.FEEDBACK = &Feedback{out: log.New(outHandle, \"\", 0), log: n.LOG}\n\n\tn.init()\n\treturn n\n}\n\n// init creates the loggers for each level depending on the notepad thresholds.\nfunc (n *Notepad) init() {\n\tlogAndOut := io.MultiWriter(n.outHandle, n.logHandle)\n\n\tfor t, logger := range n.loggers {\n\t\tthreshold := Threshold(t)\n\t\tcounter := &logCounter{}\n\t\tn.logCounters[t] = counter\n\t\tprefix := n.prefix + threshold.String() + \" \"\n\n\t\tswitch {\n\t\tcase threshold >= n.logThreshold && threshold >= n.stdoutThreshold:\n\t\t\t*logger = log.New(io.MultiWriter(counter, logAndOut), prefix, n.flags)\n\n\t\tcase threshold >= n.logThreshold:\n\t\t\t*logger = log.New(io.MultiWriter(counter, n.logHandle), prefix, n.flags)\n\n\t\tcase threshold >= n.stdoutThreshold:\n\t\t\t*logger = log.New(io.MultiWriter(counter, n.outHandle), prefix, n.flags)\n\n\t\tdefault:\n\t\t\t// counter doesn't care about prefix and flags, so don't use them\n\t\t\t// for performance.\n\t\t\t*logger = log.New(counter, \"\", 0)\n\t\t}\n\t}\n}\n\n// SetLogThreshold changes the threshold above which messages are written to the\n// log file.\nfunc (n *Notepad) SetLogThreshold(threshold Threshold) {\n\tn.logThreshold = threshold\n\tn.init()\n}\n\n// SetLogOutput changes the file where log messages are written.\nfunc (n *Notepad) SetLogOutput(handle io.Writer) {\n\tn.logHandle = handle\n\tn.init()\n}\n\n// GetStdoutThreshold returns the defined Treshold for the log logger.\nfunc (n *Notepad) GetLogThreshold() Threshold {\n\treturn n.logThreshold\n}\n\n// SetStdoutThreshold changes the threshold above which messages are written to the\n// standard output.\nfunc (n *Notepad) SetStdoutThreshold(threshold Threshold) {\n\tn.stdoutThreshold = threshold\n\tn.init()\n}\n\n// GetStdoutThreshold returns the Treshold for the stdout logger.\nfunc (n *Notepad) GetStdoutThreshold() Threshold {\n\treturn n.stdoutThreshold\n}\n\n// SetPrefix changes the prefix used by the notepad. Prefixes are displayed between\n// brackets at the beginning of the line. An empty prefix won't be displayed at all.\nfunc (n *Notepad) SetPrefix(prefix string) {\n\tif len(prefix) != 0 {\n\t\tn.prefix = \"[\" + prefix + \"] \"\n\t} else {\n\t\tn.prefix = \"\"\n\t}\n\tn.init()\n}\n\n// SetFlags choose which flags the logger will display (after prefix and message\n// level). See the package log for more informations on this.\nfunc (n *Notepad) SetFlags(flags int) {\n\tn.flags = flags\n\tn.init()\n}\n\n// Feedback writes plainly to the outHandle while\n// logging with the standard extra information (date, file, etc).\ntype Feedback struct {\n\tout *log.Logger\n\tlog *log.Logger\n}\n\nfunc (fb *Feedback) Println(v ...interface{}) {\n\tfb.output(fmt.Sprintln(v...))\n}\n\nfunc (fb *Feedback) Printf(format string, v ...interface{}) {\n\tfb.output(fmt.Sprintf(format, v...))\n}\n\nfunc (fb *Feedback) Print(v ...interface{}) {\n\tfb.output(fmt.Sprint(v...))\n}\n\nfunc (fb *Feedback) output(s string) {\n\tif fb.out != nil {\n\t\tfb.out.Output(2, s)\n\t}\n\tif fb.log != nil {\n\t\tfb.log.Output(2, s)\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/.gitignore",
    "content": ".idea/*\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/.travis.yml",
    "content": "sudo: false\n\nlanguage: go\n\ngo:\n  - 1.7.3\n  - 1.8.1\n  - tip\n\nmatrix:\n  allow_failures:\n    - go: tip\n\ninstall:\n  - go get github.com/golang/lint/golint\n  - export PATH=$GOPATH/bin:$PATH\n  - go install ./...\n\nscript:\n  - verify/all.sh -v\n  - go test ./...\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/LICENSE",
    "content": "Copyright (c) 2012 Alex Ogier. All rights reserved.\nCopyright (c) 2012 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/README.md",
    "content": "[![Build Status](https://travis-ci.org/spf13/pflag.svg?branch=master)](https://travis-ci.org/spf13/pflag)\n[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/pflag)](https://goreportcard.com/report/github.com/spf13/pflag)\n[![GoDoc](https://godoc.org/github.com/spf13/pflag?status.svg)](https://godoc.org/github.com/spf13/pflag)\n\n## Description\n\npflag is a drop-in replacement for Go's flag package, implementing\nPOSIX/GNU-style --flags.\n\npflag is compatible with the [GNU extensions to the POSIX recommendations\nfor command-line options][1]. For a more precise description, see the\n\"Command-line flag syntax\" section below.\n\n[1]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html\n\npflag is available under the same style of BSD license as the Go language,\nwhich can be found in the LICENSE file.\n\n## Installation\n\npflag is available using the standard `go get` command.\n\nInstall by running:\n\n    go get github.com/spf13/pflag\n\nRun tests by running:\n\n    go test github.com/spf13/pflag\n\n## Usage\n\npflag is a drop-in replacement of Go's native flag package. If you import\npflag under the name \"flag\" then all code should continue to function\nwith no changes.\n\n``` go\nimport flag \"github.com/spf13/pflag\"\n```\n\nThere is one exception to this: if you directly instantiate the Flag struct\nthere is one more field \"Shorthand\" that you will need to set.\nMost code never instantiates this struct directly, and instead uses\nfunctions such as String(), BoolVar(), and Var(), and is therefore\nunaffected.\n\nDefine flags using flag.String(), Bool(), Int(), etc.\n\nThis declares an integer flag, -flagname, stored in the pointer ip, with type *int.\n\n``` go\nvar ip *int = flag.Int(\"flagname\", 1234, \"help message for flagname\")\n```\n\nIf you like, you can bind the flag to a variable using the Var() functions.\n\n``` go\nvar flagvar int\nfunc init() {\n    flag.IntVar(&flagvar, \"flagname\", 1234, \"help message for flagname\")\n}\n```\n\nOr you can create custom flags that satisfy the Value interface (with\npointer receivers) and couple them to flag parsing by\n\n``` go\nflag.Var(&flagVal, \"name\", \"help message for flagname\")\n```\n\nFor such flags, the default value is just the initial value of the variable.\n\nAfter all flags are defined, call\n\n``` go\nflag.Parse()\n```\n\nto parse the command line into the defined flags.\n\nFlags may then be used directly. If you're using the flags themselves,\nthey are all pointers; if you bind to variables, they're values.\n\n``` go\nfmt.Println(\"ip has value \", *ip)\nfmt.Println(\"flagvar has value \", flagvar)\n```\n\nThere are helpers function to get values later if you have the FlagSet but\nit was difficult to keep up with all of the flag pointers in your code.\nIf you have a pflag.FlagSet with a flag called 'flagname' of type int you\ncan use GetInt() to get the int value. But notice that 'flagname' must exist\nand it must be an int. GetString(\"flagname\") will fail.\n\n``` go\ni, err := flagset.GetInt(\"flagname\")\n```\n\nAfter parsing, the arguments after the flag are available as the\nslice flag.Args() or individually as flag.Arg(i).\nThe arguments are indexed from 0 through flag.NArg()-1.\n\nThe pflag package also defines some new functions that are not in flag,\nthat give one-letter shorthands for flags. You can use these by appending\n'P' to the name of any function that defines a flag.\n\n``` go\nvar ip = flag.IntP(\"flagname\", \"f\", 1234, \"help message\")\nvar flagvar bool\nfunc init() {\n\tflag.BoolVarP(&flagvar, \"boolname\", \"b\", true, \"help message\")\n}\nflag.VarP(&flagVal, \"varname\", \"v\", \"help message\")\n```\n\nShorthand letters can be used with single dashes on the command line.\nBoolean shorthand flags can be combined with other shorthand flags.\n\nThe default set of command-line flags is controlled by\ntop-level functions.  The FlagSet type allows one to define\nindependent sets of flags, such as to implement subcommands\nin a command-line interface. The methods of FlagSet are\nanalogous to the top-level functions for the command-line\nflag set.\n\n## Setting no option default values for flags\n\nAfter you create a flag it is possible to set the pflag.NoOptDefVal for\nthe given flag. Doing this changes the meaning of the flag slightly. If\na flag has a NoOptDefVal and the flag is set on the command line without\nan option the flag will be set to the NoOptDefVal. For example given:\n\n``` go\nvar ip = flag.IntP(\"flagname\", \"f\", 1234, \"help message\")\nflag.Lookup(\"flagname\").NoOptDefVal = \"4321\"\n```\n\nWould result in something like\n\n| Parsed Arguments | Resulting Value |\n| -------------    | -------------   |\n| --flagname=1357  | ip=1357         |\n| --flagname       | ip=4321         |\n| [nothing]        | ip=1234         |\n\n## Command line flag syntax\n\n```\n--flag    // boolean flags, or flags with no option default values\n--flag x  // only on flags without a default value\n--flag=x\n```\n\nUnlike the flag package, a single dash before an option means something\ndifferent than a double dash. Single dashes signify a series of shorthand\nletters for flags. All but the last shorthand letter must be boolean flags\nor a flag with a default value\n\n```\n// boolean or flags where the 'no option default value' is set\n-f\n-f=true\n-abc\nbut\n-b true is INVALID\n\n// non-boolean and flags without a 'no option default value'\n-n 1234\n-n=1234\n-n1234\n\n// mixed\n-abcs \"hello\"\n-absd=\"hello\"\n-abcs1234\n```\n\nFlag parsing stops after the terminator \"--\". Unlike the flag package,\nflags can be interspersed with arguments anywhere on the command line\nbefore this terminator.\n\nInteger flags accept 1234, 0664, 0x1234 and may be negative.\nBoolean flags (in their long form) accept 1, 0, t, f, true, false,\nTRUE, FALSE, True, False.\nDuration flags accept any input valid for time.ParseDuration.\n\n## Mutating or \"Normalizing\" Flag names\n\nIt is possible to set a custom flag name 'normalization function.' It allows flag names to be mutated both when created in the code and when used on the command line to some 'normalized' form. The 'normalized' form is used for comparison. Two examples of using the custom normalization func follow.\n\n**Example #1**: You want -, _, and . in flags to compare the same. aka --my-flag == --my_flag == --my.flag\n\n``` go\nfunc wordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {\n\tfrom := []string{\"-\", \"_\"}\n\tto := \".\"\n\tfor _, sep := range from {\n\t\tname = strings.Replace(name, sep, to, -1)\n\t}\n\treturn pflag.NormalizedName(name)\n}\n\nmyFlagSet.SetNormalizeFunc(wordSepNormalizeFunc)\n```\n\n**Example #2**: You want to alias two flags. aka --old-flag-name == --new-flag-name\n\n``` go\nfunc aliasNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {\n\tswitch name {\n\tcase \"old-flag-name\":\n\t\tname = \"new-flag-name\"\n\t\tbreak\n\t}\n\treturn pflag.NormalizedName(name)\n}\n\nmyFlagSet.SetNormalizeFunc(aliasNormalizeFunc)\n```\n\n## Deprecating a flag or its shorthand\nIt is possible to deprecate a flag, or just its shorthand. Deprecating a flag/shorthand hides it from help text and prints a usage message when the deprecated flag/shorthand is used.\n\n**Example #1**: You want to deprecate a flag named \"badflag\" as well as inform the users what flag they should use instead.\n```go\n// deprecate a flag by specifying its name and a usage message\nflags.MarkDeprecated(\"badflag\", \"please use --good-flag instead\")\n```\nThis hides \"badflag\" from help text, and prints `Flag --badflag has been deprecated, please use --good-flag instead` when \"badflag\" is used.\n\n**Example #2**: You want to keep a flag name \"noshorthandflag\" but deprecate its shortname \"n\".\n```go\n// deprecate a flag shorthand by specifying its flag name and a usage message\nflags.MarkShorthandDeprecated(\"noshorthandflag\", \"please use --noshorthandflag only\")\n```\nThis hides the shortname \"n\" from help text, and prints `Flag shorthand -n has been deprecated, please use --noshorthandflag only` when the shorthand \"n\" is used.\n\nNote that usage message is essential here, and it should not be empty.\n\n## Hidden flags\nIt is possible to mark a flag as hidden, meaning it will still function as normal, however will not show up in usage/help text.\n\n**Example**: You have a flag named \"secretFlag\" that you need for internal use only and don't want it showing up in help text, or for its usage text to be available.\n```go\n// hide a flag by specifying its name\nflags.MarkHidden(\"secretFlag\")\n```\n\n## Disable sorting of flags\n`pflag` allows you to disable sorting of flags for help and usage message.\n\n**Example**:\n```go\nflags.BoolP(\"verbose\", \"v\", false, \"verbose output\")\nflags.String(\"coolflag\", \"yeaah\", \"it's really cool flag\")\nflags.Int(\"usefulflag\", 777, \"sometimes it's very useful\")\nflags.SortFlags = false\nflags.PrintDefaults()\n```\n**Output**:\n```\n  -v, --verbose           verbose output\n      --coolflag string   it's really cool flag (default \"yeaah\")\n      --usefulflag int    sometimes it's very useful (default 777)\n```\n\n\n## Supporting Go flags when using pflag\nIn order to support flags defined using Go's `flag` package, they must be added to the `pflag` flagset. This is usually necessary\nto support flags defined by third-party dependencies (e.g. `golang/glog`).\n\n**Example**: You want to add the Go flags to the `CommandLine` flagset\n```go\nimport (\n\tgoflag \"flag\"\n\tflag \"github.com/spf13/pflag\"\n)\n\nvar ip *int = flag.Int(\"flagname\", 1234, \"help message for flagname\")\n\nfunc main() {\n\tflag.CommandLine.AddGoFlagSet(goflag.CommandLine)\n\tflag.Parse()\n}\n```\n\n## More info\n\nYou can see the full reference documentation of the pflag package\n[at godoc.org][3], or through go's standard documentation system by\nrunning `godoc -http=:6060` and browsing to\n[http://localhost:6060/pkg/github.com/spf13/pflag][2] after\ninstallation.\n\n[2]: http://localhost:6060/pkg/github.com/spf13/pflag\n[3]: http://godoc.org/github.com/spf13/pflag\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/bool.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// optional interface to indicate boolean flags that can be\n// supplied without \"=value\" text\ntype boolFlag interface {\n\tValue\n\tIsBoolFlag() bool\n}\n\n// -- bool Value\ntype boolValue bool\n\nfunc newBoolValue(val bool, p *bool) *boolValue {\n\t*p = val\n\treturn (*boolValue)(p)\n}\n\nfunc (b *boolValue) Set(s string) error {\n\tv, err := strconv.ParseBool(s)\n\t*b = boolValue(v)\n\treturn err\n}\n\nfunc (b *boolValue) Type() string {\n\treturn \"bool\"\n}\n\nfunc (b *boolValue) String() string { return strconv.FormatBool(bool(*b)) }\n\nfunc (b *boolValue) IsBoolFlag() bool { return true }\n\nfunc boolConv(sval string) (interface{}, error) {\n\treturn strconv.ParseBool(sval)\n}\n\n// GetBool return the bool value of a flag with the given name\nfunc (f *FlagSet) GetBool(name string) (bool, error) {\n\tval, err := f.getFlagType(name, \"bool\", boolConv)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn val.(bool), nil\n}\n\n// BoolVar defines a bool flag with specified name, default value, and usage string.\n// The argument p points to a bool variable in which to store the value of the flag.\nfunc (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) {\n\tf.BoolVarP(p, name, \"\", value, usage)\n}\n\n// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BoolVarP(p *bool, name, shorthand string, value bool, usage string) {\n\tflag := f.VarPF(newBoolValue(value, p), name, shorthand, usage)\n\tflag.NoOptDefVal = \"true\"\n}\n\n// BoolVar defines a bool flag with specified name, default value, and usage string.\n// The argument p points to a bool variable in which to store the value of the flag.\nfunc BoolVar(p *bool, name string, value bool, usage string) {\n\tBoolVarP(p, name, \"\", value, usage)\n}\n\n// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash.\nfunc BoolVarP(p *bool, name, shorthand string, value bool, usage string) {\n\tflag := CommandLine.VarPF(newBoolValue(value, p), name, shorthand, usage)\n\tflag.NoOptDefVal = \"true\"\n}\n\n// Bool defines a bool flag with specified name, default value, and usage string.\n// The return value is the address of a bool variable that stores the value of the flag.\nfunc (f *FlagSet) Bool(name string, value bool, usage string) *bool {\n\treturn f.BoolP(name, \"\", value, usage)\n}\n\n// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BoolP(name, shorthand string, value bool, usage string) *bool {\n\tp := new(bool)\n\tf.BoolVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Bool defines a bool flag with specified name, default value, and usage string.\n// The return value is the address of a bool variable that stores the value of the flag.\nfunc Bool(name string, value bool, usage string) *bool {\n\treturn BoolP(name, \"\", value, usage)\n}\n\n// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash.\nfunc BoolP(name, shorthand string, value bool, usage string) *bool {\n\tb := CommandLine.BoolP(name, shorthand, value, usage)\n\treturn b\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/bool_slice.go",
    "content": "package pflag\n\nimport (\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// -- boolSlice Value\ntype boolSliceValue struct {\n\tvalue   *[]bool\n\tchanged bool\n}\n\nfunc newBoolSliceValue(val []bool, p *[]bool) *boolSliceValue {\n\tbsv := new(boolSliceValue)\n\tbsv.value = p\n\t*bsv.value = val\n\treturn bsv\n}\n\n// Set converts, and assigns, the comma-separated boolean argument string representation as the []bool value of this flag.\n// If Set is called on a flag that already has a []bool assigned, the newly converted values will be appended.\nfunc (s *boolSliceValue) Set(val string) error {\n\n\t// remove all quote characters\n\trmQuote := strings.NewReplacer(`\"`, \"\", `'`, \"\", \"`\", \"\")\n\n\t// read flag arguments with CSV parser\n\tboolStrSlice, err := readAsCSV(rmQuote.Replace(val))\n\tif err != nil && err != io.EOF {\n\t\treturn err\n\t}\n\n\t// parse boolean values into slice\n\tout := make([]bool, 0, len(boolStrSlice))\n\tfor _, boolStr := range boolStrSlice {\n\t\tb, err := strconv.ParseBool(strings.TrimSpace(boolStr))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tout = append(out, b)\n\t}\n\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\t*s.value = append(*s.value, out...)\n\t}\n\n\ts.changed = true\n\n\treturn nil\n}\n\n// Type returns a string that uniquely represents this flag's type.\nfunc (s *boolSliceValue) Type() string {\n\treturn \"boolSlice\"\n}\n\n// String defines a \"native\" format for this boolean slice flag value.\nfunc (s *boolSliceValue) String() string {\n\n\tboolStrSlice := make([]string, len(*s.value))\n\tfor i, b := range *s.value {\n\t\tboolStrSlice[i] = strconv.FormatBool(b)\n\t}\n\n\tout, _ := writeAsCSV(boolStrSlice)\n\n\treturn \"[\" + out + \"]\"\n}\n\nfunc boolSliceConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// Empty string would cause a slice with one (empty) entry\n\tif len(val) == 0 {\n\t\treturn []bool{}, nil\n\t}\n\tss := strings.Split(val, \",\")\n\tout := make([]bool, len(ss))\n\tfor i, t := range ss {\n\t\tvar err error\n\t\tout[i], err = strconv.ParseBool(t)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn out, nil\n}\n\n// GetBoolSlice returns the []bool value of a flag with the given name.\nfunc (f *FlagSet) GetBoolSlice(name string) ([]bool, error) {\n\tval, err := f.getFlagType(name, \"boolSlice\", boolSliceConv)\n\tif err != nil {\n\t\treturn []bool{}, err\n\t}\n\treturn val.([]bool), nil\n}\n\n// BoolSliceVar defines a boolSlice flag with specified name, default value, and usage string.\n// The argument p points to a []bool variable in which to store the value of the flag.\nfunc (f *FlagSet) BoolSliceVar(p *[]bool, name string, value []bool, usage string) {\n\tf.VarP(newBoolSliceValue(value, p), name, \"\", usage)\n}\n\n// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) {\n\tf.VarP(newBoolSliceValue(value, p), name, shorthand, usage)\n}\n\n// BoolSliceVar defines a []bool flag with specified name, default value, and usage string.\n// The argument p points to a []bool variable in which to store the value of the flag.\nfunc BoolSliceVar(p *[]bool, name string, value []bool, usage string) {\n\tCommandLine.VarP(newBoolSliceValue(value, p), name, \"\", usage)\n}\n\n// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) {\n\tCommandLine.VarP(newBoolSliceValue(value, p), name, shorthand, usage)\n}\n\n// BoolSlice defines a []bool flag with specified name, default value, and usage string.\n// The return value is the address of a []bool variable that stores the value of the flag.\nfunc (f *FlagSet) BoolSlice(name string, value []bool, usage string) *[]bool {\n\tp := []bool{}\n\tf.BoolSliceVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool {\n\tp := []bool{}\n\tf.BoolSliceVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// BoolSlice defines a []bool flag with specified name, default value, and usage string.\n// The return value is the address of a []bool variable that stores the value of the flag.\nfunc BoolSlice(name string, value []bool, usage string) *[]bool {\n\treturn CommandLine.BoolSliceP(name, \"\", value, usage)\n}\n\n// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool {\n\treturn CommandLine.BoolSliceP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/bytes.go",
    "content": "package pflag\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"strings\"\n)\n\n// BytesHex adapts []byte for use as a flag. Value of flag is HEX encoded\ntype bytesHexValue []byte\n\n// String implements pflag.Value.String.\nfunc (bytesHex bytesHexValue) String() string {\n\treturn fmt.Sprintf(\"%X\", []byte(bytesHex))\n}\n\n// Set implements pflag.Value.Set.\nfunc (bytesHex *bytesHexValue) Set(value string) error {\n\tbin, err := hex.DecodeString(strings.TrimSpace(value))\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*bytesHex = bin\n\n\treturn nil\n}\n\n// Type implements pflag.Value.Type.\nfunc (*bytesHexValue) Type() string {\n\treturn \"bytesHex\"\n}\n\nfunc newBytesHexValue(val []byte, p *[]byte) *bytesHexValue {\n\t*p = val\n\treturn (*bytesHexValue)(p)\n}\n\nfunc bytesHexConv(sval string) (interface{}, error) {\n\n\tbin, err := hex.DecodeString(sval)\n\n\tif err == nil {\n\t\treturn bin, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"invalid string being converted to Bytes: %s %s\", sval, err)\n}\n\n// GetBytesHex return the []byte value of a flag with the given name\nfunc (f *FlagSet) GetBytesHex(name string) ([]byte, error) {\n\tval, err := f.getFlagType(name, \"bytesHex\", bytesHexConv)\n\n\tif err != nil {\n\t\treturn []byte{}, err\n\t}\n\n\treturn val.([]byte), nil\n}\n\n// BytesHexVar defines an []byte flag with specified name, default value, and usage string.\n// The argument p points to an []byte variable in which to store the value of the flag.\nfunc (f *FlagSet) BytesHexVar(p *[]byte, name string, value []byte, usage string) {\n\tf.VarP(newBytesHexValue(value, p), name, \"\", usage)\n}\n\n// BytesHexVarP is like BytesHexVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BytesHexVarP(p *[]byte, name, shorthand string, value []byte, usage string) {\n\tf.VarP(newBytesHexValue(value, p), name, shorthand, usage)\n}\n\n// BytesHexVar defines an []byte flag with specified name, default value, and usage string.\n// The argument p points to an []byte variable in which to store the value of the flag.\nfunc BytesHexVar(p *[]byte, name string, value []byte, usage string) {\n\tCommandLine.VarP(newBytesHexValue(value, p), name, \"\", usage)\n}\n\n// BytesHexVarP is like BytesHexVar, but accepts a shorthand letter that can be used after a single dash.\nfunc BytesHexVarP(p *[]byte, name, shorthand string, value []byte, usage string) {\n\tCommandLine.VarP(newBytesHexValue(value, p), name, shorthand, usage)\n}\n\n// BytesHex defines an []byte flag with specified name, default value, and usage string.\n// The return value is the address of an []byte variable that stores the value of the flag.\nfunc (f *FlagSet) BytesHex(name string, value []byte, usage string) *[]byte {\n\tp := new([]byte)\n\tf.BytesHexVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// BytesHexP is like BytesHex, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BytesHexP(name, shorthand string, value []byte, usage string) *[]byte {\n\tp := new([]byte)\n\tf.BytesHexVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// BytesHex defines an []byte flag with specified name, default value, and usage string.\n// The return value is the address of an []byte variable that stores the value of the flag.\nfunc BytesHex(name string, value []byte, usage string) *[]byte {\n\treturn CommandLine.BytesHexP(name, \"\", value, usage)\n}\n\n// BytesHexP is like BytesHex, but accepts a shorthand letter that can be used after a single dash.\nfunc BytesHexP(name, shorthand string, value []byte, usage string) *[]byte {\n\treturn CommandLine.BytesHexP(name, shorthand, value, usage)\n}\n\n// BytesBase64 adapts []byte for use as a flag. Value of flag is Base64 encoded\ntype bytesBase64Value []byte\n\n// String implements pflag.Value.String.\nfunc (bytesBase64 bytesBase64Value) String() string {\n\treturn base64.StdEncoding.EncodeToString([]byte(bytesBase64))\n}\n\n// Set implements pflag.Value.Set.\nfunc (bytesBase64 *bytesBase64Value) Set(value string) error {\n\tbin, err := base64.StdEncoding.DecodeString(strings.TrimSpace(value))\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*bytesBase64 = bin\n\n\treturn nil\n}\n\n// Type implements pflag.Value.Type.\nfunc (*bytesBase64Value) Type() string {\n\treturn \"bytesBase64\"\n}\n\nfunc newBytesBase64Value(val []byte, p *[]byte) *bytesBase64Value {\n\t*p = val\n\treturn (*bytesBase64Value)(p)\n}\n\nfunc bytesBase64ValueConv(sval string) (interface{}, error) {\n\n\tbin, err := base64.StdEncoding.DecodeString(sval)\n\tif err == nil {\n\t\treturn bin, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"invalid string being converted to Bytes: %s %s\", sval, err)\n}\n\n// GetBytesBase64 return the []byte value of a flag with the given name\nfunc (f *FlagSet) GetBytesBase64(name string) ([]byte, error) {\n\tval, err := f.getFlagType(name, \"bytesBase64\", bytesBase64ValueConv)\n\n\tif err != nil {\n\t\treturn []byte{}, err\n\t}\n\n\treturn val.([]byte), nil\n}\n\n// BytesBase64Var defines an []byte flag with specified name, default value, and usage string.\n// The argument p points to an []byte variable in which to store the value of the flag.\nfunc (f *FlagSet) BytesBase64Var(p *[]byte, name string, value []byte, usage string) {\n\tf.VarP(newBytesBase64Value(value, p), name, \"\", usage)\n}\n\n// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) {\n\tf.VarP(newBytesBase64Value(value, p), name, shorthand, usage)\n}\n\n// BytesBase64Var defines an []byte flag with specified name, default value, and usage string.\n// The argument p points to an []byte variable in which to store the value of the flag.\nfunc BytesBase64Var(p *[]byte, name string, value []byte, usage string) {\n\tCommandLine.VarP(newBytesBase64Value(value, p), name, \"\", usage)\n}\n\n// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) {\n\tCommandLine.VarP(newBytesBase64Value(value, p), name, shorthand, usage)\n}\n\n// BytesBase64 defines an []byte flag with specified name, default value, and usage string.\n// The return value is the address of an []byte variable that stores the value of the flag.\nfunc (f *FlagSet) BytesBase64(name string, value []byte, usage string) *[]byte {\n\tp := new([]byte)\n\tf.BytesBase64VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte {\n\tp := new([]byte)\n\tf.BytesBase64VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// BytesBase64 defines an []byte flag with specified name, default value, and usage string.\n// The return value is the address of an []byte variable that stores the value of the flag.\nfunc BytesBase64(name string, value []byte, usage string) *[]byte {\n\treturn CommandLine.BytesBase64P(name, \"\", value, usage)\n}\n\n// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash.\nfunc BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte {\n\treturn CommandLine.BytesBase64P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/count.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- count Value\ntype countValue int\n\nfunc newCountValue(val int, p *int) *countValue {\n\t*p = val\n\treturn (*countValue)(p)\n}\n\nfunc (i *countValue) Set(s string) error {\n\t// \"+1\" means that no specific value was passed, so increment\n\tif s == \"+1\" {\n\t\t*i = countValue(*i + 1)\n\t\treturn nil\n\t}\n\tv, err := strconv.ParseInt(s, 0, 0)\n\t*i = countValue(v)\n\treturn err\n}\n\nfunc (i *countValue) Type() string {\n\treturn \"count\"\n}\n\nfunc (i *countValue) String() string { return strconv.Itoa(int(*i)) }\n\nfunc countConv(sval string) (interface{}, error) {\n\ti, err := strconv.Atoi(sval)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn i, nil\n}\n\n// GetCount return the int value of a flag with the given name\nfunc (f *FlagSet) GetCount(name string) (int, error) {\n\tval, err := f.getFlagType(name, \"count\", countConv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(int), nil\n}\n\n// CountVar defines a count flag with specified name, default value, and usage string.\n// The argument p points to an int variable in which to store the value of the flag.\n// A count flag will add 1 to its value evey time it is found on the command line\nfunc (f *FlagSet) CountVar(p *int, name string, usage string) {\n\tf.CountVarP(p, name, \"\", usage)\n}\n\n// CountVarP is like CountVar only take a shorthand for the flag name.\nfunc (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) {\n\tflag := f.VarPF(newCountValue(0, p), name, shorthand, usage)\n\tflag.NoOptDefVal = \"+1\"\n}\n\n// CountVar like CountVar only the flag is placed on the CommandLine instead of a given flag set\nfunc CountVar(p *int, name string, usage string) {\n\tCommandLine.CountVar(p, name, usage)\n}\n\n// CountVarP is like CountVar only take a shorthand for the flag name.\nfunc CountVarP(p *int, name, shorthand string, usage string) {\n\tCommandLine.CountVarP(p, name, shorthand, usage)\n}\n\n// Count defines a count flag with specified name, default value, and usage string.\n// The return value is the address of an int variable that stores the value of the flag.\n// A count flag will add 1 to its value evey time it is found on the command line\nfunc (f *FlagSet) Count(name string, usage string) *int {\n\tp := new(int)\n\tf.CountVarP(p, name, \"\", usage)\n\treturn p\n}\n\n// CountP is like Count only takes a shorthand for the flag name.\nfunc (f *FlagSet) CountP(name, shorthand string, usage string) *int {\n\tp := new(int)\n\tf.CountVarP(p, name, shorthand, usage)\n\treturn p\n}\n\n// Count defines a count flag with specified name, default value, and usage string.\n// The return value is the address of an int variable that stores the value of the flag.\n// A count flag will add 1 to its value evey time it is found on the command line\nfunc Count(name string, usage string) *int {\n\treturn CommandLine.CountP(name, \"\", usage)\n}\n\n// CountP is like Count only takes a shorthand for the flag name.\nfunc CountP(name, shorthand string, usage string) *int {\n\treturn CommandLine.CountP(name, shorthand, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/duration.go",
    "content": "package pflag\n\nimport (\n\t\"time\"\n)\n\n// -- time.Duration Value\ntype durationValue time.Duration\n\nfunc newDurationValue(val time.Duration, p *time.Duration) *durationValue {\n\t*p = val\n\treturn (*durationValue)(p)\n}\n\nfunc (d *durationValue) Set(s string) error {\n\tv, err := time.ParseDuration(s)\n\t*d = durationValue(v)\n\treturn err\n}\n\nfunc (d *durationValue) Type() string {\n\treturn \"duration\"\n}\n\nfunc (d *durationValue) String() string { return (*time.Duration)(d).String() }\n\nfunc durationConv(sval string) (interface{}, error) {\n\treturn time.ParseDuration(sval)\n}\n\n// GetDuration return the duration value of a flag with the given name\nfunc (f *FlagSet) GetDuration(name string) (time.Duration, error) {\n\tval, err := f.getFlagType(name, \"duration\", durationConv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(time.Duration), nil\n}\n\n// DurationVar defines a time.Duration flag with specified name, default value, and usage string.\n// The argument p points to a time.Duration variable in which to store the value of the flag.\nfunc (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string) {\n\tf.VarP(newDurationValue(value, p), name, \"\", usage)\n}\n\n// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) {\n\tf.VarP(newDurationValue(value, p), name, shorthand, usage)\n}\n\n// DurationVar defines a time.Duration flag with specified name, default value, and usage string.\n// The argument p points to a time.Duration variable in which to store the value of the flag.\nfunc DurationVar(p *time.Duration, name string, value time.Duration, usage string) {\n\tCommandLine.VarP(newDurationValue(value, p), name, \"\", usage)\n}\n\n// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash.\nfunc DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) {\n\tCommandLine.VarP(newDurationValue(value, p), name, shorthand, usage)\n}\n\n// Duration defines a time.Duration flag with specified name, default value, and usage string.\n// The return value is the address of a time.Duration variable that stores the value of the flag.\nfunc (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration {\n\tp := new(time.Duration)\n\tf.DurationVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration {\n\tp := new(time.Duration)\n\tf.DurationVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Duration defines a time.Duration flag with specified name, default value, and usage string.\n// The return value is the address of a time.Duration variable that stores the value of the flag.\nfunc Duration(name string, value time.Duration, usage string) *time.Duration {\n\treturn CommandLine.DurationP(name, \"\", value, usage)\n}\n\n// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash.\nfunc DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration {\n\treturn CommandLine.DurationP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/duration_slice.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n)\n\n// -- durationSlice Value\ntype durationSliceValue struct {\n\tvalue   *[]time.Duration\n\tchanged bool\n}\n\nfunc newDurationSliceValue(val []time.Duration, p *[]time.Duration) *durationSliceValue {\n\tdsv := new(durationSliceValue)\n\tdsv.value = p\n\t*dsv.value = val\n\treturn dsv\n}\n\nfunc (s *durationSliceValue) Set(val string) error {\n\tss := strings.Split(val, \",\")\n\tout := make([]time.Duration, len(ss))\n\tfor i, d := range ss {\n\t\tvar err error\n\t\tout[i], err = time.ParseDuration(d)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t}\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\t*s.value = append(*s.value, out...)\n\t}\n\ts.changed = true\n\treturn nil\n}\n\nfunc (s *durationSliceValue) Type() string {\n\treturn \"durationSlice\"\n}\n\nfunc (s *durationSliceValue) String() string {\n\tout := make([]string, len(*s.value))\n\tfor i, d := range *s.value {\n\t\tout[i] = fmt.Sprintf(\"%s\", d)\n\t}\n\treturn \"[\" + strings.Join(out, \",\") + \"]\"\n}\n\nfunc durationSliceConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// Empty string would cause a slice with one (empty) entry\n\tif len(val) == 0 {\n\t\treturn []time.Duration{}, nil\n\t}\n\tss := strings.Split(val, \",\")\n\tout := make([]time.Duration, len(ss))\n\tfor i, d := range ss {\n\t\tvar err error\n\t\tout[i], err = time.ParseDuration(d)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t}\n\treturn out, nil\n}\n\n// GetDurationSlice returns the []time.Duration value of a flag with the given name\nfunc (f *FlagSet) GetDurationSlice(name string) ([]time.Duration, error) {\n\tval, err := f.getFlagType(name, \"durationSlice\", durationSliceConv)\n\tif err != nil {\n\t\treturn []time.Duration{}, err\n\t}\n\treturn val.([]time.Duration), nil\n}\n\n// DurationSliceVar defines a durationSlice flag with specified name, default value, and usage string.\n// The argument p points to a []time.Duration variable in which to store the value of the flag.\nfunc (f *FlagSet) DurationSliceVar(p *[]time.Duration, name string, value []time.Duration, usage string) {\n\tf.VarP(newDurationSliceValue(value, p), name, \"\", usage)\n}\n\n// DurationSliceVarP is like DurationSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) DurationSliceVarP(p *[]time.Duration, name, shorthand string, value []time.Duration, usage string) {\n\tf.VarP(newDurationSliceValue(value, p), name, shorthand, usage)\n}\n\n// DurationSliceVar defines a duration[] flag with specified name, default value, and usage string.\n// The argument p points to a duration[] variable in which to store the value of the flag.\nfunc DurationSliceVar(p *[]time.Duration, name string, value []time.Duration, usage string) {\n\tCommandLine.VarP(newDurationSliceValue(value, p), name, \"\", usage)\n}\n\n// DurationSliceVarP is like DurationSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc DurationSliceVarP(p *[]time.Duration, name, shorthand string, value []time.Duration, usage string) {\n\tCommandLine.VarP(newDurationSliceValue(value, p), name, shorthand, usage)\n}\n\n// DurationSlice defines a []time.Duration flag with specified name, default value, and usage string.\n// The return value is the address of a []time.Duration variable that stores the value of the flag.\nfunc (f *FlagSet) DurationSlice(name string, value []time.Duration, usage string) *[]time.Duration {\n\tp := []time.Duration{}\n\tf.DurationSliceVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// DurationSliceP is like DurationSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) DurationSliceP(name, shorthand string, value []time.Duration, usage string) *[]time.Duration {\n\tp := []time.Duration{}\n\tf.DurationSliceVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// DurationSlice defines a []time.Duration flag with specified name, default value, and usage string.\n// The return value is the address of a []time.Duration variable that stores the value of the flag.\nfunc DurationSlice(name string, value []time.Duration, usage string) *[]time.Duration {\n\treturn CommandLine.DurationSliceP(name, \"\", value, usage)\n}\n\n// DurationSliceP is like DurationSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc DurationSliceP(name, shorthand string, value []time.Duration, usage string) *[]time.Duration {\n\treturn CommandLine.DurationSliceP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/flag.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/*\nPackage pflag is a drop-in replacement for Go's flag package, implementing\nPOSIX/GNU-style --flags.\n\npflag is compatible with the GNU extensions to the POSIX recommendations\nfor command-line options. See\nhttp://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html\n\nUsage:\n\npflag is a drop-in replacement of Go's native flag package. If you import\npflag under the name \"flag\" then all code should continue to function\nwith no changes.\n\n\timport flag \"github.com/spf13/pflag\"\n\nThere is one exception to this: if you directly instantiate the Flag struct\nthere is one more field \"Shorthand\" that you will need to set.\nMost code never instantiates this struct directly, and instead uses\nfunctions such as String(), BoolVar(), and Var(), and is therefore\nunaffected.\n\nDefine flags using flag.String(), Bool(), Int(), etc.\n\nThis declares an integer flag, -flagname, stored in the pointer ip, with type *int.\n\tvar ip = flag.Int(\"flagname\", 1234, \"help message for flagname\")\nIf you like, you can bind the flag to a variable using the Var() functions.\n\tvar flagvar int\n\tfunc init() {\n\t\tflag.IntVar(&flagvar, \"flagname\", 1234, \"help message for flagname\")\n\t}\nOr you can create custom flags that satisfy the Value interface (with\npointer receivers) and couple them to flag parsing by\n\tflag.Var(&flagVal, \"name\", \"help message for flagname\")\nFor such flags, the default value is just the initial value of the variable.\n\nAfter all flags are defined, call\n\tflag.Parse()\nto parse the command line into the defined flags.\n\nFlags may then be used directly. If you're using the flags themselves,\nthey are all pointers; if you bind to variables, they're values.\n\tfmt.Println(\"ip has value \", *ip)\n\tfmt.Println(\"flagvar has value \", flagvar)\n\nAfter parsing, the arguments after the flag are available as the\nslice flag.Args() or individually as flag.Arg(i).\nThe arguments are indexed from 0 through flag.NArg()-1.\n\nThe pflag package also defines some new functions that are not in flag,\nthat give one-letter shorthands for flags. You can use these by appending\n'P' to the name of any function that defines a flag.\n\tvar ip = flag.IntP(\"flagname\", \"f\", 1234, \"help message\")\n\tvar flagvar bool\n\tfunc init() {\n\t\tflag.BoolVarP(\"boolname\", \"b\", true, \"help message\")\n\t}\n\tflag.VarP(&flagVar, \"varname\", \"v\", 1234, \"help message\")\nShorthand letters can be used with single dashes on the command line.\nBoolean shorthand flags can be combined with other shorthand flags.\n\nCommand line flag syntax:\n\t--flag    // boolean flags only\n\t--flag=x\n\nUnlike the flag package, a single dash before an option means something\ndifferent than a double dash. Single dashes signify a series of shorthand\nletters for flags. All but the last shorthand letter must be boolean flags.\n\t// boolean flags\n\t-f\n\t-abc\n\t// non-boolean flags\n\t-n 1234\n\t-Ifile\n\t// mixed\n\t-abcs \"hello\"\n\t-abcn1234\n\nFlag parsing stops after the terminator \"--\". Unlike the flag package,\nflags can be interspersed with arguments anywhere on the command line\nbefore this terminator.\n\nInteger flags accept 1234, 0664, 0x1234 and may be negative.\nBoolean flags (in their long form) accept 1, 0, t, f, true, false,\nTRUE, FALSE, True, False.\nDuration flags accept any input valid for time.ParseDuration.\n\nThe default set of command-line flags is controlled by\ntop-level functions.  The FlagSet type allows one to define\nindependent sets of flags, such as to implement subcommands\nin a command-line interface. The methods of FlagSet are\nanalogous to the top-level functions for the command-line\nflag set.\n*/\npackage pflag\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\tgoflag \"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// ErrHelp is the error returned if the flag -help is invoked but no such flag is defined.\nvar ErrHelp = errors.New(\"pflag: help requested\")\n\n// ErrorHandling defines how to handle flag parsing errors.\ntype ErrorHandling int\n\nconst (\n\t// ContinueOnError will return an err from Parse() if an error is found\n\tContinueOnError ErrorHandling = iota\n\t// ExitOnError will call os.Exit(2) if an error is found when parsing\n\tExitOnError\n\t// PanicOnError will panic() if an error is found when parsing flags\n\tPanicOnError\n)\n\n// ParseErrorsWhitelist defines the parsing errors that can be ignored\ntype ParseErrorsWhitelist struct {\n\t// UnknownFlags will ignore unknown flags errors and continue parsing rest of the flags\n\tUnknownFlags bool\n}\n\n// NormalizedName is a flag name that has been normalized according to rules\n// for the FlagSet (e.g. making '-' and '_' equivalent).\ntype NormalizedName string\n\n// A FlagSet represents a set of defined flags.\ntype FlagSet struct {\n\t// Usage is the function called when an error occurs while parsing flags.\n\t// The field is a function (not a method) that may be changed to point to\n\t// a custom error handler.\n\tUsage func()\n\n\t// SortFlags is used to indicate, if user wants to have sorted flags in\n\t// help/usage messages.\n\tSortFlags bool\n\n\t// ParseErrorsWhitelist is used to configure a whitelist of errors\n\tParseErrorsWhitelist ParseErrorsWhitelist\n\n\tname              string\n\tparsed            bool\n\tactual            map[NormalizedName]*Flag\n\torderedActual     []*Flag\n\tsortedActual      []*Flag\n\tformal            map[NormalizedName]*Flag\n\torderedFormal     []*Flag\n\tsortedFormal      []*Flag\n\tshorthands        map[byte]*Flag\n\targs              []string // arguments after flags\n\targsLenAtDash     int      // len(args) when a '--' was located when parsing, or -1 if no --\n\terrorHandling     ErrorHandling\n\toutput            io.Writer // nil means stderr; use out() accessor\n\tinterspersed      bool      // allow interspersed option/non-option args\n\tnormalizeNameFunc func(f *FlagSet, name string) NormalizedName\n\n\taddedGoFlagSets []*goflag.FlagSet\n}\n\n// A Flag represents the state of a flag.\ntype Flag struct {\n\tName                string              // name as it appears on command line\n\tShorthand           string              // one-letter abbreviated flag\n\tUsage               string              // help message\n\tValue               Value               // value as set\n\tDefValue            string              // default value (as text); for usage message\n\tChanged             bool                // If the user set the value (or if left to default)\n\tNoOptDefVal         string              // default value (as text); if the flag is on the command line without any options\n\tDeprecated          string              // If this flag is deprecated, this string is the new or now thing to use\n\tHidden              bool                // used by cobra.Command to allow flags to be hidden from help/usage text\n\tShorthandDeprecated string              // If the shorthand of this flag is deprecated, this string is the new or now thing to use\n\tAnnotations         map[string][]string // used by cobra.Command bash autocomple code\n}\n\n// Value is the interface to the dynamic value stored in a flag.\n// (The default value is represented as a string.)\ntype Value interface {\n\tString() string\n\tSet(string) error\n\tType() string\n}\n\n// sortFlags returns the flags as a slice in lexicographical sorted order.\nfunc sortFlags(flags map[NormalizedName]*Flag) []*Flag {\n\tlist := make(sort.StringSlice, len(flags))\n\ti := 0\n\tfor k := range flags {\n\t\tlist[i] = string(k)\n\t\ti++\n\t}\n\tlist.Sort()\n\tresult := make([]*Flag, len(list))\n\tfor i, name := range list {\n\t\tresult[i] = flags[NormalizedName(name)]\n\t}\n\treturn result\n}\n\n// SetNormalizeFunc allows you to add a function which can translate flag names.\n// Flags added to the FlagSet will be translated and then when anything tries to\n// look up the flag that will also be translated. So it would be possible to create\n// a flag named \"getURL\" and have it translated to \"geturl\".  A user could then pass\n// \"--getUrl\" which may also be translated to \"geturl\" and everything will work.\nfunc (f *FlagSet) SetNormalizeFunc(n func(f *FlagSet, name string) NormalizedName) {\n\tf.normalizeNameFunc = n\n\tf.sortedFormal = f.sortedFormal[:0]\n\tfor fname, flag := range f.formal {\n\t\tnname := f.normalizeFlagName(flag.Name)\n\t\tif fname == nname {\n\t\t\tcontinue\n\t\t}\n\t\tflag.Name = string(nname)\n\t\tdelete(f.formal, fname)\n\t\tf.formal[nname] = flag\n\t\tif _, set := f.actual[fname]; set {\n\t\t\tdelete(f.actual, fname)\n\t\t\tf.actual[nname] = flag\n\t\t}\n\t}\n}\n\n// GetNormalizeFunc returns the previously set NormalizeFunc of a function which\n// does no translation, if not set previously.\nfunc (f *FlagSet) GetNormalizeFunc() func(f *FlagSet, name string) NormalizedName {\n\tif f.normalizeNameFunc != nil {\n\t\treturn f.normalizeNameFunc\n\t}\n\treturn func(f *FlagSet, name string) NormalizedName { return NormalizedName(name) }\n}\n\nfunc (f *FlagSet) normalizeFlagName(name string) NormalizedName {\n\tn := f.GetNormalizeFunc()\n\treturn n(f, name)\n}\n\nfunc (f *FlagSet) out() io.Writer {\n\tif f.output == nil {\n\t\treturn os.Stderr\n\t}\n\treturn f.output\n}\n\n// SetOutput sets the destination for usage and error messages.\n// If output is nil, os.Stderr is used.\nfunc (f *FlagSet) SetOutput(output io.Writer) {\n\tf.output = output\n}\n\n// VisitAll visits the flags in lexicographical order or\n// in primordial order if f.SortFlags is false, calling fn for each.\n// It visits all flags, even those not set.\nfunc (f *FlagSet) VisitAll(fn func(*Flag)) {\n\tif len(f.formal) == 0 {\n\t\treturn\n\t}\n\n\tvar flags []*Flag\n\tif f.SortFlags {\n\t\tif len(f.formal) != len(f.sortedFormal) {\n\t\t\tf.sortedFormal = sortFlags(f.formal)\n\t\t}\n\t\tflags = f.sortedFormal\n\t} else {\n\t\tflags = f.orderedFormal\n\t}\n\n\tfor _, flag := range flags {\n\t\tfn(flag)\n\t}\n}\n\n// HasFlags returns a bool to indicate if the FlagSet has any flags defined.\nfunc (f *FlagSet) HasFlags() bool {\n\treturn len(f.formal) > 0\n}\n\n// HasAvailableFlags returns a bool to indicate if the FlagSet has any flags\n// that are not hidden.\nfunc (f *FlagSet) HasAvailableFlags() bool {\n\tfor _, flag := range f.formal {\n\t\tif !flag.Hidden {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// VisitAll visits the command-line flags in lexicographical order or\n// in primordial order if f.SortFlags is false, calling fn for each.\n// It visits all flags, even those not set.\nfunc VisitAll(fn func(*Flag)) {\n\tCommandLine.VisitAll(fn)\n}\n\n// Visit visits the flags in lexicographical order or\n// in primordial order if f.SortFlags is false, calling fn for each.\n// It visits only those flags that have been set.\nfunc (f *FlagSet) Visit(fn func(*Flag)) {\n\tif len(f.actual) == 0 {\n\t\treturn\n\t}\n\n\tvar flags []*Flag\n\tif f.SortFlags {\n\t\tif len(f.actual) != len(f.sortedActual) {\n\t\t\tf.sortedActual = sortFlags(f.actual)\n\t\t}\n\t\tflags = f.sortedActual\n\t} else {\n\t\tflags = f.orderedActual\n\t}\n\n\tfor _, flag := range flags {\n\t\tfn(flag)\n\t}\n}\n\n// Visit visits the command-line flags in lexicographical order or\n// in primordial order if f.SortFlags is false, calling fn for each.\n// It visits only those flags that have been set.\nfunc Visit(fn func(*Flag)) {\n\tCommandLine.Visit(fn)\n}\n\n// Lookup returns the Flag structure of the named flag, returning nil if none exists.\nfunc (f *FlagSet) Lookup(name string) *Flag {\n\treturn f.lookup(f.normalizeFlagName(name))\n}\n\n// ShorthandLookup returns the Flag structure of the short handed flag,\n// returning nil if none exists.\n// It panics, if len(name) > 1.\nfunc (f *FlagSet) ShorthandLookup(name string) *Flag {\n\tif name == \"\" {\n\t\treturn nil\n\t}\n\tif len(name) > 1 {\n\t\tmsg := fmt.Sprintf(\"can not look up shorthand which is more than one ASCII character: %q\", name)\n\t\tfmt.Fprintf(f.out(), msg)\n\t\tpanic(msg)\n\t}\n\tc := name[0]\n\treturn f.shorthands[c]\n}\n\n// lookup returns the Flag structure of the named flag, returning nil if none exists.\nfunc (f *FlagSet) lookup(name NormalizedName) *Flag {\n\treturn f.formal[name]\n}\n\n// func to return a given type for a given flag name\nfunc (f *FlagSet) getFlagType(name string, ftype string, convFunc func(sval string) (interface{}, error)) (interface{}, error) {\n\tflag := f.Lookup(name)\n\tif flag == nil {\n\t\terr := fmt.Errorf(\"flag accessed but not defined: %s\", name)\n\t\treturn nil, err\n\t}\n\n\tif flag.Value.Type() != ftype {\n\t\terr := fmt.Errorf(\"trying to get %s value of flag of type %s\", ftype, flag.Value.Type())\n\t\treturn nil, err\n\t}\n\n\tsval := flag.Value.String()\n\tresult, err := convFunc(sval)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result, nil\n}\n\n// ArgsLenAtDash will return the length of f.Args at the moment when a -- was\n// found during arg parsing. This allows your program to know which args were\n// before the -- and which came after.\nfunc (f *FlagSet) ArgsLenAtDash() int {\n\treturn f.argsLenAtDash\n}\n\n// MarkDeprecated indicated that a flag is deprecated in your program. It will\n// continue to function but will not show up in help or usage messages. Using\n// this flag will also print the given usageMessage.\nfunc (f *FlagSet) MarkDeprecated(name string, usageMessage string) error {\n\tflag := f.Lookup(name)\n\tif flag == nil {\n\t\treturn fmt.Errorf(\"flag %q does not exist\", name)\n\t}\n\tif usageMessage == \"\" {\n\t\treturn fmt.Errorf(\"deprecated message for flag %q must be set\", name)\n\t}\n\tflag.Deprecated = usageMessage\n\tflag.Hidden = true\n\treturn nil\n}\n\n// MarkShorthandDeprecated will mark the shorthand of a flag deprecated in your\n// program. It will continue to function but will not show up in help or usage\n// messages. Using this flag will also print the given usageMessage.\nfunc (f *FlagSet) MarkShorthandDeprecated(name string, usageMessage string) error {\n\tflag := f.Lookup(name)\n\tif flag == nil {\n\t\treturn fmt.Errorf(\"flag %q does not exist\", name)\n\t}\n\tif usageMessage == \"\" {\n\t\treturn fmt.Errorf(\"deprecated message for flag %q must be set\", name)\n\t}\n\tflag.ShorthandDeprecated = usageMessage\n\treturn nil\n}\n\n// MarkHidden sets a flag to 'hidden' in your program. It will continue to\n// function but will not show up in help or usage messages.\nfunc (f *FlagSet) MarkHidden(name string) error {\n\tflag := f.Lookup(name)\n\tif flag == nil {\n\t\treturn fmt.Errorf(\"flag %q does not exist\", name)\n\t}\n\tflag.Hidden = true\n\treturn nil\n}\n\n// Lookup returns the Flag structure of the named command-line flag,\n// returning nil if none exists.\nfunc Lookup(name string) *Flag {\n\treturn CommandLine.Lookup(name)\n}\n\n// ShorthandLookup returns the Flag structure of the short handed flag,\n// returning nil if none exists.\nfunc ShorthandLookup(name string) *Flag {\n\treturn CommandLine.ShorthandLookup(name)\n}\n\n// Set sets the value of the named flag.\nfunc (f *FlagSet) Set(name, value string) error {\n\tnormalName := f.normalizeFlagName(name)\n\tflag, ok := f.formal[normalName]\n\tif !ok {\n\t\treturn fmt.Errorf(\"no such flag -%v\", name)\n\t}\n\n\terr := flag.Value.Set(value)\n\tif err != nil {\n\t\tvar flagName string\n\t\tif flag.Shorthand != \"\" && flag.ShorthandDeprecated == \"\" {\n\t\t\tflagName = fmt.Sprintf(\"-%s, --%s\", flag.Shorthand, flag.Name)\n\t\t} else {\n\t\t\tflagName = fmt.Sprintf(\"--%s\", flag.Name)\n\t\t}\n\t\treturn fmt.Errorf(\"invalid argument %q for %q flag: %v\", value, flagName, err)\n\t}\n\n\tif !flag.Changed {\n\t\tif f.actual == nil {\n\t\t\tf.actual = make(map[NormalizedName]*Flag)\n\t\t}\n\t\tf.actual[normalName] = flag\n\t\tf.orderedActual = append(f.orderedActual, flag)\n\n\t\tflag.Changed = true\n\t}\n\n\tif flag.Deprecated != \"\" {\n\t\tfmt.Fprintf(f.out(), \"Flag --%s has been deprecated, %s\\n\", flag.Name, flag.Deprecated)\n\t}\n\treturn nil\n}\n\n// SetAnnotation allows one to set arbitrary annotations on a flag in the FlagSet.\n// This is sometimes used by spf13/cobra programs which want to generate additional\n// bash completion information.\nfunc (f *FlagSet) SetAnnotation(name, key string, values []string) error {\n\tnormalName := f.normalizeFlagName(name)\n\tflag, ok := f.formal[normalName]\n\tif !ok {\n\t\treturn fmt.Errorf(\"no such flag -%v\", name)\n\t}\n\tif flag.Annotations == nil {\n\t\tflag.Annotations = map[string][]string{}\n\t}\n\tflag.Annotations[key] = values\n\treturn nil\n}\n\n// Changed returns true if the flag was explicitly set during Parse() and false\n// otherwise\nfunc (f *FlagSet) Changed(name string) bool {\n\tflag := f.Lookup(name)\n\t// If a flag doesn't exist, it wasn't changed....\n\tif flag == nil {\n\t\treturn false\n\t}\n\treturn flag.Changed\n}\n\n// Set sets the value of the named command-line flag.\nfunc Set(name, value string) error {\n\treturn CommandLine.Set(name, value)\n}\n\n// PrintDefaults prints, to standard error unless configured\n// otherwise, the default values of all defined flags in the set.\nfunc (f *FlagSet) PrintDefaults() {\n\tusages := f.FlagUsages()\n\tfmt.Fprint(f.out(), usages)\n}\n\n// defaultIsZeroValue returns true if the default value for this flag represents\n// a zero value.\nfunc (f *Flag) defaultIsZeroValue() bool {\n\tswitch f.Value.(type) {\n\tcase boolFlag:\n\t\treturn f.DefValue == \"false\"\n\tcase *durationValue:\n\t\t// Beginning in Go 1.7, duration zero values are \"0s\"\n\t\treturn f.DefValue == \"0\" || f.DefValue == \"0s\"\n\tcase *intValue, *int8Value, *int32Value, *int64Value, *uintValue, *uint8Value, *uint16Value, *uint32Value, *uint64Value, *countValue, *float32Value, *float64Value:\n\t\treturn f.DefValue == \"0\"\n\tcase *stringValue:\n\t\treturn f.DefValue == \"\"\n\tcase *ipValue, *ipMaskValue, *ipNetValue:\n\t\treturn f.DefValue == \"<nil>\"\n\tcase *intSliceValue, *stringSliceValue, *stringArrayValue:\n\t\treturn f.DefValue == \"[]\"\n\tdefault:\n\t\tswitch f.Value.String() {\n\t\tcase \"false\":\n\t\t\treturn true\n\t\tcase \"<nil>\":\n\t\t\treturn true\n\t\tcase \"\":\n\t\t\treturn true\n\t\tcase \"0\":\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n}\n\n// UnquoteUsage extracts a back-quoted name from the usage\n// string for a flag and returns it and the un-quoted usage.\n// Given \"a `name` to show\" it returns (\"name\", \"a name to show\").\n// If there are no back quotes, the name is an educated guess of the\n// type of the flag's value, or the empty string if the flag is boolean.\nfunc UnquoteUsage(flag *Flag) (name string, usage string) {\n\t// Look for a back-quoted name, but avoid the strings package.\n\tusage = flag.Usage\n\tfor i := 0; i < len(usage); i++ {\n\t\tif usage[i] == '`' {\n\t\t\tfor j := i + 1; j < len(usage); j++ {\n\t\t\t\tif usage[j] == '`' {\n\t\t\t\t\tname = usage[i+1 : j]\n\t\t\t\t\tusage = usage[:i] + name + usage[j+1:]\n\t\t\t\t\treturn name, usage\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak // Only one back quote; use type name.\n\t\t}\n\t}\n\n\tname = flag.Value.Type()\n\tswitch name {\n\tcase \"bool\":\n\t\tname = \"\"\n\tcase \"float64\":\n\t\tname = \"float\"\n\tcase \"int64\":\n\t\tname = \"int\"\n\tcase \"uint64\":\n\t\tname = \"uint\"\n\tcase \"stringSlice\":\n\t\tname = \"strings\"\n\tcase \"intSlice\":\n\t\tname = \"ints\"\n\tcase \"uintSlice\":\n\t\tname = \"uints\"\n\tcase \"boolSlice\":\n\t\tname = \"bools\"\n\t}\n\n\treturn\n}\n\n// Splits the string `s` on whitespace into an initial substring up to\n// `i` runes in length and the remainder. Will go `slop` over `i` if\n// that encompasses the entire string (which allows the caller to\n// avoid short orphan words on the final line).\nfunc wrapN(i, slop int, s string) (string, string) {\n\tif i+slop > len(s) {\n\t\treturn s, \"\"\n\t}\n\n\tw := strings.LastIndexAny(s[:i], \" \\t\\n\")\n\tif w <= 0 {\n\t\treturn s, \"\"\n\t}\n\tnlPos := strings.LastIndex(s[:i], \"\\n\")\n\tif nlPos > 0 && nlPos < w {\n\t\treturn s[:nlPos], s[nlPos+1:]\n\t}\n\treturn s[:w], s[w+1:]\n}\n\n// Wraps the string `s` to a maximum width `w` with leading indent\n// `i`. The first line is not indented (this is assumed to be done by\n// caller). Pass `w` == 0 to do no wrapping\nfunc wrap(i, w int, s string) string {\n\tif w == 0 {\n\t\treturn strings.Replace(s, \"\\n\", \"\\n\"+strings.Repeat(\" \", i), -1)\n\t}\n\n\t// space between indent i and end of line width w into which\n\t// we should wrap the text.\n\twrap := w - i\n\n\tvar r, l string\n\n\t// Not enough space for sensible wrapping. Wrap as a block on\n\t// the next line instead.\n\tif wrap < 24 {\n\t\ti = 16\n\t\twrap = w - i\n\t\tr += \"\\n\" + strings.Repeat(\" \", i)\n\t}\n\t// If still not enough space then don't even try to wrap.\n\tif wrap < 24 {\n\t\treturn strings.Replace(s, \"\\n\", r, -1)\n\t}\n\n\t// Try to avoid short orphan words on the final line, by\n\t// allowing wrapN to go a bit over if that would fit in the\n\t// remainder of the line.\n\tslop := 5\n\twrap = wrap - slop\n\n\t// Handle first line, which is indented by the caller (or the\n\t// special case above)\n\tl, s = wrapN(wrap, slop, s)\n\tr = r + strings.Replace(l, \"\\n\", \"\\n\"+strings.Repeat(\" \", i), -1)\n\n\t// Now wrap the rest\n\tfor s != \"\" {\n\t\tvar t string\n\n\t\tt, s = wrapN(wrap, slop, s)\n\t\tr = r + \"\\n\" + strings.Repeat(\" \", i) + strings.Replace(t, \"\\n\", \"\\n\"+strings.Repeat(\" \", i), -1)\n\t}\n\n\treturn r\n\n}\n\n// FlagUsagesWrapped returns a string containing the usage information\n// for all flags in the FlagSet. Wrapped to `cols` columns (0 for no\n// wrapping)\nfunc (f *FlagSet) FlagUsagesWrapped(cols int) string {\n\tbuf := new(bytes.Buffer)\n\n\tlines := make([]string, 0, len(f.formal))\n\n\tmaxlen := 0\n\tf.VisitAll(func(flag *Flag) {\n\t\tif flag.Hidden {\n\t\t\treturn\n\t\t}\n\n\t\tline := \"\"\n\t\tif flag.Shorthand != \"\" && flag.ShorthandDeprecated == \"\" {\n\t\t\tline = fmt.Sprintf(\"  -%s, --%s\", flag.Shorthand, flag.Name)\n\t\t} else {\n\t\t\tline = fmt.Sprintf(\"      --%s\", flag.Name)\n\t\t}\n\n\t\tvarname, usage := UnquoteUsage(flag)\n\t\tif varname != \"\" {\n\t\t\tline += \" \" + varname\n\t\t}\n\t\tif flag.NoOptDefVal != \"\" {\n\t\t\tswitch flag.Value.Type() {\n\t\t\tcase \"string\":\n\t\t\t\tline += fmt.Sprintf(\"[=\\\"%s\\\"]\", flag.NoOptDefVal)\n\t\t\tcase \"bool\":\n\t\t\t\tif flag.NoOptDefVal != \"true\" {\n\t\t\t\t\tline += fmt.Sprintf(\"[=%s]\", flag.NoOptDefVal)\n\t\t\t\t}\n\t\t\tcase \"count\":\n\t\t\t\tif flag.NoOptDefVal != \"+1\" {\n\t\t\t\t\tline += fmt.Sprintf(\"[=%s]\", flag.NoOptDefVal)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tline += fmt.Sprintf(\"[=%s]\", flag.NoOptDefVal)\n\t\t\t}\n\t\t}\n\n\t\t// This special character will be replaced with spacing once the\n\t\t// correct alignment is calculated\n\t\tline += \"\\x00\"\n\t\tif len(line) > maxlen {\n\t\t\tmaxlen = len(line)\n\t\t}\n\n\t\tline += usage\n\t\tif !flag.defaultIsZeroValue() {\n\t\t\tif flag.Value.Type() == \"string\" {\n\t\t\t\tline += fmt.Sprintf(\" (default %q)\", flag.DefValue)\n\t\t\t} else {\n\t\t\t\tline += fmt.Sprintf(\" (default %s)\", flag.DefValue)\n\t\t\t}\n\t\t}\n\t\tif len(flag.Deprecated) != 0 {\n\t\t\tline += fmt.Sprintf(\" (DEPRECATED: %s)\", flag.Deprecated)\n\t\t}\n\n\t\tlines = append(lines, line)\n\t})\n\n\tfor _, line := range lines {\n\t\tsidx := strings.Index(line, \"\\x00\")\n\t\tspacing := strings.Repeat(\" \", maxlen-sidx)\n\t\t// maxlen + 2 comes from + 1 for the \\x00 and + 1 for the (deliberate) off-by-one in maxlen-sidx\n\t\tfmt.Fprintln(buf, line[:sidx], spacing, wrap(maxlen+2, cols, line[sidx+1:]))\n\t}\n\n\treturn buf.String()\n}\n\n// FlagUsages returns a string containing the usage information for all flags in\n// the FlagSet\nfunc (f *FlagSet) FlagUsages() string {\n\treturn f.FlagUsagesWrapped(0)\n}\n\n// PrintDefaults prints to standard error the default values of all defined command-line flags.\nfunc PrintDefaults() {\n\tCommandLine.PrintDefaults()\n}\n\n// defaultUsage is the default function to print a usage message.\nfunc defaultUsage(f *FlagSet) {\n\tfmt.Fprintf(f.out(), \"Usage of %s:\\n\", f.name)\n\tf.PrintDefaults()\n}\n\n// NOTE: Usage is not just defaultUsage(CommandLine)\n// because it serves (via godoc flag Usage) as the example\n// for how to write your own usage function.\n\n// Usage prints to standard error a usage message documenting all defined command-line flags.\n// The function is a variable that may be changed to point to a custom function.\n// By default it prints a simple header and calls PrintDefaults; for details about the\n// format of the output and how to control it, see the documentation for PrintDefaults.\nvar Usage = func() {\n\tfmt.Fprintf(os.Stderr, \"Usage of %s:\\n\", os.Args[0])\n\tPrintDefaults()\n}\n\n// NFlag returns the number of flags that have been set.\nfunc (f *FlagSet) NFlag() int { return len(f.actual) }\n\n// NFlag returns the number of command-line flags that have been set.\nfunc NFlag() int { return len(CommandLine.actual) }\n\n// Arg returns the i'th argument.  Arg(0) is the first remaining argument\n// after flags have been processed.\nfunc (f *FlagSet) Arg(i int) string {\n\tif i < 0 || i >= len(f.args) {\n\t\treturn \"\"\n\t}\n\treturn f.args[i]\n}\n\n// Arg returns the i'th command-line argument.  Arg(0) is the first remaining argument\n// after flags have been processed.\nfunc Arg(i int) string {\n\treturn CommandLine.Arg(i)\n}\n\n// NArg is the number of arguments remaining after flags have been processed.\nfunc (f *FlagSet) NArg() int { return len(f.args) }\n\n// NArg is the number of arguments remaining after flags have been processed.\nfunc NArg() int { return len(CommandLine.args) }\n\n// Args returns the non-flag arguments.\nfunc (f *FlagSet) Args() []string { return f.args }\n\n// Args returns the non-flag command-line arguments.\nfunc Args() []string { return CommandLine.args }\n\n// Var defines a flag with the specified name and usage string. The type and\n// value of the flag are represented by the first argument, of type Value, which\n// typically holds a user-defined implementation of Value. For instance, the\n// caller could create a flag that turns a comma-separated string into a slice\n// of strings by giving the slice the methods of Value; in particular, Set would\n// decompose the comma-separated string into the slice.\nfunc (f *FlagSet) Var(value Value, name string, usage string) {\n\tf.VarP(value, name, \"\", usage)\n}\n\n// VarPF is like VarP, but returns the flag created\nfunc (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag {\n\t// Remember the default value as a string; it won't change.\n\tflag := &Flag{\n\t\tName:      name,\n\t\tShorthand: shorthand,\n\t\tUsage:     usage,\n\t\tValue:     value,\n\t\tDefValue:  value.String(),\n\t}\n\tf.AddFlag(flag)\n\treturn flag\n}\n\n// VarP is like Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) VarP(value Value, name, shorthand, usage string) {\n\tf.VarPF(value, name, shorthand, usage)\n}\n\n// AddFlag will add the flag to the FlagSet\nfunc (f *FlagSet) AddFlag(flag *Flag) {\n\tnormalizedFlagName := f.normalizeFlagName(flag.Name)\n\n\t_, alreadyThere := f.formal[normalizedFlagName]\n\tif alreadyThere {\n\t\tmsg := fmt.Sprintf(\"%s flag redefined: %s\", f.name, flag.Name)\n\t\tfmt.Fprintln(f.out(), msg)\n\t\tpanic(msg) // Happens only if flags are declared with identical names\n\t}\n\tif f.formal == nil {\n\t\tf.formal = make(map[NormalizedName]*Flag)\n\t}\n\n\tflag.Name = string(normalizedFlagName)\n\tf.formal[normalizedFlagName] = flag\n\tf.orderedFormal = append(f.orderedFormal, flag)\n\n\tif flag.Shorthand == \"\" {\n\t\treturn\n\t}\n\tif len(flag.Shorthand) > 1 {\n\t\tmsg := fmt.Sprintf(\"%q shorthand is more than one ASCII character\", flag.Shorthand)\n\t\tfmt.Fprintf(f.out(), msg)\n\t\tpanic(msg)\n\t}\n\tif f.shorthands == nil {\n\t\tf.shorthands = make(map[byte]*Flag)\n\t}\n\tc := flag.Shorthand[0]\n\tused, alreadyThere := f.shorthands[c]\n\tif alreadyThere {\n\t\tmsg := fmt.Sprintf(\"unable to redefine %q shorthand in %q flagset: it's already used for %q flag\", c, f.name, used.Name)\n\t\tfmt.Fprintf(f.out(), msg)\n\t\tpanic(msg)\n\t}\n\tf.shorthands[c] = flag\n}\n\n// AddFlagSet adds one FlagSet to another. If a flag is already present in f\n// the flag from newSet will be ignored.\nfunc (f *FlagSet) AddFlagSet(newSet *FlagSet) {\n\tif newSet == nil {\n\t\treturn\n\t}\n\tnewSet.VisitAll(func(flag *Flag) {\n\t\tif f.Lookup(flag.Name) == nil {\n\t\t\tf.AddFlag(flag)\n\t\t}\n\t})\n}\n\n// Var defines a flag with the specified name and usage string. The type and\n// value of the flag are represented by the first argument, of type Value, which\n// typically holds a user-defined implementation of Value. For instance, the\n// caller could create a flag that turns a comma-separated string into a slice\n// of strings by giving the slice the methods of Value; in particular, Set would\n// decompose the comma-separated string into the slice.\nfunc Var(value Value, name string, usage string) {\n\tCommandLine.VarP(value, name, \"\", usage)\n}\n\n// VarP is like Var, but accepts a shorthand letter that can be used after a single dash.\nfunc VarP(value Value, name, shorthand, usage string) {\n\tCommandLine.VarP(value, name, shorthand, usage)\n}\n\n// failf prints to standard error a formatted error and usage message and\n// returns the error.\nfunc (f *FlagSet) failf(format string, a ...interface{}) error {\n\terr := fmt.Errorf(format, a...)\n\tif f.errorHandling != ContinueOnError {\n\t\tfmt.Fprintln(f.out(), err)\n\t\tf.usage()\n\t}\n\treturn err\n}\n\n// usage calls the Usage method for the flag set, or the usage function if\n// the flag set is CommandLine.\nfunc (f *FlagSet) usage() {\n\tif f == CommandLine {\n\t\tUsage()\n\t} else if f.Usage == nil {\n\t\tdefaultUsage(f)\n\t} else {\n\t\tf.Usage()\n\t}\n}\n\n//--unknown (args will be empty)\n//--unknown --next-flag ... (args will be --next-flag ...)\n//--unknown arg ... (args will be arg ...)\nfunc stripUnknownFlagValue(args []string) []string {\n\tif len(args) == 0 {\n\t\t//--unknown\n\t\treturn args\n\t}\n\n\tfirst := args[0]\n\tif len(first) > 0 && first[0] == '-' {\n\t\t//--unknown --next-flag ...\n\t\treturn args\n\t}\n\n\t//--unknown arg ... (args will be arg ...)\n\tif len(args) > 1 {\n\t\treturn args[1:]\n\t}\n\treturn nil\n}\n\nfunc (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) {\n\ta = args\n\tname := s[2:]\n\tif len(name) == 0 || name[0] == '-' || name[0] == '=' {\n\t\terr = f.failf(\"bad flag syntax: %s\", s)\n\t\treturn\n\t}\n\n\tsplit := strings.SplitN(name, \"=\", 2)\n\tname = split[0]\n\tflag, exists := f.formal[f.normalizeFlagName(name)]\n\n\tif !exists {\n\t\tswitch {\n\t\tcase name == \"help\":\n\t\t\tf.usage()\n\t\t\treturn a, ErrHelp\n\t\tcase f.ParseErrorsWhitelist.UnknownFlags:\n\t\t\t// --unknown=unknownval arg ...\n\t\t\t// we do not want to lose arg in this case\n\t\t\tif len(split) >= 2 {\n\t\t\t\treturn a, nil\n\t\t\t}\n\n\t\t\treturn stripUnknownFlagValue(a), nil\n\t\tdefault:\n\t\t\terr = f.failf(\"unknown flag: --%s\", name)\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar value string\n\tif len(split) == 2 {\n\t\t// '--flag=arg'\n\t\tvalue = split[1]\n\t} else if flag.NoOptDefVal != \"\" {\n\t\t// '--flag' (arg was optional)\n\t\tvalue = flag.NoOptDefVal\n\t} else if len(a) > 0 {\n\t\t// '--flag arg'\n\t\tvalue = a[0]\n\t\ta = a[1:]\n\t} else {\n\t\t// '--flag' (arg was required)\n\t\terr = f.failf(\"flag needs an argument: %s\", s)\n\t\treturn\n\t}\n\n\terr = fn(flag, value)\n\tif err != nil {\n\t\tf.failf(err.Error())\n\t}\n\treturn\n}\n\nfunc (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parseFunc) (outShorts string, outArgs []string, err error) {\n\toutArgs = args\n\n\tif strings.HasPrefix(shorthands, \"test.\") {\n\t\treturn\n\t}\n\n\toutShorts = shorthands[1:]\n\tc := shorthands[0]\n\n\tflag, exists := f.shorthands[c]\n\tif !exists {\n\t\tswitch {\n\t\tcase c == 'h':\n\t\t\tf.usage()\n\t\t\terr = ErrHelp\n\t\t\treturn\n\t\tcase f.ParseErrorsWhitelist.UnknownFlags:\n\t\t\t// '-f=arg arg ...'\n\t\t\t// we do not want to lose arg in this case\n\t\t\tif len(shorthands) > 2 && shorthands[1] == '=' {\n\t\t\t\toutShorts = \"\"\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\toutArgs = stripUnknownFlagValue(outArgs)\n\t\t\treturn\n\t\tdefault:\n\t\t\terr = f.failf(\"unknown shorthand flag: %q in -%s\", c, shorthands)\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar value string\n\tif len(shorthands) > 2 && shorthands[1] == '=' {\n\t\t// '-f=arg'\n\t\tvalue = shorthands[2:]\n\t\toutShorts = \"\"\n\t} else if flag.NoOptDefVal != \"\" {\n\t\t// '-f' (arg was optional)\n\t\tvalue = flag.NoOptDefVal\n\t} else if len(shorthands) > 1 {\n\t\t// '-farg'\n\t\tvalue = shorthands[1:]\n\t\toutShorts = \"\"\n\t} else if len(args) > 0 {\n\t\t// '-f arg'\n\t\tvalue = args[0]\n\t\toutArgs = args[1:]\n\t} else {\n\t\t// '-f' (arg was required)\n\t\terr = f.failf(\"flag needs an argument: %q in -%s\", c, shorthands)\n\t\treturn\n\t}\n\n\tif flag.ShorthandDeprecated != \"\" {\n\t\tfmt.Fprintf(f.out(), \"Flag shorthand -%s has been deprecated, %s\\n\", flag.Shorthand, flag.ShorthandDeprecated)\n\t}\n\n\terr = fn(flag, value)\n\tif err != nil {\n\t\tf.failf(err.Error())\n\t}\n\treturn\n}\n\nfunc (f *FlagSet) parseShortArg(s string, args []string, fn parseFunc) (a []string, err error) {\n\ta = args\n\tshorthands := s[1:]\n\n\t// \"shorthands\" can be a series of shorthand letters of flags (e.g. \"-vvv\").\n\tfor len(shorthands) > 0 {\n\t\tshorthands, a, err = f.parseSingleShortArg(shorthands, args, fn)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (f *FlagSet) parseArgs(args []string, fn parseFunc) (err error) {\n\tfor len(args) > 0 {\n\t\ts := args[0]\n\t\targs = args[1:]\n\t\tif len(s) == 0 || s[0] != '-' || len(s) == 1 {\n\t\t\tif !f.interspersed {\n\t\t\t\tf.args = append(f.args, s)\n\t\t\t\tf.args = append(f.args, args...)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tf.args = append(f.args, s)\n\t\t\tcontinue\n\t\t}\n\n\t\tif s[1] == '-' {\n\t\t\tif len(s) == 2 { // \"--\" terminates the flags\n\t\t\t\tf.argsLenAtDash = len(f.args)\n\t\t\t\tf.args = append(f.args, args...)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\targs, err = f.parseLongArg(s, args, fn)\n\t\t} else {\n\t\t\targs, err = f.parseShortArg(s, args, fn)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// Parse parses flag definitions from the argument list, which should not\n// include the command name.  Must be called after all flags in the FlagSet\n// are defined and before flags are accessed by the program.\n// The return value will be ErrHelp if -help was set but not defined.\nfunc (f *FlagSet) Parse(arguments []string) error {\n\tif f.addedGoFlagSets != nil {\n\t\tfor _, goFlagSet := range f.addedGoFlagSets {\n\t\t\tgoFlagSet.Parse(nil)\n\t\t}\n\t}\n\tf.parsed = true\n\n\tif len(arguments) < 0 {\n\t\treturn nil\n\t}\n\n\tf.args = make([]string, 0, len(arguments))\n\n\tset := func(flag *Flag, value string) error {\n\t\treturn f.Set(flag.Name, value)\n\t}\n\n\terr := f.parseArgs(arguments, set)\n\tif err != nil {\n\t\tswitch f.errorHandling {\n\t\tcase ContinueOnError:\n\t\t\treturn err\n\t\tcase ExitOnError:\n\t\t\tfmt.Println(err)\n\t\t\tos.Exit(2)\n\t\tcase PanicOnError:\n\t\t\tpanic(err)\n\t\t}\n\t}\n\treturn nil\n}\n\ntype parseFunc func(flag *Flag, value string) error\n\n// ParseAll parses flag definitions from the argument list, which should not\n// include the command name. The arguments for fn are flag and value. Must be\n// called after all flags in the FlagSet are defined and before flags are\n// accessed by the program. The return value will be ErrHelp if -help was set\n// but not defined.\nfunc (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string) error) error {\n\tf.parsed = true\n\tf.args = make([]string, 0, len(arguments))\n\n\terr := f.parseArgs(arguments, fn)\n\tif err != nil {\n\t\tswitch f.errorHandling {\n\t\tcase ContinueOnError:\n\t\t\treturn err\n\t\tcase ExitOnError:\n\t\t\tos.Exit(2)\n\t\tcase PanicOnError:\n\t\t\tpanic(err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Parsed reports whether f.Parse has been called.\nfunc (f *FlagSet) Parsed() bool {\n\treturn f.parsed\n}\n\n// Parse parses the command-line flags from os.Args[1:].  Must be called\n// after all flags are defined and before flags are accessed by the program.\nfunc Parse() {\n\t// Ignore errors; CommandLine is set for ExitOnError.\n\tCommandLine.Parse(os.Args[1:])\n}\n\n// ParseAll parses the command-line flags from os.Args[1:] and called fn for each.\n// The arguments for fn are flag and value. Must be called after all flags are\n// defined and before flags are accessed by the program.\nfunc ParseAll(fn func(flag *Flag, value string) error) {\n\t// Ignore errors; CommandLine is set for ExitOnError.\n\tCommandLine.ParseAll(os.Args[1:], fn)\n}\n\n// SetInterspersed sets whether to support interspersed option/non-option arguments.\nfunc SetInterspersed(interspersed bool) {\n\tCommandLine.SetInterspersed(interspersed)\n}\n\n// Parsed returns true if the command-line flags have been parsed.\nfunc Parsed() bool {\n\treturn CommandLine.Parsed()\n}\n\n// CommandLine is the default set of command-line flags, parsed from os.Args.\nvar CommandLine = NewFlagSet(os.Args[0], ExitOnError)\n\n// NewFlagSet returns a new, empty flag set with the specified name,\n// error handling property and SortFlags set to true.\nfunc NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {\n\tf := &FlagSet{\n\t\tname:          name,\n\t\terrorHandling: errorHandling,\n\t\targsLenAtDash: -1,\n\t\tinterspersed:  true,\n\t\tSortFlags:     true,\n\t}\n\treturn f\n}\n\n// SetInterspersed sets whether to support interspersed option/non-option arguments.\nfunc (f *FlagSet) SetInterspersed(interspersed bool) {\n\tf.interspersed = interspersed\n}\n\n// Init sets the name and error handling property for a flag set.\n// By default, the zero FlagSet uses an empty name and the\n// ContinueOnError error handling policy.\nfunc (f *FlagSet) Init(name string, errorHandling ErrorHandling) {\n\tf.name = name\n\tf.errorHandling = errorHandling\n\tf.argsLenAtDash = -1\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/float32.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- float32 Value\ntype float32Value float32\n\nfunc newFloat32Value(val float32, p *float32) *float32Value {\n\t*p = val\n\treturn (*float32Value)(p)\n}\n\nfunc (f *float32Value) Set(s string) error {\n\tv, err := strconv.ParseFloat(s, 32)\n\t*f = float32Value(v)\n\treturn err\n}\n\nfunc (f *float32Value) Type() string {\n\treturn \"float32\"\n}\n\nfunc (f *float32Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 32) }\n\nfunc float32Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseFloat(sval, 32)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn float32(v), nil\n}\n\n// GetFloat32 return the float32 value of a flag with the given name\nfunc (f *FlagSet) GetFloat32(name string) (float32, error) {\n\tval, err := f.getFlagType(name, \"float32\", float32Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(float32), nil\n}\n\n// Float32Var defines a float32 flag with specified name, default value, and usage string.\n// The argument p points to a float32 variable in which to store the value of the flag.\nfunc (f *FlagSet) Float32Var(p *float32, name string, value float32, usage string) {\n\tf.VarP(newFloat32Value(value, p), name, \"\", usage)\n}\n\n// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Float32VarP(p *float32, name, shorthand string, value float32, usage string) {\n\tf.VarP(newFloat32Value(value, p), name, shorthand, usage)\n}\n\n// Float32Var defines a float32 flag with specified name, default value, and usage string.\n// The argument p points to a float32 variable in which to store the value of the flag.\nfunc Float32Var(p *float32, name string, value float32, usage string) {\n\tCommandLine.VarP(newFloat32Value(value, p), name, \"\", usage)\n}\n\n// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Float32VarP(p *float32, name, shorthand string, value float32, usage string) {\n\tCommandLine.VarP(newFloat32Value(value, p), name, shorthand, usage)\n}\n\n// Float32 defines a float32 flag with specified name, default value, and usage string.\n// The return value is the address of a float32 variable that stores the value of the flag.\nfunc (f *FlagSet) Float32(name string, value float32, usage string) *float32 {\n\tp := new(float32)\n\tf.Float32VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Float32P(name, shorthand string, value float32, usage string) *float32 {\n\tp := new(float32)\n\tf.Float32VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Float32 defines a float32 flag with specified name, default value, and usage string.\n// The return value is the address of a float32 variable that stores the value of the flag.\nfunc Float32(name string, value float32, usage string) *float32 {\n\treturn CommandLine.Float32P(name, \"\", value, usage)\n}\n\n// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash.\nfunc Float32P(name, shorthand string, value float32, usage string) *float32 {\n\treturn CommandLine.Float32P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/float64.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- float64 Value\ntype float64Value float64\n\nfunc newFloat64Value(val float64, p *float64) *float64Value {\n\t*p = val\n\treturn (*float64Value)(p)\n}\n\nfunc (f *float64Value) Set(s string) error {\n\tv, err := strconv.ParseFloat(s, 64)\n\t*f = float64Value(v)\n\treturn err\n}\n\nfunc (f *float64Value) Type() string {\n\treturn \"float64\"\n}\n\nfunc (f *float64Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 64) }\n\nfunc float64Conv(sval string) (interface{}, error) {\n\treturn strconv.ParseFloat(sval, 64)\n}\n\n// GetFloat64 return the float64 value of a flag with the given name\nfunc (f *FlagSet) GetFloat64(name string) (float64, error) {\n\tval, err := f.getFlagType(name, \"float64\", float64Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(float64), nil\n}\n\n// Float64Var defines a float64 flag with specified name, default value, and usage string.\n// The argument p points to a float64 variable in which to store the value of the flag.\nfunc (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string) {\n\tf.VarP(newFloat64Value(value, p), name, \"\", usage)\n}\n\n// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Float64VarP(p *float64, name, shorthand string, value float64, usage string) {\n\tf.VarP(newFloat64Value(value, p), name, shorthand, usage)\n}\n\n// Float64Var defines a float64 flag with specified name, default value, and usage string.\n// The argument p points to a float64 variable in which to store the value of the flag.\nfunc Float64Var(p *float64, name string, value float64, usage string) {\n\tCommandLine.VarP(newFloat64Value(value, p), name, \"\", usage)\n}\n\n// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Float64VarP(p *float64, name, shorthand string, value float64, usage string) {\n\tCommandLine.VarP(newFloat64Value(value, p), name, shorthand, usage)\n}\n\n// Float64 defines a float64 flag with specified name, default value, and usage string.\n// The return value is the address of a float64 variable that stores the value of the flag.\nfunc (f *FlagSet) Float64(name string, value float64, usage string) *float64 {\n\tp := new(float64)\n\tf.Float64VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Float64P(name, shorthand string, value float64, usage string) *float64 {\n\tp := new(float64)\n\tf.Float64VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Float64 defines a float64 flag with specified name, default value, and usage string.\n// The return value is the address of a float64 variable that stores the value of the flag.\nfunc Float64(name string, value float64, usage string) *float64 {\n\treturn CommandLine.Float64P(name, \"\", value, usage)\n}\n\n// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash.\nfunc Float64P(name, shorthand string, value float64, usage string) *float64 {\n\treturn CommandLine.Float64P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/golangflag.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pflag\n\nimport (\n\tgoflag \"flag\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// flagValueWrapper implements pflag.Value around a flag.Value.  The main\n// difference here is the addition of the Type method that returns a string\n// name of the type.  As this is generally unknown, we approximate that with\n// reflection.\ntype flagValueWrapper struct {\n\tinner    goflag.Value\n\tflagType string\n}\n\n// We are just copying the boolFlag interface out of goflag as that is what\n// they use to decide if a flag should get \"true\" when no arg is given.\ntype goBoolFlag interface {\n\tgoflag.Value\n\tIsBoolFlag() bool\n}\n\nfunc wrapFlagValue(v goflag.Value) Value {\n\t// If the flag.Value happens to also be a pflag.Value, just use it directly.\n\tif pv, ok := v.(Value); ok {\n\t\treturn pv\n\t}\n\n\tpv := &flagValueWrapper{\n\t\tinner: v,\n\t}\n\n\tt := reflect.TypeOf(v)\n\tif t.Kind() == reflect.Interface || t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t}\n\n\tpv.flagType = strings.TrimSuffix(t.Name(), \"Value\")\n\treturn pv\n}\n\nfunc (v *flagValueWrapper) String() string {\n\treturn v.inner.String()\n}\n\nfunc (v *flagValueWrapper) Set(s string) error {\n\treturn v.inner.Set(s)\n}\n\nfunc (v *flagValueWrapper) Type() string {\n\treturn v.flagType\n}\n\n// PFlagFromGoFlag will return a *pflag.Flag given a *flag.Flag\n// If the *flag.Flag.Name was a single character (ex: `v`) it will be accessiblei\n// with both `-v` and `--v` in flags. If the golang flag was more than a single\n// character (ex: `verbose`) it will only be accessible via `--verbose`\nfunc PFlagFromGoFlag(goflag *goflag.Flag) *Flag {\n\t// Remember the default value as a string; it won't change.\n\tflag := &Flag{\n\t\tName:  goflag.Name,\n\t\tUsage: goflag.Usage,\n\t\tValue: wrapFlagValue(goflag.Value),\n\t\t// Looks like golang flags don't set DefValue correctly  :-(\n\t\t//DefValue: goflag.DefValue,\n\t\tDefValue: goflag.Value.String(),\n\t}\n\t// Ex: if the golang flag was -v, allow both -v and --v to work\n\tif len(flag.Name) == 1 {\n\t\tflag.Shorthand = flag.Name\n\t}\n\tif fv, ok := goflag.Value.(goBoolFlag); ok && fv.IsBoolFlag() {\n\t\tflag.NoOptDefVal = \"true\"\n\t}\n\treturn flag\n}\n\n// AddGoFlag will add the given *flag.Flag to the pflag.FlagSet\nfunc (f *FlagSet) AddGoFlag(goflag *goflag.Flag) {\n\tif f.Lookup(goflag.Name) != nil {\n\t\treturn\n\t}\n\tnewflag := PFlagFromGoFlag(goflag)\n\tf.AddFlag(newflag)\n}\n\n// AddGoFlagSet will add the given *flag.FlagSet to the pflag.FlagSet\nfunc (f *FlagSet) AddGoFlagSet(newSet *goflag.FlagSet) {\n\tif newSet == nil {\n\t\treturn\n\t}\n\tnewSet.VisitAll(func(goflag *goflag.Flag) {\n\t\tf.AddGoFlag(goflag)\n\t})\n\tif f.addedGoFlagSets == nil {\n\t\tf.addedGoFlagSets = make([]*goflag.FlagSet, 0)\n\t}\n\tf.addedGoFlagSets = append(f.addedGoFlagSets, newSet)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/int.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- int Value\ntype intValue int\n\nfunc newIntValue(val int, p *int) *intValue {\n\t*p = val\n\treturn (*intValue)(p)\n}\n\nfunc (i *intValue) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 64)\n\t*i = intValue(v)\n\treturn err\n}\n\nfunc (i *intValue) Type() string {\n\treturn \"int\"\n}\n\nfunc (i *intValue) String() string { return strconv.Itoa(int(*i)) }\n\nfunc intConv(sval string) (interface{}, error) {\n\treturn strconv.Atoi(sval)\n}\n\n// GetInt return the int value of a flag with the given name\nfunc (f *FlagSet) GetInt(name string) (int, error) {\n\tval, err := f.getFlagType(name, \"int\", intConv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(int), nil\n}\n\n// IntVar defines an int flag with specified name, default value, and usage string.\n// The argument p points to an int variable in which to store the value of the flag.\nfunc (f *FlagSet) IntVar(p *int, name string, value int, usage string) {\n\tf.VarP(newIntValue(value, p), name, \"\", usage)\n}\n\n// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IntVarP(p *int, name, shorthand string, value int, usage string) {\n\tf.VarP(newIntValue(value, p), name, shorthand, usage)\n}\n\n// IntVar defines an int flag with specified name, default value, and usage string.\n// The argument p points to an int variable in which to store the value of the flag.\nfunc IntVar(p *int, name string, value int, usage string) {\n\tCommandLine.VarP(newIntValue(value, p), name, \"\", usage)\n}\n\n// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash.\nfunc IntVarP(p *int, name, shorthand string, value int, usage string) {\n\tCommandLine.VarP(newIntValue(value, p), name, shorthand, usage)\n}\n\n// Int defines an int flag with specified name, default value, and usage string.\n// The return value is the address of an int variable that stores the value of the flag.\nfunc (f *FlagSet) Int(name string, value int, usage string) *int {\n\tp := new(int)\n\tf.IntVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// IntP is like Int, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IntP(name, shorthand string, value int, usage string) *int {\n\tp := new(int)\n\tf.IntVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Int defines an int flag with specified name, default value, and usage string.\n// The return value is the address of an int variable that stores the value of the flag.\nfunc Int(name string, value int, usage string) *int {\n\treturn CommandLine.IntP(name, \"\", value, usage)\n}\n\n// IntP is like Int, but accepts a shorthand letter that can be used after a single dash.\nfunc IntP(name, shorthand string, value int, usage string) *int {\n\treturn CommandLine.IntP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/int16.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- int16 Value\ntype int16Value int16\n\nfunc newInt16Value(val int16, p *int16) *int16Value {\n\t*p = val\n\treturn (*int16Value)(p)\n}\n\nfunc (i *int16Value) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 16)\n\t*i = int16Value(v)\n\treturn err\n}\n\nfunc (i *int16Value) Type() string {\n\treturn \"int16\"\n}\n\nfunc (i *int16Value) String() string { return strconv.FormatInt(int64(*i), 10) }\n\nfunc int16Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseInt(sval, 0, 16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn int16(v), nil\n}\n\n// GetInt16 returns the int16 value of a flag with the given name\nfunc (f *FlagSet) GetInt16(name string) (int16, error) {\n\tval, err := f.getFlagType(name, \"int16\", int16Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(int16), nil\n}\n\n// Int16Var defines an int16 flag with specified name, default value, and usage string.\n// The argument p points to an int16 variable in which to store the value of the flag.\nfunc (f *FlagSet) Int16Var(p *int16, name string, value int16, usage string) {\n\tf.VarP(newInt16Value(value, p), name, \"\", usage)\n}\n\n// Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int16VarP(p *int16, name, shorthand string, value int16, usage string) {\n\tf.VarP(newInt16Value(value, p), name, shorthand, usage)\n}\n\n// Int16Var defines an int16 flag with specified name, default value, and usage string.\n// The argument p points to an int16 variable in which to store the value of the flag.\nfunc Int16Var(p *int16, name string, value int16, usage string) {\n\tCommandLine.VarP(newInt16Value(value, p), name, \"\", usage)\n}\n\n// Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Int16VarP(p *int16, name, shorthand string, value int16, usage string) {\n\tCommandLine.VarP(newInt16Value(value, p), name, shorthand, usage)\n}\n\n// Int16 defines an int16 flag with specified name, default value, and usage string.\n// The return value is the address of an int16 variable that stores the value of the flag.\nfunc (f *FlagSet) Int16(name string, value int16, usage string) *int16 {\n\tp := new(int16)\n\tf.Int16VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int16P(name, shorthand string, value int16, usage string) *int16 {\n\tp := new(int16)\n\tf.Int16VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Int16 defines an int16 flag with specified name, default value, and usage string.\n// The return value is the address of an int16 variable that stores the value of the flag.\nfunc Int16(name string, value int16, usage string) *int16 {\n\treturn CommandLine.Int16P(name, \"\", value, usage)\n}\n\n// Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash.\nfunc Int16P(name, shorthand string, value int16, usage string) *int16 {\n\treturn CommandLine.Int16P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/int32.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- int32 Value\ntype int32Value int32\n\nfunc newInt32Value(val int32, p *int32) *int32Value {\n\t*p = val\n\treturn (*int32Value)(p)\n}\n\nfunc (i *int32Value) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 32)\n\t*i = int32Value(v)\n\treturn err\n}\n\nfunc (i *int32Value) Type() string {\n\treturn \"int32\"\n}\n\nfunc (i *int32Value) String() string { return strconv.FormatInt(int64(*i), 10) }\n\nfunc int32Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseInt(sval, 0, 32)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn int32(v), nil\n}\n\n// GetInt32 return the int32 value of a flag with the given name\nfunc (f *FlagSet) GetInt32(name string) (int32, error) {\n\tval, err := f.getFlagType(name, \"int32\", int32Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(int32), nil\n}\n\n// Int32Var defines an int32 flag with specified name, default value, and usage string.\n// The argument p points to an int32 variable in which to store the value of the flag.\nfunc (f *FlagSet) Int32Var(p *int32, name string, value int32, usage string) {\n\tf.VarP(newInt32Value(value, p), name, \"\", usage)\n}\n\n// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int32VarP(p *int32, name, shorthand string, value int32, usage string) {\n\tf.VarP(newInt32Value(value, p), name, shorthand, usage)\n}\n\n// Int32Var defines an int32 flag with specified name, default value, and usage string.\n// The argument p points to an int32 variable in which to store the value of the flag.\nfunc Int32Var(p *int32, name string, value int32, usage string) {\n\tCommandLine.VarP(newInt32Value(value, p), name, \"\", usage)\n}\n\n// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Int32VarP(p *int32, name, shorthand string, value int32, usage string) {\n\tCommandLine.VarP(newInt32Value(value, p), name, shorthand, usage)\n}\n\n// Int32 defines an int32 flag with specified name, default value, and usage string.\n// The return value is the address of an int32 variable that stores the value of the flag.\nfunc (f *FlagSet) Int32(name string, value int32, usage string) *int32 {\n\tp := new(int32)\n\tf.Int32VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int32P(name, shorthand string, value int32, usage string) *int32 {\n\tp := new(int32)\n\tf.Int32VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Int32 defines an int32 flag with specified name, default value, and usage string.\n// The return value is the address of an int32 variable that stores the value of the flag.\nfunc Int32(name string, value int32, usage string) *int32 {\n\treturn CommandLine.Int32P(name, \"\", value, usage)\n}\n\n// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash.\nfunc Int32P(name, shorthand string, value int32, usage string) *int32 {\n\treturn CommandLine.Int32P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/int64.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- int64 Value\ntype int64Value int64\n\nfunc newInt64Value(val int64, p *int64) *int64Value {\n\t*p = val\n\treturn (*int64Value)(p)\n}\n\nfunc (i *int64Value) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 64)\n\t*i = int64Value(v)\n\treturn err\n}\n\nfunc (i *int64Value) Type() string {\n\treturn \"int64\"\n}\n\nfunc (i *int64Value) String() string { return strconv.FormatInt(int64(*i), 10) }\n\nfunc int64Conv(sval string) (interface{}, error) {\n\treturn strconv.ParseInt(sval, 0, 64)\n}\n\n// GetInt64 return the int64 value of a flag with the given name\nfunc (f *FlagSet) GetInt64(name string) (int64, error) {\n\tval, err := f.getFlagType(name, \"int64\", int64Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(int64), nil\n}\n\n// Int64Var defines an int64 flag with specified name, default value, and usage string.\n// The argument p points to an int64 variable in which to store the value of the flag.\nfunc (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) {\n\tf.VarP(newInt64Value(value, p), name, \"\", usage)\n}\n\n// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int64VarP(p *int64, name, shorthand string, value int64, usage string) {\n\tf.VarP(newInt64Value(value, p), name, shorthand, usage)\n}\n\n// Int64Var defines an int64 flag with specified name, default value, and usage string.\n// The argument p points to an int64 variable in which to store the value of the flag.\nfunc Int64Var(p *int64, name string, value int64, usage string) {\n\tCommandLine.VarP(newInt64Value(value, p), name, \"\", usage)\n}\n\n// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Int64VarP(p *int64, name, shorthand string, value int64, usage string) {\n\tCommandLine.VarP(newInt64Value(value, p), name, shorthand, usage)\n}\n\n// Int64 defines an int64 flag with specified name, default value, and usage string.\n// The return value is the address of an int64 variable that stores the value of the flag.\nfunc (f *FlagSet) Int64(name string, value int64, usage string) *int64 {\n\tp := new(int64)\n\tf.Int64VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int64P(name, shorthand string, value int64, usage string) *int64 {\n\tp := new(int64)\n\tf.Int64VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Int64 defines an int64 flag with specified name, default value, and usage string.\n// The return value is the address of an int64 variable that stores the value of the flag.\nfunc Int64(name string, value int64, usage string) *int64 {\n\treturn CommandLine.Int64P(name, \"\", value, usage)\n}\n\n// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash.\nfunc Int64P(name, shorthand string, value int64, usage string) *int64 {\n\treturn CommandLine.Int64P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/int8.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- int8 Value\ntype int8Value int8\n\nfunc newInt8Value(val int8, p *int8) *int8Value {\n\t*p = val\n\treturn (*int8Value)(p)\n}\n\nfunc (i *int8Value) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 8)\n\t*i = int8Value(v)\n\treturn err\n}\n\nfunc (i *int8Value) Type() string {\n\treturn \"int8\"\n}\n\nfunc (i *int8Value) String() string { return strconv.FormatInt(int64(*i), 10) }\n\nfunc int8Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseInt(sval, 0, 8)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn int8(v), nil\n}\n\n// GetInt8 return the int8 value of a flag with the given name\nfunc (f *FlagSet) GetInt8(name string) (int8, error) {\n\tval, err := f.getFlagType(name, \"int8\", int8Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(int8), nil\n}\n\n// Int8Var defines an int8 flag with specified name, default value, and usage string.\n// The argument p points to an int8 variable in which to store the value of the flag.\nfunc (f *FlagSet) Int8Var(p *int8, name string, value int8, usage string) {\n\tf.VarP(newInt8Value(value, p), name, \"\", usage)\n}\n\n// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int8VarP(p *int8, name, shorthand string, value int8, usage string) {\n\tf.VarP(newInt8Value(value, p), name, shorthand, usage)\n}\n\n// Int8Var defines an int8 flag with specified name, default value, and usage string.\n// The argument p points to an int8 variable in which to store the value of the flag.\nfunc Int8Var(p *int8, name string, value int8, usage string) {\n\tCommandLine.VarP(newInt8Value(value, p), name, \"\", usage)\n}\n\n// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Int8VarP(p *int8, name, shorthand string, value int8, usage string) {\n\tCommandLine.VarP(newInt8Value(value, p), name, shorthand, usage)\n}\n\n// Int8 defines an int8 flag with specified name, default value, and usage string.\n// The return value is the address of an int8 variable that stores the value of the flag.\nfunc (f *FlagSet) Int8(name string, value int8, usage string) *int8 {\n\tp := new(int8)\n\tf.Int8VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Int8P(name, shorthand string, value int8, usage string) *int8 {\n\tp := new(int8)\n\tf.Int8VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Int8 defines an int8 flag with specified name, default value, and usage string.\n// The return value is the address of an int8 variable that stores the value of the flag.\nfunc Int8(name string, value int8, usage string) *int8 {\n\treturn CommandLine.Int8P(name, \"\", value, usage)\n}\n\n// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash.\nfunc Int8P(name, shorthand string, value int8, usage string) *int8 {\n\treturn CommandLine.Int8P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/int_slice.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// -- intSlice Value\ntype intSliceValue struct {\n\tvalue   *[]int\n\tchanged bool\n}\n\nfunc newIntSliceValue(val []int, p *[]int) *intSliceValue {\n\tisv := new(intSliceValue)\n\tisv.value = p\n\t*isv.value = val\n\treturn isv\n}\n\nfunc (s *intSliceValue) Set(val string) error {\n\tss := strings.Split(val, \",\")\n\tout := make([]int, len(ss))\n\tfor i, d := range ss {\n\t\tvar err error\n\t\tout[i], err = strconv.Atoi(d)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t}\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\t*s.value = append(*s.value, out...)\n\t}\n\ts.changed = true\n\treturn nil\n}\n\nfunc (s *intSliceValue) Type() string {\n\treturn \"intSlice\"\n}\n\nfunc (s *intSliceValue) String() string {\n\tout := make([]string, len(*s.value))\n\tfor i, d := range *s.value {\n\t\tout[i] = fmt.Sprintf(\"%d\", d)\n\t}\n\treturn \"[\" + strings.Join(out, \",\") + \"]\"\n}\n\nfunc intSliceConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// Empty string would cause a slice with one (empty) entry\n\tif len(val) == 0 {\n\t\treturn []int{}, nil\n\t}\n\tss := strings.Split(val, \",\")\n\tout := make([]int, len(ss))\n\tfor i, d := range ss {\n\t\tvar err error\n\t\tout[i], err = strconv.Atoi(d)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t}\n\treturn out, nil\n}\n\n// GetIntSlice return the []int value of a flag with the given name\nfunc (f *FlagSet) GetIntSlice(name string) ([]int, error) {\n\tval, err := f.getFlagType(name, \"intSlice\", intSliceConv)\n\tif err != nil {\n\t\treturn []int{}, err\n\t}\n\treturn val.([]int), nil\n}\n\n// IntSliceVar defines a intSlice flag with specified name, default value, and usage string.\n// The argument p points to a []int variable in which to store the value of the flag.\nfunc (f *FlagSet) IntSliceVar(p *[]int, name string, value []int, usage string) {\n\tf.VarP(newIntSliceValue(value, p), name, \"\", usage)\n}\n\n// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) {\n\tf.VarP(newIntSliceValue(value, p), name, shorthand, usage)\n}\n\n// IntSliceVar defines a int[] flag with specified name, default value, and usage string.\n// The argument p points to a int[] variable in which to store the value of the flag.\nfunc IntSliceVar(p *[]int, name string, value []int, usage string) {\n\tCommandLine.VarP(newIntSliceValue(value, p), name, \"\", usage)\n}\n\n// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) {\n\tCommandLine.VarP(newIntSliceValue(value, p), name, shorthand, usage)\n}\n\n// IntSlice defines a []int flag with specified name, default value, and usage string.\n// The return value is the address of a []int variable that stores the value of the flag.\nfunc (f *FlagSet) IntSlice(name string, value []int, usage string) *[]int {\n\tp := []int{}\n\tf.IntSliceVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IntSliceP(name, shorthand string, value []int, usage string) *[]int {\n\tp := []int{}\n\tf.IntSliceVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// IntSlice defines a []int flag with specified name, default value, and usage string.\n// The return value is the address of a []int variable that stores the value of the flag.\nfunc IntSlice(name string, value []int, usage string) *[]int {\n\treturn CommandLine.IntSliceP(name, \"\", value, usage)\n}\n\n// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc IntSliceP(name, shorthand string, value []int, usage string) *[]int {\n\treturn CommandLine.IntSliceP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/ip.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n)\n\n// -- net.IP value\ntype ipValue net.IP\n\nfunc newIPValue(val net.IP, p *net.IP) *ipValue {\n\t*p = val\n\treturn (*ipValue)(p)\n}\n\nfunc (i *ipValue) String() string { return net.IP(*i).String() }\nfunc (i *ipValue) Set(s string) error {\n\tip := net.ParseIP(strings.TrimSpace(s))\n\tif ip == nil {\n\t\treturn fmt.Errorf(\"failed to parse IP: %q\", s)\n\t}\n\t*i = ipValue(ip)\n\treturn nil\n}\n\nfunc (i *ipValue) Type() string {\n\treturn \"ip\"\n}\n\nfunc ipConv(sval string) (interface{}, error) {\n\tip := net.ParseIP(sval)\n\tif ip != nil {\n\t\treturn ip, nil\n\t}\n\treturn nil, fmt.Errorf(\"invalid string being converted to IP address: %s\", sval)\n}\n\n// GetIP return the net.IP value of a flag with the given name\nfunc (f *FlagSet) GetIP(name string) (net.IP, error) {\n\tval, err := f.getFlagType(name, \"ip\", ipConv)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn val.(net.IP), nil\n}\n\n// IPVar defines an net.IP flag with specified name, default value, and usage string.\n// The argument p points to an net.IP variable in which to store the value of the flag.\nfunc (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) {\n\tf.VarP(newIPValue(value, p), name, \"\", usage)\n}\n\n// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) {\n\tf.VarP(newIPValue(value, p), name, shorthand, usage)\n}\n\n// IPVar defines an net.IP flag with specified name, default value, and usage string.\n// The argument p points to an net.IP variable in which to store the value of the flag.\nfunc IPVar(p *net.IP, name string, value net.IP, usage string) {\n\tCommandLine.VarP(newIPValue(value, p), name, \"\", usage)\n}\n\n// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash.\nfunc IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) {\n\tCommandLine.VarP(newIPValue(value, p), name, shorthand, usage)\n}\n\n// IP defines an net.IP flag with specified name, default value, and usage string.\n// The return value is the address of an net.IP variable that stores the value of the flag.\nfunc (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP {\n\tp := new(net.IP)\n\tf.IPVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// IPP is like IP, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) *net.IP {\n\tp := new(net.IP)\n\tf.IPVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// IP defines an net.IP flag with specified name, default value, and usage string.\n// The return value is the address of an net.IP variable that stores the value of the flag.\nfunc IP(name string, value net.IP, usage string) *net.IP {\n\treturn CommandLine.IPP(name, \"\", value, usage)\n}\n\n// IPP is like IP, but accepts a shorthand letter that can be used after a single dash.\nfunc IPP(name, shorthand string, value net.IP, usage string) *net.IP {\n\treturn CommandLine.IPP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/ip_slice.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strings\"\n)\n\n// -- ipSlice Value\ntype ipSliceValue struct {\n\tvalue   *[]net.IP\n\tchanged bool\n}\n\nfunc newIPSliceValue(val []net.IP, p *[]net.IP) *ipSliceValue {\n\tipsv := new(ipSliceValue)\n\tipsv.value = p\n\t*ipsv.value = val\n\treturn ipsv\n}\n\n// Set converts, and assigns, the comma-separated IP argument string representation as the []net.IP value of this flag.\n// If Set is called on a flag that already has a []net.IP assigned, the newly converted values will be appended.\nfunc (s *ipSliceValue) Set(val string) error {\n\n\t// remove all quote characters\n\trmQuote := strings.NewReplacer(`\"`, \"\", `'`, \"\", \"`\", \"\")\n\n\t// read flag arguments with CSV parser\n\tipStrSlice, err := readAsCSV(rmQuote.Replace(val))\n\tif err != nil && err != io.EOF {\n\t\treturn err\n\t}\n\n\t// parse ip values into slice\n\tout := make([]net.IP, 0, len(ipStrSlice))\n\tfor _, ipStr := range ipStrSlice {\n\t\tip := net.ParseIP(strings.TrimSpace(ipStr))\n\t\tif ip == nil {\n\t\t\treturn fmt.Errorf(\"invalid string being converted to IP address: %s\", ipStr)\n\t\t}\n\t\tout = append(out, ip)\n\t}\n\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\t*s.value = append(*s.value, out...)\n\t}\n\n\ts.changed = true\n\n\treturn nil\n}\n\n// Type returns a string that uniquely represents this flag's type.\nfunc (s *ipSliceValue) Type() string {\n\treturn \"ipSlice\"\n}\n\n// String defines a \"native\" format for this net.IP slice flag value.\nfunc (s *ipSliceValue) String() string {\n\n\tipStrSlice := make([]string, len(*s.value))\n\tfor i, ip := range *s.value {\n\t\tipStrSlice[i] = ip.String()\n\t}\n\n\tout, _ := writeAsCSV(ipStrSlice)\n\n\treturn \"[\" + out + \"]\"\n}\n\nfunc ipSliceConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// Emtpy string would cause a slice with one (empty) entry\n\tif len(val) == 0 {\n\t\treturn []net.IP{}, nil\n\t}\n\tss := strings.Split(val, \",\")\n\tout := make([]net.IP, len(ss))\n\tfor i, sval := range ss {\n\t\tip := net.ParseIP(strings.TrimSpace(sval))\n\t\tif ip == nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid string being converted to IP address: %s\", sval)\n\t\t}\n\t\tout[i] = ip\n\t}\n\treturn out, nil\n}\n\n// GetIPSlice returns the []net.IP value of a flag with the given name\nfunc (f *FlagSet) GetIPSlice(name string) ([]net.IP, error) {\n\tval, err := f.getFlagType(name, \"ipSlice\", ipSliceConv)\n\tif err != nil {\n\t\treturn []net.IP{}, err\n\t}\n\treturn val.([]net.IP), nil\n}\n\n// IPSliceVar defines a ipSlice flag with specified name, default value, and usage string.\n// The argument p points to a []net.IP variable in which to store the value of the flag.\nfunc (f *FlagSet) IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) {\n\tf.VarP(newIPSliceValue(value, p), name, \"\", usage)\n}\n\n// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) {\n\tf.VarP(newIPSliceValue(value, p), name, shorthand, usage)\n}\n\n// IPSliceVar defines a []net.IP flag with specified name, default value, and usage string.\n// The argument p points to a []net.IP variable in which to store the value of the flag.\nfunc IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) {\n\tCommandLine.VarP(newIPSliceValue(value, p), name, \"\", usage)\n}\n\n// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) {\n\tCommandLine.VarP(newIPSliceValue(value, p), name, shorthand, usage)\n}\n\n// IPSlice defines a []net.IP flag with specified name, default value, and usage string.\n// The return value is the address of a []net.IP variable that stores the value of that flag.\nfunc (f *FlagSet) IPSlice(name string, value []net.IP, usage string) *[]net.IP {\n\tp := []net.IP{}\n\tf.IPSliceVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP {\n\tp := []net.IP{}\n\tf.IPSliceVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// IPSlice defines a []net.IP flag with specified name, default value, and usage string.\n// The return value is the address of a []net.IP variable that stores the value of the flag.\nfunc IPSlice(name string, value []net.IP, usage string) *[]net.IP {\n\treturn CommandLine.IPSliceP(name, \"\", value, usage)\n}\n\n// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP {\n\treturn CommandLine.IPSliceP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/ipmask.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n)\n\n// -- net.IPMask value\ntype ipMaskValue net.IPMask\n\nfunc newIPMaskValue(val net.IPMask, p *net.IPMask) *ipMaskValue {\n\t*p = val\n\treturn (*ipMaskValue)(p)\n}\n\nfunc (i *ipMaskValue) String() string { return net.IPMask(*i).String() }\nfunc (i *ipMaskValue) Set(s string) error {\n\tip := ParseIPv4Mask(s)\n\tif ip == nil {\n\t\treturn fmt.Errorf(\"failed to parse IP mask: %q\", s)\n\t}\n\t*i = ipMaskValue(ip)\n\treturn nil\n}\n\nfunc (i *ipMaskValue) Type() string {\n\treturn \"ipMask\"\n}\n\n// ParseIPv4Mask written in IP form (e.g. 255.255.255.0).\n// This function should really belong to the net package.\nfunc ParseIPv4Mask(s string) net.IPMask {\n\tmask := net.ParseIP(s)\n\tif mask == nil {\n\t\tif len(s) != 8 {\n\t\t\treturn nil\n\t\t}\n\t\t// net.IPMask.String() actually outputs things like ffffff00\n\t\t// so write a horrible parser for that as well  :-(\n\t\tm := []int{}\n\t\tfor i := 0; i < 4; i++ {\n\t\t\tb := \"0x\" + s[2*i:2*i+2]\n\t\t\td, err := strconv.ParseInt(b, 0, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tm = append(m, int(d))\n\t\t}\n\t\ts := fmt.Sprintf(\"%d.%d.%d.%d\", m[0], m[1], m[2], m[3])\n\t\tmask = net.ParseIP(s)\n\t\tif mask == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn net.IPv4Mask(mask[12], mask[13], mask[14], mask[15])\n}\n\nfunc parseIPv4Mask(sval string) (interface{}, error) {\n\tmask := ParseIPv4Mask(sval)\n\tif mask == nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse %s as net.IPMask\", sval)\n\t}\n\treturn mask, nil\n}\n\n// GetIPv4Mask return the net.IPv4Mask value of a flag with the given name\nfunc (f *FlagSet) GetIPv4Mask(name string) (net.IPMask, error) {\n\tval, err := f.getFlagType(name, \"ipMask\", parseIPv4Mask)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn val.(net.IPMask), nil\n}\n\n// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string.\n// The argument p points to an net.IPMask variable in which to store the value of the flag.\nfunc (f *FlagSet) IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) {\n\tf.VarP(newIPMaskValue(value, p), name, \"\", usage)\n}\n\n// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) {\n\tf.VarP(newIPMaskValue(value, p), name, shorthand, usage)\n}\n\n// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string.\n// The argument p points to an net.IPMask variable in which to store the value of the flag.\nfunc IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) {\n\tCommandLine.VarP(newIPMaskValue(value, p), name, \"\", usage)\n}\n\n// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash.\nfunc IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) {\n\tCommandLine.VarP(newIPMaskValue(value, p), name, shorthand, usage)\n}\n\n// IPMask defines an net.IPMask flag with specified name, default value, and usage string.\n// The return value is the address of an net.IPMask variable that stores the value of the flag.\nfunc (f *FlagSet) IPMask(name string, value net.IPMask, usage string) *net.IPMask {\n\tp := new(net.IPMask)\n\tf.IPMaskVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// IPMaskP is like IPMask, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask {\n\tp := new(net.IPMask)\n\tf.IPMaskVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// IPMask defines an net.IPMask flag with specified name, default value, and usage string.\n// The return value is the address of an net.IPMask variable that stores the value of the flag.\nfunc IPMask(name string, value net.IPMask, usage string) *net.IPMask {\n\treturn CommandLine.IPMaskP(name, \"\", value, usage)\n}\n\n// IPMaskP is like IP, but accepts a shorthand letter that can be used after a single dash.\nfunc IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask {\n\treturn CommandLine.IPMaskP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/ipnet.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n)\n\n// IPNet adapts net.IPNet for use as a flag.\ntype ipNetValue net.IPNet\n\nfunc (ipnet ipNetValue) String() string {\n\tn := net.IPNet(ipnet)\n\treturn n.String()\n}\n\nfunc (ipnet *ipNetValue) Set(value string) error {\n\t_, n, err := net.ParseCIDR(strings.TrimSpace(value))\n\tif err != nil {\n\t\treturn err\n\t}\n\t*ipnet = ipNetValue(*n)\n\treturn nil\n}\n\nfunc (*ipNetValue) Type() string {\n\treturn \"ipNet\"\n}\n\nfunc newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue {\n\t*p = val\n\treturn (*ipNetValue)(p)\n}\n\nfunc ipNetConv(sval string) (interface{}, error) {\n\t_, n, err := net.ParseCIDR(strings.TrimSpace(sval))\n\tif err == nil {\n\t\treturn *n, nil\n\t}\n\treturn nil, fmt.Errorf(\"invalid string being converted to IPNet: %s\", sval)\n}\n\n// GetIPNet return the net.IPNet value of a flag with the given name\nfunc (f *FlagSet) GetIPNet(name string) (net.IPNet, error) {\n\tval, err := f.getFlagType(name, \"ipNet\", ipNetConv)\n\tif err != nil {\n\t\treturn net.IPNet{}, err\n\t}\n\treturn val.(net.IPNet), nil\n}\n\n// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string.\n// The argument p points to an net.IPNet variable in which to store the value of the flag.\nfunc (f *FlagSet) IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) {\n\tf.VarP(newIPNetValue(value, p), name, \"\", usage)\n}\n\n// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) {\n\tf.VarP(newIPNetValue(value, p), name, shorthand, usage)\n}\n\n// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string.\n// The argument p points to an net.IPNet variable in which to store the value of the flag.\nfunc IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) {\n\tCommandLine.VarP(newIPNetValue(value, p), name, \"\", usage)\n}\n\n// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash.\nfunc IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) {\n\tCommandLine.VarP(newIPNetValue(value, p), name, shorthand, usage)\n}\n\n// IPNet defines an net.IPNet flag with specified name, default value, and usage string.\n// The return value is the address of an net.IPNet variable that stores the value of the flag.\nfunc (f *FlagSet) IPNet(name string, value net.IPNet, usage string) *net.IPNet {\n\tp := new(net.IPNet)\n\tf.IPNetVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet {\n\tp := new(net.IPNet)\n\tf.IPNetVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// IPNet defines an net.IPNet flag with specified name, default value, and usage string.\n// The return value is the address of an net.IPNet variable that stores the value of the flag.\nfunc IPNet(name string, value net.IPNet, usage string) *net.IPNet {\n\treturn CommandLine.IPNetP(name, \"\", value, usage)\n}\n\n// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash.\nfunc IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet {\n\treturn CommandLine.IPNetP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/string.go",
    "content": "package pflag\n\n// -- string Value\ntype stringValue string\n\nfunc newStringValue(val string, p *string) *stringValue {\n\t*p = val\n\treturn (*stringValue)(p)\n}\n\nfunc (s *stringValue) Set(val string) error {\n\t*s = stringValue(val)\n\treturn nil\n}\nfunc (s *stringValue) Type() string {\n\treturn \"string\"\n}\n\nfunc (s *stringValue) String() string { return string(*s) }\n\nfunc stringConv(sval string) (interface{}, error) {\n\treturn sval, nil\n}\n\n// GetString return the string value of a flag with the given name\nfunc (f *FlagSet) GetString(name string) (string, error) {\n\tval, err := f.getFlagType(name, \"string\", stringConv)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn val.(string), nil\n}\n\n// StringVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a string variable in which to store the value of the flag.\nfunc (f *FlagSet) StringVar(p *string, name string, value string, usage string) {\n\tf.VarP(newStringValue(value, p), name, \"\", usage)\n}\n\n// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, usage string) {\n\tf.VarP(newStringValue(value, p), name, shorthand, usage)\n}\n\n// StringVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a string variable in which to store the value of the flag.\nfunc StringVar(p *string, name string, value string, usage string) {\n\tCommandLine.VarP(newStringValue(value, p), name, \"\", usage)\n}\n\n// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash.\nfunc StringVarP(p *string, name, shorthand string, value string, usage string) {\n\tCommandLine.VarP(newStringValue(value, p), name, shorthand, usage)\n}\n\n// String defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a string variable that stores the value of the flag.\nfunc (f *FlagSet) String(name string, value string, usage string) *string {\n\tp := new(string)\n\tf.StringVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// StringP is like String, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringP(name, shorthand string, value string, usage string) *string {\n\tp := new(string)\n\tf.StringVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// String defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a string variable that stores the value of the flag.\nfunc String(name string, value string, usage string) *string {\n\treturn CommandLine.StringP(name, \"\", value, usage)\n}\n\n// StringP is like String, but accepts a shorthand letter that can be used after a single dash.\nfunc StringP(name, shorthand string, value string, usage string) *string {\n\treturn CommandLine.StringP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/string_array.go",
    "content": "package pflag\n\n// -- stringArray Value\ntype stringArrayValue struct {\n\tvalue   *[]string\n\tchanged bool\n}\n\nfunc newStringArrayValue(val []string, p *[]string) *stringArrayValue {\n\tssv := new(stringArrayValue)\n\tssv.value = p\n\t*ssv.value = val\n\treturn ssv\n}\n\nfunc (s *stringArrayValue) Set(val string) error {\n\tif !s.changed {\n\t\t*s.value = []string{val}\n\t\ts.changed = true\n\t} else {\n\t\t*s.value = append(*s.value, val)\n\t}\n\treturn nil\n}\n\nfunc (s *stringArrayValue) Type() string {\n\treturn \"stringArray\"\n}\n\nfunc (s *stringArrayValue) String() string {\n\tstr, _ := writeAsCSV(*s.value)\n\treturn \"[\" + str + \"]\"\n}\n\nfunc stringArrayConv(sval string) (interface{}, error) {\n\tsval = sval[1 : len(sval)-1]\n\t// An empty string would cause a array with one (empty) string\n\tif len(sval) == 0 {\n\t\treturn []string{}, nil\n\t}\n\treturn readAsCSV(sval)\n}\n\n// GetStringArray return the []string value of a flag with the given name\nfunc (f *FlagSet) GetStringArray(name string) ([]string, error) {\n\tval, err := f.getFlagType(name, \"stringArray\", stringArrayConv)\n\tif err != nil {\n\t\treturn []string{}, err\n\t}\n\treturn val.([]string), nil\n}\n\n// StringArrayVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a []string variable in which to store the values of the multiple flags.\n// The value of each argument will not try to be separated by comma. Use a StringSlice for that.\nfunc (f *FlagSet) StringArrayVar(p *[]string, name string, value []string, usage string) {\n\tf.VarP(newStringArrayValue(value, p), name, \"\", usage)\n}\n\n// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) {\n\tf.VarP(newStringArrayValue(value, p), name, shorthand, usage)\n}\n\n// StringArrayVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a []string variable in which to store the value of the flag.\n// The value of each argument will not try to be separated by comma. Use a StringSlice for that.\nfunc StringArrayVar(p *[]string, name string, value []string, usage string) {\n\tCommandLine.VarP(newStringArrayValue(value, p), name, \"\", usage)\n}\n\n// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash.\nfunc StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) {\n\tCommandLine.VarP(newStringArrayValue(value, p), name, shorthand, usage)\n}\n\n// StringArray defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a []string variable that stores the value of the flag.\n// The value of each argument will not try to be separated by comma. Use a StringSlice for that.\nfunc (f *FlagSet) StringArray(name string, value []string, usage string) *[]string {\n\tp := []string{}\n\tf.StringArrayVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringArrayP(name, shorthand string, value []string, usage string) *[]string {\n\tp := []string{}\n\tf.StringArrayVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// StringArray defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a []string variable that stores the value of the flag.\n// The value of each argument will not try to be separated by comma. Use a StringSlice for that.\nfunc StringArray(name string, value []string, usage string) *[]string {\n\treturn CommandLine.StringArrayP(name, \"\", value, usage)\n}\n\n// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash.\nfunc StringArrayP(name, shorthand string, value []string, usage string) *[]string {\n\treturn CommandLine.StringArrayP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/string_slice.go",
    "content": "package pflag\n\nimport (\n\t\"bytes\"\n\t\"encoding/csv\"\n\t\"strings\"\n)\n\n// -- stringSlice Value\ntype stringSliceValue struct {\n\tvalue   *[]string\n\tchanged bool\n}\n\nfunc newStringSliceValue(val []string, p *[]string) *stringSliceValue {\n\tssv := new(stringSliceValue)\n\tssv.value = p\n\t*ssv.value = val\n\treturn ssv\n}\n\nfunc readAsCSV(val string) ([]string, error) {\n\tif val == \"\" {\n\t\treturn []string{}, nil\n\t}\n\tstringReader := strings.NewReader(val)\n\tcsvReader := csv.NewReader(stringReader)\n\treturn csvReader.Read()\n}\n\nfunc writeAsCSV(vals []string) (string, error) {\n\tb := &bytes.Buffer{}\n\tw := csv.NewWriter(b)\n\terr := w.Write(vals)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tw.Flush()\n\treturn strings.TrimSuffix(b.String(), \"\\n\"), nil\n}\n\nfunc (s *stringSliceValue) Set(val string) error {\n\tv, err := readAsCSV(val)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !s.changed {\n\t\t*s.value = v\n\t} else {\n\t\t*s.value = append(*s.value, v...)\n\t}\n\ts.changed = true\n\treturn nil\n}\n\nfunc (s *stringSliceValue) Type() string {\n\treturn \"stringSlice\"\n}\n\nfunc (s *stringSliceValue) String() string {\n\tstr, _ := writeAsCSV(*s.value)\n\treturn \"[\" + str + \"]\"\n}\n\nfunc stringSliceConv(sval string) (interface{}, error) {\n\tsval = sval[1 : len(sval)-1]\n\t// An empty string would cause a slice with one (empty) string\n\tif len(sval) == 0 {\n\t\treturn []string{}, nil\n\t}\n\treturn readAsCSV(sval)\n}\n\n// GetStringSlice return the []string value of a flag with the given name\nfunc (f *FlagSet) GetStringSlice(name string) ([]string, error) {\n\tval, err := f.getFlagType(name, \"stringSlice\", stringSliceConv)\n\tif err != nil {\n\t\treturn []string{}, err\n\t}\n\treturn val.([]string), nil\n}\n\n// StringSliceVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a []string variable in which to store the value of the flag.\n// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.\n// For example:\n//   --ss=\"v1,v2\" -ss=\"v3\"\n// will result in\n//   []string{\"v1\", \"v2\", \"v3\"}\nfunc (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) {\n\tf.VarP(newStringSliceValue(value, p), name, \"\", usage)\n}\n\n// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) {\n\tf.VarP(newStringSliceValue(value, p), name, shorthand, usage)\n}\n\n// StringSliceVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a []string variable in which to store the value of the flag.\n// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.\n// For example:\n//   --ss=\"v1,v2\" -ss=\"v3\"\n// will result in\n//   []string{\"v1\", \"v2\", \"v3\"}\nfunc StringSliceVar(p *[]string, name string, value []string, usage string) {\n\tCommandLine.VarP(newStringSliceValue(value, p), name, \"\", usage)\n}\n\n// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) {\n\tCommandLine.VarP(newStringSliceValue(value, p), name, shorthand, usage)\n}\n\n// StringSlice defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a []string variable that stores the value of the flag.\n// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.\n// For example:\n//   --ss=\"v1,v2\" -ss=\"v3\"\n// will result in\n//   []string{\"v1\", \"v2\", \"v3\"}\nfunc (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string {\n\tp := []string{}\n\tf.StringSliceVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage string) *[]string {\n\tp := []string{}\n\tf.StringSliceVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// StringSlice defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a []string variable that stores the value of the flag.\n// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.\n// For example:\n//   --ss=\"v1,v2\" -ss=\"v3\"\n// will result in\n//   []string{\"v1\", \"v2\", \"v3\"}\nfunc StringSlice(name string, value []string, usage string) *[]string {\n\treturn CommandLine.StringSliceP(name, \"\", value, usage)\n}\n\n// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc StringSliceP(name, shorthand string, value []string, usage string) *[]string {\n\treturn CommandLine.StringSliceP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/string_to_int.go",
    "content": "package pflag\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// -- stringToInt Value\ntype stringToIntValue struct {\n\tvalue   *map[string]int\n\tchanged bool\n}\n\nfunc newStringToIntValue(val map[string]int, p *map[string]int) *stringToIntValue {\n\tssv := new(stringToIntValue)\n\tssv.value = p\n\t*ssv.value = val\n\treturn ssv\n}\n\n// Format: a=1,b=2\nfunc (s *stringToIntValue) Set(val string) error {\n\tss := strings.Split(val, \",\")\n\tout := make(map[string]int, len(ss))\n\tfor _, pair := range ss {\n\t\tkv := strings.SplitN(pair, \"=\", 2)\n\t\tif len(kv) != 2 {\n\t\t\treturn fmt.Errorf(\"%s must be formatted as key=value\", pair)\n\t\t}\n\t\tvar err error\n\t\tout[kv[0]], err = strconv.Atoi(kv[1])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\tfor k, v := range out {\n\t\t\t(*s.value)[k] = v\n\t\t}\n\t}\n\ts.changed = true\n\treturn nil\n}\n\nfunc (s *stringToIntValue) Type() string {\n\treturn \"stringToInt\"\n}\n\nfunc (s *stringToIntValue) String() string {\n\tvar buf bytes.Buffer\n\ti := 0\n\tfor k, v := range *s.value {\n\t\tif i > 0 {\n\t\t\tbuf.WriteRune(',')\n\t\t}\n\t\tbuf.WriteString(k)\n\t\tbuf.WriteRune('=')\n\t\tbuf.WriteString(strconv.Itoa(v))\n\t\ti++\n\t}\n\treturn \"[\" + buf.String() + \"]\"\n}\n\nfunc stringToIntConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// An empty string would cause an empty map\n\tif len(val) == 0 {\n\t\treturn map[string]int{}, nil\n\t}\n\tss := strings.Split(val, \",\")\n\tout := make(map[string]int, len(ss))\n\tfor _, pair := range ss {\n\t\tkv := strings.SplitN(pair, \"=\", 2)\n\t\tif len(kv) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"%s must be formatted as key=value\", pair)\n\t\t}\n\t\tvar err error\n\t\tout[kv[0]], err = strconv.Atoi(kv[1])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn out, nil\n}\n\n// GetStringToInt return the map[string]int value of a flag with the given name\nfunc (f *FlagSet) GetStringToInt(name string) (map[string]int, error) {\n\tval, err := f.getFlagType(name, \"stringToInt\", stringToIntConv)\n\tif err != nil {\n\t\treturn map[string]int{}, err\n\t}\n\treturn val.(map[string]int), nil\n}\n\n// StringToIntVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a map[string]int variable in which to store the values of the multiple flags.\n// The value of each argument will not try to be separated by comma\nfunc (f *FlagSet) StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) {\n\tf.VarP(newStringToIntValue(value, p), name, \"\", usage)\n}\n\n// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) {\n\tf.VarP(newStringToIntValue(value, p), name, shorthand, usage)\n}\n\n// StringToIntVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a map[string]int variable in which to store the value of the flag.\n// The value of each argument will not try to be separated by comma\nfunc StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) {\n\tCommandLine.VarP(newStringToIntValue(value, p), name, \"\", usage)\n}\n\n// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash.\nfunc StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) {\n\tCommandLine.VarP(newStringToIntValue(value, p), name, shorthand, usage)\n}\n\n// StringToInt defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a map[string]int variable that stores the value of the flag.\n// The value of each argument will not try to be separated by comma\nfunc (f *FlagSet) StringToInt(name string, value map[string]int, usage string) *map[string]int {\n\tp := map[string]int{}\n\tf.StringToIntVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int {\n\tp := map[string]int{}\n\tf.StringToIntVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// StringToInt defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a map[string]int variable that stores the value of the flag.\n// The value of each argument will not try to be separated by comma\nfunc StringToInt(name string, value map[string]int, usage string) *map[string]int {\n\treturn CommandLine.StringToIntP(name, \"\", value, usage)\n}\n\n// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash.\nfunc StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int {\n\treturn CommandLine.StringToIntP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/string_to_string.go",
    "content": "package pflag\n\nimport (\n\t\"bytes\"\n\t\"encoding/csv\"\n\t\"fmt\"\n\t\"strings\"\n)\n\n// -- stringToString Value\ntype stringToStringValue struct {\n\tvalue   *map[string]string\n\tchanged bool\n}\n\nfunc newStringToStringValue(val map[string]string, p *map[string]string) *stringToStringValue {\n\tssv := new(stringToStringValue)\n\tssv.value = p\n\t*ssv.value = val\n\treturn ssv\n}\n\n// Format: a=1,b=2\nfunc (s *stringToStringValue) Set(val string) error {\n\tvar ss []string\n\tn := strings.Count(val, \"=\")\n\tswitch n {\n\tcase 0:\n\t\treturn fmt.Errorf(\"%s must be formatted as key=value\", val)\n\tcase 1:\n\t\tss = append(ss, strings.Trim(val, `\"`))\n\tdefault:\n\t\tr := csv.NewReader(strings.NewReader(val))\n\t\tvar err error\n\t\tss, err = r.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tout := make(map[string]string, len(ss))\n\tfor _, pair := range ss {\n\t\tkv := strings.SplitN(pair, \"=\", 2)\n\t\tif len(kv) != 2 {\n\t\t\treturn fmt.Errorf(\"%s must be formatted as key=value\", pair)\n\t\t}\n\t\tout[kv[0]] = kv[1]\n\t}\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\tfor k, v := range out {\n\t\t\t(*s.value)[k] = v\n\t\t}\n\t}\n\ts.changed = true\n\treturn nil\n}\n\nfunc (s *stringToStringValue) Type() string {\n\treturn \"stringToString\"\n}\n\nfunc (s *stringToStringValue) String() string {\n\trecords := make([]string, 0, len(*s.value)>>1)\n\tfor k, v := range *s.value {\n\t\trecords = append(records, k+\"=\"+v)\n\t}\n\n\tvar buf bytes.Buffer\n\tw := csv.NewWriter(&buf)\n\tif err := w.Write(records); err != nil {\n\t\tpanic(err)\n\t}\n\tw.Flush()\n\treturn \"[\" + strings.TrimSpace(buf.String()) + \"]\"\n}\n\nfunc stringToStringConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// An empty string would cause an empty map\n\tif len(val) == 0 {\n\t\treturn map[string]string{}, nil\n\t}\n\tr := csv.NewReader(strings.NewReader(val))\n\tss, err := r.Read()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout := make(map[string]string, len(ss))\n\tfor _, pair := range ss {\n\t\tkv := strings.SplitN(pair, \"=\", 2)\n\t\tif len(kv) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"%s must be formatted as key=value\", pair)\n\t\t}\n\t\tout[kv[0]] = kv[1]\n\t}\n\treturn out, nil\n}\n\n// GetStringToString return the map[string]string value of a flag with the given name\nfunc (f *FlagSet) GetStringToString(name string) (map[string]string, error) {\n\tval, err := f.getFlagType(name, \"stringToString\", stringToStringConv)\n\tif err != nil {\n\t\treturn map[string]string{}, err\n\t}\n\treturn val.(map[string]string), nil\n}\n\n// StringToStringVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a map[string]string variable in which to store the values of the multiple flags.\n// The value of each argument will not try to be separated by comma\nfunc (f *FlagSet) StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) {\n\tf.VarP(newStringToStringValue(value, p), name, \"\", usage)\n}\n\n// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) {\n\tf.VarP(newStringToStringValue(value, p), name, shorthand, usage)\n}\n\n// StringToStringVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a map[string]string variable in which to store the value of the flag.\n// The value of each argument will not try to be separated by comma\nfunc StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) {\n\tCommandLine.VarP(newStringToStringValue(value, p), name, \"\", usage)\n}\n\n// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash.\nfunc StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) {\n\tCommandLine.VarP(newStringToStringValue(value, p), name, shorthand, usage)\n}\n\n// StringToString defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a map[string]string variable that stores the value of the flag.\n// The value of each argument will not try to be separated by comma\nfunc (f *FlagSet) StringToString(name string, value map[string]string, usage string) *map[string]string {\n\tp := map[string]string{}\n\tf.StringToStringVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string {\n\tp := map[string]string{}\n\tf.StringToStringVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// StringToString defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a map[string]string variable that stores the value of the flag.\n// The value of each argument will not try to be separated by comma\nfunc StringToString(name string, value map[string]string, usage string) *map[string]string {\n\treturn CommandLine.StringToStringP(name, \"\", value, usage)\n}\n\n// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash.\nfunc StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string {\n\treturn CommandLine.StringToStringP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/uint.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- uint Value\ntype uintValue uint\n\nfunc newUintValue(val uint, p *uint) *uintValue {\n\t*p = val\n\treturn (*uintValue)(p)\n}\n\nfunc (i *uintValue) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 64)\n\t*i = uintValue(v)\n\treturn err\n}\n\nfunc (i *uintValue) Type() string {\n\treturn \"uint\"\n}\n\nfunc (i *uintValue) String() string { return strconv.FormatUint(uint64(*i), 10) }\n\nfunc uintConv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseUint(sval, 0, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint(v), nil\n}\n\n// GetUint return the uint value of a flag with the given name\nfunc (f *FlagSet) GetUint(name string) (uint, error) {\n\tval, err := f.getFlagType(name, \"uint\", uintConv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(uint), nil\n}\n\n// UintVar defines a uint flag with specified name, default value, and usage string.\n// The argument p points to a uint variable in which to store the value of the flag.\nfunc (f *FlagSet) UintVar(p *uint, name string, value uint, usage string) {\n\tf.VarP(newUintValue(value, p), name, \"\", usage)\n}\n\n// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) UintVarP(p *uint, name, shorthand string, value uint, usage string) {\n\tf.VarP(newUintValue(value, p), name, shorthand, usage)\n}\n\n// UintVar defines a uint flag with specified name, default value, and usage string.\n// The argument p points to a uint  variable in which to store the value of the flag.\nfunc UintVar(p *uint, name string, value uint, usage string) {\n\tCommandLine.VarP(newUintValue(value, p), name, \"\", usage)\n}\n\n// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash.\nfunc UintVarP(p *uint, name, shorthand string, value uint, usage string) {\n\tCommandLine.VarP(newUintValue(value, p), name, shorthand, usage)\n}\n\n// Uint defines a uint flag with specified name, default value, and usage string.\n// The return value is the address of a uint  variable that stores the value of the flag.\nfunc (f *FlagSet) Uint(name string, value uint, usage string) *uint {\n\tp := new(uint)\n\tf.UintVarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) UintP(name, shorthand string, value uint, usage string) *uint {\n\tp := new(uint)\n\tf.UintVarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Uint defines a uint flag with specified name, default value, and usage string.\n// The return value is the address of a uint  variable that stores the value of the flag.\nfunc Uint(name string, value uint, usage string) *uint {\n\treturn CommandLine.UintP(name, \"\", value, usage)\n}\n\n// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash.\nfunc UintP(name, shorthand string, value uint, usage string) *uint {\n\treturn CommandLine.UintP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/uint16.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- uint16 value\ntype uint16Value uint16\n\nfunc newUint16Value(val uint16, p *uint16) *uint16Value {\n\t*p = val\n\treturn (*uint16Value)(p)\n}\n\nfunc (i *uint16Value) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 16)\n\t*i = uint16Value(v)\n\treturn err\n}\n\nfunc (i *uint16Value) Type() string {\n\treturn \"uint16\"\n}\n\nfunc (i *uint16Value) String() string { return strconv.FormatUint(uint64(*i), 10) }\n\nfunc uint16Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseUint(sval, 0, 16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint16(v), nil\n}\n\n// GetUint16 return the uint16 value of a flag with the given name\nfunc (f *FlagSet) GetUint16(name string) (uint16, error) {\n\tval, err := f.getFlagType(name, \"uint16\", uint16Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(uint16), nil\n}\n\n// Uint16Var defines a uint flag with specified name, default value, and usage string.\n// The argument p points to a uint variable in which to store the value of the flag.\nfunc (f *FlagSet) Uint16Var(p *uint16, name string, value uint16, usage string) {\n\tf.VarP(newUint16Value(value, p), name, \"\", usage)\n}\n\n// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) {\n\tf.VarP(newUint16Value(value, p), name, shorthand, usage)\n}\n\n// Uint16Var defines a uint flag with specified name, default value, and usage string.\n// The argument p points to a uint  variable in which to store the value of the flag.\nfunc Uint16Var(p *uint16, name string, value uint16, usage string) {\n\tCommandLine.VarP(newUint16Value(value, p), name, \"\", usage)\n}\n\n// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) {\n\tCommandLine.VarP(newUint16Value(value, p), name, shorthand, usage)\n}\n\n// Uint16 defines a uint flag with specified name, default value, and usage string.\n// The return value is the address of a uint  variable that stores the value of the flag.\nfunc (f *FlagSet) Uint16(name string, value uint16, usage string) *uint16 {\n\tp := new(uint16)\n\tf.Uint16VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint16P(name, shorthand string, value uint16, usage string) *uint16 {\n\tp := new(uint16)\n\tf.Uint16VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Uint16 defines a uint flag with specified name, default value, and usage string.\n// The return value is the address of a uint  variable that stores the value of the flag.\nfunc Uint16(name string, value uint16, usage string) *uint16 {\n\treturn CommandLine.Uint16P(name, \"\", value, usage)\n}\n\n// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint16P(name, shorthand string, value uint16, usage string) *uint16 {\n\treturn CommandLine.Uint16P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/uint32.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- uint32 value\ntype uint32Value uint32\n\nfunc newUint32Value(val uint32, p *uint32) *uint32Value {\n\t*p = val\n\treturn (*uint32Value)(p)\n}\n\nfunc (i *uint32Value) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 32)\n\t*i = uint32Value(v)\n\treturn err\n}\n\nfunc (i *uint32Value) Type() string {\n\treturn \"uint32\"\n}\n\nfunc (i *uint32Value) String() string { return strconv.FormatUint(uint64(*i), 10) }\n\nfunc uint32Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseUint(sval, 0, 32)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint32(v), nil\n}\n\n// GetUint32 return the uint32 value of a flag with the given name\nfunc (f *FlagSet) GetUint32(name string) (uint32, error) {\n\tval, err := f.getFlagType(name, \"uint32\", uint32Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(uint32), nil\n}\n\n// Uint32Var defines a uint32 flag with specified name, default value, and usage string.\n// The argument p points to a uint32 variable in which to store the value of the flag.\nfunc (f *FlagSet) Uint32Var(p *uint32, name string, value uint32, usage string) {\n\tf.VarP(newUint32Value(value, p), name, \"\", usage)\n}\n\n// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) {\n\tf.VarP(newUint32Value(value, p), name, shorthand, usage)\n}\n\n// Uint32Var defines a uint32 flag with specified name, default value, and usage string.\n// The argument p points to a uint32  variable in which to store the value of the flag.\nfunc Uint32Var(p *uint32, name string, value uint32, usage string) {\n\tCommandLine.VarP(newUint32Value(value, p), name, \"\", usage)\n}\n\n// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) {\n\tCommandLine.VarP(newUint32Value(value, p), name, shorthand, usage)\n}\n\n// Uint32 defines a uint32 flag with specified name, default value, and usage string.\n// The return value is the address of a uint32  variable that stores the value of the flag.\nfunc (f *FlagSet) Uint32(name string, value uint32, usage string) *uint32 {\n\tp := new(uint32)\n\tf.Uint32VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint32P(name, shorthand string, value uint32, usage string) *uint32 {\n\tp := new(uint32)\n\tf.Uint32VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Uint32 defines a uint32 flag with specified name, default value, and usage string.\n// The return value is the address of a uint32  variable that stores the value of the flag.\nfunc Uint32(name string, value uint32, usage string) *uint32 {\n\treturn CommandLine.Uint32P(name, \"\", value, usage)\n}\n\n// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint32P(name, shorthand string, value uint32, usage string) *uint32 {\n\treturn CommandLine.Uint32P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/uint64.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- uint64 Value\ntype uint64Value uint64\n\nfunc newUint64Value(val uint64, p *uint64) *uint64Value {\n\t*p = val\n\treturn (*uint64Value)(p)\n}\n\nfunc (i *uint64Value) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 64)\n\t*i = uint64Value(v)\n\treturn err\n}\n\nfunc (i *uint64Value) Type() string {\n\treturn \"uint64\"\n}\n\nfunc (i *uint64Value) String() string { return strconv.FormatUint(uint64(*i), 10) }\n\nfunc uint64Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseUint(sval, 0, 64)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint64(v), nil\n}\n\n// GetUint64 return the uint64 value of a flag with the given name\nfunc (f *FlagSet) GetUint64(name string) (uint64, error) {\n\tval, err := f.getFlagType(name, \"uint64\", uint64Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(uint64), nil\n}\n\n// Uint64Var defines a uint64 flag with specified name, default value, and usage string.\n// The argument p points to a uint64 variable in which to store the value of the flag.\nfunc (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string) {\n\tf.VarP(newUint64Value(value, p), name, \"\", usage)\n}\n\n// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) {\n\tf.VarP(newUint64Value(value, p), name, shorthand, usage)\n}\n\n// Uint64Var defines a uint64 flag with specified name, default value, and usage string.\n// The argument p points to a uint64 variable in which to store the value of the flag.\nfunc Uint64Var(p *uint64, name string, value uint64, usage string) {\n\tCommandLine.VarP(newUint64Value(value, p), name, \"\", usage)\n}\n\n// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) {\n\tCommandLine.VarP(newUint64Value(value, p), name, shorthand, usage)\n}\n\n// Uint64 defines a uint64 flag with specified name, default value, and usage string.\n// The return value is the address of a uint64 variable that stores the value of the flag.\nfunc (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64 {\n\tp := new(uint64)\n\tf.Uint64VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint64P(name, shorthand string, value uint64, usage string) *uint64 {\n\tp := new(uint64)\n\tf.Uint64VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Uint64 defines a uint64 flag with specified name, default value, and usage string.\n// The return value is the address of a uint64 variable that stores the value of the flag.\nfunc Uint64(name string, value uint64, usage string) *uint64 {\n\treturn CommandLine.Uint64P(name, \"\", value, usage)\n}\n\n// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint64P(name, shorthand string, value uint64, usage string) *uint64 {\n\treturn CommandLine.Uint64P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/uint8.go",
    "content": "package pflag\n\nimport \"strconv\"\n\n// -- uint8 Value\ntype uint8Value uint8\n\nfunc newUint8Value(val uint8, p *uint8) *uint8Value {\n\t*p = val\n\treturn (*uint8Value)(p)\n}\n\nfunc (i *uint8Value) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 8)\n\t*i = uint8Value(v)\n\treturn err\n}\n\nfunc (i *uint8Value) Type() string {\n\treturn \"uint8\"\n}\n\nfunc (i *uint8Value) String() string { return strconv.FormatUint(uint64(*i), 10) }\n\nfunc uint8Conv(sval string) (interface{}, error) {\n\tv, err := strconv.ParseUint(sval, 0, 8)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint8(v), nil\n}\n\n// GetUint8 return the uint8 value of a flag with the given name\nfunc (f *FlagSet) GetUint8(name string) (uint8, error) {\n\tval, err := f.getFlagType(name, \"uint8\", uint8Conv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn val.(uint8), nil\n}\n\n// Uint8Var defines a uint8 flag with specified name, default value, and usage string.\n// The argument p points to a uint8 variable in which to store the value of the flag.\nfunc (f *FlagSet) Uint8Var(p *uint8, name string, value uint8, usage string) {\n\tf.VarP(newUint8Value(value, p), name, \"\", usage)\n}\n\n// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) {\n\tf.VarP(newUint8Value(value, p), name, shorthand, usage)\n}\n\n// Uint8Var defines a uint8 flag with specified name, default value, and usage string.\n// The argument p points to a uint8 variable in which to store the value of the flag.\nfunc Uint8Var(p *uint8, name string, value uint8, usage string) {\n\tCommandLine.VarP(newUint8Value(value, p), name, \"\", usage)\n}\n\n// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) {\n\tCommandLine.VarP(newUint8Value(value, p), name, shorthand, usage)\n}\n\n// Uint8 defines a uint8 flag with specified name, default value, and usage string.\n// The return value is the address of a uint8 variable that stores the value of the flag.\nfunc (f *FlagSet) Uint8(name string, value uint8, usage string) *uint8 {\n\tp := new(uint8)\n\tf.Uint8VarP(p, name, \"\", value, usage)\n\treturn p\n}\n\n// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) Uint8P(name, shorthand string, value uint8, usage string) *uint8 {\n\tp := new(uint8)\n\tf.Uint8VarP(p, name, shorthand, value, usage)\n\treturn p\n}\n\n// Uint8 defines a uint8 flag with specified name, default value, and usage string.\n// The return value is the address of a uint8 variable that stores the value of the flag.\nfunc Uint8(name string, value uint8, usage string) *uint8 {\n\treturn CommandLine.Uint8P(name, \"\", value, usage)\n}\n\n// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash.\nfunc Uint8P(name, shorthand string, value uint8, usage string) *uint8 {\n\treturn CommandLine.Uint8P(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/pflag/uint_slice.go",
    "content": "package pflag\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// -- uintSlice Value\ntype uintSliceValue struct {\n\tvalue   *[]uint\n\tchanged bool\n}\n\nfunc newUintSliceValue(val []uint, p *[]uint) *uintSliceValue {\n\tuisv := new(uintSliceValue)\n\tuisv.value = p\n\t*uisv.value = val\n\treturn uisv\n}\n\nfunc (s *uintSliceValue) Set(val string) error {\n\tss := strings.Split(val, \",\")\n\tout := make([]uint, len(ss))\n\tfor i, d := range ss {\n\t\tu, err := strconv.ParseUint(d, 10, 0)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tout[i] = uint(u)\n\t}\n\tif !s.changed {\n\t\t*s.value = out\n\t} else {\n\t\t*s.value = append(*s.value, out...)\n\t}\n\ts.changed = true\n\treturn nil\n}\n\nfunc (s *uintSliceValue) Type() string {\n\treturn \"uintSlice\"\n}\n\nfunc (s *uintSliceValue) String() string {\n\tout := make([]string, len(*s.value))\n\tfor i, d := range *s.value {\n\t\tout[i] = fmt.Sprintf(\"%d\", d)\n\t}\n\treturn \"[\" + strings.Join(out, \",\") + \"]\"\n}\n\nfunc uintSliceConv(val string) (interface{}, error) {\n\tval = strings.Trim(val, \"[]\")\n\t// Empty string would cause a slice with one (empty) entry\n\tif len(val) == 0 {\n\t\treturn []uint{}, nil\n\t}\n\tss := strings.Split(val, \",\")\n\tout := make([]uint, len(ss))\n\tfor i, d := range ss {\n\t\tu, err := strconv.ParseUint(d, 10, 0)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tout[i] = uint(u)\n\t}\n\treturn out, nil\n}\n\n// GetUintSlice returns the []uint value of a flag with the given name.\nfunc (f *FlagSet) GetUintSlice(name string) ([]uint, error) {\n\tval, err := f.getFlagType(name, \"uintSlice\", uintSliceConv)\n\tif err != nil {\n\t\treturn []uint{}, err\n\t}\n\treturn val.([]uint), nil\n}\n\n// UintSliceVar defines a uintSlice flag with specified name, default value, and usage string.\n// The argument p points to a []uint variable in which to store the value of the flag.\nfunc (f *FlagSet) UintSliceVar(p *[]uint, name string, value []uint, usage string) {\n\tf.VarP(newUintSliceValue(value, p), name, \"\", usage)\n}\n\n// UintSliceVarP is like UintSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) {\n\tf.VarP(newUintSliceValue(value, p), name, shorthand, usage)\n}\n\n// UintSliceVar defines a uint[] flag with specified name, default value, and usage string.\n// The argument p points to a uint[] variable in which to store the value of the flag.\nfunc UintSliceVar(p *[]uint, name string, value []uint, usage string) {\n\tCommandLine.VarP(newUintSliceValue(value, p), name, \"\", usage)\n}\n\n// UintSliceVarP is like the UintSliceVar, but accepts a shorthand letter that can be used after a single dash.\nfunc UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) {\n\tCommandLine.VarP(newUintSliceValue(value, p), name, shorthand, usage)\n}\n\n// UintSlice defines a []uint flag with specified name, default value, and usage string.\n// The return value is the address of a []uint variable that stores the value of the flag.\nfunc (f *FlagSet) UintSlice(name string, value []uint, usage string) *[]uint {\n\tp := []uint{}\n\tf.UintSliceVarP(&p, name, \"\", value, usage)\n\treturn &p\n}\n\n// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc (f *FlagSet) UintSliceP(name, shorthand string, value []uint, usage string) *[]uint {\n\tp := []uint{}\n\tf.UintSliceVarP(&p, name, shorthand, value, usage)\n\treturn &p\n}\n\n// UintSlice defines a []uint flag with specified name, default value, and usage string.\n// The return value is the address of a []uint variable that stores the value of the flag.\nfunc UintSlice(name string, value []uint, usage string) *[]uint {\n\treturn CommandLine.UintSliceP(name, \"\", value, usage)\n}\n\n// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash.\nfunc UintSliceP(name, shorthand string, value []uint, usage string) *[]uint {\n\treturn CommandLine.UintSliceP(name, shorthand, value, usage)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.bench"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/.travis.yml",
    "content": "go_import_path: github.com/spf13/viper\n\nlanguage: go\ngo:\n  - 1.10.x\n  - 1.11.x\n  - tip\n\nos:\n  - linux\n  - osx\n\nmatrix:\n  allow_failures:\n    - go: tip\n  fast_finish: true\n\nscript:\n  - go install ./...\n  - diff -u <(echo -n) <(gofmt -d .)\n  - go test -v ./...\n\nafter_success:\n  - go get -u -d github.com/spf13/hugo\n  - cd $GOPATH/src/github.com/spf13/hugo && make && ./hugo -s docs && cd -\n\nsudo: false\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Steve Francia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/README.md",
    "content": "![viper logo](https://cloud.githubusercontent.com/assets/173412/10886745/998df88a-8151-11e5-9448-4736db51020d.png)\n\nGo configuration with fangs!\n\nMany Go projects are built using Viper including:\n\n* [Hugo](http://gohugo.io)\n* [EMC RexRay](http://rexray.readthedocs.org/en/stable/)\n* [Imgur’s Incus](https://github.com/Imgur/incus)\n* [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack)\n* [Docker Notary](https://github.com/docker/Notary)\n* [BloomApi](https://www.bloomapi.com/)\n* [doctl](https://github.com/digitalocean/doctl)\n* [Clairctl](https://github.com/jgsqware/clairctl)\n\n[![Build Status](https://travis-ci.org/spf13/viper.svg)](https://travis-ci.org/spf13/viper) [![Join the chat at https://gitter.im/spf13/viper](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/spf13/viper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![GoDoc](https://godoc.org/github.com/spf13/viper?status.svg)](https://godoc.org/github.com/spf13/viper)\n\n\n## What is Viper?\n\nViper is a complete configuration solution for Go applications including 12-Factor apps. It is designed\nto work within an application, and can handle all types of configuration needs\nand formats. It supports:\n\n* setting defaults\n* reading from JSON, TOML, YAML, HCL, and Java properties config files\n* live watching and re-reading of config files (optional)\n* reading from environment variables\n* reading from remote config systems (etcd or Consul), and watching changes\n* reading from command line flags\n* reading from buffer\n* setting explicit values\n\nViper can be thought of as a registry for all of your applications\nconfiguration needs.\n\n## Why Viper?\n\nWhen building a modern application, you don’t want to worry about\nconfiguration file formats; you want to focus on building awesome software.\nViper is here to help with that.\n\nViper does the following for you:\n\n1. Find, load, and unmarshal a configuration file in JSON, TOML, YAML, HCL, or Java properties formats.\n2. Provide a mechanism to set default values for your different\n   configuration options.\n3. Provide a mechanism to set override values for options specified through\n   command line flags.\n4. Provide an alias system to easily rename parameters without breaking existing\n   code.\n5. Make it easy to tell the difference between when a user has provided a\n   command line or config file which is the same as the default.\n\nViper uses the following precedence order. Each item takes precedence over the\nitem below it:\n\n * explicit call to Set\n * flag\n * env\n * config\n * key/value store\n * default\n\nViper configuration keys are case insensitive.\n\n## Putting Values into Viper\n\n### Establishing Defaults\n\nA good configuration system will support default values. A default value is not\nrequired for a key, but it’s useful in the event that a key hasn’t been set via\nconfig file, environment variable, remote configuration or flag.\n\nExamples:\n\n```go\nviper.SetDefault(\"ContentDir\", \"content\")\nviper.SetDefault(\"LayoutDir\", \"layouts\")\nviper.SetDefault(\"Taxonomies\", map[string]string{\"tag\": \"tags\", \"category\": \"categories\"})\n```\n\n### Reading Config Files\n\nViper requires minimal configuration so it knows where to look for config files.\nViper supports JSON, TOML, YAML, HCL, and Java Properties files. Viper can search multiple paths, but\ncurrently a single Viper instance only supports a single configuration file.\nViper does not default to any configuration search paths leaving defaults decision\nto an application.\n\nHere is an example of how to use Viper to search for and read a configuration file.\nNone of the specific paths are required, but at least one path should be provided\nwhere a configuration file is expected.\n\n```go\nviper.SetConfigName(\"config\") // name of config file (without extension)\nviper.AddConfigPath(\"/etc/appname/\")   // path to look for the config file in\nviper.AddConfigPath(\"$HOME/.appname\")  // call multiple times to add many search paths\nviper.AddConfigPath(\".\")               // optionally look for config in the working directory\nerr := viper.ReadInConfig() // Find and read the config file\nif err != nil { // Handle errors reading the config file\n\tpanic(fmt.Errorf(\"Fatal error config file: %s \\n\", err))\n}\n```\n\n### Watching and re-reading config files\n\nViper supports the ability to have your application live read a config file while running.\n\nGone are the days of needing to restart a server to have a config take effect,\nviper powered applications can read an update to a config file while running and\nnot miss a beat.\n\nSimply tell the viper instance to watchConfig.\nOptionally you can provide a function for Viper to run each time a change occurs.\n\n**Make sure you add all of the configPaths prior to calling `WatchConfig()`**\n\n```go\nviper.WatchConfig()\nviper.OnConfigChange(func(e fsnotify.Event) {\n\tfmt.Println(\"Config file changed:\", e.Name)\n})\n```\n\n### Reading Config from io.Reader\n\nViper predefines many configuration sources such as files, environment\nvariables, flags, and remote K/V store, but you are not bound to them. You can\nalso implement your own required configuration source and feed it to viper.\n\n```go\nviper.SetConfigType(\"yaml\") // or viper.SetConfigType(\"YAML\")\n\n// any approach to require this configuration into your program.\nvar yamlExample = []byte(`\nHacker: true\nname: steve\nhobbies:\n- skateboarding\n- snowboarding\n- go\nclothing:\n  jacket: leather\n  trousers: denim\nage: 35\neyes : brown\nbeard: true\n`)\n\nviper.ReadConfig(bytes.NewBuffer(yamlExample))\n\nviper.Get(\"name\") // this would be \"steve\"\n```\n\n### Setting Overrides\n\nThese could be from a command line flag, or from your own application logic.\n\n```go\nviper.Set(\"Verbose\", true)\nviper.Set(\"LogFile\", LogFile)\n```\n\n### Registering and Using Aliases\n\nAliases permit a single value to be referenced by multiple keys\n\n```go\nviper.RegisterAlias(\"loud\", \"Verbose\")\n\nviper.Set(\"verbose\", true) // same result as next line\nviper.Set(\"loud\", true)   // same result as prior line\n\nviper.GetBool(\"loud\") // true\nviper.GetBool(\"verbose\") // true\n```\n\n### Working with Environment Variables\n\nViper has full support for environment variables. This enables 12 factor\napplications out of the box. There are four methods that exist to aid working\nwith ENV:\n\n * `AutomaticEnv()`\n * `BindEnv(string...) : error`\n * `SetEnvPrefix(string)`\n * `SetEnvKeyReplacer(string...) *strings.Replacer`\n\n_When working with ENV variables, it’s important to recognize that Viper\ntreats ENV variables as case sensitive._\n\nViper provides a mechanism to try to ensure that ENV variables are unique. By\nusing `SetEnvPrefix`, you can tell Viper to use a prefix while reading from\nthe environment variables. Both `BindEnv` and `AutomaticEnv` will use this\nprefix.\n\n`BindEnv` takes one or two parameters. The first parameter is the key name, the\nsecond is the name of the environment variable. The name of the environment\nvariable is case sensitive. If the ENV variable name is not provided, then\nViper will automatically assume that the key name matches the ENV variable name,\nbut the ENV variable is IN ALL CAPS. When you explicitly provide the ENV\nvariable name, it **does not** automatically add the prefix.\n\nOne important thing to recognize when working with ENV variables is that the\nvalue will be read each time it is accessed. Viper does not fix the value when\nthe `BindEnv` is called.\n\n`AutomaticEnv` is a powerful helper especially when combined with\n`SetEnvPrefix`. When called, Viper will check for an environment variable any\ntime a `viper.Get` request is made. It will apply the following rules. It will\ncheck for a environment variable with a name matching the key uppercased and\nprefixed with the `EnvPrefix` if set.\n\n`SetEnvKeyReplacer` allows you to use a `strings.Replacer` object to rewrite Env\nkeys to an extent. This is useful if you want to use `-` or something in your\n`Get()` calls, but want your environmental variables to use `_` delimiters. An\nexample of using it can be found in `viper_test.go`.\n\n#### Env example\n\n```go\nSetEnvPrefix(\"spf\") // will be uppercased automatically\nBindEnv(\"id\")\n\nos.Setenv(\"SPF_ID\", \"13\") // typically done outside of the app\n\nid := Get(\"id\") // 13\n```\n\n### Working with Flags\n\nViper has the ability to bind to flags. Specifically, Viper supports `Pflags`\nas used in the [Cobra](https://github.com/spf13/cobra) library.\n\nLike `BindEnv`, the value is not set when the binding method is called, but when\nit is accessed. This means you can bind as early as you want, even in an\n`init()` function.\n\nFor individual flags, the `BindPFlag()` method provides this functionality.\n\nExample:\n\n```go\nserverCmd.Flags().Int(\"port\", 1138, \"Port to run Application server on\")\nviper.BindPFlag(\"port\", serverCmd.Flags().Lookup(\"port\"))\n```\n\nYou can also bind an existing set of pflags (pflag.FlagSet):\n\nExample:\n\n```go\npflag.Int(\"flagname\", 1234, \"help message for flagname\")\n\npflag.Parse()\nviper.BindPFlags(pflag.CommandLine)\n\ni := viper.GetInt(\"flagname\") // retrieve values from viper instead of pflag\n```\n\nThe use of [pflag](https://github.com/spf13/pflag/) in Viper does not preclude\nthe use of other packages that use the [flag](https://golang.org/pkg/flag/)\npackage from the standard library. The pflag package can handle the flags\ndefined for the flag package by importing these flags. This is accomplished\nby a calling a convenience function provided by the pflag package called\nAddGoFlagSet().\n\nExample:\n\n```go\npackage main\n\nimport (\n\t\"flag\"\n\t\"github.com/spf13/pflag\"\n)\n\nfunc main() {\n\n\t// using standard library \"flag\" package\n\tflag.Int(\"flagname\", 1234, \"help message for flagname\")\n\n\tpflag.CommandLine.AddGoFlagSet(flag.CommandLine)\n\tpflag.Parse()\n\tviper.BindPFlags(pflag.CommandLine)\n\n\ti := viper.GetInt(\"flagname\") // retrieve value from viper\n\n\t...\n}\n```\n\n#### Flag interfaces\n\nViper provides two Go interfaces to bind other flag systems if you don’t use `Pflags`.\n\n`FlagValue` represents a single flag. This is a very simple example on how to implement this interface:\n\n```go\ntype myFlag struct {}\nfunc (f myFlag) HasChanged() bool { return false }\nfunc (f myFlag) Name() string { return \"my-flag-name\" }\nfunc (f myFlag) ValueString() string { return \"my-flag-value\" }\nfunc (f myFlag) ValueType() string { return \"string\" }\n```\n\nOnce your flag implements this interface, you can simply tell Viper to bind it:\n\n```go\nviper.BindFlagValue(\"my-flag-name\", myFlag{})\n```\n\n`FlagValueSet` represents a group of flags. This is a very simple example on how to implement this interface:\n\n```go\ntype myFlagSet struct {\n\tflags []myFlag\n}\n\nfunc (f myFlagSet) VisitAll(fn func(FlagValue)) {\n\tfor _, flag := range flags {\n\t\tfn(flag)\n\t}\n}\n```\n\nOnce your flag set implements this interface, you can simply tell Viper to bind it:\n\n```go\nfSet := myFlagSet{\n\tflags: []myFlag{myFlag{}, myFlag{}},\n}\nviper.BindFlagValues(\"my-flags\", fSet)\n```\n\n### Remote Key/Value Store Support\n\nTo enable remote support in Viper, do a blank import of the `viper/remote`\npackage:\n\n`import _ \"github.com/spf13/viper/remote\"`\n\nViper will read a config string (as JSON, TOML, YAML or HCL) retrieved from a path\nin a Key/Value store such as etcd or Consul.  These values take precedence over\ndefault values, but are overridden by configuration values retrieved from disk,\nflags, or environment variables.\n\nViper uses [crypt](https://github.com/xordataexchange/crypt) to retrieve\nconfiguration from the K/V store, which means that you can store your\nconfiguration values encrypted and have them automatically decrypted if you have\nthe correct gpg keyring.  Encryption is optional.\n\nYou can use remote configuration in conjunction with local configuration, or\nindependently of it.\n\n`crypt` has a command-line helper that you can use to put configurations in your\nK/V store. `crypt` defaults to etcd on http://127.0.0.1:4001.\n\n```bash\n$ go get github.com/xordataexchange/crypt/bin/crypt\n$ crypt set -plaintext /config/hugo.json /Users/hugo/settings/config.json\n```\n\nConfirm that your value was set:\n\n```bash\n$ crypt get -plaintext /config/hugo.json\n```\n\nSee the `crypt` documentation for examples of how to set encrypted values, or\nhow to use Consul.\n\n### Remote Key/Value Store Example - Unencrypted\n\n#### etcd\n```go\nviper.AddRemoteProvider(\"etcd\", \"http://127.0.0.1:4001\",\"/config/hugo.json\")\nviper.SetConfigType(\"json\") // because there is no file extension in a stream of bytes, supported extensions are \"json\", \"toml\", \"yaml\", \"yml\", \"properties\", \"props\", \"prop\"\nerr := viper.ReadRemoteConfig()\n```\n\n#### Consul\nYou need to set a key to Consul key/value storage with JSON value containing your desired config.  \nFor example, create a Consul key/value store key `MY_CONSUL_KEY` with value:\n\n```json\n{\n    \"port\": 8080,\n    \"hostname\": \"myhostname.com\"\n}\n```\n\n```go\nviper.AddRemoteProvider(\"consul\", \"localhost:8500\", \"MY_CONSUL_KEY\")\nviper.SetConfigType(\"json\") // Need to explicitly set this to json\nerr := viper.ReadRemoteConfig()\n\nfmt.Println(viper.Get(\"port\")) // 8080\nfmt.Println(viper.Get(\"hostname\")) // myhostname.com\n```\n\n### Remote Key/Value Store Example - Encrypted\n\n```go\nviper.AddSecureRemoteProvider(\"etcd\",\"http://127.0.0.1:4001\",\"/config/hugo.json\",\"/etc/secrets/mykeyring.gpg\")\nviper.SetConfigType(\"json\") // because there is no file extension in a stream of bytes,  supported extensions are \"json\", \"toml\", \"yaml\", \"yml\", \"properties\", \"props\", \"prop\"\nerr := viper.ReadRemoteConfig()\n```\n\n### Watching Changes in etcd - Unencrypted\n\n```go\n// alternatively, you can create a new viper instance.\nvar runtime_viper = viper.New()\n\nruntime_viper.AddRemoteProvider(\"etcd\", \"http://127.0.0.1:4001\", \"/config/hugo.yml\")\nruntime_viper.SetConfigType(\"yaml\") // because there is no file extension in a stream of bytes, supported extensions are \"json\", \"toml\", \"yaml\", \"yml\", \"properties\", \"props\", \"prop\"\n\n// read from remote config the first time.\nerr := runtime_viper.ReadRemoteConfig()\n\n// unmarshal config\nruntime_viper.Unmarshal(&runtime_conf)\n\n// open a goroutine to watch remote changes forever\ngo func(){\n\tfor {\n\t    time.Sleep(time.Second * 5) // delay after each request\n\n\t    // currently, only tested with etcd support\n\t    err := runtime_viper.WatchRemoteConfig()\n\t    if err != nil {\n\t        log.Errorf(\"unable to read remote config: %v\", err)\n\t        continue\n\t    }\n\n\t    // unmarshal new config into our runtime config struct. you can also use channel\n\t    // to implement a signal to notify the system of the changes\n\t    runtime_viper.Unmarshal(&runtime_conf)\n\t}\n}()\n```\n\n## Getting Values From Viper\n\nIn Viper, there are a few ways to get a value depending on the value’s type.\nThe following functions and methods exist:\n\n * `Get(key string) : interface{}`\n * `GetBool(key string) : bool`\n * `GetFloat64(key string) : float64`\n * `GetInt(key string) : int`\n * `GetString(key string) : string`\n * `GetStringMap(key string) : map[string]interface{}`\n * `GetStringMapString(key string) : map[string]string`\n * `GetStringSlice(key string) : []string`\n * `GetTime(key string) : time.Time`\n * `GetDuration(key string) : time.Duration`\n * `IsSet(key string) : bool`\n * `AllSettings() : map[string]interface{}`\n\nOne important thing to recognize is that each Get function will return a zero\nvalue if it’s not found. To check if a given key exists, the `IsSet()` method\nhas been provided.\n\nExample:\n```go\nviper.GetString(\"logfile\") // case-insensitive Setting & Getting\nif viper.GetBool(\"verbose\") {\n    fmt.Println(\"verbose enabled\")\n}\n```\n### Accessing nested keys\n\nThe accessor methods also accept formatted paths to deeply nested keys. For\nexample, if the following JSON file is loaded:\n\n```json\n{\n    \"host\": {\n        \"address\": \"localhost\",\n        \"port\": 5799\n    },\n    \"datastore\": {\n        \"metric\": {\n            \"host\": \"127.0.0.1\",\n            \"port\": 3099\n        },\n        \"warehouse\": {\n            \"host\": \"198.0.0.1\",\n            \"port\": 2112\n        }\n    }\n}\n\n```\n\nViper can access a nested field by passing a `.` delimited path of keys:\n\n```go\nGetString(\"datastore.metric.host\") // (returns \"127.0.0.1\")\n```\n\nThis obeys the precedence rules established above; the search for the path\nwill cascade through the remaining configuration registries until found.\n\nFor example, given this configuration file, both `datastore.metric.host` and\n`datastore.metric.port` are already defined (and may be overridden). If in addition\n`datastore.metric.protocol` was defined in the defaults, Viper would also find it.\n\nHowever, if `datastore.metric` was overridden (by a flag, an environment variable,\nthe `Set()` method, …) with an immediate value, then all sub-keys of\n`datastore.metric` become undefined, they are “shadowed” by the higher-priority\nconfiguration level.\n\nLastly, if there exists a key that matches the delimited key path, its value\nwill be returned instead. E.g.\n\n```json\n{\n    \"datastore.metric.host\": \"0.0.0.0\",\n    \"host\": {\n        \"address\": \"localhost\",\n        \"port\": 5799\n    },\n    \"datastore\": {\n        \"metric\": {\n            \"host\": \"127.0.0.1\",\n            \"port\": 3099\n        },\n        \"warehouse\": {\n            \"host\": \"198.0.0.1\",\n            \"port\": 2112\n        }\n    }\n}\n\nGetString(\"datastore.metric.host\") // returns \"0.0.0.0\"\n```\n\n### Extract sub-tree\n\nExtract sub-tree from Viper.\n\nFor example, `viper` represents:\n\n```json\napp:\n  cache1:\n    max-items: 100\n    item-size: 64\n  cache2:\n    max-items: 200\n    item-size: 80\n```\n\nAfter executing:\n\n```go\nsubv := viper.Sub(\"app.cache1\")\n```\n\n`subv` represents:\n\n```json\nmax-items: 100\nitem-size: 64\n```\n\nSuppose we have:\n\n```go\nfunc NewCache(cfg *Viper) *Cache {...}\n```\n\nwhich creates a cache based on config information formatted as `subv`.\nNow it’s easy to create these 2 caches separately as:\n\n```go\ncfg1 := viper.Sub(\"app.cache1\")\ncache1 := NewCache(cfg1)\n\ncfg2 := viper.Sub(\"app.cache2\")\ncache2 := NewCache(cfg2)\n```\n\n### Unmarshaling\n\nYou also have the option of Unmarshaling all or a specific value to a struct, map,\netc.\n\nThere are two methods to do this:\n\n * `Unmarshal(rawVal interface{}) : error`\n * `UnmarshalKey(key string, rawVal interface{}) : error`\n\nExample:\n\n```go\ntype config struct {\n\tPort int\n\tName string\n\tPathMap string `mapstructure:\"path_map\"`\n}\n\nvar C config\n\nerr := Unmarshal(&C)\nif err != nil {\n\tt.Fatalf(\"unable to decode into struct, %v\", err)\n}\n```\n\n### Marshalling to string\n\nYou may need to marhsal all the settings held in viper into a string rather than write them to a file. \nYou can use your favorite format's marshaller with the config returned by `AllSettings()`.\n\n```go\nimport (\n    yaml \"gopkg.in/yaml.v2\"\n    // ...\n) \n\nfunc yamlStringSettings() string {\n    c := viper.AllSettings()\n\tbs, err := yaml.Marshal(c)\n\tif err != nil {\n        t.Fatalf(\"unable to marshal config to YAML: %v\", err)\n    }\n\treturn string(bs)\n}\n```\n\n## Viper or Vipers?\n\nViper comes ready to use out of the box. There is no configuration or\ninitialization needed to begin using Viper. Since most applications will want\nto use a single central repository for their configuration, the viper package\nprovides this. It is similar to a singleton.\n\nIn all of the examples above, they demonstrate using viper in its singleton\nstyle approach.\n\n### Working with multiple vipers\n\nYou can also create many different vipers for use in your application. Each will\nhave its own unique set of configurations and values. Each can read from a\ndifferent config file, key value store, etc. All of the functions that viper\npackage supports are mirrored as methods on a viper.\n\nExample:\n\n```go\nx := viper.New()\ny := viper.New()\n\nx.SetDefault(\"ContentDir\", \"content\")\ny.SetDefault(\"ContentDir\", \"foobar\")\n\n//...\n```\n\nWhen working with multiple vipers, it is up to the user to keep track of the\ndifferent vipers.\n\n## Q & A\n\nQ: Why not INI files?\n\nA: Ini files are pretty awful. There’s no standard format, and they are hard to\nvalidate. Viper is designed to work with JSON, TOML or YAML files. If someone\nreally wants to add this feature, I’d be happy to merge it. It’s easy to specify\nwhich formats your application will permit.\n\nQ: Why is it called “Viper”?\n\nA: Viper is designed to be a [companion](http://en.wikipedia.org/wiki/Viper_(G.I._Joe))\nto [Cobra](https://github.com/spf13/cobra). While both can operate completely\nindependently, together they make a powerful pair to handle much of your\napplication foundation needs.\n\nQ: Why is it called “Cobra”?\n\nA: Is there a better name for a [commander](http://en.wikipedia.org/wiki/Cobra_Commander)?\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/flags.go",
    "content": "package viper\n\nimport \"github.com/spf13/pflag\"\n\n// FlagValueSet is an interface that users can implement\n// to bind a set of flags to viper.\ntype FlagValueSet interface {\n\tVisitAll(fn func(FlagValue))\n}\n\n// FlagValue is an interface that users can implement\n// to bind different flags to viper.\ntype FlagValue interface {\n\tHasChanged() bool\n\tName() string\n\tValueString() string\n\tValueType() string\n}\n\n// pflagValueSet is a wrapper around *pflag.ValueSet\n// that implements FlagValueSet.\ntype pflagValueSet struct {\n\tflags *pflag.FlagSet\n}\n\n// VisitAll iterates over all *pflag.Flag inside the *pflag.FlagSet.\nfunc (p pflagValueSet) VisitAll(fn func(flag FlagValue)) {\n\tp.flags.VisitAll(func(flag *pflag.Flag) {\n\t\tfn(pflagValue{flag})\n\t})\n}\n\n// pflagValue is a wrapper aroung *pflag.flag\n// that implements FlagValue\ntype pflagValue struct {\n\tflag *pflag.Flag\n}\n\n// HasChanges returns whether the flag has changes or not.\nfunc (p pflagValue) HasChanged() bool {\n\treturn p.flag.Changed\n}\n\n// Name returns the name of the flag.\nfunc (p pflagValue) Name() string {\n\treturn p.flag.Name\n}\n\n// ValueString returns the value of the flag as a string.\nfunc (p pflagValue) ValueString() string {\n\treturn p.flag.Value.String()\n}\n\n// ValueType returns the type of the flag as a string.\nfunc (p pflagValue) ValueType() string {\n\treturn p.flag.Value.Type()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/go.mod",
    "content": "module github.com/spf13/viper\n\nrequire (\n\tgithub.com/fsnotify/fsnotify v1.4.7\n\tgithub.com/hashicorp/hcl v1.0.0\n\tgithub.com/magiconair/properties v1.8.0\n\tgithub.com/mitchellh/mapstructure v1.0.0\n\tgithub.com/pelletier/go-toml v1.2.0\n\tgithub.com/spf13/afero v1.1.2\n\tgithub.com/spf13/cast v1.2.0\n\tgithub.com/spf13/jwalterweatherman v1.0.0\n\tgithub.com/spf13/pflag v1.0.2\n\tgolang.org/x/sys v0.0.0-20180906133057-8cf3aee42992 // indirect\n\tgolang.org/x/text v0.3.0 // indirect\n\tgopkg.in/yaml.v2 v2.2.1\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/go.sum",
    "content": "github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=\ngithub.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=\ngithub.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=\ngithub.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=\ngithub.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=\ngithub.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=\ngithub.com/mitchellh/mapstructure v1.0.0 h1:vVpGvMXJPqSDh2VYHF7gsfQj8Ncx+Xw5Y1KHeTRY+7I=\ngithub.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=\ngithub.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=\ngithub.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=\ngithub.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=\ngithub.com/spf13/cast v1.2.0 h1:HHl1DSRbEQN2i8tJmtS6ViPyHx35+p51amrdsiTCrkg=\ngithub.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=\ngithub.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=\ngithub.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=\ngithub.com/spf13/pflag v1.0.2 h1:Fy0orTDgHdbnzHcsOgfCN4LtHf0ec3wwtiwJqwvf3Gc=\ngithub.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=\ngolang.org/x/sys v0.0.0-20180906133057-8cf3aee42992 h1:BH3eQWeGbwRU2+wxxuuPOdFBmaiBH81O8BugSjHeTFg=\ngolang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=\ngopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/util.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\n// Viper is a application configuration system.\n// It believes that applications can be configured a variety of ways\n// via flags, ENVIRONMENT variables, configuration files retrieved\n// from the file system, or a remote key/value store.\n\npackage viper\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/spf13/afero\"\n\t\"github.com/spf13/cast\"\n\tjww \"github.com/spf13/jwalterweatherman\"\n)\n\n// ConfigParseError denotes failing to parse configuration file.\ntype ConfigParseError struct {\n\terr error\n}\n\n// Error returns the formatted configuration error.\nfunc (pe ConfigParseError) Error() string {\n\treturn fmt.Sprintf(\"While parsing config: %s\", pe.err.Error())\n}\n\n// toCaseInsensitiveValue checks if the value is a  map;\n// if so, create a copy and lower-case the keys recursively.\nfunc toCaseInsensitiveValue(value interface{}) interface{} {\n\tswitch v := value.(type) {\n\tcase map[interface{}]interface{}:\n\t\tvalue = copyAndInsensitiviseMap(cast.ToStringMap(v))\n\tcase map[string]interface{}:\n\t\tvalue = copyAndInsensitiviseMap(v)\n\t}\n\n\treturn value\n}\n\n// copyAndInsensitiviseMap behaves like insensitiviseMap, but creates a copy of\n// any map it makes case insensitive.\nfunc copyAndInsensitiviseMap(m map[string]interface{}) map[string]interface{} {\n\tnm := make(map[string]interface{})\n\n\tfor key, val := range m {\n\t\tlkey := strings.ToLower(key)\n\t\tswitch v := val.(type) {\n\t\tcase map[interface{}]interface{}:\n\t\t\tnm[lkey] = copyAndInsensitiviseMap(cast.ToStringMap(v))\n\t\tcase map[string]interface{}:\n\t\t\tnm[lkey] = copyAndInsensitiviseMap(v)\n\t\tdefault:\n\t\t\tnm[lkey] = v\n\t\t}\n\t}\n\n\treturn nm\n}\n\nfunc insensitiviseMap(m map[string]interface{}) {\n\tfor key, val := range m {\n\t\tswitch val.(type) {\n\t\tcase map[interface{}]interface{}:\n\t\t\t// nested map: cast and recursively insensitivise\n\t\t\tval = cast.ToStringMap(val)\n\t\t\tinsensitiviseMap(val.(map[string]interface{}))\n\t\tcase map[string]interface{}:\n\t\t\t// nested map: recursively insensitivise\n\t\t\tinsensitiviseMap(val.(map[string]interface{}))\n\t\t}\n\n\t\tlower := strings.ToLower(key)\n\t\tif key != lower {\n\t\t\t// remove old key (not lower-cased)\n\t\t\tdelete(m, key)\n\t\t}\n\t\t// update map\n\t\tm[lower] = val\n\t}\n}\n\nfunc absPathify(inPath string) string {\n\tjww.INFO.Println(\"Trying to resolve absolute path to\", inPath)\n\n\tif strings.HasPrefix(inPath, \"$HOME\") {\n\t\tinPath = userHomeDir() + inPath[5:]\n\t}\n\n\tif strings.HasPrefix(inPath, \"$\") {\n\t\tend := strings.Index(inPath, string(os.PathSeparator))\n\t\tinPath = os.Getenv(inPath[1:end]) + inPath[end:]\n\t}\n\n\tif filepath.IsAbs(inPath) {\n\t\treturn filepath.Clean(inPath)\n\t}\n\n\tp, err := filepath.Abs(inPath)\n\tif err == nil {\n\t\treturn filepath.Clean(p)\n\t}\n\n\tjww.ERROR.Println(\"Couldn't discover absolute path\")\n\tjww.ERROR.Println(err)\n\treturn \"\"\n}\n\n// Check if File / Directory Exists\nfunc exists(fs afero.Fs, path string) (bool, error) {\n\t_, err := fs.Stat(path)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc stringInSlice(a string, list []string) bool {\n\tfor _, b := range list {\n\t\tif b == a {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc userHomeDir() string {\n\tif runtime.GOOS == \"windows\" {\n\t\thome := os.Getenv(\"HOMEDRIVE\") + os.Getenv(\"HOMEPATH\")\n\t\tif home == \"\" {\n\t\t\thome = os.Getenv(\"USERPROFILE\")\n\t\t}\n\t\treturn home\n\t}\n\treturn os.Getenv(\"HOME\")\n}\n\nfunc safeMul(a, b uint) uint {\n\tc := a * b\n\tif a > 1 && b > 1 && c/b != a {\n\t\treturn 0\n\t}\n\treturn c\n}\n\n// parseSizeInBytes converts strings like 1GB or 12 mb into an unsigned integer number of bytes\nfunc parseSizeInBytes(sizeStr string) uint {\n\tsizeStr = strings.TrimSpace(sizeStr)\n\tlastChar := len(sizeStr) - 1\n\tmultiplier := uint(1)\n\n\tif lastChar > 0 {\n\t\tif sizeStr[lastChar] == 'b' || sizeStr[lastChar] == 'B' {\n\t\t\tif lastChar > 1 {\n\t\t\t\tswitch unicode.ToLower(rune(sizeStr[lastChar-1])) {\n\t\t\t\tcase 'k':\n\t\t\t\t\tmultiplier = 1 << 10\n\t\t\t\t\tsizeStr = strings.TrimSpace(sizeStr[:lastChar-1])\n\t\t\t\tcase 'm':\n\t\t\t\t\tmultiplier = 1 << 20\n\t\t\t\t\tsizeStr = strings.TrimSpace(sizeStr[:lastChar-1])\n\t\t\t\tcase 'g':\n\t\t\t\t\tmultiplier = 1 << 30\n\t\t\t\t\tsizeStr = strings.TrimSpace(sizeStr[:lastChar-1])\n\t\t\t\tdefault:\n\t\t\t\t\tmultiplier = 1\n\t\t\t\t\tsizeStr = strings.TrimSpace(sizeStr[:lastChar])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsize := cast.ToInt(sizeStr)\n\tif size < 0 {\n\t\tsize = 0\n\t}\n\n\treturn safeMul(uint(size), multiplier)\n}\n\n// deepSearch scans deep maps, following the key indexes listed in the\n// sequence \"path\".\n// The last value is expected to be another map, and is returned.\n//\n// In case intermediate keys do not exist, or map to a non-map value,\n// a new map is created and inserted, and the search continues from there:\n// the initial map \"m\" may be modified!\nfunc deepSearch(m map[string]interface{}, path []string) map[string]interface{} {\n\tfor _, k := range path {\n\t\tm2, ok := m[k]\n\t\tif !ok {\n\t\t\t// intermediate key does not exist\n\t\t\t// => create it and continue from there\n\t\t\tm3 := make(map[string]interface{})\n\t\t\tm[k] = m3\n\t\t\tm = m3\n\t\t\tcontinue\n\t\t}\n\t\tm3, ok := m2.(map[string]interface{})\n\t\tif !ok {\n\t\t\t// intermediate key is a value\n\t\t\t// => replace with a new map\n\t\t\tm3 = make(map[string]interface{})\n\t\t\tm[k] = m3\n\t\t}\n\t\t// continue search from here\n\t\tm = m3\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/spf13/viper/viper.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Use of this source code is governed by an MIT-style\n// license that can be found in the LICENSE file.\n\n// Viper is a application configuration system.\n// It believes that applications can be configured a variety of ways\n// via flags, ENVIRONMENT variables, configuration files retrieved\n// from the file system, or a remote key/value store.\n\n// Each item takes precedence over the item below it:\n\n// overrides\n// flag\n// env\n// config\n// key/value store\n// default\n\npackage viper\n\nimport (\n\t\"bytes\"\n\t\"encoding/csv\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\tyaml \"gopkg.in/yaml.v2\"\n\n\t\"github.com/fsnotify/fsnotify\"\n\t\"github.com/hashicorp/hcl\"\n\t\"github.com/hashicorp/hcl/hcl/printer\"\n\t\"github.com/magiconair/properties\"\n\t\"github.com/mitchellh/mapstructure\"\n\ttoml \"github.com/pelletier/go-toml\"\n\t\"github.com/spf13/afero\"\n\t\"github.com/spf13/cast\"\n\tjww \"github.com/spf13/jwalterweatherman\"\n\t\"github.com/spf13/pflag\"\n)\n\n// ConfigMarshalError happens when failing to marshal the configuration.\ntype ConfigMarshalError struct {\n\terr error\n}\n\n// Error returns the formatted configuration error.\nfunc (e ConfigMarshalError) Error() string {\n\treturn fmt.Sprintf(\"While marshaling config: %s\", e.err.Error())\n}\n\nvar v *Viper\n\ntype RemoteResponse struct {\n\tValue []byte\n\tError error\n}\n\nfunc init() {\n\tv = New()\n}\n\ntype remoteConfigFactory interface {\n\tGet(rp RemoteProvider) (io.Reader, error)\n\tWatch(rp RemoteProvider) (io.Reader, error)\n\tWatchChannel(rp RemoteProvider) (<-chan *RemoteResponse, chan bool)\n}\n\n// RemoteConfig is optional, see the remote package\nvar RemoteConfig remoteConfigFactory\n\n// UnsupportedConfigError denotes encountering an unsupported\n// configuration filetype.\ntype UnsupportedConfigError string\n\n// Error returns the formatted configuration error.\nfunc (str UnsupportedConfigError) Error() string {\n\treturn fmt.Sprintf(\"Unsupported Config Type %q\", string(str))\n}\n\n// UnsupportedRemoteProviderError denotes encountering an unsupported remote\n// provider. Currently only etcd and Consul are supported.\ntype UnsupportedRemoteProviderError string\n\n// Error returns the formatted remote provider error.\nfunc (str UnsupportedRemoteProviderError) Error() string {\n\treturn fmt.Sprintf(\"Unsupported Remote Provider Type %q\", string(str))\n}\n\n// RemoteConfigError denotes encountering an error while trying to\n// pull the configuration from the remote provider.\ntype RemoteConfigError string\n\n// Error returns the formatted remote provider error\nfunc (rce RemoteConfigError) Error() string {\n\treturn fmt.Sprintf(\"Remote Configurations Error: %s\", string(rce))\n}\n\n// ConfigFileNotFoundError denotes failing to find configuration file.\ntype ConfigFileNotFoundError struct {\n\tname, locations string\n}\n\n// Error returns the formatted configuration error.\nfunc (fnfe ConfigFileNotFoundError) Error() string {\n\treturn fmt.Sprintf(\"Config File %q Not Found in %q\", fnfe.name, fnfe.locations)\n}\n\n// A DecoderConfigOption can be passed to viper.Unmarshal to configure\n// mapstructure.DecoderConfig options\ntype DecoderConfigOption func(*mapstructure.DecoderConfig)\n\n// DecodeHook returns a DecoderConfigOption which overrides the default\n// DecoderConfig.DecodeHook value, the default is:\n//\n//  mapstructure.ComposeDecodeHookFunc(\n//\t\tmapstructure.StringToTimeDurationHookFunc(),\n//\t\tmapstructure.StringToSliceHookFunc(\",\"),\n//\t)\nfunc DecodeHook(hook mapstructure.DecodeHookFunc) DecoderConfigOption {\n\treturn func(c *mapstructure.DecoderConfig) {\n\t\tc.DecodeHook = hook\n\t}\n}\n\n// Viper is a prioritized configuration registry. It\n// maintains a set of configuration sources, fetches\n// values to populate those, and provides them according\n// to the source's priority.\n// The priority of the sources is the following:\n// 1. overrides\n// 2. flags\n// 3. env. variables\n// 4. config file\n// 5. key/value store\n// 6. defaults\n//\n// For example, if values from the following sources were loaded:\n//\n//  Defaults : {\n//  \t\"secret\": \"\",\n//  \t\"user\": \"default\",\n//  \t\"endpoint\": \"https://localhost\"\n//  }\n//  Config : {\n//  \t\"user\": \"root\"\n//  \t\"secret\": \"defaultsecret\"\n//  }\n//  Env : {\n//  \t\"secret\": \"somesecretkey\"\n//  }\n//\n// The resulting config will have the following values:\n//\n//\t{\n//\t\t\"secret\": \"somesecretkey\",\n//\t\t\"user\": \"root\",\n//\t\t\"endpoint\": \"https://localhost\"\n//\t}\ntype Viper struct {\n\t// Delimiter that separates a list of keys\n\t// used to access a nested value in one go\n\tkeyDelim string\n\n\t// A set of paths to look for the config file in\n\tconfigPaths []string\n\n\t// The filesystem to read config from.\n\tfs afero.Fs\n\n\t// A set of remote providers to search for the configuration\n\tremoteProviders []*defaultRemoteProvider\n\n\t// Name of file to look for inside the path\n\tconfigName string\n\tconfigFile string\n\tconfigType string\n\tenvPrefix  string\n\n\tautomaticEnvApplied bool\n\tenvKeyReplacer      *strings.Replacer\n\n\tconfig         map[string]interface{}\n\toverride       map[string]interface{}\n\tdefaults       map[string]interface{}\n\tkvstore        map[string]interface{}\n\tpflags         map[string]FlagValue\n\tenv            map[string]string\n\taliases        map[string]string\n\ttypeByDefValue bool\n\n\t// Store read properties on the object so that we can write back in order with comments.\n\t// This will only be used if the configuration read is a properties file.\n\tproperties *properties.Properties\n\n\tonConfigChange func(fsnotify.Event)\n}\n\n// New returns an initialized Viper instance.\nfunc New() *Viper {\n\tv := new(Viper)\n\tv.keyDelim = \".\"\n\tv.configName = \"config\"\n\tv.fs = afero.NewOsFs()\n\tv.config = make(map[string]interface{})\n\tv.override = make(map[string]interface{})\n\tv.defaults = make(map[string]interface{})\n\tv.kvstore = make(map[string]interface{})\n\tv.pflags = make(map[string]FlagValue)\n\tv.env = make(map[string]string)\n\tv.aliases = make(map[string]string)\n\tv.typeByDefValue = false\n\n\treturn v\n}\n\n// Intended for testing, will reset all to default settings.\n// In the public interface for the viper package so applications\n// can use it in their testing as well.\nfunc Reset() {\n\tv = New()\n\tSupportedExts = []string{\"json\", \"toml\", \"yaml\", \"yml\", \"properties\", \"props\", \"prop\", \"hcl\"}\n\tSupportedRemoteProviders = []string{\"etcd\", \"consul\"}\n}\n\ntype defaultRemoteProvider struct {\n\tprovider      string\n\tendpoint      string\n\tpath          string\n\tsecretKeyring string\n}\n\nfunc (rp defaultRemoteProvider) Provider() string {\n\treturn rp.provider\n}\n\nfunc (rp defaultRemoteProvider) Endpoint() string {\n\treturn rp.endpoint\n}\n\nfunc (rp defaultRemoteProvider) Path() string {\n\treturn rp.path\n}\n\nfunc (rp defaultRemoteProvider) SecretKeyring() string {\n\treturn rp.secretKeyring\n}\n\n// RemoteProvider stores the configuration necessary\n// to connect to a remote key/value store.\n// Optional secretKeyring to unencrypt encrypted values\n// can be provided.\ntype RemoteProvider interface {\n\tProvider() string\n\tEndpoint() string\n\tPath() string\n\tSecretKeyring() string\n}\n\n// SupportedExts are universally supported extensions.\nvar SupportedExts = []string{\"json\", \"toml\", \"yaml\", \"yml\", \"properties\", \"props\", \"prop\", \"hcl\"}\n\n// SupportedRemoteProviders are universally supported remote providers.\nvar SupportedRemoteProviders = []string{\"etcd\", \"consul\"}\n\nfunc OnConfigChange(run func(in fsnotify.Event)) { v.OnConfigChange(run) }\nfunc (v *Viper) OnConfigChange(run func(in fsnotify.Event)) {\n\tv.onConfigChange = run\n}\n\nfunc WatchConfig() { v.WatchConfig() }\nfunc (v *Viper) WatchConfig() {\n\tgo func() {\n\t\twatcher, err := fsnotify.NewWatcher()\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tdefer watcher.Close()\n\n\t\t// we have to watch the entire directory to pick up renames/atomic saves in a cross-platform way\n\t\tfilename, err := v.getConfigFile()\n\t\tif err != nil {\n\t\t\tlog.Println(\"error:\", err)\n\t\t\treturn\n\t\t}\n\n\t\tconfigFile := filepath.Clean(filename)\n\t\tconfigDir, _ := filepath.Split(configFile)\n\n\t\tdone := make(chan bool)\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tselect {\n\t\t\t\tcase event := <-watcher.Events:\n\t\t\t\t\t// we only care about the config file\n\t\t\t\t\tif filepath.Clean(event.Name) == configFile {\n\t\t\t\t\t\tif event.Op&fsnotify.Write == fsnotify.Write || event.Op&fsnotify.Create == fsnotify.Create {\n\t\t\t\t\t\t\terr := v.ReadInConfig()\n\t\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\t\tlog.Println(\"error:\", err)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif v.onConfigChange != nil {\n\t\t\t\t\t\t\t\tv.onConfigChange(event)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase err := <-watcher.Errors:\n\t\t\t\t\tlog.Println(\"error:\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\n\t\twatcher.Add(configDir)\n\t\t<-done\n\t}()\n}\n\n// SetConfigFile explicitly defines the path, name and extension of the config file.\n// Viper will use this and not check any of the config paths.\nfunc SetConfigFile(in string) { v.SetConfigFile(in) }\nfunc (v *Viper) SetConfigFile(in string) {\n\tif in != \"\" {\n\t\tv.configFile = in\n\t}\n}\n\n// SetEnvPrefix defines a prefix that ENVIRONMENT variables will use.\n// E.g. if your prefix is \"spf\", the env registry will look for env\n// variables that start with \"SPF_\".\nfunc SetEnvPrefix(in string) { v.SetEnvPrefix(in) }\nfunc (v *Viper) SetEnvPrefix(in string) {\n\tif in != \"\" {\n\t\tv.envPrefix = in\n\t}\n}\n\nfunc (v *Viper) mergeWithEnvPrefix(in string) string {\n\tif v.envPrefix != \"\" {\n\t\treturn strings.ToUpper(v.envPrefix + \"_\" + in)\n\t}\n\n\treturn strings.ToUpper(in)\n}\n\n// TODO: should getEnv logic be moved into find(). Can generalize the use of\n// rewriting keys many things, Ex: Get('someKey') -> some_key\n// (camel case to snake case for JSON keys perhaps)\n\n// getEnv is a wrapper around os.Getenv which replaces characters in the original\n// key. This allows env vars which have different keys than the config object\n// keys.\nfunc (v *Viper) getEnv(key string) string {\n\tif v.envKeyReplacer != nil {\n\t\tkey = v.envKeyReplacer.Replace(key)\n\t}\n\treturn os.Getenv(key)\n}\n\n// ConfigFileUsed returns the file used to populate the config registry.\nfunc ConfigFileUsed() string            { return v.ConfigFileUsed() }\nfunc (v *Viper) ConfigFileUsed() string { return v.configFile }\n\n// AddConfigPath adds a path for Viper to search for the config file in.\n// Can be called multiple times to define multiple search paths.\nfunc AddConfigPath(in string) { v.AddConfigPath(in) }\nfunc (v *Viper) AddConfigPath(in string) {\n\tif in != \"\" {\n\t\tabsin := absPathify(in)\n\t\tjww.INFO.Println(\"adding\", absin, \"to paths to search\")\n\t\tif !stringInSlice(absin, v.configPaths) {\n\t\t\tv.configPaths = append(v.configPaths, absin)\n\t\t}\n\t}\n}\n\n// AddRemoteProvider adds a remote configuration source.\n// Remote Providers are searched in the order they are added.\n// provider is a string value, \"etcd\" or \"consul\" are currently supported.\n// endpoint is the url.  etcd requires http://ip:port  consul requires ip:port\n// path is the path in the k/v store to retrieve configuration\n// To retrieve a config file called myapp.json from /configs/myapp.json\n// you should set path to /configs and set config name (SetConfigName()) to\n// \"myapp\"\nfunc AddRemoteProvider(provider, endpoint, path string) error {\n\treturn v.AddRemoteProvider(provider, endpoint, path)\n}\nfunc (v *Viper) AddRemoteProvider(provider, endpoint, path string) error {\n\tif !stringInSlice(provider, SupportedRemoteProviders) {\n\t\treturn UnsupportedRemoteProviderError(provider)\n\t}\n\tif provider != \"\" && endpoint != \"\" {\n\t\tjww.INFO.Printf(\"adding %s:%s to remote provider list\", provider, endpoint)\n\t\trp := &defaultRemoteProvider{\n\t\t\tendpoint: endpoint,\n\t\t\tprovider: provider,\n\t\t\tpath:     path,\n\t\t}\n\t\tif !v.providerPathExists(rp) {\n\t\t\tv.remoteProviders = append(v.remoteProviders, rp)\n\t\t}\n\t}\n\treturn nil\n}\n\n// AddSecureRemoteProvider adds a remote configuration source.\n// Secure Remote Providers are searched in the order they are added.\n// provider is a string value, \"etcd\" or \"consul\" are currently supported.\n// endpoint is the url.  etcd requires http://ip:port  consul requires ip:port\n// secretkeyring is the filepath to your openpgp secret keyring.  e.g. /etc/secrets/myring.gpg\n// path is the path in the k/v store to retrieve configuration\n// To retrieve a config file called myapp.json from /configs/myapp.json\n// you should set path to /configs and set config name (SetConfigName()) to\n// \"myapp\"\n// Secure Remote Providers are implemented with github.com/xordataexchange/crypt\nfunc AddSecureRemoteProvider(provider, endpoint, path, secretkeyring string) error {\n\treturn v.AddSecureRemoteProvider(provider, endpoint, path, secretkeyring)\n}\n\nfunc (v *Viper) AddSecureRemoteProvider(provider, endpoint, path, secretkeyring string) error {\n\tif !stringInSlice(provider, SupportedRemoteProviders) {\n\t\treturn UnsupportedRemoteProviderError(provider)\n\t}\n\tif provider != \"\" && endpoint != \"\" {\n\t\tjww.INFO.Printf(\"adding %s:%s to remote provider list\", provider, endpoint)\n\t\trp := &defaultRemoteProvider{\n\t\t\tendpoint:      endpoint,\n\t\t\tprovider:      provider,\n\t\t\tpath:          path,\n\t\t\tsecretKeyring: secretkeyring,\n\t\t}\n\t\tif !v.providerPathExists(rp) {\n\t\t\tv.remoteProviders = append(v.remoteProviders, rp)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (v *Viper) providerPathExists(p *defaultRemoteProvider) bool {\n\tfor _, y := range v.remoteProviders {\n\t\tif reflect.DeepEqual(y, p) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// searchMap recursively searches for a value for path in source map.\n// Returns nil if not found.\n// Note: This assumes that the path entries and map keys are lower cased.\nfunc (v *Viper) searchMap(source map[string]interface{}, path []string) interface{} {\n\tif len(path) == 0 {\n\t\treturn source\n\t}\n\n\tnext, ok := source[path[0]]\n\tif ok {\n\t\t// Fast path\n\t\tif len(path) == 1 {\n\t\t\treturn next\n\t\t}\n\n\t\t// Nested case\n\t\tswitch next.(type) {\n\t\tcase map[interface{}]interface{}:\n\t\t\treturn v.searchMap(cast.ToStringMap(next), path[1:])\n\t\tcase map[string]interface{}:\n\t\t\t// Type assertion is safe here since it is only reached\n\t\t\t// if the type of `next` is the same as the type being asserted\n\t\t\treturn v.searchMap(next.(map[string]interface{}), path[1:])\n\t\tdefault:\n\t\t\t// got a value but nested key expected, return \"nil\" for not found\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\n// searchMapWithPathPrefixes recursively searches for a value for path in source map.\n//\n// While searchMap() considers each path element as a single map key, this\n// function searches for, and prioritizes, merged path elements.\n// e.g., if in the source, \"foo\" is defined with a sub-key \"bar\", and \"foo.bar\"\n// is also defined, this latter value is returned for path [\"foo\", \"bar\"].\n//\n// This should be useful only at config level (other maps may not contain dots\n// in their keys).\n//\n// Note: This assumes that the path entries and map keys are lower cased.\nfunc (v *Viper) searchMapWithPathPrefixes(source map[string]interface{}, path []string) interface{} {\n\tif len(path) == 0 {\n\t\treturn source\n\t}\n\n\t// search for path prefixes, starting from the longest one\n\tfor i := len(path); i > 0; i-- {\n\t\tprefixKey := strings.ToLower(strings.Join(path[0:i], v.keyDelim))\n\n\t\tnext, ok := source[prefixKey]\n\t\tif ok {\n\t\t\t// Fast path\n\t\t\tif i == len(path) {\n\t\t\t\treturn next\n\t\t\t}\n\n\t\t\t// Nested case\n\t\t\tvar val interface{}\n\t\t\tswitch next.(type) {\n\t\t\tcase map[interface{}]interface{}:\n\t\t\t\tval = v.searchMapWithPathPrefixes(cast.ToStringMap(next), path[i:])\n\t\t\tcase map[string]interface{}:\n\t\t\t\t// Type assertion is safe here since it is only reached\n\t\t\t\t// if the type of `next` is the same as the type being asserted\n\t\t\t\tval = v.searchMapWithPathPrefixes(next.(map[string]interface{}), path[i:])\n\t\t\tdefault:\n\t\t\t\t// got a value but nested key expected, do nothing and look for next prefix\n\t\t\t}\n\t\t\tif val != nil {\n\t\t\t\treturn val\n\t\t\t}\n\t\t}\n\t}\n\n\t// not found\n\treturn nil\n}\n\n// isPathShadowedInDeepMap makes sure the given path is not shadowed somewhere\n// on its path in the map.\n// e.g., if \"foo.bar\" has a value in the given map, it “shadows”\n//       \"foo.bar.baz\" in a lower-priority map\nfunc (v *Viper) isPathShadowedInDeepMap(path []string, m map[string]interface{}) string {\n\tvar parentVal interface{}\n\tfor i := 1; i < len(path); i++ {\n\t\tparentVal = v.searchMap(m, path[0:i])\n\t\tif parentVal == nil {\n\t\t\t// not found, no need to add more path elements\n\t\t\treturn \"\"\n\t\t}\n\t\tswitch parentVal.(type) {\n\t\tcase map[interface{}]interface{}:\n\t\t\tcontinue\n\t\tcase map[string]interface{}:\n\t\t\tcontinue\n\t\tdefault:\n\t\t\t// parentVal is a regular value which shadows \"path\"\n\t\t\treturn strings.Join(path[0:i], v.keyDelim)\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// isPathShadowedInFlatMap makes sure the given path is not shadowed somewhere\n// in a sub-path of the map.\n// e.g., if \"foo.bar\" has a value in the given map, it “shadows”\n//       \"foo.bar.baz\" in a lower-priority map\nfunc (v *Viper) isPathShadowedInFlatMap(path []string, mi interface{}) string {\n\t// unify input map\n\tvar m map[string]interface{}\n\tswitch mi.(type) {\n\tcase map[string]string, map[string]FlagValue:\n\t\tm = cast.ToStringMap(mi)\n\tdefault:\n\t\treturn \"\"\n\t}\n\n\t// scan paths\n\tvar parentKey string\n\tfor i := 1; i < len(path); i++ {\n\t\tparentKey = strings.Join(path[0:i], v.keyDelim)\n\t\tif _, ok := m[parentKey]; ok {\n\t\t\treturn parentKey\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// isPathShadowedInAutoEnv makes sure the given path is not shadowed somewhere\n// in the environment, when automatic env is on.\n// e.g., if \"foo.bar\" has a value in the environment, it “shadows”\n//       \"foo.bar.baz\" in a lower-priority map\nfunc (v *Viper) isPathShadowedInAutoEnv(path []string) string {\n\tvar parentKey string\n\tvar val string\n\tfor i := 1; i < len(path); i++ {\n\t\tparentKey = strings.Join(path[0:i], v.keyDelim)\n\t\tif val = v.getEnv(v.mergeWithEnvPrefix(parentKey)); val != \"\" {\n\t\t\treturn parentKey\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// SetTypeByDefaultValue enables or disables the inference of a key value's\n// type when the Get function is used based upon a key's default value as\n// opposed to the value returned based on the normal fetch logic.\n//\n// For example, if a key has a default value of []string{} and the same key\n// is set via an environment variable to \"a b c\", a call to the Get function\n// would return a string slice for the key if the key's type is inferred by\n// the default value and the Get function would return:\n//\n//   []string {\"a\", \"b\", \"c\"}\n//\n// Otherwise the Get function would return:\n//\n//   \"a b c\"\nfunc SetTypeByDefaultValue(enable bool) { v.SetTypeByDefaultValue(enable) }\nfunc (v *Viper) SetTypeByDefaultValue(enable bool) {\n\tv.typeByDefValue = enable\n}\n\n// GetViper gets the global Viper instance.\nfunc GetViper() *Viper {\n\treturn v\n}\n\n// Get can retrieve any value given the key to use.\n// Get is case-insensitive for a key.\n// Get has the behavior of returning the value associated with the first\n// place from where it is set. Viper will check in the following order:\n// override, flag, env, config file, key/value store, default\n//\n// Get returns an interface. For a specific value use one of the Get____ methods.\nfunc Get(key string) interface{} { return v.Get(key) }\nfunc (v *Viper) Get(key string) interface{} {\n\tlcaseKey := strings.ToLower(key)\n\tval := v.find(lcaseKey)\n\tif val == nil {\n\t\treturn nil\n\t}\n\n\tif v.typeByDefValue {\n\t\t// TODO(bep) this branch isn't covered by a single test.\n\t\tvalType := val\n\t\tpath := strings.Split(lcaseKey, v.keyDelim)\n\t\tdefVal := v.searchMap(v.defaults, path)\n\t\tif defVal != nil {\n\t\t\tvalType = defVal\n\t\t}\n\n\t\tswitch valType.(type) {\n\t\tcase bool:\n\t\t\treturn cast.ToBool(val)\n\t\tcase string:\n\t\t\treturn cast.ToString(val)\n\t\tcase int32, int16, int8, int:\n\t\t\treturn cast.ToInt(val)\n\t\tcase int64:\n\t\t\treturn cast.ToInt64(val)\n\t\tcase float64, float32:\n\t\t\treturn cast.ToFloat64(val)\n\t\tcase time.Time:\n\t\t\treturn cast.ToTime(val)\n\t\tcase time.Duration:\n\t\t\treturn cast.ToDuration(val)\n\t\tcase []string:\n\t\t\treturn cast.ToStringSlice(val)\n\t\t}\n\t}\n\n\treturn val\n}\n\n// Sub returns new Viper instance representing a sub tree of this instance.\n// Sub is case-insensitive for a key.\nfunc Sub(key string) *Viper { return v.Sub(key) }\nfunc (v *Viper) Sub(key string) *Viper {\n\tsubv := New()\n\tdata := v.Get(key)\n\tif data == nil {\n\t\treturn nil\n\t}\n\n\tif reflect.TypeOf(data).Kind() == reflect.Map {\n\t\tsubv.config = cast.ToStringMap(data)\n\t\treturn subv\n\t}\n\treturn nil\n}\n\n// GetString returns the value associated with the key as a string.\nfunc GetString(key string) string { return v.GetString(key) }\nfunc (v *Viper) GetString(key string) string {\n\treturn cast.ToString(v.Get(key))\n}\n\n// GetBool returns the value associated with the key as a boolean.\nfunc GetBool(key string) bool { return v.GetBool(key) }\nfunc (v *Viper) GetBool(key string) bool {\n\treturn cast.ToBool(v.Get(key))\n}\n\n// GetInt returns the value associated with the key as an integer.\nfunc GetInt(key string) int { return v.GetInt(key) }\nfunc (v *Viper) GetInt(key string) int {\n\treturn cast.ToInt(v.Get(key))\n}\n\n// GetInt32 returns the value associated with the key as an integer.\nfunc GetInt32(key string) int32 { return v.GetInt32(key) }\nfunc (v *Viper) GetInt32(key string) int32 {\n\treturn cast.ToInt32(v.Get(key))\n}\n\n// GetInt64 returns the value associated with the key as an integer.\nfunc GetInt64(key string) int64 { return v.GetInt64(key) }\nfunc (v *Viper) GetInt64(key string) int64 {\n\treturn cast.ToInt64(v.Get(key))\n}\n\n// GetFloat64 returns the value associated with the key as a float64.\nfunc GetFloat64(key string) float64 { return v.GetFloat64(key) }\nfunc (v *Viper) GetFloat64(key string) float64 {\n\treturn cast.ToFloat64(v.Get(key))\n}\n\n// GetTime returns the value associated with the key as time.\nfunc GetTime(key string) time.Time { return v.GetTime(key) }\nfunc (v *Viper) GetTime(key string) time.Time {\n\treturn cast.ToTime(v.Get(key))\n}\n\n// GetDuration returns the value associated with the key as a duration.\nfunc GetDuration(key string) time.Duration { return v.GetDuration(key) }\nfunc (v *Viper) GetDuration(key string) time.Duration {\n\treturn cast.ToDuration(v.Get(key))\n}\n\n// GetStringSlice returns the value associated with the key as a slice of strings.\nfunc GetStringSlice(key string) []string { return v.GetStringSlice(key) }\nfunc (v *Viper) GetStringSlice(key string) []string {\n\treturn cast.ToStringSlice(v.Get(key))\n}\n\n// GetStringMap returns the value associated with the key as a map of interfaces.\nfunc GetStringMap(key string) map[string]interface{} { return v.GetStringMap(key) }\nfunc (v *Viper) GetStringMap(key string) map[string]interface{} {\n\treturn cast.ToStringMap(v.Get(key))\n}\n\n// GetStringMapString returns the value associated with the key as a map of strings.\nfunc GetStringMapString(key string) map[string]string { return v.GetStringMapString(key) }\nfunc (v *Viper) GetStringMapString(key string) map[string]string {\n\treturn cast.ToStringMapString(v.Get(key))\n}\n\n// GetStringMapStringSlice returns the value associated with the key as a map to a slice of strings.\nfunc GetStringMapStringSlice(key string) map[string][]string { return v.GetStringMapStringSlice(key) }\nfunc (v *Viper) GetStringMapStringSlice(key string) map[string][]string {\n\treturn cast.ToStringMapStringSlice(v.Get(key))\n}\n\n// GetSizeInBytes returns the size of the value associated with the given key\n// in bytes.\nfunc GetSizeInBytes(key string) uint { return v.GetSizeInBytes(key) }\nfunc (v *Viper) GetSizeInBytes(key string) uint {\n\tsizeStr := cast.ToString(v.Get(key))\n\treturn parseSizeInBytes(sizeStr)\n}\n\n// UnmarshalKey takes a single key and unmarshals it into a Struct.\nfunc UnmarshalKey(key string, rawVal interface{}, opts ...DecoderConfigOption) error {\n\treturn v.UnmarshalKey(key, rawVal, opts...)\n}\nfunc (v *Viper) UnmarshalKey(key string, rawVal interface{}, opts ...DecoderConfigOption) error {\n\terr := decode(v.Get(key), defaultDecoderConfig(rawVal, opts...))\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tv.insensitiviseMaps()\n\n\treturn nil\n}\n\n// Unmarshal unmarshals the config into a Struct. Make sure that the tags\n// on the fields of the structure are properly set.\nfunc Unmarshal(rawVal interface{}, opts ...DecoderConfigOption) error {\n\treturn v.Unmarshal(rawVal, opts...)\n}\nfunc (v *Viper) Unmarshal(rawVal interface{}, opts ...DecoderConfigOption) error {\n\terr := decode(v.AllSettings(), defaultDecoderConfig(rawVal, opts...))\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tv.insensitiviseMaps()\n\n\treturn nil\n}\n\n// defaultDecoderConfig returns default mapsstructure.DecoderConfig with suppot\n// of time.Duration values & string slices\nfunc defaultDecoderConfig(output interface{}, opts ...DecoderConfigOption) *mapstructure.DecoderConfig {\n\tc := &mapstructure.DecoderConfig{\n\t\tMetadata:         nil,\n\t\tResult:           output,\n\t\tWeaklyTypedInput: true,\n\t\tDecodeHook: mapstructure.ComposeDecodeHookFunc(\n\t\t\tmapstructure.StringToTimeDurationHookFunc(),\n\t\t\tmapstructure.StringToSliceHookFunc(\",\"),\n\t\t),\n\t}\n\tfor _, opt := range opts {\n\t\topt(c)\n\t}\n\treturn c\n}\n\n// A wrapper around mapstructure.Decode that mimics the WeakDecode functionality\nfunc decode(input interface{}, config *mapstructure.DecoderConfig) error {\n\tdecoder, err := mapstructure.NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn decoder.Decode(input)\n}\n\n// UnmarshalExact unmarshals the config into a Struct, erroring if a field is nonexistent\n// in the destination struct.\nfunc (v *Viper) UnmarshalExact(rawVal interface{}) error {\n\tconfig := defaultDecoderConfig(rawVal)\n\tconfig.ErrorUnused = true\n\n\terr := decode(v.AllSettings(), config)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tv.insensitiviseMaps()\n\n\treturn nil\n}\n\n// BindPFlags binds a full flag set to the configuration, using each flag's long\n// name as the config key.\nfunc BindPFlags(flags *pflag.FlagSet) error { return v.BindPFlags(flags) }\nfunc (v *Viper) BindPFlags(flags *pflag.FlagSet) error {\n\treturn v.BindFlagValues(pflagValueSet{flags})\n}\n\n// BindPFlag binds a specific key to a pflag (as used by cobra).\n// Example (where serverCmd is a Cobra instance):\n//\n//\t serverCmd.Flags().Int(\"port\", 1138, \"Port to run Application server on\")\n//\t Viper.BindPFlag(\"port\", serverCmd.Flags().Lookup(\"port\"))\n//\nfunc BindPFlag(key string, flag *pflag.Flag) error { return v.BindPFlag(key, flag) }\nfunc (v *Viper) BindPFlag(key string, flag *pflag.Flag) error {\n\treturn v.BindFlagValue(key, pflagValue{flag})\n}\n\n// BindFlagValues binds a full FlagValue set to the configuration, using each flag's long\n// name as the config key.\nfunc BindFlagValues(flags FlagValueSet) error { return v.BindFlagValues(flags) }\nfunc (v *Viper) BindFlagValues(flags FlagValueSet) (err error) {\n\tflags.VisitAll(func(flag FlagValue) {\n\t\tif err = v.BindFlagValue(flag.Name(), flag); err != nil {\n\t\t\treturn\n\t\t}\n\t})\n\treturn nil\n}\n\n// BindFlagValue binds a specific key to a FlagValue.\n// Example (where serverCmd is a Cobra instance):\n//\n//\t serverCmd.Flags().Int(\"port\", 1138, \"Port to run Application server on\")\n//\t Viper.BindFlagValue(\"port\", serverCmd.Flags().Lookup(\"port\"))\n//\nfunc BindFlagValue(key string, flag FlagValue) error { return v.BindFlagValue(key, flag) }\nfunc (v *Viper) BindFlagValue(key string, flag FlagValue) error {\n\tif flag == nil {\n\t\treturn fmt.Errorf(\"flag for %q is nil\", key)\n\t}\n\tv.pflags[strings.ToLower(key)] = flag\n\treturn nil\n}\n\n// BindEnv binds a Viper key to a ENV variable.\n// ENV variables are case sensitive.\n// If only a key is provided, it will use the env key matching the key, uppercased.\n// EnvPrefix will be used when set when env name is not provided.\nfunc BindEnv(input ...string) error { return v.BindEnv(input...) }\nfunc (v *Viper) BindEnv(input ...string) error {\n\tvar key, envkey string\n\tif len(input) == 0 {\n\t\treturn fmt.Errorf(\"BindEnv missing key to bind to\")\n\t}\n\n\tkey = strings.ToLower(input[0])\n\n\tif len(input) == 1 {\n\t\tenvkey = v.mergeWithEnvPrefix(key)\n\t} else {\n\t\tenvkey = input[1]\n\t}\n\n\tv.env[key] = envkey\n\n\treturn nil\n}\n\n// Given a key, find the value.\n// Viper will check in the following order:\n// flag, env, config file, key/value store, default.\n// Viper will check to see if an alias exists first.\n// Note: this assumes a lower-cased key given.\nfunc (v *Viper) find(lcaseKey string) interface{} {\n\n\tvar (\n\t\tval    interface{}\n\t\texists bool\n\t\tpath   = strings.Split(lcaseKey, v.keyDelim)\n\t\tnested = len(path) > 1\n\t)\n\n\t// compute the path through the nested maps to the nested value\n\tif nested && v.isPathShadowedInDeepMap(path, castMapStringToMapInterface(v.aliases)) != \"\" {\n\t\treturn nil\n\t}\n\n\t// if the requested key is an alias, then return the proper key\n\tlcaseKey = v.realKey(lcaseKey)\n\tpath = strings.Split(lcaseKey, v.keyDelim)\n\tnested = len(path) > 1\n\n\t// Set() override first\n\tval = v.searchMap(v.override, path)\n\tif val != nil {\n\t\treturn val\n\t}\n\tif nested && v.isPathShadowedInDeepMap(path, v.override) != \"\" {\n\t\treturn nil\n\t}\n\n\t// PFlag override next\n\tflag, exists := v.pflags[lcaseKey]\n\tif exists && flag.HasChanged() {\n\t\tswitch flag.ValueType() {\n\t\tcase \"int\", \"int8\", \"int16\", \"int32\", \"int64\":\n\t\t\treturn cast.ToInt(flag.ValueString())\n\t\tcase \"bool\":\n\t\t\treturn cast.ToBool(flag.ValueString())\n\t\tcase \"stringSlice\":\n\t\t\ts := strings.TrimPrefix(flag.ValueString(), \"[\")\n\t\t\ts = strings.TrimSuffix(s, \"]\")\n\t\t\tres, _ := readAsCSV(s)\n\t\t\treturn res\n\t\tdefault:\n\t\t\treturn flag.ValueString()\n\t\t}\n\t}\n\tif nested && v.isPathShadowedInFlatMap(path, v.pflags) != \"\" {\n\t\treturn nil\n\t}\n\n\t// Env override next\n\tif v.automaticEnvApplied {\n\t\t// even if it hasn't been registered, if automaticEnv is used,\n\t\t// check any Get request\n\t\tif val = v.getEnv(v.mergeWithEnvPrefix(lcaseKey)); val != \"\" {\n\t\t\treturn val\n\t\t}\n\t\tif nested && v.isPathShadowedInAutoEnv(path) != \"\" {\n\t\t\treturn nil\n\t\t}\n\t}\n\tenvkey, exists := v.env[lcaseKey]\n\tif exists {\n\t\tif val = v.getEnv(envkey); val != \"\" {\n\t\t\treturn val\n\t\t}\n\t}\n\tif nested && v.isPathShadowedInFlatMap(path, v.env) != \"\" {\n\t\treturn nil\n\t}\n\n\t// Config file next\n\tval = v.searchMapWithPathPrefixes(v.config, path)\n\tif val != nil {\n\t\treturn val\n\t}\n\tif nested && v.isPathShadowedInDeepMap(path, v.config) != \"\" {\n\t\treturn nil\n\t}\n\n\t// K/V store next\n\tval = v.searchMap(v.kvstore, path)\n\tif val != nil {\n\t\treturn val\n\t}\n\tif nested && v.isPathShadowedInDeepMap(path, v.kvstore) != \"\" {\n\t\treturn nil\n\t}\n\n\t// Default next\n\tval = v.searchMap(v.defaults, path)\n\tif val != nil {\n\t\treturn val\n\t}\n\tif nested && v.isPathShadowedInDeepMap(path, v.defaults) != \"\" {\n\t\treturn nil\n\t}\n\n\t// last chance: if no other value is returned and a flag does exist for the value,\n\t// get the flag's value even if the flag's value has not changed\n\tif flag, exists := v.pflags[lcaseKey]; exists {\n\t\tswitch flag.ValueType() {\n\t\tcase \"int\", \"int8\", \"int16\", \"int32\", \"int64\":\n\t\t\treturn cast.ToInt(flag.ValueString())\n\t\tcase \"bool\":\n\t\t\treturn cast.ToBool(flag.ValueString())\n\t\tcase \"stringSlice\":\n\t\t\ts := strings.TrimPrefix(flag.ValueString(), \"[\")\n\t\t\ts = strings.TrimSuffix(s, \"]\")\n\t\t\tres, _ := readAsCSV(s)\n\t\t\treturn res\n\t\tdefault:\n\t\t\treturn flag.ValueString()\n\t\t}\n\t}\n\t// last item, no need to check shadowing\n\n\treturn nil\n}\n\nfunc readAsCSV(val string) ([]string, error) {\n\tif val == \"\" {\n\t\treturn []string{}, nil\n\t}\n\tstringReader := strings.NewReader(val)\n\tcsvReader := csv.NewReader(stringReader)\n\treturn csvReader.Read()\n}\n\n// IsSet checks to see if the key has been set in any of the data locations.\n// IsSet is case-insensitive for a key.\nfunc IsSet(key string) bool { return v.IsSet(key) }\nfunc (v *Viper) IsSet(key string) bool {\n\tlcaseKey := strings.ToLower(key)\n\tval := v.find(lcaseKey)\n\treturn val != nil\n}\n\n// AutomaticEnv has Viper check ENV variables for all.\n// keys set in config, default & flags\nfunc AutomaticEnv() { v.AutomaticEnv() }\nfunc (v *Viper) AutomaticEnv() {\n\tv.automaticEnvApplied = true\n}\n\n// SetEnvKeyReplacer sets the strings.Replacer on the viper object\n// Useful for mapping an environmental variable to a key that does\n// not match it.\nfunc SetEnvKeyReplacer(r *strings.Replacer) { v.SetEnvKeyReplacer(r) }\nfunc (v *Viper) SetEnvKeyReplacer(r *strings.Replacer) {\n\tv.envKeyReplacer = r\n}\n\n// Aliases provide another accessor for the same key.\n// This enables one to change a name without breaking the application\nfunc RegisterAlias(alias string, key string) { v.RegisterAlias(alias, key) }\nfunc (v *Viper) RegisterAlias(alias string, key string) {\n\tv.registerAlias(alias, strings.ToLower(key))\n}\n\nfunc (v *Viper) registerAlias(alias string, key string) {\n\talias = strings.ToLower(alias)\n\tif alias != key && alias != v.realKey(key) {\n\t\t_, exists := v.aliases[alias]\n\n\t\tif !exists {\n\t\t\t// if we alias something that exists in one of the maps to another\n\t\t\t// name, we'll never be able to get that value using the original\n\t\t\t// name, so move the config value to the new realkey.\n\t\t\tif val, ok := v.config[alias]; ok {\n\t\t\t\tdelete(v.config, alias)\n\t\t\t\tv.config[key] = val\n\t\t\t}\n\t\t\tif val, ok := v.kvstore[alias]; ok {\n\t\t\t\tdelete(v.kvstore, alias)\n\t\t\t\tv.kvstore[key] = val\n\t\t\t}\n\t\t\tif val, ok := v.defaults[alias]; ok {\n\t\t\t\tdelete(v.defaults, alias)\n\t\t\t\tv.defaults[key] = val\n\t\t\t}\n\t\t\tif val, ok := v.override[alias]; ok {\n\t\t\t\tdelete(v.override, alias)\n\t\t\t\tv.override[key] = val\n\t\t\t}\n\t\t\tv.aliases[alias] = key\n\t\t}\n\t} else {\n\t\tjww.WARN.Println(\"Creating circular reference alias\", alias, key, v.realKey(key))\n\t}\n}\n\nfunc (v *Viper) realKey(key string) string {\n\tnewkey, exists := v.aliases[key]\n\tif exists {\n\t\tjww.DEBUG.Println(\"Alias\", key, \"to\", newkey)\n\t\treturn v.realKey(newkey)\n\t}\n\treturn key\n}\n\n// InConfig checks to see if the given key (or an alias) is in the config file.\nfunc InConfig(key string) bool { return v.InConfig(key) }\nfunc (v *Viper) InConfig(key string) bool {\n\t// if the requested key is an alias, then return the proper key\n\tkey = v.realKey(key)\n\n\t_, exists := v.config[key]\n\treturn exists\n}\n\n// SetDefault sets the default value for this key.\n// SetDefault is case-insensitive for a key.\n// Default only used when no value is provided by the user via flag, config or ENV.\nfunc SetDefault(key string, value interface{}) { v.SetDefault(key, value) }\nfunc (v *Viper) SetDefault(key string, value interface{}) {\n\t// If alias passed in, then set the proper default\n\tkey = v.realKey(strings.ToLower(key))\n\tvalue = toCaseInsensitiveValue(value)\n\n\tpath := strings.Split(key, v.keyDelim)\n\tlastKey := strings.ToLower(path[len(path)-1])\n\tdeepestMap := deepSearch(v.defaults, path[0:len(path)-1])\n\n\t// set innermost value\n\tdeepestMap[lastKey] = value\n}\n\n// Set sets the value for the key in the override register.\n// Set is case-insensitive for a key.\n// Will be used instead of values obtained via\n// flags, config file, ENV, default, or key/value store.\nfunc Set(key string, value interface{}) { v.Set(key, value) }\nfunc (v *Viper) Set(key string, value interface{}) {\n\t// If alias passed in, then set the proper override\n\tkey = v.realKey(strings.ToLower(key))\n\tvalue = toCaseInsensitiveValue(value)\n\n\tpath := strings.Split(key, v.keyDelim)\n\tlastKey := strings.ToLower(path[len(path)-1])\n\tdeepestMap := deepSearch(v.override, path[0:len(path)-1])\n\n\t// set innermost value\n\tdeepestMap[lastKey] = value\n}\n\n// ReadInConfig will discover and load the configuration file from disk\n// and key/value stores, searching in one of the defined paths.\nfunc ReadInConfig() error { return v.ReadInConfig() }\nfunc (v *Viper) ReadInConfig() error {\n\tjww.INFO.Println(\"Attempting to read in config file\")\n\tfilename, err := v.getConfigFile()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !stringInSlice(v.getConfigType(), SupportedExts) {\n\t\treturn UnsupportedConfigError(v.getConfigType())\n\t}\n\n\tjww.DEBUG.Println(\"Reading file: \", filename)\n\tfile, err := afero.ReadFile(v.fs, filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tconfig := make(map[string]interface{})\n\n\terr = v.unmarshalReader(bytes.NewReader(file), config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tv.config = config\n\treturn nil\n}\n\n// MergeInConfig merges a new configuration with an existing config.\nfunc MergeInConfig() error { return v.MergeInConfig() }\nfunc (v *Viper) MergeInConfig() error {\n\tjww.INFO.Println(\"Attempting to merge in config file\")\n\tfilename, err := v.getConfigFile()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !stringInSlice(v.getConfigType(), SupportedExts) {\n\t\treturn UnsupportedConfigError(v.getConfigType())\n\t}\n\n\tfile, err := afero.ReadFile(v.fs, filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn v.MergeConfig(bytes.NewReader(file))\n}\n\n// ReadConfig will read a configuration file, setting existing keys to nil if the\n// key does not exist in the file.\nfunc ReadConfig(in io.Reader) error { return v.ReadConfig(in) }\nfunc (v *Viper) ReadConfig(in io.Reader) error {\n\tv.config = make(map[string]interface{})\n\treturn v.unmarshalReader(in, v.config)\n}\n\n// MergeConfig merges a new configuration with an existing config.\nfunc MergeConfig(in io.Reader) error { return v.MergeConfig(in) }\nfunc (v *Viper) MergeConfig(in io.Reader) error {\n\tif v.config == nil {\n\t\tv.config = make(map[string]interface{})\n\t}\n\tcfg := make(map[string]interface{})\n\tif err := v.unmarshalReader(in, cfg); err != nil {\n\t\treturn err\n\t}\n\tmergeMaps(cfg, v.config, nil)\n\treturn nil\n}\n\n// WriteConfig writes the current configuration to a file.\nfunc WriteConfig() error { return v.WriteConfig() }\nfunc (v *Viper) WriteConfig() error {\n\tfilename, err := v.getConfigFile()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn v.writeConfig(filename, true)\n}\n\n// SafeWriteConfig writes current configuration to file only if the file does not exist.\nfunc SafeWriteConfig() error { return v.SafeWriteConfig() }\nfunc (v *Viper) SafeWriteConfig() error {\n\tfilename, err := v.getConfigFile()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn v.writeConfig(filename, false)\n}\n\n// WriteConfigAs writes current configuration to a given filename.\nfunc WriteConfigAs(filename string) error { return v.WriteConfigAs(filename) }\nfunc (v *Viper) WriteConfigAs(filename string) error {\n\treturn v.writeConfig(filename, true)\n}\n\n// SafeWriteConfigAs writes current configuration to a given filename if it does not exist.\nfunc SafeWriteConfigAs(filename string) error { return v.SafeWriteConfigAs(filename) }\nfunc (v *Viper) SafeWriteConfigAs(filename string) error {\n\treturn v.writeConfig(filename, false)\n}\n\nfunc writeConfig(filename string, force bool) error { return v.writeConfig(filename, force) }\nfunc (v *Viper) writeConfig(filename string, force bool) error {\n\tjww.INFO.Println(\"Attempting to write configuration to file.\")\n\text := filepath.Ext(filename)\n\tif len(ext) <= 1 {\n\t\treturn fmt.Errorf(\"Filename: %s requires valid extension.\", filename)\n\t}\n\tconfigType := ext[1:]\n\tif !stringInSlice(configType, SupportedExts) {\n\t\treturn UnsupportedConfigError(configType)\n\t}\n\tif v.config == nil {\n\t\tv.config = make(map[string]interface{})\n\t}\n\tvar flags int\n\tif force == true {\n\t\tflags = os.O_CREATE | os.O_TRUNC | os.O_WRONLY\n\t} else {\n\t\tif _, err := os.Stat(filename); os.IsNotExist(err) {\n\t\t\tflags = os.O_WRONLY\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"File: %s exists. Use WriteConfig to overwrite.\", filename)\n\t\t}\n\t}\n\tf, err := v.fs.OpenFile(filename, flags, os.FileMode(0644))\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn v.marshalWriter(f, configType)\n}\n\n// Unmarshal a Reader into a map.\n// Should probably be an unexported function.\nfunc unmarshalReader(in io.Reader, c map[string]interface{}) error {\n\treturn v.unmarshalReader(in, c)\n}\nfunc (v *Viper) unmarshalReader(in io.Reader, c map[string]interface{}) error {\n\tbuf := new(bytes.Buffer)\n\tbuf.ReadFrom(in)\n\n\tswitch strings.ToLower(v.getConfigType()) {\n\tcase \"yaml\", \"yml\":\n\t\tif err := yaml.Unmarshal(buf.Bytes(), &c); err != nil {\n\t\t\treturn ConfigParseError{err}\n\t\t}\n\n\tcase \"json\":\n\t\tif err := json.Unmarshal(buf.Bytes(), &c); err != nil {\n\t\t\treturn ConfigParseError{err}\n\t\t}\n\n\tcase \"hcl\":\n\t\tobj, err := hcl.Parse(string(buf.Bytes()))\n\t\tif err != nil {\n\t\t\treturn ConfigParseError{err}\n\t\t}\n\t\tif err = hcl.DecodeObject(&c, obj); err != nil {\n\t\t\treturn ConfigParseError{err}\n\t\t}\n\n\tcase \"toml\":\n\t\ttree, err := toml.LoadReader(buf)\n\t\tif err != nil {\n\t\t\treturn ConfigParseError{err}\n\t\t}\n\t\ttmap := tree.ToMap()\n\t\tfor k, v := range tmap {\n\t\t\tc[k] = v\n\t\t}\n\n\tcase \"properties\", \"props\", \"prop\":\n\t\tv.properties = properties.NewProperties()\n\t\tvar err error\n\t\tif v.properties, err = properties.Load(buf.Bytes(), properties.UTF8); err != nil {\n\t\t\treturn ConfigParseError{err}\n\t\t}\n\t\tfor _, key := range v.properties.Keys() {\n\t\t\tvalue, _ := v.properties.Get(key)\n\t\t\t// recursively build nested maps\n\t\t\tpath := strings.Split(key, \".\")\n\t\t\tlastKey := strings.ToLower(path[len(path)-1])\n\t\t\tdeepestMap := deepSearch(c, path[0:len(path)-1])\n\t\t\t// set innermost value\n\t\t\tdeepestMap[lastKey] = value\n\t\t}\n\t}\n\n\tinsensitiviseMap(c)\n\treturn nil\n}\n\n// Marshal a map into Writer.\nfunc marshalWriter(f afero.File, configType string) error {\n\treturn v.marshalWriter(f, configType)\n}\nfunc (v *Viper) marshalWriter(f afero.File, configType string) error {\n\tc := v.AllSettings()\n\tswitch configType {\n\tcase \"json\":\n\t\tb, err := json.MarshalIndent(c, \"\", \"  \")\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\t\t_, err = f.WriteString(string(b))\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\n\tcase \"hcl\":\n\t\tb, err := json.Marshal(c)\n\t\tast, err := hcl.Parse(string(b))\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\t\terr = printer.Fprint(f, ast.Node)\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\n\tcase \"prop\", \"props\", \"properties\":\n\t\tif v.properties == nil {\n\t\t\tv.properties = properties.NewProperties()\n\t\t}\n\t\tp := v.properties\n\t\tfor _, key := range v.AllKeys() {\n\t\t\t_, _, err := p.Set(key, v.GetString(key))\n\t\t\tif err != nil {\n\t\t\t\treturn ConfigMarshalError{err}\n\t\t\t}\n\t\t}\n\t\t_, err := p.WriteComment(f, \"#\", properties.UTF8)\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\n\tcase \"toml\":\n\t\tt, err := toml.TreeFromMap(c)\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\t\ts := t.String()\n\t\tif _, err := f.WriteString(s); err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\n\tcase \"yaml\", \"yml\":\n\t\tb, err := yaml.Marshal(c)\n\t\tif err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\t\tif _, err = f.WriteString(string(b)); err != nil {\n\t\t\treturn ConfigMarshalError{err}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc keyExists(k string, m map[string]interface{}) string {\n\tlk := strings.ToLower(k)\n\tfor mk := range m {\n\t\tlmk := strings.ToLower(mk)\n\t\tif lmk == lk {\n\t\t\treturn mk\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc castToMapStringInterface(\n\tsrc map[interface{}]interface{}) map[string]interface{} {\n\ttgt := map[string]interface{}{}\n\tfor k, v := range src {\n\t\ttgt[fmt.Sprintf(\"%v\", k)] = v\n\t}\n\treturn tgt\n}\n\nfunc castMapStringToMapInterface(src map[string]string) map[string]interface{} {\n\ttgt := map[string]interface{}{}\n\tfor k, v := range src {\n\t\ttgt[k] = v\n\t}\n\treturn tgt\n}\n\nfunc castMapFlagToMapInterface(src map[string]FlagValue) map[string]interface{} {\n\ttgt := map[string]interface{}{}\n\tfor k, v := range src {\n\t\ttgt[k] = v\n\t}\n\treturn tgt\n}\n\n// mergeMaps merges two maps. The `itgt` parameter is for handling go-yaml's\n// insistence on parsing nested structures as `map[interface{}]interface{}`\n// instead of using a `string` as the key for nest structures beyond one level\n// deep. Both map types are supported as there is a go-yaml fork that uses\n// `map[string]interface{}` instead.\nfunc mergeMaps(\n\tsrc, tgt map[string]interface{}, itgt map[interface{}]interface{}) {\n\tfor sk, sv := range src {\n\t\ttk := keyExists(sk, tgt)\n\t\tif tk == \"\" {\n\t\t\tjww.TRACE.Printf(\"tk=\\\"\\\", tgt[%s]=%v\", sk, sv)\n\t\t\ttgt[sk] = sv\n\t\t\tif itgt != nil {\n\t\t\t\titgt[sk] = sv\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\ttv, ok := tgt[tk]\n\t\tif !ok {\n\t\t\tjww.TRACE.Printf(\"tgt[%s] != ok, tgt[%s]=%v\", tk, sk, sv)\n\t\t\ttgt[sk] = sv\n\t\t\tif itgt != nil {\n\t\t\t\titgt[sk] = sv\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tsvType := reflect.TypeOf(sv)\n\t\ttvType := reflect.TypeOf(tv)\n\t\tif svType != tvType {\n\t\t\tjww.ERROR.Printf(\n\t\t\t\t\"svType != tvType; key=%s, st=%v, tt=%v, sv=%v, tv=%v\",\n\t\t\t\tsk, svType, tvType, sv, tv)\n\t\t\tcontinue\n\t\t}\n\n\t\tjww.TRACE.Printf(\"processing key=%s, st=%v, tt=%v, sv=%v, tv=%v\",\n\t\t\tsk, svType, tvType, sv, tv)\n\n\t\tswitch ttv := tv.(type) {\n\t\tcase map[interface{}]interface{}:\n\t\t\tjww.TRACE.Printf(\"merging maps (must convert)\")\n\t\t\ttsv := sv.(map[interface{}]interface{})\n\t\t\tssv := castToMapStringInterface(tsv)\n\t\t\tstv := castToMapStringInterface(ttv)\n\t\t\tmergeMaps(ssv, stv, ttv)\n\t\tcase map[string]interface{}:\n\t\t\tjww.TRACE.Printf(\"merging maps\")\n\t\t\tmergeMaps(sv.(map[string]interface{}), ttv, nil)\n\t\tdefault:\n\t\t\tjww.TRACE.Printf(\"setting value\")\n\t\t\ttgt[tk] = sv\n\t\t\tif itgt != nil {\n\t\t\t\titgt[tk] = sv\n\t\t\t}\n\t\t}\n\t}\n}\n\n// ReadRemoteConfig attempts to get configuration from a remote source\n// and read it in the remote configuration registry.\nfunc ReadRemoteConfig() error { return v.ReadRemoteConfig() }\nfunc (v *Viper) ReadRemoteConfig() error {\n\treturn v.getKeyValueConfig()\n}\n\nfunc WatchRemoteConfig() error { return v.WatchRemoteConfig() }\nfunc (v *Viper) WatchRemoteConfig() error {\n\treturn v.watchKeyValueConfig()\n}\n\nfunc (v *Viper) WatchRemoteConfigOnChannel() error {\n\treturn v.watchKeyValueConfigOnChannel()\n}\n\nfunc (v *Viper) insensitiviseMaps() {\n\tinsensitiviseMap(v.config)\n\tinsensitiviseMap(v.defaults)\n\tinsensitiviseMap(v.override)\n\tinsensitiviseMap(v.kvstore)\n}\n\n// Retrieve the first found remote configuration.\nfunc (v *Viper) getKeyValueConfig() error {\n\tif RemoteConfig == nil {\n\t\treturn RemoteConfigError(\"Enable the remote features by doing a blank import of the viper/remote package: '_ github.com/spf13/viper/remote'\")\n\t}\n\n\tfor _, rp := range v.remoteProviders {\n\t\tval, err := v.getRemoteConfig(rp)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tv.kvstore = val\n\t\treturn nil\n\t}\n\treturn RemoteConfigError(\"No Files Found\")\n}\n\nfunc (v *Viper) getRemoteConfig(provider RemoteProvider) (map[string]interface{}, error) {\n\treader, err := RemoteConfig.Get(provider)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = v.unmarshalReader(reader, v.kvstore)\n\treturn v.kvstore, err\n}\n\n// Retrieve the first found remote configuration.\nfunc (v *Viper) watchKeyValueConfigOnChannel() error {\n\tfor _, rp := range v.remoteProviders {\n\t\trespc, _ := RemoteConfig.WatchChannel(rp)\n\t\t//Todo: Add quit channel\n\t\tgo func(rc <-chan *RemoteResponse) {\n\t\t\tfor {\n\t\t\t\tb := <-rc\n\t\t\t\treader := bytes.NewReader(b.Value)\n\t\t\t\tv.unmarshalReader(reader, v.kvstore)\n\t\t\t}\n\t\t}(respc)\n\t\treturn nil\n\t}\n\treturn RemoteConfigError(\"No Files Found\")\n}\n\n// Retrieve the first found remote configuration.\nfunc (v *Viper) watchKeyValueConfig() error {\n\tfor _, rp := range v.remoteProviders {\n\t\tval, err := v.watchRemoteConfig(rp)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tv.kvstore = val\n\t\treturn nil\n\t}\n\treturn RemoteConfigError(\"No Files Found\")\n}\n\nfunc (v *Viper) watchRemoteConfig(provider RemoteProvider) (map[string]interface{}, error) {\n\treader, err := RemoteConfig.Watch(provider)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = v.unmarshalReader(reader, v.kvstore)\n\treturn v.kvstore, err\n}\n\n// AllKeys returns all keys holding a value, regardless of where they are set.\n// Nested keys are returned with a v.keyDelim (= \".\") separator\nfunc AllKeys() []string { return v.AllKeys() }\nfunc (v *Viper) AllKeys() []string {\n\tm := map[string]bool{}\n\t// add all paths, by order of descending priority to ensure correct shadowing\n\tm = v.flattenAndMergeMap(m, castMapStringToMapInterface(v.aliases), \"\")\n\tm = v.flattenAndMergeMap(m, v.override, \"\")\n\tm = v.mergeFlatMap(m, castMapFlagToMapInterface(v.pflags))\n\tm = v.mergeFlatMap(m, castMapStringToMapInterface(v.env))\n\tm = v.flattenAndMergeMap(m, v.config, \"\")\n\tm = v.flattenAndMergeMap(m, v.kvstore, \"\")\n\tm = v.flattenAndMergeMap(m, v.defaults, \"\")\n\n\t// convert set of paths to list\n\ta := []string{}\n\tfor x := range m {\n\t\ta = append(a, x)\n\t}\n\treturn a\n}\n\n// flattenAndMergeMap recursively flattens the given map into a map[string]bool\n// of key paths (used as a set, easier to manipulate than a []string):\n// - each path is merged into a single key string, delimited with v.keyDelim (= \".\")\n// - if a path is shadowed by an earlier value in the initial shadow map,\n//   it is skipped.\n// The resulting set of paths is merged to the given shadow set at the same time.\nfunc (v *Viper) flattenAndMergeMap(shadow map[string]bool, m map[string]interface{}, prefix string) map[string]bool {\n\tif shadow != nil && prefix != \"\" && shadow[prefix] {\n\t\t// prefix is shadowed => nothing more to flatten\n\t\treturn shadow\n\t}\n\tif shadow == nil {\n\t\tshadow = make(map[string]bool)\n\t}\n\n\tvar m2 map[string]interface{}\n\tif prefix != \"\" {\n\t\tprefix += v.keyDelim\n\t}\n\tfor k, val := range m {\n\t\tfullKey := prefix + k\n\t\tswitch val.(type) {\n\t\tcase map[string]interface{}:\n\t\t\tm2 = val.(map[string]interface{})\n\t\tcase map[interface{}]interface{}:\n\t\t\tm2 = cast.ToStringMap(val)\n\t\tdefault:\n\t\t\t// immediate value\n\t\t\tshadow[strings.ToLower(fullKey)] = true\n\t\t\tcontinue\n\t\t}\n\t\t// recursively merge to shadow map\n\t\tshadow = v.flattenAndMergeMap(shadow, m2, fullKey)\n\t}\n\treturn shadow\n}\n\n// mergeFlatMap merges the given maps, excluding values of the second map\n// shadowed by values from the first map.\nfunc (v *Viper) mergeFlatMap(shadow map[string]bool, m map[string]interface{}) map[string]bool {\n\t// scan keys\nouter:\n\tfor k, _ := range m {\n\t\tpath := strings.Split(k, v.keyDelim)\n\t\t// scan intermediate paths\n\t\tvar parentKey string\n\t\tfor i := 1; i < len(path); i++ {\n\t\t\tparentKey = strings.Join(path[0:i], v.keyDelim)\n\t\t\tif shadow[parentKey] {\n\t\t\t\t// path is shadowed, continue\n\t\t\t\tcontinue outer\n\t\t\t}\n\t\t}\n\t\t// add key\n\t\tshadow[strings.ToLower(k)] = true\n\t}\n\treturn shadow\n}\n\n// AllSettings merges all settings and returns them as a map[string]interface{}.\nfunc AllSettings() map[string]interface{} { return v.AllSettings() }\nfunc (v *Viper) AllSettings() map[string]interface{} {\n\tm := map[string]interface{}{}\n\t// start from the list of keys, and construct the map one value at a time\n\tfor _, k := range v.AllKeys() {\n\t\tvalue := v.Get(k)\n\t\tif value == nil {\n\t\t\t// should not happen, since AllKeys() returns only keys holding a value,\n\t\t\t// check just in case anything changes\n\t\t\tcontinue\n\t\t}\n\t\tpath := strings.Split(k, v.keyDelim)\n\t\tlastKey := strings.ToLower(path[len(path)-1])\n\t\tdeepestMap := deepSearch(m, path[0:len(path)-1])\n\t\t// set innermost value\n\t\tdeepestMap[lastKey] = value\n\t}\n\treturn m\n}\n\n// SetFs sets the filesystem to use to read configuration.\nfunc SetFs(fs afero.Fs) { v.SetFs(fs) }\nfunc (v *Viper) SetFs(fs afero.Fs) {\n\tv.fs = fs\n}\n\n// SetConfigName sets name for the config file.\n// Does not include extension.\nfunc SetConfigName(in string) { v.SetConfigName(in) }\nfunc (v *Viper) SetConfigName(in string) {\n\tif in != \"\" {\n\t\tv.configName = in\n\t\tv.configFile = \"\"\n\t}\n}\n\n// SetConfigType sets the type of the configuration returned by the\n// remote source, e.g. \"json\".\nfunc SetConfigType(in string) { v.SetConfigType(in) }\nfunc (v *Viper) SetConfigType(in string) {\n\tif in != \"\" {\n\t\tv.configType = in\n\t}\n}\n\nfunc (v *Viper) getConfigType() string {\n\tif v.configType != \"\" {\n\t\treturn v.configType\n\t}\n\n\tcf, err := v.getConfigFile()\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\text := filepath.Ext(cf)\n\n\tif len(ext) > 1 {\n\t\treturn ext[1:]\n\t}\n\n\treturn \"\"\n}\n\nfunc (v *Viper) getConfigFile() (string, error) {\n\tif v.configFile == \"\" {\n\t\tcf, err := v.findConfigFile()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tv.configFile = cf\n\t}\n\treturn v.configFile, nil\n}\n\nfunc (v *Viper) searchInPath(in string) (filename string) {\n\tjww.DEBUG.Println(\"Searching for config in \", in)\n\tfor _, ext := range SupportedExts {\n\t\tjww.DEBUG.Println(\"Checking for\", filepath.Join(in, v.configName+\".\"+ext))\n\t\tif b, _ := exists(v.fs, filepath.Join(in, v.configName+\".\"+ext)); b {\n\t\t\tjww.DEBUG.Println(\"Found: \", filepath.Join(in, v.configName+\".\"+ext))\n\t\t\treturn filepath.Join(in, v.configName+\".\"+ext)\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// Search all configPaths for any config file.\n// Returns the first path that exists (and is a config file).\nfunc (v *Viper) findConfigFile() (string, error) {\n\tjww.INFO.Println(\"Searching for config in \", v.configPaths)\n\n\tfor _, cp := range v.configPaths {\n\t\tfile := v.searchInPath(cp)\n\t\tif file != \"\" {\n\t\t\treturn file, nil\n\t\t}\n\t}\n\treturn \"\", ConfigFileNotFoundError{v.configName, fmt.Sprintf(\"%s\", v.configPaths)}\n}\n\n// Debug prints all configuration registries for debugging\n// purposes.\nfunc Debug() { v.Debug() }\nfunc (v *Viper) Debug() {\n\tfmt.Printf(\"Aliases:\\n%#v\\n\", v.aliases)\n\tfmt.Printf(\"Override:\\n%#v\\n\", v.override)\n\tfmt.Printf(\"PFlags:\\n%#v\\n\", v.pflags)\n\tfmt.Printf(\"Env:\\n%#v\\n\", v.env)\n\tfmt.Printf(\"Key/Value Store:\\n%#v\\n\", v.kvstore)\n\tfmt.Printf(\"Config:\\n%#v\\n\", v.config)\n\tfmt.Printf(\"Defaults:\\n%#v\\n\", v.defaults)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/valyala/fasttemplate/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Aliaksandr Valialkin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/valyala/fasttemplate/README.md",
    "content": "fasttemplate\n============\n\nSimple and fast template engine for Go.\n\nFasttemplate peforms only a single task - it substitutes template placeholders\nwith user-defined values. At high speed :)\n\nTake a look at [quicktemplate](https://github.com/valyala/quicktemplate) if you  need fast yet powerful html template engine.\n\n*Please note that fasttemplate doesn't do any escaping on template values\nunlike [html/template](http://golang.org/pkg/html/template/) do. So values\nmust be properly escaped before passing them to fasttemplate.*\n\nFasttemplate is faster than [text/template](http://golang.org/pkg/text/template/),\n[strings.Replace](http://golang.org/pkg/strings/#Replace),\n[strings.Replacer](http://golang.org/pkg/strings/#Replacer)\nand [fmt.Fprintf](https://golang.org/pkg/fmt/#Fprintf) on placeholders' substitution.\n\nBelow are benchmark results comparing fasttemplate performance to text/template,\nstrings.Replace, strings.Replacer and fmt.Fprintf:\n\n```\n$ go test -bench=. -benchmem\nPASS\nBenchmarkFmtFprintf-4                   \t 2000000\t       790 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkStringsReplace-4               \t  500000\t      3474 ns/op\t    2112 B/op\t      14 allocs/op\nBenchmarkStringsReplacer-4              \t  500000\t      2657 ns/op\t    2256 B/op\t      23 allocs/op\nBenchmarkTextTemplate-4                 \t  500000\t      3333 ns/op\t     336 B/op\t      19 allocs/op\nBenchmarkFastTemplateExecuteFunc-4      \t 5000000\t       349 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkFastTemplateExecute-4          \t 3000000\t       383 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkFastTemplateExecuteFuncString-4\t 3000000\t       549 ns/op\t     144 B/op\t       1 allocs/op\nBenchmarkFastTemplateExecuteString-4    \t 3000000\t       572 ns/op\t     144 B/op\t       1 allocs/op\nBenchmarkFastTemplateExecuteTagFunc-4   \t 2000000\t       743 ns/op\t     144 B/op\t       3 allocs/op\n```\n\n\nDocs\n====\n\nSee http://godoc.org/github.com/valyala/fasttemplate .\n\n\nUsage\n=====\n\n```go\n\ttemplate := \"http://{{host}}/?q={{query}}&foo={{bar}}{{bar}}\"\n\tt := fasttemplate.New(template, \"{{\", \"}}\")\n\ts := t.ExecuteString(map[string]interface{}{\n\t\t\"host\":  \"google.com\",\n\t\t\"query\": url.QueryEscape(\"hello=world\"),\n\t\t\"bar\":   \"foobar\",\n\t})\n\tfmt.Printf(\"%s\", s)\n\n\t// Output:\n\t// http://google.com/?q=hello%3Dworld&foo=foobarfoobar\n```\n\n\nAdvanced usage\n==============\n\n```go\n\ttemplate := \"Hello, [user]! You won [prize]!!! [foobar]\"\n\tt, err := fasttemplate.NewTemplate(template, \"[\", \"]\")\n\tif err != nil {\n\t\tlog.Fatalf(\"unexpected error when parsing template: %s\", err)\n\t}\n\ts := t.ExecuteFuncString(func(w io.Writer, tag string) (int, error) {\n\t\tswitch tag {\n\t\tcase \"user\":\n\t\t\treturn w.Write([]byte(\"John\"))\n\t\tcase \"prize\":\n\t\t\treturn w.Write([]byte(\"$100500\"))\n\t\tdefault:\n\t\t\treturn w.Write([]byte(fmt.Sprintf(\"[unknown tag %q]\", tag)))\n\t\t}\n\t})\n\tfmt.Printf(\"%s\", s)\n\n\t// Output:\n\t// Hello, John! You won $100500!!! [unknown tag \"foobar\"]\n```\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/github.com/valyala/fasttemplate/template.go",
    "content": "// Package fasttemplate implements simple and fast template library.\n//\n// Fasttemplate is faster than text/template, strings.Replace\n// and strings.Replacer.\n//\n// Fasttemplate ideally fits for fast and simple placeholders' substitutions.\npackage fasttemplate\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n)\n\n// Template implements simple template engine, which can be used for fast\n// tags' (aka placeholders) substitution.\ntype Template struct {\n\ttexts           [][]byte\n\ttags            []string\n\tbytesBufferPool sync.Pool\n}\n\n// New parses the given template using the given startTag and endTag\n// as tag start and tag end.\n//\n// The returned template can be executed by concurrently running goroutines\n// using Execute* methods.\n//\n// New panics if the given template cannot be parsed. Use NewTemplate instead\n// if template may contain errors.\nfunc New(template, startTag, endTag string) *Template {\n\tt, err := NewTemplate(template, startTag, endTag)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// NewTemplate parses the given template using the given startTag and endTag\n// as tag start and tag end.\n//\n// The returned template can be executed by concurrently running goroutines\n// using Execute* methods.\nfunc NewTemplate(template, startTag, endTag string) (*Template, error) {\n\tvar t Template\n\n\tif len(startTag) == 0 {\n\t\tpanic(\"startTag cannot be empty\")\n\t}\n\tif len(endTag) == 0 {\n\t\tpanic(\"endTag cannot be empty\")\n\t}\n\n\ts := []byte(template)\n\ta := []byte(startTag)\n\tb := []byte(endTag)\n\n\tfor {\n\t\tn := bytes.Index(s, a)\n\t\tif n < 0 {\n\t\t\tt.texts = append(t.texts, s)\n\t\t\tbreak\n\t\t}\n\t\tt.texts = append(t.texts, s[:n])\n\n\t\ts = s[n+len(a):]\n\t\tn = bytes.Index(s, b)\n\t\tif n < 0 {\n\t\t\treturn nil, fmt.Errorf(\"Cannot find end tag=%q in the template=%q starting from %q\", endTag, template, s)\n\t\t}\n\n\t\tt.tags = append(t.tags, string(s[:n]))\n\t\ts = s[n+len(b):]\n\t}\n\n\tt.bytesBufferPool.New = newBytesBuffer\n\treturn &t, nil\n}\n\nfunc newBytesBuffer() interface{} {\n\treturn &bytes.Buffer{}\n}\n\n// TagFunc can be used as a substitution value in the map passed to Execute*.\n// Execute* functions pass tag (placeholder) name in 'tag' argument.\n//\n// TagFunc must be safe to call from concurrently running goroutines.\n//\n// TagFunc must write contents to w and return the number of bytes written.\ntype TagFunc func(w io.Writer, tag string) (int, error)\n\n// ExecuteFunc calls f on each template tag (placeholder) occurrence.\n//\n// Returns the number of bytes written to w.\nfunc (t *Template) ExecuteFunc(w io.Writer, f TagFunc) (int64, error) {\n\tvar nn int64\n\n\tn := len(t.texts) - 1\n\tfor i := 0; i < n; i++ {\n\t\tni, err := w.Write(t.texts[i])\n\t\tif err != nil {\n\t\t\treturn nn, err\n\t\t}\n\t\tnn += int64(ni)\n\n\t\tif ni, err = f(w, t.tags[i]); err != nil {\n\t\t\treturn nn, err\n\t\t}\n\t\tnn += int64(ni)\n\t}\n\tni, err := w.Write(t.texts[n])\n\tif err != nil {\n\t\treturn nn, err\n\t}\n\tnn += int64(ni)\n\treturn nn, nil\n}\n\n// Execute substitutes template tags (placeholders) with the corresponding\n// values from the map m and writes the result to the given writer w.\n//\n// Substitution map m may contain values with the following types:\n//   * []byte - the fastest value type\n//   * string - convenient value type\n//   * TagFunc - flexible value type\n//\n// Returns the number of bytes written to w.\nfunc (t *Template) Execute(w io.Writer, m map[string]interface{}) (int64, error) {\n\treturn t.ExecuteFunc(w, func(w io.Writer, tag string) (int, error) { return stdTagFunc(w, tag, m) })\n}\n\n// ExecuteFuncString call f on each template tag (placeholder) occurrence\n// and substitutes it with the data written to TagFunc's w.\n//\n// Returns the resulting string.\nfunc (t *Template) ExecuteFuncString(f TagFunc) string {\n\tw := t.bytesBufferPool.Get().(*bytes.Buffer)\n\tif _, err := t.ExecuteFunc(w, f); err != nil {\n\t\tpanic(fmt.Sprintf(\"unexpected error: %s\", err))\n\t}\n\ts := string(w.Bytes())\n\tw.Reset()\n\tt.bytesBufferPool.Put(w)\n\treturn s\n}\n\n// ExecuteString substitutes template tags (placeholders) with the corresponding\n// values from the map m and returns the result.\n//\n// Substitution map m may contain values with the following types:\n//   * []byte - the fastest value type\n//   * string - convenient value type\n//   * TagFunc - flexible value type\n//\nfunc (t *Template) ExecuteString(m map[string]interface{}) string {\n\treturn t.ExecuteFuncString(func(w io.Writer, tag string) (int, error) { return stdTagFunc(w, tag, m) })\n}\n\nfunc stdTagFunc(w io.Writer, tag string, m map[string]interface{}) (int, error) {\n\tv := m[tag]\n\tif v == nil {\n\t\treturn 0, nil\n\t}\n\tswitch value := v.(type) {\n\tcase []byte:\n\t\treturn w.Write(value)\n\tcase string:\n\t\treturn w.Write([]byte(value))\n\tcase TagFunc:\n\t\treturn value(w, tag)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"tag=%q contains unexpected value type=%#v. Expected []byte, string or TagFunc\", tag, v))\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/context/context.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package context defines the Context type, which carries deadlines,\n// cancelation signals, and other request-scoped values across API boundaries\n// and between processes.\n// As of Go 1.7 this package is available in the standard library under the\n// name context.  https://golang.org/pkg/context.\n//\n// Incoming requests to a server should create a Context, and outgoing calls to\n// servers should accept a Context. The chain of function calls between must\n// propagate the Context, optionally replacing it with a modified copy created\n// using WithDeadline, WithTimeout, WithCancel, or WithValue.\n//\n// Programs that use Contexts should follow these rules to keep interfaces\n// consistent across packages and enable static analysis tools to check context\n// propagation:\n//\n// Do not store Contexts inside a struct type; instead, pass a Context\n// explicitly to each function that needs it. The Context should be the first\n// parameter, typically named ctx:\n//\n// \tfunc DoSomething(ctx context.Context, arg Arg) error {\n// \t\t// ... use ctx ...\n// \t}\n//\n// Do not pass a nil Context, even if a function permits it. Pass context.TODO\n// if you are unsure about which Context to use.\n//\n// Use context Values only for request-scoped data that transits processes and\n// APIs, not for passing optional parameters to functions.\n//\n// The same Context may be passed to functions running in different goroutines;\n// Contexts are safe for simultaneous use by multiple goroutines.\n//\n// See http://blog.golang.org/context for example code for a server that uses\n// Contexts.\npackage context // import \"golang.org/x/net/context\"\n\n// Background returns a non-nil, empty Context. It is never canceled, has no\n// values, and has no deadline. It is typically used by the main function,\n// initialization, and tests, and as the top-level Context for incoming\n// requests.\nfunc Background() Context {\n\treturn background\n}\n\n// TODO returns a non-nil, empty Context. Code should use context.TODO when\n// it's unclear which Context to use or it is not yet available (because the\n// surrounding function has not yet been extended to accept a Context\n// parameter).  TODO is recognized by static analysis tools that determine\n// whether Contexts are propagated correctly in a program.\nfunc TODO() Context {\n\treturn todo\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/context/go17.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build go1.7\n\npackage context\n\nimport (\n\t\"context\" // standard library's context, as of Go 1.7\n\t\"time\"\n)\n\nvar (\n\ttodo       = context.TODO()\n\tbackground = context.Background()\n)\n\n// Canceled is the error returned by Context.Err when the context is canceled.\nvar Canceled = context.Canceled\n\n// DeadlineExceeded is the error returned by Context.Err when the context's\n// deadline passes.\nvar DeadlineExceeded = context.DeadlineExceeded\n\n// WithCancel returns a copy of parent with a new Done channel. The returned\n// context's Done channel is closed when the returned cancel function is called\n// or when the parent context's Done channel is closed, whichever happens first.\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this Context complete.\nfunc WithCancel(parent Context) (ctx Context, cancel CancelFunc) {\n\tctx, f := context.WithCancel(parent)\n\treturn ctx, CancelFunc(f)\n}\n\n// WithDeadline returns a copy of the parent context with the deadline adjusted\n// to be no later than d. If the parent's deadline is already earlier than d,\n// WithDeadline(parent, d) is semantically equivalent to parent. The returned\n// context's Done channel is closed when the deadline expires, when the returned\n// cancel function is called, or when the parent context's Done channel is\n// closed, whichever happens first.\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this Context complete.\nfunc WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {\n\tctx, f := context.WithDeadline(parent, deadline)\n\treturn ctx, CancelFunc(f)\n}\n\n// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this Context complete:\n//\n// \tfunc slowOperationWithTimeout(ctx context.Context) (Result, error) {\n// \t\tctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)\n// \t\tdefer cancel()  // releases resources if slowOperation completes before timeout elapses\n// \t\treturn slowOperation(ctx)\n// \t}\nfunc WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {\n\treturn WithDeadline(parent, time.Now().Add(timeout))\n}\n\n// WithValue returns a copy of parent in which the value associated with key is\n// val.\n//\n// Use context Values only for request-scoped data that transits processes and\n// APIs, not for passing optional parameters to functions.\nfunc WithValue(parent Context, key interface{}, val interface{}) Context {\n\treturn context.WithValue(parent, key, val)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/context/go19.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build go1.9\n\npackage context\n\nimport \"context\" // standard library's context, as of Go 1.7\n\n// A Context carries a deadline, a cancelation signal, and other values across\n// API boundaries.\n//\n// Context's methods may be called by multiple goroutines simultaneously.\ntype Context = context.Context\n\n// A CancelFunc tells an operation to abandon its work.\n// A CancelFunc does not wait for the work to stop.\n// After the first call, subsequent calls to a CancelFunc do nothing.\ntype CancelFunc = context.CancelFunc\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/context/pre_go17.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !go1.7\n\npackage context\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n)\n\n// An emptyCtx is never canceled, has no values, and has no deadline. It is not\n// struct{}, since vars of this type must have distinct addresses.\ntype emptyCtx int\n\nfunc (*emptyCtx) Deadline() (deadline time.Time, ok bool) {\n\treturn\n}\n\nfunc (*emptyCtx) Done() <-chan struct{} {\n\treturn nil\n}\n\nfunc (*emptyCtx) Err() error {\n\treturn nil\n}\n\nfunc (*emptyCtx) Value(key interface{}) interface{} {\n\treturn nil\n}\n\nfunc (e *emptyCtx) String() string {\n\tswitch e {\n\tcase background:\n\t\treturn \"context.Background\"\n\tcase todo:\n\t\treturn \"context.TODO\"\n\t}\n\treturn \"unknown empty Context\"\n}\n\nvar (\n\tbackground = new(emptyCtx)\n\ttodo       = new(emptyCtx)\n)\n\n// Canceled is the error returned by Context.Err when the context is canceled.\nvar Canceled = errors.New(\"context canceled\")\n\n// DeadlineExceeded is the error returned by Context.Err when the context's\n// deadline passes.\nvar DeadlineExceeded = errors.New(\"context deadline exceeded\")\n\n// WithCancel returns a copy of parent with a new Done channel. The returned\n// context's Done channel is closed when the returned cancel function is called\n// or when the parent context's Done channel is closed, whichever happens first.\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this Context complete.\nfunc WithCancel(parent Context) (ctx Context, cancel CancelFunc) {\n\tc := newCancelCtx(parent)\n\tpropagateCancel(parent, c)\n\treturn c, func() { c.cancel(true, Canceled) }\n}\n\n// newCancelCtx returns an initialized cancelCtx.\nfunc newCancelCtx(parent Context) *cancelCtx {\n\treturn &cancelCtx{\n\t\tContext: parent,\n\t\tdone:    make(chan struct{}),\n\t}\n}\n\n// propagateCancel arranges for child to be canceled when parent is.\nfunc propagateCancel(parent Context, child canceler) {\n\tif parent.Done() == nil {\n\t\treturn // parent is never canceled\n\t}\n\tif p, ok := parentCancelCtx(parent); ok {\n\t\tp.mu.Lock()\n\t\tif p.err != nil {\n\t\t\t// parent has already been canceled\n\t\t\tchild.cancel(false, p.err)\n\t\t} else {\n\t\t\tif p.children == nil {\n\t\t\t\tp.children = make(map[canceler]bool)\n\t\t\t}\n\t\t\tp.children[child] = true\n\t\t}\n\t\tp.mu.Unlock()\n\t} else {\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-parent.Done():\n\t\t\t\tchild.cancel(false, parent.Err())\n\t\t\tcase <-child.Done():\n\t\t\t}\n\t\t}()\n\t}\n}\n\n// parentCancelCtx follows a chain of parent references until it finds a\n// *cancelCtx. This function understands how each of the concrete types in this\n// package represents its parent.\nfunc parentCancelCtx(parent Context) (*cancelCtx, bool) {\n\tfor {\n\t\tswitch c := parent.(type) {\n\t\tcase *cancelCtx:\n\t\t\treturn c, true\n\t\tcase *timerCtx:\n\t\t\treturn c.cancelCtx, true\n\t\tcase *valueCtx:\n\t\t\tparent = c.Context\n\t\tdefault:\n\t\t\treturn nil, false\n\t\t}\n\t}\n}\n\n// removeChild removes a context from its parent.\nfunc removeChild(parent Context, child canceler) {\n\tp, ok := parentCancelCtx(parent)\n\tif !ok {\n\t\treturn\n\t}\n\tp.mu.Lock()\n\tif p.children != nil {\n\t\tdelete(p.children, child)\n\t}\n\tp.mu.Unlock()\n}\n\n// A canceler is a context type that can be canceled directly. The\n// implementations are *cancelCtx and *timerCtx.\ntype canceler interface {\n\tcancel(removeFromParent bool, err error)\n\tDone() <-chan struct{}\n}\n\n// A cancelCtx can be canceled. When canceled, it also cancels any children\n// that implement canceler.\ntype cancelCtx struct {\n\tContext\n\n\tdone chan struct{} // closed by the first cancel call.\n\n\tmu       sync.Mutex\n\tchildren map[canceler]bool // set to nil by the first cancel call\n\terr      error             // set to non-nil by the first cancel call\n}\n\nfunc (c *cancelCtx) Done() <-chan struct{} {\n\treturn c.done\n}\n\nfunc (c *cancelCtx) Err() error {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\treturn c.err\n}\n\nfunc (c *cancelCtx) String() string {\n\treturn fmt.Sprintf(\"%v.WithCancel\", c.Context)\n}\n\n// cancel closes c.done, cancels each of c's children, and, if\n// removeFromParent is true, removes c from its parent's children.\nfunc (c *cancelCtx) cancel(removeFromParent bool, err error) {\n\tif err == nil {\n\t\tpanic(\"context: internal error: missing cancel error\")\n\t}\n\tc.mu.Lock()\n\tif c.err != nil {\n\t\tc.mu.Unlock()\n\t\treturn // already canceled\n\t}\n\tc.err = err\n\tclose(c.done)\n\tfor child := range c.children {\n\t\t// NOTE: acquiring the child's lock while holding parent's lock.\n\t\tchild.cancel(false, err)\n\t}\n\tc.children = nil\n\tc.mu.Unlock()\n\n\tif removeFromParent {\n\t\tremoveChild(c.Context, c)\n\t}\n}\n\n// WithDeadline returns a copy of the parent context with the deadline adjusted\n// to be no later than d. If the parent's deadline is already earlier than d,\n// WithDeadline(parent, d) is semantically equivalent to parent. The returned\n// context's Done channel is closed when the deadline expires, when the returned\n// cancel function is called, or when the parent context's Done channel is\n// closed, whichever happens first.\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this Context complete.\nfunc WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {\n\tif cur, ok := parent.Deadline(); ok && cur.Before(deadline) {\n\t\t// The current deadline is already sooner than the new one.\n\t\treturn WithCancel(parent)\n\t}\n\tc := &timerCtx{\n\t\tcancelCtx: newCancelCtx(parent),\n\t\tdeadline:  deadline,\n\t}\n\tpropagateCancel(parent, c)\n\td := deadline.Sub(time.Now())\n\tif d <= 0 {\n\t\tc.cancel(true, DeadlineExceeded) // deadline has already passed\n\t\treturn c, func() { c.cancel(true, Canceled) }\n\t}\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif c.err == nil {\n\t\tc.timer = time.AfterFunc(d, func() {\n\t\t\tc.cancel(true, DeadlineExceeded)\n\t\t})\n\t}\n\treturn c, func() { c.cancel(true, Canceled) }\n}\n\n// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to\n// implement Done and Err. It implements cancel by stopping its timer then\n// delegating to cancelCtx.cancel.\ntype timerCtx struct {\n\t*cancelCtx\n\ttimer *time.Timer // Under cancelCtx.mu.\n\n\tdeadline time.Time\n}\n\nfunc (c *timerCtx) Deadline() (deadline time.Time, ok bool) {\n\treturn c.deadline, true\n}\n\nfunc (c *timerCtx) String() string {\n\treturn fmt.Sprintf(\"%v.WithDeadline(%s [%s])\", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))\n}\n\nfunc (c *timerCtx) cancel(removeFromParent bool, err error) {\n\tc.cancelCtx.cancel(false, err)\n\tif removeFromParent {\n\t\t// Remove this timerCtx from its parent cancelCtx's children.\n\t\tremoveChild(c.cancelCtx.Context, c)\n\t}\n\tc.mu.Lock()\n\tif c.timer != nil {\n\t\tc.timer.Stop()\n\t\tc.timer = nil\n\t}\n\tc.mu.Unlock()\n}\n\n// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this Context complete:\n//\n// \tfunc slowOperationWithTimeout(ctx context.Context) (Result, error) {\n// \t\tctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)\n// \t\tdefer cancel()  // releases resources if slowOperation completes before timeout elapses\n// \t\treturn slowOperation(ctx)\n// \t}\nfunc WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {\n\treturn WithDeadline(parent, time.Now().Add(timeout))\n}\n\n// WithValue returns a copy of parent in which the value associated with key is\n// val.\n//\n// Use context Values only for request-scoped data that transits processes and\n// APIs, not for passing optional parameters to functions.\nfunc WithValue(parent Context, key interface{}, val interface{}) Context {\n\treturn &valueCtx{parent, key, val}\n}\n\n// A valueCtx carries a key-value pair. It implements Value for that key and\n// delegates all other calls to the embedded Context.\ntype valueCtx struct {\n\tContext\n\tkey, val interface{}\n}\n\nfunc (c *valueCtx) String() string {\n\treturn fmt.Sprintf(\"%v.WithValue(%#v, %#v)\", c.Context, c.key, c.val)\n}\n\nfunc (c *valueCtx) Value(key interface{}) interface{} {\n\tif c.key == key {\n\t\treturn c.val\n\t}\n\treturn c.Context.Value(key)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/context/pre_go19.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !go1.9\n\npackage context\n\nimport \"time\"\n\n// A Context carries a deadline, a cancelation signal, and other values across\n// API boundaries.\n//\n// Context's methods may be called by multiple goroutines simultaneously.\ntype Context interface {\n\t// Deadline returns the time when work done on behalf of this context\n\t// should be canceled. Deadline returns ok==false when no deadline is\n\t// set. Successive calls to Deadline return the same results.\n\tDeadline() (deadline time.Time, ok bool)\n\n\t// Done returns a channel that's closed when work done on behalf of this\n\t// context should be canceled. Done may return nil if this context can\n\t// never be canceled. Successive calls to Done return the same value.\n\t//\n\t// WithCancel arranges for Done to be closed when cancel is called;\n\t// WithDeadline arranges for Done to be closed when the deadline\n\t// expires; WithTimeout arranges for Done to be closed when the timeout\n\t// elapses.\n\t//\n\t// Done is provided for use in select statements:\n\t//\n\t//  // Stream generates values with DoSomething and sends them to out\n\t//  // until DoSomething returns an error or ctx.Done is closed.\n\t//  func Stream(ctx context.Context, out chan<- Value) error {\n\t//  \tfor {\n\t//  \t\tv, err := DoSomething(ctx)\n\t//  \t\tif err != nil {\n\t//  \t\t\treturn err\n\t//  \t\t}\n\t//  \t\tselect {\n\t//  \t\tcase <-ctx.Done():\n\t//  \t\t\treturn ctx.Err()\n\t//  \t\tcase out <- v:\n\t//  \t\t}\n\t//  \t}\n\t//  }\n\t//\n\t// See http://blog.golang.org/pipelines for more examples of how to use\n\t// a Done channel for cancelation.\n\tDone() <-chan struct{}\n\n\t// Err returns a non-nil error value after Done is closed. Err returns\n\t// Canceled if the context was canceled or DeadlineExceeded if the\n\t// context's deadline passed. No other values for Err are defined.\n\t// After Done is closed, successive calls to Err return the same value.\n\tErr() error\n\n\t// Value returns the value associated with this context for key, or nil\n\t// if no value is associated with key. Successive calls to Value with\n\t// the same key returns the same result.\n\t//\n\t// Use context values only for request-scoped data that transits\n\t// processes and API boundaries, not for passing optional parameters to\n\t// functions.\n\t//\n\t// A key identifies a specific value in a Context. Functions that wish\n\t// to store values in Context typically allocate a key in a global\n\t// variable then use that key as the argument to context.WithValue and\n\t// Context.Value. A key can be any type that supports equality;\n\t// packages should define keys as an unexported type to avoid\n\t// collisions.\n\t//\n\t// Packages that define a Context key should provide type-safe accessors\n\t// for the values stores using that key:\n\t//\n\t// \t// Package user defines a User type that's stored in Contexts.\n\t// \tpackage user\n\t//\n\t// \timport \"golang.org/x/net/context\"\n\t//\n\t// \t// User is the type of value stored in the Contexts.\n\t// \ttype User struct {...}\n\t//\n\t// \t// key is an unexported type for keys defined in this package.\n\t// \t// This prevents collisions with keys defined in other packages.\n\t// \ttype key int\n\t//\n\t// \t// userKey is the key for user.User values in Contexts. It is\n\t// \t// unexported; clients use user.NewContext and user.FromContext\n\t// \t// instead of using this key directly.\n\t// \tvar userKey key = 0\n\t//\n\t// \t// NewContext returns a new Context that carries value u.\n\t// \tfunc NewContext(ctx context.Context, u *User) context.Context {\n\t// \t\treturn context.WithValue(ctx, userKey, u)\n\t// \t}\n\t//\n\t// \t// FromContext returns the User value stored in ctx, if any.\n\t// \tfunc FromContext(ctx context.Context) (*User, bool) {\n\t// \t\tu, ok := ctx.Value(userKey).(*User)\n\t// \t\treturn u, ok\n\t// \t}\n\tValue(key interface{}) interface{}\n}\n\n// A CancelFunc tells an operation to abandon its work.\n// A CancelFunc does not wait for the work to stop.\n// After the first call, subsequent calls to a CancelFunc do nothing.\ntype CancelFunc func()\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/idna/idna.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package idna implements IDNA2008 using the compatibility processing\n// defined by UTS (Unicode Technical Standard) #46, which defines a standard to\n// deal with the transition from IDNA2003.\n//\n// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC\n// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.\n// UTS #46 is defined in http://www.unicode.org/reports/tr46.\n// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the\n// differences between these two standards.\npackage idna // import \"golang.org/x/net/idna\"\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/secure/bidirule\"\n\t\"golang.org/x/text/unicode/bidi\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// NOTE: Unlike common practice in Go APIs, the functions will return a\n// sanitized domain name in case of errors. Browsers sometimes use a partially\n// evaluated string as lookup.\n// TODO: the current error handling is, in my opinion, the least opinionated.\n// Other strategies are also viable, though:\n// Option 1) Return an empty string in case of error, but allow the user to\n//    specify explicitly which errors to ignore.\n// Option 2) Return the partially evaluated string if it is itself a valid\n//    string, otherwise return the empty string in case of error.\n// Option 3) Option 1 and 2.\n// Option 4) Always return an empty string for now and implement Option 1 as\n//    needed, and document that the return string may not be empty in case of\n//    error in the future.\n// I think Option 1 is best, but it is quite opinionated.\n\n// ToASCII is a wrapper for Punycode.ToASCII.\nfunc ToASCII(s string) (string, error) {\n\treturn Punycode.process(s, true)\n}\n\n// ToUnicode is a wrapper for Punycode.ToUnicode.\nfunc ToUnicode(s string) (string, error) {\n\treturn Punycode.process(s, false)\n}\n\n// An Option configures a Profile at creation time.\ntype Option func(*options)\n\n// Transitional sets a Profile to use the Transitional mapping as defined in UTS\n// #46. This will cause, for example, \"ß\" to be mapped to \"ss\". Using the\n// transitional mapping provides a compromise between IDNA2003 and IDNA2008\n// compatibility. It is used by most browsers when resolving domain names. This\n// option is only meaningful if combined with MapForLookup.\nfunc Transitional(transitional bool) Option {\n\treturn func(o *options) { o.transitional = true }\n}\n\n// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts\n// are longer than allowed by the RFC.\nfunc VerifyDNSLength(verify bool) Option {\n\treturn func(o *options) { o.verifyDNSLength = verify }\n}\n\n// RemoveLeadingDots removes leading label separators. Leading runes that map to\n// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.\n//\n// This is the behavior suggested by the UTS #46 and is adopted by some\n// browsers.\nfunc RemoveLeadingDots(remove bool) Option {\n\treturn func(o *options) { o.removeLeadingDots = remove }\n}\n\n// ValidateLabels sets whether to check the mandatory label validation criteria\n// as defined in Section 5.4 of RFC 5891. This includes testing for correct use\n// of hyphens ('-'), normalization, validity of runes, and the context rules.\nfunc ValidateLabels(enable bool) Option {\n\treturn func(o *options) {\n\t\t// Don't override existing mappings, but set one that at least checks\n\t\t// normalization if it is not set.\n\t\tif o.mapping == nil && enable {\n\t\t\to.mapping = normalize\n\t\t}\n\t\to.trie = trie\n\t\to.validateLabels = enable\n\t\to.fromPuny = validateFromPunycode\n\t}\n}\n\n// StrictDomainName limits the set of permissible ASCII characters to those\n// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the\n// hyphen). This is set by default for MapForLookup and ValidateForRegistration.\n//\n// This option is useful, for instance, for browsers that allow characters\n// outside this range, for example a '_' (U+005F LOW LINE). See\n// http://www.rfc-editor.org/std/std3.txt for more details This option\n// corresponds to the UseSTD3ASCIIRules option in UTS #46.\nfunc StrictDomainName(use bool) Option {\n\treturn func(o *options) {\n\t\to.trie = trie\n\t\to.useSTD3Rules = use\n\t\to.fromPuny = validateFromPunycode\n\t}\n}\n\n// NOTE: the following options pull in tables. The tables should not be linked\n// in as long as the options are not used.\n\n// BidiRule enables the Bidi rule as defined in RFC 5893. Any application\n// that relies on proper validation of labels should include this rule.\nfunc BidiRule() Option {\n\treturn func(o *options) { o.bidirule = bidirule.ValidString }\n}\n\n// ValidateForRegistration sets validation options to verify that a given IDN is\n// properly formatted for registration as defined by Section 4 of RFC 5891.\nfunc ValidateForRegistration() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateRegistration\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tVerifyDNSLength(true)(o)\n\t\tBidiRule()(o)\n\t}\n}\n\n// MapForLookup sets validation and mapping options such that a given IDN is\n// transformed for domain name lookup according to the requirements set out in\n// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894,\n// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option\n// to add this check.\n//\n// The mappings include normalization and mapping case, width and other\n// compatibility mappings.\nfunc MapForLookup() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateAndMap\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t}\n}\n\ntype options struct {\n\ttransitional      bool\n\tuseSTD3Rules      bool\n\tvalidateLabels    bool\n\tverifyDNSLength   bool\n\tremoveLeadingDots bool\n\n\ttrie *idnaTrie\n\n\t// fromPuny calls validation rules when converting A-labels to U-labels.\n\tfromPuny func(p *Profile, s string) error\n\n\t// mapping implements a validation and mapping step as defined in RFC 5895\n\t// or UTS 46, tailored to, for example, domain registration or lookup.\n\tmapping func(p *Profile, s string) (mapped string, isBidi bool, err error)\n\n\t// bidirule, if specified, checks whether s conforms to the Bidi Rule\n\t// defined in RFC 5893.\n\tbidirule func(s string) bool\n}\n\n// A Profile defines the configuration of an IDNA mapper.\ntype Profile struct {\n\toptions\n}\n\nfunc apply(o *options, opts []Option) {\n\tfor _, f := range opts {\n\t\tf(o)\n\t}\n}\n\n// New creates a new Profile.\n//\n// With no options, the returned Profile is the most permissive and equals the\n// Punycode Profile. Options can be passed to further restrict the Profile. The\n// MapForLookup and ValidateForRegistration options set a collection of options,\n// for lookup and registration purposes respectively, which can be tailored by\n// adding more fine-grained options, where later options override earlier\n// options.\nfunc New(o ...Option) *Profile {\n\tp := &Profile{}\n\tapply(&p.options, o)\n\treturn p\n}\n\n// ToASCII converts a domain or domain label to its ASCII form. For example,\n// ToASCII(\"bücher.example.com\") is \"xn--bcher-kva.example.com\", and\n// ToASCII(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToASCII(s string) (string, error) {\n\treturn p.process(s, true)\n}\n\n// ToUnicode converts a domain or domain label to its Unicode form. For example,\n// ToUnicode(\"xn--bcher-kva.example.com\") is \"bücher.example.com\", and\n// ToUnicode(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToUnicode(s string) (string, error) {\n\tpp := *p\n\tpp.transitional = false\n\treturn pp.process(s, false)\n}\n\n// String reports a string with a description of the profile for debugging\n// purposes. The string format may change with different versions.\nfunc (p *Profile) String() string {\n\ts := \"\"\n\tif p.transitional {\n\t\ts = \"Transitional\"\n\t} else {\n\t\ts = \"NonTransitional\"\n\t}\n\tif p.useSTD3Rules {\n\t\ts += \":UseSTD3Rules\"\n\t}\n\tif p.validateLabels {\n\t\ts += \":ValidateLabels\"\n\t}\n\tif p.verifyDNSLength {\n\t\ts += \":VerifyDNSLength\"\n\t}\n\treturn s\n}\n\nvar (\n\t// Punycode is a Profile that does raw punycode processing with a minimum\n\t// of validation.\n\tPunycode *Profile = punycode\n\n\t// Lookup is the recommended profile for looking up domain names, according\n\t// to Section 5 of RFC 5891. The exact configuration of this profile may\n\t// change over time.\n\tLookup *Profile = lookup\n\n\t// Display is the recommended profile for displaying domain names.\n\t// The configuration of this profile may change over time.\n\tDisplay *Profile = display\n\n\t// Registration is the recommended profile for checking whether a given\n\t// IDN is valid for registration, according to Section 4 of RFC 5891.\n\tRegistration *Profile = registration\n\n\tpunycode = &Profile{}\n\tlookup   = &Profile{options{\n\t\ttransitional:   true,\n\t\tuseSTD3Rules:   true,\n\t\tvalidateLabels: true,\n\t\ttrie:           trie,\n\t\tfromPuny:       validateFromPunycode,\n\t\tmapping:        validateAndMap,\n\t\tbidirule:       bidirule.ValidString,\n\t}}\n\tdisplay = &Profile{options{\n\t\tuseSTD3Rules:   true,\n\t\tvalidateLabels: true,\n\t\ttrie:           trie,\n\t\tfromPuny:       validateFromPunycode,\n\t\tmapping:        validateAndMap,\n\t\tbidirule:       bidirule.ValidString,\n\t}}\n\tregistration = &Profile{options{\n\t\tuseSTD3Rules:    true,\n\t\tvalidateLabels:  true,\n\t\tverifyDNSLength: true,\n\t\ttrie:            trie,\n\t\tfromPuny:        validateFromPunycode,\n\t\tmapping:         validateRegistration,\n\t\tbidirule:        bidirule.ValidString,\n\t}}\n\n\t// TODO: profiles\n\t// Register: recommended for approving domain names: don't do any mappings\n\t// but rather reject on invalid input. Bundle or block deviation characters.\n)\n\ntype labelError struct{ label, code_ string }\n\nfunc (e labelError) code() string { return e.code_ }\nfunc (e labelError) Error() string {\n\treturn fmt.Sprintf(\"idna: invalid label %q\", e.label)\n}\n\ntype runeError rune\n\nfunc (e runeError) code() string { return \"P1\" }\nfunc (e runeError) Error() string {\n\treturn fmt.Sprintf(\"idna: disallowed rune %U\", e)\n}\n\n// process implements the algorithm described in section 4 of UTS #46,\n// see http://www.unicode.org/reports/tr46.\nfunc (p *Profile) process(s string, toASCII bool) (string, error) {\n\tvar err error\n\tvar isBidi bool\n\tif p.mapping != nil {\n\t\ts, isBidi, err = p.mapping(p, s)\n\t}\n\t// Remove leading empty labels.\n\tif p.removeLeadingDots {\n\t\tfor ; len(s) > 0 && s[0] == '.'; s = s[1:] {\n\t\t}\n\t}\n\t// TODO: allow for a quick check of the tables data.\n\t// It seems like we should only create this error on ToASCII, but the\n\t// UTS 46 conformance tests suggests we should always check this.\n\tif err == nil && p.verifyDNSLength && s == \"\" {\n\t\terr = &labelError{s, \"A4\"}\n\t}\n\tlabels := labelIter{orig: s}\n\tfor ; !labels.done(); labels.next() {\n\t\tlabel := labels.label()\n\t\tif label == \"\" {\n\t\t\t// Empty labels are not okay. The label iterator skips the last\n\t\t\t// label if it is empty.\n\t\t\tif err == nil && p.verifyDNSLength {\n\t\t\t\terr = &labelError{s, \"A4\"}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(label, acePrefix) {\n\t\t\tu, err2 := decode(label[len(acePrefix):])\n\t\t\tif err2 != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\t// Spec says keep the old label.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tisBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight\n\t\t\tlabels.set(u)\n\t\t\tif err == nil && p.validateLabels {\n\t\t\t\terr = p.fromPuny(p, u)\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\t// This should be called on NonTransitional, according to the\n\t\t\t\t// spec, but that currently does not have any effect. Use the\n\t\t\t\t// original profile to preserve options.\n\t\t\t\terr = p.validateLabel(u)\n\t\t\t}\n\t\t} else if err == nil {\n\t\t\terr = p.validateLabel(label)\n\t\t}\n\t}\n\tif isBidi && p.bidirule != nil && err == nil {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tif !p.bidirule(labels.label()) {\n\t\t\t\terr = &labelError{s, \"B\"}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif toASCII {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tlabel := labels.label()\n\t\t\tif !ascii(label) {\n\t\t\t\ta, err2 := encode(acePrefix, label)\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\tlabel = a\n\t\t\t\tlabels.set(a)\n\t\t\t}\n\t\t\tn := len(label)\n\t\t\tif p.verifyDNSLength && err == nil && (n == 0 || n > 63) {\n\t\t\t\terr = &labelError{label, \"A4\"}\n\t\t\t}\n\t\t}\n\t}\n\ts = labels.result()\n\tif toASCII && p.verifyDNSLength && err == nil {\n\t\t// Compute the length of the domain name minus the root label and its dot.\n\t\tn := len(s)\n\t\tif n > 0 && s[n-1] == '.' {\n\t\t\tn--\n\t\t}\n\t\tif len(s) < 1 || n > 253 {\n\t\t\terr = &labelError{s, \"A4\"}\n\t\t}\n\t}\n\treturn s, err\n}\n\nfunc normalize(p *Profile, s string) (mapped string, isBidi bool, err error) {\n\t// TODO: consider first doing a quick check to see if any of these checks\n\t// need to be done. This will make it slower in the general case, but\n\t// faster in the common case.\n\tmapped = norm.NFC.String(s)\n\tisBidi = bidirule.DirectionString(mapped) == bidi.RightToLeft\n\treturn mapped, isBidi, nil\n}\n\nfunc validateRegistration(p *Profile, s string) (idem string, bidi bool, err error) {\n\t// TODO: filter need for normalization in loop below.\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn s, false, &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\treturn s, bidi, runeError(utf8.RuneError)\n\t\t}\n\t\tbidi = bidi || info(v).isBidi(s[i:])\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\t// TODO: handle the NV8 defined in the Unicode idna data set to allow\n\t\t// for strict conformance to IDNA2008.\n\t\tcase valid, deviation:\n\t\tcase disallowed, mapped, unknown, ignored:\n\t\t\tr, _ := utf8.DecodeRuneInString(s[i:])\n\t\t\treturn s, bidi, runeError(r)\n\t\t}\n\t\ti += sz\n\t}\n\treturn s, bidi, nil\n}\n\nfunc (c info) isBidi(s string) bool {\n\tif !c.isMapped() {\n\t\treturn c&attributesMask == rtl\n\t}\n\t// TODO: also store bidi info for mapped data. This is possible, but a bit\n\t// cumbersome and not for the common case.\n\tp, _ := bidi.LookupString(s)\n\tswitch p.Class() {\n\tcase bidi.R, bidi.AL, bidi.AN:\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc validateAndMap(p *Profile, s string) (vm string, bidi bool, err error) {\n\tvar (\n\t\tb []byte\n\t\tk int\n\t)\n\t// combinedInfoBits contains the or-ed bits of all runes. We use this\n\t// to derive the mayNeedNorm bit later. This may trigger normalization\n\t// overeagerly, but it will not do so in the common case. The end result\n\t// is another 10% saving on BenchmarkProfile for the common case.\n\tvar combinedInfoBits info\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\tb = append(b, s[k:i]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t\tk = len(s)\n\t\t\tif err == nil {\n\t\t\t\terr = runeError(utf8.RuneError)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcombinedInfoBits |= info(v)\n\t\tbidi = bidi || info(v).isBidi(s[i:])\n\t\tstart := i\n\t\ti += sz\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\tcase valid:\n\t\t\tcontinue\n\t\tcase disallowed:\n\t\t\tif err == nil {\n\t\t\t\tr, _ := utf8.DecodeRuneInString(s[start:])\n\t\t\t\terr = runeError(r)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase mapped, deviation:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = info(v).appendMapping(b, s[start:i])\n\t\tcase ignored:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\t// drop the rune\n\t\tcase unknown:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t}\n\t\tk = i\n\t}\n\tif k == 0 {\n\t\t// No changes so far.\n\t\tif combinedInfoBits&mayNeedNorm != 0 {\n\t\t\ts = norm.NFC.String(s)\n\t\t}\n\t} else {\n\t\tb = append(b, s[k:]...)\n\t\tif norm.NFC.QuickSpan(b) != len(b) {\n\t\t\tb = norm.NFC.Bytes(b)\n\t\t}\n\t\t// TODO: the punycode converters require strings as input.\n\t\ts = string(b)\n\t}\n\treturn s, bidi, err\n}\n\n// A labelIter allows iterating over domain name labels.\ntype labelIter struct {\n\torig     string\n\tslice    []string\n\tcurStart int\n\tcurEnd   int\n\ti        int\n}\n\nfunc (l *labelIter) reset() {\n\tl.curStart = 0\n\tl.curEnd = 0\n\tl.i = 0\n}\n\nfunc (l *labelIter) done() bool {\n\treturn l.curStart >= len(l.orig)\n}\n\nfunc (l *labelIter) result() string {\n\tif l.slice != nil {\n\t\treturn strings.Join(l.slice, \".\")\n\t}\n\treturn l.orig\n}\n\nfunc (l *labelIter) label() string {\n\tif l.slice != nil {\n\t\treturn l.slice[l.i]\n\t}\n\tp := strings.IndexByte(l.orig[l.curStart:], '.')\n\tl.curEnd = l.curStart + p\n\tif p == -1 {\n\t\tl.curEnd = len(l.orig)\n\t}\n\treturn l.orig[l.curStart:l.curEnd]\n}\n\n// next sets the value to the next label. It skips the last label if it is empty.\nfunc (l *labelIter) next() {\n\tl.i++\n\tif l.slice != nil {\n\t\tif l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == \"\" {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t} else {\n\t\tl.curStart = l.curEnd + 1\n\t\tif l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t}\n}\n\nfunc (l *labelIter) set(s string) {\n\tif l.slice == nil {\n\t\tl.slice = strings.Split(l.orig, \".\")\n\t}\n\tl.slice[l.i] = s\n}\n\n// acePrefix is the ASCII Compatible Encoding prefix.\nconst acePrefix = \"xn--\"\n\nfunc (p *Profile) simplify(cat category) category {\n\tswitch cat {\n\tcase disallowedSTD3Mapped:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = mapped\n\t\t}\n\tcase disallowedSTD3Valid:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = valid\n\t\t}\n\tcase deviation:\n\t\tif !p.transitional {\n\t\t\tcat = valid\n\t\t}\n\tcase validNV8, validXV8:\n\t\t// TODO: handle V2008\n\t\tcat = valid\n\t}\n\treturn cat\n}\n\nfunc validateFromPunycode(p *Profile, s string) error {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn &labelError{s, \"V1\"}\n\t}\n\t// TODO: detect whether string may have to be normalized in the following\n\t// loop.\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\treturn runeError(utf8.RuneError)\n\t\t}\n\t\tif c := p.simplify(info(v).category()); c != valid && c != deviation {\n\t\t\treturn &labelError{s, \"V6\"}\n\t\t}\n\t\ti += sz\n\t}\n\treturn nil\n}\n\nconst (\n\tzwnj = \"\\u200c\"\n\tzwj  = \"\\u200d\"\n)\n\ntype joinState int8\n\nconst (\n\tstateStart joinState = iota\n\tstateVirama\n\tstateBefore\n\tstateBeforeVirama\n\tstateAfter\n\tstateFAIL\n)\n\nvar joinStates = [][numJoinTypes]joinState{\n\tstateStart: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateVirama,\n\t},\n\tstateVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t},\n\tstateBefore: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateBefore,\n\t\tjoinZWNJ:   stateAfter,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateBeforeVirama,\n\t},\n\tstateBeforeVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t\tjoiningT: stateBefore,\n\t},\n\tstateAfter: {\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateAfter,\n\t\tjoiningR:   stateStart,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateAfter, // no-op as we can't accept joiners here\n\t},\n\tstateFAIL: {\n\t\t0:          stateFAIL,\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateFAIL,\n\t\tjoiningT:   stateFAIL,\n\t\tjoiningR:   stateFAIL,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateFAIL,\n\t},\n}\n\n// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are\n// already implicitly satisfied by the overall implementation.\nfunc (p *Profile) validateLabel(s string) (err error) {\n\tif s == \"\" {\n\t\tif p.verifyDNSLength {\n\t\t\treturn &labelError{s, \"A4\"}\n\t\t}\n\t\treturn nil\n\t}\n\tif !p.validateLabels {\n\t\treturn nil\n\t}\n\ttrie := p.trie // p.validateLabels is only set if trie is set.\n\tif len(s) > 4 && s[2] == '-' && s[3] == '-' {\n\t\treturn &labelError{s, \"V2\"}\n\t}\n\tif s[0] == '-' || s[len(s)-1] == '-' {\n\t\treturn &labelError{s, \"V3\"}\n\t}\n\t// TODO: merge the use of this in the trie.\n\tv, sz := trie.lookupString(s)\n\tx := info(v)\n\tif x.isModifier() {\n\t\treturn &labelError{s, \"V5\"}\n\t}\n\t// Quickly return in the absence of zero-width (non) joiners.\n\tif strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 {\n\t\treturn nil\n\t}\n\tst := stateStart\n\tfor i := 0; ; {\n\t\tjt := x.joinType()\n\t\tif s[i:i+sz] == zwj {\n\t\t\tjt = joinZWJ\n\t\t} else if s[i:i+sz] == zwnj {\n\t\t\tjt = joinZWNJ\n\t\t}\n\t\tst = joinStates[st][jt]\n\t\tif x.isViramaModifier() {\n\t\t\tst = joinStates[st][joinVirama]\n\t\t}\n\t\tif i += sz; i == len(s) {\n\t\t\tbreak\n\t\t}\n\t\tv, sz = trie.lookupString(s[i:])\n\t\tx = info(v)\n\t}\n\tif st == stateFAIL || st == stateAfter {\n\t\treturn &labelError{s, \"C\"}\n\t}\n\treturn nil\n}\n\nfunc ascii(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/idna/punycode.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage idna\n\n// This file implements the Punycode algorithm from RFC 3492.\n\nimport (\n\t\"math\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// These parameter values are specified in section 5.\n//\n// All computation is done with int32s, so that overflow behavior is identical\n// regardless of whether int is 32-bit or 64-bit.\nconst (\n\tbase        int32 = 36\n\tdamp        int32 = 700\n\tinitialBias int32 = 72\n\tinitialN    int32 = 128\n\tskew        int32 = 38\n\ttmax        int32 = 26\n\ttmin        int32 = 1\n)\n\nfunc punyError(s string) error { return &labelError{s, \"A3\"} }\n\n// decode decodes a string as specified in section 6.2.\nfunc decode(encoded string) (string, error) {\n\tif encoded == \"\" {\n\t\treturn \"\", nil\n\t}\n\tpos := 1 + strings.LastIndex(encoded, \"-\")\n\tif pos == 1 {\n\t\treturn \"\", punyError(encoded)\n\t}\n\tif pos == len(encoded) {\n\t\treturn encoded[:len(encoded)-1], nil\n\t}\n\toutput := make([]rune, 0, len(encoded))\n\tif pos != 0 {\n\t\tfor _, r := range encoded[:pos-1] {\n\t\t\toutput = append(output, r)\n\t\t}\n\t}\n\ti, n, bias := int32(0), initialN, initialBias\n\tfor pos < len(encoded) {\n\t\toldI, w := i, int32(1)\n\t\tfor k := base; ; k += base {\n\t\t\tif pos == len(encoded) {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tdigit, ok := decodeDigit(encoded[pos])\n\t\t\tif !ok {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tpos++\n\t\t\ti += digit * w\n\t\t\tif i < 0 {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tt := k - bias\n\t\t\tif t < tmin {\n\t\t\t\tt = tmin\n\t\t\t} else if t > tmax {\n\t\t\t\tt = tmax\n\t\t\t}\n\t\t\tif digit < t {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tw *= base - t\n\t\t\tif w >= math.MaxInt32/base {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t}\n\t\tx := int32(len(output) + 1)\n\t\tbias = adapt(i-oldI, x, oldI == 0)\n\t\tn += i / x\n\t\ti %= x\n\t\tif n > utf8.MaxRune || len(output) >= 1024 {\n\t\t\treturn \"\", punyError(encoded)\n\t\t}\n\t\toutput = append(output, 0)\n\t\tcopy(output[i+1:], output[i:])\n\t\toutput[i] = n\n\t\ti++\n\t}\n\treturn string(output), nil\n}\n\n// encode encodes a string as specified in section 6.3 and prepends prefix to\n// the result.\n//\n// The \"while h < length(input)\" line in the specification becomes \"for\n// remaining != 0\" in the Go code, because len(s) in Go is in bytes, not runes.\nfunc encode(prefix, s string) (string, error) {\n\toutput := make([]byte, len(prefix), len(prefix)+1+2*len(s))\n\tcopy(output, prefix)\n\tdelta, n, bias := int32(0), initialN, initialBias\n\tb, remaining := int32(0), int32(0)\n\tfor _, r := range s {\n\t\tif r < 0x80 {\n\t\t\tb++\n\t\t\toutput = append(output, byte(r))\n\t\t} else {\n\t\t\tremaining++\n\t\t}\n\t}\n\th := b\n\tif b > 0 {\n\t\toutput = append(output, '-')\n\t}\n\tfor remaining != 0 {\n\t\tm := int32(0x7fffffff)\n\t\tfor _, r := range s {\n\t\t\tif m > r && r >= n {\n\t\t\t\tm = r\n\t\t\t}\n\t\t}\n\t\tdelta += (m - n) * (h + 1)\n\t\tif delta < 0 {\n\t\t\treturn \"\", punyError(s)\n\t\t}\n\t\tn = m\n\t\tfor _, r := range s {\n\t\t\tif r < n {\n\t\t\t\tdelta++\n\t\t\t\tif delta < 0 {\n\t\t\t\t\treturn \"\", punyError(s)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif r > n {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tq := delta\n\t\t\tfor k := base; ; k += base {\n\t\t\t\tt := k - bias\n\t\t\t\tif t < tmin {\n\t\t\t\t\tt = tmin\n\t\t\t\t} else if t > tmax {\n\t\t\t\t\tt = tmax\n\t\t\t\t}\n\t\t\t\tif q < t {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\toutput = append(output, encodeDigit(t+(q-t)%(base-t)))\n\t\t\t\tq = (q - t) / (base - t)\n\t\t\t}\n\t\t\toutput = append(output, encodeDigit(q))\n\t\t\tbias = adapt(delta, h+1, h == b)\n\t\t\tdelta = 0\n\t\t\th++\n\t\t\tremaining--\n\t\t}\n\t\tdelta++\n\t\tn++\n\t}\n\treturn string(output), nil\n}\n\nfunc decodeDigit(x byte) (digit int32, ok bool) {\n\tswitch {\n\tcase '0' <= x && x <= '9':\n\t\treturn int32(x - ('0' - 26)), true\n\tcase 'A' <= x && x <= 'Z':\n\t\treturn int32(x - 'A'), true\n\tcase 'a' <= x && x <= 'z':\n\t\treturn int32(x - 'a'), true\n\t}\n\treturn 0, false\n}\n\nfunc encodeDigit(digit int32) byte {\n\tswitch {\n\tcase 0 <= digit && digit < 26:\n\t\treturn byte(digit + 'a')\n\tcase 26 <= digit && digit < 36:\n\t\treturn byte(digit + ('0' - 26))\n\t}\n\tpanic(\"idna: internal error in punycode encoding\")\n}\n\n// adapt is the bias adaptation function specified in section 6.1.\nfunc adapt(delta, numPoints int32, firstTime bool) int32 {\n\tif firstTime {\n\t\tdelta /= damp\n\t} else {\n\t\tdelta /= 2\n\t}\n\tdelta += delta / numPoints\n\tk := int32(0)\n\tfor delta > ((base-tmin)*tmax)/2 {\n\t\tdelta /= base - tmin\n\t\tk += base\n\t}\n\treturn k + (base-tmin+1)*delta/(delta+skew)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/idna/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"10.0.0\"\n\nvar mappings string = \"\" + // Size: 8176 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29052 bytes (28.37 KiB). Checksum: ef06e7ecc26f36dd.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x0040, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0040, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e,\n\t0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26,\n\t0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6,\n\t0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46,\n\t0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06,\n\t0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6,\n\t0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86,\n\t0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d,\n\t0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d,\n\t0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d,\n\t0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd,\n\t0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd,\n\t0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d,\n\t0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d,\n\t0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d,\n\t0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd,\n\t0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d,\n\t0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd,\n\t0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d,\n\t0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd,\n\t0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd,\n\t0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d,\n\t0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd,\n\t0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d,\n\t0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd,\n\t0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd,\n\t0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d,\n\t0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d,\n\t0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd,\n\t0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d,\n\t0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d,\n\t0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd,\n\t0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd,\n\t0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d,\n\t0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d,\n\t0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd,\n\t0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d,\n\t0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15,\n\t0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75,\n\t0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded,\n\t0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d,\n\t0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5,\n\t0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d,\n\t0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d,\n\t0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd,\n\t0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed,\n\t0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d,\n\t0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0040,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575,\n\t0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635,\n\t0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008,\n\t0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715,\n\t0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5,\n\t0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935,\n\t0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5,\n\t0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5,\n\t0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35,\n\t0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5,\n\t0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75,\n\t0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35,\n\t0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56,\n\t0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95,\n\t0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040,\n\t0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081,\n\t0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115,\n\t0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5,\n\t0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295,\n\t0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355,\n\t0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415,\n\t0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515,\n\t0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595,\n\t0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5,\n\t0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655,\n\t0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115,\n\t0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735,\n\t0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5,\n\t0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5,\n\t0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5,\n\t0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5,\n\t0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5,\n\t0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715,\n\t0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35,\n\t0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x0040,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0040,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289,\n\t0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349,\n\t0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409,\n\t0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9,\n\t0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589,\n\t0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649,\n\t0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709,\n\t0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79,\n\t0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39,\n\t0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9,\n\t0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39,\n\t0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9,\n\t0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79,\n\t0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39,\n\t0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9,\n\t0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059,\n\t0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9,\n\t0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239,\n\t0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9,\n\t0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399,\n\t0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459,\n\t0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309,\n\t0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559,\n\t0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9,\n\t0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679,\n\t0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9,\n\t0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d,\n\t0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9,\n\t0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959,\n\t0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d,\n\t0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d,\n\t0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9,\n\t0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99,\n\t0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9,\n\t0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9,\n\t0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99,\n\t0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39,\n\t0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639,\n\t0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9,\n\t0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d,\n\t0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9,\n\t0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d,\n\t0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd,\n\t0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979,\n\t0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19,\n\t0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d,\n\t0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d,\n\t0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99,\n\t0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39,\n\t0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9,\n\t0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39,\n\t0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd,\n\t0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19,\n\t0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9,\n\t0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59,\n\t0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd,\n\t0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d,\n\t0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d,\n\t0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d,\n\t0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879,\n\t0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919,\n\t0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd,\n\t0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9,\n\t0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99,\n\t0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39,\n\t0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9,\n\t0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d,\n\t0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19,\n\t0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9,\n\t0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59,\n\t0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9,\n\t0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8,\n\t0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0,\n\t0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe,\n\t0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e,\n\t0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c,\n\t0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x127, 0x401: 0x128, 0x402: 0x129, 0x403: 0x12a, 0x404: 0x12b, 0x405: 0x12c, 0x406: 0x12d, 0x407: 0x12e,\n\t0x408: 0x12f, 0x409: 0xba, 0x40a: 0x130, 0x40b: 0x131, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x132, 0x411: 0x133, 0x412: 0x134, 0x413: 0x135, 0x414: 0xba, 0x415: 0xba, 0x416: 0x136, 0x417: 0x137,\n\t0x418: 0x138, 0x419: 0x139, 0x41a: 0x13a, 0x41b: 0x13b, 0x41c: 0x13c, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0xba, 0x421: 0xba, 0x422: 0x13d, 0x423: 0x13e, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0x13f, 0x429: 0x140, 0x42a: 0x141, 0x42b: 0x142, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x143, 0x431: 0x144, 0x432: 0x145, 0x433: 0xba, 0x434: 0x146, 0x435: 0x147, 0x436: 0xba, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x148, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x149, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x14a, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x14b, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x14c, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x142, 0x529: 0x14d, 0x52a: 0xba, 0x52b: 0x14e, 0x52c: 0x14f, 0x52d: 0x150, 0x52e: 0x151, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x152, 0x53e: 0x153, 0x53f: 0x154,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x155,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x156, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x157, 0x585: 0x158, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x159, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x15a, 0x5b2: 0x15b, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x15c, 0x5c4: 0x15d, 0x5c5: 0x15e, 0x5c6: 0x15f, 0x5c7: 0x160,\n\t0x5c8: 0x9b, 0x5c9: 0x161, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x162, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x163, 0x5e9: 0x164, 0x5ea: 0x165, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x166, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x167, 0x624: 0x6f, 0x625: 0x168, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x169, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x16a, 0x641: 0x9b, 0x642: 0x16b, 0x643: 0x16c, 0x644: 0x73, 0x645: 0x74, 0x646: 0x16d, 0x647: 0x16e,\n\t0x648: 0x75, 0x649: 0x16f, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x170, 0x65c: 0x9b, 0x65d: 0x171, 0x65e: 0x9b, 0x65f: 0x172,\n\t0x660: 0x173, 0x661: 0x174, 0x662: 0x175, 0x663: 0xba, 0x664: 0x176, 0x665: 0x177, 0x666: 0x178, 0x667: 0x179,\n\t0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x17a, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x17b, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x17c, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x17d, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x17e,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x17f, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x180, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x181, 0x841: 0x182, 0x842: 0xba, 0x843: 0xba, 0x844: 0x183, 0x845: 0x183, 0x846: 0x183, 0x847: 0x184,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 264 entries, 528 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x8a, 0x93, 0xa3, 0xb1, 0xbd, 0xc9, 0xda, 0xe4, 0xeb, 0xf8, 0x109, 0x110, 0x11b, 0x12a, 0x138, 0x142, 0x144, 0x149, 0x14c, 0x14f, 0x151, 0x15d, 0x168, 0x170, 0x176, 0x17c, 0x181, 0x186, 0x189, 0x18d, 0x193, 0x198, 0x1a4, 0x1ae, 0x1b4, 0x1c5, 0x1cf, 0x1d2, 0x1da, 0x1dd, 0x1ea, 0x1f2, 0x1f6, 0x1fd, 0x205, 0x215, 0x221, 0x223, 0x22d, 0x239, 0x245, 0x251, 0x259, 0x25e, 0x268, 0x279, 0x27d, 0x288, 0x28c, 0x295, 0x29d, 0x2a3, 0x2a8, 0x2ab, 0x2af, 0x2b5, 0x2b9, 0x2bd, 0x2c3, 0x2ca, 0x2d0, 0x2d8, 0x2df, 0x2ea, 0x2f4, 0x2f8, 0x2fb, 0x301, 0x305, 0x307, 0x30a, 0x30c, 0x30f, 0x319, 0x31c, 0x32b, 0x32f, 0x334, 0x337, 0x33b, 0x340, 0x345, 0x34b, 0x351, 0x360, 0x366, 0x36a, 0x379, 0x37e, 0x386, 0x390, 0x39b, 0x3a3, 0x3b4, 0x3bd, 0x3cd, 0x3da, 0x3e4, 0x3e9, 0x3f6, 0x3fa, 0x3ff, 0x401, 0x405, 0x407, 0x40b, 0x414, 0x41a, 0x41e, 0x42e, 0x438, 0x43d, 0x440, 0x446, 0x44d, 0x452, 0x456, 0x45c, 0x461, 0x46a, 0x46f, 0x475, 0x47c, 0x483, 0x48a, 0x48e, 0x493, 0x496, 0x49b, 0x4a7, 0x4ad, 0x4b2, 0x4b9, 0x4c1, 0x4c6, 0x4ca, 0x4da, 0x4e1, 0x4e5, 0x4e9, 0x4f0, 0x4f2, 0x4f5, 0x4f8, 0x4fc, 0x500, 0x506, 0x50f, 0x51b, 0x522, 0x52b, 0x533, 0x53a, 0x548, 0x555, 0x562, 0x56b, 0x56f, 0x57d, 0x585, 0x590, 0x599, 0x59f, 0x5a7, 0x5b0, 0x5ba, 0x5bd, 0x5c9, 0x5cc, 0x5d1, 0x5de, 0x5e7, 0x5f3, 0x5f6, 0x600, 0x609, 0x615, 0x622, 0x62a, 0x62d, 0x632, 0x635, 0x638, 0x63b, 0x642, 0x649, 0x64d, 0x658, 0x65b, 0x661, 0x666, 0x66a, 0x66d, 0x670, 0x673, 0x676, 0x679, 0x67e, 0x688, 0x68b, 0x68f, 0x69e, 0x6aa, 0x6ae, 0x6b3, 0x6b8, 0x6bc, 0x6c1, 0x6ca, 0x6d5, 0x6db, 0x6e3, 0x6e7, 0x6eb, 0x6f1, 0x6f7, 0x6fc, 0x6ff, 0x70f, 0x716, 0x719, 0x71c, 0x720, 0x726, 0x72b, 0x730, 0x735, 0x738, 0x73d, 0x740, 0x743, 0x747, 0x74b, 0x74e, 0x75e, 0x76f, 0x774, 0x776, 0x778}\n\n// idnaSparseValues: 1915 entries, 7660 bytes\nvar idnaSparseValues = [1915]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x6, offset 0x34\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x63\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0xc, offset 0x6b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x77\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x93\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa3\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbd\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xc9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xda\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xeb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x109\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x110\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x138\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x142\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x144\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x149\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x14f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x151\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x168\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x170\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x176\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x181\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x186\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x189\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x193\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x198\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a4\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1ae\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x34, offset 0x1d2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1da\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1dd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1ea\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x205\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x215\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x221\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x223\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22d\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x239\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x245\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x251\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x259\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x45, offset 0x268\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x46, offset 0x279\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x27d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x288\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x28c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x295\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x29d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0018, lo: 0xbd, hi: 0xbf},\n\t// Block 0x53, offset 0x2c3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xab},\n\t{value: 0x0018, lo: 0xac, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2ca\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2d8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2df\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x58, offset 0x2ea\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5c, offset 0x301\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5d, offset 0x305\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x5e, offset 0x307\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x5f, offset 0x30a\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x30c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x61, offset 0x30f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x62, offset 0x319\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x63, offset 0x31c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x66, offset 0x334\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0x67, offset 0x337\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x68, offset 0x33b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x69, offset 0x340\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6a, offset 0x345\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x34b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x351\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x360\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6e, offset 0x366\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6f, offset 0x36a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x70, offset 0x379\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x71, offset 0x37e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x72, offset 0x386\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x390\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x39b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3a3\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3b4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3bd\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x78, offset 0x3cd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3da\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3e4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3e9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3fa\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7e, offset 0x3ff\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x401\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x80, offset 0x405\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x407\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x82, offset 0x40b\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x83, offset 0x414\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x84, offset 0x41a\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x85, offset 0x41e\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x86, offset 0x42e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x87, offset 0x438\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x88, offset 0x43d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x89, offset 0x440\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8a, offset 0x446\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8b, offset 0x44d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8c, offset 0x452\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8d, offset 0x456\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8e, offset 0x45c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8f, offset 0x461\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x90, offset 0x46a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x91, offset 0x46f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x92, offset 0x475\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x93, offset 0x47c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x94, offset 0x483\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x48a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x48e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x493\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x496\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x99, offset 0x49b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ad\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b9\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9f, offset 0x4c6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa0, offset 0x4ca\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa1, offset 0x4da\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa3, offset 0x4e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa6, offset 0x4f2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x4fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaa, offset 0x500\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xab, offset 0x506\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xac, offset 0x50f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xad, offset 0x51b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xae, offset 0x522\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xaf, offset 0x52b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb0, offset 0x533\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb1, offset 0x53a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb2, offset 0x548\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb3, offset 0x555\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb4, offset 0x562\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb5, offset 0x56b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb6, offset 0x56f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xb7, offset 0x57d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb8, offset 0x585\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xb9, offset 0x590\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xba, offset 0x599\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbb, offset 0x59f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbc, offset 0x5a7\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b0\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbe, offset 0x5ba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xbf, offset 0x5bd\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc0, offset 0x5c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc1, offset 0x5cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc2, offset 0x5d1\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc3, offset 0x5de\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xc4, offset 0x5e7\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xc5, offset 0x5f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc7, offset 0x600\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xc8, offset 0x609\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xc9, offset 0x615\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xca, offset 0x622\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcb, offset 0x62a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcc, offset 0x62d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xcd, offset 0x632\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xce, offset 0x635\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xcf, offset 0x638\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd0, offset 0x63b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xd1, offset 0x642\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xd2, offset 0x649\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd3, offset 0x64d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd4, offset 0x658\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xd5, offset 0x65b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd6, offset 0x661\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xd7, offset 0x666\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xd8, offset 0x66a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xd9, offset 0x66d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xda, offset 0x670\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xdb, offset 0x673\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xdc, offset 0x676\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xdd, offset 0x679\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xde, offset 0x67e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xdf, offset 0x688\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe0, offset 0x68b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe1, offset 0x68f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe2, offset 0x69e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xe3, offset 0x6aa\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe4, offset 0x6ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xe5, offset 0x6b3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe6, offset 0x6b8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe7, offset 0x6bc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe8, offset 0x6c1\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe9, offset 0x6ca\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xea, offset 0x6d5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xeb, offset 0x6db\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xec, offset 0x6e3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xed, offset 0x6e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xee, offset 0x6eb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xef, offset 0x6f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf0, offset 0x6f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xf1, offset 0x6fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xf2, offset 0x6ff\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0xf3, offset 0x70f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xf4, offset 0x716\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf5, offset 0x719\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0xbf},\n\t// Block 0xf6, offset 0x71c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf7, offset 0x720\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf8, offset 0x726\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0xf9, offset 0x72b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfa, offset 0x730\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0xfb, offset 0x735\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xbf},\n\t// Block 0xfc, offset 0x738\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0xfd, offset 0x73d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xfe, offset 0x740\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xff, offset 0x743\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x100, offset 0x747\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x101, offset 0x74b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x102, offset 0x74e\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0x103, offset 0x75e\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x104, offset 0x76f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x105, offset 0x774\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x106, offset 0x776\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x107, offset 0x778\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42115 bytes (41KiB); checksum: F4A1FA4E\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/idna/trie.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage idna\n\n// appendMapping appends the mapping for the respective rune. isMapped must be\n// true. A mapping is a categorization of a rune as defined in UTS #46.\nfunc (c info) appendMapping(b []byte, s string) []byte {\n\tindex := int(c >> indexShift)\n\tif c&xorBit == 0 {\n\t\ts := mappings[index:]\n\t\treturn append(b, s[1:s[0]+1]...)\n\t}\n\tb = append(b, s...)\n\tif c&inlineXOR == inlineXOR {\n\t\t// TODO: support and handle two-byte inline masks\n\t\tb[len(b)-1] ^= byte(index)\n\t} else {\n\t\tfor p := len(b) - int(xorData[index]); p < len(b); p++ {\n\t\t\tindex++\n\t\t\tb[p] ^= xorData[index]\n\t\t}\n\t}\n\treturn b\n}\n\n// Sparse block handling code.\n\ntype valueRange struct {\n\tvalue  uint16 // header: value:stride\n\tlo, hi byte   // header: lo:n\n}\n\ntype sparseBlocks struct {\n\tvalues []valueRange\n\toffset []uint16\n}\n\nvar idnaSparse = sparseBlocks{\n\tvalues: idnaSparseValues[:],\n\toffset: idnaSparseOffset[:],\n}\n\n// Don't use newIdnaTrie to avoid unconditional linking in of the table.\nvar trie = &idnaTrie{}\n\n// lookup determines the type of block n and looks up the value for b.\n// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block\n// is a list of ranges with an accompanying value. Given a matching range r,\n// the value for b is by r.value + (b - r.lo) * stride.\nfunc (t *sparseBlocks) lookup(n uint32, b byte) uint16 {\n\toffset := t.offset[n]\n\theader := t.values[offset]\n\tlo := offset + 1\n\thi := lo + uint16(header.lo)\n\tfor lo < hi {\n\t\tm := lo + (hi-lo)/2\n\t\tr := t.values[m]\n\t\tif r.lo <= b && b <= r.hi {\n\t\t\treturn r.value + uint16(b-r.lo)*header.value\n\t\t}\n\t\tif b < r.lo {\n\t\t\thi = m\n\t\t} else {\n\t\t\tlo = m + 1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/idna/trieval.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage idna\n\n// This file contains definitions for interpreting the trie value of the idna\n// trie generated by \"go run gen*.go\". It is shared by both the generator\n// program and the resultant package. Sharing is achieved by the generator\n// copying gen_trieval.go to trieval.go and changing what's above this comment.\n\n// info holds information from the IDNA mapping table for a single rune. It is\n// the value returned by a trie lookup. In most cases, all information fits in\n// a 16-bit value. For mappings, this value may contain an index into a slice\n// with the mapped string. Such mappings can consist of the actual mapped value\n// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the\n// input rune. This technique is used by the cases packages and reduces the\n// table size significantly.\n//\n// The per-rune values have the following format:\n//\n//   if mapped {\n//     if inlinedXOR {\n//       15..13 inline XOR marker\n//       12..11 unused\n//       10..3  inline XOR mask\n//     } else {\n//       15..3  index into xor or mapping table\n//     }\n//   } else {\n//       15..14 unused\n//       13     mayNeedNorm\n//       12..11 attributes\n//       10..8  joining type\n//        7..3  category type\n//   }\n//      2  use xor pattern\n//   1..0  mapped category\n//\n// See the definitions below for a more detailed description of the various\n// bits.\ntype info uint16\n\nconst (\n\tcatSmallMask = 0x3\n\tcatBigMask   = 0xF8\n\tindexShift   = 3\n\txorBit       = 0x4    // interpret the index as an xor pattern\n\tinlineXOR    = 0xE000 // These bits are set if the XOR pattern is inlined.\n\n\tjoinShift = 8\n\tjoinMask  = 0x07\n\n\t// Attributes\n\tattributesMask = 0x1800\n\tviramaModifier = 0x1800\n\tmodifier       = 0x1000\n\trtl            = 0x0800\n\n\tmayNeedNorm = 0x2000\n)\n\n// A category corresponds to a category defined in the IDNA mapping table.\ntype category uint16\n\nconst (\n\tunknown              category = 0 // not currently defined in unicode.\n\tmapped               category = 1\n\tdisallowedSTD3Mapped category = 2\n\tdeviation            category = 3\n)\n\nconst (\n\tvalid               category = 0x08\n\tvalidNV8            category = 0x18\n\tvalidXV8            category = 0x28\n\tdisallowed          category = 0x40\n\tdisallowedSTD3Valid category = 0x80\n\tignored             category = 0xC0\n)\n\n// join types and additional rune information\nconst (\n\tjoiningL = (iota + 1)\n\tjoiningD\n\tjoiningT\n\tjoiningR\n\n\t//the following types are derived during processing\n\tjoinZWJ\n\tjoinZWNJ\n\tjoinVirama\n\tnumJoinTypes\n)\n\nfunc (c info) isMapped() bool {\n\treturn c&0x3 != 0\n}\n\nfunc (c info) category() category {\n\tsmall := c & catSmallMask\n\tif small != 0 {\n\t\treturn category(small)\n\t}\n\treturn category(c & catBigMask)\n}\n\nfunc (c info) joinType() info {\n\tif c.isMapped() {\n\t\treturn 0\n\t}\n\treturn (c >> joinShift) & joinMask\n}\n\nfunc (c info) isModifier() bool {\n\treturn c&(modifier|catSmallMask) == modifier\n}\n\nfunc (c info) isViramaModifier() bool {\n\treturn c&(attributesMask|catSmallMask) == viramaModifier\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/publicsuffix/gen.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\n// This program generates table.go and table_test.go based on the authoritative\n// public suffix list at https://publicsuffix.org/list/effective_tld_names.dat\n//\n// The version is derived from\n// https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat\n// and a human-readable form is at\n// https://github.com/publicsuffix/list/commits/master/public_suffix_list.dat\n//\n// To fetch a particular git revision, such as 5c70ccd250, pass\n// -url \"https://raw.githubusercontent.com/publicsuffix/list/5c70ccd250/public_suffix_list.dat\"\n// and -version \"an explicit version string\".\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go/format\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"golang.org/x/net/idna\"\n)\n\nconst (\n\t// These sum of these four values must be no greater than 32.\n\tnodesBitsChildren   = 10\n\tnodesBitsICANN      = 1\n\tnodesBitsTextOffset = 15\n\tnodesBitsTextLength = 6\n\n\t// These sum of these four values must be no greater than 32.\n\tchildrenBitsWildcard = 1\n\tchildrenBitsNodeType = 2\n\tchildrenBitsHi       = 14\n\tchildrenBitsLo       = 14\n)\n\nvar (\n\tmaxChildren   int\n\tmaxTextOffset int\n\tmaxTextLength int\n\tmaxHi         uint32\n\tmaxLo         uint32\n)\n\nfunc max(a, b int) int {\n\tif a < b {\n\t\treturn b\n\t}\n\treturn a\n}\n\nfunc u32max(a, b uint32) uint32 {\n\tif a < b {\n\t\treturn b\n\t}\n\treturn a\n}\n\nconst (\n\tnodeTypeNormal     = 0\n\tnodeTypeException  = 1\n\tnodeTypeParentOnly = 2\n\tnumNodeType        = 3\n)\n\nfunc nodeTypeStr(n int) string {\n\tswitch n {\n\tcase nodeTypeNormal:\n\t\treturn \"+\"\n\tcase nodeTypeException:\n\t\treturn \"!\"\n\tcase nodeTypeParentOnly:\n\t\treturn \"o\"\n\t}\n\tpanic(\"unreachable\")\n}\n\nconst (\n\tdefaultURL   = \"https://publicsuffix.org/list/effective_tld_names.dat\"\n\tgitCommitURL = \"https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat\"\n)\n\nvar (\n\tlabelEncoding = map[string]uint32{}\n\tlabelsList    = []string{}\n\tlabelsMap     = map[string]bool{}\n\trules         = []string{}\n\n\t// validSuffixRE is used to check that the entries in the public suffix\n\t// list are in canonical form (after Punycode encoding). Specifically,\n\t// capital letters are not allowed.\n\tvalidSuffixRE = regexp.MustCompile(`^[a-z0-9_\\!\\*\\-\\.]+$`)\n\n\tshaRE  = regexp.MustCompile(`\"sha\":\"([^\"]+)\"`)\n\tdateRE = regexp.MustCompile(`\"committer\":{[^{]+\"date\":\"([^\"]+)\"`)\n\n\tcomments = flag.Bool(\"comments\", false, \"generate table.go comments, for debugging\")\n\tsubset   = flag.Bool(\"subset\", false, \"generate only a subset of the full table, for debugging\")\n\turl      = flag.String(\"url\", defaultURL, \"URL of the publicsuffix.org list. If empty, stdin is read instead\")\n\tv        = flag.Bool(\"v\", false, \"verbose output (to stderr)\")\n\tversion  = flag.String(\"version\", \"\", \"the effective_tld_names.dat version\")\n)\n\nfunc main() {\n\tif err := main1(); err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc main1() error {\n\tflag.Parse()\n\tif nodesBitsTextLength+nodesBitsTextOffset+nodesBitsICANN+nodesBitsChildren > 32 {\n\t\treturn fmt.Errorf(\"not enough bits to encode the nodes table\")\n\t}\n\tif childrenBitsLo+childrenBitsHi+childrenBitsNodeType+childrenBitsWildcard > 32 {\n\t\treturn fmt.Errorf(\"not enough bits to encode the children table\")\n\t}\n\tif *version == \"\" {\n\t\tif *url != defaultURL {\n\t\t\treturn fmt.Errorf(\"-version was not specified, and the -url is not the default one\")\n\t\t}\n\t\tsha, date, err := gitCommit()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t*version = fmt.Sprintf(\"publicsuffix.org's public_suffix_list.dat, git revision %s (%s)\", sha, date)\n\t}\n\tvar r io.Reader = os.Stdin\n\tif *url != \"\" {\n\t\tres, err := http.Get(*url)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif res.StatusCode != http.StatusOK {\n\t\t\treturn fmt.Errorf(\"bad GET status for %s: %d\", *url, res.Status)\n\t\t}\n\t\tr = res.Body\n\t\tdefer res.Body.Close()\n\t}\n\n\tvar root node\n\ticann := false\n\tbr := bufio.NewReader(r)\n\tfor {\n\t\ts, err := br.ReadString('\\n')\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\ts = strings.TrimSpace(s)\n\t\tif strings.Contains(s, \"BEGIN ICANN DOMAINS\") {\n\t\t\ticann = true\n\t\t\tcontinue\n\t\t}\n\t\tif strings.Contains(s, \"END ICANN DOMAINS\") {\n\t\t\ticann = false\n\t\t\tcontinue\n\t\t}\n\t\tif s == \"\" || strings.HasPrefix(s, \"//\") {\n\t\t\tcontinue\n\t\t}\n\t\ts, err = idna.ToASCII(s)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !validSuffixRE.MatchString(s) {\n\t\t\treturn fmt.Errorf(\"bad publicsuffix.org list data: %q\", s)\n\t\t}\n\n\t\tif *subset {\n\t\t\tswitch {\n\t\t\tcase s == \"ac.jp\" || strings.HasSuffix(s, \".ac.jp\"):\n\t\t\tcase s == \"ak.us\" || strings.HasSuffix(s, \".ak.us\"):\n\t\t\tcase s == \"ao\" || strings.HasSuffix(s, \".ao\"):\n\t\t\tcase s == \"ar\" || strings.HasSuffix(s, \".ar\"):\n\t\t\tcase s == \"arpa\" || strings.HasSuffix(s, \".arpa\"):\n\t\t\tcase s == \"cy\" || strings.HasSuffix(s, \".cy\"):\n\t\t\tcase s == \"dyndns.org\" || strings.HasSuffix(s, \".dyndns.org\"):\n\t\t\tcase s == \"jp\":\n\t\t\tcase s == \"kobe.jp\" || strings.HasSuffix(s, \".kobe.jp\"):\n\t\t\tcase s == \"kyoto.jp\" || strings.HasSuffix(s, \".kyoto.jp\"):\n\t\t\tcase s == \"om\" || strings.HasSuffix(s, \".om\"):\n\t\t\tcase s == \"uk\" || strings.HasSuffix(s, \".uk\"):\n\t\t\tcase s == \"uk.com\" || strings.HasSuffix(s, \".uk.com\"):\n\t\t\tcase s == \"tw\" || strings.HasSuffix(s, \".tw\"):\n\t\t\tcase s == \"zw\" || strings.HasSuffix(s, \".zw\"):\n\t\t\tcase s == \"xn--p1ai\" || strings.HasSuffix(s, \".xn--p1ai\"):\n\t\t\t\t// xn--p1ai is Russian-Cyrillic \"рф\".\n\t\t\tdefault:\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\trules = append(rules, s)\n\n\t\tnt, wildcard := nodeTypeNormal, false\n\t\tswitch {\n\t\tcase strings.HasPrefix(s, \"*.\"):\n\t\t\ts, nt = s[2:], nodeTypeParentOnly\n\t\t\twildcard = true\n\t\tcase strings.HasPrefix(s, \"!\"):\n\t\t\ts, nt = s[1:], nodeTypeException\n\t\t}\n\t\tlabels := strings.Split(s, \".\")\n\t\tfor n, i := &root, len(labels)-1; i >= 0; i-- {\n\t\t\tlabel := labels[i]\n\t\t\tn = n.child(label)\n\t\t\tif i == 0 {\n\t\t\t\tif nt != nodeTypeParentOnly && n.nodeType == nodeTypeParentOnly {\n\t\t\t\t\tn.nodeType = nt\n\t\t\t\t}\n\t\t\t\tn.icann = n.icann && icann\n\t\t\t\tn.wildcard = n.wildcard || wildcard\n\t\t\t}\n\t\t\tlabelsMap[label] = true\n\t\t}\n\t}\n\tlabelsList = make([]string, 0, len(labelsMap))\n\tfor label := range labelsMap {\n\t\tlabelsList = append(labelsList, label)\n\t}\n\tsort.Strings(labelsList)\n\n\tif err := generate(printReal, &root, \"table.go\"); err != nil {\n\t\treturn err\n\t}\n\tif err := generate(printTest, &root, \"table_test.go\"); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc generate(p func(io.Writer, *node) error, root *node, filename string) error {\n\tbuf := new(bytes.Buffer)\n\tif err := p(buf, root); err != nil {\n\t\treturn err\n\t}\n\tb, err := format.Source(buf.Bytes())\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn ioutil.WriteFile(filename, b, 0644)\n}\n\nfunc gitCommit() (sha, date string, retErr error) {\n\tres, err := http.Get(gitCommitURL)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\tif res.StatusCode != http.StatusOK {\n\t\treturn \"\", \"\", fmt.Errorf(\"bad GET status for %s: %d\", gitCommitURL, res.Status)\n\t}\n\tdefer res.Body.Close()\n\tb, err := ioutil.ReadAll(res.Body)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\tif m := shaRE.FindSubmatch(b); m != nil {\n\t\tsha = string(m[1])\n\t}\n\tif m := dateRE.FindSubmatch(b); m != nil {\n\t\tdate = string(m[1])\n\t}\n\tif sha == \"\" || date == \"\" {\n\t\tretErr = fmt.Errorf(\"could not find commit SHA and date in %s\", gitCommitURL)\n\t}\n\treturn sha, date, retErr\n}\n\nfunc printTest(w io.Writer, n *node) error {\n\tfmt.Fprintf(w, \"// generated by go run gen.go; DO NOT EDIT\\n\\n\")\n\tfmt.Fprintf(w, \"package publicsuffix\\n\\nvar rules = [...]string{\\n\")\n\tfor _, rule := range rules {\n\t\tfmt.Fprintf(w, \"%q,\\n\", rule)\n\t}\n\tfmt.Fprintf(w, \"}\\n\\nvar nodeLabels = [...]string{\\n\")\n\tif err := n.walk(w, printNodeLabel); err != nil {\n\t\treturn err\n\t}\n\tfmt.Fprintf(w, \"}\\n\")\n\treturn nil\n}\n\nfunc printReal(w io.Writer, n *node) error {\n\tconst header = `// generated by go run gen.go; DO NOT EDIT\n\npackage publicsuffix\n\nconst version = %q\n\nconst (\n\tnodesBitsChildren   = %d\n\tnodesBitsICANN      = %d\n\tnodesBitsTextOffset = %d\n\tnodesBitsTextLength = %d\n\n\tchildrenBitsWildcard = %d\n\tchildrenBitsNodeType = %d\n\tchildrenBitsHi       = %d\n\tchildrenBitsLo       = %d\n)\n\nconst (\n\tnodeTypeNormal     = %d\n\tnodeTypeException  = %d\n\tnodeTypeParentOnly = %d\n)\n\n// numTLD is the number of top level domains.\nconst numTLD = %d\n\n`\n\tfmt.Fprintf(w, header, *version,\n\t\tnodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength,\n\t\tchildrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo,\n\t\tnodeTypeNormal, nodeTypeException, nodeTypeParentOnly, len(n.children))\n\n\ttext := combineText(labelsList)\n\tif text == \"\" {\n\t\treturn fmt.Errorf(\"internal error: makeText returned no text\")\n\t}\n\tfor _, label := range labelsList {\n\t\toffset, length := strings.Index(text, label), len(label)\n\t\tif offset < 0 {\n\t\t\treturn fmt.Errorf(\"internal error: could not find %q in text %q\", label, text)\n\t\t}\n\t\tmaxTextOffset, maxTextLength = max(maxTextOffset, offset), max(maxTextLength, length)\n\t\tif offset >= 1<<nodesBitsTextOffset {\n\t\t\treturn fmt.Errorf(\"text offset %d is too large, or nodeBitsTextOffset is too small\", offset)\n\t\t}\n\t\tif length >= 1<<nodesBitsTextLength {\n\t\t\treturn fmt.Errorf(\"text length %d is too large, or nodeBitsTextLength is too small\", length)\n\t\t}\n\t\tlabelEncoding[label] = uint32(offset)<<nodesBitsTextLength | uint32(length)\n\t}\n\tfmt.Fprintf(w, \"// Text is the combined text of all labels.\\nconst text = \")\n\tfor len(text) > 0 {\n\t\tn, plus := len(text), \"\"\n\t\tif n > 64 {\n\t\t\tn, plus = 64, \" +\"\n\t\t}\n\t\tfmt.Fprintf(w, \"%q%s\\n\", text[:n], plus)\n\t\ttext = text[n:]\n\t}\n\n\tif err := n.walk(w, assignIndexes); err != nil {\n\t\treturn err\n\t}\n\n\tfmt.Fprintf(w, `\n\n// nodes is the list of nodes. Each node is represented as a uint32, which\n// encodes the node's children, wildcard bit and node type (as an index into\n// the children array), ICANN bit and text.\n//\n// If the table was generated with the -comments flag, there is a //-comment\n// after each node's data. In it is the nodes-array indexes of the children,\n// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The\n// nodeType is printed as + for normal, ! for exception, and o for parent-only\n// nodes that have children but don't match a domain label in their own right.\n// An I denotes an ICANN domain.\n//\n// The layout within the uint32, from MSB to LSB, is:\n//\t[%2d bits] unused\n//\t[%2d bits] children index\n//\t[%2d bits] ICANN bit\n//\t[%2d bits] text index\n//\t[%2d bits] text length\nvar nodes = [...]uint32{\n`,\n\t\t32-nodesBitsChildren-nodesBitsICANN-nodesBitsTextOffset-nodesBitsTextLength,\n\t\tnodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength)\n\tif err := n.walk(w, printNode); err != nil {\n\t\treturn err\n\t}\n\tfmt.Fprintf(w, `}\n\n// children is the list of nodes' children, the parent's wildcard bit and the\n// parent's node type. If a node has no children then their children index\n// will be in the range [0, 6), depending on the wildcard bit and node type.\n//\n// The layout within the uint32, from MSB to LSB, is:\n//\t[%2d bits] unused\n//\t[%2d bits] wildcard bit\n//\t[%2d bits] node type\n//\t[%2d bits] high nodes index (exclusive) of children\n//\t[%2d bits] low nodes index (inclusive) of children\nvar children=[...]uint32{\n`,\n\t\t32-childrenBitsWildcard-childrenBitsNodeType-childrenBitsHi-childrenBitsLo,\n\t\tchildrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo)\n\tfor i, c := range childrenEncoding {\n\t\ts := \"---------------\"\n\t\tlo := c & (1<<childrenBitsLo - 1)\n\t\thi := (c >> childrenBitsLo) & (1<<childrenBitsHi - 1)\n\t\tif lo != hi {\n\t\t\ts = fmt.Sprintf(\"n0x%04x-n0x%04x\", lo, hi)\n\t\t}\n\t\tnodeType := int(c>>(childrenBitsLo+childrenBitsHi)) & (1<<childrenBitsNodeType - 1)\n\t\twildcard := c>>(childrenBitsLo+childrenBitsHi+childrenBitsNodeType) != 0\n\t\tif *comments {\n\t\t\tfmt.Fprintf(w, \"0x%08x, // c0x%04x (%s)%s %s\\n\",\n\t\t\t\tc, i, s, wildcardStr(wildcard), nodeTypeStr(nodeType))\n\t\t} else {\n\t\t\tfmt.Fprintf(w, \"0x%x,\\n\", c)\n\t\t}\n\t}\n\tfmt.Fprintf(w, \"}\\n\\n\")\n\tfmt.Fprintf(w, \"// max children %d (capacity %d)\\n\", maxChildren, 1<<nodesBitsChildren-1)\n\tfmt.Fprintf(w, \"// max text offset %d (capacity %d)\\n\", maxTextOffset, 1<<nodesBitsTextOffset-1)\n\tfmt.Fprintf(w, \"// max text length %d (capacity %d)\\n\", maxTextLength, 1<<nodesBitsTextLength-1)\n\tfmt.Fprintf(w, \"// max hi %d (capacity %d)\\n\", maxHi, 1<<childrenBitsHi-1)\n\tfmt.Fprintf(w, \"// max lo %d (capacity %d)\\n\", maxLo, 1<<childrenBitsLo-1)\n\treturn nil\n}\n\ntype node struct {\n\tlabel    string\n\tnodeType int\n\ticann    bool\n\twildcard bool\n\t// nodesIndex and childrenIndex are the index of this node in the nodes\n\t// and the index of its children offset/length in the children arrays.\n\tnodesIndex, childrenIndex int\n\t// firstChild is the index of this node's first child, or zero if this\n\t// node has no children.\n\tfirstChild int\n\t// children are the node's children, in strictly increasing node label order.\n\tchildren []*node\n}\n\nfunc (n *node) walk(w io.Writer, f func(w1 io.Writer, n1 *node) error) error {\n\tif err := f(w, n); err != nil {\n\t\treturn err\n\t}\n\tfor _, c := range n.children {\n\t\tif err := c.walk(w, f); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// child returns the child of n with the given label. The child is created if\n// it did not exist beforehand.\nfunc (n *node) child(label string) *node {\n\tfor _, c := range n.children {\n\t\tif c.label == label {\n\t\t\treturn c\n\t\t}\n\t}\n\tc := &node{\n\t\tlabel:    label,\n\t\tnodeType: nodeTypeParentOnly,\n\t\ticann:    true,\n\t}\n\tn.children = append(n.children, c)\n\tsort.Sort(byLabel(n.children))\n\treturn c\n}\n\ntype byLabel []*node\n\nfunc (b byLabel) Len() int           { return len(b) }\nfunc (b byLabel) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }\nfunc (b byLabel) Less(i, j int) bool { return b[i].label < b[j].label }\n\nvar nextNodesIndex int\n\n// childrenEncoding are the encoded entries in the generated children array.\n// All these pre-defined entries have no children.\nvar childrenEncoding = []uint32{\n\t0 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeNormal.\n\t1 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeException.\n\t2 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeParentOnly.\n\t4 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeNormal.\n\t5 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeException.\n\t6 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeParentOnly.\n}\n\nvar firstCallToAssignIndexes = true\n\nfunc assignIndexes(w io.Writer, n *node) error {\n\tif len(n.children) != 0 {\n\t\t// Assign nodesIndex.\n\t\tn.firstChild = nextNodesIndex\n\t\tfor _, c := range n.children {\n\t\t\tc.nodesIndex = nextNodesIndex\n\t\t\tnextNodesIndex++\n\t\t}\n\n\t\t// The root node's children is implicit.\n\t\tif firstCallToAssignIndexes {\n\t\t\tfirstCallToAssignIndexes = false\n\t\t\treturn nil\n\t\t}\n\n\t\t// Assign childrenIndex.\n\t\tmaxChildren = max(maxChildren, len(childrenEncoding))\n\t\tif len(childrenEncoding) >= 1<<nodesBitsChildren {\n\t\t\treturn fmt.Errorf(\"children table size %d is too large, or nodeBitsChildren is too small\", len(childrenEncoding))\n\t\t}\n\t\tn.childrenIndex = len(childrenEncoding)\n\t\tlo := uint32(n.firstChild)\n\t\thi := lo + uint32(len(n.children))\n\t\tmaxLo, maxHi = u32max(maxLo, lo), u32max(maxHi, hi)\n\t\tif lo >= 1<<childrenBitsLo {\n\t\t\treturn fmt.Errorf(\"children lo %d is too large, or childrenBitsLo is too small\", lo)\n\t\t}\n\t\tif hi >= 1<<childrenBitsHi {\n\t\t\treturn fmt.Errorf(\"children hi %d is too large, or childrenBitsHi is too small\", hi)\n\t\t}\n\t\tenc := hi<<childrenBitsLo | lo\n\t\tenc |= uint32(n.nodeType) << (childrenBitsLo + childrenBitsHi)\n\t\tif n.wildcard {\n\t\t\tenc |= 1 << (childrenBitsLo + childrenBitsHi + childrenBitsNodeType)\n\t\t}\n\t\tchildrenEncoding = append(childrenEncoding, enc)\n\t} else {\n\t\tn.childrenIndex = n.nodeType\n\t\tif n.wildcard {\n\t\t\tn.childrenIndex += numNodeType\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc printNode(w io.Writer, n *node) error {\n\tfor _, c := range n.children {\n\t\ts := \"---------------\"\n\t\tif len(c.children) != 0 {\n\t\t\ts = fmt.Sprintf(\"n0x%04x-n0x%04x\", c.firstChild, c.firstChild+len(c.children))\n\t\t}\n\t\tencoding := labelEncoding[c.label]\n\t\tif c.icann {\n\t\t\tencoding |= 1 << (nodesBitsTextLength + nodesBitsTextOffset)\n\t\t}\n\t\tencoding |= uint32(c.childrenIndex) << (nodesBitsTextLength + nodesBitsTextOffset + nodesBitsICANN)\n\t\tif *comments {\n\t\t\tfmt.Fprintf(w, \"0x%08x, // n0x%04x c0x%04x (%s)%s %s %s %s\\n\",\n\t\t\t\tencoding, c.nodesIndex, c.childrenIndex, s, wildcardStr(c.wildcard),\n\t\t\t\tnodeTypeStr(c.nodeType), icannStr(c.icann), c.label,\n\t\t\t)\n\t\t} else {\n\t\t\tfmt.Fprintf(w, \"0x%x,\\n\", encoding)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc printNodeLabel(w io.Writer, n *node) error {\n\tfor _, c := range n.children {\n\t\tfmt.Fprintf(w, \"%q,\\n\", c.label)\n\t}\n\treturn nil\n}\n\nfunc icannStr(icann bool) string {\n\tif icann {\n\t\treturn \"I\"\n\t}\n\treturn \" \"\n}\n\nfunc wildcardStr(wildcard bool) string {\n\tif wildcard {\n\t\treturn \"*\"\n\t}\n\treturn \" \"\n}\n\n// combineText combines all the strings in labelsList to form one giant string.\n// Overlapping strings will be merged: \"arpa\" and \"parliament\" could yield\n// \"arparliament\".\nfunc combineText(labelsList []string) string {\n\tbeforeLength := 0\n\tfor _, s := range labelsList {\n\t\tbeforeLength += len(s)\n\t}\n\n\ttext := crush(removeSubstrings(labelsList))\n\tif *v {\n\t\tfmt.Fprintf(os.Stderr, \"crushed %d bytes to become %d bytes\\n\", beforeLength, len(text))\n\t}\n\treturn text\n}\n\ntype byLength []string\n\nfunc (s byLength) Len() int           { return len(s) }\nfunc (s byLength) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\nfunc (s byLength) Less(i, j int) bool { return len(s[i]) < len(s[j]) }\n\n// removeSubstrings returns a copy of its input with any strings removed\n// that are substrings of other provided strings.\nfunc removeSubstrings(input []string) []string {\n\t// Make a copy of input.\n\tss := append(make([]string, 0, len(input)), input...)\n\tsort.Sort(byLength(ss))\n\n\tfor i, shortString := range ss {\n\t\t// For each string, only consider strings higher than it in sort order, i.e.\n\t\t// of equal length or greater.\n\t\tfor _, longString := range ss[i+1:] {\n\t\t\tif strings.Contains(longString, shortString) {\n\t\t\t\tss[i] = \"\"\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove the empty strings.\n\tsort.Strings(ss)\n\tfor len(ss) > 0 && ss[0] == \"\" {\n\t\tss = ss[1:]\n\t}\n\treturn ss\n}\n\n// crush combines a list of strings, taking advantage of overlaps. It returns a\n// single string that contains each input string as a substring.\nfunc crush(ss []string) string {\n\tmaxLabelLen := 0\n\tfor _, s := range ss {\n\t\tif maxLabelLen < len(s) {\n\t\t\tmaxLabelLen = len(s)\n\t\t}\n\t}\n\n\tfor prefixLen := maxLabelLen; prefixLen > 0; prefixLen-- {\n\t\tprefixes := makePrefixMap(ss, prefixLen)\n\t\tfor i, s := range ss {\n\t\t\tif len(s) <= prefixLen {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmergeLabel(ss, i, prefixLen, prefixes)\n\t\t}\n\t}\n\n\treturn strings.Join(ss, \"\")\n}\n\n// mergeLabel merges the label at ss[i] with the first available matching label\n// in prefixMap, where the last \"prefixLen\" characters in ss[i] match the first\n// \"prefixLen\" characters in the matching label.\n// It will merge ss[i] repeatedly until no more matches are available.\n// All matching labels merged into ss[i] are replaced by \"\".\nfunc mergeLabel(ss []string, i, prefixLen int, prefixes prefixMap) {\n\ts := ss[i]\n\tsuffix := s[len(s)-prefixLen:]\n\tfor _, j := range prefixes[suffix] {\n\t\t// Empty strings mean \"already used.\" Also avoid merging with self.\n\t\tif ss[j] == \"\" || i == j {\n\t\t\tcontinue\n\t\t}\n\t\tif *v {\n\t\t\tfmt.Fprintf(os.Stderr, \"%d-length overlap at (%4d,%4d): %q and %q share %q\\n\",\n\t\t\t\tprefixLen, i, j, ss[i], ss[j], suffix)\n\t\t}\n\t\tss[i] += ss[j][prefixLen:]\n\t\tss[j] = \"\"\n\t\t// ss[i] has a new suffix, so merge again if possible.\n\t\t// Note: we only have to merge again at the same prefix length. Shorter\n\t\t// prefix lengths will be handled in the next iteration of crush's for loop.\n\t\t// Can there be matches for longer prefix lengths, introduced by the merge?\n\t\t// I believe that any such matches would by necessity have been eliminated\n\t\t// during substring removal or merged at a higher prefix length. For\n\t\t// instance, in crush(\"abc\", \"cde\", \"bcdef\"), combining \"abc\" and \"cde\"\n\t\t// would yield \"abcde\", which could be merged with \"bcdef.\" However, in\n\t\t// practice \"cde\" would already have been elimintated by removeSubstrings.\n\t\tmergeLabel(ss, i, prefixLen, prefixes)\n\t\treturn\n\t}\n}\n\n// prefixMap maps from a prefix to a list of strings containing that prefix. The\n// list of strings is represented as indexes into a slice of strings stored\n// elsewhere.\ntype prefixMap map[string][]int\n\n// makePrefixMap constructs a prefixMap from a slice of strings.\nfunc makePrefixMap(ss []string, prefixLen int) prefixMap {\n\tprefixes := make(prefixMap)\n\tfor i, s := range ss {\n\t\t// We use < rather than <= because if a label matches on a prefix equal to\n\t\t// its full length, that's actually a substring match handled by\n\t\t// removeSubstrings.\n\t\tif prefixLen < len(s) {\n\t\t\tprefix := s[:prefixLen]\n\t\t\tprefixes[prefix] = append(prefixes[prefix], i)\n\t\t}\n\t}\n\n\treturn prefixes\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/publicsuffix/list.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go\n\n// Package publicsuffix provides a public suffix list based on data from\n// https://publicsuffix.org/\n//\n// A public suffix is one under which Internet users can directly register\n// names. It is related to, but different from, a TLD (top level domain).\n//\n// \"com\" is a TLD (top level domain). Top level means it has no dots.\n//\n// \"com\" is also a public suffix. Amazon and Google have registered different\n// siblings under that domain: \"amazon.com\" and \"google.com\".\n//\n// \"au\" is another TLD, again because it has no dots. But it's not \"amazon.au\".\n// Instead, it's \"amazon.com.au\".\n//\n// \"com.au\" isn't an actual TLD, because it's not at the top level (it has\n// dots). But it is an eTLD (effective TLD), because that's the branching point\n// for domain name registrars.\n//\n// Another name for \"an eTLD\" is \"a public suffix\". Often, what's more of\n// interest is the eTLD+1, or one more label than the public suffix. For\n// example, browsers partition read/write access to HTTP cookies according to\n// the eTLD+1. Web pages served from \"amazon.com.au\" can't read cookies from\n// \"google.com.au\", but web pages served from \"maps.google.com\" can share\n// cookies from \"www.google.com\", so you don't have to sign into Google Maps\n// separately from signing into Google Web Search. Note that all four of those\n// domains have 3 labels and 2 dots. The first two domains are each an eTLD+1,\n// the last two are not (but share the same eTLD+1: \"google.com\").\n//\n// All of these domains have the same eTLD+1:\n//  - \"www.books.amazon.co.uk\"\n//  - \"books.amazon.co.uk\"\n//  - \"amazon.co.uk\"\n// Specifically, the eTLD+1 is \"amazon.co.uk\", because the eTLD is \"co.uk\".\n//\n// There is no closed form algorithm to calculate the eTLD of a domain.\n// Instead, the calculation is data driven. This package provides a\n// pre-compiled snapshot of Mozilla's PSL (Public Suffix List) data at\n// https://publicsuffix.org/\npackage publicsuffix // import \"golang.org/x/net/publicsuffix\"\n\n// TODO: specify case sensitivity and leading/trailing dot behavior for\n// func PublicSuffix and func EffectiveTLDPlusOne.\n\nimport (\n\t\"fmt\"\n\t\"net/http/cookiejar\"\n\t\"strings\"\n)\n\n// List implements the cookiejar.PublicSuffixList interface by calling the\n// PublicSuffix function.\nvar List cookiejar.PublicSuffixList = list{}\n\ntype list struct{}\n\nfunc (list) PublicSuffix(domain string) string {\n\tps, _ := PublicSuffix(domain)\n\treturn ps\n}\n\nfunc (list) String() string {\n\treturn version\n}\n\n// PublicSuffix returns the public suffix of the domain using a copy of the\n// publicsuffix.org database compiled into the library.\n//\n// icann is whether the public suffix is managed by the Internet Corporation\n// for Assigned Names and Numbers. If not, the public suffix is privately\n// managed. For example, foo.org and foo.co.uk are ICANN domains,\n// foo.dyndns.org and foo.blogspot.co.uk are private domains.\n//\n// Use cases for distinguishing ICANN domains like foo.com from private\n// domains like foo.appspot.com can be found at\n// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases\nfunc PublicSuffix(domain string) (publicSuffix string, icann bool) {\n\tlo, hi := uint32(0), uint32(numTLD)\n\ts, suffix, wildcard := domain, len(domain), false\nloop:\n\tfor {\n\t\tdot := strings.LastIndex(s, \".\")\n\t\tif wildcard {\n\t\t\tsuffix = 1 + dot\n\t\t}\n\t\tif lo == hi {\n\t\t\tbreak\n\t\t}\n\t\tf := find(s[1+dot:], lo, hi)\n\t\tif f == notFound {\n\t\t\tbreak\n\t\t}\n\n\t\tu := nodes[f] >> (nodesBitsTextOffset + nodesBitsTextLength)\n\t\ticann = u&(1<<nodesBitsICANN-1) != 0\n\t\tu >>= nodesBitsICANN\n\t\tu = children[u&(1<<nodesBitsChildren-1)]\n\t\tlo = u & (1<<childrenBitsLo - 1)\n\t\tu >>= childrenBitsLo\n\t\thi = u & (1<<childrenBitsHi - 1)\n\t\tu >>= childrenBitsHi\n\t\tswitch u & (1<<childrenBitsNodeType - 1) {\n\t\tcase nodeTypeNormal:\n\t\t\tsuffix = 1 + dot\n\t\tcase nodeTypeException:\n\t\t\tsuffix = 1 + len(s)\n\t\t\tbreak loop\n\t\t}\n\t\tu >>= childrenBitsNodeType\n\t\twildcard = u&(1<<childrenBitsWildcard-1) != 0\n\n\t\tif dot == -1 {\n\t\t\tbreak\n\t\t}\n\t\ts = s[:dot]\n\t}\n\tif suffix == len(domain) {\n\t\t// If no rules match, the prevailing rule is \"*\".\n\t\treturn domain[1+strings.LastIndex(domain, \".\"):], icann\n\t}\n\treturn domain[suffix:], icann\n}\n\nconst notFound uint32 = 1<<32 - 1\n\n// find returns the index of the node in the range [lo, hi) whose label equals\n// label, or notFound if there is no such node. The range is assumed to be in\n// strictly increasing node label order.\nfunc find(label string, lo, hi uint32) uint32 {\n\tfor lo < hi {\n\t\tmid := lo + (hi-lo)/2\n\t\ts := nodeLabel(mid)\n\t\tif s < label {\n\t\t\tlo = mid + 1\n\t\t} else if s == label {\n\t\t\treturn mid\n\t\t} else {\n\t\t\thi = mid\n\t\t}\n\t}\n\treturn notFound\n}\n\n// nodeLabel returns the label for the i'th node.\nfunc nodeLabel(i uint32) string {\n\tx := nodes[i]\n\tlength := x & (1<<nodesBitsTextLength - 1)\n\tx >>= nodesBitsTextLength\n\toffset := x & (1<<nodesBitsTextOffset - 1)\n\treturn text[offset : offset+length]\n}\n\n// EffectiveTLDPlusOne returns the effective top level domain plus one more\n// label. For example, the eTLD+1 for \"foo.bar.golang.org\" is \"golang.org\".\nfunc EffectiveTLDPlusOne(domain string) (string, error) {\n\tsuffix, _ := PublicSuffix(domain)\n\tif len(domain) <= len(suffix) {\n\t\treturn \"\", fmt.Errorf(\"publicsuffix: cannot derive eTLD+1 for domain %q\", domain)\n\t}\n\ti := len(domain) - len(suffix) - 1\n\tif domain[i] != '.' {\n\t\treturn \"\", fmt.Errorf(\"publicsuffix: invalid public suffix %q for domain %q\", suffix, domain)\n\t}\n\treturn domain[1+strings.LastIndex(domain[:i], \".\"):], nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/net/publicsuffix/table.go",
    "content": "// generated by go run gen.go; DO NOT EDIT\n\npackage publicsuffix\n\nconst version = \"publicsuffix.org's public_suffix_list.dat, git revision 6f2b9e75eaf65bb75da83677655a59110088ebc5 (2018-10-03T13:34:55Z)\"\n\nconst (\n\tnodesBitsChildren   = 10\n\tnodesBitsICANN      = 1\n\tnodesBitsTextOffset = 15\n\tnodesBitsTextLength = 6\n\n\tchildrenBitsWildcard = 1\n\tchildrenBitsNodeType = 2\n\tchildrenBitsHi       = 14\n\tchildrenBitsLo       = 14\n)\n\nconst (\n\tnodeTypeNormal     = 0\n\tnodeTypeException  = 1\n\tnodeTypeParentOnly = 2\n)\n\n// numTLD is the number of top level domains.\nconst numTLD = 1546\n\n// Text is the combined text of all labels.\nconst text = \"9guacuiababia-goracleaningroks-theatreebinagisoccertificationatu\" +\n\t\"rhistorisches3-ap-south-16-bambleclerc66biomutashinaiiyamanouchi\" +\n\t\"kuhokuryugasakitcheninomiyakonojorpelandiyukindigenaklodzkochiku\" +\n\t\"shinonsenergyukuhashimoichinosekigaharabirdartcenterprisesakimob\" +\n\t\"etsuitainairforceoppdalimitednpalmspringsakerbirkenesoddtangenov\" +\n\t\"araholtalenirasakindustriabirthplacebitballooningjovikarelianceb\" +\n\t\"jarkoyurihonjournalisteinkjerusalembroideryusuharabjerkreimbarcl\" +\n\t\"aycards3-eu-west-3utilitiesquare7bjugnieznord-aurdalpha-myqnapcl\" +\n\t\"oud66blackfridayusuisserveircateringebuilderschmidtre-gauldalimo\" +\n\t\"liserniablancomedicaltanissettaipeiheijindustriesteamfamberkeley\" +\n\t\"uu2-localhostrowwlkpmgladefensells-for-less3-website-us-east-1bl\" +\n\t\"oombergbauernuorochesterbloxcms3-website-us-west-1bluedancebmoat\" +\n\t\"tachments3-website-us-west-2bms5yuzawabmweddinglassassinationalh\" +\n\t\"eritagebnpparibaselburgleezebnrwedeploybomloabathsbcatholicaxias\" +\n\t\"colipicenodumetlifeinsurancebondrangedalindaskvollindesnesakyota\" +\n\t\"nabellunombresciabonnishiazainfinitintuitjomemorialinkyard-cloud\" +\n\t\"eitybookingliwiceboomladbrokesalangenishigoboschaefflerdalvdalas\" +\n\t\"kanittedallasallebesbyglandroverhalla-speziabostikariyaltakasago\" +\n\t\"tpantheonsitebostonakijinsekikogentinglobalashovhachinohedmarkar\" +\n\t\"lsoybotanicalgardenishiharabotanicgardenishiizunazukinuyamashina\" +\n\t\"tsukigatakarazukameokameyamatotakadabotanybouncemerckmsdnipropet\" +\n\t\"rovskjervoyagebounty-fullensakerrypropertiesalondonetskarmoybout\" +\n\t\"iquebechattanooganordkappanamatsuzakinvestmentsaltdalivornobozen\" +\n\t\"-suedtirolkuszczytnord-frontierbplacedekagaminord-odalwaysdataba\" +\n\t\"seballangenoamishirasatochigiessensiositelemarkarpaczeladzlglobo\" +\n\t\"avistaprintelligencebrandywinevalleybrasiliabrindisibenikebristo\" +\n\t\"loseyouripirangap-northeast-3britishcolumbialowiezachpomorskieni\" +\n\t\"shikatakatsukinzais-a-candidatebroadcastlefrakkestadray-dnstrace\" +\n\t\"broadwaybroke-itjxfinitybrokerbronnoysundrayddnsfreebox-osascoli\" +\n\t\"-picenordlandraydnsupdaterbrothermesaverdealstahaugesunderseapor\" +\n\t\"tsinfolldalomzaporizhzheguris-a-catererbrowsersafetymarketsaludr\" +\n\t\"ivefsnillfjordrobaknoluoktagajobojis-a-celticsfanishikatsuragit-\" +\n\t\"repostre-totendofinternet-dnsalvadordalibabalsan-suedtirollagden\" +\n\t\"esnaaseralingenkainanaejrietisalatinabenonicheltenham-radio-open\" +\n\t\"airbusantiquest-a-la-maisondre-landroidrudunsalzburglogowegrowei\" +\n\t\"bolognagatorockartuzybrumunddalondrinamsskoganeis-a-chefarmstead\" +\n\t\"upontariodejaneirodoybrunelasticbeanstalkaruizawabrusselsamegawa\" +\n\t\"bruxellesamnangerbryanskleppgafanpachigasakievennodesaarlandurba\" +\n\t\"namexnetlifyis-a-conservativegarsheis-a-cpadualstackarumaifarsun\" +\n\t\"durhamburgloppenzaolbia-tempio-olbiatempioolbialystokkembuchikum\" +\n\t\"agayagawakkanaibetsubamericanfamilydscloudapplinzis-a-cubicle-sl\" +\n\t\"avellinotairestaurantkmaxxjavald-aostaplesampagespeedmobilizerob\" +\n\t\"rynewjerseybuskerudinewportlligatksatxn--0trq7p7nnishikawazukami\" +\n\t\"tsuebuzentsujiiebuzzpanasonichernigovernmentmparaglidinglugmbhar\" +\n\t\"tiffanybweirbzhitomirumalatvuopmicrolightingminakamichiharacolog\" +\n\t\"nextdirectozsdeloittenrightathomeftparsannancolonialwilliamsburg\" +\n\t\"rongacoloradoplateaudiocolumbusheycommunitysnesannohelplfinancia\" +\n\t\"luccarbonia-iglesias-carboniaiglesiascarboniacomobaracomparemark\" +\n\t\"erryhotelsanokashiwaracompute-1computerhistoryofscience-fictionc\" +\n\t\"omsecuritytacticsantabarbaracondoshichinohealth-carereformitakeh\" +\n\t\"araconferenceconstructionconsuladoharuovatrani-andria-barletta-t\" +\n\t\"rani-andriaconsultanthropologyconsultingrossetouchihayaakasakawa\" +\n\t\"haracontactraniandriabarlettatraniandriacontagematsubaracontempo\" +\n\t\"raryarteducationalchikugojomedio-campidano-mediocampidanomedioco\" +\n\t\"ntractorskenconventureshinodearthdfcbankashiwazakiyosemitecookin\" +\n\t\"gchannelsdvrdnsdojoetsuwanouchikujogaszkolahppiacenzagancoolucer\" +\n\t\"necooperativano-frankivskoleikangercopenhagencyclopedichirurgien\" +\n\t\"s-dentistes-en-francecorsicahcesuolocus-2corvettemp-dnsantacruzs\" +\n\t\"antafedjejuifminamidaitomandalukowfashioncosenzakopanexus-3cosid\" +\n\t\"nsfor-better-thanawatchesantamariakecostumedizinhistorischesanto\" +\n\t\"andreamhostersanukis-a-doctoraycouchpotatofriesaobernardownloady\" +\n\t\"ndns-remotewdyndns-serverdaluroycouncilutskasukabedzin-the-banda\" +\n\t\"ioiraseeklogesurancechirealmpmncouponsaogoncartoonartdecologiaco\" +\n\t\"ursesaotomeloyalistjordalshalsencq-acranbrookuwanalyticsapporocr\" +\n\t\"editcardyndns-webhopencraftranoycreditunioncremonashgabadaddjagu\" +\n\t\"arqhachiojiyahoooshikamaishimodatecrewhalingroundhandlingroznycr\" +\n\t\"icketrzyncrimeast-kazakhstanangercrotonecrownipartis-a-financial\" +\n\t\"advisor-aurdaluxembourgrpartsardegnaroycrsvpartycruisesardiniacr\" +\n\t\"yptonomichigangwoncuisinellair-traffic-controlleyculturalcentern\" +\n\t\"opilawawhoswhokksundyndns-wikiracuneocupcakecuritibaghdadyndns-w\" +\n\t\"orkisboringruecxn--12c1fe0bradescorporationcyberlevagangaviikano\" +\n\t\"njis-a-geekasumigaurawa-mazowszextraspace-to-rentalstomakomaibar\" +\n\t\"acymrussiacyonabaruminamiechizencyoutheworkpccwiiheyakageferrari\" +\n\t\"ssagamiharaferreroticapebretonamicrosoftbankasuyamelbournefetsun\" +\n\t\"dynnsarluxuryfguitarsaskatchewanfhvalerfidonnakanojohanamakinoha\" +\n\t\"rafieldynservebbsarpsborguidefinimakanegasakinkobayashikaoirmina\" +\n\t\"mifuranofigueresinstagingujoinvillevangerfilateliafilegearfilmin\" +\n\t\"amiizukamishihoronobeauxartsandcraftsassaris-a-greenfinalfinance\" +\n\t\"fineartsaudafinlandynuconnectransportefinnoyfirebaseappasadenara\" +\n\t\"shinofirenzefirestonefirmdaleirvikaszubyfishingolffansauheradynv\" +\n\t\"6fitjarfitnessettlementravelchannelfjalerflesbergulenflickragero\" +\n\t\"tikakamigaharaflightsavannahgaflirflogintogurafloraflorenceflori\" +\n\t\"davvenjargaulardalfloripaderbornfloristanohatajirittohmalvikatow\" +\n\t\"iceflorogersaves-the-whalessandria-trani-barletta-andriatranibar\" +\n\t\"lettaandriaflowersavonarusawafltravelersinsuranceflynnhosting-cl\" +\n\t\"usterflynnhubargainstitutelevisionayorovigovtatsunobninskaragand\" +\n\t\"authordalandemoneyokotempresashibetsukuibmdeportevadsobetsulikes\" +\n\t\"-piedmonticellodingenavuotnaples3-eu-central-1fndynvpnplus-4for-\" +\n\t\"ourfor-someeresistancefor-theaterforexrothachirogatakamatsukawaf\" +\n\t\"orgotdnsaxoforsaleitungsenforsandasuololfortalfortmissoulancashi\" +\n\t\"reggio-calabriafortworthadanorthwesternmutualforumzwildlifedorai\" +\n\t\"nfracloudcontrolappassagensbschokokekschokoladenfosnescholarship\" +\n\t\"schoolfotarivnefoxfordeatnurembergunmaoris-a-gurulvikatsushikabe\" +\n\t\"eldengeluidyroyfozorafredrikstadtvschulefreeddnsgeekgalaxyfreede\" +\n\t\"sktoperauniteroizumizakirovogradoyfreemasonryfreesitexashorokana\" +\n\t\"iefreetlschwarzgwangjuniperfreiburguovdageaidnunzenfreightrdfres\" +\n\t\"eniuscountryestateofdelawarezzoologyfribourgushikamifuranorth-ka\" +\n\t\"zakhstanfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-ven\" +\n\t\"ezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriul\" +\n\t\"ive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiuliaf\" +\n\t\"riulivgiuliafrlfroganschweizfrognfrolandfrom-akrehamnfrom-alfrom\" +\n\t\"-arfrom-azfrom-capetownnews-stagingwiddlewismillerfrom-codynalia\" +\n\t\"sdaburfrom-ctrentin-sued-tirolfrom-dchiryukyuragifuchungbukharau\" +\n\t\"malopolskanlandyndns-at-workinggrouparliamentoyosatoyonakagyokut\" +\n\t\"oyokawafrom-debianfrom-flandersciencecentersciencehistoryfrom-ga\" +\n\t\"usdalfrom-hichisochildrensgardenfrom-iafrom-idfrom-ilfrom-incheo\" +\n\t\"nfrom-kscientistockholmestrandfrom-kyowariasahikawafrom-lancaste\" +\n\t\"rfrom-mangonohejis-a-hard-workerfrom-mdfrom-meethnologyfrom-mifu\" +\n\t\"nefrom-mnfrom-modalenfrom-mscjohnsonfrom-mtnfrom-nchitachinakaga\" +\n\t\"wassamukawataricohdatsunanjoburgmodellingmxn--11b4c3dyndns-blogd\" +\n\t\"nsamsclubindalorenskogrimstadyndns-freeboxosloftranakanotoddenis\" +\n\t\"hinomiyashironofrom-ndfrom-nefrom-nh-serveblogsitextileksvikatsu\" +\n\t\"yamarumorimachidafrom-njaworznotogawafrom-nminamimakis-a-hunterf\" +\n\t\"rom-nv-infoodnetworkshoppingxn--12co0c3b4evalleaostaticscotlandf\" +\n\t\"rom-nyfrom-ohkurafrom-oketohnoshooguyfrom-orfrom-padovaksdalfrom\" +\n\t\"-pratohobby-sitefrom-ris-a-knightpointtokamachintaifun-dnsaliasi\" +\n\t\"afrom-schoenbrunnfrom-sdfrom-tnfrom-txn--1ck2e1barreauctionflfan\" +\n\t\"fshostrowiecasertairanzanquannefrankfurtattooceanographics3-fips\" +\n\t\"-us-gov-west-1from-utazuerichardlikescandynamic-dnscrapper-sitef\" +\n\t\"rom-val-daostavalleyfrom-vtrentin-suedtirolfrom-wafrom-wielunner\" +\n\t\"from-wvalled-aostatoilfrom-wyfrosinonefrostalowa-wolawafroyahiko\" +\n\t\"beardubaiduckdnscrappingfstavernfujiiderafujikawaguchikonefujimi\" +\n\t\"nokamoenairportland-4-salernoboribetsuckscrysechitosetogitsuldal\" +\n\t\"otenkawafujinomiyadavvesiidattowebcampinashikiminohosteroyrvikin\" +\n\t\"gfujiokayamangyshlakasamatsudontexistmein-iservebeerfujisatoshon\" +\n\t\"airtelefonicable-modemocraciafujisawafujishiroishidakabiratoride\" +\n\t\"dyn-ip24fujitsurugashimaniwakuratefujixeroxn--1ctwolominamatakko\" +\n\t\"kaminoyamaxunusualpersonfujiyoshidazaifudaigokaseljordfukayabeat\" +\n\t\"serveminecraftrentino-a-adigefukuchiyamadafukudominichocolatemas\" +\n\t\"ekasaokaminokawanishiaizubangefukuis-a-landscaperfukumitsubishig\" +\n\t\"akiryuohtawaramotoineppuboliviajessheimperiafukuokazakisarazurec\" +\n\t\"ontainerdpolicefukuroishikarikaturindalfukusakishiwadafukuyamaga\" +\n\t\"takaharuslivinghistoryfunabashiriuchinadafunagatakahashimamakiso\" +\n\t\"fukushimannore-og-uvdalfunahashikamiamakusatsumasendaisennangoog\" +\n\t\"lecodespotaruis-a-lawyerfundaciofuoiskujukuriyamansionservemp3fu\" +\n\t\"osskoczowilliamhillfurnitureggio-emilia-romagnakatombetsumitakag\" +\n\t\"iizefurubirafurudonostiaafurukawairtrafficplexus-1fusodegaurafus\" +\n\t\"saikisosakitagawafutabayamaguchinomigawafutboldlygoingnowhere-fo\" +\n\t\"r-morenakatsugawafuttsurugiminamiminowafuturecmservep2passenger-\" +\n\t\"associationfuturehostingfuturemailingfvgfylkesbiblackbaudcdn77-s\" +\n\t\"ecurecifedexhibitionfyresdalhangoutsystemscloudfrontdoorhannanmo\" +\n\t\"kuizumodenakayamarburghannosegawahanyuzenhapmirhareidsbergenhars\" +\n\t\"tadharvestcelebrationhasamarcheapigeelvinckautokeinow-dnservesar\" +\n\t\"casmatartanddesignhasaminami-alpssells-itrentino-aadigehashbangh\" +\n\t\"asudahasura-appaviancarrierhasvikazohatogayaitakamoriokalmykiaha\" +\n\t\"toyamazakitakamiizumisanofidelityhatsukaichikaiseis-a-linux-user\" +\n\t\"anishiaritabashijonawatehattfjelldalhayashimamotobungotakadaplie\" +\n\t\"rnewmexicoalhazuminobusellsyourhomegoodservicesevastopolehbodoes\" +\n\t\"-itvedestrandhelsinkitakatakanabeautysfjordhembygdsforbundhemnes\" +\n\t\"evenassisicilyhemsedalhepforgeherokussldheroyhgtvalledaostavange\" +\n\t\"rhigashiagatsumagoianiahigashichichibunkyonanaoshimageandsoundan\" +\n\t\"dvisionhigashihiroshimanehigashiizumozakitakyushuaiahigashikagaw\" +\n\t\"ahigashikagurasoedahigashikawakitaaikitamihamadahigashikurumegur\" +\n\t\"omskoghigashimatsushimaritimodernhigashimatsuyamakitaakitadaitoi\" +\n\t\"gawahigashimurayamamotorcyclesewinbarrel-of-knowledgeologyokozem\" +\n\t\"rhigashinarusembokukitamotosumy-gatewayhigashinehigashiomihachim\" +\n\t\"anaustdalhigashiosakasayamanakakogawahigashishirakawamatakanezaw\" +\n\t\"ahigashisumiyoshikawaminamiaikitanakagusukumoduminamiogunicomcas\" +\n\t\"tresindevicesharis-a-llamarriottrentino-alto-adigehigashitsunosh\" +\n\t\"iroomurahigashiurausukitashiobarahigashiyamatokoriyamanashiftedi\" +\n\t\"tchyouripfizerhigashiyodogawahigashiyoshinogaris-a-musicianhirai\" +\n\t\"zumisatokaizukaluganskypehirakatashinagawahiranais-a-nascarfanhi\" +\n\t\"rarahiratsukagawahirayaizuwakamatsubushikusakadogawahistorichous\" +\n\t\"esharpgfoggiahitachiomiyagildeskaliszhitachiotagopocznorfolkebib\" +\n\t\"lelhitraeumtgeradellogliastradinghjartdalhjelmelandholeckobierzy\" +\n\t\"ceholidayhomeipharmacienshawaiijimarnardalhomelinkitoolsztynsett\" +\n\t\"lershellaspeziahomelinuxn--1lqs03nhomeofficehomesecuritymacapare\" +\n\t\"cidahomesecuritypchofunatoriginsurecreationishinoomotegohomesens\" +\n\t\"eminehomeunixn--1lqs71dhondahoneywellbeingzonehongotembaixadahon\" +\n\t\"jyoitakaokamakurazakitaurayasudahornindalhorseoullensvanguardhor\" +\n\t\"teneis-a-nurservegame-serverhospitalhoteleshimojis-a-painteracti\" +\n\t\"vegaskimitsubatamibudejjuedischesapeakebayernrtrentino-altoadige\" +\n\t\"hotmailhoyangerhoylandetroitskazunowruzhgorodeohumanitieshimokaw\" +\n\t\"ahurdalhurumajis-a-patsfanhyllestadhyogoris-a-personaltrainerhyu\" +\n\t\"gawarahyundaiwafunejfkharkovaojlljmphilatelyjnjcphiladelphiaarea\" +\n\t\"dmyblogspotrentino-sued-tiroljoyentrentinoa-adigejoyokaichibalat\" +\n\t\"inogiftshimotsumajpmorganjpnchoseiroumuenchenishinoshimatsushige\" +\n\t\"jprshinichinanjurkoshunantankhmelnitskiyamarylandkosugekotohirad\" +\n\t\"omainshinshinotsurgerykotourakouhokutamakis-a-studentalkounosupp\" +\n\t\"lieshinshirokouyamashikekouzushimashikis-a-teacherkassymantechno\" +\n\t\"logykozagawakozakis-a-techietis-a-photographerokuappharmacyshimo\" +\n\t\"kitayamakozowindmillkpnkppspdnshintokushimakrasnodarkredstonekri\" +\n\t\"stiansandcatshintomikasaharakristiansundkrodsheradkrokstadelvald\" +\n\t\"aostarnbergkryminamisanrikubetsurfastpanelblagrarchaeologyeongbu\" +\n\t\"klugsmileasinglest-mon-blogueurovisionionjukudoyamaceratabusebas\" +\n\t\"topologyeonggiehtavuoatnagaivuotnagaokakyotambabydgoszczecinemad\" +\n\t\"ridvagsoygardendoftheinternetflixilovecollegefantasyleaguernseyk\" +\n\t\"umatorinokumejimasoykumenantokonamegatakasugais-a-therapistoiaku\" +\n\t\"nisakis-an-accountantshimonitayanagithubusercontentrentino-s-tir\" +\n\t\"olkunitachiarailwaykunitomigusukumamotoyamashikokuchuokunneppugl\" +\n\t\"iakunstsammlungkunstunddesignkuokgrouphotographysiokurehabmerkur\" +\n\t\"gankurobelaudiblebtimnetzkurogiminamiashigarakuroisoftwarendalen\" +\n\t\"ugkuromatsunais-an-actorkurotakikawasakis-an-actresshimonosekika\" +\n\t\"wakushirogawakustanais-an-anarchistoricalsocietykusupplykutchane\" +\n\t\"lkutnokuzumakis-an-artisteigenkvafjordkvalsundkvamlidlugolekafjo\" +\n\t\"rdkvanangenkvinesdalkvinnheradkviteseidskogkvitsoykwpspectrumina\" +\n\t\"mitanekzmissilezajskmpspbarrell-of-knowledgeometre-experts-compt\" +\n\t\"ables3-sa-east-1misugitokuyamatsumaebashikshacknetrentinoaadigem\" +\n\t\"itourismolangevagrigentomologyeongnamegawakayamagazineat-urlmito\" +\n\t\"yoakemiuramiyazurewebsiteshikagamiishibukawamiyotamanomjondalenm\" +\n\t\"lbfanmonstermontrealestatefarmequipmentrentinoalto-adigemonza-br\" +\n\t\"ianzaporizhzhiamonza-e-della-brianzapposhioyanaizumonzabrianzapt\" +\n\t\"okyotangotsukitahatakahatakaishimogosenmonzaebrianzaramonzaedell\" +\n\t\"abrianzamoonscalemoparachutingmordoviamoriyamatsumotofukemoriyos\" +\n\t\"himinamiawajikis-certifiedogawarabikomaezakirunordreisa-geekddie\" +\n\t\"lddanuorrikuzentakataiwanairguardiannakadomarinebraskaunjargalsa\" +\n\t\"certmgretachikawakeisenbahnmormonmouthaebaruericssonyoursidegree\" +\n\t\"moroyamatsunomortgagemoscowindowshirahamatonbetsurnadalmoseushis\" +\n\t\"torymosjoenmoskeneshirakofuefukihaborokunohealthcareershiranukan\" +\n\t\"agawamosshiraois-foundationmosviknx-serverrankoshigayanagawamote\" +\n\t\"ginowaniihamatamakawajimanxn--2scrj9choshibuyachiyodattorelaymov\" +\n\t\"iemovimientolgamovistargardmozilla-iotrentinoaltoadigemtranbymue\" +\n\t\"nstermuginozawaonsenmuikamisunagawamukodairamulhouservehalflifes\" +\n\t\"tylemunakatanemuncienciamuosattemupictetrentinos-tirolmurmanskol\" +\n\t\"obrzegersundmurotorcraftrentinostirolmusashimurayamatsusakahogin\" +\n\t\"ankokubunjis-gonemusashinoharamuseetrentinosued-tirolmuseumveren\" +\n\t\"igingmusicargodaddyn-vpndnshiraokananiimihoboleslawiechoyodobash\" +\n\t\"ichikashukujitawaravennakaiwamizawatchandclockashibatakasakiyosa\" +\n\t\"tokigawamutsuzawamy-vigorgemy-wanggouvicenzamyactivedirectorymya\" +\n\t\"sustor-elvdalmycdn77-sslattuminamiuonumassa-carrara-massacarrara\" +\n\t\"massabusinessebyklegalloanshinyoshitomiokamogawamydattolocalhist\" +\n\t\"orymyddnskingmydissentrentinosuedtirolmydroboehringerikemydshira\" +\n\t\"takahagitlabormyeffectrentinsued-tirolmyfirewallonieruchomoscien\" +\n\t\"ceandindustrynmyfritzmyftpaccesshishikuis-into-animeiwamarshalls\" +\n\t\"tatebankfhappousrlmyhome-servermyjinomykolaivarggatrentinsuedtir\" +\n\t\"olmymailermymediapchristiansburgriwataraidyndns-homednsamsungrok\" +\n\t\"s-thisayamanobeokakudamatsuemyokohamamatsudamypepictureshisognem\" +\n\t\"ypetshisuifuelveruminamiyamashirokawanabelembetsukubankhmelnytsk\" +\n\t\"yivaporcloudnshinjournalismailillehammerfeste-iphilipsynology-di\" +\n\t\"skstationmyphotoshibalestrandabergamoarekeymachinewhampshirebung\" +\n\t\"oonoipifonyminanomypiagetmyiphostfoldnavymypsxn--30rr7ymysecurit\" +\n\t\"ycamerakermyshopblockshitaramamytis-a-bookkeeperugiamytuleapiemo\" +\n\t\"ntemyvnchristmasakinderoymywireitrentoyonezawapippulawypiszpitts\" +\n\t\"burghofficialpiwatepixolinopizzapkomakiyosunndalplanetariumincom\" +\n\t\"mbanklabudhabikinokawabarthadselfipatriaplantationplantshizuokan\" +\n\t\"azawaplatformshangrilanshoujis-into-cartoonshimotsukeplaystation\" +\n\t\"plazaplchromedicinakamagayachtsandnessjoenishiokoppegardyndns-ip\" +\n\t\"armatta-varjjatoyotaparocherkasyno-dsandoyplumbingoplurinacional\" +\n\t\"podlasiellaktyubinskiptveterinairealtorlandpodzonepohlpoivronpok\" +\n\t\"erpokrovskomatsushimasfjordenpoliticartierpolitiendapolkowicepol\" +\n\t\"tavalle-aostarostwodzislawinnershowapomorzeszowioshowtimemergenc\" +\n\t\"yahabahcavuotnagareyamakeupowiathletajimabaridagawalbrzycharityd\" +\n\t\"alceshriramsterdamnserverbaniapordenonepornporsangerporsangugepo\" +\n\t\"rsgrunnanyokoshibahikariwanumatakazakis-into-gamessinazawapoznan\" +\n\t\"praxis-a-bruinsfanprdpreservationpresidioprgmrprimelhusdecorativ\" +\n\t\"eartsienarutomobellevuelosangelesjabbottrevisohughesigdalprincip\" +\n\t\"eprivatizehealthinsuranceprochowiceproductionsilkomforbarsycente\" +\n\t\"rtainmentaxihuanhktcp4profesionalprogressivenneslaskerrylogistic\" +\n\t\"simple-urlpromombetsurgeonshalloffameldalpropertyprotectionproto\" +\n\t\"netritonprudentialpruszkowitdkommunalforbundprzeworskogptplusgar\" +\n\t\"denpupilotshizukuishimofusaitamatsukuris-into-carshimosuwalkis-a\" +\n\t\"-playerpvhagakhanamigawapvtroandinosaurepaircraftingvollombardyn\" +\n\t\"amisches-dnsirdalpwchryslerpzqldqponpesaro-urbino-pesarourbinope\" +\n\t\"saromasvuotnaritakurashikis-leetnedalqslgbtrogstadquicksytesting\" +\n\t\"quipelementslingqvchungnamdalseidfjordyndns-mailottestorfjordsto\" +\n\t\"rjdevcloudcontrolledstpetersburgstreamuneuesokaneyamazoestudiost\" +\n\t\"udyndns-at-homedepotenzamamidsundstuff-4-salestufftoread-booksne\" +\n\t\"sokndalstuttgartrusteesusakis-lostrodawarasusonosuzakaniepcesuzu\" +\n\t\"kanmakiwiensuzukis-not-certifieducatorahimeshimamateramobilysval\" +\n\t\"bardunloppacifichurcharternidyndns-office-on-the-weberlincolnish\" +\n\t\"itosashimizunaminamibosogndalottokorozawasveiosvelvikongsbergsvi\" +\n\t\"zzerasvn-reposolarssonswedenswidnicasacamdvrcampinagrandebugatti\" +\n\t\"pschlesischesologneswiebodzindianapolis-a-bloggerswiftcoverswino\" +\n\t\"ujscienceandhistoryswisshikis-savedunetbankhakassiasynology-dsol\" +\n\t\"undbeckomonowtvareservehttphoenixn--1qqw23atushuissier-justicetu\" +\n\t\"valle-daostatic-accessootuxfamilytwmailvestre-slidrepbodynathome\" +\n\t\"builtrvbashkiriautomotiveconomiasakuchinotsuchiurakawalmartatesh\" +\n\t\"inanomachimkentateyamaustevollavangenaval-d-aosta-valleyboltatar\" +\n\t\"antoyakokonoehimejibestaddnslivelanddnss3-ap-southeast-2ix4432-b\" +\n\t\"ananarepublicaseihicampobassociatest-iservecounterstrike12hpaleo\" +\n\t\"bihirosakikamijimatsuurabogadocscbgdyniabruzzoologicalvinklein-a\" +\n\t\"ddrammenuernberggfarmerseine164-barcelonagasukeastcoastaldefence\" +\n\t\"atonsbergjemnes3-ap-northeast-1337vestre-totennishiawakuravestva\" +\n\t\"goyvevelstadvibo-valentiavibovalentiavideovillasnesoddenmarkhang\" +\n\t\"elskjakdnepropetrovskiervaapsteiermarkoninjambylvinnicasadelamon\" +\n\t\"edatingvinnytsiavipsinaappimientakayamattelekommunikationvirgini\" +\n\t\"avirtual-userveexchangevirtualuserveftpinkomaganevirtueeldomein-\" +\n\t\"vigorlicevirtuelvisakegawaviterboknowsitallvivoldavixn--32vp30ha\" +\n\t\"gebostadvlaanderenvladikavkazimierz-dolnyvladimirvlogoipioneervo\" +\n\t\"lkswagentsor-odalvologdanskonskowolayangrouphonefosshinjukumanov\" +\n\t\"olvolkenkundenvolyngdalvossevangenvotevotingvotoyonowiwatsukiyon\" +\n\t\"oticiaskoyabearalvahkijobserveronagarahkkeravjuegoshikikonaikawa\" +\n\t\"chinaganoharamcoachampionshiphoptobishimaintenancebetsuikidsmyna\" +\n\t\"sushiobarackmazerbaijan-mayenebakkeshibechambagriculturennebudap\" +\n\t\"est-a-la-masionthewifiat-band-campaniawloclawekonsulatrobeepilep\" +\n\t\"sydneywmflabsor-varangerworldworse-thandawowithgoogleapisa-hocke\" +\n\t\"ynutsiracusakataketomisatotalwpdevcloudyclusterwritesthisblogsyt\" +\n\t\"ewroclawithyoutuberspacekitagatakinouewtcminnesotaketakatoris-an\" +\n\t\"-engineeringwtfastvps-serverisignwuozuwzmiuwajimaxn--3pxu8konyve\" +\n\t\"lombardiamondshinkamigotoyohashimotottoris-a-rockstarachowicexn-\" +\n\t\"-42c2d9axn--45br5cylxn--45brj9circustomerxn--45q11cistrondheimmo\" +\n\t\"bilienishiwakis-a-democratoyotomiyazakis-a-designerxn--4gbrimini\" +\n\t\"ngxn--4it168dxn--4it797kooris-a-socialistcgrouphdxn--4pvxs4allxn\" +\n\t\"--54b7fta0ccitadeliveryggeexn--55qw42gxn--55qx5dxn--5js045dxn--5\" +\n\t\"rtp49citichernihivgubarclays3-external-1xn--5rtq34kopervikherson\" +\n\t\"xn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6q\" +\n\t\"q986b3xlxn--7t0a264civilaviationissandiegoxn--80adxhksorfoldxn--\" +\n\t\"80ao21axn--80aqecdr1axn--80asehdbasilicataniautoscanadaejeonbuk1\" +\n\t\"2xn--80aswgxn--80audnedalnxn--8ltr62koryokamikawanehonbetsurutah\" +\n\t\"araxn--8pvr4uxn--8y0a063axn--90a3academiamicaaarborteaches-yogas\" +\n\t\"awaracingxn--90aeroportalabamagasakishimabaraogakibichuoxn--90ai\" +\n\t\"shobarakawagoexn--90azhytomyravendbasketballyngenvironmentalcons\" +\n\t\"ervationhlfanhs3-us-east-2xn--9dbhblg6dietcimdbatodayolasiteu-2x\" +\n\t\"n--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byandexn--\" +\n\t\"3bst00minternationalfirearmshiojirishirifujiedaxn--asky-iraxn--a\" +\n\t\"urskog-hland-jnbatsfjordiscountysvardolls3-us-gov-west-1xn--aver\" +\n\t\"y-yuasakuhokkaidoomdnsiskinkyotobetsumidatlanticivilisationissay\" +\n\t\"okkaichiropractichernivtsiciliaxn--b-5gaxn--b4w605ferdxn--balsan\" +\n\t\"-sudtirol-rqis-slickharkivanylvenicexn--bck1b9a5dre4civilization\" +\n\t\"issedalouvreisenisshingucciprianiigataishinomakindlegnicagliarib\" +\n\t\"eiraokinawashirosatochiokinoshimaizuruhrxn--bdddj-mrabdxn--beara\" +\n\t\"lvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn-\" +\n\t\"-bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsurreyxn--bjdd\" +\n\t\"ar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--bod\" +\n\t\"-2natalxn--bozen-sudtirol-76haibarakitahiroshimapartmentservepic\" +\n\t\"servequakexn--brnny-wuacademy-firewall-gatewayxn--brnnysund-m8ac\" +\n\t\"cident-investigation-aptibleaseating-organicbcieszynxn--brum-voa\" +\n\t\"gatrysiljanxn--btsfjord-9zaxn--bulsan-sudtirol-rqis-uberleetrent\" +\n\t\"ino-stirolxn--c1avgxn--c2br7gxn--c3s14misakis-an-entertainerxn--\" +\n\t\"cck2b3bauhausposts-and-telecommunicationsncfdiscoveryombolzano-a\" +\n\t\"ltoadigeu-3xn--cesena-forli-c2gxn--cesenaforli-0jgoraxn--cg4bkis\" +\n\t\"-very-badajozxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a2o\" +\n\t\"xn--correios-e-telecomunicaes-ghc29axn--czr694bbcn-north-1xn--cz\" +\n\t\"rs0tulanxessolutionslupskommunexn--czru2dxn--czrw28bbtjmaxxxboxe\" +\n\t\"napponazure-mobileu-4xn--d1acj3bbvacationswatch-and-clockerxn--d\" +\n\t\"1alfaromeoxn--d1atunesomaxn--d5qv7z876civilwarmanagementoyotsuka\" +\n\t\"idoxn--davvenjrga-y4axn--djrs72d6uyxn--djty4kosaigawaxn--dnna-gr\" +\n\t\"ajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e1a4claimsandvikcor\" +\n\t\"omantovalle-d-aostathellexn--eckvdtc9dxn--efvn9sorocabalsfjordxn\" +\n\t\"--efvy88hair-surveillancexn--ehqz56nxn--elqq16hakatanortonxn--es\" +\n\t\"tv75gxn--eveni-0qa01gaxn--f6qx53axn--fct429kosakaerodromegallupi\" +\n\t\"nbarsyonlinewhollandevelopmentjeldsundgcanonoichinomiyakeu-1xn--\" +\n\t\"fhbeiarnxn--finny-yuaxn--fiq228c5hsorreisahayakawakamiichikawami\" +\n\t\"satourslzxn--fiq64beneventoeidsvollillesandefjordishakotanikkoeb\" +\n\t\"enhavnikolaevents3-us-west-1xn--fiqs8sortlandxn--fiqz9soruminise\" +\n\t\"rversicherungxn--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--f\" +\n\t\"lw351exn--forli-cesena-41gxn--forlicesena-ujgxn--fpcrj9c3dxn--fr\" +\n\t\"de-grandrapidsoundcastronomy-routerxn--frna-woaraisaijosoyroroso\" +\n\t\"uthcarolinarvikomorotsukamiokamikitayamatsuris-a-republicancerre\" +\n\t\"searchaeologicaliforniaxn--frya-hraxn--fzc2c9e2clanbibaidarmenia\" +\n\t\"xn--fzys8d69uvgmailxn--g2xx48cldmailowiczest-le-patroniyodogawax\" +\n\t\"n--gckr3f0fauskedsmokorsetagayasells-for-ufcfanxn--gecrj9clickas\" +\n\t\"hiharaxn--ggaviika-8ya47hakodatexn--gildeskl-g0axn--givuotna-8ya\" +\n\t\"sakaiminatoyookannamilanotteroyxn--gjvik-wuaxn--gk3at1exn--gls-e\" +\n\t\"lacaixaxn--gmq050is-very-evillagexn--gmqw5axn--h-2failxn--h1aegh\" +\n\t\"akonexn--h2breg3evenesouthwestfalenxn--h2brj9c8clinichernovtsykk\" +\n\t\"ylvenetogakushimotoganewyorkshirecipescaravantaarparisor-fronish\" +\n\t\"imeraxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7ya35bentleyomi\" +\n\t\"tanoceanographiqueverbankarasjohkamikoaniikappueblockbustermezgo\" +\n\t\"rzeleccoffeedbackplaneapplegodoesntexisteingeekarasjokarasuyamar\" +\n\t\"ugame-hostrolekamiminers3-us-west-2xn--hery-iraxn--hgebostad-g3a\" +\n\t\"xn--hmmrfeasta-s4accident-prevention-webhostingxn--hnefoss-q1axn\" +\n\t\"--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1a\" +\n\t\"xn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyasugiving\" +\n\t\"xn--io0a7is-very-goodyearxn--j1aefbsbxn--12cfi8ixb8luzernxn--j1a\" +\n\t\"mhakubahccavuotnagasakikuchikuseikarugamvikaufenxn--j6w193gxn--j\" +\n\t\"lq61u9w7beppublishproxyzjampagefrontappalmaseratiitatebayashiiba\" +\n\t\"jddarchitecturealtychyattorneyagawakuyabukihokumakogenglandisrec\" +\n\t\"htrainingjesdalillyonagoyaveroykeniwaizumiotsukumiyamazonawsadod\" +\n\t\"gemologicallaziobiraustinnavigationavoibigawaukraanghkepnogataij\" +\n\t\"i234lima-cityeatselinogradultarnobrzegyptian4tarumizusawaetnagah\" +\n\t\"amaroyereportashkentatamotors3-ap-northeast-20001wwwebredirectme\" +\n\t\"msettsupport3l3p0rtargets-itargivestbytomaritimekeeping12038xn--\" +\n\t\"jlster-byasuokanraxn--jrpeland-54axn--jvr189misasaguris-byxn--k7\" +\n\t\"yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klb\" +\n\t\"u-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3ds443gxn--kolu\" +\n\t\"okta-7ya57hakuis-a-liberalxn--kprw13dxn--kpry57dxn--kpu716fbx-os\" +\n\t\"arufutsunomiyawakasaikaitakoelnxn--kput3is-very-nicexn--krager-g\" +\n\t\"yatomitamamuraxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn\" +\n\t\"--krjohka-hwab49jdfastlylbarefootballfinanzgoraustrheimatunduhre\" +\n\t\"nnesoyokosukanzakiyokawaraurskog-holandingjerdrumetacentrumeteor\" +\n\t\"appalermomahachijolstereviewskrakowebspacebizenakasatsunairlined\" +\n\t\"re-eikerevistanbulsan-suedtirol-o-g-i-natuurwetenschappenaumburg\" +\n\t\"jerstadotsuruokakegawaugustowadaeguambulancebinordre-landd-dnsho\" +\n\t\"me-webservercelliguriagrocerybnikahokutobamagentositecnologiajud\" +\n\t\"aicadaques3-ap-southeast-1kappchizippodhaleangaviikadenaamesjevu\" +\n\t\"emielno-ip6xn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazu\" +\n\t\"ryxn--kvnangen-k0axn--l-1fairwindsowaxn--l1accentureklamborghini\" +\n\t\"kis-very-sweetpepperxn--laheadju-7yatsushiroxn--langevg-jxaxn--l\" +\n\t\"cvr32dxn--ldingen-q1axn--leagaviika-52beskidyn-o-saurlandes3-web\" +\n\t\"site-ap-northeast-1xn--lesund-huaxn--lgbbat1ad8jelenia-goraxn--l\" +\n\t\"grd-poacctunkongsvingerxn--lhppi-xqaxn--linds-pramericanarturyst\" +\n\t\"ykanoyakumoldelmenhorstalbansomnarviikamitondabayashiogamagorizi\" +\n\t\"axn--lns-qlapyxn--loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-l\" +\n\t\"iacliniquenoharaxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-i\" +\n\t\"raxn--merker-kuaxn--mgb2ddespeedpartnersnoasaitoshimayfirstjohnx\" +\n\t\"n--mgb9awbfbxosasayamaxn--mgba3a3ejtuscanyxn--mgba3a4f16axn--mgb\" +\n\t\"a3a4franamizuholdingspiegelxn--mgba7c0bbn0axn--mgbaakc7dvfedorap\" +\n\t\"eopleirfjordyndns1xn--mgbaam7a8hakusanagochijiwadell-ogliastrade\" +\n\t\"rxn--mgbab2bdxn--mgbai9a5eva00bestbuyshouses3-website-ap-southea\" +\n\t\"st-1xn--mgbai9azgqp6jeonnamerikawauexn--mgbayh7gpalacexn--mgbb9f\" +\n\t\"bpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgberp\" +\n\t\"4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbp\" +\n\t\"l2fhskydivingxn--mgbqly7c0a67fbclintonoshoesanfranciscofreakunem\" +\n\t\"urorangeiseiyoichippubetsubetsugarugbyengerdalaheadjudygarlandyn\" +\n\t\"dns-picsangoxn--mgbqly7cvafranziskanerimaringatlantakahamamuroga\" +\n\t\"waxn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2betainaboxfusejnynysa\" +\n\t\"gaeroclubmedecincinnationwidealerimo-i-ranadexeterxn--mgbx4cd0ab\" +\n\t\"bvieeexn--mix082fedoraprojectransurlvivanovodkamisatokashikiwaku\" +\n\t\"nigamiharulminamiiselectrapaniizaxn--mix891feiraquarelleborkange\" +\n\t\"rxn--mjndalen-64axn--mk0axindianmarketingxn--mk1bu44clothingdust\" +\n\t\"kagoshimalselvendrellucaniaxn--mkru45is-with-thebandovre-eikerxn\" +\n\t\"--mlatvuopmi-s4axn--mli-tlaquilanciaxn--mlselv-iuaxn--moreke-jua\" +\n\t\"xn--mori-qsakuragawaxn--mosjen-eyawaraxn--mot-tlarvikoseis-a-sox\" +\n\t\"fanxn--mre-og-romsdal-qqbhzcasinorddalimanowarudavocatanzarownpr\" +\n\t\"oviderhcloudfunctions3-eu-west-1xn--msy-ula0haldenxn--mtta-vrjja\" +\n\t\"t-k7afamilycompanycn-northwest-1xn--muost-0qaxn--mxtq1misawaxn--\" +\n\t\"ngbc5azdxn--ngbe9e0axn--ngbrxn--3e0b707exn--nit225kosherbrookega\" +\n\t\"waxn--nmesjevuemie-tcbaltimore-og-romsdalipayxn--nnx388axn--node\" +\n\t\"ssakuraisleofmanchesterxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3\" +\n\t\"axn--ntsq17gxn--nttery-byaeservehumourxn--nvuotna-hwaxn--nyqy26a\" +\n\t\"xn--o1achaseljeepsongdalenviknaharimalborkdalxn--o3cw4halsaintlo\" +\n\t\"uis-a-anarchistoireggiocalabriaxn--o3cyx2axn--od0algxn--od0aq3bi\" +\n\t\"eigersundivtasvuodnakamuratajimidoriopretogoldpoint2thisamitsuke\" +\n\t\"vje-og-hornnes3-website-ap-southeast-2xn--ogbpf8flekkefjordxn--o\" +\n\t\"ppegrd-ixaxn--ostery-fyawatahamaxn--osyro-wuaxn--otu796dxn--p1ac\" +\n\t\"fermochizukirkenesasebofagexn--p1aissmarterthanyoutwentexn--pbt9\" +\n\t\"77cngrondarxn--pgbs0dhlxn--porsgu-sta26ferraraxn--pssu33lxn--pss\" +\n\t\"y2uxn--q9jyb4cnpyatigorskodjeffersonxn--qcka1pmckinseyxn--qqqt11\" +\n\t\"misconfusedxn--qxamusementdllcube-serversaillespjelkavikomvuxn--\" +\n\t\"2m4a15exn--rady-iraxn--rdal-poaxn--rde-ulavagiskexn--rdy-0nabari\" +\n\t\"xn--rennesy-v1axn--rhkkervju-01aflakstadaokagakicks-assedicnsanj\" +\n\t\"otoyouraxn--rholt-mragowoodsideltaitogliattirespreadbettingxn--r\" +\n\t\"hqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5nativeamericanantiq\" +\n\t\"uespydebergxn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-by\" +\n\t\"axn--rny31hammarfeastafricapitalonewspaperxn--rovu88bielawalterx\" +\n\t\"n--rros-granvindafjordxn--rskog-uuaxn--rst-0naturalhistorymuseum\" +\n\t\"centerxn--rsta-francaiseharaxn--rvc1e0am3exn--ryken-vuaxn--ryrvi\" +\n\t\"k-byaxn--s-1faithruheredumbrellajollamericanexpressexyxn--s9brj9\" +\n\t\"cntoystre-slidrettozawaxn--sandnessjen-ogbizxn--sandy-yuaxn--ser\" +\n\t\"al-lraxn--ses554gxn--sgne-gratangenxn--skierv-utazassnasabaeroba\" +\n\t\"ticketsrtromsojamisonxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn-\" +\n\t\"-sknland-fxaxn--slat-5naturalsciencesnaturellesrvaroyxn--slt-ela\" +\n\t\"bcgxn--smla-hraxn--smna-gratis-a-bulls-fanxn--snase-nraxn--sndre\" +\n\t\"-land-0cbremangerxn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr\" +\n\t\"-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbiellaakesvuemieleccex\" +\n\t\"n--srfold-byaxn--srreisa-q1axn--srum-grazxn--stfold-9xaxn--stjrd\" +\n\t\"al-s1axn--stjrdalshalsen-sqbieszczadygeyachimataikikugawarszawas\" +\n\t\"hingtondclkaratexn--stre-toten-zcbstoragexn--sudtirol-y0emmafann\" +\n\t\"-arboretumbriamallamaceioxn--t60b56axn--tckweatherchannelxn--tiq\" +\n\t\"49xqyjetztrentino-suedtirolxn--tjme-hraxn--tn0agrinet-freakstord\" +\n\t\"alxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sud-tirol-t\" +\n\t\"sjcbnlxn--trentin-sudtirol-b9ixn--trentino-sud-tirol-dckoshimizu\" +\n\t\"makizunokunimimatakashimarylhurstgoryxn--trentino-sudtirol-usjev\" +\n\t\"nakershuscultureggioemiliaromagnamsosnowiechonanbuildingripexn--\" +\n\t\"trentinosud-tirol-tsjewelryxn--trentinosudtirol-b9ixn--trentinsu\" +\n\t\"d-tirol-98ixn--trentinsudtirol-rqixn--trgstad-r1axn--trna-woaxn-\" +\n\t\"-troms-zuaxn--tysvr-vraxn--uc0atvestfoldxn--uc0ay4axn--uist22ham\" +\n\t\"urakamigoris-a-libertarianxn--uisz3gxn--unjrga-rtaobaomoriguchih\" +\n\t\"aragusartstoregontrailroadxn--unup4yxn--uuwu58axn--vads-jraxn--v\" +\n\t\"allee-aoste-i2gxn--vallee-d-aoste-43handsonxn--valleeaoste-6jgxn\" +\n\t\"--valleedaoste-i2gxn--vard-jraxn--vegrshei-c0axn--vermgensberate\" +\n\t\"r-ctbievatmallorcafederationikonanporovnoddavoues3-eu-west-2xn--\" +\n\t\"vermgensberatung-pwbifukagawashtenawdev-myqnapcloudaccesscambrid\" +\n\t\"gestoneustarhubs3-website-eu-west-1xn--vestvgy-ixa6oxn--vg-yiabk\" +\n\t\"haziaxn--vgan-qoaxn--vgsy-qoa0jewishartgalleryxn--vgu402coguchik\" +\n\t\"uzenxn--vhquvestnesopotromsakakinokiaxn--vler-qoaxn--vre-eiker-k\" +\n\t\"8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bihorologyonaguniversityo\" +\n\t\"riikaratsuginamikatagamilitaryoshiokaracoldwarmiastagexn--w4r85e\" +\n\t\"l8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1collectionxn--wgbl6axn-\" +\n\t\"-xhq521bikedagestangeorgeorgiaxaustraliaisondriobranconagawalesu\" +\n\t\"ndds3-ca-central-1xn--xkc2al3hye2axn--xkc2dl3a5ee0hangglidingxn-\" +\n\t\"-y9a3aquariumishimasudaxn--yer-znaturbruksgymnxn--yfro4i67oxn--y\" +\n\t\"garden-p1axn--ygbi2ammxn--3hcrj9circleverappspotagerxn--ystre-sl\" +\n\t\"idre-ujbilbaogashimadachicagoboats3-website-sa-east-1xn--zbx025d\" +\n\t\"xn--zf0ao64axn--zf0avxn--3oq18vl8pn36axn--zfr164billustrationino\" +\n\t\"hekinannestadivttasvuotnakaniikawatanaguraxnbayxz\"\n\n// nodes is the list of nodes. Each node is represented as a uint32, which\n// encodes the node's children, wildcard bit and node type (as an index into\n// the children array), ICANN bit and text.\n//\n// If the table was generated with the -comments flag, there is a //-comment\n// after each node's data. In it is the nodes-array indexes of the children,\n// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The\n// nodeType is printed as + for normal, ! for exception, and o for parent-only\n// nodes that have children but don't match a domain label in their own right.\n// An I denotes an ICANN domain.\n//\n// The layout within the uint32, from MSB to LSB, is:\n//\t[ 0 bits] unused\n//\t[10 bits] children index\n//\t[ 1 bits] ICANN bit\n//\t[15 bits] text index\n//\t[ 6 bits] text length\nvar nodes = [...]uint32{\n\t0x32bb03,\n\t0x35ab84,\n\t0x2ea546,\n\t0x2f5883,\n\t0x2f5886,\n\t0x38df86,\n\t0x3b0fc3,\n\t0x27d304,\n\t0x30e5c7,\n\t0x2ea188,\n\t0x1a000c2,\n\t0x1f3b587,\n\t0x379ac9,\n\t0x2bc2ca,\n\t0x2bc2cb,\n\t0x22ce83,\n\t0x2aaf06,\n\t0x2360c5,\n\t0x220a5c2,\n\t0x3d04c4,\n\t0x256c83,\n\t0x368605,\n\t0x2610c02,\n\t0x358f03,\n\t0x2b2c3c4,\n\t0x368e05,\n\t0x2e1ebc2,\n\t0x39610e,\n\t0x251343,\n\t0x3a9546,\n\t0x3200a82,\n\t0x2fb287,\n\t0x238a46,\n\t0x3601cc2,\n\t0x22f703,\n\t0x27fa44,\n\t0x222006,\n\t0x204248,\n\t0x27d006,\n\t0x312144,\n\t0x3a04542,\n\t0x345049,\n\t0x220947,\n\t0x3989c6,\n\t0x371889,\n\t0x2dff08,\n\t0x32da44,\n\t0x2cdf06,\n\t0x247c46,\n\t0x3e01702,\n\t0x3ac90f,\n\t0x22854e,\n\t0x226044,\n\t0x209cc5,\n\t0x32ba05,\n\t0x2f2249,\n\t0x23fbc9,\n\t0x222807,\n\t0x2755c6,\n\t0x275503,\n\t0x4227442,\n\t0x227443,\n\t0x33abca,\n\t0x4616583,\n\t0x35d585,\n\t0x329342,\n\t0x38fbc9,\n\t0x4a03902,\n\t0x203904,\n\t0x31a286,\n\t0x2c1705,\n\t0x36c284,\n\t0x5218bc4,\n\t0x203ac3,\n\t0x235104,\n\t0x5601b82,\n\t0x265fc4,\n\t0x5a73f44,\n\t0x30d64a,\n\t0x5e00882,\n\t0x2f1787,\n\t0x365588,\n\t0x6e07b82,\n\t0x274d07,\n\t0x22e484,\n\t0x2bf287,\n\t0x22e485,\n\t0x33f287,\n\t0x256006,\n\t0x28eac4,\n\t0x329b05,\n\t0x2903c7,\n\t0x7e0c8c2,\n\t0x366e43,\n\t0x20dec2,\n\t0x3cc743,\n\t0x820f642,\n\t0x282e85,\n\t0x8600202,\n\t0x2b9b44,\n\t0x279185,\n\t0x225f87,\n\t0x30cfce,\n\t0x23dec4,\n\t0x236904,\n\t0x206ec3,\n\t0x30f809,\n\t0x206ecb,\n\t0x326508,\n\t0x371648,\n\t0x255308,\n\t0x217f88,\n\t0x32d88a,\n\t0x33f187,\n\t0x2ab9c6,\n\t0x8a4b382,\n\t0x342b83,\n\t0x343cc3,\n\t0x3447c4,\n\t0x3b1003,\n\t0x342bc3,\n\t0x1736b02,\n\t0x8e03fc2,\n\t0x27ff05,\n\t0x2947c6,\n\t0x27cc04,\n\t0x35bd87,\n\t0x303cc6,\n\t0x30c4c4,\n\t0x385787,\n\t0x203fc3,\n\t0x92c8042,\n\t0x970e842,\n\t0x9a2bf02,\n\t0x22bf06,\n\t0x9e00282,\n\t0x2a3f45,\n\t0x338043,\n\t0x3cc1c4,\n\t0x2edb84,\n\t0x2edb85,\n\t0x201a03,\n\t0xa373a83,\n\t0xa605fc2,\n\t0x208145,\n\t0x20814b,\n\t0x209206,\n\t0x35cc0b,\n\t0x26dec4,\n\t0x20af89,\n\t0x20bc84,\n\t0xaa0bec2,\n\t0x20c703,\n\t0x20c983,\n\t0xae0d1c2,\n\t0x3ba0c3,\n\t0x20d1ca,\n\t0xb20d9c2,\n\t0x3d0745,\n\t0x2ddaca,\n\t0x3a0544,\n\t0x20d9c3,\n\t0x20e704,\n\t0x210103,\n\t0x210104,\n\t0x210107,\n\t0x210ac5,\n\t0x211b06,\n\t0x212346,\n\t0x213103,\n\t0x215f08,\n\t0x21cd03,\n\t0xb6068c2,\n\t0x246688,\n\t0x3c5f0b,\n\t0x21c008,\n\t0x21c606,\n\t0x21d687,\n\t0x224c48,\n\t0xc60abc2,\n\t0xcabf442,\n\t0x31bec8,\n\t0x305e47,\n\t0x208945,\n\t0x208948,\n\t0x2dc148,\n\t0x2d2a83,\n\t0x22b404,\n\t0x344802,\n\t0xce2c1c2,\n\t0xd211502,\n\t0xda2c302,\n\t0x22c303,\n\t0xde00dc2,\n\t0x27d2c3,\n\t0x3c4404,\n\t0x209483,\n\t0x367204,\n\t0x30eccb,\n\t0x235843,\n\t0x2e7046,\n\t0x235844,\n\t0x352e0e,\n\t0x34b9c5,\n\t0x2653c8,\n\t0x3a9647,\n\t0x3a964a,\n\t0x207083,\n\t0x35a987,\n\t0x207085,\n\t0x231c04,\n\t0x2d0c06,\n\t0x2d0c07,\n\t0x2fab84,\n\t0x2ef8c7,\n\t0x305884,\n\t0x2752c4,\n\t0x30d306,\n\t0x259ec4,\n\t0x3946c6,\n\t0x200dc3,\n\t0x208708,\n\t0x20dcc8,\n\t0x2368c3,\n\t0x3ba083,\n\t0x3b21c4,\n\t0x3b6803,\n\t0xe200bc2,\n\t0xe68be42,\n\t0x205883,\n\t0x203b86,\n\t0x2043c3,\n\t0x237f44,\n\t0xeb3fa82,\n\t0x355ac3,\n\t0x33fa83,\n\t0x213842,\n\t0xee01242,\n\t0x2c1ec6,\n\t0x237047,\n\t0x2f1e07,\n\t0x39b1c5,\n\t0x216184,\n\t0x28e705,\n\t0x273b07,\n\t0x2e81c9,\n\t0x2ec1c6,\n\t0x2fc4c8,\n\t0x3033c6,\n\t0xf20f382,\n\t0x335648,\n\t0x3cf806,\n\t0x389c85,\n\t0x3252c7,\n\t0x326144,\n\t0x326145,\n\t0x368244,\n\t0x368248,\n\t0xf608202,\n\t0xfa00482,\n\t0x347c46,\n\t0x200488,\n\t0x355e45,\n\t0x359bc6,\n\t0x380088,\n\t0x390d08,\n\t0xfe07f85,\n\t0x1026e144,\n\t0x38d147,\n\t0x1060b702,\n\t0x10b42c02,\n\t0x11e09302,\n\t0x31a385,\n\t0x286085,\n\t0x35d186,\n\t0x2ba987,\n\t0x22cec7,\n\t0x12609303,\n\t0x29de87,\n\t0x2e9f48,\n\t0x1ba2e889,\n\t0x3962c7,\n\t0x22fd47,\n\t0x2307c8,\n\t0x230fc6,\n\t0x231706,\n\t0x23234c,\n\t0x23378a,\n\t0x234107,\n\t0x235f8b,\n\t0x236e87,\n\t0x236e8e,\n\t0x1be37e04,\n\t0x238084,\n\t0x239547,\n\t0x260147,\n\t0x23e7c6,\n\t0x23e7c7,\n\t0x23ef87,\n\t0x1c22c842,\n\t0x23ff86,\n\t0x23ff8a,\n\t0x24080b,\n\t0x241f87,\n\t0x242a05,\n\t0x2439c3,\n\t0x243c06,\n\t0x243c07,\n\t0x271d83,\n\t0x1c600102,\n\t0x24448a,\n\t0x1cb7b002,\n\t0x1ce48b42,\n\t0x1d246382,\n\t0x1d638b42,\n\t0x248045,\n\t0x248804,\n\t0x1de17382,\n\t0x266045,\n\t0x240e03,\n\t0x20bd85,\n\t0x217e84,\n\t0x21b6c4,\n\t0x313046,\n\t0x26d486,\n\t0x208343,\n\t0x3b61c4,\n\t0x3cd043,\n\t0x1ee069c2,\n\t0x21da04,\n\t0x38d6c6,\n\t0x21da05,\n\t0x2cee86,\n\t0x3253c8,\n\t0x26d884,\n\t0x22d348,\n\t0x3a6745,\n\t0x323488,\n\t0x2b2c46,\n\t0x239087,\n\t0x28f304,\n\t0x28f306,\n\t0x29e183,\n\t0x3a1503,\n\t0x321188,\n\t0x32e984,\n\t0x35b407,\n\t0x2022d106,\n\t0x2dad09,\n\t0x3315c8,\n\t0x33fb08,\n\t0x34dc04,\n\t0x2029c3,\n\t0x23a182,\n\t0x20616502,\n\t0x20a12e42,\n\t0x204703,\n\t0x20e15c02,\n\t0x30e704,\n\t0x23c5c6,\n\t0x366f45,\n\t0x2a05c3,\n\t0x232804,\n\t0x2b1fc7,\n\t0x375183,\n\t0x23cdc8,\n\t0x21ef85,\n\t0x25d7c3,\n\t0x279105,\n\t0x279244,\n\t0x3030c6,\n\t0x222a44,\n\t0x223fc6,\n\t0x225ec6,\n\t0x2ba084,\n\t0x237243,\n\t0x21202dc2,\n\t0x236705,\n\t0x200843,\n\t0x21601802,\n\t0x232303,\n\t0x217905,\n\t0x2351c3,\n\t0x2351c9,\n\t0x21a00942,\n\t0x2221e5c2,\n\t0x28b745,\n\t0x214bc6,\n\t0x2031c6,\n\t0x320048,\n\t0x32004b,\n\t0x203bcb,\n\t0x220045,\n\t0x39b3c5,\n\t0x2c8789,\n\t0x1600c42,\n\t0x2ceb08,\n\t0x2090c4,\n\t0x22a012c2,\n\t0x207643,\n\t0x23260306,\n\t0x23e308,\n\t0x23604002,\n\t0x221688,\n\t0x23a07242,\n\t0x2b870a,\n\t0x23ecfe83,\n\t0x34e2c6,\n\t0x35c448,\n\t0x3143c8,\n\t0x2c4cc6,\n\t0x388c47,\n\t0x3acb07,\n\t0x2477ca,\n\t0x3a05c4,\n\t0x358c84,\n\t0x379649,\n\t0x247ac305,\n\t0x228746,\n\t0x21fb83,\n\t0x24fc84,\n\t0x24a23dc4,\n\t0x30f447,\n\t0x23a887,\n\t0x2b7844,\n\t0x28c1c5,\n\t0x35d248,\n\t0x248e47,\n\t0x2492c7,\n\t0x24e00d42,\n\t0x31c504,\n\t0x291648,\n\t0x24a9c4,\n\t0x24ce84,\n\t0x24dd05,\n\t0x24de47,\n\t0x22ee09,\n\t0x24eb04,\n\t0x24f309,\n\t0x24f548,\n\t0x24fa04,\n\t0x24fa07,\n\t0x25250043,\n\t0x2501c7,\n\t0x161f242,\n\t0x16ae502,\n\t0x250d46,\n\t0x251387,\n\t0x251784,\n\t0x252807,\n\t0x2542c7,\n\t0x254c43,\n\t0x23a302,\n\t0x204302,\n\t0x271243,\n\t0x271244,\n\t0x27124b,\n\t0x371748,\n\t0x25c484,\n\t0x258845,\n\t0x2592c7,\n\t0x25ab45,\n\t0x2d144a,\n\t0x25c3c3,\n\t0x25608282,\n\t0x21cc04,\n\t0x25ff09,\n\t0x264303,\n\t0x2643c7,\n\t0x28cbc9,\n\t0x2175c8,\n\t0x240643,\n\t0x27e207,\n\t0x27e889,\n\t0x26bf83,\n\t0x286604,\n\t0x2874c9,\n\t0x289a06,\n\t0x226283,\n\t0x202242,\n\t0x25dd03,\n\t0x3c79c7,\n\t0x2dc4c5,\n\t0x34ae46,\n\t0x2aa444,\n\t0x2f3b45,\n\t0x21a383,\n\t0x213346,\n\t0x20b182,\n\t0x3ada04,\n\t0x25a20f02,\n\t0x25e6df83,\n\t0x26202c02,\n\t0x24cd83,\n\t0x2127c4,\n\t0x2127c7,\n\t0x3cc4c6,\n\t0x2795c2,\n\t0x2665a082,\n\t0x3255c4,\n\t0x26a2c982,\n\t0x26e00ac2,\n\t0x2b00c4,\n\t0x2b00c5,\n\t0x36a785,\n\t0x361e86,\n\t0x2720a542,\n\t0x20a545,\n\t0x20cb85,\n\t0x20d583,\n\t0x212946,\n\t0x218ec5,\n\t0x22be82,\n\t0x354385,\n\t0x22be84,\n\t0x26d7c3,\n\t0x26da03,\n\t0x27607902,\n\t0x2d8307,\n\t0x39da84,\n\t0x39da89,\n\t0x24fb84,\n\t0x285f03,\n\t0x362448,\n\t0x27a85f04,\n\t0x285f06,\n\t0x2a3bc3,\n\t0x211f83,\n\t0x22b883,\n\t0x27ef9d82,\n\t0x2fdfc2,\n\t0x28200642,\n\t0x339c48,\n\t0x275c88,\n\t0x3b1606,\n\t0x24dbc5,\n\t0x3bcdc5,\n\t0x376587,\n\t0x2677c5,\n\t0x2049c2,\n\t0x28695b82,\n\t0x28a00042,\n\t0x2cd708,\n\t0x335585,\n\t0x2f2e84,\n\t0x24b605,\n\t0x24a387,\n\t0x25cb44,\n\t0x244382,\n\t0x28e032c2,\n\t0x349204,\n\t0x2270c7,\n\t0x28c707,\n\t0x33f244,\n\t0x293e43,\n\t0x236804,\n\t0x236808,\n\t0x231a46,\n\t0x2d0a8a,\n\t0x22ecc4,\n\t0x294348,\n\t0x289e44,\n\t0x21d786,\n\t0x295b44,\n\t0x31a686,\n\t0x39dd49,\n\t0x26ccc7,\n\t0x3263c3,\n\t0x29272302,\n\t0x2f7403,\n\t0x208b82,\n\t0x2966bc02,\n\t0x31dec6,\n\t0x383348,\n\t0x2a5087,\n\t0x3002c9,\n\t0x2937c9,\n\t0x2a6b05,\n\t0x2a7e09,\n\t0x2a85c5,\n\t0x2a8709,\n\t0x2a9a45,\n\t0x2aa708,\n\t0x29a0a244,\n\t0x29e54d87,\n\t0x230103,\n\t0x2aa907,\n\t0x230106,\n\t0x2ac007,\n\t0x2a2f05,\n\t0x2f0803,\n\t0x2a233542,\n\t0x20dc04,\n\t0x2a62c9c2,\n\t0x2aa55282,\n\t0x2f5b86,\n\t0x365505,\n\t0x2ae187,\n\t0x2569c3,\n\t0x33ca84,\n\t0x20e143,\n\t0x31bc03,\n\t0x2ae06982,\n\t0x2b607602,\n\t0x38e084,\n\t0x23a2c3,\n\t0x246ec5,\n\t0x2ba07502,\n\t0x2c203502,\n\t0x302b46,\n\t0x32eac4,\n\t0x322f04,\n\t0x322f0a,\n\t0x2ca005c2,\n\t0x269e83,\n\t0x2099ca,\n\t0x20f708,\n\t0x2ce1e084,\n\t0x2005c3,\n\t0x2065c3,\n\t0x255449,\n\t0x20e4c9,\n\t0x2a7746,\n\t0x2d20f8c3,\n\t0x219205,\n\t0x3301cd,\n\t0x20f8c6,\n\t0x21690b,\n\t0x2d600e82,\n\t0x21a208,\n\t0x2fe16002,\n\t0x30203a02,\n\t0x330805,\n\t0x30600b02,\n\t0x38f447,\n\t0x2e4607,\n\t0x201083,\n\t0x374288,\n\t0x30a02382,\n\t0x2a9504,\n\t0x294043,\n\t0x30a585,\n\t0x240f06,\n\t0x229684,\n\t0x3ba043,\n\t0x2aeb83,\n\t0x30e06682,\n\t0x39b344,\n\t0x3b8145,\n\t0x3bd507,\n\t0x27c0c3,\n\t0x2ae783,\n\t0x16ae842,\n\t0x2ae843,\n\t0x2aeb03,\n\t0x312027c2,\n\t0x319584,\n\t0x26d686,\n\t0x3a5fc3,\n\t0x2af743,\n\t0x316b0442,\n\t0x2b0448,\n\t0x2b1004,\n\t0x319b46,\n\t0x25f507,\n\t0x363a86,\n\t0x2ccec4,\n\t0x3f204a82,\n\t0x22ffcb,\n\t0x2f7cce,\n\t0x21574f,\n\t0x2e01c3,\n\t0x3fa5dcc2,\n\t0x1642582,\n\t0x3fe02342,\n\t0x290ec3,\n\t0x203ec3,\n\t0x2e8446,\n\t0x335b86,\n\t0x202347,\n\t0x302144,\n\t0x40214d02,\n\t0x4061f482,\n\t0x36f685,\n\t0x2ef247,\n\t0x397c86,\n\t0x40a0a482,\n\t0x20a484,\n\t0x2b5503,\n\t0x40e06d82,\n\t0x41370883,\n\t0x2b5d04,\n\t0x2be749,\n\t0x416c3c82,\n\t0x41a0eec2,\n\t0x3326c5,\n\t0x41ec4182,\n\t0x42202902,\n\t0x358007,\n\t0x210549,\n\t0x379d4b,\n\t0x3ac8c5,\n\t0x26ae09,\n\t0x392786,\n\t0x209247,\n\t0x42602904,\n\t0x2115c9,\n\t0x343147,\n\t0x211287,\n\t0x2217c3,\n\t0x2aff46,\n\t0x31ccc7,\n\t0x2450c3,\n\t0x286486,\n\t0x42e0d482,\n\t0x43235442,\n\t0x34b803,\n\t0x33c685,\n\t0x2017c7,\n\t0x21ba06,\n\t0x2dc445,\n\t0x35d644,\n\t0x288ac5,\n\t0x2fd9c4,\n\t0x43604582,\n\t0x3cc947,\n\t0x2c2c84,\n\t0x20e3c4,\n\t0x20e3cd,\n\t0x2d4ec9,\n\t0x22c908,\n\t0x256ec4,\n\t0x366385,\n\t0x204587,\n\t0x208f04,\n\t0x303d87,\n\t0x20ec45,\n\t0x43a0fc84,\n\t0x2e4c85,\n\t0x262fc4,\n\t0x284246,\n\t0x2ba785,\n\t0x43e0a442,\n\t0x3a36c3,\n\t0x2dc584,\n\t0x2dc585,\n\t0x344d46,\n\t0x239885,\n\t0x26eb04,\n\t0x259943,\n\t0x215b46,\n\t0x2febc5,\n\t0x304705,\n\t0x2ba884,\n\t0x22ed43,\n\t0x22ed4c,\n\t0x4434f5c2,\n\t0x4460a802,\n\t0x44a05142,\n\t0x216c03,\n\t0x216c04,\n\t0x44e0bcc2,\n\t0x307fc8,\n\t0x34af05,\n\t0x243344,\n\t0x24a1c6,\n\t0x45210e42,\n\t0x45627bc2,\n\t0x45a01e02,\n\t0x2b4dc5,\n\t0x2b9f46,\n\t0x226dc4,\n\t0x222546,\n\t0x2f1546,\n\t0x201e03,\n\t0x45f45b8a,\n\t0x26b185,\n\t0x33ab83,\n\t0x21ed06,\n\t0x390809,\n\t0x21ed07,\n\t0x29e608,\n\t0x2dfdc9,\n\t0x364a48,\n\t0x313946,\n\t0x206e83,\n\t0x4629df02,\n\t0x3a2b88,\n\t0x4664f602,\n\t0x46a09382,\n\t0x209383,\n\t0x2e1305,\n\t0x26bb04,\n\t0x249c49,\n\t0x2f0dc4,\n\t0x20fac8,\n\t0x20c103,\n\t0x4730f144,\n\t0x214c08,\n\t0x20e307,\n\t0x4760a502,\n\t0x23c182,\n\t0x32b985,\n\t0x2497c9,\n\t0x2287c3,\n\t0x280c04,\n\t0x330184,\n\t0x204603,\n\t0x281d4a,\n\t0x47b0b282,\n\t0x47e0da42,\n\t0x2c7fc3,\n\t0x392a03,\n\t0x162e902,\n\t0x3a9303,\n\t0x48225282,\n\t0x48603542,\n\t0x48a29d44,\n\t0x344306,\n\t0x302d86,\n\t0x241704,\n\t0x27a103,\n\t0x203543,\n\t0x2f8343,\n\t0x240b86,\n\t0x256345,\n\t0x2c8147,\n\t0x2cb445,\n\t0x2ce6c6,\n\t0x2cf348,\n\t0x2cf546,\n\t0x282384,\n\t0x29a4cb,\n\t0x2d2f43,\n\t0x2d2f45,\n\t0x2d33c8,\n\t0x227682,\n\t0x358302,\n\t0x48e480c2,\n\t0x49204842,\n\t0x214d43,\n\t0x4966ca42,\n\t0x26ca43,\n\t0x2d3d83,\n\t0x49e01ac2,\n\t0x4a2d7d46,\n\t0x25a9c6,\n\t0x4a6d7e82,\n\t0x4aa0c9c2,\n\t0x4ae6da42,\n\t0x4b207e02,\n\t0x4b61e302,\n\t0x4ba00a42,\n\t0x20f003,\n\t0x38da45,\n\t0x366506,\n\t0x4be26004,\n\t0x38d4ca,\n\t0x3aab06,\n\t0x2e6944,\n\t0x29a843,\n\t0x4ca05f02,\n\t0x203202,\n\t0x238003,\n\t0x4ce15c83,\n\t0x307907,\n\t0x2ba687,\n\t0x4e671347,\n\t0x3c6147,\n\t0x22a083,\n\t0x34b28a,\n\t0x2655c4,\n\t0x22d004,\n\t0x22d00a,\n\t0x23ad05,\n\t0x4ea0f742,\n\t0x250d03,\n\t0x4ee00602,\n\t0x24fb43,\n\t0x2f73c3,\n\t0x4f600582,\n\t0x29de04,\n\t0x219d84,\n\t0x3c46c5,\n\t0x3129c5,\n\t0x3287c6,\n\t0x332e86,\n\t0x4fa3ce82,\n\t0x4fe01e82,\n\t0x3c8805,\n\t0x25a6d2,\n\t0x349d06,\n\t0x289d83,\n\t0x2ac846,\n\t0x308285,\n\t0x1604742,\n\t0x5820d742,\n\t0x36b3c3,\n\t0x20d743,\n\t0x273903,\n\t0x5860b302,\n\t0x241f03,\n\t0x58a1b382,\n\t0x229d83,\n\t0x3195c8,\n\t0x2a6983,\n\t0x2a6986,\n\t0x336107,\n\t0x317846,\n\t0x31784b,\n\t0x2e6887,\n\t0x2fbd44,\n\t0x59201a82,\n\t0x34ad85,\n\t0x59615c43,\n\t0x22e043,\n\t0x2b8905,\n\t0x34b183,\n\t0x59b4b186,\n\t0x2cec8a,\n\t0x241383,\n\t0x221f04,\n\t0x2003c6,\n\t0x38a086,\n\t0x59e4b583,\n\t0x33c947,\n\t0x2a7647,\n\t0x29c405,\n\t0x345e86,\n\t0x29e743,\n\t0x5ca12b83,\n\t0x5ce04782,\n\t0x229b04,\n\t0x22b509,\n\t0x35ac45,\n\t0x22d8c4,\n\t0x381808,\n\t0x243605,\n\t0x5d243ac5,\n\t0x25b489,\n\t0x398a83,\n\t0x248ac4,\n\t0x5d602882,\n\t0x214f43,\n\t0x5da95602,\n\t0x2a0206,\n\t0x16256c2,\n\t0x5de07d02,\n\t0x2b4cc8,\n\t0x324b83,\n\t0x2e4bc7,\n\t0x317ac5,\n\t0x2b4885,\n\t0x2be94b,\n\t0x2e52c6,\n\t0x2beb46,\n\t0x2e64c6,\n\t0x33af44,\n\t0x2d5886,\n\t0x5e2e2c08,\n\t0x235903,\n\t0x271603,\n\t0x271604,\n\t0x314984,\n\t0x316dc7,\n\t0x2e96c5,\n\t0x5e6e9802,\n\t0x5ea057c2,\n\t0x2057c5,\n\t0x2ebd44,\n\t0x2ebd4b,\n\t0x2eda88,\n\t0x257d84,\n\t0x5f20a4c2,\n\t0x5f657d02,\n\t0x2b0683,\n\t0x2eec84,\n\t0x2eef45,\n\t0x2efa87,\n\t0x2f29c4,\n\t0x220084,\n\t0x5fa03d02,\n\t0x37db89,\n\t0x2f4005,\n\t0x3acb85,\n\t0x2f4b85,\n\t0x5fe14e83,\n\t0x2f68c4,\n\t0x2f68cb,\n\t0x2f7584,\n\t0x2f784b,\n\t0x2f8285,\n\t0x21588a,\n\t0x2f8a48,\n\t0x2f8c4a,\n\t0x2f9203,\n\t0x2f920a,\n\t0x6064b4c2,\n\t0x60a44042,\n\t0x60e82583,\n\t0x612fc442,\n\t0x2fc443,\n\t0x6177f302,\n\t0x61b387c2,\n\t0x2fc804,\n\t0x216046,\n\t0x222285,\n\t0x2fe403,\n\t0x32c0c6,\n\t0x221d85,\n\t0x2e1984,\n\t0x61e00902,\n\t0x2aef44,\n\t0x2c840a,\n\t0x2ee807,\n\t0x365346,\n\t0x35a7c7,\n\t0x23ffc3,\n\t0x2b5d48,\n\t0x3ac54b,\n\t0x2bed45,\n\t0x335285,\n\t0x335286,\n\t0x2e8744,\n\t0x205dc8,\n\t0x232203,\n\t0x247b44,\n\t0x247b47,\n\t0x2fb986,\n\t0x3691c6,\n\t0x352c4a,\n\t0x2292c4,\n\t0x2292ca,\n\t0x62373586,\n\t0x373587,\n\t0x2588c7,\n\t0x276644,\n\t0x276649,\n\t0x26d345,\n\t0x22d58b,\n\t0x2eb483,\n\t0x224183,\n\t0x6261a1c3,\n\t0x231e04,\n\t0x62a00682,\n\t0x2ed586,\n\t0x62f21b45,\n\t0x2aca85,\n\t0x253186,\n\t0x29f044,\n\t0x63208ac2,\n\t0x243a04,\n\t0x63606702,\n\t0x38a845,\n\t0x336904,\n\t0x64224583,\n\t0x6460d782,\n\t0x20d783,\n\t0x2669c6,\n\t0x64a022c2,\n\t0x225d08,\n\t0x21eb84,\n\t0x21eb86,\n\t0x393286,\n\t0x206784,\n\t0x215ac5,\n\t0x26e048,\n\t0x2e1d87,\n\t0x347d87,\n\t0x347d8f,\n\t0x291546,\n\t0x23fdc3,\n\t0x24a104,\n\t0x20cc83,\n\t0x21d8c4,\n\t0x2591c4,\n\t0x64e0dc42,\n\t0x28bb43,\n\t0x25b683,\n\t0x65201202,\n\t0x22f903,\n\t0x30e7c3,\n\t0x210b4a,\n\t0x208b07,\n\t0x25bd4c,\n\t0x25c006,\n\t0x25d886,\n\t0x25f207,\n\t0x65630c07,\n\t0x26c6c9,\n\t0x2467c4,\n\t0x271dc4,\n\t0x65a14d82,\n\t0x65e03182,\n\t0x353006,\n\t0x33c744,\n\t0x28bfc6,\n\t0x231088,\n\t0x23e144,\n\t0x38f486,\n\t0x203185,\n\t0x2939c8,\n\t0x203dc3,\n\t0x294fc5,\n\t0x29a743,\n\t0x3acc83,\n\t0x3acc84,\n\t0x21cbc3,\n\t0x6625dbc2,\n\t0x66601bc2,\n\t0x2eb349,\n\t0x2a3045,\n\t0x2a5604,\n\t0x2a60c5,\n\t0x20f584,\n\t0x2c5987,\n\t0x3899c5,\n\t0x66a71504,\n\t0x271508,\n\t0x2eb5c6,\n\t0x2f07c4,\n\t0x2f0c48,\n\t0x2f2107,\n\t0x66e0ac02,\n\t0x2f6b44,\n\t0x20cd44,\n\t0x2b8287,\n\t0x6720ac04,\n\t0x2d0182,\n\t0x6760eb02,\n\t0x21ae83,\n\t0x2dd204,\n\t0x2a1503,\n\t0x2a1505,\n\t0x67a28f82,\n\t0x2fe2c5,\n\t0x265ac2,\n\t0x3a0905,\n\t0x2b8105,\n\t0x67e0ed82,\n\t0x33fa04,\n\t0x68200b42,\n\t0x200b46,\n\t0x324806,\n\t0x249908,\n\t0x2bfc88,\n\t0x2f5b04,\n\t0x305345,\n\t0x3432c9,\n\t0x39b444,\n\t0x2cec44,\n\t0x213043,\n\t0x68647905,\n\t0x383507,\n\t0x24e805,\n\t0x286184,\n\t0x3a6b8d,\n\t0x2e03c2,\n\t0x2e03c3,\n\t0x3af183,\n\t0x68a010c2,\n\t0x3a5905,\n\t0x2298c7,\n\t0x2b7084,\n\t0x3c6207,\n\t0x2dffc9,\n\t0x2c8549,\n\t0x2783c7,\n\t0x28e203,\n\t0x3249c8,\n\t0x26a389,\n\t0x3b6887,\n\t0x3c1245,\n\t0x2ff806,\n\t0x2ffe06,\n\t0x2fff85,\n\t0x2d4fc5,\n\t0x68e04082,\n\t0x27a905,\n\t0x2b2f08,\n\t0x2c1c86,\n\t0x6936a147,\n\t0x2b7784,\n\t0x2b23c7,\n\t0x3022c6,\n\t0x69643a42,\n\t0x344a46,\n\t0x306c4a,\n\t0x3074c5,\n\t0x69ae6b02,\n\t0x69e8c8c2,\n\t0x31d006,\n\t0x2b3d48,\n\t0x6a28c8c7,\n\t0x6a617302,\n\t0x217f03,\n\t0x209746,\n\t0x224944,\n\t0x3c0c06,\n\t0x36a486,\n\t0x3694ca,\n\t0x30bec5,\n\t0x2759c6,\n\t0x2f7203,\n\t0x2f7204,\n\t0x2023c2,\n\t0x32ea43,\n\t0x6aa16c42,\n\t0x2f96c3,\n\t0x209c44,\n\t0x2b3e84,\n\t0x2b3e8a,\n\t0x2189c3,\n\t0x27d0ca,\n\t0x280ec7,\n\t0x310ac6,\n\t0x256bc4,\n\t0x2926c2,\n\t0x2a42c2,\n\t0x6ae007c2,\n\t0x2367c3,\n\t0x258687,\n\t0x2007c7,\n\t0x288544,\n\t0x3af007,\n\t0x2efb86,\n\t0x22c007,\n\t0x305f84,\n\t0x3a6a85,\n\t0x217145,\n\t0x6b20fa02,\n\t0x343d46,\n\t0x21c3c3,\n\t0x229502,\n\t0x229506,\n\t0x6b60e382,\n\t0x6ba16a42,\n\t0x3c4245,\n\t0x6be17442,\n\t0x6c201102,\n\t0x32ec05,\n\t0x2c9fc5,\n\t0x2a5cc5,\n\t0x6c65e083,\n\t0x23c685,\n\t0x2e5387,\n\t0x31e605,\n\t0x34d085,\n\t0x2654c4,\n\t0x2ed386,\n\t0x3ad084,\n\t0x6ca008c2,\n\t0x6d784ec5,\n\t0x2a4687,\n\t0x366048,\n\t0x250586,\n\t0x25058d,\n\t0x2547c9,\n\t0x2547d2,\n\t0x3013c5,\n\t0x30a103,\n\t0x6da09702,\n\t0x31f384,\n\t0x20f943,\n\t0x345445,\n\t0x308ac5,\n\t0x6de2c682,\n\t0x25d803,\n\t0x6e25a482,\n\t0x6eabf5c2,\n\t0x6ee00082,\n\t0x2e3c85,\n\t0x3c6343,\n\t0x24e548,\n\t0x6f202202,\n\t0x6f602a82,\n\t0x29ddc6,\n\t0x3c9d4a,\n\t0x20f183,\n\t0x239803,\n\t0x343543,\n\t0x70602fc2,\n\t0x7ea13d82,\n\t0x7f20c842,\n\t0x204fc2,\n\t0x344849,\n\t0x2c30c4,\n\t0x2a9d48,\n\t0x7f6fe442,\n\t0x7fa08602,\n\t0x2ab005,\n\t0x2363c8,\n\t0x320648,\n\t0x34f04c,\n\t0x239b03,\n\t0x7fe62982,\n\t0x80205cc2,\n\t0x282706,\n\t0x311945,\n\t0x2559c3,\n\t0x27bec6,\n\t0x311a86,\n\t0x2842c3,\n\t0x313403,\n\t0x313e46,\n\t0x315404,\n\t0x255706,\n\t0x21904a,\n\t0x38e904,\n\t0x315ac4,\n\t0x31620a,\n\t0x8065c302,\n\t0x38ea85,\n\t0x316f8a,\n\t0x317fc5,\n\t0x318884,\n\t0x318986,\n\t0x318b04,\n\t0x215206,\n\t0x80a2c6c2,\n\t0x2f5506,\n\t0x3cce85,\n\t0x30ad07,\n\t0x3a9e46,\n\t0x25f404,\n\t0x2da787,\n\t0x345ac6,\n\t0x23b485,\n\t0x23b487,\n\t0x3b7ac7,\n\t0x3b7ace,\n\t0x27b7c6,\n\t0x303c45,\n\t0x20ab47,\n\t0x20ca03,\n\t0x20ca07,\n\t0x222f45,\n\t0x22c204,\n\t0x23a842,\n\t0x2451c7,\n\t0x3021c4,\n\t0x245684,\n\t0x28720b,\n\t0x219683,\n\t0x2cf687,\n\t0x219684,\n\t0x2f0647,\n\t0x2930c3,\n\t0x3470cd,\n\t0x3a65c8,\n\t0x245fc4,\n\t0x271405,\n\t0x31d605,\n\t0x31da43,\n\t0x80e1ea82,\n\t0x31f983,\n\t0x320303,\n\t0x343ec4,\n\t0x27e985,\n\t0x21c447,\n\t0x2f7286,\n\t0x390643,\n\t0x26da8b,\n\t0x27494b,\n\t0x30880b,\n\t0x2d268b,\n\t0x2e6b4a,\n\t0x32ff0b,\n\t0x36db4b,\n\t0x39770c,\n\t0x3cf58b,\n\t0x3d1551,\n\t0x320c4a,\n\t0x321f4b,\n\t0x32220c,\n\t0x32250b,\n\t0x322a4a,\n\t0x323cca,\n\t0x324f8e,\n\t0x3256cb,\n\t0x32598a,\n\t0x327011,\n\t0x32744a,\n\t0x32794b,\n\t0x327e8e,\n\t0x328a8c,\n\t0x328f0b,\n\t0x3291ce,\n\t0x32954c,\n\t0x32a04a,\n\t0x32b34c,\n\t0x8132b64a,\n\t0x32c248,\n\t0x32ce09,\n\t0x32efca,\n\t0x32f24a,\n\t0x32f4cb,\n\t0x333a0e,\n\t0x334911,\n\t0x33e289,\n\t0x33e4ca,\n\t0x33ef0b,\n\t0x340d4a,\n\t0x341596,\n\t0x34290b,\n\t0x342e8a,\n\t0x3437ca,\n\t0x34454b,\n\t0x344ec9,\n\t0x347a49,\n\t0x34864d,\n\t0x348f8b,\n\t0x349e8b,\n\t0x34a84b,\n\t0x34bf09,\n\t0x34c54e,\n\t0x34d24a,\n\t0x34e70a,\n\t0x34eb4a,\n\t0x34f68b,\n\t0x34fecb,\n\t0x350b4d,\n\t0x3538cd,\n\t0x354010,\n\t0x3544cb,\n\t0x354fcc,\n\t0x355bcb,\n\t0x357b0b,\n\t0x35914e,\n\t0x3598cb,\n\t0x3598cd,\n\t0x36098b,\n\t0x36140f,\n\t0x3617cb,\n\t0x36200a,\n\t0x362649,\n\t0x362e49,\n\t0x81763c0b,\n\t0x363ece,\n\t0x36b88b,\n\t0x36c70f,\n\t0x36e68b,\n\t0x36e94b,\n\t0x36ec0b,\n\t0x36f7ca,\n\t0x379949,\n\t0x37c84f,\n\t0x38140c,\n\t0x381fcc,\n\t0x38258e,\n\t0x382a8f,\n\t0x382e4e,\n\t0x3836d0,\n\t0x383acf,\n\t0x38448e,\n\t0x38504c,\n\t0x385352,\n\t0x386111,\n\t0x38690e,\n\t0x386d8e,\n\t0x3872cb,\n\t0x3872ce,\n\t0x38764f,\n\t0x387a0e,\n\t0x387d93,\n\t0x388251,\n\t0x38868c,\n\t0x38898e,\n\t0x388e0c,\n\t0x389353,\n\t0x38b310,\n\t0x38c08c,\n\t0x38c38c,\n\t0x38c84b,\n\t0x38dc8e,\n\t0x38e18b,\n\t0x38f84b,\n\t0x390a4c,\n\t0x396b4a,\n\t0x396f0c,\n\t0x39720c,\n\t0x397509,\n\t0x398b4b,\n\t0x398e08,\n\t0x3995c9,\n\t0x3995cf,\n\t0x39ad4b,\n\t0x81b9bb4a,\n\t0x39e98c,\n\t0x39fb4b,\n\t0x39fe09,\n\t0x3a06c8,\n\t0x3a0e0b,\n\t0x3a12cb,\n\t0x3a1e4a,\n\t0x3a20cb,\n\t0x3a290c,\n\t0x3a32c8,\n\t0x3a6ecb,\n\t0x3a9a8b,\n\t0x3ab70e,\n\t0x3acd8b,\n\t0x3ae18b,\n\t0x3b764b,\n\t0x3b7909,\n\t0x3b7e4d,\n\t0x3c168a,\n\t0x3c3b97,\n\t0x3c4f18,\n\t0x3c8109,\n\t0x3c974b,\n\t0x3cad94,\n\t0x3cb28b,\n\t0x3cb80a,\n\t0x3cbcca,\n\t0x3cbf4b,\n\t0x3cd490,\n\t0x3cd891,\n\t0x3cdf4a,\n\t0x3ceb8d,\n\t0x3cf28d,\n\t0x3d198b,\n\t0x343e43,\n\t0x81f64543,\n\t0x2ec646,\n\t0x2412c5,\n\t0x27f187,\n\t0x32fdc6,\n\t0x16602c2,\n\t0x2d8e09,\n\t0x32bec4,\n\t0x2e2748,\n\t0x21a103,\n\t0x31f2c7,\n\t0x217402,\n\t0x2ae1c3,\n\t0x8220c882,\n\t0x2c9886,\n\t0x2cac84,\n\t0x229ec4,\n\t0x377843,\n\t0x377845,\n\t0x82ac41c2,\n\t0x82ea8a84,\n\t0x276587,\n\t0x8325ac82,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0xe9148,\n\t0x202543,\n\t0x2000c2,\n\t0xaf0c8,\n\t0x209302,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x201203,\n\t0x33bf96,\n\t0x35f453,\n\t0x3aee89,\n\t0x38d048,\n\t0x34ac09,\n\t0x317106,\n\t0x349250,\n\t0x2446d3,\n\t0x2fba48,\n\t0x373e07,\n\t0x27a207,\n\t0x28880a,\n\t0x3758c9,\n\t0x3a3449,\n\t0x28b00b,\n\t0x256006,\n\t0x2059ca,\n\t0x21c606,\n\t0x32bac3,\n\t0x2d8245,\n\t0x208708,\n\t0x200c0d,\n\t0x31a44c,\n\t0x3034c7,\n\t0x3284cd,\n\t0x26e144,\n\t0x2320ca,\n\t0x2332ca,\n\t0x23378a,\n\t0x2449c7,\n\t0x23d807,\n\t0x241884,\n\t0x28f306,\n\t0x34b944,\n\t0x302788,\n\t0x2f0e09,\n\t0x320046,\n\t0x320048,\n\t0x2f6f0d,\n\t0x2c8789,\n\t0x3143c8,\n\t0x3acb07,\n\t0x3c448a,\n\t0x251386,\n\t0x25fcc7,\n\t0x2e3284,\n\t0x22bc47,\n\t0x22b88a,\n\t0x241ace,\n\t0x2677c5,\n\t0x3cdc8b,\n\t0x309f09,\n\t0x20e4c9,\n\t0x206307,\n\t0x20630a,\n\t0x2b81c7,\n\t0x2f7e09,\n\t0x2c6b88,\n\t0x31a9cb,\n\t0x2e1305,\n\t0x22c7ca,\n\t0x26d809,\n\t0x36764a,\n\t0x2cb4cb,\n\t0x22bb4b,\n\t0x28ad95,\n\t0x2fa145,\n\t0x3acb85,\n\t0x2f68ca,\n\t0x2a784a,\n\t0x309c87,\n\t0x20f2c3,\n\t0x352f88,\n\t0x2d638a,\n\t0x21eb86,\n\t0x26a1c9,\n\t0x2939c8,\n\t0x2f07c4,\n\t0x389109,\n\t0x2bfc88,\n\t0x2b2b87,\n\t0x384ec6,\n\t0x2a4687,\n\t0x2add87,\n\t0x240985,\n\t0x26760c,\n\t0x271405,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x209302,\n\t0x209303,\n\t0x215c83,\n\t0x202543,\n\t0x24b583,\n\t0x209303,\n\t0x215c83,\n\t0x2543,\n\t0x2a6983,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209302,\n\t0x2046c2,\n\t0x2fbcc2,\n\t0x202382,\n\t0x212782,\n\t0x2c45c2,\n\t0x90146,\n\t0x4e09303,\n\t0x2351c3,\n\t0x210a43,\n\t0x22b883,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x2d8146,\n\t0x215c83,\n\t0x24b583,\n\t0x200f83,\n\t0xaf0c8,\n\t0x30f6c4,\n\t0x30ef07,\n\t0x378203,\n\t0x330804,\n\t0x206183,\n\t0x206383,\n\t0x22b883,\n\t0xe41c7,\n\t0x10de04,\n\t0x10cdc3,\n\t0x1680c5,\n\t0x2000c2,\n\t0x173a83,\n\t0x6209302,\n\t0x648a9c9,\n\t0x8b2cd,\n\t0x8b60d,\n\t0x2fbcc2,\n\t0x1e084,\n\t0x168109,\n\t0x2003c2,\n\t0x6a1df88,\n\t0xf6044,\n\t0xaf0c8,\n\t0x14260c2,\n\t0x14005c2,\n\t0x14260c2,\n\t0x1518206,\n\t0x2312c3,\n\t0x2b5b43,\n\t0x7209303,\n\t0x2320c4,\n\t0x76351c3,\n\t0x7a2b883,\n\t0x206982,\n\t0x21e084,\n\t0x215c83,\n\t0x305543,\n\t0x203c02,\n\t0x24b583,\n\t0x216f02,\n\t0x2fc743,\n\t0x2022c2,\n\t0x201b43,\n\t0x293a83,\n\t0x20c902,\n\t0xaf0c8,\n\t0x2312c3,\n\t0x305543,\n\t0x203c02,\n\t0x2fc743,\n\t0x2022c2,\n\t0x201b43,\n\t0x293a83,\n\t0x20c902,\n\t0x2fc743,\n\t0x2022c2,\n\t0x201b43,\n\t0x293a83,\n\t0x20c902,\n\t0x209303,\n\t0x373a83,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x204482,\n\t0x214e83,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x373a83,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x215c83,\n\t0x24b583,\n\t0x3c1245,\n\t0x22c682,\n\t0x2000c2,\n\t0xaf0c8,\n\t0x158e708,\n\t0x15f94a,\n\t0x22b883,\n\t0x22aa41,\n\t0x201601,\n\t0x20a081,\n\t0x201341,\n\t0x257ec1,\n\t0x20c7c1,\n\t0x201641,\n\t0x207801,\n\t0x320e41,\n\t0x200001,\n\t0x2000c1,\n\t0x200201,\n\t0xf6d85,\n\t0xaf0c8,\n\t0x200101,\n\t0x2029c1,\n\t0x200501,\n\t0x200d41,\n\t0x200041,\n\t0x200801,\n\t0x200181,\n\t0x2027c1,\n\t0x200701,\n\t0x2004c1,\n\t0x201741,\n\t0x200581,\n\t0x2003c1,\n\t0x201401,\n\t0x2076c1,\n\t0x200401,\n\t0x200741,\n\t0x2007c1,\n\t0x200081,\n\t0x204fc1,\n\t0x207301,\n\t0x20b6c1,\n\t0x201d81,\n\t0x202e01,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x2003c2,\n\t0x24b583,\n\t0xe41c7,\n\t0x288c7,\n\t0x3cf86,\n\t0x3b08a,\n\t0x89f88,\n\t0x580c8,\n\t0x58587,\n\t0x1b6e46,\n\t0xdf545,\n\t0x178145,\n\t0xea746,\n\t0x40386,\n\t0x28b004,\n\t0x274bc7,\n\t0xaf0c8,\n\t0x2da884,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x32b848,\n\t0x376544,\n\t0x235104,\n\t0x26dec4,\n\t0x282607,\n\t0x2d5447,\n\t0x209303,\n\t0x23808b,\n\t0x27d4ca,\n\t0x256a87,\n\t0x23ed88,\n\t0x30a608,\n\t0x2351c3,\n\t0x256587,\n\t0x210a43,\n\t0x202b08,\n\t0x205449,\n\t0x21e084,\n\t0x20f8c3,\n\t0x2ec2c8,\n\t0x2287c3,\n\t0x2d308a,\n\t0x2d8146,\n\t0x3aab07,\n\t0x215c83,\n\t0x20f1c6,\n\t0x318fc8,\n\t0x24b583,\n\t0x2ea886,\n\t0x2edccd,\n\t0x2ef748,\n\t0x2f758b,\n\t0x35cb46,\n\t0x3741c7,\n\t0x21ee85,\n\t0x376cca,\n\t0x22a805,\n\t0x24e70a,\n\t0x22c682,\n\t0x20ab43,\n\t0x245684,\n\t0x200006,\n\t0x3b0fc3,\n\t0x2aefc3,\n\t0x243003,\n\t0x2b7b03,\n\t0x376f03,\n\t0x201702,\n\t0x2d8845,\n\t0x2a6ec9,\n\t0x241003,\n\t0x203ac3,\n\t0x2146c3,\n\t0x200201,\n\t0x2cea07,\n\t0x2e39c5,\n\t0x394603,\n\t0x201a03,\n\t0x26dec4,\n\t0x256a03,\n\t0x218f88,\n\t0x362883,\n\t0x305b0d,\n\t0x27b888,\n\t0x20de86,\n\t0x32ea83,\n\t0x3a1083,\n\t0x3ad003,\n\t0xba09303,\n\t0x234a08,\n\t0x238084,\n\t0x241f83,\n\t0x200106,\n\t0x245b08,\n\t0x20a603,\n\t0x376d03,\n\t0x232303,\n\t0x2351c3,\n\t0x227643,\n\t0x25d0c3,\n\t0x229bc3,\n\t0x32ea03,\n\t0x221683,\n\t0x223dc3,\n\t0x38fac5,\n\t0x251884,\n\t0x252487,\n\t0x23a302,\n\t0x257b83,\n\t0x259a06,\n\t0x25c183,\n\t0x25d3c3,\n\t0x279603,\n\t0x36ad83,\n\t0x30f3c3,\n\t0x296407,\n\t0xbe2b883,\n\t0x246283,\n\t0x206e43,\n\t0x202b03,\n\t0x20f703,\n\t0x2f5843,\n\t0x364605,\n\t0x371403,\n\t0x24c689,\n\t0x2027c3,\n\t0x308dc3,\n\t0xc24cd03,\n\t0x2a4003,\n\t0x223788,\n\t0x2a6e06,\n\t0x3b74c6,\n\t0x29bfc6,\n\t0x38b9c7,\n\t0x214683,\n\t0x209383,\n\t0x2287c3,\n\t0x28a086,\n\t0x227682,\n\t0x2a0cc3,\n\t0x33a085,\n\t0x215c83,\n\t0x25e247,\n\t0x1602543,\n\t0x229183,\n\t0x236003,\n\t0x224443,\n\t0x22e043,\n\t0x24b583,\n\t0x21ce06,\n\t0x364986,\n\t0x37d103,\n\t0x225683,\n\t0x214e83,\n\t0x25bfc3,\n\t0x313483,\n\t0x2fb1c3,\n\t0x2fd943,\n\t0x221d85,\n\t0x22d183,\n\t0x28c0c6,\n\t0x335f48,\n\t0x224183,\n\t0x3ccb49,\n\t0x39d888,\n\t0x220708,\n\t0x229a45,\n\t0x23b60a,\n\t0x23beca,\n\t0x23cb8b,\n\t0x23e948,\n\t0x3ba003,\n\t0x2fd983,\n\t0x34d183,\n\t0x348bc8,\n\t0x3b0b83,\n\t0x2f7204,\n\t0x260403,\n\t0x2007c3,\n\t0x22bac3,\n\t0x25fe43,\n\t0x200f83,\n\t0x22c682,\n\t0x22a443,\n\t0x239b03,\n\t0x315c83,\n\t0x316c44,\n\t0x245684,\n\t0x218e43,\n\t0xaf0c8,\n\t0x2000c2,\n\t0x204542,\n\t0x201702,\n\t0x2013c2,\n\t0x200202,\n\t0x200c02,\n\t0x236842,\n\t0x2012c2,\n\t0x200382,\n\t0x201e02,\n\t0x20a502,\n\t0x204842,\n\t0x26ca42,\n\t0x204782,\n\t0x2c45c2,\n\t0x202882,\n\t0x20e102,\n\t0x203d02,\n\t0x2d2842,\n\t0x2063c2,\n\t0x200682,\n\t0x2157c2,\n\t0x208ac2,\n\t0x201202,\n\t0x203182,\n\t0x204882,\n\t0x201102,\n\t0xc2,\n\t0x4542,\n\t0x1702,\n\t0x13c2,\n\t0x202,\n\t0xc02,\n\t0x36842,\n\t0x12c2,\n\t0x382,\n\t0x1e02,\n\t0xa502,\n\t0x4842,\n\t0x6ca42,\n\t0x4782,\n\t0xc45c2,\n\t0x2882,\n\t0xe102,\n\t0x3d02,\n\t0xd2842,\n\t0x63c2,\n\t0x682,\n\t0x157c2,\n\t0x8ac2,\n\t0x1202,\n\t0x3182,\n\t0x4882,\n\t0x1102,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x7302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209302,\n\t0x24b583,\n\t0xd609303,\n\t0x22b883,\n\t0x2287c3,\n\t0xe6243,\n\t0x2203c2,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0xc882,\n\t0x2001c2,\n\t0x15c5885,\n\t0x20dc82,\n\t0xaf0c8,\n\t0x9302,\n\t0x237002,\n\t0x201742,\n\t0x23f9c2,\n\t0x20f742,\n\t0x23ce82,\n\t0x178145,\n\t0x203142,\n\t0x203c02,\n\t0x20b302,\n\t0x200ec2,\n\t0x202882,\n\t0x3a2a02,\n\t0x20eb02,\n\t0x290e82,\n\t0xe41c7,\n\t0xbab4d,\n\t0xdf5c9,\n\t0xaa44b,\n\t0xe5248,\n\t0x793c9,\n\t0x109846,\n\t0x22b883,\n\t0xaf0c8,\n\t0x10de04,\n\t0x10cdc3,\n\t0x1680c5,\n\t0xaf0c8,\n\t0xdd187,\n\t0x59086,\n\t0x168109,\n\t0xfc8e,\n\t0x7687,\n\t0x2000c2,\n\t0x28b004,\n\t0x209302,\n\t0x209303,\n\t0x2046c2,\n\t0x2351c3,\n\t0x200382,\n\t0x2da884,\n\t0x20f8c3,\n\t0x24f602,\n\t0x215c83,\n\t0x2003c2,\n\t0x24b583,\n\t0x3acb86,\n\t0x32fa8f,\n\t0x769c43,\n\t0xaf0c8,\n\t0x209302,\n\t0x210a43,\n\t0x22b883,\n\t0x2287c3,\n\t0x2543,\n\t0xfc88,\n\t0x1576a8b,\n\t0x14187ca,\n\t0x1471c47,\n\t0x888cb,\n\t0xe4085,\n\t0xf6d85,\n\t0xe41c7,\n\t0x209302,\n\t0x209303,\n\t0x22b883,\n\t0x215c83,\n\t0x2000c2,\n\t0x203882,\n\t0x205fc2,\n\t0x10e09303,\n\t0x23f802,\n\t0x2351c3,\n\t0x21f242,\n\t0x220f02,\n\t0x22b883,\n\t0x2049c2,\n\t0x2716c2,\n\t0x2a8a42,\n\t0x203402,\n\t0x28fe82,\n\t0x200802,\n\t0x201042,\n\t0x272302,\n\t0x27c402,\n\t0x26bc02,\n\t0x2ae782,\n\t0x2c4442,\n\t0x21c402,\n\t0x2b1802,\n\t0x2287c3,\n\t0x203542,\n\t0x215c83,\n\t0x22b9c2,\n\t0x2d1842,\n\t0x24b583,\n\t0x241082,\n\t0x201202,\n\t0x214d82,\n\t0x201bc2,\n\t0x20ed82,\n\t0x2e6b02,\n\t0x20fa02,\n\t0x25a482,\n\t0x229642,\n\t0x32598a,\n\t0x36200a,\n\t0x39ca8a,\n\t0x3d2bc2,\n\t0x22a042,\n\t0x3645c2,\n\t0x11366cc9,\n\t0x11742c0a,\n\t0x1430587,\n\t0x11a00982,\n\t0x140d443,\n\t0x1302,\n\t0x142c0a,\n\t0x19648e,\n\t0x243644,\n\t0x12209303,\n\t0x2351c3,\n\t0x24f544,\n\t0x22b883,\n\t0x21e084,\n\t0x20f8c3,\n\t0x2287c3,\n\t0xe6444,\n\t0x168ac3,\n\t0x215c83,\n\t0xe205,\n\t0x202543,\n\t0x24b583,\n\t0x14ed444,\n\t0x22d183,\n\t0x20ab43,\n\t0xaf0c8,\n\t0x169b86,\n\t0x15b6dc4,\n\t0x177645,\n\t0x744a,\n\t0x12b2c2,\n\t0x1a9546,\n\t0x7c91,\n\t0x12b66cc9,\n\t0x1776c8,\n\t0x28a88,\n\t0x1cfa47,\n\t0x3902,\n\t0xf6d8b,\n\t0x14b04b,\n\t0x18caca,\n\t0x590a,\n\t0x6dec7,\n\t0xaf0c8,\n\t0x11ee48,\n\t0xb607,\n\t0x1941538b,\n\t0x177c7,\n\t0x68c2,\n\t0x3e487,\n\t0x189c8a,\n\t0x5b10f,\n\t0xff14f,\n\t0x142c02,\n\t0x9302,\n\t0x86088,\n\t0xf23ca,\n\t0xdcc8a,\n\t0xd2cca,\n\t0x7b688,\n\t0x1cb08,\n\t0x5db08,\n\t0xdd148,\n\t0x10c608,\n\t0x69c2,\n\t0x1c590f,\n\t0x9ff8b,\n\t0x73dc8,\n\t0x37307,\n\t0x1324ca,\n\t0x15d74b,\n\t0x7c709,\n\t0x1323c7,\n\t0x1ca08,\n\t0x3c08c,\n\t0x11ae87,\n\t0x17baca,\n\t0x65e48,\n\t0x10004e,\n\t0x6738e,\n\t0x6dd0b,\n\t0x6e70b,\n\t0xe1a4b,\n\t0xecdc9,\n\t0xfe94b,\n\t0x10370d,\n\t0x18af4b,\n\t0x3cf8d,\n\t0x3d30d,\n\t0x401ca,\n\t0x454cb,\n\t0x45e0b,\n\t0x4a005,\n\t0x19824650,\n\t0x2230f,\n\t0x11c00f,\n\t0x154a4d,\n\t0xb83d0,\n\t0x7242,\n\t0x19e25b08,\n\t0x28748,\n\t0x12038e,\n\t0x1a362845,\n\t0x4eb0b,\n\t0x13b790,\n\t0x55148,\n\t0x1cc0a,\n\t0x6e8c9,\n\t0x64a07,\n\t0x64d47,\n\t0x64f07,\n\t0x65287,\n\t0x66187,\n\t0x66787,\n\t0x681c7,\n\t0x68487,\n\t0x68e47,\n\t0x69147,\n\t0x69807,\n\t0x699c7,\n\t0x69b87,\n\t0x69d47,\n\t0x6a047,\n\t0x6a787,\n\t0x6b047,\n\t0x6b807,\n\t0x6bdc7,\n\t0x6c087,\n\t0x6c247,\n\t0x6c547,\n\t0x6c907,\n\t0x6cb07,\n\t0x6f3c7,\n\t0x6f587,\n\t0x6f747,\n\t0x70447,\n\t0x70947,\n\t0x70fc7,\n\t0x72187,\n\t0x72447,\n\t0x72947,\n\t0x72b07,\n\t0x72f07,\n\t0x73407,\n\t0x74047,\n\t0x74447,\n\t0x74607,\n\t0x747c7,\n\t0x76387,\n\t0x76fc7,\n\t0x77507,\n\t0x77ac7,\n\t0x77c87,\n\t0x78007,\n\t0x78587,\n\t0xb182,\n\t0x5dc0a,\n\t0xe6587,\n\t0x87fc5,\n\t0xbc891,\n\t0xd586,\n\t0x11dbca,\n\t0x85f0a,\n\t0x59086,\n\t0x11f8b,\n\t0x642,\n\t0x31a51,\n\t0xb4ac9,\n\t0x95789,\n\t0x72302,\n\t0x7318a,\n\t0xa63c9,\n\t0xa6b0f,\n\t0xa710e,\n\t0xa8148,\n\t0x55282,\n\t0x1b7309,\n\t0x19c04e,\n\t0x10694c,\n\t0xe784f,\n\t0x1b170e,\n\t0x1e6cc,\n\t0x23bc9,\n\t0x26311,\n\t0x268c8,\n\t0x28c52,\n\t0x12334d,\n\t0x12398d,\n\t0x3c48b,\n\t0x42c95,\n\t0x47089,\n\t0x4da8a,\n\t0x5ca09,\n\t0x6b410,\n\t0x70d0b,\n\t0x8188f,\n\t0x8634b,\n\t0x16e38c,\n\t0x1c0290,\n\t0x9e40a,\n\t0xa0b8d,\n\t0xa1c0e,\n\t0xaa10a,\n\t0xaac0c,\n\t0xada54,\n\t0xb4751,\n\t0xfaf0b,\n\t0x152b0f,\n\t0x121a0d,\n\t0x1246ce,\n\t0xb2a4c,\n\t0xb398c,\n\t0xb444b,\n\t0xbbb4e,\n\t0xbc150,\n\t0xc034b,\n\t0xc09cd,\n\t0xc150f,\n\t0xc234c,\n\t0x11fece,\n\t0x13ead1,\n\t0xcc38c,\n\t0xd7287,\n\t0xdf9cd,\n\t0xfa98c,\n\t0xeb710,\n\t0xf394d,\n\t0xfd647,\n\t0x102410,\n\t0x134308,\n\t0x13dc4b,\n\t0x19194f,\n\t0xccd08,\n\t0x11ddcd,\n\t0x1a0890,\n\t0xff049,\n\t0x1a6af746,\n\t0xb0643,\n\t0xb5205,\n\t0x6d82,\n\t0x56ec9,\n\t0x7680a,\n\t0x1aa3e684,\n\t0x116c86,\n\t0x1a00a,\n\t0x1ad72e89,\n\t0x26083,\n\t0x14ee8a,\n\t0xdab11,\n\t0xdaf49,\n\t0xdcc07,\n\t0xdd987,\n\t0xe6648,\n\t0x7e0b,\n\t0x12d689,\n\t0xe6dd0,\n\t0xe728c,\n\t0xe7d08,\n\t0xe80c5,\n\t0xc6d08,\n\t0x1b8c8a,\n\t0x26147,\n\t0x74fc7,\n\t0x1e82,\n\t0x13c48a,\n\t0x11c349,\n\t0x72805,\n\t0x5e0ca,\n\t0x8c80f,\n\t0x194ecb,\n\t0x1646cc,\n\t0x29b12,\n\t0xa3145,\n\t0xe94c8,\n\t0x19db8a,\n\t0x1b2f4a45,\n\t0x1642cc,\n\t0x1387c3,\n\t0x1a2a02,\n\t0xfdc8a,\n\t0x14fe00c,\n\t0x11b208,\n\t0x3d148,\n\t0x195147,\n\t0x6702,\n\t0x22c2,\n\t0x532d0,\n\t0x7aa07,\n\t0x3108f,\n\t0xea746,\n\t0xa74e,\n\t0x1557cb,\n\t0x4b248,\n\t0x7cac9,\n\t0x10d992,\n\t0x11428d,\n\t0x1147c8,\n\t0xaa309,\n\t0xd4c8d,\n\t0x108489,\n\t0x19a6cb,\n\t0x8548,\n\t0x86d88,\n\t0x8abc8,\n\t0x13ae09,\n\t0x13b00a,\n\t0x8ee0c,\n\t0xf800a,\n\t0x1134c7,\n\t0x4790d,\n\t0x100b4b,\n\t0x12bccc,\n\t0x39bc8,\n\t0x48909,\n\t0x654d0,\n\t0x2a82,\n\t0x7f2cd,\n\t0x2fc2,\n\t0x13d82,\n\t0x11340a,\n\t0x11daca,\n\t0x11f1cb,\n\t0x45fcc,\n\t0x11e74a,\n\t0x11ebce,\n\t0x143f8d,\n\t0x1b5d2a85,\n\t0x12ed08,\n\t0xc882,\n\t0x12f1044e,\n\t0x137697ce,\n\t0x13e013ca,\n\t0x1477730e,\n\t0x14f0ca8e,\n\t0x157cd18c,\n\t0x1430587,\n\t0x1430589,\n\t0x140d443,\n\t0x15e5788c,\n\t0x167955c9,\n\t0x16fc4cc9,\n\t0x17607249,\n\t0x1302,\n\t0x110391,\n\t0x169711,\n\t0x130d,\n\t0x177251,\n\t0x10c9d1,\n\t0x1cd0cf,\n\t0x577cf,\n\t0x19550c,\n\t0x1c4c0c,\n\t0x718c,\n\t0x1266cd,\n\t0x75e55,\n\t0xc510c,\n\t0x12e38c,\n\t0x131a10,\n\t0x14e40c,\n\t0x15e5cc,\n\t0x17be99,\n\t0x185ad9,\n\t0x19e359,\n\t0x1c63d4,\n\t0x1d0854,\n\t0xaa94,\n\t0xb794,\n\t0xc214,\n\t0x17ec51c9,\n\t0x1840ad49,\n\t0x18f2e449,\n\t0x13226ac9,\n\t0x1302,\n\t0x13a26ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x14226ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x14a26ac9,\n\t0x1302,\n\t0x15226ac9,\n\t0x1302,\n\t0x15a26ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x16226ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x16a26ac9,\n\t0x1302,\n\t0x17226ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x17a26ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x18226ac9,\n\t0x1302,\n\t0x18a26ac9,\n\t0x1302,\n\t0x19226ac9,\n\t0x1302,\n\t0xaa8a,\n\t0x1302,\n\t0x7c85,\n\t0x18cac4,\n\t0x11044e,\n\t0x1697ce,\n\t0x1a3ce,\n\t0x13ca,\n\t0x17730e,\n\t0x10ca8e,\n\t0x1cd18c,\n\t0x5788c,\n\t0x1955c9,\n\t0x1c4cc9,\n\t0x7249,\n\t0xc51c9,\n\t0xad49,\n\t0x12e449,\n\t0x7604d,\n\t0xba49,\n\t0xc4c9,\n\t0x14be04,\n\t0x12eec4,\n\t0x1401c4,\n\t0x144444,\n\t0x88b84,\n\t0x39944,\n\t0x3adc4,\n\t0x57e04,\n\t0x1cfa44,\n\t0x15a5e83,\n\t0x16583,\n\t0x7242,\n\t0x143f83,\n\t0xa042,\n\t0xa048,\n\t0x12d707,\n\t0x69c2,\n\t0x2000c2,\n\t0x209302,\n\t0x2046c2,\n\t0x200d42,\n\t0x200382,\n\t0x2003c2,\n\t0x2022c2,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x20f703,\n\t0x215c83,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x215c83,\n\t0x24b583,\n\t0xdb83,\n\t0x22b883,\n\t0x1e084,\n\t0x2000c2,\n\t0x373a83,\n\t0x1da09303,\n\t0x23e1c7,\n\t0x22b883,\n\t0x216c03,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x2678ca,\n\t0x3acb85,\n\t0x214e83,\n\t0x216a42,\n\t0xaf0c8,\n\t0xaf0c8,\n\t0x9302,\n\t0x134c82,\n\t0x1e372c0b,\n\t0x1e62e944,\n\t0x3e5c5,\n\t0x7f85,\n\t0x122846,\n\t0x1ea07f85,\n\t0x54743,\n\t0xe0383,\n\t0x10de04,\n\t0x10cdc3,\n\t0x1680c5,\n\t0xf6d85,\n\t0xaf0c8,\n\t0x177c7,\n\t0x9303,\n\t0x1f23aec7,\n\t0x175e06,\n\t0x1f50c8c5,\n\t0x175ec7,\n\t0x1d40a,\n\t0x1bcc8,\n\t0x1d307,\n\t0x7e008,\n\t0xd8447,\n\t0xfbf4f,\n\t0x1842c7,\n\t0x57c06,\n\t0x13b790,\n\t0x13928f,\n\t0x1ff09,\n\t0x116d04,\n\t0x1f975f8e,\n\t0x2044c,\n\t0x15d94a,\n\t0x7c887,\n\t0xe5a0a,\n\t0x174789,\n\t0x1a370c,\n\t0xbf3ca,\n\t0x5940a,\n\t0x168109,\n\t0x116c86,\n\t0x7c94a,\n\t0x114eca,\n\t0x9b74a,\n\t0x151689,\n\t0xda448,\n\t0xda6c6,\n\t0xe048d,\n\t0xb5685,\n\t0x1ff816cc,\n\t0x7687,\n\t0x105149,\n\t0xed787,\n\t0xe4d54,\n\t0x107ccb,\n\t0x73c0a,\n\t0x10d80a,\n\t0xa414d,\n\t0x151f3c9,\n\t0x11404c,\n\t0x1145cb,\n\t0x3cf83,\n\t0x3cf83,\n\t0x3cf86,\n\t0x3cf83,\n\t0x122848,\n\t0xb7849,\n\t0x173a83,\n\t0xaf0c8,\n\t0x9302,\n\t0x4f544,\n\t0x5a003,\n\t0x1c1245,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x203ac3,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x295943,\n\t0x20ab43,\n\t0x203ac3,\n\t0x28b004,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x233603,\n\t0x209303,\n\t0x2351c3,\n\t0x20f783,\n\t0x210a43,\n\t0x22b883,\n\t0x21e084,\n\t0x329f83,\n\t0x209383,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x214e83,\n\t0x209783,\n\t0x21e09303,\n\t0x2351c3,\n\t0x24b083,\n\t0x22b883,\n\t0x220983,\n\t0x209383,\n\t0x24b583,\n\t0x203d03,\n\t0x3ca004,\n\t0xaf0c8,\n\t0x22609303,\n\t0x2351c3,\n\t0x2a8203,\n\t0x22b883,\n\t0x2287c3,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x20f343,\n\t0xaf0c8,\n\t0x22e09303,\n\t0x2351c3,\n\t0x210a43,\n\t0x202543,\n\t0x24b583,\n\t0xaf0c8,\n\t0x1430587,\n\t0x373a83,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0xf6d85,\n\t0xe41c7,\n\t0xe4f8b,\n\t0xdb344,\n\t0xb5685,\n\t0x158e708,\n\t0xa884d,\n\t0x24243ac5,\n\t0x91f04,\n\t0xd983,\n\t0xfef45,\n\t0x2561c5,\n\t0xaf0c8,\n\t0x19602,\n\t0x456c3,\n\t0xf9dc6,\n\t0x32c3c8,\n\t0x3a5d07,\n\t0x28b004,\n\t0x394c06,\n\t0x3c4ac6,\n\t0xaf0c8,\n\t0x325283,\n\t0x31ba09,\n\t0x238d95,\n\t0x38d9f,\n\t0x209303,\n\t0x2c4cd2,\n\t0x16ee86,\n\t0x182285,\n\t0x1cc0a,\n\t0x6e8c9,\n\t0x2c4a8f,\n\t0x2da884,\n\t0x2ce145,\n\t0x308b90,\n\t0x38d247,\n\t0x202543,\n\t0x229188,\n\t0x15f886,\n\t0x2a538a,\n\t0x21df44,\n\t0x2f4483,\n\t0x3acb86,\n\t0x216a42,\n\t0x2ee5cb,\n\t0x2543,\n\t0x1a2344,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x2fb603,\n\t0x209302,\n\t0xf0fc3,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x216c03,\n\t0x241703,\n\t0x24b583,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x2000c2,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x7f85,\n\t0x28b004,\n\t0x209303,\n\t0x2351c3,\n\t0x229d44,\n\t0x215c83,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x202b03,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x375844,\n\t0x21e084,\n\t0x215c83,\n\t0x24b583,\n\t0x20ab43,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2ba043,\n\t0x69e83,\n\t0x16c03,\n\t0x215c83,\n\t0x24b583,\n\t0x32598a,\n\t0x341349,\n\t0x3581cb,\n\t0x35884a,\n\t0x36200a,\n\t0x37aecb,\n\t0x39044a,\n\t0x396b4a,\n\t0x39ca8a,\n\t0x39cd0b,\n\t0x3b89c9,\n\t0x3bf5ca,\n\t0x3bfa0b,\n\t0x3cb54b,\n\t0x3d130a,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x1c5b8b,\n\t0x5eb48,\n\t0xd4dc4,\n\t0x7f46,\n\t0x40489,\n\t0xaf0c8,\n\t0x209303,\n\t0x264a04,\n\t0x213b02,\n\t0x226004,\n\t0x368605,\n\t0x203ac3,\n\t0x28b004,\n\t0x209303,\n\t0x238084,\n\t0x2351c3,\n\t0x24f544,\n\t0x2da884,\n\t0x21e084,\n\t0x209383,\n\t0x215c83,\n\t0x24b583,\n\t0x27f485,\n\t0x233603,\n\t0x214e83,\n\t0x205dc3,\n\t0x271504,\n\t0x369b04,\n\t0x2b7b05,\n\t0xaf0c8,\n\t0x30be04,\n\t0x3946c6,\n\t0x368244,\n\t0x209302,\n\t0x2493c7,\n\t0x250f47,\n\t0x24ce84,\n\t0x25ab45,\n\t0x2f3b45,\n\t0x230105,\n\t0x21e084,\n\t0x38ba88,\n\t0x237846,\n\t0x320e88,\n\t0x27c445,\n\t0x2e1305,\n\t0x2655c4,\n\t0x24b583,\n\t0x2f6044,\n\t0x379c86,\n\t0x3acc83,\n\t0x271504,\n\t0x24e805,\n\t0x256e44,\n\t0x247744,\n\t0x216a42,\n\t0x22d246,\n\t0x3aeb86,\n\t0x311945,\n\t0x2000c2,\n\t0x373a83,\n\t0x2b209302,\n\t0x225c84,\n\t0x200382,\n\t0x2287c3,\n\t0x207e02,\n\t0x215c83,\n\t0x2003c2,\n\t0x2fc846,\n\t0x201203,\n\t0x20ab43,\n\t0xa8a84,\n\t0xaf0c8,\n\t0xaf0c8,\n\t0x22b883,\n\t0xe6243,\n\t0x2000c2,\n\t0x2be09302,\n\t0x22b883,\n\t0x269b03,\n\t0x329f83,\n\t0x22e944,\n\t0x215c83,\n\t0x24b583,\n\t0xaf0c8,\n\t0x2000c2,\n\t0x2c609302,\n\t0x209303,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x682,\n\t0x209702,\n\t0x22c682,\n\t0x216c03,\n\t0x2ec143,\n\t0x2000c2,\n\t0xf6d85,\n\t0xaf0c8,\n\t0xe41c7,\n\t0x209302,\n\t0x2351c3,\n\t0x24f544,\n\t0x202c03,\n\t0x22b883,\n\t0x202b03,\n\t0x2287c3,\n\t0x215c83,\n\t0x213203,\n\t0x24b583,\n\t0x20f2c3,\n\t0x9a893,\n\t0xc4614,\n\t0xf6d85,\n\t0xe41c7,\n\t0x105a46,\n\t0x76a0b,\n\t0x3cf86,\n\t0x57f07,\n\t0x5ab46,\n\t0x649,\n\t0xe1f0a,\n\t0x89e4d,\n\t0xba84c,\n\t0x11584a,\n\t0x181cc8,\n\t0x178145,\n\t0x1d448,\n\t0xea746,\n\t0x71146,\n\t0x40386,\n\t0x207242,\n\t0x16ae04,\n\t0x8e7c6,\n\t0x82e8e,\n\t0x15d34c,\n\t0xf6d85,\n\t0x18cc87,\n\t0x1e9d1,\n\t0x1cf8ca,\n\t0x209303,\n\t0x7df85,\n\t0x4b6c8,\n\t0x22984,\n\t0x2d821986,\n\t0xbc886,\n\t0xde186,\n\t0x9014a,\n\t0x194643,\n\t0x2de44684,\n\t0x605,\n\t0x103683,\n\t0x2e236647,\n\t0xe205,\n\t0x1204c,\n\t0xf8ec8,\n\t0x9e04b,\n\t0x2e64c34c,\n\t0x140c783,\n\t0xb6148,\n\t0x9fe09,\n\t0x11f4c8,\n\t0x1419f46,\n\t0x2eb90dc9,\n\t0x1a0c47,\n\t0xe408a,\n\t0xd7c8,\n\t0x122848,\n\t0x1cfa44,\n\t0x1cac45,\n\t0x9e187,\n\t0x2ee9e183,\n\t0x2f365e86,\n\t0x2f6f68c4,\n\t0x2fafde47,\n\t0x122844,\n\t0x122844,\n\t0x122844,\n\t0x122844,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x2000c2,\n\t0x209302,\n\t0x22b883,\n\t0x206982,\n\t0x215c83,\n\t0x24b583,\n\t0x201203,\n\t0x382a8f,\n\t0x382e4e,\n\t0xaf0c8,\n\t0x209303,\n\t0x45947,\n\t0x2351c3,\n\t0x22b883,\n\t0x20f8c3,\n\t0x215c83,\n\t0x24b583,\n\t0x1604,\n\t0x10cf04,\n\t0x10f744,\n\t0x219ac3,\n\t0x30e9c7,\n\t0x200a82,\n\t0x2c63c9,\n\t0x204542,\n\t0x2535cb,\n\t0x29ea0a,\n\t0x2abdc9,\n\t0x200542,\n\t0x3ccc86,\n\t0x232bd5,\n\t0x253715,\n\t0x2343d3,\n\t0x253c93,\n\t0x227442,\n\t0x229845,\n\t0x30bb0c,\n\t0x27724b,\n\t0x3c2185,\n\t0x2013c2,\n\t0x329342,\n\t0x392686,\n\t0x203902,\n\t0x260646,\n\t0x21ce8d,\n\t0x20df8c,\n\t0x2246c4,\n\t0x200882,\n\t0x219002,\n\t0x229008,\n\t0x200202,\n\t0x220a86,\n\t0x333e8f,\n\t0x220a90,\n\t0x2f1a44,\n\t0x232d95,\n\t0x234553,\n\t0x20d383,\n\t0x32980a,\n\t0x20f087,\n\t0x34d489,\n\t0x2e5787,\n\t0x30e842,\n\t0x200282,\n\t0x3b3a86,\n\t0x201782,\n\t0xaf0c8,\n\t0x20d1c2,\n\t0x20d9c2,\n\t0x223007,\n\t0x33fdc7,\n\t0x33fdd1,\n\t0x216ec5,\n\t0x33a2ce,\n\t0x216ecf,\n\t0x2068c2,\n\t0x20f287,\n\t0x219b08,\n\t0x20abc2,\n\t0x2bf442,\n\t0x33d7c6,\n\t0x33d7cf,\n\t0x3743d0,\n\t0x22c302,\n\t0x200dc2,\n\t0x335dc8,\n\t0x209483,\n\t0x25a1c8,\n\t0x20948d,\n\t0x235843,\n\t0x31c788,\n\t0x23584f,\n\t0x235c0e,\n\t0x30d4ca,\n\t0x22f0d1,\n\t0x22f550,\n\t0x2dbb0d,\n\t0x2dbe4c,\n\t0x2752c7,\n\t0x329987,\n\t0x394cc9,\n\t0x2247c2,\n\t0x200c02,\n\t0x3403cc,\n\t0x3408cb,\n\t0x201242,\n\t0x2b4606,\n\t0x20f382,\n\t0x200482,\n\t0x342c02,\n\t0x209302,\n\t0x22fb44,\n\t0x23aa47,\n\t0x22c842,\n\t0x240ac7,\n\t0x242847,\n\t0x21fb02,\n\t0x22d202,\n\t0x245805,\n\t0x217382,\n\t0x384c0e,\n\t0x2a440d,\n\t0x2351c3,\n\t0x28784e,\n\t0x3bc50d,\n\t0x29af83,\n\t0x202482,\n\t0x285dc4,\n\t0x236882,\n\t0x20a682,\n\t0x3a0005,\n\t0x3a19c7,\n\t0x24a342,\n\t0x200d42,\n\t0x24f147,\n\t0x251cc8,\n\t0x23a302,\n\t0x2a31c6,\n\t0x35028c,\n\t0x35078b,\n\t0x208282,\n\t0x26120f,\n\t0x2615d0,\n\t0x2619cf,\n\t0x261d95,\n\t0x2622d4,\n\t0x2627ce,\n\t0x262b4e,\n\t0x262ecf,\n\t0x26328e,\n\t0x263614,\n\t0x263b13,\n\t0x263fcd,\n\t0x278749,\n\t0x28b943,\n\t0x202c02,\n\t0x218205,\n\t0x204ec6,\n\t0x200382,\n\t0x37ee87,\n\t0x22b883,\n\t0x200642,\n\t0x2339c8,\n\t0x22f311,\n\t0x22f750,\n\t0x203502,\n\t0x282947,\n\t0x200b02,\n\t0x209047,\n\t0x206d82,\n\t0x2118c9,\n\t0x392647,\n\t0x2a61c8,\n\t0x2217c6,\n\t0x2ec043,\n\t0x3672c5,\n\t0x235442,\n\t0x2004c2,\n\t0x3b3e85,\n\t0x35d0c5,\n\t0x204582,\n\t0x219343,\n\t0x3763c7,\n\t0x216d07,\n\t0x202d42,\n\t0x257344,\n\t0x21e283,\n\t0x321009,\n\t0x2fbdc8,\n\t0x205142,\n\t0x20bcc2,\n\t0x391507,\n\t0x22f005,\n\t0x2b8c48,\n\t0x348047,\n\t0x212e83,\n\t0x28e646,\n\t0x2db98d,\n\t0x2dbd0c,\n\t0x302c06,\n\t0x201742,\n\t0x29df02,\n\t0x209382,\n\t0x2356cf,\n\t0x235ace,\n\t0x2f3bc7,\n\t0x2025c2,\n\t0x3574c5,\n\t0x3574c6,\n\t0x225282,\n\t0x203542,\n\t0x28d146,\n\t0x208f83,\n\t0x208f86,\n\t0x2c8e05,\n\t0x2c8e0d,\n\t0x2c93d5,\n\t0x2c9c8c,\n\t0x2ca9cd,\n\t0x2cad92,\n\t0x204842,\n\t0x26ca42,\n\t0x200a42,\n\t0x257686,\n\t0x306806,\n\t0x201e82,\n\t0x204f46,\n\t0x20b302,\n\t0x20b305,\n\t0x212782,\n\t0x2a4509,\n\t0x22748c,\n\t0x2277cb,\n\t0x2003c2,\n\t0x252888,\n\t0x20ef42,\n\t0x204782,\n\t0x272c46,\n\t0x226a45,\n\t0x373087,\n\t0x2ecfc5,\n\t0x290385,\n\t0x207f42,\n\t0x2044c2,\n\t0x202882,\n\t0x2e7b47,\n\t0x2fc90d,\n\t0x2fcc8c,\n\t0x35a8c7,\n\t0x2256c2,\n\t0x20e102,\n\t0x237b48,\n\t0x257048,\n\t0x2e7ec8,\n\t0x31dd84,\n\t0x2bbdc7,\n\t0x23e703,\n\t0x257d02,\n\t0x21ad42,\n\t0x2f2789,\n\t0x300447,\n\t0x203d02,\n\t0x273045,\n\t0x244042,\n\t0x230642,\n\t0x2bdf03,\n\t0x2bdf06,\n\t0x2fb1c2,\n\t0x2fc6c2,\n\t0x200402,\n\t0x3c1046,\n\t0x2d9447,\n\t0x201902,\n\t0x200902,\n\t0x25a00f,\n\t0x28768d,\n\t0x39c44e,\n\t0x3bc38c,\n\t0x203282,\n\t0x201182,\n\t0x221605,\n\t0x323e86,\n\t0x215e02,\n\t0x2063c2,\n\t0x200682,\n\t0x287a04,\n\t0x2ec244,\n\t0x255946,\n\t0x2022c2,\n\t0x27a587,\n\t0x243703,\n\t0x243708,\n\t0x243d88,\n\t0x24d907,\n\t0x254446,\n\t0x20ac02,\n\t0x239603,\n\t0x333607,\n\t0x295206,\n\t0x2f5105,\n\t0x31e108,\n\t0x200b42,\n\t0x3cca47,\n\t0x204882,\n\t0x2e03c2,\n\t0x208502,\n\t0x217049,\n\t0x243a42,\n\t0x201b42,\n\t0x2540c3,\n\t0x30bf47,\n\t0x203c42,\n\t0x22760c,\n\t0x22790b,\n\t0x302c86,\n\t0x3035c5,\n\t0x217442,\n\t0x201102,\n\t0x2bb0c6,\n\t0x27ac43,\n\t0x329b87,\n\t0x212002,\n\t0x2008c2,\n\t0x232a55,\n\t0x2538d5,\n\t0x234293,\n\t0x253e13,\n\t0x38f5c7,\n\t0x3b9b51,\n\t0x3ba290,\n\t0x266312,\n\t0x277691,\n\t0x280348,\n\t0x280350,\n\t0x28fa0f,\n\t0x29e7d3,\n\t0x2abb92,\n\t0x2bcc90,\n\t0x33decf,\n\t0x3ba892,\n\t0x3bba51,\n\t0x2af293,\n\t0x3b8252,\n\t0x2af88f,\n\t0x2c5c4e,\n\t0x2c8992,\n\t0x2d3951,\n\t0x2d59cf,\n\t0x2d65ce,\n\t0x3bd011,\n\t0x3bd7d0,\n\t0x2d78d2,\n\t0x2dd551,\n\t0x3bddd0,\n\t0x3be3cf,\n\t0x2de551,\n\t0x2e0c90,\n\t0x2e8806,\n\t0x2f59c7,\n\t0x209b07,\n\t0x204042,\n\t0x2837c5,\n\t0x3828c7,\n\t0x22c682,\n\t0x208042,\n\t0x22a445,\n\t0x21a9c3,\n\t0x3b7206,\n\t0x2fcacd,\n\t0x2fce0c,\n\t0x204fc2,\n\t0x30b98b,\n\t0x27710a,\n\t0x22970a,\n\t0x2b6f09,\n\t0x2f008b,\n\t0x34818d,\n\t0x30900c,\n\t0x271a8a,\n\t0x27818c,\n\t0x295c0b,\n\t0x3c1fcc,\n\t0x3c24ce,\n\t0x3c2bcb,\n\t0x3c308c,\n\t0x2ae6c3,\n\t0x308386,\n\t0x30a182,\n\t0x2fe442,\n\t0x210e83,\n\t0x208602,\n\t0x225b43,\n\t0x35a086,\n\t0x261f47,\n\t0x334786,\n\t0x2f2588,\n\t0x376248,\n\t0x319706,\n\t0x205cc2,\n\t0x31130d,\n\t0x31164c,\n\t0x2da947,\n\t0x315687,\n\t0x237282,\n\t0x215082,\n\t0x255ac2,\n\t0x252082,\n\t0x333d97,\n\t0x33a1d6,\n\t0x33d6d7,\n\t0x3402d4,\n\t0x3407d3,\n\t0x350194,\n\t0x350693,\n\t0x3b6a50,\n\t0x3b9a59,\n\t0x3ba198,\n\t0x3ba79a,\n\t0x3bb959,\n\t0x3bcf19,\n\t0x3bd6d8,\n\t0x3bdcd8,\n\t0x3be2d7,\n\t0x3c1ed4,\n\t0x3c23d6,\n\t0x3c2ad3,\n\t0x3c2f94,\n\t0x209302,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x201203,\n\t0x2000c2,\n\t0x20a5c2,\n\t0x31a919c5,\n\t0x31e89205,\n\t0x323c0d06,\n\t0xaf0c8,\n\t0x326afe05,\n\t0x209302,\n\t0x2046c2,\n\t0x32b0c305,\n\t0x32e81785,\n\t0x33282b07,\n\t0x33685009,\n\t0x33a66bc4,\n\t0x200382,\n\t0x200642,\n\t0x33e5c845,\n\t0x34297389,\n\t0x34732248,\n\t0x34aad8c5,\n\t0x34f3a787,\n\t0x3522ac88,\n\t0x356e9385,\n\t0x35a6cf06,\n\t0x35f91009,\n\t0x362d0f48,\n\t0x366c0808,\n\t0x36a979ca,\n\t0x36e78f84,\n\t0x37202e45,\n\t0x376bd7c8,\n\t0x37b326c5,\n\t0x213302,\n\t0x37e485c3,\n\t0x382a3546,\n\t0x387237c8,\n\t0x38b1a0c6,\n\t0x38f633c8,\n\t0x39366506,\n\t0x3964ef04,\n\t0x203202,\n\t0x39b357c7,\n\t0x39ea9084,\n\t0x3a27c147,\n\t0x3a736107,\n\t0x2003c2,\n\t0x3aa9c405,\n\t0x3ae49044,\n\t0x3b2fa647,\n\t0x3b63fdc7,\n\t0x3ba85c06,\n\t0x3be81f05,\n\t0x3c297487,\n\t0x3c6eadc8,\n\t0x3ca18587,\n\t0x3ceb5889,\n\t0x3d2c9fc5,\n\t0x3d721887,\n\t0x3da91006,\n\t0x3dec6a08,\n\t0x22a94d,\n\t0x27ea89,\n\t0x2a65cb,\n\t0x2a830b,\n\t0x3a3f0b,\n\t0x315d0b,\n\t0x32408b,\n\t0x32434b,\n\t0x324c49,\n\t0x325c0b,\n\t0x325ecb,\n\t0x326a0b,\n\t0x3276ca,\n\t0x327c0a,\n\t0x32820c,\n\t0x32a68b,\n\t0x32b0ca,\n\t0x33e74a,\n\t0x34564e,\n\t0x34654e,\n\t0x3468ca,\n\t0x34898a,\n\t0x34964b,\n\t0x34990b,\n\t0x34a58b,\n\t0x36be8b,\n\t0x36c48a,\n\t0x36d14b,\n\t0x36d40a,\n\t0x36d68a,\n\t0x36d90a,\n\t0x3916cb,\n\t0x397a0b,\n\t0x399cce,\n\t0x39a04b,\n\t0x3a1b8b,\n\t0x3a2d8b,\n\t0x3a718a,\n\t0x3a7409,\n\t0x3a764a,\n\t0x3a904a,\n\t0x3b944b,\n\t0x3bfccb,\n\t0x3c068a,\n\t0x3c190b,\n\t0x3c7b8b,\n\t0x3d0d4b,\n\t0x3e283e88,\n\t0x3e6895c9,\n\t0x3ea9fc89,\n\t0x3eee2748,\n\t0x351c05,\n\t0x201dc3,\n\t0x26d604,\n\t0x30fa85,\n\t0x266906,\n\t0x26cc85,\n\t0x288c84,\n\t0x37ed88,\n\t0x31d905,\n\t0x293304,\n\t0x3d2007,\n\t0x29f20a,\n\t0x34bb4a,\n\t0x2f3cc7,\n\t0x213d07,\n\t0x307547,\n\t0x27e647,\n\t0x301d05,\n\t0x211c46,\n\t0x2bb9c7,\n\t0x245704,\n\t0x2e9946,\n\t0x2e9846,\n\t0x3c4745,\n\t0x34dd44,\n\t0x298a06,\n\t0x29d287,\n\t0x2eca46,\n\t0x3353c7,\n\t0x26d6c3,\n\t0x3c7e46,\n\t0x232845,\n\t0x282c07,\n\t0x26a94a,\n\t0x233ac4,\n\t0x21fc88,\n\t0x2b30c9,\n\t0x2e7547,\n\t0x32af46,\n\t0x38bc88,\n\t0x31a809,\n\t0x34d644,\n\t0x39da04,\n\t0x2a1185,\n\t0x2bb6c8,\n\t0x2c6f87,\n\t0x3215c9,\n\t0x267fc8,\n\t0x2e8906,\n\t0x2ed386,\n\t0x2993c8,\n\t0x370006,\n\t0x289205,\n\t0x285cc6,\n\t0x27cd08,\n\t0x2355c6,\n\t0x258a4b,\n\t0x2e0246,\n\t0x29b04d,\n\t0x206245,\n\t0x2a8f46,\n\t0x22ad45,\n\t0x35c809,\n\t0x3525c7,\n\t0x3ca408,\n\t0x2ac746,\n\t0x299c49,\n\t0x34aac6,\n\t0x26a8c5,\n\t0x2a1086,\n\t0x2c4006,\n\t0x2cbe49,\n\t0x376786,\n\t0x29ef07,\n\t0x241745,\n\t0x216383,\n\t0x258bc5,\n\t0x29b307,\n\t0x256446,\n\t0x206149,\n\t0x3c0d06,\n\t0x26b246,\n\t0x212c09,\n\t0x2856c9,\n\t0x2a1a87,\n\t0x30e088,\n\t0x2bc6c9,\n\t0x283448,\n\t0x396d86,\n\t0x2da205,\n\t0x2cd90a,\n\t0x26b2c6,\n\t0x23e046,\n\t0x2d20c5,\n\t0x2d0908,\n\t0x22eb87,\n\t0x23184a,\n\t0x24fa86,\n\t0x27eec5,\n\t0x375686,\n\t0x38a707,\n\t0x32ae07,\n\t0x2cc805,\n\t0x26aa85,\n\t0x3bca86,\n\t0x2b0706,\n\t0x2d2906,\n\t0x2bdc84,\n\t0x284589,\n\t0x28a446,\n\t0x2fb38a,\n\t0x22ccc8,\n\t0x34cd88,\n\t0x34bb4a,\n\t0x21b345,\n\t0x29d1c5,\n\t0x2ec4c8,\n\t0x2dca08,\n\t0x230347,\n\t0x31fd86,\n\t0x338308,\n\t0x2ab147,\n\t0x282d48,\n\t0x2b4306,\n\t0x286948,\n\t0x2969c6,\n\t0x27c5c7,\n\t0x39d786,\n\t0x298a06,\n\t0x30438a,\n\t0x22fbc6,\n\t0x2da209,\n\t0x319806,\n\t0x2f134a,\n\t0x24ef09,\n\t0x2fd2c6,\n\t0x2b5bc4,\n\t0x2182cd,\n\t0x289847,\n\t0x2b89c6,\n\t0x2c06c5,\n\t0x34ab45,\n\t0x393286,\n\t0x2fa489,\n\t0x2d0487,\n\t0x27da46,\n\t0x2e3106,\n\t0x288d09,\n\t0x289144,\n\t0x36f604,\n\t0x30b388,\n\t0x35a446,\n\t0x272648,\n\t0x31e488,\n\t0x2a95c7,\n\t0x3b59c9,\n\t0x2d2b07,\n\t0x2afcca,\n\t0x2f324f,\n\t0x345e4a,\n\t0x221405,\n\t0x27cf45,\n\t0x21b085,\n\t0x2f1987,\n\t0x236c43,\n\t0x30e288,\n\t0x365a46,\n\t0x365b49,\n\t0x2e8346,\n\t0x2cf187,\n\t0x299a09,\n\t0x3ca308,\n\t0x2d2187,\n\t0x3208c3,\n\t0x351c85,\n\t0x38a245,\n\t0x2bdacb,\n\t0x332784,\n\t0x23eb84,\n\t0x279c86,\n\t0x320a87,\n\t0x39f58a,\n\t0x248647,\n\t0x209847,\n\t0x281785,\n\t0x3cc205,\n\t0x26fec9,\n\t0x298a06,\n\t0x2484cd,\n\t0x3769c5,\n\t0x2b1e83,\n\t0x202703,\n\t0x3aedc5,\n\t0x357005,\n\t0x38bc88,\n\t0x27e307,\n\t0x36f386,\n\t0x29f906,\n\t0x22b105,\n\t0x235487,\n\t0x201f47,\n\t0x237707,\n\t0x202eca,\n\t0x3c7f08,\n\t0x2bdc84,\n\t0x27f847,\n\t0x280747,\n\t0x349b86,\n\t0x296047,\n\t0x2e3748,\n\t0x2e20c8,\n\t0x24d086,\n\t0x213f48,\n\t0x2d6e44,\n\t0x2bb9c6,\n\t0x249ac6,\n\t0x372506,\n\t0x2ce446,\n\t0x223a44,\n\t0x27e706,\n\t0x2bf646,\n\t0x298dc6,\n\t0x23a346,\n\t0x2025c6,\n\t0x2e3586,\n\t0x36f288,\n\t0x3baf08,\n\t0x2d5108,\n\t0x26ce88,\n\t0x2ec446,\n\t0x20f505,\n\t0x367e06,\n\t0x2ad945,\n\t0x3a5a47,\n\t0x268085,\n\t0x210183,\n\t0x201a85,\n\t0x22e044,\n\t0x202705,\n\t0x23f183,\n\t0x346b87,\n\t0x36bb88,\n\t0x335486,\n\t0x2dc68d,\n\t0x27cf06,\n\t0x298385,\n\t0x217043,\n\t0x2bd189,\n\t0x2892c6,\n\t0x294546,\n\t0x273104,\n\t0x345dc7,\n\t0x31ad06,\n\t0x2d0745,\n\t0x247343,\n\t0x208404,\n\t0x280906,\n\t0x249bc4,\n\t0x2d1d08,\n\t0x203309,\n\t0x281549,\n\t0x2a0f8a,\n\t0x2a258d,\n\t0x233e47,\n\t0x23dec6,\n\t0x21b6c4,\n\t0x285009,\n\t0x288308,\n\t0x289446,\n\t0x23b386,\n\t0x296047,\n\t0x2ddf06,\n\t0x26f246,\n\t0x364c06,\n\t0x33618a,\n\t0x22ac88,\n\t0x323245,\n\t0x25e3c9,\n\t0x2c770a,\n\t0x2ffb48,\n\t0x29cc48,\n\t0x2944c8,\n\t0x29f54c,\n\t0x3245c5,\n\t0x29fb88,\n\t0x3bb206,\n\t0x38f106,\n\t0x3ce307,\n\t0x248545,\n\t0x285e45,\n\t0x281409,\n\t0x210907,\n\t0x365b05,\n\t0x2a7c47,\n\t0x202703,\n\t0x2c7bc5,\n\t0x224e08,\n\t0x2ca747,\n\t0x29cb09,\n\t0x2f07c5,\n\t0x345544,\n\t0x2a2248,\n\t0x335907,\n\t0x2d2348,\n\t0x3d2888,\n\t0x2aa005,\n\t0x365946,\n\t0x214606,\n\t0x352909,\n\t0x2c9ac7,\n\t0x2adf86,\n\t0x2257c7,\n\t0x202c43,\n\t0x266bc4,\n\t0x2d6f45,\n\t0x35d6c4,\n\t0x24c604,\n\t0x284cc7,\n\t0x269287,\n\t0x270344,\n\t0x29c950,\n\t0x367987,\n\t0x3cc205,\n\t0x25108c,\n\t0x211004,\n\t0x2b6508,\n\t0x27c4c9,\n\t0x386786,\n\t0x31f608,\n\t0x217ac4,\n\t0x279f88,\n\t0x231e46,\n\t0x304208,\n\t0x29b5c6,\n\t0x28a18b,\n\t0x32cb45,\n\t0x2d6dc8,\n\t0x203744,\n\t0x20374a,\n\t0x29cb09,\n\t0x39d686,\n\t0x3137c8,\n\t0x286245,\n\t0x2da004,\n\t0x2b6406,\n\t0x2375c8,\n\t0x283e88,\n\t0x338b86,\n\t0x2558c4,\n\t0x2cd886,\n\t0x2d2b87,\n\t0x27c047,\n\t0x29604f,\n\t0x203d87,\n\t0x2fd387,\n\t0x357385,\n\t0x36b345,\n\t0x2a1749,\n\t0x2ea486,\n\t0x282045,\n\t0x2859c7,\n\t0x2c5848,\n\t0x2dfc85,\n\t0x39d786,\n\t0x22cb08,\n\t0x31a0ca,\n\t0x24ab08,\n\t0x28cec7,\n\t0x2f3686,\n\t0x25e386,\n\t0x2003c3,\n\t0x20ef43,\n\t0x2c78c9,\n\t0x2bc549,\n\t0x2b5786,\n\t0x2f07c5,\n\t0x2d9d08,\n\t0x3137c8,\n\t0x370188,\n\t0x364c8b,\n\t0x2dc8c7,\n\t0x318e09,\n\t0x2962c8,\n\t0x380204,\n\t0x3ca748,\n\t0x28f4c9,\n\t0x2ae285,\n\t0x2f1887,\n\t0x266c45,\n\t0x283d88,\n\t0x29184b,\n\t0x2971d0,\n\t0x2a8b85,\n\t0x21258c,\n\t0x36f545,\n\t0x256943,\n\t0x317e46,\n\t0x2becc4,\n\t0x249146,\n\t0x29d287,\n\t0x22cb84,\n\t0x2440c8,\n\t0x30e14d,\n\t0x31fbc5,\n\t0x233e84,\n\t0x221144,\n\t0x291f49,\n\t0x2b10c8,\n\t0x32d007,\n\t0x231ec8,\n\t0x284648,\n\t0x27dd45,\n\t0x228347,\n\t0x27dcc7,\n\t0x31b7c7,\n\t0x26aa89,\n\t0x256709,\n\t0x25ed86,\n\t0x2dc046,\n\t0x285a86,\n\t0x353cc5,\n\t0x39cf84,\n\t0x3c54c6,\n\t0x3c99c6,\n\t0x27dd88,\n\t0x38a3cb,\n\t0x27ab87,\n\t0x21b6c4,\n\t0x31ac46,\n\t0x2e3a87,\n\t0x366805,\n\t0x38d7c5,\n\t0x22eb44,\n\t0x256686,\n\t0x3c5548,\n\t0x285009,\n\t0x24c086,\n\t0x288108,\n\t0x2d0806,\n\t0x356608,\n\t0x2cf94c,\n\t0x27dc06,\n\t0x29804d,\n\t0x2984cb,\n\t0x29efc5,\n\t0x202087,\n\t0x376886,\n\t0x32acc8,\n\t0x25ee09,\n\t0x24d348,\n\t0x3cc205,\n\t0x24b807,\n\t0x283548,\n\t0x2d9689,\n\t0x2cd546,\n\t0x260c0a,\n\t0x32aa48,\n\t0x24d18b,\n\t0x2d45cc,\n\t0x27a088,\n\t0x27fe06,\n\t0x227d48,\n\t0x319d47,\n\t0x203ec9,\n\t0x33a8cd,\n\t0x298906,\n\t0x2d9e88,\n\t0x3badc9,\n\t0x2bdd88,\n\t0x286a48,\n\t0x2c008c,\n\t0x2c1087,\n\t0x2c1e07,\n\t0x26a8c5,\n\t0x2b3447,\n\t0x2c5708,\n\t0x2b6486,\n\t0x24bf0c,\n\t0x2f8348,\n\t0x2cfdc8,\n\t0x26d146,\n\t0x389fc7,\n\t0x25ef84,\n\t0x26ce88,\n\t0x373b8c,\n\t0x287b4c,\n\t0x221485,\n\t0x3c47c7,\n\t0x255846,\n\t0x389f46,\n\t0x35c9c8,\n\t0x379f84,\n\t0x2eca4b,\n\t0x27a6cb,\n\t0x2f3686,\n\t0x30dfc7,\n\t0x3673c5,\n\t0x272585,\n\t0x2ecb86,\n\t0x286205,\n\t0x332745,\n\t0x2cbc87,\n\t0x2823c9,\n\t0x2b08c4,\n\t0x25d405,\n\t0x2e8b85,\n\t0x2d1a88,\n\t0x2e5e85,\n\t0x2b75c9,\n\t0x330847,\n\t0x33084b,\n\t0x2fd006,\n\t0x36efc9,\n\t0x34dc88,\n\t0x29e305,\n\t0x31b8c8,\n\t0x256748,\n\t0x25ce47,\n\t0x24bd07,\n\t0x284d49,\n\t0x304147,\n\t0x2ace09,\n\t0x2b214c,\n\t0x2b5788,\n\t0x2d0d89,\n\t0x2d1207,\n\t0x284709,\n\t0x256d07,\n\t0x2d46c8,\n\t0x3b5b85,\n\t0x2bb946,\n\t0x2c0708,\n\t0x31f788,\n\t0x2c75c9,\n\t0x332787,\n\t0x252cc5,\n\t0x247d09,\n\t0x36a986,\n\t0x291004,\n\t0x30c086,\n\t0x323648,\n\t0x3a6047,\n\t0x38a5c8,\n\t0x214009,\n\t0x30abc7,\n\t0x29f3c6,\n\t0x202144,\n\t0x201b09,\n\t0x2281c8,\n\t0x26d007,\n\t0x37e146,\n\t0x38a306,\n\t0x23dfc4,\n\t0x3bb446,\n\t0x202683,\n\t0x32c6c9,\n\t0x32cb06,\n\t0x211ec5,\n\t0x29f906,\n\t0x2cc205,\n\t0x2839c8,\n\t0x319c07,\n\t0x39b7c6,\n\t0x30c346,\n\t0x34cd88,\n\t0x2a18c7,\n\t0x298945,\n\t0x29c748,\n\t0x3c00c8,\n\t0x32aa48,\n\t0x36f405,\n\t0x2bb9c6,\n\t0x281309,\n\t0x352784,\n\t0x2cc08b,\n\t0x26ef4b,\n\t0x323149,\n\t0x202703,\n\t0x259745,\n\t0x22d986,\n\t0x382388,\n\t0x332f44,\n\t0x335486,\n\t0x203009,\n\t0x2e2dc5,\n\t0x2cbbc6,\n\t0x335906,\n\t0x211e04,\n\t0x2141ca,\n\t0x211e08,\n\t0x31f786,\n\t0x2b9a85,\n\t0x255b07,\n\t0x357247,\n\t0x365944,\n\t0x26f187,\n\t0x268044,\n\t0x268046,\n\t0x217a83,\n\t0x26aa85,\n\t0x391c05,\n\t0x363648,\n\t0x27fa05,\n\t0x27d949,\n\t0x26ccc7,\n\t0x26cccb,\n\t0x2a334c,\n\t0x2a394a,\n\t0x33a787,\n\t0x200a03,\n\t0x27b988,\n\t0x36f5c5,\n\t0x2dfd05,\n\t0x351d44,\n\t0x2d45c6,\n\t0x27c4c6,\n\t0x3bb487,\n\t0x24728b,\n\t0x223a44,\n\t0x2d89c4,\n\t0x2c5fc4,\n\t0x2cb986,\n\t0x22cb84,\n\t0x2bb7c8,\n\t0x351b45,\n\t0x270805,\n\t0x3700c7,\n\t0x202189,\n\t0x357005,\n\t0x39328a,\n\t0x241649,\n\t0x2b01ca,\n\t0x3362c9,\n\t0x379844,\n\t0x2e31c5,\n\t0x2de008,\n\t0x2fa70b,\n\t0x2a1185,\n\t0x2f52c6,\n\t0x242904,\n\t0x27de86,\n\t0x30aa49,\n\t0x2e3b87,\n\t0x3c0ec8,\n\t0x2a2906,\n\t0x2d2b07,\n\t0x283e88,\n\t0x393806,\n\t0x202a44,\n\t0x383187,\n\t0x36e285,\n\t0x3847c7,\n\t0x2179c4,\n\t0x376806,\n\t0x2eaf48,\n\t0x298688,\n\t0x2ef247,\n\t0x26ec88,\n\t0x296a85,\n\t0x202544,\n\t0x34ba48,\n\t0x26ed84,\n\t0x21b005,\n\t0x301f04,\n\t0x2ab247,\n\t0x28a507,\n\t0x284848,\n\t0x2d24c6,\n\t0x27f985,\n\t0x27d748,\n\t0x24ad08,\n\t0x2a0ec9,\n\t0x26f246,\n\t0x2318c8,\n\t0x2035ca,\n\t0x366888,\n\t0x2e9385,\n\t0x21f746,\n\t0x241508,\n\t0x24b8ca,\n\t0x226cc7,\n\t0x288745,\n\t0x291208,\n\t0x2d9244,\n\t0x2d0986,\n\t0x2c2188,\n\t0x2025c6,\n\t0x368c48,\n\t0x290c47,\n\t0x3d1f06,\n\t0x2b5bc4,\n\t0x2a74c7,\n\t0x2b1484,\n\t0x30aa07,\n\t0x2cd20d,\n\t0x2303c5,\n\t0x2fa28b,\n\t0x287dc6,\n\t0x252988,\n\t0x244084,\n\t0x2f1006,\n\t0x280906,\n\t0x228087,\n\t0x297d0d,\n\t0x246f07,\n\t0x2b1dc8,\n\t0x2851c5,\n\t0x35df48,\n\t0x2c6f06,\n\t0x296b08,\n\t0x23c346,\n\t0x375107,\n\t0x258c89,\n\t0x3898c7,\n\t0x289708,\n\t0x2764c5,\n\t0x22b188,\n\t0x389e85,\n\t0x3005c5,\n\t0x336545,\n\t0x221703,\n\t0x285d44,\n\t0x25e3c5,\n\t0x391009,\n\t0x37e046,\n\t0x2e3848,\n\t0x24bac5,\n\t0x2b3307,\n\t0x2a92ca,\n\t0x2cbb09,\n\t0x2c3f0a,\n\t0x2d5188,\n\t0x2a7a8c,\n\t0x285a4d,\n\t0x309543,\n\t0x368b48,\n\t0x2083c5,\n\t0x319e86,\n\t0x3ca186,\n\t0x355705,\n\t0x2258c9,\n\t0x200985,\n\t0x27d748,\n\t0x25a5c6,\n\t0x358fc6,\n\t0x2a2109,\n\t0x3ab547,\n\t0x291b06,\n\t0x2a9248,\n\t0x372408,\n\t0x2e2947,\n\t0x2bf7ce,\n\t0x2c7145,\n\t0x2d9585,\n\t0x2024c8,\n\t0x3018c7,\n\t0x203582,\n\t0x2bfc04,\n\t0x24904a,\n\t0x26d0c8,\n\t0x256886,\n\t0x299b48,\n\t0x214606,\n\t0x372148,\n\t0x2adf88,\n\t0x300584,\n\t0x2b36c5,\n\t0x768244,\n\t0x768244,\n\t0x768244,\n\t0x202303,\n\t0x38a186,\n\t0x27dc06,\n\t0x29ec8c,\n\t0x202503,\n\t0x2179c6,\n\t0x22af04,\n\t0x289248,\n\t0x202e45,\n\t0x249146,\n\t0x2bd8c8,\n\t0x2d6306,\n\t0x39b746,\n\t0x39d488,\n\t0x2d6fc7,\n\t0x303f09,\n\t0x354d4a,\n\t0x202e84,\n\t0x268085,\n\t0x318b45,\n\t0x2ca206,\n\t0x233e86,\n\t0x29d9c6,\n\t0x301586,\n\t0x304044,\n\t0x30404b,\n\t0x267b04,\n\t0x255b85,\n\t0x2ad285,\n\t0x2a9686,\n\t0x206a88,\n\t0x285907,\n\t0x32ca84,\n\t0x22b5c3,\n\t0x2d8d45,\n\t0x267e87,\n\t0x28580b,\n\t0x363547,\n\t0x2bd7c8,\n\t0x2b3807,\n\t0x26bf06,\n\t0x27ed48,\n\t0x29dbcb,\n\t0x30f9c6,\n\t0x213489,\n\t0x29dd45,\n\t0x3208c3,\n\t0x2cbbc6,\n\t0x290b48,\n\t0x202a83,\n\t0x267f83,\n\t0x283e86,\n\t0x214606,\n\t0x37a88a,\n\t0x27fe45,\n\t0x28074b,\n\t0x29f84b,\n\t0x206983,\n\t0x2196c3,\n\t0x2afc44,\n\t0x2143c7,\n\t0x27a084,\n\t0x289244,\n\t0x3bb084,\n\t0x366b88,\n\t0x2b99c8,\n\t0x20eec9,\n\t0x2ca048,\n\t0x3367c7,\n\t0x23a346,\n\t0x2e348f,\n\t0x2c7286,\n\t0x2d48c4,\n\t0x2b980a,\n\t0x267d87,\n\t0x2b1586,\n\t0x291049,\n\t0x20ee45,\n\t0x363785,\n\t0x20ef86,\n\t0x22b2c3,\n\t0x2d9289,\n\t0x22ae06,\n\t0x213dc9,\n\t0x39f586,\n\t0x26aa85,\n\t0x221885,\n\t0x203d83,\n\t0x214508,\n\t0x32d1c7,\n\t0x365a44,\n\t0x2890c8,\n\t0x38ee84,\n\t0x308186,\n\t0x317e46,\n\t0x23fb06,\n\t0x2d6c89,\n\t0x2dfc85,\n\t0x298a06,\n\t0x38f2c9,\n\t0x2c5406,\n\t0x2e3586,\n\t0x3a4e86,\n\t0x27e4c5,\n\t0x301f06,\n\t0x375104,\n\t0x3b5b85,\n\t0x2c0704,\n\t0x2b2906,\n\t0x376984,\n\t0x204043,\n\t0x2883c5,\n\t0x2364c8,\n\t0x2e1887,\n\t0x332fc9,\n\t0x288648,\n\t0x299191,\n\t0x33598a,\n\t0x2f35c7,\n\t0x2e2406,\n\t0x22af04,\n\t0x2c0808,\n\t0x270088,\n\t0x29934a,\n\t0x2b738d,\n\t0x2a1086,\n\t0x39d586,\n\t0x2a7586,\n\t0x2cc687,\n\t0x2b1e85,\n\t0x3ccd47,\n\t0x289185,\n\t0x330984,\n\t0x2a7fc6,\n\t0x2d9bc7,\n\t0x2d8f8d,\n\t0x241447,\n\t0x37ec88,\n\t0x27da49,\n\t0x21f646,\n\t0x2cd4c5,\n\t0x23f1c4,\n\t0x323746,\n\t0x365846,\n\t0x26d246,\n\t0x29a3c8,\n\t0x227403,\n\t0x228083,\n\t0x375ac5,\n\t0x27fac6,\n\t0x2adf45,\n\t0x2a2b08,\n\t0x29d44a,\n\t0x319504,\n\t0x289248,\n\t0x2944c8,\n\t0x2a94c7,\n\t0x24bb89,\n\t0x2bd4c8,\n\t0x285087,\n\t0x3bb306,\n\t0x2025ca,\n\t0x3237c8,\n\t0x352409,\n\t0x2b1188,\n\t0x35af09,\n\t0x2e22c7,\n\t0x381ac5,\n\t0x364e86,\n\t0x2b6308,\n\t0x284008,\n\t0x294648,\n\t0x2f3788,\n\t0x255b85,\n\t0x212c44,\n\t0x234b08,\n\t0x242684,\n\t0x3360c4,\n\t0x26aa85,\n\t0x293347,\n\t0x201f49,\n\t0x227e87,\n\t0x203605,\n\t0x279e86,\n\t0x363046,\n\t0x2038c4,\n\t0x2a2446,\n\t0x27b604,\n\t0x2a5746,\n\t0x201d06,\n\t0x213ac6,\n\t0x3cc205,\n\t0x2a29c7,\n\t0x200a03,\n\t0x224a09,\n\t0x34cb88,\n\t0x284f04,\n\t0x284f0d,\n\t0x298788,\n\t0x314a48,\n\t0x352386,\n\t0x258d89,\n\t0x2cbb09,\n\t0x30a745,\n\t0x29d54a,\n\t0x270aca,\n\t0x28a6cc,\n\t0x28a846,\n\t0x27b386,\n\t0x2c7b06,\n\t0x3a00c9,\n\t0x31a0c6,\n\t0x2a1906,\n\t0x200a46,\n\t0x26ce88,\n\t0x24ab06,\n\t0x2d424b,\n\t0x2934c5,\n\t0x270805,\n\t0x27c145,\n\t0x30b106,\n\t0x202583,\n\t0x23fa86,\n\t0x2413c7,\n\t0x2c06c5,\n\t0x25c1c5,\n\t0x34ab45,\n\t0x3c8686,\n\t0x30a804,\n\t0x332146,\n\t0x2fac49,\n\t0x30af8c,\n\t0x3306c8,\n\t0x237544,\n\t0x301c06,\n\t0x287ec6,\n\t0x290b48,\n\t0x3137c8,\n\t0x30ae89,\n\t0x255b07,\n\t0x35a189,\n\t0x251a06,\n\t0x22c404,\n\t0x20bd04,\n\t0x283c84,\n\t0x283e88,\n\t0x201d8a,\n\t0x356f86,\n\t0x36b207,\n\t0x384a47,\n\t0x36f0c5,\n\t0x321544,\n\t0x28f486,\n\t0x2b1ec6,\n\t0x2456c3,\n\t0x34c9c7,\n\t0x3d2788,\n\t0x30a88a,\n\t0x30e408,\n\t0x3633c8,\n\t0x3769c5,\n\t0x29f0c5,\n\t0x27ac85,\n\t0x36f486,\n\t0x3a0446,\n\t0x30d385,\n\t0x32c909,\n\t0x32134c,\n\t0x27ad47,\n\t0x2993c8,\n\t0x25fb85,\n\t0x768244,\n\t0x2ed944,\n\t0x2ca884,\n\t0x21e586,\n\t0x2a074e,\n\t0x363807,\n\t0x2cc885,\n\t0x35270c,\n\t0x302007,\n\t0x2d9b47,\n\t0x355f49,\n\t0x21fd49,\n\t0x288745,\n\t0x34cb88,\n\t0x281309,\n\t0x32a905,\n\t0x2c0608,\n\t0x22af86,\n\t0x34bcc6,\n\t0x24ef04,\n\t0x28d648,\n\t0x21f803,\n\t0x2289c4,\n\t0x2d8dc5,\n\t0x399047,\n\t0x38b1c5,\n\t0x203489,\n\t0x2b4ecd,\n\t0x2e4346,\n\t0x22b604,\n\t0x31fd08,\n\t0x28220a,\n\t0x27b047,\n\t0x22d4c5,\n\t0x228a03,\n\t0x29fa0e,\n\t0x21460c,\n\t0x2ffc47,\n\t0x2a0907,\n\t0x217a03,\n\t0x31a105,\n\t0x2ca885,\n\t0x299f08,\n\t0x297809,\n\t0x237446,\n\t0x27a084,\n\t0x2f3506,\n\t0x2369cb,\n\t0x2db70c,\n\t0x39de47,\n\t0x2d4505,\n\t0x3bffc8,\n\t0x2e2705,\n\t0x2b9807,\n\t0x3357c7,\n\t0x241205,\n\t0x202583,\n\t0x366ec4,\n\t0x3a5f05,\n\t0x2b07c5,\n\t0x2b07c6,\n\t0x2c0e88,\n\t0x2d9bc7,\n\t0x3ca486,\n\t0x204146,\n\t0x336486,\n\t0x273989,\n\t0x228447,\n\t0x26d506,\n\t0x2db886,\n\t0x278e86,\n\t0x2a9045,\n\t0x20c806,\n\t0x364205,\n\t0x2e5f08,\n\t0x292c4b,\n\t0x28e546,\n\t0x384a84,\n\t0x3029c9,\n\t0x26ccc4,\n\t0x22af08,\n\t0x30c187,\n\t0x286944,\n\t0x2bbf88,\n\t0x2c1c04,\n\t0x2a9084,\n\t0x289005,\n\t0x31fc06,\n\t0x366ac7,\n\t0x206743,\n\t0x29f485,\n\t0x339204,\n\t0x2d95c6,\n\t0x30a7c8,\n\t0x373a85,\n\t0x292909,\n\t0x247f05,\n\t0x2179c8,\n\t0x281047,\n\t0x32cc08,\n\t0x2bb507,\n\t0x2fd449,\n\t0x27e586,\n\t0x33e986,\n\t0x200a44,\n\t0x2d8905,\n\t0x310b8c,\n\t0x27c147,\n\t0x27ce07,\n\t0x233ac8,\n\t0x2e4346,\n\t0x272784,\n\t0x3af304,\n\t0x284bc9,\n\t0x2c7c06,\n\t0x26ff47,\n\t0x2ce3c4,\n\t0x248cc6,\n\t0x3c9cc5,\n\t0x2d2007,\n\t0x2d41c6,\n\t0x260ac9,\n\t0x2ce947,\n\t0x296047,\n\t0x2a1f86,\n\t0x248c05,\n\t0x281ec8,\n\t0x22ac88,\n\t0x23a546,\n\t0x373ac5,\n\t0x377c86,\n\t0x202ac3,\n\t0x299d89,\n\t0x29d74e,\n\t0x2bb248,\n\t0x38ef88,\n\t0x23a34b,\n\t0x292b46,\n\t0x366504,\n\t0x285644,\n\t0x29d84a,\n\t0x212487,\n\t0x26d5c5,\n\t0x213489,\n\t0x2bf705,\n\t0x336107,\n\t0x24aa84,\n\t0x2aaa87,\n\t0x31e388,\n\t0x2e7606,\n\t0x38ecc9,\n\t0x2bd5ca,\n\t0x212406,\n\t0x2982c6,\n\t0x2ad205,\n\t0x39a605,\n\t0x35bf07,\n\t0x2482c8,\n\t0x3c9c08,\n\t0x300586,\n\t0x221905,\n\t0x233c0e,\n\t0x2bdc84,\n\t0x23a4c5,\n\t0x279809,\n\t0x2ea288,\n\t0x28ce06,\n\t0x29c24c,\n\t0x29d050,\n\t0x2a038f,\n\t0x2a1648,\n\t0x33a787,\n\t0x3cc205,\n\t0x25e3c5,\n\t0x366949,\n\t0x291409,\n\t0x2cd986,\n\t0x2a1207,\n\t0x2d8805,\n\t0x230349,\n\t0x349c06,\n\t0x319f0d,\n\t0x283b49,\n\t0x289244,\n\t0x2bafc8,\n\t0x234bc9,\n\t0x357146,\n\t0x27bb85,\n\t0x33e986,\n\t0x3c0d89,\n\t0x3656c8,\n\t0x20f505,\n\t0x2036c4,\n\t0x29c40b,\n\t0x357005,\n\t0x29c546,\n\t0x285d86,\n\t0x36a046,\n\t0x29234b,\n\t0x292a09,\n\t0x204085,\n\t0x3a5947,\n\t0x335906,\n\t0x252b06,\n\t0x2ca608,\n\t0x21b149,\n\t0x37ea4c,\n\t0x267c88,\n\t0x318b86,\n\t0x338b83,\n\t0x23b786,\n\t0x292185,\n\t0x280a88,\n\t0x221306,\n\t0x2d2248,\n\t0x2486c5,\n\t0x299505,\n\t0x35e388,\n\t0x3722c7,\n\t0x3ca0c7,\n\t0x3bb487,\n\t0x31f608,\n\t0x2ca308,\n\t0x2b1946,\n\t0x2b2747,\n\t0x266a87,\n\t0x29204a,\n\t0x23ee83,\n\t0x30b106,\n\t0x201ec5,\n\t0x249044,\n\t0x27da49,\n\t0x2fd3c4,\n\t0x2e1904,\n\t0x29b644,\n\t0x2a090b,\n\t0x32d107,\n\t0x233e45,\n\t0x296788,\n\t0x279e86,\n\t0x279e88,\n\t0x27fd86,\n\t0x28d585,\n\t0x28d845,\n\t0x28ffc6,\n\t0x290908,\n\t0x290f88,\n\t0x27dc06,\n\t0x2965cf,\n\t0x299850,\n\t0x206245,\n\t0x200a03,\n\t0x22c4c5,\n\t0x318d48,\n\t0x291309,\n\t0x32aa48,\n\t0x38eb48,\n\t0x23da88,\n\t0x32d1c7,\n\t0x279b49,\n\t0x2d2448,\n\t0x290804,\n\t0x29b4c8,\n\t0x2d1b49,\n\t0x2b2dc7,\n\t0x29b444,\n\t0x227f48,\n\t0x2a278a,\n\t0x2e62c6,\n\t0x2a1086,\n\t0x26f109,\n\t0x29d287,\n\t0x2cf008,\n\t0x223148,\n\t0x2c6888,\n\t0x38f705,\n\t0x216385,\n\t0x270805,\n\t0x2ca845,\n\t0x397ec7,\n\t0x202585,\n\t0x2c06c5,\n\t0x2754c6,\n\t0x32a987,\n\t0x2fa647,\n\t0x2a2a86,\n\t0x2d56c5,\n\t0x29c546,\n\t0x27ba45,\n\t0x2d8688,\n\t0x2ffac4,\n\t0x2c5486,\n\t0x32ec04,\n\t0x2da008,\n\t0x3047ca,\n\t0x27e30c,\n\t0x247485,\n\t0x2cc746,\n\t0x37ec06,\n\t0x29ae46,\n\t0x318c04,\n\t0x3c9f85,\n\t0x27f707,\n\t0x29d309,\n\t0x2cbf47,\n\t0x768244,\n\t0x768244,\n\t0x32cf85,\n\t0x2d3344,\n\t0x29bc0a,\n\t0x279d06,\n\t0x27ef84,\n\t0x3c4745,\n\t0x393d05,\n\t0x2b1dc4,\n\t0x2859c7,\n\t0x247e87,\n\t0x2cb988,\n\t0x368ec8,\n\t0x20f509,\n\t0x270748,\n\t0x29bdcb,\n\t0x2b02c4,\n\t0x252c05,\n\t0x2820c5,\n\t0x3bb409,\n\t0x21b149,\n\t0x3028c8,\n\t0x267b08,\n\t0x2a9684,\n\t0x287f05,\n\t0x201dc3,\n\t0x2ca1c5,\n\t0x298a86,\n\t0x29764c,\n\t0x22ad06,\n\t0x27ba86,\n\t0x28d085,\n\t0x3c8708,\n\t0x3ce446,\n\t0x2e2586,\n\t0x2a1086,\n\t0x2b0b0c,\n\t0x26d404,\n\t0x3365ca,\n\t0x28cfc8,\n\t0x297487,\n\t0x339106,\n\t0x237507,\n\t0x2f3105,\n\t0x37e146,\n\t0x361d86,\n\t0x378cc7,\n\t0x2bd2c4,\n\t0x2ab345,\n\t0x279804,\n\t0x330a07,\n\t0x279a48,\n\t0x27b20a,\n\t0x2833c7,\n\t0x2a8c47,\n\t0x33a707,\n\t0x2e2849,\n\t0x29764a,\n\t0x22c3c3,\n\t0x2e1845,\n\t0x213b03,\n\t0x3bb0c9,\n\t0x375388,\n\t0x357387,\n\t0x32ab49,\n\t0x22ad86,\n\t0x3b5c48,\n\t0x346b05,\n\t0x24ae0a,\n\t0x216709,\n\t0x24cf49,\n\t0x3ce307,\n\t0x270189,\n\t0x2139c8,\n\t0x378e86,\n\t0x2cc908,\n\t0x3d03c7,\n\t0x304147,\n\t0x241647,\n\t0x2eadc8,\n\t0x301a86,\n\t0x2a2545,\n\t0x27f707,\n\t0x297dc8,\n\t0x32eb84,\n\t0x2fb244,\n\t0x291a07,\n\t0x2ae307,\n\t0x28118a,\n\t0x378e06,\n\t0x35dd4a,\n\t0x2bfb47,\n\t0x2bda47,\n\t0x2ab404,\n\t0x2acec4,\n\t0x2d1f06,\n\t0x31af84,\n\t0x31af8c,\n\t0x34de45,\n\t0x21af89,\n\t0x2b0044,\n\t0x2b1e85,\n\t0x282188,\n\t0x27f145,\n\t0x393286,\n\t0x230244,\n\t0x2ebaca,\n\t0x2c99c6,\n\t0x29cdca,\n\t0x218587,\n\t0x28a285,\n\t0x22b2c5,\n\t0x36f10a,\n\t0x290a85,\n\t0x2a0f86,\n\t0x242684,\n\t0x2afdc6,\n\t0x35bfc5,\n\t0x2213c6,\n\t0x2ef24c,\n\t0x2b0d8a,\n\t0x270bc4,\n\t0x23a346,\n\t0x29d287,\n\t0x2d4144,\n\t0x26ce88,\n\t0x2f51c6,\n\t0x3848c9,\n\t0x2df7c9,\n\t0x2b5889,\n\t0x2cc246,\n\t0x3d04c6,\n\t0x2cca47,\n\t0x32c848,\n\t0x3d02c9,\n\t0x32d107,\n\t0x296906,\n\t0x2d2b87,\n\t0x2a7445,\n\t0x2bdc84,\n\t0x2cc607,\n\t0x266c45,\n\t0x288f45,\n\t0x3732c7,\n\t0x2410c8,\n\t0x3bff46,\n\t0x298c0d,\n\t0x29a10f,\n\t0x29f84d,\n\t0x203044,\n\t0x2365c6,\n\t0x2d7588,\n\t0x200a05,\n\t0x292208,\n\t0x25cd0a,\n\t0x289244,\n\t0x236c06,\n\t0x2d4947,\n\t0x223a47,\n\t0x2d7089,\n\t0x2cc8c5,\n\t0x2b1dc4,\n\t0x2b360a,\n\t0x2bd089,\n\t0x270287,\n\t0x298ec6,\n\t0x357146,\n\t0x287e46,\n\t0x383246,\n\t0x2d694f,\n\t0x2d7449,\n\t0x24ab06,\n\t0x38b8c6,\n\t0x32bf09,\n\t0x2b2847,\n\t0x209343,\n\t0x296b86,\n\t0x20ef43,\n\t0x3555c8,\n\t0x2d29c7,\n\t0x2a1849,\n\t0x317cc8,\n\t0x3ca208,\n\t0x3328c6,\n\t0x2ce209,\n\t0x3a6805,\n\t0x23b6c4,\n\t0x381b87,\n\t0x3a0145,\n\t0x203044,\n\t0x233f08,\n\t0x212744,\n\t0x2b2587,\n\t0x36bb06,\n\t0x3bcb45,\n\t0x2b1188,\n\t0x35700b,\n\t0x321887,\n\t0x36f386,\n\t0x2c7304,\n\t0x366486,\n\t0x26aa85,\n\t0x266c45,\n\t0x281c49,\n\t0x2855c9,\n\t0x2cc004,\n\t0x3041c5,\n\t0x23a385,\n\t0x24ac86,\n\t0x34cc88,\n\t0x2bf0c6,\n\t0x3d25cb,\n\t0x38660a,\n\t0x2bb605,\n\t0x28d8c6,\n\t0x319205,\n\t0x275405,\n\t0x2a9107,\n\t0x30b388,\n\t0x2707c4,\n\t0x2496c6,\n\t0x291006,\n\t0x213b87,\n\t0x320884,\n\t0x280906,\n\t0x2f1a85,\n\t0x2f1a89,\n\t0x210a44,\n\t0x3216c9,\n\t0x27dc06,\n\t0x2c1148,\n\t0x23a385,\n\t0x384b45,\n\t0x2213c6,\n\t0x37e949,\n\t0x21fd49,\n\t0x27bb06,\n\t0x2ea388,\n\t0x2b5008,\n\t0x3191c4,\n\t0x2b4104,\n\t0x2b4108,\n\t0x2b8ac8,\n\t0x35a289,\n\t0x298a06,\n\t0x2a1086,\n\t0x3381cd,\n\t0x335486,\n\t0x2cf809,\n\t0x367f05,\n\t0x20ef86,\n\t0x2c6a08,\n\t0x332085,\n\t0x266ac4,\n\t0x26aa85,\n\t0x284a48,\n\t0x29b9c9,\n\t0x2798c4,\n\t0x376806,\n\t0x27f00a,\n\t0x2ffb48,\n\t0x281309,\n\t0x38be0a,\n\t0x32aac6,\n\t0x29a2c8,\n\t0x2b95c5,\n\t0x28d248,\n\t0x2f3185,\n\t0x22ac49,\n\t0x387089,\n\t0x237482,\n\t0x29dd45,\n\t0x2722c6,\n\t0x27db47,\n\t0x38cf85,\n\t0x31e286,\n\t0x315488,\n\t0x2e4346,\n\t0x2ddec9,\n\t0x27cf06,\n\t0x2ca488,\n\t0x2202c5,\n\t0x3ad446,\n\t0x375208,\n\t0x283e88,\n\t0x2e21c8,\n\t0x2e8988,\n\t0x20c804,\n\t0x266083,\n\t0x2de104,\n\t0x2835c6,\n\t0x2a7484,\n\t0x38eec7,\n\t0x2e2489,\n\t0x2c5fc5,\n\t0x223146,\n\t0x296b86,\n\t0x2c0ccb,\n\t0x2b14c6,\n\t0x2b8dc6,\n\t0x2c5588,\n\t0x2ed386,\n\t0x2b7683,\n\t0x209fc3,\n\t0x2bdc84,\n\t0x2317c5,\n\t0x2d0647,\n\t0x279a48,\n\t0x279a4f,\n\t0x27f60b,\n\t0x34ca88,\n\t0x376886,\n\t0x34cd8e,\n\t0x2213c3,\n\t0x2d05c4,\n\t0x2b1445,\n\t0x2b1c46,\n\t0x28f58b,\n\t0x293406,\n\t0x22cb89,\n\t0x3bcb45,\n\t0x254548,\n\t0x205288,\n\t0x21fc0c,\n\t0x2a0946,\n\t0x2ca206,\n\t0x2f07c5,\n\t0x2894c8,\n\t0x27e305,\n\t0x380208,\n\t0x29c5ca,\n\t0x29fc89,\n\t0x768244,\n\t0x2000c2,\n\t0x3f609302,\n\t0x200382,\n\t0x21e084,\n\t0x209382,\n\t0x229d44,\n\t0x203202,\n\t0x2543,\n\t0x2003c2,\n\t0x201202,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x373a83,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x215c83,\n\t0x24b583,\n\t0x20cc03,\n\t0x28b004,\n\t0x209303,\n\t0x238084,\n\t0x2351c3,\n\t0x2da884,\n\t0x22b883,\n\t0x38d247,\n\t0x2287c3,\n\t0x202543,\n\t0x229188,\n\t0x24b583,\n\t0x2a538b,\n\t0x2f4483,\n\t0x3acb86,\n\t0x216a42,\n\t0x2ee5cb,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x24b583,\n\t0x220003,\n\t0x21bec3,\n\t0x2000c2,\n\t0xaf0c8,\n\t0x2220c5,\n\t0x266cc8,\n\t0x2fe488,\n\t0x209302,\n\t0x375785,\n\t0x329d47,\n\t0x2012c2,\n\t0x2442c7,\n\t0x200382,\n\t0x25f3c7,\n\t0x2b7e09,\n\t0x2b9188,\n\t0x2c6709,\n\t0x20dc02,\n\t0x269e87,\n\t0x23a1c4,\n\t0x329e07,\n\t0x386507,\n\t0x25dcc2,\n\t0x2287c3,\n\t0x204842,\n\t0x203202,\n\t0x2003c2,\n\t0x202882,\n\t0x200902,\n\t0x201202,\n\t0x2a9b05,\n\t0x33d805,\n\t0x9302,\n\t0x351c3,\n\t0x209303,\n\t0x2351c3,\n\t0x206843,\n\t0x22b883,\n\t0x202b03,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0xd703,\n\t0x101,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x20f8c3,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0x215943,\n\t0x42871c46,\n\t0x9e183,\n\t0xc7545,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0x6102,\n\t0xaf0c8,\n\t0x2543,\n\t0xe6243,\n\t0x48284,\n\t0xe2b05,\n\t0x2000c2,\n\t0x3aec84,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x243583,\n\t0x230105,\n\t0x20f8c3,\n\t0x216c03,\n\t0x215c83,\n\t0x24fb43,\n\t0x24b583,\n\t0x201203,\n\t0x200b43,\n\t0x20ab43,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209302,\n\t0x24b583,\n\t0xaf0c8,\n\t0x22b883,\n\t0xe6243,\n\t0xaf0c8,\n\t0xe6243,\n\t0x2b5b43,\n\t0x209303,\n\t0x2320c4,\n\t0x2351c3,\n\t0x22b883,\n\t0x206982,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x206982,\n\t0x209383,\n\t0x215c83,\n\t0x24b583,\n\t0x2ec143,\n\t0x201203,\n\t0x2000c2,\n\t0x209302,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x3acb85,\n\t0x151746,\n\t0x28b004,\n\t0x216a42,\n\t0xaf0c8,\n\t0x2000c2,\n\t0xf6d85,\n\t0x19908,\n\t0x1943,\n\t0x209302,\n\t0x46c92e86,\n\t0x1cb04,\n\t0xe4f8b,\n\t0x3afc6,\n\t0x288c7,\n\t0x2351c3,\n\t0x4cc88,\n\t0x22b883,\n\t0x11a745,\n\t0x168004,\n\t0x22afc3,\n\t0x518c7,\n\t0xdde04,\n\t0x215c83,\n\t0x7bc06,\n\t0xe6084,\n\t0xe6243,\n\t0x24b583,\n\t0x2f6044,\n\t0x12d707,\n\t0x151349,\n\t0xe4d48,\n\t0xf7484,\n\t0x40386,\n\t0xd7c8,\n\t0x13fd05,\n\t0xa109,\n\t0xf6d85,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x202543,\n\t0x24b583,\n\t0x2f4483,\n\t0x216a42,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x20f703,\n\t0x226004,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x2da884,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x3acb86,\n\t0x2351c3,\n\t0x22b883,\n\t0x41f03,\n\t0xe6243,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0xf6d85,\n\t0x288c7,\n\t0xaf0c8,\n\t0x22b883,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x49a09303,\n\t0x2351c3,\n\t0x215c83,\n\t0x24b583,\n\t0xaf0c8,\n\t0x2000c2,\n\t0x209302,\n\t0x209303,\n\t0x22b883,\n\t0x215c83,\n\t0x2003c2,\n\t0x24b583,\n\t0x33b587,\n\t0x31bb4b,\n\t0x204243,\n\t0x2cd648,\n\t0x32c5c7,\n\t0x210f06,\n\t0x209d85,\n\t0x3758c9,\n\t0x228548,\n\t0x37dc09,\n\t0x3a7cd0,\n\t0x37dc0b,\n\t0x2f2249,\n\t0x202943,\n\t0x2756c9,\n\t0x233486,\n\t0x23348c,\n\t0x222188,\n\t0x3ce148,\n\t0x3b7049,\n\t0x35308e,\n\t0x2b7bcb,\n\t0x3650cc,\n\t0x203ac3,\n\t0x28f18c,\n\t0x203ac9,\n\t0x23ec87,\n\t0x23510c,\n\t0x3c790a,\n\t0x243644,\n\t0x24d60d,\n\t0x28f048,\n\t0x20cc0d,\n\t0x295106,\n\t0x28b00b,\n\t0x3514c9,\n\t0x38bb47,\n\t0x3674c6,\n\t0x3cc7c9,\n\t0x30a3ca,\n\t0x328608,\n\t0x2f4084,\n\t0x341187,\n\t0x245c87,\n\t0x2ce5c4,\n\t0x2e54c4,\n\t0x398549,\n\t0x30f809,\n\t0x217f88,\n\t0x20d385,\n\t0x20db45,\n\t0x20b1c6,\n\t0x24d4c9,\n\t0x25cf8d,\n\t0x2f53c8,\n\t0x20b0c7,\n\t0x209e08,\n\t0x303cc6,\n\t0x23cc44,\n\t0x2a3f45,\n\t0x3d01c6,\n\t0x3d1c04,\n\t0x2039c7,\n\t0x20568a,\n\t0x20f444,\n\t0x212346,\n\t0x213109,\n\t0x21310f,\n\t0x2136cd,\n\t0x214906,\n\t0x219510,\n\t0x219906,\n\t0x219e87,\n\t0x21a747,\n\t0x21a74f,\n\t0x21b7c9,\n\t0x224546,\n\t0x224c47,\n\t0x224c48,\n\t0x225009,\n\t0x3bcc08,\n\t0x2e9007,\n\t0x2220c3,\n\t0x22e706,\n\t0x377088,\n\t0x35334a,\n\t0x3c5e49,\n\t0x21b583,\n\t0x329c46,\n\t0x24950a,\n\t0x290507,\n\t0x23eaca,\n\t0x312d4e,\n\t0x21b906,\n\t0x29df47,\n\t0x21f9c6,\n\t0x203b86,\n\t0x21618b,\n\t0x221aca,\n\t0x2ab74d,\n\t0x3d0587,\n\t0x269448,\n\t0x269449,\n\t0x26944f,\n\t0x33314c,\n\t0x280d09,\n\t0x2e148e,\n\t0x38d34a,\n\t0x2b9e46,\n\t0x322786,\n\t0x332bcc,\n\t0x334d0c,\n\t0x345988,\n\t0x3897c7,\n\t0x2d9a45,\n\t0x293204,\n\t0x30fc8e,\n\t0x265dc4,\n\t0x3ca9c7,\n\t0x3cba4a,\n\t0x22db14,\n\t0x22e14f,\n\t0x21a908,\n\t0x22e5c8,\n\t0x33f6cd,\n\t0x33f6ce,\n\t0x22e889,\n\t0x2307c8,\n\t0x2307cf,\n\t0x234e0c,\n\t0x234e0f,\n\t0x236307,\n\t0x2388ca,\n\t0x24680b,\n\t0x239a48,\n\t0x23b907,\n\t0x26014d,\n\t0x331686,\n\t0x24d7c6,\n\t0x23f909,\n\t0x2a78c8,\n\t0x244c48,\n\t0x244c4e,\n\t0x31bc47,\n\t0x246ac5,\n\t0x248045,\n\t0x204504,\n\t0x2111c6,\n\t0x217e88,\n\t0x30f003,\n\t0x2f4dce,\n\t0x260508,\n\t0x37e30b,\n\t0x311d47,\n\t0x3003c5,\n\t0x28f306,\n\t0x2ac547,\n\t0x2fb7c8,\n\t0x33fb09,\n\t0x331905,\n\t0x288408,\n\t0x227006,\n\t0x3a944a,\n\t0x30fb89,\n\t0x2351c9,\n\t0x2351cb,\n\t0x368908,\n\t0x2ce489,\n\t0x20d446,\n\t0x3912ca,\n\t0x20684a,\n\t0x238acc,\n\t0x365d07,\n\t0x2c650a,\n\t0x32dbcb,\n\t0x32dbd9,\n\t0x31ce88,\n\t0x3acc05,\n\t0x260306,\n\t0x26bb89,\n\t0x38db06,\n\t0x28c28a,\n\t0x228746,\n\t0x223dc4,\n\t0x2c868d,\n\t0x30f447,\n\t0x223dc9,\n\t0x24b085,\n\t0x24c208,\n\t0x24ca49,\n\t0x24ce84,\n\t0x24e007,\n\t0x24e008,\n\t0x24e307,\n\t0x2685c8,\n\t0x251ec7,\n\t0x204305,\n\t0x259b8c,\n\t0x25a3c9,\n\t0x2d144a,\n\t0x3ab3c9,\n\t0x2757c9,\n\t0x38b68c,\n\t0x25e88b,\n\t0x25f6c8,\n\t0x260908,\n\t0x2643c4,\n\t0x286608,\n\t0x2874c9,\n\t0x3c79c7,\n\t0x213346,\n\t0x29b807,\n\t0x28e889,\n\t0x36700b,\n\t0x29acc7,\n\t0x3cc5c7,\n\t0x2186c7,\n\t0x20cb84,\n\t0x20cb85,\n\t0x2da585,\n\t0x3510cb,\n\t0x3b4944,\n\t0x2badc8,\n\t0x2f86ca,\n\t0x2270c7,\n\t0x3c2907,\n\t0x28e0d2,\n\t0x2a5646,\n\t0x231a46,\n\t0x371cce,\n\t0x2a6106,\n\t0x294348,\n\t0x294acf,\n\t0x20cfc8,\n\t0x39c2c8,\n\t0x2c17ca,\n\t0x2c17d1,\n\t0x2a2d0e,\n\t0x20104a,\n\t0x20104c,\n\t0x2309c7,\n\t0x2309d0,\n\t0x3c9a48,\n\t0x2a2f05,\n\t0x2acbca,\n\t0x3d1c4c,\n\t0x296c4d,\n\t0x3066c6,\n\t0x3066c7,\n\t0x3066cc,\n\t0x39068c,\n\t0x21920c,\n\t0x2aadcb,\n\t0x38fb44,\n\t0x26f284,\n\t0x3991c9,\n\t0x3af387,\n\t0x3a26c9,\n\t0x206689,\n\t0x3bd507,\n\t0x3c7786,\n\t0x3c7789,\n\t0x2ae4c3,\n\t0x2e444a,\n\t0x376f47,\n\t0x38accb,\n\t0x2ab5ca,\n\t0x23a244,\n\t0x3b6286,\n\t0x283649,\n\t0x31ae04,\n\t0x34df0a,\n\t0x36f685,\n\t0x2be085,\n\t0x2be08d,\n\t0x2be3ce,\n\t0x2de245,\n\t0x339886,\n\t0x3ac787,\n\t0x259e0a,\n\t0x37bd46,\n\t0x2eb504,\n\t0x3053c7,\n\t0x2659cb,\n\t0x303d87,\n\t0x228b44,\n\t0x284246,\n\t0x28424d,\n\t0x2dcdcc,\n\t0x215b46,\n\t0x2f55ca,\n\t0x335186,\n\t0x23f2c8,\n\t0x237ec7,\n\t0x24334a,\n\t0x362cc6,\n\t0x280983,\n\t0x2b9f46,\n\t0x3c4288,\n\t0x39934a,\n\t0x286bc7,\n\t0x286bc8,\n\t0x2d25c4,\n\t0x28d3c7,\n\t0x36aa08,\n\t0x299548,\n\t0x2b1a48,\n\t0x3bb5ca,\n\t0x2e1305,\n\t0x209387,\n\t0x23ba53,\n\t0x258246,\n\t0x20fac8,\n\t0x21d849,\n\t0x244188,\n\t0x33294b,\n\t0x3ca588,\n\t0x265b04,\n\t0x35e486,\n\t0x323f06,\n\t0x31fa49,\n\t0x2c4207,\n\t0x259c88,\n\t0x2996c6,\n\t0x3731c4,\n\t0x256345,\n\t0x2ce788,\n\t0x25714a,\n\t0x2c8308,\n\t0x2cf546,\n\t0x29a4ca,\n\t0x2b0948,\n\t0x2d3f48,\n\t0x2d4b08,\n\t0x2d5386,\n\t0x2d7786,\n\t0x3aae8c,\n\t0x2d7d50,\n\t0x2a0cc5,\n\t0x20cdc8,\n\t0x330310,\n\t0x20cdd0,\n\t0x3a7b4e,\n\t0x3aab0e,\n\t0x3aab14,\n\t0x3b058f,\n\t0x3b0946,\n\t0x200f11,\n\t0x374993,\n\t0x374e08,\n\t0x30b905,\n\t0x2cdb88,\n\t0x2ff9c5,\n\t0x2e5c0c,\n\t0x22a089,\n\t0x293049,\n\t0x22a507,\n\t0x3a9849,\n\t0x35a547,\n\t0x301d86,\n\t0x2a3d47,\n\t0x21a485,\n\t0x20d743,\n\t0x30f1c9,\n\t0x25c649,\n\t0x241f03,\n\t0x38ce84,\n\t0x275b0d,\n\t0x35c0cf,\n\t0x373205,\n\t0x34b186,\n\t0x224087,\n\t0x221f07,\n\t0x3c12c6,\n\t0x3c12cb,\n\t0x2a3b05,\n\t0x25c406,\n\t0x303247,\n\t0x2525c9,\n\t0x386c06,\n\t0x30dec5,\n\t0x20478b,\n\t0x216606,\n\t0x35ac45,\n\t0x24ed88,\n\t0x2b4cc8,\n\t0x2aec0c,\n\t0x2aec10,\n\t0x2ae8c9,\n\t0x308687,\n\t0x2be94b,\n\t0x2fa146,\n\t0x2e8eca,\n\t0x2e9c0b,\n\t0x2eaa0a,\n\t0x2eac86,\n\t0x2ec005,\n\t0x32c4c6,\n\t0x27a2c8,\n\t0x22a5ca,\n\t0x33f35c,\n\t0x2f454c,\n\t0x2f4848,\n\t0x3acb85,\n\t0x38e587,\n\t0x30d1c6,\n\t0x282585,\n\t0x216046,\n\t0x3c1488,\n\t0x2bd307,\n\t0x352f88,\n\t0x25830a,\n\t0x22418c,\n\t0x20b3c9,\n\t0x2232c7,\n\t0x287a04,\n\t0x248106,\n\t0x39be4a,\n\t0x206785,\n\t0x22070c,\n\t0x222b08,\n\t0x328888,\n\t0x389acc,\n\t0x23140c,\n\t0x239d89,\n\t0x239fc7,\n\t0x24a50c,\n\t0x22a884,\n\t0x25150a,\n\t0x30604c,\n\t0x27418b,\n\t0x25b94b,\n\t0x25c006,\n\t0x264547,\n\t0x230c07,\n\t0x230c0f,\n\t0x307091,\n\t0x2deed2,\n\t0x26878d,\n\t0x26878e,\n\t0x268ace,\n\t0x3b0748,\n\t0x3b0752,\n\t0x271dc8,\n\t0x21de87,\n\t0x25034a,\n\t0x2a5f08,\n\t0x2a60c5,\n\t0x397d0a,\n\t0x219c87,\n\t0x2f6b44,\n\t0x21ae83,\n\t0x2385c5,\n\t0x2c1a47,\n\t0x306307,\n\t0x296e4e,\n\t0x351f8d,\n\t0x359549,\n\t0x247905,\n\t0x3a8083,\n\t0x207686,\n\t0x25d705,\n\t0x37e548,\n\t0x2b7089,\n\t0x260345,\n\t0x26034f,\n\t0x2e5087,\n\t0x209c05,\n\t0x31270a,\n\t0x381e46,\n\t0x26a389,\n\t0x2ff50c,\n\t0x3011c9,\n\t0x208446,\n\t0x2f84cc,\n\t0x338c86,\n\t0x304f48,\n\t0x305586,\n\t0x31d006,\n\t0x2b1644,\n\t0x31f9c3,\n\t0x2b3e8a,\n\t0x313a11,\n\t0x25560a,\n\t0x25ecc5,\n\t0x26fc07,\n\t0x258687,\n\t0x2f0d44,\n\t0x36ab0b,\n\t0x2b9008,\n\t0x2bb0c6,\n\t0x233b45,\n\t0x2654c4,\n\t0x24e709,\n\t0x2008c4,\n\t0x244a87,\n\t0x3013c5,\n\t0x3013c7,\n\t0x371f05,\n\t0x38f243,\n\t0x21dd48,\n\t0x3c9d4a,\n\t0x206743,\n\t0x22210a,\n\t0x3c1106,\n\t0x2600cf,\n\t0x3bc1c9,\n\t0x2f4d50,\n\t0x2f9ec8,\n\t0x2cfec9,\n\t0x297b47,\n\t0x2841cf,\n\t0x32af04,\n\t0x2da904,\n\t0x219786,\n\t0x35aa86,\n\t0x3a394a,\n\t0x27bec6,\n\t0x358687,\n\t0x313e48,\n\t0x314047,\n\t0x315247,\n\t0x31620a,\n\t0x31808b,\n\t0x3cce85,\n\t0x2deb08,\n\t0x230483,\n\t0x3b5f4c,\n\t0x344a8f,\n\t0x2d984d,\n\t0x25a807,\n\t0x359689,\n\t0x241947,\n\t0x25acc8,\n\t0x22dd0c,\n\t0x2b5308,\n\t0x271408,\n\t0x32e68e,\n\t0x341b14,\n\t0x342024,\n\t0x358d8a,\n\t0x37f04b,\n\t0x35a604,\n\t0x35a609,\n\t0x236c88,\n\t0x248845,\n\t0x30eb0a,\n\t0x260747,\n\t0x32c3c4,\n\t0x373a83,\n\t0x209303,\n\t0x238084,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x2d7d46,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x214e83,\n\t0x2000c2,\n\t0x373a83,\n\t0x209302,\n\t0x209303,\n\t0x238084,\n\t0x2351c3,\n\t0x22b883,\n\t0x20f8c3,\n\t0x2d7d46,\n\t0x215c83,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x2000c2,\n\t0x243003,\n\t0x209302,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x200dc2,\n\t0x200bc2,\n\t0x209302,\n\t0x209303,\n\t0x20e7c2,\n\t0x2005c2,\n\t0x21e084,\n\t0x229d44,\n\t0x26da42,\n\t0x226004,\n\t0x2003c2,\n\t0x24b583,\n\t0x214e83,\n\t0x25c006,\n\t0x22c682,\n\t0x202fc2,\n\t0x21ea82,\n\t0x4c20cfc3,\n\t0x4c601043,\n\t0x58fc6,\n\t0x58fc6,\n\t0x28b004,\n\t0x202543,\n\t0x17d0a,\n\t0x11c58c,\n\t0x14418c,\n\t0xc734d,\n\t0xf6d85,\n\t0x8bc0c,\n\t0x6dec7,\n\t0x10446,\n\t0x14a88,\n\t0x177c7,\n\t0x1c208,\n\t0x18588a,\n\t0x105887,\n\t0x4d28be45,\n\t0xdb3c9,\n\t0x3704b,\n\t0x1c5b8b,\n\t0x28948,\n\t0xfec9,\n\t0x8ca8a,\n\t0x1951ce,\n\t0x11e88d,\n\t0x1443f8b,\n\t0xdcc8a,\n\t0x1cb04,\n\t0x68306,\n\t0x4b6c8,\n\t0x73dc8,\n\t0x37307,\n\t0x1d405,\n\t0x93f07,\n\t0x7c709,\n\t0x11ae87,\n\t0x65e48,\n\t0x109dc9,\n\t0x4e484,\n\t0x4ff05,\n\t0x13c78e,\n\t0x2030d,\n\t0x28748,\n\t0x4d771486,\n\t0x4e171488,\n\t0xe4a08,\n\t0x13b790,\n\t0x54c4c,\n\t0x650c7,\n\t0x65c87,\n\t0x6acc7,\n\t0x71fc7,\n\t0xb182,\n\t0x16a547,\n\t0x21c8c,\n\t0x10d445,\n\t0x2d747,\n\t0xa5246,\n\t0xa63c9,\n\t0xa8148,\n\t0x55282,\n\t0x5c2,\n\t0x3dd0b,\n\t0xe6107,\n\t0x23bc9,\n\t0x47089,\n\t0xccd08,\n\t0xb0442,\n\t0x1a5b89,\n\t0xd180a,\n\t0x169f86,\n\t0xcb209,\n\t0xdcc07,\n\t0xdd349,\n\t0xde388,\n\t0xdf387,\n\t0xe1289,\n\t0xe6a45,\n\t0xe6dd0,\n\t0x12e1c6,\n\t0x178145,\n\t0x8ec87,\n\t0x1038cd,\n\t0x42a85,\n\t0x256c6,\n\t0xeeac7,\n\t0xf6058,\n\t0x11b208,\n\t0x169d8a,\n\t0x6702,\n\t0x5b70a,\n\t0x76c8d,\n\t0x3182,\n\t0xea746,\n\t0x8f848,\n\t0x4b248,\n\t0x6f949,\n\t0x1147c8,\n\t0x8000e,\n\t0x7687,\n\t0x10924d,\n\t0xfddc5,\n\t0x16a2c8,\n\t0x1ac3c8,\n\t0x109846,\n\t0x2a82,\n\t0xd8546,\n\t0x40386,\n\t0xc882,\n\t0x401,\n\t0x5f087,\n\t0x13ab83,\n\t0x4daf68c4,\n\t0x4de95903,\n\t0xc1,\n\t0x12946,\n\t0xc1,\n\t0x201,\n\t0x12946,\n\t0x13ab83,\n\t0x14f2005,\n\t0x243644,\n\t0x209303,\n\t0x24f544,\n\t0x21e084,\n\t0x215c83,\n\t0x21d705,\n\t0x215943,\n\t0x22d183,\n\t0x3c1245,\n\t0x20ab43,\n\t0x4f209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x200181,\n\t0x2287c3,\n\t0x229d44,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x201203,\n\t0xaf0c8,\n\t0x2000c2,\n\t0x373a83,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x2005c2,\n\t0x21e084,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x215c83,\n\t0x202543,\n\t0x24b583,\n\t0x20ab43,\n\t0xaf0c8,\n\t0x344802,\n\t0x122c87,\n\t0x9302,\n\t0x562c5,\n\t0x54d8f,\n\t0x158e708,\n\t0x114c4e,\n\t0x502210c2,\n\t0x32bb48,\n\t0x221546,\n\t0x2c2806,\n\t0x220ec7,\n\t0x50603882,\n\t0x50bbc048,\n\t0x21f44a,\n\t0x264b48,\n\t0x204542,\n\t0x38ab09,\n\t0x3ccec7,\n\t0x2132c6,\n\t0x21da89,\n\t0x2094c4,\n\t0x210e06,\n\t0x2c2c04,\n\t0x282344,\n\t0x259789,\n\t0x305d46,\n\t0x2ed945,\n\t0x252345,\n\t0x22fe47,\n\t0x2bfdc7,\n\t0x2a5884,\n\t0x221106,\n\t0x2f7c45,\n\t0x2ab0c5,\n\t0x319145,\n\t0x20eac7,\n\t0x311b85,\n\t0x32a449,\n\t0x367b05,\n\t0x2fb904,\n\t0x37bc87,\n\t0x37264e,\n\t0x30b549,\n\t0x371b89,\n\t0x366646,\n\t0x240d88,\n\t0x2f110b,\n\t0x36314c,\n\t0x353d46,\n\t0x364f87,\n\t0x2afec5,\n\t0x2e54ca,\n\t0x218089,\n\t0x348d49,\n\t0x2016c6,\n\t0x303005,\n\t0x2483c5,\n\t0x3313c9,\n\t0x3192cb,\n\t0x279006,\n\t0x34c086,\n\t0x20b0c4,\n\t0x28dd86,\n\t0x246b48,\n\t0x3c4106,\n\t0x26e206,\n\t0x204b48,\n\t0x205fc7,\n\t0x206c89,\n\t0x207845,\n\t0xaf0c8,\n\t0x293e84,\n\t0x3157c4,\n\t0x20d9c5,\n\t0x3b2209,\n\t0x21c787,\n\t0x21c78b,\n\t0x22354a,\n\t0x229fc5,\n\t0x50e08942,\n\t0x2ab487,\n\t0x5122a2c8,\n\t0x211507,\n\t0x2dc385,\n\t0x23968a,\n\t0x9302,\n\t0x25200b,\n\t0x27b48a,\n\t0x25c546,\n\t0x20d843,\n\t0x2ccf4d,\n\t0x39d20c,\n\t0x3d230d,\n\t0x24aa45,\n\t0x391cc5,\n\t0x30f047,\n\t0x20e7c9,\n\t0x21f346,\n\t0x25d285,\n\t0x2d6108,\n\t0x28dc83,\n\t0x2fe788,\n\t0x28dc88,\n\t0x2c3907,\n\t0x34d6c8,\n\t0x39d009,\n\t0x2e3307,\n\t0x31b6c7,\n\t0x38a988,\n\t0x2fd784,\n\t0x2fd787,\n\t0x295008,\n\t0x359406,\n\t0x39dfcf,\n\t0x226e87,\n\t0x355286,\n\t0x23a105,\n\t0x21ec03,\n\t0x249e87,\n\t0x389083,\n\t0x24e986,\n\t0x250046,\n\t0x2508c6,\n\t0x292705,\n\t0x2685c3,\n\t0x3a5808,\n\t0x38c609,\n\t0x39ec0b,\n\t0x250a48,\n\t0x251b85,\n\t0x2530c5,\n\t0x5163a302,\n\t0x2a3e09,\n\t0x21e107,\n\t0x25c485,\n\t0x259687,\n\t0x25bc06,\n\t0x383105,\n\t0x25d54b,\n\t0x25f6c4,\n\t0x264705,\n\t0x264847,\n\t0x278986,\n\t0x278dc5,\n\t0x286807,\n\t0x286f87,\n\t0x2fa5c4,\n\t0x28ba0a,\n\t0x28c508,\n\t0x2b9649,\n\t0x2cdec5,\n\t0x363946,\n\t0x246d0a,\n\t0x252246,\n\t0x268f87,\n\t0x2b930d,\n\t0x2a3649,\n\t0x3a4b05,\n\t0x310207,\n\t0x372a48,\n\t0x374fc8,\n\t0x366207,\n\t0x205c06,\n\t0x227247,\n\t0x24fb83,\n\t0x305cc4,\n\t0x380645,\n\t0x3aa207,\n\t0x3ae689,\n\t0x26e548,\n\t0x22dfc5,\n\t0x246284,\n\t0x250c05,\n\t0x25f88d,\n\t0x203402,\n\t0x2bedc6,\n\t0x2ea686,\n\t0x315f8a,\n\t0x395b06,\n\t0x39bd85,\n\t0x368fc5,\n\t0x368fc7,\n\t0x3a928c,\n\t0x2e488a,\n\t0x28da46,\n\t0x2d7685,\n\t0x28dbc6,\n\t0x28df07,\n\t0x2906c6,\n\t0x29260c,\n\t0x21dbc9,\n\t0x51a12dc7,\n\t0x294e85,\n\t0x294e86,\n\t0x295388,\n\t0x24fe05,\n\t0x2a40c5,\n\t0x2a4848,\n\t0x2a4a4a,\n\t0x51e7c402,\n\t0x52208b82,\n\t0x2d8a45,\n\t0x2a7483,\n\t0x245308,\n\t0x2050c3,\n\t0x2a4cc4,\n\t0x26a4cb,\n\t0x2050c8,\n\t0x317b08,\n\t0x526560c9,\n\t0x2a9809,\n\t0x2a9f46,\n\t0x2ac1c8,\n\t0x2ac3c9,\n\t0x2ad046,\n\t0x2ad1c5,\n\t0x24a846,\n\t0x2ad689,\n\t0x30c487,\n\t0x3ad306,\n\t0x2e8487,\n\t0x30c747,\n\t0x326404,\n\t0x52b1b509,\n\t0x2827c8,\n\t0x3bbf48,\n\t0x373407,\n\t0x2c7dc6,\n\t0x2027c9,\n\t0x2c2ec7,\n\t0x35c60a,\n\t0x35db88,\n\t0x212f47,\n\t0x215d86,\n\t0x28ea8a,\n\t0x3a0288,\n\t0x2ea105,\n\t0x2255c5,\n\t0x343607,\n\t0x304d09,\n\t0x37d30b,\n\t0x326c88,\n\t0x367b89,\n\t0x250e47,\n\t0x2b5f4c,\n\t0x2b670c,\n\t0x2b6a0a,\n\t0x2b6c8c,\n\t0x2c2788,\n\t0x2c2988,\n\t0x2c2b84,\n\t0x2c3089,\n\t0x2c32c9,\n\t0x2c350a,\n\t0x2c3789,\n\t0x2c3ac7,\n\t0x3b3b8c,\n\t0x237a46,\n\t0x2c6248,\n\t0x252306,\n\t0x393bc6,\n\t0x3a4a07,\n\t0x30b748,\n\t0x377a4b,\n\t0x2113c7,\n\t0x238689,\n\t0x3840c9,\n\t0x24f6c7,\n\t0x2c2e44,\n\t0x26fd47,\n\t0x39b5c6,\n\t0x210d06,\n\t0x2f5785,\n\t0x24c848,\n\t0x292f44,\n\t0x292f46,\n\t0x2e474b,\n\t0x34d889,\n\t0x20e9c6,\n\t0x20ec49,\n\t0x20da86,\n\t0x257348,\n\t0x21e283,\n\t0x303185,\n\t0x26e349,\n\t0x27afc5,\n\t0x307fc4,\n\t0x277e86,\n\t0x23d6c5,\n\t0x254fc6,\n\t0x318407,\n\t0x32dac6,\n\t0x22c58b,\n\t0x3911c7,\n\t0x252d86,\n\t0x23a606,\n\t0x22ff06,\n\t0x2a5849,\n\t0x2ef4ca,\n\t0x2bb3c5,\n\t0x2ed08d,\n\t0x2a4b46,\n\t0x2f88c6,\n\t0x2f4c46,\n\t0x23f245,\n\t0x2e70c7,\n\t0x300687,\n\t0x208bce,\n\t0x2287c3,\n\t0x2c7d89,\n\t0x38d889,\n\t0x2e58c7,\n\t0x26c387,\n\t0x29dac5,\n\t0x37e245,\n\t0x52f9868f,\n\t0x2d0107,\n\t0x2d02c8,\n\t0x2d1144,\n\t0x2d16c6,\n\t0x532480c2,\n\t0x2d5606,\n\t0x2d7d46,\n\t0x377d8e,\n\t0x2fe5ca,\n\t0x3bc7c6,\n\t0x22390a,\n\t0x3d2109,\n\t0x243885,\n\t0x37e7c8,\n\t0x352246,\n\t0x29c048,\n\t0x257508,\n\t0x373f4b,\n\t0x220fc5,\n\t0x311c08,\n\t0x204c8c,\n\t0x2dc247,\n\t0x250286,\n\t0x334fc8,\n\t0x211088,\n\t0x5363ce82,\n\t0x207a4b,\n\t0x217489,\n\t0x217b49,\n\t0x3947c7,\n\t0x216448,\n\t0x53a1d148,\n\t0x375b8b,\n\t0x2ccb89,\n\t0x28528d,\n\t0x26ed88,\n\t0x3575c8,\n\t0x53e03c02,\n\t0x3c4a04,\n\t0x542203c2,\n\t0x300ec6,\n\t0x54605102,\n\t0x2fd0ca,\n\t0x204446,\n\t0x2ecc08,\n\t0x38fe48,\n\t0x39b9c6,\n\t0x2ee946,\n\t0x2f9c46,\n\t0x37e4c5,\n\t0x23aa84,\n\t0x54a6ea84,\n\t0x351d86,\n\t0x27bcc7,\n\t0x54ee6787,\n\t0x2200cb,\n\t0x211709,\n\t0x391d0a,\n\t0x369104,\n\t0x2ba1c8,\n\t0x3ad0cd,\n\t0x2f2ac9,\n\t0x2f2d08,\n\t0x2f2f89,\n\t0x2f6044,\n\t0x2466c4,\n\t0x25e745,\n\t0x31990b,\n\t0x205046,\n\t0x351bc5,\n\t0x21bac9,\n\t0x2211c8,\n\t0x26ec04,\n\t0x2e5649,\n\t0x266f45,\n\t0x2bfe08,\n\t0x31bd87,\n\t0x371f88,\n\t0x283846,\n\t0x208807,\n\t0x2ddbc9,\n\t0x204909,\n\t0x35acc5,\n\t0x248f85,\n\t0x55212fc2,\n\t0x2fb6c4,\n\t0x224405,\n\t0x220dc6,\n\t0x3c85c5,\n\t0x298fc7,\n\t0x351e85,\n\t0x2789c4,\n\t0x366706,\n\t0x27bdc7,\n\t0x232906,\n\t0x325545,\n\t0x210748,\n\t0x221745,\n\t0x216b87,\n\t0x225209,\n\t0x34d9ca,\n\t0x2ec787,\n\t0x2ec78c,\n\t0x2ed906,\n\t0x24b409,\n\t0x24e1c5,\n\t0x24fd48,\n\t0x20a743,\n\t0x20d405,\n\t0x39b285,\n\t0x27fbc7,\n\t0x5561cbc2,\n\t0x2ee147,\n\t0x2f5cc6,\n\t0x33d146,\n\t0x2fc2c6,\n\t0x210fc6,\n\t0x2671c8,\n\t0x2cdcc5,\n\t0x355347,\n\t0x35534d,\n\t0x21ae83,\n\t0x21ae85,\n\t0x3124c7,\n\t0x2ee488,\n\t0x312085,\n\t0x2150c8,\n\t0x3a25c6,\n\t0x2db587,\n\t0x2c6185,\n\t0x221046,\n\t0x3aed05,\n\t0x21f10a,\n\t0x3819c6,\n\t0x304587,\n\t0x2e2e85,\n\t0x301007,\n\t0x305344,\n\t0x307f46,\n\t0x37e705,\n\t0x22260b,\n\t0x39b449,\n\t0x24310a,\n\t0x35ad48,\n\t0x317248,\n\t0x31d30c,\n\t0x328d47,\n\t0x34c888,\n\t0x34e948,\n\t0x34ed85,\n\t0x3a3b8a,\n\t0x3a8089,\n\t0x55a010c2,\n\t0x3cc3c6,\n\t0x260344,\n\t0x348409,\n\t0x295e09,\n\t0x279647,\n\t0x2c25c7,\n\t0x206509,\n\t0x23f448,\n\t0x23f44f,\n\t0x227c46,\n\t0x2db08b,\n\t0x3b8ec5,\n\t0x3b8ec7,\n\t0x2fed09,\n\t0x26a606,\n\t0x2e55c7,\n\t0x2df245,\n\t0x232704,\n\t0x27ae86,\n\t0x21c944,\n\t0x2e9a47,\n\t0x2cfbc8,\n\t0x55f02f08,\n\t0x304a45,\n\t0x304b87,\n\t0x359f09,\n\t0x20ef84,\n\t0x242648,\n\t0x562189c8,\n\t0x2f0d44,\n\t0x2fbc08,\n\t0x367584,\n\t0x34b749,\n\t0x20fa05,\n\t0x56616a42,\n\t0x227c85,\n\t0x2d3285,\n\t0x310048,\n\t0x236147,\n\t0x56a008c2,\n\t0x26ebc5,\n\t0x2d3dc6,\n\t0x240686,\n\t0x2fb688,\n\t0x2fda88,\n\t0x3c8586,\n\t0x3af206,\n\t0x322d49,\n\t0x33d086,\n\t0x29408b,\n\t0x2f1f45,\n\t0x2a5e46,\n\t0x2948c8,\n\t0x22ea46,\n\t0x331786,\n\t0x21558a,\n\t0x2a9bca,\n\t0x25cc05,\n\t0x2cdd87,\n\t0x31e086,\n\t0x56e04fc2,\n\t0x312607,\n\t0x256c45,\n\t0x246c84,\n\t0x246c85,\n\t0x2ba0c6,\n\t0x272d47,\n\t0x219785,\n\t0x24c8c4,\n\t0x334648,\n\t0x331845,\n\t0x2e0b07,\n\t0x3b0c05,\n\t0x21f045,\n\t0x2266c4,\n\t0x2266c9,\n\t0x2f7a88,\n\t0x23d586,\n\t0x2d19c6,\n\t0x36a806,\n\t0x573bf808,\n\t0x3c8307,\n\t0x3099cd,\n\t0x31088c,\n\t0x310e89,\n\t0x3110c9,\n\t0x57778742,\n\t0x3c7543,\n\t0x205cc3,\n\t0x39b685,\n\t0x3aa30a,\n\t0x33cf46,\n\t0x315b45,\n\t0x3185c4,\n\t0x3185cb,\n\t0x32f78c,\n\t0x330bcc,\n\t0x330ed5,\n\t0x331e0d,\n\t0x336a0f,\n\t0x336dd2,\n\t0x33724f,\n\t0x337612,\n\t0x337a93,\n\t0x337f4d,\n\t0x33850d,\n\t0x33888e,\n\t0x338e0e,\n\t0x33964c,\n\t0x339a0c,\n\t0x339e4b,\n\t0x33b28e,\n\t0x33bb92,\n\t0x33cd0c,\n\t0x33d2d0,\n\t0x3460d2,\n\t0x346d4c,\n\t0x34740d,\n\t0x34774c,\n\t0x34a151,\n\t0x34c20d,\n\t0x34f34d,\n\t0x34f94a,\n\t0x34fbcc,\n\t0x350e8c,\n\t0x3518cc,\n\t0x3535cc,\n\t0x356193,\n\t0x356810,\n\t0x356c10,\n\t0x3577cd,\n\t0x357dcc,\n\t0x358ac9,\n\t0x35b5cd,\n\t0x35b913,\n\t0x35ebd1,\n\t0x35f013,\n\t0x35fbcf,\n\t0x35ff8c,\n\t0x36028f,\n\t0x36064d,\n\t0x360c4f,\n\t0x361010,\n\t0x361a8e,\n\t0x36af0e,\n\t0x36b490,\n\t0x36c14d,\n\t0x36cace,\n\t0x36ce4c,\n\t0x36de13,\n\t0x36fd0e,\n\t0x370390,\n\t0x370791,\n\t0x370bcf,\n\t0x370f93,\n\t0x3782cd,\n\t0x37860f,\n\t0x3789ce,\n\t0x379090,\n\t0x379489,\n\t0x37a510,\n\t0x37ab0f,\n\t0x37b18f,\n\t0x37b552,\n\t0x37c4ce,\n\t0x37cecd,\n\t0x37d5cd,\n\t0x37d90d,\n\t0x37f38d,\n\t0x37f6cd,\n\t0x37fa10,\n\t0x37fe0b,\n\t0x38040c,\n\t0x38078c,\n\t0x380d8c,\n\t0x38108e,\n\t0x390050,\n\t0x391f92,\n\t0x39240b,\n\t0x39290e,\n\t0x392c8e,\n\t0x39350e,\n\t0x39398b,\n\t0x57b940d6,\n\t0x39580d,\n\t0x395c94,\n\t0x39680d,\n\t0x398095,\n\t0x39998d,\n\t0x39a30f,\n\t0x39a98f,\n\t0x39eecf,\n\t0x39f28e,\n\t0x39f80d,\n\t0x3a15d1,\n\t0x3a41cc,\n\t0x3a44cc,\n\t0x3a47cb,\n\t0x3a4c4c,\n\t0x3a500f,\n\t0x3a53d2,\n\t0x3a620d,\n\t0x3a78cc,\n\t0x3a82cc,\n\t0x3a85cd,\n\t0x3a890f,\n\t0x3a8cce,\n\t0x3a9fcc,\n\t0x3aa58d,\n\t0x3aa8cb,\n\t0x3ab18c,\n\t0x3aba8d,\n\t0x3abdce,\n\t0x3ac149,\n\t0x3ad5d3,\n\t0x3adb0d,\n\t0x3ade4d,\n\t0x3ae44c,\n\t0x3ae8ce,\n\t0x3af54f,\n\t0x3af90c,\n\t0x3afc0d,\n\t0x3aff4f,\n\t0x3b030c,\n\t0x3b0d4c,\n\t0x3b10cc,\n\t0x3b13cc,\n\t0x3b1a8d,\n\t0x3b1dd2,\n\t0x3b244c,\n\t0x3b274c,\n\t0x3b2a51,\n\t0x3b2e8f,\n\t0x3b324f,\n\t0x3b3613,\n\t0x3b3fce,\n\t0x3b434f,\n\t0x3b470c,\n\t0x57fb4a4e,\n\t0x3b4dcf,\n\t0x3b5196,\n\t0x3b6412,\n\t0x3b86cc,\n\t0x3b908f,\n\t0x3b970d,\n\t0x3be88f,\n\t0x3bec4c,\n\t0x3bef4d,\n\t0x3bf28d,\n\t0x3c090e,\n\t0x3c1bcc,\n\t0x3c348c,\n\t0x3c3790,\n\t0x3c68d1,\n\t0x3c6d0b,\n\t0x3c714c,\n\t0x3c744e,\n\t0x3c8c51,\n\t0x3c908e,\n\t0x3c940d,\n\t0x3ce5cb,\n\t0x3ceecf,\n\t0x3cfd14,\n\t0x2049c2,\n\t0x2049c2,\n\t0x204c83,\n\t0x2049c2,\n\t0x204c83,\n\t0x2049c2,\n\t0x203702,\n\t0x24a885,\n\t0x3c894c,\n\t0x2049c2,\n\t0x2049c2,\n\t0x203702,\n\t0x2049c2,\n\t0x295a05,\n\t0x34d9c5,\n\t0x2049c2,\n\t0x2049c2,\n\t0x20d9c2,\n\t0x295a05,\n\t0x3337c9,\n\t0x35e8cc,\n\t0x2049c2,\n\t0x2049c2,\n\t0x2049c2,\n\t0x2049c2,\n\t0x24a885,\n\t0x2049c2,\n\t0x2049c2,\n\t0x2049c2,\n\t0x2049c2,\n\t0x20d9c2,\n\t0x3337c9,\n\t0x2049c2,\n\t0x2049c2,\n\t0x2049c2,\n\t0x34d9c5,\n\t0x2049c2,\n\t0x34d9c5,\n\t0x35e8cc,\n\t0x3c894c,\n\t0x373a83,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x215c83,\n\t0x24b583,\n\t0x10f508,\n\t0x80144,\n\t0x2543,\n\t0xc5a88,\n\t0x2000c2,\n\t0x58e09302,\n\t0x241f83,\n\t0x2471c4,\n\t0x202c03,\n\t0x255a44,\n\t0x231a46,\n\t0x210303,\n\t0x302144,\n\t0x25c905,\n\t0x2287c3,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0x2678ca,\n\t0x25c006,\n\t0x39300c,\n\t0xaf0c8,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x209383,\n\t0x2d7d46,\n\t0x215c83,\n\t0x24b583,\n\t0x214e83,\n\t0xa5a88,\n\t0xf6d85,\n\t0x1c5cc9,\n\t0x10c02,\n\t0x5a2ff905,\n\t0xf6d85,\n\t0x6dec7,\n\t0x6fa88,\n\t0xbece,\n\t0x89ad2,\n\t0x7d2cb,\n\t0x105986,\n\t0x5a68be45,\n\t0x5aa8be4c,\n\t0xce007,\n\t0xe41c7,\n\t0xba98a,\n\t0x3c7d0,\n\t0x10c8c5,\n\t0xe4f8b,\n\t0x73dc8,\n\t0x37307,\n\t0x15d74b,\n\t0x7c709,\n\t0x1323c7,\n\t0x11ae87,\n\t0x79247,\n\t0x37246,\n\t0x65e48,\n\t0x5b03cf86,\n\t0x4b187,\n\t0x2030d,\n\t0xba350,\n\t0x5b407242,\n\t0x28748,\n\t0x5ae50,\n\t0x183e4c,\n\t0x5bb8e40d,\n\t0x5da08,\n\t0x5de8b,\n\t0x6b9c7,\n\t0x15e049,\n\t0x59086,\n\t0x95588,\n\t0x72302,\n\t0x7318a,\n\t0xe1c07,\n\t0x2d747,\n\t0xa63c9,\n\t0xa8148,\n\t0x11a745,\n\t0xf410e,\n\t0x1b44e,\n\t0x1f88f,\n\t0x23bc9,\n\t0x47089,\n\t0x7358b,\n\t0x91c4f,\n\t0xad38c,\n\t0x193e0b,\n\t0xd1388,\n\t0x1016c7,\n\t0x1076c8,\n\t0x140f8b,\n\t0x15844c,\n\t0x16224c,\n\t0x16fa0c,\n\t0x17a04d,\n\t0xccd08,\n\t0xc4442,\n\t0x1a5b89,\n\t0x181cc8,\n\t0x1a300b,\n\t0xc7fc6,\n\t0xd36cb,\n\t0x13b6cb,\n\t0xde98a,\n\t0xdf545,\n\t0xe6dd0,\n\t0xe8646,\n\t0x74e86,\n\t0x178145,\n\t0x8ec87,\n\t0x113648,\n\t0xeeac7,\n\t0xeed87,\n\t0x1cfb47,\n\t0x100d0a,\n\t0xaef4a,\n\t0xea746,\n\t0x9358d,\n\t0x4b248,\n\t0x1147c8,\n\t0xaa309,\n\t0xb5685,\n\t0x10084c,\n\t0x17a24b,\n\t0x17d244,\n\t0x109609,\n\t0x109846,\n\t0x155a46,\n\t0xb7fc6,\n\t0x2fc2,\n\t0x40386,\n\t0x169ccb,\n\t0x11d187,\n\t0xc882,\n\t0xc9f05,\n\t0x189c4,\n\t0x101,\n\t0x8ac3,\n\t0x5aea7646,\n\t0x95903,\n\t0x382,\n\t0x2d744,\n\t0x4542,\n\t0x8b004,\n\t0x882,\n\t0x7b82,\n\t0x3fc2,\n\t0x10e842,\n\t0xdc2,\n\t0x8be42,\n\t0x1242,\n\t0x142c02,\n\t0x38b42,\n\t0x17382,\n\t0x69c2,\n\t0x16502,\n\t0x351c3,\n\t0x942,\n\t0x12c2,\n\t0xd42,\n\t0x8282,\n\t0x642,\n\t0x33542,\n\t0x55282,\n\t0x7602,\n\t0x7502,\n\t0x5c2,\n\t0xf8c3,\n\t0xb02,\n\t0x2382,\n\t0xb0442,\n\t0x6d82,\n\t0x5142,\n\t0xbcc2,\n\t0x10e42,\n\t0x9df02,\n\t0x9382,\n\t0x10b282,\n\t0x6ca42,\n\t0x7e02,\n\t0x15c83,\n\t0x602,\n\t0x3ce82,\n\t0x1e82,\n\t0x1b382,\n\t0x15ac45,\n\t0x57c2,\n\t0x44042,\n\t0x3f843,\n\t0x682,\n\t0x6702,\n\t0x3182,\n\t0xac02,\n\t0xeb02,\n\t0x8c2,\n\t0x2a82,\n\t0x2fc2,\n\t0x7f85,\n\t0x5be03702,\n\t0x5c3bb7c3,\n\t0x16583,\n\t0x5c603702,\n\t0x16583,\n\t0x83147,\n\t0x20f403,\n\t0x2000c2,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x2005c3,\n\t0x209383,\n\t0x215c83,\n\t0x202543,\n\t0x24b583,\n\t0x295943,\n\t0xd983,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x2287c3,\n\t0x215c83,\n\t0x202543,\n\t0xe6243,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x200181,\n\t0x2287c3,\n\t0x215c83,\n\t0x24fb43,\n\t0x24b583,\n\t0x110784,\n\t0x373a83,\n\t0x209303,\n\t0x2351c3,\n\t0x209d43,\n\t0x210a43,\n\t0x27fac3,\n\t0x23ea03,\n\t0x2a3bc3,\n\t0x2b9c83,\n\t0x22b883,\n\t0x21e084,\n\t0x215c83,\n\t0x24b583,\n\t0x20ab43,\n\t0x376544,\n\t0x25fa83,\n\t0x3ac3,\n\t0x3c4203,\n\t0x375548,\n\t0x28eac4,\n\t0x20020a,\n\t0x23dc06,\n\t0x11ce04,\n\t0x37b987,\n\t0x21aa4a,\n\t0x227b09,\n\t0x3a9d07,\n\t0x3b56ca,\n\t0x373a83,\n\t0x2d8acb,\n\t0x2b9bc9,\n\t0x36a905,\n\t0x33cb47,\n\t0x9302,\n\t0x209303,\n\t0x218cc7,\n\t0x3549c5,\n\t0x2c2d09,\n\t0x2351c3,\n\t0x2b7a06,\n\t0x2c1fc3,\n\t0xf5d43,\n\t0x117546,\n\t0x10e886,\n\t0x10287,\n\t0x222cc6,\n\t0x22cac5,\n\t0x207907,\n\t0x315087,\n\t0x5ee2b883,\n\t0x346f87,\n\t0x2b80c3,\n\t0x245085,\n\t0x21e084,\n\t0x2705c8,\n\t0x37cbcc,\n\t0x340c05,\n\t0x2a37c6,\n\t0x218b87,\n\t0x223387,\n\t0x24f847,\n\t0x252ec8,\n\t0x31668f,\n\t0x367d45,\n\t0x242087,\n\t0x202d07,\n\t0x2a4e0a,\n\t0x2d5f49,\n\t0x312945,\n\t0x31768a,\n\t0x173746,\n\t0x2c2045,\n\t0x37f284,\n\t0x38fd86,\n\t0x335c87,\n\t0x2c4347,\n\t0x394948,\n\t0x21e285,\n\t0x3548c6,\n\t0x26e185,\n\t0x23a745,\n\t0x28b784,\n\t0x39b8c7,\n\t0x26700a,\n\t0x247608,\n\t0x378f06,\n\t0x9383,\n\t0x2e1305,\n\t0x3cab86,\n\t0x3b3dc6,\n\t0x378046,\n\t0x2287c3,\n\t0x3a6487,\n\t0x202c85,\n\t0x215c83,\n\t0x2dec4d,\n\t0x202543,\n\t0x394a48,\n\t0x38cf04,\n\t0x278c85,\n\t0x2a4d06,\n\t0x217206,\n\t0x2a5d47,\n\t0x2a3c07,\n\t0x293d05,\n\t0x24b583,\n\t0x3017c7,\n\t0x35e1c9,\n\t0x2750c9,\n\t0x20a28a,\n\t0x207f42,\n\t0x245044,\n\t0x2e8dc4,\n\t0x377907,\n\t0x2ee008,\n\t0x2efd09,\n\t0x21ad49,\n\t0x2f0907,\n\t0x2f1686,\n\t0xf3e86,\n\t0x2f6044,\n\t0x2f664a,\n\t0x2f9488,\n\t0x2f9b09,\n\t0x2e8c46,\n\t0x2b1f45,\n\t0x2474c8,\n\t0x2c840a,\n\t0x205dc3,\n\t0x3766c6,\n\t0x2f0a07,\n\t0x230245,\n\t0x38cdc5,\n\t0x3acc83,\n\t0x271504,\n\t0x225585,\n\t0x287087,\n\t0x2f7bc5,\n\t0x3434c6,\n\t0x1c8485,\n\t0x289143,\n\t0x3bc889,\n\t0x278a4c,\n\t0x321c4c,\n\t0x2d34c8,\n\t0x2fad87,\n\t0x305708,\n\t0x3064ca,\n\t0x306ecb,\n\t0x2b9d08,\n\t0x217308,\n\t0x237946,\n\t0x36a6c5,\n\t0x36870a,\n\t0x3bb805,\n\t0x216a42,\n\t0x2c6047,\n\t0x250586,\n\t0x379c05,\n\t0x37de89,\n\t0x365445,\n\t0x390f45,\n\t0x2f1c49,\n\t0x3caac6,\n\t0x3b5dc8,\n\t0x245143,\n\t0x222e06,\n\t0x277dc6,\n\t0x31c985,\n\t0x31c989,\n\t0x2f0449,\n\t0x27ec47,\n\t0x11f044,\n\t0x31f047,\n\t0x21ac49,\n\t0x237cc5,\n\t0x3ab88,\n\t0x394e05,\n\t0x371a85,\n\t0x35cf49,\n\t0x2013c2,\n\t0x2e17c4,\n\t0x200d82,\n\t0x200b02,\n\t0x2c44c5,\n\t0x31cb88,\n\t0x2b55c5,\n\t0x2c3c83,\n\t0x2c3c85,\n\t0x2d5803,\n\t0x20c9c2,\n\t0x24be44,\n\t0x2b08c3,\n\t0x204782,\n\t0x34af84,\n\t0x2e9343,\n\t0x21ad42,\n\t0x2b5643,\n\t0x28f7c4,\n\t0x2fa0c3,\n\t0x25f344,\n\t0x2022c2,\n\t0x214d83,\n\t0x223a03,\n\t0x200b42,\n\t0x2e03c2,\n\t0x2f0289,\n\t0x202202,\n\t0x28a604,\n\t0x20e2c2,\n\t0x247344,\n\t0x2f1644,\n\t0x36a184,\n\t0x202fc2,\n\t0x237582,\n\t0x239f43,\n\t0x306c83,\n\t0x248b84,\n\t0x29a7c4,\n\t0x2f0b84,\n\t0x2f9644,\n\t0x318d03,\n\t0x366e83,\n\t0x3736c4,\n\t0x320844,\n\t0x320986,\n\t0x22b4c2,\n\t0x3ce03,\n\t0x209302,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x2000c2,\n\t0x373a83,\n\t0x209303,\n\t0x2351c3,\n\t0x207343,\n\t0x22b883,\n\t0x21e084,\n\t0x2f0544,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x214e83,\n\t0x2f7584,\n\t0x32bb03,\n\t0x2a6e43,\n\t0x37d184,\n\t0x394c06,\n\t0x206ec3,\n\t0xf6d85,\n\t0xe41c7,\n\t0x226a03,\n\t0x6021be08,\n\t0x25d0c3,\n\t0x2b1383,\n\t0x2450c3,\n\t0x209383,\n\t0x365f45,\n\t0x13cb03,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x20d8c3,\n\t0x231083,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x20f8c3,\n\t0x215c83,\n\t0x235dc4,\n\t0xe6243,\n\t0x24b583,\n\t0x30d1c4,\n\t0xf6d85,\n\t0x2bf1c5,\n\t0xe41c7,\n\t0x209302,\n\t0x2046c2,\n\t0x200382,\n\t0x203202,\n\t0x2543,\n\t0x2003c2,\n\t0x10ce44,\n\t0x209303,\n\t0x238084,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x226004,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x201203,\n\t0x28b004,\n\t0xaf0c8,\n\t0x209303,\n\t0x202543,\n\t0xd983,\n\t0x153bc4,\n\t0x243644,\n\t0xaf0c8,\n\t0x209303,\n\t0x24f544,\n\t0x21e084,\n\t0x202543,\n\t0x203c02,\n\t0xe6243,\n\t0x24b583,\n\t0x22d183,\n\t0x71504,\n\t0x3c1245,\n\t0x216a42,\n\t0x369c43,\n\t0x168109,\n\t0xdd0c6,\n\t0x173888,\n\t0x2000c2,\n\t0xaf0c8,\n\t0x209302,\n\t0x2351c3,\n\t0x22b883,\n\t0x2005c2,\n\t0x2543,\n\t0x24b583,\n\t0xb682,\n\t0x2000c2,\n\t0x1b5887,\n\t0x10a1c9,\n\t0x39c3,\n\t0xaf0c8,\n\t0x10e803,\n\t0x63b54747,\n\t0x9303,\n\t0x1cc2c8,\n\t0x2351c3,\n\t0x22b883,\n\t0x41e06,\n\t0x20f8c3,\n\t0x90d88,\n\t0xc1348,\n\t0xcda86,\n\t0x2287c3,\n\t0xcb788,\n\t0x99043,\n\t0x63ce07c6,\n\t0xe7785,\n\t0x353c7,\n\t0x15c83,\n\t0x4f43,\n\t0x4b583,\n\t0x4482,\n\t0x1a23ca,\n\t0x5303,\n\t0xc4583,\n\t0x2fde44,\n\t0x11648b,\n\t0x116a48,\n\t0x8fe82,\n\t0x1454d87,\n\t0x15728c7,\n\t0x14c3d48,\n\t0x1520483,\n\t0x14b4cb,\n\t0x12d707,\n\t0x2000c2,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x2da884,\n\t0x22b883,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x215c83,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x209383,\n\t0x215c83,\n\t0x24b583,\n\t0x282583,\n\t0x201203,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0xd983,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x209383,\n\t0x215c83,\n\t0x24b583,\n\t0x22c682,\n\t0x2000c1,\n\t0x2000c2,\n\t0x200201,\n\t0x336b02,\n\t0xaf0c8,\n\t0x219505,\n\t0x200101,\n\t0x9303,\n\t0x2029c1,\n\t0x200501,\n\t0x200d41,\n\t0x24a802,\n\t0x389084,\n\t0x24a803,\n\t0x200041,\n\t0x200801,\n\t0x200181,\n\t0x200701,\n\t0x2f6c07,\n\t0x2f974f,\n\t0x3a3dc6,\n\t0x2004c1,\n\t0x353c06,\n\t0x201741,\n\t0x200581,\n\t0x3ce80e,\n\t0x2003c1,\n\t0x24b583,\n\t0x201401,\n\t0x242b85,\n\t0x204482,\n\t0x3acb85,\n\t0x200401,\n\t0x200741,\n\t0x2007c1,\n\t0x216a42,\n\t0x200081,\n\t0x207301,\n\t0x20b6c1,\n\t0x201d81,\n\t0x202e01,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x215943,\n\t0x209303,\n\t0x22b883,\n\t0x8fdc8,\n\t0x2287c3,\n\t0x215c83,\n\t0x89d83,\n\t0x24b583,\n\t0x14eb148,\n\t0xd7c8,\n\t0xf6d85,\n\t0xaf0c8,\n\t0x2543,\n\t0xf6d85,\n\t0x18a904,\n\t0x48284,\n\t0x14eb14a,\n\t0xaf0c8,\n\t0xe6243,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x215c83,\n\t0x24b583,\n\t0x203ac3,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x2da884,\n\t0x24b583,\n\t0x27f485,\n\t0x3c9d44,\n\t0x209303,\n\t0x215c83,\n\t0x24b583,\n\t0xa5b8a,\n\t0x11f3c4,\n\t0x124e06,\n\t0x209302,\n\t0x209303,\n\t0x232649,\n\t0x2351c3,\n\t0x2a8d09,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x7bc04,\n\t0x2543,\n\t0x24b583,\n\t0x2f5e48,\n\t0x23f107,\n\t0x3c1245,\n\t0x1c6f48,\n\t0x1b5887,\n\t0xee28a,\n\t0x111e4b,\n\t0x153e47,\n\t0x40c48,\n\t0x11b34a,\n\t0x12a08,\n\t0x10a1c9,\n\t0x25447,\n\t0x66e07,\n\t0x10b1c8,\n\t0x1cc2c8,\n\t0x4234f,\n\t0x260c5,\n\t0x1cc5c7,\n\t0x41e06,\n\t0x18e947,\n\t0x112a86,\n\t0x90d88,\n\t0xa1346,\n\t0x1ca8c7,\n\t0x55e09,\n\t0x5d47,\n\t0x107a89,\n\t0xb5ac9,\n\t0xbef46,\n\t0xc1348,\n\t0xbff45,\n\t0x7c28a,\n\t0xcb788,\n\t0x99043,\n\t0xd5d88,\n\t0x353c7,\n\t0x167885,\n\t0x60e10,\n\t0x4f43,\n\t0xe6243,\n\t0x55c87,\n\t0x27345,\n\t0xef088,\n\t0x693c5,\n\t0xc4583,\n\t0x169308,\n\t0x15ce06,\n\t0x1a68c9,\n\t0xac5c7,\n\t0x1683cb,\n\t0x1430c4,\n\t0x108f84,\n\t0x11648b,\n\t0x116a48,\n\t0x117447,\n\t0xf6d85,\n\t0x209303,\n\t0x2351c3,\n\t0x210a43,\n\t0x24b583,\n\t0x23ffc3,\n\t0x22b883,\n\t0xe6243,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x736cb,\n\t0x2000c2,\n\t0x209302,\n\t0x24b583,\n\t0xaf0c8,\n\t0x2000c2,\n\t0x209302,\n\t0x200382,\n\t0x2005c2,\n\t0x2025c2,\n\t0x215c83,\n\t0x2003c2,\n\t0x2000c2,\n\t0x373a83,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x200382,\n\t0x22b883,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x226004,\n\t0x215c83,\n\t0x213203,\n\t0x2543,\n\t0x24b583,\n\t0x2fde44,\n\t0x20ab43,\n\t0x22b883,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x202543,\n\t0x24b583,\n\t0x3b8b87,\n\t0x209303,\n\t0x20a607,\n\t0x307846,\n\t0x20a6c3,\n\t0x20f783,\n\t0x22b883,\n\t0x202b03,\n\t0x21e084,\n\t0x39bec4,\n\t0x2e9e86,\n\t0x200f03,\n\t0x215c83,\n\t0x24b583,\n\t0x27f485,\n\t0x2abac4,\n\t0x2bae83,\n\t0x20b2c3,\n\t0x2c6047,\n\t0x31bd05,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x57cc7,\n\t0x8ec87,\n\t0x1a3605,\n\t0x219002,\n\t0x24b383,\n\t0x20f083,\n\t0x373a83,\n\t0x6ce09303,\n\t0x20e7c2,\n\t0x2351c3,\n\t0x202c03,\n\t0x22b883,\n\t0x21e084,\n\t0x329f83,\n\t0x2ebcc3,\n\t0x2287c3,\n\t0x226004,\n\t0x6d205f02,\n\t0x215c83,\n\t0x24b583,\n\t0x233603,\n\t0x2189c3,\n\t0x22c682,\n\t0x20ab43,\n\t0xaf0c8,\n\t0x22b883,\n\t0xd983,\n\t0x32c3c4,\n\t0x373a83,\n\t0x209302,\n\t0x209303,\n\t0x238084,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x20f8c3,\n\t0x319584,\n\t0x229d44,\n\t0x2d7d46,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x214e83,\n\t0x250586,\n\t0x3b18b,\n\t0x3cf86,\n\t0x103a8a,\n\t0x11d74a,\n\t0xaf0c8,\n\t0x26e144,\n\t0x6e609303,\n\t0x373a44,\n\t0x2351c3,\n\t0x2aa444,\n\t0x22b883,\n\t0x2ba043,\n\t0x2287c3,\n\t0x215c83,\n\t0xe6243,\n\t0x24b583,\n\t0xc6e43,\n\t0x343a4b,\n\t0x3bf5ca,\n\t0x3d100c,\n\t0xe1088,\n\t0x2000c2,\n\t0x209302,\n\t0x200382,\n\t0x230105,\n\t0x21e084,\n\t0x209382,\n\t0x2287c3,\n\t0x229d44,\n\t0x203202,\n\t0x2003c2,\n\t0x201202,\n\t0x22c682,\n\t0x173a83,\n\t0xbc2,\n\t0x2b3b89,\n\t0x2ed608,\n\t0x22b709,\n\t0x326249,\n\t0x33340a,\n\t0x359d0a,\n\t0x208202,\n\t0x342c02,\n\t0x9302,\n\t0x209303,\n\t0x22c842,\n\t0x242246,\n\t0x37b002,\n\t0x204702,\n\t0x3121ce,\n\t0x214dce,\n\t0x280b87,\n\t0x215c07,\n\t0x283202,\n\t0x2351c3,\n\t0x22b883,\n\t0x200d02,\n\t0x2005c2,\n\t0xf703,\n\t0x23828f,\n\t0x242582,\n\t0x3344c7,\n\t0x2ae547,\n\t0x326e47,\n\t0x2b170c,\n\t0x2e3d8c,\n\t0x225a84,\n\t0x25e58a,\n\t0x214d02,\n\t0x206d82,\n\t0x2b72c4,\n\t0x200702,\n\t0x20eb42,\n\t0x2e3fc4,\n\t0x213302,\n\t0x205142,\n\t0x16c03,\n\t0x2a13c7,\n\t0x23d985,\n\t0x210e42,\n\t0x315a84,\n\t0x30b282,\n\t0x2e0948,\n\t0x215c83,\n\t0x34e148,\n\t0x202d82,\n\t0x225c45,\n\t0x398f46,\n\t0x24b583,\n\t0x2057c2,\n\t0x2eff47,\n\t0x4482,\n\t0x25c285,\n\t0x3c4905,\n\t0x2085c2,\n\t0x20dc42,\n\t0x2b8eca,\n\t0x293b8a,\n\t0x265ac2,\n\t0x29b6c4,\n\t0x203c42,\n\t0x244f08,\n\t0x20c842,\n\t0x2ac948,\n\t0x312c07,\n\t0x3131c9,\n\t0x25c302,\n\t0x318385,\n\t0x211d45,\n\t0x21e34b,\n\t0x2c90cc,\n\t0x22c348,\n\t0x32d548,\n\t0x22b4c2,\n\t0x2a5e02,\n\t0x2000c2,\n\t0xaf0c8,\n\t0x209302,\n\t0x209303,\n\t0x200382,\n\t0x203202,\n\t0x2543,\n\t0x2003c2,\n\t0x24b583,\n\t0x201202,\n\t0x2000c2,\n\t0xf6d85,\n\t0x6fa09302,\n\t0x6fe2b883,\n\t0x216c03,\n\t0x209382,\n\t0x215c83,\n\t0x32e303,\n\t0x7024b583,\n\t0x2ec143,\n\t0x283246,\n\t0x1601203,\n\t0xf6d85,\n\t0x14b04b,\n\t0xaf0c8,\n\t0x65887,\n\t0x6f887,\n\t0x178145,\n\t0xa884d,\n\t0xa688a,\n\t0x939c7,\n\t0x2bdc4,\n\t0x2be03,\n\t0xb8044,\n\t0x70a02302,\n\t0x70e04542,\n\t0x71203902,\n\t0x71601b82,\n\t0x71a0f642,\n\t0x71e00dc2,\n\t0xe41c7,\n\t0x72209302,\n\t0x7262d202,\n\t0x72a1b8c2,\n\t0x72e069c2,\n\t0x214dc3,\n\t0x22984,\n\t0x23a103,\n\t0x73210cc2,\n\t0x5da08,\n\t0x73602242,\n\t0x4fb87,\n\t0x73a00042,\n\t0x73e01042,\n\t0x74200182,\n\t0x74606982,\n\t0x74a07502,\n\t0x74e005c2,\n\t0x16bd45,\n\t0x221703,\n\t0x31ae04,\n\t0x75200702,\n\t0x7560eec2,\n\t0x75a02902,\n\t0x7a3cb,\n\t0x75e01e02,\n\t0x7664f602,\n\t0x76a09382,\n\t0x76e025c2,\n\t0x77225282,\n\t0x77603542,\n\t0x77a04842,\n\t0x77e6ca42,\n\t0x78205f02,\n\t0x78602982,\n\t0x78a03202,\n\t0x78e21c42,\n\t0x792062c2,\n\t0x7962b9c2,\n\t0xe6084,\n\t0x33f9c3,\n\t0x79a16942,\n\t0x79e14a02,\n\t0x7a212d82,\n\t0x7a6006c2,\n\t0x7aa003c2,\n\t0x7ae04782,\n\t0x73847,\n\t0x7b203d02,\n\t0x7b601182,\n\t0x7ba01202,\n\t0x7be14d82,\n\t0x10084c,\n\t0x7c217442,\n\t0x7c62a902,\n\t0x7ca01502,\n\t0x7ce04fc2,\n\t0x7d205cc2,\n\t0x7d655ac2,\n\t0x7da0c902,\n\t0x7de10342,\n\t0x7e278142,\n\t0x7e6786c2,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x20983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x76329f83,\n\t0x220983,\n\t0x365fc4,\n\t0x2ed506,\n\t0x2fb603,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x3b6f49,\n\t0x200bc2,\n\t0x3c7e03,\n\t0x2b5dc3,\n\t0x30ffc5,\n\t0x202c03,\n\t0x329f83,\n\t0x220983,\n\t0x2a0cc3,\n\t0x236e03,\n\t0x3c56c9,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x200bc2,\n\t0x200bc2,\n\t0x329f83,\n\t0x220983,\n\t0x7ee09303,\n\t0x2351c3,\n\t0x326483,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0xaf0c8,\n\t0x209302,\n\t0x209303,\n\t0x215c83,\n\t0x24b583,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x2287c3,\n\t0x215c83,\n\t0x2543,\n\t0x24b583,\n\t0x243644,\n\t0x209302,\n\t0x209303,\n\t0x30ddc3,\n\t0x2351c3,\n\t0x24f544,\n\t0x210a43,\n\t0x22b883,\n\t0x21e084,\n\t0x20f8c3,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x22d183,\n\t0x3c1245,\n\t0x236e03,\n\t0x20ab43,\n\t0x2543,\n\t0x209302,\n\t0x209303,\n\t0x329f83,\n\t0x215c83,\n\t0x24b583,\n\t0x2000c2,\n\t0x373a83,\n\t0xaf0c8,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x231a46,\n\t0x21e084,\n\t0x20f8c3,\n\t0x226004,\n\t0x215c83,\n\t0x24b583,\n\t0x214e83,\n\t0x209303,\n\t0x2351c3,\n\t0x215c83,\n\t0x24b583,\n\t0x1443007,\n\t0x7f87,\n\t0x209303,\n\t0x3cf86,\n\t0x2351c3,\n\t0x22b883,\n\t0xe2fc6,\n\t0x215c83,\n\t0x24b583,\n\t0x32a2c8,\n\t0x32d389,\n\t0x33e289,\n\t0x345288,\n\t0x39b008,\n\t0x39b009,\n\t0x32598a,\n\t0x35884a,\n\t0x396b4a,\n\t0x39ca8a,\n\t0x3bf5ca,\n\t0x3cb54b,\n\t0x2463cd,\n\t0x36294f,\n\t0x271710,\n\t0x35b14d,\n\t0x380a8c,\n\t0x39c7cb,\n\t0x6fa88,\n\t0xfbb08,\n\t0xe0205,\n\t0xc9f05,\n\t0x2000c2,\n\t0x31bb45,\n\t0x2094c3,\n\t0x82609302,\n\t0x2351c3,\n\t0x22b883,\n\t0x3a1107,\n\t0x2450c3,\n\t0x2287c3,\n\t0x215c83,\n\t0x24fb43,\n\t0x2095c3,\n\t0x202543,\n\t0x24b583,\n\t0x25c006,\n\t0x216a42,\n\t0x20ab43,\n\t0xaf0c8,\n\t0x2000c2,\n\t0x373a83,\n\t0x209302,\n\t0x209303,\n\t0x2351c3,\n\t0x22b883,\n\t0x21e084,\n\t0x2287c3,\n\t0x215c83,\n\t0x24b583,\n\t0x201203,\n\t0x168104,\n\t0x14f9086,\n\t0x2000c2,\n\t0x209302,\n\t0x22b883,\n\t0x2287c3,\n\t0x24b583,\n}\n\n// children is the list of nodes' children, the parent's wildcard bit and the\n// parent's node type. If a node has no children then their children index\n// will be in the range [0, 6), depending on the wildcard bit and node type.\n//\n// The layout within the uint32, from MSB to LSB, is:\n//\t[ 1 bits] unused\n//\t[ 1 bits] wildcard bit\n//\t[ 2 bits] node type\n//\t[14 bits] high nodes index (exclusive) of children\n//\t[14 bits] low nodes index (inclusive) of children\nvar children = [...]uint32{\n\t0x0,\n\t0x10000000,\n\t0x20000000,\n\t0x40000000,\n\t0x50000000,\n\t0x60000000,\n\t0x184060a,\n\t0x1844610,\n\t0x1848611,\n\t0x186c612,\n\t0x19c861b,\n\t0x19e0672,\n\t0x19f4678,\n\t0x1a0867d,\n\t0x1a28682,\n\t0x1a2c68a,\n\t0x1a4468b,\n\t0x1a48691,\n\t0x1a70692,\n\t0x1a7469c,\n\t0x1a8c69d,\n\t0x1a906a3,\n\t0x1a946a4,\n\t0x1ad06a5,\n\t0x1ad46b4,\n\t0x61adc6b5,\n\t0x21ae46b7,\n\t0x1b2c6b9,\n\t0x1b306cb,\n\t0x1b506cc,\n\t0x1b646d4,\n\t0x1b686d9,\n\t0x1b986da,\n\t0x1bb46e6,\n\t0x1bdc6ed,\n\t0x1bec6f7,\n\t0x1bf06fb,\n\t0x1c886fc,\n\t0x1c9c722,\n\t0x1cb0727,\n\t0x1ce072c,\n\t0x1cf0738,\n\t0x1d0473c,\n\t0x1d18741,\n\t0x1dbc746,\n\t0x1fbc76f,\n\t0x1fc07ef,\n\t0x202c7f0,\n\t0x209880b,\n\t0x20b0826,\n\t0x20c482c,\n\t0x20cc831,\n\t0x20e0833,\n\t0x20e4838,\n\t0x2100839,\n\t0x214c840,\n\t0x2168853,\n\t0x216c85a,\n\t0x217085b,\n\t0x219485c,\n\t0x21d0865,\n\t0x621d4874,\n\t0x21ec875,\n\t0x220487b,\n\t0x220c881,\n\t0x221c883,\n\t0x22cc887,\n\t0x22d08b3,\n\t0x222e08b4,\n\t0x222e48b8,\n\t0x222ec8b9,\n\t0x23308bb,\n\t0x23348cc,\n\t0x27f08cd,\n\t0x228989fc,\n\t0x2289ca26,\n\t0x228a0a27,\n\t0x228aca28,\n\t0x228b0a2b,\n\t0x228bca2c,\n\t0x228c0a2f,\n\t0x228c4a30,\n\t0x228c8a31,\n\t0x228cca32,\n\t0x228d0a33,\n\t0x228dca34,\n\t0x228e0a37,\n\t0x228eca38,\n\t0x228f0a3b,\n\t0x228f4a3c,\n\t0x228f8a3d,\n\t0x22904a3e,\n\t0x22908a41,\n\t0x22914a42,\n\t0x22918a45,\n\t0x2291ca46,\n\t0x22920a47,\n\t0x2924a48,\n\t0x22928a49,\n\t0x22934a4a,\n\t0x22938a4d,\n\t0x2940a4e,\n\t0x2984a50,\n\t0x229a4a61,\n\t0x229a8a69,\n\t0x229aca6a,\n\t0x229b0a6b,\n\t0x29b4a6c,\n\t0x229b8a6d,\n\t0x29c0a6e,\n\t0x29c4a70,\n\t0x29c8a71,\n\t0x29e4a72,\n\t0x29fca79,\n\t0x2a00a7f,\n\t0x2a10a80,\n\t0x2a1ca84,\n\t0x2a50a87,\n\t0x2a54a94,\n\t0x2a6ca95,\n\t0x22a74a9b,\n\t0x22a78a9d,\n\t0x22a80a9e,\n\t0x2b58aa0,\n\t0x22b5cad6,\n\t0x2b64ad7,\n\t0x2b68ad9,\n\t0x22b6cada,\n\t0x2b70adb,\n\t0x2b88adc,\n\t0x2b9cae2,\n\t0x2bc4ae7,\n\t0x2be4af1,\n\t0x2c14af9,\n\t0x2c3cb05,\n\t0x2c40b0f,\n\t0x2c64b10,\n\t0x2c68b19,\n\t0x2c7cb1a,\n\t0x2c80b1f,\n\t0x2c84b20,\n\t0x2ca4b21,\n\t0x2cc0b29,\n\t0x2cc4b30,\n\t0x22cc8b31,\n\t0x2cccb32,\n\t0x2cd0b33,\n\t0x2ce0b34,\n\t0x2ce4b38,\n\t0x2d5cb39,\n\t0x2d60b57,\n\t0x2d64b58,\n\t0x2d84b59,\n\t0x2d94b61,\n\t0x2da8b65,\n\t0x2dc0b6a,\n\t0x2dd8b70,\n\t0x2df0b76,\n\t0x2df4b7c,\n\t0x2e0cb7d,\n\t0x2e28b83,\n\t0x2e48b8a,\n\t0x2e68b92,\n\t0x2e84b9a,\n\t0x2ee4ba1,\n\t0x2f00bb9,\n\t0x2f10bc0,\n\t0x2f14bc4,\n\t0x2f28bc5,\n\t0x2f6cbca,\n\t0x2fecbdb,\n\t0x3020bfb,\n\t0x3024c08,\n\t0x3030c09,\n\t0x3050c0c,\n\t0x3054c14,\n\t0x3078c15,\n\t0x3080c1e,\n\t0x30bcc20,\n\t0x310cc2f,\n\t0x3110c43,\n\t0x319cc44,\n\t0x31a0c67,\n\t0x231a4c68,\n\t0x231a8c69,\n\t0x231acc6a,\n\t0x231bcc6b,\n\t0x231c0c6f,\n\t0x231c4c70,\n\t0x231c8c71,\n\t0x231ccc72,\n\t0x31e4c73,\n\t0x3208c79,\n\t0x3228c82,\n\t0x3890c8a,\n\t0x389ce24,\n\t0x38bce27,\n\t0x3a78e2f,\n\t0x3b48e9e,\n\t0x3bb8ed2,\n\t0x3c10eee,\n\t0x3cf8f04,\n\t0x3d50f3e,\n\t0x3d8cf54,\n\t0x3e88f63,\n\t0x3f54fa2,\n\t0x3fecfd5,\n\t0x407cffb,\n\t0x40e101f,\n\t0x4319038,\n\t0x43d10c6,\n\t0x449d0f4,\n\t0x44e9127,\n\t0x457113a,\n\t0x45ad15c,\n\t0x45fd16b,\n\t0x467517f,\n\t0x6467919d,\n\t0x6467d19e,\n\t0x6468119f,\n\t0x46fd1a0,\n\t0x47591bf,\n\t0x47d51d6,\n\t0x484d1f5,\n\t0x48cd213,\n\t0x4939233,\n\t0x4a6524e,\n\t0x4abd299,\n\t0x64ac12af,\n\t0x4b592b0,\n\t0x4be12d6,\n\t0x4c2d2f8,\n\t0x4c9530b,\n\t0x4d3d325,\n\t0x4e0534f,\n\t0x4e6d381,\n\t0x4f8139b,\n\t0x64f853e0,\n\t0x64f893e1,\n\t0x4fe53e2,\n\t0x50413f9,\n\t0x50d1410,\n\t0x514d434,\n\t0x5191453,\n\t0x5275464,\n\t0x52a949d,\n\t0x53094aa,\n\t0x537d4c2,\n\t0x54054df,\n\t0x5445501,\n\t0x54b5511,\n\t0x654b952d,\n\t0x54e152e,\n\t0x54e5538,\n\t0x54fd539,\n\t0x551953f,\n\t0x555d546,\n\t0x556d557,\n\t0x558555b,\n\t0x55fd561,\n\t0x560557f,\n\t0x5621581,\n\t0x5635588,\n\t0x565158d,\n\t0x567d594,\n\t0x568159f,\n\t0x56895a0,\n\t0x569d5a2,\n\t0x56bd5a7,\n\t0x56c95af,\n\t0x56d15b2,\n\t0x570d5b4,\n\t0x57215c3,\n\t0x57295c8,\n\t0x57355ca,\n\t0x573d5cd,\n\t0x57615cf,\n\t0x57855d8,\n\t0x579d5e1,\n\t0x57a15e7,\n\t0x57a95e8,\n\t0x57ad5ea,\n\t0x58295eb,\n\t0x582d60a,\n\t0x583160b,\n\t0x585560c,\n\t0x5879615,\n\t0x589561e,\n\t0x58a9625,\n\t0x58bd62a,\n\t0x58c562f,\n\t0x58cd631,\n\t0x58e1633,\n\t0x58f1638,\n\t0x58f563c,\n\t0x591163d,\n\t0x61a1644,\n\t0x61d9868,\n\t0x6205876,\n\t0x6221881,\n\t0x6241888,\n\t0x6261890,\n\t0x62a5898,\n\t0x62ad8a9,\n\t0x262b18ab,\n\t0x262b58ac,\n\t0x62bd8ad,\n\t0x64658af,\n\t0x26469919,\n\t0x2647991a,\n\t0x2648191e,\n\t0x2648d920,\n\t0x6491923,\n\t0x6495924,\n\t0x64bd925,\n\t0x64e592f,\n\t0x64e9939,\n\t0x652193a,\n\t0x6541948,\n\t0x7099950,\n\t0x709dc26,\n\t0x70a1c27,\n\t0x270a5c28,\n\t0x70a9c29,\n\t0x270adc2a,\n\t0x70b1c2b,\n\t0x270bdc2c,\n\t0x70c1c2f,\n\t0x70c5c30,\n\t0x270c9c31,\n\t0x70cdc32,\n\t0x270d5c33,\n\t0x70d9c35,\n\t0x70ddc36,\n\t0x270edc37,\n\t0x70f1c3b,\n\t0x70f5c3c,\n\t0x70f9c3d,\n\t0x70fdc3e,\n\t0x27101c3f,\n\t0x7105c40,\n\t0x7109c41,\n\t0x710dc42,\n\t0x7111c43,\n\t0x27119c44,\n\t0x711dc46,\n\t0x7121c47,\n\t0x7125c48,\n\t0x27129c49,\n\t0x712dc4a,\n\t0x27135c4b,\n\t0x27139c4d,\n\t0x7155c4e,\n\t0x7165c55,\n\t0x71a9c59,\n\t0x71adc6a,\n\t0x71d1c6b,\n\t0x71d5c74,\n\t0x71d9c75,\n\t0x7381c76,\n\t0x27385ce0,\n\t0x2738dce1,\n\t0x27391ce3,\n\t0x27395ce4,\n\t0x739dce5,\n\t0x7479ce7,\n\t0x27485d1e,\n\t0x27489d21,\n\t0x2748dd22,\n\t0x27491d23,\n\t0x7495d24,\n\t0x74c1d25,\n\t0x74c5d30,\n\t0x74e9d31,\n\t0x74f5d3a,\n\t0x7515d3d,\n\t0x7519d45,\n\t0x7551d46,\n\t0x77e9d54,\n\t0x78a5dfa,\n\t0x78a9e29,\n\t0x78bde2a,\n\t0x78f1e2f,\n\t0x7929e3c,\n\t0x2792de4a,\n\t0x7949e4b,\n\t0x7971e52,\n\t0x7975e5c,\n\t0x7999e5d,\n\t0x79b5e66,\n\t0x79dde6d,\n\t0x79ede77,\n\t0x79f1e7b,\n\t0x79f5e7c,\n\t0x7a2de7d,\n\t0x7a39e8b,\n\t0x7a5de8e,\n\t0x7adde97,\n\t0x27ae1eb7,\n\t0x7af1eb8,\n\t0x7af9ebc,\n\t0x7b1debe,\n\t0x7b3dec7,\n\t0x7b51ecf,\n\t0x7b65ed4,\n\t0x7b69ed9,\n\t0x7b89eda,\n\t0x7c2dee2,\n\t0x7c49f0b,\n\t0x7c6df12,\n\t0x7c71f1b,\n\t0x7c79f1c,\n\t0x7c89f1e,\n\t0x7c91f22,\n\t0x7ca5f24,\n\t0x7cc5f29,\n\t0x7cd1f31,\n\t0x7cddf34,\n\t0x7d15f37,\n\t0x7de9f45,\n\t0x7dedf7a,\n\t0x7e01f7b,\n\t0x7e09f80,\n\t0x7e21f82,\n\t0x7e25f88,\n\t0x7e31f89,\n\t0x7e35f8c,\n\t0x7e51f8d,\n\t0x7e91f94,\n\t0x7e95fa4,\n\t0x7eb5fa5,\n\t0x7f05fad,\n\t0x7f21fc1,\n\t0x7f29fc8,\n\t0x7f7dfca,\n\t0x7f81fdf,\n\t0x7f85fe0,\n\t0x7f89fe1,\n\t0x7fcdfe2,\n\t0x7fddff3,\n\t0x801dff7,\n\t0x8022007,\n\t0x8052008,\n\t0x819a014,\n\t0x81c2066,\n\t0x81f2070,\n\t0x820e07c,\n\t0x8216083,\n\t0x8222085,\n\t0x8336088,\n\t0x83420cd,\n\t0x834e0d0,\n\t0x835a0d3,\n\t0x83660d6,\n\t0x83720d9,\n\t0x837e0dc,\n\t0x838a0df,\n\t0x83960e2,\n\t0x83a20e5,\n\t0x83ae0e8,\n\t0x83ba0eb,\n\t0x83c60ee,\n\t0x83d20f1,\n\t0x83da0f4,\n\t0x83e60f6,\n\t0x83f20f9,\n\t0x83fe0fc,\n\t0x840a0ff,\n\t0x8416102,\n\t0x8422105,\n\t0x842e108,\n\t0x843a10b,\n\t0x844610e,\n\t0x8452111,\n\t0x845e114,\n\t0x848a117,\n\t0x8496122,\n\t0x84a2125,\n\t0x84ae128,\n\t0x84ba12b,\n\t0x84c612e,\n\t0x84ce131,\n\t0x84da133,\n\t0x84e6136,\n\t0x84f2139,\n\t0x84fe13c,\n\t0x850a13f,\n\t0x8516142,\n\t0x8522145,\n\t0x852e148,\n\t0x853a14b,\n\t0x854614e,\n\t0x8552151,\n\t0x855e154,\n\t0x856a157,\n\t0x857215a,\n\t0x857e15c,\n\t0x858a15f,\n\t0x8596162,\n\t0x85a2165,\n\t0x85ae168,\n\t0x85ba16b,\n\t0x85c616e,\n\t0x85d2171,\n\t0x85d6174,\n\t0x85e2175,\n\t0x85fe178,\n\t0x860217f,\n\t0x8612180,\n\t0x862e184,\n\t0x867218b,\n\t0x867619c,\n\t0x868a19d,\n\t0x86be1a2,\n\t0x86ce1af,\n\t0x86f21b3,\n\t0x870a1bc,\n\t0x87221c2,\n\t0x873a1c8,\n\t0x874a1ce,\n\t0x2878e1d2,\n\t0x87921e3,\n\t0x87be1e4,\n\t0x87c61ef,\n\t0x87da1f1,\n}\n\n// max children 524 (capacity 1023)\n// max text offset 29871 (capacity 32767)\n// max text length 36 (capacity 63)\n// max hi 8694 (capacity 16383)\n// max lo 8689 (capacity 16383)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/.gitignore",
    "content": "_obj/\nunix.test\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/README.md",
    "content": "# Building `sys/unix`\n\nThe sys/unix package provides access to the raw system call interface of the\nunderlying operating system. See: https://godoc.org/golang.org/x/sys/unix\n\nPorting Go to a new architecture/OS combination or adding syscalls, types, or\nconstants to an existing architecture/OS pair requires some manual effort;\nhowever, there are tools that automate much of the process.\n\n## Build Systems\n\nThere are currently two ways we generate the necessary files. We are currently\nmigrating the build system to use containers so the builds are reproducible.\nThis is being done on an OS-by-OS basis. Please update this documentation as\ncomponents of the build system change.\n\n### Old Build System (currently for `GOOS != \"Linux\" || GOARCH == \"sparc64\"`)\n\nThe old build system generates the Go files based on the C header files\npresent on your system. This means that files\nfor a given GOOS/GOARCH pair must be generated on a system with that OS and\narchitecture. This also means that the generated code can differ from system\nto system, based on differences in the header files.\n\nTo avoid this, if you are using the old build system, only generate the Go\nfiles on an installation with unmodified header files. It is also important to\nkeep track of which version of the OS the files were generated from (ex.\nDarwin 14 vs Darwin 15). This makes it easier to track the progress of changes\nand have each OS upgrade correspond to a single change.\n\nTo build the files for your current OS and architecture, make sure GOOS and\nGOARCH are set correctly and run `mkall.sh`. This will generate the files for\nyour specific system. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, perl, go\n\n### New Build System (currently for `GOOS == \"Linux\" && GOARCH != \"sparc64\"`)\n\nThe new build system uses a Docker container to generate the go files directly\nfrom source checkouts of the kernel and various system libraries. This means\nthat on any platform that supports Docker, all the files using the new build\nsystem can be generated at once, and generated files will not change based on\nwhat the person running the scripts has installed on their computer.\n\nThe OS specific files for the new build system are located in the `${GOOS}`\ndirectory, and the build is coordinated by the `${GOOS}/mkall.go` program. When\nthe kernel or system library updates, modify the Dockerfile at\n`${GOOS}/Dockerfile` to checkout the new release of the source.\n\nTo build all the files under the new build system, you must be on an amd64/Linux\nsystem and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will\nthen generate all of the files for all of the GOOS/GOARCH pairs in the new build\nsystem. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, perl, go, docker\n\n## Component files\n\nThis section describes the various files used in the code generation process.\nIt also contains instructions on how to modify these files to add a new\narchitecture/OS or to add additional syscalls, types, or constants. Note that\nif you are using the new build system, the scripts cannot be called normally.\nThey must be called from within the docker container.\n\n### asm files\n\nThe hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system\ncall dispatch. There are three entry points:\n```\n  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n```\nThe first and second are the standard ones; they differ only in how many\narguments can be passed to the kernel. The third is for low-level use by the\nForkExec wrapper. Unlike the first two, it does not call into the scheduler to\nlet it know that a system call is running.\n\nWhen porting Go to an new architecture/OS, this file must be implemented for\neach GOOS/GOARCH pair.\n\n### mksysnum\n\nMksysnum is a script located at `${GOOS}/mksysnum.pl` (or `mksysnum_${GOOS}.pl`\nfor the old system). This script takes in a list of header files containing the\nsyscall number declarations and parses them to produce the corresponding list of\nGo numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated\nconstants.\n\nAdding new syscall numbers is mostly done by running the build on a sufficiently\nnew installation of the target OS (or updating the source checkouts for the\nnew build system). However, depending on the OS, you make need to update the\nparsing in mksysnum.\n\n### mksyscall.pl\n\nThe `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are\nhand-written Go files which implement system calls (for unix, the specific OS,\nor the specific OS/Architecture pair respectively) that need special handling\nand list `//sys` comments giving prototypes for ones that can be generated.\n\nThe mksyscall.pl script takes the `//sys` and `//sysnb` comments and converts\nthem into syscalls. This requires the name of the prototype in the comment to\nmatch a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function\nprototype can be exported (capitalized) or not.\n\nAdding a new syscall often just requires adding a new `//sys` function prototype\nwith the desired arguments and a capitalized name so it is exported. However, if\nyou want the interface to the syscall to be different, often one will make an\nunexported `//sys` prototype, an then write a custom wrapper in\n`syscall_${GOOS}.go`.\n\n### types files\n\nFor each OS, there is a hand-written Go file at `${GOOS}/types.go` (or\n`types_${GOOS}.go` on the old system). This file includes standard C headers and\ncreates Go type aliases to the corresponding C types. The file is then fed\nthrough godef to get the Go compatible definitions. Finally, the generated code\nis fed though mkpost.go to format the code correctly and remove any hidden or\nprivate identifiers. This cleaned-up code is written to\n`ztypes_${GOOS}_${GOARCH}.go`.\n\nThe hardest part about preparing this file is figuring out which headers to\ninclude and which symbols need to be `#define`d to get the actual data\nstructures that pass through to the kernel system calls. Some C libraries\npreset alternate versions for binary compatibility and translate them on the\nway in and out of system calls, but there is almost always a `#define` that can\nget the real ones.\nSee `types_darwin.go` and `linux/types.go` for examples.\n\nTo add a new type, add in the necessary include statement at the top of the\nfile (if it is not already there) and add in a type alias line. Note that if\nyour type is significantly different on different architectures, you may need\nsome `#if/#elif` macros in your include statements.\n\n### mkerrors.sh\n\nThis script is used to generate the system's various constants. This doesn't\njust include the error numbers and error strings, but also the signal numbers\nan a wide variety of miscellaneous constants. The constants come from the list\nof include files in the `includes_${uname}` variable. A regex then picks out\nthe desired `#define` statements, and generates the corresponding Go constants.\nThe error numbers and strings are generated from `#include <errno.h>`, and the\nsignal numbers and strings are generated from `#include <signal.h>`. All of\nthese constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,\n`_errors.c`, which prints out all the constants.\n\nTo add a constant, add the header that includes it to the appropriate variable.\nThen, edit the regex (if necessary) to match the desired constant. Avoid making\nthe regex too broad to avoid matching unintended constants.\n\n\n## Generated files\n\n### `zerror_${GOOS}_${GOARCH}.go`\n\nA file containing all of the system's generated error numbers, error strings,\nsignal numbers, and constants. Generated by `mkerrors.sh` (see above).\n\n### `zsyscall_${GOOS}_${GOARCH}.go`\n\nA file containing all the generated syscalls for a specific GOOS and GOARCH.\nGenerated by `mksyscall.pl` (see above).\n\n### `zsysnum_${GOOS}_${GOARCH}.go`\n\nA list of numeric constants for all the syscall number of the specific GOOS\nand GOARCH. Generated by mksysnum (see above).\n\n### `ztypes_${GOOS}_${GOARCH}.go`\n\nA file containing Go types for passing into (or returning from) syscalls.\nGenerated by godefs and the types file (see above).\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/affinity_linux.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// CPU affinity functions\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst cpuSetSize = _CPU_SETSIZE / _NCPUBITS\n\n// CPUSet represents a CPU affinity mask.\ntype CPUSet [cpuSetSize]cpuMask\n\nfunc schedAffinity(trap uintptr, pid int, set *CPUSet) error {\n\t_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))\n\tif e != 0 {\n\t\treturn errnoErr(e)\n\t}\n\treturn nil\n}\n\n// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedGetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)\n}\n\n// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedSetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s *CPUSet) Zero() {\n\tfor i := range s {\n\t\ts[i] = 0\n\t}\n}\n\nfunc cpuBitsIndex(cpu int) int {\n\treturn cpu / _NCPUBITS\n}\n\nfunc cpuBitsMask(cpu int) cpuMask {\n\treturn cpuMask(1 << (uint(cpu) % _NCPUBITS))\n}\n\n// Set adds cpu to the set s.\nfunc (s *CPUSet) Set(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] |= cpuBitsMask(cpu)\n\t}\n}\n\n// Clear removes cpu from the set s.\nfunc (s *CPUSet) Clear(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] &^= cpuBitsMask(cpu)\n\t}\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s *CPUSet) IsSet(cpu int) bool {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\treturn s[i]&cpuBitsMask(cpu) != 0\n\t}\n\treturn false\n}\n\n// Count returns the number of CPUs in the set s.\nfunc (s *CPUSet) Count() int {\n\tc := 0\n\tfor _, b := range s {\n\t\tc += onesCount64(uint64(b))\n\t}\n\treturn c\n}\n\n// onesCount64 is a copy of Go 1.9's math/bits.OnesCount64.\n// Once this package can require Go 1.9, we can delete this\n// and update the caller to use bits.OnesCount64.\nfunc onesCount64(x uint64) int {\n\tconst m0 = 0x5555555555555555 // 01010101 ...\n\tconst m1 = 0x3333333333333333 // 00110011 ...\n\tconst m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ...\n\tconst m3 = 0x00ff00ff00ff00ff // etc.\n\tconst m4 = 0x0000ffff0000ffff\n\n\t// Implementation: Parallel summing of adjacent bits.\n\t// See \"Hacker's Delight\", Chap. 5: Counting Bits.\n\t// The following pattern shows the general approach:\n\t//\n\t//   x = x>>1&(m0&m) + x&(m0&m)\n\t//   x = x>>2&(m1&m) + x&(m1&m)\n\t//   x = x>>4&(m2&m) + x&(m2&m)\n\t//   x = x>>8&(m3&m) + x&(m3&m)\n\t//   x = x>>16&(m4&m) + x&(m4&m)\n\t//   x = x>>32&(m5&m) + x&(m5&m)\n\t//   return int(x)\n\t//\n\t// Masking (& operations) can be left away when there's no\n\t// danger that a field's sum will carry over into the next\n\t// field: Since the result cannot be > 64, 8 bits is enough\n\t// and we can ignore the masks for the shifts by 8 and up.\n\t// Per \"Hacker's Delight\", the first line can be simplified\n\t// more, but it saves at best one instruction, so we leave\n\t// it alone for clarity.\n\tconst m = 1<<64 - 1\n\tx = x>>1&(m0&m) + x&(m0&m)\n\tx = x>>2&(m1&m) + x&(m1&m)\n\tx = (x>>4 + x) & (m2 & m)\n\tx += x >> 8\n\tx += x >> 16\n\tx += x >> 32\n\treturn int(x) & (1<<7 - 1)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n// +build go1.9\n\npackage unix\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_darwin_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, Darwin\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, Darwin\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_darwin_arm.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n// +build arm,darwin\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, Darwin\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n// +build arm64,darwin\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, Darwin\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, DragonFly\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_freebsd_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, FreeBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, FreeBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, FreeBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for 386, Linux\n//\n\n// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80\n// instead of the glibc-specific \"CALL 0x10(GS)\".\n#define INVOKE_SYSCALL\tINT\t$0x80\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tCALL\truntime·entersyscall(SB)\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tRET\n\nTEXT ·socketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·socketcall(SB)\n\nTEXT ·rawsocketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·rawsocketcall(SB)\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·seek(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for AMD64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tRET\n\nTEXT ·gettimeofday(SB),NOSPLIT,$0-16\n\tJMP\tsyscall·gettimeofday(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_arm.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for arm, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tBL\truntime·entersyscall(SB)\n\tMOVW\ttrap+0(FP), R7\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tMOVW\t$0, R3\n\tMOVW\t$0, R4\n\tMOVW\t$0, R5\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ttrap+0(FP), R7\t// syscall entry\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tRET\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tB\tsyscall·seek(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build arm64\n// +build !gccgo\n\n#include \"textflag.h\"\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\t// r1\n\tMOVD\tR1, r2+40(FP)\t// r2\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\n\tMOVD\tR1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build mips64 mips64le\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for mips64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build mips mipsle\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for mips, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP syscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·Syscall6(SB)\n\nTEXT ·Syscall9(SB),NOSPLIT,$0-52\n\tJMP syscall·Syscall9(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tJAL\truntime·entersyscall(SB)\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\tR0, R7\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\t// r1\n\tMOVW\tR3, r2+20(FP)\t// r2\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP syscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\n\tMOVW\tR3, r2+20(FP)\n\tRET\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build ppc64 ppc64le\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_linux_s390x.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build s390x\n// +build linux\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for s390x, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_netbsd_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, NetBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, NetBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, NetBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_openbsd_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/bluetooth_linux.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Bluetooth sockets and messages\n\npackage unix\n\n// Bluetooth Protocols\nconst (\n\tBTPROTO_L2CAP  = 0\n\tBTPROTO_HCI    = 1\n\tBTPROTO_SCO    = 2\n\tBTPROTO_RFCOMM = 3\n\tBTPROTO_BNEP   = 4\n\tBTPROTO_CMTP   = 5\n\tBTPROTO_HIDP   = 6\n\tBTPROTO_AVDTP  = 7\n)\n\nconst (\n\tHCI_CHANNEL_RAW     = 0\n\tHCI_CHANNEL_USER    = 1\n\tHCI_CHANNEL_MONITOR = 2\n\tHCI_CHANNEL_CONTROL = 3\n)\n\n// Socketoption Level\nconst (\n\tSOL_BLUETOOTH = 0x112\n\tSOL_HCI       = 0x0\n\tSOL_L2CAP     = 0x6\n\tSOL_RFCOMM    = 0x12\n\tSOL_SCO       = 0x11\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/cap_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build freebsd\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c\n\nconst (\n\t// This is the version of CapRights this package understands. See C implementation for parallels.\n\tcapRightsGoVersion = CAP_RIGHTS_VERSION_00\n\tcapArSizeMin       = CAP_RIGHTS_VERSION_00 + 2\n\tcapArSizeMax       = capRightsGoVersion + 2\n)\n\nvar (\n\tbit2idx = []int{\n\t\t-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,\n\t\t4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t}\n)\n\nfunc capidxbit(right uint64) int {\n\treturn int((right >> 57) & 0x1f)\n}\n\nfunc rightToIndex(right uint64) (int, error) {\n\tidx := capidxbit(right)\n\tif idx < 0 || idx >= len(bit2idx) {\n\t\treturn -2, fmt.Errorf(\"index for right 0x%x out of range\", right)\n\t}\n\treturn bit2idx[idx], nil\n}\n\nfunc caprver(right uint64) int {\n\treturn int(right >> 62)\n}\n\nfunc capver(rights *CapRights) int {\n\treturn caprver(rights.Rights[0])\n}\n\nfunc caparsize(rights *CapRights) int {\n\treturn capver(rights) + 2\n}\n\n// CapRightsSet sets the permissions in setrights in rights.\nfunc CapRightsSet(rights *CapRights, setrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] |= right\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsClear clears the permissions in clearrights from rights.\nfunc CapRightsClear(rights *CapRights, clearrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vclear()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range clearrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsIsSet checks whether all the permissions in setrights are present in rights.\nfunc CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {\n\t// This is essentially a copy of cap_rights_is_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn false, fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn false, errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn false, errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn false, errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn false, errors.New(\"index mismatch\")\n\t\t}\n\t\tif (rights.Rights[i] & right) != right {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc capright(idx uint64, bit uint64) uint64 {\n\treturn ((1 << (57 + idx)) | bit)\n}\n\n// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.\n// See man cap_rights_init(3) and rights(4).\nfunc CapRightsInit(rights []uint64) (*CapRights, error) {\n\tvar r CapRights\n\tr.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)\n\tr.Rights[1] = capright(1, 0)\n\n\terr := CapRightsSet(&r, rights)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &r, nil\n}\n\n// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.\n// The capability rights on fd can never be increased by CapRightsLimit.\n// See man cap_rights_limit(2) and rights(4).\nfunc CapRightsLimit(fd uintptr, rights *CapRights) error {\n\treturn capRightsLimit(int(fd), rights)\n}\n\n// CapRightsGet returns a CapRights structure containing the operations permitted on fd.\n// See man cap_rights_get(3) and rights(4).\nfunc CapRightsGet(fd uintptr) (*CapRights, error) {\n\tr, err := CapRightsInit(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = capRightsGet(capRightsGoVersion, int(fd), r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/constants.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nconst (\n\tR_OK = 0x4\n\tW_OK = 0x2\n\tX_OK = 0x1\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix\n// +build ppc\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0xffff)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn uint64(((major) << 16) | (minor))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix\n// +build ppc64\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x3fffffff00000000) >> 32)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32((dev & 0x00000000ffffffff) >> 0)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tvar DEVNO64 uint64\n\tDEVNO64 = 0x8000000000000000\n\treturn ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_darwin.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Darwin's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a Darwin device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 24) & 0xff)\n}\n\n// Minor returns the minor component of a Darwin device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffffff)\n}\n\n// Mkdev returns a Darwin device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 24) | uint64(minor)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_dragonfly.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Dragonfly's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a DragonFlyBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a DragonFlyBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a DragonFlyBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in FreeBSD's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a FreeBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a FreeBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a FreeBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_linux.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by the Linux kernel and glibc.\n//\n// The information below is extracted and adapted from bits/sysmacros.h in the\n// glibc sources:\n//\n// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's\n// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major\n// number and m is a hex digit of the minor number. This is backward compatible\n// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also\n// backward compatible with the Linux kernel, which for some architectures uses\n// 32-bit dev_t, encoded as mmmM MMmm.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\tmajor := uint32((dev & 0x00000000000fff00) >> 8)\n\tmajor |= uint32((dev & 0xfffff00000000000) >> 32)\n\treturn major\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x00000000000000ff) >> 0)\n\tminor |= uint32((dev & 0x00000ffffff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) & 0x00000fff) << 8\n\tdev |= (uint64(major) & 0xfffff000) << 32\n\tdev |= (uint64(minor) & 0x000000ff) << 0\n\tdev |= (uint64(minor) & 0xffffff00) << 12\n\treturn dev\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_netbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in NetBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a NetBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x000fff00) >> 8)\n}\n\n// Minor returns the minor component of a NetBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xfff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a NetBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x000fff00\n\tdev |= (uint64(minor) << 12) & 0xfff00000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dev_openbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in OpenBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of an OpenBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x0000ff00) >> 8)\n}\n\n// Minor returns the minor component of an OpenBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xffff0000) >> 8)\n\treturn minor\n}\n\n// Mkdev returns an OpenBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x0000ff00\n\tdev |= (uint64(minor) << 8) & 0xffff0000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/dirent.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris\n\npackage unix\n\nimport \"syscall\"\n\n// ParseDirent parses up to max directory entries in buf,\n// appending the names to names. It returns the number of\n// bytes consumed from buf, the number of entries added\n// to names, and the new names slice.\nfunc ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {\n\treturn syscall.ParseDirent(buf, max, names)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/endian_big.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n// +build ppc64 s390x mips mips64\n\npackage unix\n\nconst isBigEndian = true\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/endian_little.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le\n\npackage unix\n\nconst isBigEndian = false\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/env_unix.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\n// Unix environment variables.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/errors_freebsd_386.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep\n// them here for backwards compatibility.\n\npackage unix\n\nconst (\n\tIFF_SMART                         = 0x20\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BSC                           = 0x53\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_IPXIP                         = 0xf9\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf6\n\tIFT_PFSYNC                        = 0xf7\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIPPROTO_MAXID                     = 0x34\n\tIPV6_FAITH                        = 0x1d\n\tIP_FAITH                          = 0x16\n\tMAP_NORESERVE                     = 0x40\n\tMAP_RENAME                        = 0x20\n\tNET_RT_MAXID                      = 0x6\n\tRTF_PRCLONING                     = 0x10000\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep\n// them here for backwards compatibility.\n\npackage unix\n\nconst (\n\tIFF_SMART                         = 0x20\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BSC                           = 0x53\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_IPXIP                         = 0xf9\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf6\n\tIFT_PFSYNC                        = 0xf7\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIPPROTO_MAXID                     = 0x34\n\tIPV6_FAITH                        = 0x1d\n\tIP_FAITH                          = 0x16\n\tMAP_NORESERVE                     = 0x40\n\tMAP_RENAME                        = 0x20\n\tNET_RT_MAXID                      = 0x6\n\tRTF_PRCLONING                     = 0x10000\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tSIOCADDRT                         = 0x8040720a\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCDELRT                         = 0x8040720b\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nconst (\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BSC                           = 0x53\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf6\n\tIFT_PFSYNC                        = 0xf7\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\n\t// missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go\n\tIFF_SMART       = 0x20\n\tIFT_FAITH       = 0xf2\n\tIFT_IPXIP       = 0xf9\n\tIPPROTO_MAXID   = 0x34\n\tIPV6_FAITH      = 0x1d\n\tIP_FAITH        = 0x16\n\tMAP_NORESERVE   = 0x40\n\tMAP_RENAME      = 0x20\n\tNET_RT_MAXID    = 0x6\n\tRTF_PRCLONING   = 0x10000\n\tRTM_OLDADD      = 0x9\n\tRTM_OLDDEL      = 0xa\n\tSIOCADDRT       = 0x8030720a\n\tSIOCALIFADDR    = 0x8118691b\n\tSIOCDELRT       = 0x8030720b\n\tSIOCDLIFADDR    = 0x8118691d\n\tSIOCGLIFADDR    = 0xc118691c\n\tSIOCGLIFPHYADDR = 0xc118694b\n\tSIOCSLIFPHYADDR = 0x8118694a\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/fcntl.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build darwin dragonfly freebsd linux netbsd openbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux\n// systems by flock_linux_32bit.go to be SYS_FCNTL64.\nvar fcntl64Syscall uintptr = SYS_FCNTL\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg))\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go",
    "content": "// +build linux,386 linux,arm linux,mips linux,mipsle\n\n// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nfunc init() {\n\t// On 32-bit Linux systems, the fcntl syscall that matches Go's\n\t// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.\n\tfcntl64Syscall = SYS_FCNTL64\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/gccgo.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build gccgo\n// +build !aix\n\npackage unix\n\nimport \"syscall\"\n\n// We can't use the gc-syntax .s files for gccgo. On the plus side\n// much of the functionality can be written directly in Go.\n\n//extern gccgoRealSyscallNoError\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\n//extern gccgoRealSyscall\nfunc realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)\n\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tsyscall.Entersyscall()\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0\n}\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0\n}\n\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/gccgo_c.c",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build gccgo\n// +build !aix\n\n#include <errno.h>\n#include <stdint.h>\n#include <unistd.h>\n\n#define _STRINGIFY2_(x) #x\n#define _STRINGIFY_(x) _STRINGIFY2_(x)\n#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)\n\n// Call syscall from C code because the gccgo support for calling from\n// Go to C does not support varargs functions.\n\nstruct ret {\n\tuintptr_t r;\n\tuintptr_t err;\n};\n\nstruct ret\ngccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\tstruct ret r;\n\n\terrno = 0;\n\tr.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\tr.err = errno;\n\treturn r;\n}\n\nuintptr_t\ngccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\treturn syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build gccgo,linux,amd64\n\npackage unix\n\nimport \"syscall\"\n\n//extern gettimeofday\nfunc realGettimeofday(*Timeval, *byte) int32\n\nfunc gettimeofday(tv *Timeval) (err syscall.Errno) {\n\tr := realGettimeofday(tv, nil)\n\tif r < 0 {\n\t\treturn syscall.GetErrno()\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ioctl.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nimport \"runtime\"\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req uint, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\terr := ioctlSetWinsize(fd, req, value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req uint, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\terr := ioctlSetTermios(fd, req, value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mkall.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This script runs or (given -n) prints suggested commands to generate files for\n# the Architecture/OS specified by the GOARCH and GOOS environment variables.\n# See README.md for more information about how the build system works.\n\nGOOSARCH=\"${GOOS}_${GOARCH}\"\n\n# defaults\nmksyscall=\"./mksyscall.pl\"\nmkerrors=\"./mkerrors.sh\"\nzerrors=\"zerrors_$GOOSARCH.go\"\nmksysctl=\"\"\nzsysctl=\"zsysctl_$GOOSARCH.go\"\nmksysnum=\nmktypes=\nrun=\"sh\"\ncmd=\"\"\n\ncase \"$1\" in\n-syscalls)\n\tfor i in zsyscall*go\n\tdo\n\t\t# Run the command line that appears in the first line\n\t\t# of the generated file to regenerate it.\n\t\tsed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i\n\t\trm _$i\n\tdone\n\texit 0\n\t;;\n-n)\n\trun=\"cat\"\n\tcmd=\"echo\"\n\tshift\nesac\n\ncase \"$#\" in\n0)\n\t;;\n*)\n\techo 'usage: mkall.sh [-n]' 1>&2\n\texit 2\nesac\n\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOARCH\" != \"sparc64\" ]]; then\n\t# Use then new build system\n\t# Files generated through docker (use $cmd so you can Ctl-C the build or run)\n\t$cmd docker build --tag generate:$GOOS $GOOS\n\t$cmd docker run --interactive --tty --volume $(dirname \"$(readlink -f \"$0\")\"):/build generate:$GOOS\n\texit\nfi\n\nGOOSARCH_in=syscall_$GOOSARCH.go\ncase \"$GOOSARCH\" in\n_* | *_ | _)\n\techo 'undefined $GOOS_$GOARCH:' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\naix_ppc)\n\tmkerrors=\"$mkerrors -maix32\"\n\tmksyscall=\"./mksyscall_aix_ppc.pl -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\naix_ppc64)\n\tmkerrors=\"$mkerrors -maix64\"\n\tmksyscall=\"./mksyscall_aix_ppc64.pl -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"./mksyscall.pl -l32\"\n\tmksysnum=\"./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksysnum=\"./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndragonfly_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"./mksyscall.pl -dragonfly\"\n\tmksysnum=\"curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"./mksyscall.pl -l32\"\n\tmksysnum=\"curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"./mksyscall.pl -l32 -arm\"\n\tmksysnum=\"curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nlinux_sparc64)\n\tGOOSARCH_in=syscall_linux_sparc64.go\n\tunistd_h=/usr/include/sparc64-linux-gnu/asm/unistd.h\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"./mksysnum_linux.pl $unistd_h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"./mksyscall.pl -l32 -netbsd\"\n\tmksysnum=\"curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"./mksyscall.pl -netbsd\"\n\tmksysnum=\"curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"./mksyscall.pl -l32 -netbsd -arm\"\n\tmksysnum=\"curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"./mksyscall.pl -l32 -openbsd\"\n\tmksysctl=\"./mksysctl_openbsd.pl\"\n\tmksysnum=\"curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"./mksyscall.pl -openbsd\"\n\tmksysctl=\"./mksysctl_openbsd.pl\"\n\tmksysnum=\"curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"./mksyscall.pl -l32 -openbsd -arm\"\n\tmksysctl=\"./mksysctl_openbsd.pl\"\n\tmksysnum=\"curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nsolaris_amd64)\n\tmksyscall=\"./mksyscall_solaris.pl\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\n*)\n\techo 'unrecognized $GOOS_$GOARCH: ' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\nesac\n\n(\n\tif [ -n \"$mkerrors\" ]; then echo \"$mkerrors |gofmt >$zerrors\"; fi\n\tcase \"$GOOS\" in\n\t*)\n\t\tsyscall_goos=\"syscall_$GOOS.go\"\n\t\tcase \"$GOOS\" in\n\t\tdarwin | dragonfly | freebsd | netbsd | openbsd)\n\t\t\tsyscall_goos=\"syscall_bsd.go $syscall_goos\"\n\t\t\t;;\n\t\tesac\n\t\tif [ -n \"$mksyscall\" ]; then\n\t\t\tif [ \"$GOOSARCH\" == \"aix_ppc64\" ]; then\n\t\t\t\t# aix/ppc64 script generates files instead of writing to stdin.\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_\"$GOOSARCH\"_gccgo.go && gofmt -w zsyscall_\"$GOOSARCH\"_gc.go \" ;\n\t\t\telse\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go\";\n\t\t\tfi\n\t\tfi\n\tesac\n\tif [ -n \"$mksysctl\" ]; then echo \"$mksysctl |gofmt >$zsysctl\"; fi\n\tif [ -n \"$mksysnum\" ]; then echo \"$mksysnum |gofmt >zsysnum_$GOOSARCH.go\"; fi\n\tif [ -n \"$mktypes\" ]; then\n\t\techo \"$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go\";\n\tfi\n) | $run\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mkerrors.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# Generate Go code listing errors and other #defined constant\n# values (ENAMETOOLONG etc.), by asking the preprocessor\n# about the definitions.\n\nunset LANG\nexport LC_ALL=C\nexport LC_CTYPE=C\n\nif test -z \"$GOARCH\" -o -z \"$GOOS\"; then\n\techo 1>&2 \"GOARCH or GOOS not defined in environment\"\n\texit 1\nfi\n\n# Check that we are using the new build system if we should\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOARCH\" != \"sparc64\" ]]; then\n\tif [[ \"$GOLANG_SYS_BUILD\" != \"docker\" ]]; then\n\t\techo 1>&2 \"In the new build system, mkerrors should not be called directly.\"\n\t\techo 1>&2 \"See README.md\"\n\t\texit 1\n\tfi\nfi\n\nif [[ \"$GOOS\" = \"aix\" ]]; then\n\tCC=${CC:-gcc}\nelse\n\tCC=${CC:-cc}\nfi\n\nif [[ \"$GOOS\" = \"solaris\" ]]; then\n\t# Assumes GNU versions of utilities in PATH.\n\texport PATH=/usr/gnu/bin:$PATH\nfi\n\nuname=$(uname)\n\nincludes_AIX='\n#include <net/if.h>\n#include <net/netopt.h>\n#include <netinet/ip_mroute.h>\n#include <sys/protosw.h>\n#include <sys/stropts.h>\n#include <sys/mman.h>\n#include <sys/poll.h>\n#include <sys/termio.h>\n#include <termios.h>\n#include <fcntl.h>\n\n#define AF_LOCAL AF_UNIX\n'\n\nincludes_Darwin='\n#define _DARWIN_C_SOURCE\n#define KERNEL\n#define _DARWIN_USE_64_BIT_INODE\n#include <stdint.h>\n#include <sys/attr.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/ptrace.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <sys/xattr.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <termios.h>\n'\n\nincludes_DragonFly='\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <net/ip_mroute/ip_mroute.h>\n'\n\nincludes_FreeBSD='\n#include <sys/capsicum.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <sys/extattr.h>\n\n#if __FreeBSD__ >= 10\n#define IFT_CARP\t0xf8\t// IFT_CARP is deprecated in FreeBSD 10\n#undef SIOCAIFADDR\n#define SIOCAIFADDR\t_IOW(105, 26, struct oifaliasreq)\t// ifaliasreq contains if_data\n#undef SIOCSIFPHYADDR\n#define SIOCSIFPHYADDR\t_IOW(105, 70, struct oifaliasreq)\t// ifaliasreq contains if_data\n#endif\n'\n\nincludes_Linux='\n#define _LARGEFILE_SOURCE\n#define _LARGEFILE64_SOURCE\n#ifndef __LP64__\n#define _FILE_OFFSET_BITS 64\n#endif\n#define _GNU_SOURCE\n\n// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of\n// these structures. We just include them copied from <bits/termios.h>.\n#if defined(__powerpc__)\nstruct sgttyb {\n        char    sg_ispeed;\n        char    sg_ospeed;\n        char    sg_erase;\n        char    sg_kill;\n        short   sg_flags;\n};\n\nstruct tchars {\n        char    t_intrc;\n        char    t_quitc;\n        char    t_startc;\n        char    t_stopc;\n        char    t_eofc;\n        char    t_brkc;\n};\n\nstruct ltchars {\n        char    t_suspc;\n        char    t_dsuspc;\n        char    t_rprntc;\n        char    t_flushc;\n        char    t_werasc;\n        char    t_lnextc;\n};\n#endif\n\n#include <bits/sockaddr.h>\n#include <sys/epoll.h>\n#include <sys/eventfd.h>\n#include <sys/inotify.h>\n#include <sys/ioctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/prctl.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/socket.h>\n#include <sys/xattr.h>\n#include <linux/if.h>\n#include <linux/if_alg.h>\n#include <linux/if_arp.h>\n#include <linux/if_ether.h>\n#include <linux/if_ppp.h>\n#include <linux/if_tun.h>\n#include <linux/if_packet.h>\n#include <linux/if_addr.h>\n#include <linux/falloc.h>\n#include <linux/filter.h>\n#include <linux/fs.h>\n#include <linux/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/magic.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netlink.h>\n#include <linux/net_namespace.h>\n#include <linux/perf_event.h>\n#include <linux/random.h>\n#include <linux/reboot.h>\n#include <linux/rtnetlink.h>\n#include <linux/ptrace.h>\n#include <linux/sched.h>\n#include <linux/seccomp.h>\n#include <linux/sockios.h>\n#include <linux/wait.h>\n#include <linux/icmpv6.h>\n#include <linux/serial.h>\n#include <linux/can.h>\n#include <linux/vm_sockets.h>\n#include <linux/taskstats.h>\n#include <linux/genetlink.h>\n#include <linux/watchdog.h>\n#include <linux/hdreg.h>\n#include <linux/rtc.h>\n#include <linux/if_xdp.h>\n#include <mtd/ubi-user.h>\n#include <net/route.h>\n#include <asm/termbits.h>\n\n#ifndef MSG_FASTOPEN\n#define MSG_FASTOPEN    0x20000000\n#endif\n\n#ifndef PTRACE_GETREGS\n#define PTRACE_GETREGS\t0xc\n#endif\n\n#ifndef PTRACE_SETREGS\n#define PTRACE_SETREGS\t0xd\n#endif\n\n#ifndef SOL_NETLINK\n#define SOL_NETLINK\t270\n#endif\n\n#ifdef SOL_BLUETOOTH\n// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h\n// but it is already in bluetooth_linux.go\n#undef SOL_BLUETOOTH\n#endif\n\n// Certain constants are missing from the fs/crypto UAPI\n#define FS_KEY_DESC_PREFIX              \"fscrypt:\"\n#define FS_KEY_DESC_PREFIX_SIZE         8\n#define FS_MAX_KEY_SIZE                 64\n\n// XDP socket constants do not appear to be picked up otherwise.\n// Copied from samples/bpf/xdpsock_user.c.\n#ifndef SOL_XDP\n#define SOL_XDP 283\n#endif\n\n#ifndef AF_XDP\n#define AF_XDP 44\n#endif\n'\n\nincludes_NetBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/extattr.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n\n// Needed since <sys/param.h> refers to it...\n#define schedppq 1\n'\n\nincludes_OpenBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/unistd.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n#include <net/if_bridge.h>\n\n// We keep some constants not supported in OpenBSD 5.5 and beyond for\n// the promise of compatibility.\n#define EMUL_ENABLED\t\t0x1\n#define EMUL_NATIVE\t\t0x2\n#define IPV6_FAITH\t\t0x1d\n#define IPV6_OPTIONS\t\t0x1\n#define IPV6_RTHDR_STRICT\t0x1\n#define IPV6_SOCKOPT_RESERVED1\t0x3\n#define SIOCGIFGENERIC\t\t0xc020693a\n#define SIOCSIFGENERIC\t\t0x80206939\n#define WALTSIG\t\t\t0x4\n'\n\nincludes_SunOS='\n#include <limits.h>\n#include <sys/types.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/mman.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/mkdev.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_arp.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n'\n\n\nincludes='\n#include <sys/types.h>\n#include <sys/file.h>\n#include <fcntl.h>\n#include <dirent.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip6.h>\n#include <netinet/tcp.h>\n#include <errno.h>\n#include <sys/signal.h>\n#include <signal.h>\n#include <sys/resource.h>\n#include <time.h>\n'\nccflags=\"$@\"\n\n# Write go tool cgo -godefs input.\n(\n\techo package unix\n\techo\n\techo '/*'\n\tindirect=\"includes_$(uname)\"\n\techo \"${!indirect} $includes\"\n\techo '*/'\n\techo 'import \"C\"'\n\techo 'import \"syscall\"'\n\techo\n\techo 'const ('\n\n\t# The gcc command line prints all the #defines\n\t# it encounters while processing the input\n\techo \"${!indirect} $includes\" | $CC -x c - -E -dM $ccflags |\n\tawk '\n\t\t$1 != \"#define\" || $2 ~ /\\(/ || $3 == \"\" {next}\n\n\t\t$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers\n\t\t$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}\n\t\t$2 ~ /^(SCM_SRCRT)$/ {next}\n\t\t$2 ~ /^(MAP_FAILED)$/ {next}\n\t\t$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.\n\n\t\t$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||\n\t\t$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}\n\n\t\t$2 !~ /^ECCAPBITS/ &&\n\t\t$2 !~ /^ETH_/ &&\n\t\t$2 !~ /^EPROC_/ &&\n\t\t$2 !~ /^EQUIV_/ &&\n\t\t$2 !~ /^EXPR_/ &&\n\t\t$2 ~ /^E[A-Z0-9_]+$/ ||\n\t\t$2 ~ /^B[0-9_]+$/ ||\n\t\t$2 ~ /^(OLD|NEW)DEV$/ ||\n\t\t$2 == \"BOTHER\" ||\n\t\t$2 ~ /^CI?BAUD(EX)?$/ ||\n\t\t$2 == \"IBSHIFT\" ||\n\t\t$2 ~ /^V[A-Z0-9]+$/ ||\n\t\t$2 ~ /^CS[A-Z0-9]/ ||\n\t\t$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||\n\t\t$2 ~ /^IGN/ ||\n\t\t$2 ~ /^IX(ON|ANY|OFF)$/ ||\n\t\t$2 ~ /^IN(LCR|PCK)$/ ||\n\t\t$2 !~ \"X86_CR3_PCID_NOFLUSH\" &&\n\t\t$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||\n\t\t$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||\n\t\t$2 == \"BRKINT\" ||\n\t\t$2 == \"HUPCL\" ||\n\t\t$2 == \"PENDIN\" ||\n\t\t$2 == \"TOSTOP\" ||\n\t\t$2 == \"XCASE\" ||\n\t\t$2 == \"ALTWERASE\" ||\n\t\t$2 == \"NOKERNINFO\" ||\n\t\t$2 ~ /^PAR/ ||\n\t\t$2 ~ /^SIG[^_]/ ||\n\t\t$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||\n\t\t$2 ~ /^O?XTABS$/ ||\n\t\t$2 ~ /^TC[IO](ON|OFF)$/ ||\n\t\t$2 ~ /^IN_/ ||\n\t\t$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||\n\t\t$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||\n\t\t$2 ~ /^TP_STATUS_/ ||\n\t\t$2 ~ /^FALLOC_/ ||\n\t\t$2 == \"ICMPV6_FILTER\" ||\n\t\t$2 == \"SOMAXCONN\" ||\n\t\t$2 == \"NAME_MAX\" ||\n\t\t$2 == \"IFNAMSIZ\" ||\n\t\t$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||\n\t\t$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||\n\t\t$2 ~ /^HW_MACHINE$/ ||\n\t\t$2 ~ /^SYSCTL_VERS/ ||\n\t\t$2 !~ \"MNT_BITS\" &&\n\t\t$2 ~ /^(MS|MNT|UMOUNT)_/ ||\n\t\t$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||\n\t\t$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ ||\n\t\t$2 ~ /^KEXEC_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_CMD_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||\n\t\t$2 ~ /^MODULE_INIT_/ ||\n\t\t$2 !~ \"NLA_TYPE_MASK\" &&\n\t\t$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||\n\t\t$2 ~ /^SIOC/ ||\n\t\t$2 ~ /^TIOC/ ||\n\t\t$2 ~ /^TCGET/ ||\n\t\t$2 ~ /^TCSET/ ||\n\t\t$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||\n\t\t$2 !~ \"RTF_BITS\" &&\n\t\t$2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||\n\t\t$2 ~ /^BIOC/ ||\n\t\t$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||\n\t\t$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||\n\t\t$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||\n\t\t$2 ~ /^CLONE_[A-Z_]+/ ||\n\t\t$2 !~ /^(BPF_TIMEVAL)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 ~ /^CLOCK_/ ||\n\t\t$2 ~ /^CAN_/ ||\n\t\t$2 ~ /^CAP_/ ||\n\t\t$2 ~ /^ALG_/ ||\n\t\t$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ ||\n\t\t$2 ~ /^GRND_/ ||\n\t\t$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||\n\t\t$2 ~ /^KEYCTL_/ ||\n\t\t$2 ~ /^PERF_EVENT_IOC_/ ||\n\t\t$2 ~ /^SECCOMP_MODE_/ ||\n\t\t$2 ~ /^SPLICE_/ ||\n\t\t$2 ~ /^SYNC_FILE_RANGE_/ ||\n\t\t$2 !~ /^AUDIT_RECORD_MAGIC/ &&\n\t\t$2 !~ /IOC_MAGIC/ &&\n\t\t$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||\n\t\t$2 ~ /^(VM|VMADDR)_/ ||\n\t\t$2 ~ /^IOCTL_VM_SOCKETS_/ ||\n\t\t$2 ~ /^(TASKSTATS|TS)_/ ||\n\t\t$2 ~ /^CGROUPSTATS_/ ||\n\t\t$2 ~ /^GENL_/ ||\n\t\t$2 ~ /^STATX_/ ||\n\t\t$2 ~ /^RENAME/ ||\n\t\t$2 ~ /^UBI_IOC[A-Z]/ ||\n\t\t$2 ~ /^UTIME_/ ||\n\t\t$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||\n\t\t$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||\n\t\t$2 ~ /^FSOPT_/ ||\n\t\t$2 ~ /^WDIOC_/ ||\n\t\t$2 ~ /^NFN/ ||\n\t\t$2 ~ /^XDP_/ ||\n\t\t$2 ~ /^(HDIO|WIN|SMART)_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ ||\n\t\t$2 ~/^PPPIOC/ ||\n\t\t$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf(\"\\t%s = C.%s\\n\", $2, $2)}\n\t\t$2 ~ /^__WCOREFLAG$/ {next}\n\t\t$2 ~ /^__W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", substr($2,3), $2)}\n\n\t\t{next}\n\t' | sort\n\n\techo ')'\n) >_const.go\n\n# Pull out the error names for later.\nerrors=$(\n\techo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |\n\tsort\n)\n\n# Pull out the signal names for later.\nsignals=$(\n\techo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |\n\tegrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort\n)\n\n# Again, writing regexps to a file.\necho '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tsort >_error.grep\necho '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tegrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort >_signal.grep\n\necho '// mkerrors.sh' \"$@\"\necho '// Code generated by the command above; see README.md. DO NOT EDIT.'\necho\necho \"// +build ${GOARCH},${GOOS}\"\necho\ngo tool cgo -godefs -- \"$@\" _const.go >_error.out\ncat _error.out | grep -vf _error.grep | grep -vf _signal.grep\necho\necho '// Errors'\necho 'const ('\ncat _error.out | grep -f _error.grep | sed 's/=\\(.*\\)/= syscall.Errno(\\1)/'\necho ')'\n\necho\necho '// Signals'\necho 'const ('\ncat _error.out | grep -f _signal.grep | sed 's/=\\(.*\\)/= syscall.Signal(\\1)/'\necho ')'\n\n# Run C program to print error and syscall strings.\n(\n\techo -E \"\n#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\n#include <ctype.h>\n#include <string.h>\n#include <signal.h>\n\n#define nelem(x) (sizeof(x)/sizeof((x)[0]))\n\nenum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below\n\nstruct tuple {\n\tint num;\n\tconst char *name;\n};\n\nstruct tuple errors[] = {\n\"\n\tfor i in $errors\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\techo -E \"\n};\n\nstruct tuple signals[] = {\n\"\n\tfor i in $signals\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\t# Use -E because on some systems bash builtin interprets \\n itself.\n\techo -E '\n};\n\nstatic int\ntuplecmp(const void *a, const void *b)\n{\n\treturn ((struct tuple *)a)->num - ((struct tuple *)b)->num;\n}\n\nint\nmain(void)\n{\n\tint i, e;\n\tchar buf[1024], *p;\n\n\tprintf(\"\\n\\n// Error table\\n\");\n\tprintf(\"var errorList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Errno\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(errors, nelem(errors), sizeof errors[0], tuplecmp);\n\tfor(i=0; i<nelem(errors); i++) {\n\t\te = errors[i].num;\n\t\tif(i > 0 && errors[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrcpy(buf, strerror(e));\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, errors[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\tprintf(\"\\n\\n// Signal table\\n\");\n\tprintf(\"var signalList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Signal\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(signals, nelem(signals), sizeof signals[0], tuplecmp);\n\tfor(i=0; i<nelem(signals); i++) {\n\t\te = signals[i].num;\n\t\tif(i > 0 && signals[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrcpy(buf, strsignal(e));\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\t// cut trailing : number.\n\t\tp = strrchr(buf, \":\"[0]);\n\t\tif(p)\n\t\t\t*p = '\\0';\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, signals[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\treturn 0;\n}\n\n'\n) >_errors.c\n\n$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mkpost.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n// mkpost processes the output of cgo -godefs to\n// modify the generated types. It is used to clean up\n// the sys API in an architecture specific manner.\n//\n// mkpost is run after cgo -godefs; see README.md.\npackage main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/format\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"regexp\"\n)\n\nfunc main() {\n\t// Get the OS and architecture (using GOARCH_TARGET if it exists)\n\tgoos := os.Getenv(\"GOOS\")\n\tgoarch := os.Getenv(\"GOARCH_TARGET\")\n\tif goarch == \"\" {\n\t\tgoarch = os.Getenv(\"GOARCH\")\n\t}\n\t// Check that we are using the new build system if we should be.\n\tif goos == \"linux\" && goarch != \"sparc64\" {\n\t\tif os.Getenv(\"GOLANG_SYS_BUILD\") != \"docker\" {\n\t\t\tos.Stderr.WriteString(\"In the new build system, mkpost should not be called directly.\\n\")\n\t\t\tos.Stderr.WriteString(\"See README.md\\n\")\n\t\t\tos.Exit(1)\n\t\t}\n\t}\n\n\tb, err := ioutil.ReadAll(os.Stdin)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Intentionally export __val fields in Fsid and Sigset_t\n\tvalRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\\s+)X__val(\\s+\\S+\\s+)}`)\n\tb = valRegex.ReplaceAll(b, []byte(\"type $1 struct {${2}Val$3}\"))\n\n\t// Intentionally export __fds_bits field in FdSet\n\tfdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\\s+)X__fds_bits(\\s+\\S+\\s+)}`)\n\tb = fdSetRegex.ReplaceAll(b, []byte(\"type $1 struct {${2}Bits$3}\"))\n\n\t// If we have empty Ptrace structs, we should delete them. Only s390x emits\n\t// nonempty Ptrace structs.\n\tptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\\s*})`)\n\tb = ptraceRexexp.ReplaceAll(b, nil)\n\n\t// Replace the control_regs union with a blank identifier for now.\n\tcontrolRegsRegex := regexp.MustCompile(`(Control_regs)\\s+\\[0\\]uint64`)\n\tb = controlRegsRegex.ReplaceAll(b, []byte(\"_ [0]uint64\"))\n\n\t// Remove fields that are added by glibc\n\t// Note that this is unstable as the identifers are private.\n\tremoveFieldsRegex := regexp.MustCompile(`X__glibc\\S*`)\n\tb = removeFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Convert [65]int8 to [65]byte in Utsname members to simplify\n\t// conversion to string; see golang.org/issue/20753\n\tconvertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\\s+)\\[(\\d+)\\]u?int8`)\n\tb = convertUtsnameRegex.ReplaceAll(b, []byte(\"$1$3[$4]byte\"))\n\n\t// Convert [1024]int8 to [1024]byte in Ptmget members\n\tconvertPtmget := regexp.MustCompile(`([SC]n)(\\s+)\\[(\\d+)\\]u?int8`)\n\tb = convertPtmget.ReplaceAll(b, []byte(\"$1[$3]byte\"))\n\n\t// Remove spare fields (e.g. in Statx_t)\n\tspareFieldsRegex := regexp.MustCompile(`X__spare\\S*`)\n\tb = spareFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Remove cgo padding fields\n\tremovePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\\d+`)\n\tb = removePaddingFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Remove padding, hidden, or unused fields\n\tremoveFieldsRegex = regexp.MustCompile(`\\b(X_\\S+|Padding)`)\n\tb = removeFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Remove the first line of warning from cgo\n\tb = b[bytes.IndexByte(b, '\\n')+1:]\n\t// Modify the command in the header to include:\n\t//  mkpost, our own warning, and a build tag.\n\treplacement := fmt.Sprintf(`$1 | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s,%s`, goarch, goos)\n\tcgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)\n\tb = cgoCommandRegex.ReplaceAll(b, []byte(replacement))\n\n\t// gofmt\n\tb, err = format.Source(b)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tos.Stdout.Write(b)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksyscall.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This program reads a file containing function prototypes\n# (like syscall_darwin.go) and generates system call bodies.\n# The prototypes are marked by lines beginning with \"//sys\"\n# and read like func declarations if //sys is replaced by func, but:\n#\t* The parameter lists must give a name for each argument.\n#\t  This includes return parameters.\n#\t* The parameter lists must give a type for each argument:\n#\t  the (x, y, z int) shorthand is not allowed.\n#\t* If the return parameter is an error number, it must be named errno.\n\n# A line beginning with //sysnb is like //sys, except that the\n# goroutine will not be suspended during the execution of the system\n# call.  This must only be used for system calls which can never\n# block, as otherwise the system call could cause all goroutines to\n# hang.\n\nuse strict;\n\nmy $cmdline = \"mksyscall.pl \" . join(' ', @ARGV);\nmy $errors = 0;\nmy $_32bit = \"\";\nmy $plan9 = 0;\nmy $openbsd = 0;\nmy $netbsd = 0;\nmy $dragonfly = 0;\nmy $arm = 0; # 64-bit value should use (even, odd)-pair\nmy $tags = \"\";  # build tags\n\nif($ARGV[0] eq \"-b32\") {\n\t$_32bit = \"big-endian\";\n\tshift;\n} elsif($ARGV[0] eq \"-l32\") {\n\t$_32bit = \"little-endian\";\n\tshift;\n}\nif($ARGV[0] eq \"-plan9\") {\n\t$plan9 = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-openbsd\") {\n\t$openbsd = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-netbsd\") {\n\t$netbsd = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-dragonfly\") {\n\t$dragonfly = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-arm\") {\n\t$arm = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-tags\") {\n\tshift;\n\t$tags = $ARGV[0];\n\tshift;\n}\n\nif($ARGV[0] =~ /^-/) {\n\tprint STDERR \"usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\\n\";\n\texit 1;\n}\n\n# Check that we are using the new build system if we should\nif($ENV{'GOOS'} eq \"linux\" && $ENV{'GOARCH'} ne \"sparc64\") {\n\tif($ENV{'GOLANG_SYS_BUILD'} ne \"docker\") {\n\t\tprint STDERR \"In the new build system, mksyscall should not be called directly.\\n\";\n\t\tprint STDERR \"See README.md\\n\";\n\t\texit 1;\n\t}\n}\n\n\nsub parseparamlist($) {\n\tmy ($list) = @_;\n\t$list =~ s/^\\s*//;\n\t$list =~ s/\\s*$//;\n\tif($list eq \"\") {\n\t\treturn ();\n\t}\n\treturn split(/\\s*,\\s*/, $list);\n}\n\nsub parseparam($) {\n\tmy ($p) = @_;\n\tif($p !~ /^(\\S*) (\\S*)$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed parameter: $p\\n\";\n\t\t$errors = 1;\n\t\treturn (\"xx\", \"int\");\n\t}\n\treturn ($1, $2);\n}\n\nmy $text = \"\";\nwhile(<>) {\n\tchomp;\n\ts/\\s+/ /g;\n\ts/^\\s+//;\n\ts/\\s+$//;\n\tmy $nonblock = /^\\/\\/sysnb /;\n\tnext if !/^\\/\\/sys / && !$nonblock;\n\n\t# Line must be of the form\n\t#\tfunc Open(path string, mode int, perm int) (fd int, errno error)\n\t# Split into name, in params, out params.\n\tif(!/^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*((?i)SYS_[A-Z0-9_]+))?$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed //sys declaration\\n\";\n\t\t$errors = 1;\n\t\tnext;\n\t}\n\tmy ($func, $in, $out, $sysname) = ($2, $3, $4, $5);\n\n\t# Split argument lists on comma.\n\tmy @in = parseparamlist($in);\n\tmy @out = parseparamlist($out);\n\n\t# Try in vain to keep people from editing this file.\n\t# The theory is that they jump into the middle of the file\n\t# without reading the header.\n\t$text .= \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\";\n\n\t# Go function header.\n\tmy $out_decl = @out ? sprintf(\" (%s)\", join(', ', @out)) : \"\";\n\t$text .= sprintf \"func %s(%s)%s {\\n\", $func, join(', ', @in), $out_decl;\n\n\t# Check if err return available\n\tmy $errvar = \"\";\n\tforeach my $p (@out) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type eq \"error\") {\n\t\t\t$errvar = $name;\n\t\t\tlast;\n\t\t}\n\t}\n\n\t# Prepare arguments to Syscall.\n\tmy @args = ();\n\tmy $n = 0;\n\tforeach my $p (@in) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type =~ /^\\*/) {\n\t\t\tpush @args, \"uintptr(unsafe.Pointer($name))\";\n\t\t} elsif($type eq \"string\" && $errvar ne \"\") {\n\t\t\t$text .= \"\\tvar _p$n *byte\\n\";\n\t\t\t$text .= \"\\t_p$n, $errvar = BytePtrFromString($name)\\n\";\n\t\t\t$text .= \"\\tif $errvar != nil {\\n\\t\\treturn\\n\\t}\\n\";\n\t\t\tpush @args, \"uintptr(unsafe.Pointer(_p$n))\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"string\") {\n\t\t\tprint STDERR \"$ARGV:$.: $func uses string arguments, but has no error return\\n\";\n\t\t\t$text .= \"\\tvar _p$n *byte\\n\";\n\t\t\t$text .= \"\\t_p$n, _ = BytePtrFromString($name)\\n\";\n\t\t\tpush @args, \"uintptr(unsafe.Pointer(_p$n))\";\n\t\t\t$n++;\n\t\t} elsif($type =~ /^\\[\\](.*)/) {\n\t\t\t# Convert slice into pointer, length.\n\t\t\t# Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t# pass dummy pointer in that case.\n\t\t\t# Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).\n\t\t\t$text .= \"\\tvar _p$n unsafe.Pointer\\n\";\n\t\t\t$text .= \"\\tif len($name) > 0 {\\n\\t\\t_p$n = unsafe.Pointer(\\&${name}[0])\\n\\t}\";\n\t\t\t$text .= \" else {\\n\\t\\t_p$n = unsafe.Pointer(&_zero)\\n\\t}\";\n\t\t\t$text .= \"\\n\";\n\t\t\tpush @args, \"uintptr(_p$n)\", \"uintptr(len($name))\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"int64\" && ($openbsd || $netbsd)) {\n\t\t\tpush @args, \"0\";\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\tpush @args, \"uintptr($name>>32)\", \"uintptr($name)\";\n\t\t\t} elsif($_32bit eq \"little-endian\") {\n\t\t\t\tpush @args, \"uintptr($name)\", \"uintptr($name>>32)\";\n\t\t\t} else {\n\t\t\t\tpush @args, \"uintptr($name)\";\n\t\t\t}\n\t\t} elsif($type eq \"int64\" && $dragonfly) {\n\t\t\tif ($func !~ /^extp(read|write)/i) {\n\t\t\t\tpush @args, \"0\";\n\t\t\t}\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\tpush @args, \"uintptr($name>>32)\", \"uintptr($name)\";\n\t\t\t} elsif($_32bit eq \"little-endian\") {\n\t\t\t\tpush @args, \"uintptr($name)\", \"uintptr($name>>32)\";\n\t\t\t} else {\n\t\t\t\tpush @args, \"uintptr($name)\";\n\t\t\t}\n\t\t} elsif($type eq \"int64\" && $_32bit ne \"\") {\n\t\t\tif(@args % 2 && $arm) {\n\t\t\t\t# arm abi specifies 64-bit argument uses\n\t\t\t\t# (even, odd) pair\n\t\t\t\tpush @args, \"0\"\n\t\t\t}\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\tpush @args, \"uintptr($name>>32)\", \"uintptr($name)\";\n\t\t\t} else {\n\t\t\t\tpush @args, \"uintptr($name)\", \"uintptr($name>>32)\";\n\t\t\t}\n\t\t} else {\n\t\t\tpush @args, \"uintptr($name)\";\n\t\t}\n\t}\n\n\t# Determine which form to use; pad args with zeros.\n\tmy $asm = \"Syscall\";\n\tif ($nonblock) {\n\t\tif ($errvar eq \"\" && $ENV{'GOOS'} eq \"linux\") {\n\t\t\t$asm = \"RawSyscallNoError\";\n\t\t} else {\n\t\t\t$asm = \"RawSyscall\";\n\t\t}\n\t} else {\n\t\tif ($errvar eq \"\" && $ENV{'GOOS'} eq \"linux\") {\n\t\t\t$asm = \"SyscallNoError\";\n\t\t}\n\t}\n\tif(@args <= 3) {\n\t\twhile(@args < 3) {\n\t\t\tpush @args, \"0\";\n\t\t}\n\t} elsif(@args <= 6) {\n\t\t$asm .= \"6\";\n\t\twhile(@args < 6) {\n\t\t\tpush @args, \"0\";\n\t\t}\n\t} elsif(@args <= 9) {\n\t\t$asm .= \"9\";\n\t\twhile(@args < 9) {\n\t\t\tpush @args, \"0\";\n\t\t}\n\t} else {\n\t\tprint STDERR \"$ARGV:$.: too many arguments to system call\\n\";\n\t}\n\n\t# System call number.\n\tif($sysname eq \"\") {\n\t\t$sysname = \"SYS_$func\";\n\t\t$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;\t# turn FooBar into Foo_Bar\n\t\t$sysname =~ y/a-z/A-Z/;\n\t}\n\n\t# Actual call.\n\tmy $args = join(', ', @args);\n\tmy $call = \"$asm($sysname, $args)\";\n\n\t# Assign return values.\n\tmy $body = \"\";\n\tmy @ret = (\"_\", \"_\", \"_\");\n\tmy $do_errno = 0;\n\tfor(my $i=0; $i<@out; $i++) {\n\t\tmy $p = $out[$i];\n\t\tmy ($name, $type) = parseparam($p);\n\t\tmy $reg = \"\";\n\t\tif($name eq \"err\" && !$plan9) {\n\t\t\t$reg = \"e1\";\n\t\t\t$ret[2] = $reg;\n\t\t\t$do_errno = 1;\n\t\t} elsif($name eq \"err\" && $plan9) {\n\t\t\t$ret[0] = \"r0\";\n\t\t\t$ret[2] = \"e1\";\n\t\t\tnext;\n\t\t} else {\n\t\t\t$reg = sprintf(\"r%d\", $i);\n\t\t\t$ret[$i] = $reg;\n\t\t}\n\t\tif($type eq \"bool\") {\n\t\t\t$reg = \"$reg != 0\";\n\t\t}\n\t\tif($type eq \"int64\" && $_32bit ne \"\") {\n\t\t\t# 64-bit number in r1:r0 or r0:r1.\n\t\t\tif($i+2 > @out) {\n\t\t\t\tprint STDERR \"$ARGV:$.: not enough registers for int64 return\\n\";\n\t\t\t}\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\t$reg = sprintf(\"int64(r%d)<<32 | int64(r%d)\", $i, $i+1);\n\t\t\t} else {\n\t\t\t\t$reg = sprintf(\"int64(r%d)<<32 | int64(r%d)\", $i+1, $i);\n\t\t\t}\n\t\t\t$ret[$i] = sprintf(\"r%d\", $i);\n\t\t\t$ret[$i+1] = sprintf(\"r%d\", $i+1);\n\t\t}\n\t\tif($reg ne \"e1\" || $plan9) {\n\t\t\t$body .= \"\\t$name = $type($reg)\\n\";\n\t\t}\n\t}\n\tif ($ret[0] eq \"_\" && $ret[1] eq \"_\" && $ret[2] eq \"_\") {\n\t\t$text .= \"\\t$call\\n\";\n\t} else {\n\t\tif ($errvar eq \"\" && $ENV{'GOOS'} eq \"linux\") {\n\t\t\t# raw syscall without error on Linux, see golang.org/issue/22924\n\t\t\t$text .= \"\\t$ret[0], $ret[1] := $call\\n\";\n\t\t} else {\n\t\t\t$text .= \"\\t$ret[0], $ret[1], $ret[2] := $call\\n\";\n\t\t}\n\t}\n\t$text .= $body;\n\n\tif ($plan9 && $ret[2] eq \"e1\") {\n\t\t$text .= \"\\tif int32(r0) == -1 {\\n\";\n\t\t$text .= \"\\t\\terr = e1\\n\";\n\t\t$text .= \"\\t}\\n\";\n\t} elsif ($do_errno) {\n\t\t$text .= \"\\tif e1 != 0 {\\n\";\n\t\t$text .= \"\\t\\terr = errnoErr(e1)\\n\";\n\t\t$text .= \"\\t}\\n\";\n\t}\n\t$text .= \"\\treturn\\n\";\n\t$text .= \"}\\n\\n\";\n}\n\nchomp $text;\nchomp $text;\n\nif($errors) {\n\texit 1;\n}\n\nprint <<EOF;\n// $cmdline\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $tags\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n$text\nEOF\nexit 0;\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2018 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This program reads a file containing function prototypes\n# (like syscall_aix.go) and generates system call bodies.\n# The prototypes are marked by lines beginning with \"//sys\"\n# and read like func declarations if //sys is replaced by func, but:\n#\t* The parameter lists must give a name for each argument.\n#\t  This includes return parameters.\n#\t* The parameter lists must give a type for each argument:\n#\t  the (x, y, z int) shorthand is not allowed.\n#\t* If the return parameter is an error number, it must be named err.\n#\t* If go func name needs to be different than its libc name,\n#\t* or the function is not in libc, name could be specified\n#\t* at the end, after \"=\" sign, like\n#\t  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt\n\nuse strict;\n\nmy $cmdline = \"mksyscall_aix_ppc.pl \" . join(' ', @ARGV);\nmy $errors = 0;\nmy $_32bit = \"\";\nmy $tags = \"\";  # build tags\nmy $aix = 0;\nmy $solaris = 0;\n\nbinmode STDOUT;\n\nif($ARGV[0] eq \"-b32\") {\n\t$_32bit = \"big-endian\";\n\tshift;\n} elsif($ARGV[0] eq \"-l32\") {\n\t$_32bit = \"little-endian\";\n\tshift;\n}\nif($ARGV[0] eq \"-aix\") {\n\t$aix = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-tags\") {\n\tshift;\n\t$tags = $ARGV[0];\n\tshift;\n}\n\nif($ARGV[0] =~ /^-/) {\n\tprint STDERR \"usage: mksyscall_aix.pl [-b32 | -l32] [-tags x,y] [file ...]\\n\";\n\texit 1;\n}\n\nsub parseparamlist($) {\n\tmy ($list) = @_;\n\t$list =~ s/^\\s*//;\n\t$list =~ s/\\s*$//;\n\tif($list eq \"\") {\n\t\treturn ();\n\t}\n\treturn split(/\\s*,\\s*/, $list);\n}\n\nsub parseparam($) {\n\tmy ($p) = @_;\n\tif($p !~ /^(\\S*) (\\S*)$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed parameter: $p\\n\";\n\t\t$errors = 1;\n\t\treturn (\"xx\", \"int\");\n\t}\n\treturn ($1, $2);\n}\n\nmy $package = \"\";\nmy $text = \"\";\nmy $c_extern = \"/*\\n#include <stdint.h>\\n#include <stddef.h>\\n\";\nmy @vars = ();\nwhile(<>) {\n\tchomp;\n\ts/\\s+/ /g;\n\ts/^\\s+//;\n\ts/\\s+$//;\n\t$package = $1 if !$package && /^package (\\S+)$/;\n\tmy $nonblock = /^\\/\\/sysnb /;\n\tnext if !/^\\/\\/sys / && !$nonblock;\n\n\t# Line must be of the form\n\t# func Open(path string, mode int, perm int) (fd int, err error)\n\t# Split into name, in params, out params.\n\tif(!/^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*(?:(\\w*)\\.)?(\\w*))?$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed //sys declaration\\n\";\n\t\t$errors = 1;\n\t\tnext;\n\t}\n\tmy ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);\n\n\t# Split argument lists on comma.\n\tmy @in = parseparamlist($in);\n\tmy @out = parseparamlist($out);\n\n\t$in = join(', ', @in);\n\t$out = join(', ', @out);\n\n\t# Try in vain to keep people from editing this file.\n\t# The theory is that they jump into the middle of the file\n\t# without reading the header.\n\t$text .= \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\";\n\n\t# Check if value return, err return available\n\tmy $errvar = \"\";\n\tmy $retvar = \"\";\n\tmy $rettype = \"\";\n\tforeach my $p (@out) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type eq \"error\") {\n\t\t\t$errvar = $name;\n\t\t} else {\n\t\t\t$retvar = $name;\n\t\t\t$rettype = $type;\n\t\t}\n\t}\n\n\t# System call name.\n\t#if($func ne \"fcntl\") {\n\n\tif($sysname eq \"\") {\n\t\t$sysname = \"$func\";\n\t}\n\n\t$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;\n\t$sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.\n\n\tmy $C_rettype = \"\";\n\tif($rettype eq \"unsafe.Pointer\") {\n\t\t$C_rettype = \"uintptr_t\";\n\t} elsif($rettype eq \"uintptr\") {\n\t\t$C_rettype = \"uintptr_t\";\n\t} elsif($rettype =~ /^_/) {\n\t\t$C_rettype = \"uintptr_t\";\n\t} elsif($rettype eq \"int\") {\n\t\t$C_rettype = \"int\";\n\t} elsif($rettype eq \"int32\") {\n\t\t$C_rettype = \"int\";\n\t} elsif($rettype eq \"int64\") {\n\t\t$C_rettype = \"long long\";\n\t} elsif($rettype eq \"uint32\") {\n\t\t$C_rettype = \"unsigned int\";\n\t} elsif($rettype eq \"uint64\") {\n\t\t$C_rettype = \"unsigned long long\";\n\t} else {\n\t\t$C_rettype = \"int\";\n\t}\n\tif($sysname eq \"exit\") {\n\t\t$C_rettype = \"void\";\n\t}\n\n\t# Change types to c\n\tmy @c_in = ();\n\tforeach my $p (@in) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type =~ /^\\*/) {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t\t} elsif($type eq \"string\") {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type =~ /^\\[\\](.*)/) {\n\t\t\tpush @c_in, \"uintptr_t\", \"size_t\";\n\t\t} elsif($type eq \"unsafe.Pointer\") {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type eq \"uintptr\") {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type =~ /^_/) {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type eq \"int\") {\n\t\t\tpush @c_in, \"int\";\n\t\t} elsif($type eq \"int32\") {\n\t\t\tpush @c_in, \"int\";\n\t\t} elsif($type eq \"int64\") {\n\t\t\tpush @c_in, \"long long\";\n\t\t} elsif($type eq \"uint32\") {\n\t\t\tpush @c_in, \"unsigned int\";\n\t\t} elsif($type eq \"uint64\") {\n\t\t\tpush @c_in, \"unsigned long long\";\n\t\t} else {\n\t\t\tpush @c_in, \"int\";\n\t\t}\n\t}\n\n\tif ($func ne \"fcntl\" && $func ne \"FcntlInt\" && $func ne \"readlen\" && $func ne \"writelen\") {\n\t\t# Imports of system calls from libc\n\t\t$c_extern .= \"$C_rettype $sysname\";\n\t\tmy $c_in = join(', ', @c_in);\n\t\t$c_extern .= \"($c_in);\\n\";\n\t}\n\n\t# So file name.\n\tif($aix) {\n\t\tif($modname eq \"\") {\n\t\t\t$modname = \"libc.a/shr_64.o\";\n\t\t} else {\n\t\t\tprint STDERR \"$func: only syscall using libc are available\\n\";\n\t\t\t$errors = 1;\n\t\t\tnext;\n\t\t}\n\t}\n\n\tmy $strconvfunc = \"C.CString\";\n\tmy $strconvtype = \"*byte\";\n\n\t# Go function header.\n\tif($out ne \"\") {\n\t\t$out = \" ($out)\";\n\t}\n\tif($text ne \"\") {\n\t\t$text .= \"\\n\"\n\t}\n\n\t$text .= sprintf \"func %s(%s)%s {\\n\", $func, join(', ', @in), $out ;\n\n\t# Prepare arguments to call.\n\tmy @args = ();\n\tmy $n = 0;\n\tmy $arg_n = 0;\n\tforeach my $p (@in) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type =~ /^\\*/) {\n\t\t\tpush @args, \"C.uintptr_t(uintptr(unsafe.Pointer($name)))\";\n\t\t} elsif($type eq \"string\" && $errvar ne \"\") {\n\t\t\t$text .= \"\\t_p$n := uintptr(unsafe.Pointer($strconvfunc($name)))\\n\";\n\t\t\tpush @args, \"C.uintptr_t(_p$n)\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"string\") {\n\t\t\tprint STDERR \"$ARGV:$.: $func uses string arguments, but has no error return\\n\";\n\t\t\t$text .= \"\\t_p$n := uintptr(unsafe.Pointer($strconvfunc($name)))\\n\";\n\t\t\tpush @args, \"C.uintptr_t(_p$n)\";\n\t\t\t$n++;\n\t\t} elsif($type =~ /^\\[\\](.*)/) {\n\t\t\t# Convert slice into pointer, length.\n\t\t\t# Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t# pass nil in that case.\n\t\t\t$text .= \"\\tvar _p$n *$1\\n\";\n\t\t\t$text .= \"\\tif len($name) > 0 {\\n\\t\\t_p$n = \\&$name\\[0]\\n\\t}\\n\";\n\t\t\tpush @args, \"C.uintptr_t(uintptr(unsafe.Pointer(_p$n)))\";\n\t\t\t$n++;\n\t\t\t$text .= \"\\tvar _p$n int\\n\";\n\t\t\t$text .= \"\\t_p$n = len($name)\\n\";\n\t\t\tpush @args, \"C.size_t(_p$n)\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"int64\" && $_32bit ne \"\") {\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\tpush @args, \"uintptr($name >> 32)\", \"uintptr($name)\";\n\t\t\t} else {\n\t\t\t\tpush @args, \"uintptr($name)\", \"uintptr($name >> 32)\";\n\t\t\t}\n\t\t\t$n++;\n\t\t} elsif($type eq \"bool\") {\n\t\t\t$text .= \"\\tvar _p$n uint32\\n\";\n\t\t\t$text .= \"\\tif $name {\\n\\t\\t_p$n = 1\\n\\t} else {\\n\\t\\t_p$n = 0\\n\\t}\\n\";\n\t\t\tpush @args, \"_p$n\";\n\t\t\t$n++;\n\t\t} elsif($type =~ /^_/) {\n\t\t\tpush @args, \"C.uintptr_t(uintptr($name))\";\n\t\t} elsif($type eq \"unsafe.Pointer\") {\n\t\t\tpush @args, \"C.uintptr_t(uintptr($name))\";\n\t\t} elsif($type eq \"int\") {\n\t\t\tif (($arg_n == 2) && (($func eq \"readlen\") || ($func eq \"writelen\"))) {\n\t\t\t\tpush @args, \"C.size_t($name)\";\n\t\t\t} elsif ($arg_n == 0 && $func eq \"fcntl\") {\n\t\t\t\tpush @args, \"C.uintptr_t($name)\";\n\t\t\t} elsif (($arg_n == 2) && (($func eq \"fcntl\") || ($func eq \"FcntlInt\"))) {\n\t\t\t\tpush @args, \"C.uintptr_t($name)\";\n\t\t\t} else {\n\t\t\t\tpush @args, \"C.int($name)\";\n\t\t\t}\n\t\t} elsif($type eq \"int32\") {\n\t\t\tpush @args, \"C.int($name)\";\n\t\t} elsif($type eq \"int64\") {\n\t\t\tpush @args, \"C.longlong($name)\";\n\t\t} elsif($type eq \"uint32\") {\n\t\t\tpush @args, \"C.uint($name)\";\n\t\t} elsif($type eq \"uint64\") {\n\t\t\tpush @args, \"C.ulonglong($name)\";\n\t\t} elsif($type eq \"uintptr\") {\n\t\t\tpush @args, \"C.uintptr_t($name)\";\n\t\t} else {\n\t\t\tpush @args, \"C.int($name)\";\n\t\t}\n\t\t$arg_n++;\n\t}\n\tmy $nargs = @args;\n\n\n\t# Determine which form to use; pad args with zeros.\n\tif ($nonblock) {\n\t}\n\n\tmy $args = join(', ', @args);\n\tmy $call = \"\";\n\tif ($sysname eq \"exit\") {\n\t\tif ($errvar ne \"\") {\n\t\t\t$call .= \"er :=\";\n\t\t} else {\n\t\t\t$call .= \"\";\n\t\t}\n\t}  elsif ($errvar ne \"\") {\n\t\t$call .= \"r0,er :=\";\n\t}  elsif ($retvar ne \"\") {\n\t\t$call .= \"r0,_ :=\";\n\t}  else {\n\t\t$call .= \"\"\n\t}\n\t$call .= \"C.$sysname($args)\";\n\n\t# Assign return values.\n\tmy $body = \"\";\n\tmy $failexpr = \"\";\n\n\tfor(my $i=0; $i<@out; $i++) {\n\t\tmy $p = $out[$i];\n\t\tmy ($name, $type) = parseparam($p);\n\t\tmy $reg = \"\";\n\t\tif($name eq \"err\") {\n\t\t\t$reg = \"e1\";\n\t\t} else {\n\t\t\t$reg = \"r0\";\n\t\t}\n\t\tif($reg ne \"e1\" ) {\n\t\t\t\t\t\t$body .= \"\\t$name = $type($reg)\\n\";\n\t\t}\n\t}\n\n\t# verify return\n\tif ($sysname ne \"exit\" && $errvar ne \"\") {\n\t\tif ($C_rettype =~ /^uintptr/) {\n\t\t\t$body .= \"\\tif \\(uintptr\\(r0\\) ==\\^uintptr\\(0\\) && er != nil\\) {\\n\";\n\t\t\t$body .= \"\\t\\t$errvar = er\\n\";\n\t\t\t$body .= \"\\t}\\n\";\n\t\t} else {\n\t\t\t$body .= \"\\tif \\(r0 ==-1 && er != nil\\) {\\n\";\n\t\t\t$body .= \"\\t\\t$errvar = er\\n\";\n\t\t\t$body .= \"\\t}\\n\";\n\t\t}\n\t} elsif ($errvar ne \"\") {\n\t\t$body .= \"\\tif \\(er != nil\\) {\\n\";\n\t\t$body .= \"\\t\\t$errvar = er\\n\";\n\t\t$body .= \"\\t}\\n\";\n\t}\n\n\t$text .= \"\\t$call\\n\";\n\t$text .= $body;\n\n\t$text .= \"\\treturn\\n\";\n\t$text .= \"}\\n\";\n}\n\nif($errors) {\n\texit 1;\n}\n\nprint <<EOF;\n// $cmdline\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $tags\n\npackage $package\n\n\n$c_extern\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n\nEOF\n\nprint \"import \\\"golang.org/x/sys/unix\\\"\\n\" if $package ne \"unix\";\n\nchomp($_=<<EOF);\n\n$text\nEOF\nprint $_;\nexit 0;\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2018 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This program reads a file containing function prototypes\n# (like syscall_aix.go) and generates system call bodies.\n# The prototypes are marked by lines beginning with \"//sys\"\n# and read like func declarations if //sys is replaced by func, but:\n#\t* The parameter lists must give a name for each argument.\n#\t  This includes return parameters.\n#\t* The parameter lists must give a type for each argument:\n#\t  the (x, y, z int) shorthand is not allowed.\n#\t* If the return parameter is an error number, it must be named err.\n#\t* If go func name needs to be different than its libc name,\n#\t* or the function is not in libc, name could be specified\n#\t* at the end, after \"=\" sign, like\n#\t  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt\n\n# This program will generate three files and handle both gc and gccgo implementation:\n#   - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation)\n#   - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6\n#   - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type.\n\n# The generated code looks like this\n#\n# zsyscall_aix_ppc64.go\n# func asyscall(...) (n int, err error) {\n#\t  // Pointer Creation\n#\t  r1, e1 := callasyscall(...)\n#\t  // Type Conversion\n#\t  // Error Handler\n#\t  return\n# }\n#\n# zsyscall_aix_ppc64_gc.go\n# //go:cgo_import_dynamic libc_asyscall asyscall \"libc.a/shr_64.o\"\n# //go:linkname libc_asyscall libc_asyscall\n# var asyscall syscallFunc\n#\n# func callasyscall(...) (r1 uintptr, e1 Errno) {\n#\t  r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), \"nb_args\", ... )\n#\t  return\n# }\n#\n# zsyscall_aix_ppc64_ggcgo.go\n# /*\n#  int asyscall(...)\n#\n# */\n# import \"C\"\n#\n# func callasyscall(...) (r1 uintptr, e1 Errno) {\n#\t  r1 = uintptr(C.asyscall(...))\n#\t  e1 = syscall.GetErrno()\n#\t  return\n# }\n\n\n\nuse strict;\n\nmy $cmdline = \"mksyscall_aix_ppc64.pl \" . join(' ', @ARGV);\nmy $errors = 0;\nmy $_32bit = \"\";\nmy $tags = \"\";  # build tags\nmy $aix = 0;\nmy $solaris = 0;\n\nbinmode STDOUT;\n\nif($ARGV[0] eq \"-b32\") {\n\t$_32bit = \"big-endian\";\n\tshift;\n} elsif($ARGV[0] eq \"-l32\") {\n\t$_32bit = \"little-endian\";\n\tshift;\n}\nif($ARGV[0] eq \"-aix\") {\n\t$aix = 1;\n\tshift;\n}\nif($ARGV[0] eq \"-tags\") {\n\tshift;\n\t$tags = $ARGV[0];\n\tshift;\n}\n\nif($ARGV[0] =~ /^-/) {\n\tprint STDERR \"usage: mksyscall_aix.pl [-b32 | -l32] [-tags x,y] [file ...]\\n\";\n\texit 1;\n}\n\nsub parseparamlist($) {\n\tmy ($list) = @_;\n\t$list =~ s/^\\s*//;\n\t$list =~ s/\\s*$//;\n\tif($list eq \"\") {\n\t\treturn ();\n\t}\n\treturn split(/\\s*,\\s*/, $list);\n}\n\nsub parseparam($) {\n\tmy ($p) = @_;\n\tif($p !~ /^(\\S*) (\\S*)$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed parameter: $p\\n\";\n\t\t$errors = 1;\n\t\treturn (\"xx\", \"int\");\n\t}\n\treturn ($1, $2);\n}\n\nmy $package = \"\";\n# GCCGO\nmy $textgccgo = \"\";\nmy $c_extern = \"/*\\n#include <stdint.h>\\n\";\n# GC\nmy $textgc = \"\";\nmy $dynimports = \"\";\nmy $linknames = \"\";\nmy @vars = ();\n# COMMUN\nmy $textcommon = \"\";\n\nwhile(<>) {\n\tchomp;\n\ts/\\s+/ /g;\n\ts/^\\s+//;\n\ts/\\s+$//;\n\t$package = $1 if !$package && /^package (\\S+)$/;\n\tmy $nonblock = /^\\/\\/sysnb /;\n\tnext if !/^\\/\\/sys / && !$nonblock;\n\n\t# Line must be of the form\n\t# func Open(path string, mode int, perm int) (fd int, err error)\n\t# Split into name, in params, out params.\n\tif(!/^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*(?:(\\w*)\\.)?(\\w*))?$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed //sys declaration\\n\";\n\t\t$errors = 1;\n\t\tnext;\n\t}\n\tmy ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);\n\n\t# Split argument lists on comma.\n\tmy @in = parseparamlist($in);\n\tmy @out = parseparamlist($out);\n\n\t$in = join(', ', @in);\n\t$out = join(', ', @out);\n\n\tif($sysname eq \"\") {\n\t\t$sysname = \"$func\";\n\t}\n\n\tmy $onlyCommon = 0;\n\tif ($func eq \"readlen\" || $func eq \"writelen\" || $func eq \"FcntlInt\" || $func eq \"FcntlFlock\") {\n\t\t# This function call another syscall which is already implemented.\n\t\t# Therefore, the gc and gccgo part must not be generated.\n\t\t$onlyCommon = 1\n\t}\n\n\t# Try in vain to keep people from editing this file.\n\t# The theory is that they jump into the middle of the file\n\t# without reading the header.\n\n\t$textcommon .= \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\";\n\tif (!$onlyCommon) {\n\t\t$textgccgo .= \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\";\n\t\t$textgc .= \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\";\n\t}\n\n\n\t# Check if value return, err return available\n\tmy $errvar = \"\";\n\tmy $retvar = \"\";\n\tmy $rettype = \"\";\n\tforeach my $p (@out) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type eq \"error\") {\n\t\t\t$errvar = $name;\n\t\t} else {\n\t\t\t$retvar = $name;\n\t\t\t$rettype = $type;\n\t\t}\n\t}\n\n\n\t$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;\n\t$sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.\n\n\t# GCCGO Prototype return type\n\tmy $C_rettype = \"\";\n\tif($rettype eq \"unsafe.Pointer\") {\n\t\t$C_rettype = \"uintptr_t\";\n\t} elsif($rettype eq \"uintptr\") {\n\t\t$C_rettype = \"uintptr_t\";\n\t} elsif($rettype =~ /^_/) {\n\t\t$C_rettype = \"uintptr_t\";\n\t} elsif($rettype eq \"int\") {\n\t\t$C_rettype = \"int\";\n\t} elsif($rettype eq \"int32\") {\n\t\t$C_rettype = \"int\";\n\t} elsif($rettype eq \"int64\") {\n\t\t$C_rettype = \"long long\";\n\t} elsif($rettype eq \"uint32\") {\n\t\t$C_rettype = \"unsigned int\";\n\t} elsif($rettype eq \"uint64\") {\n\t\t$C_rettype = \"unsigned long long\";\n\t} else {\n\t\t$C_rettype = \"int\";\n\t}\n\tif($sysname eq \"exit\") {\n\t\t$C_rettype = \"void\";\n\t}\n\n\t# GCCGO Prototype arguments type\n\tmy @c_in = ();\n\tforeach my $i (0 .. $#in) {\n\t\tmy ($name, $type) = parseparam($in[$i]);\n\t\tif($type =~ /^\\*/) {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t\t} elsif($type eq \"string\") {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type =~ /^\\[\\](.*)/) {\n\t\t\tpush @c_in, \"uintptr_t\", \"size_t\";\n\t\t} elsif($type eq \"unsafe.Pointer\") {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type eq \"uintptr\") {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type =~ /^_/) {\n\t\t\tpush @c_in, \"uintptr_t\";\n\t\t} elsif($type eq \"int\") {\n\t\t\tif (($i == 0 || $i == 2) && $func eq \"fcntl\"){\n\t\t\t\t# These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock\n\t\t\t\tpush @c_in, \"uintptr_t\";\n\t\t\t} else {\n\t\t\t\tpush @c_in, \"int\";\n\t\t\t}\n\t\t} elsif($type eq \"int32\") {\n\t\t\tpush @c_in, \"int\";\n\t\t} elsif($type eq \"int64\") {\n\t\t\tpush @c_in, \"long long\";\n\t\t} elsif($type eq \"uint32\") {\n\t\t\tpush @c_in, \"unsigned int\";\n\t\t} elsif($type eq \"uint64\") {\n\t\t\tpush @c_in, \"unsigned long long\";\n\t\t} else {\n\t\t\tpush @c_in, \"int\";\n\t\t}\n\t}\n\n\tif (!$onlyCommon){\n\t\t# GCCGO Prototype Generation\n\t\t# Imports of system calls from libc\n\t\t$c_extern .= \"$C_rettype $sysname\";\n\t\tmy $c_in = join(', ', @c_in);\n\t\t$c_extern .= \"($c_in);\\n\";\n\t}\n\n\t# GC Library name\n\tif($modname eq \"\") {\n\t\t$modname = \"libc.a/shr_64.o\";\n\t} else {\n\t\tprint STDERR \"$func: only syscall using libc are available\\n\";\n\t\t$errors = 1;\n\t\tnext;\n\t}\n\tmy $sysvarname = \"libc_${sysname}\";\n\n\tif (!$onlyCommon){\n\t\t# GC Runtime import of function to allow cross-platform builds.\n\t\t$dynimports .= \"//go:cgo_import_dynamic ${sysvarname} ${sysname} \\\"$modname\\\"\\n\";\n\t\t# GC Link symbol to proc address variable.\n\t\t$linknames .= \"//go:linkname ${sysvarname} ${sysvarname}\\n\";\n\t\t# GC Library proc address variable.\n\t\tpush @vars, $sysvarname;\n\t}\n\n\tmy $strconvfunc =\"BytePtrFromString\";\n\tmy $strconvtype = \"*byte\";\n\n\t# Go function header.\n\tif($out ne \"\") {\n\t\t$out = \" ($out)\";\n\t}\n\tif($textcommon ne \"\") {\n\t\t$textcommon .= \"\\n\"\n\t}\n\n\t$textcommon .= sprintf \"func %s(%s)%s {\\n\", $func, join(', ', @in), $out ;\n\n\t# Prepare arguments to call.\n\tmy @argscommun = (); # Arguments in the commun part\n\tmy @argscall = ();   # Arguments for call prototype\n\tmy @argsgc = ();     # Arguments for gc call (with syscall6)\n\tmy @argsgccgo = ();  # Arguments for gccgo call (with C.name_of_syscall)\n\tmy $n = 0;\n\tmy $arg_n = 0;\n\tforeach my $p (@in) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type =~ /^\\*/) {\n\t\t\tpush @argscommun, \"uintptr(unsafe.Pointer($name))\";\n\t\t\tpush @argscall, \"$name uintptr\";\n\t\t\tpush @argsgc, \"$name\";\n\t\t\tpush @argsgccgo, \"C.uintptr_t($name)\";\n\t\t} elsif($type eq \"string\" && $errvar ne \"\") {\n\t\t\t$textcommon .= \"\\tvar _p$n $strconvtype\\n\";\n\t\t\t$textcommon .= \"\\t_p$n, $errvar = $strconvfunc($name)\\n\";\n\t\t\t$textcommon .= \"\\tif $errvar != nil {\\n\\t\\treturn\\n\\t}\\n\";\n\n\t\t\tpush @argscommun, \"uintptr(unsafe.Pointer(_p$n))\";\n\t\t\tpush @argscall, \"_p$n uintptr \";\n\t\t\tpush @argsgc, \"_p$n\";\n\t\t\tpush @argsgccgo, \"C.uintptr_t(_p$n)\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"string\") {\n\t\t\tprint STDERR \"$ARGV:$.: $func uses string arguments, but has no error return\\n\";\n\t\t\t$textcommon .= \"\\tvar _p$n $strconvtype\\n\";\n\t\t\t$textcommon .= \"\\t_p$n, $errvar = $strconvfunc($name)\\n\";\n\t\t\t$textcommon .= \"\\tif $errvar != nil {\\n\\t\\treturn\\n\\t}\\n\";\n\n\t\t\tpush @argscommun, \"uintptr(unsafe.Pointer(_p$n))\";\n\t\t\tpush @argscall, \"_p$n uintptr\";\n\t\t\tpush @argsgc, \"_p$n\";\n\t\t\tpush @argsgccgo, \"C.uintptr_t(_p$n)\";\n\t\t\t$n++;\n\t\t} elsif($type =~ /^\\[\\](.*)/) {\n\t\t\t# Convert slice into pointer, length.\n\t\t\t# Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t# pass nil in that case.\n\t\t\t$textcommon .= \"\\tvar _p$n *$1\\n\";\n\t\t\t$textcommon .= \"\\tif len($name) > 0 {\\n\\t\\t_p$n = \\&$name\\[0]\\n\\t}\\n\";\n\t\t\tpush @argscommun, \"uintptr(unsafe.Pointer(_p$n))\", \"len($name)\";\n\t\t\tpush @argscall, \"_p$n uintptr\", \"_lenp$n int\";\n\t\t\tpush @argsgc, \"_p$n\", \"uintptr(_lenp$n)\";\n\t\t\tpush @argsgccgo, \"C.uintptr_t(_p$n)\", \"C.size_t(_lenp$n)\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"int64\" && $_32bit ne \"\") {\n\t\t\tprint STDERR \"$ARGV:$.: $func uses int64 with 32 bits mode. Case not yet implemented\\n\";\n\t\t\t# if($_32bit eq \"big-endian\") {\n\t\t\t# \tpush @args, \"uintptr($name >> 32)\", \"uintptr($name)\";\n\t\t\t# } else {\n\t\t\t# \tpush @args, \"uintptr($name)\", \"uintptr($name >> 32)\";\n\t\t\t# }\n\t\t\t# $n++;\n\t\t} elsif($type eq \"bool\") {\n\t\t\tprint STDERR \"$ARGV:$.: $func uses bool. Case not yet implemented\\n\";\n\t\t\t# $text .= \"\\tvar _p$n uint32\\n\";\n\t\t\t# $text .= \"\\tif $name {\\n\\t\\t_p$n = 1\\n\\t} else {\\n\\t\\t_p$n = 0\\n\\t}\\n\";\n\t\t\t# push @args, \"_p$n\";\n\t\t\t# $n++;\n\t\t} elsif($type =~ /^_/ ||$type eq \"unsafe.Pointer\") {\n\t\t\tpush @argscommun, \"uintptr($name)\";\n\t\t\tpush @argscall, \"$name uintptr\";\n\t\t\tpush @argsgc, \"$name\";\n\t\t\tpush @argsgccgo, \"C.uintptr_t($name)\";\n\t\t} elsif($type eq \"int\") {\n\t\t\tif (($arg_n == 0 || $arg_n == 2) && ($func eq \"fcntl\" || $func eq \"FcntlInt\" || $func eq \"FcntlFlock\")) {\n\t\t\t\t# These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock\n\t\t\t\tpush @argscommun, \"uintptr($name)\";\n\t\t\t\tpush @argscall, \"$name uintptr\";\n\t\t\t\tpush @argsgc, \"$name\";\n\t\t\t\tpush @argsgccgo, \"C.uintptr_t($name)\";\n\t\t\t} else {\n\t\t\t\tpush @argscommun, \"$name\";\n\t\t\t\tpush @argscall, \"$name int\";\n\t\t\t\tpush @argsgc, \"uintptr($name)\";\n\t\t\t\tpush @argsgccgo, \"C.int($name)\";\n\t\t\t}\n\t\t} elsif($type eq \"int32\") {\n\t\t\tpush @argscommun, \"$name\";\n\t\t\tpush @argscall, \"$name int32\";\n\t\t\tpush @argsgc, \"uintptr($name)\";\n\t\t\tpush @argsgccgo, \"C.int($name)\";\n\t\t} elsif($type eq \"int64\") {\n\t\t\tpush @argscommun, \"$name\";\n\t\t\tpush @argscall, \"$name int64\";\n\t\t\tpush @argsgc, \"uintptr($name)\";\n\t\t\tpush @argsgccgo, \"C.longlong($name)\";\n\t\t} elsif($type eq \"uint32\") {\n\t\t\tpush @argscommun, \"$name\";\n\t\t\tpush @argscall, \"$name uint32\";\n\t\t\tpush @argsgc, \"uintptr($name)\";\n\t\t\tpush @argsgccgo, \"C.uint($name)\";\n\t\t} elsif($type eq \"uint64\") {\n\t\t\tpush @argscommun, \"$name\";\n\t\t\tpush @argscall, \"$name uint64\";\n\t\t\tpush @argsgc, \"uintptr($name)\";\n\t\t\tpush @argsgccgo, \"C.ulonglong($name)\";\n\t\t} elsif($type eq \"uintptr\") {\n\t\t\tpush @argscommun, \"$name\";\n\t\t\tpush @argscall, \"$name uintptr\";\n\t\t\tpush @argsgc, \"$name\";\n\t\t\tpush @argsgccgo, \"C.uintptr_t($name)\";\n\t\t} else {\n\t\t\tpush @argscommun, \"int($name)\";\n\t\t\tpush @argscall, \"$name int\";\n\t\t\tpush @argsgc, \"uintptr($name)\";\n\t\t\tpush @argsgccgo, \"C.int($name)\";\n\t\t}\n\t\t$arg_n++;\n\t}\n\tmy $nargs = @argsgc;\n\n\t# COMMUN function generation\n\tmy $argscommun = join(', ', @argscommun);\n\tmy $callcommun = \"call$sysname($argscommun)\";\n\tmy @ret = (\"_\", \"_\");\n\tmy $body = \"\";\n\tmy $do_errno = 0;\n\tfor(my $i=0; $i<@out; $i++) {\n\t\tmy $p = $out[$i];\n\t\tmy ($name, $type) = parseparam($p);\n\t\tmy $reg = \"\";\n\t\tif($name eq \"err\") {\n\t\t\t$reg = \"e1\";\n\t\t\t$ret[1] = $reg;\n\t\t\t$do_errno = 1;\n\t\t} else {\n\t\t\t$reg = \"r0\";\n\t\t\t$ret[0] = $reg;\n\t\t}\n\t\tif($type eq \"bool\") {\n\t\t\t$reg = \"$reg != 0\";\n\t\t}\n\t\tif($reg ne \"e1\") {\n\t\t\t$body .= \"\\t$name = $type($reg)\\n\";\n\t\t}\n\t}\n\tif ($ret[0] eq \"_\"  && $ret[1] eq \"_\") {\n\t\t$textcommon .= \"\\t$callcommun\\n\";\n\t} else {\n\t\t$textcommon .= \"\\t$ret[0], $ret[1] := $callcommun\\n\";\n\t}\n\t$textcommon .= $body;\n\n\tif ($do_errno) {\n\t\t$textcommon .= \"\\tif e1 != 0 {\\n\";\n\t\t$textcommon .= \"\\t\\terr = errnoErr(e1)\\n\";\n\t\t$textcommon .= \"\\t}\\n\";\n\t}\n\t$textcommon .= \"\\treturn\\n\";\n\t$textcommon .= \"}\\n\";\n\n\tif ($onlyCommon){\n\t\tnext\n\t}\n\t# CALL Prototype\n\tmy $callProto = sprintf \"func call%s(%s) (r1 uintptr, e1 Errno) {\\n\", $sysname, join(', ', @argscall);\n\n\t# GC function generation\n\tmy $asm = \"syscall6\";\n\tif ($nonblock) {\n\t\t$asm = \"rawSyscall6\";\n\t}\n\n\tif(@argsgc <= 6) {\n\t\twhile(@argsgc < 6) {\n\t\t\tpush @argsgc, \"0\";\n\t\t}\n\t} else {\n\t\tprint STDERR \"$ARGV:$.: too many arguments to system call\\n\";\n\t}\n\tmy $argsgc = join(', ', @argsgc);\n\tmy $callgc = \"$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $argsgc)\";\n\n\t$textgc .= $callProto;\n\t$textgc .= \"\\tr1, _, e1 = $callgc\\n\";\n\t$textgc .= \"\\treturn\\n}\\n\";\n\n\t# GCCGO function generation\n\tmy $argsgccgo = join(', ', @argsgccgo);\n\tmy $callgccgo = \"C.$sysname($argsgccgo)\";\n\t$textgccgo .= $callProto;\n\t$textgccgo .= \"\\tr1 = uintptr($callgccgo)\\n\";\n\t$textgccgo .= \"\\te1 = syscall.GetErrno()\\n\";\n\t$textgccgo .= \"\\treturn\\n}\\n\";\n}\n\nif($errors) {\n\texit 1;\n}\n\n# Print zsyscall_aix_ppc64.go\nopen(my $fcommun, '>', 'zsyscall_aix_ppc64.go');\nmy $tofcommun = <<EOF;\n// $cmdline\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $tags\n\npackage $package\n\nimport (\n\t\"unsafe\"\n)\n\nEOF\n\n$tofcommun .= \"import \\\"golang.org/x/sys/unix\\\"\\n\" if $package ne \"unix\";\n\n$tofcommun .=<<EOF;\n\n$textcommon\nEOF\nprint $fcommun $tofcommun;\n\n\n# Print zsyscall_aix_ppc64_gc.go\nopen(my $fgc, '>', 'zsyscall_aix_ppc64_gc.go');\nmy $tofgc = <<EOF;\n// $cmdline\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $tags\n// +build !gccgo\n\npackage $package\n\nimport (\n\t\"unsafe\"\n)\n\n\nEOF\n\n$tofgc .= \"import \\\"golang.org/x/sys/unix\\\"\\n\" if $package ne \"unix\";\n\nmy $vardecls = \"\\t\" . join(\",\\n\\t\", @vars);\n$vardecls .= \" syscallFunc\";\n\n$tofgc .=<<EOF;\n$dynimports\n$linknames\ntype syscallFunc uintptr\n\nvar (\n$vardecls\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n$textgc\nEOF\nprint $fgc $tofgc;\n\n# Print zsyscall_aix_ppc64_gc.go\nopen(my $fgccgo, '>', 'zsyscall_aix_ppc64_gccgo.go');\nmy $tofgccgo = <<EOF;\n// $cmdline\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $tags\n// +build gccgo\n\npackage $package\n\n\n$c_extern\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n)\n\n\nEOF\n\n$tofgccgo .= \"import \\\"golang.org/x/sys/unix\\\"\\n\" if $package ne \"unix\";\n\n$tofgccgo .=<<EOF;\n\n$textgccgo\nEOF\nprint $fgccgo $tofgccgo;\nexit 0;\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksyscall_solaris.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This program reads a file containing function prototypes\n# (like syscall_solaris.go) and generates system call bodies.\n# The prototypes are marked by lines beginning with \"//sys\"\n# and read like func declarations if //sys is replaced by func, but:\n#\t* The parameter lists must give a name for each argument.\n#\t  This includes return parameters.\n#\t* The parameter lists must give a type for each argument:\n#\t  the (x, y, z int) shorthand is not allowed.\n#\t* If the return parameter is an error number, it must be named err.\n#\t* If go func name needs to be different than its libc name,\n#\t* or the function is not in libc, name could be specified\n#\t* at the end, after \"=\" sign, like\n#\t  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt\n\nuse strict;\n\nmy $cmdline = \"mksyscall_solaris.pl \" . join(' ', @ARGV);\nmy $errors = 0;\nmy $_32bit = \"\";\nmy $tags = \"\";  # build tags\n\nbinmode STDOUT;\n\nif($ARGV[0] eq \"-b32\") {\n\t$_32bit = \"big-endian\";\n\tshift;\n} elsif($ARGV[0] eq \"-l32\") {\n\t$_32bit = \"little-endian\";\n\tshift;\n}\nif($ARGV[0] eq \"-tags\") {\n\tshift;\n\t$tags = $ARGV[0];\n\tshift;\n}\n\nif($ARGV[0] =~ /^-/) {\n\tprint STDERR \"usage: mksyscall_solaris.pl [-b32 | -l32] [-tags x,y] [file ...]\\n\";\n\texit 1;\n}\n\nsub parseparamlist($) {\n\tmy ($list) = @_;\n\t$list =~ s/^\\s*//;\n\t$list =~ s/\\s*$//;\n\tif($list eq \"\") {\n\t\treturn ();\n\t}\n\treturn split(/\\s*,\\s*/, $list);\n}\n\nsub parseparam($) {\n\tmy ($p) = @_;\n\tif($p !~ /^(\\S*) (\\S*)$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed parameter: $p\\n\";\n\t\t$errors = 1;\n\t\treturn (\"xx\", \"int\");\n\t}\n\treturn ($1, $2);\n}\n\nmy $package = \"\";\nmy $text = \"\";\nmy $dynimports = \"\";\nmy $linknames = \"\";\nmy @vars = ();\nwhile(<>) {\n\tchomp;\n\ts/\\s+/ /g;\n\ts/^\\s+//;\n\ts/\\s+$//;\n\t$package = $1 if !$package && /^package (\\S+)$/;\n\tmy $nonblock = /^\\/\\/sysnb /;\n\tnext if !/^\\/\\/sys / && !$nonblock;\n\n\t# Line must be of the form\n\t#\tfunc Open(path string, mode int, perm int) (fd int, err error)\n\t# Split into name, in params, out params.\n\tif(!/^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*(?:(\\w*)\\.)?(\\w*))?$/) {\n\t\tprint STDERR \"$ARGV:$.: malformed //sys declaration\\n\";\n\t\t$errors = 1;\n\t\tnext;\n\t}\n\tmy ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);\n\n\t# Split argument lists on comma.\n\tmy @in = parseparamlist($in);\n\tmy @out = parseparamlist($out);\n\n\t# Try in vain to keep people from editing this file.\n\t# The theory is that they jump into the middle of the file\n\t# without reading the header.\n\t$text .= \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\";\n\n\t# So file name.\n\tif($modname eq \"\") {\n\t\t$modname = \"libc\";\n\t}\n\n\t# System call name.\n\tif($sysname eq \"\") {\n\t\t$sysname = \"$func\";\n\t}\n\n\t# System call pointer variable name.\n\tmy $sysvarname = \"proc$sysname\";\n\n\tmy $strconvfunc = \"BytePtrFromString\";\n\tmy $strconvtype = \"*byte\";\n\n\t$sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.\n\n\t# Runtime import of function to allow cross-platform builds.\n\t$dynimports .= \"//go:cgo_import_dynamic libc_${sysname} ${sysname} \\\"$modname.so\\\"\\n\";\n\t# Link symbol to proc address variable.\n\t$linknames .= \"//go:linkname ${sysvarname} libc_${sysname}\\n\";\n\t# Library proc address variable.\n\tpush @vars, $sysvarname;\n\n\t# Go function header.\n\t$out = join(', ', @out);\n\tif($out ne \"\") {\n\t\t$out = \" ($out)\";\n\t}\n\tif($text ne \"\") {\n\t\t$text .= \"\\n\"\n\t}\n\t$text .= sprintf \"func %s(%s)%s {\\n\", $func, join(', ', @in), $out;\n\n\t# Check if err return available\n\tmy $errvar = \"\";\n\tforeach my $p (@out) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type eq \"error\") {\n\t\t\t$errvar = $name;\n\t\t\tlast;\n\t\t}\n\t}\n\n\t# Prepare arguments to Syscall.\n\tmy @args = ();\n\tmy $n = 0;\n\tforeach my $p (@in) {\n\t\tmy ($name, $type) = parseparam($p);\n\t\tif($type =~ /^\\*/) {\n\t\t\tpush @args, \"uintptr(unsafe.Pointer($name))\";\n\t\t} elsif($type eq \"string\" && $errvar ne \"\") {\n\t\t\t$text .= \"\\tvar _p$n $strconvtype\\n\";\n\t\t\t$text .= \"\\t_p$n, $errvar = $strconvfunc($name)\\n\";\n\t\t\t$text .= \"\\tif $errvar != nil {\\n\\t\\treturn\\n\\t}\\n\";\n\t\t\tpush @args, \"uintptr(unsafe.Pointer(_p$n))\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"string\") {\n\t\t\tprint STDERR \"$ARGV:$.: $func uses string arguments, but has no error return\\n\";\n\t\t\t$text .= \"\\tvar _p$n $strconvtype\\n\";\n\t\t\t$text .= \"\\t_p$n, _ = $strconvfunc($name)\\n\";\n\t\t\tpush @args, \"uintptr(unsafe.Pointer(_p$n))\";\n\t\t\t$n++;\n\t\t} elsif($type =~ /^\\[\\](.*)/) {\n\t\t\t# Convert slice into pointer, length.\n\t\t\t# Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t# pass nil in that case.\n\t\t\t$text .= \"\\tvar _p$n *$1\\n\";\n\t\t\t$text .= \"\\tif len($name) > 0 {\\n\\t\\t_p$n = \\&$name\\[0]\\n\\t}\\n\";\n\t\t\tpush @args, \"uintptr(unsafe.Pointer(_p$n))\", \"uintptr(len($name))\";\n\t\t\t$n++;\n\t\t} elsif($type eq \"int64\" && $_32bit ne \"\") {\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\tpush @args, \"uintptr($name >> 32)\", \"uintptr($name)\";\n\t\t\t} else {\n\t\t\t\tpush @args, \"uintptr($name)\", \"uintptr($name >> 32)\";\n\t\t\t}\n\t\t} elsif($type eq \"bool\") {\n \t\t\t$text .= \"\\tvar _p$n uint32\\n\";\n\t\t\t$text .= \"\\tif $name {\\n\\t\\t_p$n = 1\\n\\t} else {\\n\\t\\t_p$n = 0\\n\\t}\\n\";\n\t\t\tpush @args, \"uintptr(_p$n)\";\n\t\t\t$n++;\n\t\t} else {\n\t\t\tpush @args, \"uintptr($name)\";\n\t\t}\n\t}\n\tmy $nargs = @args;\n\n\t# Determine which form to use; pad args with zeros.\n\tmy $asm = \"sysvicall6\";\n\tif ($nonblock) {\n\t\t$asm = \"rawSysvicall6\";\n\t}\n\tif(@args <= 6) {\n\t\twhile(@args < 6) {\n\t\t\tpush @args, \"0\";\n\t\t}\n\t} else {\n\t\tprint STDERR \"$ARGV:$.: too many arguments to system call\\n\";\n\t}\n\n\t# Actual call.\n\tmy $args = join(', ', @args);\n\tmy $call = \"$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $args)\";\n\n\t# Assign return values.\n\tmy $body = \"\";\n\tmy $failexpr = \"\";\n\tmy @ret = (\"_\", \"_\", \"_\");\n\tmy @pout= ();\n\tmy $do_errno = 0;\n\tfor(my $i=0; $i<@out; $i++) {\n\t\tmy $p = $out[$i];\n\t\tmy ($name, $type) = parseparam($p);\n\t\tmy $reg = \"\";\n\t\tif($name eq \"err\") {\n\t\t\t$reg = \"e1\";\n\t\t\t$ret[2] = $reg;\n\t\t\t$do_errno = 1;\n\t\t} else {\n\t\t\t$reg = sprintf(\"r%d\", $i);\n\t\t\t$ret[$i] = $reg;\n\t\t}\n\t\tif($type eq \"bool\") {\n\t\t\t$reg = \"$reg != 0\";\n\t\t}\n\t\tif($type eq \"int64\" && $_32bit ne \"\") {\n\t\t\t# 64-bit number in r1:r0 or r0:r1.\n\t\t\tif($i+2 > @out) {\n\t\t\t\tprint STDERR \"$ARGV:$.: not enough registers for int64 return\\n\";\n\t\t\t}\n\t\t\tif($_32bit eq \"big-endian\") {\n\t\t\t\t$reg = sprintf(\"int64(r%d)<<32 | int64(r%d)\", $i, $i+1);\n\t\t\t} else {\n\t\t\t\t$reg = sprintf(\"int64(r%d)<<32 | int64(r%d)\", $i+1, $i);\n\t\t\t}\n\t\t\t$ret[$i] = sprintf(\"r%d\", $i);\n\t\t\t$ret[$i+1] = sprintf(\"r%d\", $i+1);\n\t\t}\n\t\tif($reg ne \"e1\") {\n\t\t\t$body .= \"\\t$name = $type($reg)\\n\";\n\t\t}\n\t}\n\tif ($ret[0] eq \"_\" && $ret[1] eq \"_\" && $ret[2] eq \"_\") {\n\t\t$text .= \"\\t$call\\n\";\n\t} else {\n\t\t$text .= \"\\t$ret[0], $ret[1], $ret[2] := $call\\n\";\n\t}\n\t$text .= $body;\n\n\tif ($do_errno) {\n\t\t$text .= \"\\tif e1 != 0 {\\n\";\n\t\t$text .= \"\\t\\terr = e1\\n\";\n\t\t$text .= \"\\t}\\n\";\n\t}\n\t$text .= \"\\treturn\\n\";\n\t$text .= \"}\\n\";\n}\n\nif($errors) {\n\texit 1;\n}\n\nprint <<EOF;\n// $cmdline\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $tags\n\npackage $package\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\nEOF\n\nprint \"import \\\"golang.org/x/sys/unix\\\"\\n\" if $package ne \"unix\";\n\nmy $vardecls = \"\\t\" . join(\",\\n\\t\", @vars);\n$vardecls .= \" syscallFunc\";\n\nchomp($_=<<EOF);\n\n$dynimports\n$linknames\nvar (\n$vardecls\n)\n\n$text\nEOF\nprint $_;\nexit 0;\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl",
    "content": "#!/usr/bin/env perl\n\n# Copyright 2011 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n#\n# Parse the header files for OpenBSD and generate a Go usable sysctl MIB.\n#\n# Build a MIB with each entry being an array containing the level, type and\n# a hash that will contain additional entries if the current entry is a node.\n# We then walk this MIB and create a flattened sysctl name to OID hash.\n#\n\nuse strict;\n\nif($ENV{'GOARCH'} eq \"\" || $ENV{'GOOS'} eq \"\") {\n\tprint STDERR \"GOARCH or GOOS not defined in environment\\n\";\n\texit 1;\n}\n\nmy $debug = 0;\nmy %ctls = ();\n\nmy @headers = qw (\n\tsys/sysctl.h\n\tsys/socket.h\n\tsys/tty.h\n\tsys/malloc.h\n\tsys/mount.h\n\tsys/namei.h\n\tsys/sem.h\n\tsys/shm.h\n\tsys/vmmeter.h\n\tuvm/uvmexp.h\n\tuvm/uvm_param.h\n\tuvm/uvm_swap_encrypt.h\n\tddb/db_var.h\n\tnet/if.h\n\tnet/if_pfsync.h\n\tnet/pipex.h\n\tnetinet/in.h\n\tnetinet/icmp_var.h\n\tnetinet/igmp_var.h\n\tnetinet/ip_ah.h\n\tnetinet/ip_carp.h\n\tnetinet/ip_divert.h\n\tnetinet/ip_esp.h\n\tnetinet/ip_ether.h\n\tnetinet/ip_gre.h\n\tnetinet/ip_ipcomp.h\n\tnetinet/ip_ipip.h\n\tnetinet/pim_var.h\n\tnetinet/tcp_var.h\n\tnetinet/udp_var.h\n\tnetinet6/in6.h\n\tnetinet6/ip6_divert.h\n\tnetinet6/pim6_var.h\n\tnetinet/icmp6.h\n\tnetmpls/mpls.h\n);\n\nmy @ctls = qw (\n\tkern\n\tvm\n\tfs\n\tnet\n\t#debug\t\t\t\t# Special handling required\n\thw\n\t#machdep\t\t\t# Arch specific\n\tuser\n\tddb\n\t#vfs\t\t\t\t# Special handling required\n\tfs.posix\n\tkern.forkstat\n\tkern.intrcnt\n\tkern.malloc\n\tkern.nchstats\n\tkern.seminfo\n\tkern.shminfo\n\tkern.timecounter\n\tkern.tty\n\tkern.watchdog\n\tnet.bpf\n\tnet.ifq\n\tnet.inet\n\tnet.inet.ah\n\tnet.inet.carp\n\tnet.inet.divert\n\tnet.inet.esp\n\tnet.inet.etherip\n\tnet.inet.gre\n\tnet.inet.icmp\n\tnet.inet.igmp\n\tnet.inet.ip\n\tnet.inet.ip.ifq\n\tnet.inet.ipcomp\n\tnet.inet.ipip\n\tnet.inet.mobileip\n\tnet.inet.pfsync\n\tnet.inet.pim\n\tnet.inet.tcp\n\tnet.inet.udp\n\tnet.inet6\n\tnet.inet6.divert\n\tnet.inet6.ip6\n\tnet.inet6.icmp6\n\tnet.inet6.pim6\n\tnet.inet6.tcp6\n\tnet.inet6.udp6\n\tnet.mpls\n\tnet.mpls.ifq\n\tnet.key\n\tnet.pflow\n\tnet.pfsync\n\tnet.pipex\n\tnet.rt\n\tvm.swapencrypt\n\t#vfsgenctl\t\t\t# Special handling required\n);\n\n# Node name \"fixups\"\nmy %ctl_map = (\n\t\"ipproto\" => \"net.inet\",\n\t\"net.inet.ipproto\" => \"net.inet\",\n\t\"net.inet6.ipv6proto\" => \"net.inet6\",\n\t\"net.inet6.ipv6\" => \"net.inet6.ip6\",\n\t\"net.inet.icmpv6\" => \"net.inet6.icmp6\",\n\t\"net.inet6.divert6\" => \"net.inet6.divert\",\n\t\"net.inet6.tcp6\" => \"net.inet.tcp\",\n\t\"net.inet6.udp6\" => \"net.inet.udp\",\n\t\"mpls\" => \"net.mpls\",\n\t\"swpenc\" => \"vm.swapencrypt\"\n);\n\n# Node mappings\nmy %node_map = (\n\t\"net.inet.ip.ifq\" => \"net.ifq\",\n\t\"net.inet.pfsync\" => \"net.pfsync\",\n\t\"net.mpls.ifq\" => \"net.ifq\"\n);\n\nmy $ctlname;\nmy %mib = ();\nmy %sysctl = ();\nmy $node;\n\nsub debug() {\n\tprint STDERR \"$_[0]\\n\" if $debug;\n}\n\n# Walk the MIB and build a sysctl name to OID mapping.\nsub build_sysctl() {\n\tmy ($node, $name, $oid) = @_;\n\tmy %node = %{$node};\n\tmy @oid = @{$oid};\n\n\tforeach my $key (sort keys %node) {\n\t\tmy @node = @{$node{$key}};\n\t\tmy $nodename = $name.($name ne '' ? '.' : '').$key;\n\t\tmy @nodeoid = (@oid, $node[0]);\n\t\tif ($node[1] eq 'CTLTYPE_NODE') {\n\t\t\tif (exists $node_map{$nodename}) {\n\t\t\t\t$node = \\%mib;\n\t\t\t\t$ctlname = $node_map{$nodename};\n\t\t\t\tforeach my $part (split /\\./, $ctlname) {\n\t\t\t\t\t$node = \\%{@{$$node{$part}}[2]};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$node = $node[2];\n\t\t\t}\n\t\t\t&build_sysctl($node, $nodename, \\@nodeoid);\n\t\t} elsif ($node[1] ne '') {\n\t\t\t$sysctl{$nodename} = \\@nodeoid;\n\t\t}\n\t}\n}\n\nforeach my $ctl (@ctls) {\n\t$ctls{$ctl} = $ctl;\n}\n\n# Build MIB\nforeach my $header (@headers) {\n\t&debug(\"Processing $header...\");\n\topen HEADER, \"/usr/include/$header\" ||\n\t    print STDERR \"Failed to open $header\\n\";\n\twhile (<HEADER>) {\n\t\tif ($_ =~ /^#define\\s+(CTL_NAMES)\\s+{/ ||\n\t\t    $_ =~ /^#define\\s+(CTL_(.*)_NAMES)\\s+{/ ||\n\t\t    $_ =~ /^#define\\s+((.*)CTL_NAMES)\\s+{/) {\n\t\t\tif ($1 eq 'CTL_NAMES') {\n\t\t\t\t# Top level.\n\t\t\t\t$node = \\%mib;\n\t\t\t} else {\n\t\t\t\t# Node.\n\t\t\t\tmy $nodename = lc($2);\n\t\t\t\tif ($header =~ /^netinet\\//) {\n\t\t\t\t\t$ctlname = \"net.inet.$nodename\";\n\t\t\t\t} elsif ($header =~ /^netinet6\\//) {\n\t\t\t\t\t$ctlname = \"net.inet6.$nodename\";\n\t\t\t\t} elsif ($header =~ /^net\\//) {\n\t\t\t\t\t$ctlname = \"net.$nodename\";\n\t\t\t\t} else {\n\t\t\t\t\t$ctlname = \"$nodename\";\n\t\t\t\t\t$ctlname =~ s/^(fs|net|kern)_/$1\\./;\n\t\t\t\t}\n\t\t\t\tif (exists $ctl_map{$ctlname}) {\n\t\t\t\t\t$ctlname = $ctl_map{$ctlname};\n\t\t\t\t}\n\t\t\t\tif (not exists $ctls{$ctlname}) {\n\t\t\t\t\t&debug(\"Ignoring $ctlname...\");\n\t\t\t\t\tnext;\n\t\t\t\t}\n\n\t\t\t\t# Walk down from the top of the MIB.\n\t\t\t\t$node = \\%mib;\n\t\t\t\tforeach my $part (split /\\./, $ctlname) {\n\t\t\t\t\tif (not exists $$node{$part}) {\n\t\t\t\t\t\t&debug(\"Missing node $part\");\n\t\t\t\t\t\t$$node{$part} = [ 0, '', {} ];\n\t\t\t\t\t}\n\t\t\t\t\t$node = \\%{@{$$node{$part}}[2]};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t# Populate current node with entries.\n\t\t\tmy $i = -1;\n\t\t\twhile (defined($_) && $_ !~ /^}/) {\n\t\t\t\t$_ = <HEADER>;\n\t\t\t\t$i++ if $_ =~ /{.*}/;\n\t\t\t\tnext if $_ !~ /{\\s+\"(\\w+)\",\\s+(CTLTYPE_[A-Z]+)\\s+}/;\n\t\t\t\t$$node{$1} = [ $i, $2, {} ];\n\t\t\t}\n\t\t}\n\t}\n\tclose HEADER;\n}\n\n&build_sysctl(\\%mib, \"\", []);\n\nprint <<EOF;\n// mksysctl_openbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\n// +build $ENV{'GOARCH'},$ENV{'GOOS'}\n\npackage unix;\n\ntype mibentry struct {\n\tctlname string\n\tctloid []_C_int\n}\n\nvar sysctlMib = []mibentry {\nEOF\n\nforeach my $name (sort keys %sysctl) {\n\tmy @oid = @{$sysctl{$name}};\n\tprint \"\\t{ \\\"$name\\\", []_C_int{ \", join(', ', @oid), \" } }, \\n\";\n}\n\nprint <<EOF;\n}\nEOF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n#\n# Generate system call table for Darwin from sys/syscall.h\n\nuse strict;\n\nif($ENV{'GOARCH'} eq \"\" || $ENV{'GOOS'} eq \"\") {\n\tprint STDERR \"GOARCH or GOOS not defined in environment\\n\";\n\texit 1;\n}\n\nmy $command = \"mksysnum_darwin.pl \" . join(' ', @ARGV);\n\nprint <<EOF;\n// $command\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $ENV{'GOARCH'},$ENV{'GOOS'}\n\npackage unix\n\nconst (\nEOF\n\nwhile(<>){\n\tif(/^#define\\s+SYS_(\\w+)\\s+([0-9]+)/){\n\t\tmy $name = $1;\n\t\tmy $num = $2;\n\t\t$name =~ y/a-z/A-Z/;\n\t\tprint \"\tSYS_$name = $num;\"\n\t}\n}\n\nprint <<EOF;\n)\nEOF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n#\n# Generate system call table for DragonFly from master list\n# (for example, /usr/src/sys/kern/syscalls.master).\n\nuse strict;\n\nif($ENV{'GOARCH'} eq \"\" || $ENV{'GOOS'} eq \"\") {\n\tprint STDERR \"GOARCH or GOOS not defined in environment\\n\";\n\texit 1;\n}\n\nmy $command = \"mksysnum_dragonfly.pl \" . join(' ', @ARGV);\n\nprint <<EOF;\n// $command\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $ENV{'GOARCH'},$ENV{'GOOS'}\n\npackage unix\n\nconst (\nEOF\n\nwhile(<>){\n\tif(/^([0-9]+)\\s+STD\\s+({ \\S+\\s+(\\w+).*)$/){\n\t\tmy $num = $1;\n\t\tmy $proto = $2;\n\t\tmy $name = \"SYS_$3\";\n\t\t$name =~ y/a-z/A-Z/;\n\n\t\t# There are multiple entries for enosys and nosys, so comment them out.\n\t\tif($name =~ /^SYS_E?NOSYS$/){\n\t\t\t$name = \"// $name\";\n\t\t}\n\t\tif($name eq 'SYS_SYS_EXIT'){\n\t\t\t$name = 'SYS_EXIT';\n\t\t}\n\n\t\tprint \"\t$name = $num;  // $proto\\n\";\n\t}\n}\n\nprint <<EOF;\n)\nEOF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n#\n# Generate system call table for FreeBSD from master list\n# (for example, /usr/src/sys/kern/syscalls.master).\n\nuse strict;\n\nif($ENV{'GOARCH'} eq \"\" || $ENV{'GOOS'} eq \"\") {\n\tprint STDERR \"GOARCH or GOOS not defined in environment\\n\";\n\texit 1;\n}\n\nmy $command = \"mksysnum_freebsd.pl \" . join(' ', @ARGV);\n\nprint <<EOF;\n// $command\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $ENV{'GOARCH'},$ENV{'GOOS'}\n\npackage unix\n\nconst (\nEOF\n\nwhile(<>){\n\tif(/^([0-9]+)\\s+\\S+\\s+(?:NO)?STD\\s+({ \\S+\\s+(\\w+).*)$/){\n\t\tmy $num = $1;\n\t\tmy $proto = $2;\n\t\tmy $name = \"SYS_$3\";\n\t\t$name =~ y/a-z/A-Z/;\n\n\t\t# There are multiple entries for enosys and nosys, so comment them out.\n\t\tif($name =~ /^SYS_E?NOSYS$/){\n\t\t\t$name = \"// $name\";\n\t\t}\n\t\tif($name eq 'SYS_SYS_EXIT'){\n\t\t\t$name = 'SYS_EXIT';\n\t\t}\n\n\t\tprint \"\t$name = $num;  // $proto\\n\";\n\t}\n}\n\nprint <<EOF;\n)\nEOF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n#\n# Generate system call table for OpenBSD from master list\n# (for example, /usr/src/sys/kern/syscalls.master).\n\nuse strict;\n\nif($ENV{'GOARCH'} eq \"\" || $ENV{'GOOS'} eq \"\") {\n\tprint STDERR \"GOARCH or GOOS not defined in environment\\n\";\n\texit 1;\n}\n\nmy $command = \"mksysnum_netbsd.pl \" . join(' ', @ARGV);\n\nprint <<EOF;\n// $command\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $ENV{'GOARCH'},$ENV{'GOOS'}\n\npackage unix\n\nconst (\nEOF\n\nmy $line = '';\nwhile(<>){\n\tif($line =~ /^(.*)\\\\$/) {\n\t\t# Handle continuation\n\t\t$line = $1;\n\t\t$_ =~ s/^\\s+//;\n\t\t$line .= $_;\n\t} else {\n\t\t# New line\n\t\t$line = $_;\n\t}\n\tnext if $line =~ /\\\\$/;\n\tif($line =~ /^([0-9]+)\\s+((STD)|(NOERR))\\s+(RUMP\\s+)?({\\s+\\S+\\s*\\*?\\s*\\|(\\S+)\\|(\\S*)\\|(\\w+).*\\s+})(\\s+(\\S+))?$/) {\n\t\tmy $num = $1;\n\t\tmy $proto = $6;\n\t\tmy $compat = $8;\n\t\tmy $name = \"$7_$9\";\n\n\t\t$name = \"$7_$11\" if $11 ne '';\n\t\t$name =~ y/a-z/A-Z/;\n\n\t\tif($compat eq '' || $compat eq '13' || $compat eq '30' || $compat eq '50') {\n\t\t\tprint \"\t$name = $num;  // $proto\\n\";\n\t\t}\n\t}\n}\n\nprint <<EOF;\n)\nEOF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl",
    "content": "#!/usr/bin/env perl\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n#\n# Generate system call table for OpenBSD from master list\n# (for example, /usr/src/sys/kern/syscalls.master).\n\nuse strict;\n\nif($ENV{'GOARCH'} eq \"\" || $ENV{'GOOS'} eq \"\") {\n\tprint STDERR \"GOARCH or GOOS not defined in environment\\n\";\n\texit 1;\n}\n\nmy $command = \"mksysnum_openbsd.pl \" . join(' ', @ARGV);\n\nprint <<EOF;\n// $command\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build $ENV{'GOARCH'},$ENV{'GOOS'}\n\npackage unix\n\nconst (\nEOF\n\nwhile(<>){\n\tif(/^([0-9]+)\\s+STD\\s+(NOLOCK\\s+)?({ \\S+\\s+\\*?(\\w+).*)$/){\n\t\tmy $num = $1;\n\t\tmy $proto = $3;\n\t\tmy $name = $4;\n\t\t$name =~ y/a-z/A-Z/;\n\n\t\t# There are multiple entries for enosys and nosys, so comment them out.\n\t\tif($name =~ /^SYS_E?NOSYS$/){\n\t\t\t$name = \"// $name\";\n\t\t}\n\t\tif($name eq 'SYS_SYS_EXIT'){\n\t\t\t$name = 'SYS_EXIT';\n\t\t}\n\n\t\tprint \"\t$name = $num;  // $proto\\n\";\n\t}\n}\n\nprint <<EOF;\n)\nEOF\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/openbsd_pledge.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build openbsd\n// +build 386 amd64 arm\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// The pledge syscall does not accept execpromises on OpenBSD releases\n// before 6.3.\n//\n// execpromises must be empty when Pledge is called on OpenBSD\n// releases predating 6.3, otherwise an error will be returned.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pledgeAvailable(maj, min, execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := syscall.BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// This variable will hold either a nil unsafe.Pointer or\n\t// an unsafe.Pointer to a string (execpromises).\n\tvar expr unsafe.Pointer\n\n\t// If we're running on OpenBSD > 6.2, pass execpromises to the syscall.\n\tif maj > 6 || (maj == 6 && min > 2) {\n\t\texptr, err := syscall.BytePtrFromString(execpromises)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texpr = unsafe.Pointer(exptr)\n\t}\n\n\t_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\n\treturn nil\n}\n\n// PledgePromises implements the pledge syscall.\n//\n// This changes the promises and leaves the execpromises untouched.\n//\n// For more information see pledge(2).\nfunc PledgePromises(promises string) error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pledgeAvailable(maj, min, \"\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// This variable holds the execpromises and is always nil.\n\tvar expr unsafe.Pointer\n\n\tpptr, err := syscall.BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\n\treturn nil\n}\n\n// PledgeExecpromises implements the pledge syscall.\n//\n// This changes the execpromises and leaves the promises untouched.\n//\n// For more information see pledge(2).\nfunc PledgeExecpromises(execpromises string) error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pledgeAvailable(maj, min, execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// This variable holds the promises and is always nil.\n\tvar pptr unsafe.Pointer\n\n\texptr, err := syscall.BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\n\treturn nil\n}\n\n// majmin returns major and minor version number for an OpenBSD system.\nfunc majmin() (major int, minor int, err error) {\n\tvar v Utsname\n\terr = Uname(&v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmajor, err = strconv.Atoi(string(v.Release[0]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse major version number returned by uname\")\n\t\treturn\n\t}\n\n\tminor, err = strconv.Atoi(string(v.Release[2]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse minor version number returned by uname\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// pledgeAvailable checks for availability of the pledge(2) syscall\n// based on the running OpenBSD version.\nfunc pledgeAvailable(maj, min int, execpromises string) error {\n\t// If OpenBSD <= 5.9, pledge is not available.\n\tif (maj == 5 && min != 9) || maj < 5 {\n\t\treturn fmt.Errorf(\"pledge syscall is not available on OpenBSD %d.%d\", maj, min)\n\t}\n\n\t// If OpenBSD <= 6.2 and execpromises is not empty,\n\t// return an error - execpromises is not available before 6.3\n\tif (maj < 6 || (maj == 6 && min <= 2)) && execpromises != \"\" {\n\t\treturn fmt.Errorf(\"cannot use execpromises on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/openbsd_unveil.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build openbsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Unveil implements the unveil syscall.\n// For more information see unveil(2).\n// Note that the special case of blocking further\n// unveil calls is handled by UnveilBlock.\nfunc Unveil(path string, flags string) error {\n\tpathPtr, err := syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := syscall.BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\treturn nil\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\t// Both pointers must be nil.\n\tvar pathUnsafe, flagsUnsafe unsafe.Pointer\n\t_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/pagesize_unix.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\n// For Unix, get the pagesize from the runtime.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getpagesize() int {\n\treturn syscall.Getpagesize()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build darwin,race linux,race freebsd,race\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/sockcmsg_linux.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*((*Ucred)(cmsgData(h))) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/sockcmsg_unix.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\t// NOTE: It seems like 64-bit Darwin, DragonFly BSD and\n\t// Solaris kernels still require 32-bit aligned access to\n\t// network subsystem.\n\tif darwin64Bit || dragonfly64Bit || solaris64Bit {\n\t\tsalign = 4\n\t}\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n\n// CmsgLen returns the value to store in the Len field of the Cmsghdr\n// structure, taking into account any necessary alignment.\nfunc CmsgLen(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + datalen\n}\n\n// CmsgSpace returns the number of bytes an ancillary element with\n// payload of the passed data length occupies.\nfunc CmsgSpace(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)\n}\n\nfunc cmsgData(h *Cmsghdr) unsafe.Pointer {\n\treturn unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)))\n}\n\n// SocketControlMessage represents a socket control message.\ntype SocketControlMessage struct {\n\tHeader Cmsghdr\n\tData   []byte\n}\n\n// ParseSocketControlMessage parses b as an array of socket control\n// messages.\nfunc ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {\n\tvar msgs []SocketControlMessage\n\ti := 0\n\tfor i+CmsgLen(0) <= len(b) {\n\t\th, dbuf, err := socketControlMessageHeaderAndData(b[i:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm := SocketControlMessage{Header: *h, Data: dbuf}\n\t\tmsgs = append(msgs, m)\n\t\ti += cmsgAlignOf(int(h.Len))\n\t}\n\treturn msgs, nil\n}\n\nfunc socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\tif h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {\n\t\treturn nil, nil, EINVAL\n\t}\n\treturn h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil\n}\n\n// UnixRights encodes a set of open file descriptors into a socket\n// control message for sending to another process.\nfunc UnixRights(fds ...int) []byte {\n\tdatalen := len(fds) * 4\n\tb := make([]byte, CmsgSpace(datalen))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_RIGHTS\n\th.SetLen(CmsgLen(datalen))\n\tdata := cmsgData(h)\n\tfor _, fd := range fds {\n\t\t*(*int32)(data) = int32(fd)\n\t\tdata = unsafe.Pointer(uintptr(data) + 4)\n\t}\n\treturn b\n}\n\n// ParseUnixRights decodes a socket control message that contains an\n// integer array of open file descriptors from another process.\nfunc ParseUnixRights(m *SocketControlMessage) ([]int, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_RIGHTS {\n\t\treturn nil, EINVAL\n\t}\n\tfds := make([]int, len(m.Data)>>2)\n\tfor i, j := 0, 0; i < len(m.Data); i += 4 {\n\t\tfds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))\n\t\tj++\n\t}\n\treturn fds, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + uitoa(uint(-val))\n\t}\n\treturn uitoa(uint(val))\n}\n\nfunc uitoa(val uint) string {\n\tvar buf [32]byte // big enough for int64\n\ti := len(buf) - 1\n\tfor val >= 10 {\n\t\tbuf[i] = byte(val%10 + '0')\n\t\ti--\n\t\tval /= 10\n\t}\n\tbuf[i] = byte(val + '0')\n\treturn string(buf[i:])\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\n// Package unix contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display OS-specific documentation for the current\n// system. If you want godoc to display OS documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage unix // import \"golang.org/x/sys/unix\"\n\nimport \"strings\"\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\n// See mkunix.pl.\nvar _zero uintptr\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix\n\n// Aix system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\nfunc Utimes(path string, tv []Timeval) error {\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = uint8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' {\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sys\tgetcwd(buf []byte) (err error)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (ret string, err error) {\n\tfor len := uint64(4096); ; len *= 2 {\n\t\tb := make([]byte, len)\n\t\terr := getcwd(b)\n\t\tif err == nil {\n\t\t\ti := 0\n\t\t\tfor b[i] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn string(b[0:i]), nil\n\t\t}\n\t\tif err != ERANGE {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n}\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\terr = getcwd(buf)\n\tif err == nil {\n\t\ti := 0\n\t\tfor buf[i] != 0 {\n\t\t\ti++\n\t\t}\n\t\tn = i + 1\n\t}\n\treturn\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n/*\n * Socket\n */\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\t// Recvmsg not implemented on AIX\n\tsa := new(SockaddrUnix)\n\treturn -1, -1, -1, sa, ENOSYS\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\t// SendmsgN not implemented on AIX\n\treturn -1, ENOSYS\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some versions of AIX have a bug in getsockname (see IV78655).\n\t\t// We can't rely on sa.Len being set correctly.\n\t\tn := SizeofSockaddrUnix - 3 // substract leading Family, Len, terminating NUL.\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tbytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terr = gettimeofday(tv, nil)\n\treturn\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\n//sys\tgetdirent(fd int, buf []byte) (n int, err error)\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn getdirent(fd, buf)\n}\n\n//sys\twait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\tvar r Pid_t\n\terr = ERESTART\n\t// AIX wait4 may return with ERESTART errno, while the processus is still\n\t// active.\n\tfor err == ERESTART {\n\t\tr, err = wait4(Pid_t(pid), &status, options, rusage)\n\t}\n\twpid = int(r)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n/*\n * Wait\n */\n\ntype WaitStatus uint32\n\nfunc (w WaitStatus) Stopped() bool { return w&0x40 != 0 }\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>8) & 0xFF\n}\n\nfunc (w WaitStatus) Exited() bool { return w&0xFF == 0 }\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int((w >> 8) & 0xFF)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>16) & 0xFF\n}\n\nfunc (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }\n\nfunc (w WaitStatus) CoreDump() bool { return w&0x200 != 0 }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\n// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX\n// There is no way to create a custom fcntl and to keep //sys fcntl easily,\n// Therefore, the programmer must call dup2 instead of fcntl in this case.\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\n//sys\tFcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\nfunc Flock(fd int, how int) (err error) {\n\treturn syscall.Flock(fd, how)\n}\n\n/*\n * Direct access\n */\n\n//sys\tAcct(path string) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFsync(fd int) (err error)\n// readdir_r\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\n//sys\tGetpgrp() (pid int)\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = syslog\n//sys\tMkdir(dirfd int, path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys   Open(path string, mode int, perm uint32) (fd int, err error) = open64\n//sys   Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n\n//sys\tSetuid(uid int) (err error)\n//sys\tSetgid(uid int) (err error)\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//TODO umount\n// //sys\tUnmount(target string, flags int) (err error) = umount\n//sys   Unlink(path string) (err error)\n//sys   Unlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\treadlen(fd int, p *byte, np int) (n int, err error) = read\n//sys\twritelen(fd int, p *byte, np int) (n int, err error) = write\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = pread64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64\n//TODO Select\n// //sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tgettimeofday(tv *Timeval, tzp *Timezone) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix\n// +build ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek64\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix\n// +build ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int64(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_bsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build darwin dragonfly freebsd netbsd openbsd\n\n// BSD system call wrappers shared by *BSD based systems\n// including OS X (Darwin) and FreeBSD.  Like the other\n// syscall_*.go files it is compiled as Go code but also\n// used as input to mksyscall which parses the //sys\n// lines and generates system call stubs.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// 64 bits should be enough. (32 bits isn't even on 386). Since the\n\t// actual system call is getdirentries64, 64 is a good guess.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\tvar base = (*uintptr)(unsafe.Pointer(new(uint64)))\n\treturn Getdirentries(fd, buf, base)\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\tShutdown(s int, how int) (err error)\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Index == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = sa.Len\n\tsa.raw.Family = AF_LINK\n\tsa.raw.Index = sa.Index\n\tsa.raw.Type = sa.Type\n\tsa.raw.Nlen = sa.Nlen\n\tsa.raw.Alen = sa.Alen\n\tsa.raw.Slen = sa.Slen\n\tfor i := 0; i < len(sa.raw.Data); i++ {\n\t\tsa.raw.Data[i] = sa.Data[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_LINK:\n\t\tpp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrDatalink)\n\t\tsa.Len = pp.Len\n\t\tsa.Family = pp.Family\n\t\tsa.Index = pp.Index\n\t\tsa.Type = pp.Type\n\t\tsa.Nlen = pp.Nlen\n\t\tsa.Alen = pp.Alen\n\t\tsa.Slen = pp.Slen\n\t\tfor i := 0; i < len(sa.Data); i++ {\n\t\t\tsa.Data[i] = pp.Data[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tif pp.Len < 2 || pp.Len > SizeofSockaddrUnix {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some BSDs include the trailing NUL in the length, whereas\n\t\t// others do not. Work around this by subtracting the leading\n\t\t// family and len. The path is then scanned to see if a NUL\n\t\t// terminator still exists within the length.\n\t\tn := int(pp.Len) - 2 // subtract leading Family, Len\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\t// found early NUL; assume Len included the NUL\n\t\t\t\t// or was overestimating.\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tbytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tif runtime.GOOS == \"darwin\" && len == 0 {\n\t\t// Accepted socket has no address.\n\t\t// This is likely due to a bug in xnu kernels,\n\t\t// where instead of ECONNABORTED error socket\n\t\t// is accepted, but has no address.\n\t\tClose(nfd)\n\t\treturn 0, nil, ECONNABORTED\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(jsing): DragonFly has a \"bug\" (see issue 3349), which should be\n\t// reported upstream.\n\tif runtime.GOOS == \"dragonfly\" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {\n\t\trsa.Addr.Family = AF_UNIX\n\t\trsa.Addr.Len = SizeofSockaddrUnix\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(buf[:vallen-1]), nil\n}\n\n//sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys   sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tkevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)\n\nfunc Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {\n\tvar change, event unsafe.Pointer\n\tif len(changes) > 0 {\n\t\tchange = unsafe.Pointer(&changes[0])\n\t}\n\tif len(events) > 0 {\n\t\tevent = unsafe.Pointer(&events[0])\n\t}\n\treturn kevent(kq, change, len(changes), event, len(events), timeout)\n}\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\n// sysctlmib translates name to mib number and appends any additional args.\nfunc sysctlmib(name string, args ...int) ([]_C_int, error) {\n\t// Translate name to mib number.\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, a := range args {\n\t\tmib = append(mib, _C_int(a))\n\t}\n\n\treturn mib, nil\n}\n\nfunc Sysctl(name string) (string, error) {\n\treturn SysctlArgs(name)\n}\n\nfunc SysctlArgs(name string, args ...int) (string, error) {\n\tbuf, err := SysctlRaw(name, args...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := len(buf)\n\n\t// Throw away terminating NUL.\n\tif n > 0 && buf[n-1] == '\\x00' {\n\t\tn--\n\t}\n\treturn string(buf[0:n]), nil\n}\n\nfunc SysctlUint32(name string) (uint32, error) {\n\treturn SysctlUint32Args(name)\n}\n\nfunc SysctlUint32Args(name string, args ...int) (uint32, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(4)\n\tbuf := make([]byte, 4)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 4 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint32)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlUint64(name string, args ...int) (uint64, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(8)\n\tbuf := make([]byte, 8)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 8 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint64)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlRaw(name string, args ...int) ([]byte, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find size.\n\tn := uintptr(0)\n\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Read into buffer of that size.\n\tbuf := make([]byte, n)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The actual call may return less than the original reported required\n\t// size so ensure we deal with that.\n\treturn buf[:n], nil\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\t// Darwin setattrlist can set nanosecond timestamps\n\terr := setattrlistTimes(path, ts, 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\terr = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := setattrlistTimes(path, ts, flags)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfutimes(fd int, timeval *[2]Timeval) (err error)\n\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimes(fd, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys   poll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n// TODO: wrap\n//\tAcct(name nil-string) (err error)\n//\tGethostuuid(uuid *byte, timeout *Timespec) (err error)\n//\tPtrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\n//sys\tMadvise(b []byte, behav int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_darwin.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Darwin system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tbuf := make([]byte, 2048)\n\tattrs, err := getAttrList(\".\", attrList{CommonAttr: attrCmnFullpath}, buf, 0)\n\tif err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 {\n\t\twd := string(attrs[0])\n\t\t// Sanity check that it's an absolute path and ends\n\t\t// in a null byte, which we then strip.\n\t\tif wd[0] == '/' && wd[len(wd)-1] == 0 {\n\t\t\treturn wd[:len(wd)-1], nil\n\t\t}\n\t}\n\t// If pkg/os/getwd.go gets ENOTSUP, it will fall back to the\n\t// slow algorithm.\n\treturn \"\", ENOTSUP\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\n//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)\nfunc PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }\nfunc PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }\n\nconst (\n\tattrBitMapCount = 5\n\tattrCmnFullpath = 0x08000000\n)\n\ntype attrList struct {\n\tbitmapCount uint16\n\t_           uint16\n\tCommonAttr  uint32\n\tVolAttr     uint32\n\tDirAttr     uint32\n\tFileAttr    uint32\n\tForkattr    uint32\n}\n\nfunc getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {\n\tif len(attrBuf) < 4 {\n\t\treturn nil, errors.New(\"attrBuf too small\")\n\t}\n\tattrList.bitmapCount = attrBitMapCount\n\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t_, _, e1 := Syscall6(\n\t\tSYS_GETATTRLIST,\n\t\tuintptr(unsafe.Pointer(_p0)),\n\t\tuintptr(unsafe.Pointer(&attrList)),\n\t\tuintptr(unsafe.Pointer(&attrBuf[0])),\n\t\tuintptr(len(attrBuf)),\n\t\tuintptr(options),\n\t\t0,\n\t)\n\tif e1 != 0 {\n\t\treturn nil, e1\n\t}\n\tsize := *(*uint32)(unsafe.Pointer(&attrBuf[0]))\n\n\t// dat is the section of attrBuf that contains valid data,\n\t// without the 4 byte length header. All attribute offsets\n\t// are relative to dat.\n\tdat := attrBuf\n\tif int(size) < len(attrBuf) {\n\t\tdat = dat[:size]\n\t}\n\tdat = dat[4:] // remove length prefix\n\n\tfor i := uint32(0); int(i) < len(dat); {\n\t\theader := dat[i:]\n\t\tif len(header) < 8 {\n\t\t\treturn attrs, errors.New(\"truncated attribute header\")\n\t\t}\n\t\tdatOff := *(*int32)(unsafe.Pointer(&header[0]))\n\t\tattrLen := *(*uint32)(unsafe.Pointer(&header[4]))\n\t\tif datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {\n\t\t\treturn attrs, errors.New(\"truncated results; attrBuf too small\")\n\t\t}\n\t\tend := uint32(datOff) + attrLen\n\t\tattrs = append(attrs, dat[datOff:end])\n\t\ti = end\n\t\tif r := i % 4; r != 0 {\n\t\t\ti += (4 - r)\n\t\t}\n\t}\n\treturn\n}\n\n//sysnb pipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tp[0], p[1], err = pipe()\n\treturn\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc xattrPointer(dest []byte) *byte {\n\t// It's only when dest is set to NULL that the OS X implementations of\n\t// getxattr() and listxattr() return the current sizes of the named attributes.\n\t// An empty byte array is not sufficient. To maintain the same behaviour as the\n\t// linux implementation, we wrap around the system calls and pass in NULL when\n\t// dest is empty.\n\tvar destp *byte\n\tif len(dest) > 0 {\n\t\tdestp = &dest[0]\n\t}\n\treturn destp\n}\n\n//sys\tgetxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)\n}\n\n//sys\tfgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\treturn fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\n//sys\tsetxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\t// The parameters for the OS X implementation vary slightly compared to the\n\t// linux system call, specifically the position parameter:\n\t//\n\t//  linux:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          const void *value,\n\t//          size_t size,\n\t//          int flags\n\t//      );\n\t//\n\t//  darwin:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          void *value,\n\t//          size_t size,\n\t//          u_int32_t position,\n\t//          int options\n\t//      );\n\t//\n\t// position specifies the offset within the extended attribute. In the\n\t// current implementation, only the resource fork extended attribute makes\n\t// use of this argument. For all others, position is reserved. We simply\n\t// default to setting it to zero.\n\treturn setxattr(path, attr, xattrPointer(data), len(data), 0, flags)\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\treturn setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)\n}\n\n//sys\tfsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\treturn fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)\n}\n\n//sys\tremovexattr(path string, attr string, options int) (err error)\n\nfunc Removexattr(path string, attr string) (err error) {\n\t// We wrap around and explicitly zero out the options provided to the OS X\n\t// implementation of removexattr, we do so for interoperability with the\n\t// linux variant.\n\treturn removexattr(path, attr, 0)\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\treturn removexattr(link, attr, XATTR_NOFOLLOW)\n}\n\n//sys\tfremovexattr(fd int, attr string, options int) (err error)\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\treturn fremovexattr(fd, attr, 0)\n}\n\n//sys\tlistxattr(path string, dest *byte, size int, options int) (sz int, err error)\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\treturn listxattr(path, xattrPointer(dest), len(dest), 0)\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\treturn listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)\n}\n\n//sys\tflistxattr(fd int, dest *byte, size int, options int) (sz int, err error)\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\treturn flistxattr(fd, xattrPointer(dest), len(dest), 0)\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t_p0, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar attrList attrList\n\tattrList.bitmapCount = ATTR_BIT_MAP_COUNT\n\tattrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME\n\n\t// order is mtime, atime: the opposite of Chtimes\n\tattributes := [2]Timespec{times[1], times[0]}\n\toptions := 0\n\tif flags&AT_SYMLINK_NOFOLLOW != 0 {\n\t\toptions |= FSOPT_NOFOLLOW\n\t}\n\t_, _, e1 := Syscall6(\n\t\tSYS_SETATTRLIST,\n\t\tuintptr(unsafe.Pointer(_p0)),\n\t\tuintptr(unsafe.Pointer(&attrList)),\n\t\tuintptr(unsafe.Pointer(&attributes)),\n\t\tuintptr(unsafe.Sizeof(attributes)),\n\t\tuintptr(options),\n\t\t0,\n\t)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) error {\n\t// Darwin doesn't support SYS_UTIMENSAT\n\treturn ENOSYS\n}\n\n/*\n * Wrapped\n */\n\n//sys\tkill(pid int, signum int, posix int) (err error)\n\nfunc Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExchangedata(path1 string, path2 string, options int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tIssetugid() (tainted bool)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)\n//sys\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetprivexec(flag int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tStatfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys   munmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n\n/*\n * Unimplemented\n */\n// Profil\n// Sigaction\n// Sigprocmask\n// Getlogin\n// Sigpending\n// Sigaltstack\n// Ioctl\n// Reboot\n// Execve\n// Vfork\n// Sbrk\n// Sstk\n// Ovadvise\n// Mincore\n// Setitimer\n// Swapon\n// Select\n// Sigsuspend\n// Readv\n// Writev\n// Nfssvc\n// Getfh\n// Quotactl\n// Mount\n// Csops\n// Waitid\n// Add_profil\n// Kdebug_trace\n// Sigreturn\n// Atsocket\n// Kqueue_from_portset_np\n// Kqueue_portset\n// Getattrlist\n// Setattrlist\n// Getdirentriesattr\n// Searchfs\n// Delete\n// Copyfile\n// Watchevent\n// Waitevent\n// Modwatch\n// Fsctl\n// Initgroups\n// Posix_spawn\n// Nfsclnt\n// Fhopen\n// Minherit\n// Semsys\n// Msgsys\n// Shmsys\n// Semctl\n// Semget\n// Semop\n// Msgctl\n// Msgget\n// Msgsnd\n// Msgrcv\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Shm_open\n// Shm_unlink\n// Sem_open\n// Sem_close\n// Sem_unlink\n// Sem_wait\n// Sem_trywait\n// Sem_post\n// Sem_getvalue\n// Sem_init\n// Sem_destroy\n// Open_extended\n// Umask_extended\n// Stat_extended\n// Lstat_extended\n// Fstat_extended\n// Chmod_extended\n// Fchmod_extended\n// Access_extended\n// Settid\n// Gettid\n// Setsgroups\n// Getsgroups\n// Setwgroups\n// Getwgroups\n// Mkfifo_extended\n// Mkdir_extended\n// Identitysvc\n// Shared_region_check_np\n// Shared_region_map_np\n// __pthread_mutex_destroy\n// __pthread_mutex_init\n// __pthread_mutex_lock\n// __pthread_mutex_trylock\n// __pthread_mutex_unlock\n// __pthread_cond_init\n// __pthread_cond_destroy\n// __pthread_cond_broadcast\n// __pthread_cond_signal\n// Setsid_with_pid\n// __pthread_cond_timedwait\n// Aio_fsync\n// Aio_return\n// Aio_suspend\n// Aio_cancel\n// Aio_error\n// Aio_read\n// Aio_write\n// Lio_listio\n// __pthread_cond_wait\n// Iopolicysys\n// __pthread_kill\n// __pthread_sigmask\n// __sigwait\n// __disable_threadsignal\n// __pthread_markcancel\n// __pthread_canceled\n// __semwait_signal\n// Proc_info\n// sendfile\n// Stat64_extended\n// Lstat64_extended\n// Fstat64_extended\n// __pthread_chdir\n// __pthread_fchdir\n// Audit\n// Auditon\n// Getauid\n// Setauid\n// Getaudit\n// Setaudit\n// Getaudit_addr\n// Setaudit_addr\n// Auditctl\n// Bsdthread_create\n// Bsdthread_terminate\n// Stack_snapshot\n// Bsdthread_register\n// Workq_open\n// Workq_ops\n// __mac_execve\n// __mac_syscall\n// __mac_get_file\n// __mac_set_file\n// __mac_get_link\n// __mac_set_link\n// __mac_get_proc\n// __mac_set_proc\n// __mac_get_fd\n// __mac_set_fd\n// __mac_get_pid\n// __mac_get_lcid\n// __mac_get_lctx\n// __mac_set_lctx\n// Setlcid\n// Read_nocancel\n// Write_nocancel\n// Open_nocancel\n// Close_nocancel\n// Wait4_nocancel\n// Recvmsg_nocancel\n// Sendmsg_nocancel\n// Recvfrom_nocancel\n// Accept_nocancel\n// Fcntl_nocancel\n// Select_nocancel\n// Fsync_nocancel\n// Connect_nocancel\n// Sigsuspend_nocancel\n// Readv_nocancel\n// Writev_nocancel\n// Sendto_nocancel\n// Pread_nocancel\n// Pwrite_nocancel\n// Waitid_nocancel\n// Poll_nocancel\n// Msgsnd_nocancel\n// Msgrcv_nocancel\n// Sem_wait_nocancel\n// Aio_suspend_nocancel\n// __sigwait_nocancel\n// __semwait_signal_nocancel\n// __mac_mount\n// __mac_get_mount\n// __mac_getfsstat\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_darwin_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build 386,darwin\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sysnb\tgettimeofday(tp *Timeval) (sec int32, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = int32(sec)\n\ttv.Usec = int32(usec)\n\treturn err\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar length = uint64(count)\n\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)\n\n\twritten = int(length)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,darwin\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\n//sysnb\tgettimeofday(tp *Timeval) (sec int64, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = sec\n\ttv.Usec = usec\n\treturn err\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar length = uint64(count)\n\n\t_, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)\n\n\twritten = int(length)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sysnb\tgettimeofday(tp *Timeval) (sec int32, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = int32(sec)\n\ttv.Usec = int32(usec)\n\treturn err\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar length = uint64(count)\n\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)\n\n\twritten = int(length)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build arm64,darwin\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\n//sysnb\tgettimeofday(tp *Timeval) (sec int64, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = sec\n\ttv.Usec = usec\n\treturn err\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar length = uint64(count)\n\n\t_, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)\n\n\twritten = int(length)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/arm64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// DragonFly BSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport \"unsafe\"\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n\traw    RawSockaddrDatalink\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\n//sysnb pipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tp[0], p[1], err = pipe()\n\treturn\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpread(fd, p, 0, offset)\n}\n\n//sys\textpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpwrite(fd, p, 0, offset)\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {\n\terr := sysctl(mib, old, oldlen, nil, 0)\n\tif err != nil {\n\t\t// Utsname members on Dragonfly are only 32 bytes and\n\t\t// the syscall returns ENOMEM in case the actual value\n\t\t// is longer.\n\t\tif err == ENOMEM {\n\t\t\terr = nil\n\t\t}\n\t}\n\treturn err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctlUname(mib, &uname.Release[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Release[unsafe.Sizeof(uname.Release)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctlUname(mib, &uname.Version[0], &n); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys   munmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Unimplemented\n * TODO(jsing): Update this list for DragonFly.\n */\n// Profil\n// Sigaction\n// Sigprocmask\n// Getlogin\n// Sigpending\n// Sigaltstack\n// Reboot\n// Execve\n// Vfork\n// Sbrk\n// Sstk\n// Ovadvise\n// Mincore\n// Setitimer\n// Swapon\n// Select\n// Sigsuspend\n// Readv\n// Writev\n// Nfssvc\n// Getfh\n// Quotactl\n// Mount\n// Csops\n// Waitid\n// Add_profil\n// Kdebug_trace\n// Sigreturn\n// Atsocket\n// Kqueue_from_portset_np\n// Kqueue_portset\n// Getattrlist\n// Setattrlist\n// Getdirentriesattr\n// Searchfs\n// Delete\n// Copyfile\n// Watchevent\n// Waitevent\n// Modwatch\n// Getxattr\n// Fgetxattr\n// Setxattr\n// Fsetxattr\n// Removexattr\n// Fremovexattr\n// Listxattr\n// Flistxattr\n// Fsctl\n// Initgroups\n// Posix_spawn\n// Nfsclnt\n// Fhopen\n// Minherit\n// Semsys\n// Msgsys\n// Shmsys\n// Semctl\n// Semget\n// Semop\n// Msgctl\n// Msgget\n// Msgsnd\n// Msgrcv\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Shm_open\n// Shm_unlink\n// Sem_open\n// Sem_close\n// Sem_unlink\n// Sem_wait\n// Sem_trywait\n// Sem_post\n// Sem_getvalue\n// Sem_init\n// Sem_destroy\n// Open_extended\n// Umask_extended\n// Stat_extended\n// Lstat_extended\n// Fstat_extended\n// Chmod_extended\n// Fchmod_extended\n// Access_extended\n// Settid\n// Gettid\n// Setsgroups\n// Getsgroups\n// Setwgroups\n// Getwgroups\n// Mkfifo_extended\n// Mkdir_extended\n// Identitysvc\n// Shared_region_check_np\n// Shared_region_map_np\n// __pthread_mutex_destroy\n// __pthread_mutex_init\n// __pthread_mutex_lock\n// __pthread_mutex_trylock\n// __pthread_mutex_unlock\n// __pthread_cond_init\n// __pthread_cond_destroy\n// __pthread_cond_broadcast\n// __pthread_cond_signal\n// Setsid_with_pid\n// __pthread_cond_timedwait\n// Aio_fsync\n// Aio_return\n// Aio_suspend\n// Aio_cancel\n// Aio_error\n// Aio_read\n// Aio_write\n// Lio_listio\n// __pthread_cond_wait\n// Iopolicysys\n// __pthread_kill\n// __pthread_sigmask\n// __sigwait\n// __disable_threadsignal\n// __pthread_markcancel\n// __pthread_canceled\n// __semwait_signal\n// Proc_info\n// Stat64_extended\n// Lstat64_extended\n// Fstat64_extended\n// __pthread_chdir\n// __pthread_fchdir\n// Audit\n// Auditon\n// Getauid\n// Setauid\n// Getaudit\n// Setaudit\n// Getaudit_addr\n// Setaudit_addr\n// Auditctl\n// Bsdthread_create\n// Bsdthread_terminate\n// Stack_snapshot\n// Bsdthread_register\n// Workq_open\n// Workq_ops\n// __mac_execve\n// __mac_syscall\n// __mac_get_file\n// __mac_set_file\n// __mac_get_link\n// __mac_set_link\n// __mac_get_proc\n// __mac_set_proc\n// __mac_get_fd\n// __mac_set_fd\n// __mac_get_pid\n// __mac_get_lcid\n// __mac_get_lctx\n// __mac_set_lctx\n// Setlcid\n// Read_nocancel\n// Write_nocancel\n// Open_nocancel\n// Close_nocancel\n// Wait4_nocancel\n// Recvmsg_nocancel\n// Sendmsg_nocancel\n// Recvfrom_nocancel\n// Accept_nocancel\n// Fcntl_nocancel\n// Select_nocancel\n// Fsync_nocancel\n// Connect_nocancel\n// Sigsuspend_nocancel\n// Readv_nocancel\n// Writev_nocancel\n// Sendto_nocancel\n// Pread_nocancel\n// Pwrite_nocancel\n// Waitid_nocancel\n// Msgsnd_nocancel\n// Msgrcv_nocancel\n// Sem_wait_nocancel\n// Aio_suspend_nocancel\n// __sigwait_nocancel\n// __semwait_signal_nocancel\n// __mac_mount\n// __mac_get_mount\n// __mac_getfsstat\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,dragonfly\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_freebsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// FreeBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\nconst (\n\tSYS_FSTAT_FREEBSD12         = 551 // { int fstat(int fd, _Out_ struct stat *sb); }\n\tSYS_FSTATAT_FREEBSD12       = 552 // { int fstatat(int fd, _In_z_ char *path, \\\n\tSYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \\\n\tSYS_STATFS_FREEBSD12        = 555 // { int statfs(_In_z_ char *path, \\\n\tSYS_FSTATFS_FREEBSD12       = 556 // { int fstatfs(int fd, \\\n\tSYS_GETFSSTAT_FREEBSD12     = 557 // { int getfsstat( \\\n\tSYS_MKNODAT_FREEBSD12       = 559 // { int mknodat(int fd, _In_z_ char *path, \\\n)\n\n// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\n// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h\nconst _ino64First = 1200031\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n\traw    RawSockaddrDatalink\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn err\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0          unsafe.Pointer\n\t\tbufsize      uintptr\n\t\toldBuf       []statfs_freebsd11_t\n\t\tneedsConvert bool\n\t)\n\n\tif len(buf) > 0 {\n\t\tif supportsABI(_ino64First) {\n\t\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t\t} else {\n\t\t\tn := len(buf)\n\t\t\toldBuf = make([]statfs_freebsd11_t, n)\n\t\t\t_p0 = unsafe.Pointer(&oldBuf[0])\n\t\t\tbufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n)\n\t\t\tneedsConvert = true\n\t\t}\n\t}\n\tvar sysno uintptr = SYS_GETFSSTAT\n\tif supportsABI(_ino64First) {\n\t\tsysno = SYS_GETFSSTAT_FREEBSD12\n\t}\n\tr0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\tif e1 == 0 && needsConvert {\n\t\tfor i := range oldBuf {\n\t\t\tbuf[i].convertFrom(&oldBuf[i])\n\t\t}\n\t}\n\treturn\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys   ioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Stat(path string, st *Stat_t) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatat_freebsd12(AT_FDCWD, path, st, 0)\n\t}\n\terr = stat(path, &oldStat)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n\t}\n\terr = lstat(path, &oldStat)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Fstat(fd int, st *Stat_t) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstat_freebsd12(fd, st)\n\t}\n\terr = fstat(fd, &oldStat)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Fstatat(fd int, path string, st *Stat_t, flags int) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatat_freebsd12(fd, path, st, flags)\n\t}\n\terr = fstatat(fd, path, &oldStat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Statfs(path string, st *Statfs_t) (err error) {\n\tvar oldStatfs statfs_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn statfs_freebsd12(path, st)\n\t}\n\terr = statfs(path, &oldStatfs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStatfs)\n\treturn nil\n}\n\nfunc Fstatfs(fd int, st *Statfs_t) (err error) {\n\tvar oldStatfs statfs_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatfs_freebsd12(fd, st)\n\t}\n\terr = fstatfs(fd, &oldStatfs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStatfs)\n\treturn nil\n}\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn Getdirentries(fd, buf, nil)\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tif supportsABI(_ino64First) {\n\t\treturn getdirentries_freebsd12(fd, buf, basep)\n\t}\n\n\t// The old syscall entries are smaller than the new. Use 1/4 of the original\n\t// buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c).\n\toldBufLen := roundup(len(buf)/4, _dirblksiz)\n\toldBuf := make([]byte, oldBufLen)\n\tn, err = getdirentries(fd, oldBuf, basep)\n\tif err == nil && n > 0 {\n\t\tn = convertFromDirents11(buf, oldBuf[:n])\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\tvar oldDev int\n\tif supportsABI(_ino64First) {\n\t\treturn mknodat_freebsd12(AT_FDCWD, path, mode, dev)\n\t}\n\toldDev = int(dev)\n\treturn mknod(path, mode, oldDev)\n}\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar oldDev int\n\tif supportsABI(_ino64First) {\n\t\treturn mknodat_freebsd12(fd, path, mode, dev)\n\t}\n\toldDev = int(dev)\n\treturn mknodat(fd, path, mode, oldDev)\n}\n\n// round x to the nearest multiple of y, larger or equal to x.\n//\n// from /usr/include/sys/param.h Macros for counting and rounding.\n// #define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))\nfunc roundup(x, y int) int {\n\treturn ((x + y - 1) / y) * y\n}\n\nfunc (s *Stat_t) convertFrom(old *stat_freebsd11_t) {\n\t*s = Stat_t{\n\t\tDev:      uint64(old.Dev),\n\t\tIno:      uint64(old.Ino),\n\t\tNlink:    uint64(old.Nlink),\n\t\tMode:     old.Mode,\n\t\tUid:      old.Uid,\n\t\tGid:      old.Gid,\n\t\tRdev:     uint64(old.Rdev),\n\t\tAtim:     old.Atim,\n\t\tMtim:     old.Mtim,\n\t\tCtim:     old.Ctim,\n\t\tBirthtim: old.Birthtim,\n\t\tSize:     old.Size,\n\t\tBlocks:   old.Blocks,\n\t\tBlksize:  old.Blksize,\n\t\tFlags:    old.Flags,\n\t\tGen:      uint64(old.Gen),\n\t}\n}\n\nfunc (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) {\n\t*s = Statfs_t{\n\t\tVersion:     _statfsVersion,\n\t\tType:        old.Type,\n\t\tFlags:       old.Flags,\n\t\tBsize:       old.Bsize,\n\t\tIosize:      old.Iosize,\n\t\tBlocks:      old.Blocks,\n\t\tBfree:       old.Bfree,\n\t\tBavail:      old.Bavail,\n\t\tFiles:       old.Files,\n\t\tFfree:       old.Ffree,\n\t\tSyncwrites:  old.Syncwrites,\n\t\tAsyncwrites: old.Asyncwrites,\n\t\tSyncreads:   old.Syncreads,\n\t\tAsyncreads:  old.Asyncreads,\n\t\t// Spare\n\t\tNamemax: old.Namemax,\n\t\tOwner:   old.Owner,\n\t\tFsid:    old.Fsid,\n\t\t// Charspare\n\t\t// Fstypename\n\t\t// Mntfromname\n\t\t// Mntonname\n\t}\n\n\tsl := old.Fstypename[:]\n\tn := clen(*(*[]byte)(unsafe.Pointer(&sl)))\n\tcopy(s.Fstypename[:], old.Fstypename[:n])\n\n\tsl = old.Mntfromname[:]\n\tn = clen(*(*[]byte)(unsafe.Pointer(&sl)))\n\tcopy(s.Mntfromname[:], old.Mntfromname[:n])\n\n\tsl = old.Mntonname[:]\n\tn = clen(*(*[]byte)(unsafe.Pointer(&sl)))\n\tcopy(s.Mntonname[:], old.Mntonname[:n])\n}\n\nfunc convertFromDirents11(buf []byte, old []byte) int {\n\tconst (\n\t\tfixedSize    = int(unsafe.Offsetof(Dirent{}.Name))\n\t\toldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name))\n\t)\n\n\tdstPos := 0\n\tsrcPos := 0\n\tfor dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) {\n\t\tdstDirent := (*Dirent)(unsafe.Pointer(&buf[dstPos]))\n\t\tsrcDirent := (*dirent_freebsd11)(unsafe.Pointer(&old[srcPos]))\n\n\t\treclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8)\n\t\tif dstPos+reclen > len(buf) {\n\t\t\tbreak\n\t\t}\n\n\t\tdstDirent.Fileno = uint64(srcDirent.Fileno)\n\t\tdstDirent.Off = 0\n\t\tdstDirent.Reclen = uint16(reclen)\n\t\tdstDirent.Type = srcDirent.Type\n\t\tdstDirent.Pad0 = 0\n\t\tdstDirent.Namlen = uint16(srcDirent.Namlen)\n\t\tdstDirent.Pad1 = 0\n\n\t\tcopy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen])\n\t\tpadding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen]\n\t\tfor i := range padding {\n\t\t\tpadding[i] = 0\n\t\t}\n\n\t\tdstPos += int(dstDirent.Reclen)\n\t\tsrcPos += int(srcDirent.Reclen)\n\t}\n\n\treturn dstPos\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tCapEnter() (err error)\n//sys\tcapRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET\n//sys\tcapRightsLimit(fd int, rightsp *CapRights) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tfstat(fd int, stat *stat_freebsd11_t) (err error)\n//sys\tfstat_freebsd12(fd int, stat *Stat_t) (err error)\n//sys\tfstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error)\n//sys\tfstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tfstatfs(fd int, stat *statfs_freebsd11_t) (err error)\n//sys\tfstatfs_freebsd12(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tgetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tgetdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tlstat(path string, stat *stat_freebsd11_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tmknod(path string, mode uint32, dev int) (err error)\n//sys\tmknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tmknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(fdat int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tstat(path string, stat *stat_freebsd11_t) (err error)\n//sys\tstatfs(path string, stat *statfs_freebsd11_t) (err error)\n//sys\tstatfs_freebsd12(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys   munmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Unimplemented\n */\n// Profil\n// Sigaction\n// Sigprocmask\n// Getlogin\n// Sigpending\n// Sigaltstack\n// Ioctl\n// Reboot\n// Execve\n// Vfork\n// Sbrk\n// Sstk\n// Ovadvise\n// Mincore\n// Setitimer\n// Swapon\n// Select\n// Sigsuspend\n// Readv\n// Writev\n// Nfssvc\n// Getfh\n// Quotactl\n// Mount\n// Csops\n// Waitid\n// Add_profil\n// Kdebug_trace\n// Sigreturn\n// Atsocket\n// Kqueue_from_portset_np\n// Kqueue_portset\n// Getattrlist\n// Setattrlist\n// Getdents\n// Getdirentriesattr\n// Searchfs\n// Delete\n// Copyfile\n// Watchevent\n// Waitevent\n// Modwatch\n// Fsctl\n// Initgroups\n// Posix_spawn\n// Nfsclnt\n// Fhopen\n// Minherit\n// Semsys\n// Msgsys\n// Shmsys\n// Semctl\n// Semget\n// Semop\n// Msgctl\n// Msgget\n// Msgsnd\n// Msgrcv\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Shm_open\n// Shm_unlink\n// Sem_open\n// Sem_close\n// Sem_unlink\n// Sem_wait\n// Sem_trywait\n// Sem_post\n// Sem_getvalue\n// Sem_init\n// Sem_destroy\n// Open_extended\n// Umask_extended\n// Stat_extended\n// Lstat_extended\n// Fstat_extended\n// Chmod_extended\n// Fchmod_extended\n// Access_extended\n// Settid\n// Gettid\n// Setsgroups\n// Getsgroups\n// Setwgroups\n// Getwgroups\n// Mkfifo_extended\n// Mkdir_extended\n// Identitysvc\n// Shared_region_check_np\n// Shared_region_map_np\n// __pthread_mutex_destroy\n// __pthread_mutex_init\n// __pthread_mutex_lock\n// __pthread_mutex_trylock\n// __pthread_mutex_unlock\n// __pthread_cond_init\n// __pthread_cond_destroy\n// __pthread_cond_broadcast\n// __pthread_cond_signal\n// Setsid_with_pid\n// __pthread_cond_timedwait\n// Aio_fsync\n// Aio_return\n// Aio_suspend\n// Aio_cancel\n// Aio_error\n// Aio_read\n// Aio_write\n// Lio_listio\n// __pthread_cond_wait\n// Iopolicysys\n// __pthread_kill\n// __pthread_sigmask\n// __sigwait\n// __disable_threadsignal\n// __pthread_markcancel\n// __pthread_canceled\n// __semwait_signal\n// Proc_info\n// Stat64_extended\n// Lstat64_extended\n// Fstat64_extended\n// __pthread_chdir\n// __pthread_fchdir\n// Audit\n// Auditon\n// Getauid\n// Setauid\n// Getaudit\n// Setaudit\n// Getaudit_addr\n// Setaudit_addr\n// Auditctl\n// Bsdthread_create\n// Bsdthread_terminate\n// Stack_snapshot\n// Bsdthread_register\n// Workq_open\n// Workq_ops\n// __mac_execve\n// __mac_syscall\n// __mac_get_file\n// __mac_set_file\n// __mac_get_link\n// __mac_set_link\n// __mac_get_proc\n// __mac_set_proc\n// __mac_get_fd\n// __mac_set_fd\n// __mac_get_pid\n// __mac_get_lcid\n// __mac_get_lctx\n// __mac_set_lctx\n// Setlcid\n// Read_nocancel\n// Write_nocancel\n// Open_nocancel\n// Close_nocancel\n// Wait4_nocancel\n// Recvmsg_nocancel\n// Sendmsg_nocancel\n// Recvfrom_nocancel\n// Accept_nocancel\n// Fcntl_nocancel\n// Select_nocancel\n// Fsync_nocancel\n// Connect_nocancel\n// Sigsuspend_nocancel\n// Readv_nocancel\n// Writev_nocancel\n// Sendto_nocancel\n// Pread_nocancel\n// Pwrite_nocancel\n// Waitid_nocancel\n// Poll_nocancel\n// Msgsnd_nocancel\n// Msgrcv_nocancel\n// Sem_wait_nocancel\n// Aio_suspend_nocancel\n// __sigwait_nocancel\n// __semwait_signal_nocancel\n// __mac_mount\n// __mac_get_mount\n// __mac_getfsstat\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build 386,freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build arm,freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Linux system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport (\n\t\"encoding/binary\"\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\n//sys\tfchmodat(dirfd int, path string, mode uint32) (err error)\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t// Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior\n\t// and check the flags. Otherwise the mode would be applied to the symlink\n\t// destination which is not what the user expects.\n\tif flags&^AT_SYMLINK_NOFOLLOW != 0 {\n\t\treturn EINVAL\n\t} else if flags&AT_SYMLINK_NOFOLLOW != 0 {\n\t\treturn EOPNOTSUPP\n\t}\n\treturn fchmodat(dirfd, path, mode)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\n//sys\tLinkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)\n\nfunc Link(oldpath string, newpath string) (err error) {\n\treturn Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\treturn Mkdirat(AT_FDCWD, path, mode)\n}\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\treturn openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\treturn openat(dirfd, path, flags|O_LARGEFILE, mode)\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\treturn Readlinkat(AT_FDCWD, path, buf)\n}\n\nfunc Rename(oldpath string, newpath string) (err error) {\n\treturn Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)\n}\n\nfunc Rmdir(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, AT_REMOVEDIR)\n}\n\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n\nfunc Symlink(oldpath string, newpath string) (err error) {\n\treturn Symlinkat(oldpath, AT_FDCWD, newpath)\n}\n\nfunc Unlink(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, 0)\n}\n\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar ts [2]Timespec\n\tts[0] = NsecToTimespec(TimevalToNsec(tv[0]))\n\tts[1] = NsecToTimespec(TimevalToNsec(tv[1]))\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// If the utimensat syscall isn't available (utimensat was added to Linux\n\t// in 2.6.22, Released, 8 July 2007) then fall back to utimes\n\tvar tv [2]Timeval\n\tfor i := 0; i < 2; i++ {\n\t\ttv[i] = NsecToTimeval(TimespecToNsec(ts[i]))\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(dirfd, path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc Futimes(fd int, tv []Timeval) (err error) {\n\t// Believe it or not, this is the best we can do on Linux\n\t// (and is what glibc does).\n\treturn Utimes(\"/proc/self/fd/\"+itoa(fd), tv)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits. At least that's the idea.\n// There are various irregularities. For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int {\n\tif w.StopSignal() != SIGTRAP {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) >> 8\n}\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\nfunc Mkfifo(path string, mode uint32) error {\n\treturn Mknod(path, mode|S_IFIFO, 0)\n}\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) error {\n\treturn Mknodat(dirfd, path, mode|S_IFIFO, 0)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' {\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.\ntype SockaddrLinklayer struct {\n\tProtocol uint16\n\tIfindex  int\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]byte\n\traw      RawSockaddrLinklayer\n}\n\nfunc (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_PACKET\n\tsa.raw.Protocol = sa.Protocol\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tsa.raw.Hatype = sa.Hatype\n\tsa.raw.Pkttype = sa.Pkttype\n\tsa.raw.Halen = sa.Halen\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil\n}\n\n// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.\ntype SockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n\traw    RawSockaddrNetlink\n}\n\nfunc (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_NETLINK\n\tsa.raw.Pad = sa.Pad\n\tsa.raw.Pid = sa.Pid\n\tsa.raw.Groups = sa.Groups\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil\n}\n\n// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the HCI protocol.\ntype SockaddrHCI struct {\n\tDev     uint16\n\tChannel uint16\n\traw     RawSockaddrHCI\n}\n\nfunc (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Dev = sa.Dev\n\tsa.raw.Channel = sa.Channel\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil\n}\n\n// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the L2CAP protocol.\ntype SockaddrL2 struct {\n\tPSM      uint16\n\tCID      uint16\n\tAddr     [6]uint8\n\tAddrType uint8\n\traw      RawSockaddrL2\n}\n\nfunc (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tpsm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))\n\tpsm[0] = byte(sa.PSM)\n\tpsm[1] = byte(sa.PSM >> 8)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]\n\t}\n\tcid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))\n\tcid[0] = byte(sa.CID)\n\tcid[1] = byte(sa.CID >> 8)\n\tsa.raw.Bdaddr_type = sa.AddrType\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil\n}\n\n// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the RFCOMM protocol.\n//\n// Server example:\n//\n//      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//      _ = unix.Bind(fd, &unix.SockaddrRFCOMM{\n//      \tChannel: 1,\n//      \tAddr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00\n//      })\n//      _ = Listen(fd, 1)\n//      nfd, sa, _ := Accept(fd)\n//      fmt.Printf(\"conn addr=%v fd=%d\", sa.(*unix.SockaddrRFCOMM).Addr, nfd)\n//      Read(nfd, buf)\n//\n// Client example:\n//\n//      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//      _ = Connect(fd, &SockaddrRFCOMM{\n//      \tChannel: 1,\n//      \tAddr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11\n//      })\n//      Write(fd, []byte(`hello`))\ntype SockaddrRFCOMM struct {\n\t// Addr represents a bluetooth address, byte ordering is little-endian.\n\tAddr [6]uint8\n\n\t// Channel is a designated bluetooth channel, only 1-30 are available for use.\n\t// Since Linux 2.6.7 and further zero value is the first available channel.\n\tChannel uint8\n\n\traw RawSockaddrRFCOMM\n}\n\nfunc (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Channel = sa.Channel\n\tsa.raw.Bdaddr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil\n}\n\n// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.\n// The RxID and TxID fields are used for transport protocol addressing in\n// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with\n// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.\n//\n// The SockaddrCAN struct must be bound to the socket file descriptor\n// using Bind before the CAN socket can be used.\n//\n//      // Read one raw CAN frame\n//      fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)\n//      addr := &SockaddrCAN{Ifindex: index}\n//      Bind(fd, addr)\n//      frame := make([]byte, 16)\n//      Read(fd, frame)\n//\n// The full SocketCAN documentation can be found in the linux kernel\n// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt\ntype SockaddrCAN struct {\n\tIfindex int\n\tRxID    uint32\n\tTxID    uint32\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\tfor i := 0; i < 4; i++ {\n\t\tsa.raw.Addr[i] = rx[i]\n\t}\n\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\tfor i := 0; i < 4; i++ {\n\t\tsa.raw.Addr[i+4] = tx[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.\n// SockaddrALG enables userspace access to the Linux kernel's cryptography\n// subsystem. The Type and Name fields specify which type of hash or cipher\n// should be used with a given socket.\n//\n// To create a file descriptor that provides access to a hash or cipher, both\n// Bind and Accept must be used. Once the setup process is complete, input\n// data can be written to the socket, processed by the kernel, and then read\n// back as hash output or ciphertext.\n//\n// Here is an example of using an AF_ALG socket with SHA1 hashing.\n// The initial socket setup process is as follows:\n//\n//      // Open a socket to perform SHA1 hashing.\n//      fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)\n//      addr := &unix.SockaddrALG{Type: \"hash\", Name: \"sha1\"}\n//      unix.Bind(fd, addr)\n//      // Note: unix.Accept does not work at this time; must invoke accept()\n//      // manually using unix.Syscall.\n//      hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)\n//\n// Once a file descriptor has been returned from Accept, it may be used to\n// perform SHA1 hashing. The descriptor is not safe for concurrent use, but\n// may be re-used repeatedly with subsequent Write and Read operations.\n//\n// When hashing a small byte slice or string, a single Write and Read may\n// be used:\n//\n//      // Assume hashfd is already configured using the setup process.\n//      hash := os.NewFile(hashfd, \"sha1\")\n//      // Hash an input string and read the results. Each Write discards\n//      // previous hash state. Read always reads the current state.\n//      b := make([]byte, 20)\n//      for i := 0; i < 2; i++ {\n//          io.WriteString(hash, \"Hello, world.\")\n//          hash.Read(b)\n//          fmt.Println(hex.EncodeToString(b))\n//      }\n//      // Output:\n//      // 2ae01472317d1935a84797ec1983ae243fc6aa28\n//      // 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\n// For hashing larger byte slices, or byte streams such as those read from\n// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update\n// the hash digest instead of creating a new one for a given chunk and finalizing it.\n//\n//      // Assume hashfd and addr are already configured using the setup process.\n//      hash := os.NewFile(hashfd, \"sha1\")\n//      // Hash the contents of a file.\n//      f, _ := os.Open(\"/tmp/linux-4.10-rc7.tar.xz\")\n//      b := make([]byte, 4096)\n//      for {\n//          n, err := f.Read(b)\n//          if err == io.EOF {\n//              break\n//          }\n//          unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)\n//      }\n//      hash.Read(b)\n//      fmt.Println(hex.EncodeToString(b))\n//      // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5\n//\n// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.\ntype SockaddrALG struct {\n\tType    string\n\tName    string\n\tFeature uint32\n\tMask    uint32\n\traw     RawSockaddrALG\n}\n\nfunc (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\t// Leave room for NUL byte terminator.\n\tif len(sa.Type) > 13 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Name) > 63 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\tsa.raw.Family = AF_ALG\n\tsa.raw.Feat = sa.Feature\n\tsa.raw.Mask = sa.Mask\n\n\ttyp, err := ByteSliceFromString(sa.Type)\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\tname, err := ByteSliceFromString(sa.Name)\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\n\tcopy(sa.raw.Type[:], typ)\n\tcopy(sa.raw.Name[:], name)\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Linux VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID  uint32\n\tPort uint32\n\traw  RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\ntype SockaddrXDP struct {\n\tFlags        uint16\n\tIfindex      uint32\n\tQueueID      uint32\n\tSharedUmemFD uint32\n\traw          RawSockaddrXDP\n}\n\nfunc (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_XDP\n\tsa.raw.Flags = sa.Flags\n\tsa.raw.Ifindex = sa.Ifindex\n\tsa.raw.Queue_id = sa.QueueID\n\tsa.raw.Shared_umem_fd = sa.SharedUmemFD\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil\n}\n\n// This constant mirrors the #define of PX_PROTO_OE in\n// linux/if_pppox.h. We're defining this by hand here instead of\n// autogenerating through mkerrors.sh because including\n// linux/if_pppox.h causes some declaration conflicts with other\n// includes (linux/if_pppox.h includes linux/in.h, which conflicts\n// with netinet/in.h). Given that we only need a single zero constant\n// out of that file, it's cleaner to just define it by hand here.\nconst px_proto_oe = 0\n\ntype SockaddrPPPoE struct {\n\tSID    uint16\n\tRemote net.HardwareAddr\n\tDev    string\n\traw    RawSockaddrPPPoX\n}\n\nfunc (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif len(sa.Remote) != 6 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Dev) > IFNAMSIZ-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\t*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX\n\t// This next field is in host-endian byte order. We can't use the\n\t// same unsafe pointer cast as above, because this value is not\n\t// 32-bit aligned and some architectures don't allow unaligned\n\t// access.\n\t//\n\t// However, the value of px_proto_oe is 0, so we can use\n\t// encoding/binary helpers to write the bytes without worrying\n\t// about the ordering.\n\tbinary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)\n\t// This field is deliberately big-endian, unlike the previous\n\t// one. The kernel expects SID to be in network byte order.\n\tbinary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)\n\tcopy(sa.raw[8:14], sa.Remote)\n\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\tsa.raw[i] = 0\n\t}\n\tcopy(sa.raw[14:], sa.Dev)\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_NETLINK:\n\t\tpp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrNetlink)\n\t\tsa.Family = pp.Family\n\t\tsa.Pad = pp.Pad\n\t\tsa.Pid = pp.Pid\n\t\tsa.Groups = pp.Groups\n\t\treturn sa, nil\n\n\tcase AF_PACKET:\n\t\tpp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrLinklayer)\n\t\tsa.Protocol = pp.Protocol\n\t\tsa.Ifindex = int(pp.Ifindex)\n\t\tsa.Hatype = pp.Hatype\n\t\tsa.Pkttype = pp.Pkttype\n\t\tsa.Halen = pp.Halen\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tbytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:  pp.Cid,\n\t\t\tPort: pp.Port,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_BLUETOOTH:\n\t\tproto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections\n\t\tswitch proto {\n\t\tcase BTPROTO_L2CAP:\n\t\t\tpp := (*RawSockaddrL2)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrL2{\n\t\t\t\tPSM:      pp.Psm,\n\t\t\t\tCID:      pp.Cid,\n\t\t\t\tAddr:     pp.Bdaddr,\n\t\t\t\tAddrType: pp.Bdaddr_type,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase BTPROTO_RFCOMM:\n\t\t\tpp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrRFCOMM{\n\t\t\t\tChannel: pp.Channel,\n\t\t\t\tAddr:    pp.Bdaddr,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_XDP:\n\t\tpp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrXDP{\n\t\t\tFlags:        pp.Flags,\n\t\t\tIfindex:      pp.Ifindex,\n\t\t\tQueueID:      pp.Queue_id,\n\t\t\tSharedUmemFD: pp.Shared_umem_fd,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_PPPOX:\n\t\tpp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))\n\t\tif binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := &SockaddrPPPoE{\n\t\t\tSID:    binary.BigEndian.Uint16(pp[6:8]),\n\t\t\tRemote: net.HardwareAddr(pp[8:14]),\n\t\t}\n\t\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\t\tif pp[i] == 0 {\n\t\t\t\tsa.Dev = string(pp[14:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptUcred(fd, level, opt int) (*Ucred, error) {\n\tvar value Ucred\n\tvallen := _Socklen(SizeofUcred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tvar value TCPInfo\n\tvallen := _Socklen(SizeofTCPInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\tif err == ERANGE {\n\t\t\tbuf = make([]byte, vallen)\n\t\t\terr = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn string(buf[:vallen-1]), nil\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)\n\n// KeyctlInt calls keyctl commands in which each argument is an int.\n// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK,\n// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT,\n// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT,\n// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT.\n//sys\tKeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlBuffer calls keyctl commands in which the third and fourth\n// arguments are a buffer and its length, respectively.\n// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE.\n//sys\tKeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlString calls keyctl commands which return a string.\n// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY.\nfunc KeyctlString(cmd int, id int) (string, error) {\n\t// We must loop as the string data may change in between the syscalls.\n\t// We could allocate a large buffer here to reduce the chance that the\n\t// syscall needs to be called twice; however, this is unnecessary as\n\t// the performance loss is negligible.\n\tvar buffer []byte\n\tfor {\n\t\t// Try to fill the buffer with data\n\t\tlength, err := KeyctlBuffer(cmd, id, buffer, 0)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Check if the data was written\n\t\tif length <= len(buffer) {\n\t\t\t// Exclude the null terminator\n\t\t\treturn string(buffer[:length-1]), nil\n\t\t}\n\n\t\t// Make a bigger buffer if needed\n\t\tbuffer = make([]byte, length)\n\t}\n}\n\n// Keyctl commands with special signatures.\n\n// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html\nfunc KeyctlGetKeyringID(id int, create bool) (ringid int, err error) {\n\tcreateInt := 0\n\tif create {\n\t\tcreateInt = 1\n\t}\n\treturn KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0)\n}\n\n// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the\n// key handle permission mask as described in the \"keyctl setperm\" section of\n// http://man7.org/linux/man-pages/man1/keyctl.1.html.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html\nfunc KeyctlSetperm(id int, perm uint32) error {\n\t_, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0)\n\treturn err\n}\n\n//sys\tkeyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html\nfunc KeyctlJoinSessionKeyring(name string) (ringid int, err error) {\n\treturn keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name)\n}\n\n//sys\tkeyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlSearch implements the KEYCTL_SEARCH command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_search.3.html\nfunc KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) {\n\treturn keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid)\n}\n\n//sys\tkeyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL\n\n// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This\n// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice\n// of Iovec (each of which represents a buffer) instead of a single buffer.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html\nfunc KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error {\n\treturn keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid)\n}\n\n//sys\tkeyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command\n// computes a Diffie-Hellman shared secret based on the provide params. The\n// secret is written to the provided buffer and the returned size is the number\n// of bytes written (returning an error if there is insufficient space in the\n// buffer). If a nil buffer is passed in, this function returns the minimum\n// buffer length needed to store the appropriate data. Note that this differs\n// from KEYCTL_READ's behavior which always returns the requested payload size.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html\nfunc KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) {\n\treturn keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)\n}\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = &p[0]\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif len(p) == 0 {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// receive at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tiov.Base = &dummy\n\t\t\t\tiov.SetLen(1)\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tvar err error\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(ptr)\n\tmsg.Namelen = uint32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = &p[0]\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif len(p) == 0 {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\t// send at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tiov.Base = &dummy\n\t\t\t\tiov.SetLen(1)\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n// BindToDevice binds the socket associated with fd to device.\nfunc BindToDevice(fd int, device string) (err error) {\n\treturn SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data uintptr) (err error)\n\nfunc ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {\n\t// The peek requests are machine-size oriented, so we wrap it\n\t// to retrieve arbitrary-length data.\n\n\t// The ptrace syscall differs from glibc's ptrace.\n\t// Peeks returns the word in *data, not as the return value.\n\n\tvar buf [SizeofPtr]byte\n\n\t// Leading edge. PEEKTEXT/PEEKDATA don't require aligned\n\t// access (PEEKUSER warns that it might), but if we don't\n\t// align our reads, we might straddle an unmapped page\n\t// boundary and not get the bytes leading up to the page\n\t// boundary.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\terr = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(out, buf[addr%SizeofPtr:])\n\t\tout = out[n:]\n\t}\n\n\t// Remainder.\n\tfor len(out) > 0 {\n\t\t// We use an internal buffer to guarantee alignment.\n\t\t// It's not documented if this is necessary, but we're paranoid.\n\t\terr = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopied := copy(out, buf[0:])\n\t\tn += copied\n\t\tout = out[copied:]\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKDATA, pid, addr, out)\n}\n\nfunc PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKUSR, pid, addr, out)\n}\n\nfunc ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {\n\t// As for ptracePeek, we need to align our accesses to deal\n\t// with the possibility of straddling an invalid page.\n\n\t// Leading edge.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(buf[addr%SizeofPtr:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tdata = data[n:]\n\t}\n\n\t// Interior.\n\tfor len(data) > SizeofPtr {\n\t\tword := *((*uintptr)(unsafe.Pointer(&data[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += SizeofPtr\n\t\tdata = data[SizeofPtr:]\n\t}\n\n\t// Trailing edge.\n\tif len(data) > 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopy(buf[0:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += len(data)\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)\n}\n\nfunc PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)\n}\n\nfunc PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\nfunc PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n\nfunc PtraceSetOptions(pid int, options int) (err error) {\n\treturn ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))\n}\n\nfunc PtraceGetEventMsg(pid int) (msg uint, err error) {\n\tvar data _C_long\n\terr = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data)))\n\tmsg = uint(data)\n\treturn\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_CONT, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSyscall(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }\n\nfunc PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }\n\n//sys\treboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)\n\nfunc Reboot(cmd int) (err error) {\n\treturn reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, \"\")\n}\n\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn Getdents(fd, buf)\n}\n\n//sys\tmount(source string, target string, fstype string, flags uintptr, data *byte) (err error)\n\nfunc Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\t// Certain file systems get rather angry and EINVAL if you give\n\t// them an empty string of data, rather than NULL.\n\tif data == \"\" {\n\t\treturn mount(source, target, fstype, flags, nil)\n\t}\n\tdatap, err := BytePtrFromString(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mount(source, target, fstype, flags, datap)\n}\n\n// Sendto\n// Recvfrom\n// Socketpair\n\n/*\n * Direct access\n */\n//sys\tAcct(path string) (err error)\n//sys\tAddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)\n//sys\tAdjtimex(buf *Timex) (state int, err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGetres(clockid int32, res *Timespec) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tDeleteModule(name string, flags int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tDup3(oldfd int, newfd int, flags int) (err error)\n//sysnb\tEpollCreate1(flag int) (fd int, err error)\n//sysnb\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2\n//sys\tExit(code int) = SYS_EXIT_GROUP\n//sys\tFallocate(fd int, mode uint32, off int64, len int64) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFgetxattr(fd int, attr string, dest []byte) (sz int, err error)\n//sys\tFinitModule(fd int, params string, flags int) (err error)\n//sys\tFlistxattr(fd int, dest []byte) (sz int, err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFremovexattr(fd int, attr string) (err error)\n//sys\tFsetxattr(fd int, attr string, dest []byte, flags int) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tGetdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sys\tGetrandom(buf []byte, flags int) (n int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettid() (tid int)\n//sys\tGetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tInitModule(moduleImage []byte, params string) (err error)\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)\n//sysnb\tInotifyInit1(flags int) (fd int, err error)\n//sysnb\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error)\n//sysnb\tKill(pid int, sig syscall.Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG\n//sys\tLgetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tListxattr(path string, dest []byte) (sz int, err error)\n//sys\tLlistxattr(path string, dest []byte) (sz int, err error)\n//sys\tLremovexattr(path string, attr string) (err error)\n//sys\tLsetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tMemfdCreate(name string, flags int) (fd int, err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tPerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)\n//sys\tPivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT\n//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64\n//sys   Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tRemovexattr(path string, attr string) (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)\n//sys\tRequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n//sys\tSetns(fd int, nstype int) (err error)\n\n// issue 1435.\n// On linux Setuid and Setgid only affects the current thread, not the process.\n// This does not match what most callers expect so we must return an error\n// here rather than letting the caller think that the call succeeded.\n\nfunc Setuid(uid int) (err error) {\n\treturn EOPNOTSUPP\n}\n\nfunc Setgid(uid int) (err error) {\n\treturn EOPNOTSUPP\n}\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sys\tSyncfs(fd int) (err error)\n//sysnb\tSysinfo(info *Sysinfo_t) (err error)\n//sys\tTee(rfd int, wfd int, len int, flags int) (n int64, err error)\n//sysnb\tTgkill(tgid int, tid int, sig syscall.Signal) (err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = SYS_UMOUNT2\n//sys\tUnshare(flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\texitThread(code int) (err error) = SYS_EXIT\n//sys\treadlen(fd int, p *byte, np int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE\n\n// mmap varies by architecture; see syscall_linux_*.go.\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\n// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,\n// using the specified flags.\nfunc Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {\n\tn, _, errno := Syscall6(\n\t\tSYS_VMSPLICE,\n\t\tuintptr(fd),\n\t\tuintptr(unsafe.Pointer(&iovs[0])),\n\t\tuintptr(len(iovs)),\n\t\tuintptr(flags),\n\t\t0,\n\t\t0,\n\t)\n\tif errno != 0 {\n\t\treturn 0, syscall.Errno(errno)\n\t}\n\n\treturn int(n), nil\n}\n\n//sys\tfaccessat(dirfd int, path string, mode uint32) (err error)\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tif flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {\n\t\treturn EINVAL\n\t}\n\n\t// The Linux kernel faccessat system call does not take any flags.\n\t// The glibc faccessat implements the flags itself; see\n\t// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD\n\t// Because people naturally expect syscall.Faccessat to act\n\t// like C faccessat, we do the same.\n\n\tif flags == 0 {\n\t\treturn faccessat(dirfd, path, mode)\n\t}\n\n\tvar st Stat_t\n\tif err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {\n\t\treturn err\n\t}\n\n\tmode &= 7\n\tif mode == 0 {\n\t\treturn nil\n\t}\n\n\tvar uid int\n\tif flags&AT_EACCESS != 0 {\n\t\tuid = Geteuid()\n\t} else {\n\t\tuid = Getuid()\n\t}\n\n\tif uid == 0 {\n\t\tif mode&1 == 0 {\n\t\t\t// Root can read and write any file.\n\t\t\treturn nil\n\t\t}\n\t\tif st.Mode&0111 != 0 {\n\t\t\t// Root can execute any file that anybody can execute.\n\t\t\treturn nil\n\t\t}\n\t\treturn EACCES\n\t}\n\n\tvar fmode uint32\n\tif uint32(uid) == st.Uid {\n\t\tfmode = (st.Mode >> 6) & 7\n\t} else {\n\t\tvar gid int\n\t\tif flags&AT_EACCESS != 0 {\n\t\t\tgid = Getegid()\n\t\t} else {\n\t\t\tgid = Getgid()\n\t\t}\n\n\t\tif uint32(gid) == st.Gid {\n\t\t\tfmode = (st.Mode >> 3) & 7\n\t\t} else {\n\t\t\tfmode = st.Mode & 7\n\t\t}\n\t}\n\n\tif fmode&mode == mode {\n\t\treturn nil\n\t}\n\n\treturn EACCES\n}\n\n/*\n * Unimplemented\n */\n// AfsSyscall\n// Alarm\n// ArchPrctl\n// Brk\n// Capget\n// Capset\n// ClockNanosleep\n// ClockSettime\n// Clone\n// EpollCtlOld\n// EpollPwait\n// EpollWaitOld\n// Execve\n// Fork\n// Futex\n// GetKernelSyms\n// GetMempolicy\n// GetRobustList\n// GetThreadArea\n// Getitimer\n// Getpmsg\n// IoCancel\n// IoDestroy\n// IoGetevents\n// IoSetup\n// IoSubmit\n// IoprioGet\n// IoprioSet\n// KexecLoad\n// LookupDcookie\n// Mbind\n// MigratePages\n// Mincore\n// ModifyLdt\n// Mount\n// MovePages\n// MqGetsetattr\n// MqNotify\n// MqOpen\n// MqTimedreceive\n// MqTimedsend\n// MqUnlink\n// Mremap\n// Msgctl\n// Msgget\n// Msgrcv\n// Msgsnd\n// Nfsservctl\n// Personality\n// Pselect6\n// Ptrace\n// Putpmsg\n// Quotactl\n// Readahead\n// Readv\n// RemapFilePages\n// RestartSyscall\n// RtSigaction\n// RtSigpending\n// RtSigprocmask\n// RtSigqueueinfo\n// RtSigreturn\n// RtSigsuspend\n// RtSigtimedwait\n// SchedGetPriorityMax\n// SchedGetPriorityMin\n// SchedGetparam\n// SchedGetscheduler\n// SchedRrGetInterval\n// SchedSetparam\n// SchedYield\n// Security\n// Semctl\n// Semget\n// Semop\n// Semtimedop\n// SetMempolicy\n// SetRobustList\n// SetThreadArea\n// SetTidAddress\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Sigaltstack\n// Signalfd\n// Swapoff\n// Swapon\n// Sysfs\n// TimerCreate\n// TimerDelete\n// TimerGetoverrun\n// TimerGettime\n// TimerSettime\n// Timerfd\n// Tkill (obsolete)\n// Tuxcall\n// Umount2\n// Uselib\n// Utimensat\n// Vfork\n// Vhangup\n// Vserver\n// Waitid\n// _Sysctl\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP)\n// so that go vet can check that they are correct.\n\n// +build 386,linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sysnb\tpipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n// 64-bit file system and 32-bit uid calls\n// (386 default is 32-bit file system and 16-bit uid).\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSetfsgid(gid int) (err error) = SYS_SETFSGID32\n//sys\tSetfsuid(uid int) (err error) = SYS_SETFSUID32\n//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID32\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID32\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n//sys\tPause() (err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\n//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\tif rlim.Cur == rlimInf64 {\n\t\trl.Cur = rlimInf32\n\t} else if rlim.Cur < uint64(rlimInf32) {\n\t\trl.Cur = uint32(rlim.Cur)\n\t} else {\n\t\treturn EINVAL\n\t}\n\tif rlim.Max == rlimInf64 {\n\t\trl.Max = rlimInf32\n\t} else if rlim.Max < uint64(rlimInf32) {\n\t\trl.Max = uint32(rlim.Max)\n\t} else {\n\t\treturn EINVAL\n\t}\n\n\treturn setrlimit(resource, &rl)\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n// On x86 Linux, all the socket calls go through an extra indirection,\n// I think because the 5-register system call interface can't handle\n// the 6-argument calls like sendto and recvfrom. Instead the\n// arguments to the underlying system call are the number below\n// and a pointer to an array of uintptr. We hide the pointer in the\n// socketcall assembly to avoid allocation on every system call.\n\nconst (\n\t// see linux/net.h\n\t_SOCKET      = 1\n\t_BIND        = 2\n\t_CONNECT     = 3\n\t_LISTEN      = 4\n\t_ACCEPT      = 5\n\t_GETSOCKNAME = 6\n\t_GETPEERNAME = 7\n\t_SOCKETPAIR  = 8\n\t_SEND        = 9\n\t_RECV        = 10\n\t_SENDTO      = 11\n\t_RECVFROM    = 12\n\t_SHUTDOWN    = 13\n\t_SETSOCKOPT  = 14\n\t_GETSOCKOPT  = 15\n\t_SENDMSG     = 16\n\t_RECVMSG     = 17\n\t_ACCEPT4     = 18\n\t_RECVMMSG    = 19\n\t_SENDMMSG    = 20\n)\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tfd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\tn, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\t_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Listen(s int, n int) (err error) {\n\t_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Shutdown(s, how int) (err error) {\n\t_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,linux\n\npackage unix\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn Pselect(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t// Use fstatat, because Android's seccomp policy blocks stat.\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terrno := gettimeofday(tv)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terrno := gettimeofday(&tv)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\n//sysnb\tpipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Rip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,linux\n// +build !gccgo\n\npackage unix\n\nimport \"syscall\"\n\n//go:noescape\nfunc gettimeofday(tv *Timeval) (err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build arm,linux\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocketpair(domain int, typ int, flags int, fd *[2]int32) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n// 64-bit file system and 32-bit uid calls\n// (16-bit uid calls are not always supported in newer kernels)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tSetfsgid(gid int) (err error) = SYS_SETFSGID32\n//sys\tSetfsuid(uid int) (err error) = SYS_SETFSUID32\n//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID32\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID32\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys   Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\n//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\tif rlim.Cur == rlimInf64 {\n\t\trl.Cur = rlimInf32\n\t} else if rlim.Cur < uint64(rlimInf32) {\n\t\trl.Cur = uint32(rlim.Cur)\n\t} else {\n\t\treturn EINVAL\n\t}\n\tif rlim.Max == rlimInf64 {\n\t\trl.Max = rlimInf32\n\t} else if rlim.Max < uint64(rlimInf32) {\n\t\trl.Max = uint32(rlim.Max)\n\t} else {\n\t\treturn EINVAL\n\t}\n\n\treturn setrlimit(resource, &rl)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build arm64,linux\n\npackage unix\n\nimport \"unsafe\"\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tif size <= 0 {\n\t\treturn -1, EINVAL\n\t}\n\treturn EpollCreate1(0)\n}\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn Pselect(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\treturn Dup3(oldfd, newfd, 0)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout >= 0 {\n\t\tts = new(Timespec)\n\t\t*ts = NsecToTimespec(int64(timeout) * 1e6)\n\t}\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, ts, nil)\n\t}\n\treturn ppoll(&fds[0], len(fds), ts, nil)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_gc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux,!gccgo\n\npackage unix\n\n// SyscallNoError may be used instead of Syscall for syscalls that don't fail.\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n\n// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't\n// fail.\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux,!gccgo,386\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux,gccgo,386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux,gccgo,arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build mips64 mips64le\n\npackage unix\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn Pselect(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\ntype stat_t struct {\n\tDev        uint32\n\tPad0       [3]int32\n\tIno        uint64\n\tMode       uint32\n\tNlink      uint32\n\tUid        uint32\n\tGid        uint32\n\tRdev       uint32\n\tPad1       [3]uint32\n\tSize       int64\n\tAtime      uint32\n\tAtime_nsec uint32\n\tMtime      uint32\n\tMtime_nsec uint32\n\tCtime      uint32\n\tCtime_nsec uint32\n\tBlksize    uint32\n\tPad2       uint32\n\tBlocks     int64\n}\n\n//sys\tfstat(fd int, st *stat_t) (err error)\n//sys\tlstat(path string, st *stat_t) (err error)\n//sys\tstat(path string, st *stat_t) (err error)\n\nfunc Fstat(fd int, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = fstat(fd, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Lstat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = lstat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Stat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = stat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc fillStat_t(s *Stat_t, st *stat_t) {\n\ts.Dev = st.Dev\n\ts.Ino = st.Ino\n\ts.Mode = st.Mode\n\ts.Nlink = st.Nlink\n\ts.Uid = st.Uid\n\ts.Gid = st.Gid\n\ts.Rdev = st.Rdev\n\ts.Size = st.Size\n\ts.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}\n\ts.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}\n\ts.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}\n\ts.Blksize = st.Blksize\n\ts.Blocks = st.Blocks\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build mips mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n\n//sys\tPause() (err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\t_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe() (p1 int, p2 int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tp[0], p[1], err = pipe()\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\n//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\tif rlim.Cur == rlimInf64 {\n\t\trl.Cur = rlimInf32\n\t} else if rlim.Cur < uint64(rlimInf32) {\n\t\trl.Cur = uint32(rlim.Cur)\n\t} else {\n\t\treturn EINVAL\n\t}\n\tif rlim.Max == rlimInf64 {\n\t\trl.Max = rlimInf32\n\t} else if rlim.Max < uint64(rlimInf32) {\n\t\trl.Max = uint32(rlim.Max)\n\t} else {\n\t\treturn EINVAL\n\t}\n\n\treturn setrlimit(resource, &rl)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build ppc64 ppc64le\n\npackage unix\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT\n//sysnb\tGetuid() (uid int)\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build riscv64,linux\n\npackage unix\n\nimport \"unsafe\"\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tif size <= 0 {\n\t\treturn -1, EINVAL\n\t}\n\treturn EpollCreate1(0)\n}\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn Pselect(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\treturn Dup3(oldfd, newfd, 0)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout >= 0 {\n\t\tts = new(Timespec)\n\t\t*ts = NsecToTimespec(int64(timeout) * 1e6)\n\t}\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, ts, nil)\n\t}\n\treturn ppoll(&fds[0], len(fds), ts, nil)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build s390x,linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0.\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\n// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.\n// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tmmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}\n\tr0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// On s390x Linux, all the socket calls go through an extra indirection.\n// The arguments to the underlying system call (SYS_SOCKETCALL) are the\n// number below and a pointer to an array of uintptr.\nconst (\n\t// see linux/net.h\n\tnetSocket      = 1\n\tnetBind        = 2\n\tnetConnect     = 3\n\tnetListen      = 4\n\tnetAccept      = 5\n\tnetGetSockName = 6\n\tnetGetPeerName = 7\n\tnetSocketPair  = 8\n\tnetSend        = 9\n\tnetRecv        = 10\n\tnetSendTo      = 11\n\tnetRecvFrom    = 12\n\tnetShutdown    = 13\n\tnetSetSockOpt  = 14\n\tnetGetSockOpt  = 15\n\tnetSendMsg     = 16\n\tnetRecvMsg     = 17\n\tnetAccept4     = 18\n\tnetRecvMMsg    = 19\n\tnetSendMMsg    = 20\n)\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {\n\targs := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) error {\n\targs := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socket(domain int, typ int, proto int) (int, error) {\n\targs := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {\n\targs := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc Listen(s int, n int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(n)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Shutdown(s, how int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(how)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build sparc64,linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tInotifyInit() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tSetfsgid(gid int) (err error)\n//sys\tSetfsuid(uid int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Tpc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_netbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// NetBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, CTL_QUERY)\n\tqnode := Sysctlnode{Flags: SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err = sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes = make([]Sysctlnode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err = sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, _C_int(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\nfunc SysctlClockinfo(name string) (*Clockinfo, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofClockinfo)\n\tvar ci Clockinfo\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofClockinfo {\n\t\treturn nil, EIO\n\t}\n\treturn &ci, nil\n}\n\n//sysnb pipe() (fd1 int, fd2 int, err error)\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tp[0], p[1], err = pipe()\n\treturn\n}\n\n//sys getdents(fd int, buf []byte) (n int, err error)\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\treturn getdents(fd, buf)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {\n\tvar value Ptmget\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\truntime.KeepAlive(value)\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Unimplemented\n */\n// ____semctl13\n// __clone\n// __fhopen40\n// __fhstat40\n// __fhstatvfs140\n// __fstat30\n// __getcwd\n// __getfh30\n// __getlogin\n// __lstat30\n// __mount50\n// __msgctl13\n// __msync13\n// __ntp_gettime30\n// __posix_chown\n// __posix_fchown\n// __posix_lchown\n// __posix_rename\n// __setlogin\n// __shmctl13\n// __sigaction_sigtramp\n// __sigaltstack14\n// __sigpending14\n// __sigprocmask14\n// __sigsuspend14\n// __sigtimedwait\n// __stat30\n// __syscall\n// __vfork14\n// _ksem_close\n// _ksem_destroy\n// _ksem_getvalue\n// _ksem_init\n// _ksem_open\n// _ksem_post\n// _ksem_trywait\n// _ksem_unlink\n// _ksem_wait\n// _lwp_continue\n// _lwp_create\n// _lwp_ctl\n// _lwp_detach\n// _lwp_exit\n// _lwp_getname\n// _lwp_getprivate\n// _lwp_kill\n// _lwp_park\n// _lwp_self\n// _lwp_setname\n// _lwp_setprivate\n// _lwp_suspend\n// _lwp_unpark\n// _lwp_unpark_all\n// _lwp_wait\n// _lwp_wakeup\n// _pset_bind\n// _sched_getaffinity\n// _sched_getparam\n// _sched_setaffinity\n// _sched_setparam\n// acct\n// aio_cancel\n// aio_error\n// aio_fsync\n// aio_read\n// aio_return\n// aio_suspend\n// aio_write\n// break\n// clock_getres\n// clock_gettime\n// clock_settime\n// compat_09_ogetdomainname\n// compat_09_osetdomainname\n// compat_09_ouname\n// compat_10_omsgsys\n// compat_10_osemsys\n// compat_10_oshmsys\n// compat_12_fstat12\n// compat_12_getdirentries\n// compat_12_lstat12\n// compat_12_msync\n// compat_12_oreboot\n// compat_12_oswapon\n// compat_12_stat12\n// compat_13_sigaction13\n// compat_13_sigaltstack13\n// compat_13_sigpending13\n// compat_13_sigprocmask13\n// compat_13_sigreturn13\n// compat_13_sigsuspend13\n// compat_14___semctl\n// compat_14_msgctl\n// compat_14_shmctl\n// compat_16___sigaction14\n// compat_16___sigreturn14\n// compat_20_fhstatfs\n// compat_20_fstatfs\n// compat_20_getfsstat\n// compat_20_statfs\n// compat_30___fhstat30\n// compat_30___fstat13\n// compat_30___lstat13\n// compat_30___stat13\n// compat_30_fhopen\n// compat_30_fhstat\n// compat_30_fhstatvfs1\n// compat_30_getdents\n// compat_30_getfh\n// compat_30_ntp_gettime\n// compat_30_socket\n// compat_40_mount\n// compat_43_fstat43\n// compat_43_lstat43\n// compat_43_oaccept\n// compat_43_ocreat\n// compat_43_oftruncate\n// compat_43_ogetdirentries\n// compat_43_ogetdtablesize\n// compat_43_ogethostid\n// compat_43_ogethostname\n// compat_43_ogetkerninfo\n// compat_43_ogetpagesize\n// compat_43_ogetpeername\n// compat_43_ogetrlimit\n// compat_43_ogetsockname\n// compat_43_okillpg\n// compat_43_olseek\n// compat_43_ommap\n// compat_43_oquota\n// compat_43_orecv\n// compat_43_orecvfrom\n// compat_43_orecvmsg\n// compat_43_osend\n// compat_43_osendmsg\n// compat_43_osethostid\n// compat_43_osethostname\n// compat_43_osetrlimit\n// compat_43_osigblock\n// compat_43_osigsetmask\n// compat_43_osigstack\n// compat_43_osigvec\n// compat_43_otruncate\n// compat_43_owait\n// compat_43_stat43\n// execve\n// extattr_delete_fd\n// extattr_delete_file\n// extattr_delete_link\n// extattr_get_fd\n// extattr_get_file\n// extattr_get_link\n// extattr_list_fd\n// extattr_list_file\n// extattr_list_link\n// extattr_set_fd\n// extattr_set_file\n// extattr_set_link\n// extattrctl\n// fchroot\n// fdatasync\n// fgetxattr\n// fktrace\n// flistxattr\n// fork\n// fremovexattr\n// fsetxattr\n// fstatvfs1\n// fsync_range\n// getcontext\n// getitimer\n// getvfsstat\n// getxattr\n// ktrace\n// lchflags\n// lchmod\n// lfs_bmapv\n// lfs_markv\n// lfs_segclean\n// lfs_segwait\n// lgetxattr\n// lio_listio\n// listxattr\n// llistxattr\n// lremovexattr\n// lseek\n// lsetxattr\n// lutimes\n// madvise\n// mincore\n// minherit\n// modctl\n// mq_close\n// mq_getattr\n// mq_notify\n// mq_open\n// mq_receive\n// mq_send\n// mq_setattr\n// mq_timedreceive\n// mq_timedsend\n// mq_unlink\n// mremap\n// msgget\n// msgrcv\n// msgsnd\n// nfssvc\n// ntp_adjtime\n// pmc_control\n// pmc_get_info\n// pollts\n// preadv\n// profil\n// pselect\n// pset_assign\n// pset_create\n// pset_destroy\n// ptrace\n// pwritev\n// quotactl\n// rasctl\n// readv\n// reboot\n// removexattr\n// sa_enable\n// sa_preempt\n// sa_register\n// sa_setconcurrency\n// sa_stacks\n// sa_yield\n// sbrk\n// sched_yield\n// semconfig\n// semget\n// semop\n// setcontext\n// setitimer\n// setxattr\n// shmat\n// shmdt\n// shmget\n// sstk\n// statvfs1\n// swapctl\n// sysarch\n// syscall\n// timer_create\n// timer_delete\n// timer_getoverrun\n// timer_gettime\n// timer_settime\n// undelete\n// utrace\n// uuidgen\n// vadvise\n// vfork\n// writev\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build 386,netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build arm,netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_openbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// OpenBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\ti := sort.Search(len(sysctlMib), func(i int) bool {\n\t\treturn sysctlMib[i].ctlname >= name\n\t})\n\tif i < len(sysctlMib) && sysctlMib[i].ctlname == name {\n\t\treturn sysctlMib[i].ctloid, nil\n\t}\n\treturn nil, EINVAL\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofUvmexp {\n\t\treturn nil, EIO\n\t}\n\treturn &u, nil\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys getdents(fd int, buf []byte) (n int, err error)\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\treturn getdents(fd, buf)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) error {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrtable() (rtable int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tSetrtable(rtable int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Unimplemented\n */\n// __getcwd\n// __semctl\n// __syscall\n// __sysctl\n// adjfreq\n// break\n// clock_getres\n// clock_gettime\n// clock_settime\n// closefrom\n// execve\n// fcntl\n// fhopen\n// fhstat\n// fhstatfs\n// fork\n// futimens\n// getfh\n// getgid\n// getitimer\n// getlogin\n// getresgid\n// getresuid\n// getthrid\n// ktrace\n// lfs_bmapv\n// lfs_markv\n// lfs_segclean\n// lfs_segwait\n// mincore\n// minherit\n// mount\n// mquery\n// msgctl\n// msgget\n// msgrcv\n// msgsnd\n// nfssvc\n// nnpfspioctl\n// preadv\n// profil\n// pwritev\n// quotactl\n// readv\n// reboot\n// renameat\n// rfork\n// sched_yield\n// semget\n// semop\n// setgroups\n// setitimer\n// setsockopt\n// shmat\n// shmctl\n// shmdt\n// shmget\n// sigaction\n// sigaltstack\n// sigpending\n// sigprocmask\n// sigreturn\n// sigsuspend\n// sysarch\n// syscall\n// threxit\n// thrsigdivert\n// thrsleep\n// thrwakeup\n// vfork\n// writev\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build 386,openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build arm,openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Solaris system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_solaris.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Implemented in runtime/syscall_solaris.go.\ntype syscallFunc uintptr\n\nfunc rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n\traw    RawSockaddrDatalink\n}\n\n//sysnb\tpipe(p *[2]_C_int) (n int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\tn, err := pipe(&pp)\n\tif n != 0 {\n\t\treturn err\n\t}\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn nil\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' {\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n//sys\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(buf[:vallen-1]), nil\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\t// Getcwd will return an error if it failed for any reason.\n\t_, err = Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\t// Check for error and sanity check group count. Newer versions of\n\t// Solaris allow up to 1024 (NGROUPS_MAX).\n\tif n < 0 || n > 1024 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, EINVAL\n\t} else if n == 0 {\n\t\treturn nil, nil\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif n == -1 {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\treturn Getdents(fd, buf, new(uintptr))\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {\n\tvar status _C_int\n\trpid, err := wait4(int32(pid), &status, options, rusage)\n\twpid := int(rpid)\n\tif wpid == -1 {\n\t\treturn wpid, err\n\t}\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn wpid, nil\n}\n\n//sys\tgethostname(buf []byte) (n int, err error)\n\nfunc Gethostname() (name string, err error) {\n\tvar buf [MaxHostNameLen]byte\n\tn, err := gethostname(buf[:])\n\tif n != 0 {\n\t\treturn \"\", err\n\t}\n\tn = clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EFAULT\n\t}\n\treturn string(buf[:n]), nil\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(fd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\n//sys\tfutimesat(fildes int, path *byte, times *[2]Timeval) (err error)\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tv == nil {\n\t\treturn futimesat(dirfd, pathp, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// Solaris doesn't have an futimes function because it allows NULL to be\n// specified as the path for futimesat. However, Go doesn't like\n// NULL-style string interfaces, so this simple wrapper is provided.\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(fd, nil, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Solaris semantics for\n\t\t// abstract Unix domain sockets -- they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs -- but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tbytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*int8)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy int8\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*int8)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy int8\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tacct(path *byte) (err error)\n\nfunc Acct(path string) (err error) {\n\tif len(path) == 0 {\n\t\t// Assume caller wants to disable accounting.\n\t\treturn acct(nil)\n\t}\n\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn acct(pathp)\n}\n\n//sys\t__makedev(version int, major uint, minor uint) (val uint64)\n\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn __makedev(NEWDEV, uint(major), uint(minor))\n}\n\n//sys\t__major(version int, dev uint64) (val uint)\n\nfunc Major(dev uint64) uint32 {\n\treturn uint32(__major(NEWDEV, dev))\n}\n\n//sys\t__minor(version int, dev uint64) (val uint)\n\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(__minor(NEWDEV, dev))\n}\n\n/*\n * Expose the ioctl function\n */\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\nfunc IoctlSetInt(fd int, req uint, value int) (err error) {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\nfunc ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc ioctlSetTermios(fd int, req uint, value *Termios) (err error) {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc IoctlSetTermio(fd int, req uint, value *Termio) (err error) {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermio(fd int, req uint) (*Termio, error) {\n\tvar value Termio\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\n//sys   poll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCreat(path string, mode uint32) (fd int, err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs(fd int, vfsstat *Statvfs_t) (err error)\n//sys\tGetdents(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgid int, err error)\n//sys\tGeteuid() (euid int)\n//sys\tGetegid() (egid int)\n//sys\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (n int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tListen(s int, backlog int) (err error) = libsocket.__xnet_llisten\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPause() (err error)\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek\n//sys\tSelect(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tShutdown(s int, how int) (err error) = libsocket.shutdown\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs(path string, vfsstat *Statvfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSync() (err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = libc.umount\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto\n//sys\tsocket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build amd64,solaris\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_unix.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"runtime\"\n\t\"sort\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\nconst (\n\tdarwin64Bit    = runtime.GOOS == \"darwin\" && SizeofPtr == 8\n\tdragonfly64Bit = runtime.GOOS == \"dragonfly\" && SizeofPtr == 8\n\tnetbsd32Bit    = runtime.GOOS == \"netbsd\" && SizeofPtr == 4\n\tsolaris64Bit   = runtime.GOOS == \"solaris\" && SizeofPtr == 8\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e syscall.Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Slice memory layout\n\tvar sl = struct {\n\t\taddr uintptr\n\t\tlen  int\n\t\tcap  int\n\t}{addr, length, length}\n\n\t// Use unsafe to turn sl into a []byte.\n\tb := *(*[]byte)(unsafe.Pointer(&sl))\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, n, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, flags, ptr, n)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&[]byte(s)[0]), uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_unix_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build darwin dragonfly freebsd linux netbsd openbsd solaris\n// +build !gccgo,!ppc64le,!ppc64\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build linux\n// +build ppc64le ppc64\n// +build !gccgo\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall(trap, a1, a2, a3)\n}\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)\n}\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall(trap, a1, a2, a3)\n}\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/timestruct.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec converts a Timespec value into a number of\n// nanoseconds since the Unix epoch.\nfunc TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }\n\n// NsecToTimespec takes a number of nanoseconds since the Unix epoch\n// and returns the corresponding Timespec value.\nfunc NsecToTimespec(nsec int64) Timespec {\n\tsec := nsec / 1e9\n\tnsec = nsec % 1e9\n\tif nsec < 0 {\n\t\tnsec += 1e9\n\t\tsec--\n\t}\n\treturn setTimespec(sec, nsec)\n}\n\n// TimeToTimespec converts t into a Timespec.\n// On some 32-bit systems the range of valid Timespec values are smaller\n// than that of time.Time values.  So if t is out of the valid range of\n// Timespec, it returns a zero Timespec and ERANGE.\nfunc TimeToTimespec(t time.Time) (Timespec, error) {\n\tsec := t.Unix()\n\tnsec := int64(t.Nanosecond())\n\tts := setTimespec(sec, nsec)\n\n\t// Currently all targets have either int32 or int64 for Timespec.Sec.\n\t// If there were a new target with floating point type for it, we have\n\t// to consider the rounding error.\n\tif int64(ts.Sec) != sec {\n\t\treturn Timespec{}, ERANGE\n\t}\n\treturn ts, nil\n}\n\n// TimevalToNsec converts a Timeval value into a number of nanoseconds\n// since the Unix epoch.\nfunc TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }\n\n// NsecToTimeval takes a number of nanoseconds since the Unix epoch\n// and returns the corresponding Timeval value.\nfunc NsecToTimeval(nsec int64) Timeval {\n\tnsec += 999 // round up to microsecond\n\tusec := nsec % 1e9 / 1e3\n\tsec := nsec / 1e9\n\tif usec < 0 {\n\t\tusec += 1e6\n\t\tsec--\n\t}\n\treturn setTimeval(sec, usec)\n}\n\n// Unix returns ts as the number of seconds and nanoseconds elapsed since the\n// Unix epoch.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns tv as the number of seconds and nanoseconds elapsed since the\n// Unix epoch.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n// +build aix\n\n/*\nInput to cgo -godefs.  See also mkerrors.sh and mkall.sh\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/limits.h>\n#include <sys/un.h>\n#include <utime.h>\n#include <sys/utsname.h>\n#include <sys/poll.h>\n#include <sys/resource.h>\n#include <sys/stat.h>\n#include <sys/statfs.h>\n#include <sys/termio.h>\n#include <sys/ioctl.h>\n\n#include <termios.h>\n\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n\n\n#include <dirent.h>\n#include <fcntl.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;     // this one gets used for fields\n\tstruct sockaddr_in s2;  // these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n\tPathMax        = C.PATH_MAX\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\ntype off64 C.off64_t\ntype off C.off_t\ntype Mode_t C.mode_t\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype StTimespec C.struct_st_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timeval32 C.struct_timeval32\n\ntype Timex C.struct_timex\n\ntype Time_t C.time_t\n\ntype Tms C.struct_tms\n\ntype Utimbuf C.struct_utimbuf\n\ntype Timezone C.struct_timezone\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit64\n\ntype Pid_t C.pid_t\n\ntype _Gid_t C.gid_t\n\ntype dev_t C.dev_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype StatxTimestamp C.struct_statx_timestamp\n\ntype Statx_t C.struct_statx\n\ntype Dirent C.struct_dirent\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype Linger C.struct_linger\n\ntype Msghdr C.struct_msghdr\n\nconst (\n\tSizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny   = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix  = C.sizeof_struct_sockaddr_un\n\tSizeofLinger        = C.sizeof_struct_linger\n\tSizeofIPMreq        = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq      = C.sizeof_struct_ipv6_mreq\n\tSizeofIPv6MTUInfo   = C.sizeof_struct_ip6_mtuinfo\n\tSizeofMsghdr        = C.sizeof_struct_msghdr\n\tSizeofCmsghdr       = C.sizeof_struct_cmsghdr\n\tSizeofICMPv6Filter  = C.sizeof_struct_icmp6_filter\n)\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr = C.sizeof_struct_if_msghdr\n)\n\ntype IfMsgHdr C.struct_if_msghdr\n\n// Misc\n\ntype FdSet C.fd_set\n\ntype Utsname C.struct_utsname\n\ntype Ustat_t C.struct_ustat\n\ntype Sigset_t C.sigset_t\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Termio C.struct_termio\n\ntype Winsize C.struct_winsize\n\n//poll\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n//flock_t\n\ntype Flock_t C.struct_flock64\n\n// Statfs\n\ntype Fsid_t C.struct_fsid_t\ntype Fsid64_t C.struct_fsid64_t\n\ntype Statfs_t C.struct_statfs\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_darwin.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define __DARWIN_UNIX03 0\n#define KERNEL\n#define _DARWIN_USE_64_BIT_INODE\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <unistd.h>\n#include <mach/mach.h>\n#include <mach/message.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timeval32 C.struct_timeval32\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat64\n\ntype Statfs_t C.struct_statfs64\n\ntype Flock_t C.struct_flock\n\ntype Fstore_t C.struct_fstore\n\ntype Radvisory_t C.struct_radvisory\n\ntype Fbootstraptransfer_t C.struct_fbootstraptransfer\n\ntype Log2phys_t C.struct_log2phys\n\ntype Fsid C.struct_fsid\n\ntype Dirent C.struct_dirent\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet4Pktinfo C.struct_in_pktinfo\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet4Pktinfo     = C.sizeof_struct_in_pktinfo\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr    = C.sizeof_struct_if_msghdr\n\tSizeofIfData      = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr   = C.sizeof_struct_ifa_msghdr\n\tSizeofIfmaMsghdr  = C.sizeof_struct_ifma_msghdr\n\tSizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2\n\tSizeofRtMsghdr    = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics   = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfmaMsghdr C.struct_ifma_msghdr\n\ntype IfmaMsghdr2 C.struct_ifma_msghdr2\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// uname\n\ntype Utsname C.struct_utsname\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Statfs_t C.struct_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.struct_fsid\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfmaMsghdr C.struct_ifma_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// Uname\n\ntype Utsname C.struct_utsname\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_freebsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define\t_WANT_FREEBSD11_STAT\t1\n#define\t_WANT_FREEBSD11_STATFS\t1\n#define\t_WANT_FREEBSD11_DIRENT\t1\n#define\t_WANT_FREEBSD11_KEVENT  1\n\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/capsicum.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n// This structure is a duplicate of if_data on FreeBSD 8-STABLE.\n// See /usr/include/net/if.h.\nstruct if_data8 {\n\tu_char  ifi_type;\n\tu_char  ifi_physical;\n\tu_char  ifi_addrlen;\n\tu_char  ifi_hdrlen;\n\tu_char  ifi_link_state;\n\tu_char  ifi_spare_char1;\n\tu_char  ifi_spare_char2;\n\tu_char  ifi_datalen;\n\tu_long  ifi_mtu;\n\tu_long  ifi_metric;\n\tu_long  ifi_baudrate;\n\tu_long  ifi_ipackets;\n\tu_long  ifi_ierrors;\n\tu_long  ifi_opackets;\n\tu_long  ifi_oerrors;\n\tu_long  ifi_collisions;\n\tu_long  ifi_ibytes;\n\tu_long  ifi_obytes;\n\tu_long  ifi_imcasts;\n\tu_long  ifi_omcasts;\n\tu_long  ifi_iqdrops;\n\tu_long  ifi_noproto;\n\tu_long  ifi_hwassist;\n// FIXME: these are now unions, so maybe need to change definitions?\n#undef ifi_epoch\n\ttime_t  ifi_epoch;\n#undef ifi_lastchange\n\tstruct  timeval ifi_lastchange;\n};\n\n// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE.\n// See /usr/include/net/if.h.\nstruct if_msghdr8 {\n\tu_short ifm_msglen;\n\tu_char  ifm_version;\n\tu_char  ifm_type;\n\tint     ifm_addrs;\n\tint     ifm_flags;\n\tu_short ifm_index;\n\tstruct  if_data8 ifm_data;\n};\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\nconst (\n\t_statfsVersion = C.STATFS_VERSION\n\t_dirblksiz     = C.DIRBLKSIZ\n)\n\ntype Stat_t C.struct_stat\n\ntype stat_freebsd11_t C.struct_freebsd11_stat\n\ntype Statfs_t C.struct_statfs\n\ntype statfs_freebsd11_t C.struct_freebsd11_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype dirent_freebsd11 C.struct_freebsd11_dirent\n\ntype Fsid C.struct_fsid\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Advice to Fadvise\n\nconst (\n\tFADV_NORMAL     = C.POSIX_FADV_NORMAL\n\tFADV_RANDOM     = C.POSIX_FADV_RANDOM\n\tFADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL\n\tFADV_WILLNEED   = C.POSIX_FADV_WILLNEED\n\tFADV_DONTNEED   = C.POSIX_FADV_DONTNEED\n\tFADV_NOREUSE    = C.POSIX_FADV_NOREUSE\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPMreqn C.struct_ip_mreqn\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPMreqn          = C.sizeof_struct_ip_mreqn\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent_freebsd11\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tsizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr8\n\tsizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfData           = C.sizeof_struct_if_data8\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype ifMsghdr C.struct_if_msghdr\n\ntype IfMsghdr C.struct_if_msghdr8\n\ntype ifData C.struct_if_data\n\ntype IfData C.struct_if_data8\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfmaMsghdr C.struct_ifma_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion    = C.sizeof_struct_bpf_version\n\tSizeofBpfStat       = C.sizeof_struct_bpf_stat\n\tSizeofBpfZbuf       = C.sizeof_struct_bpf_zbuf\n\tSizeofBpfProgram    = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn       = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr        = C.sizeof_struct_bpf_hdr\n\tSizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfZbuf C.struct_bpf_zbuf\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\ntype BpfZbufHeader C.struct_bpf_zbuf_header\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR      = C.POLLERR\n\tPOLLHUP      = C.POLLHUP\n\tPOLLIN       = C.POLLIN\n\tPOLLINIGNEOF = C.POLLINIGNEOF\n\tPOLLNVAL     = C.POLLNVAL\n\tPOLLOUT      = C.POLLOUT\n\tPOLLPRI      = C.POLLPRI\n\tPOLLRDBAND   = C.POLLRDBAND\n\tPOLLRDNORM   = C.POLLRDNORM\n\tPOLLWRBAND   = C.POLLWRBAND\n\tPOLLWRNORM   = C.POLLWRNORM\n)\n\n// Capabilities\n\ntype CapRights C.struct_cap_rights\n\n// Uname\n\ntype Utsname C.struct_utsname\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_netbsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/time.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Statfs_t C.struct_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.fsid_t\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Advice to Fadvise\n\nconst (\n\tFADV_NORMAL     = C.POSIX_FADV_NORMAL\n\tFADV_RANDOM     = C.POSIX_FADV_RANDOM\n\tFADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL\n\tFADV_WILLNEED   = C.POSIX_FADV_WILLNEED\n\tFADV_DONTNEED   = C.POSIX_FADV_DONTNEED\n\tFADV_NOREUSE    = C.POSIX_FADV_NOREUSE\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\ntype Mclpool C.struct_mclpool\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\ntype BpfTimeval C.struct_bpf_timeval\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\ntype Ptmget C.struct_ptmget\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// Sysctl\n\ntype Sysctlnode C.struct_sysctlnode\n\n// Uname\n\ntype Utsname C.struct_utsname\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_openbsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <uvm/uvmexp.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Statfs_t C.struct_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.fsid_t\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\ntype Mclpool C.struct_mclpool\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\ntype BpfTimeval C.struct_bpf_timeval\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// Signal Sets\n\ntype Sigset_t C.sigset_t\n\n// Uname\n\ntype Utsname C.struct_utsname\n\n// Uvmexp\n\nconst SizeofUvmexp = C.sizeof_struct_uvmexp\n\ntype Uvmexp C.struct_uvmexp\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/types_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n// These defines ensure that builds done on newer versions of Solaris are\n// backwards-compatible with older versions of Solaris and\n// OpenSolaris-based derivatives.\n#define __USE_SUNOS_SOCKETS__          // msghdr\n#define __USE_LEGACY_PROTOTYPES__      // iovec\n#include <dirent.h>\n#include <fcntl.h>\n#include <netdb.h>\n#include <limits.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <termio.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/statvfs.h>\n#include <sys/time.h>\n#include <sys/times.h>\n#include <sys/types.h>\n#include <sys/utsname.h>\n#include <sys/un.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n#include <ustat.h>\n#include <utime.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n\tPathMax        = C.PATH_MAX\n\tMaxHostNameLen = C.MAXHOSTNAMELEN\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timeval32 C.struct_timeval32\n\ntype Tms C.struct_tms\n\ntype Utimbuf C.struct_utimbuf\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\n// Filesystems\n\ntype _Fsblkcnt_t C.fsblkcnt_t\n\ntype Statvfs_t C.struct_statvfs\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Select\n\ntype FdSet C.fd_set\n\n// Misc\n\ntype Utsname C.struct_utsname\n\ntype Ustat_t C.struct_ustat\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_EACCESS          = C.AT_EACCESS\n)\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr  = C.sizeof_struct_if_msghdr\n\tSizeofIfData    = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr\n\tSizeofRtMsghdr  = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfTimeval C.struct_bpf_timeval\n\ntype BpfHdr C.struct_bpf_hdr\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Termio C.struct_termio\n\ntype Winsize C.struct_winsize\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/xattr_bsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build freebsd netbsd\n\npackage unix\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Derive extattr namespace and attribute name\n\nfunc xattrnamespace(fullattr string) (ns int, attr string, err error) {\n\ts := strings.IndexByte(fullattr, '.')\n\tif s == -1 {\n\t\treturn -1, \"\", ENOATTR\n\t}\n\n\tnamespace := fullattr[0:s]\n\tattr = fullattr[s+1:]\n\n\tswitch namespace {\n\tcase \"user\":\n\t\treturn EXTATTR_NAMESPACE_USER, attr, nil\n\tcase \"system\":\n\t\treturn EXTATTR_NAMESPACE_SYSTEM, attr, nil\n\tdefault:\n\t\treturn -1, \"\", ENOATTR\n\t}\n}\n\nfunc initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {\n\tif len(dest) > idx {\n\t\treturn unsafe.Pointer(&dest[idx])\n\t} else {\n\t\treturn unsafe.Pointer(_zero)\n\t}\n}\n\n// FreeBSD and NetBSD implement their own syscalls to handle extended attributes\n\nfunc Getxattr(file string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFile(file, nsid, a, uintptr(d), destsize)\n}\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetLink(link, nsid, a, uintptr(d), destsize)\n}\n\n// flags are unused on FreeBSD\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Setxattr(file string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Removexattr(file string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFile(file, nsid, a)\n\treturn\n}\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFd(fd, nsid, a)\n\treturn\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteLink(link, nsid, a)\n\treturn\n}\n\nfunc Listxattr(file string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts := 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\n\n\t\t/* Errors accessing system attrs are ignored so that\n\t\t * we can implement the Linux-like behavior of omitting errors that\n\t\t * we don't have read permissions on\n\t\t *\n\t\t * Linux will still error if we ask for user attributes on a file that\n\t\t * we don't have read permissions on, so don't ignore those errors\n\t\t */\n\t\tif e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\tcontinue\n\t\t} else if e != nil {\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tdestsiz -= s\n\t\tif destsiz < 0 {\n\t\t\tdestsiz = 0\n\t\t}\n\t\td = initxattrdest(dest, s)\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts := 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\t\tif e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\tcontinue\n\t\t} else if e != nil {\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tdestsiz -= s\n\t\tif destsiz < 0 {\n\t\t\tdestsiz = 0\n\t\t}\n\t\td = initxattrdest(dest, s)\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts := 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\t\tif e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\tcontinue\n\t\t} else if e != nil {\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tdestsiz -= s\n\t\tif destsiz < 0 {\n\t\t\tdestsiz = 0\n\t\t}\n\t\td = initxattrdest(dest, s)\n\t}\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go",
    "content": "// mkerrors.sh -maix32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc,aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3ff796dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0x5\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fd79693\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3ff796bb\n\tSIOCGIFCONFGLOB               = -0x3ff79670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0x80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0x80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0x80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0x80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0x80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0x8004747e\n\tTIOCLBIS                      = 0x8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0x8004747d\n\tTIOCMBIC                      = 0x8004746b\n\tTIOCMBIS                      = 0x8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0x80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0x80047404\n\tTIOCMSET                      = 0x8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0x80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0x80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0x80067411\n\tTIOCSETD                      = 0x80047401\n\tTIOCSETN                      = 0x8006740a\n\tTIOCSETP                      = 0x80067409\n\tTIOCSLTC                      = 0x80067475\n\tTIOCSPGRP                     = 0x80047476\n\tTIOCSSIZE                     = 0x80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0x80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0x80087467\n\tTIOCUCNTL                     = 0x80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0x3f)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGKAP\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGSAK\", \"secure attention\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go",
    "content": "// mkerrors.sh -maix64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64,aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3fef96dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xb\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0xc\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0xd\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffffffffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fc78df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fc78df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fd79693\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3fef96bb\n\tSIOCGIFCONFGLOB               = -0x3fef9670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0xffffffff80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0xffffffff80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0xffffffff80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0xffffffff80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0xffffffff80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0xffffffff8004747e\n\tTIOCLBIS                      = 0xffffffff8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0xffffffff8004747d\n\tTIOCMBIC                      = 0xffffffff8004746b\n\tTIOCMBIS                      = 0xffffffff8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0xffffffff80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0xffffffff80047404\n\tTIOCMSET                      = 0xffffffff8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0xffffffff80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0xffffffff80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0xffffffff80067411\n\tTIOCSETD                      = 0xffffffff80047401\n\tTIOCSETN                      = 0xffffffff8006740a\n\tTIOCSETP                      = 0xffffffff80067409\n\tTIOCSLTC                      = 0xffffffff80067475\n\tTIOCSPGRP                     = 0xffffffff80047476\n\tTIOCSSIZE                     = 0xffffffff80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0xffffffff80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0xffffffff80087467\n\tTIOCUCNTL                     = 0xffffffff80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0xff)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGGRANT\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGMAX32\", \"secure attention\"},\n\t{255, \"SIGMAX\", \"signal 255\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,darwin\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1c\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x25\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1e\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1c\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x28\n\tAF_NATM                           = 0x1f\n\tAF_NDRV                           = 0x1b\n\tAF_NETBIOS                        = 0x21\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PPP                            = 0x22\n\tAF_PUP                            = 0x4\n\tAF_RESERVED_36                    = 0x24\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_SYSTEM                         = 0x20\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\n\tALTWERASE                         = 0x200\n\tATTR_BIT_MAP_COUNT                = 0x5\n\tATTR_CMN_ACCESSMASK               = 0x20000\n\tATTR_CMN_ACCTIME                  = 0x1000\n\tATTR_CMN_ADDEDTIME                = 0x10000000\n\tATTR_CMN_BKUPTIME                 = 0x2000\n\tATTR_CMN_CHGTIME                  = 0x800\n\tATTR_CMN_CRTIME                   = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000\n\tATTR_CMN_DEVID                    = 0x2\n\tATTR_CMN_DOCUMENT_ID              = 0x100000\n\tATTR_CMN_ERROR                    = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY        = 0x400000\n\tATTR_CMN_FILEID                   = 0x2000000\n\tATTR_CMN_FLAGS                    = 0x40000\n\tATTR_CMN_FNDRINFO                 = 0x4000\n\tATTR_CMN_FSID                     = 0x4\n\tATTR_CMN_FULLPATH                 = 0x8000000\n\tATTR_CMN_GEN_COUNT                = 0x80000\n\tATTR_CMN_GRPID                    = 0x10000\n\tATTR_CMN_GRPUUID                  = 0x1000000\n\tATTR_CMN_MODTIME                  = 0x400\n\tATTR_CMN_NAME                     = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT           = 0x80000\n\tATTR_CMN_NAMEDATTRLIST            = 0x100000\n\tATTR_CMN_OBJID                    = 0x20\n\tATTR_CMN_OBJPERMANENTID           = 0x40\n\tATTR_CMN_OBJTAG                   = 0x10\n\tATTR_CMN_OBJTYPE                  = 0x8\n\tATTR_CMN_OWNERID                  = 0x8000\n\tATTR_CMN_PARENTID                 = 0x4000000\n\tATTR_CMN_PAROBJID                 = 0x80\n\tATTR_CMN_RETURNED_ATTRS           = 0x80000000\n\tATTR_CMN_SCRIPT                   = 0x100\n\tATTR_CMN_SETMASK                  = 0x41c7ff00\n\tATTR_CMN_USERACCESS               = 0x200000\n\tATTR_CMN_UUID                     = 0x800000\n\tATTR_CMN_VALIDMASK                = 0xffffffff\n\tATTR_CMN_VOLSETMASK               = 0x6700\n\tATTR_FILE_ALLOCSIZE               = 0x4\n\tATTR_FILE_CLUMPSIZE               = 0x10\n\tATTR_FILE_DATAALLOCSIZE           = 0x400\n\tATTR_FILE_DATAEXTENTS             = 0x800\n\tATTR_FILE_DATALENGTH              = 0x200\n\tATTR_FILE_DEVTYPE                 = 0x20\n\tATTR_FILE_FILETYPE                = 0x40\n\tATTR_FILE_FORKCOUNT               = 0x80\n\tATTR_FILE_FORKLIST                = 0x100\n\tATTR_FILE_IOBLOCKSIZE             = 0x8\n\tATTR_FILE_LINKCOUNT               = 0x1\n\tATTR_FILE_RSRCALLOCSIZE           = 0x2000\n\tATTR_FILE_RSRCEXTENTS             = 0x4000\n\tATTR_FILE_RSRCLENGTH              = 0x1000\n\tATTR_FILE_SETMASK                 = 0x20\n\tATTR_FILE_TOTALSIZE               = 0x2\n\tATTR_FILE_VALIDMASK               = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP          = 0x40\n\tATTR_VOL_ATTRIBUTES               = 0x40000000\n\tATTR_VOL_CAPABILITIES             = 0x20000\n\tATTR_VOL_DIRCOUNT                 = 0x400\n\tATTR_VOL_ENCODINGSUSED            = 0x10000\n\tATTR_VOL_FILECOUNT                = 0x200\n\tATTR_VOL_FSTYPE                   = 0x1\n\tATTR_VOL_INFO                     = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE              = 0x80\n\tATTR_VOL_MAXOBJCOUNT              = 0x800\n\tATTR_VOL_MINALLOCATION            = 0x20\n\tATTR_VOL_MOUNTEDDEVICE            = 0x8000\n\tATTR_VOL_MOUNTFLAGS               = 0x4000\n\tATTR_VOL_MOUNTPOINT               = 0x1000\n\tATTR_VOL_NAME                     = 0x2000\n\tATTR_VOL_OBJCOUNT                 = 0x100\n\tATTR_VOL_QUOTA_SIZE               = 0x10000000\n\tATTR_VOL_RESERVED_SIZE            = 0x20000000\n\tATTR_VOL_SETMASK                  = 0x80002000\n\tATTR_VOL_SIGNATURE                = 0x2\n\tATTR_VOL_SIZE                     = 0x4\n\tATTR_VOL_SPACEAVAIL               = 0x10\n\tATTR_VOL_SPACEFREE                = 0x8\n\tATTR_VOL_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc00c4279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4008426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETFNR                        = 0x8008427e\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8008426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tBS0                               = 0x0\n\tBS1                               = 0x8000\n\tBSDLY                             = 0x8000\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x6\n\tCLOCK_MONOTONIC_RAW               = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX        = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xc\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x10\n\tCLOCK_UPTIME_RAW                  = 0x8\n\tCLOCK_UPTIME_RAW_APPROX           = 0x9\n\tCR0                               = 0x0\n\tCR1                               = 0x1000\n\tCR2                               = 0x2000\n\tCR3                               = 0x3000\n\tCRDLY                             = 0x3000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION       = 0xa6\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0xf5\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PPP_WITH_DIRECTION            = 0xa6\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0xf\n\tEVFILT_FS                         = -0x9\n\tEVFILT_MACHPORT                   = -0x8\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0xa\n\tEVFILT_VM                         = -0xc\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_DISPATCH2                      = 0x180\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG0                          = 0x1000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_OOBAND                         = 0x2000\n\tEV_POLL                           = 0x1000\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\n\tEV_UDATA_SPECIFIC                 = 0x100\n\tEV_VANISHED                       = 0x200\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFF0                               = 0x0\n\tFF1                               = 0x4000\n\tFFDLY                             = 0x4000\n\tFLUSHO                            = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED           = 0x20\n\tFSOPT_NOFOLLOW                    = 0x1\n\tFSOPT_NOINMEMUPDATE               = 0x2\n\tFSOPT_PACK_INVAL_ATTRS            = 0x8\n\tFSOPT_REPORT_FULLSIZE             = 0x4\n\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\n\tF_ADDSIGS                         = 0x3b\n\tF_ALLOCATEALL                     = 0x4\n\tF_ALLOCATECONTIG                  = 0x2\n\tF_BARRIERFSYNC                    = 0x55\n\tF_CHECK_LV                        = 0x62\n\tF_CHKCLEAN                        = 0x29\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x43\n\tF_FINDSIGS                        = 0x4e\n\tF_FLUSH_DATA                      = 0x28\n\tF_FREEZE_FS                       = 0x35\n\tF_FULLFSYNC                       = 0x33\n\tF_GETCODEDIR                      = 0x48\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETLKPID                        = 0x42\n\tF_GETNOSIGPIPE                    = 0x4a\n\tF_GETOWN                          = 0x5\n\tF_GETPATH                         = 0x32\n\tF_GETPATH_MTMINFO                 = 0x47\n\tF_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\n\tF_GLOBAL_NOCACHE                  = 0x37\n\tF_LOG2PHYS                        = 0x31\n\tF_LOG2PHYS_EXT                    = 0x41\n\tF_NOCACHE                         = 0x30\n\tF_NODIRECT                        = 0x3e\n\tF_OK                              = 0x0\n\tF_PATHPKG_CHECK                   = 0x34\n\tF_PEOFPOSMODE                     = 0x3\n\tF_PREALLOCATE                     = 0x2a\n\tF_PUNCHHOLE                       = 0x63\n\tF_RDADVISE                        = 0x2c\n\tF_RDAHEAD                         = 0x2d\n\tF_RDLCK                           = 0x1\n\tF_SETBACKINGSTORE                 = 0x46\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETLKWTIMEOUT                   = 0xa\n\tF_SETNOSIGPIPE                    = 0x49\n\tF_SETOWN                          = 0x6\n\tF_SETPROTECTIONCLASS              = 0x40\n\tF_SETSIZE                         = 0x2b\n\tF_SINGLE_WRITER                   = 0x4c\n\tF_THAW_FS                         = 0x36\n\tF_TRANSCODEKEY                    = 0x4b\n\tF_TRIM_ACTIVE_FILE                = 0x64\n\tF_UNLCK                           = 0x2\n\tF_VOLPOSMODE                      = 0x4\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_AAL5                          = 0x31\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ATM                           = 0x25\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_CARP                          = 0xf8\n\tIFT_CELLULAR                      = 0xff\n\tIFT_CEPT                          = 0x13\n\tIFT_DS3                           = 0x1e\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0x38\n\tIFT_FDDI                          = 0xf\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_GIF                           = 0x37\n\tIFT_HDH1822                       = 0x3\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE8023ADLAG                 = 0x88\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88026                      = 0xa\n\tIFT_L2VLAN                        = 0x87\n\tIFT_LAPB                          = 0x10\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_NSIP                          = 0x1b\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PDP                           = 0xff\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PKTAP                         = 0xfe\n\tIFT_PPP                           = 0x17\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_RS232                         = 0x21\n\tIFT_SDLC                          = 0x11\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0x39\n\tIFT_T1                            = 0x12\n\tIFT_ULTRA                         = 0x1d\n\tIFT_V35                           = 0x2d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LINKLOCALNETNUM                = 0xa9fe0000\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_2292DSTOPTS                  = 0x17\n\tIPV6_2292HOPLIMIT                 = 0x14\n\tIPV6_2292HOPOPTS                  = 0x16\n\tIPV6_2292NEXTHOP                  = 0x15\n\tIPV6_2292PKTINFO                  = 0x13\n\tIPV6_2292PKTOPTIONS               = 0x19\n\tIPV6_2292RTHDR                    = 0x18\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_BOUND_IF                     = 0x7d\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\n\tIPV6_FRAGTTL                      = 0x3c\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXOPTHDR                    = 0x800\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER         = 0x200\n\tIPV6_MAX_MEMBERSHIPS              = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER          = 0x80\n\tIPV6_MIN_MEMBERSHIPS              = 0x1f\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP          = 0x46\n\tIP_BLOCK_SOURCE                   = 0x48\n\tIP_BOUND_IF                       = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP         = 0x47\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FAITH                          = 0x16\n\tIP_FW_ADD                         = 0x28\n\tIP_FW_DEL                         = 0x29\n\tIP_FW_FLUSH                       = 0x2a\n\tIP_FW_GET                         = 0x2c\n\tIP_FW_RESETLOG                    = 0x2d\n\tIP_FW_ZERO                        = 0x2b\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x15\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER           = 0x200\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER           = 0x80\n\tIP_MAX_SOCK_SRC_FILTER            = 0x80\n\tIP_MF                             = 0x2000\n\tIP_MIN_MEMBERSHIPS                = 0x1f\n\tIP_MSFILTER                       = 0x4a\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_IFINDEX              = 0x42\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_NAT__XXX                       = 0x37\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OLD_FW_ADD                     = 0x32\n\tIP_OLD_FW_DEL                     = 0x33\n\tIP_OLD_FW_FLUSH                   = 0x34\n\tIP_OLD_FW_GET                     = 0x36\n\tIP_OLD_FW_RESETLOG                = 0x38\n\tIP_OLD_FW_ZERO                    = 0x35\n\tIP_OPTIONS                        = 0x1\n\tIP_PKTINFO                        = 0x1a\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVPKTINFO                    = 0x1a\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTOS                        = 0x1b\n\tIP_RECVTTL                        = 0x18\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_STRIPHDR                       = 0x17\n\tIP_TOS                            = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND         = 0x41\n\tIP_TTL                            = 0x4\n\tIP_UNBLOCK_SOURCE                 = 0x49\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIUTF8                             = 0x4000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_CAN_REUSE                    = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_FREE_REUSABLE                = 0x7\n\tMADV_FREE_REUSE                   = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_PAGEOUT                      = 0xa\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_WILLNEED                     = 0x3\n\tMADV_ZERO_WIRED_PAGES             = 0x6\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_JIT                           = 0x800\n\tMAP_NOCACHE                       = 0x400\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_RESERVED0080                  = 0x80\n\tMAP_RESILIENT_CODESIGN            = 0x2000\n\tMAP_RESILIENT_MEDIA               = 0x4000\n\tMAP_SHARED                        = 0x1\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x400000\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_CPROTECT                      = 0x80\n\tMNT_DEFWRITE                      = 0x2000000\n\tMNT_DONTBROWSE                    = 0x100000\n\tMNT_DOVOLFS                       = 0x8000\n\tMNT_DWAIT                         = 0x4\n\tMNT_EXPORTED                      = 0x100\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE_OWNERSHIP              = 0x200000\n\tMNT_JOURNALED                     = 0x800000\n\tMNT_LOCAL                         = 0x1000\n\tMNT_MULTILABEL                    = 0x4000000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOBLOCK                       = 0x20000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOUSERXATTR                   = 0x1000000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUARANTINE                    = 0x400\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\n\tMNT_WAIT                          = 0x1\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FLUSH                         = 0x400\n\tMSG_HAVEMORE                      = 0x2000\n\tMSG_HOLD                          = 0x800\n\tMSG_NEEDSA                        = 0x10000\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_RCVMORE                       = 0x4000\n\tMSG_SEND                          = 0x1000\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITSTREAM                    = 0x200\n\tMS_ASYNC                          = 0x1\n\tMS_DEACTIVATE                     = 0x8\n\tMS_INVALIDATE                     = 0x2\n\tMS_KILLPAGES                      = 0x4\n\tMS_SYNC                           = 0x10\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_DUMP2                      = 0x7\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\n\tNET_RT_STAT                       = 0x4\n\tNET_RT_TRASH                      = 0x5\n\tNL0                               = 0x0\n\tNL1                               = 0x100\n\tNL2                               = 0x200\n\tNL3                               = 0x300\n\tNLDLY                             = 0x300\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ABSOLUTE                     = 0x8\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_BACKGROUND                   = 0x40\n\tNOTE_CHILD                        = 0x4\n\tNOTE_CRITICAL                     = 0x20\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXITSTATUS                   = 0x4000000\n\tNOTE_EXIT_CSERROR                 = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL             = 0x10000\n\tNOTE_EXIT_DETAIL                  = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK             = 0x70000\n\tNOTE_EXIT_MEMORY                  = 0x20000\n\tNOTE_EXIT_REPARENTED              = 0x80000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_FUNLOCK                      = 0x100\n\tNOTE_LEEWAY                       = 0x10\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_MACH_CONTINUOUS_TIME         = 0x80\n\tNOTE_NONE                         = 0x80\n\tNOTE_NSECONDS                     = 0x4\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = -0x100000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_REAP                         = 0x10000000\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_SECONDS                      = 0x1\n\tNOTE_SIGNAL                       = 0x8000000\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_USECONDS                     = 0x2\n\tNOTE_VM_ERROR                     = 0x10000000\n\tNOTE_VM_PRESSURE                  = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE        = 0x40000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFDEL                             = 0x20000\n\tOFILL                             = 0x80\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_ALERT                           = 0x20000000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x1000000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x100000\n\tO_DP_GETRAWENCRYPTED              = 0x1\n\tO_DP_GETRAWUNENCRYPTED            = 0x2\n\tO_DSYNC                           = 0x400000\n\tO_EVTONLY                         = 0x8000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x20000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_POPUP                           = 0x80000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYMLINK                         = 0x200000\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPT_ATTACH                         = 0xa\n\tPT_ATTACHEXC                      = 0xe\n\tPT_CONTINUE                       = 0x7\n\tPT_DENY_ATTACH                    = 0x1f\n\tPT_DETACH                         = 0xb\n\tPT_FIRSTMACH                      = 0x20\n\tPT_FORCEQUOTA                     = 0x1e\n\tPT_KILL                           = 0x8\n\tPT_READ_D                         = 0x2\n\tPT_READ_I                         = 0x1\n\tPT_READ_U                         = 0x3\n\tPT_SIGEXC                         = 0xc\n\tPT_STEP                           = 0x9\n\tPT_THUPDATE                       = 0xd\n\tPT_TRACE_ME                       = 0x0\n\tPT_WRITE_D                        = 0x5\n\tPT_WRITE_I                        = 0x4\n\tPT_WRITE_U                        = 0x6\n\tRLIMIT_AS                         = 0x5\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR          = 0x2\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x8\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONDEMNED                     = 0x2000000\n\tRTF_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_NOIFREF                       = 0x2000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_PROXY                         = 0x8000000\n\tRTF_REJECT                        = 0x8\n\tRTF_ROUTER                        = 0x10000000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_GET2                          = 0x14\n\tRTM_IFINFO                        = 0xe\n\tRTM_IFINFO2                       = 0x12\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_NEWMADDR2                     = 0x13\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCARPIPLL                       = 0xc0206928\n\tSIOCATMARK                        = 0x40047307\n\tSIOCAUTOADDR                      = 0xc0206926\n\tSIOCAUTONETMASK                   = 0x80206927\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFPHYADDR                    = 0x80206941\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETVLAN                       = 0xc020697f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALTMTU                     = 0xc0206948\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBOND                       = 0xc0206947\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020695b\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDEVMTU                     = 0xc0206944\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFKPI                        = 0xc0206987\n\tSIOCGIFMAC                        = 0xc0206982\n\tSIOCGIFMEDIA                      = 0xc0286938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206940\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPSRCADDR                   = 0xc020693f\n\tSIOCGIFSTATUS                     = 0xc331693d\n\tSIOCGIFVLAN                       = 0xc020697f\n\tSIOCGIFWAKEFLAGS                  = 0xc0206988\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCIFCREATE                      = 0xc0206978\n\tSIOCIFCREATE2                     = 0xc020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6981\n\tSIOCRSLVMULTI                     = 0xc008693b\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETVLAN                       = 0x8020697e\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFALTMTU                     = 0x80206945\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBOND                       = 0x80206946\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020695a\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFKPI                        = 0x80206986\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMAC                        = 0x80206983\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x8040693e\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFVLAN                       = 0x8020697e\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_DONTTRUNC                      = 0x2000\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LABEL                          = 0x1010\n\tSO_LINGER                         = 0x80\n\tSO_LINGER_SEC                     = 0x1080\n\tSO_NETSVC_MARKING_LEVEL           = 0x1119\n\tSO_NET_SERVICE_TYPE               = 0x1116\n\tSO_NKE                            = 0x1021\n\tSO_NOADDRERR                      = 0x1023\n\tSO_NOSIGPIPE                      = 0x1022\n\tSO_NOTIFYCONFLICT                 = 0x1026\n\tSO_NP_EXTENSIONS                  = 0x1083\n\tSO_NREAD                          = 0x1020\n\tSO_NUMRCVPKT                      = 0x1112\n\tSO_NWRITE                         = 0x1024\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERLABEL                      = 0x1011\n\tSO_RANDOMPORT                     = 0x1082\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_REUSESHAREUID                  = 0x1025\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TIMESTAMP_MONOTONIC            = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_UPCALLCLOSEWAIT                = 0x1027\n\tSO_USELOOPBACK                    = 0x40\n\tSO_WANTMORE                       = 0x4000\n\tSO_WANTOOBFLAG                    = 0x8000\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB1                              = 0x400\n\tTAB2                              = 0x800\n\tTAB3                              = 0x4\n\tTABDLY                            = 0xc04\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_CONNECTIONTIMEOUT             = 0x20\n\tTCP_CONNECTION_INFO               = 0x106\n\tTCP_ENABLE_ECN                    = 0x104\n\tTCP_FASTOPEN                      = 0x105\n\tTCP_KEEPALIVE                     = 0x10\n\tTCP_KEEPCNT                       = 0x102\n\tTCP_KEEPINTVL                     = 0x101\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x4\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_NOTSENT_LOWAT                 = 0x201\n\tTCP_RXT_CONNDROPTIME              = 0x80\n\tTCP_RXT_FINDROP                   = 0x100\n\tTCP_SENDMOREACKS                  = 0x103\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40087458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCDSIMICROCODE                  = 0x20007455\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCIXOFF                         = 0x20007480\n\tTIOCIXON                          = 0x20007481\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTYGNAME                      = 0x40807453\n\tTIOCPTYGRANT                      = 0x20007454\n\tTIOCPTYUNLK                       = 0x20007452\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCONS                         = 0x20007463\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40087459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_LOADAVG                        = 0x2\n\tVM_MACHFACTOR                     = 0x4\n\tVM_MAXID                          = 0x6\n\tVM_METER                          = 0x1\n\tVM_SWAPUSAGE                      = 0x5\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVT0                               = 0x0\n\tVT1                               = 0x10000\n\tVTDLY                             = 0x10000\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x10\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x4\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x20\n\tWORDSIZE                          = 0x20\n\tWSTOPPED                          = 0x8\n\tWUNTRACED                         = 0x2\n\tXATTR_CREATE                      = 0x2\n\tXATTR_NODEFAULT                   = 0x10\n\tXATTR_NOFOLLOW                    = 0x1\n\tXATTR_NOSECURITY                  = 0x8\n\tXATTR_REPLACE                     = 0x4\n\tXATTR_SHOWCOMPRESSION             = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,darwin\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1c\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x25\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1e\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1c\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x28\n\tAF_NATM                           = 0x1f\n\tAF_NDRV                           = 0x1b\n\tAF_NETBIOS                        = 0x21\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PPP                            = 0x22\n\tAF_PUP                            = 0x4\n\tAF_RESERVED_36                    = 0x24\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_SYSTEM                         = 0x20\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\n\tALTWERASE                         = 0x200\n\tATTR_BIT_MAP_COUNT                = 0x5\n\tATTR_CMN_ACCESSMASK               = 0x20000\n\tATTR_CMN_ACCTIME                  = 0x1000\n\tATTR_CMN_ADDEDTIME                = 0x10000000\n\tATTR_CMN_BKUPTIME                 = 0x2000\n\tATTR_CMN_CHGTIME                  = 0x800\n\tATTR_CMN_CRTIME                   = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000\n\tATTR_CMN_DEVID                    = 0x2\n\tATTR_CMN_DOCUMENT_ID              = 0x100000\n\tATTR_CMN_ERROR                    = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY        = 0x400000\n\tATTR_CMN_FILEID                   = 0x2000000\n\tATTR_CMN_FLAGS                    = 0x40000\n\tATTR_CMN_FNDRINFO                 = 0x4000\n\tATTR_CMN_FSID                     = 0x4\n\tATTR_CMN_FULLPATH                 = 0x8000000\n\tATTR_CMN_GEN_COUNT                = 0x80000\n\tATTR_CMN_GRPID                    = 0x10000\n\tATTR_CMN_GRPUUID                  = 0x1000000\n\tATTR_CMN_MODTIME                  = 0x400\n\tATTR_CMN_NAME                     = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT           = 0x80000\n\tATTR_CMN_NAMEDATTRLIST            = 0x100000\n\tATTR_CMN_OBJID                    = 0x20\n\tATTR_CMN_OBJPERMANENTID           = 0x40\n\tATTR_CMN_OBJTAG                   = 0x10\n\tATTR_CMN_OBJTYPE                  = 0x8\n\tATTR_CMN_OWNERID                  = 0x8000\n\tATTR_CMN_PARENTID                 = 0x4000000\n\tATTR_CMN_PAROBJID                 = 0x80\n\tATTR_CMN_RETURNED_ATTRS           = 0x80000000\n\tATTR_CMN_SCRIPT                   = 0x100\n\tATTR_CMN_SETMASK                  = 0x41c7ff00\n\tATTR_CMN_USERACCESS               = 0x200000\n\tATTR_CMN_UUID                     = 0x800000\n\tATTR_CMN_VALIDMASK                = 0xffffffff\n\tATTR_CMN_VOLSETMASK               = 0x6700\n\tATTR_FILE_ALLOCSIZE               = 0x4\n\tATTR_FILE_CLUMPSIZE               = 0x10\n\tATTR_FILE_DATAALLOCSIZE           = 0x400\n\tATTR_FILE_DATAEXTENTS             = 0x800\n\tATTR_FILE_DATALENGTH              = 0x200\n\tATTR_FILE_DEVTYPE                 = 0x20\n\tATTR_FILE_FILETYPE                = 0x40\n\tATTR_FILE_FORKCOUNT               = 0x80\n\tATTR_FILE_FORKLIST                = 0x100\n\tATTR_FILE_IOBLOCKSIZE             = 0x8\n\tATTR_FILE_LINKCOUNT               = 0x1\n\tATTR_FILE_RSRCALLOCSIZE           = 0x2000\n\tATTR_FILE_RSRCEXTENTS             = 0x4000\n\tATTR_FILE_RSRCLENGTH              = 0x1000\n\tATTR_FILE_SETMASK                 = 0x20\n\tATTR_FILE_TOTALSIZE               = 0x2\n\tATTR_FILE_VALIDMASK               = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP          = 0x40\n\tATTR_VOL_ATTRIBUTES               = 0x40000000\n\tATTR_VOL_CAPABILITIES             = 0x20000\n\tATTR_VOL_DIRCOUNT                 = 0x400\n\tATTR_VOL_ENCODINGSUSED            = 0x10000\n\tATTR_VOL_FILECOUNT                = 0x200\n\tATTR_VOL_FSTYPE                   = 0x1\n\tATTR_VOL_INFO                     = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE              = 0x80\n\tATTR_VOL_MAXOBJCOUNT              = 0x800\n\tATTR_VOL_MINALLOCATION            = 0x20\n\tATTR_VOL_MOUNTEDDEVICE            = 0x8000\n\tATTR_VOL_MOUNTFLAGS               = 0x4000\n\tATTR_VOL_MOUNTPOINT               = 0x1000\n\tATTR_VOL_NAME                     = 0x2000\n\tATTR_VOL_OBJCOUNT                 = 0x100\n\tATTR_VOL_QUOTA_SIZE               = 0x10000000\n\tATTR_VOL_RESERVED_SIZE            = 0x20000000\n\tATTR_VOL_SETMASK                  = 0x80002000\n\tATTR_VOL_SIGNATURE                = 0x2\n\tATTR_VOL_SIZE                     = 0x4\n\tATTR_VOL_SPACEAVAIL               = 0x10\n\tATTR_VOL_SPACEFREE                = 0x8\n\tATTR_VOL_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc00c4279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETFNR                        = 0x8010427e\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tBS0                               = 0x0\n\tBS1                               = 0x8000\n\tBSDLY                             = 0x8000\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x6\n\tCLOCK_MONOTONIC_RAW               = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX        = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xc\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x10\n\tCLOCK_UPTIME_RAW                  = 0x8\n\tCLOCK_UPTIME_RAW_APPROX           = 0x9\n\tCR0                               = 0x0\n\tCR1                               = 0x1000\n\tCR2                               = 0x2000\n\tCR3                               = 0x3000\n\tCRDLY                             = 0x3000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION       = 0xa6\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0xf5\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PPP_WITH_DIRECTION            = 0xa6\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0xf\n\tEVFILT_FS                         = -0x9\n\tEVFILT_MACHPORT                   = -0x8\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0xa\n\tEVFILT_VM                         = -0xc\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_DISPATCH2                      = 0x180\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG0                          = 0x1000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_OOBAND                         = 0x2000\n\tEV_POLL                           = 0x1000\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\n\tEV_UDATA_SPECIFIC                 = 0x100\n\tEV_VANISHED                       = 0x200\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFF0                               = 0x0\n\tFF1                               = 0x4000\n\tFFDLY                             = 0x4000\n\tFLUSHO                            = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED           = 0x20\n\tFSOPT_NOFOLLOW                    = 0x1\n\tFSOPT_NOINMEMUPDATE               = 0x2\n\tFSOPT_PACK_INVAL_ATTRS            = 0x8\n\tFSOPT_REPORT_FULLSIZE             = 0x4\n\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\n\tF_ADDSIGS                         = 0x3b\n\tF_ALLOCATEALL                     = 0x4\n\tF_ALLOCATECONTIG                  = 0x2\n\tF_BARRIERFSYNC                    = 0x55\n\tF_CHECK_LV                        = 0x62\n\tF_CHKCLEAN                        = 0x29\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x43\n\tF_FINDSIGS                        = 0x4e\n\tF_FLUSH_DATA                      = 0x28\n\tF_FREEZE_FS                       = 0x35\n\tF_FULLFSYNC                       = 0x33\n\tF_GETCODEDIR                      = 0x48\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETLKPID                        = 0x42\n\tF_GETNOSIGPIPE                    = 0x4a\n\tF_GETOWN                          = 0x5\n\tF_GETPATH                         = 0x32\n\tF_GETPATH_MTMINFO                 = 0x47\n\tF_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\n\tF_GLOBAL_NOCACHE                  = 0x37\n\tF_LOG2PHYS                        = 0x31\n\tF_LOG2PHYS_EXT                    = 0x41\n\tF_NOCACHE                         = 0x30\n\tF_NODIRECT                        = 0x3e\n\tF_OK                              = 0x0\n\tF_PATHPKG_CHECK                   = 0x34\n\tF_PEOFPOSMODE                     = 0x3\n\tF_PREALLOCATE                     = 0x2a\n\tF_PUNCHHOLE                       = 0x63\n\tF_RDADVISE                        = 0x2c\n\tF_RDAHEAD                         = 0x2d\n\tF_RDLCK                           = 0x1\n\tF_SETBACKINGSTORE                 = 0x46\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETLKWTIMEOUT                   = 0xa\n\tF_SETNOSIGPIPE                    = 0x49\n\tF_SETOWN                          = 0x6\n\tF_SETPROTECTIONCLASS              = 0x40\n\tF_SETSIZE                         = 0x2b\n\tF_SINGLE_WRITER                   = 0x4c\n\tF_THAW_FS                         = 0x36\n\tF_TRANSCODEKEY                    = 0x4b\n\tF_TRIM_ACTIVE_FILE                = 0x64\n\tF_UNLCK                           = 0x2\n\tF_VOLPOSMODE                      = 0x4\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_AAL5                          = 0x31\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ATM                           = 0x25\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_CARP                          = 0xf8\n\tIFT_CELLULAR                      = 0xff\n\tIFT_CEPT                          = 0x13\n\tIFT_DS3                           = 0x1e\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0x38\n\tIFT_FDDI                          = 0xf\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_GIF                           = 0x37\n\tIFT_HDH1822                       = 0x3\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE8023ADLAG                 = 0x88\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88026                      = 0xa\n\tIFT_L2VLAN                        = 0x87\n\tIFT_LAPB                          = 0x10\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_NSIP                          = 0x1b\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PDP                           = 0xff\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PKTAP                         = 0xfe\n\tIFT_PPP                           = 0x17\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_RS232                         = 0x21\n\tIFT_SDLC                          = 0x11\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0x39\n\tIFT_T1                            = 0x12\n\tIFT_ULTRA                         = 0x1d\n\tIFT_V35                           = 0x2d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LINKLOCALNETNUM                = 0xa9fe0000\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_2292DSTOPTS                  = 0x17\n\tIPV6_2292HOPLIMIT                 = 0x14\n\tIPV6_2292HOPOPTS                  = 0x16\n\tIPV6_2292NEXTHOP                  = 0x15\n\tIPV6_2292PKTINFO                  = 0x13\n\tIPV6_2292PKTOPTIONS               = 0x19\n\tIPV6_2292RTHDR                    = 0x18\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_BOUND_IF                     = 0x7d\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\n\tIPV6_FRAGTTL                      = 0x3c\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXOPTHDR                    = 0x800\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER         = 0x200\n\tIPV6_MAX_MEMBERSHIPS              = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER          = 0x80\n\tIPV6_MIN_MEMBERSHIPS              = 0x1f\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP          = 0x46\n\tIP_BLOCK_SOURCE                   = 0x48\n\tIP_BOUND_IF                       = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP         = 0x47\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FAITH                          = 0x16\n\tIP_FW_ADD                         = 0x28\n\tIP_FW_DEL                         = 0x29\n\tIP_FW_FLUSH                       = 0x2a\n\tIP_FW_GET                         = 0x2c\n\tIP_FW_RESETLOG                    = 0x2d\n\tIP_FW_ZERO                        = 0x2b\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x15\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER           = 0x200\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER           = 0x80\n\tIP_MAX_SOCK_SRC_FILTER            = 0x80\n\tIP_MF                             = 0x2000\n\tIP_MIN_MEMBERSHIPS                = 0x1f\n\tIP_MSFILTER                       = 0x4a\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_IFINDEX              = 0x42\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_NAT__XXX                       = 0x37\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OLD_FW_ADD                     = 0x32\n\tIP_OLD_FW_DEL                     = 0x33\n\tIP_OLD_FW_FLUSH                   = 0x34\n\tIP_OLD_FW_GET                     = 0x36\n\tIP_OLD_FW_RESETLOG                = 0x38\n\tIP_OLD_FW_ZERO                    = 0x35\n\tIP_OPTIONS                        = 0x1\n\tIP_PKTINFO                        = 0x1a\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVPKTINFO                    = 0x1a\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTOS                        = 0x1b\n\tIP_RECVTTL                        = 0x18\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_STRIPHDR                       = 0x17\n\tIP_TOS                            = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND         = 0x41\n\tIP_TTL                            = 0x4\n\tIP_UNBLOCK_SOURCE                 = 0x49\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIUTF8                             = 0x4000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_CAN_REUSE                    = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_FREE_REUSABLE                = 0x7\n\tMADV_FREE_REUSE                   = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_PAGEOUT                      = 0xa\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_WILLNEED                     = 0x3\n\tMADV_ZERO_WIRED_PAGES             = 0x6\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_JIT                           = 0x800\n\tMAP_NOCACHE                       = 0x400\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_RESERVED0080                  = 0x80\n\tMAP_RESILIENT_CODESIGN            = 0x2000\n\tMAP_RESILIENT_MEDIA               = 0x4000\n\tMAP_SHARED                        = 0x1\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x400000\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_CPROTECT                      = 0x80\n\tMNT_DEFWRITE                      = 0x2000000\n\tMNT_DONTBROWSE                    = 0x100000\n\tMNT_DOVOLFS                       = 0x8000\n\tMNT_DWAIT                         = 0x4\n\tMNT_EXPORTED                      = 0x100\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE_OWNERSHIP              = 0x200000\n\tMNT_JOURNALED                     = 0x800000\n\tMNT_LOCAL                         = 0x1000\n\tMNT_MULTILABEL                    = 0x4000000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOBLOCK                       = 0x20000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOUSERXATTR                   = 0x1000000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUARANTINE                    = 0x400\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\n\tMNT_WAIT                          = 0x1\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FLUSH                         = 0x400\n\tMSG_HAVEMORE                      = 0x2000\n\tMSG_HOLD                          = 0x800\n\tMSG_NEEDSA                        = 0x10000\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_RCVMORE                       = 0x4000\n\tMSG_SEND                          = 0x1000\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITSTREAM                    = 0x200\n\tMS_ASYNC                          = 0x1\n\tMS_DEACTIVATE                     = 0x8\n\tMS_INVALIDATE                     = 0x2\n\tMS_KILLPAGES                      = 0x4\n\tMS_SYNC                           = 0x10\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_DUMP2                      = 0x7\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\n\tNET_RT_STAT                       = 0x4\n\tNET_RT_TRASH                      = 0x5\n\tNL0                               = 0x0\n\tNL1                               = 0x100\n\tNL2                               = 0x200\n\tNL3                               = 0x300\n\tNLDLY                             = 0x300\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ABSOLUTE                     = 0x8\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_BACKGROUND                   = 0x40\n\tNOTE_CHILD                        = 0x4\n\tNOTE_CRITICAL                     = 0x20\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXITSTATUS                   = 0x4000000\n\tNOTE_EXIT_CSERROR                 = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL             = 0x10000\n\tNOTE_EXIT_DETAIL                  = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK             = 0x70000\n\tNOTE_EXIT_MEMORY                  = 0x20000\n\tNOTE_EXIT_REPARENTED              = 0x80000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_FUNLOCK                      = 0x100\n\tNOTE_LEEWAY                       = 0x10\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_MACH_CONTINUOUS_TIME         = 0x80\n\tNOTE_NONE                         = 0x80\n\tNOTE_NSECONDS                     = 0x4\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = -0x100000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_REAP                         = 0x10000000\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_SECONDS                      = 0x1\n\tNOTE_SIGNAL                       = 0x8000000\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_USECONDS                     = 0x2\n\tNOTE_VM_ERROR                     = 0x10000000\n\tNOTE_VM_PRESSURE                  = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE        = 0x40000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFDEL                             = 0x20000\n\tOFILL                             = 0x80\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_ALERT                           = 0x20000000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x1000000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x100000\n\tO_DP_GETRAWENCRYPTED              = 0x1\n\tO_DP_GETRAWUNENCRYPTED            = 0x2\n\tO_DSYNC                           = 0x400000\n\tO_EVTONLY                         = 0x8000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x20000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_POPUP                           = 0x80000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYMLINK                         = 0x200000\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPT_ATTACH                         = 0xa\n\tPT_ATTACHEXC                      = 0xe\n\tPT_CONTINUE                       = 0x7\n\tPT_DENY_ATTACH                    = 0x1f\n\tPT_DETACH                         = 0xb\n\tPT_FIRSTMACH                      = 0x20\n\tPT_FORCEQUOTA                     = 0x1e\n\tPT_KILL                           = 0x8\n\tPT_READ_D                         = 0x2\n\tPT_READ_I                         = 0x1\n\tPT_READ_U                         = 0x3\n\tPT_SIGEXC                         = 0xc\n\tPT_STEP                           = 0x9\n\tPT_THUPDATE                       = 0xd\n\tPT_TRACE_ME                       = 0x0\n\tPT_WRITE_D                        = 0x5\n\tPT_WRITE_I                        = 0x4\n\tPT_WRITE_U                        = 0x6\n\tRLIMIT_AS                         = 0x5\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR          = 0x2\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x8\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONDEMNED                     = 0x2000000\n\tRTF_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_NOIFREF                       = 0x2000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_PROXY                         = 0x8000000\n\tRTF_REJECT                        = 0x8\n\tRTF_ROUTER                        = 0x10000000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_GET2                          = 0x14\n\tRTM_IFINFO                        = 0xe\n\tRTM_IFINFO2                       = 0x12\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_NEWMADDR2                     = 0x13\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCARPIPLL                       = 0xc0206928\n\tSIOCATMARK                        = 0x40047307\n\tSIOCAUTOADDR                      = 0xc0206926\n\tSIOCAUTONETMASK                   = 0x80206927\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFPHYADDR                    = 0x80206941\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETVLAN                       = 0xc020697f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALTMTU                     = 0xc0206948\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBOND                       = 0xc0206947\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020695b\n\tSIOCGIFCONF                       = 0xc00c6924\n\tSIOCGIFDEVMTU                     = 0xc0206944\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFKPI                        = 0xc0206987\n\tSIOCGIFMAC                        = 0xc0206982\n\tSIOCGIFMEDIA                      = 0xc02c6938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206940\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPSRCADDR                   = 0xc020693f\n\tSIOCGIFSTATUS                     = 0xc331693d\n\tSIOCGIFVLAN                       = 0xc020697f\n\tSIOCGIFWAKEFLAGS                  = 0xc0206988\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCIFCREATE                      = 0xc0206978\n\tSIOCIFCREATE2                     = 0xc020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106981\n\tSIOCRSLVMULTI                     = 0xc010693b\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETVLAN                       = 0x8020697e\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFALTMTU                     = 0x80206945\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBOND                       = 0x80206946\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020695a\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFKPI                        = 0x80206986\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMAC                        = 0x80206983\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x8040693e\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFVLAN                       = 0x8020697e\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_DONTTRUNC                      = 0x2000\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LABEL                          = 0x1010\n\tSO_LINGER                         = 0x80\n\tSO_LINGER_SEC                     = 0x1080\n\tSO_NETSVC_MARKING_LEVEL           = 0x1119\n\tSO_NET_SERVICE_TYPE               = 0x1116\n\tSO_NKE                            = 0x1021\n\tSO_NOADDRERR                      = 0x1023\n\tSO_NOSIGPIPE                      = 0x1022\n\tSO_NOTIFYCONFLICT                 = 0x1026\n\tSO_NP_EXTENSIONS                  = 0x1083\n\tSO_NREAD                          = 0x1020\n\tSO_NUMRCVPKT                      = 0x1112\n\tSO_NWRITE                         = 0x1024\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERLABEL                      = 0x1011\n\tSO_RANDOMPORT                     = 0x1082\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_REUSESHAREUID                  = 0x1025\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TIMESTAMP_MONOTONIC            = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_UPCALLCLOSEWAIT                = 0x1027\n\tSO_USELOOPBACK                    = 0x40\n\tSO_WANTMORE                       = 0x4000\n\tSO_WANTOOBFLAG                    = 0x8000\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB1                              = 0x400\n\tTAB2                              = 0x800\n\tTAB3                              = 0x4\n\tTABDLY                            = 0xc04\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_CONNECTIONTIMEOUT             = 0x20\n\tTCP_CONNECTION_INFO               = 0x106\n\tTCP_ENABLE_ECN                    = 0x104\n\tTCP_FASTOPEN                      = 0x105\n\tTCP_KEEPALIVE                     = 0x10\n\tTCP_KEEPCNT                       = 0x102\n\tTCP_KEEPINTVL                     = 0x101\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x4\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_NOTSENT_LOWAT                 = 0x201\n\tTCP_RXT_CONNDROPTIME              = 0x80\n\tTCP_RXT_FINDROP                   = 0x100\n\tTCP_SENDMOREACKS                  = 0x103\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCDSIMICROCODE                  = 0x20007455\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x40487413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCIXOFF                         = 0x20007480\n\tTIOCIXON                          = 0x20007481\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTYGNAME                      = 0x40807453\n\tTIOCPTYGRANT                      = 0x20007454\n\tTIOCPTYUNLK                       = 0x20007452\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCONS                         = 0x20007463\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x80487414\n\tTIOCSETAF                         = 0x80487416\n\tTIOCSETAW                         = 0x80487415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_LOADAVG                        = 0x2\n\tVM_MACHFACTOR                     = 0x4\n\tVM_MAXID                          = 0x6\n\tVM_METER                          = 0x1\n\tVM_SWAPUSAGE                      = 0x5\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVT0                               = 0x0\n\tVT1                               = 0x10000\n\tVTDLY                             = 0x10000\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x10\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x4\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x20\n\tWORDSIZE                          = 0x40\n\tWSTOPPED                          = 0x8\n\tWUNTRACED                         = 0x2\n\tXATTR_CREATE                      = 0x2\n\tXATTR_NODEFAULT                   = 0x10\n\tXATTR_NOFOLLOW                    = 0x1\n\tXATTR_NOSECURITY                  = 0x8\n\tXATTR_REPLACE                     = 0x4\n\tXATTR_SHOWCOMPRESSION             = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,darwin\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1c\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x25\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1e\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1c\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x28\n\tAF_NATM                           = 0x1f\n\tAF_NDRV                           = 0x1b\n\tAF_NETBIOS                        = 0x21\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PPP                            = 0x22\n\tAF_PUP                            = 0x4\n\tAF_RESERVED_36                    = 0x24\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_SYSTEM                         = 0x20\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\n\tALTWERASE                         = 0x200\n\tATTR_BIT_MAP_COUNT                = 0x5\n\tATTR_CMN_ACCESSMASK               = 0x20000\n\tATTR_CMN_ACCTIME                  = 0x1000\n\tATTR_CMN_ADDEDTIME                = 0x10000000\n\tATTR_CMN_BKUPTIME                 = 0x2000\n\tATTR_CMN_CHGTIME                  = 0x800\n\tATTR_CMN_CRTIME                   = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000\n\tATTR_CMN_DEVID                    = 0x2\n\tATTR_CMN_DOCUMENT_ID              = 0x100000\n\tATTR_CMN_ERROR                    = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY        = 0x400000\n\tATTR_CMN_FILEID                   = 0x2000000\n\tATTR_CMN_FLAGS                    = 0x40000\n\tATTR_CMN_FNDRINFO                 = 0x4000\n\tATTR_CMN_FSID                     = 0x4\n\tATTR_CMN_FULLPATH                 = 0x8000000\n\tATTR_CMN_GEN_COUNT                = 0x80000\n\tATTR_CMN_GRPID                    = 0x10000\n\tATTR_CMN_GRPUUID                  = 0x1000000\n\tATTR_CMN_MODTIME                  = 0x400\n\tATTR_CMN_NAME                     = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT           = 0x80000\n\tATTR_CMN_NAMEDATTRLIST            = 0x100000\n\tATTR_CMN_OBJID                    = 0x20\n\tATTR_CMN_OBJPERMANENTID           = 0x40\n\tATTR_CMN_OBJTAG                   = 0x10\n\tATTR_CMN_OBJTYPE                  = 0x8\n\tATTR_CMN_OWNERID                  = 0x8000\n\tATTR_CMN_PARENTID                 = 0x4000000\n\tATTR_CMN_PAROBJID                 = 0x80\n\tATTR_CMN_RETURNED_ATTRS           = 0x80000000\n\tATTR_CMN_SCRIPT                   = 0x100\n\tATTR_CMN_SETMASK                  = 0x41c7ff00\n\tATTR_CMN_USERACCESS               = 0x200000\n\tATTR_CMN_UUID                     = 0x800000\n\tATTR_CMN_VALIDMASK                = 0xffffffff\n\tATTR_CMN_VOLSETMASK               = 0x6700\n\tATTR_FILE_ALLOCSIZE               = 0x4\n\tATTR_FILE_CLUMPSIZE               = 0x10\n\tATTR_FILE_DATAALLOCSIZE           = 0x400\n\tATTR_FILE_DATAEXTENTS             = 0x800\n\tATTR_FILE_DATALENGTH              = 0x200\n\tATTR_FILE_DEVTYPE                 = 0x20\n\tATTR_FILE_FILETYPE                = 0x40\n\tATTR_FILE_FORKCOUNT               = 0x80\n\tATTR_FILE_FORKLIST                = 0x100\n\tATTR_FILE_IOBLOCKSIZE             = 0x8\n\tATTR_FILE_LINKCOUNT               = 0x1\n\tATTR_FILE_RSRCALLOCSIZE           = 0x2000\n\tATTR_FILE_RSRCEXTENTS             = 0x4000\n\tATTR_FILE_RSRCLENGTH              = 0x1000\n\tATTR_FILE_SETMASK                 = 0x20\n\tATTR_FILE_TOTALSIZE               = 0x2\n\tATTR_FILE_VALIDMASK               = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP          = 0x40\n\tATTR_VOL_ATTRIBUTES               = 0x40000000\n\tATTR_VOL_CAPABILITIES             = 0x20000\n\tATTR_VOL_DIRCOUNT                 = 0x400\n\tATTR_VOL_ENCODINGSUSED            = 0x10000\n\tATTR_VOL_FILECOUNT                = 0x200\n\tATTR_VOL_FSTYPE                   = 0x1\n\tATTR_VOL_INFO                     = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE              = 0x80\n\tATTR_VOL_MAXOBJCOUNT              = 0x800\n\tATTR_VOL_MINALLOCATION            = 0x20\n\tATTR_VOL_MOUNTEDDEVICE            = 0x8000\n\tATTR_VOL_MOUNTFLAGS               = 0x4000\n\tATTR_VOL_MOUNTPOINT               = 0x1000\n\tATTR_VOL_NAME                     = 0x2000\n\tATTR_VOL_OBJCOUNT                 = 0x100\n\tATTR_VOL_QUOTA_SIZE               = 0x10000000\n\tATTR_VOL_RESERVED_SIZE            = 0x20000000\n\tATTR_VOL_SETMASK                  = 0x80002000\n\tATTR_VOL_SIGNATURE                = 0x2\n\tATTR_VOL_SIZE                     = 0x4\n\tATTR_VOL_SPACEAVAIL               = 0x10\n\tATTR_VOL_SPACEFREE                = 0x8\n\tATTR_VOL_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc00c4279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETFNR                        = 0x8010427e\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tBS0                               = 0x0\n\tBS1                               = 0x8000\n\tBSDLY                             = 0x8000\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x6\n\tCLOCK_MONOTONIC_RAW               = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX        = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xc\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x10\n\tCLOCK_UPTIME_RAW                  = 0x8\n\tCLOCK_UPTIME_RAW_APPROX           = 0x9\n\tCR0                               = 0x0\n\tCR1                               = 0x1000\n\tCR2                               = 0x2000\n\tCR3                               = 0x3000\n\tCRDLY                             = 0x3000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION       = 0xa6\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0xf5\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PPP_WITH_DIRECTION            = 0xa6\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0xf\n\tEVFILT_FS                         = -0x9\n\tEVFILT_MACHPORT                   = -0x8\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0xa\n\tEVFILT_VM                         = -0xc\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_DISPATCH2                      = 0x180\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG0                          = 0x1000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_OOBAND                         = 0x2000\n\tEV_POLL                           = 0x1000\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\n\tEV_UDATA_SPECIFIC                 = 0x100\n\tEV_VANISHED                       = 0x200\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFF0                               = 0x0\n\tFF1                               = 0x4000\n\tFFDLY                             = 0x4000\n\tFLUSHO                            = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED           = 0x20\n\tFSOPT_NOFOLLOW                    = 0x1\n\tFSOPT_NOINMEMUPDATE               = 0x2\n\tFSOPT_PACK_INVAL_ATTRS            = 0x8\n\tFSOPT_REPORT_FULLSIZE             = 0x4\n\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\n\tF_ADDSIGS                         = 0x3b\n\tF_ALLOCATEALL                     = 0x4\n\tF_ALLOCATECONTIG                  = 0x2\n\tF_BARRIERFSYNC                    = 0x55\n\tF_CHECK_LV                        = 0x62\n\tF_CHKCLEAN                        = 0x29\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x43\n\tF_FINDSIGS                        = 0x4e\n\tF_FLUSH_DATA                      = 0x28\n\tF_FREEZE_FS                       = 0x35\n\tF_FULLFSYNC                       = 0x33\n\tF_GETCODEDIR                      = 0x48\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETLKPID                        = 0x42\n\tF_GETNOSIGPIPE                    = 0x4a\n\tF_GETOWN                          = 0x5\n\tF_GETPATH                         = 0x32\n\tF_GETPATH_MTMINFO                 = 0x47\n\tF_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\n\tF_GLOBAL_NOCACHE                  = 0x37\n\tF_LOG2PHYS                        = 0x31\n\tF_LOG2PHYS_EXT                    = 0x41\n\tF_NOCACHE                         = 0x30\n\tF_NODIRECT                        = 0x3e\n\tF_OK                              = 0x0\n\tF_PATHPKG_CHECK                   = 0x34\n\tF_PEOFPOSMODE                     = 0x3\n\tF_PREALLOCATE                     = 0x2a\n\tF_PUNCHHOLE                       = 0x63\n\tF_RDADVISE                        = 0x2c\n\tF_RDAHEAD                         = 0x2d\n\tF_RDLCK                           = 0x1\n\tF_SETBACKINGSTORE                 = 0x46\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETLKWTIMEOUT                   = 0xa\n\tF_SETNOSIGPIPE                    = 0x49\n\tF_SETOWN                          = 0x6\n\tF_SETPROTECTIONCLASS              = 0x40\n\tF_SETSIZE                         = 0x2b\n\tF_SINGLE_WRITER                   = 0x4c\n\tF_THAW_FS                         = 0x36\n\tF_TRANSCODEKEY                    = 0x4b\n\tF_TRIM_ACTIVE_FILE                = 0x64\n\tF_UNLCK                           = 0x2\n\tF_VOLPOSMODE                      = 0x4\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_AAL5                          = 0x31\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ATM                           = 0x25\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_CARP                          = 0xf8\n\tIFT_CELLULAR                      = 0xff\n\tIFT_CEPT                          = 0x13\n\tIFT_DS3                           = 0x1e\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0x38\n\tIFT_FDDI                          = 0xf\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_GIF                           = 0x37\n\tIFT_HDH1822                       = 0x3\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE8023ADLAG                 = 0x88\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88026                      = 0xa\n\tIFT_L2VLAN                        = 0x87\n\tIFT_LAPB                          = 0x10\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_NSIP                          = 0x1b\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PDP                           = 0xff\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PKTAP                         = 0xfe\n\tIFT_PPP                           = 0x17\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_RS232                         = 0x21\n\tIFT_SDLC                          = 0x11\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0x39\n\tIFT_T1                            = 0x12\n\tIFT_ULTRA                         = 0x1d\n\tIFT_V35                           = 0x2d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LINKLOCALNETNUM                = 0xa9fe0000\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_2292DSTOPTS                  = 0x17\n\tIPV6_2292HOPLIMIT                 = 0x14\n\tIPV6_2292HOPOPTS                  = 0x16\n\tIPV6_2292NEXTHOP                  = 0x15\n\tIPV6_2292PKTINFO                  = 0x13\n\tIPV6_2292PKTOPTIONS               = 0x19\n\tIPV6_2292RTHDR                    = 0x18\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_BOUND_IF                     = 0x7d\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\n\tIPV6_FRAGTTL                      = 0x3c\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXOPTHDR                    = 0x800\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER         = 0x200\n\tIPV6_MAX_MEMBERSHIPS              = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER          = 0x80\n\tIPV6_MIN_MEMBERSHIPS              = 0x1f\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP          = 0x46\n\tIP_BLOCK_SOURCE                   = 0x48\n\tIP_BOUND_IF                       = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP         = 0x47\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FAITH                          = 0x16\n\tIP_FW_ADD                         = 0x28\n\tIP_FW_DEL                         = 0x29\n\tIP_FW_FLUSH                       = 0x2a\n\tIP_FW_GET                         = 0x2c\n\tIP_FW_RESETLOG                    = 0x2d\n\tIP_FW_ZERO                        = 0x2b\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x15\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER           = 0x200\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER           = 0x80\n\tIP_MAX_SOCK_SRC_FILTER            = 0x80\n\tIP_MF                             = 0x2000\n\tIP_MIN_MEMBERSHIPS                = 0x1f\n\tIP_MSFILTER                       = 0x4a\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_IFINDEX              = 0x42\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_NAT__XXX                       = 0x37\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OLD_FW_ADD                     = 0x32\n\tIP_OLD_FW_DEL                     = 0x33\n\tIP_OLD_FW_FLUSH                   = 0x34\n\tIP_OLD_FW_GET                     = 0x36\n\tIP_OLD_FW_RESETLOG                = 0x38\n\tIP_OLD_FW_ZERO                    = 0x35\n\tIP_OPTIONS                        = 0x1\n\tIP_PKTINFO                        = 0x1a\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVPKTINFO                    = 0x1a\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTOS                        = 0x1b\n\tIP_RECVTTL                        = 0x18\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_STRIPHDR                       = 0x17\n\tIP_TOS                            = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND         = 0x41\n\tIP_TTL                            = 0x4\n\tIP_UNBLOCK_SOURCE                 = 0x49\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIUTF8                             = 0x4000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_CAN_REUSE                    = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_FREE_REUSABLE                = 0x7\n\tMADV_FREE_REUSE                   = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_PAGEOUT                      = 0xa\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_WILLNEED                     = 0x3\n\tMADV_ZERO_WIRED_PAGES             = 0x6\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_JIT                           = 0x800\n\tMAP_NOCACHE                       = 0x400\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_RESERVED0080                  = 0x80\n\tMAP_RESILIENT_CODESIGN            = 0x2000\n\tMAP_RESILIENT_MEDIA               = 0x4000\n\tMAP_SHARED                        = 0x1\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x400000\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_CPROTECT                      = 0x80\n\tMNT_DEFWRITE                      = 0x2000000\n\tMNT_DONTBROWSE                    = 0x100000\n\tMNT_DOVOLFS                       = 0x8000\n\tMNT_DWAIT                         = 0x4\n\tMNT_EXPORTED                      = 0x100\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE_OWNERSHIP              = 0x200000\n\tMNT_JOURNALED                     = 0x800000\n\tMNT_LOCAL                         = 0x1000\n\tMNT_MULTILABEL                    = 0x4000000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOBLOCK                       = 0x20000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOUSERXATTR                   = 0x1000000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUARANTINE                    = 0x400\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\n\tMNT_WAIT                          = 0x1\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FLUSH                         = 0x400\n\tMSG_HAVEMORE                      = 0x2000\n\tMSG_HOLD                          = 0x800\n\tMSG_NEEDSA                        = 0x10000\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_RCVMORE                       = 0x4000\n\tMSG_SEND                          = 0x1000\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITSTREAM                    = 0x200\n\tMS_ASYNC                          = 0x1\n\tMS_DEACTIVATE                     = 0x8\n\tMS_INVALIDATE                     = 0x2\n\tMS_KILLPAGES                      = 0x4\n\tMS_SYNC                           = 0x10\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_DUMP2                      = 0x7\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\n\tNET_RT_STAT                       = 0x4\n\tNET_RT_TRASH                      = 0x5\n\tNL0                               = 0x0\n\tNL1                               = 0x100\n\tNL2                               = 0x200\n\tNL3                               = 0x300\n\tNLDLY                             = 0x300\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ABSOLUTE                     = 0x8\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_BACKGROUND                   = 0x40\n\tNOTE_CHILD                        = 0x4\n\tNOTE_CRITICAL                     = 0x20\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXITSTATUS                   = 0x4000000\n\tNOTE_EXIT_CSERROR                 = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL             = 0x10000\n\tNOTE_EXIT_DETAIL                  = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK             = 0x70000\n\tNOTE_EXIT_MEMORY                  = 0x20000\n\tNOTE_EXIT_REPARENTED              = 0x80000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_FUNLOCK                      = 0x100\n\tNOTE_LEEWAY                       = 0x10\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_MACH_CONTINUOUS_TIME         = 0x80\n\tNOTE_NONE                         = 0x80\n\tNOTE_NSECONDS                     = 0x4\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = -0x100000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_REAP                         = 0x10000000\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_SECONDS                      = 0x1\n\tNOTE_SIGNAL                       = 0x8000000\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_USECONDS                     = 0x2\n\tNOTE_VM_ERROR                     = 0x10000000\n\tNOTE_VM_PRESSURE                  = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE        = 0x40000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFDEL                             = 0x20000\n\tOFILL                             = 0x80\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_ALERT                           = 0x20000000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x1000000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x100000\n\tO_DP_GETRAWENCRYPTED              = 0x1\n\tO_DP_GETRAWUNENCRYPTED            = 0x2\n\tO_DSYNC                           = 0x400000\n\tO_EVTONLY                         = 0x8000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x20000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_POPUP                           = 0x80000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYMLINK                         = 0x200000\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPT_ATTACH                         = 0xa\n\tPT_ATTACHEXC                      = 0xe\n\tPT_CONTINUE                       = 0x7\n\tPT_DENY_ATTACH                    = 0x1f\n\tPT_DETACH                         = 0xb\n\tPT_FIRSTMACH                      = 0x20\n\tPT_FORCEQUOTA                     = 0x1e\n\tPT_KILL                           = 0x8\n\tPT_READ_D                         = 0x2\n\tPT_READ_I                         = 0x1\n\tPT_READ_U                         = 0x3\n\tPT_SIGEXC                         = 0xc\n\tPT_STEP                           = 0x9\n\tPT_THUPDATE                       = 0xd\n\tPT_TRACE_ME                       = 0x0\n\tPT_WRITE_D                        = 0x5\n\tPT_WRITE_I                        = 0x4\n\tPT_WRITE_U                        = 0x6\n\tRLIMIT_AS                         = 0x5\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR          = 0x2\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x8\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONDEMNED                     = 0x2000000\n\tRTF_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_NOIFREF                       = 0x2000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_PROXY                         = 0x8000000\n\tRTF_REJECT                        = 0x8\n\tRTF_ROUTER                        = 0x10000000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_GET2                          = 0x14\n\tRTM_IFINFO                        = 0xe\n\tRTM_IFINFO2                       = 0x12\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_NEWMADDR2                     = 0x13\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCARPIPLL                       = 0xc0206928\n\tSIOCATMARK                        = 0x40047307\n\tSIOCAUTOADDR                      = 0xc0206926\n\tSIOCAUTONETMASK                   = 0x80206927\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFPHYADDR                    = 0x80206941\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETVLAN                       = 0xc020697f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALTMTU                     = 0xc0206948\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBOND                       = 0xc0206947\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020695b\n\tSIOCGIFCONF                       = 0xc00c6924\n\tSIOCGIFDEVMTU                     = 0xc0206944\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFKPI                        = 0xc0206987\n\tSIOCGIFMAC                        = 0xc0206982\n\tSIOCGIFMEDIA                      = 0xc02c6938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206940\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPSRCADDR                   = 0xc020693f\n\tSIOCGIFSTATUS                     = 0xc331693d\n\tSIOCGIFVLAN                       = 0xc020697f\n\tSIOCGIFWAKEFLAGS                  = 0xc0206988\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCIFCREATE                      = 0xc0206978\n\tSIOCIFCREATE2                     = 0xc020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106981\n\tSIOCRSLVMULTI                     = 0xc010693b\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETVLAN                       = 0x8020697e\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFALTMTU                     = 0x80206945\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBOND                       = 0x80206946\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020695a\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFKPI                        = 0x80206986\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMAC                        = 0x80206983\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x8040693e\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFVLAN                       = 0x8020697e\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_DONTTRUNC                      = 0x2000\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LABEL                          = 0x1010\n\tSO_LINGER                         = 0x80\n\tSO_LINGER_SEC                     = 0x1080\n\tSO_NETSVC_MARKING_LEVEL           = 0x1119\n\tSO_NET_SERVICE_TYPE               = 0x1116\n\tSO_NKE                            = 0x1021\n\tSO_NOADDRERR                      = 0x1023\n\tSO_NOSIGPIPE                      = 0x1022\n\tSO_NOTIFYCONFLICT                 = 0x1026\n\tSO_NP_EXTENSIONS                  = 0x1083\n\tSO_NREAD                          = 0x1020\n\tSO_NUMRCVPKT                      = 0x1112\n\tSO_NWRITE                         = 0x1024\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERLABEL                      = 0x1011\n\tSO_RANDOMPORT                     = 0x1082\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_REUSESHAREUID                  = 0x1025\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TIMESTAMP_MONOTONIC            = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_UPCALLCLOSEWAIT                = 0x1027\n\tSO_USELOOPBACK                    = 0x40\n\tSO_WANTMORE                       = 0x4000\n\tSO_WANTOOBFLAG                    = 0x8000\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB1                              = 0x400\n\tTAB2                              = 0x800\n\tTAB3                              = 0x4\n\tTABDLY                            = 0xc04\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_CONNECTIONTIMEOUT             = 0x20\n\tTCP_CONNECTION_INFO               = 0x106\n\tTCP_ENABLE_ECN                    = 0x104\n\tTCP_FASTOPEN                      = 0x105\n\tTCP_KEEPALIVE                     = 0x10\n\tTCP_KEEPCNT                       = 0x102\n\tTCP_KEEPINTVL                     = 0x101\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x4\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_NOTSENT_LOWAT                 = 0x201\n\tTCP_RXT_CONNDROPTIME              = 0x80\n\tTCP_RXT_FINDROP                   = 0x100\n\tTCP_SENDMOREACKS                  = 0x103\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCDSIMICROCODE                  = 0x20007455\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x40487413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCIXOFF                         = 0x20007480\n\tTIOCIXON                          = 0x20007481\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTYGNAME                      = 0x40807453\n\tTIOCPTYGRANT                      = 0x20007454\n\tTIOCPTYUNLK                       = 0x20007452\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCONS                         = 0x20007463\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x80487414\n\tTIOCSETAF                         = 0x80487416\n\tTIOCSETAW                         = 0x80487415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_LOADAVG                        = 0x2\n\tVM_MACHFACTOR                     = 0x4\n\tVM_MAXID                          = 0x6\n\tVM_METER                          = 0x1\n\tVM_SWAPUSAGE                      = 0x5\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVT0                               = 0x0\n\tVT1                               = 0x10000\n\tVTDLY                             = 0x10000\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x10\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x4\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x20\n\tWORDSIZE                          = 0x40\n\tWSTOPPED                          = 0x8\n\tWUNTRACED                         = 0x2\n\tXATTR_CREATE                      = 0x2\n\tXATTR_NODEFAULT                   = 0x10\n\tXATTR_NOFOLLOW                    = 0x1\n\tXATTR_NOSECURITY                  = 0x8\n\tXATTR_REPLACE                     = 0x4\n\tXATTR_SHOWCOMPRESSION             = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,darwin\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1c\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x25\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1e\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1c\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x28\n\tAF_NATM                           = 0x1f\n\tAF_NDRV                           = 0x1b\n\tAF_NETBIOS                        = 0x21\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PPP                            = 0x22\n\tAF_PUP                            = 0x4\n\tAF_RESERVED_36                    = 0x24\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_SYSTEM                         = 0x20\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\n\tALTWERASE                         = 0x200\n\tATTR_BIT_MAP_COUNT                = 0x5\n\tATTR_CMN_ACCESSMASK               = 0x20000\n\tATTR_CMN_ACCTIME                  = 0x1000\n\tATTR_CMN_ADDEDTIME                = 0x10000000\n\tATTR_CMN_BKUPTIME                 = 0x2000\n\tATTR_CMN_CHGTIME                  = 0x800\n\tATTR_CMN_CRTIME                   = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000\n\tATTR_CMN_DEVID                    = 0x2\n\tATTR_CMN_DOCUMENT_ID              = 0x100000\n\tATTR_CMN_ERROR                    = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY        = 0x400000\n\tATTR_CMN_FILEID                   = 0x2000000\n\tATTR_CMN_FLAGS                    = 0x40000\n\tATTR_CMN_FNDRINFO                 = 0x4000\n\tATTR_CMN_FSID                     = 0x4\n\tATTR_CMN_FULLPATH                 = 0x8000000\n\tATTR_CMN_GEN_COUNT                = 0x80000\n\tATTR_CMN_GRPID                    = 0x10000\n\tATTR_CMN_GRPUUID                  = 0x1000000\n\tATTR_CMN_MODTIME                  = 0x400\n\tATTR_CMN_NAME                     = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT           = 0x80000\n\tATTR_CMN_NAMEDATTRLIST            = 0x100000\n\tATTR_CMN_OBJID                    = 0x20\n\tATTR_CMN_OBJPERMANENTID           = 0x40\n\tATTR_CMN_OBJTAG                   = 0x10\n\tATTR_CMN_OBJTYPE                  = 0x8\n\tATTR_CMN_OWNERID                  = 0x8000\n\tATTR_CMN_PARENTID                 = 0x4000000\n\tATTR_CMN_PAROBJID                 = 0x80\n\tATTR_CMN_RETURNED_ATTRS           = 0x80000000\n\tATTR_CMN_SCRIPT                   = 0x100\n\tATTR_CMN_SETMASK                  = 0x41c7ff00\n\tATTR_CMN_USERACCESS               = 0x200000\n\tATTR_CMN_UUID                     = 0x800000\n\tATTR_CMN_VALIDMASK                = 0xffffffff\n\tATTR_CMN_VOLSETMASK               = 0x6700\n\tATTR_FILE_ALLOCSIZE               = 0x4\n\tATTR_FILE_CLUMPSIZE               = 0x10\n\tATTR_FILE_DATAALLOCSIZE           = 0x400\n\tATTR_FILE_DATAEXTENTS             = 0x800\n\tATTR_FILE_DATALENGTH              = 0x200\n\tATTR_FILE_DEVTYPE                 = 0x20\n\tATTR_FILE_FILETYPE                = 0x40\n\tATTR_FILE_FORKCOUNT               = 0x80\n\tATTR_FILE_FORKLIST                = 0x100\n\tATTR_FILE_IOBLOCKSIZE             = 0x8\n\tATTR_FILE_LINKCOUNT               = 0x1\n\tATTR_FILE_RSRCALLOCSIZE           = 0x2000\n\tATTR_FILE_RSRCEXTENTS             = 0x4000\n\tATTR_FILE_RSRCLENGTH              = 0x1000\n\tATTR_FILE_SETMASK                 = 0x20\n\tATTR_FILE_TOTALSIZE               = 0x2\n\tATTR_FILE_VALIDMASK               = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP          = 0x40\n\tATTR_VOL_ATTRIBUTES               = 0x40000000\n\tATTR_VOL_CAPABILITIES             = 0x20000\n\tATTR_VOL_DIRCOUNT                 = 0x400\n\tATTR_VOL_ENCODINGSUSED            = 0x10000\n\tATTR_VOL_FILECOUNT                = 0x200\n\tATTR_VOL_FSTYPE                   = 0x1\n\tATTR_VOL_INFO                     = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE              = 0x80\n\tATTR_VOL_MAXOBJCOUNT              = 0x800\n\tATTR_VOL_MINALLOCATION            = 0x20\n\tATTR_VOL_MOUNTEDDEVICE            = 0x8000\n\tATTR_VOL_MOUNTFLAGS               = 0x4000\n\tATTR_VOL_MOUNTPOINT               = 0x1000\n\tATTR_VOL_NAME                     = 0x2000\n\tATTR_VOL_OBJCOUNT                 = 0x100\n\tATTR_VOL_QUOTA_SIZE               = 0x10000000\n\tATTR_VOL_RESERVED_SIZE            = 0x20000000\n\tATTR_VOL_SETMASK                  = 0x80002000\n\tATTR_VOL_SIGNATURE                = 0x2\n\tATTR_VOL_SIZE                     = 0x4\n\tATTR_VOL_SPACEAVAIL               = 0x10\n\tATTR_VOL_SPACEFREE                = 0x8\n\tATTR_VOL_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc00c4279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETFNR                        = 0x8010427e\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tBS0                               = 0x0\n\tBS1                               = 0x8000\n\tBSDLY                             = 0x8000\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x6\n\tCLOCK_MONOTONIC_RAW               = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX        = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xc\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x10\n\tCLOCK_UPTIME_RAW                  = 0x8\n\tCLOCK_UPTIME_RAW_APPROX           = 0x9\n\tCR0                               = 0x0\n\tCR1                               = 0x1000\n\tCR2                               = 0x2000\n\tCR3                               = 0x3000\n\tCRDLY                             = 0x3000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION       = 0xa6\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0xf5\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PPP_WITH_DIRECTION            = 0xa6\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0xf\n\tEVFILT_FS                         = -0x9\n\tEVFILT_MACHPORT                   = -0x8\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0xa\n\tEVFILT_VM                         = -0xc\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_DISPATCH2                      = 0x180\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG0                          = 0x1000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_OOBAND                         = 0x2000\n\tEV_POLL                           = 0x1000\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\n\tEV_UDATA_SPECIFIC                 = 0x100\n\tEV_VANISHED                       = 0x200\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFF0                               = 0x0\n\tFF1                               = 0x4000\n\tFFDLY                             = 0x4000\n\tFLUSHO                            = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED           = 0x20\n\tFSOPT_NOFOLLOW                    = 0x1\n\tFSOPT_NOINMEMUPDATE               = 0x2\n\tFSOPT_PACK_INVAL_ATTRS            = 0x8\n\tFSOPT_REPORT_FULLSIZE             = 0x4\n\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\n\tF_ADDSIGS                         = 0x3b\n\tF_ALLOCATEALL                     = 0x4\n\tF_ALLOCATECONTIG                  = 0x2\n\tF_BARRIERFSYNC                    = 0x55\n\tF_CHECK_LV                        = 0x62\n\tF_CHKCLEAN                        = 0x29\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x43\n\tF_FINDSIGS                        = 0x4e\n\tF_FLUSH_DATA                      = 0x28\n\tF_FREEZE_FS                       = 0x35\n\tF_FULLFSYNC                       = 0x33\n\tF_GETCODEDIR                      = 0x48\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETLKPID                        = 0x42\n\tF_GETNOSIGPIPE                    = 0x4a\n\tF_GETOWN                          = 0x5\n\tF_GETPATH                         = 0x32\n\tF_GETPATH_MTMINFO                 = 0x47\n\tF_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\n\tF_GLOBAL_NOCACHE                  = 0x37\n\tF_LOG2PHYS                        = 0x31\n\tF_LOG2PHYS_EXT                    = 0x41\n\tF_NOCACHE                         = 0x30\n\tF_NODIRECT                        = 0x3e\n\tF_OK                              = 0x0\n\tF_PATHPKG_CHECK                   = 0x34\n\tF_PEOFPOSMODE                     = 0x3\n\tF_PREALLOCATE                     = 0x2a\n\tF_PUNCHHOLE                       = 0x63\n\tF_RDADVISE                        = 0x2c\n\tF_RDAHEAD                         = 0x2d\n\tF_RDLCK                           = 0x1\n\tF_SETBACKINGSTORE                 = 0x46\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETLKWTIMEOUT                   = 0xa\n\tF_SETNOSIGPIPE                    = 0x49\n\tF_SETOWN                          = 0x6\n\tF_SETPROTECTIONCLASS              = 0x40\n\tF_SETSIZE                         = 0x2b\n\tF_SINGLE_WRITER                   = 0x4c\n\tF_THAW_FS                         = 0x36\n\tF_TRANSCODEKEY                    = 0x4b\n\tF_TRIM_ACTIVE_FILE                = 0x64\n\tF_UNLCK                           = 0x2\n\tF_VOLPOSMODE                      = 0x4\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_AAL5                          = 0x31\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ATM                           = 0x25\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_CARP                          = 0xf8\n\tIFT_CELLULAR                      = 0xff\n\tIFT_CEPT                          = 0x13\n\tIFT_DS3                           = 0x1e\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0x38\n\tIFT_FDDI                          = 0xf\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_GIF                           = 0x37\n\tIFT_HDH1822                       = 0x3\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE8023ADLAG                 = 0x88\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88026                      = 0xa\n\tIFT_L2VLAN                        = 0x87\n\tIFT_LAPB                          = 0x10\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_NSIP                          = 0x1b\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PDP                           = 0xff\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PKTAP                         = 0xfe\n\tIFT_PPP                           = 0x17\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_RS232                         = 0x21\n\tIFT_SDLC                          = 0x11\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0x39\n\tIFT_T1                            = 0x12\n\tIFT_ULTRA                         = 0x1d\n\tIFT_V35                           = 0x2d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LINKLOCALNETNUM                = 0xa9fe0000\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_2292DSTOPTS                  = 0x17\n\tIPV6_2292HOPLIMIT                 = 0x14\n\tIPV6_2292HOPOPTS                  = 0x16\n\tIPV6_2292NEXTHOP                  = 0x15\n\tIPV6_2292PKTINFO                  = 0x13\n\tIPV6_2292PKTOPTIONS               = 0x19\n\tIPV6_2292RTHDR                    = 0x18\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_BOUND_IF                     = 0x7d\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\n\tIPV6_FRAGTTL                      = 0x3c\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXOPTHDR                    = 0x800\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER         = 0x200\n\tIPV6_MAX_MEMBERSHIPS              = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER          = 0x80\n\tIPV6_MIN_MEMBERSHIPS              = 0x1f\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP          = 0x46\n\tIP_BLOCK_SOURCE                   = 0x48\n\tIP_BOUND_IF                       = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP         = 0x47\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FAITH                          = 0x16\n\tIP_FW_ADD                         = 0x28\n\tIP_FW_DEL                         = 0x29\n\tIP_FW_FLUSH                       = 0x2a\n\tIP_FW_GET                         = 0x2c\n\tIP_FW_RESETLOG                    = 0x2d\n\tIP_FW_ZERO                        = 0x2b\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x15\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER           = 0x200\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER           = 0x80\n\tIP_MAX_SOCK_SRC_FILTER            = 0x80\n\tIP_MF                             = 0x2000\n\tIP_MIN_MEMBERSHIPS                = 0x1f\n\tIP_MSFILTER                       = 0x4a\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_IFINDEX              = 0x42\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_NAT__XXX                       = 0x37\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OLD_FW_ADD                     = 0x32\n\tIP_OLD_FW_DEL                     = 0x33\n\tIP_OLD_FW_FLUSH                   = 0x34\n\tIP_OLD_FW_GET                     = 0x36\n\tIP_OLD_FW_RESETLOG                = 0x38\n\tIP_OLD_FW_ZERO                    = 0x35\n\tIP_OPTIONS                        = 0x1\n\tIP_PKTINFO                        = 0x1a\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVPKTINFO                    = 0x1a\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTOS                        = 0x1b\n\tIP_RECVTTL                        = 0x18\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_STRIPHDR                       = 0x17\n\tIP_TOS                            = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND         = 0x41\n\tIP_TTL                            = 0x4\n\tIP_UNBLOCK_SOURCE                 = 0x49\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIUTF8                             = 0x4000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_CAN_REUSE                    = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_FREE_REUSABLE                = 0x7\n\tMADV_FREE_REUSE                   = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_PAGEOUT                      = 0xa\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_WILLNEED                     = 0x3\n\tMADV_ZERO_WIRED_PAGES             = 0x6\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_JIT                           = 0x800\n\tMAP_NOCACHE                       = 0x400\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_RESERVED0080                  = 0x80\n\tMAP_RESILIENT_CODESIGN            = 0x2000\n\tMAP_RESILIENT_MEDIA               = 0x4000\n\tMAP_SHARED                        = 0x1\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x400000\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_CPROTECT                      = 0x80\n\tMNT_DEFWRITE                      = 0x2000000\n\tMNT_DONTBROWSE                    = 0x100000\n\tMNT_DOVOLFS                       = 0x8000\n\tMNT_DWAIT                         = 0x4\n\tMNT_EXPORTED                      = 0x100\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE_OWNERSHIP              = 0x200000\n\tMNT_JOURNALED                     = 0x800000\n\tMNT_LOCAL                         = 0x1000\n\tMNT_MULTILABEL                    = 0x4000000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOBLOCK                       = 0x20000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOUSERXATTR                   = 0x1000000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUARANTINE                    = 0x400\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\n\tMNT_WAIT                          = 0x1\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FLUSH                         = 0x400\n\tMSG_HAVEMORE                      = 0x2000\n\tMSG_HOLD                          = 0x800\n\tMSG_NEEDSA                        = 0x10000\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_RCVMORE                       = 0x4000\n\tMSG_SEND                          = 0x1000\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITSTREAM                    = 0x200\n\tMS_ASYNC                          = 0x1\n\tMS_DEACTIVATE                     = 0x8\n\tMS_INVALIDATE                     = 0x2\n\tMS_KILLPAGES                      = 0x4\n\tMS_SYNC                           = 0x10\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_DUMP2                      = 0x7\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\n\tNET_RT_STAT                       = 0x4\n\tNET_RT_TRASH                      = 0x5\n\tNL0                               = 0x0\n\tNL1                               = 0x100\n\tNL2                               = 0x200\n\tNL3                               = 0x300\n\tNLDLY                             = 0x300\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ABSOLUTE                     = 0x8\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_BACKGROUND                   = 0x40\n\tNOTE_CHILD                        = 0x4\n\tNOTE_CRITICAL                     = 0x20\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXITSTATUS                   = 0x4000000\n\tNOTE_EXIT_CSERROR                 = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL             = 0x10000\n\tNOTE_EXIT_DETAIL                  = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK             = 0x70000\n\tNOTE_EXIT_MEMORY                  = 0x20000\n\tNOTE_EXIT_REPARENTED              = 0x80000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_FUNLOCK                      = 0x100\n\tNOTE_LEEWAY                       = 0x10\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_MACH_CONTINUOUS_TIME         = 0x80\n\tNOTE_NONE                         = 0x80\n\tNOTE_NSECONDS                     = 0x4\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = -0x100000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_REAP                         = 0x10000000\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_SECONDS                      = 0x1\n\tNOTE_SIGNAL                       = 0x8000000\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_USECONDS                     = 0x2\n\tNOTE_VM_ERROR                     = 0x10000000\n\tNOTE_VM_PRESSURE                  = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE        = 0x40000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFDEL                             = 0x20000\n\tOFILL                             = 0x80\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_ALERT                           = 0x20000000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x1000000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x100000\n\tO_DP_GETRAWENCRYPTED              = 0x1\n\tO_DP_GETRAWUNENCRYPTED            = 0x2\n\tO_DSYNC                           = 0x400000\n\tO_EVTONLY                         = 0x8000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x20000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_POPUP                           = 0x80000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYMLINK                         = 0x200000\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPT_ATTACH                         = 0xa\n\tPT_ATTACHEXC                      = 0xe\n\tPT_CONTINUE                       = 0x7\n\tPT_DENY_ATTACH                    = 0x1f\n\tPT_DETACH                         = 0xb\n\tPT_FIRSTMACH                      = 0x20\n\tPT_FORCEQUOTA                     = 0x1e\n\tPT_KILL                           = 0x8\n\tPT_READ_D                         = 0x2\n\tPT_READ_I                         = 0x1\n\tPT_READ_U                         = 0x3\n\tPT_SIGEXC                         = 0xc\n\tPT_STEP                           = 0x9\n\tPT_THUPDATE                       = 0xd\n\tPT_TRACE_ME                       = 0x0\n\tPT_WRITE_D                        = 0x5\n\tPT_WRITE_I                        = 0x4\n\tPT_WRITE_U                        = 0x6\n\tRLIMIT_AS                         = 0x5\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR          = 0x2\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x8\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONDEMNED                     = 0x2000000\n\tRTF_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_NOIFREF                       = 0x2000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_PROXY                         = 0x8000000\n\tRTF_REJECT                        = 0x8\n\tRTF_ROUTER                        = 0x10000000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_GET2                          = 0x14\n\tRTM_IFINFO                        = 0xe\n\tRTM_IFINFO2                       = 0x12\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_NEWMADDR2                     = 0x13\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCARPIPLL                       = 0xc0206928\n\tSIOCATMARK                        = 0x40047307\n\tSIOCAUTOADDR                      = 0xc0206926\n\tSIOCAUTONETMASK                   = 0x80206927\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFPHYADDR                    = 0x80206941\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETVLAN                       = 0xc020697f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALTMTU                     = 0xc0206948\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBOND                       = 0xc0206947\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020695b\n\tSIOCGIFCONF                       = 0xc00c6924\n\tSIOCGIFDEVMTU                     = 0xc0206944\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFKPI                        = 0xc0206987\n\tSIOCGIFMAC                        = 0xc0206982\n\tSIOCGIFMEDIA                      = 0xc02c6938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206940\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPSRCADDR                   = 0xc020693f\n\tSIOCGIFSTATUS                     = 0xc331693d\n\tSIOCGIFVLAN                       = 0xc020697f\n\tSIOCGIFWAKEFLAGS                  = 0xc0206988\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCIFCREATE                      = 0xc0206978\n\tSIOCIFCREATE2                     = 0xc020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106981\n\tSIOCRSLVMULTI                     = 0xc010693b\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETVLAN                       = 0x8020697e\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFALTMTU                     = 0x80206945\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBOND                       = 0x80206946\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020695a\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFKPI                        = 0x80206986\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMAC                        = 0x80206983\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x8040693e\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFVLAN                       = 0x8020697e\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_DONTTRUNC                      = 0x2000\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LABEL                          = 0x1010\n\tSO_LINGER                         = 0x80\n\tSO_LINGER_SEC                     = 0x1080\n\tSO_NETSVC_MARKING_LEVEL           = 0x1119\n\tSO_NET_SERVICE_TYPE               = 0x1116\n\tSO_NKE                            = 0x1021\n\tSO_NOADDRERR                      = 0x1023\n\tSO_NOSIGPIPE                      = 0x1022\n\tSO_NOTIFYCONFLICT                 = 0x1026\n\tSO_NP_EXTENSIONS                  = 0x1083\n\tSO_NREAD                          = 0x1020\n\tSO_NUMRCVPKT                      = 0x1112\n\tSO_NWRITE                         = 0x1024\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERLABEL                      = 0x1011\n\tSO_RANDOMPORT                     = 0x1082\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_REUSESHAREUID                  = 0x1025\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TIMESTAMP_MONOTONIC            = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_UPCALLCLOSEWAIT                = 0x1027\n\tSO_USELOOPBACK                    = 0x40\n\tSO_WANTMORE                       = 0x4000\n\tSO_WANTOOBFLAG                    = 0x8000\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB1                              = 0x400\n\tTAB2                              = 0x800\n\tTAB3                              = 0x4\n\tTABDLY                            = 0xc04\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_CONNECTIONTIMEOUT             = 0x20\n\tTCP_CONNECTION_INFO               = 0x106\n\tTCP_ENABLE_ECN                    = 0x104\n\tTCP_FASTOPEN                      = 0x105\n\tTCP_KEEPALIVE                     = 0x10\n\tTCP_KEEPCNT                       = 0x102\n\tTCP_KEEPINTVL                     = 0x101\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x4\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_NOTSENT_LOWAT                 = 0x201\n\tTCP_RXT_CONNDROPTIME              = 0x80\n\tTCP_RXT_FINDROP                   = 0x100\n\tTCP_SENDMOREACKS                  = 0x103\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCDSIMICROCODE                  = 0x20007455\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x40487413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCIXOFF                         = 0x20007480\n\tTIOCIXON                          = 0x20007481\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTYGNAME                      = 0x40807453\n\tTIOCPTYGRANT                      = 0x20007454\n\tTIOCPTYUNLK                       = 0x20007452\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCONS                         = 0x20007463\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x80487414\n\tTIOCSETAF                         = 0x80487416\n\tTIOCSETAW                         = 0x80487415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_LOADAVG                        = 0x2\n\tVM_MACHFACTOR                     = 0x4\n\tVM_MAXID                          = 0x6\n\tVM_METER                          = 0x1\n\tVM_SWAPUSAGE                      = 0x5\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVT0                               = 0x0\n\tVT1                               = 0x10000\n\tVTDLY                             = 0x10000\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x10\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x4\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x20\n\tWORDSIZE                          = 0x40\n\tWSTOPPED                          = 0x8\n\tWUNTRACED                         = 0x2\n\tXATTR_CREATE                      = 0x2\n\tXATTR_NODEFAULT                   = 0x10\n\tXATTR_NOFOLLOW                    = 0x1\n\tXATTR_NOSECURITY                  = 0x8\n\tXATTR_REPLACE                     = 0x4\n\tXATTR_SHOWCOMPRESSION             = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,dragonfly\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ATM                            = 0x1e\n\tAF_BLUETOOTH                      = 0x21\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x23\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1c\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x22\n\tAF_NATM                           = 0x1d\n\tAF_NETBIOS                        = 0x6\n\tAF_NETGRAPH                       = 0x20\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x2000427a\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x8010427b\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DEFAULTBUFSIZE                = 0x1000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MAX_CLONES                    = 0x80\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x4\n\tCLOCK_MONOTONIC_FAST              = 0xc\n\tCLOCK_MONOTONIC_PRECISE           = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xf\n\tCLOCK_PROF                        = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_REALTIME_FAST               = 0xa\n\tCLOCK_REALTIME_PRECISE            = 0x9\n\tCLOCK_SECOND                      = 0xd\n\tCLOCK_THREAD_CPUTIME_ID           = 0xe\n\tCLOCK_UPTIME                      = 0x5\n\tCLOCK_UPTIME_FAST                 = 0x8\n\tCLOCK_UPTIME_PRECISE              = 0x7\n\tCLOCK_VIRTUAL                     = 0x1\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DBF                            = 0xf\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0x8\n\tEVFILT_FS                         = -0xa\n\tEVFILT_MARKER                     = 0xf\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xa\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0x9\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTEXIT_LWP                       = 0x10000\n\tEXTEXIT_PROC                      = 0x0\n\tEXTEXIT_SETINT                    = 0x1\n\tEXTEXIT_SIMPLE                    = 0x0\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUP2FD                          = 0xa\n\tF_DUP2FD_CLOEXEC                  = 0x12\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x11\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x118e72\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MONITOR                       = 0x40000\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NPOLLING                      = 0x100000\n\tIFF_OACTIVE                       = 0x400\n\tIFF_OACTIVE_COMPAT                = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_POLLING                       = 0x10000\n\tIFF_POLLING_COMPAT                = 0x10000\n\tIFF_PPROMISC                      = 0x20000\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_SMART                         = 0x20\n\tIFF_STATICARP                     = 0x80000\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xf3\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SKIP                      = 0x39\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TLSP                      = 0x38\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UNKNOWN                   = 0x102\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHLIM                      = 0x28\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MSFILTER                     = 0x4a\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PKTOPTIONS                   = 0x34\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_PREFER_TEMPADDR              = 0x3f\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FAITH                          = 0x16\n\tIP_FW_ADD                         = 0x32\n\tIP_FW_DEL                         = 0x33\n\tIP_FW_FLUSH                       = 0x34\n\tIP_FW_GET                         = 0x36\n\tIP_FW_RESETLOG                    = 0x37\n\tIP_FW_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x15\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x42\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x41\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_AUTOSYNC                     = 0x7\n\tMADV_CONTROL_END                  = 0xb\n\tMADV_CONTROL_START                = 0xa\n\tMADV_CORE                         = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_INVAL                        = 0xa\n\tMADV_NOCORE                       = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_NOSYNC                       = 0x6\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SETMAP                       = 0xb\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_NOCORE                        = 0x20000\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_NOSYNC                        = 0x800\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_SIZEALIGN                     = 0x40000\n\tMAP_STACK                         = 0x400\n\tMAP_TRYFIXED                      = 0x10000\n\tMAP_VPAGETABLE                    = 0x2000\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x20\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x20000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE                        = 0x800000\n\tMNT_LAZY                          = 0x4\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOCLUSTERR                    = 0x40000000\n\tMNT_NOCLUSTERW                    = 0x80000000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOSYMFOLLOW                   = 0x400000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x200000\n\tMNT_SUIDDIR                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_TRIM                          = 0x1000000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_USER                          = 0x8000\n\tMNT_VISFLAGMASK                   = 0xf1f0ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_CMSG_CLOEXEC                  = 0x1000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FBLOCKING                     = 0x10000\n\tMSG_FMASK                         = 0xffff0000\n\tMSG_FNONBLOCKING                  = 0x20000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_SYNC                          = 0x800\n\tMSG_TRUNC                         = 0x10\n\tMSG_UNUSED09                      = 0x200\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x0\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x4\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x20000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x10000\n\tO_DIRECTORY                       = 0x8000000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FAPPEND                         = 0x100000\n\tO_FASYNCWRITE                     = 0x800000\n\tO_FBLOCKING                       = 0x40000\n\tO_FMASK                           = 0xfc0000\n\tO_FNONBLOCKING                    = 0x80000\n\tO_FOFFSET                         = 0x200000\n\tO_FSYNC                           = 0x80\n\tO_FSYNCWRITE                      = 0x400000\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0xb\n\tRTAX_MPLS1                        = 0x8\n\tRTAX_MPLS2                        = 0x9\n\tRTAX_MPLS3                        = 0xa\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_MPLS1                         = 0x100\n\tRTA_MPLS2                         = 0x200\n\tRTA_MPLS3                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPLSOPS                       = 0x1000000\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x12\n\tRTM_IFANNOUNCE                    = 0x11\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x6\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_IWCAPSEGS                     = 0x400\n\tRTV_IWMAXSEGS                     = 0x200\n\tRTV_MSL                           = 0x100\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCADDRT                         = 0x8040720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDELRT                         = 0x8040720b\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020691f\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc0206926\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFINDEX                      = 0xc0206920\n\tSIOCGIFMEDIA                      = 0xc0306938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPOLLCPU                    = 0xc020697e\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFSTATUS                     = 0xc331693b\n\tSIOCGIFTSOLEN                     = 0xc0206980\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPRIVATE_0                    = 0xc0206950\n\tSIOCGPRIVATE_1                    = 0xc0206951\n\tSIOCIFCREATE                      = 0xc020697a\n\tSIOCIFCREATE2                     = 0xc020697c\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020691e\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNAME                       = 0x80206928\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFPOLLCPU                    = 0x8020697d\n\tSIOCSIFTSOLEN                     = 0x8020697f\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_CPUHINT                        = 0x1030\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDSPACE                       = 0x100a\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDB                            = 0x9000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_FASTKEEP                      = 0x80\n\tTCP_KEEPCNT                       = 0x400\n\tTCP_KEEPIDLE                      = 0x100\n\tTCP_KEEPINIT                      = 0x20\n\tTCP_KEEPINTVL                     = 0x200\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0x100\n\tTCP_MIN_WINSHIFT                  = 0x5\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_SIGNATURE_ENABLE              = 0x10\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCISPTMASTER                    = 0x20007455\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVCHECKPT                          = 0x13\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVERASE2                           = 0x7\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_BCACHE_SIZE_MAX                = 0x0\n\tVM_SWZONE_SIZE_MAX                = 0x4000000000\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x4\n\tWCOREFLAG                         = 0x80\n\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEASYNC          = syscall.Errno(0x63)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x63)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEDIUM       = syscall.Errno(0x5d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNUSED94       = syscall.Errno(0x5e)\n\tEUNUSED95       = syscall.Errno(0x5f)\n\tEUNUSED96       = syscall.Errno(0x60)\n\tEUNUSED97       = syscall.Errno(0x61)\n\tEUNUSED98       = syscall.Errno(0x62)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCKPT     = syscall.Signal(0x21)\n\tSIGCKPTEXIT = syscall.Signal(0x22)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINFO     = syscall.Signal(0x1d)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPROF     = syscall.Signal(0x1b)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTHR      = syscall.Signal(0x20)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVTALRM   = syscall.Signal(0x1a)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOMEDIUM\", \"no medium found\"},\n\t{94, \"EUNUSED94\", \"unknown error: 94\"},\n\t{95, \"EUNUSED95\", \"unknown error: 95\"},\n\t{96, \"EUNUSED96\", \"unknown error: 96\"},\n\t{97, \"EUNUSED97\", \"unknown error: 97\"},\n\t{98, \"EUNUSED98\", \"unknown error: 98\"},\n\t{99, \"ELAST\", \"unknown error: 99\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread Scheduler\"},\n\t{33, \"SIGCKPT\", \"checkPoint\"},\n\t{34, \"SIGCKPTEXIT\", \"checkPointExit\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,freebsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4008426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8008426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_HHDLC                      = 0x79\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB                       = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LOOP                       = 0x6c\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x104\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NULL                       = 0x0\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0x10\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xf\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xc\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SEP                    = 0x21\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MIN_MEMBERSHIPS           = 0x1f\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MAX_SOURCE_FILTER           = 0x400\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MIN_MEMBERSHIPS             = 0x1f\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0x2d8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VISFLAGMASK                = 0x3fef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_CACHING_CONTEXT             = 0x1\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_NORTREF                     = 0x2\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40087459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,freebsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_HHDLC                      = 0x79\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB                       = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LOOP                       = 0x6c\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x104\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NULL                       = 0x0\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0x10\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xf\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xc\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SEP                    = 0x21\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MIN_MEMBERSHIPS           = 0x1f\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MAX_SOURCE_FILTER           = 0x400\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MIN_MEMBERSHIPS             = 0x1f\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0x2d8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VISFLAGMASK                = 0x3fef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_CACHING_CONTEXT             = 0x1\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_NORTREF                     = 0x2\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,freebsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB                       = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LOOP                       = 0x6c\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x109\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NULL                       = 0x0\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xc\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SEP                    = 0x21\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MIN_MEMBERSHIPS           = 0x1f\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MAX_SOURCE_FILTER           = 0x400\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MIN_MEMBERSHIPS             = 0x1f\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0x2d8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VISFLAGMASK                = 0x3fef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_CACHING_CONTEXT             = 0x1\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_NORTREF                     = 0x2\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_386.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x80041270\n\tBLKBSZSET                            = 0x40041271\n\tBLKFLSBUF                            = 0x1261\n\tBLKFRAGET                            = 0x1265\n\tBLKFRASET                            = 0x1264\n\tBLKGETSIZE                           = 0x1260\n\tBLKGETSIZE64                         = 0x80041272\n\tBLKPBSZGET                           = 0x127b\n\tBLKRAGET                             = 0x1263\n\tBLKRASET                             = 0x1262\n\tBLKROGET                             = 0x125e\n\tBLKROSET                             = 0x125d\n\tBLKRRPART                            = 0x125f\n\tBLKSECTGET                           = 0x1267\n\tBLKSECTSET                           = 0x1266\n\tBLKSSZGET                            = 0x1268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x1000\n\tFP_XSTATE_MAGIC2                     = 0x46505845\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0xc\n\tF_GETLK64                            = 0xc\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0xd\n\tF_SETLK64                            = 0xd\n\tF_SETLKW                             = 0xe\n\tF_SETLKW64                           = 0xe\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x8000\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x7b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_32BIT                            = 0x40\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x2000\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x4000\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_SYNC                             = 0x80000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x4000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x8000\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x2401\n\tPERF_EVENT_IOC_ENABLE                = 0x2400\n\tPERF_EVENT_IOC_ID                    = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409\n\tPERF_EVENT_IOC_PERIOD                = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH               = 0x2402\n\tPERF_EVENT_IOC_RESET                 = 0x2403\n\tPERF_EVENT_IOC_SET_BPF               = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x2405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x4004743d\n\tPPPIOCATTCHAN                        = 0x40047438\n\tPPPIOCCONNECT                        = 0x4004743a\n\tPPPIOCDETACH                         = 0x4004743c\n\tPPPIOCDISCONN                        = 0x7439\n\tPPPIOCGASYNCMAP                      = 0x80047458\n\tPPPIOCGCHAN                          = 0x80047437\n\tPPPIOCGDEBUG                         = 0x80047441\n\tPPPIOCGFLAGS                         = 0x8004745a\n\tPPPIOCGIDLE                          = 0x8008743f\n\tPPPIOCGL2TPSTATS                     = 0x80487436\n\tPPPIOCGMRU                           = 0x80047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x80047455\n\tPPPIOCGUNIT                          = 0x80047456\n\tPPPIOCGXASYNCMAP                     = 0x80207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x40087446\n\tPPPIOCSASYNCMAP                      = 0x40047457\n\tPPPIOCSCOMPRESS                      = 0x400c744d\n\tPPPIOCSDEBUG                         = 0x40047440\n\tPPPIOCSFLAGS                         = 0x40047459\n\tPPPIOCSMAXCID                        = 0x40047451\n\tPPPIOCSMRRU                          = 0x4004743b\n\tPPPIOCSMRU                           = 0x40047452\n\tPPPIOCSNPMODE                        = 0x4008744b\n\tPPPIOCSPASS                          = 0x40087447\n\tPPPIOCSRASYNCMAP                     = 0x40047454\n\tPPPIOCSXASYNCMAP                     = 0x4020744f\n\tPPPIOCXFERUNIT                       = 0x744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETFPXREGS                    = 0x12\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_THREAD_AREA               = 0x19\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETFPXREGS                    = 0x13\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SET_THREAD_AREA               = 0x1a\n\tPTRACE_SINGLEBLOCK                   = 0x21\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_SYSEMU                        = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP             = 0x20\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x7002\n\tRTC_AIE_ON                           = 0x7001\n\tRTC_ALM_READ                         = 0x80247008\n\tRTC_ALM_SET                          = 0x40247007\n\tRTC_EPOCH_READ                       = 0x8004700d\n\tRTC_EPOCH_SET                        = 0x4004700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x8004700b\n\tRTC_IRQP_SET                         = 0x4004700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x7006\n\tRTC_PIE_ON                           = 0x7005\n\tRTC_PLL_GET                          = 0x801c7011\n\tRTC_PLL_SET                          = 0x401c7012\n\tRTC_RD_TIME                          = 0x80247009\n\tRTC_SET_TIME                         = 0x4024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x7004\n\tRTC_UIE_ON                           = 0x7003\n\tRTC_VL_CLR                           = 0x7014\n\tRTC_VL_READ                          = 0x80047013\n\tRTC_WIE_OFF                          = 0x7010\n\tRTC_WIE_ON                           = 0x700f\n\tRTC_WKALM_RD                         = 0x80287010\n\tRTC_WKALM_SET                        = 0x4028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x541b\n\tSIOCOUTQ                             = 0x5411\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x10\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x11\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x12\n\tSO_RCVTIMEO                          = 0x14\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x13\n\tSO_SNDTIMEO                          = 0x15\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x540b\n\tTCGETA                               = 0x5405\n\tTCGETS                               = 0x5401\n\tTCGETS2                              = 0x802c542a\n\tTCGETX                               = 0x5432\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x5409\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x5406\n\tTCSETAF                              = 0x5408\n\tTCSETAW                              = 0x5407\n\tTCSETS                               = 0x5402\n\tTCSETS2                              = 0x402c542b\n\tTCSETSF                              = 0x5404\n\tTCSETSF2                             = 0x402c542d\n\tTCSETSW                              = 0x5403\n\tTCSETSW2                             = 0x402c542c\n\tTCSETX                               = 0x5433\n\tTCSETXF                              = 0x5434\n\tTCSETXW                              = 0x5435\n\tTCXONC                               = 0x540a\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x80045432\n\tTIOCGETD                             = 0x5424\n\tTIOCGEXCL                            = 0x80045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGPGRP                            = 0x540f\n\tTIOCGPKT                             = 0x80045438\n\tTIOCGPTLCK                           = 0x80045439\n\tTIOCGPTN                             = 0x80045430\n\tTIOCGPTPEER                          = 0x5441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x5413\n\tTIOCINQ                              = 0x541b\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x5411\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x5423\n\tTIOCSIG                              = 0x40045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSPGRP                            = 0x5410\n\tTIOCSPTLCK                           = 0x40045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTI                              = 0x5412\n\tTIOCSWINSZ                           = 0x5414\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x100\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x400854d5\n\tTUNDETACHFILTER                      = 0x400854d6\n\tTUNGETFEATURES                       = 0x800454cf\n\tTUNGETFILTER                         = 0x800854db\n\tTUNGETIFF                            = 0x800454d2\n\tTUNGETSNDBUF                         = 0x800454d3\n\tTUNGETVNETBE                         = 0x800454df\n\tTUNGETVNETHDRSZ                      = 0x800454d7\n\tTUNGETVNETLE                         = 0x800454dd\n\tTUNSETDEBUG                          = 0x400454c9\n\tTUNSETFILTEREBPF                     = 0x800454e1\n\tTUNSETGROUP                          = 0x400454ce\n\tTUNSETIFF                            = 0x400454ca\n\tTUNSETIFINDEX                        = 0x400454da\n\tTUNSETLINK                           = 0x400454cd\n\tTUNSETNOCSUM                         = 0x400454c8\n\tTUNSETOFFLOAD                        = 0x400454d0\n\tTUNSETOWNER                          = 0x400454cc\n\tTUNSETPERSIST                        = 0x400454cb\n\tTUNSETQUEUE                          = 0x400454d9\n\tTUNSETSNDBUF                         = 0x400454d4\n\tTUNSETSTEERINGEBPF                   = 0x800454e0\n\tTUNSETTXFILTER                       = 0x400454d1\n\tTUNSETVNETBE                         = 0x400454de\n\tTUNSETVNETHDRSZ                      = 0x400454d8\n\tTUNSETVNETLE                         = 0x400454dc\n\tUBI_IOCATT                           = 0x40186f40\n\tUBI_IOCDET                           = 0x40046f41\n\tUBI_IOCEBCH                          = 0x40044f02\n\tUBI_IOCEBER                          = 0x40044f01\n\tUBI_IOCEBISMAP                       = 0x80044f05\n\tUBI_IOCEBMAP                         = 0x40084f03\n\tUBI_IOCEBUNMAP                       = 0x40044f04\n\tUBI_IOCMKVOL                         = 0x40986f00\n\tUBI_IOCRMVOL                         = 0x40046f01\n\tUBI_IOCRNVOL                         = 0x51106f03\n\tUBI_IOCRSVOL                         = 0x400c6f02\n\tUBI_IOCSETVOLPROP                    = 0x40104f06\n\tUBI_IOCVOLCRBLK                      = 0x40804f07\n\tUBI_IOCVOLRMBLK                      = 0x4f08\n\tUBI_IOCVOLUP                         = 0x40084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0xb\n\tVEOL2                                = 0x10\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x6\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x80045702\n\tWDIOC_GETPRETIMEOUT                  = 0x80045709\n\tWDIOC_GETSTATUS                      = 0x80045701\n\tWDIOC_GETSUPPORT                     = 0x80285700\n\tWDIOC_GETTEMP                        = 0x80045703\n\tWDIOC_GETTIMELEFT                    = 0x8004570a\n\tWDIOC_GETTIMEOUT                     = 0x80045707\n\tWDIOC_KEEPALIVE                      = 0x80045705\n\tWDIOC_SETOPTIONS                     = 0x80045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x20\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tX86_FXSR_MAGIC                       = 0x0\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x80081270\n\tBLKBSZSET                            = 0x40081271\n\tBLKFLSBUF                            = 0x1261\n\tBLKFRAGET                            = 0x1265\n\tBLKFRASET                            = 0x1264\n\tBLKGETSIZE                           = 0x1260\n\tBLKGETSIZE64                         = 0x80081272\n\tBLKPBSZGET                           = 0x127b\n\tBLKRAGET                             = 0x1263\n\tBLKRASET                             = 0x1262\n\tBLKROGET                             = 0x125e\n\tBLKROSET                             = 0x125d\n\tBLKRRPART                            = 0x125f\n\tBLKSECTGET                           = 0x1267\n\tBLKSECTSET                           = 0x1266\n\tBLKSSZGET                            = 0x1268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x1000\n\tFP_XSTATE_MAGIC2                     = 0x46505845\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x5\n\tF_GETLK64                            = 0x5\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0x6\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0x7\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x8000\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x7b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_32BIT                            = 0x40\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x2000\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x4000\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_SYNC                             = 0x80000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x4000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x2401\n\tPERF_EVENT_IOC_ENABLE                = 0x2400\n\tPERF_EVENT_IOC_ID                    = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409\n\tPERF_EVENT_IOC_PERIOD                = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x2402\n\tPERF_EVENT_IOC_RESET                 = 0x2403\n\tPERF_EVENT_IOC_SET_BPF               = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x2405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x4004743d\n\tPPPIOCATTCHAN                        = 0x40047438\n\tPPPIOCCONNECT                        = 0x4004743a\n\tPPPIOCDETACH                         = 0x4004743c\n\tPPPIOCDISCONN                        = 0x7439\n\tPPPIOCGASYNCMAP                      = 0x80047458\n\tPPPIOCGCHAN                          = 0x80047437\n\tPPPIOCGDEBUG                         = 0x80047441\n\tPPPIOCGFLAGS                         = 0x8004745a\n\tPPPIOCGIDLE                          = 0x8010743f\n\tPPPIOCGL2TPSTATS                     = 0x80487436\n\tPPPIOCGMRU                           = 0x80047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x80047455\n\tPPPIOCGUNIT                          = 0x80047456\n\tPPPIOCGXASYNCMAP                     = 0x80207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x40107446\n\tPPPIOCSASYNCMAP                      = 0x40047457\n\tPPPIOCSCOMPRESS                      = 0x4010744d\n\tPPPIOCSDEBUG                         = 0x40047440\n\tPPPIOCSFLAGS                         = 0x40047459\n\tPPPIOCSMAXCID                        = 0x40047451\n\tPPPIOCSMRRU                          = 0x4004743b\n\tPPPIOCSMRU                           = 0x40047452\n\tPPPIOCSNPMODE                        = 0x4008744b\n\tPPPIOCSPASS                          = 0x40107447\n\tPPPIOCSRASYNCMAP                     = 0x40047454\n\tPPPIOCSXASYNCMAP                     = 0x4020744f\n\tPPPIOCXFERUNIT                       = 0x744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ARCH_PRCTL                    = 0x1e\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETFPXREGS                    = 0x12\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_THREAD_AREA               = 0x19\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETFPXREGS                    = 0x13\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SET_THREAD_AREA               = 0x1a\n\tPTRACE_SINGLEBLOCK                   = 0x21\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_SYSEMU                        = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP             = 0x20\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x7002\n\tRTC_AIE_ON                           = 0x7001\n\tRTC_ALM_READ                         = 0x80247008\n\tRTC_ALM_SET                          = 0x40247007\n\tRTC_EPOCH_READ                       = 0x8008700d\n\tRTC_EPOCH_SET                        = 0x4008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x8008700b\n\tRTC_IRQP_SET                         = 0x4008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x7006\n\tRTC_PIE_ON                           = 0x7005\n\tRTC_PLL_GET                          = 0x80207011\n\tRTC_PLL_SET                          = 0x40207012\n\tRTC_RD_TIME                          = 0x80247009\n\tRTC_SET_TIME                         = 0x4024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x7004\n\tRTC_UIE_ON                           = 0x7003\n\tRTC_VL_CLR                           = 0x7014\n\tRTC_VL_READ                          = 0x80047013\n\tRTC_WIE_OFF                          = 0x7010\n\tRTC_WIE_ON                           = 0x700f\n\tRTC_WKALM_RD                         = 0x80287010\n\tRTC_WKALM_SET                        = 0x4028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x541b\n\tSIOCOUTQ                             = 0x5411\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x10\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x11\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x12\n\tSO_RCVTIMEO                          = 0x14\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x13\n\tSO_SNDTIMEO                          = 0x15\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x540b\n\tTCGETA                               = 0x5405\n\tTCGETS                               = 0x5401\n\tTCGETS2                              = 0x802c542a\n\tTCGETX                               = 0x5432\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x5409\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x5406\n\tTCSETAF                              = 0x5408\n\tTCSETAW                              = 0x5407\n\tTCSETS                               = 0x5402\n\tTCSETS2                              = 0x402c542b\n\tTCSETSF                              = 0x5404\n\tTCSETSF2                             = 0x402c542d\n\tTCSETSW                              = 0x5403\n\tTCSETSW2                             = 0x402c542c\n\tTCSETX                               = 0x5433\n\tTCSETXF                              = 0x5434\n\tTCSETXW                              = 0x5435\n\tTCXONC                               = 0x540a\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x80045432\n\tTIOCGETD                             = 0x5424\n\tTIOCGEXCL                            = 0x80045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGPGRP                            = 0x540f\n\tTIOCGPKT                             = 0x80045438\n\tTIOCGPTLCK                           = 0x80045439\n\tTIOCGPTN                             = 0x80045430\n\tTIOCGPTPEER                          = 0x5441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x5413\n\tTIOCINQ                              = 0x541b\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x5411\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x5423\n\tTIOCSIG                              = 0x40045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSPGRP                            = 0x5410\n\tTIOCSPTLCK                           = 0x40045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTI                              = 0x5412\n\tTIOCSWINSZ                           = 0x5414\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x100\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x401054d5\n\tTUNDETACHFILTER                      = 0x401054d6\n\tTUNGETFEATURES                       = 0x800454cf\n\tTUNGETFILTER                         = 0x801054db\n\tTUNGETIFF                            = 0x800454d2\n\tTUNGETSNDBUF                         = 0x800454d3\n\tTUNGETVNETBE                         = 0x800454df\n\tTUNGETVNETHDRSZ                      = 0x800454d7\n\tTUNGETVNETLE                         = 0x800454dd\n\tTUNSETDEBUG                          = 0x400454c9\n\tTUNSETFILTEREBPF                     = 0x800454e1\n\tTUNSETGROUP                          = 0x400454ce\n\tTUNSETIFF                            = 0x400454ca\n\tTUNSETIFINDEX                        = 0x400454da\n\tTUNSETLINK                           = 0x400454cd\n\tTUNSETNOCSUM                         = 0x400454c8\n\tTUNSETOFFLOAD                        = 0x400454d0\n\tTUNSETOWNER                          = 0x400454cc\n\tTUNSETPERSIST                        = 0x400454cb\n\tTUNSETQUEUE                          = 0x400454d9\n\tTUNSETSNDBUF                         = 0x400454d4\n\tTUNSETSTEERINGEBPF                   = 0x800454e0\n\tTUNSETTXFILTER                       = 0x400454d1\n\tTUNSETVNETBE                         = 0x400454de\n\tTUNSETVNETHDRSZ                      = 0x400454d8\n\tTUNSETVNETLE                         = 0x400454dc\n\tUBI_IOCATT                           = 0x40186f40\n\tUBI_IOCDET                           = 0x40046f41\n\tUBI_IOCEBCH                          = 0x40044f02\n\tUBI_IOCEBER                          = 0x40044f01\n\tUBI_IOCEBISMAP                       = 0x80044f05\n\tUBI_IOCEBMAP                         = 0x40084f03\n\tUBI_IOCEBUNMAP                       = 0x40044f04\n\tUBI_IOCMKVOL                         = 0x40986f00\n\tUBI_IOCRMVOL                         = 0x40046f01\n\tUBI_IOCRNVOL                         = 0x51106f03\n\tUBI_IOCRSVOL                         = 0x400c6f02\n\tUBI_IOCSETVOLPROP                    = 0x40104f06\n\tUBI_IOCVOLCRBLK                      = 0x40804f07\n\tUBI_IOCVOLRMBLK                      = 0x4f08\n\tUBI_IOCVOLUP                         = 0x40084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0xb\n\tVEOL2                                = 0x10\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x6\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x80045702\n\tWDIOC_GETPRETIMEOUT                  = 0x80045709\n\tWDIOC_GETSTATUS                      = 0x80045701\n\tWDIOC_GETSUPPORT                     = 0x80285700\n\tWDIOC_GETTEMP                        = 0x80045703\n\tWDIOC_GETTIMELEFT                    = 0x8004570a\n\tWDIOC_GETTIMEOUT                     = 0x80045707\n\tWDIOC_KEEPALIVE                      = 0x80045705\n\tWDIOC_SETOPTIONS                     = 0x80045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x80041270\n\tBLKBSZSET                            = 0x40041271\n\tBLKFLSBUF                            = 0x1261\n\tBLKFRAGET                            = 0x1265\n\tBLKFRASET                            = 0x1264\n\tBLKGETSIZE                           = 0x1260\n\tBLKGETSIZE64                         = 0x80041272\n\tBLKPBSZGET                           = 0x127b\n\tBLKRAGET                             = 0x1263\n\tBLKRASET                             = 0x1262\n\tBLKROGET                             = 0x125e\n\tBLKROSET                             = 0x125d\n\tBLKRRPART                            = 0x125f\n\tBLKSECTGET                           = 0x1267\n\tBLKSECTSET                           = 0x1266\n\tBLKSSZGET                            = 0x1268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x1000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0xc\n\tF_GETLK64                            = 0xc\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0xd\n\tF_SETLK64                            = 0xd\n\tF_SETLKW                             = 0xe\n\tF_SETLKW64                           = 0xe\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x8000\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x7b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x2000\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x4000\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_SYNC                             = 0x80000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x10000\n\tO_DIRECTORY                          = 0x4000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x20000\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x8000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x404000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x2401\n\tPERF_EVENT_IOC_ENABLE                = 0x2400\n\tPERF_EVENT_IOC_ID                    = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409\n\tPERF_EVENT_IOC_PERIOD                = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH               = 0x2402\n\tPERF_EVENT_IOC_RESET                 = 0x2403\n\tPERF_EVENT_IOC_SET_BPF               = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x2405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x4004743d\n\tPPPIOCATTCHAN                        = 0x40047438\n\tPPPIOCCONNECT                        = 0x4004743a\n\tPPPIOCDETACH                         = 0x4004743c\n\tPPPIOCDISCONN                        = 0x7439\n\tPPPIOCGASYNCMAP                      = 0x80047458\n\tPPPIOCGCHAN                          = 0x80047437\n\tPPPIOCGDEBUG                         = 0x80047441\n\tPPPIOCGFLAGS                         = 0x8004745a\n\tPPPIOCGIDLE                          = 0x8008743f\n\tPPPIOCGL2TPSTATS                     = 0x80487436\n\tPPPIOCGMRU                           = 0x80047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x80047455\n\tPPPIOCGUNIT                          = 0x80047456\n\tPPPIOCGXASYNCMAP                     = 0x80207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x40087446\n\tPPPIOCSASYNCMAP                      = 0x40047457\n\tPPPIOCSCOMPRESS                      = 0x400c744d\n\tPPPIOCSDEBUG                         = 0x40047440\n\tPPPIOCSFLAGS                         = 0x40047459\n\tPPPIOCSMAXCID                        = 0x40047451\n\tPPPIOCSMRRU                          = 0x4004743b\n\tPPPIOCSMRU                           = 0x40047452\n\tPPPIOCSNPMODE                        = 0x4008744b\n\tPPPIOCSPASS                          = 0x40087447\n\tPPPIOCSRASYNCMAP                     = 0x40047454\n\tPPPIOCSXASYNCMAP                     = 0x4020744f\n\tPPPIOCXFERUNIT                       = 0x744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETCRUNCHREGS                 = 0x19\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFDPIC                      = 0x1f\n\tPTRACE_GETFDPIC_EXEC                 = 0x0\n\tPTRACE_GETFDPIC_INTERP               = 0x1\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETHBPREGS                    = 0x1d\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GETVFPREGS                    = 0x1b\n\tPTRACE_GETWMMXREGS                   = 0x12\n\tPTRACE_GET_THREAD_AREA               = 0x16\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETCRUNCHREGS                 = 0x1a\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETHBPREGS                    = 0x1e\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SETVFPREGS                    = 0x1c\n\tPTRACE_SETWMMXREGS                   = 0x13\n\tPTRACE_SET_SYSCALL                   = 0x17\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tPT_DATA_ADDR                         = 0x10004\n\tPT_TEXT_ADDR                         = 0x10000\n\tPT_TEXT_END_ADDR                     = 0x10008\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x7002\n\tRTC_AIE_ON                           = 0x7001\n\tRTC_ALM_READ                         = 0x80247008\n\tRTC_ALM_SET                          = 0x40247007\n\tRTC_EPOCH_READ                       = 0x8004700d\n\tRTC_EPOCH_SET                        = 0x4004700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x8004700b\n\tRTC_IRQP_SET                         = 0x4004700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x7006\n\tRTC_PIE_ON                           = 0x7005\n\tRTC_PLL_GET                          = 0x801c7011\n\tRTC_PLL_SET                          = 0x401c7012\n\tRTC_RD_TIME                          = 0x80247009\n\tRTC_SET_TIME                         = 0x4024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x7004\n\tRTC_UIE_ON                           = 0x7003\n\tRTC_VL_CLR                           = 0x7014\n\tRTC_VL_READ                          = 0x80047013\n\tRTC_WIE_OFF                          = 0x7010\n\tRTC_WIE_ON                           = 0x700f\n\tRTC_WKALM_RD                         = 0x80287010\n\tRTC_WKALM_SET                        = 0x4028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x541b\n\tSIOCOUTQ                             = 0x5411\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x10\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x11\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x12\n\tSO_RCVTIMEO                          = 0x14\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x13\n\tSO_SNDTIMEO                          = 0x15\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x540b\n\tTCGETA                               = 0x5405\n\tTCGETS                               = 0x5401\n\tTCGETS2                              = 0x802c542a\n\tTCGETX                               = 0x5432\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x5409\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x5406\n\tTCSETAF                              = 0x5408\n\tTCSETAW                              = 0x5407\n\tTCSETS                               = 0x5402\n\tTCSETS2                              = 0x402c542b\n\tTCSETSF                              = 0x5404\n\tTCSETSF2                             = 0x402c542d\n\tTCSETSW                              = 0x5403\n\tTCSETSW2                             = 0x402c542c\n\tTCSETX                               = 0x5433\n\tTCSETXF                              = 0x5434\n\tTCSETXW                              = 0x5435\n\tTCXONC                               = 0x540a\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x80045432\n\tTIOCGETD                             = 0x5424\n\tTIOCGEXCL                            = 0x80045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGPGRP                            = 0x540f\n\tTIOCGPKT                             = 0x80045438\n\tTIOCGPTLCK                           = 0x80045439\n\tTIOCGPTN                             = 0x80045430\n\tTIOCGPTPEER                          = 0x5441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x5413\n\tTIOCINQ                              = 0x541b\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x5411\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x5423\n\tTIOCSIG                              = 0x40045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSPGRP                            = 0x5410\n\tTIOCSPTLCK                           = 0x40045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTI                              = 0x5412\n\tTIOCSWINSZ                           = 0x5414\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x100\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x400854d5\n\tTUNDETACHFILTER                      = 0x400854d6\n\tTUNGETFEATURES                       = 0x800454cf\n\tTUNGETFILTER                         = 0x800854db\n\tTUNGETIFF                            = 0x800454d2\n\tTUNGETSNDBUF                         = 0x800454d3\n\tTUNGETVNETBE                         = 0x800454df\n\tTUNGETVNETHDRSZ                      = 0x800454d7\n\tTUNGETVNETLE                         = 0x800454dd\n\tTUNSETDEBUG                          = 0x400454c9\n\tTUNSETFILTEREBPF                     = 0x800454e1\n\tTUNSETGROUP                          = 0x400454ce\n\tTUNSETIFF                            = 0x400454ca\n\tTUNSETIFINDEX                        = 0x400454da\n\tTUNSETLINK                           = 0x400454cd\n\tTUNSETNOCSUM                         = 0x400454c8\n\tTUNSETOFFLOAD                        = 0x400454d0\n\tTUNSETOWNER                          = 0x400454cc\n\tTUNSETPERSIST                        = 0x400454cb\n\tTUNSETQUEUE                          = 0x400454d9\n\tTUNSETSNDBUF                         = 0x400454d4\n\tTUNSETSTEERINGEBPF                   = 0x800454e0\n\tTUNSETTXFILTER                       = 0x400454d1\n\tTUNSETVNETBE                         = 0x400454de\n\tTUNSETVNETHDRSZ                      = 0x400454d8\n\tTUNSETVNETLE                         = 0x400454dc\n\tUBI_IOCATT                           = 0x40186f40\n\tUBI_IOCDET                           = 0x40046f41\n\tUBI_IOCEBCH                          = 0x40044f02\n\tUBI_IOCEBER                          = 0x40044f01\n\tUBI_IOCEBISMAP                       = 0x80044f05\n\tUBI_IOCEBMAP                         = 0x40084f03\n\tUBI_IOCEBUNMAP                       = 0x40044f04\n\tUBI_IOCMKVOL                         = 0x40986f00\n\tUBI_IOCRMVOL                         = 0x40046f01\n\tUBI_IOCRNVOL                         = 0x51106f03\n\tUBI_IOCRSVOL                         = 0x400c6f02\n\tUBI_IOCSETVOLPROP                    = 0x40104f06\n\tUBI_IOCVOLCRBLK                      = 0x40804f07\n\tUBI_IOCVOLRMBLK                      = 0x4f08\n\tUBI_IOCVOLUP                         = 0x40084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0xb\n\tVEOL2                                = 0x10\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x6\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x80045702\n\tWDIOC_GETPRETIMEOUT                  = 0x80045709\n\tWDIOC_GETSTATUS                      = 0x80045701\n\tWDIOC_GETSUPPORT                     = 0x80285700\n\tWDIOC_GETTEMP                        = 0x80045703\n\tWDIOC_GETTIMELEFT                    = 0x8004570a\n\tWDIOC_GETTIMEOUT                     = 0x80045707\n\tWDIOC_KEEPALIVE                      = 0x80045705\n\tWDIOC_SETOPTIONS                     = 0x80045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x20\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x80081270\n\tBLKBSZSET                            = 0x40081271\n\tBLKFLSBUF                            = 0x1261\n\tBLKFRAGET                            = 0x1265\n\tBLKFRASET                            = 0x1264\n\tBLKGETSIZE                           = 0x1260\n\tBLKGETSIZE64                         = 0x80081272\n\tBLKPBSZGET                           = 0x127b\n\tBLKRAGET                             = 0x1263\n\tBLKRASET                             = 0x1262\n\tBLKROGET                             = 0x125e\n\tBLKROSET                             = 0x125d\n\tBLKRRPART                            = 0x125f\n\tBLKSECTGET                           = 0x1267\n\tBLKSECTSET                           = 0x1266\n\tBLKSSZGET                            = 0x1268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tESR_MAGIC                            = 0x45535201\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tEXTRA_MAGIC                          = 0x45585401\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x1000\n\tFPSIMD_MAGIC                         = 0x46508001\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x5\n\tF_GETLK64                            = 0x5\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0x6\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0x7\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x8000\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x7b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x2000\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x4000\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_SYNC                             = 0x80000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x10000\n\tO_DIRECTORY                          = 0x4000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x8000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x404000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x2401\n\tPERF_EVENT_IOC_ENABLE                = 0x2400\n\tPERF_EVENT_IOC_ID                    = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409\n\tPERF_EVENT_IOC_PERIOD                = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x2402\n\tPERF_EVENT_IOC_RESET                 = 0x2403\n\tPERF_EVENT_IOC_SET_BPF               = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x2405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x4004743d\n\tPPPIOCATTCHAN                        = 0x40047438\n\tPPPIOCCONNECT                        = 0x4004743a\n\tPPPIOCDETACH                         = 0x4004743c\n\tPPPIOCDISCONN                        = 0x7439\n\tPPPIOCGASYNCMAP                      = 0x80047458\n\tPPPIOCGCHAN                          = 0x80047437\n\tPPPIOCGDEBUG                         = 0x80047441\n\tPPPIOCGFLAGS                         = 0x8004745a\n\tPPPIOCGIDLE                          = 0x8010743f\n\tPPPIOCGL2TPSTATS                     = 0x80487436\n\tPPPIOCGMRU                           = 0x80047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x80047455\n\tPPPIOCGUNIT                          = 0x80047456\n\tPPPIOCGXASYNCMAP                     = 0x80207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x40107446\n\tPPPIOCSASYNCMAP                      = 0x40047457\n\tPPPIOCSCOMPRESS                      = 0x4010744d\n\tPPPIOCSDEBUG                         = 0x40047440\n\tPPPIOCSFLAGS                         = 0x40047459\n\tPPPIOCSMAXCID                        = 0x40047451\n\tPPPIOCSMRRU                          = 0x4004743b\n\tPPPIOCSMRU                           = 0x40047452\n\tPPPIOCSNPMODE                        = 0x4008744b\n\tPPPIOCSPASS                          = 0x40107447\n\tPPPIOCSRASYNCMAP                     = 0x40047454\n\tPPPIOCSXASYNCMAP                     = 0x4020744f\n\tPPPIOCXFERUNIT                       = 0x744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x7002\n\tRTC_AIE_ON                           = 0x7001\n\tRTC_ALM_READ                         = 0x80247008\n\tRTC_ALM_SET                          = 0x40247007\n\tRTC_EPOCH_READ                       = 0x8008700d\n\tRTC_EPOCH_SET                        = 0x4008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x8008700b\n\tRTC_IRQP_SET                         = 0x4008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x7006\n\tRTC_PIE_ON                           = 0x7005\n\tRTC_PLL_GET                          = 0x80207011\n\tRTC_PLL_SET                          = 0x40207012\n\tRTC_RD_TIME                          = 0x80247009\n\tRTC_SET_TIME                         = 0x4024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x7004\n\tRTC_UIE_ON                           = 0x7003\n\tRTC_VL_CLR                           = 0x7014\n\tRTC_VL_READ                          = 0x80047013\n\tRTC_WIE_OFF                          = 0x7010\n\tRTC_WIE_ON                           = 0x700f\n\tRTC_WKALM_RD                         = 0x80287010\n\tRTC_WKALM_SET                        = 0x4028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x541b\n\tSIOCOUTQ                             = 0x5411\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x10\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x11\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x12\n\tSO_RCVTIMEO                          = 0x14\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x13\n\tSO_SNDTIMEO                          = 0x15\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSVE_MAGIC                            = 0x53564501\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x540b\n\tTCGETA                               = 0x5405\n\tTCGETS                               = 0x5401\n\tTCGETS2                              = 0x802c542a\n\tTCGETX                               = 0x5432\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x5409\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x5406\n\tTCSETAF                              = 0x5408\n\tTCSETAW                              = 0x5407\n\tTCSETS                               = 0x5402\n\tTCSETS2                              = 0x402c542b\n\tTCSETSF                              = 0x5404\n\tTCSETSF2                             = 0x402c542d\n\tTCSETSW                              = 0x5403\n\tTCSETSW2                             = 0x402c542c\n\tTCSETX                               = 0x5433\n\tTCSETXF                              = 0x5434\n\tTCSETXW                              = 0x5435\n\tTCXONC                               = 0x540a\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x80045432\n\tTIOCGETD                             = 0x5424\n\tTIOCGEXCL                            = 0x80045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGPGRP                            = 0x540f\n\tTIOCGPKT                             = 0x80045438\n\tTIOCGPTLCK                           = 0x80045439\n\tTIOCGPTN                             = 0x80045430\n\tTIOCGPTPEER                          = 0x5441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x5413\n\tTIOCINQ                              = 0x541b\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x5411\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x5423\n\tTIOCSIG                              = 0x40045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSPGRP                            = 0x5410\n\tTIOCSPTLCK                           = 0x40045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTI                              = 0x5412\n\tTIOCSWINSZ                           = 0x5414\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x100\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x401054d5\n\tTUNDETACHFILTER                      = 0x401054d6\n\tTUNGETFEATURES                       = 0x800454cf\n\tTUNGETFILTER                         = 0x801054db\n\tTUNGETIFF                            = 0x800454d2\n\tTUNGETSNDBUF                         = 0x800454d3\n\tTUNGETVNETBE                         = 0x800454df\n\tTUNGETVNETHDRSZ                      = 0x800454d7\n\tTUNGETVNETLE                         = 0x800454dd\n\tTUNSETDEBUG                          = 0x400454c9\n\tTUNSETFILTEREBPF                     = 0x800454e1\n\tTUNSETGROUP                          = 0x400454ce\n\tTUNSETIFF                            = 0x400454ca\n\tTUNSETIFINDEX                        = 0x400454da\n\tTUNSETLINK                           = 0x400454cd\n\tTUNSETNOCSUM                         = 0x400454c8\n\tTUNSETOFFLOAD                        = 0x400454d0\n\tTUNSETOWNER                          = 0x400454cc\n\tTUNSETPERSIST                        = 0x400454cb\n\tTUNSETQUEUE                          = 0x400454d9\n\tTUNSETSNDBUF                         = 0x400454d4\n\tTUNSETSTEERINGEBPF                   = 0x800454e0\n\tTUNSETTXFILTER                       = 0x400454d1\n\tTUNSETVNETBE                         = 0x400454de\n\tTUNSETVNETHDRSZ                      = 0x400454d8\n\tTUNSETVNETLE                         = 0x400454dc\n\tUBI_IOCATT                           = 0x40186f40\n\tUBI_IOCDET                           = 0x40046f41\n\tUBI_IOCEBCH                          = 0x40044f02\n\tUBI_IOCEBER                          = 0x40044f01\n\tUBI_IOCEBISMAP                       = 0x80044f05\n\tUBI_IOCEBMAP                         = 0x40084f03\n\tUBI_IOCEBUNMAP                       = 0x40044f04\n\tUBI_IOCMKVOL                         = 0x40986f00\n\tUBI_IOCRMVOL                         = 0x40046f01\n\tUBI_IOCRNVOL                         = 0x51106f03\n\tUBI_IOCRSVOL                         = 0x400c6f02\n\tUBI_IOCSETVOLPROP                    = 0x40104f06\n\tUBI_IOCVOLCRBLK                      = 0x40804f07\n\tUBI_IOCVOLRMBLK                      = 0x4f08\n\tUBI_IOCVOLUP                         = 0x40084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0xb\n\tVEOL2                                = 0x10\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x6\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x80045702\n\tWDIOC_GETPRETIMEOUT                  = 0x80045709\n\tWDIOC_GETSTATUS                      = 0x80045701\n\tWDIOC_GETSUPPORT                     = 0x80285700\n\tWDIOC_GETTEMP                        = 0x80045703\n\tWDIOC_GETTIMELEFT                    = 0x8004570a\n\tWDIOC_GETTIMEOUT                     = 0x80045707\n\tWDIOC_KEEPALIVE                      = 0x80045705\n\tWDIOC_SETOPTIONS                     = 0x80045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x40041270\n\tBLKBSZSET                            = 0x80041271\n\tBLKFLSBUF                            = 0x20001261\n\tBLKFRAGET                            = 0x20001265\n\tBLKFRASET                            = 0x20001264\n\tBLKGETSIZE                           = 0x20001260\n\tBLKGETSIZE64                         = 0x40041272\n\tBLKPBSZGET                           = 0x2000127b\n\tBLKRAGET                             = 0x20001263\n\tBLKRASET                             = 0x20001262\n\tBLKROGET                             = 0x2000125e\n\tBLKROSET                             = 0x2000125d\n\tBLKRRPART                            = 0x2000125f\n\tBLKSECTGET                           = 0x20001267\n\tBLKSECTSET                           = 0x20001266\n\tBLKSSZGET                            = 0x20001268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x80\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x2000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x21\n\tF_GETLK64                            = 0x21\n\tF_GETOWN                             = 0x17\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x22\n\tF_SETLK64                            = 0x22\n\tF_SETLKW                             = 0x23\n\tF_SETLKW64                           = 0x23\n\tF_SETOWN                             = 0x18\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x100\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x80\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x200007b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x800\n\tMAP_ANONYMOUS                        = 0x800\n\tMAP_DENYWRITE                        = 0x2000\n\tMAP_EXECUTABLE                       = 0x4000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x1000\n\tMAP_HUGETLB                          = 0x80000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x8000\n\tMAP_NONBLOCK                         = 0x20000\n\tMAP_NORESERVE                        = 0x400\n\tMAP_POPULATE                         = 0x10000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_RENAME                           = 0x800\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x40000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x8\n\tO_ASYNC                              = 0x1000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x100\n\tO_DIRECT                             = 0x8000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x10\n\tO_EXCL                               = 0x400\n\tO_FSYNC                              = 0x4010\n\tO_LARGEFILE                          = 0x2000\n\tO_NDELAY                             = 0x80\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x800\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x80\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x4010\n\tO_SYNC                               = 0x4010\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x20002401\n\tPERF_EVENT_IOC_ENABLE                = 0x20002400\n\tPERF_EVENT_IOC_ID                    = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409\n\tPERF_EVENT_IOC_PERIOD                = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH               = 0x20002402\n\tPERF_EVENT_IOC_RESET                 = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF               = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x20002405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x8004743d\n\tPPPIOCATTCHAN                        = 0x80047438\n\tPPPIOCCONNECT                        = 0x8004743a\n\tPPPIOCDETACH                         = 0x8004743c\n\tPPPIOCDISCONN                        = 0x20007439\n\tPPPIOCGASYNCMAP                      = 0x40047458\n\tPPPIOCGCHAN                          = 0x40047437\n\tPPPIOCGDEBUG                         = 0x40047441\n\tPPPIOCGFLAGS                         = 0x4004745a\n\tPPPIOCGIDLE                          = 0x4008743f\n\tPPPIOCGL2TPSTATS                     = 0x40487436\n\tPPPIOCGMRU                           = 0x40047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x40047455\n\tPPPIOCGUNIT                          = 0x40047456\n\tPPPIOCGXASYNCMAP                     = 0x40207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x80087446\n\tPPPIOCSASYNCMAP                      = 0x80047457\n\tPPPIOCSCOMPRESS                      = 0x800c744d\n\tPPPIOCSDEBUG                         = 0x80047440\n\tPPPIOCSFLAGS                         = 0x80047459\n\tPPPIOCSMAXCID                        = 0x80047451\n\tPPPIOCSMRRU                          = 0x8004743b\n\tPPPIOCSMRU                           = 0x80047452\n\tPPPIOCSNPMODE                        = 0x8008744b\n\tPPPIOCSPASS                          = 0x80087447\n\tPPPIOCSRASYNCMAP                     = 0x80047454\n\tPPPIOCSXASYNCMAP                     = 0x8020744f\n\tPPPIOCXFERUNIT                       = 0x2000744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_THREAD_AREA               = 0x19\n\tPTRACE_GET_THREAD_AREA_3264          = 0xc4\n\tPTRACE_GET_WATCH_REGS                = 0xd0\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKDATA_3264                 = 0xc1\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKTEXT_3264                 = 0xc0\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKEDATA_3264                 = 0xc3\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKETEXT_3264                 = 0xc2\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SET_THREAD_AREA               = 0x1a\n\tPTRACE_SET_WATCH_REGS                = 0xd1\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x6\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x9\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x5\n\tRLIMIT_NPROC                         = 0x8\n\tRLIMIT_RSS                           = 0x7\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x20007002\n\tRTC_AIE_ON                           = 0x20007001\n\tRTC_ALM_READ                         = 0x40247008\n\tRTC_ALM_SET                          = 0x80247007\n\tRTC_EPOCH_READ                       = 0x4004700d\n\tRTC_EPOCH_SET                        = 0x8004700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x4004700b\n\tRTC_IRQP_SET                         = 0x8004700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x20007006\n\tRTC_PIE_ON                           = 0x20007005\n\tRTC_PLL_GET                          = 0x401c7011\n\tRTC_PLL_SET                          = 0x801c7012\n\tRTC_RD_TIME                          = 0x40247009\n\tRTC_SET_TIME                         = 0x8024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x20007004\n\tRTC_UIE_ON                           = 0x20007003\n\tRTC_VL_CLR                           = 0x20007014\n\tRTC_VL_READ                          = 0x40047013\n\tRTC_WIE_OFF                          = 0x20007010\n\tRTC_WIE_ON                           = 0x2000700f\n\tRTC_WKALM_RD                         = 0x40287010\n\tRTC_WKALM_SET                        = 0x8028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x40047307\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x40047309\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x467f\n\tSIOCOUTQ                             = 0x7472\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x80047308\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x1\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x80\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x2\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0xffff\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1009\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x20\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x1029\n\tSO_DONTROUTE                         = 0x10\n\tSO_ERROR                             = 0x1007\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x8\n\tSO_LINGER                            = 0x80\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0x100\n\tSO_PASSCRED                          = 0x11\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x12\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1e\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x1028\n\tSO_RCVBUF                            = 0x1002\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x1004\n\tSO_RCVTIMEO                          = 0x1006\n\tSO_REUSEADDR                         = 0x4\n\tSO_REUSEPORT                         = 0x200\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x1001\n\tSO_SNDBUFFORCE                       = 0x1f\n\tSO_SNDLOWAT                          = 0x1003\n\tSO_SNDTIMEO                          = 0x1005\n\tSO_STYLE                             = 0x1008\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x1008\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x5407\n\tTCGETA                               = 0x5401\n\tTCGETS                               = 0x540d\n\tTCGETS2                              = 0x4030542a\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x5410\n\tTCSBRK                               = 0x5405\n\tTCSBRKP                              = 0x5486\n\tTCSETA                               = 0x5402\n\tTCSETAF                              = 0x5404\n\tTCSETAW                              = 0x5403\n\tTCSETS                               = 0x540e\n\tTCSETS2                              = 0x8030542b\n\tTCSETSF                              = 0x5410\n\tTCSETSF2                             = 0x8030542d\n\tTCSETSW                              = 0x540f\n\tTCSETSW2                             = 0x8030542c\n\tTCXONC                               = 0x5406\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x80047478\n\tTIOCEXCL                             = 0x740d\n\tTIOCGDEV                             = 0x40045432\n\tTIOCGETD                             = 0x7400\n\tTIOCGETP                             = 0x7408\n\tTIOCGEXCL                            = 0x40045440\n\tTIOCGICOUNT                          = 0x5492\n\tTIOCGLCKTRMIOS                       = 0x548b\n\tTIOCGLTC                             = 0x7474\n\tTIOCGPGRP                            = 0x40047477\n\tTIOCGPKT                             = 0x40045438\n\tTIOCGPTLCK                           = 0x40045439\n\tTIOCGPTN                             = 0x40045430\n\tTIOCGPTPEER                          = 0x20005441\n\tTIOCGRS485                           = 0x4020542e\n\tTIOCGSERIAL                          = 0x5484\n\tTIOCGSID                             = 0x7416\n\tTIOCGSOFTCAR                         = 0x5481\n\tTIOCGWINSZ                           = 0x40087468\n\tTIOCINQ                              = 0x467f\n\tTIOCLINUX                            = 0x5483\n\tTIOCMBIC                             = 0x741c\n\tTIOCMBIS                             = 0x741b\n\tTIOCMGET                             = 0x741d\n\tTIOCMIWAIT                           = 0x5491\n\tTIOCMSET                             = 0x741a\n\tTIOCM_CAR                            = 0x100\n\tTIOCM_CD                             = 0x100\n\tTIOCM_CTS                            = 0x40\n\tTIOCM_DSR                            = 0x400\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x200\n\tTIOCM_RNG                            = 0x200\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x20\n\tTIOCM_ST                             = 0x10\n\tTIOCNOTTY                            = 0x5471\n\tTIOCNXCL                             = 0x740e\n\tTIOCOUTQ                             = 0x7472\n\tTIOCPKT                              = 0x5470\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x5480\n\tTIOCSERCONFIG                        = 0x5488\n\tTIOCSERGETLSR                        = 0x548e\n\tTIOCSERGETMULTI                      = 0x548f\n\tTIOCSERGSTRUCT                       = 0x548d\n\tTIOCSERGWILD                         = 0x5489\n\tTIOCSERSETMULTI                      = 0x5490\n\tTIOCSERSWILD                         = 0x548a\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x7401\n\tTIOCSETN                             = 0x740a\n\tTIOCSETP                             = 0x7409\n\tTIOCSIG                              = 0x80045436\n\tTIOCSLCKTRMIOS                       = 0x548c\n\tTIOCSLTC                             = 0x7475\n\tTIOCSPGRP                            = 0x80047476\n\tTIOCSPTLCK                           = 0x80045431\n\tTIOCSRS485                           = 0xc020542f\n\tTIOCSSERIAL                          = 0x5485\n\tTIOCSSOFTCAR                         = 0x5482\n\tTIOCSTI                              = 0x5472\n\tTIOCSWINSZ                           = 0x80087467\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x8000\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x800854d5\n\tTUNDETACHFILTER                      = 0x800854d6\n\tTUNGETFEATURES                       = 0x400454cf\n\tTUNGETFILTER                         = 0x400854db\n\tTUNGETIFF                            = 0x400454d2\n\tTUNGETSNDBUF                         = 0x400454d3\n\tTUNGETVNETBE                         = 0x400454df\n\tTUNGETVNETHDRSZ                      = 0x400454d7\n\tTUNGETVNETLE                         = 0x400454dd\n\tTUNSETDEBUG                          = 0x800454c9\n\tTUNSETFILTEREBPF                     = 0x400454e1\n\tTUNSETGROUP                          = 0x800454ce\n\tTUNSETIFF                            = 0x800454ca\n\tTUNSETIFINDEX                        = 0x800454da\n\tTUNSETLINK                           = 0x800454cd\n\tTUNSETNOCSUM                         = 0x800454c8\n\tTUNSETOFFLOAD                        = 0x800454d0\n\tTUNSETOWNER                          = 0x800454cc\n\tTUNSETPERSIST                        = 0x800454cb\n\tTUNSETQUEUE                          = 0x800454d9\n\tTUNSETSNDBUF                         = 0x800454d4\n\tTUNSETSTEERINGEBPF                   = 0x400454e0\n\tTUNSETTXFILTER                       = 0x800454d1\n\tTUNSETVNETBE                         = 0x800454de\n\tTUNSETVNETHDRSZ                      = 0x800454d8\n\tTUNSETVNETLE                         = 0x800454dc\n\tUBI_IOCATT                           = 0x80186f40\n\tUBI_IOCDET                           = 0x80046f41\n\tUBI_IOCEBCH                          = 0x80044f02\n\tUBI_IOCEBER                          = 0x80044f01\n\tUBI_IOCEBISMAP                       = 0x40044f05\n\tUBI_IOCEBMAP                         = 0x80084f03\n\tUBI_IOCEBUNMAP                       = 0x80044f04\n\tUBI_IOCMKVOL                         = 0x80986f00\n\tUBI_IOCRMVOL                         = 0x80046f01\n\tUBI_IOCRNVOL                         = 0x91106f03\n\tUBI_IOCRSVOL                         = 0x800c6f02\n\tUBI_IOCSETVOLPROP                    = 0x80104f06\n\tUBI_IOCVOLCRBLK                      = 0x80804f07\n\tUBI_IOCVOLRMBLK                      = 0x20004f08\n\tUBI_IOCVOLUP                         = 0x80084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x10\n\tVEOL                                 = 0x11\n\tVEOL2                                = 0x6\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x4\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVSWTCH                               = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x40045702\n\tWDIOC_GETPRETIMEOUT                  = 0x40045709\n\tWDIOC_GETSTATUS                      = 0x40045701\n\tWDIOC_GETSUPPORT                     = 0x40285700\n\tWDIOC_GETTEMP                        = 0x40045703\n\tWDIOC_GETTIMELEFT                    = 0x4004570a\n\tWDIOC_GETTIMEOUT                     = 0x40045707\n\tWDIOC_KEEPALIVE                      = 0x40045705\n\tWDIOC_SETOPTIONS                     = 0x40045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x20\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x40081270\n\tBLKBSZSET                            = 0x80081271\n\tBLKFLSBUF                            = 0x20001261\n\tBLKFRAGET                            = 0x20001265\n\tBLKFRASET                            = 0x20001264\n\tBLKGETSIZE                           = 0x20001260\n\tBLKGETSIZE64                         = 0x40081272\n\tBLKPBSZGET                           = 0x2000127b\n\tBLKRAGET                             = 0x20001263\n\tBLKRASET                             = 0x20001262\n\tBLKROGET                             = 0x2000125e\n\tBLKROSET                             = 0x2000125d\n\tBLKRRPART                            = 0x2000125f\n\tBLKSECTGET                           = 0x20001267\n\tBLKSECTSET                           = 0x20001266\n\tBLKSSZGET                            = 0x20001268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x80\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x2000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0xe\n\tF_GETLK64                            = 0xe\n\tF_GETOWN                             = 0x17\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0x6\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0x7\n\tF_SETOWN                             = 0x18\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x100\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x80\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x200007b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x800\n\tMAP_ANONYMOUS                        = 0x800\n\tMAP_DENYWRITE                        = 0x2000\n\tMAP_EXECUTABLE                       = 0x4000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x1000\n\tMAP_HUGETLB                          = 0x80000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x8000\n\tMAP_NONBLOCK                         = 0x20000\n\tMAP_NORESERVE                        = 0x400\n\tMAP_POPULATE                         = 0x10000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_RENAME                           = 0x800\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x40000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x8\n\tO_ASYNC                              = 0x1000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x100\n\tO_DIRECT                             = 0x8000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x10\n\tO_EXCL                               = 0x400\n\tO_FSYNC                              = 0x4010\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x80\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x800\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x80\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x4010\n\tO_SYNC                               = 0x4010\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x20002401\n\tPERF_EVENT_IOC_ENABLE                = 0x20002400\n\tPERF_EVENT_IOC_ID                    = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409\n\tPERF_EVENT_IOC_PERIOD                = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x20002402\n\tPERF_EVENT_IOC_RESET                 = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF               = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x20002405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x8004743d\n\tPPPIOCATTCHAN                        = 0x80047438\n\tPPPIOCCONNECT                        = 0x8004743a\n\tPPPIOCDETACH                         = 0x8004743c\n\tPPPIOCDISCONN                        = 0x20007439\n\tPPPIOCGASYNCMAP                      = 0x40047458\n\tPPPIOCGCHAN                          = 0x40047437\n\tPPPIOCGDEBUG                         = 0x40047441\n\tPPPIOCGFLAGS                         = 0x4004745a\n\tPPPIOCGIDLE                          = 0x4010743f\n\tPPPIOCGL2TPSTATS                     = 0x40487436\n\tPPPIOCGMRU                           = 0x40047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x40047455\n\tPPPIOCGUNIT                          = 0x40047456\n\tPPPIOCGXASYNCMAP                     = 0x40207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x80107446\n\tPPPIOCSASYNCMAP                      = 0x80047457\n\tPPPIOCSCOMPRESS                      = 0x8010744d\n\tPPPIOCSDEBUG                         = 0x80047440\n\tPPPIOCSFLAGS                         = 0x80047459\n\tPPPIOCSMAXCID                        = 0x80047451\n\tPPPIOCSMRRU                          = 0x8004743b\n\tPPPIOCSMRU                           = 0x80047452\n\tPPPIOCSNPMODE                        = 0x8008744b\n\tPPPIOCSPASS                          = 0x80107447\n\tPPPIOCSRASYNCMAP                     = 0x80047454\n\tPPPIOCSXASYNCMAP                     = 0x8020744f\n\tPPPIOCXFERUNIT                       = 0x2000744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_THREAD_AREA               = 0x19\n\tPTRACE_GET_THREAD_AREA_3264          = 0xc4\n\tPTRACE_GET_WATCH_REGS                = 0xd0\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKDATA_3264                 = 0xc1\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKTEXT_3264                 = 0xc0\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKEDATA_3264                 = 0xc3\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKETEXT_3264                 = 0xc2\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SET_THREAD_AREA               = 0x1a\n\tPTRACE_SET_WATCH_REGS                = 0xd1\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x6\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x9\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x5\n\tRLIMIT_NPROC                         = 0x8\n\tRLIMIT_RSS                           = 0x7\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x20007002\n\tRTC_AIE_ON                           = 0x20007001\n\tRTC_ALM_READ                         = 0x40247008\n\tRTC_ALM_SET                          = 0x80247007\n\tRTC_EPOCH_READ                       = 0x4008700d\n\tRTC_EPOCH_SET                        = 0x8008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x4008700b\n\tRTC_IRQP_SET                         = 0x8008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x20007006\n\tRTC_PIE_ON                           = 0x20007005\n\tRTC_PLL_GET                          = 0x40207011\n\tRTC_PLL_SET                          = 0x80207012\n\tRTC_RD_TIME                          = 0x40247009\n\tRTC_SET_TIME                         = 0x8024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x20007004\n\tRTC_UIE_ON                           = 0x20007003\n\tRTC_VL_CLR                           = 0x20007014\n\tRTC_VL_READ                          = 0x40047013\n\tRTC_WIE_OFF                          = 0x20007010\n\tRTC_WIE_ON                           = 0x2000700f\n\tRTC_WKALM_RD                         = 0x40287010\n\tRTC_WKALM_SET                        = 0x8028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x40047307\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x40047309\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x467f\n\tSIOCOUTQ                             = 0x7472\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x80047308\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x1\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x80\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x2\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0xffff\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1009\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x20\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x1029\n\tSO_DONTROUTE                         = 0x10\n\tSO_ERROR                             = 0x1007\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x8\n\tSO_LINGER                            = 0x80\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0x100\n\tSO_PASSCRED                          = 0x11\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x12\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1e\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x1028\n\tSO_RCVBUF                            = 0x1002\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x1004\n\tSO_RCVTIMEO                          = 0x1006\n\tSO_REUSEADDR                         = 0x4\n\tSO_REUSEPORT                         = 0x200\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x1001\n\tSO_SNDBUFFORCE                       = 0x1f\n\tSO_SNDLOWAT                          = 0x1003\n\tSO_SNDTIMEO                          = 0x1005\n\tSO_STYLE                             = 0x1008\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x1008\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x5407\n\tTCGETA                               = 0x5401\n\tTCGETS                               = 0x540d\n\tTCGETS2                              = 0x4030542a\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x5410\n\tTCSBRK                               = 0x5405\n\tTCSBRKP                              = 0x5486\n\tTCSETA                               = 0x5402\n\tTCSETAF                              = 0x5404\n\tTCSETAW                              = 0x5403\n\tTCSETS                               = 0x540e\n\tTCSETS2                              = 0x8030542b\n\tTCSETSF                              = 0x5410\n\tTCSETSF2                             = 0x8030542d\n\tTCSETSW                              = 0x540f\n\tTCSETSW2                             = 0x8030542c\n\tTCXONC                               = 0x5406\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x80047478\n\tTIOCEXCL                             = 0x740d\n\tTIOCGDEV                             = 0x40045432\n\tTIOCGETD                             = 0x7400\n\tTIOCGETP                             = 0x7408\n\tTIOCGEXCL                            = 0x40045440\n\tTIOCGICOUNT                          = 0x5492\n\tTIOCGLCKTRMIOS                       = 0x548b\n\tTIOCGLTC                             = 0x7474\n\tTIOCGPGRP                            = 0x40047477\n\tTIOCGPKT                             = 0x40045438\n\tTIOCGPTLCK                           = 0x40045439\n\tTIOCGPTN                             = 0x40045430\n\tTIOCGPTPEER                          = 0x20005441\n\tTIOCGRS485                           = 0x4020542e\n\tTIOCGSERIAL                          = 0x5484\n\tTIOCGSID                             = 0x7416\n\tTIOCGSOFTCAR                         = 0x5481\n\tTIOCGWINSZ                           = 0x40087468\n\tTIOCINQ                              = 0x467f\n\tTIOCLINUX                            = 0x5483\n\tTIOCMBIC                             = 0x741c\n\tTIOCMBIS                             = 0x741b\n\tTIOCMGET                             = 0x741d\n\tTIOCMIWAIT                           = 0x5491\n\tTIOCMSET                             = 0x741a\n\tTIOCM_CAR                            = 0x100\n\tTIOCM_CD                             = 0x100\n\tTIOCM_CTS                            = 0x40\n\tTIOCM_DSR                            = 0x400\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x200\n\tTIOCM_RNG                            = 0x200\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x20\n\tTIOCM_ST                             = 0x10\n\tTIOCNOTTY                            = 0x5471\n\tTIOCNXCL                             = 0x740e\n\tTIOCOUTQ                             = 0x7472\n\tTIOCPKT                              = 0x5470\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x5480\n\tTIOCSERCONFIG                        = 0x5488\n\tTIOCSERGETLSR                        = 0x548e\n\tTIOCSERGETMULTI                      = 0x548f\n\tTIOCSERGSTRUCT                       = 0x548d\n\tTIOCSERGWILD                         = 0x5489\n\tTIOCSERSETMULTI                      = 0x5490\n\tTIOCSERSWILD                         = 0x548a\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x7401\n\tTIOCSETN                             = 0x740a\n\tTIOCSETP                             = 0x7409\n\tTIOCSIG                              = 0x80045436\n\tTIOCSLCKTRMIOS                       = 0x548c\n\tTIOCSLTC                             = 0x7475\n\tTIOCSPGRP                            = 0x80047476\n\tTIOCSPTLCK                           = 0x80045431\n\tTIOCSRS485                           = 0xc020542f\n\tTIOCSSERIAL                          = 0x5485\n\tTIOCSSOFTCAR                         = 0x5482\n\tTIOCSTI                              = 0x5472\n\tTIOCSWINSZ                           = 0x80087467\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x8000\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x801054d5\n\tTUNDETACHFILTER                      = 0x801054d6\n\tTUNGETFEATURES                       = 0x400454cf\n\tTUNGETFILTER                         = 0x401054db\n\tTUNGETIFF                            = 0x400454d2\n\tTUNGETSNDBUF                         = 0x400454d3\n\tTUNGETVNETBE                         = 0x400454df\n\tTUNGETVNETHDRSZ                      = 0x400454d7\n\tTUNGETVNETLE                         = 0x400454dd\n\tTUNSETDEBUG                          = 0x800454c9\n\tTUNSETFILTEREBPF                     = 0x400454e1\n\tTUNSETGROUP                          = 0x800454ce\n\tTUNSETIFF                            = 0x800454ca\n\tTUNSETIFINDEX                        = 0x800454da\n\tTUNSETLINK                           = 0x800454cd\n\tTUNSETNOCSUM                         = 0x800454c8\n\tTUNSETOFFLOAD                        = 0x800454d0\n\tTUNSETOWNER                          = 0x800454cc\n\tTUNSETPERSIST                        = 0x800454cb\n\tTUNSETQUEUE                          = 0x800454d9\n\tTUNSETSNDBUF                         = 0x800454d4\n\tTUNSETSTEERINGEBPF                   = 0x400454e0\n\tTUNSETTXFILTER                       = 0x800454d1\n\tTUNSETVNETBE                         = 0x800454de\n\tTUNSETVNETHDRSZ                      = 0x800454d8\n\tTUNSETVNETLE                         = 0x800454dc\n\tUBI_IOCATT                           = 0x80186f40\n\tUBI_IOCDET                           = 0x80046f41\n\tUBI_IOCEBCH                          = 0x80044f02\n\tUBI_IOCEBER                          = 0x80044f01\n\tUBI_IOCEBISMAP                       = 0x40044f05\n\tUBI_IOCEBMAP                         = 0x80084f03\n\tUBI_IOCEBUNMAP                       = 0x80044f04\n\tUBI_IOCMKVOL                         = 0x80986f00\n\tUBI_IOCRMVOL                         = 0x80046f01\n\tUBI_IOCRNVOL                         = 0x91106f03\n\tUBI_IOCRSVOL                         = 0x800c6f02\n\tUBI_IOCSETVOLPROP                    = 0x80104f06\n\tUBI_IOCVOLCRBLK                      = 0x80804f07\n\tUBI_IOCVOLRMBLK                      = 0x20004f08\n\tUBI_IOCVOLUP                         = 0x80084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x10\n\tVEOL                                 = 0x11\n\tVEOL2                                = 0x6\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x4\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVSWTCH                               = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x40045702\n\tWDIOC_GETPRETIMEOUT                  = 0x40045709\n\tWDIOC_GETSTATUS                      = 0x40045701\n\tWDIOC_GETSUPPORT                     = 0x40285700\n\tWDIOC_GETTEMP                        = 0x40045703\n\tWDIOC_GETTIMELEFT                    = 0x4004570a\n\tWDIOC_GETTIMEOUT                     = 0x40045707\n\tWDIOC_KEEPALIVE                      = 0x40045705\n\tWDIOC_SETOPTIONS                     = 0x40045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64le,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x40081270\n\tBLKBSZSET                            = 0x80081271\n\tBLKFLSBUF                            = 0x20001261\n\tBLKFRAGET                            = 0x20001265\n\tBLKFRASET                            = 0x20001264\n\tBLKGETSIZE                           = 0x20001260\n\tBLKGETSIZE64                         = 0x40081272\n\tBLKPBSZGET                           = 0x2000127b\n\tBLKRAGET                             = 0x20001263\n\tBLKRASET                             = 0x20001262\n\tBLKROGET                             = 0x2000125e\n\tBLKROSET                             = 0x2000125d\n\tBLKRRPART                            = 0x2000125f\n\tBLKSECTGET                           = 0x20001267\n\tBLKSECTSET                           = 0x20001266\n\tBLKSSZGET                            = 0x20001268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x80\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x2000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0xe\n\tF_GETLK64                            = 0xe\n\tF_GETOWN                             = 0x17\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0x6\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0x7\n\tF_SETOWN                             = 0x18\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x100\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x80\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x200007b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x800\n\tMAP_ANONYMOUS                        = 0x800\n\tMAP_DENYWRITE                        = 0x2000\n\tMAP_EXECUTABLE                       = 0x4000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x1000\n\tMAP_HUGETLB                          = 0x80000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x8000\n\tMAP_NONBLOCK                         = 0x20000\n\tMAP_NORESERVE                        = 0x400\n\tMAP_POPULATE                         = 0x10000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_RENAME                           = 0x800\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x40000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x8\n\tO_ASYNC                              = 0x1000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x100\n\tO_DIRECT                             = 0x8000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x10\n\tO_EXCL                               = 0x400\n\tO_FSYNC                              = 0x4010\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x80\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x800\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x80\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x4010\n\tO_SYNC                               = 0x4010\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x20002401\n\tPERF_EVENT_IOC_ENABLE                = 0x20002400\n\tPERF_EVENT_IOC_ID                    = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409\n\tPERF_EVENT_IOC_PERIOD                = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x20002402\n\tPERF_EVENT_IOC_RESET                 = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF               = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x20002405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x8004743d\n\tPPPIOCATTCHAN                        = 0x80047438\n\tPPPIOCCONNECT                        = 0x8004743a\n\tPPPIOCDETACH                         = 0x8004743c\n\tPPPIOCDISCONN                        = 0x20007439\n\tPPPIOCGASYNCMAP                      = 0x40047458\n\tPPPIOCGCHAN                          = 0x40047437\n\tPPPIOCGDEBUG                         = 0x40047441\n\tPPPIOCGFLAGS                         = 0x4004745a\n\tPPPIOCGIDLE                          = 0x4010743f\n\tPPPIOCGL2TPSTATS                     = 0x40487436\n\tPPPIOCGMRU                           = 0x40047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x40047455\n\tPPPIOCGUNIT                          = 0x40047456\n\tPPPIOCGXASYNCMAP                     = 0x40207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x80107446\n\tPPPIOCSASYNCMAP                      = 0x80047457\n\tPPPIOCSCOMPRESS                      = 0x8010744d\n\tPPPIOCSDEBUG                         = 0x80047440\n\tPPPIOCSFLAGS                         = 0x80047459\n\tPPPIOCSMAXCID                        = 0x80047451\n\tPPPIOCSMRRU                          = 0x8004743b\n\tPPPIOCSMRU                           = 0x80047452\n\tPPPIOCSNPMODE                        = 0x8008744b\n\tPPPIOCSPASS                          = 0x80107447\n\tPPPIOCSRASYNCMAP                     = 0x80047454\n\tPPPIOCSXASYNCMAP                     = 0x8020744f\n\tPPPIOCXFERUNIT                       = 0x2000744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_THREAD_AREA               = 0x19\n\tPTRACE_GET_THREAD_AREA_3264          = 0xc4\n\tPTRACE_GET_WATCH_REGS                = 0xd0\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKDATA_3264                 = 0xc1\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKTEXT_3264                 = 0xc0\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKEDATA_3264                 = 0xc3\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKETEXT_3264                 = 0xc2\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SET_THREAD_AREA               = 0x1a\n\tPTRACE_SET_WATCH_REGS                = 0xd1\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x6\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x9\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x5\n\tRLIMIT_NPROC                         = 0x8\n\tRLIMIT_RSS                           = 0x7\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x20007002\n\tRTC_AIE_ON                           = 0x20007001\n\tRTC_ALM_READ                         = 0x40247008\n\tRTC_ALM_SET                          = 0x80247007\n\tRTC_EPOCH_READ                       = 0x4008700d\n\tRTC_EPOCH_SET                        = 0x8008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x4008700b\n\tRTC_IRQP_SET                         = 0x8008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x20007006\n\tRTC_PIE_ON                           = 0x20007005\n\tRTC_PLL_GET                          = 0x40207011\n\tRTC_PLL_SET                          = 0x80207012\n\tRTC_RD_TIME                          = 0x40247009\n\tRTC_SET_TIME                         = 0x8024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x20007004\n\tRTC_UIE_ON                           = 0x20007003\n\tRTC_VL_CLR                           = 0x20007014\n\tRTC_VL_READ                          = 0x40047013\n\tRTC_WIE_OFF                          = 0x20007010\n\tRTC_WIE_ON                           = 0x2000700f\n\tRTC_WKALM_RD                         = 0x40287010\n\tRTC_WKALM_SET                        = 0x8028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x40047307\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x40047309\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x467f\n\tSIOCOUTQ                             = 0x7472\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x80047308\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x1\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x80\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x2\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0xffff\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1009\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x20\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x1029\n\tSO_DONTROUTE                         = 0x10\n\tSO_ERROR                             = 0x1007\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x8\n\tSO_LINGER                            = 0x80\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0x100\n\tSO_PASSCRED                          = 0x11\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x12\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1e\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x1028\n\tSO_RCVBUF                            = 0x1002\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x1004\n\tSO_RCVTIMEO                          = 0x1006\n\tSO_REUSEADDR                         = 0x4\n\tSO_REUSEPORT                         = 0x200\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x1001\n\tSO_SNDBUFFORCE                       = 0x1f\n\tSO_SNDLOWAT                          = 0x1003\n\tSO_SNDTIMEO                          = 0x1005\n\tSO_STYLE                             = 0x1008\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x1008\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x5407\n\tTCGETA                               = 0x5401\n\tTCGETS                               = 0x540d\n\tTCGETS2                              = 0x4030542a\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x5410\n\tTCSBRK                               = 0x5405\n\tTCSBRKP                              = 0x5486\n\tTCSETA                               = 0x5402\n\tTCSETAF                              = 0x5404\n\tTCSETAW                              = 0x5403\n\tTCSETS                               = 0x540e\n\tTCSETS2                              = 0x8030542b\n\tTCSETSF                              = 0x5410\n\tTCSETSF2                             = 0x8030542d\n\tTCSETSW                              = 0x540f\n\tTCSETSW2                             = 0x8030542c\n\tTCXONC                               = 0x5406\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x80047478\n\tTIOCEXCL                             = 0x740d\n\tTIOCGDEV                             = 0x40045432\n\tTIOCGETD                             = 0x7400\n\tTIOCGETP                             = 0x7408\n\tTIOCGEXCL                            = 0x40045440\n\tTIOCGICOUNT                          = 0x5492\n\tTIOCGLCKTRMIOS                       = 0x548b\n\tTIOCGLTC                             = 0x7474\n\tTIOCGPGRP                            = 0x40047477\n\tTIOCGPKT                             = 0x40045438\n\tTIOCGPTLCK                           = 0x40045439\n\tTIOCGPTN                             = 0x40045430\n\tTIOCGPTPEER                          = 0x20005441\n\tTIOCGRS485                           = 0x4020542e\n\tTIOCGSERIAL                          = 0x5484\n\tTIOCGSID                             = 0x7416\n\tTIOCGSOFTCAR                         = 0x5481\n\tTIOCGWINSZ                           = 0x40087468\n\tTIOCINQ                              = 0x467f\n\tTIOCLINUX                            = 0x5483\n\tTIOCMBIC                             = 0x741c\n\tTIOCMBIS                             = 0x741b\n\tTIOCMGET                             = 0x741d\n\tTIOCMIWAIT                           = 0x5491\n\tTIOCMSET                             = 0x741a\n\tTIOCM_CAR                            = 0x100\n\tTIOCM_CD                             = 0x100\n\tTIOCM_CTS                            = 0x40\n\tTIOCM_DSR                            = 0x400\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x200\n\tTIOCM_RNG                            = 0x200\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x20\n\tTIOCM_ST                             = 0x10\n\tTIOCNOTTY                            = 0x5471\n\tTIOCNXCL                             = 0x740e\n\tTIOCOUTQ                             = 0x7472\n\tTIOCPKT                              = 0x5470\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x5480\n\tTIOCSERCONFIG                        = 0x5488\n\tTIOCSERGETLSR                        = 0x548e\n\tTIOCSERGETMULTI                      = 0x548f\n\tTIOCSERGSTRUCT                       = 0x548d\n\tTIOCSERGWILD                         = 0x5489\n\tTIOCSERSETMULTI                      = 0x5490\n\tTIOCSERSWILD                         = 0x548a\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x7401\n\tTIOCSETN                             = 0x740a\n\tTIOCSETP                             = 0x7409\n\tTIOCSIG                              = 0x80045436\n\tTIOCSLCKTRMIOS                       = 0x548c\n\tTIOCSLTC                             = 0x7475\n\tTIOCSPGRP                            = 0x80047476\n\tTIOCSPTLCK                           = 0x80045431\n\tTIOCSRS485                           = 0xc020542f\n\tTIOCSSERIAL                          = 0x5485\n\tTIOCSSOFTCAR                         = 0x5482\n\tTIOCSTI                              = 0x5472\n\tTIOCSWINSZ                           = 0x80087467\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x8000\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x801054d5\n\tTUNDETACHFILTER                      = 0x801054d6\n\tTUNGETFEATURES                       = 0x400454cf\n\tTUNGETFILTER                         = 0x401054db\n\tTUNGETIFF                            = 0x400454d2\n\tTUNGETSNDBUF                         = 0x400454d3\n\tTUNGETVNETBE                         = 0x400454df\n\tTUNGETVNETHDRSZ                      = 0x400454d7\n\tTUNGETVNETLE                         = 0x400454dd\n\tTUNSETDEBUG                          = 0x800454c9\n\tTUNSETFILTEREBPF                     = 0x400454e1\n\tTUNSETGROUP                          = 0x800454ce\n\tTUNSETIFF                            = 0x800454ca\n\tTUNSETIFINDEX                        = 0x800454da\n\tTUNSETLINK                           = 0x800454cd\n\tTUNSETNOCSUM                         = 0x800454c8\n\tTUNSETOFFLOAD                        = 0x800454d0\n\tTUNSETOWNER                          = 0x800454cc\n\tTUNSETPERSIST                        = 0x800454cb\n\tTUNSETQUEUE                          = 0x800454d9\n\tTUNSETSNDBUF                         = 0x800454d4\n\tTUNSETSTEERINGEBPF                   = 0x400454e0\n\tTUNSETTXFILTER                       = 0x800454d1\n\tTUNSETVNETBE                         = 0x800454de\n\tTUNSETVNETHDRSZ                      = 0x800454d8\n\tTUNSETVNETLE                         = 0x800454dc\n\tUBI_IOCATT                           = 0x80186f40\n\tUBI_IOCDET                           = 0x80046f41\n\tUBI_IOCEBCH                          = 0x80044f02\n\tUBI_IOCEBER                          = 0x80044f01\n\tUBI_IOCEBISMAP                       = 0x40044f05\n\tUBI_IOCEBMAP                         = 0x80084f03\n\tUBI_IOCEBUNMAP                       = 0x80044f04\n\tUBI_IOCMKVOL                         = 0x80986f00\n\tUBI_IOCRMVOL                         = 0x80046f01\n\tUBI_IOCRNVOL                         = 0x91106f03\n\tUBI_IOCRSVOL                         = 0x800c6f02\n\tUBI_IOCSETVOLPROP                    = 0x80104f06\n\tUBI_IOCVOLCRBLK                      = 0x80804f07\n\tUBI_IOCVOLRMBLK                      = 0x20004f08\n\tUBI_IOCVOLUP                         = 0x80084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x10\n\tVEOL                                 = 0x11\n\tVEOL2                                = 0x6\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x4\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVSWTCH                               = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x40045702\n\tWDIOC_GETPRETIMEOUT                  = 0x40045709\n\tWDIOC_GETSTATUS                      = 0x40045701\n\tWDIOC_GETSUPPORT                     = 0x40285700\n\tWDIOC_GETTEMP                        = 0x40045703\n\tWDIOC_GETTIMELEFT                    = 0x4004570a\n\tWDIOC_GETTIMEOUT                     = 0x40045707\n\tWDIOC_KEEPALIVE                      = 0x40045705\n\tWDIOC_SETOPTIONS                     = 0x40045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mipsle,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x40041270\n\tBLKBSZSET                            = 0x80041271\n\tBLKFLSBUF                            = 0x20001261\n\tBLKFRAGET                            = 0x20001265\n\tBLKFRASET                            = 0x20001264\n\tBLKGETSIZE                           = 0x20001260\n\tBLKGETSIZE64                         = 0x40041272\n\tBLKPBSZGET                           = 0x2000127b\n\tBLKRAGET                             = 0x20001263\n\tBLKRASET                             = 0x20001262\n\tBLKROGET                             = 0x2000125e\n\tBLKROSET                             = 0x2000125d\n\tBLKRRPART                            = 0x2000125f\n\tBLKSECTGET                           = 0x20001267\n\tBLKSECTSET                           = 0x20001266\n\tBLKSSZGET                            = 0x20001268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x80\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x2000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x21\n\tF_GETLK64                            = 0x21\n\tF_GETOWN                             = 0x17\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x22\n\tF_SETLK64                            = 0x22\n\tF_SETLKW                             = 0x23\n\tF_SETLKW64                           = 0x23\n\tF_SETOWN                             = 0x18\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x100\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x80\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x200007b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x800\n\tMAP_ANONYMOUS                        = 0x800\n\tMAP_DENYWRITE                        = 0x2000\n\tMAP_EXECUTABLE                       = 0x4000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x1000\n\tMAP_HUGETLB                          = 0x80000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x8000\n\tMAP_NONBLOCK                         = 0x20000\n\tMAP_NORESERVE                        = 0x400\n\tMAP_POPULATE                         = 0x10000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_RENAME                           = 0x800\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x40000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x8\n\tO_ASYNC                              = 0x1000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x100\n\tO_DIRECT                             = 0x8000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x10\n\tO_EXCL                               = 0x400\n\tO_FSYNC                              = 0x4010\n\tO_LARGEFILE                          = 0x2000\n\tO_NDELAY                             = 0x80\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x800\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x80\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x4010\n\tO_SYNC                               = 0x4010\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x20002401\n\tPERF_EVENT_IOC_ENABLE                = 0x20002400\n\tPERF_EVENT_IOC_ID                    = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409\n\tPERF_EVENT_IOC_PERIOD                = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH               = 0x20002402\n\tPERF_EVENT_IOC_RESET                 = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF               = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x20002405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x8004743d\n\tPPPIOCATTCHAN                        = 0x80047438\n\tPPPIOCCONNECT                        = 0x8004743a\n\tPPPIOCDETACH                         = 0x8004743c\n\tPPPIOCDISCONN                        = 0x20007439\n\tPPPIOCGASYNCMAP                      = 0x40047458\n\tPPPIOCGCHAN                          = 0x40047437\n\tPPPIOCGDEBUG                         = 0x40047441\n\tPPPIOCGFLAGS                         = 0x4004745a\n\tPPPIOCGIDLE                          = 0x4008743f\n\tPPPIOCGL2TPSTATS                     = 0x40487436\n\tPPPIOCGMRU                           = 0x40047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x40047455\n\tPPPIOCGUNIT                          = 0x40047456\n\tPPPIOCGXASYNCMAP                     = 0x40207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x80087446\n\tPPPIOCSASYNCMAP                      = 0x80047457\n\tPPPIOCSCOMPRESS                      = 0x800c744d\n\tPPPIOCSDEBUG                         = 0x80047440\n\tPPPIOCSFLAGS                         = 0x80047459\n\tPPPIOCSMAXCID                        = 0x80047451\n\tPPPIOCSMRRU                          = 0x8004743b\n\tPPPIOCSMRU                           = 0x80047452\n\tPPPIOCSNPMODE                        = 0x8008744b\n\tPPPIOCSPASS                          = 0x80087447\n\tPPPIOCSRASYNCMAP                     = 0x80047454\n\tPPPIOCSXASYNCMAP                     = 0x8020744f\n\tPPPIOCXFERUNIT                       = 0x2000744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_THREAD_AREA               = 0x19\n\tPTRACE_GET_THREAD_AREA_3264          = 0xc4\n\tPTRACE_GET_WATCH_REGS                = 0xd0\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKDATA_3264                 = 0xc1\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKTEXT_3264                 = 0xc0\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKEDATA_3264                 = 0xc3\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKETEXT_3264                 = 0xc2\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SET_THREAD_AREA               = 0x1a\n\tPTRACE_SET_WATCH_REGS                = 0xd1\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x6\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x9\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x5\n\tRLIMIT_NPROC                         = 0x8\n\tRLIMIT_RSS                           = 0x7\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x20007002\n\tRTC_AIE_ON                           = 0x20007001\n\tRTC_ALM_READ                         = 0x40247008\n\tRTC_ALM_SET                          = 0x80247007\n\tRTC_EPOCH_READ                       = 0x4004700d\n\tRTC_EPOCH_SET                        = 0x8004700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x4004700b\n\tRTC_IRQP_SET                         = 0x8004700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x20007006\n\tRTC_PIE_ON                           = 0x20007005\n\tRTC_PLL_GET                          = 0x401c7011\n\tRTC_PLL_SET                          = 0x801c7012\n\tRTC_RD_TIME                          = 0x40247009\n\tRTC_SET_TIME                         = 0x8024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x20007004\n\tRTC_UIE_ON                           = 0x20007003\n\tRTC_VL_CLR                           = 0x20007014\n\tRTC_VL_READ                          = 0x40047013\n\tRTC_WIE_OFF                          = 0x20007010\n\tRTC_WIE_ON                           = 0x2000700f\n\tRTC_WKALM_RD                         = 0x40287010\n\tRTC_WKALM_SET                        = 0x8028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x40047307\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x40047309\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x467f\n\tSIOCOUTQ                             = 0x7472\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x80047308\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x1\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x80\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x2\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0xffff\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1009\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x20\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x1029\n\tSO_DONTROUTE                         = 0x10\n\tSO_ERROR                             = 0x1007\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x8\n\tSO_LINGER                            = 0x80\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0x100\n\tSO_PASSCRED                          = 0x11\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x12\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1e\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x1028\n\tSO_RCVBUF                            = 0x1002\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x1004\n\tSO_RCVTIMEO                          = 0x1006\n\tSO_REUSEADDR                         = 0x4\n\tSO_REUSEPORT                         = 0x200\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x1001\n\tSO_SNDBUFFORCE                       = 0x1f\n\tSO_SNDLOWAT                          = 0x1003\n\tSO_SNDTIMEO                          = 0x1005\n\tSO_STYLE                             = 0x1008\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x1008\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x5407\n\tTCGETA                               = 0x5401\n\tTCGETS                               = 0x540d\n\tTCGETS2                              = 0x4030542a\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x5410\n\tTCSBRK                               = 0x5405\n\tTCSBRKP                              = 0x5486\n\tTCSETA                               = 0x5402\n\tTCSETAF                              = 0x5404\n\tTCSETAW                              = 0x5403\n\tTCSETS                               = 0x540e\n\tTCSETS2                              = 0x8030542b\n\tTCSETSF                              = 0x5410\n\tTCSETSF2                             = 0x8030542d\n\tTCSETSW                              = 0x540f\n\tTCSETSW2                             = 0x8030542c\n\tTCXONC                               = 0x5406\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x80047478\n\tTIOCEXCL                             = 0x740d\n\tTIOCGDEV                             = 0x40045432\n\tTIOCGETD                             = 0x7400\n\tTIOCGETP                             = 0x7408\n\tTIOCGEXCL                            = 0x40045440\n\tTIOCGICOUNT                          = 0x5492\n\tTIOCGLCKTRMIOS                       = 0x548b\n\tTIOCGLTC                             = 0x7474\n\tTIOCGPGRP                            = 0x40047477\n\tTIOCGPKT                             = 0x40045438\n\tTIOCGPTLCK                           = 0x40045439\n\tTIOCGPTN                             = 0x40045430\n\tTIOCGPTPEER                          = 0x20005441\n\tTIOCGRS485                           = 0x4020542e\n\tTIOCGSERIAL                          = 0x5484\n\tTIOCGSID                             = 0x7416\n\tTIOCGSOFTCAR                         = 0x5481\n\tTIOCGWINSZ                           = 0x40087468\n\tTIOCINQ                              = 0x467f\n\tTIOCLINUX                            = 0x5483\n\tTIOCMBIC                             = 0x741c\n\tTIOCMBIS                             = 0x741b\n\tTIOCMGET                             = 0x741d\n\tTIOCMIWAIT                           = 0x5491\n\tTIOCMSET                             = 0x741a\n\tTIOCM_CAR                            = 0x100\n\tTIOCM_CD                             = 0x100\n\tTIOCM_CTS                            = 0x40\n\tTIOCM_DSR                            = 0x400\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x200\n\tTIOCM_RNG                            = 0x200\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x20\n\tTIOCM_ST                             = 0x10\n\tTIOCNOTTY                            = 0x5471\n\tTIOCNXCL                             = 0x740e\n\tTIOCOUTQ                             = 0x7472\n\tTIOCPKT                              = 0x5470\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x5480\n\tTIOCSERCONFIG                        = 0x5488\n\tTIOCSERGETLSR                        = 0x548e\n\tTIOCSERGETMULTI                      = 0x548f\n\tTIOCSERGSTRUCT                       = 0x548d\n\tTIOCSERGWILD                         = 0x5489\n\tTIOCSERSETMULTI                      = 0x5490\n\tTIOCSERSWILD                         = 0x548a\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x7401\n\tTIOCSETN                             = 0x740a\n\tTIOCSETP                             = 0x7409\n\tTIOCSIG                              = 0x80045436\n\tTIOCSLCKTRMIOS                       = 0x548c\n\tTIOCSLTC                             = 0x7475\n\tTIOCSPGRP                            = 0x80047476\n\tTIOCSPTLCK                           = 0x80045431\n\tTIOCSRS485                           = 0xc020542f\n\tTIOCSSERIAL                          = 0x5485\n\tTIOCSSOFTCAR                         = 0x5482\n\tTIOCSTI                              = 0x5472\n\tTIOCSWINSZ                           = 0x80087467\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x8000\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x800854d5\n\tTUNDETACHFILTER                      = 0x800854d6\n\tTUNGETFEATURES                       = 0x400454cf\n\tTUNGETFILTER                         = 0x400854db\n\tTUNGETIFF                            = 0x400454d2\n\tTUNGETSNDBUF                         = 0x400454d3\n\tTUNGETVNETBE                         = 0x400454df\n\tTUNGETVNETHDRSZ                      = 0x400454d7\n\tTUNGETVNETLE                         = 0x400454dd\n\tTUNSETDEBUG                          = 0x800454c9\n\tTUNSETFILTEREBPF                     = 0x400454e1\n\tTUNSETGROUP                          = 0x800454ce\n\tTUNSETIFF                            = 0x800454ca\n\tTUNSETIFINDEX                        = 0x800454da\n\tTUNSETLINK                           = 0x800454cd\n\tTUNSETNOCSUM                         = 0x800454c8\n\tTUNSETOFFLOAD                        = 0x800454d0\n\tTUNSETOWNER                          = 0x800454cc\n\tTUNSETPERSIST                        = 0x800454cb\n\tTUNSETQUEUE                          = 0x800454d9\n\tTUNSETSNDBUF                         = 0x800454d4\n\tTUNSETSTEERINGEBPF                   = 0x400454e0\n\tTUNSETTXFILTER                       = 0x800454d1\n\tTUNSETVNETBE                         = 0x800454de\n\tTUNSETVNETHDRSZ                      = 0x800454d8\n\tTUNSETVNETLE                         = 0x800454dc\n\tUBI_IOCATT                           = 0x80186f40\n\tUBI_IOCDET                           = 0x80046f41\n\tUBI_IOCEBCH                          = 0x80044f02\n\tUBI_IOCEBER                          = 0x80044f01\n\tUBI_IOCEBISMAP                       = 0x40044f05\n\tUBI_IOCEBMAP                         = 0x80084f03\n\tUBI_IOCEBUNMAP                       = 0x80044f04\n\tUBI_IOCMKVOL                         = 0x80986f00\n\tUBI_IOCRMVOL                         = 0x80046f01\n\tUBI_IOCRNVOL                         = 0x91106f03\n\tUBI_IOCRSVOL                         = 0x800c6f02\n\tUBI_IOCSETVOLPROP                    = 0x80104f06\n\tUBI_IOCVOLCRBLK                      = 0x80804f07\n\tUBI_IOCVOLRMBLK                      = 0x20004f08\n\tUBI_IOCVOLUP                         = 0x80084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x10\n\tVEOL                                 = 0x11\n\tVEOL2                                = 0x6\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x4\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVSWTCH                               = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x40045702\n\tWDIOC_GETPRETIMEOUT                  = 0x40045709\n\tWDIOC_GETSTATUS                      = 0x40045701\n\tWDIOC_GETSUPPORT                     = 0x40285700\n\tWDIOC_GETTEMP                        = 0x40045703\n\tWDIOC_GETTIMELEFT                    = 0x4004570a\n\tWDIOC_GETTIMEOUT                     = 0x40045707\n\tWDIOC_KEEPALIVE                      = 0x40045705\n\tWDIOC_SETOPTIONS                     = 0x40045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x20\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x17\n\tB110                                 = 0x3\n\tB115200                              = 0x11\n\tB1152000                             = 0x18\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x19\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x1a\n\tB230400                              = 0x12\n\tB2400                                = 0xb\n\tB2500000                             = 0x1b\n\tB300                                 = 0x7\n\tB3000000                             = 0x1c\n\tB3500000                             = 0x1d\n\tB38400                               = 0xf\n\tB4000000                             = 0x1e\n\tB460800                              = 0x13\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x14\n\tB57600                               = 0x10\n\tB576000                              = 0x15\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x16\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x40081270\n\tBLKBSZSET                            = 0x80081271\n\tBLKFLSBUF                            = 0x20001261\n\tBLKFRAGET                            = 0x20001265\n\tBLKFRASET                            = 0x20001264\n\tBLKGETSIZE                           = 0x20001260\n\tBLKGETSIZE64                         = 0x40081272\n\tBLKPBSZGET                           = 0x2000127b\n\tBLKRAGET                             = 0x20001263\n\tBLKRASET                             = 0x20001262\n\tBLKROGET                             = 0x2000125e\n\tBLKROSET                             = 0x2000125d\n\tBLKRRPART                            = 0x2000125f\n\tBLKSECTGET                           = 0x20001267\n\tBLKSECTSET                           = 0x20001266\n\tBLKSSZGET                            = 0x20001268\n\tBOTHER                               = 0x1f\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x8000\n\tBSDLY                                = 0x8000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0xff\n\tCBAUDEX                              = 0x0\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0xff0000\n\tCLOCAL                               = 0x8000\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x1000\n\tCR2                                  = 0x2000\n\tCR3                                  = 0x3000\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x3000\n\tCREAD                                = 0x800\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x100\n\tCS7                                  = 0x200\n\tCS8                                  = 0x300\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x300\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x400\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x40\n\tECHOE                                = 0x2\n\tECHOK                                = 0x4\n\tECHOKE                               = 0x1\n\tECHONL                               = 0x10\n\tECHOPRT                              = 0x20\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x4000\n\tFFDLY                                = 0x4000\n\tFLUSHO                               = 0x800000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x5\n\tF_GETLK64                            = 0xc\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0xd\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0xe\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x4000\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x100\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x400\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x200007b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x80\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x1000\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x400\n\tIXON                                 = 0x200\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x80\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x40\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x2000\n\tMCL_FUTURE                           = 0x4000\n\tMCL_ONFAULT                          = 0x8000\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNL2                                  = 0x200\n\tNL3                                  = 0x300\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x300\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80000000\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x4\n\tONLCR                                = 0x2\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x20000\n\tO_DIRECTORY                          = 0x4000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x8000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x404000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x1000\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x2000\n\tPENDIN                               = 0x20000000\n\tPERF_EVENT_IOC_DISABLE               = 0x20002401\n\tPERF_EVENT_IOC_ENABLE                = 0x20002400\n\tPERF_EVENT_IOC_ID                    = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409\n\tPERF_EVENT_IOC_PERIOD                = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x20002402\n\tPERF_EVENT_IOC_RESET                 = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF               = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x20002405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x8004743d\n\tPPPIOCATTCHAN                        = 0x80047438\n\tPPPIOCCONNECT                        = 0x8004743a\n\tPPPIOCDETACH                         = 0x8004743c\n\tPPPIOCDISCONN                        = 0x20007439\n\tPPPIOCGASYNCMAP                      = 0x40047458\n\tPPPIOCGCHAN                          = 0x40047437\n\tPPPIOCGDEBUG                         = 0x40047441\n\tPPPIOCGFLAGS                         = 0x4004745a\n\tPPPIOCGIDLE                          = 0x4010743f\n\tPPPIOCGL2TPSTATS                     = 0x40487436\n\tPPPIOCGMRU                           = 0x40047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x40047455\n\tPPPIOCGUNIT                          = 0x40047456\n\tPPPIOCGXASYNCMAP                     = 0x40207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x80107446\n\tPPPIOCSASYNCMAP                      = 0x80047457\n\tPPPIOCSCOMPRESS                      = 0x8010744d\n\tPPPIOCSDEBUG                         = 0x80047440\n\tPPPIOCSFLAGS                         = 0x80047459\n\tPPPIOCSMAXCID                        = 0x80047451\n\tPPPIOCSMRRU                          = 0x8004743b\n\tPPPIOCSMRU                           = 0x80047452\n\tPPPIOCSNPMODE                        = 0x8008744b\n\tPPPIOCSPASS                          = 0x80107447\n\tPPPIOCSRASYNCMAP                     = 0x80047454\n\tPPPIOCSXASYNCMAP                     = 0x8020744f\n\tPPPIOCXFERUNIT                       = 0x2000744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_SAO                             = 0x10\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETEVRREGS                    = 0x14\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGS64                     = 0x16\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GETVRREGS                     = 0x12\n\tPTRACE_GETVSRREGS                    = 0x1b\n\tPTRACE_GET_DEBUGREG                  = 0x19\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETEVRREGS                    = 0x15\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGS64                     = 0x17\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SETVRREGS                     = 0x13\n\tPTRACE_SETVSRREGS                    = 0x1c\n\tPTRACE_SET_DEBUGREG                  = 0x1a\n\tPTRACE_SINGLEBLOCK                   = 0x100\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tPT_CCR                               = 0x26\n\tPT_CTR                               = 0x23\n\tPT_DAR                               = 0x29\n\tPT_DSCR                              = 0x2c\n\tPT_DSISR                             = 0x2a\n\tPT_FPR0                              = 0x30\n\tPT_FPSCR                             = 0x50\n\tPT_LNK                               = 0x24\n\tPT_MSR                               = 0x21\n\tPT_NIP                               = 0x20\n\tPT_ORIG_R3                           = 0x22\n\tPT_R0                                = 0x0\n\tPT_R1                                = 0x1\n\tPT_R10                               = 0xa\n\tPT_R11                               = 0xb\n\tPT_R12                               = 0xc\n\tPT_R13                               = 0xd\n\tPT_R14                               = 0xe\n\tPT_R15                               = 0xf\n\tPT_R16                               = 0x10\n\tPT_R17                               = 0x11\n\tPT_R18                               = 0x12\n\tPT_R19                               = 0x13\n\tPT_R2                                = 0x2\n\tPT_R20                               = 0x14\n\tPT_R21                               = 0x15\n\tPT_R22                               = 0x16\n\tPT_R23                               = 0x17\n\tPT_R24                               = 0x18\n\tPT_R25                               = 0x19\n\tPT_R26                               = 0x1a\n\tPT_R27                               = 0x1b\n\tPT_R28                               = 0x1c\n\tPT_R29                               = 0x1d\n\tPT_R3                                = 0x3\n\tPT_R30                               = 0x1e\n\tPT_R31                               = 0x1f\n\tPT_R4                                = 0x4\n\tPT_R5                                = 0x5\n\tPT_R6                                = 0x6\n\tPT_R7                                = 0x7\n\tPT_R8                                = 0x8\n\tPT_R9                                = 0x9\n\tPT_REGS_COUNT                        = 0x2c\n\tPT_RESULT                            = 0x2b\n\tPT_SOFTE                             = 0x27\n\tPT_TRAP                              = 0x28\n\tPT_VR0                               = 0x52\n\tPT_VRSAVE                            = 0x94\n\tPT_VSCR                              = 0x93\n\tPT_VSR0                              = 0x96\n\tPT_VSR31                             = 0xd4\n\tPT_XER                               = 0x25\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x20007002\n\tRTC_AIE_ON                           = 0x20007001\n\tRTC_ALM_READ                         = 0x40247008\n\tRTC_ALM_SET                          = 0x80247007\n\tRTC_EPOCH_READ                       = 0x4008700d\n\tRTC_EPOCH_SET                        = 0x8008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x4008700b\n\tRTC_IRQP_SET                         = 0x8008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x20007006\n\tRTC_PIE_ON                           = 0x20007005\n\tRTC_PLL_GET                          = 0x40207011\n\tRTC_PLL_SET                          = 0x80207012\n\tRTC_RD_TIME                          = 0x40247009\n\tRTC_SET_TIME                         = 0x8024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x20007004\n\tRTC_UIE_ON                           = 0x20007003\n\tRTC_VL_CLR                           = 0x20007014\n\tRTC_VL_READ                          = 0x40047013\n\tRTC_WIE_OFF                          = 0x20007010\n\tRTC_WIE_ON                           = 0x2000700f\n\tRTC_WKALM_RD                         = 0x40287010\n\tRTC_WKALM_SET                        = 0x8028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x4004667f\n\tSIOCOUTQ                             = 0x40047473\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x14\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x15\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x10\n\tSO_RCVTIMEO                          = 0x12\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x11\n\tSO_SNDTIMEO                          = 0x13\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x400\n\tTAB2                                 = 0x800\n\tTAB3                                 = 0xc00\n\tTABDLY                               = 0xc00\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x2000741f\n\tTCGETA                               = 0x40147417\n\tTCGETS                               = 0x402c7413\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x2000741d\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x80147418\n\tTCSETAF                              = 0x8014741c\n\tTCSETAW                              = 0x80147419\n\tTCSETS                               = 0x802c7414\n\tTCSETSF                              = 0x802c7416\n\tTCSETSW                              = 0x802c7415\n\tTCXONC                               = 0x2000741e\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x40045432\n\tTIOCGETC                             = 0x40067412\n\tTIOCGETD                             = 0x5424\n\tTIOCGETP                             = 0x40067408\n\tTIOCGEXCL                            = 0x40045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGLTC                             = 0x40067474\n\tTIOCGPGRP                            = 0x40047477\n\tTIOCGPKT                             = 0x40045438\n\tTIOCGPTLCK                           = 0x40045439\n\tTIOCGPTN                             = 0x40045430\n\tTIOCGPTPEER                          = 0x20005441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x40087468\n\tTIOCINQ                              = 0x4004667f\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_LOOP                           = 0x8000\n\tTIOCM_OUT1                           = 0x2000\n\tTIOCM_OUT2                           = 0x4000\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x40047473\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETC                             = 0x80067411\n\tTIOCSETD                             = 0x5423\n\tTIOCSETN                             = 0x8006740a\n\tTIOCSETP                             = 0x80067409\n\tTIOCSIG                              = 0x80045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSLTC                             = 0x80067475\n\tTIOCSPGRP                            = 0x80047476\n\tTIOCSPTLCK                           = 0x80045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTART                            = 0x2000746e\n\tTIOCSTI                              = 0x5412\n\tTIOCSTOP                             = 0x2000746f\n\tTIOCSWINSZ                           = 0x80087467\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x400000\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x801054d5\n\tTUNDETACHFILTER                      = 0x801054d6\n\tTUNGETFEATURES                       = 0x400454cf\n\tTUNGETFILTER                         = 0x401054db\n\tTUNGETIFF                            = 0x400454d2\n\tTUNGETSNDBUF                         = 0x400454d3\n\tTUNGETVNETBE                         = 0x400454df\n\tTUNGETVNETHDRSZ                      = 0x400454d7\n\tTUNGETVNETLE                         = 0x400454dd\n\tTUNSETDEBUG                          = 0x800454c9\n\tTUNSETFILTEREBPF                     = 0x400454e1\n\tTUNSETGROUP                          = 0x800454ce\n\tTUNSETIFF                            = 0x800454ca\n\tTUNSETIFINDEX                        = 0x800454da\n\tTUNSETLINK                           = 0x800454cd\n\tTUNSETNOCSUM                         = 0x800454c8\n\tTUNSETOFFLOAD                        = 0x800454d0\n\tTUNSETOWNER                          = 0x800454cc\n\tTUNSETPERSIST                        = 0x800454cb\n\tTUNSETQUEUE                          = 0x800454d9\n\tTUNSETSNDBUF                         = 0x800454d4\n\tTUNSETSTEERINGEBPF                   = 0x400454e0\n\tTUNSETTXFILTER                       = 0x800454d1\n\tTUNSETVNETBE                         = 0x800454de\n\tTUNSETVNETHDRSZ                      = 0x800454d8\n\tTUNSETVNETLE                         = 0x800454dc\n\tUBI_IOCATT                           = 0x80186f40\n\tUBI_IOCDET                           = 0x80046f41\n\tUBI_IOCEBCH                          = 0x80044f02\n\tUBI_IOCEBER                          = 0x80044f01\n\tUBI_IOCEBISMAP                       = 0x40044f05\n\tUBI_IOCEBMAP                         = 0x80084f03\n\tUBI_IOCEBUNMAP                       = 0x80044f04\n\tUBI_IOCMKVOL                         = 0x80986f00\n\tUBI_IOCRMVOL                         = 0x80046f01\n\tUBI_IOCRNVOL                         = 0x91106f03\n\tUBI_IOCRSVOL                         = 0x800c6f02\n\tUBI_IOCSETVOLPROP                    = 0x80104f06\n\tUBI_IOCVOLCRBLK                      = 0x80804f07\n\tUBI_IOCVOLRMBLK                      = 0x20004f08\n\tUBI_IOCVOLUP                         = 0x80084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0x10\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0x6\n\tVEOL2                                = 0x8\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x5\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xb\n\tVSTART                               = 0xd\n\tVSTOP                                = 0xe\n\tVSUSP                                = 0xc\n\tVSWTC                                = 0x9\n\tVT0                                  = 0x0\n\tVT1                                  = 0x10000\n\tVTDLY                                = 0x10000\n\tVTIME                                = 0x7\n\tVWERASE                              = 0xa\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x40045702\n\tWDIOC_GETPRETIMEOUT                  = 0x40045709\n\tWDIOC_GETSTATUS                      = 0x40045701\n\tWDIOC_GETSUPPORT                     = 0x40285700\n\tWDIOC_GETTEMP                        = 0x40045703\n\tWDIOC_GETTIMELEFT                    = 0x4004570a\n\tWDIOC_GETTIMEOUT                     = 0x40045707\n\tWDIOC_KEEPALIVE                      = 0x40045705\n\tWDIOC_SETOPTIONS                     = 0x40045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4000\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0xc00\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64le,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x17\n\tB110                                 = 0x3\n\tB115200                              = 0x11\n\tB1152000                             = 0x18\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x19\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x1a\n\tB230400                              = 0x12\n\tB2400                                = 0xb\n\tB2500000                             = 0x1b\n\tB300                                 = 0x7\n\tB3000000                             = 0x1c\n\tB3500000                             = 0x1d\n\tB38400                               = 0xf\n\tB4000000                             = 0x1e\n\tB460800                              = 0x13\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x14\n\tB57600                               = 0x10\n\tB576000                              = 0x15\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x16\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x40081270\n\tBLKBSZSET                            = 0x80081271\n\tBLKFLSBUF                            = 0x20001261\n\tBLKFRAGET                            = 0x20001265\n\tBLKFRASET                            = 0x20001264\n\tBLKGETSIZE                           = 0x20001260\n\tBLKGETSIZE64                         = 0x40081272\n\tBLKPBSZGET                           = 0x2000127b\n\tBLKRAGET                             = 0x20001263\n\tBLKRASET                             = 0x20001262\n\tBLKROGET                             = 0x2000125e\n\tBLKROSET                             = 0x2000125d\n\tBLKRRPART                            = 0x2000125f\n\tBLKSECTGET                           = 0x20001267\n\tBLKSECTSET                           = 0x20001266\n\tBLKSSZGET                            = 0x20001268\n\tBOTHER                               = 0x1f\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x8000\n\tBSDLY                                = 0x8000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0xff\n\tCBAUDEX                              = 0x0\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0xff0000\n\tCLOCAL                               = 0x8000\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x1000\n\tCR2                                  = 0x2000\n\tCR3                                  = 0x3000\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x3000\n\tCREAD                                = 0x800\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x100\n\tCS7                                  = 0x200\n\tCS8                                  = 0x300\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x300\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x400\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x40\n\tECHOE                                = 0x2\n\tECHOK                                = 0x4\n\tECHOKE                               = 0x1\n\tECHONL                               = 0x10\n\tECHOPRT                              = 0x20\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x4000\n\tFFDLY                                = 0x4000\n\tFLUSHO                               = 0x800000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x5\n\tF_GETLK64                            = 0xc\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0xd\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0xe\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x4000\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x100\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x400\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x200007b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x80\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x1000\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x400\n\tIXON                                 = 0x200\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x80\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x40\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x2000\n\tMCL_FUTURE                           = 0x4000\n\tMCL_ONFAULT                          = 0x8000\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNL2                                  = 0x200\n\tNL3                                  = 0x300\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x300\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80000000\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x4\n\tONLCR                                = 0x2\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x20000\n\tO_DIRECTORY                          = 0x4000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x8000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x404000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x1000\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x2000\n\tPENDIN                               = 0x20000000\n\tPERF_EVENT_IOC_DISABLE               = 0x20002401\n\tPERF_EVENT_IOC_ENABLE                = 0x20002400\n\tPERF_EVENT_IOC_ID                    = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409\n\tPERF_EVENT_IOC_PERIOD                = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x20002402\n\tPERF_EVENT_IOC_RESET                 = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF               = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x20002405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x8004743d\n\tPPPIOCATTCHAN                        = 0x80047438\n\tPPPIOCCONNECT                        = 0x8004743a\n\tPPPIOCDETACH                         = 0x8004743c\n\tPPPIOCDISCONN                        = 0x20007439\n\tPPPIOCGASYNCMAP                      = 0x40047458\n\tPPPIOCGCHAN                          = 0x40047437\n\tPPPIOCGDEBUG                         = 0x40047441\n\tPPPIOCGFLAGS                         = 0x4004745a\n\tPPPIOCGIDLE                          = 0x4010743f\n\tPPPIOCGL2TPSTATS                     = 0x40487436\n\tPPPIOCGMRU                           = 0x40047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x40047455\n\tPPPIOCGUNIT                          = 0x40047456\n\tPPPIOCGXASYNCMAP                     = 0x40207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x80107446\n\tPPPIOCSASYNCMAP                      = 0x80047457\n\tPPPIOCSCOMPRESS                      = 0x8010744d\n\tPPPIOCSDEBUG                         = 0x80047440\n\tPPPIOCSFLAGS                         = 0x80047459\n\tPPPIOCSMAXCID                        = 0x80047451\n\tPPPIOCSMRRU                          = 0x8004743b\n\tPPPIOCSMRU                           = 0x80047452\n\tPPPIOCSNPMODE                        = 0x8008744b\n\tPPPIOCSPASS                          = 0x80107447\n\tPPPIOCSRASYNCMAP                     = 0x80047454\n\tPPPIOCSXASYNCMAP                     = 0x8020744f\n\tPPPIOCXFERUNIT                       = 0x2000744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_SAO                             = 0x10\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETEVRREGS                    = 0x14\n\tPTRACE_GETFPREGS                     = 0xe\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGS64                     = 0x16\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GETVRREGS                     = 0x12\n\tPTRACE_GETVSRREGS                    = 0x1b\n\tPTRACE_GET_DEBUGREG                  = 0x19\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETEVRREGS                    = 0x15\n\tPTRACE_SETFPREGS                     = 0xf\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGS64                     = 0x17\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SETVRREGS                     = 0x13\n\tPTRACE_SETVSRREGS                    = 0x1c\n\tPTRACE_SET_DEBUGREG                  = 0x1a\n\tPTRACE_SINGLEBLOCK                   = 0x100\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tPT_CCR                               = 0x26\n\tPT_CTR                               = 0x23\n\tPT_DAR                               = 0x29\n\tPT_DSCR                              = 0x2c\n\tPT_DSISR                             = 0x2a\n\tPT_FPR0                              = 0x30\n\tPT_FPSCR                             = 0x50\n\tPT_LNK                               = 0x24\n\tPT_MSR                               = 0x21\n\tPT_NIP                               = 0x20\n\tPT_ORIG_R3                           = 0x22\n\tPT_R0                                = 0x0\n\tPT_R1                                = 0x1\n\tPT_R10                               = 0xa\n\tPT_R11                               = 0xb\n\tPT_R12                               = 0xc\n\tPT_R13                               = 0xd\n\tPT_R14                               = 0xe\n\tPT_R15                               = 0xf\n\tPT_R16                               = 0x10\n\tPT_R17                               = 0x11\n\tPT_R18                               = 0x12\n\tPT_R19                               = 0x13\n\tPT_R2                                = 0x2\n\tPT_R20                               = 0x14\n\tPT_R21                               = 0x15\n\tPT_R22                               = 0x16\n\tPT_R23                               = 0x17\n\tPT_R24                               = 0x18\n\tPT_R25                               = 0x19\n\tPT_R26                               = 0x1a\n\tPT_R27                               = 0x1b\n\tPT_R28                               = 0x1c\n\tPT_R29                               = 0x1d\n\tPT_R3                                = 0x3\n\tPT_R30                               = 0x1e\n\tPT_R31                               = 0x1f\n\tPT_R4                                = 0x4\n\tPT_R5                                = 0x5\n\tPT_R6                                = 0x6\n\tPT_R7                                = 0x7\n\tPT_R8                                = 0x8\n\tPT_R9                                = 0x9\n\tPT_REGS_COUNT                        = 0x2c\n\tPT_RESULT                            = 0x2b\n\tPT_SOFTE                             = 0x27\n\tPT_TRAP                              = 0x28\n\tPT_VR0                               = 0x52\n\tPT_VRSAVE                            = 0x94\n\tPT_VSCR                              = 0x93\n\tPT_VSR0                              = 0x96\n\tPT_VSR31                             = 0xd4\n\tPT_XER                               = 0x25\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x20007002\n\tRTC_AIE_ON                           = 0x20007001\n\tRTC_ALM_READ                         = 0x40247008\n\tRTC_ALM_SET                          = 0x80247007\n\tRTC_EPOCH_READ                       = 0x4008700d\n\tRTC_EPOCH_SET                        = 0x8008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x4008700b\n\tRTC_IRQP_SET                         = 0x8008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x20007006\n\tRTC_PIE_ON                           = 0x20007005\n\tRTC_PLL_GET                          = 0x40207011\n\tRTC_PLL_SET                          = 0x80207012\n\tRTC_RD_TIME                          = 0x40247009\n\tRTC_SET_TIME                         = 0x8024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x20007004\n\tRTC_UIE_ON                           = 0x20007003\n\tRTC_VL_CLR                           = 0x20007014\n\tRTC_VL_READ                          = 0x40047013\n\tRTC_WIE_OFF                          = 0x20007010\n\tRTC_WIE_ON                           = 0x2000700f\n\tRTC_WKALM_RD                         = 0x40287010\n\tRTC_WKALM_SET                        = 0x8028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x4004667f\n\tSIOCOUTQ                             = 0x40047473\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x14\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x15\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x10\n\tSO_RCVTIMEO                          = 0x12\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x11\n\tSO_SNDTIMEO                          = 0x13\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x400\n\tTAB2                                 = 0x800\n\tTAB3                                 = 0xc00\n\tTABDLY                               = 0xc00\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x2000741f\n\tTCGETA                               = 0x40147417\n\tTCGETS                               = 0x402c7413\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x2000741d\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x80147418\n\tTCSETAF                              = 0x8014741c\n\tTCSETAW                              = 0x80147419\n\tTCSETS                               = 0x802c7414\n\tTCSETSF                              = 0x802c7416\n\tTCSETSW                              = 0x802c7415\n\tTCXONC                               = 0x2000741e\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x40045432\n\tTIOCGETC                             = 0x40067412\n\tTIOCGETD                             = 0x5424\n\tTIOCGETP                             = 0x40067408\n\tTIOCGEXCL                            = 0x40045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGLTC                             = 0x40067474\n\tTIOCGPGRP                            = 0x40047477\n\tTIOCGPKT                             = 0x40045438\n\tTIOCGPTLCK                           = 0x40045439\n\tTIOCGPTN                             = 0x40045430\n\tTIOCGPTPEER                          = 0x20005441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x40087468\n\tTIOCINQ                              = 0x4004667f\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_LOOP                           = 0x8000\n\tTIOCM_OUT1                           = 0x2000\n\tTIOCM_OUT2                           = 0x4000\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x40047473\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETC                             = 0x80067411\n\tTIOCSETD                             = 0x5423\n\tTIOCSETN                             = 0x8006740a\n\tTIOCSETP                             = 0x80067409\n\tTIOCSIG                              = 0x80045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSLTC                             = 0x80067475\n\tTIOCSPGRP                            = 0x80047476\n\tTIOCSPTLCK                           = 0x80045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTART                            = 0x2000746e\n\tTIOCSTI                              = 0x5412\n\tTIOCSTOP                             = 0x2000746f\n\tTIOCSWINSZ                           = 0x80087467\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x400000\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x801054d5\n\tTUNDETACHFILTER                      = 0x801054d6\n\tTUNGETFEATURES                       = 0x400454cf\n\tTUNGETFILTER                         = 0x401054db\n\tTUNGETIFF                            = 0x400454d2\n\tTUNGETSNDBUF                         = 0x400454d3\n\tTUNGETVNETBE                         = 0x400454df\n\tTUNGETVNETHDRSZ                      = 0x400454d7\n\tTUNGETVNETLE                         = 0x400454dd\n\tTUNSETDEBUG                          = 0x800454c9\n\tTUNSETFILTEREBPF                     = 0x400454e1\n\tTUNSETGROUP                          = 0x800454ce\n\tTUNSETIFF                            = 0x800454ca\n\tTUNSETIFINDEX                        = 0x800454da\n\tTUNSETLINK                           = 0x800454cd\n\tTUNSETNOCSUM                         = 0x800454c8\n\tTUNSETOFFLOAD                        = 0x800454d0\n\tTUNSETOWNER                          = 0x800454cc\n\tTUNSETPERSIST                        = 0x800454cb\n\tTUNSETQUEUE                          = 0x800454d9\n\tTUNSETSNDBUF                         = 0x800454d4\n\tTUNSETSTEERINGEBPF                   = 0x400454e0\n\tTUNSETTXFILTER                       = 0x800454d1\n\tTUNSETVNETBE                         = 0x800454de\n\tTUNSETVNETHDRSZ                      = 0x800454d8\n\tTUNSETVNETLE                         = 0x800454dc\n\tUBI_IOCATT                           = 0x80186f40\n\tUBI_IOCDET                           = 0x80046f41\n\tUBI_IOCEBCH                          = 0x80044f02\n\tUBI_IOCEBER                          = 0x80044f01\n\tUBI_IOCEBISMAP                       = 0x40044f05\n\tUBI_IOCEBMAP                         = 0x80084f03\n\tUBI_IOCEBUNMAP                       = 0x80044f04\n\tUBI_IOCMKVOL                         = 0x80986f00\n\tUBI_IOCRMVOL                         = 0x80046f01\n\tUBI_IOCRNVOL                         = 0x91106f03\n\tUBI_IOCRSVOL                         = 0x800c6f02\n\tUBI_IOCSETVOLPROP                    = 0x80104f06\n\tUBI_IOCVOLCRBLK                      = 0x80804f07\n\tUBI_IOCVOLRMBLK                      = 0x20004f08\n\tUBI_IOCVOLUP                         = 0x80084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0x10\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0x6\n\tVEOL2                                = 0x8\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x5\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xb\n\tVSTART                               = 0xd\n\tVSTOP                                = 0xe\n\tVSUSP                                = 0xc\n\tVSWTC                                = 0x9\n\tVT0                                  = 0x0\n\tVT1                                  = 0x10000\n\tVTDLY                                = 0x10000\n\tVTIME                                = 0x7\n\tVWERASE                              = 0xa\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x40045702\n\tWDIOC_GETPRETIMEOUT                  = 0x40045709\n\tWDIOC_GETSTATUS                      = 0x40045701\n\tWDIOC_GETSUPPORT                     = 0x40285700\n\tWDIOC_GETTEMP                        = 0x40045703\n\tWDIOC_GETTIMELEFT                    = 0x4004570a\n\tWDIOC_GETTIMEOUT                     = 0x40045707\n\tWDIOC_KEEPALIVE                      = 0x40045705\n\tWDIOC_SETOPTIONS                     = 0x40045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4000\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0xc00\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build riscv64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x80081270\n\tBLKBSZSET                            = 0x40081271\n\tBLKFLSBUF                            = 0x1261\n\tBLKFRAGET                            = 0x1265\n\tBLKFRASET                            = 0x1264\n\tBLKGETSIZE                           = 0x1260\n\tBLKGETSIZE64                         = 0x80081272\n\tBLKPBSZGET                           = 0x127b\n\tBLKRAGET                             = 0x1263\n\tBLKRASET                             = 0x1262\n\tBLKROGET                             = 0x125e\n\tBLKROSET                             = 0x125d\n\tBLKRRPART                            = 0x125f\n\tBLKSECTGET                           = 0x1267\n\tBLKSECTSET                           = 0x1266\n\tBLKSSZGET                            = 0x1268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x1000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x5\n\tF_GETLK64                            = 0x5\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0x6\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0x7\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x8000\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x7b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x2000\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x4000\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_SYNC                             = 0x80000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x4000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x2401\n\tPERF_EVENT_IOC_ENABLE                = 0x2400\n\tPERF_EVENT_IOC_ID                    = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409\n\tPERF_EVENT_IOC_PERIOD                = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x2402\n\tPERF_EVENT_IOC_RESET                 = 0x2403\n\tPERF_EVENT_IOC_SET_BPF               = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x2405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x4004743d\n\tPPPIOCATTCHAN                        = 0x40047438\n\tPPPIOCCONNECT                        = 0x4004743a\n\tPPPIOCDETACH                         = 0x4004743c\n\tPPPIOCDISCONN                        = 0x7439\n\tPPPIOCGASYNCMAP                      = 0x80047458\n\tPPPIOCGCHAN                          = 0x80047437\n\tPPPIOCGDEBUG                         = 0x80047441\n\tPPPIOCGFLAGS                         = 0x8004745a\n\tPPPIOCGIDLE                          = 0x8010743f\n\tPPPIOCGL2TPSTATS                     = 0x80487436\n\tPPPIOCGMRU                           = 0x80047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x80047455\n\tPPPIOCGUNIT                          = 0x80047456\n\tPPPIOCGXASYNCMAP                     = 0x80207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x40107446\n\tPPPIOCSASYNCMAP                      = 0x40047457\n\tPPPIOCSCOMPRESS                      = 0x4010744d\n\tPPPIOCSDEBUG                         = 0x40047440\n\tPPPIOCSFLAGS                         = 0x40047459\n\tPPPIOCSMAXCID                        = 0x40047451\n\tPPPIOCSMRRU                          = 0x4004743b\n\tPPPIOCSMRU                           = 0x40047452\n\tPPPIOCSNPMODE                        = 0x4008744b\n\tPPPIOCSPASS                          = 0x40107447\n\tPPPIOCSRASYNCMAP                     = 0x40047454\n\tPPPIOCSXASYNCMAP                     = 0x4020744f\n\tPPPIOCXFERUNIT                       = 0x744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TRACEME                       = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x7002\n\tRTC_AIE_ON                           = 0x7001\n\tRTC_ALM_READ                         = 0x80247008\n\tRTC_ALM_SET                          = 0x40247007\n\tRTC_EPOCH_READ                       = 0x8008700d\n\tRTC_EPOCH_SET                        = 0x4008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x8008700b\n\tRTC_IRQP_SET                         = 0x4008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x7006\n\tRTC_PIE_ON                           = 0x7005\n\tRTC_PLL_GET                          = 0x80207011\n\tRTC_PLL_SET                          = 0x40207012\n\tRTC_RD_TIME                          = 0x80247009\n\tRTC_SET_TIME                         = 0x4024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x7004\n\tRTC_UIE_ON                           = 0x7003\n\tRTC_VL_CLR                           = 0x7014\n\tRTC_VL_READ                          = 0x80047013\n\tRTC_WIE_OFF                          = 0x7010\n\tRTC_WIE_ON                           = 0x700f\n\tRTC_WKALM_RD                         = 0x80287010\n\tRTC_WKALM_SET                        = 0x4028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x541b\n\tSIOCOUTQ                             = 0x5411\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x10\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x11\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x12\n\tSO_RCVTIMEO                          = 0x14\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x13\n\tSO_SNDTIMEO                          = 0x15\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x540b\n\tTCGETA                               = 0x5405\n\tTCGETS                               = 0x5401\n\tTCGETS2                              = 0x802c542a\n\tTCGETX                               = 0x5432\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x5409\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x5406\n\tTCSETAF                              = 0x5408\n\tTCSETAW                              = 0x5407\n\tTCSETS                               = 0x5402\n\tTCSETS2                              = 0x402c542b\n\tTCSETSF                              = 0x5404\n\tTCSETSF2                             = 0x402c542d\n\tTCSETSW                              = 0x5403\n\tTCSETSW2                             = 0x402c542c\n\tTCSETX                               = 0x5433\n\tTCSETXF                              = 0x5434\n\tTCSETXW                              = 0x5435\n\tTCXONC                               = 0x540a\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x80045432\n\tTIOCGETD                             = 0x5424\n\tTIOCGEXCL                            = 0x80045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGPGRP                            = 0x540f\n\tTIOCGPKT                             = 0x80045438\n\tTIOCGPTLCK                           = 0x80045439\n\tTIOCGPTN                             = 0x80045430\n\tTIOCGPTPEER                          = 0x5441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x5413\n\tTIOCINQ                              = 0x541b\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x5411\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x5423\n\tTIOCSIG                              = 0x40045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSPGRP                            = 0x5410\n\tTIOCSPTLCK                           = 0x40045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTI                              = 0x5412\n\tTIOCSWINSZ                           = 0x5414\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x100\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x401054d5\n\tTUNDETACHFILTER                      = 0x401054d6\n\tTUNGETFEATURES                       = 0x800454cf\n\tTUNGETFILTER                         = 0x801054db\n\tTUNGETIFF                            = 0x800454d2\n\tTUNGETSNDBUF                         = 0x800454d3\n\tTUNGETVNETBE                         = 0x800454df\n\tTUNGETVNETHDRSZ                      = 0x800454d7\n\tTUNGETVNETLE                         = 0x800454dd\n\tTUNSETDEBUG                          = 0x400454c9\n\tTUNSETFILTEREBPF                     = 0x800454e1\n\tTUNSETGROUP                          = 0x400454ce\n\tTUNSETIFF                            = 0x400454ca\n\tTUNSETIFINDEX                        = 0x400454da\n\tTUNSETLINK                           = 0x400454cd\n\tTUNSETNOCSUM                         = 0x400454c8\n\tTUNSETOFFLOAD                        = 0x400454d0\n\tTUNSETOWNER                          = 0x400454cc\n\tTUNSETPERSIST                        = 0x400454cb\n\tTUNSETQUEUE                          = 0x400454d9\n\tTUNSETSNDBUF                         = 0x400454d4\n\tTUNSETSTEERINGEBPF                   = 0x800454e0\n\tTUNSETTXFILTER                       = 0x400454d1\n\tTUNSETVNETBE                         = 0x400454de\n\tTUNSETVNETHDRSZ                      = 0x400454d8\n\tTUNSETVNETLE                         = 0x400454dc\n\tUBI_IOCATT                           = 0x40186f40\n\tUBI_IOCDET                           = 0x40046f41\n\tUBI_IOCEBCH                          = 0x40044f02\n\tUBI_IOCEBER                          = 0x40044f01\n\tUBI_IOCEBISMAP                       = 0x80044f05\n\tUBI_IOCEBMAP                         = 0x40084f03\n\tUBI_IOCEBUNMAP                       = 0x40044f04\n\tUBI_IOCMKVOL                         = 0x40986f00\n\tUBI_IOCRMVOL                         = 0x40046f01\n\tUBI_IOCRNVOL                         = 0x51106f03\n\tUBI_IOCRSVOL                         = 0x400c6f02\n\tUBI_IOCSETVOLPROP                    = 0x40104f06\n\tUBI_IOCVOLCRBLK                      = 0x40804f07\n\tUBI_IOCVOLRMBLK                      = 0x4f08\n\tUBI_IOCVOLUP                         = 0x40084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0xb\n\tVEOL2                                = 0x10\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x6\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x80045702\n\tWDIOC_GETPRETIMEOUT                  = 0x80045709\n\tWDIOC_GETSTATUS                      = 0x80045701\n\tWDIOC_GETSUPPORT                     = 0x80285700\n\tWDIOC_GETTEMP                        = 0x80045703\n\tWDIOC_GETTIMELEFT                    = 0x8004570a\n\tWDIOC_GETTIMEOUT                     = 0x80045707\n\tWDIOC_KEEPALIVE                      = 0x80045705\n\tWDIOC_SETOPTIONS                     = 0x80045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build s390x,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                           = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                     = 0xadf5\n\tAFFS_SUPER_MAGIC                     = 0xadff\n\tAFS_FS_MAGIC                         = 0x6b414653\n\tAFS_SUPER_MAGIC                      = 0x5346414f\n\tAF_ALG                               = 0x26\n\tAF_APPLETALK                         = 0x5\n\tAF_ASH                               = 0x12\n\tAF_ATMPVC                            = 0x8\n\tAF_ATMSVC                            = 0x14\n\tAF_AX25                              = 0x3\n\tAF_BLUETOOTH                         = 0x1f\n\tAF_BRIDGE                            = 0x7\n\tAF_CAIF                              = 0x25\n\tAF_CAN                               = 0x1d\n\tAF_DECnet                            = 0xc\n\tAF_ECONET                            = 0x13\n\tAF_FILE                              = 0x1\n\tAF_IB                                = 0x1b\n\tAF_IEEE802154                        = 0x24\n\tAF_INET                              = 0x2\n\tAF_INET6                             = 0xa\n\tAF_IPX                               = 0x4\n\tAF_IRDA                              = 0x17\n\tAF_ISDN                              = 0x22\n\tAF_IUCV                              = 0x20\n\tAF_KCM                               = 0x29\n\tAF_KEY                               = 0xf\n\tAF_LLC                               = 0x1a\n\tAF_LOCAL                             = 0x1\n\tAF_MAX                               = 0x2c\n\tAF_MPLS                              = 0x1c\n\tAF_NETBEUI                           = 0xd\n\tAF_NETLINK                           = 0x10\n\tAF_NETROM                            = 0x6\n\tAF_NFC                               = 0x27\n\tAF_PACKET                            = 0x11\n\tAF_PHONET                            = 0x23\n\tAF_PPPOX                             = 0x18\n\tAF_QIPCRTR                           = 0x2a\n\tAF_RDS                               = 0x15\n\tAF_ROSE                              = 0xb\n\tAF_ROUTE                             = 0x10\n\tAF_RXRPC                             = 0x21\n\tAF_SECURITY                          = 0xe\n\tAF_SMC                               = 0x2b\n\tAF_SNA                               = 0x16\n\tAF_TIPC                              = 0x1e\n\tAF_UNIX                              = 0x1\n\tAF_UNSPEC                            = 0x0\n\tAF_VSOCK                             = 0x28\n\tAF_WANPIPE                           = 0x19\n\tAF_X25                               = 0x9\n\tAF_XDP                               = 0x2c\n\tALG_OP_DECRYPT                       = 0x0\n\tALG_OP_ENCRYPT                       = 0x1\n\tALG_SET_AEAD_ASSOCLEN                = 0x4\n\tALG_SET_AEAD_AUTHSIZE                = 0x5\n\tALG_SET_IV                           = 0x2\n\tALG_SET_KEY                          = 0x1\n\tALG_SET_OP                           = 0x3\n\tANON_INODE_FS_MAGIC                  = 0x9041934\n\tARPHRD_6LOWPAN                       = 0x339\n\tARPHRD_ADAPT                         = 0x108\n\tARPHRD_APPLETLK                      = 0x8\n\tARPHRD_ARCNET                        = 0x7\n\tARPHRD_ASH                           = 0x30d\n\tARPHRD_ATM                           = 0x13\n\tARPHRD_AX25                          = 0x3\n\tARPHRD_BIF                           = 0x307\n\tARPHRD_CAIF                          = 0x336\n\tARPHRD_CAN                           = 0x118\n\tARPHRD_CHAOS                         = 0x5\n\tARPHRD_CISCO                         = 0x201\n\tARPHRD_CSLIP                         = 0x101\n\tARPHRD_CSLIP6                        = 0x103\n\tARPHRD_DDCMP                         = 0x205\n\tARPHRD_DLCI                          = 0xf\n\tARPHRD_ECONET                        = 0x30e\n\tARPHRD_EETHER                        = 0x2\n\tARPHRD_ETHER                         = 0x1\n\tARPHRD_EUI64                         = 0x1b\n\tARPHRD_FCAL                          = 0x311\n\tARPHRD_FCFABRIC                      = 0x313\n\tARPHRD_FCPL                          = 0x312\n\tARPHRD_FCPP                          = 0x310\n\tARPHRD_FDDI                          = 0x306\n\tARPHRD_FRAD                          = 0x302\n\tARPHRD_HDLC                          = 0x201\n\tARPHRD_HIPPI                         = 0x30c\n\tARPHRD_HWX25                         = 0x110\n\tARPHRD_IEEE1394                      = 0x18\n\tARPHRD_IEEE802                       = 0x6\n\tARPHRD_IEEE80211                     = 0x321\n\tARPHRD_IEEE80211_PRISM               = 0x322\n\tARPHRD_IEEE80211_RADIOTAP            = 0x323\n\tARPHRD_IEEE802154                    = 0x324\n\tARPHRD_IEEE802154_MONITOR            = 0x325\n\tARPHRD_IEEE802_TR                    = 0x320\n\tARPHRD_INFINIBAND                    = 0x20\n\tARPHRD_IP6GRE                        = 0x337\n\tARPHRD_IPDDP                         = 0x309\n\tARPHRD_IPGRE                         = 0x30a\n\tARPHRD_IRDA                          = 0x30f\n\tARPHRD_LAPB                          = 0x204\n\tARPHRD_LOCALTLK                      = 0x305\n\tARPHRD_LOOPBACK                      = 0x304\n\tARPHRD_METRICOM                      = 0x17\n\tARPHRD_NETLINK                       = 0x338\n\tARPHRD_NETROM                        = 0x0\n\tARPHRD_NONE                          = 0xfffe\n\tARPHRD_PHONET                        = 0x334\n\tARPHRD_PHONET_PIPE                   = 0x335\n\tARPHRD_PIMREG                        = 0x30b\n\tARPHRD_PPP                           = 0x200\n\tARPHRD_PRONET                        = 0x4\n\tARPHRD_RAWHDLC                       = 0x206\n\tARPHRD_RAWIP                         = 0x207\n\tARPHRD_ROSE                          = 0x10e\n\tARPHRD_RSRVD                         = 0x104\n\tARPHRD_SIT                           = 0x308\n\tARPHRD_SKIP                          = 0x303\n\tARPHRD_SLIP                          = 0x100\n\tARPHRD_SLIP6                         = 0x102\n\tARPHRD_TUNNEL                        = 0x300\n\tARPHRD_TUNNEL6                       = 0x301\n\tARPHRD_VOID                          = 0xffff\n\tARPHRD_VSOCKMON                      = 0x33a\n\tARPHRD_X25                           = 0x10f\n\tAUTOFS_SUPER_MAGIC                   = 0x187\n\tB0                                   = 0x0\n\tB1000000                             = 0x1008\n\tB110                                 = 0x3\n\tB115200                              = 0x1002\n\tB1152000                             = 0x1009\n\tB1200                                = 0x9\n\tB134                                 = 0x4\n\tB150                                 = 0x5\n\tB1500000                             = 0x100a\n\tB1800                                = 0xa\n\tB19200                               = 0xe\n\tB200                                 = 0x6\n\tB2000000                             = 0x100b\n\tB230400                              = 0x1003\n\tB2400                                = 0xb\n\tB2500000                             = 0x100c\n\tB300                                 = 0x7\n\tB3000000                             = 0x100d\n\tB3500000                             = 0x100e\n\tB38400                               = 0xf\n\tB4000000                             = 0x100f\n\tB460800                              = 0x1004\n\tB4800                                = 0xc\n\tB50                                  = 0x1\n\tB500000                              = 0x1005\n\tB57600                               = 0x1001\n\tB576000                              = 0x1006\n\tB600                                 = 0x8\n\tB75                                  = 0x2\n\tB921600                              = 0x1007\n\tB9600                                = 0xd\n\tBALLOON_KVM_MAGIC                    = 0x13661366\n\tBDEVFS_MAGIC                         = 0x62646576\n\tBINFMTFS_MAGIC                       = 0x42494e4d\n\tBLKBSZGET                            = 0x80081270\n\tBLKBSZSET                            = 0x40081271\n\tBLKFLSBUF                            = 0x1261\n\tBLKFRAGET                            = 0x1265\n\tBLKFRASET                            = 0x1264\n\tBLKGETSIZE                           = 0x1260\n\tBLKGETSIZE64                         = 0x80081272\n\tBLKPBSZGET                           = 0x127b\n\tBLKRAGET                             = 0x1263\n\tBLKRASET                             = 0x1262\n\tBLKROGET                             = 0x125e\n\tBLKROSET                             = 0x125d\n\tBLKRRPART                            = 0x125f\n\tBLKSECTGET                           = 0x1267\n\tBLKSECTSET                           = 0x1266\n\tBLKSSZGET                            = 0x1268\n\tBOTHER                               = 0x1000\n\tBPF_A                                = 0x10\n\tBPF_ABS                              = 0x20\n\tBPF_ADD                              = 0x0\n\tBPF_ALU                              = 0x4\n\tBPF_AND                              = 0x50\n\tBPF_B                                = 0x10\n\tBPF_DIV                              = 0x30\n\tBPF_FS_MAGIC                         = 0xcafe4a11\n\tBPF_H                                = 0x8\n\tBPF_IMM                              = 0x0\n\tBPF_IND                              = 0x40\n\tBPF_JA                               = 0x0\n\tBPF_JEQ                              = 0x10\n\tBPF_JGE                              = 0x30\n\tBPF_JGT                              = 0x20\n\tBPF_JMP                              = 0x5\n\tBPF_JSET                             = 0x40\n\tBPF_K                                = 0x0\n\tBPF_LD                               = 0x0\n\tBPF_LDX                              = 0x1\n\tBPF_LEN                              = 0x80\n\tBPF_LL_OFF                           = -0x200000\n\tBPF_LSH                              = 0x60\n\tBPF_MAJOR_VERSION                    = 0x1\n\tBPF_MAXINSNS                         = 0x1000\n\tBPF_MEM                              = 0x60\n\tBPF_MEMWORDS                         = 0x10\n\tBPF_MINOR_VERSION                    = 0x1\n\tBPF_MISC                             = 0x7\n\tBPF_MOD                              = 0x90\n\tBPF_MSH                              = 0xa0\n\tBPF_MUL                              = 0x20\n\tBPF_NEG                              = 0x80\n\tBPF_NET_OFF                          = -0x100000\n\tBPF_OR                               = 0x40\n\tBPF_RET                              = 0x6\n\tBPF_RSH                              = 0x70\n\tBPF_ST                               = 0x2\n\tBPF_STX                              = 0x3\n\tBPF_SUB                              = 0x10\n\tBPF_TAX                              = 0x0\n\tBPF_TXA                              = 0x80\n\tBPF_W                                = 0x0\n\tBPF_X                                = 0x8\n\tBPF_XOR                              = 0xa0\n\tBRKINT                               = 0x2\n\tBS0                                  = 0x0\n\tBS1                                  = 0x2000\n\tBSDLY                                = 0x2000\n\tBTRFS_SUPER_MAGIC                    = 0x9123683e\n\tBTRFS_TEST_MAGIC                     = 0x73727279\n\tCAN_BCM                              = 0x2\n\tCAN_EFF_FLAG                         = 0x80000000\n\tCAN_EFF_ID_BITS                      = 0x1d\n\tCAN_EFF_MASK                         = 0x1fffffff\n\tCAN_ERR_FLAG                         = 0x20000000\n\tCAN_ERR_MASK                         = 0x1fffffff\n\tCAN_INV_FILTER                       = 0x20000000\n\tCAN_ISOTP                            = 0x6\n\tCAN_MAX_DLC                          = 0x8\n\tCAN_MAX_DLEN                         = 0x8\n\tCAN_MCNET                            = 0x5\n\tCAN_MTU                              = 0x10\n\tCAN_NPROTO                           = 0x7\n\tCAN_RAW                              = 0x1\n\tCAN_RAW_FILTER_MAX                   = 0x200\n\tCAN_RTR_FLAG                         = 0x40000000\n\tCAN_SFF_ID_BITS                      = 0xb\n\tCAN_SFF_MASK                         = 0x7ff\n\tCAN_TP16                             = 0x3\n\tCAN_TP20                             = 0x4\n\tCBAUD                                = 0x100f\n\tCBAUDEX                              = 0x1000\n\tCFLUSH                               = 0xf\n\tCGROUP2_SUPER_MAGIC                  = 0x63677270\n\tCGROUP_SUPER_MAGIC                   = 0x27e0eb\n\tCIBAUD                               = 0x100f0000\n\tCLOCAL                               = 0x800\n\tCLOCK_BOOTTIME                       = 0x7\n\tCLOCK_BOOTTIME_ALARM                 = 0x9\n\tCLOCK_DEFAULT                        = 0x0\n\tCLOCK_EXT                            = 0x1\n\tCLOCK_INT                            = 0x2\n\tCLOCK_MONOTONIC                      = 0x1\n\tCLOCK_MONOTONIC_COARSE               = 0x6\n\tCLOCK_MONOTONIC_RAW                  = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID             = 0x2\n\tCLOCK_REALTIME                       = 0x0\n\tCLOCK_REALTIME_ALARM                 = 0x8\n\tCLOCK_REALTIME_COARSE                = 0x5\n\tCLOCK_TAI                            = 0xb\n\tCLOCK_THREAD_CPUTIME_ID              = 0x3\n\tCLOCK_TXFROMRX                       = 0x4\n\tCLOCK_TXINT                          = 0x3\n\tCLONE_CHILD_CLEARTID                 = 0x200000\n\tCLONE_CHILD_SETTID                   = 0x1000000\n\tCLONE_DETACHED                       = 0x400000\n\tCLONE_FILES                          = 0x400\n\tCLONE_FS                             = 0x200\n\tCLONE_IO                             = 0x80000000\n\tCLONE_NEWCGROUP                      = 0x2000000\n\tCLONE_NEWIPC                         = 0x8000000\n\tCLONE_NEWNET                         = 0x40000000\n\tCLONE_NEWNS                          = 0x20000\n\tCLONE_NEWPID                         = 0x20000000\n\tCLONE_NEWUSER                        = 0x10000000\n\tCLONE_NEWUTS                         = 0x4000000\n\tCLONE_PARENT                         = 0x8000\n\tCLONE_PARENT_SETTID                  = 0x100000\n\tCLONE_PTRACE                         = 0x2000\n\tCLONE_SETTLS                         = 0x80000\n\tCLONE_SIGHAND                        = 0x800\n\tCLONE_SYSVSEM                        = 0x40000\n\tCLONE_THREAD                         = 0x10000\n\tCLONE_UNTRACED                       = 0x800000\n\tCLONE_VFORK                          = 0x4000\n\tCLONE_VM                             = 0x100\n\tCMSPAR                               = 0x40000000\n\tCODA_SUPER_MAGIC                     = 0x73757245\n\tCR0                                  = 0x0\n\tCR1                                  = 0x200\n\tCR2                                  = 0x400\n\tCR3                                  = 0x600\n\tCRAMFS_MAGIC                         = 0x28cd3d45\n\tCRDLY                                = 0x600\n\tCREAD                                = 0x80\n\tCRTSCTS                              = 0x80000000\n\tCS5                                  = 0x0\n\tCS6                                  = 0x10\n\tCS7                                  = 0x20\n\tCS8                                  = 0x30\n\tCSIGNAL                              = 0xff\n\tCSIZE                                = 0x30\n\tCSTART                               = 0x11\n\tCSTATUS                              = 0x0\n\tCSTOP                                = 0x13\n\tCSTOPB                               = 0x40\n\tCSUSP                                = 0x1a\n\tDAXFS_MAGIC                          = 0x64646178\n\tDEBUGFS_MAGIC                        = 0x64626720\n\tDEVPTS_SUPER_MAGIC                   = 0x1cd1\n\tDT_BLK                               = 0x6\n\tDT_CHR                               = 0x2\n\tDT_DIR                               = 0x4\n\tDT_FIFO                              = 0x1\n\tDT_LNK                               = 0xa\n\tDT_REG                               = 0x8\n\tDT_SOCK                              = 0xc\n\tDT_UNKNOWN                           = 0x0\n\tDT_WHT                               = 0xe\n\tECHO                                 = 0x8\n\tECHOCTL                              = 0x200\n\tECHOE                                = 0x10\n\tECHOK                                = 0x20\n\tECHOKE                               = 0x800\n\tECHONL                               = 0x40\n\tECHOPRT                              = 0x400\n\tECRYPTFS_SUPER_MAGIC                 = 0xf15f\n\tEFD_CLOEXEC                          = 0x80000\n\tEFD_NONBLOCK                         = 0x800\n\tEFD_SEMAPHORE                        = 0x1\n\tEFIVARFS_MAGIC                       = 0xde5e81e4\n\tEFS_SUPER_MAGIC                      = 0x414a53\n\tENCODING_DEFAULT                     = 0x0\n\tENCODING_FM_MARK                     = 0x3\n\tENCODING_FM_SPACE                    = 0x4\n\tENCODING_MANCHESTER                  = 0x5\n\tENCODING_NRZ                         = 0x1\n\tENCODING_NRZI                        = 0x2\n\tEPOLLERR                             = 0x8\n\tEPOLLET                              = 0x80000000\n\tEPOLLEXCLUSIVE                       = 0x10000000\n\tEPOLLHUP                             = 0x10\n\tEPOLLIN                              = 0x1\n\tEPOLLMSG                             = 0x400\n\tEPOLLONESHOT                         = 0x40000000\n\tEPOLLOUT                             = 0x4\n\tEPOLLPRI                             = 0x2\n\tEPOLLRDBAND                          = 0x80\n\tEPOLLRDHUP                           = 0x2000\n\tEPOLLRDNORM                          = 0x40\n\tEPOLLWAKEUP                          = 0x20000000\n\tEPOLLWRBAND                          = 0x200\n\tEPOLLWRNORM                          = 0x100\n\tEPOLL_CLOEXEC                        = 0x80000\n\tEPOLL_CTL_ADD                        = 0x1\n\tEPOLL_CTL_DEL                        = 0x2\n\tEPOLL_CTL_MOD                        = 0x3\n\tETH_P_1588                           = 0x88f7\n\tETH_P_8021AD                         = 0x88a8\n\tETH_P_8021AH                         = 0x88e7\n\tETH_P_8021Q                          = 0x8100\n\tETH_P_80221                          = 0x8917\n\tETH_P_802_2                          = 0x4\n\tETH_P_802_3                          = 0x1\n\tETH_P_802_3_MIN                      = 0x600\n\tETH_P_802_EX1                        = 0x88b5\n\tETH_P_AARP                           = 0x80f3\n\tETH_P_AF_IUCV                        = 0xfbfb\n\tETH_P_ALL                            = 0x3\n\tETH_P_AOE                            = 0x88a2\n\tETH_P_ARCNET                         = 0x1a\n\tETH_P_ARP                            = 0x806\n\tETH_P_ATALK                          = 0x809b\n\tETH_P_ATMFATE                        = 0x8884\n\tETH_P_ATMMPOA                        = 0x884c\n\tETH_P_AX25                           = 0x2\n\tETH_P_BATMAN                         = 0x4305\n\tETH_P_BPQ                            = 0x8ff\n\tETH_P_CAIF                           = 0xf7\n\tETH_P_CAN                            = 0xc\n\tETH_P_CANFD                          = 0xd\n\tETH_P_CONTROL                        = 0x16\n\tETH_P_CUST                           = 0x6006\n\tETH_P_DDCMP                          = 0x6\n\tETH_P_DEC                            = 0x6000\n\tETH_P_DIAG                           = 0x6005\n\tETH_P_DNA_DL                         = 0x6001\n\tETH_P_DNA_RC                         = 0x6002\n\tETH_P_DNA_RT                         = 0x6003\n\tETH_P_DSA                            = 0x1b\n\tETH_P_ECONET                         = 0x18\n\tETH_P_EDSA                           = 0xdada\n\tETH_P_ERSPAN                         = 0x88be\n\tETH_P_ERSPAN2                        = 0x22eb\n\tETH_P_FCOE                           = 0x8906\n\tETH_P_FIP                            = 0x8914\n\tETH_P_HDLC                           = 0x19\n\tETH_P_HSR                            = 0x892f\n\tETH_P_IBOE                           = 0x8915\n\tETH_P_IEEE802154                     = 0xf6\n\tETH_P_IEEEPUP                        = 0xa00\n\tETH_P_IEEEPUPAT                      = 0xa01\n\tETH_P_IFE                            = 0xed3e\n\tETH_P_IP                             = 0x800\n\tETH_P_IPV6                           = 0x86dd\n\tETH_P_IPX                            = 0x8137\n\tETH_P_IRDA                           = 0x17\n\tETH_P_LAT                            = 0x6004\n\tETH_P_LINK_CTL                       = 0x886c\n\tETH_P_LOCALTALK                      = 0x9\n\tETH_P_LOOP                           = 0x60\n\tETH_P_LOOPBACK                       = 0x9000\n\tETH_P_MACSEC                         = 0x88e5\n\tETH_P_MAP                            = 0xf9\n\tETH_P_MOBITEX                        = 0x15\n\tETH_P_MPLS_MC                        = 0x8848\n\tETH_P_MPLS_UC                        = 0x8847\n\tETH_P_MVRP                           = 0x88f5\n\tETH_P_NCSI                           = 0x88f8\n\tETH_P_NSH                            = 0x894f\n\tETH_P_PAE                            = 0x888e\n\tETH_P_PAUSE                          = 0x8808\n\tETH_P_PHONET                         = 0xf5\n\tETH_P_PPPTALK                        = 0x10\n\tETH_P_PPP_DISC                       = 0x8863\n\tETH_P_PPP_MP                         = 0x8\n\tETH_P_PPP_SES                        = 0x8864\n\tETH_P_PREAUTH                        = 0x88c7\n\tETH_P_PRP                            = 0x88fb\n\tETH_P_PUP                            = 0x200\n\tETH_P_PUPAT                          = 0x201\n\tETH_P_QINQ1                          = 0x9100\n\tETH_P_QINQ2                          = 0x9200\n\tETH_P_QINQ3                          = 0x9300\n\tETH_P_RARP                           = 0x8035\n\tETH_P_SCA                            = 0x6007\n\tETH_P_SLOW                           = 0x8809\n\tETH_P_SNAP                           = 0x5\n\tETH_P_TDLS                           = 0x890d\n\tETH_P_TEB                            = 0x6558\n\tETH_P_TIPC                           = 0x88ca\n\tETH_P_TRAILER                        = 0x1c\n\tETH_P_TR_802_2                       = 0x11\n\tETH_P_TSN                            = 0x22f0\n\tETH_P_WAN_PPP                        = 0x7\n\tETH_P_WCCP                           = 0x883e\n\tETH_P_X25                            = 0x805\n\tETH_P_XDSA                           = 0xf8\n\tEXABYTE_ENABLE_NEST                  = 0xf0\n\tEXT2_SUPER_MAGIC                     = 0xef53\n\tEXT3_SUPER_MAGIC                     = 0xef53\n\tEXT4_SUPER_MAGIC                     = 0xef53\n\tEXTA                                 = 0xe\n\tEXTB                                 = 0xf\n\tEXTPROC                              = 0x10000\n\tF2FS_SUPER_MAGIC                     = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE             = 0x8\n\tFALLOC_FL_INSERT_RANGE               = 0x20\n\tFALLOC_FL_KEEP_SIZE                  = 0x1\n\tFALLOC_FL_NO_HIDE_STALE              = 0x4\n\tFALLOC_FL_PUNCH_HOLE                 = 0x2\n\tFALLOC_FL_UNSHARE_RANGE              = 0x40\n\tFALLOC_FL_ZERO_RANGE                 = 0x10\n\tFD_CLOEXEC                           = 0x1\n\tFD_SETSIZE                           = 0x400\n\tFF0                                  = 0x0\n\tFF1                                  = 0x8000\n\tFFDLY                                = 0x8000\n\tFLUSHO                               = 0x1000\n\tFS_ENCRYPTION_MODE_AES_128_CBC       = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS       = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC       = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS       = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM       = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS       = 0x1\n\tFS_ENCRYPTION_MODE_INVALID           = 0x0\n\tFS_ENCRYPTION_MODE_SPECK128_256_CTS  = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS  = 0x7\n\tFS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614\n\tFS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613\n\tFS_KEY_DESCRIPTOR_SIZE               = 0x8\n\tFS_KEY_DESC_PREFIX                   = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE              = 0x8\n\tFS_MAX_KEY_SIZE                      = 0x40\n\tFS_POLICY_FLAGS_PAD_16               = 0x2\n\tFS_POLICY_FLAGS_PAD_32               = 0x3\n\tFS_POLICY_FLAGS_PAD_4                = 0x0\n\tFS_POLICY_FLAGS_PAD_8                = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK             = 0x3\n\tFS_POLICY_FLAGS_VALID                = 0x3\n\tFUTEXFS_SUPER_MAGIC                  = 0xbad1dea\n\tF_ADD_SEALS                          = 0x409\n\tF_DUPFD                              = 0x0\n\tF_DUPFD_CLOEXEC                      = 0x406\n\tF_EXLCK                              = 0x4\n\tF_GETFD                              = 0x1\n\tF_GETFL                              = 0x3\n\tF_GETLEASE                           = 0x401\n\tF_GETLK                              = 0x5\n\tF_GETLK64                            = 0x5\n\tF_GETOWN                             = 0x9\n\tF_GETOWN_EX                          = 0x10\n\tF_GETPIPE_SZ                         = 0x408\n\tF_GETSIG                             = 0xb\n\tF_GET_FILE_RW_HINT                   = 0x40d\n\tF_GET_RW_HINT                        = 0x40b\n\tF_GET_SEALS                          = 0x40a\n\tF_LOCK                               = 0x1\n\tF_NOTIFY                             = 0x402\n\tF_OFD_GETLK                          = 0x24\n\tF_OFD_SETLK                          = 0x25\n\tF_OFD_SETLKW                         = 0x26\n\tF_OK                                 = 0x0\n\tF_RDLCK                              = 0x0\n\tF_SEAL_GROW                          = 0x4\n\tF_SEAL_SEAL                          = 0x1\n\tF_SEAL_SHRINK                        = 0x2\n\tF_SEAL_WRITE                         = 0x8\n\tF_SETFD                              = 0x2\n\tF_SETFL                              = 0x4\n\tF_SETLEASE                           = 0x400\n\tF_SETLK                              = 0x6\n\tF_SETLK64                            = 0x6\n\tF_SETLKW                             = 0x7\n\tF_SETLKW64                           = 0x7\n\tF_SETOWN                             = 0x8\n\tF_SETOWN_EX                          = 0xf\n\tF_SETPIPE_SZ                         = 0x407\n\tF_SETSIG                             = 0xa\n\tF_SET_FILE_RW_HINT                   = 0x40e\n\tF_SET_RW_HINT                        = 0x40c\n\tF_SHLCK                              = 0x8\n\tF_TEST                               = 0x3\n\tF_TLOCK                              = 0x2\n\tF_ULOCK                              = 0x0\n\tF_UNLCK                              = 0x2\n\tF_WRLCK                              = 0x1\n\tGENL_ADMIN_PERM                      = 0x1\n\tGENL_CMD_CAP_DO                      = 0x2\n\tGENL_CMD_CAP_DUMP                    = 0x4\n\tGENL_CMD_CAP_HASPOL                  = 0x8\n\tGENL_HDRLEN                          = 0x4\n\tGENL_ID_CTRL                         = 0x10\n\tGENL_ID_PMCRAID                      = 0x12\n\tGENL_ID_VFS_DQUOT                    = 0x11\n\tGENL_MAX_ID                          = 0x3ff\n\tGENL_MIN_ID                          = 0x10\n\tGENL_NAMSIZ                          = 0x10\n\tGENL_START_ALLOC                     = 0x13\n\tGENL_UNS_ADMIN_PERM                  = 0x10\n\tGRND_NONBLOCK                        = 0x1\n\tGRND_RANDOM                          = 0x2\n\tHDIO_DRIVE_CMD                       = 0x31f\n\tHDIO_DRIVE_CMD_AEB                   = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE              = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE              = 0x8\n\tHDIO_DRIVE_RESET                     = 0x31c\n\tHDIO_DRIVE_TASK                      = 0x31e\n\tHDIO_DRIVE_TASKFILE                  = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE             = 0x8\n\tHDIO_GETGEO                          = 0x301\n\tHDIO_GET_32BIT                       = 0x309\n\tHDIO_GET_ACOUSTIC                    = 0x30f\n\tHDIO_GET_ADDRESS                     = 0x310\n\tHDIO_GET_BUSSTATE                    = 0x31a\n\tHDIO_GET_DMA                         = 0x30b\n\tHDIO_GET_IDENTITY                    = 0x30d\n\tHDIO_GET_KEEPSETTINGS                = 0x308\n\tHDIO_GET_MULTCOUNT                   = 0x304\n\tHDIO_GET_NICE                        = 0x30c\n\tHDIO_GET_NOWERR                      = 0x30a\n\tHDIO_GET_QDMA                        = 0x305\n\tHDIO_GET_UNMASKINTR                  = 0x302\n\tHDIO_GET_WCACHE                      = 0x30e\n\tHDIO_OBSOLETE_IDENTITY               = 0x307\n\tHDIO_SCAN_HWIF                       = 0x328\n\tHDIO_SET_32BIT                       = 0x324\n\tHDIO_SET_ACOUSTIC                    = 0x32c\n\tHDIO_SET_ADDRESS                     = 0x32f\n\tHDIO_SET_BUSSTATE                    = 0x32d\n\tHDIO_SET_DMA                         = 0x326\n\tHDIO_SET_KEEPSETTINGS                = 0x323\n\tHDIO_SET_MULTCOUNT                   = 0x321\n\tHDIO_SET_NICE                        = 0x329\n\tHDIO_SET_NOWERR                      = 0x325\n\tHDIO_SET_PIO_MODE                    = 0x327\n\tHDIO_SET_QDMA                        = 0x32e\n\tHDIO_SET_UNMASKINTR                  = 0x322\n\tHDIO_SET_WCACHE                      = 0x32b\n\tHDIO_SET_XFER                        = 0x306\n\tHDIO_TRISTATE_HWIF                   = 0x31b\n\tHDIO_UNREGISTER_HWIF                 = 0x32a\n\tHOSTFS_SUPER_MAGIC                   = 0xc0ffee\n\tHPFS_SUPER_MAGIC                     = 0xf995e849\n\tHUGETLBFS_MAGIC                      = 0x958458f6\n\tHUPCL                                = 0x400\n\tIBSHIFT                              = 0x10\n\tICANON                               = 0x2\n\tICMPV6_FILTER                        = 0x1\n\tICRNL                                = 0x100\n\tIEXTEN                               = 0x8000\n\tIFA_F_DADFAILED                      = 0x8\n\tIFA_F_DEPRECATED                     = 0x20\n\tIFA_F_HOMEADDRESS                    = 0x10\n\tIFA_F_MANAGETEMPADDR                 = 0x100\n\tIFA_F_MCAUTOJOIN                     = 0x400\n\tIFA_F_NODAD                          = 0x2\n\tIFA_F_NOPREFIXROUTE                  = 0x200\n\tIFA_F_OPTIMISTIC                     = 0x4\n\tIFA_F_PERMANENT                      = 0x80\n\tIFA_F_SECONDARY                      = 0x1\n\tIFA_F_STABLE_PRIVACY                 = 0x800\n\tIFA_F_TEMPORARY                      = 0x1\n\tIFA_F_TENTATIVE                      = 0x40\n\tIFA_MAX                              = 0x9\n\tIFF_ALLMULTI                         = 0x200\n\tIFF_ATTACH_QUEUE                     = 0x200\n\tIFF_AUTOMEDIA                        = 0x4000\n\tIFF_BROADCAST                        = 0x2\n\tIFF_DEBUG                            = 0x4\n\tIFF_DETACH_QUEUE                     = 0x400\n\tIFF_DORMANT                          = 0x20000\n\tIFF_DYNAMIC                          = 0x8000\n\tIFF_ECHO                             = 0x40000\n\tIFF_LOOPBACK                         = 0x8\n\tIFF_LOWER_UP                         = 0x10000\n\tIFF_MASTER                           = 0x400\n\tIFF_MULTICAST                        = 0x1000\n\tIFF_MULTI_QUEUE                      = 0x100\n\tIFF_NAPI                             = 0x10\n\tIFF_NAPI_FRAGS                       = 0x20\n\tIFF_NOARP                            = 0x80\n\tIFF_NOFILTER                         = 0x1000\n\tIFF_NOTRAILERS                       = 0x20\n\tIFF_NO_PI                            = 0x1000\n\tIFF_ONE_QUEUE                        = 0x2000\n\tIFF_PERSIST                          = 0x800\n\tIFF_POINTOPOINT                      = 0x10\n\tIFF_PORTSEL                          = 0x2000\n\tIFF_PROMISC                          = 0x100\n\tIFF_RUNNING                          = 0x40\n\tIFF_SLAVE                            = 0x800\n\tIFF_TAP                              = 0x2\n\tIFF_TUN                              = 0x1\n\tIFF_TUN_EXCL                         = 0x8000\n\tIFF_UP                               = 0x1\n\tIFF_VNET_HDR                         = 0x4000\n\tIFF_VOLATILE                         = 0x70c5a\n\tIFNAMSIZ                             = 0x10\n\tIGNBRK                               = 0x1\n\tIGNCR                                = 0x80\n\tIGNPAR                               = 0x4\n\tIMAXBEL                              = 0x2000\n\tINLCR                                = 0x40\n\tINPCK                                = 0x10\n\tIN_ACCESS                            = 0x1\n\tIN_ALL_EVENTS                        = 0xfff\n\tIN_ATTRIB                            = 0x4\n\tIN_CLASSA_HOST                       = 0xffffff\n\tIN_CLASSA_MAX                        = 0x80\n\tIN_CLASSA_NET                        = 0xff000000\n\tIN_CLASSA_NSHIFT                     = 0x18\n\tIN_CLASSB_HOST                       = 0xffff\n\tIN_CLASSB_MAX                        = 0x10000\n\tIN_CLASSB_NET                        = 0xffff0000\n\tIN_CLASSB_NSHIFT                     = 0x10\n\tIN_CLASSC_HOST                       = 0xff\n\tIN_CLASSC_NET                        = 0xffffff00\n\tIN_CLASSC_NSHIFT                     = 0x8\n\tIN_CLOEXEC                           = 0x80000\n\tIN_CLOSE                             = 0x18\n\tIN_CLOSE_NOWRITE                     = 0x10\n\tIN_CLOSE_WRITE                       = 0x8\n\tIN_CREATE                            = 0x100\n\tIN_DELETE                            = 0x200\n\tIN_DELETE_SELF                       = 0x400\n\tIN_DONT_FOLLOW                       = 0x2000000\n\tIN_EXCL_UNLINK                       = 0x4000000\n\tIN_IGNORED                           = 0x8000\n\tIN_ISDIR                             = 0x40000000\n\tIN_LOOPBACKNET                       = 0x7f\n\tIN_MASK_ADD                          = 0x20000000\n\tIN_MODIFY                            = 0x2\n\tIN_MOVE                              = 0xc0\n\tIN_MOVED_FROM                        = 0x40\n\tIN_MOVED_TO                          = 0x80\n\tIN_MOVE_SELF                         = 0x800\n\tIN_NONBLOCK                          = 0x800\n\tIN_ONESHOT                           = 0x80000000\n\tIN_ONLYDIR                           = 0x1000000\n\tIN_OPEN                              = 0x20\n\tIN_Q_OVERFLOW                        = 0x4000\n\tIN_UNMOUNT                           = 0x2000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID       = 0x7b9\n\tIPPROTO_AH                           = 0x33\n\tIPPROTO_BEETPH                       = 0x5e\n\tIPPROTO_COMP                         = 0x6c\n\tIPPROTO_DCCP                         = 0x21\n\tIPPROTO_DSTOPTS                      = 0x3c\n\tIPPROTO_EGP                          = 0x8\n\tIPPROTO_ENCAP                        = 0x62\n\tIPPROTO_ESP                          = 0x32\n\tIPPROTO_FRAGMENT                     = 0x2c\n\tIPPROTO_GRE                          = 0x2f\n\tIPPROTO_HOPOPTS                      = 0x0\n\tIPPROTO_ICMP                         = 0x1\n\tIPPROTO_ICMPV6                       = 0x3a\n\tIPPROTO_IDP                          = 0x16\n\tIPPROTO_IGMP                         = 0x2\n\tIPPROTO_IP                           = 0x0\n\tIPPROTO_IPIP                         = 0x4\n\tIPPROTO_IPV6                         = 0x29\n\tIPPROTO_MH                           = 0x87\n\tIPPROTO_MPLS                         = 0x89\n\tIPPROTO_MTP                          = 0x5c\n\tIPPROTO_NONE                         = 0x3b\n\tIPPROTO_PIM                          = 0x67\n\tIPPROTO_PUP                          = 0xc\n\tIPPROTO_RAW                          = 0xff\n\tIPPROTO_ROUTING                      = 0x2b\n\tIPPROTO_RSVP                         = 0x2e\n\tIPPROTO_SCTP                         = 0x84\n\tIPPROTO_TCP                          = 0x6\n\tIPPROTO_TP                           = 0x1d\n\tIPPROTO_UDP                          = 0x11\n\tIPPROTO_UDPLITE                      = 0x88\n\tIPV6_2292DSTOPTS                     = 0x4\n\tIPV6_2292HOPLIMIT                    = 0x8\n\tIPV6_2292HOPOPTS                     = 0x3\n\tIPV6_2292PKTINFO                     = 0x2\n\tIPV6_2292PKTOPTIONS                  = 0x6\n\tIPV6_2292RTHDR                       = 0x5\n\tIPV6_ADDRFORM                        = 0x1\n\tIPV6_ADDR_PREFERENCES                = 0x48\n\tIPV6_ADD_MEMBERSHIP                  = 0x14\n\tIPV6_AUTHHDR                         = 0xa\n\tIPV6_AUTOFLOWLABEL                   = 0x46\n\tIPV6_CHECKSUM                        = 0x7\n\tIPV6_DONTFRAG                        = 0x3e\n\tIPV6_DROP_MEMBERSHIP                 = 0x15\n\tIPV6_DSTOPTS                         = 0x3b\n\tIPV6_FREEBIND                        = 0x4e\n\tIPV6_HDRINCL                         = 0x24\n\tIPV6_HOPLIMIT                        = 0x34\n\tIPV6_HOPOPTS                         = 0x36\n\tIPV6_IPSEC_POLICY                    = 0x22\n\tIPV6_JOIN_ANYCAST                    = 0x1b\n\tIPV6_JOIN_GROUP                      = 0x14\n\tIPV6_LEAVE_ANYCAST                   = 0x1c\n\tIPV6_LEAVE_GROUP                     = 0x15\n\tIPV6_MINHOPCOUNT                     = 0x49\n\tIPV6_MTU                             = 0x18\n\tIPV6_MTU_DISCOVER                    = 0x17\n\tIPV6_MULTICAST_HOPS                  = 0x12\n\tIPV6_MULTICAST_IF                    = 0x11\n\tIPV6_MULTICAST_LOOP                  = 0x13\n\tIPV6_NEXTHOP                         = 0x9\n\tIPV6_ORIGDSTADDR                     = 0x4a\n\tIPV6_PATHMTU                         = 0x3d\n\tIPV6_PKTINFO                         = 0x32\n\tIPV6_PMTUDISC_DO                     = 0x2\n\tIPV6_PMTUDISC_DONT                   = 0x0\n\tIPV6_PMTUDISC_INTERFACE              = 0x4\n\tIPV6_PMTUDISC_OMIT                   = 0x5\n\tIPV6_PMTUDISC_PROBE                  = 0x3\n\tIPV6_PMTUDISC_WANT                   = 0x1\n\tIPV6_RECVDSTOPTS                     = 0x3a\n\tIPV6_RECVERR                         = 0x19\n\tIPV6_RECVFRAGSIZE                    = 0x4d\n\tIPV6_RECVHOPLIMIT                    = 0x33\n\tIPV6_RECVHOPOPTS                     = 0x35\n\tIPV6_RECVORIGDSTADDR                 = 0x4a\n\tIPV6_RECVPATHMTU                     = 0x3c\n\tIPV6_RECVPKTINFO                     = 0x31\n\tIPV6_RECVRTHDR                       = 0x38\n\tIPV6_RECVTCLASS                      = 0x42\n\tIPV6_ROUTER_ALERT                    = 0x16\n\tIPV6_RTHDR                           = 0x39\n\tIPV6_RTHDRDSTOPTS                    = 0x37\n\tIPV6_RTHDR_LOOSE                     = 0x0\n\tIPV6_RTHDR_STRICT                    = 0x1\n\tIPV6_RTHDR_TYPE_0                    = 0x0\n\tIPV6_RXDSTOPTS                       = 0x3b\n\tIPV6_RXHOPOPTS                       = 0x36\n\tIPV6_TCLASS                          = 0x43\n\tIPV6_TRANSPARENT                     = 0x4b\n\tIPV6_UNICAST_HOPS                    = 0x10\n\tIPV6_UNICAST_IF                      = 0x4c\n\tIPV6_V6ONLY                          = 0x1a\n\tIPV6_XFRM_POLICY                     = 0x23\n\tIP_ADD_MEMBERSHIP                    = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP             = 0x27\n\tIP_BIND_ADDRESS_NO_PORT              = 0x18\n\tIP_BLOCK_SOURCE                      = 0x26\n\tIP_CHECKSUM                          = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP            = 0x1\n\tIP_DEFAULT_MULTICAST_TTL             = 0x1\n\tIP_DF                                = 0x4000\n\tIP_DROP_MEMBERSHIP                   = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP            = 0x28\n\tIP_FREEBIND                          = 0xf\n\tIP_HDRINCL                           = 0x3\n\tIP_IPSEC_POLICY                      = 0x10\n\tIP_MAXPACKET                         = 0xffff\n\tIP_MAX_MEMBERSHIPS                   = 0x14\n\tIP_MF                                = 0x2000\n\tIP_MINTTL                            = 0x15\n\tIP_MSFILTER                          = 0x29\n\tIP_MSS                               = 0x240\n\tIP_MTU                               = 0xe\n\tIP_MTU_DISCOVER                      = 0xa\n\tIP_MULTICAST_ALL                     = 0x31\n\tIP_MULTICAST_IF                      = 0x20\n\tIP_MULTICAST_LOOP                    = 0x22\n\tIP_MULTICAST_TTL                     = 0x21\n\tIP_NODEFRAG                          = 0x16\n\tIP_OFFMASK                           = 0x1fff\n\tIP_OPTIONS                           = 0x4\n\tIP_ORIGDSTADDR                       = 0x14\n\tIP_PASSSEC                           = 0x12\n\tIP_PKTINFO                           = 0x8\n\tIP_PKTOPTIONS                        = 0x9\n\tIP_PMTUDISC                          = 0xa\n\tIP_PMTUDISC_DO                       = 0x2\n\tIP_PMTUDISC_DONT                     = 0x0\n\tIP_PMTUDISC_INTERFACE                = 0x4\n\tIP_PMTUDISC_OMIT                     = 0x5\n\tIP_PMTUDISC_PROBE                    = 0x3\n\tIP_PMTUDISC_WANT                     = 0x1\n\tIP_RECVERR                           = 0xb\n\tIP_RECVFRAGSIZE                      = 0x19\n\tIP_RECVOPTS                          = 0x6\n\tIP_RECVORIGDSTADDR                   = 0x14\n\tIP_RECVRETOPTS                       = 0x7\n\tIP_RECVTOS                           = 0xd\n\tIP_RECVTTL                           = 0xc\n\tIP_RETOPTS                           = 0x7\n\tIP_RF                                = 0x8000\n\tIP_ROUTER_ALERT                      = 0x5\n\tIP_TOS                               = 0x1\n\tIP_TRANSPARENT                       = 0x13\n\tIP_TTL                               = 0x2\n\tIP_UNBLOCK_SOURCE                    = 0x25\n\tIP_UNICAST_IF                        = 0x32\n\tIP_XFRM_POLICY                       = 0x11\n\tISIG                                 = 0x1\n\tISOFS_SUPER_MAGIC                    = 0x9660\n\tISTRIP                               = 0x20\n\tIUCLC                                = 0x200\n\tIUTF8                                = 0x4000\n\tIXANY                                = 0x800\n\tIXOFF                                = 0x1000\n\tIXON                                 = 0x400\n\tJFFS2_SUPER_MAGIC                    = 0x72b6\n\tKEXEC_ARCH_386                       = 0x30000\n\tKEXEC_ARCH_68K                       = 0x40000\n\tKEXEC_ARCH_AARCH64                   = 0xb70000\n\tKEXEC_ARCH_ARM                       = 0x280000\n\tKEXEC_ARCH_DEFAULT                   = 0x0\n\tKEXEC_ARCH_IA_64                     = 0x320000\n\tKEXEC_ARCH_MASK                      = 0xffff0000\n\tKEXEC_ARCH_MIPS                      = 0x80000\n\tKEXEC_ARCH_MIPS_LE                   = 0xa0000\n\tKEXEC_ARCH_PPC                       = 0x140000\n\tKEXEC_ARCH_PPC64                     = 0x150000\n\tKEXEC_ARCH_S390                      = 0x160000\n\tKEXEC_ARCH_SH                        = 0x2a0000\n\tKEXEC_ARCH_X86_64                    = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS              = 0x4\n\tKEXEC_FILE_ON_CRASH                  = 0x2\n\tKEXEC_FILE_UNLOAD                    = 0x1\n\tKEXEC_ON_CRASH                       = 0x1\n\tKEXEC_PRESERVE_CONTEXT               = 0x2\n\tKEXEC_SEGMENT_MAX                    = 0x10\n\tKEYCTL_ASSUME_AUTHORITY              = 0x10\n\tKEYCTL_CHOWN                         = 0x4\n\tKEYCTL_CLEAR                         = 0x7\n\tKEYCTL_DESCRIBE                      = 0x6\n\tKEYCTL_DH_COMPUTE                    = 0x17\n\tKEYCTL_GET_KEYRING_ID                = 0x0\n\tKEYCTL_GET_PERSISTENT                = 0x16\n\tKEYCTL_GET_SECURITY                  = 0x11\n\tKEYCTL_INSTANTIATE                   = 0xc\n\tKEYCTL_INSTANTIATE_IOV               = 0x14\n\tKEYCTL_INVALIDATE                    = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING          = 0x1\n\tKEYCTL_LINK                          = 0x8\n\tKEYCTL_NEGATE                        = 0xd\n\tKEYCTL_READ                          = 0xb\n\tKEYCTL_REJECT                        = 0x13\n\tKEYCTL_RESTRICT_KEYRING              = 0x1d\n\tKEYCTL_REVOKE                        = 0x3\n\tKEYCTL_SEARCH                        = 0xa\n\tKEYCTL_SESSION_TO_PARENT             = 0x12\n\tKEYCTL_SETPERM                       = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING            = 0xe\n\tKEYCTL_SET_TIMEOUT                   = 0xf\n\tKEYCTL_UNLINK                        = 0x9\n\tKEYCTL_UPDATE                        = 0x2\n\tKEY_REQKEY_DEFL_DEFAULT              = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE            = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING         = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5\n\tKEY_SPEC_GROUP_KEYRING               = -0x6\n\tKEY_SPEC_PROCESS_KEYRING             = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY             = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING           = -0x8\n\tKEY_SPEC_SESSION_KEYRING             = -0x3\n\tKEY_SPEC_THREAD_KEYRING              = -0x1\n\tKEY_SPEC_USER_KEYRING                = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING        = -0x5\n\tLINUX_REBOOT_CMD_CAD_OFF             = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC               = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART             = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                  = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                  = 0x28121969\n\tLOCK_EX                              = 0x2\n\tLOCK_NB                              = 0x4\n\tLOCK_SH                              = 0x1\n\tLOCK_UN                              = 0x8\n\tMADV_DODUMP                          = 0x11\n\tMADV_DOFORK                          = 0xb\n\tMADV_DONTDUMP                        = 0x10\n\tMADV_DONTFORK                        = 0xa\n\tMADV_DONTNEED                        = 0x4\n\tMADV_FREE                            = 0x8\n\tMADV_HUGEPAGE                        = 0xe\n\tMADV_HWPOISON                        = 0x64\n\tMADV_KEEPONFORK                      = 0x13\n\tMADV_MERGEABLE                       = 0xc\n\tMADV_NOHUGEPAGE                      = 0xf\n\tMADV_NORMAL                          = 0x0\n\tMADV_RANDOM                          = 0x1\n\tMADV_REMOVE                          = 0x9\n\tMADV_SEQUENTIAL                      = 0x2\n\tMADV_UNMERGEABLE                     = 0xd\n\tMADV_WILLNEED                        = 0x3\n\tMADV_WIPEONFORK                      = 0x12\n\tMAP_ANON                             = 0x20\n\tMAP_ANONYMOUS                        = 0x20\n\tMAP_DENYWRITE                        = 0x800\n\tMAP_EXECUTABLE                       = 0x1000\n\tMAP_FILE                             = 0x0\n\tMAP_FIXED                            = 0x10\n\tMAP_FIXED_NOREPLACE                  = 0x100000\n\tMAP_GROWSDOWN                        = 0x100\n\tMAP_HUGETLB                          = 0x40000\n\tMAP_HUGE_MASK                        = 0x3f\n\tMAP_HUGE_SHIFT                       = 0x1a\n\tMAP_LOCKED                           = 0x2000\n\tMAP_NONBLOCK                         = 0x10000\n\tMAP_NORESERVE                        = 0x4000\n\tMAP_POPULATE                         = 0x8000\n\tMAP_PRIVATE                          = 0x2\n\tMAP_SHARED                           = 0x1\n\tMAP_SHARED_VALIDATE                  = 0x3\n\tMAP_STACK                            = 0x20000\n\tMAP_SYNC                             = 0x80000\n\tMAP_TYPE                             = 0xf\n\tMCL_CURRENT                          = 0x1\n\tMCL_FUTURE                           = 0x2\n\tMCL_ONFAULT                          = 0x4\n\tMFD_ALLOW_SEALING                    = 0x2\n\tMFD_CLOEXEC                          = 0x1\n\tMFD_HUGETLB                          = 0x4\n\tMFD_HUGE_16GB                        = -0x78000000\n\tMFD_HUGE_16MB                        = 0x60000000\n\tMFD_HUGE_1GB                         = 0x78000000\n\tMFD_HUGE_1MB                         = 0x50000000\n\tMFD_HUGE_256MB                       = 0x70000000\n\tMFD_HUGE_2GB                         = 0x7c000000\n\tMFD_HUGE_2MB                         = 0x54000000\n\tMFD_HUGE_32MB                        = 0x64000000\n\tMFD_HUGE_512KB                       = 0x4c000000\n\tMFD_HUGE_512MB                       = 0x74000000\n\tMFD_HUGE_64KB                        = 0x40000000\n\tMFD_HUGE_8MB                         = 0x5c000000\n\tMFD_HUGE_MASK                        = 0x3f\n\tMFD_HUGE_SHIFT                       = 0x1a\n\tMINIX2_SUPER_MAGIC                   = 0x2468\n\tMINIX2_SUPER_MAGIC2                  = 0x2478\n\tMINIX3_SUPER_MAGIC                   = 0x4d5a\n\tMINIX_SUPER_MAGIC                    = 0x137f\n\tMINIX_SUPER_MAGIC2                   = 0x138f\n\tMNT_DETACH                           = 0x2\n\tMNT_EXPIRE                           = 0x4\n\tMNT_FORCE                            = 0x1\n\tMODULE_INIT_IGNORE_MODVERSIONS       = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC          = 0x2\n\tMSDOS_SUPER_MAGIC                    = 0x4d44\n\tMSG_BATCH                            = 0x40000\n\tMSG_CMSG_CLOEXEC                     = 0x40000000\n\tMSG_CONFIRM                          = 0x800\n\tMSG_CTRUNC                           = 0x8\n\tMSG_DONTROUTE                        = 0x4\n\tMSG_DONTWAIT                         = 0x40\n\tMSG_EOR                              = 0x80\n\tMSG_ERRQUEUE                         = 0x2000\n\tMSG_FASTOPEN                         = 0x20000000\n\tMSG_FIN                              = 0x200\n\tMSG_MORE                             = 0x8000\n\tMSG_NOSIGNAL                         = 0x4000\n\tMSG_OOB                              = 0x1\n\tMSG_PEEK                             = 0x2\n\tMSG_PROXY                            = 0x10\n\tMSG_RST                              = 0x1000\n\tMSG_SYN                              = 0x400\n\tMSG_TRUNC                            = 0x20\n\tMSG_TRYHARD                          = 0x4\n\tMSG_WAITALL                          = 0x100\n\tMSG_WAITFORONE                       = 0x10000\n\tMSG_ZEROCOPY                         = 0x4000000\n\tMS_ACTIVE                            = 0x40000000\n\tMS_ASYNC                             = 0x1\n\tMS_BIND                              = 0x1000\n\tMS_BORN                              = 0x20000000\n\tMS_DIRSYNC                           = 0x80\n\tMS_INVALIDATE                        = 0x2\n\tMS_I_VERSION                         = 0x800000\n\tMS_KERNMOUNT                         = 0x400000\n\tMS_LAZYTIME                          = 0x2000000\n\tMS_MANDLOCK                          = 0x40\n\tMS_MGC_MSK                           = 0xffff0000\n\tMS_MGC_VAL                           = 0xc0ed0000\n\tMS_MOVE                              = 0x2000\n\tMS_NOATIME                           = 0x400\n\tMS_NODEV                             = 0x4\n\tMS_NODIRATIME                        = 0x800\n\tMS_NOEXEC                            = 0x8\n\tMS_NOREMOTELOCK                      = 0x8000000\n\tMS_NOSEC                             = 0x10000000\n\tMS_NOSUID                            = 0x2\n\tMS_NOUSER                            = -0x80000000\n\tMS_POSIXACL                          = 0x10000\n\tMS_PRIVATE                           = 0x40000\n\tMS_RDONLY                            = 0x1\n\tMS_REC                               = 0x4000\n\tMS_RELATIME                          = 0x200000\n\tMS_REMOUNT                           = 0x20\n\tMS_RMT_MASK                          = 0x2800051\n\tMS_SHARED                            = 0x100000\n\tMS_SILENT                            = 0x8000\n\tMS_SLAVE                             = 0x80000\n\tMS_STRICTATIME                       = 0x1000000\n\tMS_SUBMOUNT                          = 0x4000000\n\tMS_SYNC                              = 0x4\n\tMS_SYNCHRONOUS                       = 0x10\n\tMS_UNBINDABLE                        = 0x20000\n\tMS_VERBOSE                           = 0x8000\n\tMTD_INODE_FS_MAGIC                   = 0x11307854\n\tNAME_MAX                             = 0xff\n\tNCP_SUPER_MAGIC                      = 0x564c\n\tNETLINK_ADD_MEMBERSHIP               = 0x1\n\tNETLINK_AUDIT                        = 0x9\n\tNETLINK_BROADCAST_ERROR              = 0x4\n\tNETLINK_CAP_ACK                      = 0xa\n\tNETLINK_CONNECTOR                    = 0xb\n\tNETLINK_CRYPTO                       = 0x15\n\tNETLINK_DNRTMSG                      = 0xe\n\tNETLINK_DROP_MEMBERSHIP              = 0x2\n\tNETLINK_ECRYPTFS                     = 0x13\n\tNETLINK_EXT_ACK                      = 0xb\n\tNETLINK_FIB_LOOKUP                   = 0xa\n\tNETLINK_FIREWALL                     = 0x3\n\tNETLINK_GENERIC                      = 0x10\n\tNETLINK_INET_DIAG                    = 0x4\n\tNETLINK_IP6_FW                       = 0xd\n\tNETLINK_ISCSI                        = 0x8\n\tNETLINK_KOBJECT_UEVENT               = 0xf\n\tNETLINK_LISTEN_ALL_NSID              = 0x8\n\tNETLINK_LIST_MEMBERSHIPS             = 0x9\n\tNETLINK_NETFILTER                    = 0xc\n\tNETLINK_NFLOG                        = 0x5\n\tNETLINK_NO_ENOBUFS                   = 0x5\n\tNETLINK_PKTINFO                      = 0x3\n\tNETLINK_RDMA                         = 0x14\n\tNETLINK_ROUTE                        = 0x0\n\tNETLINK_RX_RING                      = 0x6\n\tNETLINK_SCSITRANSPORT                = 0x12\n\tNETLINK_SELINUX                      = 0x7\n\tNETLINK_SMC                          = 0x16\n\tNETLINK_SOCK_DIAG                    = 0x4\n\tNETLINK_TX_RING                      = 0x7\n\tNETLINK_UNUSED                       = 0x1\n\tNETLINK_USERSOCK                     = 0x2\n\tNETLINK_XFRM                         = 0x6\n\tNETNSA_MAX                           = 0x3\n\tNETNSA_NSID_NOT_ASSIGNED             = -0x1\n\tNFNETLINK_V0                         = 0x0\n\tNFNLGRP_ACCT_QUOTA                   = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY            = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY        = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW            = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE         = 0x5\n\tNFNLGRP_CONNTRACK_NEW                = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE             = 0x2\n\tNFNLGRP_MAX                          = 0x9\n\tNFNLGRP_NFTABLES                     = 0x7\n\tNFNLGRP_NFTRACE                      = 0x9\n\tNFNLGRP_NONE                         = 0x0\n\tNFNL_BATCH_MAX                       = 0x1\n\tNFNL_MSG_BATCH_BEGIN                 = 0x10\n\tNFNL_MSG_BATCH_END                   = 0x11\n\tNFNL_NFA_NEST                        = 0x8000\n\tNFNL_SUBSYS_ACCT                     = 0x7\n\tNFNL_SUBSYS_COUNT                    = 0xc\n\tNFNL_SUBSYS_CTHELPER                 = 0x9\n\tNFNL_SUBSYS_CTNETLINK                = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP            = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT        = 0x8\n\tNFNL_SUBSYS_IPSET                    = 0x6\n\tNFNL_SUBSYS_NFTABLES                 = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT               = 0xb\n\tNFNL_SUBSYS_NONE                     = 0x0\n\tNFNL_SUBSYS_OSF                      = 0x5\n\tNFNL_SUBSYS_QUEUE                    = 0x3\n\tNFNL_SUBSYS_ULOG                     = 0x4\n\tNFS_SUPER_MAGIC                      = 0x6969\n\tNILFS_SUPER_MAGIC                    = 0x3434\n\tNL0                                  = 0x0\n\tNL1                                  = 0x100\n\tNLA_ALIGNTO                          = 0x4\n\tNLA_F_NESTED                         = 0x8000\n\tNLA_F_NET_BYTEORDER                  = 0x4000\n\tNLA_HDRLEN                           = 0x4\n\tNLDLY                                = 0x100\n\tNLMSG_ALIGNTO                        = 0x4\n\tNLMSG_DONE                           = 0x3\n\tNLMSG_ERROR                          = 0x2\n\tNLMSG_HDRLEN                         = 0x10\n\tNLMSG_MIN_TYPE                       = 0x10\n\tNLMSG_NOOP                           = 0x1\n\tNLMSG_OVERRUN                        = 0x4\n\tNLM_F_ACK                            = 0x4\n\tNLM_F_ACK_TLVS                       = 0x200\n\tNLM_F_APPEND                         = 0x800\n\tNLM_F_ATOMIC                         = 0x400\n\tNLM_F_CAPPED                         = 0x100\n\tNLM_F_CREATE                         = 0x400\n\tNLM_F_DUMP                           = 0x300\n\tNLM_F_DUMP_FILTERED                  = 0x20\n\tNLM_F_DUMP_INTR                      = 0x10\n\tNLM_F_ECHO                           = 0x8\n\tNLM_F_EXCL                           = 0x200\n\tNLM_F_MATCH                          = 0x200\n\tNLM_F_MULTI                          = 0x2\n\tNLM_F_NONREC                         = 0x100\n\tNLM_F_REPLACE                        = 0x100\n\tNLM_F_REQUEST                        = 0x1\n\tNLM_F_ROOT                           = 0x100\n\tNOFLSH                               = 0x80\n\tNSFS_MAGIC                           = 0x6e736673\n\tOCFS2_SUPER_MAGIC                    = 0x7461636f\n\tOCRNL                                = 0x8\n\tOFDEL                                = 0x80\n\tOFILL                                = 0x40\n\tOLCUC                                = 0x2\n\tONLCR                                = 0x4\n\tONLRET                               = 0x20\n\tONOCR                                = 0x10\n\tOPENPROM_SUPER_MAGIC                 = 0x9fa1\n\tOPOST                                = 0x1\n\tOVERLAYFS_SUPER_MAGIC                = 0x794c7630\n\tO_ACCMODE                            = 0x3\n\tO_APPEND                             = 0x400\n\tO_ASYNC                              = 0x2000\n\tO_CLOEXEC                            = 0x80000\n\tO_CREAT                              = 0x40\n\tO_DIRECT                             = 0x4000\n\tO_DIRECTORY                          = 0x10000\n\tO_DSYNC                              = 0x1000\n\tO_EXCL                               = 0x80\n\tO_FSYNC                              = 0x101000\n\tO_LARGEFILE                          = 0x0\n\tO_NDELAY                             = 0x800\n\tO_NOATIME                            = 0x40000\n\tO_NOCTTY                             = 0x100\n\tO_NOFOLLOW                           = 0x20000\n\tO_NONBLOCK                           = 0x800\n\tO_PATH                               = 0x200000\n\tO_RDONLY                             = 0x0\n\tO_RDWR                               = 0x2\n\tO_RSYNC                              = 0x101000\n\tO_SYNC                               = 0x101000\n\tO_TMPFILE                            = 0x410000\n\tO_TRUNC                              = 0x200\n\tO_WRONLY                             = 0x1\n\tPACKET_ADD_MEMBERSHIP                = 0x1\n\tPACKET_AUXDATA                       = 0x8\n\tPACKET_BROADCAST                     = 0x1\n\tPACKET_COPY_THRESH                   = 0x7\n\tPACKET_DROP_MEMBERSHIP               = 0x2\n\tPACKET_FANOUT                        = 0x12\n\tPACKET_FANOUT_CBPF                   = 0x6\n\tPACKET_FANOUT_CPU                    = 0x2\n\tPACKET_FANOUT_DATA                   = 0x16\n\tPACKET_FANOUT_EBPF                   = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG            = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER          = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID          = 0x2000\n\tPACKET_FANOUT_HASH                   = 0x0\n\tPACKET_FANOUT_LB                     = 0x1\n\tPACKET_FANOUT_QM                     = 0x5\n\tPACKET_FANOUT_RND                    = 0x4\n\tPACKET_FANOUT_ROLLOVER               = 0x3\n\tPACKET_FASTROUTE                     = 0x6\n\tPACKET_HDRLEN                        = 0xb\n\tPACKET_HOST                          = 0x0\n\tPACKET_KERNEL                        = 0x7\n\tPACKET_LOOPBACK                      = 0x5\n\tPACKET_LOSS                          = 0xe\n\tPACKET_MR_ALLMULTI                   = 0x2\n\tPACKET_MR_MULTICAST                  = 0x0\n\tPACKET_MR_PROMISC                    = 0x1\n\tPACKET_MR_UNICAST                    = 0x3\n\tPACKET_MULTICAST                     = 0x2\n\tPACKET_ORIGDEV                       = 0x9\n\tPACKET_OTHERHOST                     = 0x3\n\tPACKET_OUTGOING                      = 0x4\n\tPACKET_QDISC_BYPASS                  = 0x14\n\tPACKET_RECV_OUTPUT                   = 0x3\n\tPACKET_RESERVE                       = 0xc\n\tPACKET_ROLLOVER_STATS                = 0x15\n\tPACKET_RX_RING                       = 0x5\n\tPACKET_STATISTICS                    = 0x6\n\tPACKET_TIMESTAMP                     = 0x11\n\tPACKET_TX_HAS_OFF                    = 0x13\n\tPACKET_TX_RING                       = 0xd\n\tPACKET_TX_TIMESTAMP                  = 0x10\n\tPACKET_USER                          = 0x6\n\tPACKET_VERSION                       = 0xa\n\tPACKET_VNET_HDR                      = 0xf\n\tPARENB                               = 0x100\n\tPARITY_CRC16_PR0                     = 0x2\n\tPARITY_CRC16_PR0_CCITT               = 0x4\n\tPARITY_CRC16_PR1                     = 0x3\n\tPARITY_CRC16_PR1_CCITT               = 0x5\n\tPARITY_CRC32_PR0_CCITT               = 0x6\n\tPARITY_CRC32_PR1_CCITT               = 0x7\n\tPARITY_DEFAULT                       = 0x0\n\tPARITY_NONE                          = 0x1\n\tPARMRK                               = 0x8\n\tPARODD                               = 0x200\n\tPENDIN                               = 0x4000\n\tPERF_EVENT_IOC_DISABLE               = 0x2401\n\tPERF_EVENT_IOC_ENABLE                = 0x2400\n\tPERF_EVENT_IOC_ID                    = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES     = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409\n\tPERF_EVENT_IOC_PERIOD                = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF             = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH               = 0x2402\n\tPERF_EVENT_IOC_RESET                 = 0x2403\n\tPERF_EVENT_IOC_SET_BPF               = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER            = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT            = 0x2405\n\tPIPEFS_MAGIC                         = 0x50495045\n\tPPPIOCATTACH                         = 0x4004743d\n\tPPPIOCATTCHAN                        = 0x40047438\n\tPPPIOCCONNECT                        = 0x4004743a\n\tPPPIOCDETACH                         = 0x4004743c\n\tPPPIOCDISCONN                        = 0x7439\n\tPPPIOCGASYNCMAP                      = 0x80047458\n\tPPPIOCGCHAN                          = 0x80047437\n\tPPPIOCGDEBUG                         = 0x80047441\n\tPPPIOCGFLAGS                         = 0x8004745a\n\tPPPIOCGIDLE                          = 0x8010743f\n\tPPPIOCGL2TPSTATS                     = 0x80487436\n\tPPPIOCGMRU                           = 0x80047453\n\tPPPIOCGNPMODE                        = 0xc008744c\n\tPPPIOCGRASYNCMAP                     = 0x80047455\n\tPPPIOCGUNIT                          = 0x80047456\n\tPPPIOCGXASYNCMAP                     = 0x80207450\n\tPPPIOCNEWUNIT                        = 0xc004743e\n\tPPPIOCSACTIVE                        = 0x40107446\n\tPPPIOCSASYNCMAP                      = 0x40047457\n\tPPPIOCSCOMPRESS                      = 0x4010744d\n\tPPPIOCSDEBUG                         = 0x40047440\n\tPPPIOCSFLAGS                         = 0x40047459\n\tPPPIOCSMAXCID                        = 0x40047451\n\tPPPIOCSMRRU                          = 0x4004743b\n\tPPPIOCSMRU                           = 0x40047452\n\tPPPIOCSNPMODE                        = 0x4008744b\n\tPPPIOCSPASS                          = 0x40107447\n\tPPPIOCSRASYNCMAP                     = 0x40047454\n\tPPPIOCSXASYNCMAP                     = 0x4020744f\n\tPPPIOCXFERUNIT                       = 0x744e\n\tPRIO_PGRP                            = 0x1\n\tPRIO_PROCESS                         = 0x0\n\tPRIO_USER                            = 0x2\n\tPROC_SUPER_MAGIC                     = 0x9fa0\n\tPROT_EXEC                            = 0x4\n\tPROT_GROWSDOWN                       = 0x1000000\n\tPROT_GROWSUP                         = 0x2000000\n\tPROT_NONE                            = 0x0\n\tPROT_READ                            = 0x1\n\tPROT_WRITE                           = 0x2\n\tPR_CAPBSET_DROP                      = 0x18\n\tPR_CAPBSET_READ                      = 0x17\n\tPR_CAP_AMBIENT                       = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL             = 0x4\n\tPR_CAP_AMBIENT_IS_SET                = 0x1\n\tPR_CAP_AMBIENT_LOWER                 = 0x3\n\tPR_CAP_AMBIENT_RAISE                 = 0x2\n\tPR_ENDIAN_BIG                        = 0x0\n\tPR_ENDIAN_LITTLE                     = 0x1\n\tPR_ENDIAN_PPC_LITTLE                 = 0x2\n\tPR_FPEMU_NOPRINT                     = 0x1\n\tPR_FPEMU_SIGFPE                      = 0x2\n\tPR_FP_EXC_ASYNC                      = 0x2\n\tPR_FP_EXC_DISABLED                   = 0x0\n\tPR_FP_EXC_DIV                        = 0x10000\n\tPR_FP_EXC_INV                        = 0x100000\n\tPR_FP_EXC_NONRECOV                   = 0x1\n\tPR_FP_EXC_OVF                        = 0x20000\n\tPR_FP_EXC_PRECISE                    = 0x3\n\tPR_FP_EXC_RES                        = 0x80000\n\tPR_FP_EXC_SW_ENABLE                  = 0x80\n\tPR_FP_EXC_UND                        = 0x40000\n\tPR_FP_MODE_FR                        = 0x1\n\tPR_FP_MODE_FRE                       = 0x2\n\tPR_GET_CHILD_SUBREAPER               = 0x25\n\tPR_GET_DUMPABLE                      = 0x3\n\tPR_GET_ENDIAN                        = 0x13\n\tPR_GET_FPEMU                         = 0x9\n\tPR_GET_FPEXC                         = 0xb\n\tPR_GET_FP_MODE                       = 0x2e\n\tPR_GET_KEEPCAPS                      = 0x7\n\tPR_GET_NAME                          = 0x10\n\tPR_GET_NO_NEW_PRIVS                  = 0x27\n\tPR_GET_PDEATHSIG                     = 0x2\n\tPR_GET_SECCOMP                       = 0x15\n\tPR_GET_SECUREBITS                    = 0x1b\n\tPR_GET_SPECULATION_CTRL              = 0x34\n\tPR_GET_THP_DISABLE                   = 0x2a\n\tPR_GET_TID_ADDRESS                   = 0x28\n\tPR_GET_TIMERSLACK                    = 0x1e\n\tPR_GET_TIMING                        = 0xd\n\tPR_GET_TSC                           = 0x19\n\tPR_GET_UNALIGN                       = 0x5\n\tPR_MCE_KILL                          = 0x21\n\tPR_MCE_KILL_CLEAR                    = 0x0\n\tPR_MCE_KILL_DEFAULT                  = 0x2\n\tPR_MCE_KILL_EARLY                    = 0x1\n\tPR_MCE_KILL_GET                      = 0x22\n\tPR_MCE_KILL_LATE                     = 0x0\n\tPR_MCE_KILL_SET                      = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT            = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT             = 0x2b\n\tPR_SET_CHILD_SUBREAPER               = 0x24\n\tPR_SET_DUMPABLE                      = 0x4\n\tPR_SET_ENDIAN                        = 0x14\n\tPR_SET_FPEMU                         = 0xa\n\tPR_SET_FPEXC                         = 0xc\n\tPR_SET_FP_MODE                       = 0x2d\n\tPR_SET_KEEPCAPS                      = 0x8\n\tPR_SET_MM                            = 0x23\n\tPR_SET_MM_ARG_END                    = 0x9\n\tPR_SET_MM_ARG_START                  = 0x8\n\tPR_SET_MM_AUXV                       = 0xc\n\tPR_SET_MM_BRK                        = 0x7\n\tPR_SET_MM_END_CODE                   = 0x2\n\tPR_SET_MM_END_DATA                   = 0x4\n\tPR_SET_MM_ENV_END                    = 0xb\n\tPR_SET_MM_ENV_START                  = 0xa\n\tPR_SET_MM_EXE_FILE                   = 0xd\n\tPR_SET_MM_MAP                        = 0xe\n\tPR_SET_MM_MAP_SIZE                   = 0xf\n\tPR_SET_MM_START_BRK                  = 0x6\n\tPR_SET_MM_START_CODE                 = 0x1\n\tPR_SET_MM_START_DATA                 = 0x3\n\tPR_SET_MM_START_STACK                = 0x5\n\tPR_SET_NAME                          = 0xf\n\tPR_SET_NO_NEW_PRIVS                  = 0x26\n\tPR_SET_PDEATHSIG                     = 0x1\n\tPR_SET_PTRACER                       = 0x59616d61\n\tPR_SET_PTRACER_ANY                   = 0xffffffffffffffff\n\tPR_SET_SECCOMP                       = 0x16\n\tPR_SET_SECUREBITS                    = 0x1c\n\tPR_SET_SPECULATION_CTRL              = 0x35\n\tPR_SET_THP_DISABLE                   = 0x29\n\tPR_SET_TIMERSLACK                    = 0x1d\n\tPR_SET_TIMING                        = 0xe\n\tPR_SET_TSC                           = 0x1a\n\tPR_SET_UNALIGN                       = 0x6\n\tPR_SPEC_DISABLE                      = 0x4\n\tPR_SPEC_ENABLE                       = 0x2\n\tPR_SPEC_FORCE_DISABLE                = 0x8\n\tPR_SPEC_NOT_AFFECTED                 = 0x0\n\tPR_SPEC_PRCTL                        = 0x1\n\tPR_SPEC_STORE_BYPASS                 = 0x0\n\tPR_SVE_GET_VL                        = 0x33\n\tPR_SVE_SET_VL                        = 0x32\n\tPR_SVE_SET_VL_ONEXEC                 = 0x40000\n\tPR_SVE_VL_INHERIT                    = 0x20000\n\tPR_SVE_VL_LEN_MASK                   = 0xffff\n\tPR_TASK_PERF_EVENTS_DISABLE          = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE           = 0x20\n\tPR_TIMING_STATISTICAL                = 0x0\n\tPR_TIMING_TIMESTAMP                  = 0x1\n\tPR_TSC_ENABLE                        = 0x1\n\tPR_TSC_SIGSEGV                       = 0x2\n\tPR_UNALIGN_NOPRINT                   = 0x1\n\tPR_UNALIGN_SIGBUS                    = 0x2\n\tPSTOREFS_MAGIC                       = 0x6165676c\n\tPTRACE_ATTACH                        = 0x10\n\tPTRACE_CONT                          = 0x7\n\tPTRACE_DETACH                        = 0x11\n\tPTRACE_DISABLE_TE                    = 0x5010\n\tPTRACE_ENABLE_TE                     = 0x5009\n\tPTRACE_EVENT_CLONE                   = 0x3\n\tPTRACE_EVENT_EXEC                    = 0x4\n\tPTRACE_EVENT_EXIT                    = 0x6\n\tPTRACE_EVENT_FORK                    = 0x1\n\tPTRACE_EVENT_SECCOMP                 = 0x7\n\tPTRACE_EVENT_STOP                    = 0x80\n\tPTRACE_EVENT_VFORK                   = 0x2\n\tPTRACE_EVENT_VFORK_DONE              = 0x5\n\tPTRACE_GETEVENTMSG                   = 0x4201\n\tPTRACE_GETREGS                       = 0xc\n\tPTRACE_GETREGSET                     = 0x4204\n\tPTRACE_GETSIGINFO                    = 0x4202\n\tPTRACE_GETSIGMASK                    = 0x420a\n\tPTRACE_GET_LAST_BREAK                = 0x5006\n\tPTRACE_INTERRUPT                     = 0x4207\n\tPTRACE_KILL                          = 0x8\n\tPTRACE_LISTEN                        = 0x4208\n\tPTRACE_OLDSETOPTIONS                 = 0x15\n\tPTRACE_O_EXITKILL                    = 0x100000\n\tPTRACE_O_MASK                        = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP             = 0x200000\n\tPTRACE_O_TRACECLONE                  = 0x8\n\tPTRACE_O_TRACEEXEC                   = 0x10\n\tPTRACE_O_TRACEEXIT                   = 0x40\n\tPTRACE_O_TRACEFORK                   = 0x2\n\tPTRACE_O_TRACESECCOMP                = 0x80\n\tPTRACE_O_TRACESYSGOOD                = 0x1\n\tPTRACE_O_TRACEVFORK                  = 0x4\n\tPTRACE_O_TRACEVFORKDONE              = 0x20\n\tPTRACE_PEEKDATA                      = 0x2\n\tPTRACE_PEEKDATA_AREA                 = 0x5003\n\tPTRACE_PEEKSIGINFO                   = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED            = 0x1\n\tPTRACE_PEEKTEXT                      = 0x1\n\tPTRACE_PEEKTEXT_AREA                 = 0x5002\n\tPTRACE_PEEKUSR                       = 0x3\n\tPTRACE_PEEKUSR_AREA                  = 0x5000\n\tPTRACE_PEEK_SYSTEM_CALL              = 0x5007\n\tPTRACE_POKEDATA                      = 0x5\n\tPTRACE_POKEDATA_AREA                 = 0x5005\n\tPTRACE_POKETEXT                      = 0x4\n\tPTRACE_POKETEXT_AREA                 = 0x5004\n\tPTRACE_POKEUSR                       = 0x6\n\tPTRACE_POKEUSR_AREA                  = 0x5001\n\tPTRACE_POKE_SYSTEM_CALL              = 0x5008\n\tPTRACE_PROT                          = 0x15\n\tPTRACE_SECCOMP_GET_FILTER            = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA          = 0x420d\n\tPTRACE_SEIZE                         = 0x4206\n\tPTRACE_SETOPTIONS                    = 0x4200\n\tPTRACE_SETREGS                       = 0xd\n\tPTRACE_SETREGSET                     = 0x4205\n\tPTRACE_SETSIGINFO                    = 0x4203\n\tPTRACE_SETSIGMASK                    = 0x420b\n\tPTRACE_SINGLEBLOCK                   = 0xc\n\tPTRACE_SINGLESTEP                    = 0x9\n\tPTRACE_SYSCALL                       = 0x18\n\tPTRACE_TE_ABORT_RAND                 = 0x5011\n\tPTRACE_TRACEME                       = 0x0\n\tPT_ACR0                              = 0x90\n\tPT_ACR1                              = 0x94\n\tPT_ACR10                             = 0xb8\n\tPT_ACR11                             = 0xbc\n\tPT_ACR12                             = 0xc0\n\tPT_ACR13                             = 0xc4\n\tPT_ACR14                             = 0xc8\n\tPT_ACR15                             = 0xcc\n\tPT_ACR2                              = 0x98\n\tPT_ACR3                              = 0x9c\n\tPT_ACR4                              = 0xa0\n\tPT_ACR5                              = 0xa4\n\tPT_ACR6                              = 0xa8\n\tPT_ACR7                              = 0xac\n\tPT_ACR8                              = 0xb0\n\tPT_ACR9                              = 0xb4\n\tPT_CR_10                             = 0x168\n\tPT_CR_11                             = 0x170\n\tPT_CR_9                              = 0x160\n\tPT_ENDREGS                           = 0x1af\n\tPT_FPC                               = 0xd8\n\tPT_FPR0                              = 0xe0\n\tPT_FPR1                              = 0xe8\n\tPT_FPR10                             = 0x130\n\tPT_FPR11                             = 0x138\n\tPT_FPR12                             = 0x140\n\tPT_FPR13                             = 0x148\n\tPT_FPR14                             = 0x150\n\tPT_FPR15                             = 0x158\n\tPT_FPR2                              = 0xf0\n\tPT_FPR3                              = 0xf8\n\tPT_FPR4                              = 0x100\n\tPT_FPR5                              = 0x108\n\tPT_FPR6                              = 0x110\n\tPT_FPR7                              = 0x118\n\tPT_FPR8                              = 0x120\n\tPT_FPR9                              = 0x128\n\tPT_GPR0                              = 0x10\n\tPT_GPR1                              = 0x18\n\tPT_GPR10                             = 0x60\n\tPT_GPR11                             = 0x68\n\tPT_GPR12                             = 0x70\n\tPT_GPR13                             = 0x78\n\tPT_GPR14                             = 0x80\n\tPT_GPR15                             = 0x88\n\tPT_GPR2                              = 0x20\n\tPT_GPR3                              = 0x28\n\tPT_GPR4                              = 0x30\n\tPT_GPR5                              = 0x38\n\tPT_GPR6                              = 0x40\n\tPT_GPR7                              = 0x48\n\tPT_GPR8                              = 0x50\n\tPT_GPR9                              = 0x58\n\tPT_IEEE_IP                           = 0x1a8\n\tPT_LASTOFF                           = 0x1a8\n\tPT_ORIGGPR2                          = 0xd0\n\tPT_PSWADDR                           = 0x8\n\tPT_PSWMASK                           = 0x0\n\tQNX4_SUPER_MAGIC                     = 0x2f\n\tQNX6_SUPER_MAGIC                     = 0x68191122\n\tRAMFS_MAGIC                          = 0x858458f6\n\tRDTGROUP_SUPER_MAGIC                 = 0x7655821\n\tREISERFS_SUPER_MAGIC                 = 0x52654973\n\tRENAME_EXCHANGE                      = 0x2\n\tRENAME_NOREPLACE                     = 0x1\n\tRENAME_WHITEOUT                      = 0x4\n\tRLIMIT_AS                            = 0x9\n\tRLIMIT_CORE                          = 0x4\n\tRLIMIT_CPU                           = 0x0\n\tRLIMIT_DATA                          = 0x2\n\tRLIMIT_FSIZE                         = 0x1\n\tRLIMIT_LOCKS                         = 0xa\n\tRLIMIT_MEMLOCK                       = 0x8\n\tRLIMIT_MSGQUEUE                      = 0xc\n\tRLIMIT_NICE                          = 0xd\n\tRLIMIT_NOFILE                        = 0x7\n\tRLIMIT_NPROC                         = 0x6\n\tRLIMIT_RSS                           = 0x5\n\tRLIMIT_RTPRIO                        = 0xe\n\tRLIMIT_RTTIME                        = 0xf\n\tRLIMIT_SIGPENDING                    = 0xb\n\tRLIMIT_STACK                         = 0x3\n\tRLIM_INFINITY                        = 0xffffffffffffffff\n\tRTAX_ADVMSS                          = 0x8\n\tRTAX_CC_ALGO                         = 0x10\n\tRTAX_CWND                            = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE              = 0x11\n\tRTAX_FEATURES                        = 0xc\n\tRTAX_FEATURE_ALLFRAG                 = 0x8\n\tRTAX_FEATURE_ECN                     = 0x1\n\tRTAX_FEATURE_MASK                    = 0xf\n\tRTAX_FEATURE_SACK                    = 0x2\n\tRTAX_FEATURE_TIMESTAMP               = 0x4\n\tRTAX_HOPLIMIT                        = 0xa\n\tRTAX_INITCWND                        = 0xb\n\tRTAX_INITRWND                        = 0xe\n\tRTAX_LOCK                            = 0x1\n\tRTAX_MAX                             = 0x11\n\tRTAX_MTU                             = 0x2\n\tRTAX_QUICKACK                        = 0xf\n\tRTAX_REORDERING                      = 0x9\n\tRTAX_RTO_MIN                         = 0xd\n\tRTAX_RTT                             = 0x4\n\tRTAX_RTTVAR                          = 0x5\n\tRTAX_SSTHRESH                        = 0x6\n\tRTAX_UNSPEC                          = 0x0\n\tRTAX_WINDOW                          = 0x3\n\tRTA_ALIGNTO                          = 0x4\n\tRTA_MAX                              = 0x1d\n\tRTCF_DIRECTSRC                       = 0x4000000\n\tRTCF_DOREDIRECT                      = 0x1000000\n\tRTCF_LOG                             = 0x2000000\n\tRTCF_MASQ                            = 0x400000\n\tRTCF_NAT                             = 0x800000\n\tRTCF_VALVE                           = 0x200000\n\tRTC_AF                               = 0x20\n\tRTC_AIE_OFF                          = 0x7002\n\tRTC_AIE_ON                           = 0x7001\n\tRTC_ALM_READ                         = 0x80247008\n\tRTC_ALM_SET                          = 0x40247007\n\tRTC_EPOCH_READ                       = 0x8008700d\n\tRTC_EPOCH_SET                        = 0x4008700e\n\tRTC_IRQF                             = 0x80\n\tRTC_IRQP_READ                        = 0x8008700b\n\tRTC_IRQP_SET                         = 0x4008700c\n\tRTC_MAX_FREQ                         = 0x2000\n\tRTC_PF                               = 0x40\n\tRTC_PIE_OFF                          = 0x7006\n\tRTC_PIE_ON                           = 0x7005\n\tRTC_PLL_GET                          = 0x80207011\n\tRTC_PLL_SET                          = 0x40207012\n\tRTC_RD_TIME                          = 0x80247009\n\tRTC_SET_TIME                         = 0x4024700a\n\tRTC_UF                               = 0x10\n\tRTC_UIE_OFF                          = 0x7004\n\tRTC_UIE_ON                           = 0x7003\n\tRTC_VL_CLR                           = 0x7014\n\tRTC_VL_READ                          = 0x80047013\n\tRTC_WIE_OFF                          = 0x7010\n\tRTC_WIE_ON                           = 0x700f\n\tRTC_WKALM_RD                         = 0x80287010\n\tRTC_WKALM_SET                        = 0x4028700f\n\tRTF_ADDRCLASSMASK                    = 0xf8000000\n\tRTF_ADDRCONF                         = 0x40000\n\tRTF_ALLONLINK                        = 0x20000\n\tRTF_BROADCAST                        = 0x10000000\n\tRTF_CACHE                            = 0x1000000\n\tRTF_DEFAULT                          = 0x10000\n\tRTF_DYNAMIC                          = 0x10\n\tRTF_FLOW                             = 0x2000000\n\tRTF_GATEWAY                          = 0x2\n\tRTF_HOST                             = 0x4\n\tRTF_INTERFACE                        = 0x40000000\n\tRTF_IRTT                             = 0x100\n\tRTF_LINKRT                           = 0x100000\n\tRTF_LOCAL                            = 0x80000000\n\tRTF_MODIFIED                         = 0x20\n\tRTF_MSS                              = 0x40\n\tRTF_MTU                              = 0x40\n\tRTF_MULTICAST                        = 0x20000000\n\tRTF_NAT                              = 0x8000000\n\tRTF_NOFORWARD                        = 0x1000\n\tRTF_NONEXTHOP                        = 0x200000\n\tRTF_NOPMTUDISC                       = 0x4000\n\tRTF_POLICY                           = 0x4000000\n\tRTF_REINSTATE                        = 0x8\n\tRTF_REJECT                           = 0x200\n\tRTF_STATIC                           = 0x400\n\tRTF_THROW                            = 0x2000\n\tRTF_UP                               = 0x1\n\tRTF_WINDOW                           = 0x80\n\tRTF_XRESOLVE                         = 0x800\n\tRTM_BASE                             = 0x10\n\tRTM_DELACTION                        = 0x31\n\tRTM_DELADDR                          = 0x15\n\tRTM_DELADDRLABEL                     = 0x49\n\tRTM_DELCHAIN                         = 0x65\n\tRTM_DELLINK                          = 0x11\n\tRTM_DELMDB                           = 0x55\n\tRTM_DELNEIGH                         = 0x1d\n\tRTM_DELNETCONF                       = 0x51\n\tRTM_DELNSID                          = 0x59\n\tRTM_DELQDISC                         = 0x25\n\tRTM_DELROUTE                         = 0x19\n\tRTM_DELRULE                          = 0x21\n\tRTM_DELTCLASS                        = 0x29\n\tRTM_DELTFILTER                       = 0x2d\n\tRTM_F_CLONED                         = 0x200\n\tRTM_F_EQUALIZE                       = 0x400\n\tRTM_F_FIB_MATCH                      = 0x2000\n\tRTM_F_LOOKUP_TABLE                   = 0x1000\n\tRTM_F_NOTIFY                         = 0x100\n\tRTM_F_PREFIX                         = 0x800\n\tRTM_GETACTION                        = 0x32\n\tRTM_GETADDR                          = 0x16\n\tRTM_GETADDRLABEL                     = 0x4a\n\tRTM_GETANYCAST                       = 0x3e\n\tRTM_GETCHAIN                         = 0x66\n\tRTM_GETDCB                           = 0x4e\n\tRTM_GETLINK                          = 0x12\n\tRTM_GETMDB                           = 0x56\n\tRTM_GETMULTICAST                     = 0x3a\n\tRTM_GETNEIGH                         = 0x1e\n\tRTM_GETNEIGHTBL                      = 0x42\n\tRTM_GETNETCONF                       = 0x52\n\tRTM_GETNSID                          = 0x5a\n\tRTM_GETQDISC                         = 0x26\n\tRTM_GETROUTE                         = 0x1a\n\tRTM_GETRULE                          = 0x22\n\tRTM_GETSTATS                         = 0x5e\n\tRTM_GETTCLASS                        = 0x2a\n\tRTM_GETTFILTER                       = 0x2e\n\tRTM_MAX                              = 0x67\n\tRTM_NEWACTION                        = 0x30\n\tRTM_NEWADDR                          = 0x14\n\tRTM_NEWADDRLABEL                     = 0x48\n\tRTM_NEWCACHEREPORT                   = 0x60\n\tRTM_NEWCHAIN                         = 0x64\n\tRTM_NEWLINK                          = 0x10\n\tRTM_NEWMDB                           = 0x54\n\tRTM_NEWNDUSEROPT                     = 0x44\n\tRTM_NEWNEIGH                         = 0x1c\n\tRTM_NEWNEIGHTBL                      = 0x40\n\tRTM_NEWNETCONF                       = 0x50\n\tRTM_NEWNSID                          = 0x58\n\tRTM_NEWPREFIX                        = 0x34\n\tRTM_NEWQDISC                         = 0x24\n\tRTM_NEWROUTE                         = 0x18\n\tRTM_NEWRULE                          = 0x20\n\tRTM_NEWSTATS                         = 0x5c\n\tRTM_NEWTCLASS                        = 0x28\n\tRTM_NEWTFILTER                       = 0x2c\n\tRTM_NR_FAMILIES                      = 0x16\n\tRTM_NR_MSGTYPES                      = 0x58\n\tRTM_SETDCB                           = 0x4f\n\tRTM_SETLINK                          = 0x13\n\tRTM_SETNEIGHTBL                      = 0x43\n\tRTNH_ALIGNTO                         = 0x4\n\tRTNH_COMPARE_MASK                    = 0x19\n\tRTNH_F_DEAD                          = 0x1\n\tRTNH_F_LINKDOWN                      = 0x10\n\tRTNH_F_OFFLOAD                       = 0x8\n\tRTNH_F_ONLINK                        = 0x4\n\tRTNH_F_PERVASIVE                     = 0x2\n\tRTNH_F_UNRESOLVED                    = 0x20\n\tRTN_MAX                              = 0xb\n\tRTPROT_BABEL                         = 0x2a\n\tRTPROT_BGP                           = 0xba\n\tRTPROT_BIRD                          = 0xc\n\tRTPROT_BOOT                          = 0x3\n\tRTPROT_DHCP                          = 0x10\n\tRTPROT_DNROUTED                      = 0xd\n\tRTPROT_EIGRP                         = 0xc0\n\tRTPROT_GATED                         = 0x8\n\tRTPROT_ISIS                          = 0xbb\n\tRTPROT_KERNEL                        = 0x2\n\tRTPROT_MROUTED                       = 0x11\n\tRTPROT_MRT                           = 0xa\n\tRTPROT_NTK                           = 0xf\n\tRTPROT_OSPF                          = 0xbc\n\tRTPROT_RA                            = 0x9\n\tRTPROT_REDIRECT                      = 0x1\n\tRTPROT_RIP                           = 0xbd\n\tRTPROT_STATIC                        = 0x4\n\tRTPROT_UNSPEC                        = 0x0\n\tRTPROT_XORP                          = 0xe\n\tRTPROT_ZEBRA                         = 0xb\n\tRT_CLASS_DEFAULT                     = 0xfd\n\tRT_CLASS_LOCAL                       = 0xff\n\tRT_CLASS_MAIN                        = 0xfe\n\tRT_CLASS_MAX                         = 0xff\n\tRT_CLASS_UNSPEC                      = 0x0\n\tRUSAGE_CHILDREN                      = -0x1\n\tRUSAGE_SELF                          = 0x0\n\tRUSAGE_THREAD                        = 0x1\n\tSCM_CREDENTIALS                      = 0x2\n\tSCM_RIGHTS                           = 0x1\n\tSCM_TIMESTAMP                        = 0x1d\n\tSCM_TIMESTAMPING                     = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS           = 0x36\n\tSCM_TIMESTAMPING_PKTINFO             = 0x3a\n\tSCM_TIMESTAMPNS                      = 0x23\n\tSCM_TXTIME                           = 0x3d\n\tSCM_WIFI_STATUS                      = 0x29\n\tSC_LOG_FLUSH                         = 0x100000\n\tSECCOMP_MODE_DISABLED                = 0x0\n\tSECCOMP_MODE_FILTER                  = 0x2\n\tSECCOMP_MODE_STRICT                  = 0x1\n\tSECURITYFS_MAGIC                     = 0x73636673\n\tSELINUX_MAGIC                        = 0xf97cff8c\n\tSHUT_RD                              = 0x0\n\tSHUT_RDWR                            = 0x2\n\tSHUT_WR                              = 0x1\n\tSIOCADDDLCI                          = 0x8980\n\tSIOCADDMULTI                         = 0x8931\n\tSIOCADDRT                            = 0x890b\n\tSIOCATMARK                           = 0x8905\n\tSIOCBONDCHANGEACTIVE                 = 0x8995\n\tSIOCBONDENSLAVE                      = 0x8990\n\tSIOCBONDINFOQUERY                    = 0x8994\n\tSIOCBONDRELEASE                      = 0x8991\n\tSIOCBONDSETHWADDR                    = 0x8992\n\tSIOCBONDSLAVEINFOQUERY               = 0x8993\n\tSIOCBRADDBR                          = 0x89a0\n\tSIOCBRADDIF                          = 0x89a2\n\tSIOCBRDELBR                          = 0x89a1\n\tSIOCBRDELIF                          = 0x89a3\n\tSIOCDARP                             = 0x8953\n\tSIOCDELDLCI                          = 0x8981\n\tSIOCDELMULTI                         = 0x8932\n\tSIOCDELRT                            = 0x890c\n\tSIOCDEVPRIVATE                       = 0x89f0\n\tSIOCDIFADDR                          = 0x8936\n\tSIOCDRARP                            = 0x8960\n\tSIOCETHTOOL                          = 0x8946\n\tSIOCGARP                             = 0x8954\n\tSIOCGHWTSTAMP                        = 0x89b1\n\tSIOCGIFADDR                          = 0x8915\n\tSIOCGIFBR                            = 0x8940\n\tSIOCGIFBRDADDR                       = 0x8919\n\tSIOCGIFCONF                          = 0x8912\n\tSIOCGIFCOUNT                         = 0x8938\n\tSIOCGIFDSTADDR                       = 0x8917\n\tSIOCGIFENCAP                         = 0x8925\n\tSIOCGIFFLAGS                         = 0x8913\n\tSIOCGIFHWADDR                        = 0x8927\n\tSIOCGIFINDEX                         = 0x8933\n\tSIOCGIFMAP                           = 0x8970\n\tSIOCGIFMEM                           = 0x891f\n\tSIOCGIFMETRIC                        = 0x891d\n\tSIOCGIFMTU                           = 0x8921\n\tSIOCGIFNAME                          = 0x8910\n\tSIOCGIFNETMASK                       = 0x891b\n\tSIOCGIFPFLAGS                        = 0x8935\n\tSIOCGIFSLAVE                         = 0x8929\n\tSIOCGIFTXQLEN                        = 0x8942\n\tSIOCGIFVLAN                          = 0x8982\n\tSIOCGMIIPHY                          = 0x8947\n\tSIOCGMIIREG                          = 0x8948\n\tSIOCGPGRP                            = 0x8904\n\tSIOCGPPPCSTATS                       = 0x89f2\n\tSIOCGPPPSTATS                        = 0x89f0\n\tSIOCGPPPVER                          = 0x89f1\n\tSIOCGRARP                            = 0x8961\n\tSIOCGSKNS                            = 0x894c\n\tSIOCGSTAMP                           = 0x8906\n\tSIOCGSTAMPNS                         = 0x8907\n\tSIOCINQ                              = 0x541b\n\tSIOCOUTQ                             = 0x5411\n\tSIOCOUTQNSD                          = 0x894b\n\tSIOCPROTOPRIVATE                     = 0x89e0\n\tSIOCRTMSG                            = 0x890d\n\tSIOCSARP                             = 0x8955\n\tSIOCSHWTSTAMP                        = 0x89b0\n\tSIOCSIFADDR                          = 0x8916\n\tSIOCSIFBR                            = 0x8941\n\tSIOCSIFBRDADDR                       = 0x891a\n\tSIOCSIFDSTADDR                       = 0x8918\n\tSIOCSIFENCAP                         = 0x8926\n\tSIOCSIFFLAGS                         = 0x8914\n\tSIOCSIFHWADDR                        = 0x8924\n\tSIOCSIFHWBROADCAST                   = 0x8937\n\tSIOCSIFLINK                          = 0x8911\n\tSIOCSIFMAP                           = 0x8971\n\tSIOCSIFMEM                           = 0x8920\n\tSIOCSIFMETRIC                        = 0x891e\n\tSIOCSIFMTU                           = 0x8922\n\tSIOCSIFNAME                          = 0x8923\n\tSIOCSIFNETMASK                       = 0x891c\n\tSIOCSIFPFLAGS                        = 0x8934\n\tSIOCSIFSLAVE                         = 0x8930\n\tSIOCSIFTXQLEN                        = 0x8943\n\tSIOCSIFVLAN                          = 0x8983\n\tSIOCSMIIREG                          = 0x8949\n\tSIOCSPGRP                            = 0x8902\n\tSIOCSRARP                            = 0x8962\n\tSIOCWANDEV                           = 0x894a\n\tSMACK_MAGIC                          = 0x43415d53\n\tSMART_AUTOSAVE                       = 0xd2\n\tSMART_AUTO_OFFLINE                   = 0xdb\n\tSMART_DISABLE                        = 0xd9\n\tSMART_ENABLE                         = 0xd8\n\tSMART_HCYL_PASS                      = 0xc2\n\tSMART_IMMEDIATE_OFFLINE              = 0xd4\n\tSMART_LCYL_PASS                      = 0x4f\n\tSMART_READ_LOG_SECTOR                = 0xd5\n\tSMART_READ_THRESHOLDS                = 0xd1\n\tSMART_READ_VALUES                    = 0xd0\n\tSMART_SAVE                           = 0xd3\n\tSMART_STATUS                         = 0xda\n\tSMART_WRITE_LOG_SECTOR               = 0xd6\n\tSMART_WRITE_THRESHOLDS               = 0xd7\n\tSMB_SUPER_MAGIC                      = 0x517b\n\tSOCKFS_MAGIC                         = 0x534f434b\n\tSOCK_CLOEXEC                         = 0x80000\n\tSOCK_DCCP                            = 0x6\n\tSOCK_DGRAM                           = 0x2\n\tSOCK_IOC_TYPE                        = 0x89\n\tSOCK_NONBLOCK                        = 0x800\n\tSOCK_PACKET                          = 0xa\n\tSOCK_RAW                             = 0x3\n\tSOCK_RDM                             = 0x4\n\tSOCK_SEQPACKET                       = 0x5\n\tSOCK_STREAM                          = 0x1\n\tSOL_AAL                              = 0x109\n\tSOL_ALG                              = 0x117\n\tSOL_ATM                              = 0x108\n\tSOL_CAIF                             = 0x116\n\tSOL_CAN_BASE                         = 0x64\n\tSOL_DCCP                             = 0x10d\n\tSOL_DECNET                           = 0x105\n\tSOL_ICMPV6                           = 0x3a\n\tSOL_IP                               = 0x0\n\tSOL_IPV6                             = 0x29\n\tSOL_IRDA                             = 0x10a\n\tSOL_IUCV                             = 0x115\n\tSOL_KCM                              = 0x119\n\tSOL_LLC                              = 0x10c\n\tSOL_NETBEUI                          = 0x10b\n\tSOL_NETLINK                          = 0x10e\n\tSOL_NFC                              = 0x118\n\tSOL_PACKET                           = 0x107\n\tSOL_PNPIPE                           = 0x113\n\tSOL_PPPOL2TP                         = 0x111\n\tSOL_RAW                              = 0xff\n\tSOL_RDS                              = 0x114\n\tSOL_RXRPC                            = 0x110\n\tSOL_SOCKET                           = 0x1\n\tSOL_TCP                              = 0x6\n\tSOL_TIPC                             = 0x10f\n\tSOL_TLS                              = 0x11a\n\tSOL_X25                              = 0x106\n\tSOL_XDP                              = 0x11b\n\tSOMAXCONN                            = 0x80\n\tSO_ACCEPTCONN                        = 0x1e\n\tSO_ATTACH_BPF                        = 0x32\n\tSO_ATTACH_FILTER                     = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF             = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF             = 0x34\n\tSO_BINDTODEVICE                      = 0x19\n\tSO_BPF_EXTENSIONS                    = 0x30\n\tSO_BROADCAST                         = 0x6\n\tSO_BSDCOMPAT                         = 0xe\n\tSO_BUSY_POLL                         = 0x2e\n\tSO_CNX_ADVICE                        = 0x35\n\tSO_COOKIE                            = 0x39\n\tSO_DEBUG                             = 0x1\n\tSO_DETACH_BPF                        = 0x1b\n\tSO_DETACH_FILTER                     = 0x1b\n\tSO_DOMAIN                            = 0x27\n\tSO_DONTROUTE                         = 0x5\n\tSO_ERROR                             = 0x4\n\tSO_GET_FILTER                        = 0x1a\n\tSO_INCOMING_CPU                      = 0x31\n\tSO_INCOMING_NAPI_ID                  = 0x38\n\tSO_KEEPALIVE                         = 0x9\n\tSO_LINGER                            = 0xd\n\tSO_LOCK_FILTER                       = 0x2c\n\tSO_MARK                              = 0x24\n\tSO_MAX_PACING_RATE                   = 0x2f\n\tSO_MEMINFO                           = 0x37\n\tSO_NOFCS                             = 0x2b\n\tSO_NO_CHECK                          = 0xb\n\tSO_OOBINLINE                         = 0xa\n\tSO_PASSCRED                          = 0x10\n\tSO_PASSSEC                           = 0x22\n\tSO_PEEK_OFF                          = 0x2a\n\tSO_PEERCRED                          = 0x11\n\tSO_PEERGROUPS                        = 0x3b\n\tSO_PEERNAME                          = 0x1c\n\tSO_PEERSEC                           = 0x1f\n\tSO_PRIORITY                          = 0xc\n\tSO_PROTOCOL                          = 0x26\n\tSO_RCVBUF                            = 0x8\n\tSO_RCVBUFFORCE                       = 0x21\n\tSO_RCVLOWAT                          = 0x12\n\tSO_RCVTIMEO                          = 0x14\n\tSO_REUSEADDR                         = 0x2\n\tSO_REUSEPORT                         = 0xf\n\tSO_RXQ_OVFL                          = 0x28\n\tSO_SECURITY_AUTHENTICATION           = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK       = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17\n\tSO_SELECT_ERR_QUEUE                  = 0x2d\n\tSO_SNDBUF                            = 0x7\n\tSO_SNDBUFFORCE                       = 0x20\n\tSO_SNDLOWAT                          = 0x13\n\tSO_SNDTIMEO                          = 0x15\n\tSO_TIMESTAMP                         = 0x1d\n\tSO_TIMESTAMPING                      = 0x25\n\tSO_TIMESTAMPNS                       = 0x23\n\tSO_TXTIME                            = 0x3d\n\tSO_TYPE                              = 0x3\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE            = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3\n\tSO_VM_SOCKETS_TRUSTED                = 0x5\n\tSO_WIFI_STATUS                       = 0x29\n\tSO_ZEROCOPY                          = 0x3c\n\tSPLICE_F_GIFT                        = 0x8\n\tSPLICE_F_MORE                        = 0x4\n\tSPLICE_F_MOVE                        = 0x1\n\tSPLICE_F_NONBLOCK                    = 0x2\n\tSQUASHFS_MAGIC                       = 0x73717368\n\tSTACK_END_MAGIC                      = 0x57ac6e9d\n\tSTATX_ALL                            = 0xfff\n\tSTATX_ATIME                          = 0x20\n\tSTATX_ATTR_APPEND                    = 0x20\n\tSTATX_ATTR_AUTOMOUNT                 = 0x1000\n\tSTATX_ATTR_COMPRESSED                = 0x4\n\tSTATX_ATTR_ENCRYPTED                 = 0x800\n\tSTATX_ATTR_IMMUTABLE                 = 0x10\n\tSTATX_ATTR_NODUMP                    = 0x40\n\tSTATX_BASIC_STATS                    = 0x7ff\n\tSTATX_BLOCKS                         = 0x400\n\tSTATX_BTIME                          = 0x800\n\tSTATX_CTIME                          = 0x80\n\tSTATX_GID                            = 0x10\n\tSTATX_INO                            = 0x100\n\tSTATX_MODE                           = 0x2\n\tSTATX_MTIME                          = 0x40\n\tSTATX_NLINK                          = 0x4\n\tSTATX_SIZE                           = 0x200\n\tSTATX_TYPE                           = 0x1\n\tSTATX_UID                            = 0x8\n\tSTATX__RESERVED                      = 0x80000000\n\tSYNC_FILE_RANGE_WAIT_AFTER           = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE          = 0x1\n\tSYNC_FILE_RANGE_WRITE                = 0x2\n\tSYSFS_MAGIC                          = 0x62656572\n\tS_BLKSIZE                            = 0x200\n\tS_IEXEC                              = 0x40\n\tS_IFBLK                              = 0x6000\n\tS_IFCHR                              = 0x2000\n\tS_IFDIR                              = 0x4000\n\tS_IFIFO                              = 0x1000\n\tS_IFLNK                              = 0xa000\n\tS_IFMT                               = 0xf000\n\tS_IFREG                              = 0x8000\n\tS_IFSOCK                             = 0xc000\n\tS_IREAD                              = 0x100\n\tS_IRGRP                              = 0x20\n\tS_IROTH                              = 0x4\n\tS_IRUSR                              = 0x100\n\tS_IRWXG                              = 0x38\n\tS_IRWXO                              = 0x7\n\tS_IRWXU                              = 0x1c0\n\tS_ISGID                              = 0x400\n\tS_ISUID                              = 0x800\n\tS_ISVTX                              = 0x200\n\tS_IWGRP                              = 0x10\n\tS_IWOTH                              = 0x2\n\tS_IWRITE                             = 0x80\n\tS_IWUSR                              = 0x80\n\tS_IXGRP                              = 0x8\n\tS_IXOTH                              = 0x1\n\tS_IXUSR                              = 0x40\n\tTAB0                                 = 0x0\n\tTAB1                                 = 0x800\n\tTAB2                                 = 0x1000\n\tTAB3                                 = 0x1800\n\tTABDLY                               = 0x1800\n\tTASKSTATS_CMD_ATTR_MAX               = 0x4\n\tTASKSTATS_CMD_MAX                    = 0x2\n\tTASKSTATS_GENL_NAME                  = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION               = 0x1\n\tTASKSTATS_TYPE_MAX                   = 0x6\n\tTASKSTATS_VERSION                    = 0x8\n\tTCFLSH                               = 0x540b\n\tTCGETA                               = 0x5405\n\tTCGETS                               = 0x5401\n\tTCGETS2                              = 0x802c542a\n\tTCGETX                               = 0x5432\n\tTCIFLUSH                             = 0x0\n\tTCIOFF                               = 0x2\n\tTCIOFLUSH                            = 0x2\n\tTCION                                = 0x3\n\tTCOFLUSH                             = 0x1\n\tTCOOFF                               = 0x0\n\tTCOON                                = 0x1\n\tTCP_CC_INFO                          = 0x1a\n\tTCP_CONGESTION                       = 0xd\n\tTCP_COOKIE_IN_ALWAYS                 = 0x1\n\tTCP_COOKIE_MAX                       = 0x10\n\tTCP_COOKIE_MIN                       = 0x8\n\tTCP_COOKIE_OUT_NEVER                 = 0x2\n\tTCP_COOKIE_PAIR_SIZE                 = 0x20\n\tTCP_COOKIE_TRANSACTIONS              = 0xf\n\tTCP_CORK                             = 0x3\n\tTCP_DEFER_ACCEPT                     = 0x9\n\tTCP_FASTOPEN                         = 0x17\n\tTCP_FASTOPEN_CONNECT                 = 0x1e\n\tTCP_FASTOPEN_KEY                     = 0x21\n\tTCP_FASTOPEN_NO_COOKIE               = 0x22\n\tTCP_INFO                             = 0xb\n\tTCP_KEEPCNT                          = 0x6\n\tTCP_KEEPIDLE                         = 0x4\n\tTCP_KEEPINTVL                        = 0x5\n\tTCP_LINGER2                          = 0x8\n\tTCP_MAXSEG                           = 0x2\n\tTCP_MAXWIN                           = 0xffff\n\tTCP_MAX_WINSHIFT                     = 0xe\n\tTCP_MD5SIG                           = 0xe\n\tTCP_MD5SIG_EXT                       = 0x20\n\tTCP_MD5SIG_FLAG_PREFIX               = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                 = 0x50\n\tTCP_MSS                              = 0x200\n\tTCP_MSS_DEFAULT                      = 0x218\n\tTCP_MSS_DESIRED                      = 0x4c4\n\tTCP_NODELAY                          = 0x1\n\tTCP_NOTSENT_LOWAT                    = 0x19\n\tTCP_QUEUE_SEQ                        = 0x15\n\tTCP_QUICKACK                         = 0xc\n\tTCP_REPAIR                           = 0x13\n\tTCP_REPAIR_OPTIONS                   = 0x16\n\tTCP_REPAIR_QUEUE                     = 0x14\n\tTCP_REPAIR_WINDOW                    = 0x1d\n\tTCP_SAVED_SYN                        = 0x1c\n\tTCP_SAVE_SYN                         = 0x1b\n\tTCP_SYNCNT                           = 0x7\n\tTCP_S_DATA_IN                        = 0x4\n\tTCP_S_DATA_OUT                       = 0x8\n\tTCP_THIN_DUPACK                      = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS             = 0x10\n\tTCP_TIMESTAMP                        = 0x18\n\tTCP_ULP                              = 0x1f\n\tTCP_USER_TIMEOUT                     = 0x12\n\tTCP_WINDOW_CLAMP                     = 0xa\n\tTCSAFLUSH                            = 0x2\n\tTCSBRK                               = 0x5409\n\tTCSBRKP                              = 0x5425\n\tTCSETA                               = 0x5406\n\tTCSETAF                              = 0x5408\n\tTCSETAW                              = 0x5407\n\tTCSETS                               = 0x5402\n\tTCSETS2                              = 0x402c542b\n\tTCSETSF                              = 0x5404\n\tTCSETSF2                             = 0x402c542d\n\tTCSETSW                              = 0x5403\n\tTCSETSW2                             = 0x402c542c\n\tTCSETX                               = 0x5433\n\tTCSETXF                              = 0x5434\n\tTCSETXW                              = 0x5435\n\tTCXONC                               = 0x540a\n\tTIOCCBRK                             = 0x5428\n\tTIOCCONS                             = 0x541d\n\tTIOCEXCL                             = 0x540c\n\tTIOCGDEV                             = 0x80045432\n\tTIOCGETD                             = 0x5424\n\tTIOCGEXCL                            = 0x80045440\n\tTIOCGICOUNT                          = 0x545d\n\tTIOCGLCKTRMIOS                       = 0x5456\n\tTIOCGPGRP                            = 0x540f\n\tTIOCGPKT                             = 0x80045438\n\tTIOCGPTLCK                           = 0x80045439\n\tTIOCGPTN                             = 0x80045430\n\tTIOCGPTPEER                          = 0x5441\n\tTIOCGRS485                           = 0x542e\n\tTIOCGSERIAL                          = 0x541e\n\tTIOCGSID                             = 0x5429\n\tTIOCGSOFTCAR                         = 0x5419\n\tTIOCGWINSZ                           = 0x5413\n\tTIOCINQ                              = 0x541b\n\tTIOCLINUX                            = 0x541c\n\tTIOCMBIC                             = 0x5417\n\tTIOCMBIS                             = 0x5416\n\tTIOCMGET                             = 0x5415\n\tTIOCMIWAIT                           = 0x545c\n\tTIOCMSET                             = 0x5418\n\tTIOCM_CAR                            = 0x40\n\tTIOCM_CD                             = 0x40\n\tTIOCM_CTS                            = 0x20\n\tTIOCM_DSR                            = 0x100\n\tTIOCM_DTR                            = 0x2\n\tTIOCM_LE                             = 0x1\n\tTIOCM_RI                             = 0x80\n\tTIOCM_RNG                            = 0x80\n\tTIOCM_RTS                            = 0x4\n\tTIOCM_SR                             = 0x10\n\tTIOCM_ST                             = 0x8\n\tTIOCNOTTY                            = 0x5422\n\tTIOCNXCL                             = 0x540d\n\tTIOCOUTQ                             = 0x5411\n\tTIOCPKT                              = 0x5420\n\tTIOCPKT_DATA                         = 0x0\n\tTIOCPKT_DOSTOP                       = 0x20\n\tTIOCPKT_FLUSHREAD                    = 0x1\n\tTIOCPKT_FLUSHWRITE                   = 0x2\n\tTIOCPKT_IOCTL                        = 0x40\n\tTIOCPKT_NOSTOP                       = 0x10\n\tTIOCPKT_START                        = 0x8\n\tTIOCPKT_STOP                         = 0x4\n\tTIOCSBRK                             = 0x5427\n\tTIOCSCTTY                            = 0x540e\n\tTIOCSERCONFIG                        = 0x5453\n\tTIOCSERGETLSR                        = 0x5459\n\tTIOCSERGETMULTI                      = 0x545a\n\tTIOCSERGSTRUCT                       = 0x5458\n\tTIOCSERGWILD                         = 0x5454\n\tTIOCSERSETMULTI                      = 0x545b\n\tTIOCSERSWILD                         = 0x5455\n\tTIOCSER_TEMT                         = 0x1\n\tTIOCSETD                             = 0x5423\n\tTIOCSIG                              = 0x40045436\n\tTIOCSLCKTRMIOS                       = 0x5457\n\tTIOCSPGRP                            = 0x5410\n\tTIOCSPTLCK                           = 0x40045431\n\tTIOCSRS485                           = 0x542f\n\tTIOCSSERIAL                          = 0x541f\n\tTIOCSSOFTCAR                         = 0x541a\n\tTIOCSTI                              = 0x5412\n\tTIOCSWINSZ                           = 0x5414\n\tTIOCVHANGUP                          = 0x5437\n\tTMPFS_MAGIC                          = 0x1021994\n\tTOSTOP                               = 0x100\n\tTPACKET_ALIGNMENT                    = 0x10\n\tTPACKET_HDRLEN                       = 0x34\n\tTP_STATUS_AVAILABLE                  = 0x0\n\tTP_STATUS_BLK_TMO                    = 0x20\n\tTP_STATUS_COPY                       = 0x2\n\tTP_STATUS_CSUMNOTREADY               = 0x8\n\tTP_STATUS_CSUM_VALID                 = 0x80\n\tTP_STATUS_KERNEL                     = 0x0\n\tTP_STATUS_LOSING                     = 0x4\n\tTP_STATUS_SENDING                    = 0x2\n\tTP_STATUS_SEND_REQUEST               = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE            = -0x80000000\n\tTP_STATUS_TS_SOFTWARE                = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE            = 0x40000000\n\tTP_STATUS_USER                       = 0x1\n\tTP_STATUS_VLAN_TPID_VALID            = 0x40\n\tTP_STATUS_VLAN_VALID                 = 0x10\n\tTP_STATUS_WRONG_FORMAT               = 0x4\n\tTRACEFS_MAGIC                        = 0x74726163\n\tTS_COMM_LEN                          = 0x20\n\tTUNATTACHFILTER                      = 0x401054d5\n\tTUNDETACHFILTER                      = 0x401054d6\n\tTUNGETFEATURES                       = 0x800454cf\n\tTUNGETFILTER                         = 0x801054db\n\tTUNGETIFF                            = 0x800454d2\n\tTUNGETSNDBUF                         = 0x800454d3\n\tTUNGETVNETBE                         = 0x800454df\n\tTUNGETVNETHDRSZ                      = 0x800454d7\n\tTUNGETVNETLE                         = 0x800454dd\n\tTUNSETDEBUG                          = 0x400454c9\n\tTUNSETFILTEREBPF                     = 0x800454e1\n\tTUNSETGROUP                          = 0x400454ce\n\tTUNSETIFF                            = 0x400454ca\n\tTUNSETIFINDEX                        = 0x400454da\n\tTUNSETLINK                           = 0x400454cd\n\tTUNSETNOCSUM                         = 0x400454c8\n\tTUNSETOFFLOAD                        = 0x400454d0\n\tTUNSETOWNER                          = 0x400454cc\n\tTUNSETPERSIST                        = 0x400454cb\n\tTUNSETQUEUE                          = 0x400454d9\n\tTUNSETSNDBUF                         = 0x400454d4\n\tTUNSETSTEERINGEBPF                   = 0x800454e0\n\tTUNSETTXFILTER                       = 0x400454d1\n\tTUNSETVNETBE                         = 0x400454de\n\tTUNSETVNETHDRSZ                      = 0x400454d8\n\tTUNSETVNETLE                         = 0x400454dc\n\tUBI_IOCATT                           = 0x40186f40\n\tUBI_IOCDET                           = 0x40046f41\n\tUBI_IOCEBCH                          = 0x40044f02\n\tUBI_IOCEBER                          = 0x40044f01\n\tUBI_IOCEBISMAP                       = 0x80044f05\n\tUBI_IOCEBMAP                         = 0x40084f03\n\tUBI_IOCEBUNMAP                       = 0x40044f04\n\tUBI_IOCMKVOL                         = 0x40986f00\n\tUBI_IOCRMVOL                         = 0x40046f01\n\tUBI_IOCRNVOL                         = 0x51106f03\n\tUBI_IOCRSVOL                         = 0x400c6f02\n\tUBI_IOCSETVOLPROP                    = 0x40104f06\n\tUBI_IOCVOLCRBLK                      = 0x40804f07\n\tUBI_IOCVOLRMBLK                      = 0x4f08\n\tUBI_IOCVOLUP                         = 0x40084f00\n\tUDF_SUPER_MAGIC                      = 0x15013346\n\tUMOUNT_NOFOLLOW                      = 0x8\n\tUSBDEVICE_SUPER_MAGIC                = 0x9fa2\n\tUTIME_NOW                            = 0x3fffffff\n\tUTIME_OMIT                           = 0x3ffffffe\n\tV9FS_MAGIC                           = 0x1021997\n\tVDISCARD                             = 0xd\n\tVEOF                                 = 0x4\n\tVEOL                                 = 0xb\n\tVEOL2                                = 0x10\n\tVERASE                               = 0x2\n\tVINTR                                = 0x0\n\tVKILL                                = 0x3\n\tVLNEXT                               = 0xf\n\tVMADDR_CID_ANY                       = 0xffffffff\n\tVMADDR_CID_HOST                      = 0x2\n\tVMADDR_CID_HYPERVISOR                = 0x0\n\tVMADDR_CID_RESERVED                  = 0x1\n\tVMADDR_PORT_ANY                      = 0xffffffff\n\tVMIN                                 = 0x6\n\tVM_SOCKETS_INVALID_VERSION           = 0xffffffff\n\tVQUIT                                = 0x1\n\tVREPRINT                             = 0xc\n\tVSTART                               = 0x8\n\tVSTOP                                = 0x9\n\tVSUSP                                = 0xa\n\tVSWTC                                = 0x7\n\tVT0                                  = 0x0\n\tVT1                                  = 0x4000\n\tVTDLY                                = 0x4000\n\tVTIME                                = 0x5\n\tVWERASE                              = 0xe\n\tWALL                                 = 0x40000000\n\tWCLONE                               = 0x80000000\n\tWCONTINUED                           = 0x8\n\tWDIOC_GETBOOTSTATUS                  = 0x80045702\n\tWDIOC_GETPRETIMEOUT                  = 0x80045709\n\tWDIOC_GETSTATUS                      = 0x80045701\n\tWDIOC_GETSUPPORT                     = 0x80285700\n\tWDIOC_GETTEMP                        = 0x80045703\n\tWDIOC_GETTIMELEFT                    = 0x8004570a\n\tWDIOC_GETTIMEOUT                     = 0x80045707\n\tWDIOC_KEEPALIVE                      = 0x80045705\n\tWDIOC_SETOPTIONS                     = 0x80045704\n\tWDIOC_SETPRETIMEOUT                  = 0xc0045708\n\tWDIOC_SETTIMEOUT                     = 0xc0045706\n\tWEXITED                              = 0x4\n\tWIN_ACKMEDIACHANGE                   = 0xdb\n\tWIN_CHECKPOWERMODE1                  = 0xe5\n\tWIN_CHECKPOWERMODE2                  = 0x98\n\tWIN_DEVICE_RESET                     = 0x8\n\tWIN_DIAGNOSE                         = 0x90\n\tWIN_DOORLOCK                         = 0xde\n\tWIN_DOORUNLOCK                       = 0xdf\n\tWIN_DOWNLOAD_MICROCODE               = 0x92\n\tWIN_FLUSH_CACHE                      = 0xe7\n\tWIN_FLUSH_CACHE_EXT                  = 0xea\n\tWIN_FORMAT                           = 0x50\n\tWIN_GETMEDIASTATUS                   = 0xda\n\tWIN_IDENTIFY                         = 0xec\n\tWIN_IDENTIFY_DMA                     = 0xee\n\tWIN_IDLEIMMEDIATE                    = 0xe1\n\tWIN_INIT                             = 0x60\n\tWIN_MEDIAEJECT                       = 0xed\n\tWIN_MULTREAD                         = 0xc4\n\tWIN_MULTREAD_EXT                     = 0x29\n\tWIN_MULTWRITE                        = 0xc5\n\tWIN_MULTWRITE_EXT                    = 0x39\n\tWIN_NOP                              = 0x0\n\tWIN_PACKETCMD                        = 0xa0\n\tWIN_PIDENTIFY                        = 0xa1\n\tWIN_POSTBOOT                         = 0xdc\n\tWIN_PREBOOT                          = 0xdd\n\tWIN_QUEUED_SERVICE                   = 0xa2\n\tWIN_READ                             = 0x20\n\tWIN_READDMA                          = 0xc8\n\tWIN_READDMA_EXT                      = 0x25\n\tWIN_READDMA_ONCE                     = 0xc9\n\tWIN_READDMA_QUEUED                   = 0xc7\n\tWIN_READDMA_QUEUED_EXT               = 0x26\n\tWIN_READ_BUFFER                      = 0xe4\n\tWIN_READ_EXT                         = 0x24\n\tWIN_READ_LONG                        = 0x22\n\tWIN_READ_LONG_ONCE                   = 0x23\n\tWIN_READ_NATIVE_MAX                  = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT              = 0x27\n\tWIN_READ_ONCE                        = 0x21\n\tWIN_RECAL                            = 0x10\n\tWIN_RESTORE                          = 0x10\n\tWIN_SECURITY_DISABLE                 = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE           = 0xf3\n\tWIN_SECURITY_ERASE_UNIT              = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK             = 0xf5\n\tWIN_SECURITY_SET_PASS                = 0xf1\n\tWIN_SECURITY_UNLOCK                  = 0xf2\n\tWIN_SEEK                             = 0x70\n\tWIN_SETFEATURES                      = 0xef\n\tWIN_SETIDLE1                         = 0xe3\n\tWIN_SETIDLE2                         = 0x97\n\tWIN_SETMULT                          = 0xc6\n\tWIN_SET_MAX                          = 0xf9\n\tWIN_SET_MAX_EXT                      = 0x37\n\tWIN_SLEEPNOW1                        = 0xe6\n\tWIN_SLEEPNOW2                        = 0x99\n\tWIN_SMART                            = 0xb0\n\tWIN_SPECIFY                          = 0x91\n\tWIN_SRST                             = 0x8\n\tWIN_STANDBY                          = 0xe2\n\tWIN_STANDBY2                         = 0x96\n\tWIN_STANDBYNOW1                      = 0xe0\n\tWIN_STANDBYNOW2                      = 0x94\n\tWIN_VERIFY                           = 0x40\n\tWIN_VERIFY_EXT                       = 0x42\n\tWIN_VERIFY_ONCE                      = 0x41\n\tWIN_WRITE                            = 0x30\n\tWIN_WRITEDMA                         = 0xca\n\tWIN_WRITEDMA_EXT                     = 0x35\n\tWIN_WRITEDMA_ONCE                    = 0xcb\n\tWIN_WRITEDMA_QUEUED                  = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT              = 0x36\n\tWIN_WRITE_BUFFER                     = 0xe8\n\tWIN_WRITE_EXT                        = 0x34\n\tWIN_WRITE_LONG                       = 0x32\n\tWIN_WRITE_LONG_ONCE                  = 0x33\n\tWIN_WRITE_ONCE                       = 0x31\n\tWIN_WRITE_SAME                       = 0xe9\n\tWIN_WRITE_VERIFY                     = 0x3c\n\tWNOHANG                              = 0x1\n\tWNOTHREAD                            = 0x20000000\n\tWNOWAIT                              = 0x1000000\n\tWORDSIZE                             = 0x40\n\tWSTOPPED                             = 0x2\n\tWUNTRACED                            = 0x2\n\tXATTR_CREATE                         = 0x1\n\tXATTR_REPLACE                        = 0x2\n\tXCASE                                = 0x4\n\tXDP_COPY                             = 0x2\n\tXDP_FLAGS_DRV_MODE                   = 0x4\n\tXDP_FLAGS_HW_MODE                    = 0x8\n\tXDP_FLAGS_MASK                       = 0xf\n\tXDP_FLAGS_MODES                      = 0xe\n\tXDP_FLAGS_SKB_MODE                   = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST          = 0x1\n\tXDP_MMAP_OFFSETS                     = 0x1\n\tXDP_PGOFF_RX_RING                    = 0x0\n\tXDP_PGOFF_TX_RING                    = 0x80000000\n\tXDP_RX_RING                          = 0x2\n\tXDP_SHARED_UMEM                      = 0x1\n\tXDP_STATISTICS                       = 0x7\n\tXDP_TX_RING                          = 0x3\n\tXDP_UMEM_COMPLETION_RING             = 0x6\n\tXDP_UMEM_FILL_RING                   = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING       = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING             = 0x100000000\n\tXDP_UMEM_REG                         = 0x4\n\tXDP_ZEROCOPY                         = 0x4\n\tXENFS_SUPER_MAGIC                    = 0xabba1974\n\tXTABS                                = 0x1800\n\tZSMALLOC_MAGIC                       = 0x58295829\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build sparc64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_ALG                           = 0x26\n\tAF_APPLETALK                     = 0x5\n\tAF_ASH                           = 0x12\n\tAF_ATMPVC                        = 0x8\n\tAF_ATMSVC                        = 0x14\n\tAF_AX25                          = 0x3\n\tAF_BLUETOOTH                     = 0x1f\n\tAF_BRIDGE                        = 0x7\n\tAF_CAIF                          = 0x25\n\tAF_CAN                           = 0x1d\n\tAF_DECnet                        = 0xc\n\tAF_ECONET                        = 0x13\n\tAF_FILE                          = 0x1\n\tAF_IB                            = 0x1b\n\tAF_IEEE802154                    = 0x24\n\tAF_INET                          = 0x2\n\tAF_INET6                         = 0xa\n\tAF_IPX                           = 0x4\n\tAF_IRDA                          = 0x17\n\tAF_ISDN                          = 0x22\n\tAF_IUCV                          = 0x20\n\tAF_KCM                           = 0x29\n\tAF_KEY                           = 0xf\n\tAF_LLC                           = 0x1a\n\tAF_LOCAL                         = 0x1\n\tAF_MAX                           = 0x2a\n\tAF_MPLS                          = 0x1c\n\tAF_NETBEUI                       = 0xd\n\tAF_NETLINK                       = 0x10\n\tAF_NETROM                        = 0x6\n\tAF_NFC                           = 0x27\n\tAF_PACKET                        = 0x11\n\tAF_PHONET                        = 0x23\n\tAF_PPPOX                         = 0x18\n\tAF_RDS                           = 0x15\n\tAF_ROSE                          = 0xb\n\tAF_ROUTE                         = 0x10\n\tAF_RXRPC                         = 0x21\n\tAF_SECURITY                      = 0xe\n\tAF_SNA                           = 0x16\n\tAF_TIPC                          = 0x1e\n\tAF_UNIX                          = 0x1\n\tAF_UNSPEC                        = 0x0\n\tAF_VSOCK                         = 0x28\n\tAF_WANPIPE                       = 0x19\n\tAF_X25                           = 0x9\n\tALG_OP_DECRYPT                   = 0x0\n\tALG_OP_ENCRYPT                   = 0x1\n\tALG_SET_AEAD_ASSOCLEN            = 0x4\n\tALG_SET_AEAD_AUTHSIZE            = 0x5\n\tALG_SET_IV                       = 0x2\n\tALG_SET_KEY                      = 0x1\n\tALG_SET_OP                       = 0x3\n\tARPHRD_6LOWPAN                   = 0x339\n\tARPHRD_ADAPT                     = 0x108\n\tARPHRD_APPLETLK                  = 0x8\n\tARPHRD_ARCNET                    = 0x7\n\tARPHRD_ASH                       = 0x30d\n\tARPHRD_ATM                       = 0x13\n\tARPHRD_AX25                      = 0x3\n\tARPHRD_BIF                       = 0x307\n\tARPHRD_CAIF                      = 0x336\n\tARPHRD_CAN                       = 0x118\n\tARPHRD_CHAOS                     = 0x5\n\tARPHRD_CISCO                     = 0x201\n\tARPHRD_CSLIP                     = 0x101\n\tARPHRD_CSLIP6                    = 0x103\n\tARPHRD_DDCMP                     = 0x205\n\tARPHRD_DLCI                      = 0xf\n\tARPHRD_ECONET                    = 0x30e\n\tARPHRD_EETHER                    = 0x2\n\tARPHRD_ETHER                     = 0x1\n\tARPHRD_EUI64                     = 0x1b\n\tARPHRD_FCAL                      = 0x311\n\tARPHRD_FCFABRIC                  = 0x313\n\tARPHRD_FCPL                      = 0x312\n\tARPHRD_FCPP                      = 0x310\n\tARPHRD_FDDI                      = 0x306\n\tARPHRD_FRAD                      = 0x302\n\tARPHRD_HDLC                      = 0x201\n\tARPHRD_HIPPI                     = 0x30c\n\tARPHRD_HWX25                     = 0x110\n\tARPHRD_IEEE1394                  = 0x18\n\tARPHRD_IEEE802                   = 0x6\n\tARPHRD_IEEE80211                 = 0x321\n\tARPHRD_IEEE80211_PRISM           = 0x322\n\tARPHRD_IEEE80211_RADIOTAP        = 0x323\n\tARPHRD_IEEE802154                = 0x324\n\tARPHRD_IEEE802154_MONITOR        = 0x325\n\tARPHRD_IEEE802_TR                = 0x320\n\tARPHRD_INFINIBAND                = 0x20\n\tARPHRD_IP6GRE                    = 0x337\n\tARPHRD_IPDDP                     = 0x309\n\tARPHRD_IPGRE                     = 0x30a\n\tARPHRD_IRDA                      = 0x30f\n\tARPHRD_LAPB                      = 0x204\n\tARPHRD_LOCALTLK                  = 0x305\n\tARPHRD_LOOPBACK                  = 0x304\n\tARPHRD_METRICOM                  = 0x17\n\tARPHRD_NETLINK                   = 0x338\n\tARPHRD_NETROM                    = 0x0\n\tARPHRD_NONE                      = 0xfffe\n\tARPHRD_PHONET                    = 0x334\n\tARPHRD_PHONET_PIPE               = 0x335\n\tARPHRD_PIMREG                    = 0x30b\n\tARPHRD_PPP                       = 0x200\n\tARPHRD_PRONET                    = 0x4\n\tARPHRD_RAWHDLC                   = 0x206\n\tARPHRD_ROSE                      = 0x10e\n\tARPHRD_RSRVD                     = 0x104\n\tARPHRD_SIT                       = 0x308\n\tARPHRD_SKIP                      = 0x303\n\tARPHRD_SLIP                      = 0x100\n\tARPHRD_SLIP6                     = 0x102\n\tARPHRD_TUNNEL                    = 0x300\n\tARPHRD_TUNNEL6                   = 0x301\n\tARPHRD_VOID                      = 0xffff\n\tARPHRD_X25                       = 0x10f\n\tASI_LEON_DFLUSH                  = 0x11\n\tASI_LEON_IFLUSH                  = 0x10\n\tASI_LEON_MMUFLUSH                = 0x18\n\tB0                               = 0x0\n\tB1000000                         = 0x100c\n\tB110                             = 0x3\n\tB115200                          = 0x1002\n\tB1152000                         = 0x100d\n\tB1200                            = 0x9\n\tB134                             = 0x4\n\tB150                             = 0x5\n\tB1500000                         = 0x100e\n\tB153600                          = 0x1006\n\tB1800                            = 0xa\n\tB19200                           = 0xe\n\tB200                             = 0x6\n\tB2000000                         = 0x100f\n\tB230400                          = 0x1003\n\tB2400                            = 0xb\n\tB300                             = 0x7\n\tB307200                          = 0x1007\n\tB38400                           = 0xf\n\tB460800                          = 0x1004\n\tB4800                            = 0xc\n\tB50                              = 0x1\n\tB500000                          = 0x100a\n\tB57600                           = 0x1001\n\tB576000                          = 0x100b\n\tB600                             = 0x8\n\tB614400                          = 0x1008\n\tB75                              = 0x2\n\tB76800                           = 0x1005\n\tB921600                          = 0x1009\n\tB9600                            = 0xd\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBOTHER                           = 0x1000\n\tBPF_A                            = 0x10\n\tBPF_ABS                          = 0x20\n\tBPF_ADD                          = 0x0\n\tBPF_ALU                          = 0x4\n\tBPF_AND                          = 0x50\n\tBPF_B                            = 0x10\n\tBPF_DIV                          = 0x30\n\tBPF_H                            = 0x8\n\tBPF_IMM                          = 0x0\n\tBPF_IND                          = 0x40\n\tBPF_JA                           = 0x0\n\tBPF_JEQ                          = 0x10\n\tBPF_JGE                          = 0x30\n\tBPF_JGT                          = 0x20\n\tBPF_JMP                          = 0x5\n\tBPF_JSET                         = 0x40\n\tBPF_K                            = 0x0\n\tBPF_LD                           = 0x0\n\tBPF_LDX                          = 0x1\n\tBPF_LEN                          = 0x80\n\tBPF_LL_OFF                       = -0x200000\n\tBPF_LSH                          = 0x60\n\tBPF_MAJOR_VERSION                = 0x1\n\tBPF_MAXINSNS                     = 0x1000\n\tBPF_MEM                          = 0x60\n\tBPF_MEMWORDS                     = 0x10\n\tBPF_MINOR_VERSION                = 0x1\n\tBPF_MISC                         = 0x7\n\tBPF_MOD                          = 0x90\n\tBPF_MSH                          = 0xa0\n\tBPF_MUL                          = 0x20\n\tBPF_NEG                          = 0x80\n\tBPF_NET_OFF                      = -0x100000\n\tBPF_OR                           = 0x40\n\tBPF_RET                          = 0x6\n\tBPF_RSH                          = 0x70\n\tBPF_ST                           = 0x2\n\tBPF_STX                          = 0x3\n\tBPF_SUB                          = 0x10\n\tBPF_TAX                          = 0x0\n\tBPF_TXA                          = 0x80\n\tBPF_W                            = 0x0\n\tBPF_X                            = 0x8\n\tBPF_XOR                          = 0xa0\n\tBRKINT                           = 0x2\n\tBS0                              = 0x0\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCAN_BCM                          = 0x2\n\tCAN_EFF_FLAG                     = 0x80000000\n\tCAN_EFF_ID_BITS                  = 0x1d\n\tCAN_EFF_MASK                     = 0x1fffffff\n\tCAN_ERR_FLAG                     = 0x20000000\n\tCAN_ERR_MASK                     = 0x1fffffff\n\tCAN_INV_FILTER                   = 0x20000000\n\tCAN_ISOTP                        = 0x6\n\tCAN_MAX_DLC                      = 0x8\n\tCAN_MAX_DLEN                     = 0x8\n\tCAN_MCNET                        = 0x5\n\tCAN_MTU                          = 0x10\n\tCAN_NPROTO                       = 0x7\n\tCAN_RAW                          = 0x1\n\tCAN_RTR_FLAG                     = 0x40000000\n\tCAN_SFF_ID_BITS                  = 0xb\n\tCAN_SFF_MASK                     = 0x7ff\n\tCAN_TP16                         = 0x3\n\tCAN_TP20                         = 0x4\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCFLUSH                           = 0xf\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCLOCK_BOOTTIME                   = 0x7\n\tCLOCK_BOOTTIME_ALARM             = 0x9\n\tCLOCK_DEFAULT                    = 0x0\n\tCLOCK_EXT                        = 0x1\n\tCLOCK_INT                        = 0x2\n\tCLOCK_MONOTONIC                  = 0x1\n\tCLOCK_MONOTONIC_COARSE           = 0x6\n\tCLOCK_MONOTONIC_RAW              = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID         = 0x2\n\tCLOCK_REALTIME                   = 0x0\n\tCLOCK_REALTIME_ALARM             = 0x8\n\tCLOCK_REALTIME_COARSE            = 0x5\n\tCLOCK_TAI                        = 0xb\n\tCLOCK_THREAD_CPUTIME_ID          = 0x3\n\tCLOCK_TXFROMRX                   = 0x4\n\tCLOCK_TXINT                      = 0x3\n\tCLONE_CHILD_CLEARTID             = 0x200000\n\tCLONE_CHILD_SETTID               = 0x1000000\n\tCLONE_DETACHED                   = 0x400000\n\tCLONE_FILES                      = 0x400\n\tCLONE_FS                         = 0x200\n\tCLONE_IO                         = 0x80000000\n\tCLONE_NEWCGROUP                  = 0x2000000\n\tCLONE_NEWIPC                     = 0x8000000\n\tCLONE_NEWNET                     = 0x40000000\n\tCLONE_NEWNS                      = 0x20000\n\tCLONE_NEWPID                     = 0x20000000\n\tCLONE_NEWUSER                    = 0x10000000\n\tCLONE_NEWUTS                     = 0x4000000\n\tCLONE_PARENT                     = 0x8000\n\tCLONE_PARENT_SETTID              = 0x100000\n\tCLONE_PTRACE                     = 0x2000\n\tCLONE_SETTLS                     = 0x80000\n\tCLONE_SIGHAND                    = 0x800\n\tCLONE_SYSVSEM                    = 0x40000\n\tCLONE_THREAD                     = 0x10000\n\tCLONE_UNTRACED                   = 0x800000\n\tCLONE_VFORK                      = 0x4000\n\tCLONE_VM                         = 0x100\n\tCMSPAR                           = 0x40000000\n\tCR0                              = 0x0\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCRTSCTS                          = 0x80000000\n\tCS5                              = 0x0\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIGNAL                          = 0xff\n\tCSIZE                            = 0x30\n\tCSTART                           = 0x11\n\tCSTATUS                          = 0x0\n\tCSTOP                            = 0x13\n\tCSTOPB                           = 0x40\n\tCSUSP                            = 0x1a\n\tDT_BLK                           = 0x6\n\tDT_CHR                           = 0x2\n\tDT_DIR                           = 0x4\n\tDT_FIFO                          = 0x1\n\tDT_LNK                           = 0xa\n\tDT_REG                           = 0x8\n\tDT_SOCK                          = 0xc\n\tDT_UNKNOWN                       = 0x0\n\tDT_WHT                           = 0xe\n\tECHO                             = 0x8\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEMT_TAGOVF                       = 0x1\n\tENCODING_DEFAULT                 = 0x0\n\tENCODING_FM_MARK                 = 0x3\n\tENCODING_FM_SPACE                = 0x4\n\tENCODING_MANCHESTER              = 0x5\n\tENCODING_NRZ                     = 0x1\n\tENCODING_NRZI                    = 0x2\n\tEPOLLERR                         = 0x8\n\tEPOLLET                          = 0x80000000\n\tEPOLLEXCLUSIVE                   = 0x10000000\n\tEPOLLHUP                         = 0x10\n\tEPOLLIN                          = 0x1\n\tEPOLLMSG                         = 0x400\n\tEPOLLONESHOT                     = 0x40000000\n\tEPOLLOUT                         = 0x4\n\tEPOLLPRI                         = 0x2\n\tEPOLLRDBAND                      = 0x80\n\tEPOLLRDHUP                       = 0x2000\n\tEPOLLRDNORM                      = 0x40\n\tEPOLLWAKEUP                      = 0x20000000\n\tEPOLLWRBAND                      = 0x200\n\tEPOLLWRNORM                      = 0x100\n\tEPOLL_CLOEXEC                    = 0x400000\n\tEPOLL_CTL_ADD                    = 0x1\n\tEPOLL_CTL_DEL                    = 0x2\n\tEPOLL_CTL_MOD                    = 0x3\n\tETH_P_1588                       = 0x88f7\n\tETH_P_8021AD                     = 0x88a8\n\tETH_P_8021AH                     = 0x88e7\n\tETH_P_8021Q                      = 0x8100\n\tETH_P_80221                      = 0x8917\n\tETH_P_802_2                      = 0x4\n\tETH_P_802_3                      = 0x1\n\tETH_P_802_3_MIN                  = 0x600\n\tETH_P_802_EX1                    = 0x88b5\n\tETH_P_AARP                       = 0x80f3\n\tETH_P_AF_IUCV                    = 0xfbfb\n\tETH_P_ALL                        = 0x3\n\tETH_P_AOE                        = 0x88a2\n\tETH_P_ARCNET                     = 0x1a\n\tETH_P_ARP                        = 0x806\n\tETH_P_ATALK                      = 0x809b\n\tETH_P_ATMFATE                    = 0x8884\n\tETH_P_ATMMPOA                    = 0x884c\n\tETH_P_AX25                       = 0x2\n\tETH_P_BATMAN                     = 0x4305\n\tETH_P_BPQ                        = 0x8ff\n\tETH_P_CAIF                       = 0xf7\n\tETH_P_CAN                        = 0xc\n\tETH_P_CANFD                      = 0xd\n\tETH_P_CONTROL                    = 0x16\n\tETH_P_CUST                       = 0x6006\n\tETH_P_DDCMP                      = 0x6\n\tETH_P_DEC                        = 0x6000\n\tETH_P_DIAG                       = 0x6005\n\tETH_P_DNA_DL                     = 0x6001\n\tETH_P_DNA_RC                     = 0x6002\n\tETH_P_DNA_RT                     = 0x6003\n\tETH_P_DSA                        = 0x1b\n\tETH_P_ECONET                     = 0x18\n\tETH_P_EDSA                       = 0xdada\n\tETH_P_FCOE                       = 0x8906\n\tETH_P_FIP                        = 0x8914\n\tETH_P_HDLC                       = 0x19\n\tETH_P_HSR                        = 0x892f\n\tETH_P_IEEE802154                 = 0xf6\n\tETH_P_IEEEPUP                    = 0xa00\n\tETH_P_IEEEPUPAT                  = 0xa01\n\tETH_P_IP                         = 0x800\n\tETH_P_IPV6                       = 0x86dd\n\tETH_P_IPX                        = 0x8137\n\tETH_P_IRDA                       = 0x17\n\tETH_P_LAT                        = 0x6004\n\tETH_P_LINK_CTL                   = 0x886c\n\tETH_P_LOCALTALK                  = 0x9\n\tETH_P_LOOP                       = 0x60\n\tETH_P_LOOPBACK                   = 0x9000\n\tETH_P_MACSEC                     = 0x88e5\n\tETH_P_MOBITEX                    = 0x15\n\tETH_P_MPLS_MC                    = 0x8848\n\tETH_P_MPLS_UC                    = 0x8847\n\tETH_P_MVRP                       = 0x88f5\n\tETH_P_PAE                        = 0x888e\n\tETH_P_PAUSE                      = 0x8808\n\tETH_P_PHONET                     = 0xf5\n\tETH_P_PPPTALK                    = 0x10\n\tETH_P_PPP_DISC                   = 0x8863\n\tETH_P_PPP_MP                     = 0x8\n\tETH_P_PPP_SES                    = 0x8864\n\tETH_P_PRP                        = 0x88fb\n\tETH_P_PUP                        = 0x200\n\tETH_P_PUPAT                      = 0x201\n\tETH_P_QINQ1                      = 0x9100\n\tETH_P_QINQ2                      = 0x9200\n\tETH_P_QINQ3                      = 0x9300\n\tETH_P_RARP                       = 0x8035\n\tETH_P_SCA                        = 0x6007\n\tETH_P_SLOW                       = 0x8809\n\tETH_P_SNAP                       = 0x5\n\tETH_P_TDLS                       = 0x890d\n\tETH_P_TEB                        = 0x6558\n\tETH_P_TIPC                       = 0x88ca\n\tETH_P_TRAILER                    = 0x1c\n\tETH_P_TR_802_2                   = 0x11\n\tETH_P_TSN                        = 0x22f0\n\tETH_P_WAN_PPP                    = 0x7\n\tETH_P_WCCP                       = 0x883e\n\tETH_P_X25                        = 0x805\n\tETH_P_XDSA                       = 0xf8\n\tEXTA                             = 0xe\n\tEXTB                             = 0xf\n\tEXTPROC                          = 0x10000\n\tFALLOC_FL_COLLAPSE_RANGE         = 0x8\n\tFALLOC_FL_INSERT_RANGE           = 0x20\n\tFALLOC_FL_KEEP_SIZE              = 0x1\n\tFALLOC_FL_NO_HIDE_STALE          = 0x4\n\tFALLOC_FL_PUNCH_HOLE             = 0x2\n\tFALLOC_FL_ZERO_RANGE             = 0x10\n\tFD_CLOEXEC                       = 0x1\n\tFD_SETSIZE                       = 0x400\n\tFF0                              = 0x0\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x2000\n\tF_DUPFD                          = 0x0\n\tF_DUPFD_CLOEXEC                  = 0x406\n\tF_EXLCK                          = 0x4\n\tF_GETFD                          = 0x1\n\tF_GETFL                          = 0x3\n\tF_GETLEASE                       = 0x401\n\tF_GETLK                          = 0x7\n\tF_GETLK64                        = 0x7\n\tF_GETOWN                         = 0x5\n\tF_GETOWN_EX                      = 0x10\n\tF_GETPIPE_SZ                     = 0x408\n\tF_GETSIG                         = 0xb\n\tF_LOCK                           = 0x1\n\tF_NOTIFY                         = 0x402\n\tF_OFD_GETLK                      = 0x24\n\tF_OFD_SETLK                      = 0x25\n\tF_OFD_SETLKW                     = 0x26\n\tF_OK                             = 0x0\n\tF_RDLCK                          = 0x1\n\tF_SETFD                          = 0x2\n\tF_SETFL                          = 0x4\n\tF_SETLEASE                       = 0x400\n\tF_SETLK                          = 0x8\n\tF_SETLK64                        = 0x8\n\tF_SETLKW                         = 0x9\n\tF_SETLKW64                       = 0x9\n\tF_SETOWN                         = 0x6\n\tF_SETOWN_EX                      = 0xf\n\tF_SETPIPE_SZ                     = 0x407\n\tF_SETSIG                         = 0xa\n\tF_SHLCK                          = 0x8\n\tF_TEST                           = 0x3\n\tF_TLOCK                          = 0x2\n\tF_ULOCK                          = 0x0\n\tF_UNLCK                          = 0x3\n\tF_WRLCK                          = 0x2\n\tGRND_NONBLOCK                    = 0x1\n\tGRND_RANDOM                      = 0x2\n\tHUPCL                            = 0x400\n\tIBSHIFT                          = 0x10\n\tICANON                           = 0x2\n\tICMPV6_FILTER                    = 0x1\n\tICRNL                            = 0x100\n\tIEXTEN                           = 0x8000\n\tIFA_F_DADFAILED                  = 0x8\n\tIFA_F_DEPRECATED                 = 0x20\n\tIFA_F_HOMEADDRESS                = 0x10\n\tIFA_F_MANAGETEMPADDR             = 0x100\n\tIFA_F_MCAUTOJOIN                 = 0x400\n\tIFA_F_NODAD                      = 0x2\n\tIFA_F_NOPREFIXROUTE              = 0x200\n\tIFA_F_OPTIMISTIC                 = 0x4\n\tIFA_F_PERMANENT                  = 0x80\n\tIFA_F_SECONDARY                  = 0x1\n\tIFA_F_STABLE_PRIVACY             = 0x800\n\tIFA_F_TEMPORARY                  = 0x1\n\tIFA_F_TENTATIVE                  = 0x40\n\tIFA_MAX                          = 0x8\n\tIFF_ALLMULTI                     = 0x200\n\tIFF_ATTACH_QUEUE                 = 0x200\n\tIFF_AUTOMEDIA                    = 0x4000\n\tIFF_BROADCAST                    = 0x2\n\tIFF_DEBUG                        = 0x4\n\tIFF_DETACH_QUEUE                 = 0x400\n\tIFF_DORMANT                      = 0x20000\n\tIFF_DYNAMIC                      = 0x8000\n\tIFF_ECHO                         = 0x40000\n\tIFF_LOOPBACK                     = 0x8\n\tIFF_LOWER_UP                     = 0x10000\n\tIFF_MASTER                       = 0x400\n\tIFF_MULTICAST                    = 0x1000\n\tIFF_MULTI_QUEUE                  = 0x100\n\tIFF_NOARP                        = 0x80\n\tIFF_NOFILTER                     = 0x1000\n\tIFF_NOTRAILERS                   = 0x20\n\tIFF_NO_PI                        = 0x1000\n\tIFF_ONE_QUEUE                    = 0x2000\n\tIFF_PERSIST                      = 0x800\n\tIFF_POINTOPOINT                  = 0x10\n\tIFF_PORTSEL                      = 0x2000\n\tIFF_PROMISC                      = 0x100\n\tIFF_RUNNING                      = 0x40\n\tIFF_SLAVE                        = 0x800\n\tIFF_TAP                          = 0x2\n\tIFF_TUN                          = 0x1\n\tIFF_TUN_EXCL                     = 0x8000\n\tIFF_UP                           = 0x1\n\tIFF_VNET_HDR                     = 0x4000\n\tIFF_VOLATILE                     = 0x70c5a\n\tIFNAMSIZ                         = 0x10\n\tIGNBRK                           = 0x1\n\tIGNCR                            = 0x80\n\tIGNPAR                           = 0x4\n\tIMAXBEL                          = 0x2000\n\tINLCR                            = 0x40\n\tINPCK                            = 0x10\n\tIN_ACCESS                        = 0x1\n\tIN_ALL_EVENTS                    = 0xfff\n\tIN_ATTRIB                        = 0x4\n\tIN_CLASSA_HOST                   = 0xffffff\n\tIN_CLASSA_MAX                    = 0x80\n\tIN_CLASSA_NET                    = 0xff000000\n\tIN_CLASSA_NSHIFT                 = 0x18\n\tIN_CLASSB_HOST                   = 0xffff\n\tIN_CLASSB_MAX                    = 0x10000\n\tIN_CLASSB_NET                    = 0xffff0000\n\tIN_CLASSB_NSHIFT                 = 0x10\n\tIN_CLASSC_HOST                   = 0xff\n\tIN_CLASSC_NET                    = 0xffffff00\n\tIN_CLASSC_NSHIFT                 = 0x8\n\tIN_CLOEXEC                       = 0x400000\n\tIN_CLOSE                         = 0x18\n\tIN_CLOSE_NOWRITE                 = 0x10\n\tIN_CLOSE_WRITE                   = 0x8\n\tIN_CREATE                        = 0x100\n\tIN_DELETE                        = 0x200\n\tIN_DELETE_SELF                   = 0x400\n\tIN_DONT_FOLLOW                   = 0x2000000\n\tIN_EXCL_UNLINK                   = 0x4000000\n\tIN_IGNORED                       = 0x8000\n\tIN_ISDIR                         = 0x40000000\n\tIN_LOOPBACKNET                   = 0x7f\n\tIN_MASK_ADD                      = 0x20000000\n\tIN_MODIFY                        = 0x2\n\tIN_MOVE                          = 0xc0\n\tIN_MOVED_FROM                    = 0x40\n\tIN_MOVED_TO                      = 0x80\n\tIN_MOVE_SELF                     = 0x800\n\tIN_NONBLOCK                      = 0x4000\n\tIN_ONESHOT                       = 0x80000000\n\tIN_ONLYDIR                       = 0x1000000\n\tIN_OPEN                          = 0x20\n\tIN_Q_OVERFLOW                    = 0x4000\n\tIN_UNMOUNT                       = 0x2000\n\tIPPROTO_AH                       = 0x33\n\tIPPROTO_BEETPH                   = 0x5e\n\tIPPROTO_COMP                     = 0x6c\n\tIPPROTO_DCCP                     = 0x21\n\tIPPROTO_DSTOPTS                  = 0x3c\n\tIPPROTO_EGP                      = 0x8\n\tIPPROTO_ENCAP                    = 0x62\n\tIPPROTO_ESP                      = 0x32\n\tIPPROTO_FRAGMENT                 = 0x2c\n\tIPPROTO_GRE                      = 0x2f\n\tIPPROTO_HOPOPTS                  = 0x0\n\tIPPROTO_ICMP                     = 0x1\n\tIPPROTO_ICMPV6                   = 0x3a\n\tIPPROTO_IDP                      = 0x16\n\tIPPROTO_IGMP                     = 0x2\n\tIPPROTO_IP                       = 0x0\n\tIPPROTO_IPIP                     = 0x4\n\tIPPROTO_IPV6                     = 0x29\n\tIPPROTO_MH                       = 0x87\n\tIPPROTO_MPLS                     = 0x89\n\tIPPROTO_MTP                      = 0x5c\n\tIPPROTO_NONE                     = 0x3b\n\tIPPROTO_PIM                      = 0x67\n\tIPPROTO_PUP                      = 0xc\n\tIPPROTO_RAW                      = 0xff\n\tIPPROTO_ROUTING                  = 0x2b\n\tIPPROTO_RSVP                     = 0x2e\n\tIPPROTO_SCTP                     = 0x84\n\tIPPROTO_TCP                      = 0x6\n\tIPPROTO_TP                       = 0x1d\n\tIPPROTO_UDP                      = 0x11\n\tIPPROTO_UDPLITE                  = 0x88\n\tIPV6_2292DSTOPTS                 = 0x4\n\tIPV6_2292HOPLIMIT                = 0x8\n\tIPV6_2292HOPOPTS                 = 0x3\n\tIPV6_2292PKTINFO                 = 0x2\n\tIPV6_2292PKTOPTIONS              = 0x6\n\tIPV6_2292RTHDR                   = 0x5\n\tIPV6_ADDRFORM                    = 0x1\n\tIPV6_ADD_MEMBERSHIP              = 0x14\n\tIPV6_AUTHHDR                     = 0xa\n\tIPV6_CHECKSUM                    = 0x7\n\tIPV6_DONTFRAG                    = 0x3e\n\tIPV6_DROP_MEMBERSHIP             = 0x15\n\tIPV6_DSTOPTS                     = 0x3b\n\tIPV6_HDRINCL                     = 0x24\n\tIPV6_HOPLIMIT                    = 0x34\n\tIPV6_HOPOPTS                     = 0x36\n\tIPV6_IPSEC_POLICY                = 0x22\n\tIPV6_JOIN_ANYCAST                = 0x1b\n\tIPV6_JOIN_GROUP                  = 0x14\n\tIPV6_LEAVE_ANYCAST               = 0x1c\n\tIPV6_LEAVE_GROUP                 = 0x15\n\tIPV6_MTU                         = 0x18\n\tIPV6_MTU_DISCOVER                = 0x17\n\tIPV6_MULTICAST_HOPS              = 0x12\n\tIPV6_MULTICAST_IF                = 0x11\n\tIPV6_MULTICAST_LOOP              = 0x13\n\tIPV6_NEXTHOP                     = 0x9\n\tIPV6_PATHMTU                     = 0x3d\n\tIPV6_PKTINFO                     = 0x32\n\tIPV6_PMTUDISC_DO                 = 0x2\n\tIPV6_PMTUDISC_DONT               = 0x0\n\tIPV6_PMTUDISC_INTERFACE          = 0x4\n\tIPV6_PMTUDISC_OMIT               = 0x5\n\tIPV6_PMTUDISC_PROBE              = 0x3\n\tIPV6_PMTUDISC_WANT               = 0x1\n\tIPV6_RECVDSTOPTS                 = 0x3a\n\tIPV6_RECVERR                     = 0x19\n\tIPV6_RECVHOPLIMIT                = 0x33\n\tIPV6_RECVHOPOPTS                 = 0x35\n\tIPV6_RECVPATHMTU                 = 0x3c\n\tIPV6_RECVPKTINFO                 = 0x31\n\tIPV6_RECVRTHDR                   = 0x38\n\tIPV6_RECVTCLASS                  = 0x42\n\tIPV6_ROUTER_ALERT                = 0x16\n\tIPV6_RTHDR                       = 0x39\n\tIPV6_RTHDRDSTOPTS                = 0x37\n\tIPV6_RTHDR_LOOSE                 = 0x0\n\tIPV6_RTHDR_STRICT                = 0x1\n\tIPV6_RTHDR_TYPE_0                = 0x0\n\tIPV6_RXDSTOPTS                   = 0x3b\n\tIPV6_RXHOPOPTS                   = 0x36\n\tIPV6_TCLASS                      = 0x43\n\tIPV6_UNICAST_HOPS                = 0x10\n\tIPV6_V6ONLY                      = 0x1a\n\tIPV6_XFRM_POLICY                 = 0x23\n\tIP_ADD_MEMBERSHIP                = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP         = 0x27\n\tIP_BIND_ADDRESS_NO_PORT          = 0x18\n\tIP_BLOCK_SOURCE                  = 0x26\n\tIP_CHECKSUM                      = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP        = 0x1\n\tIP_DEFAULT_MULTICAST_TTL         = 0x1\n\tIP_DF                            = 0x4000\n\tIP_DROP_MEMBERSHIP               = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP        = 0x28\n\tIP_FREEBIND                      = 0xf\n\tIP_HDRINCL                       = 0x3\n\tIP_IPSEC_POLICY                  = 0x10\n\tIP_MAXPACKET                     = 0xffff\n\tIP_MAX_MEMBERSHIPS               = 0x14\n\tIP_MF                            = 0x2000\n\tIP_MINTTL                        = 0x15\n\tIP_MSFILTER                      = 0x29\n\tIP_MSS                           = 0x240\n\tIP_MTU                           = 0xe\n\tIP_MTU_DISCOVER                  = 0xa\n\tIP_MULTICAST_ALL                 = 0x31\n\tIP_MULTICAST_IF                  = 0x20\n\tIP_MULTICAST_LOOP                = 0x22\n\tIP_MULTICAST_TTL                 = 0x21\n\tIP_NODEFRAG                      = 0x16\n\tIP_OFFMASK                       = 0x1fff\n\tIP_OPTIONS                       = 0x4\n\tIP_ORIGDSTADDR                   = 0x14\n\tIP_PASSSEC                       = 0x12\n\tIP_PKTINFO                       = 0x8\n\tIP_PKTOPTIONS                    = 0x9\n\tIP_PMTUDISC                      = 0xa\n\tIP_PMTUDISC_DO                   = 0x2\n\tIP_PMTUDISC_DONT                 = 0x0\n\tIP_PMTUDISC_INTERFACE            = 0x4\n\tIP_PMTUDISC_OMIT                 = 0x5\n\tIP_PMTUDISC_PROBE                = 0x3\n\tIP_PMTUDISC_WANT                 = 0x1\n\tIP_RECVERR                       = 0xb\n\tIP_RECVOPTS                      = 0x6\n\tIP_RECVORIGDSTADDR               = 0x14\n\tIP_RECVRETOPTS                   = 0x7\n\tIP_RECVTOS                       = 0xd\n\tIP_RECVTTL                       = 0xc\n\tIP_RETOPTS                       = 0x7\n\tIP_RF                            = 0x8000\n\tIP_ROUTER_ALERT                  = 0x5\n\tIP_TOS                           = 0x1\n\tIP_TRANSPARENT                   = 0x13\n\tIP_TTL                           = 0x2\n\tIP_UNBLOCK_SOURCE                = 0x25\n\tIP_UNICAST_IF                    = 0x32\n\tIP_XFRM_POLICY                   = 0x11\n\tISIG                             = 0x1\n\tISTRIP                           = 0x20\n\tIUCLC                            = 0x200\n\tIUTF8                            = 0x4000\n\tIXANY                            = 0x800\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tLINUX_REBOOT_CMD_CAD_OFF         = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT            = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC           = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART         = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1              = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2              = 0x28121969\n\tLOCK_EX                          = 0x2\n\tLOCK_NB                          = 0x4\n\tLOCK_SH                          = 0x1\n\tLOCK_UN                          = 0x8\n\tMADV_DODUMP                      = 0x11\n\tMADV_DOFORK                      = 0xb\n\tMADV_DONTDUMP                    = 0x10\n\tMADV_DONTFORK                    = 0xa\n\tMADV_DONTNEED                    = 0x4\n\tMADV_FREE                        = 0x8\n\tMADV_HUGEPAGE                    = 0xe\n\tMADV_HWPOISON                    = 0x64\n\tMADV_MERGEABLE                   = 0xc\n\tMADV_NOHUGEPAGE                  = 0xf\n\tMADV_NORMAL                      = 0x0\n\tMADV_RANDOM                      = 0x1\n\tMADV_REMOVE                      = 0x9\n\tMADV_SEQUENTIAL                  = 0x2\n\tMADV_UNMERGEABLE                 = 0xd\n\tMADV_WILLNEED                    = 0x3\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_FILE                         = 0x0\n\tMAP_FIXED                        = 0x10\n\tMAP_GROWSDOWN                    = 0x200\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_HUGE_MASK                    = 0x3f\n\tMAP_HUGE_SHIFT                   = 0x1a\n\tMAP_LOCKED                       = 0x100\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_PRIVATE                      = 0x2\n\tMAP_RENAME                       = 0x20\n\tMAP_SHARED                       = 0x1\n\tMAP_STACK                        = 0x20000\n\tMAP_TYPE                         = 0xf\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMNT_DETACH                       = 0x2\n\tMNT_EXPIRE                       = 0x4\n\tMNT_FORCE                        = 0x1\n\tMSG_BATCH                        = 0x40000\n\tMSG_CMSG_CLOEXEC                 = 0x40000000\n\tMSG_CONFIRM                      = 0x800\n\tMSG_CTRUNC                       = 0x8\n\tMSG_DONTROUTE                    = 0x4\n\tMSG_DONTWAIT                     = 0x40\n\tMSG_EOR                          = 0x80\n\tMSG_ERRQUEUE                     = 0x2000\n\tMSG_FASTOPEN                     = 0x20000000\n\tMSG_FIN                          = 0x200\n\tMSG_MORE                         = 0x8000\n\tMSG_NOSIGNAL                     = 0x4000\n\tMSG_OOB                          = 0x1\n\tMSG_PEEK                         = 0x2\n\tMSG_PROXY                        = 0x10\n\tMSG_RST                          = 0x1000\n\tMSG_SYN                          = 0x400\n\tMSG_TRUNC                        = 0x20\n\tMSG_TRYHARD                      = 0x4\n\tMSG_WAITALL                      = 0x100\n\tMSG_WAITFORONE                   = 0x10000\n\tMS_ACTIVE                        = 0x40000000\n\tMS_ASYNC                         = 0x1\n\tMS_BIND                          = 0x1000\n\tMS_DIRSYNC                       = 0x80\n\tMS_INVALIDATE                    = 0x2\n\tMS_I_VERSION                     = 0x800000\n\tMS_KERNMOUNT                     = 0x400000\n\tMS_LAZYTIME                      = 0x2000000\n\tMS_MANDLOCK                      = 0x40\n\tMS_MGC_MSK                       = 0xffff0000\n\tMS_MGC_VAL                       = 0xc0ed0000\n\tMS_MOVE                          = 0x2000\n\tMS_NOATIME                       = 0x400\n\tMS_NODEV                         = 0x4\n\tMS_NODIRATIME                    = 0x800\n\tMS_NOEXEC                        = 0x8\n\tMS_NOSUID                        = 0x2\n\tMS_NOUSER                        = -0x80000000\n\tMS_POSIXACL                      = 0x10000\n\tMS_PRIVATE                       = 0x40000\n\tMS_RDONLY                        = 0x1\n\tMS_REC                           = 0x4000\n\tMS_RELATIME                      = 0x200000\n\tMS_REMOUNT                       = 0x20\n\tMS_RMT_MASK                      = 0x2800051\n\tMS_SHARED                        = 0x100000\n\tMS_SILENT                        = 0x8000\n\tMS_SLAVE                         = 0x80000\n\tMS_STRICTATIME                   = 0x1000000\n\tMS_SYNC                          = 0x4\n\tMS_SYNCHRONOUS                   = 0x10\n\tMS_UNBINDABLE                    = 0x20000\n\tNAME_MAX                         = 0xff\n\tNETLINK_ADD_MEMBERSHIP           = 0x1\n\tNETLINK_AUDIT                    = 0x9\n\tNETLINK_BROADCAST_ERROR          = 0x4\n\tNETLINK_CAP_ACK                  = 0xa\n\tNETLINK_CONNECTOR                = 0xb\n\tNETLINK_CRYPTO                   = 0x15\n\tNETLINK_DNRTMSG                  = 0xe\n\tNETLINK_DROP_MEMBERSHIP          = 0x2\n\tNETLINK_ECRYPTFS                 = 0x13\n\tNETLINK_FIB_LOOKUP               = 0xa\n\tNETLINK_FIREWALL                 = 0x3\n\tNETLINK_GENERIC                  = 0x10\n\tNETLINK_INET_DIAG                = 0x4\n\tNETLINK_IP6_FW                   = 0xd\n\tNETLINK_ISCSI                    = 0x8\n\tNETLINK_KOBJECT_UEVENT           = 0xf\n\tNETLINK_LISTEN_ALL_NSID          = 0x8\n\tNETLINK_LIST_MEMBERSHIPS         = 0x9\n\tNETLINK_NETFILTER                = 0xc\n\tNETLINK_NFLOG                    = 0x5\n\tNETLINK_NO_ENOBUFS               = 0x5\n\tNETLINK_PKTINFO                  = 0x3\n\tNETLINK_RDMA                     = 0x14\n\tNETLINK_ROUTE                    = 0x0\n\tNETLINK_RX_RING                  = 0x6\n\tNETLINK_SCSITRANSPORT            = 0x12\n\tNETLINK_SELINUX                  = 0x7\n\tNETLINK_SOCK_DIAG                = 0x4\n\tNETLINK_TX_RING                  = 0x7\n\tNETLINK_UNUSED                   = 0x1\n\tNETLINK_USERSOCK                 = 0x2\n\tNETLINK_XFRM                     = 0x6\n\tNL0                              = 0x0\n\tNL1                              = 0x100\n\tNLA_ALIGNTO                      = 0x4\n\tNLA_F_NESTED                     = 0x8000\n\tNLA_F_NET_BYTEORDER              = 0x4000\n\tNLA_HDRLEN                       = 0x4\n\tNLDLY                            = 0x100\n\tNLMSG_ALIGNTO                    = 0x4\n\tNLMSG_DONE                       = 0x3\n\tNLMSG_ERROR                      = 0x2\n\tNLMSG_HDRLEN                     = 0x10\n\tNLMSG_MIN_TYPE                   = 0x10\n\tNLMSG_NOOP                       = 0x1\n\tNLMSG_OVERRUN                    = 0x4\n\tNLM_F_ACK                        = 0x4\n\tNLM_F_APPEND                     = 0x800\n\tNLM_F_ATOMIC                     = 0x400\n\tNLM_F_CREATE                     = 0x400\n\tNLM_F_DUMP                       = 0x300\n\tNLM_F_DUMP_FILTERED              = 0x20\n\tNLM_F_DUMP_INTR                  = 0x10\n\tNLM_F_ECHO                       = 0x8\n\tNLM_F_EXCL                       = 0x200\n\tNLM_F_MATCH                      = 0x200\n\tNLM_F_MULTI                      = 0x2\n\tNLM_F_REPLACE                    = 0x100\n\tNLM_F_REQUEST                    = 0x1\n\tNLM_F_ROOT                       = 0x100\n\tNOFLSH                           = 0x80\n\tOCRNL                            = 0x8\n\tOFDEL                            = 0x80\n\tOFILL                            = 0x40\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tONLRET                           = 0x20\n\tONOCR                            = 0x10\n\tOPOST                            = 0x1\n\tO_ACCMODE                        = 0x3\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x40\n\tO_CLOEXEC                        = 0x400000\n\tO_CREAT                          = 0x200\n\tO_DIRECT                         = 0x100000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x2000\n\tO_EXCL                           = 0x800\n\tO_FSYNC                          = 0x802000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x4004\n\tO_NOATIME                        = 0x200000\n\tO_NOCTTY                         = 0x8000\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x4000\n\tO_PATH                           = 0x1000000\n\tO_RDONLY                         = 0x0\n\tO_RDWR                           = 0x2\n\tO_RSYNC                          = 0x802000\n\tO_SYNC                           = 0x802000\n\tO_TMPFILE                        = 0x2010000\n\tO_TRUNC                          = 0x400\n\tO_WRONLY                         = 0x1\n\tPACKET_ADD_MEMBERSHIP            = 0x1\n\tPACKET_AUXDATA                   = 0x8\n\tPACKET_BROADCAST                 = 0x1\n\tPACKET_COPY_THRESH               = 0x7\n\tPACKET_DROP_MEMBERSHIP           = 0x2\n\tPACKET_FANOUT                    = 0x12\n\tPACKET_FANOUT_CBPF               = 0x6\n\tPACKET_FANOUT_CPU                = 0x2\n\tPACKET_FANOUT_DATA               = 0x16\n\tPACKET_FANOUT_EBPF               = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG        = 0x8000\n\tPACKET_FANOUT_FLAG_ROLLOVER      = 0x1000\n\tPACKET_FANOUT_HASH               = 0x0\n\tPACKET_FANOUT_LB                 = 0x1\n\tPACKET_FANOUT_QM                 = 0x5\n\tPACKET_FANOUT_RND                = 0x4\n\tPACKET_FANOUT_ROLLOVER           = 0x3\n\tPACKET_FASTROUTE                 = 0x6\n\tPACKET_HDRLEN                    = 0xb\n\tPACKET_HOST                      = 0x0\n\tPACKET_KERNEL                    = 0x7\n\tPACKET_LOOPBACK                  = 0x5\n\tPACKET_LOSS                      = 0xe\n\tPACKET_MR_ALLMULTI               = 0x2\n\tPACKET_MR_MULTICAST              = 0x0\n\tPACKET_MR_PROMISC                = 0x1\n\tPACKET_MR_UNICAST                = 0x3\n\tPACKET_MULTICAST                 = 0x2\n\tPACKET_ORIGDEV                   = 0x9\n\tPACKET_OTHERHOST                 = 0x3\n\tPACKET_OUTGOING                  = 0x4\n\tPACKET_QDISC_BYPASS              = 0x14\n\tPACKET_RECV_OUTPUT               = 0x3\n\tPACKET_RESERVE                   = 0xc\n\tPACKET_ROLLOVER_STATS            = 0x15\n\tPACKET_RX_RING                   = 0x5\n\tPACKET_STATISTICS                = 0x6\n\tPACKET_TIMESTAMP                 = 0x11\n\tPACKET_TX_HAS_OFF                = 0x13\n\tPACKET_TX_RING                   = 0xd\n\tPACKET_TX_TIMESTAMP              = 0x10\n\tPACKET_USER                      = 0x6\n\tPACKET_VERSION                   = 0xa\n\tPACKET_VNET_HDR                  = 0xf\n\tPARENB                           = 0x100\n\tPARITY_CRC16_PR0                 = 0x2\n\tPARITY_CRC16_PR0_CCITT           = 0x4\n\tPARITY_CRC16_PR1                 = 0x3\n\tPARITY_CRC16_PR1_CCITT           = 0x5\n\tPARITY_CRC32_PR0_CCITT           = 0x6\n\tPARITY_CRC32_PR1_CCITT           = 0x7\n\tPARITY_DEFAULT                   = 0x0\n\tPARITY_NONE                      = 0x1\n\tPARMRK                           = 0x8\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPRIO_PGRP                        = 0x1\n\tPRIO_PROCESS                     = 0x0\n\tPRIO_USER                        = 0x2\n\tPROT_EXEC                        = 0x4\n\tPROT_GROWSDOWN                   = 0x1000000\n\tPROT_GROWSUP                     = 0x2000000\n\tPROT_NONE                        = 0x0\n\tPROT_READ                        = 0x1\n\tPROT_WRITE                       = 0x2\n\tPR_CAPBSET_DROP                  = 0x18\n\tPR_CAPBSET_READ                  = 0x17\n\tPR_CAP_AMBIENT                   = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL         = 0x4\n\tPR_CAP_AMBIENT_IS_SET            = 0x1\n\tPR_CAP_AMBIENT_LOWER             = 0x3\n\tPR_CAP_AMBIENT_RAISE             = 0x2\n\tPR_ENDIAN_BIG                    = 0x0\n\tPR_ENDIAN_LITTLE                 = 0x1\n\tPR_ENDIAN_PPC_LITTLE             = 0x2\n\tPR_FPEMU_NOPRINT                 = 0x1\n\tPR_FPEMU_SIGFPE                  = 0x2\n\tPR_FP_EXC_ASYNC                  = 0x2\n\tPR_FP_EXC_DISABLED               = 0x0\n\tPR_FP_EXC_DIV                    = 0x10000\n\tPR_FP_EXC_INV                    = 0x100000\n\tPR_FP_EXC_NONRECOV               = 0x1\n\tPR_FP_EXC_OVF                    = 0x20000\n\tPR_FP_EXC_PRECISE                = 0x3\n\tPR_FP_EXC_RES                    = 0x80000\n\tPR_FP_EXC_SW_ENABLE              = 0x80\n\tPR_FP_EXC_UND                    = 0x40000\n\tPR_FP_MODE_FR                    = 0x1\n\tPR_FP_MODE_FRE                   = 0x2\n\tPR_GET_CHILD_SUBREAPER           = 0x25\n\tPR_GET_DUMPABLE                  = 0x3\n\tPR_GET_ENDIAN                    = 0x13\n\tPR_GET_FPEMU                     = 0x9\n\tPR_GET_FPEXC                     = 0xb\n\tPR_GET_FP_MODE                   = 0x2e\n\tPR_GET_KEEPCAPS                  = 0x7\n\tPR_GET_NAME                      = 0x10\n\tPR_GET_NO_NEW_PRIVS              = 0x27\n\tPR_GET_PDEATHSIG                 = 0x2\n\tPR_GET_SECCOMP                   = 0x15\n\tPR_GET_SECUREBITS                = 0x1b\n\tPR_GET_THP_DISABLE               = 0x2a\n\tPR_GET_TID_ADDRESS               = 0x28\n\tPR_GET_TIMERSLACK                = 0x1e\n\tPR_GET_TIMING                    = 0xd\n\tPR_GET_TSC                       = 0x19\n\tPR_GET_UNALIGN                   = 0x5\n\tPR_MCE_KILL                      = 0x21\n\tPR_MCE_KILL_CLEAR                = 0x0\n\tPR_MCE_KILL_DEFAULT              = 0x2\n\tPR_MCE_KILL_EARLY                = 0x1\n\tPR_MCE_KILL_GET                  = 0x22\n\tPR_MCE_KILL_LATE                 = 0x0\n\tPR_MCE_KILL_SET                  = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT        = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT         = 0x2b\n\tPR_SET_CHILD_SUBREAPER           = 0x24\n\tPR_SET_DUMPABLE                  = 0x4\n\tPR_SET_ENDIAN                    = 0x14\n\tPR_SET_FPEMU                     = 0xa\n\tPR_SET_FPEXC                     = 0xc\n\tPR_SET_FP_MODE                   = 0x2d\n\tPR_SET_KEEPCAPS                  = 0x8\n\tPR_SET_MM                        = 0x23\n\tPR_SET_MM_ARG_END                = 0x9\n\tPR_SET_MM_ARG_START              = 0x8\n\tPR_SET_MM_AUXV                   = 0xc\n\tPR_SET_MM_BRK                    = 0x7\n\tPR_SET_MM_END_CODE               = 0x2\n\tPR_SET_MM_END_DATA               = 0x4\n\tPR_SET_MM_ENV_END                = 0xb\n\tPR_SET_MM_ENV_START              = 0xa\n\tPR_SET_MM_EXE_FILE               = 0xd\n\tPR_SET_MM_MAP                    = 0xe\n\tPR_SET_MM_MAP_SIZE               = 0xf\n\tPR_SET_MM_START_BRK              = 0x6\n\tPR_SET_MM_START_CODE             = 0x1\n\tPR_SET_MM_START_DATA             = 0x3\n\tPR_SET_MM_START_STACK            = 0x5\n\tPR_SET_NAME                      = 0xf\n\tPR_SET_NO_NEW_PRIVS              = 0x26\n\tPR_SET_PDEATHSIG                 = 0x1\n\tPR_SET_PTRACER                   = 0x59616d61\n\tPR_SET_PTRACER_ANY               = -0x1\n\tPR_SET_SECCOMP                   = 0x16\n\tPR_SET_SECUREBITS                = 0x1c\n\tPR_SET_THP_DISABLE               = 0x29\n\tPR_SET_TIMERSLACK                = 0x1d\n\tPR_SET_TIMING                    = 0xe\n\tPR_SET_TSC                       = 0x1a\n\tPR_SET_UNALIGN                   = 0x6\n\tPR_TASK_PERF_EVENTS_DISABLE      = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE       = 0x20\n\tPR_TIMING_STATISTICAL            = 0x0\n\tPR_TIMING_TIMESTAMP              = 0x1\n\tPR_TSC_ENABLE                    = 0x1\n\tPR_TSC_SIGSEGV                   = 0x2\n\tPR_UNALIGN_NOPRINT               = 0x1\n\tPR_UNALIGN_SIGBUS                = 0x2\n\tPTRACE_ATTACH                    = 0x10\n\tPTRACE_CONT                      = 0x7\n\tPTRACE_DETACH                    = 0x11\n\tPTRACE_EVENT_CLONE               = 0x3\n\tPTRACE_EVENT_EXEC                = 0x4\n\tPTRACE_EVENT_EXIT                = 0x6\n\tPTRACE_EVENT_FORK                = 0x1\n\tPTRACE_EVENT_SECCOMP             = 0x7\n\tPTRACE_EVENT_STOP                = 0x80\n\tPTRACE_EVENT_VFORK               = 0x2\n\tPTRACE_EVENT_VFORK_DONE          = 0x5\n\tPTRACE_GETEVENTMSG               = 0x4201\n\tPTRACE_GETFPAREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPREGS64               = 0x19\n\tPTRACE_GETREGS                   = 0xc\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETREGSET                 = 0x4204\n\tPTRACE_GETSIGINFO                = 0x4202\n\tPTRACE_GETSIGMASK                = 0x420a\n\tPTRACE_INTERRUPT                 = 0x4207\n\tPTRACE_KILL                      = 0x8\n\tPTRACE_LISTEN                    = 0x4208\n\tPTRACE_O_EXITKILL                = 0x100000\n\tPTRACE_O_MASK                    = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP         = 0x200000\n\tPTRACE_O_TRACECLONE              = 0x8\n\tPTRACE_O_TRACEEXEC               = 0x10\n\tPTRACE_O_TRACEEXIT               = 0x40\n\tPTRACE_O_TRACEFORK               = 0x2\n\tPTRACE_O_TRACESECCOMP            = 0x80\n\tPTRACE_O_TRACESYSGOOD            = 0x1\n\tPTRACE_O_TRACEVFORK              = 0x4\n\tPTRACE_O_TRACEVFORKDONE          = 0x20\n\tPTRACE_PEEKDATA                  = 0x2\n\tPTRACE_PEEKSIGINFO               = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED        = 0x1\n\tPTRACE_PEEKTEXT                  = 0x1\n\tPTRACE_PEEKUSR                   = 0x3\n\tPTRACE_POKEDATA                  = 0x5\n\tPTRACE_POKETEXT                  = 0x4\n\tPTRACE_POKEUSR                   = 0x6\n\tPTRACE_READDATA                  = 0x10\n\tPTRACE_READTEXT                  = 0x12\n\tPTRACE_SECCOMP_GET_FILTER        = 0x420c\n\tPTRACE_SEIZE                     = 0x4206\n\tPTRACE_SETFPAREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPREGS64               = 0x1a\n\tPTRACE_SETOPTIONS                = 0x4200\n\tPTRACE_SETREGS                   = 0xd\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETREGSET                 = 0x4205\n\tPTRACE_SETSIGINFO                = 0x4203\n\tPTRACE_SETSIGMASK                = 0x420b\n\tPTRACE_SINGLESTEP                = 0x9\n\tPTRACE_SPARC_DETACH              = 0xb\n\tPTRACE_SYSCALL                   = 0x18\n\tPTRACE_TRACEME                   = 0x0\n\tPTRACE_WRITEDATA                 = 0x11\n\tPTRACE_WRITETEXT                 = 0x13\n\tPT_FP                            = 0x48\n\tPT_G0                            = 0x10\n\tPT_G1                            = 0x14\n\tPT_G2                            = 0x18\n\tPT_G3                            = 0x1c\n\tPT_G4                            = 0x20\n\tPT_G5                            = 0x24\n\tPT_G6                            = 0x28\n\tPT_G7                            = 0x2c\n\tPT_I0                            = 0x30\n\tPT_I1                            = 0x34\n\tPT_I2                            = 0x38\n\tPT_I3                            = 0x3c\n\tPT_I4                            = 0x40\n\tPT_I5                            = 0x44\n\tPT_I6                            = 0x48\n\tPT_I7                            = 0x4c\n\tPT_NPC                           = 0x8\n\tPT_PC                            = 0x4\n\tPT_PSR                           = 0x0\n\tPT_REGS_MAGIC                    = 0x57ac6c00\n\tPT_TNPC                          = 0x90\n\tPT_TPC                           = 0x88\n\tPT_TSTATE                        = 0x80\n\tPT_V9_FP                         = 0x70\n\tPT_V9_G0                         = 0x0\n\tPT_V9_G1                         = 0x8\n\tPT_V9_G2                         = 0x10\n\tPT_V9_G3                         = 0x18\n\tPT_V9_G4                         = 0x20\n\tPT_V9_G5                         = 0x28\n\tPT_V9_G6                         = 0x30\n\tPT_V9_G7                         = 0x38\n\tPT_V9_I0                         = 0x40\n\tPT_V9_I1                         = 0x48\n\tPT_V9_I2                         = 0x50\n\tPT_V9_I3                         = 0x58\n\tPT_V9_I4                         = 0x60\n\tPT_V9_I5                         = 0x68\n\tPT_V9_I6                         = 0x70\n\tPT_V9_I7                         = 0x78\n\tPT_V9_MAGIC                      = 0x9c\n\tPT_V9_TNPC                       = 0x90\n\tPT_V9_TPC                        = 0x88\n\tPT_V9_TSTATE                     = 0x80\n\tPT_V9_Y                          = 0x98\n\tPT_WIM                           = 0x10\n\tPT_Y                             = 0xc\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_CORE                      = 0x4\n\tRLIMIT_CPU                       = 0x0\n\tRLIMIT_DATA                      = 0x2\n\tRLIMIT_FSIZE                     = 0x1\n\tRLIMIT_NOFILE                    = 0x6\n\tRLIMIT_STACK                     = 0x3\n\tRLIM_INFINITY                    = -0x1\n\tRTAX_ADVMSS                      = 0x8\n\tRTAX_CC_ALGO                     = 0x10\n\tRTAX_CWND                        = 0x7\n\tRTAX_FEATURES                    = 0xc\n\tRTAX_FEATURE_ALLFRAG             = 0x8\n\tRTAX_FEATURE_ECN                 = 0x1\n\tRTAX_FEATURE_MASK                = 0xf\n\tRTAX_FEATURE_SACK                = 0x2\n\tRTAX_FEATURE_TIMESTAMP           = 0x4\n\tRTAX_HOPLIMIT                    = 0xa\n\tRTAX_INITCWND                    = 0xb\n\tRTAX_INITRWND                    = 0xe\n\tRTAX_LOCK                        = 0x1\n\tRTAX_MAX                         = 0x10\n\tRTAX_MTU                         = 0x2\n\tRTAX_QUICKACK                    = 0xf\n\tRTAX_REORDERING                  = 0x9\n\tRTAX_RTO_MIN                     = 0xd\n\tRTAX_RTT                         = 0x4\n\tRTAX_RTTVAR                      = 0x5\n\tRTAX_SSTHRESH                    = 0x6\n\tRTAX_UNSPEC                      = 0x0\n\tRTAX_WINDOW                      = 0x3\n\tRTA_ALIGNTO                      = 0x4\n\tRTA_MAX                          = 0x18\n\tRTCF_DIRECTSRC                   = 0x4000000\n\tRTCF_DOREDIRECT                  = 0x1000000\n\tRTCF_LOG                         = 0x2000000\n\tRTCF_MASQ                        = 0x400000\n\tRTCF_NAT                         = 0x800000\n\tRTCF_VALVE                       = 0x200000\n\tRTF_ADDRCLASSMASK                = 0xf8000000\n\tRTF_ADDRCONF                     = 0x40000\n\tRTF_ALLONLINK                    = 0x20000\n\tRTF_BROADCAST                    = 0x10000000\n\tRTF_CACHE                        = 0x1000000\n\tRTF_DEFAULT                      = 0x10000\n\tRTF_DYNAMIC                      = 0x10\n\tRTF_FLOW                         = 0x2000000\n\tRTF_GATEWAY                      = 0x2\n\tRTF_HOST                         = 0x4\n\tRTF_INTERFACE                    = 0x40000000\n\tRTF_IRTT                         = 0x100\n\tRTF_LINKRT                       = 0x100000\n\tRTF_LOCAL                        = 0x80000000\n\tRTF_MODIFIED                     = 0x20\n\tRTF_MSS                          = 0x40\n\tRTF_MTU                          = 0x40\n\tRTF_MULTICAST                    = 0x20000000\n\tRTF_NAT                          = 0x8000000\n\tRTF_NOFORWARD                    = 0x1000\n\tRTF_NONEXTHOP                    = 0x200000\n\tRTF_NOPMTUDISC                   = 0x4000\n\tRTF_POLICY                       = 0x4000000\n\tRTF_REINSTATE                    = 0x8\n\tRTF_REJECT                       = 0x200\n\tRTF_STATIC                       = 0x400\n\tRTF_THROW                        = 0x2000\n\tRTF_UP                           = 0x1\n\tRTF_WINDOW                       = 0x80\n\tRTF_XRESOLVE                     = 0x800\n\tRTM_BASE                         = 0x10\n\tRTM_DELACTION                    = 0x31\n\tRTM_DELADDR                      = 0x15\n\tRTM_DELADDRLABEL                 = 0x49\n\tRTM_DELLINK                      = 0x11\n\tRTM_DELMDB                       = 0x55\n\tRTM_DELNEIGH                     = 0x1d\n\tRTM_DELNSID                      = 0x59\n\tRTM_DELQDISC                     = 0x25\n\tRTM_DELROUTE                     = 0x19\n\tRTM_DELRULE                      = 0x21\n\tRTM_DELTCLASS                    = 0x29\n\tRTM_DELTFILTER                   = 0x2d\n\tRTM_F_CLONED                     = 0x200\n\tRTM_F_EQUALIZE                   = 0x400\n\tRTM_F_LOOKUP_TABLE               = 0x1000\n\tRTM_F_NOTIFY                     = 0x100\n\tRTM_F_PREFIX                     = 0x800\n\tRTM_GETACTION                    = 0x32\n\tRTM_GETADDR                      = 0x16\n\tRTM_GETADDRLABEL                 = 0x4a\n\tRTM_GETANYCAST                   = 0x3e\n\tRTM_GETDCB                       = 0x4e\n\tRTM_GETLINK                      = 0x12\n\tRTM_GETMDB                       = 0x56\n\tRTM_GETMULTICAST                 = 0x3a\n\tRTM_GETNEIGH                     = 0x1e\n\tRTM_GETNEIGHTBL                  = 0x42\n\tRTM_GETNETCONF                   = 0x52\n\tRTM_GETNSID                      = 0x5a\n\tRTM_GETQDISC                     = 0x26\n\tRTM_GETROUTE                     = 0x1a\n\tRTM_GETRULE                      = 0x22\n\tRTM_GETSTATS                     = 0x5e\n\tRTM_GETTCLASS                    = 0x2a\n\tRTM_GETTFILTER                   = 0x2e\n\tRTM_MAX                          = 0x5f\n\tRTM_NEWACTION                    = 0x30\n\tRTM_NEWADDR                      = 0x14\n\tRTM_NEWADDRLABEL                 = 0x48\n\tRTM_NEWLINK                      = 0x10\n\tRTM_NEWMDB                       = 0x54\n\tRTM_NEWNDUSEROPT                 = 0x44\n\tRTM_NEWNEIGH                     = 0x1c\n\tRTM_NEWNEIGHTBL                  = 0x40\n\tRTM_NEWNETCONF                   = 0x50\n\tRTM_NEWNSID                      = 0x58\n\tRTM_NEWPREFIX                    = 0x34\n\tRTM_NEWQDISC                     = 0x24\n\tRTM_NEWROUTE                     = 0x18\n\tRTM_NEWRULE                      = 0x20\n\tRTM_NEWSTATS                     = 0x5c\n\tRTM_NEWTCLASS                    = 0x28\n\tRTM_NEWTFILTER                   = 0x2c\n\tRTM_NR_FAMILIES                  = 0x14\n\tRTM_NR_MSGTYPES                  = 0x50\n\tRTM_SETDCB                       = 0x4f\n\tRTM_SETLINK                      = 0x13\n\tRTM_SETNEIGHTBL                  = 0x43\n\tRTNH_ALIGNTO                     = 0x4\n\tRTNH_COMPARE_MASK                = 0x11\n\tRTNH_F_DEAD                      = 0x1\n\tRTNH_F_LINKDOWN                  = 0x10\n\tRTNH_F_OFFLOAD                   = 0x8\n\tRTNH_F_ONLINK                    = 0x4\n\tRTNH_F_PERVASIVE                 = 0x2\n\tRTN_MAX                          = 0xb\n\tRTPROT_BABEL                     = 0x2a\n\tRTPROT_BIRD                      = 0xc\n\tRTPROT_BOOT                      = 0x3\n\tRTPROT_DHCP                      = 0x10\n\tRTPROT_DNROUTED                  = 0xd\n\tRTPROT_GATED                     = 0x8\n\tRTPROT_KERNEL                    = 0x2\n\tRTPROT_MROUTED                   = 0x11\n\tRTPROT_MRT                       = 0xa\n\tRTPROT_NTK                       = 0xf\n\tRTPROT_RA                        = 0x9\n\tRTPROT_REDIRECT                  = 0x1\n\tRTPROT_STATIC                    = 0x4\n\tRTPROT_UNSPEC                    = 0x0\n\tRTPROT_XORP                      = 0xe\n\tRTPROT_ZEBRA                     = 0xb\n\tRT_CLASS_DEFAULT                 = 0xfd\n\tRT_CLASS_LOCAL                   = 0xff\n\tRT_CLASS_MAIN                    = 0xfe\n\tRT_CLASS_MAX                     = 0xff\n\tRT_CLASS_UNSPEC                  = 0x0\n\tRUSAGE_CHILDREN                  = -0x1\n\tRUSAGE_SELF                      = 0x0\n\tRUSAGE_THREAD                    = 0x1\n\tSCM_CREDENTIALS                  = 0x2\n\tSCM_RIGHTS                       = 0x1\n\tSCM_TIMESTAMP                    = 0x1d\n\tSCM_TIMESTAMPING                 = 0x23\n\tSCM_TIMESTAMPNS                  = 0x21\n\tSCM_WIFI_STATUS                  = 0x25\n\tSHUT_RD                          = 0x0\n\tSHUT_RDWR                        = 0x2\n\tSHUT_WR                          = 0x1\n\tSIOCADDDLCI                      = 0x8980\n\tSIOCADDMULTI                     = 0x8931\n\tSIOCADDRT                        = 0x890b\n\tSIOCATMARK                       = 0x8905\n\tSIOCBONDCHANGEACTIVE             = 0x8995\n\tSIOCBONDENSLAVE                  = 0x8990\n\tSIOCBONDINFOQUERY                = 0x8994\n\tSIOCBONDRELEASE                  = 0x8991\n\tSIOCBONDSETHWADDR                = 0x8992\n\tSIOCBONDSLAVEINFOQUERY           = 0x8993\n\tSIOCBRADDBR                      = 0x89a0\n\tSIOCBRADDIF                      = 0x89a2\n\tSIOCBRDELBR                      = 0x89a1\n\tSIOCBRDELIF                      = 0x89a3\n\tSIOCDARP                         = 0x8953\n\tSIOCDELDLCI                      = 0x8981\n\tSIOCDELMULTI                     = 0x8932\n\tSIOCDELRT                        = 0x890c\n\tSIOCDEVPRIVATE                   = 0x89f0\n\tSIOCDIFADDR                      = 0x8936\n\tSIOCDRARP                        = 0x8960\n\tSIOCETHTOOL                      = 0x8946\n\tSIOCGARP                         = 0x8954\n\tSIOCGHWTSTAMP                    = 0x89b1\n\tSIOCGIFADDR                      = 0x8915\n\tSIOCGIFBR                        = 0x8940\n\tSIOCGIFBRDADDR                   = 0x8919\n\tSIOCGIFCONF                      = 0x8912\n\tSIOCGIFCOUNT                     = 0x8938\n\tSIOCGIFDSTADDR                   = 0x8917\n\tSIOCGIFENCAP                     = 0x8925\n\tSIOCGIFFLAGS                     = 0x8913\n\tSIOCGIFHWADDR                    = 0x8927\n\tSIOCGIFINDEX                     = 0x8933\n\tSIOCGIFMAP                       = 0x8970\n\tSIOCGIFMEM                       = 0x891f\n\tSIOCGIFMETRIC                    = 0x891d\n\tSIOCGIFMTU                       = 0x8921\n\tSIOCGIFNAME                      = 0x8910\n\tSIOCGIFNETMASK                   = 0x891b\n\tSIOCGIFPFLAGS                    = 0x8935\n\tSIOCGIFSLAVE                     = 0x8929\n\tSIOCGIFTXQLEN                    = 0x8942\n\tSIOCGIFVLAN                      = 0x8982\n\tSIOCGMIIPHY                      = 0x8947\n\tSIOCGMIIREG                      = 0x8948\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGRARP                        = 0x8961\n\tSIOCGSTAMP                       = 0x8906\n\tSIOCGSTAMPNS                     = 0x8907\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCOUTQNSD                      = 0x894b\n\tSIOCPROTOPRIVATE                 = 0x89e0\n\tSIOCRTMSG                        = 0x890d\n\tSIOCSARP                         = 0x8955\n\tSIOCSHWTSTAMP                    = 0x89b0\n\tSIOCSIFADDR                      = 0x8916\n\tSIOCSIFBR                        = 0x8941\n\tSIOCSIFBRDADDR                   = 0x891a\n\tSIOCSIFDSTADDR                   = 0x8918\n\tSIOCSIFENCAP                     = 0x8926\n\tSIOCSIFFLAGS                     = 0x8914\n\tSIOCSIFHWADDR                    = 0x8924\n\tSIOCSIFHWBROADCAST               = 0x8937\n\tSIOCSIFLINK                      = 0x8911\n\tSIOCSIFMAP                       = 0x8971\n\tSIOCSIFMEM                       = 0x8920\n\tSIOCSIFMETRIC                    = 0x891e\n\tSIOCSIFMTU                       = 0x8922\n\tSIOCSIFNAME                      = 0x8923\n\tSIOCSIFNETMASK                   = 0x891c\n\tSIOCSIFPFLAGS                    = 0x8934\n\tSIOCSIFSLAVE                     = 0x8930\n\tSIOCSIFTXQLEN                    = 0x8943\n\tSIOCSIFVLAN                      = 0x8983\n\tSIOCSMIIREG                      = 0x8949\n\tSIOCSPGRP                        = 0x8902\n\tSIOCSRARP                        = 0x8962\n\tSIOCWANDEV                       = 0x894a\n\tSOCK_CLOEXEC                     = 0x400000\n\tSOCK_DCCP                        = 0x6\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x4000\n\tSOCK_PACKET                      = 0xa\n\tSOCK_RAW                         = 0x3\n\tSOCK_RDM                         = 0x4\n\tSOCK_SEQPACKET                   = 0x5\n\tSOCK_STREAM                      = 0x1\n\tSOL_AAL                          = 0x109\n\tSOL_ALG                          = 0x117\n\tSOL_ATM                          = 0x108\n\tSOL_CAIF                         = 0x116\n\tSOL_DCCP                         = 0x10d\n\tSOL_DECNET                       = 0x105\n\tSOL_ICMPV6                       = 0x3a\n\tSOL_IP                           = 0x0\n\tSOL_IPV6                         = 0x29\n\tSOL_IRDA                         = 0x10a\n\tSOL_IUCV                         = 0x115\n\tSOL_KCM                          = 0x119\n\tSOL_LLC                          = 0x10c\n\tSOL_NETBEUI                      = 0x10b\n\tSOL_NETLINK                      = 0x10e\n\tSOL_NFC                          = 0x118\n\tSOL_PACKET                       = 0x107\n\tSOL_PNPIPE                       = 0x113\n\tSOL_PPPOL2TP                     = 0x111\n\tSOL_RAW                          = 0xff\n\tSOL_RDS                          = 0x114\n\tSOL_RXRPC                        = 0x110\n\tSOL_SOCKET                       = 0xffff\n\tSOL_TCP                          = 0x6\n\tSOL_TIPC                         = 0x10f\n\tSOL_X25                          = 0x106\n\tSOMAXCONN                        = 0x80\n\tSO_ACCEPTCONN                    = 0x8000\n\tSO_ATTACH_BPF                    = 0x34\n\tSO_ATTACH_FILTER                 = 0x1a\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x35\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x36\n\tSO_BINDTODEVICE                  = 0xd\n\tSO_BPF_EXTENSIONS                = 0x32\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0x400\n\tSO_BUSY_POLL                     = 0x30\n\tSO_CNX_ADVICE                    = 0x37\n\tSO_DEBUG                         = 0x1\n\tSO_DETACH_BPF                    = 0x1b\n\tSO_DETACH_FILTER                 = 0x1b\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_GET_FILTER                    = 0x1a\n\tSO_INCOMING_CPU                  = 0x33\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x28\n\tSO_MARK                          = 0x22\n\tSO_MAX_PACING_RATE               = 0x31\n\tSO_NOFCS                         = 0x27\n\tSO_NO_CHECK                      = 0xb\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x2\n\tSO_PASSSEC                       = 0x1f\n\tSO_PEEK_OFF                      = 0x26\n\tSO_PEERCRED                      = 0x40\n\tSO_PEERNAME                      = 0x1c\n\tSO_PEERSEC                       = 0x1e\n\tSO_PRIORITY                      = 0xc\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x100b\n\tSO_RCVLOWAT                      = 0x800\n\tSO_RCVTIMEO                      = 0x2000\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x24\n\tSO_SECURITY_AUTHENTICATION       = 0x5001\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x5004\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002\n\tSO_SELECT_ERR_QUEUE              = 0x29\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x100a\n\tSO_SNDLOWAT                      = 0x1000\n\tSO_SNDTIMEO                      = 0x4000\n\tSO_TIMESTAMP                     = 0x1d\n\tSO_TIMESTAMPING                  = 0x23\n\tSO_TIMESTAMPNS                   = 0x21\n\tSO_TYPE                          = 0x1008\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE        = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3\n\tSO_VM_SOCKETS_TRUSTED            = 0x5\n\tSO_WIFI_STATUS                   = 0x25\n\tSPLICE_F_GIFT                    = 0x8\n\tSPLICE_F_MORE                    = 0x4\n\tSPLICE_F_MOVE                    = 0x1\n\tSPLICE_F_NONBLOCK                = 0x2\n\tS_BLKSIZE                        = 0x200\n\tS_IEXEC                          = 0x40\n\tS_IFBLK                          = 0x6000\n\tS_IFCHR                          = 0x2000\n\tS_IFDIR                          = 0x4000\n\tS_IFIFO                          = 0x1000\n\tS_IFLNK                          = 0xa000\n\tS_IFMT                           = 0xf000\n\tS_IFREG                          = 0x8000\n\tS_IFSOCK                         = 0xc000\n\tS_IREAD                          = 0x100\n\tS_IRGRP                          = 0x20\n\tS_IROTH                          = 0x4\n\tS_IRUSR                          = 0x100\n\tS_IRWXG                          = 0x38\n\tS_IRWXO                          = 0x7\n\tS_IRWXU                          = 0x1c0\n\tS_ISGID                          = 0x400\n\tS_ISUID                          = 0x800\n\tS_ISVTX                          = 0x200\n\tS_IWGRP                          = 0x10\n\tS_IWOTH                          = 0x2\n\tS_IWRITE                         = 0x80\n\tS_IWUSR                          = 0x80\n\tS_IXGRP                          = 0x8\n\tS_IXOTH                          = 0x1\n\tS_IXUSR                          = 0x40\n\tTAB0                             = 0x0\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x20005407\n\tTCGETA                           = 0x40125401\n\tTCGETS                           = 0x40245408\n\tTCGETS2                          = 0x402c540c\n\tTCIFLUSH                         = 0x0\n\tTCIOFF                           = 0x2\n\tTCIOFLUSH                        = 0x2\n\tTCION                            = 0x3\n\tTCOFLUSH                         = 0x1\n\tTCOOFF                           = 0x0\n\tTCOON                            = 0x1\n\tTCP_CC_INFO                      = 0x1a\n\tTCP_CONGESTION                   = 0xd\n\tTCP_COOKIE_IN_ALWAYS             = 0x1\n\tTCP_COOKIE_MAX                   = 0x10\n\tTCP_COOKIE_MIN                   = 0x8\n\tTCP_COOKIE_OUT_NEVER             = 0x2\n\tTCP_COOKIE_PAIR_SIZE             = 0x20\n\tTCP_COOKIE_TRANSACTIONS          = 0xf\n\tTCP_CORK                         = 0x3\n\tTCP_DEFER_ACCEPT                 = 0x9\n\tTCP_FASTOPEN                     = 0x17\n\tTCP_INFO                         = 0xb\n\tTCP_KEEPCNT                      = 0x6\n\tTCP_KEEPIDLE                     = 0x4\n\tTCP_KEEPINTVL                    = 0x5\n\tTCP_LINGER2                      = 0x8\n\tTCP_MAXSEG                       = 0x2\n\tTCP_MAXWIN                       = 0xffff\n\tTCP_MAX_WINSHIFT                 = 0xe\n\tTCP_MD5SIG                       = 0xe\n\tTCP_MD5SIG_MAXKEYLEN             = 0x50\n\tTCP_MSS                          = 0x200\n\tTCP_MSS_DEFAULT                  = 0x218\n\tTCP_MSS_DESIRED                  = 0x4c4\n\tTCP_NODELAY                      = 0x1\n\tTCP_NOTSENT_LOWAT                = 0x19\n\tTCP_QUEUE_SEQ                    = 0x15\n\tTCP_QUICKACK                     = 0xc\n\tTCP_REPAIR                       = 0x13\n\tTCP_REPAIR_OPTIONS               = 0x16\n\tTCP_REPAIR_QUEUE                 = 0x14\n\tTCP_SAVED_SYN                    = 0x1c\n\tTCP_SAVE_SYN                     = 0x1b\n\tTCP_SYNCNT                       = 0x7\n\tTCP_S_DATA_IN                    = 0x4\n\tTCP_S_DATA_OUT                   = 0x8\n\tTCP_THIN_DUPACK                  = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS         = 0x10\n\tTCP_TIMESTAMP                    = 0x18\n\tTCP_USER_TIMEOUT                 = 0x12\n\tTCP_WINDOW_CLAMP                 = 0xa\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x20005405\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80125402\n\tTCSETAF                          = 0x80125404\n\tTCSETAW                          = 0x80125403\n\tTCSETS                           = 0x80245409\n\tTCSETS2                          = 0x802c540d\n\tTCSETSF                          = 0x8024540b\n\tTCSETSF2                         = 0x802c540f\n\tTCSETSW                          = 0x8024540a\n\tTCSETSW2                         = 0x802c540e\n\tTCXONC                           = 0x20005406\n\tTIOCCBRK                         = 0x2000747a\n\tTIOCCONS                         = 0x20007424\n\tTIOCEXCL                         = 0x2000740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x40047400\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x40047483\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40047486\n\tTIOCGRS485                       = 0x40205441\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x40047485\n\tTIOCGSOFTCAR                     = 0x40047464\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x8004746b\n\tTIOCMBIS                         = 0x8004746c\n\tTIOCMGET                         = 0x4004746a\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x8004746d\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_DTR                        = 0x2\n\tTIOCM_LE                         = 0x1\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_RTS                        = 0x4\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x20007471\n\tTIOCNXCL                         = 0x2000740e\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x80047470\n\tTIOCPKT_DATA                     = 0x0\n\tTIOCPKT_DOSTOP                   = 0x20\n\tTIOCPKT_FLUSHREAD                = 0x1\n\tTIOCPKT_FLUSHWRITE               = 0x2\n\tTIOCPKT_IOCTL                    = 0x40\n\tTIOCPKT_NOSTOP                   = 0x10\n\tTIOCPKT_START                    = 0x8\n\tTIOCPKT_STOP                     = 0x4\n\tTIOCSBRK                         = 0x2000747b\n\tTIOCSCTTY                        = 0x20007484\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x80047401\n\tTIOCSIG                          = 0x80047488\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x80047482\n\tTIOCSPTLCK                       = 0x80047487\n\tTIOCSRS485                       = 0xc0205442\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x80047465\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x80017472\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x20005437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tVDISCARD                         = 0xd\n\tVDSUSP                           = 0xb\n\tVEOF                             = 0x4\n\tVEOL                             = 0x5\n\tVEOL2                            = 0x6\n\tVERASE                           = 0x2\n\tVINTR                            = 0x0\n\tVKILL                            = 0x3\n\tVLNEXT                           = 0xf\n\tVMADDR_CID_ANY                   = 0xffffffff\n\tVMADDR_CID_HOST                  = 0x2\n\tVMADDR_CID_HYPERVISOR            = 0x0\n\tVMADDR_CID_RESERVED              = 0x1\n\tVMADDR_PORT_ANY                  = 0xffffffff\n\tVMIN                             = 0x4\n\tVQUIT                            = 0x1\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT0                              = 0x0\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWALL                             = 0x40000000\n\tWCLONE                           = 0x80000000\n\tWCONTINUED                       = 0x8\n\tWEXITED                          = 0x4\n\tWNOHANG                          = 0x1\n\tWNOTHREAD                        = 0x20000000\n\tWNOWAIT                          = 0x1000000\n\tWORDSIZE                         = 0x40\n\tWRAP                             = 0x20000\n\tWSTOPPED                         = 0x2\n\tWUNTRACED                        = 0x2\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t__TIOCFLUSH                      = 0x80047410\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEADV            = syscall.Errno(0x53)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x25)\n\tEBADE           = syscall.Errno(0x66)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x5d)\n\tEBADMSG         = syscall.Errno(0x4c)\n\tEBADR           = syscall.Errno(0x67)\n\tEBADRQC         = syscall.Errno(0x6a)\n\tEBADSLT         = syscall.Errno(0x6b)\n\tEBFONT          = syscall.Errno(0x6d)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x7f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x5e)\n\tECOMM           = syscall.Errno(0x55)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0x4e)\n\tEDEADLOCK       = syscall.Errno(0x6c)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOTDOT         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEHWPOISON       = syscall.Errno(0x87)\n\tEIDRM           = syscall.Errno(0x4d)\n\tEILSEQ          = syscall.Errno(0x7a)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x81)\n\tEKEYREJECTED    = syscall.Errno(0x83)\n\tEKEYREVOKED     = syscall.Errno(0x82)\n\tEL2HLT          = syscall.Errno(0x65)\n\tEL2NSYNC        = syscall.Errno(0x5f)\n\tEL3HLT          = syscall.Errno(0x60)\n\tEL3RST          = syscall.Errno(0x61)\n\tELIBACC         = syscall.Errno(0x72)\n\tELIBBAD         = syscall.Errno(0x70)\n\tELIBEXEC        = syscall.Errno(0x6e)\n\tELIBMAX         = syscall.Errno(0x7b)\n\tELIBSCN         = syscall.Errno(0x7c)\n\tELNRNG          = syscall.Errno(0x62)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x7e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x57)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x69)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENOCSI          = syscall.Errno(0x64)\n\tENODATA         = syscall.Errno(0x6f)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOKEY          = syscall.Errno(0x80)\n\tENOLCK          = syscall.Errno(0x4f)\n\tENOLINK         = syscall.Errno(0x52)\n\tENOMEDIUM       = syscall.Errno(0x7d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x4b)\n\tENONET          = syscall.Errno(0x50)\n\tENOPKG          = syscall.Errno(0x71)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x4a)\n\tENOSTR          = syscall.Errno(0x48)\n\tENOSYS          = syscall.Errno(0x5a)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x85)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x73)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x5c)\n\tEOWNERDEAD      = syscall.Errno(0x84)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROTO          = syscall.Errno(0x56)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x59)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x74)\n\tERFKILL         = syscall.Errno(0x86)\n\tEROFS           = syscall.Errno(0x1e)\n\tERREMOTE        = syscall.Errno(0x51)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x54)\n\tESTALE          = syscall.Errno(0x46)\n\tESTRPIPE        = syscall.Errno(0x5b)\n\tETIME           = syscall.Errno(0x49)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x63)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x68)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCLD    = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLOST   = syscall.Signal(0x1d)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPOLL   = syscall.Signal(0x17)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1d)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{57, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{58, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale file handle\"},\n\t{71, \"EREMOTE\", \"object is remote\"},\n\t{72, \"ENOSTR\", \"device not a stream\"},\n\t{73, \"ETIME\", \"timer expired\"},\n\t{74, \"ENOSR\", \"out of streams resources\"},\n\t{75, \"ENOMSG\", \"no message of desired type\"},\n\t{76, \"EBADMSG\", \"bad message\"},\n\t{77, \"EIDRM\", \"identifier removed\"},\n\t{78, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{79, \"ENOLCK\", \"no locks available\"},\n\t{80, \"ENONET\", \"machine is not on the network\"},\n\t{81, \"ERREMOTE\", \"unknown error 81\"},\n\t{82, \"ENOLINK\", \"link has been severed\"},\n\t{83, \"EADV\", \"advertise error\"},\n\t{84, \"ESRMNT\", \"srmount error\"},\n\t{85, \"ECOMM\", \"communication error on send\"},\n\t{86, \"EPROTO\", \"protocol error\"},\n\t{87, \"EMULTIHOP\", \"multihop attempted\"},\n\t{88, \"EDOTDOT\", \"RFS specific error\"},\n\t{89, \"EREMCHG\", \"remote address changed\"},\n\t{90, \"ENOSYS\", \"function not implemented\"},\n\t{91, \"ESTRPIPE\", \"streams pipe error\"},\n\t{92, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{93, \"EBADFD\", \"file descriptor in bad state\"},\n\t{94, \"ECHRNG\", \"channel number out of range\"},\n\t{95, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{96, \"EL3HLT\", \"level 3 halted\"},\n\t{97, \"EL3RST\", \"level 3 reset\"},\n\t{98, \"ELNRNG\", \"link number out of range\"},\n\t{99, \"EUNATCH\", \"protocol driver not attached\"},\n\t{100, \"ENOCSI\", \"no CSI structure available\"},\n\t{101, \"EL2HLT\", \"level 2 halted\"},\n\t{102, \"EBADE\", \"invalid exchange\"},\n\t{103, \"EBADR\", \"invalid request descriptor\"},\n\t{104, \"EXFULL\", \"exchange full\"},\n\t{105, \"ENOANO\", \"no anode\"},\n\t{106, \"EBADRQC\", \"invalid request code\"},\n\t{107, \"EBADSLT\", \"invalid slot\"},\n\t{108, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{109, \"EBFONT\", \"bad font file format\"},\n\t{110, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{111, \"ENODATA\", \"no data available\"},\n\t{112, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{113, \"ENOPKG\", \"package not installed\"},\n\t{114, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{115, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{116, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{123, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{124, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{125, \"ENOMEDIUM\", \"no medium found\"},\n\t{126, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{127, \"ECANCELED\", \"operation canceled\"},\n\t{128, \"ENOKEY\", \"required key not available\"},\n\t{129, \"EKEYEXPIRED\", \"key has expired\"},\n\t{130, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{131, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{132, \"EOWNERDEAD\", \"owner died\"},\n\t{133, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{134, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{135, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGLOST\", \"power failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,netbsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tEN_SW_CTL_INF                     = 0x1000\n\tEN_SW_CTL_PREC                    = 0x300\n\tEN_SW_CTL_ROUND                   = 0xc00\n\tEN_SW_DATACHAIN                   = 0x80\n\tEN_SW_DENORM                      = 0x2\n\tEN_SW_INVOP                       = 0x1\n\tEN_SW_OVERFLOW                    = 0x8\n\tEN_SW_PRECLOSS                    = 0x20\n\tEN_SW_UNDERFLOW                   = 0x10\n\tEN_SW_ZERODIV                     = 0x4\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,netbsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go",
    "content": "// mkerrors.sh -marm\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,netbsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -marm _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x48087446\n\tTIOCPTSNAME                       = 0x48087448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,openbsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DIVERT_INIT               = 0x2\n\tIPPROTO_DIVERT_RESP               = 0x1\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DIVERTFL                       = 0x1022\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_COPY                          = 0x4\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0x1ff7\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_TRYFIXED                      = 0x400\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMSG_BCAST                         = 0x100\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPT_MASK                           = 0x3ff000\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xb\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x10f808\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_SOURCE                        = 0x20000\n\tRTF_STATIC                        = 0x800\n\tRTF_TUNNEL                        = 0x100000\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCALIFADDR                      = 0x8218691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8054693c\n\tSIOCBRDGADDS                      = 0x80546941\n\tSIOCBRDGARL                       = 0x806e694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8054693d\n\tSIOCBRDGDELS                      = 0x80546942\n\tSIOCBRDGFLUSH                     = 0x80546948\n\tSIOCBRDGFRL                       = 0x806e694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc054693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGSIFS                     = 0xc054693c\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0546942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80546955\n\tSIOCBRDGSIFFLGS                   = 0x8054693f\n\tSIOCBRDGSIFPRIO                   = 0x80546954\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8218691e\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFTIMESLOT                   = 0xc0206986\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFADDR                      = 0xc218691d\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFMEDIA                      = 0xc0206935\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFTIMESLOT                   = 0x80206985\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_NSTATES                       = 0xb\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5b)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ELAST\", \"not supported\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,openbsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x8\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0x7ff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0186941\n\tSIOCBRDGGFD                       = 0xc0186952\n\tSIOCBRDGGHT                       = 0xc0186951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0186953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0186950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0186946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80186940\n\tSIOCBRDGSFD                       = 0x80186952\n\tSIOCBRDGSHT                       = 0x80186951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80186953\n\tSIOCBRDGSPRI                      = 0x80186950\n\tSIOCBRDGSPROTO                    = 0x8018695a\n\tSIOCBRDGSTO                       = 0x80186945\n\tSIOCBRDGSTXHC                     = 0x80186959\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSIOCSWGDPID                       = 0xc018695b\n\tSIOCSWGMAXFLOW                    = 0xc0186960\n\tSIOCSWGMAXGROUP                   = 0xc018695d\n\tSIOCSWSDPID                       = 0x8018695c\n\tSIOCSWSPORTNO                     = 0xc060695f\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MAXID                          = 0xc\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- _const.go\n\n// +build arm,openbsd\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DIVERT_INIT               = 0x2\n\tIPPROTO_DIVERT_RESP               = 0x1\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DIVERTFL                       = 0x1022\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0x3ff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xb\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x70f808\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCALIFADDR                      = 0x8218691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8054693c\n\tSIOCBRDGADDS                      = 0x80546941\n\tSIOCBRDGARL                       = 0x806e694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8054693d\n\tSIOCBRDGDELS                      = 0x80546942\n\tSIOCBRDGFLUSH                     = 0x80546948\n\tSIOCBRDGFRL                       = 0x806e694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc054693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGSIFS                     = 0xc054693c\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0546942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80546955\n\tSIOCBRDGSIFFLGS                   = 0x8054693f\n\tSIOCBRDGSIFPRIO                   = 0x80546954\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8218691e\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFTIMESLOT                   = 0xc0206986\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFADDR                      = 0xc218691d\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFMEDIA                      = 0xc0206935\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFTIMESLOT                   = 0x80206985\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_NSTATES                       = 0xb\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5b)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ELAST\", \"not supported\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,solaris\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_802                        = 0x12\n\tAF_APPLETALK                  = 0x10\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_FILE                       = 0x1\n\tAF_GOSIP                      = 0x16\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x1a\n\tAF_INET_OFFLOAD               = 0x1e\n\tAF_IPX                        = 0x17\n\tAF_KEY                        = 0x1b\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x19\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x20\n\tAF_NBS                        = 0x7\n\tAF_NCA                        = 0x1c\n\tAF_NIT                        = 0x11\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x13\n\tAF_OSINET                     = 0x15\n\tAF_PACKET                     = 0x20\n\tAF_POLICY                     = 0x1d\n\tAF_PUP                        = 0x4\n\tAF_ROUTE                      = 0x18\n\tAF_SNA                        = 0xb\n\tAF_TRILL                      = 0x1f\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tAF_X25                        = 0x14\n\tARPHRD_ARCNET                 = 0x7\n\tARPHRD_ATM                    = 0x10\n\tARPHRD_AX25                   = 0x3\n\tARPHRD_CHAOS                  = 0x5\n\tARPHRD_EETHER                 = 0x2\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FC                     = 0x12\n\tARPHRD_FRAME                  = 0xf\n\tARPHRD_HDLC                   = 0x11\n\tARPHRD_IB                     = 0x20\n\tARPHRD_IEEE802                = 0x6\n\tARPHRD_IPATM                  = 0x13\n\tARPHRD_METRICOM               = 0x17\n\tARPHRD_TUNNEL                 = 0x1f\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB115200                       = 0x12\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB153600                       = 0x13\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB230400                       = 0x14\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB307200                       = 0x15\n\tB38400                        = 0xf\n\tB460800                       = 0x16\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB57600                        = 0x10\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB76800                        = 0x11\n\tB921600                       = 0x17\n\tB9600                         = 0xd\n\tBIOCFLUSH                     = 0x20004268\n\tBIOCGBLEN                     = 0x40044266\n\tBIOCGDLT                      = 0x4004426a\n\tBIOCGDLTLIST                  = -0x3fefbd89\n\tBIOCGDLTLIST32                = -0x3ff7bd89\n\tBIOCGETIF                     = 0x4020426b\n\tBIOCGETLIF                    = 0x4078426b\n\tBIOCGHDRCMPLT                 = 0x40044274\n\tBIOCGRTIMEOUT                 = 0x4010427b\n\tBIOCGRTIMEOUT32               = 0x4008427b\n\tBIOCGSEESENT                  = 0x40044278\n\tBIOCGSTATS                    = 0x4080426f\n\tBIOCGSTATSOLD                 = 0x4008426f\n\tBIOCIMMEDIATE                 = -0x7ffbbd90\n\tBIOCPROMISC                   = 0x20004269\n\tBIOCSBLEN                     = -0x3ffbbd9a\n\tBIOCSDLT                      = -0x7ffbbd8a\n\tBIOCSETF                      = -0x7fefbd99\n\tBIOCSETF32                    = -0x7ff7bd99\n\tBIOCSETIF                     = -0x7fdfbd94\n\tBIOCSETLIF                    = -0x7f87bd94\n\tBIOCSHDRCMPLT                 = -0x7ffbbd8b\n\tBIOCSRTIMEOUT                 = -0x7fefbd86\n\tBIOCSRTIMEOUT32               = -0x7ff7bd86\n\tBIOCSSEESENT                  = -0x7ffbbd87\n\tBIOCSTCPF                     = -0x7fefbd8e\n\tBIOCSUDPF                     = -0x7fefbd8d\n\tBIOCVERSION                   = 0x40044271\n\tBPF_A                         = 0x10\n\tBPF_ABS                       = 0x20\n\tBPF_ADD                       = 0x0\n\tBPF_ALIGNMENT                 = 0x4\n\tBPF_ALU                       = 0x4\n\tBPF_AND                       = 0x50\n\tBPF_B                         = 0x10\n\tBPF_DFLTBUFSIZE               = 0x100000\n\tBPF_DIV                       = 0x30\n\tBPF_H                         = 0x8\n\tBPF_IMM                       = 0x0\n\tBPF_IND                       = 0x40\n\tBPF_JA                        = 0x0\n\tBPF_JEQ                       = 0x10\n\tBPF_JGE                       = 0x30\n\tBPF_JGT                       = 0x20\n\tBPF_JMP                       = 0x5\n\tBPF_JSET                      = 0x40\n\tBPF_K                         = 0x0\n\tBPF_LD                        = 0x0\n\tBPF_LDX                       = 0x1\n\tBPF_LEN                       = 0x80\n\tBPF_LSH                       = 0x60\n\tBPF_MAJOR_VERSION             = 0x1\n\tBPF_MAXBUFSIZE                = 0x1000000\n\tBPF_MAXINSNS                  = 0x200\n\tBPF_MEM                       = 0x60\n\tBPF_MEMWORDS                  = 0x10\n\tBPF_MINBUFSIZE                = 0x20\n\tBPF_MINOR_VERSION             = 0x1\n\tBPF_MISC                      = 0x7\n\tBPF_MSH                       = 0xa0\n\tBPF_MUL                       = 0x20\n\tBPF_NEG                       = 0x80\n\tBPF_OR                        = 0x40\n\tBPF_RELEASE                   = 0x30bb6\n\tBPF_RET                       = 0x6\n\tBPF_RSH                       = 0x70\n\tBPF_ST                        = 0x2\n\tBPF_STX                       = 0x3\n\tBPF_SUB                       = 0x10\n\tBPF_TAX                       = 0x0\n\tBPF_TXA                       = 0x80\n\tBPF_W                         = 0x0\n\tBPF_X                         = 0x8\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x2000\n\tBSDLY                         = 0x2000\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_HIGHRES                 = 0x4\n\tCLOCK_LEVEL                   = 0xa\n\tCLOCK_MONOTONIC               = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID      = 0x5\n\tCLOCK_PROF                    = 0x2\n\tCLOCK_REALTIME                = 0x3\n\tCLOCK_THREAD_CPUTIME_ID       = 0x2\n\tCLOCK_VIRTUAL                 = 0x1\n\tCR0                           = 0x0\n\tCR1                           = 0x200\n\tCR2                           = 0x400\n\tCR3                           = 0x600\n\tCRDLY                         = 0x600\n\tCREAD                         = 0x80\n\tCRTSCTS                       = 0x80000000\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIZE                         = 0x30\n\tCSTART                        = 0x11\n\tCSTATUS                       = 0x14\n\tCSTOP                         = 0x13\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tCSWTCH                        = 0x1a\n\tDLT_AIRONET_HEADER            = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394    = 0x8a\n\tDLT_ARCNET                    = 0x7\n\tDLT_ARCNET_LINUX              = 0x81\n\tDLT_ATM_CLIP                  = 0x13\n\tDLT_ATM_RFC1483               = 0xb\n\tDLT_AURORA                    = 0x7e\n\tDLT_AX25                      = 0x3\n\tDLT_BACNET_MS_TP              = 0xa5\n\tDLT_CHAOS                     = 0x5\n\tDLT_CISCO_IOS                 = 0x76\n\tDLT_C_HDLC                    = 0x68\n\tDLT_DOCSIS                    = 0x8f\n\tDLT_ECONET                    = 0x73\n\tDLT_EN10MB                    = 0x1\n\tDLT_EN3MB                     = 0x2\n\tDLT_ENC                       = 0x6d\n\tDLT_ERF_ETH                   = 0xaf\n\tDLT_ERF_POS                   = 0xb0\n\tDLT_FDDI                      = 0xa\n\tDLT_FRELAY                    = 0x6b\n\tDLT_GCOM_SERIAL               = 0xad\n\tDLT_GCOM_T1E1                 = 0xac\n\tDLT_GPF_F                     = 0xab\n\tDLT_GPF_T                     = 0xaa\n\tDLT_GPRS_LLC                  = 0xa9\n\tDLT_HDLC                      = 0x10\n\tDLT_HHDLC                     = 0x79\n\tDLT_HIPPI                     = 0xf\n\tDLT_IBM_SN                    = 0x92\n\tDLT_IBM_SP                    = 0x91\n\tDLT_IEEE802                   = 0x6\n\tDLT_IEEE802_11                = 0x69\n\tDLT_IEEE802_11_RADIO          = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS      = 0xa3\n\tDLT_IPNET                     = 0xe2\n\tDLT_IPOIB                     = 0xa2\n\tDLT_IP_OVER_FC                = 0x7a\n\tDLT_JUNIPER_ATM1              = 0x89\n\tDLT_JUNIPER_ATM2              = 0x87\n\tDLT_JUNIPER_CHDLC             = 0xb5\n\tDLT_JUNIPER_ES                = 0x84\n\tDLT_JUNIPER_ETHER             = 0xb2\n\tDLT_JUNIPER_FRELAY            = 0xb4\n\tDLT_JUNIPER_GGSN              = 0x85\n\tDLT_JUNIPER_MFR               = 0x86\n\tDLT_JUNIPER_MLFR              = 0x83\n\tDLT_JUNIPER_MLPPP             = 0x82\n\tDLT_JUNIPER_MONITOR           = 0xa4\n\tDLT_JUNIPER_PIC_PEER          = 0xae\n\tDLT_JUNIPER_PPP               = 0xb3\n\tDLT_JUNIPER_PPPOE             = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM         = 0xa8\n\tDLT_JUNIPER_SERVICES          = 0x88\n\tDLT_LINUX_IRDA                = 0x90\n\tDLT_LINUX_LAPD                = 0xb1\n\tDLT_LINUX_SLL                 = 0x71\n\tDLT_LOOP                      = 0x6c\n\tDLT_LTALK                     = 0x72\n\tDLT_MTP2                      = 0x8c\n\tDLT_MTP2_WITH_PHDR            = 0x8b\n\tDLT_MTP3                      = 0x8d\n\tDLT_NULL                      = 0x0\n\tDLT_PCI_EXP                   = 0x7d\n\tDLT_PFLOG                     = 0x75\n\tDLT_PFSYNC                    = 0x12\n\tDLT_PPP                       = 0x9\n\tDLT_PPP_BSDOS                 = 0xe\n\tDLT_PPP_PPPD                  = 0xa6\n\tDLT_PRISM_HEADER              = 0x77\n\tDLT_PRONET                    = 0x4\n\tDLT_RAW                       = 0xc\n\tDLT_RAWAF_MASK                = 0x2240000\n\tDLT_RIO                       = 0x7c\n\tDLT_SCCP                      = 0x8e\n\tDLT_SLIP                      = 0x8\n\tDLT_SLIP_BSDOS                = 0xd\n\tDLT_SUNATM                    = 0x7b\n\tDLT_SYMANTEC_FIREWALL         = 0x63\n\tDLT_TZSP                      = 0x80\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x200\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x800\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x400\n\tEMPTY_SET                     = 0x0\n\tEMT_CPCOVF                    = 0x1\n\tEQUALITY_CHECK                = 0x0\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tFD_CLOEXEC                    = 0x1\n\tFD_NFDBITS                    = 0x40\n\tFD_SETSIZE                    = 0x10000\n\tFF0                           = 0x0\n\tFF1                           = 0x8000\n\tFFDLY                         = 0x8000\n\tFLUSHALL                      = 0x1\n\tFLUSHDATA                     = 0x0\n\tFLUSHO                        = 0x2000\n\tF_ALLOCSP                     = 0xa\n\tF_ALLOCSP64                   = 0xa\n\tF_BADFD                       = 0x2e\n\tF_BLKSIZE                     = 0x13\n\tF_BLOCKS                      = 0x12\n\tF_CHKFL                       = 0x8\n\tF_COMPAT                      = 0x8\n\tF_DUP2FD                      = 0x9\n\tF_DUP2FD_CLOEXEC              = 0x24\n\tF_DUPFD                       = 0x0\n\tF_DUPFD_CLOEXEC               = 0x25\n\tF_FLOCK                       = 0x35\n\tF_FLOCK64                     = 0x35\n\tF_FLOCKW                      = 0x36\n\tF_FLOCKW64                    = 0x36\n\tF_FREESP                      = 0xb\n\tF_FREESP64                    = 0xb\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xe\n\tF_GETLK64                     = 0xe\n\tF_GETOWN                      = 0x17\n\tF_GETXFL                      = 0x2d\n\tF_HASREMOTELOCKS              = 0x1a\n\tF_ISSTREAM                    = 0xd\n\tF_MANDDNY                     = 0x10\n\tF_MDACC                       = 0x20\n\tF_NODNY                       = 0x0\n\tF_NPRIV                       = 0x10\n\tF_OFD_GETLK                   = 0x2f\n\tF_OFD_GETLK64                 = 0x2f\n\tF_OFD_SETLK                   = 0x30\n\tF_OFD_SETLK64                 = 0x30\n\tF_OFD_SETLKW                  = 0x31\n\tF_OFD_SETLKW64                = 0x31\n\tF_PRIV                        = 0xf\n\tF_QUOTACTL                    = 0x11\n\tF_RDACC                       = 0x1\n\tF_RDDNY                       = 0x1\n\tF_RDLCK                       = 0x1\n\tF_REVOKE                      = 0x19\n\tF_RMACC                       = 0x4\n\tF_RMDNY                       = 0x4\n\tF_RWACC                       = 0x3\n\tF_RWDNY                       = 0x3\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0x6\n\tF_SETLK64_NBMAND              = 0x2a\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0x7\n\tF_SETLK_NBMAND                = 0x2a\n\tF_SETOWN                      = 0x18\n\tF_SHARE                       = 0x28\n\tF_SHARE_NBMAND                = 0x2b\n\tF_UNLCK                       = 0x3\n\tF_UNLKSYS                     = 0x4\n\tF_UNSHARE                     = 0x29\n\tF_WRACC                       = 0x2\n\tF_WRDNY                       = 0x2\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x8000\n\tIFF_ADDRCONF                  = 0x80000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_ANYCAST                   = 0x400000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x7f203003b5a\n\tIFF_COS_ENABLED               = 0x200000000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEPRECATED                = 0x40000\n\tIFF_DHCPRUNNING               = 0x4000\n\tIFF_DUPLICATE                 = 0x4000000000\n\tIFF_FAILED                    = 0x10000000\n\tIFF_FIXEDMTU                  = 0x1000000000\n\tIFF_INACTIVE                  = 0x40000000\n\tIFF_INTELLIGENT               = 0x400\n\tIFF_IPMP                      = 0x8000000000\n\tIFF_IPMP_CANTCHANGE           = 0x10000000\n\tIFF_IPMP_INVALID              = 0x1ec200080\n\tIFF_IPV4                      = 0x1000000\n\tIFF_IPV6                      = 0x2000000\n\tIFF_L3PROTECT                 = 0x40000000000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x800\n\tIFF_MULTI_BCAST               = 0x1000\n\tIFF_NOACCEPT                  = 0x4000000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOFAILOVER                = 0x8000000\n\tIFF_NOLINKLOCAL               = 0x20000000000\n\tIFF_NOLOCAL                   = 0x20000\n\tIFF_NONUD                     = 0x200000\n\tIFF_NORTEXCH                  = 0x800000\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_NOXMIT                    = 0x10000\n\tIFF_OFFLINE                   = 0x80000000\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PREFERRED                 = 0x400000000\n\tIFF_PRIVATE                   = 0x8000\n\tIFF_PROMISC                   = 0x100\n\tIFF_ROUTER                    = 0x100000\n\tIFF_RUNNING                   = 0x40\n\tIFF_STANDBY                   = 0x20000000\n\tIFF_TEMPORARY                 = 0x800000000\n\tIFF_UNNUMBERED                = 0x2000\n\tIFF_UP                        = 0x1\n\tIFF_VIRTUAL                   = 0x2000000000\n\tIFF_VRRP                      = 0x10000000000\n\tIFF_XRESOLV                   = 0x100000000\n\tIFNAMSIZ                      = 0x10\n\tIFT_1822                      = 0x2\n\tIFT_6TO4                      = 0xca\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_IPV4                      = 0xc8\n\tIFT_IPV6                      = 0xc9\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x2000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_AUTOCONF_MASK              = 0xffff0000\n\tIN_AUTOCONF_NET               = 0xa9fe0000\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_CLASSE_NET                 = 0xffffffff\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_PRIVATE12_MASK             = 0xfff00000\n\tIN_PRIVATE12_NET              = 0xac100000\n\tIN_PRIVATE16_MASK             = 0xffff0000\n\tIN_PRIVATE16_NET              = 0xc0a80000\n\tIN_PRIVATE8_MASK              = 0xff000000\n\tIN_PRIVATE8_NET               = 0xa000000\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_ENCAP                 = 0x4\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_HELLO                 = 0x3f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_ND                    = 0x4d\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_OSPF                  = 0x59\n\tIPPROTO_PIM                   = 0x67\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADD_MEMBERSHIP           = 0x9\n\tIPV6_BOUND_IF                 = 0x41\n\tIPV6_CHECKSUM                 = 0x18\n\tIPV6_DONTFRAG                 = 0x21\n\tIPV6_DROP_MEMBERSHIP          = 0xa\n\tIPV6_DSTOPTS                  = 0xf\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00\n\tIPV6_FLOWINFO_TCLASS          = 0xf00f\n\tIPV6_HOPLIMIT                 = 0xc\n\tIPV6_HOPOPTS                  = 0xe\n\tIPV6_JOIN_GROUP               = 0x9\n\tIPV6_LEAVE_GROUP              = 0xa\n\tIPV6_MULTICAST_HOPS           = 0x7\n\tIPV6_MULTICAST_IF             = 0x6\n\tIPV6_MULTICAST_LOOP           = 0x8\n\tIPV6_NEXTHOP                  = 0xd\n\tIPV6_PAD1_OPT                 = 0x0\n\tIPV6_PATHMTU                  = 0x25\n\tIPV6_PKTINFO                  = 0xb\n\tIPV6_PREFER_SRC_CGA           = 0x20\n\tIPV6_PREFER_SRC_CGADEFAULT    = 0x10\n\tIPV6_PREFER_SRC_CGAMASK       = 0x30\n\tIPV6_PREFER_SRC_COA           = 0x2\n\tIPV6_PREFER_SRC_DEFAULT       = 0x15\n\tIPV6_PREFER_SRC_HOME          = 0x1\n\tIPV6_PREFER_SRC_MASK          = 0x3f\n\tIPV6_PREFER_SRC_MIPDEFAULT    = 0x1\n\tIPV6_PREFER_SRC_MIPMASK       = 0x3\n\tIPV6_PREFER_SRC_NONCGA        = 0x10\n\tIPV6_PREFER_SRC_PUBLIC        = 0x4\n\tIPV6_PREFER_SRC_TMP           = 0x8\n\tIPV6_PREFER_SRC_TMPDEFAULT    = 0x4\n\tIPV6_PREFER_SRC_TMPMASK       = 0xc\n\tIPV6_RECVDSTOPTS              = 0x28\n\tIPV6_RECVHOPLIMIT             = 0x13\n\tIPV6_RECVHOPOPTS              = 0x14\n\tIPV6_RECVPATHMTU              = 0x24\n\tIPV6_RECVPKTINFO              = 0x12\n\tIPV6_RECVRTHDR                = 0x16\n\tIPV6_RECVRTHDRDSTOPTS         = 0x17\n\tIPV6_RECVTCLASS               = 0x19\n\tIPV6_RTHDR                    = 0x10\n\tIPV6_RTHDRDSTOPTS             = 0x11\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_SEC_OPT                  = 0x22\n\tIPV6_SRC_PREFERENCES          = 0x23\n\tIPV6_TCLASS                   = 0x26\n\tIPV6_UNICAST_HOPS             = 0x5\n\tIPV6_UNSPEC_SRC               = 0x42\n\tIPV6_USE_MIN_MTU              = 0x20\n\tIPV6_V6ONLY                   = 0x27\n\tIP_ADD_MEMBERSHIP             = 0x13\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x17\n\tIP_BLOCK_SOURCE               = 0x15\n\tIP_BOUND_IF                   = 0x41\n\tIP_BROADCAST                  = 0x106\n\tIP_BROADCAST_TTL              = 0x43\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPINIT_IF                = 0x45\n\tIP_DONTFRAG                   = 0x1b\n\tIP_DONTROUTE                  = 0x105\n\tIP_DROP_MEMBERSHIP            = 0x14\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x18\n\tIP_HDRINCL                    = 0x2\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_IF               = 0x10\n\tIP_MULTICAST_LOOP             = 0x12\n\tIP_MULTICAST_TTL              = 0x11\n\tIP_NEXTHOP                    = 0x19\n\tIP_OPTIONS                    = 0x1\n\tIP_PKTINFO                    = 0x1a\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x9\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVPKTINFO                = 0x1a\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVSLLA                   = 0xa\n\tIP_RECVTTL                    = 0xb\n\tIP_RETOPTS                    = 0x8\n\tIP_REUSEADDR                  = 0x104\n\tIP_SEC_OPT                    = 0x22\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x16\n\tIP_UNSPEC_SRC                 = 0x42\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x200\n\tIXANY                         = 0x800\n\tIXOFF                         = 0x1000\n\tIXON                          = 0x400\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_ACCESS_DEFAULT           = 0x6\n\tMADV_ACCESS_LWP               = 0x7\n\tMADV_ACCESS_MANY              = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_FREE                     = 0x5\n\tMADV_NORMAL                   = 0x0\n\tMADV_PURGE                    = 0x9\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_WILLNEED                 = 0x3\n\tMAP_32BIT                     = 0x80\n\tMAP_ALIGN                     = 0x200\n\tMAP_ANON                      = 0x100\n\tMAP_ANONYMOUS                 = 0x100\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x10\n\tMAP_INITDATA                  = 0x800\n\tMAP_NORESERVE                 = 0x40\n\tMAP_PRIVATE                   = 0x2\n\tMAP_RENAME                    = 0x20\n\tMAP_SHARED                    = 0x1\n\tMAP_TEXT                      = 0x400\n\tMAP_TYPE                      = 0xf\n\tMCL_CURRENT                   = 0x1\n\tMCL_FUTURE                    = 0x2\n\tMSG_CTRUNC                    = 0x10\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_DONTWAIT                  = 0x80\n\tMSG_DUPCTRL                   = 0x800\n\tMSG_EOR                       = 0x8\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_NOTIFICATION              = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x20\n\tMSG_WAITALL                   = 0x40\n\tMSG_XPG4_2                    = 0x8000\n\tMS_ASYNC                      = 0x1\n\tMS_INVALIDATE                 = 0x2\n\tMS_OLDSYNC                    = 0x0\n\tMS_SYNC                       = 0x4\n\tM_FLUSH                       = 0x86\n\tNAME_MAX                      = 0xff\n\tNEWDEV                        = 0x1\n\tNL0                           = 0x0\n\tNL1                           = 0x100\n\tNLDLY                         = 0x100\n\tNOFLSH                        = 0x80\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tOLDDEV                        = 0x0\n\tONBITSMAJOR                   = 0x7\n\tONBITSMINOR                   = 0x8\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tOPENFAIL                      = -0x1\n\tOPOST                         = 0x1\n\tO_ACCMODE                     = 0x600003\n\tO_APPEND                      = 0x8\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DSYNC                       = 0x40\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x400000\n\tO_LARGEFILE                   = 0x2000\n\tO_NDELAY                      = 0x4\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x20000\n\tO_NOLINKS                     = 0x40000\n\tO_NONBLOCK                    = 0x80\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSYNC                       = 0x8000\n\tO_SEARCH                      = 0x200000\n\tO_SIOCGIFCONF                 = -0x3ff796ec\n\tO_SIOCGLIFCONF                = -0x3fef9688\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_WRONLY                      = 0x1\n\tO_XATTR                       = 0x4000\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x4000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = -0x3\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x9\n\tRTAX_NETMASK                  = 0x2\n\tRTAX_SRC                      = 0x8\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTA_NUMBITS                   = 0x9\n\tRTA_SRC                       = 0x100\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_INDIRECT                  = 0x40000\n\tRTF_KERNEL                    = 0x80000\n\tRTF_LLINFO                    = 0x400\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTIRT                   = 0x10000\n\tRTF_PRIVATE                   = 0x2000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_REJECT                    = 0x8\n\tRTF_SETSRC                    = 0x20000\n\tRTF_STATIC                    = 0x800\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTF_ZONE                      = 0x100000\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_CHGADDR                   = 0xf\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_FREEADDR                  = 0x10\n\tRTM_GET                       = 0x4\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_VERSION                   = 0x3\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRT_AWARE                      = 0x1\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tSCM_RIGHTS                    = 0x1010\n\tSCM_TIMESTAMP                 = 0x1013\n\tSCM_UCRED                     = 0x1012\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIG2STR_MAX                   = 0x20\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fdb96e0\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDXARP                     = -0x7fff9658\n\tSIOCGARP                      = -0x3fdb96e1\n\tSIOCGDSTINFO                  = -0x3fff965c\n\tSIOCGENADDR                   = -0x3fdf96ab\n\tSIOCGENPSTATS                 = -0x3fdf96c7\n\tSIOCGETLSGCNT                 = -0x3fef8deb\n\tSIOCGETNAME                   = 0x40107334\n\tSIOCGETPEER                   = 0x40107335\n\tSIOCGETPROP                   = -0x3fff8f44\n\tSIOCGETSGCNT                  = -0x3feb8deb\n\tSIOCGETSYNC                   = -0x3fdf96d3\n\tSIOCGETVIFCNT                 = -0x3feb8dec\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fdf96f3\n\tSIOCGIFBRDADDR                = -0x3fdf96e9\n\tSIOCGIFCONF                   = -0x3ff796a4\n\tSIOCGIFDSTADDR                = -0x3fdf96f1\n\tSIOCGIFFLAGS                  = -0x3fdf96ef\n\tSIOCGIFHWADDR                 = -0x3fdf9647\n\tSIOCGIFINDEX                  = -0x3fdf96a6\n\tSIOCGIFMEM                    = -0x3fdf96ed\n\tSIOCGIFMETRIC                 = -0x3fdf96e5\n\tSIOCGIFMTU                    = -0x3fdf96ea\n\tSIOCGIFMUXID                  = -0x3fdf96a8\n\tSIOCGIFNETMASK                = -0x3fdf96e7\n\tSIOCGIFNUM                    = 0x40046957\n\tSIOCGIP6ADDRPOLICY            = -0x3fff965e\n\tSIOCGIPMSFILTER               = -0x3ffb964c\n\tSIOCGLIFADDR                  = -0x3f87968f\n\tSIOCGLIFBINDING               = -0x3f879666\n\tSIOCGLIFBRDADDR               = -0x3f879685\n\tSIOCGLIFCONF                  = -0x3fef965b\n\tSIOCGLIFDADSTATE              = -0x3f879642\n\tSIOCGLIFDSTADDR               = -0x3f87968d\n\tSIOCGLIFFLAGS                 = -0x3f87968b\n\tSIOCGLIFGROUPINFO             = -0x3f4b9663\n\tSIOCGLIFGROUPNAME             = -0x3f879664\n\tSIOCGLIFHWADDR                = -0x3f879640\n\tSIOCGLIFINDEX                 = -0x3f87967b\n\tSIOCGLIFLNKINFO               = -0x3f879674\n\tSIOCGLIFMETRIC                = -0x3f879681\n\tSIOCGLIFMTU                   = -0x3f879686\n\tSIOCGLIFMUXID                 = -0x3f87967d\n\tSIOCGLIFNETMASK               = -0x3f879683\n\tSIOCGLIFNUM                   = -0x3ff3967e\n\tSIOCGLIFSRCOF                 = -0x3fef964f\n\tSIOCGLIFSUBNET                = -0x3f879676\n\tSIOCGLIFTOKEN                 = -0x3f879678\n\tSIOCGLIFUSESRC                = -0x3f879651\n\tSIOCGLIFZONE                  = -0x3f879656\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGMSFILTER                 = -0x3ffb964e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSTAMP                    = -0x3fef9646\n\tSIOCGXARP                     = -0x3fff9659\n\tSIOCIFDETACH                  = -0x7fdf96c8\n\tSIOCILB                       = -0x3ffb9645\n\tSIOCLIFADDIF                  = -0x3f879691\n\tSIOCLIFDELND                  = -0x7f879673\n\tSIOCLIFGETND                  = -0x3f879672\n\tSIOCLIFREMOVEIF               = -0x7f879692\n\tSIOCLIFSETND                  = -0x7f879671\n\tSIOCLOWER                     = -0x7fdf96d7\n\tSIOCSARP                      = -0x7fdb96e2\n\tSIOCSCTPGOPT                  = -0x3fef9653\n\tSIOCSCTPPEELOFF               = -0x3ffb9652\n\tSIOCSCTPSOPT                  = -0x7fef9654\n\tSIOCSENABLESDP                = -0x3ffb9649\n\tSIOCSETPROP                   = -0x7ffb8f43\n\tSIOCSETSYNC                   = -0x7fdf96d4\n\tSIOCSHIWAT                    = -0x7ffb8d00\n\tSIOCSIFADDR                   = -0x7fdf96f4\n\tSIOCSIFBRDADDR                = -0x7fdf96e8\n\tSIOCSIFDSTADDR                = -0x7fdf96f2\n\tSIOCSIFFLAGS                  = -0x7fdf96f0\n\tSIOCSIFINDEX                  = -0x7fdf96a5\n\tSIOCSIFMEM                    = -0x7fdf96ee\n\tSIOCSIFMETRIC                 = -0x7fdf96e4\n\tSIOCSIFMTU                    = -0x7fdf96eb\n\tSIOCSIFMUXID                  = -0x7fdf96a7\n\tSIOCSIFNAME                   = -0x7fdf96b7\n\tSIOCSIFNETMASK                = -0x7fdf96e6\n\tSIOCSIP6ADDRPOLICY            = -0x7fff965d\n\tSIOCSIPMSFILTER               = -0x7ffb964b\n\tSIOCSLGETREQ                  = -0x3fdf96b9\n\tSIOCSLIFADDR                  = -0x7f879690\n\tSIOCSLIFBRDADDR               = -0x7f879684\n\tSIOCSLIFDSTADDR               = -0x7f87968e\n\tSIOCSLIFFLAGS                 = -0x7f87968c\n\tSIOCSLIFGROUPNAME             = -0x7f879665\n\tSIOCSLIFINDEX                 = -0x7f87967a\n\tSIOCSLIFLNKINFO               = -0x7f879675\n\tSIOCSLIFMETRIC                = -0x7f879680\n\tSIOCSLIFMTU                   = -0x7f879687\n\tSIOCSLIFMUXID                 = -0x7f87967c\n\tSIOCSLIFNAME                  = -0x3f87967f\n\tSIOCSLIFNETMASK               = -0x7f879682\n\tSIOCSLIFPREFIX                = -0x3f879641\n\tSIOCSLIFSUBNET                = -0x7f879677\n\tSIOCSLIFTOKEN                 = -0x7f879679\n\tSIOCSLIFUSESRC                = -0x7f879650\n\tSIOCSLIFZONE                  = -0x7f879655\n\tSIOCSLOWAT                    = -0x7ffb8cfe\n\tSIOCSLSTAT                    = -0x7fdf96b8\n\tSIOCSMSFILTER                 = -0x7ffb964d\n\tSIOCSPGRP                     = -0x7ffb8cf8\n\tSIOCSPROMISC                  = -0x7ffb96d0\n\tSIOCSQPTR                     = -0x3ffb9648\n\tSIOCSSDSTATS                  = -0x3fdf96d2\n\tSIOCSSESTATS                  = -0x3fdf96d1\n\tSIOCSXARP                     = -0x7fff965a\n\tSIOCTMYADDR                   = -0x3ff79670\n\tSIOCTMYSITE                   = -0x3ff7966e\n\tSIOCTONLINK                   = -0x3ff7966f\n\tSIOCUPPER                     = -0x7fdf96d8\n\tSIOCX25RCV                    = -0x3fdf96c4\n\tSIOCX25TBL                    = -0x3fdf96c3\n\tSIOCX25XMT                    = -0x3fdf96c5\n\tSIOCXPROTO                    = 0x20007337\n\tSOCK_CLOEXEC                  = 0x80000\n\tSOCK_DGRAM                    = 0x1\n\tSOCK_NDELAY                   = 0x200000\n\tSOCK_NONBLOCK                 = 0x100000\n\tSOCK_RAW                      = 0x4\n\tSOCK_RDM                      = 0x5\n\tSOCK_SEQPACKET                = 0x6\n\tSOCK_STREAM                   = 0x2\n\tSOCK_TYPE_MASK                = 0xffff\n\tSOL_FILTER                    = 0xfffc\n\tSOL_PACKET                    = 0xfffd\n\tSOL_ROUTE                     = 0xfffe\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x80\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_ALL                        = 0x3f\n\tSO_ALLZONES                   = 0x1014\n\tSO_ANON_MLP                   = 0x100a\n\tSO_ATTACH_FILTER              = 0x40000001\n\tSO_BAND                       = 0x4000\n\tSO_BROADCAST                  = 0x20\n\tSO_COPYOPT                    = 0x80000\n\tSO_DEBUG                      = 0x1\n\tSO_DELIM                      = 0x8000\n\tSO_DETACH_FILTER              = 0x40000002\n\tSO_DGRAM_ERRIND               = 0x200\n\tSO_DOMAIN                     = 0x100c\n\tSO_DONTLINGER                 = -0x81\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROPT                     = 0x40000\n\tSO_ERROR                      = 0x1007\n\tSO_EXCLBIND                   = 0x1015\n\tSO_HIWAT                      = 0x10\n\tSO_ISNTTY                     = 0x800\n\tSO_ISTTY                      = 0x400\n\tSO_KEEPALIVE                  = 0x8\n\tSO_LINGER                     = 0x80\n\tSO_LOWAT                      = 0x20\n\tSO_MAC_EXEMPT                 = 0x100b\n\tSO_MAC_IMPLICIT               = 0x1016\n\tSO_MAXBLK                     = 0x100000\n\tSO_MAXPSZ                     = 0x8\n\tSO_MINPSZ                     = 0x4\n\tSO_MREADOFF                   = 0x80\n\tSO_MREADON                    = 0x40\n\tSO_NDELOFF                    = 0x200\n\tSO_NDELON                     = 0x100\n\tSO_NODELIM                    = 0x10000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PROTOTYPE                  = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVPSH                     = 0x100d\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_READOPT                    = 0x1\n\tSO_RECVUCRED                  = 0x400\n\tSO_REUSEADDR                  = 0x4\n\tSO_SECATTR                    = 0x1011\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_STRHOLD                    = 0x20000\n\tSO_TAIL                       = 0x200000\n\tSO_TIMESTAMP                  = 0x1013\n\tSO_TONSTOP                    = 0x2000\n\tSO_TOSTOP                     = 0x1000\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_VRRP                       = 0x1017\n\tSO_WROFF                      = 0x2\n\tS_ENFMT                       = 0x400\n\tS_IAMB                        = 0x1ff\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFDOOR                      = 0xd000\n\tS_IFIFO                       = 0x1000\n\tS_IFLNK                       = 0xa000\n\tS_IFMT                        = 0xf000\n\tS_IFNAM                       = 0x5000\n\tS_IFPORT                      = 0xe000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_INSEM                       = 0x1\n\tS_INSHD                       = 0x2\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXGRP                       = 0x8\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x800\n\tTAB2                          = 0x1000\n\tTAB3                          = 0x1800\n\tTABDLY                        = 0x1800\n\tTCFLSH                        = 0x5407\n\tTCGETA                        = 0x5401\n\tTCGETS                        = 0x540d\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_ABORT_THRESHOLD           = 0x11\n\tTCP_ANONPRIVBIND              = 0x20\n\tTCP_CONN_ABORT_THRESHOLD      = 0x13\n\tTCP_CONN_NOTIFY_THRESHOLD     = 0x12\n\tTCP_CORK                      = 0x18\n\tTCP_EXCLBIND                  = 0x21\n\tTCP_INIT_CWND                 = 0x15\n\tTCP_KEEPALIVE                 = 0x8\n\tTCP_KEEPALIVE_ABORT_THRESHOLD = 0x17\n\tTCP_KEEPALIVE_THRESHOLD       = 0x16\n\tTCP_KEEPCNT                   = 0x23\n\tTCP_KEEPIDLE                  = 0x22\n\tTCP_KEEPINTVL                 = 0x24\n\tTCP_LINGER2                   = 0x1c\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MSS                       = 0x218\n\tTCP_NODELAY                   = 0x1\n\tTCP_NOTIFY_THRESHOLD          = 0x10\n\tTCP_RECVDSTADDR               = 0x14\n\tTCP_RTO_INITIAL               = 0x19\n\tTCP_RTO_MAX                   = 0x1b\n\tTCP_RTO_MIN                   = 0x1a\n\tTCSAFLUSH                     = 0x5410\n\tTCSBRK                        = 0x5405\n\tTCSETA                        = 0x5402\n\tTCSETAF                       = 0x5404\n\tTCSETAW                       = 0x5403\n\tTCSETS                        = 0x540e\n\tTCSETSF                       = 0x5410\n\tTCSETSW                       = 0x540f\n\tTCXONC                        = 0x5406\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x747a\n\tTIOCCDTR                      = 0x7478\n\tTIOCCILOOP                    = 0x746c\n\tTIOCEXCL                      = 0x740d\n\tTIOCFLUSH                     = 0x7410\n\tTIOCGETC                      = 0x7412\n\tTIOCGETD                      = 0x7400\n\tTIOCGETP                      = 0x7408\n\tTIOCGLTC                      = 0x7474\n\tTIOCGPGRP                     = 0x7414\n\tTIOCGPPS                      = 0x547d\n\tTIOCGPPSEV                    = 0x547f\n\tTIOCGSID                      = 0x7416\n\tTIOCGSOFTCAR                  = 0x5469\n\tTIOCGWINSZ                    = 0x5468\n\tTIOCHPCL                      = 0x7402\n\tTIOCKBOF                      = 0x5409\n\tTIOCKBON                      = 0x5408\n\tTIOCLBIC                      = 0x747e\n\tTIOCLBIS                      = 0x747f\n\tTIOCLGET                      = 0x747c\n\tTIOCLSET                      = 0x747d\n\tTIOCMBIC                      = 0x741c\n\tTIOCMBIS                      = 0x741b\n\tTIOCMGET                      = 0x741d\n\tTIOCMSET                      = 0x741a\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x7471\n\tTIOCNXCL                      = 0x740e\n\tTIOCOUTQ                      = 0x7473\n\tTIOCREMOTE                    = 0x741e\n\tTIOCSBRK                      = 0x747b\n\tTIOCSCTTY                     = 0x7484\n\tTIOCSDTR                      = 0x7479\n\tTIOCSETC                      = 0x7411\n\tTIOCSETD                      = 0x7401\n\tTIOCSETN                      = 0x740a\n\tTIOCSETP                      = 0x7409\n\tTIOCSIGNAL                    = 0x741f\n\tTIOCSILOOP                    = 0x746d\n\tTIOCSLTC                      = 0x7475\n\tTIOCSPGRP                     = 0x7415\n\tTIOCSPPS                      = 0x547e\n\tTIOCSSOFTCAR                  = 0x546a\n\tTIOCSTART                     = 0x746e\n\tTIOCSTI                       = 0x7417\n\tTIOCSTOP                      = 0x746f\n\tTIOCSWINSZ                    = 0x5467\n\tTOSTOP                        = 0x100\n\tUTIME_NOW                     = -0x1\n\tUTIME_OMIT                    = -0x2\n\tVCEOF                         = 0x8\n\tVCEOL                         = 0x9\n\tVDISCARD                      = 0xd\n\tVDSUSP                        = 0xb\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVERASE2                       = 0x11\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xf\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xc\n\tVSTART                        = 0x8\n\tVSTATUS                       = 0x10\n\tVSTOP                         = 0x9\n\tVSUSP                         = 0xa\n\tVSWTCH                        = 0x7\n\tVT0                           = 0x0\n\tVT1                           = 0x4000\n\tVTDLY                         = 0x4000\n\tVTIME                         = 0x5\n\tVWERASE                       = 0xe\n\tWCONTFLG                      = 0xffff\n\tWCONTINUED                    = 0x8\n\tWCOREFLG                      = 0x80\n\tWEXITED                       = 0x1\n\tWNOHANG                       = 0x40\n\tWNOWAIT                       = 0x80\n\tWOPTMASK                      = 0xcf\n\tWRAP                          = 0x20000\n\tWSIGMASK                      = 0x7f\n\tWSTOPFLG                      = 0x7f\n\tWSTOPPED                      = 0x4\n\tWTRAPPED                      = 0x2\n\tWUNTRACED                     = 0x4\n\tXCASE                         = 0x4\n\tXTABS                         = 0x1800\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x39)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x2f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x31)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOCKUNMAPPED   = syscall.Errno(0x48)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTACTIVE      = syscall.Errno(0x49)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTRECOVERABLE = syscall.Errno(0x3b)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x30)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0x3a)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMOTE         = syscall.Errno(0x42)\n\tERESTART        = syscall.Errno(0x5b)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT    = syscall.Signal(0x6)\n\tSIGALRM    = syscall.Signal(0xe)\n\tSIGBUS     = syscall.Signal(0xa)\n\tSIGCANCEL  = syscall.Signal(0x24)\n\tSIGCHLD    = syscall.Signal(0x12)\n\tSIGCLD     = syscall.Signal(0x12)\n\tSIGCONT    = syscall.Signal(0x19)\n\tSIGEMT     = syscall.Signal(0x7)\n\tSIGFPE     = syscall.Signal(0x8)\n\tSIGFREEZE  = syscall.Signal(0x22)\n\tSIGHUP     = syscall.Signal(0x1)\n\tSIGILL     = syscall.Signal(0x4)\n\tSIGINFO    = syscall.Signal(0x29)\n\tSIGINT     = syscall.Signal(0x2)\n\tSIGIO      = syscall.Signal(0x16)\n\tSIGIOT     = syscall.Signal(0x6)\n\tSIGJVM1    = syscall.Signal(0x27)\n\tSIGJVM2    = syscall.Signal(0x28)\n\tSIGKILL    = syscall.Signal(0x9)\n\tSIGLOST    = syscall.Signal(0x25)\n\tSIGLWP     = syscall.Signal(0x21)\n\tSIGPIPE    = syscall.Signal(0xd)\n\tSIGPOLL    = syscall.Signal(0x16)\n\tSIGPROF    = syscall.Signal(0x1d)\n\tSIGPWR     = syscall.Signal(0x13)\n\tSIGQUIT    = syscall.Signal(0x3)\n\tSIGSEGV    = syscall.Signal(0xb)\n\tSIGSTOP    = syscall.Signal(0x17)\n\tSIGSYS     = syscall.Signal(0xc)\n\tSIGTERM    = syscall.Signal(0xf)\n\tSIGTHAW    = syscall.Signal(0x23)\n\tSIGTRAP    = syscall.Signal(0x5)\n\tSIGTSTP    = syscall.Signal(0x18)\n\tSIGTTIN    = syscall.Signal(0x1a)\n\tSIGTTOU    = syscall.Signal(0x1b)\n\tSIGURG     = syscall.Signal(0x15)\n\tSIGUSR1    = syscall.Signal(0x10)\n\tSIGUSR2    = syscall.Signal(0x11)\n\tSIGVTALRM  = syscall.Signal(0x1c)\n\tSIGWAITING = syscall.Signal(0x20)\n\tSIGWINCH   = syscall.Signal(0x14)\n\tSIGXCPU    = syscall.Signal(0x1e)\n\tSIGXFSZ    = syscall.Signal(0x1f)\n\tSIGXRES    = syscall.Signal(0x26)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock situation detected/avoided\"},\n\t{46, \"ENOLCK\", \"no record locks available\"},\n\t{47, \"ECANCELED\", \"operation canceled\"},\n\t{48, \"ENOTSUP\", \"operation not supported\"},\n\t{49, \"EDQUOT\", \"disc quota exceeded\"},\n\t{50, \"EBADE\", \"bad exchange descriptor\"},\n\t{51, \"EBADR\", \"bad request descriptor\"},\n\t{52, \"EXFULL\", \"message tables full\"},\n\t{53, \"ENOANO\", \"anode table overflow\"},\n\t{54, \"EBADRQC\", \"bad request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock\"},\n\t{57, \"EBFONT\", \"bad font file format\"},\n\t{58, \"EOWNERDEAD\", \"owner of the lock died\"},\n\t{59, \"ENOTRECOVERABLE\", \"lock is not recoverable\"},\n\t{60, \"ENOSTR\", \"not a stream device\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of stream resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"ELOCKUNMAPPED\", \"locked lock was unmapped \"},\n\t{73, \"ENOTACTIVE\", \"facility is not active\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"not a data message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in more shared libraries than system limit\"},\n\t{87, \"ELIBEXEC\", \"can not exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"illegal byte sequence\"},\n\t{89, \"ENOSYS\", \"operation not applicable\"},\n\t{90, \"ELOOP\", \"number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS\"},\n\t{91, \"ERESTART\", \"error 91\"},\n\t{92, \"ESTRPIPE\", \"error 92\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"option not supported by protocol\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"EOPNOTSUPP\", \"operation not supported on transport endpoint\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection because of reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after socket shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale NFS file handle\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal Instruction\"},\n\t{5, \"SIGTRAP\", \"trace/Breakpoint Trap\"},\n\t{6, \"SIGABRT\", \"abort\"},\n\t{7, \"SIGEMT\", \"emulation Trap\"},\n\t{8, \"SIGFPE\", \"arithmetic Exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus Error\"},\n\t{11, \"SIGSEGV\", \"segmentation Fault\"},\n\t{12, \"SIGSYS\", \"bad System Call\"},\n\t{13, \"SIGPIPE\", \"broken Pipe\"},\n\t{14, \"SIGALRM\", \"alarm Clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user Signal 1\"},\n\t{17, \"SIGUSR2\", \"user Signal 2\"},\n\t{18, \"SIGCHLD\", \"child Status Changed\"},\n\t{19, \"SIGPWR\", \"power-Fail/Restart\"},\n\t{20, \"SIGWINCH\", \"window Size Change\"},\n\t{21, \"SIGURG\", \"urgent Socket Condition\"},\n\t{22, \"SIGIO\", \"pollable Event\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped (user)\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual Timer Expired\"},\n\t{29, \"SIGPROF\", \"profiling Timer Expired\"},\n\t{30, \"SIGXCPU\", \"cpu Limit Exceeded\"},\n\t{31, \"SIGXFSZ\", \"file Size Limit Exceeded\"},\n\t{32, \"SIGWAITING\", \"no runnable lwp\"},\n\t{33, \"SIGLWP\", \"inter-lwp signal\"},\n\t{34, \"SIGFREEZE\", \"checkpoint Freeze\"},\n\t{35, \"SIGTHAW\", \"checkpoint Thaw\"},\n\t{36, \"SIGCANCEL\", \"thread Cancellation\"},\n\t{37, \"SIGLOST\", \"resource Lost\"},\n\t{38, \"SIGXRES\", \"resource Control Exceeded\"},\n\t{39, \"SIGJVM1\", \"reserved for JVM 1\"},\n\t{40, \"SIGJVM2\", \"reserved for JVM 2\"},\n\t{41, \"SIGINFO\", \"information Request\"},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zptrace386_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT.\n\n// +build linux\n// +build 386 amd64\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegs386 is the registers used by 386 binaries.\ntype PtraceRegs386 struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\n// PtraceGetRegs386 fetches the registers used by 386 binaries.\nfunc PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n\n// PtraceRegsAmd64 is the registers used by amd64 binaries.\ntype PtraceRegsAmd64 struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\n// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.\nfunc PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zptracearm_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT.\n\n// +build linux\n// +build arm arm64\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsArm is the registers used by arm binaries.\ntype PtraceRegsArm struct {\n\tUregs [18]uint32\n}\n\n// PtraceGetRegsArm fetches the registers used by arm binaries.\nfunc PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n\n// PtraceRegsArm64 is the registers used by arm64 binaries.\ntype PtraceRegsArm64 struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\n// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zptracemips_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT.\n\n// +build linux\n// +build mips mips64\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMips is the registers used by mips binaries.\ntype PtraceRegsMips struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips fetches the registers used by mips binaries.\nfunc PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n\n// PtraceRegsMips64 is the registers used by mips64 binaries.\ntype PtraceRegsMips64 struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.\nfunc PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT.\n\n// +build linux\n// +build mipsle mips64le\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMipsle is the registers used by mipsle binaries.\ntype PtraceRegsMipsle struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.\nfunc PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n\n// PtraceRegsMips64le is the registers used by mips64le binaries.\ntype PtraceRegsMips64le struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.\nfunc PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go",
    "content": "// mksyscall_aix_ppc.pl -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build aix,ppc\n\npackage unix\n\n/*\n#include <stdint.h>\n#include <stddef.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint fsync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint recvmsg(int, uintptr_t, int);\nint sendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nint getrlimit64(int, uintptr_t);\nint setrlimit64(int, uintptr_t);\nlong long lseek64(int, long long, int);\nuintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\twpid = Pid_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tr = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tval = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.acct(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chdir(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chroot(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\tr0, er := C.close(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, er := C.dup(C.int(oldfd))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tC.exit(C.int(code))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\tr0, er := C.fchdir(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\tr0, er := C.fchmod(C.int(fd), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\tr0, er := C.fdatasync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\tr0, er := C.fsync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, er := C.getpgid(C.int(pid))\n\tpgid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := C.getpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := C.getpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := C.getppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, er := C.getpriority(C.int(which), C.int(who))\n\tprio = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tr0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, er := C.getsid(C.int(pid))\n\tsid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, er := C.kill(C.int(pid), C.int(sig))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\tr0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tvar _p2 int\n\t_p2 = len(buf)\n\tr0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))\n\t_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))\n\tr0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, er := C.setpgid(C.int(pid), C.int(pgid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, er := C.setsid()\n\tpid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\tr0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\tr0, er := C.setuid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\tr0, er := C.setgid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\tr0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tC.sync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))\n\tticks = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := C.umask(C.int(mask))\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlink(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\tr0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\tr0, er := C.dup2(C.int(oldfd), C.int(newfd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\tr0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\tr0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\tr0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tr0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\tr0, er := C.ftruncate(C.int(fd), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := C.getegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := C.geteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := C.getgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := C.getuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\tr0, er := C.listen(C.int(s), C.int(n))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\tr0, er := C.pause()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, er := C.setregid(C.int(rgid), C.int(egid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, er := C.setreuid(C.int(ruid), C.int(euid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\tr0, er := C.shutdown(C.int(fd), C.int(how))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))\n\tn = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tnn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\tr0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\tr0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\tr0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\tr0, er := C.mlockall(C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\tr0, er := C.munlockall()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\tr0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))\n\ttt = Time_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))\n\toff = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))\n\txaddr = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go",
    "content": "// mksyscall_aix_ppc64.pl -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build aix,ppc64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))\n\twpid = Pid_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, int(req), arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, e1 := callfcntl(fd, cmd, uintptr(arg))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\t_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, e1 := callclose(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, e1 := calldup(oldfd)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tcallexit(code)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, e1 := callfchdir(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, e1 := callfchmod(fd, mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, e1 := callfdatasync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, e1 := callfsync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e1 := callgetpgid(pid)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := callgetpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := callgetpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := callgetppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, e1 := callgetpriority(which, who)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e1 := callgetsid(pid)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\t_, e1 := callkill(pid, int(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, e1 := callsetpgid(pid, pgid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e1 := callsetsid()\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, e1 := callsetuid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\t_, e1 := callsetgid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, e1 := callsetpriority(which, who, prio)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tcallsync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := callumask(mask)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, e1 := calluname(uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, e1 := calldup2(oldfd, newfd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, e1 := callposix_fadvise64(fd, offset, length, advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, e1 := callfchown(fd, uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, e1 := callftruncate(fd, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := callgetegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := callgeteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := callgetgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := callgetuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, e1 := calllisten(s, n)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, e1 := callpause()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, e1 := callsetregid(rgid, egid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, e1 := callsetreuid(ruid, euid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, e1 := callshutdown(fd, how)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e1 := callsocket(domain, typ, proto)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, e1 := callmunmap(addr, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, e1 := callmlockall(flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, e1 := callmunlockall()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, e1 := callpipe(uintptr(unsafe.Pointer(p)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\t_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, e1 := calltime(uintptr(unsafe.Pointer(t)))\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, e1 := calllseek(fd, offset, whence)\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, e1 := callmmap64(addr, length, prot, flags, fd, offset)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go",
    "content": "// mksyscall_aix_ppc64.pl -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build aix,ppc64\n// +build !gccgo\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_accept accept \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getdirent getdirent \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_acct acct \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_close close \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup dup \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_exit exit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fsync fsync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_kill kill \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_syslog syslog \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_open64 open64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_openat openat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_read read \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setdomainname setdomainname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statx statx \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sync sync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_times times \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umask umask \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_uname uname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_write write \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_listen listen \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pause pause \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pread64 pread64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pwrite64 pwrite64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pselect pselect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_splice splice \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_stat stat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statfs statfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_bind bind \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_connect connect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socket socket \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendto sendto \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_msync msync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pipe pipe \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_poll poll \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_time time \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utime utime \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setrlimit setrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mmap64 mmap64 \"libc.a/shr_64.o\"\n\n//go:linkname libc_utimes libc_utimes\n//go:linkname libc_utimensat libc_utimensat\n//go:linkname libc_getcwd libc_getcwd\n//go:linkname libc_accept libc_accept\n//go:linkname libc_getdirent libc_getdirent\n//go:linkname libc_wait4 libc_wait4\n//go:linkname libc_ioctl libc_ioctl\n//go:linkname libc_fcntl libc_fcntl\n//go:linkname libc_acct libc_acct\n//go:linkname libc_chdir libc_chdir\n//go:linkname libc_chroot libc_chroot\n//go:linkname libc_close libc_close\n//go:linkname libc_dup libc_dup\n//go:linkname libc_exit libc_exit\n//go:linkname libc_faccessat libc_faccessat\n//go:linkname libc_fchdir libc_fchdir\n//go:linkname libc_fchmod libc_fchmod\n//go:linkname libc_fchmodat libc_fchmodat\n//go:linkname libc_fchownat libc_fchownat\n//go:linkname libc_fdatasync libc_fdatasync\n//go:linkname libc_fsync libc_fsync\n//go:linkname libc_getpgid libc_getpgid\n//go:linkname libc_getpgrp libc_getpgrp\n//go:linkname libc_getpid libc_getpid\n//go:linkname libc_getppid libc_getppid\n//go:linkname libc_getpriority libc_getpriority\n//go:linkname libc_getrusage libc_getrusage\n//go:linkname libc_getsid libc_getsid\n//go:linkname libc_kill libc_kill\n//go:linkname libc_syslog libc_syslog\n//go:linkname libc_mkdir libc_mkdir\n//go:linkname libc_mkdirat libc_mkdirat\n//go:linkname libc_mkfifo libc_mkfifo\n//go:linkname libc_mknod libc_mknod\n//go:linkname libc_mknodat libc_mknodat\n//go:linkname libc_nanosleep libc_nanosleep\n//go:linkname libc_open64 libc_open64\n//go:linkname libc_openat libc_openat\n//go:linkname libc_read libc_read\n//go:linkname libc_readlink libc_readlink\n//go:linkname libc_renameat libc_renameat\n//go:linkname libc_setdomainname libc_setdomainname\n//go:linkname libc_sethostname libc_sethostname\n//go:linkname libc_setpgid libc_setpgid\n//go:linkname libc_setsid libc_setsid\n//go:linkname libc_settimeofday libc_settimeofday\n//go:linkname libc_setuid libc_setuid\n//go:linkname libc_setgid libc_setgid\n//go:linkname libc_setpriority libc_setpriority\n//go:linkname libc_statx libc_statx\n//go:linkname libc_sync libc_sync\n//go:linkname libc_times libc_times\n//go:linkname libc_umask libc_umask\n//go:linkname libc_uname libc_uname\n//go:linkname libc_unlink libc_unlink\n//go:linkname libc_unlinkat libc_unlinkat\n//go:linkname libc_ustat libc_ustat\n//go:linkname libc_write libc_write\n//go:linkname libc_dup2 libc_dup2\n//go:linkname libc_posix_fadvise64 libc_posix_fadvise64\n//go:linkname libc_fchown libc_fchown\n//go:linkname libc_fstat libc_fstat\n//go:linkname libc_fstatat libc_fstatat\n//go:linkname libc_fstatfs libc_fstatfs\n//go:linkname libc_ftruncate libc_ftruncate\n//go:linkname libc_getegid libc_getegid\n//go:linkname libc_geteuid libc_geteuid\n//go:linkname libc_getgid libc_getgid\n//go:linkname libc_getuid libc_getuid\n//go:linkname libc_lchown libc_lchown\n//go:linkname libc_listen libc_listen\n//go:linkname libc_lstat libc_lstat\n//go:linkname libc_pause libc_pause\n//go:linkname libc_pread64 libc_pread64\n//go:linkname libc_pwrite64 libc_pwrite64\n//go:linkname libc_pselect libc_pselect\n//go:linkname libc_setregid libc_setregid\n//go:linkname libc_setreuid libc_setreuid\n//go:linkname libc_shutdown libc_shutdown\n//go:linkname libc_splice libc_splice\n//go:linkname libc_stat libc_stat\n//go:linkname libc_statfs libc_statfs\n//go:linkname libc_truncate libc_truncate\n//go:linkname libc_bind libc_bind\n//go:linkname libc_connect libc_connect\n//go:linkname libc_getgroups libc_getgroups\n//go:linkname libc_setgroups libc_setgroups\n//go:linkname libc_getsockopt libc_getsockopt\n//go:linkname libc_setsockopt libc_setsockopt\n//go:linkname libc_socket libc_socket\n//go:linkname libc_socketpair libc_socketpair\n//go:linkname libc_getpeername libc_getpeername\n//go:linkname libc_getsockname libc_getsockname\n//go:linkname libc_recvfrom libc_recvfrom\n//go:linkname libc_sendto libc_sendto\n//go:linkname libc_recvmsg libc_recvmsg\n//go:linkname libc_sendmsg libc_sendmsg\n//go:linkname libc_munmap libc_munmap\n//go:linkname libc_madvise libc_madvise\n//go:linkname libc_mprotect libc_mprotect\n//go:linkname libc_mlock libc_mlock\n//go:linkname libc_mlockall libc_mlockall\n//go:linkname libc_msync libc_msync\n//go:linkname libc_munlock libc_munlock\n//go:linkname libc_munlockall libc_munlockall\n//go:linkname libc_pipe libc_pipe\n//go:linkname libc_poll libc_poll\n//go:linkname libc_gettimeofday libc_gettimeofday\n//go:linkname libc_time libc_time\n//go:linkname libc_utime libc_utime\n//go:linkname libc_getrlimit libc_getrlimit\n//go:linkname libc_setrlimit libc_setrlimit\n//go:linkname libc_lseek libc_lseek\n//go:linkname libc_mmap64 libc_mmap64\n\ntype syscallFunc uintptr\n\nvar (\n\tlibc_utimes,\n\tlibc_utimensat,\n\tlibc_getcwd,\n\tlibc_accept,\n\tlibc_getdirent,\n\tlibc_wait4,\n\tlibc_ioctl,\n\tlibc_fcntl,\n\tlibc_acct,\n\tlibc_chdir,\n\tlibc_chroot,\n\tlibc_close,\n\tlibc_dup,\n\tlibc_exit,\n\tlibc_faccessat,\n\tlibc_fchdir,\n\tlibc_fchmod,\n\tlibc_fchmodat,\n\tlibc_fchownat,\n\tlibc_fdatasync,\n\tlibc_fsync,\n\tlibc_getpgid,\n\tlibc_getpgrp,\n\tlibc_getpid,\n\tlibc_getppid,\n\tlibc_getpriority,\n\tlibc_getrusage,\n\tlibc_getsid,\n\tlibc_kill,\n\tlibc_syslog,\n\tlibc_mkdir,\n\tlibc_mkdirat,\n\tlibc_mkfifo,\n\tlibc_mknod,\n\tlibc_mknodat,\n\tlibc_nanosleep,\n\tlibc_open64,\n\tlibc_openat,\n\tlibc_read,\n\tlibc_readlink,\n\tlibc_renameat,\n\tlibc_setdomainname,\n\tlibc_sethostname,\n\tlibc_setpgid,\n\tlibc_setsid,\n\tlibc_settimeofday,\n\tlibc_setuid,\n\tlibc_setgid,\n\tlibc_setpriority,\n\tlibc_statx,\n\tlibc_sync,\n\tlibc_times,\n\tlibc_umask,\n\tlibc_uname,\n\tlibc_unlink,\n\tlibc_unlinkat,\n\tlibc_ustat,\n\tlibc_write,\n\tlibc_dup2,\n\tlibc_posix_fadvise64,\n\tlibc_fchown,\n\tlibc_fstat,\n\tlibc_fstatat,\n\tlibc_fstatfs,\n\tlibc_ftruncate,\n\tlibc_getegid,\n\tlibc_geteuid,\n\tlibc_getgid,\n\tlibc_getuid,\n\tlibc_lchown,\n\tlibc_listen,\n\tlibc_lstat,\n\tlibc_pause,\n\tlibc_pread64,\n\tlibc_pwrite64,\n\tlibc_pselect,\n\tlibc_setregid,\n\tlibc_setreuid,\n\tlibc_shutdown,\n\tlibc_splice,\n\tlibc_stat,\n\tlibc_statfs,\n\tlibc_truncate,\n\tlibc_bind,\n\tlibc_connect,\n\tlibc_getgroups,\n\tlibc_setgroups,\n\tlibc_getsockopt,\n\tlibc_setsockopt,\n\tlibc_socket,\n\tlibc_socketpair,\n\tlibc_getpeername,\n\tlibc_getsockname,\n\tlibc_recvfrom,\n\tlibc_sendto,\n\tlibc_recvmsg,\n\tlibc_sendmsg,\n\tlibc_munmap,\n\tlibc_madvise,\n\tlibc_mprotect,\n\tlibc_mlock,\n\tlibc_mlockall,\n\tlibc_msync,\n\tlibc_munlock,\n\tlibc_munlockall,\n\tlibc_pipe,\n\tlibc_poll,\n\tlibc_gettimeofday,\n\tlibc_time,\n\tlibc_utime,\n\tlibc_getrlimit,\n\tlibc_setrlimit,\n\tlibc_lseek,\n\tlibc_mmap64 syscallFunc\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go",
    "content": "// mksyscall_aix_ppc64.pl -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build aix,ppc64\n// +build gccgo\n\npackage unix\n\n/*\n#include <stdint.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint fsync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint recvmsg(int, uintptr_t, int);\nint sendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nint getrlimit(int, uintptr_t);\nint setrlimit(int, uintptr_t);\nlong long lseek(int, long long, int);\nuintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.acct(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chdir(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chroot(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.close(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup(C.int(oldfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.exit(C.int(code)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchdir(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fdatasync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgrp())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getppid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpriority(C.int(which), C.int(who)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.kill(C.int(pid), C.int(sig)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.settimeofday(C.uintptr_t(tv)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setuid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sync())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.times(C.uintptr_t(tms)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umask(C.int(mask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.uname(C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlink(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getegid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.geteuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.listen(C.int(s), C.int(n)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pause())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.shutdown(C.int(fd), C.int(how)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlockall(C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlockall())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pipe(C.uintptr_t(p)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.time(C.uintptr_t(t)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go",
    "content": "// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int32(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// mksyscall.pl -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int64(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go",
    "content": "// mksyscall.pl -l32 -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int32(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int64(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go",
    "content": "// mksyscall.pl -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build dragonfly,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go",
    "content": "// mksyscall.pl -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build freebsd,386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *stat_freebsd11_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *stat_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, stat *stat_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc statfs(path string, stat *statfs_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc statfs_freebsd12(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go",
    "content": "// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build freebsd,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *stat_freebsd11_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *stat_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, stat *stat_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc statfs(path string, stat *statfs_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc statfs_freebsd12(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go",
    "content": "// mksyscall.pl -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build freebsd,arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *stat_freebsd11_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *stat_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, stat *stat_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc statfs(path string, stat *statfs_freebsd11_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc statfs_freebsd12(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go",
    "content": "// mksyscall.pl -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go",
    "content": "// mksyscall.pl -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go",
    "content": "// mksyscall.pl -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go",
    "content": "// mksyscall.pl -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go",
    "content": "// mksyscall.pl -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,mips\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (p1 int, p2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tp1 = int(r0)\n\tp2 = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go",
    "content": "// mksyscall.pl -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go",
    "content": "// mksyscall.pl -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,mips64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go",
    "content": "// mksyscall.pl -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (p1 int, p2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tp1 = int(r0)\n\tp2 = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go",
    "content": "// mksyscall.pl -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go",
    "content": "// mksyscall.pl -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,ppc64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go",
    "content": "// mksyscall.pl -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go",
    "content": "// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,s390x\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go",
    "content": "// mksyscall.pl -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build linux,sparc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsgid(gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setfsuid(uid int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go",
    "content": "// mksyscall.pl -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build netbsd,386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go",
    "content": "// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build netbsd,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go",
    "content": "// mksyscall.pl -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build netbsd,arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go",
    "content": "// mksyscall.pl -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build openbsd,386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go",
    "content": "// mksyscall.pl -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build openbsd,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go",
    "content": "// mksyscall.pl -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build openbsd,arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go",
    "content": "// mksyscall_solaris.pl -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build solaris,amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_pipe pipe \"libc.so\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libsocket.so\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n//go:cgo_import_dynamic libc_gethostname gethostname \"libc.so\"\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n//go:cgo_import_dynamic libc_futimesat futimesat \"libc.so\"\n//go:cgo_import_dynamic libc_accept accept \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc_acct acct \"libc.so\"\n//go:cgo_import_dynamic libc___makedev __makedev \"libc.so\"\n//go:cgo_import_dynamic libc___major __major \"libc.so\"\n//go:cgo_import_dynamic libc___minor __minor \"libc.so\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n//go:cgo_import_dynamic libc_creat creat \"libc.so\"\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.so\"\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatvfs fstatvfs \"libc.so\"\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten \"libsocket.so\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n//go:cgo_import_dynamic libc_pause pause \"libc.so\"\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.so\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n//go:cgo_import_dynamic libc_setrlimit setrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libsocket.so\"\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n//go:cgo_import_dynamic libc_statvfs statvfs \"libc.so\"\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n//go:cgo_import_dynamic libc_times times \"libc.so\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n//go:cgo_import_dynamic libc_uname uname \"libc.so\"\n//go:cgo_import_dynamic libc_umount umount \"libc.so\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.so\"\n//go:cgo_import_dynamic libc_utime utime \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_bind __xnet_bind \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_connect __xnet_connect \"libsocket.so\"\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n//go:cgo_import_dynamic libc_sendfile sendfile \"libsendfile.so\"\n//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socket __xnet_socket \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair \"libsocket.so\"\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libsocket.so\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libsocket.so\"\n\n//go:linkname procpipe libc_pipe\n//go:linkname procgetsockname libc_getsockname\n//go:linkname procGetcwd libc_getcwd\n//go:linkname procgetgroups libc_getgroups\n//go:linkname procsetgroups libc_setgroups\n//go:linkname procwait4 libc_wait4\n//go:linkname procgethostname libc_gethostname\n//go:linkname procutimes libc_utimes\n//go:linkname procutimensat libc_utimensat\n//go:linkname procfcntl libc_fcntl\n//go:linkname procfutimesat libc_futimesat\n//go:linkname procaccept libc_accept\n//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg\n//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg\n//go:linkname procacct libc_acct\n//go:linkname proc__makedev libc___makedev\n//go:linkname proc__major libc___major\n//go:linkname proc__minor libc___minor\n//go:linkname procioctl libc_ioctl\n//go:linkname procpoll libc_poll\n//go:linkname procAccess libc_access\n//go:linkname procAdjtime libc_adjtime\n//go:linkname procChdir libc_chdir\n//go:linkname procChmod libc_chmod\n//go:linkname procChown libc_chown\n//go:linkname procChroot libc_chroot\n//go:linkname procClose libc_close\n//go:linkname procCreat libc_creat\n//go:linkname procDup libc_dup\n//go:linkname procDup2 libc_dup2\n//go:linkname procExit libc_exit\n//go:linkname procFaccessat libc_faccessat\n//go:linkname procFchdir libc_fchdir\n//go:linkname procFchmod libc_fchmod\n//go:linkname procFchmodat libc_fchmodat\n//go:linkname procFchown libc_fchown\n//go:linkname procFchownat libc_fchownat\n//go:linkname procFdatasync libc_fdatasync\n//go:linkname procFlock libc_flock\n//go:linkname procFpathconf libc_fpathconf\n//go:linkname procFstat libc_fstat\n//go:linkname procFstatat libc_fstatat\n//go:linkname procFstatvfs libc_fstatvfs\n//go:linkname procGetdents libc_getdents\n//go:linkname procGetgid libc_getgid\n//go:linkname procGetpid libc_getpid\n//go:linkname procGetpgid libc_getpgid\n//go:linkname procGetpgrp libc_getpgrp\n//go:linkname procGeteuid libc_geteuid\n//go:linkname procGetegid libc_getegid\n//go:linkname procGetppid libc_getppid\n//go:linkname procGetpriority libc_getpriority\n//go:linkname procGetrlimit libc_getrlimit\n//go:linkname procGetrusage libc_getrusage\n//go:linkname procGettimeofday libc_gettimeofday\n//go:linkname procGetuid libc_getuid\n//go:linkname procKill libc_kill\n//go:linkname procLchown libc_lchown\n//go:linkname procLink libc_link\n//go:linkname proc__xnet_llisten libc___xnet_llisten\n//go:linkname procLstat libc_lstat\n//go:linkname procMadvise libc_madvise\n//go:linkname procMkdir libc_mkdir\n//go:linkname procMkdirat libc_mkdirat\n//go:linkname procMkfifo libc_mkfifo\n//go:linkname procMkfifoat libc_mkfifoat\n//go:linkname procMknod libc_mknod\n//go:linkname procMknodat libc_mknodat\n//go:linkname procMlock libc_mlock\n//go:linkname procMlockall libc_mlockall\n//go:linkname procMprotect libc_mprotect\n//go:linkname procMsync libc_msync\n//go:linkname procMunlock libc_munlock\n//go:linkname procMunlockall libc_munlockall\n//go:linkname procNanosleep libc_nanosleep\n//go:linkname procOpen libc_open\n//go:linkname procOpenat libc_openat\n//go:linkname procPathconf libc_pathconf\n//go:linkname procPause libc_pause\n//go:linkname procPread libc_pread\n//go:linkname procPwrite libc_pwrite\n//go:linkname procread libc_read\n//go:linkname procReadlink libc_readlink\n//go:linkname procRename libc_rename\n//go:linkname procRenameat libc_renameat\n//go:linkname procRmdir libc_rmdir\n//go:linkname proclseek libc_lseek\n//go:linkname procSelect libc_select\n//go:linkname procSetegid libc_setegid\n//go:linkname procSeteuid libc_seteuid\n//go:linkname procSetgid libc_setgid\n//go:linkname procSethostname libc_sethostname\n//go:linkname procSetpgid libc_setpgid\n//go:linkname procSetpriority libc_setpriority\n//go:linkname procSetregid libc_setregid\n//go:linkname procSetreuid libc_setreuid\n//go:linkname procSetrlimit libc_setrlimit\n//go:linkname procSetsid libc_setsid\n//go:linkname procSetuid libc_setuid\n//go:linkname procshutdown libc_shutdown\n//go:linkname procStat libc_stat\n//go:linkname procStatvfs libc_statvfs\n//go:linkname procSymlink libc_symlink\n//go:linkname procSync libc_sync\n//go:linkname procTimes libc_times\n//go:linkname procTruncate libc_truncate\n//go:linkname procFsync libc_fsync\n//go:linkname procFtruncate libc_ftruncate\n//go:linkname procUmask libc_umask\n//go:linkname procUname libc_uname\n//go:linkname procumount libc_umount\n//go:linkname procUnlink libc_unlink\n//go:linkname procUnlinkat libc_unlinkat\n//go:linkname procUstat libc_ustat\n//go:linkname procUtime libc_utime\n//go:linkname proc__xnet_bind libc___xnet_bind\n//go:linkname proc__xnet_connect libc___xnet_connect\n//go:linkname procmmap libc_mmap\n//go:linkname procmunmap libc_munmap\n//go:linkname procsendfile libc_sendfile\n//go:linkname proc__xnet_sendto libc___xnet_sendto\n//go:linkname proc__xnet_socket libc___xnet_socket\n//go:linkname proc__xnet_socketpair libc___xnet_socketpair\n//go:linkname procwrite libc_write\n//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt\n//go:linkname procgetpeername libc_getpeername\n//go:linkname procsetsockopt libc_setsockopt\n//go:linkname procrecvfrom libc_recvfrom\n\nvar (\n\tprocpipe,\n\tprocgetsockname,\n\tprocGetcwd,\n\tprocgetgroups,\n\tprocsetgroups,\n\tprocwait4,\n\tprocgethostname,\n\tprocutimes,\n\tprocutimensat,\n\tprocfcntl,\n\tprocfutimesat,\n\tprocaccept,\n\tproc__xnet_recvmsg,\n\tproc__xnet_sendmsg,\n\tprocacct,\n\tproc__makedev,\n\tproc__major,\n\tproc__minor,\n\tprocioctl,\n\tprocpoll,\n\tprocAccess,\n\tprocAdjtime,\n\tprocChdir,\n\tprocChmod,\n\tprocChown,\n\tprocChroot,\n\tprocClose,\n\tprocCreat,\n\tprocDup,\n\tprocDup2,\n\tprocExit,\n\tprocFaccessat,\n\tprocFchdir,\n\tprocFchmod,\n\tprocFchmodat,\n\tprocFchown,\n\tprocFchownat,\n\tprocFdatasync,\n\tprocFlock,\n\tprocFpathconf,\n\tprocFstat,\n\tprocFstatat,\n\tprocFstatvfs,\n\tprocGetdents,\n\tprocGetgid,\n\tprocGetpid,\n\tprocGetpgid,\n\tprocGetpgrp,\n\tprocGeteuid,\n\tprocGetegid,\n\tprocGetppid,\n\tprocGetpriority,\n\tprocGetrlimit,\n\tprocGetrusage,\n\tprocGettimeofday,\n\tprocGetuid,\n\tprocKill,\n\tprocLchown,\n\tprocLink,\n\tproc__xnet_llisten,\n\tprocLstat,\n\tprocMadvise,\n\tprocMkdir,\n\tprocMkdirat,\n\tprocMkfifo,\n\tprocMkfifoat,\n\tprocMknod,\n\tprocMknodat,\n\tprocMlock,\n\tprocMlockall,\n\tprocMprotect,\n\tprocMsync,\n\tprocMunlock,\n\tprocMunlockall,\n\tprocNanosleep,\n\tprocOpen,\n\tprocOpenat,\n\tprocPathconf,\n\tprocPause,\n\tprocPread,\n\tprocPwrite,\n\tprocread,\n\tprocReadlink,\n\tprocRename,\n\tprocRenameat,\n\tprocRmdir,\n\tproclseek,\n\tprocSelect,\n\tprocSetegid,\n\tprocSeteuid,\n\tprocSetgid,\n\tprocSethostname,\n\tprocSetpgid,\n\tprocSetpriority,\n\tprocSetregid,\n\tprocSetreuid,\n\tprocSetrlimit,\n\tprocSetsid,\n\tprocSetuid,\n\tprocshutdown,\n\tprocStat,\n\tprocStatvfs,\n\tprocSymlink,\n\tprocSync,\n\tprocTimes,\n\tprocTruncate,\n\tprocFsync,\n\tprocFtruncate,\n\tprocUmask,\n\tprocUname,\n\tprocumount,\n\tprocUnlink,\n\tprocUnlinkat,\n\tprocUstat,\n\tprocUtime,\n\tproc__xnet_bind,\n\tproc__xnet_connect,\n\tprocmmap,\n\tprocmunmap,\n\tprocsendfile,\n\tproc__xnet_sendto,\n\tproc__xnet_socket,\n\tproc__xnet_socketpair,\n\tprocwrite,\n\tproc__xnet_getsockopt,\n\tprocgetpeername,\n\tprocsetsockopt,\n\tprocrecvfrom syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int32(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gethostname(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc acct(path *byte) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __makedev(version int, major uint, minor uint) (val uint64) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)\n\tval = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __major(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __minor(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs(path string, vfsstat *Statvfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go",
    "content": "// mksysctl_openbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.arandom\", []_C_int{1, 37}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cryptodevallowsoft\", []_C_int{1, 53}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.random\", []_C_int{1, 31}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.tty.maxptys\", []_C_int{1, 44, 6}},\n\t{\"kern.tty.nptys\", []_C_int{1, 44, 7}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.userasymcrypto\", []_C_int{1, 60}},\n\t{\"kern.usercrypto\", []_C_int{1, 52}},\n\t{\"kern.usermount\", []_C_int{1, 30}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.vnode\", []_C_int{1, 13}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.mobileip.allow\", []_C_int{4, 2, 55, 1}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.pim.stats\", []_C_int{4, 2, 103, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_prune\", []_C_int{4, 24, 30, 6}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.nd6_useloopback\", []_C_int{4, 24, 30, 11}},\n\t{\"net.inet6.icmp6.nodeinfo\", []_C_int{4, 24, 30, 13}},\n\t{\"net.inet6.icmp6.rediraccept\", []_C_int{4, 24, 30, 2}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.accept_rtadv\", []_C_int{4, 24, 17, 12}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.maxifdefrouters\", []_C_int{4, 24, 17, 47}},\n\t{\"net.inet6.ip6.maxifprefixes\", []_C_int{4, 24, 17, 46}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.rr_prune\", []_C_int{4, 24, 17, 22}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.inet6.ip6.v6only\", []_C_int{4, 24, 17, 24}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.maxloop_inkernel\", []_C_int{4, 33, 4}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go",
    "content": "// mksysctl_openbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\n// +build amd64,openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.dnsjackport\", []_C_int{1, 13}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.mobileip.allow\", []_C_int{4, 2, 55, 1}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.maxloop_inkernel\", []_C_int{4, 33, 4}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go",
    "content": "// mksysctl_openbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.arandom\", []_C_int{1, 37}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cryptodevallowsoft\", []_C_int{1, 53}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.random\", []_C_int{1, 31}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.tty.maxptys\", []_C_int{1, 44, 6}},\n\t{\"kern.tty.nptys\", []_C_int{1, 44, 7}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.userasymcrypto\", []_C_int{1, 60}},\n\t{\"kern.usercrypto\", []_C_int{1, 52}},\n\t{\"kern.usermount\", []_C_int{1, 30}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.vnode\", []_C_int{1, 13}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.mobileip.allow\", []_C_int{4, 2, 55, 1}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.pim.stats\", []_C_int{4, 2, 103, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_prune\", []_C_int{4, 24, 30, 6}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.nd6_useloopback\", []_C_int{4, 24, 30, 11}},\n\t{\"net.inet6.icmp6.nodeinfo\", []_C_int{4, 24, 30, 13}},\n\t{\"net.inet6.icmp6.rediraccept\", []_C_int{4, 24, 30, 2}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.accept_rtadv\", []_C_int{4, 24, 17, 12}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.maxifdefrouters\", []_C_int{4, 24, 17, 47}},\n\t{\"net.inet6.ip6.maxifprefixes\", []_C_int{4, 24, 17, 46}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.rr_prune\", []_C_int{4, 24, 17, 22}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.inet6.ip6.v6only\", []_C_int{4, 24, 17, 24}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.maxloop_inkernel\", []_C_int{4, 33, 4}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go",
    "content": "// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,darwin\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go",
    "content": "// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,darwin\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go",
    "content": "// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,darwin\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go",
    "content": "// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,darwin\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go",
    "content": "// mksysnum_dragonfly.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,dragonfly\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT          = 1   // { void exit(int rval); }\n\tSYS_FORK          = 2   // { int fork(void); }\n\tSYS_READ          = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE         = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN          = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE         = 6   // { int close(int fd); }\n\tSYS_WAIT4         = 7   // { int wait4(int pid, int *status, int options, \\\n\tSYS_LINK          = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK        = 10  // { int unlink(char *path); }\n\tSYS_CHDIR         = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR        = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD         = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD         = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN         = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK        = 17  // { int obreak(char *nsize); } break obreak_args int\n\tSYS_GETFSSTAT     = 18  // { int getfsstat(struct statfs *buf, long bufsize, \\\n\tSYS_GETPID        = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT         = 21  // { int mount(char *type, char *path, int flags, \\\n\tSYS_UNMOUNT       = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID        = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID        = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID       = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE        = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, \\\n\tSYS_RECVMSG       = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG       = 28  // { int sendmsg(int s, caddr_t msg, int flags); }\n\tSYS_RECVFROM      = 29  // { int recvfrom(int s, caddr_t buf, size_t len, \\\n\tSYS_ACCEPT        = 30  // { int accept(int s, caddr_t name, int *anamelen); }\n\tSYS_GETPEERNAME   = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }\n\tSYS_GETSOCKNAME   = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }\n\tSYS_ACCESS        = 33  // { int access(char *path, int flags); }\n\tSYS_CHFLAGS       = 34  // { int chflags(char *path, int flags); }\n\tSYS_FCHFLAGS      = 35  // { int fchflags(int fd, int flags); }\n\tSYS_SYNC          = 36  // { int sync(void); }\n\tSYS_KILL          = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID       = 39  // { pid_t getppid(void); }\n\tSYS_DUP           = 41  // { int dup(int fd); }\n\tSYS_PIPE          = 42  // { int pipe(void); }\n\tSYS_GETEGID       = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL        = 44  // { int profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE        = 45  // { int ktrace(const char *fname, int ops, int facs, \\\n\tSYS_GETGID        = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN      = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN      = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT          = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK   = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL         = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT        = 55  // { int reboot(int opt); }\n\tSYS_REVOKE        = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK       = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK      = 58  // { int readlink(char *path, char *buf, int count); }\n\tSYS_EXECVE        = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK         = 60  // { int umask(int newmask); } umask umask_args int\n\tSYS_CHROOT        = 61  // { int chroot(char *path); }\n\tSYS_MSYNC         = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK         = 66  // { pid_t vfork(void); }\n\tSYS_SBRK          = 69  // { int sbrk(int incr); }\n\tSYS_SSTK          = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP        = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT      = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE       = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE       = 78  // { int mincore(const void *addr, size_t len, \\\n\tSYS_GETGROUPS     = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS     = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP       = 81  // { int getpgrp(void); }\n\tSYS_SETPGID       = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER     = 83  // { int setitimer(u_int which, struct itimerval *itv, \\\n\tSYS_SWAPON        = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER     = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE = 89  // { int getdtablesize(void); }\n\tSYS_DUP2          = 90  // { int dup2(int from, int to); }\n\tSYS_FCNTL         = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT        = 93  // { int select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_FSYNC         = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY   = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET        = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT       = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY   = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND          = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT    = 105 // { int setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN        = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY  = 116 // { int gettimeofday(struct timeval *tp, \\\n\tSYS_GETRUSAGE     = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT    = 118 // { int getsockopt(int s, int level, int name, \\\n\tSYS_READV         = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV        = 121 // { int writev(int fd, struct iovec *iovp, \\\n\tSYS_SETTIMEOFDAY  = 122 // { int settimeofday(struct timeval *tv, \\\n\tSYS_FCHOWN        = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD        = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID      = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID      = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME        = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK         = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO        = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO        = 133 // { int sendto(int s, caddr_t buf, size_t len, \\\n\tSYS_SHUTDOWN      = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR    = 135 // { int socketpair(int domain, int type, int protocol, \\\n\tSYS_MKDIR         = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR         = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES        = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME       = 140 // { int adjtime(struct timeval *delta, \\\n\tSYS_SETSID        = 147 // { int setsid(void); }\n\tSYS_QUOTACTL      = 148 // { int quotactl(char *path, int cmd, int uid, \\\n\tSYS_STATFS        = 157 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS       = 158 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFH         = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }\n\tSYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }\n\tSYS_UNAME         = 164 // { int uname(struct utsname *name); }\n\tSYS_SYSARCH       = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO        = 166 // { int rtprio(int function, pid_t pid, \\\n\tSYS_EXTPREAD      = 173 // { ssize_t extpread(int fd, void *buf, \\\n\tSYS_EXTPWRITE     = 174 // { ssize_t extpwrite(int fd, const void *buf, \\\n\tSYS_NTP_ADJTIME   = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID        = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID       = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID       = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF      = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF     = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT     = 194 // { int getrlimit(u_int which, \\\n\tSYS_SETRLIMIT     = 195 // { int setrlimit(u_int which, \\\n\tSYS_MMAP          = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \\\n\t// SYS_NOSYS = 198;  // { int nosys(void); } __syscall __syscall_args int\n\tSYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, \\\n\tSYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }\n\tSYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, \\\n\tSYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE               = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \\\n\tSYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, \\\n\tSYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, \\\n\tSYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, \\\n\tSYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, \\\n\tSYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \\\n\tSYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, \\\n\tSYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, \\\n\tSYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \\\n\tSYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \\\n\tSYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                  = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \\\n\tSYS_ISSETUGID              = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \\\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\\\n\tSYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT               = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }\n\tSYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                 = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_YIELD                  = 321 // { int yield(void); }\n\tSYS_MLOCKALL               = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL             = 325 // { int munlockall(void); }\n\tSYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD            = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                   = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, \\\n\tSYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, \\\n\tSYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }\n\tSYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,\\\n\tSYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,\\\n\tSYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \\\n\tSYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \\\n\tSYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \\\n\tSYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \\\n\tSYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \\\n\tSYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \\\n\tSYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \\\n\tSYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \\\n\tSYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, \\\n\tSYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, \\\n\tSYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \\\n\tSYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                 = 362 // { int kqueue(void); }\n\tSYS_KEVENT                 = 363 // { int kevent(int fd, \\\n\tSYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS               = 391 // { int lchflags(char *path, int flags); }\n\tSYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \\\n\tSYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }\n\tSYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }\n\tSYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }\n\tSYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }\n\tSYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }\n\tSYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }\n\tSYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }\n\tSYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }\n\tSYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }\n\tSYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }\n\tSYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_CLOSEFROM              = 474 // { int closefrom(int fd); }\n\tSYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }\n\tSYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, \\\n\tSYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, \\\n\tSYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }\n\tSYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }\n\tSYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }\n\tSYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }\n\tSYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }\n\tSYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, \t\t\\\n\tSYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \\\n\tSYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,\t\\\n\tSYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, \t\\\n\tSYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, \\\n\tSYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \\\n\tSYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }\n\tSYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }\n\tSYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }\n\tSYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }\n\tSYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }\n\tSYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }\n\tSYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }\n\tSYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }\n\tSYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          \\\n\tSYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }\n\tSYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, \t\\\n\tSYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, \\\n\tSYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, \\\n\tSYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }\n\tSYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, \\\n\tSYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, \\\n\tSYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }\n\tSYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }\n\tSYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, \\\n\tSYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, \\\n\tSYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, \\\n\tSYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \\\n\tSYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \\\n\tSYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, \\\n\tSYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \\\n\tSYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }\n\tSYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }\n\tSYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }\n\tSYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, \\\n\tSYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, \\\n\tSYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, \\\n\tSYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_SWAPOFF                = 529 // { int swapoff(char *name); }\n\tSYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, \\\n\tSYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, \\\n\tSYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }\n\tSYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }\n\tSYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }\n\tSYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }\n\tSYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }\n\tSYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);}\n\tSYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }\n\tSYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }\n\tSYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }\n\tSYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }\n\tSYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }\n\tSYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, \\\n\tSYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }\n\tSYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }\n\tSYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go",
    "content": "// mksysnum_freebsd.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit \\\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, \\\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, \\\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, \\\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                   = 17  // { int obreak(char *nsize); } break \\\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, \\\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, \\\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, \\\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, \\\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, \\\n\tSYS_ACCEPT                   = 30  // { int accept(int s, \\\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, \\\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, \\\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_PIPE                     = 42  // { int pipe(void); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, \\\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int \\\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, \\\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, \\\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, \\\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, \\\n\tSYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args \\\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, \\\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise \\\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, \\\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, \\\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, \\\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, \\\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, \\\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct \\\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, \\\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, \\\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, \\\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, \\\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, \\\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, \\\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, \\\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, \\\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, \\\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, \\\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, \\\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, \\\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, \\\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, \\\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, \\\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, \\\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, \\\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, \\\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, \\\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, \\\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, \\\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, \\\n\tSYS_FREEBSD6_PREAD           = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \\\n\tSYS_FREEBSD6_PWRITE          = 174 // { ssize_t freebsd6_pwrite(int fd, \\\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, \\\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, \\\n\tSYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, \\\n\tSYS_FREEBSD6_MMAP            = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \\\n\tSYS_FREEBSD6_LSEEK           = 199 // { off_t freebsd6_lseek(int fd, int pad, \\\n\tSYS_FREEBSD6_TRUNCATE        = 200 // { int freebsd6_truncate(char *path, int pad, \\\n\tSYS_FREEBSD6_FTRUNCATE       = 201 // { int freebsd6_ftruncate(int fd, int pad, \\\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, \\\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, \\\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, \\\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, \\\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, \\\n\tSYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, \\\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, \\\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime( \\\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, \\\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, \\\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, \\\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct \\\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, \\\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( \\\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( \\\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,\\\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, \\\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, \\\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, \\\n\tSYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, \\\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, \\\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \\\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \\\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, \\\n\tSYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, \\\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, \\\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct \\\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, \\\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, \\\n\tSYS_AIO_RETURN               = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend( \\\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, \\\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_OAIO_READ                = 318 // { int oaio_read(struct oaiocb *aiocbp); }\n\tSYS_OAIO_WRITE               = 319 // { int oaio_write(struct oaiocb *aiocbp); }\n\tSYS_OLIO_LISTIO              = 320 // { int olio_listio(int mode, \\\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, \\\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct \\\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int \\\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, \\\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, \\\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, \\\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, \\\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, \\\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, \\\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, \\\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, \\\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, \\\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, \\\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, \\\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, \\\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, \\\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, \\\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( \\\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( \\\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, \\\n\tSYS_AIO_WAITCOMPLETE         = 359 // { int aio_waitcomplete( \\\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \\\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \\\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_KEVENT                   = 363 // { int kevent(int fd, \\\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, \\\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, \\\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, \\\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, \\\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, \\\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, \\\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, \\\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, \\\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, \\\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, \\\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, \\\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, \\\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, \\\n\tSYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, \\\n\tSYS_STATFS                   = 396 // { int statfs(char *path, \\\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, \\\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, \\\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, \\\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, \\\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, \\\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, \\\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( \\\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( \\\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( \\\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, \\\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, \\\n\tSYS_SIGRETURN                = 417 // { int sigreturn( \\\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext( \\\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, \\\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, \\\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, \\\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, \\\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, \\\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, \\\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, \\\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS__UMTX_LOCK               = 434 // { int _umtx_lock(struct umtx *umtx); }\n\tSYS__UMTX_UNLOCK             = 435 // { int _umtx_unlock(struct umtx *umtx); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, \\\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( \\\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( \\\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, \\\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend( \\\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, \\\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, \\\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( \\\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( \\\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, \\\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, \\\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, \\\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,\t\t\\\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\t\\\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\t\\\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\t\\\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, \\\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \\\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \\\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \\\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, \\\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, \\\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, \\\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, \\\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, \\\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \\\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, \\\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, \\\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, \\\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, \\\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, \\\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, \\\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, \\\n\tSYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, \\\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, \\\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, \\\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, \\\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, \\\n\tSYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, \\\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, \\\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, \\\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, \\\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, \\\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, \\\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, \\\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, \\\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, \\\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, \\\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, \\\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, \\\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, \\\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, \\\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, \\\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, \\\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, \\\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, \\\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, \\\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, \\\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, \\\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, \\\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, \\\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, \\\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, \\\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, \\\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, \\\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, \\\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \\\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \\\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, \\\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, \\\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// mksysnum_freebsd.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit \\\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, \\\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, \\\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, \\\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                   = 17  // { int obreak(char *nsize); } break \\\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, \\\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, \\\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, \\\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, \\\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, \\\n\tSYS_ACCEPT                   = 30  // { int accept(int s, \\\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, \\\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, \\\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_PIPE                     = 42  // { int pipe(void); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, \\\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int \\\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, \\\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, \\\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, \\\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, \\\n\tSYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args \\\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, \\\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise \\\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, \\\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, \\\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, \\\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, \\\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, \\\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct \\\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, \\\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, \\\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, \\\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, \\\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, \\\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, \\\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, \\\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, \\\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, \\\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, \\\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, \\\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, \\\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, \\\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, \\\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, \\\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, \\\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, \\\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, \\\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, \\\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, \\\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, \\\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, \\\n\tSYS_FREEBSD6_PREAD           = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \\\n\tSYS_FREEBSD6_PWRITE          = 174 // { ssize_t freebsd6_pwrite(int fd, \\\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, \\\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, \\\n\tSYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, \\\n\tSYS_FREEBSD6_MMAP            = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \\\n\tSYS_FREEBSD6_LSEEK           = 199 // { off_t freebsd6_lseek(int fd, int pad, \\\n\tSYS_FREEBSD6_TRUNCATE        = 200 // { int freebsd6_truncate(char *path, int pad, \\\n\tSYS_FREEBSD6_FTRUNCATE       = 201 // { int freebsd6_ftruncate(int fd, int pad, \\\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, \\\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, \\\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, \\\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, \\\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, \\\n\tSYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, \\\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, \\\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime( \\\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, \\\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, \\\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, \\\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct \\\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, \\\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( \\\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( \\\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,\\\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, \\\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, \\\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, \\\n\tSYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, \\\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, \\\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \\\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \\\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, \\\n\tSYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, \\\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, \\\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct \\\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, \\\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, \\\n\tSYS_AIO_RETURN               = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend( \\\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, \\\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_OAIO_READ                = 318 // { int oaio_read(struct oaiocb *aiocbp); }\n\tSYS_OAIO_WRITE               = 319 // { int oaio_write(struct oaiocb *aiocbp); }\n\tSYS_OLIO_LISTIO              = 320 // { int olio_listio(int mode, \\\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, \\\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct \\\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int \\\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, \\\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, \\\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, \\\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, \\\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, \\\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, \\\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, \\\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, \\\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, \\\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, \\\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, \\\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, \\\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, \\\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, \\\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( \\\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( \\\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, \\\n\tSYS_AIO_WAITCOMPLETE         = 359 // { int aio_waitcomplete( \\\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \\\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \\\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_KEVENT                   = 363 // { int kevent(int fd, \\\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, \\\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, \\\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, \\\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, \\\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, \\\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, \\\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, \\\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, \\\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, \\\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, \\\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, \\\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, \\\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, \\\n\tSYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, \\\n\tSYS_STATFS                   = 396 // { int statfs(char *path, \\\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, \\\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, \\\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, \\\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, \\\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, \\\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, \\\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( \\\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( \\\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( \\\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, \\\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, \\\n\tSYS_SIGRETURN                = 417 // { int sigreturn( \\\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext( \\\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, \\\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, \\\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, \\\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, \\\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, \\\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, \\\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, \\\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS__UMTX_LOCK               = 434 // { int _umtx_lock(struct umtx *umtx); }\n\tSYS__UMTX_UNLOCK             = 435 // { int _umtx_unlock(struct umtx *umtx); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, \\\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( \\\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( \\\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, \\\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend( \\\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, \\\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, \\\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( \\\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( \\\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, \\\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, \\\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, \\\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,\t\t\\\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\t\\\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\t\\\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\t\\\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, \\\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \\\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \\\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \\\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, \\\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, \\\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, \\\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, \\\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, \\\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \\\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, \\\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, \\\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, \\\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, \\\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, \\\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, \\\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, \\\n\tSYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, \\\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, \\\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, \\\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, \\\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, \\\n\tSYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, \\\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, \\\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, \\\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, \\\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, \\\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, \\\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, \\\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, \\\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, \\\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, \\\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, \\\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, \\\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, \\\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, \\\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, \\\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, \\\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, \\\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, \\\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, \\\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, \\\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, \\\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, \\\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, \\\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, \\\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, \\\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, \\\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, \\\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, \\\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \\\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \\\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, \\\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, \\\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// mksysnum_freebsd.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit \\\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, \\\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, \\\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, \\\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                   = 17  // { int obreak(char *nsize); } break \\\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, \\\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, \\\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, \\\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, \\\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, \\\n\tSYS_ACCEPT                   = 30  // { int accept(int s, \\\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, \\\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, \\\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_PIPE                     = 42  // { int pipe(void); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, \\\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int \\\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, \\\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, \\\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, \\\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, \\\n\tSYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args \\\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, \\\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise \\\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, \\\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, \\\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, \\\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, \\\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, \\\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct \\\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, \\\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, \\\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, \\\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, \\\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, \\\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, \\\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, \\\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, \\\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, \\\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, \\\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, \\\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, \\\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, \\\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, \\\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, \\\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, \\\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, \\\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, \\\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, \\\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, \\\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, \\\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, \\\n\tSYS_FREEBSD6_PREAD           = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \\\n\tSYS_FREEBSD6_PWRITE          = 174 // { ssize_t freebsd6_pwrite(int fd, \\\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, \\\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, \\\n\tSYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, \\\n\tSYS_FREEBSD6_MMAP            = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \\\n\tSYS_FREEBSD6_LSEEK           = 199 // { off_t freebsd6_lseek(int fd, int pad, \\\n\tSYS_FREEBSD6_TRUNCATE        = 200 // { int freebsd6_truncate(char *path, int pad, \\\n\tSYS_FREEBSD6_FTRUNCATE       = 201 // { int freebsd6_ftruncate(int fd, int pad, \\\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, \\\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, \\\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, \\\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, \\\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, \\\n\tSYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, \\\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, \\\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime( \\\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, \\\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, \\\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, \\\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct \\\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, \\\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( \\\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( \\\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,\\\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, \\\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, \\\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, \\\n\tSYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, \\\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, \\\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \\\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \\\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, \\\n\tSYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, \\\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, \\\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct \\\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, \\\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, \\\n\tSYS_AIO_RETURN               = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend( \\\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, \\\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_OAIO_READ                = 318 // { int oaio_read(struct oaiocb *aiocbp); }\n\tSYS_OAIO_WRITE               = 319 // { int oaio_write(struct oaiocb *aiocbp); }\n\tSYS_OLIO_LISTIO              = 320 // { int olio_listio(int mode, \\\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, \\\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct \\\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int \\\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, \\\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, \\\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, \\\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, \\\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, \\\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, \\\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, \\\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, \\\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, \\\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, \\\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, \\\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, \\\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, \\\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, \\\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( \\\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( \\\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, \\\n\tSYS_AIO_WAITCOMPLETE         = 359 // { int aio_waitcomplete( \\\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \\\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \\\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_KEVENT                   = 363 // { int kevent(int fd, \\\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, \\\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, \\\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, \\\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, \\\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, \\\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, \\\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, \\\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, \\\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, \\\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, \\\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, \\\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, \\\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, \\\n\tSYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, \\\n\tSYS_STATFS                   = 396 // { int statfs(char *path, \\\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, \\\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, \\\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, \\\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, \\\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, \\\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, \\\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( \\\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( \\\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( \\\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, \\\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, \\\n\tSYS_SIGRETURN                = 417 // { int sigreturn( \\\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext( \\\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, \\\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, \\\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, \\\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, \\\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, \\\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, \\\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, \\\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS__UMTX_LOCK               = 434 // { int _umtx_lock(struct umtx *umtx); }\n\tSYS__UMTX_UNLOCK             = 435 // { int _umtx_unlock(struct umtx *umtx); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, \\\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( \\\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( \\\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, \\\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend( \\\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, \\\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, \\\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( \\\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( \\\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, \\\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, \\\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, \\\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,\t\t\\\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\t\\\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\t\\\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\t\\\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, \\\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \\\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \\\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \\\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, \\\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, \\\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, \\\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, \\\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, \\\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \\\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, \\\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, \\\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, \\\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, \\\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, \\\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, \\\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, \\\n\tSYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, \\\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, \\\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, \\\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, \\\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, \\\n\tSYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, \\\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, \\\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, \\\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, \\\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, \\\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, \\\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, \\\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, \\\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, \\\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, \\\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, \\\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, \\\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, \\\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, \\\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, \\\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, \\\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, \\\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, \\\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, \\\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, \\\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, \\\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, \\\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, \\\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, \\\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, \\\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, \\\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, \\\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, \\\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \\\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \\\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, \\\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, \\\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL        = 0\n\tSYS_EXIT                   = 1\n\tSYS_FORK                   = 2\n\tSYS_READ                   = 3\n\tSYS_WRITE                  = 4\n\tSYS_OPEN                   = 5\n\tSYS_CLOSE                  = 6\n\tSYS_WAITPID                = 7\n\tSYS_CREAT                  = 8\n\tSYS_LINK                   = 9\n\tSYS_UNLINK                 = 10\n\tSYS_EXECVE                 = 11\n\tSYS_CHDIR                  = 12\n\tSYS_TIME                   = 13\n\tSYS_MKNOD                  = 14\n\tSYS_CHMOD                  = 15\n\tSYS_LCHOWN                 = 16\n\tSYS_BREAK                  = 17\n\tSYS_OLDSTAT                = 18\n\tSYS_LSEEK                  = 19\n\tSYS_GETPID                 = 20\n\tSYS_MOUNT                  = 21\n\tSYS_UMOUNT                 = 22\n\tSYS_SETUID                 = 23\n\tSYS_GETUID                 = 24\n\tSYS_STIME                  = 25\n\tSYS_PTRACE                 = 26\n\tSYS_ALARM                  = 27\n\tSYS_OLDFSTAT               = 28\n\tSYS_PAUSE                  = 29\n\tSYS_UTIME                  = 30\n\tSYS_STTY                   = 31\n\tSYS_GTTY                   = 32\n\tSYS_ACCESS                 = 33\n\tSYS_NICE                   = 34\n\tSYS_FTIME                  = 35\n\tSYS_SYNC                   = 36\n\tSYS_KILL                   = 37\n\tSYS_RENAME                 = 38\n\tSYS_MKDIR                  = 39\n\tSYS_RMDIR                  = 40\n\tSYS_DUP                    = 41\n\tSYS_PIPE                   = 42\n\tSYS_TIMES                  = 43\n\tSYS_PROF                   = 44\n\tSYS_BRK                    = 45\n\tSYS_SETGID                 = 46\n\tSYS_GETGID                 = 47\n\tSYS_SIGNAL                 = 48\n\tSYS_GETEUID                = 49\n\tSYS_GETEGID                = 50\n\tSYS_ACCT                   = 51\n\tSYS_UMOUNT2                = 52\n\tSYS_LOCK                   = 53\n\tSYS_IOCTL                  = 54\n\tSYS_FCNTL                  = 55\n\tSYS_MPX                    = 56\n\tSYS_SETPGID                = 57\n\tSYS_ULIMIT                 = 58\n\tSYS_OLDOLDUNAME            = 59\n\tSYS_UMASK                  = 60\n\tSYS_CHROOT                 = 61\n\tSYS_USTAT                  = 62\n\tSYS_DUP2                   = 63\n\tSYS_GETPPID                = 64\n\tSYS_GETPGRP                = 65\n\tSYS_SETSID                 = 66\n\tSYS_SIGACTION              = 67\n\tSYS_SGETMASK               = 68\n\tSYS_SSETMASK               = 69\n\tSYS_SETREUID               = 70\n\tSYS_SETREGID               = 71\n\tSYS_SIGSUSPEND             = 72\n\tSYS_SIGPENDING             = 73\n\tSYS_SETHOSTNAME            = 74\n\tSYS_SETRLIMIT              = 75\n\tSYS_GETRLIMIT              = 76\n\tSYS_GETRUSAGE              = 77\n\tSYS_GETTIMEOFDAY           = 78\n\tSYS_SETTIMEOFDAY           = 79\n\tSYS_GETGROUPS              = 80\n\tSYS_SETGROUPS              = 81\n\tSYS_SELECT                 = 82\n\tSYS_SYMLINK                = 83\n\tSYS_OLDLSTAT               = 84\n\tSYS_READLINK               = 85\n\tSYS_USELIB                 = 86\n\tSYS_SWAPON                 = 87\n\tSYS_REBOOT                 = 88\n\tSYS_READDIR                = 89\n\tSYS_MMAP                   = 90\n\tSYS_MUNMAP                 = 91\n\tSYS_TRUNCATE               = 92\n\tSYS_FTRUNCATE              = 93\n\tSYS_FCHMOD                 = 94\n\tSYS_FCHOWN                 = 95\n\tSYS_GETPRIORITY            = 96\n\tSYS_SETPRIORITY            = 97\n\tSYS_PROFIL                 = 98\n\tSYS_STATFS                 = 99\n\tSYS_FSTATFS                = 100\n\tSYS_IOPERM                 = 101\n\tSYS_SOCKETCALL             = 102\n\tSYS_SYSLOG                 = 103\n\tSYS_SETITIMER              = 104\n\tSYS_GETITIMER              = 105\n\tSYS_STAT                   = 106\n\tSYS_LSTAT                  = 107\n\tSYS_FSTAT                  = 108\n\tSYS_OLDUNAME               = 109\n\tSYS_IOPL                   = 110\n\tSYS_VHANGUP                = 111\n\tSYS_IDLE                   = 112\n\tSYS_VM86OLD                = 113\n\tSYS_WAIT4                  = 114\n\tSYS_SWAPOFF                = 115\n\tSYS_SYSINFO                = 116\n\tSYS_IPC                    = 117\n\tSYS_FSYNC                  = 118\n\tSYS_SIGRETURN              = 119\n\tSYS_CLONE                  = 120\n\tSYS_SETDOMAINNAME          = 121\n\tSYS_UNAME                  = 122\n\tSYS_MODIFY_LDT             = 123\n\tSYS_ADJTIMEX               = 124\n\tSYS_MPROTECT               = 125\n\tSYS_SIGPROCMASK            = 126\n\tSYS_CREATE_MODULE          = 127\n\tSYS_INIT_MODULE            = 128\n\tSYS_DELETE_MODULE          = 129\n\tSYS_GET_KERNEL_SYMS        = 130\n\tSYS_QUOTACTL               = 131\n\tSYS_GETPGID                = 132\n\tSYS_FCHDIR                 = 133\n\tSYS_BDFLUSH                = 134\n\tSYS_SYSFS                  = 135\n\tSYS_PERSONALITY            = 136\n\tSYS_AFS_SYSCALL            = 137\n\tSYS_SETFSUID               = 138\n\tSYS_SETFSGID               = 139\n\tSYS__LLSEEK                = 140\n\tSYS_GETDENTS               = 141\n\tSYS__NEWSELECT             = 142\n\tSYS_FLOCK                  = 143\n\tSYS_MSYNC                  = 144\n\tSYS_READV                  = 145\n\tSYS_WRITEV                 = 146\n\tSYS_GETSID                 = 147\n\tSYS_FDATASYNC              = 148\n\tSYS__SYSCTL                = 149\n\tSYS_MLOCK                  = 150\n\tSYS_MUNLOCK                = 151\n\tSYS_MLOCKALL               = 152\n\tSYS_MUNLOCKALL             = 153\n\tSYS_SCHED_SETPARAM         = 154\n\tSYS_SCHED_GETPARAM         = 155\n\tSYS_SCHED_SETSCHEDULER     = 156\n\tSYS_SCHED_GETSCHEDULER     = 157\n\tSYS_SCHED_YIELD            = 158\n\tSYS_SCHED_GET_PRIORITY_MAX = 159\n\tSYS_SCHED_GET_PRIORITY_MIN = 160\n\tSYS_SCHED_RR_GET_INTERVAL  = 161\n\tSYS_NANOSLEEP              = 162\n\tSYS_MREMAP                 = 163\n\tSYS_SETRESUID              = 164\n\tSYS_GETRESUID              = 165\n\tSYS_VM86                   = 166\n\tSYS_QUERY_MODULE           = 167\n\tSYS_POLL                   = 168\n\tSYS_NFSSERVCTL             = 169\n\tSYS_SETRESGID              = 170\n\tSYS_GETRESGID              = 171\n\tSYS_PRCTL                  = 172\n\tSYS_RT_SIGRETURN           = 173\n\tSYS_RT_SIGACTION           = 174\n\tSYS_RT_SIGPROCMASK         = 175\n\tSYS_RT_SIGPENDING          = 176\n\tSYS_RT_SIGTIMEDWAIT        = 177\n\tSYS_RT_SIGQUEUEINFO        = 178\n\tSYS_RT_SIGSUSPEND          = 179\n\tSYS_PREAD64                = 180\n\tSYS_PWRITE64               = 181\n\tSYS_CHOWN                  = 182\n\tSYS_GETCWD                 = 183\n\tSYS_CAPGET                 = 184\n\tSYS_CAPSET                 = 185\n\tSYS_SIGALTSTACK            = 186\n\tSYS_SENDFILE               = 187\n\tSYS_GETPMSG                = 188\n\tSYS_PUTPMSG                = 189\n\tSYS_VFORK                  = 190\n\tSYS_UGETRLIMIT             = 191\n\tSYS_MMAP2                  = 192\n\tSYS_TRUNCATE64             = 193\n\tSYS_FTRUNCATE64            = 194\n\tSYS_STAT64                 = 195\n\tSYS_LSTAT64                = 196\n\tSYS_FSTAT64                = 197\n\tSYS_LCHOWN32               = 198\n\tSYS_GETUID32               = 199\n\tSYS_GETGID32               = 200\n\tSYS_GETEUID32              = 201\n\tSYS_GETEGID32              = 202\n\tSYS_SETREUID32             = 203\n\tSYS_SETREGID32             = 204\n\tSYS_GETGROUPS32            = 205\n\tSYS_SETGROUPS32            = 206\n\tSYS_FCHOWN32               = 207\n\tSYS_SETRESUID32            = 208\n\tSYS_GETRESUID32            = 209\n\tSYS_SETRESGID32            = 210\n\tSYS_GETRESGID32            = 211\n\tSYS_CHOWN32                = 212\n\tSYS_SETUID32               = 213\n\tSYS_SETGID32               = 214\n\tSYS_SETFSUID32             = 215\n\tSYS_SETFSGID32             = 216\n\tSYS_PIVOT_ROOT             = 217\n\tSYS_MINCORE                = 218\n\tSYS_MADVISE                = 219\n\tSYS_GETDENTS64             = 220\n\tSYS_FCNTL64                = 221\n\tSYS_GETTID                 = 224\n\tSYS_READAHEAD              = 225\n\tSYS_SETXATTR               = 226\n\tSYS_LSETXATTR              = 227\n\tSYS_FSETXATTR              = 228\n\tSYS_GETXATTR               = 229\n\tSYS_LGETXATTR              = 230\n\tSYS_FGETXATTR              = 231\n\tSYS_LISTXATTR              = 232\n\tSYS_LLISTXATTR             = 233\n\tSYS_FLISTXATTR             = 234\n\tSYS_REMOVEXATTR            = 235\n\tSYS_LREMOVEXATTR           = 236\n\tSYS_FREMOVEXATTR           = 237\n\tSYS_TKILL                  = 238\n\tSYS_SENDFILE64             = 239\n\tSYS_FUTEX                  = 240\n\tSYS_SCHED_SETAFFINITY      = 241\n\tSYS_SCHED_GETAFFINITY      = 242\n\tSYS_SET_THREAD_AREA        = 243\n\tSYS_GET_THREAD_AREA        = 244\n\tSYS_IO_SETUP               = 245\n\tSYS_IO_DESTROY             = 246\n\tSYS_IO_GETEVENTS           = 247\n\tSYS_IO_SUBMIT              = 248\n\tSYS_IO_CANCEL              = 249\n\tSYS_FADVISE64              = 250\n\tSYS_EXIT_GROUP             = 252\n\tSYS_LOOKUP_DCOOKIE         = 253\n\tSYS_EPOLL_CREATE           = 254\n\tSYS_EPOLL_CTL              = 255\n\tSYS_EPOLL_WAIT             = 256\n\tSYS_REMAP_FILE_PAGES       = 257\n\tSYS_SET_TID_ADDRESS        = 258\n\tSYS_TIMER_CREATE           = 259\n\tSYS_TIMER_SETTIME          = 260\n\tSYS_TIMER_GETTIME          = 261\n\tSYS_TIMER_GETOVERRUN       = 262\n\tSYS_TIMER_DELETE           = 263\n\tSYS_CLOCK_SETTIME          = 264\n\tSYS_CLOCK_GETTIME          = 265\n\tSYS_CLOCK_GETRES           = 266\n\tSYS_CLOCK_NANOSLEEP        = 267\n\tSYS_STATFS64               = 268\n\tSYS_FSTATFS64              = 269\n\tSYS_TGKILL                 = 270\n\tSYS_UTIMES                 = 271\n\tSYS_FADVISE64_64           = 272\n\tSYS_VSERVER                = 273\n\tSYS_MBIND                  = 274\n\tSYS_GET_MEMPOLICY          = 275\n\tSYS_SET_MEMPOLICY          = 276\n\tSYS_MQ_OPEN                = 277\n\tSYS_MQ_UNLINK              = 278\n\tSYS_MQ_TIMEDSEND           = 279\n\tSYS_MQ_TIMEDRECEIVE        = 280\n\tSYS_MQ_NOTIFY              = 281\n\tSYS_MQ_GETSETATTR          = 282\n\tSYS_KEXEC_LOAD             = 283\n\tSYS_WAITID                 = 284\n\tSYS_ADD_KEY                = 286\n\tSYS_REQUEST_KEY            = 287\n\tSYS_KEYCTL                 = 288\n\tSYS_IOPRIO_SET             = 289\n\tSYS_IOPRIO_GET             = 290\n\tSYS_INOTIFY_INIT           = 291\n\tSYS_INOTIFY_ADD_WATCH      = 292\n\tSYS_INOTIFY_RM_WATCH       = 293\n\tSYS_MIGRATE_PAGES          = 294\n\tSYS_OPENAT                 = 295\n\tSYS_MKDIRAT                = 296\n\tSYS_MKNODAT                = 297\n\tSYS_FCHOWNAT               = 298\n\tSYS_FUTIMESAT              = 299\n\tSYS_FSTATAT64              = 300\n\tSYS_UNLINKAT               = 301\n\tSYS_RENAMEAT               = 302\n\tSYS_LINKAT                 = 303\n\tSYS_SYMLINKAT              = 304\n\tSYS_READLINKAT             = 305\n\tSYS_FCHMODAT               = 306\n\tSYS_FACCESSAT              = 307\n\tSYS_PSELECT6               = 308\n\tSYS_PPOLL                  = 309\n\tSYS_UNSHARE                = 310\n\tSYS_SET_ROBUST_LIST        = 311\n\tSYS_GET_ROBUST_LIST        = 312\n\tSYS_SPLICE                 = 313\n\tSYS_SYNC_FILE_RANGE        = 314\n\tSYS_TEE                    = 315\n\tSYS_VMSPLICE               = 316\n\tSYS_MOVE_PAGES             = 317\n\tSYS_GETCPU                 = 318\n\tSYS_EPOLL_PWAIT            = 319\n\tSYS_UTIMENSAT              = 320\n\tSYS_SIGNALFD               = 321\n\tSYS_TIMERFD_CREATE         = 322\n\tSYS_EVENTFD                = 323\n\tSYS_FALLOCATE              = 324\n\tSYS_TIMERFD_SETTIME        = 325\n\tSYS_TIMERFD_GETTIME        = 326\n\tSYS_SIGNALFD4              = 327\n\tSYS_EVENTFD2               = 328\n\tSYS_EPOLL_CREATE1          = 329\n\tSYS_DUP3                   = 330\n\tSYS_PIPE2                  = 331\n\tSYS_INOTIFY_INIT1          = 332\n\tSYS_PREADV                 = 333\n\tSYS_PWRITEV                = 334\n\tSYS_RT_TGSIGQUEUEINFO      = 335\n\tSYS_PERF_EVENT_OPEN        = 336\n\tSYS_RECVMMSG               = 337\n\tSYS_FANOTIFY_INIT          = 338\n\tSYS_FANOTIFY_MARK          = 339\n\tSYS_PRLIMIT64              = 340\n\tSYS_NAME_TO_HANDLE_AT      = 341\n\tSYS_OPEN_BY_HANDLE_AT      = 342\n\tSYS_CLOCK_ADJTIME          = 343\n\tSYS_SYNCFS                 = 344\n\tSYS_SENDMMSG               = 345\n\tSYS_SETNS                  = 346\n\tSYS_PROCESS_VM_READV       = 347\n\tSYS_PROCESS_VM_WRITEV      = 348\n\tSYS_KCMP                   = 349\n\tSYS_FINIT_MODULE           = 350\n\tSYS_SCHED_SETATTR          = 351\n\tSYS_SCHED_GETATTR          = 352\n\tSYS_RENAMEAT2              = 353\n\tSYS_SECCOMP                = 354\n\tSYS_GETRANDOM              = 355\n\tSYS_MEMFD_CREATE           = 356\n\tSYS_BPF                    = 357\n\tSYS_EXECVEAT               = 358\n\tSYS_SOCKET                 = 359\n\tSYS_SOCKETPAIR             = 360\n\tSYS_BIND                   = 361\n\tSYS_CONNECT                = 362\n\tSYS_LISTEN                 = 363\n\tSYS_ACCEPT4                = 364\n\tSYS_GETSOCKOPT             = 365\n\tSYS_SETSOCKOPT             = 366\n\tSYS_GETSOCKNAME            = 367\n\tSYS_GETPEERNAME            = 368\n\tSYS_SENDTO                 = 369\n\tSYS_SENDMSG                = 370\n\tSYS_RECVFROM               = 371\n\tSYS_RECVMSG                = 372\n\tSYS_SHUTDOWN               = 373\n\tSYS_USERFAULTFD            = 374\n\tSYS_MEMBARRIER             = 375\n\tSYS_MLOCK2                 = 376\n\tSYS_COPY_FILE_RANGE        = 377\n\tSYS_PREADV2                = 378\n\tSYS_PWRITEV2               = 379\n\tSYS_PKEY_MPROTECT          = 380\n\tSYS_PKEY_ALLOC             = 381\n\tSYS_PKEY_FREE              = 382\n\tSYS_STATX                  = 383\n\tSYS_ARCH_PRCTL             = 384\n\tSYS_IO_PGETEVENTS          = 385\n\tSYS_RSEQ                   = 386\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,linux\n\npackage unix\n\nconst (\n\tSYS_READ                   = 0\n\tSYS_WRITE                  = 1\n\tSYS_OPEN                   = 2\n\tSYS_CLOSE                  = 3\n\tSYS_STAT                   = 4\n\tSYS_FSTAT                  = 5\n\tSYS_LSTAT                  = 6\n\tSYS_POLL                   = 7\n\tSYS_LSEEK                  = 8\n\tSYS_MMAP                   = 9\n\tSYS_MPROTECT               = 10\n\tSYS_MUNMAP                 = 11\n\tSYS_BRK                    = 12\n\tSYS_RT_SIGACTION           = 13\n\tSYS_RT_SIGPROCMASK         = 14\n\tSYS_RT_SIGRETURN           = 15\n\tSYS_IOCTL                  = 16\n\tSYS_PREAD64                = 17\n\tSYS_PWRITE64               = 18\n\tSYS_READV                  = 19\n\tSYS_WRITEV                 = 20\n\tSYS_ACCESS                 = 21\n\tSYS_PIPE                   = 22\n\tSYS_SELECT                 = 23\n\tSYS_SCHED_YIELD            = 24\n\tSYS_MREMAP                 = 25\n\tSYS_MSYNC                  = 26\n\tSYS_MINCORE                = 27\n\tSYS_MADVISE                = 28\n\tSYS_SHMGET                 = 29\n\tSYS_SHMAT                  = 30\n\tSYS_SHMCTL                 = 31\n\tSYS_DUP                    = 32\n\tSYS_DUP2                   = 33\n\tSYS_PAUSE                  = 34\n\tSYS_NANOSLEEP              = 35\n\tSYS_GETITIMER              = 36\n\tSYS_ALARM                  = 37\n\tSYS_SETITIMER              = 38\n\tSYS_GETPID                 = 39\n\tSYS_SENDFILE               = 40\n\tSYS_SOCKET                 = 41\n\tSYS_CONNECT                = 42\n\tSYS_ACCEPT                 = 43\n\tSYS_SENDTO                 = 44\n\tSYS_RECVFROM               = 45\n\tSYS_SENDMSG                = 46\n\tSYS_RECVMSG                = 47\n\tSYS_SHUTDOWN               = 48\n\tSYS_BIND                   = 49\n\tSYS_LISTEN                 = 50\n\tSYS_GETSOCKNAME            = 51\n\tSYS_GETPEERNAME            = 52\n\tSYS_SOCKETPAIR             = 53\n\tSYS_SETSOCKOPT             = 54\n\tSYS_GETSOCKOPT             = 55\n\tSYS_CLONE                  = 56\n\tSYS_FORK                   = 57\n\tSYS_VFORK                  = 58\n\tSYS_EXECVE                 = 59\n\tSYS_EXIT                   = 60\n\tSYS_WAIT4                  = 61\n\tSYS_KILL                   = 62\n\tSYS_UNAME                  = 63\n\tSYS_SEMGET                 = 64\n\tSYS_SEMOP                  = 65\n\tSYS_SEMCTL                 = 66\n\tSYS_SHMDT                  = 67\n\tSYS_MSGGET                 = 68\n\tSYS_MSGSND                 = 69\n\tSYS_MSGRCV                 = 70\n\tSYS_MSGCTL                 = 71\n\tSYS_FCNTL                  = 72\n\tSYS_FLOCK                  = 73\n\tSYS_FSYNC                  = 74\n\tSYS_FDATASYNC              = 75\n\tSYS_TRUNCATE               = 76\n\tSYS_FTRUNCATE              = 77\n\tSYS_GETDENTS               = 78\n\tSYS_GETCWD                 = 79\n\tSYS_CHDIR                  = 80\n\tSYS_FCHDIR                 = 81\n\tSYS_RENAME                 = 82\n\tSYS_MKDIR                  = 83\n\tSYS_RMDIR                  = 84\n\tSYS_CREAT                  = 85\n\tSYS_LINK                   = 86\n\tSYS_UNLINK                 = 87\n\tSYS_SYMLINK                = 88\n\tSYS_READLINK               = 89\n\tSYS_CHMOD                  = 90\n\tSYS_FCHMOD                 = 91\n\tSYS_CHOWN                  = 92\n\tSYS_FCHOWN                 = 93\n\tSYS_LCHOWN                 = 94\n\tSYS_UMASK                  = 95\n\tSYS_GETTIMEOFDAY           = 96\n\tSYS_GETRLIMIT              = 97\n\tSYS_GETRUSAGE              = 98\n\tSYS_SYSINFO                = 99\n\tSYS_TIMES                  = 100\n\tSYS_PTRACE                 = 101\n\tSYS_GETUID                 = 102\n\tSYS_SYSLOG                 = 103\n\tSYS_GETGID                 = 104\n\tSYS_SETUID                 = 105\n\tSYS_SETGID                 = 106\n\tSYS_GETEUID                = 107\n\tSYS_GETEGID                = 108\n\tSYS_SETPGID                = 109\n\tSYS_GETPPID                = 110\n\tSYS_GETPGRP                = 111\n\tSYS_SETSID                 = 112\n\tSYS_SETREUID               = 113\n\tSYS_SETREGID               = 114\n\tSYS_GETGROUPS              = 115\n\tSYS_SETGROUPS              = 116\n\tSYS_SETRESUID              = 117\n\tSYS_GETRESUID              = 118\n\tSYS_SETRESGID              = 119\n\tSYS_GETRESGID              = 120\n\tSYS_GETPGID                = 121\n\tSYS_SETFSUID               = 122\n\tSYS_SETFSGID               = 123\n\tSYS_GETSID                 = 124\n\tSYS_CAPGET                 = 125\n\tSYS_CAPSET                 = 126\n\tSYS_RT_SIGPENDING          = 127\n\tSYS_RT_SIGTIMEDWAIT        = 128\n\tSYS_RT_SIGQUEUEINFO        = 129\n\tSYS_RT_SIGSUSPEND          = 130\n\tSYS_SIGALTSTACK            = 131\n\tSYS_UTIME                  = 132\n\tSYS_MKNOD                  = 133\n\tSYS_USELIB                 = 134\n\tSYS_PERSONALITY            = 135\n\tSYS_USTAT                  = 136\n\tSYS_STATFS                 = 137\n\tSYS_FSTATFS                = 138\n\tSYS_SYSFS                  = 139\n\tSYS_GETPRIORITY            = 140\n\tSYS_SETPRIORITY            = 141\n\tSYS_SCHED_SETPARAM         = 142\n\tSYS_SCHED_GETPARAM         = 143\n\tSYS_SCHED_SETSCHEDULER     = 144\n\tSYS_SCHED_GETSCHEDULER     = 145\n\tSYS_SCHED_GET_PRIORITY_MAX = 146\n\tSYS_SCHED_GET_PRIORITY_MIN = 147\n\tSYS_SCHED_RR_GET_INTERVAL  = 148\n\tSYS_MLOCK                  = 149\n\tSYS_MUNLOCK                = 150\n\tSYS_MLOCKALL               = 151\n\tSYS_MUNLOCKALL             = 152\n\tSYS_VHANGUP                = 153\n\tSYS_MODIFY_LDT             = 154\n\tSYS_PIVOT_ROOT             = 155\n\tSYS__SYSCTL                = 156\n\tSYS_PRCTL                  = 157\n\tSYS_ARCH_PRCTL             = 158\n\tSYS_ADJTIMEX               = 159\n\tSYS_SETRLIMIT              = 160\n\tSYS_CHROOT                 = 161\n\tSYS_SYNC                   = 162\n\tSYS_ACCT                   = 163\n\tSYS_SETTIMEOFDAY           = 164\n\tSYS_MOUNT                  = 165\n\tSYS_UMOUNT2                = 166\n\tSYS_SWAPON                 = 167\n\tSYS_SWAPOFF                = 168\n\tSYS_REBOOT                 = 169\n\tSYS_SETHOSTNAME            = 170\n\tSYS_SETDOMAINNAME          = 171\n\tSYS_IOPL                   = 172\n\tSYS_IOPERM                 = 173\n\tSYS_CREATE_MODULE          = 174\n\tSYS_INIT_MODULE            = 175\n\tSYS_DELETE_MODULE          = 176\n\tSYS_GET_KERNEL_SYMS        = 177\n\tSYS_QUERY_MODULE           = 178\n\tSYS_QUOTACTL               = 179\n\tSYS_NFSSERVCTL             = 180\n\tSYS_GETPMSG                = 181\n\tSYS_PUTPMSG                = 182\n\tSYS_AFS_SYSCALL            = 183\n\tSYS_TUXCALL                = 184\n\tSYS_SECURITY               = 185\n\tSYS_GETTID                 = 186\n\tSYS_READAHEAD              = 187\n\tSYS_SETXATTR               = 188\n\tSYS_LSETXATTR              = 189\n\tSYS_FSETXATTR              = 190\n\tSYS_GETXATTR               = 191\n\tSYS_LGETXATTR              = 192\n\tSYS_FGETXATTR              = 193\n\tSYS_LISTXATTR              = 194\n\tSYS_LLISTXATTR             = 195\n\tSYS_FLISTXATTR             = 196\n\tSYS_REMOVEXATTR            = 197\n\tSYS_LREMOVEXATTR           = 198\n\tSYS_FREMOVEXATTR           = 199\n\tSYS_TKILL                  = 200\n\tSYS_TIME                   = 201\n\tSYS_FUTEX                  = 202\n\tSYS_SCHED_SETAFFINITY      = 203\n\tSYS_SCHED_GETAFFINITY      = 204\n\tSYS_SET_THREAD_AREA        = 205\n\tSYS_IO_SETUP               = 206\n\tSYS_IO_DESTROY             = 207\n\tSYS_IO_GETEVENTS           = 208\n\tSYS_IO_SUBMIT              = 209\n\tSYS_IO_CANCEL              = 210\n\tSYS_GET_THREAD_AREA        = 211\n\tSYS_LOOKUP_DCOOKIE         = 212\n\tSYS_EPOLL_CREATE           = 213\n\tSYS_EPOLL_CTL_OLD          = 214\n\tSYS_EPOLL_WAIT_OLD         = 215\n\tSYS_REMAP_FILE_PAGES       = 216\n\tSYS_GETDENTS64             = 217\n\tSYS_SET_TID_ADDRESS        = 218\n\tSYS_RESTART_SYSCALL        = 219\n\tSYS_SEMTIMEDOP             = 220\n\tSYS_FADVISE64              = 221\n\tSYS_TIMER_CREATE           = 222\n\tSYS_TIMER_SETTIME          = 223\n\tSYS_TIMER_GETTIME          = 224\n\tSYS_TIMER_GETOVERRUN       = 225\n\tSYS_TIMER_DELETE           = 226\n\tSYS_CLOCK_SETTIME          = 227\n\tSYS_CLOCK_GETTIME          = 228\n\tSYS_CLOCK_GETRES           = 229\n\tSYS_CLOCK_NANOSLEEP        = 230\n\tSYS_EXIT_GROUP             = 231\n\tSYS_EPOLL_WAIT             = 232\n\tSYS_EPOLL_CTL              = 233\n\tSYS_TGKILL                 = 234\n\tSYS_UTIMES                 = 235\n\tSYS_VSERVER                = 236\n\tSYS_MBIND                  = 237\n\tSYS_SET_MEMPOLICY          = 238\n\tSYS_GET_MEMPOLICY          = 239\n\tSYS_MQ_OPEN                = 240\n\tSYS_MQ_UNLINK              = 241\n\tSYS_MQ_TIMEDSEND           = 242\n\tSYS_MQ_TIMEDRECEIVE        = 243\n\tSYS_MQ_NOTIFY              = 244\n\tSYS_MQ_GETSETATTR          = 245\n\tSYS_KEXEC_LOAD             = 246\n\tSYS_WAITID                 = 247\n\tSYS_ADD_KEY                = 248\n\tSYS_REQUEST_KEY            = 249\n\tSYS_KEYCTL                 = 250\n\tSYS_IOPRIO_SET             = 251\n\tSYS_IOPRIO_GET             = 252\n\tSYS_INOTIFY_INIT           = 253\n\tSYS_INOTIFY_ADD_WATCH      = 254\n\tSYS_INOTIFY_RM_WATCH       = 255\n\tSYS_MIGRATE_PAGES          = 256\n\tSYS_OPENAT                 = 257\n\tSYS_MKDIRAT                = 258\n\tSYS_MKNODAT                = 259\n\tSYS_FCHOWNAT               = 260\n\tSYS_FUTIMESAT              = 261\n\tSYS_NEWFSTATAT             = 262\n\tSYS_UNLINKAT               = 263\n\tSYS_RENAMEAT               = 264\n\tSYS_LINKAT                 = 265\n\tSYS_SYMLINKAT              = 266\n\tSYS_READLINKAT             = 267\n\tSYS_FCHMODAT               = 268\n\tSYS_FACCESSAT              = 269\n\tSYS_PSELECT6               = 270\n\tSYS_PPOLL                  = 271\n\tSYS_UNSHARE                = 272\n\tSYS_SET_ROBUST_LIST        = 273\n\tSYS_GET_ROBUST_LIST        = 274\n\tSYS_SPLICE                 = 275\n\tSYS_TEE                    = 276\n\tSYS_SYNC_FILE_RANGE        = 277\n\tSYS_VMSPLICE               = 278\n\tSYS_MOVE_PAGES             = 279\n\tSYS_UTIMENSAT              = 280\n\tSYS_EPOLL_PWAIT            = 281\n\tSYS_SIGNALFD               = 282\n\tSYS_TIMERFD_CREATE         = 283\n\tSYS_EVENTFD                = 284\n\tSYS_FALLOCATE              = 285\n\tSYS_TIMERFD_SETTIME        = 286\n\tSYS_TIMERFD_GETTIME        = 287\n\tSYS_ACCEPT4                = 288\n\tSYS_SIGNALFD4              = 289\n\tSYS_EVENTFD2               = 290\n\tSYS_EPOLL_CREATE1          = 291\n\tSYS_DUP3                   = 292\n\tSYS_PIPE2                  = 293\n\tSYS_INOTIFY_INIT1          = 294\n\tSYS_PREADV                 = 295\n\tSYS_PWRITEV                = 296\n\tSYS_RT_TGSIGQUEUEINFO      = 297\n\tSYS_PERF_EVENT_OPEN        = 298\n\tSYS_RECVMMSG               = 299\n\tSYS_FANOTIFY_INIT          = 300\n\tSYS_FANOTIFY_MARK          = 301\n\tSYS_PRLIMIT64              = 302\n\tSYS_NAME_TO_HANDLE_AT      = 303\n\tSYS_OPEN_BY_HANDLE_AT      = 304\n\tSYS_CLOCK_ADJTIME          = 305\n\tSYS_SYNCFS                 = 306\n\tSYS_SENDMMSG               = 307\n\tSYS_SETNS                  = 308\n\tSYS_GETCPU                 = 309\n\tSYS_PROCESS_VM_READV       = 310\n\tSYS_PROCESS_VM_WRITEV      = 311\n\tSYS_KCMP                   = 312\n\tSYS_FINIT_MODULE           = 313\n\tSYS_SCHED_SETATTR          = 314\n\tSYS_SCHED_GETATTR          = 315\n\tSYS_RENAMEAT2              = 316\n\tSYS_SECCOMP                = 317\n\tSYS_GETRANDOM              = 318\n\tSYS_MEMFD_CREATE           = 319\n\tSYS_KEXEC_FILE_LOAD        = 320\n\tSYS_BPF                    = 321\n\tSYS_EXECVEAT               = 322\n\tSYS_USERFAULTFD            = 323\n\tSYS_MEMBARRIER             = 324\n\tSYS_MLOCK2                 = 325\n\tSYS_COPY_FILE_RANGE        = 326\n\tSYS_PREADV2                = 327\n\tSYS_PWRITEV2               = 328\n\tSYS_PKEY_MPROTECT          = 329\n\tSYS_PKEY_ALLOC             = 330\n\tSYS_PKEY_FREE              = 331\n\tSYS_STATX                  = 332\n\tSYS_IO_PGETEVENTS          = 333\n\tSYS_RSEQ                   = 334\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL        = 0\n\tSYS_EXIT                   = 1\n\tSYS_FORK                   = 2\n\tSYS_READ                   = 3\n\tSYS_WRITE                  = 4\n\tSYS_OPEN                   = 5\n\tSYS_CLOSE                  = 6\n\tSYS_CREAT                  = 8\n\tSYS_LINK                   = 9\n\tSYS_UNLINK                 = 10\n\tSYS_EXECVE                 = 11\n\tSYS_CHDIR                  = 12\n\tSYS_MKNOD                  = 14\n\tSYS_CHMOD                  = 15\n\tSYS_LCHOWN                 = 16\n\tSYS_LSEEK                  = 19\n\tSYS_GETPID                 = 20\n\tSYS_MOUNT                  = 21\n\tSYS_SETUID                 = 23\n\tSYS_GETUID                 = 24\n\tSYS_PTRACE                 = 26\n\tSYS_PAUSE                  = 29\n\tSYS_ACCESS                 = 33\n\tSYS_NICE                   = 34\n\tSYS_SYNC                   = 36\n\tSYS_KILL                   = 37\n\tSYS_RENAME                 = 38\n\tSYS_MKDIR                  = 39\n\tSYS_RMDIR                  = 40\n\tSYS_DUP                    = 41\n\tSYS_PIPE                   = 42\n\tSYS_TIMES                  = 43\n\tSYS_BRK                    = 45\n\tSYS_SETGID                 = 46\n\tSYS_GETGID                 = 47\n\tSYS_GETEUID                = 49\n\tSYS_GETEGID                = 50\n\tSYS_ACCT                   = 51\n\tSYS_UMOUNT2                = 52\n\tSYS_IOCTL                  = 54\n\tSYS_FCNTL                  = 55\n\tSYS_SETPGID                = 57\n\tSYS_UMASK                  = 60\n\tSYS_CHROOT                 = 61\n\tSYS_USTAT                  = 62\n\tSYS_DUP2                   = 63\n\tSYS_GETPPID                = 64\n\tSYS_GETPGRP                = 65\n\tSYS_SETSID                 = 66\n\tSYS_SIGACTION              = 67\n\tSYS_SETREUID               = 70\n\tSYS_SETREGID               = 71\n\tSYS_SIGSUSPEND             = 72\n\tSYS_SIGPENDING             = 73\n\tSYS_SETHOSTNAME            = 74\n\tSYS_SETRLIMIT              = 75\n\tSYS_GETRUSAGE              = 77\n\tSYS_GETTIMEOFDAY           = 78\n\tSYS_SETTIMEOFDAY           = 79\n\tSYS_GETGROUPS              = 80\n\tSYS_SETGROUPS              = 81\n\tSYS_SYMLINK                = 83\n\tSYS_READLINK               = 85\n\tSYS_USELIB                 = 86\n\tSYS_SWAPON                 = 87\n\tSYS_REBOOT                 = 88\n\tSYS_MUNMAP                 = 91\n\tSYS_TRUNCATE               = 92\n\tSYS_FTRUNCATE              = 93\n\tSYS_FCHMOD                 = 94\n\tSYS_FCHOWN                 = 95\n\tSYS_GETPRIORITY            = 96\n\tSYS_SETPRIORITY            = 97\n\tSYS_STATFS                 = 99\n\tSYS_FSTATFS                = 100\n\tSYS_SYSLOG                 = 103\n\tSYS_SETITIMER              = 104\n\tSYS_GETITIMER              = 105\n\tSYS_STAT                   = 106\n\tSYS_LSTAT                  = 107\n\tSYS_FSTAT                  = 108\n\tSYS_VHANGUP                = 111\n\tSYS_WAIT4                  = 114\n\tSYS_SWAPOFF                = 115\n\tSYS_SYSINFO                = 116\n\tSYS_FSYNC                  = 118\n\tSYS_SIGRETURN              = 119\n\tSYS_CLONE                  = 120\n\tSYS_SETDOMAINNAME          = 121\n\tSYS_UNAME                  = 122\n\tSYS_ADJTIMEX               = 124\n\tSYS_MPROTECT               = 125\n\tSYS_SIGPROCMASK            = 126\n\tSYS_INIT_MODULE            = 128\n\tSYS_DELETE_MODULE          = 129\n\tSYS_QUOTACTL               = 131\n\tSYS_GETPGID                = 132\n\tSYS_FCHDIR                 = 133\n\tSYS_BDFLUSH                = 134\n\tSYS_SYSFS                  = 135\n\tSYS_PERSONALITY            = 136\n\tSYS_SETFSUID               = 138\n\tSYS_SETFSGID               = 139\n\tSYS__LLSEEK                = 140\n\tSYS_GETDENTS               = 141\n\tSYS__NEWSELECT             = 142\n\tSYS_FLOCK                  = 143\n\tSYS_MSYNC                  = 144\n\tSYS_READV                  = 145\n\tSYS_WRITEV                 = 146\n\tSYS_GETSID                 = 147\n\tSYS_FDATASYNC              = 148\n\tSYS__SYSCTL                = 149\n\tSYS_MLOCK                  = 150\n\tSYS_MUNLOCK                = 151\n\tSYS_MLOCKALL               = 152\n\tSYS_MUNLOCKALL             = 153\n\tSYS_SCHED_SETPARAM         = 154\n\tSYS_SCHED_GETPARAM         = 155\n\tSYS_SCHED_SETSCHEDULER     = 156\n\tSYS_SCHED_GETSCHEDULER     = 157\n\tSYS_SCHED_YIELD            = 158\n\tSYS_SCHED_GET_PRIORITY_MAX = 159\n\tSYS_SCHED_GET_PRIORITY_MIN = 160\n\tSYS_SCHED_RR_GET_INTERVAL  = 161\n\tSYS_NANOSLEEP              = 162\n\tSYS_MREMAP                 = 163\n\tSYS_SETRESUID              = 164\n\tSYS_GETRESUID              = 165\n\tSYS_POLL                   = 168\n\tSYS_NFSSERVCTL             = 169\n\tSYS_SETRESGID              = 170\n\tSYS_GETRESGID              = 171\n\tSYS_PRCTL                  = 172\n\tSYS_RT_SIGRETURN           = 173\n\tSYS_RT_SIGACTION           = 174\n\tSYS_RT_SIGPROCMASK         = 175\n\tSYS_RT_SIGPENDING          = 176\n\tSYS_RT_SIGTIMEDWAIT        = 177\n\tSYS_RT_SIGQUEUEINFO        = 178\n\tSYS_RT_SIGSUSPEND          = 179\n\tSYS_PREAD64                = 180\n\tSYS_PWRITE64               = 181\n\tSYS_CHOWN                  = 182\n\tSYS_GETCWD                 = 183\n\tSYS_CAPGET                 = 184\n\tSYS_CAPSET                 = 185\n\tSYS_SIGALTSTACK            = 186\n\tSYS_SENDFILE               = 187\n\tSYS_VFORK                  = 190\n\tSYS_UGETRLIMIT             = 191\n\tSYS_MMAP2                  = 192\n\tSYS_TRUNCATE64             = 193\n\tSYS_FTRUNCATE64            = 194\n\tSYS_STAT64                 = 195\n\tSYS_LSTAT64                = 196\n\tSYS_FSTAT64                = 197\n\tSYS_LCHOWN32               = 198\n\tSYS_GETUID32               = 199\n\tSYS_GETGID32               = 200\n\tSYS_GETEUID32              = 201\n\tSYS_GETEGID32              = 202\n\tSYS_SETREUID32             = 203\n\tSYS_SETREGID32             = 204\n\tSYS_GETGROUPS32            = 205\n\tSYS_SETGROUPS32            = 206\n\tSYS_FCHOWN32               = 207\n\tSYS_SETRESUID32            = 208\n\tSYS_GETRESUID32            = 209\n\tSYS_SETRESGID32            = 210\n\tSYS_GETRESGID32            = 211\n\tSYS_CHOWN32                = 212\n\tSYS_SETUID32               = 213\n\tSYS_SETGID32               = 214\n\tSYS_SETFSUID32             = 215\n\tSYS_SETFSGID32             = 216\n\tSYS_GETDENTS64             = 217\n\tSYS_PIVOT_ROOT             = 218\n\tSYS_MINCORE                = 219\n\tSYS_MADVISE                = 220\n\tSYS_FCNTL64                = 221\n\tSYS_GETTID                 = 224\n\tSYS_READAHEAD              = 225\n\tSYS_SETXATTR               = 226\n\tSYS_LSETXATTR              = 227\n\tSYS_FSETXATTR              = 228\n\tSYS_GETXATTR               = 229\n\tSYS_LGETXATTR              = 230\n\tSYS_FGETXATTR              = 231\n\tSYS_LISTXATTR              = 232\n\tSYS_LLISTXATTR             = 233\n\tSYS_FLISTXATTR             = 234\n\tSYS_REMOVEXATTR            = 235\n\tSYS_LREMOVEXATTR           = 236\n\tSYS_FREMOVEXATTR           = 237\n\tSYS_TKILL                  = 238\n\tSYS_SENDFILE64             = 239\n\tSYS_FUTEX                  = 240\n\tSYS_SCHED_SETAFFINITY      = 241\n\tSYS_SCHED_GETAFFINITY      = 242\n\tSYS_IO_SETUP               = 243\n\tSYS_IO_DESTROY             = 244\n\tSYS_IO_GETEVENTS           = 245\n\tSYS_IO_SUBMIT              = 246\n\tSYS_IO_CANCEL              = 247\n\tSYS_EXIT_GROUP             = 248\n\tSYS_LOOKUP_DCOOKIE         = 249\n\tSYS_EPOLL_CREATE           = 250\n\tSYS_EPOLL_CTL              = 251\n\tSYS_EPOLL_WAIT             = 252\n\tSYS_REMAP_FILE_PAGES       = 253\n\tSYS_SET_TID_ADDRESS        = 256\n\tSYS_TIMER_CREATE           = 257\n\tSYS_TIMER_SETTIME          = 258\n\tSYS_TIMER_GETTIME          = 259\n\tSYS_TIMER_GETOVERRUN       = 260\n\tSYS_TIMER_DELETE           = 261\n\tSYS_CLOCK_SETTIME          = 262\n\tSYS_CLOCK_GETTIME          = 263\n\tSYS_CLOCK_GETRES           = 264\n\tSYS_CLOCK_NANOSLEEP        = 265\n\tSYS_STATFS64               = 266\n\tSYS_FSTATFS64              = 267\n\tSYS_TGKILL                 = 268\n\tSYS_UTIMES                 = 269\n\tSYS_ARM_FADVISE64_64       = 270\n\tSYS_PCICONFIG_IOBASE       = 271\n\tSYS_PCICONFIG_READ         = 272\n\tSYS_PCICONFIG_WRITE        = 273\n\tSYS_MQ_OPEN                = 274\n\tSYS_MQ_UNLINK              = 275\n\tSYS_MQ_TIMEDSEND           = 276\n\tSYS_MQ_TIMEDRECEIVE        = 277\n\tSYS_MQ_NOTIFY              = 278\n\tSYS_MQ_GETSETATTR          = 279\n\tSYS_WAITID                 = 280\n\tSYS_SOCKET                 = 281\n\tSYS_BIND                   = 282\n\tSYS_CONNECT                = 283\n\tSYS_LISTEN                 = 284\n\tSYS_ACCEPT                 = 285\n\tSYS_GETSOCKNAME            = 286\n\tSYS_GETPEERNAME            = 287\n\tSYS_SOCKETPAIR             = 288\n\tSYS_SEND                   = 289\n\tSYS_SENDTO                 = 290\n\tSYS_RECV                   = 291\n\tSYS_RECVFROM               = 292\n\tSYS_SHUTDOWN               = 293\n\tSYS_SETSOCKOPT             = 294\n\tSYS_GETSOCKOPT             = 295\n\tSYS_SENDMSG                = 296\n\tSYS_RECVMSG                = 297\n\tSYS_SEMOP                  = 298\n\tSYS_SEMGET                 = 299\n\tSYS_SEMCTL                 = 300\n\tSYS_MSGSND                 = 301\n\tSYS_MSGRCV                 = 302\n\tSYS_MSGGET                 = 303\n\tSYS_MSGCTL                 = 304\n\tSYS_SHMAT                  = 305\n\tSYS_SHMDT                  = 306\n\tSYS_SHMGET                 = 307\n\tSYS_SHMCTL                 = 308\n\tSYS_ADD_KEY                = 309\n\tSYS_REQUEST_KEY            = 310\n\tSYS_KEYCTL                 = 311\n\tSYS_SEMTIMEDOP             = 312\n\tSYS_VSERVER                = 313\n\tSYS_IOPRIO_SET             = 314\n\tSYS_IOPRIO_GET             = 315\n\tSYS_INOTIFY_INIT           = 316\n\tSYS_INOTIFY_ADD_WATCH      = 317\n\tSYS_INOTIFY_RM_WATCH       = 318\n\tSYS_MBIND                  = 319\n\tSYS_GET_MEMPOLICY          = 320\n\tSYS_SET_MEMPOLICY          = 321\n\tSYS_OPENAT                 = 322\n\tSYS_MKDIRAT                = 323\n\tSYS_MKNODAT                = 324\n\tSYS_FCHOWNAT               = 325\n\tSYS_FUTIMESAT              = 326\n\tSYS_FSTATAT64              = 327\n\tSYS_UNLINKAT               = 328\n\tSYS_RENAMEAT               = 329\n\tSYS_LINKAT                 = 330\n\tSYS_SYMLINKAT              = 331\n\tSYS_READLINKAT             = 332\n\tSYS_FCHMODAT               = 333\n\tSYS_FACCESSAT              = 334\n\tSYS_PSELECT6               = 335\n\tSYS_PPOLL                  = 336\n\tSYS_UNSHARE                = 337\n\tSYS_SET_ROBUST_LIST        = 338\n\tSYS_GET_ROBUST_LIST        = 339\n\tSYS_SPLICE                 = 340\n\tSYS_ARM_SYNC_FILE_RANGE    = 341\n\tSYS_TEE                    = 342\n\tSYS_VMSPLICE               = 343\n\tSYS_MOVE_PAGES             = 344\n\tSYS_GETCPU                 = 345\n\tSYS_EPOLL_PWAIT            = 346\n\tSYS_KEXEC_LOAD             = 347\n\tSYS_UTIMENSAT              = 348\n\tSYS_SIGNALFD               = 349\n\tSYS_TIMERFD_CREATE         = 350\n\tSYS_EVENTFD                = 351\n\tSYS_FALLOCATE              = 352\n\tSYS_TIMERFD_SETTIME        = 353\n\tSYS_TIMERFD_GETTIME        = 354\n\tSYS_SIGNALFD4              = 355\n\tSYS_EVENTFD2               = 356\n\tSYS_EPOLL_CREATE1          = 357\n\tSYS_DUP3                   = 358\n\tSYS_PIPE2                  = 359\n\tSYS_INOTIFY_INIT1          = 360\n\tSYS_PREADV                 = 361\n\tSYS_PWRITEV                = 362\n\tSYS_RT_TGSIGQUEUEINFO      = 363\n\tSYS_PERF_EVENT_OPEN        = 364\n\tSYS_RECVMMSG               = 365\n\tSYS_ACCEPT4                = 366\n\tSYS_FANOTIFY_INIT          = 367\n\tSYS_FANOTIFY_MARK          = 368\n\tSYS_PRLIMIT64              = 369\n\tSYS_NAME_TO_HANDLE_AT      = 370\n\tSYS_OPEN_BY_HANDLE_AT      = 371\n\tSYS_CLOCK_ADJTIME          = 372\n\tSYS_SYNCFS                 = 373\n\tSYS_SENDMMSG               = 374\n\tSYS_SETNS                  = 375\n\tSYS_PROCESS_VM_READV       = 376\n\tSYS_PROCESS_VM_WRITEV      = 377\n\tSYS_KCMP                   = 378\n\tSYS_FINIT_MODULE           = 379\n\tSYS_SCHED_SETATTR          = 380\n\tSYS_SCHED_GETATTR          = 381\n\tSYS_RENAMEAT2              = 382\n\tSYS_SECCOMP                = 383\n\tSYS_GETRANDOM              = 384\n\tSYS_MEMFD_CREATE           = 385\n\tSYS_BPF                    = 386\n\tSYS_EXECVEAT               = 387\n\tSYS_USERFAULTFD            = 388\n\tSYS_MEMBARRIER             = 389\n\tSYS_MLOCK2                 = 390\n\tSYS_COPY_FILE_RANGE        = 391\n\tSYS_PREADV2                = 392\n\tSYS_PWRITEV2               = 393\n\tSYS_PKEY_MPROTECT          = 394\n\tSYS_PKEY_ALLOC             = 395\n\tSYS_PKEY_FREE              = 396\n\tSYS_STATX                  = 397\n\tSYS_RSEQ                   = 398\n\tSYS_IO_PGETEVENTS          = 399\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP               = 0\n\tSYS_IO_DESTROY             = 1\n\tSYS_IO_SUBMIT              = 2\n\tSYS_IO_CANCEL              = 3\n\tSYS_IO_GETEVENTS           = 4\n\tSYS_SETXATTR               = 5\n\tSYS_LSETXATTR              = 6\n\tSYS_FSETXATTR              = 7\n\tSYS_GETXATTR               = 8\n\tSYS_LGETXATTR              = 9\n\tSYS_FGETXATTR              = 10\n\tSYS_LISTXATTR              = 11\n\tSYS_LLISTXATTR             = 12\n\tSYS_FLISTXATTR             = 13\n\tSYS_REMOVEXATTR            = 14\n\tSYS_LREMOVEXATTR           = 15\n\tSYS_FREMOVEXATTR           = 16\n\tSYS_GETCWD                 = 17\n\tSYS_LOOKUP_DCOOKIE         = 18\n\tSYS_EVENTFD2               = 19\n\tSYS_EPOLL_CREATE1          = 20\n\tSYS_EPOLL_CTL              = 21\n\tSYS_EPOLL_PWAIT            = 22\n\tSYS_DUP                    = 23\n\tSYS_DUP3                   = 24\n\tSYS_FCNTL                  = 25\n\tSYS_INOTIFY_INIT1          = 26\n\tSYS_INOTIFY_ADD_WATCH      = 27\n\tSYS_INOTIFY_RM_WATCH       = 28\n\tSYS_IOCTL                  = 29\n\tSYS_IOPRIO_SET             = 30\n\tSYS_IOPRIO_GET             = 31\n\tSYS_FLOCK                  = 32\n\tSYS_MKNODAT                = 33\n\tSYS_MKDIRAT                = 34\n\tSYS_UNLINKAT               = 35\n\tSYS_SYMLINKAT              = 36\n\tSYS_LINKAT                 = 37\n\tSYS_RENAMEAT               = 38\n\tSYS_UMOUNT2                = 39\n\tSYS_MOUNT                  = 40\n\tSYS_PIVOT_ROOT             = 41\n\tSYS_NFSSERVCTL             = 42\n\tSYS_STATFS                 = 43\n\tSYS_FSTATFS                = 44\n\tSYS_TRUNCATE               = 45\n\tSYS_FTRUNCATE              = 46\n\tSYS_FALLOCATE              = 47\n\tSYS_FACCESSAT              = 48\n\tSYS_CHDIR                  = 49\n\tSYS_FCHDIR                 = 50\n\tSYS_CHROOT                 = 51\n\tSYS_FCHMOD                 = 52\n\tSYS_FCHMODAT               = 53\n\tSYS_FCHOWNAT               = 54\n\tSYS_FCHOWN                 = 55\n\tSYS_OPENAT                 = 56\n\tSYS_CLOSE                  = 57\n\tSYS_VHANGUP                = 58\n\tSYS_PIPE2                  = 59\n\tSYS_QUOTACTL               = 60\n\tSYS_GETDENTS64             = 61\n\tSYS_LSEEK                  = 62\n\tSYS_READ                   = 63\n\tSYS_WRITE                  = 64\n\tSYS_READV                  = 65\n\tSYS_WRITEV                 = 66\n\tSYS_PREAD64                = 67\n\tSYS_PWRITE64               = 68\n\tSYS_PREADV                 = 69\n\tSYS_PWRITEV                = 70\n\tSYS_SENDFILE               = 71\n\tSYS_PSELECT6               = 72\n\tSYS_PPOLL                  = 73\n\tSYS_SIGNALFD4              = 74\n\tSYS_VMSPLICE               = 75\n\tSYS_SPLICE                 = 76\n\tSYS_TEE                    = 77\n\tSYS_READLINKAT             = 78\n\tSYS_FSTATAT                = 79\n\tSYS_FSTAT                  = 80\n\tSYS_SYNC                   = 81\n\tSYS_FSYNC                  = 82\n\tSYS_FDATASYNC              = 83\n\tSYS_SYNC_FILE_RANGE        = 84\n\tSYS_TIMERFD_CREATE         = 85\n\tSYS_TIMERFD_SETTIME        = 86\n\tSYS_TIMERFD_GETTIME        = 87\n\tSYS_UTIMENSAT              = 88\n\tSYS_ACCT                   = 89\n\tSYS_CAPGET                 = 90\n\tSYS_CAPSET                 = 91\n\tSYS_PERSONALITY            = 92\n\tSYS_EXIT                   = 93\n\tSYS_EXIT_GROUP             = 94\n\tSYS_WAITID                 = 95\n\tSYS_SET_TID_ADDRESS        = 96\n\tSYS_UNSHARE                = 97\n\tSYS_FUTEX                  = 98\n\tSYS_SET_ROBUST_LIST        = 99\n\tSYS_GET_ROBUST_LIST        = 100\n\tSYS_NANOSLEEP              = 101\n\tSYS_GETITIMER              = 102\n\tSYS_SETITIMER              = 103\n\tSYS_KEXEC_LOAD             = 104\n\tSYS_INIT_MODULE            = 105\n\tSYS_DELETE_MODULE          = 106\n\tSYS_TIMER_CREATE           = 107\n\tSYS_TIMER_GETTIME          = 108\n\tSYS_TIMER_GETOVERRUN       = 109\n\tSYS_TIMER_SETTIME          = 110\n\tSYS_TIMER_DELETE           = 111\n\tSYS_CLOCK_SETTIME          = 112\n\tSYS_CLOCK_GETTIME          = 113\n\tSYS_CLOCK_GETRES           = 114\n\tSYS_CLOCK_NANOSLEEP        = 115\n\tSYS_SYSLOG                 = 116\n\tSYS_PTRACE                 = 117\n\tSYS_SCHED_SETPARAM         = 118\n\tSYS_SCHED_SETSCHEDULER     = 119\n\tSYS_SCHED_GETSCHEDULER     = 120\n\tSYS_SCHED_GETPARAM         = 121\n\tSYS_SCHED_SETAFFINITY      = 122\n\tSYS_SCHED_GETAFFINITY      = 123\n\tSYS_SCHED_YIELD            = 124\n\tSYS_SCHED_GET_PRIORITY_MAX = 125\n\tSYS_SCHED_GET_PRIORITY_MIN = 126\n\tSYS_SCHED_RR_GET_INTERVAL  = 127\n\tSYS_RESTART_SYSCALL        = 128\n\tSYS_KILL                   = 129\n\tSYS_TKILL                  = 130\n\tSYS_TGKILL                 = 131\n\tSYS_SIGALTSTACK            = 132\n\tSYS_RT_SIGSUSPEND          = 133\n\tSYS_RT_SIGACTION           = 134\n\tSYS_RT_SIGPROCMASK         = 135\n\tSYS_RT_SIGPENDING          = 136\n\tSYS_RT_SIGTIMEDWAIT        = 137\n\tSYS_RT_SIGQUEUEINFO        = 138\n\tSYS_RT_SIGRETURN           = 139\n\tSYS_SETPRIORITY            = 140\n\tSYS_GETPRIORITY            = 141\n\tSYS_REBOOT                 = 142\n\tSYS_SETREGID               = 143\n\tSYS_SETGID                 = 144\n\tSYS_SETREUID               = 145\n\tSYS_SETUID                 = 146\n\tSYS_SETRESUID              = 147\n\tSYS_GETRESUID              = 148\n\tSYS_SETRESGID              = 149\n\tSYS_GETRESGID              = 150\n\tSYS_SETFSUID               = 151\n\tSYS_SETFSGID               = 152\n\tSYS_TIMES                  = 153\n\tSYS_SETPGID                = 154\n\tSYS_GETPGID                = 155\n\tSYS_GETSID                 = 156\n\tSYS_SETSID                 = 157\n\tSYS_GETGROUPS              = 158\n\tSYS_SETGROUPS              = 159\n\tSYS_UNAME                  = 160\n\tSYS_SETHOSTNAME            = 161\n\tSYS_SETDOMAINNAME          = 162\n\tSYS_GETRLIMIT              = 163\n\tSYS_SETRLIMIT              = 164\n\tSYS_GETRUSAGE              = 165\n\tSYS_UMASK                  = 166\n\tSYS_PRCTL                  = 167\n\tSYS_GETCPU                 = 168\n\tSYS_GETTIMEOFDAY           = 169\n\tSYS_SETTIMEOFDAY           = 170\n\tSYS_ADJTIMEX               = 171\n\tSYS_GETPID                 = 172\n\tSYS_GETPPID                = 173\n\tSYS_GETUID                 = 174\n\tSYS_GETEUID                = 175\n\tSYS_GETGID                 = 176\n\tSYS_GETEGID                = 177\n\tSYS_GETTID                 = 178\n\tSYS_SYSINFO                = 179\n\tSYS_MQ_OPEN                = 180\n\tSYS_MQ_UNLINK              = 181\n\tSYS_MQ_TIMEDSEND           = 182\n\tSYS_MQ_TIMEDRECEIVE        = 183\n\tSYS_MQ_NOTIFY              = 184\n\tSYS_MQ_GETSETATTR          = 185\n\tSYS_MSGGET                 = 186\n\tSYS_MSGCTL                 = 187\n\tSYS_MSGRCV                 = 188\n\tSYS_MSGSND                 = 189\n\tSYS_SEMGET                 = 190\n\tSYS_SEMCTL                 = 191\n\tSYS_SEMTIMEDOP             = 192\n\tSYS_SEMOP                  = 193\n\tSYS_SHMGET                 = 194\n\tSYS_SHMCTL                 = 195\n\tSYS_SHMAT                  = 196\n\tSYS_SHMDT                  = 197\n\tSYS_SOCKET                 = 198\n\tSYS_SOCKETPAIR             = 199\n\tSYS_BIND                   = 200\n\tSYS_LISTEN                 = 201\n\tSYS_ACCEPT                 = 202\n\tSYS_CONNECT                = 203\n\tSYS_GETSOCKNAME            = 204\n\tSYS_GETPEERNAME            = 205\n\tSYS_SENDTO                 = 206\n\tSYS_RECVFROM               = 207\n\tSYS_SETSOCKOPT             = 208\n\tSYS_GETSOCKOPT             = 209\n\tSYS_SHUTDOWN               = 210\n\tSYS_SENDMSG                = 211\n\tSYS_RECVMSG                = 212\n\tSYS_READAHEAD              = 213\n\tSYS_BRK                    = 214\n\tSYS_MUNMAP                 = 215\n\tSYS_MREMAP                 = 216\n\tSYS_ADD_KEY                = 217\n\tSYS_REQUEST_KEY            = 218\n\tSYS_KEYCTL                 = 219\n\tSYS_CLONE                  = 220\n\tSYS_EXECVE                 = 221\n\tSYS_MMAP                   = 222\n\tSYS_FADVISE64              = 223\n\tSYS_SWAPON                 = 224\n\tSYS_SWAPOFF                = 225\n\tSYS_MPROTECT               = 226\n\tSYS_MSYNC                  = 227\n\tSYS_MLOCK                  = 228\n\tSYS_MUNLOCK                = 229\n\tSYS_MLOCKALL               = 230\n\tSYS_MUNLOCKALL             = 231\n\tSYS_MINCORE                = 232\n\tSYS_MADVISE                = 233\n\tSYS_REMAP_FILE_PAGES       = 234\n\tSYS_MBIND                  = 235\n\tSYS_GET_MEMPOLICY          = 236\n\tSYS_SET_MEMPOLICY          = 237\n\tSYS_MIGRATE_PAGES          = 238\n\tSYS_MOVE_PAGES             = 239\n\tSYS_RT_TGSIGQUEUEINFO      = 240\n\tSYS_PERF_EVENT_OPEN        = 241\n\tSYS_ACCEPT4                = 242\n\tSYS_RECVMMSG               = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL  = 244\n\tSYS_WAIT4                  = 260\n\tSYS_PRLIMIT64              = 261\n\tSYS_FANOTIFY_INIT          = 262\n\tSYS_FANOTIFY_MARK          = 263\n\tSYS_NAME_TO_HANDLE_AT      = 264\n\tSYS_OPEN_BY_HANDLE_AT      = 265\n\tSYS_CLOCK_ADJTIME          = 266\n\tSYS_SYNCFS                 = 267\n\tSYS_SETNS                  = 268\n\tSYS_SENDMMSG               = 269\n\tSYS_PROCESS_VM_READV       = 270\n\tSYS_PROCESS_VM_WRITEV      = 271\n\tSYS_KCMP                   = 272\n\tSYS_FINIT_MODULE           = 273\n\tSYS_SCHED_SETATTR          = 274\n\tSYS_SCHED_GETATTR          = 275\n\tSYS_RENAMEAT2              = 276\n\tSYS_SECCOMP                = 277\n\tSYS_GETRANDOM              = 278\n\tSYS_MEMFD_CREATE           = 279\n\tSYS_BPF                    = 280\n\tSYS_EXECVEAT               = 281\n\tSYS_USERFAULTFD            = 282\n\tSYS_MEMBARRIER             = 283\n\tSYS_MLOCK2                 = 284\n\tSYS_COPY_FILE_RANGE        = 285\n\tSYS_PREADV2                = 286\n\tSYS_PWRITEV2               = 287\n\tSYS_PKEY_MPROTECT          = 288\n\tSYS_PKEY_ALLOC             = 289\n\tSYS_PKEY_FREE              = 290\n\tSYS_STATX                  = 291\n\tSYS_IO_PGETEVENTS          = 292\n\tSYS_RSEQ                   = 293\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips,linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                = 4000\n\tSYS_EXIT                   = 4001\n\tSYS_FORK                   = 4002\n\tSYS_READ                   = 4003\n\tSYS_WRITE                  = 4004\n\tSYS_OPEN                   = 4005\n\tSYS_CLOSE                  = 4006\n\tSYS_WAITPID                = 4007\n\tSYS_CREAT                  = 4008\n\tSYS_LINK                   = 4009\n\tSYS_UNLINK                 = 4010\n\tSYS_EXECVE                 = 4011\n\tSYS_CHDIR                  = 4012\n\tSYS_TIME                   = 4013\n\tSYS_MKNOD                  = 4014\n\tSYS_CHMOD                  = 4015\n\tSYS_LCHOWN                 = 4016\n\tSYS_BREAK                  = 4017\n\tSYS_UNUSED18               = 4018\n\tSYS_LSEEK                  = 4019\n\tSYS_GETPID                 = 4020\n\tSYS_MOUNT                  = 4021\n\tSYS_UMOUNT                 = 4022\n\tSYS_SETUID                 = 4023\n\tSYS_GETUID                 = 4024\n\tSYS_STIME                  = 4025\n\tSYS_PTRACE                 = 4026\n\tSYS_ALARM                  = 4027\n\tSYS_UNUSED28               = 4028\n\tSYS_PAUSE                  = 4029\n\tSYS_UTIME                  = 4030\n\tSYS_STTY                   = 4031\n\tSYS_GTTY                   = 4032\n\tSYS_ACCESS                 = 4033\n\tSYS_NICE                   = 4034\n\tSYS_FTIME                  = 4035\n\tSYS_SYNC                   = 4036\n\tSYS_KILL                   = 4037\n\tSYS_RENAME                 = 4038\n\tSYS_MKDIR                  = 4039\n\tSYS_RMDIR                  = 4040\n\tSYS_DUP                    = 4041\n\tSYS_PIPE                   = 4042\n\tSYS_TIMES                  = 4043\n\tSYS_PROF                   = 4044\n\tSYS_BRK                    = 4045\n\tSYS_SETGID                 = 4046\n\tSYS_GETGID                 = 4047\n\tSYS_SIGNAL                 = 4048\n\tSYS_GETEUID                = 4049\n\tSYS_GETEGID                = 4050\n\tSYS_ACCT                   = 4051\n\tSYS_UMOUNT2                = 4052\n\tSYS_LOCK                   = 4053\n\tSYS_IOCTL                  = 4054\n\tSYS_FCNTL                  = 4055\n\tSYS_MPX                    = 4056\n\tSYS_SETPGID                = 4057\n\tSYS_ULIMIT                 = 4058\n\tSYS_UNUSED59               = 4059\n\tSYS_UMASK                  = 4060\n\tSYS_CHROOT                 = 4061\n\tSYS_USTAT                  = 4062\n\tSYS_DUP2                   = 4063\n\tSYS_GETPPID                = 4064\n\tSYS_GETPGRP                = 4065\n\tSYS_SETSID                 = 4066\n\tSYS_SIGACTION              = 4067\n\tSYS_SGETMASK               = 4068\n\tSYS_SSETMASK               = 4069\n\tSYS_SETREUID               = 4070\n\tSYS_SETREGID               = 4071\n\tSYS_SIGSUSPEND             = 4072\n\tSYS_SIGPENDING             = 4073\n\tSYS_SETHOSTNAME            = 4074\n\tSYS_SETRLIMIT              = 4075\n\tSYS_GETRLIMIT              = 4076\n\tSYS_GETRUSAGE              = 4077\n\tSYS_GETTIMEOFDAY           = 4078\n\tSYS_SETTIMEOFDAY           = 4079\n\tSYS_GETGROUPS              = 4080\n\tSYS_SETGROUPS              = 4081\n\tSYS_RESERVED82             = 4082\n\tSYS_SYMLINK                = 4083\n\tSYS_UNUSED84               = 4084\n\tSYS_READLINK               = 4085\n\tSYS_USELIB                 = 4086\n\tSYS_SWAPON                 = 4087\n\tSYS_REBOOT                 = 4088\n\tSYS_READDIR                = 4089\n\tSYS_MMAP                   = 4090\n\tSYS_MUNMAP                 = 4091\n\tSYS_TRUNCATE               = 4092\n\tSYS_FTRUNCATE              = 4093\n\tSYS_FCHMOD                 = 4094\n\tSYS_FCHOWN                 = 4095\n\tSYS_GETPRIORITY            = 4096\n\tSYS_SETPRIORITY            = 4097\n\tSYS_PROFIL                 = 4098\n\tSYS_STATFS                 = 4099\n\tSYS_FSTATFS                = 4100\n\tSYS_IOPERM                 = 4101\n\tSYS_SOCKETCALL             = 4102\n\tSYS_SYSLOG                 = 4103\n\tSYS_SETITIMER              = 4104\n\tSYS_GETITIMER              = 4105\n\tSYS_STAT                   = 4106\n\tSYS_LSTAT                  = 4107\n\tSYS_FSTAT                  = 4108\n\tSYS_UNUSED109              = 4109\n\tSYS_IOPL                   = 4110\n\tSYS_VHANGUP                = 4111\n\tSYS_IDLE                   = 4112\n\tSYS_VM86                   = 4113\n\tSYS_WAIT4                  = 4114\n\tSYS_SWAPOFF                = 4115\n\tSYS_SYSINFO                = 4116\n\tSYS_IPC                    = 4117\n\tSYS_FSYNC                  = 4118\n\tSYS_SIGRETURN              = 4119\n\tSYS_CLONE                  = 4120\n\tSYS_SETDOMAINNAME          = 4121\n\tSYS_UNAME                  = 4122\n\tSYS_MODIFY_LDT             = 4123\n\tSYS_ADJTIMEX               = 4124\n\tSYS_MPROTECT               = 4125\n\tSYS_SIGPROCMASK            = 4126\n\tSYS_CREATE_MODULE          = 4127\n\tSYS_INIT_MODULE            = 4128\n\tSYS_DELETE_MODULE          = 4129\n\tSYS_GET_KERNEL_SYMS        = 4130\n\tSYS_QUOTACTL               = 4131\n\tSYS_GETPGID                = 4132\n\tSYS_FCHDIR                 = 4133\n\tSYS_BDFLUSH                = 4134\n\tSYS_SYSFS                  = 4135\n\tSYS_PERSONALITY            = 4136\n\tSYS_AFS_SYSCALL            = 4137\n\tSYS_SETFSUID               = 4138\n\tSYS_SETFSGID               = 4139\n\tSYS__LLSEEK                = 4140\n\tSYS_GETDENTS               = 4141\n\tSYS__NEWSELECT             = 4142\n\tSYS_FLOCK                  = 4143\n\tSYS_MSYNC                  = 4144\n\tSYS_READV                  = 4145\n\tSYS_WRITEV                 = 4146\n\tSYS_CACHEFLUSH             = 4147\n\tSYS_CACHECTL               = 4148\n\tSYS_SYSMIPS                = 4149\n\tSYS_UNUSED150              = 4150\n\tSYS_GETSID                 = 4151\n\tSYS_FDATASYNC              = 4152\n\tSYS__SYSCTL                = 4153\n\tSYS_MLOCK                  = 4154\n\tSYS_MUNLOCK                = 4155\n\tSYS_MLOCKALL               = 4156\n\tSYS_MUNLOCKALL             = 4157\n\tSYS_SCHED_SETPARAM         = 4158\n\tSYS_SCHED_GETPARAM         = 4159\n\tSYS_SCHED_SETSCHEDULER     = 4160\n\tSYS_SCHED_GETSCHEDULER     = 4161\n\tSYS_SCHED_YIELD            = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN = 4164\n\tSYS_SCHED_RR_GET_INTERVAL  = 4165\n\tSYS_NANOSLEEP              = 4166\n\tSYS_MREMAP                 = 4167\n\tSYS_ACCEPT                 = 4168\n\tSYS_BIND                   = 4169\n\tSYS_CONNECT                = 4170\n\tSYS_GETPEERNAME            = 4171\n\tSYS_GETSOCKNAME            = 4172\n\tSYS_GETSOCKOPT             = 4173\n\tSYS_LISTEN                 = 4174\n\tSYS_RECV                   = 4175\n\tSYS_RECVFROM               = 4176\n\tSYS_RECVMSG                = 4177\n\tSYS_SEND                   = 4178\n\tSYS_SENDMSG                = 4179\n\tSYS_SENDTO                 = 4180\n\tSYS_SETSOCKOPT             = 4181\n\tSYS_SHUTDOWN               = 4182\n\tSYS_SOCKET                 = 4183\n\tSYS_SOCKETPAIR             = 4184\n\tSYS_SETRESUID              = 4185\n\tSYS_GETRESUID              = 4186\n\tSYS_QUERY_MODULE           = 4187\n\tSYS_POLL                   = 4188\n\tSYS_NFSSERVCTL             = 4189\n\tSYS_SETRESGID              = 4190\n\tSYS_GETRESGID              = 4191\n\tSYS_PRCTL                  = 4192\n\tSYS_RT_SIGRETURN           = 4193\n\tSYS_RT_SIGACTION           = 4194\n\tSYS_RT_SIGPROCMASK         = 4195\n\tSYS_RT_SIGPENDING          = 4196\n\tSYS_RT_SIGTIMEDWAIT        = 4197\n\tSYS_RT_SIGQUEUEINFO        = 4198\n\tSYS_RT_SIGSUSPEND          = 4199\n\tSYS_PREAD64                = 4200\n\tSYS_PWRITE64               = 4201\n\tSYS_CHOWN                  = 4202\n\tSYS_GETCWD                 = 4203\n\tSYS_CAPGET                 = 4204\n\tSYS_CAPSET                 = 4205\n\tSYS_SIGALTSTACK            = 4206\n\tSYS_SENDFILE               = 4207\n\tSYS_GETPMSG                = 4208\n\tSYS_PUTPMSG                = 4209\n\tSYS_MMAP2                  = 4210\n\tSYS_TRUNCATE64             = 4211\n\tSYS_FTRUNCATE64            = 4212\n\tSYS_STAT64                 = 4213\n\tSYS_LSTAT64                = 4214\n\tSYS_FSTAT64                = 4215\n\tSYS_PIVOT_ROOT             = 4216\n\tSYS_MINCORE                = 4217\n\tSYS_MADVISE                = 4218\n\tSYS_GETDENTS64             = 4219\n\tSYS_FCNTL64                = 4220\n\tSYS_RESERVED221            = 4221\n\tSYS_GETTID                 = 4222\n\tSYS_READAHEAD              = 4223\n\tSYS_SETXATTR               = 4224\n\tSYS_LSETXATTR              = 4225\n\tSYS_FSETXATTR              = 4226\n\tSYS_GETXATTR               = 4227\n\tSYS_LGETXATTR              = 4228\n\tSYS_FGETXATTR              = 4229\n\tSYS_LISTXATTR              = 4230\n\tSYS_LLISTXATTR             = 4231\n\tSYS_FLISTXATTR             = 4232\n\tSYS_REMOVEXATTR            = 4233\n\tSYS_LREMOVEXATTR           = 4234\n\tSYS_FREMOVEXATTR           = 4235\n\tSYS_TKILL                  = 4236\n\tSYS_SENDFILE64             = 4237\n\tSYS_FUTEX                  = 4238\n\tSYS_SCHED_SETAFFINITY      = 4239\n\tSYS_SCHED_GETAFFINITY      = 4240\n\tSYS_IO_SETUP               = 4241\n\tSYS_IO_DESTROY             = 4242\n\tSYS_IO_GETEVENTS           = 4243\n\tSYS_IO_SUBMIT              = 4244\n\tSYS_IO_CANCEL              = 4245\n\tSYS_EXIT_GROUP             = 4246\n\tSYS_LOOKUP_DCOOKIE         = 4247\n\tSYS_EPOLL_CREATE           = 4248\n\tSYS_EPOLL_CTL              = 4249\n\tSYS_EPOLL_WAIT             = 4250\n\tSYS_REMAP_FILE_PAGES       = 4251\n\tSYS_SET_TID_ADDRESS        = 4252\n\tSYS_RESTART_SYSCALL        = 4253\n\tSYS_FADVISE64              = 4254\n\tSYS_STATFS64               = 4255\n\tSYS_FSTATFS64              = 4256\n\tSYS_TIMER_CREATE           = 4257\n\tSYS_TIMER_SETTIME          = 4258\n\tSYS_TIMER_GETTIME          = 4259\n\tSYS_TIMER_GETOVERRUN       = 4260\n\tSYS_TIMER_DELETE           = 4261\n\tSYS_CLOCK_SETTIME          = 4262\n\tSYS_CLOCK_GETTIME          = 4263\n\tSYS_CLOCK_GETRES           = 4264\n\tSYS_CLOCK_NANOSLEEP        = 4265\n\tSYS_TGKILL                 = 4266\n\tSYS_UTIMES                 = 4267\n\tSYS_MBIND                  = 4268\n\tSYS_GET_MEMPOLICY          = 4269\n\tSYS_SET_MEMPOLICY          = 4270\n\tSYS_MQ_OPEN                = 4271\n\tSYS_MQ_UNLINK              = 4272\n\tSYS_MQ_TIMEDSEND           = 4273\n\tSYS_MQ_TIMEDRECEIVE        = 4274\n\tSYS_MQ_NOTIFY              = 4275\n\tSYS_MQ_GETSETATTR          = 4276\n\tSYS_VSERVER                = 4277\n\tSYS_WAITID                 = 4278\n\tSYS_ADD_KEY                = 4280\n\tSYS_REQUEST_KEY            = 4281\n\tSYS_KEYCTL                 = 4282\n\tSYS_SET_THREAD_AREA        = 4283\n\tSYS_INOTIFY_INIT           = 4284\n\tSYS_INOTIFY_ADD_WATCH      = 4285\n\tSYS_INOTIFY_RM_WATCH       = 4286\n\tSYS_MIGRATE_PAGES          = 4287\n\tSYS_OPENAT                 = 4288\n\tSYS_MKDIRAT                = 4289\n\tSYS_MKNODAT                = 4290\n\tSYS_FCHOWNAT               = 4291\n\tSYS_FUTIMESAT              = 4292\n\tSYS_FSTATAT64              = 4293\n\tSYS_UNLINKAT               = 4294\n\tSYS_RENAMEAT               = 4295\n\tSYS_LINKAT                 = 4296\n\tSYS_SYMLINKAT              = 4297\n\tSYS_READLINKAT             = 4298\n\tSYS_FCHMODAT               = 4299\n\tSYS_FACCESSAT              = 4300\n\tSYS_PSELECT6               = 4301\n\tSYS_PPOLL                  = 4302\n\tSYS_UNSHARE                = 4303\n\tSYS_SPLICE                 = 4304\n\tSYS_SYNC_FILE_RANGE        = 4305\n\tSYS_TEE                    = 4306\n\tSYS_VMSPLICE               = 4307\n\tSYS_MOVE_PAGES             = 4308\n\tSYS_SET_ROBUST_LIST        = 4309\n\tSYS_GET_ROBUST_LIST        = 4310\n\tSYS_KEXEC_LOAD             = 4311\n\tSYS_GETCPU                 = 4312\n\tSYS_EPOLL_PWAIT            = 4313\n\tSYS_IOPRIO_SET             = 4314\n\tSYS_IOPRIO_GET             = 4315\n\tSYS_UTIMENSAT              = 4316\n\tSYS_SIGNALFD               = 4317\n\tSYS_TIMERFD                = 4318\n\tSYS_EVENTFD                = 4319\n\tSYS_FALLOCATE              = 4320\n\tSYS_TIMERFD_CREATE         = 4321\n\tSYS_TIMERFD_GETTIME        = 4322\n\tSYS_TIMERFD_SETTIME        = 4323\n\tSYS_SIGNALFD4              = 4324\n\tSYS_EVENTFD2               = 4325\n\tSYS_EPOLL_CREATE1          = 4326\n\tSYS_DUP3                   = 4327\n\tSYS_PIPE2                  = 4328\n\tSYS_INOTIFY_INIT1          = 4329\n\tSYS_PREADV                 = 4330\n\tSYS_PWRITEV                = 4331\n\tSYS_RT_TGSIGQUEUEINFO      = 4332\n\tSYS_PERF_EVENT_OPEN        = 4333\n\tSYS_ACCEPT4                = 4334\n\tSYS_RECVMMSG               = 4335\n\tSYS_FANOTIFY_INIT          = 4336\n\tSYS_FANOTIFY_MARK          = 4337\n\tSYS_PRLIMIT64              = 4338\n\tSYS_NAME_TO_HANDLE_AT      = 4339\n\tSYS_OPEN_BY_HANDLE_AT      = 4340\n\tSYS_CLOCK_ADJTIME          = 4341\n\tSYS_SYNCFS                 = 4342\n\tSYS_SENDMMSG               = 4343\n\tSYS_SETNS                  = 4344\n\tSYS_PROCESS_VM_READV       = 4345\n\tSYS_PROCESS_VM_WRITEV      = 4346\n\tSYS_KCMP                   = 4347\n\tSYS_FINIT_MODULE           = 4348\n\tSYS_SCHED_SETATTR          = 4349\n\tSYS_SCHED_GETATTR          = 4350\n\tSYS_RENAMEAT2              = 4351\n\tSYS_SECCOMP                = 4352\n\tSYS_GETRANDOM              = 4353\n\tSYS_MEMFD_CREATE           = 4354\n\tSYS_BPF                    = 4355\n\tSYS_EXECVEAT               = 4356\n\tSYS_USERFAULTFD            = 4357\n\tSYS_MEMBARRIER             = 4358\n\tSYS_MLOCK2                 = 4359\n\tSYS_COPY_FILE_RANGE        = 4360\n\tSYS_PREADV2                = 4361\n\tSYS_PWRITEV2               = 4362\n\tSYS_PKEY_MPROTECT          = 4363\n\tSYS_PKEY_ALLOC             = 4364\n\tSYS_PKEY_FREE              = 4365\n\tSYS_STATX                  = 4366\n\tSYS_RSEQ                   = 4367\n\tSYS_IO_PGETEVENTS          = 4368\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64,linux\n\npackage unix\n\nconst (\n\tSYS_READ                   = 5000\n\tSYS_WRITE                  = 5001\n\tSYS_OPEN                   = 5002\n\tSYS_CLOSE                  = 5003\n\tSYS_STAT                   = 5004\n\tSYS_FSTAT                  = 5005\n\tSYS_LSTAT                  = 5006\n\tSYS_POLL                   = 5007\n\tSYS_LSEEK                  = 5008\n\tSYS_MMAP                   = 5009\n\tSYS_MPROTECT               = 5010\n\tSYS_MUNMAP                 = 5011\n\tSYS_BRK                    = 5012\n\tSYS_RT_SIGACTION           = 5013\n\tSYS_RT_SIGPROCMASK         = 5014\n\tSYS_IOCTL                  = 5015\n\tSYS_PREAD64                = 5016\n\tSYS_PWRITE64               = 5017\n\tSYS_READV                  = 5018\n\tSYS_WRITEV                 = 5019\n\tSYS_ACCESS                 = 5020\n\tSYS_PIPE                   = 5021\n\tSYS__NEWSELECT             = 5022\n\tSYS_SCHED_YIELD            = 5023\n\tSYS_MREMAP                 = 5024\n\tSYS_MSYNC                  = 5025\n\tSYS_MINCORE                = 5026\n\tSYS_MADVISE                = 5027\n\tSYS_SHMGET                 = 5028\n\tSYS_SHMAT                  = 5029\n\tSYS_SHMCTL                 = 5030\n\tSYS_DUP                    = 5031\n\tSYS_DUP2                   = 5032\n\tSYS_PAUSE                  = 5033\n\tSYS_NANOSLEEP              = 5034\n\tSYS_GETITIMER              = 5035\n\tSYS_SETITIMER              = 5036\n\tSYS_ALARM                  = 5037\n\tSYS_GETPID                 = 5038\n\tSYS_SENDFILE               = 5039\n\tSYS_SOCKET                 = 5040\n\tSYS_CONNECT                = 5041\n\tSYS_ACCEPT                 = 5042\n\tSYS_SENDTO                 = 5043\n\tSYS_RECVFROM               = 5044\n\tSYS_SENDMSG                = 5045\n\tSYS_RECVMSG                = 5046\n\tSYS_SHUTDOWN               = 5047\n\tSYS_BIND                   = 5048\n\tSYS_LISTEN                 = 5049\n\tSYS_GETSOCKNAME            = 5050\n\tSYS_GETPEERNAME            = 5051\n\tSYS_SOCKETPAIR             = 5052\n\tSYS_SETSOCKOPT             = 5053\n\tSYS_GETSOCKOPT             = 5054\n\tSYS_CLONE                  = 5055\n\tSYS_FORK                   = 5056\n\tSYS_EXECVE                 = 5057\n\tSYS_EXIT                   = 5058\n\tSYS_WAIT4                  = 5059\n\tSYS_KILL                   = 5060\n\tSYS_UNAME                  = 5061\n\tSYS_SEMGET                 = 5062\n\tSYS_SEMOP                  = 5063\n\tSYS_SEMCTL                 = 5064\n\tSYS_SHMDT                  = 5065\n\tSYS_MSGGET                 = 5066\n\tSYS_MSGSND                 = 5067\n\tSYS_MSGRCV                 = 5068\n\tSYS_MSGCTL                 = 5069\n\tSYS_FCNTL                  = 5070\n\tSYS_FLOCK                  = 5071\n\tSYS_FSYNC                  = 5072\n\tSYS_FDATASYNC              = 5073\n\tSYS_TRUNCATE               = 5074\n\tSYS_FTRUNCATE              = 5075\n\tSYS_GETDENTS               = 5076\n\tSYS_GETCWD                 = 5077\n\tSYS_CHDIR                  = 5078\n\tSYS_FCHDIR                 = 5079\n\tSYS_RENAME                 = 5080\n\tSYS_MKDIR                  = 5081\n\tSYS_RMDIR                  = 5082\n\tSYS_CREAT                  = 5083\n\tSYS_LINK                   = 5084\n\tSYS_UNLINK                 = 5085\n\tSYS_SYMLINK                = 5086\n\tSYS_READLINK               = 5087\n\tSYS_CHMOD                  = 5088\n\tSYS_FCHMOD                 = 5089\n\tSYS_CHOWN                  = 5090\n\tSYS_FCHOWN                 = 5091\n\tSYS_LCHOWN                 = 5092\n\tSYS_UMASK                  = 5093\n\tSYS_GETTIMEOFDAY           = 5094\n\tSYS_GETRLIMIT              = 5095\n\tSYS_GETRUSAGE              = 5096\n\tSYS_SYSINFO                = 5097\n\tSYS_TIMES                  = 5098\n\tSYS_PTRACE                 = 5099\n\tSYS_GETUID                 = 5100\n\tSYS_SYSLOG                 = 5101\n\tSYS_GETGID                 = 5102\n\tSYS_SETUID                 = 5103\n\tSYS_SETGID                 = 5104\n\tSYS_GETEUID                = 5105\n\tSYS_GETEGID                = 5106\n\tSYS_SETPGID                = 5107\n\tSYS_GETPPID                = 5108\n\tSYS_GETPGRP                = 5109\n\tSYS_SETSID                 = 5110\n\tSYS_SETREUID               = 5111\n\tSYS_SETREGID               = 5112\n\tSYS_GETGROUPS              = 5113\n\tSYS_SETGROUPS              = 5114\n\tSYS_SETRESUID              = 5115\n\tSYS_GETRESUID              = 5116\n\tSYS_SETRESGID              = 5117\n\tSYS_GETRESGID              = 5118\n\tSYS_GETPGID                = 5119\n\tSYS_SETFSUID               = 5120\n\tSYS_SETFSGID               = 5121\n\tSYS_GETSID                 = 5122\n\tSYS_CAPGET                 = 5123\n\tSYS_CAPSET                 = 5124\n\tSYS_RT_SIGPENDING          = 5125\n\tSYS_RT_SIGTIMEDWAIT        = 5126\n\tSYS_RT_SIGQUEUEINFO        = 5127\n\tSYS_RT_SIGSUSPEND          = 5128\n\tSYS_SIGALTSTACK            = 5129\n\tSYS_UTIME                  = 5130\n\tSYS_MKNOD                  = 5131\n\tSYS_PERSONALITY            = 5132\n\tSYS_USTAT                  = 5133\n\tSYS_STATFS                 = 5134\n\tSYS_FSTATFS                = 5135\n\tSYS_SYSFS                  = 5136\n\tSYS_GETPRIORITY            = 5137\n\tSYS_SETPRIORITY            = 5138\n\tSYS_SCHED_SETPARAM         = 5139\n\tSYS_SCHED_GETPARAM         = 5140\n\tSYS_SCHED_SETSCHEDULER     = 5141\n\tSYS_SCHED_GETSCHEDULER     = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN = 5144\n\tSYS_SCHED_RR_GET_INTERVAL  = 5145\n\tSYS_MLOCK                  = 5146\n\tSYS_MUNLOCK                = 5147\n\tSYS_MLOCKALL               = 5148\n\tSYS_MUNLOCKALL             = 5149\n\tSYS_VHANGUP                = 5150\n\tSYS_PIVOT_ROOT             = 5151\n\tSYS__SYSCTL                = 5152\n\tSYS_PRCTL                  = 5153\n\tSYS_ADJTIMEX               = 5154\n\tSYS_SETRLIMIT              = 5155\n\tSYS_CHROOT                 = 5156\n\tSYS_SYNC                   = 5157\n\tSYS_ACCT                   = 5158\n\tSYS_SETTIMEOFDAY           = 5159\n\tSYS_MOUNT                  = 5160\n\tSYS_UMOUNT2                = 5161\n\tSYS_SWAPON                 = 5162\n\tSYS_SWAPOFF                = 5163\n\tSYS_REBOOT                 = 5164\n\tSYS_SETHOSTNAME            = 5165\n\tSYS_SETDOMAINNAME          = 5166\n\tSYS_CREATE_MODULE          = 5167\n\tSYS_INIT_MODULE            = 5168\n\tSYS_DELETE_MODULE          = 5169\n\tSYS_GET_KERNEL_SYMS        = 5170\n\tSYS_QUERY_MODULE           = 5171\n\tSYS_QUOTACTL               = 5172\n\tSYS_NFSSERVCTL             = 5173\n\tSYS_GETPMSG                = 5174\n\tSYS_PUTPMSG                = 5175\n\tSYS_AFS_SYSCALL            = 5176\n\tSYS_RESERVED177            = 5177\n\tSYS_GETTID                 = 5178\n\tSYS_READAHEAD              = 5179\n\tSYS_SETXATTR               = 5180\n\tSYS_LSETXATTR              = 5181\n\tSYS_FSETXATTR              = 5182\n\tSYS_GETXATTR               = 5183\n\tSYS_LGETXATTR              = 5184\n\tSYS_FGETXATTR              = 5185\n\tSYS_LISTXATTR              = 5186\n\tSYS_LLISTXATTR             = 5187\n\tSYS_FLISTXATTR             = 5188\n\tSYS_REMOVEXATTR            = 5189\n\tSYS_LREMOVEXATTR           = 5190\n\tSYS_FREMOVEXATTR           = 5191\n\tSYS_TKILL                  = 5192\n\tSYS_RESERVED193            = 5193\n\tSYS_FUTEX                  = 5194\n\tSYS_SCHED_SETAFFINITY      = 5195\n\tSYS_SCHED_GETAFFINITY      = 5196\n\tSYS_CACHEFLUSH             = 5197\n\tSYS_CACHECTL               = 5198\n\tSYS_SYSMIPS                = 5199\n\tSYS_IO_SETUP               = 5200\n\tSYS_IO_DESTROY             = 5201\n\tSYS_IO_GETEVENTS           = 5202\n\tSYS_IO_SUBMIT              = 5203\n\tSYS_IO_CANCEL              = 5204\n\tSYS_EXIT_GROUP             = 5205\n\tSYS_LOOKUP_DCOOKIE         = 5206\n\tSYS_EPOLL_CREATE           = 5207\n\tSYS_EPOLL_CTL              = 5208\n\tSYS_EPOLL_WAIT             = 5209\n\tSYS_REMAP_FILE_PAGES       = 5210\n\tSYS_RT_SIGRETURN           = 5211\n\tSYS_SET_TID_ADDRESS        = 5212\n\tSYS_RESTART_SYSCALL        = 5213\n\tSYS_SEMTIMEDOP             = 5214\n\tSYS_FADVISE64              = 5215\n\tSYS_TIMER_CREATE           = 5216\n\tSYS_TIMER_SETTIME          = 5217\n\tSYS_TIMER_GETTIME          = 5218\n\tSYS_TIMER_GETOVERRUN       = 5219\n\tSYS_TIMER_DELETE           = 5220\n\tSYS_CLOCK_SETTIME          = 5221\n\tSYS_CLOCK_GETTIME          = 5222\n\tSYS_CLOCK_GETRES           = 5223\n\tSYS_CLOCK_NANOSLEEP        = 5224\n\tSYS_TGKILL                 = 5225\n\tSYS_UTIMES                 = 5226\n\tSYS_MBIND                  = 5227\n\tSYS_GET_MEMPOLICY          = 5228\n\tSYS_SET_MEMPOLICY          = 5229\n\tSYS_MQ_OPEN                = 5230\n\tSYS_MQ_UNLINK              = 5231\n\tSYS_MQ_TIMEDSEND           = 5232\n\tSYS_MQ_TIMEDRECEIVE        = 5233\n\tSYS_MQ_NOTIFY              = 5234\n\tSYS_MQ_GETSETATTR          = 5235\n\tSYS_VSERVER                = 5236\n\tSYS_WAITID                 = 5237\n\tSYS_ADD_KEY                = 5239\n\tSYS_REQUEST_KEY            = 5240\n\tSYS_KEYCTL                 = 5241\n\tSYS_SET_THREAD_AREA        = 5242\n\tSYS_INOTIFY_INIT           = 5243\n\tSYS_INOTIFY_ADD_WATCH      = 5244\n\tSYS_INOTIFY_RM_WATCH       = 5245\n\tSYS_MIGRATE_PAGES          = 5246\n\tSYS_OPENAT                 = 5247\n\tSYS_MKDIRAT                = 5248\n\tSYS_MKNODAT                = 5249\n\tSYS_FCHOWNAT               = 5250\n\tSYS_FUTIMESAT              = 5251\n\tSYS_NEWFSTATAT             = 5252\n\tSYS_UNLINKAT               = 5253\n\tSYS_RENAMEAT               = 5254\n\tSYS_LINKAT                 = 5255\n\tSYS_SYMLINKAT              = 5256\n\tSYS_READLINKAT             = 5257\n\tSYS_FCHMODAT               = 5258\n\tSYS_FACCESSAT              = 5259\n\tSYS_PSELECT6               = 5260\n\tSYS_PPOLL                  = 5261\n\tSYS_UNSHARE                = 5262\n\tSYS_SPLICE                 = 5263\n\tSYS_SYNC_FILE_RANGE        = 5264\n\tSYS_TEE                    = 5265\n\tSYS_VMSPLICE               = 5266\n\tSYS_MOVE_PAGES             = 5267\n\tSYS_SET_ROBUST_LIST        = 5268\n\tSYS_GET_ROBUST_LIST        = 5269\n\tSYS_KEXEC_LOAD             = 5270\n\tSYS_GETCPU                 = 5271\n\tSYS_EPOLL_PWAIT            = 5272\n\tSYS_IOPRIO_SET             = 5273\n\tSYS_IOPRIO_GET             = 5274\n\tSYS_UTIMENSAT              = 5275\n\tSYS_SIGNALFD               = 5276\n\tSYS_TIMERFD                = 5277\n\tSYS_EVENTFD                = 5278\n\tSYS_FALLOCATE              = 5279\n\tSYS_TIMERFD_CREATE         = 5280\n\tSYS_TIMERFD_GETTIME        = 5281\n\tSYS_TIMERFD_SETTIME        = 5282\n\tSYS_SIGNALFD4              = 5283\n\tSYS_EVENTFD2               = 5284\n\tSYS_EPOLL_CREATE1          = 5285\n\tSYS_DUP3                   = 5286\n\tSYS_PIPE2                  = 5287\n\tSYS_INOTIFY_INIT1          = 5288\n\tSYS_PREADV                 = 5289\n\tSYS_PWRITEV                = 5290\n\tSYS_RT_TGSIGQUEUEINFO      = 5291\n\tSYS_PERF_EVENT_OPEN        = 5292\n\tSYS_ACCEPT4                = 5293\n\tSYS_RECVMMSG               = 5294\n\tSYS_FANOTIFY_INIT          = 5295\n\tSYS_FANOTIFY_MARK          = 5296\n\tSYS_PRLIMIT64              = 5297\n\tSYS_NAME_TO_HANDLE_AT      = 5298\n\tSYS_OPEN_BY_HANDLE_AT      = 5299\n\tSYS_CLOCK_ADJTIME          = 5300\n\tSYS_SYNCFS                 = 5301\n\tSYS_SENDMMSG               = 5302\n\tSYS_SETNS                  = 5303\n\tSYS_PROCESS_VM_READV       = 5304\n\tSYS_PROCESS_VM_WRITEV      = 5305\n\tSYS_KCMP                   = 5306\n\tSYS_FINIT_MODULE           = 5307\n\tSYS_GETDENTS64             = 5308\n\tSYS_SCHED_SETATTR          = 5309\n\tSYS_SCHED_GETATTR          = 5310\n\tSYS_RENAMEAT2              = 5311\n\tSYS_SECCOMP                = 5312\n\tSYS_GETRANDOM              = 5313\n\tSYS_MEMFD_CREATE           = 5314\n\tSYS_BPF                    = 5315\n\tSYS_EXECVEAT               = 5316\n\tSYS_USERFAULTFD            = 5317\n\tSYS_MEMBARRIER             = 5318\n\tSYS_MLOCK2                 = 5319\n\tSYS_COPY_FILE_RANGE        = 5320\n\tSYS_PREADV2                = 5321\n\tSYS_PWRITEV2               = 5322\n\tSYS_PKEY_MPROTECT          = 5323\n\tSYS_PKEY_ALLOC             = 5324\n\tSYS_PKEY_FREE              = 5325\n\tSYS_STATX                  = 5326\n\tSYS_RSEQ                   = 5327\n\tSYS_IO_PGETEVENTS          = 5328\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64le,linux\n\npackage unix\n\nconst (\n\tSYS_READ                   = 5000\n\tSYS_WRITE                  = 5001\n\tSYS_OPEN                   = 5002\n\tSYS_CLOSE                  = 5003\n\tSYS_STAT                   = 5004\n\tSYS_FSTAT                  = 5005\n\tSYS_LSTAT                  = 5006\n\tSYS_POLL                   = 5007\n\tSYS_LSEEK                  = 5008\n\tSYS_MMAP                   = 5009\n\tSYS_MPROTECT               = 5010\n\tSYS_MUNMAP                 = 5011\n\tSYS_BRK                    = 5012\n\tSYS_RT_SIGACTION           = 5013\n\tSYS_RT_SIGPROCMASK         = 5014\n\tSYS_IOCTL                  = 5015\n\tSYS_PREAD64                = 5016\n\tSYS_PWRITE64               = 5017\n\tSYS_READV                  = 5018\n\tSYS_WRITEV                 = 5019\n\tSYS_ACCESS                 = 5020\n\tSYS_PIPE                   = 5021\n\tSYS__NEWSELECT             = 5022\n\tSYS_SCHED_YIELD            = 5023\n\tSYS_MREMAP                 = 5024\n\tSYS_MSYNC                  = 5025\n\tSYS_MINCORE                = 5026\n\tSYS_MADVISE                = 5027\n\tSYS_SHMGET                 = 5028\n\tSYS_SHMAT                  = 5029\n\tSYS_SHMCTL                 = 5030\n\tSYS_DUP                    = 5031\n\tSYS_DUP2                   = 5032\n\tSYS_PAUSE                  = 5033\n\tSYS_NANOSLEEP              = 5034\n\tSYS_GETITIMER              = 5035\n\tSYS_SETITIMER              = 5036\n\tSYS_ALARM                  = 5037\n\tSYS_GETPID                 = 5038\n\tSYS_SENDFILE               = 5039\n\tSYS_SOCKET                 = 5040\n\tSYS_CONNECT                = 5041\n\tSYS_ACCEPT                 = 5042\n\tSYS_SENDTO                 = 5043\n\tSYS_RECVFROM               = 5044\n\tSYS_SENDMSG                = 5045\n\tSYS_RECVMSG                = 5046\n\tSYS_SHUTDOWN               = 5047\n\tSYS_BIND                   = 5048\n\tSYS_LISTEN                 = 5049\n\tSYS_GETSOCKNAME            = 5050\n\tSYS_GETPEERNAME            = 5051\n\tSYS_SOCKETPAIR             = 5052\n\tSYS_SETSOCKOPT             = 5053\n\tSYS_GETSOCKOPT             = 5054\n\tSYS_CLONE                  = 5055\n\tSYS_FORK                   = 5056\n\tSYS_EXECVE                 = 5057\n\tSYS_EXIT                   = 5058\n\tSYS_WAIT4                  = 5059\n\tSYS_KILL                   = 5060\n\tSYS_UNAME                  = 5061\n\tSYS_SEMGET                 = 5062\n\tSYS_SEMOP                  = 5063\n\tSYS_SEMCTL                 = 5064\n\tSYS_SHMDT                  = 5065\n\tSYS_MSGGET                 = 5066\n\tSYS_MSGSND                 = 5067\n\tSYS_MSGRCV                 = 5068\n\tSYS_MSGCTL                 = 5069\n\tSYS_FCNTL                  = 5070\n\tSYS_FLOCK                  = 5071\n\tSYS_FSYNC                  = 5072\n\tSYS_FDATASYNC              = 5073\n\tSYS_TRUNCATE               = 5074\n\tSYS_FTRUNCATE              = 5075\n\tSYS_GETDENTS               = 5076\n\tSYS_GETCWD                 = 5077\n\tSYS_CHDIR                  = 5078\n\tSYS_FCHDIR                 = 5079\n\tSYS_RENAME                 = 5080\n\tSYS_MKDIR                  = 5081\n\tSYS_RMDIR                  = 5082\n\tSYS_CREAT                  = 5083\n\tSYS_LINK                   = 5084\n\tSYS_UNLINK                 = 5085\n\tSYS_SYMLINK                = 5086\n\tSYS_READLINK               = 5087\n\tSYS_CHMOD                  = 5088\n\tSYS_FCHMOD                 = 5089\n\tSYS_CHOWN                  = 5090\n\tSYS_FCHOWN                 = 5091\n\tSYS_LCHOWN                 = 5092\n\tSYS_UMASK                  = 5093\n\tSYS_GETTIMEOFDAY           = 5094\n\tSYS_GETRLIMIT              = 5095\n\tSYS_GETRUSAGE              = 5096\n\tSYS_SYSINFO                = 5097\n\tSYS_TIMES                  = 5098\n\tSYS_PTRACE                 = 5099\n\tSYS_GETUID                 = 5100\n\tSYS_SYSLOG                 = 5101\n\tSYS_GETGID                 = 5102\n\tSYS_SETUID                 = 5103\n\tSYS_SETGID                 = 5104\n\tSYS_GETEUID                = 5105\n\tSYS_GETEGID                = 5106\n\tSYS_SETPGID                = 5107\n\tSYS_GETPPID                = 5108\n\tSYS_GETPGRP                = 5109\n\tSYS_SETSID                 = 5110\n\tSYS_SETREUID               = 5111\n\tSYS_SETREGID               = 5112\n\tSYS_GETGROUPS              = 5113\n\tSYS_SETGROUPS              = 5114\n\tSYS_SETRESUID              = 5115\n\tSYS_GETRESUID              = 5116\n\tSYS_SETRESGID              = 5117\n\tSYS_GETRESGID              = 5118\n\tSYS_GETPGID                = 5119\n\tSYS_SETFSUID               = 5120\n\tSYS_SETFSGID               = 5121\n\tSYS_GETSID                 = 5122\n\tSYS_CAPGET                 = 5123\n\tSYS_CAPSET                 = 5124\n\tSYS_RT_SIGPENDING          = 5125\n\tSYS_RT_SIGTIMEDWAIT        = 5126\n\tSYS_RT_SIGQUEUEINFO        = 5127\n\tSYS_RT_SIGSUSPEND          = 5128\n\tSYS_SIGALTSTACK            = 5129\n\tSYS_UTIME                  = 5130\n\tSYS_MKNOD                  = 5131\n\tSYS_PERSONALITY            = 5132\n\tSYS_USTAT                  = 5133\n\tSYS_STATFS                 = 5134\n\tSYS_FSTATFS                = 5135\n\tSYS_SYSFS                  = 5136\n\tSYS_GETPRIORITY            = 5137\n\tSYS_SETPRIORITY            = 5138\n\tSYS_SCHED_SETPARAM         = 5139\n\tSYS_SCHED_GETPARAM         = 5140\n\tSYS_SCHED_SETSCHEDULER     = 5141\n\tSYS_SCHED_GETSCHEDULER     = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN = 5144\n\tSYS_SCHED_RR_GET_INTERVAL  = 5145\n\tSYS_MLOCK                  = 5146\n\tSYS_MUNLOCK                = 5147\n\tSYS_MLOCKALL               = 5148\n\tSYS_MUNLOCKALL             = 5149\n\tSYS_VHANGUP                = 5150\n\tSYS_PIVOT_ROOT             = 5151\n\tSYS__SYSCTL                = 5152\n\tSYS_PRCTL                  = 5153\n\tSYS_ADJTIMEX               = 5154\n\tSYS_SETRLIMIT              = 5155\n\tSYS_CHROOT                 = 5156\n\tSYS_SYNC                   = 5157\n\tSYS_ACCT                   = 5158\n\tSYS_SETTIMEOFDAY           = 5159\n\tSYS_MOUNT                  = 5160\n\tSYS_UMOUNT2                = 5161\n\tSYS_SWAPON                 = 5162\n\tSYS_SWAPOFF                = 5163\n\tSYS_REBOOT                 = 5164\n\tSYS_SETHOSTNAME            = 5165\n\tSYS_SETDOMAINNAME          = 5166\n\tSYS_CREATE_MODULE          = 5167\n\tSYS_INIT_MODULE            = 5168\n\tSYS_DELETE_MODULE          = 5169\n\tSYS_GET_KERNEL_SYMS        = 5170\n\tSYS_QUERY_MODULE           = 5171\n\tSYS_QUOTACTL               = 5172\n\tSYS_NFSSERVCTL             = 5173\n\tSYS_GETPMSG                = 5174\n\tSYS_PUTPMSG                = 5175\n\tSYS_AFS_SYSCALL            = 5176\n\tSYS_RESERVED177            = 5177\n\tSYS_GETTID                 = 5178\n\tSYS_READAHEAD              = 5179\n\tSYS_SETXATTR               = 5180\n\tSYS_LSETXATTR              = 5181\n\tSYS_FSETXATTR              = 5182\n\tSYS_GETXATTR               = 5183\n\tSYS_LGETXATTR              = 5184\n\tSYS_FGETXATTR              = 5185\n\tSYS_LISTXATTR              = 5186\n\tSYS_LLISTXATTR             = 5187\n\tSYS_FLISTXATTR             = 5188\n\tSYS_REMOVEXATTR            = 5189\n\tSYS_LREMOVEXATTR           = 5190\n\tSYS_FREMOVEXATTR           = 5191\n\tSYS_TKILL                  = 5192\n\tSYS_RESERVED193            = 5193\n\tSYS_FUTEX                  = 5194\n\tSYS_SCHED_SETAFFINITY      = 5195\n\tSYS_SCHED_GETAFFINITY      = 5196\n\tSYS_CACHEFLUSH             = 5197\n\tSYS_CACHECTL               = 5198\n\tSYS_SYSMIPS                = 5199\n\tSYS_IO_SETUP               = 5200\n\tSYS_IO_DESTROY             = 5201\n\tSYS_IO_GETEVENTS           = 5202\n\tSYS_IO_SUBMIT              = 5203\n\tSYS_IO_CANCEL              = 5204\n\tSYS_EXIT_GROUP             = 5205\n\tSYS_LOOKUP_DCOOKIE         = 5206\n\tSYS_EPOLL_CREATE           = 5207\n\tSYS_EPOLL_CTL              = 5208\n\tSYS_EPOLL_WAIT             = 5209\n\tSYS_REMAP_FILE_PAGES       = 5210\n\tSYS_RT_SIGRETURN           = 5211\n\tSYS_SET_TID_ADDRESS        = 5212\n\tSYS_RESTART_SYSCALL        = 5213\n\tSYS_SEMTIMEDOP             = 5214\n\tSYS_FADVISE64              = 5215\n\tSYS_TIMER_CREATE           = 5216\n\tSYS_TIMER_SETTIME          = 5217\n\tSYS_TIMER_GETTIME          = 5218\n\tSYS_TIMER_GETOVERRUN       = 5219\n\tSYS_TIMER_DELETE           = 5220\n\tSYS_CLOCK_SETTIME          = 5221\n\tSYS_CLOCK_GETTIME          = 5222\n\tSYS_CLOCK_GETRES           = 5223\n\tSYS_CLOCK_NANOSLEEP        = 5224\n\tSYS_TGKILL                 = 5225\n\tSYS_UTIMES                 = 5226\n\tSYS_MBIND                  = 5227\n\tSYS_GET_MEMPOLICY          = 5228\n\tSYS_SET_MEMPOLICY          = 5229\n\tSYS_MQ_OPEN                = 5230\n\tSYS_MQ_UNLINK              = 5231\n\tSYS_MQ_TIMEDSEND           = 5232\n\tSYS_MQ_TIMEDRECEIVE        = 5233\n\tSYS_MQ_NOTIFY              = 5234\n\tSYS_MQ_GETSETATTR          = 5235\n\tSYS_VSERVER                = 5236\n\tSYS_WAITID                 = 5237\n\tSYS_ADD_KEY                = 5239\n\tSYS_REQUEST_KEY            = 5240\n\tSYS_KEYCTL                 = 5241\n\tSYS_SET_THREAD_AREA        = 5242\n\tSYS_INOTIFY_INIT           = 5243\n\tSYS_INOTIFY_ADD_WATCH      = 5244\n\tSYS_INOTIFY_RM_WATCH       = 5245\n\tSYS_MIGRATE_PAGES          = 5246\n\tSYS_OPENAT                 = 5247\n\tSYS_MKDIRAT                = 5248\n\tSYS_MKNODAT                = 5249\n\tSYS_FCHOWNAT               = 5250\n\tSYS_FUTIMESAT              = 5251\n\tSYS_NEWFSTATAT             = 5252\n\tSYS_UNLINKAT               = 5253\n\tSYS_RENAMEAT               = 5254\n\tSYS_LINKAT                 = 5255\n\tSYS_SYMLINKAT              = 5256\n\tSYS_READLINKAT             = 5257\n\tSYS_FCHMODAT               = 5258\n\tSYS_FACCESSAT              = 5259\n\tSYS_PSELECT6               = 5260\n\tSYS_PPOLL                  = 5261\n\tSYS_UNSHARE                = 5262\n\tSYS_SPLICE                 = 5263\n\tSYS_SYNC_FILE_RANGE        = 5264\n\tSYS_TEE                    = 5265\n\tSYS_VMSPLICE               = 5266\n\tSYS_MOVE_PAGES             = 5267\n\tSYS_SET_ROBUST_LIST        = 5268\n\tSYS_GET_ROBUST_LIST        = 5269\n\tSYS_KEXEC_LOAD             = 5270\n\tSYS_GETCPU                 = 5271\n\tSYS_EPOLL_PWAIT            = 5272\n\tSYS_IOPRIO_SET             = 5273\n\tSYS_IOPRIO_GET             = 5274\n\tSYS_UTIMENSAT              = 5275\n\tSYS_SIGNALFD               = 5276\n\tSYS_TIMERFD                = 5277\n\tSYS_EVENTFD                = 5278\n\tSYS_FALLOCATE              = 5279\n\tSYS_TIMERFD_CREATE         = 5280\n\tSYS_TIMERFD_GETTIME        = 5281\n\tSYS_TIMERFD_SETTIME        = 5282\n\tSYS_SIGNALFD4              = 5283\n\tSYS_EVENTFD2               = 5284\n\tSYS_EPOLL_CREATE1          = 5285\n\tSYS_DUP3                   = 5286\n\tSYS_PIPE2                  = 5287\n\tSYS_INOTIFY_INIT1          = 5288\n\tSYS_PREADV                 = 5289\n\tSYS_PWRITEV                = 5290\n\tSYS_RT_TGSIGQUEUEINFO      = 5291\n\tSYS_PERF_EVENT_OPEN        = 5292\n\tSYS_ACCEPT4                = 5293\n\tSYS_RECVMMSG               = 5294\n\tSYS_FANOTIFY_INIT          = 5295\n\tSYS_FANOTIFY_MARK          = 5296\n\tSYS_PRLIMIT64              = 5297\n\tSYS_NAME_TO_HANDLE_AT      = 5298\n\tSYS_OPEN_BY_HANDLE_AT      = 5299\n\tSYS_CLOCK_ADJTIME          = 5300\n\tSYS_SYNCFS                 = 5301\n\tSYS_SENDMMSG               = 5302\n\tSYS_SETNS                  = 5303\n\tSYS_PROCESS_VM_READV       = 5304\n\tSYS_PROCESS_VM_WRITEV      = 5305\n\tSYS_KCMP                   = 5306\n\tSYS_FINIT_MODULE           = 5307\n\tSYS_GETDENTS64             = 5308\n\tSYS_SCHED_SETATTR          = 5309\n\tSYS_SCHED_GETATTR          = 5310\n\tSYS_RENAMEAT2              = 5311\n\tSYS_SECCOMP                = 5312\n\tSYS_GETRANDOM              = 5313\n\tSYS_MEMFD_CREATE           = 5314\n\tSYS_BPF                    = 5315\n\tSYS_EXECVEAT               = 5316\n\tSYS_USERFAULTFD            = 5317\n\tSYS_MEMBARRIER             = 5318\n\tSYS_MLOCK2                 = 5319\n\tSYS_COPY_FILE_RANGE        = 5320\n\tSYS_PREADV2                = 5321\n\tSYS_PWRITEV2               = 5322\n\tSYS_PKEY_MPROTECT          = 5323\n\tSYS_PKEY_ALLOC             = 5324\n\tSYS_PKEY_FREE              = 5325\n\tSYS_STATX                  = 5326\n\tSYS_RSEQ                   = 5327\n\tSYS_IO_PGETEVENTS          = 5328\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mipsle,linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                = 4000\n\tSYS_EXIT                   = 4001\n\tSYS_FORK                   = 4002\n\tSYS_READ                   = 4003\n\tSYS_WRITE                  = 4004\n\tSYS_OPEN                   = 4005\n\tSYS_CLOSE                  = 4006\n\tSYS_WAITPID                = 4007\n\tSYS_CREAT                  = 4008\n\tSYS_LINK                   = 4009\n\tSYS_UNLINK                 = 4010\n\tSYS_EXECVE                 = 4011\n\tSYS_CHDIR                  = 4012\n\tSYS_TIME                   = 4013\n\tSYS_MKNOD                  = 4014\n\tSYS_CHMOD                  = 4015\n\tSYS_LCHOWN                 = 4016\n\tSYS_BREAK                  = 4017\n\tSYS_UNUSED18               = 4018\n\tSYS_LSEEK                  = 4019\n\tSYS_GETPID                 = 4020\n\tSYS_MOUNT                  = 4021\n\tSYS_UMOUNT                 = 4022\n\tSYS_SETUID                 = 4023\n\tSYS_GETUID                 = 4024\n\tSYS_STIME                  = 4025\n\tSYS_PTRACE                 = 4026\n\tSYS_ALARM                  = 4027\n\tSYS_UNUSED28               = 4028\n\tSYS_PAUSE                  = 4029\n\tSYS_UTIME                  = 4030\n\tSYS_STTY                   = 4031\n\tSYS_GTTY                   = 4032\n\tSYS_ACCESS                 = 4033\n\tSYS_NICE                   = 4034\n\tSYS_FTIME                  = 4035\n\tSYS_SYNC                   = 4036\n\tSYS_KILL                   = 4037\n\tSYS_RENAME                 = 4038\n\tSYS_MKDIR                  = 4039\n\tSYS_RMDIR                  = 4040\n\tSYS_DUP                    = 4041\n\tSYS_PIPE                   = 4042\n\tSYS_TIMES                  = 4043\n\tSYS_PROF                   = 4044\n\tSYS_BRK                    = 4045\n\tSYS_SETGID                 = 4046\n\tSYS_GETGID                 = 4047\n\tSYS_SIGNAL                 = 4048\n\tSYS_GETEUID                = 4049\n\tSYS_GETEGID                = 4050\n\tSYS_ACCT                   = 4051\n\tSYS_UMOUNT2                = 4052\n\tSYS_LOCK                   = 4053\n\tSYS_IOCTL                  = 4054\n\tSYS_FCNTL                  = 4055\n\tSYS_MPX                    = 4056\n\tSYS_SETPGID                = 4057\n\tSYS_ULIMIT                 = 4058\n\tSYS_UNUSED59               = 4059\n\tSYS_UMASK                  = 4060\n\tSYS_CHROOT                 = 4061\n\tSYS_USTAT                  = 4062\n\tSYS_DUP2                   = 4063\n\tSYS_GETPPID                = 4064\n\tSYS_GETPGRP                = 4065\n\tSYS_SETSID                 = 4066\n\tSYS_SIGACTION              = 4067\n\tSYS_SGETMASK               = 4068\n\tSYS_SSETMASK               = 4069\n\tSYS_SETREUID               = 4070\n\tSYS_SETREGID               = 4071\n\tSYS_SIGSUSPEND             = 4072\n\tSYS_SIGPENDING             = 4073\n\tSYS_SETHOSTNAME            = 4074\n\tSYS_SETRLIMIT              = 4075\n\tSYS_GETRLIMIT              = 4076\n\tSYS_GETRUSAGE              = 4077\n\tSYS_GETTIMEOFDAY           = 4078\n\tSYS_SETTIMEOFDAY           = 4079\n\tSYS_GETGROUPS              = 4080\n\tSYS_SETGROUPS              = 4081\n\tSYS_RESERVED82             = 4082\n\tSYS_SYMLINK                = 4083\n\tSYS_UNUSED84               = 4084\n\tSYS_READLINK               = 4085\n\tSYS_USELIB                 = 4086\n\tSYS_SWAPON                 = 4087\n\tSYS_REBOOT                 = 4088\n\tSYS_READDIR                = 4089\n\tSYS_MMAP                   = 4090\n\tSYS_MUNMAP                 = 4091\n\tSYS_TRUNCATE               = 4092\n\tSYS_FTRUNCATE              = 4093\n\tSYS_FCHMOD                 = 4094\n\tSYS_FCHOWN                 = 4095\n\tSYS_GETPRIORITY            = 4096\n\tSYS_SETPRIORITY            = 4097\n\tSYS_PROFIL                 = 4098\n\tSYS_STATFS                 = 4099\n\tSYS_FSTATFS                = 4100\n\tSYS_IOPERM                 = 4101\n\tSYS_SOCKETCALL             = 4102\n\tSYS_SYSLOG                 = 4103\n\tSYS_SETITIMER              = 4104\n\tSYS_GETITIMER              = 4105\n\tSYS_STAT                   = 4106\n\tSYS_LSTAT                  = 4107\n\tSYS_FSTAT                  = 4108\n\tSYS_UNUSED109              = 4109\n\tSYS_IOPL                   = 4110\n\tSYS_VHANGUP                = 4111\n\tSYS_IDLE                   = 4112\n\tSYS_VM86                   = 4113\n\tSYS_WAIT4                  = 4114\n\tSYS_SWAPOFF                = 4115\n\tSYS_SYSINFO                = 4116\n\tSYS_IPC                    = 4117\n\tSYS_FSYNC                  = 4118\n\tSYS_SIGRETURN              = 4119\n\tSYS_CLONE                  = 4120\n\tSYS_SETDOMAINNAME          = 4121\n\tSYS_UNAME                  = 4122\n\tSYS_MODIFY_LDT             = 4123\n\tSYS_ADJTIMEX               = 4124\n\tSYS_MPROTECT               = 4125\n\tSYS_SIGPROCMASK            = 4126\n\tSYS_CREATE_MODULE          = 4127\n\tSYS_INIT_MODULE            = 4128\n\tSYS_DELETE_MODULE          = 4129\n\tSYS_GET_KERNEL_SYMS        = 4130\n\tSYS_QUOTACTL               = 4131\n\tSYS_GETPGID                = 4132\n\tSYS_FCHDIR                 = 4133\n\tSYS_BDFLUSH                = 4134\n\tSYS_SYSFS                  = 4135\n\tSYS_PERSONALITY            = 4136\n\tSYS_AFS_SYSCALL            = 4137\n\tSYS_SETFSUID               = 4138\n\tSYS_SETFSGID               = 4139\n\tSYS__LLSEEK                = 4140\n\tSYS_GETDENTS               = 4141\n\tSYS__NEWSELECT             = 4142\n\tSYS_FLOCK                  = 4143\n\tSYS_MSYNC                  = 4144\n\tSYS_READV                  = 4145\n\tSYS_WRITEV                 = 4146\n\tSYS_CACHEFLUSH             = 4147\n\tSYS_CACHECTL               = 4148\n\tSYS_SYSMIPS                = 4149\n\tSYS_UNUSED150              = 4150\n\tSYS_GETSID                 = 4151\n\tSYS_FDATASYNC              = 4152\n\tSYS__SYSCTL                = 4153\n\tSYS_MLOCK                  = 4154\n\tSYS_MUNLOCK                = 4155\n\tSYS_MLOCKALL               = 4156\n\tSYS_MUNLOCKALL             = 4157\n\tSYS_SCHED_SETPARAM         = 4158\n\tSYS_SCHED_GETPARAM         = 4159\n\tSYS_SCHED_SETSCHEDULER     = 4160\n\tSYS_SCHED_GETSCHEDULER     = 4161\n\tSYS_SCHED_YIELD            = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN = 4164\n\tSYS_SCHED_RR_GET_INTERVAL  = 4165\n\tSYS_NANOSLEEP              = 4166\n\tSYS_MREMAP                 = 4167\n\tSYS_ACCEPT                 = 4168\n\tSYS_BIND                   = 4169\n\tSYS_CONNECT                = 4170\n\tSYS_GETPEERNAME            = 4171\n\tSYS_GETSOCKNAME            = 4172\n\tSYS_GETSOCKOPT             = 4173\n\tSYS_LISTEN                 = 4174\n\tSYS_RECV                   = 4175\n\tSYS_RECVFROM               = 4176\n\tSYS_RECVMSG                = 4177\n\tSYS_SEND                   = 4178\n\tSYS_SENDMSG                = 4179\n\tSYS_SENDTO                 = 4180\n\tSYS_SETSOCKOPT             = 4181\n\tSYS_SHUTDOWN               = 4182\n\tSYS_SOCKET                 = 4183\n\tSYS_SOCKETPAIR             = 4184\n\tSYS_SETRESUID              = 4185\n\tSYS_GETRESUID              = 4186\n\tSYS_QUERY_MODULE           = 4187\n\tSYS_POLL                   = 4188\n\tSYS_NFSSERVCTL             = 4189\n\tSYS_SETRESGID              = 4190\n\tSYS_GETRESGID              = 4191\n\tSYS_PRCTL                  = 4192\n\tSYS_RT_SIGRETURN           = 4193\n\tSYS_RT_SIGACTION           = 4194\n\tSYS_RT_SIGPROCMASK         = 4195\n\tSYS_RT_SIGPENDING          = 4196\n\tSYS_RT_SIGTIMEDWAIT        = 4197\n\tSYS_RT_SIGQUEUEINFO        = 4198\n\tSYS_RT_SIGSUSPEND          = 4199\n\tSYS_PREAD64                = 4200\n\tSYS_PWRITE64               = 4201\n\tSYS_CHOWN                  = 4202\n\tSYS_GETCWD                 = 4203\n\tSYS_CAPGET                 = 4204\n\tSYS_CAPSET                 = 4205\n\tSYS_SIGALTSTACK            = 4206\n\tSYS_SENDFILE               = 4207\n\tSYS_GETPMSG                = 4208\n\tSYS_PUTPMSG                = 4209\n\tSYS_MMAP2                  = 4210\n\tSYS_TRUNCATE64             = 4211\n\tSYS_FTRUNCATE64            = 4212\n\tSYS_STAT64                 = 4213\n\tSYS_LSTAT64                = 4214\n\tSYS_FSTAT64                = 4215\n\tSYS_PIVOT_ROOT             = 4216\n\tSYS_MINCORE                = 4217\n\tSYS_MADVISE                = 4218\n\tSYS_GETDENTS64             = 4219\n\tSYS_FCNTL64                = 4220\n\tSYS_RESERVED221            = 4221\n\tSYS_GETTID                 = 4222\n\tSYS_READAHEAD              = 4223\n\tSYS_SETXATTR               = 4224\n\tSYS_LSETXATTR              = 4225\n\tSYS_FSETXATTR              = 4226\n\tSYS_GETXATTR               = 4227\n\tSYS_LGETXATTR              = 4228\n\tSYS_FGETXATTR              = 4229\n\tSYS_LISTXATTR              = 4230\n\tSYS_LLISTXATTR             = 4231\n\tSYS_FLISTXATTR             = 4232\n\tSYS_REMOVEXATTR            = 4233\n\tSYS_LREMOVEXATTR           = 4234\n\tSYS_FREMOVEXATTR           = 4235\n\tSYS_TKILL                  = 4236\n\tSYS_SENDFILE64             = 4237\n\tSYS_FUTEX                  = 4238\n\tSYS_SCHED_SETAFFINITY      = 4239\n\tSYS_SCHED_GETAFFINITY      = 4240\n\tSYS_IO_SETUP               = 4241\n\tSYS_IO_DESTROY             = 4242\n\tSYS_IO_GETEVENTS           = 4243\n\tSYS_IO_SUBMIT              = 4244\n\tSYS_IO_CANCEL              = 4245\n\tSYS_EXIT_GROUP             = 4246\n\tSYS_LOOKUP_DCOOKIE         = 4247\n\tSYS_EPOLL_CREATE           = 4248\n\tSYS_EPOLL_CTL              = 4249\n\tSYS_EPOLL_WAIT             = 4250\n\tSYS_REMAP_FILE_PAGES       = 4251\n\tSYS_SET_TID_ADDRESS        = 4252\n\tSYS_RESTART_SYSCALL        = 4253\n\tSYS_FADVISE64              = 4254\n\tSYS_STATFS64               = 4255\n\tSYS_FSTATFS64              = 4256\n\tSYS_TIMER_CREATE           = 4257\n\tSYS_TIMER_SETTIME          = 4258\n\tSYS_TIMER_GETTIME          = 4259\n\tSYS_TIMER_GETOVERRUN       = 4260\n\tSYS_TIMER_DELETE           = 4261\n\tSYS_CLOCK_SETTIME          = 4262\n\tSYS_CLOCK_GETTIME          = 4263\n\tSYS_CLOCK_GETRES           = 4264\n\tSYS_CLOCK_NANOSLEEP        = 4265\n\tSYS_TGKILL                 = 4266\n\tSYS_UTIMES                 = 4267\n\tSYS_MBIND                  = 4268\n\tSYS_GET_MEMPOLICY          = 4269\n\tSYS_SET_MEMPOLICY          = 4270\n\tSYS_MQ_OPEN                = 4271\n\tSYS_MQ_UNLINK              = 4272\n\tSYS_MQ_TIMEDSEND           = 4273\n\tSYS_MQ_TIMEDRECEIVE        = 4274\n\tSYS_MQ_NOTIFY              = 4275\n\tSYS_MQ_GETSETATTR          = 4276\n\tSYS_VSERVER                = 4277\n\tSYS_WAITID                 = 4278\n\tSYS_ADD_KEY                = 4280\n\tSYS_REQUEST_KEY            = 4281\n\tSYS_KEYCTL                 = 4282\n\tSYS_SET_THREAD_AREA        = 4283\n\tSYS_INOTIFY_INIT           = 4284\n\tSYS_INOTIFY_ADD_WATCH      = 4285\n\tSYS_INOTIFY_RM_WATCH       = 4286\n\tSYS_MIGRATE_PAGES          = 4287\n\tSYS_OPENAT                 = 4288\n\tSYS_MKDIRAT                = 4289\n\tSYS_MKNODAT                = 4290\n\tSYS_FCHOWNAT               = 4291\n\tSYS_FUTIMESAT              = 4292\n\tSYS_FSTATAT64              = 4293\n\tSYS_UNLINKAT               = 4294\n\tSYS_RENAMEAT               = 4295\n\tSYS_LINKAT                 = 4296\n\tSYS_SYMLINKAT              = 4297\n\tSYS_READLINKAT             = 4298\n\tSYS_FCHMODAT               = 4299\n\tSYS_FACCESSAT              = 4300\n\tSYS_PSELECT6               = 4301\n\tSYS_PPOLL                  = 4302\n\tSYS_UNSHARE                = 4303\n\tSYS_SPLICE                 = 4304\n\tSYS_SYNC_FILE_RANGE        = 4305\n\tSYS_TEE                    = 4306\n\tSYS_VMSPLICE               = 4307\n\tSYS_MOVE_PAGES             = 4308\n\tSYS_SET_ROBUST_LIST        = 4309\n\tSYS_GET_ROBUST_LIST        = 4310\n\tSYS_KEXEC_LOAD             = 4311\n\tSYS_GETCPU                 = 4312\n\tSYS_EPOLL_PWAIT            = 4313\n\tSYS_IOPRIO_SET             = 4314\n\tSYS_IOPRIO_GET             = 4315\n\tSYS_UTIMENSAT              = 4316\n\tSYS_SIGNALFD               = 4317\n\tSYS_TIMERFD                = 4318\n\tSYS_EVENTFD                = 4319\n\tSYS_FALLOCATE              = 4320\n\tSYS_TIMERFD_CREATE         = 4321\n\tSYS_TIMERFD_GETTIME        = 4322\n\tSYS_TIMERFD_SETTIME        = 4323\n\tSYS_SIGNALFD4              = 4324\n\tSYS_EVENTFD2               = 4325\n\tSYS_EPOLL_CREATE1          = 4326\n\tSYS_DUP3                   = 4327\n\tSYS_PIPE2                  = 4328\n\tSYS_INOTIFY_INIT1          = 4329\n\tSYS_PREADV                 = 4330\n\tSYS_PWRITEV                = 4331\n\tSYS_RT_TGSIGQUEUEINFO      = 4332\n\tSYS_PERF_EVENT_OPEN        = 4333\n\tSYS_ACCEPT4                = 4334\n\tSYS_RECVMMSG               = 4335\n\tSYS_FANOTIFY_INIT          = 4336\n\tSYS_FANOTIFY_MARK          = 4337\n\tSYS_PRLIMIT64              = 4338\n\tSYS_NAME_TO_HANDLE_AT      = 4339\n\tSYS_OPEN_BY_HANDLE_AT      = 4340\n\tSYS_CLOCK_ADJTIME          = 4341\n\tSYS_SYNCFS                 = 4342\n\tSYS_SENDMMSG               = 4343\n\tSYS_SETNS                  = 4344\n\tSYS_PROCESS_VM_READV       = 4345\n\tSYS_PROCESS_VM_WRITEV      = 4346\n\tSYS_KCMP                   = 4347\n\tSYS_FINIT_MODULE           = 4348\n\tSYS_SCHED_SETATTR          = 4349\n\tSYS_SCHED_GETATTR          = 4350\n\tSYS_RENAMEAT2              = 4351\n\tSYS_SECCOMP                = 4352\n\tSYS_GETRANDOM              = 4353\n\tSYS_MEMFD_CREATE           = 4354\n\tSYS_BPF                    = 4355\n\tSYS_EXECVEAT               = 4356\n\tSYS_USERFAULTFD            = 4357\n\tSYS_MEMBARRIER             = 4358\n\tSYS_MLOCK2                 = 4359\n\tSYS_COPY_FILE_RANGE        = 4360\n\tSYS_PREADV2                = 4361\n\tSYS_PWRITEV2               = 4362\n\tSYS_PKEY_MPROTECT          = 4363\n\tSYS_PKEY_ALLOC             = 4364\n\tSYS_PKEY_FREE              = 4365\n\tSYS_STATX                  = 4366\n\tSYS_RSEQ                   = 4367\n\tSYS_IO_PGETEVENTS          = 4368\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64,linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL        = 0\n\tSYS_EXIT                   = 1\n\tSYS_FORK                   = 2\n\tSYS_READ                   = 3\n\tSYS_WRITE                  = 4\n\tSYS_OPEN                   = 5\n\tSYS_CLOSE                  = 6\n\tSYS_WAITPID                = 7\n\tSYS_CREAT                  = 8\n\tSYS_LINK                   = 9\n\tSYS_UNLINK                 = 10\n\tSYS_EXECVE                 = 11\n\tSYS_CHDIR                  = 12\n\tSYS_TIME                   = 13\n\tSYS_MKNOD                  = 14\n\tSYS_CHMOD                  = 15\n\tSYS_LCHOWN                 = 16\n\tSYS_BREAK                  = 17\n\tSYS_OLDSTAT                = 18\n\tSYS_LSEEK                  = 19\n\tSYS_GETPID                 = 20\n\tSYS_MOUNT                  = 21\n\tSYS_UMOUNT                 = 22\n\tSYS_SETUID                 = 23\n\tSYS_GETUID                 = 24\n\tSYS_STIME                  = 25\n\tSYS_PTRACE                 = 26\n\tSYS_ALARM                  = 27\n\tSYS_OLDFSTAT               = 28\n\tSYS_PAUSE                  = 29\n\tSYS_UTIME                  = 30\n\tSYS_STTY                   = 31\n\tSYS_GTTY                   = 32\n\tSYS_ACCESS                 = 33\n\tSYS_NICE                   = 34\n\tSYS_FTIME                  = 35\n\tSYS_SYNC                   = 36\n\tSYS_KILL                   = 37\n\tSYS_RENAME                 = 38\n\tSYS_MKDIR                  = 39\n\tSYS_RMDIR                  = 40\n\tSYS_DUP                    = 41\n\tSYS_PIPE                   = 42\n\tSYS_TIMES                  = 43\n\tSYS_PROF                   = 44\n\tSYS_BRK                    = 45\n\tSYS_SETGID                 = 46\n\tSYS_GETGID                 = 47\n\tSYS_SIGNAL                 = 48\n\tSYS_GETEUID                = 49\n\tSYS_GETEGID                = 50\n\tSYS_ACCT                   = 51\n\tSYS_UMOUNT2                = 52\n\tSYS_LOCK                   = 53\n\tSYS_IOCTL                  = 54\n\tSYS_FCNTL                  = 55\n\tSYS_MPX                    = 56\n\tSYS_SETPGID                = 57\n\tSYS_ULIMIT                 = 58\n\tSYS_OLDOLDUNAME            = 59\n\tSYS_UMASK                  = 60\n\tSYS_CHROOT                 = 61\n\tSYS_USTAT                  = 62\n\tSYS_DUP2                   = 63\n\tSYS_GETPPID                = 64\n\tSYS_GETPGRP                = 65\n\tSYS_SETSID                 = 66\n\tSYS_SIGACTION              = 67\n\tSYS_SGETMASK               = 68\n\tSYS_SSETMASK               = 69\n\tSYS_SETREUID               = 70\n\tSYS_SETREGID               = 71\n\tSYS_SIGSUSPEND             = 72\n\tSYS_SIGPENDING             = 73\n\tSYS_SETHOSTNAME            = 74\n\tSYS_SETRLIMIT              = 75\n\tSYS_GETRLIMIT              = 76\n\tSYS_GETRUSAGE              = 77\n\tSYS_GETTIMEOFDAY           = 78\n\tSYS_SETTIMEOFDAY           = 79\n\tSYS_GETGROUPS              = 80\n\tSYS_SETGROUPS              = 81\n\tSYS_SELECT                 = 82\n\tSYS_SYMLINK                = 83\n\tSYS_OLDLSTAT               = 84\n\tSYS_READLINK               = 85\n\tSYS_USELIB                 = 86\n\tSYS_SWAPON                 = 87\n\tSYS_REBOOT                 = 88\n\tSYS_READDIR                = 89\n\tSYS_MMAP                   = 90\n\tSYS_MUNMAP                 = 91\n\tSYS_TRUNCATE               = 92\n\tSYS_FTRUNCATE              = 93\n\tSYS_FCHMOD                 = 94\n\tSYS_FCHOWN                 = 95\n\tSYS_GETPRIORITY            = 96\n\tSYS_SETPRIORITY            = 97\n\tSYS_PROFIL                 = 98\n\tSYS_STATFS                 = 99\n\tSYS_FSTATFS                = 100\n\tSYS_IOPERM                 = 101\n\tSYS_SOCKETCALL             = 102\n\tSYS_SYSLOG                 = 103\n\tSYS_SETITIMER              = 104\n\tSYS_GETITIMER              = 105\n\tSYS_STAT                   = 106\n\tSYS_LSTAT                  = 107\n\tSYS_FSTAT                  = 108\n\tSYS_OLDUNAME               = 109\n\tSYS_IOPL                   = 110\n\tSYS_VHANGUP                = 111\n\tSYS_IDLE                   = 112\n\tSYS_VM86                   = 113\n\tSYS_WAIT4                  = 114\n\tSYS_SWAPOFF                = 115\n\tSYS_SYSINFO                = 116\n\tSYS_IPC                    = 117\n\tSYS_FSYNC                  = 118\n\tSYS_SIGRETURN              = 119\n\tSYS_CLONE                  = 120\n\tSYS_SETDOMAINNAME          = 121\n\tSYS_UNAME                  = 122\n\tSYS_MODIFY_LDT             = 123\n\tSYS_ADJTIMEX               = 124\n\tSYS_MPROTECT               = 125\n\tSYS_SIGPROCMASK            = 126\n\tSYS_CREATE_MODULE          = 127\n\tSYS_INIT_MODULE            = 128\n\tSYS_DELETE_MODULE          = 129\n\tSYS_GET_KERNEL_SYMS        = 130\n\tSYS_QUOTACTL               = 131\n\tSYS_GETPGID                = 132\n\tSYS_FCHDIR                 = 133\n\tSYS_BDFLUSH                = 134\n\tSYS_SYSFS                  = 135\n\tSYS_PERSONALITY            = 136\n\tSYS_AFS_SYSCALL            = 137\n\tSYS_SETFSUID               = 138\n\tSYS_SETFSGID               = 139\n\tSYS__LLSEEK                = 140\n\tSYS_GETDENTS               = 141\n\tSYS__NEWSELECT             = 142\n\tSYS_FLOCK                  = 143\n\tSYS_MSYNC                  = 144\n\tSYS_READV                  = 145\n\tSYS_WRITEV                 = 146\n\tSYS_GETSID                 = 147\n\tSYS_FDATASYNC              = 148\n\tSYS__SYSCTL                = 149\n\tSYS_MLOCK                  = 150\n\tSYS_MUNLOCK                = 151\n\tSYS_MLOCKALL               = 152\n\tSYS_MUNLOCKALL             = 153\n\tSYS_SCHED_SETPARAM         = 154\n\tSYS_SCHED_GETPARAM         = 155\n\tSYS_SCHED_SETSCHEDULER     = 156\n\tSYS_SCHED_GETSCHEDULER     = 157\n\tSYS_SCHED_YIELD            = 158\n\tSYS_SCHED_GET_PRIORITY_MAX = 159\n\tSYS_SCHED_GET_PRIORITY_MIN = 160\n\tSYS_SCHED_RR_GET_INTERVAL  = 161\n\tSYS_NANOSLEEP              = 162\n\tSYS_MREMAP                 = 163\n\tSYS_SETRESUID              = 164\n\tSYS_GETRESUID              = 165\n\tSYS_QUERY_MODULE           = 166\n\tSYS_POLL                   = 167\n\tSYS_NFSSERVCTL             = 168\n\tSYS_SETRESGID              = 169\n\tSYS_GETRESGID              = 170\n\tSYS_PRCTL                  = 171\n\tSYS_RT_SIGRETURN           = 172\n\tSYS_RT_SIGACTION           = 173\n\tSYS_RT_SIGPROCMASK         = 174\n\tSYS_RT_SIGPENDING          = 175\n\tSYS_RT_SIGTIMEDWAIT        = 176\n\tSYS_RT_SIGQUEUEINFO        = 177\n\tSYS_RT_SIGSUSPEND          = 178\n\tSYS_PREAD64                = 179\n\tSYS_PWRITE64               = 180\n\tSYS_CHOWN                  = 181\n\tSYS_GETCWD                 = 182\n\tSYS_CAPGET                 = 183\n\tSYS_CAPSET                 = 184\n\tSYS_SIGALTSTACK            = 185\n\tSYS_SENDFILE               = 186\n\tSYS_GETPMSG                = 187\n\tSYS_PUTPMSG                = 188\n\tSYS_VFORK                  = 189\n\tSYS_UGETRLIMIT             = 190\n\tSYS_READAHEAD              = 191\n\tSYS_PCICONFIG_READ         = 198\n\tSYS_PCICONFIG_WRITE        = 199\n\tSYS_PCICONFIG_IOBASE       = 200\n\tSYS_MULTIPLEXER            = 201\n\tSYS_GETDENTS64             = 202\n\tSYS_PIVOT_ROOT             = 203\n\tSYS_MADVISE                = 205\n\tSYS_MINCORE                = 206\n\tSYS_GETTID                 = 207\n\tSYS_TKILL                  = 208\n\tSYS_SETXATTR               = 209\n\tSYS_LSETXATTR              = 210\n\tSYS_FSETXATTR              = 211\n\tSYS_GETXATTR               = 212\n\tSYS_LGETXATTR              = 213\n\tSYS_FGETXATTR              = 214\n\tSYS_LISTXATTR              = 215\n\tSYS_LLISTXATTR             = 216\n\tSYS_FLISTXATTR             = 217\n\tSYS_REMOVEXATTR            = 218\n\tSYS_LREMOVEXATTR           = 219\n\tSYS_FREMOVEXATTR           = 220\n\tSYS_FUTEX                  = 221\n\tSYS_SCHED_SETAFFINITY      = 222\n\tSYS_SCHED_GETAFFINITY      = 223\n\tSYS_TUXCALL                = 225\n\tSYS_IO_SETUP               = 227\n\tSYS_IO_DESTROY             = 228\n\tSYS_IO_GETEVENTS           = 229\n\tSYS_IO_SUBMIT              = 230\n\tSYS_IO_CANCEL              = 231\n\tSYS_SET_TID_ADDRESS        = 232\n\tSYS_FADVISE64              = 233\n\tSYS_EXIT_GROUP             = 234\n\tSYS_LOOKUP_DCOOKIE         = 235\n\tSYS_EPOLL_CREATE           = 236\n\tSYS_EPOLL_CTL              = 237\n\tSYS_EPOLL_WAIT             = 238\n\tSYS_REMAP_FILE_PAGES       = 239\n\tSYS_TIMER_CREATE           = 240\n\tSYS_TIMER_SETTIME          = 241\n\tSYS_TIMER_GETTIME          = 242\n\tSYS_TIMER_GETOVERRUN       = 243\n\tSYS_TIMER_DELETE           = 244\n\tSYS_CLOCK_SETTIME          = 245\n\tSYS_CLOCK_GETTIME          = 246\n\tSYS_CLOCK_GETRES           = 247\n\tSYS_CLOCK_NANOSLEEP        = 248\n\tSYS_SWAPCONTEXT            = 249\n\tSYS_TGKILL                 = 250\n\tSYS_UTIMES                 = 251\n\tSYS_STATFS64               = 252\n\tSYS_FSTATFS64              = 253\n\tSYS_RTAS                   = 255\n\tSYS_SYS_DEBUG_SETCONTEXT   = 256\n\tSYS_MIGRATE_PAGES          = 258\n\tSYS_MBIND                  = 259\n\tSYS_GET_MEMPOLICY          = 260\n\tSYS_SET_MEMPOLICY          = 261\n\tSYS_MQ_OPEN                = 262\n\tSYS_MQ_UNLINK              = 263\n\tSYS_MQ_TIMEDSEND           = 264\n\tSYS_MQ_TIMEDRECEIVE        = 265\n\tSYS_MQ_NOTIFY              = 266\n\tSYS_MQ_GETSETATTR          = 267\n\tSYS_KEXEC_LOAD             = 268\n\tSYS_ADD_KEY                = 269\n\tSYS_REQUEST_KEY            = 270\n\tSYS_KEYCTL                 = 271\n\tSYS_WAITID                 = 272\n\tSYS_IOPRIO_SET             = 273\n\tSYS_IOPRIO_GET             = 274\n\tSYS_INOTIFY_INIT           = 275\n\tSYS_INOTIFY_ADD_WATCH      = 276\n\tSYS_INOTIFY_RM_WATCH       = 277\n\tSYS_SPU_RUN                = 278\n\tSYS_SPU_CREATE             = 279\n\tSYS_PSELECT6               = 280\n\tSYS_PPOLL                  = 281\n\tSYS_UNSHARE                = 282\n\tSYS_SPLICE                 = 283\n\tSYS_TEE                    = 284\n\tSYS_VMSPLICE               = 285\n\tSYS_OPENAT                 = 286\n\tSYS_MKDIRAT                = 287\n\tSYS_MKNODAT                = 288\n\tSYS_FCHOWNAT               = 289\n\tSYS_FUTIMESAT              = 290\n\tSYS_NEWFSTATAT             = 291\n\tSYS_UNLINKAT               = 292\n\tSYS_RENAMEAT               = 293\n\tSYS_LINKAT                 = 294\n\tSYS_SYMLINKAT              = 295\n\tSYS_READLINKAT             = 296\n\tSYS_FCHMODAT               = 297\n\tSYS_FACCESSAT              = 298\n\tSYS_GET_ROBUST_LIST        = 299\n\tSYS_SET_ROBUST_LIST        = 300\n\tSYS_MOVE_PAGES             = 301\n\tSYS_GETCPU                 = 302\n\tSYS_EPOLL_PWAIT            = 303\n\tSYS_UTIMENSAT              = 304\n\tSYS_SIGNALFD               = 305\n\tSYS_TIMERFD_CREATE         = 306\n\tSYS_EVENTFD                = 307\n\tSYS_SYNC_FILE_RANGE2       = 308\n\tSYS_FALLOCATE              = 309\n\tSYS_SUBPAGE_PROT           = 310\n\tSYS_TIMERFD_SETTIME        = 311\n\tSYS_TIMERFD_GETTIME        = 312\n\tSYS_SIGNALFD4              = 313\n\tSYS_EVENTFD2               = 314\n\tSYS_EPOLL_CREATE1          = 315\n\tSYS_DUP3                   = 316\n\tSYS_PIPE2                  = 317\n\tSYS_INOTIFY_INIT1          = 318\n\tSYS_PERF_EVENT_OPEN        = 319\n\tSYS_PREADV                 = 320\n\tSYS_PWRITEV                = 321\n\tSYS_RT_TGSIGQUEUEINFO      = 322\n\tSYS_FANOTIFY_INIT          = 323\n\tSYS_FANOTIFY_MARK          = 324\n\tSYS_PRLIMIT64              = 325\n\tSYS_SOCKET                 = 326\n\tSYS_BIND                   = 327\n\tSYS_CONNECT                = 328\n\tSYS_LISTEN                 = 329\n\tSYS_ACCEPT                 = 330\n\tSYS_GETSOCKNAME            = 331\n\tSYS_GETPEERNAME            = 332\n\tSYS_SOCKETPAIR             = 333\n\tSYS_SEND                   = 334\n\tSYS_SENDTO                 = 335\n\tSYS_RECV                   = 336\n\tSYS_RECVFROM               = 337\n\tSYS_SHUTDOWN               = 338\n\tSYS_SETSOCKOPT             = 339\n\tSYS_GETSOCKOPT             = 340\n\tSYS_SENDMSG                = 341\n\tSYS_RECVMSG                = 342\n\tSYS_RECVMMSG               = 343\n\tSYS_ACCEPT4                = 344\n\tSYS_NAME_TO_HANDLE_AT      = 345\n\tSYS_OPEN_BY_HANDLE_AT      = 346\n\tSYS_CLOCK_ADJTIME          = 347\n\tSYS_SYNCFS                 = 348\n\tSYS_SENDMMSG               = 349\n\tSYS_SETNS                  = 350\n\tSYS_PROCESS_VM_READV       = 351\n\tSYS_PROCESS_VM_WRITEV      = 352\n\tSYS_FINIT_MODULE           = 353\n\tSYS_KCMP                   = 354\n\tSYS_SCHED_SETATTR          = 355\n\tSYS_SCHED_GETATTR          = 356\n\tSYS_RENAMEAT2              = 357\n\tSYS_SECCOMP                = 358\n\tSYS_GETRANDOM              = 359\n\tSYS_MEMFD_CREATE           = 360\n\tSYS_BPF                    = 361\n\tSYS_EXECVEAT               = 362\n\tSYS_SWITCH_ENDIAN          = 363\n\tSYS_USERFAULTFD            = 364\n\tSYS_MEMBARRIER             = 365\n\tSYS_MLOCK2                 = 378\n\tSYS_COPY_FILE_RANGE        = 379\n\tSYS_PREADV2                = 380\n\tSYS_PWRITEV2               = 381\n\tSYS_KEXEC_FILE_LOAD        = 382\n\tSYS_STATX                  = 383\n\tSYS_PKEY_ALLOC             = 384\n\tSYS_PKEY_FREE              = 385\n\tSYS_PKEY_MPROTECT          = 386\n\tSYS_RSEQ                   = 387\n\tSYS_IO_PGETEVENTS          = 388\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64le,linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL        = 0\n\tSYS_EXIT                   = 1\n\tSYS_FORK                   = 2\n\tSYS_READ                   = 3\n\tSYS_WRITE                  = 4\n\tSYS_OPEN                   = 5\n\tSYS_CLOSE                  = 6\n\tSYS_WAITPID                = 7\n\tSYS_CREAT                  = 8\n\tSYS_LINK                   = 9\n\tSYS_UNLINK                 = 10\n\tSYS_EXECVE                 = 11\n\tSYS_CHDIR                  = 12\n\tSYS_TIME                   = 13\n\tSYS_MKNOD                  = 14\n\tSYS_CHMOD                  = 15\n\tSYS_LCHOWN                 = 16\n\tSYS_BREAK                  = 17\n\tSYS_OLDSTAT                = 18\n\tSYS_LSEEK                  = 19\n\tSYS_GETPID                 = 20\n\tSYS_MOUNT                  = 21\n\tSYS_UMOUNT                 = 22\n\tSYS_SETUID                 = 23\n\tSYS_GETUID                 = 24\n\tSYS_STIME                  = 25\n\tSYS_PTRACE                 = 26\n\tSYS_ALARM                  = 27\n\tSYS_OLDFSTAT               = 28\n\tSYS_PAUSE                  = 29\n\tSYS_UTIME                  = 30\n\tSYS_STTY                   = 31\n\tSYS_GTTY                   = 32\n\tSYS_ACCESS                 = 33\n\tSYS_NICE                   = 34\n\tSYS_FTIME                  = 35\n\tSYS_SYNC                   = 36\n\tSYS_KILL                   = 37\n\tSYS_RENAME                 = 38\n\tSYS_MKDIR                  = 39\n\tSYS_RMDIR                  = 40\n\tSYS_DUP                    = 41\n\tSYS_PIPE                   = 42\n\tSYS_TIMES                  = 43\n\tSYS_PROF                   = 44\n\tSYS_BRK                    = 45\n\tSYS_SETGID                 = 46\n\tSYS_GETGID                 = 47\n\tSYS_SIGNAL                 = 48\n\tSYS_GETEUID                = 49\n\tSYS_GETEGID                = 50\n\tSYS_ACCT                   = 51\n\tSYS_UMOUNT2                = 52\n\tSYS_LOCK                   = 53\n\tSYS_IOCTL                  = 54\n\tSYS_FCNTL                  = 55\n\tSYS_MPX                    = 56\n\tSYS_SETPGID                = 57\n\tSYS_ULIMIT                 = 58\n\tSYS_OLDOLDUNAME            = 59\n\tSYS_UMASK                  = 60\n\tSYS_CHROOT                 = 61\n\tSYS_USTAT                  = 62\n\tSYS_DUP2                   = 63\n\tSYS_GETPPID                = 64\n\tSYS_GETPGRP                = 65\n\tSYS_SETSID                 = 66\n\tSYS_SIGACTION              = 67\n\tSYS_SGETMASK               = 68\n\tSYS_SSETMASK               = 69\n\tSYS_SETREUID               = 70\n\tSYS_SETREGID               = 71\n\tSYS_SIGSUSPEND             = 72\n\tSYS_SIGPENDING             = 73\n\tSYS_SETHOSTNAME            = 74\n\tSYS_SETRLIMIT              = 75\n\tSYS_GETRLIMIT              = 76\n\tSYS_GETRUSAGE              = 77\n\tSYS_GETTIMEOFDAY           = 78\n\tSYS_SETTIMEOFDAY           = 79\n\tSYS_GETGROUPS              = 80\n\tSYS_SETGROUPS              = 81\n\tSYS_SELECT                 = 82\n\tSYS_SYMLINK                = 83\n\tSYS_OLDLSTAT               = 84\n\tSYS_READLINK               = 85\n\tSYS_USELIB                 = 86\n\tSYS_SWAPON                 = 87\n\tSYS_REBOOT                 = 88\n\tSYS_READDIR                = 89\n\tSYS_MMAP                   = 90\n\tSYS_MUNMAP                 = 91\n\tSYS_TRUNCATE               = 92\n\tSYS_FTRUNCATE              = 93\n\tSYS_FCHMOD                 = 94\n\tSYS_FCHOWN                 = 95\n\tSYS_GETPRIORITY            = 96\n\tSYS_SETPRIORITY            = 97\n\tSYS_PROFIL                 = 98\n\tSYS_STATFS                 = 99\n\tSYS_FSTATFS                = 100\n\tSYS_IOPERM                 = 101\n\tSYS_SOCKETCALL             = 102\n\tSYS_SYSLOG                 = 103\n\tSYS_SETITIMER              = 104\n\tSYS_GETITIMER              = 105\n\tSYS_STAT                   = 106\n\tSYS_LSTAT                  = 107\n\tSYS_FSTAT                  = 108\n\tSYS_OLDUNAME               = 109\n\tSYS_IOPL                   = 110\n\tSYS_VHANGUP                = 111\n\tSYS_IDLE                   = 112\n\tSYS_VM86                   = 113\n\tSYS_WAIT4                  = 114\n\tSYS_SWAPOFF                = 115\n\tSYS_SYSINFO                = 116\n\tSYS_IPC                    = 117\n\tSYS_FSYNC                  = 118\n\tSYS_SIGRETURN              = 119\n\tSYS_CLONE                  = 120\n\tSYS_SETDOMAINNAME          = 121\n\tSYS_UNAME                  = 122\n\tSYS_MODIFY_LDT             = 123\n\tSYS_ADJTIMEX               = 124\n\tSYS_MPROTECT               = 125\n\tSYS_SIGPROCMASK            = 126\n\tSYS_CREATE_MODULE          = 127\n\tSYS_INIT_MODULE            = 128\n\tSYS_DELETE_MODULE          = 129\n\tSYS_GET_KERNEL_SYMS        = 130\n\tSYS_QUOTACTL               = 131\n\tSYS_GETPGID                = 132\n\tSYS_FCHDIR                 = 133\n\tSYS_BDFLUSH                = 134\n\tSYS_SYSFS                  = 135\n\tSYS_PERSONALITY            = 136\n\tSYS_AFS_SYSCALL            = 137\n\tSYS_SETFSUID               = 138\n\tSYS_SETFSGID               = 139\n\tSYS__LLSEEK                = 140\n\tSYS_GETDENTS               = 141\n\tSYS__NEWSELECT             = 142\n\tSYS_FLOCK                  = 143\n\tSYS_MSYNC                  = 144\n\tSYS_READV                  = 145\n\tSYS_WRITEV                 = 146\n\tSYS_GETSID                 = 147\n\tSYS_FDATASYNC              = 148\n\tSYS__SYSCTL                = 149\n\tSYS_MLOCK                  = 150\n\tSYS_MUNLOCK                = 151\n\tSYS_MLOCKALL               = 152\n\tSYS_MUNLOCKALL             = 153\n\tSYS_SCHED_SETPARAM         = 154\n\tSYS_SCHED_GETPARAM         = 155\n\tSYS_SCHED_SETSCHEDULER     = 156\n\tSYS_SCHED_GETSCHEDULER     = 157\n\tSYS_SCHED_YIELD            = 158\n\tSYS_SCHED_GET_PRIORITY_MAX = 159\n\tSYS_SCHED_GET_PRIORITY_MIN = 160\n\tSYS_SCHED_RR_GET_INTERVAL  = 161\n\tSYS_NANOSLEEP              = 162\n\tSYS_MREMAP                 = 163\n\tSYS_SETRESUID              = 164\n\tSYS_GETRESUID              = 165\n\tSYS_QUERY_MODULE           = 166\n\tSYS_POLL                   = 167\n\tSYS_NFSSERVCTL             = 168\n\tSYS_SETRESGID              = 169\n\tSYS_GETRESGID              = 170\n\tSYS_PRCTL                  = 171\n\tSYS_RT_SIGRETURN           = 172\n\tSYS_RT_SIGACTION           = 173\n\tSYS_RT_SIGPROCMASK         = 174\n\tSYS_RT_SIGPENDING          = 175\n\tSYS_RT_SIGTIMEDWAIT        = 176\n\tSYS_RT_SIGQUEUEINFO        = 177\n\tSYS_RT_SIGSUSPEND          = 178\n\tSYS_PREAD64                = 179\n\tSYS_PWRITE64               = 180\n\tSYS_CHOWN                  = 181\n\tSYS_GETCWD                 = 182\n\tSYS_CAPGET                 = 183\n\tSYS_CAPSET                 = 184\n\tSYS_SIGALTSTACK            = 185\n\tSYS_SENDFILE               = 186\n\tSYS_GETPMSG                = 187\n\tSYS_PUTPMSG                = 188\n\tSYS_VFORK                  = 189\n\tSYS_UGETRLIMIT             = 190\n\tSYS_READAHEAD              = 191\n\tSYS_PCICONFIG_READ         = 198\n\tSYS_PCICONFIG_WRITE        = 199\n\tSYS_PCICONFIG_IOBASE       = 200\n\tSYS_MULTIPLEXER            = 201\n\tSYS_GETDENTS64             = 202\n\tSYS_PIVOT_ROOT             = 203\n\tSYS_MADVISE                = 205\n\tSYS_MINCORE                = 206\n\tSYS_GETTID                 = 207\n\tSYS_TKILL                  = 208\n\tSYS_SETXATTR               = 209\n\tSYS_LSETXATTR              = 210\n\tSYS_FSETXATTR              = 211\n\tSYS_GETXATTR               = 212\n\tSYS_LGETXATTR              = 213\n\tSYS_FGETXATTR              = 214\n\tSYS_LISTXATTR              = 215\n\tSYS_LLISTXATTR             = 216\n\tSYS_FLISTXATTR             = 217\n\tSYS_REMOVEXATTR            = 218\n\tSYS_LREMOVEXATTR           = 219\n\tSYS_FREMOVEXATTR           = 220\n\tSYS_FUTEX                  = 221\n\tSYS_SCHED_SETAFFINITY      = 222\n\tSYS_SCHED_GETAFFINITY      = 223\n\tSYS_TUXCALL                = 225\n\tSYS_IO_SETUP               = 227\n\tSYS_IO_DESTROY             = 228\n\tSYS_IO_GETEVENTS           = 229\n\tSYS_IO_SUBMIT              = 230\n\tSYS_IO_CANCEL              = 231\n\tSYS_SET_TID_ADDRESS        = 232\n\tSYS_FADVISE64              = 233\n\tSYS_EXIT_GROUP             = 234\n\tSYS_LOOKUP_DCOOKIE         = 235\n\tSYS_EPOLL_CREATE           = 236\n\tSYS_EPOLL_CTL              = 237\n\tSYS_EPOLL_WAIT             = 238\n\tSYS_REMAP_FILE_PAGES       = 239\n\tSYS_TIMER_CREATE           = 240\n\tSYS_TIMER_SETTIME          = 241\n\tSYS_TIMER_GETTIME          = 242\n\tSYS_TIMER_GETOVERRUN       = 243\n\tSYS_TIMER_DELETE           = 244\n\tSYS_CLOCK_SETTIME          = 245\n\tSYS_CLOCK_GETTIME          = 246\n\tSYS_CLOCK_GETRES           = 247\n\tSYS_CLOCK_NANOSLEEP        = 248\n\tSYS_SWAPCONTEXT            = 249\n\tSYS_TGKILL                 = 250\n\tSYS_UTIMES                 = 251\n\tSYS_STATFS64               = 252\n\tSYS_FSTATFS64              = 253\n\tSYS_RTAS                   = 255\n\tSYS_SYS_DEBUG_SETCONTEXT   = 256\n\tSYS_MIGRATE_PAGES          = 258\n\tSYS_MBIND                  = 259\n\tSYS_GET_MEMPOLICY          = 260\n\tSYS_SET_MEMPOLICY          = 261\n\tSYS_MQ_OPEN                = 262\n\tSYS_MQ_UNLINK              = 263\n\tSYS_MQ_TIMEDSEND           = 264\n\tSYS_MQ_TIMEDRECEIVE        = 265\n\tSYS_MQ_NOTIFY              = 266\n\tSYS_MQ_GETSETATTR          = 267\n\tSYS_KEXEC_LOAD             = 268\n\tSYS_ADD_KEY                = 269\n\tSYS_REQUEST_KEY            = 270\n\tSYS_KEYCTL                 = 271\n\tSYS_WAITID                 = 272\n\tSYS_IOPRIO_SET             = 273\n\tSYS_IOPRIO_GET             = 274\n\tSYS_INOTIFY_INIT           = 275\n\tSYS_INOTIFY_ADD_WATCH      = 276\n\tSYS_INOTIFY_RM_WATCH       = 277\n\tSYS_SPU_RUN                = 278\n\tSYS_SPU_CREATE             = 279\n\tSYS_PSELECT6               = 280\n\tSYS_PPOLL                  = 281\n\tSYS_UNSHARE                = 282\n\tSYS_SPLICE                 = 283\n\tSYS_TEE                    = 284\n\tSYS_VMSPLICE               = 285\n\tSYS_OPENAT                 = 286\n\tSYS_MKDIRAT                = 287\n\tSYS_MKNODAT                = 288\n\tSYS_FCHOWNAT               = 289\n\tSYS_FUTIMESAT              = 290\n\tSYS_NEWFSTATAT             = 291\n\tSYS_UNLINKAT               = 292\n\tSYS_RENAMEAT               = 293\n\tSYS_LINKAT                 = 294\n\tSYS_SYMLINKAT              = 295\n\tSYS_READLINKAT             = 296\n\tSYS_FCHMODAT               = 297\n\tSYS_FACCESSAT              = 298\n\tSYS_GET_ROBUST_LIST        = 299\n\tSYS_SET_ROBUST_LIST        = 300\n\tSYS_MOVE_PAGES             = 301\n\tSYS_GETCPU                 = 302\n\tSYS_EPOLL_PWAIT            = 303\n\tSYS_UTIMENSAT              = 304\n\tSYS_SIGNALFD               = 305\n\tSYS_TIMERFD_CREATE         = 306\n\tSYS_EVENTFD                = 307\n\tSYS_SYNC_FILE_RANGE2       = 308\n\tSYS_FALLOCATE              = 309\n\tSYS_SUBPAGE_PROT           = 310\n\tSYS_TIMERFD_SETTIME        = 311\n\tSYS_TIMERFD_GETTIME        = 312\n\tSYS_SIGNALFD4              = 313\n\tSYS_EVENTFD2               = 314\n\tSYS_EPOLL_CREATE1          = 315\n\tSYS_DUP3                   = 316\n\tSYS_PIPE2                  = 317\n\tSYS_INOTIFY_INIT1          = 318\n\tSYS_PERF_EVENT_OPEN        = 319\n\tSYS_PREADV                 = 320\n\tSYS_PWRITEV                = 321\n\tSYS_RT_TGSIGQUEUEINFO      = 322\n\tSYS_FANOTIFY_INIT          = 323\n\tSYS_FANOTIFY_MARK          = 324\n\tSYS_PRLIMIT64              = 325\n\tSYS_SOCKET                 = 326\n\tSYS_BIND                   = 327\n\tSYS_CONNECT                = 328\n\tSYS_LISTEN                 = 329\n\tSYS_ACCEPT                 = 330\n\tSYS_GETSOCKNAME            = 331\n\tSYS_GETPEERNAME            = 332\n\tSYS_SOCKETPAIR             = 333\n\tSYS_SEND                   = 334\n\tSYS_SENDTO                 = 335\n\tSYS_RECV                   = 336\n\tSYS_RECVFROM               = 337\n\tSYS_SHUTDOWN               = 338\n\tSYS_SETSOCKOPT             = 339\n\tSYS_GETSOCKOPT             = 340\n\tSYS_SENDMSG                = 341\n\tSYS_RECVMSG                = 342\n\tSYS_RECVMMSG               = 343\n\tSYS_ACCEPT4                = 344\n\tSYS_NAME_TO_HANDLE_AT      = 345\n\tSYS_OPEN_BY_HANDLE_AT      = 346\n\tSYS_CLOCK_ADJTIME          = 347\n\tSYS_SYNCFS                 = 348\n\tSYS_SENDMMSG               = 349\n\tSYS_SETNS                  = 350\n\tSYS_PROCESS_VM_READV       = 351\n\tSYS_PROCESS_VM_WRITEV      = 352\n\tSYS_FINIT_MODULE           = 353\n\tSYS_KCMP                   = 354\n\tSYS_SCHED_SETATTR          = 355\n\tSYS_SCHED_GETATTR          = 356\n\tSYS_RENAMEAT2              = 357\n\tSYS_SECCOMP                = 358\n\tSYS_GETRANDOM              = 359\n\tSYS_MEMFD_CREATE           = 360\n\tSYS_BPF                    = 361\n\tSYS_EXECVEAT               = 362\n\tSYS_SWITCH_ENDIAN          = 363\n\tSYS_USERFAULTFD            = 364\n\tSYS_MEMBARRIER             = 365\n\tSYS_MLOCK2                 = 378\n\tSYS_COPY_FILE_RANGE        = 379\n\tSYS_PREADV2                = 380\n\tSYS_PWRITEV2               = 381\n\tSYS_KEXEC_FILE_LOAD        = 382\n\tSYS_STATX                  = 383\n\tSYS_PKEY_ALLOC             = 384\n\tSYS_PKEY_FREE              = 385\n\tSYS_PKEY_MPROTECT          = 386\n\tSYS_RSEQ                   = 387\n\tSYS_IO_PGETEVENTS          = 388\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build riscv64,linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP               = 0\n\tSYS_IO_DESTROY             = 1\n\tSYS_IO_SUBMIT              = 2\n\tSYS_IO_CANCEL              = 3\n\tSYS_IO_GETEVENTS           = 4\n\tSYS_SETXATTR               = 5\n\tSYS_LSETXATTR              = 6\n\tSYS_FSETXATTR              = 7\n\tSYS_GETXATTR               = 8\n\tSYS_LGETXATTR              = 9\n\tSYS_FGETXATTR              = 10\n\tSYS_LISTXATTR              = 11\n\tSYS_LLISTXATTR             = 12\n\tSYS_FLISTXATTR             = 13\n\tSYS_REMOVEXATTR            = 14\n\tSYS_LREMOVEXATTR           = 15\n\tSYS_FREMOVEXATTR           = 16\n\tSYS_GETCWD                 = 17\n\tSYS_LOOKUP_DCOOKIE         = 18\n\tSYS_EVENTFD2               = 19\n\tSYS_EPOLL_CREATE1          = 20\n\tSYS_EPOLL_CTL              = 21\n\tSYS_EPOLL_PWAIT            = 22\n\tSYS_DUP                    = 23\n\tSYS_DUP3                   = 24\n\tSYS_FCNTL                  = 25\n\tSYS_INOTIFY_INIT1          = 26\n\tSYS_INOTIFY_ADD_WATCH      = 27\n\tSYS_INOTIFY_RM_WATCH       = 28\n\tSYS_IOCTL                  = 29\n\tSYS_IOPRIO_SET             = 30\n\tSYS_IOPRIO_GET             = 31\n\tSYS_FLOCK                  = 32\n\tSYS_MKNODAT                = 33\n\tSYS_MKDIRAT                = 34\n\tSYS_UNLINKAT               = 35\n\tSYS_SYMLINKAT              = 36\n\tSYS_LINKAT                 = 37\n\tSYS_UMOUNT2                = 39\n\tSYS_MOUNT                  = 40\n\tSYS_PIVOT_ROOT             = 41\n\tSYS_NFSSERVCTL             = 42\n\tSYS_STATFS                 = 43\n\tSYS_FSTATFS                = 44\n\tSYS_TRUNCATE               = 45\n\tSYS_FTRUNCATE              = 46\n\tSYS_FALLOCATE              = 47\n\tSYS_FACCESSAT              = 48\n\tSYS_CHDIR                  = 49\n\tSYS_FCHDIR                 = 50\n\tSYS_CHROOT                 = 51\n\tSYS_FCHMOD                 = 52\n\tSYS_FCHMODAT               = 53\n\tSYS_FCHOWNAT               = 54\n\tSYS_FCHOWN                 = 55\n\tSYS_OPENAT                 = 56\n\tSYS_CLOSE                  = 57\n\tSYS_VHANGUP                = 58\n\tSYS_PIPE2                  = 59\n\tSYS_QUOTACTL               = 60\n\tSYS_GETDENTS64             = 61\n\tSYS_LSEEK                  = 62\n\tSYS_READ                   = 63\n\tSYS_WRITE                  = 64\n\tSYS_READV                  = 65\n\tSYS_WRITEV                 = 66\n\tSYS_PREAD64                = 67\n\tSYS_PWRITE64               = 68\n\tSYS_PREADV                 = 69\n\tSYS_PWRITEV                = 70\n\tSYS_SENDFILE               = 71\n\tSYS_PSELECT6               = 72\n\tSYS_PPOLL                  = 73\n\tSYS_SIGNALFD4              = 74\n\tSYS_VMSPLICE               = 75\n\tSYS_SPLICE                 = 76\n\tSYS_TEE                    = 77\n\tSYS_READLINKAT             = 78\n\tSYS_FSTATAT                = 79\n\tSYS_FSTAT                  = 80\n\tSYS_SYNC                   = 81\n\tSYS_FSYNC                  = 82\n\tSYS_FDATASYNC              = 83\n\tSYS_SYNC_FILE_RANGE        = 84\n\tSYS_TIMERFD_CREATE         = 85\n\tSYS_TIMERFD_SETTIME        = 86\n\tSYS_TIMERFD_GETTIME        = 87\n\tSYS_UTIMENSAT              = 88\n\tSYS_ACCT                   = 89\n\tSYS_CAPGET                 = 90\n\tSYS_CAPSET                 = 91\n\tSYS_PERSONALITY            = 92\n\tSYS_EXIT                   = 93\n\tSYS_EXIT_GROUP             = 94\n\tSYS_WAITID                 = 95\n\tSYS_SET_TID_ADDRESS        = 96\n\tSYS_UNSHARE                = 97\n\tSYS_FUTEX                  = 98\n\tSYS_SET_ROBUST_LIST        = 99\n\tSYS_GET_ROBUST_LIST        = 100\n\tSYS_NANOSLEEP              = 101\n\tSYS_GETITIMER              = 102\n\tSYS_SETITIMER              = 103\n\tSYS_KEXEC_LOAD             = 104\n\tSYS_INIT_MODULE            = 105\n\tSYS_DELETE_MODULE          = 106\n\tSYS_TIMER_CREATE           = 107\n\tSYS_TIMER_GETTIME          = 108\n\tSYS_TIMER_GETOVERRUN       = 109\n\tSYS_TIMER_SETTIME          = 110\n\tSYS_TIMER_DELETE           = 111\n\tSYS_CLOCK_SETTIME          = 112\n\tSYS_CLOCK_GETTIME          = 113\n\tSYS_CLOCK_GETRES           = 114\n\tSYS_CLOCK_NANOSLEEP        = 115\n\tSYS_SYSLOG                 = 116\n\tSYS_PTRACE                 = 117\n\tSYS_SCHED_SETPARAM         = 118\n\tSYS_SCHED_SETSCHEDULER     = 119\n\tSYS_SCHED_GETSCHEDULER     = 120\n\tSYS_SCHED_GETPARAM         = 121\n\tSYS_SCHED_SETAFFINITY      = 122\n\tSYS_SCHED_GETAFFINITY      = 123\n\tSYS_SCHED_YIELD            = 124\n\tSYS_SCHED_GET_PRIORITY_MAX = 125\n\tSYS_SCHED_GET_PRIORITY_MIN = 126\n\tSYS_SCHED_RR_GET_INTERVAL  = 127\n\tSYS_RESTART_SYSCALL        = 128\n\tSYS_KILL                   = 129\n\tSYS_TKILL                  = 130\n\tSYS_TGKILL                 = 131\n\tSYS_SIGALTSTACK            = 132\n\tSYS_RT_SIGSUSPEND          = 133\n\tSYS_RT_SIGACTION           = 134\n\tSYS_RT_SIGPROCMASK         = 135\n\tSYS_RT_SIGPENDING          = 136\n\tSYS_RT_SIGTIMEDWAIT        = 137\n\tSYS_RT_SIGQUEUEINFO        = 138\n\tSYS_RT_SIGRETURN           = 139\n\tSYS_SETPRIORITY            = 140\n\tSYS_GETPRIORITY            = 141\n\tSYS_REBOOT                 = 142\n\tSYS_SETREGID               = 143\n\tSYS_SETGID                 = 144\n\tSYS_SETREUID               = 145\n\tSYS_SETUID                 = 146\n\tSYS_SETRESUID              = 147\n\tSYS_GETRESUID              = 148\n\tSYS_SETRESGID              = 149\n\tSYS_GETRESGID              = 150\n\tSYS_SETFSUID               = 151\n\tSYS_SETFSGID               = 152\n\tSYS_TIMES                  = 153\n\tSYS_SETPGID                = 154\n\tSYS_GETPGID                = 155\n\tSYS_GETSID                 = 156\n\tSYS_SETSID                 = 157\n\tSYS_GETGROUPS              = 158\n\tSYS_SETGROUPS              = 159\n\tSYS_UNAME                  = 160\n\tSYS_SETHOSTNAME            = 161\n\tSYS_SETDOMAINNAME          = 162\n\tSYS_GETRLIMIT              = 163\n\tSYS_SETRLIMIT              = 164\n\tSYS_GETRUSAGE              = 165\n\tSYS_UMASK                  = 166\n\tSYS_PRCTL                  = 167\n\tSYS_GETCPU                 = 168\n\tSYS_GETTIMEOFDAY           = 169\n\tSYS_SETTIMEOFDAY           = 170\n\tSYS_ADJTIMEX               = 171\n\tSYS_GETPID                 = 172\n\tSYS_GETPPID                = 173\n\tSYS_GETUID                 = 174\n\tSYS_GETEUID                = 175\n\tSYS_GETGID                 = 176\n\tSYS_GETEGID                = 177\n\tSYS_GETTID                 = 178\n\tSYS_SYSINFO                = 179\n\tSYS_MQ_OPEN                = 180\n\tSYS_MQ_UNLINK              = 181\n\tSYS_MQ_TIMEDSEND           = 182\n\tSYS_MQ_TIMEDRECEIVE        = 183\n\tSYS_MQ_NOTIFY              = 184\n\tSYS_MQ_GETSETATTR          = 185\n\tSYS_MSGGET                 = 186\n\tSYS_MSGCTL                 = 187\n\tSYS_MSGRCV                 = 188\n\tSYS_MSGSND                 = 189\n\tSYS_SEMGET                 = 190\n\tSYS_SEMCTL                 = 191\n\tSYS_SEMTIMEDOP             = 192\n\tSYS_SEMOP                  = 193\n\tSYS_SHMGET                 = 194\n\tSYS_SHMCTL                 = 195\n\tSYS_SHMAT                  = 196\n\tSYS_SHMDT                  = 197\n\tSYS_SOCKET                 = 198\n\tSYS_SOCKETPAIR             = 199\n\tSYS_BIND                   = 200\n\tSYS_LISTEN                 = 201\n\tSYS_ACCEPT                 = 202\n\tSYS_CONNECT                = 203\n\tSYS_GETSOCKNAME            = 204\n\tSYS_GETPEERNAME            = 205\n\tSYS_SENDTO                 = 206\n\tSYS_RECVFROM               = 207\n\tSYS_SETSOCKOPT             = 208\n\tSYS_GETSOCKOPT             = 209\n\tSYS_SHUTDOWN               = 210\n\tSYS_SENDMSG                = 211\n\tSYS_RECVMSG                = 212\n\tSYS_READAHEAD              = 213\n\tSYS_BRK                    = 214\n\tSYS_MUNMAP                 = 215\n\tSYS_MREMAP                 = 216\n\tSYS_ADD_KEY                = 217\n\tSYS_REQUEST_KEY            = 218\n\tSYS_KEYCTL                 = 219\n\tSYS_CLONE                  = 220\n\tSYS_EXECVE                 = 221\n\tSYS_MMAP                   = 222\n\tSYS_FADVISE64              = 223\n\tSYS_SWAPON                 = 224\n\tSYS_SWAPOFF                = 225\n\tSYS_MPROTECT               = 226\n\tSYS_MSYNC                  = 227\n\tSYS_MLOCK                  = 228\n\tSYS_MUNLOCK                = 229\n\tSYS_MLOCKALL               = 230\n\tSYS_MUNLOCKALL             = 231\n\tSYS_MINCORE                = 232\n\tSYS_MADVISE                = 233\n\tSYS_REMAP_FILE_PAGES       = 234\n\tSYS_MBIND                  = 235\n\tSYS_GET_MEMPOLICY          = 236\n\tSYS_SET_MEMPOLICY          = 237\n\tSYS_MIGRATE_PAGES          = 238\n\tSYS_MOVE_PAGES             = 239\n\tSYS_RT_TGSIGQUEUEINFO      = 240\n\tSYS_PERF_EVENT_OPEN        = 241\n\tSYS_ACCEPT4                = 242\n\tSYS_RECVMMSG               = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL  = 244\n\tSYS_WAIT4                  = 260\n\tSYS_PRLIMIT64              = 261\n\tSYS_FANOTIFY_INIT          = 262\n\tSYS_FANOTIFY_MARK          = 263\n\tSYS_NAME_TO_HANDLE_AT      = 264\n\tSYS_OPEN_BY_HANDLE_AT      = 265\n\tSYS_CLOCK_ADJTIME          = 266\n\tSYS_SYNCFS                 = 267\n\tSYS_SETNS                  = 268\n\tSYS_SENDMMSG               = 269\n\tSYS_PROCESS_VM_READV       = 270\n\tSYS_PROCESS_VM_WRITEV      = 271\n\tSYS_KCMP                   = 272\n\tSYS_FINIT_MODULE           = 273\n\tSYS_SCHED_SETATTR          = 274\n\tSYS_SCHED_GETATTR          = 275\n\tSYS_RENAMEAT2              = 276\n\tSYS_SECCOMP                = 277\n\tSYS_GETRANDOM              = 278\n\tSYS_MEMFD_CREATE           = 279\n\tSYS_BPF                    = 280\n\tSYS_EXECVEAT               = 281\n\tSYS_USERFAULTFD            = 282\n\tSYS_MEMBARRIER             = 283\n\tSYS_MLOCK2                 = 284\n\tSYS_COPY_FILE_RANGE        = 285\n\tSYS_PREADV2                = 286\n\tSYS_PWRITEV2               = 287\n\tSYS_PKEY_MPROTECT          = 288\n\tSYS_PKEY_ALLOC             = 289\n\tSYS_PKEY_FREE              = 290\n\tSYS_STATX                  = 291\n\tSYS_IO_PGETEVENTS          = 292\n\tSYS_RSEQ                   = 293\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go",
    "content": "// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build s390x,linux\n\npackage unix\n\nconst (\n\tSYS_EXIT                   = 1\n\tSYS_FORK                   = 2\n\tSYS_READ                   = 3\n\tSYS_WRITE                  = 4\n\tSYS_OPEN                   = 5\n\tSYS_CLOSE                  = 6\n\tSYS_RESTART_SYSCALL        = 7\n\tSYS_CREAT                  = 8\n\tSYS_LINK                   = 9\n\tSYS_UNLINK                 = 10\n\tSYS_EXECVE                 = 11\n\tSYS_CHDIR                  = 12\n\tSYS_MKNOD                  = 14\n\tSYS_CHMOD                  = 15\n\tSYS_LSEEK                  = 19\n\tSYS_GETPID                 = 20\n\tSYS_MOUNT                  = 21\n\tSYS_UMOUNT                 = 22\n\tSYS_PTRACE                 = 26\n\tSYS_ALARM                  = 27\n\tSYS_PAUSE                  = 29\n\tSYS_UTIME                  = 30\n\tSYS_ACCESS                 = 33\n\tSYS_NICE                   = 34\n\tSYS_SYNC                   = 36\n\tSYS_KILL                   = 37\n\tSYS_RENAME                 = 38\n\tSYS_MKDIR                  = 39\n\tSYS_RMDIR                  = 40\n\tSYS_DUP                    = 41\n\tSYS_PIPE                   = 42\n\tSYS_TIMES                  = 43\n\tSYS_BRK                    = 45\n\tSYS_SIGNAL                 = 48\n\tSYS_ACCT                   = 51\n\tSYS_UMOUNT2                = 52\n\tSYS_IOCTL                  = 54\n\tSYS_FCNTL                  = 55\n\tSYS_SETPGID                = 57\n\tSYS_UMASK                  = 60\n\tSYS_CHROOT                 = 61\n\tSYS_USTAT                  = 62\n\tSYS_DUP2                   = 63\n\tSYS_GETPPID                = 64\n\tSYS_GETPGRP                = 65\n\tSYS_SETSID                 = 66\n\tSYS_SIGACTION              = 67\n\tSYS_SIGSUSPEND             = 72\n\tSYS_SIGPENDING             = 73\n\tSYS_SETHOSTNAME            = 74\n\tSYS_SETRLIMIT              = 75\n\tSYS_GETRUSAGE              = 77\n\tSYS_GETTIMEOFDAY           = 78\n\tSYS_SETTIMEOFDAY           = 79\n\tSYS_SYMLINK                = 83\n\tSYS_READLINK               = 85\n\tSYS_USELIB                 = 86\n\tSYS_SWAPON                 = 87\n\tSYS_REBOOT                 = 88\n\tSYS_READDIR                = 89\n\tSYS_MMAP                   = 90\n\tSYS_MUNMAP                 = 91\n\tSYS_TRUNCATE               = 92\n\tSYS_FTRUNCATE              = 93\n\tSYS_FCHMOD                 = 94\n\tSYS_GETPRIORITY            = 96\n\tSYS_SETPRIORITY            = 97\n\tSYS_STATFS                 = 99\n\tSYS_FSTATFS                = 100\n\tSYS_SOCKETCALL             = 102\n\tSYS_SYSLOG                 = 103\n\tSYS_SETITIMER              = 104\n\tSYS_GETITIMER              = 105\n\tSYS_STAT                   = 106\n\tSYS_LSTAT                  = 107\n\tSYS_FSTAT                  = 108\n\tSYS_LOOKUP_DCOOKIE         = 110\n\tSYS_VHANGUP                = 111\n\tSYS_IDLE                   = 112\n\tSYS_WAIT4                  = 114\n\tSYS_SWAPOFF                = 115\n\tSYS_SYSINFO                = 116\n\tSYS_IPC                    = 117\n\tSYS_FSYNC                  = 118\n\tSYS_SIGRETURN              = 119\n\tSYS_CLONE                  = 120\n\tSYS_SETDOMAINNAME          = 121\n\tSYS_UNAME                  = 122\n\tSYS_ADJTIMEX               = 124\n\tSYS_MPROTECT               = 125\n\tSYS_SIGPROCMASK            = 126\n\tSYS_CREATE_MODULE          = 127\n\tSYS_INIT_MODULE            = 128\n\tSYS_DELETE_MODULE          = 129\n\tSYS_GET_KERNEL_SYMS        = 130\n\tSYS_QUOTACTL               = 131\n\tSYS_GETPGID                = 132\n\tSYS_FCHDIR                 = 133\n\tSYS_BDFLUSH                = 134\n\tSYS_SYSFS                  = 135\n\tSYS_PERSONALITY            = 136\n\tSYS_AFS_SYSCALL            = 137\n\tSYS_GETDENTS               = 141\n\tSYS_SELECT                 = 142\n\tSYS_FLOCK                  = 143\n\tSYS_MSYNC                  = 144\n\tSYS_READV                  = 145\n\tSYS_WRITEV                 = 146\n\tSYS_GETSID                 = 147\n\tSYS_FDATASYNC              = 148\n\tSYS__SYSCTL                = 149\n\tSYS_MLOCK                  = 150\n\tSYS_MUNLOCK                = 151\n\tSYS_MLOCKALL               = 152\n\tSYS_MUNLOCKALL             = 153\n\tSYS_SCHED_SETPARAM         = 154\n\tSYS_SCHED_GETPARAM         = 155\n\tSYS_SCHED_SETSCHEDULER     = 156\n\tSYS_SCHED_GETSCHEDULER     = 157\n\tSYS_SCHED_YIELD            = 158\n\tSYS_SCHED_GET_PRIORITY_MAX = 159\n\tSYS_SCHED_GET_PRIORITY_MIN = 160\n\tSYS_SCHED_RR_GET_INTERVAL  = 161\n\tSYS_NANOSLEEP              = 162\n\tSYS_MREMAP                 = 163\n\tSYS_QUERY_MODULE           = 167\n\tSYS_POLL                   = 168\n\tSYS_NFSSERVCTL             = 169\n\tSYS_PRCTL                  = 172\n\tSYS_RT_SIGRETURN           = 173\n\tSYS_RT_SIGACTION           = 174\n\tSYS_RT_SIGPROCMASK         = 175\n\tSYS_RT_SIGPENDING          = 176\n\tSYS_RT_SIGTIMEDWAIT        = 177\n\tSYS_RT_SIGQUEUEINFO        = 178\n\tSYS_RT_SIGSUSPEND          = 179\n\tSYS_PREAD64                = 180\n\tSYS_PWRITE64               = 181\n\tSYS_GETCWD                 = 183\n\tSYS_CAPGET                 = 184\n\tSYS_CAPSET                 = 185\n\tSYS_SIGALTSTACK            = 186\n\tSYS_SENDFILE               = 187\n\tSYS_GETPMSG                = 188\n\tSYS_PUTPMSG                = 189\n\tSYS_VFORK                  = 190\n\tSYS_GETRLIMIT              = 191\n\tSYS_LCHOWN                 = 198\n\tSYS_GETUID                 = 199\n\tSYS_GETGID                 = 200\n\tSYS_GETEUID                = 201\n\tSYS_GETEGID                = 202\n\tSYS_SETREUID               = 203\n\tSYS_SETREGID               = 204\n\tSYS_GETGROUPS              = 205\n\tSYS_SETGROUPS              = 206\n\tSYS_FCHOWN                 = 207\n\tSYS_SETRESUID              = 208\n\tSYS_GETRESUID              = 209\n\tSYS_SETRESGID              = 210\n\tSYS_GETRESGID              = 211\n\tSYS_CHOWN                  = 212\n\tSYS_SETUID                 = 213\n\tSYS_SETGID                 = 214\n\tSYS_SETFSUID               = 215\n\tSYS_SETFSGID               = 216\n\tSYS_PIVOT_ROOT             = 217\n\tSYS_MINCORE                = 218\n\tSYS_MADVISE                = 219\n\tSYS_GETDENTS64             = 220\n\tSYS_READAHEAD              = 222\n\tSYS_SETXATTR               = 224\n\tSYS_LSETXATTR              = 225\n\tSYS_FSETXATTR              = 226\n\tSYS_GETXATTR               = 227\n\tSYS_LGETXATTR              = 228\n\tSYS_FGETXATTR              = 229\n\tSYS_LISTXATTR              = 230\n\tSYS_LLISTXATTR             = 231\n\tSYS_FLISTXATTR             = 232\n\tSYS_REMOVEXATTR            = 233\n\tSYS_LREMOVEXATTR           = 234\n\tSYS_FREMOVEXATTR           = 235\n\tSYS_GETTID                 = 236\n\tSYS_TKILL                  = 237\n\tSYS_FUTEX                  = 238\n\tSYS_SCHED_SETAFFINITY      = 239\n\tSYS_SCHED_GETAFFINITY      = 240\n\tSYS_TGKILL                 = 241\n\tSYS_IO_SETUP               = 243\n\tSYS_IO_DESTROY             = 244\n\tSYS_IO_GETEVENTS           = 245\n\tSYS_IO_SUBMIT              = 246\n\tSYS_IO_CANCEL              = 247\n\tSYS_EXIT_GROUP             = 248\n\tSYS_EPOLL_CREATE           = 249\n\tSYS_EPOLL_CTL              = 250\n\tSYS_EPOLL_WAIT             = 251\n\tSYS_SET_TID_ADDRESS        = 252\n\tSYS_FADVISE64              = 253\n\tSYS_TIMER_CREATE           = 254\n\tSYS_TIMER_SETTIME          = 255\n\tSYS_TIMER_GETTIME          = 256\n\tSYS_TIMER_GETOVERRUN       = 257\n\tSYS_TIMER_DELETE           = 258\n\tSYS_CLOCK_SETTIME          = 259\n\tSYS_CLOCK_GETTIME          = 260\n\tSYS_CLOCK_GETRES           = 261\n\tSYS_CLOCK_NANOSLEEP        = 262\n\tSYS_STATFS64               = 265\n\tSYS_FSTATFS64              = 266\n\tSYS_REMAP_FILE_PAGES       = 267\n\tSYS_MBIND                  = 268\n\tSYS_GET_MEMPOLICY          = 269\n\tSYS_SET_MEMPOLICY          = 270\n\tSYS_MQ_OPEN                = 271\n\tSYS_MQ_UNLINK              = 272\n\tSYS_MQ_TIMEDSEND           = 273\n\tSYS_MQ_TIMEDRECEIVE        = 274\n\tSYS_MQ_NOTIFY              = 275\n\tSYS_MQ_GETSETATTR          = 276\n\tSYS_KEXEC_LOAD             = 277\n\tSYS_ADD_KEY                = 278\n\tSYS_REQUEST_KEY            = 279\n\tSYS_KEYCTL                 = 280\n\tSYS_WAITID                 = 281\n\tSYS_IOPRIO_SET             = 282\n\tSYS_IOPRIO_GET             = 283\n\tSYS_INOTIFY_INIT           = 284\n\tSYS_INOTIFY_ADD_WATCH      = 285\n\tSYS_INOTIFY_RM_WATCH       = 286\n\tSYS_MIGRATE_PAGES          = 287\n\tSYS_OPENAT                 = 288\n\tSYS_MKDIRAT                = 289\n\tSYS_MKNODAT                = 290\n\tSYS_FCHOWNAT               = 291\n\tSYS_FUTIMESAT              = 292\n\tSYS_NEWFSTATAT             = 293\n\tSYS_UNLINKAT               = 294\n\tSYS_RENAMEAT               = 295\n\tSYS_LINKAT                 = 296\n\tSYS_SYMLINKAT              = 297\n\tSYS_READLINKAT             = 298\n\tSYS_FCHMODAT               = 299\n\tSYS_FACCESSAT              = 300\n\tSYS_PSELECT6               = 301\n\tSYS_PPOLL                  = 302\n\tSYS_UNSHARE                = 303\n\tSYS_SET_ROBUST_LIST        = 304\n\tSYS_GET_ROBUST_LIST        = 305\n\tSYS_SPLICE                 = 306\n\tSYS_SYNC_FILE_RANGE        = 307\n\tSYS_TEE                    = 308\n\tSYS_VMSPLICE               = 309\n\tSYS_MOVE_PAGES             = 310\n\tSYS_GETCPU                 = 311\n\tSYS_EPOLL_PWAIT            = 312\n\tSYS_UTIMES                 = 313\n\tSYS_FALLOCATE              = 314\n\tSYS_UTIMENSAT              = 315\n\tSYS_SIGNALFD               = 316\n\tSYS_TIMERFD                = 317\n\tSYS_EVENTFD                = 318\n\tSYS_TIMERFD_CREATE         = 319\n\tSYS_TIMERFD_SETTIME        = 320\n\tSYS_TIMERFD_GETTIME        = 321\n\tSYS_SIGNALFD4              = 322\n\tSYS_EVENTFD2               = 323\n\tSYS_INOTIFY_INIT1          = 324\n\tSYS_PIPE2                  = 325\n\tSYS_DUP3                   = 326\n\tSYS_EPOLL_CREATE1          = 327\n\tSYS_PREADV                 = 328\n\tSYS_PWRITEV                = 329\n\tSYS_RT_TGSIGQUEUEINFO      = 330\n\tSYS_PERF_EVENT_OPEN        = 331\n\tSYS_FANOTIFY_INIT          = 332\n\tSYS_FANOTIFY_MARK          = 333\n\tSYS_PRLIMIT64              = 334\n\tSYS_NAME_TO_HANDLE_AT      = 335\n\tSYS_OPEN_BY_HANDLE_AT      = 336\n\tSYS_CLOCK_ADJTIME          = 337\n\tSYS_SYNCFS                 = 338\n\tSYS_SETNS                  = 339\n\tSYS_PROCESS_VM_READV       = 340\n\tSYS_PROCESS_VM_WRITEV      = 341\n\tSYS_S390_RUNTIME_INSTR     = 342\n\tSYS_KCMP                   = 343\n\tSYS_FINIT_MODULE           = 344\n\tSYS_SCHED_SETATTR          = 345\n\tSYS_SCHED_GETATTR          = 346\n\tSYS_RENAMEAT2              = 347\n\tSYS_SECCOMP                = 348\n\tSYS_GETRANDOM              = 349\n\tSYS_MEMFD_CREATE           = 350\n\tSYS_BPF                    = 351\n\tSYS_S390_PCI_MMIO_WRITE    = 352\n\tSYS_S390_PCI_MMIO_READ     = 353\n\tSYS_EXECVEAT               = 354\n\tSYS_USERFAULTFD            = 355\n\tSYS_MEMBARRIER             = 356\n\tSYS_RECVMMSG               = 357\n\tSYS_SENDMMSG               = 358\n\tSYS_SOCKET                 = 359\n\tSYS_SOCKETPAIR             = 360\n\tSYS_BIND                   = 361\n\tSYS_CONNECT                = 362\n\tSYS_LISTEN                 = 363\n\tSYS_ACCEPT4                = 364\n\tSYS_GETSOCKOPT             = 365\n\tSYS_SETSOCKOPT             = 366\n\tSYS_GETSOCKNAME            = 367\n\tSYS_GETPEERNAME            = 368\n\tSYS_SENDTO                 = 369\n\tSYS_SENDMSG                = 370\n\tSYS_RECVFROM               = 371\n\tSYS_RECVMSG                = 372\n\tSYS_SHUTDOWN               = 373\n\tSYS_MLOCK2                 = 374\n\tSYS_COPY_FILE_RANGE        = 375\n\tSYS_PREADV2                = 376\n\tSYS_PWRITEV2               = 377\n\tSYS_S390_GUARDED_STORAGE   = 378\n\tSYS_STATX                  = 379\n\tSYS_S390_STHYI             = 380\n\tSYS_KEXEC_FILE_LOAD        = 381\n\tSYS_IO_PGETEVENTS          = 382\n\tSYS_RSEQ                   = 383\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// mksysnum_linux.pl -Ilinux/usr/include -m64 -D__arch64__ linux/usr/include/asm/unistd.h\n// Code generated by the command above; DO NOT EDIT.\n\n// +build sparc64,linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL        = 0\n\tSYS_EXIT                   = 1\n\tSYS_FORK                   = 2\n\tSYS_READ                   = 3\n\tSYS_WRITE                  = 4\n\tSYS_OPEN                   = 5\n\tSYS_CLOSE                  = 6\n\tSYS_WAIT4                  = 7\n\tSYS_CREAT                  = 8\n\tSYS_LINK                   = 9\n\tSYS_UNLINK                 = 10\n\tSYS_EXECV                  = 11\n\tSYS_CHDIR                  = 12\n\tSYS_CHOWN                  = 13\n\tSYS_MKNOD                  = 14\n\tSYS_CHMOD                  = 15\n\tSYS_LCHOWN                 = 16\n\tSYS_BRK                    = 17\n\tSYS_PERFCTR                = 18\n\tSYS_LSEEK                  = 19\n\tSYS_GETPID                 = 20\n\tSYS_CAPGET                 = 21\n\tSYS_CAPSET                 = 22\n\tSYS_SETUID                 = 23\n\tSYS_GETUID                 = 24\n\tSYS_VMSPLICE               = 25\n\tSYS_PTRACE                 = 26\n\tSYS_ALARM                  = 27\n\tSYS_SIGALTSTACK            = 28\n\tSYS_PAUSE                  = 29\n\tSYS_UTIME                  = 30\n\tSYS_ACCESS                 = 33\n\tSYS_NICE                   = 34\n\tSYS_SYNC                   = 36\n\tSYS_KILL                   = 37\n\tSYS_STAT                   = 38\n\tSYS_SENDFILE               = 39\n\tSYS_LSTAT                  = 40\n\tSYS_DUP                    = 41\n\tSYS_PIPE                   = 42\n\tSYS_TIMES                  = 43\n\tSYS_UMOUNT2                = 45\n\tSYS_SETGID                 = 46\n\tSYS_GETGID                 = 47\n\tSYS_SIGNAL                 = 48\n\tSYS_GETEUID                = 49\n\tSYS_GETEGID                = 50\n\tSYS_ACCT                   = 51\n\tSYS_MEMORY_ORDERING        = 52\n\tSYS_IOCTL                  = 54\n\tSYS_REBOOT                 = 55\n\tSYS_SYMLINK                = 57\n\tSYS_READLINK               = 58\n\tSYS_EXECVE                 = 59\n\tSYS_UMASK                  = 60\n\tSYS_CHROOT                 = 61\n\tSYS_FSTAT                  = 62\n\tSYS_FSTAT64                = 63\n\tSYS_GETPAGESIZE            = 64\n\tSYS_MSYNC                  = 65\n\tSYS_VFORK                  = 66\n\tSYS_PREAD64                = 67\n\tSYS_PWRITE64               = 68\n\tSYS_MMAP                   = 71\n\tSYS_MUNMAP                 = 73\n\tSYS_MPROTECT               = 74\n\tSYS_MADVISE                = 75\n\tSYS_VHANGUP                = 76\n\tSYS_MINCORE                = 78\n\tSYS_GETGROUPS              = 79\n\tSYS_SETGROUPS              = 80\n\tSYS_GETPGRP                = 81\n\tSYS_SETITIMER              = 83\n\tSYS_SWAPON                 = 85\n\tSYS_GETITIMER              = 86\n\tSYS_SETHOSTNAME            = 88\n\tSYS_DUP2                   = 90\n\tSYS_FCNTL                  = 92\n\tSYS_SELECT                 = 93\n\tSYS_FSYNC                  = 95\n\tSYS_SETPRIORITY            = 96\n\tSYS_SOCKET                 = 97\n\tSYS_CONNECT                = 98\n\tSYS_ACCEPT                 = 99\n\tSYS_GETPRIORITY            = 100\n\tSYS_RT_SIGRETURN           = 101\n\tSYS_RT_SIGACTION           = 102\n\tSYS_RT_SIGPROCMASK         = 103\n\tSYS_RT_SIGPENDING          = 104\n\tSYS_RT_SIGTIMEDWAIT        = 105\n\tSYS_RT_SIGQUEUEINFO        = 106\n\tSYS_RT_SIGSUSPEND          = 107\n\tSYS_SETRESUID              = 108\n\tSYS_GETRESUID              = 109\n\tSYS_SETRESGID              = 110\n\tSYS_GETRESGID              = 111\n\tSYS_RECVMSG                = 113\n\tSYS_SENDMSG                = 114\n\tSYS_GETTIMEOFDAY           = 116\n\tSYS_GETRUSAGE              = 117\n\tSYS_GETSOCKOPT             = 118\n\tSYS_GETCWD                 = 119\n\tSYS_READV                  = 120\n\tSYS_WRITEV                 = 121\n\tSYS_SETTIMEOFDAY           = 122\n\tSYS_FCHOWN                 = 123\n\tSYS_FCHMOD                 = 124\n\tSYS_RECVFROM               = 125\n\tSYS_SETREUID               = 126\n\tSYS_SETREGID               = 127\n\tSYS_RENAME                 = 128\n\tSYS_TRUNCATE               = 129\n\tSYS_FTRUNCATE              = 130\n\tSYS_FLOCK                  = 131\n\tSYS_LSTAT64                = 132\n\tSYS_SENDTO                 = 133\n\tSYS_SHUTDOWN               = 134\n\tSYS_SOCKETPAIR             = 135\n\tSYS_MKDIR                  = 136\n\tSYS_RMDIR                  = 137\n\tSYS_UTIMES                 = 138\n\tSYS_STAT64                 = 139\n\tSYS_SENDFILE64             = 140\n\tSYS_GETPEERNAME            = 141\n\tSYS_FUTEX                  = 142\n\tSYS_GETTID                 = 143\n\tSYS_GETRLIMIT              = 144\n\tSYS_SETRLIMIT              = 145\n\tSYS_PIVOT_ROOT             = 146\n\tSYS_PRCTL                  = 147\n\tSYS_PCICONFIG_READ         = 148\n\tSYS_PCICONFIG_WRITE        = 149\n\tSYS_GETSOCKNAME            = 150\n\tSYS_INOTIFY_INIT           = 151\n\tSYS_INOTIFY_ADD_WATCH      = 152\n\tSYS_POLL                   = 153\n\tSYS_GETDENTS64             = 154\n\tSYS_INOTIFY_RM_WATCH       = 156\n\tSYS_STATFS                 = 157\n\tSYS_FSTATFS                = 158\n\tSYS_UMOUNT                 = 159\n\tSYS_SCHED_SET_AFFINITY     = 160\n\tSYS_SCHED_GET_AFFINITY     = 161\n\tSYS_GETDOMAINNAME          = 162\n\tSYS_SETDOMAINNAME          = 163\n\tSYS_UTRAP_INSTALL          = 164\n\tSYS_QUOTACTL               = 165\n\tSYS_SET_TID_ADDRESS        = 166\n\tSYS_MOUNT                  = 167\n\tSYS_USTAT                  = 168\n\tSYS_SETXATTR               = 169\n\tSYS_LSETXATTR              = 170\n\tSYS_FSETXATTR              = 171\n\tSYS_GETXATTR               = 172\n\tSYS_LGETXATTR              = 173\n\tSYS_GETDENTS               = 174\n\tSYS_SETSID                 = 175\n\tSYS_FCHDIR                 = 176\n\tSYS_FGETXATTR              = 177\n\tSYS_LISTXATTR              = 178\n\tSYS_LLISTXATTR             = 179\n\tSYS_FLISTXATTR             = 180\n\tSYS_REMOVEXATTR            = 181\n\tSYS_LREMOVEXATTR           = 182\n\tSYS_SIGPENDING             = 183\n\tSYS_QUERY_MODULE           = 184\n\tSYS_SETPGID                = 185\n\tSYS_FREMOVEXATTR           = 186\n\tSYS_TKILL                  = 187\n\tSYS_EXIT_GROUP             = 188\n\tSYS_UNAME                  = 189\n\tSYS_INIT_MODULE            = 190\n\tSYS_PERSONALITY            = 191\n\tSYS_REMAP_FILE_PAGES       = 192\n\tSYS_EPOLL_CREATE           = 193\n\tSYS_EPOLL_CTL              = 194\n\tSYS_EPOLL_WAIT             = 195\n\tSYS_IOPRIO_SET             = 196\n\tSYS_GETPPID                = 197\n\tSYS_SIGACTION              = 198\n\tSYS_SGETMASK               = 199\n\tSYS_SSETMASK               = 200\n\tSYS_SIGSUSPEND             = 201\n\tSYS_OLDLSTAT               = 202\n\tSYS_USELIB                 = 203\n\tSYS_READDIR                = 204\n\tSYS_READAHEAD              = 205\n\tSYS_SOCKETCALL             = 206\n\tSYS_SYSLOG                 = 207\n\tSYS_LOOKUP_DCOOKIE         = 208\n\tSYS_FADVISE64              = 209\n\tSYS_FADVISE64_64           = 210\n\tSYS_TGKILL                 = 211\n\tSYS_WAITPID                = 212\n\tSYS_SWAPOFF                = 213\n\tSYS_SYSINFO                = 214\n\tSYS_IPC                    = 215\n\tSYS_SIGRETURN              = 216\n\tSYS_CLONE                  = 217\n\tSYS_IOPRIO_GET             = 218\n\tSYS_ADJTIMEX               = 219\n\tSYS_SIGPROCMASK            = 220\n\tSYS_CREATE_MODULE          = 221\n\tSYS_DELETE_MODULE          = 222\n\tSYS_GET_KERNEL_SYMS        = 223\n\tSYS_GETPGID                = 224\n\tSYS_BDFLUSH                = 225\n\tSYS_SYSFS                  = 226\n\tSYS_AFS_SYSCALL            = 227\n\tSYS_SETFSUID               = 228\n\tSYS_SETFSGID               = 229\n\tSYS__NEWSELECT             = 230\n\tSYS_SPLICE                 = 232\n\tSYS_STIME                  = 233\n\tSYS_STATFS64               = 234\n\tSYS_FSTATFS64              = 235\n\tSYS__LLSEEK                = 236\n\tSYS_MLOCK                  = 237\n\tSYS_MUNLOCK                = 238\n\tSYS_MLOCKALL               = 239\n\tSYS_MUNLOCKALL             = 240\n\tSYS_SCHED_SETPARAM         = 241\n\tSYS_SCHED_GETPARAM         = 242\n\tSYS_SCHED_SETSCHEDULER     = 243\n\tSYS_SCHED_GETSCHEDULER     = 244\n\tSYS_SCHED_YIELD            = 245\n\tSYS_SCHED_GET_PRIORITY_MAX = 246\n\tSYS_SCHED_GET_PRIORITY_MIN = 247\n\tSYS_SCHED_RR_GET_INTERVAL  = 248\n\tSYS_NANOSLEEP              = 249\n\tSYS_MREMAP                 = 250\n\tSYS__SYSCTL                = 251\n\tSYS_GETSID                 = 252\n\tSYS_FDATASYNC              = 253\n\tSYS_NFSSERVCTL             = 254\n\tSYS_SYNC_FILE_RANGE        = 255\n\tSYS_CLOCK_SETTIME          = 256\n\tSYS_CLOCK_GETTIME          = 257\n\tSYS_CLOCK_GETRES           = 258\n\tSYS_CLOCK_NANOSLEEP        = 259\n\tSYS_SCHED_GETAFFINITY      = 260\n\tSYS_SCHED_SETAFFINITY      = 261\n\tSYS_TIMER_SETTIME          = 262\n\tSYS_TIMER_GETTIME          = 263\n\tSYS_TIMER_GETOVERRUN       = 264\n\tSYS_TIMER_DELETE           = 265\n\tSYS_TIMER_CREATE           = 266\n\tSYS_IO_SETUP               = 268\n\tSYS_IO_DESTROY             = 269\n\tSYS_IO_SUBMIT              = 270\n\tSYS_IO_CANCEL              = 271\n\tSYS_IO_GETEVENTS           = 272\n\tSYS_MQ_OPEN                = 273\n\tSYS_MQ_UNLINK              = 274\n\tSYS_MQ_TIMEDSEND           = 275\n\tSYS_MQ_TIMEDRECEIVE        = 276\n\tSYS_MQ_NOTIFY              = 277\n\tSYS_MQ_GETSETATTR          = 278\n\tSYS_WAITID                 = 279\n\tSYS_TEE                    = 280\n\tSYS_ADD_KEY                = 281\n\tSYS_REQUEST_KEY            = 282\n\tSYS_KEYCTL                 = 283\n\tSYS_OPENAT                 = 284\n\tSYS_MKDIRAT                = 285\n\tSYS_MKNODAT                = 286\n\tSYS_FCHOWNAT               = 287\n\tSYS_FUTIMESAT              = 288\n\tSYS_FSTATAT64              = 289\n\tSYS_UNLINKAT               = 290\n\tSYS_RENAMEAT               = 291\n\tSYS_LINKAT                 = 292\n\tSYS_SYMLINKAT              = 293\n\tSYS_READLINKAT             = 294\n\tSYS_FCHMODAT               = 295\n\tSYS_FACCESSAT              = 296\n\tSYS_PSELECT6               = 297\n\tSYS_PPOLL                  = 298\n\tSYS_UNSHARE                = 299\n\tSYS_SET_ROBUST_LIST        = 300\n\tSYS_GET_ROBUST_LIST        = 301\n\tSYS_MIGRATE_PAGES          = 302\n\tSYS_MBIND                  = 303\n\tSYS_GET_MEMPOLICY          = 304\n\tSYS_SET_MEMPOLICY          = 305\n\tSYS_KEXEC_LOAD             = 306\n\tSYS_MOVE_PAGES             = 307\n\tSYS_GETCPU                 = 308\n\tSYS_EPOLL_PWAIT            = 309\n\tSYS_UTIMENSAT              = 310\n\tSYS_SIGNALFD               = 311\n\tSYS_TIMERFD_CREATE         = 312\n\tSYS_EVENTFD                = 313\n\tSYS_FALLOCATE              = 314\n\tSYS_TIMERFD_SETTIME        = 315\n\tSYS_TIMERFD_GETTIME        = 316\n\tSYS_SIGNALFD4              = 317\n\tSYS_EVENTFD2               = 318\n\tSYS_EPOLL_CREATE1          = 319\n\tSYS_DUP3                   = 320\n\tSYS_PIPE2                  = 321\n\tSYS_INOTIFY_INIT1          = 322\n\tSYS_ACCEPT4                = 323\n\tSYS_PREADV                 = 324\n\tSYS_PWRITEV                = 325\n\tSYS_RT_TGSIGQUEUEINFO      = 326\n\tSYS_PERF_EVENT_OPEN        = 327\n\tSYS_RECVMMSG               = 328\n\tSYS_FANOTIFY_INIT          = 329\n\tSYS_FANOTIFY_MARK          = 330\n\tSYS_PRLIMIT64              = 331\n\tSYS_NAME_TO_HANDLE_AT      = 332\n\tSYS_OPEN_BY_HANDLE_AT      = 333\n\tSYS_CLOCK_ADJTIME          = 334\n\tSYS_SYNCFS                 = 335\n\tSYS_SENDMMSG               = 336\n\tSYS_SETNS                  = 337\n\tSYS_PROCESS_VM_READV       = 338\n\tSYS_PROCESS_VM_WRITEV      = 339\n\tSYS_KERN_FEATURES          = 340\n\tSYS_KCMP                   = 341\n\tSYS_FINIT_MODULE           = 342\n\tSYS_SCHED_SETATTR          = 343\n\tSYS_SCHED_GETATTR          = 344\n\tSYS_RENAMEAT2              = 345\n\tSYS_SECCOMP                = 346\n\tSYS_GETRANDOM              = 347\n\tSYS_MEMFD_CREATE           = 348\n\tSYS_BPF                    = 349\n\tSYS_EXECVEAT               = 350\n\tSYS_MEMBARRIER             = 351\n\tSYS_USERFAULTFD            = 352\n\tSYS_BIND                   = 353\n\tSYS_LISTEN                 = 354\n\tSYS_SETSOCKOPT             = 355\n\tSYS_MLOCK2                 = 356\n\tSYS_COPY_FILE_RANGE        = 357\n\tSYS_PREADV2                = 358\n\tSYS_PWRITEV2               = 359\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go",
    "content": "// mksysnum_netbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\n// +build 386,netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go",
    "content": "// mksysnum_netbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\n// +build amd64,netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go",
    "content": "// mksysnum_netbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\n// +build arm,netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go",
    "content": "// mksysnum_openbsd.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \\\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, \\\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \\\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \\\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \\\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \\\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \\\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \\\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \\\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \\\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \\\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \\\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \\\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \\\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \\\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \\\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \\\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \\\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, \\\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \\\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, \\\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, \\\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \\\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, \\\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \\\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \\\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \\\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, \\\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, \\\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, \\\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \\\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \\\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, \\\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, \\\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \\\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \\\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \\\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, \\\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \\\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \\\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, \\\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \\\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \\\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \\\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, \\\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \\\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \\\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \\\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, \\\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, \\\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \\\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, \\\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, \\\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \\\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, \\\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \\\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \\\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \\\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \\\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \\\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \\\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \\\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \\\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \\\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \\\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \\\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \\\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, \\\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \\\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \\\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \\\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \\\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \\\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \\\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \\\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \\\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \\\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \\\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \\\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \\\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \\\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \\\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \\\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \\\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \\\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \\\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \\\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \\\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \\\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \\\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \\\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \\\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \\\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \\\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \\\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \\\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \\\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \\\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \\\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \\\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \\\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go",
    "content": "// mksysnum_openbsd.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \\\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, \\\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \\\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \\\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \\\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \\\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \\\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \\\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \\\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \\\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \\\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \\\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \\\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \\\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \\\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \\\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \\\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \\\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, \\\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \\\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, \\\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, \\\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \\\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, \\\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \\\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \\\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \\\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, \\\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, \\\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, \\\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \\\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \\\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, \\\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, \\\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \\\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \\\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \\\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, \\\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \\\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \\\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, \\\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \\\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \\\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \\\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, \\\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \\\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \\\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \\\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, \\\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, \\\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \\\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, \\\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, \\\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \\\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, \\\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \\\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \\\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \\\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \\\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \\\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \\\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \\\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \\\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \\\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \\\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \\\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \\\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, \\\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \\\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \\\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \\\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \\\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \\\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \\\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \\\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \\\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \\\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \\\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \\\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \\\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \\\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \\\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \\\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \\\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \\\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \\\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \\\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \\\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \\\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \\\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \\\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \\\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \\\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \\\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \\\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \\\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \\\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \\\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \\\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \\\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \\\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go",
    "content": "// mksysnum_openbsd.pl\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \\\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, \\\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \\\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \\\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \\\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \\\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \\\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \\\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \\\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \\\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \\\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \\\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \\\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \\\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \\\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \\\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \\\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \\\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \\\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, \\\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \\\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, \\\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, \\\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \\\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, \\\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \\\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \\\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \\\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, \\\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, \\\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, \\\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \\\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \\\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, \\\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, \\\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \\\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \\\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \\\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, \\\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \\\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \\\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, \\\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \\\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \\\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \\\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \\\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, \\\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \\\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \\\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \\\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \\\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, \\\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, \\\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \\\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \\\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, \\\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, \\\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \\\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, \\\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \\\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \\\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \\\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \\\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \\\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \\\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \\\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \\\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \\\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \\\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \\\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \\\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, \\\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \\\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \\\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \\\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \\\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \\\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \\\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \\\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \\\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \\\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \\\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \\\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \\\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \\\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \\\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \\\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \\\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \\\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \\\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \\\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \\\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \\\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \\\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \\\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \\\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \\\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \\\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \\\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \\\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \\\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \\\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \\\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \\\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \\\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \\\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc,aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int32\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype StTimespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int32\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint32\n\ntype Stat_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tSize     int32\n\tAtim     StTimespec\n\tMtim     StTimespec\n\tCtim     StTimespec\n\tBlksize  int32\n\tBlocks   int32\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint32\n\tIno    uint32\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4 = 0x10\n\tSizeofSockaddrInet6 = 0x1c\n\tSizeofSockaddrAny   = 0x404\n\tSizeofSockaddrUnix  = 0x401\n\tSizeofLinger        = 0x8\n\tSizeofIPMreq        = 0x8\n\tSizeofIPv6Mreq      = 0x14\n\tSizeofIPv6MTUInfo   = 0x20\n\tSizeofMsghdr        = 0x1c\n\tSizeofCmsghdr       = 0xc\n\tSizeofICMPv6Filter  = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [2048]int32\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tLosigs uint32\n\tHisigs uint32\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint32\n\tBlocks    uint32\n\tBfree     uint32\n\tBavail    uint32\n\tFiles     uint32\n\tFfree     uint32\n\tFsid      Fsid_t\n\tVfstype   int32\n\tFsize     uint32\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64,aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int64\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype StTimespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int64\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint64\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint64\n\tSsize    int32\n\t_        [4]byte\n\tAtim     StTimespec\n\tMtim     StTimespec\n\tCtim     StTimespec\n\tBlksize  int64\n\tBlocks   int64\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n\tPadto_ll uint32\n\tSize     int64\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint64\n\tIno    uint64\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n\t_      [4]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4 = 0x10\n\tSizeofSockaddrInet6 = 0x1c\n\tSizeofSockaddrAny   = 0x404\n\tSizeofSockaddrUnix  = 0x401\n\tSizeofLinger        = 0x8\n\tSizeofIPMreq        = 0x8\n\tSizeofIPv6Mreq      = 0x14\n\tSizeofIPv6MTUInfo   = 0x20\n\tSizeofMsghdr        = 0x30\n\tSizeofCmsghdr       = 0xc\n\tSizeofICMPv6Filter  = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tSet [4]uint64\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint64\n\tBlocks    uint64\n\tBfree     uint64\n\tBavail    uint64\n\tFiles     uint64\n\tFfree     uint64\n\tFsid      Fsid64_t\n\tVfstype   int32\n\t_         [4]byte\n\tFsize     uint64\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n\t_         [4]byte\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct{}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           int32\n\tMode          uint16\n\tNlink         uint16\n\tIno           uint64\n\tUid           uint32\n\tGid           uint32\n\tRdev          int32\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       int32\n\tFlags         uint32\n\tGen           uint32\n\tLspare        int32\n\tQspare        [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint32\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags       uint32\n\tContigbytes int64\n\tDevoffset   int64\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int32\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           int32\n\tMode          uint16\n\tNlink         uint16\n\tIno           uint64\n\tUid           uint32\n\tGid           uint32\n\tRdev          int32\n\t_             [4]byte\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       int32\n\tFlags         uint32\n\tGen           uint32\n\tLspare        int32\n\tQspare        [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [8]byte\n\t_     [8]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [4]byte\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\t_      [4]byte\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go",
    "content": "// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_darwin.go\n\n// +build arm,darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 [0]byte\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           int32\n\tMode          uint16\n\tNlink         uint16\n\tIno           uint64\n\tUid           uint32\n\tGid           uint32\n\tRdev          int32\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       int32\n\tFlags         uint32\n\tGen           uint32\n\tLspare        int32\n\tQspare        [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint32\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags       uint32\n\tContigbytes int64\n\tDevoffset   int64\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int32\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           int32\n\tMode          uint16\n\tNlink         uint16\n\tIno           uint64\n\tUid           uint32\n\tGid           uint32\n\tRdev          int32\n\t_             [4]byte\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       int32\n\tFlags         uint32\n\tGen           uint32\n\tLspare        int32\n\tQspare        [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [8]byte\n\t_     [8]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [4]byte\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\t_      [4]byte\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go",
    "content": "// cgo -godefs types_dragonfly.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,dragonfly\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tIno      uint64\n\tNlink    uint32\n\tDev      uint32\n\tMode     uint16\n\tPadding1 uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  uint32\n\tFlags    uint32\n\tGen      uint32\n\tLspare   int32\n\tQspare1  int64\n\tQspare2  int64\n}\n\ntype Statfs_t struct {\n\tSpare2      int64\n\tBsize       int64\n\tIosize      int64\n\tBlocks      int64\n\tBfree       int64\n\tBavail      int64\n\tFiles       int64\n\tFfree       int64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        int32\n\tFlags       int32\n\t_           [4]byte\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]int8\n\tMntonname   [80]int8\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]int8\n\tSpares2     int16\n\t_           [4]byte\n\tSpare       [2]int64\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno  uint64\n\tNamlen  uint16\n\tType    uint8\n\tUnused1 uint8\n\tUnused2 uint32\n\tName    [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xb0\n\tSizeofIfData           = 0xa0\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\t_          [2]byte\n\tMtu        uint64\n\tMetric     uint64\n\tLink_state uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\tOqdrops    uint64\n\tLastchange Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks     uint64\n\tMtu       uint64\n\tPksent    uint64\n\tExpire    uint64\n\tSendpipe  uint64\n\tSsthresh  uint64\n\tRtt       uint64\n\tRttvar    uint64\n\tRecvpipe  uint64\n\tHopcount  uint64\n\tMssopt    uint16\n\tPad       uint16\n\t_         [4]byte\n\tMsl       uint64\n\tIwmaxsegs uint64\n\tIwcapsegs uint64\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [4]byte\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = 0xfffafdcd\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tNlink    uint64\n\tMode     uint16\n\t_0       int16\n\tUid      uint32\n\tGid      uint32\n\t_1       int32\n\tRdev     uint64\n\tAtim_ext int32\n\tAtim     Timespec\n\tMtim_ext int32\n\tMtim     Timespec\n\tCtim_ext int32\n\tCtim     Timespec\n\tBtim_ext int32\n\tBirthtim Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  int32\n\tFlags    uint32\n\tGen      uint64\n\tSpare    [10]uint64\n}\n\ntype stat_freebsd11_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint16\n\tNlink    uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  int32\n\tFlags    uint32\n\tGen      uint32\n\tLspare   int32\n\tBirthtim Timespec\n\t_        [8]byte\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]int8\n\tMntfromname [1024]int8\n\tMntonname   [1024]int8\n}\n\ntype statfs_freebsd11_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]int8\n\tMntfromname [88]int8\n\tMntonname   [88]int8\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int32\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x60\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x50\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\tEpoch       int32\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x14\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tNlink    uint64\n\tMode     uint16\n\t_0       int16\n\tUid      uint32\n\tGid      uint32\n\t_1       int32\n\tRdev     uint64\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBirthtim Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  int32\n\tFlags    uint32\n\tGen      uint64\n\tSpare    [10]uint64\n}\n\ntype stat_freebsd11_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint16\n\tNlink    uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  int32\n\tFlags    uint32\n\tGen      uint32\n\tLspare   int32\n\tBirthtim Timespec\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]int8\n\tMntfromname [1024]int8\n\tMntonname   [1024]int8\n}\n\ntype statfs_freebsd11_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]int8\n\tMntfromname [88]int8\n\tMntonname   [88]int8\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [4]byte\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tNlink    uint64\n\tMode     uint16\n\t_0       int16\n\tUid      uint32\n\tGid      uint32\n\t_1       int32\n\tRdev     uint64\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBirthtim Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  int32\n\tFlags    uint32\n\tGen      uint64\n\tSpare    [10]uint64\n}\n\ntype stat_freebsd11_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint16\n\tNlink    uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tSize     int64\n\tBlocks   int64\n\tBlksize  int32\n\tFlags    uint32\n\tGen      uint32\n\tLspare   int32\n\tBirthtim Timespec\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]int8\n\tMntfromname [1024]int8\n\tMntonname   [1024]int8\n}\n\ntype statfs_freebsd11_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]int8\n\tMntfromname [88]int8\n\tMntonname   [88]int8\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int32\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x70\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x60\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\t_           [4]byte\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       [2]byte\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [2]byte\n\tSize    int64\n\tBlksize int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [1]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x1c\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [2]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst RNDGETENTCNT = 0x80045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint32\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x20\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [122]int8\n\t_      uint32\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x18\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n}\n\nconst (\n\tBLKPG                  = 0x1269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [3]int64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x80045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]int8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x1269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       [2]byte\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x1c\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [2]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tUregs [18]uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst RNDGETENTCNT = 0x80045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint32\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x20\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [122]uint8\n\t_      uint32\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x18\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x1269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x80045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]int8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x1269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x1c\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [2]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst RNDGETENTCNT = 0x40045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint32\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x20\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [122]int8\n\t_      uint32\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x18\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x20001269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x40045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]int8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x20001269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64le,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x40045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]int8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x20001269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mipsle,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x1c\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [2]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst RNDGETENTCNT = 0x40045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint32\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x20\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [122]int8\n\t_      uint32\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x18\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x20001269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x40045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]uint8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x20001269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64le,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x40045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]uint8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x20001269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build riscv64,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]uint8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tPc  uint64\n\tRa  uint64\n\tSp  uint64\n\tGp  uint64\n\tTp  uint64\n\tT0  uint64\n\tT1  uint64\n\tT2  uint64\n\tS0  uint64\n\tS1  uint64\n\tA0  uint64\n\tA1  uint64\n\tA2  uint64\n\tA3  uint64\n\tA4  uint64\n\tA5  uint64\n\tA6  uint64\n\tA7  uint64\n\tS2  uint64\n\tS3  uint64\n\tS4  uint64\n\tS5  uint64\n\tS6  uint64\n\tS7  uint64\n\tS8  uint64\n\tS9  uint64\n\tS10 uint64\n\tS11 uint64\n\tT3  uint64\n\tT4  uint64\n\tT5  uint64\n\tT6  uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x80045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]uint8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x1269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build s390x,linux\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\t_         [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\t_         [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\t_         [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask            uint32\n\tBlksize         uint32\n\tAttributes      uint64\n\tNlink           uint32\n\tUid             uint32\n\tGid             uint32\n\tMode            uint16\n\t_               [1]uint16\n\tIno             uint64\n\tSize            uint64\n\tBlocks          uint64\n\tAttributes_mask uint64\n\tAtime           StatxTimestamp\n\tBtime           StatxTimestamp\n\tCtime           StatxTimestamp\n\tMtime           StatxTimestamp\n\tRdev_major      uint32\n\tRdev_minor      uint32\n\tDev_major       uint32\n\tDev_minor       uint32\n\t_               [14]uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x6\n\tFADV_NOREUSE    = 0x7\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\t_       [2]byte\n\tIfindex int32\n\tAddr    [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\t_              [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_INFO_KIND       = 0x1\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x33\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTA_MARK             = 0x10\n\tRTA_MFC_STATS        = 0x11\n\tRTA_VIA              = 0x12\n\tRTA_NEWDST           = 0x13\n\tRTA_PREF             = 0x14\n\tRTA_ENCAP_TYPE       = 0x15\n\tRTA_ENCAP            = 0x16\n\tRTA_EXPIRES          = 0x17\n\tRTA_PAD              = 0x18\n\tRTA_UID              = 0x19\n\tRTA_TTL_PROPAGATE    = 0x1a\n\tRTA_IP_PROTO         = 0x1b\n\tRTA_SPORT            = 0x1c\n\tRTA_DPORT            = 0x1d\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\t_      [6]byte\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tPsw                      PtracePsw\n\tGprs                     [16]uint64\n\tAcrs                     [16]uint32\n\tOrig_gpr2                uint64\n\tFp_regs                  PtraceFpregs\n\tPer_info                 PtracePer\n\tIeee_instruction_pointer uint64\n}\n\ntype PtracePsw struct {\n\tMask uint64\n\tAddr uint64\n}\n\ntype PtraceFpregs struct {\n\tFpc  uint32\n\t_    [4]byte\n\tFprs [16]float64\n}\n\ntype PtracePer struct {\n\t_             [0]uint64\n\t_             [24]byte\n\t_             [8]byte\n\tStarting_addr uint64\n\tEnding_addr   uint64\n\tPerc_atmid    uint16\n\t_             [6]byte\n\tAddress       uint64\n\tAccess_id     uint8\n\t_             [7]byte\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\t_         [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\t_      [4]byte\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x2000\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst RNDGETENTCNT = 0x80045200\n\nconst PERF_IOC_FLAG_GROUP = 0x1\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\t_                         [2]byte\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n)\n\ntype cpuMask uint64\n\nconst (\n\t_CPU_SETSIZE = 0x400\n\t_NCPUBITS    = 0x40\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\t_                  uint32\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              [948]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n)\n\nconst (\n\tPERF_TYPE_HARDWARE   = 0x0\n\tPERF_TYPE_SOFTWARE   = 0x1\n\tPERF_TYPE_TRACEPOINT = 0x2\n\tPERF_TYPE_HW_CACHE   = 0x3\n\tPERF_TYPE_RAW        = 0x4\n\tPERF_TYPE_BREAKPOINT = 0x5\n\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\n\tPERF_COUNT_HW_CACHE_L1D  = 0x0\n\tPERF_COUNT_HW_CACHE_L1I  = 0x1\n\tPERF_COUNT_HW_CACHE_LL   = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB = 0x4\n\tPERF_COUNT_HW_CACHE_BPU  = 0x5\n\tPERF_COUNT_HW_CACHE_NODE = 0x6\n\n\tPERF_COUNT_HW_CACHE_OP_READ     = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE    = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2\n\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\n\tPERF_COUNT_SW_CPU_CLOCK        = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK       = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS      = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS   = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS = 0x8\n\tPERF_COUNT_SW_DUMMY            = 0x9\n\n\tPERF_SAMPLE_IP           = 0x1\n\tPERF_SAMPLE_TID          = 0x2\n\tPERF_SAMPLE_TIME         = 0x4\n\tPERF_SAMPLE_ADDR         = 0x8\n\tPERF_SAMPLE_READ         = 0x10\n\tPERF_SAMPLE_CALLCHAIN    = 0x20\n\tPERF_SAMPLE_ID           = 0x40\n\tPERF_SAMPLE_CPU          = 0x80\n\tPERF_SAMPLE_PERIOD       = 0x100\n\tPERF_SAMPLE_STREAM_ID    = 0x200\n\tPERF_SAMPLE_RAW          = 0x400\n\tPERF_SAMPLE_BRANCH_STACK = 0x800\n\n\tPERF_SAMPLE_BRANCH_USER       = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL     = 0x2\n\tPERF_SAMPLE_BRANCH_HV         = 0x4\n\tPERF_SAMPLE_BRANCH_ANY        = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL   = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL   = 0x40\n\n\tPERF_FORMAT_TOTAL_TIME_ENABLED = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING = 0x2\n\tPERF_FORMAT_ID                 = 0x4\n\tPERF_FORMAT_GROUP              = 0x8\n\n\tPERF_RECORD_MMAP       = 0x1\n\tPERF_RECORD_LOST       = 0x2\n\tPERF_RECORD_COMM       = 0x3\n\tPERF_RECORD_EXIT       = 0x4\n\tPERF_RECORD_THROTTLE   = 0x5\n\tPERF_RECORD_UNTHROTTLE = 0x6\n\tPERF_RECORD_FORK       = 0x7\n\tPERF_RECORD_READ       = 0x8\n\tPERF_RECORD_SAMPLE     = 0x9\n\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\t_      [118]int8\n\t_      uint64\n}\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\t_         [4]byte\n\tStart     uint64\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\ntype Statfs_t struct {\n\tType    uint32\n\tBsize   uint32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen uint32\n\tFrsize  uint32\n\tFlags   uint32\n\tSpare   [4]uint32\n\t_       [4]byte\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacketHdr  = 0x20\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_NUMHOOKS = 0x1\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\t_       [2]byte\n\tTime    RTCTime\n}\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\t_       [4]byte\n\tData    *byte\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG                  = 0x1269\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE = 0x0\n\tNETNSA_NSID = 0x1\n\tNETNSA_PID  = 0x2\n\tNETNSA_FD   = 0x3\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_descs uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go",
    "content": "// +build sparc64,linux\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_linux.go | go run mkpost.go\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timex struct {\n\tModes     uint32\n\tPad_cgo_0 [4]byte\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tPad_cgo_1 [4]byte\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tPad_cgo_2 [4]byte\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\tPad_cgo_3 [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev                uint64\n\tX__pad1            uint16\n\tPad_cgo_0          [6]byte\n\tIno                uint64\n\tMode               uint32\n\tNlink              uint32\n\tUid                uint32\n\tGid                uint32\n\tRdev               uint64\n\tX__pad2            uint16\n\tPad_cgo_1          [6]byte\n\tSize               int64\n\tBlksize            int64\n\tBlocks             int64\n\tAtim               Timespec\n\tMtim               Timespec\n\tCtim               Timespec\n\tX__glibc_reserved4 uint64\n\tX__glibc_reserved5 uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype Dirent struct {\n\tIno       uint64\n\tOff       int64\n\tReclen    uint16\n\tType      uint8\n\tName      [256]int8\n\tPad_cgo_0 [5]byte\n}\n\ntype Fsid struct {\n\tX__val [2]int32\n}\n\ntype Flock_t struct {\n\tType              int16\n\tWhence            int16\n\tPad_cgo_0         [4]byte\n\tStart             int64\n\tLen               int64\n\tPid               int32\n\tX__glibc_reserved int16\n\tPad_cgo_1         [2]byte\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrCAN struct {\n\tFamily    uint16\n\tPad_cgo_0 [2]byte\n\tIfindex   int32\n\tAddr      [8]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tZero      [4]uint8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\tPad_cgo_1  [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\tPad_cgo_0      [2]byte\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrCAN       = 0x10\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofLinger            = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x38\n\tSizeofCmsghdr           = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0x68\n)\n\nconst (\n\tIFA_UNSPEC           = 0x0\n\tIFA_ADDRESS          = 0x1\n\tIFA_LOCAL            = 0x2\n\tIFA_LABEL            = 0x3\n\tIFA_BROADCAST        = 0x4\n\tIFA_ANYCAST          = 0x5\n\tIFA_CACHEINFO        = 0x6\n\tIFA_MULTICAST        = 0x7\n\tIFLA_UNSPEC          = 0x0\n\tIFLA_ADDRESS         = 0x1\n\tIFLA_BROADCAST       = 0x2\n\tIFLA_IFNAME          = 0x3\n\tIFLA_MTU             = 0x4\n\tIFLA_LINK            = 0x5\n\tIFLA_QDISC           = 0x6\n\tIFLA_STATS           = 0x7\n\tIFLA_COST            = 0x8\n\tIFLA_PRIORITY        = 0x9\n\tIFLA_MASTER          = 0xa\n\tIFLA_WIRELESS        = 0xb\n\tIFLA_PROTINFO        = 0xc\n\tIFLA_TXQLEN          = 0xd\n\tIFLA_MAP             = 0xe\n\tIFLA_WEIGHT          = 0xf\n\tIFLA_OPERSTATE       = 0x10\n\tIFLA_LINKMODE        = 0x11\n\tIFLA_LINKINFO        = 0x12\n\tIFLA_NET_NS_PID      = 0x13\n\tIFLA_IFALIAS         = 0x14\n\tIFLA_NUM_VF          = 0x15\n\tIFLA_VFINFO_LIST     = 0x16\n\tIFLA_STATS64         = 0x17\n\tIFLA_VF_PORTS        = 0x18\n\tIFLA_PORT_SELF       = 0x19\n\tIFLA_AF_SPEC         = 0x1a\n\tIFLA_GROUP           = 0x1b\n\tIFLA_NET_NS_FD       = 0x1c\n\tIFLA_EXT_MASK        = 0x1d\n\tIFLA_PROMISCUITY     = 0x1e\n\tIFLA_NUM_TX_QUEUES   = 0x1f\n\tIFLA_NUM_RX_QUEUES   = 0x20\n\tIFLA_CARRIER         = 0x21\n\tIFLA_PHYS_PORT_ID    = 0x22\n\tIFLA_CARRIER_CHANGES = 0x23\n\tIFLA_PHYS_SWITCH_ID  = 0x24\n\tIFLA_LINK_NETNSID    = 0x25\n\tIFLA_PHYS_PORT_NAME  = 0x26\n\tIFLA_PROTO_DOWN      = 0x27\n\tIFLA_GSO_MAX_SEGS    = 0x28\n\tIFLA_GSO_MAX_SIZE    = 0x29\n\tIFLA_PAD             = 0x2a\n\tIFLA_XDP             = 0x2b\n\tIFLA_EVENT           = 0x2c\n\tIFLA_NEW_NETNSID     = 0x2d\n\tIFLA_IF_NETNSID      = 0x2e\n\tIFLA_MAX             = 0x2e\n\tRT_SCOPE_UNIVERSE    = 0x0\n\tRT_SCOPE_SITE        = 0xc8\n\tRT_SCOPE_LINK        = 0xfd\n\tRT_SCOPE_HOST        = 0xfe\n\tRT_SCOPE_NOWHERE     = 0xff\n\tRT_TABLE_UNSPEC      = 0x0\n\tRT_TABLE_COMPAT      = 0xfc\n\tRT_TABLE_DEFAULT     = 0xfd\n\tRT_TABLE_MAIN        = 0xfe\n\tRT_TABLE_LOCAL       = 0xff\n\tRT_TABLE_MAX         = 0xffffffff\n\tRTA_UNSPEC           = 0x0\n\tRTA_DST              = 0x1\n\tRTA_SRC              = 0x2\n\tRTA_IIF              = 0x3\n\tRTA_OIF              = 0x4\n\tRTA_GATEWAY          = 0x5\n\tRTA_PRIORITY         = 0x6\n\tRTA_PREFSRC          = 0x7\n\tRTA_METRICS          = 0x8\n\tRTA_MULTIPATH        = 0x9\n\tRTA_FLOW             = 0xb\n\tRTA_CACHEINFO        = 0xc\n\tRTA_TABLE            = 0xf\n\tRTN_UNSPEC           = 0x0\n\tRTN_UNICAST          = 0x1\n\tRTN_LOCAL            = 0x2\n\tRTN_BROADCAST        = 0x3\n\tRTN_ANYCAST          = 0x4\n\tRTN_MULTICAST        = 0x5\n\tRTN_BLACKHOLE        = 0x6\n\tRTN_UNREACHABLE      = 0x7\n\tRTN_PROHIBIT         = 0x8\n\tRTN_THROW            = 0x9\n\tRTN_NAT              = 0xa\n\tRTN_XRESOLVE         = 0xb\n\tRTNLGRP_NONE         = 0x0\n\tRTNLGRP_LINK         = 0x1\n\tRTNLGRP_NOTIFY       = 0x2\n\tRTNLGRP_NEIGH        = 0x3\n\tRTNLGRP_TC           = 0x4\n\tRTNLGRP_IPV4_IFADDR  = 0x5\n\tRTNLGRP_IPV4_MROUTE  = 0x6\n\tRTNLGRP_IPV4_ROUTE   = 0x7\n\tRTNLGRP_IPV4_RULE    = 0x8\n\tRTNLGRP_IPV6_IFADDR  = 0x9\n\tRTNLGRP_IPV6_MROUTE  = 0xa\n\tRTNLGRP_IPV6_ROUTE   = 0xb\n\tRTNLGRP_IPV6_IFINFO  = 0xc\n\tRTNLGRP_IPV6_PREFIX  = 0x12\n\tRTNLGRP_IPV6_RULE    = 0x13\n\tRTNLGRP_ND_USEROPT   = 0x14\n\tSizeofNlMsghdr       = 0x10\n\tSizeofNlMsgerr       = 0x14\n\tSizeofRtGenmsg       = 0x1\n\tSizeofNlAttr         = 0x4\n\tSizeofRtAttr         = 0x4\n\tSizeofIfInfomsg      = 0x10\n\tSizeofIfAddrmsg      = 0x8\n\tSizeofRtMsg          = 0xc\n\tSizeofRtNexthop      = 0x8\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily     uint8\n\tX__ifi_pad uint8\n\tType       uint16\n\tIndex      int32\n\tFlags      uint32\n\tChange     uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\nconst (\n\tSizeofSockFilter = 0x8\n\tSizeofSockFprog  = 0x10\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen       uint16\n\tPad_cgo_0 [6]byte\n\tFilter    *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\ntype PtraceRegs struct {\n\tRegs   [16]uint64\n\tTstate uint64\n\tTpc    uint64\n\tTnpc   uint64\n\tY      uint32\n\tMagic  uint32\n}\n\ntype ptracePsw struct {\n}\n\ntype ptraceFpregs struct {\n}\n\ntype ptracePer struct {\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tPad_cgo_0 [4]byte\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\tX_f       [0]int8\n\tPad_cgo_1 [4]byte\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\ntype Ustat_t struct {\n\tTfree     int32\n\tPad_cgo_0 [4]byte\n\tTinode    uint64\n\tFname     [6]int8\n\tFpack     [6]int8\n\tPad_cgo_1 [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents  uint32\n\tX_padFd int32\n\tFd      int32\n\tPad     int32\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_REMOVEDIR        = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN    = 0x1\n\tPOLLPRI   = 0x2\n\tPOLLOUT   = 0x4\n\tPOLLRDHUP = 0x800\n\tPOLLERR   = 0x8\n\tPOLLHUP   = 0x10\n\tPOLLNVAL  = 0x20\n)\n\ntype Sigset_t struct {\n\tX__val [16]uint64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           uint64\n\tMode          uint32\n\tIno           uint64\n\tNlink         uint32\n\tUid           uint32\n\tGid           uint32\n\tRdev          uint64\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       uint32\n\tFlags         uint32\n\tGen           uint32\n\tSpare         [2]uint32\n}\n\ntype Statfs_t [0]byte\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter uint32\n\tFlags  uint32\n\tFflags uint32\n\tData   int64\n\tUdata  int32\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x84\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n\tPad_cgo_1 [4]byte\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_SYMLINK_NOFOLLOW = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           uint64\n\tMode          uint32\n\tPad_cgo_0     [4]byte\n\tIno           uint64\n\tNlink         uint32\n\tUid           uint32\n\tGid           uint32\n\tPad_cgo_1     [4]byte\n\tRdev          uint64\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       uint32\n\tFlags         uint32\n\tGen           uint32\n\tSpare         [2]uint32\n\tPad_cgo_2     [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_SYMLINK_NOFOLLOW = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec       int64\n\tNsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev           uint64\n\tMode          uint32\n\tPad_cgo_0     [4]byte\n\tIno           uint64\n\tNlink         uint32\n\tUid           uint32\n\tGid           uint32\n\tPad_cgo_1     [4]byte\n\tRdev          uint64\n\tAtimespec     Timespec\n\tMtimespec     Timespec\n\tCtimespec     Timespec\n\tBirthtimespec Timespec\n\tSize          int64\n\tBlocks        int64\n\tBlksize       uint32\n\tFlags         uint32\n\tGen           uint32\n\tSpare         [2]uint32\n\tPad_cgo_2     [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint32\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tData      int64\n\tUdata     int32\n\tPad_cgo_0 [4]byte\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_SYMLINK_NOFOLLOW = 0x200\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode           uint32\n\tDev            int32\n\tIno            uint64\n\tNlink          uint32\n\tUid            uint32\n\tGid            uint32\n\tRdev           int32\n\tAtim           Timespec\n\tMtim           Timespec\n\tCtim           Timespec\n\tSize           int64\n\tBlocks         int64\n\tBlksize        uint32\n\tFlags          uint32\n\tGen            uint32\n\tX__st_birthtim Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]int8\n\tF_mntonname   [90]int8\n\tF_mntfromname [90]int8\n\tF_mntfromspec [90]int8\n\tPad_cgo_0     [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno       uint64\n\tOff          int64\n\tReclen       uint16\n\tType         uint8\n\tNamlen       uint8\n\tX__d_padding [4]uint8\n\tName         [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xec\n\tSizeofIfData           = 0xd4\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tPad          uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n\tMclpool      [7]Mclpool\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct {\n\tGrown int32\n\tAlive uint16\n\tHwm   uint16\n\tCwm   uint16\n\tLwm   uint16\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_SYMLINK_NOFOLLOW = 0x2\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tAnonpages          int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tNanonneeded        int32\n\tNfreeanon          int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tObsolete_swapins   int32\n\tObsolete_swapouts  int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tZeroaborts         int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tPdreanon           int32\n\tPdrevnode          int32\n\tPdrevtext          int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       [4]byte\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\t_             [4]byte\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]int8\n\tF_mntonname   [90]int8\n\tF_mntfromname [90]int8\n\tF_mntfromspec [90]int8\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint32\n\t_          [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\t_            [4]byte\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [4]byte\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_SYMLINK_NOFOLLOW = 0x2\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tAnonpages          int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tNanonneeded        int32\n\tNfreeanon          int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tObsolete_swapins   int32\n\tObsolete_swapouts  int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tZeroaborts         int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tPdreanon           int32\n\tPdrevnode          int32\n\tPdrevtext          int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode           uint32\n\tDev            int32\n\tIno            uint64\n\tNlink          uint32\n\tUid            uint32\n\tGid            uint32\n\tRdev           int32\n\tAtim           Timespec\n\tMtim           Timespec\n\tCtim           Timespec\n\tSize           int64\n\tBlocks         int64\n\tBlksize        int32\n\tFlags          uint32\n\tGen            uint32\n\tX__st_birthtim Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]uint8\n\tF_mntonname   [90]uint8\n\tF_mntfromname [90]uint8\n\tF_mntfromspec [90]uint8\n\tPad_cgo_0     [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno       uint64\n\tOff          int64\n\tReclen       uint16\n\tType         uint8\n\tNamlen       uint8\n\tX__d_padding [4]uint8\n\tName         [256]uint8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x80\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tPad          uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]uint8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_SYMLINK_NOFOLLOW = 0x2\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tAnonpages          int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tNanonneeded        int32\n\tNfreeanon          int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tObsolete_swapins   int32\n\tObsolete_swapouts  int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tZeroaborts         int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tPdreanon           int32\n\tPdrevnode          int32\n\tPdrevtext          int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go",
    "content": "// cgo -godefs types_solaris.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,solaris\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x400\n\tMaxHostNameLen = 0x100\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tSysid  int32\n\tPid    int32\n\tPad    [4]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tName   [1]int8\n\t_      [5]byte\n}\n\ntype _Fsblkcnt_t uint64\n\ntype Statvfs_t struct {\n\tBsize    uint64\n\tFrsize   uint64\n\tBlocks   uint64\n\tBfree    uint64\n\tBavail   uint64\n\tFiles    uint64\n\tFfree    uint64\n\tFavail   uint64\n\tFsid     uint64\n\tBasetype [16]int8\n\tFlag     uint64\n\tNamemax  uint64\n\tFstr     [32]int8\n}\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily         uint16\n\tPort           uint16\n\tFlowinfo       uint32\n\tAddr           [16]byte /* in6_addr */\n\tScope_id       uint32\n\tX__sin6_src_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [236]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *int8\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName         *byte\n\tNamelen      uint32\n\t_            [4]byte\n\tIov          *Iovec\n\tIovlen       int32\n\t_            [4]byte\n\tAccrights    *int8\n\tAccrightslen int32\n\t_            [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tX__icmp6_filt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x24\n\tSizeofICMPv6Filter     = 0x20\n)\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [257]byte\n\tNodename [257]byte\n\tRelease  [257]byte\n\tVersion  [257]byte\n\tMachine  [257]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int64\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\nconst (\n\tAT_FDCWD            = 0xffd19553\n\tAT_SYMLINK_NOFOLLOW = 0x1000\n\tAT_SYMLINK_FOLLOW   = 0x2000\n\tAT_REMOVEDIR        = 0x1\n\tAT_EACCESS          = 0x4\n)\n\nconst (\n\tSizeofIfMsghdr  = 0x54\n\tSizeofIfData    = 0x44\n\tSizeofIfaMsghdr = 0x14\n\tSizeofRtMsghdr  = 0x4c\n\tSizeofRtMetrics = 0x28\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\t_          [1]byte\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [4]byte\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [19]uint8\n\t_     [1]byte\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  int8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/build/builder.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage build // import \"golang.org/x/text/collate/build\"\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"sort\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/internal/colltab\"\n\t\"golang.org/x/text/language\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// TODO: optimizations:\n// - expandElem is currently 20K. By putting unique colElems in a separate\n//   table and having a byte array of indexes into this table, we can reduce\n//   the total size to about 7K. By also factoring out the length bytes, we\n//   can reduce this to about 6K.\n// - trie valueBlocks are currently 100K. There are a lot of sparse blocks\n//   and many consecutive values with the same stride. This can be further\n//   compacted.\n// - Compress secondary weights into 8 bits.\n// - Some LDML specs specify a context element. Currently we simply concatenate\n//   those.  Context can be implemented using the contraction trie. If Builder\n//   could analyze and detect when using a context makes sense, there is no\n//   need to expose this construct in the API.\n\n// A Builder builds a root collation table.  The user must specify the\n// collation elements for each entry.  A common use will be to base the weights\n// on those specified in the allkeys* file as provided by the UCA or CLDR.\ntype Builder struct {\n\tindex  *trieBuilder\n\troot   ordering\n\tlocale []*Tailoring\n\tt      *table\n\terr    error\n\tbuilt  bool\n\n\tminNonVar int // lowest primary recorded for a variable\n\tvarTop    int // highest primary recorded for a non-variable\n\n\t// indexes used for reusing expansions and contractions\n\texpIndex map[string]int      // positions of expansions keyed by their string representation\n\tctHandle map[string]ctHandle // contraction handles keyed by a concatenation of the suffixes\n\tctElem   map[string]int      // contraction elements keyed by their string representation\n}\n\n// A Tailoring builds a collation table based on another collation table.\n// The table is defined by specifying tailorings to the underlying table.\n// See http://unicode.org/reports/tr35/ for an overview of tailoring\n// collation tables.  The CLDR contains pre-defined tailorings for a variety\n// of languages (See http://www.unicode.org/Public/cldr/<version>/core.zip.)\ntype Tailoring struct {\n\tid      string\n\tbuilder *Builder\n\tindex   *ordering\n\n\tanchor *entry\n\tbefore bool\n}\n\n// NewBuilder returns a new Builder.\nfunc NewBuilder() *Builder {\n\treturn &Builder{\n\t\tindex:    newTrieBuilder(),\n\t\troot:     makeRootOrdering(),\n\t\texpIndex: make(map[string]int),\n\t\tctHandle: make(map[string]ctHandle),\n\t\tctElem:   make(map[string]int),\n\t}\n}\n\n// Tailoring returns a Tailoring for the given locale.  One should\n// have completed all calls to Add before calling Tailoring.\nfunc (b *Builder) Tailoring(loc language.Tag) *Tailoring {\n\tt := &Tailoring{\n\t\tid:      loc.String(),\n\t\tbuilder: b,\n\t\tindex:   b.root.clone(),\n\t}\n\tt.index.id = t.id\n\tb.locale = append(b.locale, t)\n\treturn t\n}\n\n// Add adds an entry to the collation element table, mapping\n// a slice of runes to a sequence of collation elements.\n// A collation element is specified as list of weights: []int{primary, secondary, ...}.\n// The entries are typically obtained from a collation element table\n// as defined in http://www.unicode.org/reports/tr10/#Data_Table_Format.\n// Note that the collation elements specified by colelems are only used\n// as a guide.  The actual weights generated by Builder may differ.\n// The argument variables is a list of indices into colelems that should contain\n// a value for each colelem that is a variable. (See the reference above.)\nfunc (b *Builder) Add(runes []rune, colelems [][]int, variables []int) error {\n\tstr := string(runes)\n\telems := make([]rawCE, len(colelems))\n\tfor i, ce := range colelems {\n\t\tif len(ce) == 0 {\n\t\t\tbreak\n\t\t}\n\t\telems[i] = makeRawCE(ce, 0)\n\t\tif len(ce) == 1 {\n\t\t\telems[i].w[1] = defaultSecondary\n\t\t}\n\t\tif len(ce) <= 2 {\n\t\t\telems[i].w[2] = defaultTertiary\n\t\t}\n\t\tif len(ce) <= 3 {\n\t\t\telems[i].w[3] = ce[0]\n\t\t}\n\t}\n\tfor i, ce := range elems {\n\t\tp := ce.w[0]\n\t\tisvar := false\n\t\tfor _, j := range variables {\n\t\t\tif i == j {\n\t\t\t\tisvar = true\n\t\t\t}\n\t\t}\n\t\tif isvar {\n\t\t\tif p >= b.minNonVar && b.minNonVar > 0 {\n\t\t\t\treturn fmt.Errorf(\"primary value %X of variable is larger than the smallest non-variable %X\", p, b.minNonVar)\n\t\t\t}\n\t\t\tif p > b.varTop {\n\t\t\t\tb.varTop = p\n\t\t\t}\n\t\t} else if p > 1 { // 1 is a special primary value reserved for FFFE\n\t\t\tif p <= b.varTop {\n\t\t\t\treturn fmt.Errorf(\"primary value %X of non-variable is smaller than the highest variable %X\", p, b.varTop)\n\t\t\t}\n\t\t\tif b.minNonVar == 0 || p < b.minNonVar {\n\t\t\t\tb.minNonVar = p\n\t\t\t}\n\t\t}\n\t}\n\telems, err := convertLargeWeights(elems)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcccs := []uint8{}\n\tnfd := norm.NFD.String(str)\n\tfor i := range nfd {\n\t\tcccs = append(cccs, norm.NFD.PropertiesString(nfd[i:]).CCC())\n\t}\n\tif len(cccs) < len(elems) {\n\t\tif len(cccs) > 2 {\n\t\t\treturn fmt.Errorf(\"number of decomposed characters should be greater or equal to the number of collation elements for len(colelems) > 3 (%d < %d)\", len(cccs), len(elems))\n\t\t}\n\t\tp := len(elems) - 1\n\t\tfor ; p > 0 && elems[p].w[0] == 0; p-- {\n\t\t\telems[p].ccc = cccs[len(cccs)-1]\n\t\t}\n\t\tfor ; p >= 0; p-- {\n\t\t\telems[p].ccc = cccs[0]\n\t\t}\n\t} else {\n\t\tfor i := range elems {\n\t\t\telems[i].ccc = cccs[i]\n\t\t}\n\t}\n\t// doNorm in collate.go assumes that the following conditions hold.\n\tif len(elems) > 1 && len(cccs) > 1 && cccs[0] != 0 && cccs[0] != cccs[len(cccs)-1] {\n\t\treturn fmt.Errorf(\"incompatible CCC values for expansion %X (%d)\", runes, cccs)\n\t}\n\tb.root.newEntry(str, elems)\n\treturn nil\n}\n\nfunc (t *Tailoring) setAnchor(anchor string) error {\n\tanchor = norm.NFC.String(anchor)\n\ta := t.index.find(anchor)\n\tif a == nil {\n\t\ta = t.index.newEntry(anchor, nil)\n\t\ta.implicit = true\n\t\ta.modified = true\n\t\tfor _, r := range []rune(anchor) {\n\t\t\te := t.index.find(string(r))\n\t\t\te.lock = true\n\t\t}\n\t}\n\tt.anchor = a\n\treturn nil\n}\n\n// SetAnchor sets the point after which elements passed in subsequent calls to\n// Insert will be inserted.  It is equivalent to the reset directive in an LDML\n// specification.  See Insert for an example.\n// SetAnchor supports the following logical reset positions:\n// <first_tertiary_ignorable/>, <last_teriary_ignorable/>, <first_primary_ignorable/>,\n// and <last_non_ignorable/>.\nfunc (t *Tailoring) SetAnchor(anchor string) error {\n\tif err := t.setAnchor(anchor); err != nil {\n\t\treturn err\n\t}\n\tt.before = false\n\treturn nil\n}\n\n// SetAnchorBefore is similar to SetAnchor, except that subsequent calls to\n// Insert will insert entries before the anchor.\nfunc (t *Tailoring) SetAnchorBefore(anchor string) error {\n\tif err := t.setAnchor(anchor); err != nil {\n\t\treturn err\n\t}\n\tt.before = true\n\treturn nil\n}\n\n// Insert sets the ordering of str relative to the entry set by the previous\n// call to SetAnchor or Insert.  The argument extend corresponds\n// to the extend elements as defined in LDML.  A non-empty value for extend\n// will cause the collation elements corresponding to extend to be appended\n// to the collation elements generated for the entry added by Insert.\n// This has the same net effect as sorting str after the string anchor+extend.\n// See http://www.unicode.org/reports/tr10/#Tailoring_Example for details\n// on parametric tailoring and http://unicode.org/reports/tr35/#Collation_Elements\n// for full details on LDML.\n//\n// Examples: create a tailoring for Swedish, where \"ä\" is ordered after \"z\"\n// at the primary sorting level:\n//      t := b.Tailoring(\"se\")\n// \t\tt.SetAnchor(\"z\")\n// \t\tt.Insert(colltab.Primary, \"ä\", \"\")\n// Order \"ü\" after \"ue\" at the secondary sorting level:\n//\t\tt.SetAnchor(\"ue\")\n//\t\tt.Insert(colltab.Secondary, \"ü\",\"\")\n// or\n//\t\tt.SetAnchor(\"u\")\n//\t\tt.Insert(colltab.Secondary, \"ü\", \"e\")\n// Order \"q\" afer \"ab\" at the secondary level and \"Q\" after \"q\"\n// at the tertiary level:\n// \t\tt.SetAnchor(\"ab\")\n// \t\tt.Insert(colltab.Secondary, \"q\", \"\")\n// \t\tt.Insert(colltab.Tertiary, \"Q\", \"\")\n// Order \"b\" before \"a\":\n//      t.SetAnchorBefore(\"a\")\n//      t.Insert(colltab.Primary, \"b\", \"\")\n// Order \"0\" after the last primary ignorable:\n//      t.SetAnchor(\"<last_primary_ignorable/>\")\n//      t.Insert(colltab.Primary, \"0\", \"\")\nfunc (t *Tailoring) Insert(level colltab.Level, str, extend string) error {\n\tif t.anchor == nil {\n\t\treturn fmt.Errorf(\"%s:Insert: no anchor point set for tailoring of %s\", t.id, str)\n\t}\n\tstr = norm.NFC.String(str)\n\te := t.index.find(str)\n\tif e == nil {\n\t\te = t.index.newEntry(str, nil)\n\t} else if e.logical != noAnchor {\n\t\treturn fmt.Errorf(\"%s:Insert: cannot reinsert logical reset position %q\", t.id, e.str)\n\t}\n\tif e.lock {\n\t\treturn fmt.Errorf(\"%s:Insert: cannot reinsert element %q\", t.id, e.str)\n\t}\n\ta := t.anchor\n\t// Find the first element after the anchor which differs at a level smaller or\n\t// equal to the given level.  Then insert at this position.\n\t// See http://unicode.org/reports/tr35/#Collation_Elements, Section 5.14.5 for details.\n\te.before = t.before\n\tif t.before {\n\t\tt.before = false\n\t\tif a.prev == nil {\n\t\t\ta.insertBefore(e)\n\t\t} else {\n\t\t\tfor a = a.prev; a.level > level; a = a.prev {\n\t\t\t}\n\t\t\ta.insertAfter(e)\n\t\t}\n\t\te.level = level\n\t} else {\n\t\tfor ; a.level > level; a = a.next {\n\t\t}\n\t\te.level = a.level\n\t\tif a != e {\n\t\t\ta.insertAfter(e)\n\t\t\ta.level = level\n\t\t} else {\n\t\t\t// We don't set a to prev itself. This has the effect of the entry\n\t\t\t// getting new collation elements that are an increment of itself.\n\t\t\t// This is intentional.\n\t\t\ta.prev.level = level\n\t\t}\n\t}\n\te.extend = norm.NFD.String(extend)\n\te.exclude = false\n\te.modified = true\n\te.elems = nil\n\tt.anchor = e\n\treturn nil\n}\n\nfunc (o *ordering) getWeight(e *entry) []rawCE {\n\tif len(e.elems) == 0 && e.logical == noAnchor {\n\t\tif e.implicit {\n\t\t\tfor _, r := range e.runes {\n\t\t\t\te.elems = append(e.elems, o.getWeight(o.find(string(r)))...)\n\t\t\t}\n\t\t} else if e.before {\n\t\t\tcount := [colltab.Identity + 1]int{}\n\t\t\ta := e\n\t\t\tfor ; a.elems == nil && !a.implicit; a = a.next {\n\t\t\t\tcount[a.level]++\n\t\t\t}\n\t\t\te.elems = []rawCE{makeRawCE(a.elems[0].w, a.elems[0].ccc)}\n\t\t\tfor i := colltab.Primary; i < colltab.Quaternary; i++ {\n\t\t\t\tif count[i] != 0 {\n\t\t\t\t\te.elems[0].w[i] -= count[i]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif e.prev != nil {\n\t\t\t\to.verifyWeights(e.prev, e, e.prev.level)\n\t\t\t}\n\t\t} else {\n\t\t\tprev := e.prev\n\t\t\te.elems = nextWeight(prev.level, o.getWeight(prev))\n\t\t\to.verifyWeights(e, e.next, e.level)\n\t\t}\n\t}\n\treturn e.elems\n}\n\nfunc (o *ordering) addExtension(e *entry) {\n\tif ex := o.find(e.extend); ex != nil {\n\t\te.elems = append(e.elems, ex.elems...)\n\t} else {\n\t\tfor _, r := range []rune(e.extend) {\n\t\t\te.elems = append(e.elems, o.find(string(r)).elems...)\n\t\t}\n\t}\n\te.extend = \"\"\n}\n\nfunc (o *ordering) verifyWeights(a, b *entry, level colltab.Level) error {\n\tif level == colltab.Identity || b == nil || b.elems == nil || a.elems == nil {\n\t\treturn nil\n\t}\n\tfor i := colltab.Primary; i < level; i++ {\n\t\tif a.elems[0].w[i] < b.elems[0].w[i] {\n\t\t\treturn nil\n\t\t}\n\t}\n\tif a.elems[0].w[level] >= b.elems[0].w[level] {\n\t\terr := fmt.Errorf(\"%s:overflow: collation elements of %q (%X) overflows those of %q (%X) at level %d (%X >= %X)\", o.id, a.str, a.runes, b.str, b.runes, level, a.elems, b.elems)\n\t\tlog.Println(err)\n\t\t// TODO: return the error instead, or better, fix the conflicting entry by making room.\n\t}\n\treturn nil\n}\n\nfunc (b *Builder) error(e error) {\n\tif e != nil {\n\t\tb.err = e\n\t}\n}\n\nfunc (b *Builder) errorID(locale string, e error) {\n\tif e != nil {\n\t\tb.err = fmt.Errorf(\"%s:%v\", locale, e)\n\t}\n}\n\n// patchNorm ensures that NFC and NFD counterparts are consistent.\nfunc (o *ordering) patchNorm() {\n\t// Insert the NFD counterparts, if necessary.\n\tfor _, e := range o.ordered {\n\t\tnfd := norm.NFD.String(e.str)\n\t\tif nfd != e.str {\n\t\t\tif e0 := o.find(nfd); e0 != nil && !e0.modified {\n\t\t\t\te0.elems = e.elems\n\t\t\t} else if e.modified && !equalCEArrays(o.genColElems(nfd), e.elems) {\n\t\t\t\te := o.newEntry(nfd, e.elems)\n\t\t\t\te.modified = true\n\t\t\t}\n\t\t}\n\t}\n\t// Update unchanged composed forms if one of their parts changed.\n\tfor _, e := range o.ordered {\n\t\tnfd := norm.NFD.String(e.str)\n\t\tif e.modified || nfd == e.str {\n\t\t\tcontinue\n\t\t}\n\t\tif e0 := o.find(nfd); e0 != nil {\n\t\t\te.elems = e0.elems\n\t\t} else {\n\t\t\te.elems = o.genColElems(nfd)\n\t\t\tif norm.NFD.LastBoundary([]byte(nfd)) == 0 {\n\t\t\t\tr := []rune(nfd)\n\t\t\t\thead := string(r[0])\n\t\t\t\ttail := \"\"\n\t\t\t\tfor i := 1; i < len(r); i++ {\n\t\t\t\t\ts := norm.NFC.String(head + string(r[i]))\n\t\t\t\t\tif e0 := o.find(s); e0 != nil && e0.modified {\n\t\t\t\t\t\thead = s\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttail += string(r[i])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\te.elems = append(o.genColElems(head), o.genColElems(tail)...)\n\t\t\t}\n\t\t}\n\t}\n\t// Exclude entries for which the individual runes generate the same collation elements.\n\tfor _, e := range o.ordered {\n\t\tif len(e.runes) > 1 && equalCEArrays(o.genColElems(e.str), e.elems) {\n\t\t\te.exclude = true\n\t\t}\n\t}\n}\n\nfunc (b *Builder) buildOrdering(o *ordering) {\n\tfor _, e := range o.ordered {\n\t\to.getWeight(e)\n\t}\n\tfor _, e := range o.ordered {\n\t\to.addExtension(e)\n\t}\n\to.patchNorm()\n\to.sort()\n\tsimplify(o)\n\tb.processExpansions(o)   // requires simplify\n\tb.processContractions(o) // requires simplify\n\n\tt := newNode()\n\tfor e := o.front(); e != nil; e, _ = e.nextIndexed() {\n\t\tif !e.skip() {\n\t\t\tce, err := e.encode()\n\t\t\tb.errorID(o.id, err)\n\t\t\tt.insert(e.runes[0], ce)\n\t\t}\n\t}\n\to.handle = b.index.addTrie(t)\n}\n\nfunc (b *Builder) build() (*table, error) {\n\tif b.built {\n\t\treturn b.t, b.err\n\t}\n\tb.built = true\n\tb.t = &table{\n\t\tTable: colltab.Table{\n\t\t\tMaxContractLen: utf8.UTFMax,\n\t\t\tVariableTop:    uint32(b.varTop),\n\t\t},\n\t}\n\n\tb.buildOrdering(&b.root)\n\tb.t.root = b.root.handle\n\tfor _, t := range b.locale {\n\t\tb.buildOrdering(t.index)\n\t\tif b.err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\ti, err := b.index.generate()\n\tb.t.trie = *i\n\tb.t.Index = colltab.Trie{\n\t\tIndex:   i.index,\n\t\tValues:  i.values,\n\t\tIndex0:  i.index[blockSize*b.t.root.lookupStart:],\n\t\tValues0: i.values[blockSize*b.t.root.valueStart:],\n\t}\n\tb.error(err)\n\treturn b.t, b.err\n}\n\n// Build builds the root Collator.\nfunc (b *Builder) Build() (colltab.Weighter, error) {\n\ttable, err := b.build()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn table, nil\n}\n\n// Build builds a Collator for Tailoring t.\nfunc (t *Tailoring) Build() (colltab.Weighter, error) {\n\t// TODO: implement.\n\treturn nil, nil\n}\n\n// Print prints the tables for b and all its Tailorings as a Go file\n// that can be included in the Collate package.\nfunc (b *Builder) Print(w io.Writer) (n int, err error) {\n\tp := func(nn int, e error) {\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t}\n\tt, err := b.build()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tp(fmt.Fprintf(w, `var availableLocales = \"und`))\n\tfor _, loc := range b.locale {\n\t\tif loc.id != \"und\" {\n\t\t\tp(fmt.Fprintf(w, \",%s\", loc.id))\n\t\t}\n\t}\n\tp(fmt.Fprint(w, \"\\\"\\n\\n\"))\n\tp(fmt.Fprintf(w, \"const varTop = 0x%x\\n\\n\", b.varTop))\n\tp(fmt.Fprintln(w, \"var locales = [...]tableIndex{\"))\n\tfor _, loc := range b.locale {\n\t\tif loc.id == \"und\" {\n\t\t\tp(t.fprintIndex(w, loc.index.handle, loc.id))\n\t\t}\n\t}\n\tfor _, loc := range b.locale {\n\t\tif loc.id != \"und\" {\n\t\t\tp(t.fprintIndex(w, loc.index.handle, loc.id))\n\t\t}\n\t}\n\tp(fmt.Fprint(w, \"}\\n\\n\"))\n\tn, _, err = t.fprint(w, \"main\")\n\treturn\n}\n\n// reproducibleFromNFKD checks whether the given expansion could be generated\n// from an NFKD expansion.\nfunc reproducibleFromNFKD(e *entry, exp, nfkd []rawCE) bool {\n\t// Length must be equal.\n\tif len(exp) != len(nfkd) {\n\t\treturn false\n\t}\n\tfor i, ce := range exp {\n\t\t// Primary and secondary values should be equal.\n\t\tif ce.w[0] != nfkd[i].w[0] || ce.w[1] != nfkd[i].w[1] {\n\t\t\treturn false\n\t\t}\n\t\t// Tertiary values should be equal to maxTertiary for third element onwards.\n\t\t// TODO: there seem to be a lot of cases in CLDR (e.g. ㏭ in zh.xml) that can\n\t\t// simply be dropped.  Try this out by dropping the following code.\n\t\tif i >= 2 && ce.w[2] != maxTertiary {\n\t\t\treturn false\n\t\t}\n\t\tif _, err := makeCE(ce); err != nil {\n\t\t\t// Simply return false. The error will be caught elsewhere.\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc simplify(o *ordering) {\n\t// Runes that are a starter of a contraction should not be removed.\n\t// (To date, there is only Kannada character 0CCA.)\n\tkeep := make(map[rune]bool)\n\tfor e := o.front(); e != nil; e, _ = e.nextIndexed() {\n\t\tif len(e.runes) > 1 {\n\t\t\tkeep[e.runes[0]] = true\n\t\t}\n\t}\n\t// Tag entries for which the runes NFKD decompose to identical values.\n\tfor e := o.front(); e != nil; e, _ = e.nextIndexed() {\n\t\ts := e.str\n\t\tnfkd := norm.NFKD.String(s)\n\t\tnfd := norm.NFD.String(s)\n\t\tif e.decompose || len(e.runes) > 1 || len(e.elems) == 1 || keep[e.runes[0]] || nfkd == nfd {\n\t\t\tcontinue\n\t\t}\n\t\tif reproducibleFromNFKD(e, e.elems, o.genColElems(nfkd)) {\n\t\t\te.decompose = true\n\t\t}\n\t}\n}\n\n// appendExpansion converts the given collation sequence to\n// collation elements and adds them to the expansion table.\n// It returns an index to the expansion table.\nfunc (b *Builder) appendExpansion(e *entry) int {\n\tt := b.t\n\ti := len(t.ExpandElem)\n\tce := uint32(len(e.elems))\n\tt.ExpandElem = append(t.ExpandElem, ce)\n\tfor _, w := range e.elems {\n\t\tce, err := makeCE(w)\n\t\tif err != nil {\n\t\t\tb.error(err)\n\t\t\treturn -1\n\t\t}\n\t\tt.ExpandElem = append(t.ExpandElem, ce)\n\t}\n\treturn i\n}\n\n// processExpansions extracts data necessary to generate\n// the extraction tables.\nfunc (b *Builder) processExpansions(o *ordering) {\n\tfor e := o.front(); e != nil; e, _ = e.nextIndexed() {\n\t\tif !e.expansion() {\n\t\t\tcontinue\n\t\t}\n\t\tkey := fmt.Sprintf(\"%v\", e.elems)\n\t\ti, ok := b.expIndex[key]\n\t\tif !ok {\n\t\t\ti = b.appendExpansion(e)\n\t\t\tb.expIndex[key] = i\n\t\t}\n\t\te.expansionIndex = i\n\t}\n}\n\nfunc (b *Builder) processContractions(o *ordering) {\n\t// Collate contractions per starter rune.\n\tstarters := []rune{}\n\tcm := make(map[rune][]*entry)\n\tfor e := o.front(); e != nil; e, _ = e.nextIndexed() {\n\t\tif e.contraction() {\n\t\t\tif len(e.str) > b.t.MaxContractLen {\n\t\t\t\tb.t.MaxContractLen = len(e.str)\n\t\t\t}\n\t\t\tr := e.runes[0]\n\t\t\tif _, ok := cm[r]; !ok {\n\t\t\t\tstarters = append(starters, r)\n\t\t\t}\n\t\t\tcm[r] = append(cm[r], e)\n\t\t}\n\t}\n\t// Add entries of single runes that are at a start of a contraction.\n\tfor e := o.front(); e != nil; e, _ = e.nextIndexed() {\n\t\tif !e.contraction() {\n\t\t\tr := e.runes[0]\n\t\t\tif _, ok := cm[r]; ok {\n\t\t\t\tcm[r] = append(cm[r], e)\n\t\t\t}\n\t\t}\n\t}\n\t// Build the tries for the contractions.\n\tt := b.t\n\tfor _, r := range starters {\n\t\tl := cm[r]\n\t\t// Compute suffix strings. There are 31 different contraction suffix\n\t\t// sets for 715 contractions and 82 contraction starter runes as of\n\t\t// version 6.0.0.\n\t\tsufx := []string{}\n\t\thasSingle := false\n\t\tfor _, e := range l {\n\t\t\tif len(e.runes) > 1 {\n\t\t\t\tsufx = append(sufx, string(e.runes[1:]))\n\t\t\t} else {\n\t\t\t\thasSingle = true\n\t\t\t}\n\t\t}\n\t\tif !hasSingle {\n\t\t\tb.error(fmt.Errorf(\"no single entry for starter rune %U found\", r))\n\t\t\tcontinue\n\t\t}\n\t\t// Unique the suffix set.\n\t\tsort.Strings(sufx)\n\t\tkey := strings.Join(sufx, \"\\n\")\n\t\thandle, ok := b.ctHandle[key]\n\t\tif !ok {\n\t\t\tvar err error\n\t\t\thandle, err = appendTrie(&t.ContractTries, sufx)\n\t\t\tif err != nil {\n\t\t\t\tb.error(err)\n\t\t\t}\n\t\t\tb.ctHandle[key] = handle\n\t\t}\n\t\t// Bucket sort entries in index order.\n\t\tes := make([]*entry, len(l))\n\t\tfor _, e := range l {\n\t\t\tvar p, sn int\n\t\t\tif len(e.runes) > 1 {\n\t\t\t\tstr := []byte(string(e.runes[1:]))\n\t\t\t\tp, sn = lookup(&t.ContractTries, handle, str)\n\t\t\t\tif sn != len(str) {\n\t\t\t\t\tlog.Fatalf(\"%s: processContractions: unexpected length for '%X'; len=%d; want %d\", o.id, e.runes, sn, len(str))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif es[p] != nil {\n\t\t\t\tlog.Fatalf(\"%s: multiple contractions for position %d for rune %U\", o.id, p, e.runes[0])\n\t\t\t}\n\t\t\tes[p] = e\n\t\t}\n\t\t// Create collation elements for contractions.\n\t\telems := []uint32{}\n\t\tfor _, e := range es {\n\t\t\tce, err := e.encodeBase()\n\t\t\tb.errorID(o.id, err)\n\t\t\telems = append(elems, ce)\n\t\t}\n\t\tkey = fmt.Sprintf(\"%v\", elems)\n\t\ti, ok := b.ctElem[key]\n\t\tif !ok {\n\t\t\ti = len(t.ContractElem)\n\t\t\tb.ctElem[key] = i\n\t\t\tt.ContractElem = append(t.ContractElem, elems...)\n\t\t}\n\t\t// Store info in entry for starter rune.\n\t\tes[0].contractionIndex = i\n\t\tes[0].contractionHandle = handle\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/build/colelem.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage build\n\nimport (\n\t\"fmt\"\n\t\"unicode\"\n\n\t\"golang.org/x/text/internal/colltab\"\n)\n\nconst (\n\tdefaultSecondary = 0x20\n\tdefaultTertiary  = 0x2\n\tmaxTertiary      = 0x1F\n)\n\ntype rawCE struct {\n\tw   []int\n\tccc uint8\n}\n\nfunc makeRawCE(w []int, ccc uint8) rawCE {\n\tce := rawCE{w: make([]int, 4), ccc: ccc}\n\tcopy(ce.w, w)\n\treturn ce\n}\n\n// A collation element is represented as an uint32.\n// In the typical case, a rune maps to a single collation element. If a rune\n// can be the start of a contraction or expands into multiple collation elements,\n// then the collation element that is associated with a rune will have a special\n// form to represent such m to n mappings.  Such special collation elements\n// have a value >= 0x80000000.\n\nconst (\n\tmaxPrimaryBits   = 21\n\tmaxSecondaryBits = 12\n\tmaxTertiaryBits  = 8\n)\n\nfunc makeCE(ce rawCE) (uint32, error) {\n\tv, e := colltab.MakeElem(ce.w[0], ce.w[1], ce.w[2], ce.ccc)\n\treturn uint32(v), e\n}\n\n// For contractions, collation elements are of the form\n// 110bbbbb bbbbbbbb iiiiiiii iiiinnnn, where\n//   - n* is the size of the first node in the contraction trie.\n//   - i* is the index of the first node in the contraction trie.\n//   - b* is the offset into the contraction collation element table.\n// See contract.go for details on the contraction trie.\nconst (\n\tcontractID            = 0xC0000000\n\tmaxNBits              = 4\n\tmaxTrieIndexBits      = 12\n\tmaxContractOffsetBits = 13\n)\n\nfunc makeContractIndex(h ctHandle, offset int) (uint32, error) {\n\tif h.n >= 1<<maxNBits {\n\t\treturn 0, fmt.Errorf(\"size of contraction trie node too large: %d >= %d\", h.n, 1<<maxNBits)\n\t}\n\tif h.index >= 1<<maxTrieIndexBits {\n\t\treturn 0, fmt.Errorf(\"size of contraction trie offset too large: %d >= %d\", h.index, 1<<maxTrieIndexBits)\n\t}\n\tif offset >= 1<<maxContractOffsetBits {\n\t\treturn 0, fmt.Errorf(\"contraction offset out of bounds: %x >= %x\", offset, 1<<maxContractOffsetBits)\n\t}\n\tce := uint32(contractID)\n\tce += uint32(offset << (maxNBits + maxTrieIndexBits))\n\tce += uint32(h.index << maxNBits)\n\tce += uint32(h.n)\n\treturn ce, nil\n}\n\n// For expansions, collation elements are of the form\n// 11100000 00000000 bbbbbbbb bbbbbbbb,\n// where b* is the index into the expansion sequence table.\nconst (\n\texpandID           = 0xE0000000\n\tmaxExpandIndexBits = 16\n)\n\nfunc makeExpandIndex(index int) (uint32, error) {\n\tif index >= 1<<maxExpandIndexBits {\n\t\treturn 0, fmt.Errorf(\"expansion index out of bounds: %x >= %x\", index, 1<<maxExpandIndexBits)\n\t}\n\treturn expandID + uint32(index), nil\n}\n\n// Each list of collation elements corresponding to an expansion starts with\n// a header indicating the length of the sequence.\nfunc makeExpansionHeader(n int) (uint32, error) {\n\treturn uint32(n), nil\n}\n\n// Some runes can be expanded using NFKD decomposition. Instead of storing the full\n// sequence of collation elements, we decompose the rune and lookup the collation\n// elements for each rune in the decomposition and modify the tertiary weights.\n// The collation element, in this case, is of the form\n// 11110000 00000000 wwwwwwww vvvvvvvv, where\n//   - v* is the replacement tertiary weight for the first rune,\n//   - w* is the replacement tertiary weight for the second rune,\n// Tertiary weights of subsequent runes should be replaced with maxTertiary.\n// See http://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.\nconst (\n\tdecompID = 0xF0000000\n)\n\nfunc makeDecompose(t1, t2 int) (uint32, error) {\n\tif t1 >= 256 || t1 < 0 {\n\t\treturn 0, fmt.Errorf(\"first tertiary weight out of bounds: %d >= 256\", t1)\n\t}\n\tif t2 >= 256 || t2 < 0 {\n\t\treturn 0, fmt.Errorf(\"second tertiary weight out of bounds: %d >= 256\", t2)\n\t}\n\treturn uint32(t2<<8+t1) + decompID, nil\n}\n\nconst (\n\t// These constants were taken from http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.\n\tminUnified       rune = 0x4E00\n\tmaxUnified            = 0x9FFF\n\tminCompatibility      = 0xF900\n\tmaxCompatibility      = 0xFAFF\n\tminRare               = 0x3400\n\tmaxRare               = 0x4DBF\n)\nconst (\n\tcommonUnifiedOffset = 0x10000\n\trareUnifiedOffset   = 0x20000 // largest rune in common is U+FAFF\n\totherOffset         = 0x50000 // largest rune in rare is U+2FA1D\n\tillegalOffset       = otherOffset + int(unicode.MaxRune)\n\tmaxPrimary          = illegalOffset + 1\n)\n\n// implicitPrimary returns the primary weight for the a rune\n// for which there is no entry for the rune in the collation table.\n// We take a different approach from the one specified in\n// http://unicode.org/reports/tr10/#Implicit_Weights,\n// but preserve the resulting relative ordering of the runes.\nfunc implicitPrimary(r rune) int {\n\tif unicode.Is(unicode.Ideographic, r) {\n\t\tif r >= minUnified && r <= maxUnified {\n\t\t\t// The most common case for CJK.\n\t\t\treturn int(r) + commonUnifiedOffset\n\t\t}\n\t\tif r >= minCompatibility && r <= maxCompatibility {\n\t\t\t// This will typically not hit. The DUCET explicitly specifies mappings\n\t\t\t// for all characters that do not decompose.\n\t\t\treturn int(r) + commonUnifiedOffset\n\t\t}\n\t\treturn int(r) + rareUnifiedOffset\n\t}\n\treturn int(r) + otherOffset\n}\n\n// convertLargeWeights converts collation elements with large\n// primaries (either double primaries or for illegal runes)\n// to our own representation.\n// A CJK character C is represented in the DUCET as\n//   [.FBxx.0020.0002.C][.BBBB.0000.0000.C]\n// We will rewrite these characters to a single CE.\n// We assume the CJK values start at 0x8000.\n// See http://unicode.org/reports/tr10/#Implicit_Weights\nfunc convertLargeWeights(elems []rawCE) (res []rawCE, err error) {\n\tconst (\n\t\tcjkPrimaryStart   = 0xFB40\n\t\trarePrimaryStart  = 0xFB80\n\t\totherPrimaryStart = 0xFBC0\n\t\tillegalPrimary    = 0xFFFE\n\t\thighBitsMask      = 0x3F\n\t\tlowBitsMask       = 0x7FFF\n\t\tlowBitsFlag       = 0x8000\n\t\tshiftBits         = 15\n\t)\n\tfor i := 0; i < len(elems); i++ {\n\t\tce := elems[i].w\n\t\tp := ce[0]\n\t\tif p < cjkPrimaryStart {\n\t\t\tcontinue\n\t\t}\n\t\tif p > 0xFFFF {\n\t\t\treturn elems, fmt.Errorf(\"found primary weight %X; should be <= 0xFFFF\", p)\n\t\t}\n\t\tif p >= illegalPrimary {\n\t\t\tce[0] = illegalOffset + p - illegalPrimary\n\t\t} else {\n\t\t\tif i+1 >= len(elems) {\n\t\t\t\treturn elems, fmt.Errorf(\"second part of double primary weight missing: %v\", elems)\n\t\t\t}\n\t\t\tif elems[i+1].w[0]&lowBitsFlag == 0 {\n\t\t\t\treturn elems, fmt.Errorf(\"malformed second part of double primary weight: %v\", elems)\n\t\t\t}\n\t\t\tnp := ((p & highBitsMask) << shiftBits) + elems[i+1].w[0]&lowBitsMask\n\t\t\tswitch {\n\t\t\tcase p < rarePrimaryStart:\n\t\t\t\tnp += commonUnifiedOffset\n\t\t\tcase p < otherPrimaryStart:\n\t\t\t\tnp += rareUnifiedOffset\n\t\t\tdefault:\n\t\t\t\tp += otherOffset\n\t\t\t}\n\t\t\tce[0] = np\n\t\t\tfor j := i + 1; j+1 < len(elems); j++ {\n\t\t\t\telems[j] = elems[j+1]\n\t\t\t}\n\t\t\telems = elems[:len(elems)-1]\n\t\t}\n\t}\n\treturn elems, nil\n}\n\n// nextWeight computes the first possible collation weights following elems\n// for the given level.\nfunc nextWeight(level colltab.Level, elems []rawCE) []rawCE {\n\tif level == colltab.Identity {\n\t\tnext := make([]rawCE, len(elems))\n\t\tcopy(next, elems)\n\t\treturn next\n\t}\n\tnext := []rawCE{makeRawCE(elems[0].w, elems[0].ccc)}\n\tnext[0].w[level]++\n\tif level < colltab.Secondary {\n\t\tnext[0].w[colltab.Secondary] = defaultSecondary\n\t}\n\tif level < colltab.Tertiary {\n\t\tnext[0].w[colltab.Tertiary] = defaultTertiary\n\t}\n\t// Filter entries that cannot influence ordering.\n\tfor _, ce := range elems[1:] {\n\t\tskip := true\n\t\tfor i := colltab.Primary; i < level; i++ {\n\t\t\tskip = skip && ce.w[i] == 0\n\t\t}\n\t\tif !skip {\n\t\t\tnext = append(next, ce)\n\t\t}\n\t}\n\treturn next\n}\n\nfunc nextVal(elems []rawCE, i int, level colltab.Level) (index, value int) {\n\tfor ; i < len(elems) && elems[i].w[level] == 0; i++ {\n\t}\n\tif i < len(elems) {\n\t\treturn i, elems[i].w[level]\n\t}\n\treturn i, 0\n}\n\n// compareWeights returns -1 if a < b, 1 if a > b, or 0 otherwise.\n// It also returns the collation level at which the difference is found.\nfunc compareWeights(a, b []rawCE) (result int, level colltab.Level) {\n\tfor level := colltab.Primary; level < colltab.Identity; level++ {\n\t\tvar va, vb int\n\t\tfor ia, ib := 0, 0; ia < len(a) || ib < len(b); ia, ib = ia+1, ib+1 {\n\t\t\tia, va = nextVal(a, ia, level)\n\t\t\tib, vb = nextVal(b, ib, level)\n\t\t\tif va != vb {\n\t\t\t\tif va < vb {\n\t\t\t\t\treturn -1, level\n\t\t\t\t} else {\n\t\t\t\t\treturn 1, level\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn 0, colltab.Identity\n}\n\nfunc equalCE(a, b rawCE) bool {\n\tfor i := 0; i < 3; i++ {\n\t\tif b.w[i] != a.w[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc equalCEArrays(a, b []rawCE) bool {\n\tif len(a) != len(b) {\n\t\treturn false\n\t}\n\tfor i := range a {\n\t\tif !equalCE(a[i], b[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/build/contract.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage build\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/colltab\"\n)\n\n// This file contains code for detecting contractions and generating\n// the necessary tables.\n// Any Unicode Collation Algorithm (UCA) table entry that has more than\n// one rune one the left-hand side is called a contraction.\n// See http://www.unicode.org/reports/tr10/#Contractions for more details.\n//\n// We define the following terms:\n//   initial:     a rune that appears as the first rune in a contraction.\n//   suffix:      a sequence of runes succeeding the initial rune\n//                in a given contraction.\n//   non-initial: a rune that appears in a suffix.\n//\n// A rune may be both an initial and a non-initial and may be so in\n// many contractions.  An initial may typically also appear by itself.\n// In case of ambiguities, the UCA requires we match the longest\n// contraction.\n//\n// Many contraction rules share the same set of possible suffixes.\n// We store sets of suffixes in a trie that associates an index with\n// each suffix in the set.  This index can be used to look up a\n// collation element associated with the (starter rune, suffix) pair.\n//\n// The trie is defined on a UTF-8 byte sequence.\n// The overall trie is represented as an array of ctEntries.  Each node of the trie\n// is represented as a subsequence of ctEntries, where each entry corresponds to\n// a possible match of a next character in the search string.  An entry\n// also includes the length and offset to the next sequence of entries\n// to check in case of a match.\n\nconst (\n\tfinal   = 0\n\tnoIndex = 0xFF\n)\n\n// ctEntry associates to a matching byte an offset and/or next sequence of\n// bytes to check. A ctEntry c is called final if a match means that the\n// longest suffix has been found.  An entry c is final if c.N == 0.\n// A single final entry can match a range of characters to an offset.\n// A non-final entry always matches a single byte. Note that a non-final\n// entry might still resemble a completed suffix.\n// Examples:\n// The suffix strings \"ab\" and \"ac\" can be represented as:\n// []ctEntry{\n//     {'a', 1, 1, noIndex},  // 'a' by itself does not match, so i is 0xFF.\n//     {'b', 'c', 0, 1},   // \"ab\" -> 1, \"ac\" -> 2\n// }\n//\n// The suffix strings \"ab\", \"abc\", \"abd\", and \"abcd\" can be represented as:\n// []ctEntry{\n//     {'a', 1, 1, noIndex}, // 'a' must be followed by 'b'.\n//     {'b', 1, 2, 1},    // \"ab\" -> 1, may be followed by 'c' or 'd'.\n//     {'d', 'd', final, 3},  // \"abd\" -> 3\n//     {'c', 4, 1, 2},    // \"abc\" -> 2, may be followed by 'd'.\n//     {'d', 'd', final, 4},  // \"abcd\" -> 4\n// }\n// See genStateTests in contract_test.go for more examples.\ntype ctEntry struct {\n\tL uint8 // non-final: byte value to match; final: lowest match in range.\n\tH uint8 // non-final: relative index to next block; final: highest match in range.\n\tN uint8 // non-final: length of next block; final: final\n\tI uint8 // result offset. Will be noIndex if more bytes are needed to complete.\n}\n\n// contractTrieSet holds a set of contraction tries. The tries are stored\n// consecutively in the entry field.\ntype contractTrieSet []struct{ l, h, n, i uint8 }\n\n// ctHandle is used to identify a trie in the trie set, consisting in an offset\n// in the array and the size of the first node.\ntype ctHandle struct {\n\tindex, n int\n}\n\n// appendTrie adds a new trie for the given suffixes to the trie set and returns\n// a handle to it.  The handle will be invalid on error.\nfunc appendTrie(ct *colltab.ContractTrieSet, suffixes []string) (ctHandle, error) {\n\tes := make([]stridx, len(suffixes))\n\tfor i, s := range suffixes {\n\t\tes[i].str = s\n\t}\n\tsort.Sort(offsetSort(es))\n\tfor i := range es {\n\t\tes[i].index = i + 1\n\t}\n\tsort.Sort(genidxSort(es))\n\ti := len(*ct)\n\tn, err := genStates(ct, es)\n\tif err != nil {\n\t\t*ct = (*ct)[:i]\n\t\treturn ctHandle{}, err\n\t}\n\treturn ctHandle{i, n}, nil\n}\n\n// genStates generates ctEntries for a given suffix set and returns\n// the number of entries for the first node.\nfunc genStates(ct *colltab.ContractTrieSet, sis []stridx) (int, error) {\n\tif len(sis) == 0 {\n\t\treturn 0, fmt.Errorf(\"genStates: list of suffices must be non-empty\")\n\t}\n\tstart := len(*ct)\n\t// create entries for differing first bytes.\n\tfor _, si := range sis {\n\t\ts := si.str\n\t\tif len(s) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tadded := false\n\t\tc := s[0]\n\t\tif len(s) > 1 {\n\t\t\tfor j := len(*ct) - 1; j >= start; j-- {\n\t\t\t\tif (*ct)[j].L == c {\n\t\t\t\t\tadded = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !added {\n\t\t\t\t*ct = append(*ct, ctEntry{L: c, I: noIndex})\n\t\t\t}\n\t\t} else {\n\t\t\tfor j := len(*ct) - 1; j >= start; j-- {\n\t\t\t\t// Update the offset for longer suffixes with the same byte.\n\t\t\t\tif (*ct)[j].L == c {\n\t\t\t\t\t(*ct)[j].I = uint8(si.index)\n\t\t\t\t\tadded = true\n\t\t\t\t}\n\t\t\t\t// Extend range of final ctEntry, if possible.\n\t\t\t\tif (*ct)[j].H+1 == c {\n\t\t\t\t\t(*ct)[j].H = c\n\t\t\t\t\tadded = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !added {\n\t\t\t\t*ct = append(*ct, ctEntry{L: c, H: c, N: final, I: uint8(si.index)})\n\t\t\t}\n\t\t}\n\t}\n\tn := len(*ct) - start\n\t// Append nodes for the remainder of the suffixes for each ctEntry.\n\tsp := 0\n\tfor i, end := start, len(*ct); i < end; i++ {\n\t\tfe := (*ct)[i]\n\t\tif fe.H == 0 { // uninitialized non-final\n\t\t\tln := len(*ct) - start - n\n\t\t\tif ln > 0xFF {\n\t\t\t\treturn 0, fmt.Errorf(\"genStates: relative block offset too large: %d > 255\", ln)\n\t\t\t}\n\t\t\tfe.H = uint8(ln)\n\t\t\t// Find first non-final strings with same byte as current entry.\n\t\t\tfor ; sis[sp].str[0] != fe.L; sp++ {\n\t\t\t}\n\t\t\tse := sp + 1\n\t\t\tfor ; se < len(sis) && len(sis[se].str) > 1 && sis[se].str[0] == fe.L; se++ {\n\t\t\t}\n\t\t\tsl := sis[sp:se]\n\t\t\tsp = se\n\t\t\tfor i, si := range sl {\n\t\t\t\tsl[i].str = si.str[1:]\n\t\t\t}\n\t\t\tnn, err := genStates(ct, sl)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tfe.N = uint8(nn)\n\t\t\t(*ct)[i] = fe\n\t\t}\n\t}\n\tsort.Sort(entrySort((*ct)[start : start+n]))\n\treturn n, nil\n}\n\n// There may be both a final and non-final entry for a byte if the byte\n// is implied in a range of matches in the final entry.\n// We need to ensure that the non-final entry comes first in that case.\ntype entrySort colltab.ContractTrieSet\n\nfunc (fe entrySort) Len() int      { return len(fe) }\nfunc (fe entrySort) Swap(i, j int) { fe[i], fe[j] = fe[j], fe[i] }\nfunc (fe entrySort) Less(i, j int) bool {\n\treturn fe[i].L > fe[j].L\n}\n\n// stridx is used for sorting suffixes and their associated offsets.\ntype stridx struct {\n\tstr   string\n\tindex int\n}\n\n// For computing the offsets, we first sort by size, and then by string.\n// This ensures that strings that only differ in the last byte by 1\n// are sorted consecutively in increasing order such that they can\n// be packed as a range in a final ctEntry.\ntype offsetSort []stridx\n\nfunc (si offsetSort) Len() int      { return len(si) }\nfunc (si offsetSort) Swap(i, j int) { si[i], si[j] = si[j], si[i] }\nfunc (si offsetSort) Less(i, j int) bool {\n\tif len(si[i].str) != len(si[j].str) {\n\t\treturn len(si[i].str) > len(si[j].str)\n\t}\n\treturn si[i].str < si[j].str\n}\n\n// For indexing, we want to ensure that strings are sorted in string order, where\n// for strings with the same prefix, we put longer strings before shorter ones.\ntype genidxSort []stridx\n\nfunc (si genidxSort) Len() int      { return len(si) }\nfunc (si genidxSort) Swap(i, j int) { si[i], si[j] = si[j], si[i] }\nfunc (si genidxSort) Less(i, j int) bool {\n\tif strings.HasPrefix(si[j].str, si[i].str) {\n\t\treturn false\n\t}\n\tif strings.HasPrefix(si[i].str, si[j].str) {\n\t\treturn true\n\t}\n\treturn si[i].str < si[j].str\n}\n\n// lookup matches the longest suffix in str and returns the associated offset\n// and the number of bytes consumed.\nfunc lookup(ct *colltab.ContractTrieSet, h ctHandle, str []byte) (index, ns int) {\n\tstates := (*ct)[h.index:]\n\tp := 0\n\tn := h.n\n\tfor i := 0; i < n && p < len(str); {\n\t\te := states[i]\n\t\tc := str[p]\n\t\tif c >= e.L {\n\t\t\tif e.L == c {\n\t\t\t\tp++\n\t\t\t\tif e.I != noIndex {\n\t\t\t\t\tindex, ns = int(e.I), p\n\t\t\t\t}\n\t\t\t\tif e.N != final {\n\t\t\t\t\t// set to new state\n\t\t\t\t\ti, states, n = 0, states[int(e.H)+n:], int(e.N)\n\t\t\t\t} else {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else if e.N == final && c <= e.H {\n\t\t\t\tp++\n\t\t\t\treturn int(c-e.L) + int(e.I), p\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\treturn\n}\n\n// print writes the contractTrieSet t as compilable Go code to w. It returns\n// the total number of bytes written and the size of the resulting data structure in bytes.\nfunc print(t *colltab.ContractTrieSet, w io.Writer, name string) (n, size int, err error) {\n\tupdate3 := func(nn, sz int, e error) {\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t\tsize += sz\n\t}\n\tupdate2 := func(nn int, e error) { update3(nn, 0, e) }\n\n\tupdate3(printArray(*t, w, name))\n\tupdate2(fmt.Fprintf(w, \"var %sContractTrieSet = \", name))\n\tupdate3(printStruct(*t, w, name))\n\tupdate2(fmt.Fprintln(w))\n\treturn\n}\n\nfunc printArray(ct colltab.ContractTrieSet, w io.Writer, name string) (n, size int, err error) {\n\tp := func(f string, a ...interface{}) {\n\t\tnn, e := fmt.Fprintf(w, f, a...)\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t}\n\tsize = len(ct) * 4\n\tp(\"// %sCTEntries: %d entries, %d bytes\\n\", name, len(ct), size)\n\tp(\"var %sCTEntries = [%d]struct{L,H,N,I uint8}{\\n\", name, len(ct))\n\tfor _, fe := range ct {\n\t\tp(\"\\t{0x%X, 0x%X, %d, %d},\\n\", fe.L, fe.H, fe.N, fe.I)\n\t}\n\tp(\"}\\n\")\n\treturn\n}\n\nfunc printStruct(ct colltab.ContractTrieSet, w io.Writer, name string) (n, size int, err error) {\n\tn, err = fmt.Fprintf(w, \"colltab.ContractTrieSet( %sCTEntries[:] )\", name)\n\tsize = int(reflect.TypeOf(ct).Size())\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/build/order.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage build\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"sort\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"golang.org/x/text/internal/colltab\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\ntype logicalAnchor int\n\nconst (\n\tfirstAnchor logicalAnchor = -1\n\tnoAnchor                  = 0\n\tlastAnchor                = 1\n)\n\n// entry is used to keep track of a single entry in the collation element table\n// during building. Examples of entries can be found in the Default Unicode\n// Collation Element Table.\n// See http://www.unicode.org/Public/UCA/6.0.0/allkeys.txt.\ntype entry struct {\n\tstr    string // same as string(runes)\n\trunes  []rune\n\telems  []rawCE // the collation elements\n\textend string  // weights of extend to be appended to elems\n\tbefore bool    // weights relative to next instead of previous.\n\tlock   bool    // entry is used in extension and can no longer be moved.\n\n\t// prev, next, and level are used to keep track of tailorings.\n\tprev, next *entry\n\tlevel      colltab.Level // next differs at this level\n\tskipRemove bool          // do not unlink when removed\n\n\tdecompose bool // can use NFKD decomposition to generate elems\n\texclude   bool // do not include in table\n\timplicit  bool // derived, is not included in the list\n\tmodified  bool // entry was modified in tailoring\n\tlogical   logicalAnchor\n\n\texpansionIndex    int // used to store index into expansion table\n\tcontractionHandle ctHandle\n\tcontractionIndex  int // index into contraction elements\n}\n\nfunc (e *entry) String() string {\n\treturn fmt.Sprintf(\"%X (%q) -> %X (ch:%x; ci:%d, ei:%d)\",\n\t\te.runes, e.str, e.elems, e.contractionHandle, e.contractionIndex, e.expansionIndex)\n}\n\nfunc (e *entry) skip() bool {\n\treturn e.contraction()\n}\n\nfunc (e *entry) expansion() bool {\n\treturn !e.decompose && len(e.elems) > 1\n}\n\nfunc (e *entry) contraction() bool {\n\treturn len(e.runes) > 1\n}\n\nfunc (e *entry) contractionStarter() bool {\n\treturn e.contractionHandle.n != 0\n}\n\n// nextIndexed gets the next entry that needs to be stored in the table.\n// It returns the entry and the collation level at which the next entry differs\n// from the current entry.\n// Entries that can be explicitly derived and logical reset positions are\n// examples of entries that will not be indexed.\nfunc (e *entry) nextIndexed() (*entry, colltab.Level) {\n\tlevel := e.level\n\tfor e = e.next; e != nil && (e.exclude || len(e.elems) == 0); e = e.next {\n\t\tif e.level < level {\n\t\t\tlevel = e.level\n\t\t}\n\t}\n\treturn e, level\n}\n\n// remove unlinks entry e from the sorted chain and clears the collation\n// elements. e may not be at the front or end of the list. This should always\n// be the case, as the front and end of the list are always logical anchors,\n// which may not be removed.\nfunc (e *entry) remove() {\n\tif e.logical != noAnchor {\n\t\tlog.Fatalf(\"may not remove anchor %q\", e.str)\n\t}\n\t// TODO: need to set e.prev.level to e.level if e.level is smaller?\n\te.elems = nil\n\tif !e.skipRemove {\n\t\tif e.prev != nil {\n\t\t\te.prev.next = e.next\n\t\t}\n\t\tif e.next != nil {\n\t\t\te.next.prev = e.prev\n\t\t}\n\t}\n\te.skipRemove = false\n}\n\n// insertAfter inserts n after e.\nfunc (e *entry) insertAfter(n *entry) {\n\tif e == n {\n\t\tpanic(\"e == anchor\")\n\t}\n\tif e == nil {\n\t\tpanic(\"unexpected nil anchor\")\n\t}\n\tn.remove()\n\tn.decompose = false // redo decomposition test\n\n\tn.next = e.next\n\tn.prev = e\n\tif e.next != nil {\n\t\te.next.prev = n\n\t}\n\te.next = n\n}\n\n// insertBefore inserts n before e.\nfunc (e *entry) insertBefore(n *entry) {\n\tif e == n {\n\t\tpanic(\"e == anchor\")\n\t}\n\tif e == nil {\n\t\tpanic(\"unexpected nil anchor\")\n\t}\n\tn.remove()\n\tn.decompose = false // redo decomposition test\n\n\tn.prev = e.prev\n\tn.next = e\n\tif e.prev != nil {\n\t\te.prev.next = n\n\t}\n\te.prev = n\n}\n\nfunc (e *entry) encodeBase() (ce uint32, err error) {\n\tswitch {\n\tcase e.expansion():\n\t\tce, err = makeExpandIndex(e.expansionIndex)\n\tdefault:\n\t\tif e.decompose {\n\t\t\tlog.Fatal(\"decompose should be handled elsewhere\")\n\t\t}\n\t\tce, err = makeCE(e.elems[0])\n\t}\n\treturn\n}\n\nfunc (e *entry) encode() (ce uint32, err error) {\n\tif e.skip() {\n\t\tlog.Fatal(\"cannot build colElem for entry that should be skipped\")\n\t}\n\tswitch {\n\tcase e.decompose:\n\t\tt1 := e.elems[0].w[2]\n\t\tt2 := 0\n\t\tif len(e.elems) > 1 {\n\t\t\tt2 = e.elems[1].w[2]\n\t\t}\n\t\tce, err = makeDecompose(t1, t2)\n\tcase e.contractionStarter():\n\t\tce, err = makeContractIndex(e.contractionHandle, e.contractionIndex)\n\tdefault:\n\t\tif len(e.runes) > 1 {\n\t\t\tlog.Fatal(\"colElem: contractions are handled in contraction trie\")\n\t\t}\n\t\tce, err = e.encodeBase()\n\t}\n\treturn\n}\n\n// entryLess returns true if a sorts before b and false otherwise.\nfunc entryLess(a, b *entry) bool {\n\tif res, _ := compareWeights(a.elems, b.elems); res != 0 {\n\t\treturn res == -1\n\t}\n\tif a.logical != noAnchor {\n\t\treturn a.logical == firstAnchor\n\t}\n\tif b.logical != noAnchor {\n\t\treturn b.logical == lastAnchor\n\t}\n\treturn a.str < b.str\n}\n\ntype sortedEntries []*entry\n\nfunc (s sortedEntries) Len() int {\n\treturn len(s)\n}\n\nfunc (s sortedEntries) Swap(i, j int) {\n\ts[i], s[j] = s[j], s[i]\n}\n\nfunc (s sortedEntries) Less(i, j int) bool {\n\treturn entryLess(s[i], s[j])\n}\n\ntype ordering struct {\n\tid       string\n\tentryMap map[string]*entry\n\tordered  []*entry\n\thandle   *trieHandle\n}\n\n// insert inserts e into both entryMap and ordered.\n// Note that insert simply appends e to ordered.  To reattain a sorted\n// order, o.sort() should be called.\nfunc (o *ordering) insert(e *entry) {\n\tif e.logical == noAnchor {\n\t\to.entryMap[e.str] = e\n\t} else {\n\t\t// Use key format as used in UCA rules.\n\t\to.entryMap[fmt.Sprintf(\"[%s]\", e.str)] = e\n\t\t// Also add index entry for XML format.\n\t\to.entryMap[fmt.Sprintf(\"<%s/>\", strings.Replace(e.str, \" \", \"_\", -1))] = e\n\t}\n\to.ordered = append(o.ordered, e)\n}\n\n// newEntry creates a new entry for the given info and inserts it into\n// the index.\nfunc (o *ordering) newEntry(s string, ces []rawCE) *entry {\n\te := &entry{\n\t\trunes: []rune(s),\n\t\telems: ces,\n\t\tstr:   s,\n\t}\n\to.insert(e)\n\treturn e\n}\n\n// find looks up and returns the entry for the given string.\n// It returns nil if str is not in the index and if an implicit value\n// cannot be derived, that is, if str represents more than one rune.\nfunc (o *ordering) find(str string) *entry {\n\te := o.entryMap[str]\n\tif e == nil {\n\t\tr := []rune(str)\n\t\tif len(r) == 1 {\n\t\t\tconst (\n\t\t\t\tfirstHangul = 0xAC00\n\t\t\t\tlastHangul  = 0xD7A3\n\t\t\t)\n\t\t\tif r[0] >= firstHangul && r[0] <= lastHangul {\n\t\t\t\tce := []rawCE{}\n\t\t\t\tnfd := norm.NFD.String(str)\n\t\t\t\tfor _, r := range nfd {\n\t\t\t\t\tce = append(ce, o.find(string(r)).elems...)\n\t\t\t\t}\n\t\t\t\te = o.newEntry(nfd, ce)\n\t\t\t} else {\n\t\t\t\te = o.newEntry(string(r[0]), []rawCE{\n\t\t\t\t\t{w: []int{\n\t\t\t\t\t\timplicitPrimary(r[0]),\n\t\t\t\t\t\tdefaultSecondary,\n\t\t\t\t\t\tdefaultTertiary,\n\t\t\t\t\t\tint(r[0]),\n\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\te.modified = true\n\t\t\t}\n\t\t\te.exclude = true // do not index implicits\n\t\t}\n\t}\n\treturn e\n}\n\n// makeRootOrdering returns a newly initialized ordering value and populates\n// it with a set of logical reset points that can be used as anchors.\n// The anchors first_tertiary_ignorable and __END__ will always sort at\n// the beginning and end, respectively. This means that prev and next are non-nil\n// for any indexed entry.\nfunc makeRootOrdering() ordering {\n\tconst max = unicode.MaxRune\n\to := ordering{\n\t\tentryMap: make(map[string]*entry),\n\t}\n\tinsert := func(typ logicalAnchor, s string, ce []int) {\n\t\te := &entry{\n\t\t\telems:   []rawCE{{w: ce}},\n\t\t\tstr:     s,\n\t\t\texclude: true,\n\t\t\tlogical: typ,\n\t\t}\n\t\to.insert(e)\n\t}\n\tinsert(firstAnchor, \"first tertiary ignorable\", []int{0, 0, 0, 0})\n\tinsert(lastAnchor, \"last tertiary ignorable\", []int{0, 0, 0, max})\n\tinsert(lastAnchor, \"last primary ignorable\", []int{0, defaultSecondary, defaultTertiary, max})\n\tinsert(lastAnchor, \"last non ignorable\", []int{maxPrimary, defaultSecondary, defaultTertiary, max})\n\tinsert(lastAnchor, \"__END__\", []int{1 << maxPrimaryBits, defaultSecondary, defaultTertiary, max})\n\treturn o\n}\n\n// patchForInsert eleminates entries from the list with more than one collation element.\n// The next and prev fields of the eliminated entries still point to appropriate\n// values in the newly created list.\n// It requires that sort has been called.\nfunc (o *ordering) patchForInsert() {\n\tfor i := 0; i < len(o.ordered)-1; {\n\t\te := o.ordered[i]\n\t\tlev := e.level\n\t\tn := e.next\n\t\tfor ; n != nil && len(n.elems) > 1; n = n.next {\n\t\t\tif n.level < lev {\n\t\t\t\tlev = n.level\n\t\t\t}\n\t\t\tn.skipRemove = true\n\t\t}\n\t\tfor ; o.ordered[i] != n; i++ {\n\t\t\to.ordered[i].level = lev\n\t\t\to.ordered[i].next = n\n\t\t\to.ordered[i+1].prev = e\n\t\t}\n\t}\n}\n\n// clone copies all ordering of es into a new ordering value.\nfunc (o *ordering) clone() *ordering {\n\to.sort()\n\too := ordering{\n\t\tentryMap: make(map[string]*entry),\n\t}\n\tfor _, e := range o.ordered {\n\t\tne := &entry{\n\t\t\trunes:     e.runes,\n\t\t\telems:     e.elems,\n\t\t\tstr:       e.str,\n\t\t\tdecompose: e.decompose,\n\t\t\texclude:   e.exclude,\n\t\t\tlogical:   e.logical,\n\t\t}\n\t\too.insert(ne)\n\t}\n\too.sort() // link all ordering.\n\too.patchForInsert()\n\treturn &oo\n}\n\n// front returns the first entry to be indexed.\n// It assumes that sort() has been called.\nfunc (o *ordering) front() *entry {\n\te := o.ordered[0]\n\tif e.prev != nil {\n\t\tlog.Panicf(\"unexpected first entry: %v\", e)\n\t}\n\t// The first entry is always a logical position, which should not be indexed.\n\te, _ = e.nextIndexed()\n\treturn e\n}\n\n// sort sorts all ordering based on their collation elements and initializes\n// the prev, next, and level fields accordingly.\nfunc (o *ordering) sort() {\n\tsort.Sort(sortedEntries(o.ordered))\n\tl := o.ordered\n\tfor i := 1; i < len(l); i++ {\n\t\tk := i - 1\n\t\tl[k].next = l[i]\n\t\t_, l[k].level = compareWeights(l[k].elems, l[i].elems)\n\t\tl[i].prev = l[k]\n\t}\n}\n\n// genColElems generates a collation element array from the runes in str. This\n// assumes that all collation elements have already been added to the Builder.\nfunc (o *ordering) genColElems(str string) []rawCE {\n\telems := []rawCE{}\n\tfor _, r := range []rune(str) {\n\t\tfor _, ce := range o.find(string(r)).elems {\n\t\t\tif ce.w[0] != 0 || ce.w[1] != 0 || ce.w[2] != 0 {\n\t\t\t\telems = append(elems, ce)\n\t\t\t}\n\t\t}\n\t}\n\treturn elems\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/build/table.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage build\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\n\t\"golang.org/x/text/internal/colltab\"\n)\n\n// table is an intermediate structure that roughly resembles the table in collate.\ntype table struct {\n\tcolltab.Table\n\ttrie trie\n\troot *trieHandle\n}\n\n// print writes the table as Go compilable code to w. It prefixes the\n// variable names with name. It returns the number of bytes written\n// and the size of the resulting table.\nfunc (t *table) fprint(w io.Writer, name string) (n, size int, err error) {\n\tupdate := func(nn, sz int, e error) {\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t\tsize += sz\n\t}\n\t// Write arrays needed for the structure.\n\tupdate(printColElems(w, t.ExpandElem, name+\"ExpandElem\"))\n\tupdate(printColElems(w, t.ContractElem, name+\"ContractElem\"))\n\tupdate(t.trie.printArrays(w, name))\n\tupdate(printArray(t.ContractTries, w, name))\n\n\tnn, e := fmt.Fprintf(w, \"// Total size of %sTable is %d bytes\\n\", name, size)\n\tupdate(nn, 0, e)\n\treturn\n}\n\nfunc (t *table) fprintIndex(w io.Writer, h *trieHandle, id string) (n int, err error) {\n\tp := func(f string, a ...interface{}) {\n\t\tnn, e := fmt.Fprintf(w, f, a...)\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t}\n\tp(\"\\t{ // %s\\n\", id)\n\tp(\"\\t\\tlookupOffset: 0x%x,\\n\", h.lookupStart)\n\tp(\"\\t\\tvaluesOffset: 0x%x,\\n\", h.valueStart)\n\tp(\"\\t},\\n\")\n\treturn\n}\n\nfunc printColElems(w io.Writer, a []uint32, name string) (n, sz int, err error) {\n\tp := func(f string, a ...interface{}) {\n\t\tnn, e := fmt.Fprintf(w, f, a...)\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t}\n\tsz = len(a) * int(reflect.TypeOf(uint32(0)).Size())\n\tp(\"// %s: %d entries, %d bytes\\n\", name, len(a), sz)\n\tp(\"var %s = [%d]uint32 {\", name, len(a))\n\tfor i, c := range a {\n\t\tswitch {\n\t\tcase i%64 == 0:\n\t\t\tp(\"\\n\\t// Block %d, offset 0x%x\\n\", i/64, i)\n\t\tcase (i%64)%6 == 0:\n\t\t\tp(\"\\n\\t\")\n\t\t}\n\t\tp(\"0x%.8X, \", c)\n\t}\n\tp(\"\\n}\\n\\n\")\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/build/trie.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The trie in this file is used to associate the first full character\n// in a UTF-8 string to a collation element.\n// All but the last byte in a UTF-8 byte sequence are\n// used to look up offsets in the index table to be used for the next byte.\n// The last byte is used to index into a table of collation elements.\n// This file contains the code for the generation of the trie.\n\npackage build\n\nimport (\n\t\"fmt\"\n\t\"hash/fnv\"\n\t\"io\"\n\t\"reflect\"\n)\n\nconst (\n\tblockSize   = 64\n\tblockOffset = 2 // Subtract 2 blocks to compensate for the 0x80 added to continuation bytes.\n)\n\ntype trieHandle struct {\n\tlookupStart uint16 // offset in table for first byte\n\tvalueStart  uint16 // offset in table for first byte\n}\n\ntype trie struct {\n\tindex  []uint16\n\tvalues []uint32\n}\n\n// trieNode is the intermediate trie structure used for generating a trie.\ntype trieNode struct {\n\tindex    []*trieNode\n\tvalue    []uint32\n\tb        byte\n\trefValue uint16\n\trefIndex uint16\n}\n\nfunc newNode() *trieNode {\n\treturn &trieNode{\n\t\tindex: make([]*trieNode, 64),\n\t\tvalue: make([]uint32, 128), // root node size is 128 instead of 64\n\t}\n}\n\nfunc (n *trieNode) isInternal() bool {\n\treturn n.value != nil\n}\n\nfunc (n *trieNode) insert(r rune, value uint32) {\n\tconst maskx = 0x3F // mask out two most-significant bits\n\tstr := string(r)\n\tif len(str) == 1 {\n\t\tn.value[str[0]] = value\n\t\treturn\n\t}\n\tfor i := 0; i < len(str)-1; i++ {\n\t\tb := str[i] & maskx\n\t\tif n.index == nil {\n\t\t\tn.index = make([]*trieNode, blockSize)\n\t\t}\n\t\tnn := n.index[b]\n\t\tif nn == nil {\n\t\t\tnn = &trieNode{}\n\t\t\tnn.b = b\n\t\t\tn.index[b] = nn\n\t\t}\n\t\tn = nn\n\t}\n\tif n.value == nil {\n\t\tn.value = make([]uint32, blockSize)\n\t}\n\tb := str[len(str)-1] & maskx\n\tn.value[b] = value\n}\n\ntype trieBuilder struct {\n\tt *trie\n\n\troots []*trieHandle\n\n\tlookupBlocks []*trieNode\n\tvalueBlocks  []*trieNode\n\n\tlookupBlockIdx map[uint32]*trieNode\n\tvalueBlockIdx  map[uint32]*trieNode\n}\n\nfunc newTrieBuilder() *trieBuilder {\n\tindex := &trieBuilder{}\n\tindex.lookupBlocks = make([]*trieNode, 0)\n\tindex.valueBlocks = make([]*trieNode, 0)\n\tindex.lookupBlockIdx = make(map[uint32]*trieNode)\n\tindex.valueBlockIdx = make(map[uint32]*trieNode)\n\t// The third nil is the default null block.  The other two blocks\n\t// are used to guarantee an offset of at least 3 for each block.\n\tindex.lookupBlocks = append(index.lookupBlocks, nil, nil, nil)\n\tindex.t = &trie{}\n\treturn index\n}\n\nfunc (b *trieBuilder) computeOffsets(n *trieNode) *trieNode {\n\thasher := fnv.New32()\n\tif n.index != nil {\n\t\tfor i, nn := range n.index {\n\t\t\tvar vi, vv uint16\n\t\t\tif nn != nil {\n\t\t\t\tnn = b.computeOffsets(nn)\n\t\t\t\tn.index[i] = nn\n\t\t\t\tvi = nn.refIndex\n\t\t\t\tvv = nn.refValue\n\t\t\t}\n\t\t\thasher.Write([]byte{byte(vi >> 8), byte(vi)})\n\t\t\thasher.Write([]byte{byte(vv >> 8), byte(vv)})\n\t\t}\n\t\th := hasher.Sum32()\n\t\tnn, ok := b.lookupBlockIdx[h]\n\t\tif !ok {\n\t\t\tn.refIndex = uint16(len(b.lookupBlocks)) - blockOffset\n\t\t\tb.lookupBlocks = append(b.lookupBlocks, n)\n\t\t\tb.lookupBlockIdx[h] = n\n\t\t} else {\n\t\t\tn = nn\n\t\t}\n\t} else {\n\t\tfor _, v := range n.value {\n\t\t\thasher.Write([]byte{byte(v >> 24), byte(v >> 16), byte(v >> 8), byte(v)})\n\t\t}\n\t\th := hasher.Sum32()\n\t\tnn, ok := b.valueBlockIdx[h]\n\t\tif !ok {\n\t\t\tn.refValue = uint16(len(b.valueBlocks)) - blockOffset\n\t\t\tn.refIndex = n.refValue\n\t\t\tb.valueBlocks = append(b.valueBlocks, n)\n\t\t\tb.valueBlockIdx[h] = n\n\t\t} else {\n\t\t\tn = nn\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (b *trieBuilder) addStartValueBlock(n *trieNode) uint16 {\n\thasher := fnv.New32()\n\tfor _, v := range n.value[:2*blockSize] {\n\t\thasher.Write([]byte{byte(v >> 24), byte(v >> 16), byte(v >> 8), byte(v)})\n\t}\n\th := hasher.Sum32()\n\tnn, ok := b.valueBlockIdx[h]\n\tif !ok {\n\t\tn.refValue = uint16(len(b.valueBlocks))\n\t\tn.refIndex = n.refValue\n\t\tb.valueBlocks = append(b.valueBlocks, n)\n\t\t// Add a dummy block to accommodate the double block size.\n\t\tb.valueBlocks = append(b.valueBlocks, nil)\n\t\tb.valueBlockIdx[h] = n\n\t} else {\n\t\tn = nn\n\t}\n\treturn n.refValue\n}\n\nfunc genValueBlock(t *trie, n *trieNode) {\n\tif n != nil {\n\t\tfor _, v := range n.value {\n\t\t\tt.values = append(t.values, v)\n\t\t}\n\t}\n}\n\nfunc genLookupBlock(t *trie, n *trieNode) {\n\tfor _, nn := range n.index {\n\t\tv := uint16(0)\n\t\tif nn != nil {\n\t\t\tif n.index != nil {\n\t\t\t\tv = nn.refIndex\n\t\t\t} else {\n\t\t\t\tv = nn.refValue\n\t\t\t}\n\t\t}\n\t\tt.index = append(t.index, v)\n\t}\n}\n\nfunc (b *trieBuilder) addTrie(n *trieNode) *trieHandle {\n\th := &trieHandle{}\n\tb.roots = append(b.roots, h)\n\th.valueStart = b.addStartValueBlock(n)\n\tif len(b.roots) == 1 {\n\t\t// We insert a null block after the first start value block.\n\t\t// This ensures that continuation bytes UTF-8 sequences of length\n\t\t// greater than 2 will automatically hit a null block if there\n\t\t// was an undefined entry.\n\t\tb.valueBlocks = append(b.valueBlocks, nil)\n\t}\n\tn = b.computeOffsets(n)\n\t// Offset by one extra block as the first byte starts at 0xC0 instead of 0x80.\n\th.lookupStart = n.refIndex - 1\n\treturn h\n}\n\n// generate generates and returns the trie for n.\nfunc (b *trieBuilder) generate() (t *trie, err error) {\n\tt = b.t\n\tif len(b.valueBlocks) >= 1<<16 {\n\t\treturn nil, fmt.Errorf(\"maximum number of value blocks exceeded (%d > %d)\", len(b.valueBlocks), 1<<16)\n\t}\n\tif len(b.lookupBlocks) >= 1<<16 {\n\t\treturn nil, fmt.Errorf(\"maximum number of lookup blocks exceeded (%d > %d)\", len(b.lookupBlocks), 1<<16)\n\t}\n\tgenValueBlock(t, b.valueBlocks[0])\n\tgenValueBlock(t, &trieNode{value: make([]uint32, 64)})\n\tfor i := 2; i < len(b.valueBlocks); i++ {\n\t\tgenValueBlock(t, b.valueBlocks[i])\n\t}\n\tn := &trieNode{index: make([]*trieNode, 64)}\n\tgenLookupBlock(t, n)\n\tgenLookupBlock(t, n)\n\tgenLookupBlock(t, n)\n\tfor i := 3; i < len(b.lookupBlocks); i++ {\n\t\tgenLookupBlock(t, b.lookupBlocks[i])\n\t}\n\treturn b.t, nil\n}\n\nfunc (t *trie) printArrays(w io.Writer, name string) (n, size int, err error) {\n\tp := func(f string, a ...interface{}) {\n\t\tnn, e := fmt.Fprintf(w, f, a...)\n\t\tn += nn\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t}\n\tnv := len(t.values)\n\tp(\"// %sValues: %d entries, %d bytes\\n\", name, nv, nv*4)\n\tp(\"// Block 2 is the null block.\\n\")\n\tp(\"var %sValues = [%d]uint32 {\", name, nv)\n\tvar printnewline bool\n\tfor i, v := range t.values {\n\t\tif i%blockSize == 0 {\n\t\t\tp(\"\\n\\t// Block %#x, offset %#x\", i/blockSize, i)\n\t\t}\n\t\tif i%4 == 0 {\n\t\t\tprintnewline = true\n\t\t}\n\t\tif v != 0 {\n\t\t\tif printnewline {\n\t\t\t\tp(\"\\n\\t\")\n\t\t\t\tprintnewline = false\n\t\t\t}\n\t\t\tp(\"%#04x:%#08x, \", i, v)\n\t\t}\n\t}\n\tp(\"\\n}\\n\\n\")\n\tni := len(t.index)\n\tp(\"// %sLookup: %d entries, %d bytes\\n\", name, ni, ni*2)\n\tp(\"// Block 0 is the null block.\\n\")\n\tp(\"var %sLookup = [%d]uint16 {\", name, ni)\n\tprintnewline = false\n\tfor i, v := range t.index {\n\t\tif i%blockSize == 0 {\n\t\t\tp(\"\\n\\t// Block %#x, offset %#x\", i/blockSize, i)\n\t\t}\n\t\tif i%8 == 0 {\n\t\t\tprintnewline = true\n\t\t}\n\t\tif v != 0 {\n\t\t\tif printnewline {\n\t\t\t\tp(\"\\n\\t\")\n\t\t\t\tprintnewline = false\n\t\t\t}\n\t\t\tp(\"%#03x:%#02x, \", i, v)\n\t\t}\n\t}\n\tp(\"\\n}\\n\\n\")\n\treturn n, nv*4 + ni*2, err\n}\n\nfunc (t *trie) printStruct(w io.Writer, handle *trieHandle, name string) (n, sz int, err error) {\n\tconst msg = \"trie{ %sLookup[%d:], %sValues[%d:], %sLookup[:], %sValues[:]}\"\n\tn, err = fmt.Fprintf(w, msg, name, handle.lookupStart*blockSize, name, handle.valueStart*blockSize, name, name)\n\tsz += int(reflect.TypeOf(trie{}).Size())\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/collate.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// TODO: remove hard-coded versions when we have implemented fractional weights.\n// The current implementation is incompatible with later CLDR versions.\n//go:generate go run maketables.go -cldr=23 -unicode=6.2.0\n\n// Package collate contains types for comparing and sorting Unicode strings\n// according to a given collation order.\npackage collate // import \"golang.org/x/text/collate\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/colltab\"\n\t\"golang.org/x/text/language\"\n)\n\n// Collator provides functionality for comparing strings for a given\n// collation order.\ntype Collator struct {\n\toptions\n\n\tsorter sorter\n\n\t_iter [2]iter\n}\n\nfunc (c *Collator) iter(i int) *iter {\n\t// TODO: evaluate performance for making the second iterator optional.\n\treturn &c._iter[i]\n}\n\n// Supported returns the list of languages for which collating differs from its parent.\nfunc Supported() []language.Tag {\n\t// TODO: use language.Coverage instead.\n\n\tt := make([]language.Tag, len(tags))\n\tcopy(t, tags)\n\treturn t\n}\n\nfunc init() {\n\tids := strings.Split(availableLocales, \",\")\n\ttags = make([]language.Tag, len(ids))\n\tfor i, s := range ids {\n\t\ttags[i] = language.Raw.MustParse(s)\n\t}\n}\n\nvar tags []language.Tag\n\n// New returns a new Collator initialized for the given locale.\nfunc New(t language.Tag, o ...Option) *Collator {\n\tindex := colltab.MatchLang(t, tags)\n\tc := newCollator(getTable(locales[index]))\n\n\t// Set options from the user-supplied tag.\n\tc.setFromTag(t)\n\n\t// Set the user-supplied options.\n\tc.setOptions(o)\n\n\tc.init()\n\treturn c\n}\n\n// NewFromTable returns a new Collator for the given Weighter.\nfunc NewFromTable(w colltab.Weighter, o ...Option) *Collator {\n\tc := newCollator(w)\n\tc.setOptions(o)\n\tc.init()\n\treturn c\n}\n\nfunc (c *Collator) init() {\n\tif c.numeric {\n\t\tc.t = colltab.NewNumericWeighter(c.t)\n\t}\n\tc._iter[0].init(c)\n\tc._iter[1].init(c)\n}\n\n// Buffer holds keys generated by Key and KeyString.\ntype Buffer struct {\n\tbuf [4096]byte\n\tkey []byte\n}\n\nfunc (b *Buffer) init() {\n\tif b.key == nil {\n\t\tb.key = b.buf[:0]\n\t}\n}\n\n// Reset clears the buffer from previous results generated by Key and KeyString.\nfunc (b *Buffer) Reset() {\n\tb.key = b.key[:0]\n}\n\n// Compare returns an integer comparing the two byte slices.\n// The result will be 0 if a==b, -1 if a < b, and +1 if a > b.\nfunc (c *Collator) Compare(a, b []byte) int {\n\t// TODO: skip identical prefixes once we have a fast way to detect if a rune is\n\t// part of a contraction. This would lead to roughly a 10% speedup for the colcmp regtest.\n\tc.iter(0).SetInput(a)\n\tc.iter(1).SetInput(b)\n\tif res := c.compare(); res != 0 {\n\t\treturn res\n\t}\n\tif !c.ignore[colltab.Identity] {\n\t\treturn bytes.Compare(a, b)\n\t}\n\treturn 0\n}\n\n// CompareString returns an integer comparing the two strings.\n// The result will be 0 if a==b, -1 if a < b, and +1 if a > b.\nfunc (c *Collator) CompareString(a, b string) int {\n\t// TODO: skip identical prefixes once we have a fast way to detect if a rune is\n\t// part of a contraction. This would lead to roughly a 10% speedup for the colcmp regtest.\n\tc.iter(0).SetInputString(a)\n\tc.iter(1).SetInputString(b)\n\tif res := c.compare(); res != 0 {\n\t\treturn res\n\t}\n\tif !c.ignore[colltab.Identity] {\n\t\tif a < b {\n\t\t\treturn -1\n\t\t} else if a > b {\n\t\t\treturn 1\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc compareLevel(f func(i *iter) int, a, b *iter) int {\n\ta.pce = 0\n\tb.pce = 0\n\tfor {\n\t\tva := f(a)\n\t\tvb := f(b)\n\t\tif va != vb {\n\t\t\tif va < vb {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 1\n\t\t} else if va == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (c *Collator) compare() int {\n\tia, ib := c.iter(0), c.iter(1)\n\t// Process primary level\n\tif c.alternate != altShifted {\n\t\t// TODO: implement script reordering\n\t\tif res := compareLevel((*iter).nextPrimary, ia, ib); res != 0 {\n\t\t\treturn res\n\t\t}\n\t} else {\n\t\t// TODO: handle shifted\n\t}\n\tif !c.ignore[colltab.Secondary] {\n\t\tf := (*iter).nextSecondary\n\t\tif c.backwards {\n\t\t\tf = (*iter).prevSecondary\n\t\t}\n\t\tif res := compareLevel(f, ia, ib); res != 0 {\n\t\t\treturn res\n\t\t}\n\t}\n\t// TODO: special case handling (Danish?)\n\tif !c.ignore[colltab.Tertiary] || c.caseLevel {\n\t\tif res := compareLevel((*iter).nextTertiary, ia, ib); res != 0 {\n\t\t\treturn res\n\t\t}\n\t\tif !c.ignore[colltab.Quaternary] {\n\t\t\tif res := compareLevel((*iter).nextQuaternary, ia, ib); res != 0 {\n\t\t\t\treturn res\n\t\t\t}\n\t\t}\n\t}\n\treturn 0\n}\n\n// Key returns the collation key for str.\n// Passing the buffer buf may avoid memory allocations.\n// The returned slice will point to an allocation in Buffer and will remain\n// valid until the next call to buf.Reset().\nfunc (c *Collator) Key(buf *Buffer, str []byte) []byte {\n\t// See http://www.unicode.org/reports/tr10/#Main_Algorithm for more details.\n\tbuf.init()\n\treturn c.key(buf, c.getColElems(str))\n}\n\n// KeyFromString returns the collation key for str.\n// Passing the buffer buf may avoid memory allocations.\n// The returned slice will point to an allocation in Buffer and will retain\n// valid until the next call to buf.ResetKeys().\nfunc (c *Collator) KeyFromString(buf *Buffer, str string) []byte {\n\t// See http://www.unicode.org/reports/tr10/#Main_Algorithm for more details.\n\tbuf.init()\n\treturn c.key(buf, c.getColElemsString(str))\n}\n\nfunc (c *Collator) key(buf *Buffer, w []colltab.Elem) []byte {\n\tprocessWeights(c.alternate, c.t.Top(), w)\n\tkn := len(buf.key)\n\tc.keyFromElems(buf, w)\n\treturn buf.key[kn:]\n}\n\nfunc (c *Collator) getColElems(str []byte) []colltab.Elem {\n\ti := c.iter(0)\n\ti.SetInput(str)\n\tfor i.Next() {\n\t}\n\treturn i.Elems\n}\n\nfunc (c *Collator) getColElemsString(str string) []colltab.Elem {\n\ti := c.iter(0)\n\ti.SetInputString(str)\n\tfor i.Next() {\n\t}\n\treturn i.Elems\n}\n\ntype iter struct {\n\twa [512]colltab.Elem\n\n\tcolltab.Iter\n\tpce int\n}\n\nfunc (i *iter) init(c *Collator) {\n\ti.Weighter = c.t\n\ti.Elems = i.wa[:0]\n}\n\nfunc (i *iter) nextPrimary() int {\n\tfor {\n\t\tfor ; i.pce < i.N; i.pce++ {\n\t\t\tif v := i.Elems[i.pce].Primary(); v != 0 {\n\t\t\t\ti.pce++\n\t\t\t\treturn v\n\t\t\t}\n\t\t}\n\t\tif !i.Next() {\n\t\t\treturn 0\n\t\t}\n\t}\n\tpanic(\"should not reach here\")\n}\n\nfunc (i *iter) nextSecondary() int {\n\tfor ; i.pce < len(i.Elems); i.pce++ {\n\t\tif v := i.Elems[i.pce].Secondary(); v != 0 {\n\t\t\ti.pce++\n\t\t\treturn v\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (i *iter) prevSecondary() int {\n\tfor ; i.pce < len(i.Elems); i.pce++ {\n\t\tif v := i.Elems[len(i.Elems)-i.pce-1].Secondary(); v != 0 {\n\t\t\ti.pce++\n\t\t\treturn v\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (i *iter) nextTertiary() int {\n\tfor ; i.pce < len(i.Elems); i.pce++ {\n\t\tif v := i.Elems[i.pce].Tertiary(); v != 0 {\n\t\t\ti.pce++\n\t\t\treturn int(v)\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (i *iter) nextQuaternary() int {\n\tfor ; i.pce < len(i.Elems); i.pce++ {\n\t\tif v := i.Elems[i.pce].Quaternary(); v != 0 {\n\t\t\ti.pce++\n\t\t\treturn v\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc appendPrimary(key []byte, p int) []byte {\n\t// Convert to variable length encoding; supports up to 23 bits.\n\tif p <= 0x7FFF {\n\t\tkey = append(key, uint8(p>>8), uint8(p))\n\t} else {\n\t\tkey = append(key, uint8(p>>16)|0x80, uint8(p>>8), uint8(p))\n\t}\n\treturn key\n}\n\n// keyFromElems converts the weights ws to a compact sequence of bytes.\n// The result will be appended to the byte buffer in buf.\nfunc (c *Collator) keyFromElems(buf *Buffer, ws []colltab.Elem) {\n\tfor _, v := range ws {\n\t\tif w := v.Primary(); w > 0 {\n\t\t\tbuf.key = appendPrimary(buf.key, w)\n\t\t}\n\t}\n\tif !c.ignore[colltab.Secondary] {\n\t\tbuf.key = append(buf.key, 0, 0)\n\t\t// TODO: we can use one 0 if we can guarantee that all non-zero weights are > 0xFF.\n\t\tif !c.backwards {\n\t\t\tfor _, v := range ws {\n\t\t\t\tif w := v.Secondary(); w > 0 {\n\t\t\t\t\tbuf.key = append(buf.key, uint8(w>>8), uint8(w))\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor i := len(ws) - 1; i >= 0; i-- {\n\t\t\t\tif w := ws[i].Secondary(); w > 0 {\n\t\t\t\t\tbuf.key = append(buf.key, uint8(w>>8), uint8(w))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if c.caseLevel {\n\t\tbuf.key = append(buf.key, 0, 0)\n\t}\n\tif !c.ignore[colltab.Tertiary] || c.caseLevel {\n\t\tbuf.key = append(buf.key, 0, 0)\n\t\tfor _, v := range ws {\n\t\t\tif w := v.Tertiary(); w > 0 {\n\t\t\t\tbuf.key = append(buf.key, uint8(w))\n\t\t\t}\n\t\t}\n\t\t// Derive the quaternary weights from the options and other levels.\n\t\t// Note that we represent MaxQuaternary as 0xFF. The first byte of the\n\t\t// representation of a primary weight is always smaller than 0xFF,\n\t\t// so using this single byte value will compare correctly.\n\t\tif !c.ignore[colltab.Quaternary] && c.alternate >= altShifted {\n\t\t\tif c.alternate == altShiftTrimmed {\n\t\t\t\tlastNonFFFF := len(buf.key)\n\t\t\t\tbuf.key = append(buf.key, 0)\n\t\t\t\tfor _, v := range ws {\n\t\t\t\t\tif w := v.Quaternary(); w == colltab.MaxQuaternary {\n\t\t\t\t\t\tbuf.key = append(buf.key, 0xFF)\n\t\t\t\t\t} else if w > 0 {\n\t\t\t\t\t\tbuf.key = appendPrimary(buf.key, w)\n\t\t\t\t\t\tlastNonFFFF = len(buf.key)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuf.key = buf.key[:lastNonFFFF]\n\t\t\t} else {\n\t\t\t\tbuf.key = append(buf.key, 0)\n\t\t\t\tfor _, v := range ws {\n\t\t\t\t\tif w := v.Quaternary(); w == colltab.MaxQuaternary {\n\t\t\t\t\t\tbuf.key = append(buf.key, 0xFF)\n\t\t\t\t\t} else if w > 0 {\n\t\t\t\t\t\tbuf.key = appendPrimary(buf.key, w)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc processWeights(vw alternateHandling, top uint32, wa []colltab.Elem) {\n\tignore := false\n\tvtop := int(top)\n\tswitch vw {\n\tcase altShifted, altShiftTrimmed:\n\t\tfor i := range wa {\n\t\t\tif p := wa[i].Primary(); p <= vtop && p != 0 {\n\t\t\t\twa[i] = colltab.MakeQuaternary(p)\n\t\t\t\tignore = true\n\t\t\t} else if p == 0 {\n\t\t\t\tif ignore {\n\t\t\t\t\twa[i] = colltab.Ignore\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tignore = false\n\t\t\t}\n\t\t}\n\tcase altBlanked:\n\t\tfor i := range wa {\n\t\t\tif p := wa[i].Primary(); p <= vtop && (ignore || p != 0) {\n\t\t\t\twa[i] = colltab.Ignore\n\t\t\t\tignore = true\n\t\t\t} else {\n\t\t\t\tignore = false\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/index.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage collate\n\nimport \"golang.org/x/text/internal/colltab\"\n\nconst blockSize = 64\n\nfunc getTable(t tableIndex) *colltab.Table {\n\treturn &colltab.Table{\n\t\tIndex: colltab.Trie{\n\t\t\tIndex0:  mainLookup[:][blockSize*t.lookupOffset:],\n\t\t\tValues0: mainValues[:][blockSize*t.valuesOffset:],\n\t\t\tIndex:   mainLookup[:],\n\t\t\tValues:  mainValues[:],\n\t\t},\n\t\tExpandElem:     mainExpandElem[:],\n\t\tContractTries:  colltab.ContractTrieSet(mainCTEntries[:]),\n\t\tContractElem:   mainContractElem[:],\n\t\tMaxContractLen: 18,\n\t\tVariableTop:    varTop,\n\t}\n}\n\n// tableIndex holds information for constructing a table\n// for a certain locale based on the main table.\ntype tableIndex struct {\n\tlookupOffset uint32\n\tvaluesOffset uint32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/maketables.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n// Collation table generator.\n// Data read from the web.\n\npackage main\n\nimport (\n\t\"archive/zip\"\n\t\"bufio\"\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/collate\"\n\t\"golang.org/x/text/collate/build\"\n\t\"golang.org/x/text/internal/colltab\"\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/language\"\n\t\"golang.org/x/text/unicode/cldr\"\n)\n\nvar (\n\ttest = flag.Bool(\"test\", false,\n\t\t\"test existing tables; can be used to compare web data with package data.\")\n\tshort = flag.Bool(\"short\", false, `Use \"short\" alternatives, when available.`)\n\tdraft = flag.Bool(\"draft\", false, `Use draft versions, when available.`)\n\ttags  = flag.String(\"tags\", \"\", \"build tags to be included after +build directive\")\n\tpkg   = flag.String(\"package\", \"collate\",\n\t\t\"the name of the package in which the generated file is to be included\")\n\n\ttables = flagStringSetAllowAll(\"tables\", \"collate\", \"collate,chars\",\n\t\t\"comma-spearated list of tables to generate.\")\n\texclude = flagStringSet(\"exclude\", \"zh2\", \"\",\n\t\t\"comma-separated list of languages to exclude.\")\n\tinclude = flagStringSet(\"include\", \"\", \"\",\n\t\t\"comma-separated list of languages to include. Include trumps exclude.\")\n\t// TODO: Not included: unihan gb2312han zhuyin big5han (for size reasons)\n\t// TODO: Not included: traditional (buggy for Bengali)\n\ttypes = flagStringSetAllowAll(\"types\", \"standard,phonebook,phonetic,reformed,pinyin,stroke\", \"\",\n\t\t\"comma-separated list of types that should be included.\")\n)\n\n// stringSet implements an ordered set based on a list.  It implements flag.Value\n// to allow a set to be specified as a comma-separated list.\ntype stringSet struct {\n\ts        []string\n\tallowed  *stringSet\n\tdirty    bool // needs compaction if true\n\tall      bool\n\tallowAll bool\n}\n\nfunc flagStringSet(name, def, allowed, usage string) *stringSet {\n\tss := &stringSet{}\n\tif allowed != \"\" {\n\t\tusage += fmt.Sprintf(\" (allowed values: any of %s)\", allowed)\n\t\tss.allowed = &stringSet{}\n\t\tfailOnError(ss.allowed.Set(allowed))\n\t}\n\tss.Set(def)\n\tflag.Var(ss, name, usage)\n\treturn ss\n}\n\nfunc flagStringSetAllowAll(name, def, allowed, usage string) *stringSet {\n\tss := &stringSet{allowAll: true}\n\tif allowed == \"\" {\n\t\tflag.Var(ss, name, usage+fmt.Sprintf(` Use \"all\" to select all.`))\n\t} else {\n\t\tss.allowed = &stringSet{}\n\t\tfailOnError(ss.allowed.Set(allowed))\n\t\tflag.Var(ss, name, usage+fmt.Sprintf(` (allowed values: \"all\" or any of %s)`, allowed))\n\t}\n\tss.Set(def)\n\treturn ss\n}\n\nfunc (ss stringSet) Len() int {\n\treturn len(ss.s)\n}\n\nfunc (ss stringSet) String() string {\n\treturn strings.Join(ss.s, \",\")\n}\n\nfunc (ss *stringSet) Set(s string) error {\n\tif ss.allowAll && s == \"all\" {\n\t\tss.s = nil\n\t\tss.all = true\n\t\treturn nil\n\t}\n\tss.s = ss.s[:0]\n\tfor _, s := range strings.Split(s, \",\") {\n\t\tif s := strings.TrimSpace(s); s != \"\" {\n\t\t\tif ss.allowed != nil && !ss.allowed.contains(s) {\n\t\t\t\treturn fmt.Errorf(\"unsupported value %q; must be one of %s\", s, ss.allowed)\n\t\t\t}\n\t\t\tss.add(s)\n\t\t}\n\t}\n\tss.compact()\n\treturn nil\n}\n\nfunc (ss *stringSet) add(s string) {\n\tss.s = append(ss.s, s)\n\tss.dirty = true\n}\n\nfunc (ss *stringSet) values() []string {\n\tss.compact()\n\treturn ss.s\n}\n\nfunc (ss *stringSet) contains(s string) bool {\n\tif ss.all {\n\t\treturn true\n\t}\n\tfor _, v := range ss.s {\n\t\tif v == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (ss *stringSet) compact() {\n\tif !ss.dirty {\n\t\treturn\n\t}\n\ta := ss.s\n\tsort.Strings(a)\n\tk := 0\n\tfor i := 1; i < len(a); i++ {\n\t\tif a[k] != a[i] {\n\t\t\ta[k+1] = a[i]\n\t\t\tk++\n\t\t}\n\t}\n\tss.s = a[:k+1]\n\tss.dirty = false\n}\n\nfunc skipLang(l string) bool {\n\tif include.Len() > 0 {\n\t\treturn !include.contains(l)\n\t}\n\treturn exclude.contains(l)\n}\n\n// altInclude returns a list of alternatives (for the LDML alt attribute)\n// in order of preference.  An empty string in this list indicates the\n// default entry.\nfunc altInclude() []string {\n\tl := []string{}\n\tif *short {\n\t\tl = append(l, \"short\")\n\t}\n\tl = append(l, \"\")\n\t// TODO: handle draft using cldr.SetDraftLevel\n\tif *draft {\n\t\tl = append(l, \"proposed\")\n\t}\n\treturn l\n}\n\nfunc failOnError(e error) {\n\tif e != nil {\n\t\tlog.Panic(e)\n\t}\n}\n\nfunc openArchive() *zip.Reader {\n\tf := gen.OpenCLDRCoreZip()\n\tbuffer, err := ioutil.ReadAll(f)\n\tf.Close()\n\tfailOnError(err)\n\tarchive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))\n\tfailOnError(err)\n\treturn archive\n}\n\n// parseUCA parses a Default Unicode Collation Element Table of the format\n// specified in http://www.unicode.org/reports/tr10/#File_Format.\n// It returns the variable top.\nfunc parseUCA(builder *build.Builder) {\n\tvar r io.ReadCloser\n\tvar err error\n\tfor _, f := range openArchive().File {\n\t\tif strings.HasSuffix(f.Name, \"allkeys_CLDR.txt\") {\n\t\t\tr, err = f.Open()\n\t\t}\n\t}\n\tif r == nil {\n\t\tlog.Fatal(\"File allkeys_CLDR.txt not found in archive.\")\n\t}\n\tfailOnError(err)\n\tdefer r.Close()\n\tscanner := bufio.NewScanner(r)\n\tcolelem := regexp.MustCompile(`\\[([.*])([0-9A-F.]+)\\]`)\n\tfor i := 1; scanner.Scan(); i++ {\n\t\tline := scanner.Text()\n\t\tif len(line) == 0 || line[0] == '#' {\n\t\t\tcontinue\n\t\t}\n\t\tif line[0] == '@' {\n\t\t\t// parse properties\n\t\t\tswitch {\n\t\t\tcase strings.HasPrefix(line[1:], \"version \"):\n\t\t\t\ta := strings.Split(line[1:], \" \")\n\t\t\t\tif a[1] != gen.UnicodeVersion() {\n\t\t\t\t\tlog.Fatalf(\"incompatible version %s; want %s\", a[1], gen.UnicodeVersion())\n\t\t\t\t}\n\t\t\tcase strings.HasPrefix(line[1:], \"backwards \"):\n\t\t\t\tlog.Fatalf(\"%d: unsupported option backwards\", i)\n\t\t\tdefault:\n\t\t\t\tlog.Printf(\"%d: unknown option %s\", i, line[1:])\n\t\t\t}\n\t\t} else {\n\t\t\t// parse entries\n\t\t\tpart := strings.Split(line, \" ; \")\n\t\t\tif len(part) != 2 {\n\t\t\t\tlog.Fatalf(\"%d: production rule without ';': %v\", i, line)\n\t\t\t}\n\t\t\tlhs := []rune{}\n\t\t\tfor _, v := range strings.Split(part[0], \" \") {\n\t\t\t\tif v == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tlhs = append(lhs, rune(convHex(i, v)))\n\t\t\t}\n\t\t\tvar n int\n\t\t\tvar vars []int\n\t\t\trhs := [][]int{}\n\t\t\tfor i, m := range colelem.FindAllStringSubmatch(part[1], -1) {\n\t\t\t\tn += len(m[0])\n\t\t\t\telem := []int{}\n\t\t\t\tfor _, h := range strings.Split(m[2], \".\") {\n\t\t\t\t\telem = append(elem, convHex(i, h))\n\t\t\t\t}\n\t\t\t\tif m[1] == \"*\" {\n\t\t\t\t\tvars = append(vars, i)\n\t\t\t\t}\n\t\t\t\trhs = append(rhs, elem)\n\t\t\t}\n\t\t\tif len(part[1]) < n+3 || part[1][n+1] != '#' {\n\t\t\t\tlog.Fatalf(\"%d: expected comment; found %s\", i, part[1][n:])\n\t\t\t}\n\t\t\tif *test {\n\t\t\t\ttestInput.add(string(lhs))\n\t\t\t}\n\t\t\tfailOnError(builder.Add(lhs, rhs, vars))\n\t\t}\n\t}\n\tif scanner.Err() != nil {\n\t\tlog.Fatal(scanner.Err())\n\t}\n}\n\nfunc convHex(line int, s string) int {\n\tr, e := strconv.ParseInt(s, 16, 32)\n\tif e != nil {\n\t\tlog.Fatalf(\"%d: %v\", line, e)\n\t}\n\treturn int(r)\n}\n\nvar testInput = stringSet{}\n\nvar charRe = regexp.MustCompile(`&#x([0-9A-F]*);`)\nvar tagRe = regexp.MustCompile(`<([a-z_]*)  */>`)\n\nvar mainLocales = []string{}\n\n// charsets holds a list of exemplar characters per category.\ntype charSets map[string][]string\n\nfunc (p charSets) fprint(w io.Writer) {\n\tfmt.Fprintln(w, \"[exN]string{\")\n\tfor i, k := range []string{\"\", \"contractions\", \"punctuation\", \"auxiliary\", \"currencySymbol\", \"index\"} {\n\t\tif set := p[k]; len(set) != 0 {\n\t\t\tfmt.Fprintf(w, \"\\t\\t%d: %q,\\n\", i, strings.Join(set, \" \"))\n\t\t}\n\t}\n\tfmt.Fprintln(w, \"\\t},\")\n}\n\nvar localeChars = make(map[string]charSets)\n\nconst exemplarHeader = `\ntype exemplarType int\nconst (\n\texCharacters exemplarType = iota\n\texContractions\n\texPunctuation\n\texAuxiliary\n\texCurrency\n\texIndex\n\texN\n)\n`\n\nfunc printExemplarCharacters(w io.Writer) {\n\tfmt.Fprintln(w, exemplarHeader)\n\tfmt.Fprintln(w, \"var exemplarCharacters = map[string][exN]string{\")\n\tfor _, loc := range mainLocales {\n\t\tfmt.Fprintf(w, \"\\t%q: \", loc)\n\t\tlocaleChars[loc].fprint(w)\n\t}\n\tfmt.Fprintln(w, \"}\")\n}\n\nfunc decodeCLDR(d *cldr.Decoder) *cldr.CLDR {\n\tr := gen.OpenCLDRCoreZip()\n\tdata, err := d.DecodeZip(r)\n\tfailOnError(err)\n\treturn data\n}\n\n// parseMain parses XML files in the main directory of the CLDR core.zip file.\nfunc parseMain() {\n\td := &cldr.Decoder{}\n\td.SetDirFilter(\"main\")\n\td.SetSectionFilter(\"characters\")\n\tdata := decodeCLDR(d)\n\tfor _, loc := range data.Locales() {\n\t\tx := data.RawLDML(loc)\n\t\tif skipLang(x.Identity.Language.Type) {\n\t\t\tcontinue\n\t\t}\n\t\tif x.Characters != nil {\n\t\t\tx, _ = data.LDML(loc)\n\t\t\tloc = language.Make(loc).String()\n\t\t\tfor _, ec := range x.Characters.ExemplarCharacters {\n\t\t\t\tif ec.Draft != \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif _, ok := localeChars[loc]; !ok {\n\t\t\t\t\tmainLocales = append(mainLocales, loc)\n\t\t\t\t\tlocaleChars[loc] = make(charSets)\n\t\t\t\t}\n\t\t\t\tlocaleChars[loc][ec.Type] = parseCharacters(ec.Data())\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc parseCharacters(chars string) []string {\n\tparseSingle := func(s string) (r rune, tail string, escaped bool) {\n\t\tif s[0] == '\\\\' {\n\t\t\treturn rune(s[1]), s[2:], true\n\t\t}\n\t\tr, sz := utf8.DecodeRuneInString(s)\n\t\treturn r, s[sz:], false\n\t}\n\tchars = strings.TrimSpace(chars)\n\tif n := len(chars) - 1; chars[n] == ']' && chars[0] == '[' {\n\t\tchars = chars[1:n]\n\t}\n\tlist := []string{}\n\tvar r, last, end rune\n\tfor len(chars) > 0 {\n\t\tif chars[0] == '{' { // character sequence\n\t\t\tbuf := []rune{}\n\t\t\tfor chars = chars[1:]; len(chars) > 0; {\n\t\t\t\tr, chars, _ = parseSingle(chars)\n\t\t\t\tif r == '}' {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif r == ' ' {\n\t\t\t\t\tlog.Fatalf(\"space not supported in sequence %q\", chars)\n\t\t\t\t}\n\t\t\t\tbuf = append(buf, r)\n\t\t\t}\n\t\t\tlist = append(list, string(buf))\n\t\t\tlast = 0\n\t\t} else { // single character\n\t\t\tescaped := false\n\t\t\tr, chars, escaped = parseSingle(chars)\n\t\t\tif r != ' ' {\n\t\t\t\tif r == '-' && !escaped {\n\t\t\t\t\tif last == 0 {\n\t\t\t\t\t\tlog.Fatal(\"'-' should be preceded by a character\")\n\t\t\t\t\t}\n\t\t\t\t\tend, chars, _ = parseSingle(chars)\n\t\t\t\t\tfor ; last <= end; last++ {\n\t\t\t\t\t\tlist = append(list, string(last))\n\t\t\t\t\t}\n\t\t\t\t\tlast = 0\n\t\t\t\t} else {\n\t\t\t\t\tlist = append(list, string(r))\n\t\t\t\t\tlast = r\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn list\n}\n\nvar fileRe = regexp.MustCompile(`.*/collation/(.*)\\.xml`)\n\n// typeMap translates legacy type keys to their BCP47 equivalent.\nvar typeMap = map[string]string{\n\t\"phonebook\":   \"phonebk\",\n\t\"traditional\": \"trad\",\n}\n\n// parseCollation parses XML files in the collation directory of the CLDR core.zip file.\nfunc parseCollation(b *build.Builder) {\n\td := &cldr.Decoder{}\n\td.SetDirFilter(\"collation\")\n\tdata := decodeCLDR(d)\n\tfor _, loc := range data.Locales() {\n\t\tx, err := data.LDML(loc)\n\t\tfailOnError(err)\n\t\tif skipLang(x.Identity.Language.Type) {\n\t\t\tcontinue\n\t\t}\n\t\tcs := x.Collations.Collation\n\t\tsl := cldr.MakeSlice(&cs)\n\t\tif len(types.s) == 0 {\n\t\t\tsl.SelectAnyOf(\"type\", x.Collations.Default())\n\t\t} else if !types.all {\n\t\t\tsl.SelectAnyOf(\"type\", types.s...)\n\t\t}\n\t\tsl.SelectOnePerGroup(\"alt\", altInclude())\n\n\t\tfor _, c := range cs {\n\t\t\tid, err := language.Parse(loc)\n\t\t\tif err != nil {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"invalid locale: %q\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Support both old- and new-style defaults.\n\t\t\td := c.Type\n\t\t\tif x.Collations.DefaultCollation == nil {\n\t\t\t\td = x.Collations.Default()\n\t\t\t} else {\n\t\t\t\td = x.Collations.DefaultCollation.Data()\n\t\t\t}\n\t\t\t// We assume tables are being built either for search or collation,\n\t\t\t// but not both. For search the default is always \"search\".\n\t\t\tif d != c.Type && c.Type != \"search\" {\n\t\t\t\ttyp := c.Type\n\t\t\t\tif len(c.Type) > 8 {\n\t\t\t\t\ttyp = typeMap[c.Type]\n\t\t\t\t}\n\t\t\t\tid, err = id.SetTypeForKey(\"co\", typ)\n\t\t\t\tfailOnError(err)\n\t\t\t}\n\t\t\tt := b.Tailoring(id)\n\t\t\tc.Process(processor{t})\n\t\t}\n\t}\n}\n\ntype processor struct {\n\tt *build.Tailoring\n}\n\nfunc (p processor) Reset(anchor string, before int) (err error) {\n\tif before != 0 {\n\t\terr = p.t.SetAnchorBefore(anchor)\n\t} else {\n\t\terr = p.t.SetAnchor(anchor)\n\t}\n\tfailOnError(err)\n\treturn nil\n}\n\nfunc (p processor) Insert(level int, str, context, extend string) error {\n\tstr = context + str\n\tif *test {\n\t\ttestInput.add(str)\n\t}\n\t// TODO: mimic bug in old maketables: remove.\n\terr := p.t.Insert(colltab.Level(level-1), str, context+extend)\n\tfailOnError(err)\n\treturn nil\n}\n\nfunc (p processor) Index(id string) {\n}\n\nfunc testCollator(c *collate.Collator) {\n\tc0 := collate.New(language.Und)\n\n\t// iterator over all characters for all locales and check\n\t// whether Key is equal.\n\tbuf := collate.Buffer{}\n\n\t// Add all common and not too uncommon runes to the test set.\n\tfor i := rune(0); i < 0x30000; i++ {\n\t\ttestInput.add(string(i))\n\t}\n\tfor i := rune(0xE0000); i < 0xF0000; i++ {\n\t\ttestInput.add(string(i))\n\t}\n\tfor _, str := range testInput.values() {\n\t\tk0 := c0.KeyFromString(&buf, str)\n\t\tk := c.KeyFromString(&buf, str)\n\t\tif !bytes.Equal(k0, k) {\n\t\t\tfailOnError(fmt.Errorf(\"test:%U: keys differ (%x vs %x)\", []rune(str), k0, k))\n\t\t}\n\t\tbuf.Reset()\n\t}\n\tfmt.Println(\"PASS\")\n}\n\nfunc main() {\n\tgen.Init()\n\tb := build.NewBuilder()\n\tparseUCA(b)\n\tif tables.contains(\"chars\") {\n\t\tparseMain()\n\t}\n\tparseCollation(b)\n\n\tc, err := b.Build()\n\tfailOnError(err)\n\n\tif *test {\n\t\ttestCollator(collate.NewFromTable(c))\n\t} else {\n\t\tw := &bytes.Buffer{}\n\n\t\tgen.WriteUnicodeVersion(w)\n\t\tgen.WriteCLDRVersion(w)\n\n\t\tif tables.contains(\"collate\") {\n\t\t\t_, err = b.Print(w)\n\t\t\tfailOnError(err)\n\t\t}\n\t\tif tables.contains(\"chars\") {\n\t\t\tprintExemplarCharacters(w)\n\t\t}\n\t\tgen.WriteGoFile(\"tables.go\", *pkg, w.Bytes())\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/option.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage collate\n\nimport (\n\t\"sort\"\n\n\t\"golang.org/x/text/internal/colltab\"\n\t\"golang.org/x/text/language\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// newCollator creates a new collator with default options configured.\nfunc newCollator(t colltab.Weighter) *Collator {\n\t// Initialize a collator with default options.\n\tc := &Collator{\n\t\toptions: options{\n\t\t\tignore: [colltab.NumLevels]bool{\n\t\t\t\tcolltab.Quaternary: true,\n\t\t\t\tcolltab.Identity:   true,\n\t\t\t},\n\t\t\tf: norm.NFD,\n\t\t\tt: t,\n\t\t},\n\t}\n\n\t// TODO: store vt in tags or remove.\n\tc.variableTop = t.Top()\n\n\treturn c\n}\n\n// An Option is used to change the behavior of a Collator. Options override the\n// settings passed through the locale identifier.\ntype Option struct {\n\tpriority int\n\tf        func(o *options)\n}\n\ntype prioritizedOptions []Option\n\nfunc (p prioritizedOptions) Len() int {\n\treturn len(p)\n}\n\nfunc (p prioritizedOptions) Swap(i, j int) {\n\tp[i], p[j] = p[j], p[i]\n}\n\nfunc (p prioritizedOptions) Less(i, j int) bool {\n\treturn p[i].priority < p[j].priority\n}\n\ntype options struct {\n\t// ignore specifies which levels to ignore.\n\tignore [colltab.NumLevels]bool\n\n\t// caseLevel is true if there is an additional level of case matching\n\t// between the secondary and tertiary levels.\n\tcaseLevel bool\n\n\t// backwards specifies the order of sorting at the secondary level.\n\t// This option exists predominantly to support reverse sorting of accents in French.\n\tbackwards bool\n\n\t// numeric specifies whether any sequence of decimal digits (category is Nd)\n\t// is sorted at a primary level with its numeric value.\n\t// For example, \"A-21\" < \"A-123\".\n\t// This option is set by wrapping the main Weighter with NewNumericWeighter.\n\tnumeric bool\n\n\t// alternate specifies an alternative handling of variables.\n\talternate alternateHandling\n\n\t// variableTop is the largest primary value that is considered to be\n\t// variable.\n\tvariableTop uint32\n\n\tt colltab.Weighter\n\n\tf norm.Form\n}\n\nfunc (o *options) setOptions(opts []Option) {\n\tsort.Sort(prioritizedOptions(opts))\n\tfor _, x := range opts {\n\t\tx.f(o)\n\t}\n}\n\n// OptionsFromTag extracts the BCP47 collation options from the tag and\n// configures a collator accordingly. These options are set before any other\n// option.\nfunc OptionsFromTag(t language.Tag) Option {\n\treturn Option{0, func(o *options) {\n\t\to.setFromTag(t)\n\t}}\n}\n\nfunc (o *options) setFromTag(t language.Tag) {\n\to.caseLevel = ldmlBool(t, o.caseLevel, \"kc\")\n\to.backwards = ldmlBool(t, o.backwards, \"kb\")\n\to.numeric = ldmlBool(t, o.numeric, \"kn\")\n\n\t// Extract settings from the BCP47 u extension.\n\tswitch t.TypeForKey(\"ks\") { // strength\n\tcase \"level1\":\n\t\to.ignore[colltab.Secondary] = true\n\t\to.ignore[colltab.Tertiary] = true\n\tcase \"level2\":\n\t\to.ignore[colltab.Tertiary] = true\n\tcase \"level3\", \"\":\n\t\t// The default.\n\tcase \"level4\":\n\t\to.ignore[colltab.Quaternary] = false\n\tcase \"identic\":\n\t\to.ignore[colltab.Quaternary] = false\n\t\to.ignore[colltab.Identity] = false\n\t}\n\n\tswitch t.TypeForKey(\"ka\") {\n\tcase \"shifted\":\n\t\to.alternate = altShifted\n\t// The following two types are not official BCP47, but we support them to\n\t// give access to this otherwise hidden functionality. The name blanked is\n\t// derived from the LDML name blanked and posix reflects the main use of\n\t// the shift-trimmed option.\n\tcase \"blanked\":\n\t\to.alternate = altBlanked\n\tcase \"posix\":\n\t\to.alternate = altShiftTrimmed\n\t}\n\n\t// TODO: caseFirst (\"kf\"), reorder (\"kr\"), and maybe variableTop (\"vt\").\n\n\t// Not used:\n\t// - normalization (\"kk\", not necessary for this implementation)\n\t// - hiraganaQuatenary (\"kh\", obsolete)\n}\n\nfunc ldmlBool(t language.Tag, old bool, key string) bool {\n\tswitch t.TypeForKey(key) {\n\tcase \"true\":\n\t\treturn true\n\tcase \"false\":\n\t\treturn false\n\tdefault:\n\t\treturn old\n\t}\n}\n\nvar (\n\t// IgnoreCase sets case-insensitive comparison.\n\tIgnoreCase Option = ignoreCase\n\tignoreCase        = Option{3, ignoreCaseF}\n\n\t// IgnoreDiacritics causes diacritical marks to be ignored. (\"o\" == \"ö\").\n\tIgnoreDiacritics Option = ignoreDiacritics\n\tignoreDiacritics        = Option{3, ignoreDiacriticsF}\n\n\t// IgnoreWidth causes full-width characters to match their half-width\n\t// equivalents.\n\tIgnoreWidth Option = ignoreWidth\n\tignoreWidth        = Option{2, ignoreWidthF}\n\n\t// Loose sets the collator to ignore diacritics, case and weight.\n\tLoose Option = loose\n\tloose        = Option{4, looseF}\n\n\t// Force ordering if strings are equivalent but not equal.\n\tForce Option = force\n\tforce        = Option{5, forceF}\n\n\t// Numeric specifies that numbers should sort numerically (\"2\" < \"12\").\n\tNumeric Option = numeric\n\tnumeric        = Option{5, numericF}\n)\n\nfunc ignoreWidthF(o *options) {\n\to.ignore[colltab.Tertiary] = true\n\to.caseLevel = true\n}\n\nfunc ignoreDiacriticsF(o *options) {\n\to.ignore[colltab.Secondary] = true\n}\n\nfunc ignoreCaseF(o *options) {\n\to.ignore[colltab.Tertiary] = true\n\to.caseLevel = false\n}\n\nfunc looseF(o *options) {\n\tignoreWidthF(o)\n\tignoreDiacriticsF(o)\n\tignoreCaseF(o)\n}\n\nfunc forceF(o *options) {\n\to.ignore[colltab.Identity] = false\n}\n\nfunc numericF(o *options) { o.numeric = true }\n\n// Reorder overrides the pre-defined ordering of scripts and character sets.\nfunc Reorder(s ...string) Option {\n\t// TODO: need fractional weights to implement this.\n\tpanic(\"TODO: implement\")\n}\n\n// TODO: consider making these public again. These options cannot be fully\n// specified in BCP47, so an API interface seems warranted. Still a higher-level\n// interface would be nice (e.g. a POSIX option for enabling altShiftTrimmed)\n\n// alternateHandling identifies the various ways in which variables are handled.\n// A rune with a primary weight lower than the variable top is considered a\n// variable.\n// See http://www.unicode.org/reports/tr10/#Variable_Weighting for details.\ntype alternateHandling int\n\nconst (\n\t// altNonIgnorable turns off special handling of variables.\n\taltNonIgnorable alternateHandling = iota\n\n\t// altBlanked sets variables and all subsequent primary ignorables to be\n\t// ignorable at all levels. This is identical to removing all variables\n\t// and subsequent primary ignorables from the input.\n\taltBlanked\n\n\t// altShifted sets variables to be ignorable for levels one through three and\n\t// adds a fourth level based on the values of the ignored levels.\n\taltShifted\n\n\t// altShiftTrimmed is a slight variant of altShifted that is used to\n\t// emulate POSIX.\n\taltShiftTrimmed\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/sort.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage collate\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n)\n\nconst (\n\tmaxSortBuffer  = 40960\n\tmaxSortEntries = 4096\n)\n\ntype swapper interface {\n\tSwap(i, j int)\n}\n\ntype sorter struct {\n\tbuf  *Buffer\n\tkeys [][]byte\n\tsrc  swapper\n}\n\nfunc (s *sorter) init(n int) {\n\tif s.buf == nil {\n\t\ts.buf = &Buffer{}\n\t\ts.buf.init()\n\t}\n\tif cap(s.keys) < n {\n\t\ts.keys = make([][]byte, n)\n\t}\n\ts.keys = s.keys[0:n]\n}\n\nfunc (s *sorter) sort(src swapper) {\n\ts.src = src\n\tsort.Sort(s)\n}\n\nfunc (s sorter) Len() int {\n\treturn len(s.keys)\n}\n\nfunc (s sorter) Less(i, j int) bool {\n\treturn bytes.Compare(s.keys[i], s.keys[j]) == -1\n}\n\nfunc (s sorter) Swap(i, j int) {\n\ts.keys[i], s.keys[j] = s.keys[j], s.keys[i]\n\ts.src.Swap(i, j)\n}\n\n// A Lister can be sorted by Collator's Sort method.\ntype Lister interface {\n\tLen() int\n\tSwap(i, j int)\n\t// Bytes returns the bytes of the text at index i.\n\tBytes(i int) []byte\n}\n\n// Sort uses sort.Sort to sort the strings represented by x using the rules of c.\nfunc (c *Collator) Sort(x Lister) {\n\tn := x.Len()\n\tc.sorter.init(n)\n\tfor i := 0; i < n; i++ {\n\t\tc.sorter.keys[i] = c.Key(c.sorter.buf, x.Bytes(i))\n\t}\n\tc.sorter.sort(x)\n}\n\n// SortStrings uses sort.Sort to sort the strings in x using the rules of c.\nfunc (c *Collator) SortStrings(x []string) {\n\tc.sorter.init(len(x))\n\tfor i, s := range x {\n\t\tc.sorter.keys[i] = c.KeyFromString(c.sorter.buf, s)\n\t}\n\tc.sorter.sort(sort.StringSlice(x))\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/collate/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage collate\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"6.2.0\"\n\n// CLDRVersion is the CLDR version from which the tables in this package are derived.\nconst CLDRVersion = \"23\"\n\nvar availableLocales = \"und,aa,af,ar,as,az,be,bg,bn,bs,bs-Cyrl,ca,cs,cy,da,de-u-co-phonebk,de,dz,ee,el,en,en-US,en-US-u-va-posix,eo,es,et,fa,fa-AF,fi,fi-u-co-standard,fil,fo,fr,fr-CA,gu,ha,haw,he,hi,hr,hu,hy,ig,is,ja,kk,kl,km,kn,ko,kok,ln-u-co-phonetic,ln,lt,lv,mk,ml,mr,mt,my,nb,nn,nso,om,or,pa,pl,ps,ro,ru,se,si,sk,sl,sq,sr,sr-Latn,ssy,sv,sv-u-co-standard,ta,te,th,tn,to,tr,uk,ur,vi,wae,yo,zh,zh-u-co-stroke,zh-Hant-u-co-pinyin,zh-Hant\"\n\nconst varTop = 0x30e\n\nvar locales = [...]tableIndex{\n\t{ // und\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // aa\n\t\tlookupOffset: 0x1c,\n\t\tvaluesOffset: 0x1b4,\n\t},\n\t{ // af\n\t\tlookupOffset: 0x1d,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ar\n\t\tlookupOffset: 0x1f,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // as\n\t\tlookupOffset: 0x21,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // az\n\t\tlookupOffset: 0x27,\n\t\tvaluesOffset: 0x1d7,\n\t},\n\t{ // be\n\t\tlookupOffset: 0x28,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // bg\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // bn\n\t\tlookupOffset: 0x2a,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // bs\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // bs-Cyrl\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ca\n\t\tlookupOffset: 0x2b,\n\t\tvaluesOffset: 0x1ec,\n\t},\n\t{ // cs\n\t\tlookupOffset: 0x2d,\n\t\tvaluesOffset: 0x1f0,\n\t},\n\t{ // cy\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x1f5,\n\t},\n\t{ // da\n\t\tlookupOffset: 0x30,\n\t\tvaluesOffset: 0x1f7,\n\t},\n\t{ // de-u-co-phonebk\n\t\tlookupOffset: 0x32,\n\t\tvaluesOffset: 0x201,\n\t},\n\t{ // de\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // dz\n\t\tlookupOffset: 0x34,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ee\n\t\tlookupOffset: 0x3a,\n\t\tvaluesOffset: 0x20a,\n\t},\n\t{ // el\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // en\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // en-US\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // en-US-u-va-posix\n\t\tlookupOffset: 0x41,\n\t\tvaluesOffset: 0x219,\n\t},\n\t{ // eo\n\t\tlookupOffset: 0x42,\n\t\tvaluesOffset: 0x23b,\n\t},\n\t{ // es\n\t\tlookupOffset: 0x43,\n\t\tvaluesOffset: 0x23f,\n\t},\n\t{ // et\n\t\tlookupOffset: 0x49,\n\t\tvaluesOffset: 0x242,\n\t},\n\t{ // fa\n\t\tlookupOffset: 0x4b,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // fa-AF\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // fi\n\t\tlookupOffset: 0x4e,\n\t\tvaluesOffset: 0x25a,\n\t},\n\t{ // fi-u-co-standard\n\t\tlookupOffset: 0x54,\n\t\tvaluesOffset: 0x265,\n\t},\n\t{ // fil\n\t\tlookupOffset: 0x43,\n\t\tvaluesOffset: 0x272,\n\t},\n\t{ // fo\n\t\tlookupOffset: 0x30,\n\t\tvaluesOffset: 0x1f7,\n\t},\n\t{ // fr\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // fr-CA\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // gu\n\t\tlookupOffset: 0x56,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ha\n\t\tlookupOffset: 0x57,\n\t\tvaluesOffset: 0x275,\n\t},\n\t{ // haw\n\t\tlookupOffset: 0x5e,\n\t\tvaluesOffset: 0x27a,\n\t},\n\t{ // he\n\t\tlookupOffset: 0x5f,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // hi\n\t\tlookupOffset: 0x61,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // hr\n\t\tlookupOffset: 0x63,\n\t\tvaluesOffset: 0x291,\n\t},\n\t{ // hu\n\t\tlookupOffset: 0x65,\n\t\tvaluesOffset: 0x297,\n\t},\n\t{ // hy\n\t\tlookupOffset: 0x66,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ig\n\t\tlookupOffset: 0x68,\n\t\tvaluesOffset: 0x29f,\n\t},\n\t{ // is\n\t\tlookupOffset: 0x6a,\n\t\tvaluesOffset: 0x2a3,\n\t},\n\t{ // ja\n\t\tlookupOffset: 0x76,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // kk\n\t\tlookupOffset: 0x77,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // kl\n\t\tlookupOffset: 0x78,\n\t\tvaluesOffset: 0x414,\n\t},\n\t{ // km\n\t\tlookupOffset: 0x7a,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // kn\n\t\tlookupOffset: 0x7c,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ko\n\t\tlookupOffset: 0x88,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // kok\n\t\tlookupOffset: 0x8a,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ln-u-co-phonetic\n\t\tlookupOffset: 0x8b,\n\t\tvaluesOffset: 0x570,\n\t},\n\t{ // ln\n\t\tlookupOffset: 0x8b,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // lt\n\t\tlookupOffset: 0x91,\n\t\tvaluesOffset: 0x574,\n\t},\n\t{ // lv\n\t\tlookupOffset: 0x93,\n\t\tvaluesOffset: 0x582,\n\t},\n\t{ // mk\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ml\n\t\tlookupOffset: 0x95,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // mr\n\t\tlookupOffset: 0x97,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // mt\n\t\tlookupOffset: 0x9a,\n\t\tvaluesOffset: 0x58a,\n\t},\n\t{ // my\n\t\tlookupOffset: 0x9c,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // nb\n\t\tlookupOffset: 0x30,\n\t\tvaluesOffset: 0x593,\n\t},\n\t{ // nn\n\t\tlookupOffset: 0x30,\n\t\tvaluesOffset: 0x593,\n\t},\n\t{ // nso\n\t\tlookupOffset: 0x9e,\n\t\tvaluesOffset: 0x595,\n\t},\n\t{ // om\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x59b,\n\t},\n\t{ // or\n\t\tlookupOffset: 0xa0,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // pa\n\t\tlookupOffset: 0xa2,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // pl\n\t\tlookupOffset: 0xa4,\n\t\tvaluesOffset: 0x5a1,\n\t},\n\t{ // ps\n\t\tlookupOffset: 0xa7,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ro\n\t\tlookupOffset: 0xa9,\n\t\tvaluesOffset: 0x5b3,\n\t},\n\t{ // ru\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // se\n\t\tlookupOffset: 0xab,\n\t\tvaluesOffset: 0x5ba,\n\t},\n\t{ // si\n\t\tlookupOffset: 0xad,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // sk\n\t\tlookupOffset: 0xaf,\n\t\tvaluesOffset: 0x5c7,\n\t},\n\t{ // sl\n\t\tlookupOffset: 0xb0,\n\t\tvaluesOffset: 0x5cc,\n\t},\n\t{ // sq\n\t\tlookupOffset: 0xb2,\n\t\tvaluesOffset: 0x5cf,\n\t},\n\t{ // sr\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // sr-Latn\n\t\tlookupOffset: 0x15,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ssy\n\t\tlookupOffset: 0x1c,\n\t\tvaluesOffset: 0x1b4,\n\t},\n\t{ // sv\n\t\tlookupOffset: 0xb4,\n\t\tvaluesOffset: 0x5d3,\n\t},\n\t{ // sv-u-co-standard\n\t\tlookupOffset: 0xb6,\n\t\tvaluesOffset: 0x5d9,\n\t},\n\t{ // ta\n\t\tlookupOffset: 0xb8,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // te\n\t\tlookupOffset: 0xba,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // th\n\t\tlookupOffset: 0xbc,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // tn\n\t\tlookupOffset: 0x9e,\n\t\tvaluesOffset: 0x595,\n\t},\n\t{ // to\n\t\tlookupOffset: 0xbe,\n\t\tvaluesOffset: 0x5e1,\n\t},\n\t{ // tr\n\t\tlookupOffset: 0xc4,\n\t\tvaluesOffset: 0x5ed,\n\t},\n\t{ // uk\n\t\tlookupOffset: 0xc5,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // ur\n\t\tlookupOffset: 0xc7,\n\t\tvaluesOffset: 0x0,\n\t},\n\t{ // vi\n\t\tlookupOffset: 0xc9,\n\t\tvaluesOffset: 0x5fc,\n\t},\n\t{ // wae\n\t\tlookupOffset: 0xca,\n\t\tvaluesOffset: 0x610,\n\t},\n\t{ // yo\n\t\tlookupOffset: 0xcc,\n\t\tvaluesOffset: 0x613,\n\t},\n\t{ // zh\n\t\tlookupOffset: 0xe6,\n\t\tvaluesOffset: 0x618,\n\t},\n\t{ // zh-u-co-stroke\n\t\tlookupOffset: 0xff,\n\t\tvaluesOffset: 0x618,\n\t},\n\t{ // zh-Hant-u-co-pinyin\n\t\tlookupOffset: 0xe6,\n\t\tvaluesOffset: 0x618,\n\t},\n\t{ // zh-Hant\n\t\tlookupOffset: 0xff,\n\t\tvaluesOffset: 0x618,\n\t},\n}\n\n// mainExpandElem: 46864 entries, 187456 bytes\nvar mainExpandElem = [46864]uint32{\n\t// Block 0, offset 0x0\n\t0x00000002, 0xAE604702, 0xAE603202, 0x00000002, 0xA000A51A, 0xA000BA1A,\n\t0x00000002, 0xA000A91A, 0xA000BA1A, 0x00000002, 0xA000AD1A, 0xA000BA1A,\n\t0x00000002, 0xA000B21A, 0xA000BA1A, 0x00000002, 0xA000B61A, 0xA000BA1A,\n\t0x00000002, 0xA000BA1A, 0xA000D11A, 0x00000004, 0x0003F484, 0x0029CE84,\n\t0x0029CC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029CE84,\n\t0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029D084, 0x0003F69F,\n\t0x00000004, 0x0003F484, 0x0029CE84, 0x0029D284, 0x0003F69F, 0x00000004,\n\t0x0003F484, 0x0029CE84, 0x0029D484, 0x0003F69F, 0x00000004, 0x0003F484,\n\t0x0029CE84, 0x0029D684, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84,\n\t0x0029D884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DA84,\n\t0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84,\n\t// Block 1, offset 0x40\n\t0x0029DC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DE84,\n\t0x0003F69F, 0x00000004, 0x0003F484, 0x0029D084, 0x0029CC84, 0x0003F69F,\n\t0x00000004, 0x0003F484, 0x0062AC84, 0x0063A884, 0x0003F69F, 0x00000004,\n\t0x0003F484, 0x0062B084, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484,\n\t0x0062B284, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B684,\n\t0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B884, 0x0063A884,\n\t0x0003F69F, 0x00000004, 0x0003F484, 0x0062BA84, 0x0063A884, 0x0003F69F,\n\t0x00000004, 0x0003F484, 0x0062BE84, 0x0063A884, 0x0003F69F, 0x00000004,\n\t0x0003F484, 0x0062C284, 0x0063A884, 0x0003F69F, 0x00000007, 0x0003F484,\n\t0x0062C284, 0x0063B884, 0x0062C484, 0x0063B084, 0x00646A84, 0x0003F69F,\n\t0x00000006, 0x0003F484, 0x0062C284, 0x0063B884,\n\t// Block 2, offset 0x80\n\t0x0062D084, 0x0063C284, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484,\n\t0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484, 0x0063C284,\n\t0x0003F69F, 0x00000004, 0x0003F484, 0x0062C884, 0x0063A884, 0x0003F69F,\n\t0x00000004, 0x0003F484, 0x0062CA84, 0x0063A884, 0x0003F69F, 0x00000004,\n\t0x0003F484, 0x0062CC84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484,\n\t0x0062CE84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062D084,\n\t0x0063A884, 0x0003F69F, 0x00000004, 0x00050E84, 0x00050E84, 0x00050E84,\n\t0x00050E9F, 0x00000002, 0x40062C20, 0xAE603202, 0x00000002, 0x40062C20,\n\t0xAE603502, 0x00000002, 0x40062C20, 0xAE604502, 0x00000002, 0x40063620,\n\t0xAE603202, 0x00000002, 0x40063620, 0xAE603502, 0x00000002, 0x40063620,\n\t0xAE604502, 0x00000002, 0x40063820, 0xAE603202,\n\t// Block 3, offset 0xc0\n\t0x00000002, 0x40063820, 0xAE603502, 0x00000002, 0x40063820, 0xAE604502,\n\t0x00000002, 0x40084420, 0xA0105402, 0x00000002, 0x40084620, 0xA0105402,\n\t0x00000002, 0x40084C20, 0xA0105402, 0x00000002, 0x4008B820, 0xA0105402,\n\t0x00000002, 0x4008BC20, 0xA0105402, 0x00000002, 0x4008C020, 0xA0105402,\n\t0x00000002, 0x40091E20, 0xA0105402, 0x00000002, 0x40092620, 0xA0105402,\n\t0x00000002, 0x40092A20, 0xA0105402, 0x00000002, 0x40094020, 0xA0105402,\n\t0x00000002, 0x40094220, 0xA0105402, 0x00000002, 0x40094420, 0xA0105402,\n\t0x00000002, 0x40097820, 0xA0105402, 0x00000002, 0x40097A20, 0xA0105402,\n\t0x00000004, 0x00098484, 0x00098484, 0x00098484, 0x0009849F, 0x00000002,\n\t0x40099E20, 0xA0105402, 0x00000002, 0x4009AA20, 0xA0105402, 0x00000002,\n\t0x4009AC20, 0xA0105402, 0x00000002, 0x4009B020,\n\t// Block 4, offset 0x100\n\t0xA0105402, 0x00000002, 0x4009B820, 0xA0105402, 0x00000002, 0x4009DE20,\n\t0xA0105402, 0x00000002, 0x4009E220, 0xA0105402, 0x00000002, 0x4009E420,\n\t0xA0105402, 0x00000002, 0x4009F420, 0xA0105402, 0x00000002, 0x4009F620,\n\t0xA0105402, 0x00000002, 0x4009F820, 0xA0105402, 0x00000002, 0x4009FA20,\n\t0xA0105402, 0x00000002, 0x4009FC20, 0xA0105402, 0x00000002, 0x4009FE20,\n\t0xA0105402, 0x00000002, 0x400A0020, 0xA0105402, 0x00000002, 0x400A0220,\n\t0xA0105402, 0x00000002, 0x400A0820, 0xA0105402, 0x00000002, 0x400A0A20,\n\t0xA0105402, 0x00000002, 0x400A0C20, 0xA0105402, 0x00000002, 0x400A0E20,\n\t0xA0105402, 0x00000002, 0x400A1E20, 0xA0105402, 0x00000002, 0x400A2020,\n\t0xA0105402, 0x00000002, 0x400A4020, 0xA0105402, 0x00000002, 0x400A4C20,\n\t0xA0105402, 0x00000002, 0x400A4E20, 0xA0105402,\n\t// Block 5, offset 0x140\n\t0x00000002, 0x400A5220, 0xA0105402, 0x00000002, 0x400A5820, 0xA0105402,\n\t0x00000002, 0x400A5A20, 0xA0105402, 0x00000002, 0x400A5C20, 0xA0105402,\n\t0x00000002, 0x400A5E20, 0xA0105402, 0x00000002, 0x40164620, 0xA0105402,\n\t0x00000002, 0x4027CE20, 0xA0012802, 0x00000002, 0x4027D020, 0xA0012802,\n\t0x00000002, 0x4027D420, 0xA0812802, 0x00000002, 0x4027D820, 0xA0812802,\n\t0x00000002, 0x4029CC20, 0xA0013F02, 0x00000002, 0x4029CC20, 0xA0014002,\n\t0x00000002, 0x4029CC20, 0xA0014202, 0x00000002, 0x4029CC20, 0xA0014402,\n\t0x00000002, 0x4029CC20, 0xA0014502, 0x00000002, 0x4029CC20, 0xA0014602,\n\t0x00000002, 0x4029CC20, 0xA0014702, 0x00000002, 0x4029CC20, 0xA0014802,\n\t0x00000002, 0x4029CC20, 0xA0014902, 0x00000002, 0x4029CC20, 0xA0014A02,\n\t0x00000002, 0x4029CC20, 0xA0014B02, 0x00000002,\n\t// Block 6, offset 0x180\n\t0x4029CC20, 0xA0014B02, 0x00000002, 0x4029CC20, 0xA0014C02, 0x00000002,\n\t0x4029CC20, 0xA0014D02, 0x00000002, 0x4029CC20, 0xA0014E02, 0x00000002,\n\t0x4029CC20, 0xA0014F02, 0x00000002, 0x4029CC20, 0xA0015002, 0x00000002,\n\t0x4029CC20, 0xA0015102, 0x00000002, 0x4029CC20, 0xA0015202, 0x00000002,\n\t0x4029CC20, 0xA0015302, 0x00000002, 0x4029CC20, 0xA0015402, 0x00000002,\n\t0x4029CC20, 0xA0015502, 0x00000002, 0x4029CC20, 0xA0015602, 0x00000002,\n\t0x0029CC84, 0xA0015604, 0x00000002, 0x4029CC20, 0xA0015702, 0x00000002,\n\t0x4029CC20, 0xA0015802, 0x00000002, 0x4029CC20, 0xA0015902, 0x00000002,\n\t0x4029CC20, 0xA0015A02, 0x00000002, 0x4029CC20, 0xA0015B02, 0x00000002,\n\t0x4029CC20, 0xA0015C02, 0x00000002, 0x4029CC20, 0xA0015D02, 0x00000002,\n\t0x4029CC20, 0xA0015E02, 0x00000002, 0x4029CC20,\n\t// Block 7, offset 0x1c0\n\t0xA0015F02, 0x00000002, 0x4029CC20, 0xA0016002, 0x00000002, 0x4029CC20,\n\t0xA0016102, 0x00000002, 0x4029CC20, 0xA0016202, 0x00000002, 0x4029CC20,\n\t0xA0016302, 0x00000002, 0x4029CC20, 0xA0016402, 0x00000002, 0x4029CC20,\n\t0xA0016502, 0x00000002, 0x4029CC20, 0xA0016602, 0x00000002, 0x4029CC20,\n\t0xA0016802, 0x00000002, 0x4029CC20, 0xA0017202, 0x00000002, 0x4029CC20,\n\t0xA0017302, 0x00000002, 0x4029CC20, 0xA0017402, 0x00000003, 0x0029CC9E,\n\t0x0009589E, 0x0029D29E, 0x00000002, 0x4029CE20, 0xA0013F02, 0x00000002,\n\t0x4029CE20, 0xA0014002, 0x00000002, 0x4029CE20, 0xA0014102, 0x00000002,\n\t0x4029CE20, 0xA0014202, 0x00000002, 0x4029CE20, 0xA0014302, 0x00000002,\n\t0x4029CE20, 0xA0014402, 0x00000002, 0x4029CE20, 0xA0014502, 0x00000002,\n\t0x4029CE20, 0xA0014602, 0x00000002, 0x4029CE20,\n\t// Block 8, offset 0x200\n\t0xA0014702, 0x00000002, 0x4029CE20, 0xA0014802, 0x00000002, 0x4029CE20,\n\t0xA0014902, 0x00000002, 0x4029CE20, 0xA0014A02, 0x00000002, 0x4029CE20,\n\t0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014B02, 0x00000002, 0x4029CE20,\n\t0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014C02, 0x00000002, 0x4029CE20,\n\t0xA0014D02, 0x00000002, 0x4029CE20, 0xA0014E02, 0x00000002, 0x4029CE20,\n\t0xA0014F02, 0x00000002, 0x4029CE20, 0xA0015002, 0x00000002, 0x4029CE20,\n\t0xA0015102, 0x00000002, 0x4029CE20, 0xA0015102, 0x00000002, 0x4029CE20,\n\t0xA0015202, 0x00000002, 0x4029CE20, 0xA0015302, 0x00000002, 0x4029CE20,\n\t0xA0015402, 0x00000002, 0x4029CE20, 0xA0015502, 0x00000002, 0x4029CE20,\n\t0xA0015602, 0x00000002, 0x0029CE84, 0xA0015604, 0x00000002, 0x4029CE20,\n\t0xA0015702, 0x00000002, 0x4029CE20, 0xA0015802,\n\t// Block 9, offset 0x240\n\t0x00000002, 0x4029CE20, 0xA0015902, 0x00000002, 0x4029CE20, 0xA0015A02,\n\t0x00000002, 0x4029CE20, 0xA0015B02, 0x00000002, 0x4029CE20, 0xA0015C02,\n\t0x00000002, 0x4029CE20, 0xA0015D02, 0x00000002, 0x4029CE20, 0xA0015E02,\n\t0x00000002, 0x4029CE20, 0xA0015F02, 0x00000002, 0x4029CE20, 0xA0016002,\n\t0x00000002, 0x4029CE20, 0xA0016102, 0x00000002, 0x4029CE20, 0xA0016202,\n\t0x00000002, 0x4029CE20, 0xA0016302, 0x00000002, 0x4029CE20, 0xA0016402,\n\t0x00000002, 0x4029CE20, 0xA0016502, 0x00000002, 0x4029CE20, 0xA0016602,\n\t0x00000002, 0x4029CE20, 0xA0016702, 0x00000002, 0x4029CE20, 0xA0016802,\n\t0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016802,\n\t0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016A02,\n\t0x00000002, 0x4029CE20, 0xA0016B02, 0x00000002,\n\t// Block 10, offset 0x280\n\t0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,\n\t0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,\n\t0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,\n\t0x4029CE20, 0xA0016D02, 0x00000002, 0x4029CE20, 0xA0016E02, 0x00000002,\n\t0x4029CE20, 0xA0016F02, 0x00000002, 0x4029CE20, 0xA0017002, 0x00000002,\n\t0x4029CE20, 0xA0017102, 0x00000002, 0x4029CE20, 0xA0017202, 0x00000002,\n\t0x4029CE20, 0xA0017302, 0x00000002, 0x4029CE20, 0xA0017402, 0x00000002,\n\t0x4029CE20, 0xA0017502, 0x00000002, 0x4029CE20, 0xA0017602, 0x00000002,\n\t0x4029CE20, 0xA0017702, 0x00000004, 0x0029CE9E, 0x0009589E, 0x0029CE9E,\n\t0x0029CC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D09E, 0x00000003,\n\t0x0029CE9E, 0x0009589E, 0x0029D29E, 0x00000003,\n\t// Block 11, offset 0x2c0\n\t0x0029CE9E, 0x0009589E, 0x0029D49E, 0x00000003, 0x0029CE9E, 0x0009589E,\n\t0x0029D69E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D89E, 0x00000003,\n\t0x0029CE9E, 0x0009589E, 0x0029DA9E, 0x00000003, 0x0029CE9E, 0x0009589E,\n\t0x0029DC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029DE9E, 0x00000002,\n\t0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002,\n\t0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002,\n\t0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CE86, 0x00000002,\n\t0x0029CE86, 0x0029D086, 0x00000002, 0x0029CE86, 0x0029D286, 0x00000002,\n\t0x0029CE86, 0x0029D486, 0x00000002, 0x0029CE86, 0x0029D686, 0x00000002,\n\t0x0029CE86, 0x0029D886, 0x00000002, 0x0029CE86, 0x0029DA86, 0x00000002,\n\t0x0029CE86, 0x0029DC86, 0x00000002, 0x0029CE86,\n\t// Block 12, offset 0x300\n\t0x0029DE86, 0x00000002, 0x4029D020, 0xA0013F02, 0x00000002, 0x4029D020,\n\t0xA0014002, 0x00000002, 0x4029D020, 0xA0014102, 0x00000002, 0x4029D020,\n\t0xA0014202, 0x00000002, 0x4029D020, 0xA0014302, 0x00000002, 0x4029D020,\n\t0xA0014402, 0x00000002, 0x4029D020, 0xA0014502, 0x00000002, 0x4029D020,\n\t0xA0014602, 0x00000002, 0x4029D020, 0xA0014702, 0x00000002, 0x4029D020,\n\t0xA0014802, 0x00000002, 0x4029D020, 0xA0014902, 0x00000002, 0x4029D020,\n\t0xA0014A02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020,\n\t0xA0014B02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020,\n\t0xA0014C02, 0x00000002, 0x4029D020, 0xA0014D02, 0x00000002, 0x4029D020,\n\t0xA0014E02, 0x00000002, 0x4029D020, 0xA0014F02, 0x00000002, 0x4029D020,\n\t0xA0015002, 0x00000002, 0x4029D020, 0xA0015102,\n\t// Block 13, offset 0x340\n\t0x00000002, 0x4029D020, 0xA0015202, 0x00000002, 0x4029D020, 0xA0015302,\n\t0x00000002, 0x4029D020, 0xA0015402, 0x00000002, 0x4029D020, 0xA0015502,\n\t0x00000002, 0x4029D020, 0xA0015602, 0x00000002, 0x0029D084, 0xA0015604,\n\t0x00000002, 0x4029D020, 0xA0015702, 0x00000002, 0x4029D020, 0xA0015802,\n\t0x00000002, 0x4029D020, 0xA0015902, 0x00000002, 0x4029D020, 0xA0015A02,\n\t0x00000002, 0x4029D020, 0xA0015B02, 0x00000002, 0x4029D020, 0xA0015C02,\n\t0x00000002, 0x4029D020, 0xA0015D02, 0x00000002, 0x4029D020, 0xA0015E02,\n\t0x00000002, 0x4029D020, 0xA0015F02, 0x00000002, 0x4029D020, 0xA0016002,\n\t0x00000002, 0x4029D020, 0xA0016102, 0x00000002, 0x4029D020, 0xA0016202,\n\t0x00000002, 0x4029D020, 0xA0016302, 0x00000002, 0x4029D020, 0xA0016402,\n\t0x00000002, 0x4029D020, 0xA0016502, 0x00000002,\n\t// Block 14, offset 0x380\n\t0x4029D020, 0xA0016602, 0x00000002, 0x4029D020, 0xA0016702, 0x00000002,\n\t0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002,\n\t0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002,\n\t0x4029D020, 0xA0016B02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,\n\t0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,\n\t0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,\n\t0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,\n\t0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,\n\t0x4029D020, 0xA0016E02, 0x00000002, 0x4029D020, 0xA0016F02, 0x00000002,\n\t0x4029D020, 0xA0017002, 0x00000002, 0x4029D020, 0xA0017102, 0x00000002,\n\t0x4029D020, 0xA0017202, 0x00000002, 0x4029D020,\n\t// Block 15, offset 0x3c0\n\t0xA0017302, 0x00000002, 0x4029D020, 0xA0017402, 0x00000002, 0x4029D020,\n\t0xA0017502, 0x00000002, 0x4029D020, 0xA0017602, 0x00000002, 0x4029D020,\n\t0xA0017702, 0x00000003, 0x0029D09E, 0x0009589E, 0x0029D29E, 0x00000003,\n\t0x0029D09E, 0x0009589E, 0x0029D69E, 0x00000002, 0x0029D086, 0x0029CC86,\n\t0x00000002, 0x0029D086, 0x0029CC86, 0x00000002, 0x4029D220, 0xA0013F02,\n\t0x00000002, 0x4029D220, 0xA0014002, 0x00000002, 0x4029D220, 0xA0014102,\n\t0x00000002, 0x4029D220, 0xA0014202, 0x00000002, 0x4029D220, 0xA0014302,\n\t0x00000002, 0x4029D220, 0xA0014402, 0x00000002, 0x4029D220, 0xA0014502,\n\t0x00000002, 0x4029D220, 0xA0014602, 0x00000002, 0x4029D220, 0xA0014702,\n\t0x00000002, 0x4029D220, 0xA0014802, 0x00000002, 0x4029D220, 0xA0014902,\n\t0x00000002, 0x4029D220, 0xA0014A02, 0x00000002,\n\t// Block 16, offset 0x400\n\t0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014B02, 0x00000002,\n\t0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014C02, 0x00000002,\n\t0x4029D220, 0xA0014D02, 0x00000002, 0x4029D220, 0xA0014E02, 0x00000002,\n\t0x4029D220, 0xA0014F02, 0x00000002, 0x4029D220, 0xA0015002, 0x00000002,\n\t0x4029D220, 0xA0015102, 0x00000002, 0x4029D220, 0xA0015202, 0x00000002,\n\t0x4029D220, 0xA0015302, 0x00000002, 0x4029D220, 0xA0015402, 0x00000002,\n\t0x4029D220, 0xA0015502, 0x00000002, 0x4029D220, 0xA0015602, 0x00000002,\n\t0x0029D284, 0xA0015604, 0x00000002, 0x4029D220, 0xA0015702, 0x00000002,\n\t0x4029D220, 0xA0015802, 0x00000002, 0x4029D220, 0xA0015902, 0x00000002,\n\t0x4029D220, 0xA0015A02, 0x00000002, 0x4029D220, 0xA0015B02, 0x00000002,\n\t0x4029D220, 0xA0015C02, 0x00000002, 0x4029D220,\n\t// Block 17, offset 0x440\n\t0xA0015D02, 0x00000002, 0x4029D220, 0xA0015E02, 0x00000002, 0x4029D220,\n\t0xA0015F02, 0x00000002, 0x4029D220, 0xA0016002, 0x00000002, 0x4029D220,\n\t0xA0016102, 0x00000002, 0x4029D220, 0xA0016202, 0x00000002, 0x4029D220,\n\t0xA0016302, 0x00000002, 0x4029D220, 0xA0016402, 0x00000002, 0x4029D220,\n\t0xA0016502, 0x00000002, 0x4029D220, 0xA0016602, 0x00000002, 0x4029D220,\n\t0xA0016702, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,\n\t0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,\n\t0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,\n\t0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,\n\t0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,\n\t0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02,\n\t// Block 18, offset 0x480\n\t0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02,\n\t0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016E02,\n\t0x00000002, 0x4029D220, 0xA0016F02, 0x00000002, 0x4029D220, 0xA0017002,\n\t0x00000002, 0x4029D220, 0xA0017102, 0x00000002, 0x4029D220, 0xA0017202,\n\t0x00000002, 0x4029D220, 0xA0017302, 0x00000002, 0x4029D220, 0xA0017402,\n\t0x00000002, 0x4029D220, 0xA0017502, 0x00000002, 0x4029D220, 0xA0017602,\n\t0x00000002, 0x4029D220, 0xA0017702, 0x00000003, 0x0029D29E, 0x0009589E,\n\t0x0029D49E, 0x00000003, 0x0029D29E, 0x0009589E, 0x0029D69E, 0x00000003,\n\t0x0029D29E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D286, 0x0029CC86,\n\t0x00000002, 0x4029D420, 0xA0013F02, 0x00000002, 0x4029D420, 0xA0014002,\n\t0x00000002, 0x4029D420, 0xA0014102, 0x00000002,\n\t// Block 19, offset 0x4c0\n\t0x4029D420, 0xA0014202, 0x00000002, 0x4029D420, 0xA0014302, 0x00000002,\n\t0x4029D420, 0xA0014402, 0x00000002, 0x4029D420, 0xA0014502, 0x00000002,\n\t0x4029D420, 0xA0014602, 0x00000002, 0x4029D420, 0xA0014702, 0x00000002,\n\t0x4029D420, 0xA0014802, 0x00000002, 0x4029D420, 0xA0014902, 0x00000002,\n\t0x4029D420, 0xA0014A02, 0x00000002, 0x4029D420, 0xA0014B02, 0x00000002,\n\t0x4029D420, 0xA0014C02, 0x00000002, 0x4029D420, 0xA0014D02, 0x00000002,\n\t0x4029D420, 0xA0014E02, 0x00000002, 0x4029D420, 0xA0014F02, 0x00000002,\n\t0x4029D420, 0xA0015002, 0x00000002, 0x4029D420, 0xA0015102, 0x00000002,\n\t0x4029D420, 0xA0015202, 0x00000002, 0x4029D420, 0xA0015302, 0x00000002,\n\t0x4029D420, 0xA0015402, 0x00000002, 0x4029D420, 0xA0015502, 0x00000002,\n\t0x4029D420, 0xA0015602, 0x00000002, 0x0029D484,\n\t// Block 20, offset 0x500\n\t0xA0015604, 0x00000002, 0x4029D420, 0xA0015702, 0x00000002, 0x4029D420,\n\t0xA0015802, 0x00000002, 0x4029D420, 0xA0015902, 0x00000002, 0x4029D420,\n\t0xA0015A02, 0x00000002, 0x4029D420, 0xA0015B02, 0x00000002, 0x4029D420,\n\t0xA0015C02, 0x00000002, 0x4029D420, 0xA0015D02, 0x00000002, 0x4029D420,\n\t0xA0015E02, 0x00000002, 0x4029D420, 0xA0015F02, 0x00000002, 0x4029D420,\n\t0xA0016002, 0x00000002, 0x4029D420, 0xA0016102, 0x00000002, 0x4029D420,\n\t0xA0016202, 0x00000002, 0x4029D420, 0xA0016302, 0x00000002, 0x4029D420,\n\t0xA0016402, 0x00000002, 0x4029D420, 0xA0016502, 0x00000002, 0x4029D420,\n\t0xA0016602, 0x00000002, 0x4029D420, 0xA0016702, 0x00000002, 0x4029D420,\n\t0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420,\n\t0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,\n\t// Block 21, offset 0x540\n\t0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,\n\t0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,\n\t0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,\n\t0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,\n\t0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,\n\t0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0017002,\n\t0x00000002, 0x4029D420, 0xA0017102, 0x00000002, 0x4029D420, 0xA0017202,\n\t0x00000002, 0x4029D420, 0xA0017302, 0x00000002, 0x4029D420, 0xA0017402,\n\t0x00000002, 0x4029D420, 0xA0017502, 0x00000002, 0x4029D420, 0xA0017602,\n\t0x00000002, 0x4029D420, 0xA0017702, 0x00000003, 0x0029D49E, 0x0009589E,\n\t0x0029D69E, 0x00000002, 0x0029D486, 0x0029CC86,\n\t// Block 22, offset 0x580\n\t0x00000002, 0x4029D620, 0xA0013F02, 0x00000002, 0x4029D620, 0xA0014002,\n\t0x00000002, 0x4029D620, 0xA0014102, 0x00000002, 0x4029D620, 0xA0014202,\n\t0x00000002, 0x4029D620, 0xA0014302, 0x00000002, 0x4029D620, 0xA0014402,\n\t0x00000002, 0x4029D620, 0xA0014502, 0x00000002, 0x4029D620, 0xA0014602,\n\t0x00000002, 0x4029D620, 0xA0014702, 0x00000002, 0x4029D620, 0xA0014802,\n\t0x00000002, 0x4029D620, 0xA0014902, 0x00000002, 0x4029D620, 0xA0014A02,\n\t0x00000002, 0x4029D620, 0xA0014B02, 0x00000002, 0x4029D620, 0xA0014C02,\n\t0x00000002, 0x4029D620, 0xA0014D02, 0x00000002, 0x4029D620, 0xA0014E02,\n\t0x00000002, 0x4029D620, 0xA0014F02, 0x00000002, 0x4029D620, 0xA0015002,\n\t0x00000002, 0x4029D620, 0xA0015102, 0x00000002, 0x4029D620, 0xA0015202,\n\t0x00000002, 0x4029D620, 0xA0015302, 0x00000002,\n\t// Block 23, offset 0x5c0\n\t0x4029D620, 0xA0015402, 0x00000002, 0x4029D620, 0xA0015502, 0x00000002,\n\t0x4029D620, 0xA0015602, 0x00000002, 0x0029D684, 0xA0015604, 0x00000002,\n\t0x4029D620, 0xA0015702, 0x00000002, 0x4029D620, 0xA0015802, 0x00000002,\n\t0x4029D620, 0xA0015902, 0x00000002, 0x4029D620, 0xA0015A02, 0x00000002,\n\t0x4029D620, 0xA0015B02, 0x00000002, 0x4029D620, 0xA0015C02, 0x00000002,\n\t0x4029D620, 0xA0015D02, 0x00000002, 0x4029D620, 0xA0015E02, 0x00000002,\n\t0x4029D620, 0xA0015F02, 0x00000002, 0x4029D620, 0xA0016002, 0x00000002,\n\t0x4029D620, 0xA0016102, 0x00000002, 0x4029D620, 0xA0016202, 0x00000002,\n\t0x4029D620, 0xA0016302, 0x00000002, 0x4029D620, 0xA0016402, 0x00000002,\n\t0x4029D620, 0xA0016502, 0x00000002, 0x4029D620, 0xA0016602, 0x00000002,\n\t0x4029D620, 0xA0016702, 0x00000002, 0x4029D620,\n\t// Block 24, offset 0x600\n\t0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620,\n\t0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620,\n\t0xA0016802, 0x00000002, 0x4029D620, 0xA0016A02, 0x00000002, 0x4029D620,\n\t0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,\n\t0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,\n\t0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,\n\t0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,\n\t0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,\n\t0xA0016C02, 0x00000002, 0x4029D620, 0xA0017202, 0x00000002, 0x4029D620,\n\t0xA0017302, 0x00000002, 0x4029D620, 0xA0017402, 0x00000002, 0x4029D620,\n\t0xA0017502, 0x00000002, 0x4029D620, 0xA0017702,\n\t// Block 25, offset 0x640\n\t0x00000003, 0x0029D69E, 0x0009589E, 0x0029D89E, 0x00000003, 0x0029D69E,\n\t0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D686, 0x0029CC86, 0x00000002,\n\t0x4029D820, 0xA0013F02, 0x00000002, 0x4029D820, 0xA0014002, 0x00000002,\n\t0x4029D820, 0xA0014102, 0x00000002, 0x4029D820, 0xA0014202, 0x00000002,\n\t0x4029D820, 0xA0014302, 0x00000002, 0x4029D820, 0xA0014402, 0x00000002,\n\t0x4029D820, 0xA0014502, 0x00000002, 0x4029D820, 0xA0014602, 0x00000002,\n\t0x4029D820, 0xA0014702, 0x00000002, 0x4029D820, 0xA0014802, 0x00000002,\n\t0x4029D820, 0xA0014902, 0x00000002, 0x4029D820, 0xA0014A02, 0x00000002,\n\t0x4029D820, 0xA0014B02, 0x00000002, 0x4029D820, 0xA0014C02, 0x00000002,\n\t0x4029D820, 0xA0014D02, 0x00000002, 0x4029D820, 0xA0014E02, 0x00000002,\n\t0x4029D820, 0xA0014F02, 0x00000002, 0x4029D820,\n\t// Block 26, offset 0x680\n\t0xA0015002, 0x00000002, 0x4029D820, 0xA0015102, 0x00000002, 0x4029D820,\n\t0xA0015202, 0x00000002, 0x4029D820, 0xA0015302, 0x00000002, 0x4029D820,\n\t0xA0015402, 0x00000002, 0x4029D820, 0xA0015502, 0x00000002, 0x4029D820,\n\t0xA0015602, 0x00000002, 0x0029D884, 0xA0015604, 0x00000002, 0x4029D820,\n\t0xA0015702, 0x00000002, 0x4029D820, 0xA0015802, 0x00000002, 0x4029D820,\n\t0xA0015902, 0x00000002, 0x4029D820, 0xA0015A02, 0x00000002, 0x4029D820,\n\t0xA0015B02, 0x00000002, 0x4029D820, 0xA0015C02, 0x00000002, 0x4029D820,\n\t0xA0015D02, 0x00000002, 0x4029D820, 0xA0015E02, 0x00000002, 0x4029D820,\n\t0xA0015F02, 0x00000002, 0x4029D820, 0xA0016002, 0x00000002, 0x4029D820,\n\t0xA0016102, 0x00000002, 0x4029D820, 0xA0016202, 0x00000002, 0x4029D820,\n\t0xA0016302, 0x00000002, 0x4029D820, 0xA0016402,\n\t// Block 27, offset 0x6c0\n\t0x00000002, 0x4029D820, 0xA0016502, 0x00000002, 0x4029D820, 0xA0016602,\n\t0x00000002, 0x4029D820, 0xA0016702, 0x00000002, 0x4029D820, 0xA0016902,\n\t0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,\n\t0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,\n\t0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,\n\t0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0017202,\n\t0x00000002, 0x4029D820, 0xA0017302, 0x00000002, 0x4029D820, 0xA0017402,\n\t0x00000002, 0x4029D820, 0xA0017502, 0x00000002, 0x4029D820, 0xA0017702,\n\t0x00000002, 0x0029D886, 0x0029CC86, 0x00000002, 0x4029DA20, 0xA0013F02,\n\t0x00000002, 0x4029DA20, 0xA0014002, 0x00000002, 0x4029DA20, 0xA0014102,\n\t0x00000002, 0x4029DA20, 0xA0014202, 0x00000002,\n\t// Block 28, offset 0x700\n\t0x4029DA20, 0xA0014302, 0x00000002, 0x4029DA20, 0xA0014402, 0x00000002,\n\t0x4029DA20, 0xA0014502, 0x00000002, 0x4029DA20, 0xA0014602, 0x00000002,\n\t0x4029DA20, 0xA0014702, 0x00000002, 0x4029DA20, 0xA0014802, 0x00000002,\n\t0x4029DA20, 0xA0014902, 0x00000002, 0x4029DA20, 0xA0014A02, 0x00000002,\n\t0x4029DA20, 0xA0014B02, 0x00000002, 0x4029DA20, 0xA0014C02, 0x00000002,\n\t0x4029DA20, 0xA0014D02, 0x00000002, 0x4029DA20, 0xA0014E02, 0x00000002,\n\t0x4029DA20, 0xA0014F02, 0x00000002, 0x4029DA20, 0xA0015002, 0x00000002,\n\t0x4029DA20, 0xA0015102, 0x00000002, 0x4029DA20, 0xA0015202, 0x00000002,\n\t0x4029DA20, 0xA0015302, 0x00000002, 0x4029DA20, 0xA0015402, 0x00000002,\n\t0x4029DA20, 0xA0015502, 0x00000002, 0x4029DA20, 0xA0015602, 0x00000002,\n\t0x0029DA84, 0xA0015604, 0x00000002, 0x4029DA20,\n\t// Block 29, offset 0x740\n\t0xA0015702, 0x00000002, 0x4029DA20, 0xA0015802, 0x00000002, 0x4029DA20,\n\t0xA0015902, 0x00000002, 0x4029DA20, 0xA0015A02, 0x00000002, 0x4029DA20,\n\t0xA0015B02, 0x00000002, 0x4029DA20, 0xA0015C02, 0x00000002, 0x4029DA20,\n\t0xA0015D02, 0x00000002, 0x4029DA20, 0xA0015E02, 0x00000002, 0x4029DA20,\n\t0xA0015F02, 0x00000002, 0x4029DA20, 0xA0016002, 0x00000002, 0x4029DA20,\n\t0xA0016102, 0x00000002, 0x4029DA20, 0xA0016202, 0x00000002, 0x4029DA20,\n\t0xA0016302, 0x00000002, 0x4029DA20, 0xA0016402, 0x00000002, 0x4029DA20,\n\t0xA0016502, 0x00000002, 0x4029DA20, 0xA0016602, 0x00000002, 0x4029DA20,\n\t0xA0016702, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20,\n\t0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20,\n\t0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02,\n\t// Block 30, offset 0x780\n\t0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02,\n\t0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0017202,\n\t0x00000002, 0x4029DA20, 0xA0017302, 0x00000002, 0x4029DA20, 0xA0017402,\n\t0x00000002, 0x4029DA20, 0xA0017502, 0x00000002, 0x4029DA20, 0xA0017702,\n\t0x00000003, 0x0029DA9E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029DA86,\n\t0x0029CC86, 0x00000002, 0x4029DC20, 0xA0013F02, 0x00000002, 0x4029DC20,\n\t0xA0014002, 0x00000002, 0x4029DC20, 0xA0014102, 0x00000002, 0x4029DC20,\n\t0xA0014202, 0x00000002, 0x4029DC20, 0xA0014302, 0x00000002, 0x4029DC20,\n\t0xA0014402, 0x00000002, 0x4029DC20, 0xA0014502, 0x00000002, 0x4029DC20,\n\t0xA0014602, 0x00000002, 0x4029DC20, 0xA0014702, 0x00000002, 0x4029DC20,\n\t0xA0014802, 0x00000002, 0x4029DC20, 0xA0014902,\n\t// Block 31, offset 0x7c0\n\t0x00000002, 0x4029DC20, 0xA0014A02, 0x00000002, 0x4029DC20, 0xA0014B02,\n\t0x00000002, 0x4029DC20, 0xA0014C02, 0x00000002, 0x4029DC20, 0xA0014D02,\n\t0x00000002, 0x4029DC20, 0xA0014E02, 0x00000002, 0x4029DC20, 0xA0014F02,\n\t0x00000002, 0x4029DC20, 0xA0015002, 0x00000002, 0x4029DC20, 0xA0015102,\n\t0x00000002, 0x4029DC20, 0xA0015202, 0x00000002, 0x4029DC20, 0xA0015302,\n\t0x00000002, 0x4029DC20, 0xA0015402, 0x00000002, 0x4029DC20, 0xA0015502,\n\t0x00000002, 0x4029DC20, 0xA0015602, 0x00000002, 0x0029DC84, 0xA0015604,\n\t0x00000002, 0x4029DC20, 0xA0015702, 0x00000002, 0x4029DC20, 0xA0015802,\n\t0x00000002, 0x4029DC20, 0xA0015902, 0x00000002, 0x4029DC20, 0xA0015A02,\n\t0x00000002, 0x4029DC20, 0xA0015B02, 0x00000002, 0x4029DC20, 0xA0015C02,\n\t0x00000002, 0x4029DC20, 0xA0015D02, 0x00000002,\n\t// Block 32, offset 0x800\n\t0x4029DC20, 0xA0015E02, 0x00000002, 0x4029DC20, 0xA0015F02, 0x00000002,\n\t0x4029DC20, 0xA0016002, 0x00000002, 0x4029DC20, 0xA0016102, 0x00000002,\n\t0x4029DC20, 0xA0016202, 0x00000002, 0x4029DC20, 0xA0016302, 0x00000002,\n\t0x4029DC20, 0xA0016402, 0x00000002, 0x4029DC20, 0xA0016502, 0x00000002,\n\t0x4029DC20, 0xA0016602, 0x00000002, 0x4029DC20, 0xA0016702, 0x00000002,\n\t0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,\n\t0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,\n\t0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,\n\t0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0017202, 0x00000002,\n\t0x4029DC20, 0xA0017302, 0x00000002, 0x4029DC20, 0xA0017402, 0x00000002,\n\t0x4029DC20, 0xA0017502, 0x00000002, 0x4029DC20,\n\t// Block 33, offset 0x840\n\t0xA0017702, 0x00000002, 0x0029DC86, 0x0029CC86, 0x00000002, 0x4029DE20,\n\t0xA0013F02, 0x00000002, 0x4029DE20, 0xA0014002, 0x00000002, 0x4029DE20,\n\t0xA0014102, 0x00000002, 0x4029DE20, 0xA0014202, 0x00000002, 0x4029DE20,\n\t0xA0014302, 0x00000002, 0x4029DE20, 0xA0014402, 0x00000002, 0x4029DE20,\n\t0xA0014502, 0x00000002, 0x4029DE20, 0xA0014602, 0x00000002, 0x4029DE20,\n\t0xA0014702, 0x00000002, 0x4029DE20, 0xA0014802, 0x00000002, 0x4029DE20,\n\t0xA0014902, 0x00000002, 0x4029DE20, 0xA0014A02, 0x00000002, 0x4029DE20,\n\t0xA0014B02, 0x00000002, 0x4029DE20, 0xA0014C02, 0x00000002, 0x4029DE20,\n\t0xA0014D02, 0x00000002, 0x4029DE20, 0xA0014E02, 0x00000002, 0x4029DE20,\n\t0xA0014F02, 0x00000002, 0x4029DE20, 0xA0015002, 0x00000002, 0x4029DE20,\n\t0xA0015102, 0x00000002, 0x4029DE20, 0xA0015202,\n\t// Block 34, offset 0x880\n\t0x00000002, 0x4029DE20, 0xA0015302, 0x00000002, 0x4029DE20, 0xA0015402,\n\t0x00000002, 0x4029DE20, 0xA0015502, 0x00000002, 0x4029DE20, 0xA0015602,\n\t0x00000002, 0x0029DE84, 0xA0015604, 0x00000002, 0x4029DE20, 0xA0015702,\n\t0x00000002, 0x4029DE20, 0xA0015802, 0x00000002, 0x4029DE20, 0xA0015902,\n\t0x00000002, 0x4029DE20, 0xA0015A02, 0x00000002, 0x4029DE20, 0xA0015B02,\n\t0x00000002, 0x4029DE20, 0xA0015C02, 0x00000002, 0x4029DE20, 0xA0015D02,\n\t0x00000002, 0x4029DE20, 0xA0015E02, 0x00000002, 0x4029DE20, 0xA0015F02,\n\t0x00000002, 0x4029DE20, 0xA0016002, 0x00000002, 0x4029DE20, 0xA0016102,\n\t0x00000002, 0x4029DE20, 0xA0016202, 0x00000002, 0x4029DE20, 0xA0016302,\n\t0x00000002, 0x4029DE20, 0xA0016402, 0x00000002, 0x4029DE20, 0xA0016502,\n\t0x00000002, 0x4029DE20, 0xA0016602, 0x00000002,\n\t// Block 35, offset 0x8c0\n\t0x4029DE20, 0xA0016702, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,\n\t0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,\n\t0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,\n\t0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,\n\t0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,\n\t0x4029DE20, 0xA0017202, 0x00000002, 0x4029DE20, 0xA0017302, 0x00000002,\n\t0x4029DE20, 0xA0017402, 0x00000002, 0x4029DE20, 0xA0017502, 0x00000002,\n\t0x4029DE20, 0xA0017702, 0x00000002, 0x402BDE20, 0xAE603202, 0x00000002,\n\t0x002BDE88, 0xAE603202, 0x00000002, 0x402BDE20, 0xAE603502, 0x00000002,\n\t0x002BDE88, 0xAE603502, 0x00000002, 0x402BDE20, 0xAE603702, 0x00000002,\n\t0x002BDE88, 0xAE603702, 0x00000003, 0x402BDE20,\n\t// Block 36, offset 0x900\n\t0xAE603702, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE603202,\n\t0x00000003, 0x402BDE20, 0xAE603702, 0xAE603502, 0x00000003, 0x002BDE88,\n\t0xAE603702, 0xAE603502, 0x00000003, 0x402BDE20, 0xAE603702, 0xAE604E02,\n\t0x00000003, 0x002BDE88, 0xAE603702, 0xAE604E02, 0x00000003, 0x402BDE20,\n\t0xAE603702, 0xAE606402, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE606402,\n\t0x00000002, 0x402BDE20, 0xAE603C02, 0x00000002, 0x002BDE88, 0xAE603C02,\n\t0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603202, 0x00000003, 0x002BDE88,\n\t0xAE603C02, 0xAE603202, 0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603502,\n\t0x00000003, 0x002BDE88, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BDE20,\n\t0xAE603C02, 0xAE604E02, 0x00000003, 0x002BDE88, 0xAE603C02, 0xAE604E02,\n\t0x00000003, 0x402BDE20, 0xAE603C02, 0xAE606402,\n\t// Block 37, offset 0x940\n\t0x00000003, 0x002BDE88, 0xAE603C02, 0xAE606402, 0x00000002, 0x402BDE20,\n\t0xAE604102, 0x00000002, 0x002BDE88, 0xAE604102, 0x00000002, 0x402BDE20,\n\t0xAE604302, 0x00000002, 0x002BDE88, 0xAE604302, 0x00000003, 0x402BDE20,\n\t0xAE604302, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE604302, 0xAE603202,\n\t0x00000002, 0x402BDE20, 0xAE604702, 0x00000002, 0x002BDE88, 0xAE604702,\n\t0x00000003, 0x402BDE20, 0xAE604702, 0xAE605B02, 0x00000003, 0x002BDE88,\n\t0xAE604702, 0xAE605B02, 0x00000002, 0x402BDE20, 0xAE604E02, 0x00000002,\n\t0x002BDE88, 0xAE604E02, 0x00000002, 0x402BDE20, 0xAE605202, 0x00000002,\n\t0x002BDE88, 0xAE605202, 0x00000003, 0x402BDE20, 0xAE605202, 0xAE605B02,\n\t0x00000003, 0x002BDE88, 0xAE605202, 0xAE605B02, 0x00000002, 0x402BDE20,\n\t0xACA05902, 0x00000002, 0x002BDE88, 0xACA05902,\n\t// Block 38, offset 0x980\n\t0x00000002, 0x402BDE20, 0xAE605B02, 0x00000002, 0x002BDE88, 0xAE605B02,\n\t0x00000002, 0x402BDE20, 0xAE606402, 0x00000002, 0x002BDE88, 0xAE606402,\n\t0x00000002, 0x402BDE20, 0xAE606502, 0x00000002, 0x002BDE88, 0xAE606502,\n\t0x00000002, 0x402BDE20, 0xAE606702, 0x00000002, 0x002BDE88, 0xAE606702,\n\t0x00000002, 0x402BDE20, 0xADC07002, 0x00000002, 0x002BDE88, 0xADC07002,\n\t0x00000003, 0x402BDE20, 0xADC07002, 0xAE603702, 0x00000003, 0x002BDE88,\n\t0xADC07002, 0xAE603702, 0x00000003, 0x402BDE20, 0xADC07002, 0xAE603C02,\n\t0x00000003, 0x002BDE88, 0xADC07002, 0xAE603C02, 0x00000002, 0x402BDE20,\n\t0xADC07602, 0x00000002, 0x002BDE88, 0xADC07602, 0x00000002, 0x84E615EF,\n\t0xAE613904, 0x00000004, 0x002BDE9C, 0x0002E49C, 0x002E829C, 0x0002E49C,\n\t0x00000003, 0x002BDE84, 0x0004E284, 0x002C3A84,\n\t// Block 39, offset 0x9c0\n\t0x00000003, 0x002BDE84, 0x0004E284, 0x002FE684, 0x00000003, 0x002BDE8A,\n\t0x0004E284, 0x002FE68A, 0x00000003, 0x002BDE9D, 0x0009569C, 0x002E829C,\n\t0x00000002, 0x002BDE84, 0x002BDE84, 0x00000002, 0x002BDE8A, 0x002BDE8A,\n\t0x00000002, 0x002BDE9D, 0x002C0A9D, 0x00000003, 0x002BDE84, 0xA0013904,\n\t0x002C9884, 0x00000003, 0x84E615EF, 0xAE613904, 0x84E6164C, 0x00000003,\n\t0x002BDE8A, 0xA0013904, 0x002C988A, 0x00000003, 0x002BDE94, 0xA0013914,\n\t0x002C9894, 0x00000004, 0x002BDE84, 0xA0013904, 0x002C9884, 0xAE603202,\n\t0x00000004, 0x002BDE8A, 0xA0013904, 0x002C988A, 0xAE603202, 0x00000004,\n\t0x002BDE84, 0xA0013904, 0x002C9884, 0xAE605B02, 0x00000004, 0x002BDE8A,\n\t0xA0013904, 0x002C988A, 0xAE605B02, 0x00000002, 0x84E615EF, 0x84E61771,\n\t0x00000002, 0x002BDE84, 0x002EE284, 0x00000002,\n\t// Block 40, offset 0xa00\n\t0x002BDE8A, 0x002EE28A, 0x00000002, 0x002BDE84, 0x00306C84, 0x00000002,\n\t0x002BDE8A, 0x00306C8A, 0x00000002, 0x84E615EF, 0x84E6185F, 0x00000002,\n\t0x002BDE84, 0x0030BE84, 0x00000002, 0x002BDE8A, 0x0030BE8A, 0x00000003,\n\t0x002BDE84, 0xA0013904, 0x0030BE84, 0x00000003, 0x002BDE8A, 0xA0013904,\n\t0x0030BE8A, 0x00000002, 0x002BDE84, 0x00310084, 0x00000002, 0x002BDE8A,\n\t0x0031008A, 0x00000002, 0x402C0A20, 0xAE605202, 0x00000002, 0x002C0A88,\n\t0xAE605202, 0x00000002, 0x402C0A20, 0xADC07002, 0x00000002, 0x002C0A88,\n\t0xADC07002, 0x00000002, 0x402C0A20, 0xADC07B02, 0x00000002, 0x002C0A88,\n\t0xADC07B02, 0x00000003, 0x002C0A9C, 0x002BDE9C, 0x002F7A9C, 0x00000002,\n\t0x402C3A20, 0xAE603202, 0x00000002, 0x002C3A88, 0xAE603202, 0x00000002,\n\t0x402C3A20, 0xAE603C02, 0x00000002, 0x002C3A88,\n\t// Block 41, offset 0xa40\n\t0xAE603C02, 0x00000002, 0x402C3A20, 0xAE604102, 0x00000002, 0x002C3A88,\n\t0xAE604102, 0x00000002, 0x402C3A20, 0xAE605202, 0x00000002, 0x002C3A88,\n\t0xAE605202, 0x00000002, 0x402C3A20, 0xACA05602, 0x00000002, 0x84E6161D,\n\t0xAE605604, 0x00000002, 0x002C3A88, 0xACA05602, 0x00000003, 0x402C3A20,\n\t0xACA05602, 0xAE603202, 0x00000003, 0x002C3A88, 0xACA05602, 0xAE603202,\n\t0x00000003, 0x002C3A84, 0x0004E284, 0x002EE284, 0x00000003, 0x002C3A84,\n\t0x0004E284, 0x00306C84, 0x00000004, 0x002C3A9D, 0x0009569C, 0x002DFE9C,\n\t0x002D229C, 0x00000003, 0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000002,\n\t0x002C3A9D, 0x002E229D, 0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D09C,\n\t0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D29C, 0x00000003, 0x002C3A9D,\n\t0x002EE29C, 0x0002E49C, 0x00000004, 0x002C3A9D,\n\t// Block 42, offset 0xa80\n\t0x002EE29D, 0x002EE29D, 0x002E229D, 0x00000002, 0x402C6220, 0xAE604102,\n\t0x00000002, 0x002C6288, 0xAE604102, 0x00000002, 0x402C6220, 0xAE605202,\n\t0x00000002, 0x002C6288, 0xAE605202, 0x00000002, 0x402C6220, 0xACA05602,\n\t0x00000002, 0x002C6288, 0xACA05602, 0x00000002, 0x402C6220, 0xADC07002,\n\t0x00000002, 0x002C6288, 0xADC07002, 0x00000002, 0x402C6220, 0xADC07802,\n\t0x00000002, 0x002C6288, 0xADC07802, 0x00000002, 0x402C6220, 0xADC07B02,\n\t0x00000002, 0x002C6288, 0xADC07B02, 0x00000002, 0x402C6220, 0xA0007D02,\n\t0x00000002, 0x002C6288, 0xA0007D02, 0x00000002, 0x002C6284, 0xA0013904,\n\t0x00000002, 0x84E61631, 0xAE613904, 0x00000002, 0x002C628A, 0xA0013904,\n\t0x00000002, 0x84E61631, 0xAE613A04, 0x00000002, 0x002C6284, 0xA0013A04,\n\t0x00000002, 0x002C628A, 0xA0013A04, 0x00000002,\n\t// Block 43, offset 0xac0\n\t0x002C6284, 0x002C0A84, 0x00000003, 0x002C629C, 0x002E829C, 0x0029D09C,\n\t0x00000003, 0x002C629C, 0x002E829C, 0x0029D29C, 0x00000002, 0x002C6284,\n\t0x00312A84, 0x00000003, 0x002C6284, 0x00312A84, 0xA0004104, 0x00000003,\n\t0x002C628A, 0x00312A84, 0xA0004104, 0x00000003, 0x002C628A, 0x00312A8A,\n\t0xA0004104, 0x00000002, 0x002C6284, 0x00315084, 0x00000002, 0x002C6284,\n\t0x00316484, 0x00000002, 0x402C9820, 0xAE603202, 0x00000002, 0x002C9888,\n\t0xAE603202, 0x00000002, 0x402C9820, 0xAE603502, 0x00000002, 0x002C9888,\n\t0xAE603502, 0x00000002, 0x402C9820, 0xAE603702, 0x00000002, 0x002C9888,\n\t0xAE603702, 0x00000002, 0x402C9820, 0xAE603C02, 0x00000002, 0x002C9888,\n\t0xAE603C02, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE603202, 0x00000003,\n\t0x002C9888, 0xAE603C02, 0xAE603202, 0x00000003,\n\t// Block 44, offset 0xb00\n\t0x402C9820, 0xAE603C02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE603C02,\n\t0xAE603502, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE604E02, 0x00000003,\n\t0x002C9888, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C9820, 0xAE603C02,\n\t0xAE606402, 0x00000003, 0x002C9888, 0xAE603C02, 0xAE606402, 0x00000002,\n\t0x402C9820, 0xAE604102, 0x00000002, 0x002C9888, 0xAE604102, 0x00000002,\n\t0x402C9820, 0xAE604702, 0x00000002, 0x002C9888, 0xAE604702, 0x00000002,\n\t0x402C9820, 0xAE604E02, 0x00000002, 0x002C9888, 0xAE604E02, 0x00000002,\n\t0x402C9820, 0xAE605202, 0x00000002, 0x002C9888, 0xAE605202, 0x00000002,\n\t0x402C9820, 0xACA05602, 0x00000002, 0x002C9888, 0xACA05602, 0x00000003,\n\t0x402C9820, 0xACA05602, 0xAE603702, 0x00000003, 0x002C9888, 0xACA05602,\n\t0xAE603702, 0x00000002, 0x402C9820, 0xACA05902,\n\t// Block 45, offset 0xb40\n\t0x00000002, 0x002C9888, 0xACA05902, 0x00000002, 0x402C9820, 0xAE605B02,\n\t0x00000002, 0x002C9888, 0xAE605B02, 0x00000003, 0x402C9820, 0xAE605B02,\n\t0xAE603202, 0x00000003, 0x002C9888, 0xAE605B02, 0xAE603202, 0x00000003,\n\t0x402C9820, 0xAE605B02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE605B02,\n\t0xAE603502, 0x00000002, 0x402C9820, 0xAE606402, 0x00000002, 0x002C9888,\n\t0xAE606402, 0x00000002, 0x402C9820, 0xAE606502, 0x00000002, 0x002C9888,\n\t0xAE606502, 0x00000002, 0x402C9820, 0xAE606702, 0x00000002, 0x002C9888,\n\t0xAE606702, 0x00000002, 0x402C9820, 0xADC07002, 0x00000002, 0x002C9888,\n\t0xADC07002, 0x00000003, 0x402C9820, 0xADC07002, 0xAE603C02, 0x00000003,\n\t0x002C9888, 0xADC07002, 0xAE603C02, 0x00000002, 0x402C9820, 0xADC07802,\n\t0x00000002, 0x002C9888, 0xADC07802, 0x00000002,\n\t// Block 46, offset 0xb80\n\t0x402C9820, 0xADC07A02, 0x00000002, 0x002C9888, 0xADC07A02, 0x00000003,\n\t0x002C989C, 0x002F7A9C, 0x002D229C, 0x00000002, 0x402D0820, 0xAE605202,\n\t0x00000002, 0x002D0888, 0xAE605202, 0x00000002, 0x002D0884, 0xA0013A04,\n\t0x00000002, 0x002D088A, 0xA0013A04, 0x00000003, 0x002D088A, 0x002BDE8A,\n\t0x0030F68A, 0x00000003, 0x002D0884, 0x002D0884, 0x002D9A84, 0x00000003,\n\t0x002D0884, 0x002D0884, 0x002E2284, 0x00000002, 0x002D0884, 0x002EDA84,\n\t0x00000004, 0x002D089D, 0x002F7A9D, 0x002C989D, 0x002C989D, 0x00000002,\n\t0x402D2220, 0xAE603202, 0x00000002, 0x002D2288, 0xAE603202, 0x00000002,\n\t0x402D2220, 0xAE603702, 0x00000002, 0x002D2288, 0xAE603702, 0x00000002,\n\t0x402D2220, 0xAE603C02, 0x00000002, 0x002D2288, 0xAE603C02, 0x00000002,\n\t0x402D2220, 0xAE604102, 0x00000002, 0x002D2288,\n\t// Block 47, offset 0xbc0\n\t0xAE604102, 0x00000002, 0x402D2220, 0xAE605202, 0x00000002, 0x002D2288,\n\t0xAE605202, 0x00000002, 0x402D2220, 0xACA05602, 0x00000002, 0x002D2288,\n\t0xACA05602, 0x00000002, 0x402D2220, 0xAE605B02, 0x00000002, 0x002D2288,\n\t0xAE605B02, 0x00000002, 0x002D2284, 0xA0006104, 0x00000002, 0x002D228A,\n\t0xA0006104, 0x00000002, 0x002D2284, 0xA0013A04, 0x00000002, 0x002D228A,\n\t0xA0013A04, 0x00000003, 0x002D229C, 0x002BDE9C, 0x002E229C, 0x00000003,\n\t0x002D229D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002D229D, 0x002F2C9D,\n\t0x002BDE9C, 0x00000002, 0x402D6820, 0xAE603C02, 0x00000002, 0x002D6888,\n\t0xAE603C02, 0x00000002, 0x402D6820, 0xAE604102, 0x00000002, 0x002D6888,\n\t0xAE604102, 0x00000002, 0x402D6820, 0xAE604702, 0x00000002, 0x002D6888,\n\t0xAE604702, 0x00000002, 0x402D6820, 0xAE605202,\n\t// Block 48, offset 0xc00\n\t0x00000002, 0x002D6888, 0xAE605202, 0x00000002, 0x402D6820, 0xACA05602,\n\t0x00000002, 0x002D6888, 0xACA05602, 0x00000002, 0x402D6820, 0xADC07002,\n\t0x00000002, 0x002D6888, 0xADC07002, 0x00000002, 0x402D6820, 0xADC07902,\n\t0x00000002, 0x002D6888, 0xADC07902, 0x00000002, 0x402D6820, 0xADC07B02,\n\t0x00000002, 0x402D6820, 0xA0007D02, 0x00000002, 0x002D6888, 0xA0007D02,\n\t0x00000003, 0x002D689C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402D9A20,\n\t0xAE603202, 0x00000002, 0x002D9A88, 0xAE603202, 0x00000002, 0x402D9A20,\n\t0xAE603502, 0x00000002, 0x002D9A88, 0xAE603502, 0x00000002, 0x402D9A20,\n\t0xAE603702, 0x00000002, 0x002D9A88, 0xAE603702, 0x00000002, 0x402D9A20,\n\t0xAE603C02, 0x00000002, 0x002D9A88, 0xAE603C02, 0x00000002, 0x402D9A20,\n\t0xAE604102, 0x00000002, 0x002D9A88, 0xAE604102,\n\t// Block 49, offset 0xc40\n\t0x00000002, 0x402D9A20, 0xAE604702, 0x00000002, 0x002D9A88, 0xAE604702,\n\t0x00000003, 0x402D9A20, 0xAE604702, 0xAE603202, 0x00000003, 0x002D9A88,\n\t0xAE604702, 0xAE603202, 0x00000002, 0x402D9A20, 0xAE604E02, 0x00000002,\n\t0x002D9A88, 0xAE604E02, 0x00000002, 0x002D9A88, 0xAE605202, 0x00000002,\n\t0x402D9A20, 0xACA05902, 0x00000002, 0x002D9A88, 0xACA05902, 0x00000002,\n\t0x402D9A20, 0xAE605B02, 0x00000002, 0x002D9A88, 0xAE605B02, 0x00000002,\n\t0x402D9A20, 0xAE606402, 0x00000002, 0x002D9A88, 0xAE606402, 0x00000002,\n\t0x402D9A20, 0xAE606502, 0x00000002, 0x002D9A88, 0xAE606502, 0x00000002,\n\t0x402D9A20, 0xAE606702, 0x00000002, 0x002D9A88, 0xAE606702, 0x00000002,\n\t0x402D9A20, 0xADC07002, 0x00000002, 0x002D9A88, 0xADC07002, 0x00000002,\n\t0x402D9A20, 0xADC07A02, 0x00000002, 0x002D9A88,\n\t// Block 50, offset 0xc80\n\t0xADC07A02, 0x00000002, 0x002D9A9D, 0x002C3A9D, 0x00000002, 0x002D9A9D,\n\t0x002C629D, 0x00000002, 0x402DCC20, 0xAE603C02, 0x00000002, 0x002DCC88,\n\t0xAE603C02, 0x00000002, 0x402DCC20, 0xAE604102, 0x00000002, 0x402DFE20,\n\t0xAE603202, 0x00000002, 0x002DFE88, 0xAE603202, 0x00000002, 0x402DFE20,\n\t0xAE604102, 0x00000002, 0x002DFE88, 0xAE604102, 0x00000002, 0x402DFE20,\n\t0xACA05602, 0x00000002, 0x002DFE88, 0xACA05602, 0x00000002, 0x002DFE84,\n\t0xA0006104, 0x00000002, 0x002DFE8A, 0xA0006104, 0x00000002, 0x402DFE20,\n\t0xADC07002, 0x00000002, 0x002DFE88, 0xADC07002, 0x00000002, 0x402DFE20,\n\t0xADC07B02, 0x00000002, 0x002DFE88, 0xADC07B02, 0x00000004, 0x002DFE9C,\n\t0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000003, 0x002DFE9C, 0x002D689D,\n\t0x00312A9C, 0x00000003, 0x002DFE9C, 0x002E829C,\n\t// Block 51, offset 0xcc0\n\t0x0029D09C, 0x00000003, 0x002DFE9C, 0x002E829C, 0x0029D29C, 0x00000003,\n\t0x002DFE9C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E2220, 0xAE603202,\n\t0x00000002, 0x002E2288, 0xAE603202, 0x00000002, 0x402E2220, 0xAE604102,\n\t0x00000002, 0x002E2288, 0xAE604102, 0x00000002, 0x402E2220, 0xACA05602,\n\t0x00000002, 0x002E2288, 0xACA05602, 0x00000002, 0x402E2220, 0xADC07002,\n\t0x00000002, 0x002E2288, 0xADC07002, 0x00000003, 0x402E2220, 0xADC07002,\n\t0xAE605B02, 0x00000003, 0x002E2288, 0xADC07002, 0xAE605B02, 0x00000002,\n\t0x402E2220, 0xADC07802, 0x00000002, 0x002E2288, 0xADC07802, 0x00000002,\n\t0x402E2220, 0xADC07B02, 0x00000002, 0x002E2288, 0xADC07B02, 0x00000002,\n\t0x402E2220, 0xA0007D02, 0x00000002, 0x002E2288, 0xA0007D02, 0x00000002,\n\t0x402E2220, 0xA0013902, 0x00000002, 0x402E2220,\n\t// Block 52, offset 0xd00\n\t0xA0013902, 0x00000002, 0x002E2288, 0xA0013902, 0x00000002, 0x002E2288,\n\t0xA0013902, 0x00000002, 0x002E2284, 0x002E2284, 0x00000002, 0x002E228A,\n\t0x002E228A, 0x00000003, 0x002E229C, 0x002EE29C, 0x002D229C, 0x00000002,\n\t0x002E2284, 0x002FE684, 0x00000003, 0x002E229D, 0x00302C9D, 0x002C629D,\n\t0x00000002, 0x002E2284, 0x00312A84, 0x00000002, 0x402E8220, 0xAE603202,\n\t0x00000002, 0x002E8288, 0xAE603202, 0x00000002, 0x402E8220, 0xAE605202,\n\t0x00000002, 0x002E8288, 0xAE605202, 0x00000002, 0x402E8220, 0xADC07002,\n\t0x00000002, 0x002E8288, 0xADC07002, 0x00000003, 0x002E829C, 0x0009569C,\n\t0x002FE69C, 0x00000004, 0x002E829C, 0x0009569C, 0x002FE69C, 0x0029D09C,\n\t0x00000003, 0x002E829D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002E829C,\n\t0x002D9A9C, 0x002E229C, 0x00000003, 0x002E829C,\n\t// Block 53, offset 0xd40\n\t0x002E829C, 0x0029D09C, 0x00000003, 0x002E829C, 0x002E829C, 0x0029D29C,\n\t0x00000003, 0x002E829C, 0x002EE29C, 0x002E229C, 0x00000003, 0x002E829D,\n\t0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E9E20, 0xAE603202, 0x00000002,\n\t0x002E9E88, 0xAE603202, 0x00000002, 0x402E9E20, 0xAE603502, 0x00000002,\n\t0x002E9E88, 0xAE603502, 0x00000002, 0x402E9E20, 0xAE604102, 0x00000002,\n\t0x002E9E88, 0xAE604102, 0x00000002, 0x402E9E20, 0xAE604E02, 0x00000002,\n\t0x002E9E88, 0xAE604E02, 0x00000002, 0x402E9E20, 0xAE605202, 0x00000002,\n\t0x002E9E88, 0xAE605202, 0x00000002, 0x402E9E20, 0xACA05602, 0x00000002,\n\t0x002E9E88, 0xACA05602, 0x00000002, 0x002E9E84, 0xA0006104, 0x00000002,\n\t0x002E9E8A, 0xA0006104, 0x00000002, 0x402E9E20, 0xADC07002, 0x00000002,\n\t0x002E9E88, 0xADC07002, 0x00000002, 0x402E9E20,\n\t// Block 54, offset 0xd80\n\t0xADC07802, 0x00000002, 0x002E9E88, 0xADC07802, 0x00000002, 0x402E9E20,\n\t0xADC07B02, 0x00000002, 0x002E9E88, 0xADC07B02, 0x00000003, 0x002E9E9D,\n\t0x002C989D, 0x0030E29D, 0x00000002, 0x002E9E9D, 0x002D229D, 0x00000002,\n\t0x402EE220, 0xAE603202, 0x00000002, 0x002EE288, 0xAE603202, 0x00000002,\n\t0x402EE220, 0xAE603502, 0x00000002, 0x002EE288, 0xAE603502, 0x00000002,\n\t0x402EE220, 0xAE603702, 0x00000002, 0x002EE288, 0xAE603702, 0x00000002,\n\t0x402EE220, 0xAE603C02, 0x00000002, 0x002EE288, 0xAE603C02, 0x00000003,\n\t0x402EE220, 0xAE603C02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE603C02,\n\t0xAE603202, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE603502, 0x00000003,\n\t0x002EE288, 0xAE603C02, 0xAE603502, 0x00000003, 0x402EE220, 0xAE603C02,\n\t0xAE604E02, 0x00000003, 0x002EE288, 0xAE603C02,\n\t// Block 55, offset 0xdc0\n\t0xAE604E02, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE606402, 0x00000003,\n\t0x002EE288, 0xAE603C02, 0xAE606402, 0x00000002, 0x402EE220, 0xAE604102,\n\t0x00000002, 0x002EE288, 0xAE604102, 0x00000002, 0x402EE220, 0xAE604702,\n\t0x00000002, 0x002EE288, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604702,\n\t0xAE605B02, 0x00000003, 0x002EE288, 0xAE604702, 0xAE605B02, 0x00000002,\n\t0x402EE220, 0xAE604D02, 0x00000002, 0x002EE288, 0xAE604D02, 0x00000002,\n\t0x402EE220, 0xAE604E02, 0x00000002, 0x002EE288, 0xAE604E02, 0x00000003,\n\t0x402EE220, 0xAE604E02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE604E02,\n\t0xAE603202, 0x00000003, 0x402EE220, 0xAE604E02, 0xAE604702, 0x00000003,\n\t0x002EE288, 0xAE604E02, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604E02,\n\t0xAE605B02, 0x00000003, 0x002EE288, 0xAE604E02,\n\t// Block 56, offset 0xe00\n\t0xAE605B02, 0x00000002, 0x402EE220, 0xAE605202, 0x00000002, 0x002EE288,\n\t0xAE605202, 0x00000003, 0x402EE220, 0xAE605202, 0xAE605B02, 0x00000003,\n\t0x002EE288, 0xAE605202, 0xAE605B02, 0x00000002, 0x402EE220, 0xA0005402,\n\t0x00000002, 0x002EE288, 0xA0005402, 0x00000003, 0x402EE220, 0xA0005402,\n\t0xAE603202, 0x00000003, 0x002EE288, 0xA0005402, 0xAE603202, 0x00000002,\n\t0x402EE220, 0xACA05902, 0x00000002, 0x002EE288, 0xACA05902, 0x00000003,\n\t0x402EE220, 0xACA05902, 0xAE605B02, 0x00000003, 0x002EE288, 0xACA05902,\n\t0xAE605B02, 0x00000002, 0x402EE220, 0xAE605B02, 0x00000002, 0x002EE288,\n\t0xAE605B02, 0x00000003, 0x402EE220, 0xAE605B02, 0xAE603202, 0x00000003,\n\t0x002EE288, 0xAE605B02, 0xAE603202, 0x00000003, 0x402EE220, 0xAE605B02,\n\t0xAE603502, 0x00000003, 0x002EE288, 0xAE605B02,\n\t// Block 57, offset 0xe40\n\t0xAE603502, 0x00000002, 0x402EE220, 0xAE606402, 0x00000002, 0x002EE288,\n\t0xAE606402, 0x00000002, 0x402EE220, 0xAE606502, 0x00000002, 0x002EE288,\n\t0xAE606502, 0x00000002, 0x402EE220, 0xAE606702, 0x00000002, 0x002EE288,\n\t0xAE606702, 0x00000002, 0x402EE220, 0xAD806802, 0x00000002, 0x002EE288,\n\t0xAD806802, 0x00000003, 0x402EE220, 0xAD806802, 0xAE603202, 0x00000003,\n\t0x002EE288, 0xAD806802, 0xAE603202, 0x00000003, 0x402EE220, 0xAD806802,\n\t0xAE603502, 0x00000003, 0x002EE288, 0xAD806802, 0xAE603502, 0x00000003,\n\t0x402EE220, 0xAD806802, 0xAE604E02, 0x00000003, 0x002EE288, 0xAD806802,\n\t0xAE604E02, 0x00000003, 0x402EE220, 0xAD806802, 0xAE606402, 0x00000003,\n\t0x002EE288, 0xAD806802, 0xAE606402, 0x00000003, 0x402EE220, 0xAD806802,\n\t0xADC07002, 0x00000003, 0x002EE288, 0xAD806802,\n\t// Block 58, offset 0xe80\n\t0xADC07002, 0x00000002, 0x402EE220, 0xADC07002, 0x00000002, 0x002EE288,\n\t0xADC07002, 0x00000003, 0x402EE220, 0xADC07002, 0xAE603C02, 0x00000003,\n\t0x002EE288, 0xADC07002, 0xAE603C02, 0x00000003, 0x002EE284, 0xA0013904,\n\t0x002C9884, 0x00000003, 0x002EE28A, 0xA0013904, 0x002C988A, 0x00000003,\n\t0x002EE294, 0xA0013914, 0x002C9894, 0x00000002, 0x002EE29D, 0x002DFE9D,\n\t0x00000002, 0x002EE284, 0x002EE284, 0x00000002, 0x002EE28A, 0x002EE28A,\n\t0x00000002, 0x402F2C20, 0xAE603202, 0x00000002, 0x002F2C88, 0xAE603202,\n\t0x00000002, 0x402F2C20, 0xAE605202, 0x00000002, 0x002F2C88, 0xAE605202,\n\t0x00000004, 0x002F2C9C, 0x0002E49C, 0x002E829C, 0x0002E49C, 0x00000002,\n\t0x002F2C9D, 0x002BDE9D, 0x00000003, 0x002F2C9D, 0x002F2C9D, 0x002E829D,\n\t0x00000003, 0x002F2C9D, 0x002F2C9D, 0x0030BE9D,\n\t// Block 59, offset 0xec0\n\t0x00000003, 0x002F2C9D, 0x00302C9D, 0x002C989D, 0x00000002, 0x002F5684,\n\t0x002F2C84, 0x00000002, 0x402F7A20, 0xAE603202, 0x00000002, 0x002F7A88,\n\t0xAE603202, 0x00000002, 0x402F7A20, 0xAE604102, 0x00000002, 0x002F7A88,\n\t0xAE604102, 0x00000002, 0x402F7A20, 0xAE605202, 0x00000002, 0x002F7A88,\n\t0xAE605202, 0x00000002, 0x402F7A20, 0xACA05602, 0x00000002, 0x002F7A88,\n\t0xACA05602, 0x00000002, 0x002F7A84, 0xA0006104, 0x00000002, 0x002F7A8A,\n\t0xA0006104, 0x00000002, 0x402F7A20, 0xAE606502, 0x00000002, 0x002F7A88,\n\t0xAE606502, 0x00000002, 0x402F7A20, 0xAE606702, 0x00000002, 0x002F7A88,\n\t0xAE606702, 0x00000002, 0x402F7A20, 0xADC07002, 0x00000002, 0x002F7A88,\n\t0xADC07002, 0x00000003, 0x402F7A20, 0xADC07002, 0xAE605B02, 0x00000003,\n\t0x002F7A88, 0xADC07002, 0xAE605B02, 0x00000002,\n\t// Block 60, offset 0xf00\n\t0x402F7A20, 0xADC07B02, 0x00000002, 0x002F7A88, 0xADC07B02, 0x00000002,\n\t0x002F7A84, 0xA0013A04, 0x00000002, 0x002F7A8A, 0xA0013A04, 0x00000003,\n\t0x002F7A9C, 0x002BDE9C, 0x002C629C, 0x00000005, 0x002F7A9C, 0x002BDE9C,\n\t0x002C629C, 0x0009569C, 0x002FE69C, 0x00000006, 0x002F7A9C, 0x002BDE9C,\n\t0x002C629C, 0x0009569C, 0x002FE69C, 0x0029D09C, 0x00000002, 0x402FE620,\n\t0xAE603202, 0x00000002, 0x002FE688, 0xAE603202, 0x00000003, 0x402FE620,\n\t0xAE603202, 0xAE605202, 0x00000003, 0x002FE688, 0xAE603202, 0xAE605202,\n\t0x00000002, 0x402FE620, 0xAE603C02, 0x00000002, 0x002FE688, 0xAE603C02,\n\t0x00000002, 0x402FE620, 0xAE604102, 0x00000002, 0x002FE688, 0xAE604102,\n\t0x00000003, 0x402FE620, 0xAE604102, 0xAE605202, 0x00000003, 0x002FE688,\n\t0xAE604102, 0xAE605202, 0x00000002, 0x402FE620,\n\t// Block 61, offset 0xf40\n\t0xAE605202, 0x00000002, 0x002FE688, 0xAE605202, 0x00000002, 0x402FE620,\n\t0xACA05602, 0x00000002, 0x002FE688, 0xACA05602, 0x00000002, 0x002FE684,\n\t0xA0006104, 0x00000002, 0x002FE68A, 0xA0006104, 0x00000002, 0x402FE620,\n\t0xADC07002, 0x00000002, 0x002FE688, 0xADC07002, 0x00000003, 0x402FE620,\n\t0xADC07002, 0xAE605202, 0x00000003, 0x002FE688, 0xADC07002, 0xAE605202,\n\t0x00000002, 0x402FE620, 0xADC07702, 0x00000002, 0x002FE688, 0xADC07702,\n\t0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x84E617F3, 0xAE613A04,\n\t0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x002FE68A, 0xA0013A04,\n\t0x00000003, 0x002FE684, 0xA0013A04, 0xAE605202, 0x00000002, 0x002FE69D,\n\t0x002BDE9D, 0x00000003, 0x002FE69D, 0x002EE29D, 0x002FE69D, 0x00000003,\n\t0x002FE684, 0xA0013904, 0x002FE684, 0x00000003,\n\t// Block 62, offset 0xf80\n\t0x002FE68A, 0xA0013904, 0x002FE68A, 0x00000003, 0x002FE684, 0xA0013A04,\n\t0x00302C84, 0x00000002, 0x40302C20, 0xAE604102, 0x00000002, 0x00302C88,\n\t0xAE604102, 0x00000002, 0x40302C20, 0xAE604702, 0x00000002, 0x40302C20,\n\t0xAE605202, 0x00000002, 0x00302C88, 0xAE605202, 0x00000002, 0x40302C20,\n\t0xACA05602, 0x00000002, 0x00302C88, 0xACA05602, 0x00000002, 0x40302C20,\n\t0xADC07002, 0x00000002, 0x00302C88, 0xADC07002, 0x00000002, 0x40302C20,\n\t0xADC07702, 0x00000002, 0x00302C88, 0xADC07702, 0x00000002, 0x40302C20,\n\t0xADC07802, 0x00000002, 0x00302C88, 0xADC07802, 0x00000002, 0x40302C20,\n\t0xADC07B02, 0x00000002, 0x00302C88, 0xADC07B02, 0x00000002, 0x00302C84,\n\t0xA0013A04, 0x00000002, 0x00302C8A, 0xA0013A04, 0x00000002, 0x00302C84,\n\t0x002C5684, 0x00000003, 0x00302C8A, 0x002C988A,\n\t// Block 63, offset 0xfc0\n\t0x002E228A, 0x00000003, 0x00302C84, 0xA0013904, 0x002D6884, 0x00000003,\n\t0x00302C9D, 0x002D689D, 0x00312A9C, 0x00000002, 0x00302C84, 0x002FE684,\n\t0x00000002, 0x00302C84, 0x002FE684, 0x00000002, 0x00302C84, 0x00300884,\n\t0x00000002, 0x00302C84, 0x00312A84, 0x00000002, 0x00302C8A, 0x00312A84,\n\t0x00000002, 0x40306C20, 0xAE603202, 0x00000002, 0x00306C88, 0xAE603202,\n\t0x00000002, 0x40306C20, 0xAE603502, 0x00000002, 0x00306C88, 0xAE603502,\n\t0x00000002, 0x40306C20, 0xAE603702, 0x00000002, 0x00306C88, 0xAE603702,\n\t0x00000002, 0x40306C20, 0xAE603C02, 0x00000002, 0x00306C88, 0xAE603C02,\n\t0x00000002, 0x40306C20, 0xAE604102, 0x00000002, 0x00306C88, 0xAE604102,\n\t0x00000002, 0x40306C20, 0xAE604302, 0x00000002, 0x00306C88, 0xAE604302,\n\t0x00000002, 0x40306C20, 0xAE604702, 0x00000002,\n\t// Block 64, offset 0x1000\n\t0x00306C88, 0xAE604702, 0x00000003, 0x40306C20, 0xAE604702, 0xAE603202,\n\t0x00000003, 0x00306C88, 0xAE604702, 0xAE603202, 0x00000003, 0x40306C20,\n\t0xAE604702, 0xAE603502, 0x00000003, 0x00306C88, 0xAE604702, 0xAE603502,\n\t0x00000003, 0x40306C20, 0xAE604702, 0xAE604102, 0x00000003, 0x00306C88,\n\t0xAE604702, 0xAE604102, 0x00000003, 0x40306C20, 0xAE604702, 0xAE605B02,\n\t0x00000003, 0x00306C88, 0xAE604702, 0xAE605B02, 0x00000002, 0x40306C20,\n\t0xAE604D02, 0x00000002, 0x00306C88, 0xAE604D02, 0x00000002, 0x40306C20,\n\t0xAE604E02, 0x00000002, 0x00306C88, 0xAE604E02, 0x00000003, 0x40306C20,\n\t0xAE604E02, 0xAE603202, 0x00000003, 0x00306C88, 0xAE604E02, 0xAE603202,\n\t0x00000002, 0x40306C20, 0xACA05902, 0x00000002, 0x00306C88, 0xACA05902,\n\t0x00000002, 0x40306C20, 0xAE605B02, 0x00000002,\n\t// Block 65, offset 0x1040\n\t0x00306C88, 0xAE605B02, 0x00000003, 0x40306C20, 0xAE605B02, 0xAE604702,\n\t0x00000003, 0x00306C88, 0xAE605B02, 0xAE604702, 0x00000002, 0x40306C20,\n\t0xAE606402, 0x00000002, 0x00306C88, 0xAE606402, 0x00000002, 0x40306C20,\n\t0xAE606502, 0x00000002, 0x00306C88, 0xAE606502, 0x00000002, 0x40306C20,\n\t0xAE606702, 0x00000002, 0x00306C88, 0xAE606702, 0x00000002, 0x40306C20,\n\t0xAD806802, 0x00000002, 0x00306C88, 0xAD806802, 0x00000003, 0x40306C20,\n\t0xAD806802, 0xAE603202, 0x00000003, 0x00306C88, 0xAD806802, 0xAE603202,\n\t0x00000003, 0x40306C20, 0xAD806802, 0xAE603502, 0x00000003, 0x00306C88,\n\t0xAD806802, 0xAE603502, 0x00000003, 0x40306C20, 0xAD806802, 0xAE604E02,\n\t0x00000003, 0x00306C88, 0xAD806802, 0xAE604E02, 0x00000003, 0x40306C20,\n\t0xAD806802, 0xAE606402, 0x00000003, 0x00306C88,\n\t// Block 66, offset 0x1080\n\t0xAD806802, 0xAE606402, 0x00000003, 0x40306C20, 0xAD806802, 0xADC07002,\n\t0x00000003, 0x00306C88, 0xAD806802, 0xADC07002, 0x00000002, 0x40306C20,\n\t0xADC07002, 0x00000002, 0x00306C88, 0xADC07002, 0x00000002, 0x40306C20,\n\t0xADC07502, 0x00000002, 0x00306C88, 0xADC07502, 0x00000002, 0x40306C20,\n\t0xADC07802, 0x00000002, 0x00306C88, 0xADC07802, 0x00000002, 0x40306C20,\n\t0xADC07A02, 0x00000002, 0x00306C88, 0xADC07A02, 0x00000003, 0x00306C9D,\n\t0x002F2C9D, 0x0002BA9C, 0x00000002, 0x4030BE20, 0xAE604E02, 0x00000002,\n\t0x0030BE88, 0xAE604E02, 0x00000002, 0x4030BE20, 0xADC07002, 0x00000002,\n\t0x0030BE88, 0xADC07002, 0x00000003, 0x0030BE9D, 0x0009569C, 0x002E829C,\n\t0x00000004, 0x0030BE84, 0x002D9A84, 0x002D9A84, 0x002D9A9F, 0x00000004,\n\t0x0030BE8A, 0x002D9A8A, 0x002D9A8A, 0x002D9A9F,\n\t// Block 67, offset 0x10c0\n\t0x00000002, 0x0030BE9D, 0x002FE69D, 0x00000002, 0x0030BE84, 0x00310084,\n\t0x00000002, 0x0030BE8A, 0x0031008A, 0x00000002, 0x4030E220, 0xAE603202,\n\t0x00000002, 0x0030E288, 0xAE603202, 0x00000002, 0x4030E220, 0xAE603502,\n\t0x00000002, 0x0030E288, 0xAE603502, 0x00000002, 0x4030E220, 0xAE603C02,\n\t0x00000002, 0x0030E288, 0xAE603C02, 0x00000002, 0x4030E220, 0xAE604302,\n\t0x00000002, 0x4030E220, 0xAE604702, 0x00000002, 0x0030E288, 0xAE604702,\n\t0x00000002, 0x4030E220, 0xAE605202, 0x00000002, 0x0030E288, 0xAE605202,\n\t0x00000002, 0x4030E220, 0xADC07002, 0x00000002, 0x0030E288, 0xADC07002,\n\t0x00000002, 0x0030E29D, 0x002C3A9D, 0x00000002, 0x4030F620, 0xAE604702,\n\t0x00000002, 0x0030F688, 0xAE604702, 0x00000002, 0x4030F620, 0xAE605202,\n\t0x00000002, 0x0030F688, 0xAE605202, 0x00000002,\n\t// Block 68, offset 0x1100\n\t0x40310020, 0xAE603202, 0x00000002, 0x00310088, 0xAE603202, 0x00000002,\n\t0x40310020, 0xAE603502, 0x00000002, 0x00310088, 0xAE603502, 0x00000002,\n\t0x40310020, 0xAE603C02, 0x00000002, 0x00310088, 0xAE603C02, 0x00000002,\n\t0x40310020, 0xAE604302, 0x00000002, 0x40310020, 0xAE604702, 0x00000002,\n\t0x00310088, 0xAE604702, 0x00000002, 0x40310020, 0xAE604E02, 0x00000002,\n\t0x00310088, 0xAE604E02, 0x00000002, 0x40310020, 0xAE605202, 0x00000002,\n\t0x00310088, 0xAE605202, 0x00000002, 0x40310020, 0xAE605B02, 0x00000002,\n\t0x00310088, 0xAE605B02, 0x00000002, 0x40310020, 0xAE606402, 0x00000002,\n\t0x00310088, 0xAE606402, 0x00000002, 0x40310020, 0xADC07002, 0x00000002,\n\t0x00310088, 0xADC07002, 0x00000002, 0x40312A20, 0xAE603202, 0x00000002,\n\t0x00312A88, 0xAE603202, 0x00000002, 0x40312A20,\n\t// Block 69, offset 0x1140\n\t0xAE603C02, 0x00000002, 0x00312A88, 0xAE603C02, 0x00000002, 0x40312A20,\n\t0xAE604102, 0x00000002, 0x00312A88, 0xAE604102, 0x00000002, 0x40312A20,\n\t0xAE605202, 0x00000002, 0x00312A88, 0xAE605202, 0x00000002, 0x40312A20,\n\t0xADC07002, 0x00000002, 0x00312A88, 0xADC07002, 0x00000002, 0x40312A20,\n\t0xADC07B02, 0x00000002, 0x00312A88, 0xADC07B02, 0x00000002, 0x00312A84,\n\t0x0030E284, 0x00000002, 0x40316420, 0xAE604102, 0x00000002, 0x00316488,\n\t0xAE604102, 0x00000002, 0x40325220, 0xAE602202, 0x00000002, 0x00325288,\n\t0xAE602202, 0x00000003, 0x40325220, 0xAE602202, 0xAE603202, 0x00000003,\n\t0x00325288, 0xAE602202, 0xAE603202, 0x00000004, 0x40325220, 0xAE602202,\n\t0xAE603202, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602202, 0xAE603202,\n\t0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,\n\t// Block 70, offset 0x1180\n\t0xAE603502, 0x00000003, 0x00325288, 0xAE602202, 0xAE603502, 0x00000004,\n\t0x40325220, 0xAE602202, 0xAE603502, 0xAF007F02, 0x00000004, 0x00325288,\n\t0xAE602202, 0xAE603502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,\n\t0xAE604502, 0x00000003, 0x00325288, 0xAE602202, 0xAE604502, 0x00000004,\n\t0x40325220, 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00325288,\n\t0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,\n\t0xAF007F02, 0x00000003, 0x00325288, 0xAE602202, 0xAF007F02, 0x00000002,\n\t0x40325220, 0xAE602A02, 0x00000002, 0x00325288, 0xAE602A02, 0x00000003,\n\t0x40325220, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325288, 0xAE602A02,\n\t0xAE603202, 0x00000004, 0x40325220, 0xAE602A02, 0xAE603202, 0xAF007F02,\n\t0x00000004, 0x00325288, 0xAE602A02, 0xAE603202,\n\t// Block 71, offset 0x11c0\n\t0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE603502, 0x00000003,\n\t0x00325288, 0xAE602A02, 0xAE603502, 0x00000004, 0x40325220, 0xAE602A02,\n\t0xAE603502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE603502,\n\t0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE604502, 0x00000003,\n\t0x00325288, 0xAE602A02, 0xAE604502, 0x00000004, 0x40325220, 0xAE602A02,\n\t0xAE604502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE604502,\n\t0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAF007F02, 0x00000003,\n\t0x00325288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x40325220, 0xAE603202,\n\t0x00000002, 0x00325288, 0xAE603202, 0x00000003, 0x40325220, 0xAE603202,\n\t0xAF007F02, 0x00000002, 0x40325220, 0xAE603502, 0x00000002, 0x00325288,\n\t0xAE603502, 0x00000003, 0x40325220, 0xAE603502,\n\t// Block 72, offset 0x1200\n\t0xAF007F02, 0x00000002, 0x40325220, 0xAE603702, 0x00000002, 0x00325288,\n\t0xAE603702, 0x00000002, 0x40325220, 0xAE604502, 0x00000003, 0x40325220,\n\t0xAE604502, 0xAF007F02, 0x00000002, 0x40325220, 0xAE605B02, 0x00000002,\n\t0x00325288, 0xAE605B02, 0x00000002, 0x40325220, 0xAF007F02, 0x00000002,\n\t0x00325288, 0xAF007F02, 0x00000002, 0x40325C20, 0xAE602202, 0x00000002,\n\t0x00325C88, 0xAE602202, 0x00000003, 0x40325C20, 0xAE602202, 0xAE603202,\n\t0x00000003, 0x00325C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40325C20,\n\t0xAE602202, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602202, 0xAE603502,\n\t0x00000002, 0x40325C20, 0xAE602A02, 0x00000002, 0x00325C88, 0xAE602A02,\n\t0x00000003, 0x40325C20, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325C88,\n\t0xAE602A02, 0xAE603202, 0x00000003, 0x40325C20,\n\t// Block 73, offset 0x1240\n\t0xAE602A02, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602A02, 0xAE603502,\n\t0x00000002, 0x40325C20, 0xAE603202, 0x00000002, 0x00325C88, 0xAE603202,\n\t0x00000002, 0x40325C20, 0xAE603502, 0x00000002, 0x00325C88, 0xAE603502,\n\t0x00000002, 0x40326820, 0xAE602202, 0x00000002, 0x00326888, 0xAE602202,\n\t0x00000003, 0x40326820, 0xAE602202, 0xAE603202, 0x00000003, 0x00326888,\n\t0xAE602202, 0xAE603202, 0x00000004, 0x40326820, 0xAE602202, 0xAE603202,\n\t0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603202, 0xAF007F02,\n\t0x00000003, 0x40326820, 0xAE602202, 0xAE603502, 0x00000003, 0x00326888,\n\t0xAE602202, 0xAE603502, 0x00000004, 0x40326820, 0xAE602202, 0xAE603502,\n\t0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603502, 0xAF007F02,\n\t0x00000003, 0x40326820, 0xAE602202, 0xAE604502,\n\t// Block 74, offset 0x1280\n\t0x00000003, 0x00326888, 0xAE602202, 0xAE604502, 0x00000004, 0x40326820,\n\t0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00326888, 0xAE602202,\n\t0xAE604502, 0xAF007F02, 0x00000003, 0x40326820, 0xAE602202, 0xAF007F02,\n\t0x00000003, 0x00326888, 0xAE602202, 0xAF007F02, 0x00000002, 0x40326820,\n\t0xAE602A02, 0x00000002, 0x00326888, 0xAE602A02, 0x00000003, 0x40326820,\n\t0xAE602A02, 0xAE603202, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603202,\n\t0x00000004, 0x40326820, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000004,\n\t0x00326888, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003, 0x40326820,\n\t0xAE602A02, 0xAE603502, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603502,\n\t0x00000004, 0x40326820, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000004,\n\t0x00326888, 0xAE602A02, 0xAE603502, 0xAF007F02,\n\t// Block 75, offset 0x12c0\n\t0x00000003, 0x40326820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326888,\n\t0xAE602A02, 0xAE604502, 0x00000004, 0x40326820, 0xAE602A02, 0xAE604502,\n\t0xAF007F02, 0x00000004, 0x00326888, 0xAE602A02, 0xAE604502, 0xAF007F02,\n\t0x00000003, 0x40326820, 0xAE602A02, 0xAF007F02, 0x00000003, 0x00326888,\n\t0xAE602A02, 0xAF007F02, 0x00000002, 0x40326820, 0xAE603202, 0x00000002,\n\t0x00326888, 0xAE603202, 0x00000003, 0x40326820, 0xAE603202, 0xAF007F02,\n\t0x00000002, 0x40326820, 0xAE603502, 0x00000002, 0x00326888, 0xAE603502,\n\t0x00000003, 0x40326820, 0xAE603502, 0xAF007F02, 0x00000002, 0x40326820,\n\t0xAE604502, 0x00000003, 0x40326820, 0xAE604502, 0xAF007F02, 0x00000002,\n\t0x40326820, 0xAF007F02, 0x00000002, 0x00326888, 0xAF007F02, 0x00000002,\n\t0x40326C20, 0xAE602202, 0x00000002, 0x00326C88,\n\t// Block 76, offset 0x1300\n\t0xAE602202, 0x00000003, 0x40326C20, 0xAE602202, 0xAE603202, 0x00000003,\n\t0x00326C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602202,\n\t0xAE603502, 0x00000003, 0x00326C88, 0xAE602202, 0xAE603502, 0x00000003,\n\t0x40326C20, 0xAE602202, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602202,\n\t0xAE604502, 0x00000002, 0x40326C20, 0xAE602A02, 0x00000002, 0x00326C88,\n\t0xAE602A02, 0x00000003, 0x40326C20, 0xAE602A02, 0xAE603202, 0x00000003,\n\t0x00326C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602A02,\n\t0xAE603502, 0x00000003, 0x00326C88, 0xAE602A02, 0xAE603502, 0x00000003,\n\t0x40326C20, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602A02,\n\t0xAE604502, 0x00000002, 0x40326C20, 0xAE603202, 0x00000002, 0x00326C88,\n\t0xAE603202, 0x00000002, 0x40326C20, 0xAE603502,\n\t// Block 77, offset 0x1340\n\t0x00000002, 0x00326C88, 0xAE603502, 0x00000002, 0x40326C20, 0xAE603702,\n\t0x00000002, 0x00326C88, 0xAE603702, 0x00000002, 0x40326C20, 0xAE604502,\n\t0x00000002, 0x40326C20, 0xAE604702, 0x00000002, 0x00326C88, 0xAE604702,\n\t0x00000003, 0x40326C20, 0xAE604702, 0xAE603202, 0x00000003, 0x40326C20,\n\t0xAE604702, 0xAE603502, 0x00000003, 0x40326C20, 0xAE604702, 0xAE604502,\n\t0x00000002, 0x40326C20, 0xAE605B02, 0x00000002, 0x00326C88, 0xAE605B02,\n\t0x00000003, 0x00327084, 0x00325284, 0x00326C84, 0x00000003, 0x0032708A,\n\t0x00325284, 0x00326C84, 0x00000002, 0x40327C20, 0xAE602202, 0x00000002,\n\t0x00327C88, 0xAE602202, 0x00000003, 0x40327C20, 0xAE602202, 0xAE603202,\n\t0x00000003, 0x00327C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40327C20,\n\t0xAE602202, 0xAE603502, 0x00000003, 0x00327C88,\n\t// Block 78, offset 0x1380\n\t0xAE602202, 0xAE603502, 0x00000002, 0x40327C20, 0xAE602A02, 0x00000002,\n\t0x00327C88, 0xAE602A02, 0x00000003, 0x40327C20, 0xAE602A02, 0xAE603202,\n\t0x00000003, 0x00327C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40327C20,\n\t0xAE602A02, 0xAE603502, 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603502,\n\t0x00000002, 0x40327C20, 0xAE603202, 0x00000002, 0x00327C88, 0xAE603202,\n\t0x00000002, 0x40327C20, 0xAE603502, 0x00000002, 0x00327C88, 0xAE603502,\n\t0x00000002, 0x40328820, 0xAE602202, 0x00000002, 0x40328820, 0xAE602A02,\n\t0x00000002, 0x00328888, 0xAE602A02, 0x00000002, 0x40329820, 0xAE602202,\n\t0x00000003, 0x40329820, 0xAE602202, 0xAE603202, 0x00000003, 0x40329820,\n\t0xAE602202, 0xAE603502, 0x00000003, 0x40329820, 0xAE602202, 0xAE604502,\n\t0x00000002, 0x40329820, 0xAE602A02, 0x00000002,\n\t// Block 79, offset 0x13c0\n\t0x00329888, 0xAE602A02, 0x00000003, 0x40329820, 0xAE602A02, 0xAE603202,\n\t0x00000003, 0x00329888, 0xAE602A02, 0xAE603202, 0x00000003, 0x40329820,\n\t0xAE602A02, 0xAE603502, 0x00000003, 0x00329888, 0xAE602A02, 0xAE603502,\n\t0x00000003, 0x40329820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00329888,\n\t0xAE602A02, 0xAE604502, 0x00000002, 0x40329820, 0xAE603202, 0x00000002,\n\t0x00329888, 0xAE603202, 0x00000002, 0x40329820, 0xAE603502, 0x00000002,\n\t0x00329888, 0xAE603502, 0x00000002, 0x40329820, 0xAE603702, 0x00000002,\n\t0x00329888, 0xAE603702, 0x00000002, 0x40329820, 0xAE604502, 0x00000002,\n\t0x40329820, 0xAE604702, 0x00000002, 0x00329888, 0xAE604702, 0x00000003,\n\t0x40329820, 0xAE604702, 0xAE603202, 0x00000003, 0x40329820, 0xAE604702,\n\t0xAE603502, 0x00000003, 0x40329820, 0xAE604702,\n\t// Block 80, offset 0x1400\n\t0xAE604502, 0x00000002, 0x40329820, 0xAE605B02, 0x00000002, 0x00329888,\n\t0xAE605B02, 0x00000002, 0x4032A220, 0xAE602202, 0x00000002, 0x0032A288,\n\t0xAE602202, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603202, 0x00000003,\n\t0x0032A288, 0xAE602202, 0xAE603202, 0x00000004, 0x4032A220, 0xAE602202,\n\t0xAE603202, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603202,\n\t0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603502, 0x00000003,\n\t0x0032A288, 0xAE602202, 0xAE603502, 0x00000004, 0x4032A220, 0xAE602202,\n\t0xAE603502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603502,\n\t0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE604502, 0x00000003,\n\t0x0032A288, 0xAE602202, 0xAE604502, 0x00000004, 0x4032A220, 0xAE602202,\n\t0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288,\n\t// Block 81, offset 0x1440\n\t0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202,\n\t0xAF007F02, 0x00000003, 0x0032A288, 0xAE602202, 0xAF007F02, 0x00000002,\n\t0x4032A220, 0xAE602A02, 0x00000002, 0x0032A288, 0xAE602A02, 0x00000003,\n\t0x4032A220, 0xAE602A02, 0xAE603202, 0x00000003, 0x0032A288, 0xAE602A02,\n\t0xAE603202, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603202, 0xAF007F02,\n\t0x00000004, 0x0032A288, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003,\n\t0x4032A220, 0xAE602A02, 0xAE603502, 0x00000003, 0x0032A288, 0xAE602A02,\n\t0xAE603502, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603502, 0xAF007F02,\n\t0x00000004, 0x0032A288, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000003,\n\t0x4032A220, 0xAE602A02, 0xAE604502, 0x00000003, 0x0032A288, 0xAE602A02,\n\t0xAE604502, 0x00000004, 0x4032A220, 0xAE602A02,\n\t// Block 82, offset 0x1480\n\t0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602A02, 0xAE604502,\n\t0xAF007F02, 0x00000003, 0x4032A220, 0xAE602A02, 0xAF007F02, 0x00000003,\n\t0x0032A288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x4032A220, 0xAE603202,\n\t0x00000002, 0x0032A288, 0xAE603202, 0x00000003, 0x4032A220, 0xAE603202,\n\t0xAF007F02, 0x00000002, 0x4032A220, 0xAE603502, 0x00000002, 0x0032A288,\n\t0xAE603502, 0x00000003, 0x4032A220, 0xAE603502, 0xAF007F02, 0x00000002,\n\t0x4032A220, 0xAE604502, 0x00000003, 0x4032A220, 0xAE604502, 0xAF007F02,\n\t0x00000002, 0x4032A220, 0xAF007F02, 0x00000002, 0x0032A288, 0xAF007F02,\n\t0x00000003, 0x0032C084, 0x0032AA84, 0x0032BE84, 0x00000002, 0x00336284,\n\t0xA0013A04, 0x00000002, 0x0033628A, 0xA0013A04, 0x00000002, 0x4033B220,\n\t0xAE603502, 0x00000002, 0x0033B288, 0xAE603502,\n\t// Block 83, offset 0x14c0\n\t0x00000002, 0x4033B220, 0xAE604702, 0x00000002, 0x0033B288, 0xAE604702,\n\t0x00000002, 0x4033CA20, 0xAE603702, 0x00000002, 0x0033CA88, 0xAE603702,\n\t0x00000002, 0x40341420, 0xAE603502, 0x00000002, 0x00341488, 0xAE603502,\n\t0x00000002, 0x40341420, 0xAE605B02, 0x00000002, 0x00341488, 0xAE605B02,\n\t0x00000002, 0x84E61A9D, 0x84E61AA6, 0x00000002, 0x40357220, 0xAE605B02,\n\t0x00000002, 0x00357288, 0xAE605B02, 0x00000002, 0x40389020, 0xA1108C02,\n\t0x00000002, 0x40389020, 0xA1208D02, 0x00000002, 0x40389020, 0xA1509202,\n\t0x00000002, 0x40389220, 0xA1509202, 0x00000002, 0x40389220, 0xA1709502,\n\t0x00000002, 0x40389420, 0xA1509202, 0x00000002, 0x40389620, 0xA1509202,\n\t0x00000002, 0x40389820, 0xA1509202, 0x00000002, 0x40389A20, 0xA1308E02,\n\t0x00000002, 0x40389A20, 0xA1509202, 0x00000002,\n\t// Block 84, offset 0x1500\n\t0x00389A84, 0x00389A84, 0x00000002, 0x00389A84, 0x0038A284, 0x00000002,\n\t0x40389C20, 0xA1509202, 0x00000002, 0x4038A020, 0xA1509202, 0x00000002,\n\t0x4038A220, 0xA0E08902, 0x00000002, 0x4038A220, 0xA1509202, 0x00000002,\n\t0x0038A284, 0x0038A284, 0x00000003, 0x0038A284, 0x0038A284, 0xA1108C02,\n\t0x00000002, 0x4038A420, 0xA1509202, 0x00000002, 0x0038A499, 0xA1509202,\n\t0x00000002, 0x4038A420, 0xA1709502, 0x00000002, 0x4038A620, 0xA1509202,\n\t0x00000002, 0x4038A820, 0xA1509202, 0x00000002, 0x4038AA20, 0xA1509202,\n\t0x00000002, 0x4038AC20, 0xA1509202, 0x00000002, 0x4038B020, 0xA1509202,\n\t0x00000002, 0x0038B099, 0xA1509202, 0x00000002, 0x4038B020, 0xA1709502,\n\t0x00000002, 0x4038B220, 0xA1509202, 0x00000002, 0x4038B420, 0xA1509202,\n\t0x00000002, 0x4038B620, 0xA1509202, 0x00000002,\n\t// Block 85, offset 0x1540\n\t0x4038B820, 0xA1909002, 0x00000002, 0x4038B820, 0xA1809102, 0x00000002,\n\t0x4038B820, 0xA1509202, 0x00000003, 0x4038B820, 0xA1509202, 0xA1909002,\n\t0x00000003, 0x4038B820, 0xA1509202, 0xA1809102, 0x00000002, 0x4038BA20,\n\t0xA1509202, 0x00000002, 0x00391C84, 0xA0013A04, 0x00000002, 0x00393099,\n\t0x00393899, 0x00000002, 0x0039309A, 0x0039389A, 0x00000002, 0x00393097,\n\t0x00396497, 0x00000002, 0x0039309A, 0x0039649A, 0x00000002, 0x00393097,\n\t0x00397297, 0x00000002, 0x0039309A, 0x0039729A, 0x00000002, 0x00393097,\n\t0x00397497, 0x00000002, 0x00393099, 0x0039A499, 0x00000002, 0x00393099,\n\t0x0039A699, 0x00000002, 0x00393097, 0x003A4E97, 0x00000002, 0x00393098,\n\t0x003A4E98, 0x00000002, 0x00393099, 0x003A4E99, 0x00000002, 0x0039309A,\n\t0x003A4E9A, 0x00000002, 0x00393099, 0x003A5699,\n\t// Block 86, offset 0x1580\n\t0x00000002, 0x00393097, 0x003A6897, 0x00000002, 0x00393098, 0x003A6898,\n\t0x00000002, 0x00393099, 0x003A7299, 0x00000002, 0x0039309A, 0x003A729A,\n\t0x00000002, 0x00393099, 0x003A7499, 0x00000002, 0x0039309A, 0x003A749A,\n\t0x00000002, 0x00393099, 0x003A7A99, 0x00000002, 0x0039309A, 0x003A7A9A,\n\t0x00000002, 0x00393099, 0x003A7C99, 0x00000002, 0x0039309A, 0x003A7C9A,\n\t0x00000002, 0x00393099, 0x003A7E99, 0x00000002, 0x0039309A, 0x003A7E9A,\n\t0x00000002, 0x00393097, 0x003A8E97, 0x00000002, 0x00393099, 0x003A8E99,\n\t0x00000002, 0x00393099, 0x003A8E99, 0x00000002, 0x0039309A, 0x003A8E9A,\n\t0x00000002, 0x0039309A, 0x003A8E9A, 0x00000002, 0x00393099, 0x003A9099,\n\t0x00000002, 0x0039309A, 0x003A909A, 0x00000002, 0x00393097, 0x003A9897,\n\t0x00000002, 0x00393099, 0x003A9899, 0x00000002,\n\t// Block 87, offset 0x15c0\n\t0x0039309A, 0x003A989A, 0x00000004, 0x0039389A, 0x003A1A9A, 0x00393C9A,\n\t0x0039A49A, 0x00000004, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A,\n\t0x00000003, 0x00393C99, 0x00397299, 0x003A9099, 0x00000003, 0x00393C99,\n\t0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x00396497, 0x003A4E97,\n\t0x00000003, 0x00395699, 0x00396499, 0x003A8E99, 0x00000003, 0x00395699,\n\t0x00396499, 0x003A9099, 0x00000003, 0x00395697, 0x00397297, 0x00396497,\n\t0x00000003, 0x00395699, 0x00397299, 0x00396499, 0x00000003, 0x00395697,\n\t0x00397297, 0x003A4E97, 0x00000003, 0x00395697, 0x00397497, 0x003A4E97,\n\t0x00000003, 0x00395699, 0x00397499, 0x003A8E99, 0x00000003, 0x00395699,\n\t0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x003A4E97, 0x00396497,\n\t0x00000003, 0x00395697, 0x003A4E97, 0x00397297,\n\t// Block 88, offset 0x1600\n\t0x00000003, 0x00395697, 0x003A4E97, 0x00397497, 0x00000003, 0x00395699,\n\t0x003A4E99, 0x003A8E99, 0x00000003, 0x00395699, 0x003A4E99, 0x003A9099,\n\t0x00000003, 0x00396499, 0x00397299, 0x003A8E99, 0x00000003, 0x00396499,\n\t0x00397299, 0x003A9099, 0x00000008, 0x0039649A, 0x003A409A, 0x0002129A,\n\t0x0039649A, 0x003A409A, 0x0039389A, 0x003A409A, 0x003A689A, 0x00000003,\n\t0x00396497, 0x003A4E97, 0x00397297, 0x00000003, 0x00396499, 0x003A4E99,\n\t0x00397299, 0x00000003, 0x00396499, 0x003A4E99, 0x003A8E99, 0x00000003,\n\t0x00396499, 0x003A4E99, 0x003A9099, 0x00000003, 0x00397299, 0x00396499,\n\t0x003A9099, 0x00000003, 0x00397299, 0x003A4E99, 0x003A8E99, 0x00000003,\n\t0x00397299, 0x003A4E99, 0x003A9099, 0x00000004, 0x0039A49A, 0x0039C69A,\n\t0x003A749A, 0x003A409A, 0x00000003, 0x0039C697,\n\t// Block 89, offset 0x1640\n\t0x00396497, 0x00397297, 0x00000003, 0x0039C699, 0x00396499, 0x003A8E99,\n\t0x00000003, 0x0039C697, 0x00397297, 0x00396497, 0x00000003, 0x0039C699,\n\t0x00397499, 0x003A8E99, 0x00000003, 0x0039C699, 0x00397499, 0x003A9099,\n\t0x00000003, 0x0039C697, 0x003A4E97, 0x00396497, 0x00000003, 0x0039C697,\n\t0x003A4E97, 0x00397297, 0x00000003, 0x0039C699, 0x003A4E99, 0x00397299,\n\t0x00000003, 0x0039C697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C699,\n\t0x003A4E99, 0x003A4E99, 0x00000003, 0x0039C899, 0x00396499, 0x003A9099,\n\t0x00000003, 0x0039C897, 0x00397297, 0x003A4E97, 0x00000003, 0x0039C899,\n\t0x00397299, 0x003A4E99, 0x00000003, 0x0039C899, 0x00397299, 0x003A9099,\n\t0x00000003, 0x0039C897, 0x003A4E97, 0x00397497, 0x00000003, 0x0039C899,\n\t0x003A4E99, 0x00397499, 0x00000003, 0x0039C897,\n\t// Block 90, offset 0x1680\n\t0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C899, 0x003A4E99, 0x003A4E99,\n\t0x00000003, 0x0039DC97, 0x00397297, 0x00397297, 0x00000003, 0x0039DC99,\n\t0x00397299, 0x00397299, 0x00000003, 0x0039DC99, 0x00397299, 0x003A9099,\n\t0x00000004, 0x0039DC9A, 0x003A409A, 0x0039EE9A, 0x003A4E9A, 0x00000003,\n\t0x0039DC9A, 0x003A409A, 0x003A8E9A, 0x00000012, 0x0039DC9A, 0x003A409A,\n\t0x003A8E9A, 0x0002129A, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A,\n\t0x0002129A, 0x0039EE9A, 0x003A409A, 0x003A909A, 0x003A689A, 0x0002129A,\n\t0x003A749A, 0x0039C69A, 0x003A409A, 0x003A4E9A, 0x00000003, 0x0039DC9A,\n\t0x003A409A, 0x003AAA9A, 0x00000003, 0x0039DC97, 0x003A4E97, 0x003A4E97,\n\t0x00000003, 0x0039DC99, 0x003A4E99, 0x003A4E99, 0x00000003, 0x0039DE99,\n\t0x00397299, 0x003A8E99, 0x00000003, 0x0039DE99,\n\t// Block 91, offset 0x16c0\n\t0x00397299, 0x003A9099, 0x00000003, 0x0039DE97, 0x00397497, 0x003A4E97,\n\t0x00000003, 0x0039DE99, 0x00397499, 0x003A4E99, 0x00000003, 0x0039E697,\n\t0x003A4E97, 0x00397297, 0x00000003, 0x0039E699, 0x003A4E99, 0x00397299,\n\t0x00000003, 0x0039E697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039E699,\n\t0x003A4E99, 0x003A9099, 0x00000003, 0x0039EE97, 0x00396497, 0x003A4E97,\n\t0x00000003, 0x0039EE99, 0x00396499, 0x003A4E99, 0x00000004, 0x0039EE9A,\n\t0x003A409A, 0x003A909A, 0x003A689A, 0x00000003, 0x0039EE97, 0x003A4E97,\n\t0x003A4E97, 0x00000003, 0x0039EE99, 0x003A4E99, 0x003A4E99, 0x00000003,\n\t0x0039EE99, 0x003A4E99, 0x003A8E99, 0x00000003, 0x0039EE99, 0x003A4E99,\n\t0x003A9099, 0x00000003, 0x0039F099, 0x003A4E99, 0x003A4E99, 0x00000003,\n\t0x0039F099, 0x003A4E99, 0x003A8E99, 0x00000003,\n\t// Block 92, offset 0x1700\n\t0x0039F099, 0x003A4E99, 0x003A9099, 0x00000003, 0x0039FC97, 0x00397497,\n\t0x003A4E97, 0x00000003, 0x0039FC99, 0x00397499, 0x003A4E99, 0x00000003,\n\t0x0039FC99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A129A, 0x003A409A,\n\t0x003AAA9A, 0x00000003, 0x003A1297, 0x003A4E97, 0x00397297, 0x00000003,\n\t0x003A1299, 0x003A4E99, 0x00397299, 0x00000003, 0x003A1299, 0x003A4E99,\n\t0x003A4E99, 0x00000003, 0x003A1299, 0x003A4E99, 0x003A9099, 0x00000003,\n\t0x003A1A97, 0x003A4E97, 0x003A4E97, 0x00000003, 0x003A1A99, 0x003A4E99,\n\t0x003A4E99, 0x00000003, 0x003A1A99, 0x003A4E99, 0x003A9099, 0x00000002,\n\t0x003A4099, 0x00391E99, 0x00000002, 0x003A409A, 0x00391E9A, 0x00000002,\n\t0x003A4099, 0x00392099, 0x00000002, 0x003A409A, 0x0039209A, 0x00000002,\n\t0x003A4099, 0x00392899, 0x00000002, 0x003A409A,\n\t// Block 93, offset 0x1740\n\t0x0039289A, 0x00000003, 0x003A4097, 0x00396497, 0x00396497, 0x00000003,\n\t0x003A4099, 0x00396499, 0x00396499, 0x00000003, 0x003A4097, 0x00396497,\n\t0x003A4E97, 0x00000003, 0x003A4099, 0x00396499, 0x003A4E99, 0x00000003,\n\t0x003A4099, 0x00396499, 0x003A9099, 0x00000003, 0x003A4097, 0x00397297,\n\t0x003A4E97, 0x00000003, 0x003A4099, 0x00397299, 0x003A4E99, 0x00000003,\n\t0x003A4099, 0x00397299, 0x003A8E99, 0x00000003, 0x003A4099, 0x00397299,\n\t0x003A9099, 0x00000003, 0x003A4097, 0x00397497, 0x003A4E97, 0x00000003,\n\t0x003A4099, 0x00397499, 0x003A4E99, 0x00000003, 0x003A4097, 0x003A4E97,\n\t0x00397297, 0x00000003, 0x003A4099, 0x003A4E99, 0x00397299, 0x00000003,\n\t0x003A4099, 0x003A4E99, 0x003A9099, 0x00000002, 0x003A4E84, 0xA0013A04,\n\t0x00000003, 0x003A4E97, 0x00396497, 0x00397297,\n\t// Block 94, offset 0x1780\n\t0x00000003, 0x003A4E97, 0x00396497, 0x00397497, 0x00000003, 0x003A4E97,\n\t0x00396497, 0x003A4E97, 0x00000003, 0x003A4E99, 0x00396499, 0x003A9099,\n\t0x00000003, 0x003A4E97, 0x00397297, 0x00396497, 0x00000003, 0x003A4E97,\n\t0x00397297, 0x003A4E97, 0x00000004, 0x003A4E9A, 0x0039729A, 0x003A4E9A,\n\t0x0039889A, 0x00000003, 0x003A4E99, 0x00397299, 0x003A9099, 0x00000003,\n\t0x003A4E97, 0x00397497, 0x00396497, 0x00000003, 0x003A4E97, 0x00397497,\n\t0x003A4E97, 0x00000003, 0x003A4E99, 0x00397499, 0x003A9099, 0x00000003,\n\t0x003A4E99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A5697, 0x00396497,\n\t0x00397297, 0x00000003, 0x003A5699, 0x00396499, 0x00397299, 0x00000003,\n\t0x003A5697, 0x00396497, 0x003A4E97, 0x00000003, 0x003A5699, 0x00396499,\n\t0x003A4E99, 0x00000003, 0x003A5699, 0x00396499,\n\t// Block 95, offset 0x17c0\n\t0x003A8E99, 0x00000003, 0x003A5699, 0x00396499, 0x003A9099, 0x00000003,\n\t0x003A5697, 0x00397297, 0x003A4E97, 0x00000003, 0x003A5699, 0x00397299,\n\t0x003A8E99, 0x00000003, 0x003A5699, 0x00397299, 0x003A9099, 0x00000003,\n\t0x003A5699, 0x003A4E99, 0x003A8E99, 0x00000003, 0x003A5699, 0x003A4E99,\n\t0x003A9099, 0x00000003, 0x003A6897, 0x003A4E97, 0x00396497, 0x00000003,\n\t0x003A6897, 0x003A4E97, 0x003A4E97, 0x00000002, 0x403A6C20, 0xAE60BE02,\n\t0x00000002, 0x403A7220, 0xAE60BE02, 0x00000004, 0x003A749A, 0x0039C69A,\n\t0x003A409A, 0x003A4E9A, 0x00000003, 0x003A9099, 0x00396499, 0x003A9099,\n\t0x00000003, 0x003A9099, 0x00397299, 0x003A9099, 0x00000003, 0x003A9097,\n\t0x003A4E97, 0x003A4E97, 0x00000003, 0x003A9099, 0x003A4E99, 0x003A4E99,\n\t0x00000003, 0x003A9099, 0x003A4E99, 0x003A9099,\n\t// Block 96, offset 0x1800\n\t0x00000002, 0x403AAA20, 0xAE60BE02, 0x00000002, 0x003AB284, 0xA0013C04,\n\t0x00000002, 0x003AB484, 0xA0013A04, 0x00000002, 0x003AB484, 0xA0013C04,\n\t0x00000002, 0x003AB884, 0xA0013C04, 0x00000002, 0x003AC484, 0xA0013A04,\n\t0x00000002, 0x003AD884, 0xA0013A04, 0x00000002, 0x003B9484, 0xA0013904,\n\t0x00000002, 0x003B9684, 0xA0013904, 0x00000002, 0x003B9A84, 0xA0013904,\n\t0x00000002, 0x403FEC20, 0xA070F102, 0x00000002, 0x403FEE20, 0xA070F102,\n\t0x00000002, 0x403FF020, 0xA070F102, 0x00000002, 0x403FFC20, 0xA070F102,\n\t0x00000002, 0x40400A20, 0xA070F102, 0x00000002, 0x40400E20, 0xA070F102,\n\t0x00000002, 0x40401A20, 0xA070F102, 0x00000002, 0x40401E20, 0xA070F102,\n\t0x00000002, 0x40402820, 0xA070F102, 0x00000002, 0x40402C20, 0xA070F102,\n\t0x00000002, 0x40403020, 0xA070F102, 0x00000002,\n\t// Block 97, offset 0x1840\n\t0x4040B020, 0xA070F102, 0x00000002, 0x4040B220, 0xA070F102, 0x00000002,\n\t0x0040B684, 0x0040F884, 0x00000002, 0x4040CA20, 0xA070F102, 0x00000002,\n\t0x40411620, 0xA070F102, 0x00000002, 0x40411E20, 0xA070F102, 0x00000002,\n\t0x40412020, 0xA070F102, 0x00000002, 0x40412A20, 0xA070F102, 0x00000002,\n\t0x40414620, 0xA070F102, 0x00000002, 0x40415420, 0xA070F102, 0x00000002,\n\t0x40422A20, 0xA070F102, 0x00000002, 0x40422C20, 0xA070F102, 0x00000002,\n\t0x00442284, 0x00449084, 0x00000002, 0x00443E84, 0x00449084, 0x00000002,\n\t0x00444884, 0x00449084, 0x00000002, 0x00445884, 0x00449084, 0x00000002,\n\t0x00445884, 0x00449084, 0x00000002, 0x00445A84, 0x00449084, 0x00000002,\n\t0x00446684, 0x00449084, 0x00000002, 0x4046AA20, 0xA070F102, 0x00000002,\n\t0x4046AC20, 0xA070F102, 0x00000002, 0x4046BE20,\n\t// Block 98, offset 0x1880\n\t0xA070F102, 0x00000002, 0x40491020, 0x40498420, 0x00000002, 0x40491020,\n\t0x40498620, 0x00000002, 0x40491020, 0x40498820, 0x00000002, 0x40491020,\n\t0x40498A20, 0x00000002, 0x40491020, 0x40498C20, 0x00000002, 0x40491220,\n\t0x40498420, 0x00000002, 0x40491220, 0x40498620, 0x00000002, 0x40491220,\n\t0x40498820, 0x00000002, 0x40491220, 0x40498A20, 0x00000002, 0x40491220,\n\t0x40498C20, 0x00000002, 0x40491420, 0x40498420, 0x00000002, 0x40491420,\n\t0x40498620, 0x00000002, 0x40491420, 0x40498820, 0x00000002, 0x40491420,\n\t0x40498A20, 0x00000002, 0x40491420, 0x40498C20, 0x00000002, 0x40491620,\n\t0x40498420, 0x00000002, 0x40491620, 0x40498620, 0x00000002, 0x40491620,\n\t0x40498820, 0x00000002, 0x40491620, 0x40498A20, 0x00000002, 0x40491620,\n\t0x40498C20, 0x00000002, 0x40491820, 0x40498420,\n\t// Block 99, offset 0x18c0\n\t0x00000002, 0x40491820, 0x40498620, 0x00000002, 0x40491820, 0x40498820,\n\t0x00000002, 0x40491820, 0x40498A20, 0x00000002, 0x40491820, 0x40498C20,\n\t0x00000002, 0x40491A20, 0x40498420, 0x00000002, 0x40491A20, 0x40498620,\n\t0x00000002, 0x40491A20, 0x40498820, 0x00000002, 0x40491A20, 0x40498A20,\n\t0x00000002, 0x40491A20, 0x40498C20, 0x00000002, 0x40491C20, 0x40498420,\n\t0x00000002, 0x40491C20, 0x40498620, 0x00000002, 0x40491C20, 0x40498820,\n\t0x00000002, 0x40491C20, 0x40498A20, 0x00000002, 0x40491C20, 0x40498C20,\n\t0x00000002, 0x40491E20, 0x40498420, 0x00000002, 0x40491E20, 0x40498620,\n\t0x00000002, 0x40491E20, 0x40498820, 0x00000002, 0x40491E20, 0x40498A20,\n\t0x00000002, 0x40491E20, 0x40498C20, 0x00000002, 0x40492020, 0x40498420,\n\t0x00000002, 0x40492020, 0x40498620, 0x00000002,\n\t// Block 100, offset 0x1900\n\t0x40492020, 0x40498820, 0x00000002, 0x40492020, 0x40498A20, 0x00000002,\n\t0x40492020, 0x40498C20, 0x00000002, 0x40492220, 0x40498420, 0x00000002,\n\t0x40492220, 0x40498620, 0x00000002, 0x40492220, 0x40498820, 0x00000002,\n\t0x40492220, 0x40498A20, 0x00000002, 0x40492220, 0x40498C20, 0x00000002,\n\t0x40492420, 0x40498420, 0x00000002, 0x40492420, 0x40498620, 0x00000002,\n\t0x40492420, 0x40498820, 0x00000002, 0x40492420, 0x40498A20, 0x00000002,\n\t0x40492420, 0x40498C20, 0x00000002, 0x40492620, 0x40498420, 0x00000002,\n\t0x40492620, 0x40498620, 0x00000002, 0x40492620, 0x40498820, 0x00000002,\n\t0x40492620, 0x40498A20, 0x00000002, 0x40492620, 0x40498C20, 0x00000002,\n\t0x40492820, 0x40498420, 0x00000002, 0x40492820, 0x40498620, 0x00000002,\n\t0x40492820, 0x40498820, 0x00000002, 0x40492820,\n\t// Block 101, offset 0x1940\n\t0x40498A20, 0x00000002, 0x40492820, 0x40498C20, 0x00000002, 0x40492A20,\n\t0x40498420, 0x00000002, 0x40492A20, 0x40498620, 0x00000002, 0x40492A20,\n\t0x40498820, 0x00000002, 0x40492A20, 0x40498A20, 0x00000002, 0x40492A20,\n\t0x40498C20, 0x00000002, 0x40492C20, 0x40498420, 0x00000002, 0x40492C20,\n\t0x40498620, 0x00000002, 0x40492C20, 0x40498820, 0x00000002, 0x40492C20,\n\t0x40498A20, 0x00000002, 0x40492C20, 0x40498C20, 0x00000002, 0x40492E20,\n\t0x40498420, 0x00000002, 0x40492E20, 0x40498620, 0x00000002, 0x40492E20,\n\t0x40498820, 0x00000002, 0x40492E20, 0x40498A20, 0x00000002, 0x40492E20,\n\t0x40498C20, 0x00000002, 0x40493020, 0x40498420, 0x00000002, 0x40493020,\n\t0x40498620, 0x00000002, 0x40493020, 0x40498820, 0x00000002, 0x40493020,\n\t0x40498A20, 0x00000002, 0x40493020, 0x40498C20,\n\t// Block 102, offset 0x1980\n\t0x00000002, 0x40493220, 0x40498420, 0x00000002, 0x40493220, 0x40498620,\n\t0x00000002, 0x40493220, 0x40498820, 0x00000002, 0x40493220, 0x40498A20,\n\t0x00000002, 0x40493220, 0x40498C20, 0x00000002, 0x40493420, 0x40498420,\n\t0x00000002, 0x40493420, 0x40498620, 0x00000002, 0x40493420, 0x40498820,\n\t0x00000002, 0x40493420, 0x40498A20, 0x00000002, 0x40493420, 0x40498C20,\n\t0x00000002, 0x40493620, 0x40498420, 0x00000002, 0x40493620, 0x40498620,\n\t0x00000002, 0x40493620, 0x40498820, 0x00000002, 0x40493620, 0x40498A20,\n\t0x00000002, 0x40493620, 0x40498C20, 0x00000002, 0x40493820, 0x40498420,\n\t0x00000002, 0x40493820, 0x40498620, 0x00000002, 0x40493820, 0x40498820,\n\t0x00000002, 0x40493820, 0x40498A20, 0x00000002, 0x40493820, 0x40498C20,\n\t0x00000002, 0x40493A20, 0x40498420, 0x00000002,\n\t// Block 103, offset 0x19c0\n\t0x40493A20, 0x40498620, 0x00000002, 0x40493A20, 0x40498820, 0x00000002,\n\t0x40493A20, 0x40498A20, 0x00000002, 0x40493A20, 0x40498C20, 0x00000002,\n\t0x40493C20, 0x40498420, 0x00000002, 0x40493C20, 0x40498620, 0x00000002,\n\t0x40493C20, 0x40498820, 0x00000002, 0x40493C20, 0x40498A20, 0x00000002,\n\t0x40493C20, 0x40498C20, 0x00000002, 0x40493E20, 0x40498420, 0x00000002,\n\t0x40493E20, 0x40498620, 0x00000002, 0x40493E20, 0x40498820, 0x00000002,\n\t0x40493E20, 0x40498A20, 0x00000002, 0x40493E20, 0x40498C20, 0x00000002,\n\t0x40494020, 0x40498420, 0x00000002, 0x40494020, 0x40498620, 0x00000002,\n\t0x40494020, 0x40498820, 0x00000002, 0x40494020, 0x40498A20, 0x00000002,\n\t0x40494020, 0x40498C20, 0x00000002, 0x40494220, 0x40498420, 0x00000002,\n\t0x40494220, 0x40498620, 0x00000002, 0x40494220,\n\t// Block 104, offset 0x1a00\n\t0x40498820, 0x00000002, 0x40494220, 0x40498A20, 0x00000002, 0x40494220,\n\t0x40498C20, 0x00000002, 0x40494420, 0x40498420, 0x00000002, 0x40494420,\n\t0x40498620, 0x00000002, 0x40494420, 0x40498820, 0x00000002, 0x40494420,\n\t0x40498A20, 0x00000002, 0x40494420, 0x40498C20, 0x00000002, 0x40494620,\n\t0x40498420, 0x00000002, 0x40494620, 0x40498620, 0x00000002, 0x40494620,\n\t0x40498820, 0x00000002, 0x40494620, 0x40498A20, 0x00000002, 0x40494620,\n\t0x40498C20, 0x00000002, 0x40494820, 0x40498420, 0x00000002, 0x40494820,\n\t0x40498620, 0x00000002, 0x40494820, 0x40498820, 0x00000002, 0x40494820,\n\t0x40498A20, 0x00000002, 0x40494820, 0x40498C20, 0x00000002, 0x40494A20,\n\t0x40498420, 0x00000002, 0x40494A20, 0x40498620, 0x00000002, 0x40494A20,\n\t0x40498820, 0x00000002, 0x40494A20, 0x40498A20,\n\t// Block 105, offset 0x1a40\n\t0x00000002, 0x40494A20, 0x40498C20, 0x00000002, 0x40494C20, 0x40498420,\n\t0x00000002, 0x40494C20, 0x40498620, 0x00000002, 0x40494C20, 0x40498820,\n\t0x00000002, 0x40494C20, 0x40498A20, 0x00000002, 0x40494C20, 0x40498C20,\n\t0x00000002, 0x40494E20, 0x40498420, 0x00000002, 0x40494E20, 0x40498620,\n\t0x00000002, 0x40494E20, 0x40498820, 0x00000002, 0x40494E20, 0x40498A20,\n\t0x00000002, 0x40494E20, 0x40498C20, 0x00000002, 0x40495020, 0x40498420,\n\t0x00000002, 0x40495020, 0x40498620, 0x00000002, 0x40495020, 0x40498820,\n\t0x00000002, 0x40495020, 0x40498A20, 0x00000002, 0x40495020, 0x40498C20,\n\t0x00000002, 0x40495220, 0x40498420, 0x00000002, 0x40495220, 0x40498620,\n\t0x00000002, 0x40495220, 0x40498820, 0x00000002, 0x40495220, 0x40498A20,\n\t0x00000002, 0x40495220, 0x40498C20, 0x00000002,\n\t// Block 106, offset 0x1a80\n\t0x40495420, 0x40498420, 0x00000002, 0x40495420, 0x40498620, 0x00000002,\n\t0x40495420, 0x40498820, 0x00000002, 0x40495420, 0x40498A20, 0x00000002,\n\t0x40495420, 0x40498C20, 0x00000002, 0x40495620, 0x40498420, 0x00000002,\n\t0x40495620, 0x40498620, 0x00000002, 0x40495620, 0x40498820, 0x00000002,\n\t0x40495620, 0x40498A20, 0x00000002, 0x40495620, 0x40498C20, 0x00000002,\n\t0x40495820, 0x40498420, 0x00000002, 0x40495820, 0x40498620, 0x00000002,\n\t0x40495820, 0x40498820, 0x00000002, 0x40495820, 0x40498A20, 0x00000002,\n\t0x40495820, 0x40498C20, 0x00000002, 0x40495A20, 0x40498420, 0x00000002,\n\t0x40495A20, 0x40498620, 0x00000002, 0x40495A20, 0x40498820, 0x00000002,\n\t0x40495A20, 0x40498A20, 0x00000002, 0x40495A20, 0x40498C20, 0x00000002,\n\t0x40495C20, 0x40498420, 0x00000002, 0x40495C20,\n\t// Block 107, offset 0x1ac0\n\t0x40498620, 0x00000002, 0x40495C20, 0x40498820, 0x00000002, 0x40495C20,\n\t0x40498A20, 0x00000002, 0x40495C20, 0x40498C20, 0x00000002, 0x40495E20,\n\t0x40498420, 0x00000002, 0x40495E20, 0x40498620, 0x00000002, 0x40495E20,\n\t0x40498820, 0x00000002, 0x40495E20, 0x40498A20, 0x00000002, 0x40495E20,\n\t0x40498C20, 0x00000002, 0x40496020, 0x40498420, 0x00000002, 0x40496020,\n\t0x40498620, 0x00000002, 0x40496020, 0x40498820, 0x00000002, 0x40496020,\n\t0x40498A20, 0x00000002, 0x40496020, 0x40498C20, 0x00000002, 0x40496220,\n\t0x40498420, 0x00000002, 0x40496220, 0x40498620, 0x00000002, 0x40496220,\n\t0x40498820, 0x00000002, 0x40496220, 0x40498A20, 0x00000002, 0x40496220,\n\t0x40498C20, 0x00000002, 0x40496420, 0x40498420, 0x00000002, 0x40496420,\n\t0x40498620, 0x00000002, 0x40496420, 0x40498820,\n\t// Block 108, offset 0x1b00\n\t0x00000002, 0x40496420, 0x40498A20, 0x00000002, 0x40496420, 0x40498C20,\n\t0x00000002, 0x40496620, 0x40498420, 0x00000002, 0x40496620, 0x40498620,\n\t0x00000002, 0x40496620, 0x40498820, 0x00000002, 0x40496620, 0x40498A20,\n\t0x00000002, 0x40496620, 0x40498C20, 0x00000002, 0x40496820, 0x40498420,\n\t0x00000002, 0x40496820, 0x40498620, 0x00000002, 0x40496820, 0x40498820,\n\t0x00000002, 0x40496820, 0x40498A20, 0x00000002, 0x40496820, 0x40498C20,\n\t0x00000002, 0x40496A20, 0x40498420, 0x00000002, 0x40496A20, 0x40498620,\n\t0x00000002, 0x40496A20, 0x40498820, 0x00000002, 0x40496A20, 0x40498A20,\n\t0x00000002, 0x40496A20, 0x40498C20, 0x00000002, 0x40499020, 0x4049E620,\n\t0x00000002, 0x40499020, 0x4049E820, 0x00000002, 0x40499020, 0x4049EA20,\n\t0x00000002, 0x40499020, 0x4049EC20, 0x00000002,\n\t// Block 109, offset 0x1b40\n\t0x40499020, 0x4049EE20, 0x00000002, 0x40499220, 0x4049E620, 0x00000002,\n\t0x40499220, 0x4049E820, 0x00000002, 0x40499220, 0x4049EA20, 0x00000002,\n\t0x40499220, 0x4049EC20, 0x00000002, 0x40499220, 0x4049EE20, 0x00000002,\n\t0x40499420, 0x4049E620, 0x00000002, 0x40499420, 0x4049E820, 0x00000002,\n\t0x40499420, 0x4049EA20, 0x00000002, 0x40499420, 0x4049EC20, 0x00000002,\n\t0x40499420, 0x4049EE20, 0x00000002, 0x40499620, 0x4049E620, 0x00000002,\n\t0x40499620, 0x4049E820, 0x00000002, 0x40499620, 0x4049EA20, 0x00000002,\n\t0x40499620, 0x4049EC20, 0x00000002, 0x40499620, 0x4049EE20, 0x00000002,\n\t0x40499820, 0x4049E620, 0x00000002, 0x40499820, 0x4049E820, 0x00000002,\n\t0x40499820, 0x4049EA20, 0x00000002, 0x40499820, 0x4049EC20, 0x00000002,\n\t0x40499820, 0x4049EE20, 0x00000002, 0x40499A20,\n\t// Block 110, offset 0x1b80\n\t0x4049E620, 0x00000002, 0x40499A20, 0x4049E820, 0x00000002, 0x40499A20,\n\t0x4049EA20, 0x00000002, 0x40499A20, 0x4049EC20, 0x00000002, 0x40499A20,\n\t0x4049EE20, 0x00000002, 0x40499C20, 0x4049E620, 0x00000002, 0x40499C20,\n\t0x4049E820, 0x00000002, 0x40499C20, 0x4049EA20, 0x00000002, 0x40499C20,\n\t0x4049EC20, 0x00000002, 0x40499C20, 0x4049EE20, 0x00000002, 0x40499E20,\n\t0x4049E620, 0x00000002, 0x40499E20, 0x4049E820, 0x00000002, 0x40499E20,\n\t0x4049EA20, 0x00000002, 0x40499E20, 0x4049EC20, 0x00000002, 0x40499E20,\n\t0x4049EE20, 0x00000002, 0x4049A020, 0x4049E620, 0x00000002, 0x4049A020,\n\t0x4049E820, 0x00000002, 0x4049A020, 0x4049EA20, 0x00000002, 0x4049A020,\n\t0x4049EC20, 0x00000002, 0x4049A020, 0x4049EE20, 0x00000002, 0x4049A220,\n\t0x4049E620, 0x00000002, 0x4049A220, 0x4049E820,\n\t// Block 111, offset 0x1bc0\n\t0x00000002, 0x4049A220, 0x4049EA20, 0x00000002, 0x4049A220, 0x4049EC20,\n\t0x00000002, 0x4049A220, 0x4049EE20, 0x00000002, 0x4049A420, 0x4049E620,\n\t0x00000002, 0x4049A420, 0x4049E820, 0x00000002, 0x4049A420, 0x4049EA20,\n\t0x00000002, 0x4049A420, 0x4049EC20, 0x00000002, 0x4049A420, 0x4049EE20,\n\t0x00000002, 0x4049A620, 0x4049E620, 0x00000002, 0x4049A620, 0x4049E820,\n\t0x00000002, 0x4049A620, 0x4049EA20, 0x00000002, 0x4049A620, 0x4049EC20,\n\t0x00000002, 0x4049A620, 0x4049EE20, 0x00000002, 0x4049A820, 0x4049E620,\n\t0x00000002, 0x4049A820, 0x4049E820, 0x00000002, 0x4049A820, 0x4049EA20,\n\t0x00000002, 0x4049A820, 0x4049EC20, 0x00000002, 0x4049A820, 0x4049EE20,\n\t0x00000002, 0x4049AA20, 0x4049E620, 0x00000002, 0x4049AA20, 0x4049E820,\n\t0x00000002, 0x4049AA20, 0x4049EA20, 0x00000002,\n\t// Block 112, offset 0x1c00\n\t0x4049AA20, 0x4049EC20, 0x00000002, 0x4049AA20, 0x4049EE20, 0x00000002,\n\t0x4049AC20, 0x4049E620, 0x00000002, 0x4049AC20, 0x4049E820, 0x00000002,\n\t0x4049AC20, 0x4049EA20, 0x00000002, 0x4049AC20, 0x4049EC20, 0x00000002,\n\t0x4049AC20, 0x4049EE20, 0x00000002, 0x4049AE20, 0x4049E620, 0x00000002,\n\t0x4049AE20, 0x4049E820, 0x00000002, 0x4049AE20, 0x4049EA20, 0x00000002,\n\t0x4049AE20, 0x4049EC20, 0x00000002, 0x4049AE20, 0x4049EE20, 0x00000002,\n\t0x4049B020, 0x4049E620, 0x00000002, 0x4049B020, 0x4049E820, 0x00000002,\n\t0x4049B020, 0x4049EA20, 0x00000002, 0x4049B020, 0x4049EC20, 0x00000002,\n\t0x4049B020, 0x4049EE20, 0x00000002, 0x4049B220, 0x4049E620, 0x00000002,\n\t0x4049B220, 0x4049E820, 0x00000002, 0x4049B220, 0x4049EA20, 0x00000002,\n\t0x4049B220, 0x4049EC20, 0x00000002, 0x4049B220,\n\t// Block 113, offset 0x1c40\n\t0x4049EE20, 0x00000002, 0x4049B420, 0x4049E620, 0x00000002, 0x4049B420,\n\t0x4049E820, 0x00000002, 0x4049B420, 0x4049EA20, 0x00000002, 0x4049B420,\n\t0x4049EC20, 0x00000002, 0x4049B420, 0x4049EE20, 0x00000002, 0x4049B620,\n\t0x4049E620, 0x00000002, 0x4049B620, 0x4049E820, 0x00000002, 0x4049B620,\n\t0x4049EA20, 0x00000002, 0x4049B620, 0x4049EC20, 0x00000002, 0x4049B620,\n\t0x4049EE20, 0x00000002, 0x4049B820, 0x4049E620, 0x00000002, 0x4049B820,\n\t0x4049E820, 0x00000002, 0x4049B820, 0x4049EA20, 0x00000002, 0x4049B820,\n\t0x4049EC20, 0x00000002, 0x4049B820, 0x4049EE20, 0x00000002, 0x4049BA20,\n\t0x4049E620, 0x00000002, 0x4049BA20, 0x4049E820, 0x00000002, 0x4049BA20,\n\t0x4049EA20, 0x00000002, 0x4049BA20, 0x4049EC20, 0x00000002, 0x4049BA20,\n\t0x4049EE20, 0x00000002, 0x4049BC20, 0x4049E620,\n\t// Block 114, offset 0x1c80\n\t0x00000002, 0x4049BC20, 0x4049E820, 0x00000002, 0x4049BC20, 0x4049EA20,\n\t0x00000002, 0x4049BC20, 0x4049EC20, 0x00000002, 0x4049BC20, 0x4049EE20,\n\t0x00000002, 0x4049BE20, 0x4049E620, 0x00000002, 0x4049BE20, 0x4049E820,\n\t0x00000002, 0x4049BE20, 0x4049EA20, 0x00000002, 0x4049BE20, 0x4049EC20,\n\t0x00000002, 0x4049BE20, 0x4049EE20, 0x00000002, 0x4049C020, 0x4049E620,\n\t0x00000002, 0x4049C020, 0x4049E820, 0x00000002, 0x4049C020, 0x4049EA20,\n\t0x00000002, 0x4049C020, 0x4049EC20, 0x00000002, 0x4049C020, 0x4049EE20,\n\t0x00000002, 0x4049C220, 0x4049E620, 0x00000002, 0x4049C220, 0x4049E820,\n\t0x00000002, 0x4049C220, 0x4049EA20, 0x00000002, 0x4049C220, 0x4049EC20,\n\t0x00000002, 0x4049C220, 0x4049EE20, 0x00000003, 0x0049C484, 0x0049AC84,\n\t0x4049E620, 0x00000003, 0x0049C484, 0x0049AC84,\n\t// Block 115, offset 0x1cc0\n\t0x4049E820, 0x00000003, 0x0049C484, 0x0049AC84, 0x4049EA20, 0x00000003,\n\t0x0049C484, 0x0049AC84, 0x4049EC20, 0x00000003, 0x0049C484, 0x0049AC84,\n\t0x4049EE20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049E620, 0x00000003,\n\t0x0049C484, 0x0049BA84, 0x4049E820, 0x00000003, 0x0049C484, 0x0049BA84,\n\t0x4049EA20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049EC20, 0x00000003,\n\t0x0049C484, 0x0049BA84, 0x4049EE20, 0x00000002, 0x4049C420, 0x4049E620,\n\t0x00000002, 0x4049C420, 0x4049E820, 0x00000002, 0x4049C420, 0x4049EA20,\n\t0x00000002, 0x4049C420, 0x4049EC20, 0x00000002, 0x4049C420, 0x4049EE20,\n\t0x00000002, 0x4049C620, 0x4049E620, 0x00000002, 0x4049C620, 0x4049E820,\n\t0x00000002, 0x4049C620, 0x4049EA20, 0x00000002, 0x4049C620, 0x4049EC20,\n\t0x00000002, 0x4049C620, 0x4049EE20, 0x00000002,\n\t// Block 116, offset 0x1d00\n\t0x4049C820, 0x4049E620, 0x00000002, 0x4049C820, 0x4049E820, 0x00000002,\n\t0x4049C820, 0x4049EA20, 0x00000002, 0x4049C820, 0x4049EC20, 0x00000002,\n\t0x4049C820, 0x4049EE20, 0x00000002, 0x4049F020, 0x404A5A20, 0x00000002,\n\t0x4049F020, 0x404A5C20, 0x00000002, 0x4049F020, 0x404A6220, 0x00000002,\n\t0x4049F020, 0x404A6620, 0x00000002, 0x4049F020, 0x404A6820, 0x00000002,\n\t0x4049F220, 0x404A5A20, 0x00000002, 0x4049F220, 0x404A5C20, 0x00000002,\n\t0x4049F220, 0x404A6220, 0x00000002, 0x4049F220, 0x404A6620, 0x00000002,\n\t0x4049F220, 0x404A6820, 0x00000002, 0x4049F420, 0x404A5A20, 0x00000002,\n\t0x4049F420, 0x404A5C20, 0x00000002, 0x4049F420, 0x404A6220, 0x00000002,\n\t0x4049F420, 0x404A6620, 0x00000002, 0x4049F420, 0x404A6820, 0x00000002,\n\t0x4049F620, 0x404A5A20, 0x00000002, 0x4049F620,\n\t// Block 117, offset 0x1d40\n\t0x404A5C20, 0x00000002, 0x4049F620, 0x404A6220, 0x00000002, 0x4049F620,\n\t0x404A6620, 0x00000002, 0x4049F620, 0x404A6820, 0x00000002, 0x4049F820,\n\t0x404A5A20, 0x00000002, 0x4049F820, 0x404A5C20, 0x00000002, 0x4049F820,\n\t0x404A6220, 0x00000002, 0x4049F820, 0x404A6620, 0x00000002, 0x4049F820,\n\t0x404A6820, 0x00000002, 0x4049FA20, 0x404A5A20, 0x00000002, 0x4049FA20,\n\t0x404A5C20, 0x00000002, 0x4049FA20, 0x404A6220, 0x00000002, 0x4049FA20,\n\t0x404A6620, 0x00000002, 0x4049FA20, 0x404A6820, 0x00000002, 0x4049FC20,\n\t0x404A5A20, 0x00000002, 0x4049FC20, 0x404A5C20, 0x00000002, 0x4049FC20,\n\t0x404A6220, 0x00000002, 0x4049FC20, 0x404A6620, 0x00000002, 0x4049FC20,\n\t0x404A6820, 0x00000002, 0x4049FE20, 0x404A5A20, 0x00000002, 0x4049FE20,\n\t0x404A5C20, 0x00000002, 0x4049FE20, 0x404A6220,\n\t// Block 118, offset 0x1d80\n\t0x00000002, 0x4049FE20, 0x404A6620, 0x00000002, 0x4049FE20, 0x404A6820,\n\t0x00000002, 0x404A0020, 0x404A5A20, 0x00000002, 0x404A0020, 0x404A5C20,\n\t0x00000002, 0x404A0020, 0x404A6220, 0x00000002, 0x404A0020, 0x404A6620,\n\t0x00000002, 0x404A0020, 0x404A6820, 0x00000002, 0x404A0220, 0x404A5A20,\n\t0x00000002, 0x404A0220, 0x404A5C20, 0x00000002, 0x404A0220, 0x404A6220,\n\t0x00000002, 0x404A0220, 0x404A6620, 0x00000002, 0x404A0220, 0x404A6820,\n\t0x00000002, 0x404A0420, 0x404A5A20, 0x00000002, 0x404A0420, 0x404A5C20,\n\t0x00000002, 0x404A0420, 0x404A6220, 0x00000002, 0x404A0420, 0x404A6620,\n\t0x00000002, 0x404A0420, 0x404A6820, 0x00000002, 0x404A0620, 0x404A5A20,\n\t0x00000002, 0x404A0620, 0x404A5C20, 0x00000002, 0x404A0620, 0x404A6220,\n\t0x00000002, 0x404A0620, 0x404A6620, 0x00000002,\n\t// Block 119, offset 0x1dc0\n\t0x404A0620, 0x404A6820, 0x00000002, 0x404A0820, 0x404A5A20, 0x00000002,\n\t0x404A0820, 0x404A5C20, 0x00000002, 0x404A0820, 0x404A6220, 0x00000002,\n\t0x404A0820, 0x404A6620, 0x00000002, 0x404A0820, 0x404A6820, 0x00000002,\n\t0x404A0A20, 0x404A5A20, 0x00000002, 0x404A0A20, 0x404A5C20, 0x00000002,\n\t0x404A0A20, 0x404A6220, 0x00000002, 0x404A0A20, 0x404A6620, 0x00000002,\n\t0x404A0A20, 0x404A6820, 0x00000002, 0x404A0C20, 0x404A5A20, 0x00000002,\n\t0x404A0C20, 0x404A5C20, 0x00000002, 0x404A0C20, 0x404A6220, 0x00000002,\n\t0x404A0C20, 0x404A6620, 0x00000002, 0x404A0C20, 0x404A6820, 0x00000002,\n\t0x404A0E20, 0x404A5A20, 0x00000002, 0x404A0E20, 0x404A5C20, 0x00000002,\n\t0x404A0E20, 0x404A6220, 0x00000002, 0x404A0E20, 0x404A6620, 0x00000002,\n\t0x404A0E20, 0x404A6820, 0x00000002, 0x404A1020,\n\t// Block 120, offset 0x1e00\n\t0x404A5A20, 0x00000002, 0x404A1020, 0x404A5C20, 0x00000002, 0x404A1020,\n\t0x404A6220, 0x00000002, 0x404A1020, 0x404A6620, 0x00000002, 0x404A1020,\n\t0x404A6820, 0x00000002, 0x404A1220, 0x404A5A20, 0x00000002, 0x404A1220,\n\t0x404A5C20, 0x00000002, 0x404A1220, 0x404A6220, 0x00000002, 0x404A1220,\n\t0x404A6620, 0x00000002, 0x404A1220, 0x404A6820, 0x00000002, 0x404A1420,\n\t0x404A5A20, 0x00000002, 0x404A1420, 0x404A5C20, 0x00000002, 0x404A1420,\n\t0x404A6220, 0x00000002, 0x404A1420, 0x404A6620, 0x00000002, 0x404A1420,\n\t0x404A6820, 0x00000002, 0x404A1620, 0x404A5A20, 0x00000002, 0x404A1620,\n\t0x404A5C20, 0x00000002, 0x404A1620, 0x404A6220, 0x00000002, 0x404A1620,\n\t0x404A6620, 0x00000002, 0x404A1620, 0x404A6820, 0x00000002, 0x404A1820,\n\t0x404A5A20, 0x00000002, 0x404A1820, 0x404A5C20,\n\t// Block 121, offset 0x1e40\n\t0x00000002, 0x404A1820, 0x404A6220, 0x00000002, 0x404A1820, 0x404A6620,\n\t0x00000002, 0x404A1820, 0x404A6820, 0x00000002, 0x404A1A20, 0x404A5A20,\n\t0x00000002, 0x404A1A20, 0x404A5C20, 0x00000002, 0x404A1A20, 0x404A6220,\n\t0x00000002, 0x404A1A20, 0x404A6620, 0x00000002, 0x404A1A20, 0x404A6820,\n\t0x00000002, 0x404A1C20, 0x404A5A20, 0x00000002, 0x404A1C20, 0x404A5C20,\n\t0x00000002, 0x404A1C20, 0x404A6220, 0x00000002, 0x404A1C20, 0x404A6620,\n\t0x00000002, 0x404A1C20, 0x404A6820, 0x00000002, 0x404A1E20, 0x404A5A20,\n\t0x00000002, 0x404A1E20, 0x404A5C20, 0x00000002, 0x404A1E20, 0x404A6220,\n\t0x00000002, 0x404A1E20, 0x404A6620, 0x00000002, 0x404A1E20, 0x404A6820,\n\t0x00000002, 0x404A2020, 0x404A5A20, 0x00000002, 0x404A2020, 0x404A5C20,\n\t0x00000002, 0x404A2020, 0x404A6220, 0x00000002,\n\t// Block 122, offset 0x1e80\n\t0x404A2020, 0x404A6620, 0x00000002, 0x404A2020, 0x404A6820, 0x00000002,\n\t0x404A2220, 0x404A5A20, 0x00000002, 0x404A2220, 0x404A5C20, 0x00000002,\n\t0x404A2220, 0x404A6220, 0x00000002, 0x404A2220, 0x404A6620, 0x00000002,\n\t0x404A2220, 0x404A6820, 0x00000002, 0x404A2420, 0x404A5A20, 0x00000002,\n\t0x404A2420, 0x404A5C20, 0x00000002, 0x404A2420, 0x404A6220, 0x00000002,\n\t0x404A2420, 0x404A6620, 0x00000002, 0x404A2420, 0x404A6820, 0x00000002,\n\t0x404A2620, 0x404A5A20, 0x00000002, 0x404A2620, 0x404A5C20, 0x00000002,\n\t0x404A2620, 0x404A6220, 0x00000002, 0x404A2620, 0x404A6620, 0x00000002,\n\t0x404A2620, 0x404A6820, 0x00000002, 0x404A2820, 0x404A5A20, 0x00000002,\n\t0x404A2820, 0x404A5C20, 0x00000002, 0x404A2820, 0x404A6220, 0x00000002,\n\t0x404A2820, 0x404A6620, 0x00000002, 0x404A2820,\n\t// Block 123, offset 0x1ec0\n\t0x404A6820, 0x00000002, 0x404A2A20, 0x404A5A20, 0x00000002, 0x404A2A20,\n\t0x404A5C20, 0x00000002, 0x404A2A20, 0x404A6220, 0x00000002, 0x404A2A20,\n\t0x404A6620, 0x00000002, 0x404A2A20, 0x404A6820, 0x00000002, 0x404A2C20,\n\t0x404A5A20, 0x00000002, 0x404A2C20, 0x404A5C20, 0x00000002, 0x404A2C20,\n\t0x404A6220, 0x00000002, 0x404A2C20, 0x404A6620, 0x00000002, 0x404A2C20,\n\t0x404A6820, 0x00000002, 0x404A2E20, 0x404A5A20, 0x00000002, 0x404A2E20,\n\t0x404A5C20, 0x00000002, 0x404A2E20, 0x404A6220, 0x00000002, 0x404A2E20,\n\t0x404A6620, 0x00000002, 0x404A2E20, 0x404A6820, 0x00000002, 0x404A3020,\n\t0x404A5A20, 0x00000002, 0x404A3020, 0x404A5C20, 0x00000002, 0x404A3020,\n\t0x404A6220, 0x00000002, 0x404A3020, 0x404A6620, 0x00000002, 0x404A3020,\n\t0x404A6820, 0x00000002, 0x404A3220, 0x404A5A20,\n\t// Block 124, offset 0x1f00\n\t0x00000002, 0x404A3220, 0x404A5C20, 0x00000002, 0x404A3220, 0x404A6220,\n\t0x00000002, 0x404A3220, 0x404A6620, 0x00000002, 0x404A3220, 0x404A6820,\n\t0x00000002, 0x404A3420, 0x404A5A20, 0x00000002, 0x404A3420, 0x404A5C20,\n\t0x00000002, 0x404A3420, 0x404A6220, 0x00000002, 0x404A3420, 0x404A6620,\n\t0x00000002, 0x404A3420, 0x404A6820, 0x00000002, 0x404A3620, 0x404A5A20,\n\t0x00000002, 0x404A3620, 0x404A5C20, 0x00000002, 0x404A3620, 0x404A6220,\n\t0x00000002, 0x404A3620, 0x404A6620, 0x00000002, 0x404A3620, 0x404A6820,\n\t0x00000002, 0x404A3820, 0x404A5A20, 0x00000002, 0x404A3820, 0x404A5C20,\n\t0x00000002, 0x404A3820, 0x404A6220, 0x00000002, 0x404A3820, 0x404A6620,\n\t0x00000002, 0x404A3820, 0x404A6820, 0x00000002, 0x404A3A20, 0x404A5A20,\n\t0x00000002, 0x404A3A20, 0x404A5C20, 0x00000002,\n\t// Block 125, offset 0x1f40\n\t0x404A3A20, 0x404A6220, 0x00000002, 0x404A3A20, 0x404A6620, 0x00000002,\n\t0x404A3A20, 0x404A6820, 0x00000002, 0x404A3C20, 0x404A5A20, 0x00000002,\n\t0x404A3C20, 0x404A5C20, 0x00000002, 0x404A3C20, 0x404A6220, 0x00000002,\n\t0x404A3C20, 0x404A6620, 0x00000002, 0x404A3C20, 0x404A6820, 0x00000002,\n\t0x404A3E20, 0x404A5A20, 0x00000002, 0x404A3E20, 0x404A5C20, 0x00000002,\n\t0x404A3E20, 0x404A6220, 0x00000002, 0x404A3E20, 0x404A6620, 0x00000002,\n\t0x404A3E20, 0x404A6820, 0x00000002, 0x404A4020, 0x404A5A20, 0x00000002,\n\t0x404A4020, 0x404A5C20, 0x00000002, 0x404A4020, 0x404A6220, 0x00000002,\n\t0x404A4020, 0x404A6620, 0x00000002, 0x404A4020, 0x404A6820, 0x00000002,\n\t0x404A4220, 0x404A5A20, 0x00000002, 0x404A4220, 0x404A5C20, 0x00000002,\n\t0x404A4220, 0x404A6220, 0x00000002, 0x404A4220,\n\t// Block 126, offset 0x1f80\n\t0x404A6620, 0x00000002, 0x404A4220, 0x404A6820, 0x00000002, 0x404A4420,\n\t0x404A5A20, 0x00000002, 0x404A4420, 0x404A5C20, 0x00000002, 0x404A4420,\n\t0x404A6220, 0x00000002, 0x404A4420, 0x404A6620, 0x00000002, 0x404A4420,\n\t0x404A6820, 0x00000002, 0x404A4620, 0x404A5A20, 0x00000002, 0x404A4620,\n\t0x404A5C20, 0x00000002, 0x404A4620, 0x404A6220, 0x00000002, 0x404A4620,\n\t0x404A6620, 0x00000002, 0x404A4620, 0x404A6820, 0x00000002, 0x404A4820,\n\t0x404A5A20, 0x00000002, 0x404A4820, 0x404A5C20, 0x00000002, 0x404A4820,\n\t0x404A6220, 0x00000002, 0x404A4820, 0x404A6620, 0x00000002, 0x404A4820,\n\t0x404A6820, 0x00000002, 0x404A4A20, 0x404A5A20, 0x00000002, 0x404A4A20,\n\t0x404A5C20, 0x00000002, 0x404A4A20, 0x404A6220, 0x00000002, 0x404A4A20,\n\t0x404A6620, 0x00000002, 0x404A4A20, 0x404A6820,\n\t// Block 127, offset 0x1fc0\n\t0x00000002, 0x404A4C20, 0x404A5A20, 0x00000002, 0x404A4C20, 0x404A5C20,\n\t0x00000002, 0x404A4C20, 0x404A6220, 0x00000002, 0x404A4C20, 0x404A6620,\n\t0x00000002, 0x404A4C20, 0x404A6820, 0x00000002, 0x404A4E20, 0x404A5A20,\n\t0x00000002, 0x404A4E20, 0x404A5C20, 0x00000002, 0x404A4E20, 0x404A6220,\n\t0x00000002, 0x404A4E20, 0x404A6620, 0x00000002, 0x404A4E20, 0x404A6820,\n\t0x00000002, 0x404A7620, 0x404AF820, 0x00000002, 0x404A7820, 0x404AF820,\n\t0x00000002, 0x404A8020, 0x404B0020, 0x00000002, 0x404A8220, 0x404B0020,\n\t0x00000002, 0x404AA020, 0x404B0020, 0x00000002, 0x404AA220, 0x404B0020,\n\t0x00000002, 0x404AB020, 0x404B0020, 0x00000002, 0x404AB220, 0x404B0020,\n\t0x00000002, 0x404AC020, 0x404B0020, 0x00000002, 0x404AC220, 0x404B0020,\n\t0x00000002, 0x404AD020, 0x404B0020, 0x00000002,\n\t// Block 128, offset 0x2000\n\t0x404AD220, 0x404B0020, 0x00000002, 0x004AD684, 0xA0013A04, 0x00000002,\n\t0x004AE684, 0xA0013A04, 0x00000002, 0x004AE884, 0xA0013A04, 0x00000002,\n\t0x004AEA84, 0xA0013A04, 0x00000002, 0x404AEA20, 0x8281258D, 0x00000002,\n\t0x404AEA20, 0x82812591, 0x00000002, 0x404AF020, 0x8281258D, 0x00000002,\n\t0x404AF020, 0x82812591, 0x00000003, 0x004B0284, 0x004B3084, 0xA000F304,\n\t0x00000003, 0x004EA684, 0x004F1484, 0x004EA684, 0x00000002, 0x0050AE84,\n\t0x0050DA84, 0x00000003, 0x0050AE84, 0x0050DA84, 0x0050F084, 0x00000003,\n\t0x00514E84, 0x00519A84, 0x00514E84, 0x00000002, 0x005ADA84, 0xA0013904,\n\t0x00000002, 0x005ADC84, 0xA0013904, 0x00000002, 0x005ADC84, 0xA0013A04,\n\t0x00000002, 0x005ADE84, 0xA0013904, 0x00000002, 0x005ADE84, 0x005ADE84,\n\t0x00000002, 0x005AE084, 0xA0013904, 0x00000002,\n\t// Block 129, offset 0x2040\n\t0x005AE084, 0xA0013A04, 0x00000002, 0x005AE084, 0xA0013C04, 0x00000002,\n\t0x005AE084, 0xA0013D04, 0x00000002, 0x005AE884, 0xA0013904, 0x00000002,\n\t0x005AE884, 0xA0013A04, 0x00000002, 0x005AE884, 0xA0013C04, 0x00000002,\n\t0x005AE884, 0xA0013D04, 0x00000002, 0x005AEC84, 0xA0013904, 0x00000002,\n\t0x005AEE84, 0xA0013904, 0x00000002, 0x005AEE84, 0xA0013A04, 0x00000002,\n\t0x005AEE84, 0xA0013C04, 0x00000002, 0x005AF084, 0xA0013904, 0x00000002,\n\t0x005AF084, 0xA0013A04, 0x00000002, 0x005AF284, 0xA0013904, 0x00000002,\n\t0x005AF484, 0xA0013904, 0x00000002, 0x005AF684, 0xA0013904, 0x00000002,\n\t0x005AF684, 0x005B0884, 0x00000002, 0x005AFA84, 0xA0013904, 0x00000002,\n\t0x005AFE84, 0xA0013904, 0x00000002, 0x005AFE84, 0xA0013A04, 0x00000002,\n\t0x005AFE84, 0xA0013C04, 0x00000002, 0x005AFE84,\n\t// Block 130, offset 0x2080\n\t0xA0013D04, 0x00000002, 0x005AFE84, 0xA0013E04, 0x00000002, 0x005B0084,\n\t0xA0013904, 0x00000002, 0x005B0084, 0xA0013A04, 0x00000002, 0x005B0284,\n\t0xA0013904, 0x00000002, 0x005B0284, 0xA0013A04, 0x00000002, 0x005B0684,\n\t0xA0013904, 0x00000002, 0x005B0684, 0xA0013A04, 0x00000004, 0x005B0684,\n\t0xA0013904, 0x005B0684, 0xA0013904, 0x00000002, 0x005B0884, 0xA0013904,\n\t0x00000002, 0x005B0A84, 0xA0013904, 0x00000002, 0x005B2484, 0xA0013904,\n\t0x00000002, 0x005B2484, 0xA0013A04, 0x00000002, 0x005B2684, 0xA0013904,\n\t0x00000002, 0x005B2A84, 0xA0013904, 0x00000002, 0x005B3084, 0xA0013904,\n\t0x00000002, 0x005B3284, 0xA0013904, 0x00000002, 0x005B3484, 0xA0013904,\n\t0x00000002, 0x005B3684, 0xA0013904, 0x00000002, 0x005B3884, 0xA0013904,\n\t0x00000002, 0x005B3A84, 0xA0013904, 0x00000002,\n\t// Block 131, offset 0x20c0\n\t0x005B3E84, 0xA0013904, 0x00000002, 0x005B4084, 0xA0013904, 0x00000002,\n\t0x005B4284, 0xA0013904, 0x00000002, 0x005B4484, 0xA0013904, 0x00000002,\n\t0x005B4684, 0xA0013904, 0x00000002, 0x005B4884, 0xA0013904, 0x00000002,\n\t0x005B5284, 0xA0013904, 0x00000002, 0x005B5484, 0xA0013904, 0x00000002,\n\t0x005B5684, 0xA0013904, 0x00000002, 0x005B5884, 0xA0013904, 0x00000002,\n\t0x005B5C84, 0xA0013904, 0x00000002, 0x005B6484, 0xA0013904, 0x00000002,\n\t0x005B6684, 0xA0013904, 0x00000002, 0x005B6884, 0xA0013904, 0x00000002,\n\t0x005B6A84, 0xA0013904, 0x00000002, 0x005B6C84, 0xA0013904, 0x00000002,\n\t0x005B7484, 0xA0013904, 0x00000002, 0x005B7684, 0xA0013904, 0x00000002,\n\t0x005B7884, 0xA0013904, 0x00000002, 0x005B7A84, 0xA0013904, 0x00000002,\n\t0x005B9884, 0x005D9684, 0x00000002, 0x005BBC84,\n\t// Block 132, offset 0x2100\n\t0x005D9684, 0x00000002, 0x005BE684, 0x005D9684, 0x00000002, 0x005C0E84,\n\t0x005D9884, 0x00000002, 0x005C2484, 0x005D9684, 0x00000002, 0x005C3084,\n\t0x005D9884, 0x00000002, 0x005C3484, 0x005D9884, 0x00000002, 0x005C4084,\n\t0x005D9684, 0x00000002, 0x005C8A84, 0x005D9684, 0x00000002, 0x005CE884,\n\t0x005D9684, 0x00000002, 0x005D1684, 0x005D9684, 0x00000002, 0x005D2284,\n\t0x005D9884, 0x00000002, 0x005D3084, 0x005D9684, 0x00000004, 0x0062C486,\n\t0x0063C286, 0x0062C286, 0x0063CE86, 0x00000005, 0x0062C886, 0x0063A886,\n\t0x00648286, 0x0062AC86, 0x0063B886, 0x00000003, 0x0065769C, 0x0027D69C,\n\t0x0065CA9C, 0x00000005, 0x0065769C, 0x0065AA9C, 0xA001291C, 0x0027D69C,\n\t0x00659E9C, 0x00000004, 0x0065769C, 0x0065CA9C, 0x0065AE9C, 0x0065769C,\n\t0x00000005, 0x0065769C, 0x0065D89C, 0x0065B09C,\n\t// Block 133, offset 0x2140\n\t0xA001291C, 0x0065769C, 0x00000005, 0x0065789C, 0x0065A29C, 0x0065D89C,\n\t0x0065869C, 0xA001281C, 0x00000003, 0x0065789C, 0x0065D89C, 0x0065989C,\n\t0x00000002, 0x00657A8E, 0xA0812802, 0x00000002, 0x00657A91, 0xA0812802,\n\t0x00000003, 0x00657A9C, 0x0065809C, 0x0065D89C, 0x00000004, 0x00657E9C,\n\t0x0027D69C, 0x0065829C, 0x0027D69C, 0x00000006, 0x00657E9C, 0x0065909C,\n\t0x0065869C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003, 0x0065809C,\n\t0x0027D69C, 0x0065B89C, 0x00000003, 0x0065809C, 0x0065D89C, 0x0065909C,\n\t0x00000002, 0x0065828E, 0xA0812802, 0x00000002, 0x00658291, 0xA0812802,\n\t0x00000003, 0x0065829C, 0x0065789C, 0x0065C89C, 0x00000004, 0x0065829C,\n\t0x0065C69C, 0x00659A9C, 0x00659E9C, 0x00000004, 0x0065829C, 0x0065CE9C,\n\t0x0065C89C, 0x0027D69C, 0x00000004, 0x0065829C,\n\t// Block 134, offset 0x2180\n\t0xA001281C, 0x0065CE9C, 0x0065D89C, 0x00000004, 0x0065829C, 0xA001281C,\n\t0x0065D89C, 0x0065B49C, 0x00000002, 0x0065848E, 0xA0812802, 0x00000002,\n\t0x00658491, 0xA0812802, 0x00000004, 0x0065849C, 0xA001281C, 0x0065829C,\n\t0xA001281C, 0x00000004, 0x0065849C, 0xA001281C, 0x0065A29C, 0x0027D69C,\n\t0x00000004, 0x0065849C, 0x0065C09C, 0x0065C89C, 0x0027D69C, 0x00000006,\n\t0x0065849C, 0xA001281C, 0x0065CA9C, 0x0065969C, 0xA001281C, 0x0027D69C,\n\t0x00000006, 0x0065849C, 0x0065CE9C, 0x0065869C, 0xA001281C, 0x0065C69C,\n\t0x0065B89C, 0x00000006, 0x0065849C, 0x0065CE9C, 0x0065BA9C, 0x0027D69C,\n\t0x00659E9C, 0x0065CA9C, 0x00000005, 0x0065849C, 0x0065CE9C, 0x0065D09C,\n\t0x00659A9C, 0x00659E9C, 0x00000002, 0x0065868E, 0xA0812802, 0x00000002,\n\t0x00658691, 0xA0812802, 0x00000004, 0x0065869C,\n\t// Block 135, offset 0x21c0\n\t0xA001281C, 0x0065C69C, 0x0065B89C, 0x00000006, 0x0065869C, 0xA001281C,\n\t0x0065C69C, 0x0065B89C, 0x00659E9C, 0x0065D89C, 0x00000006, 0x0065869C,\n\t0x0065CA9C, 0x0065929C, 0xA001281C, 0x0065789C, 0x0065CE9C, 0x00000004,\n\t0x0065869C, 0x0065CE9C, 0x0027D69C, 0x0065A69C, 0x00000002, 0x0065888E,\n\t0xA0812802, 0x00000002, 0x00658891, 0xA0812802, 0x00000003, 0x0065889C,\n\t0x0027D69C, 0x0065909C, 0x00000002, 0x00658A8E, 0xA0812802, 0x00000002,\n\t0x00658A91, 0xA0812802, 0x00000004, 0x00658A9C, 0x0027D69C, 0x0065B29C,\n\t0xA001291C, 0x00000003, 0x00658A9C, 0x0065CA9C, 0x0065A09C, 0x00000002,\n\t0x00658C8E, 0xA0812802, 0x00000002, 0x00658C91, 0xA0812802, 0x00000004,\n\t0x00658C9C, 0x0065789C, 0x0065869C, 0x0065CA9C, 0x00000005, 0x00658C9C,\n\t0x0065D89C, 0x0065989C, 0x0027D69C, 0x0065B89C,\n\t// Block 136, offset 0x2200\n\t0x00000002, 0x00658E8E, 0xA0812802, 0x00000002, 0x00658E91, 0xA0812802,\n\t0x00000002, 0x00658E84, 0x0065BA84, 0x00000005, 0x00658E9C, 0x0065C89C,\n\t0x0065D89C, 0x0065869C, 0xA001281C, 0x00000002, 0x0065908E, 0xA0812802,\n\t0x00000002, 0x00659091, 0xA0812802, 0x00000002, 0x0065928E, 0xA0812802,\n\t0x00000002, 0x00659291, 0xA0812802, 0x00000003, 0x0065929C, 0x0065D89C,\n\t0x0065989C, 0x00000003, 0x0065929C, 0x0065D89C, 0x00659E9C, 0x00000002,\n\t0x0065948E, 0xA0812802, 0x00000002, 0x00659491, 0xA0812802, 0x00000002,\n\t0x0065968E, 0xA0812802, 0x00000002, 0x00659691, 0xA0812802, 0x00000004,\n\t0x0065969C, 0xA001281C, 0x0027D69C, 0x0065909C, 0x00000002, 0x0065988E,\n\t0xA0812802, 0x00000002, 0x00659891, 0xA0812802, 0x00000002, 0x00659A8E,\n\t0xA0812802, 0x00000002, 0x00659A91, 0xA0812802,\n\t// Block 137, offset 0x2240\n\t0x00000002, 0x00659C8E, 0xA0812802, 0x00000002, 0x00659C91, 0xA0812802,\n\t0x00000003, 0x00659C9C, 0xA001281C, 0x00658E9C, 0x00000002, 0x00659E8E,\n\t0xA0812802, 0x00000002, 0x00659E91, 0xA0812802, 0x00000003, 0x00659E9C,\n\t0xA001281C, 0x0065CA9C, 0x00000003, 0x0065A89C, 0x00659A9C, 0x00659E9C,\n\t0x00000002, 0x0065AA8E, 0xA0812802, 0x00000002, 0x0065AA91, 0xA0812802,\n\t0x00000002, 0x0065AA8E, 0xA0812902, 0x00000002, 0x0065AA91, 0xA0812902,\n\t0x00000006, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x0065929C, 0x0065D89C,\n\t0x00659E9C, 0x00000004, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x00659A9C,\n\t0x00000005, 0x0065AA9C, 0xA001281C, 0x0027D69C, 0x0065CC9C, 0x0065CA9C,\n\t0x00000003, 0x0065AA9C, 0x0065789C, 0x00659A9C, 0x00000002, 0x0065AC8E,\n\t0xA0812802, 0x00000002, 0x0065AC91, 0xA0812802,\n\t// Block 138, offset 0x2280\n\t0x00000002, 0x0065AC8E, 0xA0812902, 0x00000002, 0x0065AC91, 0xA0812902,\n\t0x00000006, 0x0065AC9C, 0xA001291C, 0x0065769C, 0x0065909C, 0x00659E9C,\n\t0x0065CA9C, 0x00000004, 0x0065AC9C, 0xA001291C, 0x0065869C, 0x0065CA9C,\n\t0x00000003, 0x0065AC9C, 0xA001291C, 0x00658A9C, 0x00000003, 0x0065AC9C,\n\t0xA001281C, 0x0065CA9C, 0x00000002, 0x0065AE8E, 0xA0812802, 0x00000002,\n\t0x0065AE91, 0xA0812802, 0x00000002, 0x0065AE8E, 0xA0812902, 0x00000002,\n\t0x0065AE91, 0xA0812902, 0x00000006, 0x0065AE9C, 0x0065769C, 0x0065C69C,\n\t0x00659A9C, 0x00659E9C, 0xA001281C, 0x00000004, 0x0065AE9C, 0x0065789C,\n\t0x0027D69C, 0x00659E9C, 0x00000006, 0x0065AE9C, 0xA001281C, 0x00659A9C,\n\t0x00658E9C, 0x00657E9C, 0x0065CA9C, 0x00000003, 0x0065AE9C, 0x0065C69C,\n\t0x0065D89C, 0x00000002, 0x0065B08E, 0xA0812802,\n\t// Block 139, offset 0x22c0\n\t0x00000002, 0x0065B091, 0xA0812802, 0x00000002, 0x0065B08E, 0xA0812902,\n\t0x00000002, 0x0065B091, 0xA0812902, 0x00000005, 0x0065B09C, 0xA001291C,\n\t0x0027D69C, 0x00658E9C, 0xA001281C, 0x00000004, 0x0065B09C, 0xA001281C,\n\t0x0027D69C, 0x0065969C, 0x00000005, 0x0065B09C, 0x0065869C, 0x0065969C,\n\t0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065B09C, 0xA001291C, 0x0065949C,\n\t0x00000004, 0x0065B09C, 0xA001291C, 0x0065A29C, 0x0065AC9C, 0x00000003,\n\t0x0065B09C, 0x0065CA9C, 0x00659A9C, 0x00000004, 0x0065B09C, 0xA001291C,\n\t0x0065D89C, 0x0065909C, 0x00000002, 0x0065B28E, 0xA0812802, 0x00000002,\n\t0x0065B291, 0xA0812802, 0x00000002, 0x0065B28E, 0xA0812902, 0x00000002,\n\t0x0065B291, 0xA0812902, 0x00000003, 0x0065B29C, 0x0027D69C, 0x0065CA9C,\n\t0x00000003, 0x0065B29C, 0x0027D69C, 0x0065D89C,\n\t// Block 140, offset 0x2300\n\t0x00000005, 0x0065B29C, 0xA001291C, 0x0065789C, 0x0065D89C, 0x00659E9C,\n\t0x00000004, 0x0065B29C, 0xA001281C, 0x0065CA9C, 0x00659E9C, 0x00000005,\n\t0x0065B29C, 0xA001291C, 0x0065D89C, 0x00659E9C, 0xA001281C, 0x00000004,\n\t0x0065B49C, 0x0065789C, 0x0065869C, 0x0065CE9C, 0x00000003, 0x0065B49C,\n\t0x0065789C, 0x0065CA9C, 0x00000002, 0x0065B484, 0x00659084, 0x00000003,\n\t0x0065B49C, 0x00659A9C, 0x0065AA9C, 0x00000003, 0x0065B49C, 0x0065CA9C,\n\t0x0065869C, 0x00000005, 0x0065B49C, 0x0065D89C, 0x00658E9C, 0x0065C49C,\n\t0x0065D89C, 0x00000004, 0x0065B69C, 0x0065869C, 0x0065CE9C, 0x0065D89C,\n\t0x00000006, 0x0065B69C, 0x0065C89C, 0x0065AA9C, 0xA001281C, 0x0027D69C,\n\t0x0065CA9C, 0x00000004, 0x0065BA9C, 0x0027D69C, 0x00659E9C, 0x0065CA9C,\n\t0x00000003, 0x0065BA9C, 0x0065829C, 0xA001281C,\n\t// Block 141, offset 0x2340\n\t0x00000005, 0x0065BA9C, 0x0065829C, 0xA001281C, 0x00659E9C, 0x0065D89C,\n\t0x00000004, 0x0065BE9C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003,\n\t0x0065BE9C, 0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065C09C, 0x0065769C,\n\t0x0065D89C, 0x00000004, 0x0065C89C, 0x00659A9C, 0x00659E9C, 0x0065CA9C,\n\t0x00000005, 0x0065CA9C, 0x0027D69C, 0x0065AE9C, 0xA001281C, 0x0065CA9C,\n\t0x00000004, 0x0065CA9C, 0x0065AC9C, 0xA001291C, 0x0027D69C, 0x00000006,\n\t0x0065CC9C, 0x0065D89C, 0x00659E9C, 0x0065889C, 0xA001281C, 0x0065D89C,\n\t0x00000002, 0x0065D091, 0xA0812802, 0x00000003, 0x0065D09C, 0x00659A9C,\n\t0x00659E9C, 0x00000002, 0x0065D291, 0xA0812802, 0x00000002, 0x0065D491,\n\t0xA0812802, 0x00000002, 0x0065D691, 0xA0812802, 0x00000002, 0x0065DA84,\n\t0xA0013A04, 0x00000002, 0x0065EC84, 0xA0013A04,\n\t// Block 142, offset 0x2380\n\t0x00000002, 0x0065F684, 0xA0013A04, 0x00000002, 0x00660684, 0xA0013A04,\n\t0x00000002, 0x00661284, 0xA0013A04, 0x00000002, 0x00661484, 0xA0013A04,\n\t0x00000002, 0x00661C84, 0xA0013A04, 0x00000002, 0x00661E84, 0xA0013A04,\n\t0x00000002, 0x00662284, 0xA0013A04, 0x00000002, 0x00663884, 0xA0013A04,\n\t0x00000002, 0x00663896, 0xA0013A16, 0x00000002, 0x00663A84, 0xA0013A04,\n\t0x00000002, 0x00663A84, 0xA0013C04, 0x00000002, 0x0075C284, 0xA0013904,\n\t0x00000002, 0x00862084, 0xA0013904, 0x00000002, 0x00862284, 0xA0013904,\n\t0x00000002, 0x00862484, 0xA0013904, 0x00000002, 0x00862684, 0xA0013904,\n\t0x00000002, 0x00862884, 0xA0013904, 0x00000002, 0x00862A84, 0xA0013904,\n\t0x00000002, 0x00862C84, 0xA0013904, 0x00000002, 0x00862C84, 0xA0013A04,\n\t0x00000002, 0x00862E84, 0xA0013904, 0x00000002,\n\t// Block 143, offset 0x23c0\n\t0x00863084, 0xA0013904, 0x00000002, 0x00863284, 0xA0013904, 0x00000002,\n\t0x00863284, 0xA0013A04, 0x00000002, 0x00863484, 0xA0013904, 0x00000002,\n\t0x00863484, 0xA0013A04, 0x00000002, 0x00863684, 0xA0013904, 0x00000002,\n\t0x00863684, 0xA0013A04, 0x00000002, 0x00863884, 0xA0013904, 0x00000002,\n\t0x00863A84, 0xA0013904, 0x00000002, 0x00863C84, 0xA0013904, 0x00000002,\n\t0x00863E84, 0xA0013904, 0x00000002, 0x00863E84, 0xA0013A04, 0x00000002,\n\t0x00863E84, 0xA0013C04, 0x00000002, 0x00864084, 0xA0013904, 0x00000002,\n\t0x00864284, 0xA0013904, 0x00000002, 0x00864484, 0xA0013904, 0x00000002,\n\t0x00864684, 0xA0013904, 0x00000002, 0x00864684, 0xA0013A04, 0x00000002,\n\t0x00864884, 0xA0013904, 0x00000002, 0x00864884, 0xA0013A04, 0x00000002,\n\t0x00864A84, 0xA0013904, 0x00000002, 0x00864C84,\n\t// Block 144, offset 0x2400\n\t0xA0013904, 0x00000002, 0x029C6C84, 0xA0013904, 0x00000002, 0x029CB284,\n\t0xA0013904, 0x00000002, 0x02A30484, 0xA0013904, 0x00000002, 0x02A3C084,\n\t0xA0013904, 0x00000002, 0x02A40084, 0xA0013904, 0x00000002, 0x02A6B884,\n\t0xA0013904, 0x00000002, 0x02A6D284, 0xA0013904, 0x00000002, 0x02A70484,\n\t0xA0013904, 0x00000002, 0x02B81E84, 0xA0013904, 0x00000002, 0x02B81E84,\n\t0xA0013A04, 0x00000002, 0x02B84484, 0xA0013904, 0x00000002, 0x02B84684,\n\t0xA0013904, 0x00000002, 0x02BEA084, 0xA0013904, 0x00000002, 0x02BF8684,\n\t0xA0013904, 0x00000002, 0x02CBCA84, 0xA0013904, 0x00000002, 0x02CE1084,\n\t0xA0013904, 0x00000004, 0x02D0549C, 0x02BE1E9C, 0x029E349C, 0x02F27C9C,\n\t0x00000002, 0x02D6F484, 0xA0013904, 0x00000002, 0x02E45684, 0xA0013904,\n\t0x00000002, 0x02E4B684, 0xA0013904, 0x00000002,\n\t// Block 145, offset 0x2440\n\t0x02E71684, 0xA0013904, 0x00000002, 0x02EB1684, 0xA0013904, 0x00000002,\n\t0x02EDDC84, 0xA0013904, 0x00000002, 0x02F27484, 0xA0013904, 0x00000002,\n\t0x02F5F284, 0xA0013904, 0x00000002, 0x02FEA484, 0xA0013904, 0x00000002,\n\t0x02FEA684, 0xA0013904, 0x00000002, 0x02FEA684, 0xA0013A04, 0x00000002,\n\t0x02FF1484, 0xA0013904, 0x00000002, 0x02FF1484, 0xA0013A04, 0x00000002,\n\t0x0300FE84, 0xA0013904, 0x00000002, 0x03011284, 0xA0013904, 0x00000002,\n\t0x0303F884, 0xA0013904, 0x00000002, 0x0304F284, 0xA0013904, 0x00000002,\n\t0x0304F284, 0xA0013A04, 0x00000002, 0x0313A484, 0xA0013904, 0x00000002,\n\t0x031B6684, 0xA0013904, 0x00000002, 0x031F6C84, 0xA0013904, 0x00000002,\n\t0x031F6C84, 0xA0013A04, 0x00000002, 0x03212284, 0xA0013904, 0x00000002,\n\t0x032C3884, 0xA0013904, 0x00000002, 0x032DD084,\n\t// Block 146, offset 0x2480\n\t0xA0013904, 0x00000002, 0x0331C084, 0xA0013904, 0x00000002, 0x03332C84,\n\t0xA0013904, 0x00000002, 0x03355084, 0xA0013904, 0x00000002, 0x03367884,\n\t0xA0013904, 0x00000002, 0x033CEA84, 0xA0013904, 0x00000002, 0x033E9484,\n\t0xA0013904, 0x00000002, 0x033EA484, 0xA0013904, 0x00000002, 0x033F1A84,\n\t0xA0013904, 0x00000002, 0x033F3884, 0xA0013904, 0x00000002, 0x033F3884,\n\t0xA0013A04, 0x00000003, 0x0003F484, 0x002C9884, 0x0003F69F, 0x00000003,\n\t0x0003F484, 0x002C988A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002D6884,\n\t0x0003F69F, 0x00000003, 0x0003F484, 0x002D688A, 0x0003F69F, 0x00000003,\n\t0x0003F484, 0x002D9A84, 0x0003F69F, 0x00000003, 0x0003F484, 0x002D9A8A,\n\t0x0003F69F, 0x00000003, 0x0003F484, 0x002DFE84, 0x0003F69F, 0x00000003,\n\t0x0003F484, 0x002DFE8A, 0x0003F69F, 0x00000003,\n\t// Block 147, offset 0x24c0\n\t0x0003F484, 0x002EE284, 0x0003F69F, 0x00000003, 0x0003F484, 0x002EE28A,\n\t0x0003F69F, 0x00000003, 0x0003F484, 0x002F5684, 0x0003F69F, 0x00000003,\n\t0x0003F484, 0x002F568A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002F7A84,\n\t0x0003F69F, 0x00000003, 0x0003F484, 0x002F7A8A, 0x0003F69F, 0x00000003,\n\t0x0003F484, 0x002FE684, 0x0003F69F, 0x00000003, 0x0003F484, 0x002FE68A,\n\t0x0003F69F, 0x00000003, 0x0003F484, 0x00302C84, 0x0003F69F, 0x00000003,\n\t0x0003F484, 0x00302C8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x0030F684,\n\t0x0003F69F, 0x00000003, 0x0003F484, 0x0030F68A, 0x0003F69F, 0x00000003,\n\t0x0004B084, 0x002FE68A, 0x0004B29F, 0x00000002, 0x002C0A9D, 0x002F569C,\n\t0x00000002, 0x402C0C20, 0xAE604102, 0x00000002, 0x002C0C83, 0xAE604102,\n\t0x00000002, 0x402C0C20, 0xAE604702, 0x00000002,\n\t// Block 148, offset 0x2500\n\t0x402C0C20, 0xAE605202, 0x00000002, 0x002C0C83, 0xAE605202, 0x00000002,\n\t0x402C0C20, 0xACA05602, 0x00000002, 0x002C0C83, 0xACA05602, 0x00000002,\n\t0x402C0C20, 0xADC07002, 0x00000002, 0x002C0C83, 0xADC07002, 0x00000002,\n\t0x402C0C20, 0xADC07702, 0x00000002, 0x002C0C83, 0xADC07702, 0x00000002,\n\t0x402C0C20, 0xADC07802, 0x00000002, 0x002C0C83, 0xADC07802, 0x00000002,\n\t0x402C0C20, 0xADC07B02, 0x00000002, 0x002C0C83, 0xADC07B02, 0x00000002,\n\t0x402C0E20, 0xAE603202, 0x00000002, 0x002C0E83, 0xAE603202, 0x00000003,\n\t0x402C0E20, 0xAE603202, 0xAE605202, 0x00000003, 0x002C0E83, 0xAE603202,\n\t0xAE605202, 0x00000002, 0x402C0E20, 0xAE603C02, 0x00000002, 0x002C0E83,\n\t0xAE603C02, 0x00000002, 0x402C0E20, 0xAE604102, 0x00000002, 0x002C0E83,\n\t0xAE604102, 0x00000003, 0x402C0E20, 0xAE604102,\n\t// Block 149, offset 0x2540\n\t0xAE605202, 0x00000003, 0x002C0E83, 0xAE604102, 0xAE605202, 0x00000002,\n\t0x402C0E20, 0xAE605202, 0x00000002, 0x002C0E83, 0xAE605202, 0x00000002,\n\t0x402C0E20, 0xACA05602, 0x00000002, 0x002C0E83, 0xACA05602, 0x00000002,\n\t0x402C0E20, 0xADC07002, 0x00000002, 0x002C0E83, 0xADC07002, 0x00000003,\n\t0x402C0E20, 0xADC07002, 0xAE605202, 0x00000003, 0x002C0E83, 0xADC07002,\n\t0xAE605202, 0x00000002, 0x402C0E20, 0xADC07702, 0x00000002, 0x002C0E83,\n\t0xADC07702, 0x00000002, 0x402C1020, 0xAE603202, 0x00000002, 0x002C1083,\n\t0xAE603202, 0x00000002, 0x402C1020, 0xAE603502, 0x00000002, 0x002C1083,\n\t0xAE603502, 0x00000002, 0x402C1020, 0xAE603702, 0x00000002, 0x002C1083,\n\t0xAE603702, 0x00000002, 0x402C1020, 0xAE603C02, 0x00000002, 0x002C1083,\n\t0xAE603C02, 0x00000003, 0x402C1020, 0xAE603C02,\n\t// Block 150, offset 0x2580\n\t0xAE603202, 0x00000003, 0x002C1083, 0xAE603C02, 0xAE603202, 0x00000003,\n\t0x402C1020, 0xAE603C02, 0xAE603502, 0x00000003, 0x002C1083, 0xAE603C02,\n\t0xAE603502, 0x00000003, 0x402C1020, 0xAE603C02, 0xAE604E02, 0x00000003,\n\t0x002C1083, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C1020, 0xAE603C02,\n\t0xAE606402, 0x00000003, 0x002C1083, 0xAE603C02, 0xAE606402, 0x00000002,\n\t0x402C1020, 0xAE604102, 0x00000002, 0x002C1083, 0xAE604102, 0x00000002,\n\t0x402C1020, 0xAE604702, 0x00000002, 0x002C1083, 0xAE604702, 0x00000002,\n\t0x402C1020, 0xAE604E02, 0x00000002, 0x002C1083, 0xAE604E02, 0x00000002,\n\t0x402C1020, 0xAE605202, 0x00000002, 0x002C1083, 0xAE605202, 0x00000002,\n\t0x402C1020, 0xACA05602, 0x00000002, 0x002C1083, 0xACA05602, 0x00000003,\n\t0x402C1020, 0xACA05602, 0xAE603702, 0x00000003,\n\t// Block 151, offset 0x25c0\n\t0x002C1083, 0xACA05602, 0xAE603702, 0x00000002, 0x402C1020, 0xACA05902,\n\t0x00000002, 0x002C1083, 0xACA05902, 0x00000002, 0x402C1020, 0xAE605B02,\n\t0x00000002, 0x002C1083, 0xAE605B02, 0x00000003, 0x402C1020, 0xAE605B02,\n\t0xAE603202, 0x00000003, 0x002C1083, 0xAE605B02, 0xAE603202, 0x00000003,\n\t0x402C1020, 0xAE605B02, 0xAE603502, 0x00000003, 0x002C1083, 0xAE605B02,\n\t0xAE603502, 0x00000002, 0x402C1020, 0xAE606402, 0x00000002, 0x002C1083,\n\t0xAE606402, 0x00000002, 0x402C1020, 0xAE606502, 0x00000002, 0x002C1083,\n\t0xAE606502, 0x00000002, 0x402C1020, 0xAE606702, 0x00000002, 0x002C1083,\n\t0xAE606702, 0x00000002, 0x402C1020, 0xADC07002, 0x00000002, 0x002C1083,\n\t0xADC07002, 0x00000003, 0x402C1020, 0xADC07002, 0xAE603C02, 0x00000003,\n\t0x002C1083, 0xADC07002, 0xAE603C02, 0x00000002,\n\t// Block 152, offset 0x2600\n\t0x402C1020, 0xADC07802, 0x00000002, 0x002C1083, 0xADC07802, 0x00000002,\n\t0x402C1020, 0xADC07A02, 0x00000002, 0x002C1083, 0xADC07A02, 0x00000002,\n\t0x402C3C20, 0xAE603202, 0x00000002, 0x002C3C83, 0xAE603202, 0x00000002,\n\t0x402C3C20, 0xAE604102, 0x00000002, 0x002C3C83, 0xAE604102, 0x00000002,\n\t0x402C3C20, 0xACA05602, 0x00000002, 0x002C3C83, 0xACA05602, 0x00000002,\n\t0x402C3C20, 0xADC07002, 0x00000002, 0x002C3C83, 0xADC07002, 0x00000002,\n\t0x402C3C20, 0xADC07B02, 0x00000002, 0x002C3C83, 0xADC07B02, 0x00000002,\n\t0x402C3E20, 0xAE604702, 0x00000002, 0x002C3E83, 0xAE604702, 0x00000002,\n\t0x402C3E20, 0xAE605202, 0x00000002, 0x002C3E83, 0xAE605202, 0x00000002,\n\t0x402C4020, 0xAE603202, 0x00000002, 0x002C4083, 0xAE603202, 0x00000002,\n\t0x402C4020, 0xAE603502, 0x00000002, 0x002C4083,\n\t// Block 153, offset 0x2640\n\t0xAE603502, 0x00000002, 0x402C4020, 0xAE603702, 0x00000002, 0x002C4083,\n\t0xAE603702, 0x00000002, 0x402C4020, 0xAE603C02, 0x00000002, 0x002C4083,\n\t0xAE603C02, 0x00000002, 0x402C4020, 0xAE604102, 0x00000002, 0x002C4083,\n\t0xAE604102, 0x00000002, 0x402C4020, 0xAE604702, 0x00000002, 0x002C4083,\n\t0xAE604702, 0x00000003, 0x402C4020, 0xAE604702, 0xAE603202, 0x00000003,\n\t0x002C4083, 0xAE604702, 0xAE603202, 0x00000002, 0x402C4020, 0xAE604E02,\n\t0x00000002, 0x002C4083, 0xAE604E02, 0x00000002, 0x002C4083, 0xAE605202,\n\t0x00000002, 0x402C4020, 0xACA05902, 0x00000002, 0x002C4083, 0xACA05902,\n\t0x00000002, 0x402C4020, 0xAE605B02, 0x00000002, 0x002C4083, 0xAE605B02,\n\t0x00000002, 0x402C4020, 0xAE606402, 0x00000002, 0x002C4083, 0xAE606402,\n\t0x00000002, 0x402C4020, 0xAE606502, 0x00000002,\n\t// Block 154, offset 0x2680\n\t0x002C4083, 0xAE606502, 0x00000002, 0x402C4020, 0xAE606702, 0x00000002,\n\t0x002C4083, 0xAE606702, 0x00000002, 0x402C4020, 0xADC07002, 0x00000002,\n\t0x002C4083, 0xADC07002, 0x00000002, 0x402C4020, 0xADC07A02, 0x00000002,\n\t0x002C4083, 0xADC07A02, 0x00000002, 0x402C6620, 0xAE603202, 0x00000002,\n\t0x002C6683, 0xAE603202, 0x00000002, 0x402C6620, 0xAE604102, 0x00000002,\n\t0x002C6683, 0xAE604102, 0x00000002, 0x402C6620, 0xAE605202, 0x00000002,\n\t0x002C6683, 0xAE605202, 0x00000002, 0x402C6620, 0xACA05602, 0x00000002,\n\t0x002C6683, 0xACA05602, 0x00000002, 0x402C6620, 0xAE606502, 0x00000002,\n\t0x002C6683, 0xAE606502, 0x00000002, 0x402C6620, 0xAE606702, 0x00000002,\n\t0x002C6683, 0xAE606702, 0x00000002, 0x402C6620, 0xADC07002, 0x00000002,\n\t0x002C6683, 0xADC07002, 0x00000003, 0x402C6620,\n\t// Block 155, offset 0x26c0\n\t0xADC07002, 0xAE605B02, 0x00000003, 0x002C6683, 0xADC07002, 0xAE605B02,\n\t0x00000002, 0x402C6620, 0xADC07B02, 0x00000002, 0x002C6683, 0xADC07B02,\n\t0x00000002, 0x002C989C, 0x0030BE9D, 0x00000002, 0x002D0884, 0x002D9A84,\n\t0x00000002, 0x402D2420, 0xAE603202, 0x00000002, 0x002D2483, 0xAE603202,\n\t0x00000002, 0x402D2420, 0xAE603502, 0x00000002, 0x002D2483, 0xAE603502,\n\t0x00000002, 0x402D2420, 0xAE603702, 0x00000002, 0x002D2483, 0xAE603702,\n\t0x00000002, 0x402D2420, 0xAE603C02, 0x00000002, 0x002D2483, 0xAE603C02,\n\t0x00000003, 0x402D2420, 0xAE603C02, 0xAE603202, 0x00000003, 0x002D2483,\n\t0xAE603C02, 0xAE603202, 0x00000003, 0x402D2420, 0xAE603C02, 0xAE603502,\n\t0x00000003, 0x002D2483, 0xAE603C02, 0xAE603502, 0x00000003, 0x402D2420,\n\t0xAE603C02, 0xAE604E02, 0x00000003, 0x002D2483,\n\t// Block 156, offset 0x2700\n\t0xAE603C02, 0xAE604E02, 0x00000003, 0x402D2420, 0xAE603C02, 0xAE606402,\n\t0x00000003, 0x002D2483, 0xAE603C02, 0xAE606402, 0x00000002, 0x402D2420,\n\t0xAE604102, 0x00000002, 0x002D2483, 0xAE604102, 0x00000002, 0x402D2420,\n\t0xAE604702, 0x00000002, 0x002D2483, 0xAE604702, 0x00000003, 0x402D2420,\n\t0xAE604702, 0xAE605B02, 0x00000003, 0x002D2483, 0xAE604702, 0xAE605B02,\n\t0x00000002, 0x402D2420, 0xAE604D02, 0x00000002, 0x002D2483, 0xAE604D02,\n\t0x00000002, 0x402D2420, 0xAE604E02, 0x00000002, 0x002D2483, 0xAE604E02,\n\t0x00000003, 0x402D2420, 0xAE604E02, 0xAE603202, 0x00000003, 0x002D2483,\n\t0xAE604E02, 0xAE603202, 0x00000003, 0x402D2420, 0xAE604E02, 0xAE604702,\n\t0x00000003, 0x002D2483, 0xAE604E02, 0xAE604702, 0x00000003, 0x402D2420,\n\t0xAE604E02, 0xAE605B02, 0x00000003, 0x002D2483,\n\t// Block 157, offset 0x2740\n\t0xAE604E02, 0xAE605B02, 0x00000002, 0x402D2420, 0xAE605202, 0x00000002,\n\t0x002D2483, 0xAE605202, 0x00000003, 0x402D2420, 0xAE605202, 0xAE605B02,\n\t0x00000003, 0x002D2483, 0xAE605202, 0xAE605B02, 0x00000002, 0x402D2420,\n\t0xACA05902, 0x00000002, 0x002D2483, 0xACA05902, 0x00000003, 0x402D2420,\n\t0xACA05902, 0xAE605B02, 0x00000003, 0x002D2483, 0xACA05902, 0xAE605B02,\n\t0x00000002, 0x402D2420, 0xAE605B02, 0x00000002, 0x002D2483, 0xAE605B02,\n\t0x00000003, 0x402D2420, 0xAE605B02, 0xAE603202, 0x00000003, 0x002D2483,\n\t0xAE605B02, 0xAE603202, 0x00000003, 0x402D2420, 0xAE605B02, 0xAE603502,\n\t0x00000003, 0x002D2483, 0xAE605B02, 0xAE603502, 0x00000002, 0x402D2420,\n\t0xAE606402, 0x00000002, 0x002D2483, 0xAE606402, 0x00000002, 0x402D2420,\n\t0xAE606502, 0x00000002, 0x002D2483, 0xAE606502,\n\t// Block 158, offset 0x2780\n\t0x00000002, 0x402D2420, 0xAE606702, 0x00000002, 0x002D2483, 0xAE606702,\n\t0x00000002, 0x402D2420, 0xAD806802, 0x00000002, 0x002D2483, 0xAD806802,\n\t0x00000003, 0x402D2420, 0xAD806802, 0xAE603202, 0x00000003, 0x002D2483,\n\t0xAD806802, 0xAE603202, 0x00000003, 0x402D2420, 0xAD806802, 0xAE603502,\n\t0x00000003, 0x002D2483, 0xAD806802, 0xAE603502, 0x00000003, 0x402D2420,\n\t0xAD806802, 0xAE604E02, 0x00000003, 0x002D2483, 0xAD806802, 0xAE604E02,\n\t0x00000003, 0x402D2420, 0xAD806802, 0xAE606402, 0x00000003, 0x002D2483,\n\t0xAD806802, 0xAE606402, 0x00000003, 0x402D2420, 0xAD806802, 0xADC07002,\n\t0x00000003, 0x002D2483, 0xAD806802, 0xADC07002, 0x00000002, 0x402D2420,\n\t0xADC07002, 0x00000002, 0x002D2483, 0xADC07002, 0x00000003, 0x402D2420,\n\t0xADC07002, 0xAE603C02, 0x00000003, 0x002D2483,\n\t// Block 159, offset 0x27c0\n\t0xADC07002, 0xAE603C02, 0x00000002, 0x002D689C, 0x002BDE9C, 0x00000002,\n\t0x002D689D, 0x002D229C, 0x00000002, 0x002D689D, 0x002F2C9D, 0x00000002,\n\t0x002D689D, 0x0030BE9D, 0x00000002, 0x002D689D, 0x00312A9C, 0x00000002,\n\t0x002D9A84, 0x002D9A9F, 0x00000002, 0x002D9A8A, 0x002D9A9F, 0x00000003,\n\t0x002D9A84, 0x002D9A84, 0x002D9A9F, 0x00000003, 0x002D9A8A, 0x002D9A8A,\n\t0x002D9A9F, 0x00000002, 0x002D9A84, 0x002DCC84, 0x00000002, 0x002D9A8A,\n\t0x002DCC8A, 0x00000002, 0x002D9A9C, 0x002E9E9C, 0x00000002, 0x002D9A9D,\n\t0x00306C9D, 0x00000002, 0x002D9A84, 0x0030BE9F, 0x00000002, 0x002D9A8A,\n\t0x0030BE9F, 0x00000002, 0x002D9A84, 0x0030F69F, 0x00000002, 0x002D9A8A,\n\t0x0030F69F, 0x00000002, 0x002DFE9C, 0x002BDE9D, 0x00000002, 0x002DFE9D,\n\t0x002C0A9D, 0x00000002, 0x002DFE9C, 0x002D229C,\n\t// Block 160, offset 0x2800\n\t0x00000002, 0x002DFE9D, 0x002DFE9D, 0x00000002, 0x002DFE9C, 0x002E229C,\n\t0x00000002, 0x002DFE9C, 0x002E829C, 0x00000002, 0x002DFE9D, 0x002E829D,\n\t0x00000002, 0x002DFE9C, 0x00302C9C, 0x00000002, 0x002DFE9C, 0x0030BE9D,\n\t0x00000002, 0x002DFE9C, 0x0030E29D, 0x00000002, 0x002DFE9C, 0x0032A29D,\n\t0x00000002, 0x002E229C, 0x0030F69C, 0x00000002, 0x002E829C, 0x002FE69C,\n\t0x00000002, 0x002E9E8A, 0x002EE284, 0x00000002, 0x002E9E9C, 0x002FE69C,\n\t0x00000002, 0x002EE29C, 0x0030BE9D, 0x00000002, 0x002F2C9D, 0x002D689D,\n\t0x00000002, 0x002F2C9D, 0x002F7A9D, 0x00000002, 0x002F2C9C, 0x002FE69C,\n\t0x00000002, 0x002FE69D, 0x002C629D, 0x00000002, 0x002FE694, 0x002E8294,\n\t0x00000002, 0x002FE69C, 0x002F7A9C, 0x00000002, 0x002FE69D, 0x002FE69D,\n\t0x00000002, 0x002FE684, 0x00302C84, 0x00000002,\n\t// Block 161, offset 0x2840\n\t0x002FE69D, 0x0030BE9C, 0x00000002, 0x00302C94, 0x002E8294, 0x00000002,\n\t0x0030BE84, 0x002D9A9F, 0x00000002, 0x0030BE8A, 0x002D9A9F, 0x00000003,\n\t0x0030BE84, 0x002D9A84, 0x002D9A9F, 0x00000003, 0x0030BE8A, 0x002D9A8A,\n\t0x002D9A9F, 0x00000002, 0x4030E420, 0xAE603C02, 0x00000002, 0x0030E483,\n\t0xAE603C02, 0x00000002, 0x4030E420, 0xAE604102, 0x00000002, 0x0030E483,\n\t0xAE604102, 0x00000002, 0x4030E420, 0xAE604702, 0x00000002, 0x0030E483,\n\t0xAE604702, 0x00000002, 0x4030E420, 0xAE605202, 0x00000002, 0x0030E483,\n\t0xAE605202, 0x00000002, 0x4030E420, 0xACA05602, 0x00000002, 0x0030E483,\n\t0xACA05602, 0x00000002, 0x4030E420, 0xADC07002, 0x00000002, 0x0030E483,\n\t0xADC07002, 0x00000002, 0x4030E420, 0xADC07902, 0x00000002, 0x0030E483,\n\t0xADC07902, 0x00000002, 0x4030E420, 0xADC07B02,\n\t// Block 162, offset 0x2880\n\t0x00000002, 0x0030F684, 0x002D9A9F, 0x00000002, 0x0030F68A, 0x002D9A9F,\n\t0x00000003, 0x0030F684, 0x002D9A84, 0x002D9A9F, 0x00000003, 0x0030F68A,\n\t0x002D9A8A, 0x002D9A9F, 0x00000002, 0x0032769C, 0x002FE69C, 0x00000002,\n\t0x00393C99, 0x003A8E99, 0x00000002, 0x00393C9A, 0x003A8E9A, 0x00000002,\n\t0x00395699, 0x003A8E99, 0x00000002, 0x0039569A, 0x003A8E9A, 0x00000002,\n\t0x00395899, 0x003A8E99, 0x00000002, 0x0039589A, 0x003A8E9A, 0x00000002,\n\t0x00396499, 0x003A8E99, 0x00000002, 0x0039649A, 0x003A8E9A, 0x00000002,\n\t0x00397299, 0x003A8E99, 0x00000002, 0x0039729A, 0x003A8E9A, 0x00000002,\n\t0x00397499, 0x003A8E99, 0x00000002, 0x0039749A, 0x003A8E9A, 0x00000002,\n\t0x0039C699, 0x003A8E99, 0x00000002, 0x0039C69A, 0x003A8E9A, 0x00000002,\n\t0x0039C899, 0x003A8E99, 0x00000002, 0x0039C89A,\n\t// Block 163, offset 0x28c0\n\t0x003A8E9A, 0x00000002, 0x0039DC99, 0x003A8E99, 0x00000002, 0x0039DC9A,\n\t0x003A8E9A, 0x00000002, 0x0039DE99, 0x003A8E99, 0x00000002, 0x0039DE9A,\n\t0x003A8E9A, 0x00000002, 0x0039E699, 0x003A8E99, 0x00000002, 0x0039E69A,\n\t0x003A8E9A, 0x00000002, 0x0039EE99, 0x003A8E99, 0x00000002, 0x0039EE9A,\n\t0x003A8E9A, 0x00000002, 0x0039F099, 0x003A8E99, 0x00000002, 0x0039F09A,\n\t0x003A8E9A, 0x00000002, 0x0039FC99, 0x003A8E99, 0x00000002, 0x0039FC9A,\n\t0x003A8E9A, 0x00000002, 0x003A1299, 0x003A8E99, 0x00000002, 0x003A129A,\n\t0x003A8E9A, 0x00000002, 0x003A1A99, 0x003A8E99, 0x00000002, 0x003A1A9A,\n\t0x003A8E9A, 0x00000002, 0x003A4099, 0x003A8E99, 0x00000002, 0x003A409A,\n\t0x003A8E9A, 0x00000002, 0x003A4E9A, 0x003A8E9A, 0x00000002, 0x003A5699,\n\t0x003A8E99, 0x00000002, 0x003A569A, 0x003A8E9A,\n\t// Block 164, offset 0x2900\n\t0x00000002, 0x003A689A, 0x003A8E9A, 0x00000002, 0x003A9099, 0x003A8E99,\n\t0x00000002, 0x003A909A, 0x003A8E9A, 0x00000002, 0x402D6A20, 0xAE604702,\n\t0x00000002, 0x002D6A83, 0xAE604702, 0x00000002, 0x402D6A20, 0xAE605202,\n\t0x00000002, 0x002D6A83, 0xAE605202, 0x00000002, 0x002D9883, 0xAE603202,\n\t0x00000002, 0x002D9883, 0xAE603502, 0x00000002, 0x002D9883, 0xAE603702,\n\t0x00000002, 0x002D9883, 0xAE603C02, 0x00000002, 0x002D9883, 0xAE604102,\n\t0x00000002, 0x002D9883, 0xAE604702, 0x00000003, 0x002D9883, 0xAE604702,\n\t0xAE603202, 0x00000002, 0x002D9883, 0xAE604E02, 0x00000002, 0x002D9883,\n\t0xACA05902, 0x00000002, 0x002D9883, 0xAE605B02, 0x00000002, 0x002D9883,\n\t0xAE606402, 0x00000002, 0x002D9883, 0xAE606502, 0x00000002, 0x002D9883,\n\t0xAE606702, 0x00000002, 0x002D9883, 0xADC07002,\n\t// Block 165, offset 0x2940\n\t0x00000002, 0x002D9883, 0xADC07A02, 0x00000002, 0x402EE420, 0xAE604E02,\n\t0x00000002, 0x002EE483, 0xAE604E02, 0x00000002, 0x402EE420, 0xAE605B02,\n\t0x00000002, 0x002EE483, 0xAE605B02, 0x00000002, 0x40306E20, 0xAE603202,\n\t0x00000002, 0x00306E83, 0xAE603202, 0x00000002, 0x40306E20, 0xAE603502,\n\t0x00000002, 0x00306E83, 0xAE603502, 0x00000002, 0x40306E20, 0xAE604102,\n\t0x00000002, 0x00306E83, 0xAE604102, 0x00000002, 0x40306E20, 0xAE605B02,\n\t0x00000002, 0x00306E83, 0xAE605B02, 0x00000002, 0x402FE820, 0xAE605202,\n\t0x00000002, 0x002FE883, 0xAE605202, 0x00000002, 0x002C6294, 0xA0013914,\n\t0x00000002, 0x00302C83, 0x402D6820, 0x00000002, 0x00302C89, 0x002D6888,\n\t0x00000002, 0x40310021, 0xAE603202, 0x00000002, 0x003100A3, 0xAE603202,\n\t0x00000002, 0x40310021, 0xAE603502, 0x00000002,\n\t// Block 166, offset 0x2980\n\t0x003100A3, 0xAE603502, 0x00000002, 0x40310021, 0xAE604102, 0x00000002,\n\t0x003100A3, 0xAE604102, 0x00000002, 0x40310021, 0xAE605B02, 0x00000002,\n\t0x003100A3, 0xAE605B02, 0x00000002, 0x40320C20, 0xAE603202, 0x00000002,\n\t0x00320C83, 0xAE603202, 0x00000002, 0x40320C20, 0xAE605B02, 0x00000002,\n\t0x00320C83, 0xAE605B02, 0x00000002, 0x40320C21, 0xAE605B02, 0x00000002,\n\t0x00320CA3, 0xAE605B02, 0x00000002, 0x40320E20, 0xAE603202, 0x00000002,\n\t0x00320E83, 0xAE603202, 0x00000002, 0x40320E21, 0xAE604E02, 0x00000002,\n\t0x00320EA3, 0xAE604E02, 0x00000002, 0x40320E21, 0xAE605B02, 0x00000002,\n\t0x00320EA3, 0xAE605B02, 0x00000002, 0x40321020, 0xAE603202, 0x00000002,\n\t0x00321083, 0xAE603202, 0x00000002, 0x402BDE21, 0x002C9888, 0x00000002,\n\t0x002BDEA3, 0x002C9888, 0x00000003, 0x402BDE21,\n\t// Block 167, offset 0x29c0\n\t0x002C9888, 0xAE605B02, 0x00000003, 0x002BDEA3, 0x002C9888, 0xAE605B02,\n\t0x00000002, 0x402EE221, 0x002C9888, 0x00000002, 0x002EE2A3, 0x002C9888,\n\t0x00000003, 0x402EE221, 0x002C9888, 0xAE604E02, 0x00000003, 0x002EE2A3,\n\t0x002C9888, 0xAE604E02, 0x00000003, 0x402EE221, 0x002C9888, 0xAE605B02,\n\t0x00000003, 0x002EE2A3, 0x002C9888, 0xAE605B02, 0x00000002, 0x40306C21,\n\t0x002C9888, 0x00000002, 0x00306CA3, 0x002C9888, 0x00000003, 0x40306C21,\n\t0x002C9888, 0xAE603202, 0x00000003, 0x00306CA3, 0x002C9888, 0xAE603202,\n\t0x00000003, 0x40306C21, 0x002C9888, 0xAE603502, 0x00000003, 0x00306CA3,\n\t0x002C9888, 0xAE603502, 0x00000003, 0x40306C21, 0x002C9888, 0xAE604102,\n\t0x00000003, 0x00306CA3, 0x002C9888, 0xAE604102, 0x00000003, 0x40306C21,\n\t0x002C9888, 0xAE605B02, 0x00000003, 0x00306CA3,\n\t// Block 168, offset 0x2a00\n\t0x002C9888, 0xAE605B02, 0x00000002, 0x404A7620, 0x838225B3, 0x00000004,\n\t0x004A8083, 0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004A8084,\n\t0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004A8083, 0x404AB420,\n\t0x404A8020, 0x404AFA20, 0x00000004, 0x004A8084, 0x404AB420, 0x404A8020,\n\t0x404AFA20, 0x00000004, 0x004A8083, 0x404AFA20, 0x404A8020, 0x404AFA20,\n\t0x00000004, 0x004A8084, 0x404AFA20, 0x404A8020, 0x404AFA20, 0x00000002,\n\t0x404A8020, 0x828225B5, 0x00000004, 0x004AB083, 0x404A8020, 0x404A8020,\n\t0x404AFA20, 0x00000004, 0x004AB084, 0x404A8020, 0x404A8020, 0x404AFA20,\n\t0x00000004, 0x004AB083, 0x404A8420, 0x404A8020, 0x404AFA20, 0x00000004,\n\t0x004AB084, 0x404A8420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB083,\n\t0x404AB820, 0x404A8020, 0x404AFA20, 0x00000004,\n\t// Block 169, offset 0x2a40\n\t0x004AB084, 0x404AB820, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB083,\n\t0x404AC020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB084, 0x404AC020,\n\t0x404A8020, 0x404AFA20, 0x00000004, 0x004AB083, 0x404AC420, 0x404A8020,\n\t0x404AFA20, 0x00000004, 0x004AB084, 0x404AC420, 0x404A8020, 0x404AFA20,\n\t0x00000002, 0x404AB020, 0x828225B5, 0x00000002, 0x004AB083, 0x828225B5,\n\t0x00000004, 0x004AC083, 0x404A8020, 0x404A8020, 0x404AFA20, 0x00000004,\n\t0x004AC084, 0x404A8020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AC083,\n\t0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AC084, 0x404AB020,\n\t0x404A8020, 0x404AFA20, 0x00000004, 0x004AC083, 0x404AFA20, 0x404A8020,\n\t0x404AFA20, 0x00000004, 0x004AC084, 0x404AFA20, 0x404A8020, 0x404AFA20,\n\t0x00000002, 0x404AC020, 0x828225B5, 0x00000004,\n\t// Block 170, offset 0x2a80\n\t0x004AC483, 0x404A8420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AC484,\n\t0x404A8420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AC483, 0x404AB020,\n\t0x404A8020, 0x404AFA20, 0x00000004, 0x004AC484, 0x404AB020, 0x404A8020,\n\t0x404AFA20, 0x00000004, 0x004AC483, 0x404AB420, 0x404A8020, 0x404AFA20,\n\t0x00000004, 0x004AC484, 0x404AB420, 0x404A8020, 0x404AFA20, 0x00000002,\n\t0x404AD020, 0x828225B5, 0x00000004, 0x004AE083, 0x404A8020, 0x404A8020,\n\t0x404AFA20, 0x00000004, 0x004AE084, 0x404A8020, 0x404A8020, 0x404AFA20,\n\t0x00000004, 0x004AE083, 0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004,\n\t0x004AE084, 0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AE083,\n\t0x404AC020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AE084, 0x404AC020,\n\t0x404A8020, 0x404AFA20, 0x00000002, 0x404AEA20,\n\t// Block 171, offset 0x2ac0\n\t0x8281258B, 0x00000002, 0x404AF020, 0x8281258B, 0x00000002, 0x82822599,\n\t0x838225B3, 0x00000002, 0x8282259B, 0x828225B5, 0x00000002, 0x828225A3,\n\t0x828225B5, 0x00000002, 0x838225A3, 0x828225B5, 0x00000002, 0x828225A7,\n\t0x828225B5, 0x00000002, 0x828225AB, 0x828225B5, 0x00000002, 0x402BDE20,\n\t0xAE604202, 0x00000002, 0x002BDE88, 0xAE604202, 0x00000003, 0x402BDE20,\n\t0xAE604202, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE604202, 0xAE603202,\n\t0x00000003, 0x402BDE20, 0xAE604202, 0xAE603502, 0x00000003, 0x002BDE88,\n\t0xAE604202, 0xAE603502, 0x00000003, 0x402BDE20, 0xAE604202, 0xAE604E02,\n\t0x00000003, 0x002BDE88, 0xAE604202, 0xAE604E02, 0x00000003, 0x402BDE20,\n\t0xAE604202, 0xAE606402, 0x00000003, 0x002BDE88, 0xAE604202, 0xAE606402,\n\t0x00000003, 0x402BDE20, 0xADC07002, 0xAE604202,\n\t// Block 172, offset 0x2b00\n\t0x00000003, 0x002BDE88, 0xADC07002, 0xAE604202, 0x00000002, 0x402C3A20,\n\t0xAE604202, 0x00000002, 0x002C3A88, 0xAE604202, 0x00000002, 0x402C9820,\n\t0xAE604202, 0x00000002, 0x002C9888, 0xAE604202, 0x00000003, 0x402C9820,\n\t0xAE604202, 0xAE603202, 0x00000003, 0x002C9888, 0xAE604202, 0xAE603202,\n\t0x00000003, 0x402C9820, 0xAE604202, 0xAE603502, 0x00000003, 0x002C9888,\n\t0xAE604202, 0xAE603502, 0x00000003, 0x402C9820, 0xAE604202, 0xAE604E02,\n\t0x00000003, 0x002C9888, 0xAE604202, 0xAE604E02, 0x00000003, 0x402C9820,\n\t0xAE604202, 0xAE606402, 0x00000003, 0x002C9888, 0xAE604202, 0xAE606402,\n\t0x00000003, 0x402C9820, 0xADC07002, 0xAE604202, 0x00000003, 0x002C9888,\n\t0xADC07002, 0xAE604202, 0x00000002, 0x402D2220, 0xAE604202, 0x00000002,\n\t0x002D2288, 0xAE604202, 0x00000002, 0x402D6820,\n\t// Block 173, offset 0x2b40\n\t0xAE604202, 0x00000002, 0x002D6888, 0xAE604202, 0x00000002, 0x402D9A20,\n\t0xAE604202, 0x00000002, 0x002D9A88, 0xAE604202, 0x00000002, 0x402DCC20,\n\t0xAE604202, 0x00000002, 0x002DCC88, 0xAE604202, 0x00000002, 0x402EE220,\n\t0xAE604202, 0x00000002, 0x002EE288, 0xAE604202, 0x00000003, 0x402EE220,\n\t0xAE604202, 0xAE603202, 0x00000003, 0x002EE288, 0xAE604202, 0xAE603202,\n\t0x00000003, 0x402EE220, 0xAE604202, 0xAE603502, 0x00000003, 0x002EE288,\n\t0xAE604202, 0xAE603502, 0x00000003, 0x402EE220, 0xAE604202, 0xAE604E02,\n\t0x00000003, 0x002EE288, 0xAE604202, 0xAE604E02, 0x00000003, 0x402EE220,\n\t0xAE604202, 0xAE606402, 0x00000003, 0x002EE288, 0xAE604202, 0xAE606402,\n\t0x00000003, 0x402EE220, 0xADC07002, 0xAE604202, 0x00000003, 0x002EE288,\n\t0xADC07002, 0xAE604202, 0x00000002, 0x402FE620,\n\t// Block 174, offset 0x2b80\n\t0xAE604202, 0x00000002, 0x002FE688, 0xAE604202, 0x00000002, 0x40306C20,\n\t0xAE604202, 0x00000002, 0x00306C88, 0xAE604202, 0x00000002, 0x4030E220,\n\t0xAE604202, 0x00000002, 0x0030E288, 0xAE604202, 0x00000002, 0x40310020,\n\t0xAE604202, 0x00000002, 0x00310088, 0xAE604202, 0x00000002, 0x40312A20,\n\t0xAE604202, 0x00000002, 0x00312A88, 0xAE604202, 0x00000003, 0x00026C84,\n\t0x00026C84, 0x0009429F, 0x00000002, 0x0002BA84, 0x0002BA9F, 0x00000002,\n\t0x0002BA84, 0x0002C49F, 0x00000002, 0x0002C484, 0x0002BA9F, 0x00000002,\n\t0x0002C484, 0x0002C49F, 0x00000002, 0x0002E484, 0x0002E49F, 0x00000002,\n\t0x0002E496, 0x0002E49F, 0x00000003, 0x0002E484, 0x0002E484, 0x0002E49F,\n\t0x00000003, 0x0002E496, 0x0002E496, 0x0002E49F, 0x00000003, 0x0003F484,\n\t0x0029CE84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t// Block 175, offset 0x2bc0\n\t0x0029D084, 0x0003F69F, 0x00000003, 0x0003F484, 0x0029D284, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0029D484, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0029D684, 0x0003F69F, 0x00000003, 0x0003F484, 0x0029D884, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0029DA84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0029DC84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0029DE84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002BDE84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002BDE8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002C0A84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002C0A8A, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002C3A84, 0x0003F69F, 0x00000003, 0x0003F484, 0x002C3A8A, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002C6284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002C628A, 0x0003F69F, 0x00000003, 0x0003F484,\n\t// Block 176, offset 0x2c00\n\t0x002D0884, 0x0003F69F, 0x00000003, 0x0003F484, 0x002D088A, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002D2284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002D228A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002DCC84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002DCC8A, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002E2284, 0x0003F69F, 0x00000003, 0x0003F484, 0x002E228A, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002E8284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002E828A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002E9E84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x002E9E8A, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x002F2C84, 0x0003F69F, 0x00000003, 0x0003F484, 0x002F2C8A, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x00306C84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x00306C8A, 0x0003F69F, 0x00000003, 0x0003F484,\n\t// Block 177, offset 0x2c40\n\t0x0030BE84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0030BE8A, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0030E284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0030E28A, 0x0003F69F, 0x00000003, 0x0003F484, 0x00310084, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0031008A, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x00312A84, 0x0003F69F, 0x00000003, 0x0003F484, 0x00312A8A, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0062AC84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0062B084, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062B284, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0062B684, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0062B884, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062BA84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0062BE84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0062C284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t// Block 178, offset 0x2c80\n\t0x0062C484, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062C884, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0062CA84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0062CC84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062CE84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0062D084, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x029C0084, 0x0003F69F, 0x00000003, 0x0003F484, 0x029C0684, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x029C1284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x029CBA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x029D1884, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x029D2884, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x029DC684, 0x0003F69F, 0x00000003, 0x0003F484, 0x029E0284, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x029E2284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02A2D684, 0x0003F69F, 0x00000003, 0x0003F484,\n\t// Block 179, offset 0x2cc0\n\t0x02A2DA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x02A56884, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x02A68284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02A6A884, 0x0003F69F, 0x00000003, 0x0003F484, 0x02A81A84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x02A8F884, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02ADB684, 0x0003F69F, 0x00000003, 0x0003F484, 0x02AE3E84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x02B6CC84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02CBCA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x02CE1084, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x02CE1284, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02CE5084, 0x0003F69F, 0x00000003, 0x0003F484, 0x02D05484, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x02D86884, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02E0D684, 0x0003F69F, 0x00000003, 0x0003F484,\n\t// Block 180, offset 0x2d00\n\t0x02E4F284, 0x0003F69F, 0x00000003, 0x0003F484, 0x02EDC684, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x02F27C84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x02F2BA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x02F2DA84, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x0303D484, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0303E684, 0x0003F69F, 0x00000003, 0x0003F484, 0x03194284, 0x0003F69F,\n\t0x00000003, 0x0003F484, 0x03198E84, 0x0003F69F, 0x00000003, 0x0003F484,\n\t0x0323A284, 0x0003F69F, 0x00000002, 0x00070484, 0x002C3A8A, 0x00000002,\n\t0x00070484, 0x002D088A, 0x00000002, 0x00094284, 0x0009429F, 0x00000003,\n\t0x00094284, 0x00094284, 0x0009429F, 0x00000002, 0x0029CC84, 0x0002409F,\n\t0x00000002, 0x0029CC84, 0x0002E49F, 0x00000002, 0x0029CC84, 0x02E1729F,\n\t0x00000002, 0x0029CE84, 0x0002409F, 0x00000002,\n\t// Block 181, offset 0x2d40\n\t0x0029CE84, 0x0002E49F, 0x00000002, 0x0029CE9E, 0x0009589E, 0x00000002,\n\t0x0029CE86, 0x0029CC86, 0x00000003, 0x0029CE84, 0x0029CC84, 0x0002E49F,\n\t0x00000003, 0x0029CE84, 0x0029CC84, 0x02CBCA9F, 0x00000003, 0x0029CE84,\n\t0x0029CC84, 0x02CE109F, 0x00000003, 0x0029CE84, 0x0029CC84, 0x02E1729F,\n\t0x00000002, 0x0029CE86, 0x0029CE86, 0x00000003, 0x0029CE84, 0x0029CE84,\n\t0x0002E49F, 0x00000003, 0x0029CE84, 0x0029CE84, 0x02CBCA9F, 0x00000003,\n\t0x0029CE84, 0x0029CE84, 0x02CE109F, 0x00000003, 0x0029CE84, 0x0029CE84,\n\t0x02E1729F, 0x00000002, 0x0029CE86, 0x0029D086, 0x00000003, 0x0029CE84,\n\t0x0029D084, 0x0002E49F, 0x00000003, 0x0029CE84, 0x0029D084, 0x02CBCA9F,\n\t0x00000003, 0x0029CE84, 0x0029D084, 0x02CE109F, 0x00000003, 0x0029CE84,\n\t0x0029D084, 0x02E1729F, 0x00000002, 0x0029CE86,\n\t// Block 182, offset 0x2d80\n\t0x0029D286, 0x00000003, 0x0029CE84, 0x0029D284, 0x0002E49F, 0x00000003,\n\t0x0029CE84, 0x0029D284, 0x02CBCA9F, 0x00000003, 0x0029CE84, 0x0029D284,\n\t0x02E1729F, 0x00000002, 0x0029CE86, 0x0029D486, 0x00000003, 0x0029CE84,\n\t0x0029D484, 0x0002E49F, 0x00000003, 0x0029CE84, 0x0029D484, 0x02CBCA9F,\n\t0x00000003, 0x0029CE84, 0x0029D484, 0x02E1729F, 0x00000002, 0x0029CE86,\n\t0x0029D686, 0x00000003, 0x0029CE84, 0x0029D684, 0x0002E49F, 0x00000003,\n\t0x0029CE84, 0x0029D684, 0x02CBCA9F, 0x00000003, 0x0029CE84, 0x0029D684,\n\t0x02E1729F, 0x00000002, 0x0029CE86, 0x0029D886, 0x00000003, 0x0029CE84,\n\t0x0029D884, 0x0002E49F, 0x00000003, 0x0029CE84, 0x0029D884, 0x02CBCA9F,\n\t0x00000003, 0x0029CE84, 0x0029D884, 0x02E1729F, 0x00000002, 0x0029CE86,\n\t0x0029DA86, 0x00000003, 0x0029CE84, 0x0029DA84,\n\t// Block 183, offset 0x2dc0\n\t0x0002E49F, 0x00000003, 0x0029CE84, 0x0029DA84, 0x02CBCA9F, 0x00000003,\n\t0x0029CE84, 0x0029DA84, 0x02E1729F, 0x00000002, 0x0029CE86, 0x0029DC86,\n\t0x00000003, 0x0029CE84, 0x0029DC84, 0x0002E49F, 0x00000003, 0x0029CE84,\n\t0x0029DC84, 0x02CBCA9F, 0x00000003, 0x0029CE84, 0x0029DC84, 0x02E1729F,\n\t0x00000002, 0x0029CE86, 0x0029DE86, 0x00000003, 0x0029CE84, 0x0029DE84,\n\t0x0002E49F, 0x00000003, 0x0029CE84, 0x0029DE84, 0x02CBCA9F, 0x00000003,\n\t0x0029CE84, 0x0029DE84, 0x02E1729F, 0x00000002, 0x0029CE84, 0x02CBCA9F,\n\t0x00000002, 0x0029CE84, 0x02CE109F, 0x00000002, 0x0029CE84, 0x02E1729F,\n\t0x00000002, 0x0029D084, 0x0002409F, 0x00000002, 0x0029D084, 0x0002E49F,\n\t0x00000002, 0x0029D086, 0x0029CC86, 0x00000003, 0x0029D084, 0x0029CC84,\n\t0x0002E49F, 0x00000003, 0x0029D084, 0x0029CC84,\n\t// Block 184, offset 0x2e00\n\t0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029CC84, 0x02E1729F, 0x00000002,\n\t0x0029D086, 0x0029CE86, 0x00000003, 0x0029D084, 0x0029CE84, 0x02CBCA9F,\n\t0x00000003, 0x0029D084, 0x0029CE84, 0x02E1729F, 0x00000002, 0x0029D086,\n\t0x0029D086, 0x00000003, 0x0029D084, 0x0029D084, 0x02CBCA9F, 0x00000003,\n\t0x0029D084, 0x0029D084, 0x02E1729F, 0x00000002, 0x0029D086, 0x0029D286,\n\t0x00000003, 0x0029D084, 0x0029D284, 0x02CBCA9F, 0x00000003, 0x0029D084,\n\t0x0029D284, 0x02E1729F, 0x00000002, 0x0029D086, 0x0029D486, 0x00000003,\n\t0x0029D084, 0x0029D484, 0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029D484,\n\t0x02E1729F, 0x00000002, 0x0029D086, 0x0029D686, 0x00000003, 0x0029D084,\n\t0x0029D684, 0x02CBCA9F, 0x00000002, 0x0029D086, 0x0029D886, 0x00000003,\n\t0x0029D084, 0x0029D884, 0x02CBCA9F, 0x00000002,\n\t// Block 185, offset 0x2e40\n\t0x0029D086, 0x0029DA86, 0x00000003, 0x0029D084, 0x0029DA84, 0x02CBCA9F,\n\t0x00000002, 0x0029D086, 0x0029DC86, 0x00000003, 0x0029D084, 0x0029DC84,\n\t0x02CBCA9F, 0x00000002, 0x0029D086, 0x0029DE86, 0x00000003, 0x0029D084,\n\t0x0029DE84, 0x02CBCA9F, 0x00000002, 0x0029D084, 0x02CBCA9F, 0x00000002,\n\t0x0029D084, 0x02CE109F, 0x00000002, 0x0029D084, 0x02E1729F, 0x00000002,\n\t0x0029D284, 0x0002409F, 0x00000002, 0x0029D284, 0x0002E49F, 0x00000002,\n\t0x0029D286, 0x0029CC86, 0x00000003, 0x0029D284, 0x0029CC84, 0x02CBCA9F,\n\t0x00000002, 0x0029D286, 0x0029CE86, 0x00000003, 0x0029D284, 0x0029CE84,\n\t0x02CBCA9F, 0x00000002, 0x0029D286, 0x0029D086, 0x00000002, 0x0029D286,\n\t0x0029D286, 0x00000002, 0x0029D286, 0x0029D486, 0x00000002, 0x0029D286,\n\t0x0029D686, 0x00000002, 0x0029D286, 0x0029D886,\n\t// Block 186, offset 0x2e80\n\t0x00000002, 0x0029D286, 0x0029DA86, 0x00000002, 0x0029D286, 0x0029DC86,\n\t0x00000002, 0x0029D286, 0x0029DE86, 0x00000002, 0x0029D284, 0x02CBCA9F,\n\t0x00000002, 0x0029D284, 0x02CE109F, 0x00000002, 0x0029D284, 0x02E1729F,\n\t0x00000002, 0x0029D484, 0x0002409F, 0x00000002, 0x0029D484, 0x0002E49F,\n\t0x00000002, 0x0029D486, 0x0029CC86, 0x00000002, 0x0029D486, 0x0029CE86,\n\t0x00000002, 0x0029D486, 0x0029D086, 0x00000002, 0x0029D486, 0x0029D286,\n\t0x00000002, 0x0029D486, 0x0029D486, 0x00000002, 0x0029D486, 0x0029D686,\n\t0x00000002, 0x0029D486, 0x0029D886, 0x00000002, 0x0029D486, 0x0029DA86,\n\t0x00000002, 0x0029D486, 0x0029DC86, 0x00000002, 0x0029D486, 0x0029DE86,\n\t0x00000002, 0x0029D484, 0x02CBCA9F, 0x00000002, 0x0029D484, 0x02CE109F,\n\t0x00000002, 0x0029D484, 0x02E1729F, 0x00000002,\n\t// Block 187, offset 0x2ec0\n\t0x0029D684, 0x0002409F, 0x00000002, 0x0029D684, 0x0002E49F, 0x00000002,\n\t0x0029D686, 0x0029CC86, 0x00000002, 0x0029D684, 0x02CBCA9F, 0x00000002,\n\t0x0029D684, 0x02CE109F, 0x00000002, 0x0029D684, 0x02E1729F, 0x00000002,\n\t0x0029D884, 0x0002409F, 0x00000002, 0x0029D884, 0x0002E49F, 0x00000002,\n\t0x0029D884, 0x02CBCA9F, 0x00000002, 0x0029D884, 0x02CE109F, 0x00000002,\n\t0x0029D884, 0x02E1729F, 0x00000002, 0x0029DA84, 0x0002409F, 0x00000002,\n\t0x0029DA84, 0x0002E49F, 0x00000002, 0x0029DA84, 0x02CBCA9F, 0x00000002,\n\t0x0029DA84, 0x02CE109F, 0x00000002, 0x0029DA84, 0x02E1729F, 0x00000002,\n\t0x0029DC84, 0x0002409F, 0x00000002, 0x0029DC84, 0x0002E49F, 0x00000002,\n\t0x0029DC84, 0x02CBCA9F, 0x00000002, 0x0029DC84, 0x02CE109F, 0x00000002,\n\t0x0029DC84, 0x02E1729F, 0x00000002, 0x0029DE84,\n\t// Block 188, offset 0x2f00\n\t0x0002409F, 0x00000002, 0x0029DE84, 0x0002E49F, 0x00000002, 0x0029DE84,\n\t0x02CBCA9F, 0x00000002, 0x0029DE84, 0x02CE109F, 0x00000002, 0x0029DE84,\n\t0x02E1729F, 0x00000002, 0x002BDE9D, 0x00306C9D, 0x00000002, 0x002BDE84,\n\t0x0031E284, 0x00000002, 0x402C1820, 0xA0105402, 0x00000002, 0x402C1A20,\n\t0xA0105402, 0x00000002, 0x402C1C20, 0xA0105402, 0x00000002, 0x402C2220,\n\t0xAE603202, 0x00000002, 0x402C2220, 0xAE603502, 0x00000002, 0x402C2220,\n\t0xAE603702, 0x00000003, 0x402C2220, 0xAE603702, 0xAE603202, 0x00000003,\n\t0x402C2220, 0xAE603702, 0xAE603502, 0x00000003, 0x402C2220, 0xAE603702,\n\t0xAE604E02, 0x00000003, 0x402C2220, 0xAE603702, 0xAE606402, 0x00000002,\n\t0x402C2220, 0xAE603C02, 0x00000003, 0x402C2220, 0xAE603C02, 0xAE603202,\n\t0x00000003, 0x402C2220, 0xAE603C02, 0xAE603502,\n\t// Block 189, offset 0x2f40\n\t0x00000003, 0x402C2220, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C2220,\n\t0xAE603C02, 0xAE606402, 0x00000002, 0x402C2220, 0xAE604102, 0x00000002,\n\t0x402C2220, 0xAE604302, 0x00000003, 0x402C2220, 0xAE604302, 0xAE603202,\n\t0x00000002, 0x402C2220, 0xAE604702, 0x00000003, 0x402C2220, 0xAE604702,\n\t0xAE605B02, 0x00000002, 0x402C2220, 0xAE604E02, 0x00000002, 0x402C2220,\n\t0xAE605202, 0x00000003, 0x402C2220, 0xAE605202, 0xAE605B02, 0x00000002,\n\t0x402C2220, 0xACA05902, 0x00000002, 0x402C2220, 0xAE605B02, 0x00000002,\n\t0x402C2220, 0xAE606402, 0x00000002, 0x402C2220, 0xAE606502, 0x00000002,\n\t0x402C2220, 0xAE606702, 0x00000002, 0x402C2220, 0xADC07002, 0x00000003,\n\t0x402C2220, 0xADC07002, 0xAE603702, 0x00000003, 0x402C2220, 0xADC07002,\n\t0xAE603C02, 0x00000002, 0x402C2220, 0xADC07602,\n\t// Block 190, offset 0x2f80\n\t0x00000002, 0x402C2420, 0xAE605202, 0x00000002, 0x402C2420, 0xADC07002,\n\t0x00000002, 0x402C2420, 0xADC07B02, 0x00000002, 0x402C2620, 0xAE603202,\n\t0x00000002, 0x402C2620, 0xAE603C02, 0x00000002, 0x402C2620, 0xAE604102,\n\t0x00000002, 0x402C2620, 0xAE605202, 0x00000002, 0x402C2620, 0xACA05602,\n\t0x00000003, 0x402C2620, 0xACA05602, 0xAE603202, 0x00000002, 0x402C2820,\n\t0xAE604102, 0x00000002, 0x402C2820, 0xAE605202, 0x00000002, 0x402C2820,\n\t0xACA05602, 0x00000002, 0x402C2820, 0xADC07002, 0x00000002, 0x402C2820,\n\t0xADC07802, 0x00000002, 0x402C2820, 0xADC07B02, 0x00000002, 0x402C2A20,\n\t0xAE603202, 0x00000002, 0x402C2A20, 0xAE603502, 0x00000002, 0x402C2A20,\n\t0xAE603702, 0x00000002, 0x402C2A20, 0xAE603C02, 0x00000003, 0x402C2A20,\n\t0xAE603C02, 0xAE603202, 0x00000003, 0x402C2A20,\n\t// Block 191, offset 0x2fc0\n\t0xAE603C02, 0xAE603502, 0x00000003, 0x402C2A20, 0xAE603C02, 0xAE604E02,\n\t0x00000003, 0x402C2A20, 0xAE603C02, 0xAE606402, 0x00000002, 0x402C2A20,\n\t0xAE604102, 0x00000002, 0x402C2A20, 0xAE604702, 0x00000002, 0x402C2A20,\n\t0xAE604E02, 0x00000002, 0x402C2A20, 0xAE605202, 0x00000002, 0x402C2A20,\n\t0xACA05602, 0x00000003, 0x402C2A20, 0xACA05602, 0xAE603702, 0x00000002,\n\t0x402C2A20, 0xACA05902, 0x00000002, 0x402C2A20, 0xAE605B02, 0x00000003,\n\t0x402C2A20, 0xAE605B02, 0xAE603202, 0x00000003, 0x402C2A20, 0xAE605B02,\n\t0xAE603502, 0x00000002, 0x402C2A20, 0xAE606402, 0x00000002, 0x402C2A20,\n\t0xAE606502, 0x00000002, 0x402C2A20, 0xAE606702, 0x00000002, 0x402C2A20,\n\t0xADC07002, 0x00000003, 0x402C2A20, 0xADC07002, 0xAE603C02, 0x00000002,\n\t0x402C2A20, 0xADC07802, 0x00000002, 0x402C2A20,\n\t// Block 192, offset 0x3000\n\t0xADC07A02, 0x00000002, 0x402C2C20, 0xAE605202, 0x00000002, 0x402C2E20,\n\t0xAE603202, 0x00000002, 0x402C2E20, 0xAE603702, 0x00000002, 0x402C2E20,\n\t0xAE603C02, 0x00000002, 0x402C2E20, 0xAE604102, 0x00000002, 0x402C2E20,\n\t0xAE605202, 0x00000002, 0x402C2E20, 0xACA05602, 0x00000002, 0x402C2E20,\n\t0xAE605B02, 0x00000002, 0x402C3020, 0xAE603C02, 0x00000002, 0x402C3020,\n\t0xAE604102, 0x00000002, 0x402C3020, 0xAE604702, 0x00000002, 0x402C3020,\n\t0xAE605202, 0x00000002, 0x402C3020, 0xACA05602, 0x00000002, 0x402C3020,\n\t0xADC07002, 0x00000002, 0x402C3020, 0xADC07902, 0x00000002, 0x402C3220,\n\t0xAE603202, 0x00000002, 0x402C3220, 0xAE603502, 0x00000002, 0x402C3220,\n\t0xAE603702, 0x00000002, 0x402C3220, 0xAE603C02, 0x00000002, 0x402C3220,\n\t0xAE604102, 0x00000002, 0x402C3220, 0xAE604702,\n\t// Block 193, offset 0x3040\n\t0x00000003, 0x402C3220, 0xAE604702, 0xAE603202, 0x00000002, 0x402C3220,\n\t0xAE604E02, 0x00000002, 0x402C3220, 0xAE605202, 0x00000002, 0x402C3220,\n\t0xACA05902, 0x00000002, 0x402C3220, 0xAE605B02, 0x00000002, 0x402C3220,\n\t0xAE606402, 0x00000002, 0x402C3220, 0xAE606502, 0x00000002, 0x402C3220,\n\t0xAE606702, 0x00000002, 0x402C3220, 0xADC07002, 0x00000002, 0x402C3220,\n\t0xADC07A02, 0x00000002, 0x402C3420, 0xAE603C02, 0x00000002, 0x402C3620,\n\t0xAE603202, 0x00000002, 0x402C3620, 0xAE604102, 0x00000002, 0x402C3620,\n\t0xACA05602, 0x00000002, 0x402C3620, 0xADC07002, 0x00000002, 0x402C3620,\n\t0xADC07B02, 0x00000002, 0x402C3820, 0xAE603202, 0x00000002, 0x402C3820,\n\t0xAE604102, 0x00000002, 0x402C3820, 0xACA05602, 0x00000002, 0x402C3820,\n\t0xADC07002, 0x00000003, 0x402C3820, 0xADC07002,\n\t// Block 194, offset 0x3080\n\t0xAE605B02, 0x00000002, 0x402C3820, 0xADC07802, 0x00000002, 0x402C3820,\n\t0xADC07B02, 0x00000002, 0x402C3A20, 0xAE603202, 0x00000002, 0x402C3A20,\n\t0xAE605202, 0x00000002, 0x402C3A20, 0xADC07002, 0x00000002, 0x002C3A9C,\n\t0x002C3A9C, 0x00000002, 0x002C3A8C, 0x002C628C, 0x00000002, 0x002C3A9C,\n\t0x002C629C, 0x00000002, 0x002C3A9C, 0x002E829C, 0x00000002, 0x402C3C20,\n\t0xAE603202, 0x00000002, 0x402C3C20, 0xAE603502, 0x00000002, 0x402C3C20,\n\t0xAE604102, 0x00000002, 0x402C3C20, 0xAE604E02, 0x00000002, 0x402C3C20,\n\t0xAE605202, 0x00000002, 0x402C3C20, 0xACA05602, 0x00000002, 0x402C3C20,\n\t0xADC07002, 0x00000002, 0x402C3C20, 0xADC07802, 0x00000002, 0x402C3C20,\n\t0xADC07B02, 0x00000002, 0x402C3E20, 0xAE603202, 0x00000002, 0x402C3E20,\n\t0xAE603502, 0x00000002, 0x402C3E20, 0xAE603702,\n\t// Block 195, offset 0x30c0\n\t0x00000002, 0x402C3E20, 0xAE603C02, 0x00000003, 0x402C3E20, 0xAE603C02,\n\t0xAE603202, 0x00000003, 0x402C3E20, 0xAE603C02, 0xAE603502, 0x00000003,\n\t0x402C3E20, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C3E20, 0xAE603C02,\n\t0xAE606402, 0x00000002, 0x402C3E20, 0xAE604102, 0x00000002, 0x402C3E20,\n\t0xAE604702, 0x00000003, 0x402C3E20, 0xAE604702, 0xAE605B02, 0x00000002,\n\t0x402C3E20, 0xAE604D02, 0x00000002, 0x402C3E20, 0xAE604E02, 0x00000003,\n\t0x402C3E20, 0xAE604E02, 0xAE603202, 0x00000003, 0x402C3E20, 0xAE604E02,\n\t0xAE604702, 0x00000003, 0x402C3E20, 0xAE604E02, 0xAE605B02, 0x00000002,\n\t0x402C3E20, 0xAE605202, 0x00000003, 0x402C3E20, 0xAE605202, 0xAE605B02,\n\t0x00000002, 0x402C3E20, 0xACA05902, 0x00000003, 0x402C3E20, 0xACA05902,\n\t0xAE605B02, 0x00000002, 0x402C3E20, 0xAE605B02,\n\t// Block 196, offset 0x3100\n\t0x00000003, 0x402C3E20, 0xAE605B02, 0xAE603202, 0x00000003, 0x402C3E20,\n\t0xAE605B02, 0xAE603502, 0x00000002, 0x402C3E20, 0xAE606402, 0x00000002,\n\t0x402C3E20, 0xAE606502, 0x00000002, 0x402C3E20, 0xAE606702, 0x00000002,\n\t0x402C3E20, 0xAD806802, 0x00000003, 0x402C3E20, 0xAD806802, 0xAE603202,\n\t0x00000003, 0x402C3E20, 0xAD806802, 0xAE603502, 0x00000003, 0x402C3E20,\n\t0xAD806802, 0xAE604E02, 0x00000003, 0x402C3E20, 0xAD806802, 0xAE606402,\n\t0x00000003, 0x402C3E20, 0xAD806802, 0xADC07002, 0x00000002, 0x402C3E20,\n\t0xADC07002, 0x00000003, 0x402C3E20, 0xADC07002, 0xAE603C02, 0x00000002,\n\t0x402C4020, 0xAE603202, 0x00000002, 0x402C4020, 0xAE605202, 0x00000002,\n\t0x402C4420, 0xAE603202, 0x00000002, 0x402C4420, 0xAE604102, 0x00000002,\n\t0x402C4420, 0xAE605202, 0x00000002, 0x402C4420,\n\t// Block 197, offset 0x3140\n\t0xACA05602, 0x00000002, 0x402C4420, 0xAE606502, 0x00000002, 0x402C4420,\n\t0xAE606702, 0x00000002, 0x402C4420, 0xADC07002, 0x00000003, 0x402C4420,\n\t0xADC07002, 0xAE605B02, 0x00000002, 0x402C4420, 0xADC07B02, 0x00000002,\n\t0x402C4620, 0xAE603202, 0x00000003, 0x402C4620, 0xAE603202, 0xAE605202,\n\t0x00000002, 0x402C4620, 0xAE603C02, 0x00000002, 0x402C4620, 0xAE604102,\n\t0x00000003, 0x402C4620, 0xAE604102, 0xAE605202, 0x00000002, 0x402C4620,\n\t0xAE605202, 0x00000002, 0x402C4620, 0xACA05602, 0x00000002, 0x402C4620,\n\t0xADC07002, 0x00000003, 0x402C4620, 0xADC07002, 0xAE605202, 0x00000002,\n\t0x402C4620, 0xADC07702, 0x00000002, 0x402C4820, 0xAE604102, 0x00000002,\n\t0x402C4820, 0xAE605202, 0x00000002, 0x402C4820, 0xACA05602, 0x00000002,\n\t0x402C4820, 0xADC07002, 0x00000002, 0x402C4820,\n\t// Block 198, offset 0x3180\n\t0xADC07702, 0x00000002, 0x402C4820, 0xADC07802, 0x00000002, 0x402C4820,\n\t0xADC07B02, 0x00000002, 0x402C4A20, 0xAE603202, 0x00000002, 0x402C4A20,\n\t0xAE603502, 0x00000002, 0x402C4A20, 0xAE603702, 0x00000002, 0x402C4A20,\n\t0xAE603C02, 0x00000002, 0x402C4A20, 0xAE604102, 0x00000002, 0x402C4A20,\n\t0xAE604302, 0x00000002, 0x402C4A20, 0xAE604702, 0x00000003, 0x402C4A20,\n\t0xAE604702, 0xAE603202, 0x00000003, 0x402C4A20, 0xAE604702, 0xAE603502,\n\t0x00000003, 0x402C4A20, 0xAE604702, 0xAE604102, 0x00000003, 0x402C4A20,\n\t0xAE604702, 0xAE605B02, 0x00000002, 0x402C4A20, 0xAE604D02, 0x00000002,\n\t0x402C4A20, 0xAE604E02, 0x00000003, 0x402C4A20, 0xAE604E02, 0xAE603202,\n\t0x00000002, 0x402C4A20, 0xACA05902, 0x00000002, 0x402C4A20, 0xAE605B02,\n\t0x00000003, 0x402C4A20, 0xAE605B02, 0xAE604702,\n\t// Block 199, offset 0x31c0\n\t0x00000002, 0x402C4A20, 0xAE606402, 0x00000002, 0x402C4A20, 0xAE606502,\n\t0x00000002, 0x402C4A20, 0xAE606702, 0x00000002, 0x402C4A20, 0xAD806802,\n\t0x00000003, 0x402C4A20, 0xAD806802, 0xAE603202, 0x00000003, 0x402C4A20,\n\t0xAD806802, 0xAE603502, 0x00000003, 0x402C4A20, 0xAD806802, 0xAE604E02,\n\t0x00000003, 0x402C4A20, 0xAD806802, 0xAE606402, 0x00000003, 0x402C4A20,\n\t0xAD806802, 0xADC07002, 0x00000002, 0x402C4A20, 0xADC07002, 0x00000002,\n\t0x402C4A20, 0xADC07502, 0x00000002, 0x402C4A20, 0xADC07802, 0x00000002,\n\t0x402C4A20, 0xADC07A02, 0x00000002, 0x402C4C20, 0xAE604E02, 0x00000002,\n\t0x402C4C20, 0xADC07002, 0x00000002, 0x402C4E20, 0xAE603202, 0x00000002,\n\t0x402C4E20, 0xAE603502, 0x00000002, 0x402C4E20, 0xAE603C02, 0x00000002,\n\t0x402C4E20, 0xAE604702, 0x00000002, 0x402C4E20,\n\t// Block 200, offset 0x3200\n\t0xAE605202, 0x00000002, 0x402C4E20, 0xADC07002, 0x00000002, 0x402C5020,\n\t0xAE604702, 0x00000002, 0x402C5020, 0xAE605202, 0x00000002, 0x402C5220,\n\t0xAE603202, 0x00000002, 0x402C5220, 0xAE603502, 0x00000002, 0x402C5220,\n\t0xAE603C02, 0x00000002, 0x402C5220, 0xAE604702, 0x00000002, 0x402C5220,\n\t0xAE604E02, 0x00000002, 0x402C5220, 0xAE605202, 0x00000002, 0x402C5220,\n\t0xAE605B02, 0x00000002, 0x402C5220, 0xAE606402, 0x00000002, 0x402C5220,\n\t0xADC07002, 0x00000002, 0x402C5420, 0xAE603202, 0x00000002, 0x402C5420,\n\t0xAE603C02, 0x00000002, 0x402C5420, 0xAE604102, 0x00000002, 0x402C5420,\n\t0xAE605202, 0x00000002, 0x402C5420, 0xADC07002, 0x00000002, 0x402C5420,\n\t0xADC07B02, 0x00000002, 0x402C6220, 0xAE603202, 0x00000002, 0x402C6220,\n\t0xAE603502, 0x00000002, 0x402C6220, 0xAE603702,\n\t// Block 201, offset 0x3240\n\t0x00000003, 0x402C6220, 0xAE603702, 0xAE603202, 0x00000003, 0x402C6220,\n\t0xAE603702, 0xAE603502, 0x00000003, 0x402C6220, 0xAE603702, 0xAE604E02,\n\t0x00000003, 0x402C6220, 0xAE603702, 0xAE606402, 0x00000002, 0x402C6220,\n\t0xAE603C02, 0x00000003, 0x402C6220, 0xAE603C02, 0xAE603202, 0x00000003,\n\t0x402C6220, 0xAE603C02, 0xAE603502, 0x00000003, 0x402C6220, 0xAE603C02,\n\t0xAE604E02, 0x00000003, 0x402C6220, 0xAE603C02, 0xAE606402, 0x00000002,\n\t0x402C6220, 0xAE604102, 0x00000002, 0x402C6220, 0xAE604302, 0x00000003,\n\t0x402C6220, 0xAE604302, 0xAE603202, 0x00000002, 0x402C6220, 0xAE604702,\n\t0x00000003, 0x402C6220, 0xAE604702, 0xAE605B02, 0x00000002, 0x402C6220,\n\t0xAE604E02, 0x00000002, 0x402C6220, 0xAE605202, 0x00000003, 0x402C6220,\n\t0xAE605202, 0xAE605B02, 0x00000002, 0x402C6220,\n\t// Block 202, offset 0x3280\n\t0xACA05902, 0x00000002, 0x402C6220, 0xAE605B02, 0x00000002, 0x402C6220,\n\t0xAE606402, 0x00000002, 0x402C6220, 0xAE606502, 0x00000002, 0x402C6220,\n\t0xAE606702, 0x00000002, 0x402C6220, 0xADC07002, 0x00000003, 0x402C6220,\n\t0xADC07002, 0xAE603702, 0x00000003, 0x402C6220, 0xADC07002, 0xAE603C02,\n\t0x00000002, 0x402C6220, 0xADC07602, 0x00000002, 0x002C629C, 0x002BDE9C,\n\t0x00000002, 0x002C629C, 0x002C0A9D, 0x00000002, 0x002C629D, 0x002DCC9D,\n\t0x00000002, 0x002C629C, 0x002E229C, 0x00000002, 0x002C629C, 0x002E829C,\n\t0x00000002, 0x002C6284, 0x00312A84, 0x00000002, 0x002C628A, 0x00312A84,\n\t0x00000002, 0x002C628A, 0x00312A8A, 0x00000002, 0x402C6420, 0xAE605202,\n\t0x00000002, 0x402C6420, 0xADC07002, 0x00000002, 0x402C6420, 0xADC07B02,\n\t0x00000002, 0x402C6620, 0xAE603202, 0x00000002,\n\t// Block 203, offset 0x32c0\n\t0x402C6620, 0xAE603C02, 0x00000002, 0x402C6620, 0xAE604102, 0x00000002,\n\t0x402C6620, 0xAE605202, 0x00000002, 0x402C6620, 0xACA05602, 0x00000003,\n\t0x402C6620, 0xACA05602, 0xAE603202, 0x00000002, 0x402C6820, 0xAE604102,\n\t0x00000002, 0x402C6820, 0xAE605202, 0x00000002, 0x402C6820, 0xACA05602,\n\t0x00000002, 0x402C6820, 0xADC07002, 0x00000002, 0x402C6820, 0xADC07802,\n\t0x00000002, 0x402C6820, 0xADC07B02, 0x00000002, 0x402C6A20, 0xAE603202,\n\t0x00000002, 0x402C6A20, 0xAE603502, 0x00000002, 0x402C6A20, 0xAE603702,\n\t0x00000002, 0x402C6A20, 0xAE603C02, 0x00000003, 0x402C6A20, 0xAE603C02,\n\t0xAE603202, 0x00000003, 0x402C6A20, 0xAE603C02, 0xAE603502, 0x00000003,\n\t0x402C6A20, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C6A20, 0xAE603C02,\n\t0xAE606402, 0x00000002, 0x402C6A20, 0xAE604102,\n\t// Block 204, offset 0x3300\n\t0x00000002, 0x402C6A20, 0xAE604702, 0x00000002, 0x402C6A20, 0xAE604E02,\n\t0x00000002, 0x402C6A20, 0xAE605202, 0x00000002, 0x402C6A20, 0xACA05602,\n\t0x00000003, 0x402C6A20, 0xACA05602, 0xAE603702, 0x00000002, 0x402C6A20,\n\t0xACA05902, 0x00000002, 0x402C6A20, 0xAE605B02, 0x00000003, 0x402C6A20,\n\t0xAE605B02, 0xAE603202, 0x00000003, 0x402C6A20, 0xAE605B02, 0xAE603502,\n\t0x00000002, 0x402C6A20, 0xAE606402, 0x00000002, 0x402C6A20, 0xAE606502,\n\t0x00000002, 0x402C6A20, 0xAE606702, 0x00000002, 0x402C6A20, 0xADC07002,\n\t0x00000003, 0x402C6A20, 0xADC07002, 0xAE603C02, 0x00000002, 0x402C6A20,\n\t0xADC07802, 0x00000002, 0x402C6A20, 0xADC07A02, 0x00000002, 0x402C6C20,\n\t0xAE605202, 0x00000002, 0x402C6E20, 0xAE603202, 0x00000002, 0x402C6E20,\n\t0xAE603702, 0x00000002, 0x402C6E20, 0xAE603C02,\n\t// Block 205, offset 0x3340\n\t0x00000002, 0x402C6E20, 0xAE604102, 0x00000002, 0x402C6E20, 0xAE605202,\n\t0x00000002, 0x402C6E20, 0xACA05602, 0x00000002, 0x402C6E20, 0xAE605B02,\n\t0x00000002, 0x402C7020, 0xAE603C02, 0x00000002, 0x402C7020, 0xAE604102,\n\t0x00000002, 0x402C7020, 0xAE604702, 0x00000002, 0x402C7020, 0xAE605202,\n\t0x00000002, 0x402C7020, 0xACA05602, 0x00000002, 0x402C7020, 0xADC07002,\n\t0x00000002, 0x402C7020, 0xADC07902, 0x00000002, 0x402C7020, 0xADC07B02,\n\t0x00000002, 0x402C7220, 0xAE603202, 0x00000002, 0x402C7220, 0xAE603502,\n\t0x00000002, 0x402C7220, 0xAE603702, 0x00000002, 0x402C7220, 0xAE603C02,\n\t0x00000002, 0x402C7220, 0xAE604102, 0x00000002, 0x402C7220, 0xAE604702,\n\t0x00000003, 0x402C7220, 0xAE604702, 0xAE603202, 0x00000002, 0x402C7220,\n\t0xAE604E02, 0x00000002, 0x402C7220, 0xACA05902,\n\t// Block 206, offset 0x3380\n\t0x00000002, 0x402C7220, 0xAE605B02, 0x00000002, 0x402C7220, 0xAE606402,\n\t0x00000002, 0x402C7220, 0xAE606502, 0x00000002, 0x402C7220, 0xAE606702,\n\t0x00000002, 0x402C7220, 0xADC07002, 0x00000002, 0x402C7220, 0xADC07A02,\n\t0x00000002, 0x402C7420, 0xAE603C02, 0x00000002, 0x402C7420, 0xAE604102,\n\t0x00000002, 0x402C7620, 0xAE603202, 0x00000002, 0x402C7620, 0xAE604102,\n\t0x00000002, 0x402C7620, 0xACA05602, 0x00000002, 0x402C7620, 0xADC07002,\n\t0x00000002, 0x402C7620, 0xADC07B02, 0x00000002, 0x402C7820, 0xAE603202,\n\t0x00000002, 0x402C7820, 0xAE604102, 0x00000002, 0x402C7820, 0xACA05602,\n\t0x00000002, 0x402C7820, 0xADC07002, 0x00000003, 0x402C7820, 0xADC07002,\n\t0xAE605B02, 0x00000002, 0x402C7820, 0xADC07802, 0x00000002, 0x402C7820,\n\t0xADC07B02, 0x00000002, 0x402C7A20, 0xAE603202,\n\t// Block 207, offset 0x33c0\n\t0x00000002, 0x402C7A20, 0xAE605202, 0x00000002, 0x402C7A20, 0xADC07002,\n\t0x00000002, 0x402C7C20, 0xAE603202, 0x00000002, 0x402C7C20, 0xAE603502,\n\t0x00000002, 0x402C7C20, 0xAE604102, 0x00000002, 0x402C7C20, 0xAE604E02,\n\t0x00000002, 0x402C7C20, 0xAE605202, 0x00000002, 0x402C7C20, 0xACA05602,\n\t0x00000002, 0x402C7C20, 0xADC07002, 0x00000002, 0x402C7C20, 0xADC07802,\n\t0x00000002, 0x402C7C20, 0xADC07B02, 0x00000002, 0x402C7E20, 0xAE603202,\n\t0x00000002, 0x402C7E20, 0xAE603502, 0x00000002, 0x402C7E20, 0xAE603702,\n\t0x00000002, 0x402C7E20, 0xAE603C02, 0x00000003, 0x402C7E20, 0xAE603C02,\n\t0xAE603202, 0x00000003, 0x402C7E20, 0xAE603C02, 0xAE603502, 0x00000003,\n\t0x402C7E20, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C7E20, 0xAE603C02,\n\t0xAE606402, 0x00000002, 0x402C7E20, 0xAE604102,\n\t// Block 208, offset 0x3400\n\t0x00000002, 0x402C7E20, 0xAE604702, 0x00000003, 0x402C7E20, 0xAE604702,\n\t0xAE605B02, 0x00000002, 0x402C7E20, 0xAE604D02, 0x00000002, 0x402C7E20,\n\t0xAE604E02, 0x00000003, 0x402C7E20, 0xAE604E02, 0xAE603202, 0x00000003,\n\t0x402C7E20, 0xAE604E02, 0xAE604702, 0x00000003, 0x402C7E20, 0xAE604E02,\n\t0xAE605B02, 0x00000002, 0x402C7E20, 0xAE605202, 0x00000003, 0x402C7E20,\n\t0xAE605202, 0xAE605B02, 0x00000002, 0x402C7E20, 0xACA05902, 0x00000003,\n\t0x402C7E20, 0xACA05902, 0xAE605B02, 0x00000002, 0x402C7E20, 0xAE605B02,\n\t0x00000003, 0x402C7E20, 0xAE605B02, 0xAE603202, 0x00000003, 0x402C7E20,\n\t0xAE605B02, 0xAE603502, 0x00000002, 0x402C7E20, 0xAE606402, 0x00000002,\n\t0x402C7E20, 0xAE606502, 0x00000002, 0x402C7E20, 0xAE606702, 0x00000002,\n\t0x402C7E20, 0xAD806802, 0x00000003, 0x402C7E20,\n\t// Block 209, offset 0x3440\n\t0xAD806802, 0xAE603202, 0x00000003, 0x402C7E20, 0xAD806802, 0xAE603502,\n\t0x00000003, 0x402C7E20, 0xAD806802, 0xAE604E02, 0x00000003, 0x402C7E20,\n\t0xAD806802, 0xAE606402, 0x00000003, 0x402C7E20, 0xAD806802, 0xADC07002,\n\t0x00000002, 0x402C7E20, 0xADC07002, 0x00000003, 0x402C7E20, 0xADC07002,\n\t0xAE603C02, 0x00000002, 0x402C8020, 0xAE603202, 0x00000002, 0x402C8020,\n\t0xAE605202, 0x00000002, 0x402C8420, 0xAE603202, 0x00000002, 0x402C8420,\n\t0xAE604102, 0x00000002, 0x402C8420, 0xAE605202, 0x00000002, 0x402C8420,\n\t0xACA05602, 0x00000002, 0x402C8420, 0xAE606502, 0x00000002, 0x402C8420,\n\t0xAE606702, 0x00000002, 0x402C8420, 0xADC07002, 0x00000003, 0x402C8420,\n\t0xADC07002, 0xAE605B02, 0x00000002, 0x402C8420, 0xADC07B02, 0x00000002,\n\t0x402C8620, 0xAE603202, 0x00000003, 0x402C8620,\n\t// Block 210, offset 0x3480\n\t0xAE603202, 0xAE605202, 0x00000002, 0x402C8620, 0xAE603C02, 0x00000002,\n\t0x402C8620, 0xAE604102, 0x00000003, 0x402C8620, 0xAE604102, 0xAE605202,\n\t0x00000002, 0x402C8620, 0xAE605202, 0x00000002, 0x402C8620, 0xACA05602,\n\t0x00000002, 0x402C8620, 0xADC07002, 0x00000003, 0x402C8620, 0xADC07002,\n\t0xAE605202, 0x00000002, 0x402C8620, 0xADC07702, 0x00000002, 0x402C8820,\n\t0xAE604102, 0x00000002, 0x402C8820, 0xAE604702, 0x00000002, 0x402C8820,\n\t0xAE605202, 0x00000002, 0x402C8820, 0xACA05602, 0x00000002, 0x402C8820,\n\t0xADC07002, 0x00000002, 0x402C8820, 0xADC07702, 0x00000002, 0x402C8820,\n\t0xADC07802, 0x00000002, 0x402C8820, 0xADC07B02, 0x00000002, 0x402C8A20,\n\t0xAE603202, 0x00000002, 0x402C8A20, 0xAE603502, 0x00000002, 0x402C8A20,\n\t0xAE603702, 0x00000002, 0x402C8A20, 0xAE603C02,\n\t// Block 211, offset 0x34c0\n\t0x00000002, 0x402C8A20, 0xAE604102, 0x00000002, 0x402C8A20, 0xAE604302,\n\t0x00000002, 0x402C8A20, 0xAE604702, 0x00000003, 0x402C8A20, 0xAE604702,\n\t0xAE603202, 0x00000003, 0x402C8A20, 0xAE604702, 0xAE603502, 0x00000003,\n\t0x402C8A20, 0xAE604702, 0xAE604102, 0x00000003, 0x402C8A20, 0xAE604702,\n\t0xAE605B02, 0x00000002, 0x402C8A20, 0xAE604D02, 0x00000002, 0x402C8A20,\n\t0xAE604E02, 0x00000003, 0x402C8A20, 0xAE604E02, 0xAE603202, 0x00000002,\n\t0x402C8A20, 0xACA05902, 0x00000002, 0x402C8A20, 0xAE605B02, 0x00000003,\n\t0x402C8A20, 0xAE605B02, 0xAE604702, 0x00000002, 0x402C8A20, 0xAE606402,\n\t0x00000002, 0x402C8A20, 0xAE606502, 0x00000002, 0x402C8A20, 0xAE606702,\n\t0x00000002, 0x402C8A20, 0xAD806802, 0x00000003, 0x402C8A20, 0xAD806802,\n\t0xAE603202, 0x00000003, 0x402C8A20, 0xAD806802,\n\t// Block 212, offset 0x3500\n\t0xAE603502, 0x00000003, 0x402C8A20, 0xAD806802, 0xAE604E02, 0x00000003,\n\t0x402C8A20, 0xAD806802, 0xAE606402, 0x00000003, 0x402C8A20, 0xAD806802,\n\t0xADC07002, 0x00000002, 0x402C8A20, 0xADC07002, 0x00000002, 0x402C8A20,\n\t0xADC07502, 0x00000002, 0x402C8A20, 0xADC07802, 0x00000002, 0x402C8A20,\n\t0xADC07A02, 0x00000002, 0x402C8C20, 0xAE604E02, 0x00000002, 0x402C8C20,\n\t0xADC07002, 0x00000002, 0x402C8E20, 0xAE603202, 0x00000002, 0x402C8E20,\n\t0xAE603502, 0x00000002, 0x402C8E20, 0xAE603C02, 0x00000002, 0x402C8E20,\n\t0xAE604302, 0x00000002, 0x402C8E20, 0xAE604702, 0x00000002, 0x402C8E20,\n\t0xAE605202, 0x00000002, 0x402C8E20, 0xADC07002, 0x00000002, 0x402C9020,\n\t0xAE604702, 0x00000002, 0x402C9020, 0xAE605202, 0x00000002, 0x402C9220,\n\t0xAE603202, 0x00000002, 0x402C9220, 0xAE603502,\n\t// Block 213, offset 0x3540\n\t0x00000002, 0x402C9220, 0xAE603C02, 0x00000002, 0x402C9220, 0xAE604302,\n\t0x00000002, 0x402C9220, 0xAE604702, 0x00000002, 0x402C9220, 0xAE604E02,\n\t0x00000002, 0x402C9220, 0xAE605202, 0x00000002, 0x402C9220, 0xAE605B02,\n\t0x00000002, 0x402C9220, 0xAE606402, 0x00000002, 0x402C9220, 0xADC07002,\n\t0x00000002, 0x402C9420, 0xAE603202, 0x00000002, 0x402C9420, 0xAE603C02,\n\t0x00000002, 0x402C9420, 0xAE604102, 0x00000002, 0x402C9420, 0xAE605202,\n\t0x00000002, 0x402C9420, 0xADC07002, 0x00000002, 0x402C9420, 0xADC07B02,\n\t0x00000002, 0x002D0884, 0x002D0884, 0x00000002, 0x002D0884, 0x002E2284,\n\t0x00000002, 0x002D089C, 0x002E829C, 0x00000002, 0x002D229D, 0x002C0A9D,\n\t0x00000002, 0x002D229D, 0x0031009C, 0x00000002, 0x002E2284, 0x002DCC84,\n\t0x00000002, 0x002E228A, 0x002DCC84, 0x00000002,\n\t// Block 214, offset 0x3580\n\t0x002E228A, 0x002DCC8A, 0x00000002, 0x002E229C, 0x002E829C, 0x00000002,\n\t0x002E229C, 0x002E9E9C, 0x00000002, 0x002E829C, 0x0029D09C, 0x00000002,\n\t0x002E829C, 0x0029D29C, 0x00000002, 0x002E829C, 0x002BDE9D, 0x00000002,\n\t0x002E829C, 0x002C0A9C, 0x00000002, 0x002E829D, 0x002C0A9D, 0x00000002,\n\t0x002E8294, 0x002C3A94, 0x00000002, 0x002E8294, 0x002C6294, 0x00000002,\n\t0x002E829C, 0x002D229C, 0x00000002, 0x002E829C, 0x002E229C, 0x00000002,\n\t0x002E829C, 0x002E829C, 0x00000002, 0x002E829C, 0x0030BE9D, 0x00000002,\n\t0x002E829D, 0x0030BE9D, 0x00000002, 0x002E829D, 0x0030BE9D, 0x00000002,\n\t0x002E829C, 0x0030E29D, 0x00000002, 0x002E829D, 0x0030E29D, 0x00000002,\n\t0x002E829D, 0x0032A29D, 0x00000002, 0x002E9E9C, 0x002BDE9D, 0x00000002,\n\t0x002E9E9C, 0x002D089D, 0x00000002, 0x002E9E84,\n\t// Block 215, offset 0x35c0\n\t0x002DCC84, 0x00000002, 0x002E9E8A, 0x002DCC84, 0x00000002, 0x002E9E8A,\n\t0x002DCC8A, 0x00000002, 0x002E9E9C, 0x002E829C, 0x00000002, 0x002E9E9C,\n\t0x0030BE9D, 0x00000002, 0x002E9E9C, 0x0030E29D, 0x00000002, 0x002F2C9C,\n\t0x002BDE9D, 0x00000002, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x002F2C9C,\n\t0x002C3A9C, 0x00000002, 0x002F2C9C, 0x002D089D, 0x00000002, 0x002F2C9C,\n\t0x0030BE9D, 0x00000002, 0x002F2C9C, 0x0030E29D, 0x00000002, 0x0030E29D,\n\t0x002C0A9C, 0x00000002, 0x0030E29D, 0x002C3A9D, 0x00000002, 0x0030E28C,\n\t0x00312A8C, 0x00000002, 0x0031DE84, 0x002E9E84, 0x00000002, 0x0032769C,\n\t0x002BDE9D, 0x00000002, 0x0032769C, 0x002D089D, 0x00000002, 0x0032769C,\n\t0x002D229C, 0x00000002, 0x0032769C, 0x002E229C, 0x00000002, 0x0032769C,\n\t0x002E829C, 0x00000002, 0x0032769C, 0x0030BE9D,\n\t// Block 216, offset 0x3600\n\t0x00000002, 0x0032769C, 0x0030E29D, 0x00000002, 0x40302620, 0xAE605202,\n\t0x00000002, 0x00302683, 0xAE605202, 0x00000002, 0x40302820, 0xAE603202,\n\t0x00000002, 0x00302883, 0xAE603202, 0x00000002, 0x40302820, 0xAE603C02,\n\t0x00000002, 0x00302883, 0xAE603C02, 0x00000002, 0x40302820, 0xAE605202,\n\t0x00000002, 0x00302883, 0xAE605202, 0x00000002, 0x40302820, 0xADC07002,\n\t0x00000002, 0x00302883, 0xADC07002, 0x00000002, 0x40302820, 0xADC07B02,\n\t0x00000002, 0x00302883, 0xADC07B02, 0x00000002, 0x4030BE21, 0xAE603202,\n\t0x00000002, 0x0030BEA3, 0xAE603202, 0x00000002, 0x4030BE21, 0xAE603502,\n\t0x00000002, 0x0030BEA3, 0xAE603502, 0x00000002, 0x4030BE21, 0xAE603C02,\n\t0x00000002, 0x0030BEA3, 0xAE603C02, 0x00000002, 0x4030BE21, 0xAE604302,\n\t0x00000002, 0x4030BE21, 0xAE604702, 0x00000002,\n\t// Block 217, offset 0x3640\n\t0x0030BEA3, 0xAE604702, 0x00000002, 0x4030BE21, 0xAE605202, 0x00000002,\n\t0x0030BEA3, 0xAE605202, 0x00000002, 0x4030BE21, 0xADC07002, 0x00000002,\n\t0x0030BEA3, 0xADC07002, 0x00000002, 0x4030EE20, 0xAE603202, 0x00000002,\n\t0x0030EE83, 0xAE603202, 0x00000002, 0x4030EE20, 0xAE603C02, 0x00000002,\n\t0x0030EE83, 0xAE603C02, 0x00000002, 0x4030EE20, 0xAE604702, 0x00000002,\n\t0x0030EE83, 0xAE604702, 0x00000002, 0x4030EE20, 0xAE605B02, 0x00000002,\n\t0x0030EE83, 0xAE605B02, 0x00000002, 0x4030EE20, 0xAD806802, 0x00000002,\n\t0x0030EE83, 0xAD806802, 0x00000002, 0x4030F020, 0xAE605B02, 0x00000002,\n\t0x0030F083, 0xAE605B02, 0x00000002, 0x4030F220, 0xAE605B02, 0x00000002,\n\t0x0030F283, 0xAE605B02, 0x00000002, 0x4030F420, 0xAE603202, 0x00000002,\n\t0x0030F483, 0xAE603202, 0x00000002, 0x4030F420,\n\t// Block 218, offset 0x3680\n\t0xAE603502, 0x00000002, 0x0030F483, 0xAE603502, 0x00000002, 0x4030F420,\n\t0xAE604102, 0x00000002, 0x0030F483, 0xAE604102, 0x00000002, 0x4030F420,\n\t0xAE605B02, 0x00000002, 0x0030F483, 0xAE605B02, 0x00000002, 0xA000B218,\n\t0xA000BA18, 0x00000002, 0xA000B618, 0xA000BA18, 0x00000002, 0x00393899,\n\t0xA000A219, 0x00000002, 0x0039389A, 0xA000A21A, 0x00000002, 0x00393C97,\n\t0x003A6897, 0x00000002, 0x00393C98, 0x003A6898, 0x00000002, 0x00393C99,\n\t0x003A9099, 0x00000002, 0x00393C9A, 0x003A909A, 0x00000002, 0x00395697,\n\t0x003A6897, 0x00000002, 0x00395698, 0x003A6898, 0x00000002, 0x00395699,\n\t0x003A9099, 0x00000002, 0x0039569A, 0x003A909A, 0x00000002, 0x00395898,\n\t0x003A6898, 0x00000002, 0x00395899, 0x003A9099, 0x00000002, 0x0039589A,\n\t0x003A909A, 0x00000002, 0x00396499, 0x003A9099,\n\t// Block 219, offset 0x36c0\n\t0x00000002, 0x0039649A, 0x003A909A, 0x00000002, 0x00397299, 0x003A9099,\n\t0x00000002, 0x0039729A, 0x003A909A, 0x00000002, 0x00397499, 0x003A9099,\n\t0x00000002, 0x0039749A, 0x003A909A, 0x00000002, 0x0039C697, 0x003A6897,\n\t0x00000002, 0x0039C698, 0x003A6898, 0x00000002, 0x0039C699, 0x003A9099,\n\t0x00000002, 0x0039C69A, 0x003A909A, 0x00000002, 0x0039C897, 0x003A6897,\n\t0x00000002, 0x0039C898, 0x003A6898, 0x00000002, 0x0039C899, 0x003A9099,\n\t0x00000002, 0x0039C89A, 0x003A909A, 0x00000002, 0x0039DC99, 0x003A9099,\n\t0x00000002, 0x0039DC9A, 0x003A909A, 0x00000002, 0x0039DE99, 0x003A9099,\n\t0x00000002, 0x0039DE9A, 0x003A909A, 0x00000002, 0x0039E699, 0x003A9099,\n\t0x00000002, 0x0039E69A, 0x003A909A, 0x00000002, 0x0039EE99, 0x003A9099,\n\t0x00000002, 0x0039EE9A, 0x003A909A, 0x00000002,\n\t// Block 220, offset 0x3700\n\t0x0039F099, 0x003A9099, 0x00000002, 0x0039F09A, 0x003A909A, 0x00000002,\n\t0x0039FC99, 0x003A9099, 0x00000002, 0x0039FC9A, 0x003A909A, 0x00000002,\n\t0x003A1299, 0x003A9099, 0x00000002, 0x003A129A, 0x003A909A, 0x00000002,\n\t0x003A1A99, 0x00393899, 0x00000002, 0x003A1A9A, 0x0039389A, 0x00000002,\n\t0x003A1A97, 0x00396497, 0x00000002, 0x003A1A9A, 0x0039649A, 0x00000002,\n\t0x003A1A97, 0x00397297, 0x00000002, 0x003A1A9A, 0x0039729A, 0x00000002,\n\t0x003A1A97, 0x00397497, 0x00000002, 0x003A1A9A, 0x0039749A, 0x00000002,\n\t0x003A1A97, 0x003A4097, 0x00000002, 0x003A1A98, 0x003A4098, 0x00000002,\n\t0x003A1A99, 0x003A4099, 0x00000002, 0x003A1A9A, 0x003A409A, 0x00000002,\n\t0x003A1A97, 0x003A4E97, 0x00000002, 0x003A1A98, 0x003A4E98, 0x00000002,\n\t0x003A1A99, 0x003A4E99, 0x00000002, 0x003A1A9A,\n\t// Block 221, offset 0x3740\n\t0x003A4E9A, 0x00000002, 0x003A1A99, 0x003A9099, 0x00000002, 0x003A1A9A,\n\t0x003A909A, 0x00000002, 0x003A4097, 0x003A6897, 0x00000002, 0x003A4099,\n\t0x003A9099, 0x00000002, 0x003A409A, 0x003A909A, 0x00000002, 0x003A4E9A,\n\t0x003A909A, 0x00000002, 0x003A5697, 0x003A6897, 0x00000002, 0x003A5698,\n\t0x003A6898, 0x00000002, 0x003A5699, 0x003A9099, 0x00000002, 0x003A569A,\n\t0x003A909A, 0x00000002, 0x003A6897, 0xA000D117, 0x00000002, 0x003A6897,\n\t0x00396497, 0x00000002, 0x003A689A, 0x0039649A, 0x00000002, 0x003A6897,\n\t0x003A4E97, 0x00000002, 0x003A689A, 0x003A4E9A, 0x00000002, 0x003A689A,\n\t0x003A909A, 0x00000002, 0x003A7299, 0xA000BE19, 0x00000002, 0x003A729A,\n\t0xA000BE1A, 0x00000002, 0x403A8822, 0xAE60BE02, 0x00000002, 0x003A8E99,\n\t0xA000D119, 0x00000002, 0x003A8E9A, 0xA000D11A,\n\t// Block 222, offset 0x3780\n\t0x00000002, 0x003A9084, 0x00391C84, 0x00000002, 0x003A9097, 0x00396497,\n\t0x00000002, 0x003A909A, 0x0039649A, 0x00000002, 0x003A9097, 0x00397297,\n\t0x00000002, 0x003A909A, 0x0039729A, 0x00000002, 0x003A9097, 0x00397497,\n\t0x00000002, 0x003A909A, 0x0039749A, 0x00000002, 0x003A9099, 0x0039A499,\n\t0x00000002, 0x003A9099, 0x0039A699, 0x00000002, 0x003A9097, 0x003A4E97,\n\t0x00000002, 0x003A9098, 0x003A4E98, 0x00000002, 0x003A9099, 0x003A4E99,\n\t0x00000002, 0x003A909A, 0x003A4E9A, 0x00000002, 0x003A9099, 0x003A5699,\n\t0x00000002, 0x003A9097, 0x003A6897, 0x00000002, 0x003A9098, 0x003A6898,\n\t0x00000002, 0x003A9099, 0x003A9099, 0x00000002, 0x003A909A, 0x003A909A,\n\t0x00000002, 0x403A9222, 0xAE60BE02, 0x00000002, 0x003AAA99, 0xA000BE19,\n\t0x00000002, 0x003AAA9A, 0xA000BE1A, 0x00000002,\n\t// Block 223, offset 0x37c0\n\t0x402C6221, 0x40021220, 0x00000002, 0x002C62A3, 0x40021220, 0x00000002,\n\t0x402D2221, 0x40021220, 0x00000002, 0x002D22A3, 0x40021220, 0x00000002,\n\t0x402E9E21, 0x40021220, 0x00000002, 0x002E9EA3, 0x40021220, 0x00000002,\n\t0x40302C21, 0x40021220, 0x00000002, 0x00302CA3, 0x40021220, 0x00000002,\n\t0x40312A21, 0x40021220, 0x00000002, 0x00312AA3, 0x40021220, 0x00000003,\n\t0x40312A21, 0x40021220, 0xAE604102, 0x00000003, 0x00312AA3, 0x40021220,\n\t0xAE604102, 0x00000002, 0x40320E20, 0xAE605B02, 0x00000002, 0x00320E83,\n\t0xAE605B02, 0x00000002, 0x40320E21, 0xAE603202, 0x00000002, 0x00320EA3,\n\t0xAE603202, 0x00000002, 0x40321020, 0xAE604E02, 0x00000002, 0x00321083,\n\t0xAE604E02, 0x00000002, 0x40321020, 0xAE605B02, 0x00000002, 0x00321083,\n\t0xAE605B02, 0x00000002, 0x40321021, 0xAE603202,\n\t// Block 224, offset 0x3800\n\t0x00000002, 0x003210A3, 0xAE603202, 0x00000002, 0x40302C21, 0x402D6820,\n\t0x00000002, 0x00302CA3, 0x402D6820, 0x00000002, 0x40321023, 0xAE603202,\n\t0x00000002, 0x003210E3, 0xAE603202, 0x00000002, 0x40321023, 0xAE603C02,\n\t0x00000002, 0x003210E3, 0xAE603C02, 0x00000002, 0x40321023, 0xAE604702,\n\t0x00000002, 0x003210E3, 0xAE604702, 0x00000002, 0x40321023, 0xAE605B02,\n\t0x00000002, 0x003210E3, 0xAE605B02, 0x00000002, 0x40321023, 0xAD806802,\n\t0x00000002, 0x003210E3, 0xAD806802, 0x00000002, 0x002BDE83, 0xAE603202,\n\t0x00000002, 0x002BDE83, 0xAE603502, 0x00000002, 0x002BDE83, 0xAE603702,\n\t0x00000003, 0x002BDE83, 0xAE603702, 0xAE603202, 0x00000003, 0x002BDE83,\n\t0xAE603702, 0xAE603502, 0x00000003, 0x002BDE83, 0xAE603702, 0xAE604E02,\n\t0x00000003, 0x002BDE83, 0xAE603702, 0xAE606402,\n\t// Block 225, offset 0x3840\n\t0x00000002, 0x002BDE83, 0xAE603C02, 0x00000003, 0x002BDE83, 0xAE603C02,\n\t0xAE603202, 0x00000003, 0x002BDE83, 0xAE603C02, 0xAE603502, 0x00000003,\n\t0x002BDE83, 0xAE603C02, 0xAE604E02, 0x00000003, 0x002BDE83, 0xAE603C02,\n\t0xAE606402, 0x00000002, 0x002BDE83, 0xAE604102, 0x00000002, 0x002BDE83,\n\t0xAE604302, 0x00000003, 0x002BDE83, 0xAE604302, 0xAE603202, 0x00000002,\n\t0x002BDE83, 0xAE604702, 0x00000003, 0x002BDE83, 0xAE604702, 0xAE605B02,\n\t0x00000002, 0x002BDE83, 0xAE604E02, 0x00000002, 0x002BDE83, 0xAE605202,\n\t0x00000003, 0x002BDE83, 0xAE605202, 0xAE605B02, 0x00000002, 0x002BDE83,\n\t0xACA05902, 0x00000002, 0x002BDE83, 0xAE605B02, 0x00000002, 0x002BDE83,\n\t0xAE606402, 0x00000002, 0x002BDE83, 0xAE606502, 0x00000002, 0x002BDE83,\n\t0xAE606702, 0x00000002, 0x002BDE83, 0xADC07002,\n\t// Block 226, offset 0x3880\n\t0x00000003, 0x002BDE83, 0xADC07002, 0xAE603702, 0x00000003, 0x002BDE83,\n\t0xADC07002, 0xAE603C02, 0x00000002, 0x002BDE83, 0xADC07602, 0x00000002,\n\t0x402BE020, 0xAE603202, 0x00000002, 0x002BE083, 0xAE603202, 0x00000002,\n\t0x402BE020, 0xAE603502, 0x00000002, 0x002BE083, 0xAE603502, 0x00000002,\n\t0x402BE020, 0xAE603702, 0x00000002, 0x002BE083, 0xAE603702, 0x00000002,\n\t0x402BE020, 0xAE603C02, 0x00000002, 0x002BE083, 0xAE603C02, 0x00000003,\n\t0x402BE020, 0xAE603C02, 0xAE603202, 0x00000003, 0x002BE083, 0xAE603C02,\n\t0xAE603202, 0x00000003, 0x402BE020, 0xAE603C02, 0xAE603502, 0x00000003,\n\t0x002BE083, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BE020, 0xAE603C02,\n\t0xAE604E02, 0x00000003, 0x002BE083, 0xAE603C02, 0xAE604E02, 0x00000003,\n\t0x402BE020, 0xAE603C02, 0xAE606402, 0x00000003,\n\t// Block 227, offset 0x38c0\n\t0x002BE083, 0xAE603C02, 0xAE606402, 0x00000002, 0x402BE020, 0xAE604102,\n\t0x00000002, 0x002BE083, 0xAE604102, 0x00000002, 0x402BE020, 0xAE604702,\n\t0x00000002, 0x002BE083, 0xAE604702, 0x00000002, 0x402BE020, 0xAE604E02,\n\t0x00000002, 0x002BE083, 0xAE604E02, 0x00000002, 0x402BE020, 0xAE605202,\n\t0x00000002, 0x002BE083, 0xAE605202, 0x00000002, 0x402BE020, 0xACA05602,\n\t0x00000002, 0x002BE083, 0xACA05602, 0x00000003, 0x402BE020, 0xACA05602,\n\t0xAE603702, 0x00000003, 0x002BE083, 0xACA05602, 0xAE603702, 0x00000002,\n\t0x402BE020, 0xACA05902, 0x00000002, 0x002BE083, 0xACA05902, 0x00000002,\n\t0x402BE020, 0xAE605B02, 0x00000002, 0x002BE083, 0xAE605B02, 0x00000003,\n\t0x402BE020, 0xAE605B02, 0xAE603202, 0x00000003, 0x002BE083, 0xAE605B02,\n\t0xAE603202, 0x00000003, 0x402BE020, 0xAE605B02,\n\t// Block 228, offset 0x3900\n\t0xAE603502, 0x00000003, 0x002BE083, 0xAE605B02, 0xAE603502, 0x00000002,\n\t0x402BE020, 0xAE606402, 0x00000002, 0x002BE083, 0xAE606402, 0x00000002,\n\t0x402BE020, 0xAE606502, 0x00000002, 0x002BE083, 0xAE606502, 0x00000002,\n\t0x402BE020, 0xAE606702, 0x00000002, 0x002BE083, 0xAE606702, 0x00000002,\n\t0x402BE020, 0xADC07002, 0x00000002, 0x002BE083, 0xADC07002, 0x00000003,\n\t0x402BE020, 0xADC07002, 0xAE603C02, 0x00000003, 0x002BE083, 0xADC07002,\n\t0xAE603C02, 0x00000002, 0x402BE020, 0xADC07802, 0x00000002, 0x002BE083,\n\t0xADC07802, 0x00000002, 0x402BE020, 0xADC07A02, 0x00000002, 0x002BE083,\n\t0xADC07A02, 0x00000002, 0x402BE220, 0xAE603202, 0x00000002, 0x002BE283,\n\t0xAE603202, 0x00000002, 0x402BE220, 0xAE603502, 0x00000002, 0x002BE283,\n\t0xAE603502, 0x00000002, 0x402BE220, 0xAE603702,\n\t// Block 229, offset 0x3940\n\t0x00000002, 0x002BE283, 0xAE603702, 0x00000002, 0x402BE220, 0xAE603C02,\n\t0x00000002, 0x002BE283, 0xAE603C02, 0x00000002, 0x402BE220, 0xAE604102,\n\t0x00000002, 0x002BE283, 0xAE604102, 0x00000002, 0x402BE220, 0xAE604702,\n\t0x00000002, 0x002BE283, 0xAE604702, 0x00000003, 0x402BE220, 0xAE604702,\n\t0xAE603202, 0x00000003, 0x002BE283, 0xAE604702, 0xAE603202, 0x00000002,\n\t0x402BE220, 0xAE604E02, 0x00000002, 0x002BE283, 0xAE604E02, 0x00000002,\n\t0x002BE283, 0xAE605202, 0x00000002, 0x402BE220, 0xACA05902, 0x00000002,\n\t0x002BE283, 0xACA05902, 0x00000002, 0x402BE220, 0xAE605B02, 0x00000002,\n\t0x002BE283, 0xAE605B02, 0x00000002, 0x402BE220, 0xAE606402, 0x00000002,\n\t0x002BE283, 0xAE606402, 0x00000002, 0x402BE220, 0xAE606502, 0x00000002,\n\t0x002BE283, 0xAE606502, 0x00000002, 0x402BE220,\n\t// Block 230, offset 0x3980\n\t0xAE606702, 0x00000002, 0x002BE283, 0xAE606702, 0x00000002, 0x402BE220,\n\t0xADC07002, 0x00000002, 0x002BE283, 0xADC07002, 0x00000002, 0x402BE220,\n\t0xADC07A02, 0x00000002, 0x002BE283, 0xADC07A02, 0x00000002, 0x402BE420,\n\t0xAE603202, 0x00000002, 0x002BE483, 0xAE603202, 0x00000002, 0x402BE420,\n\t0xAE603502, 0x00000002, 0x002BE483, 0xAE603502, 0x00000002, 0x402BE420,\n\t0xAE603702, 0x00000002, 0x002BE483, 0xAE603702, 0x00000002, 0x402BE420,\n\t0xAE603C02, 0x00000002, 0x002BE483, 0xAE603C02, 0x00000003, 0x402BE420,\n\t0xAE603C02, 0xAE603202, 0x00000003, 0x002BE483, 0xAE603C02, 0xAE603202,\n\t0x00000003, 0x402BE420, 0xAE603C02, 0xAE603502, 0x00000003, 0x002BE483,\n\t0xAE603C02, 0xAE603502, 0x00000003, 0x402BE420, 0xAE603C02, 0xAE604E02,\n\t0x00000003, 0x002BE483, 0xAE603C02, 0xAE604E02,\n\t// Block 231, offset 0x39c0\n\t0x00000003, 0x402BE420, 0xAE603C02, 0xAE606402, 0x00000003, 0x002BE483,\n\t0xAE603C02, 0xAE606402, 0x00000002, 0x402BE420, 0xAE604102, 0x00000002,\n\t0x002BE483, 0xAE604102, 0x00000002, 0x402BE420, 0xAE604702, 0x00000002,\n\t0x002BE483, 0xAE604702, 0x00000003, 0x402BE420, 0xAE604702, 0xAE605B02,\n\t0x00000003, 0x002BE483, 0xAE604702, 0xAE605B02, 0x00000002, 0x402BE420,\n\t0xAE604D02, 0x00000002, 0x002BE483, 0xAE604D02, 0x00000002, 0x402BE420,\n\t0xAE604E02, 0x00000002, 0x002BE483, 0xAE604E02, 0x00000003, 0x402BE420,\n\t0xAE604E02, 0xAE603202, 0x00000003, 0x002BE483, 0xAE604E02, 0xAE603202,\n\t0x00000003, 0x402BE420, 0xAE604E02, 0xAE604702, 0x00000003, 0x002BE483,\n\t0xAE604E02, 0xAE604702, 0x00000003, 0x402BE420, 0xAE604E02, 0xAE605B02,\n\t0x00000003, 0x002BE483, 0xAE604E02, 0xAE605B02,\n\t// Block 232, offset 0x3a00\n\t0x00000002, 0x402BE420, 0xAE605202, 0x00000002, 0x002BE483, 0xAE605202,\n\t0x00000003, 0x402BE420, 0xAE605202, 0xAE605B02, 0x00000003, 0x002BE483,\n\t0xAE605202, 0xAE605B02, 0x00000002, 0x402BE420, 0xACA05902, 0x00000002,\n\t0x002BE483, 0xACA05902, 0x00000003, 0x402BE420, 0xACA05902, 0xAE605B02,\n\t0x00000003, 0x002BE483, 0xACA05902, 0xAE605B02, 0x00000002, 0x402BE420,\n\t0xAE605B02, 0x00000002, 0x002BE483, 0xAE605B02, 0x00000003, 0x402BE420,\n\t0xAE605B02, 0xAE603202, 0x00000003, 0x002BE483, 0xAE605B02, 0xAE603202,\n\t0x00000003, 0x402BE420, 0xAE605B02, 0xAE603502, 0x00000003, 0x002BE483,\n\t0xAE605B02, 0xAE603502, 0x00000002, 0x402BE420, 0xAE606402, 0x00000002,\n\t0x002BE483, 0xAE606402, 0x00000002, 0x402BE420, 0xAE606502, 0x00000002,\n\t0x002BE483, 0xAE606502, 0x00000002, 0x402BE420,\n\t// Block 233, offset 0x3a40\n\t0xAE606702, 0x00000002, 0x002BE483, 0xAE606702, 0x00000002, 0x402BE420,\n\t0xAD806802, 0x00000002, 0x002BE483, 0xAD806802, 0x00000003, 0x402BE420,\n\t0xAD806802, 0xAE603202, 0x00000003, 0x002BE483, 0xAD806802, 0xAE603202,\n\t0x00000003, 0x402BE420, 0xAD806802, 0xAE603502, 0x00000003, 0x002BE483,\n\t0xAD806802, 0xAE603502, 0x00000003, 0x402BE420, 0xAD806802, 0xAE604E02,\n\t0x00000003, 0x002BE483, 0xAD806802, 0xAE604E02, 0x00000003, 0x402BE420,\n\t0xAD806802, 0xAE606402, 0x00000003, 0x002BE483, 0xAD806802, 0xAE606402,\n\t0x00000003, 0x402BE420, 0xAD806802, 0xADC07002, 0x00000003, 0x002BE483,\n\t0xAD806802, 0xADC07002, 0x00000002, 0x402BE420, 0xADC07002, 0x00000002,\n\t0x002BE483, 0xADC07002, 0x00000003, 0x402BE420, 0xADC07002, 0xAE603C02,\n\t0x00000003, 0x002BE483, 0xADC07002, 0xAE603C02,\n\t// Block 234, offset 0x3a80\n\t0x00000002, 0x402BE620, 0xAE603202, 0x00000002, 0x002BE683, 0xAE603202,\n\t0x00000002, 0x402BE620, 0xAE603502, 0x00000002, 0x002BE683, 0xAE603502,\n\t0x00000002, 0x402BE620, 0xAE603702, 0x00000002, 0x002BE683, 0xAE603702,\n\t0x00000002, 0x402BE620, 0xAE603C02, 0x00000002, 0x002BE683, 0xAE603C02,\n\t0x00000002, 0x402BE620, 0xAE604102, 0x00000002, 0x002BE683, 0xAE604102,\n\t0x00000002, 0x402BE620, 0xAE604302, 0x00000002, 0x002BE683, 0xAE604302,\n\t0x00000002, 0x402BE620, 0xAE604702, 0x00000002, 0x002BE683, 0xAE604702,\n\t0x00000003, 0x402BE620, 0xAE604702, 0xAE603202, 0x00000003, 0x002BE683,\n\t0xAE604702, 0xAE603202, 0x00000003, 0x402BE620, 0xAE604702, 0xAE603502,\n\t0x00000003, 0x002BE683, 0xAE604702, 0xAE603502, 0x00000003, 0x402BE620,\n\t0xAE604702, 0xAE604102, 0x00000003, 0x002BE683,\n\t// Block 235, offset 0x3ac0\n\t0xAE604702, 0xAE604102, 0x00000003, 0x402BE620, 0xAE604702, 0xAE605B02,\n\t0x00000003, 0x002BE683, 0xAE604702, 0xAE605B02, 0x00000002, 0x402BE620,\n\t0xAE604D02, 0x00000002, 0x002BE683, 0xAE604D02, 0x00000002, 0x402BE620,\n\t0xAE604E02, 0x00000002, 0x002BE683, 0xAE604E02, 0x00000003, 0x402BE620,\n\t0xAE604E02, 0xAE603202, 0x00000003, 0x002BE683, 0xAE604E02, 0xAE603202,\n\t0x00000002, 0x402BE620, 0xACA05902, 0x00000002, 0x002BE683, 0xACA05902,\n\t0x00000002, 0x402BE620, 0xAE605B02, 0x00000002, 0x002BE683, 0xAE605B02,\n\t0x00000003, 0x402BE620, 0xAE605B02, 0xAE604702, 0x00000003, 0x002BE683,\n\t0xAE605B02, 0xAE604702, 0x00000002, 0x402BE620, 0xAE606402, 0x00000002,\n\t0x002BE683, 0xAE606402, 0x00000002, 0x402BE620, 0xAE606502, 0x00000002,\n\t0x002BE683, 0xAE606502, 0x00000002, 0x402BE620,\n\t// Block 236, offset 0x3b00\n\t0xAE606702, 0x00000002, 0x002BE683, 0xAE606702, 0x00000002, 0x402BE620,\n\t0xAD806802, 0x00000002, 0x002BE683, 0xAD806802, 0x00000003, 0x402BE620,\n\t0xAD806802, 0xAE603202, 0x00000003, 0x002BE683, 0xAD806802, 0xAE603202,\n\t0x00000003, 0x402BE620, 0xAD806802, 0xAE603502, 0x00000003, 0x002BE683,\n\t0xAD806802, 0xAE603502, 0x00000003, 0x402BE620, 0xAD806802, 0xAE604E02,\n\t0x00000003, 0x002BE683, 0xAD806802, 0xAE604E02, 0x00000003, 0x402BE620,\n\t0xAD806802, 0xAE606402, 0x00000003, 0x002BE683, 0xAD806802, 0xAE606402,\n\t0x00000003, 0x402BE620, 0xAD806802, 0xADC07002, 0x00000003, 0x002BE683,\n\t0xAD806802, 0xADC07002, 0x00000002, 0x402BE620, 0xADC07002, 0x00000002,\n\t0x002BE683, 0xADC07002, 0x00000002, 0x402BE620, 0xADC07502, 0x00000002,\n\t0x002BE683, 0xADC07502, 0x00000002, 0x402BE620,\n\t// Block 237, offset 0x3b40\n\t0xADC07802, 0x00000002, 0x002BE683, 0xADC07802, 0x00000002, 0x402BE620,\n\t0xADC07A02, 0x00000002, 0x002BE683, 0xADC07A02, 0x00000002, 0x402BE820,\n\t0xAE603C02, 0x00000002, 0x002BE883, 0xAE603C02, 0x00000002, 0x402BE820,\n\t0xAE604102, 0x00000002, 0x002BE883, 0xAE604102, 0x00000002, 0x402BE820,\n\t0xAE604702, 0x00000002, 0x002BE883, 0xAE604702, 0x00000002, 0x402BE820,\n\t0xAE605202, 0x00000002, 0x002BE883, 0xAE605202, 0x00000002, 0x402BE820,\n\t0xACA05602, 0x00000002, 0x002BE883, 0xACA05602, 0x00000002, 0x402BE820,\n\t0xADC07002, 0x00000002, 0x002BE883, 0xADC07002, 0x00000002, 0x402BE820,\n\t0xADC07902, 0x00000002, 0x002BE883, 0xADC07902, 0x00000002, 0x402BE820,\n\t0xADC07B02, 0x00000002, 0x402BEA20, 0xAE603202, 0x00000002, 0x002BEA83,\n\t0xAE603202, 0x00000002, 0x402BEA20, 0xAE604102,\n\t// Block 238, offset 0x3b80\n\t0x00000002, 0x002BEA83, 0xAE604102, 0x00000002, 0x402BEA20, 0xACA05602,\n\t0x00000002, 0x002BEA83, 0xACA05602, 0x00000002, 0x402BEA20, 0xADC07002,\n\t0x00000002, 0x002BEA83, 0xADC07002, 0x00000002, 0x402BEA20, 0xADC07B02,\n\t0x00000002, 0x002BEA83, 0xADC07B02, 0x00000002, 0x402BEC20, 0xAE603202,\n\t0x00000002, 0x002BEC83, 0xAE603202, 0x00000002, 0x402BEC20, 0xAE604102,\n\t0x00000002, 0x002BEC83, 0xAE604102, 0x00000002, 0x402BEC20, 0xACA05602,\n\t0x00000002, 0x002BEC83, 0xACA05602, 0x00000002, 0x402BEC20, 0xADC07002,\n\t0x00000002, 0x002BEC83, 0xADC07002, 0x00000003, 0x402BEC20, 0xADC07002,\n\t0xAE605B02, 0x00000003, 0x002BEC83, 0xADC07002, 0xAE605B02, 0x00000002,\n\t0x402BEC20, 0xADC07802, 0x00000002, 0x002BEC83, 0xADC07802, 0x00000002,\n\t0x402BEC20, 0xADC07B02, 0x00000002, 0x002BEC83,\n\t// Block 239, offset 0x3bc0\n\t0xADC07B02, 0x00000002, 0x402BEE20, 0xAE603202, 0x00000002, 0x002BEE83,\n\t0xAE603202, 0x00000002, 0x402BEE20, 0xAE605202, 0x00000002, 0x002BEE83,\n\t0xAE605202, 0x00000002, 0x402BEE20, 0xADC07002, 0x00000002, 0x002BEE83,\n\t0xADC07002, 0x00000002, 0x402BF020, 0xAE603202, 0x00000002, 0x002BF083,\n\t0xAE603202, 0x00000002, 0x402BF020, 0xAE603502, 0x00000002, 0x002BF083,\n\t0xAE603502, 0x00000002, 0x402BF020, 0xAE604102, 0x00000002, 0x002BF083,\n\t0xAE604102, 0x00000002, 0x402BF020, 0xAE604E02, 0x00000002, 0x002BF083,\n\t0xAE604E02, 0x00000002, 0x402BF020, 0xAE605202, 0x00000002, 0x002BF083,\n\t0xAE605202, 0x00000002, 0x402BF020, 0xACA05602, 0x00000002, 0x002BF083,\n\t0xACA05602, 0x00000002, 0x402BF020, 0xADC07002, 0x00000002, 0x002BF083,\n\t0xADC07002, 0x00000002, 0x402BF020, 0xADC07802,\n\t// Block 240, offset 0x3c00\n\t0x00000002, 0x002BF083, 0xADC07802, 0x00000002, 0x402BF020, 0xADC07B02,\n\t0x00000002, 0x002BF083, 0xADC07B02, 0x00000002, 0x402BF220, 0xAE603202,\n\t0x00000002, 0x002BF283, 0xAE603202, 0x00000002, 0x402BF220, 0xAE605202,\n\t0x00000002, 0x002BF283, 0xAE605202, 0x00000002, 0x402BF420, 0xAE603202,\n\t0x00000002, 0x002BF483, 0xAE603202, 0x00000002, 0x402BF420, 0xAE603502,\n\t0x00000002, 0x002BF483, 0xAE603502, 0x00000002, 0x402BF420, 0xAE603C02,\n\t0x00000002, 0x002BF483, 0xAE603C02, 0x00000002, 0x402BF420, 0xAE604302,\n\t0x00000002, 0x402BF420, 0xAE604702, 0x00000002, 0x002BF483, 0xAE604702,\n\t0x00000002, 0x402BF420, 0xAE605202, 0x00000002, 0x002BF483, 0xAE605202,\n\t0x00000002, 0x402BF420, 0xADC07002, 0x00000002, 0x002BF483, 0xADC07002,\n\t0x00000002, 0x402C3E20, 0xACA05602, 0x00000002,\n\t// Block 241, offset 0x3c40\n\t0x002C3E83, 0xACA05602, 0x00000002, 0x002C3C83, 0x402C3C20, 0x00000002,\n\t0x002C3C85, 0x402C3C20, 0x00000002, 0x002C3C87, 0x002C3C86, 0x00000002,\n\t0x002C6483, 0x402C6420, 0x00000002, 0x002C6485, 0x402C6420, 0x00000002,\n\t0x002C6487, 0x002C6486, 0x00000002, 0x002C6683, 0x402C6620, 0x00000002,\n\t0x002C6685, 0x402C6620, 0x00000002, 0x002C6687, 0x002C6686, 0x00000002,\n\t0x002D2483, 0x402D2420, 0x00000002, 0x002D2485, 0x402D2420, 0x00000002,\n\t0x002D2487, 0x002D2486, 0x00000002, 0x002E2483, 0x402E2420, 0x00000002,\n\t0x002E2485, 0x402E2420, 0x00000002, 0x002E2487, 0x002E2486, 0x00000002,\n\t0x002EA083, 0x402EA020, 0x00000002, 0x002EA085, 0x402EA020, 0x00000002,\n\t0x002EA087, 0x002EA086, 0x00000002, 0x002FE883, 0x402FE820, 0x00000002,\n\t0x002FE885, 0x402FE820, 0x00000002, 0x002FE887,\n\t// Block 242, offset 0x3c80\n\t0x002FE886, 0x00000002, 0x00302E83, 0x40302E20, 0x00000002, 0x00302E85,\n\t0x40302E20, 0x00000002, 0x00302E87, 0x00302E86, 0x00000002, 0x00312C83,\n\t0x40312C20, 0x00000002, 0x00312C85, 0x40312C20, 0x00000002, 0x00312C87,\n\t0x00312C86, 0x00000002, 0x402EE420, 0xAE603C02, 0x00000002, 0x002EE483,\n\t0xAE603C02, 0x00000002, 0x402EE420, 0xAD806802, 0x00000002, 0x002EE483,\n\t0xAD806802, 0x00000002, 0x40306E20, 0xAD806802, 0x00000002, 0x00306E83,\n\t0xAD806802, 0x00000002, 0x402C0820, 0xAE603702, 0x00000002, 0x002C0883,\n\t0xAE603702, 0x00000002, 0x402C0820, 0xAE603C02, 0x00000002, 0x002C0883,\n\t0xAE603C02, 0x00000002, 0x402D0620, 0xAE603C02, 0x00000002, 0x002D0683,\n\t0xAE603C02, 0x00000002, 0x402D0620, 0xAE605B02, 0x00000002, 0x002D0683,\n\t0xAE605B02, 0x00000002, 0x402DCA20, 0xAE604702,\n\t// Block 243, offset 0x3cc0\n\t0x00000002, 0x002DCA83, 0xAE604702, 0x00000002, 0x402F2A20, 0xAE603C02,\n\t0x00000002, 0x002F2A83, 0xAE603C02, 0x00000002, 0x402F2A20, 0xAE604E02,\n\t0x00000002, 0x002F2A83, 0xAE604E02, 0x00000002, 0x402F2A20, 0xAE605B02,\n\t0x00000002, 0x002F2A83, 0xAE605B02, 0x00000002, 0x402F2A20, 0xAD806802,\n\t0x00000002, 0x002F2A83, 0xAD806802, 0x00000002, 0x4030BC20, 0xAE604702,\n\t0x00000002, 0x0030BC83, 0xAE604702, 0x00000002, 0x4030BC20, 0xAE604E02,\n\t0x00000002, 0x0030BC83, 0xAE604E02, 0x00000002, 0x4030BC20, 0xAD806802,\n\t0x00000002, 0x0030BC83, 0xAD806802, 0x00000002, 0x40320E20, 0xAE604E02,\n\t0x00000002, 0x00320E83, 0xAE604E02, 0x00000003, 0x0004B084, 0x029C1284,\n\t0x0004B29F, 0x00000003, 0x0004B084, 0x029D1884, 0x0004B29F, 0x00000003,\n\t0x0004B084, 0x02A5BA84, 0x0004B29F, 0x00000003,\n\t// Block 244, offset 0x3d00\n\t0x0004B084, 0x02B71284, 0x0004B29F, 0x00000003, 0x0004B084, 0x02C4A684,\n\t0x0004B29F, 0x00000003, 0x0004B084, 0x02CAAE84, 0x0004B29F, 0x00000003,\n\t0x0004B084, 0x02CE5884, 0x0004B29F, 0x00000003, 0x0004B084, 0x02E17284,\n\t0x0004B29F, 0x00000003, 0x0004B084, 0x02EDAE84, 0x0004B29F, 0x00000002,\n\t0x0065768E, 0x0065768F, 0x00000002, 0x0065768E, 0x00657691, 0x00000002,\n\t0x00657690, 0x0065768F, 0x00000002, 0x00657690, 0x00657691, 0x00000002,\n\t0x0065768E, 0x0065828F, 0x00000002, 0x0065768E, 0x00658291, 0x00000003,\n\t0x0065768E, 0x00658291, 0xA0812802, 0x00000002, 0x0065768E, 0x00658C91,\n\t0x00000003, 0x0065768E, 0x00658C91, 0xA0812802, 0x00000002, 0x0065768E,\n\t0x00659691, 0x00000003, 0x0065768E, 0x00659691, 0xA0812802, 0x00000002,\n\t0x0065768E, 0x0065A091, 0x00000002, 0x0065768E,\n\t// Block 245, offset 0x3d40\n\t0x0065AA8F, 0x00000002, 0x0065768E, 0x0065AA91, 0x00000003, 0x0065768E,\n\t0x0065AA91, 0xA0812802, 0x00000003, 0x0065768E, 0x0065AA91, 0xA0812902,\n\t0x00000002, 0x0065768E, 0x0065B491, 0x00000002, 0x0065768E, 0x0065BE8F,\n\t0x00000002, 0x0065768E, 0x0065BE91, 0x00000002, 0x0065768E, 0x0065C68F,\n\t0x00000002, 0x0065768E, 0x0065C691, 0x00000002, 0x0065768E, 0x0065D08F,\n\t0x00000002, 0x0065768E, 0x0065D091, 0x00000003, 0x0065768E, 0x0065D091,\n\t0xA0812802, 0x00000002, 0x0065788E, 0x0065788F, 0x00000002, 0x0065788E,\n\t0x00657891, 0x00000002, 0x00657890, 0x0065788F, 0x00000002, 0x00657890,\n\t0x00657891, 0x00000002, 0x0065788E, 0x00658491, 0x00000003, 0x0065788E,\n\t0x00658491, 0xA0812802, 0x00000002, 0x0065788E, 0x00658E8F, 0x00000002,\n\t0x0065788E, 0x00658E91, 0x00000003, 0x0065788E,\n\t// Block 246, offset 0x3d80\n\t0x00658E91, 0xA0812802, 0x00000002, 0x0065788E, 0x00659891, 0x00000003,\n\t0x0065788E, 0x00659891, 0xA0812802, 0x00000002, 0x0065788E, 0x0065A291,\n\t0x00000002, 0x0065788E, 0x0065AC8F, 0x00000002, 0x0065788E, 0x0065AC91,\n\t0x00000003, 0x0065788E, 0x0065AC91, 0xA0812802, 0x00000003, 0x0065788E,\n\t0x0065AC91, 0xA0812902, 0x00000002, 0x0065788E, 0x0065B691, 0x00000002,\n\t0x0065788E, 0x0065C88F, 0x00000002, 0x0065788E, 0x0065C891, 0x00000002,\n\t0x0065788E, 0x0065D291, 0x00000003, 0x0065788E, 0x0065D291, 0xA0812802,\n\t0x00000002, 0x00657A8E, 0x00657A8F, 0x00000002, 0x00657A8E, 0x00657A91,\n\t0x00000002, 0x00657A90, 0x00657A8F, 0x00000002, 0x00657A90, 0x00657A91,\n\t0x00000003, 0x00657A8E, 0x00657A91, 0xA0812802, 0x00000003, 0x00657A90,\n\t0x00657A8F, 0xA0812802, 0x00000003, 0x00657A90,\n\t// Block 247, offset 0x3dc0\n\t0x00657A91, 0xA0812802, 0x00000004, 0x00657A90, 0x00657A91, 0xA0812802,\n\t0xA0812802, 0x00000002, 0x00657A8E, 0x0065868F, 0x00000002, 0x00657A8E,\n\t0x00658691, 0x00000003, 0x00657A8E, 0x00658691, 0xA0812802, 0x00000002,\n\t0x00657A8E, 0x0065908F, 0x00000002, 0x00657A8E, 0x00659091, 0x00000003,\n\t0x00657A8E, 0x00659091, 0xA0812802, 0x00000002, 0x00657A8E, 0x00659A8F,\n\t0x00000002, 0x00657A8E, 0x00659A91, 0x00000003, 0x00657A8E, 0x00659A91,\n\t0xA0812802, 0x00000002, 0x00657A8E, 0x0065A48F, 0x00000002, 0x00657A8E,\n\t0x0065A491, 0x00000002, 0x00657A8E, 0x0065AE8F, 0x00000002, 0x00657A8E,\n\t0x0065AE91, 0x00000003, 0x00657A8E, 0x0065AE91, 0xA0812802, 0x00000003,\n\t0x00657A8E, 0x0065AE91, 0xA0812902, 0x00000002, 0x00657A8E, 0x0065B88F,\n\t0x00000002, 0x00657A8E, 0x0065B891, 0x00000002,\n\t// Block 248, offset 0x3e00\n\t0x00657A8E, 0x0065C08F, 0x00000002, 0x00657A8E, 0x0065C091, 0x00000002,\n\t0x00657A8E, 0x0065CA8F, 0x00000002, 0x00657A8E, 0x0065CA91, 0x00000002,\n\t0x00657E8E, 0x00657E8F, 0x00000002, 0x00657E8E, 0x00657E91, 0x00000002,\n\t0x00657E90, 0x00657E8F, 0x00000002, 0x00657E90, 0x00657E91, 0x00000002,\n\t0x00657E8E, 0x0065888F, 0x00000002, 0x00657E8E, 0x00658891, 0x00000003,\n\t0x00657E8E, 0x00658891, 0xA0812802, 0x00000002, 0x00657E8E, 0x00659291,\n\t0x00000003, 0x00657E8E, 0x00659291, 0xA0812802, 0x00000002, 0x00657E8E,\n\t0x00659C91, 0x00000003, 0x00657E8E, 0x00659C91, 0xA0812802, 0x00000002,\n\t0x00657E8E, 0x0065A691, 0x00000002, 0x00657E8E, 0x0065B08F, 0x00000002,\n\t0x00657E8E, 0x0065B091, 0x00000003, 0x00657E8E, 0x0065B091, 0xA0812802,\n\t0x00000003, 0x00657E8E, 0x0065B091, 0xA0812902,\n\t// Block 249, offset 0x3e40\n\t0x00000002, 0x00657E8E, 0x0065BA91, 0x00000002, 0x00657E8E, 0x0065CC8F,\n\t0x00000002, 0x00657E8E, 0x0065CC91, 0x00000002, 0x00657E8E, 0x0065D491,\n\t0x00000003, 0x00657E8E, 0x0065D491, 0xA0812802, 0x00000002, 0x0065808E,\n\t0x0065808F, 0x00000002, 0x0065808E, 0x00658091, 0x00000002, 0x00658090,\n\t0x0065808F, 0x00000002, 0x00658090, 0x00658091, 0x00000002, 0x0065808E,\n\t0x00658A91, 0x00000003, 0x0065808E, 0x00658A91, 0xA0812802, 0x00000002,\n\t0x0065808E, 0x00659491, 0x00000003, 0x0065808E, 0x00659491, 0xA0812802,\n\t0x00000002, 0x0065808E, 0x00659E8F, 0x00000002, 0x0065808E, 0x00659E91,\n\t0x00000003, 0x0065808E, 0x00659E91, 0xA0812802, 0x00000002, 0x0065808E,\n\t0x0065A891, 0x00000002, 0x0065808E, 0x0065B28F, 0x00000002, 0x0065808E,\n\t0x0065B291, 0x00000003, 0x0065808E, 0x0065B291,\n\t// Block 250, offset 0x3e80\n\t0xA0812802, 0x00000003, 0x0065808E, 0x0065B291, 0xA0812902, 0x00000002,\n\t0x0065808E, 0x0065BC91, 0x00000002, 0x0065808E, 0x0065C48F, 0x00000002,\n\t0x0065808E, 0x0065C491, 0x00000002, 0x0065808E, 0x0065CE8F, 0x00000002,\n\t0x0065808E, 0x0065CE91, 0x00000002, 0x0065808E, 0x0065D691, 0x00000003,\n\t0x0065808E, 0x0065D691, 0xA0812802, 0x00000002, 0x00658290, 0x0065828F,\n\t0x00000002, 0x00658290, 0x00658291, 0x00000003, 0x0065848F, 0x00658291,\n\t0xA0812802, 0x00000002, 0x00658490, 0x00658491, 0x00000003, 0x00658490,\n\t0x00658491, 0xA0812802, 0x00000004, 0x00658490, 0x00658491, 0xA0812802,\n\t0xA0812802, 0x00000002, 0x00658690, 0x0065868F, 0x00000002, 0x00658690,\n\t0x00658691, 0x00000003, 0x00658690, 0x0065868F, 0xA0812802, 0x00000003,\n\t0x00658690, 0x00658691, 0xA0812802, 0x00000004,\n\t// Block 251, offset 0x3ec0\n\t0x00658690, 0x00658691, 0xA0812802, 0xA0812802, 0x00000002, 0x00658890,\n\t0x0065888F, 0x00000002, 0x00658890, 0x00658891, 0x00000003, 0x00658A8F,\n\t0x00658891, 0xA0812802, 0x00000002, 0x00658A90, 0x00658A91, 0x00000003,\n\t0x00658A90, 0x00658A91, 0xA0812802, 0x00000004, 0x00658A90, 0x00658A91,\n\t0xA0812802, 0xA0812802, 0x00000002, 0x40658A21, 0x00659E91, 0x00000002,\n\t0x00658C90, 0x00658C91, 0x00000003, 0x00658C90, 0x00658C91, 0xA0812802,\n\t0x00000004, 0x00658C90, 0x00658C91, 0xA0812802, 0xA0812802, 0x00000002,\n\t0x00658E90, 0x00658E8F, 0x00000002, 0x00658E90, 0x00658E91, 0x00000003,\n\t0x00658E90, 0x00658E8F, 0xA0812802, 0x00000003, 0x00658E90, 0x00658E91,\n\t0xA0812802, 0x00000004, 0x00658E90, 0x00658E91, 0xA0812802, 0xA0812802,\n\t0x00000002, 0x00659090, 0x0065908F, 0x00000002,\n\t// Block 252, offset 0x3f00\n\t0x00659090, 0x00659091, 0x00000003, 0x00659090, 0x0065908F, 0xA0812802,\n\t0x00000003, 0x00659090, 0x00659091, 0xA0812802, 0x00000004, 0x00659090,\n\t0x00659091, 0xA0812802, 0xA0812802, 0x00000002, 0x00659290, 0x00659291,\n\t0x00000003, 0x00659290, 0x00659291, 0xA0812802, 0x00000004, 0x00659290,\n\t0x00659291, 0xA0812802, 0xA0812802, 0x00000002, 0x00659490, 0x00659491,\n\t0x00000003, 0x00659490, 0x00659491, 0xA0812802, 0x00000004, 0x00659490,\n\t0x00659491, 0xA0812802, 0xA0812802, 0x00000002, 0x00659690, 0x00659691,\n\t0x00000003, 0x00659690, 0x00659691, 0xA0812802, 0x00000004, 0x00659690,\n\t0x00659691, 0xA0812802, 0xA0812802, 0x00000002, 0x00659890, 0x00659891,\n\t0x00000003, 0x00659890, 0x00659891, 0xA0812802, 0x00000004, 0x00659890,\n\t0x00659891, 0xA0812802, 0xA0812802, 0x00000002,\n\t// Block 253, offset 0x3f40\n\t0x00659A90, 0x00659A8F, 0x00000002, 0x00659A90, 0x00659A91, 0x00000003,\n\t0x00659A90, 0x00659A8F, 0xA0812802, 0x00000003, 0x00659A90, 0x00659A91,\n\t0xA0812802, 0x00000004, 0x00659A90, 0x00659A91, 0xA0812802, 0xA0812802,\n\t0x00000002, 0x00659C90, 0x00659C91, 0x00000003, 0x00659C90, 0x00659C91,\n\t0xA0812802, 0x00000004, 0x00659C90, 0x00659C91, 0xA0812802, 0xA0812802,\n\t0x00000002, 0x00659E90, 0x00659E8F, 0x00000002, 0x00659E90, 0x00659E91,\n\t0x00000003, 0x00659E90, 0x00659E8F, 0xA0812802, 0x00000003, 0x00659E90,\n\t0x00659E91, 0xA0812802, 0x00000004, 0x00659E90, 0x00659E91, 0xA0812802,\n\t0xA0812802, 0x00000002, 0x0065A090, 0x0065A091, 0x00000002, 0x0065A290,\n\t0x0065A291, 0x00000002, 0x0065A490, 0x0065A48F, 0x00000002, 0x0065A490,\n\t0x0065A491, 0x00000002, 0x0065A690, 0x0065A691,\n\t// Block 254, offset 0x3f80\n\t0x00000002, 0x0065A890, 0x0065A891, 0x00000002, 0x0065AA90, 0x0065AA8F,\n\t0x00000002, 0x0065AA90, 0x0065AA91, 0x00000003, 0x0065AA90, 0x0065AA8F,\n\t0xA0812802, 0x00000003, 0x0065AA90, 0x0065AA91, 0xA0812802, 0x00000004,\n\t0x0065AA90, 0x0065AA91, 0xA0812802, 0xA0812802, 0x00000003, 0x0065AA90,\n\t0x0065AA91, 0xA0812902, 0x00000004, 0x0065AA90, 0x0065AA91, 0xA0812902,\n\t0xA0812802, 0x00000002, 0x0065AC90, 0x0065AC8F, 0x00000002, 0x0065AC90,\n\t0x0065AC91, 0x00000003, 0x0065AC90, 0x0065AC8F, 0xA0812802, 0x00000003,\n\t0x0065AC90, 0x0065AC91, 0xA0812802, 0x00000004, 0x0065AC90, 0x0065AC91,\n\t0xA0812802, 0xA0812802, 0x00000003, 0x0065AC90, 0x0065AC91, 0xA0812902,\n\t0x00000004, 0x0065AC90, 0x0065AC91, 0xA0812902, 0xA0812802, 0x00000002,\n\t0x0065AE90, 0x0065AE8F, 0x00000002, 0x0065AE90,\n\t// Block 255, offset 0x3fc0\n\t0x0065AE91, 0x00000003, 0x0065AE90, 0x0065AE8F, 0xA0812802, 0x00000003,\n\t0x0065AE90, 0x0065AE91, 0xA0812802, 0x00000004, 0x0065AE90, 0x0065AE91,\n\t0xA0812802, 0xA0812802, 0x00000003, 0x0065AE90, 0x0065AE91, 0xA0812902,\n\t0x00000004, 0x0065AE90, 0x0065AE91, 0xA0812902, 0xA0812802, 0x00000002,\n\t0x0065B090, 0x0065B08F, 0x00000002, 0x0065B090, 0x0065B091, 0x00000003,\n\t0x0065B090, 0x0065B08F, 0xA0812802, 0x00000003, 0x0065B090, 0x0065B091,\n\t0xA0812802, 0x00000004, 0x0065B090, 0x0065B091, 0xA0812802, 0xA0812802,\n\t0x00000003, 0x0065B090, 0x0065B091, 0xA0812902, 0x00000004, 0x0065B090,\n\t0x0065B091, 0xA0812902, 0xA0812802, 0x00000002, 0x0065B290, 0x0065B28F,\n\t0x00000002, 0x0065B290, 0x0065B291, 0x00000003, 0x0065B290, 0x0065B28F,\n\t0xA0812802, 0x00000003, 0x0065B290, 0x0065B291,\n\t// Block 256, offset 0x4000\n\t0xA0812802, 0x00000004, 0x0065B290, 0x0065B291, 0xA0812802, 0xA0812802,\n\t0x00000003, 0x0065B290, 0x0065B291, 0xA0812902, 0x00000004, 0x0065B290,\n\t0x0065B291, 0xA0812902, 0xA0812802, 0x00000002, 0x0065B490, 0x0065B491,\n\t0x00000002, 0x0065B690, 0x0065B691, 0x00000002, 0x0065B890, 0x0065B88F,\n\t0x00000002, 0x0065B890, 0x0065B891, 0x00000002, 0x0065BA90, 0x0065BA91,\n\t0x00000002, 0x0065BC90, 0x0065BC91, 0x00000002, 0x0065BE90, 0x0065BE8F,\n\t0x00000002, 0x0065BE90, 0x0065BE91, 0x00000002, 0x0065C090, 0x0065C08F,\n\t0x00000002, 0x0065C090, 0x0065C091, 0x00000002, 0x0065C490, 0x0065C48F,\n\t0x00000002, 0x0065C490, 0x0065C491, 0x00000002, 0x4065C421, 0x0065C891,\n\t0x00000002, 0x0065C690, 0x0065C68F, 0x00000002, 0x0065C690, 0x0065C691,\n\t0x00000002, 0x0065C890, 0x0065C88F, 0x00000002,\n\t// Block 257, offset 0x4040\n\t0x0065C890, 0x0065C891, 0x00000002, 0x0065CA90, 0x0065CA8F, 0x00000002,\n\t0x0065CA90, 0x0065CA91, 0x00000002, 0x0065CC90, 0x0065CC8F, 0x00000002,\n\t0x0065CC90, 0x0065CC91, 0x00000002, 0x0065CE90, 0x0065CE8F, 0x00000002,\n\t0x0065CE90, 0x0065CE91, 0x00000002, 0x0065D090, 0x0065D08F, 0x00000002,\n\t0x0065D090, 0x0065D091, 0x00000003, 0x0065D090, 0x0065D08F, 0xA0812802,\n\t0x00000003, 0x0065D090, 0x0065D091, 0xA0812802, 0x00000004, 0x0065D090,\n\t0x0065D091, 0xA0812802, 0xA0812802, 0x00000002, 0x0065D290, 0x0065D291,\n\t0x00000003, 0x0065D290, 0x0065D291, 0xA0812802, 0x00000004, 0x0065D290,\n\t0x0065D291, 0xA0812802, 0xA0812802, 0x00000002, 0x0065D490, 0x0065D491,\n\t0x00000003, 0x0065D490, 0x0065D491, 0xA0812802, 0x00000004, 0x0065D490,\n\t0x0065D491, 0xA0812802, 0xA0812802, 0x00000002,\n\t// Block 258, offset 0x4080\n\t0x0065D690, 0x0065D691, 0x00000003, 0x0065D690, 0x0065D691, 0xA0812802,\n\t0x00000004, 0x0065D690, 0x0065D691, 0xA0812802, 0xA0812802, 0x00000002,\n\t0x0065D890, 0x0065D891, 0x00000002, 0x02B24E9C, 0x02D6C69C, 0x00000002,\n\t0x02BCE69C, 0x02C4209C, 0x00000002, 0x02CC1C9C, 0x02D9769C, 0x00000002,\n\t0x02CC5A9C, 0x02A9189C, 0x00000003, 0x00032683, 0x404FDA20, 0x40032620,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FA420, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FA620, 0x00000003, 0x404FD821, 0x82092817, 0x404FA820,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FAA20, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FAC20, 0x00000003, 0x404FD821, 0x82092817, 0x404FAE20,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FB020, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FB220, 0x00000003, 0x404FD821,\n\t// Block 259, offset 0x40c0\n\t0x82092817, 0x404FB420, 0x00000003, 0x404FD821, 0x82092817, 0x404FB620,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FB820, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FBA20, 0x00000003, 0x404FD821, 0x82092817, 0x404FBC20,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FBE20, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FC020, 0x00000003, 0x404FD821, 0x82092817, 0x404FC220,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FC420, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FC620, 0x00000003, 0x404FD821, 0x82092817, 0x404FC820,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FCA20, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FCC20, 0x00000003, 0x404FD821, 0x82092817, 0x404FCE20,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FD020, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FD220, 0x00000003, 0x404FD821,\n\t// Block 260, offset 0x4100\n\t0x82092817, 0x404FD420, 0x00000003, 0x404FD821, 0x82092817, 0x404FD620,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FD820, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FDA20, 0x00000003, 0x404FD821, 0x82092817, 0x404FDA20,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FDC20, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FDC20, 0x00000003, 0x404FD821, 0x82092817, 0x404FDC20,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FDE20, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FDE20, 0x00000003, 0x404FD821, 0x82092817, 0x404FE020,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FE220, 0x00000003, 0x404FD821,\n\t0x82092817, 0x404FE420, 0x00000003, 0x404FD821, 0x82092817, 0x404FE620,\n\t0x00000003, 0x404FD821, 0x82092817, 0x404FE820, 0x00000002, 0x404FE820,\n\t0x40500E20, 0x00000002, 0x404FE821, 0x40501020,\n\t// Block 261, offset 0x4140\n\t0x00000002, 0x404FE821, 0x40501220, 0x00000002, 0x404FE821, 0x40501820,\n\t0x00000003, 0x004FE8A3, 0x40501820, 0x404FA420, 0x00000002, 0x404FE821,\n\t0x40501A20, 0x00000003, 0x004FE8A3, 0x40501A20, 0x404FDC20, 0x00000002,\n\t0x404FE821, 0x40502620, 0x00000002, 0x404FE821, 0x40502820, 0x00000002,\n\t0x404FE821, 0x40502A20, 0x00000002, 0x004FE8A3, 0x40502A20, 0x00000002,\n\t0x404FE821, 0x40502C20, 0x00000002, 0x4062AC21, 0x4063A820, 0x00000002,\n\t0x4062AC22, 0x4063A820, 0x00000002, 0x4062AC23, 0x4063A820, 0x00000002,\n\t0x4062AC24, 0x4063A820, 0x00000002, 0x4062AC25, 0x4063A820, 0x00000002,\n\t0x4062AC26, 0x4063A820, 0x00000002, 0x4062AC27, 0x4063A820, 0x00000002,\n\t0x4062AC28, 0x4063A820, 0x00000002, 0x4062AC29, 0x4063A820, 0x00000002,\n\t0x4062AC2A, 0x4063A820, 0x00000002, 0x4062AC2B,\n\t// Block 262, offset 0x4180\n\t0x4063A820, 0x00000002, 0x4062AC2C, 0x4063A820, 0x00000002, 0x4062AC2D,\n\t0x4063A820, 0x00000002, 0x4062AC2E, 0x4063A820, 0x00000002, 0x4062AC2F,\n\t0x4063A820, 0x00000002, 0x4062AC30, 0x4063A820, 0x00000002, 0x4062AC31,\n\t0x4063A820, 0x00000002, 0x4062AC32, 0x4063A820, 0x00000002, 0x4062AC33,\n\t0x4063A820, 0x00000002, 0x4062AC34, 0x4063A820, 0x00000002, 0x4062AC35,\n\t0x4063A820, 0x00000002, 0x4062AC36, 0x4063A820, 0x00000002, 0x4062AC37,\n\t0x4063A820, 0x00000002, 0x4062AC38, 0x4063A820, 0x00000002, 0x4062AC39,\n\t0x4063A820, 0x00000002, 0x4062AC3A, 0x4063A820, 0x00000002, 0x4062AC3B,\n\t0x4063A820, 0x00000002, 0x4062AC3C, 0x4063A820, 0x00000002, 0x4062AC3D,\n\t0x4063A820, 0x00000002, 0x4062AC3E, 0x4063A820, 0x00000002, 0x4062AC3F,\n\t0x4063A820, 0x00000002, 0x4062AC40, 0x4063A820,\n\t// Block 263, offset 0x41c0\n\t0x00000002, 0x4062AC41, 0x4063A820, 0x00000002, 0x4062AC42, 0x4063A820,\n\t0x00000002, 0x4062AC43, 0x4063A820, 0x00000002, 0x4062AC44, 0x4063A820,\n\t0x00000002, 0x4062AC45, 0x4063A820, 0x00000002, 0x4062AC46, 0x4063A820,\n\t0x00000002, 0x4062AC47, 0x4063A820, 0x00000002, 0x4062AC48, 0x4063A820,\n\t0x00000002, 0x4062AC49, 0x4063A820, 0x00000002, 0x4062AC4A, 0x4063A820,\n\t0x00000002, 0x4062AC4B, 0x4063A820, 0x00000002, 0x4062AC4C, 0x4063A820,\n\t0x00000003, 0x4062AC21, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC22,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062AC23, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062AC24, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC25,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062AC26, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062AC27, 0x4063A820, 0x40646420,\n\t// Block 264, offset 0x4200\n\t0x00000003, 0x4062AC28, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC29,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062AC2A, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062AC2B, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC2C,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062AC2D, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062AC2E, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC2F,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062AC30, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062AC31, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC21,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC22, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC23, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC24,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC25, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC26, 0x4063A820, 0x40646A20,\n\t// Block 265, offset 0x4240\n\t0x00000003, 0x4062AC27, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC28,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC2A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC2B,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC2C, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC2D, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC2E,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC2F, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC30, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC31,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC32, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC33, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC34,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC35, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC36, 0x4063A820, 0x40646A20,\n\t// Block 266, offset 0x4280\n\t0x00000003, 0x4062AC37, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC38,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC39, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC3A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC3B,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC3C, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC3D, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC3E,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC3F, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC40, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC41,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062AC42, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062AC43, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC21,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062AC22, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062AC23, 0x4063A820, 0x40647220,\n\t// Block 267, offset 0x42c0\n\t0x00000003, 0x4062AC24, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC25,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062AC26, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062AC27, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC28,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062AC29, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062AC2A, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC2B,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062AC2C, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062AC2D, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC2E,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062AC2F, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062AC30, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC21,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC22, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC23, 0x4063A820, 0x40648220,\n\t// Block 268, offset 0x4300\n\t0x00000003, 0x4062AC24, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC25,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC26, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC27, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC28,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC29, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC2A, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC2B,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC2C, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC2D, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC2E,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC2F, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC30, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC31,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC32, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC33, 0x4063A820, 0x40648220,\n\t// Block 269, offset 0x4340\n\t0x00000003, 0x4062AC34, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC35,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC36, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC37, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC38,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC39, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC3A, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC3B,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC3C, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC3D, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC3E,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC3F, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC40, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC41,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062AC42, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062AC43, 0x4063A820, 0x40648220,\n\t// Block 270, offset 0x4380\n\t0x00000003, 0x4062AC21, 0x4063A820, 0x40648420, 0x00000003, 0x4062AC22,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062AC23, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062AC24, 0x4063A820, 0x40648420, 0x00000003, 0x4062AC25,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062AC26, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062AC27, 0x4063A820, 0x40648420, 0x00000003, 0x4062AC21,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC22, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC23, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC24,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC26, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC27,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC28, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC29, 0x4063A820, 0x40648C20,\n\t// Block 271, offset 0x43c0\n\t0x00000003, 0x4062AC2A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC2B,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC2C, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC2D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC2E,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC2F, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC30, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC31,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC32, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC33, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC34,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC35, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC36, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC37,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC38, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC39, 0x4063A820, 0x40648C20,\n\t// Block 272, offset 0x4400\n\t0x00000003, 0x4062AC3A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC3B,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC3C, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC3D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC3E,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC3F, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC40, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC41,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC42, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC43, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC44,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC45, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC46, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC47,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062AC48, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062AC49, 0x4063A820, 0x40648C20,\n\t// Block 273, offset 0x4440\n\t0x00000002, 0x4062AC21, 0x4063AA20, 0x00000002, 0x4062AC22, 0x4063AA20,\n\t0x00000002, 0x4062AC23, 0x4063AA20, 0x00000002, 0x4062AC24, 0x4063AA20,\n\t0x00000002, 0x4062AC25, 0x4063AA20, 0x00000002, 0x4062AC26, 0x4063AA20,\n\t0x00000002, 0x4062AC27, 0x4063AA20, 0x00000002, 0x4062AC28, 0x4063AA20,\n\t0x00000002, 0x4062AC29, 0x4063AA20, 0x00000002, 0x4062AC2A, 0x4063AA20,\n\t0x00000002, 0x4062AC2B, 0x4063AA20, 0x00000002, 0x4062AC2C, 0x4063AA20,\n\t0x00000002, 0x4062AC2D, 0x4063AA20, 0x00000002, 0x4062AC2E, 0x4063AA20,\n\t0x00000002, 0x4062AC2F, 0x4063AA20, 0x00000002, 0x4062AC30, 0x4063AA20,\n\t0x00000002, 0x4062AC31, 0x4063AA20, 0x00000002, 0x4062AC32, 0x4063AA20,\n\t0x00000002, 0x4062AC33, 0x4063AA20, 0x00000002, 0x4062AC34, 0x4063AA20,\n\t0x00000002, 0x4062AC35, 0x4063AA20, 0x00000002,\n\t// Block 274, offset 0x4480\n\t0x4062AC36, 0x4063AA20, 0x00000002, 0x4062AC37, 0x4063AA20, 0x00000002,\n\t0x4062AC38, 0x4063AA20, 0x00000002, 0x4062AC39, 0x4063AA20, 0x00000002,\n\t0x4062AC3A, 0x4063AA20, 0x00000003, 0x4062AC21, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062AC22, 0x4063AA20, 0x40646420, 0x00000003, 0x4062AC21,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062AC22, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062AC23, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062AC24,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062AC26, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062AC21,\n\t0x4063AC20, 0x40646420, 0x00000002, 0x4062AC21, 0x4063B020, 0x00000002,\n\t0x4062AC22, 0x4063B020, 0x00000002, 0x4062AC23, 0x4063B020, 0x00000002,\n\t0x4062AC24, 0x4063B020, 0x00000002, 0x4062AC25,\n\t// Block 275, offset 0x44c0\n\t0x4063B020, 0x00000002, 0x4062AC26, 0x4063B020, 0x00000002, 0x4062AC27,\n\t0x4063B020, 0x00000002, 0x4062AC28, 0x4063B020, 0x00000002, 0x4062AC29,\n\t0x4063B020, 0x00000002, 0x4062AC2A, 0x4063B020, 0x00000002, 0x4062AC2B,\n\t0x4063B020, 0x00000002, 0x4062AC2C, 0x4063B020, 0x00000002, 0x4062AC2D,\n\t0x4063B020, 0x00000002, 0x4062AC2E, 0x4063B020, 0x00000002, 0x4062AC2F,\n\t0x4063B020, 0x00000002, 0x4062AC30, 0x4063B020, 0x00000002, 0x4062AC31,\n\t0x4063B020, 0x00000002, 0x4062AC32, 0x4063B020, 0x00000002, 0x4062AC33,\n\t0x4063B020, 0x00000002, 0x4062AC34, 0x4063B020, 0x00000002, 0x4062AC35,\n\t0x4063B020, 0x00000002, 0x4062AC36, 0x4063B020, 0x00000002, 0x4062AC37,\n\t0x4063B020, 0x00000002, 0x4062AC38, 0x4063B020, 0x00000002, 0x4062AC39,\n\t0x4063B020, 0x00000002, 0x4062AC3A, 0x4063B020,\n\t// Block 276, offset 0x4500\n\t0x00000002, 0x4062AC3B, 0x4063B020, 0x00000002, 0x4062AC3C, 0x4063B020,\n\t0x00000002, 0x4062AC3D, 0x4063B020, 0x00000002, 0x4062AC3E, 0x4063B020,\n\t0x00000003, 0x4062AC21, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC22,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062AC23, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062AC24, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC25,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062AC26, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062AC27, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC28,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062AC2A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC2B,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062AC2C, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062AC2D, 0x4063B020, 0x40646A20,\n\t// Block 277, offset 0x4540\n\t0x00000003, 0x4062AC2E, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC2F,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062AC30, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062AC31, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC32,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062AC21, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062AC22, 0x4063B020, 0x40647220, 0x00000003, 0x4062AC23,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062AC24, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062AC25, 0x4063B020, 0x40647220, 0x00000003, 0x4062AC26,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062AC27, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062AC21, 0x4063B020, 0x40648220, 0x00000003, 0x4062AC22,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062AC23, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062AC24, 0x4063B020, 0x40648220,\n\t// Block 278, offset 0x4580\n\t0x00000003, 0x4062AC25, 0x4063B020, 0x40648220, 0x00000003, 0x4062AC26,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062AC27, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062AC28, 0x4063B020, 0x40648220, 0x00000003, 0x4062AC29,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062AC21, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062AC22, 0x4063B020, 0x40648420, 0x00000003, 0x4062AC23,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062AC24, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062AC25, 0x4063B020, 0x40648420, 0x00000002, 0x4062AC21,\n\t0x4063B220, 0x00000002, 0x4062AC22, 0x4063B220, 0x00000002, 0x4062AC23,\n\t0x4063B220, 0x00000003, 0x4062AC21, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062AC22, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC23, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062AC24, 0x4063B420,\n\t// Block 279, offset 0x45c0\n\t0x40646420, 0x00000003, 0x4062AC25, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062AC26, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC27, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062AC28, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062AC29, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC2A, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062AC2B, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062AC2C, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC2D, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062AC21, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC22, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC23, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062AC24, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC25, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC26, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062AC27, 0x4063B420,\n\t// Block 280, offset 0x4600\n\t0x40646A20, 0x00000003, 0x4062AC28, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC29, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC2A, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062AC2B, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC2C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC2D, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062AC2E, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC2F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC30, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062AC31, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC32, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC33, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062AC34, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062AC21, 0x4063B420, 0x40647220, 0x00000003, 0x4062AC22, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062AC23, 0x4063B420,\n\t// Block 281, offset 0x4640\n\t0x40647220, 0x00000003, 0x4062AC24, 0x4063B420, 0x40647220, 0x00000003,\n\t0x4062AC25, 0x4063B420, 0x40647220, 0x00000003, 0x4062AC26, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062AC27, 0x4063B420, 0x40647220, 0x00000003,\n\t0x4062AC28, 0x4063B420, 0x40647220, 0x00000003, 0x4062AC29, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062AC21, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062AC22, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC23, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062AC24, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062AC25, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC26, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062AC27, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062AC28, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC29, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062AC2A, 0x4063B420,\n\t// Block 282, offset 0x4680\n\t0x40648220, 0x00000003, 0x4062AC2B, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062AC2C, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC2D, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062AC2E, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062AC2F, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC21, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC22, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC23, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC24, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC25, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC26, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC27, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC28, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC29, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC2A, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC2B, 0x4063B420,\n\t// Block 283, offset 0x46c0\n\t0x40648C20, 0x00000003, 0x4062AC2C, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC2D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC2E, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC2F, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC30, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC31, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC32, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC33, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC34, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC35, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC36, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC37, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC38, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC39, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC3A, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC3B, 0x4063B420,\n\t// Block 284, offset 0x4700\n\t0x40648C20, 0x00000003, 0x4062AC3C, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC3D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC3E, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC3F, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC40, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC41, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC42, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC43, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC44, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC45, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC46, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC47, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC48, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC49, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC4A, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC4B, 0x4063B420,\n\t// Block 285, offset 0x4740\n\t0x40648C20, 0x00000003, 0x4062AC4C, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC4D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC4E, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC4F, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC50, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC51, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC52, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC53, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC54, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC55, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC56, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC57, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC58, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC59, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC5A, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC5B, 0x4063B420,\n\t// Block 286, offset 0x4780\n\t0x40648C20, 0x00000003, 0x4062AC5C, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC5D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC5E, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062AC5F, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062AC60, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC61, 0x4063B420,\n\t0x40648C20, 0x00000002, 0x4062AC21, 0x4063B620, 0x00000002, 0x4062AC22,\n\t0x4063B620, 0x00000002, 0x4062AC23, 0x4063B620, 0x00000002, 0x4062AC24,\n\t0x4063B620, 0x00000002, 0x4062AC25, 0x4063B620, 0x00000002, 0x4062AC26,\n\t0x4063B620, 0x00000002, 0x4062AC27, 0x4063B620, 0x00000002, 0x4062AC28,\n\t0x4063B620, 0x00000002, 0x4062AC29, 0x4063B620, 0x00000002, 0x4062AC2A,\n\t0x4063B620, 0x00000002, 0x4062AC2B, 0x4063B620, 0x00000002, 0x4062AC2C,\n\t0x4063B620, 0x00000002, 0x4062AC2D, 0x4063B620,\n\t// Block 287, offset 0x47c0\n\t0x00000002, 0x4062AC2E, 0x4063B620, 0x00000002, 0x4062AC2F, 0x4063B620,\n\t0x00000002, 0x4062AC30, 0x4063B620, 0x00000002, 0x4062AC31, 0x4063B620,\n\t0x00000002, 0x4062AC32, 0x4063B620, 0x00000002, 0x4062AC33, 0x4063B620,\n\t0x00000002, 0x4062AC34, 0x4063B620, 0x00000002, 0x4062AC35, 0x4063B620,\n\t0x00000002, 0x4062AC36, 0x4063B620, 0x00000002, 0x4062AC37, 0x4063B620,\n\t0x00000002, 0x4062AC38, 0x4063B620, 0x00000002, 0x4062AC39, 0x4063B620,\n\t0x00000002, 0x4062AC3A, 0x4063B620, 0x00000002, 0x4062AC3B, 0x4063B620,\n\t0x00000002, 0x4062AC3C, 0x4063B620, 0x00000002, 0x4062AC3D, 0x4063B620,\n\t0x00000002, 0x4062AC3E, 0x4063B620, 0x00000002, 0x4062AC3F, 0x4063B620,\n\t0x00000002, 0x4062AC40, 0x4063B620, 0x00000002, 0x4062AC41, 0x4063B620,\n\t0x00000002, 0x4062AC42, 0x4063B620, 0x00000002,\n\t// Block 288, offset 0x4800\n\t0x4062AC43, 0x4063B620, 0x00000002, 0x4062AC44, 0x4063B620, 0x00000002,\n\t0x4062AC21, 0x4063B820, 0x00000002, 0x4062AC22, 0x4063B820, 0x00000002,\n\t0x4062AC23, 0x4063B820, 0x00000002, 0x4062AC24, 0x4063B820, 0x00000002,\n\t0x4062AC25, 0x4063B820, 0x00000002, 0x4062AC26, 0x4063B820, 0x00000002,\n\t0x4062AC27, 0x4063B820, 0x00000002, 0x4062AC28, 0x4063B820, 0x00000002,\n\t0x4062AC29, 0x4063B820, 0x00000002, 0x4062AC2A, 0x4063B820, 0x00000002,\n\t0x4062AC2B, 0x4063B820, 0x00000002, 0x4062AC2C, 0x4063B820, 0x00000002,\n\t0x4062AC2D, 0x4063B820, 0x00000002, 0x4062AC2E, 0x4063B820, 0x00000002,\n\t0x4062AC2F, 0x4063B820, 0x00000002, 0x4062AC30, 0x4063B820, 0x00000002,\n\t0x4062AC31, 0x4063B820, 0x00000002, 0x4062AC32, 0x4063B820, 0x00000002,\n\t0x4062AC33, 0x4063B820, 0x00000002, 0x4062AC34,\n\t// Block 289, offset 0x4840\n\t0x4063B820, 0x00000002, 0x4062AC35, 0x4063B820, 0x00000002, 0x4062AC36,\n\t0x4063B820, 0x00000002, 0x4062AC37, 0x4063B820, 0x00000002, 0x4062AC38,\n\t0x4063B820, 0x00000002, 0x4062AC39, 0x4063B820, 0x00000002, 0x4062AC3A,\n\t0x4063B820, 0x00000002, 0x4062AC3B, 0x4063B820, 0x00000002, 0x4062AC3C,\n\t0x4063B820, 0x00000002, 0x4062AC3D, 0x4063B820, 0x00000002, 0x4062AC3E,\n\t0x4063B820, 0x00000002, 0x4062AC3F, 0x4063B820, 0x00000002, 0x4062AC40,\n\t0x4063B820, 0x00000002, 0x4062AC41, 0x4063B820, 0x00000002, 0x4062AC42,\n\t0x4063B820, 0x00000002, 0x4062AC43, 0x4063B820, 0x00000002, 0x4062AC44,\n\t0x4063B820, 0x00000002, 0x4062AC45, 0x4063B820, 0x00000002, 0x4062AC46,\n\t0x4063B820, 0x00000002, 0x4062AC47, 0x4063B820, 0x00000002, 0x4062AC48,\n\t0x4063B820, 0x00000002, 0x4062AC49, 0x4063B820,\n\t// Block 290, offset 0x4880\n\t0x00000002, 0x4062AC4A, 0x4063B820, 0x00000002, 0x4062AC4B, 0x4063B820,\n\t0x00000002, 0x4062AC4C, 0x4063B820, 0x00000002, 0x4062AC4D, 0x4063B820,\n\t0x00000002, 0x4062AC4E, 0x4063B820, 0x00000002, 0x4062AC4F, 0x4063B820,\n\t0x00000002, 0x4062AC50, 0x4063B820, 0x00000002, 0x4062AC51, 0x4063B820,\n\t0x00000002, 0x4062AC52, 0x4063B820, 0x00000002, 0x4062AC53, 0x4063B820,\n\t0x00000002, 0x4062AC54, 0x4063B820, 0x00000002, 0x4062AC55, 0x4063B820,\n\t0x00000002, 0x4062AC56, 0x4063B820, 0x00000002, 0x4062AC57, 0x4063B820,\n\t0x00000002, 0x4062AC58, 0x4063B820, 0x00000002, 0x4062AC59, 0x4063B820,\n\t0x00000002, 0x4062AC5A, 0x4063B820, 0x00000002, 0x4062AC5B, 0x4063B820,\n\t0x00000002, 0x4062AC5C, 0x4063B820, 0x00000002, 0x4062AC5D, 0x4063B820,\n\t0x00000002, 0x4062AC5E, 0x4063B820, 0x00000002,\n\t// Block 291, offset 0x48c0\n\t0x4062AC5F, 0x4063B820, 0x00000002, 0x4062AC60, 0x4063B820, 0x00000002,\n\t0x4062AC61, 0x4063B820, 0x00000002, 0x4062AC62, 0x4063B820, 0x00000002,\n\t0x4062AC63, 0x4063B820, 0x00000003, 0x4062AC21, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062AC22, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC23,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062AC24, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062AC25, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC26,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062AC27, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062AC28, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC29,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062AC2A, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062AC2B, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC2C,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062AC21,\n\t// Block 292, offset 0x4900\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC22, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC23, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC24,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC25, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC26, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC27,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC28, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC29, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC2A,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC2B, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC2C, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC2D,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC2E, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC2F, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC30,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC31,\n\t// Block 293, offset 0x4940\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC32, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC33, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC34,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC35, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC36, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC37,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062AC38, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062AC21, 0x4063B820, 0x40647220, 0x00000003, 0x4062AC22,\n\t0x4063B820, 0x40647220, 0x00000003, 0x4062AC23, 0x4063B820, 0x40647220,\n\t0x00000003, 0x4062AC24, 0x4063B820, 0x40647220, 0x00000003, 0x4062AC25,\n\t0x4063B820, 0x40647220, 0x00000003, 0x4062AC26, 0x4063B820, 0x40647220,\n\t0x00000003, 0x4062AC21, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC22,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC23,\n\t// Block 294, offset 0x4980\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC24, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC25, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC26,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC27, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC28, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC29,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC2A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC2B, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC2C,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC2D, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC2E, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC2F,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC30, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC31, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC32,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC33,\n\t// Block 295, offset 0x49c0\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC34, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC35, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC36,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC37, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC38, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC39,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC3A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062AC3B, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC3C,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062AC21, 0x4063B820, 0x40648E20,\n\t0x00000002, 0x4062AC21, 0x4063BA20, 0x00000002, 0x4062AC22, 0x4063BA20,\n\t0x00000002, 0x4062AC23, 0x4063BA20, 0x00000002, 0x4062AC24, 0x4063BA20,\n\t0x00000002, 0x4062AC25, 0x4063BA20, 0x00000002, 0x4062AC26, 0x4063BA20,\n\t0x00000002, 0x4062AC27, 0x4063BA20, 0x00000002,\n\t// Block 296, offset 0x4a00\n\t0x4062AC28, 0x4063BA20, 0x00000002, 0x4062AC29, 0x4063BA20, 0x00000002,\n\t0x4062AC2A, 0x4063BA20, 0x00000002, 0x4062AC2B, 0x4063BA20, 0x00000002,\n\t0x4062AC2C, 0x4063BA20, 0x00000002, 0x4062AC2D, 0x4063BA20, 0x00000002,\n\t0x4062AC2E, 0x4063BA20, 0x00000002, 0x4062AC2F, 0x4063BA20, 0x00000002,\n\t0x4062AC30, 0x4063BA20, 0x00000002, 0x4062AC31, 0x4063BA20, 0x00000002,\n\t0x4062AC32, 0x4063BA20, 0x00000002, 0x4062AC33, 0x4063BA20, 0x00000002,\n\t0x4062AC34, 0x4063BA20, 0x00000002, 0x4062AC35, 0x4063BA20, 0x00000002,\n\t0x4062AC36, 0x4063BA20, 0x00000002, 0x4062AC37, 0x4063BA20, 0x00000002,\n\t0x4062AC38, 0x4063BA20, 0x00000002, 0x4062AC39, 0x4063BA20, 0x00000003,\n\t0x4062AC21, 0x4063BA20, 0x40646420, 0x00000003, 0x4062AC22, 0x4063BA20,\n\t0x40646420, 0x00000003, 0x4062AC23, 0x4063BA20,\n\t// Block 297, offset 0x4a40\n\t0x40646420, 0x00000003, 0x4062AC24, 0x4063BA20, 0x40646420, 0x00000003,\n\t0x4062AC25, 0x4063BA20, 0x40646420, 0x00000003, 0x4062AC26, 0x4063BA20,\n\t0x40646420, 0x00000003, 0x4062AC27, 0x4063BA20, 0x40646420, 0x00000003,\n\t0x4062AC28, 0x4063BA20, 0x40646420, 0x00000003, 0x4062AC29, 0x4063BA20,\n\t0x40646420, 0x00000003, 0x4062AC21, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC22, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC23, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC24, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC25, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC26, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC27, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC28, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC2A, 0x4063BA20,\n\t// Block 298, offset 0x4a80\n\t0x40646A20, 0x00000003, 0x4062AC2B, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC2C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC2D, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC2E, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC2F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC30, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC31, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC32, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC33, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC34, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC35, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC36, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC37, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC38, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC39, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC3A, 0x4063BA20,\n\t// Block 299, offset 0x4ac0\n\t0x40646A20, 0x00000003, 0x4062AC3B, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC3C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC3D, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062AC3E, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062AC3F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC21, 0x4063BA20,\n\t0x40647220, 0x00000003, 0x4062AC22, 0x4063BA20, 0x40647220, 0x00000003,\n\t0x4062AC23, 0x4063BA20, 0x40647220, 0x00000003, 0x4062AC24, 0x4063BA20,\n\t0x40647220, 0x00000003, 0x4062AC25, 0x4063BA20, 0x40647220, 0x00000003,\n\t0x4062AC26, 0x4063BA20, 0x40647220, 0x00000003, 0x4062AC27, 0x4063BA20,\n\t0x40647220, 0x00000003, 0x4062AC28, 0x4063BA20, 0x40647220, 0x00000003,\n\t0x4062AC29, 0x4063BA20, 0x40647220, 0x00000003, 0x4062AC2A, 0x4063BA20,\n\t0x40647220, 0x00000003, 0x4062AC21, 0x4063BA20,\n\t// Block 300, offset 0x4b00\n\t0x40648C20, 0x00000003, 0x4062AC22, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC23, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC24, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC25, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC26, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC27, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC28, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC29, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC2A, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC2B, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC2C, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC2D, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC2E, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC2F, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC30, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC31, 0x4063BA20,\n\t// Block 301, offset 0x4b40\n\t0x40648C20, 0x00000003, 0x4062AC32, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC33, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC34, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC35, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062AC36, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC37, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062AC38, 0x4063BA20, 0x40648C20, 0x00000002,\n\t0x4062AC21, 0x4063BC20, 0x00000002, 0x4062AC22, 0x4063BC20, 0x00000002,\n\t0x4062AC23, 0x4063BC20, 0x00000002, 0x4062AC24, 0x4063BC20, 0x00000002,\n\t0x4062AC25, 0x4063BC20, 0x00000002, 0x4062AC26, 0x4063BC20, 0x00000002,\n\t0x4062AC27, 0x4063BC20, 0x00000002, 0x4062AC21, 0x4063BE20, 0x00000002,\n\t0x4062AC22, 0x4063BE20, 0x00000002, 0x4062AC23, 0x4063BE20, 0x00000002,\n\t0x4062AC24, 0x4063BE20, 0x00000002, 0x4062AC25,\n\t// Block 302, offset 0x4b80\n\t0x4063BE20, 0x00000002, 0x4062AC26, 0x4063BE20, 0x00000002, 0x4062AC27,\n\t0x4063BE20, 0x00000002, 0x4062AC28, 0x4063BE20, 0x00000002, 0x4062AC29,\n\t0x4063BE20, 0x00000002, 0x4062AC2A, 0x4063BE20, 0x00000002, 0x4062AC2B,\n\t0x4063BE20, 0x00000002, 0x4062AC2C, 0x4063BE20, 0x00000002, 0x4062AC2D,\n\t0x4063BE20, 0x00000002, 0x4062AC2E, 0x4063BE20, 0x00000002, 0x4062AC2F,\n\t0x4063BE20, 0x00000002, 0x4062AC30, 0x4063BE20, 0x00000003, 0x4062AC21,\n\t0x4063BE20, 0x40646420, 0x00000003, 0x4062AC21, 0x4063BE20, 0x40648C20,\n\t0x00000003, 0x4062AC22, 0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC23,\n\t0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC24, 0x4063BE20, 0x40648C20,\n\t0x00000003, 0x4062AC25, 0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC26,\n\t0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC27,\n\t// Block 303, offset 0x4bc0\n\t0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC28, 0x4063BE20, 0x40648C20,\n\t0x00000002, 0x4062AC21, 0x4063C020, 0x00000002, 0x4062AC22, 0x4063C020,\n\t0x00000002, 0x4062AC23, 0x4063C020, 0x00000002, 0x4062AC24, 0x4063C020,\n\t0x00000002, 0x4062AC25, 0x4063C020, 0x00000002, 0x4062AC26, 0x4063C020,\n\t0x00000002, 0x4062AC27, 0x4063C020, 0x00000002, 0x4062AC28, 0x4063C020,\n\t0x00000002, 0x4062AC29, 0x4063C020, 0x00000002, 0x4062AC2A, 0x4063C020,\n\t0x00000002, 0x4062AC2B, 0x4063C020, 0x00000002, 0x4062AC2C, 0x4063C020,\n\t0x00000002, 0x4062AC2D, 0x4063C020, 0x00000002, 0x4062AC2E, 0x4063C020,\n\t0x00000002, 0x4062AC2F, 0x4063C020, 0x00000002, 0x4062AC30, 0x4063C020,\n\t0x00000002, 0x4062AC31, 0x4063C020, 0x00000002, 0x4062AC32, 0x4063C020,\n\t0x00000002, 0x4062AC33, 0x4063C020, 0x00000002,\n\t// Block 304, offset 0x4c00\n\t0x4062AC34, 0x4063C020, 0x00000002, 0x4062AC35, 0x4063C020, 0x00000002,\n\t0x4062AC36, 0x4063C020, 0x00000002, 0x4062AC37, 0x4063C020, 0x00000002,\n\t0x4062AC38, 0x4063C020, 0x00000002, 0x4062AC39, 0x4063C020, 0x00000002,\n\t0x4062AC3A, 0x4063C020, 0x00000002, 0x4062AC3B, 0x4063C020, 0x00000002,\n\t0x4062AC3C, 0x4063C020, 0x00000002, 0x4062AC3D, 0x4063C020, 0x00000002,\n\t0x4062AC3E, 0x4063C020, 0x00000002, 0x4062AC3F, 0x4063C020, 0x00000002,\n\t0x4062AC40, 0x4063C020, 0x00000002, 0x4062AC41, 0x4063C020, 0x00000002,\n\t0x4062AC42, 0x4063C020, 0x00000002, 0x4062AC43, 0x4063C020, 0x00000002,\n\t0x4062AC44, 0x4063C020, 0x00000002, 0x4062AC45, 0x4063C020, 0x00000002,\n\t0x4062AC46, 0x4063C020, 0x00000002, 0x4062AC47, 0x4063C020, 0x00000002,\n\t0x4062AC48, 0x4063C020, 0x00000002, 0x4062AC49,\n\t// Block 305, offset 0x4c40\n\t0x4063C020, 0x00000002, 0x4062AC4A, 0x4063C020, 0x00000002, 0x4062AC4B,\n\t0x4063C020, 0x00000002, 0x4062AC4C, 0x4063C020, 0x00000002, 0x4062AC21,\n\t0x4063C220, 0x00000002, 0x4062AC22, 0x4063C220, 0x00000002, 0x4062AC23,\n\t0x4063C220, 0x00000002, 0x4062AC24, 0x4063C220, 0x00000002, 0x4062AC25,\n\t0x4063C220, 0x00000002, 0x4062AC26, 0x4063C220, 0x00000002, 0x4062AC27,\n\t0x4063C220, 0x00000002, 0x4062AC28, 0x4063C220, 0x00000002, 0x4062AC29,\n\t0x4063C220, 0x00000002, 0x4062AC2A, 0x4063C220, 0x00000002, 0x4062AC2B,\n\t0x4063C220, 0x00000002, 0x4062AC2C, 0x4063C220, 0x00000002, 0x4062AC2D,\n\t0x4063C220, 0x00000002, 0x4062AC2E, 0x4063C220, 0x00000002, 0x4062AC2F,\n\t0x4063C220, 0x00000002, 0x4062AC30, 0x4063C220, 0x00000002, 0x4062AC31,\n\t0x4063C220, 0x00000002, 0x4062AC32, 0x4063C220,\n\t// Block 306, offset 0x4c80\n\t0x00000002, 0x4062AC33, 0x4063C220, 0x00000002, 0x4062AC34, 0x4063C220,\n\t0x00000002, 0x4062AC35, 0x4063C220, 0x00000002, 0x4062AC36, 0x4063C220,\n\t0x00000002, 0x4062AC37, 0x4063C220, 0x00000002, 0x4062AC38, 0x4063C220,\n\t0x00000002, 0x4062AC39, 0x4063C220, 0x00000002, 0x4062AC3A, 0x4063C220,\n\t0x00000002, 0x4062AC3B, 0x4063C220, 0x00000002, 0x4062AC3C, 0x4063C220,\n\t0x00000002, 0x4062AC3D, 0x4063C220, 0x00000002, 0x4062AC3E, 0x4063C220,\n\t0x00000002, 0x4062AC3F, 0x4063C220, 0x00000002, 0x4062AC40, 0x4063C220,\n\t0x00000002, 0x4062AC41, 0x4063C220, 0x00000002, 0x4062AC42, 0x4063C220,\n\t0x00000002, 0x4062AC43, 0x4063C220, 0x00000002, 0x4062AC44, 0x4063C220,\n\t0x00000002, 0x4062AC45, 0x4063C220, 0x00000002, 0x4062AC46, 0x4063C220,\n\t0x00000002, 0x4062AC47, 0x4063C220, 0x00000002,\n\t// Block 307, offset 0x4cc0\n\t0x4062AC48, 0x4063C220, 0x00000002, 0x4062AC49, 0x4063C220, 0x00000002,\n\t0x4062AC4A, 0x4063C220, 0x00000002, 0x4062AC4B, 0x4063C220, 0x00000002,\n\t0x4062AC4C, 0x4063C220, 0x00000002, 0x4062AC4D, 0x4063C220, 0x00000002,\n\t0x4062AC4E, 0x4063C220, 0x00000002, 0x4062AC4F, 0x4063C220, 0x00000002,\n\t0x4062AC50, 0x4063C220, 0x00000002, 0x4062AC51, 0x4063C220, 0x00000002,\n\t0x4062AC52, 0x4063C220, 0x00000002, 0x4062AC53, 0x4063C220, 0x00000002,\n\t0x4062AC54, 0x4063C220, 0x00000002, 0x4062AC55, 0x4063C220, 0x00000002,\n\t0x4062AC56, 0x4063C220, 0x00000002, 0x4062AC57, 0x4063C220, 0x00000002,\n\t0x4062AC58, 0x4063C220, 0x00000002, 0x4062AC59, 0x4063C220, 0x00000002,\n\t0x4062AC5A, 0x4063C220, 0x00000002, 0x4062AC5B, 0x4063C220, 0x00000002,\n\t0x4062AC5C, 0x4063C220, 0x00000002, 0x4062AC5D,\n\t// Block 308, offset 0x4d00\n\t0x4063C220, 0x00000002, 0x4062AC5E, 0x4063C220, 0x00000002, 0x4062AC5F,\n\t0x4063C220, 0x00000002, 0x4062AC60, 0x4063C220, 0x00000002, 0x4062AC61,\n\t0x4063C220, 0x00000002, 0x4062AC62, 0x4063C220, 0x00000002, 0x4062AC63,\n\t0x4063C220, 0x00000002, 0x4062AC64, 0x4063C220, 0x00000002, 0x4062AC65,\n\t0x4063C220, 0x00000002, 0x4062AC66, 0x4063C220, 0x00000002, 0x4062AC67,\n\t0x4063C220, 0x00000002, 0x4062AC68, 0x4063C220, 0x00000002, 0x4062AC69,\n\t0x4063C220, 0x00000002, 0x4062AC6A, 0x4063C220, 0x00000002, 0x4062AC6B,\n\t0x4063C220, 0x00000002, 0x4062AC6C, 0x4063C220, 0x00000002, 0x4062AC6D,\n\t0x4063C220, 0x00000002, 0x4062AC6E, 0x4063C220, 0x00000002, 0x4062AC6F,\n\t0x4063C220, 0x00000002, 0x4062AC70, 0x4063C220, 0x00000002, 0x4062AC71,\n\t0x4063C220, 0x00000002, 0x4062AC72, 0x4063C220,\n\t// Block 309, offset 0x4d40\n\t0x00000002, 0x4062AC73, 0x4063C220, 0x00000002, 0x4062AC74, 0x4063C220,\n\t0x00000002, 0x4062AC75, 0x4063C220, 0x00000002, 0x4062AC76, 0x4063C220,\n\t0x00000002, 0x4062AC77, 0x4063C220, 0x00000002, 0x4062AC78, 0x4063C220,\n\t0x00000002, 0x4062AC79, 0x4063C220, 0x00000002, 0x4062AC7A, 0x4063C220,\n\t0x00000002, 0x4062AC7B, 0x4063C220, 0x00000002, 0x4062AC7C, 0x4063C220,\n\t0x00000002, 0x4062AC7D, 0x4063C220, 0x00000002, 0x4062AC7E, 0x4063C220,\n\t0x00000002, 0x4062AC7F, 0x4063C220, 0x00000002, 0x4062AC80, 0x4063C220,\n\t0x00000002, 0x4062AC81, 0x4063C220, 0x00000002, 0x4062AC82, 0x4063C220,\n\t0x00000002, 0x4062AC83, 0x4063C220, 0x00000002, 0x4062AC84, 0x4063C220,\n\t0x00000002, 0x4062AC85, 0x4063C220, 0x00000002, 0x4062AC86, 0x4063C220,\n\t0x00000002, 0x4062AC87, 0x4063C220, 0x00000003,\n\t// Block 310, offset 0x4d80\n\t0x4062AC21, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC22, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062AC23, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062AC24, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC25, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062AC26, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062AC27, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC28, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062AC29, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062AC2A, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC21, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062AC22, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062AC23, 0x4063C220, 0x40646A20, 0x00000003, 0x4062AC24, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062AC25, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062AC26, 0x4063C220, 0x40646A20, 0x00000003,\n\t// Block 311, offset 0x4dc0\n\t0x4062AC27, 0x4063C220, 0x40646A20, 0x00000003, 0x4062AC28, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062AC29, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062AC21, 0x4063C220, 0x40647220, 0x00000003, 0x4062AC22, 0x4063C220,\n\t0x40647220, 0x00000003, 0x4062AC23, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062AC24, 0x4063C220, 0x40647220, 0x00000003, 0x4062AC25, 0x4063C220,\n\t0x40647220, 0x00000003, 0x4062AC26, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062AC27, 0x4063C220, 0x40647220, 0x00000003, 0x4062AC28, 0x4063C220,\n\t0x40647220, 0x00000003, 0x4062AC21, 0x4063C220, 0x40648C20, 0x00000003,\n\t0x4062AC22, 0x4063C220, 0x40648C20, 0x00000003, 0x4062AC23, 0x4063C220,\n\t0x40648C20, 0x00000003, 0x4062AC24, 0x4063C220, 0x40648C20, 0x00000003,\n\t0x4062AC25, 0x4063C220, 0x40648C20, 0x00000003,\n\t// Block 312, offset 0x4e00\n\t0x4062AC26, 0x4063C220, 0x40648C20, 0x00000003, 0x4062AC27, 0x4063C220,\n\t0x40648C20, 0x00000003, 0x4062AC21, 0x4063C420, 0x40646A20, 0x00000003,\n\t0x4062AC22, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC23, 0x4063C420,\n\t0x40646A20, 0x00000003, 0x4062AC24, 0x4063C420, 0x40646A20, 0x00000003,\n\t0x4062AC25, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC26, 0x4063C420,\n\t0x40646A20, 0x00000003, 0x4062AC27, 0x4063C420, 0x40646A20, 0x00000003,\n\t0x4062AC28, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063C420,\n\t0x40646A20, 0x00000003, 0x4062AC2A, 0x4063C420, 0x40646A20, 0x00000003,\n\t0x4062AC2B, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC2C, 0x4063C420,\n\t0x40646A20, 0x00000003, 0x4062AC2D, 0x4063C420, 0x40646A20, 0x00000003,\n\t0x4062AC2E, 0x4063C420, 0x40646A20, 0x00000003,\n\t// Block 313, offset 0x4e40\n\t0x4062AC2F, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC30, 0x4063C420,\n\t0x40646A20, 0x00000003, 0x4062AC21, 0x4063C420, 0x40647220, 0x00000003,\n\t0x4062AC22, 0x4063C420, 0x40647220, 0x00000003, 0x4062AC23, 0x4063C420,\n\t0x40647220, 0x00000003, 0x4062AC24, 0x4063C420, 0x40647220, 0x00000003,\n\t0x4062AC25, 0x4063C420, 0x40647220, 0x00000002, 0x4062AC21, 0x4063C620,\n\t0x00000002, 0x4062AC22, 0x4063C620, 0x00000002, 0x4062AC23, 0x4063C620,\n\t0x00000002, 0x4062AC24, 0x4063C620, 0x00000002, 0x4062AC25, 0x4063C620,\n\t0x00000002, 0x4062AC26, 0x4063C620, 0x00000002, 0x4062AC27, 0x4063C620,\n\t0x00000002, 0x4062AC28, 0x4063C620, 0x00000002, 0x4062AC29, 0x4063C620,\n\t0x00000002, 0x4062AC2A, 0x4063C620, 0x00000002, 0x4062AC2B, 0x4063C620,\n\t0x00000002, 0x4062AC2C, 0x4063C620, 0x00000002,\n\t// Block 314, offset 0x4e80\n\t0x4062AC2D, 0x4063C620, 0x00000002, 0x4062AC2E, 0x4063C620, 0x00000002,\n\t0x4062AC2F, 0x4063C620, 0x00000002, 0x4062AC30, 0x4063C620, 0x00000002,\n\t0x4062AC31, 0x4063C620, 0x00000002, 0x4062AC32, 0x4063C620, 0x00000002,\n\t0x4062AC33, 0x4063C620, 0x00000002, 0x4062AC34, 0x4063C620, 0x00000002,\n\t0x4062AC21, 0x4063C820, 0x00000002, 0x4062AC22, 0x4063C820, 0x00000002,\n\t0x4062AC23, 0x4063C820, 0x00000002, 0x4062AC24, 0x4063C820, 0x00000002,\n\t0x4062AC21, 0x4063CA20, 0x00000002, 0x4062AC22, 0x4063CA20, 0x00000002,\n\t0x4062AC23, 0x4063CA20, 0x00000002, 0x4062AC24, 0x4063CA20, 0x00000002,\n\t0x4062AC25, 0x4063CA20, 0x00000002, 0x4062AC26, 0x4063CA20, 0x00000002,\n\t0x4062AC27, 0x4063CA20, 0x00000002, 0x4062AC28, 0x4063CA20, 0x00000002,\n\t0x4062AC29, 0x4063CA20, 0x00000002, 0x4062AC2A,\n\t// Block 315, offset 0x4ec0\n\t0x4063CA20, 0x00000002, 0x4062AC2B, 0x4063CA20, 0x00000002, 0x4062AC2C,\n\t0x4063CA20, 0x00000002, 0x4062AC2D, 0x4063CA20, 0x00000002, 0x4062AC2E,\n\t0x4063CA20, 0x00000002, 0x4062AC2F, 0x4063CA20, 0x00000002, 0x4062AC30,\n\t0x4063CA20, 0x00000002, 0x4062AC31, 0x4063CA20, 0x00000002, 0x4062AC32,\n\t0x4063CA20, 0x00000002, 0x4062AC33, 0x4063CA20, 0x00000002, 0x4062AC34,\n\t0x4063CA20, 0x00000002, 0x4062AC35, 0x4063CA20, 0x00000002, 0x4062AC36,\n\t0x4063CA20, 0x00000002, 0x4062AC37, 0x4063CA20, 0x00000002, 0x4062AC38,\n\t0x4063CA20, 0x00000002, 0x4062AC39, 0x4063CA20, 0x00000002, 0x4062AC3A,\n\t0x4063CA20, 0x00000002, 0x4062AC3B, 0x4063CA20, 0x00000002, 0x4062AC3C,\n\t0x4063CA20, 0x00000002, 0x4062AC3D, 0x4063CA20, 0x00000002, 0x4062AC3E,\n\t0x4063CA20, 0x00000002, 0x4062AC3F, 0x4063CA20,\n\t// Block 316, offset 0x4f00\n\t0x00000002, 0x4062AC40, 0x4063CA20, 0x00000003, 0x4062AC21, 0x4063CA20,\n\t0x40646A20, 0x00000003, 0x4062AC22, 0x4063CA20, 0x40646A20, 0x00000003,\n\t0x4062AC23, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC24, 0x4063CA20,\n\t0x40646A20, 0x00000003, 0x4062AC25, 0x4063CA20, 0x40646A20, 0x00000003,\n\t0x4062AC26, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC27, 0x4063CA20,\n\t0x40646A20, 0x00000003, 0x4062AC28, 0x4063CA20, 0x40646A20, 0x00000003,\n\t0x4062AC21, 0x4063CA20, 0x40647220, 0x00000003, 0x4062AC21, 0x4063CC20,\n\t0x40646420, 0x00000003, 0x4062AC22, 0x4063CC20, 0x40646420, 0x00000003,\n\t0x4062AC23, 0x4063CC20, 0x40646420, 0x00000003, 0x4062AC24, 0x4063CC20,\n\t0x40646420, 0x00000003, 0x4062AC25, 0x4063CC20, 0x40646420, 0x00000003,\n\t0x4062AC26, 0x4063CC20, 0x40646420, 0x00000003,\n\t// Block 317, offset 0x4f40\n\t0x4062AC27, 0x4063CC20, 0x40646420, 0x00000003, 0x4062AC28, 0x4063CC20,\n\t0x40646420, 0x00000003, 0x4062AC29, 0x4063CC20, 0x40646420, 0x00000003,\n\t0x4062AC2A, 0x4063CC20, 0x40646420, 0x00000003, 0x4062AC2B, 0x4063CC20,\n\t0x40646420, 0x00000003, 0x4062AC21, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC22, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC23, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC24, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC25, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC26, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC27, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC28, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC2A, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC2B, 0x4063CC20, 0x40646A20, 0x00000003,\n\t// Block 318, offset 0x4f80\n\t0x4062AC2C, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC2D, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC2E, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC2F, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC30, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC31, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC32, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC33, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC34, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC35, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC36, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC37, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062AC38, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC39, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062AC21, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062AC22, 0x4063CC20, 0x40648220, 0x00000003,\n\t// Block 319, offset 0x4fc0\n\t0x4062AC23, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC24, 0x4063CC20,\n\t0x40648220, 0x00000003, 0x4062AC25, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062AC26, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC27, 0x4063CC20,\n\t0x40648220, 0x00000003, 0x4062AC28, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062AC29, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC2A, 0x4063CC20,\n\t0x40648220, 0x00000003, 0x4062AC2B, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062AC2C, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC2D, 0x4063CC20,\n\t0x40648220, 0x00000003, 0x4062AC2E, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062AC2F, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC30, 0x4063CC20,\n\t0x40648220, 0x00000003, 0x4062AC31, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062AC32, 0x4063CC20, 0x40648220, 0x00000003,\n\t// Block 320, offset 0x5000\n\t0x4062AC21, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC22, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062AC23, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062AC24, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC25, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062AC26, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062AC27, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC28, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062AC29, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062AC2A, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC2B, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062AC2C, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062AC2D, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC21, 0x4063CC20,\n\t0x40648C20, 0x00000003, 0x4062AC22, 0x4063CC20, 0x40648C20, 0x00000003,\n\t0x4062AC23, 0x4063CC20, 0x40648C20, 0x00000003,\n\t// Block 321, offset 0x5040\n\t0x4062AC24, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063CC20,\n\t0x40648C20, 0x00000003, 0x4062AC26, 0x4063CC20, 0x40648C20, 0x00000002,\n\t0x4062AC21, 0x4063D020, 0x00000002, 0x4062AC22, 0x4063D020, 0x00000002,\n\t0x4062AC23, 0x4063D020, 0x00000002, 0x4062AC24, 0x4063D020, 0x00000002,\n\t0x4062AC25, 0x4063D020, 0x00000002, 0x4062AC26, 0x4063D020, 0x00000002,\n\t0x4062AC27, 0x4063D020, 0x00000002, 0x4062AC28, 0x4063D020, 0x00000002,\n\t0x4062AC29, 0x4063D020, 0x00000002, 0x4062AC2A, 0x4063D020, 0x00000002,\n\t0x4062AC2B, 0x4063D020, 0x00000002, 0x4062AC2C, 0x4063D020, 0x00000002,\n\t0x4062AC2D, 0x4063D020, 0x00000002, 0x4062AC2E, 0x4063D020, 0x00000002,\n\t0x4062AC2F, 0x4063D020, 0x00000002, 0x4062AC30, 0x4063D020, 0x00000002,\n\t0x4062AC31, 0x4063D020, 0x00000002, 0x4062AC32,\n\t// Block 322, offset 0x5080\n\t0x4063D020, 0x00000002, 0x4062AC33, 0x4063D020, 0x00000002, 0x4062AC34,\n\t0x4063D020, 0x00000002, 0x4062AC35, 0x4063D020, 0x00000002, 0x4062AC36,\n\t0x4063D020, 0x00000002, 0x4062AC37, 0x4063D020, 0x00000002, 0x4062AC38,\n\t0x4063D020, 0x00000002, 0x4062AC39, 0x4063D020, 0x00000002, 0x4062AC3A,\n\t0x4063D020, 0x00000002, 0x4062AC3B, 0x4063D020, 0x00000002, 0x4062AC3C,\n\t0x4063D020, 0x00000002, 0x4062AC3D, 0x4063D020, 0x00000002, 0x4062AC3E,\n\t0x4063D020, 0x00000002, 0x4062AC3F, 0x4063D020, 0x00000002, 0x4062AC40,\n\t0x4063D020, 0x00000002, 0x4062AC41, 0x4063D020, 0x00000002, 0x4062AC42,\n\t0x4063D020, 0x00000002, 0x4062AC43, 0x4063D020, 0x00000002, 0x4062AC44,\n\t0x4063D020, 0x00000002, 0x4062AC45, 0x4063D020, 0x00000002, 0x4062AC46,\n\t0x4063D020, 0x00000002, 0x4062AC47, 0x4063D020,\n\t// Block 323, offset 0x50c0\n\t0x00000002, 0x4062AC48, 0x4063D020, 0x00000002, 0x4062AC49, 0x4063D020,\n\t0x00000002, 0x4062AC4A, 0x4063D020, 0x00000002, 0x4062AC4B, 0x4063D020,\n\t0x00000002, 0x4062AC4C, 0x4063D020, 0x00000002, 0x4062AC4D, 0x4063D020,\n\t0x00000002, 0x4062AC4E, 0x4063D020, 0x00000002, 0x4062AC4F, 0x4063D020,\n\t0x00000002, 0x4062AC50, 0x4063D020, 0x00000002, 0x4062AC51, 0x4063D020,\n\t0x00000002, 0x4062AC52, 0x4063D020, 0x00000002, 0x4062AC53, 0x4063D020,\n\t0x00000002, 0x4062AC54, 0x4063D020, 0x00000002, 0x4062AC55, 0x4063D020,\n\t0x00000002, 0x4062AC56, 0x4063D020, 0x00000002, 0x4062AC57, 0x4063D020,\n\t0x00000002, 0x4062AC58, 0x4063D020, 0x00000002, 0x4062AC59, 0x4063D020,\n\t0x00000002, 0x4062AC5A, 0x4063D020, 0x00000002, 0x4062AC5B, 0x4063D020,\n\t0x00000002, 0x4062AC5C, 0x4063D020, 0x00000002,\n\t// Block 324, offset 0x5100\n\t0x4062AC5D, 0x4063D020, 0x00000002, 0x4062AC5E, 0x4063D020, 0x00000002,\n\t0x4062AC5F, 0x4063D020, 0x00000002, 0x4062AC60, 0x4063D020, 0x00000002,\n\t0x4062AC61, 0x4063D020, 0x00000002, 0x4062AC62, 0x4063D020, 0x00000002,\n\t0x4062AC63, 0x4063D020, 0x00000002, 0x4062AC64, 0x4063D020, 0x00000002,\n\t0x4062AC65, 0x4063D020, 0x00000002, 0x4062AC66, 0x4063D020, 0x00000002,\n\t0x4062AC67, 0x4063D020, 0x00000002, 0x4062AC68, 0x4063D020, 0x00000002,\n\t0x4062AC69, 0x4063D020, 0x00000002, 0x4062AC6A, 0x4063D020, 0x00000002,\n\t0x4062AC6B, 0x4063D020, 0x00000002, 0x4062AC6C, 0x4063D020, 0x00000002,\n\t0x4062AC6D, 0x4063D020, 0x00000002, 0x4062AC6E, 0x4063D020, 0x00000002,\n\t0x4062AC6F, 0x4063D020, 0x00000002, 0x4062AC70, 0x4063D020, 0x00000002,\n\t0x4062AC71, 0x4063D020, 0x00000002, 0x4062AC72,\n\t// Block 325, offset 0x5140\n\t0x4063D020, 0x00000002, 0x4062AC73, 0x4063D020, 0x00000002, 0x4062AC74,\n\t0x4063D020, 0x00000002, 0x4062AC75, 0x4063D020, 0x00000002, 0x4062AC76,\n\t0x4063D020, 0x00000002, 0x4062AC77, 0x4063D020, 0x00000002, 0x4062AC78,\n\t0x4063D020, 0x00000002, 0x4062AC79, 0x4063D020, 0x00000002, 0x4062AC7A,\n\t0x4063D020, 0x00000002, 0x4062AC7B, 0x4063D020, 0x00000002, 0x4062AC7C,\n\t0x4063D020, 0x00000002, 0x4062AC7D, 0x4063D020, 0x00000002, 0x4062AC7E,\n\t0x4063D020, 0x00000002, 0x4062AC7F, 0x4063D020, 0x00000002, 0x4062AC80,\n\t0x4063D020, 0x00000002, 0x4062AC81, 0x4063D020, 0x00000002, 0x4062AC82,\n\t0x4063D020, 0x00000002, 0x4062AC83, 0x4063D020, 0x00000002, 0x4062AC84,\n\t0x4063D020, 0x00000003, 0x4062AC21, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062AC21, 0x4063D020, 0x40647220, 0x00000003,\n\t// Block 326, offset 0x5180\n\t0x4062AC22, 0x4063D020, 0x40647220, 0x00000003, 0x4062AC23, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062AC24, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062AC25, 0x4063D020, 0x40647220, 0x00000003, 0x4062AC26, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062AC21, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062AE21, 0x4063D020, 0x40646420, 0x00000002, 0x4062B021, 0x4063A820,\n\t0x00000002, 0x4062B022, 0x4063A820, 0x00000002, 0x4062B023, 0x4063A820,\n\t0x00000002, 0x4062B024, 0x4063A820, 0x00000002, 0x4062B025, 0x4063A820,\n\t0x00000002, 0x4062B026, 0x4063A820, 0x00000002, 0x4062B027, 0x4063A820,\n\t0x00000002, 0x4062B028, 0x4063A820, 0x00000002, 0x4062B029, 0x4063A820,\n\t0x00000002, 0x4062B02A, 0x4063A820, 0x00000002, 0x4062B02B, 0x4063A820,\n\t0x00000003, 0x4062B021, 0x4063A820, 0x40646420,\n\t// Block 327, offset 0x51c0\n\t0x00000003, 0x4062B021, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B022,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B023, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B024, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B025,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B026, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B027, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B021,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062B022, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062B021, 0x4063A820, 0x40648220, 0x00000003, 0x4062B022,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B023, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B024, 0x4063A820, 0x40648220, 0x00000003, 0x4062B025,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B026, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B027, 0x4063A820, 0x40648220,\n\t// Block 328, offset 0x5200\n\t0x00000003, 0x4062B021, 0x4063A820, 0x40648420, 0x00000003, 0x4062B022,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062B021, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B022, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B023,\n\t0x4063A820, 0x40648C20, 0x00000002, 0x4062B021, 0x4063AA20, 0x00000002,\n\t0x4062B022, 0x4063AA20, 0x00000002, 0x4062B023, 0x4063AA20, 0x00000002,\n\t0x4062B024, 0x4063AA20, 0x00000002, 0x4062B025, 0x4063AA20, 0x00000002,\n\t0x4062B026, 0x4063AA20, 0x00000002, 0x4062B027, 0x4063AA20, 0x00000002,\n\t0x4062B028, 0x4063AA20, 0x00000002, 0x4062B029, 0x4063AA20, 0x00000002,\n\t0x4062B02A, 0x4063AA20, 0x00000002, 0x4062B021, 0x4063B420, 0x00000003,\n\t0x4062B021, 0x4063B420, 0x40646420, 0x00000003, 0x4062B021, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062B022, 0x4063B420,\n\t// Block 329, offset 0x5240\n\t0x40646A20, 0x00000003, 0x4062B023, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062B024, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B021, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062B022, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062B023, 0x4063B420, 0x40648220, 0x00000003, 0x4062B024, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062B021, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062B022, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B023, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062B024, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062B025, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B026, 0x4063B420,\n\t0x40648C20, 0x00000002, 0x4062B021, 0x4063B820, 0x00000002, 0x4062B022,\n\t0x4063B820, 0x00000002, 0x4062B023, 0x4063B820, 0x00000002, 0x4062B024,\n\t0x4063B820, 0x00000002, 0x4062B025, 0x4063B820,\n\t// Block 330, offset 0x5280\n\t0x00000002, 0x4062B026, 0x4063B820, 0x00000002, 0x4062B027, 0x4063B820,\n\t0x00000002, 0x4062B028, 0x4063B820, 0x00000002, 0x4062B029, 0x4063B820,\n\t0x00000002, 0x4062B02A, 0x4063B820, 0x00000002, 0x4062B02B, 0x4063B820,\n\t0x00000002, 0x4062B02C, 0x4063B820, 0x00000003, 0x4062B021, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B022, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B023, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B024, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B025, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B026, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B027, 0x4063B820,\n\t0x40648C20, 0x00000002, 0x4062B021, 0x4063BE20, 0x00000002, 0x4062B022,\n\t0x4063BE20, 0x00000002, 0x4062B023, 0x4063BE20, 0x00000002, 0x4062B021,\n\t0x4063C020, 0x00000002, 0x4062B022, 0x4063C020,\n\t// Block 331, offset 0x52c0\n\t0x00000002, 0x4062B023, 0x4063C020, 0x00000002, 0x4062B024, 0x4063C020,\n\t0x00000002, 0x4062B025, 0x4063C020, 0x00000002, 0x4062B026, 0x4063C020,\n\t0x00000002, 0x4062B027, 0x4063C020, 0x00000002, 0x4062B021, 0x4063C220,\n\t0x00000002, 0x4062B022, 0x4063C220, 0x00000003, 0x4062B021, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B021, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062B022, 0x4063C220, 0x40647220, 0x00000003, 0x4062B023, 0x4063C220,\n\t0x40647220, 0x00000002, 0x4062B021, 0x4063CA20, 0x00000002, 0x4062B022,\n\t0x4063CA20, 0x00000002, 0x4062B023, 0x4063CA20, 0x00000002, 0x4062B024,\n\t0x4063CA20, 0x00000003, 0x4062B021, 0x4063CA20, 0x40646420, 0x00000003,\n\t0x4062B021, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062B021, 0x4063D020,\n\t0x00000002, 0x4062B022, 0x4063D020, 0x00000002,\n\t// Block 332, offset 0x5300\n\t0x4062B023, 0x4063D020, 0x00000002, 0x4062B024, 0x4063D020, 0x00000002,\n\t0x4062B025, 0x4063D020, 0x00000002, 0x4062B026, 0x4063D020, 0x00000002,\n\t0x4062B027, 0x4063D020, 0x00000002, 0x4062B028, 0x4063D020, 0x00000003,\n\t0x4062B021, 0x4063D020, 0x40646420, 0x00000003, 0x4062B022, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062B023, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062B024, 0x4063D020, 0x40646420, 0x00000002, 0x4062B221, 0x4063A820,\n\t0x00000002, 0x4062B222, 0x4063A820, 0x00000002, 0x4062B223, 0x4063A820,\n\t0x00000003, 0x4062B221, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B222,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B223, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B224, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B225,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B226,\n\t// Block 333, offset 0x5340\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B227, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B228, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B229,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B22A, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B22B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B22C,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B22D, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B22E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B22F,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B230, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B231, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B232,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B233, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B234, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B235,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B236,\n\t// Block 334, offset 0x5380\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B237, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B238, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B239,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B23A, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B23B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B23C,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062B23D, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062B221, 0x4063A820, 0x40647220, 0x00000003, 0x4062B222,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062B223, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062B224, 0x4063A820, 0x40647220, 0x00000003, 0x4062B225,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062B226, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062B227, 0x4063A820, 0x40647220, 0x00000003, 0x4062B228,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062B229,\n\t// Block 335, offset 0x53c0\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062B22A, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062B221, 0x4063A820, 0x40648220, 0x00000003, 0x4062B222,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B223, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B224, 0x4063A820, 0x40648220, 0x00000003, 0x4062B225,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B226, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B227, 0x4063A820, 0x40648220, 0x00000003, 0x4062B228,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B229, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B22A, 0x4063A820, 0x40648220, 0x00000003, 0x4062B22B,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B22C, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B22D, 0x4063A820, 0x40648220, 0x00000003, 0x4062B22E,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B22F,\n\t// Block 336, offset 0x5400\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B230, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B231, 0x4063A820, 0x40648220, 0x00000003, 0x4062B232,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B233, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B234, 0x4063A820, 0x40648220, 0x00000003, 0x4062B235,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B236, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B237, 0x4063A820, 0x40648220, 0x00000003, 0x4062B238,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B239, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B23A, 0x4063A820, 0x40648220, 0x00000003, 0x4062B23B,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062B23C, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062B23D, 0x4063A820, 0x40648220, 0x00000003, 0x4062B221,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062B222,\n\t// Block 337, offset 0x5440\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062B223, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062B224, 0x4063A820, 0x40648420, 0x00000003, 0x4062B225,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062B221, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B222, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B223,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B224, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B225, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B226,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B227, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B228, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B229,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B22A, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B22B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B22C,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B22D,\n\t// Block 338, offset 0x5480\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B22E, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B22F, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B230,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B231, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B232, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B233,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B234, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B235, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B236,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B237, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B238, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B239,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062B23A, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062B23B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B23C,\n\t0x4063A820, 0x40648C20, 0x00000002, 0x4062B221,\n\t// Block 339, offset 0x54c0\n\t0x4063AA20, 0x00000002, 0x4062B222, 0x4063AA20, 0x00000002, 0x4062B223,\n\t0x4063AA20, 0x00000002, 0x4062B224, 0x4063AA20, 0x00000002, 0x4062B225,\n\t0x4063AA20, 0x00000002, 0x4062B226, 0x4063AA20, 0x00000002, 0x4062B227,\n\t0x4063AA20, 0x00000002, 0x4062B228, 0x4063AA20, 0x00000002, 0x4062B229,\n\t0x4063AA20, 0x00000002, 0x4062B22A, 0x4063AA20, 0x00000002, 0x4062B22B,\n\t0x4063AA20, 0x00000002, 0x4062B22C, 0x4063AA20, 0x00000002, 0x4062B22D,\n\t0x4063AA20, 0x00000002, 0x4062B22E, 0x4063AA20, 0x00000002, 0x4062B22F,\n\t0x4063AA20, 0x00000002, 0x4062B230, 0x4063AA20, 0x00000002, 0x4062B231,\n\t0x4063AA20, 0x00000002, 0x4062B232, 0x4063AA20, 0x00000002, 0x4062B233,\n\t0x4063AA20, 0x00000002, 0x4062B234, 0x4063AA20, 0x00000002, 0x4062B235,\n\t0x4063AA20, 0x00000002, 0x4062B236, 0x4063AA20,\n\t// Block 340, offset 0x5500\n\t0x00000003, 0x4062B221, 0x4063AA20, 0x40646420, 0x00000003, 0x4062B221,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062B222, 0x4063B020, 0x40646420,\n\t0x00000002, 0x4062B221, 0x4063B820, 0x00000002, 0x4062B222, 0x4063B820,\n\t0x00000002, 0x4062B223, 0x4063B820, 0x00000002, 0x4062B224, 0x4063B820,\n\t0x00000002, 0x4062B225, 0x4063B820, 0x00000002, 0x4062B226, 0x4063B820,\n\t0x00000002, 0x4062B227, 0x4063B820, 0x00000002, 0x4062B228, 0x4063B820,\n\t0x00000002, 0x4062B229, 0x4063B820, 0x00000002, 0x4062B22A, 0x4063B820,\n\t0x00000002, 0x4062B22B, 0x4063B820, 0x00000002, 0x4062B22C, 0x4063B820,\n\t0x00000002, 0x4062B22D, 0x4063B820, 0x00000002, 0x4062B22E, 0x4063B820,\n\t0x00000002, 0x4062B22F, 0x4063B820, 0x00000002, 0x4062B230, 0x4063B820,\n\t0x00000002, 0x4062B231, 0x4063B820, 0x00000002,\n\t// Block 341, offset 0x5540\n\t0x4062B232, 0x4063B820, 0x00000002, 0x4062B233, 0x4063B820, 0x00000002,\n\t0x4062B234, 0x4063B820, 0x00000002, 0x4062B235, 0x4063B820, 0x00000002,\n\t0x4062B236, 0x4063B820, 0x00000002, 0x4062B237, 0x4063B820, 0x00000002,\n\t0x4062B238, 0x4063B820, 0x00000002, 0x4062B239, 0x4063B820, 0x00000002,\n\t0x4062B23A, 0x4063B820, 0x00000002, 0x4062B23B, 0x4063B820, 0x00000002,\n\t0x4062B23C, 0x4063B820, 0x00000002, 0x4062B23D, 0x4063B820, 0x00000002,\n\t0x4062B23E, 0x4063B820, 0x00000002, 0x4062B23F, 0x4063B820, 0x00000002,\n\t0x4062B240, 0x4063B820, 0x00000002, 0x4062B241, 0x4063B820, 0x00000002,\n\t0x4062B242, 0x4063B820, 0x00000002, 0x4062B243, 0x4063B820, 0x00000002,\n\t0x4062B244, 0x4063B820, 0x00000002, 0x4062B245, 0x4063B820, 0x00000002,\n\t0x4062B246, 0x4063B820, 0x00000002, 0x4062B247,\n\t// Block 342, offset 0x5580\n\t0x4063B820, 0x00000002, 0x4062B248, 0x4063B820, 0x00000002, 0x4062B249,\n\t0x4063B820, 0x00000002, 0x4062B24A, 0x4063B820, 0x00000002, 0x4062B24B,\n\t0x4063B820, 0x00000002, 0x4062B24C, 0x4063B820, 0x00000002, 0x4062B24D,\n\t0x4063B820, 0x00000002, 0x4062B24E, 0x4063B820, 0x00000002, 0x4062B24F,\n\t0x4063B820, 0x00000002, 0x4062B250, 0x4063B820, 0x00000002, 0x4062B251,\n\t0x4063B820, 0x00000002, 0x4062B252, 0x4063B820, 0x00000002, 0x4062B253,\n\t0x4063B820, 0x00000002, 0x4062B254, 0x4063B820, 0x00000002, 0x4062B255,\n\t0x4063B820, 0x00000002, 0x4062B256, 0x4063B820, 0x00000002, 0x4062B257,\n\t0x4063B820, 0x00000002, 0x4062B258, 0x4063B820, 0x00000002, 0x4062B259,\n\t0x4063B820, 0x00000002, 0x4062B25A, 0x4063B820, 0x00000002, 0x4062B25B,\n\t0x4063B820, 0x00000003, 0x4062B221, 0x4063B820,\n\t// Block 343, offset 0x55c0\n\t0x40646420, 0x00000003, 0x4062B222, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062B223, 0x4063B820, 0x40646420, 0x00000003, 0x4062B224, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062B225, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062B226, 0x4063B820, 0x40646420, 0x00000003, 0x4062B227, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062B228, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062B229, 0x4063B820, 0x40646420, 0x00000003, 0x4062B22A, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062B22B, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062B22C, 0x4063B820, 0x40646420, 0x00000003, 0x4062B221, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062B222, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062B223, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B224, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062B225, 0x4063B820,\n\t// Block 344, offset 0x5600\n\t0x40646A20, 0x00000003, 0x4062B226, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062B227, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B228, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062B229, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062B22A, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B22B, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062B22C, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062B22D, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B221, 0x4063B820,\n\t0x40647220, 0x00000003, 0x4062B222, 0x4063B820, 0x40647220, 0x00000003,\n\t0x4062B223, 0x4063B820, 0x40647220, 0x00000003, 0x4062B224, 0x4063B820,\n\t0x40647220, 0x00000003, 0x4062B221, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B222, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B223, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B224, 0x4063B820,\n\t// Block 345, offset 0x5640\n\t0x40648C20, 0x00000003, 0x4062B225, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B226, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B227, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B228, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B229, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B22A, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B22B, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B22C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B22D, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B22E, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B22F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B230, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B231, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B232, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B233, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B234, 0x4063B820,\n\t// Block 346, offset 0x5680\n\t0x40648C20, 0x00000003, 0x4062B235, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B236, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B237, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B238, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B239, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B23A, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B23B, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B23C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B23D, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B23E, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062B23F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B240, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062B241, 0x4063B820, 0x40648C20, 0x00000002,\n\t0x4062B221, 0x4063C220, 0x00000002, 0x4062B222, 0x4063C220, 0x00000002,\n\t0x4062B223, 0x4063C220, 0x00000002, 0x4062B224,\n\t// Block 347, offset 0x56c0\n\t0x4063C220, 0x00000002, 0x4062B225, 0x4063C220, 0x00000002, 0x4062B226,\n\t0x4063C220, 0x00000002, 0x4062B227, 0x4063C220, 0x00000002, 0x4062B228,\n\t0x4063C220, 0x00000002, 0x4062B229, 0x4063C220, 0x00000002, 0x4062B22A,\n\t0x4063C220, 0x00000002, 0x4062B22B, 0x4063C220, 0x00000002, 0x4062B22C,\n\t0x4063C220, 0x00000002, 0x4062B22D, 0x4063C220, 0x00000002, 0x4062B22E,\n\t0x4063C220, 0x00000002, 0x4062B22F, 0x4063C220, 0x00000002, 0x4062B230,\n\t0x4063C220, 0x00000002, 0x4062B231, 0x4063C220, 0x00000003, 0x4062B221,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062B222, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062B223, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B224,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062B225, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062B226, 0x4063C220, 0x40646A20,\n\t// Block 348, offset 0x5700\n\t0x00000003, 0x4062B227, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B228,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062B221, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062B221, 0x4063CC20, 0x40646420, 0x00000003, 0x4062B221,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B222, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B223, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B224,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B225, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B226, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B227,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B228, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B229, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B22A,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B22B, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B22C, 0x4063CC20, 0x40648C20,\n\t// Block 349, offset 0x5740\n\t0x00000003, 0x4062B22D, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B22E,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B22F, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B230, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B231,\n\t0x4063CC20, 0x40648C20, 0x00000002, 0x4062B621, 0x4063A820, 0x00000002,\n\t0x4062B622, 0x4063A820, 0x00000002, 0x4062B623, 0x4063A820, 0x00000002,\n\t0x4062B624, 0x4063A820, 0x00000002, 0x4062B625, 0x4063A820, 0x00000002,\n\t0x4062B626, 0x4063A820, 0x00000002, 0x4062B627, 0x4063A820, 0x00000002,\n\t0x4062B628, 0x4063A820, 0x00000002, 0x4062B629, 0x4063A820, 0x00000002,\n\t0x4062B62A, 0x4063A820, 0x00000002, 0x4062B62B, 0x4063A820, 0x00000002,\n\t0x4062B62C, 0x4063A820, 0x00000002, 0x4062B62D, 0x4063A820, 0x00000002,\n\t0x4062B62E, 0x4063A820, 0x00000002, 0x4062B62F,\n\t// Block 350, offset 0x5780\n\t0x4063A820, 0x00000002, 0x4062B630, 0x4063A820, 0x00000002, 0x4062B631,\n\t0x4063A820, 0x00000003, 0x4062B621, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062B622, 0x4063A820, 0x40646420, 0x00000003, 0x4062B623, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062B624, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062B625, 0x4063A820, 0x40646420, 0x00000003, 0x4062B626, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062B627, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062B628, 0x4063A820, 0x40646420, 0x00000003, 0x4062B629, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062B621, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B622, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B623, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B624, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B625, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 351, offset 0x57c0\n\t0x4062B626, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B627, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B628, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B629, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B62A, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B62B, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B62C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B62D, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B62E, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B62F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B621, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062B622, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062B623, 0x4063A820, 0x40647220, 0x00000003, 0x4062B624, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062B621, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062B622, 0x4063A820, 0x40648220, 0x00000003,\n\t// Block 352, offset 0x5800\n\t0x4062B623, 0x4063A820, 0x40648220, 0x00000003, 0x4062B624, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062B625, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062B626, 0x4063A820, 0x40648220, 0x00000003, 0x4062B627, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062B628, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062B629, 0x4063A820, 0x40648220, 0x00000003, 0x4062B62A, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062B62B, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062B62C, 0x4063A820, 0x40648220, 0x00000003, 0x4062B621, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062B622, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062B623, 0x4063A820, 0x40648420, 0x00000003, 0x4062B624, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062B621, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B622, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 353, offset 0x5840\n\t0x4062B623, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B624, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B625, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B626, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B627, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B628, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B629, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B62A, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B62B, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B62C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B62D, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B62E, 0x4063A820, 0x40648C20, 0x00000002,\n\t0x4062B621, 0x4063AA20, 0x00000002, 0x4062B622, 0x4063AA20, 0x00000002,\n\t0x4062B623, 0x4063AA20, 0x00000002, 0x4062B624, 0x4063AA20, 0x00000002,\n\t0x4062B625, 0x4063AA20, 0x00000002, 0x4062B626,\n\t// Block 354, offset 0x5880\n\t0x4063AA20, 0x00000003, 0x4062B621, 0x4063AA20, 0x40648C20, 0x00000003,\n\t0x4062B621, 0x4063AC20, 0x40646420, 0x00000003, 0x4062B622, 0x4063AC20,\n\t0x40646420, 0x00000003, 0x4062B623, 0x4063AC20, 0x40646420, 0x00000003,\n\t0x4062B621, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B622, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062B623, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062B624, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B625, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062B626, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062B627, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B628, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062B629, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062B62A, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B62B, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062B62C, 0x4063AC20,\n\t// Block 355, offset 0x58c0\n\t0x40648C20, 0x00000003, 0x4062B62D, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062B62E, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B62F, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062B630, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062B631, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B632, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062B633, 0x4063AC20, 0x40648C20, 0x00000002,\n\t0x4062B621, 0x4063B420, 0x00000002, 0x4062B622, 0x4063B420, 0x00000002,\n\t0x4062B623, 0x4063B420, 0x00000002, 0x4062B624, 0x4063B420, 0x00000002,\n\t0x4062B625, 0x4063B420, 0x00000002, 0x4062B626, 0x4063B420, 0x00000002,\n\t0x4062B627, 0x4063B420, 0x00000002, 0x4062B628, 0x4063B420, 0x00000002,\n\t0x4062B629, 0x4063B420, 0x00000002, 0x4062B62A, 0x4063B420, 0x00000002,\n\t0x4062B62B, 0x4063B420, 0x00000002, 0x4062B62C,\n\t// Block 356, offset 0x5900\n\t0x4063B420, 0x00000002, 0x4062B62D, 0x4063B420, 0x00000002, 0x4062B62E,\n\t0x4063B420, 0x00000002, 0x4062B62F, 0x4063B420, 0x00000002, 0x4062B630,\n\t0x4063B420, 0x00000002, 0x4062B631, 0x4063B420, 0x00000002, 0x4062B632,\n\t0x4063B420, 0x00000002, 0x4062B633, 0x4063B420, 0x00000002, 0x4062B634,\n\t0x4063B420, 0x00000002, 0x4062B635, 0x4063B420, 0x00000002, 0x4062B636,\n\t0x4063B420, 0x00000002, 0x4062B637, 0x4063B420, 0x00000002, 0x4062B638,\n\t0x4063B420, 0x00000002, 0x4062B639, 0x4063B420, 0x00000002, 0x4062B63A,\n\t0x4063B420, 0x00000002, 0x4062B63B, 0x4063B420, 0x00000002, 0x4062B63C,\n\t0x4063B420, 0x00000002, 0x4062B63D, 0x4063B420, 0x00000003, 0x4062B621,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062B622, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062B623, 0x4063B420, 0x40646420,\n\t// Block 357, offset 0x5940\n\t0x00000003, 0x4062B624, 0x4063B420, 0x40646420, 0x00000003, 0x4062B625,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062B626, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062B627, 0x4063B420, 0x40646420, 0x00000003, 0x4062B628,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062B629, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062B62A, 0x4063B420, 0x40646420, 0x00000003, 0x4062B62B,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062B62C, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062B62D, 0x4063B420, 0x40646420, 0x00000003, 0x4062B621,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B622, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B623, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B624,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B625, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B626, 0x4063B420, 0x40646A20,\n\t// Block 358, offset 0x5980\n\t0x00000003, 0x4062B627, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B628,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B629, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B62A, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B62B,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B62C, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B62D, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B62E,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B62F, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B630, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B631,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B632, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B633, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B621,\n\t0x4063B420, 0x40647220, 0x00000003, 0x4062B622, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062B623, 0x4063B420, 0x40647220,\n\t// Block 359, offset 0x59c0\n\t0x00000003, 0x4062B624, 0x4063B420, 0x40647220, 0x00000003, 0x4062B625,\n\t0x4063B420, 0x40647220, 0x00000003, 0x4062B626, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062B627, 0x4063B420, 0x40647220, 0x00000003, 0x4062B628,\n\t0x4063B420, 0x40647220, 0x00000003, 0x4062B629, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062B621, 0x4063B420, 0x40648220, 0x00000003, 0x4062B622,\n\t0x4063B420, 0x40648220, 0x00000003, 0x4062B623, 0x4063B420, 0x40648220,\n\t0x00000003, 0x4062B624, 0x4063B420, 0x40648220, 0x00000003, 0x4062B625,\n\t0x4063B420, 0x40648220, 0x00000003, 0x4062B626, 0x4063B420, 0x40648220,\n\t0x00000003, 0x4062B627, 0x4063B420, 0x40648220, 0x00000003, 0x4062B628,\n\t0x4063B420, 0x40648220, 0x00000003, 0x4062B621, 0x4063B420, 0x40648420,\n\t0x00000003, 0x4062B622, 0x4063B420, 0x40648420,\n\t// Block 360, offset 0x5a00\n\t0x00000003, 0x4062B623, 0x4063B420, 0x40648420, 0x00000003, 0x4062B621,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B622, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B623, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B624,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B625, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B626, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B627,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B628, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B629, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B62A,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B62B, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B62C, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B62D,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B62E, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B62F, 0x4063B420, 0x40648C20,\n\t// Block 361, offset 0x5a40\n\t0x00000003, 0x4062B630, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B631,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B632, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B633, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B634,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B635, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B636, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B637,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B638, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B639, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B63A,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B63B, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B63C, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B63D,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B63E, 0x4063B420, 0x40648C20,\n\t0x00000002, 0x4062B621, 0x4063B620, 0x00000002,\n\t// Block 362, offset 0x5a80\n\t0x4062B622, 0x4063B620, 0x00000002, 0x4062B623, 0x4063B620, 0x00000002,\n\t0x4062B624, 0x4063B620, 0x00000002, 0x4062B625, 0x4063B620, 0x00000002,\n\t0x4062B626, 0x4063B620, 0x00000002, 0x4062B627, 0x4063B620, 0x00000002,\n\t0x4062B621, 0x4063B820, 0x00000002, 0x4062B622, 0x4063B820, 0x00000002,\n\t0x4062B623, 0x4063B820, 0x00000002, 0x4062B624, 0x4063B820, 0x00000002,\n\t0x4062B625, 0x4063B820, 0x00000002, 0x4062B626, 0x4063B820, 0x00000002,\n\t0x4062B627, 0x4063B820, 0x00000002, 0x4062B628, 0x4063B820, 0x00000002,\n\t0x4062B629, 0x4063B820, 0x00000002, 0x4062B62A, 0x4063B820, 0x00000002,\n\t0x4062B62B, 0x4063B820, 0x00000002, 0x4062B62C, 0x4063B820, 0x00000002,\n\t0x4062B62D, 0x4063B820, 0x00000002, 0x4062B62E, 0x4063B820, 0x00000002,\n\t0x4062B62F, 0x4063B820, 0x00000002, 0x4062B630,\n\t// Block 363, offset 0x5ac0\n\t0x4063B820, 0x00000002, 0x4062B631, 0x4063B820, 0x00000002, 0x4062B632,\n\t0x4063B820, 0x00000002, 0x4062B633, 0x4063B820, 0x00000002, 0x4062B634,\n\t0x4063B820, 0x00000002, 0x4062B635, 0x4063B820, 0x00000002, 0x4062B636,\n\t0x4063B820, 0x00000002, 0x4062B637, 0x4063B820, 0x00000002, 0x4062B638,\n\t0x4063B820, 0x00000002, 0x4062B639, 0x4063B820, 0x00000002, 0x4062B63A,\n\t0x4063B820, 0x00000002, 0x4062B63B, 0x4063B820, 0x00000002, 0x4062B63C,\n\t0x4063B820, 0x00000002, 0x4062B63D, 0x4063B820, 0x00000002, 0x4062B63E,\n\t0x4063B820, 0x00000002, 0x4062B63F, 0x4063B820, 0x00000003, 0x4062B621,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B622, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B623, 0x4063B820, 0x40646420, 0x00000003, 0x4062B624,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B625,\n\t// Block 364, offset 0x5b00\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B626, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B627, 0x4063B820, 0x40646420, 0x00000003, 0x4062B628,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B629, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B62A, 0x4063B820, 0x40646420, 0x00000003, 0x4062B62B,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B62C, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B62D, 0x4063B820, 0x40646420, 0x00000003, 0x4062B62E,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B621, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062B621, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B622,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B623, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B624, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B625,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B626,\n\t// Block 365, offset 0x5b40\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B627, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B628, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B629,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B62A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B62B, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B62C,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B62D, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B62E, 0x4063B820, 0x40648C20, 0x00000002, 0x4062B621,\n\t0x4063BE20, 0x00000002, 0x4062B622, 0x4063BE20, 0x00000002, 0x4062B623,\n\t0x4063BE20, 0x00000002, 0x4062B624, 0x4063BE20, 0x00000002, 0x4062B625,\n\t0x4063BE20, 0x00000002, 0x4062B626, 0x4063BE20, 0x00000002, 0x4062B627,\n\t0x4063BE20, 0x00000002, 0x4062B628, 0x4063BE20, 0x00000002, 0x4062B629,\n\t0x4063BE20, 0x00000002, 0x4062B62A, 0x4063BE20,\n\t// Block 366, offset 0x5b80\n\t0x00000002, 0x4062B62B, 0x4063BE20, 0x00000002, 0x4062B62C, 0x4063BE20,\n\t0x00000002, 0x4062B62D, 0x4063BE20, 0x00000002, 0x4062B62E, 0x4063BE20,\n\t0x00000002, 0x4062B62F, 0x4063BE20, 0x00000002, 0x4062B630, 0x4063BE20,\n\t0x00000002, 0x4062B631, 0x4063BE20, 0x00000002, 0x4062B632, 0x4063BE20,\n\t0x00000002, 0x4062B633, 0x4063BE20, 0x00000002, 0x4062B621, 0x4063C020,\n\t0x00000002, 0x4062B622, 0x4063C020, 0x00000002, 0x4062B623, 0x4063C020,\n\t0x00000002, 0x4062B624, 0x4063C020, 0x00000002, 0x4062B625, 0x4063C020,\n\t0x00000002, 0x4062B626, 0x4063C020, 0x00000002, 0x4062B627, 0x4063C020,\n\t0x00000002, 0x4062B628, 0x4063C020, 0x00000002, 0x4062B629, 0x4063C020,\n\t0x00000002, 0x4062B62A, 0x4063C020, 0x00000002, 0x4062B62B, 0x4063C020,\n\t0x00000002, 0x4062B62C, 0x4063C020, 0x00000002,\n\t// Block 367, offset 0x5bc0\n\t0x4062B62D, 0x4063C020, 0x00000002, 0x4062B62E, 0x4063C020, 0x00000002,\n\t0x4062B62F, 0x4063C020, 0x00000002, 0x4062B630, 0x4063C020, 0x00000002,\n\t0x4062B631, 0x4063C020, 0x00000002, 0x4062B632, 0x4063C020, 0x00000002,\n\t0x4062B633, 0x4063C020, 0x00000002, 0x4062B634, 0x4063C020, 0x00000002,\n\t0x4062B635, 0x4063C020, 0x00000002, 0x4062B636, 0x4063C020, 0x00000002,\n\t0x4062B637, 0x4063C020, 0x00000002, 0x4062B638, 0x4063C020, 0x00000003,\n\t0x4062B621, 0x4063C020, 0x40648C20, 0x00000003, 0x4062B622, 0x4063C020,\n\t0x40648C20, 0x00000002, 0x4062B621, 0x4063C220, 0x00000002, 0x4062B622,\n\t0x4063C220, 0x00000002, 0x4062B623, 0x4063C220, 0x00000002, 0x4062B624,\n\t0x4063C220, 0x00000002, 0x4062B625, 0x4063C220, 0x00000002, 0x4062B626,\n\t0x4063C220, 0x00000002, 0x4062B627, 0x4063C220,\n\t// Block 368, offset 0x5c00\n\t0x00000002, 0x4062B628, 0x4063C220, 0x00000002, 0x4062B629, 0x4063C220,\n\t0x00000002, 0x4062B62A, 0x4063C220, 0x00000002, 0x4062B62B, 0x4063C220,\n\t0x00000002, 0x4062B62C, 0x4063C220, 0x00000002, 0x4062B62D, 0x4063C220,\n\t0x00000002, 0x4062B62E, 0x4063C220, 0x00000002, 0x4062B62F, 0x4063C220,\n\t0x00000002, 0x4062B630, 0x4063C220, 0x00000002, 0x4062B631, 0x4063C220,\n\t0x00000002, 0x4062B632, 0x4063C220, 0x00000002, 0x4062B633, 0x4063C220,\n\t0x00000002, 0x4062B634, 0x4063C220, 0x00000002, 0x4062B621, 0x4063CA20,\n\t0x00000002, 0x4062B622, 0x4063CA20, 0x00000002, 0x4062B623, 0x4063CA20,\n\t0x00000002, 0x4062B624, 0x4063CA20, 0x00000002, 0x4062B625, 0x4063CA20,\n\t0x00000002, 0x4062B626, 0x4063CA20, 0x00000002, 0x4062B627, 0x4063CA20,\n\t0x00000002, 0x4062B628, 0x4063CA20, 0x00000002,\n\t// Block 369, offset 0x5c40\n\t0x4062B629, 0x4063CA20, 0x00000002, 0x4062B62A, 0x4063CA20, 0x00000002,\n\t0x4062B62B, 0x4063CA20, 0x00000002, 0x4062B62C, 0x4063CA20, 0x00000002,\n\t0x4062B62D, 0x4063CA20, 0x00000002, 0x4062B62E, 0x4063CA20, 0x00000002,\n\t0x4062B62F, 0x4063CA20, 0x00000002, 0x4062B630, 0x4063CA20, 0x00000002,\n\t0x4062B631, 0x4063CA20, 0x00000002, 0x4062B632, 0x4063CA20, 0x00000002,\n\t0x4062B633, 0x4063CA20, 0x00000003, 0x4062B621, 0x4063CA20, 0x40646420,\n\t0x00000003, 0x4062B622, 0x4063CA20, 0x40646420, 0x00000003, 0x4062B623,\n\t0x4063CA20, 0x40646420, 0x00000003, 0x4062B624, 0x4063CA20, 0x40646420,\n\t0x00000003, 0x4062B621, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062B622,\n\t0x4063CA20, 0x40646A20, 0x00000003, 0x4062B623, 0x4063CA20, 0x40646A20,\n\t0x00000003, 0x4062B624, 0x4063CA20, 0x40646A20,\n\t// Block 370, offset 0x5c80\n\t0x00000003, 0x4062B625, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062B626,\n\t0x4063CA20, 0x40646A20, 0x00000003, 0x4062B627, 0x4063CA20, 0x40646A20,\n\t0x00000003, 0x4062B621, 0x4063CA20, 0x40647220, 0x00000003, 0x4062B622,\n\t0x4063CA20, 0x40647220, 0x00000003, 0x4062B623, 0x4063CA20, 0x40647220,\n\t0x00000003, 0x4062B624, 0x4063CA20, 0x40647220, 0x00000003, 0x4062B625,\n\t0x4063CA20, 0x40647220, 0x00000003, 0x4062B621, 0x4063CA20, 0x40648C20,\n\t0x00000003, 0x4062B622, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062B623,\n\t0x4063CA20, 0x40648C20, 0x00000003, 0x4062B621, 0x4063CC20, 0x40646420,\n\t0x00000003, 0x4062B622, 0x4063CC20, 0x40646420, 0x00000003, 0x4062B623,\n\t0x4063CC20, 0x40646420, 0x00000003, 0x4062B621, 0x4063CC20, 0x40648220,\n\t0x00000003, 0x4062B622, 0x4063CC20, 0x40648220,\n\t// Block 371, offset 0x5cc0\n\t0x00000003, 0x4062B623, 0x4063CC20, 0x40648220, 0x00000003, 0x4062B624,\n\t0x4063CC20, 0x40648220, 0x00000003, 0x4062B621, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B622, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B623,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B624, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B625, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B626,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062B627, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062B628, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062B621,\n\t0x4063D020, 0x00000002, 0x4062B622, 0x4063D020, 0x00000002, 0x4062B623,\n\t0x4063D020, 0x00000002, 0x4062B624, 0x4063D020, 0x00000002, 0x4062B625,\n\t0x4063D020, 0x00000002, 0x4062B626, 0x4063D020, 0x00000002, 0x4062B627,\n\t0x4063D020, 0x00000002, 0x4062B628, 0x4063D020,\n\t// Block 372, offset 0x5d00\n\t0x00000002, 0x4062B629, 0x4063D020, 0x00000002, 0x4062B62A, 0x4063D020,\n\t0x00000002, 0x4062B62B, 0x4063D020, 0x00000002, 0x4062B62C, 0x4063D020,\n\t0x00000002, 0x4062B62D, 0x4063D020, 0x00000002, 0x4062B62E, 0x4063D020,\n\t0x00000002, 0x4062B62F, 0x4063D020, 0x00000002, 0x4062B630, 0x4063D020,\n\t0x00000002, 0x4062B631, 0x4063D020, 0x00000002, 0x4062B632, 0x4063D020,\n\t0x00000002, 0x4062B633, 0x4063D020, 0x00000002, 0x4062B634, 0x4063D020,\n\t0x00000002, 0x4062B635, 0x4063D020, 0x00000002, 0x4062B636, 0x4063D020,\n\t0x00000002, 0x4062B637, 0x4063D020, 0x00000002, 0x4062B638, 0x4063D020,\n\t0x00000002, 0x4062B639, 0x4063D020, 0x00000002, 0x4062B63A, 0x4063D020,\n\t0x00000002, 0x4062B63B, 0x4063D020, 0x00000002, 0x4062B63C, 0x4063D020,\n\t0x00000002, 0x4062B63D, 0x4063D020, 0x00000002,\n\t// Block 373, offset 0x5d40\n\t0x4062B63E, 0x4063D020, 0x00000002, 0x4062B63F, 0x4063D020, 0x00000002,\n\t0x4062B640, 0x4063D020, 0x00000002, 0x4062B641, 0x4063D020, 0x00000002,\n\t0x4062B642, 0x4063D020, 0x00000002, 0x4062B643, 0x4063D020, 0x00000002,\n\t0x4062B644, 0x4063D020, 0x00000002, 0x4062B645, 0x4063D020, 0x00000002,\n\t0x4062B646, 0x4063D020, 0x00000002, 0x4062B647, 0x4063D020, 0x00000003,\n\t0x4062B621, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B622, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B623, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062B624, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B625, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B626, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062B627, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B628, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B629, 0x4063D020,\n\t// Block 374, offset 0x5d80\n\t0x40646A20, 0x00000003, 0x4062B62A, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062B62B, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B62C, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B62D, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062B62E, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B62F, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B630, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062B631, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B632, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B633, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062B634, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B635, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062B621, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062B622, 0x4063D020, 0x40648220, 0x00000003, 0x4062B623, 0x4063D020,\n\t0x40648220, 0x00000003, 0x4062B624, 0x4063D020,\n\t// Block 375, offset 0x5dc0\n\t0x40648220, 0x00000003, 0x4062B625, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062B626, 0x4063D020, 0x40648220, 0x00000003, 0x4062B621, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062B622, 0x4063D020, 0x40648420, 0x00000003,\n\t0x4062B623, 0x4063D020, 0x40648420, 0x00000003, 0x4062B624, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062B625, 0x4063D020, 0x40648420, 0x00000002,\n\t0x4062B821, 0x4063A820, 0x00000002, 0x4062B822, 0x4063A820, 0x00000002,\n\t0x4062B823, 0x4063A820, 0x00000002, 0x4062B824, 0x4063A820, 0x00000002,\n\t0x4062B825, 0x4063A820, 0x00000002, 0x4062B826, 0x4063A820, 0x00000002,\n\t0x4062B827, 0x4063A820, 0x00000002, 0x4062B828, 0x4063A820, 0x00000002,\n\t0x4062B829, 0x4063A820, 0x00000002, 0x4062B82A, 0x4063A820, 0x00000002,\n\t0x4062B82B, 0x4063A820, 0x00000002, 0x4062B82C,\n\t// Block 376, offset 0x5e00\n\t0x4063A820, 0x00000002, 0x4062B82D, 0x4063A820, 0x00000002, 0x4062B82E,\n\t0x4063A820, 0x00000003, 0x4062B821, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062B822, 0x4063A820, 0x40646420, 0x00000003, 0x4062B823, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062B824, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062B825, 0x4063A820, 0x40646420, 0x00000003, 0x4062B826, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062B827, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062B828, 0x4063A820, 0x40646420, 0x00000003, 0x4062B821, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B822, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B823, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B824, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B825, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B826, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 377, offset 0x5e40\n\t0x4062B827, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B828, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B829, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B82A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B82B, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B82C, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B82D, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B82E, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B82F, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B830, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B831, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B832, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B833, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B834, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B835, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B836, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 378, offset 0x5e80\n\t0x4062B837, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B838, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B839, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B83A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B83B, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062B83C, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062B821, 0x4063A820, 0x40647220, 0x00000003, 0x4062B822, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062B823, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062B824, 0x4063A820, 0x40647220, 0x00000003, 0x4062B825, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062B826, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062B827, 0x4063A820, 0x40647220, 0x00000003, 0x4062B828, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062B829, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062B821, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 379, offset 0x5ec0\n\t0x4062B822, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B823, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B824, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B825, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B826, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B827, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B828, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B829, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B82A, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B82B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B82C, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B82D, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B82E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B82F, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062B830, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062B831, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 380, offset 0x5f00\n\t0x4062B832, 0x4063A820, 0x40648C20, 0x00000002, 0x4062B821, 0x4063AA20,\n\t0x00000002, 0x4062B822, 0x4063AA20, 0x00000002, 0x4062B823, 0x4063AA20,\n\t0x00000002, 0x4062B824, 0x4063AA20, 0x00000002, 0x4062B825, 0x4063AA20,\n\t0x00000002, 0x4062B826, 0x4063AA20, 0x00000002, 0x4062B827, 0x4063AA20,\n\t0x00000002, 0x4062B828, 0x4063AA20, 0x00000002, 0x4062B829, 0x4063AA20,\n\t0x00000002, 0x4062B82A, 0x4063AA20, 0x00000002, 0x4062B82B, 0x4063AA20,\n\t0x00000002, 0x4062B82C, 0x4063AA20, 0x00000002, 0x4062B82D, 0x4063AA20,\n\t0x00000002, 0x4062B82E, 0x4063AA20, 0x00000002, 0x4062B82F, 0x4063AA20,\n\t0x00000002, 0x4062B830, 0x4063AA20, 0x00000002, 0x4062B831, 0x4063AA20,\n\t0x00000002, 0x4062B832, 0x4063AA20, 0x00000002, 0x4062B833, 0x4063AA20,\n\t0x00000002, 0x4062B834, 0x4063AA20, 0x00000002,\n\t// Block 381, offset 0x5f40\n\t0x4062B835, 0x4063AA20, 0x00000002, 0x4062B836, 0x4063AA20, 0x00000002,\n\t0x4062B837, 0x4063AA20, 0x00000003, 0x4062B821, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062B822, 0x4063AA20, 0x40646420, 0x00000003, 0x4062B823,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062B824, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062B825, 0x4063AA20, 0x40646420, 0x00000003, 0x4062B826,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062B827, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062B828, 0x4063AA20, 0x40646420, 0x00000003, 0x4062B821,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062B822, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062B823, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062B824,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062B825, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062B826, 0x4063AA20, 0x40648C20,\n\t// Block 382, offset 0x5f80\n\t0x00000003, 0x4062B827, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062B828,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062B829, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062B82A, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062B821,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062B822, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062B823, 0x4063B420, 0x40646420, 0x00000003, 0x4062B824,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062B821, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B822, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B823,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B824, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B825, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B826,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B827, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B828, 0x4063B420, 0x40646A20,\n\t// Block 383, offset 0x5fc0\n\t0x00000003, 0x4062B829, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B82A,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B82B, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B82C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B82D,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B82E, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062B82F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B830,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062B821, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062B822, 0x4063B420, 0x40647220, 0x00000003, 0x4062B823,\n\t0x4063B420, 0x40647220, 0x00000003, 0x4062B824, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062B821, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B822,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B823, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B824, 0x4063B420, 0x40648C20,\n\t// Block 384, offset 0x6000\n\t0x00000003, 0x4062B825, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B826,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B827, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B828, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B829,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B82A, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B82B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B82C,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B82D, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062B82E, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B82F,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062B830, 0x4063B420, 0x40648C20,\n\t0x00000002, 0x4062B821, 0x4063B620, 0x00000002, 0x4062B821, 0x4063B820,\n\t0x00000002, 0x4062B822, 0x4063B820, 0x00000002, 0x4062B823, 0x4063B820,\n\t0x00000002, 0x4062B824, 0x4063B820, 0x00000002,\n\t// Block 385, offset 0x6040\n\t0x4062B825, 0x4063B820, 0x00000002, 0x4062B826, 0x4063B820, 0x00000002,\n\t0x4062B827, 0x4063B820, 0x00000002, 0x4062B828, 0x4063B820, 0x00000002,\n\t0x4062B829, 0x4063B820, 0x00000002, 0x4062B82A, 0x4063B820, 0x00000002,\n\t0x4062B82B, 0x4063B820, 0x00000002, 0x4062B82C, 0x4063B820, 0x00000002,\n\t0x4062B82D, 0x4063B820, 0x00000002, 0x4062B82E, 0x4063B820, 0x00000002,\n\t0x4062B82F, 0x4063B820, 0x00000002, 0x4062B830, 0x4063B820, 0x00000002,\n\t0x4062B831, 0x4063B820, 0x00000002, 0x4062B832, 0x4063B820, 0x00000002,\n\t0x4062B833, 0x4063B820, 0x00000002, 0x4062B834, 0x4063B820, 0x00000002,\n\t0x4062B835, 0x4063B820, 0x00000002, 0x4062B836, 0x4063B820, 0x00000002,\n\t0x4062B837, 0x4063B820, 0x00000002, 0x4062B838, 0x4063B820, 0x00000002,\n\t0x4062B839, 0x4063B820, 0x00000002, 0x4062B83A,\n\t// Block 386, offset 0x6080\n\t0x4063B820, 0x00000002, 0x4062B83B, 0x4063B820, 0x00000002, 0x4062B83C,\n\t0x4063B820, 0x00000002, 0x4062B83D, 0x4063B820, 0x00000002, 0x4062B83E,\n\t0x4063B820, 0x00000002, 0x4062B83F, 0x4063B820, 0x00000002, 0x4062B840,\n\t0x4063B820, 0x00000002, 0x4062B841, 0x4063B820, 0x00000002, 0x4062B842,\n\t0x4063B820, 0x00000002, 0x4062B843, 0x4063B820, 0x00000002, 0x4062B844,\n\t0x4063B820, 0x00000002, 0x4062B845, 0x4063B820, 0x00000002, 0x4062B846,\n\t0x4063B820, 0x00000002, 0x4062B847, 0x4063B820, 0x00000003, 0x4062B821,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B822, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B823, 0x4063B820, 0x40646420, 0x00000003, 0x4062B824,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B825, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B826, 0x4063B820, 0x40646420,\n\t// Block 387, offset 0x60c0\n\t0x00000003, 0x4062B827, 0x4063B820, 0x40646420, 0x00000003, 0x4062B828,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062B829, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062B821, 0x4063B820, 0x40647220, 0x00000003, 0x4062B822,\n\t0x4063B820, 0x40647220, 0x00000003, 0x4062B821, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B822, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B823,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B824, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B825, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B826,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B827, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B828, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B829,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062B82A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062B82B, 0x4063B820, 0x40648C20,\n\t// Block 388, offset 0x6100\n\t0x00000003, 0x4062B82C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B82D,\n\t0x4063B820, 0x40648C20, 0x00000002, 0x4062B821, 0x4063C020, 0x00000002,\n\t0x4062B822, 0x4063C020, 0x00000002, 0x4062B823, 0x4063C020, 0x00000002,\n\t0x4062B824, 0x4063C020, 0x00000002, 0x4062B825, 0x4063C020, 0x00000002,\n\t0x4062B826, 0x4063C020, 0x00000002, 0x4062B827, 0x4063C020, 0x00000002,\n\t0x4062B828, 0x4063C020, 0x00000002, 0x4062B829, 0x4063C020, 0x00000002,\n\t0x4062B82A, 0x4063C020, 0x00000002, 0x4062B82B, 0x4063C020, 0x00000002,\n\t0x4062B82C, 0x4063C020, 0x00000002, 0x4062B82D, 0x4063C020, 0x00000002,\n\t0x4062B82E, 0x4063C020, 0x00000002, 0x4062B82F, 0x4063C020, 0x00000002,\n\t0x4062B830, 0x4063C020, 0x00000002, 0x4062B821, 0x4063C220, 0x00000002,\n\t0x4062B822, 0x4063C220, 0x00000002, 0x4062B823,\n\t// Block 389, offset 0x6140\n\t0x4063C220, 0x00000002, 0x4062B824, 0x4063C220, 0x00000002, 0x4062B825,\n\t0x4063C220, 0x00000002, 0x4062B826, 0x4063C220, 0x00000002, 0x4062B827,\n\t0x4063C220, 0x00000002, 0x4062B828, 0x4063C220, 0x00000002, 0x4062B829,\n\t0x4063C220, 0x00000002, 0x4062B82A, 0x4063C220, 0x00000002, 0x4062B82B,\n\t0x4063C220, 0x00000002, 0x4062B82C, 0x4063C220, 0x00000002, 0x4062B82D,\n\t0x4063C220, 0x00000002, 0x4062B82E, 0x4063C220, 0x00000002, 0x4062B82F,\n\t0x4063C220, 0x00000002, 0x4062B830, 0x4063C220, 0x00000002, 0x4062B831,\n\t0x4063C220, 0x00000002, 0x4062B832, 0x4063C220, 0x00000002, 0x4062B833,\n\t0x4063C220, 0x00000002, 0x4062B834, 0x4063C220, 0x00000002, 0x4062B835,\n\t0x4063C220, 0x00000002, 0x4062B836, 0x4063C220, 0x00000002, 0x4062B837,\n\t0x4063C220, 0x00000002, 0x4062B838, 0x4063C220,\n\t// Block 390, offset 0x6180\n\t0x00000002, 0x4062B839, 0x4063C220, 0x00000002, 0x4062B83A, 0x4063C220,\n\t0x00000002, 0x4062B83B, 0x4063C220, 0x00000003, 0x4062B821, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062B822, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062B823, 0x4063C220, 0x40646420, 0x00000003, 0x4062B821, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B822, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062B823, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B824, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B825, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062B826, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B827, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B828, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062B829, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B82A, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B82B, 0x4063C220,\n\t// Block 391, offset 0x61c0\n\t0x40646A20, 0x00000003, 0x4062B82C, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062B82D, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B82E, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B82F, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062B830, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B831, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062B832, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062B833, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B821, 0x4063C220,\n\t0x40647220, 0x00000003, 0x4062B822, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062B823, 0x4063C220, 0x40647220, 0x00000002, 0x4062B821, 0x4063D020,\n\t0x00000002, 0x4062B822, 0x4063D020, 0x00000002, 0x4062B823, 0x4063D020,\n\t0x00000002, 0x4062B824, 0x4063D020, 0x00000002, 0x4062B825, 0x4063D020,\n\t0x00000002, 0x4062B826, 0x4063D020, 0x00000002,\n\t// Block 392, offset 0x6200\n\t0x4062B827, 0x4063D020, 0x00000002, 0x4062B828, 0x4063D020, 0x00000002,\n\t0x4062B829, 0x4063D020, 0x00000002, 0x4062B82A, 0x4063D020, 0x00000002,\n\t0x4062B82B, 0x4063D020, 0x00000002, 0x4062B82C, 0x4063D020, 0x00000002,\n\t0x4062B82D, 0x4063D020, 0x00000002, 0x4062B82E, 0x4063D020, 0x00000002,\n\t0x4062B82F, 0x4063D020, 0x00000002, 0x4062B830, 0x4063D020, 0x00000002,\n\t0x4062B831, 0x4063D020, 0x00000002, 0x4062B832, 0x4063D020, 0x00000002,\n\t0x4062B833, 0x4063D020, 0x00000002, 0x4062B834, 0x4063D020, 0x00000002,\n\t0x4062B835, 0x4063D020, 0x00000002, 0x4062B836, 0x4063D020, 0x00000002,\n\t0x4062B837, 0x4063D020, 0x00000002, 0x4062B838, 0x4063D020, 0x00000002,\n\t0x4062B839, 0x4063D020, 0x00000002, 0x4062B83A, 0x4063D020, 0x00000002,\n\t0x4062B83B, 0x4063D020, 0x00000002, 0x4062B83C,\n\t// Block 393, offset 0x6240\n\t0x4063D020, 0x00000002, 0x4062B83D, 0x4063D020, 0x00000002, 0x4062B83E,\n\t0x4063D020, 0x00000002, 0x4062B83F, 0x4063D020, 0x00000002, 0x4062B840,\n\t0x4063D020, 0x00000002, 0x4062B841, 0x4063D020, 0x00000003, 0x4062B821,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B822, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B823, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B824,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B825, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B826, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B827,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B828, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B829, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B82A,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B82B, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B82C, 0x4063D020, 0x40646A20,\n\t// Block 394, offset 0x6280\n\t0x00000003, 0x4062B82D, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B82E,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B82F, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B830, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B831,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B832, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B833, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B834,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B835, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062B836, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B837,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062B821, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062B822, 0x4063D020, 0x40647220, 0x00000003, 0x4062B823,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062B824, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062B825, 0x4063D020, 0x40647220,\n\t// Block 395, offset 0x62c0\n\t0x00000003, 0x4062BA21, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA22,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA23, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA24, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA25,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA26, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA27, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA28,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA29, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA2A, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA2B,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA2C, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA2D, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA2E,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA2F, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA30, 0x4063A820, 0x40646420,\n\t// Block 396, offset 0x6300\n\t0x00000003, 0x4062BA31, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA32,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA33, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA34, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA35,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA36, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA37, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA38,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BA39, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BA21, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA22,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA23, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA24, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA25,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA26, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA27, 0x4063A820, 0x40646A20,\n\t// Block 397, offset 0x6340\n\t0x00000003, 0x4062BA28, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA29,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA2A, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA2B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA2C,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA2D, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA2E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA2F,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA30, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA31, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA32,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA33, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA34, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA35,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA36, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA37, 0x4063A820, 0x40646A20,\n\t// Block 398, offset 0x6380\n\t0x00000003, 0x4062BA38, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA39,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA3A, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA3B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA3C,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA3D, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA3E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA3F,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BA40, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BA41, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA21,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062BA22, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BA23, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA24,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062BA25, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BA26, 0x4063A820, 0x40647220,\n\t// Block 399, offset 0x63c0\n\t0x00000003, 0x4062BA27, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA28,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062BA29, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BA2A, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA2B,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062BA2C, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BA2D, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA2E,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062BA2F, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BA30, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA21,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA22, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA23, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA24,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA25, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA26, 0x4063A820, 0x40648C20,\n\t// Block 400, offset 0x6400\n\t0x00000003, 0x4062BA27, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA28,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA29, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA2A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA2B,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA2C, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA2D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA2E,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA2F, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA30, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA31,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA32, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA33, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA34,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA35, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA36, 0x4063A820, 0x40648C20,\n\t// Block 401, offset 0x6440\n\t0x00000003, 0x4062BA37, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA38,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA39, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA3A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA3B,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA3C, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA3D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA3E,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA3F, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA40, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA41,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA42, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA43, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA44,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA45, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BA46, 0x4063A820, 0x40648C20,\n\t// Block 402, offset 0x6480\n\t0x00000003, 0x4062BA47, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA48,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BA49, 0x4063A820, 0x40648C20,\n\t0x00000002, 0x4062BA21, 0x4063AA20, 0x00000002, 0x4062BA22, 0x4063AA20,\n\t0x00000002, 0x4062BA23, 0x4063AA20, 0x00000002, 0x4062BA24, 0x4063AA20,\n\t0x00000002, 0x4062BA25, 0x4063AA20, 0x00000002, 0x4062BA26, 0x4063AA20,\n\t0x00000002, 0x4062BA27, 0x4063AA20, 0x00000002, 0x4062BA28, 0x4063AA20,\n\t0x00000002, 0x4062BA29, 0x4063AA20, 0x00000002, 0x4062BA2A, 0x4063AA20,\n\t0x00000002, 0x4062BA2B, 0x4063AA20, 0x00000002, 0x4062BA2C, 0x4063AA20,\n\t0x00000002, 0x4062BA2D, 0x4063AA20, 0x00000002, 0x4062BA2E, 0x4063AA20,\n\t0x00000002, 0x4062BA2F, 0x4063AA20, 0x00000002, 0x4062BA30, 0x4063AA20,\n\t0x00000002, 0x4062BA31, 0x4063AA20, 0x00000002,\n\t// Block 403, offset 0x64c0\n\t0x4062BA32, 0x4063AA20, 0x00000002, 0x4062BA33, 0x4063AA20, 0x00000002,\n\t0x4062BA34, 0x4063AA20, 0x00000002, 0x4062BA35, 0x4063AA20, 0x00000002,\n\t0x4062BA36, 0x4063AA20, 0x00000002, 0x4062BA37, 0x4063AA20, 0x00000002,\n\t0x4062BA38, 0x4063AA20, 0x00000003, 0x4062BA21, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062BA22, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BA23,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062BA24, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062BA25, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BA26,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062BA27, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062BA28, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BA29,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062BA21, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BA22, 0x4063B020, 0x40646A20,\n\t// Block 404, offset 0x6500\n\t0x00000003, 0x4062BA23, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA24,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BA25, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BA26, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA27,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BA28, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BA29, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA2A,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BA2B, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BA2C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA2D,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BA2E, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BA21, 0x4063B020, 0x40647220, 0x00000003, 0x4062BA22,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BA23, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BA24, 0x4063B020, 0x40647220,\n\t// Block 405, offset 0x6540\n\t0x00000003, 0x4062BA25, 0x4063B020, 0x40647220, 0x00000003, 0x4062BA26,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BA21, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BA22, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA23,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BA24, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BA25, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA26,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BA27, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BA28, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA29,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BA2A, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BA2B, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA2C,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BA21, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062BA22, 0x4063B020, 0x40648420,\n\t// Block 406, offset 0x6580\n\t0x00000003, 0x4062BA21, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA22,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062BA23, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062BA24, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA25,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062BA26, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062BA27, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA28,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062BA29, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062BA2A, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA2B,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062BA2C, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062BA2D, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA2E,\n\t0x4063B420, 0x40646420, 0x00000003, 0x4062BA2F, 0x4063B420, 0x40646420,\n\t0x00000003, 0x4062BA30, 0x4063B420, 0x40646420,\n\t// Block 407, offset 0x65c0\n\t0x00000003, 0x4062BA31, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA21,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062BA22, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062BA23, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA24,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062BA25, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062BA26, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA27,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062BA28, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062BA29, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA2A,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062BA2B, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062BA2C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA2D,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062BA2E, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062BA2F, 0x4063B420, 0x40646A20,\n\t// Block 408, offset 0x6600\n\t0x00000003, 0x4062BA21, 0x4063B420, 0x40647220, 0x00000003, 0x4062BA22,\n\t0x4063B420, 0x40647220, 0x00000003, 0x4062BA23, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062BA24, 0x4063B420, 0x40647220, 0x00000003, 0x4062BA25,\n\t0x4063B420, 0x40647220, 0x00000003, 0x4062BA26, 0x4063B420, 0x40647220,\n\t0x00000003, 0x4062BA21, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA22,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA23, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA24, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA25,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA26, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA27, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA28,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA29, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA2A, 0x4063B420, 0x40648C20,\n\t// Block 409, offset 0x6640\n\t0x00000003, 0x4062BA2B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA2C,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA2D, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA2E, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA2F,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA30, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA31, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA32,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA33, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA34, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA35,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA36, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062BA37, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA38,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062BA39, 0x4063B420, 0x40648C20,\n\t0x00000002, 0x4062BA21, 0x4063B820, 0x00000002,\n\t// Block 410, offset 0x6680\n\t0x4062BA22, 0x4063B820, 0x00000002, 0x4062BA23, 0x4063B820, 0x00000002,\n\t0x4062BA24, 0x4063B820, 0x00000002, 0x4062BA25, 0x4063B820, 0x00000002,\n\t0x4062BA26, 0x4063B820, 0x00000002, 0x4062BA27, 0x4063B820, 0x00000002,\n\t0x4062BA28, 0x4063B820, 0x00000002, 0x4062BA29, 0x4063B820, 0x00000002,\n\t0x4062BA2A, 0x4063B820, 0x00000002, 0x4062BA2B, 0x4063B820, 0x00000002,\n\t0x4062BA2C, 0x4063B820, 0x00000002, 0x4062BA2D, 0x4063B820, 0x00000002,\n\t0x4062BA2E, 0x4063B820, 0x00000002, 0x4062BA2F, 0x4063B820, 0x00000002,\n\t0x4062BA30, 0x4063B820, 0x00000002, 0x4062BA31, 0x4063B820, 0x00000002,\n\t0x4062BA32, 0x4063B820, 0x00000002, 0x4062BA33, 0x4063B820, 0x00000002,\n\t0x4062BA34, 0x4063B820, 0x00000002, 0x4062BA35, 0x4063B820, 0x00000002,\n\t0x4062BA36, 0x4063B820, 0x00000002, 0x4062BA37,\n\t// Block 411, offset 0x66c0\n\t0x4063B820, 0x00000003, 0x4062BA21, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA22, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA23, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA24, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA25, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA26, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA27, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA28, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA29, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA2A, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA2B, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA2C, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA2D, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA2E, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA2F, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA30, 0x4063B820,\n\t// Block 412, offset 0x6700\n\t0x40646420, 0x00000003, 0x4062BA31, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA32, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA33, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA34, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA35, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA36, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA37, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA38, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA39, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062BA3A, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062BA21, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BA21, 0x4063B820,\n\t0x40647220, 0x00000003, 0x4062BA21, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA22, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA23, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062BA24, 0x4063B820,\n\t// Block 413, offset 0x6740\n\t0x40648C20, 0x00000003, 0x4062BA25, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA26, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA27, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062BA28, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA29, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA2A, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062BA2B, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA2C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA2D, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062BA2E, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA2F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA30, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062BA31, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA32, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA33, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062BA34, 0x4063B820,\n\t// Block 414, offset 0x6780\n\t0x40648C20, 0x00000003, 0x4062BA35, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062BA36, 0x4063B820, 0x40648C20, 0x00000002, 0x4062BA21, 0x4063C220,\n\t0x00000002, 0x4062BA22, 0x4063C220, 0x00000002, 0x4062BA23, 0x4063C220,\n\t0x00000002, 0x4062BA24, 0x4063C220, 0x00000002, 0x4062BA25, 0x4063C220,\n\t0x00000002, 0x4062BA26, 0x4063C220, 0x00000002, 0x4062BA27, 0x4063C220,\n\t0x00000002, 0x4062BA28, 0x4063C220, 0x00000002, 0x4062BA29, 0x4063C220,\n\t0x00000002, 0x4062BA2A, 0x4063C220, 0x00000002, 0x4062BA2B, 0x4063C220,\n\t0x00000002, 0x4062BA2C, 0x4063C220, 0x00000002, 0x4062BA2D, 0x4063C220,\n\t0x00000002, 0x4062BA2E, 0x4063C220, 0x00000002, 0x4062BA2F, 0x4063C220,\n\t0x00000002, 0x4062BA30, 0x4063C220, 0x00000002, 0x4062BA31, 0x4063C220,\n\t0x00000002, 0x4062BA32, 0x4063C220, 0x00000002,\n\t// Block 415, offset 0x67c0\n\t0x4062BA33, 0x4063C220, 0x00000002, 0x4062BA34, 0x4063C220, 0x00000002,\n\t0x4062BA35, 0x4063C220, 0x00000002, 0x4062BA36, 0x4063C220, 0x00000002,\n\t0x4062BA37, 0x4063C220, 0x00000002, 0x4062BA38, 0x4063C220, 0x00000002,\n\t0x4062BA39, 0x4063C220, 0x00000002, 0x4062BA3A, 0x4063C220, 0x00000002,\n\t0x4062BA3B, 0x4063C220, 0x00000002, 0x4062BA3C, 0x4063C220, 0x00000002,\n\t0x4062BA3D, 0x4063C220, 0x00000002, 0x4062BA3E, 0x4063C220, 0x00000002,\n\t0x4062BA3F, 0x4063C220, 0x00000002, 0x4062BA40, 0x4063C220, 0x00000002,\n\t0x4062BA41, 0x4063C220, 0x00000002, 0x4062BA42, 0x4063C220, 0x00000002,\n\t0x4062BA43, 0x4063C220, 0x00000002, 0x4062BA44, 0x4063C220, 0x00000002,\n\t0x4062BA45, 0x4063C220, 0x00000002, 0x4062BA46, 0x4063C220, 0x00000002,\n\t0x4062BA47, 0x4063C220, 0x00000002, 0x4062BA48,\n\t// Block 416, offset 0x6800\n\t0x4063C220, 0x00000002, 0x4062BA49, 0x4063C220, 0x00000002, 0x4062BA4A,\n\t0x4063C220, 0x00000002, 0x4062BA4B, 0x4063C220, 0x00000002, 0x4062BA4C,\n\t0x4063C220, 0x00000002, 0x4062BA4D, 0x4063C220, 0x00000002, 0x4062BA4E,\n\t0x4063C220, 0x00000002, 0x4062BA4F, 0x4063C220, 0x00000002, 0x4062BA50,\n\t0x4063C220, 0x00000002, 0x4062BA51, 0x4063C220, 0x00000002, 0x4062BA52,\n\t0x4063C220, 0x00000002, 0x4062BA53, 0x4063C220, 0x00000002, 0x4062BA54,\n\t0x4063C220, 0x00000002, 0x4062BA55, 0x4063C220, 0x00000002, 0x4062BA56,\n\t0x4063C220, 0x00000002, 0x4062BA57, 0x4063C220, 0x00000002, 0x4062BA58,\n\t0x4063C220, 0x00000002, 0x4062BA59, 0x4063C220, 0x00000002, 0x4062BA5A,\n\t0x4063C220, 0x00000002, 0x4062BA5B, 0x4063C220, 0x00000002, 0x4062BA5C,\n\t0x4063C220, 0x00000002, 0x4062BA5D, 0x4063C220,\n\t// Block 417, offset 0x6840\n\t0x00000002, 0x4062BA5E, 0x4063C220, 0x00000002, 0x4062BA5F, 0x4063C220,\n\t0x00000002, 0x4062BA60, 0x4063C220, 0x00000002, 0x4062BA61, 0x4063C220,\n\t0x00000002, 0x4062BA62, 0x4063C220, 0x00000002, 0x4062BA63, 0x4063C220,\n\t0x00000002, 0x4062BA64, 0x4063C220, 0x00000002, 0x4062BA65, 0x4063C220,\n\t0x00000003, 0x4062BA21, 0x4063C220, 0x40646420, 0x00000003, 0x4062BA21,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA22, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA23, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA24,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA25, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA26, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA27,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA28, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA29, 0x4063C220, 0x40646A20,\n\t// Block 418, offset 0x6880\n\t0x00000003, 0x4062BA2A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA2B,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA2C, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA2D, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA2E,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA2F, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA30, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA31,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA32, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA33, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA34,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA35, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA36, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA37,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA38, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA39, 0x4063C220, 0x40646A20,\n\t// Block 419, offset 0x68c0\n\t0x00000003, 0x4062BA3A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA3B,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA3C, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA3D, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA3E,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA3F, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA40, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA41,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA42, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA43, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA44,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062BA45, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062BA46, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA21,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062BA22, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062BA23, 0x4063C220, 0x40647220,\n\t// Block 420, offset 0x6900\n\t0x00000003, 0x4062BA24, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA25,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062BA26, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062BA27, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA28,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062BA29, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062BA2A, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA2B,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062BA2C, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062BA21, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BA22,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062BA23, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062BA24, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BA25,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062BA26, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062BA27, 0x4063C220, 0x40648C20,\n\t// Block 421, offset 0x6940\n\t0x00000003, 0x4062BA28, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BA29,\n\t0x4063C220, 0x40648C20, 0x00000002, 0x4062BA21, 0x4063D020, 0x00000002,\n\t0x4062BA22, 0x4063D020, 0x00000002, 0x4062BA23, 0x4063D020, 0x00000002,\n\t0x4062BA24, 0x4063D020, 0x00000002, 0x4062BA25, 0x4063D020, 0x00000002,\n\t0x4062BA26, 0x4063D020, 0x00000002, 0x4062BA27, 0x4063D020, 0x00000002,\n\t0x4062BA28, 0x4063D020, 0x00000002, 0x4062BA29, 0x4063D020, 0x00000002,\n\t0x4062BA2A, 0x4063D020, 0x00000002, 0x4062BA2B, 0x4063D020, 0x00000002,\n\t0x4062BA2C, 0x4063D020, 0x00000002, 0x4062BA2D, 0x4063D020, 0x00000002,\n\t0x4062BA2E, 0x4063D020, 0x00000002, 0x4062BA2F, 0x4063D020, 0x00000002,\n\t0x4062BA30, 0x4063D020, 0x00000002, 0x4062BA31, 0x4063D020, 0x00000002,\n\t0x4062BA32, 0x4063D020, 0x00000002, 0x4062BA33,\n\t// Block 422, offset 0x6980\n\t0x4063D020, 0x00000002, 0x4062BA34, 0x4063D020, 0x00000002, 0x4062BA35,\n\t0x4063D020, 0x00000002, 0x4062BA36, 0x4063D020, 0x00000002, 0x4062BA37,\n\t0x4063D020, 0x00000002, 0x4062BA38, 0x4063D020, 0x00000002, 0x4062BA39,\n\t0x4063D020, 0x00000002, 0x4062BA3A, 0x4063D020, 0x00000002, 0x4062BA3B,\n\t0x4063D020, 0x00000002, 0x4062BA3C, 0x4063D020, 0x00000002, 0x4062BA3D,\n\t0x4063D020, 0x00000002, 0x4062BA3E, 0x4063D020, 0x00000002, 0x4062BA3F,\n\t0x4063D020, 0x00000002, 0x4062BA40, 0x4063D020, 0x00000002, 0x4062BA41,\n\t0x4063D020, 0x00000002, 0x4062BA42, 0x4063D020, 0x00000002, 0x4062BA43,\n\t0x4063D020, 0x00000002, 0x4062BA44, 0x4063D020, 0x00000002, 0x4062BA45,\n\t0x4063D020, 0x00000002, 0x4062BA46, 0x4063D020, 0x00000002, 0x4062BA47,\n\t0x4063D020, 0x00000002, 0x4062BA48, 0x4063D020,\n\t// Block 423, offset 0x69c0\n\t0x00000002, 0x4062BA49, 0x4063D020, 0x00000002, 0x4062BA4A, 0x4063D020,\n\t0x00000002, 0x4062BA4B, 0x4063D020, 0x00000002, 0x4062BA4C, 0x4063D020,\n\t0x00000002, 0x4062BA4D, 0x4063D020, 0x00000002, 0x4062BA4E, 0x4063D020,\n\t0x00000002, 0x4062BA4F, 0x4063D020, 0x00000002, 0x4062BA50, 0x4063D020,\n\t0x00000002, 0x4062BA51, 0x4063D020, 0x00000002, 0x4062BA52, 0x4063D020,\n\t0x00000002, 0x4062BA53, 0x4063D020, 0x00000002, 0x4062BA54, 0x4063D020,\n\t0x00000002, 0x4062BA55, 0x4063D020, 0x00000002, 0x4062BA56, 0x4063D020,\n\t0x00000002, 0x4062BA57, 0x4063D020, 0x00000002, 0x4062BA58, 0x4063D020,\n\t0x00000002, 0x4062BA59, 0x4063D020, 0x00000002, 0x4062BA5A, 0x4063D020,\n\t0x00000002, 0x4062BA5B, 0x4063D020, 0x00000002, 0x4062BA5C, 0x4063D020,\n\t0x00000002, 0x4062BA5D, 0x4063D020, 0x00000002,\n\t// Block 424, offset 0x6a00\n\t0x4062BA5E, 0x4063D020, 0x00000002, 0x4062BA5F, 0x4063D020, 0x00000002,\n\t0x4062BA60, 0x4063D020, 0x00000002, 0x4062BA61, 0x4063D020, 0x00000002,\n\t0x4062BA62, 0x4063D020, 0x00000002, 0x4062BA63, 0x4063D020, 0x00000002,\n\t0x4062BA64, 0x4063D020, 0x00000002, 0x4062BA65, 0x4063D020, 0x00000002,\n\t0x4062BA66, 0x4063D020, 0x00000002, 0x4062BA67, 0x4063D020, 0x00000002,\n\t0x4062BA68, 0x4063D020, 0x00000002, 0x4062BA69, 0x4063D020, 0x00000002,\n\t0x4062BA6A, 0x4063D020, 0x00000002, 0x4062BA6B, 0x4063D020, 0x00000002,\n\t0x4062BA6C, 0x4063D020, 0x00000002, 0x4062BA6D, 0x4063D020, 0x00000002,\n\t0x4062BA6E, 0x4063D020, 0x00000002, 0x4062BA6F, 0x4063D020, 0x00000002,\n\t0x4062BA70, 0x4063D020, 0x00000002, 0x4062BA71, 0x4063D020, 0x00000002,\n\t0x4062BA72, 0x4063D020, 0x00000002, 0x4062BA73,\n\t// Block 425, offset 0x6a40\n\t0x4063D020, 0x00000002, 0x4062BA74, 0x4063D020, 0x00000002, 0x4062BA75,\n\t0x4063D020, 0x00000003, 0x4062BA21, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA22, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA23, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA24, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA25, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA26, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA27, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA28, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA29, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA2A, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA2B, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA2C, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA2D, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA2E, 0x4063D020, 0x40646A20, 0x00000003,\n\t// Block 426, offset 0x6a80\n\t0x4062BA2F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA30, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA31, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA32, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA33, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA34, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA35, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA36, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA37, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA38, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA39, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BA3A, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BA3B, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA21, 0x4063D020,\n\t0x40648C20, 0x00000003, 0x4062BA22, 0x4063D020, 0x40648C20, 0x00000003,\n\t0x4062BA23, 0x4063D020, 0x40648C20, 0x00000003,\n\t// Block 427, offset 0x6ac0\n\t0x4062BA24, 0x4063D020, 0x40648C20, 0x00000003, 0x4062BA25, 0x4063D020,\n\t0x40648C20, 0x00000003, 0x4062BA26, 0x4063D020, 0x40648C20, 0x00000003,\n\t0x4062BA27, 0x4063D020, 0x40648C20, 0x00000003, 0x4062BA28, 0x4063D020,\n\t0x40648C20, 0x00000002, 0x4062BE21, 0x4063A820, 0x00000002, 0x4062BE22,\n\t0x4063A820, 0x00000002, 0x4062BE23, 0x4063A820, 0x00000002, 0x4062BE24,\n\t0x4063A820, 0x00000002, 0x4062BE25, 0x4063A820, 0x00000002, 0x4062BE26,\n\t0x4063A820, 0x00000002, 0x4062BE27, 0x4063A820, 0x00000002, 0x4062BE28,\n\t0x4063A820, 0x00000002, 0x4062BE29, 0x4063A820, 0x00000002, 0x4062BE2A,\n\t0x4063A820, 0x00000002, 0x4062BE2B, 0x4063A820, 0x00000002, 0x4062BE2C,\n\t0x4063A820, 0x00000002, 0x4062BE2D, 0x4063A820, 0x00000002, 0x4062BE2E,\n\t0x4063A820, 0x00000002, 0x4062BE2F, 0x4063A820,\n\t// Block 428, offset 0x6b00\n\t0x00000002, 0x4062BE30, 0x4063A820, 0x00000002, 0x4062BE31, 0x4063A820,\n\t0x00000002, 0x4062BE32, 0x4063A820, 0x00000002, 0x4062BE33, 0x4063A820,\n\t0x00000002, 0x4062BE34, 0x4063A820, 0x00000002, 0x4062BE35, 0x4063A820,\n\t0x00000002, 0x4062BE36, 0x4063A820, 0x00000002, 0x4062BE37, 0x4063A820,\n\t0x00000002, 0x4062BE38, 0x4063A820, 0x00000002, 0x4062BE39, 0x4063A820,\n\t0x00000002, 0x4062BE3A, 0x4063A820, 0x00000002, 0x4062BE3B, 0x4063A820,\n\t0x00000002, 0x4062BE3C, 0x4063A820, 0x00000002, 0x4062BE3D, 0x4063A820,\n\t0x00000002, 0x4062BE3E, 0x4063A820, 0x00000002, 0x4062BE3F, 0x4063A820,\n\t0x00000002, 0x4062BE40, 0x4063A820, 0x00000002, 0x4062BE41, 0x4063A820,\n\t0x00000002, 0x4062BE42, 0x4063A820, 0x00000002, 0x4062BE43, 0x4063A820,\n\t0x00000002, 0x4062BE44, 0x4063A820, 0x00000002,\n\t// Block 429, offset 0x6b40\n\t0x4062BE45, 0x4063A820, 0x00000002, 0x4062BE46, 0x4063A820, 0x00000002,\n\t0x4062BE47, 0x4063A820, 0x00000002, 0x4062BE48, 0x4063A820, 0x00000002,\n\t0x4062BE49, 0x4063A820, 0x00000002, 0x4062BE4A, 0x4063A820, 0x00000002,\n\t0x4062BE4B, 0x4063A820, 0x00000002, 0x4062BE4C, 0x4063A820, 0x00000002,\n\t0x4062BE4D, 0x4063A820, 0x00000002, 0x4062BE4E, 0x4063A820, 0x00000002,\n\t0x4062BE4F, 0x4063A820, 0x00000002, 0x4062BE50, 0x4063A820, 0x00000002,\n\t0x4062BE51, 0x4063A820, 0x00000002, 0x4062BE52, 0x4063A820, 0x00000002,\n\t0x4062BE53, 0x4063A820, 0x00000002, 0x4062BE54, 0x4063A820, 0x00000002,\n\t0x4062BE55, 0x4063A820, 0x00000002, 0x4062BE56, 0x4063A820, 0x00000002,\n\t0x4062BE57, 0x4063A820, 0x00000002, 0x4062BE58, 0x4063A820, 0x00000002,\n\t0x4062BE59, 0x4063A820, 0x00000002, 0x4062BE5A,\n\t// Block 430, offset 0x6b80\n\t0x4063A820, 0x00000002, 0x4062BE5B, 0x4063A820, 0x00000002, 0x4062BE5C,\n\t0x4063A820, 0x00000002, 0x4062BE5D, 0x4063A820, 0x00000002, 0x4062BE5E,\n\t0x4063A820, 0x00000002, 0x4062BE5F, 0x4063A820, 0x00000002, 0x4062BE60,\n\t0x4063A820, 0x00000002, 0x4062BE61, 0x4063A820, 0x00000002, 0x4062BE62,\n\t0x4063A820, 0x00000002, 0x4062BE63, 0x4063A820, 0x00000002, 0x4062BE64,\n\t0x4063A820, 0x00000002, 0x4062BE65, 0x4063A820, 0x00000002, 0x4062BE66,\n\t0x4063A820, 0x00000002, 0x4062BE67, 0x4063A820, 0x00000002, 0x4062BE68,\n\t0x4063A820, 0x00000002, 0x4062BE69, 0x4063A820, 0x00000002, 0x4062BE6A,\n\t0x4063A820, 0x00000002, 0x4062BE6B, 0x4063A820, 0x00000002, 0x4062BE6C,\n\t0x4063A820, 0x00000002, 0x4062BE6D, 0x4063A820, 0x00000002, 0x4062BE6E,\n\t0x4063A820, 0x00000002, 0x4062BE6F, 0x4063A820,\n\t// Block 431, offset 0x6bc0\n\t0x00000003, 0x4062BE21, 0x4063A820, 0x40646420, 0x00000003, 0x4062BE22,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BE23, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BE24, 0x4063A820, 0x40646420, 0x00000003, 0x4062BE25,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062BE26, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062BE21, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE22,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE23, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE24, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE25,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE26, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE27, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE28,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE29, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE2A, 0x4063A820, 0x40646A20,\n\t// Block 432, offset 0x6c00\n\t0x00000003, 0x4062BE2B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE2C,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE2D, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE2E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE2F,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE30, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE31, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE32,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE33, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE34, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE35,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE36, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062BE37, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE38,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062BE21, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BE22, 0x4063A820, 0x40647220,\n\t// Block 433, offset 0x6c40\n\t0x00000003, 0x4062BE23, 0x4063A820, 0x40647220, 0x00000003, 0x4062BE24,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062BE25, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062BE21, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE22,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062BE23, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062BE24, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE25,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062BE26, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062BE27, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE28,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062BE29, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062BE2A, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE21,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062BE22, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062BE23, 0x4063A820, 0x40648420,\n\t// Block 434, offset 0x6c80\n\t0x00000003, 0x4062BE24, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE25,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062BE26, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062BE27, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE28,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062BE29, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062BE2A, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE2B,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062BE21, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE22, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE23,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE24, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE25, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE26,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE27, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE28, 0x4063A820, 0x40648C20,\n\t// Block 435, offset 0x6cc0\n\t0x00000003, 0x4062BE29, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE2A,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE2B, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE2C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE2D,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE2E, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE2F, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE30,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE31, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE32, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE33,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE34, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE35, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE36,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE37, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE38, 0x4063A820, 0x40648C20,\n\t// Block 436, offset 0x6d00\n\t0x00000003, 0x4062BE39, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE3A,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE3B, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE3C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE3D,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE3E, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE3F, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE40,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE41, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE42, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE43,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE44, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE45, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE46,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062BE47, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062BE48, 0x4063A820, 0x40648C20,\n\t// Block 437, offset 0x6d40\n\t0x00000002, 0x4062BE21, 0x4063AA20, 0x00000002, 0x4062BE22, 0x4063AA20,\n\t0x00000002, 0x4062BE23, 0x4063AA20, 0x00000002, 0x4062BE24, 0x4063AA20,\n\t0x00000003, 0x4062BE21, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BE22,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062BE23, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062BE24, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BE25,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062BE26, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062BE27, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BE21,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062BE22, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062BE23, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062BE24,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062BE25, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062BE26, 0x4063AA20, 0x40648C20,\n\t// Block 438, offset 0x6d80\n\t0x00000002, 0x4062BE21, 0x4063B020, 0x00000002, 0x4062BE22, 0x4063B020,\n\t0x00000002, 0x4062BE23, 0x4063B020, 0x00000002, 0x4062BE24, 0x4063B020,\n\t0x00000002, 0x4062BE25, 0x4063B020, 0x00000002, 0x4062BE26, 0x4063B020,\n\t0x00000002, 0x4062BE27, 0x4063B020, 0x00000002, 0x4062BE28, 0x4063B020,\n\t0x00000002, 0x4062BE29, 0x4063B020, 0x00000002, 0x4062BE2A, 0x4063B020,\n\t0x00000002, 0x4062BE2B, 0x4063B020, 0x00000002, 0x4062BE2C, 0x4063B020,\n\t0x00000002, 0x4062BE2D, 0x4063B020, 0x00000002, 0x4062BE2E, 0x4063B020,\n\t0x00000002, 0x4062BE2F, 0x4063B020, 0x00000002, 0x4062BE30, 0x4063B020,\n\t0x00000002, 0x4062BE31, 0x4063B020, 0x00000002, 0x4062BE32, 0x4063B020,\n\t0x00000002, 0x4062BE33, 0x4063B020, 0x00000002, 0x4062BE34, 0x4063B020,\n\t0x00000002, 0x4062BE35, 0x4063B020, 0x00000002,\n\t// Block 439, offset 0x6dc0\n\t0x4062BE36, 0x4063B020, 0x00000002, 0x4062BE37, 0x4063B020, 0x00000002,\n\t0x4062BE38, 0x4063B020, 0x00000002, 0x4062BE39, 0x4063B020, 0x00000002,\n\t0x4062BE3A, 0x4063B020, 0x00000002, 0x4062BE3B, 0x4063B020, 0x00000002,\n\t0x4062BE3C, 0x4063B020, 0x00000002, 0x4062BE3D, 0x4063B020, 0x00000002,\n\t0x4062BE3E, 0x4063B020, 0x00000002, 0x4062BE3F, 0x4063B020, 0x00000002,\n\t0x4062BE40, 0x4063B020, 0x00000002, 0x4062BE41, 0x4063B020, 0x00000002,\n\t0x4062BE42, 0x4063B020, 0x00000002, 0x4062BE43, 0x4063B020, 0x00000002,\n\t0x4062BE44, 0x4063B020, 0x00000002, 0x4062BE45, 0x4063B020, 0x00000002,\n\t0x4062BE46, 0x4063B020, 0x00000002, 0x4062BE47, 0x4063B020, 0x00000002,\n\t0x4062BE48, 0x4063B020, 0x00000003, 0x4062BE21, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE22, 0x4063B020, 0x40646420,\n\t// Block 440, offset 0x6e00\n\t0x00000003, 0x4062BE23, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE24,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062BE25, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE26, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE27,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062BE28, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE29, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE2A,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062BE2B, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE2C, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE2D,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062BE2E, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE2F, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE30,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062BE31, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE32, 0x4063B020, 0x40646420,\n\t// Block 441, offset 0x6e40\n\t0x00000003, 0x4062BE33, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE34,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062BE35, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062BE36, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE21,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE22, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE23, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE24,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE25, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE26, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE27,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE28, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE29, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE2A,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE2B, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE2C, 0x4063B020, 0x40646A20,\n\t// Block 442, offset 0x6e80\n\t0x00000003, 0x4062BE2D, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE2E,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE2F, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE30, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE31,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE32, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE33, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE34,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE35, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE36, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE37,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE38, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE39, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE3A,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE3B, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE3C, 0x4063B020, 0x40646A20,\n\t// Block 443, offset 0x6ec0\n\t0x00000003, 0x4062BE3D, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE3E,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE3F, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE40, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE41,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE42, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE43, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE44,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE45, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE46, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE47,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE48, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE49, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE4A,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE4B, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE4C, 0x4063B020, 0x40646A20,\n\t// Block 444, offset 0x6f00\n\t0x00000003, 0x4062BE4D, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE4E,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062BE4F, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062BE50, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE21,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE22, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE23, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE24,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE25, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE26, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE27,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE28, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE29, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE2A,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE2B, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE2C, 0x4063B020, 0x40647220,\n\t// Block 445, offset 0x6f40\n\t0x00000003, 0x4062BE2D, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE2E,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE2F, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE30, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE31,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE32, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE33, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE34,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062BE35, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062BE21, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE22,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BE23, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BE24, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE25,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BE26, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BE27, 0x4063B020, 0x40648220,\n\t// Block 446, offset 0x6f80\n\t0x00000003, 0x4062BE28, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE29,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BE2A, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BE2B, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE2C,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BE2D, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062BE2E, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE2F,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062BE21, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062BE22, 0x4063B020, 0x40648420, 0x00000003, 0x4062BE23,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062BE24, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062BE25, 0x4063B020, 0x40648420, 0x00000003, 0x4062BE26,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062BE27, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062BE28, 0x4063B020, 0x40648420,\n\t// Block 447, offset 0x6fc0\n\t0x00000003, 0x4062BE29, 0x4063B020, 0x40648420, 0x00000003, 0x4062BE2A,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062BE21, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062BE22, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE23,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062BE24, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062BE25, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE26,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062BE27, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062BE28, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE29,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062BE2A, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062BE2B, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE2C,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062BE2D, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062BE2E, 0x4063B020, 0x40648C20,\n\t// Block 448, offset 0x7000\n\t0x00000003, 0x4062BE2F, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE30,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062BE31, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062BE32, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE33,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062BE34, 0x4063B020, 0x40648C20,\n\t0x00000002, 0x4062BE21, 0x4063B220, 0x00000002, 0x4062BE22, 0x4063B220,\n\t0x00000002, 0x4062BE23, 0x4063B220, 0x00000002, 0x4062BE24, 0x4063B220,\n\t0x00000002, 0x4062BE25, 0x4063B220, 0x00000002, 0x4062BE26, 0x4063B220,\n\t0x00000002, 0x4062BE27, 0x4063B220, 0x00000002, 0x4062BE28, 0x4063B220,\n\t0x00000002, 0x4062BE29, 0x4063B220, 0x00000002, 0x4062BE2A, 0x4063B220,\n\t0x00000002, 0x4062BE2B, 0x4063B220, 0x00000002, 0x4062BE2C, 0x4063B220,\n\t0x00000002, 0x4062BE21, 0x4063B820, 0x00000002,\n\t// Block 449, offset 0x7040\n\t0x4062BE22, 0x4063B820, 0x00000002, 0x4062BE23, 0x4063B820, 0x00000002,\n\t0x4062BE24, 0x4063B820, 0x00000002, 0x4062BE25, 0x4063B820, 0x00000002,\n\t0x4062BE26, 0x4063B820, 0x00000002, 0x4062BE27, 0x4063B820, 0x00000002,\n\t0x4062BE28, 0x4063B820, 0x00000002, 0x4062BE29, 0x4063B820, 0x00000002,\n\t0x4062BE2A, 0x4063B820, 0x00000002, 0x4062BE2B, 0x4063B820, 0x00000002,\n\t0x4062BE2C, 0x4063B820, 0x00000002, 0x4062BE2D, 0x4063B820, 0x00000002,\n\t0x4062BE2E, 0x4063B820, 0x00000002, 0x4062BE2F, 0x4063B820, 0x00000002,\n\t0x4062BE30, 0x4063B820, 0x00000002, 0x4062BE31, 0x4063B820, 0x00000002,\n\t0x4062BE32, 0x4063B820, 0x00000002, 0x4062BE33, 0x4063B820, 0x00000002,\n\t0x4062BE34, 0x4063B820, 0x00000002, 0x4062BE35, 0x4063B820, 0x00000002,\n\t0x4062BE36, 0x4063B820, 0x00000002, 0x4062BE37,\n\t// Block 450, offset 0x7080\n\t0x4063B820, 0x00000002, 0x4062BE38, 0x4063B820, 0x00000002, 0x4062BE39,\n\t0x4063B820, 0x00000002, 0x4062BE3A, 0x4063B820, 0x00000002, 0x4062BE3B,\n\t0x4063B820, 0x00000002, 0x4062BE3C, 0x4063B820, 0x00000002, 0x4062BE3D,\n\t0x4063B820, 0x00000002, 0x4062BE3E, 0x4063B820, 0x00000002, 0x4062BE3F,\n\t0x4063B820, 0x00000002, 0x4062BE40, 0x4063B820, 0x00000002, 0x4062BE41,\n\t0x4063B820, 0x00000002, 0x4062BE42, 0x4063B820, 0x00000002, 0x4062BE43,\n\t0x4063B820, 0x00000002, 0x4062BE44, 0x4063B820, 0x00000002, 0x4062BE45,\n\t0x4063B820, 0x00000002, 0x4062BE46, 0x4063B820, 0x00000002, 0x4062BE47,\n\t0x4063B820, 0x00000002, 0x4062BE48, 0x4063B820, 0x00000002, 0x4062BE49,\n\t0x4063B820, 0x00000002, 0x4062BE4A, 0x4063B820, 0x00000002, 0x4062BE4B,\n\t0x4063B820, 0x00000002, 0x4062BE4C, 0x4063B820,\n\t// Block 451, offset 0x70c0\n\t0x00000002, 0x4062BE4D, 0x4063B820, 0x00000002, 0x4062BE4E, 0x4063B820,\n\t0x00000002, 0x4062BE4F, 0x4063B820, 0x00000002, 0x4062BE50, 0x4063B820,\n\t0x00000002, 0x4062BE51, 0x4063B820, 0x00000002, 0x4062BE52, 0x4063B820,\n\t0x00000002, 0x4062BE53, 0x4063B820, 0x00000002, 0x4062BE54, 0x4063B820,\n\t0x00000002, 0x4062BE55, 0x4063B820, 0x00000002, 0x4062BE56, 0x4063B820,\n\t0x00000002, 0x4062BE57, 0x4063B820, 0x00000002, 0x4062BE58, 0x4063B820,\n\t0x00000002, 0x4062BE59, 0x4063B820, 0x00000002, 0x4062BE5A, 0x4063B820,\n\t0x00000002, 0x4062BE5B, 0x4063B820, 0x00000002, 0x4062BE5C, 0x4063B820,\n\t0x00000003, 0x4062BE21, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE22,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062BE23, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062BE24, 0x4063B820, 0x40646420,\n\t// Block 452, offset 0x7100\n\t0x00000003, 0x4062BE25, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE26,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062BE27, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062BE28, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE29,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062BE2A, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062BE2B, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE21,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062BE22, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062BE23, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BE24,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062BE25, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062BE26, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BE27,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062BE28, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062BE21, 0x4063B820, 0x40647220,\n\t// Block 453, offset 0x7140\n\t0x00000003, 0x4062BE22, 0x4063B820, 0x40647220, 0x00000003, 0x4062BE23,\n\t0x4063B820, 0x40647220, 0x00000003, 0x4062BE21, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062BE22, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BE23,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062BE24, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062BE25, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BE26,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062BE27, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062BE28, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BE29,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062BE2A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062BE2B, 0x4063B820, 0x40648C20, 0x00000002, 0x4062BE21,\n\t0x4063BC20, 0x00000002, 0x4062BE22, 0x4063BC20, 0x00000002, 0x4062BE23,\n\t0x4063BC20, 0x00000002, 0x4062BE24, 0x4063BC20,\n\t// Block 454, offset 0x7180\n\t0x00000002, 0x4062BE25, 0x4063BC20, 0x00000002, 0x4062BE26, 0x4063BC20,\n\t0x00000002, 0x4062BE27, 0x4063BC20, 0x00000002, 0x4062BE21, 0x4063BE20,\n\t0x00000002, 0x4062BE22, 0x4063BE20, 0x00000002, 0x4062BE21, 0x4063C220,\n\t0x00000002, 0x4062BE22, 0x4063C220, 0x00000002, 0x4062BE23, 0x4063C220,\n\t0x00000002, 0x4062BE24, 0x4063C220, 0x00000002, 0x4062BE25, 0x4063C220,\n\t0x00000002, 0x4062BE26, 0x4063C220, 0x00000002, 0x4062BE27, 0x4063C220,\n\t0x00000002, 0x4062BE28, 0x4063C220, 0x00000002, 0x4062BE29, 0x4063C220,\n\t0x00000002, 0x4062BE2A, 0x4063C220, 0x00000002, 0x4062BE2B, 0x4063C220,\n\t0x00000002, 0x4062BE2C, 0x4063C220, 0x00000002, 0x4062BE2D, 0x4063C220,\n\t0x00000002, 0x4062BE2E, 0x4063C220, 0x00000002, 0x4062BE2F, 0x4063C220,\n\t0x00000002, 0x4062BE30, 0x4063C220, 0x00000002,\n\t// Block 455, offset 0x71c0\n\t0x4062BE31, 0x4063C220, 0x00000002, 0x4062BE32, 0x4063C220, 0x00000002,\n\t0x4062BE33, 0x4063C220, 0x00000002, 0x4062BE34, 0x4063C220, 0x00000002,\n\t0x4062BE35, 0x4063C220, 0x00000002, 0x4062BE36, 0x4063C220, 0x00000002,\n\t0x4062BE37, 0x4063C220, 0x00000002, 0x4062BE38, 0x4063C220, 0x00000002,\n\t0x4062BE39, 0x4063C220, 0x00000002, 0x4062BE3A, 0x4063C220, 0x00000002,\n\t0x4062BE3B, 0x4063C220, 0x00000002, 0x4062BE3C, 0x4063C220, 0x00000002,\n\t0x4062BE3D, 0x4063C220, 0x00000002, 0x4062BE3E, 0x4063C220, 0x00000002,\n\t0x4062BE3F, 0x4063C220, 0x00000002, 0x4062BE40, 0x4063C220, 0x00000002,\n\t0x4062BE41, 0x4063C220, 0x00000002, 0x4062BE42, 0x4063C220, 0x00000002,\n\t0x4062BE43, 0x4063C220, 0x00000002, 0x4062BE44, 0x4063C220, 0x00000002,\n\t0x4062BE45, 0x4063C220, 0x00000002, 0x4062BE46,\n\t// Block 456, offset 0x7200\n\t0x4063C220, 0x00000002, 0x4062BE47, 0x4063C220, 0x00000002, 0x4062BE48,\n\t0x4063C220, 0x00000002, 0x4062BE49, 0x4063C220, 0x00000002, 0x4062BE4A,\n\t0x4063C220, 0x00000002, 0x4062BE4B, 0x4063C220, 0x00000002, 0x4062BE4C,\n\t0x4063C220, 0x00000002, 0x4062BE4D, 0x4063C220, 0x00000002, 0x4062BE4E,\n\t0x4063C220, 0x00000002, 0x4062BE4F, 0x4063C220, 0x00000002, 0x4062BE50,\n\t0x4063C220, 0x00000002, 0x4062BE51, 0x4063C220, 0x00000002, 0x4062BE52,\n\t0x4063C220, 0x00000002, 0x4062BE53, 0x4063C220, 0x00000002, 0x4062BE54,\n\t0x4063C220, 0x00000002, 0x4062BE55, 0x4063C220, 0x00000002, 0x4062BE56,\n\t0x4063C220, 0x00000002, 0x4062BE57, 0x4063C220, 0x00000002, 0x4062BE58,\n\t0x4063C220, 0x00000002, 0x4062BE59, 0x4063C220, 0x00000002, 0x4062BE5A,\n\t0x4063C220, 0x00000002, 0x4062BE5B, 0x4063C220,\n\t// Block 457, offset 0x7240\n\t0x00000002, 0x4062BE5C, 0x4063C220, 0x00000002, 0x4062BE5D, 0x4063C220,\n\t0x00000002, 0x4062BE5E, 0x4063C220, 0x00000002, 0x4062BE5F, 0x4063C220,\n\t0x00000002, 0x4062BE60, 0x4063C220, 0x00000002, 0x4062BE61, 0x4063C220,\n\t0x00000002, 0x4062BE62, 0x4063C220, 0x00000002, 0x4062BE63, 0x4063C220,\n\t0x00000002, 0x4062BE64, 0x4063C220, 0x00000002, 0x4062BE65, 0x4063C220,\n\t0x00000002, 0x4062BE66, 0x4063C220, 0x00000002, 0x4062BE67, 0x4063C220,\n\t0x00000002, 0x4062BE68, 0x4063C220, 0x00000002, 0x4062BE69, 0x4063C220,\n\t0x00000002, 0x4062BE6A, 0x4063C220, 0x00000002, 0x4062BE6B, 0x4063C220,\n\t0x00000002, 0x4062BE6C, 0x4063C220, 0x00000002, 0x4062BE6D, 0x4063C220,\n\t0x00000002, 0x4062BE6E, 0x4063C220, 0x00000002, 0x4062BE6F, 0x4063C220,\n\t0x00000002, 0x4062BE70, 0x4063C220, 0x00000002,\n\t// Block 458, offset 0x7280\n\t0x4062BE71, 0x4063C220, 0x00000002, 0x4062BE72, 0x4063C220, 0x00000003,\n\t0x4062BE21, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE22, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062BE23, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062BE24, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE25, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062BE26, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062BE27, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE28, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062BE29, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062BE2A, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE2B, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062BE2C, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062BE2D, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE2E, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062BE2F, 0x4063C220,\n\t// Block 459, offset 0x72c0\n\t0x40646420, 0x00000003, 0x4062BE30, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062BE31, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE32, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062BE33, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062BE21, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE22, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE23, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE24, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE25, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE26, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE27, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE28, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE29, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE2A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE2B, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE2C, 0x4063C220,\n\t// Block 460, offset 0x7300\n\t0x40646A20, 0x00000003, 0x4062BE2D, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE2E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE2F, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE30, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE31, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE32, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE33, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE34, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE35, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE36, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE37, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE38, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE39, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE3A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE3B, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE3C, 0x4063C220,\n\t// Block 461, offset 0x7340\n\t0x40646A20, 0x00000003, 0x4062BE3D, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE3E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE3F, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE40, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE41, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE42, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062BE43, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062BE44, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE21, 0x4063C220,\n\t0x40647220, 0x00000003, 0x4062BE22, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062BE23, 0x4063C220, 0x40647220, 0x00000003, 0x4062BE24, 0x4063C220,\n\t0x40647220, 0x00000003, 0x4062BE25, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062BE21, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BE22, 0x4063C220,\n\t0x40648C20, 0x00000003, 0x4062BE23, 0x4063C220,\n\t// Block 462, offset 0x7380\n\t0x40648C20, 0x00000003, 0x4062BE24, 0x4063C220, 0x40648C20, 0x00000002,\n\t0x4062BE21, 0x4063C820, 0x00000002, 0x4062BE22, 0x4063C820, 0x00000002,\n\t0x4062BE23, 0x4063C820, 0x00000003, 0x4062BE21, 0x4063CC20, 0x40647220,\n\t0x00000003, 0x4062BE22, 0x4063CC20, 0x40647220, 0x00000003, 0x4062BE23,\n\t0x4063CC20, 0x40647220, 0x00000003, 0x4062BE24, 0x4063CC20, 0x40647220,\n\t0x00000003, 0x4062BE21, 0x4063CC20, 0x40648420, 0x00000003, 0x4062BE22,\n\t0x4063CC20, 0x40648420, 0x00000003, 0x4062BE23, 0x4063CC20, 0x40648420,\n\t0x00000003, 0x4062BE24, 0x4063CC20, 0x40648420, 0x00000003, 0x4062BE25,\n\t0x4063CC20, 0x40648420, 0x00000003, 0x4062BE26, 0x4063CC20, 0x40648420,\n\t0x00000003, 0x4062BE27, 0x4063CC20, 0x40648420, 0x00000003, 0x4062BE28,\n\t0x4063CC20, 0x40648420, 0x00000003, 0x4062BE21,\n\t// Block 463, offset 0x73c0\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE22, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062BE23, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE24,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE25, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062BE26, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE27,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE28, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062BE29, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE2A,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE2B, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062BE2C, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062BE21,\n\t0x4063D020, 0x00000002, 0x4062BE22, 0x4063D020, 0x00000002, 0x4062BE23,\n\t0x4063D020, 0x00000002, 0x4062BE24, 0x4063D020, 0x00000002, 0x4062BE25,\n\t0x4063D020, 0x00000002, 0x4062BE26, 0x4063D020,\n\t// Block 464, offset 0x7400\n\t0x00000002, 0x4062BE27, 0x4063D020, 0x00000002, 0x4062BE28, 0x4063D020,\n\t0x00000002, 0x4062BE29, 0x4063D020, 0x00000002, 0x4062BE2A, 0x4063D020,\n\t0x00000002, 0x4062BE2B, 0x4063D020, 0x00000002, 0x4062BE2C, 0x4063D020,\n\t0x00000002, 0x4062BE2D, 0x4063D020, 0x00000002, 0x4062BE2E, 0x4063D020,\n\t0x00000002, 0x4062BE2F, 0x4063D020, 0x00000002, 0x4062BE30, 0x4063D020,\n\t0x00000002, 0x4062BE31, 0x4063D020, 0x00000002, 0x4062BE32, 0x4063D020,\n\t0x00000002, 0x4062BE33, 0x4063D020, 0x00000002, 0x4062BE34, 0x4063D020,\n\t0x00000002, 0x4062BE35, 0x4063D020, 0x00000002, 0x4062BE36, 0x4063D020,\n\t0x00000002, 0x4062BE37, 0x4063D020, 0x00000002, 0x4062BE38, 0x4063D020,\n\t0x00000002, 0x4062BE39, 0x4063D020, 0x00000002, 0x4062BE3A, 0x4063D020,\n\t0x00000002, 0x4062BE3B, 0x4063D020, 0x00000002,\n\t// Block 465, offset 0x7440\n\t0x4062BE3C, 0x4063D020, 0x00000002, 0x4062BE3D, 0x4063D020, 0x00000002,\n\t0x4062BE3E, 0x4063D020, 0x00000002, 0x4062BE3F, 0x4063D020, 0x00000002,\n\t0x4062BE40, 0x4063D020, 0x00000002, 0x4062BE41, 0x4063D020, 0x00000002,\n\t0x4062BE42, 0x4063D020, 0x00000002, 0x4062BE43, 0x4063D020, 0x00000002,\n\t0x4062BE44, 0x4063D020, 0x00000002, 0x4062BE45, 0x4063D020, 0x00000002,\n\t0x4062BE46, 0x4063D020, 0x00000002, 0x4062BE47, 0x4063D020, 0x00000002,\n\t0x4062BE48, 0x4063D020, 0x00000002, 0x4062BE49, 0x4063D020, 0x00000002,\n\t0x4062BE4A, 0x4063D020, 0x00000002, 0x4062BE4B, 0x4063D020, 0x00000002,\n\t0x4062BE4C, 0x4063D020, 0x00000002, 0x4062BE4D, 0x4063D020, 0x00000003,\n\t0x4062BE21, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE22, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062BE23, 0x4063D020,\n\t// Block 466, offset 0x7480\n\t0x40646420, 0x00000003, 0x4062BE24, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062BE25, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE26, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062BE27, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062BE28, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE29, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062BE2A, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062BE2B, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE2C, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062BE2D, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062BE2E, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE2F, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062BE30, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062BE31, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE32, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062BE21, 0x4063D020,\n\t// Block 467, offset 0x74c0\n\t0x40646A20, 0x00000003, 0x4062BE22, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE23, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE24, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE25, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE26, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE27, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE28, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE29, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE2A, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE2B, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE2C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE2D, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE2E, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE2F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE30, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE31, 0x4063D020,\n\t// Block 468, offset 0x7500\n\t0x40646A20, 0x00000003, 0x4062BE32, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE33, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE34, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE35, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE36, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE37, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE38, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE39, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE3A, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE3B, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE3C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE3D, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE3E, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062BE3F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE40, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062BE41, 0x4063D020,\n\t// Block 469, offset 0x7540\n\t0x40646A20, 0x00000003, 0x4062BE21, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062BE22, 0x4063D020, 0x40647220, 0x00000003, 0x4062BE23, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062BE24, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062BE25, 0x4063D020, 0x40647220, 0x00000003, 0x4062BE26, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062BE21, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062BE22, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE23, 0x4063D020,\n\t0x40648220, 0x00000003, 0x4062BE24, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062BE25, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE26, 0x4063D020,\n\t0x40648220, 0x00000003, 0x4062BE27, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062BE28, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE29, 0x4063D020,\n\t0x40648220, 0x00000003, 0x4062BE2A, 0x4063D020,\n\t// Block 470, offset 0x7580\n\t0x40648220, 0x00000003, 0x4062BE2B, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062BE2C, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE2D, 0x4063D020,\n\t0x40648220, 0x00000003, 0x4062BE2E, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062BE2F, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE21, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062BE22, 0x4063D020, 0x40648420, 0x00000003,\n\t0x4062BE23, 0x4063D020, 0x40648420, 0x00000003, 0x4062C021, 0x4063A820,\n\t0x40648C20, 0x00000002, 0x4062C021, 0x4063D020, 0x00000002, 0x4062C221,\n\t0x4063A820, 0x00000002, 0x4062C222, 0x4063A820, 0x00000002, 0x4062C223,\n\t0x4063A820, 0x00000002, 0x4062C224, 0x4063A820, 0x00000002, 0x4062C225,\n\t0x4063A820, 0x00000002, 0x4062C226, 0x4063A820, 0x00000002, 0x4062C227,\n\t0x4063A820, 0x00000002, 0x4062C228, 0x4063A820,\n\t// Block 471, offset 0x75c0\n\t0x00000002, 0x4062C229, 0x4063A820, 0x00000002, 0x4062C22A, 0x4063A820,\n\t0x00000002, 0x4062C22B, 0x4063A820, 0x00000002, 0x4062C22C, 0x4063A820,\n\t0x00000002, 0x4062C22D, 0x4063A820, 0x00000002, 0x4062C22E, 0x4063A820,\n\t0x00000002, 0x4062C22F, 0x4063A820, 0x00000002, 0x4062C230, 0x4063A820,\n\t0x00000002, 0x4062C231, 0x4063A820, 0x00000002, 0x4062C232, 0x4063A820,\n\t0x00000002, 0x4062C233, 0x4063A820, 0x00000002, 0x4062C234, 0x4063A820,\n\t0x00000002, 0x4062C235, 0x4063A820, 0x00000002, 0x4062C236, 0x4063A820,\n\t0x00000002, 0x4062C237, 0x4063A820, 0x00000002, 0x4062C238, 0x4063A820,\n\t0x00000002, 0x4062C239, 0x4063A820, 0x00000002, 0x4062C23A, 0x4063A820,\n\t0x00000002, 0x4062C23B, 0x4063A820, 0x00000002, 0x4062C23C, 0x4063A820,\n\t0x00000002, 0x4062C23D, 0x4063A820, 0x00000003,\n\t// Block 472, offset 0x7600\n\t0x4062C221, 0x4063A820, 0x40646420, 0x00000003, 0x4062C222, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C223, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C224, 0x4063A820, 0x40646420, 0x00000003, 0x4062C225, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C226, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C227, 0x4063A820, 0x40646420, 0x00000003, 0x4062C228, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C229, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C22A, 0x4063A820, 0x40646420, 0x00000003, 0x4062C22B, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C22C, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C22D, 0x4063A820, 0x40646420, 0x00000003, 0x4062C22E, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C22F, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C230, 0x4063A820, 0x40646420, 0x00000003,\n\t// Block 473, offset 0x7640\n\t0x4062C231, 0x4063A820, 0x40646420, 0x00000003, 0x4062C232, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C233, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C234, 0x4063A820, 0x40646420, 0x00000003, 0x4062C235, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C236, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C237, 0x4063A820, 0x40646420, 0x00000003, 0x4062C238, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C239, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C221, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C222, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C223, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C224, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C225, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C226, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C227, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 474, offset 0x7680\n\t0x4062C228, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C229, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C22A, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C22B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C22C, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C22D, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C22E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C221, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062C222, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062C223, 0x4063A820, 0x40647220, 0x00000003, 0x4062C224, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062C225, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062C226, 0x4063A820, 0x40647220, 0x00000003, 0x4062C227, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062C228, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062C229, 0x4063A820, 0x40647220, 0x00000003,\n\t// Block 475, offset 0x76c0\n\t0x4062C22A, 0x4063A820, 0x40647220, 0x00000003, 0x4062C22B, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062C22C, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062C221, 0x4063A820, 0x40648220, 0x00000003, 0x4062C222, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C223, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C224, 0x4063A820, 0x40648220, 0x00000003, 0x4062C225, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C226, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C227, 0x4063A820, 0x40648220, 0x00000003, 0x4062C228, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C229, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C22A, 0x4063A820, 0x40648220, 0x00000003, 0x4062C22B, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C22C, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C22D, 0x4063A820, 0x40648220, 0x00000003,\n\t// Block 476, offset 0x7700\n\t0x4062C22E, 0x4063A820, 0x40648220, 0x00000003, 0x4062C22F, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C230, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C231, 0x4063A820, 0x40648220, 0x00000003, 0x4062C232, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C233, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C221, 0x4063A820, 0x40648420, 0x00000003, 0x4062C222, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062C223, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062C224, 0x4063A820, 0x40648420, 0x00000003, 0x4062C221, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C222, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C223, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C224, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C225, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C226, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 477, offset 0x7740\n\t0x4062C227, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C228, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C229, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C22A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C22B, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C22C, 0x4063A820, 0x40648C20, 0x00000002,\n\t0x4062C221, 0x4063AA20, 0x00000002, 0x4062C222, 0x4063AA20, 0x00000002,\n\t0x4062C223, 0x4063AA20, 0x00000002, 0x4062C224, 0x4063AA20, 0x00000002,\n\t0x4062C225, 0x4063AA20, 0x00000002, 0x4062C226, 0x4063AA20, 0x00000002,\n\t0x4062C227, 0x4063AA20, 0x00000002, 0x4062C228, 0x4063AA20, 0x00000002,\n\t0x4062C229, 0x4063AA20, 0x00000002, 0x4062C22A, 0x4063AA20, 0x00000002,\n\t0x4062C22B, 0x4063AA20, 0x00000002, 0x4062C22C, 0x4063AA20, 0x00000002,\n\t0x4062C22D, 0x4063AA20, 0x00000002, 0x4062C22E,\n\t// Block 478, offset 0x7780\n\t0x4063AA20, 0x00000002, 0x4062C22F, 0x4063AA20, 0x00000002, 0x4062C230,\n\t0x4063AA20, 0x00000002, 0x4062C231, 0x4063AA20, 0x00000002, 0x4062C232,\n\t0x4063AA20, 0x00000002, 0x4062C233, 0x4063AA20, 0x00000002, 0x4062C234,\n\t0x4063AA20, 0x00000002, 0x4062C235, 0x4063AA20, 0x00000002, 0x4062C236,\n\t0x4063AA20, 0x00000002, 0x4062C237, 0x4063AA20, 0x00000002, 0x4062C238,\n\t0x4063AA20, 0x00000002, 0x4062C239, 0x4063AA20, 0x00000002, 0x4062C23A,\n\t0x4063AA20, 0x00000002, 0x4062C23B, 0x4063AA20, 0x00000002, 0x4062C23C,\n\t0x4063AA20, 0x00000002, 0x4062C23D, 0x4063AA20, 0x00000002, 0x4062C23E,\n\t0x4063AA20, 0x00000002, 0x4062C23F, 0x4063AA20, 0x00000003, 0x4062C221,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062C222, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062C223, 0x4063AA20, 0x40646420,\n\t// Block 479, offset 0x77c0\n\t0x00000003, 0x4062C224, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C225,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062C226, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062C227, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C228,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062C229, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062C22A, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C22B,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062C221, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062C222, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C223,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062C224, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062C225, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C226,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062C227, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062C228, 0x4063AA20, 0x40648C20,\n\t// Block 480, offset 0x7800\n\t0x00000002, 0x4062C221, 0x4063AC20, 0x00000002, 0x4062C222, 0x4063AC20,\n\t0x00000002, 0x4062C223, 0x4063AC20, 0x00000002, 0x4062C224, 0x4063AC20,\n\t0x00000002, 0x4062C225, 0x4063AC20, 0x00000002, 0x4062C226, 0x4063AC20,\n\t0x00000002, 0x4062C227, 0x4063AC20, 0x00000002, 0x4062C228, 0x4063AC20,\n\t0x00000002, 0x4062C229, 0x4063AC20, 0x00000002, 0x4062C22A, 0x4063AC20,\n\t0x00000002, 0x4062C22B, 0x4063AC20, 0x00000003, 0x4062C221, 0x4063AC20,\n\t0x40646420, 0x00000003, 0x4062C222, 0x4063AC20, 0x40646420, 0x00000003,\n\t0x4062C223, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C224, 0x4063AC20,\n\t0x40646420, 0x00000003, 0x4062C225, 0x4063AC20, 0x40646420, 0x00000003,\n\t0x4062C226, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C227, 0x4063AC20,\n\t0x40646420, 0x00000003, 0x4062C228, 0x4063AC20,\n\t// Block 481, offset 0x7840\n\t0x40646420, 0x00000003, 0x4062C229, 0x4063AC20, 0x40646420, 0x00000003,\n\t0x4062C22A, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C22B, 0x4063AC20,\n\t0x40646420, 0x00000003, 0x4062C22C, 0x4063AC20, 0x40646420, 0x00000003,\n\t0x4062C22D, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C22E, 0x4063AC20,\n\t0x40646420, 0x00000003, 0x4062C22F, 0x4063AC20, 0x40646420, 0x00000003,\n\t0x4062C221, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C222, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C223, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C224, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C225, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C226, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C227, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C228, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C229, 0x4063AC20,\n\t// Block 482, offset 0x7880\n\t0x40648C20, 0x00000003, 0x4062C22A, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C22B, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C22C, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C22D, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C22E, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C22F, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C230, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C231, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C232, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C233, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C234, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C235, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C236, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C237, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C238, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C239, 0x4063AC20,\n\t// Block 483, offset 0x78c0\n\t0x40648C20, 0x00000003, 0x4062C23A, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C23B, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C23C, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C23D, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C23E, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C23F, 0x4063AC20,\n\t0x40648C20, 0x00000003, 0x4062C240, 0x4063AC20, 0x40648C20, 0x00000003,\n\t0x4062C241, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C242, 0x4063AC20,\n\t0x40648C20, 0x00000002, 0x4062C221, 0x4063B020, 0x00000002, 0x4062C222,\n\t0x4063B020, 0x00000002, 0x4062C223, 0x4063B020, 0x00000002, 0x4062C224,\n\t0x4063B020, 0x00000002, 0x4062C225, 0x4063B020, 0x00000002, 0x4062C226,\n\t0x4063B020, 0x00000002, 0x4062C227, 0x4063B020, 0x00000002, 0x4062C228,\n\t0x4063B020, 0x00000002, 0x4062C229, 0x4063B020,\n\t// Block 484, offset 0x7900\n\t0x00000002, 0x4062C22A, 0x4063B020, 0x00000002, 0x4062C22B, 0x4063B020,\n\t0x00000002, 0x4062C22C, 0x4063B020, 0x00000002, 0x4062C22D, 0x4063B020,\n\t0x00000002, 0x4062C22E, 0x4063B020, 0x00000003, 0x4062C221, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C222, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C223, 0x4063B020, 0x40646420, 0x00000003, 0x4062C224, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C225, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C226, 0x4063B020, 0x40646420, 0x00000003, 0x4062C221, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C222, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C223, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C224, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C225, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C226, 0x4063B020, 0x40646A20, 0x00000003,\n\t// Block 485, offset 0x7940\n\t0x4062C227, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C228, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C229, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C22A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C22C, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C22D, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C221, 0x4063B020,\n\t0x40647220, 0x00000003, 0x4062C222, 0x4063B020, 0x40647220, 0x00000003,\n\t0x4062C223, 0x4063B020, 0x40647220, 0x00000003, 0x4062C221, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C222, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C223, 0x4063B020, 0x40648220, 0x00000003, 0x4062C224, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C225, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C226, 0x4063B020, 0x40648220, 0x00000003,\n\t// Block 486, offset 0x7980\n\t0x4062C227, 0x4063B020, 0x40648220, 0x00000003, 0x4062C228, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C229, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C22A, 0x4063B020, 0x40648220, 0x00000003, 0x4062C22B, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C22C, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C221, 0x4063B020, 0x40648420, 0x00000003, 0x4062C222, 0x4063B020,\n\t0x40648420, 0x00000003, 0x4062C223, 0x4063B020, 0x40648420, 0x00000003,\n\t0x4062C224, 0x4063B020, 0x40648420, 0x00000002, 0x4062C221, 0x4063B220,\n\t0x00000002, 0x4062C222, 0x4063B220, 0x00000003, 0x4062C221, 0x4063B220,\n\t0x40646A20, 0x00000002, 0x4062C221, 0x4063B420, 0x00000002, 0x4062C222,\n\t0x4063B420, 0x00000002, 0x4062C223, 0x4063B420, 0x00000002, 0x4062C224,\n\t0x4063B420, 0x00000002, 0x4062C225, 0x4063B420,\n\t// Block 487, offset 0x79c0\n\t0x00000002, 0x4062C226, 0x4063B420, 0x00000002, 0x4062C227, 0x4063B420,\n\t0x00000002, 0x4062C228, 0x4063B420, 0x00000002, 0x4062C229, 0x4063B420,\n\t0x00000002, 0x4062C22A, 0x4063B420, 0x00000002, 0x4062C22B, 0x4063B420,\n\t0x00000002, 0x4062C22C, 0x4063B420, 0x00000002, 0x4062C22D, 0x4063B420,\n\t0x00000002, 0x4062C22E, 0x4063B420, 0x00000003, 0x4062C221, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062C222, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062C223, 0x4063B420, 0x40646420, 0x00000003, 0x4062C224, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062C225, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062C226, 0x4063B420, 0x40646420, 0x00000003, 0x4062C227, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062C228, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062C229, 0x4063B420, 0x40646420, 0x00000003,\n\t// Block 488, offset 0x7a00\n\t0x4062C22A, 0x4063B420, 0x40646420, 0x00000003, 0x4062C22B, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062C22C, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062C22D, 0x4063B420, 0x40646420, 0x00000003, 0x4062C221, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C222, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C223, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C224, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C225, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C226, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C227, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C228, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C229, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C22A, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C22B, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C22C, 0x4063B420, 0x40646A20, 0x00000003,\n\t// Block 489, offset 0x7a40\n\t0x4062C22D, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C22F, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C230, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C231, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C232, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C233, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C234, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C235, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C236, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C237, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C238, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C239, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C23A, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C23B, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C23C, 0x4063B420, 0x40646A20, 0x00000003,\n\t// Block 490, offset 0x7a80\n\t0x4062C23D, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C23E, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C23F, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C240, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C241, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C242, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C243, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C244, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C245, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C246, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C247, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C248, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C249, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C24A, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062C24B, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062C24C, 0x4063B420, 0x40646A20, 0x00000003,\n\t// Block 491, offset 0x7ac0\n\t0x4062C221, 0x4063B420, 0x40647220, 0x00000003, 0x4062C222, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062C223, 0x4063B420, 0x40647220, 0x00000003,\n\t0x4062C224, 0x4063B420, 0x40647220, 0x00000003, 0x4062C225, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062C221, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C222, 0x4063B420, 0x40648220, 0x00000003, 0x4062C223, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C224, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C225, 0x4063B420, 0x40648220, 0x00000003, 0x4062C226, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C227, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C228, 0x4063B420, 0x40648220, 0x00000003, 0x4062C229, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C22A, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C22B, 0x4063B420, 0x40648220, 0x00000003,\n\t// Block 492, offset 0x7b00\n\t0x4062C22C, 0x4063B420, 0x40648220, 0x00000003, 0x4062C22D, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C22E, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C22F, 0x4063B420, 0x40648220, 0x00000003, 0x4062C230, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C231, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C232, 0x4063B420, 0x40648220, 0x00000003, 0x4062C233, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C234, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062C235, 0x4063B420, 0x40648220, 0x00000003, 0x4062C236, 0x4063B420,\n\t0x40648220, 0x00000003, 0x4062C221, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062C222, 0x4063B420, 0x40648420, 0x00000003, 0x4062C223, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062C224, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062C225, 0x4063B420, 0x40648420, 0x00000003,\n\t// Block 493, offset 0x7b40\n\t0x4062C226, 0x4063B420, 0x40648420, 0x00000003, 0x4062C227, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062C221, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C222, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C223, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C224, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C225, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C226, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C227, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C228, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C229, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C22A, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C22B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C22C, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C22D, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C22E, 0x4063B420, 0x40648C20, 0x00000003,\n\t// Block 494, offset 0x7b80\n\t0x4062C22F, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C230, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C231, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C232, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C233, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C234, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C235, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C236, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C237, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C238, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C239, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C23A, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C23B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C23C, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C23D, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C23E, 0x4063B420, 0x40648C20, 0x00000003,\n\t// Block 495, offset 0x7bc0\n\t0x4062C23F, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C240, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C241, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C242, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C243, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C244, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062C245, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C246, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062C247, 0x4063B420, 0x40648C20, 0x00000002,\n\t0x4062C221, 0x4063B620, 0x00000002, 0x4062C222, 0x4063B620, 0x00000002,\n\t0x4062C223, 0x4063B620, 0x00000002, 0x4062C224, 0x4063B620, 0x00000002,\n\t0x4062C225, 0x4063B620, 0x00000002, 0x4062C226, 0x4063B620, 0x00000002,\n\t0x4062C227, 0x4063B620, 0x00000002, 0x4062C228, 0x4063B620, 0x00000002,\n\t0x4062C229, 0x4063B620, 0x00000002, 0x4062C22A,\n\t// Block 496, offset 0x7c00\n\t0x4063B620, 0x00000002, 0x4062C22B, 0x4063B620, 0x00000002, 0x4062C22C,\n\t0x4063B620, 0x00000002, 0x4062C22D, 0x4063B620, 0x00000002, 0x4062C22E,\n\t0x4063B620, 0x00000002, 0x4062C22F, 0x4063B620, 0x00000002, 0x4062C230,\n\t0x4063B620, 0x00000002, 0x4062C231, 0x4063B620, 0x00000002, 0x4062C232,\n\t0x4063B620, 0x00000002, 0x4062C233, 0x4063B620, 0x00000002, 0x4062C234,\n\t0x4063B620, 0x00000002, 0x4062C235, 0x4063B620, 0x00000002, 0x4062C236,\n\t0x4063B620, 0x00000002, 0x4062C237, 0x4063B620, 0x00000002, 0x4062C238,\n\t0x4063B620, 0x00000002, 0x4062C239, 0x4063B620, 0x00000002, 0x4062C23A,\n\t0x4063B620, 0x00000002, 0x4062C23B, 0x4063B620, 0x00000002, 0x4062C23C,\n\t0x4063B620, 0x00000002, 0x4062C23D, 0x4063B620, 0x00000002, 0x4062C23E,\n\t0x4063B620, 0x00000002, 0x4062C23F, 0x4063B620,\n\t// Block 497, offset 0x7c40\n\t0x00000002, 0x4062C240, 0x4063B620, 0x00000002, 0x4062C241, 0x4063B620,\n\t0x00000002, 0x4062C242, 0x4063B620, 0x00000002, 0x4062C243, 0x4063B620,\n\t0x00000002, 0x4062C244, 0x4063B620, 0x00000002, 0x4062C245, 0x4063B620,\n\t0x00000002, 0x4062C246, 0x4063B620, 0x00000002, 0x4062C247, 0x4063B620,\n\t0x00000002, 0x4062C221, 0x4063B820, 0x00000002, 0x4062C222, 0x4063B820,\n\t0x00000002, 0x4062C223, 0x4063B820, 0x00000002, 0x4062C224, 0x4063B820,\n\t0x00000002, 0x4062C225, 0x4063B820, 0x00000002, 0x4062C226, 0x4063B820,\n\t0x00000002, 0x4062C227, 0x4063B820, 0x00000002, 0x4062C228, 0x4063B820,\n\t0x00000002, 0x4062C229, 0x4063B820, 0x00000002, 0x4062C22A, 0x4063B820,\n\t0x00000002, 0x4062C22B, 0x4063B820, 0x00000002, 0x4062C22C, 0x4063B820,\n\t0x00000002, 0x4062C22D, 0x4063B820, 0x00000002,\n\t// Block 498, offset 0x7c80\n\t0x4062C22E, 0x4063B820, 0x00000002, 0x4062C22F, 0x4063B820, 0x00000002,\n\t0x4062C230, 0x4063B820, 0x00000002, 0x4062C231, 0x4063B820, 0x00000002,\n\t0x4062C232, 0x4063B820, 0x00000002, 0x4062C233, 0x4063B820, 0x00000002,\n\t0x4062C234, 0x4063B820, 0x00000002, 0x4062C235, 0x4063B820, 0x00000002,\n\t0x4062C236, 0x4063B820, 0x00000002, 0x4062C237, 0x4063B820, 0x00000002,\n\t0x4062C238, 0x4063B820, 0x00000002, 0x4062C239, 0x4063B820, 0x00000002,\n\t0x4062C23A, 0x4063B820, 0x00000002, 0x4062C23B, 0x4063B820, 0x00000002,\n\t0x4062C23C, 0x4063B820, 0x00000002, 0x4062C23D, 0x4063B820, 0x00000002,\n\t0x4062C23E, 0x4063B820, 0x00000002, 0x4062C23F, 0x4063B820, 0x00000002,\n\t0x4062C240, 0x4063B820, 0x00000002, 0x4062C241, 0x4063B820, 0x00000002,\n\t0x4062C242, 0x4063B820, 0x00000002, 0x4062C243,\n\t// Block 499, offset 0x7cc0\n\t0x4063B820, 0x00000002, 0x4062C244, 0x4063B820, 0x00000002, 0x4062C245,\n\t0x4063B820, 0x00000002, 0x4062C246, 0x4063B820, 0x00000002, 0x4062C247,\n\t0x4063B820, 0x00000002, 0x4062C248, 0x4063B820, 0x00000002, 0x4062C249,\n\t0x4063B820, 0x00000002, 0x4062C24A, 0x4063B820, 0x00000002, 0x4062C24B,\n\t0x4063B820, 0x00000002, 0x4062C24C, 0x4063B820, 0x00000002, 0x4062C24D,\n\t0x4063B820, 0x00000002, 0x4062C24E, 0x4063B820, 0x00000002, 0x4062C24F,\n\t0x4063B820, 0x00000002, 0x4062C250, 0x4063B820, 0x00000002, 0x4062C251,\n\t0x4063B820, 0x00000002, 0x4062C252, 0x4063B820, 0x00000002, 0x4062C253,\n\t0x4063B820, 0x00000002, 0x4062C254, 0x4063B820, 0x00000002, 0x4062C255,\n\t0x4063B820, 0x00000002, 0x4062C256, 0x4063B820, 0x00000003, 0x4062C221,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062C222,\n\t// Block 500, offset 0x7d00\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062C223, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062C224, 0x4063B820, 0x40646420, 0x00000003, 0x4062C225,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062C221, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C222, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C223,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C224, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C225, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C226,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C227, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C228, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C229,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C22A, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C22B, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C22C,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C22D,\n\t// Block 501, offset 0x7d40\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C22F, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C230,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C231, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C221, 0x4063B820, 0x40647220, 0x00000003, 0x4062C222,\n\t0x4063B820, 0x40647220, 0x00000003, 0x4062C223, 0x4063B820, 0x40647220,\n\t0x00000003, 0x4062C221, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C222,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C223, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C224, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C225,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C226, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C227, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C228,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C229,\n\t// Block 502, offset 0x7d80\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C22A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C22B, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C22C,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C22D, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C22E, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C22F,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C230, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C231, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C232,\n\t0x4063B820, 0x40648C20, 0x00000002, 0x4062C221, 0x4063BA20, 0x00000002,\n\t0x4062C222, 0x4063BA20, 0x00000002, 0x4062C223, 0x4063BA20, 0x00000002,\n\t0x4062C224, 0x4063BA20, 0x00000002, 0x4062C225, 0x4063BA20, 0x00000002,\n\t0x4062C226, 0x4063BA20, 0x00000002, 0x4062C227, 0x4063BA20, 0x00000002,\n\t0x4062C228, 0x4063BA20, 0x00000002, 0x4062C229,\n\t// Block 503, offset 0x7dc0\n\t0x4063BA20, 0x00000002, 0x4062C22A, 0x4063BA20, 0x00000002, 0x4062C22B,\n\t0x4063BA20, 0x00000002, 0x4062C22C, 0x4063BA20, 0x00000002, 0x4062C22D,\n\t0x4063BA20, 0x00000002, 0x4062C22E, 0x4063BA20, 0x00000002, 0x4062C22F,\n\t0x4063BA20, 0x00000002, 0x4062C230, 0x4063BA20, 0x00000002, 0x4062C231,\n\t0x4063BA20, 0x00000003, 0x4062C221, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C222, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C223, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C224, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C225, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C226, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C227, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C228, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C229, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C22A, 0x4063BA20,\n\t// Block 504, offset 0x7e00\n\t0x40646A20, 0x00000003, 0x4062C22B, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C22C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C22D, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C22E, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C22F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C230, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C231, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C232, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C233, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C234, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C235, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C236, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C237, 0x4063BA20, 0x40646A20, 0x00000003,\n\t0x4062C238, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C239, 0x4063BA20,\n\t0x40646A20, 0x00000003, 0x4062C23A, 0x4063BA20,\n\t// Block 505, offset 0x7e40\n\t0x40646A20, 0x00000003, 0x4062C221, 0x4063BA20, 0x40647220, 0x00000003,\n\t0x4062C221, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062C222, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062C223, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062C224, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062C225, 0x4063BA20,\n\t0x40648C20, 0x00000003, 0x4062C226, 0x4063BA20, 0x40648C20, 0x00000003,\n\t0x4062C227, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062C228, 0x4063BA20,\n\t0x40648C20, 0x00000002, 0x4062C221, 0x4063BC20, 0x00000002, 0x4062C222,\n\t0x4063BC20, 0x00000002, 0x4062C223, 0x4063BC20, 0x00000002, 0x4062C224,\n\t0x4063BC20, 0x00000002, 0x4062C225, 0x4063BC20, 0x00000002, 0x4062C221,\n\t0x4063BE20, 0x00000002, 0x4062C222, 0x4063BE20, 0x00000002, 0x4062C223,\n\t0x4063BE20, 0x00000002, 0x4062C224, 0x4063BE20,\n\t// Block 506, offset 0x7e80\n\t0x00000002, 0x4062C225, 0x4063BE20, 0x00000002, 0x4062C226, 0x4063BE20,\n\t0x00000002, 0x4062C227, 0x4063BE20, 0x00000002, 0x4062C228, 0x4063BE20,\n\t0x00000002, 0x4062C229, 0x4063BE20, 0x00000002, 0x4062C22A, 0x4063BE20,\n\t0x00000002, 0x4062C22B, 0x4063BE20, 0x00000002, 0x4062C22C, 0x4063BE20,\n\t0x00000002, 0x4062C22D, 0x4063BE20, 0x00000002, 0x4062C22E, 0x4063BE20,\n\t0x00000002, 0x4062C221, 0x4063C020, 0x00000002, 0x4062C222, 0x4063C020,\n\t0x00000002, 0x4062C223, 0x4063C020, 0x00000002, 0x4062C224, 0x4063C020,\n\t0x00000002, 0x4062C225, 0x4063C020, 0x00000002, 0x4062C226, 0x4063C020,\n\t0x00000002, 0x4062C227, 0x4063C020, 0x00000002, 0x4062C228, 0x4063C020,\n\t0x00000002, 0x4062C229, 0x4063C020, 0x00000002, 0x4062C22A, 0x4063C020,\n\t0x00000002, 0x4062C22B, 0x4063C020, 0x00000002,\n\t// Block 507, offset 0x7ec0\n\t0x4062C22C, 0x4063C020, 0x00000002, 0x4062C22D, 0x4063C020, 0x00000002,\n\t0x4062C22E, 0x4063C020, 0x00000002, 0x4062C22F, 0x4063C020, 0x00000002,\n\t0x4062C230, 0x4063C020, 0x00000002, 0x4062C231, 0x4063C020, 0x00000002,\n\t0x4062C232, 0x4063C020, 0x00000002, 0x4062C233, 0x4063C020, 0x00000002,\n\t0x4062C234, 0x4063C020, 0x00000002, 0x4062C235, 0x4063C020, 0x00000002,\n\t0x4062C236, 0x4063C020, 0x00000002, 0x4062C237, 0x4063C020, 0x00000002,\n\t0x4062C238, 0x4063C020, 0x00000002, 0x4062C239, 0x4063C020, 0x00000002,\n\t0x4062C23A, 0x4063C020, 0x00000002, 0x4062C23B, 0x4063C020, 0x00000002,\n\t0x4062C23C, 0x4063C020, 0x00000002, 0x4062C23D, 0x4063C020, 0x00000002,\n\t0x4062C23E, 0x4063C020, 0x00000002, 0x4062C23F, 0x4063C020, 0x00000002,\n\t0x4062C240, 0x4063C020, 0x00000002, 0x4062C241,\n\t// Block 508, offset 0x7f00\n\t0x4063C020, 0x00000002, 0x4062C242, 0x4063C020, 0x00000002, 0x4062C243,\n\t0x4063C020, 0x00000002, 0x4062C244, 0x4063C020, 0x00000002, 0x4062C245,\n\t0x4063C020, 0x00000002, 0x4062C246, 0x4063C020, 0x00000002, 0x4062C247,\n\t0x4063C020, 0x00000002, 0x4062C248, 0x4063C020, 0x00000002, 0x4062C249,\n\t0x4063C020, 0x00000002, 0x4062C24A, 0x4063C020, 0x00000002, 0x4062C24B,\n\t0x4063C020, 0x00000002, 0x4062C24C, 0x4063C020, 0x00000003, 0x4062C221,\n\t0x4063C020, 0x40646420, 0x00000003, 0x4062C222, 0x4063C020, 0x40646420,\n\t0x00000003, 0x4062C223, 0x4063C020, 0x40646420, 0x00000003, 0x4062C224,\n\t0x4063C020, 0x40646420, 0x00000003, 0x4062C225, 0x4063C020, 0x40646420,\n\t0x00000003, 0x4062C226, 0x4063C020, 0x40646420, 0x00000003, 0x4062C227,\n\t0x4063C020, 0x40646420, 0x00000003, 0x4062C228,\n\t// Block 509, offset 0x7f40\n\t0x4063C020, 0x40646420, 0x00000003, 0x4062C221, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C222, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C223,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C224, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C225, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C226,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C227, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C228, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C229,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C22A, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C22B, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C22C,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C22D, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C22E, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C22F,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C230,\n\t// Block 510, offset 0x7f80\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C231, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C232, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C233,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C234, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C235, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C236,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C237, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C238, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C239,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C23A, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C23B, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C23C,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C23D, 0x4063C020, 0x40648C20,\n\t0x00000003, 0x4062C23E, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C23F,\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C240,\n\t// Block 511, offset 0x7fc0\n\t0x4063C020, 0x40648C20, 0x00000003, 0x4062C241, 0x4063C020, 0x40648C20,\n\t0x00000002, 0x4062C221, 0x4063C220, 0x00000002, 0x4062C222, 0x4063C220,\n\t0x00000002, 0x4062C223, 0x4063C220, 0x00000002, 0x4062C224, 0x4063C220,\n\t0x00000002, 0x4062C225, 0x4063C220, 0x00000002, 0x4062C226, 0x4063C220,\n\t0x00000002, 0x4062C227, 0x4063C220, 0x00000002, 0x4062C228, 0x4063C220,\n\t0x00000002, 0x4062C229, 0x4063C220, 0x00000002, 0x4062C22A, 0x4063C220,\n\t0x00000002, 0x4062C22B, 0x4063C220, 0x00000002, 0x4062C22C, 0x4063C220,\n\t0x00000002, 0x4062C22D, 0x4063C220, 0x00000002, 0x4062C22E, 0x4063C220,\n\t0x00000002, 0x4062C22F, 0x4063C220, 0x00000002, 0x4062C230, 0x4063C220,\n\t0x00000002, 0x4062C231, 0x4063C220, 0x00000002, 0x4062C232, 0x4063C220,\n\t0x00000002, 0x4062C233, 0x4063C220, 0x00000002,\n\t// Block 512, offset 0x8000\n\t0x4062C234, 0x4063C220, 0x00000002, 0x4062C235, 0x4063C220, 0x00000002,\n\t0x4062C236, 0x4063C220, 0x00000002, 0x4062C237, 0x4063C220, 0x00000002,\n\t0x4062C238, 0x4063C220, 0x00000002, 0x4062C239, 0x4063C220, 0x00000002,\n\t0x4062C23A, 0x4063C220, 0x00000002, 0x4062C23B, 0x4063C220, 0x00000002,\n\t0x4062C23C, 0x4063C220, 0x00000002, 0x4062C23D, 0x4063C220, 0x00000002,\n\t0x4062C23E, 0x4063C220, 0x00000002, 0x4062C23F, 0x4063C220, 0x00000002,\n\t0x4062C240, 0x4063C220, 0x00000002, 0x4062C241, 0x4063C220, 0x00000002,\n\t0x4062C242, 0x4063C220, 0x00000002, 0x4062C243, 0x4063C220, 0x00000002,\n\t0x4062C244, 0x4063C220, 0x00000002, 0x4062C245, 0x4063C220, 0x00000002,\n\t0x4062C246, 0x4063C220, 0x00000002, 0x4062C247, 0x4063C220, 0x00000002,\n\t0x4062C248, 0x4063C220, 0x00000002, 0x4062C249,\n\t// Block 513, offset 0x8040\n\t0x4063C220, 0x00000002, 0x4062C24A, 0x4063C220, 0x00000002, 0x4062C24B,\n\t0x4063C220, 0x00000002, 0x4062C24C, 0x4063C220, 0x00000002, 0x4062C24D,\n\t0x4063C220, 0x00000002, 0x4062C24E, 0x4063C220, 0x00000002, 0x4062C24F,\n\t0x4063C220, 0x00000002, 0x4062C250, 0x4063C220, 0x00000002, 0x4062C251,\n\t0x4063C220, 0x00000002, 0x4062C252, 0x4063C220, 0x00000002, 0x4062C253,\n\t0x4063C220, 0x00000002, 0x4062C254, 0x4063C220, 0x00000003, 0x4062C221,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C222, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C223, 0x4063C220, 0x40646420, 0x00000003, 0x4062C224,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C225, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C226, 0x4063C220, 0x40646420, 0x00000003, 0x4062C227,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C228,\n\t// Block 514, offset 0x8080\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C229, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C22A, 0x4063C220, 0x40646420, 0x00000003, 0x4062C221,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C222, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C223, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C224,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C225, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C226, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C227,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C228, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C229, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C22A,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C22C, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C22D,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C22E,\n\t// Block 515, offset 0x80c0\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C22F, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C230, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C231,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C232, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C221, 0x4063C220, 0x40647220, 0x00000003, 0x4062C222,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062C223, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062C221, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C222,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062C221, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C222, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C223,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C224, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C225, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C226,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C227,\n\t// Block 516, offset 0x8100\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C228, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C229, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C22A,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C22C, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C22D,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C22F, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C230,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C231, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C232, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C233,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C234, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C235, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C236,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C237,\n\t// Block 517, offset 0x8140\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C238, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C239, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C23A,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C23B, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C23C, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C23D,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C23E, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C23F, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C240,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C241, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C242, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C243,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C244, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C245, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C246,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C247,\n\t// Block 518, offset 0x8180\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062C248, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062C221, 0x4063C420, 0x40647220, 0x00000003, 0x4062C222,\n\t0x4063C420, 0x40647220, 0x00000003, 0x4062C223, 0x4063C420, 0x40647220,\n\t0x00000003, 0x4062C224, 0x4063C420, 0x40647220, 0x00000003, 0x4062C225,\n\t0x4063C420, 0x40647220, 0x00000002, 0x4062C221, 0x4063C820, 0x00000002,\n\t0x4062C222, 0x4063C820, 0x00000002, 0x4062C223, 0x4063C820, 0x00000002,\n\t0x4062C224, 0x4063C820, 0x00000002, 0x4062C225, 0x4063C820, 0x00000002,\n\t0x4062C226, 0x4063C820, 0x00000002, 0x4062C227, 0x4063C820, 0x00000002,\n\t0x4062C228, 0x4063C820, 0x00000002, 0x4062C229, 0x4063C820, 0x00000002,\n\t0x4062C22A, 0x4063C820, 0x00000002, 0x4062C22B, 0x4063C820, 0x00000002,\n\t0x4062C22C, 0x4063C820, 0x00000002, 0x4062C22D,\n\t// Block 519, offset 0x81c0\n\t0x4063C820, 0x00000002, 0x4062C22E, 0x4063C820, 0x00000002, 0x4062C22F,\n\t0x4063C820, 0x00000002, 0x4062C230, 0x4063C820, 0x00000002, 0x4062C231,\n\t0x4063C820, 0x00000002, 0x4062C232, 0x4063C820, 0x00000002, 0x4062C233,\n\t0x4063C820, 0x00000002, 0x4062C234, 0x4063C820, 0x00000002, 0x4062C235,\n\t0x4063C820, 0x00000002, 0x4062C236, 0x4063C820, 0x00000002, 0x4062C237,\n\t0x4063C820, 0x00000002, 0x4062C238, 0x4063C820, 0x00000002, 0x4062C239,\n\t0x4063C820, 0x00000002, 0x4062C23A, 0x4063C820, 0x00000002, 0x4062C23B,\n\t0x4063C820, 0x00000002, 0x4062C23C, 0x4063C820, 0x00000002, 0x4062C23D,\n\t0x4063C820, 0x00000002, 0x4062C23E, 0x4063C820, 0x00000002, 0x4062C23F,\n\t0x4063C820, 0x00000002, 0x4062C240, 0x4063C820, 0x00000002, 0x4062C241,\n\t0x4063C820, 0x00000002, 0x4062C242, 0x4063C820,\n\t// Block 520, offset 0x8200\n\t0x00000002, 0x4062C243, 0x4063C820, 0x00000002, 0x4062C244, 0x4063C820,\n\t0x00000002, 0x4062C245, 0x4063C820, 0x00000002, 0x4062C246, 0x4063C820,\n\t0x00000002, 0x4062C247, 0x4063C820, 0x00000002, 0x4062C221, 0x4063CA20,\n\t0x00000002, 0x4062C222, 0x4063CA20, 0x00000002, 0x4062C223, 0x4063CA20,\n\t0x00000002, 0x4062C224, 0x4063CA20, 0x00000002, 0x4062C225, 0x4063CA20,\n\t0x00000002, 0x4062C226, 0x4063CA20, 0x00000002, 0x4062C227, 0x4063CA20,\n\t0x00000002, 0x4062C228, 0x4063CA20, 0x00000002, 0x4062C229, 0x4063CA20,\n\t0x00000002, 0x4062C22A, 0x4063CA20, 0x00000002, 0x4062C22B, 0x4063CA20,\n\t0x00000002, 0x4062C22C, 0x4063CA20, 0x00000002, 0x4062C22D, 0x4063CA20,\n\t0x00000002, 0x4062C22E, 0x4063CA20, 0x00000002, 0x4062C22F, 0x4063CA20,\n\t0x00000002, 0x4062C230, 0x4063CA20, 0x00000002,\n\t// Block 521, offset 0x8240\n\t0x4062C231, 0x4063CA20, 0x00000002, 0x4062C232, 0x4063CA20, 0x00000002,\n\t0x4062C233, 0x4063CA20, 0x00000002, 0x4062C234, 0x4063CA20, 0x00000002,\n\t0x4062C235, 0x4063CA20, 0x00000002, 0x4062C236, 0x4063CA20, 0x00000002,\n\t0x4062C237, 0x4063CA20, 0x00000002, 0x4062C238, 0x4063CA20, 0x00000002,\n\t0x4062C239, 0x4063CA20, 0x00000002, 0x4062C23A, 0x4063CA20, 0x00000002,\n\t0x4062C23B, 0x4063CA20, 0x00000002, 0x4062C23C, 0x4063CA20, 0x00000002,\n\t0x4062C23D, 0x4063CA20, 0x00000002, 0x4062C23E, 0x4063CA20, 0x00000002,\n\t0x4062C23F, 0x4063CA20, 0x00000002, 0x4062C240, 0x4063CA20, 0x00000002,\n\t0x4062C241, 0x4063CA20, 0x00000002, 0x4062C242, 0x4063CA20, 0x00000002,\n\t0x4062C243, 0x4063CA20, 0x00000002, 0x4062C244, 0x4063CA20, 0x00000002,\n\t0x4062C245, 0x4063CA20, 0x00000002, 0x4062C246,\n\t// Block 522, offset 0x8280\n\t0x4063CA20, 0x00000002, 0x4062C247, 0x4063CA20, 0x00000002, 0x4062C248,\n\t0x4063CA20, 0x00000002, 0x4062C249, 0x4063CA20, 0x00000002, 0x4062C24A,\n\t0x4063CA20, 0x00000002, 0x4062C24B, 0x4063CA20, 0x00000002, 0x4062C24C,\n\t0x4063CA20, 0x00000002, 0x4062C24D, 0x4063CA20, 0x00000002, 0x4062C24E,\n\t0x4063CA20, 0x00000002, 0x4062C24F, 0x4063CA20, 0x00000002, 0x4062C250,\n\t0x4063CA20, 0x00000002, 0x4062C251, 0x4063CA20, 0x00000002, 0x4062C252,\n\t0x4063CA20, 0x00000002, 0x4062C253, 0x4063CA20, 0x00000002, 0x4062C254,\n\t0x4063CA20, 0x00000002, 0x4062C255, 0x4063CA20, 0x00000002, 0x4062C256,\n\t0x4063CA20, 0x00000002, 0x4062C257, 0x4063CA20, 0x00000002, 0x4062C258,\n\t0x4063CA20, 0x00000002, 0x4062C259, 0x4063CA20, 0x00000002, 0x4062C25A,\n\t0x4063CA20, 0x00000002, 0x4062C25B, 0x4063CA20,\n\t// Block 523, offset 0x82c0\n\t0x00000002, 0x4062C25C, 0x4063CA20, 0x00000002, 0x4062C25D, 0x4063CA20,\n\t0x00000002, 0x4062C25E, 0x4063CA20, 0x00000002, 0x4062C25F, 0x4063CA20,\n\t0x00000002, 0x4062C260, 0x4063CA20, 0x00000002, 0x4062C261, 0x4063CA20,\n\t0x00000002, 0x4062C262, 0x4063CA20, 0x00000002, 0x4062C263, 0x4063CA20,\n\t0x00000002, 0x4062C264, 0x4063CA20, 0x00000002, 0x4062C265, 0x4063CA20,\n\t0x00000002, 0x4062C266, 0x4063CA20, 0x00000002, 0x4062C267, 0x4063CA20,\n\t0x00000002, 0x4062C268, 0x4063CA20, 0x00000002, 0x4062C269, 0x4063CA20,\n\t0x00000002, 0x4062C26A, 0x4063CA20, 0x00000002, 0x4062C26B, 0x4063CA20,\n\t0x00000002, 0x4062C26C, 0x4063CA20, 0x00000002, 0x4062C26D, 0x4063CA20,\n\t0x00000003, 0x4062C221, 0x4063CA20, 0x40646420, 0x00000003, 0x4062C222,\n\t0x4063CA20, 0x40646420, 0x00000003, 0x4062C223,\n\t// Block 524, offset 0x8300\n\t0x4063CA20, 0x40646420, 0x00000003, 0x4062C224, 0x4063CA20, 0x40646420,\n\t0x00000003, 0x4062C225, 0x4063CA20, 0x40646420, 0x00000003, 0x4062C221,\n\t0x4063CA20, 0x40646A20, 0x00000003, 0x4062C222, 0x4063CA20, 0x40646A20,\n\t0x00000003, 0x4062C223, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C224,\n\t0x4063CA20, 0x40646A20, 0x00000003, 0x4062C225, 0x4063CA20, 0x40646A20,\n\t0x00000003, 0x4062C226, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C227,\n\t0x4063CA20, 0x40646A20, 0x00000003, 0x4062C228, 0x4063CA20, 0x40646A20,\n\t0x00000003, 0x4062C229, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C22A,\n\t0x4063CA20, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063CA20, 0x40646A20,\n\t0x00000003, 0x4062C221, 0x4063CA20, 0x40647220, 0x00000003, 0x4062C222,\n\t0x4063CA20, 0x40647220, 0x00000003, 0x4062C223,\n\t// Block 525, offset 0x8340\n\t0x4063CA20, 0x40647220, 0x00000003, 0x4062C221, 0x4063CA20, 0x40648C20,\n\t0x00000003, 0x4062C222, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062C223,\n\t0x4063CA20, 0x40648C20, 0x00000003, 0x4062C224, 0x4063CA20, 0x40648C20,\n\t0x00000003, 0x4062C225, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062C221,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C222, 0x4063CC20, 0x40646A20,\n\t0x00000003, 0x4062C223, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C224,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C225, 0x4063CC20, 0x40646A20,\n\t0x00000003, 0x4062C226, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C227,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C228, 0x4063CC20, 0x40646A20,\n\t0x00000003, 0x4062C229, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22A,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22B,\n\t// Block 526, offset 0x8380\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22C, 0x4063CC20, 0x40646A20,\n\t0x00000003, 0x4062C22D, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22E,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22F, 0x4063CC20, 0x40646A20,\n\t0x00000003, 0x4062C230, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C231,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C232, 0x4063CC20, 0x40646A20,\n\t0x00000003, 0x4062C233, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C234,\n\t0x4063CC20, 0x40646A20, 0x00000003, 0x4062C221, 0x4063CC20, 0x40647220,\n\t0x00000003, 0x4062C222, 0x4063CC20, 0x40647220, 0x00000003, 0x4062C221,\n\t0x4063CC20, 0x40648220, 0x00000003, 0x4062C222, 0x4063CC20, 0x40648220,\n\t0x00000003, 0x4062C223, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C224,\n\t0x4063CC20, 0x40648220, 0x00000003, 0x4062C225,\n\t// Block 527, offset 0x83c0\n\t0x4063CC20, 0x40648220, 0x00000003, 0x4062C226, 0x4063CC20, 0x40648220,\n\t0x00000003, 0x4062C227, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C228,\n\t0x4063CC20, 0x40648220, 0x00000003, 0x4062C229, 0x4063CC20, 0x40648220,\n\t0x00000003, 0x4062C22A, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C22B,\n\t0x4063CC20, 0x40648220, 0x00000003, 0x4062C221, 0x4063CC20, 0x40648420,\n\t0x00000003, 0x4062C222, 0x4063CC20, 0x40648420, 0x00000003, 0x4062C223,\n\t0x4063CC20, 0x40648420, 0x00000003, 0x4062C224, 0x4063CC20, 0x40648420,\n\t0x00000003, 0x4062C225, 0x4063CC20, 0x40648420, 0x00000003, 0x4062C226,\n\t0x4063CC20, 0x40648420, 0x00000003, 0x4062C221, 0x4063CC20, 0x40648C20,\n\t0x00000003, 0x4062C222, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C223,\n\t0x4063CC20, 0x40648C20, 0x00000003, 0x4062C224,\n\t// Block 528, offset 0x8400\n\t0x4063CC20, 0x40648C20, 0x00000002, 0x4062C221, 0x4063CE20, 0x00000002,\n\t0x4062C222, 0x4063CE20, 0x00000002, 0x4062C223, 0x4063CE20, 0x00000002,\n\t0x4062C224, 0x4063CE20, 0x00000002, 0x4062C225, 0x4063CE20, 0x00000002,\n\t0x4062C226, 0x4063CE20, 0x00000002, 0x4062C227, 0x4063CE20, 0x00000002,\n\t0x4062C228, 0x4063CE20, 0x00000002, 0x4062C229, 0x4063CE20, 0x00000002,\n\t0x4062C22A, 0x4063CE20, 0x00000002, 0x4062C22B, 0x4063CE20, 0x00000002,\n\t0x4062C22C, 0x4063CE20, 0x00000002, 0x4062C22D, 0x4063CE20, 0x00000002,\n\t0x4062C22E, 0x4063CE20, 0x00000002, 0x4062C22F, 0x4063CE20, 0x00000002,\n\t0x4062C230, 0x4063CE20, 0x00000002, 0x4062C231, 0x4063CE20, 0x00000002,\n\t0x4062C232, 0x4063CE20, 0x00000002, 0x4062C233, 0x4063CE20, 0x00000002,\n\t0x4062C234, 0x4063CE20, 0x00000002, 0x4062C235,\n\t// Block 529, offset 0x8440\n\t0x4063CE20, 0x00000002, 0x4062C236, 0x4063CE20, 0x00000002, 0x4062C237,\n\t0x4063CE20, 0x00000002, 0x4062C238, 0x4063CE20, 0x00000002, 0x4062C239,\n\t0x4063CE20, 0x00000002, 0x4062C23A, 0x4063CE20, 0x00000002, 0x4062C23B,\n\t0x4063CE20, 0x00000002, 0x4062C23C, 0x4063CE20, 0x00000002, 0x4062C23D,\n\t0x4063CE20, 0x00000002, 0x4062C221, 0x4063D020, 0x00000002, 0x4062C222,\n\t0x4063D020, 0x00000002, 0x4062C223, 0x4063D020, 0x00000002, 0x4062C224,\n\t0x4063D020, 0x00000002, 0x4062C225, 0x4063D020, 0x00000002, 0x4062C226,\n\t0x4063D020, 0x00000002, 0x4062C227, 0x4063D020, 0x00000002, 0x4062C228,\n\t0x4063D020, 0x00000002, 0x4062C229, 0x4063D020, 0x00000002, 0x4062C22A,\n\t0x4063D020, 0x00000002, 0x4062C22B, 0x4063D020, 0x00000002, 0x4062C22C,\n\t0x4063D020, 0x00000002, 0x4062C22D, 0x4063D020,\n\t// Block 530, offset 0x8480\n\t0x00000002, 0x4062C22E, 0x4063D020, 0x00000002, 0x4062C22F, 0x4063D020,\n\t0x00000002, 0x4062C230, 0x4063D020, 0x00000002, 0x4062C231, 0x4063D020,\n\t0x00000002, 0x4062C232, 0x4063D020, 0x00000002, 0x4062C233, 0x4063D020,\n\t0x00000002, 0x4062C234, 0x4063D020, 0x00000002, 0x4062C235, 0x4063D020,\n\t0x00000002, 0x4062C236, 0x4063D020, 0x00000002, 0x4062C237, 0x4063D020,\n\t0x00000002, 0x4062C238, 0x4063D020, 0x00000002, 0x4062C239, 0x4063D020,\n\t0x00000002, 0x4062C23A, 0x4063D020, 0x00000002, 0x4062C23B, 0x4063D020,\n\t0x00000002, 0x4062C23C, 0x4063D020, 0x00000002, 0x4062C23D, 0x4063D020,\n\t0x00000002, 0x4062C23E, 0x4063D020, 0x00000002, 0x4062C23F, 0x4063D020,\n\t0x00000002, 0x4062C240, 0x4063D020, 0x00000002, 0x4062C241, 0x4063D020,\n\t0x00000002, 0x4062C242, 0x4063D020, 0x00000002,\n\t// Block 531, offset 0x84c0\n\t0x4062C243, 0x4063D020, 0x00000003, 0x4062C221, 0x4063D020, 0x40646420,\n\t0x00000003, 0x4062C222, 0x4063D020, 0x40646420, 0x00000003, 0x4062C223,\n\t0x4063D020, 0x40646420, 0x00000003, 0x4062C224, 0x4063D020, 0x40646420,\n\t0x00000003, 0x4062C225, 0x4063D020, 0x40646420, 0x00000003, 0x4062C226,\n\t0x4063D020, 0x40646420, 0x00000003, 0x4062C227, 0x4063D020, 0x40646420,\n\t0x00000003, 0x4062C228, 0x4063D020, 0x40646420, 0x00000003, 0x4062C229,\n\t0x4063D020, 0x40646420, 0x00000003, 0x4062C221, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C222, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C223,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C224, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C225, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C226,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C227,\n\t// Block 532, offset 0x8500\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C228, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C229, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C22A,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C22C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C22D,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C22F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C230,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C231, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C232, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C233,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C234, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C235, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C236,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C237,\n\t// Block 533, offset 0x8540\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C238, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C239, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C23A,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C23B, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C23C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C221,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062C222, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062C223, 0x4063D020, 0x40647220, 0x00000003, 0x4062C224,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062C225, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062C226, 0x4063D020, 0x40647220, 0x00000003, 0x4062C227,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062C228, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062C229, 0x4063D020, 0x40647220, 0x00000003, 0x4062C22A,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062C22B,\n\t// Block 534, offset 0x8580\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062C221, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C222, 0x4063D020, 0x40648220, 0x00000003, 0x4062C223,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C224, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C225, 0x4063D020, 0x40648220, 0x00000003, 0x4062C226,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C227, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C228, 0x4063D020, 0x40648220, 0x00000003, 0x4062C229,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C22A, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C22B, 0x4063D020, 0x40648220, 0x00000003, 0x4062C22C,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C221, 0x4063D020, 0x40648420,\n\t0x00000003, 0x4062C222, 0x4063D020, 0x40648420, 0x00000003, 0x4062C223,\n\t0x4063D020, 0x40648420, 0x00000003, 0x4062C221,\n\t// Block 535, offset 0x85c0\n\t0x4063D020, 0x40648C20, 0x00000003, 0x4062C222, 0x4063D020, 0x40648C20,\n\t0x00000003, 0x4062C223, 0x4063D020, 0x40648C20, 0x00000003, 0x4062C224,\n\t0x4063D020, 0x40648C20, 0x00000003, 0x4062C225, 0x4063D020, 0x40648C20,\n\t0x00000002, 0x4062C421, 0x4063A820, 0x00000002, 0x4062C422, 0x4063A820,\n\t0x00000002, 0x4062C423, 0x4063A820, 0x00000002, 0x4062C424, 0x4063A820,\n\t0x00000002, 0x4062C425, 0x4063A820, 0x00000002, 0x4062C426, 0x4063A820,\n\t0x00000002, 0x4062C427, 0x4063A820, 0x00000002, 0x4062C428, 0x4063A820,\n\t0x00000002, 0x4062C429, 0x4063A820, 0x00000002, 0x4062C42A, 0x4063A820,\n\t0x00000002, 0x4062C42B, 0x4063A820, 0x00000002, 0x4062C42C, 0x4063A820,\n\t0x00000002, 0x4062C42D, 0x4063A820, 0x00000002, 0x4062C42E, 0x4063A820,\n\t0x00000002, 0x4062C42F, 0x4063A820, 0x00000002,\n\t// Block 536, offset 0x8600\n\t0x4062C430, 0x4063A820, 0x00000002, 0x4062C431, 0x4063A820, 0x00000002,\n\t0x4062C432, 0x4063A820, 0x00000002, 0x4062C433, 0x4063A820, 0x00000002,\n\t0x4062C434, 0x4063A820, 0x00000002, 0x4062C435, 0x4063A820, 0x00000002,\n\t0x4062C436, 0x4063A820, 0x00000002, 0x4062C437, 0x4063A820, 0x00000002,\n\t0x4062C438, 0x4063A820, 0x00000002, 0x4062C439, 0x4063A820, 0x00000002,\n\t0x4062C43A, 0x4063A820, 0x00000002, 0x4062C43B, 0x4063A820, 0x00000002,\n\t0x4062C43C, 0x4063A820, 0x00000002, 0x4062C43D, 0x4063A820, 0x00000002,\n\t0x4062C43E, 0x4063A820, 0x00000002, 0x4062C43F, 0x4063A820, 0x00000002,\n\t0x4062C440, 0x4063A820, 0x00000002, 0x4062C441, 0x4063A820, 0x00000002,\n\t0x4062C442, 0x4063A820, 0x00000002, 0x4062C443, 0x4063A820, 0x00000002,\n\t0x4062C444, 0x4063A820, 0x00000002, 0x4062C445,\n\t// Block 537, offset 0x8640\n\t0x4063A820, 0x00000002, 0x4062C446, 0x4063A820, 0x00000002, 0x4062C447,\n\t0x4063A820, 0x00000002, 0x4062C448, 0x4063A820, 0x00000002, 0x4062C449,\n\t0x4063A820, 0x00000002, 0x4062C44A, 0x4063A820, 0x00000002, 0x4062C44B,\n\t0x4063A820, 0x00000002, 0x4062C44C, 0x4063A820, 0x00000002, 0x4062C44D,\n\t0x4063A820, 0x00000002, 0x4062C44E, 0x4063A820, 0x00000002, 0x4062C44F,\n\t0x4063A820, 0x00000002, 0x4062C450, 0x4063A820, 0x00000002, 0x4062C451,\n\t0x4063A820, 0x00000002, 0x4062C452, 0x4063A820, 0x00000002, 0x4062C453,\n\t0x4063A820, 0x00000002, 0x4062C454, 0x4063A820, 0x00000003, 0x4062C421,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C422, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062C423, 0x4063A820, 0x40646420, 0x00000003, 0x4062C424,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C425,\n\t// Block 538, offset 0x8680\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C426, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062C427, 0x4063A820, 0x40646420, 0x00000003, 0x4062C428,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C429, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062C42A, 0x4063A820, 0x40646420, 0x00000003, 0x4062C42B,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C42C, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062C42D, 0x4063A820, 0x40646420, 0x00000003, 0x4062C42E,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C42F, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062C430, 0x4063A820, 0x40646420, 0x00000003, 0x4062C431,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C432, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062C433, 0x4063A820, 0x40646420, 0x00000003, 0x4062C434,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C435,\n\t// Block 539, offset 0x86c0\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062C421, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062C422, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C423,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062C424, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062C425, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C426,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062C427, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062C428, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C421,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062C422, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062C423, 0x4063A820, 0x40648220, 0x00000003, 0x4062C424,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062C425, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062C426, 0x4063A820, 0x40648220, 0x00000003, 0x4062C427,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062C428,\n\t// Block 540, offset 0x8700\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062C429, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062C421, 0x4063A820, 0x40648420, 0x00000003, 0x4062C422,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062C423, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062C424, 0x4063A820, 0x40648420, 0x00000003, 0x4062C425,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062C426, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062C421, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C422,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C423, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C424, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C425,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C426, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C427, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C428,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C429,\n\t// Block 541, offset 0x8740\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C42A, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C42B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C42C,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C42D, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C42E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C42F,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C430, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C431, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C432,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C433, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C434, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C435,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C436, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C437, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C438,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C439,\n\t// Block 542, offset 0x8780\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C43A, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C43B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C43C,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C43D, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C43E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C43F,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C440, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C441, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C442,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C443, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C444, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C445,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C446, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C447, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C448,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C449,\n\t// Block 543, offset 0x87c0\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C44A, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C44B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C44C,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C44D, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C44E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C44F,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C450, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C451, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C452,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C453, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C454, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C455,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062C456, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062C457, 0x4063A820, 0x40648C20, 0x00000002, 0x4062C421,\n\t0x4063AA20, 0x00000002, 0x4062C422, 0x4063AA20,\n\t// Block 544, offset 0x8800\n\t0x00000002, 0x4062C423, 0x4063AA20, 0x00000002, 0x4062C424, 0x4063AA20,\n\t0x00000002, 0x4062C425, 0x4063AA20, 0x00000002, 0x4062C426, 0x4063AA20,\n\t0x00000002, 0x4062C427, 0x4063AA20, 0x00000002, 0x4062C428, 0x4063AA20,\n\t0x00000002, 0x4062C429, 0x4063AA20, 0x00000002, 0x4062C42A, 0x4063AA20,\n\t0x00000002, 0x4062C42B, 0x4063AA20, 0x00000002, 0x4062C42C, 0x4063AA20,\n\t0x00000002, 0x4062C42D, 0x4063AA20, 0x00000002, 0x4062C42E, 0x4063AA20,\n\t0x00000002, 0x4062C42F, 0x4063AA20, 0x00000002, 0x4062C430, 0x4063AA20,\n\t0x00000002, 0x4062C431, 0x4063AA20, 0x00000002, 0x4062C432, 0x4063AA20,\n\t0x00000002, 0x4062C433, 0x4063AA20, 0x00000002, 0x4062C434, 0x4063AA20,\n\t0x00000002, 0x4062C435, 0x4063AA20, 0x00000002, 0x4062C436, 0x4063AA20,\n\t0x00000002, 0x4062C437, 0x4063AA20, 0x00000003,\n\t// Block 545, offset 0x8840\n\t0x4062C421, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C422, 0x4063AA20,\n\t0x40648C20, 0x00000003, 0x4062C423, 0x4063AA20, 0x40648C20, 0x00000003,\n\t0x4062C424, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C425, 0x4063AA20,\n\t0x40648C20, 0x00000003, 0x4062C426, 0x4063AA20, 0x40648C20, 0x00000003,\n\t0x4062C427, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C428, 0x4063AA20,\n\t0x40648C20, 0x00000002, 0x4062C421, 0x4063B020, 0x00000002, 0x4062C422,\n\t0x4063B020, 0x00000002, 0x4062C423, 0x4063B020, 0x00000002, 0x4062C424,\n\t0x4063B020, 0x00000002, 0x4062C425, 0x4063B020, 0x00000002, 0x4062C426,\n\t0x4063B020, 0x00000002, 0x4062C427, 0x4063B020, 0x00000002, 0x4062C428,\n\t0x4063B020, 0x00000002, 0x4062C429, 0x4063B020, 0x00000002, 0x4062C42A,\n\t0x4063B020, 0x00000002, 0x4062C42B, 0x4063B020,\n\t// Block 546, offset 0x8880\n\t0x00000002, 0x4062C42C, 0x4063B020, 0x00000002, 0x4062C42D, 0x4063B020,\n\t0x00000002, 0x4062C42E, 0x4063B020, 0x00000002, 0x4062C42F, 0x4063B020,\n\t0x00000002, 0x4062C430, 0x4063B020, 0x00000002, 0x4062C431, 0x4063B020,\n\t0x00000002, 0x4062C432, 0x4063B020, 0x00000002, 0x4062C433, 0x4063B020,\n\t0x00000002, 0x4062C434, 0x4063B020, 0x00000002, 0x4062C435, 0x4063B020,\n\t0x00000002, 0x4062C436, 0x4063B020, 0x00000002, 0x4062C437, 0x4063B020,\n\t0x00000002, 0x4062C438, 0x4063B020, 0x00000002, 0x4062C439, 0x4063B020,\n\t0x00000002, 0x4062C43A, 0x4063B020, 0x00000002, 0x4062C43B, 0x4063B020,\n\t0x00000002, 0x4062C43C, 0x4063B020, 0x00000002, 0x4062C43D, 0x4063B020,\n\t0x00000002, 0x4062C43E, 0x4063B020, 0x00000002, 0x4062C43F, 0x4063B020,\n\t0x00000002, 0x4062C440, 0x4063B020, 0x00000002,\n\t// Block 547, offset 0x88c0\n\t0x4062C441, 0x4063B020, 0x00000002, 0x4062C442, 0x4063B020, 0x00000002,\n\t0x4062C443, 0x4063B020, 0x00000002, 0x4062C444, 0x4063B020, 0x00000002,\n\t0x4062C445, 0x4063B020, 0x00000002, 0x4062C446, 0x4063B020, 0x00000002,\n\t0x4062C447, 0x4063B020, 0x00000002, 0x4062C448, 0x4063B020, 0x00000002,\n\t0x4062C449, 0x4063B020, 0x00000002, 0x4062C44A, 0x4063B020, 0x00000002,\n\t0x4062C44B, 0x4063B020, 0x00000002, 0x4062C44C, 0x4063B020, 0x00000002,\n\t0x4062C44D, 0x4063B020, 0x00000002, 0x4062C44E, 0x4063B020, 0x00000003,\n\t0x4062C421, 0x4063B020, 0x40646420, 0x00000003, 0x4062C422, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C423, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C424, 0x4063B020, 0x40646420, 0x00000003, 0x4062C425, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C426, 0x4063B020,\n\t// Block 548, offset 0x8900\n\t0x40646420, 0x00000003, 0x4062C427, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C428, 0x4063B020, 0x40646420, 0x00000003, 0x4062C429, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C42A, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C42B, 0x4063B020, 0x40646420, 0x00000003, 0x4062C42C, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C42D, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C42E, 0x4063B020, 0x40646420, 0x00000003, 0x4062C42F, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C430, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C431, 0x4063B020, 0x40646420, 0x00000003, 0x4062C432, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C433, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C434, 0x4063B020, 0x40646420, 0x00000003, 0x4062C435, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C436, 0x4063B020,\n\t// Block 549, offset 0x8940\n\t0x40646420, 0x00000003, 0x4062C437, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C438, 0x4063B020, 0x40646420, 0x00000003, 0x4062C439, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C43A, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C43B, 0x4063B020, 0x40646420, 0x00000003, 0x4062C43C, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C43D, 0x4063B020, 0x40646420, 0x00000003,\n\t0x4062C43E, 0x4063B020, 0x40646420, 0x00000003, 0x4062C43F, 0x4063B020,\n\t0x40646420, 0x00000003, 0x4062C421, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C422, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C423, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C424, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C425, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C426, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C427, 0x4063B020,\n\t// Block 550, offset 0x8980\n\t0x40646A20, 0x00000003, 0x4062C428, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C429, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C42A, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C42B, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C42C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C42D, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C42E, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C42F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C430, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C431, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C432, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C433, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C434, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C435, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C436, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C437, 0x4063B020,\n\t// Block 551, offset 0x89c0\n\t0x40646A20, 0x00000003, 0x4062C438, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C439, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C43A, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C43B, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C43C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C43D, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C43E, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C43F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C440, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C441, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C442, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C443, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C444, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C445, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C446, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C447, 0x4063B020,\n\t// Block 552, offset 0x8a00\n\t0x40646A20, 0x00000003, 0x4062C448, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C449, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C44A, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C44B, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C44C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C44D, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C44E, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C44F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C450, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C451, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C452, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C453, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C454, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C455, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C456, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C457, 0x4063B020,\n\t// Block 553, offset 0x8a40\n\t0x40646A20, 0x00000003, 0x4062C458, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C459, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C45A, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C45B, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C45C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C45D, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C45E, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C45F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C460, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C461, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C462, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C463, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C464, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C465, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C466, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C467, 0x4063B020,\n\t// Block 554, offset 0x8a80\n\t0x40646A20, 0x00000003, 0x4062C468, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C469, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C46A, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C46B, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C46C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C46D, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C46E, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C46F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C470, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062C471, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062C421, 0x4063B020, 0x40647220, 0x00000003, 0x4062C422, 0x4063B020,\n\t0x40647220, 0x00000003, 0x4062C423, 0x4063B020, 0x40647220, 0x00000003,\n\t0x4062C424, 0x4063B020, 0x40647220, 0x00000003, 0x4062C425, 0x4063B020,\n\t0x40647220, 0x00000003, 0x4062C426, 0x4063B020,\n\t// Block 555, offset 0x8ac0\n\t0x40647220, 0x00000003, 0x4062C427, 0x4063B020, 0x40647220, 0x00000003,\n\t0x4062C428, 0x4063B020, 0x40647220, 0x00000003, 0x4062C429, 0x4063B020,\n\t0x40647220, 0x00000003, 0x4062C42A, 0x4063B020, 0x40647220, 0x00000003,\n\t0x4062C42B, 0x4063B020, 0x40647220, 0x00000003, 0x4062C421, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C422, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C423, 0x4063B020, 0x40648220, 0x00000003, 0x4062C424, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C425, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C426, 0x4063B020, 0x40648220, 0x00000003, 0x4062C427, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C428, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C429, 0x4063B020, 0x40648220, 0x00000003, 0x4062C42A, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C42B, 0x4063B020,\n\t// Block 556, offset 0x8b00\n\t0x40648220, 0x00000003, 0x4062C42C, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C42D, 0x4063B020, 0x40648220, 0x00000003, 0x4062C42E, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C42F, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C430, 0x4063B020, 0x40648220, 0x00000003, 0x4062C431, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C432, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062C433, 0x4063B020, 0x40648220, 0x00000003, 0x4062C434, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062C421, 0x4063B020, 0x40648420, 0x00000003,\n\t0x4062C422, 0x4063B020, 0x40648420, 0x00000003, 0x4062C423, 0x4063B020,\n\t0x40648420, 0x00000003, 0x4062C424, 0x4063B020, 0x40648420, 0x00000003,\n\t0x4062C425, 0x4063B020, 0x40648420, 0x00000003, 0x4062C426, 0x4063B020,\n\t0x40648420, 0x00000003, 0x4062C427, 0x4063B020,\n\t// Block 557, offset 0x8b40\n\t0x40648420, 0x00000003, 0x4062C428, 0x4063B020, 0x40648420, 0x00000003,\n\t0x4062C429, 0x4063B020, 0x40648420, 0x00000003, 0x4062C421, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C422, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C423, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C424, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C425, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C426, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C427, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C428, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C429, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C42A, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C42B, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C42C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C42D, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C42E, 0x4063B020,\n\t// Block 558, offset 0x8b80\n\t0x40648C20, 0x00000003, 0x4062C42F, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C430, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C431, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C432, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C433, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C434, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C435, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C436, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C437, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C438, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C439, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C43A, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C43B, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C43C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C43D, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C43E, 0x4063B020,\n\t// Block 559, offset 0x8bc0\n\t0x40648C20, 0x00000003, 0x4062C43F, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C440, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C441, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C442, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C443, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C444, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C445, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C446, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C447, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C448, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C449, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C44A, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C44B, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C44C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C44D, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C44E, 0x4063B020,\n\t// Block 560, offset 0x8c00\n\t0x40648C20, 0x00000003, 0x4062C44F, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C450, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C451, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C452, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C453, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C454, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C455, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C456, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C457, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C458, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C459, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C45A, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C45B, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C45C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C45D, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C45E, 0x4063B020,\n\t// Block 561, offset 0x8c40\n\t0x40648C20, 0x00000003, 0x4062C45F, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C460, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C461, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C462, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C463, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C464, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C465, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C466, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C467, 0x4063B020,\n\t0x40648C20, 0x00000003, 0x4062C468, 0x4063B020, 0x40648C20, 0x00000003,\n\t0x4062C469, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C46A, 0x4063B020,\n\t0x40648C20, 0x00000002, 0x4062C421, 0x4063B220, 0x00000002, 0x4062C422,\n\t0x4063B220, 0x00000002, 0x4062C423, 0x4063B220, 0x00000002, 0x4062C424,\n\t0x4063B220, 0x00000002, 0x4062C425, 0x4063B220,\n\t// Block 562, offset 0x8c80\n\t0x00000002, 0x4062C426, 0x4063B220, 0x00000002, 0x4062C427, 0x4063B220,\n\t0x00000002, 0x4062C428, 0x4063B220, 0x00000002, 0x4062C429, 0x4063B220,\n\t0x00000002, 0x4062C42A, 0x4063B220, 0x00000002, 0x4062C42B, 0x4063B220,\n\t0x00000002, 0x4062C42C, 0x4063B220, 0x00000002, 0x4062C42D, 0x4063B220,\n\t0x00000002, 0x4062C42E, 0x4063B220, 0x00000002, 0x4062C42F, 0x4063B220,\n\t0x00000002, 0x4062C430, 0x4063B220, 0x00000002, 0x4062C431, 0x4063B220,\n\t0x00000002, 0x4062C432, 0x4063B220, 0x00000002, 0x4062C433, 0x4063B220,\n\t0x00000002, 0x4062C434, 0x4063B220, 0x00000002, 0x4062C435, 0x4063B220,\n\t0x00000002, 0x4062C436, 0x4063B220, 0x00000002, 0x4062C437, 0x4063B220,\n\t0x00000002, 0x4062C438, 0x4063B220, 0x00000002, 0x4062C439, 0x4063B220,\n\t0x00000002, 0x4062C43A, 0x4063B220, 0x00000002,\n\t// Block 563, offset 0x8cc0\n\t0x4062C43B, 0x4063B220, 0x00000002, 0x4062C43C, 0x4063B220, 0x00000002,\n\t0x4062C43D, 0x4063B220, 0x00000002, 0x4062C43E, 0x4063B220, 0x00000002,\n\t0x4062C43F, 0x4063B220, 0x00000002, 0x4062C440, 0x4063B220, 0x00000002,\n\t0x4062C441, 0x4063B220, 0x00000002, 0x4062C442, 0x4063B220, 0x00000002,\n\t0x4062C443, 0x4063B220, 0x00000002, 0x4062C444, 0x4063B220, 0x00000002,\n\t0x4062C445, 0x4063B220, 0x00000002, 0x4062C446, 0x4063B220, 0x00000002,\n\t0x4062C447, 0x4063B220, 0x00000002, 0x4062C448, 0x4063B220, 0x00000002,\n\t0x4062C421, 0x4063B820, 0x00000002, 0x4062C422, 0x4063B820, 0x00000002,\n\t0x4062C423, 0x4063B820, 0x00000002, 0x4062C424, 0x4063B820, 0x00000002,\n\t0x4062C425, 0x4063B820, 0x00000002, 0x4062C426, 0x4063B820, 0x00000002,\n\t0x4062C427, 0x4063B820, 0x00000002, 0x4062C428,\n\t// Block 564, offset 0x8d00\n\t0x4063B820, 0x00000002, 0x4062C429, 0x4063B820, 0x00000002, 0x4062C42A,\n\t0x4063B820, 0x00000002, 0x4062C42B, 0x4063B820, 0x00000002, 0x4062C42C,\n\t0x4063B820, 0x00000002, 0x4062C42D, 0x4063B820, 0x00000002, 0x4062C42E,\n\t0x4063B820, 0x00000002, 0x4062C42F, 0x4063B820, 0x00000002, 0x4062C430,\n\t0x4063B820, 0x00000002, 0x4062C431, 0x4063B820, 0x00000002, 0x4062C432,\n\t0x4063B820, 0x00000002, 0x4062C433, 0x4063B820, 0x00000002, 0x4062C434,\n\t0x4063B820, 0x00000002, 0x4062C435, 0x4063B820, 0x00000002, 0x4062C436,\n\t0x4063B820, 0x00000002, 0x4062C437, 0x4063B820, 0x00000002, 0x4062C438,\n\t0x4063B820, 0x00000002, 0x4062C439, 0x4063B820, 0x00000002, 0x4062C43A,\n\t0x4063B820, 0x00000002, 0x4062C43B, 0x4063B820, 0x00000002, 0x4062C43C,\n\t0x4063B820, 0x00000002, 0x4062C43D, 0x4063B820,\n\t// Block 565, offset 0x8d40\n\t0x00000002, 0x4062C43E, 0x4063B820, 0x00000002, 0x4062C43F, 0x4063B820,\n\t0x00000002, 0x4062C440, 0x4063B820, 0x00000002, 0x4062C441, 0x4063B820,\n\t0x00000002, 0x4062C442, 0x4063B820, 0x00000002, 0x4062C443, 0x4063B820,\n\t0x00000002, 0x4062C444, 0x4063B820, 0x00000002, 0x4062C445, 0x4063B820,\n\t0x00000002, 0x4062C446, 0x4063B820, 0x00000002, 0x4062C447, 0x4063B820,\n\t0x00000002, 0x4062C448, 0x4063B820, 0x00000002, 0x4062C449, 0x4063B820,\n\t0x00000002, 0x4062C44A, 0x4063B820, 0x00000002, 0x4062C44B, 0x4063B820,\n\t0x00000002, 0x4062C44C, 0x4063B820, 0x00000002, 0x4062C44D, 0x4063B820,\n\t0x00000002, 0x4062C44E, 0x4063B820, 0x00000002, 0x4062C44F, 0x4063B820,\n\t0x00000002, 0x4062C450, 0x4063B820, 0x00000002, 0x4062C451, 0x4063B820,\n\t0x00000002, 0x4062C452, 0x4063B820, 0x00000002,\n\t// Block 566, offset 0x8d80\n\t0x4062C453, 0x4063B820, 0x00000002, 0x4062C454, 0x4063B820, 0x00000002,\n\t0x4062C455, 0x4063B820, 0x00000002, 0x4062C456, 0x4063B820, 0x00000002,\n\t0x4062C457, 0x4063B820, 0x00000002, 0x4062C458, 0x4063B820, 0x00000002,\n\t0x4062C459, 0x4063B820, 0x00000002, 0x4062C45A, 0x4063B820, 0x00000002,\n\t0x4062C45B, 0x4063B820, 0x00000002, 0x4062C45C, 0x4063B820, 0x00000002,\n\t0x4062C45D, 0x4063B820, 0x00000002, 0x4062C45E, 0x4063B820, 0x00000002,\n\t0x4062C45F, 0x4063B820, 0x00000002, 0x4062C460, 0x4063B820, 0x00000002,\n\t0x4062C461, 0x4063B820, 0x00000002, 0x4062C462, 0x4063B820, 0x00000002,\n\t0x4062C463, 0x4063B820, 0x00000002, 0x4062C464, 0x4063B820, 0x00000002,\n\t0x4062C465, 0x4063B820, 0x00000002, 0x4062C466, 0x4063B820, 0x00000002,\n\t0x4062C467, 0x4063B820, 0x00000002, 0x4062C468,\n\t// Block 567, offset 0x8dc0\n\t0x4063B820, 0x00000002, 0x4062C469, 0x4063B820, 0x00000002, 0x4062C46A,\n\t0x4063B820, 0x00000002, 0x4062C46B, 0x4063B820, 0x00000002, 0x4062C46C,\n\t0x4063B820, 0x00000002, 0x4062C46D, 0x4063B820, 0x00000002, 0x4062C46E,\n\t0x4063B820, 0x00000002, 0x4062C46F, 0x4063B820, 0x00000002, 0x4062C470,\n\t0x4063B820, 0x00000003, 0x4062C421, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062C422, 0x4063B820, 0x40646420, 0x00000003, 0x4062C423, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062C424, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062C425, 0x4063B820, 0x40646420, 0x00000003, 0x4062C421, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062C422, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062C423, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C421, 0x4063B820,\n\t0x40647220, 0x00000003, 0x4062C422, 0x4063B820,\n\t// Block 568, offset 0x8e00\n\t0x40647220, 0x00000003, 0x4062C423, 0x4063B820, 0x40647220, 0x00000003,\n\t0x4062C421, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C422, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C423, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C424, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C425, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C426, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C427, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C428, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C429, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C42A, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C42B, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C42C, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C42D, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C42E, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C42F, 0x4063B820,\n\t// Block 569, offset 0x8e40\n\t0x40648C20, 0x00000003, 0x4062C430, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C431, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C432, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C433, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C434, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C435, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C436, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C437, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C438, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062C439, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062C43A, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C43B, 0x4063B820,\n\t0x40648C20, 0x00000002, 0x4062C421, 0x4063BA20, 0x00000002, 0x4062C422,\n\t0x4063BA20, 0x00000002, 0x4062C423, 0x4063BA20, 0x00000002, 0x4062C424,\n\t0x4063BA20, 0x00000002, 0x4062C425, 0x4063BA20,\n\t// Block 570, offset 0x8e80\n\t0x00000002, 0x4062C426, 0x4063BA20, 0x00000002, 0x4062C427, 0x4063BA20,\n\t0x00000002, 0x4062C428, 0x4063BA20, 0x00000002, 0x4062C429, 0x4063BA20,\n\t0x00000002, 0x4062C421, 0x4063BE20, 0x00000002, 0x4062C421, 0x4063C220,\n\t0x00000002, 0x4062C422, 0x4063C220, 0x00000002, 0x4062C423, 0x4063C220,\n\t0x00000002, 0x4062C424, 0x4063C220, 0x00000002, 0x4062C425, 0x4063C220,\n\t0x00000002, 0x4062C426, 0x4063C220, 0x00000002, 0x4062C427, 0x4063C220,\n\t0x00000002, 0x4062C428, 0x4063C220, 0x00000002, 0x4062C429, 0x4063C220,\n\t0x00000002, 0x4062C42A, 0x4063C220, 0x00000002, 0x4062C42B, 0x4063C220,\n\t0x00000002, 0x4062C42C, 0x4063C220, 0x00000002, 0x4062C42D, 0x4063C220,\n\t0x00000002, 0x4062C42E, 0x4063C220, 0x00000002, 0x4062C42F, 0x4063C220,\n\t0x00000002, 0x4062C430, 0x4063C220, 0x00000002,\n\t// Block 571, offset 0x8ec0\n\t0x4062C431, 0x4063C220, 0x00000002, 0x4062C432, 0x4063C220, 0x00000002,\n\t0x4062C433, 0x4063C220, 0x00000002, 0x4062C434, 0x4063C220, 0x00000002,\n\t0x4062C435, 0x4063C220, 0x00000002, 0x4062C436, 0x4063C220, 0x00000002,\n\t0x4062C437, 0x4063C220, 0x00000002, 0x4062C438, 0x4063C220, 0x00000002,\n\t0x4062C439, 0x4063C220, 0x00000002, 0x4062C43A, 0x4063C220, 0x00000002,\n\t0x4062C43B, 0x4063C220, 0x00000002, 0x4062C43C, 0x4063C220, 0x00000002,\n\t0x4062C43D, 0x4063C220, 0x00000002, 0x4062C43E, 0x4063C220, 0x00000002,\n\t0x4062C43F, 0x4063C220, 0x00000002, 0x4062C440, 0x4063C220, 0x00000002,\n\t0x4062C441, 0x4063C220, 0x00000002, 0x4062C442, 0x4063C220, 0x00000002,\n\t0x4062C443, 0x4063C220, 0x00000002, 0x4062C444, 0x4063C220, 0x00000002,\n\t0x4062C445, 0x4063C220, 0x00000002, 0x4062C446,\n\t// Block 572, offset 0x8f00\n\t0x4063C220, 0x00000002, 0x4062C447, 0x4063C220, 0x00000002, 0x4062C448,\n\t0x4063C220, 0x00000002, 0x4062C449, 0x4063C220, 0x00000002, 0x4062C44A,\n\t0x4063C220, 0x00000002, 0x4062C44B, 0x4063C220, 0x00000002, 0x4062C44C,\n\t0x4063C220, 0x00000002, 0x4062C44D, 0x4063C220, 0x00000002, 0x4062C44E,\n\t0x4063C220, 0x00000002, 0x4062C44F, 0x4063C220, 0x00000002, 0x4062C450,\n\t0x4063C220, 0x00000002, 0x4062C451, 0x4063C220, 0x00000002, 0x4062C452,\n\t0x4063C220, 0x00000002, 0x4062C453, 0x4063C220, 0x00000002, 0x4062C454,\n\t0x4063C220, 0x00000002, 0x4062C455, 0x4063C220, 0x00000002, 0x4062C456,\n\t0x4063C220, 0x00000002, 0x4062C457, 0x4063C220, 0x00000002, 0x4062C458,\n\t0x4063C220, 0x00000002, 0x4062C459, 0x4063C220, 0x00000002, 0x4062C45A,\n\t0x4063C220, 0x00000002, 0x4062C45B, 0x4063C220,\n\t// Block 573, offset 0x8f40\n\t0x00000002, 0x4062C45C, 0x4063C220, 0x00000002, 0x4062C45D, 0x4063C220,\n\t0x00000002, 0x4062C45E, 0x4063C220, 0x00000003, 0x4062C421, 0x4063C220,\n\t0x40646420, 0x00000003, 0x4062C422, 0x4063C220, 0x40646420, 0x00000003,\n\t0x4062C421, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C422, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C423, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C424, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C425, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C426, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C427, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C428, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C429, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C42A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C42B, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C42C, 0x4063C220,\n\t// Block 574, offset 0x8f80\n\t0x40646A20, 0x00000003, 0x4062C42D, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C42E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C42F, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C430, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C431, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C432, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C433, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C434, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C435, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C436, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C437, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C438, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C439, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C43A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C43B, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C43C, 0x4063C220,\n\t// Block 575, offset 0x8fc0\n\t0x40646A20, 0x00000003, 0x4062C43D, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C43E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C43F, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C440, 0x4063C220, 0x40646A20, 0x00000003,\n\t0x4062C441, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C442, 0x4063C220,\n\t0x40646A20, 0x00000003, 0x4062C421, 0x4063C220, 0x40647220, 0x00000003,\n\t0x4062C422, 0x4063C220, 0x40647220, 0x00000003, 0x4062C421, 0x4063C220,\n\t0x40648C20, 0x00000003, 0x4062C422, 0x4063C220, 0x40648C20, 0x00000003,\n\t0x4062C423, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C424, 0x4063C220,\n\t0x40648C20, 0x00000003, 0x4062C425, 0x4063C220, 0x40648C20, 0x00000003,\n\t0x4062C421, 0x4063CC20, 0x40646420, 0x00000003, 0x4062C422, 0x4063CC20,\n\t0x40646420, 0x00000003, 0x4062C423, 0x4063CC20,\n\t// Block 576, offset 0x9000\n\t0x40646420, 0x00000003, 0x4062C421, 0x4063CC20, 0x40647220, 0x00000003,\n\t0x4062C422, 0x4063CC20, 0x40647220, 0x00000003, 0x4062C421, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062C422, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062C423, 0x4063CC20, 0x40648420, 0x00000003, 0x4062C424, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062C425, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062C421, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C422, 0x4063CC20,\n\t0x40648C20, 0x00000003, 0x4062C423, 0x4063CC20, 0x40648C20, 0x00000003,\n\t0x4062C424, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C425, 0x4063CC20,\n\t0x40648C20, 0x00000003, 0x4062C426, 0x4063CC20, 0x40648C20, 0x00000003,\n\t0x4062C427, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C428, 0x4063CC20,\n\t0x40648C20, 0x00000003, 0x4062C429, 0x4063CC20,\n\t// Block 577, offset 0x9040\n\t0x40648C20, 0x00000003, 0x4062C42A, 0x4063CC20, 0x40648C20, 0x00000003,\n\t0x4062C42B, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C42C, 0x4063CC20,\n\t0x40648C20, 0x00000003, 0x4062C42D, 0x4063CC20, 0x40648C20, 0x00000003,\n\t0x4062C42E, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062C421, 0x4063D020,\n\t0x00000002, 0x4062C422, 0x4063D020, 0x00000002, 0x4062C423, 0x4063D020,\n\t0x00000002, 0x4062C424, 0x4063D020, 0x00000002, 0x4062C425, 0x4063D020,\n\t0x00000002, 0x4062C426, 0x4063D020, 0x00000002, 0x4062C427, 0x4063D020,\n\t0x00000002, 0x4062C428, 0x4063D020, 0x00000002, 0x4062C429, 0x4063D020,\n\t0x00000002, 0x4062C42A, 0x4063D020, 0x00000002, 0x4062C42B, 0x4063D020,\n\t0x00000002, 0x4062C42C, 0x4063D020, 0x00000002, 0x4062C42D, 0x4063D020,\n\t0x00000002, 0x4062C42E, 0x4063D020, 0x00000002,\n\t// Block 578, offset 0x9080\n\t0x4062C42F, 0x4063D020, 0x00000002, 0x4062C430, 0x4063D020, 0x00000002,\n\t0x4062C431, 0x4063D020, 0x00000002, 0x4062C432, 0x4063D020, 0x00000002,\n\t0x4062C433, 0x4063D020, 0x00000002, 0x4062C434, 0x4063D020, 0x00000002,\n\t0x4062C435, 0x4063D020, 0x00000002, 0x4062C436, 0x4063D020, 0x00000002,\n\t0x4062C437, 0x4063D020, 0x00000002, 0x4062C438, 0x4063D020, 0x00000002,\n\t0x4062C439, 0x4063D020, 0x00000002, 0x4062C43A, 0x4063D020, 0x00000002,\n\t0x4062C43B, 0x4063D020, 0x00000002, 0x4062C43C, 0x4063D020, 0x00000002,\n\t0x4062C43D, 0x4063D020, 0x00000002, 0x4062C43E, 0x4063D020, 0x00000002,\n\t0x4062C43F, 0x4063D020, 0x00000002, 0x4062C440, 0x4063D020, 0x00000002,\n\t0x4062C441, 0x4063D020, 0x00000002, 0x4062C442, 0x4063D020, 0x00000002,\n\t0x4062C443, 0x4063D020, 0x00000002, 0x4062C444,\n\t// Block 579, offset 0x90c0\n\t0x4063D020, 0x00000002, 0x4062C445, 0x4063D020, 0x00000002, 0x4062C446,\n\t0x4063D020, 0x00000002, 0x4062C447, 0x4063D020, 0x00000002, 0x4062C448,\n\t0x4063D020, 0x00000002, 0x4062C449, 0x4063D020, 0x00000002, 0x4062C44A,\n\t0x4063D020, 0x00000002, 0x4062C44B, 0x4063D020, 0x00000002, 0x4062C44C,\n\t0x4063D020, 0x00000002, 0x4062C44D, 0x4063D020, 0x00000002, 0x4062C44E,\n\t0x4063D020, 0x00000002, 0x4062C44F, 0x4063D020, 0x00000002, 0x4062C450,\n\t0x4063D020, 0x00000003, 0x4062C421, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062C422, 0x4063D020, 0x40646420, 0x00000003, 0x4062C423, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062C424, 0x4063D020, 0x40646420, 0x00000003,\n\t0x4062C425, 0x4063D020, 0x40646420, 0x00000003, 0x4062C426, 0x4063D020,\n\t0x40646420, 0x00000003, 0x4062C421, 0x4063D020,\n\t// Block 580, offset 0x9100\n\t0x40646A20, 0x00000003, 0x4062C422, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C423, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C424, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C425, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C426, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C427, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C428, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C429, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C42A, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C42B, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C42C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C42D, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C42E, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C42F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C430, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C431, 0x4063D020,\n\t// Block 581, offset 0x9140\n\t0x40646A20, 0x00000003, 0x4062C432, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C433, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C434, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C435, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C436, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C437, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C438, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C439, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C43A, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C43B, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C43C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C43D, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C43E, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C43F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C440, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C441, 0x4063D020,\n\t// Block 582, offset 0x9180\n\t0x40646A20, 0x00000003, 0x4062C442, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C443, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C444, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C445, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C446, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C447, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C448, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C449, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C44A, 0x4063D020,\n\t0x40646A20, 0x00000003, 0x4062C44B, 0x4063D020, 0x40646A20, 0x00000003,\n\t0x4062C44C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C421, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C422, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062C423, 0x4063D020, 0x40647220, 0x00000003, 0x4062C424, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C425, 0x4063D020,\n\t// Block 583, offset 0x91c0\n\t0x40647220, 0x00000003, 0x4062C426, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062C427, 0x4063D020, 0x40647220, 0x00000003, 0x4062C428, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C429, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062C42A, 0x4063D020, 0x40647220, 0x00000003, 0x4062C42B, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C42C, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062C42D, 0x4063D020, 0x40647220, 0x00000003, 0x4062C42E, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C42F, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062C430, 0x4063D020, 0x40647220, 0x00000003, 0x4062C431, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C432, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062C433, 0x4063D020, 0x40647220, 0x00000003, 0x4062C434, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062C421, 0x4063D020,\n\t// Block 584, offset 0x9200\n\t0x40648220, 0x00000003, 0x4062C422, 0x4063D020, 0x40648220, 0x00000003,\n\t0x4062C423, 0x4063D020, 0x40648220, 0x00000003, 0x4062C421, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062C422, 0x4063D020, 0x40648420, 0x00000003,\n\t0x4062C423, 0x4063D020, 0x40648420, 0x00000003, 0x4062C424, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062C425, 0x4063D020, 0x40648420, 0x00000003,\n\t0x4062C426, 0x4063D020, 0x40648420, 0x00000003, 0x4062C427, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062C428, 0x4063D020, 0x40648420, 0x00000003,\n\t0x4062C421, 0x4063D020, 0x40648C20, 0x00000003, 0x4062C422, 0x4063D020,\n\t0x40648C20, 0x00000003, 0x4062C423, 0x4063D020, 0x40648C20, 0x00000003,\n\t0x4062C424, 0x4063D020, 0x40648C20, 0x00000003, 0x4062C425, 0x4063D020,\n\t0x40648C20, 0x00000003, 0x4062C426, 0x4063D020,\n\t// Block 585, offset 0x9240\n\t0x40648C20, 0x00000003, 0x4062C427, 0x4063D020, 0x40648C20, 0x00000002,\n\t0x4062C821, 0x4063A820, 0x00000002, 0x4062C822, 0x4063A820, 0x00000002,\n\t0x4062C823, 0x4063A820, 0x00000002, 0x4062C824, 0x4063A820, 0x00000002,\n\t0x4062C825, 0x4063A820, 0x00000002, 0x4062C826, 0x4063A820, 0x00000002,\n\t0x4062C827, 0x4063A820, 0x00000002, 0x4062C828, 0x4063A820, 0x00000002,\n\t0x4062C829, 0x4063A820, 0x00000002, 0x4062C82A, 0x4063A820, 0x00000002,\n\t0x4062C82B, 0x4063A820, 0x00000002, 0x4062C82C, 0x4063A820, 0x00000002,\n\t0x4062C82D, 0x4063A820, 0x00000002, 0x4062C82E, 0x4063A820, 0x00000002,\n\t0x4062C82F, 0x4063A820, 0x00000002, 0x4062C830, 0x4063A820, 0x00000002,\n\t0x4062C831, 0x4063A820, 0x00000002, 0x4062C832, 0x4063A820, 0x00000002,\n\t0x4062C833, 0x4063A820, 0x00000002, 0x4062C834,\n\t// Block 586, offset 0x9280\n\t0x4063A820, 0x00000002, 0x4062C835, 0x4063A820, 0x00000002, 0x4062C836,\n\t0x4063A820, 0x00000003, 0x4062C821, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C822, 0x4063A820, 0x40646420, 0x00000003, 0x4062C823, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C824, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C825, 0x4063A820, 0x40646420, 0x00000003, 0x4062C826, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C827, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C828, 0x4063A820, 0x40646420, 0x00000003, 0x4062C829, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062C82A, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062C821, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C822, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C823, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C824, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 587, offset 0x92c0\n\t0x4062C825, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C826, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C827, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C828, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C829, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C82A, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C82B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C82C, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C82D, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C82E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C82F, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C830, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C831, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C832, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C833, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C834, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 588, offset 0x9300\n\t0x4062C835, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C836, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062C837, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062C821, 0x4063A820, 0x40647220, 0x00000003, 0x4062C822, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062C823, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062C824, 0x4063A820, 0x40647220, 0x00000003, 0x4062C825, 0x4063A820,\n\t0x40647220, 0x00000003, 0x4062C826, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062C827, 0x4063A820, 0x40647220, 0x00000003, 0x4062C821, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C822, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C823, 0x4063A820, 0x40648220, 0x00000003, 0x4062C824, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C825, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C826, 0x4063A820, 0x40648220, 0x00000003,\n\t// Block 589, offset 0x9340\n\t0x4062C827, 0x4063A820, 0x40648220, 0x00000003, 0x4062C828, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C829, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C82A, 0x4063A820, 0x40648220, 0x00000003, 0x4062C82B, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C82C, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C82D, 0x4063A820, 0x40648220, 0x00000003, 0x4062C82E, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C82F, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C830, 0x4063A820, 0x40648220, 0x00000003, 0x4062C831, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C832, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C833, 0x4063A820, 0x40648220, 0x00000003, 0x4062C834, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C835, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C836, 0x4063A820, 0x40648220, 0x00000003,\n\t// Block 590, offset 0x9380\n\t0x4062C837, 0x4063A820, 0x40648220, 0x00000003, 0x4062C838, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062C839, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062C83A, 0x4063A820, 0x40648220, 0x00000003, 0x4062C821, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C822, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C823, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C824, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C825, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C826, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C827, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C828, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C829, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C82A, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C82B, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C82C, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 591, offset 0x93c0\n\t0x4062C82D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C82E, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C82F, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C830, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C831, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C832, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C833, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C834, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C835, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C836, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C837, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C838, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C839, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C83A, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C83B, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C83C, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 592, offset 0x9400\n\t0x4062C83D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C83E, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C83F, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C840, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C841, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C842, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C843, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C844, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C845, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C846, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C847, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062C848, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062C849, 0x4063A820, 0x40648C20, 0x00000002, 0x4062C821, 0x4063AA20,\n\t0x00000002, 0x4062C822, 0x4063AA20, 0x00000002, 0x4062C823, 0x4063AA20,\n\t0x00000002, 0x4062C824, 0x4063AA20, 0x00000002,\n\t// Block 593, offset 0x9440\n\t0x4062C825, 0x4063AA20, 0x00000002, 0x4062C826, 0x4063AA20, 0x00000002,\n\t0x4062C827, 0x4063AA20, 0x00000002, 0x4062C828, 0x4063AA20, 0x00000002,\n\t0x4062C829, 0x4063AA20, 0x00000002, 0x4062C82A, 0x4063AA20, 0x00000002,\n\t0x4062C82B, 0x4063AA20, 0x00000002, 0x4062C82C, 0x4063AA20, 0x00000002,\n\t0x4062C82D, 0x4063AA20, 0x00000002, 0x4062C82E, 0x4063AA20, 0x00000003,\n\t0x4062C821, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C822, 0x4063AA20,\n\t0x40646420, 0x00000003, 0x4062C823, 0x4063AA20, 0x40646420, 0x00000003,\n\t0x4062C824, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C825, 0x4063AA20,\n\t0x40646420, 0x00000003, 0x4062C826, 0x4063AA20, 0x40646420, 0x00000003,\n\t0x4062C827, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C828, 0x4063AA20,\n\t0x40646420, 0x00000003, 0x4062C829, 0x4063AA20,\n\t// Block 594, offset 0x9480\n\t0x40646420, 0x00000003, 0x4062C82A, 0x4063AA20, 0x40646420, 0x00000002,\n\t0x4062C821, 0x4063B020, 0x00000002, 0x4062C822, 0x4063B020, 0x00000002,\n\t0x4062C823, 0x4063B020, 0x00000002, 0x4062C824, 0x4063B020, 0x00000002,\n\t0x4062C825, 0x4063B020, 0x00000002, 0x4062C826, 0x4063B020, 0x00000002,\n\t0x4062C827, 0x4063B020, 0x00000002, 0x4062C828, 0x4063B020, 0x00000002,\n\t0x4062C829, 0x4063B020, 0x00000003, 0x4062C821, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C822, 0x4063B020, 0x40646420, 0x00000003, 0x4062C823,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C824, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C825, 0x4063B020, 0x40646420, 0x00000003, 0x4062C826,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C827, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C828, 0x4063B020, 0x40646420,\n\t// Block 595, offset 0x94c0\n\t0x00000003, 0x4062C829, 0x4063B020, 0x40646420, 0x00000003, 0x4062C82A,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C82B, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C82C, 0x4063B020, 0x40646420, 0x00000003, 0x4062C82D,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C82E, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C82F, 0x4063B020, 0x40646420, 0x00000003, 0x4062C830,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C831, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C832, 0x4063B020, 0x40646420, 0x00000003, 0x4062C833,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C834, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C835, 0x4063B020, 0x40646420, 0x00000003, 0x4062C836,\n\t0x4063B020, 0x40646420, 0x00000003, 0x4062C837, 0x4063B020, 0x40646420,\n\t0x00000003, 0x4062C821, 0x4063B020, 0x40646A20,\n\t// Block 596, offset 0x9500\n\t0x00000003, 0x4062C822, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C823,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C824, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C825, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C826,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C827, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C828, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C829,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C82A, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C82B, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C82C,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C82D, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C82E, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C82F,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C830, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C831, 0x4063B020, 0x40646A20,\n\t// Block 597, offset 0x9540\n\t0x00000003, 0x4062C832, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C833,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C834, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C835, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C836,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C837, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C838, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C839,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C83A, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C83B, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C83C,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C83D, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C83E, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C83F,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C840, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C841, 0x4063B020, 0x40646A20,\n\t// Block 598, offset 0x9580\n\t0x00000003, 0x4062C842, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C843,\n\t0x4063B020, 0x40646A20, 0x00000003, 0x4062C844, 0x4063B020, 0x40646A20,\n\t0x00000003, 0x4062C845, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C821,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C822, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062C823, 0x4063B020, 0x40647220, 0x00000003, 0x4062C824,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C825, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062C826, 0x4063B020, 0x40647220, 0x00000003, 0x4062C827,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C828, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062C829, 0x4063B020, 0x40647220, 0x00000003, 0x4062C82A,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C82B, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062C82C, 0x4063B020, 0x40647220,\n\t// Block 599, offset 0x95c0\n\t0x00000003, 0x4062C82D, 0x4063B020, 0x40647220, 0x00000003, 0x4062C82E,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C82F, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062C830, 0x4063B020, 0x40647220, 0x00000003, 0x4062C831,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C832, 0x4063B020, 0x40647220,\n\t0x00000003, 0x4062C833, 0x4063B020, 0x40647220, 0x00000003, 0x4062C834,\n\t0x4063B020, 0x40647220, 0x00000003, 0x4062C821, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062C822, 0x4063B020, 0x40648220, 0x00000003, 0x4062C823,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062C824, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062C825, 0x4063B020, 0x40648220, 0x00000003, 0x4062C826,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062C827, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062C828, 0x4063B020, 0x40648220,\n\t// Block 600, offset 0x9600\n\t0x00000003, 0x4062C829, 0x4063B020, 0x40648220, 0x00000003, 0x4062C82A,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062C82B, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062C82C, 0x4063B020, 0x40648220, 0x00000003, 0x4062C82D,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062C82E, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062C82F, 0x4063B020, 0x40648220, 0x00000003, 0x4062C830,\n\t0x4063B020, 0x40648220, 0x00000003, 0x4062C831, 0x4063B020, 0x40648220,\n\t0x00000003, 0x4062C832, 0x4063B020, 0x40648220, 0x00000003, 0x4062C821,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062C822, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062C823, 0x4063B020, 0x40648420, 0x00000003, 0x4062C824,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062C825, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062C826, 0x4063B020, 0x40648420,\n\t// Block 601, offset 0x9640\n\t0x00000003, 0x4062C827, 0x4063B020, 0x40648420, 0x00000003, 0x4062C828,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062C829, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062C82A, 0x4063B020, 0x40648420, 0x00000003, 0x4062C82B,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062C82C, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062C82D, 0x4063B020, 0x40648420, 0x00000003, 0x4062C82E,\n\t0x4063B020, 0x40648420, 0x00000003, 0x4062C82F, 0x4063B020, 0x40648420,\n\t0x00000003, 0x4062C821, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C822,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062C823, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062C824, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C825,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062C826, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062C827, 0x4063B020, 0x40648C20,\n\t// Block 602, offset 0x9680\n\t0x00000003, 0x4062C828, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C829,\n\t0x4063B020, 0x40648C20, 0x00000003, 0x4062C82A, 0x4063B020, 0x40648C20,\n\t0x00000003, 0x4062C82B, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C82C,\n\t0x4063B020, 0x40648C20, 0x00000002, 0x4062C821, 0x4063B220, 0x00000002,\n\t0x4062C822, 0x4063B220, 0x00000002, 0x4062C823, 0x4063B220, 0x00000002,\n\t0x4062C824, 0x4063B220, 0x00000002, 0x4062C825, 0x4063B220, 0x00000002,\n\t0x4062C826, 0x4063B220, 0x00000002, 0x4062C827, 0x4063B220, 0x00000002,\n\t0x4062C828, 0x4063B220, 0x00000002, 0x4062C829, 0x4063B220, 0x00000002,\n\t0x4062C82A, 0x4063B220, 0x00000002, 0x4062C82B, 0x4063B220, 0x00000002,\n\t0x4062C82C, 0x4063B220, 0x00000002, 0x4062C82D, 0x4063B220, 0x00000002,\n\t0x4062C82E, 0x4063B220, 0x00000002, 0x4062C82F,\n\t// Block 603, offset 0x96c0\n\t0x4063B220, 0x00000002, 0x4062C830, 0x4063B220, 0x00000002, 0x4062C831,\n\t0x4063B220, 0x00000002, 0x4062C832, 0x4063B220, 0x00000002, 0x4062C833,\n\t0x4063B220, 0x00000002, 0x4062C834, 0x4063B220, 0x00000002, 0x4062C821,\n\t0x4063B820, 0x00000002, 0x4062C822, 0x4063B820, 0x00000002, 0x4062C823,\n\t0x4063B820, 0x00000002, 0x4062C824, 0x4063B820, 0x00000002, 0x4062C825,\n\t0x4063B820, 0x00000002, 0x4062C826, 0x4063B820, 0x00000002, 0x4062C827,\n\t0x4063B820, 0x00000002, 0x4062C828, 0x4063B820, 0x00000002, 0x4062C829,\n\t0x4063B820, 0x00000002, 0x4062C82A, 0x4063B820, 0x00000002, 0x4062C82B,\n\t0x4063B820, 0x00000002, 0x4062C82C, 0x4063B820, 0x00000002, 0x4062C82D,\n\t0x4063B820, 0x00000002, 0x4062C82E, 0x4063B820, 0x00000002, 0x4062C82F,\n\t0x4063B820, 0x00000002, 0x4062C830, 0x4063B820,\n\t// Block 604, offset 0x9700\n\t0x00000002, 0x4062C831, 0x4063B820, 0x00000002, 0x4062C832, 0x4063B820,\n\t0x00000002, 0x4062C833, 0x4063B820, 0x00000002, 0x4062C834, 0x4063B820,\n\t0x00000002, 0x4062C835, 0x4063B820, 0x00000002, 0x4062C836, 0x4063B820,\n\t0x00000002, 0x4062C837, 0x4063B820, 0x00000002, 0x4062C838, 0x4063B820,\n\t0x00000002, 0x4062C839, 0x4063B820, 0x00000002, 0x4062C83A, 0x4063B820,\n\t0x00000002, 0x4062C83B, 0x4063B820, 0x00000002, 0x4062C83C, 0x4063B820,\n\t0x00000002, 0x4062C83D, 0x4063B820, 0x00000002, 0x4062C83E, 0x4063B820,\n\t0x00000002, 0x4062C83F, 0x4063B820, 0x00000002, 0x4062C840, 0x4063B820,\n\t0x00000002, 0x4062C841, 0x4063B820, 0x00000002, 0x4062C842, 0x4063B820,\n\t0x00000002, 0x4062C843, 0x4063B820, 0x00000002, 0x4062C844, 0x4063B820,\n\t0x00000002, 0x4062C845, 0x4063B820, 0x00000002,\n\t// Block 605, offset 0x9740\n\t0x4062C846, 0x4063B820, 0x00000002, 0x4062C847, 0x4063B820, 0x00000002,\n\t0x4062C848, 0x4063B820, 0x00000002, 0x4062C849, 0x4063B820, 0x00000002,\n\t0x4062C84A, 0x4063B820, 0x00000002, 0x4062C84B, 0x4063B820, 0x00000002,\n\t0x4062C84C, 0x4063B820, 0x00000002, 0x4062C84D, 0x4063B820, 0x00000002,\n\t0x4062C84E, 0x4063B820, 0x00000002, 0x4062C84F, 0x4063B820, 0x00000002,\n\t0x4062C850, 0x4063B820, 0x00000002, 0x4062C851, 0x4063B820, 0x00000002,\n\t0x4062C852, 0x4063B820, 0x00000002, 0x4062C853, 0x4063B820, 0x00000002,\n\t0x4062C854, 0x4063B820, 0x00000002, 0x4062C855, 0x4063B820, 0x00000002,\n\t0x4062C856, 0x4063B820, 0x00000002, 0x4062C857, 0x4063B820, 0x00000002,\n\t0x4062C858, 0x4063B820, 0x00000003, 0x4062C821, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062C822, 0x4063B820, 0x40646420,\n\t// Block 606, offset 0x9780\n\t0x00000003, 0x4062C823, 0x4063B820, 0x40646420, 0x00000003, 0x4062C824,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062C825, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062C826, 0x4063B820, 0x40646420, 0x00000003, 0x4062C827,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062C828, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062C829, 0x4063B820, 0x40646420, 0x00000003, 0x4062C82A,\n\t0x4063B820, 0x40646420, 0x00000003, 0x4062C82B, 0x4063B820, 0x40646420,\n\t0x00000003, 0x4062C82C, 0x4063B820, 0x40646420, 0x00000003, 0x4062C821,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C822, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C823, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C824,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062C825, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062C821, 0x4063B820, 0x40648C20,\n\t// Block 607, offset 0x97c0\n\t0x00000003, 0x4062C822, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C823,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C824, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C825, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C826,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C827, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C828, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C829,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C82A, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C82B, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C82C,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C82D, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062C82E, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C82F,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062C821, 0x4063BA20, 0x40647220,\n\t0x00000002, 0x4062C821, 0x4063BE20, 0x00000002,\n\t// Block 608, offset 0x9800\n\t0x4062C822, 0x4063BE20, 0x00000002, 0x4062C823, 0x4063BE20, 0x00000002,\n\t0x4062C824, 0x4063BE20, 0x00000002, 0x4062C825, 0x4063BE20, 0x00000002,\n\t0x4062C826, 0x4063BE20, 0x00000002, 0x4062C827, 0x4063BE20, 0x00000002,\n\t0x4062C828, 0x4063BE20, 0x00000002, 0x4062C829, 0x4063BE20, 0x00000002,\n\t0x4062C82A, 0x4063BE20, 0x00000002, 0x4062C82B, 0x4063BE20, 0x00000002,\n\t0x4062C821, 0x4063C220, 0x00000002, 0x4062C822, 0x4063C220, 0x00000002,\n\t0x4062C823, 0x4063C220, 0x00000002, 0x4062C824, 0x4063C220, 0x00000002,\n\t0x4062C825, 0x4063C220, 0x00000002, 0x4062C826, 0x4063C220, 0x00000002,\n\t0x4062C827, 0x4063C220, 0x00000002, 0x4062C828, 0x4063C220, 0x00000002,\n\t0x4062C829, 0x4063C220, 0x00000002, 0x4062C82A, 0x4063C220, 0x00000002,\n\t0x4062C82B, 0x4063C220, 0x00000002, 0x4062C82C,\n\t// Block 609, offset 0x9840\n\t0x4063C220, 0x00000002, 0x4062C82D, 0x4063C220, 0x00000002, 0x4062C82E,\n\t0x4063C220, 0x00000002, 0x4062C82F, 0x4063C220, 0x00000002, 0x4062C830,\n\t0x4063C220, 0x00000002, 0x4062C831, 0x4063C220, 0x00000002, 0x4062C832,\n\t0x4063C220, 0x00000002, 0x4062C833, 0x4063C220, 0x00000002, 0x4062C834,\n\t0x4063C220, 0x00000002, 0x4062C835, 0x4063C220, 0x00000002, 0x4062C836,\n\t0x4063C220, 0x00000002, 0x4062C837, 0x4063C220, 0x00000002, 0x4062C838,\n\t0x4063C220, 0x00000002, 0x4062C839, 0x4063C220, 0x00000002, 0x4062C83A,\n\t0x4063C220, 0x00000002, 0x4062C83B, 0x4063C220, 0x00000002, 0x4062C83C,\n\t0x4063C220, 0x00000002, 0x4062C83D, 0x4063C220, 0x00000002, 0x4062C83E,\n\t0x4063C220, 0x00000002, 0x4062C83F, 0x4063C220, 0x00000002, 0x4062C840,\n\t0x4063C220, 0x00000002, 0x4062C841, 0x4063C220,\n\t// Block 610, offset 0x9880\n\t0x00000002, 0x4062C842, 0x4063C220, 0x00000002, 0x4062C843, 0x4063C220,\n\t0x00000002, 0x4062C844, 0x4063C220, 0x00000002, 0x4062C845, 0x4063C220,\n\t0x00000002, 0x4062C846, 0x4063C220, 0x00000002, 0x4062C847, 0x4063C220,\n\t0x00000002, 0x4062C848, 0x4063C220, 0x00000002, 0x4062C849, 0x4063C220,\n\t0x00000002, 0x4062C84A, 0x4063C220, 0x00000002, 0x4062C84B, 0x4063C220,\n\t0x00000002, 0x4062C84C, 0x4063C220, 0x00000002, 0x4062C84D, 0x4063C220,\n\t0x00000002, 0x4062C84E, 0x4063C220, 0x00000002, 0x4062C84F, 0x4063C220,\n\t0x00000002, 0x4062C850, 0x4063C220, 0x00000002, 0x4062C851, 0x4063C220,\n\t0x00000002, 0x4062C852, 0x4063C220, 0x00000002, 0x4062C853, 0x4063C220,\n\t0x00000003, 0x4062C821, 0x4063C220, 0x40646420, 0x00000003, 0x4062C822,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C823,\n\t// Block 611, offset 0x98c0\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C824, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C825, 0x4063C220, 0x40646420, 0x00000003, 0x4062C826,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C827, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C828, 0x4063C220, 0x40646420, 0x00000003, 0x4062C829,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C82A, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C82B, 0x4063C220, 0x40646420, 0x00000003, 0x4062C82C,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C82D, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C82E, 0x4063C220, 0x40646420, 0x00000003, 0x4062C82F,\n\t0x4063C220, 0x40646420, 0x00000003, 0x4062C830, 0x4063C220, 0x40646420,\n\t0x00000003, 0x4062C831, 0x4063C220, 0x40646420, 0x00000003, 0x4062C821,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C822,\n\t// Block 612, offset 0x9900\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062C823, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062C821, 0x4063C220, 0x40647220, 0x00000003, 0x4062C822,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062C823, 0x4063C220, 0x40647220,\n\t0x00000003, 0x4062C824, 0x4063C220, 0x40647220, 0x00000003, 0x4062C821,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062C822, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062C823, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C824,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062C825, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062C826, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C827,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062C828, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062C829, 0x4063C220, 0x40648C20, 0x00000002, 0x4062C821,\n\t0x4063C620, 0x00000002, 0x4062C822, 0x4063C620,\n\t// Block 613, offset 0x9940\n\t0x00000002, 0x4062C823, 0x4063C620, 0x00000002, 0x4062C824, 0x4063C620,\n\t0x00000002, 0x4062C825, 0x4063C620, 0x00000002, 0x4062C826, 0x4063C620,\n\t0x00000002, 0x4062C827, 0x4063C620, 0x00000002, 0x4062C828, 0x4063C620,\n\t0x00000002, 0x4062C829, 0x4063C620, 0x00000002, 0x4062C821, 0x4063C820,\n\t0x00000002, 0x4062C822, 0x4063C820, 0x00000002, 0x4062C823, 0x4063C820,\n\t0x00000002, 0x4062C824, 0x4063C820, 0x00000002, 0x4062C825, 0x4063C820,\n\t0x00000002, 0x4062C826, 0x4063C820, 0x00000002, 0x4062C827, 0x4063C820,\n\t0x00000002, 0x4062C828, 0x4063C820, 0x00000002, 0x4062C829, 0x4063C820,\n\t0x00000002, 0x4062C82A, 0x4063C820, 0x00000002, 0x4062C82B, 0x4063C820,\n\t0x00000002, 0x4062C82C, 0x4063C820, 0x00000002, 0x4062C82D, 0x4063C820,\n\t0x00000002, 0x4062C82E, 0x4063C820, 0x00000002,\n\t// Block 614, offset 0x9980\n\t0x4062C82F, 0x4063C820, 0x00000002, 0x4062C830, 0x4063C820, 0x00000002,\n\t0x4062C831, 0x4063C820, 0x00000003, 0x4062C821, 0x4063CC20, 0x40646420,\n\t0x00000003, 0x4062C822, 0x4063CC20, 0x40646420, 0x00000003, 0x4062C823,\n\t0x4063CC20, 0x40646420, 0x00000003, 0x4062C824, 0x4063CC20, 0x40646420,\n\t0x00000003, 0x4062C825, 0x4063CC20, 0x40646420, 0x00000003, 0x4062C826,\n\t0x4063CC20, 0x40646420, 0x00000003, 0x4062C827, 0x4063CC20, 0x40646420,\n\t0x00000003, 0x4062C821, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062C821,\n\t0x4063D020, 0x00000002, 0x4062C822, 0x4063D020, 0x00000002, 0x4062C823,\n\t0x4063D020, 0x00000002, 0x4062C824, 0x4063D020, 0x00000002, 0x4062C825,\n\t0x4063D020, 0x00000002, 0x4062C826, 0x4063D020, 0x00000002, 0x4062C827,\n\t0x4063D020, 0x00000002, 0x4062C828, 0x4063D020,\n\t// Block 615, offset 0x99c0\n\t0x00000002, 0x4062C829, 0x4063D020, 0x00000002, 0x4062C82A, 0x4063D020,\n\t0x00000002, 0x4062C82B, 0x4063D020, 0x00000002, 0x4062C82C, 0x4063D020,\n\t0x00000002, 0x4062C82D, 0x4063D020, 0x00000002, 0x4062C82E, 0x4063D020,\n\t0x00000002, 0x4062C82F, 0x4063D020, 0x00000002, 0x4062C830, 0x4063D020,\n\t0x00000002, 0x4062C831, 0x4063D020, 0x00000002, 0x4062C832, 0x4063D020,\n\t0x00000002, 0x4062C833, 0x4063D020, 0x00000002, 0x4062C834, 0x4063D020,\n\t0x00000002, 0x4062C835, 0x4063D020, 0x00000002, 0x4062C836, 0x4063D020,\n\t0x00000002, 0x4062C837, 0x4063D020, 0x00000002, 0x4062C838, 0x4063D020,\n\t0x00000002, 0x4062C839, 0x4063D020, 0x00000002, 0x4062C83A, 0x4063D020,\n\t0x00000002, 0x4062C83B, 0x4063D020, 0x00000002, 0x4062C83C, 0x4063D020,\n\t0x00000002, 0x4062C83D, 0x4063D020, 0x00000002,\n\t// Block 616, offset 0x9a00\n\t0x4062C83E, 0x4063D020, 0x00000002, 0x4062C83F, 0x4063D020, 0x00000002,\n\t0x4062C840, 0x4063D020, 0x00000002, 0x4062C841, 0x4063D020, 0x00000002,\n\t0x4062C842, 0x4063D020, 0x00000002, 0x4062C843, 0x4063D020, 0x00000002,\n\t0x4062C844, 0x4063D020, 0x00000002, 0x4062C845, 0x4063D020, 0x00000002,\n\t0x4062C846, 0x4063D020, 0x00000002, 0x4062C847, 0x4063D020, 0x00000002,\n\t0x4062C848, 0x4063D020, 0x00000002, 0x4062C849, 0x4063D020, 0x00000002,\n\t0x4062C84A, 0x4063D020, 0x00000003, 0x4062C821, 0x4063D020, 0x40646420,\n\t0x00000003, 0x4062C822, 0x4063D020, 0x40646420, 0x00000003, 0x4062C823,\n\t0x4063D020, 0x40646420, 0x00000003, 0x4062C824, 0x4063D020, 0x40646420,\n\t0x00000003, 0x4062C821, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C822,\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C823,\n\t// Block 617, offset 0x9a40\n\t0x4063D020, 0x40646A20, 0x00000003, 0x4062C824, 0x4063D020, 0x40646A20,\n\t0x00000003, 0x4062C825, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C821,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062C822, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062C823, 0x4063D020, 0x40647220, 0x00000003, 0x4062C821,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C822, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C823, 0x4063D020, 0x40648220, 0x00000003, 0x4062C824,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C825, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C826, 0x4063D020, 0x40648220, 0x00000003, 0x4062C827,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C828, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C829, 0x4063D020, 0x40648220, 0x00000003, 0x4062C82A,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C82B,\n\t// Block 618, offset 0x9a80\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C82C, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C82D, 0x4063D020, 0x40648220, 0x00000003, 0x4062C82E,\n\t0x4063D020, 0x40648220, 0x00000003, 0x4062C82F, 0x4063D020, 0x40648220,\n\t0x00000003, 0x4062C830, 0x4063D020, 0x40648220, 0x00000003, 0x4062C821,\n\t0x4063D020, 0x40648420, 0x00000003, 0x4062C821, 0x4063D020, 0x40648C20,\n\t0x00000003, 0x4062C822, 0x4063D020, 0x40648C20, 0x00000002, 0x4062CA21,\n\t0x4063BC20, 0x00000002, 0x4062CA22, 0x4063BC20, 0x00000002, 0x4062CA23,\n\t0x4063BC20, 0x00000002, 0x4062CC21, 0x4063A820, 0x00000002, 0x4062CC22,\n\t0x4063A820, 0x00000002, 0x4062CC23, 0x4063A820, 0x00000002, 0x4062CC24,\n\t0x4063A820, 0x00000002, 0x4062CC25, 0x4063A820, 0x00000002, 0x4062CC26,\n\t0x4063A820, 0x00000002, 0x4062CC27, 0x4063A820,\n\t// Block 619, offset 0x9ac0\n\t0x00000002, 0x4062CC28, 0x4063A820, 0x00000002, 0x4062CC29, 0x4063A820,\n\t0x00000002, 0x4062CC2A, 0x4063A820, 0x00000002, 0x4062CC2B, 0x4063A820,\n\t0x00000002, 0x4062CC2C, 0x4063A820, 0x00000002, 0x4062CC2D, 0x4063A820,\n\t0x00000002, 0x4062CC2E, 0x4063A820, 0x00000002, 0x4062CC2F, 0x4063A820,\n\t0x00000002, 0x4062CC30, 0x4063A820, 0x00000002, 0x4062CC31, 0x4063A820,\n\t0x00000002, 0x4062CC32, 0x4063A820, 0x00000002, 0x4062CC33, 0x4063A820,\n\t0x00000002, 0x4062CC34, 0x4063A820, 0x00000002, 0x4062CC35, 0x4063A820,\n\t0x00000002, 0x4062CC36, 0x4063A820, 0x00000002, 0x4062CC37, 0x4063A820,\n\t0x00000002, 0x4062CC38, 0x4063A820, 0x00000002, 0x4062CC39, 0x4063A820,\n\t0x00000002, 0x4062CC3A, 0x4063A820, 0x00000002, 0x4062CC3B, 0x4063A820,\n\t0x00000003, 0x4062CC21, 0x4063A820, 0x40646420,\n\t// Block 620, offset 0x9b00\n\t0x00000003, 0x4062CC22, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC23,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC24, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC25, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC26,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC27, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC28, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC29,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC2A, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC2B, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC2C,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC2D, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC2E, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC2F,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC30, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC31, 0x4063A820, 0x40646420,\n\t// Block 621, offset 0x9b40\n\t0x00000003, 0x4062CC32, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC33,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC34, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC35, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC36,\n\t0x4063A820, 0x40646420, 0x00000003, 0x4062CC37, 0x4063A820, 0x40646420,\n\t0x00000003, 0x4062CC21, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC22,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CC23, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CC24, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC25,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CC26, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CC27, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC28,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CC29, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CC2A, 0x4063A820, 0x40646A20,\n\t// Block 622, offset 0x9b80\n\t0x00000003, 0x4062CC2B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC2C,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CC2D, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CC2E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC2F,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CC21, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062CC22, 0x4063A820, 0x40647220, 0x00000003, 0x4062CC23,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062CC21, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062CC22, 0x4063A820, 0x40648220, 0x00000003, 0x4062CC23,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062CC24, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062CC25, 0x4063A820, 0x40648220, 0x00000003, 0x4062CC26,\n\t0x4063A820, 0x40648220, 0x00000003, 0x4062CC27, 0x4063A820, 0x40648220,\n\t0x00000003, 0x4062CC21, 0x4063A820, 0x40648420,\n\t// Block 623, offset 0x9bc0\n\t0x00000003, 0x4062CC22, 0x4063A820, 0x40648420, 0x00000003, 0x4062CC23,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062CC24, 0x4063A820, 0x40648420,\n\t0x00000003, 0x4062CC25, 0x4063A820, 0x40648420, 0x00000003, 0x4062CC26,\n\t0x4063A820, 0x40648420, 0x00000003, 0x4062CC21, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062CC22, 0x4063A820, 0x40648C20, 0x00000003, 0x4062CC23,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062CC24, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062CC25, 0x4063A820, 0x40648C20, 0x00000003, 0x4062CC26,\n\t0x4063A820, 0x40648C20, 0x00000003, 0x4062CC27, 0x4063A820, 0x40648C20,\n\t0x00000003, 0x4062CC28, 0x4063A820, 0x40648C20, 0x00000002, 0x4062CC21,\n\t0x4063AA20, 0x00000002, 0x4062CC22, 0x4063AA20, 0x00000002, 0x4062CC23,\n\t0x4063AA20, 0x00000002, 0x4062CC24, 0x4063AA20,\n\t// Block 624, offset 0x9c00\n\t0x00000002, 0x4062CC25, 0x4063AA20, 0x00000002, 0x4062CC26, 0x4063AA20,\n\t0x00000002, 0x4062CC27, 0x4063AA20, 0x00000002, 0x4062CC28, 0x4063AA20,\n\t0x00000002, 0x4062CC29, 0x4063AA20, 0x00000002, 0x4062CC2A, 0x4063AA20,\n\t0x00000002, 0x4062CC2B, 0x4063AA20, 0x00000002, 0x4062CC2C, 0x4063AA20,\n\t0x00000002, 0x4062CC2D, 0x4063AA20, 0x00000002, 0x4062CC2E, 0x4063AA20,\n\t0x00000002, 0x4062CC2F, 0x4063AA20, 0x00000002, 0x4062CC30, 0x4063AA20,\n\t0x00000002, 0x4062CC31, 0x4063AA20, 0x00000002, 0x4062CC32, 0x4063AA20,\n\t0x00000002, 0x4062CC33, 0x4063AA20, 0x00000002, 0x4062CC34, 0x4063AA20,\n\t0x00000002, 0x4062CC35, 0x4063AA20, 0x00000003, 0x4062CC21, 0x4063AA20,\n\t0x40646420, 0x00000003, 0x4062CC22, 0x4063AA20, 0x40646420, 0x00000003,\n\t0x4062CC21, 0x4063AA20, 0x40648C20, 0x00000003,\n\t// Block 625, offset 0x9c40\n\t0x4062CC22, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CC23, 0x4063AA20,\n\t0x40648C20, 0x00000002, 0x4062CC21, 0x4063B020, 0x00000002, 0x4062CC21,\n\t0x4063B820, 0x00000002, 0x4062CC22, 0x4063B820, 0x00000002, 0x4062CC23,\n\t0x4063B820, 0x00000002, 0x4062CC24, 0x4063B820, 0x00000003, 0x4062CC21,\n\t0x4063B820, 0x40646A20, 0x00000003, 0x4062CC22, 0x4063B820, 0x40646A20,\n\t0x00000003, 0x4062CC23, 0x4063B820, 0x40646A20, 0x00000003, 0x4062CC21,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062CC22, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062CC23, 0x4063B820, 0x40648C20, 0x00000003, 0x4062CC24,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062CC25, 0x4063B820, 0x40648C20,\n\t0x00000003, 0x4062CC26, 0x4063B820, 0x40648C20, 0x00000003, 0x4062CC27,\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062CC28,\n\t// Block 626, offset 0x9c80\n\t0x4063B820, 0x40648C20, 0x00000003, 0x4062CC29, 0x4063B820, 0x40648C20,\n\t0x00000002, 0x4062CC21, 0x4063BE20, 0x00000002, 0x4062CC22, 0x4063BE20,\n\t0x00000002, 0x4062CC23, 0x4063BE20, 0x00000002, 0x4062CC24, 0x4063BE20,\n\t0x00000002, 0x4062CC25, 0x4063BE20, 0x00000002, 0x4062CC26, 0x4063BE20,\n\t0x00000002, 0x4062CC27, 0x4063BE20, 0x00000002, 0x4062CC21, 0x4063C220,\n\t0x00000002, 0x4062CC22, 0x4063C220, 0x00000002, 0x4062CC23, 0x4063C220,\n\t0x00000002, 0x4062CC24, 0x4063C220, 0x00000002, 0x4062CC25, 0x4063C220,\n\t0x00000002, 0x4062CC26, 0x4063C220, 0x00000002, 0x4062CC27, 0x4063C220,\n\t0x00000002, 0x4062CC28, 0x4063C220, 0x00000002, 0x4062CC29, 0x4063C220,\n\t0x00000003, 0x4062CC21, 0x4063C220, 0x40648C20, 0x00000003, 0x4062CC21,\n\t0x4063CC20, 0x40646420, 0x00000003, 0x4062CC22,\n\t// Block 627, offset 0x9cc0\n\t0x4063CC20, 0x40646420, 0x00000003, 0x4062CC23, 0x4063CC20, 0x40646420,\n\t0x00000003, 0x4062CC21, 0x4063CC20, 0x40648220, 0x00000002, 0x4062CE21,\n\t0x4063A820, 0x00000002, 0x4062CE22, 0x4063A820, 0x00000002, 0x4062CE23,\n\t0x4063A820, 0x00000002, 0x4062CE24, 0x4063A820, 0x00000002, 0x4062CE25,\n\t0x4063A820, 0x00000002, 0x4062CE26, 0x4063A820, 0x00000002, 0x4062CE27,\n\t0x4063A820, 0x00000002, 0x4062CE28, 0x4063A820, 0x00000002, 0x4062CE29,\n\t0x4063A820, 0x00000002, 0x4062CE2A, 0x4063A820, 0x00000002, 0x4062CE2B,\n\t0x4063A820, 0x00000002, 0x4062CE2C, 0x4063A820, 0x00000002, 0x4062CE2D,\n\t0x4063A820, 0x00000002, 0x4062CE2E, 0x4063A820, 0x00000002, 0x4062CE2F,\n\t0x4063A820, 0x00000002, 0x4062CE30, 0x4063A820, 0x00000002, 0x4062CE31,\n\t0x4063A820, 0x00000002, 0x4062CE32, 0x4063A820,\n\t// Block 628, offset 0x9d00\n\t0x00000002, 0x4062CE33, 0x4063A820, 0x00000002, 0x4062CE34, 0x4063A820,\n\t0x00000002, 0x4062CE35, 0x4063A820, 0x00000002, 0x4062CE36, 0x4063A820,\n\t0x00000002, 0x4062CE37, 0x4063A820, 0x00000002, 0x4062CE38, 0x4063A820,\n\t0x00000002, 0x4062CE39, 0x4063A820, 0x00000002, 0x4062CE3A, 0x4063A820,\n\t0x00000002, 0x4062CE3B, 0x4063A820, 0x00000002, 0x4062CE3C, 0x4063A820,\n\t0x00000002, 0x4062CE3D, 0x4063A820, 0x00000002, 0x4062CE3E, 0x4063A820,\n\t0x00000003, 0x4062CE21, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CE22,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CE23, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CE24, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CE25,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CE26, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CE27, 0x4063A820, 0x40646A20,\n\t// Block 629, offset 0x9d40\n\t0x00000003, 0x4062CE28, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CE29,\n\t0x4063A820, 0x40646A20, 0x00000003, 0x4062CE2A, 0x4063A820, 0x40646A20,\n\t0x00000003, 0x4062CE21, 0x4063A820, 0x40647220, 0x00000003, 0x4062CE22,\n\t0x4063A820, 0x40647220, 0x00000003, 0x4062CE23, 0x4063A820, 0x40647220,\n\t0x00000003, 0x4062CE24, 0x4063A820, 0x40647220, 0x00000003, 0x4062CE25,\n\t0x4063A820, 0x40647220, 0x00000002, 0x4062CE21, 0x4063AA20, 0x00000002,\n\t0x4062CE22, 0x4063AA20, 0x00000002, 0x4062CE23, 0x4063AA20, 0x00000002,\n\t0x4062CE24, 0x4063AA20, 0x00000002, 0x4062CE25, 0x4063AA20, 0x00000002,\n\t0x4062CE26, 0x4063AA20, 0x00000002, 0x4062CE27, 0x4063AA20, 0x00000002,\n\t0x4062CE28, 0x4063AA20, 0x00000002, 0x4062CE29, 0x4063AA20, 0x00000002,\n\t0x4062CE2A, 0x4063AA20, 0x00000002, 0x4062CE2B,\n\t// Block 630, offset 0x9d80\n\t0x4063AA20, 0x00000002, 0x4062CE2C, 0x4063AA20, 0x00000002, 0x4062CE2D,\n\t0x4063AA20, 0x00000002, 0x4062CE2E, 0x4063AA20, 0x00000002, 0x4062CE2F,\n\t0x4063AA20, 0x00000002, 0x4062CE30, 0x4063AA20, 0x00000003, 0x4062CE21,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE22, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062CE23, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE24,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE25, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062CE26, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE27,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE28, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062CE21, 0x4063AC20, 0x40646420, 0x00000003, 0x4062CE21,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062CE22, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062CE23, 0x4063B420, 0x40646A20,\n\t// Block 631, offset 0x9dc0\n\t0x00000003, 0x4062CE24, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE25,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062CE26, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062CE27, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE28,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062CE29, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062CE2A, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE2B,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062CE2C, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062CE2D, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE2E,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062CE2F, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062CE30, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE31,\n\t0x4063B420, 0x40646A20, 0x00000003, 0x4062CE32, 0x4063B420, 0x40646A20,\n\t0x00000003, 0x4062CE33, 0x4063B420, 0x40646A20,\n\t// Block 632, offset 0x9e00\n\t0x00000003, 0x4062CE21, 0x4063B420, 0x40648220, 0x00000003, 0x4062CE22,\n\t0x4063B420, 0x40648220, 0x00000003, 0x4062CE23, 0x4063B420, 0x40648220,\n\t0x00000003, 0x4062CE21, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE22,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062CE23, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062CE24, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE25,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062CE26, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062CE27, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE28,\n\t0x4063B420, 0x40648C20, 0x00000003, 0x4062CE29, 0x4063B420, 0x40648C20,\n\t0x00000003, 0x4062CE2A, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE2B,\n\t0x4063B420, 0x40648C20, 0x00000002, 0x4062CE21, 0x4063B620, 0x00000002,\n\t0x4062CE22, 0x4063B620, 0x00000002, 0x4062CE23,\n\t// Block 633, offset 0x9e40\n\t0x4063B620, 0x00000002, 0x4062CE24, 0x4063B620, 0x00000002, 0x4062CE25,\n\t0x4063B620, 0x00000002, 0x4062CE26, 0x4063B620, 0x00000002, 0x4062CE27,\n\t0x4063B620, 0x00000002, 0x4062CE28, 0x4063B620, 0x00000002, 0x4062CE29,\n\t0x4063B620, 0x00000002, 0x4062CE2A, 0x4063B620, 0x00000002, 0x4062CE2B,\n\t0x4063B620, 0x00000002, 0x4062CE2C, 0x4063B620, 0x00000002, 0x4062CE2D,\n\t0x4063B620, 0x00000002, 0x4062CE2E, 0x4063B620, 0x00000002, 0x4062CE21,\n\t0x4063B820, 0x00000002, 0x4062CE22, 0x4063B820, 0x00000002, 0x4062CE23,\n\t0x4063B820, 0x00000002, 0x4062CE24, 0x4063B820, 0x00000002, 0x4062CE25,\n\t0x4063B820, 0x00000002, 0x4062CE26, 0x4063B820, 0x00000002, 0x4062CE27,\n\t0x4063B820, 0x00000002, 0x4062CE28, 0x4063B820, 0x00000002, 0x4062CE29,\n\t0x4063B820, 0x00000002, 0x4062CE2A, 0x4063B820,\n\t// Block 634, offset 0x9e80\n\t0x00000002, 0x4062CE2B, 0x4063B820, 0x00000002, 0x4062CE2C, 0x4063B820,\n\t0x00000002, 0x4062CE2D, 0x4063B820, 0x00000002, 0x4062CE2E, 0x4063B820,\n\t0x00000002, 0x4062CE2F, 0x4063B820, 0x00000002, 0x4062CE30, 0x4063B820,\n\t0x00000002, 0x4062CE31, 0x4063B820, 0x00000002, 0x4062CE32, 0x4063B820,\n\t0x00000002, 0x4062CE33, 0x4063B820, 0x00000002, 0x4062CE34, 0x4063B820,\n\t0x00000002, 0x4062CE35, 0x4063B820, 0x00000002, 0x4062CE36, 0x4063B820,\n\t0x00000002, 0x4062CE37, 0x4063B820, 0x00000002, 0x4062CE38, 0x4063B820,\n\t0x00000002, 0x4062CE39, 0x4063B820, 0x00000002, 0x4062CE3A, 0x4063B820,\n\t0x00000002, 0x4062CE3B, 0x4063B820, 0x00000002, 0x4062CE3C, 0x4063B820,\n\t0x00000002, 0x4062CE3D, 0x4063B820, 0x00000002, 0x4062CE3E, 0x4063B820,\n\t0x00000002, 0x4062CE3F, 0x4063B820, 0x00000002,\n\t// Block 635, offset 0x9ec0\n\t0x4062CE40, 0x4063B820, 0x00000002, 0x4062CE41, 0x4063B820, 0x00000002,\n\t0x4062CE42, 0x4063B820, 0x00000002, 0x4062CE43, 0x4063B820, 0x00000002,\n\t0x4062CE44, 0x4063B820, 0x00000002, 0x4062CE45, 0x4063B820, 0x00000002,\n\t0x4062CE46, 0x4063B820, 0x00000002, 0x4062CE47, 0x4063B820, 0x00000003,\n\t0x4062CE21, 0x4063B820, 0x40646420, 0x00000003, 0x4062CE22, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062CE23, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062CE24, 0x4063B820, 0x40646420, 0x00000003, 0x4062CE25, 0x4063B820,\n\t0x40646420, 0x00000002, 0x4062CE21, 0x4063C020, 0x00000002, 0x4062CE22,\n\t0x4063C020, 0x00000002, 0x4062CE23, 0x4063C020, 0x00000002, 0x4062CE24,\n\t0x4063C020, 0x00000002, 0x4062CE25, 0x4063C020, 0x00000002, 0x4062CE26,\n\t0x4063C020, 0x00000002, 0x4062CE27, 0x4063C020,\n\t// Block 636, offset 0x9f00\n\t0x00000002, 0x4062CE28, 0x4063C020, 0x00000002, 0x4062CE29, 0x4063C020,\n\t0x00000002, 0x4062CE2A, 0x4063C020, 0x00000002, 0x4062CE2B, 0x4063C020,\n\t0x00000002, 0x4062CE2C, 0x4063C020, 0x00000002, 0x4062CE2D, 0x4063C020,\n\t0x00000002, 0x4062CE2E, 0x4063C020, 0x00000002, 0x4062CE2F, 0x4063C020,\n\t0x00000002, 0x4062CE30, 0x4063C020, 0x00000002, 0x4062CE31, 0x4063C020,\n\t0x00000002, 0x4062CE32, 0x4063C020, 0x00000002, 0x4062CE33, 0x4063C020,\n\t0x00000002, 0x4062CE34, 0x4063C020, 0x00000002, 0x4062CE35, 0x4063C020,\n\t0x00000002, 0x4062CE36, 0x4063C020, 0x00000002, 0x4062CE37, 0x4063C020,\n\t0x00000002, 0x4062CE38, 0x4063C020, 0x00000002, 0x4062CE39, 0x4063C020,\n\t0x00000002, 0x4062CE3A, 0x4063C020, 0x00000002, 0x4062CE3B, 0x4063C020,\n\t0x00000003, 0x4062CE21, 0x4063C220, 0x40648220,\n\t// Block 637, offset 0x9f40\n\t0x00000003, 0x4062CE22, 0x4063C220, 0x40648220, 0x00000003, 0x4062CE23,\n\t0x4063C220, 0x40648220, 0x00000003, 0x4062CE21, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062CE22, 0x4063C220, 0x40648C20, 0x00000003, 0x4062CE23,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062CE24, 0x4063C220, 0x40648C20,\n\t0x00000003, 0x4062CE25, 0x4063C220, 0x40648C20, 0x00000003, 0x4062CE26,\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062CE27, 0x4063C220, 0x40648C20,\n\t0x00000002, 0x4062CE21, 0x4063D020, 0x00000002, 0x4062CE22, 0x4063D020,\n\t0x00000002, 0x4062CE23, 0x4063D020, 0x00000002, 0x4062CE24, 0x4063D020,\n\t0x00000002, 0x4062CE25, 0x4063D020, 0x00000002, 0x4062CE26, 0x4063D020,\n\t0x00000002, 0x4062CE27, 0x4063D020, 0x00000002, 0x4062CE28, 0x4063D020,\n\t0x00000002, 0x4062CE29, 0x4063D020, 0x00000002,\n\t// Block 638, offset 0x9f80\n\t0x4062CE2A, 0x4063D020, 0x00000002, 0x4062CE2B, 0x4063D020, 0x00000003,\n\t0x4062CE21, 0x4063D020, 0x40646420, 0x00000003, 0x4062CE21, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE22, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE23, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE24, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE25, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE26, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE27, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE28, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE29, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE2A, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE2B, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE2C, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE2D, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE2E, 0x4063D020,\n\t// Block 639, offset 0x9fc0\n\t0x40647220, 0x00000003, 0x4062CE2F, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE30, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE31, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE32, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE33, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE34, 0x4063D020,\n\t0x40647220, 0x00000003, 0x4062CE35, 0x4063D020, 0x40647220, 0x00000003,\n\t0x4062CE36, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE21, 0x4063D020,\n\t0x40648420, 0x00000003, 0x4062CE22, 0x4063D020, 0x40648420, 0x00000003,\n\t0x4062CE23, 0x4063D020, 0x40648420, 0x00000002, 0x4062D021, 0x4063A820,\n\t0x00000002, 0x4062D022, 0x4063A820, 0x00000002, 0x4062D023, 0x4063A820,\n\t0x00000002, 0x4062D024, 0x4063A820, 0x00000002, 0x4062D025, 0x4063A820,\n\t0x00000002, 0x4062D026, 0x4063A820, 0x00000002,\n\t// Block 640, offset 0xa000\n\t0x4062D027, 0x4063A820, 0x00000002, 0x4062D028, 0x4063A820, 0x00000002,\n\t0x4062D029, 0x4063A820, 0x00000002, 0x4062D02A, 0x4063A820, 0x00000002,\n\t0x4062D02B, 0x4063A820, 0x00000002, 0x4062D02C, 0x4063A820, 0x00000002,\n\t0x4062D02D, 0x4063A820, 0x00000002, 0x4062D02E, 0x4063A820, 0x00000002,\n\t0x4062D02F, 0x4063A820, 0x00000002, 0x4062D030, 0x4063A820, 0x00000002,\n\t0x4062D031, 0x4063A820, 0x00000002, 0x4062D032, 0x4063A820, 0x00000002,\n\t0x4062D033, 0x4063A820, 0x00000002, 0x4062D034, 0x4063A820, 0x00000002,\n\t0x4062D035, 0x4063A820, 0x00000002, 0x4062D036, 0x4063A820, 0x00000003,\n\t0x4062D021, 0x4063A820, 0x40646420, 0x00000003, 0x4062D022, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062D023, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062D024, 0x4063A820, 0x40646420, 0x00000003,\n\t// Block 641, offset 0xa040\n\t0x4062D025, 0x4063A820, 0x40646420, 0x00000003, 0x4062D026, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062D027, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062D028, 0x4063A820, 0x40646420, 0x00000003, 0x4062D029, 0x4063A820,\n\t0x40646420, 0x00000003, 0x4062D02A, 0x4063A820, 0x40646420, 0x00000003,\n\t0x4062D02B, 0x4063A820, 0x40646420, 0x00000003, 0x4062D021, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D022, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D023, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D024, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D025, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D026, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D027, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D028, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D029, 0x4063A820, 0x40646A20, 0x00000003,\n\t// Block 642, offset 0xa080\n\t0x4062D02A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D02B, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D02C, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D02D, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D02E, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D02F, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D030, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D031, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D032, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D033, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D034, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D035, 0x4063A820, 0x40646A20, 0x00000003,\n\t0x4062D036, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D037, 0x4063A820,\n\t0x40646A20, 0x00000003, 0x4062D021, 0x4063A820, 0x40647220, 0x00000003,\n\t0x4062D022, 0x4063A820, 0x40647220, 0x00000003,\n\t// Block 643, offset 0xa0c0\n\t0x4062D023, 0x4063A820, 0x40647220, 0x00000003, 0x4062D021, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062D022, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062D023, 0x4063A820, 0x40648220, 0x00000003, 0x4062D024, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062D025, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062D026, 0x4063A820, 0x40648220, 0x00000003, 0x4062D027, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062D028, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062D029, 0x4063A820, 0x40648220, 0x00000003, 0x4062D02A, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062D02B, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062D02C, 0x4063A820, 0x40648220, 0x00000003, 0x4062D02D, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062D02E, 0x4063A820, 0x40648220, 0x00000003,\n\t0x4062D02F, 0x4063A820, 0x40648220, 0x00000003,\n\t// Block 644, offset 0xa100\n\t0x4062D030, 0x4063A820, 0x40648220, 0x00000003, 0x4062D031, 0x4063A820,\n\t0x40648220, 0x00000003, 0x4062D021, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062D022, 0x4063A820, 0x40648420, 0x00000003, 0x4062D023, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062D024, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062D025, 0x4063A820, 0x40648420, 0x00000003, 0x4062D026, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062D027, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062D028, 0x4063A820, 0x40648420, 0x00000003, 0x4062D029, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062D02A, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062D02B, 0x4063A820, 0x40648420, 0x00000003, 0x4062D02C, 0x4063A820,\n\t0x40648420, 0x00000003, 0x4062D02D, 0x4063A820, 0x40648420, 0x00000003,\n\t0x4062D02E, 0x4063A820, 0x40648420, 0x00000003,\n\t// Block 645, offset 0xa140\n\t0x4062D021, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D022, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062D023, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062D024, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D025, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062D026, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062D027, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D028, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062D029, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062D02A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D02B, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062D02C, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062D02D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D02E, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062D02F, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062D030, 0x4063A820, 0x40648C20, 0x00000003,\n\t// Block 646, offset 0xa180\n\t0x4062D031, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D032, 0x4063A820,\n\t0x40648C20, 0x00000003, 0x4062D033, 0x4063A820, 0x40648C20, 0x00000003,\n\t0x4062D034, 0x4063A820, 0x40648C20, 0x00000002, 0x4062D021, 0x4063AA20,\n\t0x00000002, 0x4062D022, 0x4063AA20, 0x00000002, 0x4062D023, 0x4063AA20,\n\t0x00000002, 0x4062D024, 0x4063AA20, 0x00000002, 0x4062D025, 0x4063AA20,\n\t0x00000002, 0x4062D026, 0x4063AA20, 0x00000002, 0x4062D027, 0x4063AA20,\n\t0x00000002, 0x4062D028, 0x4063AA20, 0x00000002, 0x4062D029, 0x4063AA20,\n\t0x00000002, 0x4062D02A, 0x4063AA20, 0x00000002, 0x4062D02B, 0x4063AA20,\n\t0x00000002, 0x4062D02C, 0x4063AA20, 0x00000002, 0x4062D02D, 0x4063AA20,\n\t0x00000002, 0x4062D02E, 0x4063AA20, 0x00000002, 0x4062D02F, 0x4063AA20,\n\t0x00000002, 0x4062D030, 0x4063AA20, 0x00000002,\n\t// Block 647, offset 0xa1c0\n\t0x4062D031, 0x4063AA20, 0x00000002, 0x4062D032, 0x4063AA20, 0x00000002,\n\t0x4062D033, 0x4063AA20, 0x00000002, 0x4062D034, 0x4063AA20, 0x00000002,\n\t0x4062D035, 0x4063AA20, 0x00000002, 0x4062D036, 0x4063AA20, 0x00000002,\n\t0x4062D037, 0x4063AA20, 0x00000002, 0x4062D038, 0x4063AA20, 0x00000002,\n\t0x4062D039, 0x4063AA20, 0x00000002, 0x4062D03A, 0x4063AA20, 0x00000002,\n\t0x4062D03B, 0x4063AA20, 0x00000002, 0x4062D03C, 0x4063AA20, 0x00000002,\n\t0x4062D03D, 0x4063AA20, 0x00000003, 0x4062D021, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062D022, 0x4063AA20, 0x40646420, 0x00000003, 0x4062D023,\n\t0x4063AA20, 0x40646420, 0x00000003, 0x4062D024, 0x4063AA20, 0x40646420,\n\t0x00000003, 0x4062D021, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062D022,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062D023,\n\t// Block 648, offset 0xa200\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062D024, 0x4063AA20, 0x40648C20,\n\t0x00000003, 0x4062D025, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062D026,\n\t0x4063AA20, 0x40648C20, 0x00000003, 0x4062D021, 0x4063AC20, 0x40648C20,\n\t0x00000003, 0x4062D022, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062D023,\n\t0x4063AC20, 0x40648C20, 0x00000003, 0x4062D024, 0x4063AC20, 0x40648C20,\n\t0x00000003, 0x4062D025, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062D026,\n\t0x4063AC20, 0x40648C20, 0x00000003, 0x4062D027, 0x4063AC20, 0x40648C20,\n\t0x00000003, 0x4062D028, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062D029,\n\t0x4063AC20, 0x40648C20, 0x00000003, 0x4062D02A, 0x4063AC20, 0x40648C20,\n\t0x00000002, 0x4062D021, 0x4063B020, 0x00000002, 0x4062D022, 0x4063B020,\n\t0x00000002, 0x4062D023, 0x4063B020, 0x00000002,\n\t// Block 649, offset 0xa240\n\t0x4062D024, 0x4063B020, 0x00000002, 0x4062D025, 0x4063B020, 0x00000003,\n\t0x4062D021, 0x4063B020, 0x40646A20, 0x00000003, 0x4062D022, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062D023, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062D024, 0x4063B020, 0x40646A20, 0x00000003, 0x4062D025, 0x4063B020,\n\t0x40646A20, 0x00000003, 0x4062D026, 0x4063B020, 0x40646A20, 0x00000003,\n\t0x4062D027, 0x4063B020, 0x40646A20, 0x00000003, 0x4062D021, 0x4063B020,\n\t0x40647220, 0x00000003, 0x4062D021, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062D022, 0x4063B020, 0x40648220, 0x00000003, 0x4062D023, 0x4063B020,\n\t0x40648220, 0x00000003, 0x4062D024, 0x4063B020, 0x40648220, 0x00000003,\n\t0x4062D025, 0x4063B020, 0x40648220, 0x00000003, 0x4062D021, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062D022, 0x4063B420,\n\t// Block 650, offset 0xa280\n\t0x40646420, 0x00000003, 0x4062D023, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062D024, 0x4063B420, 0x40646420, 0x00000003, 0x4062D025, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062D026, 0x4063B420, 0x40646420, 0x00000003,\n\t0x4062D027, 0x4063B420, 0x40646420, 0x00000003, 0x4062D028, 0x4063B420,\n\t0x40646420, 0x00000003, 0x4062D021, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D022, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D023, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D024, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D025, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D026, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D027, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D028, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D029, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D02A, 0x4063B420,\n\t// Block 651, offset 0xa2c0\n\t0x40646A20, 0x00000003, 0x4062D02B, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D02C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D02D, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D02E, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D02F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D030, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D031, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D032, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D033, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D034, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D035, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D036, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D037, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D038, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D039, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D03A, 0x4063B420,\n\t// Block 652, offset 0xa300\n\t0x40646A20, 0x00000003, 0x4062D03B, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D03C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D03D, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D03E, 0x4063B420, 0x40646A20, 0x00000003,\n\t0x4062D03F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D040, 0x4063B420,\n\t0x40646A20, 0x00000003, 0x4062D021, 0x4063B420, 0x40647220, 0x00000003,\n\t0x4062D022, 0x4063B420, 0x40647220, 0x00000003, 0x4062D023, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062D024, 0x4063B420, 0x40647220, 0x00000003,\n\t0x4062D025, 0x4063B420, 0x40647220, 0x00000003, 0x4062D026, 0x4063B420,\n\t0x40647220, 0x00000003, 0x4062D021, 0x4063B420, 0x40648220, 0x00000003,\n\t0x4062D021, 0x4063B420, 0x40648420, 0x00000003, 0x4062D022, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062D023, 0x4063B420,\n\t// Block 653, offset 0xa340\n\t0x40648420, 0x00000003, 0x4062D024, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062D025, 0x4063B420, 0x40648420, 0x00000003, 0x4062D026, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062D027, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062D028, 0x4063B420, 0x40648420, 0x00000003, 0x4062D029, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062D02A, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062D02B, 0x4063B420, 0x40648420, 0x00000003, 0x4062D02C, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062D02D, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062D02E, 0x4063B420, 0x40648420, 0x00000003, 0x4062D02F, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062D030, 0x4063B420, 0x40648420, 0x00000003,\n\t0x4062D031, 0x4063B420, 0x40648420, 0x00000003, 0x4062D032, 0x4063B420,\n\t0x40648420, 0x00000003, 0x4062D033, 0x4063B420,\n\t// Block 654, offset 0xa380\n\t0x40648420, 0x00000003, 0x4062D021, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D022, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D023, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D024, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D025, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D026, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D027, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D028, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D029, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D02A, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D02B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D02C, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D02D, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D02E, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D02F, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D030, 0x4063B420,\n\t// Block 655, offset 0xa3c0\n\t0x40648C20, 0x00000003, 0x4062D031, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D032, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D033, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D034, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D035, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D036, 0x4063B420,\n\t0x40648C20, 0x00000003, 0x4062D037, 0x4063B420, 0x40648C20, 0x00000003,\n\t0x4062D038, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D039, 0x4063B420,\n\t0x40648C20, 0x00000002, 0x4062D021, 0x4063B620, 0x00000002, 0x4062D022,\n\t0x4063B620, 0x00000002, 0x4062D023, 0x4063B620, 0x00000002, 0x4062D024,\n\t0x4063B620, 0x00000002, 0x4062D025, 0x4063B620, 0x00000002, 0x4062D026,\n\t0x4063B620, 0x00000002, 0x4062D027, 0x4063B620, 0x00000002, 0x4062D028,\n\t0x4063B620, 0x00000002, 0x4062D029, 0x4063B620,\n\t// Block 656, offset 0xa400\n\t0x00000002, 0x4062D02A, 0x4063B620, 0x00000002, 0x4062D02B, 0x4063B620,\n\t0x00000002, 0x4062D02C, 0x4063B620, 0x00000002, 0x4062D02D, 0x4063B620,\n\t0x00000002, 0x4062D02E, 0x4063B620, 0x00000002, 0x4062D02F, 0x4063B620,\n\t0x00000002, 0x4062D030, 0x4063B620, 0x00000002, 0x4062D031, 0x4063B620,\n\t0x00000002, 0x4062D021, 0x4063B820, 0x00000002, 0x4062D022, 0x4063B820,\n\t0x00000002, 0x4062D023, 0x4063B820, 0x00000002, 0x4062D024, 0x4063B820,\n\t0x00000002, 0x4062D025, 0x4063B820, 0x00000002, 0x4062D026, 0x4063B820,\n\t0x00000002, 0x4062D027, 0x4063B820, 0x00000002, 0x4062D028, 0x4063B820,\n\t0x00000002, 0x4062D029, 0x4063B820, 0x00000002, 0x4062D02A, 0x4063B820,\n\t0x00000002, 0x4062D02B, 0x4063B820, 0x00000002, 0x4062D02C, 0x4063B820,\n\t0x00000002, 0x4062D02D, 0x4063B820, 0x00000002,\n\t// Block 657, offset 0xa440\n\t0x4062D02E, 0x4063B820, 0x00000002, 0x4062D02F, 0x4063B820, 0x00000002,\n\t0x4062D030, 0x4063B820, 0x00000002, 0x4062D031, 0x4063B820, 0x00000002,\n\t0x4062D032, 0x4063B820, 0x00000002, 0x4062D033, 0x4063B820, 0x00000002,\n\t0x4062D034, 0x4063B820, 0x00000002, 0x4062D035, 0x4063B820, 0x00000002,\n\t0x4062D036, 0x4063B820, 0x00000002, 0x4062D037, 0x4063B820, 0x00000002,\n\t0x4062D038, 0x4063B820, 0x00000002, 0x4062D039, 0x4063B820, 0x00000002,\n\t0x4062D03A, 0x4063B820, 0x00000002, 0x4062D03B, 0x4063B820, 0x00000002,\n\t0x4062D03C, 0x4063B820, 0x00000002, 0x4062D03D, 0x4063B820, 0x00000002,\n\t0x4062D03E, 0x4063B820, 0x00000002, 0x4062D03F, 0x4063B820, 0x00000002,\n\t0x4062D040, 0x4063B820, 0x00000002, 0x4062D041, 0x4063B820, 0x00000002,\n\t0x4062D042, 0x4063B820, 0x00000002, 0x4062D043,\n\t// Block 658, offset 0xa480\n\t0x4063B820, 0x00000002, 0x4062D044, 0x4063B820, 0x00000002, 0x4062D045,\n\t0x4063B820, 0x00000002, 0x4062D046, 0x4063B820, 0x00000002, 0x4062D047,\n\t0x4063B820, 0x00000002, 0x4062D048, 0x4063B820, 0x00000002, 0x4062D049,\n\t0x4063B820, 0x00000002, 0x4062D04A, 0x4063B820, 0x00000002, 0x4062D04B,\n\t0x4063B820, 0x00000002, 0x4062D04C, 0x4063B820, 0x00000002, 0x4062D04D,\n\t0x4063B820, 0x00000002, 0x4062D04E, 0x4063B820, 0x00000002, 0x4062D04F,\n\t0x4063B820, 0x00000002, 0x4062D050, 0x4063B820, 0x00000002, 0x4062D051,\n\t0x4063B820, 0x00000002, 0x4062D052, 0x4063B820, 0x00000002, 0x4062D053,\n\t0x4063B820, 0x00000002, 0x4062D054, 0x4063B820, 0x00000002, 0x4062D055,\n\t0x4063B820, 0x00000002, 0x4062D056, 0x4063B820, 0x00000002, 0x4062D057,\n\t0x4063B820, 0x00000002, 0x4062D058, 0x4063B820,\n\t// Block 659, offset 0xa4c0\n\t0x00000002, 0x4062D059, 0x4063B820, 0x00000002, 0x4062D05A, 0x4063B820,\n\t0x00000002, 0x4062D05B, 0x4063B820, 0x00000003, 0x4062D021, 0x4063B820,\n\t0x40646420, 0x00000003, 0x4062D022, 0x4063B820, 0x40646420, 0x00000003,\n\t0x4062D023, 0x4063B820, 0x40646420, 0x00000003, 0x4062D021, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062D022, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062D023, 0x4063B820, 0x40646A20, 0x00000003, 0x4062D024, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062D025, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062D026, 0x4063B820, 0x40646A20, 0x00000003, 0x4062D027, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062D028, 0x4063B820, 0x40646A20, 0x00000003,\n\t0x4062D029, 0x4063B820, 0x40646A20, 0x00000003, 0x4062D02A, 0x4063B820,\n\t0x40646A20, 0x00000003, 0x4062D02B, 0x4063B820,\n\t// Block 660, offset 0xa500\n\t0x40646A20, 0x00000003, 0x4062D021, 0x4063B820, 0x40647220, 0x00000003,\n\t0x4062D022, 0x4063B820, 0x40647220, 0x00000003, 0x4062D023, 0x4063B820,\n\t0x40647220, 0x00000003, 0x4062D024, 0x4063B820, 0x40647220, 0x00000003,\n\t0x4062D021, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D022, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062D023, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062D024, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D025, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062D026, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062D027, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D028, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062D029, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062D02A, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D02B, 0x4063B820,\n\t0x40648C20, 0x00000003, 0x4062D02C, 0x4063B820,\n\t// Block 661, offset 0xa540\n\t0x40648C20, 0x00000003, 0x4062D02D, 0x4063B820, 0x40648C20, 0x00000003,\n\t0x4062D02E, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D02F, 0x4063B820,\n\t0x40648C20, 0x00000002, 0x4062D021, 0x4063BA20, 0x00000002, 0x4062D022,\n\t0x4063BA20, 0x00000002, 0x4062D023, 0x4063BA20, 0x00000002, 0x4062D024,\n\t0x4063BA20, 0x00000002, 0x4062D025, 0x4063BA20, 0x00000002, 0x4062D026,\n\t0x4063BA20, 0x00000002, 0x4062D027, 0x4063BA20, 0x00000002, 0x4062D028,\n\t0x4063BA20, 0x00000002, 0x4062D029, 0x4063BA20, 0x00000002, 0x4062D02A,\n\t0x4063BA20, 0x00000002, 0x4062D02B, 0x4063BA20, 0x00000002, 0x4062D02C,\n\t0x4063BA20, 0x00000002, 0x4062D02D, 0x4063BA20, 0x00000002, 0x4062D02E,\n\t0x4063BA20, 0x00000002, 0x4062D02F, 0x4063BA20, 0x00000002, 0x4062D030,\n\t0x4063BA20, 0x00000002, 0x4062D031, 0x4063BA20,\n\t// Block 662, offset 0xa580\n\t0x00000002, 0x4062D032, 0x4063BA20, 0x00000002, 0x4062D033, 0x4063BA20,\n\t0x00000002, 0x4062D034, 0x4063BA20, 0x00000002, 0x4062D035, 0x4063BA20,\n\t0x00000003, 0x4062D021, 0x4063BA20, 0x40646420, 0x00000003, 0x4062D022,\n\t0x4063BA20, 0x40646420, 0x00000003, 0x4062D023, 0x4063BA20, 0x40646420,\n\t0x00000003, 0x4062D024, 0x4063BA20, 0x40646420, 0x00000003, 0x4062D025,\n\t0x4063BA20, 0x40646420, 0x00000003, 0x4062D026, 0x4063BA20, 0x40646420,\n\t0x00000003, 0x4062D027, 0x4063BA20, 0x40646420, 0x00000003, 0x4062D028,\n\t0x4063BA20, 0x40646420, 0x00000003, 0x4062D029, 0x4063BA20, 0x40646420,\n\t0x00000003, 0x4062D021, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D022,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D023, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D024, 0x4063BA20, 0x40646A20,\n\t// Block 663, offset 0xa5c0\n\t0x00000003, 0x4062D025, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D026,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D027, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D028, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D029,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D02A, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D02B, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D02C,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D02D, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D02E, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D02F,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D030, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D031, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D032,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D033, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D034, 0x4063BA20, 0x40646A20,\n\t// Block 664, offset 0xa600\n\t0x00000003, 0x4062D035, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D036,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D037, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D038, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D039,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D03A, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D03B, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D03C,\n\t0x4063BA20, 0x40646A20, 0x00000003, 0x4062D03D, 0x4063BA20, 0x40646A20,\n\t0x00000003, 0x4062D021, 0x4063BA20, 0x40647220, 0x00000003, 0x4062D022,\n\t0x4063BA20, 0x40647220, 0x00000003, 0x4062D023, 0x4063BA20, 0x40647220,\n\t0x00000003, 0x4062D024, 0x4063BA20, 0x40647220, 0x00000003, 0x4062D025,\n\t0x4063BA20, 0x40647220, 0x00000003, 0x4062D026, 0x4063BA20, 0x40647220,\n\t0x00000003, 0x4062D021, 0x4063BA20, 0x40648C20,\n\t// Block 665, offset 0xa640\n\t0x00000003, 0x4062D022, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D023,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D024, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D025, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D026,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D027, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D028, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D029,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D02A, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D02B, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D02C,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D02D, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D02E, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D02F,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D030, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D031, 0x4063BA20, 0x40648C20,\n\t// Block 666, offset 0xa680\n\t0x00000003, 0x4062D032, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D033,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D034, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D035, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D036,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D037, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D038, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D039,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D03A, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D03B, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D03C,\n\t0x4063BA20, 0x40648C20, 0x00000003, 0x4062D03D, 0x4063BA20, 0x40648C20,\n\t0x00000003, 0x4062D03E, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D03F,\n\t0x4063BA20, 0x40648C20, 0x00000002, 0x4062D021, 0x4063BE20, 0x00000002,\n\t0x4062D022, 0x4063BE20, 0x00000002, 0x4062D023,\n\t// Block 667, offset 0xa6c0\n\t0x4063BE20, 0x00000002, 0x4062D024, 0x4063BE20, 0x00000002, 0x4062D025,\n\t0x4063BE20, 0x00000002, 0x4062D026, 0x4063BE20, 0x00000002, 0x4062D027,\n\t0x4063BE20, 0x00000002, 0x4062D028, 0x4063BE20, 0x00000002, 0x4062D029,\n\t0x4063BE20, 0x00000002, 0x4062D02A, 0x4063BE20, 0x00000002, 0x4062D02B,\n\t0x4063BE20, 0x00000002, 0x4062D02C, 0x4063BE20, 0x00000002, 0x4062D02D,\n\t0x4063BE20, 0x00000002, 0x4062D02E, 0x4063BE20, 0x00000002, 0x4062D02F,\n\t0x4063BE20, 0x00000002, 0x4062D030, 0x4063BE20, 0x00000002, 0x4062D031,\n\t0x4063BE20, 0x00000002, 0x4062D032, 0x4063BE20, 0x00000002, 0x4062D033,\n\t0x4063BE20, 0x00000002, 0x4062D034, 0x4063BE20, 0x00000002, 0x4062D035,\n\t0x4063BE20, 0x00000002, 0x4062D036, 0x4063BE20, 0x00000002, 0x4062D037,\n\t0x4063BE20, 0x00000002, 0x4062D038, 0x4063BE20,\n\t// Block 668, offset 0xa700\n\t0x00000002, 0x4062D039, 0x4063BE20, 0x00000002, 0x4062D03A, 0x4063BE20,\n\t0x00000002, 0x4062D03B, 0x4063BE20, 0x00000002, 0x4062D03C, 0x4063BE20,\n\t0x00000002, 0x4062D03D, 0x4063BE20, 0x00000003, 0x4062D021, 0x4063BE20,\n\t0x40646420, 0x00000003, 0x4062D022, 0x4063BE20, 0x40646420, 0x00000003,\n\t0x4062D023, 0x4063BE20, 0x40646420, 0x00000003, 0x4062D021, 0x4063BE20,\n\t0x40648C20, 0x00000003, 0x4062D022, 0x4063BE20, 0x40648C20, 0x00000003,\n\t0x4062D023, 0x4063BE20, 0x40648C20, 0x00000003, 0x4062D024, 0x4063BE20,\n\t0x40648C20, 0x00000003, 0x4062D025, 0x4063BE20, 0x40648C20, 0x00000003,\n\t0x4062D026, 0x4063BE20, 0x40648C20, 0x00000002, 0x4062D021, 0x4063C020,\n\t0x00000002, 0x4062D022, 0x4063C020, 0x00000002, 0x4062D023, 0x4063C020,\n\t0x00000002, 0x4062D024, 0x4063C020, 0x00000002,\n\t// Block 669, offset 0xa740\n\t0x4062D025, 0x4063C020, 0x00000002, 0x4062D026, 0x4063C020, 0x00000002,\n\t0x4062D027, 0x4063C020, 0x00000002, 0x4062D028, 0x4063C020, 0x00000002,\n\t0x4062D029, 0x4063C020, 0x00000002, 0x4062D02A, 0x4063C020, 0x00000002,\n\t0x4062D02B, 0x4063C020, 0x00000002, 0x4062D02C, 0x4063C020, 0x00000002,\n\t0x4062D02D, 0x4063C020, 0x00000002, 0x4062D02E, 0x4063C020, 0x00000002,\n\t0x4062D02F, 0x4063C020, 0x00000002, 0x4062D030, 0x4063C020, 0x00000002,\n\t0x4062D031, 0x4063C020, 0x00000002, 0x4062D032, 0x4063C020, 0x00000002,\n\t0x4062D033, 0x4063C020, 0x00000002, 0x4062D034, 0x4063C020, 0x00000002,\n\t0x4062D035, 0x4063C020, 0x00000002, 0x4062D021, 0x4063C220, 0x00000002,\n\t0x4062D022, 0x4063C220, 0x00000002, 0x4062D023, 0x4063C220, 0x00000002,\n\t0x4062D024, 0x4063C220, 0x00000002, 0x4062D025,\n\t// Block 670, offset 0xa780\n\t0x4063C220, 0x00000002, 0x4062D026, 0x4063C220, 0x00000002, 0x4062D027,\n\t0x4063C220, 0x00000002, 0x4062D028, 0x4063C220, 0x00000002, 0x4062D029,\n\t0x4063C220, 0x00000002, 0x4062D02A, 0x4063C220, 0x00000002, 0x4062D02B,\n\t0x4063C220, 0x00000002, 0x4062D02C, 0x4063C220, 0x00000002, 0x4062D02D,\n\t0x4063C220, 0x00000002, 0x4062D02E, 0x4063C220, 0x00000002, 0x4062D02F,\n\t0x4063C220, 0x00000002, 0x4062D030, 0x4063C220, 0x00000002, 0x4062D031,\n\t0x4063C220, 0x00000002, 0x4062D032, 0x4063C220, 0x00000002, 0x4062D033,\n\t0x4063C220, 0x00000002, 0x4062D034, 0x4063C220, 0x00000002, 0x4062D035,\n\t0x4063C220, 0x00000002, 0x4062D036, 0x4063C220, 0x00000002, 0x4062D037,\n\t0x4063C220, 0x00000002, 0x4062D038, 0x4063C220, 0x00000003, 0x4062D021,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062D022,\n\t// Block 671, offset 0xa7c0\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062D023, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062D024, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D025,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062D026, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062D027, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D028,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062D029, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062D02A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D02B,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062D02C, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062D02D, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D02E,\n\t0x4063C220, 0x40646A20, 0x00000003, 0x4062D02F, 0x4063C220, 0x40646A20,\n\t0x00000003, 0x4062D030, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D021,\n\t0x4063C220, 0x40647220, 0x00000003, 0x4062D021,\n\t// Block 672, offset 0xa800\n\t0x4063C220, 0x40648C20, 0x00000003, 0x4062D021, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062D022, 0x4063C420, 0x40646A20, 0x00000003, 0x4062D023,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062D024, 0x4063C420, 0x40646A20,\n\t0x00000003, 0x4062D025, 0x4063C420, 0x40646A20, 0x00000003, 0x4062D026,\n\t0x4063C420, 0x40646A20, 0x00000003, 0x4062D027, 0x4063C420, 0x40646A20,\n\t0x00000002, 0x4062D021, 0x4063C620, 0x00000002, 0x4062D022, 0x4063C620,\n\t0x00000002, 0x4062D023, 0x4063C620, 0x00000002, 0x4062D024, 0x4063C620,\n\t0x00000002, 0x4062D025, 0x4063C620, 0x00000002, 0x4062D026, 0x4063C620,\n\t0x00000002, 0x4062D027, 0x4063C620, 0x00000002, 0x4062D021, 0x4063C820,\n\t0x00000002, 0x4062D022, 0x4063C820, 0x00000002, 0x4062D023, 0x4063C820,\n\t0x00000002, 0x4062D024, 0x4063C820, 0x00000002,\n\t// Block 673, offset 0xa840\n\t0x4062D025, 0x4063C820, 0x00000002, 0x4062D026, 0x4063C820, 0x00000002,\n\t0x4062D027, 0x4063C820, 0x00000002, 0x4062D028, 0x4063C820, 0x00000002,\n\t0x4062D029, 0x4063C820, 0x00000002, 0x4062D02A, 0x4063C820, 0x00000002,\n\t0x4062D021, 0x4063CA20, 0x00000002, 0x4062D022, 0x4063CA20, 0x00000002,\n\t0x4062D023, 0x4063CA20, 0x00000002, 0x4062D024, 0x4063CA20, 0x00000002,\n\t0x4062D025, 0x4063CA20, 0x00000002, 0x4062D026, 0x4063CA20, 0x00000002,\n\t0x4062D027, 0x4063CA20, 0x00000002, 0x4062D028, 0x4063CA20, 0x00000002,\n\t0x4062D029, 0x4063CA20, 0x00000002, 0x4062D02A, 0x4063CA20, 0x00000003,\n\t0x4062D021, 0x4063CA20, 0x40647220, 0x00000003, 0x4062D022, 0x4063CA20,\n\t0x40647220, 0x00000003, 0x4062D023, 0x4063CA20, 0x40647220, 0x00000003,\n\t0x4062D024, 0x4063CA20, 0x40647220, 0x00000003,\n\t// Block 674, offset 0xa880\n\t0x4062D021, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062D022, 0x4063CA20,\n\t0x40648C20, 0x00000003, 0x4062D023, 0x4063CA20, 0x40648C20, 0x00000003,\n\t0x4062D024, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062D025, 0x4063CA20,\n\t0x40648C20, 0x00000003, 0x4062D026, 0x4063CA20, 0x40648C20, 0x00000003,\n\t0x4062D027, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062D021, 0x4063CC20,\n\t0x40646420, 0x00000003, 0x4062D021, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062D022, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062D023, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062D024, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062D025, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062D026, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062D027, 0x4063CC20, 0x40646A20, 0x00000003,\n\t0x4062D028, 0x4063CC20, 0x40646A20, 0x00000003,\n\t// Block 675, offset 0xa8c0\n\t0x4062D029, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062D02A, 0x4063CC20,\n\t0x40646A20, 0x00000003, 0x4062D021, 0x4063CC20, 0x40647220, 0x00000003,\n\t0x4062D022, 0x4063CC20, 0x40647220, 0x00000003, 0x4062D023, 0x4063CC20,\n\t0x40647220, 0x00000003, 0x4062D024, 0x4063CC20, 0x40647220, 0x00000003,\n\t0x4062D025, 0x4063CC20, 0x40647220, 0x00000003, 0x4062D026, 0x4063CC20,\n\t0x40647220, 0x00000003, 0x4062D027, 0x4063CC20, 0x40647220, 0x00000003,\n\t0x4062D028, 0x4063CC20, 0x40647220, 0x00000003, 0x4062D029, 0x4063CC20,\n\t0x40647220, 0x00000003, 0x4062D021, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062D022, 0x4063CC20, 0x40648220, 0x00000003, 0x4062D023, 0x4063CC20,\n\t0x40648220, 0x00000003, 0x4062D024, 0x4063CC20, 0x40648220, 0x00000003,\n\t0x4062D021, 0x4063CC20, 0x40648420, 0x00000003,\n\t// Block 676, offset 0xa900\n\t0x4062D022, 0x4063CC20, 0x40648420, 0x00000003, 0x4062D023, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062D024, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062D025, 0x4063CC20, 0x40648420, 0x00000003, 0x4062D026, 0x4063CC20,\n\t0x40648420, 0x00000003, 0x4062D027, 0x4063CC20, 0x40648420, 0x00000003,\n\t0x4062D028, 0x4063CC20, 0x40648420, 0x00000003, 0x4062D021, 0x4063CC20,\n\t0x40648C20, 0x00000002, 0x4062D021, 0x4063CE20, 0x00000002, 0x4062D022,\n\t0x4063CE20, 0x00000002, 0x4062D023, 0x4063CE20, 0x00000002, 0x4062D024,\n\t0x4063CE20, 0x00000002, 0x4062D025, 0x4063CE20, 0x00000002, 0x4062D026,\n\t0x4063CE20, 0x00000002, 0x4062D027, 0x4063CE20, 0x00000002, 0x4062D028,\n\t0x4063CE20, 0x00000002, 0x4062D029, 0x4063CE20, 0x00000002, 0x4062D02A,\n\t0x4063CE20, 0x00000002, 0x4062D02B, 0x4063CE20,\n\t// Block 677, offset 0xa940\n\t0x00000002, 0x4062D02C, 0x4063CE20, 0x00000002, 0x4062D02D, 0x4063CE20,\n\t0x00000002, 0x4062D02E, 0x4063CE20, 0x00000002, 0x4062D02F, 0x4063CE20,\n\t0x00000002, 0x4062D030, 0x4063CE20, 0x00000002, 0x4062D031, 0x4063CE20,\n\t0x00000002, 0x4062D032, 0x4063CE20, 0x00000002, 0x4062D033, 0x4063CE20,\n\t0x00000002, 0x4062D034, 0x4063CE20, 0x00000002, 0x4062D035, 0x4063CE20,\n\t0x00000002, 0x4062D036, 0x4063CE20, 0x00000002, 0x4062D037, 0x4063CE20,\n\t0x00000002, 0x4062D038, 0x4063CE20, 0x00000002, 0x4062D039, 0x4063CE20,\n\t0x00000002, 0x4062D03A, 0x4063CE20, 0x00000002, 0x4062D03B, 0x4063CE20,\n\t0x00000002, 0x4062D03C, 0x4063CE20, 0x00000002, 0x4062D03D, 0x4063CE20,\n\t0x00000002, 0x4062D03E, 0x4063CE20, 0x00000002, 0x4062D03F, 0x4063CE20,\n\t0x00000003, 0x4062D021, 0x4063D020, 0x40647220,\n\t// Block 678, offset 0xa980\n\t0x00000003, 0x4062D022, 0x4063D020, 0x40647220, 0x00000003, 0x4062D023,\n\t0x4063D020, 0x40647220, 0x00000003, 0x4062D024, 0x4063D020, 0x40647220,\n\t0x00000003, 0x4062D025, 0x4063D020, 0x40647220, 0x00000003, 0x4062D026,\n\t0x4063D020, 0x40647220, 0x00000002, 0x40403C20, 0xA070F102, 0x00000002,\n\t0x402D9A22, 0xAE603202, 0x00000002, 0x002D9AC3, 0xAE603202, 0x00000002,\n\t0x402D9A22, 0xAE603502, 0x00000002, 0x002D9AC3, 0xAE603502, 0x00000002,\n\t0x402D9A22, 0xAE603C02, 0x00000002, 0x002D9AC3, 0xAE603C02, 0x00000002,\n\t0x402D9A22, 0xAE604302, 0x00000002, 0x402D9A22, 0xAE604702, 0x00000002,\n\t0x002D9AC3, 0xAE604702, 0x00000002, 0x402D9A22, 0xAE604E02, 0x00000002,\n\t0x002D9AC3, 0xAE604E02, 0x00000002, 0x402D9A22, 0xAE605202, 0x00000002,\n\t0x002D9AC3, 0xAE605202, 0x00000002, 0x402D9A22,\n\t// Block 679, offset 0xa9c0\n\t0xAE605B02, 0x00000002, 0x002D9AC3, 0xAE605B02, 0x00000002, 0x402D9A22,\n\t0xAE606402, 0x00000002, 0x002D9AC3, 0xAE606402, 0x00000002, 0x402D9A22,\n\t0xADC07002, 0x00000002, 0x002D9AC3, 0xADC07002, 0x00000002, 0x40306C22,\n\t0xAE604702, 0x00000002, 0x00306CC3, 0xAE604702, 0x00000002, 0x40302A20,\n\t0xAE605202, 0x00000002, 0x00302A83, 0xAE605202, 0x00000002, 0x40442221,\n\t0x82092248, 0x00000002, 0x004422A3, 0x82092248, 0x00000002, 0x40443E21,\n\t0x82092248, 0x00000002, 0x00443EA3, 0x82092248, 0x00000002, 0x00444883,\n\t0x82092248, 0x00000002, 0x40444821, 0x82092248, 0x00000002, 0x004448A3,\n\t0x82092248, 0x00000002, 0x40445421, 0x82092248, 0x00000002, 0x40445821,\n\t0x82092248, 0x00000002, 0x004458A3, 0x82092248, 0x00000002, 0x40445A21,\n\t0x82092248, 0x00000002, 0x00445AA3, 0x82092248,\n\t// Block 680, offset 0xaa00\n\t0x00000002, 0x40446621, 0x82092248, 0x00000002, 0x004466A3, 0x82092248,\n\t0x00000002, 0x402D6820, 0xA0007D02, 0x00000002, 0x002D6894, 0xA0007D14,\n\t0x00000005, 0x404E6020, 0x404E8420, 0x404E2420, 0x8209278B, 0x404F3020,\n\t0x00000006, 0x404E6A20, 0x8209278B, 0x404E6A20, 0x404EEE20, 0x404E7220,\n\t0x8209278B, 0x00000006, 0x404E6A21, 0x40510E20, 0x404EE620, 0x404EEE20,\n\t0x404E1420, 0x8209278B, 0x00000004, 0x404E8C21, 0x40510A20, 0x404EFE20,\n\t0x404F2E20, 0x00000006, 0x404E9420, 0x404E1420, 0x8209278B, 0x404E8220,\n\t0x404E1420, 0x8209278B, 0x00000005, 0x404E9420, 0x404E1420, 0x8209278B,\n\t0x404E8820, 0x404EDE20, 0x0000000A, 0x404E9421, 0x404E4820, 0x8209278B,\n\t0x404F3020, 0x404E1420, 0x404EFE20, 0x404EDE20, 0x404E2420, 0x8209278B,\n\t0x404F3020, 0x00000003, 0x404EA620, 0x404E8420,\n\t// Block 681, offset 0xaa40\n\t0x404EEA20, 0x00000003, 0x404EA620, 0x8209278A, 0x404EA620, 0x00000002,\n\t0x004EC283, 0x404EE620, 0x00000002, 0x404EC221, 0x404EE620, 0x00000002,\n\t0x004EC283, 0x404EEA20, 0x00000002, 0x004EC283, 0x404EEE20, 0x00000003,\n\t0x004EC283, 0x404EEE20, 0x404F0C20, 0x00000002, 0x004EC283, 0x404EF420,\n\t0x00000002, 0x004EC283, 0x404EFE20, 0x00000002, 0x004EC284, 0x404EFE20,\n\t0x00000003, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E1820, 0x8209278A,\n\t// Block 682, offset 0xaa80\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1820, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1820, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1820, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1C20, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1C20, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1C20, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1C20, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E2220, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E2220, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E2220, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t// Block 683, offset 0xaac0\n\t0x404E2220, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E2420, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E2420, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E2420, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E2420, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E2820, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E2820, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E2820, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E2820, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E2E20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E2E20, 0x8209278A, 0x00000005, 0x004EC283,\n\t// Block 684, offset 0xab00\n\t0x404EFE20, 0x404EDE20, 0x404E2E20, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E2E20, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E4820, 0x8209278A,\n\t// Block 685, offset 0xab40\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4820, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4820, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4820, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4A20, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4A20, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4A20, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4A20, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4E20, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4E20, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4E20, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t// Block 686, offset 0xab80\n\t0x404E4E20, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E5220, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E5220, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E5220, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E5220, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E5620, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E5620, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E5620, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E5620, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E5A20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E5A20, 0x8209278A, 0x00000005, 0x004EC283,\n\t// Block 687, offset 0xabc0\n\t0x404EFE20, 0x404EDE20, 0x404E5A20, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E5A20, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E6220, 0x8209278A,\n\t// Block 688, offset 0xac00\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6220, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6220, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6220, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6620, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6620, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6620, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6620, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6A20, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6A20, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6A20, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t// Block 689, offset 0xac40\n\t0x404E6A20, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E7220, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E7220, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E7220, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E7220, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E7420, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E7420, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E7420, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E7420, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404E7E20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404E7E20, 0x8209278A, 0x00000005, 0x004EC283,\n\t// Block 690, offset 0xac80\n\t0x404EFE20, 0x404EDE20, 0x404E7E20, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E7E20, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278A, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278A, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278B, 0x00000005, 0x004EC284,\n\t0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278B, 0x00000005, 0x004EC283,\n\t0x404EFE20, 0x404EDE20, 0x404E8820, 0x8209278A,\n\t// Block 691, offset 0xacc0\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8820, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8820, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8820, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8C20, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8C20, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8C20, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8C20, 0x8209278B,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E9420, 0x8209278A,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E9420, 0x8209278A,\n\t0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E9420, 0x8209278B,\n\t0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t// Block 692, offset 0xad00\n\t0x404E9420, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404EA620, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404EA620, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404EA620, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404EA620, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404EAA20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404EAA20, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x404EAA20, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20,\n\t0x404EAA20, 0x8209278B, 0x00000004, 0x004EC283, 0x404EFE20, 0x404EDE20,\n\t0x8209278B, 0x00000006, 0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278B,\n\t0x404E1420, 0x40510420, 0x00000002, 0x402C9A20,\n\t// Block 693, offset 0xad40\n\t0xAE603202, 0x00000002, 0x002C9A83, 0xAE603202, 0x00000002, 0x402C9A20,\n\t0xAE603502, 0x00000002, 0x002C9A83, 0xAE603502, 0x00000002, 0x402C9A20,\n\t0xAE604E02, 0x00000002, 0x002C9A83, 0xAE604E02, 0x00000002, 0x402C9A20,\n\t0xAE606402, 0x00000002, 0x002C9A83, 0xAE606402, 0x00000002, 0x402C9A20,\n\t0xADC07002, 0x00000002, 0x002C9A83, 0xADC07002, 0x00000002, 0x402EE420,\n\t0xAE603202, 0x00000002, 0x002EE483, 0xAE603202, 0x00000002, 0x402EE420,\n\t0xAE603502, 0x00000002, 0x002EE483, 0xAE603502, 0x00000002, 0x402EE420,\n\t0xAE606402, 0x00000002, 0x002EE483, 0xAE606402, 0x00000002, 0x402EE420,\n\t0xADC07002, 0x00000002, 0x002EE483, 0xADC07002, 0x00000002, 0x40411620,\n\t0xA000FA02, 0x00000002, 0x40411E20, 0xA000FA02, 0x00000002, 0x40412020,\n\t0xA000FA02, 0x00000002, 0x40412A20, 0xA000FA02,\n\t// Block 694, offset 0xad80\n\t0x00000002, 0x40414620, 0xA000FA02, 0x00000002, 0x40415420, 0xA000FA02,\n\t0x00000002, 0x403A6822, 0xAE60BE02, 0x00000002, 0x003A7C84, 0x00391C84,\n\t0x00000002, 0x003A7C9A, 0x00391C9A, 0x00000002, 0x40320820, 0xAE603202,\n\t0x00000002, 0x00320883, 0xAE603202, 0x00000002, 0x40320A20, 0xAE603202,\n\t0x00000002, 0x00320A83, 0xAE603202, 0x00000002, 0x40320A20, 0xAE605B02,\n\t0x00000002, 0x00320A83, 0xAE605B02, 0x00000002, 0x40320E21, 0xAE603702,\n\t0x00000002, 0x00320EA3, 0xAE603702, 0x00000002, 0x40320E21, 0xAE603C02,\n\t0x00000002, 0x00320EA3, 0xAE603C02, 0x00000002, 0x40321022, 0xAE603202,\n\t0x00000002, 0x003210C3, 0xAE603202, 0x00000002, 0x40321022, 0xAE604702,\n\t0x00000002, 0x003210C3, 0xAE604702, 0x00000002, 0x40321022, 0xAE605B02,\n\t0x00000002, 0x003210C3, 0xAE605B02, 0x00000002,\n\t// Block 695, offset 0xadc0\n\t0x40321022, 0xAD806802, 0x00000002, 0x003210C3, 0xAD806802, 0x00000002,\n\t0x40321023, 0xAE603502, 0x00000002, 0x003210E3, 0xAE603502, 0x00000002,\n\t0x40321023, 0xAE604E02, 0x00000002, 0x003210E3, 0xAE604E02, 0x00000002,\n\t0x40321023, 0xAE606402, 0x00000002, 0x003210E3, 0xAE606402, 0x00000002,\n\t0x40321023, 0xADC07002, 0x00000002, 0x003210E3, 0xADC07002, 0x00000002,\n\t0x40321024, 0xAE605B02, 0x00000002, 0x00321103, 0xAE605B02, 0x00000002,\n\t0x402C6020, 0xAE603202, 0x00000002, 0x002C6083, 0xAE603202, 0x00000002,\n\t0x40321024, 0xAE603202, 0x00000002, 0x00321103, 0xAE603202, 0x00000002,\n\t0x40321024, 0xAE603502, 0x00000002, 0x00321103, 0xAE603502, 0x00000002,\n\t0x40321024, 0xAE604E02, 0x00000002, 0x00321103, 0xAE604E02, 0x00000002,\n\t0x40321024, 0xAE606402, 0x00000002, 0x00321103,\n\t// Block 696, offset 0xae00\n\t0xAE606402, 0x00000002, 0x40321024, 0xADC07002, 0x00000002, 0x00321103,\n\t0xADC07002, 0x00000002, 0x0030BE83, 0xAE604E02, 0x00000002, 0x0030BE83,\n\t0xADC07002, 0x00000002, 0x00497283, 0x40496C20, 0x00000002, 0x00497284,\n\t0x40496C20, 0x00000002, 0x402BDE21, 0xAE603702, 0x00000002, 0x002BDEA3,\n\t0xAE603702, 0x00000002, 0x402BDE21, 0xAE603C02, 0x00000002, 0x002BDEA3,\n\t0xAE603C02, 0x00000002, 0x402BDE21, 0xAE604302, 0x00000002, 0x002BDEA3,\n\t0xAE604302, 0x00000002, 0x402BDE22, 0xAE604702, 0x00000002, 0x002BDEC3,\n\t0xAE604702, 0x00000002, 0x402BDE22, 0xAE605202, 0x00000002, 0x002BDEC3,\n\t0xAE605202, 0x00000002, 0x402C9821, 0xAE603C02, 0x00000002, 0x002C98A3,\n\t0xAE603C02, 0x00000002, 0x402C9822, 0xAE603202, 0x00000002, 0x002C98C3,\n\t0xAE603202, 0x00000002, 0x402C9822, 0xAE603502,\n\t// Block 697, offset 0xae40\n\t0x00000002, 0x002C98C3, 0xAE603502, 0x00000002, 0x402D9A21, 0xAE604702,\n\t0x00000002, 0x002D9AA3, 0xAE604702, 0x00000002, 0x402EE221, 0xAE603C02,\n\t0x00000002, 0x002EE2A3, 0xAE603C02, 0x00000002, 0x402EE221, 0xAE604E02,\n\t0x00000002, 0x002EE2A3, 0xAE604E02, 0x00000002, 0x402EE221, 0xAD806802,\n\t0x00000002, 0x002EE2A3, 0xAD806802, 0x00000002, 0x402EE222, 0xAE603202,\n\t0x00000002, 0x002EE2C3, 0xAE603202, 0x00000002, 0x402EE222, 0xAE603502,\n\t0x00000002, 0x002EE2C3, 0xAE603502, 0x00000002, 0x402EE222, 0xAE604702,\n\t0x00000002, 0x002EE2C3, 0xAE604702, 0x00000002, 0x402EE222, 0xAE604E02,\n\t0x00000002, 0x002EE2C3, 0xAE604E02, 0x00000002, 0x402EE222, 0xAE605202,\n\t0x00000002, 0x002EE2C3, 0xAE605202, 0x00000002, 0x402EE222, 0xACA05902,\n\t0x00000002, 0x002EE2C3, 0xACA05902, 0x00000002,\n\t// Block 698, offset 0xae80\n\t0x40306C21, 0xAE604702, 0x00000002, 0x00306CA3, 0xAE604702, 0x00000002,\n\t0x40306C21, 0xAE604E02, 0x00000002, 0x00306CA3, 0xAE604E02, 0x00000002,\n\t0x40306C21, 0xAD806802, 0x00000002, 0x00306CA3, 0xAD806802, 0x00000002,\n\t0xA000AD18, 0xA000BA18, 0x00000002, 0x00393C97, 0x00396497, 0x00000002,\n\t0x00393C9A, 0x0039649A, 0x00000002, 0x00393C97, 0x00397297, 0x00000002,\n\t0x00393C9A, 0x0039729A, 0x00000002, 0x00393C97, 0x00397497, 0x00000002,\n\t0x00393C9A, 0x0039749A, 0x00000002, 0x00393C99, 0x0039A499, 0x00000002,\n\t0x00393C99, 0x0039A699, 0x00000002, 0x00393C97, 0x003A4E97, 0x00000002,\n\t0x00393C98, 0x003A4E98, 0x00000002, 0x00393C99, 0x003A4E99, 0x00000002,\n\t0x00393C9A, 0x003A4E9A, 0x00000002, 0x00393C99, 0x003A5699, 0x00000002,\n\t0x00395697, 0x00396497, 0x00000002, 0x0039569A,\n\t// Block 699, offset 0xaec0\n\t0x0039649A, 0x00000002, 0x00395697, 0x00397297, 0x00000002, 0x0039569A,\n\t0x0039729A, 0x00000002, 0x00395697, 0x00397497, 0x00000002, 0x0039569A,\n\t0x0039749A, 0x00000002, 0x00395699, 0x0039A499, 0x00000002, 0x00395699,\n\t0x0039A699, 0x00000002, 0x00395697, 0x003A4E97, 0x00000002, 0x00395698,\n\t0x003A4E98, 0x00000002, 0x00395699, 0x003A4E99, 0x00000002, 0x0039569A,\n\t0x003A4E9A, 0x00000002, 0x00395699, 0x003A5699, 0x00000002, 0x0039589A,\n\t0x0039649A, 0x00000002, 0x00395899, 0x0039A499, 0x00000002, 0x00395899,\n\t0x0039A699, 0x00000002, 0x00395897, 0x003A4E97, 0x00000002, 0x00395898,\n\t0x003A4E98, 0x00000002, 0x00395899, 0x003A4E99, 0x00000002, 0x0039589A,\n\t0x003A4E9A, 0x00000002, 0x00395899, 0x003A5699, 0x00000002, 0x00396497,\n\t0x00397297, 0x00000002, 0x0039649A, 0x0039729A,\n\t// Block 700, offset 0xaf00\n\t0x00000002, 0x00396497, 0x003A4E97, 0x00000002, 0x0039649A, 0x003A4E9A,\n\t0x00000002, 0x00397297, 0x00396497, 0x00000002, 0x0039729A, 0x0039649A,\n\t0x00000002, 0x00397297, 0x003A4E97, 0x00000002, 0x0039729A, 0x003A4E9A,\n\t0x00000002, 0x00397497, 0x00396497, 0x00000002, 0x0039749A, 0x0039649A,\n\t0x00000002, 0x0039749A, 0x0039729A, 0x00000002, 0x00397497, 0x003A4E97,\n\t0x00000002, 0x0039749A, 0x003A4E9A, 0x00000002, 0x00398A9A, 0xA000D11A,\n\t0x00000002, 0x0039A49A, 0xA000D11A, 0x00000002, 0x0039C697, 0x00396497,\n\t0x00000002, 0x0039C698, 0x00396498, 0x00000002, 0x0039C69A, 0x0039649A,\n\t0x00000002, 0x0039C697, 0x00397297, 0x00000002, 0x0039C698, 0x00397298,\n\t0x00000002, 0x0039C69A, 0x0039729A, 0x00000002, 0x0039C697, 0x00397497,\n\t0x00000002, 0x0039C698, 0x00397498, 0x00000002,\n\t// Block 701, offset 0xaf40\n\t0x0039C69A, 0x0039749A, 0x00000002, 0x0039C699, 0x0039A499, 0x00000002,\n\t0x0039C69A, 0x0039A49A, 0x00000002, 0x0039C697, 0x003A4E97, 0x00000002,\n\t0x0039C698, 0x003A4E98, 0x00000002, 0x0039C69A, 0x003A4E9A, 0x00000002,\n\t0x0039C897, 0x00396497, 0x00000002, 0x0039C898, 0x00396498, 0x00000002,\n\t0x0039C899, 0x00396499, 0x00000002, 0x0039C89A, 0x0039649A, 0x00000002,\n\t0x0039C897, 0x00397297, 0x00000002, 0x0039C898, 0x00397298, 0x00000002,\n\t0x0039C899, 0x00397299, 0x00000002, 0x0039C89A, 0x0039729A, 0x00000002,\n\t0x0039C897, 0x00397497, 0x00000002, 0x0039C898, 0x00397498, 0x00000002,\n\t0x0039C899, 0x00397499, 0x00000002, 0x0039C89A, 0x0039749A, 0x00000002,\n\t0x0039C899, 0x0039A499, 0x00000002, 0x0039C89A, 0x0039A49A, 0x00000002,\n\t0x0039C897, 0x003A4E97, 0x00000002, 0x0039C898,\n\t// Block 702, offset 0xaf80\n\t0x003A4E98, 0x00000002, 0x0039C899, 0x003A4E99, 0x00000002, 0x0039C89A,\n\t0x003A4E9A, 0x00000002, 0x0039DC97, 0x00397297, 0x00000002, 0x0039DC9A,\n\t0x0039729A, 0x00000002, 0x0039DC97, 0x00397497, 0x00000002, 0x0039DC99,\n\t0x0039A499, 0x00000002, 0x0039DC9A, 0x0039A49A, 0x00000002, 0x0039DC97,\n\t0x003A4E97, 0x00000002, 0x0039DC9A, 0x003A4E9A, 0x00000002, 0x0039DE97,\n\t0x00396497, 0x00000002, 0x0039DE9A, 0x0039649A, 0x00000002, 0x0039DE97,\n\t0x00397297, 0x00000002, 0x0039DE9A, 0x0039729A, 0x00000002, 0x0039DE97,\n\t0x00397497, 0x00000002, 0x0039DE9A, 0x0039749A, 0x00000002, 0x0039DE99,\n\t0x0039A499, 0x00000002, 0x0039DE9A, 0x0039A49A, 0x00000002, 0x0039DE97,\n\t0x003A4E97, 0x00000002, 0x0039DE9A, 0x003A4E9A, 0x00000002, 0x0039E697,\n\t0x00397297, 0x00000002, 0x0039E69A, 0x0039729A,\n\t// Block 703, offset 0xafc0\n\t0x00000002, 0x0039E697, 0x003A4E97, 0x00000002, 0x0039E698, 0x003A4E98,\n\t0x00000002, 0x0039E69A, 0x003A4E9A, 0x00000002, 0x0039E897, 0x003A4E97,\n\t0x00000002, 0x0039E898, 0x003A4E98, 0x00000002, 0x0039E89A, 0x003A4E9A,\n\t0x00000002, 0x0039EE97, 0x00396497, 0x00000002, 0x0039EE9A, 0x0039649A,\n\t0x00000002, 0x0039EE97, 0x003A4E97, 0x00000002, 0x0039EE9A, 0x003A4E9A,\n\t0x00000002, 0x0039F097, 0x00396497, 0x00000002, 0x0039F09A, 0x0039649A,\n\t0x00000002, 0x0039F097, 0x003A4E97, 0x00000002, 0x0039F09A, 0x003A4E9A,\n\t0x00000002, 0x0039FC97, 0x00396497, 0x00000002, 0x0039FC9A, 0x0039649A,\n\t0x00000002, 0x0039FC97, 0x00397297, 0x00000002, 0x0039FC9A, 0x0039729A,\n\t0x00000002, 0x0039FC97, 0x00397497, 0x00000002, 0x0039FC9A, 0x0039749A,\n\t0x00000002, 0x0039FC97, 0x003A4E97, 0x00000002,\n\t// Block 704, offset 0xb000\n\t0x0039FC9A, 0x003A4E9A, 0x00000002, 0x003A1297, 0x00397297, 0x00000002,\n\t0x003A129A, 0x0039729A, 0x00000002, 0x003A1297, 0x003A4E97, 0x00000002,\n\t0x003A129A, 0x003A4E9A, 0x00000002, 0x003A4099, 0x00393899, 0x00000002,\n\t0x003A409A, 0x0039389A, 0x00000002, 0x003A4097, 0x00396497, 0x00000002,\n\t0x003A409A, 0x0039649A, 0x00000002, 0x003A4097, 0x00397297, 0x00000002,\n\t0x003A409A, 0x0039729A, 0x00000002, 0x003A4097, 0x00397497, 0x00000002,\n\t0x003A409A, 0x0039749A, 0x00000002, 0x003A4097, 0x003A4E97, 0x00000002,\n\t0x003A4098, 0x003A4E98, 0x00000002, 0x003A4099, 0x003A4E99, 0x00000002,\n\t0x003A409A, 0x003A4E9A, 0x00000002, 0x003A4E99, 0x00393899, 0x00000002,\n\t0x003A4E97, 0x00396497, 0x00000002, 0x003A4E9A, 0x0039649A, 0x00000002,\n\t0x003A4E97, 0x00397297, 0x00000002, 0x003A4E9A,\n\t// Block 705, offset 0xb040\n\t0x0039729A, 0x00000002, 0x003A4E97, 0x00397497, 0x00000002, 0x003A4E9A,\n\t0x0039749A, 0x00000002, 0x003A4E97, 0x003A4E97, 0x00000002, 0x003A4E99,\n\t0x003A4E99, 0x00000002, 0x003A4E9A, 0x003A4E9A, 0x00000002, 0x003A5697,\n\t0x00396497, 0x00000002, 0x003A569A, 0x0039649A, 0x00000002, 0x003A5697,\n\t0x00397297, 0x00000002, 0x003A569A, 0x0039729A, 0x00000002, 0x003A5697,\n\t0x00397497, 0x00000002, 0x003A569A, 0x0039749A, 0x00000002, 0x003A5699,\n\t0x0039A499, 0x00000002, 0x003A5699, 0x0039A699, 0x00000002, 0x003A5697,\n\t0x003A4E97, 0x00000002, 0x003A5698, 0x003A4E98, 0x00000002, 0x003A5699,\n\t0x003A4E99, 0x00000002, 0x003A569A, 0x003A4E9A, 0x00000002, 0x003A5699,\n\t0x003A5699, 0x00000002, 0x403A7220, 0xA000C602, 0x00000002, 0x003A7484,\n\t0x00391C84, 0x00000002, 0xAE604702, 0xAE603802,\n\t// Block 706, offset 0xb080\n\t0x00000002, 0x40062C20, 0xAE603802, 0x00000002, 0x40063620, 0xAE603802,\n\t0x00000002, 0x40063820, 0xAE603802, 0x00000002, 0x402BDE20, 0xAE603602,\n\t0x00000002, 0x002BDE88, 0xAE603602, 0x00000002, 0x402BDE20, 0xAE603702,\n\t0x00000002, 0x002BDE88, 0xAE603702, 0x00000002, 0x402BDE20, 0xAE603802,\n\t0x00000002, 0x002BDE88, 0xAE603802, 0x00000002, 0x402BDE20, 0xAE603902,\n\t0x00000002, 0x002BDE88, 0xAE603902, 0x00000003, 0x402BDE20, 0xAE604302,\n\t0xAE603802, 0x00000003, 0x002BDE88, 0xAE604302, 0xAE603802, 0x00000004,\n\t0x002BDE84, 0xA0013904, 0x002C9884, 0xAE603802, 0x00000004, 0x002BDE8A,\n\t0xA0013904, 0x002C988A, 0xAE603802, 0x00000002, 0x402BE020, 0xAE603602,\n\t0x00000002, 0x002BE083, 0xAE603602, 0x00000002, 0x402BE020, 0xAE603702,\n\t0x00000002, 0x002BE083, 0xAE603702, 0x00000002,\n\t// Block 707, offset 0xb0c0\n\t0x402BE020, 0xAE603802, 0x00000002, 0x002BE083, 0xAE603802, 0x00000002,\n\t0x402BE020, 0xAE603902, 0x00000002, 0x002BE083, 0xAE603902, 0x00000002,\n\t0x402BE220, 0xAE603602, 0x00000002, 0x002BE283, 0xAE603602, 0x00000002,\n\t0x402BE220, 0xAE603702, 0x00000002, 0x002BE283, 0xAE603702, 0x00000002,\n\t0x402BE220, 0xAE603802, 0x00000002, 0x002BE283, 0xAE603802, 0x00000002,\n\t0x402BE220, 0xAE603902, 0x00000002, 0x002BE283, 0xAE603902, 0x00000002,\n\t0x402C0A20, 0xAE603902, 0x00000002, 0x002C0A88, 0xAE603902, 0x00000002,\n\t0x402C3A20, 0xAE603802, 0x00000002, 0x002C3A88, 0xAE603802, 0x00000003,\n\t0x402C3A20, 0xACA05602, 0xAE603802, 0x00000003, 0x002C3A88, 0xACA05602,\n\t0xAE603802, 0x00000002, 0x402C6220, 0xAE603902, 0x00000002, 0x002C6288,\n\t0xAE603902, 0x00000002, 0x402C9820, 0xAE603602,\n\t// Block 708, offset 0xb100\n\t0x00000002, 0x002C9888, 0xAE603602, 0x00000002, 0x402C9820, 0xAE603702,\n\t0x00000002, 0x002C9888, 0xAE603702, 0x00000002, 0x402C9820, 0xAE603802,\n\t0x00000002, 0x002C9888, 0xAE603802, 0x00000002, 0x402C9820, 0xAE603902,\n\t0x00000002, 0x002C9888, 0xAE603902, 0x00000003, 0x402C9820, 0xAE605B02,\n\t0xAE603802, 0x00000003, 0x002C9888, 0xAE605B02, 0xAE603802, 0x00000002,\n\t0x402C9A20, 0xAE603602, 0x00000002, 0x002C9A83, 0xAE603602, 0x00000002,\n\t0x402C9A20, 0xAE603702, 0x00000002, 0x002C9A83, 0xAE603702, 0x00000002,\n\t0x402C9A20, 0xAE603802, 0x00000002, 0x002C9A83, 0xAE603802, 0x00000002,\n\t0x402C9A20, 0xAE603902, 0x00000002, 0x002C9A83, 0xAE603902, 0x00000002,\n\t0x402D2220, 0xAE603802, 0x00000002, 0x002D2288, 0xAE603802, 0x00000002,\n\t0x402D6820, 0xAE603902, 0x00000002, 0x002D6888,\n\t// Block 709, offset 0xb140\n\t0xAE603902, 0x00000002, 0x402D9A20, 0xAE603602, 0x00000002, 0x002D9A88,\n\t0xAE603602, 0x00000002, 0x402D9A20, 0xAE603702, 0x00000002, 0x002D9A88,\n\t0xAE603702, 0x00000002, 0x402D9A20, 0xAE603802, 0x00000002, 0x002D9A88,\n\t0xAE603802, 0x00000002, 0x402D9A20, 0xAE603902, 0x00000002, 0x002D9A88,\n\t0xAE603902, 0x00000003, 0x402D9A20, 0xAE604702, 0xAE603802, 0x00000003,\n\t0x002D9A88, 0xAE604702, 0xAE603802, 0x00000002, 0x402DFE20, 0xAE603802,\n\t0x00000002, 0x002DFE88, 0xAE603802, 0x00000002, 0x402DFE20, 0xAE603902,\n\t0x00000002, 0x002DFE88, 0xAE603902, 0x00000002, 0x402E2220, 0xAE603802,\n\t0x00000002, 0x002E2288, 0xAE603802, 0x00000002, 0x402E2220, 0xAE603902,\n\t0x00000002, 0x002E2288, 0xAE603902, 0x00000003, 0x402E2220, 0xAE603902,\n\t0xAE605B02, 0x00000003, 0x002E2288, 0xAE603902,\n\t// Block 710, offset 0xb180\n\t0xAE605B02, 0x00000002, 0x402E8220, 0xAE603802, 0x00000002, 0x002E8288,\n\t0xAE603802, 0x00000002, 0x402E8220, 0xAE603902, 0x00000002, 0x002E8288,\n\t0xAE603902, 0x00000002, 0x402E9E20, 0xAE603702, 0x00000002, 0x002E9E88,\n\t0xAE603702, 0x00000002, 0x402E9E20, 0xAE603802, 0x00000002, 0x002E9E88,\n\t0xAE603802, 0x00000002, 0x402E9E20, 0xAE603902, 0x00000002, 0x002E9E88,\n\t0xAE603902, 0x00000002, 0x402EE220, 0xAE603602, 0x00000002, 0x002EE288,\n\t0xAE603602, 0x00000002, 0x402EE220, 0xAE603702, 0x00000002, 0x002EE288,\n\t0xAE603702, 0x00000003, 0x402EE220, 0xAE603702, 0xAE603802, 0x00000003,\n\t0x002EE288, 0xAE603702, 0xAE603802, 0x00000003, 0x402EE220, 0xAE603702,\n\t0xAE604702, 0x00000003, 0x002EE288, 0xAE603702, 0xAE604702, 0x00000003,\n\t0x402EE220, 0xAE603702, 0xAE605B02, 0x00000003,\n\t// Block 711, offset 0xb1c0\n\t0x002EE288, 0xAE603702, 0xAE605B02, 0x00000002, 0x402EE220, 0xAE603802,\n\t0x00000002, 0x002EE288, 0xAE603802, 0x00000002, 0x402EE220, 0xAE603902,\n\t0x00000002, 0x002EE288, 0xAE603902, 0x00000003, 0x402EE220, 0xA0005402,\n\t0xAE603802, 0x00000003, 0x002EE288, 0xA0005402, 0xAE603802, 0x00000003,\n\t0x402EE220, 0xAE605B02, 0xAE603802, 0x00000003, 0x002EE288, 0xAE605B02,\n\t0xAE603802, 0x00000002, 0x402EE420, 0xAE603602, 0x00000002, 0x002EE483,\n\t0xAE603602, 0x00000002, 0x402EE420, 0xAE603702, 0x00000002, 0x002EE483,\n\t0xAE603702, 0x00000002, 0x402EE420, 0xAE603802, 0x00000002, 0x002EE483,\n\t0xAE603802, 0x00000002, 0x402EE420, 0xAE603902, 0x00000002, 0x002EE483,\n\t0xAE603902, 0x00000002, 0x402EE620, 0xAE603502, 0x00000002, 0x002EE683,\n\t0xAE603502, 0x00000002, 0x402EE620, 0xAE603602,\n\t// Block 712, offset 0xb200\n\t0x00000002, 0x002EE683, 0xAE603602, 0x00000002, 0x402EE620, 0xAE603702,\n\t0x00000002, 0x002EE683, 0xAE603702, 0x00000002, 0x402EE620, 0xAE603802,\n\t0x00000002, 0x002EE683, 0xAE603802, 0x00000002, 0x402EE620, 0xAE603902,\n\t0x00000002, 0x002EE683, 0xAE603902, 0x00000002, 0x402F2C20, 0xAE603802,\n\t0x00000002, 0x002F2C88, 0xAE603802, 0x00000002, 0x402F7A20, 0xAE603802,\n\t0x00000002, 0x002F7A88, 0xAE603802, 0x00000002, 0x402F7A20, 0xAE603902,\n\t0x00000002, 0x002F7A88, 0xAE603902, 0x00000003, 0x402F7A20, 0xAE603902,\n\t0xAE605B02, 0x00000003, 0x002F7A88, 0xAE603902, 0xAE605B02, 0x00000002,\n\t0x402FE620, 0xAE603802, 0x00000002, 0x002FE688, 0xAE603802, 0x00000003,\n\t0x402FE620, 0xAE603802, 0xAE605202, 0x00000003, 0x002FE688, 0xAE603802,\n\t0xAE605202, 0x00000002, 0x402FE620, 0xAE603902,\n\t// Block 713, offset 0xb240\n\t0x00000002, 0x002FE688, 0xAE603902, 0x00000003, 0x402FE620, 0xAE603902,\n\t0xAE605202, 0x00000003, 0x002FE688, 0xAE603902, 0xAE605202, 0x00000002,\n\t0x40302C20, 0xAE603902, 0x00000002, 0x00302C88, 0xAE603902, 0x00000002,\n\t0x40306C20, 0xAE603602, 0x00000002, 0x00306C88, 0xAE603602, 0x00000002,\n\t0x40306C20, 0xAE603702, 0x00000002, 0x00306C88, 0xAE603702, 0x00000003,\n\t0x40306C20, 0xAE603702, 0xAE603802, 0x00000003, 0x00306C88, 0xAE603702,\n\t0xAE603802, 0x00000002, 0x40306C20, 0xAE603802, 0x00000002, 0x00306C88,\n\t0xAE603802, 0x00000002, 0x40306C20, 0xAE603902, 0x00000002, 0x00306C88,\n\t0xAE603902, 0x00000003, 0x40306C20, 0xAE604702, 0xAE603802, 0x00000003,\n\t0x00306C88, 0xAE604702, 0xAE603802, 0x00000002, 0x40306E20, 0xAE603602,\n\t0x00000002, 0x00306E83, 0xAE603602, 0x00000002,\n\t// Block 714, offset 0xb280\n\t0x40306E20, 0xAE603702, 0x00000002, 0x00306E83, 0xAE603702, 0x00000002,\n\t0x40306E20, 0xAE603802, 0x00000002, 0x00306E83, 0xAE603802, 0x00000002,\n\t0x40306E20, 0xAE603902, 0x00000002, 0x00306E83, 0xAE603902, 0x00000002,\n\t0x4030BE20, 0xAE603702, 0x00000002, 0x0030BE88, 0xAE603702, 0x00000002,\n\t0x4030BE20, 0xAE603902, 0x00000002, 0x0030BE88, 0xAE603902, 0x00000002,\n\t0x4030E220, 0xAE603802, 0x00000002, 0x0030E288, 0xAE603802, 0x00000002,\n\t0x4030E220, 0xAE603902, 0x00000002, 0x0030E288, 0xAE603902, 0x00000002,\n\t0x40310020, 0xAE603602, 0x00000002, 0x00310088, 0xAE603602, 0x00000002,\n\t0x40310020, 0xAE603702, 0x00000002, 0x00310088, 0xAE603702, 0x00000002,\n\t0x40310020, 0xAE603802, 0x00000002, 0x00310088, 0xAE603802, 0x00000002,\n\t0x40310020, 0xAE603902, 0x00000002, 0x00310088,\n\t// Block 715, offset 0xb2c0\n\t0xAE603902, 0x00000002, 0x40312A20, 0xAE603802, 0x00000002, 0x00312A88,\n\t0xAE603802, 0x00000002, 0x40312A20, 0xAE603902, 0x00000002, 0x00312A88,\n\t0xAE603902, 0x00000003, 0x40325220, 0xAE602202, 0xAE603802, 0x00000003,\n\t0x00325288, 0xAE602202, 0xAE603802, 0x00000004, 0x40325220, 0xAE602202,\n\t0xAE603802, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602202, 0xAE603802,\n\t0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE603802, 0x00000003,\n\t0x00325288, 0xAE602A02, 0xAE603802, 0x00000004, 0x40325220, 0xAE602A02,\n\t0xAE603802, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE603802,\n\t0xAF007F02, 0x00000002, 0x40325220, 0xAE603802, 0x00000002, 0x00325288,\n\t0xAE603802, 0x00000003, 0x40325220, 0xAE603802, 0xAF007F02, 0x00000003,\n\t0x40325C20, 0xAE602202, 0xAE603802, 0x00000003,\n\t// Block 716, offset 0xb300\n\t0x00325C88, 0xAE602202, 0xAE603802, 0x00000003, 0x40325C20, 0xAE602A02,\n\t0xAE603802, 0x00000003, 0x00325C88, 0xAE602A02, 0xAE603802, 0x00000002,\n\t0x40325C20, 0xAE603802, 0x00000002, 0x00325C88, 0xAE603802, 0x00000003,\n\t0x40326820, 0xAE602202, 0xAE603802, 0x00000003, 0x00326888, 0xAE602202,\n\t0xAE603802, 0x00000004, 0x40326820, 0xAE602202, 0xAE603802, 0xAF007F02,\n\t0x00000004, 0x00326888, 0xAE602202, 0xAE603802, 0xAF007F02, 0x00000003,\n\t0x40326820, 0xAE602A02, 0xAE603802, 0x00000003, 0x00326888, 0xAE602A02,\n\t0xAE603802, 0x00000004, 0x40326820, 0xAE602A02, 0xAE603802, 0xAF007F02,\n\t0x00000004, 0x00326888, 0xAE602A02, 0xAE603802, 0xAF007F02, 0x00000002,\n\t0x40326820, 0xAE603802, 0x00000002, 0x00326888, 0xAE603802, 0x00000003,\n\t0x40326820, 0xAE603802, 0xAF007F02, 0x00000003,\n\t// Block 717, offset 0xb340\n\t0x40326C20, 0xAE602202, 0xAE603802, 0x00000003, 0x00326C88, 0xAE602202,\n\t0xAE603802, 0x00000003, 0x40326C20, 0xAE602A02, 0xAE603802, 0x00000003,\n\t0x00326C88, 0xAE602A02, 0xAE603802, 0x00000002, 0x40326C20, 0xAE603802,\n\t0x00000002, 0x00326C88, 0xAE603802, 0x00000003, 0x40326C20, 0xAE604702,\n\t0xAE603802, 0x00000003, 0x40327C20, 0xAE602202, 0xAE603802, 0x00000003,\n\t0x00327C88, 0xAE602202, 0xAE603802, 0x00000003, 0x40327C20, 0xAE602A02,\n\t0xAE603802, 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603802, 0x00000002,\n\t0x40327C20, 0xAE603802, 0x00000002, 0x00327C88, 0xAE603802, 0x00000003,\n\t0x40329820, 0xAE602202, 0xAE603802, 0x00000003, 0x40329820, 0xAE602A02,\n\t0xAE603802, 0x00000003, 0x00329888, 0xAE602A02, 0xAE603802, 0x00000002,\n\t0x40329820, 0xAE603802, 0x00000002, 0x00329888,\n\t// Block 718, offset 0xb380\n\t0xAE603802, 0x00000003, 0x40329820, 0xAE604702, 0xAE603802, 0x00000003,\n\t0x4032A220, 0xAE602202, 0xAE603802, 0x00000003, 0x0032A288, 0xAE602202,\n\t0xAE603802, 0x00000004, 0x4032A220, 0xAE602202, 0xAE603802, 0xAF007F02,\n\t0x00000004, 0x0032A288, 0xAE602202, 0xAE603802, 0xAF007F02, 0x00000003,\n\t0x4032A220, 0xAE602A02, 0xAE603802, 0x00000003, 0x0032A288, 0xAE602A02,\n\t0xAE603802, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603802, 0xAF007F02,\n\t0x00000004, 0x0032A288, 0xAE602A02, 0xAE603802, 0xAF007F02, 0x00000002,\n\t0x4032A220, 0xAE603802, 0x00000002, 0x0032A288, 0xAE603802, 0x00000003,\n\t0x4032A220, 0xAE603802, 0xAF007F02, 0x00000002, 0x402BDE20, 0xAE603202,\n\t0x00000002, 0x402C9820, 0xAE603202, 0x00000002, 0x402D9A20, 0xAE603202,\n\t0x00000002, 0x402EE220, 0xAE603202, 0x00000002,\n\t// Block 719, offset 0xb3c0\n\t0x40306C20, 0xAE603202, 0x00000002, 0x402C9A20, 0xAE603C02, 0x00000002,\n\t0x002C9A83, 0xAE603C02, 0x00000003, 0x0003F483, 0x6C030A20, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6C110E20, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6C272220, 0x4003F620, 0x00000003, 0x0003F483, 0x6C37B420, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6C549820, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6C5D8420, 0x4003F620, 0x00000003, 0x0003F483, 0x6C61F420, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6C64CA20, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6C6C2E20, 0x4003F620, 0x00000003, 0x0003F483, 0x6C6F9A20, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6C814020, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6C8F2420, 0x4003F620, 0x00000003, 0x0003F483, 0x6C9FE620, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6CA25C20, 0x4003F620,\n\t// Block 720, offset 0xb400\n\t0x00000003, 0x0003F483, 0x6CB4C620, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6CB6C820, 0x4003F620, 0x00000003, 0x0003F483, 0x6CC63620, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6CC9F220, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6CCF3620, 0x4003F620, 0x00000003, 0x0003F483, 0x6CD22420, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6CD70220, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6CD87420, 0x4003F620, 0x00000003, 0x0003F483, 0x6CE27020, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6CE91020, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6CF41420, 0x4003F620, 0x00000003, 0x0003F483, 0x6D007020, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6D04B220, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6D08F820, 0x4003F620, 0x00000003, 0x0003F483, 0x6D13B620, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6D1F9820, 0x4003F620,\n\t// Block 721, offset 0xb440\n\t0x00000003, 0x0003F483, 0x6D266820, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6D357020, 0x4003F620, 0x00000003, 0x0003F483, 0x6D399220, 0x4003F620,\n\t0x00000003, 0x0003F483, 0x6D3AC620, 0x4003F620, 0x00000003, 0x0003F483,\n\t0x6D3E6020, 0x4003F620, 0x00000003, 0x0003F483, 0x6D3F2A20, 0x4003F620,\n\t0x00000003, 0x0004B083, 0x6C011220, 0x4004B220, 0x00000003, 0x0004B083,\n\t0x6C044020, 0x4004B220, 0x00000003, 0x0004B083, 0x6C079220, 0x4004B220,\n\t0x00000003, 0x0004B083, 0x6C26E020, 0x4004B220, 0x00000003, 0x0004B083,\n\t0x6C2A1220, 0x4004B220, 0x00000003, 0x0004B083, 0x6C2D0A20, 0x4004B220,\n\t0x00000003, 0x0004B083, 0x6C37B420, 0x4004B220, 0x00000003, 0x0004B083,\n\t0x6CC9F220, 0x4004B220, 0x00000003, 0x0004B083, 0x6CD16420, 0x4004B220,\n\t0x00000003, 0x0029CE83, 0x4029CC20, 0x6C2D0A20,\n\t// Block 722, offset 0xb480\n\t0x00000003, 0x0029CE83, 0x4029CC20, 0x6CC63620, 0x00000003, 0x0029CE83,\n\t0x4029CC20, 0x6D266820, 0x00000003, 0x0029CE83, 0x4029CE20, 0x6C2D0A20,\n\t0x00000003, 0x0029CE83, 0x4029CE20, 0x6CC63620, 0x00000003, 0x0029CE83,\n\t0x4029CE20, 0x6D266820, 0x00000003, 0x0029CE83, 0x4029D020, 0x6C2D0A20,\n\t0x00000003, 0x0029CE83, 0x4029D020, 0x6CC63620, 0x00000003, 0x0029CE83,\n\t0x4029D020, 0x6D266820, 0x00000003, 0x0029CE83, 0x4029D220, 0x6C2D0A20,\n\t0x00000003, 0x0029CE83, 0x4029D220, 0x6CC63620, 0x00000003, 0x0029CE83,\n\t0x4029D420, 0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029D420, 0x6CC63620,\n\t0x00000003, 0x0029CE83, 0x4029D620, 0x6C2D0A20, 0x00000003, 0x0029CE83,\n\t0x4029D620, 0x6CC63620, 0x00000003, 0x0029CE83, 0x4029D820, 0x6C2D0A20,\n\t0x00000003, 0x0029CE83, 0x4029D820, 0x6CC63620,\n\t// Block 723, offset 0xb4c0\n\t0x00000003, 0x0029CE83, 0x4029DA20, 0x6C2D0A20, 0x00000003, 0x0029CE83,\n\t0x4029DA20, 0x6CC63620, 0x00000003, 0x0029CE83, 0x4029DC20, 0x6C2D0A20,\n\t0x00000003, 0x0029CE83, 0x4029DC20, 0x6CC63620, 0x00000003, 0x0029CE83,\n\t0x4029DE20, 0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029DE20, 0x6CC63620,\n\t0x00000003, 0x0029D083, 0x4029CC20, 0x6C2D0A20, 0x00000003, 0x0029D083,\n\t0x4029CC20, 0x6CC63620, 0x00000003, 0x0029D083, 0x4029CE20, 0x6C2D0A20,\n\t0x00000003, 0x0029D083, 0x4029CE20, 0x6CC63620, 0x00000003, 0x0029D083,\n\t0x4029D020, 0x6C2D0A20, 0x00000003, 0x0029D083, 0x4029D020, 0x6CC63620,\n\t0x00000003, 0x0029D083, 0x4029D220, 0x6C2D0A20, 0x00000003, 0x0029D083,\n\t0x4029D220, 0x6CC63620, 0x00000003, 0x0029D083, 0x4029D420, 0x6C2D0A20,\n\t0x00000003, 0x0029D083, 0x4029D420, 0x6CC63620,\n\t// Block 724, offset 0xb500\n\t0x00000003, 0x0029D083, 0x4029D620, 0x6CC63620, 0x00000003, 0x0029D083,\n\t0x4029D820, 0x6CC63620, 0x00000003, 0x0029D083, 0x4029DA20, 0x6CC63620,\n\t0x00000003, 0x0029D083, 0x4029DC20, 0x6CC63620, 0x00000003, 0x0029D083,\n\t0x4029DE20, 0x6CC63620, 0x00000003, 0x0029D283, 0x4029CC20, 0x6CC63620,\n\t0x00000003, 0x0029D283, 0x4029CE20, 0x6CC63620, 0x00000002, 0x402BDE1C,\n\t0xAE604702, 0x00000002, 0x002BDE03, 0xAE604702, 0x00000002, 0x402BDE1C,\n\t0xAE605202, 0x00000002, 0x002BDE03, 0xAE605202, 0x00000002, 0x402BDE1D,\n\t0xAE603702, 0x00000002, 0x002BDE23, 0xAE603702, 0x00000002, 0x402BDE1D,\n\t0xAE603C02, 0x00000002, 0x002BDE23, 0xAE603C02, 0x00000002, 0x402BDE1D,\n\t0xAE604302, 0x00000002, 0x002BDE23, 0xAE604302, 0x00000002, 0x402BDE1F,\n\t0xAE603702, 0x00000002, 0x002BDE63, 0xAE603702,\n\t// Block 725, offset 0xb540\n\t0x00000002, 0x402BDE1F, 0xAE603C02, 0x00000002, 0x002BDE63, 0xAE603C02,\n\t0x00000002, 0x402C981C, 0xAE603202, 0x00000002, 0x002C9803, 0xAE603202,\n\t0x00000002, 0x402C981C, 0xAE603502, 0x00000002, 0x002C9803, 0xAE603502,\n\t0x00000002, 0x402D9A1D, 0xAE604702, 0x00000002, 0x002D9A23, 0xAE604702,\n\t0x00000002, 0x402EE21C, 0xAE603202, 0x00000002, 0x002EE203, 0xAE603202,\n\t0x00000002, 0x402EE21C, 0xAE603502, 0x00000002, 0x002EE203, 0xAE603502,\n\t0x00000002, 0x402EE21C, 0xAE604702, 0x00000002, 0x002EE203, 0xAE604702,\n\t0x00000002, 0x402EE21C, 0xAE604E02, 0x00000002, 0x002EE203, 0xAE604E02,\n\t0x00000002, 0x402EE21C, 0xAE605202, 0x00000002, 0x002EE203, 0xAE605202,\n\t0x00000002, 0x402EE21C, 0xACA05902, 0x00000002, 0x002EE203, 0xACA05902,\n\t0x00000002, 0x402EE21D, 0xAE603C02, 0x00000002,\n\t// Block 726, offset 0xb580\n\t0x002EE223, 0xAE603C02, 0x00000002, 0x402EE21D, 0xAE604E02, 0x00000002,\n\t0x002EE223, 0xAE604E02, 0x00000002, 0x402EE21D, 0xAD806802, 0x00000002,\n\t0x002EE223, 0xAD806802, 0x00000002, 0x402EE21F, 0xAE603C02, 0x00000002,\n\t0x002EE263, 0xAE603C02, 0x00000002, 0x402EE21F, 0xAD806802, 0x00000002,\n\t0x002EE263, 0xAD806802, 0x00000002, 0x40306C1C, 0xAE604702, 0x00000002,\n\t0x00306C03, 0xAE604702, 0x00000002, 0x40306C1D, 0xAE604E02, 0x00000002,\n\t0x00306C23, 0xAE604E02, 0x00000002, 0x40306C1D, 0xAD806802, 0x00000002,\n\t0x00306C23, 0xAD806802, 0x00000002, 0x40306C1F, 0xAD806802, 0x00000002,\n\t0x00306C63, 0xAD806802, 0x00000004, 0x2D399283, 0x6CD2FC20, 0x6C5B8A20,\n\t0x6CCF3620, 0x00000003, 0x0003F483, 0x6C000220, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C003620, 0x4003F620, 0x00000003,\n\t// Block 727, offset 0xb5c0\n\t0x0003F483, 0x6C006220, 0x4003F620, 0x00000003, 0x0003F483, 0x6C007420,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C008820, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C00B620, 0x4003F620, 0x00000003, 0x0003F483, 0x6C00DC20,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C018420, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C028820, 0x4003F620, 0x00000003, 0x0003F483, 0x6C02D820,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C049620, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C049C20, 0x4003F620, 0x00000003, 0x0003F483, 0x6C049E20,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C04C620, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C04D020, 0x4003F620, 0x00000003, 0x0003F483, 0x6C05E620,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C079020, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C0BA020, 0x4003F620, 0x00000003,\n\t// Block 728, offset 0xb600\n\t0x0003F483, 0x6C0BC020, 0x4003F620, 0x00000003, 0x0003F483, 0x6C0E3E20,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C127420, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C147E20, 0x4003F620, 0x00000003, 0x0003F483, 0x6C148220,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C185220, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C2BB220, 0x4003F620, 0x00000003, 0x0003F483, 0x6C2CA220,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C2FD820, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C3CEE20, 0x4003F620, 0x00000003, 0x0003F483, 0x6C41DC20,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C741620, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6C791620, 0x4003F620, 0x00000003, 0x0003F483, 0x6C7DE020,\n\t0x4003F620, 0x00000003, 0x0003F483, 0x6C86F020, 0x4003F620, 0x00000003,\n\t0x0003F483, 0x6CA6A420, 0x4003F620, 0x00000003,\n\t// Block 729, offset 0xb640\n\t0x0003F483, 0x6D0F3820, 0x4003F620, 0x00000003, 0x0003F483, 0x6D2EFA20,\n\t0x4003F620, 0x00000003, 0x0004B083, 0x6C007420, 0x4004B220, 0x00000003,\n\t0x0004B083, 0x6C00DC20, 0x4004B220, 0x00000003, 0x0004B083, 0x6C093E20,\n\t0x4004B220, 0x00000003, 0x0004B083, 0x6C096620, 0x4004B220, 0x00000003,\n\t0x0004B083, 0x6C0FC420, 0x4004B220, 0x00000003, 0x0004B083, 0x6C555C20,\n\t0x4004B220, 0x00000003, 0x0004B083, 0x6C9AC020, 0x4004B220, 0x00000003,\n\t0x0004B083, 0x6CA4CC20, 0x4004B220, 0x00000003, 0x0004B083, 0x6CB9B020,\n\t0x4004B220, 0x00000003, 0x0029CE83, 0x4029CC20, 0x6C049620, 0x00000003,\n\t0x0029CE83, 0x4029CC20, 0x6C049C20, 0x00000003, 0x0029CE83, 0x4029CC20,\n\t0x6C555C20, 0x00000003, 0x0029CE83, 0x4029CE20, 0x6C049620, 0x00000003,\n\t0x0029CE83, 0x4029CE20, 0x6C049C20, 0x00000003,\n\t// Block 730, offset 0xb680\n\t0x0029CE83, 0x4029CE20, 0x6C555C20, 0x00000003, 0x0029CE83, 0x4029D020,\n\t0x6C049620, 0x00000003, 0x0029CE83, 0x4029D020, 0x6C049C20, 0x00000003,\n\t0x0029CE83, 0x4029D020, 0x6C555C20, 0x00000003, 0x0029CE83, 0x4029D220,\n\t0x6C049620, 0x00000003, 0x0029CE83, 0x4029D220, 0x6C555C20, 0x00000003,\n\t0x0029CE83, 0x4029D420, 0x6C049620, 0x00000003, 0x0029CE83, 0x4029D420,\n\t0x6C555C20, 0x00000003, 0x0029CE83, 0x4029D620, 0x6C049620, 0x00000003,\n\t0x0029CE83, 0x4029D620, 0x6C555C20, 0x00000003, 0x0029CE83, 0x4029D820,\n\t0x6C049620, 0x00000003, 0x0029CE83, 0x4029D820, 0x6C555C20, 0x00000003,\n\t0x0029CE83, 0x4029DA20, 0x6C049620, 0x00000003, 0x0029CE83, 0x4029DA20,\n\t0x6C555C20, 0x00000003, 0x0029CE83, 0x4029DC20, 0x6C049620, 0x00000003,\n\t0x0029CE83, 0x4029DC20, 0x6C555C20, 0x00000003,\n\t// Block 731, offset 0xb6c0\n\t0x0029CE83, 0x4029DE20, 0x6C049620, 0x00000003, 0x0029CE83, 0x4029DE20,\n\t0x6C555C20, 0x00000003, 0x0029D083, 0x4029CC20, 0x6C049620, 0x00000003,\n\t0x0029D083, 0x4029CC20, 0x6C555C20, 0x00000003, 0x0029D083, 0x4029CE20,\n\t0x6C049620, 0x00000003, 0x0029D083, 0x4029CE20, 0x6C555C20, 0x00000003,\n\t0x0029D083, 0x4029D020, 0x6C049620, 0x00000003, 0x0029D083, 0x4029D020,\n\t0x6C555C20, 0x00000003, 0x0029D083, 0x4029D220, 0x6C049620, 0x00000003,\n\t0x0029D083, 0x4029D220, 0x6C555C20, 0x00000003, 0x0029D083, 0x4029D420,\n\t0x6C049620, 0x00000003, 0x0029D083, 0x4029D420, 0x6C555C20, 0x00000003,\n\t0x0029D083, 0x4029D620, 0x6C049620, 0x00000003, 0x0029D083, 0x4029D820,\n\t0x6C049620, 0x00000003, 0x0029D083, 0x4029DA20, 0x6C049620, 0x00000003,\n\t0x0029D083, 0x4029DC20, 0x6C049620, 0x00000003,\n\t// Block 732, offset 0xb700\n\t0x0029D083, 0x4029DE20, 0x6C049620, 0x00000003, 0x0029D283, 0x4029CC20,\n\t0x6C049620, 0x00000003, 0x0029D283, 0x4029CE20, 0x6C049620, 0x00000004,\n\t0x2C741683, 0x6C111820, 0x6C0BD220, 0x6C3CEE20,\n}\n\n// mainContractElem: 4120 entries, 16480 bytes\nvar mainContractElem = [4120]uint32{\n\t// Block 0, offset 0x0\n\t0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0xE0000D01,\n\t0x40332220, 0x40332A20, 0x40333220, 0x00332288, 0x00332A88, 0x00333288,\n\t0x40333A20, 0x40334220, 0x00333A88, 0x00334288, 0x40336220, 0x4033A220,\n\t0x4033A220, 0x00336288, 0x0033A288, 0x0033A288, 0x4033B220, 0x4033BA20,\n\t0x0033B288, 0x0033BA88, 0x4033CA20, 0x4033D420, 0x0033CA88, 0x0033D488,\n\t0x4033E420, 0x4033F220, 0x0033E488, 0x0033F288, 0x40341420, 0x40343E20,\n\t0x40342420, 0x00341488, 0x00343E88, 0x00342488, 0x40342C20, 0x40343620,\n\t0x00342C88, 0x00343688, 0x4034EE20, 0x4034F620, 0x0034EE88, 0x0034F688,\n\t0x4034FE20, 0x40350620, 0x0034FE88, 0x00350688, 0x40345020, 0x40356A20,\n\t0x40356A20, 0x00345088, 0x00356A88, 0x00356A88, 0x40357220, 0x40357A20,\n\t0x40358220, 0x40358A20, 0x00357288, 0x00357A88,\n\t// Block 1, offset 0x40\n\t0x00358288, 0x00358A88, 0x40361820, 0x40362220, 0x00361888, 0x00362288,\n\t0x40367E20, 0x40368620, 0x00367E88, 0x00368688, 0x4036A820, 0x4036B020,\n\t0x0036A888, 0x0036B088, 0x40371420, 0x40371C20, 0x00371488, 0x00371C88,\n\t0x40393820, 0x40391E20, 0x40392020, 0x40392820, 0x403A7420, 0x40392620,\n\t0x403A9020, 0x40393020, 0x4040F020, 0x4040F420, 0x4040F620, 0x40426E20,\n\t0x40427220, 0x40427020, 0x40427420, 0x40429020, 0x40429420, 0x4042D020,\n\t0x4042D620, 0x4042DA20, 0x4042D220, 0x4042D820, 0x40435E20, 0x40436220,\n\t0x4043E020, 0x4043E220, 0x4043F020, 0x4043F820, 0x4043F620, 0x4043F220,\n\t0x4043F420, 0x4043F620, 0x4043F820, 0x40448220, 0x40448820, 0x40448C20,\n\t0x40448420, 0x40448A20, 0x40451E20, 0x40452620, 0x40452020, 0x40452420,\n\t0x40452820, 0x40452420, 0x40452620, 0x40498420,\n\t// Block 2, offset 0x80\n\t0xE0001881, 0xE0001890, 0xE000189F, 0xE00018AE, 0xE00018BD, 0xE00018CC,\n\t0xE00018DB, 0xE00018EA, 0xE00018F9, 0xE0001908, 0xE0001917, 0xE0001926,\n\t0xE0001935, 0xE0001944, 0xE0001953, 0xE0001962, 0xE0001971, 0xE0001980,\n\t0xE000198F, 0xE000199E, 0xE00019AD, 0xE00019BC, 0xE00019CB, 0xE00019DA,\n\t0xE00019E9, 0xE00019F8, 0xE0001A07, 0xE0001A16, 0xE0001A25, 0xE0001A34,\n\t0xE0001A43, 0xE0001A52, 0xE0001A61, 0xE0001A70, 0xE0001A7F, 0xE0001A8E,\n\t0xE0001A9D, 0xE0001AAC, 0xE0001ABB, 0xE0001ACA, 0xE0001AD9, 0xE0001AE8,\n\t0xE0001AF7, 0xE0001B06, 0xE0001B15, 0xE0001B24, 0x40498620, 0xE0001884,\n\t0xE0001893, 0xE00018A2, 0xE00018B1, 0xE00018C0, 0xE00018CF, 0xE00018DE,\n\t0xE00018ED, 0xE00018FC, 0xE000190B, 0xE000191A, 0xE0001929, 0xE0001938,\n\t0xE0001947, 0xE0001956, 0xE0001965, 0xE0001974,\n\t// Block 3, offset 0xc0\n\t0xE0001983, 0xE0001992, 0xE00019A1, 0xE00019B0, 0xE00019BF, 0xE00019CE,\n\t0xE00019DD, 0xE00019EC, 0xE00019FB, 0xE0001A0A, 0xE0001A19, 0xE0001A28,\n\t0xE0001A37, 0xE0001A46, 0xE0001A55, 0xE0001A64, 0xE0001A73, 0xE0001A82,\n\t0xE0001A91, 0xE0001AA0, 0xE0001AAF, 0xE0001ABE, 0xE0001ACD, 0xE0001ADC,\n\t0xE0001AEB, 0xE0001AFA, 0xE0001B09, 0xE0001B18, 0xE0001B27, 0x40498820,\n\t0xE0001887, 0xE0001896, 0xE00018A5, 0xE00018B4, 0xE00018C3, 0xE00018D2,\n\t0xE00018E1, 0xE00018F0, 0xE00018FF, 0xE000190E, 0xE000191D, 0xE000192C,\n\t0xE000193B, 0xE000194A, 0xE0001959, 0xE0001968, 0xE0001977, 0xE0001986,\n\t0xE0001995, 0xE00019A4, 0xE00019B3, 0xE00019C2, 0xE00019D1, 0xE00019E0,\n\t0xE00019EF, 0xE00019FE, 0xE0001A0D, 0xE0001A1C, 0xE0001A2B, 0xE0001A3A,\n\t0xE0001A49, 0xE0001A58, 0xE0001A67, 0xE0001A76,\n\t// Block 4, offset 0x100\n\t0xE0001A85, 0xE0001A94, 0xE0001AA3, 0xE0001AB2, 0xE0001AC1, 0xE0001AD0,\n\t0xE0001ADF, 0xE0001AEE, 0xE0001AFD, 0xE0001B0C, 0xE0001B1B, 0xE0001B2A,\n\t0x40498A20, 0xE000188A, 0xE0001899, 0xE00018A8, 0xE00018B7, 0xE00018C6,\n\t0xE00018D5, 0xE00018E4, 0xE00018F3, 0xE0001902, 0xE0001911, 0xE0001920,\n\t0xE000192F, 0xE000193E, 0xE000194D, 0xE000195C, 0xE000196B, 0xE000197A,\n\t0xE0001989, 0xE0001998, 0xE00019A7, 0xE00019B6, 0xE00019C5, 0xE00019D4,\n\t0xE00019E3, 0xE00019F2, 0xE0001A01, 0xE0001A10, 0xE0001A1F, 0xE0001A2E,\n\t0xE0001A3D, 0xE0001A4C, 0xE0001A5B, 0xE0001A6A, 0xE0001A79, 0xE0001A88,\n\t0xE0001A97, 0xE0001AA6, 0xE0001AB5, 0xE0001AC4, 0xE0001AD3, 0xE0001AE2,\n\t0xE0001AF1, 0xE0001B00, 0xE0001B0F, 0xE0001B1E, 0xE0001B2D, 0x40498C20,\n\t0xE000188D, 0xE000189C, 0xE00018AB, 0xE00018BA,\n\t// Block 5, offset 0x140\n\t0xE00018C9, 0xE00018D8, 0xE00018E7, 0xE00018F6, 0xE0001905, 0xE0001914,\n\t0xE0001923, 0xE0001932, 0xE0001941, 0xE0001950, 0xE000195F, 0xE000196E,\n\t0xE000197D, 0xE000198C, 0xE000199B, 0xE00019AA, 0xE00019B9, 0xE00019C8,\n\t0xE00019D7, 0xE00019E6, 0xE00019F5, 0xE0001A04, 0xE0001A13, 0xE0001A22,\n\t0xE0001A31, 0xE0001A40, 0xE0001A4F, 0xE0001A5E, 0xE0001A6D, 0xE0001A7C,\n\t0xE0001A8B, 0xE0001A9A, 0xE0001AA9, 0xE0001AB8, 0xE0001AC7, 0xE0001AD6,\n\t0xE0001AE5, 0xE0001AF4, 0xE0001B03, 0xE0001B12, 0xE0001B21, 0xE0001B30,\n\t0xA0010502, 0x40497420, 0x4049E620, 0xE0001B42, 0xE0001B51, 0xE0001B60,\n\t0xE0001B6F, 0xE0001B7E, 0xE0001B9C, 0xE0001BBA, 0xE0001BC9, 0xE0001BD8,\n\t0xE0001BE7, 0xE0001BF6, 0xE0001C05, 0xE0001C14, 0xE0001C23, 0xE0001C32,\n\t0xE0001C41, 0xE0001C50, 0xE0001C5F, 0xE0001C6E,\n\t// Block 6, offset 0x180\n\t0xE0001C7D, 0xE0001C8C, 0xE0001C9B, 0xE0001CAA, 0xE0001B8D, 0xE0001CE1,\n\t0xE0001CF0, 0xE0001CFF, 0xE0001CB9, 0xE0001CCD, 0xE0001B33, 0xE0001BAB,\n\t0x4049E820, 0xE0001B45, 0xE0001B54, 0xE0001B63, 0xE0001B72, 0xE0001B81,\n\t0xE0001B9F, 0xE0001BBD, 0xE0001BCC, 0xE0001BDB, 0xE0001BEA, 0xE0001BF9,\n\t0xE0001C08, 0xE0001C17, 0xE0001C26, 0xE0001C35, 0xE0001C44, 0xE0001C53,\n\t0xE0001C62, 0xE0001C71, 0xE0001C80, 0xE0001C8F, 0xE0001C9E, 0xE0001CAD,\n\t0xE0001B90, 0xE0001CE4, 0xE0001CF3, 0xE0001D02, 0xE0001CBD, 0xE0001CD1,\n\t0xE0001B36, 0xE0001BAE, 0x4049EA20, 0xE0001B48, 0xE0001B57, 0xE0001B66,\n\t0xE0001B75, 0xE0001B84, 0xE0001BA2, 0xE0001BC0, 0xE0001BCF, 0xE0001BDE,\n\t0xE0001BED, 0xE0001BFC, 0xE0001C0B, 0xE0001C1A, 0xE0001C29, 0xE0001C38,\n\t0xE0001C47, 0xE0001C56, 0xE0001C65, 0xE0001C74,\n\t// Block 7, offset 0x1c0\n\t0xE0001C83, 0xE0001C92, 0xE0001CA1, 0xE0001CB0, 0xE0001B93, 0xE0001CE7,\n\t0xE0001CF6, 0xE0001D05, 0xE0001CC1, 0xE0001CD5, 0xE0001B39, 0xE0001BB1,\n\t0x4049EC20, 0xE0001B4B, 0xE0001B5A, 0xE0001B69, 0xE0001B78, 0xE0001B87,\n\t0xE0001BA5, 0xE0001BC3, 0xE0001BD2, 0xE0001BE1, 0xE0001BF0, 0xE0001BFF,\n\t0xE0001C0E, 0xE0001C1D, 0xE0001C2C, 0xE0001C3B, 0xE0001C4A, 0xE0001C59,\n\t0xE0001C68, 0xE0001C77, 0xE0001C86, 0xE0001C95, 0xE0001CA4, 0xE0001CB3,\n\t0xE0001B96, 0xE0001CEA, 0xE0001CF9, 0xE0001D08, 0xE0001CC5, 0xE0001CD9,\n\t0xE0001B3C, 0xE0001BB4, 0x4049EE20, 0xE0001B4E, 0xE0001B5D, 0xE0001B6C,\n\t0xE0001B7B, 0xE0001B8A, 0xE0001BA8, 0xE0001BC6, 0xE0001BD5, 0xE0001BE4,\n\t0xE0001BF3, 0xE0001C02, 0xE0001C11, 0xE0001C20, 0xE0001C2F, 0xE0001C3E,\n\t0xE0001C4D, 0xE0001C5C, 0xE0001C6B, 0xE0001C7A,\n\t// Block 8, offset 0x200\n\t0xE0001C89, 0xE0001C98, 0xE0001CA7, 0xE0001CB6, 0xE0001B99, 0xE0001CED,\n\t0xE0001CFC, 0xE0001D0B, 0xE0001CC9, 0xE0001CDD, 0xE0001B3F, 0xE0001BB7,\n\t0xA0010B02, 0x4049D220, 0x404A5A20, 0xE0001D0E, 0xE0001D1D, 0xE0001D2C,\n\t0xE0001D3B, 0xE0001D4A, 0xE0001D59, 0xE0001D68, 0xE0001D77, 0xE0001D86,\n\t0xE0001D95, 0xE0001DA4, 0xE0001DB3, 0xE0001DC2, 0xE0001DD1, 0xE0001DE0,\n\t0xE0001DEF, 0xE0001DFE, 0xE0001E0D, 0xE0001E1C, 0xE0001E2B, 0xE0001E3A,\n\t0xE0001E49, 0xE0001E58, 0xE0001E67, 0xE0001E76, 0xE0001E85, 0xE0001E94,\n\t0xE0001EA3, 0xE0001EB2, 0xE0001EC1, 0xE0001ED0, 0xE0001EDF, 0xE0001EEE,\n\t0xE0001EFD, 0xE0001F0C, 0xE0001F1B, 0xE0001F2A, 0xE0001F39, 0xE0001F48,\n\t0xE0001F57, 0xE0001F66, 0xE0001F75, 0xE0001F84, 0xE0001F93, 0xE0001FA2,\n\t0xE0001FB1, 0xE0001FC0, 0xE0001FCF, 0x404A5C20,\n\t// Block 9, offset 0x240\n\t0xE0001D11, 0xE0001D20, 0xE0001D2F, 0xE0001D3E, 0xE0001D4D, 0xE0001D5C,\n\t0xE0001D6B, 0xE0001D7A, 0xE0001D89, 0xE0001D98, 0xE0001DA7, 0xE0001DB6,\n\t0xE0001DC5, 0xE0001DD4, 0xE0001DE3, 0xE0001DF2, 0xE0001E01, 0xE0001E10,\n\t0xE0001E1F, 0xE0001E2E, 0xE0001E3D, 0xE0001E4C, 0xE0001E5B, 0xE0001E6A,\n\t0xE0001E79, 0xE0001E88, 0xE0001E97, 0xE0001EA6, 0xE0001EB5, 0xE0001EC4,\n\t0xE0001ED3, 0xE0001EE2, 0xE0001EF1, 0xE0001F00, 0xE0001F0F, 0xE0001F1E,\n\t0xE0001F2D, 0xE0001F3C, 0xE0001F4B, 0xE0001F5A, 0xE0001F69, 0xE0001F78,\n\t0xE0001F87, 0xE0001F96, 0xE0001FA5, 0xE0001FB4, 0xE0001FC3, 0xE0001FD2,\n\t0x404A6220, 0xE0001D14, 0xE0001D23, 0xE0001D32, 0xE0001D41, 0xE0001D50,\n\t0xE0001D5F, 0xE0001D6E, 0xE0001D7D, 0xE0001D8C, 0xE0001D9B, 0xE0001DAA,\n\t0xE0001DB9, 0xE0001DC8, 0xE0001DD7, 0xE0001DE6,\n\t// Block 10, offset 0x280\n\t0xE0001DF5, 0xE0001E04, 0xE0001E13, 0xE0001E22, 0xE0001E31, 0xE0001E40,\n\t0xE0001E4F, 0xE0001E5E, 0xE0001E6D, 0xE0001E7C, 0xE0001E8B, 0xE0001E9A,\n\t0xE0001EA9, 0xE0001EB8, 0xE0001EC7, 0xE0001ED6, 0xE0001EE5, 0xE0001EF4,\n\t0xE0001F03, 0xE0001F12, 0xE0001F21, 0xE0001F30, 0xE0001F3F, 0xE0001F4E,\n\t0xE0001F5D, 0xE0001F6C, 0xE0001F7B, 0xE0001F8A, 0xE0001F99, 0xE0001FA8,\n\t0xE0001FB7, 0xE0001FC6, 0xE0001FD5, 0x404A6620, 0xE0001D17, 0xE0001D26,\n\t0xE0001D35, 0xE0001D44, 0xE0001D53, 0xE0001D62, 0xE0001D71, 0xE0001D80,\n\t0xE0001D8F, 0xE0001D9E, 0xE0001DAD, 0xE0001DBC, 0xE0001DCB, 0xE0001DDA,\n\t0xE0001DE9, 0xE0001DF8, 0xE0001E07, 0xE0001E16, 0xE0001E25, 0xE0001E34,\n\t0xE0001E43, 0xE0001E52, 0xE0001E61, 0xE0001E70, 0xE0001E7F, 0xE0001E8E,\n\t0xE0001E9D, 0xE0001EAC, 0xE0001EBB, 0xE0001ECA,\n\t// Block 11, offset 0x2c0\n\t0xE0001ED9, 0xE0001EE8, 0xE0001EF7, 0xE0001F06, 0xE0001F15, 0xE0001F24,\n\t0xE0001F33, 0xE0001F42, 0xE0001F51, 0xE0001F60, 0xE0001F6F, 0xE0001F7E,\n\t0xE0001F8D, 0xE0001F9C, 0xE0001FAB, 0xE0001FBA, 0xE0001FC9, 0xE0001FD8,\n\t0x404A6820, 0xE0001D1A, 0xE0001D29, 0xE0001D38, 0xE0001D47, 0xE0001D56,\n\t0xE0001D65, 0xE0001D74, 0xE0001D83, 0xE0001D92, 0xE0001DA1, 0xE0001DB0,\n\t0xE0001DBF, 0xE0001DCE, 0xE0001DDD, 0xE0001DEC, 0xE0001DFB, 0xE0001E0A,\n\t0xE0001E19, 0xE0001E28, 0xE0001E37, 0xE0001E46, 0xE0001E55, 0xE0001E64,\n\t0xE0001E73, 0xE0001E82, 0xE0001E91, 0xE0001EA0, 0xE0001EAF, 0xE0001EBE,\n\t0xE0001ECD, 0xE0001EDC, 0xE0001EEB, 0xE0001EFA, 0xE0001F09, 0xE0001F18,\n\t0xE0001F27, 0xE0001F36, 0xE0001F45, 0xE0001F54, 0xE0001F63, 0xE0001F72,\n\t0xE0001F81, 0xE0001F90, 0xE0001F9F, 0xE0001FAE,\n\t// Block 12, offset 0x300\n\t0xE0001FBD, 0xE0001FCC, 0xE0001FDB, 0x404AEA20, 0xE000200E, 0xE0002011,\n\t0x404B2620, 0x404B2420, 0x404B2620, 0x404AF020, 0xE0002014, 0xE0002017,\n\t0x404B2A20, 0x404B2820, 0x404B2A20, 0x8281258B, 0x8281258D, 0x82812591,\n\t0x8281258F, 0x404ECA20, 0x404ECC20, 0x404F9C20, 0x404F9620, 0x404F9E20,\n\t0x404F9820, 0x40522620, 0x40522820, 0x40522A20, 0x40522C20, 0x40522E20,\n\t0x40523020, 0x40523220, 0x40523420, 0x40523620, 0x40523820, 0x40523E20,\n\t0x40524020, 0x40529C20, 0x40529E20, 0x4052A020, 0x4052A220, 0x4052A420,\n\t0x4052A820, 0x4052A620, 0x4052AA20, 0x4052AC20, 0x4052AE20, 0x4040B620,\n\t0x4040B420, 0x40409820, 0x4040DC20, 0x402C3A20, 0x402C3C20, 0x002C3A88,\n\t0x002C3C83, 0x402D2220, 0x402D2420, 0x002D2288, 0x002D2483, 0x002D9883,\n\t0x002D9A83, 0x402EE220, 0x402EE420, 0x002EE288,\n\t// Block 13, offset 0x340\n\t0x002EE483, 0x402FE620, 0x402FE820, 0x002FE688, 0x002FE883, 0x40306C20,\n\t0x40306E20, 0x00306C88, 0x00306E83, 0x4033B220, 0x4033BA20, 0x4033B420,\n\t0x0033B288, 0x0033BA88, 0x0033B483, 0x402E2220, 0x402E2221, 0x402E2221,\n\t0x002E2288, 0x002E22A3, 0x002E22A3, 0x402C3A20, 0x402C3C20, 0x002D6A83,\n\t0x402D6A20, 0x002C3A88, 0x002C3C83, 0x002D6A85, 0x002D6A84, 0x402F7A20,\n\t0x402F7C20, 0x002F7A88, 0x002F7C83, 0x40312A20, 0x40312C20, 0x00312A88,\n\t0x00312C83, 0x002C3A88, 0x002C3C84, 0x002C3C83, 0x402C6220, 0x402C6420,\n\t0x002C6288, 0x002C6484, 0x002C6483, 0x402D0820, 0x402D0A20, 0x002D0888,\n\t0x002D0A84, 0x002D0A83, 0x402E9E20, 0x402D2420, 0x002E9E88, 0x002D2484,\n\t0x002D2483, 0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x402E2420, 0x002E2288,\n\t0xE0000D01, 0xE0000D01, 0x002E2484, 0x002E2483,\n\t// Block 14, offset 0x380\n\t0x402F2C20, 0x402F2E20, 0x002F2C88, 0x002F2E84, 0x002F2E83, 0x002F7A88,\n\t0x002F7C84, 0x002F7C83, 0x40302C20, 0x40302E20, 0x00302C88, 0x00302E84,\n\t0x00302E83, 0x40306C20, 0x40310021, 0x40310022, 0x00306C88, 0x003100A3,\n\t0x003100C3, 0x402BDE20, 0x40320C21, 0x40321020, 0x00321084, 0x002BDE88,\n\t0x00320CA3, 0x00321083, 0x00321086, 0x00321085, 0x402C9820, 0x40320C22,\n\t0x002C9888, 0x00320CC3, 0x402EE220, 0x40320E21, 0x40320E22, 0x002EE288,\n\t0x00320EA3, 0x00320EC3, 0x402BDE20, 0xE00029B8, 0x002BDE88, 0xE00029BB,\n\t0x402EE220, 0xE00029C6, 0x002EE288, 0xE00029C9, 0x40306C20, 0xE00029DC,\n\t0x00306C88, 0xE00029DF, 0xAE611302, 0x404A7621, 0x404A7C21, 0x404AB020,\n\t0x404ACC20, 0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420, 0x404ADA20,\n\t0x404A8220, 0x404A8420, 0xE0002A26, 0xE0002A2B,\n\t// Block 15, offset 0x3c0\n\t0x404A8620, 0x404A8820, 0x404A8A20, 0x404A8C20, 0x404A8E20, 0x404A9020,\n\t0x404A9220, 0x404A9420, 0x404A9620, 0x404A9820, 0x404A9A20, 0x404A9C20,\n\t0x404A8620, 0x404A8820, 0xE0002A30, 0xE0002A35, 0x404A8A20, 0x404A8C20,\n\t0x404A8E20, 0x404A9020, 0x404ABA20, 0x404ABC20, 0xE0002A3A, 0xE0002A3F,\n\t0x404ABE20, 0x404AC020, 0x404AC220, 0x404AC420, 0x404AC620, 0x404AC820,\n\t0x404ACA20, 0x404AD620, 0x404AD820, 0x404AC220, 0x404AC420, 0xE0002A44,\n\t0xE0002A49, 0x404AC620, 0x404AC820, 0x404ACA20, 0x404ACC20, 0x404ACE20,\n\t0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820, 0x404ADA20,\n\t0x404ADC20, 0x404AC620, 0x404AC820, 0xE0002A4E, 0xE0002A53, 0x404ACA20,\n\t0x404ACC20, 0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620,\n\t0x404AD820, 0x404ADC20, 0x404A7820, 0x404AC020,\n\t// Block 16, offset 0x400\n\t0x404A9E20, 0xE0002A5E, 0xE0002A63, 0x404AA020, 0x404AA220, 0x404AA420,\n\t0x404AA620, 0x404AA820, 0x404AAA20, 0x404AAC20, 0x004AA283, 0x404AAE20,\n\t0x404AB020, 0x404AB220, 0x404ACC20, 0xE0002A68, 0xE0002A6D, 0x404ACE20,\n\t0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820, 0x404ADA20,\n\t0x404ADC20, 0x004ACE83, 0x404A8220, 0x404AE820, 0x404AA420, 0x404A9A20,\n\t0x404A9E20, 0x404AB420, 0x404B1420, 0x404AE420, 0x404AD220, 0x404AD820,\n\t0x404AEA20, 0x404A9020, 0x404AB620, 0x404B1620, 0x404B1620, 0x404B1820,\n\t0xE0002A72, 0xE0002A77, 0x404B1A20, 0x404B1C20, 0x404B1E20, 0x404B2020,\n\t0x404B2220, 0x404B2420, 0x404B2620, 0x404B2820, 0x404B2A20, 0x004B1E83,\n\t0x404A8420, 0x404AEA20, 0x404AA620, 0x404AA020, 0x404AB820, 0x404B1820,\n\t0x404AE620, 0x404AD420, 0x404B2C20, 0x404B2E20,\n\t// Block 17, offset 0x440\n\t0x404B3020, 0x404A7A20, 0x404A8C20, 0x404AAC20, 0x404ACC20, 0x404ADC20,\n\t0x404AE020, 0x404AF620, 0x404AE820, 0x404A7C20, 0x404AE220, 0x404A9E20,\n\t0x404A9620, 0x404A9A20, 0x404AAE20, 0x404B0E20, 0x404AE020, 0x404AFC20,\n\t0x404ADE20, 0x404ACE20, 0x404AD620, 0x404AEE20, 0x404A7E20, 0x404AE420,\n\t0x404AA020, 0x404A8E20, 0x404A9820, 0x404AB020, 0x404B1020, 0x404ADA20,\n\t0x404AFE20, 0x404B0020, 0x404AC420, 0x404AB420, 0x404AB620, 0x404AB820,\n\t0x404ABA20, 0x404ABC20, 0x404ABE20, 0x404AC020, 0x404A9220, 0xE0002A7F,\n\t0xE0002A84, 0x404A9420, 0x404A9620, 0x404A9820, 0x404A9A20, 0x404A9C20,\n\t0x404ADE20, 0x404AE020, 0xE0002A89, 0xE0002A8E, 0x404AE220, 0x404AE420,\n\t0x404AE620, 0x404AE820, 0x404AEA20, 0x404AEC20, 0x404ACA20, 0x404ACC20,\n\t0xE0002A93, 0xE0002A98, 0x404ACE20, 0x404AD020,\n\t// Block 18, offset 0x480\n\t0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820, 0x404ADA20, 0x404ADC20,\n\t0x404ADE20, 0x004AD283, 0x404A7E20, 0x404A8E20, 0x404A9220, 0x404A9820,\n\t0x404AAE20, 0x404ACE20, 0x404AD220, 0x404AFA20, 0x404A8020, 0x404AE620,\n\t0x404AA220, 0x404A9C20, 0x404AB220, 0x404B1220, 0x404AE220, 0x404ADC20,\n\t0x404B0020, 0x404AE020, 0x404AD020, 0x404AE020, 0x404AC220, 0x404AC420,\n\t0xE0002AA0, 0xE0002AA5, 0x404AC620, 0x404AC820, 0x404ACA20, 0x404ACC20,\n\t0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820,\n\t0x404ADA20, 0x404ADC20, 0x004ACC83, 0x404ADE20, 0x404AE020, 0x404AEE20,\n\t0x404AF020, 0xE0002AAA, 0xE0002AAF, 0x404AF220, 0x404AF420, 0x404AF620,\n\t0x404AF820, 0x404AFA20, 0x404AFC20, 0x404AFE20, 0x404B0020, 0x404B0220,\n\t0x404B0420, 0x404B0620, 0x404B0820, 0x404B0A20,\n\t// Block 19, offset 0x4c0\n\t0x004AF883, 0x404B0C20, 0x404ADE20, 0x404AE020, 0xE0002AB4, 0xE0002AB9,\n\t0x404AE220, 0x404AE420, 0x404AE620, 0x404AE820, 0x404AEA20, 0x404AEC20,\n\t0x404AEE20, 0x404AF020, 0x404AF220, 0x404AF420, 0x404AF620, 0x004AE883,\n\t0x404AF820, 0x404AFA20, 0x404A8020, 0x404A9020, 0x404A9420, 0x404AB020,\n\t0x404ABE20, 0x404AD020, 0x404AD420, 0x404A8020, 0x404AB220, 0x404AB420,\n\t0xE0002A05, 0xE0002A0A, 0x404AB620, 0x404AB820, 0x404ABA20, 0x404ABC20,\n\t0x404ABE20, 0x404AC020, 0x404AC220, 0x404AC420, 0x404AC620, 0x404AC820,\n\t0x404ACA20, 0x004ABA83, 0x404AB620, 0x404AB820, 0xE0002A0F, 0xE0002A14,\n\t0x404ABA20, 0x404ABC20, 0x404ABE20, 0x404AC020, 0x404AC220, 0x404AC420,\n\t0x404AC620, 0x404AC820, 0x004ABE83, 0x404AFC20, 0x404AFE20, 0xE0002A19,\n\t0xE0002A1E, 0x404B0020, 0x404B0220, 0x404B0420,\n\t// Block 20, offset 0x500\n\t0x404B0620, 0x404B0820, 0x404B0A20, 0x404B0C20, 0x404B0E20, 0x404B1020,\n\t0x404B1220, 0x404B1420, 0x404A8A20, 0x404A9620, 0x404AAA20, 0x404ACA20,\n\t0x404ADA20, 0x404ADE20, 0x404AE620, 0x404AF420, 0xAE611602, 0x404A9421,\n\t0xAE611402, 0x404AB821, 0x404ABC21, 0x828225B1, 0xE000200E, 0xE0002011,\n\t0x404B2620, 0xE0002ABE, 0xE000200E, 0xE0002011, 0x404B2420, 0x404B2620,\n\t0x828225B2, 0xE0002014, 0xE0002017, 0x404B2A20, 0xE0002AC1, 0xE0002014,\n\t0xE0002017, 0x404B2820, 0x404B2A20, 0xAE610F02, 0x8281258D, 0x82812591,\n\t0x8281258F, 0x002D2288, 0x002D2484, 0x002D2483, 0x402DFE20, 0x402E0020,\n\t0x002DFE88, 0x002E0084, 0x002E0083, 0x402E9E20, 0x402EA020, 0x002E9E88,\n\t0x002EA084, 0x002EA083, 0x402C7820, 0xE0000CFB, 0xE0000CFB, 0x402C3820,\n\t0xE0000D01, 0xE0000D01, 0x402D6820, 0x402D6A20,\n\t// Block 21, offset 0x540\n\t0x002D6888, 0x002D6A83, 0x402DCC20, 0x402DCE20, 0x002DCC88, 0x002DCE83,\n\t0x002E9E88, 0x002EA083, 0x402FE620, 0x40302620, 0x002FE688, 0x00302683,\n\t0x40302820, 0x40302A20, 0x00302883, 0x00302A83, 0x402EE220, 0x4030EE20,\n\t0x4030F220, 0x002EE288, 0x0030EE83, 0x0030F283, 0x402BDE20, 0x4030F020,\n\t0x002BDE88, 0x0030F083, 0x40306C20, 0x4030F420, 0x00306C88, 0x0030F483,\n\t0x40393820, 0x40393620, 0x40393A21, 0x40393A23, 0x403A7420, 0x40393A25,\n\t0x403A9220, 0x40393A26, 0x403A9221, 0x00393B43, 0x403A9223, 0x00393B44,\n\t0x403A8821, 0x403A8825, 0x40306C20, 0x40310021, 0x00306C88, 0x003100A3,\n\t0x402BDE20, 0x40320E20, 0x40320C20, 0x002BDE88, 0x00320E83, 0x00320C83,\n\t0x402EE220, 0x40321020, 0x002EE288, 0x00321083, 0x402EE220, 0x40321023,\n\t0x40321020, 0x40321022, 0x002EE288, 0x003210E3,\n\t// Block 22, offset 0x580\n\t0x00321083, 0x003210C3, 0x402E9E20, 0x402EA020, 0x402EA220, 0x002E9E88,\n\t0x002EA083, 0x002EA284, 0x002EA283, 0x002FE688, 0x002FE884, 0x002FE883,\n\t0x4031DE20, 0x00310286, 0x00310283, 0x4003D220, 0x00310287, 0x00310284,\n\t0x402BEC20, 0xE0000CFB, 0xE0000CFB, 0x002BEC83, 0xE0000D01, 0xE0000D01,\n\t0x402C3A20, 0x402C3E20, 0x402C3C20, 0x002C3A88, 0x002C3E83, 0x002C3C83,\n\t0x402C6220, 0x402C6420, 0x402C6420, 0x002C6288, 0x002C6486, 0x002C6484,\n\t0x002C6486, 0x002C6484, 0x002E2288, 0xE0000D01, 0xE0000D01, 0x002E2486,\n\t0x002E2484, 0x002E9E88, 0x002EA086, 0x002EA084, 0x402C3A20, 0xE0003C42,\n\t0x402C3C20, 0x002C3A88, 0xE0003C48, 0xE0003C45, 0x002C3C86, 0x002C3C84,\n\t0x402C6220, 0xE0003C54, 0xE0003C4B, 0x402C6620, 0x402C6420, 0x002C6288,\n\t0xE0003C5A, 0xE0003C57, 0xE0003C51, 0x002C6686,\n\t// Block 23, offset 0x5c0\n\t0xE0003C4E, 0x002C6684, 0x002C6486, 0x002C6484, 0x402D2220, 0xE0003C5D,\n\t0x402D2420, 0x002D2288, 0xE0003C63, 0xE0003C60, 0x002D2486, 0x002D2484,\n\t0x402E2220, 0xE0003C66, 0xE0000CFB, 0xE0000CFB, 0x402E2420, 0x002E2288,\n\t0xE0003C6C, 0xE0003C69, 0xE0000D01, 0xE0000D01, 0x002E2486, 0x002E2484,\n\t0x402E9E20, 0xE0003C6F, 0x402EA020, 0x002E9E88, 0xE0003C75, 0xE0003C72,\n\t0x002EA086, 0x002EA084, 0x402EE220, 0x402EE420, 0x402EE421, 0x002EE288,\n\t0x002EE483, 0x002EE4A3, 0x402FE620, 0xE0003C78, 0x402FE820, 0x002FE688,\n\t0xE0003C7E, 0xE0003C7B, 0x002FE886, 0x002FE884, 0x40302C20, 0xE0003C81,\n\t0x40302E20, 0x00302C88, 0xE0003C87, 0xE0003C84, 0x00302E86, 0x00302E84,\n\t0x40306C20, 0x40306E20, 0x40306E21, 0x00306C88, 0x00306E83, 0x00306EA3,\n\t0x40312A20, 0xE0003C8A, 0x40312C20, 0x00312A88,\n\t// Block 24, offset 0x600\n\t0xE0003C90, 0xE0003C8D, 0x00312C86, 0x00312C84, 0x00384A88, 0x00388A83,\n\t0x402C3A20, 0x402C0C20, 0x002C3A88, 0x002C0C84, 0x002C0C83, 0x402D2220,\n\t0x402D2420, 0x402D2620, 0x402D2820, 0x002D2288, 0x002D2484, 0x002D2684,\n\t0x002D2884, 0x002D2483, 0x002D2683, 0x002D2883, 0x402D9A20, 0x402D9C20,\n\t0x002D9A88, 0x002D9C83, 0x402DFE20, 0x402E0020, 0x402E0220, 0x002DFE88,\n\t0x002E0084, 0x002E0284, 0x002E0083, 0x002E0283, 0x402E9E20, 0x402EA020,\n\t0x402EA220, 0x402EA420, 0x002E9E88, 0x002EA083, 0x002EA284, 0x002EA484,\n\t0x002EA283, 0x002EA483, 0x402BDE20, 0x402C0820, 0x40320C21, 0x40321020,\n\t0x002BDE88, 0x002C0883, 0x00320CA3, 0x00321083, 0x402C9820, 0x402D0620,\n\t0x002C9888, 0x002D0683, 0x402D9A20, 0x402DCA20, 0x002D9A88, 0x002DCA83,\n\t0x402EE220, 0x402F2A20, 0x40320E20, 0x002EE288,\n\t// Block 25, offset 0x640\n\t0x002F2A83, 0x00320E83, 0x40306C20, 0x4030BC20, 0x00306C88, 0x0030BC83,\n\t0x40310020, 0x40312820, 0x00310088, 0x00312883, 0x0065768F, 0xE0003D1D,\n\t0xE0003D17, 0x0065768F, 0xE0003D17, 0xE0003D1D, 0x00657691, 0xE0003D20,\n\t0xE0003D1A, 0x00657691, 0xE0003D1A, 0xE0003D20, 0x0065828F, 0xE0003E9B,\n\t0xE0003D23, 0x0065828F, 0xE0003D23, 0xE0003E9B, 0x00658291, 0xE0003EA1,\n\t0xE0003D29, 0xE0003E9E, 0xE0003D26, 0x00658291, 0xE0003D29, 0xE0003EA1,\n\t0xE0003D26, 0xE0003E9E, 0x00658291, 0xE0003D26, 0xE0003E9E, 0xE000216D,\n\t0xE0003EA1, 0xE0003D29, 0xE000216D, 0xE0003D29, 0xE0003EA1, 0x00658C91,\n\t0xE0003EE4, 0xE0003EE0, 0xE0003D30, 0xE0003EE0, 0xE0003EDD, 0xE0003EE0,\n\t0xE0003D2D, 0x00658C91, 0xE0003EE4, 0xE0003D30, 0xE0003EE0, 0xE0003EE0,\n\t0xE0003D2D, 0xE0003EDD, 0xE0003EE0, 0x00658C91,\n\t// Block 26, offset 0x680\n\t0xE0003EE0, 0xE0003D2D, 0xE0003EDD, 0xE0003EE0, 0xE00021F2, 0xE0003EE0,\n\t0xE0003EE4, 0xE0003D30, 0xE00021F2, 0xE0003D30, 0xE0003EE0, 0xE0003EE4,\n\t0x00659691, 0xE0003F2E, 0xE0003F2A, 0xE0003D37, 0xE0003F2A, 0xE0003F27,\n\t0xE0003F2A, 0xE0003D34, 0x00659691, 0xE0003F2E, 0xE0003D37, 0xE0003F2A,\n\t0xE0003F2A, 0xE0003D34, 0xE0003F27, 0xE0003F2A, 0x00659691, 0xE0003F2A,\n\t0xE0003D34, 0xE0003F27, 0xE0003F2A, 0xE000222C, 0xE0003F2A, 0xE0003F2E,\n\t0xE0003D37, 0xE000222C, 0xE0003D37, 0xE0003F2A, 0xE0003F2E, 0x0065A091,\n\t0xE0003F71, 0xE0003D3B, 0x0065A091, 0xE0003D3B, 0xE0003F71, 0x0065AA8F,\n\t0xE0003F89, 0xE0003D3E, 0xE0003F83, 0xE0003F89, 0x0065AA91, 0xE0003F91,\n\t0xE0003F9A, 0xE0003F8D, 0xE0003D44, 0xE0003F96, 0xE0003D48, 0xE0003F8D,\n\t0xE0003F86, 0xE0003F8D, 0xE0003D41, 0x0065AA91,\n\t// Block 27, offset 0x6c0\n\t0xE0003F91, 0xE0003F9A, 0xE0003D44, 0xE0003F8D, 0xE0003D48, 0xE0003F96,\n\t0xE0003F8D, 0xE0003D41, 0xE0003F86, 0xE0003F8D, 0x0065AA91, 0xE0003F8D,\n\t0xE0003D41, 0xE0003F86, 0xE0003F8D, 0xE000225B, 0xE0003F8D, 0xE0003F91,\n\t0xE0003D44, 0xE000225B, 0xE0003D44, 0xE0003F8D, 0xE0003F91, 0xE0002261,\n\t0xE0003F96, 0xE0003F9A, 0xE0003D48, 0xE0002261, 0xE0003D48, 0xE0003F96,\n\t0xE0003F9A, 0x0065B491, 0xE000400F, 0xE0003D4C, 0x0065B491, 0xE0003D4C,\n\t0xE000400F, 0x0065BE8F, 0xE0004021, 0xE0003D4F, 0x0065BE8F, 0xE0003D4F,\n\t0xE0004021, 0x0065BE91, 0xE0004024, 0xE0003D52, 0x0065BE91, 0xE0003D52,\n\t0xE0004024, 0x0065C68F, 0xE0003D55, 0xE0004036, 0x0065C691, 0xE0004039,\n\t0xE0003D58, 0x0065C691, 0xE0003D58, 0xE0004039, 0x0065D08F, 0xE000405A,\n\t0xE0004054, 0xE000405A, 0xE0003D5B, 0x0065D08F,\n\t// Block 28, offset 0x700\n\t0xE000405A, 0xE0003D5B, 0xE0004054, 0xE000405A, 0x0065D091, 0xE000405E,\n\t0xE0004057, 0xE000405E, 0xE0003D5E, 0x0065D091, 0xE0004062, 0xE0003D61,\n\t0xE000405E, 0xE000405E, 0xE0003D5E, 0xE0004057, 0xE000405E, 0x0065D091,\n\t0xE000405E, 0xE0003D5E, 0xE0004057, 0xE000405E, 0xE000236A, 0xE0003D61,\n\t0xE000405E, 0xE0004062, 0x0065788F, 0xE0003D6B, 0xE0003D65, 0x0065788F,\n\t0xE0003D65, 0xE0003D6B, 0x00657891, 0xE0003D6E, 0xE0003D68, 0x00657891,\n\t0xE0003D68, 0xE0003D6E, 0x00658491, 0xE0003EAC, 0xE0003EA8, 0xE0003D74,\n\t0xE0003EA8, 0xE0003EA5, 0xE0003EA8, 0xE0003D71, 0x00658491, 0xE0003EAC,\n\t0xE0003D74, 0xE0003EA8, 0xE0003EA8, 0xE0003D71, 0xE0003EA5, 0xE0003EA8,\n\t0x00658491, 0xE0003EA8, 0xE0003D71, 0xE0003EA5, 0xE0003EA8, 0xE000218B,\n\t0xE0003EA8, 0xE0003EAC, 0xE0003D74, 0xE000218B,\n\t// Block 29, offset 0x740\n\t0xE0003D74, 0xE0003EA8, 0xE0003EAC, 0x00658E8F, 0xE0003EEF, 0xE0003D78,\n\t0xE0003EE9, 0xE0003EEF, 0x00658E91, 0xE0003EF7, 0xE0003EF3, 0xE0003D7E,\n\t0xE0003EF3, 0xE0003EEC, 0xE0003EF3, 0xE0003D7B, 0x00658E91, 0xE0003EF7,\n\t0xE0003D7E, 0xE0003EF3, 0xE0003EF3, 0xE0003D7B, 0xE0003EEC, 0xE0003EF3,\n\t0x00658E91, 0xE0003EF3, 0xE0003D7B, 0xE0003EEC, 0xE0003EF3, 0xE0002203,\n\t0xE0003EF3, 0xE0003EF7, 0xE0003D7E, 0xE0002203, 0xE0003D7E, 0xE0003EF3,\n\t0xE0003EF7, 0x00659891, 0xE0003F3A, 0xE0003F36, 0xE0003D85, 0xE0003F36,\n\t0xE0003F33, 0xE0003F36, 0xE0003D82, 0x00659891, 0xE0003F3A, 0xE0003D85,\n\t0xE0003F36, 0xE0003F36, 0xE0003D82, 0xE0003F33, 0xE0003F36, 0x00659891,\n\t0xE0003F36, 0xE0003D82, 0xE0003F33, 0xE0003F36, 0xE0002237, 0xE0003F36,\n\t0xE0003F3A, 0xE0003D85, 0xE0002237, 0xE0003D85,\n\t// Block 30, offset 0x780\n\t0xE0003F36, 0xE0003F3A, 0x0065A291, 0xE0003F74, 0xE0003D89, 0x0065A291,\n\t0xE0003D89, 0xE0003F74, 0x0065AC8F, 0xE0003FA5, 0xE0003D8C, 0xE0003F9F,\n\t0xE0003FA5, 0x0065AC91, 0xE0003FAD, 0xE0003FB6, 0xE0003FA9, 0xE0003D92,\n\t0xE0003FB2, 0xE0003D96, 0xE0003FA9, 0xE0003FA2, 0xE0003FA9, 0xE0003D8F,\n\t0x0065AC91, 0xE0003FAD, 0xE0003FB6, 0xE0003D92, 0xE0003FA9, 0xE0003D96,\n\t0xE0003FB2, 0xE0003FA9, 0xE0003D8F, 0xE0003FA2, 0xE0003FA9, 0x0065AC91,\n\t0xE0003FA9, 0xE0003D8F, 0xE0003FA2, 0xE0003FA9, 0xE000227D, 0xE0003FA9,\n\t0xE0003FAD, 0xE0003D92, 0xE000227D, 0xE0003D92, 0xE0003FA9, 0xE0003FAD,\n\t0xE0002283, 0xE0003FB2, 0xE0003FB6, 0xE0003D96, 0xE0002283, 0xE0003D96,\n\t0xE0003FB2, 0xE0003FB6, 0x0065B691, 0xE0004012, 0xE0003D9A, 0x0065B691,\n\t0xE0003D9A, 0xE0004012, 0x0065C88F, 0xE0003D9D,\n\t// Block 31, offset 0x7c0\n\t0xE000403C, 0x0065C891, 0xE000403F, 0xE0003DA0, 0x0065C891, 0xE0003DA0,\n\t0xE000403F, 0x0065D291, 0xE000406A, 0xE0004067, 0xE000406A, 0xE0003DA3,\n\t0x0065D291, 0xE000406E, 0xE0003DA6, 0xE000406A, 0xE000406A, 0xE0003DA3,\n\t0xE0004067, 0xE000406A, 0xE0002371, 0xE0003DA6, 0xE000406A, 0xE000406E,\n\t0x00657A8F, 0xE0003DBA, 0xE0003DB0, 0xE0003DBA, 0xE0003DAA, 0x00657A8F,\n\t0xE0003DBA, 0xE0003DAA, 0xE0003DB0, 0xE0003DBA, 0x00657A91, 0xE0003DC2,\n\t0xE0003DBE, 0xE0003DB6, 0xE0003DBE, 0xE0003DB3, 0xE0003DBE, 0xE0003DAD,\n\t0x00657A91, 0xE0003DC2, 0xE0003DB6, 0xE0003DBE, 0xE0003DBE, 0xE0003DAD,\n\t0xE0003DB3, 0xE0003DBE, 0x00657A91, 0xE0003DBE, 0xE0003DAD, 0xE0003DB3,\n\t0xE0003DBE, 0xE000214F, 0xE0003DBE, 0xE0003DC2, 0xE0003DB6, 0xE000214F,\n\t0xE0003DB6, 0xE0003DBE, 0xE0003DC2, 0x0065868F,\n\t// Block 32, offset 0x800\n\t0xE0003EB7, 0xE0003DC7, 0xE0003EB1, 0xE0003EB7, 0x00658691, 0xE0003EBF,\n\t0xE0003EBB, 0xE0003DCD, 0xE0003EBB, 0xE0003EB4, 0xE0003EBB, 0xE0003DCA,\n\t0x00658691, 0xE0003EBF, 0xE0003DCD, 0xE0003EBB, 0xE0003EBB, 0xE0003DCA,\n\t0xE0003EB4, 0xE0003EBB, 0x00658691, 0xE0003EBB, 0xE0003DCA, 0xE0003EB4,\n\t0xE0003EBB, 0xE00021BB, 0xE0003EBB, 0xE0003EBF, 0xE0003DCD, 0xE00021BB,\n\t0xE0003DCD, 0xE0003EBB, 0xE0003EBF, 0x0065908F, 0xE0003F02, 0xE0003DD1,\n\t0xE0003EFC, 0xE0003F02, 0x00659091, 0xE0003F0A, 0xE0003F06, 0xE0003DD7,\n\t0xE0003F06, 0xE0003EFF, 0xE0003F06, 0xE0003DD4, 0x00659091, 0xE0003F0A,\n\t0xE0003DD7, 0xE0003F06, 0xE0003F06, 0xE0003DD4, 0xE0003EFF, 0xE0003F06,\n\t0x00659091, 0xE0003F06, 0xE0003DD4, 0xE0003EFF, 0xE0003F06, 0xE0002212,\n\t0xE0003F06, 0xE0003F0A, 0xE0003DD7, 0xE0002212,\n\t// Block 33, offset 0x840\n\t0xE0003DD7, 0xE0003F06, 0xE0003F0A, 0x00659A8F, 0xE0003F45, 0xE0003F3F,\n\t0xE0003F45, 0xE0003DDB, 0x00659A8F, 0xE0003F45, 0xE0003DDB, 0xE0003F3F,\n\t0xE0003F45, 0x00659A91, 0xE0003F4D, 0xE0003F49, 0xE0003DE1, 0xE0003F49,\n\t0xE0003F42, 0xE0003F49, 0xE0003DDE, 0x00659A91, 0xE0003F4D, 0xE0003DE1,\n\t0xE0003F49, 0xE0003F49, 0xE0003DDE, 0xE0003F42, 0xE0003F49, 0x00659A91,\n\t0xE0003F49, 0xE0003DDE, 0xE0003F42, 0xE0003F49, 0xE000223D, 0xE0003F49,\n\t0xE0003F4D, 0xE0003DE1, 0xE000223D, 0xE0003DE1, 0xE0003F49, 0xE0003F4D,\n\t0x0065A48F, 0xE0003DE5, 0xE0003F77, 0x0065A491, 0xE0003F7A, 0xE0003DE8,\n\t0x0065A491, 0xE0003DE8, 0xE0003F7A, 0x0065AE8F, 0xE0003FC1, 0xE0003DEB,\n\t0xE0003FBB, 0xE0003FC1, 0x0065AE91, 0xE0003FC9, 0xE0003FD2, 0xE0003FC5,\n\t0xE0003DF1, 0xE0003FCE, 0xE0003DF5, 0xE0003FC5,\n\t// Block 34, offset 0x880\n\t0xE0003FBE, 0xE0003FC5, 0xE0003DEE, 0x0065AE91, 0xE0003FC9, 0xE0003FD2,\n\t0xE0003DF1, 0xE0003FC5, 0xE0003DF5, 0xE0003FCE, 0xE0003FC5, 0xE0003DEE,\n\t0xE0003FBE, 0xE0003FC5, 0x0065AE91, 0xE0003FC5, 0xE0003DEE, 0xE0003FBE,\n\t0xE0003FC5, 0xE000229D, 0xE0003FC5, 0xE0003FC9, 0xE0003DF1, 0xE000229D,\n\t0xE0003DF1, 0xE0003FC5, 0xE0003FC9, 0xE00022A3, 0xE0003FCE, 0xE0003FD2,\n\t0xE0003DF5, 0xE00022A3, 0xE0003DF5, 0xE0003FCE, 0xE0003FD2, 0x0065B88F,\n\t0xE0003DF9, 0xE0004015, 0x0065B891, 0xE0004018, 0xE0003DFC, 0x0065B891,\n\t0xE0003DFC, 0xE0004018, 0x0065C08F, 0xE0004027, 0xE0003DFF, 0x0065C08F,\n\t0xE0003DFF, 0xE0004027, 0x0065C091, 0xE000402A, 0xE0003E02, 0x0065C091,\n\t0xE0003E02, 0xE000402A, 0x0065CA8F, 0xE0003E05, 0xE0004042, 0x0065CA91,\n\t0xE0004045, 0xE0003E08, 0x0065CA91, 0xE0003E08,\n\t// Block 35, offset 0x8c0\n\t0xE0004045, 0x00657E8F, 0xE0003E11, 0xE0003E0B, 0x00657E8F, 0xE0003E0B,\n\t0xE0003E11, 0x00657E91, 0xE0003E14, 0xE0003E0E, 0x00657E91, 0xE0003E0E,\n\t0xE0003E14, 0x0065888F, 0xE0003EC4, 0xE0003E17, 0x0065888F, 0xE0003E17,\n\t0xE0003EC4, 0x00658891, 0xE0003ECA, 0xE0003E1D, 0xE0003EC7, 0xE0003E1A,\n\t0x00658891, 0xE0003E1D, 0xE0003ECA, 0xE0003E1A, 0xE0003EC7, 0x00658891,\n\t0xE0003E1A, 0xE0003EC7, 0xE00021D9, 0xE0003ECA, 0xE0003E1D, 0xE00021D9,\n\t0xE0003E1D, 0xE0003ECA, 0x00659291, 0xE0003F16, 0xE0003F12, 0xE0003E24,\n\t0xE0003F12, 0xE0003F0F, 0xE0003F12, 0xE0003E21, 0x00659291, 0xE0003F16,\n\t0xE0003E24, 0xE0003F12, 0xE0003F12, 0xE0003E21, 0xE0003F0F, 0xE0003F12,\n\t0x00659291, 0xE0003F12, 0xE0003E21, 0xE0003F0F, 0xE0003F12, 0xE0002218,\n\t0xE0003F12, 0xE0003F16, 0xE0003E24, 0xE0002218,\n\t// Block 36, offset 0x900\n\t0xE0003E24, 0xE0003F12, 0xE0003F16, 0x00659C91, 0xE0003F59, 0xE0003F55,\n\t0xE0003E2B, 0xE0003F55, 0xE0003F52, 0xE0003F55, 0xE0003E28, 0x00659C91,\n\t0xE0003F59, 0xE0003E2B, 0xE0003F55, 0xE0003F55, 0xE0003E28, 0xE0003F52,\n\t0xE0003F55, 0x00659C91, 0xE0003F55, 0xE0003E28, 0xE0003F52, 0xE0003F55,\n\t0xE0002243, 0xE0003F55, 0xE0003F59, 0xE0003E2B, 0xE0002243, 0xE0003E2B,\n\t0xE0003F55, 0xE0003F59, 0x0065A691, 0xE0003F7D, 0xE0003E2F, 0x0065A691,\n\t0xE0003E2F, 0xE0003F7D, 0x0065B08F, 0xE0003FDD, 0xE0003E32, 0xE0003FD7,\n\t0xE0003FDD, 0x0065B091, 0xE0003FE5, 0xE0003FEE, 0xE0003FE1, 0xE0003E38,\n\t0xE0003FEA, 0xE0003E3C, 0xE0003FE1, 0xE0003FDA, 0xE0003FE1, 0xE0003E35,\n\t0x0065B091, 0xE0003FE5, 0xE0003FEE, 0xE0003E38, 0xE0003FE1, 0xE0003E3C,\n\t0xE0003FEA, 0xE0003FE1, 0xE0003E35, 0xE0003FDA,\n\t// Block 37, offset 0x940\n\t0xE0003FE1, 0x0065B091, 0xE0003FE1, 0xE0003E35, 0xE0003FDA, 0xE0003FE1,\n\t0xE00022C0, 0xE0003FE1, 0xE0003FE5, 0xE0003E38, 0xE00022C0, 0xE0003E38,\n\t0xE0003FE1, 0xE0003FE5, 0xE00022C6, 0xE0003FEA, 0xE0003FEE, 0xE0003E3C,\n\t0xE00022C6, 0xE0003E3C, 0xE0003FEA, 0xE0003FEE, 0x0065BA91, 0xE000401B,\n\t0xE0003E40, 0x0065BA91, 0xE0003E40, 0xE000401B, 0x0065CC8F, 0xE0003E43,\n\t0xE0004048, 0x0065CC91, 0xE000404B, 0xE0003E46, 0x0065CC91, 0xE0003E46,\n\t0xE000404B, 0x0065D491, 0xE0004076, 0xE0004073, 0xE0004076, 0xE0003E49,\n\t0x0065D491, 0xE000407A, 0xE0003E4C, 0xE0004076, 0xE0004076, 0xE0003E49,\n\t0xE0004073, 0xE0004076, 0xE0002374, 0xE0003E4C, 0xE0004076, 0xE000407A,\n\t0x0065808F, 0xE0003E56, 0xE0003E50, 0x0065808F, 0xE0003E50, 0xE0003E56,\n\t0x00658091, 0xE0003E59, 0xE0003E53, 0x00658091,\n\t// Block 38, offset 0x980\n\t0xE0003E53, 0xE0003E59, 0x00658A91, 0xE0003ED5, 0xE0003ED1, 0xE0003E5F,\n\t0xE0003ED1, 0xE0003ECE, 0xE0003ED1, 0xE0003E5C, 0x00658A91, 0xE0003ED5,\n\t0xE0003E5F, 0xE0003ED1, 0xE0003ED1, 0xE0003E5C, 0xE0003ECE, 0xE0003ED1,\n\t0x00658A91, 0xE0003ED1, 0xE0003E5C, 0xE0003ECE, 0xE0003ED1, 0xE00021E3,\n\t0xE0003ED1, 0xE0003ED5, 0xE0003E5F, 0xE00021E3, 0xE0003E5F, 0xE0003ED1,\n\t0xE0003ED5, 0x00659491, 0xE0003F22, 0xE0003F1E, 0xE0003E66, 0xE0003F1E,\n\t0xE0003F1B, 0xE0003F1E, 0xE0003E63, 0x00659491, 0xE0003F22, 0xE0003E66,\n\t0xE0003F1E, 0xE0003F1E, 0xE0003E63, 0xE0003F1B, 0xE0003F1E, 0x00659491,\n\t0xE0003F1E, 0xE0003E63, 0xE0003F1B, 0xE0003F1E, 0xE0002226, 0xE0003F1E,\n\t0xE0003F22, 0xE0003E66, 0xE0002226, 0xE0003E66, 0xE0003F1E, 0xE0003F22,\n\t0x00659E8F, 0xE0003F64, 0xE0003E6A, 0xE0003F5E,\n\t// Block 39, offset 0x9c0\n\t0xE0003F64, 0x00659E91, 0xE0003F6C, 0xE0003F68, 0xE0003E70, 0xE0003F68,\n\t0xE0003F61, 0xE0003F68, 0xE0003E6D, 0x00659E91, 0xE0003F6C, 0xE0003E70,\n\t0xE0003F68, 0xE0003F68, 0xE0003E6D, 0xE0003F61, 0xE0003F68, 0x00659E91,\n\t0xE0003F68, 0xE0003E6D, 0xE0003F61, 0xE0003F68, 0xE000224D, 0xE0003F68,\n\t0xE0003F6C, 0xE0003E70, 0xE000224D, 0xE0003E70, 0xE0003F68, 0xE0003F6C,\n\t0x0065A891, 0xE0003F80, 0xE0003E74, 0x0065A891, 0xE0003E74, 0xE0003F80,\n\t0x0065B28F, 0xE0003FF9, 0xE0003E77, 0xE0003FF3, 0xE0003FF9, 0x0065B291,\n\t0xE0004001, 0xE000400A, 0xE0003FFD, 0xE0003E7D, 0xE0004006, 0xE0003E81,\n\t0xE0003FFD, 0xE0003FF6, 0xE0003FFD, 0xE0003E7A, 0x0065B291, 0xE0004001,\n\t0xE000400A, 0xE0003E7D, 0xE0003FFD, 0xE0003E81, 0xE0004006, 0xE0003FFD,\n\t0xE0003E7A, 0xE0003FF6, 0xE0003FFD, 0x0065B291,\n\t// Block 40, offset 0xa00\n\t0xE0003FFD, 0xE0003E7A, 0xE0003FF6, 0xE0003FFD, 0xE00022EF, 0xE0003FFD,\n\t0xE0004001, 0xE0003E7D, 0xE00022EF, 0xE0003E7D, 0xE0003FFD, 0xE0004001,\n\t0xE00022F5, 0xE0004006, 0xE000400A, 0xE0003E81, 0xE00022F5, 0xE0003E81,\n\t0xE0004006, 0xE000400A, 0x0065BC91, 0xE000401E, 0xE0003E85, 0x0065BC91,\n\t0xE0003E85, 0xE000401E, 0x0065C48F, 0xE000402D, 0xE0003E88, 0x0065C48F,\n\t0xE0003E88, 0xE000402D, 0x0065C491, 0xE0004030, 0xE0003E8B, 0x0065C491,\n\t0xE0003E8B, 0xE0004030, 0x0065CE8F, 0xE0003E8E, 0xE000404E, 0x0065CE91,\n\t0xE0004051, 0xE0003E91, 0x0065CE91, 0xE0003E91, 0xE0004051, 0x0065D691,\n\t0xE0004082, 0xE000407F, 0xE0004082, 0xE0003E94, 0x0065D691, 0xE0004086,\n\t0xE0003E97, 0xE0004082, 0xE0004082, 0xE0003E94, 0xE000407F, 0xE0004082,\n\t0x0065D691, 0xE0004082, 0xE0003E94, 0xE000407F,\n\t// Block 41, offset 0xa40\n\t0xE0004082, 0xE0002377, 0xE0003E97, 0xE0004082, 0xE0004086, 0x0065D891,\n\t0xE000408B, 0x40368C20, 0x40343620, 0x00368C83, 0x00343688, 0x002DFE88,\n\t0x002F56A3, 0x402BDE20, 0x40320C21, 0x40321020, 0x002BDE88, 0x00320CA3,\n\t0x00321083, 0x404FA420, 0xE000409E, 0x404FA620, 0xE00040A2, 0x404FA820,\n\t0xE00040A6, 0x404FAA20, 0xE00040AA, 0x404FAC20, 0xE00040AE, 0x404FAE20,\n\t0xE00040B2, 0x404FB020, 0xE00040B6, 0x404FB220, 0xE00040BA, 0x404FB420,\n\t0xE00040BE, 0x404FB620, 0xE00040C2, 0x404FB820, 0xE00040C6, 0x404FBA20,\n\t0xE00040CA, 0x404FBC20, 0xE00040CE, 0x404FBE20, 0xE00040D2, 0x404FC020,\n\t0xE00040D6, 0x404FC220, 0xE00040DA, 0x404FC420, 0xE00040DE, 0x404FC620,\n\t0xE00040E2, 0x404FC820, 0xE00040E6, 0x404FCA20, 0xE00040EA, 0x404FCC20,\n\t0xE00040EE, 0x404FCE20, 0xE00040F2, 0x404FD020,\n\t// Block 42, offset 0xa80\n\t0xE00040F6, 0x404FD220, 0xE00040FA, 0x404FD420, 0xE00040FE, 0x404FD620,\n\t0xE0004102, 0x404FD820, 0xE0004106, 0x404FDA20, 0xE000410A, 0x404FDA20,\n\t0xE000410E, 0x404FDC20, 0xE0004112, 0x404FDC20, 0xE0004116, 0x404FDC20,\n\t0xE000411A, 0x404FDE20, 0xE000411E, 0x404FDE20, 0xE0004122, 0x404FE020,\n\t0xE0004126, 0x404FE220, 0xE000412A, 0x404FE420, 0xE000412E, 0x404FE620,\n\t0xE0004132, 0x404FE820, 0xE0004136, 0x40501820, 0x40502E20, 0x40503820,\n\t0x40500E20, 0x40503220, 0x40501020, 0x40503620, 0x40502420, 0x40503A20,\n\t0x40502A20, 0x40503C20, 0x403FEC20, 0x40403E20, 0x402D2220, 0x002D2483,\n\t0x402D2420, 0x002D2288, 0x002D2485, 0x002D2484, 0x402DFE20, 0x002E0083,\n\t0x402E0020, 0x002DFE88, 0x002E0085, 0x002E0084, 0x402E8220, 0x002E8483,\n\t0x002E8683, 0x002E8883, 0x002E8A83, 0x402E8420,\n\t// Block 43, offset 0xac0\n\t0x402E8620, 0x402E8820, 0x402E8A20, 0x002E8288, 0x002E8485, 0x002E8685,\n\t0x002E8885, 0x002E8A85, 0x002E8484, 0x002E8684, 0x002E8884, 0x002E8A84,\n\t0x402E9E20, 0x002EA485, 0x002EA484, 0x002EA483, 0x402EA420, 0x002EA083,\n\t0x002EA283, 0x002EA683, 0x002EA883, 0x002EAA83, 0x002EAC83, 0x002EAE83,\n\t0x402EA020, 0x402EA220, 0x402EA620, 0x402EA820, 0x402EAA20, 0x402EAC20,\n\t0x402EAE20, 0x002E9E88, 0x002EA488, 0x002EA487, 0x002EA486, 0x002EA085,\n\t0x002EA285, 0x002EA685, 0x002EA885, 0x002EAA85, 0x002EAC85, 0x002EAE85,\n\t0x002EA084, 0x002EA284, 0x002EA684, 0x002EA884, 0x002EAA84, 0x002EAC84,\n\t0x002EAE84, 0x402FE620, 0x002FE883, 0x402FE820, 0x002FE688, 0x002FE885,\n\t0x002FE884, 0x40302C20, 0x00302E83, 0x40302E20, 0x00302C88, 0x00302E85,\n\t0x00302E84, 0xAE605202, 0xAE603502, 0xAE603202,\n\t// Block 44, offset 0xb00\n\t0xAE604E02, 0x402BDE20, 0x402BDE21, 0x002BDE88, 0x002BDEA3, 0x402C9820,\n\t0x402C9822, 0x402C9821, 0x002C9888, 0x002C98C3, 0x002C98A3, 0x402D9A20,\n\t0x402D9A21, 0x002D9A88, 0x002D9AA3, 0x40306C20, 0x40306C22, 0x40306C21,\n\t0x00306C88, 0x00306CC3, 0x00306CA3, 0x402C3A20, 0x402C6020, 0x002C3A88,\n\t0x002C6083, 0x402D2220, 0x402D6620, 0x002D2288, 0x002D6683, 0x402DFE20,\n\t0x402E2020, 0x002DFE88, 0x002E2083, 0x402E2220, 0xE0000CFB, 0x402E8020,\n\t0xE0000CFB, 0x002E2288, 0xE0000D01, 0x002E8083, 0xE0000D01, 0x402E9E20,\n\t0x402EE020, 0x002E9E88, 0x002EE083, 0x402F7A20, 0x402FE420, 0x002F7A88,\n\t0x002FE483, 0x402FE620, 0x40302A20, 0x002FE688, 0x00302A83, 0x40312A20,\n\t0x40316220, 0x00312A88, 0x00316283, 0x40442220, 0xE000A9DC, 0x40443E20,\n\t0xE000A9E2, 0xE000A9EE, 0xE000A9E8, 0x40444820,\n\t// Block 45, offset 0xb40\n\t0xE000A9EB, 0x40445820, 0xE000A9F4, 0x40445A20, 0xE000A9FA, 0x40446620,\n\t0xE000AA00, 0x40448220, 0x40448820, 0x00448C83, 0x403FFC20, 0x40404020,\n\t0x002C3A88, 0x402C3820, 0x402C3A20, 0x002C3883, 0x002D2288, 0x402D6620,\n\t0x002D6683, 0x402D2020, 0x402D2220, 0x002D6684, 0x002D6685, 0x002D2083,\n\t0x00312A88, 0x40312820, 0x40312A20, 0x00312883, 0x404E6020, 0xE000AA0C,\n\t0x404FFE20, 0x404FFE21, 0x404E6A20, 0xE000AA12, 0x40502820, 0x40502821,\n\t0x404E9420, 0xE000AA2C, 0xE000AA25, 0x4050AC20, 0x4050AC21, 0x4005B820,\n\t0xE000AA32, 0x404EA620, 0xE000AA3D, 0x4050C820, 0x4050C821, 0xE000AA4E,\n\t0xE000AA51, 0xE000AA55, 0xE000AA5E, 0xE000AA62, 0xE000AA6E, 0xE000AA7A,\n\t0xE000AA86, 0xE000AA92, 0xE000AA9E, 0xE000AAAA, 0xE000AAB6, 0xE000AAC2,\n\t0xE000AACE, 0xE000AADA, 0xE000AAE6, 0xE000AAF2,\n\t// Block 46, offset 0xb80\n\t0xE000AAFE, 0xE000AB0A, 0xE000AB16, 0xE000AB22, 0xE000AB2E, 0xE000AB3A,\n\t0xE000AB46, 0xE000AB52, 0xE000AB5E, 0xE000AB6A, 0xE000AB76, 0xE000AB82,\n\t0xE000AB8E, 0xE000AB9A, 0xE000ABA6, 0xE000ABB2, 0xE000ABBE, 0xE000ABCA,\n\t0xE000ABD6, 0xE000ABE2, 0xE000ABEE, 0xE000ABFA, 0xE000AC06, 0xE000AC12,\n\t0xE000AC1E, 0xE000AC2A, 0xE000AC36, 0xE000AC42, 0xE000AC4E, 0xE000AC5A,\n\t0xE000AC66, 0xE000AC72, 0xE000AC7E, 0xE000AC8A, 0xE000AC96, 0xE000ACA2,\n\t0xE000ACAE, 0xE000ACBA, 0xE000ACC6, 0xE000ACD2, 0xE000ACDE, 0xE000ACEA,\n\t0xE000ACF6, 0xE000AD02, 0xE000AD0E, 0xE000AD1A, 0xE000AD26, 0xE000AA68,\n\t0xE000AA74, 0xE000AA80, 0xE000AA8C, 0xE000AA98, 0xE000AAA4, 0xE000AAB0,\n\t0xE000AABC, 0xE000AAC8, 0xE000AAD4, 0xE000AAE0, 0xE000AAEC, 0xE000AAF8,\n\t0xE000AB04, 0xE000AB10, 0xE000AB1C, 0xE000AB28,\n\t// Block 47, offset 0xbc0\n\t0xE000AB34, 0xE000AB40, 0xE000AB4C, 0xE000AB58, 0xE000AB64, 0xE000AB70,\n\t0xE000AB7C, 0xE000AB88, 0xE000AB94, 0xE000ABA0, 0xE000ABAC, 0xE000ABB8,\n\t0xE000ABC4, 0xE000ABD0, 0xE000ABDC, 0xE000ABE8, 0xE000ABF4, 0xE000AC00,\n\t0xE000AC0C, 0xE000AC18, 0xE000AC24, 0xE000AC30, 0xE000AC3C, 0xE000AC48,\n\t0xE000AC54, 0xE000AC60, 0xE000AC6C, 0xE000AC78, 0xE000AC84, 0xE000AC90,\n\t0xE000AC9C, 0xE000ACA8, 0xE000ACB4, 0xE000ACC0, 0xE000ACCC, 0xE000ACD8,\n\t0xE000ACE4, 0xE000ACF0, 0xE000ACFC, 0xE000AD08, 0xE000AD14, 0xE000AD20,\n\t0xE000AD2C, 0x404EFE20, 0x404F5222, 0xE000AD37, 0x404F5220, 0x404F5020,\n\t0x404F1A22, 0x404F1A23, 0x404F2822, 0x404F2823, 0x404F3622, 0x404F3623,\n\t0x404F4422, 0x404F4423, 0x404F5223, 0x404F6022, 0x404F6023, 0x404F6E22,\n\t0x404F6E23, 0x404F7C22, 0x404F7C23, 0x404F8A21,\n\t// Block 48, offset 0xc00\n\t0x404F9822, 0x404F9823, 0x404FA622, 0x404FA623, 0x404FB422, 0x404FB423,\n\t0x404FC222, 0x404FC223, 0x404FD022, 0x404FD023, 0x404FDE22, 0x404FDE23,\n\t0x404FEC22, 0x404FEC23, 0x404FFA22, 0x404FFA23, 0x40500822, 0x40500823,\n\t0x40501622, 0x40501623, 0x40502422, 0x40502423, 0x40503222, 0x40503223,\n\t0x40504022, 0x40504023, 0x40504E22, 0x40504E23, 0x40505C22, 0x40505C23,\n\t0x40506A22, 0x40506A23, 0x40508C22, 0x40508C23, 0x40509A22, 0x40509A23,\n\t0x4050A822, 0x4050A823, 0x4050B622, 0x4050B623, 0x4050C421, 0x4050D222,\n\t0x4050D223, 0x4050E022, 0x4050E023, 0x4050EE21, 0x4050FC21, 0x404F1A20,\n\t0x404F1A21, 0x404F2820, 0x404F2821, 0x404F3620, 0x404F3621, 0x404F4420,\n\t0x404F4421, 0x404F5221, 0x404F6020, 0x404F6021, 0x404F6E20, 0x404F6E21,\n\t0x404F7C20, 0x404F7C21, 0x404F8A20, 0x404F9820,\n\t// Block 49, offset 0xc40\n\t0x404F9821, 0x404FA620, 0x404FA621, 0x404FB420, 0x404FB421, 0x404FC220,\n\t0x404FC221, 0x404FD020, 0x404FD021, 0x404FDE20, 0x404FDE21, 0x404FEC20,\n\t0x404FEC21, 0x404FFA20, 0x404FFA21, 0x40500820, 0x40500821, 0x40501620,\n\t0x40501621, 0x40502420, 0x40502421, 0x40503220, 0x40503221, 0x40504020,\n\t0x40504021, 0x40504E20, 0x40504E21, 0x40505C20, 0x40505C21, 0x40506A20,\n\t0x40506A21, 0x40508C20, 0x40508C21, 0x40509A20, 0x40509A21, 0x4050A820,\n\t0x4050A821, 0x4050B620, 0x4050B621, 0x4050C420, 0x4050D220, 0x4050D221,\n\t0x4050E020, 0x4050E021, 0x4050EE20, 0x4050FC20, 0x404F1820, 0x404F1821,\n\t0x404F2620, 0x404F2621, 0x404F3420, 0x404F3421, 0x404F4220, 0x404F4221,\n\t0x404F5021, 0x404F5E20, 0x404F5E21, 0x404F6C20, 0x404F6C21, 0x404F7A20,\n\t0x404F7A21, 0x404F8820, 0x404F9620, 0x404F9621,\n\t// Block 50, offset 0xc80\n\t0x404FA420, 0x404FA421, 0x404FB220, 0x404FB221, 0x404FC020, 0x404FC021,\n\t0x404FCE20, 0x404FCE21, 0x404FDC20, 0x404FDC21, 0x404FEA20, 0x404FEA21,\n\t0x404FF820, 0x404FF821, 0x40500620, 0x40500621, 0x40501420, 0x40501421,\n\t0x40502220, 0x40502221, 0x40503020, 0x40503021, 0x40503E20, 0x40503E21,\n\t0x40504C20, 0x40504C21, 0x40505A20, 0x40505A21, 0x40506820, 0x40506821,\n\t0x40508A20, 0x40508A21, 0x40509820, 0x40509821, 0x4050A620, 0x4050A621,\n\t0x4050B420, 0x4050B421, 0x4050C220, 0x4050D020, 0x4050D021, 0x4050DE20,\n\t0x4050DE21, 0x4050EC20, 0x4050FA20, 0x404F0A21, 0x404F0A20, 0x404F0821,\n\t0x404F0820, 0x404EE620, 0x404F5420, 0x404F4C20, 0x40507620, 0x40507A20,\n\t0x404F1C20, 0x404F1C21, 0x404F2A20, 0x404F2A21, 0x404F3820, 0x404F3821,\n\t0x404F4620, 0x404F4621, 0x404F5421, 0x404F6220,\n\t// Block 51, offset 0xcc0\n\t0x404F6221, 0x404F7020, 0x404F7021, 0x404F7E20, 0x404F7E21, 0x404F8C20,\n\t0x404F9A20, 0x404F9A21, 0x404FA820, 0x404FA821, 0x404FB620, 0x404FB621,\n\t0x404FC420, 0x404FC421, 0x404FD220, 0x404FD221, 0x404FE020, 0x404FE021,\n\t0x404FEE20, 0x404FEE21, 0x404FFC20, 0x404FFC21, 0x40500A20, 0x40500A21,\n\t0x40501820, 0x40501821, 0x40502620, 0x40502621, 0x40503420, 0x40503421,\n\t0x40504220, 0x40504221, 0x40505020, 0x40505021, 0x40505E20, 0x40505E21,\n\t0x40506C20, 0x40506C21, 0x40508E20, 0x40508E21, 0x40509C20, 0x40509C21,\n\t0x4050AA20, 0x4050AA21, 0x4050B820, 0x4050B821, 0x4050C620, 0x4050D420,\n\t0x4050D421, 0x4050E220, 0x4050E221, 0x4050F020, 0x4050FE20, 0x404F1420,\n\t0x404F1421, 0x404F2220, 0x404F2221, 0x404F3020, 0x404F3021, 0x404F3E20,\n\t0x404F3E21, 0x404F4C21, 0x404F5A20, 0x404F5A21,\n\t// Block 52, offset 0xd00\n\t0x404F6820, 0x404F6821, 0x404F7620, 0x404F7621, 0x404F8420, 0x404F9220,\n\t0x404F9221, 0x404FA020, 0x404FA021, 0x404FAE20, 0x404FAE21, 0x404FBC20,\n\t0x404FBC21, 0x404FCA20, 0x404FCA21, 0x404FD820, 0x404FD821, 0x404FE620,\n\t0x404FE621, 0x404FF420, 0x404FF421, 0x40500220, 0x40500221, 0x40501020,\n\t0x40501021, 0x40501E20, 0x40501E21, 0x40502C20, 0x40502C21, 0x40503A20,\n\t0x40503A21, 0x40504820, 0x40504821, 0x40505620, 0x40505621, 0x40506420,\n\t0x40506421, 0x40507220, 0x40507221, 0x40509420, 0x40509421, 0x4050A220,\n\t0x4050A221, 0x4050B020, 0x4050B021, 0x4050BE20, 0x4050CC20, 0x4050CC21,\n\t0x4050DA20, 0x4050DA21, 0x4050E820, 0x4050F620, 0x40507820, 0x40507C20,\n\t0x404F0E20, 0x40507420, 0x404E1420, 0x404F1020, 0x404F1021, 0x404EDE20,\n\t0x404F4A20, 0x404F1220, 0x404F1221, 0x404F2020,\n\t// Block 53, offset 0xd40\n\t0x404F2021, 0x404F2E20, 0x404F2E21, 0x404F3C20, 0x404F3C21, 0x404F4A21,\n\t0x404F5820, 0x404F5821, 0x404F6620, 0x404F6621, 0x404F7420, 0x404F7421,\n\t0x404F8220, 0x404F9020, 0x404F9021, 0x404F9E20, 0x404F9E21, 0x404FAC20,\n\t0x404FAC21, 0x404FBA20, 0x404FBA21, 0x404FC820, 0x404FC821, 0x404FD620,\n\t0x404FD621, 0x404FE420, 0x404FE421, 0x404FF220, 0x404FF221, 0x40500020,\n\t0x40500021, 0x40500E20, 0x40500E21, 0x40501C20, 0x40501C21, 0x40502A20,\n\t0x40502A21, 0x40503820, 0x40503821, 0x40504620, 0x40504621, 0x40505420,\n\t0x40505421, 0x40506220, 0x40506221, 0x40507020, 0x40507021, 0x40509220,\n\t0x40509221, 0x4050A020, 0x4050A021, 0x4050AE20, 0x4050AE21, 0x4050BC20,\n\t0x4050CA20, 0x4050CA21, 0x4050D820, 0x4050D821, 0x4050E620, 0x4050F420,\n\t0x404EDE21, 0x404F4A22, 0x404F1222, 0x404F1223,\n\t// Block 54, offset 0xd80\n\t0x404F2022, 0x404F2023, 0x404F2E22, 0x404F2E23, 0x404F3C22, 0x404F3C23,\n\t0x404F4A23, 0x404F5822, 0x404F5823, 0x404F6622, 0x404F6623, 0x404F7422,\n\t0x404F7423, 0x404F8221, 0x404F9022, 0x404F9023, 0x404F9E22, 0x404F9E23,\n\t0x404FAC22, 0x404FAC23, 0x404FBA22, 0x404FBA23, 0x404FC822, 0x404FC823,\n\t0x404FD622, 0x404FD623, 0x404FE422, 0x404FE423, 0x404FF222, 0x404FF223,\n\t0x40500022, 0x40500023, 0x40500E22, 0x40500E23, 0x40501C22, 0x40501C23,\n\t0x40502A22, 0x40502A23, 0x40503822, 0x40503823, 0x40504622, 0x40504623,\n\t0x40505422, 0x40505423, 0x40506222, 0x40506223, 0x40507022, 0x40507023,\n\t0x40509222, 0x40509223, 0x4050A022, 0x4050A023, 0x4050AE22, 0x4050AE23,\n\t0x4050BC21, 0x4050CA22, 0x4050CA23, 0x4050D822, 0x4050D823, 0x4050E621,\n\t0x4050F421, 0x404EEE20, 0x404F4E20, 0x40508220,\n\t// Block 55, offset 0xdc0\n\t0x40508620, 0x404F1620, 0x404F1621, 0x404F2420, 0x404F2421, 0x404F3220,\n\t0x404F3221, 0x404F4020, 0x404F4021, 0x404F4E21, 0x404F5C20, 0x404F5C21,\n\t0x404F6A20, 0x404F6A21, 0x404F7820, 0x404F7821, 0x404F8620, 0x404F9420,\n\t0x404F9421, 0x404FA220, 0x404FA221, 0x404FB020, 0x404FB021, 0x404FBE20,\n\t0x404FBE21, 0x404FCC20, 0x404FCC21, 0x404FDA20, 0x404FDA21, 0x404FE820,\n\t0x404FE821, 0x404FF620, 0x404FF621, 0x40500420, 0x40500421, 0x40501220,\n\t0x40501221, 0x40502020, 0x40502021, 0x40502E20, 0x40502E21, 0x40503C20,\n\t0x40503C21, 0x40504A20, 0x40504A21, 0x40505820, 0x40505821, 0x40506620,\n\t0x40506621, 0x40507E20, 0x40507E21, 0x40509620, 0x40509621, 0x4050A420,\n\t0x4050A421, 0x4050B220, 0x4050B221, 0x4050C020, 0x4050CE20, 0x4050CE21,\n\t0x4050DC20, 0x4050DC21, 0x4050EA20, 0x4050F820,\n\t// Block 56, offset 0xe00\n\t0x40508420, 0x40508820, 0x40508020, 0x404E1820, 0x404F1E20, 0x404F1E21,\n\t0x404E1C20, 0x404F2C20, 0x404F2C21, 0x404F2E20, 0x404F3220, 0x404E2220,\n\t0x404F3A20, 0x404F3A21, 0x404E2420, 0x404F4820, 0x404F4821, 0x404E2820,\n\t0x404F5620, 0x404F5621, 0x404E2E20, 0x404F6420, 0x404F6421, 0x404E3220,\n\t0x404F7220, 0x404F7221, 0x404E3A20, 0x404F8020, 0x404E4220, 0x404F8E20,\n\t0x404F8E21, 0x404E4820, 0x404F9C20, 0x404F9C21, 0x404E4A20, 0x404FAA20,\n\t0x404FAA21, 0x404E4E20, 0x404FB820, 0x404FB821, 0x404E5220, 0x404FC620,\n\t0x404FC621, 0x404E5620, 0x404FD420, 0x404FD421, 0x404E5A20, 0x404FE220,\n\t0x404FE221, 0x404E5E20, 0x404FF020, 0x404FF021, 0x404E6220, 0x40500C20,\n\t0x40500C21, 0x404E6620, 0x40501A20, 0x40501A21, 0x404E7220, 0x40503620,\n\t0x40503621, 0x404E7420, 0x40504420, 0x40504421,\n\t// Block 57, offset 0xe40\n\t0x404E7E20, 0x40505220, 0x40505221, 0x404E8220, 0x40506020, 0x40506021,\n\t0x404E8420, 0x40506E20, 0x40506E21, 0x404E8820, 0x40509020, 0x40509021,\n\t0x404E8C20, 0x40509E20, 0x40509E21, 0x404E9820, 0x4050BA20, 0x404EAA20,\n\t0x4050D620, 0x4050D621, 0x404EB620, 0x4050E420, 0x404EC220, 0x4050F220,\n\t0x40510420, 0x40511A20, 0x40511020, 0x40511420, 0x40510620, 0x40511C20,\n\t0x40511220, 0x40511620, 0x40510A20, 0x40511820, 0x402BDE20, 0x40320C21,\n\t0x40321020, 0x40321021, 0x002BDE88, 0x00320CA3, 0x00321083, 0x003210A4,\n\t0x003210A3, 0x402C9820, 0x402C9A20, 0x002C9888, 0x002C9A83, 0x402C3A20,\n\t0x40312C20, 0x002C3A88, 0x00312C84, 0x00312C83, 0x402C6220, 0x40312E20,\n\t0x002C6288, 0x00312E84, 0x00312E83, 0x402DFE20, 0x40313020, 0x002DFE88,\n\t0x00313084, 0x00313083, 0x402E9E20, 0x40313220,\n\t// Block 58, offset 0xe80\n\t0x002E9E88, 0x00313284, 0x00313283, 0x402F2C20, 0x40313420, 0x002F2C88,\n\t0x00313484, 0x00313483, 0x402FE620, 0x40313620, 0x002FE688, 0x00313683,\n\t0x40421220, 0x40425A20, 0x402BDE20, 0x402BE020, 0x002BDE88, 0x002BE083,\n\t0x40312A20, 0x40312C20, 0x40312E20, 0x00312A88, 0x00312C83, 0x00312E83,\n\t0x40393820, 0x40393620, 0x40393821, 0x40393824, 0x40397220, 0x40396621,\n\t0x403A6821, 0x003A6883, 0x403A6820, 0x003A6884, 0x403A7420, 0x403A7421,\n\t0x403A9220, 0x403A9226, 0x403A9221, 0x003A9343, 0x403A9223, 0x003A9344,\n\t0x402BDE20, 0x402BE220, 0x402BE020, 0x002BDE88, 0x002BE283, 0x002BE083,\n\t0x402FE620, 0x402FE820, 0x402FE820, 0x002FE688, 0x002FE883, 0x002FE883,\n\t0x40302C20, 0x40302E20, 0x40302E20, 0x00302C88, 0x00302E83, 0x00302E83,\n\t0x402BDE20, 0x402C0820, 0x40320E21, 0x40320C21,\n\t// Block 59, offset 0xec0\n\t0x40320E20, 0x40320C20, 0x002BDE88, 0x002C0883, 0x00320EA3, 0x00320CA3,\n\t0x00320E83, 0x00320C83, 0x402C3A20, 0x402C5C20, 0x002C3A88, 0x002C5C83,\n\t0x402C5E20, 0x402C6020, 0x002C5E83, 0x002C6083, 0x402D2220, 0x402D6420,\n\t0x002D2288, 0x002D6483, 0x402E9E20, 0x402EE021, 0x402EE022, 0x002E9E88,\n\t0x002EE0A3, 0x002EE0C3, 0x40312A20, 0x40320620, 0x00312A88, 0x00320683,\n\t0x402EE220, 0x40321023, 0x40321022, 0x40321020, 0x40321021, 0x40321024,\n\t0x002EE288, 0x003210E3, 0x003210C3, 0x00321083, 0x003210A3, 0x00321103,\n\t0x402C6220, 0x402C9620, 0x002C6288, 0x002C9684, 0x002C9683, 0x002D2288,\n\t0x002D6684, 0x002D6683, 0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x402E8020,\n\t0x002E2288, 0xE0000D01, 0xE0000D01, 0x002E8084, 0x002E8083, 0x002E9E88,\n\t0x002EE084, 0x002EE083, 0x002F7A88, 0x002FE484,\n\t// Block 60, offset 0xf00\n\t0x002FE483, 0x002FE688, 0x00302A84, 0x00302A83, 0x40302C20, 0x40306A20,\n\t0x00302C88, 0x00306A84, 0x00306A83, 0x4030F620, 0x4030FE20, 0x0030F688,\n\t0x0030FE84, 0x0030FE83, 0x00312A88, 0x00316284, 0x00316283, 0x402C9820,\n\t0x40320E22, 0x002C9888, 0x00320EC3, 0x402EE220, 0x40321024, 0x40321020,\n\t0x40321022, 0x002EE288, 0x00321103, 0x00321083, 0x003210C3, 0x40429820,\n\t0x4042C220, 0x4042C420, 0x40429620, 0x40429A20, 0x40429820, 0x40429C20,\n\t0x40429A20, 0x40429E20, 0x40429C20, 0x4042A020, 0x40429E20, 0x4042A220,\n\t0x4042A020, 0x4042A420, 0x4042A220, 0x4042A620, 0x4042A420, 0x4042A820,\n\t0x4042A620, 0x4042AA20, 0x4042A820, 0x4042AC20, 0x4042AA20, 0x4042AE20,\n\t0x4042AC20, 0x4042B020, 0x4042AE20, 0x4042B220, 0x4042B020, 0x4042B420,\n\t0x4042B220, 0x4042B620, 0x4042B420, 0x4042B820,\n\t// Block 61, offset 0xf40\n\t0x4042B620, 0x4042BA20, 0x4042B820, 0x4042BC20, 0x4042BA20, 0x4042BE20,\n\t0x4042BC20, 0x4042C020, 0x4042BE20, 0x4042C220, 0x4042C020, 0x4042C420,\n\t0x4042C220, 0x40496C20, 0xE000AE0D, 0xE000AE10, 0x402BDE20, 0x402BDE21,\n\t0x402BDE22, 0x002BDE88, 0x002BDEA3, 0x002BDEC3, 0x402C9820, 0x402C9821,\n\t0x402C9822, 0x002C9888, 0x002C98A3, 0x002C98C3, 0x402D9A20, 0x402D9A21,\n\t0x402D9A22, 0x002D9A88, 0x002D9AA3, 0x002D9AC3, 0x402EE220, 0x402EE221,\n\t0x402EE222, 0x002EE288, 0x002EE2A3, 0x002EE2C3, 0x40306C20, 0x40306C21,\n\t0x40306C22, 0x00306C88, 0x00306CA3, 0x00306CC3, 0x40393820, 0x40393A20,\n\t0x40393821, 0x40392820, 0x40393C20, 0x40393E20, 0x40394020, 0x40394220,\n\t0x40394420, 0x40394620, 0x40394820, 0x40394A20, 0x40394E20, 0x40395020,\n\t0x40395220, 0x40395420, 0x40395A20, 0x40395C20,\n\t// Block 62, offset 0xf80\n\t0x40395E20, 0x40396020, 0x40396420, 0x40396620, 0x40396820, 0x40396A20,\n\t0x40398420, 0x40398620, 0x40398820, 0x40398A20, 0x40398C20, 0x40398E20,\n\t0x40399020, 0x40399220, 0x40399420, 0x40399620, 0x40399820, 0x40399A20,\n\t0x40399C20, 0x40399C21, 0x40399E20, 0x4039A020, 0x4039A021, 0x403A9020,\n\t0x4039A821, 0x4039A820, 0x4039AA20, 0x4039AC20, 0x4039AC21, 0x402EE220,\n\t0x402EE420, 0x402EE620, 0x002EE288, 0x002EE483, 0x002EE683, 0x402BDE20,\n\t0xE0000966, 0xE000B3B3, 0xE0000958, 0xE0000966, 0x402C3A20, 0xE0000A41,\n\t0x402C9820, 0xE000B3B6, 0x402D9A20, 0xE000B3B9, 0x402EE220, 0xE0000DE3,\n\t0xE000B3BC, 0xE0000DCF, 0xE0000DE3, 0x402FE620, 0xE0000F30, 0x40306C20,\n\t0xE0001028, 0xE000B3BF, 0xE0000FFC, 0xE0001028, 0x402BDE20, 0x402BDE1F,\n\t0x402BDE1D, 0x402BDE1C, 0x402BDE1E, 0x002BDE88,\n\t// Block 63, offset 0xfc0\n\t0x002BDE63, 0x002BDE23, 0x002BDE03, 0x002BDE43, 0x402C9820, 0x402C9824,\n\t0x402C9822, 0x402C9821, 0x402C9823, 0x402C981F, 0x402C981D, 0x402C981C,\n\t0x402C981E, 0x002C9888, 0x002C9903, 0x002C98C3, 0x002C98A3, 0x002C98E3,\n\t0x002C9863, 0x002C9823, 0x002C9803, 0x002C9843, 0xE0000AF1, 0x402C9821,\n\t0x402C9823, 0xE0000AF4, 0x002C98A3, 0x002C98E3, 0x402D9A20, 0x402D9A1F,\n\t0x402D9A1D, 0x402D9A1C, 0x402D9A1E, 0x002D9A88, 0x002D9A63, 0x002D9A23,\n\t0x002D9A03, 0x002D9A43, 0x402E8220, 0x402E821F, 0x402E821D, 0x402E821C,\n\t0x402E821E, 0x002E8288, 0x002E8263, 0x002E8223, 0x002E8203, 0x002E8243,\n\t0x402E9E20, 0x402E9E1F, 0x402E9E1D, 0x402E9E1C, 0x402E9E1E, 0x002E9E88,\n\t0x002E9E63, 0x002E9E23, 0x002E9E03, 0x002E9E43, 0x402EE220, 0x402EE21F,\n\t0x402EE21D, 0x402EE21C, 0x402EE21E, 0x002EE288,\n\t// Block 64, offset 0x1000\n\t0x002EE263, 0x002EE223, 0x002EE203, 0x002EE243, 0x40306C20, 0x40306C24,\n\t0x40306C22, 0x40306C21, 0x40306C23, 0x40306C1F, 0x40306C1D, 0x40306C1C,\n\t0x40306C25, 0x40306C1E, 0x00306C88, 0x00306D03, 0x00306CC3, 0x00306CA3,\n\t0x00306CE3, 0x00306C63, 0x00306C23, 0x00306C03, 0x00306D23, 0x00306C43,\n}\n\n// mainValues: 251456 entries, 1005824 bytes\n// Block 2 is the null block.\nvar mainValues = [251456]uint32{\n\t// Block 0x0, offset 0x0\n\t0x0000: 0xa0000000, 0x0001: 0xa0000000, 0x0002: 0xa0000000, 0x0003: 0xa0000000,\n\t0x0004: 0xa0000000, 0x0005: 0xa0000000, 0x0006: 0xa0000000, 0x0007: 0xa0000000,\n\t0x0008: 0xa0000000, 0x0009: 0x40020020, 0x000a: 0x40020220, 0x000b: 0x40020420,\n\t0x000c: 0x40020620, 0x000d: 0x40020820, 0x000e: 0xa0000000, 0x000f: 0xa0000000,\n\t0x0010: 0xa0000000, 0x0011: 0xa0000000, 0x0012: 0xa0000000, 0x0013: 0xa0000000,\n\t0x0014: 0xa0000000, 0x0015: 0xa0000000, 0x0016: 0xa0000000, 0x0017: 0xa0000000,\n\t0x0018: 0xa0000000, 0x0019: 0xa0000000, 0x001a: 0xa0000000, 0x001b: 0xa0000000,\n\t0x001c: 0xa0000000, 0x001d: 0xa0000000, 0x001e: 0xa0000000, 0x001f: 0xa0000000,\n\t0x0020: 0x40021220, 0x0021: 0x4002ba20, 0x0022: 0x4003e020, 0x0023: 0x4004ea20,\n\t0x0024: 0x4027de20, 0x0025: 0x4004ec20, 0x0026: 0x4004e620, 0x0027: 0x4003d220,\n\t0x0028: 0x4003f420, 0x0029: 0x4003f620, 0x002a: 0x4004d820, 0x002b: 0x40093820,\n\t0x002c: 0x40024020, 0x002d: 0x40021a20, 0x002e: 0x4002e420, 0x002f: 0x4004e220,\n\t0x0030: 0x4029cc20, 0x0031: 0x4029ce20, 0x0032: 0x4029d020, 0x0033: 0x4029d220,\n\t0x0034: 0x4029d420, 0x0035: 0x4029d620, 0x0036: 0x4029d820, 0x0037: 0x4029da20,\n\t0x0038: 0x4029dc20, 0x0039: 0x4029de20, 0x003a: 0x40026c20, 0x003b: 0x40026220,\n\t0x003c: 0x40094020, 0x003d: 0x40094220, 0x003e: 0x40094420, 0x003f: 0x4002c420,\n\t// Block 0x1, offset 0x40\n\t0x0040: 0x4004d620, 0x0041: 0x002bde88, 0x0042: 0x002c0a88, 0x0043: 0x002c3a88,\n\t0x0044: 0x002c6288, 0x0045: 0x002c9888, 0x0046: 0x002d0888, 0x0047: 0x002d2288,\n\t0x0048: 0x002d6888, 0x0049: 0x002d9a88, 0x004a: 0x002dcc88, 0x004b: 0x002dfe88,\n\t0x004c: 0xc0030002, 0x004d: 0x002e8288, 0x004e: 0x002e9e88, 0x004f: 0x002ee288,\n\t0x0050: 0x002f2c88, 0x0051: 0x002f5688, 0x0052: 0x002f7a88, 0x0053: 0x002fe688,\n\t0x0054: 0x00302c88, 0x0055: 0x00306c88, 0x0056: 0x0030be88, 0x0057: 0x0030e288,\n\t0x0058: 0x0030f688, 0x0059: 0x00310088, 0x005a: 0x00312a88, 0x005b: 0x4003f820,\n\t0x005c: 0x4004e420, 0x005d: 0x4003fa20, 0x005e: 0x40062420, 0x005f: 0x40021620,\n\t0x0060: 0x40061e20, 0x0061: 0x402bde20, 0x0062: 0x402c0a20, 0x0063: 0x402c3a20,\n\t0x0064: 0x402c6220, 0x0065: 0x402c9820, 0x0066: 0x402d0820, 0x0067: 0x402d2220,\n\t0x0068: 0x402d6820, 0x0069: 0x402d9a20, 0x006a: 0x402dcc20, 0x006b: 0x402dfe20,\n\t0x006c: 0xc0000002, 0x006d: 0x402e8220, 0x006e: 0x402e9e20, 0x006f: 0x402ee220,\n\t0x0070: 0x402f2c20, 0x0071: 0x402f5620, 0x0072: 0x402f7a20, 0x0073: 0x402fe620,\n\t0x0074: 0x40302c20, 0x0075: 0x40306c20, 0x0076: 0x4030be20, 0x0077: 0x4030e220,\n\t0x0078: 0x4030f620, 0x0079: 0x40310020, 0x007a: 0x40312a20, 0x007b: 0x4003fc20,\n\t0x007c: 0x40094820, 0x007d: 0x4003fe20, 0x007e: 0x40094c20, 0x007f: 0xa0000000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0x00c0: 0xa0000000, 0x00c1: 0xa0000000, 0x00c2: 0xa0000000, 0x00c3: 0xa0000000,\n\t0x00c4: 0xa0000000, 0x00c5: 0x40020a20, 0x00c6: 0xa0000000, 0x00c7: 0xa0000000,\n\t0x00c8: 0xa0000000, 0x00c9: 0xa0000000, 0x00ca: 0xa0000000, 0x00cb: 0xa0000000,\n\t0x00cc: 0xa0000000, 0x00cd: 0xa0000000, 0x00ce: 0xa0000000, 0x00cf: 0xa0000000,\n\t0x00d0: 0xa0000000, 0x00d1: 0xa0000000, 0x00d2: 0xa0000000, 0x00d3: 0xa0000000,\n\t0x00d4: 0xa0000000, 0x00d5: 0xa0000000, 0x00d6: 0xa0000000, 0x00d7: 0xa0000000,\n\t0x00d8: 0xa0000000, 0x00d9: 0xa0000000, 0x00da: 0xa0000000, 0x00db: 0xa0000000,\n\t0x00dc: 0xa0000000, 0x00dd: 0xa0000000, 0x00de: 0xa0000000, 0x00df: 0xa0000000,\n\t0x00e0: 0x0002129b, 0x00e1: 0x4002bc20, 0x00e2: 0x4027dc20, 0x00e3: 0x4027e020,\n\t0x00e4: 0x4027da20, 0x00e5: 0x4027e220, 0x00e6: 0x40094a20, 0x00e7: 0x4004ce20,\n\t0x00e8: 0x40062c20, 0x00e9: 0x40081820, 0x00ea: 0x002bde94, 0x00eb: 0x4003f020,\n\t0x00ec: 0x40094620, 0x00ed: 0xa0000000, 0x00ee: 0x40081a20, 0x00ef: 0x40062620,\n\t0x00f0: 0x40070420, 0x00f1: 0x40093a20, 0x00f2: 0x0029d094, 0x00f3: 0x0029d294,\n\t0x00f4: 0x40062020, 0x00f5: 0x00327684, 0x00f6: 0x4004d220, 0x00f7: 0x40030620,\n\t0x00f8: 0x40063220, 0x00f9: 0x0029ce94, 0x00fa: 0x002ee294, 0x00fb: 0x4003f220,\n\t0x00fc: 0xe00002bf, 0x00fd: 0xe00002b7, 0x00fe: 0xe00004a7, 0x00ff: 0x4002c620,\n\t// Block 0x4, offset 0x100\n\t0x0100: 0xe00008f5, 0x0101: 0xe00008ef, 0x0102: 0xe0000921, 0x0103: 0xe0000969,\n\t0x0104: 0xe000095b, 0x0105: 0xe000094d, 0x0106: 0xe00009dd, 0x0107: 0xe0000a53,\n\t0x0108: 0xe0000ae8, 0x0109: 0xe0000ae2, 0x010a: 0xe0000af4, 0x010b: 0xe0000b20,\n\t0x010c: 0xe0000c2b, 0x010d: 0xe0000c25, 0x010e: 0xe0000c37, 0x010f: 0xe0000c43,\n\t0x0110: 0xe0000ab3, 0x0111: 0xe0000d63, 0x0112: 0xe0000d9a, 0x0113: 0xe0000d94,\n\t0x0114: 0xe0000da6, 0x0115: 0xe0000de6, 0x0116: 0xe0000dd2, 0x0117: 0x40093e20,\n\t0x0118: 0xe0000e12, 0x0119: 0xe0000fe1, 0x011a: 0xe0000fdb, 0x011b: 0xe0000fed,\n\t0x011c: 0xe0000fff, 0x011d: 0xe0001102, 0x011e: 0x00318888, 0x011f: 0xe0000f7b,\n\t0x0120: 0xe00008f2, 0x0121: 0xe00008ec, 0x0122: 0xe000091e, 0x0123: 0xe0000966,\n\t0x0124: 0xe0000958, 0x0125: 0xe000094a, 0x0126: 0xe00009d5, 0x0127: 0xe0000a4d,\n\t0x0128: 0xe0000ae5, 0x0129: 0xe0000adf, 0x012a: 0xe0000af1, 0x012b: 0xe0000b1d,\n\t0x012c: 0xe0000c28, 0x012d: 0xe0000c22, 0x012e: 0xe0000c34, 0x012f: 0xe0000c40,\n\t0x0130: 0xe0000aad, 0x0131: 0xe0000d60, 0x0132: 0xe0000d97, 0x0133: 0xe0000d91,\n\t0x0134: 0xe0000da3, 0x0135: 0xe0000de3, 0x0136: 0xe0000dcf, 0x0137: 0x40093c20,\n\t0x0138: 0xe0000e0f, 0x0139: 0xe0000fde, 0x013a: 0xe0000fd8, 0x013b: 0xe0000fea,\n\t0x013c: 0xe0000ffc, 0x013d: 0xe00010ff, 0x013e: 0x40318820, 0x013f: 0xe0001114,\n\t// Block 0x5, offset 0x140\n\t0x0140: 0xe0000983, 0x0141: 0xe0000980, 0x0142: 0xe00008fb, 0x0143: 0xe00008f8,\n\t0x0144: 0xe000097d, 0x0145: 0xe000097a, 0x0146: 0xe0000a38, 0x0147: 0xe0000a35,\n\t0x0148: 0xe0000a3e, 0x0149: 0xe0000a3b, 0x014a: 0xe0000a4a, 0x014b: 0xe0000a47,\n\t0x014c: 0xe0000a44, 0x014d: 0xe0000a41, 0x014e: 0xe0000a86, 0x014f: 0xe0000a83,\n\t0x0150: 0xe0000aaa, 0x0151: 0xe0000aa7, 0x0152: 0xe0000b46, 0x0153: 0xe0000b43,\n\t0x0154: 0xe0000aee, 0x0155: 0xe0000aeb, 0x0156: 0xe0000b2c, 0x0157: 0xe0000b29,\n\t0x0158: 0xe0000b40, 0x0159: 0xe0000b3d, 0x015a: 0xe0000b1a, 0x015b: 0xe0000b17,\n\t0x015c: 0xe0000bb8, 0x015d: 0xe0000bb5, 0x015e: 0xe0000bb2, 0x015f: 0xe0000baf,\n\t0x0160: 0xe0000bc4, 0x0161: 0xe0000bc1, 0x0162: 0xe0000bca, 0x0163: 0xe0000bc7,\n\t0x0164: 0xe0000bee, 0x0165: 0xe0000beb, 0x0166: 0xe0000c1b, 0x0167: 0xe0000c18,\n\t0x0168: 0xe0000c51, 0x0169: 0xe0000c4e, 0x016a: 0xe0000c60, 0x016b: 0xe0000c5d,\n\t0x016c: 0xe0000c31, 0x016d: 0xe0000c2e, 0x016e: 0xe0000c5a, 0x016f: 0xe0000c57,\n\t0x0170: 0xe0000c54, 0x0171: 0x402da220, 0x0172: 0xf0000a0a, 0x0173: 0xf0000404,\n\t0x0174: 0xe0000c8a, 0x0175: 0xe0000c87, 0x0176: 0xe0000c9f, 0x0177: 0xe0000c9c,\n\t0x0178: 0x402f7220, 0x0179: 0xe0000ccc, 0x017a: 0xe0000cc9, 0x017b: 0xe0000cd8,\n\t0x017c: 0xe0000cd5, 0x017d: 0xe0000cd2, 0x017e: 0xe0000ccf, 0x017f: 0xe0000d04,\n\t// Block 0x6, offset 0x180\n\t0x0180: 0xe0000cfe, 0x0181: 0xe0000cf8, 0x0182: 0xe0000cf5, 0x0183: 0xe0000d51,\n\t0x0184: 0xe0000d4e, 0x0185: 0xe0000d6f, 0x0186: 0xe0000d6c, 0x0187: 0xe0000d5d,\n\t0x0188: 0xe0000d5a, 0x0189: 0xf0000404, 0x018a: 0x002eda88, 0x018b: 0x402eda20,\n\t0x018c: 0xe0000e2e, 0x018d: 0xe0000e2b, 0x018e: 0xe0000da0, 0x018f: 0xe0000d9d,\n\t0x0190: 0xe0000de0, 0x0191: 0xe0000ddd, 0x0192: 0xe0000e93, 0x0193: 0xe0000e8f,\n\t0x0194: 0xe0000eca, 0x0195: 0xe0000ec7, 0x0196: 0xe0000edc, 0x0197: 0xe0000ed9,\n\t0x0198: 0xe0000ed0, 0x0199: 0xe0000ecd, 0x019a: 0xe0000f1f, 0x019b: 0xe0000f1c,\n\t0x019c: 0xe0000f2d, 0x019d: 0xe0000f2a, 0x019e: 0xe0000f47, 0x019f: 0xe0000f44,\n\t0x01a0: 0xe0000f33, 0x01a1: 0xe0000f30, 0x01a2: 0xe0000f99, 0x01a3: 0xe0000f96,\n\t0x01a4: 0xe0000f8a, 0x01a5: 0xe0000f87, 0x01a6: 0x00303688, 0x01a7: 0x40303620,\n\t0x01a8: 0xe000102b, 0x01a9: 0xe0001028, 0x01aa: 0xe000103f, 0x01ab: 0xe000103c,\n\t0x01ac: 0xe0000fe7, 0x01ad: 0xe0000fe4, 0x01ae: 0xe0000ff9, 0x01af: 0xe0000ff6,\n\t0x01b0: 0xe0001025, 0x01b1: 0xe0001022, 0x01b2: 0xe0001039, 0x01b3: 0xe0001036,\n\t0x01b4: 0xe00010d8, 0x01b5: 0xe00010d5, 0x01b6: 0xe000110e, 0x01b7: 0xe000110b,\n\t0x01b8: 0xe0001117, 0x01b9: 0xe000113b, 0x01ba: 0xe0001138, 0x01bb: 0xe000114d,\n\t0x01bc: 0xe000114a, 0x01bd: 0xe0001147, 0x01be: 0xe0001144, 0x01bf: 0xe0000f64,\n\t// Block 0x7, offset 0x1c0\n\t0x01c0: 0x402c1a20, 0x01c1: 0x002c2a88, 0x01c2: 0x002c3288, 0x01c3: 0x402c3220,\n\t0x01c4: 0x0031c488, 0x01c5: 0x4031c420, 0x01c6: 0x002efa88, 0x01c7: 0x002c4e88,\n\t0x01c8: 0x402c4e20, 0x01c9: 0x002c7288, 0x01ca: 0x002c7a88, 0x01cb: 0x002c8488,\n\t0x01cc: 0x402c8420, 0x01cd: 0xe000115c, 0x01ce: 0x002cae88, 0x01cf: 0x002cb888,\n\t0x01d0: 0x002cc288, 0x01d1: 0x002d1688, 0x01d2: 0x402d1620, 0x01d3: 0x002d4488,\n\t0x01d4: 0x002d5888, 0x01d5: 0x402d7820, 0x01d6: 0x002dc288, 0x01d7: 0x002db688,\n\t0x01d8: 0x002e0a88, 0x01d9: 0x402e0a20, 0x01da: 0x402e3820, 0x01db: 0x402e7220,\n\t0x01dc: 0x0030a088, 0x01dd: 0x002eb488, 0x01de: 0x402ebc20, 0x01df: 0x002f1088,\n\t0x01e0: 0xe0000e56, 0x01e1: 0xe0000e53, 0x01e2: 0x002d6088, 0x01e3: 0x402d6020,\n\t0x01e4: 0x002f3e88, 0x01e5: 0x402f3e20, 0x01e6: 0x002f8288, 0x01e7: 0x0031b488,\n\t0x01e8: 0x4031b420, 0x01e9: 0x00300888, 0x01ea: 0x40301220, 0x01eb: 0x40304220,\n\t0x01ec: 0x00304a88, 0x01ed: 0x40304a20, 0x01ee: 0x00305288, 0x01ef: 0xe000105f,\n\t0x01f0: 0xe000105c, 0x01f1: 0x0030b488, 0x01f2: 0x0030cc88, 0x01f3: 0x00311888,\n\t0x01f4: 0x40311820, 0x01f5: 0x00313488, 0x01f6: 0x40313420, 0x01f7: 0x00316488,\n\t0x01f8: 0x00316e88, 0x01f9: 0x40316e20, 0x01fa: 0x40317820, 0x01fb: 0x4031a620,\n\t0x01fc: 0x0031bc88, 0x01fd: 0x4031bc20, 0x01fe: 0xe0000fc9, 0x01ff: 0x40319420,\n\t// Block 0x8, offset 0x200\n\t0x0200: 0x40321220, 0x0201: 0x40321a20, 0x0202: 0x40322220, 0x0203: 0x40322a20,\n\t0x0204: 0xe0000ad5, 0x0205: 0xe0000ad1, 0x0206: 0xe0000acd, 0x0207: 0xf0000a0a,\n\t0x0208: 0xf000040a, 0x0209: 0xf0000404, 0x020a: 0xf0000a0a, 0x020b: 0xf000040a,\n\t0x020c: 0xf0000404, 0x020d: 0xe0000947, 0x020e: 0xe0000944, 0x020f: 0xe0000c3d,\n\t0x0210: 0xe0000c3a, 0x0211: 0xe0000dcc, 0x0212: 0xe0000dc9, 0x0213: 0xe0000ff3,\n\t0x0214: 0xe0000ff0, 0x0215: 0xe000101e, 0x0216: 0xe000101a, 0x0217: 0xe0001006,\n\t0x0218: 0xe0001002, 0x0219: 0xe0001016, 0x021a: 0xe0001012, 0x021b: 0xe000100e,\n\t0x021c: 0xe000100a, 0x021d: 0x402cae20, 0x021e: 0xe0000962, 0x021f: 0xe000095e,\n\t0x0220: 0xe0000976, 0x0221: 0xe0000972, 0x0222: 0xe00009f4, 0x0223: 0xe00009ef,\n\t0x0224: 0x002d3a88, 0x0225: 0x402d3a20, 0x0226: 0xe0000bbe, 0x0227: 0xe0000bbb,\n\t0x0228: 0xe0000c99, 0x0229: 0xe0000c96, 0x022a: 0xe0000e20, 0x022b: 0xe0000e1d,\n\t0x022c: 0xe0000e27, 0x022d: 0xe0000e23, 0x022e: 0xe0001162, 0x022f: 0xe000115f,\n\t0x0230: 0xe0000c8d, 0x0231: 0xf0000a0a, 0x0232: 0xf000040a, 0x0233: 0xf0000404,\n\t0x0234: 0xe0000bac, 0x0235: 0xe0000ba9, 0x0236: 0x002d7888, 0x0237: 0x00319488,\n\t0x0238: 0xe0000d57, 0x0239: 0xe0000d54, 0x023a: 0xe0000954, 0x023b: 0xe0000950,\n\t0x023c: 0xe00009ea, 0x023d: 0xe00009e5, 0x023e: 0xe0000e19, 0x023f: 0xe0000e15,\n\t// Block 0x9, offset 0x240\n\t0x0240: 0xe000098f, 0x0241: 0xe000098c, 0x0242: 0xe0000995, 0x0243: 0xe0000992,\n\t0x0244: 0xe0000b62, 0x0245: 0xe0000b5f, 0x0246: 0xe0000b68, 0x0247: 0xe0000b65,\n\t0x0248: 0xe0000c6c, 0x0249: 0xe0000c69, 0x024a: 0xe0000c72, 0x024b: 0xe0000c6f,\n\t0x024c: 0xe0000e4a, 0x024d: 0xe0000e47, 0x024e: 0xe0000e50, 0x024f: 0xe0000e4d,\n\t0x0250: 0xe0000ee8, 0x0251: 0xe0000ee5, 0x0252: 0xe0000eee, 0x0253: 0xe0000eeb,\n\t0x0254: 0xe0001053, 0x0255: 0xe0001050, 0x0256: 0xe0001059, 0x0257: 0xe0001056,\n\t0x0258: 0xe0000f61, 0x0259: 0xe0000f5e, 0x025a: 0xe0000fa5, 0x025b: 0xe0000fa2,\n\t0x025c: 0x00312288, 0x025d: 0x40312220, 0x025e: 0xe0000bf4, 0x025f: 0xe0000bf1,\n\t0x0260: 0x002ebc88, 0x0261: 0x402c8c20, 0x0262: 0x002f2288, 0x0263: 0x402f2220,\n\t0x0264: 0x00314088, 0x0265: 0x40314020, 0x0266: 0xe000096f, 0x0267: 0xe000096c,\n\t0x0268: 0xe0000b32, 0x0269: 0xe0000b2f, 0x026a: 0xe0000dd9, 0x026b: 0xe0000dd5,\n\t0x026c: 0xe0000dfd, 0x026d: 0xe0000df9, 0x026e: 0xe0000e04, 0x026f: 0xe0000e01,\n\t0x0270: 0xe0000e0b, 0x0271: 0xe0000e07, 0x0272: 0xe0001129, 0x0273: 0xe0001126,\n\t0x0274: 0x402e5e20, 0x0275: 0x402ed020, 0x0276: 0x40305a20, 0x0277: 0x402dd420,\n\t0x0278: 0xe0000abf, 0x0279: 0xe0000ec4, 0x027a: 0x002be888, 0x027b: 0x002c4488,\n\t0x027c: 0x402c4420, 0x027d: 0x002e3888, 0x027e: 0x00303e88, 0x027f: 0x402ffc20,\n\t// Block 0xa, offset 0x280\n\t0x0280: 0x40315820, 0x0281: 0x0031d488, 0x0282: 0x4031d420, 0x0283: 0x002c1a88,\n\t0x0284: 0x00307c88, 0x0285: 0x0030da88, 0x0286: 0x002ca288, 0x0287: 0x402ca220,\n\t0x0288: 0x002dde88, 0x0289: 0x402dde20, 0x028a: 0x002f6a88, 0x028b: 0x402f6a20,\n\t0x028c: 0x002f8e88, 0x028d: 0x402f8e20, 0x028e: 0x00311088, 0x028f: 0x40311020,\n\t0x0290: 0x402bf020, 0x0291: 0x402bf820, 0x0292: 0x402c0220, 0x0293: 0x402c2a20,\n\t0x0294: 0x402efa20, 0x0295: 0x402c5620, 0x0296: 0x402c7220, 0x0297: 0x402c7a20,\n\t0x0298: 0x402ccc20, 0x0299: 0x402cb820, 0x029a: 0x402cd420, 0x029b: 0x402cc220,\n\t0x029c: 0x402cdc20, 0x029d: 0x402ce820, 0x029e: 0x402cf020, 0x029f: 0x402dee20,\n\t0x02a0: 0x402d4420, 0x02a1: 0x402d2a20, 0x02a2: 0x402d3220, 0x02a3: 0x402d5820,\n\t0x02a4: 0x402d0020, 0x02a5: 0x40308820, 0x02a6: 0x402d8020, 0x02a7: 0x402d8e20,\n\t0x02a8: 0x402db620, 0x02a9: 0x402dc220, 0x02aa: 0x402daa20, 0x02ab: 0x402e4220,\n\t0x02ac: 0x402e4a20, 0x02ad: 0x402e5420, 0x02ae: 0x402e6820, 0x02af: 0x4030a020,\n\t0x02b0: 0x4030ac20, 0x02b1: 0x402e9020, 0x02b2: 0x402eb420, 0x02b3: 0x402ec820,\n\t0x02b4: 0x402ea620, 0x02b5: 0x402f1020, 0x02b6: 0x402eee20, 0x02b7: 0x402f1a20,\n\t0x02b8: 0x402f4c20, 0x02b9: 0x402f9820, 0x02ba: 0x402fa220, 0x02bb: 0x402fac20,\n\t0x02bc: 0x402fb620, 0x02bd: 0x402fbe20, 0x02be: 0x402fc620, 0x02bf: 0x402fd020,\n\t// Block 0xb, offset 0x2c0\n\t0x02c0: 0x402f8220, 0x02c1: 0x402fd820, 0x02c2: 0x402ff420, 0x02c3: 0x40300820,\n\t0x02c4: 0x402df620, 0x02c5: 0x40301a20, 0x02c6: 0x40302420, 0x02c7: 0x40306420,\n\t0x02c8: 0x40305220, 0x02c9: 0x40307c20, 0x02ca: 0x4030b420, 0x02cb: 0x4030cc20,\n\t0x02cc: 0x4030da20, 0x02cd: 0x4030ee20, 0x02ce: 0x402e7a20, 0x02cf: 0x40310820,\n\t0x02d0: 0x40314820, 0x02d1: 0x40315020, 0x02d2: 0x40316420, 0x02d3: 0x40318020,\n\t0x02d4: 0x4031cc20, 0x02d5: 0x4031e820, 0x02d6: 0x40320a20, 0x02d7: 0x40323220,\n\t0x02d8: 0x40323a20, 0x02d9: 0x402c1220, 0x02da: 0x402cf820, 0x02db: 0x402d4c20,\n\t0x02dc: 0x402d7020, 0x02dd: 0x402de620, 0x02de: 0x402e1a20, 0x02df: 0x402e2a20,\n\t0x02e0: 0x402f6220, 0x02e1: 0x4031fa20, 0x02e2: 0x40320220, 0x02e3: 0xe0000aca,\n\t0x02e4: 0xe0000adc, 0x02e5: 0xe0000ad9, 0x02e6: 0xe0000fcc, 0x02e7: 0xe0000fcf,\n\t0x02e8: 0xe0000fba, 0x02e9: 0xe0000ba1, 0x02ea: 0xe0000d11, 0x02eb: 0xe0000d18,\n\t0x02ec: 0x40324220, 0x02ed: 0x40324a20, 0x02ee: 0x40309020, 0x02ef: 0x40309820,\n\t0x02f0: 0x002d6894, 0x02f1: 0x002d8094, 0x02f2: 0x002dcc94, 0x02f3: 0x002f7a94,\n\t0x02f4: 0x002f9894, 0x02f5: 0x002fac94, 0x02f6: 0x002fd894, 0x02f7: 0x0030e294,\n\t0x02f8: 0x00310094, 0x02f9: 0x40064020, 0x02fa: 0x40064420, 0x02fb: 0x402d9620,\n\t0x02fc: 0x4031de20, 0x02fd: 0x402d9820, 0x02fe: 0x4031e220, 0x02ff: 0x4031f020,\n\t// Block 0xc, offset 0x300\n\t0x0300: 0x4031dc20, 0x0301: 0x4031f220, 0x0302: 0x40064620, 0x0303: 0x40064820,\n\t0x0304: 0x40064a20, 0x0305: 0x40064c20, 0x0306: 0x40064e20, 0x0307: 0x40065020,\n\t0x0308: 0x40065220, 0x0309: 0x40065420, 0x030a: 0x40065620, 0x030b: 0x40065820,\n\t0x030c: 0x40065a20, 0x030d: 0x40065c20, 0x030e: 0x40065e20, 0x030f: 0x40066020,\n\t0x0310: 0x4027b220, 0x0311: 0x4027b420, 0x0312: 0x40066220, 0x0313: 0x40066420,\n\t0x0314: 0x40066620, 0x0315: 0x40066820, 0x0316: 0x40066a20, 0x0317: 0x40066c20,\n\t0x0318: 0x40062820, 0x0319: 0x40062a20, 0x031a: 0x40062e20, 0x031b: 0x40063420,\n\t0x031c: 0x40062220, 0x031d: 0x40063020, 0x031e: 0x40066e20, 0x031f: 0x40067020,\n\t0x0320: 0x002d5894, 0x0321: 0x002e2294, 0x0322: 0x002fe694, 0x0323: 0x0030f694,\n\t0x0324: 0x0031e894, 0x0325: 0x40067220, 0x0326: 0x40067420, 0x0327: 0x40067620,\n\t0x0328: 0x40067820, 0x0329: 0x40067a20, 0x032a: 0x40067c20, 0x032b: 0x40067e20,\n\t0x032c: 0x40068020, 0x032d: 0x40068220, 0x032e: 0x4031e020, 0x032f: 0x40068420,\n\t0x0330: 0x40068620, 0x0331: 0x40068820, 0x0332: 0x40068a20, 0x0333: 0x40068c20,\n\t0x0334: 0x40068e20, 0x0335: 0x40069020, 0x0336: 0x40069220, 0x0337: 0x40069420,\n\t0x0338: 0x40069620, 0x0339: 0x40069820, 0x033a: 0x40069a20, 0x033b: 0x40069c20,\n\t0x033c: 0x40069e20, 0x033d: 0x4006a020, 0x033e: 0x4006a220, 0x033f: 0x4006a420,\n\t// Block 0xd, offset 0x340\n\t0x0340: 0xae603502, 0x0341: 0xae603202, 0x0342: 0xae603c02, 0x0343: 0xae604e02,\n\t0x0344: 0xae605b02, 0x0345: 0xae606302, 0x0346: 0xae603702, 0x0347: 0xae605202,\n\t0x0348: 0xae604702, 0x0349: 0xae606402, 0x034a: 0xae604302, 0x034b: 0xae604d02,\n\t0x034c: 0xae604102, 0x034d: 0xae605f02, 0x034e: 0xae605f02, 0x034f: 0xae606502,\n\t0x0350: 0xae606602, 0x0351: 0xae606702, 0x0352: 0xae605f02, 0x0353: 0xae602202,\n\t0x0354: 0xae602a02, 0x0355: 0xae805f02, 0x0356: 0xadc06002, 0x0357: 0xadc06002,\n\t0x0358: 0xadc06002, 0x0359: 0xadc06002, 0x035a: 0xae805f02, 0x035b: 0xad806802,\n\t0x035c: 0xadc06002, 0x035d: 0xadc06002, 0x035e: 0xadc06002, 0x035f: 0xadc06002,\n\t0x0360: 0xadc06002, 0x0361: 0xaca06e02, 0x0362: 0xaca06f02, 0x0363: 0xadc07002,\n\t0x0364: 0xadc07502, 0x0365: 0xadc07602, 0x0366: 0xadc07702, 0x0367: 0xaca05602,\n\t0x0368: 0xaca05902, 0x0369: 0xadc06002, 0x036a: 0xadc06002, 0x036b: 0xadc06002,\n\t0x036c: 0xadc06002, 0x036d: 0xadc07802, 0x036e: 0xadc07902, 0x036f: 0xadc06002,\n\t0x0370: 0xadc07a02, 0x0371: 0xadc07b02, 0x0372: 0xadc02102, 0x0373: 0xadc06002,\n\t0x0374: 0xa0107c02, 0x0375: 0xa0107d02, 0x0376: 0xa0106102, 0x0377: 0xa0106102,\n\t0x0378: 0xa0105402, 0x0379: 0xadc07e02, 0x037a: 0xadc06002, 0x037b: 0xadc06002,\n\t0x037c: 0xadc06002, 0x037d: 0xae605f02, 0x037e: 0xae605f02, 0x037f: 0xae605f02,\n\t// Block 0xe, offset 0x380\n\t0x0380: 0xae603502, 0x0381: 0xae603202, 0x0382: 0xae604502, 0x0383: 0xae602202,\n\t0x0384: 0xe0000000, 0x0385: 0xaf007f02, 0x0386: 0xae605f02, 0x0387: 0xadc06002,\n\t0x0388: 0xadc06002, 0x0389: 0xadc06002, 0x038a: 0xae605f02, 0x038b: 0xae605f02,\n\t0x038c: 0xae605f02, 0x038d: 0xadc06002, 0x038e: 0xadc06002, 0x038f: 0xa0000000,\n\t0x0390: 0xae605f02, 0x0391: 0xae605f02, 0x0392: 0xae605f02, 0x0393: 0xadc06002,\n\t0x0394: 0xadc06002, 0x0395: 0xadc06002, 0x0396: 0xadc06002, 0x0397: 0xae605f02,\n\t0x0398: 0xae808002, 0x0399: 0xadc06002, 0x039a: 0xadc06002, 0x039b: 0xae605f02,\n\t0x039c: 0xae906002, 0x039d: 0xaea05f02, 0x039e: 0xaea05f02, 0x039f: 0xae906002,\n\t0x03a0: 0xaea08102, 0x03a1: 0xaea08202, 0x03a2: 0xae906002, 0x03a3: 0x84e615ef,\n\t0x03a4: 0x84e6164c, 0x03a5: 0x84e616cd, 0x03a6: 0x84e61771, 0x03a7: 0x84e61836,\n\t0x03a8: 0x84e6161d, 0x03a9: 0x84e61631, 0x03aa: 0x84e616b4, 0x03ab: 0x84e61741,\n\t0x03ac: 0x84e617bd, 0x03ad: 0x84e61816, 0x03ae: 0x84e6185f, 0x03af: 0x84e6187b,\n\t0x03b0: 0x00326688, 0x03b1: 0x40326620, 0x03b2: 0x0032a688, 0x03b3: 0x4032a620,\n\t0x03b4: 0x40064020, 0x03b5: 0x40064220, 0x03b6: 0x00326088, 0x03b7: 0x40326020,\n\t0x03ba: 0x00326c84, 0x03bb: 0x40329220,\n\t0x03bc: 0x40329020, 0x03bd: 0x40329420, 0x03be: 0x40026220,\n\t// Block 0xf, offset 0x3c0\n\t0x03c4: 0x40062020, 0x03c5: 0xe00000ab, 0x03c6: 0xe00011f0, 0x03c7: 0x40030620,\n\t0x03c8: 0xe0001249, 0x03c9: 0xe00012dd, 0x03ca: 0xe000133a,\n\t0x03cc: 0xe000139b, 0x03ce: 0xe00013dd, 0x03cf: 0xe0001492,\n\t0x03d0: 0xe0001352, 0x03d1: 0x00325288, 0x03d2: 0x00325488, 0x03d3: 0x00325688,\n\t0x03d4: 0x00325a88, 0x03d5: 0x00325c88, 0x03d6: 0x00326488, 0x03d7: 0x00326888,\n\t0x03d8: 0x00326a88, 0x03d9: 0x00326c88, 0x03da: 0x00327088, 0x03db: 0x00327288,\n\t0x03dc: 0x00327688, 0x03dd: 0x00327888, 0x03de: 0x00327a88, 0x03df: 0x00327c88,\n\t0x03e0: 0x00327e88, 0x03e1: 0x00328888, 0x03e3: 0x00328e88,\n\t0x03e4: 0x00329688, 0x03e5: 0x00329888, 0x03e6: 0x00329a88, 0x03e7: 0x00329c88,\n\t0x03e8: 0x00329e88, 0x03e9: 0x0032a288, 0x03ea: 0xe000134f, 0x03eb: 0xe00013f2,\n\t0x03ec: 0xe00011ed, 0x03ed: 0xe0001246, 0x03ee: 0xe00012da, 0x03ef: 0xe0001337,\n\t0x03f0: 0xe00013f5, 0x03f1: 0x40325220, 0x03f2: 0x40325420, 0x03f3: 0x40325620,\n\t0x03f4: 0x40325a20, 0x03f5: 0x40325c20, 0x03f6: 0x40326420, 0x03f7: 0x40326820,\n\t0x03f8: 0x40326a20, 0x03f9: 0x40326c20, 0x03fa: 0x40327020, 0x03fb: 0x40327220,\n\t0x03fc: 0x40327620, 0x03fd: 0x40327820, 0x03fe: 0x40327a20, 0x03ff: 0x40327c20,\n\t// Block 0x10, offset 0x400\n\t0x0400: 0x40327e20, 0x0401: 0x40328820, 0x0402: 0x00328e99, 0x0403: 0x40328e20,\n\t0x0404: 0x40329620, 0x0405: 0x40329820, 0x0406: 0x40329a20, 0x0407: 0x40329c20,\n\t0x0408: 0x40329e20, 0x0409: 0x4032a220, 0x040a: 0xe000134c, 0x040b: 0xe00013ef,\n\t0x040c: 0xe0001398, 0x040d: 0xe00013da, 0x040e: 0xe000148f, 0x040f: 0xe0001368,\n\t0x0410: 0x00325484, 0x0411: 0x00326a84, 0x0412: 0x0032988a, 0x0413: 0xf000020a,\n\t0x0414: 0xf000020a, 0x0415: 0x00329a84, 0x0416: 0x00327e84, 0x0417: 0xe0001364,\n\t0x0418: 0x00328688, 0x0419: 0x40328620, 0x041a: 0x00326288, 0x041b: 0x40326220,\n\t0x041c: 0x00325e88, 0x041d: 0x40325e20, 0x041e: 0x00328488, 0x041f: 0x40328420,\n\t0x0420: 0x0032a488, 0x0421: 0x4032a420, 0x0422: 0x0032e888, 0x0423: 0x4032e820,\n\t0x0424: 0x0032f288, 0x0425: 0x4032f220, 0x0426: 0x0032f488, 0x0427: 0x4032f420,\n\t0x0428: 0x0032fa88, 0x0429: 0x4032fa20, 0x042a: 0x00330888, 0x042b: 0x40330820,\n\t0x042c: 0x00330e88, 0x042d: 0x40330e20, 0x042e: 0x00331688, 0x042f: 0x40331620,\n\t0x0430: 0x00327084, 0x0431: 0x00328884, 0x0432: 0x00328e84, 0x0433: 0x40326e20,\n\t0x0434: 0x00326a8a, 0x0435: 0x00325c84, 0x0436: 0x40092e20, 0x0437: 0x0032a888,\n\t0x0438: 0x4032a820, 0x0439: 0x00328e8a, 0x043a: 0x00328288, 0x043b: 0x40328220,\n\t0x043c: 0x40328c20, 0x043d: 0x00329288, 0x043e: 0x00329088, 0x043f: 0x00329488,\n\t// Block 0x11, offset 0x440\n\t0x0440: 0xe00014bd, 0x0441: 0xe00014c3, 0x0442: 0x00339688, 0x0443: 0x0033a288,\n\t0x0444: 0x0033c288, 0x0445: 0x0033fc88, 0x0446: 0xc02a0071, 0x0447: 0x00343688,\n\t0x0448: 0x00344688, 0x0449: 0x00349a88, 0x044a: 0x0034e488, 0x044b: 0x00356288,\n\t0x044c: 0x00356a88, 0x044d: 0xe00014cf, 0x044e: 0x00357a88, 0x044f: 0x00365488,\n\t0x0450: 0xc0090041, 0x0451: 0x00335288, 0x0452: 0x00335a88, 0x0453: 0xc0130092,\n\t0x0454: 0x00338a88, 0x0455: 0xc01800d1, 0x0456: 0xc01c0071, 0x0457: 0xc0200071,\n\t0x0458: 0xc0250041, 0x0459: 0x00343e88, 0x045a: 0xc0370092, 0x045b: 0x00348488,\n\t0x045c: 0x0034a888, 0x045d: 0x0034ba88, 0x045e: 0xc02e0071, 0x045f: 0x00350e88,\n\t0x0460: 0x00352888, 0x0461: 0x00353a88, 0x0462: 0x00354c88, 0x0463: 0xc03e00f1,\n\t0x0464: 0x0035ac88, 0x0465: 0x0035b488, 0x0466: 0x00360288, 0x0467: 0xc0440071,\n\t0x0468: 0x00365c88, 0x0469: 0x00366688, 0x046a: 0x00367488, 0x046b: 0xc0480071,\n\t0x046c: 0x00368e88, 0x046d: 0xc04c0071, 0x046e: 0x0036b888, 0x046f: 0x0036c488,\n\t0x0470: 0xc0060041, 0x0471: 0x40335220, 0x0472: 0x40335a20, 0x0473: 0xc0100092,\n\t0x0474: 0x40338a20, 0x0475: 0xc01600d1, 0x0476: 0xc01a0071, 0x0477: 0xc01e0071,\n\t0x0478: 0xc0220041, 0x0479: 0x40343e20, 0x047a: 0xc0340092, 0x047b: 0x40348420,\n\t0x047c: 0x4034a820, 0x047d: 0x4034ba20, 0x047e: 0xc02c0071, 0x047f: 0x40350e20,\n\t// Block 0x12, offset 0x480\n\t0x0480: 0x40352820, 0x0481: 0x40353a20, 0x0482: 0x40354c20, 0x0483: 0xc03a00f1,\n\t0x0484: 0x4035ac20, 0x0485: 0x4035b420, 0x0486: 0x40360220, 0x0487: 0xc0420071,\n\t0x0488: 0x40365c20, 0x0489: 0x40366620, 0x048a: 0x40367420, 0x048b: 0xc0460071,\n\t0x048c: 0x40368e20, 0x048d: 0xc04a0071, 0x048e: 0x4036b820, 0x048f: 0x4036c420,\n\t0x0490: 0xe00014ba, 0x0491: 0xe00014c0, 0x0492: 0x40339620, 0x0493: 0x4033a220,\n\t0x0494: 0x4033c220, 0x0495: 0x4033fc20, 0x0496: 0xc0280071, 0x0497: 0x40343620,\n\t0x0498: 0x40344620, 0x0499: 0x40349a20, 0x049a: 0x4034e420, 0x049b: 0x40356220,\n\t0x049c: 0x40356a20, 0x049d: 0xe00014cc, 0x049e: 0x40357a20, 0x049f: 0x40365420,\n\t0x04a0: 0x0035e088, 0x04a1: 0x4035e020, 0x04a2: 0x00369e88, 0x04a3: 0x40369e20,\n\t0x04a4: 0x0036ce88, 0x04a5: 0x4036ce20, 0x04a6: 0x0036d688, 0x04a7: 0x4036d620,\n\t0x04a8: 0x0036ea88, 0x04a9: 0x4036ea20, 0x04aa: 0x0036e088, 0x04ab: 0x4036e020,\n\t0x04ac: 0x0036f488, 0x04ad: 0x4036f420, 0x04ae: 0x0036fc88, 0x04af: 0x4036fc20,\n\t0x04b0: 0x00370488, 0x04b1: 0x40370420, 0x04b2: 0x00370c88, 0x04b3: 0x40370c20,\n\t0x04b4: 0xc0500131, 0x04b5: 0xc04e0131, 0x04b6: 0x00371c88, 0x04b7: 0x40371c20,\n\t0x04b8: 0x0035a488, 0x04b9: 0x4035a420, 0x04ba: 0x0035fa88, 0x04bb: 0x4035fa20,\n\t0x04bc: 0x0035f288, 0x04bd: 0x4035f220, 0x04be: 0x0035e888, 0x04bf: 0x4035e820,\n\t// Block 0x13, offset 0x4c0\n\t0x04c0: 0x00352088, 0x04c1: 0x40352020, 0x04c2: 0x40070620, 0x04c3: 0xae608302,\n\t0x04c4: 0xae605f02, 0x04c5: 0xae602a02, 0x04c6: 0xae602202, 0x04c7: 0xae605f02,\n\t0x04c8: 0xa0000000, 0x04c9: 0xa0000000, 0x04ca: 0x00341c88, 0x04cb: 0x40341c20,\n\t0x04cc: 0x00369688, 0x04cd: 0x40369620, 0x04ce: 0x00353088, 0x04cf: 0x40353020,\n\t0x04d0: 0xe00014b7, 0x04d1: 0xe00014b4, 0x04d2: 0x00336a88, 0x04d3: 0x40336a20,\n\t0x04d4: 0x00337a88, 0x04d5: 0x40337a20, 0x04d6: 0x0033dc88, 0x04d7: 0x4033dc20,\n\t0x04d8: 0x0033aa88, 0x04d9: 0x4033aa20, 0x04da: 0x00345888, 0x04db: 0x40345820,\n\t0x04dc: 0x00347888, 0x04dd: 0x40347820, 0x04de: 0x00347088, 0x04df: 0x40347020,\n\t0x04e0: 0x00346888, 0x04e1: 0x40346820, 0x04e2: 0x0034ca88, 0x04e3: 0x4034ca20,\n\t0x04e4: 0x0034dc88, 0x04e5: 0x4034dc20, 0x04e6: 0x00351888, 0x04e7: 0x40351820,\n\t0x04e8: 0x00372688, 0x04e9: 0x40372620, 0x04ea: 0x00354488, 0x04eb: 0x40354420,\n\t0x04ec: 0x00355888, 0x04ed: 0x40355820, 0x04ee: 0x00359288, 0x04ef: 0x40359220,\n\t0x04f0: 0x00359a88, 0x04f1: 0x40359a20, 0x04f2: 0x0035cc88, 0x04f3: 0x4035cc20,\n\t0x04f4: 0x00360e88, 0x04f5: 0x40360e20, 0x04f6: 0x00362a88, 0x04f7: 0x40362a20,\n\t0x04f8: 0x00363a88, 0x04f9: 0x40363a20, 0x04fa: 0x0035d488, 0x04fb: 0x4035d420,\n\t0x04fc: 0x00364488, 0x04fd: 0x40364420, 0x04fe: 0x00364c88, 0x04ff: 0x40364c20,\n\t// Block 0x14, offset 0x500\n\t0x0500: 0x00373088, 0x0501: 0xe00014c9, 0x0502: 0xe00014c6, 0x0503: 0x00346088,\n\t0x0504: 0x40346020, 0x0505: 0x00348e88, 0x0506: 0x40348e20, 0x0507: 0x0034d288,\n\t0x0508: 0x4034d220, 0x0509: 0x0034c288, 0x050a: 0x4034c220, 0x050b: 0x00363288,\n\t0x050c: 0x40363220, 0x050d: 0x0034b088, 0x050e: 0x4034b020, 0x050f: 0x40373020,\n\t0x0510: 0x00332a88, 0x0511: 0x40332a20, 0x0512: 0x00333288, 0x0513: 0x40333220,\n\t0x0514: 0x00334a88, 0x0515: 0x40334a20, 0x0516: 0x0033ba88, 0x0517: 0x4033ba20,\n\t0x0518: 0xc00e0071, 0x0519: 0xc00c0071, 0x051a: 0x00334288, 0x051b: 0x40334220,\n\t0x051c: 0x0033d488, 0x051d: 0x4033d420, 0x051e: 0x0033f288, 0x051f: 0x4033f220,\n\t0x0520: 0x00340688, 0x0521: 0x40340620, 0x0522: 0xe00014d5, 0x0523: 0xe00014d2,\n\t0x0524: 0x00342488, 0x0525: 0x40342420, 0x0526: 0x0034f688, 0x0527: 0x4034f620,\n\t0x0528: 0xc0320071, 0x0529: 0xc0300071, 0x052a: 0x00350688, 0x052b: 0x40350620,\n\t0x052c: 0x0036b088, 0x052d: 0x4036b020, 0x052e: 0xe00014de, 0x052f: 0xe00014db,\n\t0x0530: 0x00358288, 0x0531: 0x40358220, 0x0532: 0x00358a88, 0x0533: 0x40358a20,\n\t0x0534: 0x00362288, 0x0535: 0x40362220, 0x0536: 0x00338288, 0x0537: 0x40338220,\n\t0x0538: 0x00368688, 0x0539: 0x40368620, 0x053a: 0x00337288, 0x053b: 0x40337220,\n\t0x053c: 0x0035bc88, 0x053d: 0x4035bc20, 0x053e: 0x0035c488, 0x053f: 0x4035c420,\n\t// Block 0x15, offset 0x540\n\t0x0540: 0x00339288, 0x0541: 0x40339220, 0x0542: 0x0033a088, 0x0543: 0x4033a020,\n\t0x0544: 0x0033ee88, 0x0545: 0x4033ee20, 0x0546: 0x00341088, 0x0547: 0x40341020,\n\t0x0548: 0x0034a488, 0x0549: 0x4034a420, 0x054a: 0x0034ec88, 0x054b: 0x4034ec20,\n\t0x054c: 0x00354288, 0x054d: 0x40354220, 0x054e: 0x00355688, 0x054f: 0x40355620,\n\t0x0550: 0x0033f088, 0x0551: 0x4033f020, 0x0552: 0x00349688, 0x0553: 0x40349620,\n\t0x0554: 0x0034a688, 0x0555: 0x4034a620, 0x0556: 0x00353888, 0x0557: 0x40353820,\n\t0x0558: 0x0036cc88, 0x0559: 0x4036cc20, 0x055a: 0x00348288, 0x055b: 0x40348220,\n\t0x055c: 0x00372e88, 0x055d: 0x40372e20, 0x055e: 0x00348088, 0x055f: 0x40348020,\n\t0x0560: 0x00349888, 0x0561: 0x40349820, 0x0562: 0x0034da88, 0x0563: 0x4034da20,\n\t0x0564: 0x00351688, 0x0565: 0x40351620, 0x0566: 0x0035dc88, 0x0567: 0x4035dc20,\n\t0x0571: 0x00384288, 0x0572: 0x00384488, 0x0573: 0x00384688,\n\t0x0574: 0x00384888, 0x0575: 0x00384a88, 0x0576: 0x00384c88, 0x0577: 0x00384e88,\n\t0x0578: 0x00385088, 0x0579: 0x00385288, 0x057a: 0x00385488, 0x057b: 0x00385688,\n\t0x057c: 0x00385888, 0x057d: 0x00385a88, 0x057e: 0x00385c88, 0x057f: 0x00385e88,\n\t// Block 0x16, offset 0x580\n\t0x0580: 0x00386088, 0x0581: 0x00386288, 0x0582: 0x00386488, 0x0583: 0x00386688,\n\t0x0584: 0x00386888, 0x0585: 0x00386a88, 0x0586: 0x00386c88, 0x0587: 0x00386e88,\n\t0x0588: 0x00387088, 0x0589: 0x00387288, 0x058a: 0x00387488, 0x058b: 0x00387688,\n\t0x058c: 0x00387888, 0x058d: 0x00387a88, 0x058e: 0x00387c88, 0x058f: 0x00387e88,\n\t0x0590: 0x00388088, 0x0591: 0x00388288, 0x0592: 0x00388488, 0x0593: 0x00388688,\n\t0x0594: 0x00388888, 0x0595: 0x00388a88, 0x0596: 0x00388c88,\n\t0x0599: 0x40388e20, 0x059a: 0x40054e20, 0x059b: 0x40055020,\n\t0x059c: 0x4002be20, 0x059d: 0x40024620, 0x059e: 0x4002ca20, 0x059f: 0x40055220,\n\t0x05a1: 0x40384220, 0x05a2: 0x40384420, 0x05a3: 0x40384620,\n\t0x05a4: 0x40384820, 0x05a5: 0x40384a20, 0x05a6: 0x40384c20, 0x05a7: 0x40384e20,\n\t0x05a8: 0x40385020, 0x05a9: 0x40385220, 0x05aa: 0x40385420, 0x05ab: 0x40385620,\n\t0x05ac: 0x40385820, 0x05ad: 0x40385a20, 0x05ae: 0x40385c20, 0x05af: 0x40385e20,\n\t0x05b0: 0x40386020, 0x05b1: 0x40386220, 0x05b2: 0x40386420, 0x05b3: 0x40386620,\n\t0x05b4: 0x40386820, 0x05b5: 0x40386a20, 0x05b6: 0x40386c20, 0x05b7: 0x40386e20,\n\t0x05b8: 0x40387020, 0x05b9: 0x40387220, 0x05ba: 0x40387420, 0x05bb: 0x40387620,\n\t0x05bc: 0x40387820, 0x05bd: 0x40387a20, 0x05be: 0x40387c20, 0x05bf: 0x40387e20,\n\t// Block 0x17, offset 0x5c0\n\t0x05c0: 0x40388020, 0x05c1: 0x40388220, 0x05c2: 0x40388420, 0x05c3: 0x40388620,\n\t0x05c4: 0x40388820, 0x05c5: 0x40388a20, 0x05c6: 0x40388c20, 0x05c7: 0xf0000404,\n\t0x05c9: 0x40026e20, 0x05ca: 0x40021c20,\n\t0x05cf: 0x4027e420,\n\t0x05d1: 0xadc00000, 0x05d2: 0xae600000, 0x05d3: 0xae600000,\n\t0x05d4: 0xae600000, 0x05d5: 0xae600000, 0x05d6: 0xadc00000, 0x05d7: 0xae600000,\n\t0x05d8: 0xae600000, 0x05d9: 0xae600000, 0x05da: 0xade00000, 0x05db: 0xadc00000,\n\t0x05dc: 0xae600000, 0x05dd: 0xae600000, 0x05de: 0xae600000, 0x05df: 0xae600000,\n\t0x05e0: 0xae600000, 0x05e1: 0xae600000, 0x05e2: 0xadc00000, 0x05e3: 0xadc00000,\n\t0x05e4: 0xadc00000, 0x05e5: 0xadc00000, 0x05e6: 0xadc00000, 0x05e7: 0xadc00000,\n\t0x05e8: 0xae600000, 0x05e9: 0xae600000, 0x05ea: 0xadc00000, 0x05eb: 0xae600000,\n\t0x05ec: 0xae600000, 0x05ed: 0xade00000, 0x05ee: 0xae400000, 0x05ef: 0xae600000,\n\t0x05f0: 0xa0a08502, 0x05f1: 0xa0b08602, 0x05f2: 0xa0c08702, 0x05f3: 0xa0d08802,\n\t0x05f4: 0xa0e08902, 0x05f5: 0xa0f08a02, 0x05f6: 0xa1008b02, 0x05f7: 0xa1108c02,\n\t0x05f8: 0xa1208d02, 0x05f9: 0xa1308e02, 0x05fa: 0xa1308e02, 0x05fb: 0xa1408f02,\n\t0x05fc: 0xa1509202, 0x05fd: 0xa1600000, 0x05fe: 0x40055420, 0x05ff: 0xa1709502,\n\t// Block 0x18, offset 0x600\n\t0x0600: 0x40055620, 0x0601: 0xa1809102, 0x0602: 0xa1909002, 0x0603: 0x40055820,\n\t0x0604: 0xae600000, 0x0605: 0xadc00000, 0x0606: 0x40055a20, 0x0607: 0xa1208d02,\n\t0x0610: 0x40389020, 0x0611: 0x40389220, 0x0612: 0x40389420, 0x0613: 0x40389620,\n\t0x0614: 0x40389820, 0x0615: 0x40389a20, 0x0616: 0x40389c20, 0x0617: 0x40389e20,\n\t0x0618: 0x4038a020, 0x0619: 0x4038a220, 0x061a: 0x0038a499, 0x061b: 0x4038a420,\n\t0x061c: 0x4038a620, 0x061d: 0x0038a899, 0x061e: 0x4038a820, 0x061f: 0x0038aa99,\n\t0x0620: 0x4038aa20, 0x0621: 0x4038ac20, 0x0622: 0x4038ae20, 0x0623: 0x0038b099,\n\t0x0624: 0x4038b020, 0x0625: 0x0038b299, 0x0626: 0x4038b220, 0x0627: 0x4038b420,\n\t0x0628: 0x4038b620, 0x0629: 0x4038b820, 0x062a: 0x4038ba20,\n\t0x0630: 0xe00014ff, 0x0631: 0xe0001502, 0x0632: 0xe0001511, 0x0633: 0x40055c20,\n\t0x0634: 0x40055e20,\n\t// Block 0x19, offset 0x640\n\t0x0640: 0xa0000000, 0x0641: 0xa0000000, 0x0642: 0xa0000000, 0x0643: 0xa0000000,\n\t0x0644: 0xa0000000, 0x0646: 0x40096620, 0x0647: 0x40096a20,\n\t0x0648: 0x40070820, 0x0649: 0x4004f220, 0x064a: 0x4004f620, 0x064b: 0x4027e620,\n\t0x064c: 0x40024820, 0x064d: 0x40024a20, 0x064e: 0x40070e20, 0x064f: 0x40071020,\n\t0x0650: 0xae600000, 0x0651: 0xae600000, 0x0652: 0xae600000, 0x0653: 0xae600000,\n\t0x0654: 0xae600000, 0x0655: 0xae600000, 0x0656: 0xae600000, 0x0657: 0xae600000,\n\t0x0658: 0xa1e00000, 0x0659: 0xa1f00000, 0x065a: 0xa2000000, 0x065b: 0x40026420,\n\t0x065e: 0x40027020, 0x065f: 0x4002cc20,\n\t0x0660: 0x403aa220, 0x0661: 0x40391c20, 0x0662: 0x40391e20, 0x0663: 0x40392020,\n\t0x0664: 0x40392620, 0x0665: 0x40392820, 0x0666: 0x40393020, 0x0667: 0xc0520151,\n\t0x0668: 0x40393c20, 0x0669: 0x40395420, 0x066a: 0x40395620, 0x066b: 0x40395820,\n\t0x066c: 0x40396420, 0x066d: 0x40397220, 0x066e: 0x40397420, 0x066f: 0x40398820,\n\t0x0670: 0x40398a20, 0x0671: 0x4039a420, 0x0672: 0x4039a620, 0x0673: 0x4039c620,\n\t0x0674: 0x4039c820, 0x0675: 0x4039dc20, 0x0676: 0x4039de20, 0x0677: 0x4039e620,\n\t0x0678: 0x4039e820, 0x0679: 0x4039ee20, 0x067a: 0x4039f020, 0x067b: 0x403a3820,\n\t0x067c: 0x403a3a20, 0x067d: 0x403a9c20, 0x067e: 0x403a9e20, 0x067f: 0x403aa020,\n\t// Block 0x1a, offset 0x680\n\t0x0680: 0xa0000000, 0x0681: 0x4039fc20, 0x0682: 0x403a1220, 0x0683: 0x403a1a20,\n\t0x0684: 0x403a4020, 0x0685: 0x403a4e20, 0x0686: 0x403a5620, 0x0687: 0x403a6820,\n\t0x0688: 0xc0560171, 0x0689: 0x403a8e20, 0x068a: 0xc0580171, 0x068b: 0xa1b0a202,\n\t0x068c: 0xa1c0a502, 0x068d: 0xa1d0a902, 0x068e: 0xa1e0ad02, 0x068f: 0xa1f0b202,\n\t0x0690: 0xa200b602, 0x0691: 0xa210ba02, 0x0692: 0xa220bc02, 0x0693: 0xae60bd02,\n\t0x0694: 0xae60be02, 0x0695: 0xadc0bf02, 0x0696: 0xadc0c102, 0x0697: 0xae60c202,\n\t0x0698: 0xae60c302, 0x0699: 0xae60c402, 0x069a: 0xae60c502, 0x069b: 0xae60c602,\n\t0x069c: 0xadc0c702, 0x069d: 0xae60c802, 0x069e: 0xae60c902, 0x069f: 0xadc0c002,\n\t0x06a0: 0xe000015e, 0x06a1: 0xe00001e6, 0x06a2: 0xe0000301, 0x06a3: 0xe00003db,\n\t0x06a4: 0xe00004b6, 0x06a5: 0xe0000580, 0x06a6: 0xe000064b, 0x06a7: 0xe00006f3,\n\t0x06a8: 0xe000079f, 0x06a9: 0xe0000844, 0x06aa: 0x4004ee20, 0x06ab: 0x40024c20,\n\t0x06ac: 0x40024e20, 0x06ad: 0x4004de20, 0x06ae: 0x40393a20, 0x06af: 0x403a1020,\n\t0x06b0: 0xa230d102, 0x06b1: 0x40392420, 0x06b2: 0x40392220, 0x06b3: 0x40392a20,\n\t0x06b4: 0x00391c84, 0x06b5: 0xf0000404, 0x06b6: 0xf0000404, 0x06b7: 0xf0000404,\n\t0x06b8: 0xf0000404, 0x06b9: 0x40395a20, 0x06ba: 0x40395c20, 0x06bb: 0x40393e20,\n\t0x06bc: 0x40395e20, 0x06bd: 0x40396020, 0x06be: 0x40394020, 0x06bf: 0x40396220,\n\t// Block 0x1b, offset 0x6c0\n\t0x06c0: 0x40394220, 0x06c1: 0x40397620, 0x06c2: 0x40397820, 0x06c3: 0x40396620,\n\t0x06c4: 0x40396820, 0x06c5: 0x40397a20, 0x06c6: 0x40396a20, 0x06c7: 0x40396e20,\n\t0x06c8: 0x40398c20, 0x06c9: 0x40398e20, 0x06ca: 0x40399020, 0x06cb: 0x40399220,\n\t0x06cc: 0x40399420, 0x06cd: 0x40399620, 0x06ce: 0x40399820, 0x06cf: 0x40399a20,\n\t0x06d0: 0x40399c20, 0x06d1: 0x4039a820, 0x06d2: 0x4039aa20, 0x06d3: 0x4039ac20,\n\t0x06d4: 0x4039ae20, 0x06d5: 0x4039b020, 0x06d6: 0x4039b220, 0x06d7: 0x4039b420,\n\t0x06d8: 0x4039b620, 0x06d9: 0x4039b820, 0x06da: 0x4039ca20, 0x06db: 0x4039cc20,\n\t0x06dc: 0x4039ce20, 0x06dd: 0x4039e020, 0x06de: 0x4039e220, 0x06df: 0x4039ea20,\n\t0x06e0: 0x4039f220, 0x06e1: 0x4039fe20, 0x06e2: 0x403a0020, 0x06e3: 0x403a0220,\n\t0x06e4: 0x403a0420, 0x06e5: 0x403a0820, 0x06e6: 0x403a0a20, 0x06e7: 0x403a1420,\n\t0x06e8: 0x403a1620, 0x06e9: 0x403a1c20, 0x06ea: 0x403a1e20, 0x06eb: 0x403a2020,\n\t0x06ec: 0x403a2220, 0x06ed: 0x403a2620, 0x06ee: 0x403a2820, 0x06ef: 0x403a2a20,\n\t0x06f0: 0x403a2c20, 0x06f1: 0x403a2e20, 0x06f2: 0x403a3020, 0x06f3: 0x403a3220,\n\t0x06f4: 0x403a3420, 0x06f5: 0x403a4220, 0x06f6: 0x403a4420, 0x06f7: 0x403a4620,\n\t0x06f8: 0x403a4820, 0x06f9: 0x403a6020, 0x06fa: 0x403a5820, 0x06fb: 0x403a5a20,\n\t0x06fc: 0x403a5c20, 0x06fd: 0x403a5e20, 0x06fe: 0x403a6a20, 0x06ff: 0x40396c20,\n\t// Block 0x1c, offset 0x700\n\t0x0700: 0xe00017e4, 0x0701: 0x403a6c20, 0x0702: 0xe00017e1, 0x0703: 0x403a6e20,\n\t0x0704: 0x403a7620, 0x0705: 0x403a7820, 0x0706: 0x403a7a20, 0x0707: 0x403a7c20,\n\t0x0708: 0x403a7e20, 0x0709: 0x403a8020, 0x070a: 0x403a8220, 0x070b: 0x403a8420,\n\t0x070c: 0x403a9220, 0x070d: 0x403a9420, 0x070e: 0x403a9620, 0x070f: 0x403a8620,\n\t0x0710: 0x403a9820, 0x0711: 0x403a9a20, 0x0712: 0x403aaa20, 0x0713: 0xe0001800,\n\t0x0714: 0x4002e820, 0x0715: 0x403a7220, 0x0716: 0xae600000, 0x0717: 0xae600000,\n\t0x0718: 0xae600000, 0x0719: 0xae600000, 0x071a: 0xae600000, 0x071b: 0xae600000,\n\t0x071c: 0xae600000, 0x071d: 0xa0000000, 0x071e: 0x40071220, 0x071f: 0xae600000,\n\t0x0720: 0xae600000, 0x0721: 0xae600000, 0x0722: 0xae600000, 0x0723: 0xadc00000,\n\t0x0724: 0xae600000, 0x0725: 0x003a7484, 0x0726: 0x003a9084, 0x0727: 0xae600000,\n\t0x0728: 0xae600000, 0x0729: 0x40071420, 0x072a: 0xadc00000, 0x072b: 0xae600000,\n\t0x072c: 0xae600000, 0x072d: 0xadc00000, 0x072e: 0x40399e20, 0x072f: 0x4039ba20,\n\t0x0730: 0xe0000161, 0x0731: 0xe00001e9, 0x0732: 0xe0000304, 0x0733: 0xe00003de,\n\t0x0734: 0xe00004b9, 0x0735: 0xe0000583, 0x0736: 0xe000064e, 0x0737: 0xe00006f6,\n\t0x0738: 0xe00007a2, 0x0739: 0xe0000847, 0x073a: 0x4039d020, 0x073b: 0x4039e420,\n\t0x073c: 0x4039f420, 0x073d: 0xe0001553, 0x073e: 0xe0001779, 0x073f: 0x403a7020,\n\t// Block 0x1d, offset 0x740\n\t0x0740: 0x40035c20, 0x0741: 0x4002ea20, 0x0742: 0x4002ec20, 0x0743: 0x40027220,\n\t0x0744: 0x40027420, 0x0745: 0x40027620, 0x0746: 0x40027820, 0x0747: 0x40027a20,\n\t0x0748: 0x40027c20, 0x0749: 0x4002ce20, 0x074a: 0x40056020, 0x074b: 0x40056220,\n\t0x074c: 0x40056420, 0x074d: 0x40056620, 0x074f: 0xa0000000,\n\t0x0750: 0x403ab020, 0x0751: 0xa240d202, 0x0752: 0x403ab220, 0x0753: 0x403ab420,\n\t0x0754: 0xe0001806, 0x0755: 0x403ab820, 0x0756: 0x403ab620, 0x0757: 0x403aba20,\n\t0x0758: 0x403abc20, 0x0759: 0x403abe20, 0x075a: 0x403ac220, 0x075b: 0x403ac420,\n\t0x075c: 0xe000180f, 0x075d: 0x403ac620, 0x075e: 0x403ac820, 0x075f: 0x403aca20,\n\t0x0760: 0x403ace20, 0x0761: 0x403ad020, 0x0762: 0x403ad220, 0x0763: 0x403ad420,\n\t0x0764: 0x003ad499, 0x0765: 0x403ad620, 0x0766: 0x403ad820, 0x0767: 0xe0001812,\n\t0x0768: 0x403adc20, 0x0769: 0x403ade20, 0x076a: 0x403ae020, 0x076b: 0x403ae220,\n\t0x076c: 0x403ae420, 0x076d: 0xe0001803, 0x076e: 0xe0001809, 0x076f: 0xe000180c,\n\t0x0770: 0xae60d302, 0x0771: 0xadc0d402, 0x0772: 0xae60d502, 0x0773: 0xae60d602,\n\t0x0774: 0xadc0d702, 0x0775: 0xae60d802, 0x0776: 0xae60d902, 0x0777: 0xadc0da02,\n\t0x0778: 0xadc0db02, 0x0779: 0xadc0dc02, 0x077a: 0xae60dd02, 0x077b: 0xadc0de02,\n\t0x077c: 0xadc0df02, 0x077d: 0xae60e002, 0x077e: 0xadc0e102, 0x077f: 0xae60e202,\n\t// Block 0x1e, offset 0x780\n\t0x0780: 0xae600000, 0x0781: 0xae605f02, 0x0782: 0xadc06002, 0x0783: 0xae600000,\n\t0x0784: 0xadc00000, 0x0785: 0xae605f02, 0x0786: 0xadc06002, 0x0787: 0xae600000,\n\t0x0788: 0xadc00000, 0x0789: 0xae600000, 0x078a: 0xae600000,\n\t0x078d: 0x403ac020, 0x078e: 0x403acc20, 0x078f: 0x403ada20,\n\t0x0790: 0x40394420, 0x0791: 0x40394620, 0x0792: 0x40394820, 0x0793: 0x40394a20,\n\t0x0794: 0x40394c20, 0x0795: 0x40394e20, 0x0796: 0x40395220, 0x0797: 0x40397c20,\n\t0x0798: 0x40397e20, 0x0799: 0x4039a020, 0x079a: 0x4039a220, 0x079b: 0x4039bc20,\n\t0x079c: 0x4039d220, 0x079d: 0x4039f620, 0x079e: 0x4039f820, 0x079f: 0x4039fa20,\n\t0x07a0: 0x403a0c20, 0x07a1: 0x403a0e20, 0x07a2: 0x403a3620, 0x07a3: 0x403a3c20,\n\t0x07a4: 0x403a3e20, 0x07a5: 0x403a5020, 0x07a6: 0x403a5220, 0x07a7: 0x403a6220,\n\t0x07a8: 0x403a6420, 0x07a9: 0x403a6620, 0x07aa: 0x403a4a20, 0x07ab: 0x4039be20,\n\t0x07ac: 0x4039c020, 0x07ad: 0x4039d420, 0x07ae: 0x40398020, 0x07af: 0x40398220,\n\t0x07b0: 0x4039d620, 0x07b1: 0x4039c220, 0x07b2: 0x40398420, 0x07b3: 0x40392c20,\n\t0x07b4: 0x40392e20, 0x07b5: 0x403aa420, 0x07b6: 0x403aa620, 0x07b7: 0x403aa820,\n\t0x07b8: 0x403a8820, 0x07b9: 0x403a8a20, 0x07ba: 0x403aac20, 0x07bb: 0x403aae20,\n\t0x07bc: 0x40398620, 0x07bd: 0x4039d820, 0x07be: 0x4039da20, 0x07bf: 0x403a2420,\n\t// Block 0x1f, offset 0x7c0\n\t0x07c0: 0x403b1820, 0x07c1: 0x403b1e20, 0x07c2: 0x403b2020, 0x07c3: 0x403b2220,\n\t0x07c4: 0x403b2620, 0x07c5: 0x403b2820, 0x07c6: 0x403b2a20, 0x07c7: 0x403b2c20,\n\t0x07c8: 0x403b3220, 0x07c9: 0x403b3620, 0x07ca: 0x403b3820, 0x07cb: 0x403b3a20,\n\t0x07cc: 0x403b3e20, 0x07cd: 0x403b4620, 0x07ce: 0x403b4820, 0x07cf: 0x403b4c20,\n\t0x07d0: 0x403b4e20, 0x07d1: 0x403b5620, 0x07d2: 0x403b5820, 0x07d3: 0x403b5a20,\n\t0x07d4: 0x403b5c20, 0x07d5: 0x403b5e20, 0x07d6: 0x403b6020, 0x07d7: 0x403b6220,\n\t0x07d8: 0x403b4020, 0x07d9: 0x403b1a20, 0x07da: 0x403b1c20, 0x07db: 0x403b3c20,\n\t0x07dc: 0x403b2420, 0x07dd: 0x403b5020, 0x07de: 0x403b5220, 0x07df: 0x403b5420,\n\t0x07e0: 0x403b4220, 0x07e1: 0x403b4420, 0x07e2: 0x403b2e20, 0x07e3: 0x403b3020,\n\t0x07e4: 0x403b4a20, 0x07e5: 0x403b3420, 0x07e6: 0x403b6620, 0x07e7: 0x403b6820,\n\t0x07e8: 0x403b6a20, 0x07e9: 0x403b6c20, 0x07ea: 0x403b6e20, 0x07eb: 0x403b7020,\n\t0x07ec: 0x403b7220, 0x07ed: 0x403b7420, 0x07ee: 0x403b7620, 0x07ef: 0x403b7820,\n\t0x07f0: 0x403b7a20, 0x07f1: 0x403b6420,\n\t// Block 0x20, offset 0x800\n\t0x0800: 0xe0000164, 0x0801: 0xe00001ef, 0x0802: 0xe000030a, 0x0803: 0xe00003e4,\n\t0x0804: 0xe00004bf, 0x0805: 0xe0000589, 0x0806: 0xe0000654, 0x0807: 0xe00006fc,\n\t0x0808: 0xe00007a8, 0x0809: 0xe000084d, 0x080a: 0x403b7c20, 0x080b: 0x403b7e20,\n\t0x080c: 0x403b8020, 0x080d: 0x403b8220, 0x080e: 0x403b8420, 0x080f: 0x403b8620,\n\t0x0810: 0x403b8820, 0x0811: 0x403b8a20, 0x0812: 0x403b8c20, 0x0813: 0x403b8e20,\n\t0x0814: 0x403b9020, 0x0815: 0x403b9220, 0x0816: 0x403b9420, 0x0817: 0x403b9620,\n\t0x0818: 0x403b9820, 0x0819: 0x403b9a20, 0x081a: 0x403b9c20, 0x081b: 0x403b9e20,\n\t0x081c: 0x403ba020, 0x081d: 0x403ba220, 0x081e: 0x403ba420, 0x081f: 0x403ba620,\n\t0x0820: 0x403ba820, 0x0821: 0x403baa20, 0x0822: 0x403bac20, 0x0823: 0x403bae20,\n\t0x0824: 0x403bb020, 0x0825: 0x403bb220, 0x0826: 0x403bb420, 0x0827: 0x403bb620,\n\t0x0828: 0xe0001815, 0x0829: 0xe0001818, 0x082a: 0xe000181b, 0x082b: 0xae60e302,\n\t0x082c: 0xae60e402, 0x082d: 0xae60e502, 0x082e: 0xae60e602, 0x082f: 0xae60e702,\n\t0x0830: 0xae60e802, 0x0831: 0xae60e902, 0x0832: 0xadc0ea02, 0x0833: 0xae60eb02,\n\t0x0834: 0x403bb820, 0x0835: 0x403bba20, 0x0836: 0x40073820, 0x0837: 0x40035e20,\n\t0x0838: 0x40025020, 0x0839: 0x4002c020, 0x083a: 0xa0000000,\n\t// Block 0x21, offset 0x840\n\t0x0840: 0x4038e820, 0x0841: 0x4038ea20, 0x0842: 0x4038ec20, 0x0843: 0x4038ee20,\n\t0x0844: 0x4038f020, 0x0845: 0x4038f220, 0x0846: 0x4038f420, 0x0847: 0x4038f620,\n\t0x0848: 0x4038f820, 0x0849: 0x4038fa20, 0x084a: 0x4038fc20, 0x084b: 0x4038fe20,\n\t0x084c: 0x40390020, 0x084d: 0x40390220, 0x084e: 0x40390420, 0x084f: 0x40390620,\n\t0x0850: 0x40390820, 0x0851: 0x40390a20, 0x0852: 0x40390c20, 0x0853: 0x40390e20,\n\t0x0854: 0x40391020, 0x0855: 0x40391220, 0x0856: 0x82e61c8a, 0x0857: 0x82e61c8b,\n\t0x0858: 0xae609f02, 0x0859: 0xae60a002, 0x085a: 0x40391820, 0x085b: 0x82e61c8d,\n\t0x085c: 0xae609702, 0x085d: 0xae609702, 0x085e: 0xae609802, 0x085f: 0xae609802,\n\t0x0860: 0xae609802, 0x0861: 0xae609902, 0x0862: 0xae609902, 0x0863: 0xae609902,\n\t0x0864: 0xa0009a02, 0x0865: 0xae609a02, 0x0866: 0xae609b02, 0x0867: 0xae609b02,\n\t0x0868: 0xa0009c02, 0x0869: 0xae609c02, 0x086a: 0xae609c02, 0x086b: 0xae609d02,\n\t0x086c: 0xae609e02, 0x086d: 0xae60a102,\n\t0x0870: 0x40027e20, 0x0871: 0x40028020, 0x0872: 0x40028220, 0x0873: 0x40028420,\n\t0x0874: 0x40028620, 0x0875: 0x40028820, 0x0876: 0x40028a20, 0x0877: 0x40028c20,\n\t0x0878: 0x40028e20, 0x0879: 0x40029020, 0x087a: 0x40029220, 0x087b: 0x40029420,\n\t0x087c: 0x40029620, 0x087d: 0x40029820, 0x087e: 0x40029a20,\n\t// Block 0x22, offset 0x880\n\t0x0880: 0x403ae620, 0x0881: 0x403ae820, 0x0882: 0x403aea20, 0x0883: 0x403aec20,\n\t0x0884: 0x403aee20, 0x0885: 0x403af020, 0x0886: 0x403af220, 0x0887: 0x403af420,\n\t0x0888: 0x403af620, 0x0889: 0x403af820, 0x088a: 0x403afa20, 0x088b: 0x403afc20,\n\t0x088c: 0x403afe20, 0x088d: 0x403b0020, 0x088e: 0x403b0220, 0x088f: 0x403b0420,\n\t0x0890: 0x403b0620, 0x0891: 0x403b0820, 0x0892: 0x403b0a20, 0x0893: 0x403b0c20,\n\t0x0894: 0x403b0e20, 0x0895: 0x403b1020, 0x0896: 0x403b1220, 0x0897: 0x403b1420,\n\t0x0898: 0x403b1620, 0x0899: 0xadc06002, 0x089a: 0xadc06002, 0x089b: 0xadc06002,\n\t0x089e: 0x40056820,\n\t// Block 0x23, offset 0x8c0\n\t0x08e0: 0x40395020, 0x08e2: 0x40397020, 0x08e3: 0x4039ec20,\n\t0x08e4: 0x403a0620, 0x08e5: 0x403a1820, 0x08e6: 0x403a4c20, 0x08e7: 0x403a5420,\n\t0x08e8: 0x40393220, 0x08e9: 0x40393420, 0x08ea: 0x4039c420, 0x08eb: 0x403a8c20,\n\t0x08ec: 0x40393620,\n\t// Block 0x24, offset 0x900\n\t0x0924: 0xae60af02, 0x0925: 0xae60b402, 0x0926: 0xadc0b802, 0x0927: 0xae60a402,\n\t0x0928: 0xae60a802, 0x0929: 0xadc0ac02, 0x092a: 0xae600000, 0x092b: 0xae600000,\n\t0x092c: 0xae600000, 0x092d: 0xadc00000, 0x092e: 0xadc00000, 0x092f: 0xadc00000,\n\t0x0930: 0xa1b0a302, 0x0931: 0xa1c0a702, 0x0932: 0xa1d0ab02, 0x0933: 0xae600000,\n\t0x0934: 0xae60b002, 0x0935: 0xae60b102, 0x0936: 0xadc0b902, 0x0937: 0xae60ca02,\n\t0x0938: 0xae60cb02, 0x0939: 0xadc0cf02, 0x093a: 0xadc0d002, 0x093b: 0xae60cd02,\n\t0x093c: 0xae60ce02, 0x093d: 0xae60cc02, 0x093e: 0xae60b502,\n\t// Block 0x25, offset 0x940\n\t0x0940: 0xa000f202, 0x0941: 0xa000f202, 0x0942: 0xa000f302, 0x0943: 0xa000f402,\n\t0x0944: 0x403fbc20, 0x0945: 0x403fbe20, 0x0946: 0x403fc020, 0x0947: 0x403fcc20,\n\t0x0948: 0x403fce20, 0x0949: 0x403fd020, 0x094a: 0x403fd220, 0x094b: 0x403fd420,\n\t0x094c: 0x403fd820, 0x094d: 0x403fdc20, 0x094e: 0x403fde20, 0x094f: 0x403fe020,\n\t0x0950: 0x403fe220, 0x0951: 0x403fe420, 0x0952: 0x403fe620, 0x0953: 0x403fe820,\n\t0x0954: 0x403fea20, 0x0955: 0x403fec20, 0x0956: 0x403fee20, 0x0957: 0x403ff020,\n\t0x0958: 0x403ff420, 0x0959: 0x403ff620, 0x095a: 0x403ff820, 0x095b: 0x403ffa20,\n\t0x095c: 0x403ffc20, 0x095d: 0x40400220, 0x095e: 0x40400420, 0x095f: 0x40400620,\n\t0x0960: 0x40400820, 0x0961: 0x40400a20, 0x0962: 0x40400e20, 0x0963: 0x40401020,\n\t0x0964: 0x40401220, 0x0965: 0x40401420, 0x0966: 0x40401620, 0x0967: 0x40401820,\n\t0x0968: 0x40401a20, 0x0969: 0xe0001830, 0x096a: 0x40401c20, 0x096b: 0x40401e20,\n\t0x096c: 0x40402020, 0x096d: 0x40402420, 0x096e: 0x40402620, 0x096f: 0x40402820,\n\t0x0970: 0x40402c20, 0x0971: 0xe0001839, 0x0972: 0x40402e20, 0x0973: 0x40403020,\n\t0x0974: 0xe000183c, 0x0975: 0x40403220, 0x0976: 0x40403420, 0x0977: 0x40403620,\n\t0x0978: 0x40403820, 0x0979: 0x40403a20, 0x097a: 0x40404c20, 0x097b: 0x40404e20,\n\t0x097c: 0xa070f102, 0x097d: 0x40403c20, 0x097e: 0x40404a20, 0x097f: 0x40405620,\n\t// Block 0x26, offset 0x980\n\t0x0980: 0x40405820, 0x0981: 0x40405a20, 0x0982: 0x40405c20, 0x0983: 0x40405e20,\n\t0x0984: 0x40406020, 0x0985: 0x40406620, 0x0986: 0x40406a20, 0x0987: 0x40406c20,\n\t0x0988: 0x40407020, 0x0989: 0x40407220, 0x098a: 0x40407420, 0x098b: 0x40407620,\n\t0x098c: 0x40407820, 0x098d: 0x8209203d, 0x098e: 0x40406e20, 0x098f: 0x40405020,\n\t0x0990: 0x403fb820, 0x0991: 0xae600000, 0x0992: 0xadc00000, 0x0993: 0xae603502,\n\t0x0994: 0xae603202, 0x0995: 0x40406820, 0x0996: 0x40405220, 0x0997: 0x40405420,\n\t0x0998: 0xe000181e, 0x0999: 0xe0001821, 0x099a: 0xe0001824, 0x099b: 0xe0001827,\n\t0x099c: 0xe000182a, 0x099d: 0xe000182d, 0x099e: 0xe0001833, 0x099f: 0xe0001836,\n\t0x09a0: 0x403fd620, 0x09a1: 0x403fda20, 0x09a2: 0x40406220, 0x09a3: 0x40406420,\n\t0x09a4: 0x40030c20, 0x09a5: 0x40030e20, 0x09a6: 0xe000016a, 0x09a7: 0xe00001f8,\n\t0x09a8: 0xe0000313, 0x09a9: 0xe00003ed, 0x09aa: 0xe00004c8, 0x09ab: 0xe0000592,\n\t0x09ac: 0xe000065d, 0x09ad: 0xe0000705, 0x09ae: 0xe00007b1, 0x09af: 0xe0000856,\n\t0x09b0: 0x40056c20, 0x09b1: 0x4027b620, 0x09b2: 0x403fba20, 0x09b3: 0x403fc220,\n\t0x09b4: 0x403fc420, 0x09b5: 0x403fc620, 0x09b6: 0x403fc820, 0x09b7: 0x403fca20,\n\t0x09b9: 0x403ffe20, 0x09ba: 0x40402a20, 0x09bb: 0x403ff220,\n\t0x09bc: 0x40400020, 0x09bd: 0x40403e20, 0x09be: 0x40400c20, 0x09bf: 0x40402220,\n\t// Block 0x27, offset 0x9c0\n\t0x09c1: 0xa000f202, 0x09c2: 0xa000f302, 0x09c3: 0xa000f402,\n\t0x09c5: 0x40407c20, 0x09c6: 0x40407e20, 0x09c7: 0x40408020,\n\t0x09c8: 0x40408220, 0x09c9: 0x40408420, 0x09ca: 0x40408620, 0x09cb: 0x40408820,\n\t0x09cc: 0x40408c20, 0x09cf: 0x40409020,\n\t0x09d0: 0x40409220, 0x09d3: 0x40409420,\n\t0x09d4: 0x40409620, 0x09d5: 0x40409820, 0x09d6: 0x40409a20, 0x09d7: 0x40409c20,\n\t0x09d8: 0x40409e20, 0x09d9: 0x4040a020, 0x09da: 0x4040a220, 0x09db: 0x4040a420,\n\t0x09dc: 0x4040a620, 0x09dd: 0x4040a820, 0x09de: 0x4040aa20, 0x09df: 0x4040ac20,\n\t0x09e0: 0x4040ae20, 0x09e1: 0x4040b020, 0x09e2: 0x4040b220, 0x09e3: 0x4040b420,\n\t0x09e4: 0x4040b620, 0x09e5: 0x4040b820, 0x09e6: 0x4040ba20, 0x09e7: 0x4040bc20,\n\t0x09e8: 0x4040be20, 0x09ea: 0x4040c020, 0x09eb: 0x4040c220,\n\t0x09ec: 0x4040c420, 0x09ed: 0x4040c620, 0x09ee: 0x4040c820, 0x09ef: 0x4040ca20,\n\t0x09f0: 0x4040cc20, 0x09f2: 0x4040d020,\n\t0x09f6: 0x4040d420, 0x09f7: 0x4040d620,\n\t0x09f8: 0x4040d820, 0x09f9: 0x4040da20,\n\t0x09fc: 0xa070f102, 0x09fd: 0x4040dc20, 0x09fe: 0x4040de20, 0x09ff: 0x4040e020,\n\t// Block 0x28, offset 0xa00\n\t0x0a00: 0x4040e220, 0x0a01: 0x4040e420, 0x0a02: 0x4040e620, 0x0a03: 0x4040e820,\n\t0x0a04: 0x4040ea20, 0x0a07: 0xc05a0191,\n\t0x0a08: 0x4040f220, 0x0a0b: 0x4040f420,\n\t0x0a0c: 0x4040f620, 0x0a0d: 0x8209207c, 0x0a0e: 0xe0001845,\n\t0x0a17: 0x4040fa20,\n\t0x0a1c: 0xe000183f, 0x0a1d: 0xe0001842, 0x0a1f: 0xe0001848,\n\t0x0a20: 0x40408a20, 0x0a21: 0x40408e20, 0x0a22: 0x4040ec20, 0x0a23: 0x4040ee20,\n\t0x0a26: 0xe000016d, 0x0a27: 0xe00001fb,\n\t0x0a28: 0xe0000316, 0x0a29: 0xe00003f0, 0x0a2a: 0xe00004cb, 0x0a2b: 0xe0000595,\n\t0x0a2c: 0xe0000660, 0x0a2d: 0xe0000708, 0x0a2e: 0xe00007b4, 0x0a2f: 0xe0000859,\n\t0x0a30: 0x4040ce20, 0x0a31: 0x4040d220, 0x0a32: 0x4027e820, 0x0a33: 0x4027ea20,\n\t0x0a34: 0x40283020, 0x0a35: 0x40283220, 0x0a36: 0x40283420, 0x0a37: 0x40283620,\n\t0x0a38: 0x40283820, 0x0a39: 0x40283a20, 0x0a3a: 0x40073a20, 0x0a3b: 0x4027ec20,\n\t// Block 0x29, offset 0xa40\n\t0x0a41: 0xa000f202, 0x0a42: 0xa000f302, 0x0a43: 0xa000f402,\n\t0x0a45: 0x40410620, 0x0a46: 0x40410820, 0x0a47: 0x40411020,\n\t0x0a48: 0x40411220, 0x0a49: 0x40410020, 0x0a4a: 0x40410220,\n\t0x0a4f: 0x40411420,\n\t0x0a50: 0x40410a20, 0x0a53: 0x40410420,\n\t0x0a54: 0x40410c20, 0x0a55: 0x40411c20, 0x0a56: 0x40411e20, 0x0a57: 0x40412020,\n\t0x0a58: 0x40412220, 0x0a59: 0x40412420, 0x0a5a: 0x40412620, 0x0a5b: 0x40412820,\n\t0x0a5c: 0x40412a20, 0x0a5d: 0x40412c20, 0x0a5e: 0x40412e20, 0x0a5f: 0x40413020,\n\t0x0a60: 0x40413220, 0x0a61: 0x40413420, 0x0a62: 0x40413620, 0x0a63: 0x40413820,\n\t0x0a64: 0x40413a20, 0x0a65: 0x40413c20, 0x0a66: 0x40413e20, 0x0a67: 0x40414020,\n\t0x0a68: 0x40414220, 0x0a6a: 0x40414420, 0x0a6b: 0x40414620,\n\t0x0a6c: 0x40414820, 0x0a6d: 0x40414a20, 0x0a6e: 0x40414c20, 0x0a6f: 0x40414e20,\n\t0x0a70: 0x40415220, 0x0a72: 0x40415420, 0x0a73: 0xe000185a,\n\t0x0a75: 0x40415620, 0x0a76: 0xe000184b,\n\t0x0a78: 0x40411620, 0x0a79: 0x40411820,\n\t0x0a7c: 0xa070f102, 0x0a7e: 0x40415a20, 0x0a7f: 0x40415c20,\n\t// Block 0x2a, offset 0xa80\n\t0x0a80: 0x40415e20, 0x0a81: 0x40416020, 0x0a82: 0x40416220,\n\t0x0a87: 0x40416420,\n\t0x0a88: 0x40416620, 0x0a8b: 0x40416820,\n\t0x0a8c: 0x40416a20, 0x0a8d: 0x820920b6,\n\t0x0a91: 0x40411a20,\n\t0x0a99: 0xe000184e, 0x0a9a: 0xe0001851, 0x0a9b: 0xe0001854,\n\t0x0a9c: 0x40415820, 0x0a9e: 0xe0001857,\n\t0x0aa6: 0xe0000170, 0x0aa7: 0xe00001fe,\n\t0x0aa8: 0xe0000319, 0x0aa9: 0xe00003f3, 0x0aaa: 0xe00004ce, 0x0aab: 0xe0000598,\n\t0x0aac: 0xe0000663, 0x0aad: 0xe000070b, 0x0aae: 0xe00007b7, 0x0aaf: 0xe000085c,\n\t0x0ab0: 0xa000f502, 0x0ab1: 0xa000f602, 0x0ab2: 0x40410e20, 0x0ab3: 0x4040fe20,\n\t0x0ab4: 0x4040fc20, 0x0ab5: 0x40415020,\n\t// Block 0x2b, offset 0xac0\n\t0x0ac1: 0xa000f202, 0x0ac2: 0xa000f302, 0x0ac3: 0xa000f402,\n\t0x0ac5: 0x40417020, 0x0ac6: 0x40417220, 0x0ac7: 0x40417420,\n\t0x0ac8: 0x40417620, 0x0ac9: 0x40417820, 0x0aca: 0x40417a20, 0x0acb: 0x40417c20,\n\t0x0acc: 0x40418020, 0x0acd: 0x40418420, 0x0acf: 0x40418620,\n\t0x0ad0: 0x40418820, 0x0ad1: 0x40418a20, 0x0ad3: 0x40418c20,\n\t0x0ad4: 0x40418e20, 0x0ad5: 0x40419020, 0x0ad6: 0x40419220, 0x0ad7: 0x40419420,\n\t0x0ad8: 0x40419620, 0x0ad9: 0x40419820, 0x0ada: 0x40419a20, 0x0adb: 0x40419c20,\n\t0x0adc: 0x40419e20, 0x0add: 0x4041a020, 0x0ade: 0x4041a220, 0x0adf: 0x4041a420,\n\t0x0ae0: 0x4041a620, 0x0ae1: 0x4041a820, 0x0ae2: 0x4041aa20, 0x0ae3: 0x4041ac20,\n\t0x0ae4: 0x4041ae20, 0x0ae5: 0x4041b020, 0x0ae6: 0x4041b220, 0x0ae7: 0x4041b420,\n\t0x0ae8: 0x4041b620, 0x0aea: 0x4041b820, 0x0aeb: 0x4041ba20,\n\t0x0aec: 0x4041bc20, 0x0aed: 0x4041be20, 0x0aee: 0x4041c020, 0x0aef: 0x4041c220,\n\t0x0af0: 0x4041c420, 0x0af2: 0x4041c620, 0x0af3: 0x4041d220,\n\t0x0af5: 0x4041c820, 0x0af6: 0x4041ca20, 0x0af7: 0x4041cc20,\n\t0x0af8: 0x4041ce20, 0x0af9: 0x4041d020,\n\t0x0afc: 0xa070f102, 0x0afd: 0x4041d420, 0x0afe: 0x4041d620, 0x0aff: 0x4041d820,\n\t// Block 0x2c, offset 0xb00\n\t0x0b00: 0x4041da20, 0x0b01: 0x4041dc20, 0x0b02: 0x4041de20, 0x0b03: 0x4041e020,\n\t0x0b04: 0x4041e220, 0x0b05: 0x4041e820, 0x0b07: 0x4041ea20,\n\t0x0b08: 0x4041ec20, 0x0b09: 0x4041ee20, 0x0b0b: 0x4041f020,\n\t0x0b0c: 0x4041f220, 0x0b0d: 0x820920fa,\n\t0x0b10: 0x40416e20,\n\t0x0b20: 0x40417e20, 0x0b21: 0x40418220, 0x0b22: 0x4041e420, 0x0b23: 0x4041e620,\n\t0x0b26: 0xe0000173, 0x0b27: 0xe0000201,\n\t0x0b28: 0xe000031c, 0x0b29: 0xe00003f6, 0x0b2a: 0xe00004d1, 0x0b2b: 0xe000059b,\n\t0x0b2c: 0xe0000666, 0x0b2d: 0xe000070e, 0x0b2e: 0xe00007ba, 0x0b2f: 0xe000085f,\n\t0x0b30: 0x40057420, 0x0b31: 0x4027ee20,\n\t// Block 0x2d, offset 0xb40\n\t0x0b41: 0xa000f202, 0x0b42: 0xa000f302, 0x0b43: 0xa000f402,\n\t0x0b45: 0x4041f620, 0x0b46: 0x4041f820, 0x0b47: 0x4041fa20,\n\t0x0b48: 0x4041fc20, 0x0b49: 0x4041fe20, 0x0b4a: 0x40420020, 0x0b4b: 0x40420220,\n\t0x0b4c: 0x40420620, 0x0b4f: 0x40420a20,\n\t0x0b50: 0x40420c20, 0x0b53: 0x40420e20,\n\t0x0b54: 0x40421020, 0x0b55: 0x40421220, 0x0b56: 0x40421420, 0x0b57: 0x40421620,\n\t0x0b58: 0x40421820, 0x0b59: 0x40421a20, 0x0b5a: 0x40421c20, 0x0b5b: 0x40421e20,\n\t0x0b5c: 0x40422020, 0x0b5d: 0x40422220, 0x0b5e: 0x40422420, 0x0b5f: 0x40422620,\n\t0x0b60: 0x40422820, 0x0b61: 0x40422a20, 0x0b62: 0x40422c20, 0x0b63: 0x40422e20,\n\t0x0b64: 0x40423020, 0x0b65: 0x40423220, 0x0b66: 0x40423420, 0x0b67: 0x40423620,\n\t0x0b68: 0x40423820, 0x0b6a: 0x40423a20, 0x0b6b: 0x40423c20,\n\t0x0b6c: 0x40423e20, 0x0b6d: 0x40424020, 0x0b6e: 0x40424220, 0x0b6f: 0x40424420,\n\t0x0b70: 0x40424820, 0x0b72: 0x40424a20, 0x0b73: 0x40424c20,\n\t0x0b75: 0x40424e20, 0x0b76: 0x40425220, 0x0b77: 0x40425420,\n\t0x0b78: 0x40425620, 0x0b79: 0x40425820,\n\t0x0b7c: 0xa070f102, 0x0b7d: 0x40425a20, 0x0b7e: 0x40425c20, 0x0b7f: 0x40425e20,\n\t// Block 0x2e, offset 0xb80\n\t0x0b80: 0x40426020, 0x0b81: 0x40426220, 0x0b82: 0x40426420, 0x0b83: 0x40426620,\n\t0x0b84: 0x40426820, 0x0b87: 0xc05d01e1,\n\t0x0b88: 0x40427020, 0x0b8b: 0x40427220,\n\t0x0b8c: 0x40427420, 0x0b8d: 0x8209213b,\n\t0x0b96: 0x40427820, 0x0b97: 0x40427a20,\n\t0x0b9c: 0xe000185d, 0x0b9d: 0xe0001860, 0x0b9f: 0x40424620,\n\t0x0ba0: 0x40420420, 0x0ba1: 0x40420820, 0x0ba2: 0x40426a20, 0x0ba3: 0x40426c20,\n\t0x0ba6: 0xe0000176, 0x0ba7: 0xe0000204,\n\t0x0ba8: 0xe000031f, 0x0ba9: 0xe00003f9, 0x0baa: 0xe00004d4, 0x0bab: 0xe000059e,\n\t0x0bac: 0xe0000669, 0x0bad: 0xe0000711, 0x0bae: 0xe00007bd, 0x0baf: 0xe0000862,\n\t0x0bb0: 0x40073c20, 0x0bb1: 0x40425020, 0x0bb2: 0x40283c20, 0x0bb3: 0x40283e20,\n\t0x0bb4: 0x40284020, 0x0bb5: 0x40284220, 0x0bb6: 0x40284420, 0x0bb7: 0x40284620,\n\t// Block 0x2f, offset 0xbc0\n\t0x0bc2: 0xa000f302, 0x0bc3: 0x40429620,\n\t0x0bc5: 0x40427e20, 0x0bc6: 0x40428020, 0x0bc7: 0x40428220,\n\t0x0bc8: 0x40428420, 0x0bc9: 0x40428620, 0x0bca: 0x40428820,\n\t0x0bce: 0x40428a20, 0x0bcf: 0x40428c20,\n\t0x0bd0: 0x40428e20, 0x0bd2: 0xc0610231, 0x0bd3: 0x40429220,\n\t0x0bd4: 0x40429420, 0x0bd5: 0x40429820,\n\t0x0bd9: 0x40429a20, 0x0bda: 0x40429c20,\n\t0x0bdc: 0x4042bc20, 0x0bde: 0x40429e20, 0x0bdf: 0x4042a020,\n\t0x0be3: 0x4042a220,\n\t0x0be4: 0x4042a420,\n\t0x0be8: 0x4042a620, 0x0be9: 0x4042ba20, 0x0bea: 0x4042a820,\n\t0x0bee: 0x4042aa20, 0x0bef: 0x4042ac20,\n\t0x0bf0: 0x4042ae20, 0x0bf1: 0x4042b820, 0x0bf2: 0x4042b020, 0x0bf3: 0x4042b620,\n\t0x0bf4: 0x4042b420, 0x0bf5: 0x4042b220, 0x0bf6: 0x4042be20, 0x0bf7: 0x4042c020,\n\t0x0bf8: 0x4042c220, 0x0bf9: 0x4042c420,\n\t0x0bfe: 0x4042c620, 0x0bff: 0x4042c820,\n\t// Block 0x30, offset 0xc00\n\t0x0c00: 0x4042ca20, 0x0c01: 0x4042cc20, 0x0c02: 0x4042ce20,\n\t0x0c06: 0xc0630261, 0x0c07: 0xc06602b1,\n\t0x0c08: 0x4042d420, 0x0c0a: 0x4042d620, 0x0c0b: 0x4042d820,\n\t0x0c0c: 0x4042da20, 0x0c0d: 0x8209216e,\n\t0x0c10: 0x40427c20,\n\t0x0c17: 0x4042de20,\n\t0x0c26: 0xe0000179, 0x0c27: 0xe0000207,\n\t0x0c28: 0xe0000322, 0x0c29: 0xe00003fc, 0x0c2a: 0xe00004d7, 0x0c2b: 0xe00005a1,\n\t0x0c2c: 0xe000066c, 0x0c2d: 0xe0000714, 0x0c2e: 0xe00007c0, 0x0c2f: 0xe0000865,\n\t0x0c30: 0x40285420, 0x0c31: 0x40285620, 0x0c32: 0x40285820, 0x0c33: 0x40073e20,\n\t0x0c34: 0x40074020, 0x0c35: 0x40074220, 0x0c36: 0x40074420, 0x0c37: 0x40074620,\n\t0x0c38: 0x40074820, 0x0c39: 0x4027f220, 0x0c3a: 0x40074a20,\n\t// Block 0x31, offset 0xc40\n\t0x0c41: 0xa000f202, 0x0c42: 0xa000f302, 0x0c43: 0xa000f402,\n\t0x0c45: 0x4042e020, 0x0c46: 0x4042e220, 0x0c47: 0x4042e420,\n\t0x0c48: 0x4042e620, 0x0c49: 0x4042e820, 0x0c4a: 0x4042ea20, 0x0c4b: 0x4042ec20,\n\t0x0c4c: 0x4042f020, 0x0c4e: 0x4042f420, 0x0c4f: 0x4042f620,\n\t0x0c50: 0x4042f820, 0x0c52: 0x4042fa20, 0x0c53: 0x4042fc20,\n\t0x0c54: 0x4042fe20, 0x0c55: 0x40430020, 0x0c56: 0x40430220, 0x0c57: 0x40430420,\n\t0x0c58: 0x40430620, 0x0c59: 0x40430820, 0x0c5a: 0x40430a20, 0x0c5b: 0x40430e20,\n\t0x0c5c: 0x40431020, 0x0c5d: 0x40431420, 0x0c5e: 0x40431620, 0x0c5f: 0x40431820,\n\t0x0c60: 0x40431a20, 0x0c61: 0x40431c20, 0x0c62: 0x40431e20, 0x0c63: 0x40432020,\n\t0x0c64: 0x40432220, 0x0c65: 0x40432420, 0x0c66: 0x40432620, 0x0c67: 0x40432820,\n\t0x0c68: 0x40432a20, 0x0c6a: 0x40432c20, 0x0c6b: 0x40432e20,\n\t0x0c6c: 0x40433020, 0x0c6d: 0x40433220, 0x0c6e: 0x40433420, 0x0c6f: 0x40433620,\n\t0x0c70: 0x40433820, 0x0c71: 0x40433a20, 0x0c72: 0x40433c20, 0x0c73: 0x40434820,\n\t0x0c75: 0x40433e20, 0x0c76: 0x40434020, 0x0c77: 0x40434220,\n\t0x0c78: 0x40434420, 0x0c79: 0x40434620,\n\t0x0c7d: 0x40434a20, 0x0c7e: 0x40434c20, 0x0c7f: 0x40434e20,\n\t// Block 0x32, offset 0xc80\n\t0x0c80: 0x40435020, 0x0c81: 0x40435220, 0x0c82: 0x40435420, 0x0c83: 0x40435620,\n\t0x0c84: 0x40435820, 0x0c86: 0xc06802e1, 0x0c87: 0x40436020,\n\t0x0c88: 0x40436220, 0x0c8a: 0x40436420, 0x0c8b: 0x40436620,\n\t0x0c8c: 0x40436820, 0x0c8d: 0x820921b5,\n\t0x0c95: 0x825421b6, 0x0c96: 0x825b21b7,\n\t0x0c98: 0x40430c20, 0x0c99: 0x40431220,\n\t0x0ca0: 0x4042ee20, 0x0ca1: 0x4042f220, 0x0ca2: 0x40435a20, 0x0ca3: 0x40435c20,\n\t0x0ca6: 0xe000017c, 0x0ca7: 0xe000020a,\n\t0x0ca8: 0xe0000325, 0x0ca9: 0xe00003ff, 0x0caa: 0xe00004da, 0x0cab: 0xe00005a4,\n\t0x0cac: 0xe000066f, 0x0cad: 0xe0000717, 0x0cae: 0xe00007c3, 0x0caf: 0xe0000868,\n\t0x0cb8: 0xe000017f, 0x0cb9: 0xe000020d, 0x0cba: 0xe0000328, 0x0cbb: 0xe0000402,\n\t0x0cbc: 0xe0000210, 0x0cbd: 0xe000032b, 0x0cbe: 0xe0000405, 0x0cbf: 0x40074c20,\n\t// Block 0x33, offset 0xcc0\n\t0x0cc2: 0xa000f302, 0x0cc3: 0xa000f402,\n\t0x0cc5: 0x40437020, 0x0cc6: 0x40437220, 0x0cc7: 0x40437420,\n\t0x0cc8: 0x40437620, 0x0cc9: 0x40437820, 0x0cca: 0x40437a20, 0x0ccb: 0x40437c20,\n\t0x0ccc: 0x40438020, 0x0cce: 0x40438420, 0x0ccf: 0x40438620,\n\t0x0cd0: 0x40438820, 0x0cd2: 0x40438a20, 0x0cd3: 0x40438c20,\n\t0x0cd4: 0x40438e20, 0x0cd5: 0x40439020, 0x0cd6: 0x40439220, 0x0cd7: 0x40439420,\n\t0x0cd8: 0x40439620, 0x0cd9: 0x40439820, 0x0cda: 0x40439a20, 0x0cdb: 0x40439c20,\n\t0x0cdc: 0x40439e20, 0x0cdd: 0x4043a020, 0x0cde: 0x4043a220, 0x0cdf: 0x4043a420,\n\t0x0ce0: 0x4043a620, 0x0ce1: 0x4043a820, 0x0ce2: 0x4043aa20, 0x0ce3: 0x4043ac20,\n\t0x0ce4: 0x4043ae20, 0x0ce5: 0x4043b020, 0x0ce6: 0x4043b220, 0x0ce7: 0x4043b420,\n\t0x0ce8: 0x4043b620, 0x0cea: 0x4043b820, 0x0ceb: 0x4043ba20,\n\t0x0cec: 0x4043bc20, 0x0ced: 0x4043be20, 0x0cee: 0x4043c020, 0x0cef: 0x4043c220,\n\t0x0cf0: 0x4043c420, 0x0cf1: 0x4043c620, 0x0cf2: 0x4043c820, 0x0cf3: 0x4043d420,\n\t0x0cf5: 0x4043ca20, 0x0cf6: 0x4043cc20, 0x0cf7: 0x4043ce20,\n\t0x0cf8: 0x4043d020, 0x0cf9: 0x4043d220,\n\t0x0cfc: 0xa070f102, 0x0cfd: 0x4043d820, 0x0cfe: 0x4043de20, 0x0cff: 0xc06a0311,\n\t// Block 0x34, offset 0xd00\n\t0x0d00: 0x4043e220, 0x0d01: 0x4043e420, 0x0d02: 0x4043e620, 0x0d03: 0x4043e820,\n\t0x0d04: 0x4043ea20, 0x0d06: 0xc06c0341, 0x0d07: 0x4043f220,\n\t0x0d08: 0x4043f420, 0x0d0a: 0xc0710311, 0x0d0b: 0x4043f820,\n\t0x0d0c: 0x4043fa20, 0x0d0d: 0x820921fe,\n\t0x0d15: 0x4043fe20, 0x0d16: 0x40440020,\n\t0x0d1e: 0x4043d620,\n\t0x0d20: 0x40437e20, 0x0d21: 0x40438220, 0x0d22: 0x4043ec20, 0x0d23: 0x4043ee20,\n\t0x0d26: 0xe0000182, 0x0d27: 0xe0000213,\n\t0x0d28: 0xe000032e, 0x0d29: 0xe0000408, 0x0d2a: 0xe00004dd, 0x0d2b: 0xe00005a7,\n\t0x0d2c: 0xe0000672, 0x0d2d: 0xe000071a, 0x0d2e: 0xe00007c6, 0x0d2f: 0xe000086b,\n\t0x0d31: 0x4043da20, 0x0d32: 0x4043dc20,\n\t// Block 0x35, offset 0xd40\n\t0x0d42: 0xa000f302, 0x0d43: 0xa000f402,\n\t0x0d45: 0x40440220, 0x0d46: 0x40440420, 0x0d47: 0x40440620,\n\t0x0d48: 0x40440820, 0x0d49: 0x40440a20, 0x0d4a: 0x40440c20, 0x0d4b: 0x40440e20,\n\t0x0d4c: 0x40441220, 0x0d4e: 0x40441620, 0x0d4f: 0x40441820,\n\t0x0d50: 0x40441a20, 0x0d52: 0x40441c20, 0x0d53: 0x40441e20,\n\t0x0d54: 0x40442020, 0x0d55: 0x40442220, 0x0d56: 0x40442420, 0x0d57: 0x40442620,\n\t0x0d58: 0x40442820, 0x0d59: 0x40442a20, 0x0d5a: 0x40442c20, 0x0d5b: 0x40442e20,\n\t0x0d5c: 0x40443020, 0x0d5d: 0x40443220, 0x0d5e: 0x40443420, 0x0d5f: 0x40443620,\n\t0x0d60: 0x40443820, 0x0d61: 0x40443a20, 0x0d62: 0x40443c20, 0x0d63: 0x40443e20,\n\t0x0d64: 0x40444020, 0x0d65: 0x40444220, 0x0d66: 0x40444420, 0x0d67: 0x40444620,\n\t0x0d68: 0x40444820, 0x0d69: 0x40444a20, 0x0d6a: 0x40444c20, 0x0d6b: 0x40444e20,\n\t0x0d6c: 0x40445020, 0x0d6d: 0x40445220, 0x0d6e: 0x40445420, 0x0d6f: 0x40445620,\n\t0x0d70: 0x40445820, 0x0d71: 0x40446a20, 0x0d72: 0x40445a20, 0x0d73: 0x40446620,\n\t0x0d74: 0x40446820, 0x0d75: 0x40445c20, 0x0d76: 0x40445e20, 0x0d77: 0x40446020,\n\t0x0d78: 0x40446220, 0x0d79: 0x40446420, 0x0d7a: 0x40446c20,\n\t0x0d7d: 0x40446e20, 0x0d7e: 0x40447020, 0x0d7f: 0x40447220,\n\t// Block 0x36, offset 0xd80\n\t0x0d80: 0x40447420, 0x0d81: 0x40447620, 0x0d82: 0x40447820, 0x0d83: 0x40447a20,\n\t0x0d84: 0x40447c20, 0x0d86: 0xc07303b1, 0x0d87: 0xc0760401,\n\t0x0d88: 0x40448620, 0x0d8a: 0x40448820, 0x0d8b: 0x40448a20,\n\t0x0d8c: 0x40448c20, 0x0d8d: 0x82092248, 0x0d8e: 0xe000186c,\n\t0x0d97: 0x40448e20,\n\t0x0da0: 0x40441020, 0x0da1: 0x40441420, 0x0da2: 0x40447e20, 0x0da3: 0x40448020,\n\t0x0da6: 0xe0000185, 0x0da7: 0xe0000216,\n\t0x0da8: 0xe0000331, 0x0da9: 0xe000040b, 0x0daa: 0xe00004e0, 0x0dab: 0xe00005aa,\n\t0x0dac: 0xe0000675, 0x0dad: 0xe000071d, 0x0dae: 0xe00007c9, 0x0daf: 0xe000086e,\n\t0x0db0: 0x40285a20, 0x0db1: 0x40285c20, 0x0db2: 0x40285e20, 0x0db3: 0x40286020,\n\t0x0db4: 0x40286220, 0x0db5: 0x40286420,\n\t0x0db9: 0x40074e20, 0x0dba: 0xe0001866, 0x0dbb: 0xe0001869,\n\t0x0dbc: 0xe000186f, 0x0dbd: 0xe0001872, 0x0dbe: 0xe0001875, 0x0dbf: 0xe0001863,\n\t// Block 0x37, offset 0xdc0\n\t0x0dc2: 0xa000f302, 0x0dc3: 0xa000f402,\n\t0x0dc5: 0x40449220, 0x0dc6: 0x40449420, 0x0dc7: 0x40449620,\n\t0x0dc8: 0x40449820, 0x0dc9: 0x40449a20, 0x0dca: 0x40449c20, 0x0dcb: 0x40449e20,\n\t0x0dcc: 0x4044a020, 0x0dcd: 0x4044a220, 0x0dce: 0x4044a420, 0x0dcf: 0x4044a620,\n\t0x0dd0: 0x4044a820, 0x0dd1: 0x4044aa20, 0x0dd2: 0x4044ac20, 0x0dd3: 0x4044ae20,\n\t0x0dd4: 0x4044b020, 0x0dd5: 0x4044b220, 0x0dd6: 0x4044b420,\n\t0x0dda: 0x4044b620, 0x0ddb: 0x4044b820,\n\t0x0ddc: 0x4044ba20, 0x0ddd: 0x4044bc20, 0x0dde: 0x4044be20, 0x0ddf: 0x4044c020,\n\t0x0de0: 0x4044c220, 0x0de1: 0x4044c420, 0x0de2: 0x4044c620, 0x0de3: 0x4044c820,\n\t0x0de4: 0x4044ca20, 0x0de5: 0x4044cc20, 0x0de6: 0x4044ce20, 0x0de7: 0x4044d020,\n\t0x0de8: 0x4044d220, 0x0de9: 0x4044d420, 0x0dea: 0x4044d620, 0x0deb: 0x4044d820,\n\t0x0dec: 0x4044da20, 0x0ded: 0x4044dc20, 0x0dee: 0x4044de20, 0x0def: 0x4044e020,\n\t0x0df0: 0x4044e220, 0x0df1: 0x4044e420, 0x0df3: 0x4044e620,\n\t0x0df4: 0x4044e820, 0x0df5: 0x4044ea20, 0x0df6: 0x4044ec20, 0x0df7: 0x4044ee20,\n\t0x0df8: 0x4044f020, 0x0df9: 0x4044f220, 0x0dfa: 0x4044f420, 0x0dfb: 0x4044f620,\n\t0x0dfd: 0x4044f820,\n\t// Block 0x38, offset 0xe00\n\t0x0e00: 0x4044fa20, 0x0e01: 0x4044fc20, 0x0e02: 0x4044fe20, 0x0e03: 0x40450020,\n\t0x0e04: 0x40450220, 0x0e05: 0x40450420, 0x0e06: 0x40450620,\n\t0x0e0a: 0x82092295,\n\t0x0e0f: 0x40450820,\n\t0x0e10: 0x40450a20, 0x0e11: 0x40450c20, 0x0e12: 0x40450e20, 0x0e13: 0x40451020,\n\t0x0e14: 0x40451220, 0x0e16: 0x40451420,\n\t0x0e18: 0x40451620, 0x0e19: 0xc0780431, 0x0e1a: 0x40452020, 0x0e1b: 0x40452220,\n\t0x0e1c: 0xc07d04b1, 0x0e1d: 0x40452620, 0x0e1e: 0x40452820, 0x0e1f: 0x40451a20,\n\t0x0e32: 0x40451820, 0x0e33: 0x40451c20,\n\t0x0e34: 0x40057620,\n\t// Block 0x39, offset 0xe40\n\t0x0e41: 0x40491020, 0x0e42: 0x40491220, 0x0e43: 0x40491420,\n\t0x0e44: 0x40491620, 0x0e45: 0x40491820, 0x0e46: 0x40491a20, 0x0e47: 0x40491c20,\n\t0x0e48: 0x40491e20, 0x0e49: 0x40492020, 0x0e4a: 0x40492220, 0x0e4b: 0x40492420,\n\t0x0e4c: 0x40492620, 0x0e4d: 0x40492820, 0x0e4e: 0x40492a20, 0x0e4f: 0x40492c20,\n\t0x0e50: 0x40492e20, 0x0e51: 0x40493020, 0x0e52: 0x40493220, 0x0e53: 0x40493420,\n\t0x0e54: 0x40493620, 0x0e55: 0x40493820, 0x0e56: 0x40493a20, 0x0e57: 0x40493c20,\n\t0x0e58: 0x40493e20, 0x0e59: 0x40494020, 0x0e5a: 0x40494220, 0x0e5b: 0x40494420,\n\t0x0e5c: 0x40494620, 0x0e5d: 0x40494820, 0x0e5e: 0x40494a20, 0x0e5f: 0x40494c20,\n\t0x0e60: 0x40494e20, 0x0e61: 0x40495020, 0x0e62: 0x40495220, 0x0e63: 0x40495420,\n\t0x0e64: 0x40495620, 0x0e65: 0x40495820, 0x0e66: 0x40495a20, 0x0e67: 0x40495c20,\n\t0x0e68: 0x40495e20, 0x0e69: 0x40496020, 0x0e6a: 0x40496220, 0x0e6b: 0x40496420,\n\t0x0e6c: 0x40496620, 0x0e6d: 0x40496820, 0x0e6e: 0x40496a20, 0x0e6f: 0x40496c20,\n\t0x0e70: 0x40496e20, 0x0e71: 0x40497020, 0x0e72: 0x40497220, 0x0e73: 0x40497420,\n\t0x0e74: 0x40497620, 0x0e75: 0x40497820, 0x0e76: 0x40497a20, 0x0e77: 0x40497c20,\n\t0x0e78: 0x826724bf, 0x0e79: 0x826724c0, 0x0e7a: 0x820924c1,\n\t0x0e7f: 0x4027f420,\n\t// Block 0x3a, offset 0xe80\n\t0x0e80: 0xc07f04e1, 0x0e81: 0xc0ae04e1, 0x0e82: 0xc0dd04e1, 0x0e83: 0xc10c04e1,\n\t0x0e84: 0xc13b04e1, 0x0e85: 0x40498e20, 0x0e86: 0x4027b820, 0x0e87: 0xa000ff02,\n\t0x0e88: 0xa6b10002, 0x0e89: 0xa6b10102, 0x0e8a: 0xa6b10202, 0x0e8b: 0xa6b10302,\n\t0x0e8c: 0xa0010402, 0x0e8d: 0xc16a0511, 0x0e8e: 0xa000fe02, 0x0e8f: 0x40057820,\n\t0x0e90: 0xe000019a, 0x0e91: 0xe000022e, 0x0e92: 0xe0000346, 0x0e93: 0xe0000420,\n\t0x0e94: 0xe00004f5, 0x0e95: 0xe00005bf, 0x0e96: 0xe000068a, 0x0e97: 0xe0000732,\n\t0x0e98: 0xe00007de, 0x0e99: 0xe0000883, 0x0e9a: 0x40057a20, 0x0e9b: 0x40057c20,\n\t// Block 0x3b, offset 0xec0\n\t0x0ec1: 0x40499220, 0x0ec2: 0x40499420,\n\t0x0ec4: 0x40499620, 0x0ec7: 0x40499820,\n\t0x0ec8: 0x40499a20, 0x0eca: 0x40499e20,\n\t0x0ecd: 0x4049a220,\n\t0x0ed4: 0x4049a420, 0x0ed5: 0x4049a620, 0x0ed6: 0x4049a820, 0x0ed7: 0x4049aa20,\n\t0x0ed9: 0x4049ac20, 0x0eda: 0x4049ae20, 0x0edb: 0x4049b020,\n\t0x0edc: 0x4049b220, 0x0edd: 0x4049b420, 0x0ede: 0x4049b620, 0x0edf: 0x4049b820,\n\t0x0ee1: 0x4049ba20, 0x0ee2: 0x4049bc20, 0x0ee3: 0x4049be20,\n\t0x0ee5: 0x4049c020, 0x0ee7: 0x4049c220,\n\t0x0eea: 0x40499c20, 0x0eeb: 0x4049c420,\n\t0x0eed: 0x4049c620, 0x0eee: 0x4049c820, 0x0eef: 0x4049ca20,\n\t0x0ef0: 0x4049cc20, 0x0ef1: 0x4049ce20, 0x0ef2: 0x4049d020, 0x0ef3: 0x4049d220,\n\t0x0ef4: 0x4049d420, 0x0ef5: 0x4049d620, 0x0ef6: 0x4049d820, 0x0ef7: 0x4049da20,\n\t0x0ef8: 0x827624ee, 0x0ef9: 0x827624ef, 0x0efb: 0x4049e020,\n\t0x0efc: 0x4049e220, 0x0efd: 0x4049e420,\n\t// Block 0x3c, offset 0xf00\n\t0x0f00: 0xc16c0541, 0x0f01: 0xc18c0541, 0x0f02: 0xc1ac0541, 0x0f03: 0xc1cc0541,\n\t0x0f04: 0xc1ec0541, 0x0f06: 0x4027ba20,\n\t0x0f08: 0xa7a10602, 0x0f09: 0xa7a10702, 0x0f0a: 0xa7a10802, 0x0f0b: 0xa7a10902,\n\t0x0f0c: 0xa0010a02, 0x0f0d: 0xc20c0641,\n\t0x0f10: 0xe000019d, 0x0f11: 0xe0000231, 0x0f12: 0xe0000349, 0x0f13: 0xe0000423,\n\t0x0f14: 0xe00004f8, 0x0f15: 0xe00005c2, 0x0f16: 0xe000068d, 0x0f17: 0xe0000735,\n\t0x0f18: 0xe00007e1, 0x0f19: 0xe0000886,\n\t0x0f1c: 0xf0000404, 0x0f1d: 0xf0000404, 0x0f1e: 0x40499020, 0x0f1f: 0x4049a020,\n\t// Block 0x3d, offset 0xf40\n\t0x0f40: 0xe000201a, 0x0f41: 0x40075e20, 0x0f42: 0x40076020, 0x0f43: 0x40076220,\n\t0x0f44: 0x40058220, 0x0f45: 0x40058420, 0x0f46: 0x40058620, 0x0f47: 0x40058820,\n\t0x0f48: 0x40058a20, 0x0f49: 0x40058c20, 0x0f4a: 0x40058e20, 0x0f4b: 0x40059420,\n\t0x0f4c: 0x0005949b, 0x0f4d: 0x40059620, 0x0f4e: 0x40059820, 0x0f4f: 0x40059a20,\n\t0x0f50: 0x40059c20, 0x0f51: 0x40059e20, 0x0f52: 0x4005a020, 0x0f53: 0x40076420,\n\t0x0f54: 0x4002aa20, 0x0f55: 0x40076620, 0x0f56: 0x40076820, 0x0f57: 0x40076a20,\n\t0x0f58: 0xadc00000, 0x0f59: 0xadc00000, 0x0f5a: 0x40076c20, 0x0f5b: 0x40076e20,\n\t0x0f5c: 0x40077020, 0x0f5d: 0x40077220, 0x0f5e: 0x40077420, 0x0f5f: 0x40077620,\n\t0x0f60: 0xe00001a0, 0x0f61: 0xe0000234, 0x0f62: 0xe000034c, 0x0f63: 0xe0000426,\n\t0x0f64: 0xe00004fb, 0x0f65: 0xe00005c5, 0x0f66: 0xe0000690, 0x0f67: 0xe0000738,\n\t0x0f68: 0xe00007e4, 0x0f69: 0xe0000889, 0x0f6a: 0xe0000237, 0x0f6b: 0xe000034f,\n\t0x0f6c: 0xe0000429, 0x0f6d: 0xe00004fe, 0x0f6e: 0xe00005c8, 0x0f6f: 0xe0000693,\n\t0x0f70: 0xe000073b, 0x0f71: 0xe00007e7, 0x0f72: 0xe000088c, 0x0f73: 0xe00001a3,\n\t0x0f74: 0x40077820, 0x0f75: 0xadc00000, 0x0f76: 0x40077a20, 0x0f77: 0xadc00000,\n\t0x0f78: 0x40077c20, 0x0f79: 0xad810e02, 0x0f7a: 0x40040020, 0x0f7b: 0x40040220,\n\t0x0f7c: 0x40040420, 0x0f7d: 0x40040620, 0x0f7e: 0xa0000000, 0x0f7f: 0xa0000000,\n\t// Block 0x3e, offset 0xf80\n\t0x0f80: 0x404a7620, 0x0f81: 0x404a7c20, 0x0f82: 0x404a8020, 0x0f83: 0xe0001fe4,\n\t0x0f84: 0x404a8420, 0x0f85: 0x404a8820, 0x0f86: 0x404a8c20, 0x0f87: 0x404a9020,\n\t0x0f89: 0x404a9420, 0x0f8a: 0x404a9820, 0x0f8b: 0x404a9c20,\n\t0x0f8c: 0x404aa020, 0x0f8d: 0xe0001fea, 0x0f8e: 0x404aa420, 0x0f8f: 0x404aa820,\n\t0x0f90: 0x404aac20, 0x0f91: 0x404ab020, 0x0f92: 0xe0001ff0, 0x0f93: 0x404ab420,\n\t0x0f94: 0x404ab820, 0x0f95: 0x404abc20, 0x0f96: 0x404ac020, 0x0f97: 0xe0001ff6,\n\t0x0f98: 0x404ac420, 0x0f99: 0x404ac820, 0x0f9a: 0x404acc20, 0x0f9b: 0x404ad020,\n\t0x0f9c: 0xe0001ffc, 0x0f9d: 0x404ad420, 0x0f9e: 0x404ad820, 0x0f9f: 0x404adc20,\n\t0x0fa0: 0x404ae020, 0x0fa1: 0x404ae420, 0x0fa2: 0x404ae820, 0x0fa3: 0x404aee20,\n\t0x0fa4: 0x404af220, 0x0fa5: 0x404af620, 0x0fa6: 0x404afa20, 0x0fa7: 0x404afe20,\n\t0x0fa8: 0x404b0220, 0x0fa9: 0xe0001fde, 0x0faa: 0xe0002008, 0x0fab: 0x404a7a20,\n\t0x0fac: 0x404aec20,\n\t0x0fb1: 0xc30f0751, 0x0fb2: 0x8282258c, 0x0fb3: 0x8281258d,\n\t0x0fb4: 0x82842590, 0x0fb5: 0x82812591, 0x0fb6: 0x404b2420, 0x0fb7: 0x404b2620,\n\t0x0fb8: 0x404b2820, 0x0fb9: 0x404b2a20, 0x0fba: 0x82822596, 0x0fbb: 0x82822597,\n\t0x0fbc: 0x82822598, 0x0fbd: 0x82822599, 0x0fbe: 0xa000f302, 0x0fbf: 0xa000f402,\n\t// Block 0x3f, offset 0xfc0\n\t0x0fc0: 0x8282258e, 0x0fc1: 0x8281258f, 0x0fc2: 0xae600000, 0x0fc3: 0xae600000,\n\t0x0fc4: 0x8209259a, 0x0fc5: 0x4005a220, 0x0fc6: 0xae600000, 0x0fc7: 0xae600000,\n\t0x0fc8: 0x404b0620, 0x0fc9: 0x404b0a20, 0x0fca: 0x404b1220, 0x0fcb: 0x404b1420,\n\t0x0fcc: 0x404b0e20, 0x0fcd: 0x404b0820, 0x0fce: 0x404b0c20, 0x0fcf: 0x404b1020,\n\t0x0fd0: 0x404a7820, 0x0fd1: 0x404a7e20, 0x0fd2: 0x404a8220, 0x0fd3: 0xe0001fe7,\n\t0x0fd4: 0x404a8620, 0x0fd5: 0x404a8a20, 0x0fd6: 0x404a8e20, 0x0fd7: 0x404a9220,\n\t0x0fd9: 0x404a9620, 0x0fda: 0x404a9a20, 0x0fdb: 0x404a9e20,\n\t0x0fdc: 0x404aa220, 0x0fdd: 0xe0001fed, 0x0fde: 0x404aa620, 0x0fdf: 0x404aaa20,\n\t0x0fe0: 0x404aae20, 0x0fe1: 0x404ab220, 0x0fe2: 0xe0001ff3, 0x0fe3: 0x404ab620,\n\t0x0fe4: 0x404aba20, 0x0fe5: 0x404abe20, 0x0fe6: 0x404ac220, 0x0fe7: 0xe0001ff9,\n\t0x0fe8: 0x404ac620, 0x0fe9: 0x404aca20, 0x0fea: 0x404ace20, 0x0feb: 0x404ad220,\n\t0x0fec: 0xe0001fff, 0x0fed: 0x404ad620, 0x0fee: 0x404ada20, 0x0fef: 0x404ade20,\n\t0x0ff0: 0x404ae220, 0x0ff1: 0x404ae620, 0x0ff2: 0xc30306a1, 0x0ff3: 0xc30906a1,\n\t0x0ff4: 0x404af420, 0x0ff5: 0x404af820, 0x0ff6: 0x404afc20, 0x0ff7: 0x404b0020,\n\t0x0ff8: 0x404b0420, 0x0ff9: 0xe0001fe1, 0x0ffa: 0xe0002002, 0x0ffb: 0xe0002005,\n\t0x0ffc: 0xe000200b, 0x0ffe: 0x40077e20, 0x0fff: 0x40078020,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x40078220, 0x1001: 0x40078420, 0x1002: 0x40078620, 0x1003: 0x40078820,\n\t0x1004: 0x40078a20, 0x1005: 0x40078c20, 0x1006: 0xadc00000, 0x1007: 0x40078e20,\n\t0x1008: 0x40079020, 0x1009: 0x40079220, 0x100a: 0x40079420, 0x100b: 0x40079620,\n\t0x100c: 0x40079820, 0x100e: 0x40079a20, 0x100f: 0x40079c20,\n\t0x1010: 0x40059020, 0x1011: 0x40059220, 0x1012: 0x4005a420, 0x1013: 0x4005a620,\n\t0x1014: 0x4005a820, 0x1015: 0x40079e20, 0x1016: 0x4007a020, 0x1017: 0x4007a220,\n\t0x1018: 0x4007a420, 0x1019: 0x4005aa20, 0x101a: 0x4005ac20,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x404e1420, 0x1041: 0x404e1820, 0x1042: 0x404e1c20, 0x1043: 0x404e2220,\n\t0x1044: 0x404e2420, 0x1045: 0x404e2820, 0x1046: 0x404e2e20, 0x1047: 0x404e3220,\n\t0x1048: 0x404e3a20, 0x1049: 0x404e4220, 0x104a: 0x404e4820, 0x104b: 0x404e4a20,\n\t0x104c: 0x404e4e20, 0x104d: 0x404e5220, 0x104e: 0x404e5620, 0x104f: 0x404e5a20,\n\t0x1050: 0x404e5e20, 0x1051: 0x404e6020, 0x1052: 0x404e6220, 0x1053: 0x404e6620,\n\t0x1054: 0x404e6a20, 0x1055: 0x404e7220, 0x1056: 0x404e7420, 0x1057: 0x404e7e20,\n\t0x1058: 0x404e8220, 0x1059: 0x404e8420, 0x105a: 0x404e8820, 0x105b: 0x404e8c20,\n\t0x105c: 0x404e9420, 0x105d: 0x404e9820, 0x105e: 0x404ea620, 0x105f: 0x404eaa20,\n\t0x1060: 0x404eb620, 0x1061: 0x404ec220, 0x1062: 0x404ec420, 0x1063: 0x404ec620,\n\t0x1064: 0x404ec820, 0x1065: 0xc31307b1, 0x1066: 0x404ecc20, 0x1067: 0x404ed620,\n\t0x1068: 0x404ed820, 0x1069: 0x404eda20, 0x106a: 0x404edc20, 0x106b: 0x004ede84,\n\t0x106c: 0x404ede20, 0x106d: 0x404ee620, 0x106e: 0x404eea20, 0x106f: 0x404eee20,\n\t0x1070: 0x404ef420, 0x1071: 0x404efe20, 0x1072: 0x404f0620, 0x1073: 0x404eec20,\n\t0x1074: 0x404f0a20, 0x1075: 0x404f0220, 0x1076: 0xa000f302, 0x1077: 0xa0711202,\n\t0x1078: 0xa000f402, 0x1079: 0x8209278a, 0x107a: 0x8209278b, 0x107b: 0x404e8a20,\n\t0x107c: 0x404e9220, 0x107d: 0x404e9a20, 0x107e: 0x404eb020, 0x107f: 0xe000201e,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0xe00001ac, 0x1081: 0xe0000240, 0x1082: 0xe0000358, 0x1083: 0xe0000432,\n\t0x1084: 0xe0000507, 0x1085: 0xe00005d1, 0x1086: 0xe000069c, 0x1087: 0xe0000744,\n\t0x1088: 0xe00007f0, 0x1089: 0xe0000895, 0x108a: 0x40032220, 0x108b: 0x40032420,\n\t0x108c: 0x4005b420, 0x108d: 0x4005b620, 0x108e: 0x4005b820, 0x108f: 0x4005ba20,\n\t0x1090: 0x404ea020, 0x1091: 0x404ea220, 0x1092: 0x404ece20, 0x1093: 0x404ed020,\n\t0x1094: 0x404ed220, 0x1095: 0x404ed420, 0x1096: 0x404ef620, 0x1097: 0x404ef820,\n\t0x1098: 0x404efa20, 0x1099: 0x404efc20, 0x109a: 0x404e2620, 0x109b: 0x404e3c20,\n\t0x109c: 0x404eb820, 0x109d: 0x404eba20, 0x109e: 0x404e7020, 0x109f: 0x404e8620,\n\t0x10a0: 0x404e9620, 0x10a1: 0x404e4020, 0x10a2: 0x404f0c20, 0x10a3: 0x404f1820,\n\t0x10a4: 0x404f1a20, 0x10a5: 0x404ea420, 0x10a6: 0x404ec020, 0x10a7: 0x404f0e20,\n\t0x10a8: 0x404f1020, 0x10a9: 0x404f1c20, 0x10aa: 0x404f1e20, 0x10ab: 0x404f2020,\n\t0x10ac: 0x404f2220, 0x10ad: 0x404f2420, 0x10ae: 0x404e5c20, 0x10af: 0x404ebc20,\n\t0x10b0: 0x404ebe20, 0x10b1: 0x404ee820, 0x10b2: 0x404ee220, 0x10b3: 0x404ef020,\n\t0x10b4: 0x404ef220, 0x10b5: 0x404e1620, 0x10b6: 0x404e1a20, 0x10b7: 0x404e1e20,\n\t0x10b8: 0x404e2a20, 0x10b9: 0x404e3620, 0x10ba: 0x404e4420, 0x10bb: 0x404e6420,\n\t0x10bc: 0x404e6c20, 0x10bd: 0x404e7620, 0x10be: 0x404e7820, 0x10bf: 0x404e8020,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x404e9e20, 0x10c1: 0x404eac20, 0x10c2: 0x404e9c20, 0x10c3: 0x404ee020,\n\t0x10c4: 0x404f0020, 0x10c5: 0x404f0420, 0x10c6: 0x404f1220, 0x10c7: 0x404f2620,\n\t0x10c8: 0x404f2a20, 0x10c9: 0x404f2e20, 0x10ca: 0x404f3020, 0x10cb: 0x404f2820,\n\t0x10cc: 0x404f2c20, 0x10cd: 0xadc11302, 0x10ce: 0x404e7c20, 0x10cf: 0x404f3220,\n\t0x10d0: 0xe00001af, 0x10d1: 0xe0000243, 0x10d2: 0xe000035b, 0x10d3: 0xe0000435,\n\t0x10d4: 0xe000050a, 0x10d5: 0xe00005d4, 0x10d6: 0xe000069f, 0x10d7: 0xe0000747,\n\t0x10d8: 0xe00007f3, 0x10d9: 0xe0000898, 0x10da: 0x404f3420, 0x10db: 0x404f3620,\n\t0x10dc: 0x404ee420, 0x10dd: 0x404f0820, 0x10de: 0x4007a820, 0x10df: 0x4007aa20,\n\t0x10e0: 0x00379888, 0x10e1: 0x00379c88, 0x10e2: 0x0037a088, 0x10e3: 0x0037a488,\n\t0x10e4: 0x0037a888, 0x10e5: 0x0037ac88, 0x10e6: 0x0037b088, 0x10e7: 0x0037b888,\n\t0x10e8: 0x0037bc88, 0x10e9: 0x0037c088, 0x10ea: 0x0037c488, 0x10eb: 0x0037c888,\n\t0x10ec: 0x0037cc88, 0x10ed: 0x0037d488, 0x10ee: 0x0037d888, 0x10ef: 0x0037dc88,\n\t0x10f0: 0x0037e088, 0x10f1: 0x0037e488, 0x10f2: 0x0037e888, 0x10f3: 0x0037f088,\n\t0x10f4: 0x0037f488, 0x10f5: 0x0037f888, 0x10f6: 0x0037fc88, 0x10f7: 0x00380088,\n\t0x10f8: 0x00380488, 0x10f9: 0x00380888, 0x10fa: 0x00380c88, 0x10fb: 0x00381088,\n\t0x10fc: 0x00381488, 0x10fd: 0x00381888, 0x10fe: 0x00381c88, 0x10ff: 0x00382488,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x00382888, 0x1101: 0x0037b488, 0x1102: 0x0037d088, 0x1103: 0x0037ec88,\n\t0x1104: 0x00382088, 0x1105: 0x00382c88, 0x1107: 0x00383288,\n\t0x110d: 0x00383c88,\n\t0x1110: 0x40379620, 0x1111: 0x40379a20, 0x1112: 0x40379e20, 0x1113: 0x4037a220,\n\t0x1114: 0x4037a620, 0x1115: 0x4037aa20, 0x1116: 0x4037ae20, 0x1117: 0x4037b620,\n\t0x1118: 0x4037ba20, 0x1119: 0x4037be20, 0x111a: 0x4037c220, 0x111b: 0x4037c620,\n\t0x111c: 0x4037ca20, 0x111d: 0x4037d220, 0x111e: 0x4037d620, 0x111f: 0x4037da20,\n\t0x1120: 0x4037de20, 0x1121: 0x4037e220, 0x1122: 0x4037e620, 0x1123: 0x4037ee20,\n\t0x1124: 0x4037f220, 0x1125: 0x4037f620, 0x1126: 0x4037fa20, 0x1127: 0x4037fe20,\n\t0x1128: 0x40380220, 0x1129: 0x40380620, 0x112a: 0x40380a20, 0x112b: 0x40380e20,\n\t0x112c: 0x40381220, 0x112d: 0x40381620, 0x112e: 0x40381a20, 0x112f: 0x40382220,\n\t0x1130: 0x40382620, 0x1131: 0x4037b220, 0x1132: 0x4037ce20, 0x1133: 0x4037ea20,\n\t0x1134: 0x40381e20, 0x1135: 0x40382a20, 0x1136: 0x40382e20, 0x1137: 0x40383020,\n\t0x1138: 0x40383420, 0x1139: 0x40383620, 0x113a: 0x40383820, 0x113b: 0x40036020,\n\t0x113c: 0x0037ca94, 0x113d: 0x40383a20, 0x113e: 0x40383e20, 0x113f: 0x40384020,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x4062ac20, 0x1141: 0x4062ae20, 0x1142: 0x4062b020, 0x1143: 0x4062b220,\n\t0x1144: 0x4062b420, 0x1145: 0x4062b620, 0x1146: 0x4062b820, 0x1147: 0x4062ba20,\n\t0x1148: 0x4062bc20, 0x1149: 0x4062be20, 0x114a: 0x4062c020, 0x114b: 0x4062c220,\n\t0x114c: 0x4062c420, 0x114d: 0x4062c620, 0x114e: 0x4062c820, 0x114f: 0x4062ca20,\n\t0x1150: 0x4062cc20, 0x1151: 0x4062ce20, 0x1152: 0x4062d020, 0x1153: 0x4062d220,\n\t0x1154: 0x4062d420, 0x1155: 0x4062d620, 0x1156: 0x4062d820, 0x1157: 0x4062da20,\n\t0x1158: 0x4062dc20, 0x1159: 0x4062de20, 0x115a: 0x4062e020, 0x115b: 0x4062e220,\n\t0x115c: 0x4062e420, 0x115d: 0x4062e620, 0x115e: 0x4062e820, 0x115f: 0x4062ea20,\n\t0x1160: 0x4062ec20, 0x1161: 0x4062ee20, 0x1162: 0x4062f020, 0x1163: 0x4062f220,\n\t0x1164: 0x4062f420, 0x1165: 0x4062f620, 0x1166: 0x4062f820, 0x1167: 0x4062fa20,\n\t0x1168: 0x4062fc20, 0x1169: 0x4062fe20, 0x116a: 0x40630020, 0x116b: 0x40630220,\n\t0x116c: 0x40630420, 0x116d: 0x40630620, 0x116e: 0x40630820, 0x116f: 0x40630a20,\n\t0x1170: 0x40630c20, 0x1171: 0x40630e20, 0x1172: 0x40631020, 0x1173: 0x40631220,\n\t0x1174: 0x40631420, 0x1175: 0x40631620, 0x1176: 0x40631820, 0x1177: 0x40631a20,\n\t0x1178: 0x40631c20, 0x1179: 0x40631e20, 0x117a: 0x40632020, 0x117b: 0x40632220,\n\t0x117c: 0x40632420, 0x117d: 0x40632620, 0x117e: 0x40632820, 0x117f: 0x40632a20,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x40632c20, 0x1181: 0x40632e20, 0x1182: 0x40633020, 0x1183: 0x40633220,\n\t0x1184: 0x40633420, 0x1185: 0x40633620, 0x1186: 0x40633820, 0x1187: 0x40633a20,\n\t0x1188: 0x40633c20, 0x1189: 0x40633e20, 0x118a: 0x40634020, 0x118b: 0x40634220,\n\t0x118c: 0x40634420, 0x118d: 0x40634620, 0x118e: 0x40634820, 0x118f: 0x40634a20,\n\t0x1190: 0x40634c20, 0x1191: 0x40634e20, 0x1192: 0x40635020, 0x1193: 0x40635220,\n\t0x1194: 0x40635420, 0x1195: 0x40635620, 0x1196: 0x40635820, 0x1197: 0x40635a20,\n\t0x1198: 0x40635c20, 0x1199: 0x40635e20, 0x119a: 0x40636020, 0x119b: 0x40636220,\n\t0x119c: 0x40636420, 0x119d: 0x40636620, 0x119e: 0x40636820, 0x119f: 0x4063a420,\n\t0x11a0: 0x4063a620, 0x11a1: 0x4063a820, 0x11a2: 0x4063aa20, 0x11a3: 0x4063ac20,\n\t0x11a4: 0x4063ae20, 0x11a5: 0x4063b020, 0x11a6: 0x4063b220, 0x11a7: 0x4063b420,\n\t0x11a8: 0x4063b620, 0x11a9: 0x4063b820, 0x11aa: 0x4063ba20, 0x11ab: 0x4063bc20,\n\t0x11ac: 0x4063be20, 0x11ad: 0x4063c020, 0x11ae: 0x4063c220, 0x11af: 0x4063c420,\n\t0x11b0: 0x4063c620, 0x11b1: 0x4063c820, 0x11b2: 0x4063ca20, 0x11b3: 0x4063cc20,\n\t0x11b4: 0x4063ce20, 0x11b5: 0x4063d020, 0x11b6: 0x4063d220, 0x11b7: 0x4063d420,\n\t0x11b8: 0x4063d620, 0x11b9: 0x4063d820, 0x11ba: 0x4063da20, 0x11bb: 0x4063dc20,\n\t0x11bc: 0x4063de20, 0x11bd: 0x4063e020, 0x11be: 0x4063e220, 0x11bf: 0x4063e420,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x4063e620, 0x11c1: 0x4063e820, 0x11c2: 0x4063ea20, 0x11c3: 0x4063ec20,\n\t0x11c4: 0x4063ee20, 0x11c5: 0x4063f020, 0x11c6: 0x4063f220, 0x11c7: 0x4063f420,\n\t0x11c8: 0x4063f620, 0x11c9: 0x4063f820, 0x11ca: 0x4063fa20, 0x11cb: 0x4063fc20,\n\t0x11cc: 0x4063fe20, 0x11cd: 0x40640020, 0x11ce: 0x40640220, 0x11cf: 0x40640420,\n\t0x11d0: 0x40640620, 0x11d1: 0x40640820, 0x11d2: 0x40640a20, 0x11d3: 0x40640c20,\n\t0x11d4: 0x40640e20, 0x11d5: 0x40641020, 0x11d6: 0x40641220, 0x11d7: 0x40641420,\n\t0x11d8: 0x40641620, 0x11d9: 0x40641820, 0x11da: 0x40641a20, 0x11db: 0x40641c20,\n\t0x11dc: 0x40641e20, 0x11dd: 0x40642020, 0x11de: 0x40642220, 0x11df: 0x40642420,\n\t0x11e0: 0x40642620, 0x11e1: 0x40642820, 0x11e2: 0x40642a20, 0x11e3: 0x40642c20,\n\t0x11e4: 0x40642e20, 0x11e5: 0x40643020, 0x11e6: 0x40643220, 0x11e7: 0x40643420,\n\t0x11e8: 0x40646420, 0x11e9: 0x40646620, 0x11ea: 0x40646820, 0x11eb: 0x40646a20,\n\t0x11ec: 0x40646c20, 0x11ed: 0x40646e20, 0x11ee: 0x40647020, 0x11ef: 0x40647220,\n\t0x11f0: 0x40647420, 0x11f1: 0x40647620, 0x11f2: 0x40647820, 0x11f3: 0x40647a20,\n\t0x11f4: 0x40647c20, 0x11f5: 0x40647e20, 0x11f6: 0x40648020, 0x11f7: 0x40648220,\n\t0x11f8: 0x40648420, 0x11f9: 0x40648620, 0x11fa: 0x40648820, 0x11fb: 0x40648a20,\n\t0x11fc: 0x40648c20, 0x11fd: 0x40648e20, 0x11fe: 0x40649020, 0x11ff: 0x40649220,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x40649420, 0x1201: 0x40649620, 0x1202: 0x40649820, 0x1203: 0x40649a20,\n\t0x1204: 0x40649c20, 0x1205: 0x40649e20, 0x1206: 0x4064a020, 0x1207: 0x4064a220,\n\t0x1208: 0x4064a420, 0x1209: 0x4064a620, 0x120a: 0x4064a820, 0x120b: 0x4064aa20,\n\t0x120c: 0x4064ac20, 0x120d: 0x4064ae20, 0x120e: 0x4064b020, 0x120f: 0x4064b220,\n\t0x1210: 0x4064b420, 0x1211: 0x4064b620, 0x1212: 0x4064b820, 0x1213: 0x4064ba20,\n\t0x1214: 0x4064bc20, 0x1215: 0x4064be20, 0x1216: 0x4064c020, 0x1217: 0x4064c220,\n\t0x1218: 0x4064c420, 0x1219: 0x4064c620, 0x121a: 0x4064c820, 0x121b: 0x4064ca20,\n\t0x121c: 0x4064cc20, 0x121d: 0x4064ce20, 0x121e: 0x4064d020, 0x121f: 0x4064d220,\n\t0x1220: 0x4064d420, 0x1221: 0x4064d620, 0x1222: 0x4064d820, 0x1223: 0x4064da20,\n\t0x1224: 0x4064dc20, 0x1225: 0x4064de20, 0x1226: 0x4064e020, 0x1227: 0x4064e220,\n\t0x1228: 0x4064e420, 0x1229: 0x4064e620, 0x122a: 0x4064e820, 0x122b: 0x4064ea20,\n\t0x122c: 0x4064ec20, 0x122d: 0x4064ee20, 0x122e: 0x4064f020, 0x122f: 0x4064f220,\n\t0x1230: 0x4064f420, 0x1231: 0x4064f620, 0x1232: 0x4064f820, 0x1233: 0x4064fa20,\n\t0x1234: 0x4064fc20, 0x1235: 0x4064fe20, 0x1236: 0x40650020, 0x1237: 0x40650220,\n\t0x1238: 0x40650420, 0x1239: 0x40650620, 0x123a: 0x40650820, 0x123b: 0x40650a20,\n\t0x123c: 0x40650c20, 0x123d: 0x40650e20, 0x123e: 0x40651020, 0x123f: 0x40651220,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x403c2e20, 0x1241: 0x403c3020, 0x1242: 0x403c3220, 0x1243: 0x403c3420,\n\t0x1244: 0x403c3620, 0x1245: 0x403c3820, 0x1246: 0x403c3a20, 0x1247: 0x403c3c20,\n\t0x1248: 0x403c3e20, 0x1249: 0x403c4020, 0x124a: 0x403c4220, 0x124b: 0x403c4420,\n\t0x124c: 0x403c4620, 0x124d: 0x403c4820, 0x124e: 0x403c4a20, 0x124f: 0x403c4c20,\n\t0x1250: 0x403c5020, 0x1251: 0x403c5220, 0x1252: 0x403c5420, 0x1253: 0x403c5620,\n\t0x1254: 0x403c5820, 0x1255: 0x403c5a20, 0x1256: 0x403c5c20, 0x1257: 0x403c5e20,\n\t0x1258: 0x403c6020, 0x1259: 0x403c6220, 0x125a: 0x403c6420, 0x125b: 0x403c6620,\n\t0x125c: 0x403c6820, 0x125d: 0x403c6a20, 0x125e: 0x403c6c20, 0x125f: 0x403c6e20,\n\t0x1260: 0x403c7a20, 0x1261: 0x403c7c20, 0x1262: 0x403c7e20, 0x1263: 0x403c8020,\n\t0x1264: 0x403c8220, 0x1265: 0x403c8420, 0x1266: 0x403c8620, 0x1267: 0x403c8820,\n\t0x1268: 0x403c8a20, 0x1269: 0x403c8c20, 0x126a: 0x403c8e20, 0x126b: 0x403c9020,\n\t0x126c: 0x403c9220, 0x126d: 0x403c9420, 0x126e: 0x403c9620, 0x126f: 0x403c9820,\n\t0x1270: 0x403c9c20, 0x1271: 0x403c9e20, 0x1272: 0x403ca020, 0x1273: 0x403ca220,\n\t0x1274: 0x403ca420, 0x1275: 0x403ca620, 0x1276: 0x403ca820, 0x1277: 0x403caa20,\n\t0x1278: 0x403cba20, 0x1279: 0x403cbc20, 0x127a: 0x403cbe20, 0x127b: 0x403cc020,\n\t0x127c: 0x403cc220, 0x127d: 0x403cc420, 0x127e: 0x403cc620, 0x127f: 0x403cc820,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x403ccc20, 0x1281: 0x403cce20, 0x1282: 0x403cd020, 0x1283: 0x403cd220,\n\t0x1284: 0x403cd420, 0x1285: 0x403cd620, 0x1286: 0x403cd820, 0x1287: 0x403cda20,\n\t0x1288: 0x403cdc20, 0x128a: 0x403cde20, 0x128b: 0x403ce020,\n\t0x128c: 0x403ce220, 0x128d: 0x403ce420,\n\t0x1290: 0x403ce620, 0x1291: 0x403ce820, 0x1292: 0x403cea20, 0x1293: 0x403cec20,\n\t0x1294: 0x403cee20, 0x1295: 0x403cf020, 0x1296: 0x403cf220,\n\t0x1298: 0x403cf420, 0x129a: 0x403cf620, 0x129b: 0x403cf820,\n\t0x129c: 0x403cfa20, 0x129d: 0x403cfc20,\n\t0x12a0: 0x403cfe20, 0x12a1: 0x403d0020, 0x12a2: 0x403d0220, 0x12a3: 0x403d0420,\n\t0x12a4: 0x403d0620, 0x12a5: 0x403d0820, 0x12a6: 0x403d0a20, 0x12a7: 0x403d0c20,\n\t0x12a8: 0x403d1820, 0x12a9: 0x403d1a20, 0x12aa: 0x403d1c20, 0x12ab: 0x403d1e20,\n\t0x12ac: 0x403d2020, 0x12ad: 0x403d2220, 0x12ae: 0x403d2420, 0x12af: 0x403d2620,\n\t0x12b0: 0x403d2820, 0x12b1: 0x403d2a20, 0x12b2: 0x403d2c20, 0x12b3: 0x403d2e20,\n\t0x12b4: 0x403d3020, 0x12b5: 0x403d3220, 0x12b6: 0x403d3420, 0x12b7: 0x403d3620,\n\t0x12b8: 0x403d3a20, 0x12b9: 0x403d3c20, 0x12ba: 0x403d3e20, 0x12bb: 0x403d4020,\n\t0x12bc: 0x403d4220, 0x12bd: 0x403d4420, 0x12be: 0x403d4620, 0x12bf: 0x403d4820,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x403d4c20, 0x12c1: 0x403d4e20, 0x12c2: 0x403d5020, 0x12c3: 0x403d5220,\n\t0x12c4: 0x403d5420, 0x12c5: 0x403d5620, 0x12c6: 0x403d5820, 0x12c7: 0x403d5a20,\n\t0x12c8: 0x403d5c20, 0x12ca: 0x403d5e20, 0x12cb: 0x403d6020,\n\t0x12cc: 0x403d6220, 0x12cd: 0x403d6420,\n\t0x12d0: 0x403d6620, 0x12d1: 0x403d6820, 0x12d2: 0x403d6a20, 0x12d3: 0x403d6c20,\n\t0x12d4: 0x403d6e20, 0x12d5: 0x403d7020, 0x12d6: 0x403d7220, 0x12d7: 0x403d7420,\n\t0x12d8: 0x403d7820, 0x12d9: 0x403d7a20, 0x12da: 0x403d7c20, 0x12db: 0x403d7e20,\n\t0x12dc: 0x403d8020, 0x12dd: 0x403d8220, 0x12de: 0x403d8420, 0x12df: 0x403d8620,\n\t0x12e0: 0x403d8a20, 0x12e1: 0x403d8c20, 0x12e2: 0x403d8e20, 0x12e3: 0x403d9020,\n\t0x12e4: 0x403d9220, 0x12e5: 0x403d9420, 0x12e6: 0x403d9620, 0x12e7: 0x403d9820,\n\t0x12e8: 0x403d9c20, 0x12e9: 0x403d9e20, 0x12ea: 0x403da020, 0x12eb: 0x403da220,\n\t0x12ec: 0x403da420, 0x12ed: 0x403da620, 0x12ee: 0x403da820, 0x12ef: 0x403daa20,\n\t0x12f0: 0x403dac20, 0x12f2: 0x403dae20, 0x12f3: 0x403db020,\n\t0x12f4: 0x403db220, 0x12f5: 0x403db420,\n\t0x12f8: 0x403db620, 0x12f9: 0x403db820, 0x12fa: 0x403dba20, 0x12fb: 0x403dbc20,\n\t0x12fc: 0x403dbe20, 0x12fd: 0x403dc020, 0x12fe: 0x403dc220,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x403dc420, 0x1302: 0x403dc620, 0x1303: 0x403dc820,\n\t0x1304: 0x403dca20, 0x1305: 0x403dcc20,\n\t0x1308: 0x403dce20, 0x1309: 0x403dd020, 0x130a: 0x403dd220, 0x130b: 0x403dd420,\n\t0x130c: 0x403dd620, 0x130d: 0x403dd820, 0x130e: 0x403dda20, 0x130f: 0x403ddc20,\n\t0x1310: 0x403dde20, 0x1311: 0x403de020, 0x1312: 0x403de220, 0x1313: 0x403de420,\n\t0x1314: 0x403de620, 0x1315: 0x403de820, 0x1316: 0x403dea20,\n\t0x1318: 0x403dec20, 0x1319: 0x403dee20, 0x131a: 0x403df020, 0x131b: 0x403df220,\n\t0x131c: 0x403df420, 0x131d: 0x403df620, 0x131e: 0x403df820, 0x131f: 0x403dfa20,\n\t0x1320: 0x403e0a20, 0x1321: 0x403e0c20, 0x1322: 0x403e0e20, 0x1323: 0x403e1020,\n\t0x1324: 0x403e1220, 0x1325: 0x403e1420, 0x1326: 0x403e1620, 0x1327: 0x403e1820,\n\t0x1328: 0x403e1a20, 0x1329: 0x403e1c20, 0x132a: 0x403e1e20, 0x132b: 0x403e2020,\n\t0x132c: 0x403e2220, 0x132d: 0x403e2420, 0x132e: 0x403e2620, 0x132f: 0x403e2820,\n\t0x1330: 0x403e2a20, 0x1331: 0x403e2c20, 0x1332: 0x403e2e20, 0x1333: 0x403e3020,\n\t0x1334: 0x403e3220, 0x1335: 0x403e3420, 0x1336: 0x403e3620, 0x1337: 0x403e3820,\n\t0x1338: 0x403e4820, 0x1339: 0x403e4a20, 0x133a: 0x403e4c20, 0x133b: 0x403e4e20,\n\t0x133c: 0x403e5020, 0x133d: 0x403e5220, 0x133e: 0x403e5420, 0x133f: 0x403e5620,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x403e5a20, 0x1341: 0x403e5c20, 0x1342: 0x403e5e20, 0x1343: 0x403e6020,\n\t0x1344: 0x403e6220, 0x1345: 0x403e6420, 0x1346: 0x403e6620, 0x1347: 0x403e6820,\n\t0x1348: 0x403e6c20, 0x1349: 0x403e6e20, 0x134a: 0x403e7020, 0x134b: 0x403e7220,\n\t0x134c: 0x403e7420, 0x134d: 0x403e7620, 0x134e: 0x403e7820, 0x134f: 0x403e7a20,\n\t0x1350: 0x403e7c20, 0x1352: 0x403e7e20, 0x1353: 0x403e8020,\n\t0x1354: 0x403e8220, 0x1355: 0x403e8420,\n\t0x1358: 0x403e8620, 0x1359: 0x403e8820, 0x135a: 0x403e8a20, 0x135b: 0x403e8c20,\n\t0x135c: 0x403e8e20, 0x135d: 0x403e9020, 0x135e: 0x403e9220, 0x135f: 0x403e9420,\n\t0x1360: 0x403e9e20, 0x1361: 0x403ea020, 0x1362: 0x403ea220, 0x1363: 0x403ea420,\n\t0x1364: 0x403ea620, 0x1365: 0x403ea820, 0x1366: 0x403eaa20, 0x1367: 0x403eac20,\n\t0x1368: 0x403eb020, 0x1369: 0x403eb220, 0x136a: 0x403eb420, 0x136b: 0x403eb620,\n\t0x136c: 0x403eb820, 0x136d: 0x403eba20, 0x136e: 0x403ebc20, 0x136f: 0x403ebe20,\n\t0x1370: 0x403ed020, 0x1371: 0x403ed220, 0x1372: 0x403ed420, 0x1373: 0x403ed620,\n\t0x1374: 0x403ed820, 0x1375: 0x403eda20, 0x1376: 0x403edc20, 0x1377: 0x403ede20,\n\t0x1378: 0x403ee220, 0x1379: 0x403ee420, 0x137a: 0x403ee620, 0x137b: 0x403ee820,\n\t0x137c: 0x403eea20, 0x137d: 0x403eec20, 0x137e: 0x403eee20, 0x137f: 0x403ef020,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x403f0020, 0x1381: 0x403f0220, 0x1382: 0x403f0420, 0x1383: 0x403f0620,\n\t0x1384: 0x403f0820, 0x1385: 0x403f0a20, 0x1386: 0x403f0c20, 0x1387: 0x403f0e20,\n\t0x1388: 0x403f1020, 0x1389: 0x403f1220, 0x138a: 0x403f1420, 0x138b: 0x403f1620,\n\t0x138c: 0x403f1820, 0x138d: 0x403f1a20, 0x138e: 0x403f1c20, 0x138f: 0x403f1e20,\n\t0x1390: 0x403f2820, 0x1391: 0x403f2a20, 0x1392: 0x403f2c20, 0x1393: 0x403f2e20,\n\t0x1394: 0x403f3020, 0x1395: 0x403f3220, 0x1396: 0x403f3420, 0x1397: 0x403f3620,\n\t0x1398: 0x403f4220, 0x1399: 0x403f4420, 0x139a: 0x403f4620,\n\t0x139d: 0xae60ee02, 0x139e: 0xae60ed02, 0x139f: 0xae60ec02,\n\t0x13a0: 0x40036220, 0x13a1: 0x40029c20, 0x13a2: 0x4002ee20, 0x13a3: 0x40029e20,\n\t0x13a4: 0x4002a020, 0x13a5: 0x4002a220, 0x13a6: 0x4002a420, 0x13a7: 0x4002d020,\n\t0x13a8: 0x40036420, 0x13a9: 0xe00001f2, 0x13aa: 0xe000030d, 0x13ab: 0xe00003e7,\n\t0x13ac: 0xe00004c2, 0x13ad: 0xe000058c, 0x13ae: 0xe0000657, 0x13af: 0xe00006ff,\n\t0x13b0: 0xe00007ab, 0x13b1: 0xe0000850, 0x13b2: 0x40286620, 0x13b3: 0x40286820,\n\t0x13b4: 0x40286a20, 0x13b5: 0x40286c20, 0x13b6: 0x40286e20, 0x13b7: 0x40287020,\n\t0x13b8: 0x40287220, 0x13b9: 0x40287420, 0x13ba: 0x40287620, 0x13bb: 0x40287820,\n\t0x13bc: 0x40287a20,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x403c7020, 0x13c1: 0x403c7220, 0x13c2: 0x403c7420, 0x13c3: 0x403c7620,\n\t0x13c4: 0x403d0e20, 0x13c5: 0x403d1020, 0x13c6: 0x403d1220, 0x13c7: 0x403d1420,\n\t0x13c8: 0x403f2020, 0x13c9: 0x403f2220, 0x13ca: 0x403f2420, 0x13cb: 0x403f2620,\n\t0x13cc: 0x403f3820, 0x13cd: 0x403f3a20, 0x13ce: 0x403f3c20, 0x13cf: 0x403f3e20,\n\t0x13d0: 0x4006a620, 0x13d1: 0x4006a820, 0x13d2: 0x4006aa20, 0x13d3: 0x4006ac20,\n\t0x13d4: 0x4006ae20, 0x13d5: 0x4006b020, 0x13d6: 0x4006b220, 0x13d7: 0x4006b420,\n\t0x13d8: 0x4006b620, 0x13d9: 0x4006b820,\n\t0x13e0: 0x40547620, 0x13e1: 0x40547820, 0x13e2: 0x40547a20, 0x13e3: 0x40547c20,\n\t0x13e4: 0x40547e20, 0x13e5: 0x40548020, 0x13e6: 0x40548220, 0x13e7: 0x40548420,\n\t0x13e8: 0x40548620, 0x13e9: 0x40548820, 0x13ea: 0x40548a20, 0x13eb: 0x40548c20,\n\t0x13ec: 0x40548e20, 0x13ed: 0x40549020, 0x13ee: 0x40549220, 0x13ef: 0x40549420,\n\t0x13f0: 0x40549620, 0x13f1: 0x40549820, 0x13f2: 0x40549a20, 0x13f3: 0x40549c20,\n\t0x13f4: 0x40549e20, 0x13f5: 0x4054a020, 0x13f6: 0x4054a220, 0x13f7: 0x4054a420,\n\t0x13f8: 0x4054a620, 0x13f9: 0x4054a820, 0x13fa: 0x4054aa20, 0x13fb: 0x4054ac20,\n\t0x13fc: 0x4054ae20, 0x13fd: 0x4054b020, 0x13fe: 0x4054b220, 0x13ff: 0x4054b420,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x4054b620, 0x1401: 0x4054b820, 0x1402: 0x4054ba20, 0x1403: 0x4054bc20,\n\t0x1404: 0x4054be20, 0x1405: 0x4054c020, 0x1406: 0x4054c220, 0x1407: 0x4054c420,\n\t0x1408: 0x4054c620, 0x1409: 0x4054c820, 0x140a: 0x4054ca20, 0x140b: 0x4054cc20,\n\t0x140c: 0x4054ce20, 0x140d: 0x4054d020, 0x140e: 0x4054d220, 0x140f: 0x4054d420,\n\t0x1410: 0x4054d620, 0x1411: 0x4054d820, 0x1412: 0x4054da20, 0x1413: 0x4054dc20,\n\t0x1414: 0x4054de20, 0x1415: 0x4054e020, 0x1416: 0x4054e220, 0x1417: 0x4054e420,\n\t0x1418: 0x4054e620, 0x1419: 0x4054e820, 0x141a: 0x4054ea20, 0x141b: 0x4054ec20,\n\t0x141c: 0x4054ee20, 0x141d: 0x4054f020, 0x141e: 0x4054f220, 0x141f: 0x4054f420,\n\t0x1420: 0x4054f620, 0x1421: 0x4054f820, 0x1422: 0x4054fa20, 0x1423: 0x4054fc20,\n\t0x1424: 0x4054fe20, 0x1425: 0x40550020, 0x1426: 0x40550220, 0x1427: 0x40550420,\n\t0x1428: 0x40550620, 0x1429: 0x40550820, 0x142a: 0x40550a20, 0x142b: 0x40550c20,\n\t0x142c: 0x40550e20, 0x142d: 0x40551020, 0x142e: 0x40551220, 0x142f: 0x40551420,\n\t0x1430: 0x40551620, 0x1431: 0x40551820, 0x1432: 0x40551a20, 0x1433: 0x40551c20,\n\t0x1434: 0x40551e20,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x40021e20, 0x1441: 0x40552020, 0x1442: 0x40552220, 0x1443: 0x40552420,\n\t0x1444: 0x40552620, 0x1445: 0x40552820, 0x1446: 0x40552a20, 0x1447: 0x40552c20,\n\t0x1448: 0x40552e20, 0x1449: 0x40553020, 0x144a: 0x40553220, 0x144b: 0x40553420,\n\t0x144c: 0x40553620, 0x144d: 0x40553820, 0x144e: 0x40553a20, 0x144f: 0x40553c20,\n\t0x1450: 0x40553e20, 0x1451: 0x40554020, 0x1452: 0x40554220, 0x1453: 0x40554420,\n\t0x1454: 0x40554620, 0x1455: 0x40554820, 0x1456: 0x40554a20, 0x1457: 0x40554c20,\n\t0x1458: 0x40554e20, 0x1459: 0x40555020, 0x145a: 0x40555220, 0x145b: 0x40555420,\n\t0x145c: 0x40555620, 0x145d: 0x40555820, 0x145e: 0x40555a20, 0x145f: 0x40555c20,\n\t0x1460: 0x40555e20, 0x1461: 0x40556020, 0x1462: 0x40556220, 0x1463: 0x40556420,\n\t0x1464: 0x40556620, 0x1465: 0x40556820, 0x1466: 0x40556a20, 0x1467: 0x40556c20,\n\t0x1468: 0x40556e20, 0x1469: 0x40557020, 0x146a: 0x40557220, 0x146b: 0x40557420,\n\t0x146c: 0x40557620, 0x146d: 0x40557820, 0x146e: 0x40557a20, 0x146f: 0x40557c20,\n\t0x1470: 0x40557e20, 0x1471: 0x40558020, 0x1472: 0x40558220, 0x1473: 0x40558420,\n\t0x1474: 0x40558620, 0x1475: 0x40558820, 0x1476: 0x40558a20, 0x1477: 0x40558c20,\n\t0x1478: 0x40558e20, 0x1479: 0x40559020, 0x147a: 0x40559220, 0x147b: 0x40559420,\n\t0x147c: 0x40559620, 0x147d: 0x40559820, 0x147e: 0x40559a20, 0x147f: 0x40559c20,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x40559e20, 0x1481: 0x4055a020, 0x1482: 0x4055a220, 0x1483: 0x4055a420,\n\t0x1484: 0x4055a620, 0x1485: 0x4055a820, 0x1486: 0x4055aa20, 0x1487: 0x4055ac20,\n\t0x1488: 0x4055ae20, 0x1489: 0x4055b020, 0x148a: 0x4055b220, 0x148b: 0x4055b420,\n\t0x148c: 0x4055b620, 0x148d: 0x4055b820, 0x148e: 0x4055ba20, 0x148f: 0x4055bc20,\n\t0x1490: 0x4055be20, 0x1491: 0x4055c020, 0x1492: 0x4055c220, 0x1493: 0x4055c420,\n\t0x1494: 0x4055c620, 0x1495: 0x4055c820, 0x1496: 0x4055ca20, 0x1497: 0x4055cc20,\n\t0x1498: 0x4055ce20, 0x1499: 0x4055d020, 0x149a: 0x4055d220, 0x149b: 0x4055d420,\n\t0x149c: 0x4055d620, 0x149d: 0x4055d820, 0x149e: 0x4055da20, 0x149f: 0x4055dc20,\n\t0x14a0: 0x4055de20, 0x14a1: 0x4055e020, 0x14a2: 0x4055e220, 0x14a3: 0x4055e420,\n\t0x14a4: 0x4055e620, 0x14a5: 0x4055e820, 0x14a6: 0x4055ea20, 0x14a7: 0x4055ec20,\n\t0x14a8: 0x4055ee20, 0x14a9: 0x4055f020, 0x14aa: 0x4055f220, 0x14ab: 0x4055f420,\n\t0x14ac: 0x4055f620, 0x14ad: 0x4055f820, 0x14ae: 0x4055fa20, 0x14af: 0x4055fc20,\n\t0x14b0: 0x4055fe20, 0x14b1: 0x40560020, 0x14b2: 0x40560220, 0x14b3: 0x40560420,\n\t0x14b4: 0x40560620, 0x14b5: 0x40560820, 0x14b6: 0x40560a20, 0x14b7: 0x40560c20,\n\t0x14b8: 0x40560e20, 0x14b9: 0x40561020, 0x14ba: 0x40561220, 0x14bb: 0x40561420,\n\t0x14bc: 0x40561620, 0x14bd: 0x40561820, 0x14be: 0x40561a20, 0x14bf: 0x40561c20,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x40561e20, 0x14c1: 0x40562020, 0x14c2: 0x40562220, 0x14c3: 0x40562420,\n\t0x14c4: 0x40562620, 0x14c5: 0x40562820, 0x14c6: 0x40562a20, 0x14c7: 0x40562c20,\n\t0x14c8: 0x40562e20, 0x14c9: 0x40563020, 0x14ca: 0x40563220, 0x14cb: 0x40563420,\n\t0x14cc: 0x40563620, 0x14cd: 0x40563820, 0x14ce: 0x40563a20, 0x14cf: 0x40563c20,\n\t0x14d0: 0x40563e20, 0x14d1: 0x40564020, 0x14d2: 0x40564220, 0x14d3: 0x40564420,\n\t0x14d4: 0x40564620, 0x14d5: 0x40564820, 0x14d6: 0x40564a20, 0x14d7: 0x40564c20,\n\t0x14d8: 0x40564e20, 0x14d9: 0x40565020, 0x14da: 0x40565220, 0x14db: 0x40565420,\n\t0x14dc: 0x40565620, 0x14dd: 0x40565820, 0x14de: 0x40565a20, 0x14df: 0x40565c20,\n\t0x14e0: 0x40565e20, 0x14e1: 0x40566020, 0x14e2: 0x40566220, 0x14e3: 0x40566420,\n\t0x14e4: 0x40566620, 0x14e5: 0x40566820, 0x14e6: 0x40566a20, 0x14e7: 0x40566c20,\n\t0x14e8: 0x40566e20, 0x14e9: 0x40567020, 0x14ea: 0x40567220, 0x14eb: 0x40567420,\n\t0x14ec: 0x40567620, 0x14ed: 0x40567820, 0x14ee: 0x40567a20, 0x14ef: 0x40567c20,\n\t0x14f0: 0x40567e20, 0x14f1: 0x40568020, 0x14f2: 0x40568220, 0x14f3: 0x40568420,\n\t0x14f4: 0x40568620, 0x14f5: 0x40568820, 0x14f6: 0x40568a20, 0x14f7: 0x40568c20,\n\t0x14f8: 0x40568e20, 0x14f9: 0x40569020, 0x14fa: 0x40569220, 0x14fb: 0x40569420,\n\t0x14fc: 0x40569620, 0x14fd: 0x40569820, 0x14fe: 0x40569a20, 0x14ff: 0x40569c20,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x40569e20, 0x1501: 0x4056a020, 0x1502: 0x4056a220, 0x1503: 0x4056a420,\n\t0x1504: 0x4056a620, 0x1505: 0x4056a820, 0x1506: 0x4056aa20, 0x1507: 0x4056ac20,\n\t0x1508: 0x4056ae20, 0x1509: 0x4056b020, 0x150a: 0x4056b220, 0x150b: 0x4056b420,\n\t0x150c: 0x4056b620, 0x150d: 0x4056b820, 0x150e: 0x4056ba20, 0x150f: 0x4056bc20,\n\t0x1510: 0x4056be20, 0x1511: 0x4056c020, 0x1512: 0x4056c220, 0x1513: 0x4056c420,\n\t0x1514: 0x4056c620, 0x1515: 0x4056c820, 0x1516: 0x4056ca20, 0x1517: 0x4056cc20,\n\t0x1518: 0x4056ce20, 0x1519: 0x4056d020, 0x151a: 0x4056d220, 0x151b: 0x4056d420,\n\t0x151c: 0x4056d620, 0x151d: 0x4056d820, 0x151e: 0x4056da20, 0x151f: 0x4056dc20,\n\t0x1520: 0x4056de20, 0x1521: 0x4056e020, 0x1522: 0x4056e220, 0x1523: 0x4056e420,\n\t0x1524: 0x4056e620, 0x1525: 0x4056e820, 0x1526: 0x4056ea20, 0x1527: 0x4056ec20,\n\t0x1528: 0x4056ee20, 0x1529: 0x4056f020, 0x152a: 0x4056f220, 0x152b: 0x4056f420,\n\t0x152c: 0x4056f620, 0x152d: 0x4056f820, 0x152e: 0x4056fa20, 0x152f: 0x4056fc20,\n\t0x1530: 0x4056fe20, 0x1531: 0x40570020, 0x1532: 0x40570220, 0x1533: 0x40570420,\n\t0x1534: 0x40570620, 0x1535: 0x40570820, 0x1536: 0x40570a20, 0x1537: 0x40570c20,\n\t0x1538: 0x40570e20, 0x1539: 0x40571020, 0x153a: 0x40571220, 0x153b: 0x40571420,\n\t0x153c: 0x40571620, 0x153d: 0x40571820, 0x153e: 0x40571a20, 0x153f: 0x40571c20,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x40571e20, 0x1541: 0x40572020, 0x1542: 0x40572220, 0x1543: 0x40572420,\n\t0x1544: 0x40572620, 0x1545: 0x40572820, 0x1546: 0x40572a20, 0x1547: 0x40572c20,\n\t0x1548: 0x40572e20, 0x1549: 0x40573020, 0x154a: 0x40573220, 0x154b: 0x40573420,\n\t0x154c: 0x40573620, 0x154d: 0x40573820, 0x154e: 0x40573a20, 0x154f: 0x40573c20,\n\t0x1550: 0x40573e20, 0x1551: 0x40574020, 0x1552: 0x40574220, 0x1553: 0x40574420,\n\t0x1554: 0x40574620, 0x1555: 0x40574820, 0x1556: 0x40574a20, 0x1557: 0x40574c20,\n\t0x1558: 0x40574e20, 0x1559: 0x40575020, 0x155a: 0x40575220, 0x155b: 0x40575420,\n\t0x155c: 0x40575620, 0x155d: 0x40575820, 0x155e: 0x40575a20, 0x155f: 0x40575c20,\n\t0x1560: 0x40575e20, 0x1561: 0x40576020, 0x1562: 0x40576220, 0x1563: 0x40576420,\n\t0x1564: 0x40576620, 0x1565: 0x40576820, 0x1566: 0x40576a20, 0x1567: 0x40576c20,\n\t0x1568: 0x40576e20, 0x1569: 0x40577020, 0x156a: 0x40577220, 0x156b: 0x40577420,\n\t0x156c: 0x40577620, 0x156d: 0x40577820, 0x156e: 0x40577a20, 0x156f: 0x40577c20,\n\t0x1570: 0x40577e20, 0x1571: 0x40578020, 0x1572: 0x40578220, 0x1573: 0x40578420,\n\t0x1574: 0x40578620, 0x1575: 0x40578820, 0x1576: 0x40578a20, 0x1577: 0x40578c20,\n\t0x1578: 0x40578e20, 0x1579: 0x40579020, 0x157a: 0x40579220, 0x157b: 0x40579420,\n\t0x157c: 0x40579620, 0x157d: 0x40579820, 0x157e: 0x40579a20, 0x157f: 0x40579c20,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x40579e20, 0x1581: 0x4057a020, 0x1582: 0x4057a220, 0x1583: 0x4057a420,\n\t0x1584: 0x4057a620, 0x1585: 0x4057a820, 0x1586: 0x4057aa20, 0x1587: 0x4057ac20,\n\t0x1588: 0x4057ae20, 0x1589: 0x4057b020, 0x158a: 0x4057b220, 0x158b: 0x4057b420,\n\t0x158c: 0x4057b620, 0x158d: 0x4057b820, 0x158e: 0x4057ba20, 0x158f: 0x4057bc20,\n\t0x1590: 0x4057be20, 0x1591: 0x4057c020, 0x1592: 0x4057c220, 0x1593: 0x4057c420,\n\t0x1594: 0x4057c620, 0x1595: 0x4057c820, 0x1596: 0x4057ca20, 0x1597: 0x4057cc20,\n\t0x1598: 0x4057ce20, 0x1599: 0x4057d020, 0x159a: 0x4057d220, 0x159b: 0x4057d420,\n\t0x159c: 0x4057d620, 0x159d: 0x4057d820, 0x159e: 0x4057da20, 0x159f: 0x4057dc20,\n\t0x15a0: 0x4057de20, 0x15a1: 0x4057e020, 0x15a2: 0x4057e220, 0x15a3: 0x4057e420,\n\t0x15a4: 0x4057e620, 0x15a5: 0x4057e820, 0x15a6: 0x4057ea20, 0x15a7: 0x4057ec20,\n\t0x15a8: 0x4057ee20, 0x15a9: 0x4057f020, 0x15aa: 0x4057f220, 0x15ab: 0x4057f420,\n\t0x15ac: 0x4057f620, 0x15ad: 0x4057f820, 0x15ae: 0x4057fa20, 0x15af: 0x4057fc20,\n\t0x15b0: 0x4057fe20, 0x15b1: 0x40580020, 0x15b2: 0x40580220, 0x15b3: 0x40580420,\n\t0x15b4: 0x40580620, 0x15b5: 0x40580820, 0x15b6: 0x40580a20, 0x15b7: 0x40580c20,\n\t0x15b8: 0x40580e20, 0x15b9: 0x40581020, 0x15ba: 0x40581220, 0x15bb: 0x40581420,\n\t0x15bc: 0x40587a20, 0x15bd: 0x40581620, 0x15be: 0x40581a20, 0x15bf: 0x40581c20,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x40581e20, 0x15c1: 0x40582020, 0x15c2: 0x40582220, 0x15c3: 0x40582420,\n\t0x15c4: 0x40582620, 0x15c5: 0x40582820, 0x15c6: 0x40582a20, 0x15c7: 0x40582c20,\n\t0x15c8: 0x40582e20, 0x15c9: 0x40583020, 0x15ca: 0x40583220, 0x15cb: 0x40583420,\n\t0x15cc: 0x40583620, 0x15cd: 0x40583820, 0x15ce: 0x40583c20, 0x15cf: 0x40583e20,\n\t0x15d0: 0x40584020, 0x15d1: 0x40584220, 0x15d2: 0x40584420, 0x15d3: 0x40584620,\n\t0x15d4: 0x40584820, 0x15d5: 0x40584a20, 0x15d6: 0x40585820, 0x15d7: 0x40585a20,\n\t0x15d8: 0x40585c20, 0x15d9: 0x40585e20, 0x15da: 0x40586020, 0x15db: 0x40586220,\n\t0x15dc: 0x40586420, 0x15dd: 0x40586620, 0x15de: 0x40586820, 0x15df: 0x40586a20,\n\t0x15e0: 0x40586c20, 0x15e1: 0x40586e20, 0x15e2: 0x40587020, 0x15e3: 0x40587220,\n\t0x15e4: 0x40587420, 0x15e5: 0x40587620, 0x15e6: 0x40587820, 0x15e7: 0x40587c20,\n\t0x15e8: 0x40587e20, 0x15e9: 0x40588020, 0x15ea: 0x40588220, 0x15eb: 0x40588420,\n\t0x15ec: 0x40588620, 0x15ed: 0x40588820, 0x15ee: 0x40588a20, 0x15ef: 0x40588c20,\n\t0x15f0: 0x40588e20, 0x15f1: 0x40589020, 0x15f2: 0x40589220, 0x15f3: 0x40589420,\n\t0x15f4: 0x40589620, 0x15f5: 0x40589820, 0x15f6: 0x40589a20, 0x15f7: 0x40589c20,\n\t0x15f8: 0x40589e20, 0x15f9: 0x4058a020, 0x15fa: 0x4058a220, 0x15fb: 0x4058a420,\n\t0x15fc: 0x4058a620, 0x15fd: 0x4058a820, 0x15fe: 0x4058aa20, 0x15ff: 0x4058ac20,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x4058ae20, 0x1601: 0x4058b020, 0x1602: 0x4058b220, 0x1603: 0x4058b420,\n\t0x1604: 0x4058b620, 0x1605: 0x4058b820, 0x1606: 0x4058ba20, 0x1607: 0x4058bc20,\n\t0x1608: 0x4058be20, 0x1609: 0x4058c020, 0x160a: 0x4058c220, 0x160b: 0x4058c420,\n\t0x160c: 0x4058c620, 0x160d: 0x4058c820, 0x160e: 0x4058ca20, 0x160f: 0x4058cc20,\n\t0x1610: 0x4058ce20, 0x1611: 0x4058d020, 0x1612: 0x4058d220, 0x1613: 0x4058d420,\n\t0x1614: 0x4058d620, 0x1615: 0x4058d820, 0x1616: 0x4058da20, 0x1617: 0x4058dc20,\n\t0x1618: 0x4058de20, 0x1619: 0x4058e020, 0x161a: 0x4058e220, 0x161b: 0x4058e420,\n\t0x161c: 0x4058e620, 0x161d: 0x4058e820, 0x161e: 0x4058ea20, 0x161f: 0x4058ec20,\n\t0x1620: 0x4058ee20, 0x1621: 0x4058f020, 0x1622: 0x4058f220, 0x1623: 0x4058f420,\n\t0x1624: 0x4058f620, 0x1625: 0x4058f820, 0x1626: 0x4058fa20, 0x1627: 0x4058fc20,\n\t0x1628: 0x4058fe20, 0x1629: 0x40590020, 0x162a: 0x40590220, 0x162b: 0x40590420,\n\t0x162c: 0x40590620, 0x162d: 0x40590820, 0x162e: 0x40590a20, 0x162f: 0x40590c20,\n\t0x1630: 0x40590e20, 0x1631: 0x40591020, 0x1632: 0x40591220, 0x1633: 0x40591420,\n\t0x1634: 0x40591620, 0x1635: 0x40591820, 0x1636: 0x40591a20, 0x1637: 0x40591c20,\n\t0x1638: 0x40591e20, 0x1639: 0x40592020, 0x163a: 0x40592220, 0x163b: 0x40592420,\n\t0x163c: 0x40592620, 0x163d: 0x40592820, 0x163e: 0x40592a20, 0x163f: 0x40592c20,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x40592e20, 0x1641: 0x40593020, 0x1642: 0x40593220, 0x1643: 0x40593420,\n\t0x1644: 0x40593620, 0x1645: 0x40593820, 0x1646: 0x40593a20, 0x1647: 0x40593c20,\n\t0x1648: 0x40593e20, 0x1649: 0x40594020, 0x164a: 0x40594220, 0x164b: 0x40594420,\n\t0x164c: 0x40594620, 0x164d: 0x40594820, 0x164e: 0x40594a20, 0x164f: 0x40594c20,\n\t0x1650: 0x40594e20, 0x1651: 0x40595020, 0x1652: 0x40595220, 0x1653: 0x40595420,\n\t0x1654: 0x40595620, 0x1655: 0x40595820, 0x1656: 0x40595a20, 0x1657: 0x40595c20,\n\t0x1658: 0x40595e20, 0x1659: 0x40596020, 0x165a: 0x40596220, 0x165b: 0x40596420,\n\t0x165c: 0x40596620, 0x165d: 0x40596820, 0x165e: 0x40596a20, 0x165f: 0x40596c20,\n\t0x1660: 0x40596e20, 0x1661: 0x40597020, 0x1662: 0x40597220, 0x1663: 0x40597420,\n\t0x1664: 0x40597620, 0x1665: 0x40597820, 0x1666: 0x40597a20, 0x1667: 0x40597c20,\n\t0x1668: 0x40597e20, 0x1669: 0x40598020, 0x166a: 0x40598220, 0x166b: 0x40598420,\n\t0x166c: 0x40598620, 0x166d: 0x40598820, 0x166e: 0x40598a20, 0x166f: 0x40598c20,\n\t0x1670: 0x40598e20, 0x1671: 0x40599020, 0x1672: 0x40599220, 0x1673: 0x40599420,\n\t0x1674: 0x40599620, 0x1675: 0x40599820, 0x1676: 0x40599a20, 0x1677: 0x40599c20,\n\t0x1678: 0x40599e20, 0x1679: 0x4059a020, 0x167a: 0x4059a220, 0x167b: 0x4059a420,\n\t0x167c: 0x4059a620, 0x167d: 0x4059a820, 0x167e: 0x4059aa20, 0x167f: 0x4059ac20,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x4059ae20, 0x1681: 0x4059b020, 0x1682: 0x4059b220, 0x1683: 0x4059b420,\n\t0x1684: 0x4059b620, 0x1685: 0x4059b820, 0x1686: 0x4059ba20, 0x1687: 0x4059bc20,\n\t0x1688: 0x4059be20, 0x1689: 0x4059c020, 0x168a: 0x4059c220, 0x168b: 0x4059c420,\n\t0x168c: 0x4059c620, 0x168d: 0x4059c820, 0x168e: 0x4059ca20, 0x168f: 0x4059cc20,\n\t0x1690: 0x4059ce20, 0x1691: 0x4059d020, 0x1692: 0x4059d220, 0x1693: 0x4059d420,\n\t0x1694: 0x4059d620, 0x1695: 0x4059d820, 0x1696: 0x4059da20, 0x1697: 0x4059dc20,\n\t0x1698: 0x4059de20, 0x1699: 0x4059e020, 0x169a: 0x4059e220, 0x169b: 0x4059e420,\n\t0x169c: 0x4059e620, 0x169d: 0x4059e820, 0x169e: 0x4059ea20, 0x169f: 0x4059ec20,\n\t0x16a0: 0x4059ee20, 0x16a1: 0x4059f020, 0x16a2: 0x4059f220, 0x16a3: 0x4059f420,\n\t0x16a4: 0x4059f620, 0x16a5: 0x4059f820, 0x16a6: 0x4059fa20, 0x16a7: 0x4059fc20,\n\t0x16a8: 0x4059fe20, 0x16a9: 0x405a0020, 0x16aa: 0x405a0220, 0x16ab: 0x405a0420,\n\t0x16ac: 0x405a0620, 0x16ad: 0x4005d420, 0x16ae: 0x4002f420, 0x16af: 0x40581820,\n\t0x16b0: 0x40583a20, 0x16b1: 0x40584c20, 0x16b2: 0x40584e20, 0x16b3: 0x40585020,\n\t0x16b4: 0x40585220, 0x16b5: 0x40585420, 0x16b6: 0x40585620, 0x16b7: 0x405a0820,\n\t0x16b8: 0x405a0a20, 0x16b9: 0x405a0c20, 0x16ba: 0x405a0e20, 0x16bb: 0x405a1020,\n\t0x16bc: 0x405a1220, 0x16bd: 0x405a1420, 0x16be: 0x405a1620, 0x16bf: 0x405a1820,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x00021284, 0x16c1: 0x405aa620, 0x16c2: 0x405aa820, 0x16c3: 0x405aaa20,\n\t0x16c4: 0x405aac20, 0x16c5: 0x405aae20, 0x16c6: 0x405ab020, 0x16c7: 0x405ab220,\n\t0x16c8: 0x405ab420, 0x16c9: 0x405ab620, 0x16ca: 0x405ab820, 0x16cb: 0x405aba20,\n\t0x16cc: 0x405abc20, 0x16cd: 0x405abe20, 0x16ce: 0x405ac020, 0x16cf: 0x405ac220,\n\t0x16d0: 0x405ac420, 0x16d1: 0x405ac620, 0x16d2: 0x405ac820, 0x16d3: 0x405aca20,\n\t0x16d4: 0x405acc20, 0x16d5: 0x405ace20, 0x16d6: 0x405ad020, 0x16d7: 0x405ad220,\n\t0x16d8: 0x405ad420, 0x16d9: 0x405ad620, 0x16da: 0x405ad820, 0x16db: 0x40040820,\n\t0x16dc: 0x40040a20,\n\t0x16e0: 0x405ada20, 0x16e1: 0xe000202d, 0x16e2: 0x405adc20, 0x16e3: 0x405b1420,\n\t0x16e4: 0xe0002030, 0x16e5: 0xe0002033, 0x16e6: 0x405ade20, 0x16e7: 0xe0002036,\n\t0x16e8: 0x405ae020, 0x16e9: 0xe000203c, 0x16ea: 0x405b1020, 0x16eb: 0x405b1220,\n\t0x16ec: 0xe000203f, 0x16ed: 0xe0002042, 0x16ee: 0xe0002045, 0x16ef: 0x405ae220,\n\t0x16f0: 0x405ae420, 0x16f1: 0x405ae620, 0x16f2: 0x405ae820, 0x16f3: 0xe0002048,\n\t0x16f4: 0xe000204b, 0x16f5: 0xe000204e, 0x16f6: 0xe0002051, 0x16f7: 0x405aea20,\n\t0x16f8: 0x405b1a20, 0x16f9: 0x405aec20, 0x16fa: 0x405aee20, 0x16fb: 0xe0002057,\n\t0x16fc: 0xe000205a, 0x16fd: 0xe000205d, 0x16fe: 0x405af020, 0x16ff: 0xe0002060,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0xe0002063, 0x1701: 0x405af220, 0x1702: 0xe0002066, 0x1703: 0x405af420,\n\t0x1704: 0xe0002069, 0x1705: 0x405af620, 0x1706: 0xe000206c, 0x1707: 0x405af820,\n\t0x1708: 0x405afa20, 0x1709: 0x405afc20, 0x170a: 0x405afe20, 0x170b: 0xe0002075,\n\t0x170c: 0xe000207b, 0x170d: 0xe000207e, 0x170e: 0xe0002081, 0x170f: 0x405b0020,\n\t0x1710: 0xe0002084, 0x1711: 0xe0002087, 0x1712: 0x405b0220, 0x1713: 0xe000208a,\n\t0x1714: 0xe000208d, 0x1715: 0xe0002072, 0x1716: 0x405b0420, 0x1717: 0x405b0620,\n\t0x1718: 0xe0002090, 0x1719: 0xe0002093, 0x171a: 0x405b0820, 0x171b: 0xe000209b,\n\t0x171c: 0x405b0a20, 0x171d: 0xe000209e, 0x171e: 0x405b0c20, 0x171f: 0x405b0e20,\n\t0x1720: 0x405b1620, 0x1721: 0x405b1e20, 0x1722: 0x405b2020, 0x1723: 0x405b1820,\n\t0x1724: 0x405b1c20, 0x1725: 0x405b2220, 0x1726: 0x405b2420, 0x1727: 0xe00020a1,\n\t0x1728: 0xe00020a4, 0x1729: 0xe0002054, 0x172a: 0xe0002078, 0x172b: 0x4002b220,\n\t0x172c: 0x4002b420, 0x172d: 0x4002b620, 0x172e: 0xe000206f, 0x172f: 0xe0002096,\n\t0x1730: 0xe0002039,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x404c7620, 0x1741: 0x404c7820, 0x1742: 0x404c7a20, 0x1743: 0x404c7c20,\n\t0x1744: 0x404c7e20, 0x1745: 0x404c8020, 0x1746: 0x404c8220, 0x1747: 0x404c8420,\n\t0x1748: 0x404c8620, 0x1749: 0x404c8820, 0x174a: 0x404c8a20, 0x174b: 0x404c8c20,\n\t0x174c: 0x404c8e20, 0x174e: 0x404c9020, 0x174f: 0x404c9220,\n\t0x1750: 0x404c9420, 0x1751: 0x404c9620, 0x1752: 0x404c9820, 0x1753: 0x404c9a20,\n\t0x1754: 0x8209264e,\n\t0x1760: 0x404c9e20, 0x1761: 0x404ca020, 0x1762: 0x404ca220, 0x1763: 0x404ca420,\n\t0x1764: 0x404ca620, 0x1765: 0x404ca820, 0x1766: 0x404caa20, 0x1767: 0x404cac20,\n\t0x1768: 0x404cae20, 0x1769: 0x404cb020, 0x176a: 0x404cb220, 0x176b: 0x404cb420,\n\t0x176c: 0x404cb620, 0x176d: 0x404cb820, 0x176e: 0x404cba20, 0x176f: 0x404cbc20,\n\t0x1770: 0x404cbe20, 0x1771: 0x404cc020, 0x1772: 0x404cc220, 0x1773: 0x404cc420,\n\t0x1774: 0x82092663, 0x1775: 0x40031c20, 0x1776: 0x40031e20,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x404cc820, 0x1781: 0x404cca20, 0x1782: 0x404ccc20, 0x1783: 0x404cce20,\n\t0x1784: 0x404cd020, 0x1785: 0x404cd220, 0x1786: 0x404cd420, 0x1787: 0x404cd620,\n\t0x1788: 0x404cd820, 0x1789: 0x404cda20, 0x178a: 0x404cdc20, 0x178b: 0x404cde20,\n\t0x178c: 0x404ce020, 0x178d: 0x404ce220, 0x178e: 0x404ce420, 0x178f: 0x404ce620,\n\t0x1790: 0x404ce820, 0x1791: 0x404cea20, 0x1792: 0x404cec20, 0x1793: 0x404cee20,\n\t0x17a0: 0x404cf020, 0x17a1: 0x404cf220, 0x17a2: 0x404cf420, 0x17a3: 0x404cf620,\n\t0x17a4: 0x404cf820, 0x17a5: 0x404cfa20, 0x17a6: 0x404cfc20, 0x17a7: 0x404cfe20,\n\t0x17a8: 0x404d0020, 0x17a9: 0x404d0220, 0x17aa: 0x404d0420, 0x17ab: 0x404d0620,\n\t0x17ac: 0x404d0820, 0x17ae: 0x404d0a20, 0x17af: 0x404d0c20,\n\t0x17b0: 0x404d0e20, 0x17b2: 0x404d1020, 0x17b3: 0x404d1220,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x404fa420, 0x17c1: 0x404fa620, 0x17c2: 0x404fa820, 0x17c3: 0x404faa20,\n\t0x17c4: 0x404fac20, 0x17c5: 0x404fae20, 0x17c6: 0x404fb020, 0x17c7: 0x404fb220,\n\t0x17c8: 0x404fb420, 0x17c9: 0x404fb620, 0x17ca: 0x404fb820, 0x17cb: 0x404fba20,\n\t0x17cc: 0x404fbc20, 0x17cd: 0x404fbe20, 0x17ce: 0x404fc020, 0x17cf: 0x404fc220,\n\t0x17d0: 0x404fc420, 0x17d1: 0x404fc620, 0x17d2: 0x404fc820, 0x17d3: 0x404fca20,\n\t0x17d4: 0x404fcc20, 0x17d5: 0x404fce20, 0x17d6: 0x404fd020, 0x17d7: 0x404fd220,\n\t0x17d8: 0x404fd420, 0x17d9: 0x404fd620, 0x17da: 0x404fd820, 0x17db: 0x404fda20,\n\t0x17dc: 0x404fdc20, 0x17dd: 0x404fde20, 0x17de: 0x404fe020, 0x17df: 0x404fe220,\n\t0x17e0: 0x404fe420, 0x17e1: 0x404fe620, 0x17e2: 0x404fe820, 0x17e3: 0x404fec20,\n\t0x17e4: 0x404fee20, 0x17e5: 0x404ff020, 0x17e6: 0x404ff220, 0x17e7: 0x404ff420,\n\t0x17e8: 0x404ff620, 0x17e9: 0x404ff820, 0x17ea: 0x404ffa20, 0x17eb: 0x404ffc20,\n\t0x17ec: 0x404ffe20, 0x17ed: 0x40500020, 0x17ee: 0x40500220, 0x17ef: 0x40500420,\n\t0x17f0: 0x40500620, 0x17f1: 0x40500820, 0x17f2: 0x40500a20, 0x17f3: 0x40500c20,\n\t0x17f4: 0xa0000000, 0x17f5: 0xa0000000, 0x17f6: 0x40500e20, 0x17f7: 0x40501020,\n\t0x17f8: 0x40501220, 0x17f9: 0x40501420, 0x17fa: 0x40501620, 0x17fb: 0x40501820,\n\t0x17fc: 0x40501a20, 0x17fd: 0x40501c20, 0x17fe: 0x40501e20, 0x17ff: 0x40502020,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x40502220, 0x1801: 0x40502420, 0x1802: 0x40502620, 0x1803: 0x40502820,\n\t0x1804: 0x40502a20, 0x1805: 0x40502c20, 0x1806: 0xa000f302, 0x1807: 0xa000f402,\n\t0x1808: 0xa0011402, 0x1809: 0xa0011502, 0x180a: 0xa0011602, 0x180b: 0xa0005f02,\n\t0x180c: 0xa0005f02, 0x180d: 0xa0005f02, 0x180e: 0xa0005f02, 0x180f: 0xa0005f02,\n\t0x1810: 0xa0005f02, 0x1811: 0xa0005f02, 0x1812: 0x82092817, 0x1813: 0xa0000000,\n\t0x1814: 0x40032620, 0x1815: 0x40032820, 0x1816: 0x4002ac20, 0x1817: 0x4027bc20,\n\t0x1818: 0x4005bc20, 0x1819: 0x4005be20, 0x181a: 0x4005c020, 0x181b: 0x4027f620,\n\t0x181c: 0x404fea20, 0x181d: 0xae605f02,\n\t0x1820: 0xe00001b5, 0x1821: 0xe0000249, 0x1822: 0xe0000361, 0x1823: 0xe000043b,\n\t0x1824: 0xe0000510, 0x1825: 0xe00005da, 0x1826: 0xe00006a5, 0x1827: 0xe000074d,\n\t0x1828: 0xe00007f9, 0x1829: 0xe000089e,\n\t0x1830: 0xe00001b8, 0x1831: 0xe000024c, 0x1832: 0xe0000364, 0x1833: 0xe000043e,\n\t0x1834: 0xe0000513, 0x1835: 0xe00005dd, 0x1836: 0xe00006a8, 0x1837: 0xe0000750,\n\t0x1838: 0xe00007fc, 0x1839: 0xe00008a1,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x40056a20, 0x1841: 0x4002e620, 0x1842: 0x40025220, 0x1843: 0x4002f020,\n\t0x1844: 0x4002a620, 0x1845: 0x4002a820, 0x1846: 0x40022220, 0x1847: 0x40022420,\n\t0x1848: 0x40025420, 0x1849: 0x4002f220, 0x184a: 0xa0000000, 0x184b: 0xa0000000,\n\t0x184c: 0xa0000000, 0x184d: 0xa0000000, 0x184e: 0x40020c20,\n\t0x1850: 0xe00001c7, 0x1851: 0xe000025b, 0x1852: 0xe0000373, 0x1853: 0xe000044d,\n\t0x1854: 0xe0000522, 0x1855: 0xe00005ec, 0x1856: 0xe00006b7, 0x1857: 0xe000075f,\n\t0x1858: 0xe000080b, 0x1859: 0xe00008b0,\n\t0x1860: 0x40533820, 0x1861: 0x40533c20, 0x1862: 0x40534220, 0x1863: 0x40534e20,\n\t0x1864: 0x40535220, 0x1865: 0x40535820, 0x1866: 0x40535c20, 0x1867: 0x40536220,\n\t0x1868: 0x40536420, 0x1869: 0x40536620, 0x186a: 0x40537020, 0x186b: 0x40537420,\n\t0x186c: 0x40537a20, 0x186d: 0x40537e20, 0x186e: 0x40538820, 0x186f: 0x40538c20,\n\t0x1870: 0x40538e20, 0x1871: 0x40539020, 0x1872: 0x40539e20, 0x1873: 0x4053a420,\n\t0x1874: 0x4053aa20, 0x1875: 0x4053b420, 0x1876: 0x4053bc20, 0x1877: 0x4053c220,\n\t0x1878: 0x4053c620, 0x1879: 0x4053ca20, 0x187a: 0x4053d020, 0x187b: 0x4053da20,\n\t0x187c: 0x4053dc20, 0x187d: 0x4053e220, 0x187e: 0x4053ea20, 0x187f: 0x4053f020,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x4053f220, 0x1881: 0x4053f420, 0x1882: 0x4053f620, 0x1883: 0x40533620,\n\t0x1884: 0x40533e20, 0x1885: 0x40534420, 0x1886: 0x40535020, 0x1887: 0x40535420,\n\t0x1888: 0x40535a20, 0x1889: 0x40535e20, 0x188a: 0x40536820, 0x188b: 0x40537220,\n\t0x188c: 0x40537620, 0x188d: 0x40537c20, 0x188e: 0x40538020, 0x188f: 0x40538a20,\n\t0x1890: 0x4053a020, 0x1891: 0x4053a620, 0x1892: 0x4053ac20, 0x1893: 0x4053b620,\n\t0x1894: 0x4053de20, 0x1895: 0x4053be20, 0x1896: 0x4053c820, 0x1897: 0x4053d220,\n\t0x1898: 0x4053e620, 0x1899: 0x4053ec20, 0x189a: 0x4053f820, 0x189b: 0x4053fa20,\n\t0x189c: 0x4053b020, 0x189d: 0x40534020, 0x189e: 0x40534620, 0x189f: 0x40534c20,\n\t0x18a0: 0x40536020, 0x18a1: 0x40535620, 0x18a2: 0x40536a20, 0x18a3: 0x4053d420,\n\t0x18a4: 0x40538220, 0x18a5: 0x40538620, 0x18a6: 0x40537820, 0x18a7: 0x40539220,\n\t0x18a8: 0x4053a220, 0x18a9: 0x4053a820, 0x18aa: 0x4053b820, 0x18ab: 0x4053cc20,\n\t0x18ac: 0x4053e820, 0x18ad: 0x4053ee20, 0x18ae: 0x4053e020, 0x18af: 0x4053e420,\n\t0x18b0: 0x4053fc20, 0x18b1: 0x4053ae20, 0x18b2: 0x4053c020, 0x18b3: 0x40534820,\n\t0x18b4: 0x4053d620, 0x18b5: 0x4053c420, 0x18b6: 0x4053ce20, 0x18b7: 0x4053ba20,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x40532820, 0x18c1: 0x40532a20, 0x18c2: 0x40532c20, 0x18c3: 0x40532e20,\n\t0x18c4: 0x40533020, 0x18c5: 0x40533220, 0x18c6: 0x40533420, 0x18c7: 0x40533a20,\n\t0x18c8: 0x40534a20, 0x18c9: 0x4053d820, 0x18ca: 0x40536c20, 0x18cb: 0x4053b220,\n\t0x18cc: 0x4053fe20, 0x18cd: 0x40540220, 0x18ce: 0x40540420, 0x18cf: 0x40540820,\n\t0x18d0: 0x40540a20, 0x18d1: 0x40541020, 0x18d2: 0x40541420, 0x18d3: 0x40541620,\n\t0x18d4: 0x40541a20, 0x18d5: 0x40541e20, 0x18d6: 0x40542220, 0x18d7: 0x40542420,\n\t0x18d8: 0x40540c20, 0x18d9: 0x40542020, 0x18da: 0x40538420, 0x18db: 0x40536e20,\n\t0x18dc: 0x40539420, 0x18dd: 0x40539620, 0x18de: 0x40540020, 0x18df: 0x40540620,\n\t0x18e0: 0x40540e20, 0x18e1: 0x40541220, 0x18e2: 0x40539820, 0x18e3: 0x40541c20,\n\t0x18e4: 0x40539a20, 0x18e5: 0x40539c20, 0x18e6: 0x40542620, 0x18e7: 0x40542820,\n\t0x18e8: 0x40541820, 0x18e9: 0x82e42a16, 0x18ea: 0x40542a20,\n\t0x18f0: 0x405a1a20, 0x18f1: 0x405a1c20, 0x18f2: 0x405a1e20, 0x18f3: 0x405a2020,\n\t0x18f4: 0x405a2220, 0x18f5: 0x405a2420, 0x18f6: 0x405a2620, 0x18f7: 0x405a2820,\n\t0x18f8: 0x405a2a20, 0x18f9: 0x405a2c20, 0x18fa: 0x405a2e20, 0x18fb: 0x405a3020,\n\t0x18fc: 0x405a3220, 0x18fd: 0x405a3420, 0x18fe: 0x405a3620, 0x18ff: 0x405a3820,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x405a3a20, 0x1901: 0x405a3c20, 0x1902: 0x405a3e20, 0x1903: 0x405a4020,\n\t0x1904: 0x405a4220, 0x1905: 0x405a4420, 0x1906: 0x405a4620, 0x1907: 0x405a4820,\n\t0x1908: 0x405a4a20, 0x1909: 0x405a4c20, 0x190a: 0x405a4e20, 0x190b: 0x405a5020,\n\t0x190c: 0x405a5220, 0x190d: 0x405a5420, 0x190e: 0x405a5620, 0x190f: 0x405a5820,\n\t0x1910: 0x405a5a20, 0x1911: 0x405a5c20, 0x1912: 0x405a5e20, 0x1913: 0x405a6020,\n\t0x1914: 0x405a6220, 0x1915: 0x405a6420, 0x1916: 0x405a6620, 0x1917: 0x405a6820,\n\t0x1918: 0x405a6a20, 0x1919: 0x405a6c20, 0x191a: 0x405a6e20, 0x191b: 0x405a7020,\n\t0x191c: 0x405a7220, 0x191d: 0x405a7420, 0x191e: 0x405a7620, 0x191f: 0x405a7820,\n\t0x1920: 0x405a7a20, 0x1921: 0x405a7c20, 0x1922: 0x405a7e20, 0x1923: 0x405a8020,\n\t0x1924: 0x405a8220, 0x1925: 0x405a8420, 0x1926: 0x405a8620, 0x1927: 0x405a8820,\n\t0x1928: 0x405a8a20, 0x1929: 0x405a8c20, 0x192a: 0x405a8e20, 0x192b: 0x405a9020,\n\t0x192c: 0x405a9220, 0x192d: 0x405a9420, 0x192e: 0x405a9620, 0x192f: 0x405a9820,\n\t0x1930: 0x405a9a20, 0x1931: 0x405a9c20, 0x1932: 0x405a9e20, 0x1933: 0x405aa020,\n\t0x1934: 0x405aa220, 0x1935: 0x405aa420,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x404c1220, 0x1941: 0x404c1420, 0x1942: 0x404c1620, 0x1943: 0x404c1820,\n\t0x1944: 0x404c1a20, 0x1945: 0x404c1c20, 0x1946: 0x404c1e20, 0x1947: 0x404c2020,\n\t0x1948: 0x404c2220, 0x1949: 0x404c2420, 0x194a: 0x404c2620, 0x194b: 0x404c2820,\n\t0x194c: 0x404c2a20, 0x194d: 0x404c2c20, 0x194e: 0x404c2e20, 0x194f: 0x404c3020,\n\t0x1950: 0x404c3220, 0x1951: 0x404c3420, 0x1952: 0x404c3620, 0x1953: 0x404c3820,\n\t0x1954: 0x404c3a20, 0x1955: 0x404c3c20, 0x1956: 0x404c3e20, 0x1957: 0x404c4020,\n\t0x1958: 0x404c4220, 0x1959: 0x404c4420, 0x195a: 0x404c4620, 0x195b: 0x404c4820,\n\t0x195c: 0x404c4a20,\n\t0x1960: 0x404c4c20, 0x1961: 0x404c4e20, 0x1962: 0x404c5020, 0x1963: 0x404c5220,\n\t0x1964: 0x404c5420, 0x1965: 0x404c5620, 0x1966: 0x404c5820, 0x1967: 0x404c5a20,\n\t0x1968: 0x404c5c20, 0x1969: 0x404c5e20, 0x196a: 0x404c6020, 0x196b: 0x404c6220,\n\t0x1970: 0x404c6420, 0x1971: 0x404c6620, 0x1972: 0x404c6820, 0x1973: 0x404c6a20,\n\t0x1974: 0x404c6c20, 0x1975: 0x404c6e20, 0x1976: 0x404c7020, 0x1977: 0x404c7220,\n\t0x1978: 0x404c7420, 0x1979: 0xade11f02, 0x197a: 0xae612002, 0x197b: 0xadc12102,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x4007a620,\n\t0x1984: 0x4002c220, 0x1985: 0x4002d220, 0x1986: 0xe000018e, 0x1987: 0xe000021f,\n\t0x1988: 0xe000033a, 0x1989: 0xe0000414, 0x198a: 0xe00004e9, 0x198b: 0xe00005b3,\n\t0x198c: 0xe000067e, 0x198d: 0xe0000726, 0x198e: 0xe00007d2, 0x198f: 0xe0000877,\n\t0x1990: 0x40503020, 0x1991: 0x40503220, 0x1992: 0x40503420, 0x1993: 0x40503620,\n\t0x1994: 0x40503820, 0x1995: 0x40503a20, 0x1996: 0x40503c20, 0x1997: 0x40503e20,\n\t0x1998: 0x40504020, 0x1999: 0x40504220, 0x199a: 0x40504420, 0x199b: 0x40504620,\n\t0x199c: 0x40504820, 0x199d: 0x40504a20, 0x199e: 0x40504c20, 0x199f: 0x40504e20,\n\t0x19a0: 0x40505020, 0x19a1: 0x40505220, 0x19a2: 0x40505420, 0x19a3: 0x40505620,\n\t0x19a4: 0x40505820, 0x19a5: 0x40505a20, 0x19a6: 0x40505c20, 0x19a7: 0x40505e20,\n\t0x19a8: 0x40506020, 0x19a9: 0x40506220, 0x19aa: 0x40506420, 0x19ab: 0x40506620,\n\t0x19ac: 0x40506820, 0x19ad: 0x40506a20,\n\t0x19b0: 0x40506c20, 0x19b1: 0x40506e20, 0x19b2: 0x40507020, 0x19b3: 0x40507220,\n\t0x19b4: 0x40507420,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x40507620, 0x19c1: 0x40507820, 0x19c2: 0x40507a20, 0x19c3: 0x40507c20,\n\t0x19c4: 0x40507e20, 0x19c5: 0x40508020, 0x19c6: 0x40508220, 0x19c7: 0x40508420,\n\t0x19c8: 0x40508620, 0x19c9: 0x40508820, 0x19ca: 0x40508a20, 0x19cb: 0x40508c20,\n\t0x19cc: 0x40508e20, 0x19cd: 0x40509020, 0x19ce: 0x40509220, 0x19cf: 0x40509420,\n\t0x19d0: 0x40509620, 0x19d1: 0x40509820, 0x19d2: 0x40509a20, 0x19d3: 0x40509c20,\n\t0x19d4: 0x40509e20, 0x19d5: 0x4050a020, 0x19d6: 0x4050a220, 0x19d7: 0x4050a420,\n\t0x19d8: 0x4050a620, 0x19d9: 0x4050a820, 0x19da: 0x4050aa20, 0x19db: 0x4050ac20,\n\t0x19dc: 0x4050ae20, 0x19dd: 0x4050b020, 0x19de: 0x4050b220, 0x19df: 0x4050b420,\n\t0x19e0: 0x4050b620, 0x19e1: 0x4050b820, 0x19e2: 0x4050ba20, 0x19e3: 0x4050bc20,\n\t0x19e4: 0x4050be20, 0x19e5: 0x4050c020, 0x19e6: 0x4050c220, 0x19e7: 0x4050c420,\n\t0x19e8: 0x4050c620, 0x19e9: 0x4050c820, 0x19ea: 0x4050ca20, 0x19eb: 0x4050cc20,\n\t0x19f0: 0x4050ce20, 0x19f1: 0x4050d020, 0x19f2: 0x4050d220, 0x19f3: 0x4050d420,\n\t0x19f4: 0x4050d620, 0x19f5: 0x4050d820, 0x19f6: 0x4050da20, 0x19f7: 0x4050dc20,\n\t0x19f8: 0x4050de20, 0x19f9: 0x4050e020, 0x19fa: 0x4050e220, 0x19fb: 0x4050e420,\n\t0x19fc: 0x4050e620, 0x19fd: 0x4050e820, 0x19fe: 0x4050ea20, 0x19ff: 0x4050ec20,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x4050ee20, 0x1a01: 0x4050f020, 0x1a02: 0x4050f220, 0x1a03: 0x4050f420,\n\t0x1a04: 0x4050f620, 0x1a05: 0x4050f820, 0x1a06: 0x4050fa20, 0x1a07: 0x4050fc20,\n\t0x1a08: 0x4050fe20, 0x1a09: 0x40510020,\n\t0x1a10: 0xe0000191, 0x1a11: 0xe0000222, 0x1a12: 0xe000033d, 0x1a13: 0xe0000417,\n\t0x1a14: 0xe00004ec, 0x1a15: 0xe00005b6, 0x1a16: 0xe0000681, 0x1a17: 0xe0000729,\n\t0x1a18: 0xe00007d5, 0x1a19: 0xe000087a, 0x1a1a: 0xe0000225,\n\t0x1a1e: 0xe0002022, 0x1a1f: 0xe0002025,\n\t0x1a20: 0x4007b220, 0x1a21: 0x4007b420, 0x1a22: 0x4007b620, 0x1a23: 0x4007b820,\n\t0x1a24: 0x4007ba20, 0x1a25: 0x4007bc20, 0x1a26: 0x4007be20, 0x1a27: 0x4007c020,\n\t0x1a28: 0x4007c220, 0x1a29: 0x4007c420, 0x1a2a: 0x4007c620, 0x1a2b: 0x4007c820,\n\t0x1a2c: 0x4007ca20, 0x1a2d: 0x4007cc20, 0x1a2e: 0x4007ce20, 0x1a2f: 0x4007d020,\n\t0x1a30: 0x4007d220, 0x1a31: 0x4007d420, 0x1a32: 0x4007d620, 0x1a33: 0x4007d820,\n\t0x1a34: 0x4007da20, 0x1a35: 0x4007dc20, 0x1a36: 0x4007de20, 0x1a37: 0x4007e020,\n\t0x1a38: 0x4007e220, 0x1a39: 0x4007e420, 0x1a3a: 0x4007e620, 0x1a3b: 0x4007e820,\n\t0x1a3c: 0x4007ea20, 0x1a3d: 0x4007ec20, 0x1a3e: 0x4007ee20, 0x1a3f: 0x4007f020,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x404d1420, 0x1a41: 0x404d1620, 0x1a42: 0x404d1820, 0x1a43: 0x404d1a20,\n\t0x1a44: 0x404d1c20, 0x1a45: 0x404d1e20, 0x1a46: 0x404d2020, 0x1a47: 0x404d2220,\n\t0x1a48: 0x404d2420, 0x1a49: 0x404d2620, 0x1a4a: 0x404d2820, 0x1a4b: 0x404d2a20,\n\t0x1a4c: 0x404d2c20, 0x1a4d: 0x404d2e20, 0x1a4e: 0x404d3020, 0x1a4f: 0x404d3220,\n\t0x1a50: 0x404d3420, 0x1a51: 0x404d3620, 0x1a52: 0x404d3820, 0x1a53: 0x404d3a20,\n\t0x1a54: 0x404d3c20, 0x1a55: 0x404d3e20, 0x1a56: 0x404d4020, 0x1a57: 0x82e626a1,\n\t0x1a58: 0x82dc26a2, 0x1a59: 0x404d4620, 0x1a5a: 0x404d4820, 0x1a5b: 0x404d4a20,\n\t0x1a5e: 0x40036620, 0x1a5f: 0x40036820,\n\t0x1a60: 0x40510220, 0x1a61: 0x40510420, 0x1a62: 0x40510620, 0x1a63: 0x40510820,\n\t0x1a64: 0x40510a20, 0x1a65: 0x40510c20, 0x1a66: 0x40510e20, 0x1a67: 0x40511020,\n\t0x1a68: 0x40511220, 0x1a69: 0x40511420, 0x1a6a: 0x40511620, 0x1a6b: 0x40511820,\n\t0x1a6c: 0x40511a20, 0x1a6d: 0x40511c20, 0x1a6e: 0x40511e20, 0x1a6f: 0x40512020,\n\t0x1a70: 0x40512220, 0x1a71: 0x40512420, 0x1a72: 0x40512620, 0x1a73: 0x40512820,\n\t0x1a74: 0x40512a20, 0x1a75: 0x40512c20, 0x1a76: 0x40512e20, 0x1a77: 0x40513020,\n\t0x1a78: 0x40513220, 0x1a79: 0x40513420, 0x1a7a: 0x40513620, 0x1a7b: 0x40513820,\n\t0x1a7c: 0x40513a20, 0x1a7d: 0x40513c20, 0x1a7e: 0x40513e20, 0x1a7f: 0x40514020,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x40514220, 0x1a81: 0x40514420, 0x1a82: 0x40514620, 0x1a83: 0x40514820,\n\t0x1a84: 0x40514a20, 0x1a85: 0x40514c20, 0x1a86: 0x40514e20, 0x1a87: 0x40515020,\n\t0x1a88: 0x40515220, 0x1a89: 0x40515420, 0x1a8a: 0x40515620, 0x1a8b: 0x40515820,\n\t0x1a8c: 0x40515a20, 0x1a8d: 0x40516c20, 0x1a8e: 0x40516e20, 0x1a8f: 0x40517020,\n\t0x1a90: 0x40517220, 0x1a91: 0x40517420, 0x1a92: 0x40517620, 0x1a93: 0x40515c20,\n\t0x1a94: 0xe0002029, 0x1a95: 0x40516020, 0x1a96: 0x40516220, 0x1a97: 0x40516420,\n\t0x1a98: 0x00510e84, 0x1a99: 0x00510e84, 0x1a9a: 0x00513884, 0x1a9b: 0x00513884,\n\t0x1a9c: 0x40516620, 0x1a9d: 0x40516820, 0x1a9e: 0x40516a20,\n\t0x1aa0: 0x820928cd, 0x1aa1: 0x40517820, 0x1aa2: 0x40517c20, 0x1aa3: 0x40517e20,\n\t0x1aa4: 0x00517e84, 0x1aa5: 0x40518020, 0x1aa6: 0x40518220, 0x1aa7: 0x40518420,\n\t0x1aa8: 0x40518620, 0x1aa9: 0x40518820, 0x1aaa: 0x40518a20, 0x1aab: 0x40515e20,\n\t0x1aac: 0x40517a20, 0x1aad: 0x40519820, 0x1aae: 0x40518c20, 0x1aaf: 0x40518e20,\n\t0x1ab0: 0x40519220, 0x1ab1: 0x40519420, 0x1ab2: 0x40519620, 0x1ab3: 0x40519020,\n\t0x1ab4: 0xa000f302, 0x1ab5: 0xae611702, 0x1ab6: 0xae611802, 0x1ab7: 0xae611902,\n\t0x1ab8: 0xae611a02, 0x1ab9: 0xae611b02, 0x1aba: 0xae611c02, 0x1abb: 0xae611d02,\n\t0x1abc: 0xae611e02, 0x1abf: 0xadc00000,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0xe0000194, 0x1ac1: 0xe0000228, 0x1ac2: 0xe0000340, 0x1ac3: 0xe000041a,\n\t0x1ac4: 0xe00004ef, 0x1ac5: 0xe00005b9, 0x1ac6: 0xe0000684, 0x1ac7: 0xe000072c,\n\t0x1ac8: 0xe00007d8, 0x1ac9: 0xe000087d,\n\t0x1ad0: 0xe0000197, 0x1ad1: 0xe000022b, 0x1ad2: 0xe0000343, 0x1ad3: 0xe000041d,\n\t0x1ad4: 0xe00004f2, 0x1ad5: 0xe00005bc, 0x1ad6: 0xe0000687, 0x1ad7: 0xe000072f,\n\t0x1ad8: 0xe00007db, 0x1ad9: 0xe0000880,\n\t0x1ae0: 0x4005c220, 0x1ae1: 0x4005c420, 0x1ae2: 0x4005c620, 0x1ae3: 0x4005c820,\n\t0x1ae4: 0x4005ca20, 0x1ae5: 0x4005cc20, 0x1ae6: 0x4005ce20, 0x1ae7: 0x4027be20,\n\t0x1ae8: 0x40032a20, 0x1ae9: 0x40032c20, 0x1aea: 0x40032e20, 0x1aeb: 0x40033020,\n\t0x1aec: 0x4005d020, 0x1aed: 0x4005d220,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0xa000f202, 0x1b01: 0xa000f202, 0x1b02: 0xa000f302, 0x1b03: 0xa000f702,\n\t0x1b04: 0xa000f402, 0x1b05: 0xc3190821, 0x1b06: 0x40522820, 0x1b07: 0xc31b0821,\n\t0x1b08: 0x40522c20, 0x1b09: 0xc31d0821, 0x1b0a: 0x40523020, 0x1b0b: 0xc31f0821,\n\t0x1b0c: 0x40523420, 0x1b0d: 0xc3210821, 0x1b0e: 0x40523820, 0x1b0f: 0x40523a20,\n\t0x1b10: 0x40523c20, 0x1b11: 0xc3230821, 0x1b12: 0x40524020, 0x1b13: 0x40524220,\n\t0x1b14: 0x40524820, 0x1b15: 0x40524a20, 0x1b16: 0x40524c20, 0x1b17: 0x40524e20,\n\t0x1b18: 0x40525020, 0x1b19: 0x40525220, 0x1b1a: 0x40525420, 0x1b1b: 0x40525620,\n\t0x1b1c: 0x40525820, 0x1b1d: 0x40525a20, 0x1b1e: 0x40525c20, 0x1b1f: 0x40525e20,\n\t0x1b20: 0x40526020, 0x1b21: 0x40526220, 0x1b22: 0x40526420, 0x1b23: 0x40526820,\n\t0x1b24: 0x40526a20, 0x1b25: 0x40526c20, 0x1b26: 0x40526e20, 0x1b27: 0x40527020,\n\t0x1b28: 0x40527420, 0x1b29: 0x40527620, 0x1b2a: 0x40527820, 0x1b2b: 0x40527a20,\n\t0x1b2c: 0x40527c20, 0x1b2d: 0x40527e20, 0x1b2e: 0x40528020, 0x1b2f: 0x40528220,\n\t0x1b30: 0x40528620, 0x1b31: 0x40528820, 0x1b32: 0x40528a20, 0x1b33: 0x40529020,\n\t0x1b34: 0xa070f102, 0x1b35: 0x40529220, 0x1b36: 0x40529420, 0x1b37: 0x40529620,\n\t0x1b38: 0x40529820, 0x1b39: 0x40529a20, 0x1b3a: 0xc3250821, 0x1b3b: 0x40529e20,\n\t0x1b3c: 0xc3270821, 0x1b3d: 0x4052a220, 0x1b3e: 0xc3290821, 0x1b3f: 0xc32b0821,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x4052a820, 0x1b41: 0x4052aa20, 0x1b42: 0xc32d0821, 0x1b43: 0x4052ae20,\n\t0x1b44: 0x82092958, 0x1b45: 0x40524420, 0x1b46: 0x40524620, 0x1b47: 0x40526620,\n\t0x1b48: 0x40527220, 0x1b49: 0x40528420, 0x1b4a: 0x40528c20, 0x1b4b: 0x40528e20,\n\t0x1b50: 0xe00001be, 0x1b51: 0xe0000252, 0x1b52: 0xe000036a, 0x1b53: 0xe0000444,\n\t0x1b54: 0xe0000519, 0x1b55: 0xe00005e3, 0x1b56: 0xe00006ae, 0x1b57: 0xe0000756,\n\t0x1b58: 0xe0000802, 0x1b59: 0xe00008a7, 0x1b5a: 0x40036a20, 0x1b5b: 0x40036c20,\n\t0x1b5c: 0x4002f620, 0x1b5d: 0x4002ae20, 0x1b5e: 0x40033220, 0x1b5f: 0x40033420,\n\t0x1b60: 0x40022020, 0x1b61: 0x4007f220, 0x1b62: 0x4007f420, 0x1b63: 0x4007f620,\n\t0x1b64: 0x4007f820, 0x1b65: 0x4007fa20, 0x1b66: 0x4007fc20, 0x1b67: 0x4007fe20,\n\t0x1b68: 0x40080020, 0x1b69: 0x40080220, 0x1b6a: 0x40080420, 0x1b6b: 0xae600000,\n\t0x1b6c: 0xadc00000, 0x1b6d: 0xae600000, 0x1b6e: 0xae600000, 0x1b6f: 0xae600000,\n\t0x1b70: 0xae600000, 0x1b71: 0xae600000, 0x1b72: 0xae600000, 0x1b73: 0xae600000,\n\t0x1b74: 0x40080620, 0x1b75: 0x40080820, 0x1b76: 0x40080a20, 0x1b77: 0x40080c20,\n\t0x1b78: 0x40080e20, 0x1b79: 0x40081020, 0x1b7a: 0x40081220, 0x1b7b: 0x40081420,\n\t0x1b7c: 0x40081620,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xa000f302, 0x1b81: 0xa000f902, 0x1b82: 0xa000f402, 0x1b83: 0x4047d420,\n\t0x1b84: 0x4047d620, 0x1b85: 0x4047d820, 0x1b86: 0x4047da20, 0x1b87: 0x4047dc20,\n\t0x1b88: 0x4047de20, 0x1b89: 0x4047e020, 0x1b8a: 0x4047e220, 0x1b8b: 0x4047e620,\n\t0x1b8c: 0x4047e820, 0x1b8d: 0x4047ea20, 0x1b8e: 0x4047ec20, 0x1b8f: 0x4047ee20,\n\t0x1b90: 0x4047f020, 0x1b91: 0x4047f220, 0x1b92: 0x4047f420, 0x1b93: 0x4047f620,\n\t0x1b94: 0x4047f820, 0x1b95: 0x4047fa20, 0x1b96: 0x4047fc20, 0x1b97: 0x4047fe20,\n\t0x1b98: 0x40480020, 0x1b99: 0x40480420, 0x1b9a: 0x40480820, 0x1b9b: 0x40480c20,\n\t0x1b9c: 0x40481220, 0x1b9d: 0x40481820, 0x1b9e: 0x40481c20, 0x1b9f: 0x40481e20,\n\t0x1ba0: 0x40482220, 0x1ba1: 0x40480a20, 0x1ba2: 0x40480e20, 0x1ba3: 0x40481420,\n\t0x1ba4: 0x40482420, 0x1ba5: 0x40482620, 0x1ba6: 0x40482820, 0x1ba7: 0x40482a20,\n\t0x1ba8: 0x40482c20, 0x1ba9: 0x40482e20, 0x1baa: 0x82092418, 0x1bab: 0x82092419,\n\t0x1bac: 0x40480620, 0x1bad: 0x40481a20, 0x1bae: 0x4047e420, 0x1baf: 0x40482020,\n\t0x1bb0: 0xe00001c4, 0x1bb1: 0xe0000258, 0x1bb2: 0xe0000370, 0x1bb3: 0xe000044a,\n\t0x1bb4: 0xe000051f, 0x1bb5: 0xe00005e9, 0x1bb6: 0xe00006b4, 0x1bb7: 0xe000075c,\n\t0x1bb8: 0xe0000808, 0x1bb9: 0xe00008ad, 0x1bba: 0x0047d484, 0x1bbb: 0x40481020,\n\t0x1bbc: 0x40481620, 0x1bbd: 0x40480220, 0x1bbe: 0x0047e299, 0x1bbf: 0x00480499,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x404d4c20, 0x1bc1: 0x004d4c84, 0x1bc2: 0x404d4e20, 0x1bc3: 0x004d4e84,\n\t0x1bc4: 0x004d4e84, 0x1bc5: 0x404d5020, 0x1bc6: 0x004d5084, 0x1bc7: 0x404d5220,\n\t0x1bc8: 0x004d5284, 0x1bc9: 0x404d5420, 0x1bca: 0x004d5484, 0x1bcb: 0x404d5620,\n\t0x1bcc: 0x004d5684, 0x1bcd: 0x004d5684, 0x1bce: 0x404d5820, 0x1bcf: 0x004d5884,\n\t0x1bd0: 0x404d5a20, 0x1bd1: 0x404d5c20, 0x1bd2: 0x404d5e20, 0x1bd3: 0x004d5e84,\n\t0x1bd4: 0x404d6020, 0x1bd5: 0x004d6084, 0x1bd6: 0x404d6220, 0x1bd7: 0x004d6284,\n\t0x1bd8: 0x404d6420, 0x1bd9: 0x004d6484, 0x1bda: 0x004d6484, 0x1bdb: 0x404d6620,\n\t0x1bdc: 0x004d6684, 0x1bdd: 0x404d6820, 0x1bde: 0x404d6a20, 0x1bdf: 0x004d6a84,\n\t0x1be0: 0x404d6c20, 0x1be1: 0x404d6e20, 0x1be2: 0x404d7020, 0x1be3: 0x404d7220,\n\t0x1be4: 0x404d7420, 0x1be5: 0x404d7620, 0x1be6: 0xa070f102, 0x1be7: 0x404d7820,\n\t0x1be8: 0x004d7884, 0x1be9: 0x404d7a20, 0x1bea: 0x404d7c20, 0x1beb: 0x004d7c84,\n\t0x1bec: 0x404d7e20, 0x1bed: 0x004d7e84, 0x1bee: 0x404d8020, 0x1bef: 0x004d8084,\n\t0x1bf0: 0x404d8220, 0x1bf1: 0x404d8420, 0x1bf2: 0x820926c3, 0x1bf3: 0x820926c4,\n\t0x1bfc: 0x4005ec20, 0x1bfd: 0x4005ee20, 0x1bfe: 0x4005f020, 0x1bff: 0x4005f220,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x404b3620, 0x1c01: 0x404b3820, 0x1c02: 0x404b3a20, 0x1c03: 0x404b3c20,\n\t0x1c04: 0x404b3e20, 0x1c05: 0x404b4020, 0x1c06: 0x404b4220, 0x1c07: 0x404b4420,\n\t0x1c08: 0x404b4620, 0x1c09: 0x404b4820, 0x1c0a: 0x404b5020, 0x1c0b: 0x404b5220,\n\t0x1c0c: 0x404b5420, 0x1c0d: 0x404b5620, 0x1c0e: 0x404b5820, 0x1c0f: 0x404b5a20,\n\t0x1c10: 0x404b5c20, 0x1c11: 0x404b5e20, 0x1c12: 0x404b6020, 0x1c13: 0x404b6220,\n\t0x1c14: 0x404b6420, 0x1c15: 0x404b6620, 0x1c16: 0x404b6820, 0x1c17: 0x404b6a20,\n\t0x1c18: 0x404b6c20, 0x1c19: 0x404b6e20, 0x1c1a: 0x404b7020, 0x1c1b: 0x404b7420,\n\t0x1c1c: 0x404b7820, 0x1c1d: 0x404b7a20, 0x1c1e: 0x404b7c20, 0x1c1f: 0x404b7e20,\n\t0x1c20: 0x404b8020, 0x1c21: 0x404b8220, 0x1c22: 0x404b8420, 0x1c23: 0x404b8620,\n\t0x1c24: 0x404b7220, 0x1c25: 0x404b7620, 0x1c26: 0x404b8a20, 0x1c27: 0x404b8c20,\n\t0x1c28: 0x404b8e20, 0x1c29: 0x404b9020, 0x1c2a: 0x404b9220, 0x1c2b: 0x404b9420,\n\t0x1c2c: 0x404b9620, 0x1c2d: 0x404b9820, 0x1c2e: 0x404b9a20, 0x1c2f: 0x404b9c20,\n\t0x1c30: 0x404b9e20, 0x1c31: 0x404ba020, 0x1c32: 0x404ba220, 0x1c33: 0x404ba420,\n\t0x1c34: 0x404ba620, 0x1c35: 0x404ba820, 0x1c36: 0x404b8820, 0x1c37: 0xa070f102,\n\t0x1c3b: 0x40031420,\n\t0x1c3c: 0x40031620, 0x1c3d: 0x4005ae20, 0x1c3e: 0x4005b020, 0x1c3f: 0x4005b220,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe00001a6, 0x1c41: 0xe000023a, 0x1c42: 0xe0000352, 0x1c43: 0xe000042c,\n\t0x1c44: 0xe0000501, 0x1c45: 0xe00005cb, 0x1c46: 0xe0000696, 0x1c47: 0xe000073e,\n\t0x1c48: 0xe00007ea, 0x1c49: 0xe000088f,\n\t0x1c4d: 0x404b4a20, 0x1c4e: 0x404b4c20, 0x1c4f: 0x404b4e20,\n\t0x1c50: 0xe00001ca, 0x1c51: 0xe000025e, 0x1c52: 0xe0000376, 0x1c53: 0xe0000450,\n\t0x1c54: 0xe0000525, 0x1c55: 0xe00005ef, 0x1c56: 0xe00006ba, 0x1c57: 0xe0000762,\n\t0x1c58: 0xe000080e, 0x1c59: 0xe00008b3, 0x1c5a: 0x40542e20, 0x1c5b: 0x40543020,\n\t0x1c5c: 0x40543220, 0x1c5d: 0x40543420, 0x1c5e: 0x40543620, 0x1c5f: 0x40543820,\n\t0x1c60: 0x40543a20, 0x1c61: 0x40543c20, 0x1c62: 0x40543e20, 0x1c63: 0x40544020,\n\t0x1c64: 0x40544220, 0x1c65: 0x40544420, 0x1c66: 0x40544620, 0x1c67: 0x40544820,\n\t0x1c68: 0x40544a20, 0x1c69: 0x40544c20, 0x1c6a: 0x40544e20, 0x1c6b: 0x40545020,\n\t0x1c6c: 0x40545220, 0x1c6d: 0x40545420, 0x1c6e: 0x40545620, 0x1c6f: 0x40545820,\n\t0x1c70: 0x40545a20, 0x1c71: 0x40545c20, 0x1c72: 0x40545e20, 0x1c73: 0x40546020,\n\t0x1c74: 0x40546220, 0x1c75: 0x40546420, 0x1c76: 0x40546620, 0x1c77: 0x40546820,\n\t0x1c78: 0x40546a20, 0x1c79: 0x40546c20, 0x1c7a: 0x40546e20, 0x1c7b: 0x40547020,\n\t0x1c7c: 0x40547220, 0x1c7d: 0x40547420, 0x1c7e: 0x40035820, 0x1c7f: 0x40035a20,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x4005d620, 0x1c81: 0x4005d820, 0x1c82: 0x4005da20, 0x1c83: 0x4005dc20,\n\t0x1c84: 0x4005de20, 0x1c85: 0x4005e020, 0x1c86: 0x4005e220, 0x1c87: 0x4005e420,\n\t0x1c90: 0xae600000, 0x1c91: 0xae600000, 0x1c92: 0xae600000, 0x1c93: 0xa0000000,\n\t0x1c94: 0xa0100000, 0x1c95: 0xadc00000, 0x1c96: 0xadc00000, 0x1c97: 0xadc00000,\n\t0x1c98: 0xadc00000, 0x1c99: 0xadc00000, 0x1c9a: 0xae600000, 0x1c9b: 0xae600000,\n\t0x1c9c: 0xadc00000, 0x1c9d: 0xadc00000, 0x1c9e: 0xadc00000, 0x1c9f: 0xadc00000,\n\t0x1ca0: 0xae600000, 0x1ca1: 0xa0000000, 0x1ca2: 0xa0100000, 0x1ca3: 0xa0100000,\n\t0x1ca4: 0xa0100000, 0x1ca5: 0xa0100000, 0x1ca6: 0xa0100000, 0x1ca7: 0xa0100000,\n\t0x1ca8: 0xa0100000, 0x1ca9: 0x40404020, 0x1caa: 0x00404084, 0x1cab: 0x00404084,\n\t0x1cac: 0x00404084, 0x1cad: 0xadc0f302, 0x1cae: 0x00404084, 0x1caf: 0x00404084,\n\t0x1cb0: 0x00404084, 0x1cb1: 0x00404084, 0x1cb2: 0xa000f402, 0x1cb3: 0xa000f402,\n\t0x1cb4: 0xae600000, 0x1cb5: 0x40404220, 0x1cb6: 0x40404420,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x402be620, 0x1cc1: 0x402bec20, 0x1cc2: 0x402bee20, 0x1cc3: 0x402c2420,\n\t0x1cc4: 0x402c4220, 0x1cc5: 0x402c6a20, 0x1cc6: 0x402c6c20, 0x1cc7: 0x402ca020,\n\t0x1cc8: 0x402ce620, 0x1cc9: 0x402db420, 0x1cca: 0x402ddc20, 0x1ccb: 0x402e0620,\n\t0x1ccc: 0x402e3420, 0x1ccd: 0x402e8a20, 0x1cce: 0x402eb020, 0x1ccf: 0x402eea20,\n\t0x1cd0: 0x402f0220, 0x1cd1: 0x402eec20, 0x1cd2: 0x402f0420, 0x1cd3: 0x402ef820,\n\t0x1cd4: 0x402ef620, 0x1cd5: 0x402f2a20, 0x1cd6: 0x402f0a20, 0x1cd7: 0x402f0c20,\n\t0x1cd8: 0x402f3420, 0x1cd9: 0x402f8c20, 0x1cda: 0x402fa020, 0x1cdb: 0x40303420,\n\t0x1cdc: 0x40307420, 0x1cdd: 0x40307620, 0x1cde: 0x40307820, 0x1cdf: 0x4030aa20,\n\t0x1ce0: 0x4030c620, 0x1ce1: 0x4030ea20, 0x1ce2: 0x40313220, 0x1ce3: 0x40316c20,\n\t0x1ce4: 0x4031f420, 0x1ce5: 0x4031f620, 0x1ce6: 0x40325820, 0x1ce7: 0x40327420,\n\t0x1ce8: 0x40328020, 0x1ce9: 0x40328a20, 0x1cea: 0x4032a020, 0x1ceb: 0x40348c20,\n\t0x1cec: 0x002bde9d, 0x1ced: 0xe00009e1, 0x1cee: 0x002c0a9d, 0x1cef: 0x402c2220,\n\t0x1cf0: 0x002c629d, 0x1cf1: 0x002c989d, 0x1cf2: 0x002cae9d, 0x1cf3: 0x002d229d,\n\t0x1cf4: 0x002d689d, 0x1cf5: 0x002d9a9d, 0x1cf6: 0x002dcc9d, 0x1cf7: 0x002dfe9d,\n\t0x1cf8: 0x002e229d, 0x1cf9: 0x002e829d, 0x1cfa: 0x002e9e9d, 0x1cfb: 0x402eae20,\n\t0x1cfc: 0x002ee29d, 0x1cfd: 0x002f229d, 0x1cfe: 0x002f2c9d, 0x1cff: 0x002f7a9d,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x00302c9d, 0x1d01: 0x00306c9d, 0x1d02: 0x0030e29d, 0x1d03: 0x002bde94,\n\t0x1d04: 0x002bf094, 0x1d05: 0x002bf894, 0x1d06: 0x002bee94, 0x1d07: 0x002c0a94,\n\t0x1d08: 0x002c6294, 0x1d09: 0x002c9894, 0x1d0a: 0x002cb894, 0x1d0b: 0x002cc294,\n\t0x1d0c: 0x002ce694, 0x1d0d: 0x002d2294, 0x1d0e: 0x002db494, 0x1d0f: 0x002dfe94,\n\t0x1d10: 0x002e8294, 0x1d11: 0x002eda94, 0x1d12: 0x002ee294, 0x1d13: 0x002efa94,\n\t0x1d14: 0x002f0a94, 0x1d15: 0x002f0c94, 0x1d16: 0x002f2c94, 0x1d17: 0x00302c94,\n\t0x1d18: 0x00306c94, 0x1d19: 0x00307694, 0x1d1a: 0x0030a094, 0x1d1b: 0x0030be94,\n\t0x1d1c: 0x0031f694, 0x1d1d: 0x00325494, 0x1d1e: 0x00325694, 0x1d1f: 0x00325a94,\n\t0x1d20: 0x00329a94, 0x1d21: 0x00329c94, 0x1d22: 0x002d9a95, 0x1d23: 0x002f7a95,\n\t0x1d24: 0x00306c95, 0x1d25: 0x0030be95, 0x1d26: 0x00325495, 0x1d27: 0x00325695,\n\t0x1d28: 0x00328895, 0x1d29: 0x00329a95, 0x1d2a: 0x00329c95, 0x1d2b: 0x40307a20,\n\t0x1d2c: 0x402c2620, 0x1d2d: 0x402c6e20, 0x1d2e: 0x402d1220, 0x1d2f: 0x402e8c20,\n\t0x1d30: 0x402eb220, 0x1d31: 0x402f3a20, 0x1d32: 0x402f9620, 0x1d33: 0x402fce20,\n\t0x1d34: 0x402ff020, 0x1d35: 0x40304020, 0x1d36: 0x40313c20, 0x1d37: 0x402d5420,\n\t0x1d38: 0x0034ba94, 0x1d39: 0xe0000bd9, 0x1d3a: 0xe0000fc1, 0x1d3b: 0x402dbe20,\n\t0x1d3c: 0x402dca20, 0x1d3d: 0x402f3620, 0x1d3e: 0x40308420, 0x1d3f: 0x4030bc20,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x402c2820, 0x1d41: 0x402c7020, 0x1d42: 0x402d1420, 0x1d43: 0x402d4220,\n\t0x1d44: 0x402e0820, 0x1d45: 0x402e5220, 0x1d46: 0x402e8e20, 0x1d47: 0x402ec620,\n\t0x1d48: 0x402f3c20, 0x1d49: 0x402faa20, 0x1d4a: 0x402ff220, 0x1d4b: 0x40301020,\n\t0x1d4c: 0x4030ca20, 0x1d4d: 0x4030fe20, 0x1d4e: 0x40313e20, 0x1d4f: 0x402bea20,\n\t0x1d50: 0x402c0020, 0x1d51: 0x402c8220, 0x1d52: 0x402caa20, 0x1d53: 0x402cca20,\n\t0x1d54: 0x402ce420, 0x1d55: 0x402cc020, 0x1d56: 0x402dc020, 0x1d57: 0x402f0620,\n\t0x1d58: 0x40302220, 0x1d59: 0x40308620, 0x1d5a: 0x40317620, 0x1d5b: 0x002c0294,\n\t0x1d5c: 0x002c3a94, 0x1d5d: 0x002c5694, 0x1d5e: 0xf0001414, 0x1d5f: 0x002cdc94,\n\t0x1d60: 0x002d0894, 0x1d61: 0x002dee94, 0x1d62: 0x002d2a94, 0x1d63: 0x00308894,\n\t0x1d64: 0x002db694, 0x1d65: 0x002dc294, 0x1d66: 0x002daa94, 0x1d67: 0x002dbe94,\n\t0x1d68: 0x002de694, 0x1d69: 0x002e5494, 0x1d6a: 0x002e5294, 0x1d6b: 0x002e2a94,\n\t0x1d6c: 0x002e9094, 0x1d6d: 0x0030ac94, 0x1d6e: 0x002eb494, 0x1d6f: 0x002ec894,\n\t0x1d70: 0x002ea694, 0x1d71: 0x002f1094, 0x1d72: 0x002f4c94, 0x1d73: 0x002ff494,\n\t0x1d74: 0x00300894, 0x1d75: 0x00304294, 0x1d76: 0x00307c94, 0x1d77: 0x0030b494,\n\t0x1d78: 0x00307494, 0x1d79: 0x0030cc94, 0x1d7a: 0x0030da94, 0x1d7b: 0x00312a94,\n\t0x1d7c: 0x00314894, 0x1d7d: 0x00315094, 0x1d7e: 0x00316494, 0x1d7f: 0x00326a94,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0xae605f02, 0x1d81: 0xae605f02, 0x1d82: 0xadc06002, 0x1d83: 0xae605f02,\n\t0x1d84: 0xae605f02, 0x1d85: 0xae605f02, 0x1d86: 0xae605f02, 0x1d87: 0xae605f02,\n\t0x1d88: 0xae605f02, 0x1d89: 0xae605f02, 0x1d8a: 0x84dc17bd, 0x1d8b: 0xae605f02,\n\t0x1d8c: 0xae605f02, 0x1d8d: 0xaea05f02, 0x1d8e: 0xad605f02, 0x1d8f: 0xadc06002,\n\t0x1d90: 0xaca06002, 0x1d91: 0xae605f02, 0x1d92: 0x84e618d1, 0x1d93: 0xe00009b4,\n\t0x1d94: 0xe00009d9, 0x1d95: 0xe00009f9, 0x1d96: 0xe0000a08, 0x1d97: 0xe0000a50,\n\t0x1d98: 0xe0000ab6, 0x1d99: 0xe0000ab0, 0x1d9a: 0x84e61691, 0x1d9b: 0x84e61699,\n\t0x1d9c: 0x84e616ff, 0x1d9d: 0x84e61711, 0x1d9e: 0x84e61715, 0x1d9f: 0x84e61745,\n\t0x1da0: 0x84e6174f, 0x1da1: 0x84e61753, 0x1da2: 0x84e617c1, 0x1da3: 0x84e617c5,\n\t0x1da4: 0x84e617f3, 0x1da5: 0xe0000f67, 0x1da6: 0x84e61895,\n\t0x1dbc: 0xae906002, 0x1dbd: 0xadc06002, 0x1dbe: 0xae605f02, 0x1dbf: 0xadc06002,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xe00009b1, 0x1dc1: 0xe00009ae, 0x1dc2: 0xe0000a22, 0x1dc3: 0xe0000a1f,\n\t0x1dc4: 0xe0000a28, 0x1dc5: 0xe0000a25, 0x1dc6: 0xe0000a2e, 0x1dc7: 0xe0000a2b,\n\t0x1dc8: 0xe0000a5a, 0x1dc9: 0xe0000a56, 0x1dca: 0xe0000a8c, 0x1dcb: 0xe0000a89,\n\t0x1dcc: 0xe0000a98, 0x1dcd: 0xe0000a95, 0x1dce: 0xe0000aa4, 0x1dcf: 0xe0000aa1,\n\t0x1dd0: 0xe0000a92, 0x1dd1: 0xe0000a8f, 0x1dd2: 0xe0000a9e, 0x1dd3: 0xe0000a9b,\n\t0x1dd4: 0xe0000b55, 0x1dd5: 0xe0000b51, 0x1dd6: 0xe0000b4d, 0x1dd7: 0xe0000b49,\n\t0x1dd8: 0xe0000b7c, 0x1dd9: 0xe0000b79, 0x1dda: 0xe0000b82, 0x1ddb: 0xe0000b7f,\n\t0x1ddc: 0xe0000b39, 0x1ddd: 0xe0000b35, 0x1dde: 0xe0000b8c, 0x1ddf: 0xe0000b89,\n\t0x1de0: 0xe0000bd0, 0x1de1: 0xe0000bcd, 0x1de2: 0xe0000c00, 0x1de3: 0xe0000bfd,\n\t0x1de4: 0xe0000c0c, 0x1de5: 0xe0000c09, 0x1de6: 0xe0000bfa, 0x1de7: 0xe0000bf7,\n\t0x1de8: 0xe0000c06, 0x1de9: 0xe0000c03, 0x1dea: 0xe0000c12, 0x1deb: 0xe0000c0f,\n\t0x1dec: 0xe0000c7e, 0x1ded: 0xe0000c7b, 0x1dee: 0xe0000c4a, 0x1def: 0xe0000c46,\n\t0x1df0: 0xe0000c93, 0x1df1: 0xe0000c90, 0x1df2: 0xe0000cab, 0x1df3: 0xe0000ca8,\n\t0x1df4: 0xe0000cb1, 0x1df5: 0xe0000cae, 0x1df6: 0xe0000cde, 0x1df7: 0xe0000cdb,\n\t0x1df8: 0xe0000ce5, 0x1df9: 0xe0000ce1, 0x1dfa: 0xe0000cf2, 0x1dfb: 0xe0000cef,\n\t0x1dfc: 0xe0000cec, 0x1dfd: 0xe0000ce9, 0x1dfe: 0xe0000d1e, 0x1dff: 0xe0000d1b,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xe0000d24, 0x1e01: 0xe0000d21, 0x1e02: 0xe0000d2a, 0x1e03: 0xe0000d27,\n\t0x1e04: 0xe0000d69, 0x1e05: 0xe0000d66, 0x1e06: 0xe0000d7b, 0x1e07: 0xe0000d78,\n\t0x1e08: 0xe0000d87, 0x1e09: 0xe0000d84, 0x1e0a: 0xe0000d81, 0x1e0b: 0xe0000d7e,\n\t0x1e0c: 0xe0000ded, 0x1e0d: 0xe0000de9, 0x1e0e: 0xe0000df5, 0x1e0f: 0xe0000df1,\n\t0x1e10: 0xe0000e3d, 0x1e11: 0xe0000e39, 0x1e12: 0xe0000e35, 0x1e13: 0xe0000e31,\n\t0x1e14: 0xe0000ea7, 0x1e15: 0xe0000ea4, 0x1e16: 0xe0000ead, 0x1e17: 0xe0000eaa,\n\t0x1e18: 0xe0000ed6, 0x1e19: 0xe0000ed3, 0x1e1a: 0xe0000ef4, 0x1e1b: 0xe0000ef1,\n\t0x1e1c: 0xe0000efb, 0x1e1d: 0xe0000ef7, 0x1e1e: 0xe0000f02, 0x1e1f: 0xe0000eff,\n\t0x1e20: 0xe0000f41, 0x1e21: 0xe0000f3e, 0x1e22: 0xe0000f53, 0x1e23: 0xe0000f50,\n\t0x1e24: 0xe0000f26, 0x1e25: 0xe0000f22, 0x1e26: 0xe0000f3a, 0x1e27: 0xe0000f36,\n\t0x1e28: 0xe0000f5a, 0x1e29: 0xe0000f56, 0x1e2a: 0xe0000f93, 0x1e2b: 0xe0000f90,\n\t0x1e2c: 0xe0000f9f, 0x1e2d: 0xe0000f9c, 0x1e2e: 0xe0000fb1, 0x1e2f: 0xe0000fae,\n\t0x1e30: 0xe0000fab, 0x1e31: 0xe0000fa8, 0x1e32: 0xe0001093, 0x1e33: 0xe0001090,\n\t0x1e34: 0xe000109f, 0x1e35: 0xe000109c, 0x1e36: 0xe0001099, 0x1e37: 0xe0001096,\n\t0x1e38: 0xe0001032, 0x1e39: 0xe000102e, 0x1e3a: 0xe0001046, 0x1e3b: 0xe0001042,\n\t0x1e3c: 0xe00010a9, 0x1e3d: 0xe00010a6, 0x1e3e: 0xe00010af, 0x1e3f: 0xe00010ac,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xe00010d2, 0x1e41: 0xe00010cf, 0x1e42: 0xe00010cc, 0x1e43: 0xe00010c9,\n\t0x1e44: 0xe00010e1, 0x1e45: 0xe00010de, 0x1e46: 0xe00010e7, 0x1e47: 0xe00010e4,\n\t0x1e48: 0xe00010ed, 0x1e49: 0xe00010ea, 0x1e4a: 0xe00010fc, 0x1e4b: 0xe00010f9,\n\t0x1e4c: 0xe00010f6, 0x1e4d: 0xe00010f3, 0x1e4e: 0xe0001123, 0x1e4f: 0xe0001120,\n\t0x1e50: 0xe0001141, 0x1e51: 0xe000113e, 0x1e52: 0xe0001153, 0x1e53: 0xe0001150,\n\t0x1e54: 0xe0001159, 0x1e55: 0xe0001156, 0x1e56: 0xe0000c15, 0x1e57: 0xe0000f8d,\n\t0x1e58: 0xe00010db, 0x1e59: 0xe0001111, 0x1e5a: 0xf0000404, 0x1e5b: 0xe0000f70,\n\t0x1e5c: 0x40300420, 0x1e5d: 0x40300620, 0x1e5e: 0xe0000f7f, 0x1e5f: 0x402c9620,\n\t0x1e60: 0xe000099b, 0x1e61: 0xe0000998, 0x1e62: 0xe0000989, 0x1e63: 0xe0000986,\n\t0x1e64: 0xe0000928, 0x1e65: 0xe0000924, 0x1e66: 0xe0000930, 0x1e67: 0xe000092c,\n\t0x1e68: 0xe0000940, 0x1e69: 0xe000093c, 0x1e6a: 0xe0000938, 0x1e6b: 0xe0000934,\n\t0x1e6c: 0xe00009aa, 0x1e6d: 0xe00009a6, 0x1e6e: 0xe0000902, 0x1e6f: 0xe00008fe,\n\t0x1e70: 0xe000090a, 0x1e71: 0xe0000906, 0x1e72: 0xe000091a, 0x1e73: 0xe0000916,\n\t0x1e74: 0xe0000912, 0x1e75: 0xe000090e, 0x1e76: 0xe00009a2, 0x1e77: 0xe000099e,\n\t0x1e78: 0xe0000b6e, 0x1e79: 0xe0000b6b, 0x1e7a: 0xe0000b5c, 0x1e7b: 0xe0000b59,\n\t0x1e7c: 0xe0000b26, 0x1e7d: 0xe0000b23, 0x1e7e: 0xe0000afb, 0x1e7f: 0xe0000af7,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xe0000b03, 0x1e81: 0xe0000aff, 0x1e82: 0xe0000b13, 0x1e83: 0xe0000b0f,\n\t0x1e84: 0xe0000b0b, 0x1e85: 0xe0000b07, 0x1e86: 0xe0000b75, 0x1e87: 0xe0000b71,\n\t0x1e88: 0xe0000c66, 0x1e89: 0xe0000c63, 0x1e8a: 0xe0000c78, 0x1e8b: 0xe0000c75,\n\t0x1e8c: 0xe0000e84, 0x1e8d: 0xe0000e81, 0x1e8e: 0xe0000e44, 0x1e8f: 0xe0000e41,\n\t0x1e90: 0xe0000dad, 0x1e91: 0xe0000da9, 0x1e92: 0xe0000db5, 0x1e93: 0xe0000db1,\n\t0x1e94: 0xe0000dc5, 0x1e95: 0xe0000dc1, 0x1e96: 0xe0000dbd, 0x1e97: 0xe0000db9,\n\t0x1e98: 0xe0000e8b, 0x1e99: 0xe0000e87, 0x1e9a: 0xe0000e5d, 0x1e9b: 0xe0000e59,\n\t0x1e9c: 0xe0000e65, 0x1e9d: 0xe0000e61, 0x1e9e: 0xe0000e75, 0x1e9f: 0xe0000e71,\n\t0x1ea0: 0xe0000e6d, 0x1ea1: 0xe0000e69, 0x1ea2: 0xe0000e7d, 0x1ea3: 0xe0000e79,\n\t0x1ea4: 0xe000108d, 0x1ea5: 0xe000108a, 0x1ea6: 0xe000104d, 0x1ea7: 0xe000104a,\n\t0x1ea8: 0xe0001066, 0x1ea9: 0xe0001062, 0x1eaa: 0xe000106e, 0x1eab: 0xe000106a,\n\t0x1eac: 0xe000107e, 0x1ead: 0xe000107a, 0x1eae: 0xe0001076, 0x1eaf: 0xe0001072,\n\t0x1eb0: 0xe0001086, 0x1eb1: 0xe0001082, 0x1eb2: 0xe0001108, 0x1eb3: 0xe0001105,\n\t0x1eb4: 0xe0001135, 0x1eb5: 0xe0001132, 0x1eb6: 0xe000112f, 0x1eb7: 0xe000112c,\n\t0x1eb8: 0xe000111d, 0x1eb9: 0xe000111a, 0x1eba: 0xe0000d0a, 0x1ebb: 0xe0000d07,\n\t0x1ebc: 0x0030d888, 0x1ebd: 0x4030d820, 0x1ebe: 0x00312088, 0x1ebf: 0x40312020,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe0001165, 0x1ec1: 0xe00011a9, 0x1ec2: 0xe000117d, 0x1ec3: 0xe00011c1,\n\t0x1ec4: 0xe000116b, 0x1ec5: 0xe00011af, 0x1ec6: 0xe000118f, 0x1ec7: 0xe00011d3,\n\t0x1ec8: 0xe0001168, 0x1ec9: 0xe00011ac, 0x1eca: 0xe0001181, 0x1ecb: 0xe00011c5,\n\t0x1ecc: 0xe000116f, 0x1ecd: 0xe00011b3, 0x1ece: 0xe0001193, 0x1ecf: 0xe00011d7,\n\t0x1ed0: 0xe000121a, 0x1ed1: 0xe0001230, 0x1ed2: 0xe0001228, 0x1ed3: 0xe000123e,\n\t0x1ed4: 0xe0001220, 0x1ed5: 0xe0001236,\n\t0x1ed8: 0xe000121d, 0x1ed9: 0xe0001233, 0x1eda: 0xe000122c, 0x1edb: 0xe0001242,\n\t0x1edc: 0xe0001224, 0x1edd: 0xe000123a,\n\t0x1ee0: 0xe0001252, 0x1ee1: 0xe0001296, 0x1ee2: 0xe000126a, 0x1ee3: 0xe00012ae,\n\t0x1ee4: 0xe0001258, 0x1ee5: 0xe000129c, 0x1ee6: 0xe000127c, 0x1ee7: 0xe00012c0,\n\t0x1ee8: 0xe0001255, 0x1ee9: 0xe0001299, 0x1eea: 0xe000126e, 0x1eeb: 0xe00012b2,\n\t0x1eec: 0xe000125c, 0x1eed: 0xe00012a0, 0x1eee: 0xe0001280, 0x1eef: 0xe00012c4,\n\t0x1ef0: 0xe00012fb, 0x1ef1: 0xe0001319, 0x1ef2: 0xe0001309, 0x1ef3: 0xe0001327,\n\t0x1ef4: 0xe0001301, 0x1ef5: 0xe000131f, 0x1ef6: 0xe0001311, 0x1ef7: 0xe000132f,\n\t0x1ef8: 0xe00012fe, 0x1ef9: 0xe000131c, 0x1efa: 0xe000130d, 0x1efb: 0xe000132b,\n\t0x1efc: 0xe0001305, 0x1efd: 0xe0001323, 0x1efe: 0xe0001315, 0x1eff: 0xe0001333,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xe000136c, 0x1f01: 0xe0001382, 0x1f02: 0xe000137a, 0x1f03: 0xe0001390,\n\t0x1f04: 0xe0001372, 0x1f05: 0xe0001388,\n\t0x1f08: 0xe000136f, 0x1f09: 0xe0001385, 0x1f0a: 0xe000137e, 0x1f0b: 0xe0001394,\n\t0x1f0c: 0xe0001376, 0x1f0d: 0xe000138c,\n\t0x1f10: 0xe00013ad, 0x1f11: 0xe00013bc, 0x1f12: 0xe00013b4, 0x1f13: 0xe00013ca,\n\t0x1f14: 0xe00013b0, 0x1f15: 0xe00013c2, 0x1f16: 0xe00013b8, 0x1f17: 0xe00013d2,\n\t0x1f19: 0xe00013bf, 0x1f1b: 0xe00013ce,\n\t0x1f1d: 0xe00013c6, 0x1f1f: 0xe00013d6,\n\t0x1f20: 0xe0001407, 0x1f21: 0xe000144b, 0x1f22: 0xe000141f, 0x1f23: 0xe0001463,\n\t0x1f24: 0xe000140d, 0x1f25: 0xe0001451, 0x1f26: 0xe0001431, 0x1f27: 0xe0001475,\n\t0x1f28: 0xe000140a, 0x1f29: 0xe000144e, 0x1f2a: 0xe0001423, 0x1f2b: 0xe0001467,\n\t0x1f2c: 0xe0001411, 0x1f2d: 0xe0001455, 0x1f2e: 0xe0001435, 0x1f2f: 0xe0001479,\n\t0x1f30: 0xe00011f7, 0x1f31: 0xe00011ed, 0x1f32: 0xe000124c, 0x1f33: 0xe0001246,\n\t0x1f34: 0xe00012e4, 0x1f35: 0xe00012da, 0x1f36: 0xe000133d, 0x1f37: 0xe0001337,\n\t0x1f38: 0xe000139e, 0x1f39: 0xe0001398, 0x1f3a: 0xe00013e0, 0x1f3b: 0xe00013da,\n\t0x1f3c: 0xe0001499, 0x1f3d: 0xe000148f,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xe00011a1, 0x1f41: 0xe00011e5, 0x1f42: 0xe0001185, 0x1f43: 0xe00011c9,\n\t0x1f44: 0xe0001173, 0x1f45: 0xe00011b7, 0x1f46: 0xe0001197, 0x1f47: 0xe00011db,\n\t0x1f48: 0xe00011a5, 0x1f49: 0xe00011e9, 0x1f4a: 0xe000118a, 0x1f4b: 0xe00011ce,\n\t0x1f4c: 0xe0001178, 0x1f4d: 0xe00011bc, 0x1f4e: 0xe000119c, 0x1f4f: 0xe00011e0,\n\t0x1f50: 0xe000128e, 0x1f51: 0xe00012d2, 0x1f52: 0xe0001272, 0x1f53: 0xe00012b6,\n\t0x1f54: 0xe0001260, 0x1f55: 0xe00012a4, 0x1f56: 0xe0001284, 0x1f57: 0xe00012c8,\n\t0x1f58: 0xe0001292, 0x1f59: 0xe00012d6, 0x1f5a: 0xe0001277, 0x1f5b: 0xe00012bb,\n\t0x1f5c: 0xe0001265, 0x1f5d: 0xe00012a9, 0x1f5e: 0xe0001289, 0x1f5f: 0xe00012cd,\n\t0x1f60: 0xe0001443, 0x1f61: 0xe0001487, 0x1f62: 0xe0001427, 0x1f63: 0xe000146b,\n\t0x1f64: 0xe0001415, 0x1f65: 0xe0001459, 0x1f66: 0xe0001439, 0x1f67: 0xe000147d,\n\t0x1f68: 0xe0001447, 0x1f69: 0xe000148b, 0x1f6a: 0xe000142c, 0x1f6b: 0xe0001470,\n\t0x1f6c: 0xe000141a, 0x1f6d: 0xe000145e, 0x1f6e: 0xe000143e, 0x1f6f: 0xe0001482,\n\t0x1f70: 0xe0001201, 0x1f71: 0xe000120e, 0x1f72: 0xe00011fd, 0x1f73: 0xe0001214,\n\t0x1f74: 0xe00011f3, 0x1f76: 0xe0001207, 0x1f77: 0xe000120a,\n\t0x1f78: 0xe0001204, 0x1f79: 0xe0001211, 0x1f7a: 0xe00011fa, 0x1f7b: 0xe00011f0,\n\t0x1f7c: 0xe0001217, 0x1f7d: 0x40063620, 0x1f7e: 0x40326c20, 0x1f7f: 0x40063620,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x40063a20, 0x1f81: 0xe00000b1, 0x1f82: 0xe00012ea, 0x1f83: 0xe00012f5,\n\t0x1f84: 0xe00012e0, 0x1f86: 0xe00012ee, 0x1f87: 0xe00012f1,\n\t0x1f88: 0xe000124f, 0x1f89: 0xe0001249, 0x1f8a: 0xe00012e7, 0x1f8b: 0xe00012dd,\n\t0x1f8c: 0xe00012f8, 0x1f8d: 0xe00000b7, 0x1f8e: 0xe00000b4, 0x1f8f: 0xe00000ba,\n\t0x1f90: 0xe0001343, 0x1f91: 0xe000135e, 0x1f92: 0xe0001356, 0x1f93: 0xe0001352,\n\t0x1f96: 0xe0001349, 0x1f97: 0xe000135a,\n\t0x1f98: 0xe0001346, 0x1f99: 0xe0001361, 0x1f9a: 0xe0001340, 0x1f9b: 0xe000133a,\n\t0x1f9d: 0xe00000c0, 0x1f9e: 0xe00000bd, 0x1f9f: 0xe00000c3,\n\t0x1fa0: 0xe00013e6, 0x1fa1: 0xe0001401, 0x1fa2: 0xe00013f9, 0x1fa3: 0xe00013f5,\n\t0x1fa4: 0xe00013a4, 0x1fa5: 0xe00013a7, 0x1fa6: 0xe00013ec, 0x1fa7: 0xe00013fd,\n\t0x1fa8: 0xe00013e9, 0x1fa9: 0xe0001404, 0x1faa: 0xe00013e3, 0x1fab: 0xe00013dd,\n\t0x1fac: 0xe00013aa, 0x1fad: 0xe00000ae, 0x1fae: 0xe00000ab, 0x1faf: 0x40061e20,\n\t0x1fb2: 0xe000149f, 0x1fb3: 0xe00014aa,\n\t0x1fb4: 0xe0001495, 0x1fb6: 0xe00014a3, 0x1fb7: 0xe00014a6,\n\t0x1fb8: 0xe00013a1, 0x1fb9: 0xe000139b, 0x1fba: 0xe000149c, 0x1fbb: 0xe0001492,\n\t0x1fbc: 0xe00014ad, 0x1fbd: 0x40062020, 0x1fbe: 0x40063820,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x00021284, 0x1fc1: 0x00021284, 0x1fc2: 0x00021284, 0x1fc3: 0x00021284,\n\t0x1fc4: 0x00021284, 0x1fc5: 0x00021284, 0x1fc6: 0x00021284, 0x1fc7: 0x0002129b,\n\t0x1fc8: 0x00021284, 0x1fc9: 0x00021284, 0x1fca: 0x00021284, 0x1fcb: 0xa0000000,\n\t0x1fcc: 0xa0000000, 0x1fcd: 0xa0000000, 0x1fce: 0xa0000000, 0x1fcf: 0xa0000000,\n\t0x1fd0: 0x40022620, 0x1fd1: 0x0002269b, 0x1fd2: 0x40022820, 0x1fd3: 0x40022a20,\n\t0x1fd4: 0x40022c20, 0x1fd5: 0x40022e20, 0x1fd6: 0x4004c420, 0x1fd7: 0x40021820,\n\t0x1fd8: 0x4003d420, 0x1fd9: 0x4003d620, 0x1fda: 0x4003d820, 0x1fdb: 0x4003da20,\n\t0x1fdc: 0x4003e220, 0x1fdd: 0x4003e420, 0x1fde: 0x4003e620, 0x1fdf: 0x4003e820,\n\t0x1fe0: 0x4004f820, 0x1fe1: 0x4004fa20, 0x1fe2: 0x40050220, 0x1fe3: 0x40050420,\n\t0x1fe4: 0x0002e484, 0x1fe5: 0xf0001f04, 0x1fe6: 0xf0000404, 0x1fe7: 0x40050620,\n\t0x1fe8: 0x40020e20, 0x1fe9: 0x40021020, 0x1fea: 0xa0000000, 0x1feb: 0xa0000000,\n\t0x1fec: 0xa0000000, 0x1fed: 0xa0000000, 0x1fee: 0xa0000000, 0x1fef: 0x0002129b,\n\t0x1ff0: 0x4004f020, 0x1ff1: 0x4004f420, 0x1ff2: 0x40050e20, 0x1ff3: 0xf0001f04,\n\t0x1ff4: 0xf0000404, 0x1ff5: 0x40051020, 0x1ff6: 0xf0001f04, 0x1ff7: 0xf0000404,\n\t0x1ff8: 0x40051620, 0x1ff9: 0x4003dc20, 0x1ffa: 0x4003de20, 0x1ffb: 0x40051820,\n\t0x1ffc: 0xf0001f04, 0x1ffd: 0x4002e020, 0x1ffe: 0x40021420, 0x1fff: 0x40051a20,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0x40051e20, 0x2001: 0x40052220, 0x2002: 0x40052420, 0x2003: 0x40050820,\n\t0x2004: 0x40095820, 0x2005: 0x40040c20, 0x2006: 0x40040e20, 0x2007: 0xf0001f04,\n\t0x2008: 0xf0001f04, 0x2009: 0xf0001f04, 0x200a: 0x4004e820, 0x200b: 0x4004d420,\n\t0x200c: 0x40050a20, 0x200d: 0x40050c20, 0x200e: 0x4004da20, 0x200f: 0x40026620,\n\t0x2010: 0x40052020, 0x2011: 0x4004dc20, 0x2012: 0x40095020, 0x2013: 0x40023420,\n\t0x2014: 0x40051c20, 0x2015: 0x40039c20, 0x2016: 0x40039e20, 0x2017: 0xe00000a6,\n\t0x2018: 0x4003a020, 0x2019: 0x4003a220, 0x201a: 0x4003a420, 0x201b: 0x4003a620,\n\t0x201c: 0x4003a820, 0x201d: 0x4003aa20, 0x201e: 0x4003ac20, 0x201f: 0x00021284,\n\t0x2020: 0xa0000000, 0x2021: 0xa0000000, 0x2022: 0xa0000000, 0x2023: 0xa0000000,\n\t0x2024: 0xa0000000,\n\t0x202a: 0xa0000000, 0x202b: 0xa0000000,\n\t0x202c: 0xa0000000, 0x202d: 0xa0000000, 0x202e: 0xa0000000, 0x202f: 0xa0000000,\n\t0x2030: 0x0029cc94, 0x2031: 0x002d9a94,\n\t0x2034: 0x0029d494, 0x2035: 0x0029d694, 0x2036: 0x0029d894, 0x2037: 0x0029da94,\n\t0x2038: 0x0029dc94, 0x2039: 0x0029de94, 0x203a: 0x00093894, 0x203b: 0x00094e94,\n\t0x203c: 0x00094294, 0x203d: 0x0003f494, 0x203e: 0x0003f694, 0x203f: 0x002e9e94,\n\t// Block 0x81, offset 0x2040\n\t0x2040: 0x0029cc95, 0x2041: 0x0029ce95, 0x2042: 0x0029d095, 0x2043: 0x0029d295,\n\t0x2044: 0x0029d495, 0x2045: 0x0029d695, 0x2046: 0x0029d895, 0x2047: 0x0029da95,\n\t0x2048: 0x0029dc95, 0x2049: 0x0029de95, 0x204a: 0x00093895, 0x204b: 0x00094e95,\n\t0x204c: 0x00094295, 0x204d: 0x0003f495, 0x204e: 0x0003f695,\n\t0x2050: 0x002bde95, 0x2051: 0x002c9895, 0x2052: 0x002ee295, 0x2053: 0x0030f695,\n\t0x2054: 0x002cb895, 0x2055: 0x002d6895, 0x2056: 0x002dfe95, 0x2057: 0x002e2295,\n\t0x2058: 0x002e8295, 0x2059: 0x002e9e95, 0x205a: 0x002f2c95, 0x205b: 0x002fe695,\n\t0x205c: 0x00302c95,\n\t0x2060: 0x4027f820, 0x2061: 0x4027fa20, 0x2062: 0x4027fc20, 0x2063: 0x4027fe20,\n\t0x2064: 0x40280020, 0x2065: 0x40280220, 0x2066: 0x40280420, 0x2067: 0x40280620,\n\t0x2068: 0x40282c20, 0x2069: 0x40280820, 0x206a: 0x40280a20, 0x206b: 0x40280c20,\n\t0x206c: 0x40280e20, 0x206d: 0x40281020, 0x206e: 0x40281220, 0x206f: 0x40281420,\n\t0x2070: 0x40281620, 0x2071: 0x40281820, 0x2072: 0x40281a20, 0x2073: 0x40281c20,\n\t0x2074: 0x40281e20, 0x2075: 0x40282020, 0x2076: 0x40282220, 0x2077: 0x40282420,\n\t0x2078: 0x40282620, 0x2079: 0x40282820, 0x207a: 0x40282a20,\n\t// Block 0x82, offset 0x2080\n\t0x2090: 0xae612a02, 0x2091: 0xae612b02, 0x2092: 0xa0112c02, 0x2093: 0xa0112c02,\n\t0x2094: 0xae612d02, 0x2095: 0xae612e02, 0x2096: 0xae612f02, 0x2097: 0xae613002,\n\t0x2098: 0xa0106102, 0x2099: 0xa0106102, 0x209a: 0xa0106102, 0x209b: 0xae613102,\n\t0x209c: 0xae613202, 0x209d: 0xa0006202, 0x209e: 0xa0006202, 0x209f: 0xa0006202,\n\t0x20a0: 0xa0006202, 0x20a1: 0xae613302, 0x20a2: 0xa0006202, 0x20a3: 0xa0006202,\n\t0x20a4: 0xa0006202, 0x20a5: 0xa0106102, 0x20a6: 0xa0113402, 0x20a7: 0xae613502,\n\t0x20a8: 0xadc13602, 0x20a9: 0xae613702, 0x20aa: 0xa0106102, 0x20ab: 0xa0106102,\n\t0x20ac: 0xadc06002, 0x20ad: 0xadc06002, 0x20ae: 0xadc06002, 0x20af: 0xadc06002,\n\t0x20b0: 0xae605f02,\n\t// Block 0x83, offset 0x20c0\n\t0x20c0: 0xe00009bc, 0x20c1: 0xe00009c0, 0x20c2: 0x002c3a8b, 0x20c3: 0xf0000a04,\n\t0x20c4: 0x40081c20, 0x20c5: 0xe0000a5e, 0x20c6: 0xe0000a62, 0x20c7: 0x002cc28a,\n\t0x20c8: 0x40081e20, 0x20c9: 0xf0000a04, 0x20ca: 0x002d2285, 0x20cb: 0x002d688b,\n\t0x20cc: 0x002d688b, 0x20cd: 0x002d688b, 0x20ce: 0x002d6885, 0x20cf: 0xf0000202,\n\t0x20d0: 0x002d9a8b, 0x20d1: 0x002d9a8b, 0x20d2: 0x002e228b, 0x20d3: 0x002e2285,\n\t0x20d4: 0x40082020, 0x20d5: 0x002e9e8b, 0x20d6: 0xf000040a, 0x20d7: 0x40082220,\n\t0x20d8: 0x40082420, 0x20d9: 0x002f2c8b, 0x20da: 0x002f568b, 0x20db: 0x002f7a8b,\n\t0x20dc: 0x002f7a8b, 0x20dd: 0x002f7a8b, 0x20de: 0x40082620, 0x20df: 0x40082820,\n\t0x20e0: 0xf0001414, 0x20e1: 0xe0000fbd, 0x20e2: 0xf0001414, 0x20e3: 0x40082a20,\n\t0x20e4: 0x00312a8b, 0x20e5: 0x40082c20, 0x20e6: 0x0032a288, 0x20e7: 0x40082e20,\n\t0x20e8: 0x00312a8b, 0x20e9: 0x40083020, 0x20ea: 0x002dfe88, 0x20eb: 0xe000094d,\n\t0x20ec: 0x002c0a8b, 0x20ed: 0x002c3a8b, 0x20ee: 0x40083220, 0x20ef: 0x002c9885,\n\t0x20f0: 0x002c988b, 0x20f1: 0x002d088b, 0x20f2: 0x002d1e88, 0x20f3: 0x002e828b,\n\t0x20f4: 0x002ee285, 0x20f5: 0x00389084, 0x20f6: 0x00389284, 0x20f7: 0x00389484,\n\t0x20f8: 0x00389684, 0x20f9: 0x002d9a85, 0x20fa: 0x40083420, 0x20fb: 0xe0000b95,\n\t0x20fc: 0x00327e85, 0x20fd: 0x00325685, 0x20fe: 0x0032568b, 0x20ff: 0x00327e8b,\n\t// Block 0x84, offset 0x2100\n\t0x2100: 0x00093685, 0x2101: 0x40083620, 0x2102: 0x40083820, 0x2103: 0x40083a20,\n\t0x2104: 0x40083c20, 0x2105: 0x002c628b, 0x2106: 0x002c6285, 0x2107: 0x002c9885,\n\t0x2108: 0x002d9a85, 0x2109: 0x002dcc85, 0x210a: 0x40083e20, 0x210b: 0x400a6e20,\n\t0x210c: 0x40084020, 0x210d: 0xe00009c4, 0x210e: 0x402d1e20, 0x210f: 0x40084220,\n\t0x2110: 0xe00002cb, 0x2111: 0xe00002d3, 0x2112: 0xe00002b2, 0x2113: 0xe00002bb,\n\t0x2114: 0xe00003cd, 0x2115: 0xe00002c3, 0x2116: 0xe00003d1, 0x2117: 0xe00004ab,\n\t0x2118: 0xe0000579, 0x2119: 0xe00002c7, 0x211a: 0xe0000640, 0x211b: 0xe00002cf,\n\t0x211c: 0xe00004af, 0x211d: 0xe0000644, 0x211e: 0xe0000798, 0x211f: 0xf0001e1e,\n\t0x2120: 0x002d9a8a, 0x2121: 0xf0001f0a, 0x2122: 0xf0000a0a, 0x2123: 0xf0001f0a,\n\t0x2124: 0x0030be8a, 0x2125: 0xf0001f0a, 0x2126: 0xf0000a0a, 0x2127: 0xe00010bb,\n\t0x2128: 0xf0001f0a, 0x2129: 0x0030f68a, 0x212a: 0xf0001f0a, 0x212b: 0xf0000a0a,\n\t0x212c: 0x002e228a, 0x212d: 0x002c3a8a, 0x212e: 0x002c628a, 0x212f: 0x002e828a,\n\t0x2130: 0x002d9a84, 0x2131: 0xf0001f04, 0x2132: 0xf0000404, 0x2133: 0xf0001f04,\n\t0x2134: 0x0030be84, 0x2135: 0xf0001f04, 0x2136: 0xf0000404, 0x2137: 0xe00010b6,\n\t0x2138: 0xf0001f04, 0x2139: 0x0030f684, 0x213a: 0xf0001f04, 0x213b: 0xf0000404,\n\t0x213c: 0x002e2284, 0x213d: 0x002c3a84, 0x213e: 0x002c6284, 0x213f: 0x002e8284,\n\t// Block 0x85, offset 0x2140\n\t0x2140: 0x40287c20, 0x2141: 0x40287e20, 0x2142: 0x40288020, 0x2143: 0x002c5e88,\n\t0x2144: 0x402c5e20, 0x2145: 0xe00006c9, 0x2146: 0x40288220, 0x2147: 0x40288420,\n\t0x2148: 0x40288620, 0x2149: 0xe00001e2,\n\t0x2150: 0x40084420, 0x2151: 0x40084820, 0x2152: 0x40084620, 0x2153: 0x40084a20,\n\t0x2154: 0x40084c20, 0x2155: 0x40084e20, 0x2156: 0x40085020, 0x2157: 0x40085220,\n\t0x2158: 0x40085420, 0x2159: 0x40085620, 0x215a: 0xe00000c6, 0x215b: 0xe00000c9,\n\t0x215c: 0x40085820, 0x215d: 0x40085a20, 0x215e: 0x40085c20, 0x215f: 0x40085e20,\n\t0x2160: 0x40086020, 0x2161: 0x40086220, 0x2162: 0x40086420, 0x2163: 0x40086620,\n\t0x2164: 0x40086820, 0x2165: 0x40086a20, 0x2166: 0x40086c20, 0x2167: 0x40086e20,\n\t0x2168: 0x40087020, 0x2169: 0x40087220, 0x216a: 0x40087420, 0x216b: 0x40087620,\n\t0x216c: 0x40087820, 0x216d: 0x40087a20, 0x216e: 0xe00000cc, 0x216f: 0x40087c20,\n\t0x2170: 0x40087e20, 0x2171: 0x40088020, 0x2172: 0x40088220, 0x2173: 0x40088420,\n\t0x2174: 0x40088620, 0x2175: 0x40088820, 0x2176: 0x40088a20, 0x2177: 0x40088c20,\n\t0x2178: 0x40088e20, 0x2179: 0x40089020, 0x217a: 0x40089220, 0x217b: 0x40089420,\n\t0x217c: 0x40089620, 0x217d: 0x40089820, 0x217e: 0x40089a20, 0x217f: 0x40089c20,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x40089e20, 0x2181: 0x4008a020, 0x2182: 0x4008a220, 0x2183: 0x4008a420,\n\t0x2184: 0x4008a620, 0x2185: 0x4008a820, 0x2186: 0x4008aa20, 0x2187: 0x4008ac20,\n\t0x2188: 0x4008ae20, 0x2189: 0x4008b020, 0x218a: 0x4008b220, 0x218b: 0x4008b420,\n\t0x218c: 0x4008b620, 0x218d: 0xe00000cf, 0x218e: 0xe00000d5, 0x218f: 0xe00000d2,\n\t0x2190: 0x4008b820, 0x2191: 0x4008ba20, 0x2192: 0x4008bc20, 0x2193: 0x4008be20,\n\t0x2194: 0x4008c020, 0x2195: 0x4008c220, 0x2196: 0x4008c420, 0x2197: 0x4008c620,\n\t0x2198: 0x4008c820, 0x2199: 0x4008ca20, 0x219a: 0x4008cc20, 0x219b: 0x4008ce20,\n\t0x219c: 0x4008d020, 0x219d: 0x4008d220, 0x219e: 0x4008d420, 0x219f: 0x4008d620,\n\t0x21a0: 0x4008d820, 0x21a1: 0x4008da20, 0x21a2: 0x4008dc20, 0x21a3: 0x4008de20,\n\t0x21a4: 0x4008e020, 0x21a5: 0x4008e220, 0x21a6: 0x4008e420, 0x21a7: 0x4008e620,\n\t0x21a8: 0x4008e820, 0x21a9: 0x4008ea20, 0x21aa: 0x4008ec20, 0x21ab: 0x4008ee20,\n\t0x21ac: 0x4008f020, 0x21ad: 0x4008f220, 0x21ae: 0x4008f420, 0x21af: 0x4008f620,\n\t0x21b0: 0x4008f820, 0x21b1: 0x4008fa20, 0x21b2: 0x4008fc20, 0x21b3: 0x4008fe20,\n\t0x21b4: 0x40090020, 0x21b5: 0x40090220, 0x21b6: 0x40090420, 0x21b7: 0x40090620,\n\t0x21b8: 0x40090820, 0x21b9: 0x40090a20, 0x21ba: 0x40090c20, 0x21bb: 0x40090e20,\n\t0x21bc: 0x40091020, 0x21bd: 0x40091220, 0x21be: 0x40091420, 0x21bf: 0x40091620,\n\t// Block 0x87, offset 0x21c0\n\t0x21c0: 0x40091820, 0x21c1: 0x40091a20, 0x21c2: 0x40091c20, 0x21c3: 0x40091e20,\n\t0x21c4: 0xe00000d8, 0x21c5: 0x40092020, 0x21c6: 0x40092220, 0x21c7: 0x40092420,\n\t0x21c8: 0x40092620, 0x21c9: 0xe00000db, 0x21ca: 0x40092820, 0x21cb: 0x40092a20,\n\t0x21cc: 0xe00000de, 0x21cd: 0x40092c20, 0x21ce: 0x40093020, 0x21cf: 0x40093220,\n\t0x21d0: 0x40093420, 0x21d1: 0x40093620, 0x21d2: 0x40094e20, 0x21d3: 0x40095220,\n\t0x21d4: 0x40095420, 0x21d5: 0x40095620, 0x21d6: 0x40095a20, 0x21d7: 0x40095c20,\n\t0x21d8: 0x40095e20, 0x21d9: 0x40096020, 0x21da: 0x40096220, 0x21db: 0x40096420,\n\t0x21dc: 0x40096820, 0x21dd: 0x40096c20, 0x21de: 0x40096e20, 0x21df: 0x40097020,\n\t0x21e0: 0x40097220, 0x21e1: 0x40097420, 0x21e2: 0x40097620, 0x21e3: 0x40097820,\n\t0x21e4: 0xe00000ea, 0x21e5: 0x40097a20, 0x21e6: 0xe00000ed, 0x21e7: 0x40097c20,\n\t0x21e8: 0x40097e20, 0x21e9: 0x40098020, 0x21ea: 0x40098220, 0x21eb: 0x40098420,\n\t0x21ec: 0xf0001f04, 0x21ed: 0xf0000404, 0x21ee: 0x40098620, 0x21ef: 0xf0001f04,\n\t0x21f0: 0xf0000404, 0x21f1: 0x40098820, 0x21f2: 0x40098a20, 0x21f3: 0x40098c20,\n\t0x21f4: 0x40098e20, 0x21f5: 0x40099020, 0x21f6: 0x40099220, 0x21f7: 0x40099420,\n\t0x21f8: 0x40099620, 0x21f9: 0x40099820, 0x21fa: 0x40099a20, 0x21fb: 0x40099c20,\n\t0x21fc: 0x40099e20, 0x21fd: 0x4009a020, 0x21fe: 0x4009a220, 0x21ff: 0x4009a420,\n\t// Block 0x88, offset 0x2200\n\t0x2200: 0x4009a620, 0x2201: 0xe00000f5, 0x2202: 0x4009a820, 0x2203: 0x4009aa20,\n\t0x2204: 0xe00000f8, 0x2205: 0x4009ac20, 0x2206: 0x4009ae20, 0x2207: 0xe00000fb,\n\t0x2208: 0x4009b020, 0x2209: 0xe00000fe, 0x220a: 0x4009b220, 0x220b: 0x4009b420,\n\t0x220c: 0x4009b620, 0x220d: 0x4009b820, 0x220e: 0x4009ba20, 0x220f: 0x4009bc20,\n\t0x2210: 0x4009be20, 0x2211: 0x4009c020, 0x2212: 0x4009c220, 0x2213: 0x4009c420,\n\t0x2214: 0x4009c620, 0x2215: 0x4009c820, 0x2216: 0x4009ca20, 0x2217: 0x4009cc20,\n\t0x2218: 0x4009ce20, 0x2219: 0x4009d020, 0x221a: 0x4009d220, 0x221b: 0x4009d420,\n\t0x221c: 0x4009d620, 0x221d: 0x4009d820, 0x221e: 0x4009da20, 0x221f: 0x4009dc20,\n\t0x2220: 0xe00000e4, 0x2221: 0x4009de20, 0x2222: 0xe0000104, 0x2223: 0x4009e020,\n\t0x2224: 0x4009e220, 0x2225: 0x4009e420, 0x2226: 0x4009e620, 0x2227: 0x4009e820,\n\t0x2228: 0x4009ea20, 0x2229: 0x4009ec20, 0x222a: 0x4009ee20, 0x222b: 0x4009f020,\n\t0x222c: 0x4009f220, 0x222d: 0xe0000101, 0x222e: 0xe00000e1, 0x222f: 0xe00000e7,\n\t0x2230: 0xe0000107, 0x2231: 0xe000010a, 0x2232: 0x4009f420, 0x2233: 0x4009f620,\n\t0x2234: 0xe000010d, 0x2235: 0xe0000110, 0x2236: 0x4009f820, 0x2237: 0x4009fa20,\n\t0x2238: 0xe0000113, 0x2239: 0xe0000116, 0x223a: 0x4009fc20, 0x223b: 0x4009fe20,\n\t0x223c: 0x400a0020, 0x223d: 0x400a0220, 0x223e: 0x400a0420, 0x223f: 0x400a0620,\n\t// Block 0x89, offset 0x2240\n\t0x2240: 0xe0000119, 0x2241: 0xe000011c, 0x2242: 0x400a0820, 0x2243: 0x400a0a20,\n\t0x2244: 0xe0000125, 0x2245: 0xe0000128, 0x2246: 0x400a0c20, 0x2247: 0x400a0e20,\n\t0x2248: 0xe000012b, 0x2249: 0xe000012e, 0x224a: 0x400a1020, 0x224b: 0x400a1220,\n\t0x224c: 0x400a1420, 0x224d: 0x400a1620, 0x224e: 0x400a1820, 0x224f: 0x400a1a20,\n\t0x2250: 0x400a1c20, 0x2251: 0x400a1e20, 0x2252: 0x400a2020, 0x2253: 0x400a2220,\n\t0x2254: 0x400a2420, 0x2255: 0x400a2620, 0x2256: 0x400a2820, 0x2257: 0x400a2a20,\n\t0x2258: 0x400a2c20, 0x2259: 0x400a2e20, 0x225a: 0x400a3020, 0x225b: 0x400a3220,\n\t0x225c: 0x400a3420, 0x225d: 0x400a3620, 0x225e: 0x400a3820, 0x225f: 0x400a3a20,\n\t0x2260: 0x400a3c20, 0x2261: 0x400a3e20, 0x2262: 0x400a4020, 0x2263: 0x400a4220,\n\t0x2264: 0x400a4420, 0x2265: 0x400a4620, 0x2266: 0x400a4820, 0x2267: 0x400a4a20,\n\t0x2268: 0x400a4c20, 0x2269: 0x400a4e20, 0x226a: 0x400a5020, 0x226b: 0x400a5220,\n\t0x226c: 0xe0000137, 0x226d: 0xe000013a, 0x226e: 0xe000013d, 0x226f: 0xe0000140,\n\t0x2270: 0x400a5420, 0x2271: 0x400a5620, 0x2272: 0x400a5820, 0x2273: 0x400a5a20,\n\t0x2274: 0x400a5c20, 0x2275: 0x400a5e20, 0x2276: 0x400a6020, 0x2277: 0x400a6220,\n\t0x2278: 0x400a6420, 0x2279: 0x400a6620, 0x227a: 0x400a6820, 0x227b: 0x400a6a20,\n\t0x227c: 0x400a6c20, 0x227d: 0x400a7020, 0x227e: 0x400a7220, 0x227f: 0x400a7420,\n\t// Block 0x8a, offset 0x2280\n\t0x2280: 0x400a7620, 0x2281: 0x400a7820, 0x2282: 0x400a7a20, 0x2283: 0x400a7c20,\n\t0x2284: 0x400a7e20, 0x2285: 0x400a8020, 0x2286: 0x400a8220, 0x2287: 0x400a8420,\n\t0x2288: 0x400a8620, 0x2289: 0x400a8820, 0x228a: 0x400a8a20, 0x228b: 0x400a8c20,\n\t0x228c: 0x400a8e20, 0x228d: 0x400a9020, 0x228e: 0x400a9220, 0x228f: 0x400a9420,\n\t0x2290: 0x400a9620, 0x2291: 0x400a9820, 0x2292: 0x400a9a20, 0x2293: 0x400a9c20,\n\t0x2294: 0x400a9e20, 0x2295: 0x400aa020, 0x2296: 0x400aa220, 0x2297: 0x400aa420,\n\t0x2298: 0x400aa620, 0x2299: 0x400aa820, 0x229a: 0x400aaa20, 0x229b: 0x400aac20,\n\t0x229c: 0x400aae20, 0x229d: 0x400ab020, 0x229e: 0x400ab220, 0x229f: 0x400ab420,\n\t0x22a0: 0xe000011f, 0x22a1: 0xe0000122, 0x22a2: 0xe0000131, 0x22a3: 0xe0000134,\n\t0x22a4: 0x400ab620, 0x22a5: 0x400ab820, 0x22a6: 0x400aba20, 0x22a7: 0x400abc20,\n\t0x22a8: 0x400abe20, 0x22a9: 0x400ac020, 0x22aa: 0xe0000143, 0x22ab: 0xe0000146,\n\t0x22ac: 0xe0000149, 0x22ad: 0xe000014c, 0x22ae: 0x400ac220, 0x22af: 0x400ac420,\n\t0x22b0: 0x400ac620, 0x22b1: 0x400ac820, 0x22b2: 0x400aca20, 0x22b3: 0x400acc20,\n\t0x22b4: 0x400ace20, 0x22b5: 0x400ad020, 0x22b6: 0x400ad220, 0x22b7: 0x400ad420,\n\t0x22b8: 0x400ad620, 0x22b9: 0x400ad820, 0x22ba: 0x400ada20, 0x22bb: 0x400adc20,\n\t0x22bc: 0x400ade20, 0x22bd: 0x400ae020, 0x22be: 0x400ae220, 0x22bf: 0x400ae420,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c0: 0x400ae620, 0x22c1: 0x400ae820, 0x22c2: 0x400aea20, 0x22c3: 0x400aec20,\n\t0x22c4: 0x400aee20, 0x22c5: 0x400af020, 0x22c6: 0x400af220, 0x22c7: 0x400af420,\n\t0x22c8: 0x400af620, 0x22c9: 0x400af820, 0x22ca: 0x400afa20, 0x22cb: 0x400afc20,\n\t0x22cc: 0x400afe20, 0x22cd: 0x400b0020, 0x22ce: 0x400b0220, 0x22cf: 0x400b0420,\n\t0x22d0: 0x400b0620, 0x22d1: 0x400b0820, 0x22d2: 0x400b0a20, 0x22d3: 0x400b0c20,\n\t0x22d4: 0x400b0e20, 0x22d5: 0x400b1020, 0x22d6: 0x400b1220, 0x22d7: 0x400b1420,\n\t0x22d8: 0x400b1620, 0x22d9: 0x400b1820, 0x22da: 0x400b1a20, 0x22db: 0x400b1c20,\n\t0x22dc: 0x400b1e20, 0x22dd: 0x400b2020, 0x22de: 0x400b2220, 0x22df: 0x400b2420,\n\t0x22e0: 0x400b2620, 0x22e1: 0x400b2820, 0x22e2: 0x400b2a20, 0x22e3: 0x400b2c20,\n\t0x22e4: 0x400b2e20, 0x22e5: 0x400b3020, 0x22e6: 0x400b3220, 0x22e7: 0x400b3420,\n\t0x22e8: 0x400b3620, 0x22e9: 0x40049c20, 0x22ea: 0x40049e20, 0x22eb: 0x400b3820,\n\t0x22ec: 0x400b3a20, 0x22ed: 0x400b3c20, 0x22ee: 0x400b3e20, 0x22ef: 0x400b4020,\n\t0x22f0: 0x400b4220, 0x22f1: 0x400b4420, 0x22f2: 0x400b4620, 0x22f3: 0x400b4820,\n\t0x22f4: 0x400b4a20, 0x22f5: 0x400b4c20, 0x22f6: 0x400b4e20, 0x22f7: 0x400b5020,\n\t0x22f8: 0x400b5220, 0x22f9: 0x400b5420, 0x22fa: 0x400b5620, 0x22fb: 0x400b5820,\n\t0x22fc: 0x400b5a20, 0x22fd: 0x400b5c20, 0x22fe: 0x400b5e20, 0x22ff: 0x400b6020,\n\t// Block 0x8c, offset 0x2300\n\t0x2300: 0x400b6220, 0x2301: 0x400b6420, 0x2302: 0x400b6620, 0x2303: 0x400b6820,\n\t0x2304: 0x400b6a20, 0x2305: 0x400b6c20, 0x2306: 0x400b6e20, 0x2307: 0x400b7020,\n\t0x2308: 0x400b7220, 0x2309: 0x400b7420, 0x230a: 0x400b7620, 0x230b: 0x400b7820,\n\t0x230c: 0x400b7a20, 0x230d: 0x400b7c20, 0x230e: 0x400b7e20, 0x230f: 0x400b8020,\n\t0x2310: 0x400b8220, 0x2311: 0x400b8420, 0x2312: 0x400b8620, 0x2313: 0x400b8820,\n\t0x2314: 0x400b8a20, 0x2315: 0x400b8c20, 0x2316: 0x400b8e20, 0x2317: 0x400b9020,\n\t0x2318: 0x400b9220, 0x2319: 0x400b9420, 0x231a: 0x400b9620, 0x231b: 0x400b9820,\n\t0x231c: 0x400b9a20, 0x231d: 0x400b9c20, 0x231e: 0x400b9e20, 0x231f: 0x400ba020,\n\t0x2320: 0x400ba220, 0x2321: 0x400ba420, 0x2322: 0x400ba620, 0x2323: 0x400ba820,\n\t0x2324: 0x400baa20, 0x2325: 0x400bac20, 0x2326: 0x400bae20, 0x2327: 0x400bb020,\n\t0x2328: 0x400bb220, 0x2329: 0x400bb420, 0x232a: 0x400bb620, 0x232b: 0x400bb820,\n\t0x232c: 0x400bba20, 0x232d: 0x400bbc20, 0x232e: 0x400bbe20, 0x232f: 0x400bc020,\n\t0x2330: 0x400bc220, 0x2331: 0x400bc420, 0x2332: 0x400bc620, 0x2333: 0x400bc820,\n\t0x2334: 0x400bca20, 0x2335: 0x400bcc20, 0x2336: 0x400bce20, 0x2337: 0x400bd020,\n\t0x2338: 0x400bd220, 0x2339: 0x400bd420, 0x233a: 0x400bd620, 0x233b: 0x400bd820,\n\t0x233c: 0x400bda20, 0x233d: 0x400bdc20, 0x233e: 0x400bde20, 0x233f: 0x400be020,\n\t// Block 0x8d, offset 0x2340\n\t0x2340: 0x400be220, 0x2341: 0x400be420, 0x2342: 0x400be620, 0x2343: 0x400be820,\n\t0x2344: 0x400bea20, 0x2345: 0x400bec20, 0x2346: 0x400bee20, 0x2347: 0x400bf020,\n\t0x2348: 0x400bf220, 0x2349: 0x400bf420, 0x234a: 0x400bf620, 0x234b: 0x400bf820,\n\t0x234c: 0x400bfa20, 0x234d: 0x400bfc20, 0x234e: 0x400bfe20, 0x234f: 0x400c0020,\n\t0x2350: 0x400c0220, 0x2351: 0x400c0420, 0x2352: 0x400c0620, 0x2353: 0x400c0820,\n\t0x2354: 0x400c0a20, 0x2355: 0x400c0c20, 0x2356: 0x400c0e20, 0x2357: 0x400c1020,\n\t0x2358: 0x400c1220, 0x2359: 0x400c1420, 0x235a: 0x400c1620, 0x235b: 0x400c1820,\n\t0x235c: 0x400c1a20, 0x235d: 0x400c1c20, 0x235e: 0x400c1e20, 0x235f: 0x400c2020,\n\t0x2360: 0x400c2220, 0x2361: 0x400c2420, 0x2362: 0x400c2620, 0x2363: 0x400c2820,\n\t0x2364: 0x400c2a20, 0x2365: 0x400c2c20, 0x2366: 0x400c2e20, 0x2367: 0x400c3020,\n\t0x2368: 0x400c3220, 0x2369: 0x400c3420, 0x236a: 0x400c3620, 0x236b: 0x400c3820,\n\t0x236c: 0x400c3a20, 0x236d: 0x400c3c20, 0x236e: 0x400c3e20, 0x236f: 0x400c4020,\n\t0x2370: 0x400c4220, 0x2371: 0x400c4420, 0x2372: 0x400c4620, 0x2373: 0x400c4820,\n\t0x2374: 0x400c4a20, 0x2375: 0x400c4c20, 0x2376: 0x400c4e20, 0x2377: 0x400c5020,\n\t0x2378: 0x400c5220, 0x2379: 0x400c5420, 0x237a: 0x400c5620, 0x237b: 0x400c5820,\n\t0x237c: 0x400c5a20, 0x237d: 0x400c5c20, 0x237e: 0x400c5e20, 0x237f: 0x400c6020,\n\t// Block 0x8e, offset 0x2380\n\t0x2380: 0x400c6220, 0x2381: 0x400c6420, 0x2382: 0x400c6620, 0x2383: 0x400c6820,\n\t0x2384: 0x400c6a20, 0x2385: 0x400c6c20, 0x2386: 0x400c6e20, 0x2387: 0x400c7020,\n\t0x2388: 0x400c7220, 0x2389: 0x400c7420, 0x238a: 0x400c7620, 0x238b: 0x400c7820,\n\t0x238c: 0x400c7a20, 0x238d: 0x400c7c20, 0x238e: 0x400c7e20, 0x238f: 0x400c8020,\n\t0x2390: 0x400c8220, 0x2391: 0x400c8420, 0x2392: 0x400c8620, 0x2393: 0x400c8820,\n\t0x2394: 0x400c8a20, 0x2395: 0x400c8c20, 0x2396: 0x400c8e20, 0x2397: 0x400c9020,\n\t0x2398: 0x400c9220, 0x2399: 0x400c9420, 0x239a: 0x400c9620, 0x239b: 0x400c9820,\n\t0x239c: 0x400c9a20, 0x239d: 0x400c9c20, 0x239e: 0x400c9e20, 0x239f: 0x400ca020,\n\t0x23a0: 0x400ca220, 0x23a1: 0x400ca420, 0x23a2: 0x400ca620, 0x23a3: 0x400ca820,\n\t0x23a4: 0x400caa20, 0x23a5: 0x400cac20, 0x23a6: 0x400cae20, 0x23a7: 0x400cb020,\n\t0x23a8: 0x400cb220, 0x23a9: 0x400cb420, 0x23aa: 0x400cb620, 0x23ab: 0x400cb820,\n\t0x23ac: 0x400cba20, 0x23ad: 0x400cbc20, 0x23ae: 0x400cbe20, 0x23af: 0x400cc020,\n\t0x23b0: 0x400cc220, 0x23b1: 0x400cc420, 0x23b2: 0x400cc620, 0x23b3: 0x400cc820,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x400cca20, 0x23c1: 0x400ccc20, 0x23c2: 0x400cce20, 0x23c3: 0x400cd020,\n\t0x23c4: 0x400cd220, 0x23c5: 0x400cd420, 0x23c6: 0x400cd620, 0x23c7: 0x400cd820,\n\t0x23c8: 0x400cda20, 0x23c9: 0x400cdc20, 0x23ca: 0x400cde20, 0x23cb: 0x400ce020,\n\t0x23cc: 0x400ce220, 0x23cd: 0x400ce420, 0x23ce: 0x400ce620, 0x23cf: 0x400ce820,\n\t0x23d0: 0x400cea20, 0x23d1: 0x400cec20, 0x23d2: 0x400cee20, 0x23d3: 0x400cf020,\n\t0x23d4: 0x400cf220, 0x23d5: 0x400cf420, 0x23d6: 0x400cf620, 0x23d7: 0x400cf820,\n\t0x23d8: 0x400cfa20, 0x23d9: 0x400cfc20, 0x23da: 0x400cfe20, 0x23db: 0x400d0020,\n\t0x23dc: 0x400d0220, 0x23dd: 0x400d0420, 0x23de: 0x400d0620, 0x23df: 0x400d0820,\n\t0x23e0: 0x400d0a20, 0x23e1: 0x400d0c20, 0x23e2: 0x400d0e20, 0x23e3: 0x400d1020,\n\t0x23e4: 0x400d1220, 0x23e5: 0x400d1420, 0x23e6: 0x400d1620,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x400d1820, 0x2401: 0x400d1a20, 0x2402: 0x400d1c20, 0x2403: 0x400d1e20,\n\t0x2404: 0x400d2020, 0x2405: 0x400d2220, 0x2406: 0x400d2420, 0x2407: 0x400d2620,\n\t0x2408: 0x400d2820, 0x2409: 0x400d2a20, 0x240a: 0x400d2c20,\n\t0x2420: 0x0029ce86, 0x2421: 0x0029d086, 0x2422: 0x0029d286, 0x2423: 0x0029d486,\n\t0x2424: 0x0029d686, 0x2425: 0x0029d886, 0x2426: 0x0029da86, 0x2427: 0x0029dc86,\n\t0x2428: 0x0029de86, 0x2429: 0xf0000606, 0x242a: 0xf0000606, 0x242b: 0xf0000606,\n\t0x242c: 0xf0000606, 0x242d: 0xf0000606, 0x242e: 0xf0000606, 0x242f: 0xf0000606,\n\t0x2430: 0xf0000606, 0x2431: 0xf0000606, 0x2432: 0xf0000606, 0x2433: 0xf0000606,\n\t0x2434: 0xf0000404, 0x2435: 0xf0000404, 0x2436: 0xf0000404, 0x2437: 0xf0000404,\n\t0x2438: 0xf0000404, 0x2439: 0xf0000404, 0x243a: 0xf0000404, 0x243b: 0xf0000404,\n\t0x243c: 0xf0000404, 0x243d: 0xe0000015, 0x243e: 0xe000001a, 0x243f: 0xe000001f,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0xe0000024, 0x2441: 0xe0000029, 0x2442: 0xe000002e, 0x2443: 0xe0000033,\n\t0x2444: 0xe0000038, 0x2445: 0xe000003d, 0x2446: 0xe0000042, 0x2447: 0xe0000047,\n\t0x2448: 0xf0001f04, 0x2449: 0xf0001f04, 0x244a: 0xf0001f04, 0x244b: 0xf0001f04,\n\t0x244c: 0xf0001f04, 0x244d: 0xf0001f04, 0x244e: 0xf0001f04, 0x244f: 0xf0001f04,\n\t0x2450: 0xf0001f04, 0x2451: 0xf0000404, 0x2452: 0xf0000404, 0x2453: 0xf0000404,\n\t0x2454: 0xf0000404, 0x2455: 0xf0000404, 0x2456: 0xf0000404, 0x2457: 0xf0000404,\n\t0x2458: 0xf0000404, 0x2459: 0xf0000404, 0x245a: 0xf0000404, 0x245b: 0xf0000404,\n\t0x245c: 0xf0000404, 0x245d: 0xf0000404, 0x245e: 0xf0000404, 0x245f: 0xf0000404,\n\t0x2460: 0xf0000404, 0x2461: 0xf0000404, 0x2462: 0xf0000404, 0x2463: 0xf0000404,\n\t0x2464: 0xf0000404, 0x2465: 0xf0000404, 0x2466: 0xf0000404, 0x2467: 0xf0000404,\n\t0x2468: 0xf0000404, 0x2469: 0xf0000404, 0x246a: 0xf0000404, 0x246b: 0xf0000404,\n\t0x246c: 0xf0000404, 0x246d: 0xf0000404, 0x246e: 0xf0000404, 0x246f: 0xf0000404,\n\t0x2470: 0xf0000404, 0x2471: 0xf0000404, 0x2472: 0xf0000404, 0x2473: 0xf0000404,\n\t0x2474: 0xf0000404, 0x2475: 0xf0000404, 0x2476: 0x002bde8c, 0x2477: 0x002c0a8c,\n\t0x2478: 0x002c3a8c, 0x2479: 0x002c628c, 0x247a: 0x002c988c, 0x247b: 0x002d088c,\n\t0x247c: 0x002d228c, 0x247d: 0x002d688c, 0x247e: 0x002d9a8c, 0x247f: 0x002dcc8c,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x002dfe8c, 0x2481: 0x002e228c, 0x2482: 0x002e828c, 0x2483: 0x002e9e8c,\n\t0x2484: 0x002ee28c, 0x2485: 0x002f2c8c, 0x2486: 0x002f568c, 0x2487: 0x002f7a8c,\n\t0x2488: 0x002fe68c, 0x2489: 0x00302c8c, 0x248a: 0x00306c8c, 0x248b: 0x0030be8c,\n\t0x248c: 0x0030e28c, 0x248d: 0x0030f68c, 0x248e: 0x0031008c, 0x248f: 0x00312a8c,\n\t0x2490: 0x002bde86, 0x2491: 0x002c0a86, 0x2492: 0x002c3a86, 0x2493: 0x002c6286,\n\t0x2494: 0x002c9886, 0x2495: 0x002d0886, 0x2496: 0x002d2286, 0x2497: 0x002d6886,\n\t0x2498: 0x002d9a86, 0x2499: 0x002dcc86, 0x249a: 0x002dfe86, 0x249b: 0x002e2286,\n\t0x249c: 0x002e8286, 0x249d: 0x002e9e86, 0x249e: 0x002ee286, 0x249f: 0x002f2c86,\n\t0x24a0: 0x002f5686, 0x24a1: 0x002f7a86, 0x24a2: 0x002fe686, 0x24a3: 0x00302c86,\n\t0x24a4: 0x00306c86, 0x24a5: 0x0030be86, 0x24a6: 0x0030e286, 0x24a7: 0x0030f686,\n\t0x24a8: 0x00310086, 0x24a9: 0x00312a86, 0x24aa: 0x0029cc86, 0x24ab: 0xe00002e6,\n\t0x24ac: 0xe00002e9, 0x24ad: 0xe00002ec, 0x24ae: 0xe00002ef, 0x24af: 0xe00002f2,\n\t0x24b0: 0xe00002f5, 0x24b1: 0xe00002f8, 0x24b2: 0xe00002fb, 0x24b3: 0xe00002fe,\n\t0x24b4: 0xe00003d5, 0x24b5: 0x0029ce86, 0x24b6: 0x0029d086, 0x24b7: 0x0029d286,\n\t0x24b8: 0x0029d486, 0x24b9: 0x0029d686, 0x24ba: 0x0029d886, 0x24bb: 0x0029da86,\n\t0x24bc: 0x0029dc86, 0x24bd: 0x0029de86, 0x24be: 0xe00002d7, 0x24bf: 0x0029cc86,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x400d2e20, 0x24c1: 0x400d3020, 0x24c2: 0x400d3220, 0x24c3: 0x400d3420,\n\t0x24c4: 0x400d3620, 0x24c5: 0x400d3820, 0x24c6: 0x400d3a20, 0x24c7: 0x400d3c20,\n\t0x24c8: 0x400d3e20, 0x24c9: 0x400d4020, 0x24ca: 0x400d4220, 0x24cb: 0x400d4420,\n\t0x24cc: 0x400d4620, 0x24cd: 0x400d4820, 0x24ce: 0x400d4a20, 0x24cf: 0x400d4c20,\n\t0x24d0: 0x400d4e20, 0x24d1: 0x400d5020, 0x24d2: 0x400d5220, 0x24d3: 0x400d5420,\n\t0x24d4: 0x400d5620, 0x24d5: 0x400d5820, 0x24d6: 0x400d5a20, 0x24d7: 0x400d5c20,\n\t0x24d8: 0x400d5e20, 0x24d9: 0x400d6020, 0x24da: 0x400d6220, 0x24db: 0x400d6420,\n\t0x24dc: 0x400d6620, 0x24dd: 0x400d6820, 0x24de: 0x400d6a20, 0x24df: 0x400d6c20,\n\t0x24e0: 0x400d6e20, 0x24e1: 0x400d7020, 0x24e2: 0x400d7220, 0x24e3: 0x400d7420,\n\t0x24e4: 0x400d7620, 0x24e5: 0x400d7820, 0x24e6: 0x400d7a20, 0x24e7: 0x400d7c20,\n\t0x24e8: 0x400d7e20, 0x24e9: 0x400d8020, 0x24ea: 0x400d8220, 0x24eb: 0x400d8420,\n\t0x24ec: 0x400d8620, 0x24ed: 0x400d8820, 0x24ee: 0x400d8a20, 0x24ef: 0x400d8c20,\n\t0x24f0: 0x400d8e20, 0x24f1: 0x400d9020, 0x24f2: 0x400d9220, 0x24f3: 0x400d9420,\n\t0x24f4: 0x400d9620, 0x24f5: 0x400d9820, 0x24f6: 0x400d9a20, 0x24f7: 0x400d9c20,\n\t0x24f8: 0x400d9e20, 0x24f9: 0x400da020, 0x24fa: 0x400da220, 0x24fb: 0x400da420,\n\t0x24fc: 0x400da620, 0x24fd: 0x400da820, 0x24fe: 0x400daa20, 0x24ff: 0x400dac20,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x400dae20, 0x2501: 0x400db020, 0x2502: 0x400db220, 0x2503: 0x400db420,\n\t0x2504: 0x400db620, 0x2505: 0x400db820, 0x2506: 0x400dba20, 0x2507: 0x400dbc20,\n\t0x2508: 0x400dbe20, 0x2509: 0x400dc020, 0x250a: 0x400dc220, 0x250b: 0x400dc420,\n\t0x250c: 0x400dc620, 0x250d: 0x400dc820, 0x250e: 0x400dca20, 0x250f: 0x400dcc20,\n\t0x2510: 0x400dce20, 0x2511: 0x400dd020, 0x2512: 0x400dd220, 0x2513: 0x400dd420,\n\t0x2514: 0x400dd620, 0x2515: 0x400dd820, 0x2516: 0x400dda20, 0x2517: 0x400ddc20,\n\t0x2518: 0x400dde20, 0x2519: 0x400de020, 0x251a: 0x400de220, 0x251b: 0x400de420,\n\t0x251c: 0x400de620, 0x251d: 0x400de820, 0x251e: 0x400dea20, 0x251f: 0x400dec20,\n\t0x2520: 0x400dee20, 0x2521: 0x400df020, 0x2522: 0x400df220, 0x2523: 0x400df420,\n\t0x2524: 0x400df620, 0x2525: 0x400df820, 0x2526: 0x400dfa20, 0x2527: 0x400dfc20,\n\t0x2528: 0x400dfe20, 0x2529: 0x400e0020, 0x252a: 0x400e0220, 0x252b: 0x400e0420,\n\t0x252c: 0x400e0620, 0x252d: 0x400e0820, 0x252e: 0x400e0a20, 0x252f: 0x400e0c20,\n\t0x2530: 0x400e0e20, 0x2531: 0x400e1020, 0x2532: 0x400e1220, 0x2533: 0x400e1420,\n\t0x2534: 0x400e1620, 0x2535: 0x400e1820, 0x2536: 0x400e1a20, 0x2537: 0x400e1c20,\n\t0x2538: 0x400e1e20, 0x2539: 0x400e2020, 0x253a: 0x400e2220, 0x253b: 0x400e2420,\n\t0x253c: 0x400e2620, 0x253d: 0x400e2820, 0x253e: 0x400e2a20, 0x253f: 0x400e2c20,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x400e2e20, 0x2541: 0x400e3020, 0x2542: 0x400e3220, 0x2543: 0x400e3420,\n\t0x2544: 0x400e3620, 0x2545: 0x400e3820, 0x2546: 0x400e3a20, 0x2547: 0x400e3c20,\n\t0x2548: 0x400e3e20, 0x2549: 0x400e4020, 0x254a: 0x400e4220, 0x254b: 0x400e4420,\n\t0x254c: 0x400e4620, 0x254d: 0x400e4820, 0x254e: 0x400e4a20, 0x254f: 0x400e4c20,\n\t0x2550: 0x400e4e20, 0x2551: 0x400e5020, 0x2552: 0x400e5220, 0x2553: 0x400e5420,\n\t0x2554: 0x400e5620, 0x2555: 0x400e5820, 0x2556: 0x400e5a20, 0x2557: 0x400e5c20,\n\t0x2558: 0x400e5e20, 0x2559: 0x400e6020, 0x255a: 0x400e6220, 0x255b: 0x400e6420,\n\t0x255c: 0x400e6620, 0x255d: 0x400e6820, 0x255e: 0x400e6a20, 0x255f: 0x400e6c20,\n\t0x2560: 0x400e6e20, 0x2561: 0x400e7020, 0x2562: 0x400e7220, 0x2563: 0x400e7420,\n\t0x2564: 0x400e7620, 0x2565: 0x400e7820, 0x2566: 0x400e7a20, 0x2567: 0x400e7c20,\n\t0x2568: 0x400e7e20, 0x2569: 0x400e8020, 0x256a: 0x400e8220, 0x256b: 0x400e8420,\n\t0x256c: 0x400e8620, 0x256d: 0x400e8820, 0x256e: 0x400e8a20, 0x256f: 0x400e8c20,\n\t0x2570: 0x400e8e20, 0x2571: 0x400e9020, 0x2572: 0x400e9220, 0x2573: 0x400e9420,\n\t0x2574: 0x400e9620, 0x2575: 0x400e9820, 0x2576: 0x400e9a20, 0x2577: 0x400e9c20,\n\t0x2578: 0x400e9e20, 0x2579: 0x400ea020, 0x257a: 0x400ea220, 0x257b: 0x400ea420,\n\t0x257c: 0x400ea620, 0x257d: 0x400ea820, 0x257e: 0x400eaa20, 0x257f: 0x400eac20,\n\t// Block 0x96, offset 0x2580\n\t0x2580: 0x400eae20, 0x2581: 0x400eb020, 0x2582: 0x400eb220, 0x2583: 0x400eb420,\n\t0x2584: 0x400eb620, 0x2585: 0x400eb820, 0x2586: 0x400eba20, 0x2587: 0x400ebc20,\n\t0x2588: 0x400ebe20, 0x2589: 0x400ec020, 0x258a: 0x400ec220, 0x258b: 0x400ec420,\n\t0x258c: 0x400ec620, 0x258d: 0x400ec820, 0x258e: 0x400eca20, 0x258f: 0x400ecc20,\n\t0x2590: 0x400ece20, 0x2591: 0x400ed020, 0x2592: 0x400ed220, 0x2593: 0x400ed420,\n\t0x2594: 0x400ed620, 0x2595: 0x400ed820, 0x2596: 0x400eda20, 0x2597: 0x400edc20,\n\t0x2598: 0x400ede20, 0x2599: 0x400ee020, 0x259a: 0x400ee220, 0x259b: 0x400ee420,\n\t0x259c: 0x400ee620, 0x259d: 0x400ee820, 0x259e: 0x400eea20, 0x259f: 0x400eec20,\n\t0x25a0: 0x400eee20, 0x25a1: 0x400ef020, 0x25a2: 0x400ef220, 0x25a3: 0x400ef420,\n\t0x25a4: 0x400ef620, 0x25a5: 0x400ef820, 0x25a6: 0x400efa20, 0x25a7: 0x400efc20,\n\t0x25a8: 0x400efe20, 0x25a9: 0x400f0020, 0x25aa: 0x400f0220, 0x25ab: 0x400f0420,\n\t0x25ac: 0x400f0620, 0x25ad: 0x400f0820, 0x25ae: 0x400f0a20, 0x25af: 0x400f0c20,\n\t0x25b0: 0x400f0e20, 0x25b1: 0x400f1020, 0x25b2: 0x400f1220, 0x25b3: 0x400f1420,\n\t0x25b4: 0x400f1620, 0x25b5: 0x400f1820, 0x25b6: 0x400f1a20, 0x25b7: 0x400f1c20,\n\t0x25b8: 0x400f1e20, 0x25b9: 0x400f2020, 0x25ba: 0x400f2220, 0x25bb: 0x400f2420,\n\t0x25bc: 0x400f2620, 0x25bd: 0x400f2820, 0x25be: 0x400f2a20, 0x25bf: 0x400f2c20,\n\t// Block 0x97, offset 0x25c0\n\t0x25c0: 0x400f2e20, 0x25c1: 0x400f3020, 0x25c2: 0x400f3220, 0x25c3: 0x400f3420,\n\t0x25c4: 0x400f3620, 0x25c5: 0x400f3820, 0x25c6: 0x400f3a20, 0x25c7: 0x400f3c20,\n\t0x25c8: 0x400f3e20, 0x25c9: 0x400f4020, 0x25ca: 0x400f4220, 0x25cb: 0x400f4420,\n\t0x25cc: 0x400f4620, 0x25cd: 0x400f4820, 0x25ce: 0x400f4a20, 0x25cf: 0x400f4c20,\n\t0x25d0: 0x400f4e20, 0x25d1: 0x400f5020, 0x25d2: 0x400f5220, 0x25d3: 0x400f5420,\n\t0x25d4: 0x400f5620, 0x25d5: 0x400f5820, 0x25d6: 0x400f5a20, 0x25d7: 0x400f5c20,\n\t0x25d8: 0x400f5e20, 0x25d9: 0x400f6020, 0x25da: 0x400f6220, 0x25db: 0x400f6420,\n\t0x25dc: 0x400f6620, 0x25dd: 0x400f6820, 0x25de: 0x400f6a20, 0x25df: 0x400f6c20,\n\t0x25e0: 0x400f6e20, 0x25e1: 0x400f7020, 0x25e2: 0x400f7220, 0x25e3: 0x400f7420,\n\t0x25e4: 0x400f7620, 0x25e5: 0x400f7820, 0x25e6: 0x400f7a20, 0x25e7: 0x400f7c20,\n\t0x25e8: 0x400f7e20, 0x25e9: 0x400f8020, 0x25ea: 0x400f8220, 0x25eb: 0x400f8420,\n\t0x25ec: 0x400f8620, 0x25ed: 0x400f8820, 0x25ee: 0x400f8a20, 0x25ef: 0x400f8c20,\n\t0x25f0: 0x40195220, 0x25f1: 0x40195420, 0x25f2: 0x40195620, 0x25f3: 0x40195820,\n\t0x25f4: 0x40195a20, 0x25f5: 0x40195c20, 0x25f6: 0x40195e20, 0x25f7: 0x40196020,\n\t0x25f8: 0x400f8e20, 0x25f9: 0x400f9020, 0x25fa: 0x400f9220, 0x25fb: 0x400f9420,\n\t0x25fc: 0x400f9620, 0x25fd: 0x400f9820, 0x25fe: 0x400f9a20, 0x25ff: 0x400f9c20,\n\t// Block 0x98, offset 0x2600\n\t0x2600: 0x400f9e20, 0x2601: 0x400fa020, 0x2602: 0x400fa220, 0x2603: 0x400fa420,\n\t0x2604: 0x400fa620, 0x2605: 0x400fa820, 0x2606: 0x400faa20, 0x2607: 0x400fac20,\n\t0x2608: 0x400fae20, 0x2609: 0x400fb020, 0x260a: 0x400fb220, 0x260b: 0x400fb420,\n\t0x260c: 0x400fb620, 0x260d: 0x400fb820, 0x260e: 0x400fba20, 0x260f: 0x400fbc20,\n\t0x2610: 0x400fbe20, 0x2611: 0x400fc020, 0x2612: 0x400fc220, 0x2613: 0x400fc420,\n\t0x2614: 0x400fc620, 0x2615: 0x400fc820, 0x2616: 0x400fca20, 0x2617: 0x400fcc20,\n\t0x2618: 0x400fce20, 0x2619: 0x400fd020, 0x261a: 0x400fd220, 0x261b: 0x400fd420,\n\t0x261c: 0x400fd620, 0x261d: 0x400fd820, 0x261e: 0x400fda20, 0x261f: 0x400fdc20,\n\t0x2620: 0x400fde20, 0x2621: 0x400fe020, 0x2622: 0x400fe220, 0x2623: 0x400fe420,\n\t0x2624: 0x400fe620, 0x2625: 0x400fe820, 0x2626: 0x400fea20, 0x2627: 0x400fec20,\n\t0x2628: 0x400fee20, 0x2629: 0x400ff020, 0x262a: 0x400ff220, 0x262b: 0x400ff420,\n\t0x262c: 0x400ff620, 0x262d: 0x401dde20, 0x262e: 0x401de020, 0x262f: 0x401de220,\n\t0x2630: 0x400ff820, 0x2631: 0x400ffa20, 0x2632: 0x400ffc20, 0x2633: 0x400ffe20,\n\t0x2634: 0x40100020, 0x2635: 0x40100220, 0x2636: 0x40100420, 0x2637: 0x40100620,\n\t0x2638: 0x40100820, 0x2639: 0x40100a20, 0x263a: 0x40100c20, 0x263b: 0x40100e20,\n\t0x263c: 0x40101020, 0x263d: 0x40101220, 0x263e: 0x40101420, 0x263f: 0x40101620,\n\t// Block 0x99, offset 0x2640\n\t0x2640: 0x40101820, 0x2641: 0x40101a20, 0x2642: 0x40101c20, 0x2643: 0x40101e20,\n\t0x2644: 0x40102020, 0x2645: 0x40102220, 0x2646: 0x40102420, 0x2647: 0x40102620,\n\t0x2648: 0x40102820, 0x2649: 0x40102a20, 0x264a: 0x40194620, 0x264b: 0x40194820,\n\t0x264c: 0x40194a20, 0x264d: 0x40194c20, 0x264e: 0x40194e20, 0x264f: 0x40195020,\n\t0x2650: 0x40102c20, 0x2651: 0x40102e20, 0x2652: 0x40103020, 0x2653: 0x40103220,\n\t0x2654: 0x40103420, 0x2655: 0x40103620, 0x2656: 0x40103820, 0x2657: 0x40103a20,\n\t0x2658: 0x40103c20, 0x2659: 0x40103e20, 0x265a: 0x40104020, 0x265b: 0x40104220,\n\t0x265c: 0x40104420, 0x265d: 0x40104620, 0x265e: 0x40104820, 0x265f: 0x40104a20,\n\t0x2660: 0x40104c20, 0x2661: 0x40104e20, 0x2662: 0x40105020, 0x2663: 0x40105220,\n\t0x2664: 0x40105420, 0x2665: 0x40105620, 0x2666: 0x40105820, 0x2667: 0x40105a20,\n\t0x2668: 0x40105c20, 0x2669: 0x40105e20, 0x266a: 0x40106020, 0x266b: 0x40106220,\n\t0x266c: 0x40106420, 0x266d: 0x40106620, 0x266e: 0x40106820, 0x266f: 0x40106a20,\n\t0x2670: 0x40106c20, 0x2671: 0x40106e20, 0x2672: 0x40107020, 0x2673: 0x40107220,\n\t0x2674: 0x40107420, 0x2675: 0x40107620, 0x2676: 0x40107820, 0x2677: 0x40107a20,\n\t0x2678: 0x40107c20, 0x2679: 0x40107e20, 0x267a: 0x40108020, 0x267b: 0x40108220,\n\t0x267c: 0x40108420, 0x267d: 0x40108620, 0x267e: 0x40108820, 0x267f: 0x40108a20,\n\t// Block 0x9a, offset 0x2680\n\t0x2680: 0x40108c20, 0x2681: 0x40108e20, 0x2682: 0x40109020, 0x2683: 0x40109220,\n\t0x2684: 0x40109420, 0x2685: 0x40109620, 0x2686: 0x40109820, 0x2687: 0x40109a20,\n\t0x2688: 0x40109c20, 0x2689: 0x40109e20, 0x268a: 0x4010a020, 0x268b: 0x4010a220,\n\t0x268c: 0x4010a420, 0x268d: 0x4010a620, 0x268e: 0x4010a820, 0x268f: 0x4010aa20,\n\t0x2690: 0x4010ac20, 0x2691: 0x4010ae20, 0x2692: 0x4010b020, 0x2693: 0x4010b220,\n\t0x2694: 0x4010b420, 0x2695: 0x4010b620, 0x2696: 0x4010b820, 0x2697: 0x4010ba20,\n\t0x2698: 0x4010bc20, 0x2699: 0x4010be20, 0x269a: 0x4010c020, 0x269b: 0x4010c220,\n\t0x269c: 0x4010c420, 0x269d: 0x4010c620, 0x269e: 0x4010c820, 0x269f: 0x4010ca20,\n\t0x26a0: 0x4010cc20, 0x26a1: 0x4010ce20, 0x26a2: 0x4010d020, 0x26a3: 0x4010d220,\n\t0x26a4: 0x4010d420, 0x26a5: 0x4010d620, 0x26a6: 0x4010d820, 0x26a7: 0x4010da20,\n\t0x26a8: 0x4010dc20, 0x26a9: 0x4010de20, 0x26aa: 0x4010e020, 0x26ab: 0x4010e220,\n\t0x26ac: 0x4010e420, 0x26ad: 0x4010e620, 0x26ae: 0x4010e820, 0x26af: 0x4010ea20,\n\t0x26b0: 0x4010ec20, 0x26b1: 0x4010ee20, 0x26b2: 0x4010f020, 0x26b3: 0x4010f220,\n\t0x26b4: 0x4010f420, 0x26b5: 0x4010f620, 0x26b6: 0x4010f820, 0x26b7: 0x4010fa20,\n\t0x26b8: 0x4010fc20, 0x26b9: 0x4010fe20, 0x26ba: 0x40110020, 0x26bb: 0x40110220,\n\t0x26bc: 0x40110420, 0x26bd: 0x40110620, 0x26be: 0x40110820, 0x26bf: 0x40110a20,\n\t// Block 0x9b, offset 0x26c0\n\t0x26c1: 0x40114020, 0x26c2: 0x40114220, 0x26c3: 0x40114420,\n\t0x26c4: 0x40114620, 0x26c5: 0x40114820, 0x26c6: 0x40114a20, 0x26c7: 0x40114c20,\n\t0x26c8: 0x40114e20, 0x26c9: 0x40115020, 0x26ca: 0x40115220, 0x26cb: 0x40115420,\n\t0x26cc: 0x40115620, 0x26cd: 0x40115820, 0x26ce: 0x40115a20, 0x26cf: 0x40115c20,\n\t0x26d0: 0x40115e20, 0x26d1: 0x40116020, 0x26d2: 0x40116220, 0x26d3: 0x40116420,\n\t0x26d4: 0x40116620, 0x26d5: 0x40116820, 0x26d6: 0x40116a20, 0x26d7: 0x40116c20,\n\t0x26d8: 0x40116e20, 0x26d9: 0x40117020, 0x26da: 0x40117220, 0x26db: 0x40117420,\n\t0x26dc: 0x40117620, 0x26dd: 0x40117820, 0x26de: 0x40117a20, 0x26df: 0x40117c20,\n\t0x26e0: 0x40117e20, 0x26e1: 0x40118020, 0x26e2: 0x40118220, 0x26e3: 0x40118420,\n\t0x26e4: 0x40118620, 0x26e5: 0x40118820, 0x26e6: 0x40118a20, 0x26e7: 0x40118c20,\n\t0x26e8: 0x40118e20, 0x26e9: 0x40119020, 0x26ea: 0x40119220, 0x26eb: 0x40119420,\n\t0x26ec: 0x40119620, 0x26ed: 0x40119820, 0x26ee: 0x40119a20, 0x26ef: 0x40119c20,\n\t0x26f0: 0x40119e20, 0x26f1: 0x4011a020, 0x26f2: 0x4011a220, 0x26f3: 0x4011a420,\n\t0x26f4: 0x4011a620, 0x26f5: 0x4011a820, 0x26f6: 0x4011aa20, 0x26f7: 0x4011ac20,\n\t0x26f8: 0x4011ae20, 0x26f9: 0x4011b020, 0x26fa: 0x4011b220, 0x26fb: 0x4011b420,\n\t0x26fc: 0x4011b620, 0x26fd: 0x4011b820, 0x26fe: 0x4011ba20, 0x26ff: 0x4011bc20,\n\t// Block 0x9c, offset 0x2700\n\t0x2700: 0x4011be20, 0x2701: 0x4011c020, 0x2702: 0x4011c220, 0x2703: 0x4011c420,\n\t0x2704: 0x4011c620, 0x2705: 0x4011c820, 0x2706: 0x4011ca20, 0x2707: 0x4011cc20,\n\t0x2708: 0x4011ce20, 0x2709: 0x4011d020, 0x270a: 0x4011d220, 0x270b: 0x4011d420,\n\t0x270c: 0x4011d620, 0x270d: 0x4011d820, 0x270e: 0x4011da20, 0x270f: 0x4011dc20,\n\t0x2710: 0x4011de20, 0x2711: 0x4011e020, 0x2712: 0x4011e220, 0x2713: 0x4011e420,\n\t0x2714: 0x4011e620, 0x2715: 0x4011e820, 0x2716: 0x4011ea20, 0x2717: 0x4011ec20,\n\t0x2718: 0x4011ee20, 0x2719: 0x4011f020, 0x271a: 0x4011f220, 0x271b: 0x4011f420,\n\t0x271c: 0x4011f620, 0x271d: 0x4011f820, 0x271e: 0x4011fa20, 0x271f: 0x4011fc20,\n\t0x2720: 0x4011fe20, 0x2721: 0x40120020, 0x2722: 0x40120220, 0x2723: 0x40120420,\n\t0x2724: 0x40120620, 0x2725: 0x40120820, 0x2726: 0x40120a20, 0x2727: 0x40120c20,\n\t0x2728: 0x40045820, 0x2729: 0x40045a20, 0x272a: 0x40045c20, 0x272b: 0x40045e20,\n\t0x272c: 0x40046020, 0x272d: 0x40046220, 0x272e: 0x40046420, 0x272f: 0x40046620,\n\t0x2730: 0x40046820, 0x2731: 0x40046a20, 0x2732: 0x40046c20, 0x2733: 0x40046e20,\n\t0x2734: 0x40047020, 0x2735: 0x40047220, 0x2736: 0x0029ce86, 0x2737: 0x0029d086,\n\t0x2738: 0x0029d286, 0x2739: 0x0029d486, 0x273a: 0x0029d686, 0x273b: 0x0029d886,\n\t0x273c: 0x0029da86, 0x273d: 0x0029dc86, 0x273e: 0x0029de86, 0x273f: 0xe00002da,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0029ce86, 0x2741: 0x0029d086, 0x2742: 0x0029d286, 0x2743: 0x0029d486,\n\t0x2744: 0x0029d686, 0x2745: 0x0029d886, 0x2746: 0x0029da86, 0x2747: 0x0029dc86,\n\t0x2748: 0x0029de86, 0x2749: 0xe00002dd, 0x274a: 0x0029ce86, 0x274b: 0x0029d086,\n\t0x274c: 0x0029d286, 0x274d: 0x0029d486, 0x274e: 0x0029d686, 0x274f: 0x0029d886,\n\t0x2750: 0x0029da86, 0x2751: 0x0029dc86, 0x2752: 0x0029de86, 0x2753: 0xe00002e0,\n\t0x2754: 0x40120e20, 0x2755: 0x40121020, 0x2756: 0x40121220, 0x2757: 0x40121420,\n\t0x2758: 0x40121620, 0x2759: 0x40121820, 0x275a: 0x40121a20, 0x275b: 0x40121c20,\n\t0x275c: 0x40121e20, 0x275d: 0x40122020, 0x275e: 0x40122220, 0x275f: 0x40122420,\n\t0x2760: 0x40122620, 0x2761: 0x40122820, 0x2762: 0x40122a20, 0x2763: 0x40122c20,\n\t0x2764: 0x40122e20, 0x2765: 0x40123020, 0x2766: 0x40123220, 0x2767: 0x40123420,\n\t0x2768: 0x40123620, 0x2769: 0x40123820, 0x276a: 0x40123a20, 0x276b: 0x40123c20,\n\t0x276c: 0x40123e20, 0x276d: 0x40124020, 0x276e: 0x40124220, 0x276f: 0x40124420,\n\t0x2770: 0x40124620, 0x2771: 0x40124820, 0x2772: 0x40124a20, 0x2773: 0x40124c20,\n\t0x2774: 0x40124e20, 0x2775: 0x40125020, 0x2776: 0x40125220, 0x2777: 0x40125420,\n\t0x2778: 0x40125620, 0x2779: 0x40125820, 0x277a: 0x40125a20, 0x277b: 0x40125c20,\n\t0x277c: 0x40125e20, 0x277d: 0x40126020, 0x277e: 0x40126220, 0x277f: 0x40126420,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x40126620, 0x2781: 0x40126820, 0x2782: 0x40126a20, 0x2783: 0x40126c20,\n\t0x2784: 0x40126e20, 0x2785: 0x40044020, 0x2786: 0x40044220, 0x2787: 0x40127020,\n\t0x2788: 0x40127220, 0x2789: 0x40127420, 0x278a: 0x40127620, 0x278b: 0x40127820,\n\t0x278c: 0x40127a20, 0x278d: 0x40127c20, 0x278e: 0x40127e20, 0x278f: 0x40128020,\n\t0x2790: 0x40128220, 0x2791: 0x40128420, 0x2792: 0x40128620, 0x2793: 0x40128820,\n\t0x2794: 0x40128a20, 0x2795: 0x40128c20, 0x2796: 0x40128e20, 0x2797: 0x40129020,\n\t0x2798: 0x40129220, 0x2799: 0x40129420, 0x279a: 0x40129620, 0x279b: 0x40129820,\n\t0x279c: 0x40129a20, 0x279d: 0x40129c20, 0x279e: 0x40129e20, 0x279f: 0x4012a020,\n\t0x27a0: 0x4012a220, 0x27a1: 0x4012a420, 0x27a2: 0x4012a620, 0x27a3: 0x4012a820,\n\t0x27a4: 0x4012aa20, 0x27a5: 0x4012ac20, 0x27a6: 0x40044420, 0x27a7: 0x40044620,\n\t0x27a8: 0x40044820, 0x27a9: 0x40044a20, 0x27aa: 0x40044c20, 0x27ab: 0x40044e20,\n\t0x27ac: 0x40045020, 0x27ad: 0x40045220, 0x27ae: 0x40045420, 0x27af: 0x40045620,\n\t0x27b0: 0x4012ae20, 0x27b1: 0x4012b020, 0x27b2: 0x4012b220, 0x27b3: 0x4012b420,\n\t0x27b4: 0x4012b620, 0x27b5: 0x4012b820, 0x27b6: 0x4012ba20, 0x27b7: 0x4012bc20,\n\t0x27b8: 0x4012be20, 0x27b9: 0x4012c020, 0x27ba: 0x4012c220, 0x27bb: 0x4012c420,\n\t0x27bc: 0x4012c620, 0x27bd: 0x4012c820, 0x27be: 0x4012ca20, 0x27bf: 0x4012cc20,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x40174620, 0x27c1: 0x40174820, 0x27c2: 0x40174a20, 0x27c3: 0x40174c20,\n\t0x27c4: 0x40174e20, 0x27c5: 0x40175020, 0x27c6: 0x40175220, 0x27c7: 0x40175420,\n\t0x27c8: 0x40175620, 0x27c9: 0x40175820, 0x27ca: 0x40175a20, 0x27cb: 0x40175c20,\n\t0x27cc: 0x40175e20, 0x27cd: 0x40176020, 0x27ce: 0x40176220, 0x27cf: 0x40176420,\n\t0x27d0: 0x40176620, 0x27d1: 0x40176820, 0x27d2: 0x40176a20, 0x27d3: 0x40176c20,\n\t0x27d4: 0x40176e20, 0x27d5: 0x40177020, 0x27d6: 0x40177220, 0x27d7: 0x40177420,\n\t0x27d8: 0x40177620, 0x27d9: 0x40177820, 0x27da: 0x40177a20, 0x27db: 0x40177c20,\n\t0x27dc: 0x40177e20, 0x27dd: 0x40178020, 0x27de: 0x40178220, 0x27df: 0x40178420,\n\t0x27e0: 0x40178620, 0x27e1: 0x40178820, 0x27e2: 0x40178a20, 0x27e3: 0x40178c20,\n\t0x27e4: 0x40178e20, 0x27e5: 0x40179020, 0x27e6: 0x40179220, 0x27e7: 0x40179420,\n\t0x27e8: 0x40179620, 0x27e9: 0x40179820, 0x27ea: 0x40179a20, 0x27eb: 0x40179c20,\n\t0x27ec: 0x40179e20, 0x27ed: 0x4017a020, 0x27ee: 0x4017a220, 0x27ef: 0x4017a420,\n\t0x27f0: 0x4017a620, 0x27f1: 0x4017a820, 0x27f2: 0x4017aa20, 0x27f3: 0x4017ac20,\n\t0x27f4: 0x4017ae20, 0x27f5: 0x4017b020, 0x27f6: 0x4017b220, 0x27f7: 0x4017b420,\n\t0x27f8: 0x4017b620, 0x27f9: 0x4017b820, 0x27fa: 0x4017ba20, 0x27fb: 0x4017bc20,\n\t0x27fc: 0x4017be20, 0x27fd: 0x4017c020, 0x27fe: 0x4017c220, 0x27ff: 0x4017c420,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x4017c620, 0x2801: 0x4017c820, 0x2802: 0x4017ca20, 0x2803: 0x4017cc20,\n\t0x2804: 0x4017ce20, 0x2805: 0x4017d020, 0x2806: 0x4017d220, 0x2807: 0x4017d420,\n\t0x2808: 0x4017d620, 0x2809: 0x4017d820, 0x280a: 0x4017da20, 0x280b: 0x4017dc20,\n\t0x280c: 0x4017de20, 0x280d: 0x4017e020, 0x280e: 0x4017e220, 0x280f: 0x4017e420,\n\t0x2810: 0x4017e620, 0x2811: 0x4017e820, 0x2812: 0x4017ea20, 0x2813: 0x4017ec20,\n\t0x2814: 0x4017ee20, 0x2815: 0x4017f020, 0x2816: 0x4017f220, 0x2817: 0x4017f420,\n\t0x2818: 0x4017f620, 0x2819: 0x4017f820, 0x281a: 0x4017fa20, 0x281b: 0x4017fc20,\n\t0x281c: 0x4017fe20, 0x281d: 0x40180020, 0x281e: 0x40180220, 0x281f: 0x40180420,\n\t0x2820: 0x40180620, 0x2821: 0x40180820, 0x2822: 0x40180a20, 0x2823: 0x40180c20,\n\t0x2824: 0x40180e20, 0x2825: 0x40181020, 0x2826: 0x40181220, 0x2827: 0x40181420,\n\t0x2828: 0x40181620, 0x2829: 0x40181820, 0x282a: 0x40181a20, 0x282b: 0x40181c20,\n\t0x282c: 0x40181e20, 0x282d: 0x40182020, 0x282e: 0x40182220, 0x282f: 0x40182420,\n\t0x2830: 0x40182620, 0x2831: 0x40182820, 0x2832: 0x40182a20, 0x2833: 0x40182c20,\n\t0x2834: 0x40182e20, 0x2835: 0x40183020, 0x2836: 0x40183220, 0x2837: 0x40183420,\n\t0x2838: 0x40183620, 0x2839: 0x40183820, 0x283a: 0x40183a20, 0x283b: 0x40183c20,\n\t0x283c: 0x40183e20, 0x283d: 0x40184020, 0x283e: 0x40184220, 0x283f: 0x40184420,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x40184620, 0x2841: 0x40184820, 0x2842: 0x40184a20, 0x2843: 0x40184c20,\n\t0x2844: 0x40184e20, 0x2845: 0x40185020, 0x2846: 0x40185220, 0x2847: 0x40185420,\n\t0x2848: 0x40185620, 0x2849: 0x40185820, 0x284a: 0x40185a20, 0x284b: 0x40185c20,\n\t0x284c: 0x40185e20, 0x284d: 0x40186020, 0x284e: 0x40186220, 0x284f: 0x40186420,\n\t0x2850: 0x40186620, 0x2851: 0x40186820, 0x2852: 0x40186a20, 0x2853: 0x40186c20,\n\t0x2854: 0x40186e20, 0x2855: 0x40187020, 0x2856: 0x40187220, 0x2857: 0x40187420,\n\t0x2858: 0x40187620, 0x2859: 0x40187820, 0x285a: 0x40187a20, 0x285b: 0x40187c20,\n\t0x285c: 0x40187e20, 0x285d: 0x40188020, 0x285e: 0x40188220, 0x285f: 0x40188420,\n\t0x2860: 0x40188620, 0x2861: 0x40188820, 0x2862: 0x40188a20, 0x2863: 0x40188c20,\n\t0x2864: 0x40188e20, 0x2865: 0x40189020, 0x2866: 0x40189220, 0x2867: 0x40189420,\n\t0x2868: 0x40189620, 0x2869: 0x40189820, 0x286a: 0x40189a20, 0x286b: 0x40189c20,\n\t0x286c: 0x40189e20, 0x286d: 0x4018a020, 0x286e: 0x4018a220, 0x286f: 0x4018a420,\n\t0x2870: 0x4018a620, 0x2871: 0x4018a820, 0x2872: 0x4018aa20, 0x2873: 0x4018ac20,\n\t0x2874: 0x4018ae20, 0x2875: 0x4018b020, 0x2876: 0x4018b220, 0x2877: 0x4018b420,\n\t0x2878: 0x4018b620, 0x2879: 0x4018b820, 0x287a: 0x4018ba20, 0x287b: 0x4018bc20,\n\t0x287c: 0x4018be20, 0x287d: 0x4018c020, 0x287e: 0x4018c220, 0x287f: 0x4018c420,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x4018c620, 0x2881: 0x4018c820, 0x2882: 0x4018ca20, 0x2883: 0x4018cc20,\n\t0x2884: 0x4018ce20, 0x2885: 0x4018d020, 0x2886: 0x4018d220, 0x2887: 0x4018d420,\n\t0x2888: 0x4018d620, 0x2889: 0x4018d820, 0x288a: 0x4018da20, 0x288b: 0x4018dc20,\n\t0x288c: 0x4018de20, 0x288d: 0x4018e020, 0x288e: 0x4018e220, 0x288f: 0x4018e420,\n\t0x2890: 0x4018e620, 0x2891: 0x4018e820, 0x2892: 0x4018ea20, 0x2893: 0x4018ec20,\n\t0x2894: 0x4018ee20, 0x2895: 0x4018f020, 0x2896: 0x4018f220, 0x2897: 0x4018f420,\n\t0x2898: 0x4018f620, 0x2899: 0x4018f820, 0x289a: 0x4018fa20, 0x289b: 0x4018fc20,\n\t0x289c: 0x4018fe20, 0x289d: 0x40190020, 0x289e: 0x40190220, 0x289f: 0x40190420,\n\t0x28a0: 0x40190620, 0x28a1: 0x40190820, 0x28a2: 0x40190a20, 0x28a3: 0x40190c20,\n\t0x28a4: 0x40190e20, 0x28a5: 0x40191020, 0x28a6: 0x40191220, 0x28a7: 0x40191420,\n\t0x28a8: 0x40191620, 0x28a9: 0x40191820, 0x28aa: 0x40191a20, 0x28ab: 0x40191c20,\n\t0x28ac: 0x40191e20, 0x28ad: 0x40192020, 0x28ae: 0x40192220, 0x28af: 0x40192420,\n\t0x28b0: 0x40192620, 0x28b1: 0x40192820, 0x28b2: 0x40192a20, 0x28b3: 0x40192c20,\n\t0x28b4: 0x40192e20, 0x28b5: 0x40193020, 0x28b6: 0x40193220, 0x28b7: 0x40193420,\n\t0x28b8: 0x40193620, 0x28b9: 0x40193820, 0x28ba: 0x40193a20, 0x28bb: 0x40193c20,\n\t0x28bc: 0x40193e20, 0x28bd: 0x40194020, 0x28be: 0x40194220, 0x28bf: 0x40194420,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x4012ce20, 0x28c1: 0x4012d020, 0x28c2: 0x4012d220, 0x28c3: 0x4012d420,\n\t0x28c4: 0x4012d620, 0x28c5: 0x4012d820, 0x28c6: 0x4012da20, 0x28c7: 0x4012dc20,\n\t0x28c8: 0x4012de20, 0x28c9: 0x4012e020, 0x28ca: 0x4012e220, 0x28cb: 0x4012e420,\n\t0x28cc: 0x4012e620, 0x28cd: 0x4012e820, 0x28ce: 0x4012ea20, 0x28cf: 0x4012ec20,\n\t0x28d0: 0x4012ee20, 0x28d1: 0x4012f020, 0x28d2: 0x4012f220, 0x28d3: 0x4012f420,\n\t0x28d4: 0x4012f620, 0x28d5: 0x4012f820, 0x28d6: 0x4012fa20, 0x28d7: 0x4012fc20,\n\t0x28d8: 0x4012fe20, 0x28d9: 0x40130020, 0x28da: 0x40130220, 0x28db: 0x40130420,\n\t0x28dc: 0x40130620, 0x28dd: 0x40130820, 0x28de: 0x40130a20, 0x28df: 0x40130c20,\n\t0x28e0: 0x40130e20, 0x28e1: 0x40131020, 0x28e2: 0x40131220, 0x28e3: 0x40131420,\n\t0x28e4: 0x40131620, 0x28e5: 0x40131820, 0x28e6: 0x40131a20, 0x28e7: 0x40131c20,\n\t0x28e8: 0x40131e20, 0x28e9: 0x40132020, 0x28ea: 0x40132220, 0x28eb: 0x40132420,\n\t0x28ec: 0x40132620, 0x28ed: 0x40132820, 0x28ee: 0x40132a20, 0x28ef: 0x40132c20,\n\t0x28f0: 0x40132e20, 0x28f1: 0x40133020, 0x28f2: 0x40133220, 0x28f3: 0x40133420,\n\t0x28f4: 0x40133620, 0x28f5: 0x40133820, 0x28f6: 0x40133a20, 0x28f7: 0x40133c20,\n\t0x28f8: 0x40133e20, 0x28f9: 0x40134020, 0x28fa: 0x40134220, 0x28fb: 0x40134420,\n\t0x28fc: 0x40134620, 0x28fd: 0x40134820, 0x28fe: 0x40134a20, 0x28ff: 0x40134c20,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x40134e20, 0x2901: 0x40135020, 0x2902: 0x40135220, 0x2903: 0x40135420,\n\t0x2904: 0x40135620, 0x2905: 0x40135820, 0x2906: 0x40135a20, 0x2907: 0x40135c20,\n\t0x2908: 0x40135e20, 0x2909: 0x40136020, 0x290a: 0x40136220, 0x290b: 0x40136420,\n\t0x290c: 0x40136620, 0x290d: 0x40136820, 0x290e: 0x40136a20, 0x290f: 0x40136c20,\n\t0x2910: 0x40136e20, 0x2911: 0x40137020, 0x2912: 0x40137220, 0x2913: 0x40137420,\n\t0x2914: 0x40137620, 0x2915: 0x40137820, 0x2916: 0x40137a20, 0x2917: 0x40137c20,\n\t0x2918: 0x40137e20, 0x2919: 0x40138020, 0x291a: 0x40138220, 0x291b: 0x40138420,\n\t0x291c: 0x40138620, 0x291d: 0x40138820, 0x291e: 0x40138a20, 0x291f: 0x40138c20,\n\t0x2920: 0x40138e20, 0x2921: 0x40139020, 0x2922: 0x40139220, 0x2923: 0x40139420,\n\t0x2924: 0x40139620, 0x2925: 0x40139820, 0x2926: 0x40139a20, 0x2927: 0x40139c20,\n\t0x2928: 0x40139e20, 0x2929: 0x4013a020, 0x292a: 0x4013a220, 0x292b: 0x4013a420,\n\t0x292c: 0x4013a620, 0x292d: 0x4013a820, 0x292e: 0x4013aa20, 0x292f: 0x4013ac20,\n\t0x2930: 0x4013ae20, 0x2931: 0x4013b020, 0x2932: 0x4013b220, 0x2933: 0x4013b420,\n\t0x2934: 0x4013b620, 0x2935: 0x4013b820, 0x2936: 0x4013ba20, 0x2937: 0x4013bc20,\n\t0x2938: 0x4013be20, 0x2939: 0x4013c020, 0x293a: 0x4013c220, 0x293b: 0x4013c420,\n\t0x293c: 0x4013c620, 0x293d: 0x4013c820, 0x293e: 0x4013ca20, 0x293f: 0x4013cc20,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x4013ce20, 0x2941: 0x4013d020, 0x2942: 0x4013d220, 0x2943: 0x40041420,\n\t0x2944: 0x40041620, 0x2945: 0x40041820, 0x2946: 0x40041a20, 0x2947: 0x40041c20,\n\t0x2948: 0x40041e20, 0x2949: 0x40042020, 0x294a: 0x40042220, 0x294b: 0x40042420,\n\t0x294c: 0x40042620, 0x294d: 0x40042820, 0x294e: 0x40042a20, 0x294f: 0x40042c20,\n\t0x2950: 0x40042e20, 0x2951: 0x40043020, 0x2952: 0x40043220, 0x2953: 0x40043420,\n\t0x2954: 0x40043620, 0x2955: 0x40043820, 0x2956: 0x40043a20, 0x2957: 0x40043c20,\n\t0x2958: 0x40043e20, 0x2959: 0x4013d420, 0x295a: 0x4013d620, 0x295b: 0x4013d820,\n\t0x295c: 0x4013da20, 0x295d: 0x4013dc20, 0x295e: 0x4013de20, 0x295f: 0x4013e020,\n\t0x2960: 0x4013e220, 0x2961: 0x4013e420, 0x2962: 0x4013e620, 0x2963: 0x4013e820,\n\t0x2964: 0x4013ea20, 0x2965: 0x4013ec20, 0x2966: 0x4013ee20, 0x2967: 0x4013f020,\n\t0x2968: 0x4013f220, 0x2969: 0x4013f420, 0x296a: 0x4013f620, 0x296b: 0x4013f820,\n\t0x296c: 0x4013fa20, 0x296d: 0x4013fc20, 0x296e: 0x4013fe20, 0x296f: 0x40140020,\n\t0x2970: 0x40140220, 0x2971: 0x40140420, 0x2972: 0x40140620, 0x2973: 0x40140820,\n\t0x2974: 0x40140a20, 0x2975: 0x40140c20, 0x2976: 0x40140e20, 0x2977: 0x40141020,\n\t0x2978: 0x40141220, 0x2979: 0x40141420, 0x297a: 0x40141620, 0x297b: 0x40141820,\n\t0x297c: 0x40141a20, 0x297d: 0x40141c20, 0x297e: 0x40141e20, 0x297f: 0x40142020,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x40142220, 0x2981: 0x40142420, 0x2982: 0x40142620, 0x2983: 0x40142820,\n\t0x2984: 0x40142a20, 0x2985: 0x40142c20, 0x2986: 0x40142e20, 0x2987: 0x40143020,\n\t0x2988: 0x40143220, 0x2989: 0x40143420, 0x298a: 0x40143620, 0x298b: 0x40143820,\n\t0x298c: 0x40143a20, 0x298d: 0x40143c20, 0x298e: 0x40143e20, 0x298f: 0x40144020,\n\t0x2990: 0x40144220, 0x2991: 0x40144420, 0x2992: 0x40144620, 0x2993: 0x40144820,\n\t0x2994: 0x40144a20, 0x2995: 0x40144c20, 0x2996: 0x40144e20, 0x2997: 0x40145020,\n\t0x2998: 0x4004c620, 0x2999: 0x4004c820, 0x299a: 0x4004ca20, 0x299b: 0x4004cc20,\n\t0x299c: 0x40145220, 0x299d: 0x40145420, 0x299e: 0x40145620, 0x299f: 0x40145820,\n\t0x29a0: 0x40145a20, 0x29a1: 0x40145c20, 0x29a2: 0x40145e20, 0x29a3: 0x40146020,\n\t0x29a4: 0x40146220, 0x29a5: 0x40146420, 0x29a6: 0x40146620, 0x29a7: 0x40146820,\n\t0x29a8: 0x40146a20, 0x29a9: 0x40146c20, 0x29aa: 0x40146e20, 0x29ab: 0x40147020,\n\t0x29ac: 0x40147220, 0x29ad: 0x40147420, 0x29ae: 0x40147620, 0x29af: 0x40147820,\n\t0x29b0: 0x40147a20, 0x29b1: 0x40147c20, 0x29b2: 0x40147e20, 0x29b3: 0x40148020,\n\t0x29b4: 0x40148220, 0x29b5: 0x40148420, 0x29b6: 0x40148620, 0x29b7: 0x40148820,\n\t0x29b8: 0x40148a20, 0x29b9: 0x40148c20, 0x29ba: 0x40148e20, 0x29bb: 0x40149020,\n\t0x29bc: 0x40041020, 0x29bd: 0x40041220, 0x29be: 0x40149220, 0x29bf: 0x40149420,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x40149620, 0x29c1: 0x40149820, 0x29c2: 0x40149a20, 0x29c3: 0x40149c20,\n\t0x29c4: 0x40149e20, 0x29c5: 0x4014a020, 0x29c6: 0x4014a220, 0x29c7: 0x4014a420,\n\t0x29c8: 0x4014a620, 0x29c9: 0x4014a820, 0x29ca: 0x4014aa20, 0x29cb: 0x4014ac20,\n\t0x29cc: 0xe00000f0, 0x29cd: 0x4014ae20, 0x29ce: 0x4014b020, 0x29cf: 0x4014b220,\n\t0x29d0: 0x4014b420, 0x29d1: 0x4014b620, 0x29d2: 0x4014b820, 0x29d3: 0x4014ba20,\n\t0x29d4: 0x4014bc20, 0x29d5: 0x4014be20, 0x29d6: 0x4014c020, 0x29d7: 0x4014c220,\n\t0x29d8: 0x4014c420, 0x29d9: 0x4014c620, 0x29da: 0x4014c820, 0x29db: 0x4014ca20,\n\t0x29dc: 0x4014cc20, 0x29dd: 0x4014ce20, 0x29de: 0x4014d020, 0x29df: 0x4014d220,\n\t0x29e0: 0x4014d420, 0x29e1: 0x4014d620, 0x29e2: 0x4014d820, 0x29e3: 0x4014da20,\n\t0x29e4: 0x4014dc20, 0x29e5: 0x4014de20, 0x29e6: 0x4014e020, 0x29e7: 0x4014e220,\n\t0x29e8: 0x4014e420, 0x29e9: 0x4014e620, 0x29ea: 0x4014e820, 0x29eb: 0x4014ea20,\n\t0x29ec: 0x4014ec20, 0x29ed: 0x4014ee20, 0x29ee: 0x4014f020, 0x29ef: 0x4014f220,\n\t0x29f0: 0x4014f420, 0x29f1: 0x4014f620, 0x29f2: 0x4014f820, 0x29f3: 0x4014fa20,\n\t0x29f4: 0x4014fc20, 0x29f5: 0x4014fe20, 0x29f6: 0x40150020, 0x29f7: 0x40150220,\n\t0x29f8: 0x40150420, 0x29f9: 0x40150620, 0x29fa: 0x40150820, 0x29fb: 0x40150a20,\n\t0x29fc: 0x40150c20, 0x29fd: 0x40150e20, 0x29fe: 0x40151020, 0x29ff: 0x40151220,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x40151420, 0x2a01: 0x40151620, 0x2a02: 0x40151820, 0x2a03: 0x40151a20,\n\t0x2a04: 0x40151c20, 0x2a05: 0x40151e20, 0x2a06: 0x40152020, 0x2a07: 0x40152220,\n\t0x2a08: 0x40152420, 0x2a09: 0x40152620, 0x2a0a: 0x40152820, 0x2a0b: 0x40152a20,\n\t0x2a0c: 0x40152c20, 0x2a0d: 0x40152e20, 0x2a0e: 0x40153020, 0x2a0f: 0x40153220,\n\t0x2a10: 0x40153420, 0x2a11: 0x40153620, 0x2a12: 0x40153820, 0x2a13: 0x40153a20,\n\t0x2a14: 0x40153c20, 0x2a15: 0x40153e20, 0x2a16: 0x40154020, 0x2a17: 0x40154220,\n\t0x2a18: 0x40154420, 0x2a19: 0x40154620, 0x2a1a: 0x40154820, 0x2a1b: 0x40154a20,\n\t0x2a1c: 0x40154c20, 0x2a1d: 0x40154e20, 0x2a1e: 0x40155020, 0x2a1f: 0x40155220,\n\t0x2a20: 0x40155420, 0x2a21: 0x40155620, 0x2a22: 0x40155820, 0x2a23: 0x40155a20,\n\t0x2a24: 0x40155c20, 0x2a25: 0x40155e20, 0x2a26: 0x40156020, 0x2a27: 0x40156220,\n\t0x2a28: 0x40156420, 0x2a29: 0x40156620, 0x2a2a: 0x40156820, 0x2a2b: 0x40156a20,\n\t0x2a2c: 0x40156c20, 0x2a2d: 0x40156e20, 0x2a2e: 0x40157020, 0x2a2f: 0x40157220,\n\t0x2a30: 0x40157420, 0x2a31: 0x40157620, 0x2a32: 0x40157820, 0x2a33: 0x40157a20,\n\t0x2a34: 0xf0000404, 0x2a35: 0xf0001f04, 0x2a36: 0xf0000404, 0x2a37: 0x40157c20,\n\t0x2a38: 0x40157e20, 0x2a39: 0x40158020, 0x2a3a: 0x40158220, 0x2a3b: 0x40158420,\n\t0x2a3c: 0x40158620, 0x2a3d: 0x40158820, 0x2a3e: 0x40158a20, 0x2a3f: 0x40158c20,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a40: 0x40158e20, 0x2a41: 0x40159020, 0x2a42: 0x40159220, 0x2a43: 0x40159420,\n\t0x2a44: 0x40159620, 0x2a45: 0x40159820, 0x2a46: 0x40159a20, 0x2a47: 0x40159c20,\n\t0x2a48: 0x40159e20, 0x2a49: 0x4015a020, 0x2a4a: 0x4015a220, 0x2a4b: 0x4015a420,\n\t0x2a4c: 0x4015a620, 0x2a4d: 0x4015a820, 0x2a4e: 0x4015aa20, 0x2a4f: 0x4015ac20,\n\t0x2a50: 0x4015ae20, 0x2a51: 0x4015b020, 0x2a52: 0x4015b220, 0x2a53: 0x4015b420,\n\t0x2a54: 0x4015b620, 0x2a55: 0x4015b820, 0x2a56: 0x4015ba20, 0x2a57: 0x4015bc20,\n\t0x2a58: 0x4015be20, 0x2a59: 0x4015c020, 0x2a5a: 0x4015c220, 0x2a5b: 0x4015c420,\n\t0x2a5c: 0x4015c620, 0x2a5d: 0x4015c820, 0x2a5e: 0x4015ca20, 0x2a5f: 0x4015cc20,\n\t0x2a60: 0x4015ce20, 0x2a61: 0x4015d020, 0x2a62: 0x4015d220, 0x2a63: 0x4015d420,\n\t0x2a64: 0x4015d620, 0x2a65: 0x4015d820, 0x2a66: 0x4015da20, 0x2a67: 0x4015dc20,\n\t0x2a68: 0x4015de20, 0x2a69: 0x4015e020, 0x2a6a: 0x4015e220, 0x2a6b: 0x4015e420,\n\t0x2a6c: 0x4015e620, 0x2a6d: 0x4015e820, 0x2a6e: 0x4015ea20, 0x2a6f: 0x4015ec20,\n\t0x2a70: 0x4015ee20, 0x2a71: 0x4015f020, 0x2a72: 0x4015f220, 0x2a73: 0x4015f420,\n\t0x2a74: 0x4015f620, 0x2a75: 0x4015f820, 0x2a76: 0x4015fa20, 0x2a77: 0x4015fc20,\n\t0x2a78: 0x4015fe20, 0x2a79: 0x40160020, 0x2a7a: 0x40160220, 0x2a7b: 0x40160420,\n\t0x2a7c: 0x40160620, 0x2a7d: 0x40160820, 0x2a7e: 0x40160a20, 0x2a7f: 0x40160c20,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a80: 0x40160e20, 0x2a81: 0x40161020, 0x2a82: 0x40161220, 0x2a83: 0x40161420,\n\t0x2a84: 0x40161620, 0x2a85: 0x40161820, 0x2a86: 0x40161a20, 0x2a87: 0x40161c20,\n\t0x2a88: 0x40161e20, 0x2a89: 0x40162020, 0x2a8a: 0x40162220, 0x2a8b: 0x40162420,\n\t0x2a8c: 0x40162620, 0x2a8d: 0x40162820, 0x2a8e: 0x40162a20, 0x2a8f: 0x40162c20,\n\t0x2a90: 0x40162e20, 0x2a91: 0x40163020, 0x2a92: 0x40163220, 0x2a93: 0x40163420,\n\t0x2a94: 0x40163620, 0x2a95: 0x40163820, 0x2a96: 0x40163a20, 0x2a97: 0x40163c20,\n\t0x2a98: 0x40163e20, 0x2a99: 0x40164020, 0x2a9a: 0x40164220, 0x2a9b: 0x40164420,\n\t0x2a9c: 0xe000014f, 0x2a9d: 0x40164620, 0x2a9e: 0x40164820, 0x2a9f: 0x40164a20,\n\t0x2aa0: 0x40164c20, 0x2aa1: 0x40164e20, 0x2aa2: 0x40165020, 0x2aa3: 0x40165220,\n\t0x2aa4: 0x40165420, 0x2aa5: 0x40165620, 0x2aa6: 0x40165820, 0x2aa7: 0x40165a20,\n\t0x2aa8: 0x40165c20, 0x2aa9: 0x40165e20, 0x2aaa: 0x40166020, 0x2aab: 0x40166220,\n\t0x2aac: 0x40166420, 0x2aad: 0x40166620, 0x2aae: 0x40166820, 0x2aaf: 0x40166a20,\n\t0x2ab0: 0x40166c20, 0x2ab1: 0x40166e20, 0x2ab2: 0x40167020, 0x2ab3: 0x40167220,\n\t0x2ab4: 0x40167420, 0x2ab5: 0x40167620, 0x2ab6: 0x40167820, 0x2ab7: 0x40167a20,\n\t0x2ab8: 0x40167c20, 0x2ab9: 0x40167e20, 0x2aba: 0x40168020, 0x2abb: 0x40168220,\n\t0x2abc: 0x40168420, 0x2abd: 0x40168620, 0x2abe: 0x40168820, 0x2abf: 0x40168a20,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x40168c20, 0x2ac1: 0x40168e20, 0x2ac2: 0x40169020, 0x2ac3: 0x40169220,\n\t0x2ac4: 0x40169420, 0x2ac5: 0x40169620, 0x2ac6: 0x40169820, 0x2ac7: 0x40169a20,\n\t0x2ac8: 0x40169c20, 0x2ac9: 0x40169e20, 0x2aca: 0x4016a020, 0x2acb: 0x4016a220,\n\t0x2acc: 0x4016a420, 0x2acd: 0x4016a620, 0x2ace: 0x4016a820, 0x2acf: 0x4016aa20,\n\t0x2ad0: 0x4016ac20, 0x2ad1: 0x4016ae20, 0x2ad2: 0x4016b020, 0x2ad3: 0x4016b220,\n\t0x2ad4: 0x4016b420, 0x2ad5: 0x4016b620, 0x2ad6: 0x4016b820, 0x2ad7: 0x4016ba20,\n\t0x2ad8: 0x4016bc20, 0x2ad9: 0x4016be20, 0x2ada: 0x4016c020, 0x2adb: 0x4016c220,\n\t0x2adc: 0x4016c420, 0x2add: 0x4016c620, 0x2ade: 0x4016c820, 0x2adf: 0x4016ca20,\n\t0x2ae0: 0x4016cc20, 0x2ae1: 0x4016ce20, 0x2ae2: 0x4016d020, 0x2ae3: 0x4016d220,\n\t0x2ae4: 0x4016d420, 0x2ae5: 0x4016d620, 0x2ae6: 0x4016d820, 0x2ae7: 0x4016da20,\n\t0x2ae8: 0x4016dc20, 0x2ae9: 0x4016de20, 0x2aea: 0x4016e020, 0x2aeb: 0x4016e220,\n\t0x2aec: 0x4016e420, 0x2aed: 0x4016e620, 0x2aee: 0x4016e820, 0x2aef: 0x4016ea20,\n\t0x2af0: 0x4016ec20, 0x2af1: 0x4016ee20, 0x2af2: 0x4016f020, 0x2af3: 0x4016f220,\n\t0x2af4: 0x4016f420, 0x2af5: 0x4016f620, 0x2af6: 0x4016f820, 0x2af7: 0x4016fa20,\n\t0x2af8: 0x4016fc20, 0x2af9: 0x4016fe20, 0x2afa: 0x40170020, 0x2afb: 0x40170220,\n\t0x2afc: 0x40170420, 0x2afd: 0x40170620, 0x2afe: 0x40170820, 0x2aff: 0x40170a20,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x40170c20, 0x2b01: 0x40170e20, 0x2b02: 0x40171020, 0x2b03: 0x40171220,\n\t0x2b04: 0x40171420, 0x2b05: 0x40171620, 0x2b06: 0x40171820, 0x2b07: 0x40171a20,\n\t0x2b08: 0x40171c20, 0x2b09: 0x40171e20, 0x2b0a: 0x40172020, 0x2b0b: 0x40172220,\n\t0x2b0c: 0x40172420,\n\t0x2b10: 0x40172620, 0x2b11: 0x40172820, 0x2b12: 0x40172a20, 0x2b13: 0x40172c20,\n\t0x2b14: 0x40172e20, 0x2b15: 0x40173020, 0x2b16: 0x40173220, 0x2b17: 0x40173420,\n\t0x2b18: 0x40173620, 0x2b19: 0x40173820,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x00373888, 0x2b41: 0x00373a88, 0x2b42: 0x00373c88, 0x2b43: 0x00373e88,\n\t0x2b44: 0x00374088, 0x2b45: 0x00374288, 0x2b46: 0x00374488, 0x2b47: 0x00374688,\n\t0x2b48: 0x00374888, 0x2b49: 0x00374a88, 0x2b4a: 0x00374c88, 0x2b4b: 0x00374e88,\n\t0x2b4c: 0x00375088, 0x2b4d: 0x00375288, 0x2b4e: 0x00375488, 0x2b4f: 0x00375688,\n\t0x2b50: 0x00375888, 0x2b51: 0x00375a88, 0x2b52: 0x00375c88, 0x2b53: 0x00375e88,\n\t0x2b54: 0x00376088, 0x2b55: 0x00376288, 0x2b56: 0x00376488, 0x2b57: 0x00376688,\n\t0x2b58: 0x00376888, 0x2b59: 0x00376a88, 0x2b5a: 0x00376c88, 0x2b5b: 0x00376e88,\n\t0x2b5c: 0x00377088, 0x2b5d: 0x00377288, 0x2b5e: 0x00377488, 0x2b5f: 0x00377688,\n\t0x2b60: 0x00377888, 0x2b61: 0x00377a88, 0x2b62: 0x00377c88, 0x2b63: 0x00377e88,\n\t0x2b64: 0x00378088, 0x2b65: 0x00378288, 0x2b66: 0x00378488, 0x2b67: 0x00378688,\n\t0x2b68: 0x00378888, 0x2b69: 0x00378a88, 0x2b6a: 0x00378c88, 0x2b6b: 0x00378e88,\n\t0x2b6c: 0x00379088, 0x2b6d: 0x00379288, 0x2b6e: 0x00379488,\n\t0x2b70: 0x40373820, 0x2b71: 0x40373a20, 0x2b72: 0x40373c20, 0x2b73: 0x40373e20,\n\t0x2b74: 0x40374020, 0x2b75: 0x40374220, 0x2b76: 0x40374420, 0x2b77: 0x40374620,\n\t0x2b78: 0x40374820, 0x2b79: 0x40374a20, 0x2b7a: 0x40374c20, 0x2b7b: 0x40374e20,\n\t0x2b7c: 0x40375020, 0x2b7d: 0x40375220, 0x2b7e: 0x40375420, 0x2b7f: 0x40375620,\n\t// Block 0xae, offset 0x2b80\n\t0x2b80: 0x40375820, 0x2b81: 0x40375a20, 0x2b82: 0x40375c20, 0x2b83: 0x40375e20,\n\t0x2b84: 0x40376020, 0x2b85: 0x40376220, 0x2b86: 0x40376420, 0x2b87: 0x40376620,\n\t0x2b88: 0x40376820, 0x2b89: 0x40376a20, 0x2b8a: 0x40376c20, 0x2b8b: 0x40376e20,\n\t0x2b8c: 0x40377020, 0x2b8d: 0x40377220, 0x2b8e: 0x40377420, 0x2b8f: 0x40377620,\n\t0x2b90: 0x40377820, 0x2b91: 0x40377a20, 0x2b92: 0x40377c20, 0x2b93: 0x40377e20,\n\t0x2b94: 0x40378020, 0x2b95: 0x40378220, 0x2b96: 0x40378420, 0x2b97: 0x40378620,\n\t0x2b98: 0x40378820, 0x2b99: 0x40378a20, 0x2b9a: 0x40378c20, 0x2b9b: 0x40378e20,\n\t0x2b9c: 0x40379020, 0x2b9d: 0x40379220, 0x2b9e: 0x40379420,\n\t0x2ba0: 0x002e4088, 0x2ba1: 0x402e4020, 0x2ba2: 0x002e4288, 0x2ba3: 0x002f3688,\n\t0x2ba4: 0x002fbe88, 0x2ba5: 0x402be820, 0x2ba6: 0x40303e20, 0x2ba7: 0x002d8888,\n\t0x2ba8: 0x402d8820, 0x2ba9: 0x002e1288, 0x2baa: 0x402e1220, 0x2bab: 0x00316088,\n\t0x2bac: 0x40316020, 0x2bad: 0x002bf888, 0x2bae: 0x002e9088, 0x2baf: 0x002bf088,\n\t0x2bb0: 0x002c0288, 0x2bb1: 0x4030d420, 0x2bb2: 0x0030ec88, 0x2bb3: 0x4030ec20,\n\t0x2bb4: 0x4030d620, 0x2bb5: 0x002d8a88, 0x2bb6: 0x402d8a20, 0x2bb7: 0x402f5420,\n\t0x2bb8: 0x402cac20, 0x2bb9: 0x402fb420, 0x2bba: 0x402f0e20, 0x2bbb: 0x402cb620,\n\t0x2bbc: 0x002dcc95, 0x2bbd: 0x0030be9d, 0x2bbe: 0x002ffc88, 0x2bbf: 0x00315888,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc0: 0x0032aa88, 0x2bc1: 0x4032aa20, 0x2bc2: 0x0032ac88, 0x2bc3: 0x4032ac20,\n\t0x2bc4: 0x0032ae88, 0x2bc5: 0x4032ae20, 0x2bc6: 0x0032b088, 0x2bc7: 0x4032b020,\n\t0x2bc8: 0x0032b288, 0x2bc9: 0x4032b220, 0x2bca: 0x0032b688, 0x2bcb: 0x4032b620,\n\t0x2bcc: 0x0032b888, 0x2bcd: 0x4032b820, 0x2bce: 0x0032ba88, 0x2bcf: 0x4032ba20,\n\t0x2bd0: 0x0032bc88, 0x2bd1: 0x4032bc20, 0x2bd2: 0x0032be88, 0x2bd3: 0x4032be20,\n\t0x2bd4: 0x0032c088, 0x2bd5: 0x4032c020, 0x2bd6: 0x0032c488, 0x2bd7: 0x4032c420,\n\t0x2bd8: 0x0032c688, 0x2bd9: 0x4032c620, 0x2bda: 0x0032c888, 0x2bdb: 0x4032c820,\n\t0x2bdc: 0x0032ce88, 0x2bdd: 0x4032ce20, 0x2bde: 0x0032d088, 0x2bdf: 0x4032d020,\n\t0x2be0: 0x0032d288, 0x2be1: 0x4032d220, 0x2be2: 0x0032d488, 0x2be3: 0x4032d420,\n\t0x2be4: 0x0032d688, 0x2be5: 0x4032d620, 0x2be6: 0x0032d888, 0x2be7: 0x4032d820,\n\t0x2be8: 0x0032da88, 0x2be9: 0x4032da20, 0x2bea: 0x0032dc88, 0x2beb: 0x4032dc20,\n\t0x2bec: 0x0032de88, 0x2bed: 0x4032de20, 0x2bee: 0x0032e088, 0x2bef: 0x4032e020,\n\t0x2bf0: 0x0032e288, 0x2bf1: 0x4032e220, 0x2bf2: 0x00331888, 0x2bf3: 0x40331820,\n\t0x2bf4: 0x00331a88, 0x2bf5: 0x40331a20, 0x2bf6: 0x0032b488, 0x2bf7: 0x4032b420,\n\t0x2bf8: 0x0032c288, 0x2bf9: 0x4032c220, 0x2bfa: 0x0032ca88, 0x2bfb: 0x4032ca20,\n\t0x2bfc: 0x0032cc88, 0x2bfd: 0x4032cc20, 0x2bfe: 0x0032e488, 0x2bff: 0x4032e420,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c00: 0x0032e688, 0x2c01: 0x4032e620, 0x2c02: 0x0032ec88, 0x2c03: 0x4032ec20,\n\t0x2c04: 0x0032ee88, 0x2c05: 0x4032ee20, 0x2c06: 0x0032f088, 0x2c07: 0x4032f020,\n\t0x2c08: 0x0032f888, 0x2c09: 0x4032f820, 0x2c0a: 0x0032fc88, 0x2c0b: 0x4032fc20,\n\t0x2c0c: 0x0032fe88, 0x2c0d: 0x4032fe20, 0x2c0e: 0x00330088, 0x2c0f: 0x40330020,\n\t0x2c10: 0x00330288, 0x2c11: 0x40330220, 0x2c12: 0x00330488, 0x2c13: 0x40330420,\n\t0x2c14: 0x00330688, 0x2c15: 0x40330620, 0x2c16: 0x00330c88, 0x2c17: 0x40330c20,\n\t0x2c18: 0x00331088, 0x2c19: 0x40331020, 0x2c1a: 0x00331288, 0x2c1b: 0x40331220,\n\t0x2c1c: 0x00331488, 0x2c1d: 0x40331420, 0x2c1e: 0x00331c88, 0x2c1f: 0x40331c20,\n\t0x2c20: 0x00331e88, 0x2c21: 0x40331e20, 0x2c22: 0x00332088, 0x2c23: 0x40332020,\n\t0x2c24: 0xe00014b0, 0x2c25: 0x40173a20, 0x2c26: 0x40173c20, 0x2c27: 0x40173e20,\n\t0x2c28: 0x40174020, 0x2c29: 0x40174220, 0x2c2a: 0x40174420, 0x2c2b: 0x0032ea88,\n\t0x2c2c: 0x4032ea20, 0x2c2d: 0x00330a88, 0x2c2e: 0x40330a20, 0x2c2f: 0xae605f02,\n\t0x2c30: 0xae602a02, 0x2c31: 0xae602202, 0x2c32: 0x0032f688, 0x2c33: 0x4032f620,\n\t0x2c39: 0x4002f820, 0x2c3a: 0x4002d420, 0x2c3b: 0x4002d620,\n\t0x2c3c: 0x4003b620, 0x2c3d: 0x4028b420, 0x2c3e: 0x4002fa20, 0x2c3f: 0x4003b820,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x40379820, 0x2c41: 0x40379c20, 0x2c42: 0x4037a020, 0x2c43: 0x4037a420,\n\t0x2c44: 0x4037a820, 0x2c45: 0x4037ac20, 0x2c46: 0x4037b020, 0x2c47: 0x4037b820,\n\t0x2c48: 0x4037bc20, 0x2c49: 0x4037c020, 0x2c4a: 0x4037c420, 0x2c4b: 0x4037c820,\n\t0x2c4c: 0x4037cc20, 0x2c4d: 0x4037d420, 0x2c4e: 0x4037d820, 0x2c4f: 0x4037dc20,\n\t0x2c50: 0x4037e020, 0x2c51: 0x4037e420, 0x2c52: 0x4037e820, 0x2c53: 0x4037f020,\n\t0x2c54: 0x4037f420, 0x2c55: 0x4037f820, 0x2c56: 0x4037fc20, 0x2c57: 0x40380020,\n\t0x2c58: 0x40380420, 0x2c59: 0x40380820, 0x2c5a: 0x40380c20, 0x2c5b: 0x40381020,\n\t0x2c5c: 0x40381420, 0x2c5d: 0x40381820, 0x2c5e: 0x40381c20, 0x2c5f: 0x40382420,\n\t0x2c60: 0x40382820, 0x2c61: 0x4037b420, 0x2c62: 0x4037d020, 0x2c63: 0x4037ec20,\n\t0x2c64: 0x40382020, 0x2c65: 0x40382c20, 0x2c67: 0x40383220,\n\t0x2c6d: 0x40383c20,\n\t0x2c70: 0x403bbc20, 0x2c71: 0x403bbe20, 0x2c72: 0x403bc020, 0x2c73: 0x403bc220,\n\t0x2c74: 0x403bc420, 0x2c75: 0x403bc620, 0x2c76: 0x403bc820, 0x2c77: 0x403bca20,\n\t0x2c78: 0x403bcc20, 0x2c79: 0x403bce20, 0x2c7a: 0x403bd020, 0x2c7b: 0x403bd220,\n\t0x2c7c: 0x403bd620, 0x2c7d: 0x403bd820, 0x2c7e: 0x403bda20, 0x2c7f: 0x403bdc20,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c80: 0x403bde20, 0x2c81: 0x403be020, 0x2c82: 0x403be220, 0x2c83: 0x403be420,\n\t0x2c84: 0x403be620, 0x2c85: 0x403be820, 0x2c86: 0x403bea20, 0x2c87: 0x403bec20,\n\t0x2c88: 0x403bee20, 0x2c89: 0x403bf020, 0x2c8a: 0x403bf220, 0x2c8b: 0x403bf420,\n\t0x2c8c: 0x403bf620, 0x2c8d: 0x403bf820, 0x2c8e: 0x403bfa20, 0x2c8f: 0x403bfc20,\n\t0x2c90: 0x403bfe20, 0x2c91: 0x403c0020, 0x2c92: 0x403c0220, 0x2c93: 0x403c0420,\n\t0x2c94: 0x403c0820, 0x2c95: 0x403c0a20, 0x2c96: 0x403c0c20, 0x2c97: 0x403c0e20,\n\t0x2c98: 0x403c1020, 0x2c99: 0x403c1220, 0x2c9a: 0x403c1420, 0x2c9b: 0x403c1620,\n\t0x2c9c: 0x403c1820, 0x2c9d: 0x403c1a20, 0x2c9e: 0x403c1c20, 0x2c9f: 0x403c1e20,\n\t0x2ca0: 0x403c2020, 0x2ca1: 0x403c2220, 0x2ca2: 0x403c2420, 0x2ca3: 0x403c2620,\n\t0x2ca4: 0x403c2820, 0x2ca5: 0x403c2a20, 0x2ca6: 0x403bd420, 0x2ca7: 0x403c0620,\n\t0x2caf: 0x403c2c20,\n\t0x2cb0: 0x4005e620,\n\t0x2cbf: 0xa0900000,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc0: 0x403c4e20, 0x2cc1: 0x403c7820, 0x2cc2: 0x403c9a20, 0x2cc3: 0x403cac20,\n\t0x2cc4: 0x403cca20, 0x2cc5: 0x403d1620, 0x2cc6: 0x403d3820, 0x2cc7: 0x403d4a20,\n\t0x2cc8: 0x403d7620, 0x2cc9: 0x403d8820, 0x2cca: 0x403d9a20, 0x2ccb: 0x403dfc20,\n\t0x2ccc: 0x403e3a20, 0x2ccd: 0x403e5820, 0x2cce: 0x403e6a20, 0x2ccf: 0x403eae20,\n\t0x2cd0: 0x403ec020, 0x2cd1: 0x403ee020, 0x2cd2: 0x403f4020, 0x2cd3: 0x403e9620,\n\t0x2cd4: 0x403e9820, 0x2cd5: 0x403e9a20, 0x2cd6: 0x403e9c20,\n\t0x2ce0: 0x403f4820, 0x2ce1: 0x403f4a20, 0x2ce2: 0x403f4c20, 0x2ce3: 0x403f4e20,\n\t0x2ce4: 0x403f5020, 0x2ce5: 0x403f5220, 0x2ce6: 0x403f5420,\n\t0x2ce8: 0x403f5620, 0x2ce9: 0x403f5820, 0x2cea: 0x403f5a20, 0x2ceb: 0x403f5c20,\n\t0x2cec: 0x403f5e20, 0x2ced: 0x403f6020, 0x2cee: 0x403f6220,\n\t0x2cf0: 0x403f6420, 0x2cf1: 0x403f6620, 0x2cf2: 0x403f6820, 0x2cf3: 0x403f6a20,\n\t0x2cf4: 0x403f6c20, 0x2cf5: 0x403f6e20, 0x2cf6: 0x403f7020,\n\t0x2cf8: 0x403f7220, 0x2cf9: 0x403f7420, 0x2cfa: 0x403f7620, 0x2cfb: 0x403f7820,\n\t0x2cfc: 0x403f7a20, 0x2cfd: 0x403f7c20, 0x2cfe: 0x403f7e20,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d00: 0x403f8020, 0x2d01: 0x403f8220, 0x2d02: 0x403f8420, 0x2d03: 0x403f8620,\n\t0x2d04: 0x403f8820, 0x2d05: 0x403f8a20, 0x2d06: 0x403f8c20,\n\t0x2d08: 0x403f8e20, 0x2d09: 0x403f9020, 0x2d0a: 0x403f9220, 0x2d0b: 0x403f9420,\n\t0x2d0c: 0x403f9620, 0x2d0d: 0x403f9820, 0x2d0e: 0x403f9a20,\n\t0x2d10: 0x403f9c20, 0x2d11: 0x403f9e20, 0x2d12: 0x403fa020, 0x2d13: 0x403fa220,\n\t0x2d14: 0x403fa420, 0x2d15: 0x403fa620, 0x2d16: 0x403fa820,\n\t0x2d18: 0x403faa20, 0x2d19: 0x403fac20, 0x2d1a: 0x403fae20, 0x2d1b: 0x403fb020,\n\t0x2d1c: 0x403fb220, 0x2d1d: 0x403fb420, 0x2d1e: 0x403fb620,\n\t0x2d20: 0x84e619a9, 0x2d21: 0x84e619ad, 0x2d22: 0x84e619b1, 0x2d23: 0x84e619c5,\n\t0x2d24: 0x84e619e5, 0x2d25: 0x84e619f2, 0x2d26: 0x84e61a28, 0x2d27: 0x84e61a42,\n\t0x2d28: 0x84e61a54, 0x2d29: 0x84e61a5d, 0x2d2a: 0x84e61a77, 0x2d2b: 0x84e61a87,\n\t0x2d2c: 0x84e61a94, 0x2d2d: 0x84e61a9d, 0x2d2e: 0x84e61aa6, 0x2d2f: 0x84e61ada,\n\t0x2d30: 0x84e61b01, 0x2d31: 0x84e61b0c, 0x2d32: 0x84e61b2e, 0x2d33: 0x84e61b33,\n\t0x2d34: 0x84e61b86, 0x2d35: 0xe00014d8, 0x2d36: 0x84e61991, 0x2d37: 0x84e619d9,\n\t0x2d38: 0x84e61a27, 0x2d39: 0x84e61ad1, 0x2d3a: 0x84e61b4f, 0x2d3b: 0x84e61b5c,\n\t0x2d3c: 0x84e61b61, 0x2d3d: 0x84e61b6b, 0x2d3e: 0x84e61b70, 0x2d3f: 0x84e61b7a,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d40: 0x40052620, 0x2d41: 0x40052820, 0x2d42: 0x40047420, 0x2d43: 0x40047620,\n\t0x2d44: 0x40047820, 0x2d45: 0x40047a20, 0x2d46: 0x40052a20, 0x2d47: 0x40052c20,\n\t0x2d48: 0x40052e20, 0x2d49: 0x40047c20, 0x2d4a: 0x40047e20, 0x2d4b: 0x40053020,\n\t0x2d4c: 0x40048020, 0x2d4d: 0x40048220, 0x2d4e: 0x40053220, 0x2d4f: 0x40053420,\n\t0x2d50: 0x40053620, 0x2d51: 0x40053820, 0x2d52: 0x40053a20, 0x2d53: 0x40053c20,\n\t0x2d54: 0x40053e20, 0x2d55: 0x40054020, 0x2d56: 0x40054220, 0x2d57: 0x40023620,\n\t0x2d58: 0x4002e220, 0x2d59: 0x4003ba20, 0x2d5a: 0x40054420, 0x2d5b: 0x40054620,\n\t0x2d5c: 0x40048420, 0x2d5d: 0x40048620, 0x2d5e: 0x40054820, 0x2d5f: 0x40054a20,\n\t0x2d60: 0x40048820, 0x2d61: 0x40048a20, 0x2d62: 0x40048c20, 0x2d63: 0x40048e20,\n\t0x2d64: 0x40049020, 0x2d65: 0x40049220, 0x2d66: 0x40049420, 0x2d67: 0x40049620,\n\t0x2d68: 0x40049820, 0x2d69: 0x40049a20, 0x2d6a: 0x4003ae20, 0x2d6b: 0x4003b020,\n\t0x2d6c: 0x4003b220, 0x2d6d: 0x4003b420, 0x2d6e: 0x4002c820, 0x2d6f: 0x40367020,\n\t0x2d70: 0x4002fc20, 0x2d71: 0x40030820, 0x2d72: 0x40024420, 0x2d73: 0x40030a20,\n\t0x2d74: 0x40024220, 0x2d75: 0x40026820, 0x2d76: 0x4004fc20, 0x2d77: 0x4004fe20,\n\t0x2d78: 0x40050020, 0x2d79: 0x4004d020, 0x2d7a: 0x40023020, 0x2d7b: 0x40023220,\n\t// Block 0xb6, offset 0x2d80\n\t0x2d80: 0xe0002401, 0x2d81: 0xe0002416, 0x2d82: 0x029cb684, 0x2d83: 0x029cb484,\n\t0x2d84: 0xe0002404, 0x2d85: 0x029d7684, 0x2d86: 0xe0002407, 0x2d87: 0xe000240a,\n\t0x2d88: 0xe000240d, 0x2d89: 0x02a40484, 0x2d8a: 0xe0002410, 0x2d8b: 0xe0002413,\n\t0x2d8c: 0xe0002419, 0x2d8d: 0xe000241c, 0x2d8e: 0xe000241f, 0x2d8f: 0x02b84684,\n\t0x2d90: 0x02b84484, 0x2d91: 0xe0002422, 0x2d92: 0x02bbe684, 0x2d93: 0x02bcf484,\n\t0x2d94: 0x02bea284, 0x2d95: 0xe0002425, 0x2d96: 0x02bf8884, 0x2d97: 0xe0002428,\n\t0x2d98: 0x02c49884, 0x2d99: 0x02ca6a84, 0x2d9b: 0x02cbc284,\n\t0x2d9c: 0xe000242b, 0x2d9d: 0xe000242e, 0x2d9e: 0xe0002436, 0x2d9f: 0x02d79a84,\n\t0x2da0: 0x02d82284, 0x2da1: 0x02d86a84, 0x2da2: 0x02d87484, 0x2da3: 0x02e0d884,\n\t0x2da4: 0x02e45684, 0x2da5: 0xe0002439, 0x2da6: 0x029c5884, 0x2da7: 0xe000243c,\n\t0x2da8: 0x02e55a84, 0x2da9: 0xe000243f, 0x2daa: 0xe0002442, 0x2dab: 0xe0002445,\n\t0x2dac: 0xe0002448, 0x2dad: 0x02f27684, 0x2dae: 0xe000244b, 0x2daf: 0x02f9f284,\n\t0x2db0: 0x02fd3e84, 0x2db1: 0x02fea684, 0x2db2: 0x02fea484, 0x2db3: 0xe0002451,\n\t0x2db4: 0xe0002454, 0x2db5: 0xe000244e, 0x2db6: 0xe0002457, 0x2db7: 0xe000245a,\n\t0x2db8: 0x02ff1684, 0x2db9: 0x03000484, 0x2dba: 0x03010084, 0x2dbb: 0xe000245d,\n\t0x2dbc: 0xe0002460, 0x2dbd: 0xe0002463, 0x2dbe: 0x0304f284, 0x2dbf: 0xe0002466,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc0: 0xe0002469, 0x2dc1: 0x030c9c84, 0x2dc2: 0x0310c884, 0x2dc3: 0x03130084,\n\t0x2dc4: 0x0312fe84, 0x2dc5: 0x03138284, 0x2dc6: 0x0313a484, 0x2dc7: 0xe000246c,\n\t0x2dc8: 0x03174084, 0x2dc9: 0x031a3a84, 0x2dca: 0xe000246f, 0x2dcb: 0x031ecc84,\n\t0x2dcc: 0x031f6c84, 0x2dcd: 0xe0002472, 0x2dce: 0xe0002475, 0x2dcf: 0xe0002478,\n\t0x2dd0: 0x03290a84, 0x2dd1: 0x032aee84, 0x2dd2: 0x032af084, 0x2dd3: 0x032afe84,\n\t0x2dd4: 0x032bd084, 0x2dd5: 0xe000247b, 0x2dd6: 0x032c3a84, 0x2dd7: 0xe000247e,\n\t0x2dd8: 0x032ea484, 0x2dd9: 0x032fcc84, 0x2dda: 0x0330ea84, 0x2ddb: 0x03319c84,\n\t0x2ddc: 0x0331bc84, 0x2ddd: 0x0331be84, 0x2dde: 0xe0002481, 0x2ddf: 0x0331c084,\n\t0x2de0: 0x0332c684, 0x2de1: 0xe0002484, 0x2de2: 0x0334d884, 0x2de3: 0xe0002487,\n\t0x2de4: 0xe000248a, 0x2de5: 0x0338f884, 0x2de6: 0x033c3e84, 0x2de7: 0xe000248d,\n\t0x2de8: 0x033d4c84, 0x2de9: 0x033d8884, 0x2dea: 0x033dfc84, 0x2deb: 0xe0002490,\n\t0x2dec: 0x033ea084, 0x2ded: 0xe0002493, 0x2dee: 0x033efe84, 0x2def: 0xe0002496,\n\t0x2df0: 0x033f3284, 0x2df1: 0xe0002499, 0x2df2: 0xe000249c, 0x2df3: 0x033f3e84,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e00: 0x029c0084, 0x2e01: 0x029c5084, 0x2e02: 0x029c6c84, 0x2e03: 0x029c7e84,\n\t0x2e04: 0x029cb284, 0x2e05: 0x029d0a84, 0x2e06: 0x029d1884, 0x2e07: 0x029d4084,\n\t0x2e08: 0x029d7484, 0x2e09: 0x02a27e84, 0x2e0a: 0x02a2ca84, 0x2e0b: 0x02a2d684,\n\t0x2e0c: 0x02a30484, 0x2e0d: 0x02a32c84, 0x2e0e: 0x02a35684, 0x2e0f: 0x02a3c084,\n\t0x2e10: 0x02a3ea84, 0x2e11: 0x02a40084, 0x2e12: 0x02a53684, 0x2e13: 0x02a5f284,\n\t0x2e14: 0x02a62a84, 0x2e15: 0x02a63484, 0x2e16: 0x02a67084, 0x2e17: 0x02a68284,\n\t0x2e18: 0x02a6b884, 0x2e19: 0x02a6d284, 0x2e1a: 0x02a70484, 0x2e1b: 0x02a76c84,\n\t0x2e1c: 0x02a79084, 0x2e1d: 0x02a7c684, 0x2e1e: 0x02adae84, 0x2e1f: 0x02ae3e84,\n\t0x2e20: 0x02b1d684, 0x2e21: 0x02b20484, 0x2e22: 0x02b21484, 0x2e23: 0x02b22a84,\n\t0x2e24: 0x02b24e84, 0x2e25: 0x02b2e684, 0x2e26: 0x02b6a084, 0x2e27: 0x02b70084,\n\t0x2e28: 0x02b7f084, 0x2e29: 0x02b81e84, 0x2e2a: 0x02b84484, 0x2e2b: 0x02b87084,\n\t0x2e2c: 0x02b8dc84, 0x2e2d: 0x02b8e284, 0x2e2e: 0x02bbb684, 0x2e2f: 0x02bbca84,\n\t0x2e30: 0x02bbe284, 0x2e31: 0x02bbfc84, 0x2e32: 0x02bce484, 0x2e33: 0x02bcf484,\n\t0x2e34: 0x02bcfe84, 0x2e35: 0x02bde884, 0x2e36: 0x02bdfc84, 0x2e37: 0x02be1684,\n\t0x2e38: 0x02be2684, 0x2e39: 0x02bea084, 0x2e3a: 0x02bec284, 0x2e3b: 0x02bee684,\n\t0x2e3c: 0x02bf8684, 0x2e3d: 0x02c41084, 0x2e3e: 0x02c46c84, 0x2e3f: 0x02c49684,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e40: 0x02ca5e84, 0x2e41: 0x02ca6884, 0x2e42: 0x02cb0e84, 0x2e43: 0x02cb2e84,\n\t0x2e44: 0x02cb4884, 0x2e45: 0x02cb7284, 0x2e46: 0x02cbc084, 0x2e47: 0x02cbca84,\n\t0x2e48: 0x02cde084, 0x2e49: 0x02ce1084, 0x2e4a: 0x02ce5084, 0x2e4b: 0x02d64084,\n\t0x2e4c: 0x02d6c484, 0x2e4d: 0x02d6f284, 0x2e4e: 0x02d76684, 0x2e4f: 0x02d79684,\n\t0x2e50: 0x02d7a884, 0x2e51: 0x02d7b684, 0x2e52: 0x02d81e84, 0x2e53: 0x02d82884,\n\t0x2e54: 0x02d86884, 0x2e55: 0x02e0d684, 0x2e56: 0x02e45484, 0x2e57: 0x02e46c84,\n\t0x2e58: 0x02e47684, 0x2e59: 0x02e47e84, 0x2e5a: 0x02e48e84, 0x2e5b: 0x02e4b284,\n\t0x2e5c: 0x02e4b684, 0x2e5d: 0x02e55884, 0x2e5e: 0x02e70884, 0x2e5f: 0x02e71284,\n\t0x2e60: 0x02e9b884, 0x2e61: 0x02e9cc84, 0x2e62: 0x02ea3084, 0x2e63: 0x02ea3e84,\n\t0x2e64: 0x02ea5084, 0x2e65: 0x02ea6084, 0x2e66: 0x02eb1684, 0x2e67: 0x02eb2484,\n\t0x2e68: 0x02ecec84, 0x2e69: 0x02ecfa84, 0x2e6a: 0x02ed5c84, 0x2e6b: 0x02ed7e84,\n\t0x2e6c: 0x02eddc84, 0x2e6d: 0x02efb684, 0x2e6e: 0x02efc484, 0x2e6f: 0x02efe684,\n\t0x2e70: 0x02f27484, 0x2e71: 0x02f37084, 0x2e72: 0x02f37c84, 0x2e73: 0x02f4e884,\n\t0x2e74: 0x02f59684, 0x2e75: 0x02f5f284, 0x2e76: 0x02f8e684, 0x2e77: 0x02f9f084,\n\t0x2e78: 0x02fe6c84, 0x2e79: 0x02fea284, 0x2e7a: 0x02ff1484, 0x2e7b: 0x02ff7a84,\n\t0x2e7c: 0x03000284, 0x2e7d: 0x03001884, 0x2e7e: 0x03002484, 0x2e7f: 0x03006684,\n\t// Block 0xba, offset 0x2e80\n\t0x2e80: 0x0300fe84, 0x2e81: 0x03011284, 0x2e82: 0x0303c684, 0x2e83: 0x0303d484,\n\t0x2e84: 0x0303e684, 0x2e85: 0x0303f884, 0x2e86: 0x03041884, 0x2e87: 0x03043684,\n\t0x2e88: 0x03043e84, 0x2e89: 0x0304dc84, 0x2e8a: 0x0304e484, 0x2e8b: 0x0304f084,\n\t0x2e8c: 0x030c9a84, 0x2e8d: 0x030cd684, 0x2e8e: 0x03108084, 0x2e8f: 0x03109884,\n\t0x2e90: 0x0310c684, 0x2e91: 0x0312fc84, 0x2e92: 0x03131684, 0x2e93: 0x0313a484,\n\t0x2e94: 0x03140084, 0x2e95: 0x03186e84, 0x2e96: 0x03188c84, 0x2e97: 0x0318aa84,\n\t0x2e98: 0x0318f084, 0x2e99: 0x03193a84, 0x2e9a: 0x031ac884, 0x2e9b: 0x031ae084,\n\t0x2e9c: 0x031b6684, 0x2e9d: 0x031d5684, 0x2e9e: 0x031d9484, 0x2e9f: 0x031f3684,\n\t0x2ea0: 0x031f6084, 0x2ea1: 0x031f6a84, 0x2ea2: 0x03212284, 0x2ea3: 0x03229284,\n\t0x2ea4: 0x03238c84, 0x2ea5: 0x03239884, 0x2ea6: 0x0323a284, 0x2ea7: 0x032aee84,\n\t0x2ea8: 0x032b0084, 0x2ea9: 0x032c3884, 0x2eaa: 0x032d6c84, 0x2eab: 0x032d7284,\n\t0x2eac: 0x032dd084, 0x2ead: 0x032ea284, 0x2eae: 0x032ebc84, 0x2eaf: 0x032ec484,\n\t0x2eb0: 0x032ed284, 0x2eb1: 0x032f9684, 0x2eb2: 0x032fda84, 0x2eb3: 0x032fe684,\n\t0x2eb4: 0x03300284, 0x2eb5: 0x03315084, 0x2eb6: 0x0331b684, 0x2eb7: 0x0331be84,\n\t0x2eb8: 0x03332c84, 0x2eb9: 0x03333284, 0x2eba: 0x03335884, 0x2ebb: 0x03355084,\n\t0x2ebc: 0x0335b084, 0x2ebd: 0x0335be84, 0x2ebe: 0x03364a84, 0x2ebf: 0x03365e84,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec0: 0x03366484, 0x2ec1: 0x03367884, 0x2ec2: 0x0336b484, 0x2ec3: 0x0339ca84,\n\t0x2ec4: 0x033cea84, 0x2ec5: 0x033cfe84, 0x2ec6: 0x033d4a84, 0x2ec7: 0x033d7684,\n\t0x2ec8: 0x033d8684, 0x2ec9: 0x033d9a84, 0x2eca: 0x033da284, 0x2ecb: 0x033df284,\n\t0x2ecc: 0x033dfa84, 0x2ecd: 0x033e1c84, 0x2ece: 0x033e2684, 0x2ecf: 0x033e4084,\n\t0x2ed0: 0x033e7684, 0x2ed1: 0x033e9484, 0x2ed2: 0x033ea484, 0x2ed3: 0x033f1a84,\n\t0x2ed4: 0x033f3884, 0x2ed5: 0x033f4084,\n\t0x2ef0: 0x40273a20, 0x2ef1: 0x40273c20, 0x2ef2: 0x40273e20, 0x2ef3: 0x40274020,\n\t0x2ef4: 0x40274220, 0x2ef5: 0x40274420, 0x2ef6: 0x40274620, 0x2ef7: 0x40274820,\n\t0x2ef8: 0x40274a20, 0x2ef9: 0x40274c20, 0x2efa: 0x40274e20, 0x2efb: 0x40275020,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f00: 0x00021283, 0x2f01: 0x40025c20, 0x2f02: 0x40030420, 0x2f03: 0x40051220,\n\t0x2f04: 0x40279a20, 0x2f05: 0x4027ca20, 0x2f06: 0xe0002206, 0x2f07: 0xe00001d3,\n\t0x2f08: 0x40049c20, 0x2f09: 0x40049e20, 0x2f0a: 0x4004a020, 0x2f0b: 0x4004a220,\n\t0x2f0c: 0x4004a420, 0x2f0d: 0x4004a620, 0x2f0e: 0x4004a820, 0x2f0f: 0x4004aa20,\n\t0x2f10: 0x4004ac20, 0x2f11: 0x4004ae20, 0x2f12: 0x40279c20, 0x2f13: 0x40279e20,\n\t0x2f14: 0x4004b020, 0x2f15: 0x4004b220, 0x2f16: 0x4004b420, 0x2f17: 0x4004b620,\n\t0x2f18: 0x4004b820, 0x2f19: 0x4004ba20, 0x2f1a: 0x4004bc20, 0x2f1b: 0x4004be20,\n\t0x2f1c: 0x40023820, 0x2f1d: 0x4003ea20, 0x2f1e: 0x4003ec20, 0x2f1f: 0x4003ee20,\n\t0x2f20: 0x4027a020, 0x2f21: 0xe0000267, 0x2f22: 0xe000037f, 0x2f23: 0xe0000459,\n\t0x2f24: 0xe000052e, 0x2f25: 0xe00005f8, 0x2f26: 0xe00006c3, 0x2f27: 0xe000076b,\n\t0x2f28: 0xe0000817, 0x2f29: 0xe00008bc, 0x2f2a: 0xada12202, 0x2f2b: 0xae412302,\n\t0x2f2c: 0xae812402, 0x2f2d: 0xade12502, 0x2f2e: 0xae012602, 0x2f2f: 0xae012702,\n\t0x2f30: 0x40023a20, 0x2f31: 0x4027ce20, 0x2f32: 0xe0000152, 0x2f33: 0x4027d020,\n\t0x2f34: 0xe0000155, 0x2f35: 0x4027d220, 0x2f36: 0x00279c84, 0x2f37: 0x4027a220,\n\t0x2f38: 0x02a68284, 0x2f39: 0x02a68884, 0x2f3a: 0x02a68a84, 0x2f3b: 0x4027cc20,\n\t0x2f3c: 0xe000231a, 0x2f3d: 0x40051420, 0x2f3e: 0x4027a420, 0x2f3f: 0x4027a620,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f41: 0x0065768d, 0x2f42: 0x0065768e, 0x2f43: 0x0065788d,\n\t0x2f44: 0x0065788e, 0x2f45: 0x00657a8d, 0x2f46: 0x00657a8e, 0x2f47: 0x00657e8d,\n\t0x2f48: 0x00657e8e, 0x2f49: 0x0065808d, 0x2f4a: 0x0065808e, 0x2f4b: 0x0065828e,\n\t0x2f4c: 0xe000216a, 0x2f4d: 0x0065848e, 0x2f4e: 0xe0002188, 0x2f4f: 0x0065868e,\n\t0x2f50: 0xe00021b8, 0x2f51: 0x0065888e, 0x2f52: 0xe00021d6, 0x2f53: 0x00658a8e,\n\t0x2f54: 0xe00021e0, 0x2f55: 0x00658c8e, 0x2f56: 0xe00021ef, 0x2f57: 0x00658e8e,\n\t0x2f58: 0xe0002200, 0x2f59: 0x0065908e, 0x2f5a: 0xe000220f, 0x2f5b: 0x0065928e,\n\t0x2f5c: 0xe0002215, 0x2f5d: 0x0065948e, 0x2f5e: 0xe0002223, 0x2f5f: 0x0065968e,\n\t0x2f60: 0xe0002229, 0x2f61: 0x0065988e, 0x2f62: 0xe0002234, 0x2f63: 0x00659a8d,\n\t0x2f64: 0x00659a8e, 0x2f65: 0xe000223a, 0x2f66: 0x00659c8e, 0x2f67: 0xe0002240,\n\t0x2f68: 0x00659e8e, 0x2f69: 0xe000224a, 0x2f6a: 0x0065a08e, 0x2f6b: 0x0065a28e,\n\t0x2f6c: 0x0065a48e, 0x2f6d: 0x0065a68e, 0x2f6e: 0x0065a88e, 0x2f6f: 0x0065aa8e,\n\t0x2f70: 0xe0002258, 0x2f71: 0xe000225e, 0x2f72: 0x0065ac8e, 0x2f73: 0xe000227a,\n\t0x2f74: 0xe0002280, 0x2f75: 0x0065ae8e, 0x2f76: 0xe000229a, 0x2f77: 0xe00022a0,\n\t0x2f78: 0x0065b08e, 0x2f79: 0xe00022bd, 0x2f7a: 0xe00022c3, 0x2f7b: 0x0065b28e,\n\t0x2f7c: 0xe00022ec, 0x2f7d: 0xe00022f2, 0x2f7e: 0x0065b48e, 0x2f7f: 0x0065b68e,\n\t// Block 0xbe, offset 0x2f80\n\t0x2f80: 0x0065b88e, 0x2f81: 0x0065ba8e, 0x2f82: 0x0065bc8e, 0x2f83: 0x0065be8d,\n\t0x2f84: 0x0065be8e, 0x2f85: 0x0065c08d, 0x2f86: 0x0065c08e, 0x2f87: 0x0065c48d,\n\t0x2f88: 0x0065c48e, 0x2f89: 0x0065c68e, 0x2f8a: 0x0065c88e, 0x2f8b: 0x0065ca8e,\n\t0x2f8c: 0x0065cc8e, 0x2f8d: 0x0065ce8e, 0x2f8e: 0x0065d08d, 0x2f8f: 0x0065d08e,\n\t0x2f90: 0x0065d28e, 0x2f91: 0x0065d48e, 0x2f92: 0x0065d68e, 0x2f93: 0x0065d88e,\n\t0x2f94: 0xe000214c, 0x2f95: 0x0065828d, 0x2f96: 0x0065888d,\n\t0x2f99: 0xa0812802, 0x2f9a: 0xa0812902, 0x2f9b: 0x40063c20,\n\t0x2f9c: 0x40063e20, 0x2f9d: 0x4027d420, 0x2f9e: 0xe0000158, 0x2f9f: 0xf0001616,\n\t0x2fa0: 0x40023c20, 0x2fa1: 0x0065768f, 0x2fa2: 0x00657691, 0x2fa3: 0x0065788f,\n\t0x2fa4: 0x00657891, 0x2fa5: 0x00657a8f, 0x2fa6: 0x00657a91, 0x2fa7: 0x00657e8f,\n\t0x2fa8: 0x00657e91, 0x2fa9: 0x0065808f, 0x2faa: 0x00658091, 0x2fab: 0x00658291,\n\t0x2fac: 0xe000216d, 0x2fad: 0x00658491, 0x2fae: 0xe000218b, 0x2faf: 0x00658691,\n\t0x2fb0: 0xe00021bb, 0x2fb1: 0x00658891, 0x2fb2: 0xe00021d9, 0x2fb3: 0x00658a91,\n\t0x2fb4: 0xe00021e3, 0x2fb5: 0x00658c91, 0x2fb6: 0xe00021f2, 0x2fb7: 0x00658e91,\n\t0x2fb8: 0xe0002203, 0x2fb9: 0x00659091, 0x2fba: 0xe0002212, 0x2fbb: 0x00659291,\n\t0x2fbc: 0xe0002218, 0x2fbd: 0x00659491, 0x2fbe: 0xe0002226, 0x2fbf: 0x00659691,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2fc0: 0xe000222c, 0x2fc1: 0x00659891, 0x2fc2: 0xe0002237, 0x2fc3: 0x00659a8f,\n\t0x2fc4: 0x00659a91, 0x2fc5: 0xe000223d, 0x2fc6: 0x00659c91, 0x2fc7: 0xe0002243,\n\t0x2fc8: 0x00659e91, 0x2fc9: 0xe000224d, 0x2fca: 0x0065a091, 0x2fcb: 0x0065a291,\n\t0x2fcc: 0x0065a491, 0x2fcd: 0x0065a691, 0x2fce: 0x0065a891, 0x2fcf: 0x0065aa91,\n\t0x2fd0: 0xe000225b, 0x2fd1: 0xe0002261, 0x2fd2: 0x0065ac91, 0x2fd3: 0xe000227d,\n\t0x2fd4: 0xe0002283, 0x2fd5: 0x0065ae91, 0x2fd6: 0xe000229d, 0x2fd7: 0xe00022a3,\n\t0x2fd8: 0x0065b091, 0x2fd9: 0xe00022c0, 0x2fda: 0xe00022c6, 0x2fdb: 0x0065b291,\n\t0x2fdc: 0xe00022ef, 0x2fdd: 0xe00022f5, 0x2fde: 0x0065b491, 0x2fdf: 0x0065b691,\n\t0x2fe0: 0x0065b891, 0x2fe1: 0x0065ba91, 0x2fe2: 0x0065bc91, 0x2fe3: 0x0065be8f,\n\t0x2fe4: 0x0065be91, 0x2fe5: 0x0065c08f, 0x2fe6: 0x0065c091, 0x2fe7: 0x0065c48f,\n\t0x2fe8: 0x0065c491, 0x2fe9: 0x0065c691, 0x2fea: 0x0065c891, 0x2feb: 0x0065ca91,\n\t0x2fec: 0x0065cc91, 0x2fed: 0x0065ce91, 0x2fee: 0x0065d08f, 0x2fef: 0x0065d091,\n\t0x2ff0: 0x0065d291, 0x2ff1: 0x0065d491, 0x2ff2: 0x0065d691, 0x2ff3: 0x0065d891,\n\t0x2ff4: 0xe000214f, 0x2ff5: 0x0065828f, 0x2ff6: 0x0065888f, 0x2ff7: 0xe000236a,\n\t0x2ff8: 0xe0002371, 0x2ff9: 0xe0002374, 0x2ffa: 0xe0002377, 0x2ffb: 0x40023e20,\n\t0x2ffc: 0x4027d620, 0x2ffd: 0x4027d820, 0x2ffe: 0xe000015b, 0x2fff: 0xf0001616,\n\t// Block 0xc0, offset 0x3000\n\t0x3005: 0x4065da20, 0x3006: 0x4065dc20, 0x3007: 0x4065de20,\n\t0x3008: 0x4065e020, 0x3009: 0x4065e420, 0x300a: 0x4065e620, 0x300b: 0x4065e820,\n\t0x300c: 0x4065ea20, 0x300d: 0x4065ec20, 0x300e: 0x4065ee20, 0x300f: 0x4065f420,\n\t0x3010: 0x4065f620, 0x3011: 0x4065f820, 0x3012: 0x4065fa20, 0x3013: 0x4065fe20,\n\t0x3014: 0x40660020, 0x3015: 0x40660220, 0x3016: 0x40660420, 0x3017: 0x40660620,\n\t0x3018: 0x40660820, 0x3019: 0x40660a20, 0x301a: 0x40661220, 0x301b: 0x40661420,\n\t0x301c: 0x40661820, 0x301d: 0x40661a20, 0x301e: 0x40661e20, 0x301f: 0x40662020,\n\t0x3020: 0x40662220, 0x3021: 0x40662420, 0x3022: 0x40662620, 0x3023: 0x40662820,\n\t0x3024: 0x40662a20, 0x3025: 0x40662e20, 0x3026: 0x40663620, 0x3027: 0x40663820,\n\t0x3028: 0x40663a20, 0x3029: 0x40663c20, 0x302a: 0x4065e220, 0x302b: 0x4065f020,\n\t0x302c: 0x4065fc20, 0x302d: 0x40663e20,\n\t0x3031: 0x0062ac84, 0x3032: 0x0062ae84, 0x3033: 0x00646884,\n\t0x3034: 0x0062b084, 0x3035: 0x00646c84, 0x3036: 0x00646e84, 0x3037: 0x0062b284,\n\t0x3038: 0x0062b484, 0x3039: 0x0062b684, 0x303a: 0x00647484, 0x303b: 0x00647684,\n\t0x303c: 0x00647884, 0x303d: 0x00647a84, 0x303e: 0x00647c84, 0x303f: 0x00647e84,\n\t// Block 0xc1, offset 0x3040\n\t0x3040: 0x0062e084, 0x3041: 0x0062b884, 0x3042: 0x0062ba84, 0x3043: 0x0062bc84,\n\t0x3044: 0x0062ee84, 0x3045: 0x0062be84, 0x3046: 0x0062c084, 0x3047: 0x0062c284,\n\t0x3048: 0x0062c484, 0x3049: 0x0062c684, 0x304a: 0x0062c884, 0x304b: 0x0062ca84,\n\t0x304c: 0x0062cc84, 0x304d: 0x0062ce84, 0x304e: 0x0062d084, 0x304f: 0x0063a884,\n\t0x3050: 0x0063aa84, 0x3051: 0x0063ac84, 0x3052: 0x0063ae84, 0x3053: 0x0063b084,\n\t0x3054: 0x0063b284, 0x3055: 0x0063b484, 0x3056: 0x0063b684, 0x3057: 0x0063b884,\n\t0x3058: 0x0063ba84, 0x3059: 0x0063bc84, 0x305a: 0x0063be84, 0x305b: 0x0063c084,\n\t0x305c: 0x0063c284, 0x305d: 0x0063c484, 0x305e: 0x0063c684, 0x305f: 0x0063c884,\n\t0x3060: 0x0063ca84, 0x3061: 0x0063cc84, 0x3062: 0x0063ce84, 0x3063: 0x0063d084,\n\t0x3064: 0x0063a684, 0x3065: 0x0062d484, 0x3066: 0x0062d684, 0x3067: 0x0064a284,\n\t0x3068: 0x0064a484, 0x3069: 0x0064ac84, 0x306a: 0x0064b084, 0x306b: 0x0064ba84,\n\t0x306c: 0x0064c284, 0x306d: 0x0064c684, 0x306e: 0x0062e484, 0x306f: 0x0064ce84,\n\t0x3070: 0x0064d284, 0x3071: 0x0062e684, 0x3072: 0x0062e884, 0x3073: 0x0062ec84,\n\t0x3074: 0x0062f084, 0x3075: 0x0062f284, 0x3076: 0x0062fa84, 0x3077: 0x0062fe84,\n\t0x3078: 0x00630284, 0x3079: 0x00630484, 0x307a: 0x00630684, 0x307b: 0x00630884,\n\t0x307c: 0x00630a84, 0x307d: 0x00631084, 0x307e: 0x00631884, 0x307f: 0x00632c84,\n\t// Block 0xc2, offset 0x3080\n\t0x3080: 0x00633a84, 0x3081: 0x00634484, 0x3082: 0x0064f684, 0x3083: 0x0064f884,\n\t0x3084: 0x00635a84, 0x3085: 0x00635c84, 0x3086: 0x00635e84, 0x3087: 0x0063ee84,\n\t0x3088: 0x0063f084, 0x3089: 0x0063f684, 0x308a: 0x00640884, 0x308b: 0x00640a84,\n\t0x308c: 0x00640e84, 0x308d: 0x00642284, 0x308e: 0x00642884,\n\t0x3090: 0x4027a820, 0x3091: 0x4027aa20, 0x3092: 0x029c0094, 0x3093: 0x029d1894,\n\t0x3094: 0x029c1294, 0x3095: 0x02adb694, 0x3096: 0x029c1494, 0x3097: 0x029c5a94,\n\t0x3098: 0x029c1694, 0x3099: 0x02ea6494, 0x309a: 0x029cb294, 0x309b: 0x029c3294,\n\t0x309c: 0x029c0294, 0x309d: 0x02b25294, 0x309e: 0x02ae6094, 0x309f: 0x029d7494,\n\t0x30a0: 0xe000237a, 0x30a1: 0xe0002383, 0x30a2: 0xe0002380, 0x30a3: 0xe000237d,\n\t0x30a4: 0x40661c20, 0x30a5: 0xe000238c, 0x30a6: 0x40661620, 0x30a7: 0xe0002389,\n\t0x30a8: 0xe000239e, 0x30a9: 0xe0002386, 0x30aa: 0xe0002395, 0x30ab: 0xe000239b,\n\t0x30ac: 0x40663420, 0x30ad: 0x4065f220, 0x30ae: 0xe000238f, 0x30af: 0xe0002392,\n\t0x30b0: 0x40663020, 0x30b1: 0x40663220, 0x30b2: 0x40662c20, 0x30b3: 0xe0002398,\n\t0x30b4: 0x0065dc99, 0x30b5: 0x0065e699, 0x30b6: 0x0065ee99, 0x30b7: 0x0065f499,\n\t0x30b8: 0x40660c20, 0x30b9: 0x40660e20, 0x30ba: 0x40661020,\n\t// Block 0xc3, offset 0x30c0\n\t0x30c0: 0x40275220, 0x30c1: 0x40275420, 0x30c2: 0x40275620, 0x30c3: 0x40275820,\n\t0x30c4: 0x40275a20, 0x30c5: 0x40275c20, 0x30c6: 0x40275e20, 0x30c7: 0x40276020,\n\t0x30c8: 0x40276220, 0x30c9: 0x40276420, 0x30ca: 0x40276620, 0x30cb: 0x40276820,\n\t0x30cc: 0x40276a20, 0x30cd: 0x40276c20, 0x30ce: 0x40276e20, 0x30cf: 0x40277020,\n\t0x30d0: 0x40277220, 0x30d1: 0x40277420, 0x30d2: 0x40277620, 0x30d3: 0x40277820,\n\t0x30d4: 0x40277a20, 0x30d5: 0x40277c20, 0x30d6: 0x40277e20, 0x30d7: 0x40278020,\n\t0x30d8: 0x40278220, 0x30d9: 0x40278420, 0x30da: 0x40278620, 0x30db: 0x40278820,\n\t0x30dc: 0x40278a20, 0x30dd: 0x40278c20, 0x30de: 0x40278e20, 0x30df: 0x40279020,\n\t0x30e0: 0x40279220, 0x30e1: 0x40279420, 0x30e2: 0x40279620, 0x30e3: 0x40279820,\n\t0x30f0: 0x0065868f, 0x30f1: 0x00658e8f, 0x30f2: 0x0065908f, 0x30f3: 0x00659e8f,\n\t0x30f4: 0x0065a48f, 0x30f5: 0x0065aa8f, 0x30f6: 0x0065ac8f, 0x30f7: 0x0065ae8f,\n\t0x30f8: 0x0065b08f, 0x30f9: 0x0065b28f, 0x30fa: 0x0065b88f, 0x30fb: 0x0065c68f,\n\t0x30fc: 0x0065c88f, 0x30fd: 0x0065ca8f, 0x30fe: 0x0065cc8f, 0x30ff: 0x0065ce8f,\n\t// Block 0xc4, offset 0x3100\n\t0x3100: 0xf0000404, 0x3101: 0xf0000404, 0x3102: 0xf0000404, 0x3103: 0xf0000404,\n\t0x3104: 0xf0000404, 0x3105: 0xf0000404, 0x3106: 0xf0000404, 0x3107: 0xf0000404,\n\t0x3108: 0xf0000404, 0x3109: 0xf0000404, 0x310a: 0xf0000404, 0x310b: 0xf0000404,\n\t0x310c: 0xf0000404, 0x310d: 0xf0000404, 0x310e: 0xe000004c, 0x310f: 0xe0000051,\n\t0x3110: 0xe0000056, 0x3111: 0xe000005b, 0x3112: 0xe0000060, 0x3113: 0xe0000065,\n\t0x3114: 0xe000006a, 0x3115: 0xe000006f, 0x3116: 0xe0000083, 0x3117: 0xe000008d,\n\t0x3118: 0xe0000092, 0x3119: 0xe0000097, 0x311a: 0xe000009c, 0x311b: 0xe00000a1,\n\t0x311c: 0xe0000088, 0x311d: 0xe0000074, 0x311e: 0xe000007c,\n\t0x3120: 0xf0000404, 0x3121: 0xf0000404, 0x3122: 0xf0000404, 0x3123: 0xf0000404,\n\t0x3124: 0xf0000404, 0x3125: 0xf0000404, 0x3126: 0xf0000404, 0x3127: 0xf0000404,\n\t0x3128: 0xf0000404, 0x3129: 0xf0000404, 0x312a: 0xf0000404, 0x312b: 0xf0000404,\n\t0x312c: 0xf0000404, 0x312d: 0xf0000404, 0x312e: 0xf0000404, 0x312f: 0xf0000404,\n\t0x3130: 0xf0000404, 0x3131: 0xf0000404, 0x3132: 0xf0000404, 0x3133: 0xf0000404,\n\t0x3134: 0xf0000404, 0x3135: 0xf0000404, 0x3136: 0xf0000404, 0x3137: 0xf0000404,\n\t0x3138: 0xf0000404, 0x3139: 0xf0000404, 0x313a: 0xf0000404, 0x313b: 0xf0000404,\n\t0x313c: 0xf0000404, 0x313d: 0xf0000404, 0x313e: 0xf0000404, 0x313f: 0xf0000404,\n\t// Block 0xc5, offset 0x3140\n\t0x3140: 0xf0000404, 0x3141: 0xf0000404, 0x3142: 0xf0000404, 0x3143: 0xf0000404,\n\t0x3144: 0x02aa9e86, 0x3145: 0x02bcf886, 0x3146: 0x02cb0e86, 0x3147: 0x02f71e86,\n\t0x3148: 0xe00002e3, 0x3149: 0xe00003d8, 0x314a: 0xe00004b3, 0x314b: 0xe000057d,\n\t0x314c: 0xe0000648, 0x314d: 0xe00006f0, 0x314e: 0xe000079c, 0x314f: 0xe0000841,\n\t0x3150: 0xe0000ec0, 0x3151: 0xf0000606, 0x3152: 0xf0000606, 0x3153: 0xf0000606,\n\t0x3154: 0xf0000606, 0x3155: 0xf0000606, 0x3156: 0xf0000606, 0x3157: 0xf0000606,\n\t0x3158: 0xf0000606, 0x3159: 0xf0000606, 0x315a: 0xf0000606, 0x315b: 0xf0000606,\n\t0x315c: 0xf0000606, 0x315d: 0xf0000606, 0x315e: 0xf0000606, 0x315f: 0xf0000606,\n\t0x3160: 0x0062ac86, 0x3161: 0x0062b086, 0x3162: 0x0062b286, 0x3163: 0x0062b686,\n\t0x3164: 0x0062b886, 0x3165: 0x0062ba86, 0x3166: 0x0062be86, 0x3167: 0x0062c286,\n\t0x3168: 0x0062c486, 0x3169: 0x0062c886, 0x316a: 0x0062ca86, 0x316b: 0x0062cc86,\n\t0x316c: 0x0062ce86, 0x316d: 0x0062d086, 0x316e: 0xf0000606, 0x316f: 0xf0000606,\n\t0x3170: 0xf0000606, 0x3171: 0xf0000606, 0x3172: 0xf0000606, 0x3173: 0xf0000606,\n\t0x3174: 0xf0000606, 0x3175: 0xf0000606, 0x3176: 0xf0000606, 0x3177: 0xf0000606,\n\t0x3178: 0xf0000606, 0x3179: 0xf0000606, 0x317a: 0xf0000606, 0x317b: 0xf0000606,\n\t0x317c: 0xe0002127, 0x317d: 0xe0002122, 0x317e: 0xf0000606, 0x317f: 0x4027ac20,\n\t// Block 0xc6, offset 0x3180\n\t0x3180: 0x029c0086, 0x3181: 0x029d1886, 0x3182: 0x029c1286, 0x3183: 0x02adb686,\n\t0x3184: 0x029d2886, 0x3185: 0x02a2da86, 0x3186: 0x029c0686, 0x3187: 0x02a2d686,\n\t0x3188: 0x029cba86, 0x3189: 0x02a68286, 0x318a: 0x02ce1086, 0x318b: 0x02e0d686,\n\t0x318c: 0x02d86886, 0x318d: 0x02ce5086, 0x318e: 0x0323a286, 0x318f: 0x02ae3e86,\n\t0x3190: 0x02cbca86, 0x3191: 0x02d05486, 0x3192: 0x02ce1286, 0x3193: 0x02f27c86,\n\t0x3194: 0x02a81a86, 0x3195: 0x02e4f286, 0x3196: 0x03194286, 0x3197: 0x02f2ba86,\n\t0x3198: 0x02a56886, 0x3199: 0x02f3b086, 0x319a: 0x02ea6e86, 0x319b: 0x02b2e686,\n\t0x319c: 0x0320d286, 0x319d: 0x02a25486, 0x319e: 0x02a6e086, 0x319f: 0x02d9d086,\n\t0x31a0: 0x03300a86, 0x31a1: 0x029e2286, 0x31a2: 0x02a33286, 0x31a3: 0x02d6c686,\n\t0x31a4: 0x029c1486, 0x31a5: 0x029c5a86, 0x31a6: 0x029c1686, 0x31a7: 0x02bbcc86,\n\t0x31a8: 0x02a7e686, 0x31a9: 0x02a67686, 0x31aa: 0x02b72e86, 0x31ab: 0x02b6cc86,\n\t0x31ac: 0x02edc686, 0x31ad: 0x029e0286, 0x31ae: 0x03198e86, 0x31af: 0x02a6a886,\n\t0x31b0: 0x02b23886, 0x31b1: 0xf0000606, 0x31b2: 0xf0000606, 0x31b3: 0xf0000606,\n\t0x31b4: 0xf0000606, 0x31b5: 0xf0000606, 0x31b6: 0xf0000606, 0x31b7: 0xf0000606,\n\t0x31b8: 0xf0000606, 0x31b9: 0xf0000606, 0x31ba: 0xf0000606, 0x31bb: 0xf0000606,\n\t0x31bc: 0xf0000606, 0x31bd: 0xf0000606, 0x31be: 0xf0000606, 0x31bf: 0xf0000606,\n\t// Block 0xc7, offset 0x31c0\n\t0x31c0: 0xf0001f04, 0x31c1: 0xf0001f04, 0x31c2: 0xf0001f04, 0x31c3: 0xf0001f04,\n\t0x31c4: 0xf0001f04, 0x31c5: 0xf0001f04, 0x31c6: 0xf0001f04, 0x31c7: 0xf0001f04,\n\t0x31c8: 0xf0001f04, 0x31c9: 0xf0000404, 0x31ca: 0xf0000404, 0x31cb: 0xf0000404,\n\t0x31cc: 0xf0001c1d, 0x31cd: 0xe0000b85, 0x31ce: 0xf0001d1c, 0x31cf: 0xe0000d14,\n\t0x31d0: 0x00657693, 0x31d1: 0x00657893, 0x31d2: 0x00657a93, 0x31d3: 0x00657e93,\n\t0x31d4: 0x00658093, 0x31d5: 0x00658293, 0x31d6: 0x00658493, 0x31d7: 0x00658693,\n\t0x31d8: 0x00658893, 0x31d9: 0x00658a93, 0x31da: 0x00658c93, 0x31db: 0x00658e93,\n\t0x31dc: 0x00659093, 0x31dd: 0x00659293, 0x31de: 0x00659493, 0x31df: 0x00659693,\n\t0x31e0: 0x00659893, 0x31e1: 0x00659a93, 0x31e2: 0x00659c93, 0x31e3: 0x00659e93,\n\t0x31e4: 0x0065a093, 0x31e5: 0x0065a293, 0x31e6: 0x0065a493, 0x31e7: 0x0065a693,\n\t0x31e8: 0x0065a893, 0x31e9: 0x0065aa93, 0x31ea: 0x0065ac93, 0x31eb: 0x0065ae93,\n\t0x31ec: 0x0065b093, 0x31ed: 0x0065b293, 0x31ee: 0x0065b493, 0x31ef: 0x0065b693,\n\t0x31f0: 0x0065b893, 0x31f1: 0x0065ba93, 0x31f2: 0x0065bc93, 0x31f3: 0x0065be93,\n\t0x31f4: 0x0065c093, 0x31f5: 0x0065c493, 0x31f6: 0x0065c693, 0x31f7: 0x0065c893,\n\t0x31f8: 0x0065ca93, 0x31f9: 0x0065cc93, 0x31fa: 0x0065ce93, 0x31fb: 0x0065d093,\n\t0x31fc: 0x0065d293, 0x31fd: 0x0065d493, 0x31fe: 0x0065d693,\n\t// Block 0xc8, offset 0x3200\n\t0x3200: 0xe0002131, 0x3201: 0xe0002137, 0x3202: 0xe000213c, 0x3203: 0xe000212d,\n\t0x3204: 0xe0002142, 0x3205: 0xe0002148, 0x3206: 0xe0002152, 0x3207: 0xe000215b,\n\t0x3208: 0xe0002156, 0x3209: 0xe0002166, 0x320a: 0xe0002162, 0x320b: 0xe0002170,\n\t0x320c: 0xe0002174, 0x320d: 0xe0002179, 0x320e: 0xe000217e, 0x320f: 0xe0002183,\n\t0x3210: 0xe000218e, 0x3211: 0xe0002193, 0x3212: 0xe0002198, 0x3213: 0xe000219d,\n\t0x3214: 0xf0001c1c, 0x3215: 0xe00021a4, 0x3216: 0xe00021ab, 0x3217: 0xe00021b2,\n\t0x3218: 0xe00021be, 0x3219: 0xe00021c3, 0x321a: 0xe00021ca, 0x321b: 0xe00021d1,\n\t0x321c: 0xe00021dc, 0x321d: 0xe00021eb, 0x321e: 0xe00021e6, 0x321f: 0xe00021f5,\n\t0x3220: 0xe00021fa, 0x3221: 0xe0002209, 0x3222: 0xe000221b, 0x3223: 0xe000221f,\n\t0x3224: 0xe000222f, 0x3225: 0xe0002246, 0x3226: 0xe0002250, 0x3227: 0xf0001c1c,\n\t0x3228: 0xf0001c1c, 0x3229: 0xe0002254, 0x322a: 0xe0002276, 0x322b: 0xe0002264,\n\t0x322c: 0xe000226b, 0x322d: 0xe0002270, 0x322e: 0xe0002286, 0x322f: 0xe000228d,\n\t0x3230: 0xe0002292, 0x3231: 0xe0002296, 0x3232: 0xe00022a6, 0x3233: 0xe00022ad,\n\t0x3234: 0xe00022b2, 0x3235: 0xe00022b9, 0x3236: 0xe00022d4, 0x3237: 0xe00022da,\n\t0x3238: 0xe00022de, 0x3239: 0xe00022e3, 0x323a: 0xe00022e7, 0x323b: 0xe00022c9,\n\t0x323c: 0xe00022cf, 0x323d: 0xe0002300, 0x323e: 0xe0002306, 0x323f: 0xf0001c1c,\n\t// Block 0xc9, offset 0x3240\n\t0x3240: 0xe000230b, 0x3241: 0xe00022f8, 0x3242: 0xe00022fc, 0x3243: 0xe0002311,\n\t0x3244: 0xe0002316, 0x3245: 0xe000231d, 0x3246: 0xe0002321, 0x3247: 0xe0002325,\n\t0x3248: 0xe000232b, 0x3249: 0xf0001c1c, 0x324a: 0xe0002330, 0x324b: 0xe000233c,\n\t0x324c: 0xe0002340, 0x324d: 0xe0002337, 0x324e: 0xe0002346, 0x324f: 0xe000234b,\n\t0x3250: 0xe000234f, 0x3251: 0xe0002353, 0x3252: 0xf0001c1c, 0x3253: 0xe000235e,\n\t0x3254: 0xe0002358, 0x3255: 0xf0001c1c, 0x3256: 0xe0002363, 0x3257: 0xe000236d,\n\t0x3258: 0xf0001f04, 0x3259: 0xf0001f04, 0x325a: 0xf0001f04, 0x325b: 0xf0001f04,\n\t0x325c: 0xf0001f04, 0x325d: 0xf0001f04, 0x325e: 0xf0001f04, 0x325f: 0xf0001f04,\n\t0x3260: 0xf0001f04, 0x3261: 0xf0001f04, 0x3262: 0xf0000404, 0x3263: 0xf0000404,\n\t0x3264: 0xf0000404, 0x3265: 0xf0000404, 0x3266: 0xf0000404, 0x3267: 0xf0000404,\n\t0x3268: 0xf0000404, 0x3269: 0xf0000404, 0x326a: 0xf0000404, 0x326b: 0xf0000404,\n\t0x326c: 0xf0000404, 0x326d: 0xf0000404, 0x326e: 0xf0000404, 0x326f: 0xf0000404,\n\t0x3270: 0xf0000404, 0x3271: 0xe0000c1e, 0x3272: 0xf0001c1c, 0x3273: 0xf0001d1d,\n\t0x3274: 0xe0000a31, 0x3275: 0xf0001d1c, 0x3276: 0xf0001c1c, 0x3277: 0xf0001c1c,\n\t0x3278: 0xe0000ac2, 0x3279: 0xe0000ac6, 0x327a: 0xf0001d1d, 0x327b: 0xf0001c1c,\n\t0x327c: 0xf0001c1c, 0x327d: 0xf0001c1c, 0x327e: 0xf0001c1c, 0x327f: 0xe0002431,\n\t// Block 0xca, offset 0x3280\n\t0x3280: 0xf0001d1c, 0x3281: 0xf0001d1c, 0x3282: 0xf0001d1c, 0x3283: 0xf0001d1c,\n\t0x3284: 0xf0001d1c, 0x3285: 0xf0001d1d, 0x3286: 0xf0001d1d, 0x3287: 0xf0001d1d,\n\t0x3288: 0xe0000a6b, 0x3289: 0xe0000cb4, 0x328a: 0xf0001d1c, 0x328b: 0xf0001d1c,\n\t0x328c: 0xf0001d1c, 0x328d: 0xf0001c1c, 0x328e: 0xf0001c1c, 0x328f: 0xf0001c1c,\n\t0x3290: 0xf0001c1d, 0x3291: 0xe0000cb9, 0x3292: 0xe0000d36, 0x3293: 0xe0000be3,\n\t0x3294: 0xe0000fc5, 0x3295: 0xf0001c1c, 0x3296: 0xf0001c1c, 0x3297: 0xf0001c1c,\n\t0x3298: 0xf0001c1c, 0x3299: 0xf0001c1c, 0x329a: 0xf0001c1c, 0x329b: 0xf0001c1c,\n\t0x329c: 0xf0001c1c, 0x329d: 0xf0001c1c, 0x329e: 0xf0001c1c, 0x329f: 0xe0000d3e,\n\t0x32a0: 0xe0000a72, 0x32a1: 0xf0001c1c, 0x32a2: 0xe0000cbd, 0x32a3: 0xe0000d42,\n\t0x32a4: 0xe0000a76, 0x32a5: 0xf0001c1c, 0x32a6: 0xe0000cc1, 0x32a7: 0xe0000d2d,\n\t0x32a8: 0xe0000d31, 0x32a9: 0xf0001c1d, 0x32aa: 0xe0000cc5, 0x32ab: 0xe0000d4a,\n\t0x32ac: 0xe0000be7, 0x32ad: 0xe0000f0b, 0x32ae: 0xe0000f0f, 0x32af: 0xe0000f15,\n\t0x32b0: 0xf0001c1c, 0x32b1: 0xf0001c1c, 0x32b2: 0xf0001c1c, 0x32b3: 0xf0001c1c,\n\t0x32b4: 0xf0001d1c, 0x32b5: 0xf0001d1c, 0x32b6: 0xf0001d1c, 0x32b7: 0xf0001d1c,\n\t0x32b8: 0xf0001d1c, 0x32b9: 0xf0001d1d, 0x32ba: 0xf0001d1c, 0x32bb: 0xf0001d1c,\n\t0x32bc: 0xf0001d1c, 0x32bd: 0xf0001d1c, 0x32be: 0xf0001d1c, 0x32bf: 0xf0001d1d,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0xf0001d1c, 0x32c1: 0xf0001d1d, 0x32c2: 0xe00009b7, 0x32c3: 0xf0001c1d,\n\t0x32c4: 0xf0001c1c, 0x32c5: 0xf0001c1c, 0x32c6: 0xe0000a66, 0x32c7: 0xe0000a7a,\n\t0x32c8: 0xf0001d1c, 0x32c9: 0xf0001c1d, 0x32ca: 0xf0001c1c, 0x32cb: 0xf0001d1d,\n\t0x32cc: 0xf0001c1c, 0x32cd: 0xf0001d1d, 0x32ce: 0xf0001d1d, 0x32cf: 0xf0001c1c,\n\t0x32d0: 0xf0001c1c, 0x32d1: 0xf0001c1c, 0x32d2: 0xe0000d0d, 0x32d3: 0xf0001c1c,\n\t0x32d4: 0xf0001c1c, 0x32d5: 0xe0000d3a, 0x32d6: 0xe0000d46, 0x32d7: 0xf0001d1d,\n\t0x32d8: 0xe0000eb0, 0x32d9: 0xe0000eb8, 0x32da: 0xf0001d1d, 0x32db: 0xf0001c1c,\n\t0x32dc: 0xf0001c1d, 0x32dd: 0xf0001c1d, 0x32de: 0xe00010b2, 0x32df: 0xe00009c8,\n\t0x32e0: 0xf0001f04, 0x32e1: 0xf0001f04, 0x32e2: 0xf0001f04, 0x32e3: 0xf0001f04,\n\t0x32e4: 0xf0001f04, 0x32e5: 0xf0001f04, 0x32e6: 0xf0001f04, 0x32e7: 0xf0001f04,\n\t0x32e8: 0xf0001f04, 0x32e9: 0xf0000404, 0x32ea: 0xf0000404, 0x32eb: 0xf0000404,\n\t0x32ec: 0xf0000404, 0x32ed: 0xf0000404, 0x32ee: 0xf0000404, 0x32ef: 0xf0000404,\n\t0x32f0: 0xf0000404, 0x32f1: 0xf0000404, 0x32f2: 0xf0000404, 0x32f3: 0xf0000404,\n\t0x32f4: 0xf0000404, 0x32f5: 0xf0000404, 0x32f6: 0xf0000404, 0x32f7: 0xf0000404,\n\t0x32f8: 0xf0000404, 0x32f9: 0xf0000404, 0x32fa: 0xf0000404, 0x32fb: 0xf0000404,\n\t0x32fc: 0xf0000404, 0x32fd: 0xf0000404, 0x32fe: 0xf0000404, 0x32ff: 0xe0000bdf,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x40196220, 0x3301: 0x40196420, 0x3302: 0x40196620, 0x3303: 0x40196820,\n\t0x3304: 0x40196a20, 0x3305: 0x40196c20, 0x3306: 0x40196e20, 0x3307: 0x40197020,\n\t0x3308: 0x40197220, 0x3309: 0x40197420, 0x330a: 0x40197620, 0x330b: 0x40197820,\n\t0x330c: 0x40197a20, 0x330d: 0x40197c20, 0x330e: 0x40197e20, 0x330f: 0x40198020,\n\t0x3310: 0x40198220, 0x3311: 0x40198420, 0x3312: 0x40198620, 0x3313: 0x40198820,\n\t0x3314: 0x40198a20, 0x3315: 0x40198c20, 0x3316: 0x40198e20, 0x3317: 0x40199020,\n\t0x3318: 0x40199220, 0x3319: 0x40199420, 0x331a: 0x40199620, 0x331b: 0x40199820,\n\t0x331c: 0x40199a20, 0x331d: 0x40199c20, 0x331e: 0x40199e20, 0x331f: 0x4019a020,\n\t0x3320: 0x4019a220, 0x3321: 0x4019a420, 0x3322: 0x4019a620, 0x3323: 0x4019a820,\n\t0x3324: 0x4019aa20, 0x3325: 0x4019ac20, 0x3326: 0x4019ae20, 0x3327: 0x4019b020,\n\t0x3328: 0x4019b220, 0x3329: 0x4019b420, 0x332a: 0x4019b620, 0x332b: 0x4019b820,\n\t0x332c: 0x4019ba20, 0x332d: 0x4019bc20, 0x332e: 0x4019be20, 0x332f: 0x4019c020,\n\t0x3330: 0x4019c220, 0x3331: 0x4019c420, 0x3332: 0x4019c620, 0x3333: 0x4019c820,\n\t0x3334: 0x4019ca20, 0x3335: 0x4019cc20, 0x3336: 0x4019ce20, 0x3337: 0x4019d020,\n\t0x3338: 0x4019d220, 0x3339: 0x4019d420, 0x333a: 0x4019d620, 0x333b: 0x4019d820,\n\t0x333c: 0x4019da20, 0x333d: 0x4019dc20, 0x333e: 0x4019de20, 0x333f: 0x4019e020,\n\t// Block 0xcd, offset 0x3340\n\t0x3340: 0x40664020, 0x3341: 0x40664220, 0x3342: 0x40664420, 0x3343: 0x40664620,\n\t0x3344: 0x40664820, 0x3345: 0x40664a20, 0x3346: 0x40664c20, 0x3347: 0x40664e20,\n\t0x3348: 0x40665020, 0x3349: 0x40665220, 0x334a: 0x40665420, 0x334b: 0x40665620,\n\t0x334c: 0x40665820, 0x334d: 0x40665a20, 0x334e: 0x40665c20, 0x334f: 0x40665e20,\n\t0x3350: 0x40666020, 0x3351: 0x40666220, 0x3352: 0x40666420, 0x3353: 0x40666620,\n\t0x3354: 0x40666820, 0x3355: 0x40666a20, 0x3356: 0x40666c20, 0x3357: 0x40666e20,\n\t0x3358: 0x40667020, 0x3359: 0x40667220, 0x335a: 0x40667420, 0x335b: 0x40667620,\n\t0x335c: 0x40667820, 0x335d: 0x40667a20, 0x335e: 0x40667c20, 0x335f: 0x40667e20,\n\t0x3360: 0x40668020, 0x3361: 0x40668220, 0x3362: 0x40668420, 0x3363: 0x40668620,\n\t0x3364: 0x40668820, 0x3365: 0x40668a20, 0x3366: 0x40668c20, 0x3367: 0x40668e20,\n\t0x3368: 0x40669020, 0x3369: 0x40669220, 0x336a: 0x40669420, 0x336b: 0x40669620,\n\t0x336c: 0x40669820, 0x336d: 0x40669a20, 0x336e: 0x40669c20, 0x336f: 0x40669e20,\n\t0x3370: 0x4066a020, 0x3371: 0x4066a220, 0x3372: 0x4066a420, 0x3373: 0x4066a620,\n\t0x3374: 0x4066a820, 0x3375: 0x4066aa20, 0x3376: 0x4066ac20, 0x3377: 0x4066ae20,\n\t0x3378: 0x4066b020, 0x3379: 0x4066b220, 0x337a: 0x4066b420, 0x337b: 0x4066b620,\n\t0x337c: 0x4066b820, 0x337d: 0x4066ba20, 0x337e: 0x4066bc20, 0x337f: 0x4066be20,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x4066c020, 0x3381: 0x4066c220, 0x3382: 0x4066c420, 0x3383: 0x4066c620,\n\t0x3384: 0x4066c820, 0x3385: 0x4066ca20, 0x3386: 0x4066cc20, 0x3387: 0x4066ce20,\n\t0x3388: 0x4066d020, 0x3389: 0x4066d220, 0x338a: 0x4066d420, 0x338b: 0x4066d620,\n\t0x338c: 0x4066d820, 0x338d: 0x4066da20, 0x338e: 0x4066dc20, 0x338f: 0x4066de20,\n\t0x3390: 0x4066e020, 0x3391: 0x4066e220, 0x3392: 0x4066e420, 0x3393: 0x4066e620,\n\t0x3394: 0x4066e820, 0x3395: 0x4066ea20, 0x3396: 0x4066ec20, 0x3397: 0x4066ee20,\n\t0x3398: 0x4066f020, 0x3399: 0x4066f220, 0x339a: 0x4066f420, 0x339b: 0x4066f620,\n\t0x339c: 0x4066f820, 0x339d: 0x4066fa20, 0x339e: 0x4066fc20, 0x339f: 0x4066fe20,\n\t0x33a0: 0x40670020, 0x33a1: 0x40670220, 0x33a2: 0x40670420, 0x33a3: 0x40670620,\n\t0x33a4: 0x40670820, 0x33a5: 0x40670a20, 0x33a6: 0x40670c20, 0x33a7: 0x40670e20,\n\t0x33a8: 0x40671020, 0x33a9: 0x40671220, 0x33aa: 0x40671420, 0x33ab: 0x40671620,\n\t0x33ac: 0x40671820, 0x33ad: 0x40671a20, 0x33ae: 0x40671c20, 0x33af: 0x40671e20,\n\t0x33b0: 0x40672020, 0x33b1: 0x40672220, 0x33b2: 0x40672420, 0x33b3: 0x40672620,\n\t0x33b4: 0x40672820, 0x33b5: 0x40672a20, 0x33b6: 0x40672c20, 0x33b7: 0x40672e20,\n\t0x33b8: 0x40673020, 0x33b9: 0x40673220, 0x33ba: 0x40673420, 0x33bb: 0x40673620,\n\t0x33bc: 0x40673820, 0x33bd: 0x40673a20, 0x33be: 0x40673c20, 0x33bf: 0x40673e20,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c0: 0x40674020, 0x33c1: 0x40674220, 0x33c2: 0x40674420, 0x33c3: 0x40674620,\n\t0x33c4: 0x40674820, 0x33c5: 0x40674a20, 0x33c6: 0x40674c20, 0x33c7: 0x40674e20,\n\t0x33c8: 0x40675020, 0x33c9: 0x40675220, 0x33ca: 0x40675420, 0x33cb: 0x40675620,\n\t0x33cc: 0x40675820, 0x33cd: 0x40675a20, 0x33ce: 0x40675c20, 0x33cf: 0x40675e20,\n\t0x33d0: 0x40676020, 0x33d1: 0x40676220, 0x33d2: 0x40676420, 0x33d3: 0x40676620,\n\t0x33d4: 0x40676820, 0x33d5: 0x40676a20, 0x33d6: 0x40676c20, 0x33d7: 0x40676e20,\n\t0x33d8: 0x40677020, 0x33d9: 0x40677220, 0x33da: 0x40677420, 0x33db: 0x40677620,\n\t0x33dc: 0x40677820, 0x33dd: 0x40677a20, 0x33de: 0x40677c20, 0x33df: 0x40677e20,\n\t0x33e0: 0x40678020, 0x33e1: 0x40678220, 0x33e2: 0x40678420, 0x33e3: 0x40678620,\n\t0x33e4: 0x40678820, 0x33e5: 0x40678a20, 0x33e6: 0x40678c20, 0x33e7: 0x40678e20,\n\t0x33e8: 0x40679020, 0x33e9: 0x40679220, 0x33ea: 0x40679420, 0x33eb: 0x40679620,\n\t0x33ec: 0x40679820, 0x33ed: 0x40679a20, 0x33ee: 0x40679c20, 0x33ef: 0x40679e20,\n\t0x33f0: 0x4067a020, 0x33f1: 0x4067a220, 0x33f2: 0x4067a420, 0x33f3: 0x4067a620,\n\t0x33f4: 0x4067a820, 0x33f5: 0x4067aa20, 0x33f6: 0x4067ac20, 0x33f7: 0x4067ae20,\n\t0x33f8: 0x4067b020, 0x33f9: 0x4067b220, 0x33fa: 0x4067b420, 0x33fb: 0x4067b620,\n\t0x33fc: 0x4067b820, 0x33fd: 0x4067ba20, 0x33fe: 0x4067bc20, 0x33ff: 0x4067be20,\n\t// Block 0xd0, offset 0x3400\n\t0x3400: 0x4067c020, 0x3401: 0x4067c220, 0x3402: 0x4067c420, 0x3403: 0x4067c620,\n\t0x3404: 0x4067c820, 0x3405: 0x4067ca20, 0x3406: 0x4067cc20, 0x3407: 0x4067ce20,\n\t0x3408: 0x4067d020, 0x3409: 0x4067d220, 0x340a: 0x4067d420, 0x340b: 0x4067d620,\n\t0x340c: 0x4067d820, 0x340d: 0x4067da20, 0x340e: 0x4067dc20, 0x340f: 0x4067de20,\n\t0x3410: 0x4067e020, 0x3411: 0x4067e220, 0x3412: 0x4067e420, 0x3413: 0x4067e620,\n\t0x3414: 0x4067e820, 0x3415: 0x4067ea20, 0x3416: 0x4067ec20, 0x3417: 0x4067ee20,\n\t0x3418: 0x4067f020, 0x3419: 0x4067f220, 0x341a: 0x4067f420, 0x341b: 0x4067f620,\n\t0x341c: 0x4067f820, 0x341d: 0x4067fa20, 0x341e: 0x4067fc20, 0x341f: 0x4067fe20,\n\t0x3420: 0x40680020, 0x3421: 0x40680220, 0x3422: 0x40680420, 0x3423: 0x40680620,\n\t0x3424: 0x40680820, 0x3425: 0x40680a20, 0x3426: 0x40680c20, 0x3427: 0x40680e20,\n\t0x3428: 0x40681020, 0x3429: 0x40681220, 0x342a: 0x40681420, 0x342b: 0x40681620,\n\t0x342c: 0x40681820, 0x342d: 0x40681a20, 0x342e: 0x40681c20, 0x342f: 0x40681e20,\n\t0x3430: 0x40682020, 0x3431: 0x40682220, 0x3432: 0x40682420, 0x3433: 0x40682620,\n\t0x3434: 0x40682820, 0x3435: 0x40682a20, 0x3436: 0x40682c20, 0x3437: 0x40682e20,\n\t0x3438: 0x40683020, 0x3439: 0x40683220, 0x343a: 0x40683420, 0x343b: 0x40683620,\n\t0x343c: 0x40683820, 0x343d: 0x40683a20, 0x343e: 0x40683c20, 0x343f: 0x40683e20,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x40684020, 0x3441: 0x40684220, 0x3442: 0x40684420, 0x3443: 0x40684620,\n\t0x3444: 0x40684820, 0x3445: 0x40684a20, 0x3446: 0x40684c20, 0x3447: 0x40684e20,\n\t0x3448: 0x40685020, 0x3449: 0x40685220, 0x344a: 0x40685420, 0x344b: 0x40685620,\n\t0x344c: 0x40685820, 0x344d: 0x40685a20, 0x344e: 0x40685c20, 0x344f: 0x40685e20,\n\t0x3450: 0x40686020, 0x3451: 0x40686220, 0x3452: 0x40686420, 0x3453: 0x40686620,\n\t0x3454: 0x40686820, 0x3455: 0x40686a20, 0x3456: 0x40686c20, 0x3457: 0x40686e20,\n\t0x3458: 0x40687020, 0x3459: 0x40687220, 0x345a: 0x40687420, 0x345b: 0x40687620,\n\t0x345c: 0x40687820, 0x345d: 0x40687a20, 0x345e: 0x40687c20, 0x345f: 0x40687e20,\n\t0x3460: 0x40688020, 0x3461: 0x40688220, 0x3462: 0x40688420, 0x3463: 0x40688620,\n\t0x3464: 0x40688820, 0x3465: 0x40688a20, 0x3466: 0x40688c20, 0x3467: 0x40688e20,\n\t0x3468: 0x40689020, 0x3469: 0x40689220, 0x346a: 0x40689420, 0x346b: 0x40689620,\n\t0x346c: 0x40689820, 0x346d: 0x40689a20, 0x346e: 0x40689c20, 0x346f: 0x40689e20,\n\t0x3470: 0x4068a020, 0x3471: 0x4068a220, 0x3472: 0x4068a420, 0x3473: 0x4068a620,\n\t0x3474: 0x4068a820, 0x3475: 0x4068aa20, 0x3476: 0x4068ac20, 0x3477: 0x4068ae20,\n\t0x3478: 0x4068b020, 0x3479: 0x4068b220, 0x347a: 0x4068b420, 0x347b: 0x4068b620,\n\t0x347c: 0x4068b820, 0x347d: 0x4068ba20, 0x347e: 0x4068bc20, 0x347f: 0x4068be20,\n\t// Block 0xd2, offset 0x3480\n\t0x3480: 0x4068c020, 0x3481: 0x4068c220, 0x3482: 0x4068c420, 0x3483: 0x4068c620,\n\t0x3484: 0x4068c820, 0x3485: 0x4068ca20, 0x3486: 0x4068cc20, 0x3487: 0x4068ce20,\n\t0x3488: 0x4068d020, 0x3489: 0x4068d220, 0x348a: 0x4068d420, 0x348b: 0x4068d620,\n\t0x348c: 0x4068d820, 0x348d: 0x4068da20, 0x348e: 0x4068dc20, 0x348f: 0x4068de20,\n\t0x3490: 0x4068e020, 0x3491: 0x4068e220, 0x3492: 0x4068e420, 0x3493: 0x4068e620,\n\t0x3494: 0x4068e820, 0x3495: 0x4068ea20, 0x3496: 0x4068ec20, 0x3497: 0x4068ee20,\n\t0x3498: 0x4068f020, 0x3499: 0x4068f220, 0x349a: 0x4068f420, 0x349b: 0x4068f620,\n\t0x349c: 0x4068f820, 0x349d: 0x4068fa20, 0x349e: 0x4068fc20, 0x349f: 0x4068fe20,\n\t0x34a0: 0x40690020, 0x34a1: 0x40690220, 0x34a2: 0x40690420, 0x34a3: 0x40690620,\n\t0x34a4: 0x40690820, 0x34a5: 0x40690a20, 0x34a6: 0x40690c20, 0x34a7: 0x40690e20,\n\t0x34a8: 0x40691020, 0x34a9: 0x40691220, 0x34aa: 0x40691420, 0x34ab: 0x40691620,\n\t0x34ac: 0x40691820, 0x34ad: 0x40691a20, 0x34ae: 0x40691c20, 0x34af: 0x40691e20,\n\t0x34b0: 0x40692020, 0x34b1: 0x40692220, 0x34b2: 0x40692420, 0x34b3: 0x40692620,\n\t0x34b4: 0x40692820, 0x34b5: 0x40692a20, 0x34b6: 0x40692c20, 0x34b7: 0x40692e20,\n\t0x34b8: 0x40693020, 0x34b9: 0x40693220, 0x34ba: 0x40693420, 0x34bb: 0x40693620,\n\t0x34bc: 0x40693820, 0x34bd: 0x40693a20, 0x34be: 0x40693c20, 0x34bf: 0x40693e20,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x40694020, 0x34c1: 0x40694220, 0x34c2: 0x40694420, 0x34c3: 0x40694620,\n\t0x34c4: 0x40694820, 0x34c5: 0x40694a20, 0x34c6: 0x40694c20, 0x34c7: 0x40694e20,\n\t0x34c8: 0x40695020, 0x34c9: 0x40695220, 0x34ca: 0x40695420, 0x34cb: 0x40695620,\n\t0x34cc: 0x40695820, 0x34cd: 0x40695a20, 0x34ce: 0x40695c20, 0x34cf: 0x40695e20,\n\t0x34d0: 0x40696020, 0x34d1: 0x40696220, 0x34d2: 0x40696420, 0x34d3: 0x40696620,\n\t0x34d4: 0x40696820, 0x34d5: 0x40696a20, 0x34d6: 0x40696c20, 0x34d7: 0x40696e20,\n\t0x34d8: 0x40697020, 0x34d9: 0x40697220, 0x34da: 0x40697420, 0x34db: 0x40697620,\n\t0x34dc: 0x40697820, 0x34dd: 0x40697a20, 0x34de: 0x40697c20, 0x34df: 0x40697e20,\n\t0x34e0: 0x40698020, 0x34e1: 0x40698220, 0x34e2: 0x40698420, 0x34e3: 0x40698620,\n\t0x34e4: 0x40698820, 0x34e5: 0x40698a20, 0x34e6: 0x40698c20, 0x34e7: 0x40698e20,\n\t0x34e8: 0x40699020, 0x34e9: 0x40699220, 0x34ea: 0x40699420, 0x34eb: 0x40699620,\n\t0x34ec: 0x40699820, 0x34ed: 0x40699a20, 0x34ee: 0x40699c20, 0x34ef: 0x40699e20,\n\t0x34f0: 0x4069a020, 0x34f1: 0x4069a220, 0x34f2: 0x4069a420, 0x34f3: 0x4069a620,\n\t0x34f4: 0x4069a820, 0x34f5: 0x4069aa20, 0x34f6: 0x4069ac20, 0x34f7: 0x4069ae20,\n\t0x34f8: 0x4069b020, 0x34f9: 0x4069b220, 0x34fa: 0x4069b420, 0x34fb: 0x4069b620,\n\t0x34fc: 0x4069b820, 0x34fd: 0x4069ba20, 0x34fe: 0x4069bc20, 0x34ff: 0x4069be20,\n\t// Block 0xd4, offset 0x3500\n\t0x3500: 0x4069c020, 0x3501: 0x4069c220, 0x3502: 0x4069c420, 0x3503: 0x4069c620,\n\t0x3504: 0x4069c820, 0x3505: 0x4069ca20, 0x3506: 0x4069cc20, 0x3507: 0x4069ce20,\n\t0x3508: 0x4069d020, 0x3509: 0x4069d220, 0x350a: 0x4069d420, 0x350b: 0x4069d620,\n\t0x350c: 0x4069d820, 0x350d: 0x4069da20, 0x350e: 0x4069dc20, 0x350f: 0x4069de20,\n\t0x3510: 0x4069e020, 0x3511: 0x4069e220, 0x3512: 0x4069e420, 0x3513: 0x4069e620,\n\t0x3514: 0x4069e820, 0x3515: 0x4069ea20, 0x3516: 0x4069ec20, 0x3517: 0x4069ee20,\n\t0x3518: 0x4069f020, 0x3519: 0x4069f220, 0x351a: 0x4069f420, 0x351b: 0x4069f620,\n\t0x351c: 0x4069f820, 0x351d: 0x4069fa20, 0x351e: 0x4069fc20, 0x351f: 0x4069fe20,\n\t0x3520: 0x406a0020, 0x3521: 0x406a0220, 0x3522: 0x406a0420, 0x3523: 0x406a0620,\n\t0x3524: 0x406a0820, 0x3525: 0x406a0a20, 0x3526: 0x406a0c20, 0x3527: 0x406a0e20,\n\t0x3528: 0x406a1020, 0x3529: 0x406a1220, 0x352a: 0x406a1420, 0x352b: 0x406a1620,\n\t0x352c: 0x406a1820, 0x352d: 0x406a1a20, 0x352e: 0x406a1c20, 0x352f: 0x406a1e20,\n\t0x3530: 0x406a2020, 0x3531: 0x406a2220, 0x3532: 0x406a2420, 0x3533: 0x406a2620,\n\t0x3534: 0x406a2820, 0x3535: 0x406a2a20, 0x3536: 0x406a2c20, 0x3537: 0x406a2e20,\n\t0x3538: 0x406a3020, 0x3539: 0x406a3220, 0x353a: 0x406a3420, 0x353b: 0x406a3620,\n\t0x353c: 0x406a3820, 0x353d: 0x406a3a20, 0x353e: 0x406a3c20, 0x353f: 0x406a3e20,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x406a4020, 0x3541: 0x406a4220, 0x3542: 0x406a4420, 0x3543: 0x406a4620,\n\t0x3544: 0x406a4820, 0x3545: 0x406a4a20, 0x3546: 0x406a4c20, 0x3547: 0x406a4e20,\n\t0x3548: 0x406a5020, 0x3549: 0x406a5220, 0x354a: 0x406a5420, 0x354b: 0x406a5620,\n\t0x354c: 0x406a5820, 0x354d: 0x406a5a20, 0x354e: 0x406a5c20, 0x354f: 0x406a5e20,\n\t0x3550: 0x406a6020, 0x3551: 0x406a6220, 0x3552: 0x406a6420, 0x3553: 0x406a6620,\n\t0x3554: 0x406a6820, 0x3555: 0x406a6a20, 0x3556: 0x406a6c20, 0x3557: 0x406a6e20,\n\t0x3558: 0x406a7020, 0x3559: 0x406a7220, 0x355a: 0x406a7420, 0x355b: 0x406a7620,\n\t0x355c: 0x406a7820, 0x355d: 0x406a7a20, 0x355e: 0x406a7c20, 0x355f: 0x406a7e20,\n\t0x3560: 0x406a8020, 0x3561: 0x406a8220, 0x3562: 0x406a8420, 0x3563: 0x406a8620,\n\t0x3564: 0x406a8820, 0x3565: 0x406a8a20, 0x3566: 0x406a8c20, 0x3567: 0x406a8e20,\n\t0x3568: 0x406a9020, 0x3569: 0x406a9220, 0x356a: 0x406a9420, 0x356b: 0x406a9620,\n\t0x356c: 0x406a9820, 0x356d: 0x406a9a20, 0x356e: 0x406a9c20, 0x356f: 0x406a9e20,\n\t0x3570: 0x406aa020, 0x3571: 0x406aa220, 0x3572: 0x406aa420, 0x3573: 0x406aa620,\n\t0x3574: 0x406aa820, 0x3575: 0x406aaa20, 0x3576: 0x406aac20, 0x3577: 0x406aae20,\n\t0x3578: 0x406ab020, 0x3579: 0x406ab220, 0x357a: 0x406ab420, 0x357b: 0x406ab620,\n\t0x357c: 0x406ab820, 0x357d: 0x406aba20, 0x357e: 0x406abc20, 0x357f: 0x406abe20,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x406ac020, 0x3581: 0x406ac220, 0x3582: 0x406ac420, 0x3583: 0x406ac620,\n\t0x3584: 0x406ac820, 0x3585: 0x406aca20, 0x3586: 0x406acc20, 0x3587: 0x406ace20,\n\t0x3588: 0x406ad020, 0x3589: 0x406ad220, 0x358a: 0x406ad420, 0x358b: 0x406ad620,\n\t0x358c: 0x406ad820, 0x358d: 0x406ada20, 0x358e: 0x406adc20, 0x358f: 0x406ade20,\n\t0x3590: 0x406ae020, 0x3591: 0x406ae220, 0x3592: 0x406ae420, 0x3593: 0x406ae620,\n\t0x3594: 0x406ae820, 0x3595: 0x406aea20, 0x3596: 0x406aec20, 0x3597: 0x406aee20,\n\t0x3598: 0x406af020, 0x3599: 0x406af220, 0x359a: 0x406af420, 0x359b: 0x406af620,\n\t0x359c: 0x406af820, 0x359d: 0x406afa20, 0x359e: 0x406afc20, 0x359f: 0x406afe20,\n\t0x35a0: 0x406b0020, 0x35a1: 0x406b0220, 0x35a2: 0x406b0420, 0x35a3: 0x406b0620,\n\t0x35a4: 0x406b0820, 0x35a5: 0x406b0a20, 0x35a6: 0x406b0c20, 0x35a7: 0x406b0e20,\n\t0x35a8: 0x406b1020, 0x35a9: 0x406b1220, 0x35aa: 0x406b1420, 0x35ab: 0x406b1620,\n\t0x35ac: 0x406b1820, 0x35ad: 0x406b1a20, 0x35ae: 0x406b1c20, 0x35af: 0x406b1e20,\n\t0x35b0: 0x406b2020, 0x35b1: 0x406b2220, 0x35b2: 0x406b2420, 0x35b3: 0x406b2620,\n\t0x35b4: 0x406b2820, 0x35b5: 0x406b2a20, 0x35b6: 0x406b2c20, 0x35b7: 0x406b2e20,\n\t0x35b8: 0x406b3020, 0x35b9: 0x406b3220, 0x35ba: 0x406b3420, 0x35bb: 0x406b3620,\n\t0x35bc: 0x406b3820, 0x35bd: 0x406b3a20, 0x35be: 0x406b3c20, 0x35bf: 0x406b3e20,\n\t// Block 0xd7, offset 0x35c0\n\t0x35c0: 0x406b4020, 0x35c1: 0x406b4220, 0x35c2: 0x406b4420, 0x35c3: 0x406b4620,\n\t0x35c4: 0x406b4820, 0x35c5: 0x406b4a20, 0x35c6: 0x406b4c20, 0x35c7: 0x406b4e20,\n\t0x35c8: 0x406b5020, 0x35c9: 0x406b5220, 0x35ca: 0x406b5420, 0x35cb: 0x406b5620,\n\t0x35cc: 0x406b5820, 0x35cd: 0x406b5a20, 0x35ce: 0x406b5c20, 0x35cf: 0x406b5e20,\n\t0x35d0: 0x406b6020, 0x35d1: 0x406b6220, 0x35d2: 0x406b6420, 0x35d3: 0x406b6620,\n\t0x35d4: 0x406b6820, 0x35d5: 0x406b6a20, 0x35d6: 0x406b6c20, 0x35d7: 0x406b6e20,\n\t0x35d8: 0x406b7020, 0x35d9: 0x406b7220, 0x35da: 0x406b7420, 0x35db: 0x406b7620,\n\t0x35dc: 0x406b7820, 0x35dd: 0x406b7a20, 0x35de: 0x406b7c20, 0x35df: 0x406b7e20,\n\t0x35e0: 0x406b8020, 0x35e1: 0x406b8220, 0x35e2: 0x406b8420, 0x35e3: 0x406b8620,\n\t0x35e4: 0x406b8820, 0x35e5: 0x406b8a20, 0x35e6: 0x406b8c20, 0x35e7: 0x406b8e20,\n\t0x35e8: 0x406b9020, 0x35e9: 0x406b9220, 0x35ea: 0x406b9420, 0x35eb: 0x406b9620,\n\t0x35ec: 0x406b9820, 0x35ed: 0x406b9a20, 0x35ee: 0x406b9c20, 0x35ef: 0x406b9e20,\n\t0x35f0: 0x406ba020, 0x35f1: 0x406ba220, 0x35f2: 0x406ba420, 0x35f3: 0x406ba620,\n\t0x35f4: 0x406ba820, 0x35f5: 0x406baa20, 0x35f6: 0x406bac20, 0x35f7: 0x406bae20,\n\t0x35f8: 0x406bb020, 0x35f9: 0x406bb220, 0x35fa: 0x406bb420, 0x35fb: 0x406bb620,\n\t0x35fc: 0x406bb820, 0x35fd: 0x406bba20, 0x35fe: 0x406bbc20, 0x35ff: 0x406bbe20,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x406bc020, 0x3601: 0x406bc220, 0x3602: 0x406bc420, 0x3603: 0x406bc620,\n\t0x3604: 0x406bc820, 0x3605: 0x406bca20, 0x3606: 0x406bcc20, 0x3607: 0x406bce20,\n\t0x3608: 0x406bd020, 0x3609: 0x406bd220, 0x360a: 0x406bd420, 0x360b: 0x406bd620,\n\t0x360c: 0x406bd820, 0x360d: 0x406bda20, 0x360e: 0x406bdc20, 0x360f: 0x406bde20,\n\t0x3610: 0x406be020, 0x3611: 0x406be220, 0x3612: 0x406be420, 0x3613: 0x406be620,\n\t0x3614: 0x406be820, 0x3615: 0x406bea20, 0x3616: 0x406bec20, 0x3617: 0x406bee20,\n\t0x3618: 0x406bf020, 0x3619: 0x406bf220, 0x361a: 0x406bf420, 0x361b: 0x406bf620,\n\t0x361c: 0x406bf820, 0x361d: 0x406bfa20, 0x361e: 0x406bfc20, 0x361f: 0x406bfe20,\n\t0x3620: 0x406c0020, 0x3621: 0x406c0220, 0x3622: 0x406c0420, 0x3623: 0x406c0620,\n\t0x3624: 0x406c0820, 0x3625: 0x406c0a20, 0x3626: 0x406c0c20, 0x3627: 0x406c0e20,\n\t0x3628: 0x406c1020, 0x3629: 0x406c1220, 0x362a: 0x406c1420, 0x362b: 0x406c1620,\n\t0x362c: 0x406c1820, 0x362d: 0x406c1a20, 0x362e: 0x406c1c20, 0x362f: 0x406c1e20,\n\t0x3630: 0x406c2020, 0x3631: 0x406c2220, 0x3632: 0x406c2420, 0x3633: 0x406c2620,\n\t0x3634: 0x406c2820, 0x3635: 0x406c2a20, 0x3636: 0x406c2c20, 0x3637: 0x406c2e20,\n\t0x3638: 0x406c3020, 0x3639: 0x406c3220, 0x363a: 0x406c3420, 0x363b: 0x406c3620,\n\t0x363c: 0x406c3820, 0x363d: 0x406c3a20, 0x363e: 0x406c3c20, 0x363f: 0x406c3e20,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x406c4020, 0x3641: 0x406c4220, 0x3642: 0x406c4420, 0x3643: 0x406c4620,\n\t0x3644: 0x406c4820, 0x3645: 0x406c4a20, 0x3646: 0x406c4c20, 0x3647: 0x406c4e20,\n\t0x3648: 0x406c5020, 0x3649: 0x406c5220, 0x364a: 0x406c5420, 0x364b: 0x406c5620,\n\t0x364c: 0x406c5820, 0x364d: 0x406c5a20, 0x364e: 0x406c5c20, 0x364f: 0x406c5e20,\n\t0x3650: 0x406c6020, 0x3651: 0x406c6220, 0x3652: 0x406c6420, 0x3653: 0x406c6620,\n\t0x3654: 0x406c6820, 0x3655: 0x406c6a20, 0x3656: 0x406c6c20, 0x3657: 0x406c6e20,\n\t0x3658: 0x406c7020, 0x3659: 0x406c7220, 0x365a: 0x406c7420, 0x365b: 0x406c7620,\n\t0x365c: 0x406c7820, 0x365d: 0x406c7a20, 0x365e: 0x406c7c20, 0x365f: 0x406c7e20,\n\t0x3660: 0x406c8020, 0x3661: 0x406c8220, 0x3662: 0x406c8420, 0x3663: 0x406c8620,\n\t0x3664: 0x406c8820, 0x3665: 0x406c8a20, 0x3666: 0x406c8c20, 0x3667: 0x406c8e20,\n\t0x3668: 0x406c9020, 0x3669: 0x406c9220, 0x366a: 0x406c9420, 0x366b: 0x406c9620,\n\t0x366c: 0x406c9820, 0x366d: 0x406c9a20, 0x366e: 0x406c9c20, 0x366f: 0x406c9e20,\n\t0x3670: 0x406ca020, 0x3671: 0x406ca220, 0x3672: 0x406ca420, 0x3673: 0x406ca620,\n\t0x3674: 0x406ca820, 0x3675: 0x406caa20, 0x3676: 0x406cac20, 0x3677: 0x406cae20,\n\t0x3678: 0x406cb020, 0x3679: 0x406cb220, 0x367a: 0x406cb420, 0x367b: 0x406cb620,\n\t0x367c: 0x406cb820, 0x367d: 0x406cba20, 0x367e: 0x406cbc20, 0x367f: 0x406cbe20,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x406cc020, 0x3681: 0x406cc220, 0x3682: 0x406cc420, 0x3683: 0x406cc620,\n\t0x3684: 0x406cc820, 0x3685: 0x406cca20, 0x3686: 0x406ccc20, 0x3687: 0x406cce20,\n\t0x3688: 0x406cd020, 0x3689: 0x406cd220, 0x368a: 0x406cd420, 0x368b: 0x406cd620,\n\t0x368c: 0x406cd820, 0x368d: 0x406cda20, 0x368e: 0x406cdc20, 0x368f: 0x406cde20,\n\t0x3690: 0x406ce020, 0x3691: 0x406ce220, 0x3692: 0x406ce420, 0x3693: 0x406ce620,\n\t0x3694: 0x406ce820, 0x3695: 0x406cea20, 0x3696: 0x406cec20, 0x3697: 0x406cee20,\n\t0x3698: 0x406cf020, 0x3699: 0x406cf220, 0x369a: 0x406cf420, 0x369b: 0x406cf620,\n\t0x369c: 0x406cf820, 0x369d: 0x406cfa20, 0x369e: 0x406cfc20, 0x369f: 0x406cfe20,\n\t0x36a0: 0x406d0020, 0x36a1: 0x406d0220, 0x36a2: 0x406d0420, 0x36a3: 0x406d0620,\n\t0x36a4: 0x406d0820, 0x36a5: 0x406d0a20, 0x36a6: 0x406d0c20, 0x36a7: 0x406d0e20,\n\t0x36a8: 0x406d1020, 0x36a9: 0x406d1220, 0x36aa: 0x406d1420, 0x36ab: 0x406d1620,\n\t0x36ac: 0x406d1820, 0x36ad: 0x406d1a20, 0x36ae: 0x406d1c20, 0x36af: 0x406d1e20,\n\t0x36b0: 0x406d2020, 0x36b1: 0x406d2220, 0x36b2: 0x406d2420, 0x36b3: 0x406d2620,\n\t0x36b4: 0x406d2820, 0x36b5: 0x406d2a20, 0x36b6: 0x406d2c20, 0x36b7: 0x406d2e20,\n\t0x36b8: 0x406d3020, 0x36b9: 0x406d3220, 0x36ba: 0x406d3420, 0x36bb: 0x406d3620,\n\t0x36bc: 0x406d3820, 0x36bd: 0x406d3a20, 0x36be: 0x406d3c20, 0x36bf: 0x406d3e20,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x406d4020, 0x36c1: 0x406d4220, 0x36c2: 0x406d4420, 0x36c3: 0x406d4620,\n\t0x36c4: 0x406d4820, 0x36c5: 0x406d4a20, 0x36c6: 0x406d4c20, 0x36c7: 0x406d4e20,\n\t0x36c8: 0x406d5020, 0x36c9: 0x406d5220, 0x36ca: 0x406d5420, 0x36cb: 0x406d5620,\n\t0x36cc: 0x406d5820, 0x36cd: 0x406d5a20, 0x36ce: 0x406d5c20, 0x36cf: 0x406d5e20,\n\t0x36d0: 0x406d6020, 0x36d1: 0x406d6220, 0x36d2: 0x406d6420, 0x36d3: 0x406d6620,\n\t0x36d4: 0x406d6820, 0x36d5: 0x406d6a20, 0x36d6: 0x406d6c20, 0x36d7: 0x406d6e20,\n\t0x36d8: 0x406d7020, 0x36d9: 0x406d7220, 0x36da: 0x406d7420, 0x36db: 0x406d7620,\n\t0x36dc: 0x406d7820, 0x36dd: 0x406d7a20, 0x36de: 0x406d7c20, 0x36df: 0x406d7e20,\n\t0x36e0: 0x406d8020, 0x36e1: 0x406d8220, 0x36e2: 0x406d8420, 0x36e3: 0x406d8620,\n\t0x36e4: 0x406d8820, 0x36e5: 0x406d8a20, 0x36e6: 0x406d8c20, 0x36e7: 0x406d8e20,\n\t0x36e8: 0x406d9020, 0x36e9: 0x406d9220, 0x36ea: 0x406d9420, 0x36eb: 0x406d9620,\n\t0x36ec: 0x406d9820, 0x36ed: 0x406d9a20, 0x36ee: 0x406d9c20, 0x36ef: 0x406d9e20,\n\t0x36f0: 0x406da020, 0x36f1: 0x406da220, 0x36f2: 0x406da420, 0x36f3: 0x406da620,\n\t0x36f4: 0x406da820, 0x36f5: 0x406daa20, 0x36f6: 0x406dac20, 0x36f7: 0x406dae20,\n\t0x36f8: 0x406db020, 0x36f9: 0x406db220, 0x36fa: 0x406db420, 0x36fb: 0x406db620,\n\t0x36fc: 0x406db820, 0x36fd: 0x406dba20, 0x36fe: 0x406dbc20, 0x36ff: 0x406dbe20,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x406dc020, 0x3701: 0x406dc220, 0x3702: 0x406dc420, 0x3703: 0x406dc620,\n\t0x3704: 0x406dc820, 0x3705: 0x406dca20, 0x3706: 0x406dcc20, 0x3707: 0x406dce20,\n\t0x3708: 0x406dd020, 0x3709: 0x406dd220, 0x370a: 0x406dd420, 0x370b: 0x406dd620,\n\t0x370c: 0x406dd820, 0x370d: 0x406dda20, 0x370e: 0x406ddc20, 0x370f: 0x406dde20,\n\t0x3710: 0x406de020, 0x3711: 0x406de220, 0x3712: 0x406de420, 0x3713: 0x406de620,\n\t0x3714: 0x406de820, 0x3715: 0x406dea20, 0x3716: 0x406dec20, 0x3717: 0x406dee20,\n\t0x3718: 0x406df020, 0x3719: 0x406df220, 0x371a: 0x406df420, 0x371b: 0x406df620,\n\t0x371c: 0x406df820, 0x371d: 0x406dfa20, 0x371e: 0x406dfc20, 0x371f: 0x406dfe20,\n\t0x3720: 0x406e0020, 0x3721: 0x406e0220, 0x3722: 0x406e0420, 0x3723: 0x406e0620,\n\t0x3724: 0x406e0820, 0x3725: 0x406e0a20, 0x3726: 0x406e0c20, 0x3727: 0x406e0e20,\n\t0x3728: 0x406e1020, 0x3729: 0x406e1220, 0x372a: 0x406e1420, 0x372b: 0x406e1620,\n\t0x372c: 0x406e1820, 0x372d: 0x406e1a20, 0x372e: 0x406e1c20, 0x372f: 0x406e1e20,\n\t0x3730: 0x406e2020, 0x3731: 0x406e2220, 0x3732: 0x406e2420, 0x3733: 0x406e2620,\n\t0x3734: 0x406e2820, 0x3735: 0x406e2a20, 0x3736: 0x406e2c20, 0x3737: 0x406e2e20,\n\t0x3738: 0x406e3020, 0x3739: 0x406e3220, 0x373a: 0x406e3420, 0x373b: 0x406e3620,\n\t0x373c: 0x406e3820, 0x373d: 0x406e3a20, 0x373e: 0x406e3c20, 0x373f: 0x406e3e20,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x406e4020, 0x3741: 0x406e4220, 0x3742: 0x406e4420, 0x3743: 0x406e4620,\n\t0x3744: 0x406e4820, 0x3745: 0x406e4a20, 0x3746: 0x406e4c20, 0x3747: 0x406e4e20,\n\t0x3748: 0x406e5020, 0x3749: 0x406e5220, 0x374a: 0x406e5420, 0x374b: 0x406e5620,\n\t0x374c: 0x406e5820, 0x374d: 0x406e5a20, 0x374e: 0x406e5c20, 0x374f: 0x406e5e20,\n\t0x3750: 0x406e6020, 0x3751: 0x406e6220, 0x3752: 0x406e6420, 0x3753: 0x406e6620,\n\t0x3754: 0x406e6820, 0x3755: 0x406e6a20, 0x3756: 0x406e6c20, 0x3757: 0x406e6e20,\n\t0x3758: 0x406e7020, 0x3759: 0x406e7220, 0x375a: 0x406e7420, 0x375b: 0x406e7620,\n\t0x375c: 0x406e7820, 0x375d: 0x406e7a20, 0x375e: 0x406e7c20, 0x375f: 0x406e7e20,\n\t0x3760: 0x406e8020, 0x3761: 0x406e8220, 0x3762: 0x406e8420, 0x3763: 0x406e8620,\n\t0x3764: 0x406e8820, 0x3765: 0x406e8a20, 0x3766: 0x406e8c20, 0x3767: 0x406e8e20,\n\t0x3768: 0x406e9020, 0x3769: 0x406e9220, 0x376a: 0x406e9420, 0x376b: 0x406e9620,\n\t0x376c: 0x406e9820, 0x376d: 0x406e9a20, 0x376e: 0x406e9c20, 0x376f: 0x406e9e20,\n\t0x3770: 0x406ea020, 0x3771: 0x406ea220, 0x3772: 0x406ea420, 0x3773: 0x406ea620,\n\t0x3774: 0x406ea820, 0x3775: 0x406eaa20, 0x3776: 0x406eac20, 0x3777: 0x406eae20,\n\t0x3778: 0x406eb020, 0x3779: 0x406eb220, 0x377a: 0x406eb420, 0x377b: 0x406eb620,\n\t0x377c: 0x406eb820, 0x377d: 0x406eba20, 0x377e: 0x406ebc20, 0x377f: 0x406ebe20,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x406ec020, 0x3781: 0x406ec220, 0x3782: 0x406ec420, 0x3783: 0x406ec620,\n\t0x3784: 0x406ec820, 0x3785: 0x406eca20, 0x3786: 0x406ecc20, 0x3787: 0x406ece20,\n\t0x3788: 0x406ed020, 0x3789: 0x406ed220, 0x378a: 0x406ed420, 0x378b: 0x406ed620,\n\t0x378c: 0x406ed820, 0x378d: 0x406eda20, 0x378e: 0x406edc20, 0x378f: 0x406ede20,\n\t0x3790: 0x406ee020, 0x3791: 0x406ee220, 0x3792: 0x406ee420, 0x3793: 0x406ee620,\n\t0x3794: 0x406ee820, 0x3795: 0x406eea20, 0x3796: 0x406eec20, 0x3797: 0x406eee20,\n\t0x3798: 0x406ef020, 0x3799: 0x406ef220, 0x379a: 0x406ef420, 0x379b: 0x406ef620,\n\t0x379c: 0x406ef820, 0x379d: 0x406efa20, 0x379e: 0x406efc20, 0x379f: 0x406efe20,\n\t0x37a0: 0x406f0020, 0x37a1: 0x406f0220, 0x37a2: 0x406f0420, 0x37a3: 0x406f0620,\n\t0x37a4: 0x406f0820, 0x37a5: 0x406f0a20, 0x37a6: 0x406f0c20, 0x37a7: 0x406f0e20,\n\t0x37a8: 0x406f1020, 0x37a9: 0x406f1220, 0x37aa: 0x406f1420, 0x37ab: 0x406f1620,\n\t0x37ac: 0x406f1820, 0x37ad: 0x406f1a20, 0x37ae: 0x406f1c20, 0x37af: 0x406f1e20,\n\t0x37b0: 0x406f2020, 0x37b1: 0x406f2220, 0x37b2: 0x406f2420, 0x37b3: 0x406f2620,\n\t0x37b4: 0x406f2820, 0x37b5: 0x406f2a20, 0x37b6: 0x406f2c20, 0x37b7: 0x406f2e20,\n\t0x37b8: 0x406f3020, 0x37b9: 0x406f3220, 0x37ba: 0x406f3420, 0x37bb: 0x406f3620,\n\t0x37bc: 0x406f3820, 0x37bd: 0x406f3a20, 0x37be: 0x406f3c20, 0x37bf: 0x406f3e20,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x406f4020, 0x37c1: 0x406f4220, 0x37c2: 0x406f4420, 0x37c3: 0x406f4620,\n\t0x37c4: 0x406f4820, 0x37c5: 0x406f4a20, 0x37c6: 0x406f4c20, 0x37c7: 0x406f4e20,\n\t0x37c8: 0x406f5020, 0x37c9: 0x406f5220, 0x37ca: 0x406f5420, 0x37cb: 0x406f5620,\n\t0x37cc: 0x406f5820,\n\t0x37d0: 0x401a9020, 0x37d1: 0x401a9220, 0x37d2: 0x401a9420, 0x37d3: 0x401a9620,\n\t0x37d4: 0x401a9820, 0x37d5: 0x401a9a20, 0x37d6: 0x401a9c20, 0x37d7: 0x401a9e20,\n\t0x37d8: 0x401aa020, 0x37d9: 0x401aa220, 0x37da: 0x401aa420, 0x37db: 0x401aa620,\n\t0x37dc: 0x401aa820, 0x37dd: 0x401aaa20, 0x37de: 0x401aac20, 0x37df: 0x401aae20,\n\t0x37e0: 0x401ab020, 0x37e1: 0x401ab220, 0x37e2: 0x401ab420, 0x37e3: 0x401ab620,\n\t0x37e4: 0x401ab820, 0x37e5: 0x401aba20, 0x37e6: 0x401abc20, 0x37e7: 0x401abe20,\n\t0x37e8: 0x401ac020, 0x37e9: 0x401ac220, 0x37ea: 0x401ac420, 0x37eb: 0x401ac620,\n\t0x37ec: 0x401ac820, 0x37ed: 0x401aca20, 0x37ee: 0x401acc20, 0x37ef: 0x401ace20,\n\t0x37f0: 0x401ad020, 0x37f1: 0x401ad220, 0x37f2: 0x401ad420, 0x37f3: 0x401ad620,\n\t0x37f4: 0x401ad820, 0x37f5: 0x401ada20, 0x37f6: 0x401adc20, 0x37f7: 0x401ade20,\n\t0x37f8: 0x401ae020, 0x37f9: 0x401ae220, 0x37fa: 0x401ae420, 0x37fb: 0x401ae620,\n\t0x37fc: 0x401ae820, 0x37fd: 0x401aea20, 0x37fe: 0x401aec20, 0x37ff: 0x401aee20,\n\t// Block 0xe0, offset 0x3800\n\t0x3800: 0x401af020, 0x3801: 0x401af220, 0x3802: 0x401af420, 0x3803: 0x401af620,\n\t0x3804: 0x401af820, 0x3805: 0x401afa20, 0x3806: 0x401afc20,\n\t0x3810: 0x406f6620, 0x3811: 0x406f6820, 0x3812: 0x406f6a20, 0x3813: 0x406f6c20,\n\t0x3814: 0x406f6e20, 0x3815: 0x406f7020, 0x3816: 0x406f7220, 0x3817: 0x406f7420,\n\t0x3818: 0x406f7620, 0x3819: 0x406f7820, 0x381a: 0x406f7a20, 0x381b: 0x406f7c20,\n\t0x381c: 0x406f7e20, 0x381d: 0x406f8020, 0x381e: 0x406f8220, 0x381f: 0x406f8420,\n\t0x3820: 0x406f8620, 0x3821: 0x406f8820, 0x3822: 0x406f8a20, 0x3823: 0x406f8c20,\n\t0x3824: 0x406f8e20, 0x3825: 0x406f9020, 0x3826: 0x406f9220, 0x3827: 0x406f9420,\n\t0x3828: 0x406f9620, 0x3829: 0x406f9820, 0x382a: 0x406f9e20, 0x382b: 0x406f9a20,\n\t0x382c: 0x406fa020, 0x382d: 0x406f9c20, 0x382e: 0x406fa220, 0x382f: 0x406fa420,\n\t0x3830: 0x406fa620, 0x3831: 0x406fa820, 0x3832: 0x406faa20, 0x3833: 0x406fac20,\n\t0x3834: 0x406fae20, 0x3835: 0x406fb020, 0x3836: 0x406fb220, 0x3837: 0x406fb420,\n\t0x3838: 0x406f5a20, 0x3839: 0x406f5c20, 0x383a: 0x406f5e20, 0x383b: 0x406f6020,\n\t0x383c: 0x406f6420, 0x383d: 0x406f6220, 0x383e: 0x40025620, 0x383f: 0x4002fe20,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x405b8020, 0x3841: 0x405b8220, 0x3842: 0x405b8420, 0x3843: 0x405b8620,\n\t0x3844: 0x405b8820, 0x3845: 0x405b8a20, 0x3846: 0x405b8c20, 0x3847: 0x405b8e20,\n\t0x3848: 0x405b9020, 0x3849: 0x405b9220, 0x384a: 0x405b9420, 0x384b: 0x405b9620,\n\t0x384c: 0x405b9820, 0x384d: 0x405b9a20, 0x384e: 0x405b9c20, 0x384f: 0x405b9e20,\n\t0x3850: 0x405ba020, 0x3851: 0x405ba220, 0x3852: 0x405ba420, 0x3853: 0x405ba620,\n\t0x3854: 0x405ba820, 0x3855: 0x405baa20, 0x3856: 0x405bac20, 0x3857: 0x405bae20,\n\t0x3858: 0x405bb020, 0x3859: 0x405bb220, 0x385a: 0x405bb420, 0x385b: 0x405bb620,\n\t0x385c: 0x405bb820, 0x385d: 0x405bba20, 0x385e: 0x405bbc20, 0x385f: 0x405bbe20,\n\t0x3860: 0x405bc020, 0x3861: 0x405bc220, 0x3862: 0x405bc420, 0x3863: 0x405bc620,\n\t0x3864: 0x405bc820, 0x3865: 0x405bca20, 0x3866: 0x405bcc20, 0x3867: 0x405bce20,\n\t0x3868: 0x405bd020, 0x3869: 0x405bd220, 0x386a: 0x405bd420, 0x386b: 0x405bd620,\n\t0x386c: 0x405bd820, 0x386d: 0x405bda20, 0x386e: 0x405bdc20, 0x386f: 0x405bde20,\n\t0x3870: 0x405be020, 0x3871: 0x405be220, 0x3872: 0x405be420, 0x3873: 0x405be620,\n\t0x3874: 0x405be820, 0x3875: 0x405bea20, 0x3876: 0x405bec20, 0x3877: 0x405bee20,\n\t0x3878: 0x405bf020, 0x3879: 0x405bf220, 0x387a: 0x405bf420, 0x387b: 0x405bf620,\n\t0x387c: 0x405bf820, 0x387d: 0x405bfa20, 0x387e: 0x405bfc20, 0x387f: 0x405bfe20,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x405c0020, 0x3881: 0x405c0220, 0x3882: 0x405c0420, 0x3883: 0x405c0620,\n\t0x3884: 0x405c0820, 0x3885: 0x405c0a20, 0x3886: 0x405c0c20, 0x3887: 0x405c0e20,\n\t0x3888: 0x405c1020, 0x3889: 0x405c1220, 0x388a: 0x405c1420, 0x388b: 0x405c1620,\n\t0x388c: 0x405c1820, 0x388d: 0x405c1a20, 0x388e: 0x405c1c20, 0x388f: 0x405c1e20,\n\t0x3890: 0x405c2020, 0x3891: 0x405c2220, 0x3892: 0x405c2420, 0x3893: 0x405c2620,\n\t0x3894: 0x405c2820, 0x3895: 0x405c2a20, 0x3896: 0x405c2c20, 0x3897: 0x405c2e20,\n\t0x3898: 0x405c3020, 0x3899: 0x405c3220, 0x389a: 0x405c3420, 0x389b: 0x405c3620,\n\t0x389c: 0x405c3820, 0x389d: 0x405c3a20, 0x389e: 0x405c3c20, 0x389f: 0x405c3e20,\n\t0x38a0: 0x405c4020, 0x38a1: 0x405c4220, 0x38a2: 0x405c4420, 0x38a3: 0x405c4620,\n\t0x38a4: 0x405c4820, 0x38a5: 0x405c4a20, 0x38a6: 0x405c4c20, 0x38a7: 0x405c4e20,\n\t0x38a8: 0x405c5020, 0x38a9: 0x405c5220, 0x38aa: 0x405c5420, 0x38ab: 0x405c5620,\n\t0x38ac: 0x405c5820, 0x38ad: 0x405c5a20, 0x38ae: 0x405c5c20, 0x38af: 0x405c5e20,\n\t0x38b0: 0x405c6020, 0x38b1: 0x405c6220, 0x38b2: 0x405c6420, 0x38b3: 0x405c6620,\n\t0x38b4: 0x405c6820, 0x38b5: 0x405c6a20, 0x38b6: 0x405c6c20, 0x38b7: 0x405c6e20,\n\t0x38b8: 0x405c7020, 0x38b9: 0x405c7220, 0x38ba: 0x405c7420, 0x38bb: 0x405c7620,\n\t0x38bc: 0x405c7820, 0x38bd: 0x405c7a20, 0x38be: 0x405c7c20, 0x38bf: 0x405c7e20,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x405c8020, 0x38c1: 0x405c8220, 0x38c2: 0x405c8420, 0x38c3: 0x405c8620,\n\t0x38c4: 0x405c8820, 0x38c5: 0x405c8a20, 0x38c6: 0x405c8c20, 0x38c7: 0x405c8e20,\n\t0x38c8: 0x405c9020, 0x38c9: 0x405c9220, 0x38ca: 0x405c9420, 0x38cb: 0x405c9620,\n\t0x38cc: 0x405c9820, 0x38cd: 0x405c9a20, 0x38ce: 0x405c9c20, 0x38cf: 0x405c9e20,\n\t0x38d0: 0x405ca020, 0x38d1: 0x405ca220, 0x38d2: 0x405ca420, 0x38d3: 0x405ca620,\n\t0x38d4: 0x405ca820, 0x38d5: 0x405caa20, 0x38d6: 0x405cac20, 0x38d7: 0x405cae20,\n\t0x38d8: 0x405cb020, 0x38d9: 0x405cb220, 0x38da: 0x405cb420, 0x38db: 0x405cb620,\n\t0x38dc: 0x405cb820, 0x38dd: 0x405cba20, 0x38de: 0x405cbc20, 0x38df: 0x405cbe20,\n\t0x38e0: 0x405cc020, 0x38e1: 0x405cc220, 0x38e2: 0x405cc420, 0x38e3: 0x405cc620,\n\t0x38e4: 0x405cc820, 0x38e5: 0x405cca20, 0x38e6: 0x405ccc20, 0x38e7: 0x405cce20,\n\t0x38e8: 0x405cd020, 0x38e9: 0x405cd220, 0x38ea: 0x405cd420, 0x38eb: 0x405cd620,\n\t0x38ec: 0x405cd820, 0x38ed: 0x405cda20, 0x38ee: 0x405cdc20, 0x38ef: 0x405cde20,\n\t0x38f0: 0x405ce020, 0x38f1: 0x405ce220, 0x38f2: 0x405ce420, 0x38f3: 0x405ce620,\n\t0x38f4: 0x405ce820, 0x38f5: 0x405cea20, 0x38f6: 0x405cec20, 0x38f7: 0x405cee20,\n\t0x38f8: 0x405cf020, 0x38f9: 0x405cf220, 0x38fa: 0x405cf420, 0x38fb: 0x405cf620,\n\t0x38fc: 0x405cf820, 0x38fd: 0x405cfa20, 0x38fe: 0x405cfc20, 0x38ff: 0x405cfe20,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0x405d0020, 0x3901: 0x405d0220, 0x3902: 0x405d0420, 0x3903: 0x405d0620,\n\t0x3904: 0x405d0820, 0x3905: 0x405d0a20, 0x3906: 0x405d0c20, 0x3907: 0x405d0e20,\n\t0x3908: 0x405d1020, 0x3909: 0x405d1220, 0x390a: 0x405d1420, 0x390b: 0x405d1620,\n\t0x390c: 0x405d1820, 0x390d: 0x405d1a20, 0x390e: 0x405d1c20, 0x390f: 0x405d1e20,\n\t0x3910: 0x405d2020, 0x3911: 0x405d2220, 0x3912: 0x405d2420, 0x3913: 0x405d2620,\n\t0x3914: 0x405d2820, 0x3915: 0x405d2a20, 0x3916: 0x405d2c20, 0x3917: 0x405d2e20,\n\t0x3918: 0x405d3020, 0x3919: 0x405d3220, 0x391a: 0x405d3420, 0x391b: 0x405d3620,\n\t0x391c: 0x405d3820, 0x391d: 0x405d3a20, 0x391e: 0x405d3c20, 0x391f: 0x405d3e20,\n\t0x3920: 0x405d4020, 0x3921: 0x405d4220, 0x3922: 0x405d4420, 0x3923: 0x405d4620,\n\t0x3924: 0x405d4820, 0x3925: 0x405d4a20, 0x3926: 0x405d4c20, 0x3927: 0x405d4e20,\n\t0x3928: 0x405d5020, 0x3929: 0x405d5220, 0x392a: 0x405d5420, 0x392b: 0x405d5620,\n\t0x392c: 0x405d5820, 0x392d: 0x405d5a20, 0x392e: 0x405d5c20, 0x392f: 0x405d5e20,\n\t0x3930: 0x405d6020, 0x3931: 0x405d6220, 0x3932: 0x405d6420, 0x3933: 0x405d6620,\n\t0x3934: 0x405d6820, 0x3935: 0x405d6a20, 0x3936: 0x405d6c20, 0x3937: 0x405d6e20,\n\t0x3938: 0x405d7020, 0x3939: 0x405d7220, 0x393a: 0x405d7420, 0x393b: 0x405d7620,\n\t0x393c: 0x405d7820, 0x393d: 0x405d7a20, 0x393e: 0x405d7c20, 0x393f: 0x405d7e20,\n\t// Block 0xe5, offset 0x3940\n\t0x3940: 0x405d8020, 0x3941: 0x405d8220, 0x3942: 0x405d8420, 0x3943: 0x405d8620,\n\t0x3944: 0x405d8820, 0x3945: 0x405d8a20, 0x3946: 0x405d8c20, 0x3947: 0x405d8e20,\n\t0x3948: 0x405d9020, 0x3949: 0x405d9220, 0x394a: 0x405d9420, 0x394b: 0x405d9620,\n\t0x394c: 0x405d9820, 0x394d: 0x40025820, 0x394e: 0x40030020, 0x394f: 0x4002d820,\n\t0x3950: 0x005c3084, 0x3951: 0x005c5484, 0x3952: 0x005c8e84, 0x3953: 0xe00020fb,\n\t0x3954: 0xe00020fe, 0x3955: 0xe0002101, 0x3956: 0xe0002104, 0x3957: 0xe0002107,\n\t0x3958: 0xe000210a, 0x3959: 0xe000210d, 0x395a: 0xe0002110, 0x395b: 0xe0002113,\n\t0x395c: 0xe0002116, 0x395d: 0xe0002119, 0x395e: 0xe000211c, 0x395f: 0xe000211f,\n\t0x3960: 0xe00001cd, 0x3961: 0xe0000261, 0x3962: 0xe0000379, 0x3963: 0xe0000453,\n\t0x3964: 0xe0000528, 0x3965: 0xe00005f2, 0x3966: 0xe00006bd, 0x3967: 0xe0000765,\n\t0x3968: 0xe0000811, 0x3969: 0xe00008b6, 0x396a: 0x005c5c84, 0x396b: 0x005d2284,\n\t// Block 0xe6, offset 0x3980\n\t0x3980: 0x0033ec88, 0x3981: 0x4033ec20, 0x3982: 0x0033fa88, 0x3983: 0x4033fa20,\n\t0x3984: 0x00340488, 0x3985: 0x40340420, 0x3986: 0x00343488, 0x3987: 0x40343420,\n\t0x3988: 0x00344e88, 0x3989: 0x40344e20, 0x398a: 0x0035a288, 0x398b: 0x4035a220,\n\t0x398c: 0x0035f088, 0x398d: 0x4035f020, 0x398e: 0x00366e88, 0x398f: 0x40366e20,\n\t0x3990: 0x00367c88, 0x3991: 0x40367c20, 0x3992: 0x0036a688, 0x3993: 0x4036a620,\n\t0x3994: 0x0036c088, 0x3995: 0x4036c020, 0x3996: 0x0036c288, 0x3997: 0x4036c220,\n\t0x3998: 0x0036de88, 0x3999: 0x4036de20, 0x399a: 0x0036e888, 0x399b: 0x4036e820,\n\t0x399c: 0x0036f288, 0x399d: 0x4036f220, 0x399e: 0x00372488, 0x399f: 0x40372420,\n\t0x39a0: 0x00360a88, 0x39a1: 0x40360a20, 0x39a2: 0x00339e88, 0x39a3: 0x40339e20,\n\t0x39a4: 0x0034a288, 0x39a5: 0x4034a220, 0x39a6: 0x0034b888, 0x39a7: 0x4034b820,\n\t0x39a8: 0x0034ee8a, 0x39a9: 0x0034ee84, 0x39aa: 0x0034ee8a, 0x39ab: 0x0034ee84,\n\t0x39ac: 0x0034ee8a, 0x39ad: 0x0034ee84, 0x39ae: 0x0034ee84, 0x39af: 0xae608402,\n\t0x39b0: 0xa0000000, 0x39b1: 0xa0000000, 0x39b2: 0xa0000000, 0x39b3: 0x4004e020,\n\t0x39b4: 0x84e619e1, 0x39b5: 0x84e61a0a, 0x39b6: 0x84e61a1b, 0x39b7: 0x84e61ab9,\n\t0x39b8: 0x84e61b3a, 0x39b9: 0x84e61b3f, 0x39ba: 0x84e61b47, 0x39bb: 0x84e61af0,\n\t0x39bc: 0xae605f02, 0x39bd: 0xae605f02, 0x39be: 0x40054c20, 0x39bf: 0x40367220,\n\t// Block 0xe7, offset 0x39c0\n\t0x39c0: 0x00339488, 0x39c1: 0x40339420, 0x39c2: 0x00341288, 0x39c3: 0x40341220,\n\t0x39c4: 0x0033d288, 0x39c5: 0x4033d220, 0x39c6: 0x00364288, 0x39c7: 0x40364220,\n\t0x39c8: 0x00340e88, 0x39c9: 0x40340e20, 0x39ca: 0x00356088, 0x39cb: 0x40356020,\n\t0x39cc: 0x00355488, 0x39cd: 0x40355420, 0x39ce: 0x00360c88, 0x39cf: 0x40360c20,\n\t0x39d0: 0x00361688, 0x39d1: 0x40361620, 0x39d2: 0x00362088, 0x39d3: 0x40362020,\n\t0x39d4: 0x0035de88, 0x39d5: 0x4035de20, 0x39d6: 0x00366488, 0x39d7: 0x40366420,\n\t0x39df: 0x84e61b67,\n\t0x39e0: 0x405d9a20, 0x39e1: 0x405d9c20, 0x39e2: 0x405d9e20, 0x39e3: 0x405da020,\n\t0x39e4: 0x405da220, 0x39e5: 0x405da420, 0x39e6: 0x405da620, 0x39e7: 0x405da820,\n\t0x39e8: 0x405daa20, 0x39e9: 0x405dac20, 0x39ea: 0x405dae20, 0x39eb: 0x405db020,\n\t0x39ec: 0x405db220, 0x39ed: 0x405db420, 0x39ee: 0x405db620, 0x39ef: 0x405db820,\n\t0x39f0: 0x405dba20, 0x39f1: 0x405dbc20, 0x39f2: 0x405dbe20, 0x39f3: 0x405dc020,\n\t0x39f4: 0x405dc220, 0x39f5: 0x405dc420, 0x39f6: 0x405dc620, 0x39f7: 0x405dc820,\n\t0x39f8: 0x405dca20, 0x39f9: 0x405dcc20, 0x39fa: 0x405dce20, 0x39fb: 0x405dd020,\n\t0x39fc: 0x405dd220, 0x39fd: 0x405dd420, 0x39fe: 0x405dd620, 0x39ff: 0x405dd820,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a00: 0x405dda20, 0x3a01: 0x405ddc20, 0x3a02: 0x405dde20, 0x3a03: 0x405de020,\n\t0x3a04: 0x405de220, 0x3a05: 0x405de420, 0x3a06: 0x405de620, 0x3a07: 0x405de820,\n\t0x3a08: 0x405dea20, 0x3a09: 0x405dec20, 0x3a0a: 0x405dee20, 0x3a0b: 0x405df020,\n\t0x3a0c: 0x405df220, 0x3a0d: 0x405df420, 0x3a0e: 0x405df620, 0x3a0f: 0x405df820,\n\t0x3a10: 0x405dfa20, 0x3a11: 0x405dfc20, 0x3a12: 0x405dfe20, 0x3a13: 0x405e0020,\n\t0x3a14: 0x405e0220, 0x3a15: 0x405e0420, 0x3a16: 0x405e0620, 0x3a17: 0x405e0820,\n\t0x3a18: 0x405e0a20, 0x3a19: 0x405e0c20, 0x3a1a: 0x405e0e20, 0x3a1b: 0x405e1020,\n\t0x3a1c: 0x405e1220, 0x3a1d: 0x405e1420, 0x3a1e: 0x405e1620, 0x3a1f: 0x405e1820,\n\t0x3a20: 0x405e1a20, 0x3a21: 0x405e1c20, 0x3a22: 0x405e1e20, 0x3a23: 0x405e2020,\n\t0x3a24: 0x405e2220, 0x3a25: 0x405e2420, 0x3a26: 0x405e2620, 0x3a27: 0x405e2820,\n\t0x3a28: 0x405e2a20, 0x3a29: 0x405e2c20, 0x3a2a: 0x405e2e20, 0x3a2b: 0x405e3020,\n\t0x3a2c: 0x405e3220, 0x3a2d: 0x405e3420, 0x3a2e: 0x405e3620, 0x3a2f: 0x405e3820,\n\t0x3a30: 0xae60ef02, 0x3a31: 0xae60f002, 0x3a32: 0x40038220, 0x3a33: 0x40030220,\n\t0x3a34: 0x4002b820, 0x3a35: 0x40025a20, 0x3a36: 0x40026a20, 0x3a37: 0x4002da20,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a40: 0x4006ba20, 0x3a41: 0x4006bc20, 0x3a42: 0x4006be20, 0x3a43: 0x4006c020,\n\t0x3a44: 0x4006c220, 0x3a45: 0x4006c420, 0x3a46: 0x4006c620, 0x3a47: 0x4006c820,\n\t0x3a48: 0x4006ca20, 0x3a49: 0x4006cc20, 0x3a4a: 0x4006ce20, 0x3a4b: 0x4006d020,\n\t0x3a4c: 0x4006d220, 0x3a4d: 0x4006d420, 0x3a4e: 0x4006d620, 0x3a4f: 0x4006d820,\n\t0x3a50: 0x4006da20, 0x3a51: 0x4006dc20, 0x3a52: 0x4006de20, 0x3a53: 0x4006e020,\n\t0x3a54: 0x4006e220, 0x3a55: 0x4006e420, 0x3a56: 0x4006e620, 0x3a57: 0x4006e820,\n\t0x3a58: 0x4006ea20, 0x3a59: 0x4006ec20, 0x3a5a: 0x4006ee20, 0x3a5b: 0x4006f020,\n\t0x3a5c: 0x4006f220, 0x3a5d: 0x4006f420, 0x3a5e: 0x4006f620, 0x3a5f: 0x4006f820,\n\t0x3a60: 0x4006fa20, 0x3a61: 0x4006fc20, 0x3a62: 0x0031e488, 0x3a63: 0x4031e420,\n\t0x3a64: 0x0031f888, 0x3a65: 0x4031f820, 0x3a66: 0x002d8c88, 0x3a67: 0x402d8c20,\n\t0x3a68: 0xe0000fd5, 0x3a69: 0xe0000fd2, 0x3a6a: 0x0031ae88, 0x3a6b: 0x4031ae20,\n\t0x3a6c: 0x0031b088, 0x3a6d: 0x4031b020, 0x3a6e: 0x0031b288, 0x3a6f: 0x4031b220,\n\t0x3a70: 0x402d1020, 0x3a71: 0x402fee20, 0x3a72: 0xe00009cf, 0x3a73: 0xe00009cc,\n\t0x3a74: 0xe00009ff, 0x3a75: 0xe00009fc, 0x3a76: 0xe0000a05, 0x3a77: 0xe0000a02,\n\t0x3a78: 0xe0000a0e, 0x3a79: 0xe0000a0b, 0x3a7a: 0xe0000a15, 0x3a7b: 0xe0000a11,\n\t0x3a7c: 0xe0000a1c, 0x3a7d: 0xe0000a19, 0x3a7e: 0x002c6088, 0x3a7f: 0x402c6020,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x002e1488, 0x3a81: 0x402e1420, 0x3a82: 0x002e1688, 0x3a83: 0x402e1620,\n\t0x3a84: 0x002e1888, 0x3a85: 0x402e1820, 0x3a86: 0x002e3288, 0x3a87: 0x402e3220,\n\t0x3a88: 0x002e3688, 0x3a89: 0x402e3620, 0x3a8a: 0x002f1888, 0x3a8b: 0x402f1820,\n\t0x3a8c: 0x002f0888, 0x3a8d: 0x402f0820, 0x3a8e: 0xe0000ea1, 0x3a8f: 0xe0000e9e,\n\t0x3a90: 0x002f3888, 0x3a91: 0x402f3820, 0x3a92: 0x002f4688, 0x3a93: 0x402f4620,\n\t0x3a94: 0x002f4888, 0x3a95: 0x402f4820, 0x3a96: 0x002f5e88, 0x3a97: 0x402f5e20,\n\t0x3a98: 0x002f6088, 0x3a99: 0x402f6020, 0x3a9a: 0x002f8a88, 0x3a9b: 0x402f8a20,\n\t0x3a9c: 0x002fe488, 0x3a9d: 0x402fe420, 0x3a9e: 0x0030c888, 0x3a9f: 0x4030c820,\n\t0x3aa0: 0xe00010c6, 0x3aa1: 0xe00010c3, 0x3aa2: 0x00316288, 0x3aa3: 0x40316220,\n\t0x3aa4: 0x00319088, 0x3aa5: 0x40319020, 0x3aa6: 0x00319288, 0x3aa7: 0x40319220,\n\t0x3aa8: 0x00319c88, 0x3aa9: 0x40319c20, 0x3aaa: 0x00319e88, 0x3aab: 0x40319e20,\n\t0x3aac: 0x0031a088, 0x3aad: 0x4031a020, 0x3aae: 0x0031a288, 0x3aaf: 0x4031a220,\n\t0x3ab0: 0x0031a294, 0x3ab1: 0x402c9420, 0x3ab2: 0x402e6620, 0x3ab3: 0x402e9c20,\n\t0x3ab4: 0x402ed820, 0x3ab5: 0x402fe020, 0x3ab6: 0x402fe220, 0x3ab7: 0x40306220,\n\t0x3ab8: 0x4031a420, 0x3ab9: 0xe0000abc, 0x3aba: 0xe0000ab9, 0x3abb: 0xe0000b92,\n\t0x3abc: 0xe0000b8f, 0x3abd: 0xe0000bdc, 0x3abe: 0x002d5688, 0x3abf: 0x402d5620,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0x002e7088, 0x3ac1: 0x402e7020, 0x3ac2: 0xe0000f08, 0x3ac3: 0xe0000f05,\n\t0x3ac4: 0xe0000f6d, 0x3ac5: 0xe0000f6a, 0x3ac6: 0xe0000fb7, 0x3ac7: 0xe0000fb4,\n\t0x3ac8: 0x4006fe20, 0x3ac9: 0x40070020, 0x3aca: 0x40070220, 0x3acb: 0x0031e688,\n\t0x3acc: 0x4031e620, 0x3acd: 0x00308888, 0x3ace: 0x402e5c20,\n\t0x3ad0: 0x002ec488, 0x3ad1: 0x402ec420, 0x3ad2: 0x002c4c88, 0x3ad3: 0x402c4c20,\n\t0x3ae0: 0xe0000bd6, 0x3ae1: 0xe0000bd3, 0x3ae2: 0xe0000ca5, 0x3ae3: 0xe0000ca2,\n\t0x3ae4: 0xe0000d75, 0x3ae5: 0xe0000d72, 0x3ae6: 0xe0000ee2, 0x3ae7: 0xe0000edf,\n\t0x3ae8: 0xe0000f4d, 0x3ae9: 0xe0000f4a, 0x3aea: 0x002d8088,\n\t// Block 0xec, offset 0x3b00\n\t0x3b38: 0xf0001414, 0x3b39: 0xe0000e97, 0x3b3a: 0x4030a820, 0x3b3b: 0x402d2020,\n\t0x3b3c: 0x402f4a20, 0x3b3d: 0x402e9820, 0x3b3e: 0x402db220, 0x3b3f: 0x402e9a20,\n\t// Block 0xed, offset 0x3b40\n\t0x3b40: 0x4045aa20, 0x3b41: 0x4045ac20, 0x3b42: 0x4045ae20, 0x3b43: 0x4045b020,\n\t0x3b44: 0x4045b220, 0x3b45: 0x4045b420, 0x3b46: 0x820922db, 0x3b47: 0x4045b820,\n\t0x3b48: 0x4045ba20, 0x3b49: 0x4045bc20, 0x3b4a: 0x4045be20, 0x3b4b: 0xa000f302,\n\t0x3b4c: 0x4045c020, 0x3b4d: 0x4045c220, 0x3b4e: 0x4045c420, 0x3b4f: 0x4045c620,\n\t0x3b50: 0x4045c820, 0x3b51: 0x4045ca20, 0x3b52: 0x4045cc20, 0x3b53: 0x4045ce20,\n\t0x3b54: 0x4045d020, 0x3b55: 0x4045d220, 0x3b56: 0x4045d420, 0x3b57: 0x4045d620,\n\t0x3b58: 0x4045d820, 0x3b59: 0x4045da20, 0x3b5a: 0x4045dc20, 0x3b5b: 0x4045de20,\n\t0x3b5c: 0x4045e020, 0x3b5d: 0x4045e220, 0x3b5e: 0x4045e420, 0x3b5f: 0x4045e620,\n\t0x3b60: 0x4045e820, 0x3b61: 0x4045ea20, 0x3b62: 0x4045ec20, 0x3b63: 0x4045ee20,\n\t0x3b64: 0x4045f020, 0x3b65: 0x4045f220, 0x3b66: 0x4045f420, 0x3b67: 0x4045f620,\n\t0x3b68: 0x40075020, 0x3b69: 0x40075220, 0x3b6a: 0x40075420, 0x3b6b: 0x40075620,\n\t0x3b70: 0x40284820, 0x3b71: 0x40284a20, 0x3b72: 0x40284c20, 0x3b73: 0x40284e20,\n\t0x3b74: 0x40285020, 0x3b75: 0x40285220, 0x3b76: 0x40075820, 0x3b77: 0x40075a20,\n\t0x3b78: 0x4027f020, 0x3b79: 0x40075c20,\n\t// Block 0xee, offset 0x3b80\n\t0x3b80: 0x404baa20, 0x3b81: 0x404bac20, 0x3b82: 0x404bae20, 0x3b83: 0x404bb020,\n\t0x3b84: 0x404bb220, 0x3b85: 0x404bb420, 0x3b86: 0x404bb620, 0x3b87: 0x404bb820,\n\t0x3b88: 0x404bc220, 0x3b89: 0x404bc420, 0x3b8a: 0x404bc620, 0x3b8b: 0x404bc820,\n\t0x3b8c: 0x404bca20, 0x3b8d: 0x404bcc20, 0x3b8e: 0x404bce20, 0x3b8f: 0x404bd020,\n\t0x3b90: 0x404bd220, 0x3b91: 0x404bd420, 0x3b92: 0x404bd620, 0x3b93: 0x404bd820,\n\t0x3b94: 0x404bdc20, 0x3b95: 0x404bde20, 0x3b96: 0x404be020, 0x3b97: 0x404be220,\n\t0x3b98: 0x404be820, 0x3b99: 0x404bee20, 0x3b9a: 0x404bf020, 0x3b9b: 0x404bf420,\n\t0x3b9c: 0x404bf620, 0x3b9d: 0x404bfc20, 0x3b9e: 0x404c0620, 0x3b9f: 0x404c0820,\n\t0x3ba0: 0x404c0a20, 0x3ba1: 0x404c0c20, 0x3ba2: 0x404bfe20, 0x3ba3: 0x404c0020,\n\t0x3ba4: 0x404c0220, 0x3ba5: 0x404c0420, 0x3ba6: 0x404c0e20, 0x3ba7: 0x404bda20,\n\t0x3ba8: 0x404be420, 0x3ba9: 0x404bba20, 0x3baa: 0x404bbc20, 0x3bab: 0x404bbe20,\n\t0x3bac: 0x404bc020, 0x3bad: 0x404be620, 0x3bae: 0x404bf220, 0x3baf: 0x404bf820,\n\t0x3bb0: 0x404bfa20, 0x3bb1: 0x404bea20, 0x3bb2: 0x404bec20, 0x3bb3: 0x404c1020,\n\t0x3bb4: 0x4005e820, 0x3bb5: 0x4005ea20, 0x3bb6: 0x40031820, 0x3bb7: 0x40031a20,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bc0: 0xa000f302, 0x3bc1: 0xa000f402, 0x3bc2: 0x4045f820, 0x3bc3: 0x4045fa20,\n\t0x3bc4: 0x4045fc20, 0x3bc5: 0x4045fe20, 0x3bc6: 0x40460020, 0x3bc7: 0x40460220,\n\t0x3bc8: 0x40460420, 0x3bc9: 0x40460620, 0x3bca: 0x40460820, 0x3bcb: 0x40460a20,\n\t0x3bcc: 0x40460c20, 0x3bcd: 0x40460e20, 0x3bce: 0x40461020, 0x3bcf: 0x40461220,\n\t0x3bd0: 0x40461420, 0x3bd1: 0x40461620, 0x3bd2: 0x40461820, 0x3bd3: 0x40461a20,\n\t0x3bd4: 0x40461c20, 0x3bd5: 0x40461e20, 0x3bd6: 0x40462020, 0x3bd7: 0x40462220,\n\t0x3bd8: 0x40462420, 0x3bd9: 0x40462620, 0x3bda: 0x40462820, 0x3bdb: 0x40462a20,\n\t0x3bdc: 0x40462c20, 0x3bdd: 0x40462e20, 0x3bde: 0x40463020, 0x3bdf: 0x40463220,\n\t0x3be0: 0x40463420, 0x3be1: 0x40463620, 0x3be2: 0x40463820, 0x3be3: 0x40463a20,\n\t0x3be4: 0x40463c20, 0x3be5: 0x40463e20, 0x3be6: 0x40464020, 0x3be7: 0x40464220,\n\t0x3be8: 0x40464420, 0x3be9: 0x40464620, 0x3bea: 0x40464820, 0x3beb: 0x40464a20,\n\t0x3bec: 0x40464c20, 0x3bed: 0x40464e20, 0x3bee: 0x40465020, 0x3bef: 0x40465220,\n\t0x3bf0: 0x40465420, 0x3bf1: 0x40465620, 0x3bf2: 0x40465820, 0x3bf3: 0x40465a20,\n\t0x3bf4: 0x40465c20, 0x3bf5: 0x40465e20, 0x3bf6: 0x40466020, 0x3bf7: 0x40466220,\n\t0x3bf8: 0x40466420, 0x3bf9: 0x40466620, 0x3bfa: 0x40466820, 0x3bfb: 0x40466a20,\n\t0x3bfc: 0x40466c20, 0x3bfd: 0x40466e20, 0x3bfe: 0x40467020, 0x3bff: 0x40467220,\n\t// Block 0xf0, offset 0x3c00\n\t0x3c00: 0x40467420, 0x3c01: 0x40467620, 0x3c02: 0x40467820, 0x3c03: 0x40467a20,\n\t0x3c04: 0x8209233e,\n\t0x3c0e: 0x40031020, 0x3c0f: 0x40031220,\n\t0x3c10: 0xe000018b, 0x3c11: 0xe000021c, 0x3c12: 0xe0000337, 0x3c13: 0xe0000411,\n\t0x3c14: 0xe00004e6, 0x3c15: 0xe00005b0, 0x3c16: 0xe000067b, 0x3c17: 0xe0000723,\n\t0x3c18: 0xe00007cf, 0x3c19: 0xe0000874,\n\t0x3c20: 0xae600000, 0x3c21: 0xae600000, 0x3c22: 0xae600000, 0x3c23: 0xae600000,\n\t0x3c24: 0xae600000, 0x3c25: 0xae600000, 0x3c26: 0xae600000, 0x3c27: 0xae600000,\n\t0x3c28: 0xae600000, 0x3c29: 0xae600000, 0x3c2a: 0xae600000, 0x3c2b: 0xae600000,\n\t0x3c2c: 0xae600000, 0x3c2d: 0xae600000, 0x3c2e: 0xae600000, 0x3c2f: 0xae600000,\n\t0x3c30: 0xae600000, 0x3c31: 0xae600000, 0x3c32: 0x40404620, 0x3c33: 0x00404684,\n\t0x3c34: 0x00404684, 0x3c35: 0x00404684, 0x3c36: 0x00404684, 0x3c37: 0x00404684,\n\t0x3c38: 0x40056e20, 0x3c39: 0x40057020, 0x3c3a: 0x40057220, 0x3c3b: 0x40404820,\n\t// Block 0xf1, offset 0x3c40\n\t0x3c40: 0xe00001a9, 0x3c41: 0xe000023d, 0x3c42: 0xe0000355, 0x3c43: 0xe000042f,\n\t0x3c44: 0xe0000504, 0x3c45: 0xe00005ce, 0x3c46: 0xe0000699, 0x3c47: 0xe0000741,\n\t0x3c48: 0xe00007ed, 0x3c49: 0xe0000892, 0x3c4a: 0x404dd220, 0x3c4b: 0x404dd420,\n\t0x3c4c: 0x404dd620, 0x3c4d: 0x404dd820, 0x3c4e: 0x404dda20, 0x3c4f: 0x404ddc20,\n\t0x3c50: 0x404dde20, 0x3c51: 0x404de020, 0x3c52: 0x404de220, 0x3c53: 0x404de420,\n\t0x3c54: 0x404de620, 0x3c55: 0x404de820, 0x3c56: 0x404dea20, 0x3c57: 0x404dec20,\n\t0x3c58: 0x404dee20, 0x3c59: 0x404df020, 0x3c5a: 0x404df220, 0x3c5b: 0x404df420,\n\t0x3c5c: 0x404df620, 0x3c5d: 0x404df820, 0x3c5e: 0x404dfa20, 0x3c5f: 0x404dfc20,\n\t0x3c60: 0x404dfe20, 0x3c61: 0x404e0020, 0x3c62: 0x404e0220, 0x3c63: 0x404e0420,\n\t0x3c64: 0x404e0620, 0x3c65: 0x404e0820, 0x3c66: 0x404e0a20, 0x3c67: 0x404e0c20,\n\t0x3c68: 0x404e0e20, 0x3c69: 0x404e1020, 0x3c6a: 0x404e1220, 0x3c6b: 0xadc10f02,\n\t0x3c6c: 0xadc11002, 0x3c6d: 0xadc11102, 0x3c6e: 0x4005f420, 0x3c6f: 0x40032020,\n\t0x3c70: 0x404d8a20, 0x3c71: 0x404d8c20, 0x3c72: 0x404d8e20, 0x3c73: 0x404d9020,\n\t0x3c74: 0x404d9220, 0x3c75: 0x404d9420, 0x3c76: 0x404d9620, 0x3c77: 0x404d9820,\n\t0x3c78: 0x404d9a20, 0x3c79: 0x404d9c20, 0x3c7a: 0x404d9e20, 0x3c7b: 0x404da020,\n\t0x3c7c: 0x404da220, 0x3c7d: 0x404da420, 0x3c7e: 0x404da620, 0x3c7f: 0x404da820,\n\t// Block 0xf2, offset 0x3c80\n\t0x3c80: 0x404daa20, 0x3c81: 0x404dac20, 0x3c82: 0x404dae20, 0x3c83: 0x404db020,\n\t0x3c84: 0x404db220, 0x3c85: 0x404db420, 0x3c86: 0x404db620, 0x3c87: 0x404db820,\n\t0x3c88: 0x404dba20, 0x3c89: 0x404dbc20, 0x3c8a: 0x404dbe20, 0x3c8b: 0x404dc020,\n\t0x3c8c: 0x404dc220, 0x3c8d: 0x404dc420, 0x3c8e: 0x404dc620, 0x3c8f: 0x404dc820,\n\t0x3c90: 0x404dca20, 0x3c91: 0x404dcc20, 0x3c92: 0x404dce20, 0x3c93: 0x820926e8,\n\t0x3c9f: 0x40038420,\n\t0x3ca0: 0x40636a20, 0x3ca1: 0x40636c20, 0x3ca2: 0x40636e20, 0x3ca3: 0x40637020,\n\t0x3ca4: 0x40637220, 0x3ca5: 0x40637420, 0x3ca6: 0x40637620, 0x3ca7: 0x40637820,\n\t0x3ca8: 0x40637a20, 0x3ca9: 0x40637c20, 0x3caa: 0x40637e20, 0x3cab: 0x40638020,\n\t0x3cac: 0x40638220, 0x3cad: 0x40638420, 0x3cae: 0x40638620, 0x3caf: 0x40638820,\n\t0x3cb0: 0x40638a20, 0x3cb1: 0x40638c20, 0x3cb2: 0x40638e20, 0x3cb3: 0x40639020,\n\t0x3cb4: 0x40639220, 0x3cb5: 0x40639420, 0x3cb6: 0x40639620, 0x3cb7: 0x40639820,\n\t0x3cb8: 0x40639a20, 0x3cb9: 0x40639c20, 0x3cba: 0x40639e20, 0x3cbb: 0x4063a020,\n\t0x3cbc: 0x4063a220,\n\t// Block 0xf3, offset 0x3cc0\n\t0x3cc0: 0xa000f202, 0x3cc1: 0xa000f302, 0x3cc2: 0xa000f802, 0x3cc3: 0xa000f402,\n\t0x3cc4: 0x4052b220, 0x3cc5: 0x4052b420, 0x3cc6: 0x4052b620, 0x3cc7: 0x4052b820,\n\t0x3cc8: 0x4052ba20, 0x3cc9: 0x4052bc20, 0x3cca: 0x4052be20, 0x3ccb: 0x4052c020,\n\t0x3ccc: 0x4052c220, 0x3ccd: 0x4052c420, 0x3cce: 0x4052c620, 0x3ccf: 0x4052c820,\n\t0x3cd0: 0x4052ca20, 0x3cd1: 0x4052cc20, 0x3cd2: 0x4052ce20, 0x3cd3: 0x4052d020,\n\t0x3cd4: 0x4052d220, 0x3cd5: 0x4052d420, 0x3cd6: 0x4052d620, 0x3cd7: 0x4052d820,\n\t0x3cd8: 0x4052da20, 0x3cd9: 0x4052dc20, 0x3cda: 0x4052de20, 0x3cdb: 0x4052e020,\n\t0x3cdc: 0x4052e220, 0x3cdd: 0x4052e420, 0x3cde: 0x4052e620, 0x3cdf: 0x4052e820,\n\t0x3ce0: 0x4052ea20, 0x3ce1: 0x4052ec20, 0x3ce2: 0x4052ee20, 0x3ce3: 0x4052f020,\n\t0x3ce4: 0x4052f220, 0x3ce5: 0x4052f420, 0x3ce6: 0x4052f620, 0x3ce7: 0x4052f820,\n\t0x3ce8: 0x4052fa20, 0x3ce9: 0x4052fc20, 0x3cea: 0x4052fe20, 0x3ceb: 0x40530220,\n\t0x3cec: 0x00530284, 0x3ced: 0x40530620, 0x3cee: 0x40530820, 0x3cef: 0x40530a20,\n\t0x3cf0: 0x40530c20, 0x3cf1: 0x40530e20, 0x3cf2: 0x40531020, 0x3cf3: 0xa070f102,\n\t0x3cf4: 0x40531220, 0x3cf5: 0x40532420, 0x3cf6: 0x40531620, 0x3cf7: 0x40531820,\n\t0x3cf8: 0x40531a20, 0x3cf9: 0x40531c20, 0x3cfa: 0x40532020, 0x3cfb: 0x40532220,\n\t0x3cfc: 0x40531420, 0x3cfd: 0x40531e20, 0x3cfe: 0x40530020, 0x3cff: 0x40530420,\n\t// Block 0xf4, offset 0x3d00\n\t0x3d00: 0x82092993, 0x3d01: 0x40036e20, 0x3d02: 0x40037020, 0x3d03: 0x40037220,\n\t0x3d04: 0x40037420, 0x3d05: 0x40037620, 0x3d06: 0x40037820, 0x3d07: 0x4002b020,\n\t0x3d08: 0x40033620, 0x3d09: 0x40033820, 0x3d0a: 0x40037a20, 0x3d0b: 0x40037c20,\n\t0x3d0c: 0x40037e20, 0x3d0d: 0x40038020, 0x3d0f: 0x4027c020,\n\t0x3d10: 0xe00001c1, 0x3d11: 0xe0000255, 0x3d12: 0xe000036d, 0x3d13: 0xe0000447,\n\t0x3d14: 0xe000051c, 0x3d15: 0xe00005e6, 0x3d16: 0xe00006b1, 0x3d17: 0xe0000759,\n\t0x3d18: 0xe0000805, 0x3d19: 0xe00008aa,\n\t0x3d1e: 0x4005f620, 0x3d1f: 0x4005f820,\n\t// Block 0xf5, offset 0x3d40\n\t0x3d40: 0x40519c20, 0x3d41: 0x40519e20, 0x3d42: 0x4051a020, 0x3d43: 0x4051a220,\n\t0x3d44: 0x4051a420, 0x3d45: 0x4051a620, 0x3d46: 0x4051a820, 0x3d47: 0x4051aa20,\n\t0x3d48: 0x4051ac20, 0x3d49: 0x4051ae20, 0x3d4a: 0x4051b020, 0x3d4b: 0x4051b220,\n\t0x3d4c: 0x4051b420, 0x3d4d: 0x4051b620, 0x3d4e: 0x4051b820, 0x3d4f: 0x4051ba20,\n\t0x3d50: 0x4051bc20, 0x3d51: 0x4051be20, 0x3d52: 0x4051c020, 0x3d53: 0x4051c220,\n\t0x3d54: 0x4051c420, 0x3d55: 0x4051c620, 0x3d56: 0x4051c820, 0x3d57: 0x4051ca20,\n\t0x3d58: 0x4051cc20, 0x3d59: 0x4051ce20, 0x3d5a: 0x4051d020, 0x3d5b: 0x4051d220,\n\t0x3d5c: 0x4051d420, 0x3d5d: 0x4051d620, 0x3d5e: 0x4051d820, 0x3d5f: 0x4051da20,\n\t0x3d60: 0x4051dc20, 0x3d61: 0x4051de20, 0x3d62: 0x4051e020, 0x3d63: 0x4051e220,\n\t0x3d64: 0x4051e420, 0x3d65: 0x4051e620, 0x3d66: 0x4051e820, 0x3d67: 0x4051ea20,\n\t0x3d68: 0x4051ec20, 0x3d69: 0x4051f620, 0x3d6a: 0x4051f820, 0x3d6b: 0x4051fa20,\n\t0x3d6c: 0x4051fc20, 0x3d6d: 0x4051fe20, 0x3d6e: 0x40520020, 0x3d6f: 0x40520220,\n\t0x3d70: 0x40520420, 0x3d71: 0x40520620, 0x3d72: 0x40520820, 0x3d73: 0x4051ee20,\n\t0x3d74: 0x4051f020, 0x3d75: 0x4051f220, 0x3d76: 0x4051f420,\n\t// Block 0xf6, offset 0x3d80\n\t0x3d80: 0x40520a20, 0x3d81: 0x40520c20, 0x3d82: 0x40520e20, 0x3d83: 0x40521020,\n\t0x3d84: 0x40521220, 0x3d85: 0x40521420, 0x3d86: 0x40521620, 0x3d87: 0x40521820,\n\t0x3d88: 0x40521a20, 0x3d89: 0x40521c20, 0x3d8a: 0x40521e20, 0x3d8b: 0x40522020,\n\t0x3d8c: 0x40522220, 0x3d8d: 0x40522420,\n\t0x3d90: 0xe00001bb, 0x3d91: 0xe000024f, 0x3d92: 0xe0000367, 0x3d93: 0xe0000441,\n\t0x3d94: 0xe0000516, 0x3d95: 0xe00005e0, 0x3d96: 0xe00006ab, 0x3d97: 0xe0000753,\n\t0x3d98: 0xe00007ff, 0x3d99: 0xe00008a4,\n\t0x3d9c: 0x4005fa20, 0x3d9d: 0x40033a20, 0x3d9e: 0x40033c20, 0x3d9f: 0x40033e20,\n\t0x3da0: 0x404e2020, 0x3da1: 0x404e2c20, 0x3da2: 0x404e3020, 0x3da3: 0x404e3420,\n\t0x3da4: 0x404e3e20, 0x3da5: 0x404e4620, 0x3da6: 0x404e4c20, 0x3da7: 0x404e5020,\n\t0x3da8: 0x404e5420, 0x3da9: 0x404e5820, 0x3daa: 0x404e6820, 0x3dab: 0x404e6e20,\n\t0x3dac: 0x404ea820, 0x3dad: 0x404eae20, 0x3dae: 0x404eb220, 0x3daf: 0x404e7a20,\n\t0x3db0: 0x4027c220, 0x3db1: 0x404eb420, 0x3db2: 0x404e3820, 0x3db3: 0x404e8e20,\n\t0x3db4: 0x404f3a20, 0x3db5: 0x404f3c20, 0x3db6: 0x404f3e20, 0x3db7: 0x4007ac20,\n\t0x3db8: 0x4007ae20, 0x3db9: 0x4007b020, 0x3dba: 0x404e9020, 0x3dbb: 0x404f3820,\n\t// Block 0xf7, offset 0x3dc0\n\t0x3dc0: 0x4049f020, 0x3dc1: 0x4049f220, 0x3dc2: 0x4049f420, 0x3dc3: 0x4049f620,\n\t0x3dc4: 0x4049f820, 0x3dc5: 0x4049fa20, 0x3dc6: 0x4049fc20, 0x3dc7: 0x4049fe20,\n\t0x3dc8: 0x404a0020, 0x3dc9: 0x404a0220, 0x3dca: 0x404a0420, 0x3dcb: 0x404a0620,\n\t0x3dcc: 0x404a0820, 0x3dcd: 0x404a0a20, 0x3dce: 0x404a0c20, 0x3dcf: 0x404a0e20,\n\t0x3dd0: 0x404a1020, 0x3dd1: 0x404a1220, 0x3dd2: 0x404a1420, 0x3dd3: 0x404a1620,\n\t0x3dd4: 0x404a1820, 0x3dd5: 0x404a1a20, 0x3dd6: 0x404a1c20, 0x3dd7: 0x404a1e20,\n\t0x3dd8: 0x404a2020, 0x3dd9: 0x404a2220, 0x3dda: 0x404a2420, 0x3ddb: 0x404a2620,\n\t0x3ddc: 0x404a2820, 0x3ddd: 0x404a2a20, 0x3dde: 0x404a2c20, 0x3ddf: 0x404a2e20,\n\t0x3de0: 0x404a3020, 0x3de1: 0x404a3220, 0x3de2: 0x404a3420, 0x3de3: 0x404a3620,\n\t0x3de4: 0x404a3820, 0x3de5: 0x404a3a20, 0x3de6: 0x404a3c20, 0x3de7: 0x404a3e20,\n\t0x3de8: 0x404a4020, 0x3de9: 0x404a4220, 0x3dea: 0x404a4420, 0x3deb: 0x404a4620,\n\t0x3dec: 0x404a4820, 0x3ded: 0x404a4a20, 0x3dee: 0x404a4c20, 0x3def: 0x404a4e20,\n\t0x3df0: 0x82e62528, 0x3df1: 0x404a5220, 0x3df2: 0x82e6252a, 0x3df3: 0x82e6252b,\n\t0x3df4: 0x82dc252c, 0x3df5: 0xc20e0671, 0x3df6: 0xc23f0671, 0x3df7: 0x82e6252f,\n\t0x3df8: 0x82e62530, 0x3df9: 0xc2700671, 0x3dfa: 0x404a6420, 0x3dfb: 0xc2a10671,\n\t0x3dfc: 0xc2d20671, 0x3dfd: 0x404a6a20, 0x3dfe: 0x82e62536, 0x3dff: 0xae610c02,\n\t// Block 0xf8, offset 0x3e00\n\t0x3e00: 0x404a6e20, 0x3e01: 0xae610d02, 0x3e02: 0x404a7020,\n\t0x3e1b: 0x404a7220,\n\t0x3e1c: 0x404a7420, 0x3e1d: 0x4027c420, 0x3e1e: 0x40057e20, 0x3e1f: 0x40058020,\n\t0x3e20: 0x40456420, 0x3e21: 0x40456620, 0x3e22: 0x40456820, 0x3e23: 0x40456a20,\n\t0x3e24: 0x40456c20, 0x3e25: 0x40456e20, 0x3e26: 0x40457020, 0x3e27: 0x40457220,\n\t0x3e28: 0x40457420, 0x3e29: 0x40457620, 0x3e2a: 0x40457820, 0x3e2b: 0x40458a20,\n\t0x3e2c: 0x40458c20, 0x3e2d: 0x40458e20, 0x3e2e: 0x40459020, 0x3e2f: 0x40459220,\n\t0x3e30: 0x40034020, 0x3e31: 0x4002dc20, 0x3e32: 0x40452c20, 0x3e33: 0x4027c620,\n\t0x3e34: 0x4027c820, 0x3e35: 0x40459420, 0x3e36: 0x820922d4,\n\t// Block 0xf9, offset 0x3e40\n\t0x3e41: 0x403cae20, 0x3e42: 0x403cb020, 0x3e43: 0x403cb220,\n\t0x3e44: 0x403cb420, 0x3e45: 0x403cb620, 0x3e46: 0x403cb820,\n\t0x3e49: 0x403e3c20, 0x3e4a: 0x403e3e20, 0x3e4b: 0x403e4020,\n\t0x3e4c: 0x403e4220, 0x3e4d: 0x403e4420, 0x3e4e: 0x403e4620,\n\t0x3e51: 0x403dfe20, 0x3e52: 0x403e0020, 0x3e53: 0x403e0220,\n\t0x3e54: 0x403e0420, 0x3e55: 0x403e0620, 0x3e56: 0x403e0820,\n\t0x3e60: 0x403ec220, 0x3e61: 0x403ec420, 0x3e62: 0x403ec620, 0x3e63: 0x403ec820,\n\t0x3e64: 0x403eca20, 0x3e65: 0x403ecc20, 0x3e66: 0x403ece20,\n\t0x3e68: 0x403ef220, 0x3e69: 0x403ef420, 0x3e6a: 0x403ef620, 0x3e6b: 0x403ef820,\n\t0x3e6c: 0x403efa20, 0x3e6d: 0x403efc20, 0x3e6e: 0x403efe20,\n\t// Block 0xfa, offset 0x3e80\n\t0x3e80: 0x40452e20, 0x3e81: 0x40453020, 0x3e82: 0x40453220, 0x3e83: 0x40453420,\n\t0x3e84: 0x40453620, 0x3e85: 0x40453820, 0x3e86: 0x40453a20, 0x3e87: 0x40453c20,\n\t0x3e88: 0x40453e20, 0x3e89: 0x40454020, 0x3e8a: 0x40454220, 0x3e8b: 0x40454420,\n\t0x3e8c: 0x40454620, 0x3e8d: 0x40454820, 0x3e8e: 0x40454a20, 0x3e8f: 0x40454c20,\n\t0x3e90: 0x40454e20, 0x3e91: 0x40455020, 0x3e92: 0x40455220, 0x3e93: 0x40455420,\n\t0x3e94: 0x40455620, 0x3e95: 0x40455820, 0x3e96: 0x40455a20, 0x3e97: 0x40455c20,\n\t0x3e98: 0x40455e20, 0x3e99: 0x40456020, 0x3e9a: 0x40456220, 0x3e9b: 0x40459620,\n\t0x3e9c: 0x40459820, 0x3e9d: 0x40459a20, 0x3e9e: 0x40459c20, 0x3e9f: 0x40459e20,\n\t0x3ea0: 0x4045a020, 0x3ea1: 0x4045a220, 0x3ea2: 0x4045a420, 0x3ea3: 0x40457a20,\n\t0x3ea4: 0x40457c20, 0x3ea5: 0x40457e20, 0x3ea6: 0x40458020, 0x3ea7: 0x40458220,\n\t0x3ea8: 0x40458420, 0x3ea9: 0x40458620, 0x3eaa: 0x40458820, 0x3eab: 0x40034220,\n\t0x3eac: 0xa000fa02, 0x3ead: 0x820922d3,\n\t0x3eb0: 0xe0000188, 0x3eb1: 0xe0000219, 0x3eb2: 0xe0000334, 0x3eb3: 0xe000040e,\n\t0x3eb4: 0xe00004e3, 0x3eb5: 0xe00005ad, 0x3eb6: 0xe0000678, 0x3eb7: 0xe0000720,\n\t0x3eb8: 0xe00007cc, 0x3eb9: 0xe0000871,\n\t// Block 0xfb, offset 0x3ec0\n\t0x3ef0: 0x40643620, 0x3ef1: 0x40643820, 0x3ef2: 0x40643a20, 0x3ef3: 0x40643c20,\n\t0x3ef4: 0x40643e20, 0x3ef5: 0x40644020, 0x3ef6: 0x40644220, 0x3ef7: 0x40644420,\n\t0x3ef8: 0x40644620, 0x3ef9: 0x40644820, 0x3efa: 0x40644a20, 0x3efb: 0x40644c20,\n\t0x3efc: 0x40644e20, 0x3efd: 0x40645020, 0x3efe: 0x40645220, 0x3eff: 0x40645420,\n\t// Block 0xfc, offset 0x3f00\n\t0x3f00: 0x40645620, 0x3f01: 0x40645820, 0x3f02: 0x40645a20, 0x3f03: 0x40645c20,\n\t0x3f04: 0x40645e20, 0x3f05: 0x40646020, 0x3f06: 0x40646220,\n\t0x3f0b: 0x40651420,\n\t0x3f0c: 0x40651620, 0x3f0d: 0x40651820, 0x3f0e: 0x40651a20, 0x3f0f: 0x40651c20,\n\t0x3f10: 0x40651e20, 0x3f11: 0x40652020, 0x3f12: 0x40652220, 0x3f13: 0x40652420,\n\t0x3f14: 0x40652620, 0x3f15: 0x40652820, 0x3f16: 0x40652a20, 0x3f17: 0x40652c20,\n\t0x3f18: 0x40652e20, 0x3f19: 0x40653020, 0x3f1a: 0x40653220, 0x3f1b: 0x40653420,\n\t0x3f1c: 0x40653620, 0x3f1d: 0x40653820, 0x3f1e: 0x40653a20, 0x3f1f: 0x40653c20,\n\t0x3f20: 0x40653e20, 0x3f21: 0x40654020, 0x3f22: 0x40654220, 0x3f23: 0x40654420,\n\t0x3f24: 0x40654620, 0x3f25: 0x40654820, 0x3f26: 0x40654a20, 0x3f27: 0x40654c20,\n\t0x3f28: 0x40654e20, 0x3f29: 0x40655020, 0x3f2a: 0x40655220, 0x3f2b: 0x40655420,\n\t0x3f2c: 0x40655620, 0x3f2d: 0x40655820, 0x3f2e: 0x40655a20, 0x3f2f: 0x40655c20,\n\t0x3f30: 0x40655e20, 0x3f31: 0x40656020, 0x3f32: 0x40656220, 0x3f33: 0x40656420,\n\t0x3f34: 0x40656620, 0x3f35: 0x40656820, 0x3f36: 0x40656a20, 0x3f37: 0x40656c20,\n\t0x3f38: 0x40656e20, 0x3f39: 0x40657020, 0x3f3a: 0x40657220, 0x3f3b: 0x40657420,\n\t// Block 0xfd, offset 0x3f40\n\t0x3f40: 0x43189020, 0x3f41: 0x42cde820, 0x3f42: 0x431d9420, 0x3f43: 0x43199020,\n\t0x3f44: 0x42dda220, 0x3f45: 0x429c6420, 0x3f46: 0x42a7ca20, 0x3f47: 0x433f3820,\n\t0x3f48: 0x433f3820, 0x3f49: 0x42b2a220, 0x3f4a: 0x4323a220, 0x3f4b: 0x42ab0e20,\n\t0x3f4c: 0x42b29020, 0x3f4d: 0x42c3ec20, 0x3f4e: 0x42ecd220, 0x3f4f: 0x42ff0a20,\n\t0x3f50: 0x430c7e20, 0x3f51: 0x430f7420, 0x3f52: 0x4311f020, 0x3f53: 0x43211e20,\n\t0x3f54: 0x42d40420, 0x3f55: 0x42da3620, 0x3f56: 0x42e1b220, 0x3f57: 0x42e7bc20,\n\t0x3f58: 0x43087a20, 0x3f59: 0x4322d420, 0x3f5a: 0x4333e220, 0x3f5b: 0x429d0420,\n\t0x3f5c: 0x42a6ea20, 0x3f5d: 0x42d60820, 0x3f5e: 0x42e43620, 0x3f5f: 0x430c5a20,\n\t0x3f60: 0x433c3c20, 0x3f61: 0x42baa020, 0x3f62: 0x42dfd620, 0x3f63: 0x430b9a20,\n\t0x3f64: 0x4312c820, 0x3f65: 0x42c59220, 0x3f66: 0x4303b020, 0x3f67: 0x43103e20,\n\t0x3f68: 0x42bd9420, 0x3f69: 0x42ce2e20, 0x3f6a: 0x42dad420, 0x3f6b: 0x42e5f820,\n\t0x3f6c: 0x43219c20, 0x3f6d: 0x429f0c20, 0x3f6e: 0x42a36e20, 0x3f6f: 0x42a5bc20,\n\t0x3f70: 0x42c98820, 0x3f71: 0x42d5a620, 0x3f72: 0x42e42020, 0x3f73: 0x42edce20,\n\t0x3f74: 0x43000220, 0x3f75: 0x430c0c20, 0x3f76: 0x430cb820, 0x3f77: 0x431bde20,\n\t0x3f78: 0x432e6420, 0x3f79: 0x4336de20, 0x3f7a: 0x433bf420, 0x3f7b: 0x42f11820,\n\t0x3f7c: 0x42f2fe20, 0x3f7d: 0x42fb4020, 0x3f7e: 0x43079220, 0x3f7f: 0x43260820,\n\t// Block 0xfe, offset 0x3f80\n\t0x3f80: 0x433cfe20, 0x3f81: 0x4315ac20, 0x3f82: 0x42b1be20, 0x3f83: 0x42be0820,\n\t0x3f84: 0x42f8c020, 0x3f85: 0x4300fc20, 0x3f86: 0x42e4c420, 0x3f87: 0x42f19420,\n\t0x3f88: 0x43198420, 0x3f89: 0x432dee20, 0x3f8a: 0x42b1b020, 0x3f8b: 0x42b8c420,\n\t0x3f8c: 0x42d42620, 0x3f8d: 0x42dbb420, 0x3f8e: 0x42de1e20, 0x3f8f: 0x42fa5e20,\n\t0x3f90: 0x42fc6e20, 0x3f91: 0x432c9620, 0x3f92: 0x42a5a420, 0x3f93: 0x43011620,\n\t0x3f94: 0x42a3b820, 0x3f95: 0x42a39820, 0x3f96: 0x42f43820, 0x3f97: 0x42fb7c20,\n\t0x3f98: 0x4307e220, 0x3f99: 0x432cea20, 0x3f9a: 0x43170020, 0x3f9b: 0x42c59e20,\n\t0x3f9c: 0x42d40420, 0x3f9d: 0x4315fc20, 0x3f9e: 0x429c7220, 0x3f9f: 0x42b7ce20,\n\t0x3fa0: 0x42c02420, 0x3fa1: 0x42e70e20, 0x3fa2: 0x42eae020, 0x3fa3: 0x42a62e20,\n\t0x3fa4: 0x42f1f620, 0x3fa5: 0x429f7e20, 0x3fa6: 0x42bf5220, 0x3fa7: 0x429c1a20,\n\t0x3fa8: 0x42d99820, 0x3fa9: 0x42caf020, 0x3faa: 0x42fa4420, 0x3fab: 0x42a78620,\n\t0x3fac: 0x42b0bc20, 0x3fad: 0x42ee0220, 0x3fae: 0x43089220, 0x3faf: 0x43155420,\n\t0x3fb0: 0x42d77420, 0x3fb1: 0x431f6020, 0x3fb2: 0x42d91020, 0x3fb3: 0x42c5fc20,\n\t0x3fb4: 0x4305ca20, 0x3fb5: 0x42c74020, 0x3fb6: 0x42eaca20, 0x3fb7: 0x429d5c20,\n\t0x3fb8: 0x42a2d220, 0x3fb9: 0x42a39220, 0x3fba: 0x42d10220, 0x3fbb: 0x42f9ce20,\n\t0x3fbc: 0x4304de20, 0x3fbd: 0x4315a420, 0x3fbe: 0x43239e20, 0x3fbf: 0x42a5ea20,\n\t// Block 0xff, offset 0x3fc0\n\t0x3fc0: 0x42a88420, 0x3fc1: 0x42b2e620, 0x3fc2: 0x42bdd820, 0x3fc3: 0x42cb8a20,\n\t0x3fc4: 0x42dffc20, 0x3fc5: 0x42f25420, 0x3fc6: 0x432b5a20, 0x3fc7: 0x4334d420,\n\t0x3fc8: 0x433d2e20, 0x3fc9: 0x433d9c20, 0x3fca: 0x42a53620, 0x3fcb: 0x42cd8c20,\n\t0x3fcc: 0x42d6ee20, 0x3fcd: 0x431ec420, 0x3fce: 0x42bce820, 0x3fcf: 0x42c32020,\n\t0x3fd0: 0x42c40020, 0x3fd1: 0x42c93420, 0x3fd2: 0x42de4620, 0x3fd3: 0x42e29220,\n\t0x3fd4: 0x42e91220, 0x3fd5: 0x42f39420, 0x3fd6: 0x42fbe820, 0x3fd7: 0x4300de20,\n\t0x3fd8: 0x431e4c20, 0x3fd9: 0x4309dc20, 0x3fda: 0x43204620, 0x3fdb: 0x43269420,\n\t0x3fdc: 0x42a42e20, 0x3fdd: 0x42a54620, 0x3fde: 0x42a97a20, 0x3fdf: 0x42e19020,\n\t0x3fe0: 0x43118420, 0x3fe1: 0x43155420, 0x3fe2: 0x42bd9220, 0x3fe3: 0x42bfea20,\n\t0x3fe4: 0x42c6f620, 0x3fe5: 0x42d75c20, 0x3fe6: 0x42f87c20, 0x3fe7: 0x42e6ea20,\n\t0x3fe8: 0x429dc820, 0x3fe9: 0x42adf220, 0x3fea: 0x42b7ce20, 0x3feb: 0x42bb7420,\n\t0x3fec: 0x42c03820, 0x3fed: 0x42e76420, 0x3fee: 0x42e8d220, 0x3fef: 0x42ff3420,\n\t0x3ff0: 0x43008c20, 0x3ff1: 0x43246820, 0x3ff2: 0x432dec20, 0x3ff3: 0x432e9020,\n\t0x3ff4: 0x43303020, 0x3ff5: 0x429f1620, 0x3ff6: 0x42f35c20, 0x3ff7: 0x43236820,\n\t0x3ff8: 0x432d7020, 0x3ff9: 0x42c1c220, 0x3ffa: 0x429d0c20, 0x3ffb: 0x42a1b420,\n\t0x3ffc: 0x42b7dc20, 0x3ffd: 0x42b87e20, 0x3ffe: 0x42cb3220, 0x3fff: 0x42d40420,\n\t// Block 0x100, offset 0x4000\n\t0x4000: 0x42e39c20, 0x4001: 0x42ec8420, 0x4002: 0x4309f820, 0x4003: 0x4320f820,\n\t0x4004: 0x433f1a20, 0x4005: 0x42cd1020, 0x4006: 0x432c5c20, 0x4007: 0x42a51220,\n\t0x4008: 0x42cef620, 0x4009: 0x42cfe620, 0x400a: 0x42da8220, 0x400b: 0x42dd3820,\n\t0x400c: 0x42e81220, 0x400d: 0x42eab220, 0x400e: 0x42f0d620, 0x400f: 0x42fa2020,\n\t0x4010: 0x4330bc20, 0x4011: 0x42a2da20, 0x4012: 0x42c45c20, 0x4013: 0x432cf020,\n\t0x4014: 0x42a05620, 0x4015: 0x42ba3220, 0x4016: 0x42dbd420, 0x4017: 0x431e5420,\n\t0x4018: 0x42bf1620, 0x4019: 0x42c28820, 0x401a: 0x42d02e20, 0x401b: 0x42e70e20,\n\t0x401c: 0x432d0c20, 0x401d: 0x42a45220, 0x401e: 0x42a81e20, 0x401f: 0x42b8ca20,\n\t0x4020: 0x42cc2620, 0x4021: 0x42ce9c20, 0x4022: 0x42d15020, 0x4023: 0x42d9ca20,\n\t0x4024: 0x42e80c20, 0x4025: 0x42ebc420, 0x4026: 0x42fef220, 0x4027: 0x43119e20,\n\t0x4028: 0x4311c220, 0x4029: 0x43239820, 0x402a: 0x432dc420, 0x402b: 0x42a67e20,\n\t0x402c: 0x42dd7420, 0x402d: 0x42a83a20, 0x402e: 0x42e3a020, 0x402f: 0x42e93020,\n\t0x4030: 0x430bf420, 0x4031: 0x432d4620, 0x4032: 0x4338ae20, 0x4033: 0x433d3e20,\n\t0x4034: 0x42cf2e20, 0x4035: 0x42db9620, 0x4036: 0x4303d020, 0x4037: 0x42f59620,\n\t0x4038: 0x42f64020, 0x4039: 0x42f92420, 0x403a: 0x42e58020, 0x403b: 0x42e13220,\n\t0x403c: 0x4316b020, 0x403d: 0x429d8020, 0x403e: 0x43066c20, 0x403f: 0x42a47420,\n\t// Block 0x101, offset 0x4040\n\t0x4040: 0x42a40e20, 0x4041: 0x42bd4c20, 0x4042: 0x42c5a620, 0x4043: 0x42f9ac20,\n\t0x4044: 0x42b70a20, 0x4045: 0x42da3c20, 0x4046: 0x42cd6820, 0x4047: 0x431e7620,\n\t0x4048: 0x43109820, 0x4049: 0x432c9a20, 0x404a: 0x43131620, 0x404b: 0x42bda620,\n\t0x404c: 0x42a28020, 0x404d: 0x42ab8020, 0x404e: 0x43f41c20, 0x404f: 0x43f41e20,\n\t0x4050: 0x42b0b420, 0x4051: 0x43f42220, 0x4052: 0x42cce820, 0x4053: 0x43f42620,\n\t0x4054: 0x43f42820, 0x4055: 0x42a3bc20, 0x4056: 0x42e65420, 0x4057: 0x42ed9420,\n\t0x4058: 0x42f27820, 0x4059: 0x42f2bc20, 0x405a: 0x42f2ca20, 0x405b: 0x42f31e20,\n\t0x405c: 0x432eac20, 0x405d: 0x42f97c20, 0x405e: 0x42ff7a20, 0x405f: 0x43f43e20,\n\t0x4060: 0x430c2420, 0x4061: 0x43f44220, 0x4062: 0x4315f020, 0x4063: 0x43f44620,\n\t0x4064: 0x43f44820, 0x4065: 0x43207020, 0x4066: 0x4321fa20, 0x4067: 0x43f44e20,\n\t0x4068: 0x43f45020, 0x4069: 0x43f45220, 0x406a: 0x4331de20, 0x406b: 0x4331f820,\n\t0x406c: 0x43325020, 0x406d: 0x433b6820, 0x406e: 0x4321bc20, 0x406f: 0x432d6e20,\n\t0x4070: 0x429f5c20, 0x4071: 0x42a1ce20, 0x4072: 0x42a29a20, 0x4073: 0x42a59220,\n\t0x4074: 0x42a5c820, 0x4075: 0x42a6a220, 0x4076: 0x42ab3a20, 0x4077: 0x42ac0c20,\n\t0x4078: 0x42acd020, 0x4079: 0x42b08020, 0x407a: 0x42b15020, 0x407b: 0x42b8c820,\n\t0x407c: 0x42b8dc20, 0x407d: 0x42c12820, 0x407e: 0x42c2d020, 0x407f: 0x42c31c20,\n\t// Block 0x102, offset 0x4080\n\t0x4080: 0x42c3e420, 0x4081: 0x42ca9e20, 0x4082: 0x42cbc420, 0x4083: 0x42cd2220,\n\t0x4084: 0x42d10a20, 0x4085: 0x42daee20, 0x4086: 0x42dc3420, 0x4087: 0x42de4420,\n\t0x4088: 0x42e2dc20, 0x4089: 0x42e45620, 0x408a: 0x42e84420, 0x408b: 0x42f12220,\n\t0x408c: 0x42f27c20, 0x408d: 0x42f29220, 0x408e: 0x42f29020, 0x408f: 0x42f2a020,\n\t0x4090: 0x42f2ac20, 0x4091: 0x42f2ba20, 0x4092: 0x42f31a20, 0x4093: 0x42f31c20,\n\t0x4094: 0x42f48020, 0x4095: 0x42f50220, 0x4096: 0x42f78020, 0x4097: 0x42fbe820,\n\t0x4098: 0x42fc1220, 0x4099: 0x42fc8220, 0x409a: 0x42fee420, 0x409b: 0x43000a20,\n\t0x409c: 0x4303da20, 0x409d: 0x4304f220, 0x409e: 0x4304f220, 0x409f: 0x4308ae20,\n\t0x40a0: 0x43122020, 0x40a1: 0x43132c20, 0x40a2: 0x43160220, 0x40a3: 0x43167220,\n\t0x40a4: 0x4319a620, 0x40a5: 0x431a1020, 0x40a6: 0x431f6c20, 0x40a7: 0x43207020,\n\t0x40a8: 0x432dc620, 0x40a9: 0x432ffe20, 0x40aa: 0x43307620, 0x40ab: 0x42c0ea20,\n\t0x40ac: 0x4885dc20, 0x40ad: 0x43043020,\n\t0x40b0: 0x429c4c20, 0x40b1: 0x42a36a20, 0x40b2: 0x42a2d020, 0x40b3: 0x429f0020,\n\t0x40b4: 0x42a28a20, 0x40b5: 0x42a30020, 0x40b6: 0x42a58e20, 0x40b7: 0x42a5f420,\n\t0x40b8: 0x42ab3a20, 0x40b9: 0x42aaaa20, 0x40ba: 0x42ab3220, 0x40bb: 0x42abc420,\n\t0x40bc: 0x42b0b420, 0x40bd: 0x42b16620, 0x40be: 0x42b28820, 0x40bf: 0x42b2a820,\n\t// Block 0x103, offset 0x40c0\n\t0x40c0: 0x42b4c420, 0x40c1: 0x42b65020, 0x40c2: 0x42bda420, 0x40c3: 0x42bdb220,\n\t0x40c4: 0x42bed220, 0x40c5: 0x42bf5a20, 0x40c6: 0x42c1b020, 0x40c7: 0x42c29c20,\n\t0x40c8: 0x42c21020, 0x40c9: 0x42c31c20, 0x40ca: 0x42c2c020, 0x40cb: 0x42c3e420,\n\t0x40cc: 0x42c46820, 0x40cd: 0x42c78820, 0x40ce: 0x42c83820, 0x40cf: 0x42c8a420,\n\t0x40d0: 0x42caac20, 0x40d1: 0x42cce820, 0x40d2: 0x42ce2e20, 0x40d3: 0x42ce3620,\n\t0x40d4: 0x42ceac20, 0x40d5: 0x42d6f220, 0x40d6: 0x42d77420, 0x40d7: 0x42da8220,\n\t0x40d8: 0x42ddb620, 0x40d9: 0x42dd9620, 0x40da: 0x42de4420, 0x40db: 0x42e03c20,\n\t0x40dc: 0x42e2dc20, 0x40dd: 0x42ef4e20, 0x40de: 0x42e46a20, 0x40df: 0x42e55e20,\n\t0x40e0: 0x42e65420, 0x40e1: 0x42e8e220, 0x40e2: 0x42ea0c20, 0x40e3: 0x42ea7620,\n\t0x40e4: 0x42ec3a20, 0x40e5: 0x42ec3e20, 0x40e6: 0x42ed9420, 0x40e7: 0x42edb620,\n\t0x40e8: 0x42ede820, 0x40e9: 0x42ee9420, 0x40ea: 0x42ee8020, 0x40eb: 0x42f19820,\n\t0x40ec: 0x42f56220, 0x40ed: 0x42f78020, 0x40ee: 0x42f8f620, 0x40ef: 0x42fab620,\n\t0x40f0: 0x42fbe820, 0x40f1: 0x42fe7c20, 0x40f2: 0x43000a20, 0x40f3: 0x4306a420,\n\t0x40f4: 0x4307de20, 0x40f5: 0x430ef220, 0x40f6: 0x43128220, 0x40f7: 0x43130c20,\n\t0x40f8: 0x43132c20, 0x40f9: 0x43157e20, 0x40fa: 0x4315f020, 0x40fb: 0x43159620,\n\t0x40fc: 0x43160220, 0x40fd: 0x4315fc20, 0x40fe: 0x4315da20, 0x40ff: 0x43167220,\n\t// Block 0x104, offset 0x4100\n\t0x4100: 0x43171420, 0x4101: 0x431a1020, 0x4102: 0x431e7020, 0x4103: 0x4320e420,\n\t0x4104: 0x43233220, 0x4105: 0x4324ec20, 0x4106: 0x432cf820, 0x4107: 0x432dc620,\n\t0x4108: 0x432eac20, 0x4109: 0x432fb620, 0x410a: 0x432ffe20, 0x410b: 0x43301620,\n\t0x410c: 0x43307620, 0x410d: 0x43362420, 0x410e: 0x433f3820, 0x410f: 0x48509420,\n\t0x4110: 0x48508820, 0x4111: 0x4867aa20, 0x4112: 0x44773a20, 0x4113: 0x44803020,\n\t0x4114: 0x44807220, 0x4115: 0x48a49220, 0x4116: 0x48b9a020, 0x4117: 0x48fda620,\n\t0x4118: 0x433e8620, 0x4119: 0x433f1c20,\n\t// Block 0x105, offset 0x4140\n\t0x4140: 0xf0000404, 0x4141: 0xf0000404, 0x4142: 0xf0000404, 0x4143: 0xe0000b99,\n\t0x4144: 0xe0000b9d, 0x4145: 0xe0000f83, 0x4146: 0xf0000404,\n\t0x4153: 0xf0000404,\n\t0x4154: 0xf0000404, 0x4155: 0xf0000404, 0x4156: 0xf0000404, 0x4157: 0xf0000404,\n\t0x415d: 0xe000150b, 0x415e: 0xa1a09602, 0x415f: 0xe0001514,\n\t0x4160: 0x0038ae85, 0x4161: 0x00389085, 0x4162: 0x00389685, 0x4163: 0x00389885,\n\t0x4164: 0x0038a485, 0x4165: 0x0038a685, 0x4166: 0x0038a885, 0x4167: 0x0038b685,\n\t0x4168: 0x0038ba85, 0x4169: 0x00093885, 0x416a: 0xe0001542, 0x416b: 0xe000153f,\n\t0x416c: 0xe000154c, 0x416d: 0xe0001548, 0x416e: 0xe00014e1, 0x416f: 0xe00014e4,\n\t0x4170: 0xe00014e7, 0x4171: 0xe00014ea, 0x4172: 0xe00014f0, 0x4173: 0xe00014f3,\n\t0x4174: 0xe00014f6, 0x4175: 0xe00014fc, 0x4176: 0xe0001505,\n\t0x4178: 0xe0001508, 0x4179: 0xe000150e, 0x417a: 0xe000151b, 0x417b: 0xe0001518,\n\t0x417c: 0xe0001521, 0x417e: 0xe0001524,\n\t// Block 0x106, offset 0x4180\n\t0x4180: 0xe0001527, 0x4181: 0xe000152a, 0x4183: 0xe0001530,\n\t0x4184: 0xe000152d, 0x4186: 0xe0001536, 0x4187: 0xe0001539,\n\t0x4188: 0xe000153c, 0x4189: 0xe0001545, 0x418a: 0xe0001550, 0x418b: 0xe00014f9,\n\t0x418c: 0xe00014ed, 0x418d: 0xe000151e, 0x418e: 0xe0001533, 0x418f: 0xf0000404,\n\t0x4190: 0x0039249a, 0x4191: 0x00392499, 0x4192: 0x00393e9a, 0x4193: 0x00393e99,\n\t0x4194: 0x00393e97, 0x4195: 0x00393e98, 0x4196: 0x0039409a, 0x4197: 0x00394099,\n\t0x4198: 0x00394097, 0x4199: 0x00394098, 0x419a: 0x0039429a, 0x419b: 0x00394299,\n\t0x419c: 0x00394297, 0x419d: 0x00394298, 0x419e: 0x00395c9a, 0x419f: 0x00395c99,\n\t0x41a0: 0x00395c97, 0x41a1: 0x00395c98, 0x41a2: 0x0039629a, 0x41a3: 0x00396299,\n\t0x41a4: 0x00396297, 0x41a5: 0x00396298, 0x41a6: 0x00395a9a, 0x41a7: 0x00395a99,\n\t0x41a8: 0x00395a97, 0x41a9: 0x00395a98, 0x41aa: 0x003a049a, 0x41ab: 0x003a0499,\n\t0x41ac: 0x003a0497, 0x41ad: 0x003a0498, 0x41ae: 0x003a0a9a, 0x41af: 0x003a0a99,\n\t0x41b0: 0x003a0a97, 0x41b1: 0x003a0a98, 0x41b2: 0x0039689a, 0x41b3: 0x00396899,\n\t0x41b4: 0x00396897, 0x41b5: 0x00396898, 0x41b6: 0x0039669a, 0x41b7: 0x00396699,\n\t0x41b8: 0x00396697, 0x41b9: 0x00396698, 0x41ba: 0x00396a9a, 0x41bb: 0x00396a99,\n\t0x41bc: 0x00396a97, 0x41bd: 0x00396a98, 0x41be: 0x00396e9a, 0x41bf: 0x00396e99,\n\t// Block 0x107, offset 0x41c0\n\t0x41c0: 0x00396e97, 0x41c1: 0x00396e98, 0x41c2: 0x0039969a, 0x41c3: 0x00399699,\n\t0x41c4: 0x0039949a, 0x41c5: 0x00399499, 0x41c6: 0x0039989a, 0x41c7: 0x00399899,\n\t0x41c8: 0x00398c9a, 0x41c9: 0x00398c99, 0x41ca: 0x0039b69a, 0x41cb: 0x0039b699,\n\t0x41cc: 0x0039a89a, 0x41cd: 0x0039a899, 0x41ce: 0x003a1c9a, 0x41cf: 0x003a1c99,\n\t0x41d0: 0x003a1c97, 0x41d1: 0x003a1c98, 0x41d2: 0x003a2a9a, 0x41d3: 0x003a2a99,\n\t0x41d4: 0x003a2a97, 0x41d5: 0x003a2a98, 0x41d6: 0x003a329a, 0x41d7: 0x003a3299,\n\t0x41d8: 0x003a3297, 0x41d9: 0x003a3298, 0x41da: 0x003a2e9a, 0x41db: 0x003a2e99,\n\t0x41dc: 0x003a2e97, 0x41dd: 0x003a2e98, 0x41de: 0x003a589a, 0x41df: 0x003a5899,\n\t0x41e0: 0x003a5a9a, 0x41e1: 0x003a5a99, 0x41e2: 0x003a5a97, 0x41e3: 0x003a5a98,\n\t0x41e4: 0xf0001a1a, 0x41e5: 0xf0001919, 0x41e6: 0x003a6c9a, 0x41e7: 0x003a6c99,\n\t0x41e8: 0x003a6c97, 0x41e9: 0x003a6c98, 0x41ea: 0x003a6a9a, 0x41eb: 0x003a6a99,\n\t0x41ec: 0x003a6a97, 0x41ed: 0x003a6a98, 0x41ee: 0x003aaa9a, 0x41ef: 0x003aaa99,\n\t0x41f0: 0xf0001a1a, 0x41f1: 0xf0001919, 0x41f2: 0x40071820, 0x41f3: 0x40071a20,\n\t0x41f4: 0x40071c20, 0x41f5: 0x40071e20, 0x41f6: 0x40072020, 0x41f7: 0x40072220,\n\t0x41f8: 0x40072420, 0x41f9: 0x40072620, 0x41fa: 0x40072820, 0x41fb: 0x40072a20,\n\t0x41fc: 0x40072c20, 0x41fd: 0x40072e20, 0x41fe: 0x40073020, 0x41ff: 0x40073220,\n\t// Block 0x108, offset 0x4200\n\t0x4200: 0x40073420, 0x4201: 0x40073620,\n\t0x4213: 0x003a269a,\n\t0x4214: 0x003a2699, 0x4215: 0x003a2697, 0x4216: 0x003a2698, 0x4217: 0x003a7c9a,\n\t0x4218: 0x003a7c99, 0x4219: 0x003a7a9a, 0x421a: 0x003a7a99, 0x421b: 0x003a7e9a,\n\t0x421c: 0x003a7e99, 0x421d: 0xf0001a1a, 0x421e: 0x003a849a, 0x421f: 0x003a8499,\n\t0x4220: 0x003a789a, 0x4221: 0x003a7899, 0x4222: 0x003a809a, 0x4223: 0x003a8099,\n\t0x4224: 0x003a989a, 0x4225: 0x003a9899, 0x4226: 0x003a9897, 0x4227: 0x003a9898,\n\t0x4228: 0x003a8e97, 0x4229: 0x003a8e98, 0x422a: 0xe0001559, 0x422b: 0xe0001556,\n\t0x422c: 0xe0001589, 0x422d: 0xe0001586, 0x422e: 0xe000158f, 0x422f: 0xe000158c,\n\t0x4230: 0xe000159b, 0x4231: 0xe0001598, 0x4232: 0xe0001595, 0x4233: 0xe0001592,\n\t0x4234: 0xe00015a1, 0x4235: 0xe000159e, 0x4236: 0xe00015bf, 0x4237: 0xe00015bc,\n\t0x4238: 0xe00015b9, 0x4239: 0xe00015ad, 0x423a: 0xe00015a7, 0x423b: 0xe00015a4,\n\t0x423c: 0x003a929a, 0x423d: 0x003a9299, 0x423e: 0x003a9297, 0x423f: 0x003a9298,\n\t// Block 0x109, offset 0x4240\n\t0x4240: 0xe000155f, 0x4241: 0xe0001565, 0x4242: 0xe000157a, 0x4243: 0xe00015b0,\n\t0x4244: 0xe00015b6, 0x4245: 0xf0001a1a, 0x4246: 0xf0001a1a, 0x4247: 0xf0001a1a,\n\t0x4248: 0xf0001a1a, 0x4249: 0xf0001a1a, 0x424a: 0xf0001a1a, 0x424b: 0xf0001a1a,\n\t0x424c: 0xf0001a1a, 0x424d: 0xf0001a1a, 0x424e: 0xf0001a1a, 0x424f: 0xf0001a1a,\n\t0x4250: 0xf0001a1a, 0x4251: 0xf0001a1a, 0x4252: 0xf0001a1a, 0x4253: 0xf0001a1a,\n\t0x4254: 0xf0001a1a, 0x4255: 0xf0001a1a, 0x4256: 0xf0001a1a, 0x4257: 0xf0001a1a,\n\t0x4258: 0xf0001a1a, 0x4259: 0xf0001a1a, 0x425a: 0xf0001a1a, 0x425b: 0xf0001a1a,\n\t0x425c: 0xf0001a1a, 0x425d: 0xf0001a1a, 0x425e: 0xf0001a1a, 0x425f: 0xf0001a1a,\n\t0x4260: 0xf0001a1a, 0x4261: 0xf0001a1a, 0x4262: 0xf0001a1a, 0x4263: 0xf0001a1a,\n\t0x4264: 0xf0001a1a, 0x4265: 0xf0001a1a, 0x4266: 0xf0001a1a, 0x4267: 0xf0001a1a,\n\t0x4268: 0xf0001a1a, 0x4269: 0xf0001a1a, 0x426a: 0xf0001a1a, 0x426b: 0xf0001a1a,\n\t0x426c: 0xf0001a1a, 0x426d: 0xf0001a1a, 0x426e: 0xf0001a1a, 0x426f: 0xf0001a1a,\n\t0x4270: 0xf0001a1a, 0x4271: 0xf0001a1a, 0x4272: 0xf0001a1a, 0x4273: 0xf0001a1a,\n\t0x4274: 0xf0001a1a, 0x4275: 0xf0001a1a, 0x4276: 0xf0001a1a, 0x4277: 0xf0001a1a,\n\t0x4278: 0xf0001a1a, 0x4279: 0xf0001a1a, 0x427a: 0xf0001a1a, 0x427b: 0xf0001a1a,\n\t0x427c: 0xf0001a1a, 0x427d: 0xf0001a1a, 0x427e: 0xf0001a1a, 0x427f: 0xf0001a1a,\n\t// Block 0x10a, offset 0x4280\n\t0x4280: 0xf0001a1a, 0x4281: 0xf0001a1a, 0x4282: 0xf0001a1a, 0x4283: 0xf0001a1a,\n\t0x4284: 0xf0001a1a, 0x4285: 0xf0001a1a, 0x4286: 0xf0001a1a, 0x4287: 0xf0001a1a,\n\t0x4288: 0xf0001a1a, 0x4289: 0xf0001a1a, 0x428a: 0xf0001a1a, 0x428b: 0xf0001a1a,\n\t0x428c: 0xf0001a1a, 0x428d: 0xf0001a1a, 0x428e: 0xf0001a1a, 0x428f: 0xf0001a1a,\n\t0x4290: 0xf0001a1a, 0x4291: 0xf0001a1a, 0x4292: 0xf0001a1a, 0x4293: 0xf0001a1a,\n\t0x4294: 0xf0001a1a, 0x4295: 0xf0001a1a, 0x4296: 0xf0001a1a, 0x4297: 0xf0001a1a,\n\t0x4298: 0xf0001a1a, 0x4299: 0xf0001a1a, 0x429a: 0xf0001a1a, 0x429b: 0xf0001a1a,\n\t0x429c: 0xf0001a1a, 0x429d: 0xf0001a1a, 0x429e: 0xe0000003, 0x429f: 0xe0000006,\n\t0x42a0: 0xe0000009, 0x42a1: 0xe000000c, 0x42a2: 0xe000000f, 0x42a3: 0xe0000012,\n\t0x42a4: 0xe000156b, 0x42a5: 0xe000156e, 0x42a6: 0xe0001577, 0x42a7: 0xe000157d,\n\t0x42a8: 0xe00015aa, 0x42a9: 0xe00015b3, 0x42aa: 0xf0001919, 0x42ab: 0xf0001919,\n\t0x42ac: 0xf0001919, 0x42ad: 0xf0001919, 0x42ae: 0xf0001919, 0x42af: 0xf0001919,\n\t0x42b0: 0xf0001919, 0x42b1: 0xf0001919, 0x42b2: 0xf0001919, 0x42b3: 0xf0001919,\n\t0x42b4: 0xf0001919, 0x42b5: 0xf0001919, 0x42b6: 0xf0001919, 0x42b7: 0xf0001919,\n\t0x42b8: 0xf0001919, 0x42b9: 0xf0001919, 0x42ba: 0xf0001919, 0x42bb: 0xf0001919,\n\t0x42bc: 0xf0001919, 0x42bd: 0xf0001919, 0x42be: 0xf0001919, 0x42bf: 0xf0001919,\n\t// Block 0x10b, offset 0x42c0\n\t0x42c0: 0xf0001919, 0x42c1: 0xf0001919, 0x42c2: 0xf0001919, 0x42c3: 0xf0001919,\n\t0x42c4: 0xf0001919, 0x42c5: 0xf0001919, 0x42c6: 0xf0001919, 0x42c7: 0xf0001919,\n\t0x42c8: 0xf0001919, 0x42c9: 0xf0001919, 0x42ca: 0xf0001919, 0x42cb: 0xf0001919,\n\t0x42cc: 0xf0001919, 0x42cd: 0xf0001919, 0x42ce: 0xf0001919, 0x42cf: 0xf0001919,\n\t0x42d0: 0xf0001919, 0x42d1: 0xf0001919, 0x42d2: 0xf0001919, 0x42d3: 0xf0001919,\n\t0x42d4: 0xf0001919, 0x42d5: 0xf0001919, 0x42d6: 0xf0001919, 0x42d7: 0xe000155c,\n\t0x42d8: 0xe0001562, 0x42d9: 0xe0001568, 0x42da: 0xe0001571, 0x42db: 0xe0001580,\n\t0x42dc: 0xf0001717, 0x42dd: 0xf0001717, 0x42de: 0xf0001717, 0x42df: 0xf0001717,\n\t0x42e0: 0xf0001717, 0x42e1: 0xf0001717, 0x42e2: 0xf0001717, 0x42e3: 0xf0001717,\n\t0x42e4: 0xf0001717, 0x42e5: 0xf0001717, 0x42e6: 0xf0001717, 0x42e7: 0xf0001717,\n\t0x42e8: 0xf0001717, 0x42e9: 0xf0001717, 0x42ea: 0xf0001717, 0x42eb: 0xf0001717,\n\t0x42ec: 0xf0001717, 0x42ed: 0xf0001717, 0x42ee: 0xf0001717, 0x42ef: 0xf0001717,\n\t0x42f0: 0xf0001717, 0x42f1: 0xf0001717, 0x42f2: 0xf0001717, 0x42f3: 0xf0001717,\n\t0x42f4: 0xf0001717, 0x42f5: 0xf0001717, 0x42f6: 0xf0001717, 0x42f7: 0xf0001717,\n\t0x42f8: 0xf0001717, 0x42f9: 0xf0001717, 0x42fa: 0xf0001717, 0x42fb: 0xf0001717,\n\t0x42fc: 0xf0001717, 0x42fd: 0xf0001717, 0x42fe: 0xf0001717, 0x42ff: 0xf0001717,\n\t// Block 0x10c, offset 0x4300\n\t0x4300: 0xf0001717, 0x4301: 0xf0001717, 0x4302: 0xf0001717, 0x4303: 0xf0001717,\n\t0x4304: 0xf0001717, 0x4305: 0xf0001717, 0x4306: 0xf0001717, 0x4307: 0xf0001717,\n\t0x4308: 0xf0001717, 0x4309: 0xf0001717, 0x430a: 0xf0001717, 0x430b: 0xf0001717,\n\t0x430c: 0xf0001717, 0x430d: 0xf0001717, 0x430e: 0xf0001717, 0x430f: 0xf0001717,\n\t0x4310: 0xf0001717, 0x4311: 0xf0001717, 0x4312: 0xf0001717, 0x4313: 0xf0001717,\n\t0x4314: 0xf0001717, 0x4315: 0xf0001717, 0x4316: 0xf0001717, 0x4317: 0xf0001717,\n\t0x4318: 0xf0001717, 0x4319: 0xf0001717, 0x431a: 0xf0001717, 0x431b: 0xf0001717,\n\t0x431c: 0xf0001717, 0x431d: 0xf0001717, 0x431e: 0xf0001717, 0x431f: 0xe0001574,\n\t0x4320: 0xe0001583, 0x4321: 0xf0001818, 0x4322: 0xf0001818, 0x4323: 0xf0001818,\n\t0x4324: 0xf0001818, 0x4325: 0xf0001818, 0x4326: 0xf0001818, 0x4327: 0xf0001818,\n\t0x4328: 0xf0001818, 0x4329: 0xf0001818, 0x432a: 0xf0001818, 0x432b: 0xf0001818,\n\t0x432c: 0xf0001818, 0x432d: 0xf0001818, 0x432e: 0xf0001818, 0x432f: 0xf0001818,\n\t0x4330: 0xf0001818, 0x4331: 0xf0001818, 0x4332: 0xf0001818, 0x4333: 0xf0001818,\n\t0x4334: 0xf0001818, 0x4335: 0xf0001a1a, 0x4336: 0xf0001a1a, 0x4337: 0xf0001a1a,\n\t0x4338: 0xf0001a1a, 0x4339: 0xf0001a1a, 0x433a: 0xf0001a1a, 0x433b: 0xf0001a1a,\n\t0x433c: 0xf0001a1a, 0x433d: 0xf0001a1a, 0x433e: 0xf0001a1a, 0x433f: 0xf0001a1a,\n\t// Block 0x10d, offset 0x4340\n\t0x4340: 0xf0001a1a, 0x4341: 0xf0001a1a, 0x4342: 0xf0001a1a, 0x4343: 0xf0001a1a,\n\t0x4344: 0xf0001a1a, 0x4345: 0xf0001a1a, 0x4346: 0xf0001a1a, 0x4347: 0xf0001a1a,\n\t0x4348: 0xf0001a1a, 0x4349: 0xf0001a1a, 0x434a: 0xf0001a1a, 0x434b: 0xf0001a1a,\n\t0x434c: 0xf0001a1a, 0x434d: 0xf0001a1a, 0x434e: 0xf0001a1a, 0x434f: 0xf0001a1a,\n\t0x4350: 0xf0001a1a, 0x4351: 0xf0001919, 0x4352: 0xf0001919, 0x4353: 0xf0001919,\n\t0x4354: 0xf0001919, 0x4355: 0xf0001919, 0x4356: 0xf0001919, 0x4357: 0xf0001919,\n\t0x4358: 0xf0001919, 0x4359: 0xf0001919, 0x435a: 0xf0001919, 0x435b: 0xf0001919,\n\t0x435c: 0xf0001919, 0x435d: 0xf0001919, 0x435e: 0xf0001919, 0x435f: 0xf0001919,\n\t0x4360: 0xf0001919, 0x4361: 0xf0001919, 0x4362: 0xf0001919, 0x4363: 0xf0001919,\n\t0x4364: 0xf0001919, 0x4365: 0xf0001919, 0x4366: 0xf0001919, 0x4367: 0xf0001919,\n\t0x4368: 0xf0001919, 0x4369: 0xf0001919, 0x436a: 0xf0001919, 0x436b: 0xf0001919,\n\t0x436c: 0xf0001919, 0x436d: 0xf0001717, 0x436e: 0xf0001717, 0x436f: 0xf0001717,\n\t0x4370: 0xf0001717, 0x4371: 0xf0001717, 0x4372: 0xf0001717, 0x4373: 0xf0001717,\n\t0x4374: 0xf0001818, 0x4375: 0xf0001818, 0x4376: 0xf0001818, 0x4377: 0xf0001818,\n\t0x4378: 0xf0001818, 0x4379: 0xf0001818, 0x437a: 0xf0001818, 0x437b: 0xf0001818,\n\t0x437c: 0xf0001919, 0x437d: 0xf0001a1a, 0x437e: 0x4004c020, 0x437f: 0x4004c220,\n\t// Block 0x10e, offset 0x4380\n\t0x4390: 0xe00015d4, 0x4391: 0xe00015e4, 0x4392: 0xe00015e0, 0x4393: 0xe00015e8,\n\t0x4394: 0xe00015ec, 0x4395: 0xe00015f8, 0x4396: 0xe00015fc, 0x4397: 0xe0001600,\n\t0x4398: 0xe0001621, 0x4399: 0xe000161d, 0x439a: 0xe0001635, 0x439b: 0xe0001631,\n\t0x439c: 0xe0001646, 0x439d: 0xe000163e, 0x439e: 0xe0001642, 0x439f: 0xe000165a,\n\t0x43a0: 0xe0001656, 0x43a1: 0xe0001652, 0x43a2: 0xe0001662, 0x43a3: 0xe000165e,\n\t0x43a4: 0xe000168a, 0x43a5: 0xe0001686, 0x43a6: 0xe00016b6, 0x43a7: 0xe000166e,\n\t0x43a8: 0xe000166a, 0x43a9: 0xe0001666, 0x43aa: 0xe000167a, 0x43ab: 0xe0001676,\n\t0x43ac: 0xe0001682, 0x43ad: 0xe000167e, 0x43ae: 0xe00016ba, 0x43af: 0xe00016c6,\n\t0x43b0: 0xe00016c2, 0x43b1: 0xe00016ce, 0x43b2: 0xe00016ca, 0x43b3: 0xe00016d2,\n\t0x43b4: 0xe00016d6, 0x43b5: 0xe00016de, 0x43b6: 0xe00016eb, 0x43b7: 0xe00016e7,\n\t0x43b8: 0xe00016ef, 0x43b9: 0xe00016f7, 0x43ba: 0xe00016ff, 0x43bb: 0xe00016fb,\n\t0x43bc: 0xe0001707, 0x43bd: 0xe0001703, 0x43be: 0xe0001717, 0x43bf: 0xe000171b,\n\t// Block 0x10f, offset 0x43c0\n\t0x43c0: 0xe0001759, 0x43c1: 0xe0001761, 0x43c2: 0xe000175d, 0x43c3: 0xe0001741,\n\t0x43c4: 0xe0001745, 0x43c5: 0xe0001769, 0x43c6: 0xe0001765, 0x43c7: 0xe0001771,\n\t0x43c8: 0xe000176d, 0x43c9: 0xe000178c, 0x43ca: 0xe0001790, 0x43cb: 0xe0001799,\n\t0x43cc: 0xe000177c, 0x43cd: 0xe0001784, 0x43ce: 0xe000179d, 0x43cf: 0xe00017a1,\n\t0x43d2: 0xe0001780, 0x43d3: 0xe00017d9,\n\t0x43d4: 0xe00017dd, 0x43d5: 0xe00017c5, 0x43d6: 0xe00017c9, 0x43d7: 0xe00017b9,\n\t0x43d8: 0xe00017b5, 0x43d9: 0xe00017bd, 0x43da: 0xe00017d5, 0x43db: 0xe00017d1,\n\t0x43dc: 0xe00017f8, 0x43dd: 0xe00017f4, 0x43de: 0xe00015d0, 0x43df: 0xe00015dc,\n\t0x43e0: 0xe00015d8, 0x43e1: 0xe00015f4, 0x43e2: 0xe00015f0, 0x43e3: 0xe0001608,\n\t0x43e4: 0xe0001604, 0x43e5: 0xe0001629, 0x43e6: 0xe000160c, 0x43e7: 0xe0001625,\n\t0x43e8: 0xe000164a, 0x43e9: 0xe000168e, 0x43ea: 0xe0001672, 0x43eb: 0xe00016be,\n\t0x43ec: 0xe0001751, 0x43ed: 0xe0001775, 0x43ee: 0xe00017f0, 0x43ef: 0xe00017ec,\n\t0x43f0: 0xe00017fc, 0x43f1: 0xe00017a9, 0x43f2: 0xe000171f, 0x43f3: 0xe00017cd,\n\t0x43f4: 0xe0001713, 0x43f5: 0xe0001755, 0x43f6: 0xe00016f3, 0x43f7: 0xe000172b,\n\t0x43f8: 0xe00017ad, 0x43f9: 0xe00017a5, 0x43fa: 0xe0001749, 0x43fb: 0xe0001727,\n\t0x43fc: 0xe000174d, 0x43fd: 0xe00017b1, 0x43fe: 0xe0001610, 0x43ff: 0xe000162d,\n\t// Block 0x110, offset 0x4400\n\t0x4400: 0xe0001788, 0x4401: 0xe000170b, 0x4402: 0xe00015cc, 0x4403: 0xe0001723,\n\t0x4404: 0xe00016da, 0x4405: 0xe00016b2, 0x4406: 0xe000164e, 0x4407: 0xe00017c1,\n\t0x4430: 0xe00016ae, 0x4431: 0xe000170f, 0x4432: 0xe00015c7, 0x4433: 0xe00015c2,\n\t0x4434: 0xe0001794, 0x4435: 0xe0001692, 0x4436: 0xe0001639, 0x4437: 0xe00016e2,\n\t0x4438: 0xe00017e7, 0x4439: 0xe0001697, 0x443a: 0xe000169b, 0x443b: 0xe0001614,\n\t0x443c: 0x40282e20, 0x443d: 0x40071620,\n\t// Block 0x111, offset 0x4440\n\t0x4440: 0xa0000000, 0x4441: 0xa0000000, 0x4442: 0xa0000000, 0x4443: 0xa0000000,\n\t0x4444: 0xa0000000, 0x4445: 0xa0000000, 0x4446: 0xa0000000, 0x4447: 0xa0000000,\n\t0x4448: 0xa0000000, 0x4449: 0xa0000000, 0x444a: 0xa0000000, 0x444b: 0xa0000000,\n\t0x444c: 0xa0000000, 0x444d: 0xa0000000, 0x444e: 0xa0000000, 0x444f: 0xa0000000,\n\t0x4450: 0x00024096, 0x4451: 0x00025c96, 0x4452: 0x00030496, 0x4453: 0x00026c96,\n\t0x4454: 0x00026296, 0x4455: 0x0002ba96, 0x4456: 0x0002c496, 0x4457: 0x0004b496,\n\t0x4458: 0x0004b696, 0x4459: 0xf0001616,\n\t0x4460: 0xae608202, 0x4461: 0xae600000, 0x4462: 0xae608102, 0x4463: 0xae600000,\n\t0x4464: 0xae600000, 0x4465: 0xae600000, 0x4466: 0xae600000,\n\t0x4470: 0xf0001f16, 0x4471: 0x00022c96, 0x4472: 0x00022a96, 0x4473: 0x00021696,\n\t0x4474: 0x00021696, 0x4475: 0x0003f496, 0x4476: 0x0003f696, 0x4477: 0x0003fc96,\n\t0x4478: 0x0003fe96, 0x4479: 0x0004b096, 0x447a: 0x0004b296, 0x447b: 0x0004ac96,\n\t0x447c: 0x0004ae96, 0x447d: 0x0004a096, 0x447e: 0x0004a296, 0x447f: 0x00049c96,\n\t// Block 0x112, offset 0x4480\n\t0x4480: 0x00049e96, 0x4481: 0x0004a496, 0x4482: 0x0004a696, 0x4483: 0x0004a896,\n\t0x4484: 0x0004aa96, 0x4485: 0x40025e20, 0x4486: 0x40026020, 0x4487: 0x0003f896,\n\t0x4488: 0x0003fa96, 0x4489: 0x00021484, 0x448a: 0x00021484, 0x448b: 0x00021484,\n\t0x448c: 0x00021484, 0x448d: 0x00021684, 0x448e: 0x00021684, 0x448f: 0x00021684,\n\t0x4490: 0x0002408f, 0x4491: 0x00025c8f, 0x4492: 0x0002e48f,\n\t0x4494: 0x0002628f, 0x4495: 0x00026c8f, 0x4496: 0x0002c48f, 0x4497: 0x0002ba8f,\n\t0x4498: 0x00022c8f, 0x4499: 0x0003f48f, 0x449a: 0x0003f68f, 0x449b: 0x0003fc8f,\n\t0x449c: 0x0003fe8f, 0x449d: 0x0004b08f, 0x449e: 0x0004b28f, 0x449f: 0x0004ea8f,\n\t0x44a0: 0x0004e68f, 0x44a1: 0x0004d88f, 0x44a2: 0x0009388f, 0x44a3: 0x00021a8f,\n\t0x44a4: 0x0009408f, 0x44a5: 0x0009448f, 0x44a6: 0x0009428f,\n\t0x44a8: 0x0004e48f, 0x44a9: 0x0027de8f, 0x44aa: 0x0004ec8f, 0x44ab: 0x0004d68f,\n\t0x44b0: 0xa000a21a, 0x44b1: 0xa000a218, 0x44b2: 0xa000a51a, 0x44b3: 0xa0000000,\n\t0x44b4: 0xa000a91a, 0x44b6: 0xa000ad1a, 0x44b7: 0xa000ad18,\n\t0x44b8: 0xa000b21a, 0x44b9: 0xa000b218, 0x44ba: 0xa000b61a, 0x44bb: 0xa000b618,\n\t0x44bc: 0xa000ba1a, 0x44bd: 0xa000ba18, 0x44be: 0xa000bc1a, 0x44bf: 0xa000bc18,\n\t// Block 0x113, offset 0x44c0\n\t0x44c0: 0x00391c9a, 0x44c1: 0x00391e9a, 0x44c2: 0x00391e99, 0x44c3: 0x0039209a,\n\t0x44c4: 0x00392099, 0x44c5: 0x0039269a, 0x44c6: 0x00392699, 0x44c7: 0x0039289a,\n\t0x44c8: 0x00392899, 0x44c9: 0x0039309a, 0x44ca: 0x00393099, 0x44cb: 0x00393097,\n\t0x44cc: 0x00393098, 0x44cd: 0x0039389a, 0x44ce: 0x00393899, 0x44cf: 0x00393c9a,\n\t0x44d0: 0x00393c99, 0x44d1: 0x00393c97, 0x44d2: 0x00393c98, 0x44d3: 0x0039549a,\n\t0x44d4: 0x00395499, 0x44d5: 0x0039569a, 0x44d6: 0x00395699, 0x44d7: 0x00395697,\n\t0x44d8: 0x00395698, 0x44d9: 0x0039589a, 0x44da: 0x00395899, 0x44db: 0x00395897,\n\t0x44dc: 0x00395898, 0x44dd: 0x0039649a, 0x44de: 0x00396499, 0x44df: 0x00396497,\n\t0x44e0: 0x00396498, 0x44e1: 0x0039729a, 0x44e2: 0x00397299, 0x44e3: 0x00397297,\n\t0x44e4: 0x00397298, 0x44e5: 0x0039749a, 0x44e6: 0x00397499, 0x44e7: 0x00397497,\n\t0x44e8: 0x00397498, 0x44e9: 0x0039889a, 0x44ea: 0x00398899, 0x44eb: 0x00398a9a,\n\t0x44ec: 0x00398a99, 0x44ed: 0x0039a49a, 0x44ee: 0x0039a499, 0x44ef: 0x0039a69a,\n\t0x44f0: 0x0039a699, 0x44f1: 0x0039c69a, 0x44f2: 0x0039c699, 0x44f3: 0x0039c697,\n\t0x44f4: 0x0039c698, 0x44f5: 0x0039c89a, 0x44f6: 0x0039c899, 0x44f7: 0x0039c897,\n\t0x44f8: 0x0039c898, 0x44f9: 0x0039dc9a, 0x44fa: 0x0039dc99, 0x44fb: 0x0039dc97,\n\t0x44fc: 0x0039dc98, 0x44fd: 0x0039de9a, 0x44fe: 0x0039de99, 0x44ff: 0x0039de97,\n\t// Block 0x114, offset 0x4500\n\t0x4500: 0x0039de98, 0x4501: 0x0039e69a, 0x4502: 0x0039e699, 0x4503: 0x0039e697,\n\t0x4504: 0x0039e698, 0x4505: 0x0039e89a, 0x4506: 0x0039e899, 0x4507: 0x0039e897,\n\t0x4508: 0x0039e898, 0x4509: 0x0039ee9a, 0x450a: 0x0039ee99, 0x450b: 0x0039ee97,\n\t0x450c: 0x0039ee98, 0x450d: 0x0039f09a, 0x450e: 0x0039f099, 0x450f: 0x0039f097,\n\t0x4510: 0x0039f098, 0x4511: 0x0039fc9a, 0x4512: 0x0039fc99, 0x4513: 0x0039fc97,\n\t0x4514: 0x0039fc98, 0x4515: 0x003a129a, 0x4516: 0x003a1299, 0x4517: 0x003a1297,\n\t0x4518: 0x003a1298, 0x4519: 0x003a1a9a, 0x451a: 0x003a1a99, 0x451b: 0x003a1a97,\n\t0x451c: 0x003a1a98, 0x451d: 0x003a409a, 0x451e: 0x003a4099, 0x451f: 0x003a4097,\n\t0x4520: 0x003a4098, 0x4521: 0x003a4e9a, 0x4522: 0x003a4e99, 0x4523: 0x003a4e97,\n\t0x4524: 0x003a4e98, 0x4525: 0x003a569a, 0x4526: 0x003a5699, 0x4527: 0x003a5697,\n\t0x4528: 0x003a5698, 0x4529: 0x003a689a, 0x452a: 0x003a6899, 0x452b: 0x003a6897,\n\t0x452c: 0x003a6898, 0x452d: 0x003a749a, 0x452e: 0x003a7499, 0x452f: 0x003a8e9a,\n\t0x4530: 0x003a8e99, 0x4531: 0x003a909a, 0x4532: 0x003a9099, 0x4533: 0x003a9097,\n\t0x4534: 0x003a9098, 0x4535: 0xe0001732, 0x4536: 0xe000172f, 0x4537: 0xe0001738,\n\t0x4538: 0xe0001735, 0x4539: 0xe000173e, 0x453a: 0xe000173b, 0x453b: 0xf0001a1a,\n\t0x453c: 0xf0001919, 0x453f: 0xa0000000,\n\t// Block 0x115, offset 0x4540\n\t0x4541: 0x0002ba83, 0x4542: 0x0003e083, 0x4543: 0x0004ea83,\n\t0x4544: 0x0027de83, 0x4545: 0x0004ec83, 0x4546: 0x0004e683, 0x4547: 0x0003d283,\n\t0x4548: 0x0003f483, 0x4549: 0x0003f683, 0x454a: 0x0004d883, 0x454b: 0x00093883,\n\t0x454c: 0x00024083, 0x454d: 0x00021a83, 0x454e: 0x0002e483, 0x454f: 0x0004e283,\n\t0x4550: 0x0029cc83, 0x4551: 0x0029ce83, 0x4552: 0x0029d083, 0x4553: 0x0029d283,\n\t0x4554: 0x0029d483, 0x4555: 0x0029d683, 0x4556: 0x0029d883, 0x4557: 0x0029da83,\n\t0x4558: 0x0029dc83, 0x4559: 0x0029de83, 0x455a: 0x00026c83, 0x455b: 0x00026283,\n\t0x455c: 0x00094083, 0x455d: 0x00094283, 0x455e: 0x00094483, 0x455f: 0x0002c483,\n\t0x4560: 0x0004d683, 0x4561: 0x002bde89, 0x4562: 0x002c0a89, 0x4563: 0x002c3a89,\n\t0x4564: 0x002c6289, 0x4565: 0x002c9889, 0x4566: 0x002d0889, 0x4567: 0x002d2289,\n\t0x4568: 0x002d6889, 0x4569: 0x002d9a89, 0x456a: 0x002dcc89, 0x456b: 0x002dfe89,\n\t0x456c: 0x002e2289, 0x456d: 0x002e8289, 0x456e: 0x002e9e89, 0x456f: 0x002ee289,\n\t0x4570: 0x002f2c89, 0x4571: 0x002f5689, 0x4572: 0x002f7a89, 0x4573: 0x002fe689,\n\t0x4574: 0x00302c89, 0x4575: 0x00306c89, 0x4576: 0x0030be89, 0x4577: 0x0030e289,\n\t0x4578: 0x0030f689, 0x4579: 0x00310089, 0x457a: 0x00312a89, 0x457b: 0x0003f883,\n\t0x457c: 0x0004e483, 0x457d: 0x0003fa83, 0x457e: 0x00062483, 0x457f: 0x00021683,\n\t// Block 0x116, offset 0x4580\n\t0x4580: 0x00061e83, 0x4581: 0x002bde83, 0x4582: 0x002c0a83, 0x4583: 0x002c3a83,\n\t0x4584: 0x002c6283, 0x4585: 0x002c9883, 0x4586: 0x002d0883, 0x4587: 0x002d2283,\n\t0x4588: 0x002d6883, 0x4589: 0x002d9a83, 0x458a: 0x002dcc83, 0x458b: 0x002dfe83,\n\t0x458c: 0x002e2283, 0x458d: 0x002e8283, 0x458e: 0x002e9e83, 0x458f: 0x002ee283,\n\t0x4590: 0x002f2c83, 0x4591: 0x002f5683, 0x4592: 0x002f7a83, 0x4593: 0x002fe683,\n\t0x4594: 0x00302c83, 0x4595: 0x00306c83, 0x4596: 0x0030be83, 0x4597: 0x0030e283,\n\t0x4598: 0x0030f683, 0x4599: 0x00310083, 0x459a: 0x00312a83, 0x459b: 0x0003fc83,\n\t0x459c: 0x00094883, 0x459d: 0x0003fe83, 0x459e: 0x00094c83, 0x459f: 0x00041883,\n\t0x45a0: 0x00041a83, 0x45a1: 0x00030492, 0x45a2: 0x0004a492, 0x45a3: 0x0004a692,\n\t0x45a4: 0x00025c92, 0x45a5: 0x00023e92, 0x45a6: 0x0065d692, 0x45a7: 0x00657690,\n\t0x45a8: 0x00657890, 0x45a9: 0x00657a90, 0x45aa: 0x00657e90, 0x45ab: 0x00658090,\n\t0x45ac: 0x0065be90, 0x45ad: 0x0065c090, 0x45ae: 0x0065c490, 0x45af: 0x00659a90,\n\t0x45b0: 0x0027d692, 0x45b1: 0x00657692, 0x45b2: 0x00657892, 0x45b3: 0x00657a92,\n\t0x45b4: 0x00657e92, 0x45b5: 0x00658092, 0x45b6: 0x00658292, 0x45b7: 0x00658492,\n\t0x45b8: 0x00658692, 0x45b9: 0x00658892, 0x45ba: 0x00658a92, 0x45bb: 0x00658c92,\n\t0x45bc: 0x00658e92, 0x45bd: 0x00659092, 0x45be: 0x00659292, 0x45bf: 0x00659492,\n\t// Block 0x117, offset 0x45c0\n\t0x45c0: 0x00659692, 0x45c1: 0x00659892, 0x45c2: 0x00659a92, 0x45c3: 0x00659c92,\n\t0x45c4: 0x00659e92, 0x45c5: 0x0065a092, 0x45c6: 0x0065a292, 0x45c7: 0x0065a492,\n\t0x45c8: 0x0065a692, 0x45c9: 0x0065a892, 0x45ca: 0x0065aa92, 0x45cb: 0x0065ac92,\n\t0x45cc: 0x0065ae92, 0x45cd: 0x0065b092, 0x45ce: 0x0065b292, 0x45cf: 0x0065b492,\n\t0x45d0: 0x0065b692, 0x45d1: 0x0065b892, 0x45d2: 0x0065ba92, 0x45d3: 0x0065bc92,\n\t0x45d4: 0x0065be92, 0x45d5: 0x0065c092, 0x45d6: 0x0065c492, 0x45d7: 0x0065c692,\n\t0x45d8: 0x0065c892, 0x45d9: 0x0065ca92, 0x45da: 0x0065cc92, 0x45db: 0x0065ce92,\n\t0x45dc: 0x0065d092, 0x45dd: 0x0065d892, 0x45de: 0xa0012812, 0x45df: 0xa0012912,\n\t0x45e0: 0x0063a692, 0x45e1: 0x0062ac92, 0x45e2: 0x0062ae92, 0x45e3: 0x00646892,\n\t0x45e4: 0x0062b092, 0x45e5: 0x00646c92, 0x45e6: 0x00646e92, 0x45e7: 0x0062b292,\n\t0x45e8: 0x0062b492, 0x45e9: 0x0062b692, 0x45ea: 0x00647492, 0x45eb: 0x00647692,\n\t0x45ec: 0x00647892, 0x45ed: 0x00647a92, 0x45ee: 0x00647c92, 0x45ef: 0x00647e92,\n\t0x45f0: 0x0062e092, 0x45f1: 0x0062b892, 0x45f2: 0x0062ba92, 0x45f3: 0x0062bc92,\n\t0x45f4: 0x0062ee92, 0x45f5: 0x0062be92, 0x45f6: 0x0062c092, 0x45f7: 0x0062c292,\n\t0x45f8: 0x0062c492, 0x45f9: 0x0062c692, 0x45fa: 0x0062c892, 0x45fb: 0x0062ca92,\n\t0x45fc: 0x0062cc92, 0x45fd: 0x0062ce92, 0x45fe: 0x0062d092,\n\t// Block 0x118, offset 0x4600\n\t0x4602: 0x0063a892, 0x4603: 0x0063aa92,\n\t0x4604: 0x0063ac92, 0x4605: 0x0063ae92, 0x4606: 0x0063b092, 0x4607: 0x0063b292,\n\t0x460a: 0x0063b492, 0x460b: 0x0063b692,\n\t0x460c: 0x0063b892, 0x460d: 0x0063ba92, 0x460e: 0x0063bc92, 0x460f: 0x0063be92,\n\t0x4612: 0x0063c092, 0x4613: 0x0063c292,\n\t0x4614: 0x0063c492, 0x4615: 0x0063c692, 0x4616: 0x0063c892, 0x4617: 0x0063ca92,\n\t0x461a: 0x0063cc92, 0x461b: 0x0063ce92,\n\t0x461c: 0x0063d092,\n\t0x4620: 0x0027dc83, 0x4621: 0x0027e083, 0x4622: 0x00094683, 0x4623: 0x00062683,\n\t0x4624: 0x00094a83, 0x4625: 0x0027e283, 0x4626: 0x00280883,\n\t0x4628: 0x000d3292, 0x4629: 0x00084492, 0x462a: 0x00084892, 0x462b: 0x00084692,\n\t0x462c: 0x00084a92, 0x462d: 0x000e6e92, 0x462e: 0x000ec492,\n\t0x4639: 0xa0000000, 0x463a: 0xa0000000, 0x463b: 0xa0000000,\n\t0x463c: 0x4027ae20, 0x463d: 0x4027b020, 0x463e: 0x00000285, 0x463f: 0x2bfffe85,\n\t// Block 0x119, offset 0x4640\n\t0x4640: 0x40731a20, 0x4641: 0x40731c20, 0x4642: 0x40731e20, 0x4643: 0x40732020,\n\t0x4644: 0x40732220, 0x4645: 0x40732420, 0x4646: 0x40732620, 0x4647: 0x40732820,\n\t0x4648: 0x40732a20, 0x4649: 0x40732c20, 0x464a: 0x40732e20, 0x464b: 0x40733020,\n\t0x464d: 0x40733220, 0x464e: 0x40733420, 0x464f: 0x40733620,\n\t0x4650: 0x40733820, 0x4651: 0x40733a20, 0x4652: 0x40733c20, 0x4653: 0x40733e20,\n\t0x4654: 0x40734020, 0x4655: 0x40734220, 0x4656: 0x40734420, 0x4657: 0x40734620,\n\t0x4658: 0x40734820, 0x4659: 0x40734a20, 0x465a: 0x40734c20, 0x465b: 0x40734e20,\n\t0x465c: 0x40735020, 0x465d: 0x40735220, 0x465e: 0x40735420, 0x465f: 0x40735620,\n\t0x4660: 0x40735820, 0x4661: 0x40735a20, 0x4662: 0x40735c20, 0x4663: 0x40735e20,\n\t0x4664: 0x40736020, 0x4665: 0x40736220, 0x4666: 0x40736420,\n\t0x4668: 0x40736620, 0x4669: 0x40736820, 0x466a: 0x40736a20, 0x466b: 0x40736c20,\n\t0x466c: 0x40736e20, 0x466d: 0x40737020, 0x466e: 0x40737220, 0x466f: 0x40737420,\n\t0x4670: 0x40737620, 0x4671: 0x40737820, 0x4672: 0x40737a20, 0x4673: 0x40737c20,\n\t0x4674: 0x40737e20, 0x4675: 0x40738020, 0x4676: 0x40738220, 0x4677: 0x40738420,\n\t0x4678: 0x40738620, 0x4679: 0x40738820, 0x467a: 0x40738a20,\n\t0x467c: 0x40738c20, 0x467d: 0x40738e20, 0x467f: 0x40739020,\n\t// Block 0x11a, offset 0x4680\n\t0x4680: 0x40739220, 0x4681: 0x40739420, 0x4682: 0x40739620, 0x4683: 0x40739820,\n\t0x4684: 0x40739a20, 0x4685: 0x40739c20, 0x4686: 0x40739e20, 0x4687: 0x4073a020,\n\t0x4688: 0x4073a220, 0x4689: 0x4073a420, 0x468a: 0x4073a620, 0x468b: 0x4073a820,\n\t0x468c: 0x4073aa20, 0x468d: 0x4073ac20,\n\t0x4690: 0x4073ae20, 0x4691: 0x4073b020, 0x4692: 0x4073b220, 0x4693: 0x4073b420,\n\t0x4694: 0x4073b620, 0x4695: 0x4073b820, 0x4696: 0x4073ba20, 0x4697: 0x4073bc20,\n\t0x4698: 0x4073be20, 0x4699: 0x4073c020, 0x469a: 0x4073c220, 0x469b: 0x4073c420,\n\t0x469c: 0x4073c620, 0x469d: 0x4073c820,\n\t// Block 0x11b, offset 0x46c0\n\t0x46c0: 0x4073ca20, 0x46c1: 0x4073cc20, 0x46c2: 0x4073ce20, 0x46c3: 0x4073d020,\n\t0x46c4: 0x4073d220, 0x46c5: 0x4073d420, 0x46c6: 0x4073d620, 0x46c7: 0x4073d820,\n\t0x46c8: 0x4073da20, 0x46c9: 0x4073dc20, 0x46ca: 0x4073de20, 0x46cb: 0x4073e020,\n\t0x46cc: 0x4073e220, 0x46cd: 0x4073e420, 0x46ce: 0x4073e620, 0x46cf: 0x4073e820,\n\t0x46d0: 0x4073ea20, 0x46d1: 0x4073ec20, 0x46d2: 0x4073ee20, 0x46d3: 0x4073f020,\n\t0x46d4: 0x4073f220, 0x46d5: 0x4073f420, 0x46d6: 0x4073f620, 0x46d7: 0x4073f820,\n\t0x46d8: 0x4073fa20, 0x46d9: 0x4073fc20, 0x46da: 0x4073fe20, 0x46db: 0x40740020,\n\t0x46dc: 0x40740220, 0x46dd: 0x40740420, 0x46de: 0x40740620, 0x46df: 0x40740820,\n\t0x46e0: 0x40740a20, 0x46e1: 0x40740c20, 0x46e2: 0x40740e20, 0x46e3: 0x40741020,\n\t0x46e4: 0x40741220, 0x46e5: 0x40741420, 0x46e6: 0x40741620, 0x46e7: 0x40741820,\n\t0x46e8: 0x40741a20, 0x46e9: 0x40741c20, 0x46ea: 0x40741e20, 0x46eb: 0x40742020,\n\t0x46ec: 0x40742220, 0x46ed: 0x40742420, 0x46ee: 0x40742620, 0x46ef: 0x40742820,\n\t0x46f0: 0x40742a20, 0x46f1: 0x40742c20, 0x46f2: 0x40742e20, 0x46f3: 0x40743020,\n\t0x46f4: 0x40743220, 0x46f5: 0x40743420, 0x46f6: 0x40743620, 0x46f7: 0x40743820,\n\t0x46f8: 0x40743a20, 0x46f9: 0x40743c20, 0x46fa: 0x40743e20, 0x46fb: 0x40744020,\n\t0x46fc: 0x40744220, 0x46fd: 0x40744420, 0x46fe: 0x40744620, 0x46ff: 0x40744820,\n\t// Block 0x11c, offset 0x4700\n\t0x4700: 0x40744a20, 0x4701: 0x40744c20, 0x4702: 0x40744e20, 0x4703: 0x40745020,\n\t0x4704: 0x40745220, 0x4705: 0x40745420, 0x4706: 0x40745620, 0x4707: 0x40745820,\n\t0x4708: 0x40745a20, 0x4709: 0x40745c20, 0x470a: 0x40745e20, 0x470b: 0x40746020,\n\t0x470c: 0x40746220, 0x470d: 0x40746420, 0x470e: 0x40746620, 0x470f: 0x40746820,\n\t0x4710: 0x40746a20, 0x4711: 0x40746c20, 0x4712: 0x40746e20, 0x4713: 0x40747020,\n\t0x4714: 0x40747220, 0x4715: 0x40747420, 0x4716: 0x40747620, 0x4717: 0x40747820,\n\t0x4718: 0x40747a20, 0x4719: 0x40747c20, 0x471a: 0x40747e20, 0x471b: 0x40748020,\n\t0x471c: 0x40748220, 0x471d: 0x40748420, 0x471e: 0x40748620, 0x471f: 0x40748820,\n\t0x4720: 0x40748a20, 0x4721: 0x40748c20, 0x4722: 0x40748e20, 0x4723: 0x40749020,\n\t0x4724: 0x40749220, 0x4725: 0x40749420, 0x4726: 0x40749620, 0x4727: 0x40749820,\n\t0x4728: 0x40749a20, 0x4729: 0x40749c20, 0x472a: 0x40749e20, 0x472b: 0x4074a020,\n\t0x472c: 0x4074a220, 0x472d: 0x4074a420, 0x472e: 0x4074a620, 0x472f: 0x4074a820,\n\t0x4730: 0x4074aa20, 0x4731: 0x4074ac20, 0x4732: 0x4074ae20, 0x4733: 0x4074b020,\n\t0x4734: 0x4074b220, 0x4735: 0x4074b420, 0x4736: 0x4074b620, 0x4737: 0x4074b820,\n\t0x4738: 0x4074ba20, 0x4739: 0x4074bc20, 0x473a: 0x4074be20,\n\t// Block 0x11d, offset 0x4740\n\t0x4740: 0x4003be20, 0x4741: 0x4003c020, 0x4742: 0x4003c220,\n\t0x4747: 0xe000026a,\n\t0x4748: 0xe0000382, 0x4749: 0xe000045c, 0x474a: 0xe0000531, 0x474b: 0xe00005fb,\n\t0x474c: 0xe00006c6, 0x474d: 0xe000076e, 0x474e: 0xe000081a, 0x474f: 0xe00008bf,\n\t0x4750: 0x4028ba20, 0x4751: 0x4028bc20, 0x4752: 0x4028be20, 0x4753: 0x4028c020,\n\t0x4754: 0x4028c220, 0x4755: 0x4028c420, 0x4756: 0x4028c620, 0x4757: 0x4028c820,\n\t0x4758: 0x4028ca20, 0x4759: 0x4028cc20, 0x475a: 0x4028ce20, 0x475b: 0x4028d020,\n\t0x475c: 0x4028d220, 0x475d: 0x4028d420, 0x475e: 0x4028d620, 0x475f: 0x4028d820,\n\t0x4760: 0x4028da20, 0x4761: 0x4028dc20, 0x4762: 0x4028de20, 0x4763: 0x4028e020,\n\t0x4764: 0x4028e220, 0x4765: 0x4028e420, 0x4766: 0x4028e620, 0x4767: 0x4028e820,\n\t0x4768: 0x4028ea20, 0x4769: 0x4028ec20, 0x476a: 0x4028ee20, 0x476b: 0x4028f020,\n\t0x476c: 0x4028f220, 0x476d: 0x4028f420, 0x476e: 0x4028f620, 0x476f: 0x4028f820,\n\t0x4770: 0x4028fa20, 0x4771: 0x4028fc20, 0x4772: 0x4028fe20, 0x4773: 0x40290020,\n\t0x4777: 0x401afe20,\n\t0x4778: 0x401b0020, 0x4779: 0x401b0220, 0x477a: 0x401b0420, 0x477b: 0x401b0620,\n\t0x477c: 0x401b0820, 0x477d: 0x401b0a20, 0x477e: 0x401b0c20, 0x477f: 0x401b0e20,\n\t// Block 0x11e, offset 0x4780\n\t0x4780: 0x40290220, 0x4781: 0x40290420, 0x4782: 0xe000026d, 0x4783: 0xe00005fe,\n\t0x4784: 0x40290620, 0x4785: 0x40290820, 0x4786: 0x40290a20, 0x4787: 0x40290c20,\n\t0x4788: 0xe0000601, 0x4789: 0x40290e20, 0x478a: 0x40291020, 0x478b: 0x40291220,\n\t0x478c: 0x40291420, 0x478d: 0x40291620, 0x478e: 0x40291820, 0x478f: 0xe0000604,\n\t0x4790: 0x40291a20, 0x4791: 0x40291c20, 0x4792: 0x40291e20, 0x4793: 0x40292020,\n\t0x4794: 0x40292220, 0x4795: 0x40292420, 0x4796: 0x40292620, 0x4797: 0x40292820,\n\t0x4798: 0xe0000270, 0x4799: 0xe0000273, 0x479a: 0xe0000276, 0x479b: 0xe0000385,\n\t0x479c: 0xe0000388, 0x479d: 0xe000038b, 0x479e: 0xe000038e, 0x479f: 0xe0000607,\n\t0x47a0: 0x40292a20, 0x47a1: 0x40292c20, 0x47a2: 0x40292e20, 0x47a3: 0x40293020,\n\t0x47a4: 0x40293220, 0x47a5: 0x40293420, 0x47a6: 0x40293620, 0x47a7: 0x40293820,\n\t0x47a8: 0x40293a20, 0x47a9: 0x40293c20, 0x47aa: 0x40293e20, 0x47ab: 0x40294020,\n\t0x47ac: 0x40294220, 0x47ad: 0x40294420, 0x47ae: 0x40294620, 0x47af: 0x40294820,\n\t0x47b0: 0x40294a20, 0x47b1: 0x40294c20, 0x47b2: 0x40294e20, 0x47b3: 0xe000060a,\n\t0x47b4: 0x40295020, 0x47b5: 0x40295220, 0x47b6: 0x40295420, 0x47b7: 0x40295620,\n\t0x47b8: 0x40295820, 0x47b9: 0x401b1020, 0x47ba: 0x401b1220, 0x47bb: 0x401b1420,\n\t0x47bc: 0x401b1620, 0x47bd: 0x401b1820, 0x47be: 0x401b1a20, 0x47bf: 0x401b1c20,\n\t// Block 0x11f, offset 0x47c0\n\t0x47c0: 0x401b1e20, 0x47c1: 0x401b2020, 0x47c2: 0x401b2220, 0x47c3: 0x401b2420,\n\t0x47c4: 0x401b2620, 0x47c5: 0x401b2820, 0x47c6: 0x401b2a20, 0x47c7: 0x401b2c20,\n\t0x47c8: 0x401b2e20, 0x47c9: 0x401b3020, 0x47ca: 0xe00001d6,\n\t0x47d0: 0x401b3220, 0x47d1: 0x401b3420, 0x47d2: 0x401b3620, 0x47d3: 0x401b3820,\n\t0x47d4: 0x401b3a20, 0x47d5: 0x401b3c20, 0x47d6: 0x401b3e20, 0x47d7: 0x401b4020,\n\t0x47d8: 0x401b4220, 0x47d9: 0x401b4420, 0x47da: 0x401b4620, 0x47db: 0x401b4820,\n\t// Block 0x120, offset 0x4800\n\t0x4810: 0x401b4a20, 0x4811: 0x401b4c20, 0x4812: 0x401b4e20, 0x4813: 0x401b5020,\n\t0x4814: 0x401b5220, 0x4815: 0x401b5420, 0x4816: 0x401b5620, 0x4817: 0x401b5820,\n\t0x4818: 0x401b5a20, 0x4819: 0x401b5c20, 0x481a: 0x401b5e20, 0x481b: 0x401b6020,\n\t0x481c: 0x401b6220, 0x481d: 0x401b6420, 0x481e: 0x401b6620, 0x481f: 0x401b6820,\n\t0x4820: 0x401b6a20, 0x4821: 0x401b6c20, 0x4822: 0x401b6e20, 0x4823: 0x401b7020,\n\t0x4824: 0x401b7220, 0x4825: 0x401b7420, 0x4826: 0x401b7620, 0x4827: 0x401b7820,\n\t0x4828: 0x401b7a20, 0x4829: 0x401b7c20, 0x482a: 0x401b7e20, 0x482b: 0x401b8020,\n\t0x482c: 0x401b8220, 0x482d: 0x401b8420, 0x482e: 0x401b8620, 0x482f: 0x401b8820,\n\t0x4830: 0x401b8a20, 0x4831: 0x401b8c20, 0x4832: 0x401b8e20, 0x4833: 0x401b9020,\n\t0x4834: 0x401b9220, 0x4835: 0x401b9420, 0x4836: 0x401b9620, 0x4837: 0x401b9820,\n\t0x4838: 0x401b9a20, 0x4839: 0x401b9c20, 0x483a: 0x401b9e20, 0x483b: 0x401ba020,\n\t0x483c: 0x401ba220, 0x483d: 0xadc13802,\n\t// Block 0x121, offset 0x4840\n\t0x4840: 0x4070b820, 0x4841: 0x4070ba20, 0x4842: 0x4070bc20, 0x4843: 0x4070be20,\n\t0x4844: 0x4070c020, 0x4845: 0x4070c220, 0x4846: 0x4070c420, 0x4847: 0x4070c620,\n\t0x4848: 0x4070c820, 0x4849: 0x4070ca20, 0x484a: 0x4070cc20, 0x484b: 0x4070ce20,\n\t0x484c: 0x4070d020, 0x484d: 0x4070d220, 0x484e: 0x4070d420, 0x484f: 0x4070d620,\n\t0x4850: 0x4070d820, 0x4851: 0x4070da20, 0x4852: 0x4070dc20, 0x4853: 0x4070de20,\n\t0x4854: 0x4070e020, 0x4855: 0x4070e220, 0x4856: 0x4070e420, 0x4857: 0x4070e620,\n\t0x4858: 0x4070e820, 0x4859: 0x4070ea20, 0x485a: 0x4070ec20, 0x485b: 0x4070ee20,\n\t0x485c: 0x4070f020,\n\t0x4860: 0x4070f220, 0x4861: 0x4070f420, 0x4862: 0x4070f620, 0x4863: 0x4070f820,\n\t0x4864: 0x4070fa20, 0x4865: 0x4070fc20, 0x4866: 0x4070fe20, 0x4867: 0x40710020,\n\t0x4868: 0x40710220, 0x4869: 0x40710420, 0x486a: 0x40710620, 0x486b: 0x40710820,\n\t0x486c: 0x40710a20, 0x486d: 0x40710c20, 0x486e: 0x40710e20, 0x486f: 0x40711020,\n\t0x4870: 0x40711220, 0x4871: 0x40711420, 0x4872: 0x40711620, 0x4873: 0x40711820,\n\t0x4874: 0x40711a20, 0x4875: 0x40711c20, 0x4876: 0x40711e20, 0x4877: 0x40712020,\n\t0x4878: 0x40712220, 0x4879: 0x40712420, 0x487a: 0x40712620, 0x487b: 0x40712820,\n\t0x487c: 0x40712a20, 0x487d: 0x40712c20, 0x487e: 0x40712e20, 0x487f: 0x40713020,\n\t// Block 0x122, offset 0x4880\n\t0x4880: 0x40713220, 0x4881: 0x40713420, 0x4882: 0x40713620, 0x4883: 0x40713820,\n\t0x4884: 0x40713a20, 0x4885: 0x40713c20, 0x4886: 0x40713e20, 0x4887: 0x40714020,\n\t0x4888: 0x40714220, 0x4889: 0x40714420, 0x488a: 0x40714620, 0x488b: 0x40714820,\n\t0x488c: 0x40714a20, 0x488d: 0x40714c20, 0x488e: 0x40714e20, 0x488f: 0x40715020,\n\t0x4890: 0x40715220,\n\t// Block 0x123, offset 0x48c0\n\t0x48c0: 0x40718820, 0x48c1: 0x40718a20, 0x48c2: 0x40718c20, 0x48c3: 0x40718e20,\n\t0x48c4: 0x40719020, 0x48c5: 0x40719220, 0x48c6: 0x40719420, 0x48c7: 0x40719620,\n\t0x48c8: 0x40719820, 0x48c9: 0x40719a20, 0x48ca: 0x40719c20, 0x48cb: 0x40719e20,\n\t0x48cc: 0x4071a020, 0x48cd: 0x4071a220, 0x48ce: 0x4071a420, 0x48cf: 0x4071a620,\n\t0x48d0: 0x4071a820, 0x48d1: 0x4071aa20, 0x48d2: 0x4071ac20, 0x48d3: 0x4071ae20,\n\t0x48d4: 0x4071b020, 0x48d5: 0x4071b220, 0x48d6: 0x4071b420, 0x48d7: 0x4071b620,\n\t0x48d8: 0x4071b820, 0x48d9: 0x4071ba20, 0x48da: 0x4071bc20, 0x48db: 0x4071be20,\n\t0x48dc: 0x4071c020, 0x48dd: 0x4071c220, 0x48de: 0x4071c420,\n\t0x48e0: 0xe0000279, 0x48e1: 0xe000060d, 0x48e2: 0x4028b620, 0x48e3: 0x4028b820,\n\t0x48f0: 0x4071c620, 0x48f1: 0x4071c820, 0x48f2: 0x4071ca20, 0x48f3: 0x4071cc20,\n\t0x48f4: 0x4071ce20, 0x48f5: 0x4071d020, 0x48f6: 0x4071d220, 0x48f7: 0x4071d420,\n\t0x48f8: 0x4071d620, 0x48f9: 0x4071d820, 0x48fa: 0x4071da20, 0x48fb: 0x4071dc20,\n\t0x48fc: 0x4071de20, 0x48fd: 0x4071e020, 0x48fe: 0x4071e220, 0x48ff: 0x4071e420,\n\t// Block 0x124, offset 0x4900\n\t0x4900: 0x4071e620, 0x4901: 0x4071e820, 0x4902: 0x4071ea20, 0x4903: 0x4071ec20,\n\t0x4904: 0x4071ee20, 0x4905: 0x4071f020, 0x4906: 0x4071f220, 0x4907: 0x4071f420,\n\t0x4908: 0x4071f620, 0x4909: 0x4071f820, 0x490a: 0x4071fa20,\n\t// Block 0x125, offset 0x4940\n\t0x4940: 0x40765020, 0x4941: 0x40765220, 0x4942: 0x40765420, 0x4943: 0x40765620,\n\t0x4944: 0x40765820, 0x4945: 0x40765a20, 0x4946: 0x40765c20, 0x4947: 0x40765e20,\n\t0x4948: 0x40766020, 0x4949: 0x40766220, 0x494a: 0x40766420, 0x494b: 0x40766620,\n\t0x494c: 0x40766820, 0x494d: 0x40766a20, 0x494e: 0x40766c20, 0x494f: 0x40766e20,\n\t0x4950: 0x40767020, 0x4951: 0x40767220, 0x4952: 0x40767420, 0x4953: 0x40767620,\n\t0x4954: 0x40767820, 0x4955: 0x40767a20, 0x4956: 0x40767c20, 0x4957: 0x40767e20,\n\t0x4958: 0x40768020, 0x4959: 0x40768220, 0x495a: 0x40768420, 0x495b: 0x40768620,\n\t0x495c: 0x40768820, 0x495d: 0x40768a20, 0x495f: 0x4003c420,\n\t0x4960: 0x40768c20, 0x4961: 0x40768e20, 0x4962: 0x40769020, 0x4963: 0x40769220,\n\t0x4964: 0x40769420, 0x4965: 0x40769620, 0x4966: 0x40769820, 0x4967: 0x40769a20,\n\t0x4968: 0x40769c20, 0x4969: 0x40769e20, 0x496a: 0x4076a020, 0x496b: 0x4076a220,\n\t0x496c: 0x4076a420, 0x496d: 0x4076a620, 0x496e: 0x4076a820, 0x496f: 0x4076aa20,\n\t0x4970: 0x4076ac20, 0x4971: 0x4076ae20, 0x4972: 0x4076b020, 0x4973: 0x4076b220,\n\t0x4974: 0x4076b420, 0x4975: 0x4076b620, 0x4976: 0x4076b820, 0x4977: 0x4076ba20,\n\t0x4978: 0x4076bc20, 0x4979: 0x4076be20, 0x497a: 0x4076c020, 0x497b: 0x4076c220,\n\t0x497c: 0x4076c420, 0x497d: 0x4076c620, 0x497e: 0x4076c820, 0x497f: 0x4076ca20,\n\t// Block 0x126, offset 0x4980\n\t0x4980: 0x4076cc20, 0x4981: 0x4076ce20, 0x4982: 0x4076d020, 0x4983: 0x4076d220,\n\t0x4988: 0x4076d420, 0x4989: 0x4076d620, 0x498a: 0x4076d820, 0x498b: 0x4076da20,\n\t0x498c: 0x4076dc20, 0x498d: 0x4076de20, 0x498e: 0x4076e020, 0x498f: 0x4076e220,\n\t0x4990: 0x4003c620, 0x4991: 0xe000027c, 0x4992: 0xe0000391, 0x4993: 0x40295a20,\n\t0x4994: 0x40295c20, 0x4995: 0x40295e20,\n\t// Block 0x127, offset 0x49c0\n\t0x49c0: 0x0071fc88, 0x49c1: 0x0071fe88, 0x49c2: 0x00720088, 0x49c3: 0x00720288,\n\t0x49c4: 0x00720488, 0x49c5: 0x00720688, 0x49c6: 0x00720888, 0x49c7: 0x00720a88,\n\t0x49c8: 0x00720c88, 0x49c9: 0x00720e88, 0x49ca: 0x00721088, 0x49cb: 0x00721288,\n\t0x49cc: 0x00721488, 0x49cd: 0x00721688, 0x49ce: 0x00721888, 0x49cf: 0x00721a88,\n\t0x49d0: 0x00721c88, 0x49d1: 0x00721e88, 0x49d2: 0x00722088, 0x49d3: 0x00722288,\n\t0x49d4: 0x00722488, 0x49d5: 0x00722688, 0x49d6: 0x00722888, 0x49d7: 0x00722a88,\n\t0x49d8: 0x00722c88, 0x49d9: 0x00722e88, 0x49da: 0x00723088, 0x49db: 0x00723288,\n\t0x49dc: 0x00723488, 0x49dd: 0x00723688, 0x49de: 0x00723888, 0x49df: 0x00723a88,\n\t0x49e0: 0x00723c88, 0x49e1: 0x00723e88, 0x49e2: 0x00724088, 0x49e3: 0x00724288,\n\t0x49e4: 0x00724488, 0x49e5: 0x00724688, 0x49e6: 0x00724888, 0x49e7: 0x00724a88,\n\t0x49e8: 0x4071fc20, 0x49e9: 0x4071fe20, 0x49ea: 0x40720020, 0x49eb: 0x40720220,\n\t0x49ec: 0x40720420, 0x49ed: 0x40720620, 0x49ee: 0x40720820, 0x49ef: 0x40720a20,\n\t0x49f0: 0x40720c20, 0x49f1: 0x40720e20, 0x49f2: 0x40721020, 0x49f3: 0x40721220,\n\t0x49f4: 0x40721420, 0x49f5: 0x40721620, 0x49f6: 0x40721820, 0x49f7: 0x40721a20,\n\t0x49f8: 0x40721c20, 0x49f9: 0x40721e20, 0x49fa: 0x40722020, 0x49fb: 0x40722220,\n\t0x49fc: 0x40722420, 0x49fd: 0x40722620, 0x49fe: 0x40722820, 0x49ff: 0x40722a20,\n\t// Block 0x128, offset 0x4a00\n\t0x4a00: 0x40722c20, 0x4a01: 0x40722e20, 0x4a02: 0x40723020, 0x4a03: 0x40723220,\n\t0x4a04: 0x40723420, 0x4a05: 0x40723620, 0x4a06: 0x40723820, 0x4a07: 0x40723a20,\n\t0x4a08: 0x40723c20, 0x4a09: 0x40723e20, 0x4a0a: 0x40724020, 0x4a0b: 0x40724220,\n\t0x4a0c: 0x40724420, 0x4a0d: 0x40724620, 0x4a0e: 0x40724820, 0x4a0f: 0x40724a20,\n\t0x4a10: 0x40724c20, 0x4a11: 0x40724e20, 0x4a12: 0x40725020, 0x4a13: 0x40725220,\n\t0x4a14: 0x40725420, 0x4a15: 0x40725620, 0x4a16: 0x40725820, 0x4a17: 0x40725a20,\n\t0x4a18: 0x40725c20, 0x4a19: 0x40725e20, 0x4a1a: 0x40726020, 0x4a1b: 0x40726220,\n\t0x4a1c: 0x40726420, 0x4a1d: 0x40726620, 0x4a1e: 0x40726820, 0x4a1f: 0x40726a20,\n\t0x4a20: 0x40726c20, 0x4a21: 0x40726e20, 0x4a22: 0x40727020, 0x4a23: 0x40727220,\n\t0x4a24: 0x40727420, 0x4a25: 0x40727620, 0x4a26: 0x40727820, 0x4a27: 0x40727a20,\n\t0x4a28: 0x40727c20, 0x4a29: 0x40727e20, 0x4a2a: 0x40728020, 0x4a2b: 0x40728220,\n\t0x4a2c: 0x40728420, 0x4a2d: 0x40728620, 0x4a2e: 0x40728820, 0x4a2f: 0x40728a20,\n\t0x4a30: 0x40728c20, 0x4a31: 0x40728e20, 0x4a32: 0x40729020, 0x4a33: 0x40729220,\n\t0x4a34: 0x40729420, 0x4a35: 0x40729620, 0x4a36: 0x40729820, 0x4a37: 0x40729a20,\n\t0x4a38: 0x40729c20, 0x4a39: 0x40729e20, 0x4a3a: 0x4072a020, 0x4a3b: 0x4072a220,\n\t0x4a3c: 0x4072a420, 0x4a3d: 0x4072a620, 0x4a3e: 0x4072a820, 0x4a3f: 0x4072aa20,\n\t// Block 0x129, offset 0x4a40\n\t0x4a40: 0x4072ac20, 0x4a41: 0x4072ae20, 0x4a42: 0x4072b020, 0x4a43: 0x4072b220,\n\t0x4a44: 0x4072b420, 0x4a45: 0x4072b620, 0x4a46: 0x4072b820, 0x4a47: 0x4072ba20,\n\t0x4a48: 0x4072bc20, 0x4a49: 0x4072be20, 0x4a4a: 0x4072c020, 0x4a4b: 0x4072c220,\n\t0x4a4c: 0x4072c420, 0x4a4d: 0x4072c620, 0x4a4e: 0x4072c820, 0x4a4f: 0x4072ca20,\n\t0x4a50: 0x4072cc20, 0x4a51: 0x4072ce20, 0x4a52: 0x4072d020, 0x4a53: 0x4072d220,\n\t0x4a54: 0x4072d420, 0x4a55: 0x4072d620, 0x4a56: 0x4072d820, 0x4a57: 0x4072da20,\n\t0x4a58: 0x4072dc20, 0x4a59: 0x4072de20, 0x4a5a: 0x4072e020, 0x4a5b: 0x4072e220,\n\t0x4a5c: 0x4072e420, 0x4a5d: 0x4072e620,\n\t0x4a60: 0xe0000167, 0x4a61: 0xe00001f5, 0x4a62: 0xe0000310, 0x4a63: 0xe00003ea,\n\t0x4a64: 0xe00004c5, 0x4a65: 0xe000058f, 0x4a66: 0xe000065a, 0x4a67: 0xe0000702,\n\t0x4a68: 0xe00007ae, 0x4a69: 0xe0000853,\n\t// Block 0x12a, offset 0x4a80\n\t0x4a80: 0x4074c020, 0x4a81: 0x4074c220, 0x4a82: 0x4074c420, 0x4a83: 0x4074c620,\n\t0x4a84: 0x4074c820, 0x4a85: 0x4074ca20,\n\t0x4a88: 0x4074cc20, 0x4a8a: 0x4074ce20, 0x4a8b: 0x4074d020,\n\t0x4a8c: 0x4074d220, 0x4a8d: 0x4074d420, 0x4a8e: 0x4074d620, 0x4a8f: 0x4074d820,\n\t0x4a90: 0x4074da20, 0x4a91: 0x4074dc20, 0x4a92: 0x4074de20, 0x4a93: 0x4074e020,\n\t0x4a94: 0x4074e220, 0x4a95: 0x4074e420, 0x4a96: 0x4074e620, 0x4a97: 0x4074e820,\n\t0x4a98: 0x4074ea20, 0x4a99: 0x4074ec20, 0x4a9a: 0x4074ee20, 0x4a9b: 0x4074f020,\n\t0x4a9c: 0x4074f220, 0x4a9d: 0x4074f420, 0x4a9e: 0x4074f620, 0x4a9f: 0x4074f820,\n\t0x4aa0: 0x4074fa20, 0x4aa1: 0x4074fc20, 0x4aa2: 0x4074fe20, 0x4aa3: 0x40750020,\n\t0x4aa4: 0x40750220, 0x4aa5: 0x40750420, 0x4aa6: 0x40750620, 0x4aa7: 0x40750820,\n\t0x4aa8: 0x40750a20, 0x4aa9: 0x40750c20, 0x4aaa: 0x40750e20, 0x4aab: 0x40751020,\n\t0x4aac: 0x40751220, 0x4aad: 0x40751420, 0x4aae: 0x40751620, 0x4aaf: 0x40751820,\n\t0x4ab0: 0x40751a20, 0x4ab1: 0x40751c20, 0x4ab2: 0x40751e20, 0x4ab3: 0x40752020,\n\t0x4ab4: 0x40752220, 0x4ab5: 0x40752420, 0x4ab7: 0x40752620,\n\t0x4ab8: 0x40752820,\n\t0x4abc: 0x40752a20, 0x4abf: 0x40752c20,\n\t// Block 0x12b, offset 0x4ac0\n\t0x4ac0: 0x4075d220, 0x4ac1: 0x4075d420, 0x4ac2: 0x4075d620, 0x4ac3: 0x4075d820,\n\t0x4ac4: 0x4075da20, 0x4ac5: 0x4075dc20, 0x4ac6: 0x4075de20, 0x4ac7: 0x4075e020,\n\t0x4ac8: 0x4075e220, 0x4ac9: 0x4075e420, 0x4aca: 0x4075e620, 0x4acb: 0x4075e820,\n\t0x4acc: 0x4075ea20, 0x4acd: 0x4075ec20, 0x4ace: 0x4075ee20, 0x4acf: 0x4075f020,\n\t0x4ad0: 0x4075f220, 0x4ad1: 0x4075f420, 0x4ad2: 0x4075f620, 0x4ad3: 0x4075f820,\n\t0x4ad4: 0x4075fa20, 0x4ad5: 0x4075fc20, 0x4ad7: 0x40038620,\n\t0x4ad8: 0xe0000297, 0x4ad9: 0xe00003b2, 0x4ada: 0xe000048c, 0x4adb: 0x40296820,\n\t0x4adc: 0x40296a20, 0x4add: 0x40296c20, 0x4ade: 0x40296e20, 0x4adf: 0x40297020,\n\t// Block 0x12c, offset 0x4b00\n\t0x4b00: 0x4038bc20, 0x4b01: 0x4038be20, 0x4b02: 0x4038c020, 0x4b03: 0x4038c220,\n\t0x4b04: 0x4038c420, 0x4b05: 0x4038c620, 0x4b06: 0x4038c820, 0x4b07: 0x4038ca20,\n\t0x4b08: 0x4038cc20, 0x4b09: 0x4038ce20, 0x4b0a: 0x4038d020, 0x4b0b: 0x4038d220,\n\t0x4b0c: 0x4038d420, 0x4b0d: 0x4038d620, 0x4b0e: 0x4038d820, 0x4b0f: 0x4038da20,\n\t0x4b10: 0x4038dc20, 0x4b11: 0x4038de20, 0x4b12: 0x4038e020, 0x4b13: 0x4038e220,\n\t0x4b14: 0x4038e420, 0x4b15: 0x4038e620, 0x4b16: 0xe0000294, 0x4b17: 0x40296220,\n\t0x4b18: 0x40296420, 0x4b19: 0x40296620, 0x4b1a: 0xe00003af, 0x4b1b: 0xe0000489,\n\t0x4b1f: 0x4003c820,\n\t0x4b20: 0x40715420, 0x4b21: 0x40715620, 0x4b22: 0x40715820, 0x4b23: 0x40715a20,\n\t0x4b24: 0x40715c20, 0x4b25: 0x40715e20, 0x4b26: 0x40716020, 0x4b27: 0x40716220,\n\t0x4b28: 0x40716420, 0x4b29: 0x40716620, 0x4b2a: 0x40716820, 0x4b2b: 0x40716a20,\n\t0x4b2c: 0x40716c20, 0x4b2d: 0x40716e20, 0x4b2e: 0x40717020, 0x4b2f: 0x40717220,\n\t0x4b30: 0x40717420, 0x4b31: 0x40717620, 0x4b32: 0x40717820, 0x4b33: 0x40717a20,\n\t0x4b34: 0x40717c20, 0x4b35: 0x40717e20, 0x4b36: 0x40718020, 0x4b37: 0x40718220,\n\t0x4b38: 0x40718420, 0x4b39: 0x40718620,\n\t0x4b3f: 0x4003bc20,\n\t// Block 0x12d, offset 0x4b40\n\t0x4b40: 0xe00023a4, 0x4b41: 0xe00023a7, 0x4b42: 0xe00023aa, 0x4b43: 0xe00023ad,\n\t0x4b44: 0xe00023b0, 0x4b45: 0xe00023b3, 0x4b46: 0xe00023b6, 0x4b47: 0xe00023b9,\n\t0x4b48: 0xe00023bc, 0x4b49: 0xe00023bf, 0x4b4a: 0xe00023c2, 0x4b4b: 0xe00023c5,\n\t0x4b4c: 0xe00023c8, 0x4b4d: 0xe00023cb, 0x4b4e: 0xe00023ce, 0x4b4f: 0xe00023d1,\n\t0x4b50: 0xe00023d4, 0x4b51: 0xe00023d7, 0x4b52: 0xe00023da, 0x4b53: 0xe00023e0,\n\t0x4b54: 0xe00023e3, 0x4b55: 0xe00023e6, 0x4b56: 0xe00023e9, 0x4b57: 0xe00023ec,\n\t0x4b58: 0xe00023ef, 0x4b59: 0xe00023f2, 0x4b5a: 0xe00023f5, 0x4b5b: 0xe00023f8,\n\t0x4b5c: 0xe00023fb, 0x4b5d: 0xe00023fe, 0x4b5e: 0x40865220, 0x4b5f: 0x40865420,\n\t0x4b60: 0x40862020, 0x4b61: 0x40862220, 0x4b62: 0x40862420, 0x4b63: 0x40862620,\n\t0x4b64: 0x40862820, 0x4b65: 0x40862a20, 0x4b66: 0x40862c20, 0x4b67: 0x40862e20,\n\t0x4b68: 0x40863020, 0x4b69: 0x40863220, 0x4b6a: 0x40863420, 0x4b6b: 0x40863620,\n\t0x4b6c: 0x40863820, 0x4b6d: 0x40863a20, 0x4b6e: 0x40863c20, 0x4b6f: 0x40863e20,\n\t0x4b70: 0xe00023dd, 0x4b71: 0x40864020, 0x4b72: 0x40864220, 0x4b73: 0x40864420,\n\t0x4b74: 0x40864620, 0x4b75: 0x40864820, 0x4b76: 0x40864a20, 0x4b77: 0x40864c20,\n\t0x4b7e: 0x40864e20, 0x4b7f: 0x40865020,\n\t// Block 0x12e, offset 0x4b80\n\t0x4b80: 0x4048bc20, 0x4b81: 0x4048be20, 0x4b82: 0x4048c020, 0x4b83: 0x4048c220,\n\t0x4b85: 0x4048c420, 0x4b86: 0x4048c620,\n\t0x4b8c: 0x4048c820, 0x4b8d: 0xadc06002, 0x4b8e: 0xa000f302, 0x4b8f: 0xae60f402,\n\t0x4b90: 0x4048ca20, 0x4b91: 0x4048cc20, 0x4b92: 0x4048ce20, 0x4b93: 0x4048d020,\n\t0x4b95: 0x4048d220, 0x4b96: 0x4048d420, 0x4b97: 0x4048d620,\n\t0x4b99: 0x4048d820, 0x4b9a: 0x4048da20, 0x4b9b: 0x4048dc20,\n\t0x4b9c: 0x4048de20, 0x4b9d: 0x4048e020, 0x4b9e: 0x4048e220, 0x4b9f: 0x4048e420,\n\t0x4ba0: 0x4048e620, 0x4ba1: 0x4048e820, 0x4ba2: 0x4048ea20, 0x4ba3: 0x4048ec20,\n\t0x4ba4: 0x4048ee20, 0x4ba5: 0x4048f020, 0x4ba6: 0x4048f220, 0x4ba7: 0x4048f420,\n\t0x4ba8: 0x4048f620, 0x4ba9: 0x4048f820, 0x4baa: 0x4048fa20, 0x4bab: 0x4048fc20,\n\t0x4bac: 0x4048fe20, 0x4bad: 0x40490020, 0x4bae: 0x40490220, 0x4baf: 0x40490420,\n\t0x4bb0: 0x40490620, 0x4bb1: 0x40490820, 0x4bb2: 0x40490a20, 0x4bb3: 0x40490c20,\n\t0x4bb8: 0xae60fb02, 0x4bb9: 0xa010fc02, 0x4bba: 0xadc0fd02,\n\t0x4bbf: 0x82092487,\n\t// Block 0x12f, offset 0x4bc0\n\t0x4bc0: 0xe00002ac, 0x4bc1: 0xe00003c7, 0x4bc2: 0xe00004a1, 0x4bc3: 0xe0000573,\n\t0x4bc4: 0x40299820, 0x4bc5: 0x40299a20, 0x4bc6: 0x40299c20, 0x4bc7: 0x40299e20,\n\t0x4bd0: 0x40060620, 0x4bd1: 0x40060820, 0x4bd2: 0x40060a20, 0x4bd3: 0x40060c20,\n\t0x4bd4: 0x40060e20, 0x4bd5: 0x40061020, 0x4bd6: 0x40034420, 0x4bd7: 0x40034620,\n\t0x4bd8: 0x40061220,\n\t0x4be0: 0x40752e20, 0x4be1: 0x40753020, 0x4be2: 0x40753220, 0x4be3: 0x40753420,\n\t0x4be4: 0x40753620, 0x4be5: 0x40753820, 0x4be6: 0x40753a20, 0x4be7: 0x40753c20,\n\t0x4be8: 0x40753e20, 0x4be9: 0x40754020, 0x4bea: 0x40754220, 0x4beb: 0x40754420,\n\t0x4bec: 0x40754620, 0x4bed: 0x40754820, 0x4bee: 0x40754a20, 0x4bef: 0x40754c20,\n\t0x4bf0: 0x40754e20, 0x4bf1: 0x40755020, 0x4bf2: 0x40755220, 0x4bf3: 0x40755420,\n\t0x4bf4: 0x40755620, 0x4bf5: 0x40755820, 0x4bf6: 0x40755a20, 0x4bf7: 0x40755c20,\n\t0x4bf8: 0x40755e20, 0x4bf9: 0x40756020, 0x4bfa: 0x40756220, 0x4bfb: 0x40756420,\n\t0x4bfc: 0x40756620, 0x4bfd: 0xe0000291, 0x4bfe: 0x40296020, 0x4bff: 0x40061c20,\n\t// Block 0x130, offset 0x4c00\n\t0x4c00: 0x40756820, 0x4c01: 0x40756a20, 0x4c02: 0x40756c20, 0x4c03: 0x40756e20,\n\t0x4c04: 0x40757020, 0x4c05: 0x40757220, 0x4c06: 0x40757420, 0x4c07: 0x40757620,\n\t0x4c08: 0x40757820, 0x4c09: 0x40757a20, 0x4c0a: 0x40757c20, 0x4c0b: 0x40757e20,\n\t0x4c0c: 0x40758020, 0x4c0d: 0x40758220, 0x4c0e: 0x40758420, 0x4c0f: 0x40758620,\n\t0x4c10: 0x40758820, 0x4c11: 0x40758a20, 0x4c12: 0x40758c20, 0x4c13: 0x40758e20,\n\t0x4c14: 0x40759020, 0x4c15: 0x40759220, 0x4c16: 0x40759420, 0x4c17: 0x40759620,\n\t0x4c18: 0x40759820, 0x4c19: 0x40759a20, 0x4c1a: 0x40759c20, 0x4c1b: 0x40759e20,\n\t0x4c1c: 0x4075a020, 0x4c1d: 0x4075a220, 0x4c1e: 0x4075a420, 0x4c1f: 0x4075a620,\n\t0x4c20: 0x4075a820, 0x4c21: 0x4075aa20, 0x4c22: 0x4075ac20, 0x4c23: 0x4075ae20,\n\t0x4c24: 0x4075b020, 0x4c25: 0x4075b220, 0x4c26: 0x4075b420, 0x4c27: 0x4075b620,\n\t0x4c28: 0x4075b820, 0x4c29: 0x4075ba20, 0x4c2a: 0x4075bc20, 0x4c2b: 0x4075be20,\n\t0x4c2c: 0x4075c020, 0x4c2d: 0x4075c220, 0x4c2e: 0xe00023a1, 0x4c2f: 0x4075c420,\n\t0x4c30: 0x4075c620, 0x4c31: 0x4075c820, 0x4c32: 0x4075ca20, 0x4c33: 0x4075cc20,\n\t0x4c34: 0x4075ce20, 0x4c35: 0x4075d020,\n\t0x4c39: 0x40061420, 0x4c3a: 0x40038820, 0x4c3b: 0x40038a20,\n\t0x4c3c: 0x40038c20, 0x4c3d: 0x40038e20, 0x4c3e: 0x40039020, 0x4c3f: 0x40039220,\n\t// Block 0x131, offset 0x4c40\n\t0x4c40: 0x4075fe20, 0x4c41: 0x40760020, 0x4c42: 0x40760220, 0x4c43: 0x40760420,\n\t0x4c44: 0x40760620, 0x4c45: 0x40760820, 0x4c46: 0x40760a20, 0x4c47: 0x40760c20,\n\t0x4c48: 0x40760e20, 0x4c49: 0x40761020, 0x4c4a: 0x40761220, 0x4c4b: 0x40761420,\n\t0x4c4c: 0x40761620, 0x4c4d: 0x40761820, 0x4c4e: 0x40761a20, 0x4c4f: 0x40761c20,\n\t0x4c50: 0x40761e20, 0x4c51: 0x40762020, 0x4c52: 0x40762220, 0x4c53: 0x40762420,\n\t0x4c54: 0x40762620, 0x4c55: 0x40762820,\n\t0x4c58: 0xe000029a, 0x4c59: 0xe00003b5, 0x4c5a: 0xe000048f, 0x4c5b: 0xe0000561,\n\t0x4c5c: 0x40297220, 0x4c5d: 0x40297420, 0x4c5e: 0x40297620, 0x4c5f: 0x40297820,\n\t0x4c60: 0x40762a20, 0x4c61: 0x40762c20, 0x4c62: 0x40762e20, 0x4c63: 0x40763020,\n\t0x4c64: 0x40763220, 0x4c65: 0x40763420, 0x4c66: 0x40763620, 0x4c67: 0x40763820,\n\t0x4c68: 0x40763a20, 0x4c69: 0x40763c20, 0x4c6a: 0x40763e20, 0x4c6b: 0x40764020,\n\t0x4c6c: 0x40764220, 0x4c6d: 0x40764420, 0x4c6e: 0x40764620, 0x4c6f: 0x40764820,\n\t0x4c70: 0x40764a20, 0x4c71: 0x40764c20, 0x4c72: 0x40764e20,\n\t0x4c78: 0xe000029d, 0x4c79: 0xe00003b8, 0x4c7a: 0xe0000492, 0x4c7b: 0xe0000564,\n\t0x4c7c: 0x40297a20, 0x4c7d: 0x40297c20, 0x4c7e: 0x40297e20, 0x4c7f: 0x40298020,\n\t// Block 0x132, offset 0x4c80\n\t0x4c80: 0x405b2620, 0x4c81: 0xe00020a7, 0x4c82: 0x405b2820, 0x4c83: 0x405b2a20,\n\t0x4c84: 0xe00020aa, 0x4c85: 0x405b2c20, 0x4c86: 0x405b2e20, 0x4c87: 0x405b3020,\n\t0x4c88: 0xe00020ad, 0x4c89: 0x405b3220, 0x4c8a: 0xe00020b0, 0x4c8b: 0x405b3420,\n\t0x4c8c: 0xe00020b3, 0x4c8d: 0x405b3620, 0x4c8e: 0xe00020b6, 0x4c8f: 0x405b3820,\n\t0x4c90: 0xe00020b9, 0x4c91: 0x405b3a20, 0x4c92: 0xe00020bc, 0x4c93: 0x405b3c20,\n\t0x4c94: 0x405b3e20, 0x4c95: 0xe00020bf, 0x4c96: 0x405b4020, 0x4c97: 0xe00020c2,\n\t0x4c98: 0x405b4220, 0x4c99: 0xe00020c5, 0x4c9a: 0x405b4420, 0x4c9b: 0xe00020c8,\n\t0x4c9c: 0x405b4620, 0x4c9d: 0xe00020cb, 0x4c9e: 0x405b4820, 0x4c9f: 0xe00020ce,\n\t0x4ca0: 0x405b4a20, 0x4ca1: 0x405b4c20, 0x4ca2: 0x405b4e20, 0x4ca3: 0x405b5020,\n\t0x4ca4: 0x405b5220, 0x4ca5: 0xe00020d1, 0x4ca6: 0x405b5420, 0x4ca7: 0xe00020d4,\n\t0x4ca8: 0x405b5620, 0x4ca9: 0xe00020d7, 0x4caa: 0x405b5820, 0x4cab: 0xe00020da,\n\t0x4cac: 0x405b5a20, 0x4cad: 0x405b5c20, 0x4cae: 0xe00020dd, 0x4caf: 0x405b5e20,\n\t0x4cb0: 0x405b6020, 0x4cb1: 0x405b6220, 0x4cb2: 0x405b6420, 0x4cb3: 0xe00020e0,\n\t0x4cb4: 0x405b6620, 0x4cb5: 0xe00020e3, 0x4cb6: 0x405b6820, 0x4cb7: 0xe00020e6,\n\t0x4cb8: 0x405b6a20, 0x4cb9: 0xe00020e9, 0x4cba: 0x405b6c20, 0x4cbb: 0xe00020ec,\n\t0x4cbc: 0x405b6e20, 0x4cbd: 0x405b7020, 0x4cbe: 0x405b7220, 0x4cbf: 0x405b7420,\n\t// Block 0x133, offset 0x4cc0\n\t0x4cc0: 0xe00020ef, 0x4cc1: 0x405b7620, 0x4cc2: 0xe00020f2, 0x4cc3: 0x405b7820,\n\t0x4cc4: 0xe00020f5, 0x4cc5: 0x405b7a20, 0x4cc6: 0xe00020f8, 0x4cc7: 0x405b7c20,\n\t0x4cc8: 0x405b7e20,\n\t// Block 0x134, offset 0x4d00\n\t0x4d20: 0xe00001ec, 0x4d21: 0xe0000307, 0x4d22: 0xe00003e1, 0x4d23: 0xe00004bc,\n\t0x4d24: 0xe0000586, 0x4d25: 0xe0000651, 0x4d26: 0xe00006f9, 0x4d27: 0xe00007a5,\n\t0x4d28: 0xe000084a, 0x4d29: 0x40288820, 0x4d2a: 0x40288a20, 0x4d2b: 0x40288c20,\n\t0x4d2c: 0x40288e20, 0x4d2d: 0x40289020, 0x4d2e: 0x40289220, 0x4d2f: 0x40289420,\n\t0x4d30: 0x40289620, 0x4d31: 0x40289820, 0x4d32: 0x40289a20, 0x4d33: 0x40289c20,\n\t0x4d34: 0x40289e20, 0x4d35: 0x4028a020, 0x4d36: 0x4028a220, 0x4d37: 0x4028a420,\n\t0x4d38: 0x4028a620, 0x4d39: 0x4028a820, 0x4d3a: 0x4028aa20, 0x4d3b: 0x4028ac20,\n\t0x4d3c: 0x4028ae20, 0x4d3d: 0x4028b020, 0x4d3e: 0x4028b220,\n\t// Block 0x135, offset 0x4d40\n\t0x4d40: 0xa000f202, 0x4d41: 0xa000f302, 0x4d42: 0xa000f402, 0x4d43: 0x40489220,\n\t0x4d44: 0x40489420, 0x4d45: 0x40483420, 0x4d46: 0x40483620, 0x4d47: 0x40483820,\n\t0x4d48: 0x40483a20, 0x4d49: 0x40483c20, 0x4d4a: 0x40483e20, 0x4d4b: 0x40484020,\n\t0x4d4c: 0x40484220, 0x4d4d: 0x40484420, 0x4d4e: 0x40484620, 0x4d4f: 0x40484820,\n\t0x4d50: 0x40484a20, 0x4d51: 0x40484c20, 0x4d52: 0x40484e20, 0x4d53: 0x40485020,\n\t0x4d54: 0x40485220, 0x4d55: 0x40485420, 0x4d56: 0x40485620, 0x4d57: 0x40485820,\n\t0x4d58: 0x40485a20, 0x4d59: 0x40485c20, 0x4d5a: 0x40485e20, 0x4d5b: 0x40486020,\n\t0x4d5c: 0x40486220, 0x4d5d: 0x40486420, 0x4d5e: 0x40486620, 0x4d5f: 0x40486820,\n\t0x4d60: 0x40486a20, 0x4d61: 0x40486c20, 0x4d62: 0x40486e20, 0x4d63: 0x40487020,\n\t0x4d64: 0x40487220, 0x4d65: 0x40487420, 0x4d66: 0x40487620, 0x4d67: 0x40487820,\n\t0x4d68: 0x40487a20, 0x4d69: 0x40487c20, 0x4d6a: 0x40487e20, 0x4d6b: 0x40488020,\n\t0x4d6c: 0x40488220, 0x4d6d: 0x40488420, 0x4d6e: 0x40488620, 0x4d6f: 0x40488820,\n\t0x4d70: 0x40488a20, 0x4d71: 0x40488c20, 0x4d72: 0x40488e20, 0x4d73: 0x40489020,\n\t0x4d74: 0x40489620, 0x4d75: 0x40489820, 0x4d76: 0x40489a20, 0x4d77: 0x40489c20,\n\t0x4d78: 0x40489e20, 0x4d79: 0x4048a020, 0x4d7a: 0x4048a220, 0x4d7b: 0x4048a420,\n\t0x4d7c: 0x4048a620, 0x4d7d: 0x4048a820, 0x4d7e: 0x4048aa20, 0x4d7f: 0x4048ac20,\n\t// Block 0x136, offset 0x4d80\n\t0x4d80: 0x4048ae20, 0x4d81: 0x4048b020, 0x4d82: 0x4048b220, 0x4d83: 0x4048b420,\n\t0x4d84: 0x4048b620, 0x4d85: 0x4048b820, 0x4d86: 0x8209245d, 0x4d87: 0x40034820,\n\t0x4d88: 0x40034a20, 0x4d89: 0x4005fc20, 0x4d8a: 0x4005fe20, 0x4d8b: 0x40060020,\n\t0x4d8c: 0x40060220, 0x4d8d: 0x40060420,\n\t0x4d92: 0xe00002a9, 0x4d93: 0xe00003c4,\n\t0x4d94: 0xe000049e, 0x4d95: 0xe0000570, 0x4d96: 0xe000063a, 0x4d97: 0xe00006ea,\n\t0x4d98: 0xe0000792, 0x4d99: 0xe000083b, 0x4d9a: 0xe00008e6, 0x4d9b: 0x40298220,\n\t0x4d9c: 0x40298420, 0x4d9d: 0x40298620, 0x4d9e: 0x40298820, 0x4d9f: 0x40298a20,\n\t0x4da0: 0x40298c20, 0x4da1: 0x40298e20, 0x4da2: 0x40299020, 0x4da3: 0x40299220,\n\t0x4da4: 0x40299420, 0x4da5: 0x40299620, 0x4da6: 0xe00001df, 0x4da7: 0xe00002a6,\n\t0x4da8: 0xe00003c1, 0x4da9: 0xe000049b, 0x4daa: 0xe000056d, 0x4dab: 0xe0000637,\n\t0x4dac: 0xe00006e7, 0x4dad: 0xe000078f, 0x4dae: 0xe0000838, 0x4daf: 0xe00008e3,\n\t// Block 0x137, offset 0x4dc0\n\t0x4dc0: 0xa000f202, 0x4dc1: 0xa000f302, 0x4dc2: 0xa000f402, 0x4dc3: 0x40467e20,\n\t0x4dc4: 0x40468020, 0x4dc5: 0x40468220, 0x4dc6: 0x40468420, 0x4dc7: 0x40468620,\n\t0x4dc8: 0x40468820, 0x4dc9: 0x40468a20, 0x4dca: 0x40468c20, 0x4dcb: 0x40468e20,\n\t0x4dcc: 0x40469020, 0x4dcd: 0x40469220, 0x4dce: 0x40469420, 0x4dcf: 0x40469620,\n\t0x4dd0: 0x40469820, 0x4dd1: 0x40469a20, 0x4dd2: 0x40469c20, 0x4dd3: 0x40469e20,\n\t0x4dd4: 0x4046a020, 0x4dd5: 0x4046a220, 0x4dd6: 0x4046a420, 0x4dd7: 0x4046a620,\n\t0x4dd8: 0x4046a820, 0x4dd9: 0x4046aa20, 0x4dda: 0xe0001878, 0x4ddb: 0x4046ac20,\n\t0x4ddc: 0xe000187b, 0x4ddd: 0x4046ae20, 0x4dde: 0x4046b020, 0x4ddf: 0x4046b220,\n\t0x4de0: 0x4046b420, 0x4de1: 0x4046b620, 0x4de2: 0x4046b820, 0x4de3: 0x4046ba20,\n\t0x4de4: 0x4046bc20, 0x4de5: 0x4046be20, 0x4de6: 0x4046c020, 0x4de7: 0x4046c220,\n\t0x4de8: 0x4046c420, 0x4de9: 0x4046c620, 0x4dea: 0x4046c820, 0x4deb: 0xe000187e,\n\t0x4dec: 0x4046ca20, 0x4ded: 0x4046cc20, 0x4dee: 0x4046ce20, 0x4def: 0x4046d020,\n\t0x4df0: 0x4046d220, 0x4df1: 0x4046d420, 0x4df2: 0x4046d620, 0x4df3: 0x4046d820,\n\t0x4df4: 0x4046da20, 0x4df5: 0x4046dc20, 0x4df6: 0x4046de20, 0x4df7: 0x4046e020,\n\t0x4df8: 0x4046e220, 0x4df9: 0x82092372, 0x4dfa: 0xa070f102, 0x4dfb: 0x40061620,\n\t0x4dfc: 0x40061820, 0x4dfd: 0xa0000000, 0x4dfe: 0x40039420, 0x4dff: 0x40039620,\n\t// Block 0x138, offset 0x4e00\n\t0x4e00: 0x40034c20, 0x4e01: 0x40034e20,\n\t0x4e10: 0x4072e820, 0x4e11: 0x4072ea20, 0x4e12: 0x4072ec20, 0x4e13: 0x4072ee20,\n\t0x4e14: 0x4072f020, 0x4e15: 0x4072f220, 0x4e16: 0x4072f420, 0x4e17: 0x4072f620,\n\t0x4e18: 0x4072f820, 0x4e19: 0x4072fa20, 0x4e1a: 0x4072fc20, 0x4e1b: 0x4072fe20,\n\t0x4e1c: 0x40730020, 0x4e1d: 0x40730220, 0x4e1e: 0x40730420, 0x4e1f: 0x40730620,\n\t0x4e20: 0x40730820, 0x4e21: 0x40730a20, 0x4e22: 0x40730c20, 0x4e23: 0x40730e20,\n\t0x4e24: 0x40731020, 0x4e25: 0x40731220, 0x4e26: 0x40731420, 0x4e27: 0x40731620,\n\t0x4e28: 0x40731820,\n\t0x4e30: 0xe00001d0, 0x4e31: 0xe0000264, 0x4e32: 0xe000037c, 0x4e33: 0xe0000456,\n\t0x4e34: 0xe000052b, 0x4e35: 0xe00005f5, 0x4e36: 0xe00006c0, 0x4e37: 0xe0000768,\n\t0x4e38: 0xe0000814, 0x4e39: 0xe00008b9,\n\t// Block 0x139, offset 0x4e40\n\t0x4e40: 0xae60f202, 0x4e41: 0xae60f302, 0x4e42: 0xae60f402, 0x4e43: 0x404f4020,\n\t0x4e44: 0x404f4220, 0x4e45: 0x404f4420, 0x4e46: 0x404f4620, 0x4e47: 0x404f4820,\n\t0x4e48: 0x404f4a20, 0x4e49: 0x404f4c20, 0x4e4a: 0x404f4e20, 0x4e4b: 0x404f5020,\n\t0x4e4c: 0x404f5220, 0x4e4d: 0x404f5420, 0x4e4e: 0x404f5620, 0x4e4f: 0x404f5820,\n\t0x4e50: 0x404f5a20, 0x4e51: 0x404f5c20, 0x4e52: 0x404f5e20, 0x4e53: 0x404f6020,\n\t0x4e54: 0x404f6220, 0x4e55: 0x404f6420, 0x4e56: 0x404f6620, 0x4e57: 0x404f6820,\n\t0x4e58: 0x404f6a20, 0x4e59: 0x404f6c20, 0x4e5a: 0x404f6e20, 0x4e5b: 0x404f7020,\n\t0x4e5c: 0x404f7220, 0x4e5d: 0x404f7420, 0x4e5e: 0x404f7620, 0x4e5f: 0x404f7820,\n\t0x4e60: 0x404f7a20, 0x4e61: 0x404f7c20, 0x4e62: 0x404f7e20, 0x4e63: 0x404f8020,\n\t0x4e64: 0x404f8220, 0x4e65: 0x404f8420, 0x4e66: 0x404f8620, 0x4e67: 0x404f8820,\n\t0x4e68: 0x404f8a20, 0x4e69: 0x404f8c20, 0x4e6a: 0x404f8e20, 0x4e6b: 0x404f9020,\n\t0x4e6c: 0x404f9220, 0x4e6d: 0x404f9420, 0x4e6e: 0x404f9620, 0x4e6f: 0x404f9820,\n\t0x4e70: 0x404f9a20, 0x4e71: 0xc31507e1, 0x4e72: 0xc31707e1, 0x4e73: 0x820927d0,\n\t0x4e74: 0x820927d1, 0x4e76: 0xe00001b2, 0x4e77: 0xe0000246,\n\t0x4e78: 0xe000035e, 0x4e79: 0xe0000438, 0x4e7a: 0xe000050d, 0x4e7b: 0xe00005d7,\n\t0x4e7c: 0xe00006a2, 0x4e7d: 0xe000074a, 0x4e7e: 0xe00007f6, 0x4e7f: 0xe000089b,\n\t// Block 0x13a, offset 0x4e80\n\t0x4e80: 0x40039820, 0x4e81: 0x40035020, 0x4e82: 0x40035220, 0x4e83: 0x4002de20,\n\t// Block 0x13b, offset 0x4ec0\n\t0x4ec0: 0xa000f202, 0x4ec1: 0xa000f302, 0x4ec2: 0xa000f402, 0x4ec3: 0x4046e820,\n\t0x4ec4: 0x4046ea20, 0x4ec5: 0x4046ec20, 0x4ec6: 0x4046ee20, 0x4ec7: 0x4046f020,\n\t0x4ec8: 0x4046f220, 0x4ec9: 0x4046f420, 0x4eca: 0x4046f620, 0x4ecb: 0x4046f820,\n\t0x4ecc: 0x4046fa20, 0x4ecd: 0x4046fc20, 0x4ece: 0x4046fe20, 0x4ecf: 0x40470020,\n\t0x4ed0: 0x40470220, 0x4ed1: 0x40470420, 0x4ed2: 0x40470620, 0x4ed3: 0x40470820,\n\t0x4ed4: 0x40470a20, 0x4ed5: 0x40470c20, 0x4ed6: 0x40470e20, 0x4ed7: 0x40471020,\n\t0x4ed8: 0x40471220, 0x4ed9: 0x40471420, 0x4eda: 0x40471620, 0x4edb: 0x40471820,\n\t0x4edc: 0x40471a20, 0x4edd: 0x40471c20, 0x4ede: 0x40471e20, 0x4edf: 0x40472020,\n\t0x4ee0: 0x40472220, 0x4ee1: 0x40472420, 0x4ee2: 0x40472620, 0x4ee3: 0x40472820,\n\t0x4ee4: 0x40472a20, 0x4ee5: 0x40472c20, 0x4ee6: 0x40472e20, 0x4ee7: 0x40473020,\n\t0x4ee8: 0x40473220, 0x4ee9: 0x40473420, 0x4eea: 0x40473620, 0x4eeb: 0x40473820,\n\t0x4eec: 0x40473a20, 0x4eed: 0x40473c20, 0x4eee: 0x40473e20, 0x4eef: 0x40474020,\n\t0x4ef0: 0x40474220, 0x4ef1: 0x40474420, 0x4ef2: 0x40474620, 0x4ef3: 0x40474820,\n\t0x4ef4: 0x40474a20, 0x4ef5: 0x40474c20, 0x4ef6: 0x40474e20, 0x4ef7: 0x40475020,\n\t0x4ef8: 0x40475220, 0x4ef9: 0x40475420, 0x4efa: 0x40475620, 0x4efb: 0x40475820,\n\t0x4efc: 0x40475a20, 0x4efd: 0x40475c20, 0x4efe: 0x40475e20, 0x4eff: 0x40476020,\n\t// Block 0x13c, offset 0x4f00\n\t0x4f00: 0x820923b1, 0x4f01: 0x40476420, 0x4f02: 0x40476620, 0x4f03: 0x40476820,\n\t0x4f04: 0x4046e620, 0x4f05: 0x40035420, 0x4f06: 0x40035620, 0x4f07: 0x40061a20,\n\t0x4f08: 0x40039a20,\n\t0x4f10: 0xe00001d9, 0x4f11: 0xe00002a0, 0x4f12: 0xe00003bb, 0x4f13: 0xe0000495,\n\t0x4f14: 0xe0000567, 0x4f15: 0xe0000631, 0x4f16: 0xe00006e1, 0x4f17: 0xe0000789,\n\t0x4f18: 0xe0000832, 0x4f19: 0xe00008dd,\n\t// Block 0x13d, offset 0x4f40\n\t0x4f40: 0x40476a20, 0x4f41: 0x40476c20, 0x4f42: 0x40476e20, 0x4f43: 0x40477020,\n\t0x4f44: 0x40477220, 0x4f45: 0x40477420, 0x4f46: 0x40477620, 0x4f47: 0x40477820,\n\t0x4f48: 0x40477a20, 0x4f49: 0x40477c20, 0x4f4a: 0x40478420, 0x4f4b: 0x40478620,\n\t0x4f4c: 0x40478820, 0x4f4d: 0x40478a20, 0x4f4e: 0x40478c20, 0x4f4f: 0x40478e20,\n\t0x4f50: 0x40479020, 0x4f51: 0x40479220, 0x4f52: 0x40479420, 0x4f53: 0x40479620,\n\t0x4f54: 0x40479820, 0x4f55: 0x40479a20, 0x4f56: 0x40479c20, 0x4f57: 0x40479e20,\n\t0x4f58: 0x4047a020, 0x4f59: 0x4047a220, 0x4f5a: 0x4047a420, 0x4f5b: 0x4047a620,\n\t0x4f5c: 0x4047a820, 0x4f5d: 0x4047aa20, 0x4f5e: 0x4047ac20, 0x4f5f: 0x4047ae20,\n\t0x4f60: 0x4047b020, 0x4f61: 0x4047b220, 0x4f62: 0x4047b420, 0x4f63: 0x4047b620,\n\t0x4f64: 0x4047b820, 0x4f65: 0x4047ba20, 0x4f66: 0x4047bc20, 0x4f67: 0x40478020,\n\t0x4f68: 0x40477e20, 0x4f69: 0x40478220, 0x4f6a: 0x4047be20, 0x4f6b: 0xa000f302,\n\t0x4f6c: 0xa000f402, 0x4f6d: 0x4047c020, 0x4f6e: 0x4047c220, 0x4f6f: 0x4047c420,\n\t0x4f70: 0x4047c620, 0x4f71: 0x4047c820, 0x4f72: 0x4047ca20, 0x4f73: 0x4047cc20,\n\t0x4f74: 0x4047ce20, 0x4f75: 0x4047d020, 0x4f76: 0x820923e9, 0x4f77: 0xa070f102,\n\t// Block 0x13e, offset 0x4f80\n\t0x4f80: 0xe00001dc, 0x4f81: 0xe00002a3, 0x4f82: 0xe00003be, 0x4f83: 0xe0000498,\n\t0x4f84: 0xe000056a, 0x4f85: 0xe0000634, 0x4f86: 0xe00006e4, 0x4f87: 0xe000078c,\n\t0x4f88: 0xe0000835, 0x4f89: 0xe00008e0,\n\t// Block 0x13f, offset 0x4fc0\n\t0x4fc0: 0x4076e420, 0x4fc1: 0x4076e620, 0x4fc2: 0x4076e820, 0x4fc3: 0x4076ea20,\n\t0x4fc4: 0x4076ec20, 0x4fc5: 0x4076ee20, 0x4fc6: 0x4076f020, 0x4fc7: 0x4076f220,\n\t0x4fc8: 0x4076f420, 0x4fc9: 0x4076f620, 0x4fca: 0x4076f820, 0x4fcb: 0x4076fa20,\n\t0x4fcc: 0x4076fc20, 0x4fcd: 0x4076fe20, 0x4fce: 0x40770020, 0x4fcf: 0x40770220,\n\t0x4fd0: 0x40770420, 0x4fd1: 0x40770620, 0x4fd2: 0x40770820, 0x4fd3: 0x40770a20,\n\t0x4fd4: 0x40770c20, 0x4fd5: 0x40770e20, 0x4fd6: 0x40771020, 0x4fd7: 0x40771220,\n\t0x4fd8: 0x40771420, 0x4fd9: 0x40771620, 0x4fda: 0x40771820, 0x4fdb: 0x40771a20,\n\t0x4fdc: 0x40771c20, 0x4fdd: 0x40771e20, 0x4fde: 0x40772020, 0x4fdf: 0x40772220,\n\t0x4fe0: 0x40772420, 0x4fe1: 0x40772620, 0x4fe2: 0x40772820, 0x4fe3: 0x40772a20,\n\t0x4fe4: 0x40772c20, 0x4fe5: 0x40772e20, 0x4fe6: 0x40773020, 0x4fe7: 0x40773220,\n\t0x4fe8: 0x40773420, 0x4fe9: 0x40773620, 0x4fea: 0x40773820, 0x4feb: 0x40773a20,\n\t0x4fec: 0x40773c20, 0x4fed: 0x40773e20, 0x4fee: 0x40774020, 0x4fef: 0x40774220,\n\t0x4ff0: 0x40774420, 0x4ff1: 0x40774620, 0x4ff2: 0x40774820, 0x4ff3: 0x40774a20,\n\t0x4ff4: 0x40774c20, 0x4ff5: 0x40774e20, 0x4ff6: 0x40775020, 0x4ff7: 0x40775220,\n\t0x4ff8: 0x40775420, 0x4ff9: 0x40775620, 0x4ffa: 0x40775820, 0x4ffb: 0x40775a20,\n\t0x4ffc: 0x40775c20, 0x4ffd: 0x40775e20, 0x4ffe: 0x40776020, 0x4fff: 0x40776220,\n\t// Block 0x140, offset 0x5000\n\t0x5000: 0x40776420, 0x5001: 0x40776620, 0x5002: 0x40776820, 0x5003: 0x40776a20,\n\t0x5004: 0x40776c20, 0x5005: 0x40776e20, 0x5006: 0x40777020, 0x5007: 0x40777220,\n\t0x5008: 0x40777420, 0x5009: 0x40777620, 0x500a: 0x40777820, 0x500b: 0x40777a20,\n\t0x500c: 0x40777c20, 0x500d: 0x40777e20, 0x500e: 0x40778020, 0x500f: 0x40778220,\n\t0x5010: 0x40778420, 0x5011: 0x40778620, 0x5012: 0x40778820, 0x5013: 0x40778a20,\n\t0x5014: 0x40778c20, 0x5015: 0x40778e20, 0x5016: 0x40779020, 0x5017: 0x40779220,\n\t0x5018: 0x40779420, 0x5019: 0x40779620, 0x501a: 0x40779820, 0x501b: 0x40779a20,\n\t0x501c: 0x40779c20, 0x501d: 0x40779e20, 0x501e: 0x4077a020, 0x501f: 0x4077a220,\n\t0x5020: 0x4077a420, 0x5021: 0x4077a620, 0x5022: 0x4077a820, 0x5023: 0x4077aa20,\n\t0x5024: 0x4077ac20, 0x5025: 0x4077ae20, 0x5026: 0x4077b020, 0x5027: 0x4077b220,\n\t0x5028: 0x4077b420, 0x5029: 0x4077b620, 0x502a: 0x4077b820, 0x502b: 0x4077ba20,\n\t0x502c: 0x4077bc20, 0x502d: 0x4077be20, 0x502e: 0x4077c020, 0x502f: 0x4077c220,\n\t0x5030: 0x4077c420, 0x5031: 0x4077c620, 0x5032: 0x4077c820, 0x5033: 0x4077ca20,\n\t0x5034: 0x4077cc20, 0x5035: 0x4077ce20, 0x5036: 0x4077d020, 0x5037: 0x4077d220,\n\t0x5038: 0x4077d420, 0x5039: 0x4077d620, 0x503a: 0x4077d820, 0x503b: 0x4077da20,\n\t0x503c: 0x4077dc20, 0x503d: 0x4077de20, 0x503e: 0x4077e020, 0x503f: 0x4077e220,\n\t// Block 0x141, offset 0x5040\n\t0x5040: 0x4077e420, 0x5041: 0x4077e620, 0x5042: 0x4077e820, 0x5043: 0x4077ea20,\n\t0x5044: 0x4077ec20, 0x5045: 0x4077ee20, 0x5046: 0x4077f020, 0x5047: 0x4077f220,\n\t0x5048: 0x4077f420, 0x5049: 0x4077f620, 0x504a: 0x4077f820, 0x504b: 0x4077fa20,\n\t0x504c: 0x4077fc20, 0x504d: 0x4077fe20, 0x504e: 0x40780020, 0x504f: 0x40780220,\n\t0x5050: 0x40780420, 0x5051: 0x40780620, 0x5052: 0x40780820, 0x5053: 0x40780a20,\n\t0x5054: 0x40780c20, 0x5055: 0x40780e20, 0x5056: 0x40781020, 0x5057: 0x40781220,\n\t0x5058: 0x40781420, 0x5059: 0x40781620, 0x505a: 0x40781820, 0x505b: 0x40781a20,\n\t0x505c: 0x40781c20, 0x505d: 0x40781e20, 0x505e: 0x40782020, 0x505f: 0x40782220,\n\t0x5060: 0x40782420, 0x5061: 0x40782620, 0x5062: 0x40782820, 0x5063: 0x40782a20,\n\t0x5064: 0x40782c20, 0x5065: 0x40782e20, 0x5066: 0x40783020, 0x5067: 0x40783220,\n\t0x5068: 0x40783420, 0x5069: 0x40783620, 0x506a: 0x40783820, 0x506b: 0x40783a20,\n\t0x506c: 0x40783c20, 0x506d: 0x40783e20, 0x506e: 0x40784020, 0x506f: 0x40784220,\n\t0x5070: 0x40784420, 0x5071: 0x40784620, 0x5072: 0x40784820, 0x5073: 0x40784a20,\n\t0x5074: 0x40784c20, 0x5075: 0x40784e20, 0x5076: 0x40785020, 0x5077: 0x40785220,\n\t0x5078: 0x40785420, 0x5079: 0x40785620, 0x507a: 0x40785820, 0x507b: 0x40785a20,\n\t0x507c: 0x40785c20, 0x507d: 0x40785e20, 0x507e: 0x40786020, 0x507f: 0x40786220,\n\t// Block 0x142, offset 0x5080\n\t0x5080: 0x40786420, 0x5081: 0x40786620, 0x5082: 0x40786820, 0x5083: 0x40786a20,\n\t0x5084: 0x40786c20, 0x5085: 0x40786e20, 0x5086: 0x40787020, 0x5087: 0x40787220,\n\t0x5088: 0x40787420, 0x5089: 0x40787620, 0x508a: 0x40787820, 0x508b: 0x40787a20,\n\t0x508c: 0x40787c20, 0x508d: 0x40787e20, 0x508e: 0x40788020, 0x508f: 0x40788220,\n\t0x5090: 0x40788420, 0x5091: 0x40788620, 0x5092: 0x40788820, 0x5093: 0x40788a20,\n\t0x5094: 0x40788c20, 0x5095: 0x40788e20, 0x5096: 0x40789020, 0x5097: 0x40789220,\n\t0x5098: 0x40789420, 0x5099: 0x40789620, 0x509a: 0x40789820, 0x509b: 0x40789a20,\n\t0x509c: 0x40789c20, 0x509d: 0x40789e20, 0x509e: 0x4078a020, 0x509f: 0x4078a220,\n\t0x50a0: 0x4078a420, 0x50a1: 0x4078a620, 0x50a2: 0x4078a820, 0x50a3: 0x4078aa20,\n\t0x50a4: 0x4078ac20, 0x50a5: 0x4078ae20, 0x50a6: 0x4078b020, 0x50a7: 0x4078b220,\n\t0x50a8: 0x4078b420, 0x50a9: 0x4078b620, 0x50aa: 0x4078b820, 0x50ab: 0x4078ba20,\n\t0x50ac: 0x4078bc20, 0x50ad: 0x4078be20, 0x50ae: 0x4078c020, 0x50af: 0x4078c220,\n\t0x50b0: 0x4078c420, 0x50b1: 0x4078c620, 0x50b2: 0x4078c820, 0x50b3: 0x4078ca20,\n\t0x50b4: 0x4078cc20, 0x50b5: 0x4078ce20, 0x50b6: 0x4078d020, 0x50b7: 0x4078d220,\n\t0x50b8: 0x4078d420, 0x50b9: 0x4078d620, 0x50ba: 0x4078d820, 0x50bb: 0x4078da20,\n\t0x50bc: 0x4078dc20, 0x50bd: 0x4078de20, 0x50be: 0x4078e020, 0x50bf: 0x4078e220,\n\t// Block 0x143, offset 0x50c0\n\t0x50c0: 0x4078e420, 0x50c1: 0x4078e620, 0x50c2: 0x4078e820, 0x50c3: 0x4078ea20,\n\t0x50c4: 0x4078ec20, 0x50c5: 0x4078ee20, 0x50c6: 0x4078f020, 0x50c7: 0x4078f220,\n\t0x50c8: 0x4078f420, 0x50c9: 0x4078f620, 0x50ca: 0x4078f820, 0x50cb: 0x4078fa20,\n\t0x50cc: 0x4078fc20, 0x50cd: 0x4078fe20, 0x50ce: 0x40790020, 0x50cf: 0x40790220,\n\t0x50d0: 0x40790420, 0x50d1: 0x40790620, 0x50d2: 0x40790820, 0x50d3: 0x40790a20,\n\t0x50d4: 0x40790c20, 0x50d5: 0x40790e20, 0x50d6: 0x40791020, 0x50d7: 0x40791220,\n\t0x50d8: 0x40791420, 0x50d9: 0x40791620, 0x50da: 0x40791820, 0x50db: 0x40791a20,\n\t0x50dc: 0x40791c20, 0x50dd: 0x40791e20, 0x50de: 0x40792020, 0x50df: 0x40792220,\n\t0x50e0: 0x40792420, 0x50e1: 0x40792620, 0x50e2: 0x40792820, 0x50e3: 0x40792a20,\n\t0x50e4: 0x40792c20, 0x50e5: 0x40792e20, 0x50e6: 0x40793020, 0x50e7: 0x40793220,\n\t0x50e8: 0x40793420, 0x50e9: 0x40793620, 0x50ea: 0x40793820, 0x50eb: 0x40793a20,\n\t0x50ec: 0x40793c20, 0x50ed: 0x40793e20, 0x50ee: 0x40794020, 0x50ef: 0x40794220,\n\t0x50f0: 0x40794420, 0x50f1: 0x40794620, 0x50f2: 0x40794820, 0x50f3: 0x40794a20,\n\t0x50f4: 0x40794c20, 0x50f5: 0x40794e20, 0x50f6: 0x40795020, 0x50f7: 0x40795220,\n\t0x50f8: 0x40795420, 0x50f9: 0x40795620, 0x50fa: 0x40795820, 0x50fb: 0x40795a20,\n\t0x50fc: 0x40795c20, 0x50fd: 0x40795e20, 0x50fe: 0x40796020, 0x50ff: 0x40796220,\n\t// Block 0x144, offset 0x5100\n\t0x5100: 0x40796420, 0x5101: 0x40796620, 0x5102: 0x40796820, 0x5103: 0x40796a20,\n\t0x5104: 0x40796c20, 0x5105: 0x40796e20, 0x5106: 0x40797020, 0x5107: 0x40797220,\n\t0x5108: 0x40797420, 0x5109: 0x40797620, 0x510a: 0x40797820, 0x510b: 0x40797a20,\n\t0x510c: 0x40797c20, 0x510d: 0x40797e20, 0x510e: 0x40798020, 0x510f: 0x40798220,\n\t0x5110: 0x40798420, 0x5111: 0x40798620, 0x5112: 0x40798820, 0x5113: 0x40798a20,\n\t0x5114: 0x40798c20, 0x5115: 0x40798e20, 0x5116: 0x40799020, 0x5117: 0x40799220,\n\t0x5118: 0x40799420, 0x5119: 0x40799620, 0x511a: 0x40799820, 0x511b: 0x40799a20,\n\t0x511c: 0x40799c20, 0x511d: 0x40799e20, 0x511e: 0x4079a020, 0x511f: 0x4079a220,\n\t0x5120: 0x4079a420, 0x5121: 0x4079a620, 0x5122: 0x4079a820, 0x5123: 0x4079aa20,\n\t0x5124: 0x4079ac20, 0x5125: 0x4079ae20, 0x5126: 0x4079b020, 0x5127: 0x4079b220,\n\t0x5128: 0x4079b420, 0x5129: 0x4079b620, 0x512a: 0x4079b820, 0x512b: 0x4079ba20,\n\t0x512c: 0x4079bc20, 0x512d: 0x4079be20, 0x512e: 0x4079c020, 0x512f: 0x4079c220,\n\t0x5130: 0x4079c420, 0x5131: 0x4079c620, 0x5132: 0x4079c820, 0x5133: 0x4079ca20,\n\t0x5134: 0x4079cc20, 0x5135: 0x4079ce20, 0x5136: 0x4079d020, 0x5137: 0x4079d220,\n\t0x5138: 0x4079d420, 0x5139: 0x4079d620, 0x513a: 0x4079d820, 0x513b: 0x4079da20,\n\t0x513c: 0x4079dc20, 0x513d: 0x4079de20, 0x513e: 0x4079e020, 0x513f: 0x4079e220,\n\t// Block 0x145, offset 0x5140\n\t0x5140: 0x4079e420, 0x5141: 0x4079e620, 0x5142: 0x4079e820, 0x5143: 0x4079ea20,\n\t0x5144: 0x4079ec20, 0x5145: 0x4079ee20, 0x5146: 0x4079f020, 0x5147: 0x4079f220,\n\t0x5148: 0x4079f420, 0x5149: 0x4079f620, 0x514a: 0x4079f820, 0x514b: 0x4079fa20,\n\t0x514c: 0x4079fc20, 0x514d: 0x4079fe20, 0x514e: 0x407a0020, 0x514f: 0x407a0220,\n\t0x5150: 0x407a0420, 0x5151: 0x407a0620, 0x5152: 0x407a0820, 0x5153: 0x407a0a20,\n\t0x5154: 0x407a0c20, 0x5155: 0x407a0e20, 0x5156: 0x407a1020, 0x5157: 0x407a1220,\n\t0x5158: 0x407a1420, 0x5159: 0x407a1620, 0x515a: 0x407a1820, 0x515b: 0x407a1a20,\n\t0x515c: 0x407a1c20, 0x515d: 0x407a1e20, 0x515e: 0x407a2020, 0x515f: 0x407a2220,\n\t0x5160: 0x407a2420, 0x5161: 0x407a2620, 0x5162: 0x407a2820, 0x5163: 0x407a2a20,\n\t0x5164: 0x407a2c20, 0x5165: 0x407a2e20, 0x5166: 0x407a3020, 0x5167: 0x407a3220,\n\t0x5168: 0x407a3420, 0x5169: 0x407a3620, 0x516a: 0x407a3820, 0x516b: 0x407a3a20,\n\t0x516c: 0x407a3c20, 0x516d: 0x407a3e20, 0x516e: 0x407a4020, 0x516f: 0x407a4220,\n\t0x5170: 0x407a4420, 0x5171: 0x407a4620, 0x5172: 0x407a4820, 0x5173: 0x407a4a20,\n\t0x5174: 0x407a4c20, 0x5175: 0x407a4e20, 0x5176: 0x407a5020, 0x5177: 0x407a5220,\n\t0x5178: 0x407a5420, 0x5179: 0x407a5620, 0x517a: 0x407a5820, 0x517b: 0x407a5a20,\n\t0x517c: 0x407a5c20, 0x517d: 0x407a5e20, 0x517e: 0x407a6020, 0x517f: 0x407a6220,\n\t// Block 0x146, offset 0x5180\n\t0x5180: 0x407a6420, 0x5181: 0x407a6620, 0x5182: 0x407a6820, 0x5183: 0x407a6a20,\n\t0x5184: 0x407a6c20, 0x5185: 0x407a6e20, 0x5186: 0x407a7020, 0x5187: 0x407a7220,\n\t0x5188: 0x407a7420, 0x5189: 0x407a7620, 0x518a: 0x407a7820, 0x518b: 0x407a7a20,\n\t0x518c: 0x407a7c20, 0x518d: 0x407a7e20, 0x518e: 0x407a8020, 0x518f: 0x407a8220,\n\t0x5190: 0x407a8420, 0x5191: 0x407a8620, 0x5192: 0x407a8820, 0x5193: 0x407a8a20,\n\t0x5194: 0x407a8c20, 0x5195: 0x407a8e20, 0x5196: 0x407a9020, 0x5197: 0x407a9220,\n\t0x5198: 0x407a9420, 0x5199: 0x407a9620, 0x519a: 0x407a9820, 0x519b: 0x407a9a20,\n\t0x519c: 0x407a9c20, 0x519d: 0x407a9e20, 0x519e: 0x407aa020, 0x519f: 0x407aa220,\n\t0x51a0: 0x407aa420, 0x51a1: 0x407aa620, 0x51a2: 0x407aa820, 0x51a3: 0x407aaa20,\n\t0x51a4: 0x407aac20, 0x51a5: 0x407aae20, 0x51a6: 0x407ab020, 0x51a7: 0x407ab220,\n\t0x51a8: 0x407ab420, 0x51a9: 0x407ab620, 0x51aa: 0x407ab820, 0x51ab: 0x407aba20,\n\t0x51ac: 0x407abc20, 0x51ad: 0x407abe20, 0x51ae: 0x407ac020, 0x51af: 0x407ac220,\n\t0x51b0: 0x407ac420, 0x51b1: 0x407ac620, 0x51b2: 0x407ac820, 0x51b3: 0x407aca20,\n\t0x51b4: 0x407acc20, 0x51b5: 0x407ace20, 0x51b6: 0x407ad020, 0x51b7: 0x407ad220,\n\t0x51b8: 0x407ad420, 0x51b9: 0x407ad620, 0x51ba: 0x407ad820, 0x51bb: 0x407ada20,\n\t0x51bc: 0x407adc20, 0x51bd: 0x407ade20, 0x51be: 0x407ae020, 0x51bf: 0x407ae220,\n\t// Block 0x147, offset 0x51c0\n\t0x51c0: 0x407ae420, 0x51c1: 0x407ae620, 0x51c2: 0x407ae820, 0x51c3: 0x407aea20,\n\t0x51c4: 0x407aec20, 0x51c5: 0x407aee20, 0x51c6: 0x407af020, 0x51c7: 0x407af220,\n\t0x51c8: 0x407af420, 0x51c9: 0x407af620, 0x51ca: 0x407af820, 0x51cb: 0x407afa20,\n\t0x51cc: 0x407afc20, 0x51cd: 0x407afe20, 0x51ce: 0x407b0020, 0x51cf: 0x407b0220,\n\t0x51d0: 0x407b0420, 0x51d1: 0x407b0620, 0x51d2: 0x407b0820, 0x51d3: 0x407b0a20,\n\t0x51d4: 0x407b0c20, 0x51d5: 0x407b0e20, 0x51d6: 0x407b1020, 0x51d7: 0x407b1220,\n\t0x51d8: 0x407b1420, 0x51d9: 0x407b1620, 0x51da: 0x407b1820, 0x51db: 0x407b1a20,\n\t0x51dc: 0x407b1c20, 0x51dd: 0x407b1e20, 0x51de: 0x407b2020, 0x51df: 0x407b2220,\n\t0x51e0: 0x407b2420, 0x51e1: 0x407b2620, 0x51e2: 0x407b2820, 0x51e3: 0x407b2a20,\n\t0x51e4: 0x407b2c20, 0x51e5: 0x407b2e20, 0x51e6: 0x407b3020, 0x51e7: 0x407b3220,\n\t0x51e8: 0x407b3420, 0x51e9: 0x407b3620, 0x51ea: 0x407b3820, 0x51eb: 0x407b3a20,\n\t0x51ec: 0x407b3c20, 0x51ed: 0x407b3e20, 0x51ee: 0x407b4020, 0x51ef: 0x407b4220,\n\t0x51f0: 0x407b4420, 0x51f1: 0x407b4620, 0x51f2: 0x407b4820, 0x51f3: 0x407b4a20,\n\t0x51f4: 0x407b4c20, 0x51f5: 0x407b4e20, 0x51f6: 0x407b5020, 0x51f7: 0x407b5220,\n\t0x51f8: 0x407b5420, 0x51f9: 0x407b5620, 0x51fa: 0x407b5820, 0x51fb: 0x407b5a20,\n\t0x51fc: 0x407b5c20, 0x51fd: 0x407b5e20, 0x51fe: 0x407b6020, 0x51ff: 0x407b6220,\n\t// Block 0x148, offset 0x5200\n\t0x5200: 0x407b6420, 0x5201: 0x407b6620, 0x5202: 0x407b6820, 0x5203: 0x407b6a20,\n\t0x5204: 0x407b6c20, 0x5205: 0x407b6e20, 0x5206: 0x407b7020, 0x5207: 0x407b7220,\n\t0x5208: 0x407b7420, 0x5209: 0x407b7620, 0x520a: 0x407b7820, 0x520b: 0x407b7a20,\n\t0x520c: 0x407b7c20, 0x520d: 0x407b7e20, 0x520e: 0x407b8020, 0x520f: 0x407b8220,\n\t0x5210: 0x407b8420, 0x5211: 0x407b8620, 0x5212: 0x407b8820, 0x5213: 0x407b8a20,\n\t0x5214: 0x407b8c20, 0x5215: 0x407b8e20, 0x5216: 0x407b9020, 0x5217: 0x407b9220,\n\t0x5218: 0x407b9420, 0x5219: 0x407b9620, 0x521a: 0x407b9820, 0x521b: 0x407b9a20,\n\t0x521c: 0x407b9c20, 0x521d: 0x407b9e20, 0x521e: 0x407ba020, 0x521f: 0x407ba220,\n\t0x5220: 0x407ba420, 0x5221: 0x407ba620, 0x5222: 0x407ba820, 0x5223: 0x407baa20,\n\t0x5224: 0x407bac20, 0x5225: 0x407bae20, 0x5226: 0x407bb020, 0x5227: 0x407bb220,\n\t0x5228: 0x407bb420, 0x5229: 0x407bb620, 0x522a: 0x407bb820, 0x522b: 0x407bba20,\n\t0x522c: 0x407bbc20, 0x522d: 0x407bbe20, 0x522e: 0x407bc020, 0x522f: 0x407bc220,\n\t0x5230: 0x407bc420, 0x5231: 0x407bc620, 0x5232: 0x407bc820, 0x5233: 0x407bca20,\n\t0x5234: 0x407bcc20, 0x5235: 0x407bce20, 0x5236: 0x407bd020, 0x5237: 0x407bd220,\n\t0x5238: 0x407bd420, 0x5239: 0x407bd620, 0x523a: 0x407bd820, 0x523b: 0x407bda20,\n\t0x523c: 0x407bdc20, 0x523d: 0x407bde20, 0x523e: 0x407be020, 0x523f: 0x407be220,\n\t// Block 0x149, offset 0x5240\n\t0x5240: 0x407be420, 0x5241: 0x407be620, 0x5242: 0x407be820, 0x5243: 0x407bea20,\n\t0x5244: 0x407bec20, 0x5245: 0x407bee20, 0x5246: 0x407bf020, 0x5247: 0x407bf220,\n\t0x5248: 0x407bf420, 0x5249: 0x407bf620, 0x524a: 0x407bf820, 0x524b: 0x407bfa20,\n\t0x524c: 0x407bfc20, 0x524d: 0x407bfe20, 0x524e: 0x407c0020, 0x524f: 0x407c0220,\n\t0x5250: 0x407c0420, 0x5251: 0x407c0620, 0x5252: 0x407c0820, 0x5253: 0x407c0a20,\n\t0x5254: 0x407c0c20, 0x5255: 0x407c0e20, 0x5256: 0x407c1020, 0x5257: 0x407c1220,\n\t0x5258: 0x407c1420, 0x5259: 0x407c1620, 0x525a: 0x407c1820, 0x525b: 0x407c1a20,\n\t0x525c: 0x407c1c20, 0x525d: 0x407c1e20, 0x525e: 0x407c2020, 0x525f: 0x407c2220,\n\t0x5260: 0x407c2420, 0x5261: 0x407c2620, 0x5262: 0x407c2820, 0x5263: 0x407c2a20,\n\t0x5264: 0x407c2c20, 0x5265: 0x407c2e20, 0x5266: 0x407c3020, 0x5267: 0x407c3220,\n\t0x5268: 0x407c3420, 0x5269: 0x407c3620, 0x526a: 0x407c3820, 0x526b: 0x407c3a20,\n\t0x526c: 0x407c3c20, 0x526d: 0x407c3e20, 0x526e: 0x407c4020, 0x526f: 0x407c4220,\n\t0x5270: 0x407c4420, 0x5271: 0x407c4620, 0x5272: 0x407c4820, 0x5273: 0x407c4a20,\n\t0x5274: 0x407c4c20, 0x5275: 0x407c4e20, 0x5276: 0x407c5020, 0x5277: 0x407c5220,\n\t0x5278: 0x407c5420, 0x5279: 0x407c5620, 0x527a: 0x407c5820, 0x527b: 0x407c5a20,\n\t0x527c: 0x407c5c20, 0x527d: 0x407c5e20, 0x527e: 0x407c6020, 0x527f: 0x407c6220,\n\t// Block 0x14a, offset 0x5280\n\t0x5280: 0x407c6420, 0x5281: 0x407c6620, 0x5282: 0x407c6820, 0x5283: 0x407c6a20,\n\t0x5284: 0x407c6c20, 0x5285: 0x407c6e20, 0x5286: 0x407c7020, 0x5287: 0x407c7220,\n\t0x5288: 0x407c7420, 0x5289: 0x407c7620, 0x528a: 0x407c7820, 0x528b: 0x407c7a20,\n\t0x528c: 0x407c7c20, 0x528d: 0x407c7e20, 0x528e: 0x407c8020, 0x528f: 0x407c8220,\n\t0x5290: 0x407c8420, 0x5291: 0x407c8620, 0x5292: 0x407c8820, 0x5293: 0x407c8a20,\n\t0x5294: 0x407c8c20, 0x5295: 0x407c8e20, 0x5296: 0x407c9020, 0x5297: 0x407c9220,\n\t0x5298: 0x407c9420, 0x5299: 0x407c9620, 0x529a: 0x407c9820, 0x529b: 0x407c9a20,\n\t0x529c: 0x407c9c20, 0x529d: 0x407c9e20, 0x529e: 0x407ca020, 0x529f: 0x407ca220,\n\t0x52a0: 0x407ca420, 0x52a1: 0x407ca620, 0x52a2: 0x407ca820, 0x52a3: 0x407caa20,\n\t0x52a4: 0x407cac20, 0x52a5: 0x407cae20, 0x52a6: 0x407cb020, 0x52a7: 0x407cb220,\n\t0x52a8: 0x407cb420, 0x52a9: 0x407cb620, 0x52aa: 0x407cb820, 0x52ab: 0x407cba20,\n\t0x52ac: 0x407cbc20, 0x52ad: 0x407cbe20, 0x52ae: 0x407cc020, 0x52af: 0x407cc220,\n\t0x52b0: 0x407cc420, 0x52b1: 0x407cc620, 0x52b2: 0x407cc820, 0x52b3: 0x407cca20,\n\t0x52b4: 0x407ccc20, 0x52b5: 0x407cce20, 0x52b6: 0x407cd020, 0x52b7: 0x407cd220,\n\t0x52b8: 0x407cd420, 0x52b9: 0x407cd620, 0x52ba: 0x407cd820, 0x52bb: 0x407cda20,\n\t0x52bc: 0x407cdc20, 0x52bd: 0x407cde20, 0x52be: 0x407ce020, 0x52bf: 0x407ce220,\n\t// Block 0x14b, offset 0x52c0\n\t0x52c0: 0x407ce420, 0x52c1: 0x407ce620, 0x52c2: 0x407ce820, 0x52c3: 0x407cea20,\n\t0x52c4: 0x407cec20, 0x52c5: 0x407cee20, 0x52c6: 0x407cf020, 0x52c7: 0x407cf220,\n\t0x52c8: 0x407cf420, 0x52c9: 0x407cf620, 0x52ca: 0x407cf820, 0x52cb: 0x407cfa20,\n\t0x52cc: 0x407cfc20, 0x52cd: 0x407cfe20, 0x52ce: 0x407d0020, 0x52cf: 0x407d0220,\n\t0x52d0: 0x407d0420, 0x52d1: 0x407d0620, 0x52d2: 0x407d0820, 0x52d3: 0x407d0a20,\n\t0x52d4: 0x407d0c20, 0x52d5: 0x407d0e20, 0x52d6: 0x407d1020, 0x52d7: 0x407d1220,\n\t0x52d8: 0x407d1420, 0x52d9: 0x407d1620, 0x52da: 0x407d1820, 0x52db: 0x407d1a20,\n\t0x52dc: 0x407d1c20, 0x52dd: 0x407d1e20, 0x52de: 0x407d2020, 0x52df: 0x407d2220,\n\t0x52e0: 0x407d2420, 0x52e1: 0x407d2620, 0x52e2: 0x407d2820, 0x52e3: 0x407d2a20,\n\t0x52e4: 0x407d2c20, 0x52e5: 0x407d2e20, 0x52e6: 0x407d3020, 0x52e7: 0x407d3220,\n\t0x52e8: 0x407d3420, 0x52e9: 0x407d3620, 0x52ea: 0x407d3820, 0x52eb: 0x407d3a20,\n\t0x52ec: 0x407d3c20, 0x52ed: 0x407d3e20, 0x52ee: 0x407d4020, 0x52ef: 0x407d4220,\n\t0x52f0: 0x407d4420, 0x52f1: 0x407d4620, 0x52f2: 0x407d4820, 0x52f3: 0x407d4a20,\n\t0x52f4: 0x407d4c20, 0x52f5: 0x407d4e20, 0x52f6: 0x407d5020, 0x52f7: 0x407d5220,\n\t0x52f8: 0x407d5420, 0x52f9: 0x407d5620, 0x52fa: 0x407d5820, 0x52fb: 0x407d5a20,\n\t0x52fc: 0x407d5c20, 0x52fd: 0x407d5e20, 0x52fe: 0x407d6020, 0x52ff: 0x407d6220,\n\t// Block 0x14c, offset 0x5300\n\t0x5300: 0x407d6420, 0x5301: 0x407d6620, 0x5302: 0x407d6820, 0x5303: 0x407d6a20,\n\t0x5304: 0x407d6c20, 0x5305: 0x407d6e20, 0x5306: 0x407d7020, 0x5307: 0x407d7220,\n\t0x5308: 0x407d7420, 0x5309: 0x407d7620, 0x530a: 0x407d7820, 0x530b: 0x407d7a20,\n\t0x530c: 0x407d7c20, 0x530d: 0x407d7e20, 0x530e: 0x407d8020, 0x530f: 0x407d8220,\n\t0x5310: 0x407d8420, 0x5311: 0x407d8620, 0x5312: 0x407d8820, 0x5313: 0x407d8a20,\n\t0x5314: 0x407d8c20, 0x5315: 0x407d8e20, 0x5316: 0x407d9020, 0x5317: 0x407d9220,\n\t0x5318: 0x407d9420, 0x5319: 0x407d9620, 0x531a: 0x407d9820, 0x531b: 0x407d9a20,\n\t0x531c: 0x407d9c20, 0x531d: 0x407d9e20, 0x531e: 0x407da020, 0x531f: 0x407da220,\n\t0x5320: 0x407da420, 0x5321: 0x407da620, 0x5322: 0x407da820, 0x5323: 0x407daa20,\n\t0x5324: 0x407dac20, 0x5325: 0x407dae20, 0x5326: 0x407db020, 0x5327: 0x407db220,\n\t0x5328: 0x407db420, 0x5329: 0x407db620, 0x532a: 0x407db820, 0x532b: 0x407dba20,\n\t0x532c: 0x407dbc20, 0x532d: 0x407dbe20, 0x532e: 0x407dc020,\n\t// Block 0x14d, offset 0x5340\n\t0x5340: 0xe0000394, 0x5341: 0xe000045f, 0x5342: 0xe0000534, 0x5343: 0xe0000610,\n\t0x5344: 0xe00006cc, 0x5345: 0xe0000771, 0x5346: 0xe000081d, 0x5347: 0xe00008c2,\n\t0x5348: 0xe0000462, 0x5349: 0xe0000537, 0x534a: 0xe0000613, 0x534b: 0xe00006cf,\n\t0x534c: 0xe0000774, 0x534d: 0xe0000820, 0x534e: 0xe00008c5, 0x534f: 0xe000053a,\n\t0x5350: 0xe0000616, 0x5351: 0xe00006d2, 0x5352: 0xe0000777, 0x5353: 0xe0000823,\n\t0x5354: 0xe00008c8, 0x5355: 0xe000027f, 0x5356: 0xe0000397, 0x5357: 0xe0000465,\n\t0x5358: 0xe000053d, 0x5359: 0xe0000619, 0x535a: 0xe00006d5, 0x535b: 0xe000077a,\n\t0x535c: 0xe0000826, 0x535d: 0xe00008cb, 0x535e: 0xe0000282, 0x535f: 0xe000039a,\n\t0x5360: 0xe0000468, 0x5361: 0xe0000540, 0x5362: 0xe000061c, 0x5363: 0xe000039d,\n\t0x5364: 0xe000046b, 0x5365: 0xe000046e, 0x5366: 0xe0000543, 0x5367: 0xe000061f,\n\t0x5368: 0xe00006d8, 0x5369: 0xe000077d, 0x536a: 0xe0000829, 0x536b: 0xe00008ce,\n\t0x536c: 0xe0000285, 0x536d: 0xe00003a0, 0x536e: 0xe0000471, 0x536f: 0xe0000474,\n\t0x5370: 0xe0000546, 0x5371: 0xe0000622, 0x5372: 0x4029a020, 0x5373: 0x4029a220,\n\t0x5374: 0xe0000288, 0x5375: 0xe00003a3, 0x5376: 0xe0000477, 0x5377: 0xe000047a,\n\t0x5378: 0xe0000549, 0x5379: 0xe0000625, 0x537a: 0xe000047d, 0x537b: 0xe0000480,\n\t0x537c: 0xe000054c, 0x537d: 0xe000054f, 0x537e: 0xe0000552, 0x537f: 0xe0000555,\n\t// Block 0x14e, offset 0x5380\n\t0x5380: 0xe00006db, 0x5381: 0xe0000780, 0x5382: 0xe0000783, 0x5383: 0xe0000786,\n\t0x5384: 0xe000082c, 0x5385: 0xe000082f, 0x5386: 0xe00008d1, 0x5387: 0xe00008d4,\n\t0x5388: 0xe00008d7, 0x5389: 0xe00008da, 0x538a: 0xe00003a6, 0x538b: 0xe0000483,\n\t0x538c: 0xe0000558, 0x538d: 0xe0000628, 0x538e: 0xe00006de, 0x538f: 0xe000028b,\n\t0x5390: 0xe00003a9, 0x5391: 0xe0000486, 0x5392: 0xe000055b, 0x5393: 0xe000055e,\n\t0x5394: 0xe000062b, 0x5395: 0xe000062e, 0x5396: 0x4029a420, 0x5397: 0x4029a620,\n\t0x5398: 0xe000028e, 0x5399: 0xe00003ac, 0x539a: 0x4029a820, 0x539b: 0x4029aa20,\n\t0x539c: 0x4029ac20, 0x539d: 0x4029ae20, 0x539e: 0x4029b020, 0x539f: 0x4029b220,\n\t0x53a0: 0x4029b420, 0x53a1: 0x4029b620, 0x53a2: 0x4029b820,\n\t0x53b0: 0x4003ca20, 0x53b1: 0x4003cc20, 0x53b2: 0x4003ce20, 0x53b3: 0x4003d020,\n\t// Block 0x14f, offset 0x53c0\n\t0x53c0: 0x407dc220, 0x53c1: 0x407dc420, 0x53c2: 0x407dc620, 0x53c3: 0x407dc820,\n\t0x53c4: 0x407dca20, 0x53c5: 0x407dcc20, 0x53c6: 0x407dce20, 0x53c7: 0x407dd020,\n\t0x53c8: 0x407dd220, 0x53c9: 0x407dd420, 0x53ca: 0x407dd620, 0x53cb: 0x407dd820,\n\t0x53cc: 0x407dda20, 0x53cd: 0x407ddc20, 0x53ce: 0x407dde20, 0x53cf: 0x407de020,\n\t0x53d0: 0x407de220, 0x53d1: 0x407de420, 0x53d2: 0x407de620, 0x53d3: 0x407de820,\n\t0x53d4: 0x407dea20, 0x53d5: 0x407dec20, 0x53d6: 0x407dee20, 0x53d7: 0x407df020,\n\t0x53d8: 0x407df220, 0x53d9: 0x407df420, 0x53da: 0x407df620, 0x53db: 0x407df820,\n\t0x53dc: 0x407dfa20, 0x53dd: 0x407dfc20, 0x53de: 0x407dfe20, 0x53df: 0x407e0020,\n\t0x53e0: 0x407e0220, 0x53e1: 0x407e0420, 0x53e2: 0x407e0620, 0x53e3: 0x407e0820,\n\t0x53e4: 0x407e0a20, 0x53e5: 0x407e0c20, 0x53e6: 0x407e0e20, 0x53e7: 0x407e1020,\n\t0x53e8: 0x407e1220, 0x53e9: 0x407e1420, 0x53ea: 0x407e1620, 0x53eb: 0x407e1820,\n\t0x53ec: 0x407e1a20, 0x53ed: 0x407e1c20, 0x53ee: 0x407e1e20, 0x53ef: 0x407e2020,\n\t0x53f0: 0x407e2220, 0x53f1: 0x407e2420, 0x53f2: 0x407e2620, 0x53f3: 0x407e2820,\n\t0x53f4: 0x407e2a20, 0x53f5: 0x407e2c20, 0x53f6: 0x407e2e20, 0x53f7: 0x407e3020,\n\t0x53f8: 0x407e3220, 0x53f9: 0x407e3420, 0x53fa: 0x407e3620, 0x53fb: 0x407e3820,\n\t0x53fc: 0x407e3a20, 0x53fd: 0x407e3c20, 0x53fe: 0x407e3e20, 0x53ff: 0x407e4020,\n\t// Block 0x150, offset 0x5400\n\t0x5400: 0x407e4220, 0x5401: 0x407e4420, 0x5402: 0x407e4620, 0x5403: 0x407e4820,\n\t0x5404: 0x407e4a20, 0x5405: 0x407e4c20, 0x5406: 0x407e4e20, 0x5407: 0x407e5020,\n\t0x5408: 0x407e5220, 0x5409: 0x407e5420, 0x540a: 0x407e5620, 0x540b: 0x407e5820,\n\t0x540c: 0x407e5a20, 0x540d: 0x407e5c20, 0x540e: 0x407e5e20, 0x540f: 0x407e6020,\n\t0x5410: 0x407e6220, 0x5411: 0x407e6420, 0x5412: 0x407e6620, 0x5413: 0x407e6820,\n\t0x5414: 0x407e6a20, 0x5415: 0x407e6c20, 0x5416: 0x407e6e20, 0x5417: 0x407e7020,\n\t0x5418: 0x407e7220, 0x5419: 0x407e7420, 0x541a: 0x407e7620, 0x541b: 0x407e7820,\n\t0x541c: 0x407e7a20, 0x541d: 0x407e7c20, 0x541e: 0x407e7e20, 0x541f: 0x407e8020,\n\t0x5420: 0x407e8220, 0x5421: 0x407e8420, 0x5422: 0x407e8620, 0x5423: 0x407e8820,\n\t0x5424: 0x407e8a20, 0x5425: 0x407e8c20, 0x5426: 0x407e8e20, 0x5427: 0x407e9020,\n\t0x5428: 0x407e9220, 0x5429: 0x407e9420, 0x542a: 0x407e9620, 0x542b: 0x407e9820,\n\t0x542c: 0x407e9a20, 0x542d: 0x407e9c20, 0x542e: 0x407e9e20, 0x542f: 0x407ea020,\n\t0x5430: 0x407ea220, 0x5431: 0x407ea420, 0x5432: 0x407ea620, 0x5433: 0x407ea820,\n\t0x5434: 0x407eaa20, 0x5435: 0x407eac20, 0x5436: 0x407eae20, 0x5437: 0x407eb020,\n\t0x5438: 0x407eb220, 0x5439: 0x407eb420, 0x543a: 0x407eb620, 0x543b: 0x407eb820,\n\t0x543c: 0x407eba20, 0x543d: 0x407ebc20, 0x543e: 0x407ebe20, 0x543f: 0x407ec020,\n\t// Block 0x151, offset 0x5440\n\t0x5440: 0x407ec220, 0x5441: 0x407ec420, 0x5442: 0x407ec620, 0x5443: 0x407ec820,\n\t0x5444: 0x407eca20, 0x5445: 0x407ecc20, 0x5446: 0x407ece20, 0x5447: 0x407ed020,\n\t0x5448: 0x407ed220, 0x5449: 0x407ed420, 0x544a: 0x407ed620, 0x544b: 0x407ed820,\n\t0x544c: 0x407eda20, 0x544d: 0x407edc20, 0x544e: 0x407ede20, 0x544f: 0x407ee020,\n\t0x5450: 0x407ee220, 0x5451: 0x407ee420, 0x5452: 0x407ee620, 0x5453: 0x407ee820,\n\t0x5454: 0x407eea20, 0x5455: 0x407eec20, 0x5456: 0x407eee20, 0x5457: 0x407ef020,\n\t0x5458: 0x407ef220, 0x5459: 0x407ef420, 0x545a: 0x407ef620, 0x545b: 0x407ef820,\n\t0x545c: 0x407efa20, 0x545d: 0x407efc20, 0x545e: 0x407efe20, 0x545f: 0x407f0020,\n\t0x5460: 0x407f0220, 0x5461: 0x407f0420, 0x5462: 0x407f0620, 0x5463: 0x407f0820,\n\t0x5464: 0x407f0a20, 0x5465: 0x407f0c20, 0x5466: 0x407f0e20, 0x5467: 0x407f1020,\n\t0x5468: 0x407f1220, 0x5469: 0x407f1420, 0x546a: 0x407f1620, 0x546b: 0x407f1820,\n\t0x546c: 0x407f1a20, 0x546d: 0x407f1c20, 0x546e: 0x407f1e20, 0x546f: 0x407f2020,\n\t0x5470: 0x407f2220, 0x5471: 0x407f2420, 0x5472: 0x407f2620, 0x5473: 0x407f2820,\n\t0x5474: 0x407f2a20, 0x5475: 0x407f2c20, 0x5476: 0x407f2e20, 0x5477: 0x407f3020,\n\t0x5478: 0x407f3220, 0x5479: 0x407f3420, 0x547a: 0x407f3620, 0x547b: 0x407f3820,\n\t0x547c: 0x407f3a20, 0x547d: 0x407f3c20, 0x547e: 0x407f3e20, 0x547f: 0x407f4020,\n\t// Block 0x152, offset 0x5480\n\t0x5480: 0x407f4220, 0x5481: 0x407f4420, 0x5482: 0x407f4620, 0x5483: 0x407f4820,\n\t0x5484: 0x407f4a20, 0x5485: 0x407f4c20, 0x5486: 0x407f4e20, 0x5487: 0x407f5020,\n\t0x5488: 0x407f5220, 0x5489: 0x407f5420, 0x548a: 0x407f5620, 0x548b: 0x407f5820,\n\t0x548c: 0x407f5a20, 0x548d: 0x407f5c20, 0x548e: 0x407f5e20, 0x548f: 0x407f6020,\n\t0x5490: 0x407f6220, 0x5491: 0x407f6420, 0x5492: 0x407f6620, 0x5493: 0x407f6820,\n\t0x5494: 0x407f6a20, 0x5495: 0x407f6c20, 0x5496: 0x407f6e20, 0x5497: 0x407f7020,\n\t0x5498: 0x407f7220, 0x5499: 0x407f7420, 0x549a: 0x407f7620, 0x549b: 0x407f7820,\n\t0x549c: 0x407f7a20, 0x549d: 0x407f7c20, 0x549e: 0x407f7e20, 0x549f: 0x407f8020,\n\t0x54a0: 0x407f8220, 0x54a1: 0x407f8420, 0x54a2: 0x407f8620, 0x54a3: 0x407f8820,\n\t0x54a4: 0x407f8a20, 0x54a5: 0x407f8c20, 0x54a6: 0x407f8e20, 0x54a7: 0x407f9020,\n\t0x54a8: 0x407f9220, 0x54a9: 0x407f9420, 0x54aa: 0x407f9620, 0x54ab: 0x407f9820,\n\t0x54ac: 0x407f9a20, 0x54ad: 0x407f9c20, 0x54ae: 0x407f9e20, 0x54af: 0x407fa020,\n\t0x54b0: 0x407fa220, 0x54b1: 0x407fa420, 0x54b2: 0x407fa620, 0x54b3: 0x407fa820,\n\t0x54b4: 0x407faa20, 0x54b5: 0x407fac20, 0x54b6: 0x407fae20, 0x54b7: 0x407fb020,\n\t0x54b8: 0x407fb220, 0x54b9: 0x407fb420, 0x54ba: 0x407fb620, 0x54bb: 0x407fb820,\n\t0x54bc: 0x407fba20, 0x54bd: 0x407fbc20, 0x54be: 0x407fbe20, 0x54bf: 0x407fc020,\n\t// Block 0x153, offset 0x54c0\n\t0x54c0: 0x407fc220, 0x54c1: 0x407fc420, 0x54c2: 0x407fc620, 0x54c3: 0x407fc820,\n\t0x54c4: 0x407fca20, 0x54c5: 0x407fcc20, 0x54c6: 0x407fce20, 0x54c7: 0x407fd020,\n\t0x54c8: 0x407fd220, 0x54c9: 0x407fd420, 0x54ca: 0x407fd620, 0x54cb: 0x407fd820,\n\t0x54cc: 0x407fda20, 0x54cd: 0x407fdc20, 0x54ce: 0x407fde20, 0x54cf: 0x407fe020,\n\t0x54d0: 0x407fe220, 0x54d1: 0x407fe420, 0x54d2: 0x407fe620, 0x54d3: 0x407fe820,\n\t0x54d4: 0x407fea20, 0x54d5: 0x407fec20, 0x54d6: 0x407fee20, 0x54d7: 0x407ff020,\n\t0x54d8: 0x407ff220, 0x54d9: 0x407ff420, 0x54da: 0x407ff620, 0x54db: 0x407ff820,\n\t0x54dc: 0x407ffa20, 0x54dd: 0x407ffc20, 0x54de: 0x407ffe20, 0x54df: 0x40800020,\n\t0x54e0: 0x40800220, 0x54e1: 0x40800420, 0x54e2: 0x40800620, 0x54e3: 0x40800820,\n\t0x54e4: 0x40800a20, 0x54e5: 0x40800c20, 0x54e6: 0x40800e20, 0x54e7: 0x40801020,\n\t0x54e8: 0x40801220, 0x54e9: 0x40801420, 0x54ea: 0x40801620, 0x54eb: 0x40801820,\n\t0x54ec: 0x40801a20, 0x54ed: 0x40801c20, 0x54ee: 0x40801e20, 0x54ef: 0x40802020,\n\t0x54f0: 0x40802220, 0x54f1: 0x40802420, 0x54f2: 0x40802620, 0x54f3: 0x40802820,\n\t0x54f4: 0x40802a20, 0x54f5: 0x40802c20, 0x54f6: 0x40802e20, 0x54f7: 0x40803020,\n\t0x54f8: 0x40803220, 0x54f9: 0x40803420, 0x54fa: 0x40803620, 0x54fb: 0x40803820,\n\t0x54fc: 0x40803a20, 0x54fd: 0x40803c20, 0x54fe: 0x40803e20, 0x54ff: 0x40804020,\n\t// Block 0x154, offset 0x5500\n\t0x5500: 0x40804220, 0x5501: 0x40804420, 0x5502: 0x40804620, 0x5503: 0x40804820,\n\t0x5504: 0x40804a20, 0x5505: 0x40804c20, 0x5506: 0x40804e20, 0x5507: 0x40805020,\n\t0x5508: 0x40805220, 0x5509: 0x40805420, 0x550a: 0x40805620, 0x550b: 0x40805820,\n\t0x550c: 0x40805a20, 0x550d: 0x40805c20, 0x550e: 0x40805e20, 0x550f: 0x40806020,\n\t0x5510: 0x40806220, 0x5511: 0x40806420, 0x5512: 0x40806620, 0x5513: 0x40806820,\n\t0x5514: 0x40806a20, 0x5515: 0x40806c20, 0x5516: 0x40806e20, 0x5517: 0x40807020,\n\t0x5518: 0x40807220, 0x5519: 0x40807420, 0x551a: 0x40807620, 0x551b: 0x40807820,\n\t0x551c: 0x40807a20, 0x551d: 0x40807c20, 0x551e: 0x40807e20, 0x551f: 0x40808020,\n\t0x5520: 0x40808220, 0x5521: 0x40808420, 0x5522: 0x40808620, 0x5523: 0x40808820,\n\t0x5524: 0x40808a20, 0x5525: 0x40808c20, 0x5526: 0x40808e20, 0x5527: 0x40809020,\n\t0x5528: 0x40809220, 0x5529: 0x40809420, 0x552a: 0x40809620, 0x552b: 0x40809820,\n\t0x552c: 0x40809a20, 0x552d: 0x40809c20, 0x552e: 0x40809e20, 0x552f: 0x4080a020,\n\t0x5530: 0x4080a220, 0x5531: 0x4080a420, 0x5532: 0x4080a620, 0x5533: 0x4080a820,\n\t0x5534: 0x4080aa20, 0x5535: 0x4080ac20, 0x5536: 0x4080ae20, 0x5537: 0x4080b020,\n\t0x5538: 0x4080b220, 0x5539: 0x4080b420, 0x553a: 0x4080b620, 0x553b: 0x4080b820,\n\t0x553c: 0x4080ba20, 0x553d: 0x4080bc20, 0x553e: 0x4080be20, 0x553f: 0x4080c020,\n\t// Block 0x155, offset 0x5540\n\t0x5540: 0x4080c220, 0x5541: 0x4080c420, 0x5542: 0x4080c620, 0x5543: 0x4080c820,\n\t0x5544: 0x4080ca20, 0x5545: 0x4080cc20, 0x5546: 0x4080ce20, 0x5547: 0x4080d020,\n\t0x5548: 0x4080d220, 0x5549: 0x4080d420, 0x554a: 0x4080d620, 0x554b: 0x4080d820,\n\t0x554c: 0x4080da20, 0x554d: 0x4080dc20, 0x554e: 0x4080de20, 0x554f: 0x4080e020,\n\t0x5550: 0x4080e220, 0x5551: 0x4080e420, 0x5552: 0x4080e620, 0x5553: 0x4080e820,\n\t0x5554: 0x4080ea20, 0x5555: 0x4080ec20, 0x5556: 0x4080ee20, 0x5557: 0x4080f020,\n\t0x5558: 0x4080f220, 0x5559: 0x4080f420, 0x555a: 0x4080f620, 0x555b: 0x4080f820,\n\t0x555c: 0x4080fa20, 0x555d: 0x4080fc20, 0x555e: 0x4080fe20, 0x555f: 0x40810020,\n\t0x5560: 0x40810220, 0x5561: 0x40810420, 0x5562: 0x40810620, 0x5563: 0x40810820,\n\t0x5564: 0x40810a20, 0x5565: 0x40810c20, 0x5566: 0x40810e20, 0x5567: 0x40811020,\n\t0x5568: 0x40811220, 0x5569: 0x40811420, 0x556a: 0x40811620, 0x556b: 0x40811820,\n\t0x556c: 0x40811a20, 0x556d: 0x40811c20, 0x556e: 0x40811e20, 0x556f: 0x40812020,\n\t0x5570: 0x40812220, 0x5571: 0x40812420, 0x5572: 0x40812620, 0x5573: 0x40812820,\n\t0x5574: 0x40812a20, 0x5575: 0x40812c20, 0x5576: 0x40812e20, 0x5577: 0x40813020,\n\t0x5578: 0x40813220, 0x5579: 0x40813420, 0x557a: 0x40813620, 0x557b: 0x40813820,\n\t0x557c: 0x40813a20, 0x557d: 0x40813c20, 0x557e: 0x40813e20, 0x557f: 0x40814020,\n\t// Block 0x156, offset 0x5580\n\t0x5580: 0x40814220, 0x5581: 0x40814420, 0x5582: 0x40814620, 0x5583: 0x40814820,\n\t0x5584: 0x40814a20, 0x5585: 0x40814c20, 0x5586: 0x40814e20, 0x5587: 0x40815020,\n\t0x5588: 0x40815220, 0x5589: 0x40815420, 0x558a: 0x40815620, 0x558b: 0x40815820,\n\t0x558c: 0x40815a20, 0x558d: 0x40815c20, 0x558e: 0x40815e20, 0x558f: 0x40816020,\n\t0x5590: 0x40816220, 0x5591: 0x40816420, 0x5592: 0x40816620, 0x5593: 0x40816820,\n\t0x5594: 0x40816a20, 0x5595: 0x40816c20, 0x5596: 0x40816e20, 0x5597: 0x40817020,\n\t0x5598: 0x40817220, 0x5599: 0x40817420, 0x559a: 0x40817620, 0x559b: 0x40817820,\n\t0x559c: 0x40817a20, 0x559d: 0x40817c20, 0x559e: 0x40817e20, 0x559f: 0x40818020,\n\t0x55a0: 0x40818220, 0x55a1: 0x40818420, 0x55a2: 0x40818620, 0x55a3: 0x40818820,\n\t0x55a4: 0x40818a20, 0x55a5: 0x40818c20, 0x55a6: 0x40818e20, 0x55a7: 0x40819020,\n\t0x55a8: 0x40819220, 0x55a9: 0x40819420, 0x55aa: 0x40819620, 0x55ab: 0x40819820,\n\t0x55ac: 0x40819a20, 0x55ad: 0x40819c20, 0x55ae: 0x40819e20, 0x55af: 0x4081a020,\n\t0x55b0: 0x4081a220, 0x55b1: 0x4081a420, 0x55b2: 0x4081a620, 0x55b3: 0x4081a820,\n\t0x55b4: 0x4081aa20, 0x55b5: 0x4081ac20, 0x55b6: 0x4081ae20, 0x55b7: 0x4081b020,\n\t0x55b8: 0x4081b220, 0x55b9: 0x4081b420, 0x55ba: 0x4081b620, 0x55bb: 0x4081b820,\n\t0x55bc: 0x4081ba20, 0x55bd: 0x4081bc20, 0x55be: 0x4081be20, 0x55bf: 0x4081c020,\n\t// Block 0x157, offset 0x55c0\n\t0x55c0: 0x4081c220, 0x55c1: 0x4081c420, 0x55c2: 0x4081c620, 0x55c3: 0x4081c820,\n\t0x55c4: 0x4081ca20, 0x55c5: 0x4081cc20, 0x55c6: 0x4081ce20, 0x55c7: 0x4081d020,\n\t0x55c8: 0x4081d220, 0x55c9: 0x4081d420, 0x55ca: 0x4081d620, 0x55cb: 0x4081d820,\n\t0x55cc: 0x4081da20, 0x55cd: 0x4081dc20, 0x55ce: 0x4081de20, 0x55cf: 0x4081e020,\n\t0x55d0: 0x4081e220, 0x55d1: 0x4081e420, 0x55d2: 0x4081e620, 0x55d3: 0x4081e820,\n\t0x55d4: 0x4081ea20, 0x55d5: 0x4081ec20, 0x55d6: 0x4081ee20, 0x55d7: 0x4081f020,\n\t0x55d8: 0x4081f220, 0x55d9: 0x4081f420, 0x55da: 0x4081f620, 0x55db: 0x4081f820,\n\t0x55dc: 0x4081fa20, 0x55dd: 0x4081fc20, 0x55de: 0x4081fe20, 0x55df: 0x40820020,\n\t0x55e0: 0x40820220, 0x55e1: 0x40820420, 0x55e2: 0x40820620, 0x55e3: 0x40820820,\n\t0x55e4: 0x40820a20, 0x55e5: 0x40820c20, 0x55e6: 0x40820e20, 0x55e7: 0x40821020,\n\t0x55e8: 0x40821220, 0x55e9: 0x40821420, 0x55ea: 0x40821620, 0x55eb: 0x40821820,\n\t0x55ec: 0x40821a20, 0x55ed: 0x40821c20, 0x55ee: 0x40821e20, 0x55ef: 0x40822020,\n\t0x55f0: 0x40822220, 0x55f1: 0x40822420, 0x55f2: 0x40822620, 0x55f3: 0x40822820,\n\t0x55f4: 0x40822a20, 0x55f5: 0x40822c20, 0x55f6: 0x40822e20, 0x55f7: 0x40823020,\n\t0x55f8: 0x40823220, 0x55f9: 0x40823420, 0x55fa: 0x40823620, 0x55fb: 0x40823820,\n\t0x55fc: 0x40823a20, 0x55fd: 0x40823c20, 0x55fe: 0x40823e20, 0x55ff: 0x40824020,\n\t// Block 0x158, offset 0x5600\n\t0x5600: 0x40824220, 0x5601: 0x40824420, 0x5602: 0x40824620, 0x5603: 0x40824820,\n\t0x5604: 0x40824a20, 0x5605: 0x40824c20, 0x5606: 0x40824e20, 0x5607: 0x40825020,\n\t0x5608: 0x40825220, 0x5609: 0x40825420, 0x560a: 0x40825620, 0x560b: 0x40825820,\n\t0x560c: 0x40825a20, 0x560d: 0x40825c20, 0x560e: 0x40825e20, 0x560f: 0x40826020,\n\t0x5610: 0x40826220, 0x5611: 0x40826420, 0x5612: 0x40826620, 0x5613: 0x40826820,\n\t0x5614: 0x40826a20, 0x5615: 0x40826c20, 0x5616: 0x40826e20, 0x5617: 0x40827020,\n\t0x5618: 0x40827220, 0x5619: 0x40827420, 0x561a: 0x40827620, 0x561b: 0x40827820,\n\t0x561c: 0x40827a20, 0x561d: 0x40827c20, 0x561e: 0x40827e20, 0x561f: 0x40828020,\n\t0x5620: 0x40828220, 0x5621: 0x40828420, 0x5622: 0x40828620, 0x5623: 0x40828820,\n\t0x5624: 0x40828a20, 0x5625: 0x40828c20, 0x5626: 0x40828e20, 0x5627: 0x40829020,\n\t0x5628: 0x40829220, 0x5629: 0x40829420, 0x562a: 0x40829620, 0x562b: 0x40829820,\n\t0x562c: 0x40829a20, 0x562d: 0x40829c20, 0x562e: 0x40829e20, 0x562f: 0x4082a020,\n\t0x5630: 0x4082a220, 0x5631: 0x4082a420, 0x5632: 0x4082a620, 0x5633: 0x4082a820,\n\t0x5634: 0x4082aa20, 0x5635: 0x4082ac20, 0x5636: 0x4082ae20, 0x5637: 0x4082b020,\n\t0x5638: 0x4082b220, 0x5639: 0x4082b420, 0x563a: 0x4082b620, 0x563b: 0x4082b820,\n\t0x563c: 0x4082ba20, 0x563d: 0x4082bc20, 0x563e: 0x4082be20, 0x563f: 0x4082c020,\n\t// Block 0x159, offset 0x5640\n\t0x5640: 0x4082c220, 0x5641: 0x4082c420, 0x5642: 0x4082c620, 0x5643: 0x4082c820,\n\t0x5644: 0x4082ca20, 0x5645: 0x4082cc20, 0x5646: 0x4082ce20, 0x5647: 0x4082d020,\n\t0x5648: 0x4082d220, 0x5649: 0x4082d420, 0x564a: 0x4082d620, 0x564b: 0x4082d820,\n\t0x564c: 0x4082da20, 0x564d: 0x4082dc20, 0x564e: 0x4082de20, 0x564f: 0x4082e020,\n\t0x5650: 0x4082e220, 0x5651: 0x4082e420, 0x5652: 0x4082e620, 0x5653: 0x4082e820,\n\t0x5654: 0x4082ea20, 0x5655: 0x4082ec20, 0x5656: 0x4082ee20, 0x5657: 0x4082f020,\n\t0x5658: 0x4082f220, 0x5659: 0x4082f420, 0x565a: 0x4082f620, 0x565b: 0x4082f820,\n\t0x565c: 0x4082fa20, 0x565d: 0x4082fc20, 0x565e: 0x4082fe20, 0x565f: 0x40830020,\n\t0x5660: 0x40830220, 0x5661: 0x40830420, 0x5662: 0x40830620, 0x5663: 0x40830820,\n\t0x5664: 0x40830a20, 0x5665: 0x40830c20, 0x5666: 0x40830e20, 0x5667: 0x40831020,\n\t0x5668: 0x40831220, 0x5669: 0x40831420, 0x566a: 0x40831620, 0x566b: 0x40831820,\n\t0x566c: 0x40831a20, 0x566d: 0x40831c20, 0x566e: 0x40831e20, 0x566f: 0x40832020,\n\t0x5670: 0x40832220, 0x5671: 0x40832420, 0x5672: 0x40832620, 0x5673: 0x40832820,\n\t0x5674: 0x40832a20, 0x5675: 0x40832c20, 0x5676: 0x40832e20, 0x5677: 0x40833020,\n\t0x5678: 0x40833220, 0x5679: 0x40833420, 0x567a: 0x40833620, 0x567b: 0x40833820,\n\t0x567c: 0x40833a20, 0x567d: 0x40833c20, 0x567e: 0x40833e20, 0x567f: 0x40834020,\n\t// Block 0x15a, offset 0x5680\n\t0x5680: 0x40834220, 0x5681: 0x40834420, 0x5682: 0x40834620, 0x5683: 0x40834820,\n\t0x5684: 0x40834a20, 0x5685: 0x40834c20, 0x5686: 0x40834e20, 0x5687: 0x40835020,\n\t0x5688: 0x40835220, 0x5689: 0x40835420, 0x568a: 0x40835620, 0x568b: 0x40835820,\n\t0x568c: 0x40835a20, 0x568d: 0x40835c20, 0x568e: 0x40835e20, 0x568f: 0x40836020,\n\t0x5690: 0x40836220, 0x5691: 0x40836420, 0x5692: 0x40836620, 0x5693: 0x40836820,\n\t0x5694: 0x40836a20, 0x5695: 0x40836c20, 0x5696: 0x40836e20, 0x5697: 0x40837020,\n\t0x5698: 0x40837220, 0x5699: 0x40837420, 0x569a: 0x40837620, 0x569b: 0x40837820,\n\t0x569c: 0x40837a20, 0x569d: 0x40837c20, 0x569e: 0x40837e20, 0x569f: 0x40838020,\n\t0x56a0: 0x40838220, 0x56a1: 0x40838420, 0x56a2: 0x40838620, 0x56a3: 0x40838820,\n\t0x56a4: 0x40838a20, 0x56a5: 0x40838c20, 0x56a6: 0x40838e20, 0x56a7: 0x40839020,\n\t0x56a8: 0x40839220, 0x56a9: 0x40839420, 0x56aa: 0x40839620, 0x56ab: 0x40839820,\n\t0x56ac: 0x40839a20, 0x56ad: 0x40839c20, 0x56ae: 0x40839e20, 0x56af: 0x4083a020,\n\t0x56b0: 0x4083a220, 0x56b1: 0x4083a420, 0x56b2: 0x4083a620, 0x56b3: 0x4083a820,\n\t0x56b4: 0x4083aa20, 0x56b5: 0x4083ac20, 0x56b6: 0x4083ae20, 0x56b7: 0x4083b020,\n\t0x56b8: 0x4083b220, 0x56b9: 0x4083b420, 0x56ba: 0x4083b620, 0x56bb: 0x4083b820,\n\t0x56bc: 0x4083ba20, 0x56bd: 0x4083bc20, 0x56be: 0x4083be20, 0x56bf: 0x4083c020,\n\t// Block 0x15b, offset 0x56c0\n\t0x56c0: 0x4083c220, 0x56c1: 0x4083c420, 0x56c2: 0x4083c620, 0x56c3: 0x4083c820,\n\t0x56c4: 0x4083ca20, 0x56c5: 0x4083cc20, 0x56c6: 0x4083ce20, 0x56c7: 0x4083d020,\n\t0x56c8: 0x4083d220, 0x56c9: 0x4083d420, 0x56ca: 0x4083d620, 0x56cb: 0x4083d820,\n\t0x56cc: 0x4083da20, 0x56cd: 0x4083dc20, 0x56ce: 0x4083de20, 0x56cf: 0x4083e020,\n\t0x56d0: 0x4083e220, 0x56d1: 0x4083e420, 0x56d2: 0x4083e620, 0x56d3: 0x4083e820,\n\t0x56d4: 0x4083ea20, 0x56d5: 0x4083ec20, 0x56d6: 0x4083ee20, 0x56d7: 0x4083f020,\n\t0x56d8: 0x4083f220, 0x56d9: 0x4083f420, 0x56da: 0x4083f620, 0x56db: 0x4083f820,\n\t0x56dc: 0x4083fa20, 0x56dd: 0x4083fc20, 0x56de: 0x4083fe20, 0x56df: 0x40840020,\n\t0x56e0: 0x40840220, 0x56e1: 0x40840420, 0x56e2: 0x40840620, 0x56e3: 0x40840820,\n\t0x56e4: 0x40840a20, 0x56e5: 0x40840c20, 0x56e6: 0x40840e20, 0x56e7: 0x40841020,\n\t0x56e8: 0x40841220, 0x56e9: 0x40841420, 0x56ea: 0x40841620, 0x56eb: 0x40841820,\n\t0x56ec: 0x40841a20, 0x56ed: 0x40841c20, 0x56ee: 0x40841e20, 0x56ef: 0x40842020,\n\t0x56f0: 0x40842220, 0x56f1: 0x40842420, 0x56f2: 0x40842620, 0x56f3: 0x40842820,\n\t0x56f4: 0x40842a20, 0x56f5: 0x40842c20, 0x56f6: 0x40842e20, 0x56f7: 0x40843020,\n\t0x56f8: 0x40843220, 0x56f9: 0x40843420, 0x56fa: 0x40843620, 0x56fb: 0x40843820,\n\t0x56fc: 0x40843a20, 0x56fd: 0x40843c20, 0x56fe: 0x40843e20, 0x56ff: 0x40844020,\n\t// Block 0x15c, offset 0x5700\n\t0x5700: 0x40844220, 0x5701: 0x40844420, 0x5702: 0x40844620, 0x5703: 0x40844820,\n\t0x5704: 0x40844a20, 0x5705: 0x40844c20, 0x5706: 0x40844e20, 0x5707: 0x40845020,\n\t0x5708: 0x40845220, 0x5709: 0x40845420, 0x570a: 0x40845620, 0x570b: 0x40845820,\n\t0x570c: 0x40845a20, 0x570d: 0x40845c20, 0x570e: 0x40845e20, 0x570f: 0x40846020,\n\t0x5710: 0x40846220, 0x5711: 0x40846420, 0x5712: 0x40846620, 0x5713: 0x40846820,\n\t0x5714: 0x40846a20, 0x5715: 0x40846c20, 0x5716: 0x40846e20, 0x5717: 0x40847020,\n\t0x5718: 0x40847220, 0x5719: 0x40847420, 0x571a: 0x40847620, 0x571b: 0x40847820,\n\t0x571c: 0x40847a20, 0x571d: 0x40847c20, 0x571e: 0x40847e20, 0x571f: 0x40848020,\n\t0x5720: 0x40848220, 0x5721: 0x40848420, 0x5722: 0x40848620, 0x5723: 0x40848820,\n\t0x5724: 0x40848a20, 0x5725: 0x40848c20, 0x5726: 0x40848e20, 0x5727: 0x40849020,\n\t0x5728: 0x40849220, 0x5729: 0x40849420, 0x572a: 0x40849620, 0x572b: 0x40849820,\n\t0x572c: 0x40849a20, 0x572d: 0x40849c20, 0x572e: 0x40849e20, 0x572f: 0x4084a020,\n\t0x5730: 0x4084a220, 0x5731: 0x4084a420, 0x5732: 0x4084a620, 0x5733: 0x4084a820,\n\t0x5734: 0x4084aa20, 0x5735: 0x4084ac20, 0x5736: 0x4084ae20, 0x5737: 0x4084b020,\n\t0x5738: 0x4084b220, 0x5739: 0x4084b420, 0x573a: 0x4084b620, 0x573b: 0x4084b820,\n\t0x573c: 0x4084ba20, 0x573d: 0x4084bc20, 0x573e: 0x4084be20, 0x573f: 0x4084c020,\n\t// Block 0x15d, offset 0x5740\n\t0x5740: 0x4084c220, 0x5741: 0x4084c420, 0x5742: 0x4084c620, 0x5743: 0x4084c820,\n\t0x5744: 0x4084ca20, 0x5745: 0x4084cc20, 0x5746: 0x4084ce20, 0x5747: 0x4084d020,\n\t0x5748: 0x4084d220, 0x5749: 0x4084d420, 0x574a: 0x4084d620, 0x574b: 0x4084d820,\n\t0x574c: 0x4084da20, 0x574d: 0x4084dc20, 0x574e: 0x4084de20, 0x574f: 0x4084e020,\n\t0x5750: 0x4084e220, 0x5751: 0x4084e420, 0x5752: 0x4084e620, 0x5753: 0x4084e820,\n\t0x5754: 0x4084ea20, 0x5755: 0x4084ec20, 0x5756: 0x4084ee20, 0x5757: 0x4084f020,\n\t0x5758: 0x4084f220, 0x5759: 0x4084f420, 0x575a: 0x4084f620, 0x575b: 0x4084f820,\n\t0x575c: 0x4084fa20, 0x575d: 0x4084fc20, 0x575e: 0x4084fe20, 0x575f: 0x40850020,\n\t0x5760: 0x40850220, 0x5761: 0x40850420, 0x5762: 0x40850620, 0x5763: 0x40850820,\n\t0x5764: 0x40850a20, 0x5765: 0x40850c20, 0x5766: 0x40850e20, 0x5767: 0x40851020,\n\t0x5768: 0x40851220, 0x5769: 0x40851420, 0x576a: 0x40851620, 0x576b: 0x40851820,\n\t0x576c: 0x40851a20, 0x576d: 0x40851c20, 0x576e: 0x40851e20, 0x576f: 0x40852020,\n\t0x5770: 0x40852220, 0x5771: 0x40852420, 0x5772: 0x40852620, 0x5773: 0x40852820,\n\t0x5774: 0x40852a20, 0x5775: 0x40852c20, 0x5776: 0x40852e20, 0x5777: 0x40853020,\n\t0x5778: 0x40853220, 0x5779: 0x40853420, 0x577a: 0x40853620, 0x577b: 0x40853820,\n\t0x577c: 0x40853a20, 0x577d: 0x40853c20, 0x577e: 0x40853e20, 0x577f: 0x40854020,\n\t// Block 0x15e, offset 0x5780\n\t0x5780: 0x40854220, 0x5781: 0x40854420, 0x5782: 0x40854620, 0x5783: 0x40854820,\n\t0x5784: 0x40854a20, 0x5785: 0x40854c20, 0x5786: 0x40854e20, 0x5787: 0x40855020,\n\t0x5788: 0x40855220, 0x5789: 0x40855420, 0x578a: 0x40855620, 0x578b: 0x40855820,\n\t0x578c: 0x40855a20, 0x578d: 0x40855c20, 0x578e: 0x40855e20, 0x578f: 0x40856020,\n\t0x5790: 0x40856220, 0x5791: 0x40856420, 0x5792: 0x40856620, 0x5793: 0x40856820,\n\t0x5794: 0x40856a20, 0x5795: 0x40856c20, 0x5796: 0x40856e20, 0x5797: 0x40857020,\n\t0x5798: 0x40857220, 0x5799: 0x40857420, 0x579a: 0x40857620, 0x579b: 0x40857820,\n\t0x579c: 0x40857a20, 0x579d: 0x40857c20, 0x579e: 0x40857e20, 0x579f: 0x40858020,\n\t0x57a0: 0x40858220, 0x57a1: 0x40858420, 0x57a2: 0x40858620, 0x57a3: 0x40858820,\n\t0x57a4: 0x40858a20, 0x57a5: 0x40858c20, 0x57a6: 0x40858e20, 0x57a7: 0x40859020,\n\t0x57a8: 0x40859220, 0x57a9: 0x40859420, 0x57aa: 0x40859620, 0x57ab: 0x40859820,\n\t0x57ac: 0x40859a20, 0x57ad: 0x40859c20, 0x57ae: 0x40859e20, 0x57af: 0x4085a020,\n\t0x57b0: 0x4085a220, 0x57b1: 0x4085a420, 0x57b2: 0x4085a620, 0x57b3: 0x4085a820,\n\t0x57b4: 0x4085aa20, 0x57b5: 0x4085ac20, 0x57b6: 0x4085ae20, 0x57b7: 0x4085b020,\n\t0x57b8: 0x4085b220, 0x57b9: 0x4085b420, 0x57ba: 0x4085b620, 0x57bb: 0x4085b820,\n\t0x57bc: 0x4085ba20, 0x57bd: 0x4085bc20, 0x57be: 0x4085be20, 0x57bf: 0x4085c020,\n\t// Block 0x15f, offset 0x57c0\n\t0x57c0: 0x4085c220, 0x57c1: 0x4085c420, 0x57c2: 0x4085c620, 0x57c3: 0x4085c820,\n\t0x57c4: 0x4085ca20, 0x57c5: 0x4085cc20, 0x57c6: 0x4085ce20, 0x57c7: 0x4085d020,\n\t0x57c8: 0x4085d220, 0x57c9: 0x4085d420, 0x57ca: 0x4085d620, 0x57cb: 0x4085d820,\n\t0x57cc: 0x4085da20, 0x57cd: 0x4085dc20, 0x57ce: 0x4085de20, 0x57cf: 0x4085e020,\n\t0x57d0: 0x4085e220, 0x57d1: 0x4085e420, 0x57d2: 0x4085e620, 0x57d3: 0x4085e820,\n\t0x57d4: 0x4085ea20, 0x57d5: 0x4085ec20, 0x57d6: 0x4085ee20, 0x57d7: 0x4085f020,\n\t0x57d8: 0x4085f220, 0x57d9: 0x4085f420, 0x57da: 0x4085f620, 0x57db: 0x4085f820,\n\t0x57dc: 0x4085fa20, 0x57dd: 0x4085fc20, 0x57de: 0x4085fe20, 0x57df: 0x40860020,\n\t0x57e0: 0x40860220, 0x57e1: 0x40860420, 0x57e2: 0x40860620, 0x57e3: 0x40860820,\n\t0x57e4: 0x40860a20, 0x57e5: 0x40860c20, 0x57e6: 0x40860e20, 0x57e7: 0x40861020,\n\t0x57e8: 0x40861220, 0x57e9: 0x40861420, 0x57ea: 0x40861620, 0x57eb: 0x40861820,\n\t0x57ec: 0x40861a20, 0x57ed: 0x40861c20, 0x57ee: 0x40861e20,\n\t// Block 0x160, offset 0x5800\n\t0x5800: 0x405e3a20, 0x5801: 0x405e3c20, 0x5802: 0x405e3e20, 0x5803: 0x405e4020,\n\t0x5804: 0x405e4220, 0x5805: 0x405e4420, 0x5806: 0x405e4620, 0x5807: 0x405e4820,\n\t0x5808: 0x405e4a20, 0x5809: 0x405e4c20, 0x580a: 0x405e4e20, 0x580b: 0x405e5020,\n\t0x580c: 0x405e5220, 0x580d: 0x405e5420, 0x580e: 0x405e5620, 0x580f: 0x405e5820,\n\t0x5810: 0x405e5a20, 0x5811: 0x405e5c20, 0x5812: 0x405e5e20, 0x5813: 0x405e6020,\n\t0x5814: 0x405e6220, 0x5815: 0x405e6420, 0x5816: 0x405e6620, 0x5817: 0x405e6820,\n\t0x5818: 0x405e6a20, 0x5819: 0x405e6c20, 0x581a: 0x405e6e20, 0x581b: 0x405e7020,\n\t0x581c: 0x405e7220, 0x581d: 0x405e7420, 0x581e: 0x405e7620, 0x581f: 0x405e7820,\n\t0x5820: 0x405e7a20, 0x5821: 0x405e7c20, 0x5822: 0x405e7e20, 0x5823: 0x405e8020,\n\t0x5824: 0x405e8220, 0x5825: 0x405e8420, 0x5826: 0x405e8620, 0x5827: 0x405e8820,\n\t0x5828: 0x405e8a20, 0x5829: 0x405e8c20, 0x582a: 0x405e8e20, 0x582b: 0x405e9020,\n\t0x582c: 0x405e9220, 0x582d: 0x405e9420, 0x582e: 0x405e9620, 0x582f: 0x405e9820,\n\t0x5830: 0x405e9a20, 0x5831: 0x405e9c20, 0x5832: 0x405e9e20, 0x5833: 0x405ea020,\n\t0x5834: 0x405ea220, 0x5835: 0x405ea420, 0x5836: 0x405ea620, 0x5837: 0x405ea820,\n\t0x5838: 0x405eaa20, 0x5839: 0x405eac20, 0x583a: 0x405eae20, 0x583b: 0x405eb020,\n\t0x583c: 0x405eb220, 0x583d: 0x405eb420, 0x583e: 0x405eb620, 0x583f: 0x405eb820,\n\t// Block 0x161, offset 0x5840\n\t0x5840: 0x405eba20, 0x5841: 0x405ebc20, 0x5842: 0x405ebe20, 0x5843: 0x405ec020,\n\t0x5844: 0x405ec220, 0x5845: 0x405ec420, 0x5846: 0x405ec620, 0x5847: 0x405ec820,\n\t0x5848: 0x405eca20, 0x5849: 0x405ecc20, 0x584a: 0x405ece20, 0x584b: 0x405ed020,\n\t0x584c: 0x405ed220, 0x584d: 0x405ed420, 0x584e: 0x405ed620, 0x584f: 0x405ed820,\n\t0x5850: 0x405eda20, 0x5851: 0x405edc20, 0x5852: 0x405ede20, 0x5853: 0x405ee020,\n\t0x5854: 0x405ee220, 0x5855: 0x405ee420, 0x5856: 0x405ee620, 0x5857: 0x405ee820,\n\t0x5858: 0x405eea20, 0x5859: 0x405eec20, 0x585a: 0x405eee20, 0x585b: 0x405ef020,\n\t0x585c: 0x405ef220, 0x585d: 0x405ef420, 0x585e: 0x405ef620, 0x585f: 0x405ef820,\n\t0x5860: 0x405efa20, 0x5861: 0x405efc20, 0x5862: 0x405efe20, 0x5863: 0x405f0020,\n\t0x5864: 0x405f0220, 0x5865: 0x405f0420, 0x5866: 0x405f0620, 0x5867: 0x405f0820,\n\t0x5868: 0x405f0a20, 0x5869: 0x405f0c20, 0x586a: 0x405f0e20, 0x586b: 0x405f1020,\n\t0x586c: 0x405f1220, 0x586d: 0x405f1420, 0x586e: 0x405f1620, 0x586f: 0x405f1820,\n\t0x5870: 0x405f1a20, 0x5871: 0x405f1c20, 0x5872: 0x405f1e20, 0x5873: 0x405f2020,\n\t0x5874: 0x405f2220, 0x5875: 0x405f2420, 0x5876: 0x405f2620, 0x5877: 0x405f2820,\n\t0x5878: 0x405f2a20, 0x5879: 0x405f2c20, 0x587a: 0x405f2e20, 0x587b: 0x405f3020,\n\t0x587c: 0x405f3220, 0x587d: 0x405f3420, 0x587e: 0x405f3620, 0x587f: 0x405f3820,\n\t// Block 0x162, offset 0x5880\n\t0x5880: 0x405f3a20, 0x5881: 0x405f3c20, 0x5882: 0x405f3e20, 0x5883: 0x405f4020,\n\t0x5884: 0x405f4220, 0x5885: 0x405f4420, 0x5886: 0x405f4620, 0x5887: 0x405f4820,\n\t0x5888: 0x405f4a20, 0x5889: 0x405f4c20, 0x588a: 0x405f4e20, 0x588b: 0x405f5020,\n\t0x588c: 0x405f5220, 0x588d: 0x405f5420, 0x588e: 0x405f5620, 0x588f: 0x405f5820,\n\t0x5890: 0x405f5a20, 0x5891: 0x405f5c20, 0x5892: 0x405f5e20, 0x5893: 0x405f6020,\n\t0x5894: 0x405f6220, 0x5895: 0x405f6420, 0x5896: 0x405f6620, 0x5897: 0x405f6820,\n\t0x5898: 0x405f6a20, 0x5899: 0x405f6c20, 0x589a: 0x405f6e20, 0x589b: 0x405f7020,\n\t0x589c: 0x405f7220, 0x589d: 0x405f7420, 0x589e: 0x405f7620, 0x589f: 0x405f7820,\n\t0x58a0: 0x405f7a20, 0x58a1: 0x405f7c20, 0x58a2: 0x405f7e20, 0x58a3: 0x405f8020,\n\t0x58a4: 0x405f8220, 0x58a5: 0x405f8420, 0x58a6: 0x405f8620, 0x58a7: 0x405f8820,\n\t0x58a8: 0x405f8a20, 0x58a9: 0x405f8c20, 0x58aa: 0x405f8e20, 0x58ab: 0x405f9020,\n\t0x58ac: 0x405f9220, 0x58ad: 0x405f9420, 0x58ae: 0x405f9620, 0x58af: 0x405f9820,\n\t0x58b0: 0x405f9a20, 0x58b1: 0x405f9c20, 0x58b2: 0x405f9e20, 0x58b3: 0x405fa020,\n\t0x58b4: 0x405fa220, 0x58b5: 0x405fa420, 0x58b6: 0x405fa620, 0x58b7: 0x405fa820,\n\t0x58b8: 0x405faa20, 0x58b9: 0x405fac20, 0x58ba: 0x405fae20, 0x58bb: 0x405fb020,\n\t0x58bc: 0x405fb220, 0x58bd: 0x405fb420, 0x58be: 0x405fb620, 0x58bf: 0x405fb820,\n\t// Block 0x163, offset 0x58c0\n\t0x58c0: 0x405fba20, 0x58c1: 0x405fbc20, 0x58c2: 0x405fbe20, 0x58c3: 0x405fc020,\n\t0x58c4: 0x405fc220, 0x58c5: 0x405fc420, 0x58c6: 0x405fc620, 0x58c7: 0x405fc820,\n\t0x58c8: 0x405fca20, 0x58c9: 0x405fcc20, 0x58ca: 0x405fce20, 0x58cb: 0x405fd020,\n\t0x58cc: 0x405fd220, 0x58cd: 0x405fd420, 0x58ce: 0x405fd620, 0x58cf: 0x405fd820,\n\t0x58d0: 0x405fda20, 0x58d1: 0x405fdc20, 0x58d2: 0x405fde20, 0x58d3: 0x405fe020,\n\t0x58d4: 0x405fe220, 0x58d5: 0x405fe420, 0x58d6: 0x405fe620, 0x58d7: 0x405fe820,\n\t0x58d8: 0x405fea20, 0x58d9: 0x405fec20, 0x58da: 0x405fee20, 0x58db: 0x405ff020,\n\t0x58dc: 0x405ff220, 0x58dd: 0x405ff420, 0x58de: 0x405ff620, 0x58df: 0x405ff820,\n\t0x58e0: 0x405ffa20, 0x58e1: 0x405ffc20, 0x58e2: 0x405ffe20, 0x58e3: 0x40600020,\n\t0x58e4: 0x40600220, 0x58e5: 0x40600420, 0x58e6: 0x40600620, 0x58e7: 0x40600820,\n\t0x58e8: 0x40600a20, 0x58e9: 0x40600c20, 0x58ea: 0x40600e20, 0x58eb: 0x40601020,\n\t0x58ec: 0x40601220, 0x58ed: 0x40601420, 0x58ee: 0x40601620, 0x58ef: 0x40601820,\n\t0x58f0: 0x40601a20, 0x58f1: 0x40601c20, 0x58f2: 0x40601e20, 0x58f3: 0x40602020,\n\t0x58f4: 0x40602220, 0x58f5: 0x40602420, 0x58f6: 0x40602620, 0x58f7: 0x40602820,\n\t0x58f8: 0x40602a20, 0x58f9: 0x40602c20, 0x58fa: 0x40602e20, 0x58fb: 0x40603020,\n\t0x58fc: 0x40603220, 0x58fd: 0x40603420, 0x58fe: 0x40603620, 0x58ff: 0x40603820,\n\t// Block 0x164, offset 0x5900\n\t0x5900: 0x40603a20, 0x5901: 0x40603c20, 0x5902: 0x40603e20, 0x5903: 0x40604020,\n\t0x5904: 0x40604220, 0x5905: 0x40604420, 0x5906: 0x40604620, 0x5907: 0x40604820,\n\t0x5908: 0x40604a20, 0x5909: 0x40604c20, 0x590a: 0x40604e20, 0x590b: 0x40605020,\n\t0x590c: 0x40605220, 0x590d: 0x40605420, 0x590e: 0x40605620, 0x590f: 0x40605820,\n\t0x5910: 0x40605a20, 0x5911: 0x40605c20, 0x5912: 0x40605e20, 0x5913: 0x40606020,\n\t0x5914: 0x40606220, 0x5915: 0x40606420, 0x5916: 0x40606620, 0x5917: 0x40606820,\n\t0x5918: 0x40606a20, 0x5919: 0x40606c20, 0x591a: 0x40606e20, 0x591b: 0x40607020,\n\t0x591c: 0x40607220, 0x591d: 0x40607420, 0x591e: 0x40607620, 0x591f: 0x40607820,\n\t0x5920: 0x40607a20, 0x5921: 0x40607c20, 0x5922: 0x40607e20, 0x5923: 0x40608020,\n\t0x5924: 0x40608220, 0x5925: 0x40608420, 0x5926: 0x40608620, 0x5927: 0x40608820,\n\t0x5928: 0x40608a20, 0x5929: 0x40608c20, 0x592a: 0x40608e20, 0x592b: 0x40609020,\n\t0x592c: 0x40609220, 0x592d: 0x40609420, 0x592e: 0x40609620, 0x592f: 0x40609820,\n\t0x5930: 0x40609a20, 0x5931: 0x40609c20, 0x5932: 0x40609e20, 0x5933: 0x4060a020,\n\t0x5934: 0x4060a220, 0x5935: 0x4060a420, 0x5936: 0x4060a620, 0x5937: 0x4060a820,\n\t0x5938: 0x4060aa20, 0x5939: 0x4060ac20, 0x593a: 0x4060ae20, 0x593b: 0x4060b020,\n\t0x593c: 0x4060b220, 0x593d: 0x4060b420, 0x593e: 0x4060b620, 0x593f: 0x4060b820,\n\t// Block 0x165, offset 0x5940\n\t0x5940: 0x4060ba20, 0x5941: 0x4060bc20, 0x5942: 0x4060be20, 0x5943: 0x4060c020,\n\t0x5944: 0x4060c220, 0x5945: 0x4060c420, 0x5946: 0x4060c620, 0x5947: 0x4060c820,\n\t0x5948: 0x4060ca20, 0x5949: 0x4060cc20, 0x594a: 0x4060ce20, 0x594b: 0x4060d020,\n\t0x594c: 0x4060d220, 0x594d: 0x4060d420, 0x594e: 0x4060d620, 0x594f: 0x4060d820,\n\t0x5950: 0x4060da20, 0x5951: 0x4060dc20, 0x5952: 0x4060de20, 0x5953: 0x4060e020,\n\t0x5954: 0x4060e220, 0x5955: 0x4060e420, 0x5956: 0x4060e620, 0x5957: 0x4060e820,\n\t0x5958: 0x4060ea20, 0x5959: 0x4060ec20, 0x595a: 0x4060ee20, 0x595b: 0x4060f020,\n\t0x595c: 0x4060f220, 0x595d: 0x4060f420, 0x595e: 0x4060f620, 0x595f: 0x4060f820,\n\t0x5960: 0x4060fa20, 0x5961: 0x4060fc20, 0x5962: 0x4060fe20, 0x5963: 0x40610020,\n\t0x5964: 0x40610220, 0x5965: 0x40610420, 0x5966: 0x40610620, 0x5967: 0x40610820,\n\t0x5968: 0x40610a20, 0x5969: 0x40610c20, 0x596a: 0x40610e20, 0x596b: 0x40611020,\n\t0x596c: 0x40611220, 0x596d: 0x40611420, 0x596e: 0x40611620, 0x596f: 0x40611820,\n\t0x5970: 0x40611a20, 0x5971: 0x40611c20, 0x5972: 0x40611e20, 0x5973: 0x40612020,\n\t0x5974: 0x40612220, 0x5975: 0x40612420, 0x5976: 0x40612620, 0x5977: 0x40612820,\n\t0x5978: 0x40612a20, 0x5979: 0x40612c20, 0x597a: 0x40612e20, 0x597b: 0x40613020,\n\t0x597c: 0x40613220, 0x597d: 0x40613420, 0x597e: 0x40613620, 0x597f: 0x40613820,\n\t// Block 0x166, offset 0x5980\n\t0x5980: 0x40613a20, 0x5981: 0x40613c20, 0x5982: 0x40613e20, 0x5983: 0x40614020,\n\t0x5984: 0x40614220, 0x5985: 0x40614420, 0x5986: 0x40614620, 0x5987: 0x40614820,\n\t0x5988: 0x40614a20, 0x5989: 0x40614c20, 0x598a: 0x40614e20, 0x598b: 0x40615020,\n\t0x598c: 0x40615220, 0x598d: 0x40615420, 0x598e: 0x40615620, 0x598f: 0x40615820,\n\t0x5990: 0x40615a20, 0x5991: 0x40615c20, 0x5992: 0x40615e20, 0x5993: 0x40616020,\n\t0x5994: 0x40616220, 0x5995: 0x40616420, 0x5996: 0x40616620, 0x5997: 0x40616820,\n\t0x5998: 0x40616a20, 0x5999: 0x40616c20, 0x599a: 0x40616e20, 0x599b: 0x40617020,\n\t0x599c: 0x40617220, 0x599d: 0x40617420, 0x599e: 0x40617620, 0x599f: 0x40617820,\n\t0x59a0: 0x40617a20, 0x59a1: 0x40617c20, 0x59a2: 0x40617e20, 0x59a3: 0x40618020,\n\t0x59a4: 0x40618220, 0x59a5: 0x40618420, 0x59a6: 0x40618620, 0x59a7: 0x40618820,\n\t0x59a8: 0x40618a20, 0x59a9: 0x40618c20, 0x59aa: 0x40618e20, 0x59ab: 0x40619020,\n\t0x59ac: 0x40619220, 0x59ad: 0x40619420, 0x59ae: 0x40619620, 0x59af: 0x40619820,\n\t0x59b0: 0x40619a20, 0x59b1: 0x40619c20, 0x59b2: 0x40619e20, 0x59b3: 0x4061a020,\n\t0x59b4: 0x4061a220, 0x59b5: 0x4061a420, 0x59b6: 0x4061a620, 0x59b7: 0x4061a820,\n\t0x59b8: 0x4061aa20, 0x59b9: 0x4061ac20, 0x59ba: 0x4061ae20, 0x59bb: 0x4061b020,\n\t0x59bc: 0x4061b220, 0x59bd: 0x4061b420, 0x59be: 0x4061b620, 0x59bf: 0x4061b820,\n\t// Block 0x167, offset 0x59c0\n\t0x59c0: 0x4061ba20, 0x59c1: 0x4061bc20, 0x59c2: 0x4061be20, 0x59c3: 0x4061c020,\n\t0x59c4: 0x4061c220, 0x59c5: 0x4061c420, 0x59c6: 0x4061c620, 0x59c7: 0x4061c820,\n\t0x59c8: 0x4061ca20, 0x59c9: 0x4061cc20, 0x59ca: 0x4061ce20, 0x59cb: 0x4061d020,\n\t0x59cc: 0x4061d220, 0x59cd: 0x4061d420, 0x59ce: 0x4061d620, 0x59cf: 0x4061d820,\n\t0x59d0: 0x4061da20, 0x59d1: 0x4061dc20, 0x59d2: 0x4061de20, 0x59d3: 0x4061e020,\n\t0x59d4: 0x4061e220, 0x59d5: 0x4061e420, 0x59d6: 0x4061e620, 0x59d7: 0x4061e820,\n\t0x59d8: 0x4061ea20, 0x59d9: 0x4061ec20, 0x59da: 0x4061ee20, 0x59db: 0x4061f020,\n\t0x59dc: 0x4061f220, 0x59dd: 0x4061f420, 0x59de: 0x4061f620, 0x59df: 0x4061f820,\n\t0x59e0: 0x4061fa20, 0x59e1: 0x4061fc20, 0x59e2: 0x4061fe20, 0x59e3: 0x40620020,\n\t0x59e4: 0x40620220, 0x59e5: 0x40620420, 0x59e6: 0x40620620, 0x59e7: 0x40620820,\n\t0x59e8: 0x40620a20, 0x59e9: 0x40620c20, 0x59ea: 0x40620e20, 0x59eb: 0x40621020,\n\t0x59ec: 0x40621220, 0x59ed: 0x40621420, 0x59ee: 0x40621620, 0x59ef: 0x40621820,\n\t0x59f0: 0x40621a20, 0x59f1: 0x40621c20, 0x59f2: 0x40621e20, 0x59f3: 0x40622020,\n\t0x59f4: 0x40622220, 0x59f5: 0x40622420, 0x59f6: 0x40622620, 0x59f7: 0x40622820,\n\t0x59f8: 0x40622a20, 0x59f9: 0x40622c20, 0x59fa: 0x40622e20, 0x59fb: 0x40623020,\n\t0x59fc: 0x40623220, 0x59fd: 0x40623420, 0x59fe: 0x40623620, 0x59ff: 0x40623820,\n\t// Block 0x168, offset 0x5a00\n\t0x5a00: 0x40623a20, 0x5a01: 0x40623c20, 0x5a02: 0x40623e20, 0x5a03: 0x40624020,\n\t0x5a04: 0x40624220, 0x5a05: 0x40624420, 0x5a06: 0x40624620, 0x5a07: 0x40624820,\n\t0x5a08: 0x40624a20, 0x5a09: 0x40624c20, 0x5a0a: 0x40624e20, 0x5a0b: 0x40625020,\n\t0x5a0c: 0x40625220, 0x5a0d: 0x40625420, 0x5a0e: 0x40625620, 0x5a0f: 0x40625820,\n\t0x5a10: 0x40625a20, 0x5a11: 0x40625c20, 0x5a12: 0x40625e20, 0x5a13: 0x40626020,\n\t0x5a14: 0x40626220, 0x5a15: 0x40626420, 0x5a16: 0x40626620, 0x5a17: 0x40626820,\n\t0x5a18: 0x40626a20, 0x5a19: 0x40626c20, 0x5a1a: 0x40626e20, 0x5a1b: 0x40627020,\n\t0x5a1c: 0x40627220, 0x5a1d: 0x40627420, 0x5a1e: 0x40627620, 0x5a1f: 0x40627820,\n\t0x5a20: 0x40627a20, 0x5a21: 0x40627c20, 0x5a22: 0x40627e20, 0x5a23: 0x40628020,\n\t0x5a24: 0x40628220, 0x5a25: 0x40628420, 0x5a26: 0x40628620, 0x5a27: 0x40628820,\n\t0x5a28: 0x40628a20, 0x5a29: 0x40628c20, 0x5a2a: 0x40628e20, 0x5a2b: 0x40629020,\n\t0x5a2c: 0x40629220, 0x5a2d: 0x40629420, 0x5a2e: 0x40629620, 0x5a2f: 0x40629820,\n\t0x5a30: 0x40629a20, 0x5a31: 0x40629c20, 0x5a32: 0x40629e20, 0x5a33: 0x4062a020,\n\t0x5a34: 0x4062a220, 0x5a35: 0x4062a420, 0x5a36: 0x4062a620, 0x5a37: 0x4062a820,\n\t0x5a38: 0x4062aa20,\n\t// Block 0x169, offset 0x5a40\n\t0x5a40: 0x406fb620, 0x5a41: 0x406fb820, 0x5a42: 0x406fba20, 0x5a43: 0x406fbc20,\n\t0x5a44: 0x406fbe20, 0x5a45: 0x406fc020, 0x5a46: 0x006fbe84, 0x5a47: 0x406fc220,\n\t0x5a48: 0x406fc420, 0x5a49: 0x406fc620, 0x5a4a: 0x406fc820, 0x5a4b: 0x406fca20,\n\t0x5a4c: 0x406fcc20, 0x5a4d: 0x406fce20, 0x5a4e: 0x406fd020, 0x5a4f: 0x406fd220,\n\t0x5a50: 0x406fd420, 0x5a51: 0x406fd620, 0x5a52: 0x406fd820, 0x5a53: 0x006fd484,\n\t0x5a54: 0x406fda20, 0x5a55: 0x406fdc20, 0x5a56: 0x406fde20, 0x5a57: 0x406fe020,\n\t0x5a58: 0x406fe220, 0x5a59: 0x406fe420, 0x5a5a: 0x406fe620, 0x5a5b: 0x406fe820,\n\t0x5a5c: 0x406fea20, 0x5a5d: 0x406fec20, 0x5a5e: 0x406fee20, 0x5a5f: 0x406ff020,\n\t0x5a60: 0x406ff220, 0x5a61: 0x406ff420, 0x5a62: 0x406ff620, 0x5a63: 0x406ff820,\n\t0x5a64: 0x406ffa20, 0x5a65: 0x006ff884, 0x5a66: 0x406ffc20, 0x5a67: 0x406ffe20,\n\t0x5a68: 0x40700020, 0x5a69: 0x40700220, 0x5a6a: 0x40700420, 0x5a6b: 0x40700620,\n\t0x5a6c: 0x40700820, 0x5a6d: 0x40700a20, 0x5a6e: 0x40700c20, 0x5a6f: 0x40700e20,\n\t0x5a70: 0x40701020, 0x5a71: 0x40701220, 0x5a72: 0x40701420, 0x5a73: 0x40701620,\n\t0x5a74: 0x40701820, 0x5a75: 0x40701a20, 0x5a76: 0x40701c20, 0x5a77: 0x40701e20,\n\t0x5a78: 0x40702020, 0x5a79: 0x40702220, 0x5a7a: 0x40702420, 0x5a7b: 0x40702620,\n\t0x5a7c: 0x40702820, 0x5a7d: 0x40702a20, 0x5a7e: 0x40702c20, 0x5a7f: 0x00702a84,\n\t// Block 0x16a, offset 0x5a80\n\t0x5a80: 0x40702e20, 0x5a81: 0x40703020, 0x5a82: 0x40703220, 0x5a83: 0x40703420,\n\t0x5a84: 0x40703620,\n\t0x5a90: 0x40703820, 0x5a91: 0x40703a20, 0x5a92: 0x40703c20, 0x5a93: 0x40703e20,\n\t0x5a94: 0x40704020, 0x5a95: 0x40704220, 0x5a96: 0x40704420, 0x5a97: 0x40704620,\n\t0x5a98: 0x40704820, 0x5a99: 0x40704a20, 0x5a9a: 0x40704c20, 0x5a9b: 0x40704e20,\n\t0x5a9c: 0x40705020, 0x5a9d: 0x40705220, 0x5a9e: 0x40705420, 0x5a9f: 0x40705620,\n\t0x5aa0: 0x40705820, 0x5aa1: 0x40705a20, 0x5aa2: 0x40705c20, 0x5aa3: 0x40705e20,\n\t0x5aa4: 0x40706020, 0x5aa5: 0x40706220, 0x5aa6: 0x40706420, 0x5aa7: 0x40706620,\n\t0x5aa8: 0x40706820, 0x5aa9: 0x40706a20, 0x5aaa: 0x40706c20, 0x5aab: 0x40706e20,\n\t0x5aac: 0x40707020, 0x5aad: 0x40707220, 0x5aae: 0x40707420, 0x5aaf: 0x40707620,\n\t0x5ab0: 0x40707820, 0x5ab1: 0x40707a20, 0x5ab2: 0x40707c20, 0x5ab3: 0x40707e20,\n\t0x5ab4: 0x40708020, 0x5ab5: 0x40708220, 0x5ab6: 0x40708420, 0x5ab7: 0x40708620,\n\t0x5ab8: 0x40708820, 0x5ab9: 0x40708a20, 0x5aba: 0x40708c20, 0x5abb: 0x40708e20,\n\t0x5abc: 0x40709020, 0x5abd: 0x40709220, 0x5abe: 0x40709420,\n\t// Block 0x16b, offset 0x5ac0\n\t0x5acf: 0x40709620,\n\t0x5ad0: 0x40709820, 0x5ad1: 0x40709a20, 0x5ad2: 0x40709c20, 0x5ad3: 0x40709e20,\n\t0x5ad4: 0x4070a020, 0x5ad5: 0x4070a220, 0x5ad6: 0x4070a420, 0x5ad7: 0x4070a620,\n\t0x5ad8: 0x4070a820, 0x5ad9: 0x4070aa20, 0x5ada: 0x4070ac20, 0x5adb: 0x4070ae20,\n\t0x5adc: 0x4070b020, 0x5add: 0x4070b220, 0x5ade: 0x4070b420, 0x5adf: 0x4070b620,\n\t// Block 0x16c, offset 0x5b00\n\t0x5b00: 0x00657c91, 0x5b01: 0x0065c28e,\n\t// Block 0x16d, offset 0x5b40\n\t0x5b40: 0x401ba420, 0x5b41: 0x401ba620, 0x5b42: 0x401ba820, 0x5b43: 0x401baa20,\n\t0x5b44: 0x401bac20, 0x5b45: 0x401bae20, 0x5b46: 0x401bb020, 0x5b47: 0x401bb220,\n\t0x5b48: 0x401bb420, 0x5b49: 0x401bb620, 0x5b4a: 0x401bb820, 0x5b4b: 0x401bba20,\n\t0x5b4c: 0x401bbc20, 0x5b4d: 0x401bbe20, 0x5b4e: 0x401bc020, 0x5b4f: 0x401bc220,\n\t0x5b50: 0x401bc420, 0x5b51: 0x401bc620, 0x5b52: 0x401bc820, 0x5b53: 0x401bca20,\n\t0x5b54: 0x401bcc20, 0x5b55: 0x401bce20, 0x5b56: 0x401bd020, 0x5b57: 0x401bd220,\n\t0x5b58: 0x401bd420, 0x5b59: 0x401bd620, 0x5b5a: 0x401bd820, 0x5b5b: 0x401bda20,\n\t0x5b5c: 0x401bdc20, 0x5b5d: 0x401bde20, 0x5b5e: 0x401be020, 0x5b5f: 0x401be220,\n\t0x5b60: 0x401be420, 0x5b61: 0x401be620, 0x5b62: 0x401be820, 0x5b63: 0x401bea20,\n\t0x5b64: 0x401bec20, 0x5b65: 0x401bee20, 0x5b66: 0x401bf020, 0x5b67: 0x401bf220,\n\t0x5b68: 0x401bf420, 0x5b69: 0x401bf620, 0x5b6a: 0x401bf820, 0x5b6b: 0x401bfa20,\n\t0x5b6c: 0x401bfc20, 0x5b6d: 0x401bfe20, 0x5b6e: 0x401c0020, 0x5b6f: 0x401c0220,\n\t0x5b70: 0x401c0420, 0x5b71: 0x401c0620, 0x5b72: 0x401c0820, 0x5b73: 0x401c0a20,\n\t0x5b74: 0x401c0c20, 0x5b75: 0x401c0e20, 0x5b76: 0x401c1020, 0x5b77: 0x401c1220,\n\t0x5b78: 0x401c1420, 0x5b79: 0x401c1620, 0x5b7a: 0x401c1820, 0x5b7b: 0x401c1a20,\n\t0x5b7c: 0x401c1c20, 0x5b7d: 0x401c1e20, 0x5b7e: 0x401c2020, 0x5b7f: 0x401c2220,\n\t// Block 0x16e, offset 0x5b80\n\t0x5b80: 0x401c2420, 0x5b81: 0x401c2620, 0x5b82: 0x401c2820, 0x5b83: 0x401c2a20,\n\t0x5b84: 0x401c2c20, 0x5b85: 0x401c2e20, 0x5b86: 0x401c3020, 0x5b87: 0x401c3220,\n\t0x5b88: 0x401c3420, 0x5b89: 0x401c3620, 0x5b8a: 0x401c3820, 0x5b8b: 0x401c3a20,\n\t0x5b8c: 0x401c3c20, 0x5b8d: 0x401c3e20, 0x5b8e: 0x401c4020, 0x5b8f: 0x401c4220,\n\t0x5b90: 0x401c4420, 0x5b91: 0x401c4620, 0x5b92: 0x401c4820, 0x5b93: 0x401c4a20,\n\t0x5b94: 0x401c4c20, 0x5b95: 0x401c4e20, 0x5b96: 0x401c5020, 0x5b97: 0x401c5220,\n\t0x5b98: 0x401c5420, 0x5b99: 0x401c5620, 0x5b9a: 0x401c5820, 0x5b9b: 0x401c5a20,\n\t0x5b9c: 0x401c5c20, 0x5b9d: 0x401c5e20, 0x5b9e: 0x401c6020, 0x5b9f: 0x401c6220,\n\t0x5ba0: 0x401c6420, 0x5ba1: 0x401c6620, 0x5ba2: 0x401c6820, 0x5ba3: 0x401c6a20,\n\t0x5ba4: 0x401c6c20, 0x5ba5: 0x401c6e20, 0x5ba6: 0x401c7020, 0x5ba7: 0x401c7220,\n\t0x5ba8: 0x401c7420, 0x5ba9: 0x401c7620, 0x5baa: 0x401c7820, 0x5bab: 0x401c7a20,\n\t0x5bac: 0x401c7c20, 0x5bad: 0x401c7e20, 0x5bae: 0x401c8020, 0x5baf: 0x401c8220,\n\t0x5bb0: 0x401c8420, 0x5bb1: 0x401c8620, 0x5bb2: 0x401c8820, 0x5bb3: 0x401c8a20,\n\t0x5bb4: 0x401c8c20, 0x5bb5: 0x401c8e20, 0x5bb6: 0x401c9020, 0x5bb7: 0x401c9220,\n\t0x5bb8: 0x401c9420, 0x5bb9: 0x401c9620, 0x5bba: 0x401c9820, 0x5bbb: 0x401c9a20,\n\t0x5bbc: 0x401c9c20, 0x5bbd: 0x401c9e20, 0x5bbe: 0x401ca020, 0x5bbf: 0x401ca220,\n\t// Block 0x16f, offset 0x5bc0\n\t0x5bc0: 0x401ca420, 0x5bc1: 0x401ca620, 0x5bc2: 0x401ca820, 0x5bc3: 0x401caa20,\n\t0x5bc4: 0x401cac20, 0x5bc5: 0x401cae20, 0x5bc6: 0x401cb020, 0x5bc7: 0x401cb220,\n\t0x5bc8: 0x401cb420, 0x5bc9: 0x401cb620, 0x5bca: 0x401cb820, 0x5bcb: 0x401cba20,\n\t0x5bcc: 0x401cbc20, 0x5bcd: 0x401cbe20, 0x5bce: 0x401cc020, 0x5bcf: 0x401cc220,\n\t0x5bd0: 0x401cc420, 0x5bd1: 0x401cc620, 0x5bd2: 0x401cc820, 0x5bd3: 0x401cca20,\n\t0x5bd4: 0x401ccc20, 0x5bd5: 0x401cce20, 0x5bd6: 0x401cd020, 0x5bd7: 0x401cd220,\n\t0x5bd8: 0x401cd420, 0x5bd9: 0x401cd620, 0x5bda: 0x401cd820, 0x5bdb: 0x401cda20,\n\t0x5bdc: 0x401cdc20, 0x5bdd: 0x401cde20, 0x5bde: 0x401ce020, 0x5bdf: 0x401ce220,\n\t0x5be0: 0x401ce420, 0x5be1: 0x401ce620, 0x5be2: 0x401ce820, 0x5be3: 0x401cea20,\n\t0x5be4: 0x401cec20, 0x5be5: 0x401cee20, 0x5be6: 0x401cf020, 0x5be7: 0x401cf220,\n\t0x5be8: 0x401cf420, 0x5be9: 0x401cf620, 0x5bea: 0x401cf820, 0x5beb: 0x401cfa20,\n\t0x5bec: 0x401cfc20, 0x5bed: 0x401cfe20, 0x5bee: 0x401d0020, 0x5bef: 0x401d0220,\n\t0x5bf0: 0x401d0420, 0x5bf1: 0x401d0620, 0x5bf2: 0x401d0820, 0x5bf3: 0x401d0a20,\n\t0x5bf4: 0x401d0c20, 0x5bf5: 0x401d0e20, 0x5bf6: 0x401d1020, 0x5bf7: 0x401d1220,\n\t0x5bf8: 0x401d1420, 0x5bf9: 0x401d1620, 0x5bfa: 0x401d1820, 0x5bfb: 0x401d1a20,\n\t0x5bfc: 0x401d1c20, 0x5bfd: 0x401d1e20, 0x5bfe: 0x401d2020, 0x5bff: 0x401d2220,\n\t// Block 0x170, offset 0x5c00\n\t0x5c00: 0x401d2420, 0x5c01: 0x401d2620, 0x5c02: 0x401d2820, 0x5c03: 0x401d2a20,\n\t0x5c04: 0x401d2c20, 0x5c05: 0x401d2e20, 0x5c06: 0x401d3020, 0x5c07: 0x401d3220,\n\t0x5c08: 0x401d3420, 0x5c09: 0x401d3620, 0x5c0a: 0x401d3820, 0x5c0b: 0x401d3a20,\n\t0x5c0c: 0x401d3c20, 0x5c0d: 0x401d3e20, 0x5c0e: 0x401d4020, 0x5c0f: 0x401d4220,\n\t0x5c10: 0x401d4420, 0x5c11: 0x401d4620, 0x5c12: 0x401d4820, 0x5c13: 0x401d4a20,\n\t0x5c14: 0x401d4c20, 0x5c15: 0x401d4e20, 0x5c16: 0x401d5020, 0x5c17: 0x401d5220,\n\t0x5c18: 0x401d5420, 0x5c19: 0x401d5620, 0x5c1a: 0x401d5820, 0x5c1b: 0x401d5a20,\n\t0x5c1c: 0x401d5c20, 0x5c1d: 0x401d5e20, 0x5c1e: 0x401d6020, 0x5c1f: 0x401d6220,\n\t0x5c20: 0x401d6420, 0x5c21: 0x401d6620, 0x5c22: 0x401d6820, 0x5c23: 0x401d6a20,\n\t0x5c24: 0x401d6c20, 0x5c25: 0x401d6e20, 0x5c26: 0x401d7020, 0x5c27: 0x401d7220,\n\t0x5c28: 0x401d7420, 0x5c29: 0x401d7620, 0x5c2a: 0x401d7820, 0x5c2b: 0x401d7a20,\n\t0x5c2c: 0x401d7c20, 0x5c2d: 0x401d7e20, 0x5c2e: 0x401d8020, 0x5c2f: 0x401d8220,\n\t0x5c30: 0x401d8420, 0x5c31: 0x401d8620, 0x5c32: 0x401d8820, 0x5c33: 0x401d8a20,\n\t0x5c34: 0x401d8c20, 0x5c35: 0x401d8e20,\n\t// Block 0x171, offset 0x5c40\n\t0x5c40: 0x401d9020, 0x5c41: 0x401d9220, 0x5c42: 0x401d9420, 0x5c43: 0x401d9620,\n\t0x5c44: 0x401d9820, 0x5c45: 0x401d9a20, 0x5c46: 0x401d9c20, 0x5c47: 0x401d9e20,\n\t0x5c48: 0x401da020, 0x5c49: 0x401da220, 0x5c4a: 0x401da420, 0x5c4b: 0x401da620,\n\t0x5c4c: 0x401da820, 0x5c4d: 0x401daa20, 0x5c4e: 0x401dac20, 0x5c4f: 0x401dae20,\n\t0x5c50: 0x401db020, 0x5c51: 0x401db220, 0x5c52: 0x401db420, 0x5c53: 0x401db620,\n\t0x5c54: 0x401db820, 0x5c55: 0x401dba20, 0x5c56: 0x401dbc20, 0x5c57: 0x401dbe20,\n\t0x5c58: 0x401dc020, 0x5c59: 0x401dc220, 0x5c5a: 0x401dc420, 0x5c5b: 0x401dc620,\n\t0x5c5c: 0x401dc820, 0x5c5d: 0x401dca20, 0x5c5e: 0x401dcc20, 0x5c5f: 0x401dce20,\n\t0x5c60: 0x401dd020, 0x5c61: 0x401dd220, 0x5c62: 0x401dd420, 0x5c63: 0x401dd620,\n\t0x5c64: 0x401dd820, 0x5c65: 0x401dda20, 0x5c66: 0x401ddc20,\n\t0x5c69: 0x401e0420, 0x5c6a: 0x401de420, 0x5c6b: 0x401de620,\n\t0x5c6c: 0x401de820, 0x5c6d: 0x401dea20, 0x5c6e: 0x401dec20, 0x5c6f: 0x401dee20,\n\t0x5c70: 0x401df020, 0x5c71: 0x401df220, 0x5c72: 0x401df420, 0x5c73: 0x401df620,\n\t0x5c74: 0x401df820, 0x5c75: 0x401dfa20, 0x5c76: 0x401dfc20, 0x5c77: 0x401dfe20,\n\t0x5c78: 0x401e0020, 0x5c79: 0x401e0220, 0x5c7a: 0x401e0620, 0x5c7b: 0x401e0820,\n\t0x5c7c: 0x401e0a20, 0x5c7d: 0x401e0c20, 0x5c7e: 0x401e0e20, 0x5c7f: 0x401e1020,\n\t// Block 0x172, offset 0x5c80\n\t0x5c80: 0x401e1220, 0x5c81: 0x401e1420, 0x5c82: 0x401e1620, 0x5c83: 0x401e1820,\n\t0x5c84: 0x401e1a20, 0x5c85: 0x401e1c20, 0x5c86: 0x401e1e20, 0x5c87: 0x401e2020,\n\t0x5c88: 0x401e2220, 0x5c89: 0x401e2420, 0x5c8a: 0x401e2620, 0x5c8b: 0x401e2820,\n\t0x5c8c: 0x401e2a20, 0x5c8d: 0x401e2c20, 0x5c8e: 0x401e2e20, 0x5c8f: 0x401e3020,\n\t0x5c90: 0x401e3220, 0x5c91: 0x401e3420, 0x5c92: 0x401e3620, 0x5c93: 0x401e3820,\n\t0x5c94: 0x401e3a20, 0x5c95: 0x401e3c20, 0x5c96: 0x401e3e20, 0x5c97: 0x401e4020,\n\t0x5c98: 0x401e4220, 0x5c99: 0x401e4420, 0x5c9a: 0x401e4620, 0x5c9b: 0x401e4820,\n\t0x5c9c: 0x401e4a20, 0x5c9d: 0x401e4c20, 0x5c9e: 0x401e4020, 0x5c9f: 0x401e4220,\n\t0x5ca0: 0x401e4220, 0x5ca1: 0x401e4220, 0x5ca2: 0x401e4220, 0x5ca3: 0x401e4220,\n\t0x5ca4: 0x401e4220, 0x5ca5: 0xad800000, 0x5ca6: 0xad800000, 0x5ca7: 0xa0100000,\n\t0x5ca8: 0xa0100000, 0x5ca9: 0xa0100000, 0x5caa: 0x401e4e20, 0x5cab: 0x401e5020,\n\t0x5cac: 0x401e5220, 0x5cad: 0xae200000, 0x5cae: 0xad800000, 0x5caf: 0xad800000,\n\t0x5cb0: 0xad800000, 0x5cb1: 0xad800000, 0x5cb2: 0xad800000, 0x5cb3: 0xa0000000,\n\t0x5cb4: 0xa0000000, 0x5cb5: 0xa0000000, 0x5cb6: 0xa0000000, 0x5cb7: 0xa0000000,\n\t0x5cb8: 0xa0000000, 0x5cb9: 0xa0000000, 0x5cba: 0xa0000000, 0x5cbb: 0xadc00000,\n\t0x5cbc: 0xadc00000, 0x5cbd: 0xadc00000, 0x5cbe: 0xadc00000, 0x5cbf: 0xadc00000,\n\t// Block 0x173, offset 0x5cc0\n\t0x5cc0: 0xadc00000, 0x5cc1: 0xadc00000, 0x5cc2: 0xadc00000, 0x5cc3: 0x401e5420,\n\t0x5cc4: 0x401e5620, 0x5cc5: 0xae600000, 0x5cc6: 0xae600000, 0x5cc7: 0xae600000,\n\t0x5cc8: 0xae600000, 0x5cc9: 0xae600000, 0x5cca: 0xadc00000, 0x5ccb: 0xadc00000,\n\t0x5ccc: 0x401e5820, 0x5ccd: 0x401e5a20, 0x5cce: 0x401e5c20, 0x5ccf: 0x401e5e20,\n\t0x5cd0: 0x401e6020, 0x5cd1: 0x401e6220, 0x5cd2: 0x401e6420, 0x5cd3: 0x401e6620,\n\t0x5cd4: 0x401e6820, 0x5cd5: 0x401e6a20, 0x5cd6: 0x401e6c20, 0x5cd7: 0x401e6e20,\n\t0x5cd8: 0x401e7020, 0x5cd9: 0x401e7220, 0x5cda: 0x401e7420, 0x5cdb: 0x401e7620,\n\t0x5cdc: 0x401e7820, 0x5cdd: 0x401e7a20, 0x5cde: 0x401e7c20, 0x5cdf: 0x401e7e20,\n\t0x5ce0: 0x401e8020, 0x5ce1: 0x401e8220, 0x5ce2: 0x401e8420, 0x5ce3: 0x401e8620,\n\t0x5ce4: 0x401e8820, 0x5ce5: 0x401e8a20, 0x5ce6: 0x401e8c20, 0x5ce7: 0x401e8e20,\n\t0x5ce8: 0x401e9020, 0x5ce9: 0x401e9220, 0x5cea: 0xae600000, 0x5ceb: 0xae600000,\n\t0x5cec: 0xae600000, 0x5ced: 0xae600000, 0x5cee: 0x401e9420, 0x5cef: 0x401e9620,\n\t0x5cf0: 0x401e9820, 0x5cf1: 0x401e9a20, 0x5cf2: 0x401e9c20, 0x5cf3: 0x401e9e20,\n\t0x5cf4: 0x401ea020, 0x5cf5: 0x401ea220, 0x5cf6: 0x401ea420, 0x5cf7: 0x401ea620,\n\t0x5cf8: 0x401ea820, 0x5cf9: 0x401eaa20, 0x5cfa: 0x401eac20, 0x5cfb: 0x401eaa20,\n\t0x5cfc: 0x401eac20, 0x5cfd: 0x401eaa20, 0x5cfe: 0x401eac20, 0x5cff: 0x401eaa20,\n\t// Block 0x174, offset 0x5d00\n\t0x5d00: 0x401eac20, 0x5d01: 0x401eae20, 0x5d02: 0x401eb020, 0x5d03: 0x401eb220,\n\t0x5d04: 0x401eb420, 0x5d05: 0x401eb620, 0x5d06: 0x401eb820, 0x5d07: 0x401eba20,\n\t0x5d08: 0x401ebc20, 0x5d09: 0x401ebe20, 0x5d0a: 0x401ec020, 0x5d0b: 0x401ec220,\n\t0x5d0c: 0x401ec420, 0x5d0d: 0x401ec620, 0x5d0e: 0x401ec820, 0x5d0f: 0x401eca20,\n\t0x5d10: 0x401ecc20, 0x5d11: 0x401ece20, 0x5d12: 0x401ed020, 0x5d13: 0x401ed220,\n\t0x5d14: 0x401ed420, 0x5d15: 0x401ed620, 0x5d16: 0x401ed820, 0x5d17: 0x401eda20,\n\t0x5d18: 0x401edc20, 0x5d19: 0x401ede20, 0x5d1a: 0x401ee020, 0x5d1b: 0x401ee220,\n\t0x5d1c: 0x401ee420, 0x5d1d: 0x401ee620,\n\t// Block 0x175, offset 0x5d40\n\t0x5d40: 0x401ee820, 0x5d41: 0x401eea20, 0x5d42: 0x401eec20, 0x5d43: 0x401eee20,\n\t0x5d44: 0x401ef020, 0x5d45: 0x401ef220, 0x5d46: 0x401ef420, 0x5d47: 0x401ef620,\n\t0x5d48: 0x401ef820, 0x5d49: 0x401efa20, 0x5d4a: 0x401efc20, 0x5d4b: 0x401efe20,\n\t0x5d4c: 0x401f0020, 0x5d4d: 0x401f0220, 0x5d4e: 0x401f0420, 0x5d4f: 0x401f0620,\n\t0x5d50: 0x401f0820, 0x5d51: 0x401f0a20, 0x5d52: 0x401f0c20, 0x5d53: 0x401f0e20,\n\t0x5d54: 0x401f1020, 0x5d55: 0x401f1220, 0x5d56: 0x401f1420, 0x5d57: 0x401f1620,\n\t0x5d58: 0x401f1820, 0x5d59: 0x401f1a20, 0x5d5a: 0x401f1c20, 0x5d5b: 0x401f1e20,\n\t0x5d5c: 0x401f2020, 0x5d5d: 0x401f2220, 0x5d5e: 0x401f2420, 0x5d5f: 0x401f2620,\n\t0x5d60: 0x401f2820, 0x5d61: 0x401f2a20, 0x5d62: 0x401f2c20, 0x5d63: 0x401f2e20,\n\t0x5d64: 0x401f3020, 0x5d65: 0x401f3220, 0x5d66: 0x401f3420, 0x5d67: 0x401f3620,\n\t0x5d68: 0x401f3820, 0x5d69: 0x401f3a20, 0x5d6a: 0x401f3c20, 0x5d6b: 0x401f3e20,\n\t0x5d6c: 0x401f4020, 0x5d6d: 0x401f4220, 0x5d6e: 0x401f4420, 0x5d6f: 0x401f4620,\n\t0x5d70: 0x401f4820, 0x5d71: 0x401f4a20, 0x5d72: 0x401f4c20, 0x5d73: 0x401f4e20,\n\t0x5d74: 0x401f5020, 0x5d75: 0x401f5220, 0x5d76: 0x401f5420, 0x5d77: 0x401f5620,\n\t0x5d78: 0x401f5820, 0x5d79: 0x401f5a20, 0x5d7a: 0x401f5c20, 0x5d7b: 0x401f5e20,\n\t0x5d7c: 0x401f6020, 0x5d7d: 0x401f6220, 0x5d7e: 0x401f6420, 0x5d7f: 0x401f6620,\n\t// Block 0x176, offset 0x5d80\n\t0x5d80: 0x401f6820, 0x5d81: 0x401f6a20, 0x5d82: 0xae600000, 0x5d83: 0xae600000,\n\t0x5d84: 0xae600000, 0x5d85: 0x401f6c20,\n\t// Block 0x177, offset 0x5dc0\n\t0x5dc0: 0x4019e220, 0x5dc1: 0x4019e420, 0x5dc2: 0x4019e620, 0x5dc3: 0x4019e820,\n\t0x5dc4: 0x4019ea20, 0x5dc5: 0x4019ec20, 0x5dc6: 0x4019ee20, 0x5dc7: 0x4019f020,\n\t0x5dc8: 0x4019f220, 0x5dc9: 0x4019f420, 0x5dca: 0x4019f620, 0x5dcb: 0x4019f820,\n\t0x5dcc: 0x4019fa20, 0x5dcd: 0x4019fc20, 0x5dce: 0x4019fe20, 0x5dcf: 0x401a0020,\n\t0x5dd0: 0x401a0220, 0x5dd1: 0x401a0420, 0x5dd2: 0x401a0620, 0x5dd3: 0x401a0820,\n\t0x5dd4: 0x401a0a20, 0x5dd5: 0x401a0c20, 0x5dd6: 0x401a0e20, 0x5dd7: 0x401a1020,\n\t0x5dd8: 0x401a1220, 0x5dd9: 0x401a1420, 0x5dda: 0x401a1620, 0x5ddb: 0x401a1820,\n\t0x5ddc: 0x401a1a20, 0x5ddd: 0x401a1c20, 0x5dde: 0x401a1e20, 0x5ddf: 0x401a2020,\n\t0x5de0: 0x401a2220, 0x5de1: 0x401a2420, 0x5de2: 0x401a2620, 0x5de3: 0x401a2820,\n\t0x5de4: 0x401a2a20, 0x5de5: 0x401a2c20, 0x5de6: 0x401a2e20, 0x5de7: 0x401a3020,\n\t0x5de8: 0x401a3220, 0x5de9: 0x401a3420, 0x5dea: 0x401a3620, 0x5deb: 0x401a3820,\n\t0x5dec: 0x401a3a20, 0x5ded: 0x401a3c20, 0x5dee: 0x401a3e20, 0x5def: 0x401a4020,\n\t0x5df0: 0x401a4220, 0x5df1: 0x401a4420, 0x5df2: 0x401a4620, 0x5df3: 0x401a4820,\n\t0x5df4: 0x401a4a20, 0x5df5: 0x401a4c20, 0x5df6: 0x401a4e20, 0x5df7: 0x401a5020,\n\t0x5df8: 0x401a5220, 0x5df9: 0x401a5420, 0x5dfa: 0x401a5620, 0x5dfb: 0x401a5820,\n\t0x5dfc: 0x401a5a20, 0x5dfd: 0x401a5c20, 0x5dfe: 0x401a5e20, 0x5dff: 0x401a6020,\n\t// Block 0x178, offset 0x5e00\n\t0x5e00: 0x401a6220, 0x5e01: 0x401a6420, 0x5e02: 0x401a6620, 0x5e03: 0x401a6820,\n\t0x5e04: 0x401a6a20, 0x5e05: 0x401a6c20, 0x5e06: 0x401a6e20, 0x5e07: 0x401a7020,\n\t0x5e08: 0x401a7220, 0x5e09: 0x401a7420, 0x5e0a: 0x401a7620, 0x5e0b: 0x401a7820,\n\t0x5e0c: 0x401a7a20, 0x5e0d: 0x401a7c20, 0x5e0e: 0x401a7e20, 0x5e0f: 0x401a8020,\n\t0x5e10: 0x401a8220, 0x5e11: 0x401a8420, 0x5e12: 0x401a8620, 0x5e13: 0x401a8820,\n\t0x5e14: 0x401a8a20, 0x5e15: 0x401a8c20, 0x5e16: 0x401a8e20,\n\t0x5e20: 0xe00002af, 0x5e21: 0xe00003ca, 0x5e22: 0xe00004a4, 0x5e23: 0xe0000576,\n\t0x5e24: 0xe000063d, 0x5e25: 0xe00006ed, 0x5e26: 0xe0000795, 0x5e27: 0xe000083e,\n\t0x5e28: 0xe00008e9, 0x5e29: 0x4029ba20, 0x5e2a: 0x4029bc20, 0x5e2b: 0x4029be20,\n\t0x5e2c: 0x4029c020, 0x5e2d: 0x4029c220, 0x5e2e: 0x4029c420, 0x5e2f: 0x4029c620,\n\t0x5e30: 0x4029c820, 0x5e31: 0x4029ca20,\n\t// Block 0x179, offset 0x5e40\n\t0x5e40: 0x002bde8b, 0x5e41: 0x002c0a8b, 0x5e42: 0x002c3a8b, 0x5e43: 0x002c628b,\n\t0x5e44: 0x002c988b, 0x5e45: 0x002d088b, 0x5e46: 0x002d228b, 0x5e47: 0x002d688b,\n\t0x5e48: 0x002d9a8b, 0x5e49: 0x002dcc8b, 0x5e4a: 0x002dfe8b, 0x5e4b: 0x002e228b,\n\t0x5e4c: 0x002e828b, 0x5e4d: 0x002e9e8b, 0x5e4e: 0x002ee28b, 0x5e4f: 0x002f2c8b,\n\t0x5e50: 0x002f568b, 0x5e51: 0x002f7a8b, 0x5e52: 0x002fe68b, 0x5e53: 0x00302c8b,\n\t0x5e54: 0x00306c8b, 0x5e55: 0x0030be8b, 0x5e56: 0x0030e28b, 0x5e57: 0x0030f68b,\n\t0x5e58: 0x0031008b, 0x5e59: 0x00312a8b, 0x5e5a: 0x002bde85, 0x5e5b: 0x002c0a85,\n\t0x5e5c: 0x002c3a85, 0x5e5d: 0x002c6285, 0x5e5e: 0x002c9885, 0x5e5f: 0x002d0885,\n\t0x5e60: 0x002d2285, 0x5e61: 0x002d6885, 0x5e62: 0x002d9a85, 0x5e63: 0x002dcc85,\n\t0x5e64: 0x002dfe85, 0x5e65: 0x002e2285, 0x5e66: 0x002e8285, 0x5e67: 0x002e9e85,\n\t0x5e68: 0x002ee285, 0x5e69: 0x002f2c85, 0x5e6a: 0x002f5685, 0x5e6b: 0x002f7a85,\n\t0x5e6c: 0x002fe685, 0x5e6d: 0x00302c85, 0x5e6e: 0x00306c85, 0x5e6f: 0x0030be85,\n\t0x5e70: 0x0030e285, 0x5e71: 0x0030f685, 0x5e72: 0x00310085, 0x5e73: 0x00312a85,\n\t0x5e74: 0x002bde8b, 0x5e75: 0x002c0a8b, 0x5e76: 0x002c3a8b, 0x5e77: 0x002c628b,\n\t0x5e78: 0x002c988b, 0x5e79: 0x002d088b, 0x5e7a: 0x002d228b, 0x5e7b: 0x002d688b,\n\t0x5e7c: 0x002d9a8b, 0x5e7d: 0x002dcc8b, 0x5e7e: 0x002dfe8b, 0x5e7f: 0x002e228b,\n\t// Block 0x17a, offset 0x5e80\n\t0x5e80: 0x002e828b, 0x5e81: 0x002e9e8b, 0x5e82: 0x002ee28b, 0x5e83: 0x002f2c8b,\n\t0x5e84: 0x002f568b, 0x5e85: 0x002f7a8b, 0x5e86: 0x002fe68b, 0x5e87: 0x00302c8b,\n\t0x5e88: 0x00306c8b, 0x5e89: 0x0030be8b, 0x5e8a: 0x0030e28b, 0x5e8b: 0x0030f68b,\n\t0x5e8c: 0x0031008b, 0x5e8d: 0x00312a8b, 0x5e8e: 0x002bde85, 0x5e8f: 0x002c0a85,\n\t0x5e90: 0x002c3a85, 0x5e91: 0x002c6285, 0x5e92: 0x002c9885, 0x5e93: 0x002d0885,\n\t0x5e94: 0x002d2285, 0x5e96: 0x002d9a85, 0x5e97: 0x002dcc85,\n\t0x5e98: 0x002dfe85, 0x5e99: 0x002e2285, 0x5e9a: 0x002e8285, 0x5e9b: 0x002e9e85,\n\t0x5e9c: 0x002ee285, 0x5e9d: 0x002f2c85, 0x5e9e: 0x002f5685, 0x5e9f: 0x002f7a85,\n\t0x5ea0: 0x002fe685, 0x5ea1: 0x00302c85, 0x5ea2: 0x00306c85, 0x5ea3: 0x0030be85,\n\t0x5ea4: 0x0030e285, 0x5ea5: 0x0030f685, 0x5ea6: 0x00310085, 0x5ea7: 0x00312a85,\n\t0x5ea8: 0x002bde8b, 0x5ea9: 0x002c0a8b, 0x5eaa: 0x002c3a8b, 0x5eab: 0x002c628b,\n\t0x5eac: 0x002c988b, 0x5ead: 0x002d088b, 0x5eae: 0x002d228b, 0x5eaf: 0x002d688b,\n\t0x5eb0: 0x002d9a8b, 0x5eb1: 0x002dcc8b, 0x5eb2: 0x002dfe8b, 0x5eb3: 0x002e228b,\n\t0x5eb4: 0x002e828b, 0x5eb5: 0x002e9e8b, 0x5eb6: 0x002ee28b, 0x5eb7: 0x002f2c8b,\n\t0x5eb8: 0x002f568b, 0x5eb9: 0x002f7a8b, 0x5eba: 0x002fe68b, 0x5ebb: 0x00302c8b,\n\t0x5ebc: 0x00306c8b, 0x5ebd: 0x0030be8b, 0x5ebe: 0x0030e28b, 0x5ebf: 0x0030f68b,\n\t// Block 0x17b, offset 0x5ec0\n\t0x5ec0: 0x0031008b, 0x5ec1: 0x00312a8b, 0x5ec2: 0x002bde85, 0x5ec3: 0x002c0a85,\n\t0x5ec4: 0x002c3a85, 0x5ec5: 0x002c6285, 0x5ec6: 0x002c9885, 0x5ec7: 0x002d0885,\n\t0x5ec8: 0x002d2285, 0x5ec9: 0x002d6885, 0x5eca: 0x002d9a85, 0x5ecb: 0x002dcc85,\n\t0x5ecc: 0x002dfe85, 0x5ecd: 0x002e2285, 0x5ece: 0x002e8285, 0x5ecf: 0x002e9e85,\n\t0x5ed0: 0x002ee285, 0x5ed1: 0x002f2c85, 0x5ed2: 0x002f5685, 0x5ed3: 0x002f7a85,\n\t0x5ed4: 0x002fe685, 0x5ed5: 0x00302c85, 0x5ed6: 0x00306c85, 0x5ed7: 0x0030be85,\n\t0x5ed8: 0x0030e285, 0x5ed9: 0x0030f685, 0x5eda: 0x00310085, 0x5edb: 0x00312a85,\n\t0x5edc: 0x002bde8b, 0x5ede: 0x002c3a8b, 0x5edf: 0x002c628b,\n\t0x5ee2: 0x002d228b,\n\t0x5ee5: 0x002dcc8b, 0x5ee6: 0x002dfe8b,\n\t0x5ee9: 0x002e9e8b, 0x5eea: 0x002ee28b, 0x5eeb: 0x002f2c8b,\n\t0x5eec: 0x002f568b, 0x5eee: 0x002fe68b, 0x5eef: 0x00302c8b,\n\t0x5ef0: 0x00306c8b, 0x5ef1: 0x0030be8b, 0x5ef2: 0x0030e28b, 0x5ef3: 0x0030f68b,\n\t0x5ef4: 0x0031008b, 0x5ef5: 0x00312a8b, 0x5ef6: 0x002bde85, 0x5ef7: 0x002c0a85,\n\t0x5ef8: 0x002c3a85, 0x5ef9: 0x002c6285, 0x5efb: 0x002d0885,\n\t0x5efd: 0x002d6885, 0x5efe: 0x002d9a85, 0x5eff: 0x002dcc85,\n\t// Block 0x17c, offset 0x5f00\n\t0x5f00: 0x002dfe85, 0x5f01: 0x002e2285, 0x5f02: 0x002e8285, 0x5f03: 0x002e9e85,\n\t0x5f05: 0x002f2c85, 0x5f06: 0x002f5685, 0x5f07: 0x002f7a85,\n\t0x5f08: 0x002fe685, 0x5f09: 0x00302c85, 0x5f0a: 0x00306c85, 0x5f0b: 0x0030be85,\n\t0x5f0c: 0x0030e285, 0x5f0d: 0x0030f685, 0x5f0e: 0x00310085, 0x5f0f: 0x00312a85,\n\t0x5f10: 0x002bde8b, 0x5f11: 0x002c0a8b, 0x5f12: 0x002c3a8b, 0x5f13: 0x002c628b,\n\t0x5f14: 0x002c988b, 0x5f15: 0x002d088b, 0x5f16: 0x002d228b, 0x5f17: 0x002d688b,\n\t0x5f18: 0x002d9a8b, 0x5f19: 0x002dcc8b, 0x5f1a: 0x002dfe8b, 0x5f1b: 0x002e228b,\n\t0x5f1c: 0x002e828b, 0x5f1d: 0x002e9e8b, 0x5f1e: 0x002ee28b, 0x5f1f: 0x002f2c8b,\n\t0x5f20: 0x002f568b, 0x5f21: 0x002f7a8b, 0x5f22: 0x002fe68b, 0x5f23: 0x00302c8b,\n\t0x5f24: 0x00306c8b, 0x5f25: 0x0030be8b, 0x5f26: 0x0030e28b, 0x5f27: 0x0030f68b,\n\t0x5f28: 0x0031008b, 0x5f29: 0x00312a8b, 0x5f2a: 0x002bde85, 0x5f2b: 0x002c0a85,\n\t0x5f2c: 0x002c3a85, 0x5f2d: 0x002c6285, 0x5f2e: 0x002c9885, 0x5f2f: 0x002d0885,\n\t0x5f30: 0x002d2285, 0x5f31: 0x002d6885, 0x5f32: 0x002d9a85, 0x5f33: 0x002dcc85,\n\t0x5f34: 0x002dfe85, 0x5f35: 0x002e2285, 0x5f36: 0x002e8285, 0x5f37: 0x002e9e85,\n\t0x5f38: 0x002ee285, 0x5f39: 0x002f2c85, 0x5f3a: 0x002f5685, 0x5f3b: 0x002f7a85,\n\t0x5f3c: 0x002fe685, 0x5f3d: 0x00302c85, 0x5f3e: 0x00306c85, 0x5f3f: 0x0030be85,\n\t// Block 0x17d, offset 0x5f40\n\t0x5f40: 0x0030e285, 0x5f41: 0x0030f685, 0x5f42: 0x00310085, 0x5f43: 0x00312a85,\n\t0x5f44: 0x002bde8b, 0x5f45: 0x002c0a8b, 0x5f47: 0x002c628b,\n\t0x5f48: 0x002c988b, 0x5f49: 0x002d088b, 0x5f4a: 0x002d228b,\n\t0x5f4d: 0x002dcc8b, 0x5f4e: 0x002dfe8b, 0x5f4f: 0x002e228b,\n\t0x5f50: 0x002e828b, 0x5f51: 0x002e9e8b, 0x5f52: 0x002ee28b, 0x5f53: 0x002f2c8b,\n\t0x5f54: 0x002f568b, 0x5f56: 0x002fe68b, 0x5f57: 0x00302c8b,\n\t0x5f58: 0x00306c8b, 0x5f59: 0x0030be8b, 0x5f5a: 0x0030e28b, 0x5f5b: 0x0030f68b,\n\t0x5f5c: 0x0031008b, 0x5f5e: 0x002bde85, 0x5f5f: 0x002c0a85,\n\t0x5f60: 0x002c3a85, 0x5f61: 0x002c6285, 0x5f62: 0x002c9885, 0x5f63: 0x002d0885,\n\t0x5f64: 0x002d2285, 0x5f65: 0x002d6885, 0x5f66: 0x002d9a85, 0x5f67: 0x002dcc85,\n\t0x5f68: 0x002dfe85, 0x5f69: 0x002e2285, 0x5f6a: 0x002e8285, 0x5f6b: 0x002e9e85,\n\t0x5f6c: 0x002ee285, 0x5f6d: 0x002f2c85, 0x5f6e: 0x002f5685, 0x5f6f: 0x002f7a85,\n\t0x5f70: 0x002fe685, 0x5f71: 0x00302c85, 0x5f72: 0x00306c85, 0x5f73: 0x0030be85,\n\t0x5f74: 0x0030e285, 0x5f75: 0x0030f685, 0x5f76: 0x00310085, 0x5f77: 0x00312a85,\n\t0x5f78: 0x002bde8b, 0x5f79: 0x002c0a8b, 0x5f7b: 0x002c628b,\n\t0x5f7c: 0x002c988b, 0x5f7d: 0x002d088b, 0x5f7e: 0x002d228b,\n\t// Block 0x17e, offset 0x5f80\n\t0x5f80: 0x002d9a8b, 0x5f81: 0x002dcc8b, 0x5f82: 0x002dfe8b, 0x5f83: 0x002e228b,\n\t0x5f84: 0x002e828b, 0x5f86: 0x002ee28b,\n\t0x5f8a: 0x002fe68b, 0x5f8b: 0x00302c8b,\n\t0x5f8c: 0x00306c8b, 0x5f8d: 0x0030be8b, 0x5f8e: 0x0030e28b, 0x5f8f: 0x0030f68b,\n\t0x5f90: 0x0031008b, 0x5f92: 0x002bde85, 0x5f93: 0x002c0a85,\n\t0x5f94: 0x002c3a85, 0x5f95: 0x002c6285, 0x5f96: 0x002c9885, 0x5f97: 0x002d0885,\n\t0x5f98: 0x002d2285, 0x5f99: 0x002d6885, 0x5f9a: 0x002d9a85, 0x5f9b: 0x002dcc85,\n\t0x5f9c: 0x002dfe85, 0x5f9d: 0x002e2285, 0x5f9e: 0x002e8285, 0x5f9f: 0x002e9e85,\n\t0x5fa0: 0x002ee285, 0x5fa1: 0x002f2c85, 0x5fa2: 0x002f5685, 0x5fa3: 0x002f7a85,\n\t0x5fa4: 0x002fe685, 0x5fa5: 0x00302c85, 0x5fa6: 0x00306c85, 0x5fa7: 0x0030be85,\n\t0x5fa8: 0x0030e285, 0x5fa9: 0x0030f685, 0x5faa: 0x00310085, 0x5fab: 0x00312a85,\n\t0x5fac: 0x002bde8b, 0x5fad: 0x002c0a8b, 0x5fae: 0x002c3a8b, 0x5faf: 0x002c628b,\n\t0x5fb0: 0x002c988b, 0x5fb1: 0x002d088b, 0x5fb2: 0x002d228b, 0x5fb3: 0x002d688b,\n\t0x5fb4: 0x002d9a8b, 0x5fb5: 0x002dcc8b, 0x5fb6: 0x002dfe8b, 0x5fb7: 0x002e228b,\n\t0x5fb8: 0x002e828b, 0x5fb9: 0x002e9e8b, 0x5fba: 0x002ee28b, 0x5fbb: 0x002f2c8b,\n\t0x5fbc: 0x002f568b, 0x5fbd: 0x002f7a8b, 0x5fbe: 0x002fe68b, 0x5fbf: 0x00302c8b,\n\t// Block 0x17f, offset 0x5fc0\n\t0x5fc0: 0x00306c8b, 0x5fc1: 0x0030be8b, 0x5fc2: 0x0030e28b, 0x5fc3: 0x0030f68b,\n\t0x5fc4: 0x0031008b, 0x5fc5: 0x00312a8b, 0x5fc6: 0x002bde85, 0x5fc7: 0x002c0a85,\n\t0x5fc8: 0x002c3a85, 0x5fc9: 0x002c6285, 0x5fca: 0x002c9885, 0x5fcb: 0x002d0885,\n\t0x5fcc: 0x002d2285, 0x5fcd: 0x002d6885, 0x5fce: 0x002d9a85, 0x5fcf: 0x002dcc85,\n\t0x5fd0: 0x002dfe85, 0x5fd1: 0x002e2285, 0x5fd2: 0x002e8285, 0x5fd3: 0x002e9e85,\n\t0x5fd4: 0x002ee285, 0x5fd5: 0x002f2c85, 0x5fd6: 0x002f5685, 0x5fd7: 0x002f7a85,\n\t0x5fd8: 0x002fe685, 0x5fd9: 0x00302c85, 0x5fda: 0x00306c85, 0x5fdb: 0x0030be85,\n\t0x5fdc: 0x0030e285, 0x5fdd: 0x0030f685, 0x5fde: 0x00310085, 0x5fdf: 0x00312a85,\n\t0x5fe0: 0x002bde8b, 0x5fe1: 0x002c0a8b, 0x5fe2: 0x002c3a8b, 0x5fe3: 0x002c628b,\n\t0x5fe4: 0x002c988b, 0x5fe5: 0x002d088b, 0x5fe6: 0x002d228b, 0x5fe7: 0x002d688b,\n\t0x5fe8: 0x002d9a8b, 0x5fe9: 0x002dcc8b, 0x5fea: 0x002dfe8b, 0x5feb: 0x002e228b,\n\t0x5fec: 0x002e828b, 0x5fed: 0x002e9e8b, 0x5fee: 0x002ee28b, 0x5fef: 0x002f2c8b,\n\t0x5ff0: 0x002f568b, 0x5ff1: 0x002f7a8b, 0x5ff2: 0x002fe68b, 0x5ff3: 0x00302c8b,\n\t0x5ff4: 0x00306c8b, 0x5ff5: 0x0030be8b, 0x5ff6: 0x0030e28b, 0x5ff7: 0x0030f68b,\n\t0x5ff8: 0x0031008b, 0x5ff9: 0x00312a8b, 0x5ffa: 0x002bde85, 0x5ffb: 0x002c0a85,\n\t0x5ffc: 0x002c3a85, 0x5ffd: 0x002c6285, 0x5ffe: 0x002c9885, 0x5fff: 0x002d0885,\n\t// Block 0x180, offset 0x6000\n\t0x6000: 0x002d2285, 0x6001: 0x002d6885, 0x6002: 0x002d9a85, 0x6003: 0x002dcc85,\n\t0x6004: 0x002dfe85, 0x6005: 0x002e2285, 0x6006: 0x002e8285, 0x6007: 0x002e9e85,\n\t0x6008: 0x002ee285, 0x6009: 0x002f2c85, 0x600a: 0x002f5685, 0x600b: 0x002f7a85,\n\t0x600c: 0x002fe685, 0x600d: 0x00302c85, 0x600e: 0x00306c85, 0x600f: 0x0030be85,\n\t0x6010: 0x0030e285, 0x6011: 0x0030f685, 0x6012: 0x00310085, 0x6013: 0x00312a85,\n\t0x6014: 0x002bde8b, 0x6015: 0x002c0a8b, 0x6016: 0x002c3a8b, 0x6017: 0x002c628b,\n\t0x6018: 0x002c988b, 0x6019: 0x002d088b, 0x601a: 0x002d228b, 0x601b: 0x002d688b,\n\t0x601c: 0x002d9a8b, 0x601d: 0x002dcc8b, 0x601e: 0x002dfe8b, 0x601f: 0x002e228b,\n\t0x6020: 0x002e828b, 0x6021: 0x002e9e8b, 0x6022: 0x002ee28b, 0x6023: 0x002f2c8b,\n\t0x6024: 0x002f568b, 0x6025: 0x002f7a8b, 0x6026: 0x002fe68b, 0x6027: 0x00302c8b,\n\t0x6028: 0x00306c8b, 0x6029: 0x0030be8b, 0x602a: 0x0030e28b, 0x602b: 0x0030f68b,\n\t0x602c: 0x0031008b, 0x602d: 0x00312a8b, 0x602e: 0x002bde85, 0x602f: 0x002c0a85,\n\t0x6030: 0x002c3a85, 0x6031: 0x002c6285, 0x6032: 0x002c9885, 0x6033: 0x002d0885,\n\t0x6034: 0x002d2285, 0x6035: 0x002d6885, 0x6036: 0x002d9a85, 0x6037: 0x002dcc85,\n\t0x6038: 0x002dfe85, 0x6039: 0x002e2285, 0x603a: 0x002e8285, 0x603b: 0x002e9e85,\n\t0x603c: 0x002ee285, 0x603d: 0x002f2c85, 0x603e: 0x002f5685, 0x603f: 0x002f7a85,\n\t// Block 0x181, offset 0x6040\n\t0x6040: 0x002fe685, 0x6041: 0x00302c85, 0x6042: 0x00306c85, 0x6043: 0x0030be85,\n\t0x6044: 0x0030e285, 0x6045: 0x0030f685, 0x6046: 0x00310085, 0x6047: 0x00312a85,\n\t0x6048: 0x002bde8b, 0x6049: 0x002c0a8b, 0x604a: 0x002c3a8b, 0x604b: 0x002c628b,\n\t0x604c: 0x002c988b, 0x604d: 0x002d088b, 0x604e: 0x002d228b, 0x604f: 0x002d688b,\n\t0x6050: 0x002d9a8b, 0x6051: 0x002dcc8b, 0x6052: 0x002dfe8b, 0x6053: 0x002e228b,\n\t0x6054: 0x002e828b, 0x6055: 0x002e9e8b, 0x6056: 0x002ee28b, 0x6057: 0x002f2c8b,\n\t0x6058: 0x002f568b, 0x6059: 0x002f7a8b, 0x605a: 0x002fe68b, 0x605b: 0x00302c8b,\n\t0x605c: 0x00306c8b, 0x605d: 0x0030be8b, 0x605e: 0x0030e28b, 0x605f: 0x0030f68b,\n\t0x6060: 0x0031008b, 0x6061: 0x00312a8b, 0x6062: 0x002bde85, 0x6063: 0x002c0a85,\n\t0x6064: 0x002c3a85, 0x6065: 0x002c6285, 0x6066: 0x002c9885, 0x6067: 0x002d0885,\n\t0x6068: 0x002d2285, 0x6069: 0x002d6885, 0x606a: 0x002d9a85, 0x606b: 0x002dcc85,\n\t0x606c: 0x002dfe85, 0x606d: 0x002e2285, 0x606e: 0x002e8285, 0x606f: 0x002e9e85,\n\t0x6070: 0x002ee285, 0x6071: 0x002f2c85, 0x6072: 0x002f5685, 0x6073: 0x002f7a85,\n\t0x6074: 0x002fe685, 0x6075: 0x00302c85, 0x6076: 0x00306c85, 0x6077: 0x0030be85,\n\t0x6078: 0x0030e285, 0x6079: 0x0030f685, 0x607a: 0x00310085, 0x607b: 0x00312a85,\n\t0x607c: 0x002bde8b, 0x607d: 0x002c0a8b, 0x607e: 0x002c3a8b, 0x607f: 0x002c628b,\n\t// Block 0x182, offset 0x6080\n\t0x6080: 0x002c988b, 0x6081: 0x002d088b, 0x6082: 0x002d228b, 0x6083: 0x002d688b,\n\t0x6084: 0x002d9a8b, 0x6085: 0x002dcc8b, 0x6086: 0x002dfe8b, 0x6087: 0x002e228b,\n\t0x6088: 0x002e828b, 0x6089: 0x002e9e8b, 0x608a: 0x002ee28b, 0x608b: 0x002f2c8b,\n\t0x608c: 0x002f568b, 0x608d: 0x002f7a8b, 0x608e: 0x002fe68b, 0x608f: 0x00302c8b,\n\t0x6090: 0x00306c8b, 0x6091: 0x0030be8b, 0x6092: 0x0030e28b, 0x6093: 0x0030f68b,\n\t0x6094: 0x0031008b, 0x6095: 0x00312a8b, 0x6096: 0x002bde85, 0x6097: 0x002c0a85,\n\t0x6098: 0x002c3a85, 0x6099: 0x002c6285, 0x609a: 0x002c9885, 0x609b: 0x002d0885,\n\t0x609c: 0x002d2285, 0x609d: 0x002d6885, 0x609e: 0x002d9a85, 0x609f: 0x002dcc85,\n\t0x60a0: 0x002dfe85, 0x60a1: 0x002e2285, 0x60a2: 0x002e8285, 0x60a3: 0x002e9e85,\n\t0x60a4: 0x002ee285, 0x60a5: 0x002f2c85, 0x60a6: 0x002f5685, 0x60a7: 0x002f7a85,\n\t0x60a8: 0x002fe685, 0x60a9: 0x00302c85, 0x60aa: 0x00306c85, 0x60ab: 0x0030be85,\n\t0x60ac: 0x0030e285, 0x60ad: 0x0030f685, 0x60ae: 0x00310085, 0x60af: 0x00312a85,\n\t0x60b0: 0x002bde8b, 0x60b1: 0x002c0a8b, 0x60b2: 0x002c3a8b, 0x60b3: 0x002c628b,\n\t0x60b4: 0x002c988b, 0x60b5: 0x002d088b, 0x60b6: 0x002d228b, 0x60b7: 0x002d688b,\n\t0x60b8: 0x002d9a8b, 0x60b9: 0x002dcc8b, 0x60ba: 0x002dfe8b, 0x60bb: 0x002e228b,\n\t0x60bc: 0x002e828b, 0x60bd: 0x002e9e8b, 0x60be: 0x002ee28b, 0x60bf: 0x002f2c8b,\n\t// Block 0x183, offset 0x60c0\n\t0x60c0: 0x002f568b, 0x60c1: 0x002f7a8b, 0x60c2: 0x002fe68b, 0x60c3: 0x00302c8b,\n\t0x60c4: 0x00306c8b, 0x60c5: 0x0030be8b, 0x60c6: 0x0030e28b, 0x60c7: 0x0030f68b,\n\t0x60c8: 0x0031008b, 0x60c9: 0x00312a8b, 0x60ca: 0x002bde85, 0x60cb: 0x002c0a85,\n\t0x60cc: 0x002c3a85, 0x60cd: 0x002c6285, 0x60ce: 0x002c9885, 0x60cf: 0x002d0885,\n\t0x60d0: 0x002d2285, 0x60d1: 0x002d6885, 0x60d2: 0x002d9a85, 0x60d3: 0x002dcc85,\n\t0x60d4: 0x002dfe85, 0x60d5: 0x002e2285, 0x60d6: 0x002e8285, 0x60d7: 0x002e9e85,\n\t0x60d8: 0x002ee285, 0x60d9: 0x002f2c85, 0x60da: 0x002f5685, 0x60db: 0x002f7a85,\n\t0x60dc: 0x002fe685, 0x60dd: 0x00302c85, 0x60de: 0x00306c85, 0x60df: 0x0030be85,\n\t0x60e0: 0x0030e285, 0x60e1: 0x0030f685, 0x60e2: 0x00310085, 0x60e3: 0x00312a85,\n\t0x60e4: 0x002da285, 0x60e5: 0x002dd485,\n\t0x60e8: 0x0032528b, 0x60e9: 0x0032548b, 0x60ea: 0x0032568b, 0x60eb: 0x00325a8b,\n\t0x60ec: 0x00325c8b, 0x60ed: 0x0032648b, 0x60ee: 0x0032688b, 0x60ef: 0x00326a8b,\n\t0x60f0: 0x00326c8b, 0x60f1: 0x0032708b, 0x60f2: 0x0032728b, 0x60f3: 0x0032768b,\n\t0x60f4: 0x0032788b, 0x60f5: 0x00327a8b, 0x60f6: 0x00327c8b, 0x60f7: 0x00327e8b,\n\t0x60f8: 0x0032888b, 0x60f9: 0x00326a8b, 0x60fa: 0x00328e8b, 0x60fb: 0x0032968b,\n\t0x60fc: 0x0032988b, 0x60fd: 0x00329a8b, 0x60fe: 0x00329c8b, 0x60ff: 0x00329e8b,\n\t// Block 0x184, offset 0x6100\n\t0x6100: 0x0032a28b, 0x6101: 0x00092485, 0x6102: 0x00325285, 0x6103: 0x00325485,\n\t0x6104: 0x00325685, 0x6105: 0x00325a85, 0x6106: 0x00325c85, 0x6107: 0x00326485,\n\t0x6108: 0x00326885, 0x6109: 0x00326a85, 0x610a: 0x00326c85, 0x610b: 0x00327085,\n\t0x610c: 0x00327285, 0x610d: 0x00327685, 0x610e: 0x00327885, 0x610f: 0x00327a85,\n\t0x6110: 0x00327c85, 0x6111: 0x00327e85, 0x6112: 0x00328885, 0x6113: 0x00328e85,\n\t0x6114: 0x00328e85, 0x6115: 0x00329685, 0x6116: 0x00329885, 0x6117: 0x00329a85,\n\t0x6118: 0x00329c85, 0x6119: 0x00329e85, 0x611a: 0x0032a285, 0x611b: 0x00091c85,\n\t0x611c: 0x00325c85, 0x611d: 0x00326a85, 0x611e: 0x00327085, 0x611f: 0x00329a85,\n\t0x6120: 0x00328885, 0x6121: 0x00327e85, 0x6122: 0x0032528b, 0x6123: 0x0032548b,\n\t0x6124: 0x0032568b, 0x6125: 0x00325a8b, 0x6126: 0x00325c8b, 0x6127: 0x0032648b,\n\t0x6128: 0x0032688b, 0x6129: 0x00326a8b, 0x612a: 0x00326c8b, 0x612b: 0x0032708b,\n\t0x612c: 0x0032728b, 0x612d: 0x0032768b, 0x612e: 0x0032788b, 0x612f: 0x00327a8b,\n\t0x6130: 0x00327c8b, 0x6131: 0x00327e8b, 0x6132: 0x0032888b, 0x6133: 0x00326a8b,\n\t0x6134: 0x00328e8b, 0x6135: 0x0032968b, 0x6136: 0x0032988b, 0x6137: 0x00329a8b,\n\t0x6138: 0x00329c8b, 0x6139: 0x00329e8b, 0x613a: 0x0032a28b, 0x613b: 0x00092485,\n\t0x613c: 0x00325285, 0x613d: 0x00325485, 0x613e: 0x00325685, 0x613f: 0x00325a85,\n\t// Block 0x185, offset 0x6140\n\t0x6140: 0x00325c85, 0x6141: 0x00326485, 0x6142: 0x00326885, 0x6143: 0x00326a85,\n\t0x6144: 0x00326c85, 0x6145: 0x00327085, 0x6146: 0x00327285, 0x6147: 0x00327685,\n\t0x6148: 0x00327885, 0x6149: 0x00327a85, 0x614a: 0x00327c85, 0x614b: 0x00327e85,\n\t0x614c: 0x00328885, 0x614d: 0x00328e85, 0x614e: 0x00328e85, 0x614f: 0x00329685,\n\t0x6150: 0x00329885, 0x6151: 0x00329a85, 0x6152: 0x00329c85, 0x6153: 0x00329e85,\n\t0x6154: 0x0032a285, 0x6155: 0x00091c85, 0x6156: 0x00325c85, 0x6157: 0x00326a85,\n\t0x6158: 0x00327085, 0x6159: 0x00329a85, 0x615a: 0x00328885, 0x615b: 0x00327e85,\n\t0x615c: 0x0032528b, 0x615d: 0x0032548b, 0x615e: 0x0032568b, 0x615f: 0x00325a8b,\n\t0x6160: 0x00325c8b, 0x6161: 0x0032648b, 0x6162: 0x0032688b, 0x6163: 0x00326a8b,\n\t0x6164: 0x00326c8b, 0x6165: 0x0032708b, 0x6166: 0x0032728b, 0x6167: 0x0032768b,\n\t0x6168: 0x0032788b, 0x6169: 0x00327a8b, 0x616a: 0x00327c8b, 0x616b: 0x00327e8b,\n\t0x616c: 0x0032888b, 0x616d: 0x00326a8b, 0x616e: 0x00328e8b, 0x616f: 0x0032968b,\n\t0x6170: 0x0032988b, 0x6171: 0x00329a8b, 0x6172: 0x00329c8b, 0x6173: 0x00329e8b,\n\t0x6174: 0x0032a28b, 0x6175: 0x00092485, 0x6176: 0x00325285, 0x6177: 0x00325485,\n\t0x6178: 0x00325685, 0x6179: 0x00325a85, 0x617a: 0x00325c85, 0x617b: 0x00326485,\n\t0x617c: 0x00326885, 0x617d: 0x00326a85, 0x617e: 0x00326c85, 0x617f: 0x00327085,\n\t// Block 0x186, offset 0x6180\n\t0x6180: 0x00327285, 0x6181: 0x00327685, 0x6182: 0x00327885, 0x6183: 0x00327a85,\n\t0x6184: 0x00327c85, 0x6185: 0x00327e85, 0x6186: 0x00328885, 0x6187: 0x00328e85,\n\t0x6188: 0x00328e85, 0x6189: 0x00329685, 0x618a: 0x00329885, 0x618b: 0x00329a85,\n\t0x618c: 0x00329c85, 0x618d: 0x00329e85, 0x618e: 0x0032a285, 0x618f: 0x00091c85,\n\t0x6190: 0x00325c85, 0x6191: 0x00326a85, 0x6192: 0x00327085, 0x6193: 0x00329a85,\n\t0x6194: 0x00328885, 0x6195: 0x00327e85, 0x6196: 0x0032528b, 0x6197: 0x0032548b,\n\t0x6198: 0x0032568b, 0x6199: 0x00325a8b, 0x619a: 0x00325c8b, 0x619b: 0x0032648b,\n\t0x619c: 0x0032688b, 0x619d: 0x00326a8b, 0x619e: 0x00326c8b, 0x619f: 0x0032708b,\n\t0x61a0: 0x0032728b, 0x61a1: 0x0032768b, 0x61a2: 0x0032788b, 0x61a3: 0x00327a8b,\n\t0x61a4: 0x00327c8b, 0x61a5: 0x00327e8b, 0x61a6: 0x0032888b, 0x61a7: 0x00326a8b,\n\t0x61a8: 0x00328e8b, 0x61a9: 0x0032968b, 0x61aa: 0x0032988b, 0x61ab: 0x00329a8b,\n\t0x61ac: 0x00329c8b, 0x61ad: 0x00329e8b, 0x61ae: 0x0032a28b, 0x61af: 0x00092485,\n\t0x61b0: 0x00325285, 0x61b1: 0x00325485, 0x61b2: 0x00325685, 0x61b3: 0x00325a85,\n\t0x61b4: 0x00325c85, 0x61b5: 0x00326485, 0x61b6: 0x00326885, 0x61b7: 0x00326a85,\n\t0x61b8: 0x00326c85, 0x61b9: 0x00327085, 0x61ba: 0x00327285, 0x61bb: 0x00327685,\n\t0x61bc: 0x00327885, 0x61bd: 0x00327a85, 0x61be: 0x00327c85, 0x61bf: 0x00327e85,\n\t// Block 0x187, offset 0x61c0\n\t0x61c0: 0x00328885, 0x61c1: 0x00328e85, 0x61c2: 0x00328e85, 0x61c3: 0x00329685,\n\t0x61c4: 0x00329885, 0x61c5: 0x00329a85, 0x61c6: 0x00329c85, 0x61c7: 0x00329e85,\n\t0x61c8: 0x0032a285, 0x61c9: 0x00091c85, 0x61ca: 0x00325c85, 0x61cb: 0x00326a85,\n\t0x61cc: 0x00327085, 0x61cd: 0x00329a85, 0x61ce: 0x00328885, 0x61cf: 0x00327e85,\n\t0x61d0: 0x0032528b, 0x61d1: 0x0032548b, 0x61d2: 0x0032568b, 0x61d3: 0x00325a8b,\n\t0x61d4: 0x00325c8b, 0x61d5: 0x0032648b, 0x61d6: 0x0032688b, 0x61d7: 0x00326a8b,\n\t0x61d8: 0x00326c8b, 0x61d9: 0x0032708b, 0x61da: 0x0032728b, 0x61db: 0x0032768b,\n\t0x61dc: 0x0032788b, 0x61dd: 0x00327a8b, 0x61de: 0x00327c8b, 0x61df: 0x00327e8b,\n\t0x61e0: 0x0032888b, 0x61e1: 0x00326a8b, 0x61e2: 0x00328e8b, 0x61e3: 0x0032968b,\n\t0x61e4: 0x0032988b, 0x61e5: 0x00329a8b, 0x61e6: 0x00329c8b, 0x61e7: 0x00329e8b,\n\t0x61e8: 0x0032a28b, 0x61e9: 0x00092485, 0x61ea: 0x00325285, 0x61eb: 0x00325485,\n\t0x61ec: 0x00325685, 0x61ed: 0x00325a85, 0x61ee: 0x00325c85, 0x61ef: 0x00326485,\n\t0x61f0: 0x00326885, 0x61f1: 0x00326a85, 0x61f2: 0x00326c85, 0x61f3: 0x00327085,\n\t0x61f4: 0x00327285, 0x61f5: 0x00327685, 0x61f6: 0x00327885, 0x61f7: 0x00327a85,\n\t0x61f8: 0x00327c85, 0x61f9: 0x00327e85, 0x61fa: 0x00328885, 0x61fb: 0x00328e85,\n\t0x61fc: 0x00328e85, 0x61fd: 0x00329685, 0x61fe: 0x00329885, 0x61ff: 0x00329a85,\n\t// Block 0x188, offset 0x6200\n\t0x6200: 0x00329c85, 0x6201: 0x00329e85, 0x6202: 0x0032a285, 0x6203: 0x00091c85,\n\t0x6204: 0x00325c85, 0x6205: 0x00326a85, 0x6206: 0x00327085, 0x6207: 0x00329a85,\n\t0x6208: 0x00328885, 0x6209: 0x00327e85, 0x620a: 0x00325e8b, 0x620b: 0x00325e85,\n\t0x620e: 0x0029cc85, 0x620f: 0x0029ce85,\n\t0x6210: 0x0029d085, 0x6211: 0x0029d285, 0x6212: 0x0029d485, 0x6213: 0x0029d685,\n\t0x6214: 0x0029d885, 0x6215: 0x0029da85, 0x6216: 0x0029dc85, 0x6217: 0x0029de85,\n\t0x6218: 0x0029cc85, 0x6219: 0x0029ce85, 0x621a: 0x0029d085, 0x621b: 0x0029d285,\n\t0x621c: 0x0029d485, 0x621d: 0x0029d685, 0x621e: 0x0029d885, 0x621f: 0x0029da85,\n\t0x6220: 0x0029dc85, 0x6221: 0x0029de85, 0x6222: 0x0029cc85, 0x6223: 0x0029ce85,\n\t0x6224: 0x0029d085, 0x6225: 0x0029d285, 0x6226: 0x0029d485, 0x6227: 0x0029d685,\n\t0x6228: 0x0029d885, 0x6229: 0x0029da85, 0x622a: 0x0029dc85, 0x622b: 0x0029de85,\n\t0x622c: 0x0029cc85, 0x622d: 0x0029ce85, 0x622e: 0x0029d085, 0x622f: 0x0029d285,\n\t0x6230: 0x0029d485, 0x6231: 0x0029d685, 0x6232: 0x0029d885, 0x6233: 0x0029da85,\n\t0x6234: 0x0029dc85, 0x6235: 0x0029de85, 0x6236: 0x0029cc85, 0x6237: 0x0029ce85,\n\t0x6238: 0x0029d085, 0x6239: 0x0029d285, 0x623a: 0x0029d485, 0x623b: 0x0029d685,\n\t0x623c: 0x0029d885, 0x623d: 0x0029da85, 0x623e: 0x0029dc85, 0x623f: 0x0029de85,\n\t// Block 0x189, offset 0x6240\n\t0x6240: 0x00393885, 0x6241: 0x00393c85, 0x6242: 0x00396485, 0x6243: 0x00398885,\n\t0x6245: 0x003a7485, 0x6246: 0x0039a685, 0x6247: 0x00397285,\n\t0x6248: 0x0039e685, 0x6249: 0x003a9085, 0x624a: 0x003a1a85, 0x624b: 0x003a4085,\n\t0x624c: 0x003a4e85, 0x624d: 0x003a5685, 0x624e: 0x0039c685, 0x624f: 0x0039ee85,\n\t0x6250: 0x0039fc85, 0x6251: 0x0039dc85, 0x6252: 0x003a1285, 0x6253: 0x0039a485,\n\t0x6254: 0x0039c885, 0x6255: 0x00395685, 0x6256: 0x00395885, 0x6257: 0x00397485,\n\t0x6258: 0x00398a85, 0x6259: 0x0039de85, 0x625a: 0x0039e885, 0x625b: 0x0039f085,\n\t0x625c: 0x00393a85, 0x625d: 0x003a5885, 0x625e: 0x0039fe85, 0x625f: 0x003a1085,\n\t0x6261: 0x00393c85, 0x6262: 0x00396485,\n\t0x6264: 0x003a6885, 0x6267: 0x00397285,\n\t0x6269: 0x003a9085, 0x626a: 0x003a1a85, 0x626b: 0x003a4085,\n\t0x626c: 0x003a4e85, 0x626d: 0x003a5685, 0x626e: 0x0039c685, 0x626f: 0x0039ee85,\n\t0x6270: 0x0039fc85, 0x6271: 0x0039dc85, 0x6272: 0x003a1285,\n\t0x6274: 0x0039c885, 0x6275: 0x00395685, 0x6276: 0x00395885, 0x6277: 0x00397485,\n\t0x6279: 0x0039de85, 0x627b: 0x0039f085,\n\t// Block 0x18a, offset 0x6280\n\t0x6282: 0x00396485,\n\t0x6287: 0x00397285,\n\t0x6289: 0x003a9085, 0x628b: 0x003a4085,\n\t0x628d: 0x003a5685, 0x628e: 0x0039c685, 0x628f: 0x0039ee85,\n\t0x6291: 0x0039dc85, 0x6292: 0x003a1285,\n\t0x6294: 0x0039c885, 0x6297: 0x00397485,\n\t0x6299: 0x0039de85, 0x629b: 0x0039f085,\n\t0x629d: 0x003a5885, 0x629f: 0x003a1085,\n\t0x62a1: 0x00393c85, 0x62a2: 0x00396485,\n\t0x62a4: 0x003a6885, 0x62a7: 0x00397285,\n\t0x62a8: 0x0039e685, 0x62a9: 0x003a9085, 0x62aa: 0x003a1a85,\n\t0x62ac: 0x003a4e85, 0x62ad: 0x003a5685, 0x62ae: 0x0039c685, 0x62af: 0x0039ee85,\n\t0x62b0: 0x0039fc85, 0x62b1: 0x0039dc85, 0x62b2: 0x003a1285,\n\t0x62b4: 0x0039c885, 0x62b5: 0x00395685, 0x62b6: 0x00395885, 0x62b7: 0x00397485,\n\t0x62b9: 0x0039de85, 0x62ba: 0x0039e885, 0x62bb: 0x0039f085,\n\t0x62bc: 0x00393a85, 0x62be: 0x0039fe85,\n\t// Block 0x18b, offset 0x62c0\n\t0x62c0: 0x00393885, 0x62c1: 0x00393c85, 0x62c2: 0x00396485, 0x62c3: 0x00398885,\n\t0x62c4: 0x003a6885, 0x62c5: 0x003a7485, 0x62c6: 0x0039a685, 0x62c7: 0x00397285,\n\t0x62c8: 0x0039e685, 0x62c9: 0x003a9085, 0x62cb: 0x003a4085,\n\t0x62cc: 0x003a4e85, 0x62cd: 0x003a5685, 0x62ce: 0x0039c685, 0x62cf: 0x0039ee85,\n\t0x62d0: 0x0039fc85, 0x62d1: 0x0039dc85, 0x62d2: 0x003a1285, 0x62d3: 0x0039a485,\n\t0x62d4: 0x0039c885, 0x62d5: 0x00395685, 0x62d6: 0x00395885, 0x62d7: 0x00397485,\n\t0x62d8: 0x00398a85, 0x62d9: 0x0039de85, 0x62da: 0x0039e885, 0x62db: 0x0039f085,\n\t0x62e1: 0x00393c85, 0x62e2: 0x00396485, 0x62e3: 0x00398885,\n\t0x62e5: 0x003a7485, 0x62e6: 0x0039a685, 0x62e7: 0x00397285,\n\t0x62e8: 0x0039e685, 0x62e9: 0x003a9085, 0x62eb: 0x003a4085,\n\t0x62ec: 0x003a4e85, 0x62ed: 0x003a5685, 0x62ee: 0x0039c685, 0x62ef: 0x0039ee85,\n\t0x62f0: 0x0039fc85, 0x62f1: 0x0039dc85, 0x62f2: 0x003a1285, 0x62f3: 0x0039a485,\n\t0x62f4: 0x0039c885, 0x62f5: 0x00395685, 0x62f6: 0x00395885, 0x62f7: 0x00397485,\n\t0x62f8: 0x00398a85, 0x62f9: 0x0039de85, 0x62fa: 0x0039e885, 0x62fb: 0x0039f085,\n\t// Block 0x18c, offset 0x6300\n\t0x6330: 0x40070a20, 0x6331: 0x40070c20,\n\t// Block 0x18d, offset 0x6340\n\t0x6340: 0x401f6e20, 0x6341: 0x401f7020, 0x6342: 0x401f7220, 0x6343: 0x401f7420,\n\t0x6344: 0x401f7620, 0x6345: 0x401f7820, 0x6346: 0x401f7a20, 0x6347: 0x401f7c20,\n\t0x6348: 0x401f7e20, 0x6349: 0x401f8020, 0x634a: 0x401f8220, 0x634b: 0x401f8420,\n\t0x634c: 0x401f8620, 0x634d: 0x401f8820, 0x634e: 0x401f8a20, 0x634f: 0x401f8c20,\n\t0x6350: 0x401f8e20, 0x6351: 0x401f9020, 0x6352: 0x401f9220, 0x6353: 0x401f9420,\n\t0x6354: 0x401f9620, 0x6355: 0x401f9820, 0x6356: 0x401f9a20, 0x6357: 0x401f9c20,\n\t0x6358: 0x401f9e20, 0x6359: 0x401fa020, 0x635a: 0x401fa220, 0x635b: 0x401fa420,\n\t0x635c: 0x401fa620, 0x635d: 0x401fa820, 0x635e: 0x401faa20, 0x635f: 0x401fac20,\n\t0x6360: 0x401fae20, 0x6361: 0x401fb020, 0x6362: 0x401fb220, 0x6363: 0x401fb420,\n\t0x6364: 0x401fb620, 0x6365: 0x401fb820, 0x6366: 0x401fba20, 0x6367: 0x401fbc20,\n\t0x6368: 0x401fbe20, 0x6369: 0x401fc020, 0x636a: 0x401fc220, 0x636b: 0x401fc420,\n\t0x6370: 0x401fc620, 0x6371: 0x401fc820, 0x6372: 0x401fca20, 0x6373: 0x401fcc20,\n\t0x6374: 0x401fce20, 0x6375: 0x401fd020, 0x6376: 0x401fd220, 0x6377: 0x401fd420,\n\t0x6378: 0x401fd620, 0x6379: 0x401fd820, 0x637a: 0x401fda20, 0x637b: 0x401fdc20,\n\t0x637c: 0x401fde20, 0x637d: 0x401fe020, 0x637e: 0x401fe220, 0x637f: 0x401fe420,\n\t// Block 0x18e, offset 0x6380\n\t0x6380: 0x401fe620, 0x6381: 0x401fe820, 0x6382: 0x401fea20, 0x6383: 0x401fec20,\n\t0x6384: 0x401fee20, 0x6385: 0x401ff020, 0x6386: 0x401ff220, 0x6387: 0x401ff420,\n\t0x6388: 0x401ff620, 0x6389: 0x401ff820, 0x638a: 0x401ffa20, 0x638b: 0x401ffc20,\n\t0x638c: 0x401ffe20, 0x638d: 0x40200020, 0x638e: 0x40200220, 0x638f: 0x40200420,\n\t0x6390: 0x40200620, 0x6391: 0x40200820, 0x6392: 0x40200a20, 0x6393: 0x40200c20,\n\t0x6394: 0x40200e20, 0x6395: 0x40201020, 0x6396: 0x40201220, 0x6397: 0x40201420,\n\t0x6398: 0x40201620, 0x6399: 0x40201820, 0x639a: 0x40201a20, 0x639b: 0x40201c20,\n\t0x639c: 0x40201e20, 0x639d: 0x40202020, 0x639e: 0x40202220, 0x639f: 0x40202420,\n\t0x63a0: 0x40202620, 0x63a1: 0x40202820, 0x63a2: 0x40202a20, 0x63a3: 0x40202c20,\n\t0x63a4: 0x40202e20, 0x63a5: 0x40203020, 0x63a6: 0x40203220, 0x63a7: 0x40203420,\n\t0x63a8: 0x40203620, 0x63a9: 0x40203820, 0x63aa: 0x40203a20, 0x63ab: 0x40203c20,\n\t0x63ac: 0x40203e20, 0x63ad: 0x40204020, 0x63ae: 0x40204220, 0x63af: 0x40204420,\n\t0x63b0: 0x40204620, 0x63b1: 0x40204820, 0x63b2: 0x40204a20, 0x63b3: 0x40204c20,\n\t0x63b4: 0x40204e20, 0x63b5: 0x40205020, 0x63b6: 0x40205220, 0x63b7: 0x40205420,\n\t0x63b8: 0x40205620, 0x63b9: 0x40205820, 0x63ba: 0x40205a20, 0x63bb: 0x40205c20,\n\t0x63bc: 0x40205e20, 0x63bd: 0x40206020, 0x63be: 0x40206220, 0x63bf: 0x40206420,\n\t// Block 0x18f, offset 0x63c0\n\t0x63c0: 0x40206620, 0x63c1: 0x40206820, 0x63c2: 0x40206a20, 0x63c3: 0x40206c20,\n\t0x63c4: 0x40206e20, 0x63c5: 0x40207020, 0x63c6: 0x40207220, 0x63c7: 0x40207420,\n\t0x63c8: 0x40207620, 0x63c9: 0x40207820, 0x63ca: 0x40207a20, 0x63cb: 0x40207c20,\n\t0x63cc: 0x40207e20, 0x63cd: 0x40208020, 0x63ce: 0x40208220, 0x63cf: 0x40208420,\n\t0x63d0: 0x40208620, 0x63d1: 0x40208820, 0x63d2: 0x40208a20, 0x63d3: 0x40208c20,\n\t0x63e0: 0x40208e20, 0x63e1: 0x40209020, 0x63e2: 0x40209220, 0x63e3: 0x40209420,\n\t0x63e4: 0x40209620, 0x63e5: 0x40209820, 0x63e6: 0x40209a20, 0x63e7: 0x40209c20,\n\t0x63e8: 0x40209e20, 0x63e9: 0x4020a020, 0x63ea: 0x4020a220, 0x63eb: 0x4020a420,\n\t0x63ec: 0x4020a620, 0x63ed: 0x4020a820, 0x63ee: 0x4020aa20,\n\t0x63f1: 0x4020ac20, 0x63f2: 0x4020ae20, 0x63f3: 0x4020b020,\n\t0x63f4: 0x4020b220, 0x63f5: 0x4020b420, 0x63f6: 0x4020b620, 0x63f7: 0x4020b820,\n\t0x63f8: 0x4020ba20, 0x63f9: 0x4020bc20, 0x63fa: 0x4020be20, 0x63fb: 0x4020c020,\n\t0x63fc: 0x4020c220, 0x63fd: 0x4020c420, 0x63fe: 0x4020c620,\n\t// Block 0x190, offset 0x6400\n\t0x6401: 0x4020c820, 0x6402: 0x4020ca20, 0x6403: 0x4020cc20,\n\t0x6404: 0x4020ce20, 0x6405: 0x4020d020, 0x6406: 0x4020d220, 0x6407: 0x4020d420,\n\t0x6408: 0x4020d620, 0x6409: 0x4020d820, 0x640a: 0x4020da20, 0x640b: 0x4020dc20,\n\t0x640c: 0x4020de20, 0x640d: 0x4020e020, 0x640e: 0x4020e220, 0x640f: 0x4020e420,\n\t0x6411: 0x4020e620, 0x6412: 0x4020e820, 0x6413: 0x4020ea20,\n\t0x6414: 0x4020ec20, 0x6415: 0x4020ee20, 0x6416: 0x4020f020, 0x6417: 0x4020f220,\n\t0x6418: 0x4020f420, 0x6419: 0x4020f620, 0x641a: 0x4020f820, 0x641b: 0x4020fa20,\n\t0x641c: 0x4020fc20, 0x641d: 0x4020fe20, 0x641e: 0x40210020, 0x641f: 0x40210220,\n\t// Block 0x191, offset 0x6440\n\t0x6440: 0xf0001f04, 0x6441: 0xf0001f04, 0x6442: 0xf0001f04, 0x6443: 0xf0001f04,\n\t0x6444: 0xf0001f04, 0x6445: 0xf0001f04, 0x6446: 0xf0001f04, 0x6447: 0xf0001f04,\n\t0x6448: 0xf0001f04, 0x6449: 0xf0001f04, 0x644a: 0xf0001f04,\n\t0x6450: 0xf0000a04, 0x6451: 0xf0000a04, 0x6452: 0xf0000a04, 0x6453: 0xf0000a04,\n\t0x6454: 0xf0000a04, 0x6455: 0xf0000a04, 0x6456: 0xf0000a04, 0x6457: 0xf0000a04,\n\t0x6458: 0xf0000a04, 0x6459: 0xf0000a04, 0x645a: 0xf0000a04, 0x645b: 0xf0000a04,\n\t0x645c: 0xf0000a04, 0x645d: 0xf0000a04, 0x645e: 0xf0000a04, 0x645f: 0xf0000a04,\n\t0x6460: 0xf0000a04, 0x6461: 0xf0000a04, 0x6462: 0xf0000a04, 0x6463: 0xf0000a04,\n\t0x6464: 0xf0000a04, 0x6465: 0xf0000a04, 0x6466: 0xf0000a04, 0x6467: 0xf0000a04,\n\t0x6468: 0xf0000a04, 0x6469: 0xf0000a04, 0x646a: 0xf0000a04, 0x646b: 0x002c3a8c,\n\t0x646c: 0x002f7a8c, 0x646d: 0xf0000c0c, 0x646e: 0xf0000c0c,\n\t0x6470: 0x002bde9d, 0x6471: 0x002c0a9d, 0x6472: 0x002c3a9d, 0x6473: 0x002c629d,\n\t0x6474: 0x002c989d, 0x6475: 0x002d089d, 0x6476: 0x002d229d, 0x6477: 0x002d689d,\n\t0x6478: 0x002d9a9d, 0x6479: 0x002dcc9d, 0x647a: 0x002dfe9d, 0x647b: 0x002e229d,\n\t0x647c: 0x002e829d, 0x647d: 0x002e9e9d, 0x647e: 0x002ee29d, 0x647f: 0x002f2c9d,\n\t// Block 0x192, offset 0x6480\n\t0x6480: 0x002f569d, 0x6481: 0x002f7a9d, 0x6482: 0x002fe69d, 0x6483: 0x00302c9d,\n\t0x6484: 0x00306c9d, 0x6485: 0x0030be9d, 0x6486: 0x0030e29d, 0x6487: 0x0030f69d,\n\t0x6488: 0x0031009d, 0x6489: 0x00312a9d, 0x648a: 0xf0001d1d, 0x648b: 0xf0001d1d,\n\t0x648c: 0xf0001d1d, 0x648d: 0xf0001d1d, 0x648e: 0xe0000ebc, 0x648f: 0xf0001d1d,\n\t0x6490: 0x002bde8c, 0x6491: 0x002c0a8c, 0x6492: 0x002c3a8c, 0x6493: 0x002c628c,\n\t0x6494: 0x002c988c, 0x6495: 0x002d088c, 0x6496: 0x002d228c, 0x6497: 0x002d688c,\n\t0x6498: 0x002d9a8c, 0x6499: 0x002dcc8c, 0x649a: 0x002dfe8c, 0x649b: 0x002e228c,\n\t0x649c: 0x002e828c, 0x649d: 0x002e9e8c, 0x649e: 0x002ee28c, 0x649f: 0x002f2c8c,\n\t0x64a0: 0x002f568c, 0x64a1: 0x002f7a8c, 0x64a2: 0x002fe68c, 0x64a3: 0x00302c8c,\n\t0x64a4: 0x00306c8c, 0x64a5: 0x0030be8c, 0x64a6: 0x0030e28c, 0x64a7: 0x0030f68c,\n\t0x64a8: 0x0031008c, 0x64a9: 0x00312a8c, 0x64aa: 0xf0001414, 0x64ab: 0xf0001414,\n\t0x64b0: 0x002bde9d, 0x64b1: 0x002c0a9d, 0x64b2: 0x002c3a9d, 0x64b3: 0x002c629d,\n\t0x64b4: 0x002c989d, 0x64b5: 0x002d089d, 0x64b6: 0x002d229d, 0x64b7: 0x002d689d,\n\t0x64b8: 0x002d9a9d, 0x64b9: 0x002dcc9d, 0x64ba: 0x002dfe9d, 0x64bb: 0x002e229d,\n\t0x64bc: 0x002e829d, 0x64bd: 0x002e9e9d, 0x64be: 0x002ee29d, 0x64bf: 0x002f2c9d,\n\t// Block 0x193, offset 0x64c0\n\t0x64c0: 0x002f569d, 0x64c1: 0x002f7a9d, 0x64c2: 0x002fe69d, 0x64c3: 0x00302c9d,\n\t0x64c4: 0x00306c9d, 0x64c5: 0x0030be9d, 0x64c6: 0x0030e29d, 0x64c7: 0x0030f69d,\n\t0x64c8: 0x0031009d, 0x64c9: 0x00312a9d, 0x64ca: 0x002f2c9d, 0x64cb: 0xe0000c81,\n\t0x64cc: 0xe0000eb5, 0x64cd: 0xe0000f74, 0x64ce: 0xe00009d2, 0x64cf: 0xe00010f0,\n\t0x64d0: 0xf0001d1d, 0x64d1: 0xe0000a6f, 0x64d2: 0xe0000a7e, 0x64d3: 0xe0000ba4,\n\t0x64d4: 0xe0000c84, 0x64d5: 0xe0000d8a, 0x64d6: 0xe0000d8e, 0x64d7: 0xe0000e9b,\n\t0x64d8: 0xe0000f77, 0x64d9: 0xe00010a2, 0x64da: 0xe00010c0,\n\t// Block 0x194, offset 0x6500\n\t0x6526: 0x40110c20, 0x6527: 0x40110e20,\n\t0x6528: 0x40111020, 0x6529: 0x40111220, 0x652a: 0x40111420, 0x652b: 0x40111620,\n\t0x652c: 0x40111820, 0x652d: 0x40111a20, 0x652e: 0x40111c20, 0x652f: 0x40111e20,\n\t0x6530: 0x40112020, 0x6531: 0x40112220, 0x6532: 0x40112420, 0x6533: 0x40112620,\n\t0x6534: 0x40112820, 0x6535: 0x40112a20, 0x6536: 0x40112c20, 0x6537: 0x40112e20,\n\t0x6538: 0x40113020, 0x6539: 0x40113220, 0x653a: 0x40113420, 0x653b: 0x40113620,\n\t0x653c: 0x40113820, 0x653d: 0x40113a20, 0x653e: 0x40113c20, 0x653f: 0x40113e20,\n\t// Block 0x195, offset 0x6540\n\t0x6540: 0xf0001c1c, 0x6541: 0xf0001c1c, 0x6542: 0x00658c9c,\n\t0x6550: 0x02c4969c, 0x6551: 0x02b6ae9c, 0x6552: 0x02a7989c, 0x6553: 0xf0001c1c,\n\t0x6554: 0x029d189c, 0x6555: 0x02b2349c, 0x6556: 0x0313c69c, 0x6557: 0x02b2529c,\n\t0x6558: 0x029d489c, 0x6559: 0x02cc409c, 0x655a: 0x02e2429c, 0x655b: 0x02cb329c,\n\t0x655c: 0x02a49a9c, 0x655d: 0x02bf189c, 0x655e: 0x02a31a9c, 0x655f: 0x02cb609c,\n\t0x6560: 0x02a43a9c, 0x6561: 0x02fa849c, 0x6562: 0x02ea3e9c, 0x6563: 0x0319529c,\n\t0x6564: 0x02b1e09c, 0x6565: 0x02a8729c, 0x6566: 0x02de289c, 0x6567: 0x02c52a9c,\n\t0x6568: 0x02c6aa9c, 0x6569: 0x029c009c, 0x656a: 0x029c129c, 0x656b: 0x0320949c,\n\t0x656c: 0x02bbcc9c, 0x656d: 0x029c5a9c, 0x656e: 0x02a7e69c, 0x656f: 0x02c60e9c,\n\t0x6570: 0x031ae09c, 0x6571: 0x02c4a69c, 0x6572: 0x02f3029c, 0x6573: 0x02f4f49c,\n\t0x6574: 0x02a8109c, 0x6575: 0x02dd009c, 0x6576: 0x02ce129c, 0x6577: 0x02ce109c,\n\t0x6578: 0x02ea669c, 0x6579: 0x02a4e49c, 0x657a: 0x02ab6c9c,\n\t// Block 0x196, offset 0x6580\n\t0x6580: 0xf0000404, 0x6581: 0xf0000404, 0x6582: 0xf0000404, 0x6583: 0xf0000404,\n\t0x6584: 0xf0000404, 0x6585: 0xf0000404, 0x6586: 0xf0000404, 0x6587: 0xf0000404,\n\t0x6588: 0xf0000404,\n\t0x6590: 0x02bf2e86, 0x6591: 0x02a7de86,\n\t// Block 0x197, offset 0x65c0\n\t0x65c0: 0x40210420, 0x65c1: 0x40210620, 0x65c2: 0x40210820, 0x65c3: 0x40210a20,\n\t0x65c4: 0x40210c20, 0x65c5: 0x40210e20, 0x65c6: 0x40211020, 0x65c7: 0x40211220,\n\t0x65c8: 0x40211420, 0x65c9: 0x40211620, 0x65ca: 0x40211820, 0x65cb: 0x40211a20,\n\t0x65cc: 0x40211c20, 0x65cd: 0x40211e20, 0x65ce: 0x40212020, 0x65cf: 0x40212220,\n\t0x65d0: 0x40212420, 0x65d1: 0x40212620, 0x65d2: 0x40212820, 0x65d3: 0x40212a20,\n\t0x65d4: 0x40212c20, 0x65d5: 0x40212e20, 0x65d6: 0x40213020, 0x65d7: 0x40213220,\n\t0x65d8: 0x40213420, 0x65d9: 0x40213620, 0x65da: 0x40213820, 0x65db: 0x40213a20,\n\t0x65dc: 0x40213c20, 0x65dd: 0x40213e20, 0x65de: 0x40214020, 0x65df: 0x40214220,\n\t0x65e0: 0x40214420,\n\t0x65f0: 0x40214620, 0x65f1: 0x40214820, 0x65f2: 0x40214a20, 0x65f3: 0x40214c20,\n\t0x65f4: 0x40214e20, 0x65f5: 0x40215020, 0x65f7: 0x40215220,\n\t0x65f8: 0x40215420, 0x65f9: 0x40215620, 0x65fa: 0x40215820, 0x65fb: 0x40215a20,\n\t0x65fc: 0x40215c20, 0x65fd: 0x40215e20, 0x65fe: 0x40216020, 0x65ff: 0x40216220,\n\t// Block 0x198, offset 0x6600\n\t0x6600: 0x40216420, 0x6601: 0x40216620, 0x6602: 0x40216820, 0x6603: 0x40216a20,\n\t0x6604: 0x40216c20, 0x6605: 0x40216e20, 0x6606: 0x40217020, 0x6607: 0x40217220,\n\t0x6608: 0x40217420, 0x6609: 0x40217620, 0x660a: 0x40217820, 0x660b: 0x40217a20,\n\t0x660c: 0x40217c20, 0x660d: 0x40217e20, 0x660e: 0x40218020, 0x660f: 0x40218220,\n\t0x6610: 0x40218420, 0x6611: 0x40218620, 0x6612: 0x40218820, 0x6613: 0x40218a20,\n\t0x6614: 0x40218c20, 0x6615: 0x40218e20, 0x6616: 0x40219020, 0x6617: 0x40219220,\n\t0x6618: 0x40219420, 0x6619: 0x40219620, 0x661a: 0x40219820, 0x661b: 0x40219a20,\n\t0x661c: 0x40219c20, 0x661d: 0x40219e20, 0x661e: 0x4021a020, 0x661f: 0x4021a220,\n\t0x6620: 0x4021a420, 0x6621: 0x4021a620, 0x6622: 0x4021a820, 0x6623: 0x4021aa20,\n\t0x6624: 0x4021ac20, 0x6625: 0x4021ae20, 0x6626: 0x4021b020, 0x6627: 0x4021b220,\n\t0x6628: 0x4021b420, 0x6629: 0x4021b620, 0x662a: 0x4021b820, 0x662b: 0x4021ba20,\n\t0x662c: 0x4021bc20, 0x662d: 0x4021be20, 0x662e: 0x4021c020, 0x662f: 0x4021c220,\n\t0x6630: 0x4021c420, 0x6631: 0x4021c620, 0x6632: 0x4021c820, 0x6633: 0x4021ca20,\n\t0x6634: 0x4021cc20, 0x6635: 0x4021ce20, 0x6636: 0x4021d020, 0x6637: 0x4021d220,\n\t0x6638: 0x4021d420, 0x6639: 0x4021d620, 0x663a: 0x4021d820, 0x663b: 0x4021da20,\n\t0x663c: 0x4021dc20,\n\t// Block 0x199, offset 0x6640\n\t0x6640: 0x4021de20, 0x6641: 0x4021e020, 0x6642: 0x4021e220, 0x6643: 0x4021e420,\n\t0x6644: 0x4021e620, 0x6645: 0x4021e820, 0x6646: 0x4021ea20, 0x6647: 0x4021ec20,\n\t0x6648: 0x4021ee20, 0x6649: 0x4021f020, 0x664a: 0x4021f220, 0x664b: 0x4021f420,\n\t0x664c: 0x4021f620, 0x664d: 0x4021f820, 0x664e: 0x4021fa20, 0x664f: 0x4021fc20,\n\t0x6650: 0x4021fe20, 0x6651: 0x40220020, 0x6652: 0x40220220, 0x6653: 0x40220420,\n\t0x6660: 0x40220620, 0x6661: 0x40220820, 0x6662: 0x40220a20, 0x6663: 0x40220c20,\n\t0x6664: 0x40220e20, 0x6665: 0x40221020, 0x6666: 0x40221220, 0x6667: 0x40221420,\n\t0x6668: 0x40221620, 0x6669: 0x40221820, 0x666a: 0x40221a20, 0x666b: 0x40221c20,\n\t0x666c: 0x40221e20, 0x666d: 0x40222020, 0x666e: 0x40222220, 0x666f: 0x40222420,\n\t0x6670: 0x40222620, 0x6671: 0x40222820, 0x6672: 0x40222a20, 0x6673: 0x40222c20,\n\t0x6674: 0x40222e20, 0x6675: 0x40223020, 0x6676: 0x40223220, 0x6677: 0x40223420,\n\t0x6678: 0x40223620, 0x6679: 0x40223820, 0x667a: 0x40223a20, 0x667b: 0x40223c20,\n\t0x667c: 0x40223e20, 0x667d: 0x40224020, 0x667e: 0x40224220, 0x667f: 0x40224420,\n\t// Block 0x19a, offset 0x6680\n\t0x6680: 0x40224620, 0x6681: 0x40224820, 0x6682: 0x40224a20, 0x6683: 0x40224c20,\n\t0x6684: 0x40224e20, 0x6686: 0x40225020, 0x6687: 0x40225220,\n\t0x6688: 0x40225420, 0x6689: 0x40225620, 0x668a: 0x40225820,\n\t0x66a0: 0x40225a20, 0x66a1: 0x40225c20, 0x66a2: 0x40225e20, 0x66a3: 0x40226020,\n\t0x66a4: 0x40226220, 0x66a5: 0x40226420, 0x66a6: 0x40226620, 0x66a7: 0x40226820,\n\t0x66a8: 0x40226a20, 0x66a9: 0x40226c20, 0x66aa: 0x40226e20, 0x66ab: 0x40227020,\n\t0x66ac: 0x40227220, 0x66ad: 0x40227420, 0x66ae: 0x40227620, 0x66af: 0x40227820,\n\t0x66b0: 0x40227a20,\n\t// Block 0x19b, offset 0x66c0\n\t0x66c0: 0x40227c20, 0x66c1: 0x40227e20, 0x66c2: 0x40228020, 0x66c3: 0x40228220,\n\t0x66c4: 0x40228420, 0x66c5: 0x40228620, 0x66c6: 0x40228820, 0x66c7: 0x40228a20,\n\t0x66c8: 0x40228c20, 0x66c9: 0x40228e20, 0x66ca: 0x40229020, 0x66cb: 0x40229220,\n\t0x66cc: 0x40229420, 0x66cd: 0x40229620, 0x66ce: 0x40229820, 0x66cf: 0x40229a20,\n\t0x66d0: 0x40229c20, 0x66d1: 0x40229e20, 0x66d2: 0x4022a020, 0x66d3: 0x4022a220,\n\t0x66d4: 0x4022a420, 0x66d5: 0x4022a620, 0x66d6: 0x4022a820, 0x66d7: 0x4022aa20,\n\t0x66d8: 0x4022ac20, 0x66d9: 0x4022ae20, 0x66da: 0x4022b020, 0x66db: 0x4022b220,\n\t0x66dc: 0x4022b420, 0x66dd: 0x4022b620, 0x66de: 0x4022b820, 0x66df: 0x4022ba20,\n\t0x66e0: 0x4022bc20, 0x66e1: 0x4022be20, 0x66e2: 0x4022c020, 0x66e3: 0x4022c220,\n\t0x66e4: 0x4022c420, 0x66e5: 0x4022c620, 0x66e6: 0x4022c820, 0x66e7: 0x4022ca20,\n\t0x66e8: 0x4022cc20, 0x66e9: 0x4022ce20, 0x66ea: 0x4022d020, 0x66eb: 0x4022d220,\n\t0x66ec: 0x4022d420, 0x66ed: 0x4022d620, 0x66ee: 0x4022d820, 0x66ef: 0x4022da20,\n\t0x66f0: 0x4022dc20, 0x66f1: 0x4022de20, 0x66f2: 0x4022e020, 0x66f3: 0x4022e220,\n\t0x66f4: 0x4022e420, 0x66f5: 0x4022e620, 0x66f6: 0x4022e820, 0x66f7: 0x4022ea20,\n\t0x66f8: 0x4022ec20, 0x66f9: 0x4022ee20, 0x66fa: 0x4022f020, 0x66fb: 0x4022f220,\n\t0x66fc: 0x4022f420, 0x66fd: 0x4022f620, 0x66fe: 0x4022f820,\n\t// Block 0x19c, offset 0x6700\n\t0x6700: 0x4022fa20, 0x6702: 0x4022fc20, 0x6703: 0x4022fe20,\n\t0x6704: 0x40230020, 0x6705: 0x40230220, 0x6706: 0x40230420, 0x6707: 0x40230620,\n\t0x6708: 0x40230820, 0x6709: 0x40230a20, 0x670a: 0x40230c20, 0x670b: 0x40230e20,\n\t0x670c: 0x40231020, 0x670d: 0x40231220, 0x670e: 0x40231420, 0x670f: 0x40231620,\n\t0x6710: 0x40231820, 0x6711: 0x40231a20, 0x6712: 0x40231c20, 0x6713: 0x40231e20,\n\t0x6714: 0x40232020, 0x6715: 0x40232220, 0x6716: 0x40232420, 0x6717: 0x40232620,\n\t0x6718: 0x40232820, 0x6719: 0x40232a20, 0x671a: 0x40232c20, 0x671b: 0x40232e20,\n\t0x671c: 0x40233020, 0x671d: 0x40233220, 0x671e: 0x40233420, 0x671f: 0x40233620,\n\t0x6720: 0x40233820, 0x6721: 0x40233a20, 0x6722: 0x40233c20, 0x6723: 0x40233e20,\n\t0x6724: 0x40234020, 0x6725: 0x40234220, 0x6726: 0x40234420, 0x6727: 0x40234620,\n\t0x6728: 0x40234820, 0x6729: 0x40234a20, 0x672a: 0x40234c20, 0x672b: 0x40234e20,\n\t0x672c: 0x40235020, 0x672d: 0x40235220, 0x672e: 0x40235420, 0x672f: 0x40235620,\n\t0x6730: 0x40235820, 0x6731: 0x40235a20, 0x6732: 0x40235c20, 0x6733: 0x40235e20,\n\t0x6734: 0x40236020, 0x6735: 0x40236220, 0x6736: 0x40236420, 0x6737: 0x40236620,\n\t0x6738: 0x40236820, 0x6739: 0x40236a20, 0x673a: 0x40236c20, 0x673b: 0x40236e20,\n\t0x673c: 0x40237020, 0x673d: 0x40237220, 0x673e: 0x40237420, 0x673f: 0x40237620,\n\t// Block 0x19d, offset 0x6740\n\t0x6740: 0x40237820, 0x6741: 0x40237a20, 0x6742: 0x40237c20, 0x6743: 0x40237e20,\n\t0x6744: 0x40238020, 0x6745: 0x40238220, 0x6746: 0x40238420, 0x6747: 0x40238620,\n\t0x6748: 0x40238820, 0x6749: 0x40238a20, 0x674a: 0x40238c20, 0x674b: 0x40238e20,\n\t0x674c: 0x40239020, 0x674d: 0x40239220, 0x674e: 0x40239420, 0x674f: 0x40239620,\n\t0x6750: 0x40239820, 0x6751: 0x40239a20, 0x6752: 0x40239c20, 0x6753: 0x40239e20,\n\t0x6754: 0x4023a020, 0x6755: 0x4023a220, 0x6756: 0x4023a420, 0x6757: 0x4023a620,\n\t0x6758: 0x4023a820, 0x6759: 0x4023aa20, 0x675a: 0x4023ac20, 0x675b: 0x4023ae20,\n\t0x675c: 0x4023b020, 0x675d: 0x4023b220, 0x675e: 0x4023b420, 0x675f: 0x4023b620,\n\t0x6760: 0x4023b820, 0x6761: 0x4023ba20, 0x6762: 0x4023bc20, 0x6763: 0x4023be20,\n\t0x6764: 0x4023c020, 0x6765: 0x4023c220, 0x6766: 0x4023c420, 0x6767: 0x4023c620,\n\t0x6768: 0x4023c820, 0x6769: 0x4023ca20, 0x676a: 0x4023cc20, 0x676b: 0x4023ce20,\n\t0x676c: 0x4023d020, 0x676d: 0x4023d220, 0x676e: 0x4023d420, 0x676f: 0x4023d620,\n\t0x6770: 0x4023d820, 0x6771: 0x4023da20, 0x6772: 0x4023dc20, 0x6773: 0x4023de20,\n\t0x6774: 0x4023e020, 0x6775: 0x4023e220, 0x6776: 0x4023e420, 0x6777: 0x4023e620,\n\t0x6778: 0x4023e820, 0x6779: 0x4023ea20, 0x677a: 0x4023ec20, 0x677b: 0x4023ee20,\n\t0x677c: 0x4023f020, 0x677d: 0x4023f220, 0x677e: 0x4023f420, 0x677f: 0x4023f620,\n\t// Block 0x19e, offset 0x6780\n\t0x6780: 0x4023f820, 0x6781: 0x4023fa20, 0x6782: 0x4023fc20, 0x6783: 0x4023fe20,\n\t0x6784: 0x40240020, 0x6785: 0x40240220, 0x6786: 0x40240420, 0x6787: 0x40240620,\n\t0x6788: 0x40240820, 0x6789: 0x40240a20, 0x678a: 0x40240c20, 0x678b: 0x40240e20,\n\t0x678c: 0x40241020, 0x678d: 0x40241220, 0x678e: 0x40241420, 0x678f: 0x40241620,\n\t0x6790: 0x40241820, 0x6791: 0x40241a20, 0x6792: 0x40241c20, 0x6793: 0x40241e20,\n\t0x6794: 0x40242020, 0x6795: 0x40242220, 0x6796: 0x40242420, 0x6797: 0x40242620,\n\t0x6798: 0x40242820, 0x6799: 0x40242a20, 0x679a: 0x40242c20, 0x679b: 0x40242e20,\n\t0x679c: 0x40243020, 0x679d: 0x40243220, 0x679e: 0x40243420, 0x679f: 0x40243620,\n\t0x67a0: 0x40243820, 0x67a1: 0x40243a20, 0x67a2: 0x40243c20, 0x67a3: 0x40243e20,\n\t0x67a4: 0x40244020, 0x67a5: 0x40244220, 0x67a6: 0x40244420, 0x67a7: 0x40244620,\n\t0x67a8: 0x40244820, 0x67a9: 0x40244a20, 0x67aa: 0x40244c20, 0x67ab: 0x40244e20,\n\t0x67ac: 0x40245020, 0x67ad: 0x40245220, 0x67ae: 0x40245420, 0x67af: 0x40245620,\n\t0x67b0: 0x40245820, 0x67b1: 0x40245a20, 0x67b2: 0x40245c20, 0x67b3: 0x40245e20,\n\t0x67b4: 0x40246020, 0x67b5: 0x40246220, 0x67b6: 0x40246420, 0x67b7: 0x40246620,\n\t0x67b9: 0x40246820, 0x67ba: 0x40246a20, 0x67bb: 0x40246c20,\n\t0x67bc: 0x40246e20,\n\t// Block 0x19f, offset 0x67c0\n\t0x67c0: 0x40247020, 0x67c1: 0x40247220, 0x67c2: 0x40247420, 0x67c3: 0x40247620,\n\t0x67c4: 0x40247820, 0x67c5: 0x40247a20, 0x67c6: 0x40247c20, 0x67c7: 0x40247e20,\n\t0x67c8: 0x40248020, 0x67c9: 0x40248220, 0x67ca: 0x40248420, 0x67cb: 0x40248620,\n\t0x67cc: 0x40248820, 0x67cd: 0x40248a20, 0x67ce: 0x40248c20, 0x67cf: 0x40248e20,\n\t0x67d0: 0x40249020, 0x67d1: 0x40249220, 0x67d2: 0x40249420, 0x67d3: 0x40249620,\n\t0x67d4: 0x40249820, 0x67d5: 0x40249a20, 0x67d6: 0x40249c20, 0x67d7: 0x40249e20,\n\t0x67d8: 0x4024a020, 0x67d9: 0x4024a220, 0x67da: 0x4024a420, 0x67db: 0x4024a620,\n\t0x67dc: 0x4024a820, 0x67dd: 0x4024aa20, 0x67de: 0x4024ac20, 0x67df: 0x4024ae20,\n\t0x67e0: 0x4024b020, 0x67e1: 0x4024b220, 0x67e2: 0x4024b420, 0x67e3: 0x4024b620,\n\t0x67e4: 0x4024b820, 0x67e5: 0x4024ba20, 0x67e6: 0x4024bc20, 0x67e7: 0x4024be20,\n\t0x67e8: 0x4024c020, 0x67e9: 0x4024c220, 0x67ea: 0x4024c420, 0x67eb: 0x4024c620,\n\t0x67ec: 0x4024c820, 0x67ed: 0x4024ca20, 0x67ee: 0x4024cc20, 0x67ef: 0x4024ce20,\n\t0x67f0: 0x4024d020, 0x67f1: 0x4024d220, 0x67f2: 0x4024d420, 0x67f3: 0x4024d620,\n\t0x67f4: 0x4024d820, 0x67f5: 0x4024da20, 0x67f6: 0x4024dc20, 0x67f7: 0x4024de20,\n\t0x67f8: 0x4024e020, 0x67f9: 0x4024e220, 0x67fa: 0x4024e420, 0x67fb: 0x4024e620,\n\t0x67fc: 0x4024e820, 0x67fd: 0x4024ea20,\n\t// Block 0x1a0, offset 0x6800\n\t0x6800: 0x4024ec20, 0x6801: 0x4024ee20, 0x6802: 0x4024f020, 0x6803: 0x4024f220,\n\t0x6810: 0x4024f420, 0x6811: 0x4024f620, 0x6812: 0x4024f820, 0x6813: 0x4024fa20,\n\t0x6814: 0x4024fc20, 0x6815: 0x4024fe20, 0x6816: 0x40250020, 0x6817: 0x40250220,\n\t0x6818: 0x40250420, 0x6819: 0x40250620, 0x681a: 0x40250820, 0x681b: 0x40250a20,\n\t0x681c: 0x40250c20, 0x681d: 0x40250e20, 0x681e: 0x40251020, 0x681f: 0x40251220,\n\t0x6820: 0x40251420, 0x6821: 0x40251620, 0x6822: 0x40251820, 0x6823: 0x40251a20,\n\t0x6824: 0x40251c20, 0x6825: 0x40251e20, 0x6826: 0x40252020, 0x6827: 0x40252220,\n\t// Block 0x1a1, offset 0x6840\n\t0x687b: 0x40252420,\n\t0x687c: 0x40252620, 0x687d: 0x40252820, 0x687e: 0x40252a20, 0x687f: 0x40252c20,\n\t// Block 0x1a2, offset 0x6880\n\t0x6880: 0x40252e20, 0x6881: 0x40253020, 0x6882: 0x40253220, 0x6883: 0x40253420,\n\t0x6884: 0x40253620, 0x6885: 0x40253820, 0x6886: 0x40253a20, 0x6887: 0x40253c20,\n\t0x6888: 0x40253e20, 0x6889: 0x40254020, 0x688a: 0x40254220, 0x688b: 0x40254420,\n\t0x688c: 0x40254620, 0x688d: 0x40254820, 0x688e: 0x40254a20, 0x688f: 0x40254c20,\n\t0x6890: 0x40254e20, 0x6891: 0x40255020, 0x6892: 0x40255220, 0x6893: 0x40255420,\n\t0x6894: 0x40255620, 0x6895: 0x40255820, 0x6896: 0x40255a20, 0x6897: 0x40255c20,\n\t0x6898: 0x40255e20, 0x6899: 0x40256020, 0x689a: 0x40256220, 0x689b: 0x40256420,\n\t0x689c: 0x40256620, 0x689d: 0x40256820, 0x689e: 0x40256a20, 0x689f: 0x40256c20,\n\t0x68a0: 0x40256e20, 0x68a1: 0x40257020, 0x68a2: 0x40257220, 0x68a3: 0x40257420,\n\t0x68a4: 0x40257620, 0x68a5: 0x40257820, 0x68a6: 0x40257a20, 0x68a7: 0x40257c20,\n\t0x68a8: 0x40257e20, 0x68a9: 0x40258020, 0x68aa: 0x40258220, 0x68ab: 0x40258420,\n\t0x68ac: 0x40258620, 0x68ad: 0x40258820, 0x68ae: 0x40258a20, 0x68af: 0x40258c20,\n\t0x68b0: 0x40258e20, 0x68b1: 0x40259020, 0x68b2: 0x40259220, 0x68b3: 0x40259420,\n\t0x68b4: 0x40259620, 0x68b5: 0x40259820, 0x68b6: 0x40259a20, 0x68b7: 0x40259c20,\n\t0x68b8: 0x40259e20, 0x68b9: 0x4025a020, 0x68ba: 0x4025a220, 0x68bb: 0x4025a420,\n\t0x68bc: 0x4025a620, 0x68bd: 0x4025a820, 0x68be: 0x4025aa20, 0x68bf: 0x4025ac20,\n\t// Block 0x1a3, offset 0x68c0\n\t0x68c0: 0x4025ae20,\n\t0x68c5: 0x4025b020, 0x68c6: 0x4025b220, 0x68c7: 0x4025b420,\n\t0x68c8: 0x4025b620, 0x68c9: 0x4025b820, 0x68ca: 0x4025ba20, 0x68cb: 0x4025bc20,\n\t0x68cc: 0x4025be20, 0x68cd: 0x4025c020, 0x68ce: 0x4025c220, 0x68cf: 0x4025c420,\n\t// Block 0x1a4, offset 0x6900\n\t0x6900: 0x4025c620, 0x6901: 0x4025c820, 0x6902: 0x4025ca20, 0x6903: 0x4025cc20,\n\t0x6904: 0x4025ce20, 0x6905: 0x4025d020, 0x6906: 0x4025d220, 0x6907: 0x4025d420,\n\t0x6908: 0x4025d620, 0x6909: 0x4025d820, 0x690a: 0x4025da20, 0x690b: 0x4025dc20,\n\t0x690c: 0x4025de20, 0x690d: 0x4025e020, 0x690e: 0x4025e220, 0x690f: 0x4025e420,\n\t0x6910: 0x4025e620, 0x6911: 0x4025e820, 0x6912: 0x4025ea20, 0x6913: 0x4025ec20,\n\t0x6914: 0x4025ee20, 0x6915: 0x4025f020, 0x6916: 0x4025f220, 0x6917: 0x4025f420,\n\t0x6918: 0x4025f620, 0x6919: 0x4025f820, 0x691a: 0x4025fa20, 0x691b: 0x4025fc20,\n\t0x691c: 0x4025fe20, 0x691d: 0x40260020, 0x691e: 0x40260220, 0x691f: 0x40260420,\n\t0x6920: 0x40260620, 0x6921: 0x40260820, 0x6922: 0x40260a20, 0x6923: 0x40260c20,\n\t0x6924: 0x40260e20, 0x6925: 0x40261020, 0x6926: 0x40261220, 0x6927: 0x40261420,\n\t0x6928: 0x40261620, 0x6929: 0x40261820, 0x692a: 0x40261a20, 0x692b: 0x40261c20,\n\t0x692c: 0x40261e20, 0x692d: 0x40262020, 0x692e: 0x40262220, 0x692f: 0x40262420,\n\t0x6930: 0x40262620, 0x6931: 0x40262820, 0x6932: 0x40262a20, 0x6933: 0x40262c20,\n\t0x6934: 0x40262e20, 0x6935: 0x40263020, 0x6936: 0x40263220, 0x6937: 0x40263420,\n\t0x6938: 0x40263620, 0x6939: 0x40263820, 0x693a: 0x40263a20, 0x693b: 0x40263c20,\n\t0x693c: 0x40263e20, 0x693d: 0x40264020, 0x693e: 0x40264220, 0x693f: 0x40264420,\n\t// Block 0x1a5, offset 0x6940\n\t0x6940: 0x40264620, 0x6941: 0x40264820, 0x6942: 0x40264a20, 0x6943: 0x40264c20,\n\t0x6944: 0x40264e20, 0x6945: 0x40265020,\n\t// Block 0x1a6, offset 0x6980\n\t0x6980: 0x40265220, 0x6981: 0x40265420, 0x6982: 0x40265620, 0x6983: 0x40265820,\n\t0x6984: 0x40265a20, 0x6985: 0x40265c20, 0x6986: 0x40265e20, 0x6987: 0x40266020,\n\t0x6988: 0x40266220, 0x6989: 0x40266420, 0x698a: 0x40266620, 0x698b: 0x40266820,\n\t0x698c: 0x40266a20, 0x698d: 0x40266c20, 0x698e: 0x40266e20, 0x698f: 0x40267020,\n\t0x6990: 0x40267220, 0x6991: 0x40267420, 0x6992: 0x40267620, 0x6993: 0x40267820,\n\t0x6994: 0x40267a20, 0x6995: 0x40267c20, 0x6996: 0x40267e20, 0x6997: 0x40268020,\n\t0x6998: 0x40268220, 0x6999: 0x40268420, 0x699a: 0x40268620, 0x699b: 0x40268820,\n\t0x699c: 0x40268a20, 0x699d: 0x40268c20, 0x699e: 0x40268e20, 0x699f: 0x40269020,\n\t0x69a0: 0x40269220, 0x69a1: 0x40269420, 0x69a2: 0x40269620, 0x69a3: 0x40269820,\n\t0x69a4: 0x40269a20, 0x69a5: 0x40269c20, 0x69a6: 0x40269e20, 0x69a7: 0x4026a020,\n\t0x69a8: 0x4026a220, 0x69a9: 0x4026a420, 0x69aa: 0x4026a620, 0x69ab: 0x4026a820,\n\t0x69ac: 0x4026aa20, 0x69ad: 0x4026ac20, 0x69ae: 0x4026ae20, 0x69af: 0x4026b020,\n\t0x69b0: 0x4026b220, 0x69b1: 0x4026b420, 0x69b2: 0x4026b620, 0x69b3: 0x4026b820,\n\t0x69b4: 0x4026ba20, 0x69b5: 0x4026bc20, 0x69b6: 0x4026be20, 0x69b7: 0x4026c020,\n\t0x69b8: 0x4026c220, 0x69b9: 0x4026c420, 0x69ba: 0x4026c620, 0x69bb: 0x4026c820,\n\t0x69bc: 0x4026ca20, 0x69bd: 0x4026cc20, 0x69be: 0x4026ce20, 0x69bf: 0x4026d020,\n\t// Block 0x1a7, offset 0x69c0\n\t0x69c0: 0x4026d220, 0x69c1: 0x4026d420, 0x69c2: 0x4026d620, 0x69c3: 0x4026d820,\n\t0x69c4: 0x4026da20, 0x69c5: 0x4026dc20, 0x69c6: 0x4026de20, 0x69c7: 0x4026e020,\n\t0x69c8: 0x4026e220, 0x69c9: 0x4026e420, 0x69ca: 0x4026e620, 0x69cb: 0x4026e820,\n\t0x69cc: 0x4026ea20, 0x69cd: 0x4026ec20, 0x69ce: 0x4026ee20, 0x69cf: 0x4026f020,\n\t0x69d0: 0x4026f220, 0x69d1: 0x4026f420, 0x69d2: 0x4026f620, 0x69d3: 0x4026f820,\n\t0x69d4: 0x4026fa20, 0x69d5: 0x4026fc20, 0x69d6: 0x4026fe20, 0x69d7: 0x40270020,\n\t0x69d8: 0x40270220, 0x69d9: 0x40270420, 0x69da: 0x40270620, 0x69db: 0x40270820,\n\t0x69dc: 0x40270a20, 0x69dd: 0x40270c20, 0x69de: 0x40270e20, 0x69df: 0x40271020,\n\t0x69e0: 0x40271220, 0x69e1: 0x40271420, 0x69e2: 0x40271620, 0x69e3: 0x40271820,\n\t0x69e4: 0x40271a20, 0x69e5: 0x40271c20, 0x69e6: 0x40271e20, 0x69e7: 0x40272020,\n\t0x69e8: 0x40272220, 0x69e9: 0x40272420, 0x69ea: 0x40272620, 0x69eb: 0x40272820,\n\t0x69ec: 0x40272a20, 0x69ed: 0x40272c20, 0x69ee: 0x40272e20, 0x69ef: 0x40273020,\n\t0x69f0: 0x40273220, 0x69f1: 0x40273420, 0x69f2: 0x40273620, 0x69f3: 0x40273820,\n\t// Block 0x1a8, offset 0x6a00\n\t0x6a00: 0x429c7a20, 0x6a01: 0x429c7020, 0x6a02: 0x429c8220, 0x6a03: 0x48024420,\n\t0x6a04: 0x429ec020, 0x6a05: 0x429f5c20, 0x6a06: 0x429f7620, 0x6a07: 0x42a00420,\n\t0x6a08: 0x42a0f420, 0x6a09: 0x42a13220, 0x6a0a: 0x42a1ce20, 0x6a0b: 0x42a19e20,\n\t0x6a0c: 0x44693c20, 0x6a0d: 0x480c7420, 0x6a0e: 0x42a29a20, 0x6a0f: 0x42a2a820,\n\t0x6a10: 0x42a2c820, 0x6a11: 0x42a2ee20, 0x6a12: 0x480a3820, 0x6a13: 0x44697220,\n\t0x6a14: 0x42a2ce20, 0x6a15: 0x42a31a20, 0x6a16: 0x480a9620, 0x6a17: 0x42a32e20,\n\t0x6a18: 0x42a34820, 0x6a19: 0x429d9820, 0x6a1a: 0x42a35820, 0x6a1b: 0x42a36a20,\n\t0x6a1c: 0x4923be20, 0x6a1d: 0x42a3ea20, 0x6a1e: 0x42a40620, 0x6a1f: 0x4469be20,\n\t0x6a20: 0x42a47620, 0x6a21: 0x42a48c20, 0x6a22: 0x42a4e420, 0x6a23: 0x42a4ee20,\n\t0x6a24: 0x446a2a20, 0x6a25: 0x42a58e20, 0x6a26: 0x42a59220, 0x6a27: 0x42a5c820,\n\t0x6a28: 0x42a5f420, 0x6a29: 0x42a60a20, 0x6a2a: 0x42a60c20, 0x6a2b: 0x42a62e20,\n\t0x6a2c: 0x42a69220, 0x6a2d: 0x42a6a220, 0x6a2e: 0x42a6b420, 0x6a2f: 0x42a6e620,\n\t0x6a30: 0x42a6fa20, 0x6a31: 0x42a6fe20, 0x6a32: 0x42a6fe20, 0x6a33: 0x42a6fe20,\n\t0x6a34: 0x48145820, 0x6a35: 0x42e0e020, 0x6a36: 0x42a79420, 0x6a37: 0x42a7be20,\n\t0x6a38: 0x4816c620, 0x6a39: 0x42a7d620, 0x6a3a: 0x42a7e220, 0x6a3b: 0x42a80c20,\n\t0x6a3c: 0x42a93c20, 0x6a3d: 0x42a87020, 0x6a3e: 0x42a89020, 0x6a3f: 0x42a8d020,\n\t// Block 0x1a9, offset 0x6a40\n\t0x6a40: 0x42a94420, 0x6a41: 0x42a9ec20, 0x6a42: 0x42aa2020, 0x6a43: 0x42aaa620,\n\t0x6a44: 0x42aac620, 0x6a45: 0x42ab0820, 0x6a46: 0x42ab0820, 0x6a47: 0x42ab3220,\n\t0x6a48: 0x42ab5620, 0x6a49: 0x42ab6620, 0x6a4a: 0x42ab8420, 0x6a4b: 0x42ae2c20,\n\t0x6a4c: 0x42ac0c20, 0x6a4d: 0x42ae2e20, 0x6a4e: 0x42aca220, 0x6a4f: 0x42ace820,\n\t0x6a50: 0x42a40e20, 0x6a51: 0x42b1dc20, 0x6a52: 0x42af9c20, 0x6a53: 0x42afe820,\n\t0x6a54: 0x42b01a20, 0x6a55: 0x42af1620, 0x6a56: 0x42b06420, 0x6a57: 0x42b06220,\n\t0x6a58: 0x42b15820, 0x6a59: 0x4829c820, 0x6a5a: 0x42b1e420, 0x6a5b: 0x42b1ee20,\n\t0x6a5c: 0x42b20c20, 0x6a5d: 0x42b23420, 0x6a5e: 0x42b24420, 0x6a5f: 0x42b2c420,\n\t0x6a60: 0x482d5020, 0x6a61: 0x482dd420, 0x6a62: 0x42b3d820, 0x6a63: 0x42b43620,\n\t0x6a64: 0x42b44e20, 0x6a65: 0x42b3b020, 0x6a66: 0x42b4cc20, 0x6a67: 0x446ddc20,\n\t0x6a68: 0x446df820, 0x6a69: 0x42b61020, 0x6a6a: 0x42b67c20, 0x6a6b: 0x42b67c20,\n\t0x6a6c: 0x48339020, 0x6a6d: 0x42b78620, 0x6a6e: 0x42b7b020, 0x6a6f: 0x42b7ce20,\n\t0x6a70: 0x42b7e620, 0x6a71: 0x48363020, 0x6a72: 0x42b7fe20, 0x6a73: 0x42b80c20,\n\t0x6a74: 0x42bea620, 0x6a75: 0x42b84420, 0x6a76: 0x446f0220, 0x6a77: 0x42b8c020,\n\t0x6a78: 0x42b8dc20, 0x6a79: 0x42b98020, 0x6a7a: 0x42b91a20, 0x6a7b: 0x483bc820,\n\t0x6a7c: 0x42ba8620, 0x6a7d: 0x483bcc20, 0x6a7e: 0x42badc20, 0x6a7f: 0x42bad620,\n\t// Block 0x1aa, offset 0x6a80\n\t0x6a80: 0x42baf820, 0x6a81: 0x42bbc220, 0x6a82: 0x42bbc420, 0x6a83: 0x44705e20,\n\t0x6a84: 0x42bbfa20, 0x6a85: 0x42bc5020, 0x6a86: 0x42bc7a20, 0x6a87: 0x42bcd220,\n\t0x6a88: 0x4470c420, 0x6a89: 0x48430620, 0x6a8a: 0x4470f820, 0x6a8b: 0x42bd6020,\n\t0x6a8c: 0x42bd6620, 0x6a8d: 0x42bd6c20, 0x6a8e: 0x42bd9420, 0x6a8f: 0x49472420,\n\t0x6a90: 0x42bdfc20, 0x6a91: 0x48466220, 0x6a92: 0x48466220, 0x6a93: 0x43040220,\n\t0x6a94: 0x42be4420, 0x6a95: 0x42be4420, 0x6a96: 0x44718e20, 0x6a97: 0x48657020,\n\t0x6a98: 0x48c3b420, 0x6a99: 0x42bec420, 0x6a9a: 0x42bed620, 0x6a9b: 0x4471c620,\n\t0x6a9c: 0x42bf3420, 0x6a9d: 0x42bf9a20, 0x6a9e: 0x42bfae20, 0x6a9f: 0x42bff220,\n\t0x6aa0: 0x42c10220, 0x6aa1: 0x44727420, 0x6aa2: 0x44723820, 0x6aa3: 0x42c12820,\n\t0x6aa4: 0x484da820, 0x6aa5: 0x42c18e20, 0x6aa6: 0x42c29020, 0x6aa7: 0x42c29820,\n\t0x6aa8: 0x42c29c20, 0x6aa9: 0x42c29820, 0x6aaa: 0x42c2f420, 0x6aab: 0x42c31c20,\n\t0x6aac: 0x42c36420, 0x6aad: 0x42c34820, 0x6aae: 0x42c35e20, 0x6aaf: 0x42c3bc20,\n\t0x6ab0: 0x42c3e420, 0x6ab1: 0x42c3ec20, 0x6ab2: 0x42c42020, 0x6ab3: 0x42c43620,\n\t0x6ab4: 0x42c4ba20, 0x6ab5: 0x42c56220, 0x6ab6: 0x42c5a820, 0x6ab7: 0x42c6a020,\n\t0x6ab8: 0x48561820, 0x6ab9: 0x42c67a20, 0x6aba: 0x42c5f820, 0x6abb: 0x42c6d020,\n\t0x6abc: 0x42c70620, 0x6abd: 0x42c7c820, 0x6abe: 0x4857e220, 0x6abf: 0x42c84420,\n\t// Block 0x1ab, offset 0x6ac0\n\t0x6ac0: 0x42c78a20, 0x6ac1: 0x42c75220, 0x6ac2: 0x44745c20, 0x6ac3: 0x42c8d220,\n\t0x6ac4: 0x42c8fc20, 0x6ac5: 0x42c93a20, 0x6ac6: 0x42c8ee20, 0x6ac7: 0x4474d820,\n\t0x6ac8: 0x42ca9e20, 0x6ac9: 0x42cad820, 0x6aca: 0x48601420, 0x6acb: 0x42cbc620,\n\t0x6acc: 0x42cdf020, 0x6acd: 0x42cc9220, 0x6ace: 0x44763220, 0x6acf: 0x42cd2220,\n\t0x6ad0: 0x44761020, 0x6ad1: 0x4475c820, 0x6ad2: 0x42a32420, 0x6ad3: 0x42a32a20,\n\t0x6ad4: 0x42ce0020, 0x6ad5: 0x42cd3820, 0x6ad6: 0x43015a20, 0x6ad7: 0x4487b220,\n\t0x6ad8: 0x42ce2e20, 0x6ad9: 0x42ce3620, 0x6ada: 0x42ce4220, 0x6adb: 0x42cebc20,\n\t0x6adc: 0x42cea620, 0x6add: 0x48678620, 0x6ade: 0x44769220, 0x6adf: 0x42cff420,\n\t0x6ae0: 0x42cf0a20, 0x6ae1: 0x42d0a420, 0x6ae2: 0x42d10a20, 0x6ae3: 0x4868da20,\n\t0x6ae4: 0x42d11c20, 0x6ae5: 0x42d03e20, 0x6ae6: 0x42d22820, 0x6ae7: 0x44773a20,\n\t0x6ae8: 0x42d28420, 0x6ae9: 0x42d34620, 0x6aea: 0x42d3d420, 0x6aeb: 0x42d55020,\n\t0x6aec: 0x486d4620, 0x6aed: 0x42d5b620, 0x6aee: 0x44783020, 0x6aef: 0x42d64220,\n\t0x6af0: 0x48714e20, 0x6af1: 0x42d6a820, 0x6af2: 0x44789c20, 0x6af3: 0x42d6e420,\n\t0x6af4: 0x42d73e20, 0x6af5: 0x42d77420, 0x6af6: 0x42d77620, 0x6af7: 0x48751a20,\n\t0x6af8: 0x483a1620, 0x6af9: 0x4875f420, 0x6afa: 0x42d89c20, 0x6afb: 0x48797820,\n\t0x6afc: 0x42d97e20, 0x6afd: 0x42d99a20, 0x6afe: 0x42d8ce20, 0x6aff: 0x42da2c20,\n\t// Block 0x1ac, offset 0x6b00\n\t0x6b00: 0x42da7c20, 0x6b01: 0x42daee20, 0x6b02: 0x42da8220, 0x6b03: 0x42dad220,\n\t0x6b04: 0x42daf020, 0x6b05: 0x42db0a20, 0x6b06: 0x487a3c20, 0x6b07: 0x42da6820,\n\t0x6b08: 0x42dc5e20, 0x6b09: 0x42dcdc20, 0x6b0a: 0x447a6620, 0x6b0b: 0x42dd9620,\n\t0x6b0c: 0x42dd8e20, 0x6b0d: 0x487da220, 0x6b0e: 0x42dbf220, 0x6b0f: 0x42dedc20,\n\t0x6b10: 0x487ebc20, 0x6b11: 0x487f1c20, 0x6b12: 0x42df8c20, 0x6b13: 0x42e07220,\n\t0x6b14: 0x42e03c20, 0x6b15: 0x42e03620, 0x6b16: 0x447b2c20, 0x6b17: 0x42e09420,\n\t0x6b18: 0x42e0fa20, 0x6b19: 0x42e0ee20, 0x6b1a: 0x42e15a20, 0x6b1b: 0x480a4a20,\n\t0x6b1c: 0x42e28a20, 0x6b1d: 0x4884c620, 0x6b1e: 0x42e33820, 0x6b1f: 0x48875620,\n\t0x6b20: 0x42e45020, 0x6b21: 0x42e46a20, 0x6b22: 0x42e4a020, 0x6b23: 0x488c1020,\n\t0x6b24: 0x42e50020, 0x6b25: 0x42e52a20, 0x6b26: 0x488e6a20, 0x6b27: 0x48902820,\n\t0x6b28: 0x42e6f420, 0x6b29: 0x42e71620, 0x6b2a: 0x447d5820, 0x6b2b: 0x42e74a20,\n\t0x6b2c: 0x447d7020, 0x6b2d: 0x447d7020, 0x6b2e: 0x42e88e20, 0x6b2f: 0x42e8b820,\n\t0x6b30: 0x42e8e220, 0x6b31: 0x42e90a20, 0x6b32: 0x42e99420, 0x6b33: 0x447e3620,\n\t0x6b34: 0x42ea4820, 0x6b35: 0x48986c20, 0x6b36: 0x42ea7c20, 0x6b37: 0x48992420,\n\t0x6b38: 0x42eae020, 0x6b39: 0x48433e20, 0x6b3a: 0x42ec2020, 0x6b3b: 0x489f4220,\n\t0x6b3c: 0x489f7020, 0x6b3d: 0x48a08820, 0x6b3e: 0x447ff820, 0x6b3f: 0x44801020,\n\t// Block 0x1ad, offset 0x6b40\n\t0x6b40: 0x42ede820, 0x6b41: 0x48a1e620, 0x6b42: 0x48a1e420, 0x6b43: 0x48a23220,\n\t0x6b44: 0x48a26620, 0x6b45: 0x42ee3c20, 0x6b46: 0x42ee3e20, 0x6b47: 0x42ee3e20,\n\t0x6b48: 0x42ee9420, 0x6b49: 0x44807220, 0x6b4a: 0x42ef1620, 0x6b4b: 0x44808c20,\n\t0x6b4c: 0x44812c20, 0x6b4d: 0x48a83a20, 0x6b4e: 0x42f09c20, 0x6b4f: 0x42f11820,\n\t0x6b50: 0x42f19820, 0x6b51: 0x4481c620, 0x6b52: 0x48ac4c20, 0x6b53: 0x42f2ac20,\n\t0x6b54: 0x48ad3420, 0x6b55: 0x48ad8a20, 0x6b56: 0x42f31e20, 0x6b57: 0x42f3d620,\n\t0x6b58: 0x44825e20, 0x6b59: 0x42f48020, 0x6b5a: 0x42f49420, 0x6b5b: 0x42f49e20,\n\t0x6b5c: 0x48b2f820, 0x6b5d: 0x48b54e20, 0x6b5e: 0x48b54e20, 0x6b5f: 0x42f5dc20,\n\t0x6b60: 0x44840420, 0x6b61: 0x48b75620, 0x6b62: 0x42f78c20, 0x6b63: 0x42f79220,\n\t0x6b64: 0x44844e20, 0x6b65: 0x48b90020, 0x6b66: 0x42f9a420, 0x6b67: 0x44854020,\n\t0x6b68: 0x42f9d020, 0x6b69: 0x42f9c620, 0x6b6a: 0x42fa0020, 0x6b6b: 0x48bf0c20,\n\t0x6b6c: 0x42fac620, 0x6b6d: 0x44860220, 0x6b6e: 0x42fb8e20, 0x6b6f: 0x42fc0420,\n\t0x6b70: 0x42fc8a20, 0x6b71: 0x44866820, 0x6b72: 0x48c45020, 0x6b73: 0x48c48e20,\n\t0x6b74: 0x4486b220, 0x6b75: 0x48c5b220, 0x6b76: 0x42fef420, 0x6b77: 0x48c67c20,\n\t0x6b78: 0x42ff2a20, 0x6b79: 0x42fff420, 0x6b7a: 0x43000a20, 0x6b7b: 0x48c9b420,\n\t0x6b7c: 0x48ca4620, 0x6b7d: 0x4300c020, 0x6b7e: 0x48cb5020, 0x6b7f: 0x4300e020,\n\t// Block 0x1ae, offset 0x6b80\n\t0x6b80: 0x4866be20, 0x6b81: 0x4487aa20, 0x6b82: 0x43016420, 0x6b83: 0x43020620,\n\t0x6b84: 0x44881620, 0x6b85: 0x43027c20, 0x6b86: 0x42b56a20, 0x6b87: 0x48cf4e20,\n\t0x6b88: 0x48cf6a20, 0x6b89: 0x48672620, 0x6b8a: 0x48673820, 0x6b8b: 0x43040220,\n\t0x6b8c: 0x43040820, 0x6b8d: 0x431f3c20, 0x6b8e: 0x4488d620, 0x6b8f: 0x43052220,\n\t0x6b90: 0x43051620, 0x6b91: 0x43053a20, 0x6b92: 0x42a56620, 0x6b93: 0x43056220,\n\t0x6b94: 0x43056620, 0x6b95: 0x43057a20, 0x6b96: 0x4305cc20, 0x6b97: 0x48d67820,\n\t0x6b98: 0x4305ca20, 0x6b99: 0x43063a20, 0x6b9a: 0x4306c620, 0x6b9b: 0x43075a20,\n\t0x6b9c: 0x43064620, 0x6b9d: 0x43077a20, 0x6b9e: 0x4307ce20, 0x6b9f: 0x4308ae20,\n\t0x6ba0: 0x4306a620, 0x6ba1: 0x43079420, 0x6ba2: 0x43079820, 0x6ba3: 0x4307b820,\n\t0x6ba4: 0x48d86c20, 0x6ba5: 0x48dad620, 0x6ba6: 0x48d9aa20, 0x6ba7: 0x448a5620,\n\t0x6ba8: 0x4309e220, 0x6ba9: 0x4309e620, 0x6baa: 0x430a2c20, 0x6bab: 0x48e79420,\n\t0x6bac: 0x430ac820, 0x6bad: 0x48de5820, 0x6bae: 0x448aba20, 0x6baf: 0x448ac220,\n\t0x6bb0: 0x48df6220, 0x6bb1: 0x48e1a420, 0x6bb2: 0x448ad620, 0x6bb3: 0x430ca020,\n\t0x6bb4: 0x430cb820, 0x6bb5: 0x430cce20, 0x6bb6: 0x430cd220, 0x6bb7: 0x430d5220,\n\t0x6bb8: 0x430d1020, 0x6bb9: 0x430e1c20, 0x6bba: 0x430dc420, 0x6bbb: 0x430ef220,\n\t0x6bbc: 0x430e5020, 0x6bbd: 0x430ed620, 0x6bbe: 0x430f0c20, 0x6bbf: 0x448bae20,\n\t// Block 0x1af, offset 0x6bc0\n\t0x6bc0: 0x430fc220, 0x6bc1: 0x43100220, 0x6bc2: 0x448bf220, 0x6bc3: 0x4310c020,\n\t0x6bc4: 0x4310c620, 0x6bc5: 0x48ecce20, 0x6bc6: 0x4311ae20, 0x6bc7: 0x4311bc20,\n\t0x6bc8: 0x448c6a20, 0x6bc9: 0x4311f420, 0x6bca: 0x44697620, 0x6bcb: 0x48f15c20,\n\t0x6bcc: 0x48f2cc20, 0x6bcd: 0x448d7c20, 0x6bce: 0x448d8e20, 0x6bcf: 0x43154020,\n\t0x6bd0: 0x4315da20, 0x6bd1: 0x43171420, 0x6bd2: 0x4318aa20, 0x6bd3: 0x48f95020,\n\t0x6bd4: 0x43195620, 0x6bd5: 0x43198220, 0x6bd6: 0x431a3620, 0x6bd7: 0x431aee20,\n\t0x6bd8: 0x48fe5e20, 0x6bd9: 0x48100820, 0x6bda: 0x431b9620, 0x6bdb: 0x431b7820,\n\t0x6bdc: 0x431be020, 0x6bdd: 0x4811bc20, 0x6bde: 0x431da820, 0x6bdf: 0x431e7020,\n\t0x6be0: 0x490ba420, 0x6be1: 0x490bda20, 0x6be2: 0x43212820, 0x6be3: 0x4321e220,\n\t0x6be4: 0x43222220, 0x6be5: 0x490e5c20, 0x6be6: 0x43223620, 0x6be7: 0x43247020,\n\t0x6be8: 0x4325ae20, 0x6be9: 0x4325b020, 0x6bea: 0x4324f820, 0x6beb: 0x4327f220,\n\t0x6bec: 0x43282a20, 0x6bed: 0x4917f420, 0x6bee: 0x432b1620, 0x6bef: 0x44932a20,\n\t0x6bf0: 0x432b6e20, 0x6bf1: 0x491aee20, 0x6bf2: 0x4493cc20, 0x6bf3: 0x432d8620,\n\t0x6bf4: 0x42bb6420, 0x6bf5: 0x432e4620, 0x6bf6: 0x49228a20, 0x6bf7: 0x49243420,\n\t0x6bf8: 0x4494dc20, 0x6bf9: 0x4494ec20, 0x6bfa: 0x432fc020, 0x6bfb: 0x49281420,\n\t0x6bfc: 0x44956420, 0x6bfd: 0x49292c20, 0x6bfe: 0x43301620, 0x6bff: 0x43301620,\n\t// Block 0x1b0, offset 0x6c00\n\t0x6c00: 0x43305220, 0x6c01: 0x492b6c20, 0x6c02: 0x4331c420, 0x6c03: 0x44966620,\n\t0x6c04: 0x43325220, 0x6c05: 0x43334e20, 0x6c06: 0x43338420, 0x6c07: 0x4333fc20,\n\t0x6c08: 0x44979c20, 0x6c09: 0x49366020, 0x6c0a: 0x43362420, 0x6c0b: 0x43388020,\n\t0x6c0c: 0x4339fa20, 0x6c0d: 0x44999c20, 0x6c0e: 0x4499da20, 0x6c0f: 0x433ace20,\n\t0x6c10: 0x49419c20, 0x6c11: 0x4499f020, 0x6c12: 0x49420a20, 0x6c13: 0x49441c20,\n\t0x6c14: 0x49452220, 0x6c15: 0x433d7620, 0x6c16: 0x449aac20, 0x6c17: 0x433df220,\n\t0x6c18: 0x433dfc20, 0x6c19: 0x433e0a20, 0x6c1a: 0x433e1e20, 0x6c1b: 0x433e2c20,\n\t0x6c1c: 0x433e7620, 0x6c1d: 0x494c0020,\n\t// Block 0x1b1, offset 0x6c40\n\t0x6c41: 0xa0000000,\n\t0x6c60: 0xa0000000, 0x6c61: 0xa0000000, 0x6c62: 0xa0000000, 0x6c63: 0xa0000000,\n\t0x6c64: 0xa0000000, 0x6c65: 0xa0000000, 0x6c66: 0xa0000000, 0x6c67: 0xa0000000,\n\t0x6c68: 0xa0000000, 0x6c69: 0xa0000000, 0x6c6a: 0xa0000000, 0x6c6b: 0xa0000000,\n\t0x6c6c: 0xa0000000, 0x6c6d: 0xa0000000, 0x6c6e: 0xa0000000, 0x6c6f: 0xa0000000,\n\t0x6c70: 0xa0000000, 0x6c71: 0xa0000000, 0x6c72: 0xa0000000, 0x6c73: 0xa0000000,\n\t0x6c74: 0xa0000000, 0x6c75: 0xa0000000, 0x6c76: 0xa0000000, 0x6c77: 0xa0000000,\n\t0x6c78: 0xa0000000, 0x6c79: 0xa0000000, 0x6c7a: 0xa0000000, 0x6c7b: 0xa0000000,\n\t0x6c7c: 0xa0000000, 0x6c7d: 0xa0000000, 0x6c7e: 0xa0000000, 0x6c7f: 0xa0000000,\n\t// Block 0x1b2, offset 0x6c80\n\t0x6c80: 0xa0000000, 0x6c81: 0xa0000000, 0x6c82: 0xa0000000, 0x6c83: 0xa0000000,\n\t0x6c84: 0xa0000000, 0x6c85: 0xa0000000, 0x6c86: 0xa0000000, 0x6c87: 0xa0000000,\n\t0x6c88: 0xa0000000, 0x6c89: 0xa0000000, 0x6c8a: 0xa0000000, 0x6c8b: 0xa0000000,\n\t0x6c8c: 0xa0000000, 0x6c8d: 0xa0000000, 0x6c8e: 0xa0000000, 0x6c8f: 0xa0000000,\n\t0x6c90: 0xa0000000, 0x6c91: 0xa0000000, 0x6c92: 0xa0000000, 0x6c93: 0xa0000000,\n\t0x6c94: 0xa0000000, 0x6c95: 0xa0000000, 0x6c96: 0xa0000000, 0x6c97: 0xa0000000,\n\t0x6c98: 0xa0000000, 0x6c99: 0xa0000000, 0x6c9a: 0xa0000000, 0x6c9b: 0xa0000000,\n\t0x6c9c: 0xa0000000, 0x6c9d: 0xa0000000, 0x6c9e: 0xa0000000, 0x6c9f: 0xa0000000,\n\t0x6ca0: 0xa0000000, 0x6ca1: 0xa0000000, 0x6ca2: 0xa0000000, 0x6ca3: 0xa0000000,\n\t0x6ca4: 0xa0000000, 0x6ca5: 0xa0000000, 0x6ca6: 0xa0000000, 0x6ca7: 0xa0000000,\n\t0x6ca8: 0xa0000000, 0x6ca9: 0xa0000000, 0x6caa: 0xa0000000, 0x6cab: 0xa0000000,\n\t0x6cac: 0xa0000000, 0x6cad: 0xa0000000, 0x6cae: 0xa0000000, 0x6caf: 0xa0000000,\n\t0x6cb0: 0xa0000000, 0x6cb1: 0xa0000000, 0x6cb2: 0xa0000000, 0x6cb3: 0xa0000000,\n\t0x6cb4: 0xa0000000, 0x6cb5: 0xa0000000, 0x6cb6: 0xa0000000, 0x6cb7: 0xa0000000,\n\t0x6cb8: 0xa0000000, 0x6cb9: 0xa0000000, 0x6cba: 0xa0000000, 0x6cbb: 0xa0000000,\n\t0x6cbc: 0xa0000000, 0x6cbd: 0xa0000000, 0x6cbe: 0xa0000000, 0x6cbf: 0xa0000000,\n\t// Block 0x1b3, offset 0x6cc0\n\t0x6cc0: 0xa0000000, 0x6cc1: 0xa0000000, 0x6cc2: 0xa0000000, 0x6cc3: 0xa0000000,\n\t0x6cc4: 0xa0000000, 0x6cc5: 0xa0000000, 0x6cc6: 0xa0000000, 0x6cc7: 0xa0000000,\n\t0x6cc8: 0xa0000000, 0x6cc9: 0xa0000000, 0x6cca: 0xa0000000, 0x6ccb: 0xa0000000,\n\t0x6ccc: 0xa0000000, 0x6ccd: 0xa0000000, 0x6cce: 0xa0000000, 0x6ccf: 0xa0000000,\n\t0x6cd0: 0xa0000000, 0x6cd1: 0xa0000000, 0x6cd2: 0xa0000000, 0x6cd3: 0xa0000000,\n\t0x6cd4: 0xa0000000, 0x6cd5: 0xa0000000, 0x6cd6: 0xa0000000, 0x6cd7: 0xa0000000,\n\t0x6cd8: 0xa0000000, 0x6cd9: 0xa0000000, 0x6cda: 0xa0000000, 0x6cdb: 0xa0000000,\n\t0x6cdc: 0xa0000000, 0x6cdd: 0xa0000000, 0x6cde: 0xa0000000, 0x6cdf: 0xa0000000,\n\t0x6ce0: 0xa0000000, 0x6ce1: 0xa0000000, 0x6ce2: 0xa0000000, 0x6ce3: 0xa0000000,\n\t0x6ce4: 0xa0000000, 0x6ce5: 0xa0000000, 0x6ce6: 0xa0000000, 0x6ce7: 0xa0000000,\n\t0x6ce8: 0xa0000000, 0x6ce9: 0xa0000000, 0x6cea: 0xa0000000, 0x6ceb: 0xa0000000,\n\t0x6cec: 0xa0000000, 0x6ced: 0xa0000000, 0x6cee: 0xa0000000, 0x6cef: 0xa0000000,\n\t// Block 0x1b4, offset 0x6d00\n\t0x6d00: 0xa0000000, 0x6d01: 0xa0000000, 0x6d02: 0xa0000000, 0x6d03: 0xa0000000,\n\t0x6d04: 0xa0000000, 0x6d05: 0xa0000000, 0x6d06: 0xa0000000, 0x6d07: 0xa0000000,\n\t0x6d08: 0xa0000000, 0x6d09: 0x40020020, 0x6d0a: 0x40020220, 0x6d0b: 0x40020420,\n\t0x6d0c: 0x40020620, 0x6d0d: 0x40020820, 0x6d0e: 0xa0000000, 0x6d0f: 0xa0000000,\n\t0x6d10: 0xa0000000, 0x6d11: 0xa0000000, 0x6d12: 0xa0000000, 0x6d13: 0xa0000000,\n\t0x6d14: 0xa0000000, 0x6d15: 0xa0000000, 0x6d16: 0xa0000000, 0x6d17: 0xa0000000,\n\t0x6d18: 0xa0000000, 0x6d19: 0xa0000000, 0x6d1a: 0xa0000000, 0x6d1b: 0xa0000000,\n\t0x6d1c: 0xa0000000, 0x6d1d: 0xa0000000, 0x6d1e: 0xa0000000, 0x6d1f: 0xa0000000,\n\t0x6d20: 0x40021220, 0x6d21: 0x4002ba20, 0x6d22: 0x4003e020, 0x6d23: 0x4004ea20,\n\t0x6d24: 0x4027de20, 0x6d25: 0x4004ec20, 0x6d26: 0x4004e620, 0x6d27: 0x4003d220,\n\t0x6d28: 0x4003f420, 0x6d29: 0x4003f620, 0x6d2a: 0x4004d820, 0x6d2b: 0x40093820,\n\t0x6d2c: 0x40024020, 0x6d2d: 0x40021a20, 0x6d2e: 0x4002e420, 0x6d2f: 0x4004e220,\n\t0x6d30: 0x4029cc20, 0x6d31: 0x4029ce20, 0x6d32: 0x4029d020, 0x6d33: 0x4029d220,\n\t0x6d34: 0x4029d420, 0x6d35: 0x4029d620, 0x6d36: 0x4029d820, 0x6d37: 0x4029da20,\n\t0x6d38: 0x4029dc20, 0x6d39: 0x4029de20, 0x6d3a: 0x40026c20, 0x6d3b: 0x40026220,\n\t0x6d3c: 0x40094020, 0x6d3d: 0x40094220, 0x6d3e: 0x40094420, 0x6d3f: 0x4002c420,\n\t// Block 0x1b5, offset 0x6d40\n\t0x6d40: 0x4004d620, 0x6d41: 0x002bde88, 0x6d42: 0x002c0a88, 0x6d43: 0x002c3a88,\n\t0x6d44: 0x002c6288, 0x6d45: 0x002c1083, 0x6d46: 0x002d0888, 0x6d47: 0x002d2288,\n\t0x6d48: 0x0030e483, 0x6d49: 0x002c4083, 0x6d4a: 0x002dcc88, 0x6d4b: 0x002c3c83,\n\t0x6d4c: 0xc0030002, 0x6d4d: 0x002e8288, 0x6d4e: 0x002e9e88, 0x6d4f: 0x002d2483,\n\t0x6d50: 0x002f2c88, 0x6d51: 0x002c6483, 0x6d52: 0x002c6683, 0x6d53: 0x002c0e83,\n\t0x6d54: 0x002c0c83, 0x6d55: 0x00306c88, 0x6d56: 0x0030be88, 0x6d57: 0x0030e288,\n\t0x6d58: 0x002c3e83, 0x6d59: 0x00310088, 0x6d5a: 0x00312a88, 0x6d5b: 0x4003f820,\n\t0x6d5c: 0x4004e420, 0x6d5d: 0x4003fa20, 0x6d5e: 0x40062420, 0x6d5f: 0x40021620,\n\t0x6d60: 0x40061e20, 0x6d61: 0x402bde20, 0x6d62: 0x402c0a20, 0x6d63: 0x402c3a20,\n\t0x6d64: 0x402c6220, 0x6d65: 0x402c1020, 0x6d66: 0x402d0820, 0x6d67: 0x402d2220,\n\t0x6d68: 0x4030e420, 0x6d69: 0x402c4020, 0x6d6a: 0x402dcc20, 0x6d6b: 0x402c3c20,\n\t0x6d6c: 0xc0000002, 0x6d6d: 0x402e8220, 0x6d6e: 0x402e9e20, 0x6d6f: 0x402d2420,\n\t0x6d70: 0x402f2c20, 0x6d71: 0x402c6420, 0x6d72: 0x402c6620, 0x6d73: 0x402c0e20,\n\t0x6d74: 0x402c0c20, 0x6d75: 0x40306c20, 0x6d76: 0x4030be20, 0x6d77: 0x4030e220,\n\t0x6d78: 0x402c3e20, 0x6d79: 0x40310020, 0x6d7a: 0x40312a20, 0x6d7b: 0x4003fc20,\n\t0x6d7c: 0x40094820, 0x6d7d: 0x4003fe20, 0x6d7e: 0x40094c20, 0x6d7f: 0xa0000000,\n\t// Block 0x1b6, offset 0x6d80\n\t0x6d80: 0xe00008f5, 0x6d81: 0xe00008ef, 0x6d82: 0xe0000921, 0x6d83: 0xe0000969,\n\t0x6d84: 0xe000095b, 0x6d85: 0xe000094d, 0x6d86: 0xe00009dd, 0x6d87: 0xe0000a53,\n\t0x6d88: 0xe000256e, 0x6d89: 0xe0002568, 0x6d8a: 0xe000257a, 0x6d8b: 0xe00025a6,\n\t0x6d8c: 0xe000263e, 0x6d8d: 0xe0002638, 0x6d8e: 0xe000264a, 0x6d8f: 0xe0002656,\n\t0x6d90: 0xe0000ab3, 0x6d91: 0xe0000d63, 0x6d92: 0xe00026db, 0x6d93: 0xe00026d5,\n\t0x6d94: 0xe00026e7, 0x6d95: 0xe0002727, 0x6d96: 0xe0002713, 0x6d97: 0x40093e20,\n\t0x6d98: 0xe0000e12, 0x6d99: 0xe0000fe1, 0x6d9a: 0xe0000fdb, 0x6d9b: 0xe0000fed,\n\t0x6d9c: 0xe0000fff, 0x6d9d: 0xe0001102, 0x6d9e: 0x00318888, 0x6d9f: 0xe0000f7b,\n\t0x6da0: 0xe00008f2, 0x6da1: 0xe00008ec, 0x6da2: 0xe000091e, 0x6da3: 0xe0000966,\n\t0x6da4: 0xe0000958, 0x6da5: 0xe000094a, 0x6da6: 0xe00009d5, 0x6da7: 0xe0000a4d,\n\t0x6da8: 0xe000256b, 0x6da9: 0xe0002565, 0x6daa: 0xe0002577, 0x6dab: 0xe00025a3,\n\t0x6dac: 0xe000263b, 0x6dad: 0xe0002635, 0x6dae: 0xe0002647, 0x6daf: 0xe0002653,\n\t0x6db0: 0xe0000aad, 0x6db1: 0xe0000d60, 0x6db2: 0xe00026d8, 0x6db3: 0xe00026d2,\n\t0x6db4: 0xe00026e4, 0x6db5: 0xe0002724, 0x6db6: 0xe0002710, 0x6db7: 0x40093c20,\n\t0x6db8: 0xe0000e0f, 0x6db9: 0xe0000fde, 0x6dba: 0xe0000fd8, 0x6dbb: 0xe0000fea,\n\t0x6dbc: 0xe0000ffc, 0x6dbd: 0xe00010ff, 0x6dbe: 0x40318820, 0x6dbf: 0xe0001114,\n\t// Block 0x1b7, offset 0x6dc0\n\t0x6dc0: 0xe0000983, 0x6dc1: 0xe0000980, 0x6dc2: 0xe00008fb, 0x6dc3: 0xe00008f8,\n\t0x6dc4: 0xe000097d, 0x6dc5: 0xe000097a, 0x6dc6: 0xe0000a38, 0x6dc7: 0xe0000a35,\n\t0x6dc8: 0xe0000a3e, 0x6dc9: 0xe0000a3b, 0x6dca: 0xe0000a4a, 0x6dcb: 0xe0000a47,\n\t0x6dcc: 0xe0000a44, 0x6dcd: 0xe0000a41, 0x6dce: 0xe0000a86, 0x6dcf: 0xe0000a83,\n\t0x6dd0: 0xe0000aaa, 0x6dd1: 0xe0000aa7, 0x6dd2: 0xe00025cc, 0x6dd3: 0xe00025c9,\n\t0x6dd4: 0xe0002574, 0x6dd5: 0xe0002571, 0x6dd6: 0xe00025b2, 0x6dd7: 0xe00025af,\n\t0x6dd8: 0xe00025c6, 0x6dd9: 0xe00025c3, 0x6dda: 0xe00025a0, 0x6ddb: 0xe000259d,\n\t0x6ddc: 0xe0000bb8, 0x6ddd: 0xe0000bb5, 0x6dde: 0xe0000bb2, 0x6ddf: 0xe0000baf,\n\t0x6de0: 0xe0000bc4, 0x6de1: 0xe0000bc1, 0x6de2: 0xe0000bca, 0x6de3: 0xe0000bc7,\n\t0x6de4: 0xe0002856, 0x6de5: 0xe0002853, 0x6de6: 0xe0000c1b, 0x6de7: 0xe0000c18,\n\t0x6de8: 0xe0002664, 0x6de9: 0xe0002661, 0x6dea: 0xe0002673, 0x6deb: 0xe0002670,\n\t0x6dec: 0xe0002644, 0x6ded: 0xe0002641, 0x6dee: 0xe000266d, 0x6def: 0xe000266a,\n\t0x6df0: 0xe0002667, 0x6df1: 0x402da220, 0x6df2: 0xe00027e2, 0x6df3: 0xe00027df,\n\t0x6df4: 0xe0000c8a, 0x6df5: 0xe0000c87, 0x6df6: 0xe000261a, 0x6df7: 0xe0002617,\n\t0x6df8: 0x402f7220, 0x6df9: 0xe0000ccc, 0x6dfa: 0xe0000cc9, 0x6dfb: 0xe0000cd8,\n\t0x6dfc: 0xe0000cd5, 0x6dfd: 0xe0000cd2, 0x6dfe: 0xe0000ccf, 0x6dff: 0xe0000d04,\n\t// Block 0x1b8, offset 0x6e00\n\t0x6e00: 0xe0000cfe, 0x6e01: 0xe0000cf8, 0x6e02: 0xe0000cf5, 0x6e03: 0xe0000d51,\n\t0x6e04: 0xe0000d4e, 0x6e05: 0xe0000d6f, 0x6e06: 0xe0000d6c, 0x6e07: 0xe0000d5d,\n\t0x6e08: 0xe0000d5a, 0x6e09: 0xf0000404, 0x6e0a: 0x002eda88, 0x6e0b: 0x402eda20,\n\t0x6e0c: 0xe0002761, 0x6e0d: 0xe000275e, 0x6e0e: 0xe00026e1, 0x6e0f: 0xe00026de,\n\t0x6e10: 0xe0002721, 0x6e11: 0xe000271e, 0x6e12: 0xe0000e93, 0x6e13: 0xe0000e8f,\n\t0x6e14: 0xe0002697, 0x6e15: 0xe0002694, 0x6e16: 0xe00026a9, 0x6e17: 0xe00026a6,\n\t0x6e18: 0xe000269d, 0x6e19: 0xe000269a, 0x6e1a: 0xe0002526, 0x6e1b: 0xe0002523,\n\t0x6e1c: 0xe0002534, 0x6e1d: 0xe0002531, 0x6e1e: 0xe000254e, 0x6e1f: 0xe000254b,\n\t0x6e20: 0xe000253a, 0x6e21: 0xe0002537, 0x6e22: 0xe0002508, 0x6e23: 0xe0002505,\n\t0x6e24: 0xe00024f9, 0x6e25: 0xe00024f6, 0x6e26: 0x00303688, 0x6e27: 0x40303620,\n\t0x6e28: 0xe000102b, 0x6e29: 0xe0001028, 0x6e2a: 0xe000103f, 0x6e2b: 0xe000103c,\n\t0x6e2c: 0xe0000fe7, 0x6e2d: 0xe0000fe4, 0x6e2e: 0xe0000ff9, 0x6e2f: 0xe0000ff6,\n\t0x6e30: 0xe0001025, 0x6e31: 0xe0001022, 0x6e32: 0xe0001039, 0x6e33: 0xe0001036,\n\t0x6e34: 0xe00010d8, 0x6e35: 0xe00010d5, 0x6e36: 0xe000110e, 0x6e37: 0xe000110b,\n\t0x6e38: 0xe0001117, 0x6e39: 0xe000113b, 0x6e3a: 0xe0001138, 0x6e3b: 0xe000114d,\n\t0x6e3c: 0xe000114a, 0x6e3d: 0xe0001147, 0x6e3e: 0xe0001144, 0x6e3f: 0xe0000f64,\n\t// Block 0x1b9, offset 0x6e40\n\t0x6e40: 0x402c1a20, 0x6e41: 0x002c2a88, 0x6e42: 0x002c3288, 0x6e43: 0x402c3220,\n\t0x6e44: 0x0031c488, 0x6e45: 0x4031c420, 0x6e46: 0x002efa88, 0x6e47: 0x002c4e88,\n\t0x6e48: 0x402c4e20, 0x6e49: 0x002c7288, 0x6e4a: 0x002c7a88, 0x6e4b: 0x002c8488,\n\t0x6e4c: 0x402c8420, 0x6e4d: 0xe000115c, 0x6e4e: 0x002cae88, 0x6e4f: 0x002cb888,\n\t0x6e50: 0x002cc288, 0x6e51: 0x002d1688, 0x6e52: 0x402d1620, 0x6e53: 0x002d4488,\n\t0x6e54: 0x002d5888, 0x6e55: 0x402d7820, 0x6e56: 0x002dc288, 0x6e57: 0x002db688,\n\t0x6e58: 0x002e0a88, 0x6e59: 0x402e0a20, 0x6e5a: 0x402e3820, 0x6e5b: 0x402e7220,\n\t0x6e5c: 0x0030a088, 0x6e5d: 0x002eb488, 0x6e5e: 0x402ebc20, 0x6e5f: 0x002f1088,\n\t0x6e60: 0xe0002789, 0x6e61: 0xe0002786, 0x6e62: 0x002d6088, 0x6e63: 0x402d6020,\n\t0x6e64: 0x002f3e88, 0x6e65: 0x402f3e20, 0x6e66: 0x002f8288, 0x6e67: 0x0031b488,\n\t0x6e68: 0x4031b420, 0x6e69: 0x00300888, 0x6e6a: 0x40301220, 0x6e6b: 0x40304220,\n\t0x6e6c: 0x00304a88, 0x6e6d: 0x40304a20, 0x6e6e: 0x00305288, 0x6e6f: 0xe000105f,\n\t0x6e70: 0xe000105c, 0x6e71: 0x0030b488, 0x6e72: 0x0030cc88, 0x6e73: 0x00311888,\n\t0x6e74: 0x40311820, 0x6e75: 0x00313488, 0x6e76: 0x40313420, 0x6e77: 0x00316488,\n\t0x6e78: 0x00316e88, 0x6e79: 0x40316e20, 0x6e7a: 0x40317820, 0x6e7b: 0x4031a620,\n\t0x6e7c: 0x0031bc88, 0x6e7d: 0x4031bc20, 0x6e7e: 0xe0000fc9, 0x6e7f: 0x40319420,\n\t// Block 0x1ba, offset 0x6e80\n\t0x6e80: 0x40321220, 0x6e81: 0x40321a20, 0x6e82: 0x40322220, 0x6e83: 0x40322a20,\n\t0x6e84: 0xe0000ad5, 0x6e85: 0xe0000ad1, 0x6e86: 0xe0000acd, 0x6e87: 0xf0000a0a,\n\t0x6e88: 0xf000040a, 0x6e89: 0xf0000404, 0x6e8a: 0xf0000a0a, 0x6e8b: 0xf000040a,\n\t0x6e8c: 0xf0000404, 0x6e8d: 0xe0000947, 0x6e8e: 0xe0000944, 0x6e8f: 0xe0002650,\n\t0x6e90: 0xe000264d, 0x6e91: 0xe000270d, 0x6e92: 0xe000270a, 0x6e93: 0xe0000ff3,\n\t0x6e94: 0xe0000ff0, 0x6e95: 0xe000101e, 0x6e96: 0xe000101a, 0x6e97: 0xe0001006,\n\t0x6e98: 0xe0001002, 0x6e99: 0xe0001016, 0x6e9a: 0xe0001012, 0x6e9b: 0xe000100e,\n\t0x6e9c: 0xe000100a, 0x6e9d: 0x402cae20, 0x6e9e: 0xe0000962, 0x6e9f: 0xe000095e,\n\t0x6ea0: 0xe0000976, 0x6ea1: 0xe0000972, 0x6ea2: 0xe00009f4, 0x6ea3: 0xe00009ef,\n\t0x6ea4: 0x002d3a88, 0x6ea5: 0x402d3a20, 0x6ea6: 0xe0000bbe, 0x6ea7: 0xe0000bbb,\n\t0x6ea8: 0xe0002614, 0x6ea9: 0xe0002611, 0x6eaa: 0xe0002753, 0x6eab: 0xe0002750,\n\t0x6eac: 0xe000275a, 0x6ead: 0xe0002756, 0x6eae: 0xe0001162, 0x6eaf: 0xe000115f,\n\t0x6eb0: 0xe0000c8d, 0x6eb1: 0xf0000a0a, 0x6eb2: 0xf000040a, 0x6eb3: 0xf0000404,\n\t0x6eb4: 0xe0000bac, 0x6eb5: 0xe0000ba9, 0x6eb6: 0x002d7888, 0x6eb7: 0x00319488,\n\t0x6eb8: 0xe0000d57, 0x6eb9: 0xe0000d54, 0x6eba: 0xe0000954, 0x6ebb: 0xe0000950,\n\t0x6ebc: 0xe00009ea, 0x6ebd: 0xe00009e5, 0x6ebe: 0xe0000e19, 0x6ebf: 0xe0000e15,\n\t// Block 0x1bb, offset 0x6ec0\n\t0x6ec0: 0xe000098f, 0x6ec1: 0xe000098c, 0x6ec2: 0xe0000995, 0x6ec3: 0xe0000992,\n\t0x6ec4: 0xe00025e8, 0x6ec5: 0xe00025e5, 0x6ec6: 0xe00025ee, 0x6ec7: 0xe00025eb,\n\t0x6ec8: 0xe000267f, 0x6ec9: 0xe000267c, 0x6eca: 0xe0002685, 0x6ecb: 0xe0002682,\n\t0x6ecc: 0xe000277d, 0x6ecd: 0xe000277a, 0x6ece: 0xe0002783, 0x6ecf: 0xe0002780,\n\t0x6ed0: 0xe00026af, 0x6ed1: 0xe00026ac, 0x6ed2: 0xe00026b5, 0x6ed3: 0xe00026b2,\n\t0x6ed4: 0xe0001053, 0x6ed5: 0xe0001050, 0x6ed6: 0xe0001059, 0x6ed7: 0xe0001056,\n\t0x6ed8: 0xe0002562, 0x6ed9: 0xe000255f, 0x6eda: 0xe0002514, 0x6edb: 0xe0002511,\n\t0x6edc: 0x00312288, 0x6edd: 0x40312220, 0x6ede: 0xe000285c, 0x6edf: 0xe0002859,\n\t0x6ee0: 0x002ebc88, 0x6ee1: 0x402c8c20, 0x6ee2: 0x002f2288, 0x6ee3: 0x402f2220,\n\t0x6ee4: 0x00314088, 0x6ee5: 0x40314020, 0x6ee6: 0xe000096f, 0x6ee7: 0xe000096c,\n\t0x6ee8: 0xe00025b8, 0x6ee9: 0xe00025b5, 0x6eea: 0xe000271a, 0x6eeb: 0xe0002716,\n\t0x6eec: 0xe000273e, 0x6eed: 0xe000273a, 0x6eee: 0xe0002745, 0x6eef: 0xe0002742,\n\t0x6ef0: 0xe000274c, 0x6ef1: 0xe0002748, 0x6ef2: 0xe0001129, 0x6ef3: 0xe0001126,\n\t0x6ef4: 0x402e5e20, 0x6ef5: 0x402ed020, 0x6ef6: 0x40305a20, 0x6ef7: 0x402dd420,\n\t0x6ef8: 0xe0000abf, 0x6ef9: 0xe0000ec4, 0x6efa: 0x002be888, 0x6efb: 0x002c4488,\n\t0x6efc: 0x402c4420, 0x6efd: 0x002e3888, 0x6efe: 0x00303e88, 0x6eff: 0x402ffc20,\n\t// Block 0x1bc, offset 0x6f00\n\t0x6f00: 0xe00009b1, 0x6f01: 0xe00009ae, 0x6f02: 0xe0000a22, 0x6f03: 0xe0000a1f,\n\t0x6f04: 0xe0000a28, 0x6f05: 0xe0000a25, 0x6f06: 0xe0000a2e, 0x6f07: 0xe0000a2b,\n\t0x6f08: 0xe0000a5a, 0x6f09: 0xe0000a56, 0x6f0a: 0xe0000a8c, 0x6f0b: 0xe0000a89,\n\t0x6f0c: 0xe0000a98, 0x6f0d: 0xe0000a95, 0x6f0e: 0xe0000aa4, 0x6f0f: 0xe0000aa1,\n\t0x6f10: 0xe0000a92, 0x6f11: 0xe0000a8f, 0x6f12: 0xe0000a9e, 0x6f13: 0xe0000a9b,\n\t0x6f14: 0xe00025db, 0x6f15: 0xe00025d7, 0x6f16: 0xe00025d3, 0x6f17: 0xe00025cf,\n\t0x6f18: 0xe0002602, 0x6f19: 0xe00025ff, 0x6f1a: 0xe0002608, 0x6f1b: 0xe0002605,\n\t0x6f1c: 0xe00025bf, 0x6f1d: 0xe00025bb, 0x6f1e: 0xe0000b8c, 0x6f1f: 0xe0000b89,\n\t0x6f20: 0xe0000bd0, 0x6f21: 0xe0000bcd, 0x6f22: 0xe0002868, 0x6f23: 0xe0002865,\n\t0x6f24: 0xe0002874, 0x6f25: 0xe0002871, 0x6f26: 0xe0002862, 0x6f27: 0xe000285f,\n\t0x6f28: 0xe000286e, 0x6f29: 0xe000286b, 0x6f2a: 0xe000287a, 0x6f2b: 0xe0002877,\n\t0x6f2c: 0xe0002691, 0x6f2d: 0xe000268e, 0x6f2e: 0xe000265d, 0x6f2f: 0xe0002659,\n\t0x6f30: 0xe000260e, 0x6f31: 0xe000260b, 0x6f32: 0xe0002620, 0x6f33: 0xe000261d,\n\t0x6f34: 0xe0002626, 0x6f35: 0xe0002623, 0x6f36: 0xe0000cde, 0x6f37: 0xe0000cdb,\n\t0x6f38: 0xe0000ce5, 0x6f39: 0xe0000ce1, 0x6f3a: 0xe0000cf2, 0x6f3b: 0xe0000cef,\n\t0x6f3c: 0xe0000cec, 0x6f3d: 0xe0000ce9, 0x6f3e: 0xe0000d1e, 0x6f3f: 0xe0000d1b,\n\t// Block 0x1bd, offset 0x6f40\n\t0x6f40: 0xe0000d24, 0x6f41: 0xe0000d21, 0x6f42: 0xe0000d2a, 0x6f43: 0xe0000d27,\n\t0x6f44: 0xe0000d69, 0x6f45: 0xe0000d66, 0x6f46: 0xe0000d7b, 0x6f47: 0xe0000d78,\n\t0x6f48: 0xe0000d87, 0x6f49: 0xe0000d84, 0x6f4a: 0xe0000d81, 0x6f4b: 0xe0000d7e,\n\t0x6f4c: 0xe000272e, 0x6f4d: 0xe000272a, 0x6f4e: 0xe0002736, 0x6f4f: 0xe0002732,\n\t0x6f50: 0xe0002770, 0x6f51: 0xe000276c, 0x6f52: 0xe0002768, 0x6f53: 0xe0002764,\n\t0x6f54: 0xe0000ea7, 0x6f55: 0xe0000ea4, 0x6f56: 0xe0000ead, 0x6f57: 0xe0000eaa,\n\t0x6f58: 0xe00026a3, 0x6f59: 0xe00026a0, 0x6f5a: 0xe00026bb, 0x6f5b: 0xe00026b8,\n\t0x6f5c: 0xe00026c2, 0x6f5d: 0xe00026be, 0x6f5e: 0xe00026c9, 0x6f5f: 0xe00026c6,\n\t0x6f60: 0xe0002548, 0x6f61: 0xe0002545, 0x6f62: 0xe0002554, 0x6f63: 0xe0002551,\n\t0x6f64: 0xe000252d, 0x6f65: 0xe0002529, 0x6f66: 0xe0002541, 0x6f67: 0xe000253d,\n\t0x6f68: 0xe000255b, 0x6f69: 0xe0002557, 0x6f6a: 0xe0002502, 0x6f6b: 0xe00024ff,\n\t0x6f6c: 0xe000250e, 0x6f6d: 0xe000250b, 0x6f6e: 0xe0002520, 0x6f6f: 0xe000251d,\n\t0x6f70: 0xe000251a, 0x6f71: 0xe0002517, 0x6f72: 0xe0001093, 0x6f73: 0xe0001090,\n\t0x6f74: 0xe000109f, 0x6f75: 0xe000109c, 0x6f76: 0xe0001099, 0x6f77: 0xe0001096,\n\t0x6f78: 0xe0001032, 0x6f79: 0xe000102e, 0x6f7a: 0xe0001046, 0x6f7b: 0xe0001042,\n\t0x6f7c: 0xe00010a9, 0x6f7d: 0xe00010a6, 0x6f7e: 0xe00010af, 0x6f7f: 0xe00010ac,\n\t// Block 0x1be, offset 0x6f80\n\t0x6f80: 0xe00010d2, 0x6f81: 0xe00010cf, 0x6f82: 0xe00010cc, 0x6f83: 0xe00010c9,\n\t0x6f84: 0xe00010e1, 0x6f85: 0xe00010de, 0x6f86: 0xe00010e7, 0x6f87: 0xe00010e4,\n\t0x6f88: 0xe00010ed, 0x6f89: 0xe00010ea, 0x6f8a: 0xe0002632, 0x6f8b: 0xe000262f,\n\t0x6f8c: 0xe000262c, 0x6f8d: 0xe0002629, 0x6f8e: 0xe0001123, 0x6f8f: 0xe0001120,\n\t0x6f90: 0xe0001141, 0x6f91: 0xe000113e, 0x6f92: 0xe0001153, 0x6f93: 0xe0001150,\n\t0x6f94: 0xe0001159, 0x6f95: 0xe0001156, 0x6f96: 0xe000287d, 0x6f97: 0xe00024fc,\n\t0x6f98: 0xe00010db, 0x6f99: 0xe0001111, 0x6f9a: 0xf0000404, 0x6f9b: 0xe0000f70,\n\t0x6f9c: 0x40300420, 0x6f9d: 0x40300620, 0x6f9e: 0xe0000f7f, 0x6f9f: 0x402c9620,\n\t0x6fa0: 0xe000099b, 0x6fa1: 0xe0000998, 0x6fa2: 0xe0000989, 0x6fa3: 0xe0000986,\n\t0x6fa4: 0xe0000928, 0x6fa5: 0xe0000924, 0x6fa6: 0xe0000930, 0x6fa7: 0xe000092c,\n\t0x6fa8: 0xe0000940, 0x6fa9: 0xe000093c, 0x6faa: 0xe0000938, 0x6fab: 0xe0000934,\n\t0x6fac: 0xe00009aa, 0x6fad: 0xe00009a6, 0x6fae: 0xe0000902, 0x6faf: 0xe00008fe,\n\t0x6fb0: 0xe000090a, 0x6fb1: 0xe0000906, 0x6fb2: 0xe000091a, 0x6fb3: 0xe0000916,\n\t0x6fb4: 0xe0000912, 0x6fb5: 0xe000090e, 0x6fb6: 0xe00009a2, 0x6fb7: 0xe000099e,\n\t0x6fb8: 0xe00025f4, 0x6fb9: 0xe00025f1, 0x6fba: 0xe00025e2, 0x6fbb: 0xe00025df,\n\t0x6fbc: 0xe00025ac, 0x6fbd: 0xe00025a9, 0x6fbe: 0xe0002581, 0x6fbf: 0xe000257d,\n\t// Block 0x1bf, offset 0x6fc0\n\t0x6fc0: 0xe0002589, 0x6fc1: 0xe0002585, 0x6fc2: 0xe0002599, 0x6fc3: 0xe0002595,\n\t0x6fc4: 0xe0002591, 0x6fc5: 0xe000258d, 0x6fc6: 0xe00025fb, 0x6fc7: 0xe00025f7,\n\t0x6fc8: 0xe0002679, 0x6fc9: 0xe0002676, 0x6fca: 0xe000268b, 0x6fcb: 0xe0002688,\n\t0x6fcc: 0xe00027b7, 0x6fcd: 0xe00027b4, 0x6fce: 0xe0002777, 0x6fcf: 0xe0002774,\n\t0x6fd0: 0xe00026ee, 0x6fd1: 0xe00026ea, 0x6fd2: 0xe00026f6, 0x6fd3: 0xe00026f2,\n\t0x6fd4: 0xe0002706, 0x6fd5: 0xe0002702, 0x6fd6: 0xe00026fe, 0x6fd7: 0xe00026fa,\n\t0x6fd8: 0xe00027be, 0x6fd9: 0xe00027ba, 0x6fda: 0xe0002790, 0x6fdb: 0xe000278c,\n\t0x6fdc: 0xe0002798, 0x6fdd: 0xe0002794, 0x6fde: 0xe00027a8, 0x6fdf: 0xe00027a4,\n\t0x6fe0: 0xe00027a0, 0x6fe1: 0xe000279c, 0x6fe2: 0xe00027b0, 0x6fe3: 0xe00027ac,\n\t0x6fe4: 0xe000108d, 0x6fe5: 0xe000108a, 0x6fe6: 0xe000104d, 0x6fe7: 0xe000104a,\n\t0x6fe8: 0xe0001066, 0x6fe9: 0xe0001062, 0x6fea: 0xe000106e, 0x6feb: 0xe000106a,\n\t0x6fec: 0xe000107e, 0x6fed: 0xe000107a, 0x6fee: 0xe0001076, 0x6fef: 0xe0001072,\n\t0x6ff0: 0xe0001086, 0x6ff1: 0xe0001082, 0x6ff2: 0xe0001108, 0x6ff3: 0xe0001105,\n\t0x6ff4: 0xe0001135, 0x6ff5: 0xe0001132, 0x6ff6: 0xe000112f, 0x6ff7: 0xe000112c,\n\t0x6ff8: 0xe000111d, 0x6ff9: 0xe000111a, 0x6ffa: 0xe0000d0a, 0x6ffb: 0xe0000d07,\n\t0x6ffc: 0x0030d888, 0x6ffd: 0x4030d820, 0x6ffe: 0x00312088, 0x6fff: 0x40312020,\n\t// Block 0x1c0, offset 0x7000\n\t0x7000: 0xe00009bc, 0x7001: 0xe00009c0, 0x7002: 0x002c3a8b, 0x7003: 0xf0000a04,\n\t0x7004: 0x40081c20, 0x7005: 0xe0000a5e, 0x7006: 0xe0000a62, 0x7007: 0x002cc28a,\n\t0x7008: 0x40081e20, 0x7009: 0xf0000a04, 0x700a: 0x002d2285, 0x700b: 0x002d688b,\n\t0x700c: 0x002d688b, 0x700d: 0x002d688b, 0x700e: 0x002d6885, 0x700f: 0xf0000202,\n\t0x7010: 0x002d9a8b, 0x7011: 0x002d9a8b, 0x7012: 0x002e228b, 0x7013: 0x002e2285,\n\t0x7014: 0x40082020, 0x7015: 0x002e9e8b, 0x7016: 0xe000281e, 0x7017: 0x40082220,\n\t0x7018: 0x40082420, 0x7019: 0x002f2c8b, 0x701a: 0x002f568b, 0x701b: 0x002f7a8b,\n\t0x701c: 0x002f7a8b, 0x701d: 0x002f7a8b, 0x701e: 0x40082620, 0x701f: 0x40082820,\n\t0x7020: 0xe0002833, 0x7021: 0xe0000fbd, 0x7022: 0xe0002842, 0x7023: 0x40082a20,\n\t0x7024: 0x00312a8b, 0x7025: 0x40082c20, 0x7026: 0x0032a288, 0x7027: 0x40082e20,\n\t0x7028: 0x00312a8b, 0x7029: 0x40083020, 0x702a: 0x002c3c83, 0x702b: 0xe000094d,\n\t0x702c: 0x002c0a8b, 0x702d: 0x002c3a8b, 0x702e: 0x40083220, 0x702f: 0x002c9885,\n\t0x7030: 0x002c988b, 0x7031: 0x002d088b, 0x7032: 0x002d1e88, 0x7033: 0x002e828b,\n\t0x7034: 0x002ee285, 0x7035: 0x00389084, 0x7036: 0x00389284, 0x7037: 0x00389484,\n\t0x7038: 0x00389684, 0x7039: 0x002d9a85, 0x703a: 0x40083420, 0x703b: 0xe0000b95,\n\t0x703c: 0x00327e85, 0x703d: 0x00325685, 0x703e: 0x0032568b, 0x703f: 0x00327e8b,\n\t// Block 0x1c1, offset 0x7040\n\t0x7040: 0x00093685, 0x7041: 0x40083620, 0x7042: 0x40083820, 0x7043: 0x40083a20,\n\t0x7044: 0x40083c20, 0x7045: 0x002c628b, 0x7046: 0x002c6285, 0x7047: 0x002c9885,\n\t0x7048: 0x002d9a85, 0x7049: 0x002dcc85, 0x704a: 0x40083e20, 0x704b: 0x400a6e20,\n\t0x704c: 0x40084020, 0x704d: 0xe00009c4, 0x704e: 0x402d1e20, 0x704f: 0x40084220,\n\t0x7050: 0xe00002cb, 0x7051: 0xe00002d3, 0x7052: 0xe00002b2, 0x7053: 0xe00002bb,\n\t0x7054: 0xe00003cd, 0x7055: 0xe00002c3, 0x7056: 0xe00003d1, 0x7057: 0xe00004ab,\n\t0x7058: 0xe0000579, 0x7059: 0xe00002c7, 0x705a: 0xe0000640, 0x705b: 0xe00002cf,\n\t0x705c: 0xe00004af, 0x705d: 0xe0000644, 0x705e: 0xe0000798, 0x705f: 0xf0001e1e,\n\t0x7060: 0x002d9a8a, 0x7061: 0xe00027d4, 0x7062: 0xe00027db, 0x7063: 0xe00027ee,\n\t0x7064: 0x0030be8a, 0x7065: 0xe0002848, 0x7066: 0xe000284f, 0x7067: 0xe00010bb,\n\t0x7068: 0xe00027f4, 0x7069: 0x0030f68a, 0x706a: 0xe0002883, 0x706b: 0xe000288a,\n\t0x706c: 0x002e228a, 0x706d: 0x002c3a8a, 0x706e: 0x002c628a, 0x706f: 0x002e828a,\n\t0x7070: 0x002d9a84, 0x7071: 0xe00027d1, 0x7072: 0xe00027d7, 0x7073: 0xe00027eb,\n\t0x7074: 0x0030be84, 0x7075: 0xe0002845, 0x7076: 0xe000284b, 0x7077: 0xe00010b6,\n\t0x7078: 0xe00027f1, 0x7079: 0x0030f684, 0x707a: 0xe0002880, 0x707b: 0xe0002886,\n\t0x707c: 0x002e2284, 0x707d: 0x002c3a84, 0x707e: 0x002c6284, 0x707f: 0x002e8284,\n\t// Block 0x1c2, offset 0x7080\n\t0x7080: 0xe0000024, 0x7081: 0xe0000029, 0x7082: 0xe000002e, 0x7083: 0xe0000033,\n\t0x7084: 0xe0000038, 0x7085: 0xe000003d, 0x7086: 0xe0000042, 0x7087: 0xe0000047,\n\t0x7088: 0xf0001f04, 0x7089: 0xf0001f04, 0x708a: 0xf0001f04, 0x708b: 0xf0001f04,\n\t0x708c: 0xf0001f04, 0x708d: 0xf0001f04, 0x708e: 0xf0001f04, 0x708f: 0xf0001f04,\n\t0x7090: 0xf0001f04, 0x7091: 0xf0000404, 0x7092: 0xf0000404, 0x7093: 0xf0000404,\n\t0x7094: 0xf0000404, 0x7095: 0xf0000404, 0x7096: 0xf0000404, 0x7097: 0xf0000404,\n\t0x7098: 0xf0000404, 0x7099: 0xf0000404, 0x709a: 0xf0000404, 0x709b: 0xf0000404,\n\t0x709c: 0xf0000404, 0x709d: 0xf0000404, 0x709e: 0xf0000404, 0x709f: 0xf0000404,\n\t0x70a0: 0xe000249f, 0x70a1: 0xf0000404, 0x70a2: 0xf0000404, 0x70a3: 0xe00024a7,\n\t0x70a4: 0xe00024af, 0x70a5: 0xf0000404, 0x70a6: 0xe00024b7, 0x70a7: 0xf0000404,\n\t0x70a8: 0xf0000404, 0x70a9: 0xf0000404, 0x70aa: 0xe00024bf, 0x70ab: 0xf0000404,\n\t0x70ac: 0xe00024c7, 0x70ad: 0xe00024cf, 0x70ae: 0xe00024d7, 0x70af: 0xe00024df,\n\t0x70b0: 0xf0000404, 0x70b1: 0xf0000404, 0x70b2: 0xf0000404, 0x70b3: 0xe00024e7,\n\t0x70b4: 0xf0000404, 0x70b5: 0xf0000404, 0x70b6: 0x002bde8c, 0x70b7: 0x002c0a8c,\n\t0x70b8: 0x002c3a8c, 0x70b9: 0x002c628c, 0x70ba: 0x002c988c, 0x70bb: 0x002d088c,\n\t0x70bc: 0x002d228c, 0x70bd: 0x002d688c, 0x70be: 0x002d9a8c, 0x70bf: 0x002dcc8c,\n\t// Block 0x1c3, offset 0x70c0\n\t0x70c0: 0xf0001f04, 0x70c1: 0xf0001f04, 0x70c2: 0xf0001f04, 0x70c3: 0xf0001f04,\n\t0x70c4: 0xf0001f04, 0x70c5: 0xf0001f04, 0x70c6: 0xf0001f04, 0x70c7: 0xf0001f04,\n\t0x70c8: 0xf0001f04, 0x70c9: 0xf0000404, 0x70ca: 0xf0000404, 0x70cb: 0xf0000404,\n\t0x70cc: 0xe00027c5, 0x70cd: 0xe0000b85, 0x70ce: 0xe00026cc, 0x70cf: 0xe0000d14,\n\t0x70d0: 0x00657693, 0x70d1: 0x00657893, 0x70d2: 0x00657a93, 0x70d3: 0x00657e93,\n\t0x70d4: 0x00658093, 0x70d5: 0x00658293, 0x70d6: 0x00658493, 0x70d7: 0x00658693,\n\t0x70d8: 0x00658893, 0x70d9: 0x00658a93, 0x70da: 0x00658c93, 0x70db: 0x00658e93,\n\t0x70dc: 0x00659093, 0x70dd: 0x00659293, 0x70de: 0x00659493, 0x70df: 0x00659693,\n\t0x70e0: 0x00659893, 0x70e1: 0x00659a93, 0x70e2: 0x00659c93, 0x70e3: 0x00659e93,\n\t0x70e4: 0x0065a093, 0x70e5: 0x0065a293, 0x70e6: 0x0065a493, 0x70e7: 0x0065a693,\n\t0x70e8: 0x0065a893, 0x70e9: 0x0065aa93, 0x70ea: 0x0065ac93, 0x70eb: 0x0065ae93,\n\t0x70ec: 0x0065b093, 0x70ed: 0x0065b293, 0x70ee: 0x0065b493, 0x70ef: 0x0065b693,\n\t0x70f0: 0x0065b893, 0x70f1: 0x0065ba93, 0x70f2: 0x0065bc93, 0x70f3: 0x0065be93,\n\t0x70f4: 0x0065c093, 0x70f5: 0x0065c493, 0x70f6: 0x0065c693, 0x70f7: 0x0065c893,\n\t0x70f8: 0x0065ca93, 0x70f9: 0x0065cc93, 0x70fa: 0x0065ce93, 0x70fb: 0x0065d093,\n\t0x70fc: 0x0065d293, 0x70fd: 0x0065d493, 0x70fe: 0x0065d693,\n\t// Block 0x1c4, offset 0x7100\n\t0x7100: 0xe000230b, 0x7101: 0xe00022f8, 0x7102: 0xe00022fc, 0x7103: 0xe0002311,\n\t0x7104: 0xe0002316, 0x7105: 0xe000231d, 0x7106: 0xe0002321, 0x7107: 0xe0002325,\n\t0x7108: 0xe000232b, 0x7109: 0xf0001c1c, 0x710a: 0xe0002330, 0x710b: 0xe000233c,\n\t0x710c: 0xe0002340, 0x710d: 0xe0002337, 0x710e: 0xe0002346, 0x710f: 0xe000234b,\n\t0x7110: 0xe000234f, 0x7111: 0xe0002353, 0x7112: 0xf0001c1c, 0x7113: 0xe000235e,\n\t0x7114: 0xe0002358, 0x7115: 0xf0001c1c, 0x7116: 0xe0002363, 0x7117: 0xe000236d,\n\t0x7118: 0xf0001f04, 0x7119: 0xf0001f04, 0x711a: 0xf0001f04, 0x711b: 0xf0001f04,\n\t0x711c: 0xf0001f04, 0x711d: 0xf0001f04, 0x711e: 0xf0001f04, 0x711f: 0xf0001f04,\n\t0x7120: 0xf0001f04, 0x7121: 0xf0001f04, 0x7122: 0xf0000404, 0x7123: 0xf0000404,\n\t0x7124: 0xf0000404, 0x7125: 0xf0000404, 0x7126: 0xf0000404, 0x7127: 0xf0000404,\n\t0x7128: 0xf0000404, 0x7129: 0xf0000404, 0x712a: 0xf0000404, 0x712b: 0xf0000404,\n\t0x712c: 0xf0000404, 0x712d: 0xf0000404, 0x712e: 0xf0000404, 0x712f: 0xf0000404,\n\t0x7130: 0xf0000404, 0x7131: 0xe0000c1e, 0x7132: 0xf0001c1c, 0x7133: 0xf0001d1d,\n\t0x7134: 0xe0000a31, 0x7135: 0xe0002824, 0x7136: 0xf0001c1c, 0x7137: 0xf0001c1c,\n\t0x7138: 0xe0000ac2, 0x7139: 0xe0000ac6, 0x713a: 0xe00027e8, 0x713b: 0xf0001c1c,\n\t0x713c: 0xf0001c1c, 0x713d: 0xf0001c1c, 0x713e: 0xf0001c1c, 0x713f: 0xe0002431,\n\t// Block 0x1c5, offset 0x7140\n\t0x7140: 0xf0001d1c, 0x7141: 0xf0001d1c, 0x7142: 0xf0001d1c, 0x7143: 0xf0001d1c,\n\t0x7144: 0xe00027f7, 0x7145: 0xe00027fa, 0x7146: 0xf0001d1d, 0x7147: 0xf0001d1d,\n\t0x7148: 0xe0000a6b, 0x7149: 0xe0000cb4, 0x714a: 0xf0001d1c, 0x714b: 0xf0001d1c,\n\t0x714c: 0xf0001d1c, 0x714d: 0xf0001c1c, 0x714e: 0xf0001c1c, 0x714f: 0xe00027fd,\n\t0x7150: 0xe00027ce, 0x7151: 0xe0000cb9, 0x7152: 0xe0000d36, 0x7153: 0xe0000be3,\n\t0x7154: 0xe0000fc5, 0x7155: 0xf0001c1c, 0x7156: 0xf0001c1c, 0x7157: 0xf0001c1c,\n\t0x7158: 0xe0002803, 0x7159: 0xf0001c1c, 0x715a: 0xf0001c1c, 0x715b: 0xf0001c1c,\n\t0x715c: 0xf0001c1c, 0x715d: 0xf0001c1c, 0x715e: 0xe0002806, 0x715f: 0xe0000d3e,\n\t0x7160: 0xe0000a72, 0x7161: 0xf0001c1c, 0x7162: 0xe0000cbd, 0x7163: 0xe0000d42,\n\t0x7164: 0xe0000a76, 0x7165: 0xf0001c1c, 0x7166: 0xe0000cc1, 0x7167: 0xe0000d2d,\n\t0x7168: 0xe0000d31, 0x7169: 0xf0001c1d, 0x716a: 0xe0000cc5, 0x716b: 0xe0000d4a,\n\t0x716c: 0xe0000be7, 0x716d: 0xe0000f0b, 0x716e: 0xe0000f0f, 0x716f: 0xe0000f15,\n\t0x7170: 0xe000282d, 0x7171: 0xe0002821, 0x7172: 0xe000288e, 0x7173: 0xe000281b,\n\t0x7174: 0xf0001d1c, 0x7175: 0xf0001d1c, 0x7176: 0xf0001d1c, 0x7177: 0xf0001d1c,\n\t0x7178: 0xe000280f, 0x7179: 0xf0001d1d, 0x717a: 0xf0001d1c, 0x717b: 0xf0001d1c,\n\t0x717c: 0xf0001d1c, 0x717d: 0xf0001d1c, 0x717e: 0xe0002812, 0x717f: 0xf0001d1d,\n\t// Block 0x1c6, offset 0x7180\n\t0x7180: 0xe0002815, 0x7181: 0xf0001d1d, 0x7182: 0xe00009b7, 0x7183: 0xe00024f3,\n\t0x7184: 0xf0001c1c, 0x7185: 0xf0001c1c, 0x7186: 0xe0000a66, 0x7187: 0xe0000a7a,\n\t0x7188: 0xf0001d1c, 0x7189: 0xf0001c1d, 0x718a: 0xe00027c2, 0x718b: 0xe00027c8,\n\t0x718c: 0xe00027e5, 0x718d: 0xe0002800, 0x718e: 0xe0002809, 0x718f: 0xe000280c,\n\t0x7190: 0xf0001c1c, 0x7191: 0xf0001c1c, 0x7192: 0xe0000d0d, 0x7193: 0xe0002818,\n\t0x7194: 0xf0001c1c, 0x7195: 0xe0000d3a, 0x7196: 0xe0000d46, 0x7197: 0xe0002827,\n\t0x7198: 0xe0000eb0, 0x7199: 0xe0000eb8, 0x719a: 0xe000282a, 0x719b: 0xe0002836,\n\t0x719c: 0xe000283f, 0x719d: 0xf0001c1d, 0x719e: 0xe00010b2, 0x719f: 0xe00009c8,\n\t0x71a0: 0xf0001f04, 0x71a1: 0xf0001f04, 0x71a2: 0xf0001f04, 0x71a3: 0xf0001f04,\n\t0x71a4: 0xf0001f04, 0x71a5: 0xf0001f04, 0x71a6: 0xf0001f04, 0x71a7: 0xf0001f04,\n\t0x71a8: 0xf0001f04, 0x71a9: 0xf0000404, 0x71aa: 0xf0000404, 0x71ab: 0xf0000404,\n\t0x71ac: 0xf0000404, 0x71ad: 0xf0000404, 0x71ae: 0xf0000404, 0x71af: 0xf0000404,\n\t0x71b0: 0xf0000404, 0x71b1: 0xf0000404, 0x71b2: 0xf0000404, 0x71b3: 0xf0000404,\n\t0x71b4: 0xf0000404, 0x71b5: 0xf0000404, 0x71b6: 0xf0000404, 0x71b7: 0xf0000404,\n\t0x71b8: 0xf0000404, 0x71b9: 0xf0000404, 0x71ba: 0xf0000404, 0x71bb: 0xf0000404,\n\t0x71bc: 0xf0000404, 0x71bd: 0xf0000404, 0x71be: 0xf0000404, 0x71bf: 0xe0000bdf,\n\t// Block 0x1c7, offset 0x71c0\n\t0x71c0: 0xf0000404, 0x71c1: 0xe00026cf, 0x71c2: 0xf0000404, 0x71c3: 0xe0000b99,\n\t0x71c4: 0xe0000b9d, 0x71c5: 0xe0000f83, 0x71c6: 0xe000283c,\n\t0x71d3: 0xf0000404,\n\t0x71d4: 0xf0000404, 0x71d5: 0xf0000404, 0x71d6: 0xf0000404, 0x71d7: 0xf0000404,\n\t0x71dd: 0xe000150b, 0x71de: 0xa1a09602, 0x71df: 0xe0001514,\n\t0x71e0: 0x0038ae85, 0x71e1: 0x00389085, 0x71e2: 0x00389685, 0x71e3: 0x00389885,\n\t0x71e4: 0x0038a485, 0x71e5: 0x0038a685, 0x71e6: 0x0038a885, 0x71e7: 0x0038b685,\n\t0x71e8: 0x0038ba85, 0x71e9: 0x00093885, 0x71ea: 0xe0001542, 0x71eb: 0xe000153f,\n\t0x71ec: 0xe000154c, 0x71ed: 0xe0001548, 0x71ee: 0xe00014e1, 0x71ef: 0xe00014e4,\n\t0x71f0: 0xe00014e7, 0x71f1: 0xe00014ea, 0x71f2: 0xe00014f0, 0x71f3: 0xe00014f3,\n\t0x71f4: 0xe00014f6, 0x71f5: 0xe00014fc, 0x71f6: 0xe0001505,\n\t0x71f8: 0xe0001508, 0x71f9: 0xe000150e, 0x71fa: 0xe000151b, 0x71fb: 0xe0001518,\n\t0x71fc: 0xe0001521, 0x71fe: 0xe0001524,\n\t// Block 0x1c8, offset 0x7200\n\t0x7200: 0xf0001f04, 0x7201: 0xf0001f04, 0x7202: 0xf0001f04, 0x7203: 0xf0001f04,\n\t0x7204: 0xf0001f04, 0x7205: 0xf0001f04, 0x7206: 0xf0001f04, 0x7207: 0xf0001f04,\n\t0x7208: 0xf0001f04, 0x7209: 0xf0001f04, 0x720a: 0xf0001f04,\n\t0x7210: 0xf0000a04, 0x7211: 0xf0000a04, 0x7212: 0xf0000a04, 0x7213: 0xf0000a04,\n\t0x7214: 0xe00024a3, 0x7215: 0xf0000a04, 0x7216: 0xf0000a04, 0x7217: 0xe00024ab,\n\t0x7218: 0xe00024b3, 0x7219: 0xf0000a04, 0x721a: 0xe00024bb, 0x721b: 0xf0000a04,\n\t0x721c: 0xf0000a04, 0x721d: 0xf0000a04, 0x721e: 0xe00024c3, 0x721f: 0xf0000a04,\n\t0x7220: 0xe00024cb, 0x7221: 0xe00024d3, 0x7222: 0xe00024db, 0x7223: 0xe00024e3,\n\t0x7224: 0xf0000a04, 0x7225: 0xf0000a04, 0x7226: 0xf0000a04, 0x7227: 0xe00024eb,\n\t0x7228: 0xf0000a04, 0x7229: 0xf0000a04, 0x722a: 0xe00024ef, 0x722b: 0x002c3a8c,\n\t0x722c: 0x002f7a8c, 0x722d: 0xf0000c0c, 0x722e: 0xf0000c0c,\n\t0x7230: 0x002bde9d, 0x7231: 0x002c0a9d, 0x7232: 0x002c3a9d, 0x7233: 0x002c629d,\n\t0x7234: 0x002c989d, 0x7235: 0x002d089d, 0x7236: 0x002d229d, 0x7237: 0x002d689d,\n\t0x7238: 0x002d9a9d, 0x7239: 0x002dcc9d, 0x723a: 0x002dfe9d, 0x723b: 0x002e229d,\n\t0x723c: 0x002e829d, 0x723d: 0x002e9e9d, 0x723e: 0x002ee29d, 0x723f: 0x002f2c9d,\n\t// Block 0x1c9, offset 0x7240\n\t0x7240: 0x002f569d, 0x7241: 0x002f7a9d, 0x7242: 0x002fe69d, 0x7243: 0x00302c9d,\n\t0x7244: 0x00306c9d, 0x7245: 0x0030be9d, 0x7246: 0x0030e29d, 0x7247: 0x0030f69d,\n\t0x7248: 0x0031009d, 0x7249: 0x00312a9d, 0x724a: 0xe00027cb, 0x724b: 0xf0001d1d,\n\t0x724c: 0xe0002830, 0x724d: 0xe0002839, 0x724e: 0xe0000ebc, 0x724f: 0xf0001d1d,\n\t0x7250: 0x002bde8c, 0x7251: 0x002c0a8c, 0x7252: 0x002c3a8c, 0x7253: 0x002c628c,\n\t0x7254: 0x002c988c, 0x7255: 0x002d088c, 0x7256: 0x002d228c, 0x7257: 0x002d688c,\n\t0x7258: 0x002d9a8c, 0x7259: 0x002dcc8c, 0x725a: 0x002dfe8c, 0x725b: 0x002e228c,\n\t0x725c: 0x002e828c, 0x725d: 0x002e9e8c, 0x725e: 0x002ee28c, 0x725f: 0x002f2c8c,\n\t0x7260: 0x002f568c, 0x7261: 0x002f7a8c, 0x7262: 0x002fe68c, 0x7263: 0x00302c8c,\n\t0x7264: 0x00306c8c, 0x7265: 0x0030be8c, 0x7266: 0x0030e28c, 0x7267: 0x0030f68c,\n\t0x7268: 0x0031008c, 0x7269: 0x00312a8c, 0x726a: 0xf0001414, 0x726b: 0xf0001414,\n\t0x7270: 0x002bde9d, 0x7271: 0x002c0a9d, 0x7272: 0x002c3a9d, 0x7273: 0x002c629d,\n\t0x7274: 0x002c989d, 0x7275: 0x002d089d, 0x7276: 0x002d229d, 0x7277: 0x002d689d,\n\t0x7278: 0x002d9a9d, 0x7279: 0x002dcc9d, 0x727a: 0x002dfe9d, 0x727b: 0x002e229d,\n\t0x727c: 0x002e829d, 0x727d: 0x002e9e9d, 0x727e: 0x002ee29d, 0x727f: 0x002f2c9d,\n\t// Block 0x1ca, offset 0x7280\n\t0x7280: 0xe0000cfe, 0x7281: 0xe0000cf8, 0x7282: 0xe0000cf5, 0x7283: 0xe0000d51,\n\t0x7284: 0xe0000d4e, 0x7285: 0xe0000d6f, 0x7286: 0xe0000d6c, 0x7287: 0xe0000d5d,\n\t0x7288: 0xe0000d5a, 0x7289: 0x002e9e89, 0x728a: 0x002eda88, 0x728b: 0x402eda20,\n\t0x728c: 0xe0000e2e, 0x728d: 0xe0000e2b, 0x728e: 0xe0000da0, 0x728f: 0xe0000d9d,\n\t0x7290: 0xe0000de0, 0x7291: 0xe0000ddd, 0x7292: 0xe0000e93, 0x7293: 0xe0000e8f,\n\t0x7294: 0xe0000eca, 0x7295: 0xe0000ec7, 0x7296: 0xe0000edc, 0x7297: 0xe0000ed9,\n\t0x7298: 0xe0000ed0, 0x7299: 0xe0000ecd, 0x729a: 0xe0000f1f, 0x729b: 0xe0000f1c,\n\t0x729c: 0xe0000f2d, 0x729d: 0xe0000f2a, 0x729e: 0xe0000f47, 0x729f: 0xe0000f44,\n\t0x72a0: 0xe0000f33, 0x72a1: 0xe0000f30, 0x72a2: 0xe0000f99, 0x72a3: 0xe0000f96,\n\t0x72a4: 0xe0000f8a, 0x72a5: 0xe0000f87, 0x72a6: 0x00303688, 0x72a7: 0x40303620,\n\t0x72a8: 0xe000102b, 0x72a9: 0xe0001028, 0x72aa: 0xe000103f, 0x72ab: 0xe000103c,\n\t0x72ac: 0xe0000fe7, 0x72ad: 0xe0000fe4, 0x72ae: 0xe0000ff9, 0x72af: 0xe0000ff6,\n\t0x72b0: 0xe0001025, 0x72b1: 0xe0001022, 0x72b2: 0xe0001039, 0x72b3: 0xe0001036,\n\t0x72b4: 0xe00010d8, 0x72b5: 0xe00010d5, 0x72b6: 0xe000110e, 0x72b7: 0xe000110b,\n\t0x72b8: 0xe0001117, 0x72b9: 0xe000113b, 0x72ba: 0xe0001138, 0x72bb: 0xe000114d,\n\t0x72bc: 0xe000114a, 0x72bd: 0xe0001147, 0x72be: 0xe0001144, 0x72bf: 0xe0000f64,\n\t// Block 0x1cb, offset 0x72c0\n\t0x72c0: 0xa0000000, 0x72c1: 0xa0000000, 0x72c2: 0xa0000000, 0x72c3: 0xa0000000,\n\t0x72c4: 0xa0000000, 0x72c6: 0x40096620, 0x72c7: 0x40096a20,\n\t0x72c8: 0x40070820, 0x72c9: 0x4004f220, 0x72ca: 0x4004f620, 0x72cb: 0x4027e620,\n\t0x72cc: 0x40024820, 0x72cd: 0x40024a20, 0x72ce: 0x40070e20, 0x72cf: 0x40071020,\n\t0x72d0: 0xae600000, 0x72d1: 0xae600000, 0x72d2: 0xae600000, 0x72d3: 0xae600000,\n\t0x72d4: 0xae600000, 0x72d5: 0xae600000, 0x72d6: 0xae600000, 0x72d7: 0xae600000,\n\t0x72d8: 0xa1e00000, 0x72d9: 0xa1f00000, 0x72da: 0xa2000000, 0x72db: 0x40026420,\n\t0x72de: 0x40027020, 0x72df: 0x4002cc20,\n\t0x72e0: 0x403aa220, 0x72e1: 0x40391c20, 0x72e2: 0x40391e20, 0x72e3: 0x40392020,\n\t0x72e4: 0x40392620, 0x72e5: 0x40392820, 0x72e6: 0x40393020, 0x72e7: 0xc0520151,\n\t0x72e8: 0x40393c20, 0x72e9: 0x40395621, 0x72ea: 0x40395620, 0x72eb: 0x40395820,\n\t0x72ec: 0x40396420, 0x72ed: 0x40397220, 0x72ee: 0x40397420, 0x72ef: 0x40398820,\n\t0x72f0: 0x40398a20, 0x72f1: 0x4039a420, 0x72f2: 0x4039a620, 0x72f3: 0x4039c620,\n\t0x72f4: 0x4039c820, 0x72f5: 0x4039dc20, 0x72f6: 0x4039de20, 0x72f7: 0x4039e620,\n\t0x72f8: 0x4039e820, 0x72f9: 0x4039ee20, 0x72fa: 0x4039f020, 0x72fb: 0x403a3820,\n\t0x72fc: 0x403a3a20, 0x72fd: 0x403a9c20, 0x72fe: 0x403a9e20, 0x72ff: 0x403aa020,\n\t// Block 0x1cc, offset 0x7300\n\t0x7300: 0xa0000000, 0x7301: 0x4039fc20, 0x7302: 0x403a1220, 0x7303: 0x403a1a20,\n\t0x7304: 0x403a4020, 0x7305: 0x403a4e20, 0x7306: 0x403a5620, 0x7307: 0x403a6820,\n\t0x7308: 0xc0560171, 0x7309: 0x403a9021, 0x730a: 0xc0580171, 0x730b: 0xa1b0a202,\n\t0x730c: 0xa1c0a502, 0x730d: 0xa1d0a902, 0x730e: 0xa1e0ad02, 0x730f: 0xa1f0b202,\n\t0x7310: 0xa200b602, 0x7311: 0xa210ba02, 0x7312: 0xa220bc02, 0x7313: 0xae60bd02,\n\t0x7314: 0xae60be02, 0x7315: 0xadc0bf02, 0x7316: 0xadc0c102, 0x7317: 0xae60c202,\n\t0x7318: 0xae60c302, 0x7319: 0xae60c402, 0x731a: 0xae60c502, 0x731b: 0xae60c602,\n\t0x731c: 0xadc0c702, 0x731d: 0xae60c802, 0x731e: 0xae60c902, 0x731f: 0xadc0c002,\n\t0x7320: 0xe000015e, 0x7321: 0xe00001e6, 0x7322: 0xe0000301, 0x7323: 0xe00003db,\n\t0x7324: 0xe00004b6, 0x7325: 0xe0000580, 0x7326: 0xe000064b, 0x7327: 0xe00006f3,\n\t0x7328: 0xe000079f, 0x7329: 0xe0000844, 0x732a: 0x4004ee20, 0x732b: 0x40024c20,\n\t0x732c: 0x40024e20, 0x732d: 0x4004de20, 0x732e: 0x40393a20, 0x732f: 0x403a1020,\n\t0x7330: 0xa230d102, 0x7331: 0x40392420, 0x7332: 0x40392220, 0x7333: 0x40392a20,\n\t0x7334: 0x00391c84, 0x7335: 0xf0000404, 0x7336: 0xf0000404, 0x7337: 0xf0000404,\n\t0x7338: 0xf0000404, 0x7339: 0x40395a20, 0x733a: 0x40395c20, 0x733b: 0x40393e20,\n\t0x733c: 0x40395e20, 0x733d: 0x40396020, 0x733e: 0x40394020, 0x733f: 0x40396220,\n\t// Block 0x1cd, offset 0x7340\n\t0x7340: 0x40073420, 0x7341: 0x40073620,\n\t0x7353: 0x003a269a,\n\t0x7354: 0x003a2699, 0x7355: 0x003a2697, 0x7356: 0x003a2698, 0x7357: 0x003a7c9a,\n\t0x7358: 0x003a7c99, 0x7359: 0x003a7a9a, 0x735a: 0x003a7a99, 0x735b: 0x003a7e9a,\n\t0x735c: 0x003a7e99, 0x735d: 0xf0001a1a, 0x735e: 0x003a849a, 0x735f: 0x003a8499,\n\t0x7360: 0x003a789a, 0x7361: 0x003a7899, 0x7362: 0x003a809a, 0x7363: 0x003a8099,\n\t0x7364: 0x003a989a, 0x7365: 0x003a9899, 0x7366: 0x003a9897, 0x7367: 0x003a9898,\n\t0x7368: 0x003a90a3, 0x7369: 0x003a90a4, 0x736a: 0xe0001559, 0x736b: 0xe0001556,\n\t0x736c: 0xe0001589, 0x736d: 0xe0001586, 0x736e: 0xe000158f, 0x736f: 0xe000158c,\n\t0x7370: 0xe000159b, 0x7371: 0xe0001598, 0x7372: 0xe0001595, 0x7373: 0xe0001592,\n\t0x7374: 0xe00015a1, 0x7375: 0xe000159e, 0x7376: 0xe00015bf, 0x7377: 0xe00015bc,\n\t0x7378: 0xe00015b9, 0x7379: 0xe00015ad, 0x737a: 0xe00015a7, 0x737b: 0xe00015a4,\n\t0x737c: 0x003a929a, 0x737d: 0x003a9299, 0x737e: 0x003a9297, 0x737f: 0x003a9298,\n\t// Block 0x1ce, offset 0x7380\n\t0x7380: 0xe000155f, 0x7381: 0xe0001565, 0x7382: 0xe000157a, 0x7383: 0xe00015b0,\n\t0x7384: 0xe00015b6, 0x7385: 0xf0001a1a, 0x7386: 0xf0001a1a, 0x7387: 0xf0001a1a,\n\t0x7388: 0xf0001a1a, 0x7389: 0xe0002894, 0x738a: 0xf0001a1a, 0x738b: 0xf0001a1a,\n\t0x738c: 0xf0001a1a, 0x738d: 0xf0001a1a, 0x738e: 0xf0001a1a, 0x738f: 0xe000289a,\n\t0x7390: 0xf0001a1a, 0x7391: 0xf0001a1a, 0x7392: 0xf0001a1a, 0x7393: 0xe00028a0,\n\t0x7394: 0xf0001a1a, 0x7395: 0xf0001a1a, 0x7396: 0xf0001a1a, 0x7397: 0xf0001a1a,\n\t0x7398: 0xf0001a1a, 0x7399: 0xf0001a1a, 0x739a: 0xf0001a1a, 0x739b: 0xf0001a1a,\n\t0x739c: 0xf0001a1a, 0x739d: 0xf0001a1a, 0x739e: 0xf0001a1a, 0x739f: 0xf0001a1a,\n\t0x73a0: 0xf0001a1a, 0x73a1: 0xf0001a1a, 0x73a2: 0xf0001a1a, 0x73a3: 0xf0001a1a,\n\t0x73a4: 0xf0001a1a, 0x73a5: 0xf0001a1a, 0x73a6: 0xf0001a1a, 0x73a7: 0xf0001a1a,\n\t0x73a8: 0xf0001a1a, 0x73a9: 0xf0001a1a, 0x73aa: 0xf0001a1a, 0x73ab: 0xf0001a1a,\n\t0x73ac: 0xf0001a1a, 0x73ad: 0xf0001a1a, 0x73ae: 0xf0001a1a, 0x73af: 0xf0001a1a,\n\t0x73b0: 0xf0001a1a, 0x73b1: 0xe00028e2, 0x73b2: 0xf0001a1a, 0x73b3: 0xf0001a1a,\n\t0x73b4: 0xf0001a1a, 0x73b5: 0xe00028e8, 0x73b6: 0xf0001a1a, 0x73b7: 0xf0001a1a,\n\t0x73b8: 0xf0001a1a, 0x73b9: 0xf0001a1a, 0x73ba: 0xf0001a1a, 0x73bb: 0xf0001a1a,\n\t0x73bc: 0xf0001a1a, 0x73bd: 0xe00028ee, 0x73be: 0xf0001a1a, 0x73bf: 0xf0001a1a,\n\t// Block 0x1cf, offset 0x73c0\n\t0x73c0: 0xf0001a1a, 0x73c1: 0xf0001a1a, 0x73c2: 0xf0001a1a, 0x73c3: 0xe00028f4,\n\t0x73c4: 0xf0001a1a, 0x73c5: 0xf0001a1a, 0x73c6: 0xf0001a1a, 0x73c7: 0xf0001a1a,\n\t0x73c8: 0xf0001a1a, 0x73c9: 0xe00028f7, 0x73ca: 0xf0001a1a, 0x73cb: 0xf0001a1a,\n\t0x73cc: 0xf0001a1a, 0x73cd: 0xf0001a1a, 0x73ce: 0xf0001a1a, 0x73cf: 0xe00028fd,\n\t0x73d0: 0xf0001a1a, 0x73d1: 0xf0001a1a, 0x73d2: 0xf0001a1a, 0x73d3: 0xe0002900,\n\t0x73d4: 0xf0001a1a, 0x73d5: 0xf0001a1a, 0x73d6: 0xf0001a1a, 0x73d7: 0xf0001a1a,\n\t0x73d8: 0xf0001a1a, 0x73d9: 0xe0002906, 0x73da: 0xf0001a1a, 0x73db: 0xf0001a1a,\n\t0x73dc: 0xf0001a1a, 0x73dd: 0x003a90a8, 0x73de: 0xe0000003, 0x73df: 0xe0000006,\n\t0x73e0: 0xe0000009, 0x73e1: 0xe000000c, 0x73e2: 0xe000000f, 0x73e3: 0xe0000012,\n\t0x73e4: 0xe000156b, 0x73e5: 0xe000156e, 0x73e6: 0xe0001577, 0x73e7: 0xe000157d,\n\t0x73e8: 0xe00015aa, 0x73e9: 0xe00015b3, 0x73ea: 0xf0001919, 0x73eb: 0xf0001919,\n\t0x73ec: 0xf0001919, 0x73ed: 0xf0001919, 0x73ee: 0xe0002891, 0x73ef: 0xf0001919,\n\t0x73f0: 0xf0001919, 0x73f1: 0xf0001919, 0x73f2: 0xf0001919, 0x73f3: 0xf0001919,\n\t0x73f4: 0xe0002897, 0x73f5: 0xf0001919, 0x73f6: 0xf0001919, 0x73f7: 0xf0001919,\n\t0x73f8: 0xf0001919, 0x73f9: 0xf0001919, 0x73fa: 0xe000289d, 0x73fb: 0xf0001919,\n\t0x73fc: 0xe00028df, 0x73fd: 0xf0001919, 0x73fe: 0xe00028e5, 0x73ff: 0xf0001919,\n\t// Block 0x1d0, offset 0x7400\n\t0x7400: 0xf0001919, 0x7401: 0xf0001919, 0x7402: 0xf0001919, 0x7403: 0xe00028eb,\n\t0x7404: 0xf0001919, 0x7405: 0xf0001919, 0x7406: 0xe00028f1, 0x7407: 0xf0001919,\n\t0x7408: 0xf0001919, 0x7409: 0xf0001919, 0x740a: 0xf0001919, 0x740b: 0xf0001919,\n\t0x740c: 0xf0001919, 0x740d: 0xf0001919, 0x740e: 0xe00028fa, 0x740f: 0xf0001919,\n\t0x7410: 0x003a90a7, 0x7411: 0xf0001919, 0x7412: 0xf0001919, 0x7413: 0xf0001919,\n\t0x7414: 0xf0001919, 0x7415: 0xe0002903, 0x7416: 0xf0001919, 0x7417: 0xe000155c,\n\t0x7418: 0xe0001562, 0x7419: 0xe0001568, 0x741a: 0xe0001571, 0x741b: 0xe0001580,\n\t0x741c: 0xf0001717, 0x741d: 0xf0001717, 0x741e: 0xf0001717, 0x741f: 0xf0001717,\n\t0x7420: 0xf0001717, 0x7421: 0xf0001717, 0x7422: 0xf0001717, 0x7423: 0xf0001717,\n\t0x7424: 0xf0001717, 0x7425: 0xf0001717, 0x7426: 0xf0001717, 0x7427: 0xf0001717,\n\t0x7428: 0xf0001717, 0x7429: 0xf0001717, 0x742a: 0xf0001717, 0x742b: 0xf0001717,\n\t0x742c: 0xf0001717, 0x742d: 0xf0001717, 0x742e: 0xf0001717, 0x742f: 0xf0001717,\n\t0x7430: 0xf0001717, 0x7431: 0xf0001717, 0x7432: 0xf0001717, 0x7433: 0xf0001717,\n\t0x7434: 0xf0001717, 0x7435: 0xf0001717, 0x7436: 0xf0001717, 0x7437: 0xf0001717,\n\t0x7438: 0xf0001717, 0x7439: 0xf0001717, 0x743a: 0xf0001717, 0x743b: 0xf0001717,\n\t0x743c: 0xf0001717, 0x743d: 0xf0001717, 0x743e: 0xf0001717, 0x743f: 0xf0001717,\n\t// Block 0x1d1, offset 0x7440\n\t0x7440: 0xf0001717, 0x7441: 0xf0001717, 0x7442: 0xf0001717, 0x7443: 0xf0001717,\n\t0x7444: 0xf0001717, 0x7445: 0xf0001717, 0x7446: 0xf0001717, 0x7447: 0xf0001717,\n\t0x7448: 0xf0001717, 0x7449: 0xf0001717, 0x744a: 0xf0001717, 0x744b: 0xf0001717,\n\t0x744c: 0xf0001717, 0x744d: 0xf0001717, 0x744e: 0xf0001717, 0x744f: 0xf0001717,\n\t0x7450: 0xf0001717, 0x7451: 0xf0001717, 0x7452: 0xf0001717, 0x7453: 0xf0001717,\n\t0x7454: 0xf0001717, 0x7455: 0xf0001717, 0x7456: 0xf0001717, 0x7457: 0xf0001717,\n\t0x7458: 0xf0001717, 0x7459: 0xf0001717, 0x745a: 0xf0001717, 0x745b: 0xf0001717,\n\t0x745c: 0xf0001717, 0x745d: 0xf0001717, 0x745e: 0xf0001717, 0x745f: 0xe0001574,\n\t0x7460: 0xe0001583, 0x7461: 0xf0001818, 0x7462: 0xf0001818, 0x7463: 0xf0001818,\n\t0x7464: 0xf0001818, 0x7465: 0xf0001818, 0x7466: 0xf0001818, 0x7467: 0xf0001818,\n\t0x7468: 0xf0001818, 0x7469: 0xf0001818, 0x746a: 0xf0001818, 0x746b: 0xf0001818,\n\t0x746c: 0xf0001818, 0x746d: 0xf0001818, 0x746e: 0xf0001818, 0x746f: 0xf0001818,\n\t0x7470: 0xf0001818, 0x7471: 0xf0001818, 0x7472: 0xf0001818, 0x7473: 0xf0001818,\n\t0x7474: 0xf0001818, 0x7475: 0xe00028d0, 0x7476: 0xf0001a1a, 0x7477: 0xe00028d6,\n\t0x7478: 0xf0001a1a, 0x7479: 0xe00028dc, 0x747a: 0xf0001a1a, 0x747b: 0xe00028b8,\n\t0x747c: 0xf0001a1a, 0x747d: 0xe00028be, 0x747e: 0xf0001a1a, 0x747f: 0xe00028ac,\n\t// Block 0x1d2, offset 0x7480\n\t0x7480: 0xf0001a1a, 0x7481: 0xe00028a6, 0x7482: 0xf0001a1a, 0x7483: 0xe00028b2,\n\t0x7484: 0xf0001a1a, 0x7485: 0xe00028c4, 0x7486: 0xf0001a1a, 0x7487: 0xe00028ca,\n\t0x7488: 0xf0001a1a, 0x7489: 0xf0001a1a, 0x748a: 0xf0001a1a, 0x748b: 0xf0001a1a,\n\t0x748c: 0xf0001a1a, 0x748d: 0xf0001a1a, 0x748e: 0xf0001a1a, 0x748f: 0xf0001a1a,\n\t0x7490: 0xf0001a1a, 0x7491: 0xe00028cd, 0x7492: 0xf0001919, 0x7493: 0xe00028d3,\n\t0x7494: 0xf0001919, 0x7495: 0xe00028d9, 0x7496: 0xf0001919, 0x7497: 0xe00028b5,\n\t0x7498: 0xf0001919, 0x7499: 0xe00028bb, 0x749a: 0xf0001919, 0x749b: 0xe00028a9,\n\t0x749c: 0xf0001919, 0x749d: 0xe00028a3, 0x749e: 0xf0001919, 0x749f: 0xe00028af,\n\t0x74a0: 0xf0001919, 0x74a1: 0xe00028c1, 0x74a2: 0xf0001919, 0x74a3: 0xe00028c7,\n\t0x74a4: 0xf0001919, 0x74a5: 0xf0001919, 0x74a6: 0xf0001919, 0x74a7: 0xf0001919,\n\t0x74a8: 0xf0001919, 0x74a9: 0xf0001919, 0x74aa: 0xf0001919, 0x74ab: 0xf0001919,\n\t0x74ac: 0xf0001919, 0x74ad: 0xf0001717, 0x74ae: 0xf0001717, 0x74af: 0xf0001717,\n\t0x74b0: 0xf0001717, 0x74b1: 0xf0001717, 0x74b2: 0xf0001717, 0x74b3: 0xf0001717,\n\t0x74b4: 0xf0001818, 0x74b5: 0xf0001818, 0x74b6: 0xf0001818, 0x74b7: 0xf0001818,\n\t0x74b8: 0xf0001818, 0x74b9: 0xf0001818, 0x74ba: 0xf0001818, 0x74bb: 0xf0001818,\n\t0x74bc: 0xf0001919, 0x74bd: 0xf0001a1a, 0x74be: 0x4004c020, 0x74bf: 0x4004c220,\n\t// Block 0x1d3, offset 0x74c0\n\t0x74c0: 0x00391c9a, 0x74c1: 0x00391e9a, 0x74c2: 0x00391e99, 0x74c3: 0x0039209a,\n\t0x74c4: 0x00392099, 0x74c5: 0x0039269a, 0x74c6: 0x00392699, 0x74c7: 0x0039289a,\n\t0x74c8: 0x00392899, 0x74c9: 0x0039309a, 0x74ca: 0x00393099, 0x74cb: 0x00393097,\n\t0x74cc: 0x00393098, 0x74cd: 0x0039389a, 0x74ce: 0x00393899, 0x74cf: 0x00393c9a,\n\t0x74d0: 0x00393c99, 0x74d1: 0x00393c97, 0x74d2: 0x00393c98, 0x74d3: 0x003956a4,\n\t0x74d4: 0x003956a3, 0x74d5: 0x0039569a, 0x74d6: 0x00395699, 0x74d7: 0x00395697,\n\t0x74d8: 0x00395698, 0x74d9: 0x0039589a, 0x74da: 0x00395899, 0x74db: 0x00395897,\n\t0x74dc: 0x00395898, 0x74dd: 0x0039649a, 0x74de: 0x00396499, 0x74df: 0x00396497,\n\t0x74e0: 0x00396498, 0x74e1: 0x0039729a, 0x74e2: 0x00397299, 0x74e3: 0x00397297,\n\t0x74e4: 0x00397298, 0x74e5: 0x0039749a, 0x74e6: 0x00397499, 0x74e7: 0x00397497,\n\t0x74e8: 0x00397498, 0x74e9: 0x0039889a, 0x74ea: 0x00398899, 0x74eb: 0x00398a9a,\n\t0x74ec: 0x00398a99, 0x74ed: 0x0039a49a, 0x74ee: 0x0039a499, 0x74ef: 0x0039a69a,\n\t0x74f0: 0x0039a699, 0x74f1: 0x0039c69a, 0x74f2: 0x0039c699, 0x74f3: 0x0039c697,\n\t0x74f4: 0x0039c698, 0x74f5: 0x0039c89a, 0x74f6: 0x0039c899, 0x74f7: 0x0039c897,\n\t0x74f8: 0x0039c898, 0x74f9: 0x0039dc9a, 0x74fa: 0x0039dc99, 0x74fb: 0x0039dc97,\n\t0x74fc: 0x0039dc98, 0x74fd: 0x0039de9a, 0x74fe: 0x0039de99, 0x74ff: 0x0039de97,\n\t// Block 0x1d4, offset 0x7500\n\t0x7500: 0x0039de98, 0x7501: 0x0039e69a, 0x7502: 0x0039e699, 0x7503: 0x0039e697,\n\t0x7504: 0x0039e698, 0x7505: 0x0039e89a, 0x7506: 0x0039e899, 0x7507: 0x0039e897,\n\t0x7508: 0x0039e898, 0x7509: 0x0039ee9a, 0x750a: 0x0039ee99, 0x750b: 0x0039ee97,\n\t0x750c: 0x0039ee98, 0x750d: 0x0039f09a, 0x750e: 0x0039f099, 0x750f: 0x0039f097,\n\t0x7510: 0x0039f098, 0x7511: 0x0039fc9a, 0x7512: 0x0039fc99, 0x7513: 0x0039fc97,\n\t0x7514: 0x0039fc98, 0x7515: 0x003a129a, 0x7516: 0x003a1299, 0x7517: 0x003a1297,\n\t0x7518: 0x003a1298, 0x7519: 0x003a1a9a, 0x751a: 0x003a1a99, 0x751b: 0x003a1a97,\n\t0x751c: 0x003a1a98, 0x751d: 0x003a409a, 0x751e: 0x003a4099, 0x751f: 0x003a4097,\n\t0x7520: 0x003a4098, 0x7521: 0x003a4e9a, 0x7522: 0x003a4e99, 0x7523: 0x003a4e97,\n\t0x7524: 0x003a4e98, 0x7525: 0x003a569a, 0x7526: 0x003a5699, 0x7527: 0x003a5697,\n\t0x7528: 0x003a5698, 0x7529: 0x003a689a, 0x752a: 0x003a6899, 0x752b: 0x003a6897,\n\t0x752c: 0x003a6898, 0x752d: 0x003a749a, 0x752e: 0x003a7499, 0x752f: 0x003a90a6,\n\t0x7530: 0x003a90a5, 0x7531: 0x003a909a, 0x7532: 0x003a9099, 0x7533: 0x003a9097,\n\t0x7534: 0x003a9098, 0x7535: 0xe0001732, 0x7536: 0xe000172f, 0x7537: 0xe0001738,\n\t0x7538: 0xe0001735, 0x7539: 0xe000173e, 0x753a: 0xe000173b, 0x753b: 0xf0001a1a,\n\t0x753c: 0xf0001919, 0x753f: 0xa0000000,\n\t// Block 0x1d5, offset 0x7540\n\t0x7541: 0x40409a20, 0x7542: 0x40409820, 0x7543: 0x40409c20,\n\t0x7545: 0x40407c20, 0x7546: 0x40407e20, 0x7547: 0x40408020,\n\t0x7548: 0x40408220, 0x7549: 0x40408420, 0x754a: 0x40408620, 0x754b: 0x40408820,\n\t0x754c: 0x40408c20, 0x754f: 0x40409020,\n\t0x7550: 0x40409220, 0x7553: 0x40409420,\n\t0x7554: 0x40409620, 0x7555: 0xc33108b1, 0x7556: 0x40409a20, 0x7557: 0x40409c20,\n\t0x7558: 0x40409e20, 0x7559: 0x4040a020, 0x755a: 0x4040a220, 0x755b: 0x4040a420,\n\t0x755c: 0x4040a620, 0x755d: 0x4040a820, 0x755e: 0x4040aa20, 0x755f: 0x4040ac20,\n\t0x7560: 0x4040ae20, 0x7561: 0x4040b020, 0x7562: 0x4040b220, 0x7563: 0x4040b420,\n\t0x7564: 0xc32f0851, 0x7565: 0x4040b820, 0x7566: 0x4040ba20, 0x7567: 0x4040bc20,\n\t0x7568: 0x4040be20, 0x756a: 0x4040c020, 0x756b: 0x4040c220,\n\t0x756c: 0x4040c420, 0x756d: 0x4040c620, 0x756e: 0x4040c820, 0x756f: 0x4040ca20,\n\t0x7570: 0x4040cc20, 0x7572: 0x4040d020,\n\t0x7576: 0x4040d420, 0x7577: 0x4040d620,\n\t0x7578: 0x4040d820, 0x7579: 0x4040da20,\n\t0x757c: 0xa070f102, 0x757d: 0x4040dc20, 0x757e: 0x4040de20, 0x757f: 0x4040e020,\n\t// Block 0x1d6, offset 0x7580\n\t0x7580: 0x4040e220, 0x7581: 0x4040e420, 0x7582: 0x4040e620, 0x7583: 0x4040e820,\n\t0x7584: 0x4040ea20, 0x7587: 0xc05a0191,\n\t0x7588: 0x4040f220, 0x758b: 0x4040f420,\n\t0x758c: 0x4040f620, 0x758d: 0x8209207c, 0x758e: 0x4040b420,\n\t0x7597: 0x4040fa20,\n\t0x759c: 0xe000183f, 0x759d: 0xe0001842, 0x759f: 0xe0001848,\n\t0x75a0: 0x40408a20, 0x75a1: 0x40408e20, 0x75a2: 0x4040ec20, 0x75a3: 0x4040ee20,\n\t0x75a6: 0xe000016d, 0x75a7: 0xe00001fb,\n\t0x75a8: 0xe0000316, 0x75a9: 0xe00003f0, 0x75aa: 0xe00004cb, 0x75ab: 0xe0000595,\n\t0x75ac: 0xe0000660, 0x75ad: 0xe0000708, 0x75ae: 0xe00007b4, 0x75af: 0xe0000859,\n\t0x75b0: 0x4040ce20, 0x75b1: 0x4040d220, 0x75b2: 0x4027e820, 0x75b3: 0x4027ea20,\n\t0x75b4: 0x40283020, 0x75b5: 0x40283220, 0x75b6: 0x40283420, 0x75b7: 0x40283620,\n\t0x75b8: 0x40283820, 0x75b9: 0x40283a20, 0x75ba: 0x40073a20, 0x75bb: 0x4027ec20,\n\t// Block 0x1d7, offset 0x75c0\n\t0x75c0: 0xa0000000, 0x75c1: 0xa0000000, 0x75c2: 0xa0000000, 0x75c3: 0xa0000000,\n\t0x75c4: 0xa0000000, 0x75c5: 0xa0000000, 0x75c6: 0xa0000000, 0x75c7: 0xa0000000,\n\t0x75c8: 0xa0000000, 0x75c9: 0x40020020, 0x75ca: 0x40020220, 0x75cb: 0x40020420,\n\t0x75cc: 0x40020620, 0x75cd: 0x40020820, 0x75ce: 0xa0000000, 0x75cf: 0xa0000000,\n\t0x75d0: 0xa0000000, 0x75d1: 0xa0000000, 0x75d2: 0xa0000000, 0x75d3: 0xa0000000,\n\t0x75d4: 0xa0000000, 0x75d5: 0xa0000000, 0x75d6: 0xa0000000, 0x75d7: 0xa0000000,\n\t0x75d8: 0xa0000000, 0x75d9: 0xa0000000, 0x75da: 0xa0000000, 0x75db: 0xa0000000,\n\t0x75dc: 0xa0000000, 0x75dd: 0xa0000000, 0x75de: 0xa0000000, 0x75df: 0xa0000000,\n\t0x75e0: 0x40021220, 0x75e1: 0x4002ba20, 0x75e2: 0x4003e020, 0x75e3: 0x4004ea20,\n\t0x75e4: 0x4027de20, 0x75e5: 0x4004ec20, 0x75e6: 0x4004e620, 0x75e7: 0x4003d220,\n\t0x75e8: 0x4003f420, 0x75e9: 0x4003f620, 0x75ea: 0x4004d820, 0x75eb: 0x40093820,\n\t0x75ec: 0x40024020, 0x75ed: 0x40021a20, 0x75ee: 0x4002e420, 0x75ef: 0x4004e220,\n\t0x75f0: 0x4029cc20, 0x75f1: 0x4029ce20, 0x75f2: 0x4029d020, 0x75f3: 0x4029d220,\n\t0x75f4: 0x4029d420, 0x75f5: 0x4029d620, 0x75f6: 0x4029d820, 0x75f7: 0x4029da20,\n\t0x75f8: 0x4029dc20, 0x75f9: 0x4029de20, 0x75fa: 0x40026c20, 0x75fb: 0x40026220,\n\t0x75fc: 0x40094020, 0x75fd: 0x40094220, 0x75fe: 0x40094420, 0x75ff: 0x4002c420,\n\t// Block 0x1d8, offset 0x7600\n\t0x7600: 0x4004d620, 0x7601: 0x002bde88, 0x7602: 0x002c0a88, 0x7603: 0xc3350911,\n\t0x7604: 0x002c6288, 0x7605: 0x002c9888, 0x7606: 0x002d0888, 0x7607: 0xc33900d1,\n\t0x7608: 0x002d6888, 0x7609: 0xc33b0931, 0x760a: 0x002dcc88, 0x760b: 0x002dfe88,\n\t0x760c: 0xc0030002, 0x760d: 0x002e8288, 0x760e: 0x002e9e88, 0x760f: 0xc33f0071,\n\t0x7610: 0x002f2c88, 0x7611: 0x002e0083, 0x7612: 0x002f7a88, 0x7613: 0xc3430911,\n\t0x7614: 0x00302c88, 0x7615: 0xc3470071, 0x7616: 0x0030be88, 0x7617: 0x0030e288,\n\t0x7618: 0x002d6a83, 0x7619: 0x00310088, 0x761a: 0x00312a88, 0x761b: 0x4003f820,\n\t0x761c: 0x4004e420, 0x761d: 0x4003fa20, 0x761e: 0x40062420, 0x761f: 0x40021620,\n\t0x7620: 0x40061e20, 0x7621: 0x402bde20, 0x7622: 0x402c0a20, 0x7623: 0xc3330911,\n\t0x7624: 0x402c6220, 0x7625: 0x402c9820, 0x7626: 0x402d0820, 0x7627: 0xc33700d1,\n\t0x7628: 0x402d6820, 0x7629: 0x402d9a20, 0x762a: 0x402dcc20, 0x762b: 0x402dfe20,\n\t0x762c: 0xc0000002, 0x762d: 0x402e8220, 0x762e: 0x402e9e20, 0x762f: 0xc33d0071,\n\t0x7630: 0x402f2c20, 0x7631: 0x402e0020, 0x7632: 0x402f7a20, 0x7633: 0xc3410911,\n\t0x7634: 0x40302c20, 0x7635: 0xc3450071, 0x7636: 0x4030be20, 0x7637: 0x4030e220,\n\t0x7638: 0x402d6a20, 0x7639: 0x40310020, 0x763a: 0x40312a20, 0x763b: 0x4003fc20,\n\t0x763c: 0x40094820, 0x763d: 0x4003fe20, 0x763e: 0x40094c20, 0x763f: 0xa0000000,\n\t// Block 0x1d9, offset 0x7640\n\t0x7640: 0xe00008f5, 0x7641: 0xe00008ef, 0x7642: 0xe0000921, 0x7643: 0xe0000969,\n\t0x7644: 0xe000095b, 0x7645: 0xe000094d, 0x7646: 0xe00009dd, 0x7647: 0x002c3c83,\n\t0x7648: 0xe0000ae8, 0x7649: 0xe0000ae2, 0x764a: 0xe0000af4, 0x764b: 0xe0000b20,\n\t0x764c: 0xe0002918, 0x764d: 0xe0002915, 0x764e: 0xe000291e, 0x764f: 0xe0002924,\n\t0x7650: 0xe0000ab3, 0x7651: 0xe0000d63, 0x7652: 0xe0000d9a, 0x7653: 0xe0000d94,\n\t0x7654: 0xe0000da6, 0x7655: 0xe0000de6, 0x7656: 0x002ee483, 0x7657: 0x40093e20,\n\t0x7658: 0xe0000e12, 0x7659: 0xe0000fe1, 0x765a: 0xe0000fdb, 0x765b: 0xe0000fed,\n\t0x765c: 0x00306e83, 0x765d: 0xe0001102, 0x765e: 0x00318888, 0x765f: 0xe0000f7b,\n\t0x7660: 0xe00008f2, 0x7661: 0xe00008ec, 0x7662: 0xe000091e, 0x7663: 0xe0000966,\n\t0x7664: 0xe0000958, 0x7665: 0xe000094a, 0x7666: 0xe00009d5, 0x7667: 0x402c3c20,\n\t0x7668: 0xe0000ae5, 0x7669: 0xe0000adf, 0x766a: 0xe0000af1, 0x766b: 0xe0000b1d,\n\t0x766c: 0xe0000c28, 0x766d: 0xe0000c22, 0x766e: 0xe0000c34, 0x766f: 0xe0000c40,\n\t0x7670: 0xe0000aad, 0x7671: 0xe0000d60, 0x7672: 0xe0000d97, 0x7673: 0xe0000d91,\n\t0x7674: 0xe0000da3, 0x7675: 0xe0000de3, 0x7676: 0x402ee420, 0x7677: 0x40093c20,\n\t0x7678: 0xe0000e0f, 0x7679: 0xe0000fde, 0x767a: 0xe0000fd8, 0x767b: 0xe0000fea,\n\t0x767c: 0x40306e20, 0x767d: 0xe00010ff, 0x767e: 0x40318820, 0x767f: 0xe0001114,\n\t// Block 0x1da, offset 0x7680\n\t0x7680: 0xe0000983, 0x7681: 0xe0000980, 0x7682: 0xe00008fb, 0x7683: 0xe00008f8,\n\t0x7684: 0xe000097d, 0x7685: 0xe000097a, 0x7686: 0xe0000a38, 0x7687: 0xe0000a35,\n\t0x7688: 0xe0000a3e, 0x7689: 0xe0000a3b, 0x768a: 0xe0000a4a, 0x768b: 0xe0000a47,\n\t0x768c: 0xe0000a44, 0x768d: 0xe0000a41, 0x768e: 0xe0000a86, 0x768f: 0xe0000a83,\n\t0x7690: 0xe0000aaa, 0x7691: 0xe0000aa7, 0x7692: 0xe0000b46, 0x7693: 0xe0000b43,\n\t0x7694: 0xe0000aee, 0x7695: 0xe0000aeb, 0x7696: 0xe0000b2c, 0x7697: 0xe0000b29,\n\t0x7698: 0xe0000b40, 0x7699: 0xe0000b3d, 0x769a: 0xe0000b1a, 0x769b: 0xe0000b17,\n\t0x769c: 0xe0000bb8, 0x769d: 0xe0000bb5, 0x769e: 0x002d2483, 0x769f: 0x402d2420,\n\t0x76a0: 0xe0000bc4, 0x76a1: 0xe0000bc1, 0x76a2: 0xe0000bca, 0x76a3: 0xe0000bc7,\n\t0x76a4: 0xe0000bee, 0x76a5: 0xe0000beb, 0x76a6: 0xe0000c1b, 0x76a7: 0xe0000c18,\n\t0x76a8: 0xe000292b, 0x76a9: 0xe0000c4e, 0x76aa: 0xe0002931, 0x76ab: 0xe0000c5d,\n\t0x76ac: 0xe000291b, 0x76ad: 0xe0000c2e, 0x76ae: 0xe000292e, 0x76af: 0xe0000c57,\n\t0x76b0: 0x002d9a83, 0x76b1: 0x402d9820, 0x76b2: 0xe00027e2, 0x76b3: 0xf0000404,\n\t0x76b4: 0xe0000c8a, 0x76b5: 0xe0000c87, 0x76b6: 0xe0000c9f, 0x76b7: 0xe0000c9c,\n\t0x76b8: 0x402f7220, 0x76b9: 0xe0000ccc, 0x76ba: 0xe0000cc9, 0x76bb: 0xe0000cd8,\n\t0x76bc: 0xe0000cd5, 0x76bd: 0xe0000cd2, 0x76be: 0xe0000ccf, 0x76bf: 0xe0000d04,\n\t// Block 0x1db, offset 0x76c0\n\t0x76c0: 0xe0000cfe, 0x76c1: 0xe0000cf8, 0x76c2: 0xe0000cf5, 0x76c3: 0xe0000d51,\n\t0x76c4: 0xe0000d4e, 0x76c5: 0xe0000d6f, 0x76c6: 0xe0000d6c, 0x76c7: 0xe0000d5d,\n\t0x76c8: 0xe0000d5a, 0x76c9: 0xf0000404, 0x76ca: 0x002eda88, 0x76cb: 0x402eda20,\n\t0x76cc: 0xe0000e2e, 0x76cd: 0xe0000e2b, 0x76ce: 0xe0000da0, 0x76cf: 0xe0000d9d,\n\t0x76d0: 0xe0000de0, 0x76d1: 0xe0000ddd, 0x76d2: 0xe0000e93, 0x76d3: 0xe0000e8f,\n\t0x76d4: 0xe0000eca, 0x76d5: 0xe0000ec7, 0x76d6: 0xe0000edc, 0x76d7: 0xe0000ed9,\n\t0x76d8: 0xe0000ed0, 0x76d9: 0xe0000ecd, 0x76da: 0xe0000f1f, 0x76db: 0xe0000f1c,\n\t0x76dc: 0xe0000f2d, 0x76dd: 0xe0000f2a, 0x76de: 0x002fe883, 0x76df: 0x402fe820,\n\t0x76e0: 0xe0000f33, 0x76e1: 0xe0000f30, 0x76e2: 0xe0000f99, 0x76e3: 0xe0000f96,\n\t0x76e4: 0xe0000f8a, 0x76e5: 0xe0000f87, 0x76e6: 0x00303688, 0x76e7: 0x40303620,\n\t0x76e8: 0xe000102b, 0x76e9: 0xe0001028, 0x76ea: 0xe000103f, 0x76eb: 0xe000103c,\n\t0x76ec: 0xe0000fe7, 0x76ed: 0xe0000fe4, 0x76ee: 0xe0000ff9, 0x76ef: 0xe0000ff6,\n\t0x76f0: 0xe0001025, 0x76f1: 0xe0001022, 0x76f2: 0xe0001039, 0x76f3: 0xe0001036,\n\t0x76f4: 0xe00010d8, 0x76f5: 0xe00010d5, 0x76f6: 0xe000110e, 0x76f7: 0xe000110b,\n\t0x76f8: 0xe0001117, 0x76f9: 0xe000113b, 0x76fa: 0xe0001138, 0x76fb: 0xe000114d,\n\t0x76fc: 0xe000114a, 0x76fd: 0xe0001147, 0x76fe: 0xe0001144, 0x76ff: 0xe0000f64,\n\t// Block 0x1dc, offset 0x7700\n\t0x7700: 0x402c1a20, 0x7701: 0x002c2a88, 0x7702: 0x002c3288, 0x7703: 0x402c3220,\n\t0x7704: 0x0031c488, 0x7705: 0x4031c420, 0x7706: 0x002efa88, 0x7707: 0x002c4e88,\n\t0x7708: 0x402c4e20, 0x7709: 0x002c7288, 0x770a: 0x002c7a88, 0x770b: 0x002c8488,\n\t0x770c: 0x402c8420, 0x770d: 0xe000115c, 0x770e: 0x002cae88, 0x770f: 0x002c9a83,\n\t0x7710: 0x002cc288, 0x7711: 0x002d1688, 0x7712: 0x402d1620, 0x7713: 0x002d4488,\n\t0x7714: 0x002d5888, 0x7715: 0x402d7820, 0x7716: 0x002dc288, 0x7717: 0x002db688,\n\t0x7718: 0x002e0a88, 0x7719: 0x402e0a20, 0x771a: 0x402e3820, 0x771b: 0x402e7220,\n\t0x771c: 0x0030a088, 0x771d: 0x002eb488, 0x771e: 0x402ebc20, 0x771f: 0x002f1088,\n\t0x7720: 0xe0000e56, 0x7721: 0xe0000e53, 0x7722: 0x002d6088, 0x7723: 0x402d6020,\n\t0x7724: 0x002f3e88, 0x7725: 0x402f3e20, 0x7726: 0x002f8288, 0x7727: 0x0031b488,\n\t0x7728: 0x4031b420, 0x7729: 0x00300888, 0x772a: 0x40301220, 0x772b: 0x40304220,\n\t0x772c: 0x00304a88, 0x772d: 0x40304a20, 0x772e: 0x00305288, 0x772f: 0xe000105f,\n\t0x7730: 0xe000105c, 0x7731: 0x0030b488, 0x7732: 0x0030cc88, 0x7733: 0x00311888,\n\t0x7734: 0x40311820, 0x7735: 0x00313488, 0x7736: 0x40313420, 0x7737: 0x00316488,\n\t0x7738: 0x00316e88, 0x7739: 0x40316e20, 0x773a: 0x40317820, 0x773b: 0x4031a620,\n\t0x773c: 0x0031bc88, 0x773d: 0x4031bc20, 0x773e: 0xe0000fc9, 0x773f: 0x40319420,\n\t// Block 0x1dd, offset 0x7740\n\t0x7740: 0x40321220, 0x7741: 0x40321a20, 0x7742: 0x40322220, 0x7743: 0x40322a20,\n\t0x7744: 0xe0000ad5, 0x7745: 0xe0000ad1, 0x7746: 0xe0000acd, 0x7747: 0xf0000a0a,\n\t0x7748: 0xf000040a, 0x7749: 0xf0000404, 0x774a: 0xf0000a0a, 0x774b: 0xf000040a,\n\t0x774c: 0xf0000404, 0x774d: 0xe0000947, 0x774e: 0xe0000944, 0x774f: 0xe0002921,\n\t0x7750: 0xe0000c3a, 0x7751: 0xe0000dcc, 0x7752: 0xe0000dc9, 0x7753: 0xe0000ff3,\n\t0x7754: 0xe0000ff0, 0x7755: 0xe0002964, 0x7756: 0xe0002961, 0x7757: 0xe0002952,\n\t0x7758: 0xe000294f, 0x7759: 0xe000295e, 0x775a: 0xe000295b, 0x775b: 0xe0002958,\n\t0x775c: 0xe0002955, 0x775d: 0x402cae20, 0x775e: 0xe0000962, 0x775f: 0xe000095e,\n\t0x7760: 0xe0000976, 0x7761: 0xe0000972, 0x7762: 0xe00009f4, 0x7763: 0xe00009ef,\n\t0x7764: 0x002d3a88, 0x7765: 0x402d3a20, 0x7766: 0xe0000bbe, 0x7767: 0xe0000bbb,\n\t0x7768: 0xe0000c99, 0x7769: 0xe0000c96, 0x776a: 0xe0000e20, 0x776b: 0xe0000e1d,\n\t0x776c: 0xe0000e27, 0x776d: 0xe0000e23, 0x776e: 0xe0001162, 0x776f: 0xe000115f,\n\t0x7770: 0xe0000c8d, 0x7771: 0xf0000a0a, 0x7772: 0xf000040a, 0x7773: 0xf0000404,\n\t0x7774: 0xe0000bac, 0x7775: 0xe0000ba9, 0x7776: 0x002d7888, 0x7777: 0x00319488,\n\t0x7778: 0xe0000d57, 0x7779: 0xe0000d54, 0x777a: 0xe0000954, 0x777b: 0xe0000950,\n\t0x777c: 0xe00009ea, 0x777d: 0xe00009e5, 0x777e: 0xe0000e19, 0x777f: 0xe0000e15,\n\t// Block 0x1de, offset 0x7780\n\t0x7780: 0xe000098f, 0x7781: 0xe000098c, 0x7782: 0xe0000995, 0x7783: 0xe0000992,\n\t0x7784: 0xe0000b62, 0x7785: 0xe0000b5f, 0x7786: 0xe0000b68, 0x7787: 0xe0000b65,\n\t0x7788: 0xe0002937, 0x7789: 0xe0000c69, 0x778a: 0xe000293a, 0x778b: 0xe0000c6f,\n\t0x778c: 0xe0000e4a, 0x778d: 0xe0000e47, 0x778e: 0xe0000e50, 0x778f: 0xe0000e4d,\n\t0x7790: 0xe0000ee8, 0x7791: 0xe0000ee5, 0x7792: 0xe0000eee, 0x7793: 0xe0000eeb,\n\t0x7794: 0xe0001053, 0x7795: 0xe0001050, 0x7796: 0xe0001059, 0x7797: 0xe0001056,\n\t0x7798: 0xe0000f61, 0x7799: 0xe0000f5e, 0x779a: 0xe0000fa5, 0x779b: 0xe0000fa2,\n\t0x779c: 0x00312288, 0x779d: 0x40312220, 0x779e: 0xe0000bf4, 0x779f: 0xe0000bf1,\n\t0x77a0: 0x002ebc88, 0x77a1: 0x402c8c20, 0x77a2: 0x002f2288, 0x77a3: 0x402f2220,\n\t0x77a4: 0x00314088, 0x77a5: 0x40314020, 0x77a6: 0xe000096f, 0x77a7: 0xe000096c,\n\t0x77a8: 0xe0000b32, 0x77a9: 0xe0000b2f, 0x77aa: 0xe000294c, 0x77ab: 0xe0002949,\n\t0x77ac: 0xe0000dfd, 0x77ad: 0xe0000df9, 0x77ae: 0xe0000e04, 0x77af: 0xe0000e01,\n\t0x77b0: 0xe0000e0b, 0x77b1: 0xe0000e07, 0x77b2: 0xe0001129, 0x77b3: 0xe0001126,\n\t0x77b4: 0x402e5e20, 0x77b5: 0x402ed020, 0x77b6: 0x40305a20, 0x77b7: 0x402dd420,\n\t0x77b8: 0xe0000abf, 0x77b9: 0xe0000ec4, 0x77ba: 0x002be888, 0x77bb: 0x002c4488,\n\t0x77bc: 0x402c4420, 0x77bd: 0x002e3888, 0x77be: 0x00303e88, 0x77bf: 0x402ffc20,\n\t// Block 0x1df, offset 0x77c0\n\t0x77c0: 0x40315820, 0x77c1: 0x0031d488, 0x77c2: 0x4031d420, 0x77c3: 0x002c1a88,\n\t0x77c4: 0x00307c88, 0x77c5: 0x0030da88, 0x77c6: 0x002ca288, 0x77c7: 0x402ca220,\n\t0x77c8: 0x002dde88, 0x77c9: 0x402dde20, 0x77ca: 0x002f6a88, 0x77cb: 0x402f6a20,\n\t0x77cc: 0x002f8e88, 0x77cd: 0x402f8e20, 0x77ce: 0x00311088, 0x77cf: 0x40311020,\n\t0x77d0: 0x402bf020, 0x77d1: 0x402bf820, 0x77d2: 0x402c0220, 0x77d3: 0x402c2a20,\n\t0x77d4: 0x402efa20, 0x77d5: 0x402c5620, 0x77d6: 0x402c7220, 0x77d7: 0x402c7a20,\n\t0x77d8: 0x402ccc20, 0x77d9: 0x402c9a20, 0x77da: 0x402cd420, 0x77db: 0x402cc220,\n\t0x77dc: 0x402cdc20, 0x77dd: 0x402ce820, 0x77de: 0x402cf020, 0x77df: 0x402dee20,\n\t0x77e0: 0x402d4420, 0x77e1: 0x402d2a20, 0x77e2: 0x402d3220, 0x77e3: 0x402d5820,\n\t0x77e4: 0x402d0020, 0x77e5: 0x40308820, 0x77e6: 0x402d8020, 0x77e7: 0x402d8e20,\n\t0x77e8: 0x402db620, 0x77e9: 0x402dc220, 0x77ea: 0x402daa20, 0x77eb: 0x402e4220,\n\t0x77ec: 0x402e4a20, 0x77ed: 0x402e5420, 0x77ee: 0x402e6820, 0x77ef: 0x4030a020,\n\t0x77f0: 0x4030ac20, 0x77f1: 0x402e9020, 0x77f2: 0x402eb420, 0x77f3: 0x402ec820,\n\t0x77f4: 0x402ea620, 0x77f5: 0x402f1020, 0x77f6: 0x402eee20, 0x77f7: 0x402f1a20,\n\t0x77f8: 0x402f4c20, 0x77f9: 0x402f9820, 0x77fa: 0x402fa220, 0x77fb: 0x402fac20,\n\t0x77fc: 0x402fb620, 0x77fd: 0x402fbe20, 0x77fe: 0x402fc620, 0x77ff: 0x402fd020,\n\t// Block 0x1e0, offset 0x7800\n\t0x7800: 0xe00009b1, 0x7801: 0xe00009ae, 0x7802: 0xe0000a22, 0x7803: 0xe0000a1f,\n\t0x7804: 0xe0000a28, 0x7805: 0xe0000a25, 0x7806: 0xe0000a2e, 0x7807: 0xe0000a2b,\n\t0x7808: 0xe000260e, 0x7809: 0xe000260b, 0x780a: 0xe0000a8c, 0x780b: 0xe0000a89,\n\t0x780c: 0xe0000a98, 0x780d: 0xe0000a95, 0x780e: 0xe0000aa4, 0x780f: 0xe0000aa1,\n\t0x7810: 0xe0000a92, 0x7811: 0xe0000a8f, 0x7812: 0xe0000a9e, 0x7813: 0xe0000a9b,\n\t0x7814: 0xe0000b55, 0x7815: 0xe0000b51, 0x7816: 0xe0000b4d, 0x7817: 0xe0000b49,\n\t0x7818: 0xe0000b7c, 0x7819: 0xe0000b79, 0x781a: 0xe0000b82, 0x781b: 0xe0000b7f,\n\t0x781c: 0xe0000b39, 0x781d: 0xe0000b35, 0x781e: 0xe0000b8c, 0x781f: 0xe0000b89,\n\t0x7820: 0xe0000bd0, 0x7821: 0xe0000bcd, 0x7822: 0xe0000c00, 0x7823: 0xe0000bfd,\n\t0x7824: 0xe0000c0c, 0x7825: 0xe0000c09, 0x7826: 0xe0000bfa, 0x7827: 0xe0000bf7,\n\t0x7828: 0xe0000c06, 0x7829: 0xe0000c03, 0x782a: 0xe0000c12, 0x782b: 0xe0000c0f,\n\t0x782c: 0xe0002940, 0x782d: 0xe0000c7b, 0x782e: 0xe0002927, 0x782f: 0xe0000c46,\n\t0x7830: 0xe0000c93, 0x7831: 0xe0000c90, 0x7832: 0xe0000cab, 0x7833: 0xe0000ca8,\n\t0x7834: 0xe0000cb1, 0x7835: 0xe0000cae, 0x7836: 0xe0000cde, 0x7837: 0xe0000cdb,\n\t0x7838: 0xe0000ce5, 0x7839: 0xe0000ce1, 0x783a: 0xe0000cf2, 0x783b: 0xe0000cef,\n\t0x783c: 0xe0000cec, 0x783d: 0xe0000ce9, 0x783e: 0xe0000d1e, 0x783f: 0xe0000d1b,\n\t// Block 0x1e1, offset 0x7840\n\t0x7840: 0xe0000d24, 0x7841: 0xe0000d21, 0x7842: 0xe0000d2a, 0x7843: 0xe0000d27,\n\t0x7844: 0xe0000d69, 0x7845: 0xe0000d66, 0x7846: 0xe0000d7b, 0x7847: 0xe0000d78,\n\t0x7848: 0xe0000d87, 0x7849: 0xe0000d84, 0x784a: 0xe0000d81, 0x784b: 0xe0000d7e,\n\t0x784c: 0xe0000ded, 0x784d: 0xe0000de9, 0x784e: 0xe0002946, 0x784f: 0xe0002943,\n\t0x7850: 0xe0000e3d, 0x7851: 0xe0000e39, 0x7852: 0xe0000e35, 0x7853: 0xe0000e31,\n\t0x7854: 0xe0000ea7, 0x7855: 0xe0000ea4, 0x7856: 0xe0000ead, 0x7857: 0xe0000eaa,\n\t0x7858: 0xe0000ed6, 0x7859: 0xe0000ed3, 0x785a: 0xe0000ef4, 0x785b: 0xe0000ef1,\n\t0x785c: 0xe0000efb, 0x785d: 0xe0000ef7, 0x785e: 0xe0000f02, 0x785f: 0xe0000eff,\n\t0x7860: 0xe0000f41, 0x7861: 0xe0000f3e, 0x7862: 0xe0000f53, 0x7863: 0xe0000f50,\n\t0x7864: 0xe0000f26, 0x7865: 0xe0000f22, 0x7866: 0xe0000f3a, 0x7867: 0xe0000f36,\n\t0x7868: 0xe0000f5a, 0x7869: 0xe0000f56, 0x786a: 0xe0000f93, 0x786b: 0xe0000f90,\n\t0x786c: 0xe0000f9f, 0x786d: 0xe0000f9c, 0x786e: 0xe0000fb1, 0x786f: 0xe0000fae,\n\t0x7870: 0xe0000fab, 0x7871: 0xe0000fa8, 0x7872: 0xe0001093, 0x7873: 0xe0001090,\n\t0x7874: 0xe000109f, 0x7875: 0xe000109c, 0x7876: 0xe0001099, 0x7877: 0xe0001096,\n\t0x7878: 0xe0001032, 0x7879: 0xe000102e, 0x787a: 0xe0002964, 0x787b: 0xe0002961,\n\t0x787c: 0xe00010a9, 0x787d: 0xe00010a6, 0x787e: 0xe00010af, 0x787f: 0xe00010ac,\n\t// Block 0x1e2, offset 0x7880\n\t0x7880: 0xe00010d2, 0x7881: 0xe00010cf, 0x7882: 0xe00010cc, 0x7883: 0xe00010c9,\n\t0x7884: 0xe00010e1, 0x7885: 0xe00010de, 0x7886: 0xe00010e7, 0x7887: 0xe00010e4,\n\t0x7888: 0xe00010ed, 0x7889: 0xe00010ea, 0x788a: 0xe0002912, 0x788b: 0xe000290f,\n\t0x788c: 0xe000290c, 0x788d: 0xe0002909, 0x788e: 0xe0001123, 0x788f: 0xe0001120,\n\t0x7890: 0xe0001141, 0x7891: 0xe000113e, 0x7892: 0xe0001153, 0x7893: 0xe0001150,\n\t0x7894: 0xe0001159, 0x7895: 0xe0001156, 0x7896: 0xe0000c15, 0x7897: 0xe0000f8d,\n\t0x7898: 0xe00010db, 0x7899: 0xe0001111, 0x789a: 0xf0000404, 0x789b: 0xe0000f70,\n\t0x789c: 0x40300420, 0x789d: 0x40300620, 0x789e: 0xe0000f7f, 0x789f: 0x402c9620,\n\t0x78a0: 0xe000099b, 0x78a1: 0xe0000998, 0x78a2: 0xe0000989, 0x78a3: 0xe0000986,\n\t0x78a4: 0xe0000928, 0x78a5: 0xe0000924, 0x78a6: 0xe0000930, 0x78a7: 0xe000092c,\n\t0x78a8: 0xe0000940, 0x78a9: 0xe000093c, 0x78aa: 0xe0000938, 0x78ab: 0xe0000934,\n\t0x78ac: 0xe00009aa, 0x78ad: 0xe00009a6, 0x78ae: 0xe0000902, 0x78af: 0xe00008fe,\n\t0x78b0: 0xe000090a, 0x78b1: 0xe0000906, 0x78b2: 0xe000091a, 0x78b3: 0xe0000916,\n\t0x78b4: 0xe0000912, 0x78b5: 0xe000090e, 0x78b6: 0xe00009a2, 0x78b7: 0xe000099e,\n\t0x78b8: 0xe0000b6e, 0x78b9: 0xe0000b6b, 0x78ba: 0xe0000b5c, 0x78bb: 0xe0000b59,\n\t0x78bc: 0xe0000b26, 0x78bd: 0xe0000b23, 0x78be: 0xe0000afb, 0x78bf: 0xe0000af7,\n\t// Block 0x1e3, offset 0x78c0\n\t0x78c0: 0xe0000b03, 0x78c1: 0xe0000aff, 0x78c2: 0xe0000b13, 0x78c3: 0xe0000b0f,\n\t0x78c4: 0xe0000b0b, 0x78c5: 0xe0000b07, 0x78c6: 0xe0000b75, 0x78c7: 0xe0000b71,\n\t0x78c8: 0xe0002934, 0x78c9: 0xe0000c63, 0x78ca: 0xe000293d, 0x78cb: 0xe0000c75,\n\t0x78cc: 0xe0000e84, 0x78cd: 0xe0000e81, 0x78ce: 0xe0000e44, 0x78cf: 0xe0000e41,\n\t0x78d0: 0xe0000dad, 0x78d1: 0xe0000da9, 0x78d2: 0xe0000db5, 0x78d3: 0xe0000db1,\n\t0x78d4: 0xe0000dc5, 0x78d5: 0xe0000dc1, 0x78d6: 0xe0000dbd, 0x78d7: 0xe0000db9,\n\t0x78d8: 0xe0000e8b, 0x78d9: 0xe0000e87, 0x78da: 0xe0000e5d, 0x78db: 0xe0000e59,\n\t0x78dc: 0xe0000e65, 0x78dd: 0xe0000e61, 0x78de: 0xe0000e75, 0x78df: 0xe0000e71,\n\t0x78e0: 0xe0000e6d, 0x78e1: 0xe0000e69, 0x78e2: 0xe0000e7d, 0x78e3: 0xe0000e79,\n\t0x78e4: 0xe000108d, 0x78e5: 0xe000108a, 0x78e6: 0xe000104d, 0x78e7: 0xe000104a,\n\t0x78e8: 0xe0001066, 0x78e9: 0xe0001062, 0x78ea: 0xe000106e, 0x78eb: 0xe000106a,\n\t0x78ec: 0xe000107e, 0x78ed: 0xe000107a, 0x78ee: 0xe0001076, 0x78ef: 0xe0001072,\n\t0x78f0: 0xe0001086, 0x78f1: 0xe0001082, 0x78f2: 0xe0001108, 0x78f3: 0xe0001105,\n\t0x78f4: 0xe0001135, 0x78f5: 0xe0001132, 0x78f6: 0xe000112f, 0x78f7: 0xe000112c,\n\t0x78f8: 0xe000111d, 0x78f9: 0xe000111a, 0x78fa: 0xe0000d0a, 0x78fb: 0xe0000d07,\n\t0x78fc: 0x0030d888, 0x78fd: 0x4030d820, 0x78fe: 0x00312088, 0x78ff: 0x40312020,\n\t// Block 0x1e4, offset 0x7900\n\t0x7900: 0x00093685, 0x7901: 0x40083620, 0x7902: 0x40083820, 0x7903: 0x40083a20,\n\t0x7904: 0x40083c20, 0x7905: 0x002c628b, 0x7906: 0x002c6285, 0x7907: 0x002c9885,\n\t0x7908: 0x002d9a85, 0x7909: 0x002dcc85, 0x790a: 0x40083e20, 0x790b: 0x400a6e20,\n\t0x790c: 0x40084020, 0x790d: 0xe00009c4, 0x790e: 0x402d1e20, 0x790f: 0x40084220,\n\t0x7910: 0xe00002cb, 0x7911: 0xe00002d3, 0x7912: 0xe00002b2, 0x7913: 0xe00002bb,\n\t0x7914: 0xe00003cd, 0x7915: 0xe00002c3, 0x7916: 0xe00003d1, 0x7917: 0xe00004ab,\n\t0x7918: 0xe0000579, 0x7919: 0xe00002c7, 0x791a: 0xe0000640, 0x791b: 0xe00002cf,\n\t0x791c: 0xe00004af, 0x791d: 0xe0000644, 0x791e: 0xe0000798, 0x791f: 0xf0001e1e,\n\t0x7920: 0x002d9a8a, 0x7921: 0xe00027d4, 0x7922: 0xe00027db, 0x7923: 0xe00027ee,\n\t0x7924: 0x0030be8a, 0x7925: 0xe0002848, 0x7926: 0xe000284f, 0x7927: 0xe00010bb,\n\t0x7928: 0xe00027f4, 0x7929: 0x0030f68a, 0x792a: 0xe0002883, 0x792b: 0xe000288a,\n\t0x792c: 0x002e228a, 0x792d: 0x002c3a8a, 0x792e: 0x002c628a, 0x792f: 0x002e828a,\n\t0x7930: 0x002d9a84, 0x7931: 0xf0001f04, 0x7932: 0xf0000404, 0x7933: 0xf0001f04,\n\t0x7934: 0x0030be84, 0x7935: 0xf0001f04, 0x7936: 0xf0000404, 0x7937: 0xe00010b6,\n\t0x7938: 0xe00027f1, 0x7939: 0x0030f684, 0x793a: 0xe0002880, 0x793b: 0xe0002886,\n\t0x793c: 0x002e2284, 0x793d: 0x002c3a84, 0x793e: 0x002c6284, 0x793f: 0x002e8284,\n\t// Block 0x1e5, offset 0x7940\n\t0x7940: 0xe0000024, 0x7941: 0xe0000029, 0x7942: 0xe000002e, 0x7943: 0xe0000033,\n\t0x7944: 0xe0000038, 0x7945: 0xe000003d, 0x7946: 0xe0000042, 0x7947: 0xe0000047,\n\t0x7948: 0xf0001f04, 0x7949: 0xf0001f04, 0x794a: 0xf0001f04, 0x794b: 0xf0001f04,\n\t0x794c: 0xf0001f04, 0x794d: 0xf0001f04, 0x794e: 0xf0001f04, 0x794f: 0xf0001f04,\n\t0x7950: 0xf0001f04, 0x7951: 0xf0000404, 0x7952: 0xf0000404, 0x7953: 0xf0000404,\n\t0x7954: 0xf0000404, 0x7955: 0xf0000404, 0x7956: 0xf0000404, 0x7957: 0xf0000404,\n\t0x7958: 0xf0000404, 0x7959: 0xf0000404, 0x795a: 0xf0000404, 0x795b: 0xf0000404,\n\t0x795c: 0xf0000404, 0x795d: 0xf0000404, 0x795e: 0xf0000404, 0x795f: 0xf0000404,\n\t0x7960: 0xf0000404, 0x7961: 0xf0000404, 0x7962: 0xf0000404, 0x7963: 0xf0000404,\n\t0x7964: 0xf0000404, 0x7965: 0xf0000404, 0x7966: 0xf0000404, 0x7967: 0xf0000404,\n\t0x7968: 0xf0000404, 0x7969: 0xf0000404, 0x796a: 0xf0000404, 0x796b: 0xf0000404,\n\t0x796c: 0xe00024c7, 0x796d: 0xf0000404, 0x796e: 0xf0000404, 0x796f: 0xf0000404,\n\t0x7970: 0xf0000404, 0x7971: 0xf0000404, 0x7972: 0xf0000404, 0x7973: 0xe00024e7,\n\t0x7974: 0xf0000404, 0x7975: 0xf0000404, 0x7976: 0x002bde8c, 0x7977: 0x002c0a8c,\n\t0x7978: 0x002c3a8c, 0x7979: 0x002c628c, 0x797a: 0x002c988c, 0x797b: 0x002d088c,\n\t0x797c: 0x002d228c, 0x797d: 0x002d688c, 0x797e: 0x002d9a8c, 0x797f: 0x002dcc8c,\n\t// Block 0x1e6, offset 0x7980\n\t0x7980: 0xe000230b, 0x7981: 0xe00022f8, 0x7982: 0xe00022fc, 0x7983: 0xe0002311,\n\t0x7984: 0xe0002316, 0x7985: 0xe000231d, 0x7986: 0xe0002321, 0x7987: 0xe0002325,\n\t0x7988: 0xe000232b, 0x7989: 0xf0001c1c, 0x798a: 0xe0002330, 0x798b: 0xe000233c,\n\t0x798c: 0xe0002340, 0x798d: 0xe0002337, 0x798e: 0xe0002346, 0x798f: 0xe000234b,\n\t0x7990: 0xe000234f, 0x7991: 0xe0002353, 0x7992: 0xf0001c1c, 0x7993: 0xe000235e,\n\t0x7994: 0xe0002358, 0x7995: 0xf0001c1c, 0x7996: 0xe0002363, 0x7997: 0xe000236d,\n\t0x7998: 0xf0001f04, 0x7999: 0xf0001f04, 0x799a: 0xf0001f04, 0x799b: 0xf0001f04,\n\t0x799c: 0xf0001f04, 0x799d: 0xf0001f04, 0x799e: 0xf0001f04, 0x799f: 0xf0001f04,\n\t0x79a0: 0xf0001f04, 0x79a1: 0xf0001f04, 0x79a2: 0xf0000404, 0x79a3: 0xf0000404,\n\t0x79a4: 0xf0000404, 0x79a5: 0xf0000404, 0x79a6: 0xf0000404, 0x79a7: 0xf0000404,\n\t0x79a8: 0xf0000404, 0x79a9: 0xf0000404, 0x79aa: 0xf0000404, 0x79ab: 0xf0000404,\n\t0x79ac: 0xf0000404, 0x79ad: 0xf0000404, 0x79ae: 0xf0000404, 0x79af: 0xf0000404,\n\t0x79b0: 0xf0000404, 0x79b1: 0xe0000c1e, 0x79b2: 0xf0001c1c, 0x79b3: 0xf0001d1d,\n\t0x79b4: 0xe0000a31, 0x79b5: 0xf0001d1c, 0x79b6: 0xf0001c1c, 0x79b7: 0xf0001c1c,\n\t0x79b8: 0xe0000ac2, 0x79b9: 0xe0000ac6, 0x79ba: 0xe00027e8, 0x79bb: 0xf0001c1c,\n\t0x79bc: 0xf0001c1c, 0x79bd: 0xf0001c1c, 0x79be: 0xf0001c1c, 0x79bf: 0xe0002431,\n\t// Block 0x1e7, offset 0x79c0\n\t0x79c0: 0xf0001d1c, 0x79c1: 0xf0001d1d, 0x79c2: 0xe00009b7, 0x79c3: 0xe00024f3,\n\t0x79c4: 0xf0001c1c, 0x79c5: 0xf0001c1c, 0x79c6: 0xe0000a66, 0x79c7: 0xe0000a7a,\n\t0x79c8: 0xf0001d1c, 0x79c9: 0xf0001c1d, 0x79ca: 0xf0001c1c, 0x79cb: 0xf0001d1d,\n\t0x79cc: 0xf0001c1c, 0x79cd: 0xf0001d1d, 0x79ce: 0xf0001d1d, 0x79cf: 0xf0001c1c,\n\t0x79d0: 0xf0001c1c, 0x79d1: 0xf0001c1c, 0x79d2: 0xe0000d0d, 0x79d3: 0xe0002818,\n\t0x79d4: 0xf0001c1c, 0x79d5: 0xe0000d3a, 0x79d6: 0xe0000d46, 0x79d7: 0xf0001d1d,\n\t0x79d8: 0xe0000eb0, 0x79d9: 0xe0000eb8, 0x79da: 0xf0001d1d, 0x79db: 0xf0001c1c,\n\t0x79dc: 0xf0001c1d, 0x79dd: 0xf0001c1d, 0x79de: 0xe00010b2, 0x79df: 0xe00009c8,\n\t0x79e0: 0xf0001f04, 0x79e1: 0xf0001f04, 0x79e2: 0xf0001f04, 0x79e3: 0xf0001f04,\n\t0x79e4: 0xf0001f04, 0x79e5: 0xf0001f04, 0x79e6: 0xf0001f04, 0x79e7: 0xf0001f04,\n\t0x79e8: 0xf0001f04, 0x79e9: 0xf0000404, 0x79ea: 0xf0000404, 0x79eb: 0xf0000404,\n\t0x79ec: 0xf0000404, 0x79ed: 0xf0000404, 0x79ee: 0xf0000404, 0x79ef: 0xf0000404,\n\t0x79f0: 0xf0000404, 0x79f1: 0xf0000404, 0x79f2: 0xf0000404, 0x79f3: 0xf0000404,\n\t0x79f4: 0xf0000404, 0x79f5: 0xf0000404, 0x79f6: 0xf0000404, 0x79f7: 0xf0000404,\n\t0x79f8: 0xf0000404, 0x79f9: 0xf0000404, 0x79fa: 0xf0000404, 0x79fb: 0xf0000404,\n\t0x79fc: 0xf0000404, 0x79fd: 0xf0000404, 0x79fe: 0xf0000404, 0x79ff: 0xe0000bdf,\n\t// Block 0x1e8, offset 0x7a00\n\t0x7a00: 0xf0001f04, 0x7a01: 0xf0001f04, 0x7a02: 0xf0001f04, 0x7a03: 0xf0001f04,\n\t0x7a04: 0xf0001f04, 0x7a05: 0xf0001f04, 0x7a06: 0xf0001f04, 0x7a07: 0xf0001f04,\n\t0x7a08: 0xf0001f04, 0x7a09: 0xf0001f04, 0x7a0a: 0xf0001f04,\n\t0x7a10: 0xf0000a04, 0x7a11: 0xf0000a04, 0x7a12: 0xf0000a04, 0x7a13: 0xf0000a04,\n\t0x7a14: 0xf0000a04, 0x7a15: 0xf0000a04, 0x7a16: 0xf0000a04, 0x7a17: 0xf0000a04,\n\t0x7a18: 0xe00024b3, 0x7a19: 0xf0000a04, 0x7a1a: 0xf0000a04, 0x7a1b: 0xf0000a04,\n\t0x7a1c: 0xf0000a04, 0x7a1d: 0xf0000a04, 0x7a1e: 0xf0000a04, 0x7a1f: 0xf0000a04,\n\t0x7a20: 0xe00024cb, 0x7a21: 0xf0000a04, 0x7a22: 0xf0000a04, 0x7a23: 0xf0000a04,\n\t0x7a24: 0xf0000a04, 0x7a25: 0xf0000a04, 0x7a26: 0xf0000a04, 0x7a27: 0xe00024eb,\n\t0x7a28: 0xf0000a04, 0x7a29: 0xf0000a04, 0x7a2a: 0xf0000a04, 0x7a2b: 0x002c3a8c,\n\t0x7a2c: 0x002f7a8c, 0x7a2d: 0xf0000c0c, 0x7a2e: 0xf0000c0c,\n\t0x7a30: 0x002bde9d, 0x7a31: 0x002c0a9d, 0x7a32: 0x002c3a9d, 0x7a33: 0x002c629d,\n\t0x7a34: 0x002c989d, 0x7a35: 0x002d089d, 0x7a36: 0x002d229d, 0x7a37: 0x002d689d,\n\t0x7a38: 0x002d9a9d, 0x7a39: 0x002dcc9d, 0x7a3a: 0x002dfe9d, 0x7a3b: 0x002e229d,\n\t0x7a3c: 0x002e829d, 0x7a3d: 0x002e9e9d, 0x7a3e: 0x002ee29d, 0x7a3f: 0x002f2c9d,\n\t// Block 0x1e9, offset 0x7a40\n\t0x7a40: 0xe00014bd, 0x7a41: 0x0033b483, 0x7a42: 0x00339688, 0x7a43: 0x0033a288,\n\t0x7a44: 0x0033c288, 0x7a45: 0x0033fc88, 0x7a46: 0xc02a0071, 0x7a47: 0x00343688,\n\t0x7a48: 0x00344688, 0x7a49: 0x00349a88, 0x7a4a: 0x0034e488, 0x7a4b: 0x00356288,\n\t0x7a4c: 0x00356a88, 0x7a4d: 0xe00014cf, 0x7a4e: 0x00357a88, 0x7a4f: 0x00365488,\n\t0x7a50: 0xc0090041, 0x7a51: 0x00335288, 0x7a52: 0x00335a88, 0x7a53: 0xc0130092,\n\t0x7a54: 0x00338a88, 0x7a55: 0xc34c0041, 0x7a56: 0xc01c0071, 0x7a57: 0xc0200071,\n\t0x7a58: 0xc0250041, 0x7a59: 0x00343e88, 0x7a5a: 0xc0370092, 0x7a5b: 0x00348488,\n\t0x7a5c: 0x0034a888, 0x7a5d: 0x0034ba88, 0x7a5e: 0xc02e0071, 0x7a5f: 0x00350e88,\n\t0x7a60: 0x00352888, 0x7a61: 0x00353a88, 0x7a62: 0x00354c88, 0x7a63: 0xc03e00f1,\n\t0x7a64: 0x0035ac88, 0x7a65: 0x0035b488, 0x7a66: 0x00360288, 0x7a67: 0xc0440071,\n\t0x7a68: 0x00365c88, 0x7a69: 0x00366688, 0x7a6a: 0x00367488, 0x7a6b: 0xc0480071,\n\t0x7a6c: 0x00368e88, 0x7a6d: 0xc04c0071, 0x7a6e: 0x0036b888, 0x7a6f: 0x0036c488,\n\t0x7a70: 0xc0060041, 0x7a71: 0x40335220, 0x7a72: 0x40335a20, 0x7a73: 0xc0100092,\n\t0x7a74: 0x40338a20, 0x7a75: 0xc3490041, 0x7a76: 0xc01a0071, 0x7a77: 0xc01e0071,\n\t0x7a78: 0xc0220041, 0x7a79: 0x40343e20, 0x7a7a: 0xc0340092, 0x7a7b: 0x40348420,\n\t0x7a7c: 0x4034a820, 0x7a7d: 0x4034ba20, 0x7a7e: 0xc02c0071, 0x7a7f: 0x40350e20,\n\t// Block 0x1ea, offset 0x7a80\n\t0x7a80: 0x40352820, 0x7a81: 0x40353a20, 0x7a82: 0x40354c20, 0x7a83: 0xc03a00f1,\n\t0x7a84: 0x4035ac20, 0x7a85: 0x4035b420, 0x7a86: 0x40360220, 0x7a87: 0xc0420071,\n\t0x7a88: 0x40365c20, 0x7a89: 0x40366620, 0x7a8a: 0x40367420, 0x7a8b: 0xc0460071,\n\t0x7a8c: 0x40368e20, 0x7a8d: 0xc04a0071, 0x7a8e: 0x4036b820, 0x7a8f: 0x4036c420,\n\t0x7a90: 0xe00014ba, 0x7a91: 0x4033b420, 0x7a92: 0x40339620, 0x7a93: 0x4033a220,\n\t0x7a94: 0x4033c220, 0x7a95: 0x4033fc20, 0x7a96: 0xc0280071, 0x7a97: 0x40343620,\n\t0x7a98: 0x40344620, 0x7a99: 0x40349a20, 0x7a9a: 0x4034e420, 0x7a9b: 0x40356220,\n\t0x7a9c: 0x40356a20, 0x7a9d: 0xe00014cc, 0x7a9e: 0x40357a20, 0x7a9f: 0x40365420,\n\t0x7aa0: 0x0035e088, 0x7aa1: 0x4035e020, 0x7aa2: 0x00369e88, 0x7aa3: 0x40369e20,\n\t0x7aa4: 0x0036ce88, 0x7aa5: 0x4036ce20, 0x7aa6: 0x0036d688, 0x7aa7: 0x4036d620,\n\t0x7aa8: 0x0036ea88, 0x7aa9: 0x4036ea20, 0x7aaa: 0x0036e088, 0x7aab: 0x4036e020,\n\t0x7aac: 0x0036f488, 0x7aad: 0x4036f420, 0x7aae: 0x0036fc88, 0x7aaf: 0x4036fc20,\n\t0x7ab0: 0x00370488, 0x7ab1: 0x40370420, 0x7ab2: 0x00370c88, 0x7ab3: 0x40370c20,\n\t0x7ab4: 0xc0500131, 0x7ab5: 0xc04e0131, 0x7ab6: 0x00371c88, 0x7ab7: 0x40371c20,\n\t0x7ab8: 0x0035a488, 0x7ab9: 0x4035a420, 0x7aba: 0x0035fa88, 0x7abb: 0x4035fa20,\n\t0x7abc: 0x0035f288, 0x7abd: 0x4035f220, 0x7abe: 0x0035e888, 0x7abf: 0x4035e820,\n\t// Block 0x1eb, offset 0x7ac0\n\t0x7ac1: 0x40409c20, 0x7ac2: 0x40409820, 0x7ac3: 0x40409a20,\n\t0x7ac5: 0x40407c20, 0x7ac6: 0x40407e20, 0x7ac7: 0x40408020,\n\t0x7ac8: 0x40408220, 0x7ac9: 0x40408420, 0x7aca: 0x40408620, 0x7acb: 0x40408820,\n\t0x7acc: 0x40408c20, 0x7acf: 0x40409020,\n\t0x7ad0: 0x40409220, 0x7ad3: 0x40409420,\n\t0x7ad4: 0x40409620, 0x7ad5: 0x40409820, 0x7ad6: 0x40409a20, 0x7ad7: 0x40409c20,\n\t0x7ad8: 0x40409e20, 0x7ad9: 0x4040a020, 0x7ada: 0x4040a220, 0x7adb: 0x4040a420,\n\t0x7adc: 0x4040a620, 0x7add: 0x4040a820, 0x7ade: 0x4040aa20, 0x7adf: 0x4040ac20,\n\t0x7ae0: 0x4040ae20, 0x7ae1: 0x4040b020, 0x7ae2: 0x4040b220, 0x7ae3: 0x4040b420,\n\t0x7ae4: 0x4040b620, 0x7ae5: 0x4040b820, 0x7ae6: 0x4040ba20, 0x7ae7: 0x4040bc20,\n\t0x7ae8: 0x4040be20, 0x7aea: 0x4040c020, 0x7aeb: 0x4040c220,\n\t0x7aec: 0x4040c420, 0x7aed: 0x4040c620, 0x7aee: 0x4040c820, 0x7aef: 0x4040ca20,\n\t0x7af0: 0x4040cc20, 0x7af2: 0x4040d020,\n\t0x7af6: 0x4040d420, 0x7af7: 0x4040d620,\n\t0x7af8: 0x4040d820, 0x7af9: 0x4040da20,\n\t0x7afc: 0xa070f102, 0x7afd: 0x4040dc20, 0x7afe: 0x4040de20, 0x7aff: 0x4040e020,\n\t// Block 0x1ec, offset 0x7b00\n\t0x7b00: 0xa0000000, 0x7b01: 0xa0000000, 0x7b02: 0xa0000000, 0x7b03: 0xa0000000,\n\t0x7b04: 0xa0000000, 0x7b05: 0xa0000000, 0x7b06: 0xa0000000, 0x7b07: 0xa0000000,\n\t0x7b08: 0xa0000000, 0x7b09: 0x40020020, 0x7b0a: 0x40020220, 0x7b0b: 0x40020420,\n\t0x7b0c: 0x40020620, 0x7b0d: 0x40020820, 0x7b0e: 0xa0000000, 0x7b0f: 0xa0000000,\n\t0x7b10: 0xa0000000, 0x7b11: 0xa0000000, 0x7b12: 0xa0000000, 0x7b13: 0xa0000000,\n\t0x7b14: 0xa0000000, 0x7b15: 0xa0000000, 0x7b16: 0xa0000000, 0x7b17: 0xa0000000,\n\t0x7b18: 0xa0000000, 0x7b19: 0xa0000000, 0x7b1a: 0xa0000000, 0x7b1b: 0xa0000000,\n\t0x7b1c: 0xa0000000, 0x7b1d: 0xa0000000, 0x7b1e: 0xa0000000, 0x7b1f: 0xa0000000,\n\t0x7b20: 0x40021220, 0x7b21: 0x4002ba20, 0x7b22: 0x4003e020, 0x7b23: 0x4004ea20,\n\t0x7b24: 0x4027de20, 0x7b25: 0x4004ec20, 0x7b26: 0x4004e620, 0x7b27: 0x4003d220,\n\t0x7b28: 0x4003f420, 0x7b29: 0x4003f620, 0x7b2a: 0x4004d820, 0x7b2b: 0x40093820,\n\t0x7b2c: 0x40024020, 0x7b2d: 0x40021a20, 0x7b2e: 0x4002e420, 0x7b2f: 0x4004e220,\n\t0x7b30: 0x4029cc20, 0x7b31: 0x4029ce20, 0x7b32: 0x4029d020, 0x7b33: 0x4029d220,\n\t0x7b34: 0x4029d420, 0x7b35: 0x4029d620, 0x7b36: 0x4029d820, 0x7b37: 0x4029da20,\n\t0x7b38: 0x4029dc20, 0x7b39: 0x4029de20, 0x7b3a: 0x40026c20, 0x7b3b: 0x40026220,\n\t0x7b3c: 0x40094020, 0x7b3d: 0x40094220, 0x7b3e: 0x40094420, 0x7b3f: 0x4002c420,\n\t// Block 0x1ed, offset 0x7b40\n\t0x7b40: 0x4004d620, 0x7b41: 0x002bde88, 0x7b42: 0x002c0a88, 0x7b43: 0x002c3a88,\n\t0x7b44: 0x002c6288, 0x7b45: 0x002c9888, 0x7b46: 0x002d0888, 0x7b47: 0x002d2288,\n\t0x7b48: 0x002d6888, 0x7b49: 0x002d9a88, 0x7b4a: 0x002dcc88, 0x7b4b: 0x002dfe88,\n\t0x7b4c: 0xc3520002, 0x7b4d: 0x002e8288, 0x7b4e: 0x002e9e88, 0x7b4f: 0x002ee288,\n\t0x7b50: 0x002f2c88, 0x7b51: 0x002f5688, 0x7b52: 0x002f7a88, 0x7b53: 0x002fe688,\n\t0x7b54: 0x00302c88, 0x7b55: 0x00306c88, 0x7b56: 0x0030be88, 0x7b57: 0x0030e288,\n\t0x7b58: 0x0030f688, 0x7b59: 0x00310088, 0x7b5a: 0x00312a88, 0x7b5b: 0x4003f820,\n\t0x7b5c: 0x4004e420, 0x7b5d: 0x4003fa20, 0x7b5e: 0x40062420, 0x7b5f: 0x40021620,\n\t0x7b60: 0x40061e20, 0x7b61: 0x402bde20, 0x7b62: 0x402c0a20, 0x7b63: 0x402c3a20,\n\t0x7b64: 0x402c6220, 0x7b65: 0x402c9820, 0x7b66: 0x402d0820, 0x7b67: 0x402d2220,\n\t0x7b68: 0x402d6820, 0x7b69: 0x402d9a20, 0x7b6a: 0x402dcc20, 0x7b6b: 0x402dfe20,\n\t0x7b6c: 0xc34f0002, 0x7b6d: 0x402e8220, 0x7b6e: 0x402e9e20, 0x7b6f: 0x402ee220,\n\t0x7b70: 0x402f2c20, 0x7b71: 0x402f5620, 0x7b72: 0x402f7a20, 0x7b73: 0x402fe620,\n\t0x7b74: 0x40302c20, 0x7b75: 0x40306c20, 0x7b76: 0x4030be20, 0x7b77: 0x4030e220,\n\t0x7b78: 0x4030f620, 0x7b79: 0x40310020, 0x7b7a: 0x40312a20, 0x7b7b: 0x4003fc20,\n\t0x7b7c: 0x40094820, 0x7b7d: 0x4003fe20, 0x7b7e: 0x40094c20, 0x7b7f: 0xa0000000,\n\t// Block 0x1ee, offset 0x7b80\n\t0x7b80: 0xe0000983, 0x7b81: 0xe0000980, 0x7b82: 0xe00008fb, 0x7b83: 0xe00008f8,\n\t0x7b84: 0xe000097d, 0x7b85: 0xe000097a, 0x7b86: 0xe0000a38, 0x7b87: 0xe0000a35,\n\t0x7b88: 0xe0000a3e, 0x7b89: 0xe0000a3b, 0x7b8a: 0xe0000a4a, 0x7b8b: 0xe0000a47,\n\t0x7b8c: 0xe0000a44, 0x7b8d: 0xe0000a41, 0x7b8e: 0xe0000a86, 0x7b8f: 0xe0000a83,\n\t0x7b90: 0xe0000aaa, 0x7b91: 0xe0000aa7, 0x7b92: 0xe0000b46, 0x7b93: 0xe0000b43,\n\t0x7b94: 0xe0000aee, 0x7b95: 0xe0000aeb, 0x7b96: 0xe0000b2c, 0x7b97: 0xe0000b29,\n\t0x7b98: 0xe0000b40, 0x7b99: 0xe0000b3d, 0x7b9a: 0xe0000b1a, 0x7b9b: 0xe0000b17,\n\t0x7b9c: 0xe0000bb8, 0x7b9d: 0xe0000bb5, 0x7b9e: 0xe0000bb2, 0x7b9f: 0xe0000baf,\n\t0x7ba0: 0xe0000bc4, 0x7ba1: 0xe0000bc1, 0x7ba2: 0xe0000bca, 0x7ba3: 0xe0000bc7,\n\t0x7ba4: 0xe0000bee, 0x7ba5: 0xe0000beb, 0x7ba6: 0xe0000c1b, 0x7ba7: 0xe0000c18,\n\t0x7ba8: 0xe0000c51, 0x7ba9: 0xe0000c4e, 0x7baa: 0xe0000c60, 0x7bab: 0xe0000c5d,\n\t0x7bac: 0xe0000c31, 0x7bad: 0xe0000c2e, 0x7bae: 0xe0000c5a, 0x7baf: 0xe0000c57,\n\t0x7bb0: 0xe0000c54, 0x7bb1: 0x402da220, 0x7bb2: 0xf0000a0a, 0x7bb3: 0xf0000404,\n\t0x7bb4: 0xe0000c8a, 0x7bb5: 0xe0000c87, 0x7bb6: 0xe0000c9f, 0x7bb7: 0xe0000c9c,\n\t0x7bb8: 0x402f7220, 0x7bb9: 0xe0000ccc, 0x7bba: 0xe0000cc9, 0x7bbb: 0xe0000cd8,\n\t0x7bbc: 0xe0000cd5, 0x7bbd: 0xe0000cd2, 0x7bbe: 0xe0000ccf, 0x7bbf: 0x002e22a3,\n\t// Block 0x1ef, offset 0x7bc0\n\t0x7bc0: 0x402e2221, 0x7bc1: 0xe0000cf8, 0x7bc2: 0xe0000cf5, 0x7bc3: 0xe0000d51,\n\t0x7bc4: 0xe0000d4e, 0x7bc5: 0xe0000d6f, 0x7bc6: 0xe0000d6c, 0x7bc7: 0xe0000d5d,\n\t0x7bc8: 0xe0000d5a, 0x7bc9: 0xf0000404, 0x7bca: 0x002eda88, 0x7bcb: 0x402eda20,\n\t0x7bcc: 0xe0000e2e, 0x7bcd: 0xe0000e2b, 0x7bce: 0xe0000da0, 0x7bcf: 0xe0000d9d,\n\t0x7bd0: 0xe0000de0, 0x7bd1: 0xe0000ddd, 0x7bd2: 0xe0000e93, 0x7bd3: 0xe0000e8f,\n\t0x7bd4: 0xe0000eca, 0x7bd5: 0xe0000ec7, 0x7bd6: 0xe0000edc, 0x7bd7: 0xe0000ed9,\n\t0x7bd8: 0xe0000ed0, 0x7bd9: 0xe0000ecd, 0x7bda: 0xe0000f1f, 0x7bdb: 0xe0000f1c,\n\t0x7bdc: 0xe0000f2d, 0x7bdd: 0xe0000f2a, 0x7bde: 0xe0000f47, 0x7bdf: 0xe0000f44,\n\t0x7be0: 0xe0000f33, 0x7be1: 0xe0000f30, 0x7be2: 0xe0000f99, 0x7be3: 0xe0000f96,\n\t0x7be4: 0xe0000f8a, 0x7be5: 0xe0000f87, 0x7be6: 0x00303688, 0x7be7: 0x40303620,\n\t0x7be8: 0xe000102b, 0x7be9: 0xe0001028, 0x7bea: 0xe000103f, 0x7beb: 0xe000103c,\n\t0x7bec: 0xe0000fe7, 0x7bed: 0xe0000fe4, 0x7bee: 0xe0000ff9, 0x7bef: 0xe0000ff6,\n\t0x7bf0: 0xe0001025, 0x7bf1: 0xe0001022, 0x7bf2: 0xe0001039, 0x7bf3: 0xe0001036,\n\t0x7bf4: 0xe00010d8, 0x7bf5: 0xe00010d5, 0x7bf6: 0xe000110e, 0x7bf7: 0xe000110b,\n\t0x7bf8: 0xe0001117, 0x7bf9: 0xe000113b, 0x7bfa: 0xe0001138, 0x7bfb: 0xe000114d,\n\t0x7bfc: 0xe000114a, 0x7bfd: 0xe0001147, 0x7bfe: 0xe0001144, 0x7bff: 0xe0000f64,\n\t// Block 0x1f0, offset 0x7c00\n\t0x7c00: 0xa0000000, 0x7c01: 0xa0000000, 0x7c02: 0xa0000000, 0x7c03: 0xa0000000,\n\t0x7c04: 0xa0000000, 0x7c05: 0xa0000000, 0x7c06: 0xa0000000, 0x7c07: 0xa0000000,\n\t0x7c08: 0xa0000000, 0x7c09: 0x40020020, 0x7c0a: 0x40020220, 0x7c0b: 0x40020420,\n\t0x7c0c: 0x40020620, 0x7c0d: 0x40020820, 0x7c0e: 0xa0000000, 0x7c0f: 0xa0000000,\n\t0x7c10: 0xa0000000, 0x7c11: 0xa0000000, 0x7c12: 0xa0000000, 0x7c13: 0xa0000000,\n\t0x7c14: 0xa0000000, 0x7c15: 0xa0000000, 0x7c16: 0xa0000000, 0x7c17: 0xa0000000,\n\t0x7c18: 0xa0000000, 0x7c19: 0xa0000000, 0x7c1a: 0xa0000000, 0x7c1b: 0xa0000000,\n\t0x7c1c: 0xa0000000, 0x7c1d: 0xa0000000, 0x7c1e: 0xa0000000, 0x7c1f: 0xa0000000,\n\t0x7c20: 0x40021220, 0x7c21: 0x4002ba20, 0x7c22: 0x4003e020, 0x7c23: 0x4004ea20,\n\t0x7c24: 0x4027de20, 0x7c25: 0x4004ec20, 0x7c26: 0x4004e620, 0x7c27: 0x4003d220,\n\t0x7c28: 0x4003f420, 0x7c29: 0x4003f620, 0x7c2a: 0x4004d820, 0x7c2b: 0x40093820,\n\t0x7c2c: 0x40024020, 0x7c2d: 0x40021a20, 0x7c2e: 0x4002e420, 0x7c2f: 0x4004e220,\n\t0x7c30: 0x4029cc20, 0x7c31: 0x4029ce20, 0x7c32: 0x4029d020, 0x7c33: 0x4029d220,\n\t0x7c34: 0x4029d420, 0x7c35: 0x4029d620, 0x7c36: 0x4029d820, 0x7c37: 0x4029da20,\n\t0x7c38: 0x4029dc20, 0x7c39: 0x4029de20, 0x7c3a: 0x40026c20, 0x7c3b: 0x40026220,\n\t0x7c3c: 0x40094020, 0x7c3d: 0x40094220, 0x7c3e: 0x40094420, 0x7c3f: 0x4002c420,\n\t// Block 0x1f1, offset 0x7c40\n\t0x7c40: 0x4004d620, 0x7c41: 0x002bde88, 0x7c42: 0x002c0a88, 0x7c43: 0xc3590953,\n\t0x7c44: 0x002c6288, 0x7c45: 0x002c9888, 0x7c46: 0x002d0888, 0x7c47: 0x002d2288,\n\t0x7c48: 0x002d6888, 0x7c49: 0x002d9a88, 0x7c4a: 0x002dcc88, 0x7c4b: 0x002dfe88,\n\t0x7c4c: 0xc0030002, 0x7c4d: 0x002e8288, 0x7c4e: 0x002e9e88, 0x7c4f: 0x002ee288,\n\t0x7c50: 0x002f2c88, 0x7c51: 0x002f5688, 0x7c52: 0xc35f0991, 0x7c53: 0xc3430991,\n\t0x7c54: 0x00302c88, 0x7c55: 0x00306c88, 0x7c56: 0x0030be88, 0x7c57: 0x0030e288,\n\t0x7c58: 0x0030f688, 0x7c59: 0x00310088, 0x7c5a: 0xc3630991, 0x7c5b: 0x4003f820,\n\t0x7c5c: 0x4004e420, 0x7c5d: 0x4003fa20, 0x7c5e: 0x40062420, 0x7c5f: 0x40021620,\n\t0x7c60: 0x40061e20, 0x7c61: 0x402bde20, 0x7c62: 0x402c0a20, 0x7c63: 0xc3550953,\n\t0x7c64: 0x402c6220, 0x7c65: 0x402c9820, 0x7c66: 0x402d0820, 0x7c67: 0x402d2220,\n\t0x7c68: 0x402d6820, 0x7c69: 0x402d9a20, 0x7c6a: 0x402dcc20, 0x7c6b: 0x402dfe20,\n\t0x7c6c: 0xc0000002, 0x7c6d: 0x402e8220, 0x7c6e: 0x402e9e20, 0x7c6f: 0x402ee220,\n\t0x7c70: 0x402f2c20, 0x7c71: 0x402f5620, 0x7c72: 0xc35d0991, 0x7c73: 0xc3410991,\n\t0x7c74: 0x40302c20, 0x7c75: 0x40306c20, 0x7c76: 0x4030be20, 0x7c77: 0x4030e220,\n\t0x7c78: 0x4030f620, 0x7c79: 0x40310020, 0x7c7a: 0xc3610991, 0x7c7b: 0x4003fc20,\n\t0x7c7c: 0x40094820, 0x7c7d: 0x4003fe20, 0x7c7e: 0x40094c20, 0x7c7f: 0xa0000000,\n\t// Block 0x1f2, offset 0x7c80\n\t0x7c80: 0xe0000983, 0x7c81: 0xe0000980, 0x7c82: 0xe00008fb, 0x7c83: 0xe00008f8,\n\t0x7c84: 0xe000097d, 0x7c85: 0xe000097a, 0x7c86: 0xe0000a38, 0x7c87: 0xe0000a35,\n\t0x7c88: 0xe0000a3e, 0x7c89: 0xe0000a3b, 0x7c8a: 0xe0000a4a, 0x7c8b: 0xe0000a47,\n\t0x7c8c: 0x002c3c83, 0x7c8d: 0x402c3c20, 0x7c8e: 0xe0000a86, 0x7c8f: 0xe0000a83,\n\t0x7c90: 0xe0000aaa, 0x7c91: 0xe0000aa7, 0x7c92: 0xe0000b46, 0x7c93: 0xe0000b43,\n\t0x7c94: 0xe0000aee, 0x7c95: 0xe0000aeb, 0x7c96: 0xe0000b2c, 0x7c97: 0xe0000b29,\n\t0x7c98: 0xe0000b40, 0x7c99: 0xe0000b3d, 0x7c9a: 0xe0000b1a, 0x7c9b: 0xe0000b17,\n\t0x7c9c: 0xe0000bb8, 0x7c9d: 0xe0000bb5, 0x7c9e: 0xe0000bb2, 0x7c9f: 0xe0000baf,\n\t0x7ca0: 0xe0000bc4, 0x7ca1: 0xe0000bc1, 0x7ca2: 0xe0000bca, 0x7ca3: 0xe0000bc7,\n\t0x7ca4: 0xe0000bee, 0x7ca5: 0xe0000beb, 0x7ca6: 0xe0000c1b, 0x7ca7: 0xe0000c18,\n\t0x7ca8: 0xe0000c51, 0x7ca9: 0xe0000c4e, 0x7caa: 0xe0000c60, 0x7cab: 0xe0000c5d,\n\t0x7cac: 0xe0000c31, 0x7cad: 0xe0000c2e, 0x7cae: 0xe0000c5a, 0x7caf: 0xe0000c57,\n\t0x7cb0: 0xe0000c54, 0x7cb1: 0x402da220, 0x7cb2: 0xf0000a0a, 0x7cb3: 0xf0000404,\n\t0x7cb4: 0xe0000c8a, 0x7cb5: 0xe0000c87, 0x7cb6: 0xe0000c9f, 0x7cb7: 0xe0000c9c,\n\t0x7cb8: 0x402f7220, 0x7cb9: 0xe0000ccc, 0x7cba: 0xe0000cc9, 0x7cbb: 0xe0000cd8,\n\t0x7cbc: 0xe0000cd5, 0x7cbd: 0xe0000cd2, 0x7cbe: 0xe0000ccf, 0x7cbf: 0xe0000d04,\n\t// Block 0x1f3, offset 0x7cc0\n\t0x7cc0: 0xe0000cfe, 0x7cc1: 0xe0000cf8, 0x7cc2: 0xe0000cf5, 0x7cc3: 0xe0000d51,\n\t0x7cc4: 0xe0000d4e, 0x7cc5: 0xe0000d6f, 0x7cc6: 0xe0000d6c, 0x7cc7: 0xe0000d5d,\n\t0x7cc8: 0xe0000d5a, 0x7cc9: 0xf0000404, 0x7cca: 0x002eda88, 0x7ccb: 0x402eda20,\n\t0x7ccc: 0xe0000e2e, 0x7ccd: 0xe0000e2b, 0x7cce: 0xe0000da0, 0x7ccf: 0xe0000d9d,\n\t0x7cd0: 0xe0000de0, 0x7cd1: 0xe0000ddd, 0x7cd2: 0xe0000e93, 0x7cd3: 0xe0000e8f,\n\t0x7cd4: 0xe0000eca, 0x7cd5: 0xe0000ec7, 0x7cd6: 0xe0000edc, 0x7cd7: 0xe0000ed9,\n\t0x7cd8: 0x002f7c83, 0x7cd9: 0x402f7c20, 0x7cda: 0xe0000f1f, 0x7cdb: 0xe0000f1c,\n\t0x7cdc: 0xe0000f2d, 0x7cdd: 0xe0000f2a, 0x7cde: 0xe0000f47, 0x7cdf: 0xe0000f44,\n\t0x7ce0: 0x002fe883, 0x7ce1: 0x402fe820, 0x7ce2: 0xe0000f99, 0x7ce3: 0xe0000f96,\n\t0x7ce4: 0xe0000f8a, 0x7ce5: 0xe0000f87, 0x7ce6: 0x00303688, 0x7ce7: 0x40303620,\n\t0x7ce8: 0xe000102b, 0x7ce9: 0xe0001028, 0x7cea: 0xe000103f, 0x7ceb: 0xe000103c,\n\t0x7cec: 0xe0000fe7, 0x7ced: 0xe0000fe4, 0x7cee: 0xe0000ff9, 0x7cef: 0xe0000ff6,\n\t0x7cf0: 0xe0001025, 0x7cf1: 0xe0001022, 0x7cf2: 0xe0001039, 0x7cf3: 0xe0001036,\n\t0x7cf4: 0xe00010d8, 0x7cf5: 0xe00010d5, 0x7cf6: 0xe000110e, 0x7cf7: 0xe000110b,\n\t0x7cf8: 0xe0001117, 0x7cf9: 0xe000113b, 0x7cfa: 0xe0001138, 0x7cfb: 0xe000114d,\n\t0x7cfc: 0xe000114a, 0x7cfd: 0x00312c83, 0x7cfe: 0x40312c20, 0x7cff: 0xe0000f64,\n\t// Block 0x1f4, offset 0x7d00\n\t0x7d00: 0xe0000d24, 0x7d01: 0xe0000d21, 0x7d02: 0xe0000d2a, 0x7d03: 0xe0000d27,\n\t0x7d04: 0xe0000d69, 0x7d05: 0xe0000d66, 0x7d06: 0xe0000d7b, 0x7d07: 0xe0000d78,\n\t0x7d08: 0xe0000d87, 0x7d09: 0xe0000d84, 0x7d0a: 0xe0000d81, 0x7d0b: 0xe0000d7e,\n\t0x7d0c: 0xe0000ded, 0x7d0d: 0xe0000de9, 0x7d0e: 0xe0000df5, 0x7d0f: 0xe0000df1,\n\t0x7d10: 0xe0000e3d, 0x7d11: 0xe0000e39, 0x7d12: 0xe0000e35, 0x7d13: 0xe0000e31,\n\t0x7d14: 0xe0000ea7, 0x7d15: 0xe0000ea4, 0x7d16: 0xe0000ead, 0x7d17: 0xe0000eaa,\n\t0x7d18: 0xe0000ed6, 0x7d19: 0xe0000ed3, 0x7d1a: 0xe0000ef4, 0x7d1b: 0xe0000ef1,\n\t0x7d1c: 0xe0000efb, 0x7d1d: 0xe0000ef7, 0x7d1e: 0xe0000f02, 0x7d1f: 0xe0000eff,\n\t0x7d20: 0xe0000f41, 0x7d21: 0xe0000f3e, 0x7d22: 0xe0000f53, 0x7d23: 0xe0000f50,\n\t0x7d24: 0xe0000f26, 0x7d25: 0xe0000f22, 0x7d26: 0xe000296a, 0x7d27: 0xe0002967,\n\t0x7d28: 0xe0000f5a, 0x7d29: 0xe0000f56, 0x7d2a: 0xe0000f93, 0x7d2b: 0xe0000f90,\n\t0x7d2c: 0xe0000f9f, 0x7d2d: 0xe0000f9c, 0x7d2e: 0xe0000fb1, 0x7d2f: 0xe0000fae,\n\t0x7d30: 0xe0000fab, 0x7d31: 0xe0000fa8, 0x7d32: 0xe0001093, 0x7d33: 0xe0001090,\n\t0x7d34: 0xe000109f, 0x7d35: 0xe000109c, 0x7d36: 0xe0001099, 0x7d37: 0xe0001096,\n\t0x7d38: 0xe0001032, 0x7d39: 0xe000102e, 0x7d3a: 0xe0001046, 0x7d3b: 0xe0001042,\n\t0x7d3c: 0xe00010a9, 0x7d3d: 0xe00010a6, 0x7d3e: 0xe00010af, 0x7d3f: 0xe00010ac,\n\t// Block 0x1f5, offset 0x7d40\n\t0x7d40: 0xa0000000, 0x7d41: 0xa0000000, 0x7d42: 0xa0000000, 0x7d43: 0xa0000000,\n\t0x7d44: 0xa0000000, 0x7d45: 0xa0000000, 0x7d46: 0xa0000000, 0x7d47: 0xa0000000,\n\t0x7d48: 0xa0000000, 0x7d49: 0x40020020, 0x7d4a: 0x40020220, 0x7d4b: 0x40020420,\n\t0x7d4c: 0x40020620, 0x7d4d: 0x40020820, 0x7d4e: 0xa0000000, 0x7d4f: 0xa0000000,\n\t0x7d50: 0xa0000000, 0x7d51: 0xa0000000, 0x7d52: 0xa0000000, 0x7d53: 0xa0000000,\n\t0x7d54: 0xa0000000, 0x7d55: 0xa0000000, 0x7d56: 0xa0000000, 0x7d57: 0xa0000000,\n\t0x7d58: 0xa0000000, 0x7d59: 0xa0000000, 0x7d5a: 0xa0000000, 0x7d5b: 0xa0000000,\n\t0x7d5c: 0xa0000000, 0x7d5d: 0xa0000000, 0x7d5e: 0xa0000000, 0x7d5f: 0xa0000000,\n\t0x7d60: 0x40021220, 0x7d61: 0x4002ba20, 0x7d62: 0x4003e020, 0x7d63: 0x4004ea20,\n\t0x7d64: 0x4027de20, 0x7d65: 0x4004ec20, 0x7d66: 0x4004e620, 0x7d67: 0x4003d220,\n\t0x7d68: 0x4003f420, 0x7d69: 0x4003f620, 0x7d6a: 0x4004d820, 0x7d6b: 0x40093820,\n\t0x7d6c: 0x40024020, 0x7d6d: 0x40021a20, 0x7d6e: 0x4002e420, 0x7d6f: 0x4004e220,\n\t0x7d70: 0x4029cc20, 0x7d71: 0x4029ce20, 0x7d72: 0x4029d020, 0x7d73: 0x4029d220,\n\t0x7d74: 0x4029d420, 0x7d75: 0x4029d620, 0x7d76: 0x4029d820, 0x7d77: 0x4029da20,\n\t0x7d78: 0x4029dc20, 0x7d79: 0x4029de20, 0x7d7a: 0x40026c20, 0x7d7b: 0x40026220,\n\t0x7d7c: 0x40094020, 0x7d7d: 0x40094220, 0x7d7e: 0x40094420, 0x7d7f: 0x4002c420,\n\t// Block 0x1f6, offset 0x7d80\n\t0x7d80: 0x4004d620, 0x7d81: 0x002bde88, 0x7d82: 0x002c0a88, 0x7d83: 0xc36509c2,\n\t0x7d84: 0xc36a09f2, 0x7d85: 0x002c9888, 0x7d86: 0xc36f0a22, 0x7d87: 0x002d2288,\n\t0x7d88: 0x002d6888, 0x7d89: 0x002d9a88, 0x7d8a: 0x002dcc88, 0x7d8b: 0x002dfe88,\n\t0x7d8c: 0xc37b0ac4, 0x7d8d: 0x002e8288, 0x7d8e: 0xc3740a52, 0x7d8f: 0x002ee288,\n\t0x7d90: 0xc38209c2, 0x7d91: 0x002f5688, 0x7d92: 0xc38509c2, 0x7d93: 0x002fe688,\n\t0x7d94: 0xc38a09c2, 0x7d95: 0x00306c88, 0x7d96: 0x0030be88, 0x7d97: 0x0030e288,\n\t0x7d98: 0x0030f688, 0x7d99: 0x00310088, 0x7d9a: 0x00312a88, 0x7d9b: 0x4003f820,\n\t0x7d9c: 0x4004e420, 0x7d9d: 0x4003fa20, 0x7d9e: 0x40062420, 0x7d9f: 0x40021620,\n\t0x7da0: 0x40061e20, 0x7da1: 0x402bde20, 0x7da2: 0x402c0a20, 0x7da3: 0xc33309b1,\n\t0x7da4: 0xc36809e1, 0x7da5: 0x402c9820, 0x7da6: 0xc36d0a11, 0x7da7: 0x402d2220,\n\t0x7da8: 0x402d6820, 0x7da9: 0x402d9a20, 0x7daa: 0x402dcc20, 0x7dab: 0x402dfe20,\n\t0x7dac: 0xc3770a73, 0x7dad: 0x402e8220, 0x7dae: 0xc3720a41, 0x7daf: 0x402ee220,\n\t0x7db0: 0xc38009b1, 0x7db1: 0x402f5620, 0x7db2: 0xc35d09b1, 0x7db3: 0x402fe620,\n\t0x7db4: 0xc38809b1, 0x7db5: 0x40306c20, 0x7db6: 0x4030be20, 0x7db7: 0x4030e220,\n\t0x7db8: 0x4030f620, 0x7db9: 0x40310020, 0x7dba: 0x40312a20, 0x7dbb: 0x4003fc20,\n\t0x7dbc: 0x40094820, 0x7dbd: 0x4003fe20, 0x7dbe: 0x40094c20, 0x7dbf: 0xa0000000,\n\t// Block 0x1f7, offset 0x7dc0\n\t0x7dc0: 0xa0000000, 0x7dc1: 0xa0000000, 0x7dc2: 0xa0000000, 0x7dc3: 0xa0000000,\n\t0x7dc4: 0xa0000000, 0x7dc5: 0xa0000000, 0x7dc6: 0xa0000000, 0x7dc7: 0xa0000000,\n\t0x7dc8: 0xa0000000, 0x7dc9: 0x40020020, 0x7dca: 0x40020220, 0x7dcb: 0x40020420,\n\t0x7dcc: 0x40020620, 0x7dcd: 0x40020820, 0x7dce: 0xa0000000, 0x7dcf: 0xa0000000,\n\t0x7dd0: 0xa0000000, 0x7dd1: 0xa0000000, 0x7dd2: 0xa0000000, 0x7dd3: 0xa0000000,\n\t0x7dd4: 0xa0000000, 0x7dd5: 0xa0000000, 0x7dd6: 0xa0000000, 0x7dd7: 0xa0000000,\n\t0x7dd8: 0xa0000000, 0x7dd9: 0xa0000000, 0x7dda: 0xa0000000, 0x7ddb: 0xa0000000,\n\t0x7ddc: 0xa0000000, 0x7ddd: 0xa0000000, 0x7dde: 0xa0000000, 0x7ddf: 0xa0000000,\n\t0x7de0: 0x40021220, 0x7de1: 0x4002ba20, 0x7de2: 0x4003e020, 0x7de3: 0x4004ea20,\n\t0x7de4: 0x4027de20, 0x7de5: 0x4004ec20, 0x7de6: 0x4004e620, 0x7de7: 0x4003d220,\n\t0x7de8: 0x4003f420, 0x7de9: 0x4003f620, 0x7dea: 0x4004d820, 0x7deb: 0x40093820,\n\t0x7dec: 0x40024020, 0x7ded: 0x40021a20, 0x7dee: 0x4002e420, 0x7def: 0x4004e220,\n\t0x7df0: 0x4029cc20, 0x7df1: 0x4029ce20, 0x7df2: 0x4029d020, 0x7df3: 0x4029d220,\n\t0x7df4: 0x4029d420, 0x7df5: 0x4029d620, 0x7df6: 0x4029d820, 0x7df7: 0x4029da20,\n\t0x7df8: 0x4029dc20, 0x7df9: 0x4029de20, 0x7dfa: 0x40026c20, 0x7dfb: 0x40026220,\n\t0x7dfc: 0x40094020, 0x7dfd: 0x40094220, 0x7dfe: 0x40094420, 0x7dff: 0x4002c420,\n\t// Block 0x1f8, offset 0x7e00\n\t0x7e00: 0x4004d620, 0x7e01: 0xc3970b93, 0x7e02: 0x002c0a88, 0x7e03: 0x002c3a88,\n\t0x7e04: 0x002c6288, 0x7e05: 0xc39e0be1, 0x7e06: 0x002d0888, 0x7e07: 0x002d2288,\n\t0x7e08: 0x002d6888, 0x7e09: 0x002d9a88, 0x7e0a: 0x002dcc88, 0x7e0b: 0x002dfe88,\n\t0x7e0c: 0xc0030002, 0x7e0d: 0x002e8288, 0x7e0e: 0x002e9e88, 0x7e0f: 0xc3a30b21,\n\t0x7e10: 0x002f2c88, 0x7e11: 0x002f5688, 0x7e12: 0x002f7a88, 0x7e13: 0x002fe688,\n\t0x7e14: 0x00302c88, 0x7e15: 0xc3900b21, 0x7e16: 0x0030be88, 0x7e17: 0x0030e288,\n\t0x7e18: 0x0030f688, 0x7e19: 0x00310088, 0x7e1a: 0x00312a88, 0x7e1b: 0x4003f820,\n\t0x7e1c: 0x4004e420, 0x7e1d: 0x4003fa20, 0x7e1e: 0x40062420, 0x7e1f: 0x40021620,\n\t0x7e20: 0x40061e20, 0x7e21: 0xc3930b52, 0x7e22: 0x402c0a20, 0x7e23: 0x402c3a20,\n\t0x7e24: 0x402c6220, 0x7e25: 0xc39c0be1, 0x7e26: 0x402d0820, 0x7e27: 0x402d2220,\n\t0x7e28: 0x402d6820, 0x7e29: 0x402d9a20, 0x7e2a: 0x402dcc20, 0x7e2b: 0x402dfe20,\n\t0x7e2c: 0xc0000002, 0x7e2d: 0x402e8220, 0x7e2e: 0x402e9e20, 0x7e2f: 0xc3a00b21,\n\t0x7e30: 0x402f2c20, 0x7e31: 0x402f5620, 0x7e32: 0x402f7a20, 0x7e33: 0x402fe620,\n\t0x7e34: 0x40302c20, 0x7e35: 0xc38d0b21, 0x7e36: 0x4030be20, 0x7e37: 0x4030e220,\n\t0x7e38: 0x4030f620, 0x7e39: 0x40310020, 0x7e3a: 0x40312a20, 0x7e3b: 0x4003fc20,\n\t0x7e3c: 0x40094820, 0x7e3d: 0x4003fe20, 0x7e3e: 0x40094c20, 0x7e3f: 0xa0000000,\n\t// Block 0x1f9, offset 0x7e40\n\t0x7e40: 0xe00008f5, 0x7e41: 0xe00008ef, 0x7e42: 0xe0000921, 0x7e43: 0xe0000969,\n\t0x7e44: 0x00320ca3, 0x7e45: 0x00321083, 0x7e46: 0x00320c83, 0x7e47: 0xe0000a53,\n\t0x7e48: 0xe0000ae8, 0x7e49: 0xe0000ae2, 0x7e4a: 0xe0000af4, 0x7e4b: 0xe0000b20,\n\t0x7e4c: 0xe0000c2b, 0x7e4d: 0xe0000c25, 0x7e4e: 0xe0000c37, 0x7e4f: 0xe0000c43,\n\t0x7e50: 0x002c62c3, 0x7e51: 0xe0000d63, 0x7e52: 0xe0000d9a, 0x7e53: 0xe0000d94,\n\t0x7e54: 0xe0000da6, 0x7e55: 0xe0000de6, 0x7e56: 0x00320ea3, 0x7e57: 0x40093e20,\n\t0x7e58: 0x00320e83, 0x7e59: 0xe0000fe1, 0x7e5a: 0xe0000fdb, 0x7e5b: 0xe0000fed,\n\t0x7e5c: 0x003100a3, 0x7e5d: 0xe0001102, 0x7e5e: 0xe0002973, 0x7e5f: 0xe0000f7b,\n\t0x7e60: 0xe00008f2, 0x7e61: 0xe00008ec, 0x7e62: 0xe000091e, 0x7e63: 0xe0000966,\n\t0x7e64: 0x40320c21, 0x7e65: 0x40321020, 0x7e66: 0x40320c20, 0x7e67: 0xe0000a4d,\n\t0x7e68: 0xe0000ae5, 0x7e69: 0xe0000adf, 0x7e6a: 0xe0000af1, 0x7e6b: 0xe0000b1d,\n\t0x7e6c: 0xe0000c28, 0x7e6d: 0xe0000c22, 0x7e6e: 0xe0000c34, 0x7e6f: 0xe0000c40,\n\t0x7e70: 0x402c6222, 0x7e71: 0xe0000d60, 0x7e72: 0xe0000d97, 0x7e73: 0xe0000d91,\n\t0x7e74: 0xe0000da3, 0x7e75: 0xe0000de3, 0x7e76: 0x40320e21, 0x7e77: 0x40093c20,\n\t0x7e78: 0x40320e20, 0x7e79: 0xe0000fde, 0x7e7a: 0xe0000fd8, 0x7e7b: 0xe0000fea,\n\t0x7e7c: 0x40310021, 0x7e7d: 0xe00010ff, 0x7e7e: 0xe0002970, 0x7e7f: 0xe0001114,\n\t// Block 0x1fa, offset 0x7e80\n\t0x7e80: 0xe0000983, 0x7e81: 0xe0000980, 0x7e82: 0xe00008fb, 0x7e83: 0xe00008f8,\n\t0x7e84: 0xe000097d, 0x7e85: 0xe000097a, 0x7e86: 0xe0000a38, 0x7e87: 0xe0000a35,\n\t0x7e88: 0xe0000a3e, 0x7e89: 0xe0000a3b, 0x7e8a: 0xe0000a4a, 0x7e8b: 0xe0000a47,\n\t0x7e8c: 0xe0000a44, 0x7e8d: 0xe0000a41, 0x7e8e: 0xe0000a86, 0x7e8f: 0xe0000a83,\n\t0x7e90: 0x002c62a3, 0x7e91: 0x402c6221, 0x7e92: 0xe0000b46, 0x7e93: 0xe0000b43,\n\t0x7e94: 0xe0000aee, 0x7e95: 0xe0000aeb, 0x7e96: 0xe0000b2c, 0x7e97: 0xe0000b29,\n\t0x7e98: 0x00320cc3, 0x7e99: 0x40320c22, 0x7e9a: 0xe0000b1a, 0x7e9b: 0xe0000b17,\n\t0x7e9c: 0xe0000bb8, 0x7e9d: 0xe0000bb5, 0x7e9e: 0xe0000bb2, 0x7e9f: 0xe0000baf,\n\t0x7ea0: 0xe0000bc4, 0x7ea1: 0xe0000bc1, 0x7ea2: 0xe0000bca, 0x7ea3: 0xe0000bc7,\n\t0x7ea4: 0xe0000bee, 0x7ea5: 0xe0000beb, 0x7ea6: 0xe0000c1b, 0x7ea7: 0xe0000c18,\n\t0x7ea8: 0xe0000c51, 0x7ea9: 0xe0000c4e, 0x7eaa: 0xe0000c60, 0x7eab: 0xe0000c5d,\n\t0x7eac: 0xe0000c31, 0x7ead: 0xe0000c2e, 0x7eae: 0xe0000c5a, 0x7eaf: 0xe0000c57,\n\t0x7eb0: 0xe0000c54, 0x7eb1: 0x402da220, 0x7eb2: 0xf0000a0a, 0x7eb3: 0xf0000404,\n\t0x7eb4: 0xe0000c8a, 0x7eb5: 0xe0000c87, 0x7eb6: 0xe0000c9f, 0x7eb7: 0xe0000c9c,\n\t0x7eb8: 0x402f7220, 0x7eb9: 0xe0000ccc, 0x7eba: 0xe0000cc9, 0x7ebb: 0xe0000cd8,\n\t0x7ebc: 0xe0000cd5, 0x7ebd: 0xe0000cd2, 0x7ebe: 0xe0000ccf, 0x7ebf: 0xe0000d04,\n\t// Block 0x1fb, offset 0x7ec0\n\t0x7ec0: 0xe0000cfe, 0x7ec1: 0xe0000cf8, 0x7ec2: 0xe0000cf5, 0x7ec3: 0xe0000d51,\n\t0x7ec4: 0xe0000d4e, 0x7ec5: 0xe0000d6f, 0x7ec6: 0xe0000d6c, 0x7ec7: 0xe0000d5d,\n\t0x7ec8: 0xe0000d5a, 0x7ec9: 0xf0000404, 0x7eca: 0x002eda88, 0x7ecb: 0x402eda20,\n\t0x7ecc: 0xe0000e2e, 0x7ecd: 0xe0000e2b, 0x7ece: 0xe0000da0, 0x7ecf: 0xe0000d9d,\n\t0x7ed0: 0x00320ec3, 0x7ed1: 0x40320e22, 0x7ed2: 0x00320ee3, 0x7ed3: 0x40320e23,\n\t0x7ed4: 0xe0000eca, 0x7ed5: 0xe0000ec7, 0x7ed6: 0xe0000edc, 0x7ed7: 0xe0000ed9,\n\t0x7ed8: 0xe0000ed0, 0x7ed9: 0xe0000ecd, 0x7eda: 0xe0000f1f, 0x7edb: 0xe0000f1c,\n\t0x7edc: 0xe0000f2d, 0x7edd: 0xe0000f2a, 0x7ede: 0xe0000f47, 0x7edf: 0xe0000f44,\n\t0x7ee0: 0xe0000f33, 0x7ee1: 0xe0000f30, 0x7ee2: 0xe0000f99, 0x7ee3: 0xe0000f96,\n\t0x7ee4: 0xe0000f8a, 0x7ee5: 0xe0000f87, 0x7ee6: 0x00303688, 0x7ee7: 0x40303620,\n\t0x7ee8: 0xe000102b, 0x7ee9: 0xe0001028, 0x7eea: 0xe000103f, 0x7eeb: 0xe000103c,\n\t0x7eec: 0xe0000fe7, 0x7eed: 0xe0000fe4, 0x7eee: 0xe0000ff9, 0x7eef: 0xe0000ff6,\n\t0x7ef0: 0x003100c3, 0x7ef1: 0x40310022, 0x7ef2: 0xe0001039, 0x7ef3: 0xe0001036,\n\t0x7ef4: 0xe00010d8, 0x7ef5: 0xe00010d5, 0x7ef6: 0xe000110e, 0x7ef7: 0xe000110b,\n\t0x7ef8: 0xe0001117, 0x7ef9: 0xe000113b, 0x7efa: 0xe0001138, 0x7efb: 0xe000114d,\n\t0x7efc: 0xe000114a, 0x7efd: 0xe0001147, 0x7efe: 0xe0001144, 0x7eff: 0xe0000f64,\n\t// Block 0x1fc, offset 0x7f00\n\t0x7f00: 0x40321220, 0x7f01: 0x40321a20, 0x7f02: 0x40322220, 0x7f03: 0x40322a20,\n\t0x7f04: 0xe0000ad5, 0x7f05: 0xe0000ad1, 0x7f06: 0xe0000acd, 0x7f07: 0xf0000a0a,\n\t0x7f08: 0xf000040a, 0x7f09: 0xf0000404, 0x7f0a: 0xf0000a0a, 0x7f0b: 0xf000040a,\n\t0x7f0c: 0xf0000404, 0x7f0d: 0xe0000947, 0x7f0e: 0xe0000944, 0x7f0f: 0xe0000c3d,\n\t0x7f10: 0xe0000c3a, 0x7f11: 0xe0000dcc, 0x7f12: 0xe0000dc9, 0x7f13: 0xe0000ff3,\n\t0x7f14: 0xe0000ff0, 0x7f15: 0xe000298b, 0x7f16: 0xe0002988, 0x7f17: 0xe0002979,\n\t0x7f18: 0xe0002976, 0x7f19: 0xe0002985, 0x7f1a: 0xe0002982, 0x7f1b: 0xe000297f,\n\t0x7f1c: 0xe000297c, 0x7f1d: 0x402cae20, 0x7f1e: 0xe000299d, 0x7f1f: 0xe000299a,\n\t0x7f20: 0xe0000976, 0x7f21: 0xe0000972, 0x7f22: 0xe0002997, 0x7f23: 0xe0002994,\n\t0x7f24: 0x002d3a88, 0x7f25: 0x402d3a20, 0x7f26: 0xe0000bbe, 0x7f27: 0xe0000bbb,\n\t0x7f28: 0xe0000c99, 0x7f29: 0xe0000c96, 0x7f2a: 0xe0000e20, 0x7f2b: 0xe0000e1d,\n\t0x7f2c: 0xe0000e27, 0x7f2d: 0xe0000e23, 0x7f2e: 0xe0001162, 0x7f2f: 0xe000115f,\n\t0x7f30: 0xe0000c8d, 0x7f31: 0xf0000a0a, 0x7f32: 0xf000040a, 0x7f33: 0xf0000404,\n\t0x7f34: 0xe0000bac, 0x7f35: 0xe0000ba9, 0x7f36: 0x002d7888, 0x7f37: 0x00319488,\n\t0x7f38: 0xe0000d57, 0x7f39: 0xe0000d54, 0x7f3a: 0xe00029b5, 0x7f3b: 0xe00029b2,\n\t0x7f3c: 0xe0002991, 0x7f3d: 0xe000298e, 0x7f3e: 0xe00029a3, 0x7f3f: 0xe00029a0,\n\t// Block 0x1fd, offset 0x7f40\n\t0x7f40: 0xe000098f, 0x7f41: 0xe000098c, 0x7f42: 0xe0000995, 0x7f43: 0xe0000992,\n\t0x7f44: 0xe0000b62, 0x7f45: 0xe0000b5f, 0x7f46: 0xe0000b68, 0x7f47: 0xe0000b65,\n\t0x7f48: 0xe0000c6c, 0x7f49: 0xe0000c69, 0x7f4a: 0xe0000c72, 0x7f4b: 0xe0000c6f,\n\t0x7f4c: 0xe0000e4a, 0x7f4d: 0xe0000e47, 0x7f4e: 0xe0000e50, 0x7f4f: 0xe0000e4d,\n\t0x7f50: 0xe0000ee8, 0x7f51: 0xe0000ee5, 0x7f52: 0xe0000eee, 0x7f53: 0xe0000eeb,\n\t0x7f54: 0xe0001053, 0x7f55: 0xe0001050, 0x7f56: 0xe0001059, 0x7f57: 0xe0001056,\n\t0x7f58: 0xe0000f61, 0x7f59: 0xe0000f5e, 0x7f5a: 0xe0000fa5, 0x7f5b: 0xe0000fa2,\n\t0x7f5c: 0x00312288, 0x7f5d: 0x40312220, 0x7f5e: 0xe0000bf4, 0x7f5f: 0xe0000bf1,\n\t0x7f60: 0x002ebc88, 0x7f61: 0x402c8c20, 0x7f62: 0x002f2288, 0x7f63: 0x402f2220,\n\t0x7f64: 0x00314088, 0x7f65: 0x40314020, 0x7f66: 0xe000096f, 0x7f67: 0xe000096c,\n\t0x7f68: 0xe0000b32, 0x7f69: 0xe0000b2f, 0x7f6a: 0xe00029af, 0x7f6b: 0xe00029ac,\n\t0x7f6c: 0xe0000dfd, 0x7f6d: 0xe0000df9, 0x7f6e: 0xe0000e04, 0x7f6f: 0xe0000e01,\n\t0x7f70: 0xe0000e0b, 0x7f71: 0xe0000e07, 0x7f72: 0xe0001129, 0x7f73: 0xe0001126,\n\t0x7f74: 0x402e5e20, 0x7f75: 0x402ed020, 0x7f76: 0x40305a20, 0x7f77: 0x402dd420,\n\t0x7f78: 0xe0000abf, 0x7f79: 0xe0000ec4, 0x7f7a: 0x002be888, 0x7f7b: 0x002c4488,\n\t0x7f7c: 0x402c4420, 0x7f7d: 0x002e3888, 0x7f7e: 0x00303e88, 0x7f7f: 0x402ffc20,\n\t// Block 0x1fe, offset 0x7f80\n\t0x7f80: 0x402c2820, 0x7f81: 0x402c7020, 0x7f82: 0x402d1420, 0x7f83: 0x402d4220,\n\t0x7f84: 0x402e0820, 0x7f85: 0x402e5220, 0x7f86: 0x402e8e20, 0x7f87: 0x402ec620,\n\t0x7f88: 0x402f3c20, 0x7f89: 0x402faa20, 0x7f8a: 0x402ff220, 0x7f8b: 0x40301020,\n\t0x7f8c: 0x4030ca20, 0x7f8d: 0x4030fe20, 0x7f8e: 0x40313e20, 0x7f8f: 0x402bea20,\n\t0x7f90: 0x402c0020, 0x7f91: 0x402c8220, 0x7f92: 0x402caa20, 0x7f93: 0x402cca20,\n\t0x7f94: 0x402ce420, 0x7f95: 0x402cc020, 0x7f96: 0x402dc020, 0x7f97: 0x402f0620,\n\t0x7f98: 0x40302220, 0x7f99: 0x40308620, 0x7f9a: 0x40317620, 0x7f9b: 0x002c0294,\n\t0x7f9c: 0x002c3a94, 0x7f9d: 0x002c5694, 0x7f9e: 0xe000296d, 0x7f9f: 0x002cdc94,\n\t0x7fa0: 0x002d0894, 0x7fa1: 0x002dee94, 0x7fa2: 0x002d2a94, 0x7fa3: 0x00308894,\n\t0x7fa4: 0x002db694, 0x7fa5: 0x002dc294, 0x7fa6: 0x002daa94, 0x7fa7: 0x002dbe94,\n\t0x7fa8: 0x002de694, 0x7fa9: 0x002e5494, 0x7faa: 0x002e5294, 0x7fab: 0x002e2a94,\n\t0x7fac: 0x002e9094, 0x7fad: 0x0030ac94, 0x7fae: 0x002eb494, 0x7faf: 0x002ec894,\n\t0x7fb0: 0x002ea694, 0x7fb1: 0x002f1094, 0x7fb2: 0x002f4c94, 0x7fb3: 0x002ff494,\n\t0x7fb4: 0x00300894, 0x7fb5: 0x00304294, 0x7fb6: 0x00307c94, 0x7fb7: 0x0030b494,\n\t0x7fb8: 0x00307494, 0x7fb9: 0x0030cc94, 0x7fba: 0x0030da94, 0x7fbb: 0x00312a94,\n\t0x7fbc: 0x00314894, 0x7fbd: 0x00315094, 0x7fbe: 0x00316494, 0x7fbf: 0x00326a94,\n\t// Block 0x1ff, offset 0x7fc0\n\t0x7fc0: 0xe0000d24, 0x7fc1: 0xe0000d21, 0x7fc2: 0xe0000d2a, 0x7fc3: 0xe0000d27,\n\t0x7fc4: 0xe0000d69, 0x7fc5: 0xe0000d66, 0x7fc6: 0xe0000d7b, 0x7fc7: 0xe0000d78,\n\t0x7fc8: 0xe0000d87, 0x7fc9: 0xe0000d84, 0x7fca: 0xe0000d81, 0x7fcb: 0xe0000d7e,\n\t0x7fcc: 0xe0000ded, 0x7fcd: 0xe0000de9, 0x7fce: 0xe00029a9, 0x7fcf: 0xe00029a6,\n\t0x7fd0: 0xe0000e3d, 0x7fd1: 0xe0000e39, 0x7fd2: 0xe0000e35, 0x7fd3: 0xe0000e31,\n\t0x7fd4: 0xe0000ea7, 0x7fd5: 0xe0000ea4, 0x7fd6: 0xe0000ead, 0x7fd7: 0xe0000eaa,\n\t0x7fd8: 0xe0000ed6, 0x7fd9: 0xe0000ed3, 0x7fda: 0xe0000ef4, 0x7fdb: 0xe0000ef1,\n\t0x7fdc: 0xe0000efb, 0x7fdd: 0xe0000ef7, 0x7fde: 0xe0000f02, 0x7fdf: 0xe0000eff,\n\t0x7fe0: 0xe0000f41, 0x7fe1: 0xe0000f3e, 0x7fe2: 0xe0000f53, 0x7fe3: 0xe0000f50,\n\t0x7fe4: 0xe0000f26, 0x7fe5: 0xe0000f22, 0x7fe6: 0xe0000f3a, 0x7fe7: 0xe0000f36,\n\t0x7fe8: 0xe0000f5a, 0x7fe9: 0xe0000f56, 0x7fea: 0xe0000f93, 0x7feb: 0xe0000f90,\n\t0x7fec: 0xe0000f9f, 0x7fed: 0xe0000f9c, 0x7fee: 0xe0000fb1, 0x7fef: 0xe0000fae,\n\t0x7ff0: 0xe0000fab, 0x7ff1: 0xe0000fa8, 0x7ff2: 0xe0001093, 0x7ff3: 0xe0001090,\n\t0x7ff4: 0xe000109f, 0x7ff5: 0xe000109c, 0x7ff6: 0xe0001099, 0x7ff7: 0xe0001096,\n\t0x7ff8: 0xe0001032, 0x7ff9: 0xe000102e, 0x7ffa: 0xe000298b, 0x7ffb: 0xe0002988,\n\t0x7ffc: 0xe00010a9, 0x7ffd: 0xe00010a6, 0x7ffe: 0xe00010af, 0x7fff: 0xe00010ac,\n\t// Block 0x200, offset 0x8000\n\t0x8000: 0xe00009bc, 0x8001: 0xe00009c0, 0x8002: 0x002c3a8b, 0x8003: 0xf0000a04,\n\t0x8004: 0x40081c20, 0x8005: 0xe0000a5e, 0x8006: 0xe0000a62, 0x8007: 0x002cc28a,\n\t0x8008: 0x40081e20, 0x8009: 0xf0000a04, 0x800a: 0x002d2285, 0x800b: 0x002d688b,\n\t0x800c: 0x002d688b, 0x800d: 0x002d688b, 0x800e: 0x002d6885, 0x800f: 0xf0000202,\n\t0x8010: 0x002d9a8b, 0x8011: 0x002d9a8b, 0x8012: 0x002e228b, 0x8013: 0x002e2285,\n\t0x8014: 0x40082020, 0x8015: 0x002e9e8b, 0x8016: 0xf000040a, 0x8017: 0x40082220,\n\t0x8018: 0x40082420, 0x8019: 0x002f2c8b, 0x801a: 0x002f568b, 0x801b: 0x002f7a8b,\n\t0x801c: 0x002f7a8b, 0x801d: 0x002f7a8b, 0x801e: 0x40082620, 0x801f: 0x40082820,\n\t0x8020: 0xf0001414, 0x8021: 0xe0000fbd, 0x8022: 0xf0001414, 0x8023: 0x40082a20,\n\t0x8024: 0x00312a8b, 0x8025: 0x40082c20, 0x8026: 0x0032a288, 0x8027: 0x40082e20,\n\t0x8028: 0x00312a8b, 0x8029: 0x40083020, 0x802a: 0x002dfe88, 0x802b: 0x00321083,\n\t0x802c: 0x002c0a8b, 0x802d: 0x002c3a8b, 0x802e: 0x40083220, 0x802f: 0x002c9885,\n\t0x8030: 0x002c988b, 0x8031: 0x002d088b, 0x8032: 0x002d1e88, 0x8033: 0x002e828b,\n\t0x8034: 0x002ee285, 0x8035: 0x00389084, 0x8036: 0x00389284, 0x8037: 0x00389484,\n\t0x8038: 0x00389684, 0x8039: 0x002d9a85, 0x803a: 0x40083420, 0x803b: 0xe0000b95,\n\t0x803c: 0x00327e85, 0x803d: 0x00325685, 0x803e: 0x0032568b, 0x803f: 0x00327e8b,\n\t// Block 0x201, offset 0x8040\n\t0x8040: 0xa0000000, 0x8041: 0xa0000000, 0x8042: 0xa0000000, 0x8043: 0xa0000000,\n\t0x8044: 0xa0000000, 0x8045: 0xa0000000, 0x8046: 0xa0000000, 0x8047: 0xa0000000,\n\t0x8048: 0xa0000000, 0x8049: 0x40020020, 0x804a: 0x40020220, 0x804b: 0x40020420,\n\t0x804c: 0x40020620, 0x804d: 0x40020820, 0x804e: 0xa0000000, 0x804f: 0xa0000000,\n\t0x8050: 0xa0000000, 0x8051: 0xa0000000, 0x8052: 0xa0000000, 0x8053: 0xa0000000,\n\t0x8054: 0xa0000000, 0x8055: 0xa0000000, 0x8056: 0xa0000000, 0x8057: 0xa0000000,\n\t0x8058: 0xa0000000, 0x8059: 0xa0000000, 0x805a: 0xa0000000, 0x805b: 0xa0000000,\n\t0x805c: 0xa0000000, 0x805d: 0xa0000000, 0x805e: 0xa0000000, 0x805f: 0xa0000000,\n\t0x8060: 0x40021220, 0x8061: 0x4002ba20, 0x8062: 0x4003e020, 0x8063: 0x4004ea20,\n\t0x8064: 0x4027de20, 0x8065: 0x4004ec20, 0x8066: 0x4004e620, 0x8067: 0x4003d220,\n\t0x8068: 0x4003f420, 0x8069: 0x4003f620, 0x806a: 0x4004d820, 0x806b: 0x40093820,\n\t0x806c: 0x40024020, 0x806d: 0x40021a20, 0x806e: 0x4002e420, 0x806f: 0x4004e220,\n\t0x8070: 0x4029cc20, 0x8071: 0x4029ce20, 0x8072: 0x4029d020, 0x8073: 0x4029d220,\n\t0x8074: 0x4029d420, 0x8075: 0x4029d620, 0x8076: 0x4029d820, 0x8077: 0x4029da20,\n\t0x8078: 0x4029dc20, 0x8079: 0x4029de20, 0x807a: 0x40026c20, 0x807b: 0x40026220,\n\t0x807c: 0x40094020, 0x807d: 0x40094220, 0x807e: 0x40094420, 0x807f: 0x4002c420,\n\t// Block 0x202, offset 0x8080\n\t0x8080: 0x4004d620, 0x8081: 0xc3a80071, 0x8082: 0x002c0a88, 0x8083: 0x002c3a88,\n\t0x8084: 0x002c6288, 0x8085: 0x002c9888, 0x8086: 0x002d0888, 0x8087: 0x002d2288,\n\t0x8088: 0x002d6888, 0x8089: 0x002d9a88, 0x808a: 0x002dcc88, 0x808b: 0x002dfe88,\n\t0x808c: 0xc0030002, 0x808d: 0x002e8288, 0x808e: 0x002e9e88, 0x808f: 0xc3ac0071,\n\t0x8090: 0x002f2c88, 0x8091: 0x002f5688, 0x8092: 0x002f7a88, 0x8093: 0x002fe688,\n\t0x8094: 0x00302c88, 0x8095: 0xc3b00071, 0x8096: 0x0030be88, 0x8097: 0x0030e288,\n\t0x8098: 0x0030f688, 0x8099: 0x00310088, 0x809a: 0x00312a88, 0x809b: 0x4003f820,\n\t0x809c: 0x4004e420, 0x809d: 0x4003fa20, 0x809e: 0x40062420, 0x809f: 0x40021620,\n\t0x80a0: 0x40061e20, 0x80a1: 0xc3a60071, 0x80a2: 0x402c0a20, 0x80a3: 0x402c3a20,\n\t0x80a4: 0x402c6220, 0x80a5: 0x402c9820, 0x80a6: 0x402d0820, 0x80a7: 0x402d2220,\n\t0x80a8: 0x402d6820, 0x80a9: 0x402d9a20, 0x80aa: 0x402dcc20, 0x80ab: 0x402dfe20,\n\t0x80ac: 0xc0000002, 0x80ad: 0x402e8220, 0x80ae: 0x402e9e20, 0x80af: 0xc3aa0071,\n\t0x80b0: 0x402f2c20, 0x80b1: 0x402f5620, 0x80b2: 0x402f7a20, 0x80b3: 0x402fe620,\n\t0x80b4: 0x40302c20, 0x80b5: 0xc3ae0071, 0x80b6: 0x4030be20, 0x80b7: 0x4030e220,\n\t0x80b8: 0x4030f620, 0x80b9: 0x40310020, 0x80ba: 0x40312a20, 0x80bb: 0x4003fc20,\n\t0x80bc: 0x40094820, 0x80bd: 0x4003fe20, 0x80be: 0x40094c20, 0x80bf: 0xa0000000,\n\t// Block 0x203, offset 0x80c0\n\t0x80c0: 0xe00008f5, 0x80c1: 0xe00008ef, 0x80c2: 0xe0000921, 0x80c3: 0xe0000969,\n\t0x80c4: 0xe00029bb, 0x80c5: 0xe000094d, 0x80c6: 0xe00009dd, 0x80c7: 0xe0000a53,\n\t0x80c8: 0xe0000ae8, 0x80c9: 0xe0000ae2, 0x80ca: 0xe0000af4, 0x80cb: 0xe0000b20,\n\t0x80cc: 0xe0000c2b, 0x80cd: 0xe0000c25, 0x80ce: 0xe0000c37, 0x80cf: 0xe0000c43,\n\t0x80d0: 0xe0000ab3, 0x80d1: 0xe0000d63, 0x80d2: 0xe0000d9a, 0x80d3: 0xe0000d94,\n\t0x80d4: 0xe0000da6, 0x80d5: 0xe0000de6, 0x80d6: 0xe00029c9, 0x80d7: 0x40093e20,\n\t0x80d8: 0xe0000e12, 0x80d9: 0xe0000fe1, 0x80da: 0xe0000fdb, 0x80db: 0xe0000fed,\n\t0x80dc: 0xe00029df, 0x80dd: 0xe0001102, 0x80de: 0x00318888, 0x80df: 0xe0000f7b,\n\t0x80e0: 0xe00008f2, 0x80e1: 0xe00008ec, 0x80e2: 0xe000091e, 0x80e3: 0xe0000966,\n\t0x80e4: 0xe00029b8, 0x80e5: 0xe000094a, 0x80e6: 0xe00009d5, 0x80e7: 0xe0000a4d,\n\t0x80e8: 0xe0000ae5, 0x80e9: 0xe0000adf, 0x80ea: 0xe0000af1, 0x80eb: 0xe0000b1d,\n\t0x80ec: 0xe0000c28, 0x80ed: 0xe0000c22, 0x80ee: 0xe0000c34, 0x80ef: 0xe0000c40,\n\t0x80f0: 0xe0000aad, 0x80f1: 0xe0000d60, 0x80f2: 0xe0000d97, 0x80f3: 0xe0000d91,\n\t0x80f4: 0xe0000da3, 0x80f5: 0xe0000de3, 0x80f6: 0xe00029c6, 0x80f7: 0x40093c20,\n\t0x80f8: 0xe0000e0f, 0x80f9: 0xe0000fde, 0x80fa: 0xe0000fd8, 0x80fb: 0xe0000fea,\n\t0x80fc: 0xe00029dc, 0x80fd: 0xe00010ff, 0x80fe: 0x40318820, 0x80ff: 0xe0001114,\n\t// Block 0x204, offset 0x8100\n\t0x8100: 0x40321220, 0x8101: 0x40321a20, 0x8102: 0x40322220, 0x8103: 0x40322a20,\n\t0x8104: 0xe0000ad5, 0x8105: 0xe0000ad1, 0x8106: 0xe0000acd, 0x8107: 0xf0000a0a,\n\t0x8108: 0xf000040a, 0x8109: 0xf0000404, 0x810a: 0xf0000a0a, 0x810b: 0xf000040a,\n\t0x810c: 0xf0000404, 0x810d: 0xe0000947, 0x810e: 0xe0000944, 0x810f: 0xe0000c3d,\n\t0x8110: 0xe0000c3a, 0x8111: 0xe0000dcc, 0x8112: 0xe0000dc9, 0x8113: 0xe0000ff3,\n\t0x8114: 0xe0000ff0, 0x8115: 0xe00029fe, 0x8116: 0xe00029fa, 0x8117: 0xe00029e6,\n\t0x8118: 0xe00029e2, 0x8119: 0xe00029f6, 0x811a: 0xe00029f2, 0x811b: 0xe00029ee,\n\t0x811c: 0xe00029ea, 0x811d: 0x402cae20, 0x811e: 0xe00029c2, 0x811f: 0xe00029be,\n\t0x8120: 0xe0000976, 0x8121: 0xe0000972, 0x8122: 0xe00009f4, 0x8123: 0xe00009ef,\n\t0x8124: 0x002d3a88, 0x8125: 0x402d3a20, 0x8126: 0xe0000bbe, 0x8127: 0xe0000bbb,\n\t0x8128: 0xe0000c99, 0x8129: 0xe0000c96, 0x812a: 0xe0000e20, 0x812b: 0xe0000e1d,\n\t0x812c: 0xe0000e27, 0x812d: 0xe0000e23, 0x812e: 0xe0001162, 0x812f: 0xe000115f,\n\t0x8130: 0xe0000c8d, 0x8131: 0xf0000a0a, 0x8132: 0xf000040a, 0x8133: 0xf0000404,\n\t0x8134: 0xe0000bac, 0x8135: 0xe0000ba9, 0x8136: 0x002d7888, 0x8137: 0x00319488,\n\t0x8138: 0xe0000d57, 0x8139: 0xe0000d54, 0x813a: 0xe0000954, 0x813b: 0xe0000950,\n\t0x813c: 0xe00009ea, 0x813d: 0xe00009e5, 0x813e: 0xe0000e19, 0x813f: 0xe0000e15,\n\t// Block 0x205, offset 0x8140\n\t0x8140: 0xe000098f, 0x8141: 0xe000098c, 0x8142: 0xe0000995, 0x8143: 0xe0000992,\n\t0x8144: 0xe0000b62, 0x8145: 0xe0000b5f, 0x8146: 0xe0000b68, 0x8147: 0xe0000b65,\n\t0x8148: 0xe0000c6c, 0x8149: 0xe0000c69, 0x814a: 0xe0000c72, 0x814b: 0xe0000c6f,\n\t0x814c: 0xe0000e4a, 0x814d: 0xe0000e47, 0x814e: 0xe0000e50, 0x814f: 0xe0000e4d,\n\t0x8150: 0xe0000ee8, 0x8151: 0xe0000ee5, 0x8152: 0xe0000eee, 0x8153: 0xe0000eeb,\n\t0x8154: 0xe0001053, 0x8155: 0xe0001050, 0x8156: 0xe0001059, 0x8157: 0xe0001056,\n\t0x8158: 0xe0000f61, 0x8159: 0xe0000f5e, 0x815a: 0xe0000fa5, 0x815b: 0xe0000fa2,\n\t0x815c: 0x00312288, 0x815d: 0x40312220, 0x815e: 0xe0000bf4, 0x815f: 0xe0000bf1,\n\t0x8160: 0x002ebc88, 0x8161: 0x402c8c20, 0x8162: 0x002f2288, 0x8163: 0x402f2220,\n\t0x8164: 0x00314088, 0x8165: 0x40314020, 0x8166: 0xe000096f, 0x8167: 0xe000096c,\n\t0x8168: 0xe0000b32, 0x8169: 0xe0000b2f, 0x816a: 0xe00029d8, 0x816b: 0xe00029d4,\n\t0x816c: 0xe0000dfd, 0x816d: 0xe0000df9, 0x816e: 0xe0000e04, 0x816f: 0xe0000e01,\n\t0x8170: 0xe0000e0b, 0x8171: 0xe0000e07, 0x8172: 0xe0001129, 0x8173: 0xe0001126,\n\t0x8174: 0x402e5e20, 0x8175: 0x402ed020, 0x8176: 0x40305a20, 0x8177: 0x402dd420,\n\t0x8178: 0xe0000abf, 0x8179: 0xe0000ec4, 0x817a: 0x002be888, 0x817b: 0x002c4488,\n\t0x817c: 0x402c4420, 0x817d: 0x002e3888, 0x817e: 0x00303e88, 0x817f: 0x402ffc20,\n\t// Block 0x206, offset 0x8180\n\t0x8180: 0xe0000d24, 0x8181: 0xe0000d21, 0x8182: 0xe0000d2a, 0x8183: 0xe0000d27,\n\t0x8184: 0xe0000d69, 0x8185: 0xe0000d66, 0x8186: 0xe0000d7b, 0x8187: 0xe0000d78,\n\t0x8188: 0xe0000d87, 0x8189: 0xe0000d84, 0x818a: 0xe0000d81, 0x818b: 0xe0000d7e,\n\t0x818c: 0xe0000ded, 0x818d: 0xe0000de9, 0x818e: 0xe00029d0, 0x818f: 0xe00029cc,\n\t0x8190: 0xe0000e3d, 0x8191: 0xe0000e39, 0x8192: 0xe0000e35, 0x8193: 0xe0000e31,\n\t0x8194: 0xe0000ea7, 0x8195: 0xe0000ea4, 0x8196: 0xe0000ead, 0x8197: 0xe0000eaa,\n\t0x8198: 0xe0000ed6, 0x8199: 0xe0000ed3, 0x819a: 0xe0000ef4, 0x819b: 0xe0000ef1,\n\t0x819c: 0xe0000efb, 0x819d: 0xe0000ef7, 0x819e: 0xe0000f02, 0x819f: 0xe0000eff,\n\t0x81a0: 0xe0000f41, 0x81a1: 0xe0000f3e, 0x81a2: 0xe0000f53, 0x81a3: 0xe0000f50,\n\t0x81a4: 0xe0000f26, 0x81a5: 0xe0000f22, 0x81a6: 0xe0000f3a, 0x81a7: 0xe0000f36,\n\t0x81a8: 0xe0000f5a, 0x81a9: 0xe0000f56, 0x81aa: 0xe0000f93, 0x81ab: 0xe0000f90,\n\t0x81ac: 0xe0000f9f, 0x81ad: 0xe0000f9c, 0x81ae: 0xe0000fb1, 0x81af: 0xe0000fae,\n\t0x81b0: 0xe0000fab, 0x81b1: 0xe0000fa8, 0x81b2: 0xe0001093, 0x81b3: 0xe0001090,\n\t0x81b4: 0xe000109f, 0x81b5: 0xe000109c, 0x81b6: 0xe0001099, 0x81b7: 0xe0001096,\n\t0x81b8: 0xe0001032, 0x81b9: 0xe000102e, 0x81ba: 0xe00029fe, 0x81bb: 0xe00029fa,\n\t0x81bc: 0xe00010a9, 0x81bd: 0xe00010a6, 0x81be: 0xe00010af, 0x81bf: 0xe00010ac,\n\t// Block 0x207, offset 0x81c0\n\t0x81c0: 0x40078220, 0x81c1: 0x40075e20, 0x81c2: 0x40076020, 0x81c3: 0x40076220,\n\t0x81c4: 0x40058220, 0x81c5: 0x40058420, 0x81c6: 0x40058620, 0x81c7: 0x40058820,\n\t0x81c8: 0x40058a20, 0x81c9: 0x40058c20, 0x81ca: 0x40058e20, 0x81cb: 0x4027bc20,\n\t0x81cc: 0x0027bc83, 0x81cd: 0x4027bc21, 0x81ce: 0x4027bc22, 0x81cf: 0x4027bc23,\n\t0x81d0: 0x4027bc24, 0x81d1: 0x4027bc25, 0x81d2: 0x4005a020, 0x81d3: 0x40076420,\n\t0x81d4: 0x4027bc26, 0x81d5: 0x40076620, 0x81d6: 0x40076820, 0x81d7: 0x40076a20,\n\t0x81d8: 0xadc00000, 0x81d9: 0xadc00000, 0x81da: 0x40076c20, 0x81db: 0x40076e20,\n\t0x81dc: 0x40077020, 0x81dd: 0x40077220, 0x81de: 0x40077420, 0x81df: 0x40077620,\n\t0x81e0: 0xe00001a0, 0x81e1: 0xe0000234, 0x81e2: 0xe000034c, 0x81e3: 0xe0000426,\n\t0x81e4: 0xe00004fb, 0x81e5: 0xe00005c5, 0x81e6: 0xe0000690, 0x81e7: 0xe0000738,\n\t0x81e8: 0xe00007e4, 0x81e9: 0xe0000889, 0x81ea: 0xe0000237, 0x81eb: 0xe000034f,\n\t0x81ec: 0xe0000429, 0x81ed: 0xe00004fe, 0x81ee: 0xe00005c8, 0x81ef: 0xe0000693,\n\t0x81f0: 0xe000073b, 0x81f1: 0xe00007e7, 0x81f2: 0xe000088c, 0x81f3: 0xe00001a3,\n\t0x81f4: 0x4027bc27, 0x81f5: 0xadc00000, 0x81f6: 0x40077a20, 0x81f7: 0xadc00000,\n\t0x81f8: 0x40077c20, 0x81f9: 0xae611002, 0x81fa: 0x40040020, 0x81fb: 0x40040220,\n\t0x81fc: 0x40040420, 0x81fd: 0x40040620, 0x81fe: 0xa0000000, 0x81ff: 0xa0000000,\n\t// Block 0x208, offset 0x8200\n\t0x8200: 0x404a7620, 0x8201: 0x404a7c20, 0x8202: 0xc4db2161, 0x8203: 0xe0002a23,\n\t0x8204: 0x404a8420, 0x8205: 0x404a8820, 0x8206: 0x404a8c20, 0x8207: 0x404a9020,\n\t0x8209: 0x404a9420, 0x820a: 0x004aa883, 0x820b: 0x004aac83,\n\t0x820c: 0x004ab083, 0x820d: 0xe0002a5b, 0x820e: 0x004ab483, 0x820f: 0x404aa820,\n\t0x8210: 0x404aac20, 0x8211: 0xc3b50c31, 0x8212: 0xe0002a58, 0x8213: 0x404ab420,\n\t0x8214: 0x404ab820, 0x8215: 0x404abc20, 0x8216: 0xc3ff1211, 0x8217: 0xe0002a7c,\n\t0x8218: 0xc46018e1, 0x8219: 0x404ac820, 0x821a: 0x404acc20, 0x821b: 0x404ad020,\n\t0x821c: 0xe0002a9d, 0x821d: 0x404ad420, 0x821e: 0x404ad820, 0x821f: 0x404adc20,\n\t0x8220: 0xc49b1d01, 0x8221: 0x404ae420, 0x8222: 0xc4481761, 0x8223: 0xc4551831,\n\t0x8224: 0x404af220, 0x8225: 0x004af283, 0x8226: 0xc48f1c51, 0x8227: 0x404afe20,\n\t0x8228: 0x404b0220, 0x8229: 0xe0002a02, 0x822a: 0x004ae883, 0x822b: 0x404a7a20,\n\t0x822c: 0x404aec20,\n\t0x8231: 0xc5270751, 0x8232: 0x8282258c, 0x8233: 0x8281258d,\n\t0x8234: 0x82842590, 0x8235: 0x82812591, 0x8236: 0x404b2420, 0x8237: 0x404b2620,\n\t0x8238: 0x404b2820, 0x8239: 0x404b2a20, 0x823a: 0x82822596, 0x823b: 0x83822596,\n\t0x823c: 0x82822598, 0x823d: 0x83822598, 0x823e: 0x004ac483, 0x823f: 0xae611102,\n\t// Block 0x209, offset 0x8240\n\t0x8240: 0x8382258c, 0x8241: 0x8281258f, 0x8242: 0x004ac484, 0x8243: 0x004ac485,\n\t0x8244: 0xae610e02, 0x8245: 0xae611202, 0x8246: 0xae600000, 0x8247: 0xae600000,\n\t0x8248: 0xc3b20c01, 0x8249: 0xc5122551, 0x824a: 0xae611502, 0x824b: 0xc5102521,\n\t0x824c: 0x404b0e20, 0x824d: 0x404b0820, 0x824e: 0x404b0c20, 0x824f: 0x404b1020,\n\t0x8250: 0x82822599, 0x8251: 0x8282259a, 0x8252: 0x8282259b, 0x8253: 0xe0002ac7,\n\t0x8254: 0x8282259c, 0x8255: 0x8282259d, 0x8256: 0x8282259e, 0x8257: 0x8282259f,\n\t0x8259: 0x828225a0, 0x825a: 0x838225a1, 0x825b: 0x838225a2,\n\t0x825c: 0x838225a3, 0x825d: 0xe0002acd, 0x825e: 0x838225a4, 0x825f: 0x828225a1,\n\t0x8260: 0x828225a2, 0x8261: 0x828225a3, 0x8262: 0xe0002aca, 0x8263: 0x828225a4,\n\t0x8264: 0x828225a5, 0x8265: 0x828225a6, 0x8266: 0x828225a7, 0x8267: 0xe0002ad0,\n\t0x8268: 0x828225a8, 0x8269: 0x828225a9, 0x826a: 0x828225aa, 0x826b: 0x828225ab,\n\t0x826c: 0xe0002ad3, 0x826d: 0x828225ac, 0x826e: 0x828225ad, 0x826f: 0x828225ae,\n\t0x8270: 0x828225af, 0x8271: 0x828225b0, 0x8272: 0xc5152581, 0x8273: 0xc51e2581,\n\t0x8274: 0x828225b3, 0x8275: 0x838225b3, 0x8276: 0x828225b4, 0x8277: 0x828225b5,\n\t0x8278: 0x828225b6, 0x8279: 0xe0002ac4, 0x827a: 0x838225ac, 0x827b: 0x838225b0,\n\t0x827c: 0x838225b1, 0x827e: 0x40077e20, 0x827f: 0x40078020,\n\t// Block 0x20a, offset 0x8280\n\t0x8280: 0xa0000000, 0x8281: 0xa0000000, 0x8282: 0xa0000000, 0x8283: 0xa0000000,\n\t0x8284: 0xa0000000, 0x8285: 0xa0000000, 0x8286: 0xa0000000, 0x8287: 0xa0000000,\n\t0x8288: 0xa0000000, 0x8289: 0x40020020, 0x828a: 0x40020220, 0x828b: 0x40020420,\n\t0x828c: 0x40020620, 0x828d: 0x40020820, 0x828e: 0xa0000000, 0x828f: 0xa0000000,\n\t0x8290: 0xa0000000, 0x8291: 0xa0000000, 0x8292: 0xa0000000, 0x8293: 0xa0000000,\n\t0x8294: 0xa0000000, 0x8295: 0xa0000000, 0x8296: 0xa0000000, 0x8297: 0xa0000000,\n\t0x8298: 0xa0000000, 0x8299: 0xa0000000, 0x829a: 0xa0000000, 0x829b: 0xa0000000,\n\t0x829c: 0xa0000000, 0x829d: 0xa0000000, 0x829e: 0xa0000000, 0x829f: 0xa0000000,\n\t0x82a0: 0x40021220, 0x82a1: 0x4002ba20, 0x82a2: 0x4003e020, 0x82a3: 0x4004ea20,\n\t0x82a4: 0x4027de20, 0x82a5: 0x4004ec20, 0x82a6: 0x4004e620, 0x82a7: 0x4003d220,\n\t0x82a8: 0x4003f420, 0x82a9: 0x4003f620, 0x82aa: 0x4004d820, 0x82ab: 0x40093820,\n\t0x82ac: 0x40024020, 0x82ad: 0x40021a20, 0x82ae: 0x4002e420, 0x82af: 0x4004e220,\n\t0x82b0: 0x4029cc20, 0x82b1: 0x4029ce20, 0x82b2: 0x4029d020, 0x82b3: 0x4029d220,\n\t0x82b4: 0x4029d420, 0x82b5: 0x4029d620, 0x82b6: 0x4029d820, 0x82b7: 0x4029da20,\n\t0x82b8: 0x4029dc20, 0x82b9: 0x4029de20, 0x82ba: 0x40026c20, 0x82bb: 0x40026220,\n\t0x82bc: 0x40094020, 0x82bd: 0x40094220, 0x82be: 0x40094420, 0x82bf: 0x4002c420,\n\t// Block 0x20b, offset 0x82c0\n\t0x82c0: 0x4004d620, 0x82c1: 0x002bde88, 0x82c2: 0x002c0a88, 0x82c3: 0x002c3a88,\n\t0x82c4: 0xc36a2662, 0x82c5: 0x002c9888, 0x82c6: 0x002d0888, 0x82c7: 0xc52b2692,\n\t0x82c8: 0x002d6888, 0x82c9: 0x002d9a88, 0x82ca: 0x002dcc88, 0x82cb: 0xc53026c2,\n\t0x82cc: 0xc0030002, 0x82cd: 0x002e8288, 0x82ce: 0xc53526f2, 0x82cf: 0x002ee288,\n\t0x82d0: 0x002f2c88, 0x82d1: 0x002f5688, 0x82d2: 0x002f7a88, 0x82d3: 0x002fe688,\n\t0x82d4: 0xc38a2722, 0x82d5: 0x00306c88, 0x82d6: 0x0030be88, 0x82d7: 0x0030e288,\n\t0x82d8: 0x002d6a83, 0x82d9: 0x00310088, 0x82da: 0x00312a88, 0x82db: 0x4003f820,\n\t0x82dc: 0x4004e420, 0x82dd: 0x4003fa20, 0x82de: 0x40062420, 0x82df: 0x40021620,\n\t0x82e0: 0x40061e20, 0x82e1: 0x402bde20, 0x82e2: 0x402c0a20, 0x82e3: 0x402c3a20,\n\t0x82e4: 0xc3682651, 0x82e5: 0x402c9820, 0x82e6: 0x402d0820, 0x82e7: 0xc3372681,\n\t0x82e8: 0x402d6820, 0x82e9: 0x402d9a20, 0x82ea: 0x402dcc20, 0x82eb: 0xc52e26b1,\n\t0x82ec: 0xc0000002, 0x82ed: 0x402e8220, 0x82ee: 0xc53326e1, 0x82ef: 0x402ee220,\n\t0x82f0: 0x402f2c20, 0x82f1: 0x402f5620, 0x82f2: 0x402f7a20, 0x82f3: 0x402fe620,\n\t0x82f4: 0xc3882711, 0x82f5: 0x40306c20, 0x82f6: 0x4030be20, 0x82f7: 0x4030e220,\n\t0x82f8: 0x402d6a20, 0x82f9: 0x40310020, 0x82fa: 0x40312a20, 0x82fb: 0x4003fc20,\n\t0x82fc: 0x40094820, 0x82fd: 0x4003fe20, 0x82fe: 0x40094c20, 0x82ff: 0xa0000000,\n\t// Block 0x20c, offset 0x8300\n\t0x8300: 0xe00008f5, 0x8301: 0xe00008ef, 0x8302: 0xe0002ad9, 0x8303: 0xe0000969,\n\t0x8304: 0xe000095b, 0x8305: 0xe000094d, 0x8306: 0xe00009dd, 0x8307: 0xe0000a53,\n\t0x8308: 0xe0000ae8, 0x8309: 0xe0000ae2, 0x830a: 0xe0002b0d, 0x830b: 0xe0000b20,\n\t0x830c: 0xe0000c2b, 0x830d: 0xe0000c25, 0x830e: 0xe0002b47, 0x830f: 0xe0000c43,\n\t0x8310: 0xe0000ab3, 0x8311: 0xe0000d63, 0x8312: 0xe0000d9a, 0x8313: 0xe0000d94,\n\t0x8314: 0xe0002b53, 0x8315: 0xe0000de6, 0x8316: 0xe0000dd2, 0x8317: 0x40093e20,\n\t0x8318: 0xe0000e12, 0x8319: 0xe0000fe1, 0x831a: 0xe0000fdb, 0x831b: 0xe0002b87,\n\t0x831c: 0xe0000fff, 0x831d: 0xe0001102, 0x831e: 0x00318888, 0x831f: 0xe0000f7b,\n\t0x8320: 0xe00008f2, 0x8321: 0xe00008ec, 0x8322: 0xe0002ad6, 0x8323: 0xe0000966,\n\t0x8324: 0xe0000958, 0x8325: 0xe000094a, 0x8326: 0xe00009d5, 0x8327: 0xe0000a4d,\n\t0x8328: 0xe0000ae5, 0x8329: 0xe0000adf, 0x832a: 0xe0002b0a, 0x832b: 0xe0000b1d,\n\t0x832c: 0xe0000c28, 0x832d: 0xe0000c22, 0x832e: 0xe0002b44, 0x832f: 0xe0000c40,\n\t0x8330: 0xe0000aad, 0x8331: 0xe0000d60, 0x8332: 0xe0000d97, 0x8333: 0xe0000d91,\n\t0x8334: 0xe0002b50, 0x8335: 0xe0000de3, 0x8336: 0xe0000dcf, 0x8337: 0x40093c20,\n\t0x8338: 0xe0000e0f, 0x8339: 0xe0000fde, 0x833a: 0xe0000fd8, 0x833b: 0xe0002b84,\n\t0x833c: 0xe0000ffc, 0x833d: 0xe00010ff, 0x833e: 0x40318820, 0x833f: 0xe0001114,\n\t// Block 0x20d, offset 0x8340\n\t0x8340: 0xe0000983, 0x8341: 0xe0000980, 0x8342: 0xe00008fb, 0x8343: 0xe00008f8,\n\t0x8344: 0xe000097d, 0x8345: 0xe000097a, 0x8346: 0xe0000a38, 0x8347: 0xe0000a35,\n\t0x8348: 0xe0002b07, 0x8349: 0xe0002b04, 0x834a: 0xe0000a4a, 0x834b: 0xe0000a47,\n\t0x834c: 0xe0000a44, 0x834d: 0xe0000a41, 0x834e: 0xe0000a86, 0x834f: 0xe0000a83,\n\t0x8350: 0xe0000aaa, 0x8351: 0xe0000aa7, 0x8352: 0xe0000b46, 0x8353: 0xe0000b43,\n\t0x8354: 0xe0000aee, 0x8355: 0xe0000aeb, 0x8356: 0xe0000b2c, 0x8357: 0xe0000b29,\n\t0x8358: 0xe0000b40, 0x8359: 0xe0000b3d, 0x835a: 0xe0000b1a, 0x835b: 0xe0000b17,\n\t0x835c: 0xe0002b3b, 0x835d: 0xe0002b38, 0x835e: 0xe0000bb2, 0x835f: 0xe0000baf,\n\t0x8360: 0xe0000bc4, 0x8361: 0xe0000bc1, 0x8362: 0xe0000bca, 0x8363: 0xe0000bc7,\n\t0x8364: 0xe0002b41, 0x8365: 0xe0002b3e, 0x8366: 0xe0000c1b, 0x8367: 0xe0000c18,\n\t0x8368: 0xe0000c51, 0x8369: 0xe0000c4e, 0x836a: 0xe0000c60, 0x836b: 0xe0000c5d,\n\t0x836c: 0xe0000c31, 0x836d: 0xe0000c2e, 0x836e: 0xe0000c5a, 0x836f: 0xe0000c57,\n\t0x8370: 0xe0000c54, 0x8371: 0x402da220, 0x8372: 0xf0000a0a, 0x8373: 0xf0000404,\n\t0x8374: 0xe0002b4d, 0x8375: 0xe0002b4a, 0x8376: 0xe0000c9f, 0x8377: 0xe0000c9c,\n\t0x8378: 0x402f7220, 0x8379: 0xe0000ccc, 0x837a: 0xe0000cc9, 0x837b: 0xe0000cd8,\n\t0x837c: 0xe0000cd5, 0x837d: 0xe0000cd2, 0x837e: 0xe0000ccf, 0x837f: 0xe0000d04,\n\t// Block 0x20e, offset 0x8380\n\t0x8380: 0xe0000cfe, 0x8381: 0xe0000cf8, 0x8382: 0xe0000cf5, 0x8383: 0xe0000d51,\n\t0x8384: 0xe0000d4e, 0x8385: 0xe0000d6f, 0x8386: 0xe0000d6c, 0x8387: 0xe0000d5d,\n\t0x8388: 0xe0000d5a, 0x8389: 0xf0000404, 0x838a: 0x002ea283, 0x838b: 0x402ea220,\n\t0x838c: 0xe0000e2e, 0x838d: 0xe0000e2b, 0x838e: 0xe0000da0, 0x838f: 0xe0000d9d,\n\t0x8390: 0xe0000de0, 0x8391: 0xe0000ddd, 0x8392: 0xe0000e93, 0x8393: 0xe0000e8f,\n\t0x8394: 0xe0000eca, 0x8395: 0xe0000ec7, 0x8396: 0xe0000edc, 0x8397: 0xe0000ed9,\n\t0x8398: 0xe0000ed0, 0x8399: 0xe0000ecd, 0x839a: 0xe0000f1f, 0x839b: 0xe0000f1c,\n\t0x839c: 0xe0002b81, 0x839d: 0xe0002b7e, 0x839e: 0xe0000f47, 0x839f: 0xe0000f44,\n\t0x83a0: 0xe0000f33, 0x83a1: 0xe0000f30, 0x83a2: 0xe0000f99, 0x83a3: 0xe0000f96,\n\t0x83a4: 0xe0000f8a, 0x83a5: 0xe0000f87, 0x83a6: 0x00303688, 0x83a7: 0x40303620,\n\t0x83a8: 0xe000102b, 0x83a9: 0xe0001028, 0x83aa: 0xe000103f, 0x83ab: 0xe000103c,\n\t0x83ac: 0xe0000fe7, 0x83ad: 0xe0000fe4, 0x83ae: 0xe0000ff9, 0x83af: 0xe0000ff6,\n\t0x83b0: 0xe0001025, 0x83b1: 0xe0001022, 0x83b2: 0xe0001039, 0x83b3: 0xe0001036,\n\t0x83b4: 0xe0002b8d, 0x83b5: 0xe0002b8a, 0x83b6: 0xe0002b93, 0x83b7: 0xe0002b90,\n\t0x83b8: 0xe0001117, 0x83b9: 0xe000113b, 0x83ba: 0xe0001138, 0x83bb: 0xe000114d,\n\t0x83bc: 0xe000114a, 0x83bd: 0xe0001147, 0x83be: 0xe0001144, 0x83bf: 0xe0000f64,\n\t// Block 0x20f, offset 0x83c0\n\t0x83c0: 0x402c1a20, 0x83c1: 0x002c2a88, 0x83c2: 0x002c3288, 0x83c3: 0x402c3220,\n\t0x83c4: 0x0031c488, 0x83c5: 0x4031c420, 0x83c6: 0x002ee483, 0x83c7: 0x002c4e88,\n\t0x83c8: 0x402c4e20, 0x83c9: 0x002c6683, 0x83ca: 0x002c7a88, 0x83cb: 0x002c8488,\n\t0x83cc: 0x402c8420, 0x83cd: 0xe000115c, 0x83ce: 0x002cae88, 0x83cf: 0x002cb888,\n\t0x83d0: 0x002c9a83, 0x83d1: 0x002d0a83, 0x83d2: 0x402d0a20, 0x83d3: 0x002d4488,\n\t0x83d4: 0x002d2683, 0x83d5: 0x402d7820, 0x83d6: 0x002dc288, 0x83d7: 0x002db688,\n\t0x83d8: 0x002e0a88, 0x83d9: 0x402e0a20, 0x83da: 0x402e3820, 0x83db: 0x402e7220,\n\t0x83dc: 0x0030a088, 0x83dd: 0x002eb488, 0x83de: 0x402ebc20, 0x83df: 0x002f1088,\n\t0x83e0: 0xe0000e56, 0x83e1: 0xe0000e53, 0x83e2: 0x002d6088, 0x83e3: 0x402d6020,\n\t0x83e4: 0x002f3e88, 0x83e5: 0x402f3e20, 0x83e6: 0x002f8288, 0x83e7: 0x0031b488,\n\t0x83e8: 0x4031b420, 0x83e9: 0x00300888, 0x83ea: 0x40301220, 0x83eb: 0x40304220,\n\t0x83ec: 0x00304a88, 0x83ed: 0x40304a20, 0x83ee: 0x00305288, 0x83ef: 0xe000105f,\n\t0x83f0: 0xe000105c, 0x83f1: 0x0030b488, 0x83f2: 0x0030c083, 0x83f3: 0x00311888,\n\t0x83f4: 0x40311820, 0x83f5: 0x00313488, 0x83f6: 0x40313420, 0x83f7: 0x00316488,\n\t0x83f8: 0x00316e88, 0x83f9: 0x40316e20, 0x83fa: 0x40317820, 0x83fb: 0x4031a620,\n\t0x83fc: 0x0031bc88, 0x83fd: 0x4031bc20, 0x83fe: 0xe0000fc9, 0x83ff: 0x40319420,\n\t// Block 0x210, offset 0x8400\n\t0x8400: 0x40315820, 0x8401: 0x0031d488, 0x8402: 0x4031d420, 0x8403: 0x002c1a88,\n\t0x8404: 0x00307c88, 0x8405: 0x0030da88, 0x8406: 0x002ca288, 0x8407: 0x402ca220,\n\t0x8408: 0x002dde88, 0x8409: 0x402dde20, 0x840a: 0x002f6a88, 0x840b: 0x402f6a20,\n\t0x840c: 0x002f8e88, 0x840d: 0x402f8e20, 0x840e: 0x00311088, 0x840f: 0x40311020,\n\t0x8410: 0x402bf020, 0x8411: 0x402bf820, 0x8412: 0x402c0220, 0x8413: 0x402c2a20,\n\t0x8414: 0x402ee420, 0x8415: 0x402c5620, 0x8416: 0x402c6620, 0x8417: 0x402c7a20,\n\t0x8418: 0x402ccc20, 0x8419: 0x402cb820, 0x841a: 0x402cd420, 0x841b: 0x402c9a20,\n\t0x841c: 0x402cdc20, 0x841d: 0x402ce820, 0x841e: 0x402cf020, 0x841f: 0x402dee20,\n\t0x8420: 0x402d4420, 0x8421: 0x402d2a20, 0x8422: 0x402d3220, 0x8423: 0x402d2620,\n\t0x8424: 0x402d0020, 0x8425: 0x40308820, 0x8426: 0x402d8020, 0x8427: 0x402d8e20,\n\t0x8428: 0x402db620, 0x8429: 0x402dc220, 0x842a: 0x402daa20, 0x842b: 0x402e4220,\n\t0x842c: 0x402e4a20, 0x842d: 0x402e5420, 0x842e: 0x402e6820, 0x842f: 0x4030a020,\n\t0x8430: 0x4030ac20, 0x8431: 0x402e9020, 0x8432: 0x402eb420, 0x8433: 0x402ec820,\n\t0x8434: 0x402ea620, 0x8435: 0x402f1020, 0x8436: 0x402eee20, 0x8437: 0x402f1a20,\n\t0x8438: 0x402f4c20, 0x8439: 0x402f9820, 0x843a: 0x402fa220, 0x843b: 0x402fac20,\n\t0x843c: 0x402fb620, 0x843d: 0x402fbe20, 0x843e: 0x402fc620, 0x843f: 0x402fd020,\n\t// Block 0x211, offset 0x8440\n\t0x8440: 0x402f8220, 0x8441: 0x402fd820, 0x8442: 0x402ff420, 0x8443: 0x40300820,\n\t0x8444: 0x402df620, 0x8445: 0x40301a20, 0x8446: 0x40302420, 0x8447: 0x40306420,\n\t0x8448: 0x40305220, 0x8449: 0x40307c20, 0x844a: 0x4030b420, 0x844b: 0x4030c020,\n\t0x844c: 0x4030da20, 0x844d: 0x4030ee20, 0x844e: 0x402e7a20, 0x844f: 0x40310820,\n\t0x8450: 0x40314820, 0x8451: 0x40315020, 0x8452: 0x40316420, 0x8453: 0x40318020,\n\t0x8454: 0x4031cc20, 0x8455: 0x4031e820, 0x8456: 0x40320a20, 0x8457: 0x40323220,\n\t0x8458: 0x40323a20, 0x8459: 0x402c1220, 0x845a: 0x402cf820, 0x845b: 0x402d4c20,\n\t0x845c: 0x402d7020, 0x845d: 0x402de620, 0x845e: 0x402e1a20, 0x845f: 0x402e2a20,\n\t0x8460: 0x402f6220, 0x8461: 0x4031fa20, 0x8462: 0x40320220, 0x8463: 0xe0000aca,\n\t0x8464: 0xe0000adc, 0x8465: 0xe0000ad9, 0x8466: 0xe0000fcc, 0x8467: 0xe0000fcf,\n\t0x8468: 0xe0000fba, 0x8469: 0xe0000ba1, 0x846a: 0xe0000d11, 0x846b: 0xe0000d18,\n\t0x846c: 0x40324220, 0x846d: 0x40324a20, 0x846e: 0x40309020, 0x846f: 0x40309820,\n\t0x8470: 0x002d6894, 0x8471: 0x002d8094, 0x8472: 0x002dcc94, 0x8473: 0x002f7a94,\n\t0x8474: 0x002f9894, 0x8475: 0x002fac94, 0x8476: 0x002fd894, 0x8477: 0x0030e294,\n\t0x8478: 0x00310094, 0x8479: 0x40064020, 0x847a: 0x40064420, 0x847b: 0x402d9620,\n\t0x847c: 0x4031de20, 0x847d: 0x402d9820, 0x847e: 0x4031e220, 0x847f: 0x4031f020,\n\t// Block 0x212, offset 0x8480\n\t0x8480: 0xae603502, 0x8481: 0xae603202, 0x8482: 0xae604202, 0x8483: 0xae604e02,\n\t0x8484: 0xae605b02, 0x8485: 0xae606302, 0x8486: 0xae603702, 0x8487: 0xae605202,\n\t0x8488: 0xae604702, 0x8489: 0xae606402, 0x848a: 0xae604302, 0x848b: 0xae604d02,\n\t0x848c: 0xae604102, 0x848d: 0xae605f02, 0x848e: 0xae605f02, 0x848f: 0xae606502,\n\t0x8490: 0xae606602, 0x8491: 0xae606702, 0x8492: 0xae605f02, 0x8493: 0xae602202,\n\t0x8494: 0xae602a02, 0x8495: 0xae805f02, 0x8496: 0xadc06002, 0x8497: 0xadc06002,\n\t0x8498: 0xadc06002, 0x8499: 0xadc06002, 0x849a: 0xae805f02, 0x849b: 0xad806802,\n\t0x849c: 0xadc06002, 0x849d: 0xadc06002, 0x849e: 0xadc06002, 0x849f: 0xadc06002,\n\t0x84a0: 0xadc06002, 0x84a1: 0xaca06e02, 0x84a2: 0xaca06f02, 0x84a3: 0xadc07002,\n\t0x84a4: 0xadc07502, 0x84a5: 0xadc07602, 0x84a6: 0xadc07702, 0x84a7: 0xaca05602,\n\t0x84a8: 0xaca05902, 0x84a9: 0xadc06002, 0x84aa: 0xadc06002, 0x84ab: 0xadc06002,\n\t0x84ac: 0xadc06002, 0x84ad: 0xadc07802, 0x84ae: 0xadc07902, 0x84af: 0xadc06002,\n\t0x84b0: 0xadc07a02, 0x84b1: 0xadc07b02, 0x84b2: 0xadc02102, 0x84b3: 0xadc06002,\n\t0x84b4: 0xa0107c02, 0x84b5: 0xa0107d02, 0x84b6: 0xa0106102, 0x84b7: 0xa0106102,\n\t0x84b8: 0xa0105402, 0x84b9: 0xadc07e02, 0x84ba: 0xadc06002, 0x84bb: 0xadc06002,\n\t0x84bc: 0xadc06002, 0x84bd: 0xae605f02, 0x84be: 0xae605f02, 0x84bf: 0xae605f02,\n\t// Block 0x213, offset 0x84c0\n\t0x84c0: 0xe00010d2, 0x84c1: 0xe00010cf, 0x84c2: 0xe00010cc, 0x84c3: 0xe00010c9,\n\t0x84c4: 0xe00010e1, 0x84c5: 0xe00010de, 0x84c6: 0xe00010e7, 0x84c7: 0xe00010e4,\n\t0x84c8: 0xe00010ed, 0x84c9: 0xe00010ea, 0x84ca: 0xe0002912, 0x84cb: 0xe000290f,\n\t0x84cc: 0xe000290c, 0x84cd: 0xe0002909, 0x84ce: 0xe0001123, 0x84cf: 0xe0001120,\n\t0x84d0: 0xe0002b99, 0x84d1: 0xe0002b96, 0x84d2: 0xe0001153, 0x84d3: 0xe0001150,\n\t0x84d4: 0xe0001159, 0x84d5: 0xe0001156, 0x84d6: 0xe0000c15, 0x84d7: 0xe0000f8d,\n\t0x84d8: 0xe00010db, 0x84d9: 0xe0001111, 0x84da: 0xf0000404, 0x84db: 0xe0000f70,\n\t0x84dc: 0x40300420, 0x84dd: 0x40300620, 0x84de: 0xe0000f7f, 0x84df: 0x402c9620,\n\t0x84e0: 0xe000099b, 0x84e1: 0xe0000998, 0x84e2: 0xe0000989, 0x84e3: 0xe0000986,\n\t0x84e4: 0xe0002ae0, 0x84e5: 0xe0002adc, 0x84e6: 0xe0002ae8, 0x84e7: 0xe0002ae4,\n\t0x84e8: 0xe0002af8, 0x84e9: 0xe0002af4, 0x84ea: 0xe0002af0, 0x84eb: 0xe0002aec,\n\t0x84ec: 0xe0002b00, 0x84ed: 0xe0002afc, 0x84ee: 0xe0000902, 0x84ef: 0xe00008fe,\n\t0x84f0: 0xe000090a, 0x84f1: 0xe0000906, 0x84f2: 0xe000091a, 0x84f3: 0xe0000916,\n\t0x84f4: 0xe0000912, 0x84f5: 0xe000090e, 0x84f6: 0xe00009a2, 0x84f7: 0xe000099e,\n\t0x84f8: 0xe0000b6e, 0x84f9: 0xe0000b6b, 0x84fa: 0xe0000b5c, 0x84fb: 0xe0000b59,\n\t0x84fc: 0xe0000b26, 0x84fd: 0xe0000b23, 0x84fe: 0xe0002b14, 0x84ff: 0xe0002b10,\n\t// Block 0x214, offset 0x8500\n\t0x8500: 0xe0002b1c, 0x8501: 0xe0002b18, 0x8502: 0xe0002b2c, 0x8503: 0xe0002b28,\n\t0x8504: 0xe0002b24, 0x8505: 0xe0002b20, 0x8506: 0xe0002b34, 0x8507: 0xe0002b30,\n\t0x8508: 0xe0000c66, 0x8509: 0xe0000c63, 0x850a: 0xe0000c78, 0x850b: 0xe0000c75,\n\t0x850c: 0xe0000e84, 0x850d: 0xe0000e81, 0x850e: 0xe0000e44, 0x850f: 0xe0000e41,\n\t0x8510: 0xe0002b5a, 0x8511: 0xe0002b56, 0x8512: 0xe0002b62, 0x8513: 0xe0002b5e,\n\t0x8514: 0xe0002b72, 0x8515: 0xe0002b6e, 0x8516: 0xe0002b6a, 0x8517: 0xe0002b66,\n\t0x8518: 0xe0002b7a, 0x8519: 0xe0002b76, 0x851a: 0xe0000e5d, 0x851b: 0xe0000e59,\n\t0x851c: 0xe0000e65, 0x851d: 0xe0000e61, 0x851e: 0xe0000e75, 0x851f: 0xe0000e71,\n\t0x8520: 0xe0000e6d, 0x8521: 0xe0000e69, 0x8522: 0xe0000e7d, 0x8523: 0xe0000e79,\n\t0x8524: 0xe000108d, 0x8525: 0xe000108a, 0x8526: 0xe000104d, 0x8527: 0xe000104a,\n\t0x8528: 0xe0001066, 0x8529: 0xe0001062, 0x852a: 0xe000106e, 0x852b: 0xe000106a,\n\t0x852c: 0xe000107e, 0x852d: 0xe000107a, 0x852e: 0xe0001076, 0x852f: 0xe0001072,\n\t0x8530: 0xe0001086, 0x8531: 0xe0001082, 0x8532: 0xe0001108, 0x8533: 0xe0001105,\n\t0x8534: 0xe0001135, 0x8535: 0xe0001132, 0x8536: 0xe000112f, 0x8537: 0xe000112c,\n\t0x8538: 0xe000111d, 0x8539: 0xe000111a, 0x853a: 0xe0000d0a, 0x853b: 0xe0000d07,\n\t0x853c: 0x0030d888, 0x853d: 0x4030d820, 0x853e: 0x00312088, 0x853f: 0x40312020,\n\t// Block 0x215, offset 0x8540\n\t0x8540: 0x00093685, 0x8541: 0x40083620, 0x8542: 0x40083820, 0x8543: 0x40083a20,\n\t0x8544: 0x40083c20, 0x8545: 0x002c628b, 0x8546: 0x002c6285, 0x8547: 0x002c9885,\n\t0x8548: 0x002d9a85, 0x8549: 0x002dcc85, 0x854a: 0x40083e20, 0x854b: 0x400a6e20,\n\t0x854c: 0x40084020, 0x854d: 0xe00009c4, 0x854e: 0x402d1e20, 0x854f: 0x40084220,\n\t0x8550: 0xe00002cb, 0x8551: 0xe00002d3, 0x8552: 0xe00002b2, 0x8553: 0xe00002bb,\n\t0x8554: 0xe00003cd, 0x8555: 0xe00002c3, 0x8556: 0xe00003d1, 0x8557: 0xe00004ab,\n\t0x8558: 0xe0000579, 0x8559: 0xe00002c7, 0x855a: 0xe0000640, 0x855b: 0xe00002cf,\n\t0x855c: 0xe00004af, 0x855d: 0xe0000644, 0x855e: 0xe0000798, 0x855f: 0xf0001e1e,\n\t0x8560: 0x002d9a8a, 0x8561: 0xf0001f0a, 0x8562: 0xf0000a0a, 0x8563: 0xf0001f0a,\n\t0x8564: 0x0030be8a, 0x8565: 0xf0001f0a, 0x8566: 0xf0000a0a, 0x8567: 0xe00010bb,\n\t0x8568: 0xe00027f4, 0x8569: 0x0030f68a, 0x856a: 0xe0002883, 0x856b: 0xe000288a,\n\t0x856c: 0x002e228a, 0x856d: 0x002c3a8a, 0x856e: 0x002c628a, 0x856f: 0x002e828a,\n\t0x8570: 0x002d9a84, 0x8571: 0xf0001f04, 0x8572: 0xf0000404, 0x8573: 0xf0001f04,\n\t0x8574: 0x0030be84, 0x8575: 0xf0001f04, 0x8576: 0xf0000404, 0x8577: 0xe00010b6,\n\t0x8578: 0xe00027f1, 0x8579: 0x0030f684, 0x857a: 0xe0002880, 0x857b: 0xe0002886,\n\t0x857c: 0x002e2284, 0x857d: 0x002c3a84, 0x857e: 0x002c6284, 0x857f: 0x002e8284,\n\t// Block 0x216, offset 0x8580\n\t0x8580: 0xe0000024, 0x8581: 0xe0000029, 0x8582: 0xe000002e, 0x8583: 0xe0000033,\n\t0x8584: 0xe0000038, 0x8585: 0xe000003d, 0x8586: 0xe0000042, 0x8587: 0xe0000047,\n\t0x8588: 0xf0001f04, 0x8589: 0xf0001f04, 0x858a: 0xf0001f04, 0x858b: 0xf0001f04,\n\t0x858c: 0xf0001f04, 0x858d: 0xf0001f04, 0x858e: 0xf0001f04, 0x858f: 0xf0001f04,\n\t0x8590: 0xf0001f04, 0x8591: 0xf0000404, 0x8592: 0xf0000404, 0x8593: 0xf0000404,\n\t0x8594: 0xf0000404, 0x8595: 0xf0000404, 0x8596: 0xf0000404, 0x8597: 0xf0000404,\n\t0x8598: 0xf0000404, 0x8599: 0xf0000404, 0x859a: 0xf0000404, 0x859b: 0xf0000404,\n\t0x859c: 0xf0000404, 0x859d: 0xf0000404, 0x859e: 0xf0000404, 0x859f: 0xf0000404,\n\t0x85a0: 0xf0000404, 0x85a1: 0xf0000404, 0x85a2: 0xf0000404, 0x85a3: 0xf0000404,\n\t0x85a4: 0xf0000404, 0x85a5: 0xf0000404, 0x85a6: 0xf0000404, 0x85a7: 0xf0000404,\n\t0x85a8: 0xf0000404, 0x85a9: 0xf0000404, 0x85aa: 0xf0000404, 0x85ab: 0xf0000404,\n\t0x85ac: 0xf0000404, 0x85ad: 0xf0000404, 0x85ae: 0xf0000404, 0x85af: 0xf0000404,\n\t0x85b0: 0xf0000404, 0x85b1: 0xf0000404, 0x85b2: 0xf0000404, 0x85b3: 0xe00024e7,\n\t0x85b4: 0xf0000404, 0x85b5: 0xf0000404, 0x85b6: 0x002bde8c, 0x85b7: 0x002c0a8c,\n\t0x85b8: 0x002c3a8c, 0x85b9: 0x002c628c, 0x85ba: 0x002c988c, 0x85bb: 0x002d088c,\n\t0x85bc: 0x002d228c, 0x85bd: 0x002d688c, 0x85be: 0x002d9a8c, 0x85bf: 0x002dcc8c,\n\t// Block 0x217, offset 0x85c0\n\t0x85c0: 0xf0001d1c, 0x85c1: 0xf0001d1d, 0x85c2: 0xe00009b7, 0x85c3: 0xf0001c1d,\n\t0x85c4: 0xf0001c1c, 0x85c5: 0xf0001c1c, 0x85c6: 0xe0000a66, 0x85c7: 0xe0000a7a,\n\t0x85c8: 0xf0001d1c, 0x85c9: 0xf0001c1d, 0x85ca: 0xf0001c1c, 0x85cb: 0xf0001d1d,\n\t0x85cc: 0xf0001c1c, 0x85cd: 0xf0001d1d, 0x85ce: 0xf0001d1d, 0x85cf: 0xf0001c1c,\n\t0x85d0: 0xf0001c1c, 0x85d1: 0xf0001c1c, 0x85d2: 0xe0000d0d, 0x85d3: 0xe0002818,\n\t0x85d4: 0xf0001c1c, 0x85d5: 0xe0000d3a, 0x85d6: 0xe0000d46, 0x85d7: 0xf0001d1d,\n\t0x85d8: 0xe0000eb0, 0x85d9: 0xe0000eb8, 0x85da: 0xf0001d1d, 0x85db: 0xf0001c1c,\n\t0x85dc: 0xf0001c1d, 0x85dd: 0xf0001c1d, 0x85de: 0xe00010b2, 0x85df: 0xe00009c8,\n\t0x85e0: 0xf0001f04, 0x85e1: 0xf0001f04, 0x85e2: 0xf0001f04, 0x85e3: 0xf0001f04,\n\t0x85e4: 0xf0001f04, 0x85e5: 0xf0001f04, 0x85e6: 0xf0001f04, 0x85e7: 0xf0001f04,\n\t0x85e8: 0xf0001f04, 0x85e9: 0xf0000404, 0x85ea: 0xf0000404, 0x85eb: 0xf0000404,\n\t0x85ec: 0xf0000404, 0x85ed: 0xf0000404, 0x85ee: 0xf0000404, 0x85ef: 0xf0000404,\n\t0x85f0: 0xf0000404, 0x85f1: 0xf0000404, 0x85f2: 0xf0000404, 0x85f3: 0xf0000404,\n\t0x85f4: 0xf0000404, 0x85f5: 0xf0000404, 0x85f6: 0xf0000404, 0x85f7: 0xf0000404,\n\t0x85f8: 0xf0000404, 0x85f9: 0xf0000404, 0x85fa: 0xf0000404, 0x85fb: 0xf0000404,\n\t0x85fc: 0xf0000404, 0x85fd: 0xf0000404, 0x85fe: 0xf0000404, 0x85ff: 0xe0000bdf,\n\t// Block 0x218, offset 0x8600\n\t0x8600: 0xf0001f04, 0x8601: 0xf0001f04, 0x8602: 0xf0001f04, 0x8603: 0xf0001f04,\n\t0x8604: 0xf0001f04, 0x8605: 0xf0001f04, 0x8606: 0xf0001f04, 0x8607: 0xf0001f04,\n\t0x8608: 0xf0001f04, 0x8609: 0xf0001f04, 0x860a: 0xf0001f04,\n\t0x8610: 0xf0000a04, 0x8611: 0xf0000a04, 0x8612: 0xf0000a04, 0x8613: 0xf0000a04,\n\t0x8614: 0xf0000a04, 0x8615: 0xf0000a04, 0x8616: 0xf0000a04, 0x8617: 0xf0000a04,\n\t0x8618: 0xf0000a04, 0x8619: 0xf0000a04, 0x861a: 0xf0000a04, 0x861b: 0xf0000a04,\n\t0x861c: 0xf0000a04, 0x861d: 0xf0000a04, 0x861e: 0xf0000a04, 0x861f: 0xf0000a04,\n\t0x8620: 0xf0000a04, 0x8621: 0xf0000a04, 0x8622: 0xf0000a04, 0x8623: 0xf0000a04,\n\t0x8624: 0xf0000a04, 0x8625: 0xf0000a04, 0x8626: 0xf0000a04, 0x8627: 0xe00024eb,\n\t0x8628: 0xf0000a04, 0x8629: 0xf0000a04, 0x862a: 0xf0000a04, 0x862b: 0x002c3a8c,\n\t0x862c: 0x002f7a8c, 0x862d: 0xf0000c0c, 0x862e: 0xf0000c0c,\n\t0x8630: 0x002bde9d, 0x8631: 0x002c0a9d, 0x8632: 0x002c3a9d, 0x8633: 0x002c629d,\n\t0x8634: 0x002c989d, 0x8635: 0x002d089d, 0x8636: 0x002d229d, 0x8637: 0x002d689d,\n\t0x8638: 0x002d9a9d, 0x8639: 0x002dcc9d, 0x863a: 0x002dfe9d, 0x863b: 0x002e229d,\n\t0x863c: 0x002e829d, 0x863d: 0x002e9e9d, 0x863e: 0x002ee29d, 0x863f: 0x002f2c9d,\n\t// Block 0x219, offset 0x8640\n\t0x8640: 0xa0000000, 0x8641: 0xa0000000, 0x8642: 0xa0000000, 0x8643: 0xa0000000,\n\t0x8644: 0xa0000000, 0x8645: 0xa0000000, 0x8646: 0xa0000000, 0x8647: 0xa0000000,\n\t0x8648: 0xa0000000, 0x8649: 0x40020020, 0x864a: 0x40020220, 0x864b: 0x40020420,\n\t0x864c: 0x40020620, 0x864d: 0x40020820, 0x864e: 0xa0000000, 0x864f: 0xa0000000,\n\t0x8650: 0xa0000000, 0x8651: 0xa0000000, 0x8652: 0xa0000000, 0x8653: 0xa0000000,\n\t0x8654: 0xa0000000, 0x8655: 0xa0000000, 0x8656: 0xa0000000, 0x8657: 0xa0000000,\n\t0x8658: 0xa0000000, 0x8659: 0xa0000000, 0x865a: 0xa0000000, 0x865b: 0xa0000000,\n\t0x865c: 0xa0000000, 0x865d: 0xa0000000, 0x865e: 0xa0000000, 0x865f: 0xa0000000,\n\t0x8660: 0x402be020, 0x8661: 0x402be220, 0x8662: 0x402be420, 0x8663: 0x402be620,\n\t0x8664: 0x402be820, 0x8665: 0x402bea20, 0x8666: 0x402bec20, 0x8667: 0x402bee20,\n\t0x8668: 0x402bf020, 0x8669: 0x402bf220, 0x866a: 0x402bf420, 0x866b: 0x402bf620,\n\t0x866c: 0x402bf820, 0x866d: 0x402bfa20, 0x866e: 0x402bfc20, 0x866f: 0x402bfe20,\n\t0x8670: 0x402c0020, 0x8671: 0x402c0220, 0x8672: 0x402c0420, 0x8673: 0x402c0620,\n\t0x8674: 0x402c0820, 0x8675: 0x402c0a20, 0x8676: 0x402c0c20, 0x8677: 0x402c0e20,\n\t0x8678: 0x402c1020, 0x8679: 0x402c1220, 0x867a: 0x402c1420, 0x867b: 0x402c1620,\n\t0x867c: 0x402c1820, 0x867d: 0x402c1a20, 0x867e: 0x402c1c20, 0x867f: 0x402c1e20,\n\t// Block 0x21a, offset 0x8680\n\t0x8680: 0x402c2020, 0x8681: 0x402c2220, 0x8682: 0x402c2420, 0x8683: 0x402c2620,\n\t0x8684: 0x402c2820, 0x8685: 0x402c2a20, 0x8686: 0x402c2c20, 0x8687: 0x402c2e20,\n\t0x8688: 0x402c3020, 0x8689: 0x402c3220, 0x868a: 0x402c3420, 0x868b: 0x402c3620,\n\t0x868c: 0xc53b0002, 0x868d: 0x402c3a20, 0x868e: 0x402c3c20, 0x868f: 0x402c3e20,\n\t0x8690: 0x402c4020, 0x8691: 0x402c4220, 0x8692: 0x402c4420, 0x8693: 0x402c4620,\n\t0x8694: 0x402c4820, 0x8695: 0x402c4a20, 0x8696: 0x402c4c20, 0x8697: 0x402c4e20,\n\t0x8698: 0x402c5020, 0x8699: 0x402c5220, 0x869a: 0x402c5420, 0x869b: 0x402c5620,\n\t0x869c: 0x402c5820, 0x869d: 0x402c5a20, 0x869e: 0x402c5c20, 0x869f: 0x402c5e20,\n\t0x86a0: 0x402c6020, 0x86a1: 0x402c6220, 0x86a2: 0x402c6420, 0x86a3: 0x402c6620,\n\t0x86a4: 0x402c6820, 0x86a5: 0x402c6a20, 0x86a6: 0x402c6c20, 0x86a7: 0x402c6e20,\n\t0x86a8: 0x402c7020, 0x86a9: 0x402c7220, 0x86aa: 0x402c7420, 0x86ab: 0x402c7620,\n\t0x86ac: 0xc5380002, 0x86ad: 0x402c7a20, 0x86ae: 0x402c7c20, 0x86af: 0x402c7e20,\n\t0x86b0: 0x402c8020, 0x86b1: 0x402c8220, 0x86b2: 0x402c8420, 0x86b3: 0x402c8620,\n\t0x86b4: 0x402c8820, 0x86b5: 0x402c8a20, 0x86b6: 0x402c8c20, 0x86b7: 0x402c8e20,\n\t0x86b8: 0x402c9020, 0x86b9: 0x402c9220, 0x86ba: 0x402c9420, 0x86bb: 0x402c9620,\n\t0x86bc: 0x402c9820, 0x86bd: 0x402c9a20, 0x86be: 0x402c9c20, 0x86bf: 0x402c9e20,\n\t// Block 0x21b, offset 0x86c0\n\t0x86c0: 0xe0002f1f, 0x86c1: 0xe0002f1c, 0x86c2: 0xe0002f35, 0x86c3: 0xe0002f59,\n\t0x86c4: 0xe0002f52, 0x86c5: 0xe0002f4b, 0x86c6: 0xe00009dd, 0x86c7: 0xe0002f95,\n\t0x86c8: 0xe0002fb1, 0x86c9: 0xe0002fae, 0x86ca: 0xe0002fb7, 0x86cb: 0xe0002fcd,\n\t0x86cc: 0xe0003031, 0x86cd: 0xe000302e, 0x86ce: 0xe0003037, 0x86cf: 0xe000303d,\n\t0x86d0: 0xe0000ab3, 0x86d1: 0xe00030a5, 0x86d2: 0xe00030ba, 0x86d3: 0xe00030b7,\n\t0x86d4: 0xe00030c0, 0x86d5: 0xe00030e0, 0x86d6: 0xe00030d6, 0x86d7: 0x40093e20,\n\t0x86d8: 0xe0000e12, 0x86d9: 0xe000318a, 0x86da: 0xe0003187, 0x86db: 0xe0003190,\n\t0x86dc: 0xe0003199, 0x86dd: 0xe000320a, 0x86de: 0x00318888, 0x86df: 0xe0000f7b,\n\t0x86e0: 0xe000323a, 0x86e1: 0xe0003237, 0x86e2: 0xe0003250, 0x86e3: 0xe0003274,\n\t0x86e4: 0xe000326d, 0x86e5: 0xe0003266, 0x86e6: 0xe00009d5, 0x86e7: 0xe00032c8,\n\t0x86e8: 0xe00032e4, 0x86e9: 0xe00032e1, 0x86ea: 0xe00032ea, 0x86eb: 0xe0003300,\n\t0x86ec: 0xe0003367, 0x86ed: 0xe0003364, 0x86ee: 0xe000336d, 0x86ef: 0xe0003373,\n\t0x86f0: 0xe0000aad, 0x86f1: 0xe00033cf, 0x86f2: 0xe00033e4, 0x86f3: 0xe00033e1,\n\t0x86f4: 0xe00033ea, 0x86f5: 0xe000340a, 0x86f6: 0xe0003400, 0x86f7: 0x40093c20,\n\t0x86f8: 0xe0000e0f, 0x86f9: 0xe00034b7, 0x86fa: 0xe00034b4, 0x86fb: 0xe00034bd,\n\t0x86fc: 0xe00034c6, 0x86fd: 0xe000353a, 0x86fe: 0x40318820, 0x86ff: 0xe0003546,\n\t// Block 0x21c, offset 0x8700\n\t0x8700: 0xe0002f66, 0x8701: 0xe0003281, 0x8702: 0xe0002f22, 0x8703: 0xe000323d,\n\t0x8704: 0xe0002f63, 0x8705: 0xe000327e, 0x8706: 0xe0002f89, 0x8707: 0xe00032bc,\n\t0x8708: 0xe0002f8c, 0x8709: 0xe00032bf, 0x870a: 0xe0002f92, 0x870b: 0xe00032c5,\n\t0x870c: 0xe0002f8f, 0x870d: 0xe00032c2, 0x870e: 0xe0002f9c, 0x870f: 0xe00032cf,\n\t0x8710: 0xe0000aaa, 0x8711: 0xe0000aa7, 0x8712: 0xe0002fe0, 0x8713: 0xe0003313,\n\t0x8714: 0xe0002fb4, 0x8715: 0xe00032e7, 0x8716: 0xe0002fd3, 0x8717: 0xe0003306,\n\t0x8718: 0xe0002fdd, 0x8719: 0xe0003310, 0x871a: 0xe0002fca, 0x871b: 0xe00032fd,\n\t0x871c: 0xe000300a, 0x871d: 0xe000333d, 0x871e: 0xe0003007, 0x871f: 0xe000333a,\n\t0x8720: 0xe0003010, 0x8721: 0xe0003343, 0x8722: 0xe0003013, 0x8723: 0xe0003346,\n\t0x8724: 0xe0003019, 0x8725: 0xe000334c, 0x8726: 0xe0000c1b, 0x8727: 0xe0000c18,\n\t0x8728: 0xe0003044, 0x8729: 0xe000337a, 0x872a: 0xe000304d, 0x872b: 0xe0003380,\n\t0x872c: 0xe0003034, 0x872d: 0xe000336a, 0x872e: 0xe000304a, 0x872f: 0xe000337d,\n\t0x8730: 0xe0003047, 0x8731: 0x402da220, 0x8732: 0xe00027e2, 0x8733: 0xe00027df,\n\t0x8734: 0xe000305f, 0x8735: 0xe0003392, 0x8736: 0xe0003068, 0x8737: 0xe000339e,\n\t0x8738: 0x402f7220, 0x8739: 0xe0003071, 0x873a: 0xe00033a7, 0x873b: 0xe0003077,\n\t0x873c: 0xe00033ad, 0x873d: 0xe0003074, 0x873e: 0xe00033aa, 0x873f: 0xe0000d04,\n\t// Block 0x21d, offset 0x8740\n\t0x8740: 0xe0000cfe, 0x8741: 0xe0000cf8, 0x8742: 0xe0000cf5, 0x8743: 0xe000309c,\n\t0x8744: 0xe00033c6, 0x8745: 0xe00030ab, 0x8746: 0xe00033d5, 0x8747: 0xe00030a2,\n\t0x8748: 0xe00033cc, 0x8749: 0xe00035eb, 0x874a: 0x002eda88, 0x874b: 0x402eda20,\n\t0x874c: 0xe00030fd, 0x874d: 0xe0003427, 0x874e: 0xe00030bd, 0x874f: 0xe00033e7,\n\t0x8750: 0xe00030dd, 0x8751: 0xe0003407, 0x8752: 0xe0000e93, 0x8753: 0xe0000e8f,\n\t0x8754: 0xe0003135, 0x8755: 0xe000345f, 0x8756: 0xe000313e, 0x8757: 0xe0003468,\n\t0x8758: 0xe0003138, 0x8759: 0xe0003462, 0x875a: 0xe0003151, 0x875b: 0xe000347b,\n\t0x875c: 0xe0003158, 0x875d: 0xe0003482, 0x875e: 0xe0003165, 0x875f: 0xe000348f,\n\t0x8760: 0xe000315b, 0x8761: 0xe0003485, 0x8762: 0xe0003178, 0x8763: 0xe00034a5,\n\t0x8764: 0xe0003172, 0x8765: 0xe000349c, 0x8766: 0x00303688, 0x8767: 0x40303620,\n\t0x8768: 0xe00031af, 0x8769: 0xe00034dc, 0x876a: 0xe00031b9, 0x876b: 0xe00034e6,\n\t0x876c: 0xe000318d, 0x876d: 0xe00034ba, 0x876e: 0xe0003196, 0x876f: 0xe00034c3,\n\t0x8770: 0xe00031ac, 0x8771: 0xe00034d9, 0x8772: 0xe00031b6, 0x8773: 0xe00034e3,\n\t0x8774: 0xe00031f8, 0x8775: 0xe0003525, 0x8776: 0xe0003210, 0x8777: 0xe0003540,\n\t0x8778: 0xe0003213, 0x8779: 0xe0003225, 0x877a: 0xe0003558, 0x877b: 0xe000322e,\n\t0x877c: 0xe0003561, 0x877d: 0xe000322b, 0x877e: 0xe000355e, 0x877f: 0xe0000f64,\n\t// Block 0x21e, offset 0x8780\n\t0x8780: 0x402c1a20, 0x8781: 0x002c2a88, 0x8782: 0x002c3288, 0x8783: 0x402c3220,\n\t0x8784: 0x0031c488, 0x8785: 0x4031c420, 0x8786: 0x002efa88, 0x8787: 0x002c4e88,\n\t0x8788: 0x402c4e20, 0x8789: 0x002c7288, 0x878a: 0x002c7a88, 0x878b: 0x002c8488,\n\t0x878c: 0x402c8420, 0x878d: 0xe000115c, 0x878e: 0x002cae88, 0x878f: 0x002cb888,\n\t0x8790: 0x002cc288, 0x8791: 0x002d1688, 0x8792: 0x402d1620, 0x8793: 0x002d4488,\n\t0x8794: 0x002d5888, 0x8795: 0x402d7820, 0x8796: 0x002dc288, 0x8797: 0x002db688,\n\t0x8798: 0x002e0a88, 0x8799: 0x402e0a20, 0x879a: 0x402e3820, 0x879b: 0x402e7220,\n\t0x879c: 0x0030a088, 0x879d: 0x002eb488, 0x879e: 0x402ebc20, 0x879f: 0x002f1088,\n\t0x87a0: 0xe0003111, 0x87a1: 0xe000343b, 0x87a2: 0x002d6088, 0x87a3: 0x402d6020,\n\t0x87a4: 0x002f3e88, 0x87a5: 0x402f3e20, 0x87a6: 0x002f8288, 0x87a7: 0x0031b488,\n\t0x87a8: 0x4031b420, 0x87a9: 0x00300888, 0x87aa: 0x40301220, 0x87ab: 0x40304220,\n\t0x87ac: 0x00304a88, 0x87ad: 0x40304a20, 0x87ae: 0x00305288, 0x87af: 0xe00031c9,\n\t0x87b0: 0xe00034f6, 0x87b1: 0x0030b488, 0x87b2: 0x0030cc88, 0x87b3: 0x00311888,\n\t0x87b4: 0x40311820, 0x87b5: 0x00313488, 0x87b6: 0x40313420, 0x87b7: 0x00316488,\n\t0x87b8: 0x00316e88, 0x87b9: 0x40316e20, 0x87ba: 0x40317820, 0x87bb: 0x4031a620,\n\t0x87bc: 0x0031bc88, 0x87bd: 0x4031bc20, 0x87be: 0xe0000fc9, 0x87bf: 0x40319420,\n\t// Block 0x21f, offset 0x87c0\n\t0x87c0: 0x40321220, 0x87c1: 0x40321a20, 0x87c2: 0x40322220, 0x87c3: 0x40322a20,\n\t0x87c4: 0xe0000ad5, 0x87c5: 0xe0000ad1, 0x87c6: 0xe0000acd, 0x87c7: 0xe000357f,\n\t0x87c8: 0xe000357c, 0x87c9: 0xe0003579, 0x87ca: 0xe00035c4, 0x87cb: 0xe00035c1,\n\t0x87cc: 0xe00035be, 0x87cd: 0xe0002f48, 0x87ce: 0xe0003263, 0x87cf: 0xe000303a,\n\t0x87d0: 0xe0003370, 0x87d1: 0xe00030d3, 0x87d2: 0xe00033fd, 0x87d3: 0xe0003193,\n\t0x87d4: 0xe00034c0, 0x87d5: 0xe00031a8, 0x87d6: 0xe00034d5, 0x87d7: 0xe000319c,\n\t0x87d8: 0xe00034c9, 0x87d9: 0xe00031a4, 0x87da: 0xe00034d1, 0x87db: 0xe00031a0,\n\t0x87dc: 0xe00034cd, 0x87dd: 0x402cae20, 0x87de: 0xe0002f55, 0x87df: 0xe0003270,\n\t0x87e0: 0xe0002f5f, 0x87e1: 0xe000327a, 0x87e2: 0xe00009f4, 0x87e3: 0xe00009ef,\n\t0x87e4: 0x002d3a88, 0x87e5: 0x402d3a20, 0x87e6: 0xe000300d, 0x87e7: 0xe0003340,\n\t0x87e8: 0xe0003065, 0x87e9: 0xe000339b, 0x87ea: 0xe00030f6, 0x87eb: 0xe0003420,\n\t0x87ec: 0xe00030f9, 0x87ed: 0xe0003423, 0x87ee: 0xe0001162, 0x87ef: 0xe000115f,\n\t0x87f0: 0xe0003395, 0x87f1: 0xe00032b0, 0x87f2: 0xe00032ad, 0x87f3: 0xe00032aa,\n\t0x87f4: 0xe0003004, 0x87f5: 0xe0003337, 0x87f6: 0x002d7888, 0x87f7: 0x00319488,\n\t0x87f8: 0xe000309f, 0x87f9: 0xe00033c9, 0x87fa: 0xe0002f4e, 0x87fb: 0xe0003269,\n\t0x87fc: 0xe00009ea, 0x87fd: 0xe00009e5, 0x87fe: 0xe0000e19, 0x87ff: 0xe0000e15,\n\t// Block 0x220, offset 0x8800\n\t0x8800: 0xe0002f6c, 0x8801: 0xe0003287, 0x8802: 0xe0002f6f, 0x8803: 0xe000328a,\n\t0x8804: 0xe0002fee, 0x8805: 0xe0003321, 0x8806: 0xe0002ff1, 0x8807: 0xe0003324,\n\t0x8808: 0xe0003053, 0x8809: 0xe0003386, 0x880a: 0xe0003056, 0x880b: 0xe0003389,\n\t0x880c: 0xe000310b, 0x880d: 0xe0003435, 0x880e: 0xe000310e, 0x880f: 0xe0003438,\n\t0x8810: 0xe0003141, 0x8811: 0xe000346b, 0x8812: 0xe0003144, 0x8813: 0xe000346e,\n\t0x8814: 0xe00031c3, 0x8815: 0xe00034f0, 0x8816: 0xe00031c6, 0x8817: 0xe00034f3,\n\t0x8818: 0xe000316f, 0x8819: 0xe0003499, 0x881a: 0xe000317e, 0x881b: 0xe00034ab,\n\t0x881c: 0x00312288, 0x881d: 0x40312220, 0x881e: 0xe000301c, 0x881f: 0xe000334f,\n\t0x8820: 0x002ebc88, 0x8821: 0x402c8c20, 0x8822: 0x002f2288, 0x8823: 0x402f2220,\n\t0x8824: 0x00314088, 0x8825: 0x40314020, 0x8826: 0xe0002f5c, 0x8827: 0xe0003277,\n\t0x8828: 0xe0002fd6, 0x8829: 0xe0003309, 0x882a: 0xe00030d9, 0x882b: 0xe0003403,\n\t0x882c: 0xe00030eb, 0x882d: 0xe0003415, 0x882e: 0xe00030ef, 0x882f: 0xe0003419,\n\t0x8830: 0xe00030f2, 0x8831: 0xe000341c, 0x8832: 0xe000321c, 0x8833: 0xe000354f,\n\t0x8834: 0x402e5e20, 0x8835: 0x402ed020, 0x8836: 0x40305a20, 0x8837: 0x402dd420,\n\t0x8838: 0xe0000abf, 0x8839: 0xe0000ec4, 0x883a: 0x002be888, 0x883b: 0x002c4488,\n\t0x883c: 0x402c4420, 0x883d: 0x002e3888, 0x883e: 0x00303e88, 0x883f: 0x402ffc20,\n\t// Block 0x221, offset 0x8840\n\t0x8840: 0xae603502, 0x8841: 0xae603202, 0x8842: 0xae604502, 0x8843: 0xae602202,\n\t0x8844: 0xe0000000, 0x8845: 0xaf007f02, 0x8846: 0xae605f02, 0x8847: 0xadc06002,\n\t0x8848: 0xadc06002, 0x8849: 0xadc06002, 0x884a: 0xae605f02, 0x884b: 0xae605f02,\n\t0x884c: 0xae605f02, 0x884d: 0xadc06002, 0x884e: 0xadc06002, 0x884f: 0xa0000000,\n\t0x8850: 0xae605f02, 0x8851: 0xae605f02, 0x8852: 0xae605f02, 0x8853: 0xadc06002,\n\t0x8854: 0xadc06002, 0x8855: 0xadc06002, 0x8856: 0xadc06002, 0x8857: 0xae605f02,\n\t0x8858: 0xae808002, 0x8859: 0xadc06002, 0x885a: 0xadc06002, 0x885b: 0xae605f02,\n\t0x885c: 0xae906002, 0x885d: 0xaea05f02, 0x885e: 0xaea05f02, 0x885f: 0xae906002,\n\t0x8860: 0xaea08102, 0x8861: 0xaea08202, 0x8862: 0xae906002, 0x8863: 0x84e615ef,\n\t0x8864: 0x84e6164c, 0x8865: 0x84e616cd, 0x8866: 0x84e61771, 0x8867: 0x84e61836,\n\t0x8868: 0x84e6161d, 0x8869: 0x84e61631, 0x886a: 0x84e616b4, 0x886b: 0x84e61741,\n\t0x886c: 0x84e617bd, 0x886d: 0x84e61816, 0x886e: 0x84e6185f, 0x886f: 0x84e6187b,\n\t0x8870: 0x00326688, 0x8871: 0x40326620, 0x8872: 0x0032a688, 0x8873: 0x4032a620,\n\t0x8874: 0x40064020, 0x8875: 0x40064220, 0x8876: 0x00326088, 0x8877: 0x40326020,\n\t0x887a: 0x00326c84, 0x887b: 0x40329220,\n\t0x887c: 0x40329020, 0x887d: 0x40329420, 0x887e: 0x402c1620,\n\t// Block 0x222, offset 0x8880\n\t0x8880: 0xe0002f7d, 0x8881: 0xe0003298, 0x8882: 0xe0002f80, 0x8883: 0xe00032b3,\n\t0x8884: 0xe0002f83, 0x8885: 0xe00032b6, 0x8886: 0xe0002f86, 0x8887: 0xe00032b9,\n\t0x8888: 0xe0002f98, 0x8889: 0xe00032cb, 0x888a: 0xe0002f9f, 0x888b: 0xe00032d2,\n\t0x888c: 0xe0002fa5, 0x888d: 0xe00032d8, 0x888e: 0xe0002fab, 0x888f: 0xe00032de,\n\t0x8890: 0xe0002fa2, 0x8891: 0xe00032d5, 0x8892: 0xe0002fa8, 0x8893: 0xe00032db,\n\t0x8894: 0xe0002fe7, 0x8895: 0xe000331a, 0x8896: 0xe0002fe3, 0x8897: 0xe0003316,\n\t0x8898: 0xe0002ffb, 0x8899: 0xe000332e, 0x889a: 0xe0002ffe, 0x889b: 0xe0003331,\n\t0x889c: 0xe0002fd9, 0x889d: 0xe000330c, 0x889e: 0xe0003001, 0x889f: 0xe0003334,\n\t0x88a0: 0xe0003016, 0x88a1: 0xe0003349, 0x88a2: 0xe0003022, 0x88a3: 0xe0003355,\n\t0x88a4: 0xe0003028, 0x88a5: 0xe000335b, 0x88a6: 0xe000301f, 0x88a7: 0xe0003352,\n\t0x88a8: 0xe0003025, 0x88a9: 0xe0003358, 0x88aa: 0xe000302b, 0x88ab: 0xe000335e,\n\t0x88ac: 0xe000305c, 0x88ad: 0xe000338f, 0x88ae: 0xe0003040, 0x88af: 0xe0003376,\n\t0x88b0: 0xe0003062, 0x88b1: 0xe0003398, 0x88b2: 0xe000306b, 0x88b3: 0xe00033a1,\n\t0x88b4: 0xe000306e, 0x88b5: 0xe00033a4, 0x88b6: 0xe000307a, 0x88b7: 0xe00033b0,\n\t0x88b8: 0xe000307d, 0x88b9: 0xe00033b3, 0x88ba: 0xe0003084, 0x88bb: 0xe00033ba,\n\t0x88bc: 0xe0003081, 0x88bd: 0xe00033b7, 0x88be: 0xe0003087, 0x88bf: 0xe00033bd,\n\t// Block 0x223, offset 0x88c0\n\t0x88c0: 0xe000308a, 0x88c1: 0xe00033c0, 0x88c2: 0xe000308d, 0x88c3: 0xe00033c3,\n\t0x88c4: 0xe00030a8, 0x88c5: 0xe00033d2, 0x88c6: 0xe00030ae, 0x88c7: 0xe00033d8,\n\t0x88c8: 0xe00030b4, 0x88c9: 0xe00033de, 0x88ca: 0xe00030b1, 0x88cb: 0xe00033db,\n\t0x88cc: 0xe00030e3, 0x88cd: 0xe000340d, 0x88ce: 0xe00030e7, 0x88cf: 0xe0003411,\n\t0x88d0: 0xe0003104, 0x88d1: 0xe000342e, 0x88d2: 0xe0003100, 0x88d3: 0xe000342a,\n\t0x88d4: 0xe000312f, 0x88d5: 0xe0003459, 0x88d6: 0xe0003132, 0x88d7: 0xe000345c,\n\t0x88d8: 0xe000313b, 0x88d9: 0xe0003465, 0x88da: 0xe0003147, 0x88db: 0xe0003471,\n\t0x88dc: 0xe000314a, 0x88dd: 0xe0003474, 0x88de: 0xe000314e, 0x88df: 0xe0003478,\n\t0x88e0: 0xe0003162, 0x88e1: 0xe000348c, 0x88e2: 0xe0003168, 0x88e3: 0xe0003492,\n\t0x88e4: 0xe0003154, 0x88e5: 0xe000347e, 0x88e6: 0xe000315e, 0x88e7: 0xe0003488,\n\t0x88e8: 0xe000316b, 0x88e9: 0xe0003495, 0x88ea: 0xe0003175, 0x88eb: 0xe00034a2,\n\t0x88ec: 0xe000317b, 0x88ed: 0xe00034a8, 0x88ee: 0xe0003184, 0x88ef: 0xe00034b1,\n\t0x88f0: 0xe0003181, 0x88f1: 0xe00034ae, 0x88f2: 0xe00031e3, 0x88f3: 0xe0003510,\n\t0x88f4: 0xe00031e9, 0x88f5: 0xe0003516, 0x88f6: 0xe00031e6, 0x88f7: 0xe0003513,\n\t0x88f8: 0xe00031b2, 0x88f9: 0xe00034df, 0x88fa: 0xe00031bc, 0x88fb: 0xe00034e9,\n\t0x88fc: 0xe00031ec, 0x88fd: 0xe0003519, 0x88fe: 0xe00031ef, 0x88ff: 0xe000351c,\n\t// Block 0x224, offset 0x8900\n\t0x8900: 0xe00031f5, 0x8901: 0xe0003522, 0x8902: 0xe00031f2, 0x8903: 0xe000351f,\n\t0x8904: 0xe00031fb, 0x8905: 0xe000352b, 0x8906: 0xe00031fe, 0x8907: 0xe000352e,\n\t0x8908: 0xe0003201, 0x8909: 0xe0003531, 0x890a: 0xe0003207, 0x890b: 0xe0003537,\n\t0x890c: 0xe0003204, 0x890d: 0xe0003534, 0x890e: 0xe0003219, 0x890f: 0xe000354c,\n\t0x8910: 0xe0003228, 0x8911: 0xe000355b, 0x8912: 0xe0003231, 0x8913: 0xe0003564,\n\t0x8914: 0xe0003234, 0x8915: 0xe0003567, 0x8916: 0xe0003361, 0x8917: 0xe000349f,\n\t0x8918: 0xe0003528, 0x8919: 0xe0003543, 0x891a: 0xe0002f10, 0x891b: 0xe0000f70,\n\t0x891c: 0x40300420, 0x891d: 0x40300620, 0x891e: 0xe0000f7f, 0x891f: 0x402c9620,\n\t0x8920: 0xe0002f72, 0x8921: 0xe000328d, 0x8922: 0xe0002f69, 0x8923: 0xe0003284,\n\t0x8924: 0xe0002f38, 0x8925: 0xe0003253, 0x8926: 0xe0002f3c, 0x8927: 0xe0003257,\n\t0x8928: 0xe0002f44, 0x8929: 0xe000325f, 0x892a: 0xe0002f40, 0x892b: 0xe000325b,\n\t0x892c: 0xe0002f79, 0x892d: 0xe0003294, 0x892e: 0xe0002f25, 0x892f: 0xe0003240,\n\t0x8930: 0xe0002f29, 0x8931: 0xe0003244, 0x8932: 0xe0002f31, 0x8933: 0xe000324c,\n\t0x8934: 0xe0002f2d, 0x8935: 0xe0003248, 0x8936: 0xe0002f75, 0x8937: 0xe0003290,\n\t0x8938: 0xe0002ff4, 0x8939: 0xe0003327, 0x893a: 0xe0002feb, 0x893b: 0xe000331e,\n\t0x893c: 0xe0002fd0, 0x893d: 0xe0003303, 0x893e: 0xe0002fba, 0x893f: 0xe00032ed,\n\t// Block 0x225, offset 0x8940\n\t0x8940: 0xe0002fbe, 0x8941: 0xe00032f1, 0x8942: 0xe0002fc6, 0x8943: 0xe00032f9,\n\t0x8944: 0xe0002fc2, 0x8945: 0xe00032f5, 0x8946: 0xe0002ff7, 0x8947: 0xe000332a,\n\t0x8948: 0xe0003050, 0x8949: 0xe0003383, 0x894a: 0xe0003059, 0x894b: 0xe000338c,\n\t0x894c: 0xe0003128, 0x894d: 0xe0003452, 0x894e: 0xe0003108, 0x894f: 0xe0003432,\n\t0x8950: 0xe00030c3, 0x8951: 0xe00033ed, 0x8952: 0xe00030c7, 0x8953: 0xe00033f1,\n\t0x8954: 0xe00030cf, 0x8955: 0xe00033f9, 0x8956: 0xe00030cb, 0x8957: 0xe00033f5,\n\t0x8958: 0xe000312b, 0x8959: 0xe0003455, 0x895a: 0xe0003114, 0x895b: 0xe000343e,\n\t0x895c: 0xe0003118, 0x895d: 0xe0003442, 0x895e: 0xe0003120, 0x895f: 0xe000344a,\n\t0x8960: 0xe000311c, 0x8961: 0xe0003446, 0x8962: 0xe0003124, 0x8963: 0xe000344e,\n\t0x8964: 0xe00031e0, 0x8965: 0xe000350d, 0x8966: 0xe00031c0, 0x8967: 0xe00034ed,\n\t0x8968: 0xe00031cc, 0x8969: 0xe00034f9, 0x896a: 0xe00031d0, 0x896b: 0xe00034fd,\n\t0x896c: 0xe00031d8, 0x896d: 0xe0003505, 0x896e: 0xe00031d4, 0x896f: 0xe0003501,\n\t0x8970: 0xe00031dc, 0x8971: 0xe0003509, 0x8972: 0xe000320d, 0x8973: 0xe000353d,\n\t0x8974: 0xe0003222, 0x8975: 0xe0003555, 0x8976: 0xe000321f, 0x8977: 0xe0003552,\n\t0x8978: 0xe0003216, 0x8979: 0xe0003549, 0x897a: 0xe0000d0a, 0x897b: 0xe0000d07,\n\t0x897c: 0x0030d888, 0x897d: 0x4030d820, 0x897e: 0x00312088, 0x897f: 0x40312020,\n\t// Block 0x226, offset 0x8980\n\t0x8980: 0x40063a20, 0x8981: 0xe00000b1, 0x8982: 0xe00012ea, 0x8983: 0xe00012f5,\n\t0x8984: 0xe00012e0, 0x8986: 0xe00012ee, 0x8987: 0xe00012f1,\n\t0x8988: 0xe000124f, 0x8989: 0xe0001249, 0x898a: 0xe00012e7, 0x898b: 0xe00012dd,\n\t0x898c: 0xe00012f8, 0x898d: 0xe00000b7, 0x898e: 0xe00000b4, 0x898f: 0xe00000ba,\n\t0x8990: 0xe0001343, 0x8991: 0xe000135e, 0x8992: 0xe0001356, 0x8993: 0xe0001352,\n\t0x8996: 0xe0001349, 0x8997: 0xe000135a,\n\t0x8998: 0xe0001346, 0x8999: 0xe0001361, 0x899a: 0xe0001340, 0x899b: 0xe000133a,\n\t0x899d: 0xe00000c0, 0x899e: 0xe00000bd, 0x899f: 0xe00000c3,\n\t0x89a0: 0xe00013e6, 0x89a1: 0xe0001401, 0x89a2: 0xe00013f9, 0x89a3: 0xe00013f5,\n\t0x89a4: 0xe00013a4, 0x89a5: 0xe00013a7, 0x89a6: 0xe00013ec, 0x89a7: 0xe00013fd,\n\t0x89a8: 0xe00013e9, 0x89a9: 0xe0001404, 0x89aa: 0xe00013e3, 0x89ab: 0xe00013dd,\n\t0x89ac: 0xe00013aa, 0x89ad: 0xe00000ae, 0x89ae: 0xe00000ab, 0x89af: 0x402c6020,\n\t0x89b2: 0xe000149f, 0x89b3: 0xe00014aa,\n\t0x89b4: 0xe0001495, 0x89b6: 0xe00014a3, 0x89b7: 0xe00014a6,\n\t0x89b8: 0xe00013a1, 0x89b9: 0xe000139b, 0x89ba: 0xe000149c, 0x89bb: 0xe0001492,\n\t0x89bc: 0xe00014ad, 0x89bd: 0x40062020, 0x89be: 0x40063820,\n\t// Block 0x227, offset 0x89c0\n\t0x89c0: 0x00021284, 0x89c1: 0x00021284, 0x89c2: 0x00021284, 0x89c3: 0x00021284,\n\t0x89c4: 0x00021284, 0x89c5: 0x00021284, 0x89c6: 0x00021284, 0x89c7: 0x0002129b,\n\t0x89c8: 0x00021284, 0x89c9: 0x00021284, 0x89ca: 0x00021284, 0x89cb: 0xa0000000,\n\t0x89cc: 0xa0000000, 0x89cd: 0xa0000000, 0x89ce: 0xa0000000, 0x89cf: 0xa0000000,\n\t0x89d0: 0x40022620, 0x89d1: 0x0002269b, 0x89d2: 0x40022820, 0x89d3: 0x40022a20,\n\t0x89d4: 0x40022c20, 0x89d5: 0x40022e20, 0x89d6: 0x4004c420, 0x89d7: 0x40021820,\n\t0x89d8: 0x4003d420, 0x89d9: 0x4003d620, 0x89da: 0x4003d820, 0x89db: 0x4003da20,\n\t0x89dc: 0x4003e220, 0x89dd: 0x4003e420, 0x89de: 0x4003e620, 0x89df: 0x4003e820,\n\t0x89e0: 0x4004f820, 0x89e1: 0x4004fa20, 0x89e2: 0x40050220, 0x89e3: 0x40050420,\n\t0x89e4: 0x0002e484, 0x89e5: 0xe0002bac, 0x89e6: 0xe0002bb2, 0x89e7: 0x40050620,\n\t0x89e8: 0x40020e20, 0x89e9: 0x40021020, 0x89ea: 0xa0000000, 0x89eb: 0xa0000000,\n\t0x89ec: 0xa0000000, 0x89ed: 0xa0000000, 0x89ee: 0xa0000000, 0x89ef: 0x0002129b,\n\t0x89f0: 0x4004f020, 0x89f1: 0x4004f420, 0x89f2: 0x40050e20, 0x89f3: 0xf0001f04,\n\t0x89f4: 0xf0000404, 0x89f5: 0x40051020, 0x89f6: 0xf0001f04, 0x89f7: 0xf0000404,\n\t0x89f8: 0x40051620, 0x89f9: 0x4003dc20, 0x89fa: 0x4003de20, 0x89fb: 0x40051820,\n\t0x89fc: 0xe0002ba0, 0x89fd: 0x4002e020, 0x89fe: 0x40021420, 0x89ff: 0x40051a20,\n\t// Block 0x228, offset 0x8a00\n\t0x8a00: 0x40051e20, 0x8a01: 0x40052220, 0x8a02: 0x40052420, 0x8a03: 0x40050820,\n\t0x8a04: 0x40095820, 0x8a05: 0x40040c20, 0x8a06: 0x40040e20, 0x8a07: 0xe0002ba9,\n\t0x8a08: 0xe0002ba6, 0x8a09: 0xe0002ba3, 0x8a0a: 0x4004e820, 0x8a0b: 0x4004d420,\n\t0x8a0c: 0x40050a20, 0x8a0d: 0x40050c20, 0x8a0e: 0x4004da20, 0x8a0f: 0x40026620,\n\t0x8a10: 0x40052020, 0x8a11: 0x4004dc20, 0x8a12: 0x40095020, 0x8a13: 0x40023420,\n\t0x8a14: 0x40051c20, 0x8a15: 0x40039c20, 0x8a16: 0x40039e20, 0x8a17: 0xe00000a6,\n\t0x8a18: 0x4003a020, 0x8a19: 0x4003a220, 0x8a1a: 0x4003a420, 0x8a1b: 0x4003a620,\n\t0x8a1c: 0x4003a820, 0x8a1d: 0x4003aa20, 0x8a1e: 0x4003ac20, 0x8a1f: 0x00021284,\n\t0x8a20: 0xa0000000, 0x8a21: 0xa0000000, 0x8a22: 0xa0000000, 0x8a23: 0xa0000000,\n\t0x8a24: 0xa0000000,\n\t0x8a2a: 0xa0000000, 0x8a2b: 0xa0000000,\n\t0x8a2c: 0xa0000000, 0x8a2d: 0xa0000000, 0x8a2e: 0xa0000000, 0x8a2f: 0xa0000000,\n\t0x8a30: 0x0029cc94, 0x8a31: 0x002d9a94,\n\t0x8a34: 0x0029d494, 0x8a35: 0x0029d694, 0x8a36: 0x0029d894, 0x8a37: 0x0029da94,\n\t0x8a38: 0x0029dc94, 0x8a39: 0x0029de94, 0x8a3a: 0x00093894, 0x8a3b: 0x00094e94,\n\t0x8a3c: 0x00094294, 0x8a3d: 0x0003f494, 0x8a3e: 0x0003f694, 0x8a3f: 0x002e9e94,\n\t// Block 0x229, offset 0x8a40\n\t0x8a40: 0xe00009bc, 0x8a41: 0xe00009c0, 0x8a42: 0x002c3a8b, 0x8a43: 0xe0002d26,\n\t0x8a44: 0x40081c20, 0x8a45: 0xe0000a5e, 0x8a46: 0xe0000a62, 0x8a47: 0x002cc28a,\n\t0x8a48: 0x40081e20, 0x8a49: 0xe0002d29, 0x8a4a: 0x002d2285, 0x8a4b: 0x002d688b,\n\t0x8a4c: 0x002d688b, 0x8a4d: 0x002d688b, 0x8a4e: 0x002d6885, 0x8a4f: 0xf0000202,\n\t0x8a50: 0x002d9a8b, 0x8a51: 0x002d9a8b, 0x8a52: 0x002e228b, 0x8a53: 0x002e2285,\n\t0x8a54: 0x40082020, 0x8a55: 0x002e9e8b, 0x8a56: 0xe000281e, 0x8a57: 0x40082220,\n\t0x8a58: 0x40082420, 0x8a59: 0x002f2c8b, 0x8a5a: 0x002f568b, 0x8a5b: 0x002f7a8b,\n\t0x8a5c: 0x002f7a8b, 0x8a5d: 0x002f7a8b, 0x8a5e: 0x40082620, 0x8a5f: 0x40082820,\n\t0x8a60: 0xe0002833, 0x8a61: 0xe0000fbd, 0x8a62: 0xe0002842, 0x8a63: 0x40082a20,\n\t0x8a64: 0x00312a8b, 0x8a65: 0x40082c20, 0x8a66: 0x0032a288, 0x8a67: 0x40082e20,\n\t0x8a68: 0x00312a8b, 0x8a69: 0x40083020, 0x8a6a: 0x402c3620, 0x8a6b: 0xe0002f4b,\n\t0x8a6c: 0x002c0a8b, 0x8a6d: 0x002c3a8b, 0x8a6e: 0x40083220, 0x8a6f: 0x002c9885,\n\t0x8a70: 0x002c988b, 0x8a71: 0x002d088b, 0x8a72: 0x002d1e88, 0x8a73: 0x002e828b,\n\t0x8a74: 0x002ee285, 0x8a75: 0x00389084, 0x8a76: 0x00389284, 0x8a77: 0x00389484,\n\t0x8a78: 0x00389684, 0x8a79: 0x002d9a85, 0x8a7a: 0x40083420, 0x8a7b: 0xe0000b95,\n\t0x8a7c: 0x00327e85, 0x8a7d: 0x00325685, 0x8a7e: 0x0032568b, 0x8a7f: 0x00327e8b,\n\t// Block 0x22a, offset 0x8a80\n\t0x8a80: 0x00093685, 0x8a81: 0x40083620, 0x8a82: 0x40083820, 0x8a83: 0x40083a20,\n\t0x8a84: 0x40083c20, 0x8a85: 0x002c628b, 0x8a86: 0x002c6285, 0x8a87: 0x002c9885,\n\t0x8a88: 0x002d9a85, 0x8a89: 0x002dcc85, 0x8a8a: 0x40083e20, 0x8a8b: 0x400a6e20,\n\t0x8a8c: 0x40084020, 0x8a8d: 0xe00009c4, 0x8a8e: 0x402d1e20, 0x8a8f: 0x40084220,\n\t0x8a90: 0xe00002cb, 0x8a91: 0xe00002d3, 0x8a92: 0xe00002b2, 0x8a93: 0xe00002bb,\n\t0x8a94: 0xe00003cd, 0x8a95: 0xe00002c3, 0x8a96: 0xe00003d1, 0x8a97: 0xe00004ab,\n\t0x8a98: 0xe0000579, 0x8a99: 0xe00002c7, 0x8a9a: 0xe0000640, 0x8a9b: 0xe00002cf,\n\t0x8a9c: 0xe00004af, 0x8a9d: 0xe0000644, 0x8a9e: 0xe0000798, 0x8a9f: 0xe0002d42,\n\t0x8aa0: 0x002d9a8a, 0x8aa1: 0xe00027d4, 0x8aa2: 0xe00027db, 0x8aa3: 0xe00027ee,\n\t0x8aa4: 0x0030be8a, 0x8aa5: 0xe0002848, 0x8aa6: 0xe000284f, 0x8aa7: 0xe00010bb,\n\t0x8aa8: 0xe00027f4, 0x8aa9: 0x0030f68a, 0x8aaa: 0xe0002883, 0x8aab: 0xe000288a,\n\t0x8aac: 0x002e228a, 0x8aad: 0x002c3a8a, 0x8aae: 0x002c628a, 0x8aaf: 0x002e828a,\n\t0x8ab0: 0x002d9a84, 0x8ab1: 0xe00027d1, 0x8ab2: 0xe00027d7, 0x8ab3: 0xe00027eb,\n\t0x8ab4: 0x0030be84, 0x8ab5: 0xe0002845, 0x8ab6: 0xe000284b, 0x8ab7: 0xe00010b6,\n\t0x8ab8: 0xe00027f1, 0x8ab9: 0x0030f684, 0x8aba: 0xe0002880, 0x8abb: 0xe0002886,\n\t0x8abc: 0x002e2284, 0x8abd: 0x002c3a84, 0x8abe: 0x002c6284, 0x8abf: 0x002e8284,\n\t// Block 0x22b, offset 0x8ac0\n\t0x8ac0: 0x4009a620, 0x8ac1: 0xe00000f5, 0x8ac2: 0x4009a820, 0x8ac3: 0x4009aa20,\n\t0x8ac4: 0xe00000f8, 0x8ac5: 0x4009ac20, 0x8ac6: 0x4009ae20, 0x8ac7: 0xe00000fb,\n\t0x8ac8: 0x4009b020, 0x8ac9: 0xe00000fe, 0x8aca: 0x4009b220, 0x8acb: 0x4009b420,\n\t0x8acc: 0x4009b620, 0x8acd: 0x4009b820, 0x8ace: 0x4009ba20, 0x8acf: 0x4009bc20,\n\t0x8ad0: 0x4009be20, 0x8ad1: 0x4009c020, 0x8ad2: 0x4009c220, 0x8ad3: 0x4009c420,\n\t0x8ad4: 0x4009c620, 0x8ad5: 0x4009c820, 0x8ad6: 0x4009ca20, 0x8ad7: 0x4009cc20,\n\t0x8ad8: 0x4009ce20, 0x8ad9: 0x4009d020, 0x8ada: 0x4009d220, 0x8adb: 0x4009d420,\n\t0x8adc: 0x4009d620, 0x8add: 0x4009d820, 0x8ade: 0x4009da20, 0x8adf: 0x4009dc20,\n\t0x8ae0: 0xe0002f16, 0x8ae1: 0x4009de20, 0x8ae2: 0xe0000104, 0x8ae3: 0x4009e020,\n\t0x8ae4: 0x4009e220, 0x8ae5: 0x4009e420, 0x8ae6: 0x4009e620, 0x8ae7: 0x4009e820,\n\t0x8ae8: 0x4009ea20, 0x8ae9: 0x4009ec20, 0x8aea: 0x4009ee20, 0x8aeb: 0x4009f020,\n\t0x8aec: 0x4009f220, 0x8aed: 0xe0000101, 0x8aee: 0xe0002f13, 0x8aef: 0xe0002f19,\n\t0x8af0: 0xe0000107, 0x8af1: 0xe000010a, 0x8af2: 0x4009f420, 0x8af3: 0x4009f620,\n\t0x8af4: 0xe000010d, 0x8af5: 0xe0000110, 0x8af6: 0x4009f820, 0x8af7: 0x4009fa20,\n\t0x8af8: 0xe0000113, 0x8af9: 0xe0000116, 0x8afa: 0x4009fc20, 0x8afb: 0x4009fe20,\n\t0x8afc: 0x400a0020, 0x8afd: 0x400a0220, 0x8afe: 0x400a0420, 0x8aff: 0x400a0620,\n\t// Block 0x22c, offset 0x8b00\n\t0x8b00: 0x400d1820, 0x8b01: 0x400d1a20, 0x8b02: 0x400d1c20, 0x8b03: 0x400d1e20,\n\t0x8b04: 0x400d2020, 0x8b05: 0x400d2220, 0x8b06: 0x400d2420, 0x8b07: 0x400d2620,\n\t0x8b08: 0x400d2820, 0x8b09: 0x400d2a20, 0x8b0a: 0x400d2c20,\n\t0x8b20: 0x0029ce86, 0x8b21: 0x0029d086, 0x8b22: 0x0029d286, 0x8b23: 0x0029d486,\n\t0x8b24: 0x0029d686, 0x8b25: 0x0029d886, 0x8b26: 0x0029da86, 0x8b27: 0x0029dc86,\n\t0x8b28: 0x0029de86, 0x8b29: 0xe0002d45, 0x8b2a: 0xe0002d58, 0x8b2b: 0xe0002d6b,\n\t0x8b2c: 0xe0002d7e, 0x8b2d: 0xe0002d8d, 0x8b2e: 0xe0002d9c, 0x8b2f: 0xe0002dab,\n\t0x8b30: 0xe0002dba, 0x8b31: 0xe0002dc9, 0x8b32: 0xe0002dd8, 0x8b33: 0xe0002df6,\n\t0x8b34: 0xe0002bba, 0x8b35: 0xe0002bbe, 0x8b36: 0xe0002bc2, 0x8b37: 0xe0002bc6,\n\t0x8b38: 0xe0002bca, 0x8b39: 0xe0002bce, 0x8b3a: 0xe0002bd2, 0x8b3b: 0xe0002bd6,\n\t0x8b3c: 0xe0002bda, 0x8b3d: 0xe0000015, 0x8b3e: 0xe000001a, 0x8b3f: 0xe000001f,\n\t// Block 0x22d, offset 0x8b40\n\t0x8b40: 0xe0000024, 0x8b41: 0xe0000029, 0x8b42: 0xe000002e, 0x8b43: 0xe0000033,\n\t0x8b44: 0xe0000038, 0x8b45: 0xe000003d, 0x8b46: 0xe0000042, 0x8b47: 0xe0000047,\n\t0x8b48: 0xe0002d3f, 0x8b49: 0xe0002df3, 0x8b4a: 0xe0002e60, 0x8b4b: 0xe0002e95,\n\t0x8b4c: 0xe0002ec2, 0x8b4d: 0xe0002ed4, 0x8b4e: 0xe0002ee3, 0x8b4f: 0xe0002ef2,\n\t0x8b50: 0xe0002f01, 0x8b51: 0xe0002d48, 0x8b52: 0xe0002d5b, 0x8b53: 0xe0002d6e,\n\t0x8b54: 0xe0002d81, 0x8b55: 0xe0002d90, 0x8b56: 0xe0002d9f, 0x8b57: 0xe0002dae,\n\t0x8b58: 0xe0002dbd, 0x8b59: 0xe0002dcc, 0x8b5a: 0xe0002ddb, 0x8b5b: 0xe0002df9,\n\t0x8b5c: 0xe0002bde, 0x8b5d: 0xe0002be6, 0x8b5e: 0xe0002bee, 0x8b5f: 0xe0002bf6,\n\t0x8b60: 0xe000249f, 0x8b61: 0xe0002bfe, 0x8b62: 0xe0002c06, 0x8b63: 0xe00024a7,\n\t0x8b64: 0xe00024af, 0x8b65: 0xe0002c0e, 0x8b66: 0xe00024b7, 0x8b67: 0xe0002c16,\n\t0x8b68: 0xe0002c1e, 0x8b69: 0xe0002c26, 0x8b6a: 0xe00024bf, 0x8b6b: 0xe0002c2e,\n\t0x8b6c: 0xe00024c7, 0x8b6d: 0xe00024cf, 0x8b6e: 0xe00024d7, 0x8b6f: 0xe00024df,\n\t0x8b70: 0xe0002c36, 0x8b71: 0xe0002c3e, 0x8b72: 0xe0002c46, 0x8b73: 0xe00024e7,\n\t0x8b74: 0xe0002c4e, 0x8b75: 0xe0002c56, 0x8b76: 0x002bde8c, 0x8b77: 0x002c0a8c,\n\t0x8b78: 0x002c3a8c, 0x8b79: 0x002c628c, 0x8b7a: 0x002c988c, 0x8b7b: 0x002d088c,\n\t0x8b7c: 0x002d228c, 0x8b7d: 0x002d688c, 0x8b7e: 0x002d9a8c, 0x8b7f: 0x002dcc8c,\n\t// Block 0x22e, offset 0x8b80\n\t0x8b80: 0x40151420, 0x8b81: 0x40151620, 0x8b82: 0x40151820, 0x8b83: 0x40151a20,\n\t0x8b84: 0x40151c20, 0x8b85: 0x40151e20, 0x8b86: 0x40152020, 0x8b87: 0x40152220,\n\t0x8b88: 0x40152420, 0x8b89: 0x40152620, 0x8b8a: 0x40152820, 0x8b8b: 0x40152a20,\n\t0x8b8c: 0x40152c20, 0x8b8d: 0x40152e20, 0x8b8e: 0x40153020, 0x8b8f: 0x40153220,\n\t0x8b90: 0x40153420, 0x8b91: 0x40153620, 0x8b92: 0x40153820, 0x8b93: 0x40153a20,\n\t0x8b94: 0x40153c20, 0x8b95: 0x40153e20, 0x8b96: 0x40154020, 0x8b97: 0x40154220,\n\t0x8b98: 0x40154420, 0x8b99: 0x40154620, 0x8b9a: 0x40154820, 0x8b9b: 0x40154a20,\n\t0x8b9c: 0x40154c20, 0x8b9d: 0x40154e20, 0x8b9e: 0x40155020, 0x8b9f: 0x40155220,\n\t0x8ba0: 0x40155420, 0x8ba1: 0x40155620, 0x8ba2: 0x40155820, 0x8ba3: 0x40155a20,\n\t0x8ba4: 0x40155c20, 0x8ba5: 0x40155e20, 0x8ba6: 0x40156020, 0x8ba7: 0x40156220,\n\t0x8ba8: 0x40156420, 0x8ba9: 0x40156620, 0x8baa: 0x40156820, 0x8bab: 0x40156a20,\n\t0x8bac: 0x40156c20, 0x8bad: 0x40156e20, 0x8bae: 0x40157020, 0x8baf: 0x40157220,\n\t0x8bb0: 0x40157420, 0x8bb1: 0x40157620, 0x8bb2: 0x40157820, 0x8bb3: 0x40157a20,\n\t0x8bb4: 0xe0002b9c, 0x8bb5: 0xe0002d2c, 0x8bb6: 0xe0002d2f, 0x8bb7: 0x40157c20,\n\t0x8bb8: 0x40157e20, 0x8bb9: 0x40158020, 0x8bba: 0x40158220, 0x8bbb: 0x40158420,\n\t0x8bbc: 0x40158620, 0x8bbd: 0x40158820, 0x8bbe: 0x40158a20, 0x8bbf: 0x40158c20,\n\t// Block 0x22f, offset 0x8bc0\n\t0x8bc0: 0xe0002c5e, 0x8bc1: 0xe0002c62, 0x8bc2: 0xe0002c66, 0x8bc3: 0xe0002c6a,\n\t0x8bc4: 0xe0002c6e, 0x8bc5: 0xe0002c72, 0x8bc6: 0xe0002c76, 0x8bc7: 0xe0002c7a,\n\t0x8bc8: 0xe0002c7e, 0x8bc9: 0xe0002c82, 0x8bca: 0xe0002c86, 0x8bcb: 0xe0002c8a,\n\t0x8bcc: 0xe0002c8e, 0x8bcd: 0xe0002c92, 0x8bce: 0xe000004c, 0x8bcf: 0xe0000051,\n\t0x8bd0: 0xe0000056, 0x8bd1: 0xe000005b, 0x8bd2: 0xe0000060, 0x8bd3: 0xe0000065,\n\t0x8bd4: 0xe000006a, 0x8bd5: 0xe000006f, 0x8bd6: 0xe0000083, 0x8bd7: 0xe000008d,\n\t0x8bd8: 0xe0000092, 0x8bd9: 0xe0000097, 0x8bda: 0xe000009c, 0x8bdb: 0xe00000a1,\n\t0x8bdc: 0xe0000088, 0x8bdd: 0xe0000074, 0x8bde: 0xe000007c,\n\t0x8be0: 0xe0002c96, 0x8be1: 0xe0002ca6, 0x8be2: 0xe0002c9e, 0x8be3: 0xe0002cd6,\n\t0x8be4: 0xe0002caa, 0x8be5: 0xe0002cbe, 0x8be6: 0xe0002c9a, 0x8be7: 0xe0002cba,\n\t0x8be8: 0xe0002ca2, 0x8be9: 0xe0002cc6, 0x8bea: 0xe0002ce6, 0x8beb: 0xe0002cfa,\n\t0x8bec: 0xe0002cf6, 0x8bed: 0xe0002cee, 0x8bee: 0xe0002d22, 0x8bef: 0xe0002cda,\n\t0x8bf0: 0xe0002ce2, 0x8bf1: 0xe0002cf2, 0x8bf2: 0xe0002cea, 0x8bf3: 0xe0002d06,\n\t0x8bf4: 0xe0002cce, 0x8bf5: 0xe0002cfe, 0x8bf6: 0xe0002d1a, 0x8bf7: 0xe0002d0a,\n\t0x8bf8: 0xe0002cc2, 0x8bf9: 0xe0002cae, 0x8bfa: 0xe0002cd2, 0x8bfb: 0xe0002cde,\n\t0x8bfc: 0xe0002d02, 0x8bfd: 0xe0002cb2, 0x8bfe: 0xe0002d1e, 0x8bff: 0xe0002cca,\n\t// Block 0x230, offset 0x8c00\n\t0x8c00: 0xe0002d0e, 0x8c01: 0xe0002cb6, 0x8c02: 0xe0002d12, 0x8c03: 0xe0002d16,\n\t0x8c04: 0x02aa9e86, 0x8c05: 0x02bcf886, 0x8c06: 0x02cb0e86, 0x8c07: 0x02f71e86,\n\t0x8c08: 0xe00002e3, 0x8c09: 0xe00003d8, 0x8c0a: 0xe00004b3, 0x8c0b: 0xe000057d,\n\t0x8c0c: 0xe0000648, 0x8c0d: 0xe00006f0, 0x8c0e: 0xe000079c, 0x8c0f: 0xe0000841,\n\t0x8c10: 0xe0000ec0, 0x8c11: 0xe0002e05, 0x8c12: 0xe0002e10, 0x8c13: 0xe0002e1b,\n\t0x8c14: 0xe0002e26, 0x8c15: 0xe0002e31, 0x8c16: 0xe0002e38, 0x8c17: 0xe0002e3f,\n\t0x8c18: 0xe0002e46, 0x8c19: 0xe0002e4d, 0x8c1a: 0xe0002e63, 0x8c1b: 0xe0002e6a,\n\t0x8c1c: 0xe0002e71, 0x8c1d: 0xe0002e74, 0x8c1e: 0xe0002e77, 0x8c1f: 0xe0002e7a,\n\t0x8c20: 0x0062ac86, 0x8c21: 0x0062b086, 0x8c22: 0x0062b286, 0x8c23: 0x0062b686,\n\t0x8c24: 0x0062b886, 0x8c25: 0x0062ba86, 0x8c26: 0x0062be86, 0x8c27: 0x0062c286,\n\t0x8c28: 0x0062c486, 0x8c29: 0x0062c886, 0x8c2a: 0x0062ca86, 0x8c2b: 0x0062cc86,\n\t0x8c2c: 0x0062ce86, 0x8c2d: 0x0062d086, 0x8c2e: 0xf0000606, 0x8c2f: 0xf0000606,\n\t0x8c30: 0xf0000606, 0x8c31: 0xf0000606, 0x8c32: 0xf0000606, 0x8c33: 0xf0000606,\n\t0x8c34: 0xf0000606, 0x8c35: 0xf0000606, 0x8c36: 0xf0000606, 0x8c37: 0xf0000606,\n\t0x8c38: 0xf0000606, 0x8c39: 0xf0000606, 0x8c3a: 0xf0000606, 0x8c3b: 0xf0000606,\n\t0x8c3c: 0xe0002127, 0x8c3d: 0xe0002122, 0x8c3e: 0xf0000606, 0x8c3f: 0x4027ac20,\n\t// Block 0x231, offset 0x8c40\n\t0x8c40: 0x029c0086, 0x8c41: 0x029d1886, 0x8c42: 0x029c1286, 0x8c43: 0x02adb686,\n\t0x8c44: 0x029d2886, 0x8c45: 0x02a2da86, 0x8c46: 0x029c0686, 0x8c47: 0x02a2d686,\n\t0x8c48: 0x029cba86, 0x8c49: 0x02a68286, 0x8c4a: 0x02ce1086, 0x8c4b: 0x02e0d686,\n\t0x8c4c: 0x02d86886, 0x8c4d: 0x02ce5086, 0x8c4e: 0x0323a286, 0x8c4f: 0x02ae3e86,\n\t0x8c50: 0x02cbca86, 0x8c51: 0x02d05486, 0x8c52: 0x02ce1286, 0x8c53: 0x02f27c86,\n\t0x8c54: 0x02a81a86, 0x8c55: 0x02e4f286, 0x8c56: 0x03194286, 0x8c57: 0x02f2ba86,\n\t0x8c58: 0x02a56886, 0x8c59: 0x02f3b086, 0x8c5a: 0x02ea6e86, 0x8c5b: 0x02b2e686,\n\t0x8c5c: 0x0320d286, 0x8c5d: 0x02a25486, 0x8c5e: 0x02a6e086, 0x8c5f: 0x02d9d086,\n\t0x8c60: 0x03300a86, 0x8c61: 0x029e2286, 0x8c62: 0x02a33286, 0x8c63: 0x02d6c686,\n\t0x8c64: 0x029c1486, 0x8c65: 0x029c5a86, 0x8c66: 0x029c1686, 0x8c67: 0x02bbcc86,\n\t0x8c68: 0x02a7e686, 0x8c69: 0x02a67686, 0x8c6a: 0x02b72e86, 0x8c6b: 0x02b6cc86,\n\t0x8c6c: 0x02edc686, 0x8c6d: 0x029e0286, 0x8c6e: 0x03198e86, 0x8c6f: 0x02a6a886,\n\t0x8c70: 0x02b23886, 0x8c71: 0xe0002e7d, 0x8c72: 0xe0002e80, 0x8c73: 0xe0002e83,\n\t0x8c74: 0xe0002e86, 0x8c75: 0xe0002e98, 0x8c76: 0xe0002e9b, 0x8c77: 0xe0002e9e,\n\t0x8c78: 0xe0002ea1, 0x8c79: 0xe0002ea4, 0x8c7a: 0xe0002ea7, 0x8c7b: 0xe0002eaa,\n\t0x8c7c: 0xe0002ead, 0x8c7d: 0xe0002eb0, 0x8c7e: 0xe0002eb3, 0x8c7f: 0xe0002ec5,\n\t// Block 0x232, offset 0x8c80\n\t0x8c80: 0xe0002dea, 0x8c81: 0xe0002e57, 0x8c82: 0xe0002e8c, 0x8c83: 0xe0002eb9,\n\t0x8c84: 0xe0002ecb, 0x8c85: 0xe0002eda, 0x8c86: 0xe0002ee9, 0x8c87: 0xe0002ef8,\n\t0x8c88: 0xe0002f07, 0x8c89: 0xe0002d50, 0x8c8a: 0xe0002d63, 0x8c8b: 0xe0002d76,\n\t0x8c8c: 0xe00027c5, 0x8c8d: 0xe0000b85, 0x8c8e: 0xe00026cc, 0x8c8f: 0xe0000d14,\n\t0x8c90: 0x00657693, 0x8c91: 0x00657893, 0x8c92: 0x00657a93, 0x8c93: 0x00657e93,\n\t0x8c94: 0x00658093, 0x8c95: 0x00658293, 0x8c96: 0x00658493, 0x8c97: 0x00658693,\n\t0x8c98: 0x00658893, 0x8c99: 0x00658a93, 0x8c9a: 0x00658c93, 0x8c9b: 0x00658e93,\n\t0x8c9c: 0x00659093, 0x8c9d: 0x00659293, 0x8c9e: 0x00659493, 0x8c9f: 0x00659693,\n\t0x8ca0: 0x00659893, 0x8ca1: 0x00659a93, 0x8ca2: 0x00659c93, 0x8ca3: 0x00659e93,\n\t0x8ca4: 0x0065a093, 0x8ca5: 0x0065a293, 0x8ca6: 0x0065a493, 0x8ca7: 0x0065a693,\n\t0x8ca8: 0x0065a893, 0x8ca9: 0x0065aa93, 0x8caa: 0x0065ac93, 0x8cab: 0x0065ae93,\n\t0x8cac: 0x0065b093, 0x8cad: 0x0065b293, 0x8cae: 0x0065b493, 0x8caf: 0x0065b693,\n\t0x8cb0: 0x0065b893, 0x8cb1: 0x0065ba93, 0x8cb2: 0x0065bc93, 0x8cb3: 0x0065be93,\n\t0x8cb4: 0x0065c093, 0x8cb5: 0x0065c493, 0x8cb6: 0x0065c693, 0x8cb7: 0x0065c893,\n\t0x8cb8: 0x0065ca93, 0x8cb9: 0x0065cc93, 0x8cba: 0x0065ce93, 0x8cbb: 0x0065d093,\n\t0x8cbc: 0x0065d293, 0x8cbd: 0x0065d493, 0x8cbe: 0x0065d693,\n\t// Block 0x233, offset 0x8cc0\n\t0x8cc0: 0xe000230b, 0x8cc1: 0xe00022f8, 0x8cc2: 0xe00022fc, 0x8cc3: 0xe0002311,\n\t0x8cc4: 0xe0002316, 0x8cc5: 0xe000231d, 0x8cc6: 0xe0002321, 0x8cc7: 0xe0002325,\n\t0x8cc8: 0xe000232b, 0x8cc9: 0xf0001c1c, 0x8cca: 0xe0002330, 0x8ccb: 0xe000233c,\n\t0x8ccc: 0xe0002340, 0x8ccd: 0xe0002337, 0x8cce: 0xe0002346, 0x8ccf: 0xe000234b,\n\t0x8cd0: 0xe000234f, 0x8cd1: 0xe0002353, 0x8cd2: 0xf0001c1c, 0x8cd3: 0xe000235e,\n\t0x8cd4: 0xe0002358, 0x8cd5: 0xf0001c1c, 0x8cd6: 0xe0002363, 0x8cd7: 0xe000236d,\n\t0x8cd8: 0xe0002d39, 0x8cd9: 0xe0002ded, 0x8cda: 0xe0002e5a, 0x8cdb: 0xe0002e8f,\n\t0x8cdc: 0xe0002ebc, 0x8cdd: 0xe0002ece, 0x8cde: 0xe0002edd, 0x8cdf: 0xe0002eec,\n\t0x8ce0: 0xe0002efb, 0x8ce1: 0xe0002f0a, 0x8ce2: 0xe0002d54, 0x8ce3: 0xe0002d67,\n\t0x8ce4: 0xe0002d7a, 0x8ce5: 0xe0002d89, 0x8ce6: 0xe0002d98, 0x8ce7: 0xe0002da7,\n\t0x8ce8: 0xe0002db6, 0x8ce9: 0xe0002dc5, 0x8cea: 0xe0002dd4, 0x8ceb: 0xe0002de3,\n\t0x8cec: 0xe0002e01, 0x8ced: 0xe0002e0c, 0x8cee: 0xe0002e17, 0x8cef: 0xe0002e22,\n\t0x8cf0: 0xe0002e2d, 0x8cf1: 0xe0000c1e, 0x8cf2: 0xe000329b, 0x8cf3: 0xe0002f0d,\n\t0x8cf4: 0xe0000a31, 0x8cf5: 0xe0002824, 0x8cf6: 0xe00035d6, 0x8cf7: 0xe00032a7,\n\t0x8cf8: 0xe0000ac2, 0x8cf9: 0xe0000ac6, 0x8cfa: 0xe00027e8, 0x8cfb: 0xf0001c1c,\n\t0x8cfc: 0xf0001c1c, 0x8cfd: 0xf0001c1c, 0x8cfe: 0xf0001c1c, 0x8cff: 0xe0002431,\n\t// Block 0x234, offset 0x8d00\n\t0x8d00: 0xe00035d0, 0x8d01: 0xe00035b8, 0x8d02: 0xe00035ee, 0x8d03: 0xe000358e,\n\t0x8d04: 0xe00027f7, 0x8d05: 0xe00027fa, 0x8d06: 0xe0003594, 0x8d07: 0xe0003573,\n\t0x8d08: 0xe0000a6b, 0x8d09: 0xe0000cb4, 0x8d0a: 0xe00035d9, 0x8d0b: 0xe00035bb,\n\t0x8d0c: 0xe00035f1, 0x8d0d: 0xe00035f4, 0x8d0e: 0xe000359d, 0x8d0f: 0xe00027fd,\n\t0x8d10: 0xe00027ce, 0x8d11: 0xe0000cb9, 0x8d12: 0xe0000d36, 0x8d13: 0xe0000be3,\n\t0x8d14: 0xe0000fc5, 0x8d15: 0xe00035f7, 0x8d16: 0xe00035a0, 0x8d17: 0xe00032a4,\n\t0x8d18: 0xe0002803, 0x8d19: 0xe0003570, 0x8d1a: 0xe00035c7, 0x8d1b: 0xe00035fa,\n\t0x8d1c: 0xe00035a3, 0x8d1d: 0xe0003099, 0x8d1e: 0xe0002806, 0x8d1f: 0xe0000d3e,\n\t0x8d20: 0xe0000a72, 0x8d21: 0xe0003588, 0x8d22: 0xe0000cbd, 0x8d23: 0xe0000d42,\n\t0x8d24: 0xe0000a76, 0x8d25: 0xe000358b, 0x8d26: 0xe0000cc1, 0x8d27: 0xe0000d2d,\n\t0x8d28: 0xe0000d31, 0x8d29: 0xe00035d3, 0x8d2a: 0xe0000cc5, 0x8d2b: 0xe0000d4a,\n\t0x8d2c: 0xe0000be7, 0x8d2d: 0xe0000f0b, 0x8d2e: 0xe0000f0f, 0x8d2f: 0xe0000f15,\n\t0x8d30: 0xe000282d, 0x8d31: 0xe0002821, 0x8d32: 0xe000288e, 0x8d33: 0xe000281b,\n\t0x8d34: 0xe00035dc, 0x8d35: 0xe00035ca, 0x8d36: 0xe00035fd, 0x8d37: 0xe00035a6,\n\t0x8d38: 0xe000280f, 0x8d39: 0xe00035a9, 0x8d3a: 0xe00035df, 0x8d3b: 0xe00035cd,\n\t0x8d3c: 0xe0003600, 0x8d3d: 0xe00035af, 0x8d3e: 0xe0002812, 0x8d3f: 0xe00035b2,\n\t// Block 0x235, offset 0x8d40\n\t0x8d40: 0xe0002815, 0x8d41: 0xe00035b5, 0x8d42: 0xe00009b7, 0x8d43: 0xe00024f3,\n\t0x8d44: 0xe0003090, 0x8d45: 0xe0003096, 0x8d46: 0xe0000a66, 0x8d47: 0xe0000a7a,\n\t0x8d48: 0xe000329e, 0x8d49: 0xe0003576, 0x8d4a: 0xe00027c2, 0x8d4b: 0xe00027c8,\n\t0x8d4c: 0xe00027e5, 0x8d4d: 0xe0002800, 0x8d4e: 0xe0002809, 0x8d4f: 0xe000280c,\n\t0x8d50: 0xe0003582, 0x8d51: 0xe0003585, 0x8d52: 0xe0000d0d, 0x8d53: 0xe0002818,\n\t0x8d54: 0xe0003591, 0x8d55: 0xe0000d3a, 0x8d56: 0xe0000d46, 0x8d57: 0xe0002827,\n\t0x8d58: 0xe0000eb0, 0x8d59: 0xe0000eb8, 0x8d5a: 0xe000282a, 0x8d5b: 0xe0002836,\n\t0x8d5c: 0xe000283f, 0x8d5d: 0xe00035e2, 0x8d5e: 0xe00010b2, 0x8d5f: 0xe00009c8,\n\t0x8d60: 0xe0002de7, 0x8d61: 0xe0002e54, 0x8d62: 0xe0002e89, 0x8d63: 0xe0002eb6,\n\t0x8d64: 0xe0002ec8, 0x8d65: 0xe0002ed7, 0x8d66: 0xe0002ee6, 0x8d67: 0xe0002ef5,\n\t0x8d68: 0xe0002f04, 0x8d69: 0xe0002d4c, 0x8d6a: 0xe0002d5f, 0x8d6b: 0xe0002d72,\n\t0x8d6c: 0xe0002d85, 0x8d6d: 0xe0002d94, 0x8d6e: 0xe0002da3, 0x8d6f: 0xe0002db2,\n\t0x8d70: 0xe0002dc1, 0x8d71: 0xe0002dd0, 0x8d72: 0xe0002ddf, 0x8d73: 0xe0002dfd,\n\t0x8d74: 0xe0002e08, 0x8d75: 0xe0002e13, 0x8d76: 0xe0002e1e, 0x8d77: 0xe0002e29,\n\t0x8d78: 0xe0002e34, 0x8d79: 0xe0002e3b, 0x8d7a: 0xe0002e42, 0x8d7b: 0xe0002e49,\n\t0x8d7c: 0xe0002e50, 0x8d7d: 0xe0002e66, 0x8d7e: 0xe0002e6d, 0x8d7f: 0xe0000bdf,\n\t// Block 0x236, offset 0x8d80\n\t0x8d80: 0xe000356a, 0x8d81: 0xe00026cf, 0x8d82: 0xe000356d, 0x8d83: 0xe0000b99,\n\t0x8d84: 0xe0000b9d, 0x8d85: 0xe0000f83, 0x8d86: 0xe000283c,\n\t0x8d93: 0xf0000404,\n\t0x8d94: 0xf0000404, 0x8d95: 0xf0000404, 0x8d96: 0xf0000404, 0x8d97: 0xf0000404,\n\t0x8d9d: 0xe000150b, 0x8d9e: 0xa1a09602, 0x8d9f: 0xe0001514,\n\t0x8da0: 0x0038ae85, 0x8da1: 0x00389085, 0x8da2: 0x00389685, 0x8da3: 0x00389885,\n\t0x8da4: 0x0038a485, 0x8da5: 0x0038a685, 0x8da6: 0x0038a885, 0x8da7: 0x0038b685,\n\t0x8da8: 0x0038ba85, 0x8da9: 0x00093885, 0x8daa: 0xe0001542, 0x8dab: 0xe000153f,\n\t0x8dac: 0xe000154c, 0x8dad: 0xe0001548, 0x8dae: 0xe00014e1, 0x8daf: 0xe00014e4,\n\t0x8db0: 0xe00014e7, 0x8db1: 0xe00014ea, 0x8db2: 0xe00014f0, 0x8db3: 0xe00014f3,\n\t0x8db4: 0xe00014f6, 0x8db5: 0xe00014fc, 0x8db6: 0xe0001505,\n\t0x8db8: 0xe0001508, 0x8db9: 0xe000150e, 0x8dba: 0xe000151b, 0x8dbb: 0xe0001518,\n\t0x8dbc: 0xe0001521, 0x8dbe: 0xe0001524,\n\t// Block 0x237, offset 0x8dc0\n\t0x8dc0: 0xa0000000, 0x8dc1: 0xa0000000, 0x8dc2: 0xa0000000, 0x8dc3: 0xa0000000,\n\t0x8dc4: 0xa0000000, 0x8dc5: 0xa0000000, 0x8dc6: 0xa0000000, 0x8dc7: 0xa0000000,\n\t0x8dc8: 0xa0000000, 0x8dc9: 0xa0000000, 0x8dca: 0xa0000000, 0x8dcb: 0xa0000000,\n\t0x8dcc: 0xa0000000, 0x8dcd: 0xa0000000, 0x8dce: 0xa0000000, 0x8dcf: 0xa0000000,\n\t0x8dd0: 0x00024096, 0x8dd1: 0x00025c96, 0x8dd2: 0x00030496, 0x8dd3: 0x00026c96,\n\t0x8dd4: 0x00026296, 0x8dd5: 0x0002ba96, 0x8dd6: 0x0002c496, 0x8dd7: 0x0004b496,\n\t0x8dd8: 0x0004b696, 0x8dd9: 0xe0002bb6,\n\t0x8de0: 0xae608202, 0x8de1: 0xae600000, 0x8de2: 0xae608102, 0x8de3: 0xae600000,\n\t0x8de4: 0xae600000, 0x8de5: 0xae600000, 0x8de6: 0xae600000,\n\t0x8df0: 0xe0002baf, 0x8df1: 0x00022c96, 0x8df2: 0x00022a96, 0x8df3: 0x00021696,\n\t0x8df4: 0x00021696, 0x8df5: 0x0003f496, 0x8df6: 0x0003f696, 0x8df7: 0x0003fc96,\n\t0x8df8: 0x0003fe96, 0x8df9: 0x0004b096, 0x8dfa: 0x0004b296, 0x8dfb: 0x0004ac96,\n\t0x8dfc: 0x0004ae96, 0x8dfd: 0x0004a096, 0x8dfe: 0x0004a296, 0x8dff: 0x00049c96,\n\t// Block 0x238, offset 0x8e00\n\t0x8e00: 0xe0002d36, 0x8e01: 0xe0002d33, 0x8e02: 0xe0002d3c, 0x8e03: 0xe0002df0,\n\t0x8e04: 0xe0002e5d, 0x8e05: 0xe0002e92, 0x8e06: 0xe0002ebf, 0x8e07: 0xe0002ed1,\n\t0x8e08: 0xe0002ee0, 0x8e09: 0xe0002eef, 0x8e0a: 0xe0002efe,\n\t0x8e10: 0xe0002be2, 0x8e11: 0xe0002bea, 0x8e12: 0xe0002bf2, 0x8e13: 0xe0002bfa,\n\t0x8e14: 0xe00024a3, 0x8e15: 0xe0002c02, 0x8e16: 0xe0002c0a, 0x8e17: 0xe00024ab,\n\t0x8e18: 0xe00024b3, 0x8e19: 0xe0002c12, 0x8e1a: 0xe00024bb, 0x8e1b: 0xe0002c1a,\n\t0x8e1c: 0xe0002c22, 0x8e1d: 0xe0002c2a, 0x8e1e: 0xe00024c3, 0x8e1f: 0xe0002c32,\n\t0x8e20: 0xe00024cb, 0x8e21: 0xe00024d3, 0x8e22: 0xe00024db, 0x8e23: 0xe00024e3,\n\t0x8e24: 0xe0002c3a, 0x8e25: 0xe0002c42, 0x8e26: 0xe0002c4a, 0x8e27: 0xe00024eb,\n\t0x8e28: 0xe0002c52, 0x8e29: 0xe0002c5a, 0x8e2a: 0xe00024ef, 0x8e2b: 0x002c3a8c,\n\t0x8e2c: 0x002f7a8c, 0x8e2d: 0xe0003093, 0x8e2e: 0xe00035e8,\n\t0x8e30: 0x002bde9d, 0x8e31: 0x002c0a9d, 0x8e32: 0x002c3a9d, 0x8e33: 0x002c629d,\n\t0x8e34: 0x002c989d, 0x8e35: 0x002d089d, 0x8e36: 0x002d229d, 0x8e37: 0x002d689d,\n\t0x8e38: 0x002d9a9d, 0x8e39: 0x002dcc9d, 0x8e3a: 0x002dfe9d, 0x8e3b: 0x002e229d,\n\t0x8e3c: 0x002e829d, 0x8e3d: 0x002e9e9d, 0x8e3e: 0x002ee29d, 0x8e3f: 0x002f2c9d,\n\t// Block 0x239, offset 0x8e40\n\t0x8e40: 0x002f569d, 0x8e41: 0x002f7a9d, 0x8e42: 0x002fe69d, 0x8e43: 0x00302c9d,\n\t0x8e44: 0x00306c9d, 0x8e45: 0x0030be9d, 0x8e46: 0x0030e29d, 0x8e47: 0x0030f69d,\n\t0x8e48: 0x0031009d, 0x8e49: 0x00312a9d, 0x8e4a: 0xe00027cb, 0x8e4b: 0xe00035ac,\n\t0x8e4c: 0xe0002830, 0x8e4d: 0xe0002839, 0x8e4e: 0xe0000ebc, 0x8e4f: 0xe00035e5,\n\t0x8e50: 0x002bde8c, 0x8e51: 0x002c0a8c, 0x8e52: 0x002c3a8c, 0x8e53: 0x002c628c,\n\t0x8e54: 0x002c988c, 0x8e55: 0x002d088c, 0x8e56: 0x002d228c, 0x8e57: 0x002d688c,\n\t0x8e58: 0x002d9a8c, 0x8e59: 0x002dcc8c, 0x8e5a: 0x002dfe8c, 0x8e5b: 0x002e228c,\n\t0x8e5c: 0x002e828c, 0x8e5d: 0x002e9e8c, 0x8e5e: 0x002ee28c, 0x8e5f: 0x002f2c8c,\n\t0x8e60: 0x002f568c, 0x8e61: 0x002f7a8c, 0x8e62: 0x002fe68c, 0x8e63: 0x00302c8c,\n\t0x8e64: 0x00306c8c, 0x8e65: 0x0030be8c, 0x8e66: 0x0030e28c, 0x8e67: 0x0030f68c,\n\t0x8e68: 0x0031008c, 0x8e69: 0x00312a8c, 0x8e6a: 0xe0003597, 0x8e6b: 0xe000359a,\n\t0x8e70: 0x002bde9d, 0x8e71: 0x002c0a9d, 0x8e72: 0x002c3a9d, 0x8e73: 0x002c629d,\n\t0x8e74: 0x002c989d, 0x8e75: 0x002d089d, 0x8e76: 0x002d229d, 0x8e77: 0x002d689d,\n\t0x8e78: 0x002d9a9d, 0x8e79: 0x002dcc9d, 0x8e7a: 0x002dfe9d, 0x8e7b: 0x002e229d,\n\t0x8e7c: 0x002e829d, 0x8e7d: 0x002e9e9d, 0x8e7e: 0x002ee29d, 0x8e7f: 0x002f2c9d,\n\t// Block 0x23a, offset 0x8e80\n\t0x8e80: 0x002f569d, 0x8e81: 0x002f7a9d, 0x8e82: 0x002fe69d, 0x8e83: 0x00302c9d,\n\t0x8e84: 0x00306c9d, 0x8e85: 0x0030be9d, 0x8e86: 0x0030e29d, 0x8e87: 0x0030f69d,\n\t0x8e88: 0x0031009d, 0x8e89: 0x00312a9d, 0x8e8a: 0x002f2c9d, 0x8e8b: 0xe0000c81,\n\t0x8e8c: 0xe0000eb5, 0x8e8d: 0xe0000f74, 0x8e8e: 0xe00009d2, 0x8e8f: 0xe00010f0,\n\t0x8e90: 0xe00032a1, 0x8e91: 0xe0000a6f, 0x8e92: 0xe0000a7e, 0x8e93: 0xe0000ba4,\n\t0x8e94: 0xe0000c84, 0x8e95: 0xe0000d8a, 0x8e96: 0xe0000d8e, 0x8e97: 0xe0000e9b,\n\t0x8e98: 0xe0000f77, 0x8e99: 0xe00010a2, 0x8e9a: 0xe00010c0,\n\t// Block 0x23b, offset 0x8ec0\n\t0x8ec0: 0xa0000000, 0x8ec1: 0xa0000000, 0x8ec2: 0xa0000000, 0x8ec3: 0xa0000000,\n\t0x8ec4: 0xa0000000, 0x8ec5: 0xa0000000, 0x8ec6: 0xa0000000, 0x8ec7: 0xa0000000,\n\t0x8ec8: 0xa0000000, 0x8ec9: 0x40020020, 0x8eca: 0x40020220, 0x8ecb: 0x40020420,\n\t0x8ecc: 0x40020620, 0x8ecd: 0x40020820, 0x8ece: 0xa0000000, 0x8ecf: 0xa0000000,\n\t0x8ed0: 0xa0000000, 0x8ed1: 0xa0000000, 0x8ed2: 0xa0000000, 0x8ed3: 0xa0000000,\n\t0x8ed4: 0xa0000000, 0x8ed5: 0xa0000000, 0x8ed6: 0xa0000000, 0x8ed7: 0xa0000000,\n\t0x8ed8: 0xa0000000, 0x8ed9: 0xa0000000, 0x8eda: 0xa0000000, 0x8edb: 0xa0000000,\n\t0x8edc: 0xa0000000, 0x8edd: 0xa0000000, 0x8ede: 0xa0000000, 0x8edf: 0xa0000000,\n\t0x8ee0: 0x40021220, 0x8ee1: 0x4002ba20, 0x8ee2: 0x4003e020, 0x8ee3: 0x4004ea20,\n\t0x8ee4: 0x4027de20, 0x8ee5: 0x4004ec20, 0x8ee6: 0x4004e620, 0x8ee7: 0x4003d220,\n\t0x8ee8: 0x4003f420, 0x8ee9: 0x4003f620, 0x8eea: 0x4004d820, 0x8eeb: 0x40093820,\n\t0x8eec: 0x40024020, 0x8eed: 0x40021a20, 0x8eee: 0x4002e420, 0x8eef: 0x4004e220,\n\t0x8ef0: 0x4029cc20, 0x8ef1: 0x4029ce20, 0x8ef2: 0x4029d020, 0x8ef3: 0x4029d220,\n\t0x8ef4: 0x4029d420, 0x8ef5: 0x4029d620, 0x8ef6: 0x4029d820, 0x8ef7: 0x4029da20,\n\t0x8ef8: 0x4029dc20, 0x8ef9: 0x4029de20, 0x8efa: 0x40026c20, 0x8efb: 0x40026220,\n\t0x8efc: 0x40094020, 0x8efd: 0x40094220, 0x8efe: 0x40094420, 0x8eff: 0x4002c420,\n\t// Block 0x23c, offset 0x8f00\n\t0x8f00: 0x4004d620, 0x8f01: 0x002bde88, 0x8f02: 0x002c0a88, 0x8f03: 0xc3352741,\n\t0x8f04: 0x002c6288, 0x8f05: 0x002c9888, 0x8f06: 0x002d0888, 0x8f07: 0xc3392741,\n\t0x8f08: 0xc5402741, 0x8f09: 0x002d9a88, 0x8f0a: 0xc5442741, 0x8f0b: 0x002dfe88,\n\t0x8f0c: 0xc0030002, 0x8f0d: 0x002e8288, 0x8f0e: 0x002e9e88, 0x8f0f: 0x002ee288,\n\t0x8f10: 0x002f2c88, 0x8f11: 0x002f5688, 0x8f12: 0x002f7a88, 0x8f13: 0xc3432741,\n\t0x8f14: 0x00302c88, 0x8f15: 0xc34700d1, 0x8f16: 0x0030be88, 0x8f17: 0x0030e288,\n\t0x8f18: 0x0030f688, 0x8f19: 0x00310088, 0x8f1a: 0x00312a88, 0x8f1b: 0x4003f820,\n\t0x8f1c: 0x4004e420, 0x8f1d: 0x4003fa20, 0x8f1e: 0x40062420, 0x8f1f: 0x40021620,\n\t0x8f20: 0x40061e20, 0x8f21: 0x402bde20, 0x8f22: 0x402c0a20, 0x8f23: 0xc3332741,\n\t0x8f24: 0x402c6220, 0x8f25: 0x402c9820, 0x8f26: 0x402d0820, 0x8f27: 0xc3372741,\n\t0x8f28: 0xc53e2741, 0x8f29: 0x402d9a20, 0x8f2a: 0xc5422741, 0x8f2b: 0x402dfe20,\n\t0x8f2c: 0xc0000002, 0x8f2d: 0x402e8220, 0x8f2e: 0x402e9e20, 0x8f2f: 0x402ee220,\n\t0x8f30: 0x402f2c20, 0x8f31: 0x402f5620, 0x8f32: 0x402f7a20, 0x8f33: 0xc3412741,\n\t0x8f34: 0x40302c20, 0x8f35: 0xc34500d1, 0x8f36: 0x4030be20, 0x8f37: 0x4030e220,\n\t0x8f38: 0x4030f620, 0x8f39: 0x40310020, 0x8f3a: 0x40312a20, 0x8f3b: 0x4003fc20,\n\t0x8f3c: 0x40094820, 0x8f3d: 0x4003fe20, 0x8f3e: 0x40094c20, 0x8f3f: 0xa0000000,\n\t// Block 0x23d, offset 0x8f40\n\t0x8f40: 0xe0000983, 0x8f41: 0xe0000980, 0x8f42: 0xe00008fb, 0x8f43: 0xe00008f8,\n\t0x8f44: 0xe000097d, 0x8f45: 0xe000097a, 0x8f46: 0xe0000a38, 0x8f47: 0xe0000a35,\n\t0x8f48: 0x002c3c83, 0x8f49: 0x402c3c20, 0x8f4a: 0xe0000a4a, 0x8f4b: 0xe0000a47,\n\t0x8f4c: 0xe0000a44, 0x8f4d: 0xe0000a41, 0x8f4e: 0xe0000a86, 0x8f4f: 0xe0000a83,\n\t0x8f50: 0xe0000aaa, 0x8f51: 0xe0000aa7, 0x8f52: 0xe0000b46, 0x8f53: 0xe0000b43,\n\t0x8f54: 0xe0000aee, 0x8f55: 0xe0000aeb, 0x8f56: 0xe0000b2c, 0x8f57: 0xe0000b29,\n\t0x8f58: 0xe0000b40, 0x8f59: 0xe0000b3d, 0x8f5a: 0xe0000b1a, 0x8f5b: 0xe0000b17,\n\t0x8f5c: 0x002d2483, 0x8f5d: 0x402d2420, 0x8f5e: 0xe0000bb2, 0x8f5f: 0xe0000baf,\n\t0x8f60: 0xe0000bc4, 0x8f61: 0xe0000bc1, 0x8f62: 0xe0000bca, 0x8f63: 0xe0000bc7,\n\t0x8f64: 0x002d6a83, 0x8f65: 0x402d6a20, 0x8f66: 0xe0000c1b, 0x8f67: 0xe0000c18,\n\t0x8f68: 0xe0000c51, 0x8f69: 0xe0000c4e, 0x8f6a: 0xe0000c60, 0x8f6b: 0xe0000c5d,\n\t0x8f6c: 0xe0000c31, 0x8f6d: 0xe0000c2e, 0x8f6e: 0xe0000c5a, 0x8f6f: 0xe0000c57,\n\t0x8f70: 0xe0000c54, 0x8f71: 0x402da220, 0x8f72: 0xf0000a0a, 0x8f73: 0xf0000404,\n\t0x8f74: 0x002dce83, 0x8f75: 0x402dce20, 0x8f76: 0xe0000c9f, 0x8f77: 0xe0000c9c,\n\t0x8f78: 0x402f7220, 0x8f79: 0xe0000ccc, 0x8f7a: 0xe0000cc9, 0x8f7b: 0xe0000cd8,\n\t0x8f7c: 0xe0000cd5, 0x8f7d: 0xe0000cd2, 0x8f7e: 0xe0000ccf, 0x8f7f: 0xe0000d04,\n\t// Block 0x23e, offset 0x8f80\n\t0x8f80: 0xe0000cfe, 0x8f81: 0xe0000cf8, 0x8f82: 0xe0000cf5, 0x8f83: 0xe0000d51,\n\t0x8f84: 0xe0000d4e, 0x8f85: 0xe0000d6f, 0x8f86: 0xe0000d6c, 0x8f87: 0xe0000d5d,\n\t0x8f88: 0xe0000d5a, 0x8f89: 0xf0000404, 0x8f8a: 0x002eda88, 0x8f8b: 0x402eda20,\n\t0x8f8c: 0xe0000e2e, 0x8f8d: 0xe0000e2b, 0x8f8e: 0xe0000da0, 0x8f8f: 0xe0000d9d,\n\t0x8f90: 0xe0000de0, 0x8f91: 0xe0000ddd, 0x8f92: 0xe0000e93, 0x8f93: 0xe0000e8f,\n\t0x8f94: 0xe0000eca, 0x8f95: 0xe0000ec7, 0x8f96: 0xe0000edc, 0x8f97: 0xe0000ed9,\n\t0x8f98: 0xe0000ed0, 0x8f99: 0xe0000ecd, 0x8f9a: 0xe0000f1f, 0x8f9b: 0xe0000f1c,\n\t0x8f9c: 0x002fe883, 0x8f9d: 0x402fe820, 0x8f9e: 0xe0000f47, 0x8f9f: 0xe0000f44,\n\t0x8fa0: 0xe0000f33, 0x8fa1: 0xe0000f30, 0x8fa2: 0xe0000f99, 0x8fa3: 0xe0000f96,\n\t0x8fa4: 0xe0000f8a, 0x8fa5: 0xe0000f87, 0x8fa6: 0x00303688, 0x8fa7: 0x40303620,\n\t0x8fa8: 0xe000102b, 0x8fa9: 0xe0001028, 0x8faa: 0xe000103f, 0x8fab: 0xe000103c,\n\t0x8fac: 0x00306e83, 0x8fad: 0x40306e20, 0x8fae: 0xe0000ff9, 0x8faf: 0xe0000ff6,\n\t0x8fb0: 0xe0001025, 0x8fb1: 0xe0001022, 0x8fb2: 0xe0001039, 0x8fb3: 0xe0001036,\n\t0x8fb4: 0xe00010d8, 0x8fb5: 0xe00010d5, 0x8fb6: 0xe000110e, 0x8fb7: 0xe000110b,\n\t0x8fb8: 0xe0001117, 0x8fb9: 0xe000113b, 0x8fba: 0xe0001138, 0x8fbb: 0xe000114d,\n\t0x8fbc: 0xe000114a, 0x8fbd: 0xe0001147, 0x8fbe: 0xe0001144, 0x8fbf: 0xe0000f64,\n\t// Block 0x23f, offset 0x8fc0\n\t0x8fc0: 0xa0000000, 0x8fc1: 0xa0000000, 0x8fc2: 0xa0000000, 0x8fc3: 0xa0000000,\n\t0x8fc4: 0xa0000000, 0x8fc5: 0xa0000000, 0x8fc6: 0xa0000000, 0x8fc7: 0xa0000000,\n\t0x8fc8: 0xa0000000, 0x8fc9: 0x40020020, 0x8fca: 0x40020220, 0x8fcb: 0x40020420,\n\t0x8fcc: 0x40020620, 0x8fcd: 0x40020820, 0x8fce: 0xa0000000, 0x8fcf: 0xa0000000,\n\t0x8fd0: 0xa0000000, 0x8fd1: 0xa0000000, 0x8fd2: 0xa0000000, 0x8fd3: 0xa0000000,\n\t0x8fd4: 0xa0000000, 0x8fd5: 0xa0000000, 0x8fd6: 0xa0000000, 0x8fd7: 0xa0000000,\n\t0x8fd8: 0xa0000000, 0x8fd9: 0xa0000000, 0x8fda: 0xa0000000, 0x8fdb: 0xa0000000,\n\t0x8fdc: 0xa0000000, 0x8fdd: 0xa0000000, 0x8fde: 0xa0000000, 0x8fdf: 0xa0000000,\n\t0x8fe0: 0x40021220, 0x8fe1: 0x4002ba20, 0x8fe2: 0x4003e020, 0x8fe3: 0x4004ea20,\n\t0x8fe4: 0x4027de20, 0x8fe5: 0x4004ec20, 0x8fe6: 0x4004e620, 0x8fe7: 0x4003d220,\n\t0x8fe8: 0x4003f420, 0x8fe9: 0x4003f620, 0x8fea: 0x4004d820, 0x8feb: 0x40093820,\n\t0x8fec: 0x40024020, 0x8fed: 0x40021a20, 0x8fee: 0x4002e420, 0x8fef: 0x4004e220,\n\t0x8ff0: 0x4029cc20, 0x8ff1: 0x4029ce20, 0x8ff2: 0x4029d020, 0x8ff3: 0x4029d220,\n\t0x8ff4: 0x4029d420, 0x8ff5: 0x4029d620, 0x8ff6: 0x4029d820, 0x8ff7: 0x4029da20,\n\t0x8ff8: 0x4029dc20, 0x8ff9: 0x4029de20, 0x8ffa: 0x40026c20, 0x8ffb: 0x40026220,\n\t0x8ffc: 0x40094020, 0x8ffd: 0x40094220, 0x8ffe: 0x40094420, 0x8fff: 0x4002c420,\n\t// Block 0x240, offset 0x9000\n\t0x9000: 0x4004d620, 0x9001: 0x002bde88, 0x9002: 0x002c0a88, 0x9003: 0x002c3a88,\n\t0x9004: 0x002c6288, 0x9005: 0x002c9888, 0x9006: 0x002d0888, 0x9007: 0x002d2288,\n\t0x9008: 0x002d6888, 0x9009: 0x002d9a88, 0x900a: 0x002dcc88, 0x900b: 0x002dfe88,\n\t0x900c: 0xc0030002, 0x900d: 0x002e8288, 0x900e: 0xc5462761, 0x900f: 0x002ee288,\n\t0x9010: 0x002f2c88, 0x9011: 0x002f5688, 0x9012: 0x002f7a88, 0x9013: 0x002fe688,\n\t0x9014: 0x00302c88, 0x9015: 0x00306c88, 0x9016: 0x0030be88, 0x9017: 0x0030e288,\n\t0x9018: 0x0030f688, 0x9019: 0x00310088, 0x901a: 0x00312a88, 0x901b: 0x4003f820,\n\t0x901c: 0x4004e420, 0x901d: 0x4003fa20, 0x901e: 0x40062420, 0x901f: 0x40021620,\n\t0x9020: 0x40061e20, 0x9021: 0x402bde20, 0x9022: 0x402c0a20, 0x9023: 0x402c3a20,\n\t0x9024: 0x402c6220, 0x9025: 0x402c9820, 0x9026: 0x402d0820, 0x9027: 0x402d2220,\n\t0x9028: 0x402d6820, 0x9029: 0x402d9a20, 0x902a: 0x402dcc20, 0x902b: 0x402dfe20,\n\t0x902c: 0xc0000002, 0x902d: 0x402e8220, 0x902e: 0xc5332761, 0x902f: 0x402ee220,\n\t0x9030: 0x402f2c20, 0x9031: 0x402f5620, 0x9032: 0x402f7a20, 0x9033: 0x402fe620,\n\t0x9034: 0x40302c20, 0x9035: 0x40306c20, 0x9036: 0x4030be20, 0x9037: 0x4030e220,\n\t0x9038: 0x4030f620, 0x9039: 0x40310020, 0x903a: 0x40312a20, 0x903b: 0x4003fc20,\n\t0x903c: 0x40094820, 0x903d: 0x4003fe20, 0x903e: 0x40094c20, 0x903f: 0xa0000000,\n\t// Block 0x241, offset 0x9040\n\t0x9040: 0xe00008f5, 0x9041: 0xe00008ef, 0x9042: 0xe0000921, 0x9043: 0xe0000969,\n\t0x9044: 0xe000095b, 0x9045: 0xe000094d, 0x9046: 0xe00009dd, 0x9047: 0xe0000a53,\n\t0x9048: 0xe0000ae8, 0x9049: 0xe0000ae2, 0x904a: 0xe0000af4, 0x904b: 0xe0000b20,\n\t0x904c: 0xe0000c2b, 0x904d: 0xe0000c25, 0x904e: 0xe0000c37, 0x904f: 0xe0000c43,\n\t0x9050: 0xe0000ab3, 0x9051: 0x002ea083, 0x9052: 0xe0000d9a, 0x9053: 0xe0000d94,\n\t0x9054: 0xe0000da6, 0x9055: 0xe0000de6, 0x9056: 0xe0000dd2, 0x9057: 0x40093e20,\n\t0x9058: 0xe0000e12, 0x9059: 0xe0000fe1, 0x905a: 0xe0000fdb, 0x905b: 0xe0000fed,\n\t0x905c: 0xe0000fff, 0x905d: 0xe0001102, 0x905e: 0x00318888, 0x905f: 0xe0000f7b,\n\t0x9060: 0xe00008f2, 0x9061: 0xe00008ec, 0x9062: 0xe000091e, 0x9063: 0xe0000966,\n\t0x9064: 0xe0000958, 0x9065: 0xe000094a, 0x9066: 0xe00009d5, 0x9067: 0xe0000a4d,\n\t0x9068: 0xe0000ae5, 0x9069: 0xe0000adf, 0x906a: 0xe0000af1, 0x906b: 0xe0000b1d,\n\t0x906c: 0xe0000c28, 0x906d: 0xe0000c22, 0x906e: 0xe0000c34, 0x906f: 0xe0000c40,\n\t0x9070: 0xe0000aad, 0x9071: 0x402ea020, 0x9072: 0xe0000d97, 0x9073: 0xe0000d91,\n\t0x9074: 0xe0000da3, 0x9075: 0xe0000de3, 0x9076: 0xe0000dcf, 0x9077: 0x40093c20,\n\t0x9078: 0xe0000e0f, 0x9079: 0xe0000fde, 0x907a: 0xe0000fd8, 0x907b: 0xe0000fea,\n\t0x907c: 0xe0000ffc, 0x907d: 0xe00010ff, 0x907e: 0x40318820, 0x907f: 0xe0001114,\n\t// Block 0x242, offset 0x9080\n\t0x9080: 0xa0000000, 0x9081: 0xa0000000, 0x9082: 0xa0000000, 0x9083: 0xa0000000,\n\t0x9084: 0xa0000000, 0x9085: 0xa0000000, 0x9086: 0xa0000000, 0x9087: 0xa0000000,\n\t0x9088: 0xa0000000, 0x9089: 0x40020020, 0x908a: 0x40020220, 0x908b: 0x40020420,\n\t0x908c: 0x40020620, 0x908d: 0x40020820, 0x908e: 0xa0000000, 0x908f: 0xa0000000,\n\t0x9090: 0xa0000000, 0x9091: 0xa0000000, 0x9092: 0xa0000000, 0x9093: 0xa0000000,\n\t0x9094: 0xa0000000, 0x9095: 0xa0000000, 0x9096: 0xa0000000, 0x9097: 0xa0000000,\n\t0x9098: 0xa0000000, 0x9099: 0xa0000000, 0x909a: 0xa0000000, 0x909b: 0xa0000000,\n\t0x909c: 0xa0000000, 0x909d: 0xa0000000, 0x909e: 0xa0000000, 0x909f: 0xa0000000,\n\t0x90a0: 0x40021220, 0x90a1: 0x4002ba20, 0x90a2: 0x4003e020, 0x90a3: 0x4004ea20,\n\t0x90a4: 0x4027de20, 0x90a5: 0x4004ec20, 0x90a6: 0x4004e620, 0x90a7: 0x4003d220,\n\t0x90a8: 0x4003f420, 0x90a9: 0x4003f620, 0x90aa: 0x4004d820, 0x90ab: 0x40093820,\n\t0x90ac: 0x40024020, 0x90ad: 0x40021a20, 0x90ae: 0x4002e420, 0x90af: 0x4004e220,\n\t0x90b0: 0x4029cc20, 0x90b1: 0x4029ce20, 0x90b2: 0x4029d020, 0x90b3: 0x4029d220,\n\t0x90b4: 0x4029d420, 0x90b5: 0x4029d620, 0x90b6: 0x4029d820, 0x90b7: 0x4029da20,\n\t0x90b8: 0x4029dc20, 0x90b9: 0x4029de20, 0x90ba: 0x40026c20, 0x90bb: 0x40026220,\n\t0x90bc: 0x40094020, 0x90bd: 0x40094220, 0x90be: 0x40094420, 0x90bf: 0x4002c420,\n\t// Block 0x243, offset 0x90c0\n\t0x90c0: 0x4004d620, 0x90c1: 0xc5580071, 0x90c2: 0x002c0a88, 0x90c3: 0x002c3a88,\n\t0x90c4: 0x002c6288, 0x90c5: 0x002c9888, 0x90c6: 0x002d0888, 0x90c7: 0x002d2288,\n\t0x90c8: 0x002d6888, 0x90c9: 0x002d9a88, 0x90ca: 0x002dcc88, 0x90cb: 0x002dfe88,\n\t0x90cc: 0xc0030002, 0x90cd: 0x002e8288, 0x90ce: 0x002e9e88, 0x90cf: 0xc5532781,\n\t0x90d0: 0x002f2c88, 0x90d1: 0x002f5688, 0x90d2: 0x002f7a88, 0x90d3: 0xc54a0991,\n\t0x90d4: 0x00302c88, 0x90d5: 0xc55c0071, 0x90d6: 0x0030be88, 0x90d7: 0x0030bea3,\n\t0x90d8: 0x0030f688, 0x90d9: 0x00310088, 0x90da: 0xc54e0991, 0x90db: 0x4003f820,\n\t0x90dc: 0x4004e420, 0x90dd: 0x4003fa20, 0x90de: 0x40062420, 0x90df: 0x40021620,\n\t0x90e0: 0x40061e20, 0x90e1: 0xc5560071, 0x90e2: 0x402c0a20, 0x90e3: 0x402c3a20,\n\t0x90e4: 0x402c6220, 0x90e5: 0x402c9820, 0x90e6: 0x402d0820, 0x90e7: 0x402d2220,\n\t0x90e8: 0x402d6820, 0x90e9: 0x402d9a20, 0x90ea: 0x402dcc20, 0x90eb: 0x402dfe20,\n\t0x90ec: 0xc0000002, 0x90ed: 0x402e8220, 0x90ee: 0x402e9e20, 0x90ef: 0xc5502781,\n\t0x90f0: 0x402f2c20, 0x90f1: 0x402f5620, 0x90f2: 0x402f7a20, 0x90f3: 0xc5480991,\n\t0x90f4: 0x40302c20, 0x90f5: 0xc55a0071, 0x90f6: 0x4030be20, 0x90f7: 0x4030be21,\n\t0x90f8: 0x4030f620, 0x90f9: 0x40310020, 0x90fa: 0xc54c0991, 0x90fb: 0x4003fc20,\n\t0x90fc: 0x40094820, 0x90fd: 0x4003fe20, 0x90fe: 0x40094c20, 0x90ff: 0xa0000000,\n\t// Block 0x244, offset 0x9100\n\t0x9100: 0xe00008f5, 0x9101: 0xe00008ef, 0x9102: 0xe0000921, 0x9103: 0xe0000969,\n\t0x9104: 0x0030f083, 0x9105: 0xe000094d, 0x9106: 0xe00009dd, 0x9107: 0xe0000a53,\n\t0x9108: 0xe0000ae8, 0x9109: 0xe0000ae2, 0x910a: 0xe0000af4, 0x910b: 0xe0000b20,\n\t0x910c: 0xe0000c2b, 0x910d: 0xe0000c25, 0x910e: 0xe0000c37, 0x910f: 0xe0000c43,\n\t0x9110: 0xe0000ab3, 0x9111: 0xe0000d63, 0x9112: 0xe0000d9a, 0x9113: 0xe0000d94,\n\t0x9114: 0xe0000da6, 0x9115: 0x0030ee83, 0x9116: 0x0030f283, 0x9117: 0x40093e20,\n\t0x9118: 0xe0000e12, 0x9119: 0xe0000fe1, 0x911a: 0xe0000fdb, 0x911b: 0xe0000fed,\n\t0x911c: 0x0030f483, 0x911d: 0xe0001102, 0x911e: 0x00318888, 0x911f: 0xe0000f7b,\n\t0x9120: 0xe00008f2, 0x9121: 0xe00008ec, 0x9122: 0xe000091e, 0x9123: 0xe0000966,\n\t0x9124: 0x4030f020, 0x9125: 0xe000094a, 0x9126: 0xe00009d5, 0x9127: 0xe0000a4d,\n\t0x9128: 0xe0000ae5, 0x9129: 0xe0000adf, 0x912a: 0xe0000af1, 0x912b: 0xe0000b1d,\n\t0x912c: 0xe0000c28, 0x912d: 0xe0000c22, 0x912e: 0xe0000c34, 0x912f: 0xe0000c40,\n\t0x9130: 0xe0000aad, 0x9131: 0xe0000d60, 0x9132: 0xe0000d97, 0x9133: 0xe0000d91,\n\t0x9134: 0xe0000da3, 0x9135: 0x4030ee20, 0x9136: 0x4030f220, 0x9137: 0x40093c20,\n\t0x9138: 0xe0000e0f, 0x9139: 0xe0000fde, 0x913a: 0xe0000fd8, 0x913b: 0xe0000fea,\n\t0x913c: 0x4030f420, 0x913d: 0xe00010ff, 0x913e: 0x40318820, 0x913f: 0xe0001114,\n\t// Block 0x245, offset 0x9140\n\t0x9140: 0xe0000cfe, 0x9141: 0xe0000cf8, 0x9142: 0xe0000cf5, 0x9143: 0xe0000d51,\n\t0x9144: 0xe0000d4e, 0x9145: 0xe0000d6f, 0x9146: 0xe0000d6c, 0x9147: 0xe0000d5d,\n\t0x9148: 0xe0000d5a, 0x9149: 0xf0000404, 0x914a: 0x002eda88, 0x914b: 0x402eda20,\n\t0x914c: 0xe0000e2e, 0x914d: 0xe0000e2b, 0x914e: 0xe0000da0, 0x914f: 0xe0000d9d,\n\t0x9150: 0xe0000de0, 0x9151: 0xe0000ddd, 0x9152: 0xe0000e93, 0x9153: 0xe0000e8f,\n\t0x9154: 0xe0000eca, 0x9155: 0xe0000ec7, 0x9156: 0xe0000edc, 0x9157: 0xe0000ed9,\n\t0x9158: 0xe0000ed0, 0x9159: 0xe0000ecd, 0x915a: 0xe0000f1f, 0x915b: 0xe0000f1c,\n\t0x915c: 0xe0000f2d, 0x915d: 0xe0000f2a, 0x915e: 0xe0000f47, 0x915f: 0xe0000f44,\n\t0x9160: 0x00302683, 0x9161: 0x40302620, 0x9162: 0xe0000f99, 0x9163: 0xe0000f96,\n\t0x9164: 0xe0000f8a, 0x9165: 0xe0000f87, 0x9166: 0x00303688, 0x9167: 0x40303620,\n\t0x9168: 0xe000102b, 0x9169: 0xe0001028, 0x916a: 0xe000103f, 0x916b: 0xe000103c,\n\t0x916c: 0xe0000fe7, 0x916d: 0xe0000fe4, 0x916e: 0xe0000ff9, 0x916f: 0xe0000ff6,\n\t0x9170: 0xe0001025, 0x9171: 0xe0001022, 0x9172: 0xe0001039, 0x9173: 0xe0001036,\n\t0x9174: 0xe0003636, 0x9175: 0xe0003633, 0x9176: 0xe000110e, 0x9177: 0xe000110b,\n\t0x9178: 0xe0001117, 0x9179: 0xe000360c, 0x917a: 0xe0003609, 0x917b: 0xe0003618,\n\t0x917c: 0xe0003615, 0x917d: 0x00302a83, 0x917e: 0x40302a20, 0x917f: 0xe0000f64,\n\t// Block 0x246, offset 0x9180\n\t0x9180: 0x40321220, 0x9181: 0x40321a20, 0x9182: 0x40322220, 0x9183: 0x40322a20,\n\t0x9184: 0xe0000ad5, 0x9185: 0xe0000ad1, 0x9186: 0xe0000acd, 0x9187: 0xf0000a0a,\n\t0x9188: 0xf000040a, 0x9189: 0xf0000404, 0x918a: 0xf0000a0a, 0x918b: 0xf000040a,\n\t0x918c: 0xf0000404, 0x918d: 0xe0000947, 0x918e: 0xe0000944, 0x918f: 0xe0000c3d,\n\t0x9190: 0xe0000c3a, 0x9191: 0xe0000dcc, 0x9192: 0xe0000dc9, 0x9193: 0xe0000ff3,\n\t0x9194: 0xe0000ff0, 0x9195: 0xe000368d, 0x9196: 0xe000368a, 0x9197: 0xe000367b,\n\t0x9198: 0xe0003678, 0x9199: 0xe0003687, 0x919a: 0xe0003684, 0x919b: 0xe0003681,\n\t0x919c: 0xe000367e, 0x919d: 0x402cae20, 0x919e: 0xe000366f, 0x919f: 0xe000366c,\n\t0x91a0: 0xe0000976, 0x91a1: 0xe0000972, 0x91a2: 0xe00009f4, 0x91a3: 0xe00009ef,\n\t0x91a4: 0x002d3a88, 0x91a5: 0x402d3a20, 0x91a6: 0xe0000bbe, 0x91a7: 0xe0000bbb,\n\t0x91a8: 0xe0000c99, 0x91a9: 0xe0000c96, 0x91aa: 0xe0000e20, 0x91ab: 0xe0000e1d,\n\t0x91ac: 0xe0000e27, 0x91ad: 0xe0000e23, 0x91ae: 0xe0001162, 0x91af: 0xe000115f,\n\t0x91b0: 0xe0000c8d, 0x91b1: 0xe00032b0, 0x91b2: 0xe00032ad, 0x91b3: 0xe00032aa,\n\t0x91b4: 0xe0000bac, 0x91b5: 0xe0000ba9, 0x91b6: 0x002d7888, 0x91b7: 0x00319488,\n\t0x91b8: 0xe0000d57, 0x91b9: 0xe0000d54, 0x91ba: 0xe0000954, 0x91bb: 0xe0000950,\n\t0x91bc: 0xe00009ea, 0x91bd: 0xe00009e5, 0x91be: 0xe0000e19, 0x91bf: 0xe0000e15,\n\t// Block 0x247, offset 0x91c0\n\t0x91c0: 0xe000098f, 0x91c1: 0xe000098c, 0x91c2: 0xe0000995, 0x91c3: 0xe0000992,\n\t0x91c4: 0xe0000b62, 0x91c5: 0xe0000b5f, 0x91c6: 0xe0000b68, 0x91c7: 0xe0000b65,\n\t0x91c8: 0xe0000c6c, 0x91c9: 0xe0000c69, 0x91ca: 0xe0000c72, 0x91cb: 0xe0000c6f,\n\t0x91cc: 0xe0000e4a, 0x91cd: 0xe0000e47, 0x91ce: 0xe0000e50, 0x91cf: 0xe0000e4d,\n\t0x91d0: 0xe0000ee8, 0x91d1: 0xe0000ee5, 0x91d2: 0xe0000eee, 0x91d3: 0xe0000eeb,\n\t0x91d4: 0xe0001053, 0x91d5: 0xe0001050, 0x91d6: 0xe0001059, 0x91d7: 0xe0001056,\n\t0x91d8: 0xe0000f61, 0x91d9: 0xe0000f5e, 0x91da: 0xe0000fa5, 0x91db: 0xe0000fa2,\n\t0x91dc: 0x00312288, 0x91dd: 0x40312220, 0x91de: 0xe0000bf4, 0x91df: 0xe0000bf1,\n\t0x91e0: 0x002ebc88, 0x91e1: 0x402c8c20, 0x91e2: 0x002f2288, 0x91e3: 0x402f2220,\n\t0x91e4: 0x00314088, 0x91e5: 0x40314020, 0x91e6: 0xe000096f, 0x91e7: 0xe000096c,\n\t0x91e8: 0xe0000b32, 0x91e9: 0xe0000b2f, 0x91ea: 0xe0003675, 0x91eb: 0xe0003672,\n\t0x91ec: 0xe0003663, 0x91ed: 0xe0003660, 0x91ee: 0xe0000e04, 0x91ef: 0xe0000e01,\n\t0x91f0: 0xe0000e0b, 0x91f1: 0xe0000e07, 0x91f2: 0xe0001129, 0x91f3: 0xe0001126,\n\t0x91f4: 0x402e5e20, 0x91f5: 0x402ed020, 0x91f6: 0x40305a20, 0x91f7: 0x402dd420,\n\t0x91f8: 0xe0000abf, 0x91f9: 0xe0000ec4, 0x91fa: 0x002be888, 0x91fb: 0x002c4488,\n\t0x91fc: 0x402c4420, 0x91fd: 0x002e3888, 0x91fe: 0x00303e88, 0x91ff: 0x402ffc20,\n\t// Block 0x248, offset 0x9200\n\t0x9200: 0xe0000d24, 0x9201: 0xe0000d21, 0x9202: 0xe0000d2a, 0x9203: 0xe0000d27,\n\t0x9204: 0xe0000d69, 0x9205: 0xe0000d66, 0x9206: 0xe0000d7b, 0x9207: 0xe0000d78,\n\t0x9208: 0xe0000d87, 0x9209: 0xe0000d84, 0x920a: 0xe0000d81, 0x920b: 0xe0000d7e,\n\t0x920c: 0xe0003651, 0x920d: 0xe000364e, 0x920e: 0xe000365d, 0x920f: 0xe000365a,\n\t0x9210: 0xe0000e3d, 0x9211: 0xe0000e39, 0x9212: 0xe0000e35, 0x9213: 0xe0000e31,\n\t0x9214: 0xe0000ea7, 0x9215: 0xe0000ea4, 0x9216: 0xe0000ead, 0x9217: 0xe0000eaa,\n\t0x9218: 0xe0000ed6, 0x9219: 0xe0000ed3, 0x921a: 0xe0000ef4, 0x921b: 0xe0000ef1,\n\t0x921c: 0xe0000efb, 0x921d: 0xe0000ef7, 0x921e: 0xe0000f02, 0x921f: 0xe0000eff,\n\t0x9220: 0xe0000f41, 0x9221: 0xe0000f3e, 0x9222: 0xe0000f53, 0x9223: 0xe0000f50,\n\t0x9224: 0xe0000f26, 0x9225: 0xe0000f22, 0x9226: 0xe0003606, 0x9227: 0xe0003603,\n\t0x9228: 0xe0000f5a, 0x9229: 0xe0000f56, 0x922a: 0xe0000f93, 0x922b: 0xe0000f90,\n\t0x922c: 0xe0000f9f, 0x922d: 0xe0000f9c, 0x922e: 0xe0000fb1, 0x922f: 0xe0000fae,\n\t0x9230: 0xe0000fab, 0x9231: 0xe0000fa8, 0x9232: 0xe0001093, 0x9233: 0xe0001090,\n\t0x9234: 0xe000109f, 0x9235: 0xe000109c, 0x9236: 0xe0001099, 0x9237: 0xe0001096,\n\t0x9238: 0xe0001032, 0x9239: 0xe000102e, 0x923a: 0xe000368d, 0x923b: 0xe000368a,\n\t0x923c: 0xe00010a9, 0x923d: 0xe00010a6, 0x923e: 0xe00010af, 0x923f: 0xe00010ac,\n\t// Block 0x249, offset 0x9240\n\t0x9240: 0xe0003630, 0x9241: 0xe000362d, 0x9242: 0xe000362a, 0x9243: 0xe0003627,\n\t0x9244: 0xe000363f, 0x9245: 0xe000363c, 0x9246: 0xe0003645, 0x9247: 0xe0003642,\n\t0x9248: 0xe000364b, 0x9249: 0xe0003648, 0x924a: 0xe00010fc, 0x924b: 0xe00010f9,\n\t0x924c: 0xe00010f6, 0x924d: 0xe00010f3, 0x924e: 0xe0001123, 0x924f: 0xe0001120,\n\t0x9250: 0xe0003612, 0x9251: 0xe000360f, 0x9252: 0xe000361e, 0x9253: 0xe000361b,\n\t0x9254: 0xe0003624, 0x9255: 0xe0003621, 0x9256: 0xe0000c15, 0x9257: 0xe0000f8d,\n\t0x9258: 0xe0003639, 0x9259: 0xe0001111, 0x925a: 0xf0000404, 0x925b: 0xe0000f70,\n\t0x925c: 0x40300420, 0x925d: 0x40300620, 0x925e: 0xe0000f7f, 0x925f: 0x402c9620,\n\t0x9260: 0xe000099b, 0x9261: 0xe0000998, 0x9262: 0xe0000989, 0x9263: 0xe0000986,\n\t0x9264: 0xe0000928, 0x9265: 0xe0000924, 0x9266: 0xe0000930, 0x9267: 0xe000092c,\n\t0x9268: 0xe0000940, 0x9269: 0xe000093c, 0x926a: 0xe0000938, 0x926b: 0xe0000934,\n\t0x926c: 0xe00009aa, 0x926d: 0xe00009a6, 0x926e: 0xe0000902, 0x926f: 0xe00008fe,\n\t0x9270: 0xe000090a, 0x9271: 0xe0000906, 0x9272: 0xe000091a, 0x9273: 0xe0000916,\n\t0x9274: 0xe0000912, 0x9275: 0xe000090e, 0x9276: 0xe00009a2, 0x9277: 0xe000099e,\n\t0x9278: 0xe0000b6e, 0x9279: 0xe0000b6b, 0x927a: 0xe0000b5c, 0x927b: 0xe0000b59,\n\t0x927c: 0xe0000b26, 0x927d: 0xe0000b23, 0x927e: 0xe0000afb, 0x927f: 0xe0000af7,\n\t// Block 0x24a, offset 0x9280\n\t0x9280: 0xe0000b03, 0x9281: 0xe0000aff, 0x9282: 0xe0000b13, 0x9283: 0xe0000b0f,\n\t0x9284: 0xe0000b0b, 0x9285: 0xe0000b07, 0x9286: 0xe0000b75, 0x9287: 0xe0000b71,\n\t0x9288: 0xe0000c66, 0x9289: 0xe0000c63, 0x928a: 0xe0000c78, 0x928b: 0xe0000c75,\n\t0x928c: 0xe0000e84, 0x928d: 0xe0000e81, 0x928e: 0xe0000e44, 0x928f: 0xe0000e41,\n\t0x9290: 0xe0000dad, 0x9291: 0xe0000da9, 0x9292: 0xe0000db5, 0x9293: 0xe0000db1,\n\t0x9294: 0xe0000dc5, 0x9295: 0xe0000dc1, 0x9296: 0xe0003657, 0x9297: 0xe0003654,\n\t0x9298: 0xe0000e8b, 0x9299: 0xe0000e87, 0x929a: 0xe0000e5d, 0x929b: 0xe0000e59,\n\t0x929c: 0xe0000e65, 0x929d: 0xe0000e61, 0x929e: 0xe0000e75, 0x929f: 0xe0000e71,\n\t0x92a0: 0xe0003669, 0x92a1: 0xe0003666, 0x92a2: 0xe0000e7d, 0x92a3: 0xe0000e79,\n\t0x92a4: 0xe000108d, 0x92a5: 0xe000108a, 0x92a6: 0xe000104d, 0x92a7: 0xe000104a,\n\t0x92a8: 0xe0001066, 0x92a9: 0xe0001062, 0x92aa: 0xe000106e, 0x92ab: 0xe000106a,\n\t0x92ac: 0xe000107e, 0x92ad: 0xe000107a, 0x92ae: 0xe0001076, 0x92af: 0xe0001072,\n\t0x92b0: 0xe0001086, 0x92b1: 0xe0001082, 0x92b2: 0xe0001108, 0x92b3: 0xe0001105,\n\t0x92b4: 0xe0001135, 0x92b5: 0xe0001132, 0x92b6: 0xe000112f, 0x92b7: 0xe000112c,\n\t0x92b8: 0xe000111d, 0x92b9: 0xe000111a, 0x92ba: 0xe0000d0a, 0x92bb: 0xe0000d07,\n\t0x92bc: 0x0030d888, 0x92bd: 0x4030d820, 0x92be: 0x00312088, 0x92bf: 0x40312020,\n\t// Block 0x24b, offset 0x92c0\n\t0x92c0: 0xe0000024, 0x92c1: 0xe0000029, 0x92c2: 0xe000002e, 0x92c3: 0xe0000033,\n\t0x92c4: 0xe0000038, 0x92c5: 0xe000003d, 0x92c6: 0xe0000042, 0x92c7: 0xe0000047,\n\t0x92c8: 0xf0001f04, 0x92c9: 0xf0001f04, 0x92ca: 0xf0001f04, 0x92cb: 0xf0001f04,\n\t0x92cc: 0xf0001f04, 0x92cd: 0xf0001f04, 0x92ce: 0xf0001f04, 0x92cf: 0xf0001f04,\n\t0x92d0: 0xf0001f04, 0x92d1: 0xf0000404, 0x92d2: 0xf0000404, 0x92d3: 0xf0000404,\n\t0x92d4: 0xf0000404, 0x92d5: 0xf0000404, 0x92d6: 0xf0000404, 0x92d7: 0xf0000404,\n\t0x92d8: 0xf0000404, 0x92d9: 0xf0000404, 0x92da: 0xf0000404, 0x92db: 0xf0000404,\n\t0x92dc: 0xf0000404, 0x92dd: 0xf0000404, 0x92de: 0xf0000404, 0x92df: 0xf0000404,\n\t0x92e0: 0xf0000404, 0x92e1: 0xf0000404, 0x92e2: 0xf0000404, 0x92e3: 0xf0000404,\n\t0x92e4: 0xf0000404, 0x92e5: 0xf0000404, 0x92e6: 0xf0000404, 0x92e7: 0xf0000404,\n\t0x92e8: 0xf0000404, 0x92e9: 0xf0000404, 0x92ea: 0xf0000404, 0x92eb: 0xf0000404,\n\t0x92ec: 0xf0000404, 0x92ed: 0xf0000404, 0x92ee: 0xf0000404, 0x92ef: 0xf0000404,\n\t0x92f0: 0xf0000404, 0x92f1: 0xf0000404, 0x92f2: 0xe0002c46, 0x92f3: 0xf0000404,\n\t0x92f4: 0xf0000404, 0x92f5: 0xe0002c56, 0x92f6: 0x002bde8c, 0x92f7: 0x002c0a8c,\n\t0x92f8: 0x002c3a8c, 0x92f9: 0x002c628c, 0x92fa: 0x002c988c, 0x92fb: 0x002d088c,\n\t0x92fc: 0x002d228c, 0x92fd: 0x002d688c, 0x92fe: 0x002d9a8c, 0x92ff: 0x002dcc8c,\n\t// Block 0x24c, offset 0x9300\n\t0x9300: 0xf0001d1c, 0x9301: 0xf0001d1c, 0x9302: 0xf0001d1c, 0x9303: 0xf0001d1c,\n\t0x9304: 0xf0001d1c, 0x9305: 0xf0001d1d, 0x9306: 0xf0001d1d, 0x9307: 0xf0001d1d,\n\t0x9308: 0xe0000a6b, 0x9309: 0xe0000cb4, 0x930a: 0xf0001d1c, 0x930b: 0xf0001d1c,\n\t0x930c: 0xf0001d1c, 0x930d: 0xf0001c1c, 0x930e: 0xf0001c1c, 0x930f: 0xf0001c1c,\n\t0x9310: 0xe00027ce, 0x9311: 0xe0000cb9, 0x9312: 0xe0000d36, 0x9313: 0xe0000be3,\n\t0x9314: 0xe0000fc5, 0x9315: 0xf0001c1c, 0x9316: 0xf0001c1c, 0x9317: 0xf0001c1c,\n\t0x9318: 0xf0001c1c, 0x9319: 0xf0001c1c, 0x931a: 0xf0001c1c, 0x931b: 0xf0001c1c,\n\t0x931c: 0xf0001c1c, 0x931d: 0xf0001c1c, 0x931e: 0xf0001c1c, 0x931f: 0xe0000d3e,\n\t0x9320: 0xe0000a72, 0x9321: 0xf0001c1c, 0x9322: 0xe0000cbd, 0x9323: 0xe0000d42,\n\t0x9324: 0xe0000a76, 0x9325: 0xf0001c1c, 0x9326: 0xe0000cc1, 0x9327: 0xe0000d2d,\n\t0x9328: 0xe0000d31, 0x9329: 0xf0001c1d, 0x932a: 0xe0000cc5, 0x932b: 0xe0000d4a,\n\t0x932c: 0xe0000be7, 0x932d: 0xe0000f0b, 0x932e: 0xe0000f0f, 0x932f: 0xe0000f15,\n\t0x9330: 0xf0001c1c, 0x9331: 0xf0001c1c, 0x9332: 0xf0001c1c, 0x9333: 0xf0001c1c,\n\t0x9334: 0xf0001d1c, 0x9335: 0xf0001d1c, 0x9336: 0xf0001d1c, 0x9337: 0xf0001d1c,\n\t0x9338: 0xf0001d1c, 0x9339: 0xf0001d1d, 0x933a: 0xe00035df, 0x933b: 0xe00035cd,\n\t0x933c: 0xe0003600, 0x933d: 0xe00035af, 0x933e: 0xe0002812, 0x933f: 0xe00035b2,\n\t// Block 0x24d, offset 0x9340\n\t0x9340: 0xf0001d1c, 0x9341: 0xf0001d1d, 0x9342: 0xe00009b7, 0x9343: 0xf0001c1d,\n\t0x9344: 0xf0001c1c, 0x9345: 0xf0001c1c, 0x9346: 0xe0000a66, 0x9347: 0xe0000a7a,\n\t0x9348: 0xf0001d1c, 0x9349: 0xf0001c1d, 0x934a: 0xf0001c1c, 0x934b: 0xf0001d1d,\n\t0x934c: 0xf0001c1c, 0x934d: 0xf0001d1d, 0x934e: 0xf0001d1d, 0x934f: 0xf0001c1c,\n\t0x9350: 0xf0001c1c, 0x9351: 0xf0001c1c, 0x9352: 0xe0000d0d, 0x9353: 0xf0001c1c,\n\t0x9354: 0xf0001c1c, 0x9355: 0xe0000d3a, 0x9356: 0xe0000d46, 0x9357: 0xf0001d1d,\n\t0x9358: 0xe0000eb0, 0x9359: 0xe0000eb8, 0x935a: 0xf0001d1d, 0x935b: 0xf0001c1c,\n\t0x935c: 0xf0001c1d, 0x935d: 0xe00035e2, 0x935e: 0xe00010b2, 0x935f: 0xe00009c8,\n\t0x9360: 0xf0001f04, 0x9361: 0xf0001f04, 0x9362: 0xf0001f04, 0x9363: 0xf0001f04,\n\t0x9364: 0xf0001f04, 0x9365: 0xf0001f04, 0x9366: 0xf0001f04, 0x9367: 0xf0001f04,\n\t0x9368: 0xf0001f04, 0x9369: 0xf0000404, 0x936a: 0xf0000404, 0x936b: 0xf0000404,\n\t0x936c: 0xf0000404, 0x936d: 0xf0000404, 0x936e: 0xf0000404, 0x936f: 0xf0000404,\n\t0x9370: 0xf0000404, 0x9371: 0xf0000404, 0x9372: 0xf0000404, 0x9373: 0xf0000404,\n\t0x9374: 0xf0000404, 0x9375: 0xf0000404, 0x9376: 0xf0000404, 0x9377: 0xf0000404,\n\t0x9378: 0xf0000404, 0x9379: 0xf0000404, 0x937a: 0xf0000404, 0x937b: 0xf0000404,\n\t0x937c: 0xf0000404, 0x937d: 0xf0000404, 0x937e: 0xf0000404, 0x937f: 0xe0000bdf,\n\t// Block 0x24e, offset 0x9380\n\t0x9380: 0xf0001f04, 0x9381: 0xf0001f04, 0x9382: 0xf0001f04, 0x9383: 0xf0001f04,\n\t0x9384: 0xf0001f04, 0x9385: 0xf0001f04, 0x9386: 0xf0001f04, 0x9387: 0xf0001f04,\n\t0x9388: 0xf0001f04, 0x9389: 0xf0001f04, 0x938a: 0xf0001f04,\n\t0x9390: 0xf0000a04, 0x9391: 0xf0000a04, 0x9392: 0xf0000a04, 0x9393: 0xf0000a04,\n\t0x9394: 0xf0000a04, 0x9395: 0xf0000a04, 0x9396: 0xf0000a04, 0x9397: 0xf0000a04,\n\t0x9398: 0xf0000a04, 0x9399: 0xf0000a04, 0x939a: 0xf0000a04, 0x939b: 0xf0000a04,\n\t0x939c: 0xf0000a04, 0x939d: 0xf0000a04, 0x939e: 0xf0000a04, 0x939f: 0xf0000a04,\n\t0x93a0: 0xf0000a04, 0x93a1: 0xf0000a04, 0x93a2: 0xf0000a04, 0x93a3: 0xf0000a04,\n\t0x93a4: 0xf0000a04, 0x93a5: 0xf0000a04, 0x93a6: 0xe0002c4a, 0x93a7: 0xf0000a04,\n\t0x93a8: 0xf0000a04, 0x93a9: 0xe0002c5a, 0x93aa: 0xf0000a04, 0x93ab: 0x002c3a8c,\n\t0x93ac: 0x002f7a8c, 0x93ad: 0xf0000c0c, 0x93ae: 0xe00035e8,\n\t0x93b0: 0x002bde9d, 0x93b1: 0x002c0a9d, 0x93b2: 0x002c3a9d, 0x93b3: 0x002c629d,\n\t0x93b4: 0x002c989d, 0x93b5: 0x002d089d, 0x93b6: 0x002d229d, 0x93b7: 0x002d689d,\n\t0x93b8: 0x002d9a9d, 0x93b9: 0x002dcc9d, 0x93ba: 0x002dfe9d, 0x93bb: 0x002e229d,\n\t0x93bc: 0x002e829d, 0x93bd: 0x002e9e9d, 0x93be: 0x002ee29d, 0x93bf: 0x002f2c9d,\n\t// Block 0x24f, offset 0x93c0\n\t0x93c0: 0x002f569d, 0x93c1: 0x002f7a9d, 0x93c2: 0x002fe69d, 0x93c3: 0x00302c9d,\n\t0x93c4: 0x00306c9d, 0x93c5: 0x0030be9d, 0x93c6: 0x0030e29d, 0x93c7: 0x0030f69d,\n\t0x93c8: 0x0031009d, 0x93c9: 0x00312a9d, 0x93ca: 0xf0001d1d, 0x93cb: 0xf0001d1d,\n\t0x93cc: 0xf0001d1d, 0x93cd: 0xf0001d1d, 0x93ce: 0xe0000ebc, 0x93cf: 0xe00035e5,\n\t0x93d0: 0x002bde8c, 0x93d1: 0x002c0a8c, 0x93d2: 0x002c3a8c, 0x93d3: 0x002c628c,\n\t0x93d4: 0x002c988c, 0x93d5: 0x002d088c, 0x93d6: 0x002d228c, 0x93d7: 0x002d688c,\n\t0x93d8: 0x002d9a8c, 0x93d9: 0x002dcc8c, 0x93da: 0x002dfe8c, 0x93db: 0x002e228c,\n\t0x93dc: 0x002e828c, 0x93dd: 0x002e9e8c, 0x93de: 0x002ee28c, 0x93df: 0x002f2c8c,\n\t0x93e0: 0x002f568c, 0x93e1: 0x002f7a8c, 0x93e2: 0x002fe68c, 0x93e3: 0x00302c8c,\n\t0x93e4: 0x00306c8c, 0x93e5: 0x0030be8c, 0x93e6: 0x0030e28c, 0x93e7: 0x0030f68c,\n\t0x93e8: 0x0031008c, 0x93e9: 0x00312a8c, 0x93ea: 0xf0001414, 0x93eb: 0xf0001414,\n\t0x93f0: 0x002bde9d, 0x93f1: 0x002c0a9d, 0x93f2: 0x002c3a9d, 0x93f3: 0x002c629d,\n\t0x93f4: 0x002c989d, 0x93f5: 0x002d089d, 0x93f6: 0x002d229d, 0x93f7: 0x002d689d,\n\t0x93f8: 0x002d9a9d, 0x93f9: 0x002dcc9d, 0x93fa: 0x002dfe9d, 0x93fb: 0x002e229d,\n\t0x93fc: 0x002e829d, 0x93fd: 0x002e9e9d, 0x93fe: 0x002ee29d, 0x93ff: 0x002f2c9d,\n\t// Block 0x250, offset 0x9400\n\t0x9400: 0xa0000000, 0x9401: 0xa0000000, 0x9402: 0xa0000000, 0x9403: 0xa0000000,\n\t0x9404: 0xa0000000, 0x9406: 0x40096620, 0x9407: 0x40096a20,\n\t0x9408: 0x40070820, 0x9409: 0x4004f220, 0x940a: 0x4004f620, 0x940b: 0x4027e620,\n\t0x940c: 0x40024820, 0x940d: 0x40024a20, 0x940e: 0x40070e20, 0x940f: 0x40071020,\n\t0x9410: 0xae600000, 0x9411: 0xae600000, 0x9412: 0xae600000, 0x9413: 0xae600000,\n\t0x9414: 0xae600000, 0x9415: 0xae600000, 0x9416: 0xae600000, 0x9417: 0xae600000,\n\t0x9418: 0xa1e00000, 0x9419: 0xa1f00000, 0x941a: 0xa2000000, 0x941b: 0x40026420,\n\t0x941e: 0x40027020, 0x941f: 0x4002cc20,\n\t0x9420: 0x403aa220, 0x9421: 0x40393a20, 0x9422: 0x40393620, 0x9423: 0x40393a21,\n\t0x9424: 0x40393a25, 0x9425: 0x40393a23, 0x9426: 0x00393b44, 0x9427: 0xc55e0151,\n\t0x9428: 0x40393c20, 0x9429: 0x403a8823, 0x942a: 0x40395620, 0x942b: 0x40395820,\n\t0x942c: 0x40396420, 0x942d: 0x40397220, 0x942e: 0x40397420, 0x942f: 0x40398820,\n\t0x9430: 0x40398a20, 0x9431: 0x4039a420, 0x9432: 0x4039a620, 0x9433: 0x4039c620,\n\t0x9434: 0x4039c820, 0x9435: 0x4039dc20, 0x9436: 0x4039de20, 0x9437: 0x4039e620,\n\t0x9438: 0x4039e820, 0x9439: 0x4039ee20, 0x943a: 0x4039f020, 0x943b: 0x403a3820,\n\t0x943c: 0x403a3a20, 0x943d: 0x403a9c20, 0x943e: 0x403a9e20, 0x943f: 0x403aa020,\n\t// Block 0x251, offset 0x9440\n\t0x9440: 0xa0000000, 0x9441: 0x4039fc20, 0x9442: 0x403a1220, 0x9443: 0x403a1c23,\n\t0x9444: 0x403a4020, 0x9445: 0x403a4e20, 0x9446: 0x403a5620, 0x9447: 0x403a8820,\n\t0x9448: 0xc5620171, 0x9449: 0xc5660171, 0x944a: 0xc5680171, 0x944b: 0xa000b002,\n\t0x944c: 0xa000b202, 0x944d: 0xa000b102, 0x944e: 0xa1e0ad02, 0x944f: 0xa000af02,\n\t0x9450: 0xa000ae02, 0x9451: 0xa210ba02, 0x9452: 0xa220bc02, 0x9453: 0xae60bd02,\n\t0x9454: 0xae60be02, 0x9455: 0xadc0bf02, 0x9456: 0xadc0c102, 0x9457: 0xae60c202,\n\t0x9458: 0xae60c302, 0x9459: 0xae60c402, 0x945a: 0xae60c502, 0x945b: 0xae60c602,\n\t0x945c: 0xadc0c702, 0x945d: 0xae60c802, 0x945e: 0xae60c902, 0x945f: 0xadc0c002,\n\t0x9460: 0xe000015e, 0x9461: 0xe00001e6, 0x9462: 0xe0000301, 0x9463: 0xe00003db,\n\t0x9464: 0xe00004b6, 0x9465: 0xe0000580, 0x9466: 0xe000064b, 0x9467: 0xe00006f3,\n\t0x9468: 0xe000079f, 0x9469: 0xe0000844, 0x946a: 0x4004ee20, 0x946b: 0x40024c20,\n\t0x946c: 0x40024e20, 0x946d: 0x4004de20, 0x946e: 0x40393a20, 0x946f: 0x403a1020,\n\t0x9470: 0xa230d102, 0x9471: 0x40393821, 0x9472: 0x40393a22, 0x9473: 0x40393a24,\n\t0x9474: 0x00391c84, 0x9475: 0xf0000404, 0x9476: 0xf0000404, 0x9477: 0xf0000404,\n\t0x9478: 0xe0003780, 0x9479: 0x40395a20, 0x947a: 0x40395c20, 0x947b: 0x40393e20,\n\t0x947c: 0x40395e20, 0x947d: 0x40396020, 0x947e: 0x40394020, 0x947f: 0x40396220,\n\t// Block 0x252, offset 0x9480\n\t0x9480: 0x40394220, 0x9481: 0x40397620, 0x9482: 0x40397820, 0x9483: 0x40396620,\n\t0x9484: 0x40396820, 0x9485: 0x40397a20, 0x9486: 0x40396a20, 0x9487: 0x40396e20,\n\t0x9488: 0x40398c20, 0x9489: 0x40398e20, 0x948a: 0x40399020, 0x948b: 0x40399220,\n\t0x948c: 0x40399420, 0x948d: 0x40399620, 0x948e: 0x40399820, 0x948f: 0x40399a20,\n\t0x9490: 0x40399c20, 0x9491: 0x4039a820, 0x9492: 0x4039aa20, 0x9493: 0x4039ac20,\n\t0x9494: 0x4039ae20, 0x9495: 0x4039b020, 0x9496: 0x4039b220, 0x9497: 0x4039b420,\n\t0x9498: 0x4039b620, 0x9499: 0x4039b820, 0x949a: 0x4039ca20, 0x949b: 0x4039cc20,\n\t0x949c: 0x4039ce20, 0x949d: 0x4039e020, 0x949e: 0x4039e220, 0x949f: 0x4039ea20,\n\t0x94a0: 0x4039f220, 0x94a1: 0x4039fe20, 0x94a2: 0x403a0020, 0x94a3: 0x403a0220,\n\t0x94a4: 0x403a0420, 0x94a5: 0x403a0820, 0x94a6: 0x403a0a20, 0x94a7: 0x403a1420,\n\t0x94a8: 0x403a1620, 0x94a9: 0x403a1c20, 0x94aa: 0x403a1c21, 0x94ab: 0x403a1c22,\n\t0x94ac: 0x403a1c24, 0x94ad: 0x403a1c25, 0x94ae: 0x403a1c26, 0x94af: 0x403a2a20,\n\t0x94b0: 0x403a2c20, 0x94b1: 0x403a2e20, 0x94b2: 0x403a3020, 0x94b3: 0x403a3220,\n\t0x94b4: 0x403a3420, 0x94b5: 0x403a4220, 0x94b6: 0x403a4420, 0x94b7: 0x403a4620,\n\t0x94b8: 0x403a4820, 0x94b9: 0x403a6020, 0x94ba: 0x403a5820, 0x94bb: 0x403a5a20,\n\t0x94bc: 0x403a5c20, 0x94bd: 0x403a5e20, 0x94be: 0x403a8826, 0x94bf: 0x40396c20,\n\t// Block 0x253, offset 0x94c0\n\t0x94c0: 0x403a8825, 0x94c1: 0x403a8822, 0x94c2: 0xe0003777, 0x94c3: 0x403a8824,\n\t0x94c4: 0x403a7620, 0x94c5: 0x403a7820, 0x94c6: 0x403a7a20, 0x94c7: 0x403a7c20,\n\t0x94c8: 0x403a7e20, 0x94c9: 0x403a8020, 0x94ca: 0x403a8220, 0x94cb: 0x403a8420,\n\t0x94cc: 0xc5640171, 0x94cd: 0x403a9226, 0x94ce: 0x403a9227, 0x94cf: 0x403a8620,\n\t0x94d0: 0x403a9224, 0x94d1: 0x403a9225, 0x94d2: 0x403a9222, 0x94d3: 0xe00037b6,\n\t0x94d4: 0x4002e820, 0x94d5: 0xc56a0171, 0x94d6: 0xae600000, 0x94d7: 0xae600000,\n\t0x94d8: 0xae600000, 0x94d9: 0xae600000, 0x94da: 0xae600000, 0x94db: 0xae600000,\n\t0x94dc: 0xae600000, 0x94dd: 0xa0000000, 0x94de: 0x40071220, 0x94df: 0xae600000,\n\t0x94e0: 0xae600000, 0x94e1: 0xae600000, 0x94e2: 0xae600000, 0x94e3: 0xadc00000,\n\t0x94e4: 0xae600000, 0x94e5: 0x003a7484, 0x94e6: 0x003a9084, 0x94e7: 0xae600000,\n\t0x94e8: 0xae600000, 0x94e9: 0x40071420, 0x94ea: 0xadc00000, 0x94eb: 0xae600000,\n\t0x94ec: 0xae600000, 0x94ed: 0xadc00000, 0x94ee: 0x40399e20, 0x94ef: 0x4039ba20,\n\t0x94f0: 0xe0000161, 0x94f1: 0xe00001e9, 0x94f2: 0xe0000304, 0x94f3: 0xe00003de,\n\t0x94f4: 0xe00004b9, 0x94f5: 0xe0000583, 0x94f6: 0xe000064e, 0x94f7: 0xe00006f6,\n\t0x94f8: 0xe00007a2, 0x94f9: 0xe0000847, 0x94fa: 0x4039d020, 0x94fb: 0x4039e420,\n\t0x94fc: 0x4039f420, 0x94fd: 0xe0001553, 0x94fe: 0xe0001779, 0x94ff: 0x403a7020,\n\t// Block 0x254, offset 0x9500\n\t0x9500: 0x00396e97, 0x9501: 0x00396e98, 0x9502: 0x0039969a, 0x9503: 0x00399699,\n\t0x9504: 0x0039949a, 0x9505: 0x00399499, 0x9506: 0x0039989a, 0x9507: 0x00399899,\n\t0x9508: 0x00398c9a, 0x9509: 0x00398c99, 0x950a: 0x0039b69a, 0x950b: 0x0039b699,\n\t0x950c: 0x0039a89a, 0x950d: 0x0039a899, 0x950e: 0x003a1c9a, 0x950f: 0x003a1c99,\n\t0x9510: 0x003a1c97, 0x9511: 0x003a1c98, 0x9512: 0x003a2a9a, 0x9513: 0x003a2a99,\n\t0x9514: 0x003a2a97, 0x9515: 0x003a2a98, 0x9516: 0x003a329a, 0x9517: 0x003a3299,\n\t0x9518: 0x003a3297, 0x9519: 0x003a3298, 0x951a: 0x003a2e9a, 0x951b: 0x003a2e99,\n\t0x951c: 0x003a2e97, 0x951d: 0x003a2e98, 0x951e: 0x003a589a, 0x951f: 0x003a5899,\n\t0x9520: 0x003a5a9a, 0x9521: 0x003a5a99, 0x9522: 0x003a5a97, 0x9523: 0x003a5a98,\n\t0x9524: 0xe0003774, 0x9525: 0xe0003771, 0x9526: 0x003a6c9a, 0x9527: 0x003a6c99,\n\t0x9528: 0x003a6c97, 0x9529: 0x003a6c98, 0x952a: 0x003a6a9a, 0x952b: 0x003a6a99,\n\t0x952c: 0x003a6a97, 0x952d: 0x003a6a98, 0x952e: 0x003aaa9a, 0x952f: 0x003aaa99,\n\t0x9530: 0xe00037bc, 0x9531: 0xe00037b9, 0x9532: 0x40071820, 0x9533: 0x40071a20,\n\t0x9534: 0x40071c20, 0x9535: 0x40071e20, 0x9536: 0x40072020, 0x9537: 0x40072220,\n\t0x9538: 0x40072420, 0x9539: 0x40072620, 0x953a: 0x40072820, 0x953b: 0x40072a20,\n\t0x953c: 0x40072c20, 0x953d: 0x40072e20, 0x953e: 0x40073020, 0x953f: 0x40073220,\n\t// Block 0x255, offset 0x9540\n\t0x9540: 0xe000155f, 0x9541: 0xe0001565, 0x9542: 0xe000157a, 0x9543: 0xe00015b0,\n\t0x9544: 0xe00015b6, 0x9545: 0xf0001a1a, 0x9546: 0xf0001a1a, 0x9547: 0xf0001a1a,\n\t0x9548: 0xf0001a1a, 0x9549: 0xe0002894, 0x954a: 0xe00036a5, 0x954b: 0xf0001a1a,\n\t0x954c: 0xf0001a1a, 0x954d: 0xf0001a1a, 0x954e: 0xf0001a1a, 0x954f: 0xe000289a,\n\t0x9550: 0xe00036b1, 0x9551: 0xf0001a1a, 0x9552: 0xf0001a1a, 0x9553: 0xe00028a0,\n\t0x9554: 0xe00036ba, 0x9555: 0xf0001a1a, 0x9556: 0xf0001a1a, 0x9557: 0xf0001a1a,\n\t0x9558: 0xf0001a1a, 0x9559: 0xf0001a1a, 0x955a: 0xf0001a1a, 0x955b: 0xf0001a1a,\n\t0x955c: 0xf0001a1a, 0x955d: 0xf0001a1a, 0x955e: 0xf0001a1a, 0x955f: 0xf0001a1a,\n\t0x9560: 0xf0001a1a, 0x9561: 0xf0001a1a, 0x9562: 0xf0001a1a, 0x9563: 0xf0001a1a,\n\t0x9564: 0xf0001a1a, 0x9565: 0xf0001a1a, 0x9566: 0xf0001a1a, 0x9567: 0xf0001a1a,\n\t0x9568: 0xf0001a1a, 0x9569: 0xf0001a1a, 0x956a: 0xf0001a1a, 0x956b: 0xf0001a1a,\n\t0x956c: 0xf0001a1a, 0x956d: 0xf0001a1a, 0x956e: 0xf0001a1a, 0x956f: 0xf0001a1a,\n\t0x9570: 0xf0001a1a, 0x9571: 0xe00028e2, 0x9572: 0xe0003708, 0x9573: 0xf0001a1a,\n\t0x9574: 0xf0001a1a, 0x9575: 0xe00028e8, 0x9576: 0xe000370e, 0x9577: 0xe0003714,\n\t0x9578: 0xe000371a, 0x9579: 0xe0003720, 0x957a: 0xe0003726, 0x957b: 0xe0003732,\n\t0x957c: 0xe000373e, 0x957d: 0xe00028ee, 0x957e: 0xe0003744, 0x957f: 0xf0001a1a,\n\t// Block 0x256, offset 0x9580\n\t0x9580: 0xf0001a1a, 0x9581: 0xf0001a1a, 0x9582: 0xf0001a1a, 0x9583: 0xe00028f4,\n\t0x9584: 0xe000374d, 0x9585: 0xf0001a1a, 0x9586: 0xf0001a1a, 0x9587: 0xf0001a1a,\n\t0x9588: 0xf0001a1a, 0x9589: 0xe00028f7, 0x958a: 0xe0003750, 0x958b: 0xf0001a1a,\n\t0x958c: 0xf0001a1a, 0x958d: 0xf0001a1a, 0x958e: 0xf0001a1a, 0x958f: 0xe00028fd,\n\t0x9590: 0xe000375c, 0x9591: 0xe0003765, 0x9592: 0xe000376b, 0x9593: 0xe0002900,\n\t0x9594: 0xe000376e, 0x9595: 0xe0003786, 0x9596: 0xe000378c, 0x9597: 0xe0003792,\n\t0x9598: 0xe00037a4, 0x9599: 0xe0002906, 0x959a: 0xe00037b3, 0x959b: 0xf0001a1a,\n\t0x959c: 0xf0001a1a, 0x959d: 0xe000377d, 0x959e: 0xe0000003, 0x959f: 0xe0000006,\n\t0x95a0: 0xe0000009, 0x95a1: 0xe000000c, 0x95a2: 0xe000000f, 0x95a3: 0xe0000012,\n\t0x95a4: 0xe000156b, 0x95a5: 0xe000156e, 0x95a6: 0xe0001577, 0x95a7: 0xe000157d,\n\t0x95a8: 0xe00015aa, 0x95a9: 0xe00015b3, 0x95aa: 0xf0001919, 0x95ab: 0xf0001919,\n\t0x95ac: 0xf0001919, 0x95ad: 0xf0001919, 0x95ae: 0xe0002891, 0x95af: 0xe00036a2,\n\t0x95b0: 0xf0001919, 0x95b1: 0xf0001919, 0x95b2: 0xf0001919, 0x95b3: 0xf0001919,\n\t0x95b4: 0xe0002897, 0x95b5: 0xe00036ae, 0x95b6: 0xf0001919, 0x95b7: 0xf0001919,\n\t0x95b8: 0xf0001919, 0x95b9: 0xf0001919, 0x95ba: 0xe000289d, 0x95bb: 0xe00036b7,\n\t0x95bc: 0xe00028df, 0x95bd: 0xe0003705, 0x95be: 0xe00028e5, 0x95bf: 0xe000370b,\n\t// Block 0x257, offset 0x95c0\n\t0x95c0: 0xe0003711, 0x95c1: 0xe000372f, 0x95c2: 0xe000373b, 0x95c3: 0xe00028eb,\n\t0x95c4: 0xe0003741, 0x95c5: 0xf0001919, 0x95c6: 0xe00028f1, 0x95c7: 0xe000374a,\n\t0x95c8: 0xf0001919, 0x95c9: 0xf0001919, 0x95ca: 0xf0001919, 0x95cb: 0xf0001919,\n\t0x95cc: 0xf0001919, 0x95cd: 0xf0001919, 0x95ce: 0xe00028fa, 0x95cf: 0xe0003759,\n\t0x95d0: 0xe000377a, 0x95d1: 0xe0003795, 0x95d2: 0xe0003798, 0x95d3: 0xe00037a1,\n\t0x95d4: 0xe00037a7, 0x95d5: 0xe0002903, 0x95d6: 0xe00037b0, 0x95d7: 0xe000155c,\n\t0x95d8: 0xe0001562, 0x95d9: 0xe0001568, 0x95da: 0xe0001571, 0x95db: 0xe0001580,\n\t0x95dc: 0xf0001717, 0x95dd: 0xf0001717, 0x95de: 0xf0001717, 0x95df: 0xf0001717,\n\t0x95e0: 0xe000369c, 0x95e1: 0xf0001717, 0x95e2: 0xf0001717, 0x95e3: 0xf0001717,\n\t0x95e4: 0xf0001717, 0x95e5: 0xe00036a8, 0x95e6: 0xf0001717, 0x95e7: 0xf0001717,\n\t0x95e8: 0xf0001717, 0x95e9: 0xf0001717, 0x95ea: 0xf0001717, 0x95eb: 0xf0001717,\n\t0x95ec: 0xf0001717, 0x95ed: 0xf0001717, 0x95ee: 0xf0001717, 0x95ef: 0xf0001717,\n\t0x95f0: 0xf0001717, 0x95f1: 0xf0001717, 0x95f2: 0xf0001717, 0x95f3: 0xf0001717,\n\t0x95f4: 0xf0001717, 0x95f5: 0xf0001717, 0x95f6: 0xf0001717, 0x95f7: 0xf0001717,\n\t0x95f8: 0xf0001717, 0x95f9: 0xf0001717, 0x95fa: 0xf0001717, 0x95fb: 0xf0001717,\n\t0x95fc: 0xf0001717, 0x95fd: 0xf0001717, 0x95fe: 0xf0001717, 0x95ff: 0xf0001717,\n\t// Block 0x258, offset 0x9600\n\t0x9600: 0xf0001717, 0x9601: 0xf0001717, 0x9602: 0xf0001717, 0x9603: 0xf0001717,\n\t0x9604: 0xe0003717, 0x9605: 0xe000371d, 0x9606: 0xe0003723, 0x9607: 0xe0003729,\n\t0x9608: 0xe0003735, 0x9609: 0xf0001717, 0x960a: 0xf0001717, 0x960b: 0xf0001717,\n\t0x960c: 0xf0001717, 0x960d: 0xe0003747, 0x960e: 0xf0001717, 0x960f: 0xf0001717,\n\t0x9610: 0xf0001717, 0x9611: 0xf0001717, 0x9612: 0xf0001717, 0x9613: 0xf0001717,\n\t0x9614: 0xf0001717, 0x9615: 0xf0001717, 0x9616: 0xe0003753, 0x9617: 0xe0003762,\n\t0x9618: 0xe0003768, 0x9619: 0xe000375f, 0x961a: 0xe0003783, 0x961b: 0xe0003789,\n\t0x961c: 0xe000378f, 0x961d: 0xe000379b, 0x961e: 0xe00037aa, 0x961f: 0xe0001574,\n\t0x9620: 0xe0001583, 0x9621: 0xf0001818, 0x9622: 0xe000369f, 0x9623: 0xf0001818,\n\t0x9624: 0xe00036ab, 0x9625: 0xf0001818, 0x9626: 0xe00036b4, 0x9627: 0xf0001818,\n\t0x9628: 0xe00036d2, 0x9629: 0xf0001818, 0x962a: 0xe00036de, 0x962b: 0xe000372c,\n\t0x962c: 0xe0003738, 0x962d: 0xf0001818, 0x962e: 0xf0001818, 0x962f: 0xe0003756,\n\t0x9630: 0xe000379e, 0x9631: 0xe00037ad, 0x9632: 0xf0001818, 0x9633: 0xe0003690,\n\t0x9634: 0xe0003693, 0x9635: 0xe00028d0, 0x9636: 0xe00036f6, 0x9637: 0xe00028d6,\n\t0x9638: 0xe00036fc, 0x9639: 0xe00028dc, 0x963a: 0xe0003702, 0x963b: 0xe00028b8,\n\t0x963c: 0xe00036d8, 0x963d: 0xe00028be, 0x963e: 0xe00036e4, 0x963f: 0xe00028ac,\n\t// Block 0x259, offset 0x9640\n\t0x9640: 0xe00036c6, 0x9641: 0xe00028a6, 0x9642: 0xe00036c0, 0x9643: 0xe00028b2,\n\t0x9644: 0xe00036cc, 0x9645: 0xe00028c4, 0x9646: 0xe00036ea, 0x9647: 0xe00028ca,\n\t0x9648: 0xe00036f0, 0x9649: 0xf0001a1a, 0x964a: 0xf0001a1a, 0x964b: 0xf0001a1a,\n\t0x964c: 0xf0001a1a, 0x964d: 0xf0001a1a, 0x964e: 0xf0001a1a, 0x964f: 0xf0001a1a,\n\t0x9650: 0xf0001a1a, 0x9651: 0xe00028cd, 0x9652: 0xe00036f3, 0x9653: 0xe00028d3,\n\t0x9654: 0xe00036f9, 0x9655: 0xe00028d9, 0x9656: 0xe00036ff, 0x9657: 0xe00028b5,\n\t0x9658: 0xe00036d5, 0x9659: 0xe00028bb, 0x965a: 0xe00036e1, 0x965b: 0xe00028a9,\n\t0x965c: 0xe00036c3, 0x965d: 0xe00028a3, 0x965e: 0xe00036bd, 0x965f: 0xe00028af,\n\t0x9660: 0xe00036c9, 0x9661: 0xe00028c1, 0x9662: 0xe00036e7, 0x9663: 0xe00028c7,\n\t0x9664: 0xe00036ed, 0x9665: 0xf0001919, 0x9666: 0xf0001919, 0x9667: 0xf0001919,\n\t0x9668: 0xf0001919, 0x9669: 0xf0001919, 0x966a: 0xf0001919, 0x966b: 0xf0001919,\n\t0x966c: 0xf0001919, 0x966d: 0xf0001717, 0x966e: 0xf0001717, 0x966f: 0xf0001717,\n\t0x9670: 0xf0001717, 0x9671: 0xe00036cf, 0x9672: 0xe00036db, 0x9673: 0xf0001717,\n\t0x9674: 0xf0001818, 0x9675: 0xf0001818, 0x9676: 0xf0001818, 0x9677: 0xf0001818,\n\t0x9678: 0xf0001818, 0x9679: 0xf0001818, 0x967a: 0xf0001818, 0x967b: 0xf0001818,\n\t0x967c: 0xe0003696, 0x967d: 0xe0003699, 0x967e: 0x4004c020, 0x967f: 0x4004c220,\n\t// Block 0x25a, offset 0x9680\n\t0x9680: 0xa0000000, 0x9681: 0xa0000000, 0x9682: 0xa0000000, 0x9683: 0xa0000000,\n\t0x9684: 0xa0000000, 0x9685: 0xa0000000, 0x9686: 0xa0000000, 0x9687: 0xa0000000,\n\t0x9688: 0xa0000000, 0x9689: 0x40020020, 0x968a: 0x40020220, 0x968b: 0x40020420,\n\t0x968c: 0x40020620, 0x968d: 0x40020820, 0x968e: 0xa0000000, 0x968f: 0xa0000000,\n\t0x9690: 0xa0000000, 0x9691: 0xa0000000, 0x9692: 0xa0000000, 0x9693: 0xa0000000,\n\t0x9694: 0xa0000000, 0x9695: 0xa0000000, 0x9696: 0xa0000000, 0x9697: 0xa0000000,\n\t0x9698: 0xa0000000, 0x9699: 0xa0000000, 0x969a: 0xa0000000, 0x969b: 0xa0000000,\n\t0x969c: 0xa0000000, 0x969d: 0xa0000000, 0x969e: 0xa0000000, 0x969f: 0xa0000000,\n\t0x96a0: 0x40021220, 0x96a1: 0x4002ba20, 0x96a2: 0x4003e020, 0x96a3: 0x4004ea20,\n\t0x96a4: 0x4027de20, 0x96a5: 0x4004ec20, 0x96a6: 0x4004e620, 0x96a7: 0x4003d220,\n\t0x96a8: 0x4003f420, 0x96a9: 0x4003f620, 0x96aa: 0x4004d820, 0x96ab: 0x40093820,\n\t0x96ac: 0x40024020, 0x96ad: 0x40021a20, 0x96ae: 0x4002e420, 0x96af: 0x4004e220,\n\t0x96b0: 0x4029cc20, 0x96b1: 0x4029ce20, 0x96b2: 0x4029d020, 0x96b3: 0x4029d220,\n\t0x96b4: 0x4029d420, 0x96b5: 0x4029d620, 0x96b6: 0x4029d820, 0x96b7: 0x4029da20,\n\t0x96b8: 0x4029dc20, 0x96b9: 0x4029de20, 0x96ba: 0x40026c20, 0x96bb: 0x40026220,\n\t0x96bc: 0x40094020, 0x96bd: 0x40094220, 0x96be: 0x40094420, 0x96bf: 0x4002c420,\n\t// Block 0x25b, offset 0x96c0\n\t0x96c0: 0x4004d620, 0x96c1: 0xc57327b1, 0x96c2: 0x002c0a88, 0x96c3: 0x002c3a88,\n\t0x96c4: 0x002c6288, 0x96c5: 0x002c9888, 0x96c6: 0x002d0888, 0x96c7: 0x002d2288,\n\t0x96c8: 0x002d6888, 0x96c9: 0x002d9a88, 0x96ca: 0x002dcc88, 0x96cb: 0x002dfe88,\n\t0x96cc: 0xc0030002, 0x96cd: 0x002e8288, 0x96ce: 0x002e9e88, 0x96cf: 0xc5780071,\n\t0x96d0: 0x002f2c88, 0x96d1: 0x002f5688, 0x96d2: 0x002f7a88, 0x96d3: 0x002fe688,\n\t0x96d4: 0x00302c88, 0x96d5: 0xc56e0071, 0x96d6: 0x0030be88, 0x96d7: 0x0030e288,\n\t0x96d8: 0x0030f688, 0x96d9: 0x00310088, 0x96da: 0x00312a88, 0x96db: 0x4003f820,\n\t0x96dc: 0x4004e420, 0x96dd: 0x4003fa20, 0x96de: 0x40062420, 0x96df: 0x40021620,\n\t0x96e0: 0x40061e20, 0x96e1: 0xc57027b1, 0x96e2: 0x402c0a20, 0x96e3: 0x402c3a20,\n\t0x96e4: 0x402c6220, 0x96e5: 0x402c9820, 0x96e6: 0x402d0820, 0x96e7: 0x402d2220,\n\t0x96e8: 0x402d6820, 0x96e9: 0x402d9a20, 0x96ea: 0x402dcc20, 0x96eb: 0x402dfe20,\n\t0x96ec: 0xc0000002, 0x96ed: 0x402e8220, 0x96ee: 0x402e9e20, 0x96ef: 0xc5760071,\n\t0x96f0: 0x402f2c20, 0x96f1: 0x402f5620, 0x96f2: 0x402f7a20, 0x96f3: 0x402fe620,\n\t0x96f4: 0x40302c20, 0x96f5: 0xc56c0071, 0x96f6: 0x4030be20, 0x96f7: 0x4030e220,\n\t0x96f8: 0x4030f620, 0x96f9: 0x40310020, 0x96fa: 0x40312a20, 0x96fb: 0x4003fc20,\n\t0x96fc: 0x40094820, 0x96fd: 0x4003fe20, 0x96fe: 0x40094c20, 0x96ff: 0xa0000000,\n\t// Block 0x25c, offset 0x9700\n\t0x9700: 0xe00008f5, 0x9701: 0xe00008ef, 0x9702: 0xe0000921, 0x9703: 0xe0000969,\n\t0x9704: 0x00320e83, 0x9705: 0x00320c83, 0x9706: 0x00320ea3, 0x9707: 0xe0000a53,\n\t0x9708: 0xe0000ae8, 0x9709: 0xe0000ae2, 0x970a: 0xe0000af4, 0x970b: 0xe0000b20,\n\t0x970c: 0xe0000c2b, 0x970d: 0xe0000c25, 0x970e: 0xe0000c37, 0x970f: 0xe0000c43,\n\t0x9710: 0xe0000ab3, 0x9711: 0xe0000d63, 0x9712: 0xe0000d9a, 0x9713: 0xe0000d94,\n\t0x9714: 0xe0000da6, 0x9715: 0xe0000de6, 0x9716: 0x00321083, 0x9717: 0x40093e20,\n\t0x9718: 0x003210a3, 0x9719: 0xe0000fe1, 0x971a: 0xe0000fdb, 0x971b: 0xe0000fed,\n\t0x971c: 0x003100a3, 0x971d: 0xe0001102, 0x971e: 0x00318888, 0x971f: 0xe0000f7b,\n\t0x9720: 0xe00008f2, 0x9721: 0xe00008ec, 0x9722: 0xe000091e, 0x9723: 0xe0000966,\n\t0x9724: 0x40320e20, 0x9725: 0x40320c20, 0x9726: 0x40320e21, 0x9727: 0xe0000a4d,\n\t0x9728: 0xe0000ae5, 0x9729: 0xe0000adf, 0x972a: 0xe0000af1, 0x972b: 0xe0000b1d,\n\t0x972c: 0xe0000c28, 0x972d: 0xe0000c22, 0x972e: 0xe0000c34, 0x972f: 0xe0000c40,\n\t0x9730: 0xe0000aad, 0x9731: 0xe0000d60, 0x9732: 0xe0000d97, 0x9733: 0xe0000d91,\n\t0x9734: 0xe0000da3, 0x9735: 0xe0000de3, 0x9736: 0x40321020, 0x9737: 0x40093c20,\n\t0x9738: 0x40321021, 0x9739: 0xe0000fde, 0x973a: 0xe0000fd8, 0x973b: 0xe0000fea,\n\t0x973c: 0x40310021, 0x973d: 0xe00010ff, 0x973e: 0x40318820, 0x973f: 0xe0001114,\n\t// Block 0x25d, offset 0x9740\n\t0x9740: 0xe0000983, 0x9741: 0xe0000980, 0x9742: 0xe00008fb, 0x9743: 0xe00008f8,\n\t0x9744: 0xe000097d, 0x9745: 0xe000097a, 0x9746: 0xe0000a38, 0x9747: 0xe0000a35,\n\t0x9748: 0xe0000a3e, 0x9749: 0xe0000a3b, 0x974a: 0xe0000a4a, 0x974b: 0xe0000a47,\n\t0x974c: 0xe0000a44, 0x974d: 0xe0000a41, 0x974e: 0xe0000a86, 0x974f: 0xe0000a83,\n\t0x9750: 0xe00037c2, 0x9751: 0xe00037bf, 0x9752: 0xe0000b46, 0x9753: 0xe0000b43,\n\t0x9754: 0xe0000aee, 0x9755: 0xe0000aeb, 0x9756: 0xe0000b2c, 0x9757: 0xe0000b29,\n\t0x9758: 0xe0000b40, 0x9759: 0xe0000b3d, 0x975a: 0xe0000b1a, 0x975b: 0xe0000b17,\n\t0x975c: 0xe0000bb8, 0x975d: 0xe0000bb5, 0x975e: 0xe0000bb2, 0x975f: 0xe0000baf,\n\t0x9760: 0xe0000bc4, 0x9761: 0xe0000bc1, 0x9762: 0xe0000bca, 0x9763: 0xe0000bc7,\n\t0x9764: 0xe0000bee, 0x9765: 0xe0000beb, 0x9766: 0xe0000c1b, 0x9767: 0xe0000c18,\n\t0x9768: 0xe0000c51, 0x9769: 0xe0000c4e, 0x976a: 0xe0000c60, 0x976b: 0xe0000c5d,\n\t0x976c: 0xe0000c31, 0x976d: 0xe0000c2e, 0x976e: 0xe0000c5a, 0x976f: 0xe0000c57,\n\t0x9770: 0xe0000c54, 0x9771: 0x402da220, 0x9772: 0xf0000a0a, 0x9773: 0xf0000404,\n\t0x9774: 0xe0000c8a, 0x9775: 0xe0000c87, 0x9776: 0xe0000c9f, 0x9777: 0xe0000c9c,\n\t0x9778: 0x402f7220, 0x9779: 0xe0000ccc, 0x977a: 0xe0000cc9, 0x977b: 0xe0000cd8,\n\t0x977c: 0xe0000cd5, 0x977d: 0xe0000cd2, 0x977e: 0xe0000ccf, 0x977f: 0xe0000d04,\n\t// Block 0x25e, offset 0x9780\n\t0x9780: 0xe0000cfe, 0x9781: 0xe0000cf8, 0x9782: 0xe0000cf5, 0x9783: 0xe0000d51,\n\t0x9784: 0xe0000d4e, 0x9785: 0xe0000d6f, 0x9786: 0xe0000d6c, 0x9787: 0xe0000d5d,\n\t0x9788: 0xe0000d5a, 0x9789: 0xf0000404, 0x978a: 0xe00037ce, 0x978b: 0xe00037cb,\n\t0x978c: 0xe0000e2e, 0x978d: 0xe0000e2b, 0x978e: 0xe0000da0, 0x978f: 0xe0000d9d,\n\t0x9790: 0xe0000de0, 0x9791: 0xe0000ddd, 0x9792: 0xe0000e93, 0x9793: 0xe0000e8f,\n\t0x9794: 0xe0000eca, 0x9795: 0xe0000ec7, 0x9796: 0xe0000edc, 0x9797: 0xe0000ed9,\n\t0x9798: 0xe0000ed0, 0x9799: 0xe0000ecd, 0x979a: 0xe0000f1f, 0x979b: 0xe0000f1c,\n\t0x979c: 0xe0000f2d, 0x979d: 0xe0000f2a, 0x979e: 0xe0000f47, 0x979f: 0xe0000f44,\n\t0x97a0: 0xe0000f33, 0x97a1: 0xe0000f30, 0x97a2: 0xe0000f99, 0x97a3: 0xe0000f96,\n\t0x97a4: 0xe0000f8a, 0x97a5: 0xe0000f87, 0x97a6: 0xe00037d4, 0x97a7: 0xe00037d1,\n\t0x97a8: 0xe000102b, 0x97a9: 0xe0001028, 0x97aa: 0xe000103f, 0x97ab: 0xe000103c,\n\t0x97ac: 0xe0000fe7, 0x97ad: 0xe0000fe4, 0x97ae: 0xe0000ff9, 0x97af: 0xe0000ff6,\n\t0x97b0: 0xe0001025, 0x97b1: 0xe0001022, 0x97b2: 0xe0001039, 0x97b3: 0xe0001036,\n\t0x97b4: 0xe00010d8, 0x97b5: 0xe00010d5, 0x97b6: 0xe000110e, 0x97b7: 0xe000110b,\n\t0x97b8: 0xe0001117, 0x97b9: 0xe000113b, 0x97ba: 0xe0001138, 0x97bb: 0xe000114d,\n\t0x97bc: 0xe000114a, 0x97bd: 0xe0001147, 0x97be: 0xe0001144, 0x97bf: 0xe0000f64,\n\t// Block 0x25f, offset 0x97c0\n\t0x97c0: 0x402c1a20, 0x97c1: 0x002c2a88, 0x97c2: 0x002c3288, 0x97c3: 0x402c3220,\n\t0x97c4: 0x0031c488, 0x97c5: 0x4031c420, 0x97c6: 0x002efa88, 0x97c7: 0x002c4e88,\n\t0x97c8: 0x402c4e20, 0x97c9: 0x002c7288, 0x97ca: 0x002c7a88, 0x97cb: 0x002c8488,\n\t0x97cc: 0x402c8420, 0x97cd: 0xe000115c, 0x97ce: 0x002cae88, 0x97cf: 0x002cb888,\n\t0x97d0: 0x002cc288, 0x97d1: 0x002d1688, 0x97d2: 0x402d1620, 0x97d3: 0x002d4488,\n\t0x97d4: 0x002d5888, 0x97d5: 0x402d7820, 0x97d6: 0x002dc288, 0x97d7: 0x002db688,\n\t0x97d8: 0x002e0a88, 0x97d9: 0x402e0a20, 0x97da: 0x402e3820, 0x97db: 0x402e7220,\n\t0x97dc: 0x0030a088, 0x97dd: 0x002eb488, 0x97de: 0x402ebc20, 0x97df: 0x002f1088,\n\t0x97e0: 0xe0000e56, 0x97e1: 0xe0000e53, 0x97e2: 0x002d6088, 0x97e3: 0x402d6020,\n\t0x97e4: 0x002f3e88, 0x97e5: 0x402f3e20, 0x97e6: 0x002f8288, 0x97e7: 0x0031b488,\n\t0x97e8: 0x4031b420, 0x97e9: 0x00300888, 0x97ea: 0x40301220, 0x97eb: 0x40304220,\n\t0x97ec: 0x00304a88, 0x97ed: 0x40304a20, 0x97ee: 0x00305288, 0x97ef: 0xe000105f,\n\t0x97f0: 0xe000105c, 0x97f1: 0x0030b488, 0x97f2: 0x0030cc88, 0x97f3: 0x00311888,\n\t0x97f4: 0x40311820, 0x97f5: 0x00313488, 0x97f6: 0x40313420, 0x97f7: 0xe00037da,\n\t0x97f8: 0x00316e88, 0x97f9: 0x40316e20, 0x97fa: 0x40317820, 0x97fb: 0x4031a620,\n\t0x97fc: 0x0031bc88, 0x97fd: 0x4031bc20, 0x97fe: 0xe0000fc9, 0x97ff: 0x40319420,\n\t// Block 0x260, offset 0x9800\n\t0x9800: 0x40321220, 0x9801: 0x40321a20, 0x9802: 0x40322220, 0x9803: 0x40322a20,\n\t0x9804: 0xe0000ad5, 0x9805: 0xe0000ad1, 0x9806: 0xe0000acd, 0x9807: 0xf0000a0a,\n\t0x9808: 0xf000040a, 0x9809: 0xf0000404, 0x980a: 0xf0000a0a, 0x980b: 0xf000040a,\n\t0x980c: 0xf0000404, 0x980d: 0xe0000947, 0x980e: 0xe0000944, 0x980f: 0xe0000c3d,\n\t0x9810: 0xe0000c3a, 0x9811: 0xe0000dcc, 0x9812: 0xe0000dc9, 0x9813: 0xe0000ff3,\n\t0x9814: 0xe0000ff0, 0x9815: 0xe000298b, 0x9816: 0xe0002988, 0x9817: 0xe0002979,\n\t0x9818: 0xe0002976, 0x9819: 0xe0002985, 0x981a: 0xe0002982, 0x981b: 0xe000297f,\n\t0x981c: 0xe000297c, 0x981d: 0x402cae20, 0x981e: 0xe00037e8, 0x981f: 0xe00037e5,\n\t0x9820: 0xe0000976, 0x9821: 0xe0000972, 0x9822: 0xe00029af, 0x9823: 0xe00029ac,\n\t0x9824: 0xe00037c8, 0x9825: 0xe00037c5, 0x9826: 0xe0000bbe, 0x9827: 0xe0000bbb,\n\t0x9828: 0xe0000c99, 0x9829: 0xe0000c96, 0x982a: 0xe0000e20, 0x982b: 0xe0000e1d,\n\t0x982c: 0xe0000e27, 0x982d: 0xe0000e23, 0x982e: 0xe00037e1, 0x982f: 0xe00037dd,\n\t0x9830: 0xe0000c8d, 0x9831: 0xf0000a0a, 0x9832: 0xf000040a, 0x9833: 0xf0000404,\n\t0x9834: 0xe0000bac, 0x9835: 0xe0000ba9, 0x9836: 0x002d7888, 0x9837: 0x00319488,\n\t0x9838: 0xe0000d57, 0x9839: 0xe0000d54, 0x983a: 0xe0002991, 0x983b: 0xe000298e,\n\t0x983c: 0xe00037ee, 0x983d: 0xe00037eb, 0x983e: 0xe0003800, 0x983f: 0xe00037fd,\n\t// Block 0x261, offset 0x9840\n\t0x9840: 0xe000098f, 0x9841: 0xe000098c, 0x9842: 0xe0000995, 0x9843: 0xe0000992,\n\t0x9844: 0xe0000b62, 0x9845: 0xe0000b5f, 0x9846: 0xe0000b68, 0x9847: 0xe0000b65,\n\t0x9848: 0xe0000c6c, 0x9849: 0xe0000c69, 0x984a: 0xe0000c72, 0x984b: 0xe0000c6f,\n\t0x984c: 0xe0000e4a, 0x984d: 0xe0000e47, 0x984e: 0xe0000e50, 0x984f: 0xe0000e4d,\n\t0x9850: 0xe0000ee8, 0x9851: 0xe0000ee5, 0x9852: 0xe0000eee, 0x9853: 0xe0000eeb,\n\t0x9854: 0xe0001053, 0x9855: 0xe0001050, 0x9856: 0xe0001059, 0x9857: 0xe0001056,\n\t0x9858: 0xe0000f61, 0x9859: 0xe0000f5e, 0x985a: 0xe0000fa5, 0x985b: 0xe0000fa2,\n\t0x985c: 0x00312288, 0x985d: 0x40312220, 0x985e: 0xe0000bf4, 0x985f: 0xe0000bf1,\n\t0x9860: 0x002ebc88, 0x9861: 0x402c8c20, 0x9862: 0x002f2288, 0x9863: 0x402f2220,\n\t0x9864: 0x00314088, 0x9865: 0x40314020, 0x9866: 0xe000096f, 0x9867: 0xe000096c,\n\t0x9868: 0xe0000b32, 0x9869: 0xe0000b2f, 0x986a: 0xe00037fa, 0x986b: 0xe00037f7,\n\t0x986c: 0xe0000dfd, 0x986d: 0xe0000df9, 0x986e: 0xe0000e04, 0x986f: 0xe0000e01,\n\t0x9870: 0xe0000e0b, 0x9871: 0xe0000e07, 0x9872: 0xe0001129, 0x9873: 0xe0001126,\n\t0x9874: 0x402e5e20, 0x9875: 0x402ed020, 0x9876: 0x40305a20, 0x9877: 0x402dd420,\n\t0x9878: 0xe0000abf, 0x9879: 0xe0000ec4, 0x987a: 0x002be888, 0x987b: 0x002c4488,\n\t0x987c: 0x402c4420, 0x987d: 0x002e3888, 0x987e: 0x00303e88, 0x987f: 0x402ffc20,\n\t// Block 0x262, offset 0x9880\n\t0x9880: 0x402f8220, 0x9881: 0x402fd820, 0x9882: 0x402ff420, 0x9883: 0x40300820,\n\t0x9884: 0x402df620, 0x9885: 0x40301a20, 0x9886: 0x40302420, 0x9887: 0x40306420,\n\t0x9888: 0x40305220, 0x9889: 0x40307c20, 0x988a: 0x4030b420, 0x988b: 0x4030cc20,\n\t0x988c: 0x4030da20, 0x988d: 0x4030ee20, 0x988e: 0x402e7a20, 0x988f: 0x40310820,\n\t0x9890: 0x40314820, 0x9891: 0x40315020, 0x9892: 0xe00037d7, 0x9893: 0x40318020,\n\t0x9894: 0x4031cc20, 0x9895: 0x4031e820, 0x9896: 0x40320a20, 0x9897: 0x40323220,\n\t0x9898: 0x40323a20, 0x9899: 0x402c1220, 0x989a: 0x402cf820, 0x989b: 0x402d4c20,\n\t0x989c: 0x402d7020, 0x989d: 0x402de620, 0x989e: 0x402e1a20, 0x989f: 0x402e2a20,\n\t0x98a0: 0x402f6220, 0x98a1: 0x4031fa20, 0x98a2: 0x40320220, 0x98a3: 0xe0000aca,\n\t0x98a4: 0xe0000adc, 0x98a5: 0xe0000ad9, 0x98a6: 0xe0000fcc, 0x98a7: 0xe0000fcf,\n\t0x98a8: 0xe0000fba, 0x98a9: 0xe0000ba1, 0x98aa: 0xe0000d11, 0x98ab: 0xe0000d18,\n\t0x98ac: 0x40324220, 0x98ad: 0x40324a20, 0x98ae: 0x40309020, 0x98af: 0x40309820,\n\t0x98b0: 0x002d6894, 0x98b1: 0x002d8094, 0x98b2: 0x002dcc94, 0x98b3: 0x002f7a94,\n\t0x98b4: 0x002f9894, 0x98b5: 0x002fac94, 0x98b6: 0x002fd894, 0x98b7: 0x0030e294,\n\t0x98b8: 0x00310094, 0x98b9: 0x40064020, 0x98ba: 0x40064420, 0x98bb: 0x402d9620,\n\t0x98bc: 0x4031de20, 0x98bd: 0x402d9820, 0x98be: 0x4031e220, 0x98bf: 0x4031f020,\n\t// Block 0x263, offset 0x98c0\n\t0x98c0: 0xe0000d24, 0x98c1: 0xe0000d21, 0x98c2: 0xe0000d2a, 0x98c3: 0xe0000d27,\n\t0x98c4: 0xe0000d69, 0x98c5: 0xe0000d66, 0x98c6: 0xe0000d7b, 0x98c7: 0xe0000d78,\n\t0x98c8: 0xe0000d87, 0x98c9: 0xe0000d84, 0x98ca: 0xe0000d81, 0x98cb: 0xe0000d7e,\n\t0x98cc: 0xe0000ded, 0x98cd: 0xe0000de9, 0x98ce: 0xe00037f4, 0x98cf: 0xe00037f1,\n\t0x98d0: 0xe0000e3d, 0x98d1: 0xe0000e39, 0x98d2: 0xe0000e35, 0x98d3: 0xe0000e31,\n\t0x98d4: 0xe0000ea7, 0x98d5: 0xe0000ea4, 0x98d6: 0xe0000ead, 0x98d7: 0xe0000eaa,\n\t0x98d8: 0xe0000ed6, 0x98d9: 0xe0000ed3, 0x98da: 0xe0000ef4, 0x98db: 0xe0000ef1,\n\t0x98dc: 0xe0000efb, 0x98dd: 0xe0000ef7, 0x98de: 0xe0000f02, 0x98df: 0xe0000eff,\n\t0x98e0: 0xe0000f41, 0x98e1: 0xe0000f3e, 0x98e2: 0xe0000f53, 0x98e3: 0xe0000f50,\n\t0x98e4: 0xe0000f26, 0x98e5: 0xe0000f22, 0x98e6: 0xe0000f3a, 0x98e7: 0xe0000f36,\n\t0x98e8: 0xe0000f5a, 0x98e9: 0xe0000f56, 0x98ea: 0xe0000f93, 0x98eb: 0xe0000f90,\n\t0x98ec: 0xe0000f9f, 0x98ed: 0xe0000f9c, 0x98ee: 0xe0000fb1, 0x98ef: 0xe0000fae,\n\t0x98f0: 0xe0000fab, 0x98f1: 0xe0000fa8, 0x98f2: 0xe0001093, 0x98f3: 0xe0001090,\n\t0x98f4: 0xe000109f, 0x98f5: 0xe000109c, 0x98f6: 0xe0001099, 0x98f7: 0xe0001096,\n\t0x98f8: 0xe0001032, 0x98f9: 0xe000102e, 0x98fa: 0xe000298b, 0x98fb: 0xe0002988,\n\t0x98fc: 0xe00010a9, 0x98fd: 0xe00010a6, 0x98fe: 0xe00010af, 0x98ff: 0xe00010ac,\n\t// Block 0x264, offset 0x9900\n\t0x9900: 0xe00009bc, 0x9901: 0xe00009c0, 0x9902: 0x002c3a8b, 0x9903: 0xf0000a04,\n\t0x9904: 0x40081c20, 0x9905: 0xe0000a5e, 0x9906: 0xe0000a62, 0x9907: 0x002cc28a,\n\t0x9908: 0x40081e20, 0x9909: 0xf0000a04, 0x990a: 0x002d2285, 0x990b: 0x002d688b,\n\t0x990c: 0x002d688b, 0x990d: 0x002d688b, 0x990e: 0x002d6885, 0x990f: 0xf0000202,\n\t0x9910: 0x002d9a8b, 0x9911: 0x002d9a8b, 0x9912: 0x002e228b, 0x9913: 0x002e2285,\n\t0x9914: 0x40082020, 0x9915: 0x002e9e8b, 0x9916: 0xf000040a, 0x9917: 0x40082220,\n\t0x9918: 0x40082420, 0x9919: 0x002f2c8b, 0x991a: 0x002f568b, 0x991b: 0x002f7a8b,\n\t0x991c: 0x002f7a8b, 0x991d: 0x002f7a8b, 0x991e: 0x40082620, 0x991f: 0x40082820,\n\t0x9920: 0xf0001414, 0x9921: 0xe0000fbd, 0x9922: 0xf0001414, 0x9923: 0x40082a20,\n\t0x9924: 0x00312a8b, 0x9925: 0x40082c20, 0x9926: 0x0032a288, 0x9927: 0x40082e20,\n\t0x9928: 0x00312a8b, 0x9929: 0x40083020, 0x992a: 0x002dfe88, 0x992b: 0x00320c83,\n\t0x992c: 0x002c0a8b, 0x992d: 0x002c3a8b, 0x992e: 0x40083220, 0x992f: 0x002c9885,\n\t0x9930: 0x002c988b, 0x9931: 0x002d088b, 0x9932: 0x002d1e88, 0x9933: 0x002e828b,\n\t0x9934: 0x002ee285, 0x9935: 0x00389084, 0x9936: 0x00389284, 0x9937: 0x00389484,\n\t0x9938: 0x00389684, 0x9939: 0x002d9a85, 0x993a: 0x40083420, 0x993b: 0xe0000b95,\n\t0x993c: 0x00327e85, 0x993d: 0x00325685, 0x993e: 0x0032568b, 0x993f: 0x00327e8b,\n\t// Block 0x265, offset 0x9940\n\t0x9940: 0xa0000000, 0x9941: 0xa0000000, 0x9942: 0xa0000000, 0x9943: 0xa0000000,\n\t0x9944: 0xa0000000, 0x9945: 0xa0000000, 0x9946: 0xa0000000, 0x9947: 0xa0000000,\n\t0x9948: 0xa0000000, 0x9949: 0x40020020, 0x994a: 0x40020220, 0x994b: 0x40020420,\n\t0x994c: 0x40020620, 0x994d: 0x40020820, 0x994e: 0xa0000000, 0x994f: 0xa0000000,\n\t0x9950: 0xa0000000, 0x9951: 0xa0000000, 0x9952: 0xa0000000, 0x9953: 0xa0000000,\n\t0x9954: 0xa0000000, 0x9955: 0xa0000000, 0x9956: 0xa0000000, 0x9957: 0xa0000000,\n\t0x9958: 0xa0000000, 0x9959: 0xa0000000, 0x995a: 0xa0000000, 0x995b: 0xa0000000,\n\t0x995c: 0xa0000000, 0x995d: 0xa0000000, 0x995e: 0xa0000000, 0x995f: 0xa0000000,\n\t0x9960: 0x40021220, 0x9961: 0x4002ba20, 0x9962: 0x4003e020, 0x9963: 0x4004ea20,\n\t0x9964: 0x4027de20, 0x9965: 0x4004ec20, 0x9966: 0x4004e620, 0x9967: 0x4003d220,\n\t0x9968: 0x4003f420, 0x9969: 0x4003f620, 0x996a: 0x4004d820, 0x996b: 0x40093820,\n\t0x996c: 0x40024020, 0x996d: 0x40021a20, 0x996e: 0x4002e420, 0x996f: 0x4004e220,\n\t0x9970: 0x4029cc20, 0x9971: 0x4029ce20, 0x9972: 0x4029d020, 0x9973: 0x4029d220,\n\t0x9974: 0x4029d420, 0x9975: 0x4029d620, 0x9976: 0x4029d820, 0x9977: 0x4029da20,\n\t0x9978: 0x4029dc20, 0x9979: 0x4029de20, 0x997a: 0x40026c20, 0x997b: 0x40026220,\n\t0x997c: 0x40094020, 0x997d: 0x40094220, 0x997e: 0x40094420, 0x997f: 0x4002c420,\n\t// Block 0x266, offset 0x9980\n\t0x9980: 0x4004d620, 0x9981: 0xc57327b1, 0x9982: 0x002c0a88, 0x9983: 0x002c3a88,\n\t0x9984: 0x002c6288, 0x9985: 0x002c9888, 0x9986: 0x002d0888, 0x9987: 0x002d2288,\n\t0x9988: 0x002d6888, 0x9989: 0x002d9a88, 0x998a: 0x002dcc88, 0x998b: 0x002dfe88,\n\t0x998c: 0xc0030002, 0x998d: 0x002e8288, 0x998e: 0x002e9e88, 0x998f: 0xc57e27e1,\n\t0x9990: 0x002f2c88, 0x9991: 0x002f5688, 0x9992: 0x002f7a88, 0x9993: 0x002fe688,\n\t0x9994: 0x00302c88, 0x9995: 0xc3900b21, 0x9996: 0x0030be88, 0x9997: 0x0030bea3,\n\t0x9998: 0x0030f688, 0x9999: 0x00310088, 0x999a: 0x00312a88, 0x999b: 0x4003f820,\n\t0x999c: 0x4004e420, 0x999d: 0x4003fa20, 0x999e: 0x40062420, 0x999f: 0x40021620,\n\t0x99a0: 0x40061e20, 0x99a1: 0xc57027b1, 0x99a2: 0x402c0a20, 0x99a3: 0x402c3a20,\n\t0x99a4: 0x402c6220, 0x99a5: 0x402c9820, 0x99a6: 0x402d0820, 0x99a7: 0x402d2220,\n\t0x99a8: 0x402d6820, 0x99a9: 0x402d9a20, 0x99aa: 0x402dcc20, 0x99ab: 0x402dfe20,\n\t0x99ac: 0xc0000002, 0x99ad: 0x402e8220, 0x99ae: 0x402e9e20, 0x99af: 0xc57a27e1,\n\t0x99b0: 0x402f2c20, 0x99b1: 0x402f5620, 0x99b2: 0x402f7a20, 0x99b3: 0x402fe620,\n\t0x99b4: 0x40302c20, 0x99b5: 0xc38d0b21, 0x99b6: 0x4030be20, 0x99b7: 0x4030be21,\n\t0x99b8: 0x4030f620, 0x99b9: 0x40310020, 0x99ba: 0x40312a20, 0x99bb: 0x4003fc20,\n\t0x99bc: 0x40094820, 0x99bd: 0x4003fe20, 0x99be: 0x40094c20, 0x99bf: 0xa0000000,\n\t// Block 0x267, offset 0x99c0\n\t0x99c0: 0xe00008f5, 0x99c1: 0xe00008ef, 0x99c2: 0xe0000921, 0x99c3: 0xe0000969,\n\t0x99c4: 0x00320e83, 0x99c5: 0x00320c83, 0x99c6: 0x00320ea3, 0x99c7: 0xe0000a53,\n\t0x99c8: 0xe0000ae8, 0x99c9: 0xe0000ae2, 0x99ca: 0xe0000af4, 0x99cb: 0xe0000b20,\n\t0x99cc: 0xe0000c2b, 0x99cd: 0xe0000c25, 0x99ce: 0xe0000c37, 0x99cf: 0xe0000c43,\n\t0x99d0: 0x002c62a3, 0x99d1: 0xe0000d63, 0x99d2: 0xe0000d9a, 0x99d3: 0xe0000d94,\n\t0x99d4: 0xe0000da6, 0x99d5: 0x003210e3, 0x99d6: 0x00321083, 0x99d7: 0x40093e20,\n\t0x99d8: 0x003210a3, 0x99d9: 0xe0000fe1, 0x99da: 0xe0000fdb, 0x99db: 0xe0000fed,\n\t0x99dc: 0x003100a3, 0x99dd: 0xe0001102, 0x99de: 0xe0003806, 0x99df: 0xe0000f7b,\n\t0x99e0: 0xe00008f2, 0x99e1: 0xe00008ec, 0x99e2: 0xe000091e, 0x99e3: 0xe0000966,\n\t0x99e4: 0x40320e20, 0x99e5: 0x40320c20, 0x99e6: 0x40320e21, 0x99e7: 0xe0000a4d,\n\t0x99e8: 0xe0000ae5, 0x99e9: 0xe0000adf, 0x99ea: 0xe0000af1, 0x99eb: 0xe0000b1d,\n\t0x99ec: 0xe0000c28, 0x99ed: 0xe0000c22, 0x99ee: 0xe0000c34, 0x99ef: 0xe0000c40,\n\t0x99f0: 0x402c6221, 0x99f1: 0xe0000d60, 0x99f2: 0xe0000d97, 0x99f3: 0xe0000d91,\n\t0x99f4: 0xe0000da3, 0x99f5: 0x40321023, 0x99f6: 0x40321020, 0x99f7: 0x40093c20,\n\t0x99f8: 0x40321021, 0x99f9: 0xe0000fde, 0x99fa: 0xe0000fd8, 0x99fb: 0xe0000fea,\n\t0x99fc: 0x40310021, 0x99fd: 0xe00010ff, 0x99fe: 0xe0003803, 0x99ff: 0xe0001114,\n\t// Block 0x268, offset 0x9a00\n\t0x9a00: 0xe0000983, 0x9a01: 0xe0000980, 0x9a02: 0xe00008fb, 0x9a03: 0xe00008f8,\n\t0x9a04: 0xe000097d, 0x9a05: 0xe000097a, 0x9a06: 0xe0000a38, 0x9a07: 0xe0000a35,\n\t0x9a08: 0xe0000a3e, 0x9a09: 0xe0000a3b, 0x9a0a: 0xe0000a4a, 0x9a0b: 0xe0000a47,\n\t0x9a0c: 0xe0000a44, 0x9a0d: 0xe0000a41, 0x9a0e: 0xe0000a86, 0x9a0f: 0xe0000a83,\n\t0x9a10: 0x002c62c3, 0x9a11: 0x402c6222, 0x9a12: 0xe0000b46, 0x9a13: 0xe0000b43,\n\t0x9a14: 0xe0000aee, 0x9a15: 0xe0000aeb, 0x9a16: 0xe0000b2c, 0x9a17: 0xe0000b29,\n\t0x9a18: 0xe0000b40, 0x9a19: 0xe0000b3d, 0x9a1a: 0xe0000b1a, 0x9a1b: 0xe0000b17,\n\t0x9a1c: 0xe0000bb8, 0x9a1d: 0xe0000bb5, 0x9a1e: 0xe0000bb2, 0x9a1f: 0xe0000baf,\n\t0x9a20: 0xe0000bc4, 0x9a21: 0xe0000bc1, 0x9a22: 0xe0000bca, 0x9a23: 0xe0000bc7,\n\t0x9a24: 0xe0000bee, 0x9a25: 0xe0000beb, 0x9a26: 0xe0000c1b, 0x9a27: 0xe0000c18,\n\t0x9a28: 0xe0000c51, 0x9a29: 0xe0000c4e, 0x9a2a: 0xe0000c60, 0x9a2b: 0xe0000c5d,\n\t0x9a2c: 0xe0000c31, 0x9a2d: 0xe0000c2e, 0x9a2e: 0xe0000c5a, 0x9a2f: 0xe0000c57,\n\t0x9a30: 0xe0000c54, 0x9a31: 0x402da220, 0x9a32: 0xf0000a0a, 0x9a33: 0xf0000404,\n\t0x9a34: 0xe0000c8a, 0x9a35: 0xe0000c87, 0x9a36: 0xe0000c9f, 0x9a37: 0xe0000c9c,\n\t0x9a38: 0x402f7220, 0x9a39: 0xe0000ccc, 0x9a3a: 0xe0000cc9, 0x9a3b: 0xe0000cd8,\n\t0x9a3c: 0xe0000cd5, 0x9a3d: 0xe0000cd2, 0x9a3e: 0xe0000ccf, 0x9a3f: 0xe0000d04,\n\t// Block 0x269, offset 0x9a40\n\t0x9a40: 0xe0000cfe, 0x9a41: 0xe0000cf8, 0x9a42: 0xe0000cf5, 0x9a43: 0xe0000d51,\n\t0x9a44: 0xe0000d4e, 0x9a45: 0xe0000d6f, 0x9a46: 0xe0000d6c, 0x9a47: 0xe0000d5d,\n\t0x9a48: 0xe0000d5a, 0x9a49: 0xf0000404, 0x9a4a: 0x002e9ea3, 0x9a4b: 0x402e9e21,\n\t0x9a4c: 0xe0000e2e, 0x9a4d: 0xe0000e2b, 0x9a4e: 0xe0000da0, 0x9a4f: 0xe0000d9d,\n\t0x9a50: 0x003210c3, 0x9a51: 0x40321022, 0x9a52: 0x00321103, 0x9a53: 0x40321024,\n\t0x9a54: 0xe0000eca, 0x9a55: 0xe0000ec7, 0x9a56: 0xe0000edc, 0x9a57: 0xe0000ed9,\n\t0x9a58: 0xe0000ed0, 0x9a59: 0xe0000ecd, 0x9a5a: 0xe0000f1f, 0x9a5b: 0xe0000f1c,\n\t0x9a5c: 0xe0000f2d, 0x9a5d: 0xe0000f2a, 0x9a5e: 0xe0000f47, 0x9a5f: 0xe0000f44,\n\t0x9a60: 0xe0000f33, 0x9a61: 0xe0000f30, 0x9a62: 0xe0000f99, 0x9a63: 0xe0000f96,\n\t0x9a64: 0xe0000f8a, 0x9a65: 0xe0000f87, 0x9a66: 0x00303688, 0x9a67: 0x40303620,\n\t0x9a68: 0xe000102b, 0x9a69: 0xe0001028, 0x9a6a: 0xe000103f, 0x9a6b: 0xe000103c,\n\t0x9a6c: 0xe0000fe7, 0x9a6d: 0xe0000fe4, 0x9a6e: 0xe0000ff9, 0x9a6f: 0xe0000ff6,\n\t0x9a70: 0x003100c3, 0x9a71: 0x40310022, 0x9a72: 0xe0001039, 0x9a73: 0xe0001036,\n\t0x9a74: 0xe0003636, 0x9a75: 0xe0003633, 0x9a76: 0xe000110e, 0x9a77: 0xe000110b,\n\t0x9a78: 0xe0001117, 0x9a79: 0xe000113b, 0x9a7a: 0xe0001138, 0x9a7b: 0xe000114d,\n\t0x9a7c: 0xe000114a, 0x9a7d: 0xe0001147, 0x9a7e: 0xe0001144, 0x9a7f: 0xe0000f64,\n\t// Block 0x26a, offset 0x9a80\n\t0x9a80: 0x40321220, 0x9a81: 0x40321a20, 0x9a82: 0x40322220, 0x9a83: 0x40322a20,\n\t0x9a84: 0xe0000ad5, 0x9a85: 0xe0000ad1, 0x9a86: 0xe0000acd, 0x9a87: 0xf0000a0a,\n\t0x9a88: 0xf000040a, 0x9a89: 0xf0000404, 0x9a8a: 0xf0000a0a, 0x9a8b: 0xf000040a,\n\t0x9a8c: 0xf0000404, 0x9a8d: 0xe0000947, 0x9a8e: 0xe0000944, 0x9a8f: 0xe0000c3d,\n\t0x9a90: 0xe0000c3a, 0x9a91: 0xe0000dcc, 0x9a92: 0xe0000dc9, 0x9a93: 0xe0000ff3,\n\t0x9a94: 0xe0000ff0, 0x9a95: 0xe000298b, 0x9a96: 0xe0002988, 0x9a97: 0xe0002979,\n\t0x9a98: 0xe0002976, 0x9a99: 0xe0002985, 0x9a9a: 0xe0002982, 0x9a9b: 0xe000297f,\n\t0x9a9c: 0xe000297c, 0x9a9d: 0x402cae20, 0x9a9e: 0xe00037e8, 0x9a9f: 0xe00037e5,\n\t0x9aa0: 0xe0000976, 0x9aa1: 0xe0000972, 0x9aa2: 0xe00029af, 0x9aa3: 0xe00029ac,\n\t0x9aa4: 0x002d3a88, 0x9aa5: 0x402d3a20, 0x9aa6: 0xe0000bbe, 0x9aa7: 0xe0000bbb,\n\t0x9aa8: 0xe0000c99, 0x9aa9: 0xe0000c96, 0x9aaa: 0xe0000e20, 0x9aab: 0xe0000e1d,\n\t0x9aac: 0xe0000e27, 0x9aad: 0xe0000e23, 0x9aae: 0xe0001162, 0x9aaf: 0xe000115f,\n\t0x9ab0: 0xe0000c8d, 0x9ab1: 0xf0000a0a, 0x9ab2: 0xf000040a, 0x9ab3: 0xf0000404,\n\t0x9ab4: 0xe0000bac, 0x9ab5: 0xe0000ba9, 0x9ab6: 0x002d7888, 0x9ab7: 0x00319488,\n\t0x9ab8: 0xe0000d57, 0x9ab9: 0xe0000d54, 0x9aba: 0xe0002991, 0x9abb: 0xe000298e,\n\t0x9abc: 0xe00037ee, 0x9abd: 0xe00037eb, 0x9abe: 0xe0003800, 0x9abf: 0xe00037fd,\n\t// Block 0x26b, offset 0x9ac0\n\t0x9ac0: 0xe000098f, 0x9ac1: 0xe000098c, 0x9ac2: 0xe0000995, 0x9ac3: 0xe0000992,\n\t0x9ac4: 0xe0000b62, 0x9ac5: 0xe0000b5f, 0x9ac6: 0xe0000b68, 0x9ac7: 0xe0000b65,\n\t0x9ac8: 0xe0000c6c, 0x9ac9: 0xe0000c69, 0x9aca: 0xe0000c72, 0x9acb: 0xe0000c6f,\n\t0x9acc: 0xe0000e4a, 0x9acd: 0xe0000e47, 0x9ace: 0xe0000e50, 0x9acf: 0xe0000e4d,\n\t0x9ad0: 0xe0000ee8, 0x9ad1: 0xe0000ee5, 0x9ad2: 0xe0000eee, 0x9ad3: 0xe0000eeb,\n\t0x9ad4: 0xe0001053, 0x9ad5: 0xe0001050, 0x9ad6: 0xe0001059, 0x9ad7: 0xe0001056,\n\t0x9ad8: 0xe0000f61, 0x9ad9: 0xe0000f5e, 0x9ada: 0xe0000fa5, 0x9adb: 0xe0000fa2,\n\t0x9adc: 0x00312288, 0x9add: 0x40312220, 0x9ade: 0xe0000bf4, 0x9adf: 0xe0000bf1,\n\t0x9ae0: 0x002ebc88, 0x9ae1: 0x402c8c20, 0x9ae2: 0x002f2288, 0x9ae3: 0x402f2220,\n\t0x9ae4: 0x00314088, 0x9ae5: 0x40314020, 0x9ae6: 0xe000096f, 0x9ae7: 0xe000096c,\n\t0x9ae8: 0xe0000b32, 0x9ae9: 0xe0000b2f, 0x9aea: 0xe00037fa, 0x9aeb: 0xe00037f7,\n\t0x9aec: 0xe000381e, 0x9aed: 0xe000381b, 0x9aee: 0xe0000e04, 0x9aef: 0xe0000e01,\n\t0x9af0: 0xe0000e0b, 0x9af1: 0xe0000e07, 0x9af2: 0xe0001129, 0x9af3: 0xe0001126,\n\t0x9af4: 0x402e5e20, 0x9af5: 0x402ed020, 0x9af6: 0x40305a20, 0x9af7: 0x402dd420,\n\t0x9af8: 0xe0000abf, 0x9af9: 0xe0000ec4, 0x9afa: 0x002be888, 0x9afb: 0x002c4488,\n\t0x9afc: 0x402c4420, 0x9afd: 0x002e3888, 0x9afe: 0x00303e88, 0x9aff: 0x402ffc20,\n\t// Block 0x26c, offset 0x9b00\n\t0x9b00: 0xe0000d24, 0x9b01: 0xe0000d21, 0x9b02: 0xe0000d2a, 0x9b03: 0xe0000d27,\n\t0x9b04: 0xe0000d69, 0x9b05: 0xe0000d66, 0x9b06: 0xe0000d7b, 0x9b07: 0xe0000d78,\n\t0x9b08: 0xe0000d87, 0x9b09: 0xe0000d84, 0x9b0a: 0xe0000d81, 0x9b0b: 0xe0000d7e,\n\t0x9b0c: 0xe000380c, 0x9b0d: 0xe0003809, 0x9b0e: 0xe0003818, 0x9b0f: 0xe0003815,\n\t0x9b10: 0xe0000e3d, 0x9b11: 0xe0000e39, 0x9b12: 0xe0000e35, 0x9b13: 0xe0000e31,\n\t0x9b14: 0xe0000ea7, 0x9b15: 0xe0000ea4, 0x9b16: 0xe0000ead, 0x9b17: 0xe0000eaa,\n\t0x9b18: 0xe0000ed6, 0x9b19: 0xe0000ed3, 0x9b1a: 0xe0000ef4, 0x9b1b: 0xe0000ef1,\n\t0x9b1c: 0xe0000efb, 0x9b1d: 0xe0000ef7, 0x9b1e: 0xe0000f02, 0x9b1f: 0xe0000eff,\n\t0x9b20: 0xe0000f41, 0x9b21: 0xe0000f3e, 0x9b22: 0xe0000f53, 0x9b23: 0xe0000f50,\n\t0x9b24: 0xe0000f26, 0x9b25: 0xe0000f22, 0x9b26: 0xe0000f3a, 0x9b27: 0xe0000f36,\n\t0x9b28: 0xe0000f5a, 0x9b29: 0xe0000f56, 0x9b2a: 0xe0000f93, 0x9b2b: 0xe0000f90,\n\t0x9b2c: 0xe0000f9f, 0x9b2d: 0xe0000f9c, 0x9b2e: 0xe0000fb1, 0x9b2f: 0xe0000fae,\n\t0x9b30: 0xe0000fab, 0x9b31: 0xe0000fa8, 0x9b32: 0xe0001093, 0x9b33: 0xe0001090,\n\t0x9b34: 0xe000109f, 0x9b35: 0xe000109c, 0x9b36: 0xe0001099, 0x9b37: 0xe0001096,\n\t0x9b38: 0xe0001032, 0x9b39: 0xe000102e, 0x9b3a: 0xe000298b, 0x9b3b: 0xe0002988,\n\t0x9b3c: 0xe00010a9, 0x9b3d: 0xe00010a6, 0x9b3e: 0xe00010af, 0x9b3f: 0xe00010ac,\n\t// Block 0x26d, offset 0x9b40\n\t0x9b40: 0xe0003630, 0x9b41: 0xe000362d, 0x9b42: 0xe000362a, 0x9b43: 0xe0003627,\n\t0x9b44: 0xe000363f, 0x9b45: 0xe000363c, 0x9b46: 0xe0003645, 0x9b47: 0xe0003642,\n\t0x9b48: 0xe000364b, 0x9b49: 0xe0003648, 0x9b4a: 0xe00010fc, 0x9b4b: 0xe00010f9,\n\t0x9b4c: 0xe00010f6, 0x9b4d: 0xe00010f3, 0x9b4e: 0xe0001123, 0x9b4f: 0xe0001120,\n\t0x9b50: 0xe0001141, 0x9b51: 0xe000113e, 0x9b52: 0xe0001153, 0x9b53: 0xe0001150,\n\t0x9b54: 0xe0001159, 0x9b55: 0xe0001156, 0x9b56: 0xe0000c15, 0x9b57: 0xe0000f8d,\n\t0x9b58: 0xe0003639, 0x9b59: 0xe0001111, 0x9b5a: 0xf0000404, 0x9b5b: 0xe0000f70,\n\t0x9b5c: 0x40300420, 0x9b5d: 0x40300620, 0x9b5e: 0xe0000f7f, 0x9b5f: 0x402c9620,\n\t0x9b60: 0xe000099b, 0x9b61: 0xe0000998, 0x9b62: 0xe0000989, 0x9b63: 0xe0000986,\n\t0x9b64: 0xe0000928, 0x9b65: 0xe0000924, 0x9b66: 0xe0000930, 0x9b67: 0xe000092c,\n\t0x9b68: 0xe0000940, 0x9b69: 0xe000093c, 0x9b6a: 0xe0000938, 0x9b6b: 0xe0000934,\n\t0x9b6c: 0xe00009aa, 0x9b6d: 0xe00009a6, 0x9b6e: 0xe0000902, 0x9b6f: 0xe00008fe,\n\t0x9b70: 0xe000090a, 0x9b71: 0xe0000906, 0x9b72: 0xe000091a, 0x9b73: 0xe0000916,\n\t0x9b74: 0xe0000912, 0x9b75: 0xe000090e, 0x9b76: 0xe00009a2, 0x9b77: 0xe000099e,\n\t0x9b78: 0xe0000b6e, 0x9b79: 0xe0000b6b, 0x9b7a: 0xe0000b5c, 0x9b7b: 0xe0000b59,\n\t0x9b7c: 0xe0000b26, 0x9b7d: 0xe0000b23, 0x9b7e: 0xe0000afb, 0x9b7f: 0xe0000af7,\n\t// Block 0x26e, offset 0x9b80\n\t0x9b80: 0xe0000b03, 0x9b81: 0xe0000aff, 0x9b82: 0xe0000b13, 0x9b83: 0xe0000b0f,\n\t0x9b84: 0xe0000b0b, 0x9b85: 0xe0000b07, 0x9b86: 0xe0000b75, 0x9b87: 0xe0000b71,\n\t0x9b88: 0xe0000c66, 0x9b89: 0xe0000c63, 0x9b8a: 0xe0000c78, 0x9b8b: 0xe0000c75,\n\t0x9b8c: 0xe0000e84, 0x9b8d: 0xe0000e81, 0x9b8e: 0xe0000e44, 0x9b8f: 0xe0000e41,\n\t0x9b90: 0xe0000dad, 0x9b91: 0xe0000da9, 0x9b92: 0xe0000db5, 0x9b93: 0xe0000db1,\n\t0x9b94: 0xe0000dc5, 0x9b95: 0xe0000dc1, 0x9b96: 0xe0003812, 0x9b97: 0xe000380f,\n\t0x9b98: 0xe0000e8b, 0x9b99: 0xe0000e87, 0x9b9a: 0xe0000e5d, 0x9b9b: 0xe0000e59,\n\t0x9b9c: 0xe0000e65, 0x9b9d: 0xe0000e61, 0x9b9e: 0xe0000e75, 0x9b9f: 0xe0000e71,\n\t0x9ba0: 0xe0003824, 0x9ba1: 0xe0003821, 0x9ba2: 0xe0000e7d, 0x9ba3: 0xe0000e79,\n\t0x9ba4: 0xe000108d, 0x9ba5: 0xe000108a, 0x9ba6: 0xe000104d, 0x9ba7: 0xe000104a,\n\t0x9ba8: 0xe0001066, 0x9ba9: 0xe0001062, 0x9baa: 0xe000106e, 0x9bab: 0xe000106a,\n\t0x9bac: 0xe000107e, 0x9bad: 0xe000107a, 0x9bae: 0xe0001076, 0x9baf: 0xe0001072,\n\t0x9bb0: 0xe0001086, 0x9bb1: 0xe0001082, 0x9bb2: 0xe0001108, 0x9bb3: 0xe0001105,\n\t0x9bb4: 0xe0001135, 0x9bb5: 0xe0001132, 0x9bb6: 0xe000112f, 0x9bb7: 0xe000112c,\n\t0x9bb8: 0xe000111d, 0x9bb9: 0xe000111a, 0x9bba: 0xe0000d0a, 0x9bbb: 0xe0000d07,\n\t0x9bbc: 0x0030d888, 0x9bbd: 0x4030d820, 0x9bbe: 0x00312088, 0x9bbf: 0x40312020,\n\t// Block 0x26f, offset 0x9bc0\n\t0x9bc0: 0xe0000024, 0x9bc1: 0xe0000029, 0x9bc2: 0xe000002e, 0x9bc3: 0xe0000033,\n\t0x9bc4: 0xe0000038, 0x9bc5: 0xe000003d, 0x9bc6: 0xe0000042, 0x9bc7: 0xe0000047,\n\t0x9bc8: 0xf0001f04, 0x9bc9: 0xf0001f04, 0x9bca: 0xf0001f04, 0x9bcb: 0xf0001f04,\n\t0x9bcc: 0xf0001f04, 0x9bcd: 0xf0001f04, 0x9bce: 0xf0001f04, 0x9bcf: 0xf0001f04,\n\t0x9bd0: 0xf0001f04, 0x9bd1: 0xf0000404, 0x9bd2: 0xf0000404, 0x9bd3: 0xf0000404,\n\t0x9bd4: 0xf0000404, 0x9bd5: 0xf0000404, 0x9bd6: 0xf0000404, 0x9bd7: 0xf0000404,\n\t0x9bd8: 0xf0000404, 0x9bd9: 0xf0000404, 0x9bda: 0xf0000404, 0x9bdb: 0xf0000404,\n\t0x9bdc: 0xf0000404, 0x9bdd: 0xf0000404, 0x9bde: 0xf0000404, 0x9bdf: 0xf0000404,\n\t0x9be0: 0xf0000404, 0x9be1: 0xf0000404, 0x9be2: 0xf0000404, 0x9be3: 0xf0000404,\n\t0x9be4: 0xf0000404, 0x9be5: 0xf0000404, 0x9be6: 0xf0000404, 0x9be7: 0xf0000404,\n\t0x9be8: 0xf0000404, 0x9be9: 0xf0000404, 0x9bea: 0xf0000404, 0x9beb: 0xf0000404,\n\t0x9bec: 0xf0000404, 0x9bed: 0xf0000404, 0x9bee: 0xf0000404, 0x9bef: 0xf0000404,\n\t0x9bf0: 0xf0000404, 0x9bf1: 0xf0000404, 0x9bf2: 0xe0002c46, 0x9bf3: 0xf0000404,\n\t0x9bf4: 0xf0000404, 0x9bf5: 0xf0000404, 0x9bf6: 0x002bde8c, 0x9bf7: 0x002c0a8c,\n\t0x9bf8: 0x002c3a8c, 0x9bf9: 0x002c628c, 0x9bfa: 0x002c988c, 0x9bfb: 0x002d088c,\n\t0x9bfc: 0x002d228c, 0x9bfd: 0x002d688c, 0x9bfe: 0x002d9a8c, 0x9bff: 0x002dcc8c,\n\t// Block 0x270, offset 0x9c00\n\t0x9c00: 0xf0001d1c, 0x9c01: 0xf0001d1c, 0x9c02: 0xf0001d1c, 0x9c03: 0xf0001d1c,\n\t0x9c04: 0xf0001d1c, 0x9c05: 0xf0001d1d, 0x9c06: 0xf0001d1d, 0x9c07: 0xf0001d1d,\n\t0x9c08: 0xe0000a6b, 0x9c09: 0xe0000cb4, 0x9c0a: 0xf0001d1c, 0x9c0b: 0xf0001d1c,\n\t0x9c0c: 0xf0001d1c, 0x9c0d: 0xf0001c1c, 0x9c0e: 0xf0001c1c, 0x9c0f: 0xf0001c1c,\n\t0x9c10: 0xf0001c1d, 0x9c11: 0xe0000cb9, 0x9c12: 0xe0000d36, 0x9c13: 0xe0000be3,\n\t0x9c14: 0xe0000fc5, 0x9c15: 0xf0001c1c, 0x9c16: 0xf0001c1c, 0x9c17: 0xf0001c1c,\n\t0x9c18: 0xf0001c1c, 0x9c19: 0xf0001c1c, 0x9c1a: 0xf0001c1c, 0x9c1b: 0xf0001c1c,\n\t0x9c1c: 0xf0001c1c, 0x9c1d: 0xf0001c1c, 0x9c1e: 0xf0001c1c, 0x9c1f: 0xe0000d3e,\n\t0x9c20: 0xe0000a72, 0x9c21: 0xf0001c1c, 0x9c22: 0xe0000cbd, 0x9c23: 0xe0000d42,\n\t0x9c24: 0xe0000a76, 0x9c25: 0xf0001c1c, 0x9c26: 0xe0000cc1, 0x9c27: 0xe0000d2d,\n\t0x9c28: 0xe0000d31, 0x9c29: 0xf0001c1d, 0x9c2a: 0xe0000cc5, 0x9c2b: 0xe0000d4a,\n\t0x9c2c: 0xe0000be7, 0x9c2d: 0xe0000f0b, 0x9c2e: 0xe0000f0f, 0x9c2f: 0xe0000f15,\n\t0x9c30: 0xf0001c1c, 0x9c31: 0xf0001c1c, 0x9c32: 0xf0001c1c, 0x9c33: 0xf0001c1c,\n\t0x9c34: 0xf0001d1c, 0x9c35: 0xf0001d1c, 0x9c36: 0xf0001d1c, 0x9c37: 0xf0001d1c,\n\t0x9c38: 0xf0001d1c, 0x9c39: 0xf0001d1d, 0x9c3a: 0xe00035df, 0x9c3b: 0xe00035cd,\n\t0x9c3c: 0xe0003600, 0x9c3d: 0xe00035af, 0x9c3e: 0xe0002812, 0x9c3f: 0xe00035b2,\n\t// Block 0x271, offset 0x9c40\n\t0x9c40: 0xf0001f04, 0x9c41: 0xf0001f04, 0x9c42: 0xf0001f04, 0x9c43: 0xf0001f04,\n\t0x9c44: 0xf0001f04, 0x9c45: 0xf0001f04, 0x9c46: 0xf0001f04, 0x9c47: 0xf0001f04,\n\t0x9c48: 0xf0001f04, 0x9c49: 0xf0001f04, 0x9c4a: 0xf0001f04,\n\t0x9c50: 0xf0000a04, 0x9c51: 0xf0000a04, 0x9c52: 0xf0000a04, 0x9c53: 0xf0000a04,\n\t0x9c54: 0xf0000a04, 0x9c55: 0xf0000a04, 0x9c56: 0xf0000a04, 0x9c57: 0xf0000a04,\n\t0x9c58: 0xf0000a04, 0x9c59: 0xf0000a04, 0x9c5a: 0xf0000a04, 0x9c5b: 0xf0000a04,\n\t0x9c5c: 0xf0000a04, 0x9c5d: 0xf0000a04, 0x9c5e: 0xf0000a04, 0x9c5f: 0xf0000a04,\n\t0x9c60: 0xf0000a04, 0x9c61: 0xf0000a04, 0x9c62: 0xf0000a04, 0x9c63: 0xf0000a04,\n\t0x9c64: 0xf0000a04, 0x9c65: 0xf0000a04, 0x9c66: 0xe0002c4a, 0x9c67: 0xf0000a04,\n\t0x9c68: 0xf0000a04, 0x9c69: 0xf0000a04, 0x9c6a: 0xf0000a04, 0x9c6b: 0x002c3a8c,\n\t0x9c6c: 0x002f7a8c, 0x9c6d: 0xf0000c0c, 0x9c6e: 0xe00035e8,\n\t0x9c70: 0x002bde9d, 0x9c71: 0x002c0a9d, 0x9c72: 0x002c3a9d, 0x9c73: 0x002c629d,\n\t0x9c74: 0x002c989d, 0x9c75: 0x002d089d, 0x9c76: 0x002d229d, 0x9c77: 0x002d689d,\n\t0x9c78: 0x002d9a9d, 0x9c79: 0x002dcc9d, 0x9c7a: 0x002dfe9d, 0x9c7b: 0x002e229d,\n\t0x9c7c: 0x002e829d, 0x9c7d: 0x002e9e9d, 0x9c7e: 0x002ee29d, 0x9c7f: 0x002f2c9d,\n\t// Block 0x272, offset 0x9c80\n\t0x9c80: 0xa0000000, 0x9c81: 0xa0000000, 0x9c82: 0xa0000000, 0x9c83: 0xa0000000,\n\t0x9c84: 0xa0000000, 0x9c85: 0xa0000000, 0x9c86: 0xa0000000, 0x9c87: 0xa0000000,\n\t0x9c88: 0xa0000000, 0x9c89: 0x40020020, 0x9c8a: 0x40020220, 0x9c8b: 0x40020420,\n\t0x9c8c: 0x40020620, 0x9c8d: 0x40020820, 0x9c8e: 0xa0000000, 0x9c8f: 0xa0000000,\n\t0x9c90: 0xa0000000, 0x9c91: 0xa0000000, 0x9c92: 0xa0000000, 0x9c93: 0xa0000000,\n\t0x9c94: 0xa0000000, 0x9c95: 0xa0000000, 0x9c96: 0xa0000000, 0x9c97: 0xa0000000,\n\t0x9c98: 0xa0000000, 0x9c99: 0xa0000000, 0x9c9a: 0xa0000000, 0x9c9b: 0xa0000000,\n\t0x9c9c: 0xa0000000, 0x9c9d: 0xa0000000, 0x9c9e: 0xa0000000, 0x9c9f: 0xa0000000,\n\t0x9ca0: 0x40021220, 0x9ca1: 0x4002ba20, 0x9ca2: 0x4003e020, 0x9ca3: 0x4004ea20,\n\t0x9ca4: 0x4027de20, 0x9ca5: 0x4004ec20, 0x9ca6: 0x4004e620, 0x9ca7: 0x4003d220,\n\t0x9ca8: 0x4003f420, 0x9ca9: 0x4003f620, 0x9caa: 0x4004d820, 0x9cab: 0x40093820,\n\t0x9cac: 0x40024020, 0x9cad: 0x40021a20, 0x9cae: 0x4002e420, 0x9caf: 0x4004e220,\n\t0x9cb0: 0x4029cc20, 0x9cb1: 0x4029ce20, 0x9cb2: 0x4029d020, 0x9cb3: 0x4029d220,\n\t0x9cb4: 0x4029d420, 0x9cb5: 0x4029d620, 0x9cb6: 0x4029d820, 0x9cb7: 0x4029da20,\n\t0x9cb8: 0x4029dc20, 0x9cb9: 0x4029de20, 0x9cba: 0x40026c20, 0x9cbb: 0x40026220,\n\t0x9cbc: 0x40094020, 0x9cbd: 0x40094220, 0x9cbe: 0x40094420, 0x9cbf: 0x4002c420,\n\t// Block 0x273, offset 0x9cc0\n\t0x9cc0: 0x4004d620, 0x9cc1: 0x002bde88, 0x9cc2: 0x002c0a88, 0x9cc3: 0x002c3a88,\n\t0x9cc4: 0x002c6288, 0x9cc5: 0x002c9888, 0x9cc6: 0x002d0888, 0x9cc7: 0x002d2288,\n\t0x9cc8: 0x002d6888, 0x9cc9: 0x002d9a88, 0x9cca: 0x002dcc88, 0x9ccb: 0x002dfe88,\n\t0x9ccc: 0xc0030002, 0x9ccd: 0x002e8288, 0x9cce: 0xc5852853, 0x9ccf: 0x002ee288,\n\t0x9cd0: 0x002f2c88, 0x9cd1: 0x002f5688, 0x9cd2: 0x002f7a88, 0x9cd3: 0x002fe688,\n\t0x9cd4: 0x00302c88, 0x9cd5: 0x00306c88, 0x9cd6: 0x0030be88, 0x9cd7: 0x0030e288,\n\t0x9cd8: 0x0030f688, 0x9cd9: 0x00310088, 0x9cda: 0x00312a88, 0x9cdb: 0x4003f820,\n\t0x9cdc: 0x4004e420, 0x9cdd: 0x4003fa20, 0x9cde: 0x40062420, 0x9cdf: 0x40021620,\n\t0x9ce0: 0x40061e20, 0x9ce1: 0x402bde20, 0x9ce2: 0x402c0a20, 0x9ce3: 0x402c3a20,\n\t0x9ce4: 0x402c6220, 0x9ce5: 0x402c9820, 0x9ce6: 0x402d0820, 0x9ce7: 0x402d2220,\n\t0x9ce8: 0x402d6820, 0x9ce9: 0x402d9a20, 0x9cea: 0x402dcc20, 0x9ceb: 0x402dfe20,\n\t0x9cec: 0xc0000002, 0x9ced: 0x402e8220, 0x9cee: 0xc5822822, 0x9cef: 0x402ee220,\n\t0x9cf0: 0x402f2c20, 0x9cf1: 0x402f5620, 0x9cf2: 0x402f7a20, 0x9cf3: 0x402fe620,\n\t0x9cf4: 0x40302c20, 0x9cf5: 0x40306c20, 0x9cf6: 0x4030be20, 0x9cf7: 0x4030e220,\n\t0x9cf8: 0x4030f620, 0x9cf9: 0x40310020, 0x9cfa: 0x40312a20, 0x9cfb: 0x4003fc20,\n\t0x9cfc: 0x40094820, 0x9cfd: 0x4003fe20, 0x9cfe: 0x40094c20, 0x9cff: 0xa0000000,\n\t// Block 0x274, offset 0x9d00\n\t0x9d01: 0x40417021, 0x9d02: 0x40417020, 0x9d03: 0x40417220,\n\t0x9d05: 0x40417020, 0x9d06: 0x40417220, 0x9d07: 0x40417420,\n\t0x9d08: 0x40417620, 0x9d09: 0x40417820, 0x9d0a: 0x40417a20, 0x9d0b: 0x40417c20,\n\t0x9d0c: 0x40418020, 0x9d0d: 0x40418420, 0x9d0f: 0x40418620,\n\t0x9d10: 0x40418820, 0x9d11: 0x40418a20, 0x9d13: 0x40418c20,\n\t0x9d14: 0x40418e20, 0x9d15: 0x40419020, 0x9d16: 0x40419220, 0x9d17: 0x40419420,\n\t0x9d18: 0x40419620, 0x9d19: 0x40419820, 0x9d1a: 0x40419a20, 0x9d1b: 0x40419c20,\n\t0x9d1c: 0x40419e20, 0x9d1d: 0x4041a020, 0x9d1e: 0x4041a220, 0x9d1f: 0x4041a420,\n\t0x9d20: 0x4041a620, 0x9d21: 0x4041a820, 0x9d22: 0x4041aa20, 0x9d23: 0x4041ac20,\n\t0x9d24: 0x4041ae20, 0x9d25: 0x4041b020, 0x9d26: 0x4041b220, 0x9d27: 0x4041b420,\n\t0x9d28: 0x4041b620, 0x9d2a: 0x4041b820, 0x9d2b: 0x4041ba20,\n\t0x9d2c: 0x4041bc20, 0x9d2d: 0x4041be20, 0x9d2e: 0x4041c020, 0x9d2f: 0x4041c220,\n\t0x9d30: 0x4041c420, 0x9d32: 0x4041c620, 0x9d33: 0x4041d220,\n\t0x9d35: 0x4041c820, 0x9d36: 0x4041ca20, 0x9d37: 0x4041cc20,\n\t0x9d38: 0x4041ce20, 0x9d39: 0x4041d020,\n\t0x9d3c: 0xa070f102, 0x9d3d: 0x4041d420, 0x9d3e: 0x4041d620, 0x9d3f: 0x4041d820,\n\t// Block 0x275, offset 0x9d40\n\t0x9d40: 0xa0000000, 0x9d41: 0xa0000000, 0x9d42: 0xa0000000, 0x9d43: 0xa0000000,\n\t0x9d44: 0xa0000000, 0x9d45: 0xa0000000, 0x9d46: 0xa0000000, 0x9d47: 0xa0000000,\n\t0x9d48: 0xa0000000, 0x9d49: 0x40020020, 0x9d4a: 0x40020220, 0x9d4b: 0x40020420,\n\t0x9d4c: 0x40020620, 0x9d4d: 0x40020820, 0x9d4e: 0xa0000000, 0x9d4f: 0xa0000000,\n\t0x9d50: 0xa0000000, 0x9d51: 0xa0000000, 0x9d52: 0xa0000000, 0x9d53: 0xa0000000,\n\t0x9d54: 0xa0000000, 0x9d55: 0xa0000000, 0x9d56: 0xa0000000, 0x9d57: 0xa0000000,\n\t0x9d58: 0xa0000000, 0x9d59: 0xa0000000, 0x9d5a: 0xa0000000, 0x9d5b: 0xa0000000,\n\t0x9d5c: 0xa0000000, 0x9d5d: 0xa0000000, 0x9d5e: 0xa0000000, 0x9d5f: 0xa0000000,\n\t0x9d60: 0x40021220, 0x9d61: 0x4002ba20, 0x9d62: 0x4003e020, 0x9d63: 0x4004ea20,\n\t0x9d64: 0x4027de20, 0x9d65: 0x4004ec20, 0x9d66: 0x4004e620, 0x9d67: 0xc58f26f2,\n\t0x9d68: 0x4003f420, 0x9d69: 0x4003f620, 0x9d6a: 0x4004d820, 0x9d6b: 0x40093820,\n\t0x9d6c: 0x40024020, 0x9d6d: 0x40021a20, 0x9d6e: 0x4002e420, 0x9d6f: 0x4004e220,\n\t0x9d70: 0x4029cc20, 0x9d71: 0x4029ce20, 0x9d72: 0x4029d020, 0x9d73: 0x4029d220,\n\t0x9d74: 0x4029d420, 0x9d75: 0x4029d620, 0x9d76: 0x4029d820, 0x9d77: 0x4029da20,\n\t0x9d78: 0x4029dc20, 0x9d79: 0x4029de20, 0x9d7a: 0x40026c20, 0x9d7b: 0x40026220,\n\t0x9d7c: 0x40094020, 0x9d7d: 0x40094220, 0x9d7e: 0x40094420, 0x9d7f: 0x4002c420,\n\t// Block 0x276, offset 0x9d80\n\t0x9d80: 0x4004d620, 0x9d81: 0x002bde88, 0x9d82: 0x002c0a88, 0x9d83: 0x002c3a88,\n\t0x9d84: 0x002c6288, 0x9d85: 0x002c9888, 0x9d86: 0x002d0888, 0x9d87: 0x002d2288,\n\t0x9d88: 0x002d6888, 0x9d89: 0x002d9a88, 0x9d8a: 0x002dcc88, 0x9d8b: 0x002dfe88,\n\t0x9d8c: 0xc0030002, 0x9d8d: 0x002e8288, 0x9d8e: 0x002e9e88, 0x9d8f: 0x002ee288,\n\t0x9d90: 0x002f2c88, 0x9d91: 0x002f5688, 0x9d92: 0x002f7a88, 0x9d93: 0xc58909c2,\n\t0x9d94: 0xc38a2722, 0x9d95: 0x00306c88, 0x9d96: 0x0030be88, 0x9d97: 0x0030e288,\n\t0x9d98: 0x0030f688, 0x9d99: 0x00310088, 0x9d9a: 0x00312a88, 0x9d9b: 0x4003f820,\n\t0x9d9c: 0x4004e420, 0x9d9d: 0x4003fa20, 0x9d9e: 0x40062420, 0x9d9f: 0x40021620,\n\t0x9da0: 0x40061e20, 0x9da1: 0x402bde20, 0x9da2: 0x402c0a20, 0x9da3: 0x402c3a20,\n\t0x9da4: 0x402c6220, 0x9da5: 0x402c9820, 0x9da6: 0x402d0820, 0x9da7: 0x402d2220,\n\t0x9da8: 0x402d6820, 0x9da9: 0x402d9a20, 0x9daa: 0x402dcc20, 0x9dab: 0x402dfe20,\n\t0x9dac: 0xc0000002, 0x9dad: 0x402e8220, 0x9dae: 0x402e9e20, 0x9daf: 0x402ee220,\n\t0x9db0: 0x402f2c20, 0x9db1: 0x402f5620, 0x9db2: 0x402f7a20, 0x9db3: 0xc34109b1,\n\t0x9db4: 0xc3882711, 0x9db5: 0x40306c20, 0x9db6: 0x4030be20, 0x9db7: 0x4030e220,\n\t0x9db8: 0x4030f620, 0x9db9: 0x40310020, 0x9dba: 0x40312a20, 0x9dbb: 0x4003fc20,\n\t0x9dbc: 0x40094820, 0x9dbd: 0x4003fe20, 0x9dbe: 0x40094c20, 0x9dbf: 0xa0000000,\n\t// Block 0x277, offset 0x9dc0\n\t0x9dc0: 0x402c1a20, 0x9dc1: 0x002c0c83, 0x9dc2: 0x002c3288, 0x9dc3: 0x402c3220,\n\t0x9dc4: 0x0031c488, 0x9dc5: 0x4031c420, 0x9dc6: 0x002efa88, 0x9dc7: 0x002c4e88,\n\t0x9dc8: 0x402c4e20, 0x9dc9: 0x002c7288, 0x9dca: 0x002c6483, 0x9dcb: 0x002c8488,\n\t0x9dcc: 0x402c8420, 0x9dcd: 0xe000115c, 0x9dce: 0x002cae88, 0x9dcf: 0x002cb888,\n\t0x9dd0: 0x002cc288, 0x9dd1: 0x002d1688, 0x9dd2: 0x402d1620, 0x9dd3: 0x002d4488,\n\t0x9dd4: 0x002d5888, 0x9dd5: 0x402d7820, 0x9dd6: 0x002dc288, 0x9dd7: 0x002db688,\n\t0x9dd8: 0x002e0083, 0x9dd9: 0x402e0020, 0x9dda: 0x402e3820, 0x9ddb: 0x402e7220,\n\t0x9ddc: 0x0030a088, 0x9ddd: 0x002eb488, 0x9dde: 0x402ebc20, 0x9ddf: 0x002f1088,\n\t0x9de0: 0xe0000e56, 0x9de1: 0xe0000e53, 0x9de2: 0x002d6088, 0x9de3: 0x402d6020,\n\t0x9de4: 0x002f3e88, 0x9de5: 0x402f3e20, 0x9de6: 0x002f8288, 0x9de7: 0x0031b488,\n\t0x9de8: 0x4031b420, 0x9de9: 0x00300888, 0x9dea: 0x40301220, 0x9deb: 0x40304220,\n\t0x9dec: 0x00304a88, 0x9ded: 0x40304a20, 0x9dee: 0x00305288, 0x9def: 0xe000105f,\n\t0x9df0: 0xe000105c, 0x9df1: 0x0030b488, 0x9df2: 0x0030cc88, 0x9df3: 0x00310285,\n\t0x9df4: 0x40310220, 0x9df5: 0x00313488, 0x9df6: 0x40313420, 0x9df7: 0x00316488,\n\t0x9df8: 0x00316e88, 0x9df9: 0x40316e20, 0x9dfa: 0x40317820, 0x9dfb: 0x4031a620,\n\t0x9dfc: 0x0031bc88, 0x9dfd: 0x4031bc20, 0x9dfe: 0xe0000fc9, 0x9dff: 0x40319420,\n\t// Block 0x278, offset 0x9e00\n\t0x9e00: 0x40315820, 0x9e01: 0x0031d488, 0x9e02: 0x4031d420, 0x9e03: 0x002c1a88,\n\t0x9e04: 0x00307c88, 0x9e05: 0x0030da88, 0x9e06: 0x002ca288, 0x9e07: 0x402ca220,\n\t0x9e08: 0x002dde88, 0x9e09: 0x402dde20, 0x9e0a: 0x002f6a88, 0x9e0b: 0x402f6a20,\n\t0x9e0c: 0x002f8e88, 0x9e0d: 0x402f8e20, 0x9e0e: 0x00311088, 0x9e0f: 0x40311020,\n\t0x9e10: 0x402bf020, 0x9e11: 0x402bf820, 0x9e12: 0x402c0220, 0x9e13: 0x402c0c20,\n\t0x9e14: 0x402efa20, 0x9e15: 0x402c5620, 0x9e16: 0x402c7220, 0x9e17: 0x402c6420,\n\t0x9e18: 0x402ccc20, 0x9e19: 0x402cb820, 0x9e1a: 0x402cd420, 0x9e1b: 0x402cc220,\n\t0x9e1c: 0x402cdc20, 0x9e1d: 0x402ce820, 0x9e1e: 0x402cf020, 0x9e1f: 0x402dee20,\n\t0x9e20: 0x402d4420, 0x9e21: 0x402d2a20, 0x9e22: 0x402d3220, 0x9e23: 0x402d5820,\n\t0x9e24: 0x402d0020, 0x9e25: 0x40308820, 0x9e26: 0x402d8020, 0x9e27: 0x402d8e20,\n\t0x9e28: 0x402db620, 0x9e29: 0x402dc220, 0x9e2a: 0x402daa20, 0x9e2b: 0x402e4220,\n\t0x9e2c: 0x402e4a20, 0x9e2d: 0x402e5420, 0x9e2e: 0x402e6820, 0x9e2f: 0x4030a020,\n\t0x9e30: 0x4030ac20, 0x9e31: 0x402e9020, 0x9e32: 0x402eb420, 0x9e33: 0x402ec820,\n\t0x9e34: 0x402ea620, 0x9e35: 0x402f1020, 0x9e36: 0x402eee20, 0x9e37: 0x402f1a20,\n\t0x9e38: 0x402f4c20, 0x9e39: 0x402f9820, 0x9e3a: 0x402fa220, 0x9e3b: 0x402fac20,\n\t0x9e3c: 0x402fb620, 0x9e3d: 0x402fbe20, 0x9e3e: 0x402fc620, 0x9e3f: 0x402fd020,\n\t// Block 0x279, offset 0x9e40\n\t0x9e40: 0x402f8220, 0x9e41: 0x402fd820, 0x9e42: 0x402ff420, 0x9e43: 0x40300820,\n\t0x9e44: 0x402df620, 0x9e45: 0x40301a20, 0x9e46: 0x40302420, 0x9e47: 0x40306420,\n\t0x9e48: 0x40305220, 0x9e49: 0x40307c20, 0x9e4a: 0x4030b420, 0x9e4b: 0x4030cc20,\n\t0x9e4c: 0x4030da20, 0x9e4d: 0x4030ee20, 0x9e4e: 0x402e7a20, 0x9e4f: 0x40310820,\n\t0x9e50: 0x40314820, 0x9e51: 0x40315020, 0x9e52: 0x40316420, 0x9e53: 0x40318020,\n\t0x9e54: 0x4031cc20, 0x9e55: 0x4031e820, 0x9e56: 0x40320a20, 0x9e57: 0x40323220,\n\t0x9e58: 0x40323a20, 0x9e59: 0x402c1220, 0x9e5a: 0x402cf820, 0x9e5b: 0x402d4c20,\n\t0x9e5c: 0x402d7020, 0x9e5d: 0x402de620, 0x9e5e: 0x402e1a20, 0x9e5f: 0x402e2a20,\n\t0x9e60: 0x402f6220, 0x9e61: 0x4031fa20, 0x9e62: 0x40320220, 0x9e63: 0xe0000aca,\n\t0x9e64: 0xe0000adc, 0x9e65: 0xe0000ad9, 0x9e66: 0xe0000fcc, 0x9e67: 0xe0000fcf,\n\t0x9e68: 0xe0000fba, 0x9e69: 0xe0000ba1, 0x9e6a: 0xe0000d11, 0x9e6b: 0xe0000d18,\n\t0x9e6c: 0x40324220, 0x9e6d: 0x40324a20, 0x9e6e: 0x40309020, 0x9e6f: 0x40309820,\n\t0x9e70: 0x002d6894, 0x9e71: 0x002d8094, 0x9e72: 0x002dcc94, 0x9e73: 0x002f7a94,\n\t0x9e74: 0x002f9894, 0x9e75: 0x002fac94, 0x9e76: 0x002fd894, 0x9e77: 0x0030e294,\n\t0x9e78: 0x00310094, 0x9e79: 0x40064020, 0x9e7a: 0x40064420, 0x9e7b: 0x402d9620,\n\t0x9e7c: 0xc58c26f2, 0x9e7d: 0x402d9820, 0x9e7e: 0x4031e220, 0x9e7f: 0x4031f020,\n\t// Block 0x27a, offset 0x9e80\n\t0x9e80: 0xa0000000, 0x9e81: 0xa0000000, 0x9e82: 0xa0000000, 0x9e83: 0xa0000000,\n\t0x9e84: 0xa0000000, 0x9e85: 0xa0000000, 0x9e86: 0xa0000000, 0x9e87: 0xa0000000,\n\t0x9e88: 0xa0000000, 0x9e89: 0x40020020, 0x9e8a: 0x40020220, 0x9e8b: 0x40020420,\n\t0x9e8c: 0x40020620, 0x9e8d: 0x40020820, 0x9e8e: 0xa0000000, 0x9e8f: 0xa0000000,\n\t0x9e90: 0xa0000000, 0x9e91: 0xa0000000, 0x9e92: 0xa0000000, 0x9e93: 0xa0000000,\n\t0x9e94: 0xa0000000, 0x9e95: 0xa0000000, 0x9e96: 0xa0000000, 0x9e97: 0xa0000000,\n\t0x9e98: 0xa0000000, 0x9e99: 0xa0000000, 0x9e9a: 0xa0000000, 0x9e9b: 0xa0000000,\n\t0x9e9c: 0xa0000000, 0x9e9d: 0xa0000000, 0x9e9e: 0xa0000000, 0x9e9f: 0xa0000000,\n\t0x9ea0: 0x40021220, 0x9ea1: 0x4002ba20, 0x9ea2: 0x4003e020, 0x9ea3: 0x4004ea20,\n\t0x9ea4: 0x4027de20, 0x9ea5: 0x4004ec20, 0x9ea6: 0x4004e620, 0x9ea7: 0x4003d220,\n\t0x9ea8: 0x4003f420, 0x9ea9: 0x4003f620, 0x9eaa: 0x4004d820, 0x9eab: 0x40093820,\n\t0x9eac: 0x40024020, 0x9ead: 0x40021a20, 0x9eae: 0x4002e420, 0x9eaf: 0x4004e220,\n\t0x9eb0: 0x4029cc20, 0x9eb1: 0x4029ce20, 0x9eb2: 0x4029d020, 0x9eb3: 0x4029d220,\n\t0x9eb4: 0x4029d420, 0x9eb5: 0x4029d620, 0x9eb6: 0x4029d820, 0x9eb7: 0x4029da20,\n\t0x9eb8: 0x4029dc20, 0x9eb9: 0x4029de20, 0x9eba: 0x40026c20, 0x9ebb: 0x40026220,\n\t0x9ebc: 0x40094020, 0x9ebd: 0x40094220, 0x9ebe: 0x40094420, 0x9ebf: 0x4002c420,\n\t// Block 0x27b, offset 0x9ec0\n\t0x9ec0: 0x4004d620, 0x9ec1: 0x002bde83, 0x9ec2: 0x002c0a88, 0x9ec3: 0x002c3a88,\n\t0x9ec4: 0x002c6288, 0x9ec5: 0x002be083, 0x9ec6: 0x002d0888, 0x9ec7: 0x002d2288,\n\t0x9ec8: 0x002be883, 0x9ec9: 0x002be283, 0x9eca: 0x002dcc88, 0x9ecb: 0x002bea83,\n\t0x9ecc: 0xc5950002, 0x9ecd: 0x002bee83, 0x9ece: 0x002bf083, 0x9ecf: 0x002be483,\n\t0x9ed0: 0x002bf283, 0x9ed1: 0x002f5688, 0x9ed2: 0x002f7a88, 0x9ed3: 0x002fe688,\n\t0x9ed4: 0x00302c88, 0x9ed5: 0x002be683, 0x9ed6: 0x0030be88, 0x9ed7: 0x002bf483,\n\t0x9ed8: 0x0030f688, 0x9ed9: 0x00310088, 0x9eda: 0x00312a88, 0x9edb: 0x4003f820,\n\t0x9edc: 0x4004e420, 0x9edd: 0x4003fa20, 0x9ede: 0x40062420, 0x9edf: 0x40021620,\n\t0x9ee0: 0x40061e20, 0x9ee1: 0x402bde20, 0x9ee2: 0x402c0a20, 0x9ee3: 0x402c3a20,\n\t0x9ee4: 0x402c6220, 0x9ee5: 0x402be020, 0x9ee6: 0x402d0820, 0x9ee7: 0x402d2220,\n\t0x9ee8: 0x402be820, 0x9ee9: 0x402be220, 0x9eea: 0x402dcc20, 0x9eeb: 0x402bea20,\n\t0x9eec: 0xc5920002, 0x9eed: 0x402bee20, 0x9eee: 0x402bf020, 0x9eef: 0x402be420,\n\t0x9ef0: 0x402bf220, 0x9ef1: 0x402f5620, 0x9ef2: 0x402f7a20, 0x9ef3: 0x402fe620,\n\t0x9ef4: 0x40302c20, 0x9ef5: 0x402be620, 0x9ef6: 0x4030be20, 0x9ef7: 0x402bf420,\n\t0x9ef8: 0x4030f620, 0x9ef9: 0x40310020, 0x9efa: 0x40312a20, 0x9efb: 0x4003fc20,\n\t0x9efc: 0x40094820, 0x9efd: 0x4003fe20, 0x9efe: 0x40094c20, 0x9eff: 0xa0000000,\n\t// Block 0x27c, offset 0x9f00\n\t0x9f00: 0xe000382a, 0x9f01: 0xe0003827, 0x9f02: 0xe0003840, 0x9f03: 0xe0003864,\n\t0x9f04: 0xe000385d, 0x9f05: 0xe0003856, 0x9f06: 0xe00009dd, 0x9f07: 0xe0000a53,\n\t0x9f08: 0xe0003894, 0x9f09: 0xe000388e, 0x9f0a: 0xe00038a0, 0x9f0b: 0xe00038cc,\n\t0x9f0c: 0xe000393a, 0x9f0d: 0xe0003934, 0x9f0e: 0xe0003946, 0x9f0f: 0xe0003952,\n\t0x9f10: 0xe0000ab3, 0x9f11: 0xe0003be8, 0x9f12: 0xe0003999, 0x9f13: 0xe0003993,\n\t0x9f14: 0xe00039a5, 0x9f15: 0xe00039e5, 0x9f16: 0xe00039d1, 0x9f17: 0x40093e20,\n\t0x9f18: 0xe0000e12, 0x9f19: 0xe0003a89, 0x9f1a: 0xe0003a83, 0x9f1b: 0xe0003a95,\n\t0x9f1c: 0xe0003aa7, 0x9f1d: 0xe0001102, 0x9f1e: 0x00318888, 0x9f1f: 0xe0000f7b,\n\t0x9f20: 0xe00008f2, 0x9f21: 0xe00008ec, 0x9f22: 0xe000091e, 0x9f23: 0xe0000966,\n\t0x9f24: 0xe0000958, 0x9f25: 0xe000094a, 0x9f26: 0xe00009d5, 0x9f27: 0xe0000a4d,\n\t0x9f28: 0xe0003891, 0x9f29: 0xe000388b, 0x9f2a: 0xe000389d, 0x9f2b: 0xe00038c9,\n\t0x9f2c: 0xe0003937, 0x9f2d: 0xe0003931, 0x9f2e: 0xe0003943, 0x9f2f: 0xe000394f,\n\t0x9f30: 0xe0000aad, 0x9f31: 0xe0003be5, 0x9f32: 0xe0003996, 0x9f33: 0xe0003990,\n\t0x9f34: 0xe00039a2, 0x9f35: 0xe00039e2, 0x9f36: 0xe00039ce, 0x9f37: 0x40093c20,\n\t0x9f38: 0xe0000e0f, 0x9f39: 0xe0003a86, 0x9f3a: 0xe0003a80, 0x9f3b: 0xe0003a92,\n\t0x9f3c: 0xe0003aa4, 0x9f3d: 0xe00010ff, 0x9f3e: 0x40318820, 0x9f3f: 0xe0001114,\n\t// Block 0x27d, offset 0x9f40\n\t0x9f40: 0xe0003871, 0x9f41: 0xe0000980, 0x9f42: 0xe000382d, 0x9f43: 0xe00008f8,\n\t0x9f44: 0xe000386e, 0x9f45: 0xe000097a, 0x9f46: 0xe0000a38, 0x9f47: 0xe0000a35,\n\t0x9f48: 0xe0000a3e, 0x9f49: 0xe0000a3b, 0x9f4a: 0xe0000a4a, 0x9f4b: 0xe0000a47,\n\t0x9f4c: 0xe0000a44, 0x9f4d: 0xe0000a41, 0x9f4e: 0xe0000a86, 0x9f4f: 0xe0000a83,\n\t0x9f50: 0xe0000aaa, 0x9f51: 0xe0000aa7, 0x9f52: 0xe00038f2, 0x9f53: 0xe00038ef,\n\t0x9f54: 0xe000389a, 0x9f55: 0xe0003897, 0x9f56: 0xe00038d8, 0x9f57: 0xe00038d5,\n\t0x9f58: 0xe00038ec, 0x9f59: 0xe00038e9, 0x9f5a: 0xe00038c6, 0x9f5b: 0xe00038c3,\n\t0x9f5c: 0xe0000bb8, 0x9f5d: 0xe0000bb5, 0x9f5e: 0xe0000bb2, 0x9f5f: 0xe0000baf,\n\t0x9f60: 0xe0000bc4, 0x9f61: 0xe0000bc1, 0x9f62: 0xe0000bca, 0x9f63: 0xe0000bc7,\n\t0x9f64: 0xe0003b4d, 0x9f65: 0xe0003b4a, 0x9f66: 0xe0000c1b, 0x9f67: 0xe0000c18,\n\t0x9f68: 0xe0003960, 0x9f69: 0xe000395d, 0x9f6a: 0xe000396f, 0x9f6b: 0xe000396c,\n\t0x9f6c: 0xe0003940, 0x9f6d: 0xe000393d, 0x9f6e: 0xe0003969, 0x9f6f: 0xe0003966,\n\t0x9f70: 0xe0003963, 0x9f71: 0x402da220, 0x9f72: 0xe00027e2, 0x9f73: 0xe00027df,\n\t0x9f74: 0xe0000c8a, 0x9f75: 0xe0000c87, 0x9f76: 0xe0003b86, 0x9f77: 0xe0003b83,\n\t0x9f78: 0x402f7220, 0x9f79: 0xe0003b98, 0x9f7a: 0xe0003b95, 0x9f7b: 0xe0003ba4,\n\t0x9f7c: 0xe0003ba1, 0x9f7d: 0xe0003b9e, 0x9f7e: 0xe0003b9b, 0x9f7f: 0xe0000d04,\n\t// Block 0x27e, offset 0x9f80\n\t0x9f80: 0xe0000cfe, 0x9f81: 0xe0000cf8, 0x9f82: 0xe0000cf5, 0x9f83: 0xe0003bd6,\n\t0x9f84: 0xe0003bd3, 0x9f85: 0xe0003bf4, 0x9f86: 0xe0003bf1, 0x9f87: 0xe0003be2,\n\t0x9f88: 0xe0003bdf, 0x9f89: 0xe00035eb, 0x9f8a: 0x002eda88, 0x9f8b: 0x402eda20,\n\t0x9f8c: 0xe0003a1f, 0x9f8d: 0xe0003a1c, 0x9f8e: 0xe000399f, 0x9f8f: 0xe000399c,\n\t0x9f90: 0xe00039df, 0x9f91: 0xe00039dc, 0x9f92: 0xe0000e93, 0x9f93: 0xe0000e8f,\n\t0x9f94: 0xe0000eca, 0x9f95: 0xe0000ec7, 0x9f96: 0xe0000edc, 0x9f97: 0xe0000ed9,\n\t0x9f98: 0xe0000ed0, 0x9f99: 0xe0000ecd, 0x9f9a: 0xe0000f1f, 0x9f9b: 0xe0000f1c,\n\t0x9f9c: 0xe0000f2d, 0x9f9d: 0xe0000f2a, 0x9f9e: 0xe0000f47, 0x9f9f: 0xe0000f44,\n\t0x9fa0: 0xe0000f33, 0x9fa1: 0xe0000f30, 0x9fa2: 0xe0000f99, 0x9fa3: 0xe0000f96,\n\t0x9fa4: 0xe0000f8a, 0x9fa5: 0xe0000f87, 0x9fa6: 0x00303688, 0x9fa7: 0x40303620,\n\t0x9fa8: 0xe0003ad3, 0x9fa9: 0xe0003ad0, 0x9faa: 0xe0003ae7, 0x9fab: 0xe0003ae4,\n\t0x9fac: 0xe0003a8f, 0x9fad: 0xe0003a8c, 0x9fae: 0xe0003aa1, 0x9faf: 0xe0003a9e,\n\t0x9fb0: 0xe0003acd, 0x9fb1: 0xe0003aca, 0x9fb2: 0xe0003ae1, 0x9fb3: 0xe0003ade,\n\t0x9fb4: 0xe0003c24, 0x9fb5: 0xe0003c21, 0x9fb6: 0xe000110e, 0x9fb7: 0xe000110b,\n\t0x9fb8: 0xe0001117, 0x9fb9: 0xe000113b, 0x9fba: 0xe0001138, 0x9fbb: 0xe000114d,\n\t0x9fbc: 0xe000114a, 0x9fbd: 0xe0001147, 0x9fbe: 0xe0001144, 0x9fbf: 0xe0000f64,\n\t// Block 0x27f, offset 0x9fc0\n\t0x9fc0: 0x402c1a20, 0x9fc1: 0x002c2a88, 0x9fc2: 0x002c3288, 0x9fc3: 0x402c3220,\n\t0x9fc4: 0x0031c488, 0x9fc5: 0x4031c420, 0x9fc6: 0x002efa88, 0x9fc7: 0x002c4e88,\n\t0x9fc8: 0x402c4e20, 0x9fc9: 0x002c7288, 0x9fca: 0x002c7a88, 0x9fcb: 0x002c8488,\n\t0x9fcc: 0x402c8420, 0x9fcd: 0xe000115c, 0x9fce: 0x002cae88, 0x9fcf: 0x002cb888,\n\t0x9fd0: 0x002cc288, 0x9fd1: 0x002d1688, 0x9fd2: 0x402d1620, 0x9fd3: 0x002d4488,\n\t0x9fd4: 0x002d5888, 0x9fd5: 0x402d7820, 0x9fd6: 0x002dc288, 0x9fd7: 0x002db688,\n\t0x9fd8: 0x002e0a88, 0x9fd9: 0x402e0a20, 0x9fda: 0x402e3820, 0x9fdb: 0x402e7220,\n\t0x9fdc: 0x0030a088, 0x9fdd: 0x002eb488, 0x9fde: 0x402ebc20, 0x9fdf: 0x002f1088,\n\t0x9fe0: 0xe0003a47, 0x9fe1: 0xe0003a44, 0x9fe2: 0x002d6088, 0x9fe3: 0x402d6020,\n\t0x9fe4: 0x002f3e88, 0x9fe5: 0x402f3e20, 0x9fe6: 0x002f8288, 0x9fe7: 0x0031b488,\n\t0x9fe8: 0x4031b420, 0x9fe9: 0x00300888, 0x9fea: 0x40301220, 0x9feb: 0x40304220,\n\t0x9fec: 0x00304a88, 0x9fed: 0x40304a20, 0x9fee: 0x00305288, 0x9fef: 0xe0003b07,\n\t0x9ff0: 0xe0003b04, 0x9ff1: 0x0030b488, 0x9ff2: 0x0030cc88, 0x9ff3: 0x00311888,\n\t0x9ff4: 0x40311820, 0x9ff5: 0x00313488, 0x9ff6: 0x40313420, 0x9ff7: 0x00316488,\n\t0x9ff8: 0x00316e88, 0x9ff9: 0x40316e20, 0x9ffa: 0x40317820, 0x9ffb: 0x4031a620,\n\t0x9ffc: 0x0031bc88, 0x9ffd: 0x4031bc20, 0x9ffe: 0xe0000fc9, 0x9fff: 0x40319420,\n\t// Block 0x280, offset 0xa000\n\t0xa000: 0x40321220, 0xa001: 0x40321a20, 0xa002: 0x40322220, 0xa003: 0x40322a20,\n\t0xa004: 0xe0000ad5, 0xa005: 0xe0000ad1, 0xa006: 0xe0000acd, 0xa007: 0xe000357f,\n\t0xa008: 0xe000357c, 0xa009: 0xe0003579, 0xa00a: 0xe00035c4, 0xa00b: 0xe00035c1,\n\t0xa00c: 0xe00035be, 0xa00d: 0xe0003853, 0xa00e: 0xe0000944, 0xa00f: 0xe000394c,\n\t0xa010: 0xe0003949, 0xa011: 0xe00039cb, 0xa012: 0xe00039c8, 0xa013: 0xe0003a9b,\n\t0xa014: 0xe0003a98, 0xa015: 0xe0003ac6, 0xa016: 0xe0003ac2, 0xa017: 0xe0003aae,\n\t0xa018: 0xe0003aaa, 0xa019: 0xe0003abe, 0xa01a: 0xe0003aba, 0xa01b: 0xe0003ab6,\n\t0xa01c: 0xe0003ab2, 0xa01d: 0x402cae20, 0xa01e: 0xe0003860, 0xa01f: 0xe000095e,\n\t0xa020: 0xe000386a, 0xa021: 0xe0000972, 0xa022: 0xe00009f4, 0xa023: 0xe00009ef,\n\t0xa024: 0x002d3a88, 0xa025: 0x402d3a20, 0xa026: 0xe0000bbe, 0xa027: 0xe0000bbb,\n\t0xa028: 0xe0003b80, 0xa029: 0xe0003b7d, 0xa02a: 0xe0003a11, 0xa02b: 0xe0003a0e,\n\t0xa02c: 0xe0003a18, 0xa02d: 0xe0003a14, 0xa02e: 0xe0001162, 0xa02f: 0xe000115f,\n\t0xa030: 0xe0000c8d, 0xa031: 0xf0000a0a, 0xa032: 0xf000040a, 0xa033: 0xf0000404,\n\t0xa034: 0xe0000bac, 0xa035: 0xe0000ba9, 0xa036: 0x002d7888, 0xa037: 0x00319488,\n\t0xa038: 0xe0003bdc, 0xa039: 0xe0003bd9, 0xa03a: 0xe0003859, 0xa03b: 0xe0000950,\n\t0xa03c: 0xe00009ea, 0xa03d: 0xe00009e5, 0xa03e: 0xe0000e19, 0xa03f: 0xe0000e15,\n\t// Block 0x281, offset 0xa040\n\t0xa040: 0xe0003877, 0xa041: 0xe000098c, 0xa042: 0xe000387a, 0xa043: 0xe0000992,\n\t0xa044: 0xe000390e, 0xa045: 0xe000390b, 0xa046: 0xe0003914, 0xa047: 0xe0003911,\n\t0xa048: 0xe000397b, 0xa049: 0xe0003978, 0xa04a: 0xe0003981, 0xa04b: 0xe000397e,\n\t0xa04c: 0xe0003a3b, 0xa04d: 0xe0003a38, 0xa04e: 0xe0003a41, 0xa04f: 0xe0003a3e,\n\t0xa050: 0xe0000ee8, 0xa051: 0xe0000ee5, 0xa052: 0xe0000eee, 0xa053: 0xe0000eeb,\n\t0xa054: 0xe0003afb, 0xa055: 0xe0003af8, 0xa056: 0xe0003b01, 0xa057: 0xe0003afe,\n\t0xa058: 0xe0000f61, 0xa059: 0xe0000f5e, 0xa05a: 0xe0000fa5, 0xa05b: 0xe0000fa2,\n\t0xa05c: 0x00312288, 0xa05d: 0x40312220, 0xa05e: 0xe0003b53, 0xa05f: 0xe0003b50,\n\t0xa060: 0x002ebc88, 0xa061: 0x402c8c20, 0xa062: 0x002f2288, 0xa063: 0x402f2220,\n\t0xa064: 0x00314088, 0xa065: 0x40314020, 0xa066: 0xe0003867, 0xa067: 0xe000096c,\n\t0xa068: 0xe00038de, 0xa069: 0xe00038db, 0xa06a: 0xe00039d8, 0xa06b: 0xe00039d4,\n\t0xa06c: 0xe00039fc, 0xa06d: 0xe00039f8, 0xa06e: 0xe0003a03, 0xa06f: 0xe0003a00,\n\t0xa070: 0xe0003a0a, 0xa071: 0xe0003a06, 0xa072: 0xe0001129, 0xa073: 0xe0001126,\n\t0xa074: 0x402e5e20, 0xa075: 0x402ed020, 0xa076: 0x40305a20, 0xa077: 0x402dd420,\n\t0xa078: 0xe0000abf, 0xa079: 0xe0000ec4, 0xa07a: 0x002be888, 0xa07b: 0x002c4488,\n\t0xa07c: 0x402c4420, 0xa07d: 0x002e3888, 0xa07e: 0x00303e88, 0xa07f: 0x402ffc20,\n\t// Block 0x282, offset 0xa080\n\t0xa080: 0x402f8220, 0xa081: 0x402fd820, 0xa082: 0x402ff420, 0xa083: 0x40300820,\n\t0xa084: 0x402df620, 0xa085: 0x40301a20, 0xa086: 0x40302420, 0xa087: 0x40306420,\n\t0xa088: 0x40305220, 0xa089: 0x40307c20, 0xa08a: 0x4030b420, 0xa08b: 0x4030cc20,\n\t0xa08c: 0x4030da20, 0xa08d: 0x4030ee20, 0xa08e: 0x402e7a20, 0xa08f: 0x40310820,\n\t0xa090: 0x40314820, 0xa091: 0x40315020, 0xa092: 0x40316420, 0xa093: 0x40318020,\n\t0xa094: 0x4031cc20, 0xa095: 0x4031e820, 0xa096: 0x40320a20, 0xa097: 0x40323220,\n\t0xa098: 0x40323a20, 0xa099: 0x402c1220, 0xa09a: 0x402cf820, 0xa09b: 0x402d4c20,\n\t0xa09c: 0x402d7020, 0xa09d: 0x402de620, 0xa09e: 0x402e1a20, 0xa09f: 0x402e2a20,\n\t0xa0a0: 0x402f6220, 0xa0a1: 0x4031fa20, 0xa0a2: 0x40320220, 0xa0a3: 0xe0000aca,\n\t0xa0a4: 0xe0000adc, 0xa0a5: 0xe0000ad9, 0xa0a6: 0xe0000fcc, 0xa0a7: 0xe0000fcf,\n\t0xa0a8: 0xe0000fba, 0xa0a9: 0xe0000ba1, 0xa0aa: 0xe0000d11, 0xa0ab: 0xe0000d18,\n\t0xa0ac: 0x40324220, 0xa0ad: 0x40324a20, 0xa0ae: 0x40309020, 0xa0af: 0x40309820,\n\t0xa0b0: 0x002d6894, 0xa0b1: 0x002d8094, 0xa0b2: 0x002dcc94, 0xa0b3: 0x002f7a94,\n\t0xa0b4: 0x002f9894, 0xa0b5: 0x002fac94, 0xa0b6: 0x002fd894, 0xa0b7: 0x0030e294,\n\t0xa0b8: 0x00310094, 0xa0b9: 0x40064020, 0xa0ba: 0x40064420, 0xa0bb: 0x402bf620,\n\t0xa0bc: 0x4031de20, 0xa0bd: 0x402d9820, 0xa0be: 0x4031e220, 0xa0bf: 0x4031f020,\n\t// Block 0x283, offset 0xa0c0\n\t0xa0c0: 0xe0003888, 0xa0c1: 0xe00009ae, 0xa0c2: 0xe0000a22, 0xa0c3: 0xe0000a1f,\n\t0xa0c4: 0xe0000a28, 0xa0c5: 0xe0000a25, 0xa0c6: 0xe0000a2e, 0xa0c7: 0xe0000a2b,\n\t0xa0c8: 0xe0000a5a, 0xa0c9: 0xe0000a56, 0xa0ca: 0xe0000a8c, 0xa0cb: 0xe0000a89,\n\t0xa0cc: 0xe0000a98, 0xa0cd: 0xe0000a95, 0xa0ce: 0xe0000aa4, 0xa0cf: 0xe0000aa1,\n\t0xa0d0: 0xe0000a92, 0xa0d1: 0xe0000a8f, 0xa0d2: 0xe0000a9e, 0xa0d3: 0xe0000a9b,\n\t0xa0d4: 0xe0003901, 0xa0d5: 0xe00038fd, 0xa0d6: 0xe00038f9, 0xa0d7: 0xe00038f5,\n\t0xa0d8: 0xe0003928, 0xa0d9: 0xe0003925, 0xa0da: 0xe000392e, 0xa0db: 0xe000392b,\n\t0xa0dc: 0xe00038e5, 0xa0dd: 0xe00038e1, 0xa0de: 0xe0000b8c, 0xa0df: 0xe0000b89,\n\t0xa0e0: 0xe0000bd0, 0xa0e1: 0xe0000bcd, 0xa0e2: 0xe0003b5f, 0xa0e3: 0xe0003b5c,\n\t0xa0e4: 0xe0003b6b, 0xa0e5: 0xe0003b68, 0xa0e6: 0xe0003b59, 0xa0e7: 0xe0003b56,\n\t0xa0e8: 0xe0003b65, 0xa0e9: 0xe0003b62, 0xa0ea: 0xe0003b71, 0xa0eb: 0xe0003b6e,\n\t0xa0ec: 0xe000398d, 0xa0ed: 0xe000398a, 0xa0ee: 0xe0003959, 0xa0ef: 0xe0003955,\n\t0xa0f0: 0xe0003b7a, 0xa0f1: 0xe0003b77, 0xa0f2: 0xe0003b8c, 0xa0f3: 0xe0003b89,\n\t0xa0f4: 0xe0003b92, 0xa0f5: 0xe0003b8f, 0xa0f6: 0xe0003baa, 0xa0f7: 0xe0003ba7,\n\t0xa0f8: 0xe0003bb1, 0xa0f9: 0xe0003bad, 0xa0fa: 0xe0003bbe, 0xa0fb: 0xe0003bbb,\n\t0xa0fc: 0xe0003bb8, 0xa0fd: 0xe0003bb5, 0xa0fe: 0xe0003bc4, 0xa0ff: 0xe0003bc1,\n\t// Block 0x284, offset 0xa100\n\t0xa100: 0xe0003bca, 0xa101: 0xe0003bc7, 0xa102: 0xe0003bd0, 0xa103: 0xe0003bcd,\n\t0xa104: 0xe0003bee, 0xa105: 0xe0003beb, 0xa106: 0xe0003bfa, 0xa107: 0xe0003bf7,\n\t0xa108: 0xe0003c06, 0xa109: 0xe0003c03, 0xa10a: 0xe0003c00, 0xa10b: 0xe0003bfd,\n\t0xa10c: 0xe00039ec, 0xa10d: 0xe00039e8, 0xa10e: 0xe00039f4, 0xa10f: 0xe00039f0,\n\t0xa110: 0xe0003a2e, 0xa111: 0xe0003a2a, 0xa112: 0xe0003a26, 0xa113: 0xe0003a22,\n\t0xa114: 0xe0003c0c, 0xa115: 0xe0003c09, 0xa116: 0xe0003c12, 0xa117: 0xe0003c0f,\n\t0xa118: 0xe0000ed6, 0xa119: 0xe0000ed3, 0xa11a: 0xe0000ef4, 0xa11b: 0xe0000ef1,\n\t0xa11c: 0xe0000efb, 0xa11d: 0xe0000ef7, 0xa11e: 0xe0000f02, 0xa11f: 0xe0000eff,\n\t0xa120: 0xe0000f41, 0xa121: 0xe0000f3e, 0xa122: 0xe0000f53, 0xa123: 0xe0000f50,\n\t0xa124: 0xe0000f26, 0xa125: 0xe0000f22, 0xa126: 0xe0000f3a, 0xa127: 0xe0000f36,\n\t0xa128: 0xe0000f5a, 0xa129: 0xe0000f56, 0xa12a: 0xe0000f93, 0xa12b: 0xe0000f90,\n\t0xa12c: 0xe0000f9f, 0xa12d: 0xe0000f9c, 0xa12e: 0xe0000fb1, 0xa12f: 0xe0000fae,\n\t0xa130: 0xe0000fab, 0xa131: 0xe0000fa8, 0xa132: 0xe0003b3b, 0xa133: 0xe0003b38,\n\t0xa134: 0xe0003b47, 0xa135: 0xe0003b44, 0xa136: 0xe0003b41, 0xa137: 0xe0003b3e,\n\t0xa138: 0xe0003ada, 0xa139: 0xe0003ad6, 0xa13a: 0xe0003aee, 0xa13b: 0xe0003aea,\n\t0xa13c: 0xe00010a9, 0xa13d: 0xe00010a6, 0xa13e: 0xe00010af, 0xa13f: 0xe00010ac,\n\t// Block 0x285, offset 0xa140\n\t0xa140: 0xe0003c1e, 0xa141: 0xe0003c1b, 0xa142: 0xe0003c18, 0xa143: 0xe0003c15,\n\t0xa144: 0xe0003c2d, 0xa145: 0xe0003c2a, 0xa146: 0xe0003c33, 0xa147: 0xe0003c30,\n\t0xa148: 0xe0003c39, 0xa149: 0xe0003c36, 0xa14a: 0xe00010fc, 0xa14b: 0xe00010f9,\n\t0xa14c: 0xe00010f6, 0xa14d: 0xe00010f3, 0xa14e: 0xe0001123, 0xa14f: 0xe0001120,\n\t0xa150: 0xe0001141, 0xa151: 0xe000113e, 0xa152: 0xe0001153, 0xa153: 0xe0001150,\n\t0xa154: 0xe0001159, 0xa155: 0xe0001156, 0xa156: 0xe0003b74, 0xa157: 0xe0000f8d,\n\t0xa158: 0xe0003c27, 0xa159: 0xe0001111, 0xa15a: 0xf0000404, 0xa15b: 0xe0000f70,\n\t0xa15c: 0x40300420, 0xa15d: 0x40300620, 0xa15e: 0xe0000f7f, 0xa15f: 0x402c9620,\n\t0xa160: 0xe000387d, 0xa161: 0xe0000998, 0xa162: 0xe0003874, 0xa163: 0xe0000986,\n\t0xa164: 0xe0003843, 0xa165: 0xe0000924, 0xa166: 0xe0003847, 0xa167: 0xe000092c,\n\t0xa168: 0xe000384f, 0xa169: 0xe000093c, 0xa16a: 0xe000384b, 0xa16b: 0xe0000934,\n\t0xa16c: 0xe0003884, 0xa16d: 0xe00009a6, 0xa16e: 0xe0003830, 0xa16f: 0xe00008fe,\n\t0xa170: 0xe0003834, 0xa171: 0xe0000906, 0xa172: 0xe000383c, 0xa173: 0xe0000916,\n\t0xa174: 0xe0003838, 0xa175: 0xe000090e, 0xa176: 0xe0003880, 0xa177: 0xe000099e,\n\t0xa178: 0xe000391a, 0xa179: 0xe0003917, 0xa17a: 0xe0003908, 0xa17b: 0xe0003905,\n\t0xa17c: 0xe00038d2, 0xa17d: 0xe00038cf, 0xa17e: 0xe00038a7, 0xa17f: 0xe00038a3,\n\t// Block 0x286, offset 0xa180\n\t0xa180: 0xe00038af, 0xa181: 0xe00038ab, 0xa182: 0xe00038bf, 0xa183: 0xe00038bb,\n\t0xa184: 0xe00038b7, 0xa185: 0xe00038b3, 0xa186: 0xe0003921, 0xa187: 0xe000391d,\n\t0xa188: 0xe0003975, 0xa189: 0xe0003972, 0xa18a: 0xe0003987, 0xa18b: 0xe0003984,\n\t0xa18c: 0xe0003a75, 0xa18d: 0xe0003a72, 0xa18e: 0xe0003a35, 0xa18f: 0xe0003a32,\n\t0xa190: 0xe00039ac, 0xa191: 0xe00039a8, 0xa192: 0xe00039b4, 0xa193: 0xe00039b0,\n\t0xa194: 0xe00039c4, 0xa195: 0xe00039c0, 0xa196: 0xe00039bc, 0xa197: 0xe00039b8,\n\t0xa198: 0xe0003a7c, 0xa199: 0xe0003a78, 0xa19a: 0xe0003a4e, 0xa19b: 0xe0003a4a,\n\t0xa19c: 0xe0003a56, 0xa19d: 0xe0003a52, 0xa19e: 0xe0003a66, 0xa19f: 0xe0003a62,\n\t0xa1a0: 0xe0003a5e, 0xa1a1: 0xe0003a5a, 0xa1a2: 0xe0003a6e, 0xa1a3: 0xe0003a6a,\n\t0xa1a4: 0xe0003b35, 0xa1a5: 0xe0003b32, 0xa1a6: 0xe0003af5, 0xa1a7: 0xe0003af2,\n\t0xa1a8: 0xe0003b0e, 0xa1a9: 0xe0003b0a, 0xa1aa: 0xe0003b16, 0xa1ab: 0xe0003b12,\n\t0xa1ac: 0xe0003b26, 0xa1ad: 0xe0003b22, 0xa1ae: 0xe0003b1e, 0xa1af: 0xe0003b1a,\n\t0xa1b0: 0xe0003b2e, 0xa1b1: 0xe0003b2a, 0xa1b2: 0xe0001108, 0xa1b3: 0xe0001105,\n\t0xa1b4: 0xe0001135, 0xa1b5: 0xe0001132, 0xa1b6: 0xe000112f, 0xa1b7: 0xe000112c,\n\t0xa1b8: 0xe000111d, 0xa1b9: 0xe000111a, 0xa1ba: 0xe0000d0a, 0xa1bb: 0xe0000d07,\n\t0xa1bc: 0x0030d888, 0xa1bd: 0x4030d820, 0xa1be: 0x00312088, 0xa1bf: 0x40312020,\n\t// Block 0x287, offset 0xa1c0\n\t0xa1c0: 0xe00009bc, 0xa1c1: 0xe00009c0, 0xa1c2: 0x002c3a8b, 0xa1c3: 0xf0000a04,\n\t0xa1c4: 0x40081c20, 0xa1c5: 0xe0000a5e, 0xa1c6: 0xe0000a62, 0xa1c7: 0x002cc28a,\n\t0xa1c8: 0x40081e20, 0xa1c9: 0xf0000a04, 0xa1ca: 0x002d2285, 0xa1cb: 0x002d688b,\n\t0xa1cc: 0x002d688b, 0xa1cd: 0x002d688b, 0xa1ce: 0x002d6885, 0xa1cf: 0xf0000202,\n\t0xa1d0: 0x002d9a8b, 0xa1d1: 0x002d9a8b, 0xa1d2: 0x002e228b, 0xa1d3: 0x002e2285,\n\t0xa1d4: 0x40082020, 0xa1d5: 0x002e9e8b, 0xa1d6: 0xe000281e, 0xa1d7: 0x40082220,\n\t0xa1d8: 0x40082420, 0xa1d9: 0x002f2c8b, 0xa1da: 0x002f568b, 0xa1db: 0x002f7a8b,\n\t0xa1dc: 0x002f7a8b, 0xa1dd: 0x002f7a8b, 0xa1de: 0x40082620, 0xa1df: 0x40082820,\n\t0xa1e0: 0xe0002833, 0xa1e1: 0xe0000fbd, 0xa1e2: 0xe0002842, 0xa1e3: 0x40082a20,\n\t0xa1e4: 0x00312a8b, 0xa1e5: 0x40082c20, 0xa1e6: 0x0032a288, 0xa1e7: 0x40082e20,\n\t0xa1e8: 0x00312a8b, 0xa1e9: 0x40083020, 0xa1ea: 0x002bea83, 0xa1eb: 0xe0003856,\n\t0xa1ec: 0x002c0a8b, 0xa1ed: 0x002c3a8b, 0xa1ee: 0x40083220, 0xa1ef: 0x002c9885,\n\t0xa1f0: 0x002c988b, 0xa1f1: 0x002d088b, 0xa1f2: 0x002d1e88, 0xa1f3: 0x002e828b,\n\t0xa1f4: 0x002ee285, 0xa1f5: 0x00389084, 0xa1f6: 0x00389284, 0xa1f7: 0x00389484,\n\t0xa1f8: 0x00389684, 0xa1f9: 0x002d9a85, 0xa1fa: 0x40083420, 0xa1fb: 0xe0000b95,\n\t0xa1fc: 0x00327e85, 0xa1fd: 0x00325685, 0xa1fe: 0x0032568b, 0xa1ff: 0x00327e8b,\n\t// Block 0x288, offset 0xa200\n\t0xa200: 0xe0000024, 0xa201: 0xe0000029, 0xa202: 0xe000002e, 0xa203: 0xe0000033,\n\t0xa204: 0xe0000038, 0xa205: 0xe000003d, 0xa206: 0xe0000042, 0xa207: 0xe0000047,\n\t0xa208: 0xf0001f04, 0xa209: 0xf0001f04, 0xa20a: 0xf0001f04, 0xa20b: 0xf0001f04,\n\t0xa20c: 0xf0001f04, 0xa20d: 0xf0001f04, 0xa20e: 0xf0001f04, 0xa20f: 0xf0001f04,\n\t0xa210: 0xf0001f04, 0xa211: 0xf0000404, 0xa212: 0xf0000404, 0xa213: 0xf0000404,\n\t0xa214: 0xf0000404, 0xa215: 0xf0000404, 0xa216: 0xf0000404, 0xa217: 0xf0000404,\n\t0xa218: 0xf0000404, 0xa219: 0xf0000404, 0xa21a: 0xf0000404, 0xa21b: 0xf0000404,\n\t0xa21c: 0xf0000404, 0xa21d: 0xf0000404, 0xa21e: 0xf0000404, 0xa21f: 0xf0000404,\n\t0xa220: 0xe000249f, 0xa221: 0xf0000404, 0xa222: 0xf0000404, 0xa223: 0xe00024a7,\n\t0xa224: 0xe00024af, 0xa225: 0xf0000404, 0xa226: 0xe00024b7, 0xa227: 0xe0002c16,\n\t0xa228: 0xe0002c1e, 0xa229: 0xe0002c26, 0xa22a: 0xe00024bf, 0xa22b: 0xe0002c2e,\n\t0xa22c: 0xf0000404, 0xa22d: 0xf0000404, 0xa22e: 0xf0000404, 0xa22f: 0xf0000404,\n\t0xa230: 0xe0002c36, 0xa231: 0xf0000404, 0xa232: 0xe0002c46, 0xa233: 0xf0000404,\n\t0xa234: 0xf0000404, 0xa235: 0xf0000404, 0xa236: 0x002bde8c, 0xa237: 0x002c0a8c,\n\t0xa238: 0x002c3a8c, 0xa239: 0x002c628c, 0xa23a: 0x002c988c, 0xa23b: 0x002d088c,\n\t0xa23c: 0x002d228c, 0xa23d: 0x002d688c, 0xa23e: 0x002d9a8c, 0xa23f: 0x002dcc8c,\n\t// Block 0x289, offset 0xa240\n\t0xa240: 0xe000230b, 0xa241: 0xe00022f8, 0xa242: 0xe00022fc, 0xa243: 0xe0002311,\n\t0xa244: 0xe0002316, 0xa245: 0xe000231d, 0xa246: 0xe0002321, 0xa247: 0xe0002325,\n\t0xa248: 0xe000232b, 0xa249: 0xf0001c1c, 0xa24a: 0xe0002330, 0xa24b: 0xe000233c,\n\t0xa24c: 0xe0002340, 0xa24d: 0xe0002337, 0xa24e: 0xe0002346, 0xa24f: 0xe000234b,\n\t0xa250: 0xe000234f, 0xa251: 0xe0002353, 0xa252: 0xf0001c1c, 0xa253: 0xe000235e,\n\t0xa254: 0xe0002358, 0xa255: 0xf0001c1c, 0xa256: 0xe0002363, 0xa257: 0xe000236d,\n\t0xa258: 0xf0001f04, 0xa259: 0xf0001f04, 0xa25a: 0xf0001f04, 0xa25b: 0xf0001f04,\n\t0xa25c: 0xf0001f04, 0xa25d: 0xf0001f04, 0xa25e: 0xf0001f04, 0xa25f: 0xf0001f04,\n\t0xa260: 0xf0001f04, 0xa261: 0xf0001f04, 0xa262: 0xf0000404, 0xa263: 0xf0000404,\n\t0xa264: 0xf0000404, 0xa265: 0xf0000404, 0xa266: 0xf0000404, 0xa267: 0xf0000404,\n\t0xa268: 0xf0000404, 0xa269: 0xf0000404, 0xa26a: 0xf0000404, 0xa26b: 0xf0000404,\n\t0xa26c: 0xf0000404, 0xa26d: 0xf0000404, 0xa26e: 0xf0000404, 0xa26f: 0xf0000404,\n\t0xa270: 0xf0000404, 0xa271: 0xe0000c1e, 0xa272: 0xf0001c1c, 0xa273: 0xe0002f0d,\n\t0xa274: 0xe0000a31, 0xa275: 0xe0002824, 0xa276: 0xe00035d6, 0xa277: 0xe00032a7,\n\t0xa278: 0xe0000ac2, 0xa279: 0xe0000ac6, 0xa27a: 0xe00027e8, 0xa27b: 0xf0001c1c,\n\t0xa27c: 0xf0001c1c, 0xa27d: 0xf0001c1c, 0xa27e: 0xf0001c1c, 0xa27f: 0xe0002431,\n\t// Block 0x28a, offset 0xa280\n\t0xa280: 0xe00035d0, 0xa281: 0xe00035b8, 0xa282: 0xf0001d1c, 0xa283: 0xe000358e,\n\t0xa284: 0xe00027f7, 0xa285: 0xe00027fa, 0xa286: 0xe0003594, 0xa287: 0xf0001d1d,\n\t0xa288: 0xe0000a6b, 0xa289: 0xe0000cb4, 0xa28a: 0xe00035d9, 0xa28b: 0xe00035bb,\n\t0xa28c: 0xf0001d1c, 0xa28d: 0xf0001c1c, 0xa28e: 0xe000359d, 0xa28f: 0xe00027fd,\n\t0xa290: 0xe00027ce, 0xa291: 0xe0000cb9, 0xa292: 0xe0000d36, 0xa293: 0xe0000be3,\n\t0xa294: 0xe0000fc5, 0xa295: 0xe00035f7, 0xa296: 0xe00035a0, 0xa297: 0xe00032a4,\n\t0xa298: 0xe0002803, 0xa299: 0xe0003570, 0xa29a: 0xe00035c7, 0xa29b: 0xe00035fa,\n\t0xa29c: 0xe00035a3, 0xa29d: 0xe0003099, 0xa29e: 0xe0002806, 0xa29f: 0xe0000d3e,\n\t0xa2a0: 0xe0000a72, 0xa2a1: 0xe0003588, 0xa2a2: 0xe0000cbd, 0xa2a3: 0xe0000d42,\n\t0xa2a4: 0xe0000a76, 0xa2a5: 0xe000358b, 0xa2a6: 0xe0000cc1, 0xa2a7: 0xe0000d2d,\n\t0xa2a8: 0xe0000d31, 0xa2a9: 0xe00035d3, 0xa2aa: 0xe0000cc5, 0xa2ab: 0xe0000d4a,\n\t0xa2ac: 0xe0000be7, 0xa2ad: 0xe0000f0b, 0xa2ae: 0xe0000f0f, 0xa2af: 0xe0000f15,\n\t0xa2b0: 0xe000282d, 0xa2b1: 0xe0002821, 0xa2b2: 0xf0001c1c, 0xa2b3: 0xe000281b,\n\t0xa2b4: 0xe00035dc, 0xa2b5: 0xe00035ca, 0xa2b6: 0xf0001d1c, 0xa2b7: 0xe00035a6,\n\t0xa2b8: 0xe000280f, 0xa2b9: 0xe00035a9, 0xa2ba: 0xe00035df, 0xa2bb: 0xe00035cd,\n\t0xa2bc: 0xe0003600, 0xa2bd: 0xe00035af, 0xa2be: 0xe0002812, 0xa2bf: 0xe00035b2,\n\t// Block 0x28b, offset 0xa2c0\n\t0xa2c0: 0xe0002815, 0xa2c1: 0xe00035b5, 0xa2c2: 0xe00009b7, 0xa2c3: 0xf0001c1d,\n\t0xa2c4: 0xf0001c1c, 0xa2c5: 0xf0001c1c, 0xa2c6: 0xe0000a66, 0xa2c7: 0xe0000a7a,\n\t0xa2c8: 0xf0001d1c, 0xa2c9: 0xf0001c1d, 0xa2ca: 0xe00027c2, 0xa2cb: 0xe00027c8,\n\t0xa2cc: 0xe00027e5, 0xa2cd: 0xe0002800, 0xa2ce: 0xe0002809, 0xa2cf: 0xe000280c,\n\t0xa2d0: 0xe0003582, 0xa2d1: 0xe0003585, 0xa2d2: 0xe0000d0d, 0xa2d3: 0xe0002818,\n\t0xa2d4: 0xe0003591, 0xa2d5: 0xe0000d3a, 0xa2d6: 0xe0000d46, 0xa2d7: 0xe0002827,\n\t0xa2d8: 0xe0000eb0, 0xa2d9: 0xe0000eb8, 0xa2da: 0xe000282a, 0xa2db: 0xf0001c1c,\n\t0xa2dc: 0xf0001c1d, 0xa2dd: 0xe00035e2, 0xa2de: 0xe00010b2, 0xa2df: 0xe00009c8,\n\t0xa2e0: 0xf0001f04, 0xa2e1: 0xf0001f04, 0xa2e2: 0xf0001f04, 0xa2e3: 0xf0001f04,\n\t0xa2e4: 0xf0001f04, 0xa2e5: 0xf0001f04, 0xa2e6: 0xf0001f04, 0xa2e7: 0xf0001f04,\n\t0xa2e8: 0xf0001f04, 0xa2e9: 0xf0000404, 0xa2ea: 0xf0000404, 0xa2eb: 0xf0000404,\n\t0xa2ec: 0xf0000404, 0xa2ed: 0xf0000404, 0xa2ee: 0xf0000404, 0xa2ef: 0xf0000404,\n\t0xa2f0: 0xf0000404, 0xa2f1: 0xf0000404, 0xa2f2: 0xf0000404, 0xa2f3: 0xf0000404,\n\t0xa2f4: 0xf0000404, 0xa2f5: 0xf0000404, 0xa2f6: 0xf0000404, 0xa2f7: 0xf0000404,\n\t0xa2f8: 0xf0000404, 0xa2f9: 0xf0000404, 0xa2fa: 0xf0000404, 0xa2fb: 0xf0000404,\n\t0xa2fc: 0xf0000404, 0xa2fd: 0xf0000404, 0xa2fe: 0xf0000404, 0xa2ff: 0xe0000bdf,\n\t// Block 0x28c, offset 0xa300\n\t0xa300: 0xf0000404, 0xa301: 0xe00026cf, 0xa302: 0xe000356d, 0xa303: 0xe0000b99,\n\t0xa304: 0xe0000b9d, 0xa305: 0xe0000f83, 0xa306: 0xf0000404,\n\t0xa313: 0xf0000404,\n\t0xa314: 0xf0000404, 0xa315: 0xf0000404, 0xa316: 0xf0000404, 0xa317: 0xf0000404,\n\t0xa31d: 0xe000150b, 0xa31e: 0xa1a09602, 0xa31f: 0xe0001514,\n\t0xa320: 0x0038ae85, 0xa321: 0x00389085, 0xa322: 0x00389685, 0xa323: 0x00389885,\n\t0xa324: 0x0038a485, 0xa325: 0x0038a685, 0xa326: 0x0038a885, 0xa327: 0x0038b685,\n\t0xa328: 0x0038ba85, 0xa329: 0x00093885, 0xa32a: 0xe0001542, 0xa32b: 0xe000153f,\n\t0xa32c: 0xe000154c, 0xa32d: 0xe0001548, 0xa32e: 0xe00014e1, 0xa32f: 0xe00014e4,\n\t0xa330: 0xe00014e7, 0xa331: 0xe00014ea, 0xa332: 0xe00014f0, 0xa333: 0xe00014f3,\n\t0xa334: 0xe00014f6, 0xa335: 0xe00014fc, 0xa336: 0xe0001505,\n\t0xa338: 0xe0001508, 0xa339: 0xe000150e, 0xa33a: 0xe000151b, 0xa33b: 0xe0001518,\n\t0xa33c: 0xe0001521, 0xa33e: 0xe0001524,\n\t// Block 0x28d, offset 0xa340\n\t0xa340: 0xf0001f04, 0xa341: 0xf0001f04, 0xa342: 0xf0001f04, 0xa343: 0xf0001f04,\n\t0xa344: 0xf0001f04, 0xa345: 0xf0001f04, 0xa346: 0xf0001f04, 0xa347: 0xf0001f04,\n\t0xa348: 0xf0001f04, 0xa349: 0xf0001f04, 0xa34a: 0xf0001f04,\n\t0xa350: 0xf0000a04, 0xa351: 0xf0000a04, 0xa352: 0xf0000a04, 0xa353: 0xf0000a04,\n\t0xa354: 0xe00024a3, 0xa355: 0xf0000a04, 0xa356: 0xf0000a04, 0xa357: 0xe00024ab,\n\t0xa358: 0xe00024b3, 0xa359: 0xf0000a04, 0xa35a: 0xe00024bb, 0xa35b: 0xe0002c1a,\n\t0xa35c: 0xe0002c22, 0xa35d: 0xe0002c2a, 0xa35e: 0xe00024c3, 0xa35f: 0xe0002c32,\n\t0xa360: 0xf0000a04, 0xa361: 0xf0000a04, 0xa362: 0xf0000a04, 0xa363: 0xf0000a04,\n\t0xa364: 0xe0002c3a, 0xa365: 0xf0000a04, 0xa366: 0xe0002c4a, 0xa367: 0xf0000a04,\n\t0xa368: 0xf0000a04, 0xa369: 0xf0000a04, 0xa36a: 0xf0000a04, 0xa36b: 0x002c3a8c,\n\t0xa36c: 0x002f7a8c, 0xa36d: 0xf0000c0c, 0xa36e: 0xe00035e8,\n\t0xa370: 0x002bde9d, 0xa371: 0x002c0a9d, 0xa372: 0x002c3a9d, 0xa373: 0x002c629d,\n\t0xa374: 0x002c989d, 0xa375: 0x002d089d, 0xa376: 0x002d229d, 0xa377: 0x002d689d,\n\t0xa378: 0x002d9a9d, 0xa379: 0x002dcc9d, 0xa37a: 0x002dfe9d, 0xa37b: 0x002e229d,\n\t0xa37c: 0x002e829d, 0xa37d: 0x002e9e9d, 0xa37e: 0x002ee29d, 0xa37f: 0x002f2c9d,\n\t// Block 0x28e, offset 0xa380\n\t0xa380: 0x002f569d, 0xa381: 0x002f7a9d, 0xa382: 0x002fe69d, 0xa383: 0x00302c9d,\n\t0xa384: 0x00306c9d, 0xa385: 0x0030be9d, 0xa386: 0x0030e29d, 0xa387: 0x0030f69d,\n\t0xa388: 0x0031009d, 0xa389: 0x00312a9d, 0xa38a: 0xe00027cb, 0xa38b: 0xe00035ac,\n\t0xa38c: 0xf0001d1d, 0xa38d: 0xf0001d1d, 0xa38e: 0xe0000ebc, 0xa38f: 0xe00035e5,\n\t0xa390: 0x002bde8c, 0xa391: 0x002c0a8c, 0xa392: 0x002c3a8c, 0xa393: 0x002c628c,\n\t0xa394: 0x002c988c, 0xa395: 0x002d088c, 0xa396: 0x002d228c, 0xa397: 0x002d688c,\n\t0xa398: 0x002d9a8c, 0xa399: 0x002dcc8c, 0xa39a: 0x002dfe8c, 0xa39b: 0x002e228c,\n\t0xa39c: 0x002e828c, 0xa39d: 0x002e9e8c, 0xa39e: 0x002ee28c, 0xa39f: 0x002f2c8c,\n\t0xa3a0: 0x002f568c, 0xa3a1: 0x002f7a8c, 0xa3a2: 0x002fe68c, 0xa3a3: 0x00302c8c,\n\t0xa3a4: 0x00306c8c, 0xa3a5: 0x0030be8c, 0xa3a6: 0x0030e28c, 0xa3a7: 0x0030f68c,\n\t0xa3a8: 0x0031008c, 0xa3a9: 0x00312a8c, 0xa3aa: 0xe0003597, 0xa3ab: 0xe000359a,\n\t0xa3b0: 0x002bde9d, 0xa3b1: 0x002c0a9d, 0xa3b2: 0x002c3a9d, 0xa3b3: 0x002c629d,\n\t0xa3b4: 0x002c989d, 0xa3b5: 0x002d089d, 0xa3b6: 0x002d229d, 0xa3b7: 0x002d689d,\n\t0xa3b8: 0x002d9a9d, 0xa3b9: 0x002dcc9d, 0xa3ba: 0x002dfe9d, 0xa3bb: 0x002e229d,\n\t0xa3bc: 0x002e829d, 0xa3bd: 0x002e9e9d, 0xa3be: 0x002ee29d, 0xa3bf: 0x002f2c9d,\n\t// Block 0x28f, offset 0xa3c0\n\t0xa3c0: 0x40055620, 0xa3c1: 0xa1809102, 0xa3c2: 0xa1909002, 0xa3c3: 0x40055820,\n\t0xa3c4: 0xae600000, 0xa3c5: 0xadc00000, 0xa3c6: 0x40055a20, 0xa3c7: 0xa1208d02,\n\t0xa3d0: 0x40389020, 0xa3d1: 0x40389220, 0xa3d2: 0x40389420, 0xa3d3: 0x40389620,\n\t0xa3d4: 0x40389820, 0xa3d5: 0x40389a20, 0xa3d6: 0x40389c20, 0xa3d7: 0x40389e20,\n\t0xa3d8: 0x4038a020, 0xa3d9: 0x4038a220, 0xa3da: 0x0038a499, 0xa3db: 0x4038a420,\n\t0xa3dc: 0x4038a620, 0xa3dd: 0x0038a899, 0xa3de: 0x4038a820, 0xa3df: 0x0038aa99,\n\t0xa3e0: 0x4038aa20, 0xa3e1: 0x4038ac20, 0xa3e2: 0x4038ae20, 0xa3e3: 0x0038b099,\n\t0xa3e4: 0x4038b020, 0xa3e5: 0x0038b299, 0xa3e6: 0x4038b220, 0xa3e7: 0x4038b420,\n\t0xa3e8: 0x4038b620, 0xa3e9: 0x4038b820, 0xa3ea: 0x4038ba20,\n\t0xa3f0: 0xe00014ff, 0xa3f1: 0xe0001502, 0xa3f2: 0xe0001511, 0xa3f3: 0x4003d21f,\n\t0xa3f4: 0x4003e01f,\n\t// Block 0x290, offset 0xa400\n\t0xa400: 0xa000f202, 0xa401: 0x403fba21, 0xa402: 0x403fba20, 0xa403: 0x403fbc20,\n\t0xa404: 0x403fbc20, 0xa405: 0x403fbe20, 0xa406: 0x403fc020, 0xa407: 0x403fcc20,\n\t0xa408: 0x403fce20, 0xa409: 0x403fd020, 0xa40a: 0x403fd220, 0xa40b: 0x403fd420,\n\t0xa40c: 0x403fd820, 0xa40d: 0x403fdc20, 0xa40e: 0x403fde20, 0xa40f: 0x403fe020,\n\t0xa410: 0x403fe220, 0xa411: 0x403fe420, 0xa412: 0x403fe620, 0xa413: 0x403fe820,\n\t0xa414: 0x403fea20, 0xa415: 0x403fec20, 0xa416: 0x403fee20, 0xa417: 0x403ff020,\n\t0xa418: 0x403ff420, 0xa419: 0x403ff620, 0xa41a: 0x403ff820, 0xa41b: 0x403ffa20,\n\t0xa41c: 0x403ffc20, 0xa41d: 0x40400220, 0xa41e: 0x40400420, 0xa41f: 0x40400620,\n\t0xa420: 0x40400820, 0xa421: 0x40400a20, 0xa422: 0x40400e20, 0xa423: 0x40401020,\n\t0xa424: 0x40401220, 0xa425: 0x40401420, 0xa426: 0x40401620, 0xa427: 0x40401820,\n\t0xa428: 0x40401a20, 0xa429: 0xe0001830, 0xa42a: 0x40401c20, 0xa42b: 0x40401e20,\n\t0xa42c: 0x40402020, 0xa42d: 0x40402420, 0xa42e: 0x40402620, 0xa42f: 0x40402820,\n\t0xa430: 0x40402c20, 0xa431: 0xe0001839, 0xa432: 0x40402e20, 0xa433: 0x40403020,\n\t0xa434: 0xe000183c, 0xa435: 0x40403220, 0xa436: 0x40403420, 0xa437: 0x40403620,\n\t0xa438: 0x40403820, 0xa439: 0x40403a20, 0xa43a: 0x40404c20, 0xa43b: 0x40404e20,\n\t0xa43c: 0xa070f102, 0xa43d: 0x40403c20, 0xa43e: 0x40404a20, 0xa43f: 0x40405620,\n\t// Block 0x291, offset 0xa440\n\t0xa440: 0xa0000000, 0xa441: 0xa0000000, 0xa442: 0xa0000000, 0xa443: 0xa0000000,\n\t0xa444: 0xa0000000, 0xa445: 0xa0000000, 0xa446: 0xa0000000, 0xa447: 0xa0000000,\n\t0xa448: 0xa0000000, 0xa449: 0x40020020, 0xa44a: 0x40020220, 0xa44b: 0x40020420,\n\t0xa44c: 0x40020620, 0xa44d: 0x40020820, 0xa44e: 0xa0000000, 0xa44f: 0xa0000000,\n\t0xa450: 0xa0000000, 0xa451: 0xa0000000, 0xa452: 0xa0000000, 0xa453: 0xa0000000,\n\t0xa454: 0xa0000000, 0xa455: 0xa0000000, 0xa456: 0xa0000000, 0xa457: 0xa0000000,\n\t0xa458: 0xa0000000, 0xa459: 0xa0000000, 0xa45a: 0xa0000000, 0xa45b: 0xa0000000,\n\t0xa45c: 0xa0000000, 0xa45d: 0xa0000000, 0xa45e: 0xa0000000, 0xa45f: 0xa0000000,\n\t0xa460: 0x40021220, 0xa461: 0x4002ba20, 0xa462: 0x4003e020, 0xa463: 0x4004ea20,\n\t0xa464: 0x4027de20, 0xa465: 0x4004ec20, 0xa466: 0x4004e620, 0xa467: 0x4003d220,\n\t0xa468: 0x4003f420, 0xa469: 0x4003f620, 0xa46a: 0x4004d820, 0xa46b: 0x40093820,\n\t0xa46c: 0x40024020, 0xa46d: 0x40021a20, 0xa46e: 0x4002e420, 0xa46f: 0x4004e220,\n\t0xa470: 0x4029cc20, 0xa471: 0x4029ce20, 0xa472: 0x4029d020, 0xa473: 0x4029d220,\n\t0xa474: 0x4029d420, 0xa475: 0x4029d620, 0xa476: 0x4029d820, 0xa477: 0x4029da20,\n\t0xa478: 0x4029dc20, 0xa479: 0x4029de20, 0xa47a: 0x40026c20, 0xa47b: 0x40026220,\n\t0xa47c: 0x40094020, 0xa47d: 0x40094220, 0xa47e: 0x40094420, 0xa47f: 0x4002c420,\n\t// Block 0x292, offset 0xa480\n\t0xa480: 0x4004d620, 0xa481: 0x002bde88, 0xa482: 0x002c0a88, 0xa483: 0xc59b2891,\n\t0xa484: 0xc5a12913, 0xa485: 0x002c9888, 0xa486: 0x002d0888, 0xa487: 0x002d2288,\n\t0xa488: 0x002d6888, 0xa489: 0x002d9a88, 0xa48a: 0x002dcc88, 0xa48b: 0x002dfe88,\n\t0xa48c: 0xc5a629e4, 0xa48d: 0x002e8288, 0xa48e: 0xc5ab2a52, 0xa48f: 0x002ee288,\n\t0xa490: 0x002f2c88, 0xa491: 0x002f5688, 0xa492: 0x002f7a88, 0xa493: 0xc3430991,\n\t0xa494: 0x00302c88, 0xa495: 0x00306c88, 0xa496: 0x0030be88, 0xa497: 0x0030e288,\n\t0xa498: 0x0030f688, 0xa499: 0x00310088, 0xa49a: 0xc3630991, 0xa49b: 0x4003f820,\n\t0xa49c: 0x4004e420, 0xa49d: 0x4003fa20, 0xa49e: 0x40062420, 0xa49f: 0x40021620,\n\t0xa4a0: 0x40061e20, 0xa4a1: 0x402bde20, 0xa4a2: 0x402c0a20, 0xa4a3: 0xc5982891,\n\t0xa4a4: 0xc59e28c2, 0xa4a5: 0x402c9820, 0xa4a6: 0x402d0820, 0xa4a7: 0x402d2220,\n\t0xa4a8: 0x402d6820, 0xa4a9: 0x402d9a20, 0xa4aa: 0x402dcc20, 0xa4ab: 0x402dfe20,\n\t0xa4ac: 0xc3772993, 0xa4ad: 0x402e8220, 0xa4ae: 0xc5332a41, 0xa4af: 0x402ee220,\n\t0xa4b0: 0x402f2c20, 0xa4b1: 0x402f5620, 0xa4b2: 0x402f7a20, 0xa4b3: 0xc3410991,\n\t0xa4b4: 0x40302c20, 0xa4b5: 0x40306c20, 0xa4b6: 0x4030be20, 0xa4b7: 0x4030e220,\n\t0xa4b8: 0x4030f620, 0xa4b9: 0x40310020, 0xa4ba: 0xc3610991, 0xa4bb: 0x4003fc20,\n\t0xa4bc: 0x40094820, 0xa4bd: 0x4003fe20, 0xa4be: 0x40094c20, 0xa4bf: 0xa0000000,\n\t// Block 0x293, offset 0xa4c0\n\t0xa4c0: 0xe0000983, 0xa4c1: 0xe0000980, 0xa4c2: 0xe00008fb, 0xa4c3: 0xe00008f8,\n\t0xa4c4: 0xe000097d, 0xa4c5: 0xe000097a, 0xa4c6: 0x002c3e83, 0xa4c7: 0x402c3e20,\n\t0xa4c8: 0xe0000a3e, 0xa4c9: 0xe0000a3b, 0xa4ca: 0xe0000a4a, 0xa4cb: 0xe0000a47,\n\t0xa4cc: 0x002c3c83, 0xa4cd: 0x402c3c20, 0xa4ce: 0xe0000a86, 0xa4cf: 0xe0000a83,\n\t0xa4d0: 0x002c6683, 0xa4d1: 0x402c6620, 0xa4d2: 0xe0000b46, 0xa4d3: 0xe0000b43,\n\t0xa4d4: 0xe0000aee, 0xa4d5: 0xe0000aeb, 0xa4d6: 0xe0000b2c, 0xa4d7: 0xe0000b29,\n\t0xa4d8: 0xe0000b40, 0xa4d9: 0xe0000b3d, 0xa4da: 0xe0000b1a, 0xa4db: 0xe0000b17,\n\t0xa4dc: 0xe0000bb8, 0xa4dd: 0xe0000bb5, 0xa4de: 0xe0000bb2, 0xa4df: 0xe0000baf,\n\t0xa4e0: 0xe0000bc4, 0xa4e1: 0xe0000bc1, 0xa4e2: 0xe0000bca, 0xa4e3: 0xe0000bc7,\n\t0xa4e4: 0xe0000bee, 0xa4e5: 0xe0000beb, 0xa4e6: 0xe0000c1b, 0xa4e7: 0xe0000c18,\n\t0xa4e8: 0xe0000c51, 0xa4e9: 0xe0000c4e, 0xa4ea: 0xe0000c60, 0xa4eb: 0xe0000c5d,\n\t0xa4ec: 0xe0000c31, 0xa4ed: 0xe0000c2e, 0xa4ee: 0xe0000c5a, 0xa4ef: 0xe0000c57,\n\t0xa4f0: 0xe0000c54, 0xa4f1: 0x402da220, 0xa4f2: 0xf0000a0a, 0xa4f3: 0xf0000404,\n\t0xa4f4: 0xe0000c8a, 0xa4f5: 0xe0000c87, 0xa4f6: 0xe0000c9f, 0xa4f7: 0xe0000c9c,\n\t0xa4f8: 0x402f7220, 0xa4f9: 0xe0000ccc, 0xa4fa: 0xe0000cc9, 0xa4fb: 0xe0000cd8,\n\t0xa4fc: 0xe0000cd5, 0xa4fd: 0xe0000cd2, 0xa4fe: 0xe0000ccf, 0xa4ff: 0xe0000d04,\n\t// Block 0x294, offset 0xa500\n\t0xa500: 0xe0000cfe, 0xa501: 0xe0000cf8, 0xa502: 0xe0000cf5, 0xa503: 0xe0000d51,\n\t0xa504: 0xe0000d4e, 0xa505: 0xe0000d6f, 0xa506: 0xe0000d6c, 0xa507: 0xe0000d5d,\n\t0xa508: 0xe0000d5a, 0xa509: 0xf0000404, 0xa50a: 0x002eda88, 0xa50b: 0x402eda20,\n\t0xa50c: 0xe0000e2e, 0xa50d: 0xe0000e2b, 0xa50e: 0xe0000da0, 0xa50f: 0xe0000d9d,\n\t0xa510: 0xe0000de0, 0xa511: 0xe0000ddd, 0xa512: 0xe0000e93, 0xa513: 0xe0000e8f,\n\t0xa514: 0xe0000eca, 0xa515: 0xe0000ec7, 0xa516: 0xe0000edc, 0xa517: 0xe0000ed9,\n\t0xa518: 0xe0000ed0, 0xa519: 0xe0000ecd, 0xa51a: 0xe0000f1f, 0xa51b: 0xe0000f1c,\n\t0xa51c: 0xe0000f2d, 0xa51d: 0xe0000f2a, 0xa51e: 0xe0000f47, 0xa51f: 0xe0000f44,\n\t0xa520: 0x002fe883, 0xa521: 0x402fe820, 0xa522: 0xe0000f99, 0xa523: 0xe0000f96,\n\t0xa524: 0xe0000f8a, 0xa525: 0xe0000f87, 0xa526: 0x00303688, 0xa527: 0x40303620,\n\t0xa528: 0xe000102b, 0xa529: 0xe0001028, 0xa52a: 0xe000103f, 0xa52b: 0xe000103c,\n\t0xa52c: 0xe0000fe7, 0xa52d: 0xe0000fe4, 0xa52e: 0xe0000ff9, 0xa52f: 0xe0000ff6,\n\t0xa530: 0xe0001025, 0xa531: 0xe0001022, 0xa532: 0xe0001039, 0xa533: 0xe0001036,\n\t0xa534: 0xe00010d8, 0xa535: 0xe00010d5, 0xa536: 0xe000110e, 0xa537: 0xe000110b,\n\t0xa538: 0xe0001117, 0xa539: 0xe000113b, 0xa53a: 0xe0001138, 0xa53b: 0xe000114d,\n\t0xa53c: 0xe000114a, 0xa53d: 0x00312c83, 0xa53e: 0x40312c20, 0xa53f: 0xe0000f64,\n\t// Block 0x295, offset 0xa540\n\t0xa540: 0x40321220, 0xa541: 0x40321a20, 0xa542: 0x40322220, 0xa543: 0x40322a20,\n\t0xa544: 0x002c6487, 0xa545: 0x002c6485, 0xa546: 0x002c6483, 0xa547: 0x002e2487,\n\t0xa548: 0x002e2485, 0xa549: 0x002e2483, 0xa54a: 0x002ea087, 0xa54b: 0x002ea085,\n\t0xa54c: 0x002ea083, 0xa54d: 0xe0000947, 0xa54e: 0xe0000944, 0xa54f: 0xe0000c3d,\n\t0xa550: 0xe0000c3a, 0xa551: 0xe0000dcc, 0xa552: 0xe0000dc9, 0xa553: 0xe0000ff3,\n\t0xa554: 0xe0000ff0, 0xa555: 0xe000101e, 0xa556: 0xe000101a, 0xa557: 0xe0001006,\n\t0xa558: 0xe0001002, 0xa559: 0xe0001016, 0xa55a: 0xe0001012, 0xa55b: 0xe000100e,\n\t0xa55c: 0xe000100a, 0xa55d: 0x402cae20, 0xa55e: 0xe0000962, 0xa55f: 0xe000095e,\n\t0xa560: 0xe0000976, 0xa561: 0xe0000972, 0xa562: 0xe00009f4, 0xa563: 0xe00009ef,\n\t0xa564: 0x002d3a88, 0xa565: 0x402d3a20, 0xa566: 0xe0000bbe, 0xa567: 0xe0000bbb,\n\t0xa568: 0xe0000c99, 0xa569: 0xe0000c96, 0xa56a: 0xe0000e20, 0xa56b: 0xe0000e1d,\n\t0xa56c: 0xe0000e27, 0xa56d: 0xe0000e23, 0xa56e: 0xe0001162, 0xa56f: 0xe000115f,\n\t0xa570: 0xe0000c8d, 0xa571: 0xf0000a0a, 0xa572: 0xf000040a, 0xa573: 0xf0000404,\n\t0xa574: 0xe0000bac, 0xa575: 0xe0000ba9, 0xa576: 0x002d7888, 0xa577: 0x00319488,\n\t0xa578: 0xe0000d57, 0xa579: 0xe0000d54, 0xa57a: 0xe0000954, 0xa57b: 0xe0000950,\n\t0xa57c: 0xe00009ea, 0xa57d: 0xe00009e5, 0xa57e: 0xe0000e19, 0xa57f: 0xe0000e15,\n\t// Block 0x296, offset 0xa580\n\t0xa580: 0xe00009b1, 0xa581: 0xe00009ae, 0xa582: 0xe0000a22, 0xa583: 0xe0000a1f,\n\t0xa584: 0xe0000a28, 0xa585: 0xe0000a25, 0xa586: 0xe0000a2e, 0xa587: 0xe0000a2b,\n\t0xa588: 0xe0003c3f, 0xa589: 0xe0003c3c, 0xa58a: 0xe0000a8c, 0xa58b: 0xe0000a89,\n\t0xa58c: 0xe0000a98, 0xa58d: 0xe0000a95, 0xa58e: 0xe0000aa4, 0xa58f: 0xe0000aa1,\n\t0xa590: 0xe0000a92, 0xa591: 0xe0000a8f, 0xa592: 0xe0000a9e, 0xa593: 0xe0000a9b,\n\t0xa594: 0xe0000b55, 0xa595: 0xe0000b51, 0xa596: 0xe0000b4d, 0xa597: 0xe0000b49,\n\t0xa598: 0xe0000b7c, 0xa599: 0xe0000b79, 0xa59a: 0xe0000b82, 0xa59b: 0xe0000b7f,\n\t0xa59c: 0xe0000b39, 0xa59d: 0xe0000b35, 0xa59e: 0xe0000b8c, 0xa59f: 0xe0000b89,\n\t0xa5a0: 0xe0000bd0, 0xa5a1: 0xe0000bcd, 0xa5a2: 0xe0000c00, 0xa5a3: 0xe0000bfd,\n\t0xa5a4: 0xe0000c0c, 0xa5a5: 0xe0000c09, 0xa5a6: 0xe0000bfa, 0xa5a7: 0xe0000bf7,\n\t0xa5a8: 0xe0000c06, 0xa5a9: 0xe0000c03, 0xa5aa: 0xe0000c12, 0xa5ab: 0xe0000c0f,\n\t0xa5ac: 0xe0000c7e, 0xa5ad: 0xe0000c7b, 0xa5ae: 0xe0000c4a, 0xa5af: 0xe0000c46,\n\t0xa5b0: 0xe0000c93, 0xa5b1: 0xe0000c90, 0xa5b2: 0xe0000cab, 0xa5b3: 0xe0000ca8,\n\t0xa5b4: 0xe0000cb1, 0xa5b5: 0xe0000cae, 0xa5b6: 0xe0000cde, 0xa5b7: 0xe0000cdb,\n\t0xa5b8: 0xe0000ce5, 0xa5b9: 0xe0000ce1, 0xa5ba: 0xe0000cf2, 0xa5bb: 0xe0000cef,\n\t0xa5bc: 0xe0000cec, 0xa5bd: 0xe0000ce9, 0xa5be: 0xe0000d1e, 0xa5bf: 0xe0000d1b,\n\t// Block 0x297, offset 0xa5c0\n\t0xa5c0: 0xa0000000, 0xa5c1: 0xa0000000, 0xa5c2: 0xa0000000, 0xa5c3: 0xa0000000,\n\t0xa5c4: 0xa0000000, 0xa5c5: 0xa0000000, 0xa5c6: 0xa0000000, 0xa5c7: 0xa0000000,\n\t0xa5c8: 0xa0000000, 0xa5c9: 0x40020020, 0xa5ca: 0x40020220, 0xa5cb: 0x40020420,\n\t0xa5cc: 0x40020620, 0xa5cd: 0x40020820, 0xa5ce: 0xa0000000, 0xa5cf: 0xa0000000,\n\t0xa5d0: 0xa0000000, 0xa5d1: 0xa0000000, 0xa5d2: 0xa0000000, 0xa5d3: 0xa0000000,\n\t0xa5d4: 0xa0000000, 0xa5d5: 0xa0000000, 0xa5d6: 0xa0000000, 0xa5d7: 0xa0000000,\n\t0xa5d8: 0xa0000000, 0xa5d9: 0xa0000000, 0xa5da: 0xa0000000, 0xa5db: 0xa0000000,\n\t0xa5dc: 0xa0000000, 0xa5dd: 0xa0000000, 0xa5de: 0xa0000000, 0xa5df: 0xa0000000,\n\t0xa5e0: 0x40021220, 0xa5e1: 0x4002ba20, 0xa5e2: 0x4003e020, 0xa5e3: 0x4004ea20,\n\t0xa5e4: 0x4027de20, 0xa5e5: 0x4004ec20, 0xa5e6: 0x4004e620, 0xa5e7: 0x4003d220,\n\t0xa5e8: 0x4003f420, 0xa5e9: 0x4003f620, 0xa5ea: 0x4004d820, 0xa5eb: 0x40093820,\n\t0xa5ec: 0x40024020, 0xa5ed: 0x40021a20, 0xa5ee: 0x4002e420, 0xa5ef: 0x4004e220,\n\t0xa5f0: 0x4029cc20, 0xa5f1: 0x4029ce20, 0xa5f2: 0x4029d020, 0xa5f3: 0x4029d220,\n\t0xa5f4: 0x4029d420, 0xa5f5: 0x4029d620, 0xa5f6: 0x4029d820, 0xa5f7: 0x4029da20,\n\t0xa5f8: 0x4029dc20, 0xa5f9: 0x4029de20, 0xa5fa: 0x40026c20, 0xa5fb: 0x40026220,\n\t0xa5fc: 0x40094020, 0xa5fd: 0x40094220, 0xa5fe: 0x40094420, 0xa5ff: 0x4002c420,\n\t// Block 0x298, offset 0xa600\n\t0xa600: 0x4004d620, 0xa601: 0x002bde88, 0xa602: 0x002c0a88, 0xa603: 0xc5b12aa4,\n\t0xa604: 0xc5bb2b54, 0xa605: 0x002c9888, 0xa606: 0x002d0888, 0xa607: 0xc5c72c24,\n\t0xa608: 0x002d6888, 0xa609: 0x002d9a88, 0xa60a: 0x002dcc88, 0xa60b: 0x002dfe88,\n\t0xa60c: 0xc5d12cf6, 0xa60d: 0x002e8288, 0xa60e: 0xc5db2dc4, 0xa60f: 0xc5e30b21,\n\t0xa610: 0x002f2c88, 0xa611: 0x002f5688, 0xa612: 0x002f7a88, 0xa613: 0xc5e92e54,\n\t0xa614: 0xc5f12ee4, 0xa615: 0xc5f90b21, 0xa616: 0x0030be88, 0xa617: 0x0030e288,\n\t0xa618: 0x0030f688, 0xa619: 0x00310088, 0xa61a: 0xc5ff2f74, 0xa61b: 0x4003f820,\n\t0xa61c: 0x4004e420, 0xa61d: 0x4003fa20, 0xa61e: 0x40062420, 0xa61f: 0x40021620,\n\t0xa620: 0x40061e20, 0xa621: 0x402bde20, 0xa622: 0x402c0a20, 0xa623: 0xc5ae2a72,\n\t0xa624: 0xc5b62b02, 0xa625: 0x402c9820, 0xa626: 0x402d0820, 0xa627: 0xc5c42bf2,\n\t0xa628: 0x402d6820, 0xa629: 0x402d9a20, 0xa62a: 0x402dcc20, 0xa62b: 0x402dfe20,\n\t0xa62c: 0xc5cc2c84, 0xa62d: 0x402e8220, 0xa62e: 0xc5d82d92, 0xa62f: 0xc5e00b21,\n\t0xa630: 0x402f2c20, 0xa631: 0x402f5620, 0xa632: 0x402f7a20, 0xa633: 0xc5e62e22,\n\t0xa634: 0xc5ee2eb2, 0xa635: 0xc5f60b21, 0xa636: 0x4030be20, 0xa637: 0x4030e220,\n\t0xa638: 0x4030f620, 0xa639: 0x40310020, 0xa63a: 0xc5fc2f42, 0xa63b: 0x4003fc20,\n\t0xa63c: 0x40094820, 0xa63d: 0x4003fe20, 0xa63e: 0x40094c20, 0xa63f: 0xa0000000,\n\t// Block 0x299, offset 0xa640\n\t0xa640: 0xe00008f5, 0xa641: 0xe00008ef, 0xa642: 0xe0000921, 0xa643: 0xe0000969,\n\t0xa644: 0xe000095b, 0xa645: 0xe000094d, 0xa646: 0xe00009dd, 0xa647: 0xe0000a53,\n\t0xa648: 0xe0000ae8, 0xa649: 0xe0000ae2, 0xa64a: 0xe0000af4, 0xa64b: 0xe0000b20,\n\t0xa64c: 0xe0000c2b, 0xa64d: 0xe0000c25, 0xa64e: 0xe0000c37, 0xa64f: 0xe0000c43,\n\t0xa650: 0xe0000ab3, 0xa651: 0xe0000d63, 0xa652: 0xe0000d9a, 0xa653: 0xe0000d94,\n\t0xa654: 0xe0000da6, 0xa655: 0xe0000de6, 0xa656: 0x002ee483, 0xa657: 0x40093e20,\n\t0xa658: 0xe0000e12, 0xa659: 0xe0000fe1, 0xa65a: 0xe0000fdb, 0xa65b: 0xe0000fed,\n\t0xa65c: 0x00306e83, 0xa65d: 0xe0001102, 0xa65e: 0x00318888, 0xa65f: 0xe0000f7b,\n\t0xa660: 0xe00008f2, 0xa661: 0xe00008ec, 0xa662: 0xe000091e, 0xa663: 0xe0000966,\n\t0xa664: 0xe0000958, 0xa665: 0xe000094a, 0xa666: 0xe00009d5, 0xa667: 0xe0000a4d,\n\t0xa668: 0xe0000ae5, 0xa669: 0xe0000adf, 0xa66a: 0xe0000af1, 0xa66b: 0xe0000b1d,\n\t0xa66c: 0xe0000c28, 0xa66d: 0xe0000c22, 0xa66e: 0xe0000c34, 0xa66f: 0xe0000c40,\n\t0xa670: 0xe0000aad, 0xa671: 0xe0000d60, 0xa672: 0xe0000d97, 0xa673: 0xe0000d91,\n\t0xa674: 0xe0000da3, 0xa675: 0xe0000de3, 0xa676: 0x402ee420, 0xa677: 0x40093c20,\n\t0xa678: 0xe0000e0f, 0xa679: 0xe0000fde, 0xa67a: 0xe0000fd8, 0xa67b: 0xe0000fea,\n\t0xa67c: 0x40306e20, 0xa67d: 0xe00010ff, 0xa67e: 0x40318820, 0xa67f: 0xe0001114,\n\t// Block 0x29a, offset 0xa680\n\t0xa680: 0xe0000cfe, 0xa681: 0xe0000cf8, 0xa682: 0xe0000cf5, 0xa683: 0xe0000d51,\n\t0xa684: 0xe0000d4e, 0xa685: 0xe0000d6f, 0xa686: 0xe0000d6c, 0xa687: 0xe0000d5d,\n\t0xa688: 0xe0000d5a, 0xa689: 0xf0000404, 0xa68a: 0x002eda88, 0xa68b: 0x402eda20,\n\t0xa68c: 0xe0000e2e, 0xa68d: 0xe0000e2b, 0xa68e: 0xe0000da0, 0xa68f: 0xe0000d9d,\n\t0xa690: 0x002ee4a3, 0xa691: 0x402ee421, 0xa692: 0xe0000e93, 0xa693: 0xe0000e8f,\n\t0xa694: 0xe0000eca, 0xa695: 0xe0000ec7, 0xa696: 0xe0000edc, 0xa697: 0xe0000ed9,\n\t0xa698: 0xe0000ed0, 0xa699: 0xe0000ecd, 0xa69a: 0xe0000f1f, 0xa69b: 0xe0000f1c,\n\t0xa69c: 0xe0000f2d, 0xa69d: 0xe0000f2a, 0xa69e: 0xe0000f47, 0xa69f: 0xe0000f44,\n\t0xa6a0: 0xe0000f33, 0xa6a1: 0xe0000f30, 0xa6a2: 0xe0000f99, 0xa6a3: 0xe0000f96,\n\t0xa6a4: 0xe0000f8a, 0xa6a5: 0xe0000f87, 0xa6a6: 0x00303688, 0xa6a7: 0x40303620,\n\t0xa6a8: 0xe000102b, 0xa6a9: 0xe0001028, 0xa6aa: 0xe000103f, 0xa6ab: 0xe000103c,\n\t0xa6ac: 0xe0000fe7, 0xa6ad: 0xe0000fe4, 0xa6ae: 0xe0000ff9, 0xa6af: 0xe0000ff6,\n\t0xa6b0: 0x00306ea3, 0xa6b1: 0x40306e21, 0xa6b2: 0xe0001039, 0xa6b3: 0xe0001036,\n\t0xa6b4: 0xe00010d8, 0xa6b5: 0xe00010d5, 0xa6b6: 0xe000110e, 0xa6b7: 0xe000110b,\n\t0xa6b8: 0xe0001117, 0xa6b9: 0xe000113b, 0xa6ba: 0xe0001138, 0xa6bb: 0xe000114d,\n\t0xa6bc: 0xe000114a, 0xa6bd: 0xe0001147, 0xa6be: 0xe0001144, 0xa6bf: 0xe0000f64,\n\t// Block 0x29b, offset 0xa6c0\n\t0xa6c0: 0x40321220, 0xa6c1: 0x40321a20, 0xa6c2: 0x40322220, 0xa6c3: 0x40322a20,\n\t0xa6c4: 0xe0000ad5, 0xa6c5: 0xe0000ad1, 0xa6c6: 0xe0000acd, 0xa6c7: 0xf0000a0a,\n\t0xa6c8: 0xf000040a, 0xa6c9: 0xf0000404, 0xa6ca: 0xf0000a0a, 0xa6cb: 0xf000040a,\n\t0xa6cc: 0xf0000404, 0xa6cd: 0xe0000947, 0xa6ce: 0xe0000944, 0xa6cf: 0xe0000c3d,\n\t0xa6d0: 0xe0000c3a, 0xa6d1: 0xe0000dcc, 0xa6d2: 0xe0000dc9, 0xa6d3: 0xe0000ff3,\n\t0xa6d4: 0xe0000ff0, 0xa6d5: 0xe0002964, 0xa6d6: 0xe0002961, 0xa6d7: 0xe0002952,\n\t0xa6d8: 0xe000294f, 0xa6d9: 0xe000295e, 0xa6da: 0xe000295b, 0xa6db: 0xe0002958,\n\t0xa6dc: 0xe0002955, 0xa6dd: 0x402cae20, 0xa6de: 0xe0000962, 0xa6df: 0xe000095e,\n\t0xa6e0: 0xe0000976, 0xa6e1: 0xe0000972, 0xa6e2: 0xe00009f4, 0xa6e3: 0xe00009ef,\n\t0xa6e4: 0x002d3a88, 0xa6e5: 0x402d3a20, 0xa6e6: 0xe0000bbe, 0xa6e7: 0xe0000bbb,\n\t0xa6e8: 0xe0000c99, 0xa6e9: 0xe0000c96, 0xa6ea: 0xe0000e20, 0xa6eb: 0xe0000e1d,\n\t0xa6ec: 0xe0000e27, 0xa6ed: 0xe0000e23, 0xa6ee: 0xe0001162, 0xa6ef: 0xe000115f,\n\t0xa6f0: 0xe0000c8d, 0xa6f1: 0xf0000a0a, 0xa6f2: 0xf000040a, 0xa6f3: 0xf0000404,\n\t0xa6f4: 0xe0000bac, 0xa6f5: 0xe0000ba9, 0xa6f6: 0x002d7888, 0xa6f7: 0x00319488,\n\t0xa6f8: 0xe0000d57, 0xa6f9: 0xe0000d54, 0xa6fa: 0xe0000954, 0xa6fb: 0xe0000950,\n\t0xa6fc: 0xe00009ea, 0xa6fd: 0xe00009e5, 0xa6fe: 0xe0000e19, 0xa6ff: 0xe0000e15,\n\t// Block 0x29c, offset 0xa700\n\t0xa700: 0xe000098f, 0xa701: 0xe000098c, 0xa702: 0xe0000995, 0xa703: 0xe0000992,\n\t0xa704: 0xe0000b62, 0xa705: 0xe0000b5f, 0xa706: 0xe0000b68, 0xa707: 0xe0000b65,\n\t0xa708: 0xe0000c6c, 0xa709: 0xe0000c69, 0xa70a: 0xe0000c72, 0xa70b: 0xe0000c6f,\n\t0xa70c: 0xe0000e4a, 0xa70d: 0xe0000e47, 0xa70e: 0xe0000e50, 0xa70f: 0xe0000e4d,\n\t0xa710: 0xe0000ee8, 0xa711: 0xe0000ee5, 0xa712: 0xe0000eee, 0xa713: 0xe0000eeb,\n\t0xa714: 0xe0001053, 0xa715: 0xe0001050, 0xa716: 0xe0001059, 0xa717: 0xe0001056,\n\t0xa718: 0xe0000f61, 0xa719: 0xe0000f5e, 0xa71a: 0xe0000fa5, 0xa71b: 0xe0000fa2,\n\t0xa71c: 0x00312288, 0xa71d: 0x40312220, 0xa71e: 0xe0000bf4, 0xa71f: 0xe0000bf1,\n\t0xa720: 0x002ebc88, 0xa721: 0x402c8c20, 0xa722: 0x002f2288, 0xa723: 0x402f2220,\n\t0xa724: 0x00314088, 0xa725: 0x40314020, 0xa726: 0xe000096f, 0xa727: 0xe000096c,\n\t0xa728: 0xe0000b32, 0xa729: 0xe0000b2f, 0xa72a: 0xe000294c, 0xa72b: 0xe0002949,\n\t0xa72c: 0xe0000dfd, 0xa72d: 0xe0000df9, 0xa72e: 0xe0000e04, 0xa72f: 0xe0000e01,\n\t0xa730: 0xe0000e0b, 0xa731: 0xe0000e07, 0xa732: 0xe0001129, 0xa733: 0xe0001126,\n\t0xa734: 0x402e5e20, 0xa735: 0x402ed020, 0xa736: 0x40305a20, 0xa737: 0x402dd420,\n\t0xa738: 0xe0000abf, 0xa739: 0xe0000ec4, 0xa73a: 0x002be888, 0xa73b: 0x002c4488,\n\t0xa73c: 0x402c4420, 0xa73d: 0x002e3888, 0xa73e: 0x00303e88, 0xa73f: 0x402ffc20,\n\t// Block 0x29d, offset 0xa740\n\t0xa740: 0x00339288, 0xa741: 0x40339220, 0xa742: 0x0033a088, 0xa743: 0x4033a020,\n\t0xa744: 0x0033ee88, 0xa745: 0x4033ee20, 0xa746: 0x00341088, 0xa747: 0x40341020,\n\t0xa748: 0x0034a488, 0xa749: 0x4034a420, 0xa74a: 0x0034ec88, 0xa74b: 0x4034ec20,\n\t0xa74c: 0x00354288, 0xa74d: 0x40354220, 0xa74e: 0x00355688, 0xa74f: 0x40355620,\n\t0xa750: 0x0033f088, 0xa751: 0x4033f020, 0xa752: 0x00349688, 0xa753: 0x40349620,\n\t0xa754: 0x0034a688, 0xa755: 0x4034a620, 0xa756: 0x00353888, 0xa757: 0x40353820,\n\t0xa758: 0x0036cc88, 0xa759: 0x4036cc20, 0xa75a: 0x00348288, 0xa75b: 0x40348220,\n\t0xa75c: 0x00372e88, 0xa75d: 0x40372e20, 0xa75e: 0x00348088, 0xa75f: 0x40348020,\n\t0xa760: 0x00349888, 0xa761: 0x40349820, 0xa762: 0x0034da88, 0xa763: 0x4034da20,\n\t0xa764: 0x00351688, 0xa765: 0x40351620, 0xa766: 0x0035dc88, 0xa767: 0x4035dc20,\n\t0xa771: 0x00384288, 0xa772: 0x00384488, 0xa773: 0x00384688,\n\t0xa774: 0x00384888, 0xa775: 0xc6042fd1, 0xa776: 0x00384c88, 0xa777: 0x00384e88,\n\t0xa778: 0x00385088, 0xa779: 0x00385288, 0xa77a: 0x00385488, 0xa77b: 0x00385688,\n\t0xa77c: 0x00385888, 0xa77d: 0x00385a88, 0xa77e: 0x00385c88, 0xa77f: 0x00385e88,\n\t// Block 0x29e, offset 0xa780\n\t0xa780: 0x40388020, 0xa781: 0x40388220, 0xa782: 0x40388420, 0xa783: 0x40388620,\n\t0xa784: 0x40388820, 0xa785: 0x40388a20, 0xa786: 0x40388c20, 0xa787: 0x40388a20,\n\t0xa789: 0x40026e20, 0xa78a: 0x40021c20,\n\t0xa78f: 0x4027e420,\n\t0xa791: 0xadc00000, 0xa792: 0xae600000, 0xa793: 0xae600000,\n\t0xa794: 0xae600000, 0xa795: 0xae600000, 0xa796: 0xadc00000, 0xa797: 0xae600000,\n\t0xa798: 0xae600000, 0xa799: 0xae600000, 0xa79a: 0xade00000, 0xa79b: 0xadc00000,\n\t0xa79c: 0xae600000, 0xa79d: 0xae600000, 0xa79e: 0xae600000, 0xa79f: 0xae600000,\n\t0xa7a0: 0xae600000, 0xa7a1: 0xae600000, 0xa7a2: 0xadc00000, 0xa7a3: 0xadc00000,\n\t0xa7a4: 0xadc00000, 0xa7a5: 0xadc00000, 0xa7a6: 0xadc00000, 0xa7a7: 0xadc00000,\n\t0xa7a8: 0xae600000, 0xa7a9: 0xae600000, 0xa7aa: 0xadc00000, 0xa7ab: 0xae600000,\n\t0xa7ac: 0xae600000, 0xa7ad: 0xade00000, 0xa7ae: 0xae400000, 0xa7af: 0xae600000,\n\t0xa7b0: 0xa0a08502, 0xa7b1: 0xa0b08602, 0xa7b2: 0xa0c08702, 0xa7b3: 0xa0d08802,\n\t0xa7b4: 0xa0e08902, 0xa7b5: 0xa0f08a02, 0xa7b6: 0xa1008b02, 0xa7b7: 0xa1108c02,\n\t0xa7b8: 0xa1208d02, 0xa7b9: 0xa1308e02, 0xa7ba: 0xa1308e02, 0xa7bb: 0xa1408f02,\n\t0xa7bc: 0xa1509202, 0xa7bd: 0xa1600000, 0xa7be: 0x40055420, 0xa7bf: 0xa1709502,\n\t// Block 0x29f, offset 0xa7c0\n\t0xa7c0: 0xa0000000, 0xa7c1: 0xa0000000, 0xa7c2: 0xa0000000, 0xa7c3: 0xa0000000,\n\t0xa7c4: 0xa0000000, 0xa7c5: 0xa0000000, 0xa7c6: 0xa0000000, 0xa7c7: 0xa0000000,\n\t0xa7c8: 0xa0000000, 0xa7c9: 0x40020020, 0xa7ca: 0x40020220, 0xa7cb: 0x40020420,\n\t0xa7cc: 0x40020620, 0xa7cd: 0x40020820, 0xa7ce: 0xa0000000, 0xa7cf: 0xa0000000,\n\t0xa7d0: 0xa0000000, 0xa7d1: 0xa0000000, 0xa7d2: 0xa0000000, 0xa7d3: 0xa0000000,\n\t0xa7d4: 0xa0000000, 0xa7d5: 0xa0000000, 0xa7d6: 0xa0000000, 0xa7d7: 0xa0000000,\n\t0xa7d8: 0xa0000000, 0xa7d9: 0xa0000000, 0xa7da: 0xa0000000, 0xa7db: 0xa0000000,\n\t0xa7dc: 0xa0000000, 0xa7dd: 0xa0000000, 0xa7de: 0xa0000000, 0xa7df: 0xa0000000,\n\t0xa7e0: 0x40021220, 0xa7e1: 0x4002ba20, 0xa7e2: 0x4003e020, 0xa7e3: 0x4004ea20,\n\t0xa7e4: 0x4027de20, 0xa7e5: 0x4004ec20, 0xa7e6: 0x4004e620, 0xa7e7: 0x4003d220,\n\t0xa7e8: 0x4003f420, 0xa7e9: 0x4003f620, 0xa7ea: 0x4004d820, 0xa7eb: 0x40093820,\n\t0xa7ec: 0x40024020, 0xa7ed: 0x40021a20, 0xa7ee: 0x4002e420, 0xa7ef: 0x4004e220,\n\t0xa7f0: 0x4029cc20, 0xa7f1: 0x4029ce20, 0xa7f2: 0x4029d020, 0xa7f3: 0x4029d220,\n\t0xa7f4: 0x4029d420, 0xa7f5: 0x4029d620, 0xa7f6: 0x4029d820, 0xa7f7: 0x4029da20,\n\t0xa7f8: 0x4029dc20, 0xa7f9: 0x4029de20, 0xa7fa: 0x40026c20, 0xa7fb: 0x40026220,\n\t0xa7fc: 0x40094020, 0xa7fd: 0x40094220, 0xa7fe: 0x40094420, 0xa7ff: 0x4002c420,\n\t// Block 0x2a0, offset 0xa800\n\t0xa800: 0x4004d620, 0xa801: 0x002bde88, 0xa802: 0x002c0a88, 0xa803: 0xc60809c2,\n\t0xa804: 0x002c6288, 0xa805: 0x002c9888, 0xa806: 0x002d0888, 0xa807: 0xc60f3026,\n\t0xa808: 0x002d6888, 0xa809: 0xc6183081, 0xa80a: 0x002dcc88, 0xa80b: 0xc61d30c4,\n\t0xa80c: 0xc0030002, 0xa80d: 0x002e8288, 0xa80e: 0xc6263145, 0xa80f: 0xc33f3081,\n\t0xa810: 0x002f2c88, 0xa811: 0x002f5688, 0xa812: 0x002f7a88, 0xa813: 0xc58909c2,\n\t0xa814: 0x00302c88, 0xa815: 0xc3473081, 0xa816: 0x0030be88, 0xa817: 0x0030e288,\n\t0xa818: 0x0030f688, 0xa819: 0x00310088, 0xa81a: 0x00312a88, 0xa81b: 0x4003f820,\n\t0xa81c: 0x4004e420, 0xa81d: 0x4003fa20, 0xa81e: 0x40062420, 0xa81f: 0x40021620,\n\t0xa820: 0x40061e20, 0xa821: 0x402bde20, 0xa822: 0x402c0a20, 0xa823: 0xc60609b1,\n\t0xa824: 0x402c6220, 0xa825: 0x402c9820, 0xa826: 0x402d0820, 0xa827: 0xc60b2ff3,\n\t0xa828: 0x402d6820, 0xa829: 0xc6163081, 0xa82a: 0x402dcc20, 0xa82b: 0xc61a30a2,\n\t0xa82c: 0xc0000002, 0xa82d: 0x402e8220, 0xa82e: 0xc6223103, 0xa82f: 0xc33d3081,\n\t0xa830: 0x402f2c20, 0xa831: 0x402f5620, 0xa832: 0x402f7a20, 0xa833: 0xc34109b1,\n\t0xa834: 0x40302c20, 0xa835: 0xc3453081, 0xa836: 0x4030be20, 0xa837: 0x4030e220,\n\t0xa838: 0x4030f620, 0xa839: 0x40310020, 0xa83a: 0x40312a20, 0xa83b: 0x4003fc20,\n\t0xa83c: 0x40094820, 0xa83d: 0x4003fe20, 0xa83e: 0x40094c20, 0xa83f: 0xa0000000,\n\t// Block 0x2a1, offset 0xa840\n\t0xa840: 0xe0000d24, 0xa841: 0xe0000d21, 0xa842: 0xe0000d2a, 0xa843: 0xe0000d27,\n\t0xa844: 0x002ea083, 0xa845: 0x402ea020, 0xa846: 0xe0000d7b, 0xa847: 0xe0000d78,\n\t0xa848: 0xe0000d87, 0xa849: 0xe0000d84, 0xa84a: 0xe0000d81, 0xa84b: 0xe0000d7e,\n\t0xa84c: 0xe0000ded, 0xa84d: 0xe0000de9, 0xa84e: 0xe0000df5, 0xa84f: 0xe0000df1,\n\t0xa850: 0xe0000e3d, 0xa851: 0xe0000e39, 0xa852: 0xe0000e35, 0xa853: 0xe0000e31,\n\t0xa854: 0xe0000ea7, 0xa855: 0xe0000ea4, 0xa856: 0xe0000ead, 0xa857: 0xe0000eaa,\n\t0xa858: 0xe0000ed6, 0xa859: 0xe0000ed3, 0xa85a: 0xe0000ef4, 0xa85b: 0xe0000ef1,\n\t0xa85c: 0xe0000efb, 0xa85d: 0xe0000ef7, 0xa85e: 0xe0000f02, 0xa85f: 0xe0000eff,\n\t0xa860: 0xe0000f41, 0xa861: 0xe0000f3e, 0xa862: 0xe0000f53, 0xa863: 0xe0000f50,\n\t0xa864: 0xe0000f26, 0xa865: 0xe0000f22, 0xa866: 0xe0000f3a, 0xa867: 0xe0000f36,\n\t0xa868: 0xe0000f5a, 0xa869: 0xe0000f56, 0xa86a: 0xe0000f93, 0xa86b: 0xe0000f90,\n\t0xa86c: 0xe0000f9f, 0xa86d: 0xe0000f9c, 0xa86e: 0xe0000fb1, 0xa86f: 0xe0000fae,\n\t0xa870: 0xe0000fab, 0xa871: 0xe0000fa8, 0xa872: 0xe0001093, 0xa873: 0xe0001090,\n\t0xa874: 0xe000109f, 0xa875: 0xe000109c, 0xa876: 0xe0001099, 0xa877: 0xe0001096,\n\t0xa878: 0xe0001032, 0xa879: 0xe000102e, 0xa87a: 0xe0001046, 0xa87b: 0xe0001042,\n\t0xa87c: 0xe00010a9, 0xa87d: 0xe00010a6, 0xa87e: 0xe00010af, 0xa87f: 0xe00010ac,\n\t// Block 0x2a2, offset 0xa880\n\t0xa880: 0xe0000b03, 0xa881: 0xe0000aff, 0xa882: 0xe0000b13, 0xa883: 0xe0000b0f,\n\t0xa884: 0xe0000b0b, 0xa885: 0xe0000b07, 0xa886: 0xe0000b75, 0xa887: 0xe0000b71,\n\t0xa888: 0xe0000c66, 0xa889: 0xe0000c63, 0xa88a: 0x002d9c83, 0xa88b: 0x402d9c20,\n\t0xa88c: 0x002ee483, 0xa88d: 0x402ee420, 0xa88e: 0xe0000e44, 0xa88f: 0xe0000e41,\n\t0xa890: 0xe0000dad, 0xa891: 0xe0000da9, 0xa892: 0xe0000db5, 0xa893: 0xe0000db1,\n\t0xa894: 0xe0000dc5, 0xa895: 0xe0000dc1, 0xa896: 0xe0000dbd, 0xa897: 0xe0000db9,\n\t0xa898: 0xe0003c96, 0xa899: 0xe0003c93, 0xa89a: 0xe0000e5d, 0xa89b: 0xe0000e59,\n\t0xa89c: 0xe0000e65, 0xa89d: 0xe0000e61, 0xa89e: 0xe0000e75, 0xa89f: 0xe0000e71,\n\t0xa8a0: 0xe0000e6d, 0xa8a1: 0xe0000e69, 0xa8a2: 0xe0003c9c, 0xa8a3: 0xe0003c99,\n\t0xa8a4: 0x00306e83, 0xa8a5: 0x40306e20, 0xa8a6: 0xe000104d, 0xa8a7: 0xe000104a,\n\t0xa8a8: 0xe0001066, 0xa8a9: 0xe0001062, 0xa8aa: 0xe000106e, 0xa8ab: 0xe000106a,\n\t0xa8ac: 0xe000107e, 0xa8ad: 0xe000107a, 0xa8ae: 0xe0001076, 0xa8af: 0xe0001072,\n\t0xa8b0: 0xe0003ca2, 0xa8b1: 0xe0003c9f, 0xa8b2: 0xe0001108, 0xa8b3: 0xe0001105,\n\t0xa8b4: 0xe0001135, 0xa8b5: 0xe0001132, 0xa8b6: 0xe000112f, 0xa8b7: 0xe000112c,\n\t0xa8b8: 0xe000111d, 0xa8b9: 0xe000111a, 0xa8ba: 0xe0000d0a, 0xa8bb: 0xe0000d07,\n\t0xa8bc: 0x0030d888, 0xa8bd: 0x4030d820, 0xa8be: 0x00312088, 0xa8bf: 0x40312020,\n\t// Block 0x2a3, offset 0xa8c0\n\t0xa8c0: 0xa0000000, 0xa8c1: 0xa0000000, 0xa8c2: 0xa0000000, 0xa8c3: 0xa0000000,\n\t0xa8c4: 0xa0000000, 0xa8c5: 0xa0000000, 0xa8c6: 0xa0000000, 0xa8c7: 0xa0000000,\n\t0xa8c8: 0xa0000000, 0xa8c9: 0x40020020, 0xa8ca: 0x40020220, 0xa8cb: 0x40020420,\n\t0xa8cc: 0x40020620, 0xa8cd: 0x40020820, 0xa8ce: 0xa0000000, 0xa8cf: 0xa0000000,\n\t0xa8d0: 0xa0000000, 0xa8d1: 0xa0000000, 0xa8d2: 0xa0000000, 0xa8d3: 0xa0000000,\n\t0xa8d4: 0xa0000000, 0xa8d5: 0xa0000000, 0xa8d6: 0xa0000000, 0xa8d7: 0xa0000000,\n\t0xa8d8: 0xa0000000, 0xa8d9: 0xa0000000, 0xa8da: 0xa0000000, 0xa8db: 0xa0000000,\n\t0xa8dc: 0xa0000000, 0xa8dd: 0xa0000000, 0xa8de: 0xa0000000, 0xa8df: 0xa0000000,\n\t0xa8e0: 0x40021220, 0xa8e1: 0x4002ba20, 0xa8e2: 0x4003e020, 0xa8e3: 0x4004ea20,\n\t0xa8e4: 0x4027de20, 0xa8e5: 0x4004ec20, 0xa8e6: 0x4004e620, 0xa8e7: 0x4003d220,\n\t0xa8e8: 0x4003f420, 0xa8e9: 0x4003f620, 0xa8ea: 0x4004d820, 0xa8eb: 0x40093820,\n\t0xa8ec: 0x40024020, 0xa8ed: 0x40021a20, 0xa8ee: 0x4002e420, 0xa8ef: 0x4004e220,\n\t0xa8f0: 0x4029cc20, 0xa8f1: 0x4029ce20, 0xa8f2: 0x4029d020, 0xa8f3: 0x4029d220,\n\t0xa8f4: 0x4029d420, 0xa8f5: 0x4029d620, 0xa8f6: 0x4029d820, 0xa8f7: 0x4029da20,\n\t0xa8f8: 0x4029dc20, 0xa8f9: 0x4029de20, 0xa8fa: 0x40026c20, 0xa8fb: 0x40026220,\n\t0xa8fc: 0x40094020, 0xa8fd: 0x40094220, 0xa8fe: 0x40094420, 0xa8ff: 0x4002c420,\n\t// Block 0x2a4, offset 0xa900\n\t0xa900: 0x4004d620, 0xa901: 0xc63031a1, 0xa902: 0x002c0a88, 0xa903: 0x002c3a88,\n\t0xa904: 0x002c6288, 0xa905: 0xc63631e1, 0xa906: 0x002d0888, 0xa907: 0x002d2288,\n\t0xa908: 0x002d6888, 0xa909: 0xc63a31e1, 0xa90a: 0x002dcc88, 0xa90b: 0x002dfe88,\n\t0xa90c: 0xc0030002, 0xa90d: 0x002e8288, 0xa90e: 0x002e9e88, 0xa90f: 0xc63f3201,\n\t0xa910: 0x002f2c88, 0xa911: 0x002f5688, 0xa912: 0x002f7a88, 0xa913: 0x002fe688,\n\t0xa914: 0x00302c88, 0xa915: 0xc64431e1, 0xa916: 0x0030be88, 0xa917: 0x0030e288,\n\t0xa918: 0x0030f688, 0xa919: 0xc64831e1, 0xa91a: 0x00312a88, 0xa91b: 0x4003f820,\n\t0xa91c: 0x4004e420, 0xa91d: 0x4003fa20, 0xa91e: 0x40062420, 0xa91f: 0x40021620,\n\t0xa920: 0x40061e20, 0xa921: 0xc62c31a1, 0xa922: 0x402c0a20, 0xa923: 0x402c3a20,\n\t0xa924: 0x402c6220, 0xa925: 0xc63431e1, 0xa926: 0x402d0820, 0xa927: 0x402d2220,\n\t0xa928: 0x402d6820, 0xa929: 0xc63831e1, 0xa92a: 0x402dcc20, 0xa92b: 0x402dfe20,\n\t0xa92c: 0xc0000002, 0xa92d: 0x402e8220, 0xa92e: 0x402e9e20, 0xa92f: 0xc63c3201,\n\t0xa930: 0x402f2c20, 0xa931: 0x402f5620, 0xa932: 0x402f7a20, 0xa933: 0x402fe620,\n\t0xa934: 0x40302c20, 0xa935: 0xc64231e1, 0xa936: 0x4030be20, 0xa937: 0x4030e220,\n\t0xa938: 0x4030f620, 0xa939: 0xc64631e1, 0xa93a: 0x40312a20, 0xa93b: 0x4003fc20,\n\t0xa93c: 0x40094820, 0xa93d: 0x4003fe20, 0xa93e: 0x40094c20, 0xa93f: 0xa0000000,\n\t// Block 0x2a5, offset 0xa940\n\t0xa940: 0xe00008f5, 0xa941: 0x002c0883, 0xa942: 0xe0000921, 0xa943: 0xe0000969,\n\t0xa944: 0x00320ca3, 0xa945: 0x00321083, 0xa946: 0x00320c83, 0xa947: 0xe0000a53,\n\t0xa948: 0xe0000ae8, 0xa949: 0x002d0683, 0xa94a: 0xe0000af4, 0xa94b: 0xe0000b20,\n\t0xa94c: 0xe0000c2b, 0xa94d: 0x002dca83, 0xa94e: 0xe0000c37, 0xa94f: 0xe0000c43,\n\t0xa950: 0x002c6483, 0xa951: 0xe0000d63, 0xa952: 0xe0000d9a, 0xa953: 0x002f2a83,\n\t0xa954: 0xe0000da6, 0xa955: 0xe0000de6, 0xa956: 0x00320e83, 0xa957: 0x40093e20,\n\t0xa958: 0x00320ea3, 0xa959: 0xe0000fe1, 0xa95a: 0x0030bc83, 0xa95b: 0xe0000fed,\n\t0xa95c: 0xe0000fff, 0xa95d: 0x00312883, 0xa95e: 0x00318888, 0xa95f: 0xe0000f7b,\n\t0xa960: 0xe00008f2, 0xa961: 0x402c0820, 0xa962: 0xe000091e, 0xa963: 0xe0000966,\n\t0xa964: 0x40320c21, 0xa965: 0x40321020, 0xa966: 0x40320c20, 0xa967: 0xe0000a4d,\n\t0xa968: 0xe0000ae5, 0xa969: 0x402d0620, 0xa96a: 0xe0000af1, 0xa96b: 0xe0000b1d,\n\t0xa96c: 0xe0000c28, 0xa96d: 0x402dca20, 0xa96e: 0xe0000c34, 0xa96f: 0xe0000c40,\n\t0xa970: 0x402c6420, 0xa971: 0xe0000d60, 0xa972: 0xe0000d97, 0xa973: 0x402f2a20,\n\t0xa974: 0xe0000da3, 0xa975: 0xe0000de3, 0xa976: 0x40320e20, 0xa977: 0x40093c20,\n\t0xa978: 0x40320e21, 0xa979: 0xe0000fde, 0xa97a: 0x4030bc20, 0xa97b: 0xe0000fea,\n\t0xa97c: 0xe0000ffc, 0xa97d: 0x40312820, 0xa97e: 0x40318820, 0xa97f: 0xe0001114,\n\t// Block 0x2a6, offset 0xa980\n\t0xa980: 0xe0000983, 0xa981: 0xe0000980, 0xa982: 0xe00008fb, 0xa983: 0xe00008f8,\n\t0xa984: 0xe000097d, 0xa985: 0xe000097a, 0xa986: 0xe0000a38, 0xa987: 0xe0000a35,\n\t0xa988: 0xe0000a3e, 0xa989: 0xe0000a3b, 0xa98a: 0xe0000a4a, 0xa98b: 0xe0000a47,\n\t0xa98c: 0xe0000a44, 0xa98d: 0xe0000a41, 0xa98e: 0xe0000a86, 0xa98f: 0xe0000a83,\n\t0xa990: 0x002c62a3, 0xa991: 0x402c6221, 0xa992: 0xe0000b46, 0xa993: 0xe0000b43,\n\t0xa994: 0xe0000aee, 0xa995: 0xe0000aeb, 0xa996: 0xe0000b2c, 0xa997: 0xe0000b29,\n\t0xa998: 0xe0000b40, 0xa999: 0xe0000b3d, 0xa99a: 0xe0000b1a, 0xa99b: 0xe0000b17,\n\t0xa99c: 0xe0000bb8, 0xa99d: 0xe0000bb5, 0xa99e: 0xe0000bb2, 0xa99f: 0xe0000baf,\n\t0xa9a0: 0xe0000bc4, 0xa9a1: 0xe0000bc1, 0xa9a2: 0xe0000bca, 0xa9a3: 0xe0000bc7,\n\t0xa9a4: 0xe0000bee, 0xa9a5: 0xe0000beb, 0xa9a6: 0xe0000c1b, 0xa9a7: 0xe0000c18,\n\t0xa9a8: 0xe0000c51, 0xa9a9: 0xe0000c4e, 0xa9aa: 0xe0000c60, 0xa9ab: 0xe0000c5d,\n\t0xa9ac: 0xe0000c31, 0xa9ad: 0xe0000c2e, 0xa9ae: 0xe0000c5a, 0xa9af: 0xe0000c57,\n\t0xa9b0: 0xe0000c54, 0xa9b1: 0x402da220, 0xa9b2: 0xf0000a0a, 0xa9b3: 0xf0000404,\n\t0xa9b4: 0xe0000c8a, 0xa9b5: 0xe0000c87, 0xa9b6: 0xe0000c9f, 0xa9b7: 0xe0000c9c,\n\t0xa9b8: 0x402f7220, 0xa9b9: 0xe0000ccc, 0xa9ba: 0xe0000cc9, 0xa9bb: 0xe0000cd8,\n\t0xa9bc: 0xe0000cd5, 0xa9bd: 0xe0000cd2, 0xa9be: 0xe0000ccf, 0xa9bf: 0xe0000d04,\n\t// Block 0x2a7, offset 0xa9c0\n\t0xa9c0: 0x40321220, 0xa9c1: 0x40321a20, 0xa9c2: 0x40322220, 0xa9c3: 0x40322a20,\n\t0xa9c4: 0xe0000ad5, 0xa9c5: 0xe0000ad1, 0xa9c6: 0xe0000acd, 0xa9c7: 0xf0000a0a,\n\t0xa9c8: 0xf000040a, 0xa9c9: 0xf0000404, 0xa9ca: 0xf0000a0a, 0xa9cb: 0xf000040a,\n\t0xa9cc: 0xf0000404, 0xa9cd: 0xe0000947, 0xa9ce: 0xe0000944, 0xa9cf: 0xe0000c3d,\n\t0xa9d0: 0xe0000c3a, 0xa9d1: 0xe0000dcc, 0xa9d2: 0xe0000dc9, 0xa9d3: 0xe0000ff3,\n\t0xa9d4: 0xe0000ff0, 0xa9d5: 0xe000101e, 0xa9d6: 0xe000101a, 0xa9d7: 0xe0003cde,\n\t0xa9d8: 0xe0003cdb, 0xa9d9: 0xe0001016, 0xa9da: 0xe0001012, 0xa9db: 0xe000100e,\n\t0xa9dc: 0xe000100a, 0xa9dd: 0x402cae20, 0xa9de: 0xe000299d, 0xa9df: 0xe000299a,\n\t0xa9e0: 0xe0000976, 0xa9e1: 0xe0000972, 0xa9e2: 0xe0002997, 0xa9e3: 0xe0002994,\n\t0xa9e4: 0x002d3a88, 0xa9e5: 0x402d3a20, 0xa9e6: 0xe0000bbe, 0xa9e7: 0xe0000bbb,\n\t0xa9e8: 0xe0000c99, 0xa9e9: 0xe0000c96, 0xa9ea: 0xe0000e20, 0xa9eb: 0xe0000e1d,\n\t0xa9ec: 0xe0000e27, 0xa9ed: 0xe0000e23, 0xa9ee: 0xe0001162, 0xa9ef: 0xe000115f,\n\t0xa9f0: 0xe0000c8d, 0xa9f1: 0xf0000a0a, 0xa9f2: 0xf000040a, 0xa9f3: 0xf0000404,\n\t0xa9f4: 0xe0000bac, 0xa9f5: 0xe0000ba9, 0xa9f6: 0x002d7888, 0xa9f7: 0x00319488,\n\t0xa9f8: 0xe0000d57, 0xa9f9: 0xe0000d54, 0xa9fa: 0xe00029b5, 0xa9fb: 0xe00029b2,\n\t0xa9fc: 0xe0002991, 0xa9fd: 0xe000298e, 0xa9fe: 0xe00037ee, 0xa9ff: 0xe00037eb,\n\t// Block 0x2a8, offset 0xaa00\n\t0xaa00: 0xe000098f, 0xaa01: 0xe000098c, 0xaa02: 0xe0000995, 0xaa03: 0xe0000992,\n\t0xaa04: 0xe0000b62, 0xaa05: 0xe0000b5f, 0xaa06: 0xe0000b68, 0xaa07: 0xe0000b65,\n\t0xaa08: 0xe0000c6c, 0xaa09: 0xe0000c69, 0xaa0a: 0xe0000c72, 0xaa0b: 0xe0000c6f,\n\t0xaa0c: 0xe0000e4a, 0xaa0d: 0xe0000e47, 0xaa0e: 0xe0000e50, 0xaa0f: 0xe0000e4d,\n\t0xaa10: 0xe0000ee8, 0xaa11: 0xe0000ee5, 0xaa12: 0xe0000eee, 0xaa13: 0xe0000eeb,\n\t0xaa14: 0xe0001053, 0xaa15: 0xe0001050, 0xaa16: 0xe0001059, 0xaa17: 0xe0001056,\n\t0xaa18: 0xe0000f61, 0xaa19: 0xe0000f5e, 0xaa1a: 0xe0000fa5, 0xaa1b: 0xe0000fa2,\n\t0xaa1c: 0x00312288, 0xaa1d: 0x40312220, 0xaa1e: 0xe0000bf4, 0xaa1f: 0xe0000bf1,\n\t0xaa20: 0x002ebc88, 0xaa21: 0x402c8c20, 0xaa22: 0x002f2288, 0xaa23: 0x402f2220,\n\t0xaa24: 0x00314088, 0xaa25: 0x40314020, 0xaa26: 0xe000096f, 0xaa27: 0xe000096c,\n\t0xaa28: 0xe0000b32, 0xaa29: 0xe0000b2f, 0xaa2a: 0xe00037e8, 0xaa2b: 0xe00037e5,\n\t0xaa2c: 0xe0000dfd, 0xaa2d: 0xe0000df9, 0xaa2e: 0xe0000e04, 0xaa2f: 0xe0000e01,\n\t0xaa30: 0xe0000e0b, 0xaa31: 0xe0000e07, 0xaa32: 0xe0001129, 0xaa33: 0xe0001126,\n\t0xaa34: 0x402e5e20, 0xaa35: 0x402ed020, 0xaa36: 0x40305a20, 0xaa37: 0x402dd420,\n\t0xaa38: 0xe0000abf, 0xaa39: 0xe0000ec4, 0xaa3a: 0x002be888, 0xaa3b: 0x002c4488,\n\t0xaa3c: 0x402c4420, 0xaa3d: 0x002e3888, 0xaa3e: 0x00303e88, 0xaa3f: 0x402ffc20,\n\t// Block 0x2a9, offset 0xaa40\n\t0xaa40: 0xe00009b1, 0xaa41: 0xe00009ae, 0xaa42: 0xe0000a22, 0xaa43: 0xe0000a1f,\n\t0xaa44: 0xe0000a28, 0xaa45: 0xe0000a25, 0xaa46: 0xe0000a2e, 0xaa47: 0xe0000a2b,\n\t0xaa48: 0xe0000a5a, 0xaa49: 0xe0000a56, 0xaa4a: 0xe0000a8c, 0xaa4b: 0xe0000a89,\n\t0xaa4c: 0xe0000a98, 0xaa4d: 0xe0000a95, 0xaa4e: 0xe0000aa4, 0xaa4f: 0xe0000aa1,\n\t0xaa50: 0xe0000a92, 0xaa51: 0xe0000a8f, 0xaa52: 0xe0000a9e, 0xaa53: 0xe0000a9b,\n\t0xaa54: 0xe0000b55, 0xaa55: 0xe0000b51, 0xaa56: 0xe0003cba, 0xaa57: 0xe0003cb7,\n\t0xaa58: 0xe0000b7c, 0xaa59: 0xe0000b79, 0xaa5a: 0xe0000b82, 0xaa5b: 0xe0000b7f,\n\t0xaa5c: 0xe0000b39, 0xaa5d: 0xe0000b35, 0xaa5e: 0xe0000b8c, 0xaa5f: 0xe0000b89,\n\t0xaa60: 0xe0000bd0, 0xaa61: 0xe0000bcd, 0xaa62: 0xe0000c00, 0xaa63: 0xe0000bfd,\n\t0xaa64: 0xe0000c0c, 0xaa65: 0xe0000c09, 0xaa66: 0xe0000bfa, 0xaa67: 0xe0000bf7,\n\t0xaa68: 0xe0000c06, 0xaa69: 0xe0000c03, 0xaa6a: 0xe0000c12, 0xaa6b: 0xe0000c0f,\n\t0xaa6c: 0xe0000c7e, 0xaa6d: 0xe0000c7b, 0xaa6e: 0xe0003cc0, 0xaa6f: 0xe0003cbd,\n\t0xaa70: 0xe0000c93, 0xaa71: 0xe0000c90, 0xaa72: 0xe0000cab, 0xaa73: 0xe0000ca8,\n\t0xaa74: 0xe0000cb1, 0xaa75: 0xe0000cae, 0xaa76: 0xe0000cde, 0xaa77: 0xe0000cdb,\n\t0xaa78: 0xe0000ce5, 0xaa79: 0xe0000ce1, 0xaa7a: 0xe0000cf2, 0xaa7b: 0xe0000cef,\n\t0xaa7c: 0xe0000cec, 0xaa7d: 0xe0000ce9, 0xaa7e: 0xe0000d1e, 0xaa7f: 0xe0000d1b,\n\t// Block 0x2aa, offset 0xaa80\n\t0xaa80: 0xe0000d24, 0xaa81: 0xe0000d21, 0xaa82: 0xe0000d2a, 0xaa83: 0xe0000d27,\n\t0xaa84: 0xe0000d69, 0xaa85: 0xe0000d66, 0xaa86: 0xe0000d7b, 0xaa87: 0xe0000d78,\n\t0xaa88: 0xe0000d87, 0xaa89: 0xe0000d84, 0xaa8a: 0xe0000d81, 0xaa8b: 0xe0000d7e,\n\t0xaa8c: 0xe0003ccc, 0xaa8d: 0xe0003cc9, 0xaa8e: 0xe0003cf0, 0xaa8f: 0xe0003ced,\n\t0xaa90: 0xe0000e3d, 0xaa91: 0xe0000e39, 0xaa92: 0xe0003cd2, 0xaa93: 0xe0003ccf,\n\t0xaa94: 0xe0000ea7, 0xaa95: 0xe0000ea4, 0xaa96: 0xe0000ead, 0xaa97: 0xe0000eaa,\n\t0xaa98: 0xe0000ed6, 0xaa99: 0xe0000ed3, 0xaa9a: 0xe0000ef4, 0xaa9b: 0xe0000ef1,\n\t0xaa9c: 0xe0000efb, 0xaa9d: 0xe0000ef7, 0xaa9e: 0xe0000f02, 0xaa9f: 0xe0000eff,\n\t0xaaa0: 0xe0000f41, 0xaaa1: 0xe0000f3e, 0xaaa2: 0xe0000f53, 0xaaa3: 0xe0000f50,\n\t0xaaa4: 0xe0000f26, 0xaaa5: 0xe0000f22, 0xaaa6: 0xe0000f3a, 0xaaa7: 0xe0000f36,\n\t0xaaa8: 0xe0000f5a, 0xaaa9: 0xe0000f56, 0xaaaa: 0xe0000f93, 0xaaab: 0xe0000f90,\n\t0xaaac: 0xe0000f9f, 0xaaad: 0xe0000f9c, 0xaaae: 0xe0000fb1, 0xaaaf: 0xe0000fae,\n\t0xaab0: 0xe0000fab, 0xaab1: 0xe0000fa8, 0xaab2: 0xe0001093, 0xaab3: 0xe0001090,\n\t0xaab4: 0xe000109f, 0xaab5: 0xe000109c, 0xaab6: 0xe0001099, 0xaab7: 0xe0001096,\n\t0xaab8: 0xe0003ce4, 0xaab9: 0xe0003ce1, 0xaaba: 0xe0001046, 0xaabb: 0xe0001042,\n\t0xaabc: 0xe00010a9, 0xaabd: 0xe00010a6, 0xaabe: 0xe00010af, 0xaabf: 0xe00010ac,\n\t// Block 0x2ab, offset 0xaac0\n\t0xaac0: 0xe00010d2, 0xaac1: 0xe00010cf, 0xaac2: 0xe00010cc, 0xaac3: 0xe00010c9,\n\t0xaac4: 0xe00010e1, 0xaac5: 0xe00010de, 0xaac6: 0xe00010e7, 0xaac7: 0xe00010e4,\n\t0xaac8: 0xe00010ed, 0xaac9: 0xe00010ea, 0xaaca: 0xe00010fc, 0xaacb: 0xe00010f9,\n\t0xaacc: 0xe00010f6, 0xaacd: 0xe00010f3, 0xaace: 0xe0001123, 0xaacf: 0xe0001120,\n\t0xaad0: 0xe0001141, 0xaad1: 0xe000113e, 0xaad2: 0xe0001153, 0xaad3: 0xe0001150,\n\t0xaad4: 0xe0001159, 0xaad5: 0xe0001156, 0xaad6: 0xe0000c15, 0xaad7: 0xe0000f8d,\n\t0xaad8: 0xe00010db, 0xaad9: 0xe0001111, 0xaada: 0xf0000404, 0xaadb: 0xe0000f70,\n\t0xaadc: 0x40300420, 0xaadd: 0x40300620, 0xaade: 0xe0000f7f, 0xaadf: 0x402c9620,\n\t0xaae0: 0xe000099b, 0xaae1: 0xe0000998, 0xaae2: 0xe0000989, 0xaae3: 0xe0000986,\n\t0xaae4: 0xe0003cae, 0xaae5: 0xe0003cab, 0xaae6: 0xe0000930, 0xaae7: 0xe000092c,\n\t0xaae8: 0xe0000940, 0xaae9: 0xe000093c, 0xaaea: 0xe0000938, 0xaaeb: 0xe0000934,\n\t0xaaec: 0xe00009aa, 0xaaed: 0xe00009a6, 0xaaee: 0xe0003ca8, 0xaaef: 0xe0003ca5,\n\t0xaaf0: 0xe000090a, 0xaaf1: 0xe0000906, 0xaaf2: 0xe000091a, 0xaaf3: 0xe0000916,\n\t0xaaf4: 0xe0000912, 0xaaf5: 0xe000090e, 0xaaf6: 0xe00009a2, 0xaaf7: 0xe000099e,\n\t0xaaf8: 0xe0000b6e, 0xaaf9: 0xe0000b6b, 0xaafa: 0xe0000b5c, 0xaafb: 0xe0000b59,\n\t0xaafc: 0xe0000b26, 0xaafd: 0xe0000b23, 0xaafe: 0xe0003cb4, 0xaaff: 0xe0003cb1,\n\t// Block 0x2ac, offset 0xab00\n\t0xab00: 0xe0000b03, 0xab01: 0xe0000aff, 0xab02: 0xe0000b13, 0xab03: 0xe0000b0f,\n\t0xab04: 0xe0000b0b, 0xab05: 0xe0000b07, 0xab06: 0xe0000b75, 0xab07: 0xe0000b71,\n\t0xab08: 0xe0000c66, 0xab09: 0xe0000c63, 0xab0a: 0xe0000c78, 0xab0b: 0xe0000c75,\n\t0xab0c: 0xe0000e84, 0xab0d: 0xe0000e81, 0xab0e: 0xe0000e44, 0xab0f: 0xe0000e41,\n\t0xab10: 0xe0003cc6, 0xab11: 0xe0003cc3, 0xab12: 0xe0000db5, 0xab13: 0xe0000db1,\n\t0xab14: 0xe0000dc5, 0xab15: 0xe0000dc1, 0xab16: 0xe0000dbd, 0xab17: 0xe0000db9,\n\t0xab18: 0xe0000e8b, 0xab19: 0xe0000e87, 0xab1a: 0xe0003cd8, 0xab1b: 0xe0003cd5,\n\t0xab1c: 0xe0000e65, 0xab1d: 0xe0000e61, 0xab1e: 0xe0000e75, 0xab1f: 0xe0000e71,\n\t0xab20: 0xe0000e6d, 0xab21: 0xe0000e69, 0xab22: 0xe0000e7d, 0xab23: 0xe0000e79,\n\t0xab24: 0xe000108d, 0xab25: 0xe000108a, 0xab26: 0xe000104d, 0xab27: 0xe000104a,\n\t0xab28: 0xe0003cea, 0xab29: 0xe0003ce7, 0xab2a: 0xe000106e, 0xab2b: 0xe000106a,\n\t0xab2c: 0xe000107e, 0xab2d: 0xe000107a, 0xab2e: 0xe0001076, 0xab2f: 0xe0001072,\n\t0xab30: 0xe0001086, 0xab31: 0xe0001082, 0xab32: 0xe0001108, 0xab33: 0xe0001105,\n\t0xab34: 0xe0001135, 0xab35: 0xe0001132, 0xab36: 0xe000112f, 0xab37: 0xe000112c,\n\t0xab38: 0xe000111d, 0xab39: 0xe000111a, 0xab3a: 0xe0000d0a, 0xab3b: 0xe0000d07,\n\t0xab3c: 0x0030d888, 0xab3d: 0x4030d820, 0xab3e: 0x00312088, 0xab3f: 0x40312020,\n\t// Block 0x2ad, offset 0xab40\n\t0xab40: 0x40021220, 0xab41: 0x40025c20, 0xab42: 0x40030420, 0xab43: 0x40051220,\n\t0xab44: 0x40279a20, 0xab45: 0x4027ca20, 0xab46: 0xe0002206, 0xab47: 0xe00001d3,\n\t0xab48: 0x40049c20, 0xab49: 0x40049e20, 0xab4a: 0x4004a020, 0xab4b: 0x4004a220,\n\t0xab4c: 0x4004a420, 0xab4d: 0x4004a620, 0xab4e: 0x4004a820, 0xab4f: 0x4004aa20,\n\t0xab50: 0x4004ac20, 0xab51: 0x4004ae20, 0xab52: 0x40279c20, 0xab53: 0x40279e20,\n\t0xab54: 0x4004b020, 0xab55: 0x4004b220, 0xab56: 0x4004b420, 0xab57: 0x4004b620,\n\t0xab58: 0x4004b820, 0xab59: 0x4004ba20, 0xab5a: 0x4004bc20, 0xab5b: 0x4004be20,\n\t0xab5c: 0x40023820, 0xab5d: 0x4003ea20, 0xab5e: 0x4003ec20, 0xab5f: 0x4003ee20,\n\t0xab60: 0x4027a020, 0xab61: 0xe0000267, 0xab62: 0xe000037f, 0xab63: 0xe0000459,\n\t0xab64: 0xe000052e, 0xab65: 0xe00005f8, 0xab66: 0xe00006c3, 0xab67: 0xe000076b,\n\t0xab68: 0xe0000817, 0xab69: 0xe00008bc, 0xab6a: 0xada12202, 0xab6b: 0xae412302,\n\t0xab6c: 0xae812402, 0xab6d: 0xade12502, 0xab6e: 0xae012602, 0xab6f: 0xae012702,\n\t0xab70: 0x40023a20, 0xab71: 0x4027ce20, 0xab72: 0xe0000152, 0xab73: 0x4027d020,\n\t0xab74: 0xe0000155, 0xab75: 0x4027d220, 0xab76: 0x00279c84, 0xab77: 0x4027a220,\n\t0xab78: 0x02a68284, 0xab79: 0x02a68884, 0xab7a: 0x02a68a84, 0xab7b: 0x4027cc20,\n\t0xab7c: 0xe000231a, 0xab7d: 0x40051420, 0xab7e: 0x4027a420, 0xab7f: 0x4027a620,\n\t// Block 0x2ae, offset 0xab80\n\t0xab81: 0xc64a3231, 0xab82: 0xc6503231, 0xab83: 0xc71a3231,\n\t0xab84: 0xc7203231, 0xab85: 0xc7d83a21, 0xab86: 0xc7e233e1, 0xab87: 0xc8c13231,\n\t0xab88: 0xc8c73231, 0xab89: 0xc9763231, 0xab8a: 0xc97c3231, 0xab8b: 0xc65c32b1,\n\t0xab8c: 0xc6693231, 0xab8d: 0xc72633e1, 0xab8e: 0xc73b3671, 0xab8f: 0xc80433e1,\n\t0xab90: 0xc8193671, 0xab91: 0xc8d332b1, 0xab92: 0xc8e03231, 0xab93: 0xc98233e1,\n\t0xab94: 0xc9973671, 0xab95: 0xc66f33e1, 0xab96: 0xc6843671, 0xab97: 0xc74833e1,\n\t0xab98: 0xc75d3671, 0xab99: 0xc82633e1, 0xab9a: 0xc83b3671, 0xab9b: 0xc8e633e1,\n\t0xab9c: 0xc8fb3671, 0xab9d: 0xc99f33e1, 0xab9e: 0xc9b43671, 0xab9f: 0xc68c33e1,\n\t0xaba0: 0xc6a13671, 0xaba1: 0xc76533e1, 0xaba2: 0xc77a3671, 0xaba3: 0xc8433a21,\n\t0xaba4: 0xc84d33e1, 0xaba5: 0xc8623671, 0xaba6: 0xc90333e1, 0xaba7: 0xc9183671,\n\t0xaba8: 0xc9c133e1, 0xaba9: 0xc9d63671, 0xabaa: 0xc6a93231, 0xabab: 0xc7823231,\n\t0xabac: 0xc86d3231, 0xabad: 0xc9203231, 0xabae: 0xc9de3231, 0xabaf: 0xc6b436f1,\n\t0xabb0: 0xc6cf3671, 0xabb1: 0xc6d73671, 0xabb2: 0xc78d36f1, 0xabb3: 0xc7a83671,\n\t0xabb4: 0xc7b03671, 0xabb5: 0xc87836f1, 0xabb6: 0xc8933671, 0xabb7: 0xc89b3671,\n\t0xabb8: 0xc92b36f1, 0xabb9: 0xc9463671, 0xabba: 0xc94e3671, 0xabbb: 0xc9e936f1,\n\t0xabbc: 0xca043671, 0xabbd: 0xca0c3671, 0xabbe: 0xc6df3231, 0xabbf: 0xc7b83231,\n\t// Block 0x2af, offset 0xabc0\n\t0xabc0: 0xc8a63231, 0xabc1: 0xc9563231, 0xabc2: 0xca143231, 0xabc3: 0xc6e53231,\n\t0xabc4: 0xc6eb3231, 0xabc5: 0xc8ac3231, 0xabc6: 0xc8b23231, 0xabc7: 0xca1a3231,\n\t0xabc8: 0xca203231, 0xabc9: 0xc6f43231, 0xabca: 0xc7c13231, 0xabcb: 0xc8bb3231,\n\t0xabcc: 0xc95f3231, 0xabcd: 0xca293231, 0xabce: 0xc6fa3a21, 0xabcf: 0xc7043a21,\n\t0xabd0: 0xc7c73a21, 0xabd1: 0xc9653a21, 0xabd2: 0xca2f3a21, 0xabd3: 0xca453ab1,\n\t0xabd4: 0xc7f73671, 0xabd5: 0xc6563231, 0xabd6: 0xc8cd3231,\n\t0xabd9: 0xa0812802, 0xabda: 0xa0812902, 0xabdb: 0x40063c20,\n\t0xabdc: 0x40063e20, 0xabdd: 0x4027d820, 0xabde: 0xe000015b, 0xabdf: 0xe0004033,\n\t0xabe0: 0x40023c20, 0xabe1: 0xc64d3281, 0xabe2: 0xc6533281, 0xabe3: 0xc71d3281,\n\t0xabe4: 0xc7233281, 0xabe5: 0xc7dd3601, 0xabe6: 0xc7ea3501, 0xabe7: 0xc8c43281,\n\t0xabe8: 0xc8ca3281, 0xabe9: 0xc9793281, 0xabea: 0xc97f3281, 0xabeb: 0xc6613361,\n\t0xabec: 0xc66c3281, 0xabed: 0xc72e3501, 0xabee: 0xc73f36c1, 0xabef: 0xc80c3501,\n\t0xabf0: 0xc81d36c1, 0xabf1: 0xc8d83361, 0xabf2: 0xc8e33281, 0xabf3: 0xc98a3501,\n\t0xabf4: 0xc99b36c1, 0xabf5: 0xc6773501, 0xabf6: 0xc68836c1, 0xabf7: 0xc7503501,\n\t0xabf8: 0xc76136c1, 0xabf9: 0xc82e3501, 0xabfa: 0xc83f36c1, 0xabfb: 0xc8ee3501,\n\t0xabfc: 0xc8ff36c1, 0xabfd: 0xc9a73501, 0xabfe: 0xc9b836c1, 0xabff: 0xc6943501,\n\t// Block 0x2b0, offset 0xac00\n\t0xac00: 0xc6a536c1, 0xac01: 0xc76d3501, 0xac02: 0xc77e36c1, 0xac03: 0xc8483601,\n\t0xac04: 0xc8553501, 0xac05: 0xc86636c1, 0xac06: 0xc90b3501, 0xac07: 0xc91c36c1,\n\t0xac08: 0xc9c93501, 0xac09: 0xc9da36c1, 0xac0a: 0xc6ac3281, 0xac0b: 0xc7853281,\n\t0xac0c: 0xc8703281, 0xac0d: 0xc9233281, 0xac0e: 0xc9e13281, 0xac0f: 0xc6bf38a1,\n\t0xac10: 0xc6d336c1, 0xac11: 0xc6db36c1, 0xac12: 0xc79838a1, 0xac13: 0xc7ac36c1,\n\t0xac14: 0xc7b436c1, 0xac15: 0xc88338a1, 0xac16: 0xc89736c1, 0xac17: 0xc89f36c1,\n\t0xac18: 0xc93638a1, 0xac19: 0xc94a36c1, 0xac1a: 0xc95236c1, 0xac1b: 0xc9f438a1,\n\t0xac1c: 0xca0836c1, 0xac1d: 0xca1036c1, 0xac1e: 0xc6e23281, 0xac1f: 0xc7bb3281,\n\t0xac20: 0xc8a93281, 0xac21: 0xc9593281, 0xac22: 0xca173281, 0xac23: 0xc6e83281,\n\t0xac24: 0xc6ee3281, 0xac25: 0xc8af3281, 0xac26: 0xc8b53281, 0xac27: 0xca1d3281,\n\t0xac28: 0xca233281, 0xac29: 0xc6f73281, 0xac2a: 0xc7c43281, 0xac2b: 0xc8be3281,\n\t0xac2c: 0xc9623281, 0xac2d: 0xca2c3281, 0xac2e: 0xc6ff3601, 0xac2f: 0xc7093501,\n\t0xac30: 0xc7cc3501, 0xac31: 0xc96a3501, 0xac32: 0xca343501, 0xac33: 0xca453ae1,\n\t0xac34: 0xc7fb36c1, 0xac35: 0xc6593281, 0xac36: 0xc8d03281, 0xac37: 0xc71636c1,\n\t0xac38: 0xc7d436c1, 0xac39: 0xc97236c1, 0xac3a: 0xca4136c1, 0xac3b: 0x40023e20,\n\t0xac3c: 0x4027d620, 0xac3d: 0x4027d820, 0xac3e: 0xe000015b, 0xac3f: 0xe0003eda,\n\t// Block 0x2b1, offset 0xac40\n\t0xac45: 0x4065da20, 0xac46: 0x4065dc20, 0xac47: 0x4065de20,\n\t0xac48: 0x4065e020, 0xac49: 0x4065e420, 0xac4a: 0x4065e620, 0xac4b: 0x4065e820,\n\t0xac4c: 0x4065ea20, 0xac4d: 0x4065ec20, 0xac4e: 0x4065ee20, 0xac4f: 0x4065f420,\n\t0xac50: 0x4065f620, 0xac51: 0x4065f820, 0xac52: 0x4065fa20, 0xac53: 0x4065fe20,\n\t0xac54: 0x40660020, 0xac55: 0x40660220, 0xac56: 0x40660420, 0xac57: 0x40660620,\n\t0xac58: 0x40660820, 0xac59: 0x40660a20, 0xac5a: 0x40661220, 0xac5b: 0x40661420,\n\t0xac5c: 0x40661820, 0xac5d: 0x40661a20, 0xac5e: 0x40661e20, 0xac5f: 0x40662020,\n\t0xac60: 0x40662220, 0xac61: 0x40662420, 0xac62: 0x40662620, 0xac63: 0x40662820,\n\t0xac64: 0x40662a20, 0xac65: 0x40662e20, 0xac66: 0x40663620, 0xac67: 0x40663820,\n\t0xac68: 0x40663a20, 0xac69: 0x40663c20, 0xac6a: 0x4065e220, 0xac6b: 0x4065f020,\n\t0xac6c: 0x4065fc20, 0xac6d: 0x40663e20,\n\t0xac71: 0x4062ac20, 0xac72: 0x4062ae20, 0xac73: 0x40646820,\n\t0xac74: 0x4062b020, 0xac75: 0x40646c20, 0xac76: 0x40646e20, 0xac77: 0x4062b220,\n\t0xac78: 0x4062b420, 0xac79: 0x4062b620, 0xac7a: 0x40647420, 0xac7b: 0x40647620,\n\t0xac7c: 0x40647820, 0xac7d: 0x40647a20, 0xac7e: 0x40647c20, 0xac7f: 0x40647e20,\n\t// Block 0x2b2, offset 0xac80\n\t0xac80: 0x4062e020, 0xac81: 0x4062b820, 0xac82: 0x4062ba20, 0xac83: 0x4062bc20,\n\t0xac84: 0x4062ee20, 0xac85: 0x4062be20, 0xac86: 0x4062c020, 0xac87: 0x4062c220,\n\t0xac88: 0x4062c420, 0xac89: 0x4062c620, 0xac8a: 0x4062c820, 0xac8b: 0x4062ca20,\n\t0xac8c: 0x4062cc20, 0xac8d: 0x4062ce20, 0xac8e: 0x4062d020, 0xac8f: 0x4063a820,\n\t0xac90: 0x4063aa20, 0xac91: 0x4063ac20, 0xac92: 0x4063ae20, 0xac93: 0x4063b020,\n\t0xac94: 0x4063b220, 0xac95: 0x4063b420, 0xac96: 0x4063b620, 0xac97: 0x4063b820,\n\t0xac98: 0x4063ba20, 0xac99: 0x4063bc20, 0xac9a: 0x4063be20, 0xac9b: 0x4063c020,\n\t0xac9c: 0x4063c220, 0xac9d: 0x4063c420, 0xac9e: 0x4063c620, 0xac9f: 0x4063c820,\n\t0xaca0: 0x4063ca20, 0xaca1: 0x4063cc20, 0xaca2: 0x4063ce20, 0xaca3: 0x4063d020,\n\t0xaca4: 0x4063a620, 0xaca5: 0x0062d484, 0xaca6: 0x0062d684, 0xaca7: 0x0064a284,\n\t0xaca8: 0x0064a484, 0xaca9: 0x0064ac84, 0xacaa: 0x0064b084, 0xacab: 0x0064ba84,\n\t0xacac: 0x0064c284, 0xacad: 0x0064c684, 0xacae: 0x0062e484, 0xacaf: 0x0064ce84,\n\t0xacb0: 0x0064d284, 0xacb1: 0x0062e684, 0xacb2: 0x0062e884, 0xacb3: 0x0062ec84,\n\t0xacb4: 0x0062f084, 0xacb5: 0x0062f284, 0xacb6: 0x0062fa84, 0xacb7: 0x0062fe84,\n\t0xacb8: 0x00630284, 0xacb9: 0x00630484, 0xacba: 0x00630684, 0xacbb: 0x00630884,\n\t0xacbc: 0x00630a84, 0xacbd: 0x00631084, 0xacbe: 0x00631884, 0xacbf: 0x00632c84,\n\t// Block 0x2b3, offset 0xacc0\n\t0xacc0: 0x40275220, 0xacc1: 0x40275420, 0xacc2: 0x40275620, 0xacc3: 0x40275820,\n\t0xacc4: 0x40275a20, 0xacc5: 0x40275c20, 0xacc6: 0x40275e20, 0xacc7: 0x40276020,\n\t0xacc8: 0x40276220, 0xacc9: 0x40276420, 0xacca: 0x40276620, 0xaccb: 0x40276820,\n\t0xaccc: 0x40276a20, 0xaccd: 0x40276c20, 0xacce: 0x40276e20, 0xaccf: 0x40277020,\n\t0xacd0: 0x40277220, 0xacd1: 0x40277420, 0xacd2: 0x40277620, 0xacd3: 0x40277820,\n\t0xacd4: 0x40277a20, 0xacd5: 0x40277c20, 0xacd6: 0x40277e20, 0xacd7: 0x40278020,\n\t0xacd8: 0x40278220, 0xacd9: 0x40278420, 0xacda: 0x40278620, 0xacdb: 0x40278820,\n\t0xacdc: 0x40278a20, 0xacdd: 0x40278c20, 0xacde: 0x40278e20, 0xacdf: 0x40279020,\n\t0xace0: 0x40279220, 0xace1: 0x40279420, 0xace2: 0x40279620, 0xace3: 0x40279820,\n\t0xacf0: 0xc7ff3601, 0xacf1: 0xc7433601, 0xacf2: 0xc8213601, 0xacf3: 0xc9bc3601,\n\t0xacf4: 0xc86a3281, 0xacf5: 0xc6af3601, 0xacf6: 0xc7883601, 0xacf7: 0xc8733601,\n\t0xacf8: 0xc9263601, 0xacf9: 0xc9e43601, 0xacfa: 0xc8a33281, 0xacfb: 0xc6f13281,\n\t0xacfc: 0xc7be3281, 0xacfd: 0xc8b83281, 0xacfe: 0xc95c3281, 0xacff: 0xca263281,\n\t// Block 0x2b4, offset 0xad00\n\t0xad00: 0xf0000404, 0xad01: 0xf0000404, 0xad02: 0xf0000404, 0xad03: 0xf0000404,\n\t0xad04: 0xf0000404, 0xad05: 0xf0000404, 0xad06: 0xf0000404, 0xad07: 0xf0000404,\n\t0xad08: 0xf0000404, 0xad09: 0xf0000404, 0xad0a: 0xf0000404, 0xad0b: 0xf0000404,\n\t0xad0c: 0xf0000404, 0xad0d: 0xf0000404, 0xad0e: 0xe000004c, 0xad0f: 0xe0000051,\n\t0xad10: 0xe0000056, 0xad11: 0xe000005b, 0xad12: 0xe0000060, 0xad13: 0xe0000065,\n\t0xad14: 0xe000006a, 0xad15: 0xe000006f, 0xad16: 0xe0000083, 0xad17: 0xe000008d,\n\t0xad18: 0xe0000092, 0xad19: 0xe0000097, 0xad1a: 0xe000009c, 0xad1b: 0xe00000a1,\n\t0xad1c: 0xe0000088, 0xad1d: 0xe0000074, 0xad1e: 0xe000007c,\n\t0xad20: 0xe0002c96, 0xad21: 0xe0002ca6, 0xad22: 0xe0002c9e, 0xad23: 0xe0002cd6,\n\t0xad24: 0xe0002caa, 0xad25: 0xe0002cbe, 0xad26: 0xe0002c9a, 0xad27: 0xe0002cba,\n\t0xad28: 0xe0002ca2, 0xad29: 0xe0002cc6, 0xad2a: 0xe0002ce6, 0xad2b: 0xe0002cfa,\n\t0xad2c: 0xe0002cf6, 0xad2d: 0xe0002cee, 0xad2e: 0xe0002d22, 0xad2f: 0xe0002cda,\n\t0xad30: 0xe0002ce2, 0xad31: 0xe0002cf2, 0xad32: 0xe0002cea, 0xad33: 0xe0002d06,\n\t0xad34: 0xe0002cce, 0xad35: 0xe0002cfe, 0xad36: 0xe0002d1a, 0xad37: 0xe0002d0a,\n\t0xad38: 0xe0002cc2, 0xad39: 0xe0002cae, 0xad3a: 0xe0002cd2, 0xad3b: 0xe0002cde,\n\t0xad3c: 0xe0002d02, 0xad3d: 0xe0002cb2, 0xad3e: 0xe0002d1e, 0xad3f: 0xe0002cca,\n\t// Block 0x2b5, offset 0xad40\n\t0xad40: 0xe0002d0e, 0xad41: 0xe0002cb6, 0xad42: 0xe0002d12, 0xad43: 0xe0002d16,\n\t0xad44: 0x02aa9e86, 0xad45: 0x02bcf886, 0xad46: 0x02cb0e86, 0xad47: 0x02f71e86,\n\t0xad48: 0xe00002e3, 0xad49: 0xe00003d8, 0xad4a: 0xe00004b3, 0xad4b: 0xe000057d,\n\t0xad4c: 0xe0000648, 0xad4d: 0xe00006f0, 0xad4e: 0xe000079c, 0xad4f: 0xe0000841,\n\t0xad50: 0xe0000ec0, 0xad51: 0xf0000606, 0xad52: 0xf0000606, 0xad53: 0xf0000606,\n\t0xad54: 0xf0000606, 0xad55: 0xf0000606, 0xad56: 0xf0000606, 0xad57: 0xf0000606,\n\t0xad58: 0xf0000606, 0xad59: 0xf0000606, 0xad5a: 0xf0000606, 0xad5b: 0xf0000606,\n\t0xad5c: 0xf0000606, 0xad5d: 0xf0000606, 0xad5e: 0xf0000606, 0xad5f: 0xf0000606,\n\t0xad60: 0x0062ac86, 0xad61: 0x0062b086, 0xad62: 0x0062b286, 0xad63: 0x0062b686,\n\t0xad64: 0x0062b886, 0xad65: 0x0062ba86, 0xad66: 0x0062be86, 0xad67: 0x0062c286,\n\t0xad68: 0x0062c486, 0xad69: 0x0062c886, 0xad6a: 0x0062ca86, 0xad6b: 0x0062cc86,\n\t0xad6c: 0x0062ce86, 0xad6d: 0x0062d086, 0xad6e: 0xf0000606, 0xad6f: 0xf0000606,\n\t0xad70: 0xf0000606, 0xad71: 0xf0000606, 0xad72: 0xf0000606, 0xad73: 0xf0000606,\n\t0xad74: 0xf0000606, 0xad75: 0xf0000606, 0xad76: 0xf0000606, 0xad77: 0xf0000606,\n\t0xad78: 0xf0000606, 0xad79: 0xf0000606, 0xad7a: 0xf0000606, 0xad7b: 0xf0000606,\n\t0xad7c: 0xe0002127, 0xad7d: 0xe0002122, 0xad7e: 0xf0000606, 0xad7f: 0x4027ac20,\n\t// Block 0x2b6, offset 0xad80\n\t0xad80: 0xe0002dea, 0xad81: 0xe0002e57, 0xad82: 0xe0002e8c, 0xad83: 0xe0002eb9,\n\t0xad84: 0xe0002ecb, 0xad85: 0xe0002eda, 0xad86: 0xe0002ee9, 0xad87: 0xe0002ef8,\n\t0xad88: 0xe0002f07, 0xad89: 0xe0002d50, 0xad8a: 0xe0002d63, 0xad8b: 0xe0002d76,\n\t0xad8c: 0xf0001c1d, 0xad8d: 0xe0000b85, 0xad8e: 0xf0001d1c, 0xad8f: 0xe0000d14,\n\t0xad90: 0x00657693, 0xad91: 0x00657893, 0xad92: 0x00657a93, 0xad93: 0x00657e93,\n\t0xad94: 0x00658093, 0xad95: 0x00658293, 0xad96: 0x00658493, 0xad97: 0x00658693,\n\t0xad98: 0x00658893, 0xad99: 0x00658a93, 0xad9a: 0x00658c93, 0xad9b: 0x00658e93,\n\t0xad9c: 0x00659093, 0xad9d: 0x00659293, 0xad9e: 0x00659493, 0xad9f: 0x00659693,\n\t0xada0: 0x00659893, 0xada1: 0x00659a93, 0xada2: 0x00659c93, 0xada3: 0x00659e93,\n\t0xada4: 0x0065a093, 0xada5: 0x0065a293, 0xada6: 0x0065a493, 0xada7: 0x0065a693,\n\t0xada8: 0x0065a893, 0xada9: 0x0065aa93, 0xadaa: 0x0065ac93, 0xadab: 0x0065ae93,\n\t0xadac: 0x0065b093, 0xadad: 0x0065b293, 0xadae: 0x0065b493, 0xadaf: 0x0065b693,\n\t0xadb0: 0x0065b893, 0xadb1: 0x0065ba93, 0xadb2: 0x0065bc93, 0xadb3: 0x0065be93,\n\t0xadb4: 0x0065c093, 0xadb5: 0x0065c493, 0xadb6: 0x0065c693, 0xadb7: 0x0065c893,\n\t0xadb8: 0x0065ca93, 0xadb9: 0x0065cc93, 0xadba: 0x0065ce93, 0xadbb: 0x0065d093,\n\t0xadbc: 0x0065d293, 0xadbd: 0x0065d493, 0xadbe: 0x0065d693,\n\t// Block 0x2b7, offset 0xadc0\n\t0xadc0: 0xe000230b, 0xadc1: 0xe00022f8, 0xadc2: 0xe00022fc, 0xadc3: 0xe0002311,\n\t0xadc4: 0xe0002316, 0xadc5: 0xe000231d, 0xadc6: 0xe0002321, 0xadc7: 0xe0002325,\n\t0xadc8: 0xe000232b, 0xadc9: 0xf0001c1c, 0xadca: 0xe0002330, 0xadcb: 0xe000233c,\n\t0xadcc: 0xe0002340, 0xadcd: 0xe0002337, 0xadce: 0xe0002346, 0xadcf: 0xe000234b,\n\t0xadd0: 0xe000234f, 0xadd1: 0xe0002353, 0xadd2: 0xf0001c1c, 0xadd3: 0xe000235e,\n\t0xadd4: 0xe0002358, 0xadd5: 0xf0001c1c, 0xadd6: 0xe0002363, 0xadd7: 0xe000236d,\n\t0xadd8: 0xe0002d39, 0xadd9: 0xe0002ded, 0xadda: 0xe0002e5a, 0xaddb: 0xe0002e8f,\n\t0xaddc: 0xe0002ebc, 0xaddd: 0xe0002ece, 0xadde: 0xe0002edd, 0xaddf: 0xe0002eec,\n\t0xade0: 0xe0002efb, 0xade1: 0xe0002f0a, 0xade2: 0xe0002d54, 0xade3: 0xe0002d67,\n\t0xade4: 0xe0002d7a, 0xade5: 0xe0002d89, 0xade6: 0xe0002d98, 0xade7: 0xe0002da7,\n\t0xade8: 0xe0002db6, 0xade9: 0xe0002dc5, 0xadea: 0xe0002dd4, 0xadeb: 0xe0002de3,\n\t0xadec: 0xe0002e01, 0xaded: 0xe0002e0c, 0xadee: 0xe0002e17, 0xadef: 0xe0002e22,\n\t0xadf0: 0xe0002e2d, 0xadf1: 0xe0000c1e, 0xadf2: 0xf0001c1c, 0xadf3: 0xf0001d1d,\n\t0xadf4: 0xe0000a31, 0xadf5: 0xf0001d1c, 0xadf6: 0xf0001c1c, 0xadf7: 0xf0001c1c,\n\t0xadf8: 0xe0000ac2, 0xadf9: 0xe0000ac6, 0xadfa: 0xf0001d1d, 0xadfb: 0xe0004091,\n\t0xadfc: 0xe0004097, 0xadfd: 0xe000408e, 0xadfe: 0xe0004094, 0xadff: 0xe0002431,\n\t// Block 0x2b8, offset 0xae00\n\t0xae00: 0xf0001d1c, 0xae01: 0xf0001d1d, 0xae02: 0xe00009b7, 0xae03: 0xf0001c1d,\n\t0xae04: 0xf0001c1c, 0xae05: 0xf0001c1c, 0xae06: 0xe0000a66, 0xae07: 0xe0000a7a,\n\t0xae08: 0xf0001d1c, 0xae09: 0xf0001c1d, 0xae0a: 0xf0001c1c, 0xae0b: 0xf0001d1d,\n\t0xae0c: 0xf0001c1c, 0xae0d: 0xf0001d1d, 0xae0e: 0xf0001d1d, 0xae0f: 0xf0001c1c,\n\t0xae10: 0xf0001c1c, 0xae11: 0xf0001c1c, 0xae12: 0xe0000d0d, 0xae13: 0xf0001c1c,\n\t0xae14: 0xf0001c1c, 0xae15: 0xe0000d3a, 0xae16: 0xe0000d46, 0xae17: 0xf0001d1d,\n\t0xae18: 0xe0000eb0, 0xae19: 0xe0000eb8, 0xae1a: 0xf0001d1d, 0xae1b: 0xf0001c1c,\n\t0xae1c: 0xf0001c1d, 0xae1d: 0xf0001c1d, 0xae1e: 0xe00010b2, 0xae1f: 0xe00009c8,\n\t0xae20: 0xe0002de7, 0xae21: 0xe0002e54, 0xae22: 0xe0002e89, 0xae23: 0xe0002eb6,\n\t0xae24: 0xe0002ec8, 0xae25: 0xe0002ed7, 0xae26: 0xe0002ee6, 0xae27: 0xe0002ef5,\n\t0xae28: 0xe0002f04, 0xae29: 0xe0002d4c, 0xae2a: 0xe0002d5f, 0xae2b: 0xe0002d72,\n\t0xae2c: 0xe0002d85, 0xae2d: 0xe0002d94, 0xae2e: 0xe0002da3, 0xae2f: 0xe0002db2,\n\t0xae30: 0xe0002dc1, 0xae31: 0xe0002dd0, 0xae32: 0xe0002ddf, 0xae33: 0xe0002dfd,\n\t0xae34: 0xe0002e08, 0xae35: 0xe0002e13, 0xae36: 0xe0002e1e, 0xae37: 0xe0002e29,\n\t0xae38: 0xe0002e34, 0xae39: 0xe0002e3b, 0xae3a: 0xe0002e42, 0xae3b: 0xe0002e49,\n\t0xae3c: 0xe0002e50, 0xae3d: 0xe0002e66, 0xae3e: 0xe0002e6d, 0xae3f: 0xe0000bdf,\n\t// Block 0x2b9, offset 0xae40\n\t0xae40: 0x6c009820, 0xae41: 0x6c0ea820, 0xae43: 0x6c08fe20,\n\t0xae47: 0x6c148c20,\n\t0xae48: 0x6c0ad420, 0xae49: 0x6c083420, 0xae4a: 0x6c0ad220, 0xae4b: 0x6c01b020,\n\t0xae4d: 0x6c12c420, 0xae4e: 0x6c158a20,\n\t0xae50: 0x6c172e20, 0xae51: 0x6c00da20,\n\t0xae54: 0x6c02d020, 0xae55: 0x6c173020, 0xae56: 0x6c0bc820, 0xae57: 0x6c18e620,\n\t0xae58: 0x6c041820, 0xae59: 0x6c134c20,\n\t0xae5e: 0x6c0ad620,\n\t0xae61: 0x6c164420,\n\t0xae66: 0x6c135c20,\n\t0xae6a: 0x6c173220,\n\t0xae6d: 0x6c0e8020,\n\t0xae71: 0x6c173420, 0xae72: 0x6c051c20,\n\t0xae76: 0x6c173620,\n\t0xae78: 0x6c036a20, 0xae79: 0x6c0e1420, 0xae7b: 0x6c095e20,\n\t0xae7c: 0x6c173820, 0xae7f: 0x6c173a20,\n\t// Block 0x2ba, offset 0xae80\n\t0xae82: 0x6c173c20, 0xae83: 0x6c110e20,\n\t0xae85: 0x6c041a20,\n\t0xae8b: 0x6c111220,\n\t0xae8d: 0x6c10ae20, 0xae8e: 0x6c062620, 0xae8f: 0x6c13fa20,\n\t0xae95: 0x6c29d820, 0xae96: 0x6c173e20, 0xae97: 0x6c0ad820,\n\t0xae98: 0x6c174020, 0xae99: 0x6c01a220,\n\t0xae9d: 0x6c04f220, 0xae9e: 0x6c068020, 0xae9f: 0x6c152220,\n\t0xaea2: 0x6c1b9e20,\n\t0xaeb1: 0x6c15ec20, 0xaeb3: 0x6c10e220,\n\t0xaebe: 0x6c02fa20,\n\t// Block 0x2bb, offset 0xaec0\n\t0xaec0: 0x6c03d620, 0xaec2: 0x6c174220,\n\t0xaec5: 0x6c174420, 0xaec6: 0x6c163e20,\n\t0xaec8: 0x6c158620, 0xaec9: 0x6c0d0c20, 0xaeca: 0x6c174820, 0xaecb: 0x6c08c020,\n\t0xaecc: 0x6c10ce20, 0xaece: 0x6c174e20,\n\t0xaed1: 0x6c00f820, 0xaed2: 0x6c065e20,\n\t0xaed4: 0x6c065c20, 0xaed5: 0x6c008c20,\n\t0xaed8: 0x6c171a20, 0xaed9: 0x6c171820, 0xaedb: 0x6c077e20,\n\t0xaedc: 0x6c000220, 0xaede: 0x6c175020, 0xaedf: 0x6c175220,\n\t0xaee0: 0x6c175420, 0xaee1: 0x6c13fc20, 0xaee2: 0x6c175620,\n\t0xaee4: 0x6c068420, 0xaee5: 0x6c008e20, 0xaee6: 0x6c147820,\n\t0xaee8: 0x6c046420, 0xaeeb: 0x6c046620,\n\t0xaeec: 0x6c046820, 0xaeed: 0x6c0f3420, 0xaeee: 0x6c164020,\n\t0xaef0: 0x6c175820, 0xaef3: 0x6c175a20,\n\t0xaef6: 0x6c175c20,\n\t0xaefa: 0x6c0b5e20,\n\t// Block 0x2bc, offset 0xaf00\n\t0xaf00: 0x6c09c020, 0xaf01: 0x6c0b6020, 0xaf02: 0x6c176620,\n\t0xaf04: 0x6c176220, 0xaf06: 0x6c176420, 0xaf07: 0x6c041c20,\n\t0xaf0a: 0x6c075e20, 0xaf0b: 0x6c021820,\n\t0xaf0d: 0x6c176020, 0xaf0e: 0x6c175e20, 0xaf0f: 0x6c132a20,\n\t0xaf14: 0x6c086020, 0xaf15: 0x6c085e20, 0xaf16: 0x6c0d7420, 0xaf17: 0x6c176820,\n\t0xaf18: 0x6c12c620, 0xaf19: 0x6c0c4e20,\n\t0xaf1e: 0x6c176a20, 0xaf1f: 0x6c176e20,\n\t0xaf23: 0x6c0dc220,\n\t0xaf24: 0x6c168a20, 0xaf25: 0x6c005420,\n\t0xaf2d: 0x6c176c20, 0xaf2e: 0x6c01b420,\n\t0xaf30: 0x6c04b020, 0xaf32: 0x6c0e8220,\n\t0xaf36: 0x6c05c220, 0xaf37: 0x6c177020,\n\t0xaf3b: 0x6c10ec20,\n\t// Block 0x2bd, offset 0xaf40\n\t0xaf41: 0x6c038620,\n\t0xaf49: 0x6c177220, 0xaf4a: 0x6c005620,\n\t0xaf4d: 0x6c066020, 0xaf4e: 0x6c038820, 0xaf4f: 0x6c131020,\n\t0xaf50: 0x6c11c420, 0xaf51: 0x6c041e20,\n\t0xaf5a: 0x6c021a20,\n\t0xaf5c: 0x6c17b820, 0xaf5d: 0x6c0fae20,\n\t0xaf6f: 0x6c117c20,\n\t0xaf70: 0x6c177620,\n\t0xaf74: 0x6c11d820, 0xaf76: 0x6c168c20,\n\t0xaf78: 0x6c0b1e20, 0xaf7a: 0x6c086220,\n\t0xaf7c: 0x6c08c220, 0xaf7d: 0x6c01b820,\n\t// Block 0x2be, offset 0xaf80\n\t0xaf83: 0x6c0f1220,\n\t0xaf86: 0x6c0df820, 0xaf87: 0x6c177e20,\n\t0xaf8d: 0x6c005820, 0xaf8e: 0x6c0f3620, 0xaf8f: 0x6c09c220,\n\t0xaf90: 0x6c078020, 0xaf91: 0x6c155420, 0xaf93: 0x6c0d9420,\n\t0xaf95: 0x6c01b620, 0xaf97: 0x6c177c20,\n\t0xaf99: 0x6c158820, 0xaf9a: 0x6c177420, 0xaf9b: 0x6c177820,\n\t0xaf9c: 0x6c07f420, 0xaf9d: 0x6c177a20, 0xaf9e: 0x6c1ade20,\n\t0xafa9: 0x6c178a20,\n\t0xafaf: 0x6c179020,\n\t0xafb0: 0x6c178c20, 0xafb3: 0x6c01bc20,\n\t0xafb5: 0x6c134e20, 0xafb6: 0x6c178020,\n\t0xafbb: 0x6c178820,\n\t0xafbc: 0x6c068620, 0xafbf: 0x6c086420,\n\t// Block 0x2bf, offset 0xafc0\n\t0xafc3: 0x6c02fc20,\n\t0xafc6: 0x6c179220,\n\t0xafc8: 0x6c178220, 0xafcb: 0x6c168e20,\n\t0xafcd: 0x6c08c420, 0xafcf: 0x6c178420,\n\t0xafd1: 0x6c178e20,\n\t0xafd6: 0x6c179420,\n\t0xafd8: 0x6c178620, 0xafdb: 0x6c046a20,\n\t0xafdd: 0x6c005a20,\n\t0xafe0: 0x6c046c20, 0xafe1: 0x6c01ba20,\n\t0xafeb: 0x6c1ae020,\n\t0xafed: 0x6c148620, 0xafee: 0x6c12f820, 0xafef: 0x6c068820,\n\t0xaff5: 0x6c0b2220, 0xaff6: 0x6c163620,\n\t0xafff: 0x6c138820,\n\t// Block 0x2c0, offset 0xb000\n\t0xb002: 0x6c055420, 0xb003: 0x6c0d4220,\n\t0xb004: 0x6c020020,\n\t0xb00a: 0x6c09f220,\n\t0xb00e: 0x6c179c20,\n\t0xb010: 0x6c17a620, 0xb011: 0x6c17a220,\n\t0xb014: 0x6c179820, 0xb017: 0x6c0d5620,\n\t0xb018: 0x6c179e20, 0xb01a: 0x6c17a420, 0xb01b: 0x6c17a020,\n\t0xb01d: 0x6c139220, 0xb01f: 0x6c179a20,\n\t0xb021: 0x6c0b2020, 0xb023: 0x6c147a20,\n\t0xb024: 0x6c17a820, 0xb025: 0x6c17aa20,\n\t0xb02e: 0x6c099420, 0xb02f: 0x6c17c420,\n\t0xb033: 0x6c114420,\n\t0xb035: 0x6c128820, 0xb036: 0x6c17ba20,\n\t0xb038: 0x6c13b820, 0xb03a: 0x6c01a420,\n\t0xb03e: 0x6c17c220,\n\t// Block 0x2c1, offset 0xb040\n\t0xb045: 0x6c17b620, 0xb046: 0x6c17c820,\n\t0xb049: 0x6c0ce020, 0xb04b: 0x6c062820,\n\t0xb04d: 0x6c115c20, 0xb04f: 0x6c233820,\n\t0xb051: 0x6c17c620, 0xb052: 0x6c0fe620,\n\t0xb054: 0x6c17b020, 0xb056: 0x6c068c20,\n\t0xb059: 0x6c068a20, 0xb05a: 0x6c17ac20,\n\t0xb05f: 0x6c094420,\n\t0xb061: 0x6c17bc20, 0xb063: 0x6c13b620,\n\t0xb064: 0x6c0e4e20, 0xb065: 0x6c17b420, 0xb066: 0x6c05c620,\n\t0xb068: 0x6c17ae20, 0xb069: 0x6c17be20, 0xb06a: 0x6c17b220, 0xb06b: 0x6c166a20,\n\t0xb06c: 0x6c17c020, 0xb06d: 0x6c170620,\n\t0xb076: 0x6c04f420,\n\t0xb079: 0x6c05c420,\n\t// Block 0x2c2, offset 0xb080\n\t0xb083: 0x6c17ca20,\n\t0xb087: 0x6c17cc20,\n\t0xb088: 0x6c17d420, 0xb089: 0x6c005c20,\n\t0xb08f: 0x6c137820,\n\t0xb090: 0x6c17d220,\n\t0xb095: 0x6c17d020, 0xb096: 0x6c17d820,\n\t0xb09a: 0x6c17d620,\n\t0xb09c: 0x6c0f3820,\n\t0xb0a5: 0x6c05c820,\n\t0xb0ac: 0x6c17da20,\n\t0xb0b2: 0x6c091a20,\n\t0xb0b4: 0x6c0d4420, 0xb0b5: 0x6c0f3a20, 0xb0b6: 0x6c051420,\n\t0xb0b8: 0x6c17dc20,\n\t0xb0bd: 0x6c03d820,\n\t// Block 0x2c3, offset 0xb0c0\n\t0xb0c0: 0x6c17de20,\n\t0xb0c5: 0x6c17e220,\n\t0xb0cd: 0x6c13fe20,\n\t0xb0d1: 0x6c05b020,\n\t0xb0d8: 0x6c083620, 0xb0d9: 0x6c124e20, 0xb0da: 0x6c17e020,\n\t0xb0ec: 0x6c07a220, 0xb0ed: 0x6c159220,\n\t0xb0f2: 0x6c17e620, 0xb0f3: 0x6c17ec20,\n\t0xb0f4: 0x6c17e420, 0xb0f5: 0x6c07a020, 0xb0f7: 0x6c0a4620,\n\t0xb0fe: 0x6c055620,\n\t// Block 0x2c4, offset 0xb100\n\t0xb102: 0x6c17ee20,\n\t0xb105: 0x6c04c620,\n\t0xb109: 0x6c17e820, 0xb10a: 0x6c17ea20,\n\t0xb10d: 0x6c104620, 0xb10f: 0x6c0d3420,\n\t0xb111: 0x6c046e20,\n\t0xb115: 0x6c142e20, 0xb116: 0x6c17f020,\n\t0xb11a: 0x6c164220,\n\t0xb11e: 0x6c17f220,\n\t0xb123: 0x6c17f820,\n\t0xb125: 0x6c17f420, 0xb127: 0x6c0cd820,\n\t0xb12d: 0x6c17f620, 0xb12e: 0x6c17fa20,\n\t0xb135: 0x6c17fe20,\n\t0xb139: 0x6c17fc20, 0xb13b: 0x6c136820,\n\t// Block 0x2c5, offset 0xb140\n\t0xb140: 0x6c03da20, 0xb141: 0x6c180220, 0xb142: 0x6c180420,\n\t0xb144: 0x6c019620,\n\t0xb149: 0x6c180020,\n\t0xb152: 0x6c097820,\n\t0xb154: 0x6c180a20, 0xb155: 0x6c180820, 0xb156: 0x6c180620,\n\t0xb158: 0x6c179620, 0xb15a: 0x6c180c20,\n\t0xb15f: 0x6c0a4820,\n\t0xb161: 0x6c180e20,\n\t0xb16a: 0x6c155620,\n\t0xb172: 0x6c150220,\n\t0xb177: 0x6c181220,\n\t0xb17a: 0x6c181020, 0xb17b: 0x6c181620,\n\t0xb17c: 0x6c181420, 0xb17f: 0x6c181820,\n\t// Block 0x2c6, offset 0xb180\n\t0xb180: 0x6c181a20, 0xb181: 0x6c00a820, 0xb183: 0x6c060a20,\n\t0xb184: 0x6c055a20, 0xb185: 0x6c09c420, 0xb186: 0x6c0eaa20, 0xb187: 0x6c047020,\n\t0xb188: 0x6c0c5020, 0xb189: 0x6c068e20, 0xb18b: 0x6c073820,\n\t0xb18c: 0x6c181e20, 0xb18d: 0x6c14e020, 0xb18e: 0x6c0fb820,\n\t0xb190: 0x6c08c620, 0xb192: 0x6c181c20,\n\t0xb194: 0x6c182020,\n\t0xb19a: 0x6c0fe820,\n\t0xb19c: 0x6c02de20,\n\t0xb1a2: 0x6c182220,\n\t0xb1a5: 0x6c10e420,\n\t0xb1a8: 0x6c0ca420, 0xb1a9: 0x6c182620, 0xb1aa: 0x6c182820, 0xb1ab: 0x6c11b820,\n\t0xb1ac: 0x6c069020, 0xb1ad: 0x6c16fa20, 0xb1ae: 0x6c182a20,\n\t0xb1b1: 0x6c047420,\n\t0xb1b5: 0x6c135020, 0xb1b6: 0x6c0d6420, 0xb1b7: 0x6c050a20,\n\t0xb1b8: 0x6c0f9620,\n\t0xb1bc: 0x6c05ca20,\n\t// Block 0x2c7, offset 0xb1c0\n\t0xb1c0: 0x6c182c20, 0xb1c2: 0x6c182e20,\n\t0xb1c5: 0x6c10ac20, 0xb1c6: 0x6c013a20,\n\t0xb1c9: 0x6c183420, 0xb1ca: 0x6c081220,\n\t0xb1cc: 0x6c183220, 0xb1cd: 0x6c07a420, 0xb1cf: 0x6c183620,\n\t0xb1d0: 0x6c27ee20, 0xb1d1: 0x6c183820, 0xb1d2: 0x6c141620, 0xb1d3: 0x6c183a20,\n\t0xb1d5: 0x6c183c20, 0xb1d6: 0x6c183e20, 0xb1d7: 0x6c0ada20,\n\t0xb1d9: 0x6c092820,\n\t0xb1e0: 0x6c02fe20, 0xb1e2: 0x6c184420,\n\t0xb1e4: 0x6c184020, 0xb1e5: 0x6c14ca20, 0xb1e6: 0x6c184220,\n\t0xb1e8: 0x6c12d020, 0xb1e9: 0x6c184620, 0xb1ea: 0x6c184820, 0xb1eb: 0x6c184a20,\n\t0xb1ec: 0x6c0fea20,\n\t0xb1f0: 0x6c185220, 0xb1f1: 0x6c184e20, 0xb1f2: 0x6c185020, 0xb1f3: 0x6c184c20,\n\t0xb1f4: 0x6c07de20, 0xb1f5: 0x6c185420, 0xb1f6: 0x6c152420, 0xb1f7: 0x6c169020,\n\t0xb1fd: 0x6c185620,\n\t// Block 0x2c8, offset 0xb200\n\t0xb204: 0x6c0bd020, 0xb205: 0x6c185820, 0xb206: 0x6c0a0020,\n\t0xb209: 0x6c185a20, 0xb20b: 0x6c0eac20,\n\t0xb20c: 0x6c164620, 0xb20d: 0x6c0fec20,\n\t0xb216: 0x6c18ec20,\n\t0xb21b: 0x6c185c20,\n\t0xb21c: 0x6c31a420, 0xb21d: 0x6c04b220,\n\t0xb220: 0x6c185e20, 0xb221: 0x6c145020,\n\t0xb226: 0x6c0a1c20, 0xb227: 0x6c0df020,\n\t0xb229: 0x6c186220, 0xb22a: 0x6c10b020,\n\t0xb22d: 0x6c186420,\n\t0xb230: 0x6c186620, 0xb231: 0x6c025020,\n\t0xb235: 0x6c186820, 0xb236: 0x6c047620,\n\t0xb238: 0x6c108020, 0xb239: 0x6c017020, 0xb23a: 0x6c09ec20,\n\t0xb23d: 0x6c11a220, 0xb23e: 0x6c186a20,\n\t// Block 0x2c9, offset 0xb240\n\t0xb240: 0x6c0fee20, 0xb243: 0x6c0b6220,\n\t0xb244: 0x6c186c20, 0xb246: 0x6c133020, 0xb247: 0x6c0c3420,\n\t0xb248: 0x6c02f420, 0xb24a: 0x6c030220, 0xb24b: 0x6c186e20,\n\t0xb24e: 0x6c187220,\n\t0xb251: 0x6c055820,\n\t0xb254: 0x6c187020, 0xb257: 0x6c16ae20,\n\t0xb25d: 0x6c0a1e20,\n\t0xb264: 0x6c11da20, 0xb265: 0x6c137020, 0xb267: 0x6c187420,\n\t0xb269: 0x6c15fc20, 0xb26a: 0x6c187620,\n\t0xb26e: 0x6c187820,\n\t0xb270: 0x6c102820, 0xb273: 0x6c187a20,\n\t0xb276: 0x6c0bd220, 0xb277: 0x6c081420,\n\t0xb278: 0x6c05cc20, 0xb279: 0x6c187c20, 0xb27a: 0x6c086620, 0xb27b: 0x6c073a20,\n\t// Block 0x2ca, offset 0xb280\n\t0xb283: 0x6c0f3c20,\n\t0xb284: 0x6c188020, 0xb287: 0x6c0d4620,\n\t0xb28a: 0x6c07f620, 0xb28b: 0x6c188220,\n\t0xb28c: 0x6c188420, 0xb28d: 0x6c0c9c20, 0xb28f: 0x6c187e20,\n\t0xb294: 0x6c188820, 0xb296: 0x6c140020,\n\t0xb29b: 0x6c072420,\n\t0xb29e: 0x6c188620,\n\t0xb2a3: 0x6c05ce20,\n\t0xb2a4: 0x6c07d420, 0xb2a5: 0x6c117e20,\n\t0xb2a9: 0x6c188e20, 0xb2aa: 0x6c188a20,\n\t0xb2af: 0x6c131220,\n\t0xb2b0: 0x6c0adc20, 0xb2b1: 0x6c189c20, 0xb2b2: 0x6c02bc20, 0xb2b3: 0x6c189020,\n\t0xb2b4: 0x6c188c20, 0xb2b5: 0x6c0cda20,\n\t0xb2bd: 0x6c189420, 0xb2bf: 0x6c189220,\n\t// Block 0x2cb, offset 0xb2c0\n\t0xb2c3: 0x6c027c20,\n\t0xb2c7: 0x6c05a420,\n\t0xb2c8: 0x6c189e20, 0xb2c9: 0x6c162220,\n\t0xb2cd: 0x6c189620,\n\t0xb2d1: 0x6c18a020, 0xb2d2: 0x6c189a20,\n\t0xb2d4: 0x6c189820,\n\t0xb2db: 0x6c166620,\n\t0xb2df: 0x6c069220,\n\t0xb2e0: 0x6c01be20, 0xb2e3: 0x6c16b020,\n\t0xb2e9: 0x6c0a3620, 0xb2ea: 0x6c0fdc20, 0xb2eb: 0x6c072620,\n\t0xb2ec: 0x6c18a620, 0xb2ed: 0x6c18a820,\n\t0xb2f1: 0x6c169220,\n\t0xb2f4: 0x6c16da20, 0xb2f5: 0x6c18ac20,\n\t0xb2f9: 0x6c069420,\n\t0xb2fc: 0x6c18aa20, 0xb2fe: 0x6c025220,\n\t// Block 0x2cc, offset 0xb300\n\t0xb301: 0x6c18ae20, 0xb303: 0x6c144020,\n\t0xb305: 0x6c0ee820, 0xb307: 0x6c155820,\n\t0xb309: 0x6c138a20,\n\t0xb30d: 0x6c18b020,\n\t0xb312: 0x6c2f1420,\n\t0xb315: 0x6c104820, 0xb317: 0x6c18b220,\n\t0xb318: 0x6c030420, 0xb319: 0x6c14b620,\n\t0xb31d: 0x6c0a4a20, 0xb31e: 0x6c18b420, 0xb31f: 0x6c13a620,\n\t0xb320: 0x6c18bc20, 0xb322: 0x6c0bd420, 0xb323: 0x6c18b620,\n\t0xb324: 0x6c04c820, 0xb326: 0x6c18b820, 0xb327: 0x6c030620,\n\t0xb332: 0x6c054020, 0xb333: 0x6c18be20,\n\t0xb335: 0x6c18c020,\n\t0xb338: 0x6c18c220, 0xb339: 0x6c18c420, 0xb33a: 0x6c094620,\n\t0xb33e: 0x6c069620, 0xb33f: 0x6c150c20,\n\t// Block 0x2cd, offset 0xb340\n\t0xb341: 0x6c152020, 0xb342: 0x6c10d620,\n\t0xb345: 0x6c13ba20, 0xb346: 0x6c18c620,\n\t0xb348: 0x6c18c820,\n\t0xb34d: 0x6c18cc20, 0xb34f: 0x6c18d020,\n\t0xb350: 0x6c18ce20,\n\t0xb355: 0x6c18d220, 0xb356: 0x6c01b220, 0xb357: 0x6c142c20,\n\t0xb359: 0x6c081020, 0xb35a: 0x6c18d420,\n\t0xb35d: 0x6c0cee20,\n\t0xb360: 0x6c0a4c20, 0xb361: 0x6c047a20, 0xb363: 0x6c18d620,\n\t0xb36a: 0x6c121620,\n\t0xb36f: 0x6c18d820,\n\t0xb371: 0x6c18da20, 0xb373: 0x6c18dc20,\n\t0xb378: 0x6c18de20, 0xb379: 0x6c126420, 0xb37a: 0x6c04f820, 0xb37b: 0x6c008a20,\n\t0xb37f: 0x6c106620,\n\t// Block 0x2ce, offset 0xb380\n\t0xb380: 0x6c18e020, 0xb381: 0x6c09c620, 0xb383: 0x6c0c5220,\n\t0xb385: 0x6c18e420, 0xb386: 0x6c18e220, 0xb387: 0x6c0a4e20,\n\t0xb388: 0x6c066220, 0xb389: 0x6c18e820, 0xb38a: 0x6c11dc20,\n\t0xb38d: 0x6c18ea20,\n\t0xb391: 0x6c121820, 0xb392: 0x6c0d6020, 0xb393: 0x6c0dd420,\n\t0xb394: 0x6c047820, 0xb397: 0x6c10c420,\n\t0xb398: 0x6c0e1620, 0xb39a: 0x6c118020,\n\t0xb39c: 0x6c143020, 0xb39e: 0x6c18ee20,\n\t0xb3a0: 0x6c0c5420,\n\t0xb3a6: 0x6c054e20,\n\t0xb3a9: 0x6c18f020,\n\t0xb3ae: 0x6c18f220, 0xb3af: 0x6c00d420,\n\t0xb3b0: 0x6c00aa20, 0xb3b1: 0x6c038a20, 0xb3b3: 0x6c0d4820,\n\t0xb3b4: 0x6c040e20, 0xb3b5: 0x6c15ee20, 0xb3b7: 0x6c18f820,\n\t0xb3b8: 0x6c01a620, 0xb3bb: 0x6c18f620,\n\t0xb3bf: 0x6c047c20,\n\t// Block 0x2cf, offset 0xb3c0\n\t0xb3c2: 0x6c18fa20,\n\t0xb3c4: 0x6c153220,\n\t0xb3d6: 0x6c18fc20,\n\t0xb3d8: 0x6c166c20, 0xb3da: 0x6c069820,\n\t0xb3df: 0x6c060c20,\n\t0xb3e0: 0x6c18fe20,\n\t0xb3e5: 0x6c190220, 0xb3e6: 0x6c190020,\n\t0xb3e8: 0x6c0b8220, 0xb3e9: 0x6c00ee20,\n\t0xb3ed: 0x6c013820, 0xb3ee: 0x6c190420,\n\t0xb3f0: 0x6c190620, 0xb3f3: 0x6c060e20,\n\t0xb3f6: 0x6c190820,\n\t0xb3fb: 0x6c044820,\n\t// Block 0x2d0, offset 0xb400\n\t0xb402: 0x6c083820, 0xb403: 0x6c190a20,\n\t0xb408: 0x6c147c20, 0xb409: 0x6c078220, 0xb40a: 0x6c042020, 0xb40b: 0x6c155a20,\n\t0xb40c: 0x6c0cdc20, 0xb40d: 0x6c11de20, 0xb40e: 0x6c098a20,\n\t0xb414: 0x6c09da20, 0xb416: 0x6c096020, 0xb417: 0x6c097a20,\n\t0xb419: 0x6c0a3820, 0xb41b: 0x6c11e020,\n\t0xb41f: 0x6c191020,\n\t0xb421: 0x6c010220, 0xb422: 0x6c0cde20, 0xb423: 0x6c069a20,\n\t0xb424: 0x6c062a20, 0xb425: 0x6c04f620,\n\t0xb428: 0x6c191820, 0xb429: 0x6c0df620, 0xb42a: 0x6c0df420, 0xb42b: 0x6c047e20,\n\t0xb42c: 0x6c0a5020, 0xb42d: 0x6c191a20, 0xb42e: 0x6c191620, 0xb42f: 0x6c01c020,\n\t0xb430: 0x6c0dc420, 0xb431: 0x6c090020, 0xb432: 0x6c086a20, 0xb433: 0x6c00c820,\n\t0xb436: 0x6c02d420, 0xb437: 0x6c072820,\n\t0xb438: 0x6c086820, 0xb43a: 0x6c191c20,\n\t// Block 0x2d1, offset 0xb440\n\t0xb441: 0x6c191e20, 0xb443: 0x6c03fe20,\n\t0xb444: 0x6c028020,\n\t0xb448: 0x6c072a20, 0xb449: 0x6c03fc20, 0xb44a: 0x6c0f2e20, 0xb44b: 0x6c00c620,\n\t0xb44c: 0x6c104a20, 0xb44d: 0x6c14cc20, 0xb44e: 0x6c069e20, 0xb44f: 0x6c15fe20,\n\t0xb450: 0x6c0fba20, 0xb451: 0x6c069c20,\n\t0xb45b: 0x6c054220,\n\t0xb45d: 0x6c193020, 0xb45f: 0x6c04ee20,\n\t0xb460: 0x6c142820,\n\t0xb466: 0x6c121a20,\n\t0xb469: 0x6c192e20, 0xb46b: 0x6c036c20,\n\t0xb46c: 0x6c192420, 0xb46d: 0x6c192620, 0xb46e: 0x6c192a20,\n\t0xb476: 0x6c192c20,\n\t0xb478: 0x6c042220, 0xb479: 0x6c0b8620, 0xb47b: 0x6c133220,\n\t0xb47c: 0x6c192820, 0xb47d: 0x6c192020, 0xb47e: 0x6c066620,\n\t// Block 0x2d2, offset 0xb480\n\t0xb480: 0x6c192220, 0xb482: 0x6c16cc20,\n\t0xb486: 0x6c13bc20,\n\t0xb488: 0x6c0f4020, 0xb489: 0x6c066420, 0xb48a: 0x6c073c20,\n\t0xb48e: 0x6c193220,\n\t0xb491: 0x6c10a220,\n\t0xb49f: 0x6c193a20,\n\t0xb4a8: 0x6c098c20, 0xb4aa: 0x6c097c20,\n\t0xb4b0: 0x6c194020, 0xb4b1: 0x6c193c20, 0xb4b3: 0x6c149620,\n\t0xb4b5: 0x6c193620, 0xb4b6: 0x6c194820, 0xb4b7: 0x6c193e20,\n\t0xb4bb: 0x6c194420,\n\t0xb4bc: 0x6c062c20, 0xb4bd: 0x6c14ce20,\n\t// Block 0x2d3, offset 0xb4c0\n\t0xb4c0: 0x6c194620,\n\t0xb4c4: 0x6c194a20, 0xb4c6: 0x6c194e20,\n\t0xb4cb: 0x6c07f820,\n\t0xb4cc: 0x6c170820, 0xb4ce: 0x6c193820, 0xb4cf: 0x6c193420,\n\t0xb4d0: 0x6c194c20, 0xb4d2: 0x6c194220,\n\t0xb4e2: 0x6c195220,\n\t0xb4e4: 0x6c196420, 0xb4e5: 0x6c195620,\n\t0xb4e8: 0x6c195e20, 0xb4eb: 0x6c196020,\n\t0xb4ec: 0x6c195820, 0xb4ef: 0x6c199a20,\n\t0xb4f2: 0x6c07ea20, 0xb4f3: 0x6c025620,\n\t0xb4f8: 0x6c195420,\n\t0xb4fc: 0x6c196820, 0xb4fd: 0x6c00ac20, 0xb4fe: 0x6c196620,\n\t// Block 0x2d4, offset 0xb500\n\t0xb500: 0x6c000a20, 0xb501: 0x6c12b020, 0xb502: 0x6c196220,\n\t0xb504: 0x6c195a20, 0xb507: 0x6c195020,\n\t0xb508: 0x6c195c20, 0xb509: 0x6c07a820,\n\t0xb518: 0x6c196a20,\n\t0xb521: 0x6c00ae20, 0xb522: 0x6c197c20,\n\t0xb525: 0x6c196c20, 0xb526: 0x6c196e20,\n\t0xb528: 0x6c0a5220, 0xb529: 0x6c146620,\n\t0xb52d: 0x6c197820, 0xb52e: 0x6c197620,\n\t0xb532: 0x6c0f8a20,\n\t0xb53a: 0x6c197a20,\n\t0xb53d: 0x6c197420,\n\t// Block 0x2d5, offset 0xb540\n\t0xb544: 0x6c00e420, 0xb546: 0x6c078420, 0xb547: 0x6c0b2420,\n\t0xb54f: 0x6c197020,\n\t0xb550: 0x6c0ff020,\n\t0xb554: 0x6c197220, 0xb556: 0x6c000420,\n\t0xb56e: 0x6c198620, 0xb56f: 0x6c155220,\n\t0xb571: 0x6c0a5620, 0xb573: 0x6c199220,\n\t0xb578: 0x6c199020, 0xb579: 0x6c197e20,\n\t0xb57e: 0x6c0d7e20,\n\t// Block 0x2d6, offset 0xb580\n\t0xb580: 0x6c198020,\n\t0xb584: 0x6c0dd620, 0xb585: 0x6c198a20, 0xb586: 0x6c0a5420,\n\t0xb58c: 0x6c198420, 0xb58f: 0x6c151820,\n\t0xb593: 0x6c055c20,\n\t0xb596: 0x6c198c20, 0xb597: 0x6c198e20,\n\t0xb59c: 0x6c198820, 0xb59d: 0x6c199420,\n\t0xb5a3: 0x6c198220,\n\t0xb5bb: 0x6c19a020,\n\t0xb5bc: 0x6c19aa20, 0xb5be: 0x6c19a220,\n\t// Block 0x2d7, offset 0xb5c0\n\t0xb5c0: 0x6c199820, 0xb5c3: 0x6c19ac20,\n\t0xb5c4: 0x6c0c9e20, 0xb5c7: 0x6c19b020,\n\t0xb5c9: 0x6c06a020, 0xb5ca: 0x6c199c20, 0xb5cb: 0x6c0eae20,\n\t0xb5d8: 0x6c19a420, 0xb5d9: 0x6c199620, 0xb5da: 0x6c030a20,\n\t0xb5dc: 0x6c038c20, 0xb5dd: 0x6c02be20, 0xb5de: 0x6c19a620, 0xb5df: 0x6c199e20,\n\t0xb5e7: 0x6c05d020,\n\t0xb5e8: 0x6c19b220, 0xb5e9: 0x6c19ae20, 0xb5ea: 0x6c0ce220, 0xb5eb: 0x6c040020,\n\t0xb5ec: 0x6c048020, 0xb5ee: 0x6c19a820,\n\t0xb5f0: 0x6c051020,\n\t0xb5f6: 0x6c010420,\n\t// Block 0x2d8, offset 0xb600\n\t0xb604: 0x6c19ba20, 0xb605: 0x6c19b620, 0xb607: 0x6c1a2820,\n\t0xb614: 0x6c19c020,\n\t0xb61a: 0x6c19b420,\n\t0xb61c: 0x6c19bc20, 0xb61f: 0x6c19b820,\n\t0xb623: 0x6c086c20,\n\t0xb624: 0x6c19be20,\n\t0xb637: 0x6c19c420,\n\t0xb639: 0x6c19ce20,\n\t0xb63d: 0x6c19ca20, 0xb63e: 0x6c19c820,\n\t// Block 0x2d9, offset 0xb640\n\t0xb646: 0x6c0e1820,\n\t0xb649: 0x6c01c220,\n\t0xb654: 0x6c19c220, 0xb656: 0x6c19c620, 0xb657: 0x6c0a5820,\n\t0xb658: 0x6c00e220, 0xb65b: 0x6c19cc20,\n\t0xb669: 0x6c01f420,\n\t0xb66f: 0x6c19e220,\n\t0xb671: 0x6c0b0020, 0xb672: 0x6c19da20,\n\t0xb674: 0x6c19d620, 0xb676: 0x6c19d820,\n\t0xb678: 0x6c19dc20,\n\t// Block 0x2da, offset 0xb680\n\t0xb682: 0x6c00f620,\n\t0xb68c: 0x6c0cae20, 0xb68e: 0x6c19d020,\n\t0xb690: 0x6c19d220,\n\t0xb69b: 0x6c02e820,\n\t0xb6a4: 0x6c19e020,\n\t0xb6a8: 0x6c038e20, 0xb6aa: 0x6c19e620, 0xb6ab: 0x6c19de20,\n\t0xb6ac: 0x6c19e420,\n\t0xb6b4: 0x6c133420,\n\t0xb6b8: 0x6c109220, 0xb6ba: 0x6c11d020,\n\t// Block 0x2db, offset 0xb6c0\n\t0xb6c0: 0x6c19ea20,\n\t0xb6c6: 0x6c19e820, 0xb6c7: 0x6c027e20,\n\t0xb6ca: 0x6c19ec20,\n\t0xb6cf: 0x6c19f220,\n\t0xb6d4: 0x6c19f020,\n\t0xb6e0: 0x6c19ee20, 0xb6e2: 0x6c111620,\n\t0xb6e5: 0x6c19f420,\n\t0xb6ee: 0x6c19f620,\n\t0xb6f4: 0x6c19fa20, 0xb6f6: 0x6c19f820,\n\t0xb6fc: 0x6c19fe20,\n\t// Block 0x2dc, offset 0xb700\n\t0xb700: 0x6c1a0420, 0xb701: 0x6c1a0020, 0xb702: 0x6c19fc20, 0xb703: 0x6c1a0220,\n\t0xb708: 0x6c1a0620,\n\t0xb70e: 0x6c1a0820,\n\t0xb711: 0x6c1a0a20, 0xb713: 0x6c1a0c20,\n\t0xb717: 0x6c1a0e20,\n\t0xb718: 0x6c183020, 0xb71a: 0x6c098820, 0xb71b: 0x6c086e20,\n\t0xb71e: 0x6c021e20,\n\t0xb720: 0x6c00b020, 0xb723: 0x6c0e3c20,\n\t0xb72e: 0x6c1a1020,\n\t0xb730: 0x6c076020, 0xb732: 0x6c005e20, 0xb733: 0x6c0b8020,\n\t0xb739: 0x6c1a1220, 0xb73a: 0x6c062e20,\n\t0xb73d: 0x6c073e20, 0xb73f: 0x6c1a1620,\n\t// Block 0x2dd, offset 0xb740\n\t0xb740: 0x6c1a1420, 0xb743: 0x6c139820,\n\t0xb744: 0x6c1a1820,\n\t0xb748: 0x6c1a1c20, 0xb749: 0x6c1a1a20, 0xb74b: 0x6c1a1e20,\n\t0xb74d: 0x6c1a2020, 0xb74f: 0x6c05d220,\n\t0xb752: 0x6c013c20, 0xb753: 0x6c1a2220,\n\t0xb756: 0x6c1a2620,\n\t0xb758: 0x6c1a2420,\n\t0xb75c: 0x6c1a2a20, 0xb75f: 0x6c0fe020,\n\t0xb766: 0x6c1a2c20, 0xb767: 0x6c002a20,\n\t0xb768: 0x6c07d620,\n\t0xb76d: 0x6c055e20,\n\t0xb770: 0x6c0e5220,\n\t0xb777: 0x6c1a2e20,\n\t0xb778: 0x6c1a3020, 0xb77b: 0x6c1a3420,\n\t// Block 0x2de, offset 0xb780\n\t0xb780: 0x6c1a3620, 0xb782: 0x6c07e020,\n\t0xb787: 0x6c04ca20,\n\t0xb78a: 0x6c140220,\n\t0xb78e: 0x6c1a3220, 0xb78f: 0x6c1a3820,\n\t0xb790: 0x6c079a20, 0xb791: 0x6c06a220,\n\t0xb7a1: 0x6c1a4020,\n\t0xb7a4: 0x6c076220, 0xb7a6: 0x6c0e1a20,\n\t0xb7a9: 0x6c1a3a20, 0xb7aa: 0x6c0f2420,\n\t0xb7bf: 0x6c1a4220,\n\t// Block 0x2df, offset 0xb7c0\n\t0xb7c2: 0x6c0b8820,\n\t0xb7c8: 0x6c1a3e20, 0xb7c9: 0x6c1a4420, 0xb7cb: 0x6c056220,\n\t0xb7d3: 0x6c1a4620,\n\t0xb7e0: 0x6c1a4820, 0xb7e2: 0x6c06a420, 0xb7e3: 0x6c027420,\n\t0xb7e4: 0x6c1a4c20,\n\t0xb7ea: 0x6c1a4e20,\n\t0xb7f0: 0x6c1a5020, 0xb7f3: 0x6c1a4a20,\n\t// Block 0x2e0, offset 0xb800\n\t0xb800: 0x6c1a3c20, 0xb803: 0x6c1a5220,\n\t0xb806: 0x6c1a5420,\n\t0xb80b: 0x6c145c20,\n\t0xb80e: 0x6c0ade20,\n\t0xb812: 0x6c1a5820, 0xb813: 0x6c1a5a20,\n\t0xb814: 0x6c1a5620, 0xb816: 0x6c1a5e20,\n\t0xb81c: 0x6c111420, 0xb81f: 0x6c009020,\n\t0xb820: 0x6c12c820, 0xb823: 0x6c1a6020,\n\t0xb834: 0x6c0b0220, 0xb837: 0x6c090220,\n\t0xb839: 0x6c115e20, 0xb83a: 0x6c039020,\n\t0xb83c: 0x6c07ee20,\n\t// Block 0x2e1, offset 0xb840\n\t0xb840: 0x6c144620, 0xb842: 0x6c104c20,\n\t0xb845: 0x6c05d420, 0xb846: 0x6c0d9620,\n\t0xb84a: 0x6c1a5c20, 0xb84b: 0x6c1a6220,\n\t0xb855: 0x6c0d8020,\n\t0xb859: 0x6c1a6420,\n\t0xb85d: 0x6c1a6620,\n\t0xb861: 0x6c1a6a20,\n\t0xb864: 0x6c0f4220,\n\t0xb86a: 0x6c030c20,\n\t0xb86f: 0x6c319c20,\n\t0xb870: 0x6c013e20, 0xb871: 0x6c13be20,\n\t0xb874: 0x6c0ae020, 0xb875: 0x6c0fbc20,\n\t0xb87a: 0x6c07e420,\n\t0xb87d: 0x6c1a7620,\n\t// Block 0x2e2, offset 0xb880\n\t0xb880: 0x6c135220, 0xb881: 0x6c168220,\n\t0xb88a: 0x6c022020, 0xb88b: 0x6c1a6e20,\n\t0xb891: 0x6c0cb020, 0xb892: 0x6c1a7420,\n\t0xb894: 0x6c0ff220, 0xb897: 0x6c0fbe20,\n\t0xb898: 0x6c0ff420, 0xb899: 0x6c11d220, 0xb89a: 0x6c0f0a20,\n\t0xb89e: 0x6c07aa20,\n\t0xb8a2: 0x6c1a6c20,\n\t0xb8a9: 0x6c016820, 0xb8ab: 0x6c0f9820,\n\t0xb8b0: 0x6c1a7020, 0xb8b2: 0x6c1a6820,\n\t0xb8b5: 0x6c0b6420,\n\t0xb8b9: 0x6c1a7820,\n\t0xb8be: 0x6c09e820,\n\t// Block 0x2e3, offset 0xb8c0\n\t0xb8c3: 0x6c048220,\n\t0xb8c5: 0x6c1a7a20,\n\t0xb8d3: 0x6c13a820,\n\t0xb8d7: 0x6c0d3620,\n\t0xb8dc: 0x6c0efc20, 0xb8df: 0x6c1a7e20,\n\t0xb8e8: 0x6c143220, 0xb8eb: 0x6c1a8020,\n\t0xb8ee: 0x6c1a8a20,\n\t0xb8f3: 0x6c133620,\n\t0xb8f8: 0x6c1a8820, 0xb8f9: 0x6c1a7c20, 0xb8fa: 0x6c1a8220, 0xb8fb: 0x6c1a8620,\n\t0xb8fe: 0x6c076420,\n\t// Block 0x2e4, offset 0xb900\n\t0xb901: 0x6c136a20,\n\t0xb905: 0x6c1a8c20, 0xb907: 0x6c0e3e20,\n\t0xb90a: 0x6c022220,\n\t0xb90c: 0x6c0ae220,\n\t0xb911: 0x6c1a9020, 0xb913: 0x6c1a8e20,\n\t0xb915: 0x6c072c20, 0xb917: 0x6c1a9220,\n\t0xb918: 0x6c1a9620, 0xb919: 0x6c1a9420,\n\t0xb91c: 0x6c1a9a20, 0xb91e: 0x6c1a8420, 0xb91f: 0x6c1a9e20,\n\t0xb924: 0x6c1a9c20, 0xb925: 0x6c1a9820,\n\t0xb92b: 0x6c087020,\n\t0xb92c: 0x6c0b6620, 0xb92e: 0x6c0ce420, 0xb92f: 0x6c1aa020,\n\t0xb930: 0x6c0bf820, 0xb931: 0x6c009a20, 0xb932: 0x6c116c20,\n\t0xb937: 0x6c0f2620,\n\t0xb939: 0x6c1aa420, 0xb93a: 0x6c1aa220, 0xb93b: 0x6c1aa620,\n\t0xb93c: 0x6c1aa820, 0xb93d: 0x6c1aaa20,\n\t// Block 0x2e5, offset 0xb940\n\t0xb942: 0x6c1aac20,\n\t0xb949: 0x6c137a20, 0xb94a: 0x6c1aae20,\n\t0xb94f: 0x6c01c420,\n\t0xb950: 0x6c1ab020,\n\t0xb955: 0x6c158420, 0xb956: 0x6c025420,\n\t0xb958: 0x6c18f420, 0xb959: 0x6c09dc20, 0xb95a: 0x6c0d7620, 0xb95b: 0x6c1ab220,\n\t0xb95c: 0x6c152620,\n\t0xb962: 0x6c14b820,\n\t0xb965: 0x6c1ab620, 0xb967: 0x6c0dc620,\n\t0xb969: 0x6c0f9a20, 0xb96a: 0x6c0d7820, 0xb96b: 0x6c12ca20,\n\t0xb96c: 0x6c1ab820, 0xb96d: 0x6c1aba20, 0xb96e: 0x6c017220,\n\t0xb971: 0x6c090420, 0xb972: 0x6c1abc20,\n\t0xb977: 0x6c006020,\n\t0xb978: 0x6c1abe20,\n\t0xb97e: 0x6c1ac020,\n\t// Block 0x2e6, offset 0xb980\n\t0xb984: 0x6c014020, 0xb987: 0x6c039220,\n\t0xb988: 0x6c10a820, 0xb989: 0x6c13c020,\n\t0xb98e: 0x6c1ac820, 0xb98f: 0x6c0ce620,\n\t0xb990: 0x6c1ac620, 0xb991: 0x6c056420,\n\t0xb994: 0x6c144a20, 0xb995: 0x6c1ac420, 0xb997: 0x6c0ff620,\n\t0xb998: 0x6c1acc20, 0xb99a: 0x6c1aca20,\n\t0xb9a0: 0x6c1ad020, 0xb9a2: 0x6c1ace20,\n\t0xb9a5: 0x6c017420, 0xb9a7: 0x6c1ad220,\n\t0xb9a8: 0x6c0a5a20, 0xb9a9: 0x6c1ad620, 0xb9aa: 0x6c0dfe20,\n\t0xb9ac: 0x6c1ad420, 0xb9ae: 0x6c133e20,\n\t0xb9b3: 0x6c0a3a20,\n\t0xb9b4: 0x6c0fe220,\n\t0xb9b8: 0x6c1ad820,\n\t0xb9bd: 0x6c06a620,\n\t// Block 0x2e7, offset 0xb9c0\n\t0xb9c1: 0x6c1ada20, 0xb9c2: 0x6c10e620, 0xb9c3: 0x6c121c20,\n\t0xb9c4: 0x6c14f220,\n\t0xb9ca: 0x6c10ee20,\n\t0xb9cd: 0x6c1aec20,\n\t0xb9d3: 0x6c03dc20,\n\t0xb9d6: 0x6c159620,\n\t0xb9d9: 0x6c14ae20, 0xb9db: 0x6c1baa20,\n\t0xb9dd: 0x6c1adc20,\n\t0xb9e3: 0x6c1ae220,\n\t0xb9e5: 0x6c0d8220,\n\t0xb9e8: 0x6c140420,\n\t0xb9ec: 0x6c0fc020,\n\t0xb9f2: 0x6c1ae420,\n\t0xb9f9: 0x6c145e20, 0xb9fb: 0x6c07ac20,\n\t0xb9fe: 0x6c0a5c20,\n\t// Block 0x2e8, offset 0xba00\n\t0xba06: 0x6c1ae620,\n\t0xba09: 0x6c087420, 0xba0b: 0x6c087220,\n\t0xba10: 0x6c003220, 0xba11: 0x6c063020, 0xba13: 0x6c0bd620,\n\t0xba14: 0x6c006220,\n\t0xba19: 0x6c1aee20, 0xba1a: 0x6c1af020,\n\t0xba1c: 0x6c1aea20,\n\t0xba25: 0x6c00ec20, 0xba26: 0x6c030e20,\n\t0xba28: 0x6c1ae820, 0xba2a: 0x6c14da20, 0xba2b: 0x6c127e20,\n\t0xba36: 0x6c001020,\n\t0xba3b: 0x6c00b220,\n\t0xba3f: 0x6c087620,\n\t// Block 0x2e9, offset 0xba40\n\t0xba41: 0x6c006420, 0xba43: 0x6c000620,\n\t0xba49: 0x6c1afa20,\n\t0xba51: 0x6c1af620,\n\t0xba58: 0x6c14c820, 0xba5a: 0x6c1afc20,\n\t0xba5c: 0x6c1af820, 0xba5f: 0x6c1af420,\n\t0xba60: 0x6c0b2620,\n\t0xba65: 0x6c1af220,\n\t0xba69: 0x6c138c20,\n\t0xba6f: 0x6c066820,\n\t0xba75: 0x6c1b0420, 0xba76: 0x6c1b0620,\n\t0xba7c: 0x6c0a5e20,\n\t// Block 0x2ea, offset 0xba80\n\t0xba80: 0x6c1afe20, 0xba81: 0x6c16dc20,\n\t0xba86: 0x6c113c20,\n\t0xba89: 0x6c1b0220,\n\t0xba9a: 0x6c076620,\n\t0xbaa2: 0x6c1b0820,\n\t0xbaa6: 0x6c12cc20,\n\t0xbaaa: 0x6c1b0a20,\n\t0xbaac: 0x6c1b0020,\n\t0xbabf: 0x6c14c620,\n\t// Block 0x2eb, offset 0xbac0\n\t0xbad2: 0x6c116020,\n\t0xbada: 0x6c1b0c20, 0xbadb: 0x6c128020,\n\t0xbafc: 0x6c1b0e20, 0xbafd: 0x6c1b1620, 0xbafe: 0x6c1b1020,\n\t// Block 0x2ec, offset 0xbb00\n\t0xbb01: 0x6c01c620, 0xbb02: 0x6c1b1420,\n\t0xbb09: 0x6c090620, 0xbb0b: 0x6c1b1220,\n\t0xbb0c: 0x6c05d620,\n\t0xbb10: 0x6c1b2e20,\n\t0xbb16: 0x6c1b2020, 0xbb17: 0x6c1b1a20,\n\t0xbb21: 0x6c0e7c20, 0xbb23: 0x6c1b1820,\n\t0xbb26: 0x6c1b1c20,\n\t0xbb29: 0x6c1b1e20,\n\t0xbb3a: 0x6c1b2220, 0xbb3b: 0x6c1b2420,\n\t// Block 0x2ed, offset 0xbb40\n\t0xbb49: 0x6c039420, 0xbb4b: 0x6c1b2820,\n\t0xbb4c: 0x6c1b2620,\n\t0xbb56: 0x6c1b2a20,\n\t0xbb62: 0x6c0ae420,\n\t0xbb6a: 0x6c1b3020,\n\t0xbb6c: 0x6c0f2820,\n\t0xbb70: 0x6c010620, 0xbb72: 0x6c1b2c20,\n\t0xbb76: 0x6c1b3220,\n\t0xbb7e: 0x6c1b3420,\n\t// Block 0x2ee, offset 0xbb80\n\t0xbb80: 0x6c1b3a20, 0xbb83: 0x6c1b3620,\n\t0xbb85: 0x6c1b3820,\n\t0xbb90: 0x6c087820, 0xbb91: 0x6c1b3c20,\n\t0xbb94: 0x6c06a820, 0xbb95: 0x6c1b3e20, 0xbb97: 0x6c08c820,\n\t0xbb98: 0x6c0d6820, 0xbb9a: 0x6c1b4020, 0xbb9b: 0x6c1b4220,\n\t0xbb9c: 0x6c088820, 0xbb9d: 0x6c06aa20, 0xbb9f: 0x6c14f420,\n\t0xbba3: 0x6c03bc20,\n\t0xbba4: 0x6c063220, 0xbba5: 0x6c1b4420, 0xbba6: 0x6c02a420,\n\t0xbba9: 0x6c1b4620, 0xbbab: 0x6c0d6a20,\n\t0xbbb0: 0x6c1b4820, 0xbbb1: 0x6c1b9820, 0xbbb3: 0x6c1b4a20,\n\t0xbbb5: 0x6c1b4c20,\n\t0xbbb8: 0x6c1b4e20, 0xbbba: 0x6c1b5220,\n\t// Block 0x2ef, offset 0xbbc0\n\t0xbbc0: 0x6c1b5420, 0xbbc3: 0x6c1b5620,\n\t0xbbc5: 0x6c0dd820, 0xbbc7: 0x6c00ca20,\n\t0xbbc8: 0x6c096220, 0xbbc9: 0x6c004420, 0xbbcb: 0x6c0cea20,\n\t0xbbcc: 0x6c031020, 0xbbcd: 0x6c08fa20, 0xbbcf: 0x6c06ac20,\n\t0xbbd5: 0x6c0ff820, 0xbbd7: 0x6c098e20,\n\t0xbbd8: 0x6c031220, 0xbbd9: 0x6c0e8420, 0xbbda: 0x6c0f4420, 0xbbdb: 0x6c003020,\n\t0xbbdc: 0x6c03de20, 0xbbdd: 0x6c13c220, 0xbbdf: 0x6c091420,\n\t0xbbe2: 0x6c041020, 0xbbe3: 0x6c0c5620,\n\t0xbbe4: 0x6c090820, 0xbbe5: 0x6c155c20, 0xbbe6: 0x6c1b5820,\n\t0xbbee: 0x6c042420,\n\t0xbbf0: 0x6c07ae20, 0xbbf3: 0x6c025820,\n\t0xbbf4: 0x6c014220, 0xbbf5: 0x6c0a6020, 0xbbf6: 0x6c01c820,\n\t0xbbf8: 0x6c1b5a20, 0xbbf9: 0x6c159820,\n\t0xbbff: 0x6c09de20,\n\t// Block 0x2f0, offset 0xbc00\n\t0xbc02: 0x6c095820, 0xbc03: 0x6c1b5c20,\n\t0xbc04: 0x6c039620, 0xbc05: 0x6c108c20, 0xbc06: 0x6c14a220, 0xbc07: 0x6c1b5e20,\n\t0xbc09: 0x6c1b6020,\n\t0xbc0c: 0x6c12ce20,\n\t0xbc10: 0x6c1b6420, 0xbc12: 0x6c030020, 0xbc13: 0x6c051620,\n\t0xbc14: 0x6c1b6220,\n\t0xbc1b: 0x6c031420,\n\t0xbc1d: 0x6c0b2820, 0xbc1e: 0x6c1b6c20, 0xbc1f: 0x6c081620,\n\t0xbc21: 0x6c01ca20, 0xbc22: 0x6c1b6a20,\n\t0xbc24: 0x6c1b6620, 0xbc25: 0x6c1b6e20, 0xbc26: 0x6c1b6820, 0xbc27: 0x6c10fa20,\n\t0xbc28: 0x6c205420, 0xbc29: 0x6c0b2a20, 0xbc2b: 0x6c1b7020,\n\t0xbc2e: 0x6c164820,\n\t0xbc30: 0x6c1b7220, 0xbc33: 0x6c1b7620,\n\t0xbc35: 0x6c0eb020, 0xbc36: 0x6c1b7420,\n\t0xbc38: 0x6c0bc620, 0xbc3a: 0x6c08ca20,\n\t0xbc3e: 0x6c0d9820, 0xbc3f: 0x6c097e20,\n\t// Block 0x2f1, offset 0xbc40\n\t0xbc41: 0x6c130620, 0xbc42: 0x6c0c5820,\n\t0xbc44: 0x6c092a20, 0xbc45: 0x6c1b7820, 0xbc46: 0x6c0a6220, 0xbc47: 0x6c1b7a20,\n\t0xbc48: 0x6c1b7c20, 0xbc49: 0x6c006620, 0xbc4a: 0x6c0d6c20, 0xbc4b: 0x6c0b6820,\n\t0xbc4d: 0x6c1b7e20, 0xbc4e: 0x6c104e20, 0xbc4f: 0x6c0a6420,\n\t0xbc51: 0x6c0a6620, 0xbc53: 0x6c1b8020,\n\t0xbc56: 0x6c0c5a20,\n\t0xbc5a: 0x6c0a6820,\n\t0xbc60: 0x6c1b8220, 0xbc62: 0x6c1b8420,\n\t0xbc64: 0x6c151020,\n\t0xbc68: 0x6c1b8620,\n\t0xbc6d: 0x6c04b420,\n\t0xbc71: 0x6c099020,\n\t0xbc78: 0x6c1b8820, 0xbc79: 0x6c1b8a20, 0xbc7a: 0x6c094820, 0xbc7b: 0x6c0b1c20,\n\t0xbc7c: 0x6c10d020, 0xbc7d: 0x6c0b6c20, 0xbc7e: 0x6c125020, 0xbc7f: 0x6c10e820,\n\t// Block 0x2f2, offset 0xbc80\n\t0xbc80: 0x6c04ba20, 0xbc81: 0x6c1b8c20,\n\t0xbc85: 0x6c044a20, 0xbc86: 0x6c1b8e20,\n\t0xbc88: 0x6c052420, 0xbc8a: 0x6c108620, 0xbc8b: 0x6c019820,\n\t0xbc8d: 0x6c087a20, 0xbc8e: 0x6c1b9020, 0xbc8f: 0x6c1b9620,\n\t0xbc90: 0x6c1b9420, 0xbc91: 0x6c052220, 0xbc93: 0x6c1b9220,\n\t0xbc95: 0x6c0f9c20,\n\t0xbc9e: 0x6c0d5820,\n\t0xbca0: 0x6c0fc220, 0xbca1: 0x6c092020,\n\t0xbca4: 0x6c0cec20, 0xbca5: 0x6c160020,\n\t0xbcac: 0x6c1b9a20, 0xbcae: 0x6c1b9c20, 0xbcaf: 0x6c109420,\n\t0xbcb1: 0x6c083a20,\n\t0xbcb6: 0x6c1ba020,\n\t0xbcb9: 0x6c1ba220,\n\t// Block 0x2f3, offset 0xbcc0\n\t0xbccc: 0x6c1ba420,\n\t0xbcd0: 0x6c039820, 0xbcd1: 0x6c1ba620,\n\t0xbcd4: 0x6c1ba820,\n\t0xbce1: 0x6c019020,\n\t0xbce8: 0x6c0cb220, 0xbce9: 0x6c037820, 0xbceb: 0x6c1bac20,\n\t0xbcec: 0x6c14a020,\n\t0xbcf1: 0x6c0d9c20, 0xbcf3: 0x6c02a620,\n\t0xbcf6: 0x6c1bb020, 0xbcf7: 0x6c1bb420,\n\t0xbcf8: 0x6c036e20, 0xbcfb: 0x6c1bae20,\n\t0xbcfc: 0x6c1bb220, 0xbcfe: 0x6c1bb820,\n\t// Block 0x2f4, offset 0xbd00\n\t0xbd05: 0x6c1bb620, 0xbd07: 0x6c1bba20,\n\t0xbd19: 0x6c1bbc20,\n\t0xbd20: 0x6c106220, 0xbd21: 0x6c048420,\n\t0xbd28: 0x6c020220, 0xbd29: 0x6c1bbe20, 0xbd2a: 0x6c1bc820,\n\t0xbd2d: 0x6c1bc420, 0xbd2f: 0x6c13c620,\n\t0xbd30: 0x6c13c420,\n\t0xbd36: 0x6c0ffa20,\n\t0xbd3a: 0x6c1bc220, 0xbd3b: 0x6c09f420,\n\t0xbd3d: 0x6c1bc020,\n\t// Block 0x2f5, offset 0xbd40\n\t0xbd47: 0x6c0ba820,\n\t0xbd4b: 0x6c1bca20,\n\t0xbd4e: 0x6c07ec20,\n\t0xbd51: 0x6c1bd620,\n\t0xbd54: 0x6c1bd820, 0xbd55: 0x6c1bcc20, 0xbd56: 0x6c025a20, 0xbd57: 0x6c1bce20,\n\t0xbd58: 0x6c1be020, 0xbd59: 0x6c1bde20, 0xbd5a: 0x6c1bdc20, 0xbd5b: 0x6c1bd420,\n\t0xbd5f: 0x6c1bd220,\n\t0xbd62: 0x6c1bda20,\n\t0xbd69: 0x6c13c820,\n\t// Block 0x2f6, offset 0xbd80\n\t0xbd8b: 0x6c1be820,\n\t0xbd8c: 0x6c1be220, 0xbd8e: 0x6c1be620,\n\t0xbd90: 0x6c15f020, 0xbd92: 0x6c1be420,\n\t0xbd9c: 0x6c1bd020,\n\t0xbda9: 0x6c0baa20,\n\t0xbdac: 0x6c1bea20, 0xbdaf: 0x6c078620,\n\t0xbdb3: 0x6c1bec20,\n\t0xbdb6: 0x6c1bee20,\n\t// Block 0x2f7, offset 0xbdc0\n\t0xbdc2: 0x6c1bf420,\n\t0xbdc4: 0x6c1bf220, 0xbdc7: 0x6c1bf020,\n\t0xbdcb: 0x6c0ffc20,\n\t0xbdcc: 0x6c1bc620,\n\t0xbdd0: 0x6c1c0020,\n\t0xbddd: 0x6c1bf820,\n\t0xbde2: 0x6c1bf620,\n\t0xbdec: 0x6c1bfa20, 0xbdee: 0x6c1bfc20,\n\t0xbdf7: 0x6c1c0220,\n\t0xbdfa: 0x6c169420,\n\t0xbdfc: 0x6c1c0420, 0xbdfd: 0x6c1bfe20,\n\t// Block 0x2f8, offset 0xbe00\n\t0xbe09: 0x6c1c0620,\n\t0xbe0c: 0x6c037020, 0xbe0d: 0x6c1c0820,\n\t0xbe12: 0x6c1c0c20, 0xbe13: 0x6c1c0a20,\n\t0xbe16: 0x6c1c0e20,\n\t0xbe1b: 0x6c1c1020,\n\t0xbe1d: 0x6c0c5c20, 0xbe1e: 0x6c099220,\n\t0xbe21: 0x6c0a1420, 0xbe23: 0x6c0d0220,\n\t0xbe25: 0x6c06ae20, 0xbe26: 0x6c078820, 0xbe27: 0x6c06b020,\n\t0xbe28: 0x6c044c20, 0xbe2b: 0x6c1c1220,\n\t0xbe2e: 0x6c078a20,\n\t0xbe31: 0x6c063420, 0xbe32: 0x6c1c1420, 0xbe33: 0x6c149c20,\n\t0xbe34: 0x6c112a20, 0xbe35: 0x6c1c1620, 0xbe37: 0x6c06b220,\n\t0xbe3b: 0x6c030820,\n\t0xbe3d: 0x6c0e0220, 0xbe3e: 0x6c04cc20,\n\t// Block 0x2f9, offset 0xbe40\n\t0xbe42: 0x6c087c20, 0xbe43: 0x6c12d220,\n\t0xbe46: 0x6c11e220,\n\t0xbe4b: 0x6c1c1820,\n\t0xbe4c: 0x6c039a20,\n\t0xbe51: 0x6c1c1e20,\n\t0xbe56: 0x6c0eb220,\n\t0xbe59: 0x6c1c1c20, 0xbe5a: 0x6c1c1a20, 0xbe5b: 0x6c1c2020,\n\t0xbe5d: 0x6c0f4620,\n\t0xbe65: 0x6c0b8a20,\n\t0xbe6b: 0x6c087e20,\n\t0xbe6d: 0x6c0c1420, 0xbe6f: 0x6c0d9e20,\n\t0xbe70: 0x6c03b020, 0xbe73: 0x6c0eb420,\n\t0xbe76: 0x6c1c2220, 0xbe77: 0x6c1c2420,\n\t0xbe78: 0x6c0ae620,\n\t0xbe7d: 0x6c140620,\n\t// Block 0x2fa, offset 0xbe80\n\t0xbe80: 0x6c1c2a20, 0xbe83: 0x6c1c2820,\n\t0xbe84: 0x6c1c2620, 0xbe85: 0x6c131620, 0xbe87: 0x6c1c3820,\n\t0xbe8c: 0x6c144820, 0xbe8e: 0x6c1c2c20,\n\t0xbe94: 0x6c1c3020, 0xbe95: 0x6c146a20, 0xbe97: 0x6c1c2e20,\n\t0xbe9f: 0x6c1c3220,\n\t0xbea1: 0x6c11b020, 0xbea2: 0x6c1c3420, 0xbea3: 0x6c135420,\n\t0xbea4: 0x6c1c3620,\n\t0xbeb2: 0x6c031620, 0xbeb3: 0x6c135620,\n\t0xbeb4: 0x6c110220, 0xbeb5: 0x6c1c3a20, 0xbeb6: 0x6c1c3c20,\n\t0xbeb8: 0x6c06b420, 0xbeb9: 0x6c031820, 0xbeba: 0x6c1c3e20, 0xbebb: 0x6c061020,\n\t0xbebc: 0x6c159420, 0xbebd: 0x6c155e20, 0xbebe: 0x6c039c20, 0xbebf: 0x6c1c4220,\n\t// Block 0x2fb, offset 0xbec0\n\t0xbec1: 0x6c0eb620, 0xbec3: 0x6c06b620,\n\t0xbec4: 0x6c0a6a20, 0xbec7: 0x6c121e20,\n\t0xbeca: 0x6c0a6c20,\n\t0xbecf: 0x6c0a3c20,\n\t0xbed5: 0x6c0f4820, 0xbed6: 0x6c13ca20, 0xbed7: 0x6c0f9e20,\n\t0xbeda: 0x6c06b820,\n\t0xbedc: 0x6c12d420,\n\t0xbee0: 0x6c1c4420,\n\t0xbee6: 0x6c0fde20, 0xbee7: 0x6c079c20,\n\t0xbeeb: 0x6c063620,\n\t0xbeed: 0x6c0f4a20,\n\t0xbef5: 0x6c004620, 0xbef6: 0x6c0a2820, 0xbef7: 0x6c06ba20,\n\t0xbef8: 0x6c159a20,\n\t// Block 0x2fc, offset 0xbf00\n\t0xbf01: 0x6c1c4620, 0xbf02: 0x6c1c4820, 0xbf03: 0x6c114620,\n\t0xbf08: 0x6c1c4a20, 0xbf09: 0x6c16b620, 0xbf0a: 0x6c16de20,\n\t0xbf0f: 0x6c1c4e20,\n\t0xbf10: 0x6c1c4c20, 0xbf13: 0x6c028220,\n\t0xbf16: 0x6c1c5020,\n\t0xbf1a: 0x6c1c5620, 0xbf1b: 0x6c1c5820,\n\t0xbf1d: 0x6c1c5420, 0xbf1f: 0x6c129c20,\n\t0xbf20: 0x6c0a6e20, 0xbf21: 0x6c1c5c20, 0xbf22: 0x6c1c5a20, 0xbf23: 0x6c1c5220,\n\t0xbf28: 0x6c1c5e20, 0xbf29: 0x6c1c6020,\n\t0xbf2c: 0x6c1c6220,\n\t0xbf30: 0x6c1c6820, 0xbf31: 0x6c1c6420, 0xbf33: 0x6c1c6620,\n\t0xbf34: 0x6c1c6a20, 0xbf36: 0x6c014420, 0xbf37: 0x6c0f4c20,\n\t0xbf38: 0x6c1c6c20, 0xbf3a: 0x6c05d820, 0xbf3b: 0x6c022420,\n\t0xbf3c: 0x6c111020, 0xbf3e: 0x6c1c6e20, 0xbf3f: 0x6c10de20,\n\t// Block 0x2fd, offset 0xbf40\n\t0xbf41: 0x6c138e20, 0xbf43: 0x6c1c7020,\n\t0xbf44: 0x6c16e020,\n\t0xbf49: 0x6c1c7220, 0xbf4a: 0x6c135820, 0xbf4b: 0x6c1c7820,\n\t0xbf4c: 0x6c172c20, 0xbf4d: 0x6c174c20, 0xbf4f: 0x6c08f020,\n\t0xbf50: 0x6c10d220, 0xbf51: 0x6c1c7a20, 0xbf53: 0x6c042620,\n\t0xbf54: 0x6c0eb820, 0xbf55: 0x6c00b420, 0xbf56: 0x6c1c7c20, 0xbf57: 0x6c132420,\n\t0xbf58: 0x6c06bc20, 0xbf5b: 0x6c0e5420,\n\t0xbf5f: 0x6c0f4e20,\n\t0xbf65: 0x6c152e20, 0xbf66: 0x6c061220, 0xbf67: 0x6c063820,\n\t0xbf69: 0x6c1c7e20,\n\t0xbf6d: 0x6c1c8020, 0xbf6f: 0x6c1c8c20,\n\t0xbf71: 0x6c095a20,\n\t0xbf75: 0x6c0eba20, 0xbf77: 0x6c048620,\n\t0xbf78: 0x6c1c8220,\n\t0xbf7c: 0x6c127220, 0xbf7e: 0x6c0e4020,\n\t// Block 0x2fe, offset 0xbf80\n\t0xbf81: 0x6c1c8420,\n\t0xbf88: 0x6c1c8620, 0xbf8a: 0x6c048820,\n\t0xbf8c: 0x6c1c8820, 0xbf8e: 0x6c1c8a20,\n\t0xbf91: 0x6c1c8e20, 0xbf93: 0x6c101820,\n\t0xbf96: 0x6c1c9020, 0xbf97: 0x6c1c9220,\n\t0xbf99: 0x6c1c9420,\n\t0xbf9c: 0x6c1c7620, 0xbf9d: 0x6c1c7420,\n\t0xbfa1: 0x6c1c9620, 0xbfa2: 0x6c056620,\n\t0xbfa6: 0x6c126a20,\n\t0xbfa9: 0x6c07b020, 0xbfaa: 0x6c128a20, 0xbfab: 0x6c0ebc20,\n\t0xbfac: 0x6c12b220, 0xbfad: 0x6c1c9820,\n\t0xbfb0: 0x6c0a7020, 0xbfb1: 0x6c010820, 0xbfb3: 0x6c1c9a20,\n\t0xbfb7: 0x6c1c9c20,\n\t0xbfb9: 0x6c153420,\n\t0xbfbc: 0x6c122020, 0xbfbf: 0x6c1ca220,\n\t// Block 0x2ff, offset 0xbfc0\n\t0xbfc0: 0x6c017620, 0xbfc1: 0x6c0bd820, 0xbfc2: 0x6c1ca020, 0xbfc3: 0x6c1c9e20,\n\t0xbfc4: 0x6c056820, 0xbfc5: 0x6c0da020, 0xbfc7: 0x6c1caa20,\n\t0xbfc8: 0x6c1ca620, 0xbfca: 0x6c1ca420, 0xbfcb: 0x6c161620,\n\t0xbfcc: 0x6c066a20,\n\t0xbfd0: 0x6c0a3e20, 0xbfd1: 0x6c1ca820, 0xbfd2: 0x6c0fc420, 0xbfd3: 0x6c09c820,\n\t0xbfd7: 0x6c106820,\n\t0xbfd8: 0x6c1cb020, 0xbfd9: 0x6c1cae20,\n\t0xbfde: 0x6c1cac20,\n\t0xbfe0: 0x6c1cb220, 0xbfe1: 0x6c066c20,\n\t0xbfe8: 0x6c1cb420, 0xbfe9: 0x6c131420, 0xbfea: 0x6c0a0220,\n\t0xbfed: 0x6c1cb620, 0xbfee: 0x6c125220,\n\t0xbff3: 0x6c106a20,\n\t0xbff4: 0x6c0ebe20,\n\t0xbff9: 0x6c0f8c20,\n\t0xbffc: 0x6c1cb820, 0xbffd: 0x6c03c220,\n\t// Block 0x300, offset 0xc000\n\t0xc003: 0x6c0b2c20,\n\t0xc005: 0x6c127420,\n\t0xc00c: 0x6c039e20, 0xc00d: 0x6c10f020,\n\t0xc016: 0x6c1cba20, 0xc017: 0x6c088020,\n\t0xc018: 0x6c140820, 0xc019: 0x6c140a20,\n\t0xc01c: 0x6c017820, 0xc01d: 0x6c1cc420,\n\t0xc020: 0x6c0e8620,\n\t0xc024: 0x6c1cbe20,\n\t0xc02b: 0x6c022620,\n\t0xc030: 0x6c1d2420, 0xc031: 0x6c1cc220,\n\t0xc035: 0x6c110420,\n\t0xc038: 0x6c1cc020, 0xc03b: 0x6c1cbc20,\n\t0xc03d: 0x6c075020, 0xc03f: 0x6c1cc820,\n\t// Block 0x301, offset 0xc040\n\t0xc04e: 0x6c1cd420, 0xc04f: 0x6c1ce020,\n\t0xc050: 0x6c1cd020, 0xc052: 0x6c0fe420,\n\t0xc055: 0x6c1cda20, 0xc056: 0x6c12d620,\n\t0xc059: 0x6c1cce20, 0xc05b: 0x6c1cd820,\n\t0xc05c: 0x6c169620, 0xc05d: 0x6c088220,\n\t0xc060: 0x6c0da220, 0xc061: 0x6c1cca20,\n\t0xc065: 0x6c042820, 0xc066: 0x6c1cde20, 0xc067: 0x6c0bda20,\n\t0xc068: 0x6c014620, 0xc069: 0x6c1cd220, 0xc06a: 0x6c022820, 0xc06b: 0x6c1cdc20,\n\t0xc06f: 0x6c048a20,\n\t0xc071: 0x6c1cd620,\n\t0xc07a: 0x6c1ce220,\n\t// Block 0x302, offset 0xc080\n\t0xc081: 0x6c1ce620, 0xc082: 0x6c1cfa20, 0xc083: 0x6c1cf620,\n\t0xc086: 0x6c1cf020,\n\t0xc08a: 0x6c1cee20, 0xc08b: 0x6c16b820,\n\t0xc08d: 0x6c1cf220,\n\t0xc090: 0x6c048c20, 0xc092: 0x6c06be20,\n\t0xc095: 0x6c0a4020,\n\t0xc099: 0x6c1d0020, 0xc09a: 0x6c1ce420,\n\t0xc09f: 0x6c1cec20,\n\t0xc0a0: 0x6c1ccc20, 0xc0a2: 0x6c022c20, 0xc0a3: 0x6c1cf420,\n\t0xc0a4: 0x6c1cf820, 0xc0a5: 0x6c0e5620,\n\t0xc0a8: 0x6c076820, 0xc0a9: 0x6c01a820, 0xc0aa: 0x6c1ce820, 0xc0ab: 0x6c1cfe20,\n\t0xc0ac: 0x6c1cfc20, 0xc0ad: 0x6c048e20, 0xc0af: 0x6c0d4a20,\n\t0xc0b0: 0x6c02c020,\n\t0xc0b5: 0x6c056a20, 0xc0b7: 0x6c1cea20,\n\t// Block 0x303, offset 0xc0c0\n\t0xc0c1: 0x6c1d0220, 0xc0c3: 0x6c1d0820,\n\t0xc0c4: 0x6c1d0c20,\n\t0xc0c9: 0x6c090a20, 0xc0cb: 0x6c1d1820,\n\t0xc0cc: 0x6c0f5020, 0xc0cd: 0x6c1d0420,\n\t0xc0d2: 0x6c1d1420,\n\t0xc0d4: 0x6c022a20, 0xc0d6: 0x6c1d1020, 0xc0d7: 0x6c1d1220,\n\t0xc0da: 0x6c1d0a20, 0xc0db: 0x6c1d0e20,\n\t0xc0df: 0x6c066e20,\n\t0xc0e0: 0x6c156020, 0xc0e3: 0x6c031a20,\n\t0xc0e6: 0x6c012e20, 0xc0e7: 0x6c1d1620,\n\t0xc0e9: 0x6c111820, 0xc0ea: 0x6c001a20,\n\t0xc0f2: 0x6c122220, 0xc0f3: 0x6c1cc620,\n\t0xc0f4: 0x6c1d2220, 0xc0f5: 0x6c1d2a20, 0xc0f6: 0x6c151a20,\n\t0xc0f8: 0x6c1d1c20,\n\t0xc0fc: 0x6c0ffe20, 0xc0fd: 0x6c1d2620,\n\t// Block 0x304, offset 0xc100\n\t0xc105: 0x6c0ae820, 0xc106: 0x6c1d2820, 0xc107: 0x6c109620,\n\t0xc111: 0x6c171220, 0xc113: 0x6c1d2020,\n\t0xc118: 0x6c1d2c20, 0xc11a: 0x6c075220,\n\t0xc11c: 0x6c0c1620, 0xc11f: 0x6c006820,\n\t0xc120: 0x6c1d1e20, 0xc121: 0x6c1d1a20, 0xc123: 0x6c0cf020,\n\t0xc127: 0x6c1d0620,\n\t0xc128: 0x6c083c20,\n\t0xc130: 0x6c0d8420, 0xc131: 0x6c1d4420, 0xc133: 0x6c0cf220,\n\t0xc134: 0x6c1d3a20, 0xc136: 0x6c1d3420, 0xc137: 0x6c1d3620,\n\t0xc139: 0x6c095c20, 0xc13a: 0x6c1d3c20, 0xc13b: 0x6c1d4220,\n\t// Block 0x305, offset 0xc140\n\t0xc140: 0x6c1d3820, 0xc141: 0x6c099620, 0xc143: 0x6c1d3e20,\n\t0xc146: 0x6c1d3220,\n\t0xc148: 0x6c154820, 0xc149: 0x6c154620,\n\t0xc14d: 0x6c1d4620, 0xc14e: 0x6c1d4820, 0xc14f: 0x6c006a20,\n\t0xc155: 0x6c1d3020,\n\t0xc15a: 0x6c050c20, 0xc15b: 0x6c000c20,\n\t0xc15f: 0x6c031c20,\n\t0xc161: 0x6c1d4020,\n\t0xc167: 0x6c1d5020,\n\t0xc168: 0x6c1d4e20,\n\t0xc16c: 0x6c1d5820,\n\t0xc174: 0x6c1d5a20,\n\t0xc17c: 0x6c1d5620, 0xc17d: 0x6c1d5c20, 0xc17e: 0x6c1d4c20, 0xc17f: 0x6c1d5420,\n\t// Block 0x306, offset 0xc180\n\t0xc182: 0x6c1d5e20,\n\t0xc184: 0x6c1d6020, 0xc187: 0x6c1d4a20,\n\t0xc188: 0x6c08cc20, 0xc18a: 0x6c1d5220, 0xc18b: 0x6c0da420,\n\t0xc18c: 0x6c06c020, 0xc18d: 0x6c1d2e20, 0xc18e: 0x6c0b2e20,\n\t0xc193: 0x6c1d7a20,\n\t0xc195: 0x6c13aa20,\n\t0xc198: 0x6c1d6620, 0xc199: 0x6c1d6820, 0xc19a: 0x6c1d6a20,\n\t0xc19d: 0x6c1d7820, 0xc19f: 0x6c1d7620,\n\t0xc1a2: 0x6c148e20, 0xc1a3: 0x6c031e20,\n\t0xc1a5: 0x6c1d7220, 0xc1a7: 0x6c056e20,\n\t0xc1a8: 0x6c025c20, 0xc1ab: 0x6c1d6c20,\n\t0xc1ae: 0x6c163820, 0xc1af: 0x6c1d7020,\n\t0xc1b0: 0x6c006c20, 0xc1b1: 0x6c1d7420, 0xc1b3: 0x6c1d6220,\n\t0xc1b4: 0x6c1d6e20, 0xc1b5: 0x6c1d7c20, 0xc1b6: 0x6c056c20, 0xc1b7: 0x6c1d6420,\n\t0xc1be: 0x6c15c620,\n\t// Block 0x307, offset 0xc1c0\n\t0xc1c2: 0x6c156220,\n\t0xc1c7: 0x6c1d8220,\n\t0xc1ca: 0x6c1d8a20,\n\t0xc1ce: 0x6c0d3820,\n\t0xc1d0: 0x6c16ba20, 0xc1d1: 0x6c1d8c20,\n\t0xc1d4: 0x6c1d8620, 0xc1d6: 0x6c1d8020,\n\t0xc1d9: 0x6c1d7e20, 0xc1da: 0x6c1d8820,\n\t0xc1e4: 0x6c133820, 0xc1e7: 0x6c105020,\n\t0xc1e9: 0x6c057020, 0xc1eb: 0x6c1d8e20,\n\t0xc1ec: 0x6c1d8420, 0xc1ee: 0x6c1d9020,\n\t0xc1f2: 0x6c05da20,\n\t0xc1f6: 0x6c019a20,\n\t0xc1fa: 0x6c1da020,\n\t0xc1fe: 0x6c032020,\n\t// Block 0x308, offset 0xc200\n\t0xc203: 0x6c1d9c20,\n\t0xc206: 0x6c1d9e20, 0xc207: 0x6c076a20,\n\t0xc208: 0x6c1d9a20, 0xc209: 0x6c1d9620, 0xc20a: 0x6c1d9420, 0xc20b: 0x6c1da220,\n\t0xc20c: 0x6c1d9220, 0xc20d: 0x6c1da620,\n\t0xc210: 0x6c022e20,\n\t0xc223: 0x6c1daa20,\n\t0xc226: 0x6c1da820,\n\t0xc232: 0x6c0ec020,\n\t0xc234: 0x6c1db020, 0xc236: 0x6c1dac20, 0xc237: 0x6c1d9820,\n\t0xc238: 0x6c05dc20, 0xc23a: 0x6c1dae20,\n\t0xc23c: 0x6c1db620, 0xc23d: 0x6c1db420, 0xc23e: 0x6c1db820, 0xc23f: 0x6c1db220,\n\t// Block 0x309, offset 0xc240\n\t0xc240: 0x6c1dba20,\n\t0xc248: 0x6c1dbc20, 0xc249: 0x6c1dbe20, 0xc24a: 0x6c13ac20,\n\t0xc24c: 0x6c1dc220, 0xc24d: 0x6c1dc020, 0xc24e: 0x6c09ca20,\n\t0xc250: 0x6c0bdc20, 0xc251: 0x6c020420, 0xc252: 0x6c023020,\n\t0xc254: 0x6c1dc420, 0xc256: 0x6c003e20,\n\t0xc25a: 0x6c0c1820, 0xc25b: 0x6c1dc620,\n\t0xc25d: 0x6c2c0020, 0xc25e: 0x6c1dc820, 0xc25f: 0x6c05a620,\n\t0xc261: 0x6c1dca20,\n\t0xc266: 0x6c0c5e20,\n\t0xc26a: 0x6c1dcc20,\n\t0xc26e: 0x6c1dce20, 0xc26f: 0x6c03e020,\n\t0xc270: 0x6c1dd020, 0xc272: 0x6c1dd220, 0xc273: 0x6c1dd420,\n\t0xc274: 0x6c0da620,\n\t0xc278: 0x6c063a20, 0xc27b: 0x6c151220,\n\t0xc27f: 0x6c140c20,\n\t// Block 0x30a, offset 0xc280\n\t0xc280: 0x6c0a2020, 0xc281: 0x6c1dd620,\n\t0xc287: 0x6c0c6020,\n\t0xc288: 0x6c2d6c20, 0xc289: 0x6c122420, 0xc28b: 0x6c096420,\n\t0xc28d: 0x6c07b220, 0xc28e: 0x6c1dd820,\n\t0xc293: 0x6c0d8620,\n\t0xc295: 0x6c132620,\n\t0xc298: 0x6c0dda20, 0xc29b: 0x6c1dde20,\n\t0xc29e: 0x6c1dda20,\n\t0xc2a0: 0x6c1de020, 0xc2a3: 0x6c1ddc20,\n\t0xc2a8: 0x6c1de220,\n\t0xc2ae: 0x6c133a20,\n\t0xc2b1: 0x6c002e20,\n\t0xc2b6: 0x6c12d820,\n\t0xc2b9: 0x6c122620,\n\t0xc2bc: 0x6c1de420, 0xc2be: 0x6c1dea20, 0xc2bf: 0x6c0a7220,\n\t// Block 0x30b, offset 0xc2c0\n\t0xc2c0: 0x6c03e220, 0xc2c2: 0x6c1de620, 0xc2c3: 0x6c1df420,\n\t0xc2c4: 0x6c0a7420,\n\t0xc2c9: 0x6c1de820, 0xc2ca: 0x6c112c20,\n\t0xc2d1: 0x6c15c820, 0xc2d2: 0x6c1dec20, 0xc2d3: 0x6c1dee20,\n\t0xc2d4: 0x6c1df620, 0xc2d5: 0x6c100020, 0xc2d6: 0x6c1df020, 0xc2d7: 0x6c06c220,\n\t0xc2d8: 0x6c0c3c20, 0xc2db: 0x6c1e1220,\n\t0xc2dc: 0x6c11c820, 0xc2de: 0x6c0ddc20,\n\t0xc2eb: 0x6c122820,\n\t0xc2ec: 0x6c1e9c20,\n\t0xc2f1: 0x6c13cc20,\n\t0xc2f5: 0x6c0f5220,\n\t0xc2f9: 0x6c147e20, 0xc2fb: 0x6c1dfc20,\n\t0xc2fc: 0x6c017a20, 0xc2fd: 0x6c0e8820,\n\t// Block 0x30c, offset 0xc300\n\t0xc302: 0x6c1e0e20,\n\t0xc305: 0x6c0e1c20, 0xc306: 0x6c1e0220, 0xc307: 0x6c1e1020,\n\t0xc308: 0x6c1e0620, 0xc309: 0x6c1e1420, 0xc30a: 0x6c1e0c20,\n\t0xc30c: 0x6c1e0a20, 0xc30d: 0x6c118220, 0xc30f: 0x6c1dfe20,\n\t0xc310: 0x6c023220, 0xc311: 0x6c1dfa20, 0xc312: 0x6c044e20, 0xc313: 0x6c0dde20,\n\t0xc314: 0x6c1df220, 0xc317: 0x6c1df820,\n\t0xc318: 0x6c06c420, 0xc319: 0x6c0c3620, 0xc31b: 0x6c0a7620,\n\t0xc31c: 0x6c1e0820, 0xc31d: 0x6c114820,\n\t0xc320: 0x6c045020, 0xc321: 0x6c028420,\n\t0xc32c: 0x6c02c220, 0xc32d: 0x6c0b0620, 0xc32e: 0x6c1e1820, 0xc32f: 0x6c1e2220,\n\t0xc331: 0x6c1e1a20, 0xc333: 0x6c05de20,\n\t0xc335: 0x6c1e2420, 0xc336: 0x6c081820, 0xc337: 0x6c072e20,\n\t0xc33e: 0x6c099820, 0xc33f: 0x6c1e0020,\n\t// Block 0x30d, offset 0xc340\n\t0xc341: 0x6c08ce20, 0xc342: 0x6c1e1e20,\n\t0xc347: 0x6c088420,\n\t0xc348: 0x6c1e2020, 0xc349: 0x6c004820,\n\t0xc34c: 0x6c1e1620,\n\t0xc351: 0x6c0ec220,\n\t0xc359: 0x6c045220,\n\t0xc35f: 0x6c049020,\n\t0xc367: 0x6c1e1c20,\n\t0xc368: 0x6c000e20, 0xc36b: 0x6c079e20,\n\t0xc36f: 0x6c0b3020,\n\t0xc37a: 0x6c0f5420,\n\t0xc37d: 0x6c120820, 0xc37e: 0x6c1e2820, 0xc37f: 0x6c0cf820,\n\t// Block 0x30e, offset 0xc380\n\t0xc389: 0x6c0d4c20,\n\t0xc38c: 0x6c082a20, 0xc38d: 0x6c1e2a20, 0xc38f: 0x6c1e2e20,\n\t0xc390: 0x6c1e2620,\n\t0xc395: 0x6c139a20, 0xc397: 0x6c0eea20,\n\t0xc39c: 0x6c0cf420,\n\t0xc3a7: 0x6c13ce20,\n\t0xc3a8: 0x6c092c20, 0xc3a9: 0x6c1e4620, 0xc3ab: 0x6c1e4420,\n\t0xc3ae: 0x6c0bb420,\n\t0xc3b2: 0x6c05e020,\n\t0xc3b6: 0x6c1e3820, 0xc3b7: 0x6c0a7a20,\n\t0xc3ba: 0x6c10b820, 0xc3bb: 0x6c110620,\n\t// Block 0x30f, offset 0xc3c0\n\t0xc3c0: 0x6c1e3420, 0xc3c3: 0x6c0cf620,\n\t0xc3c8: 0x6c098020, 0xc3c9: 0x6c1e3e20,\n\t0xc3cc: 0x6c0a7820, 0xc3ce: 0x6c1e3220, 0xc3cf: 0x6c1e3c20,\n\t0xc3d2: 0x6c114a20,\n\t0xc3d6: 0x6c1e3020,\n\t0xc3d8: 0x6c052620, 0xc3db: 0x6c02ae20,\n\t0xc3df: 0x6c1e4020,\n\t0xc3e0: 0x6c161e20, 0xc3e1: 0x6c07b420, 0xc3e2: 0x6c0e1e20, 0xc3e3: 0x6c1e3a20,\n\t0xc3e5: 0x6c0c3820, 0xc3e7: 0x6c06c620,\n\t0xc3e8: 0x6c0b8c20, 0xc3e9: 0x6c014820, 0xc3ea: 0x6c0cb420, 0xc3eb: 0x6c1e3620,\n\t0xc3ec: 0x6c03f620,\n\t0xc3f2: 0x6c057220,\n\t0xc3f4: 0x6c0f0e20, 0xc3f5: 0x6c1e4220,\n\t0xc3fb: 0x6c0cfa20,\n\t0xc3fe: 0x6c1e4820,\n\t// Block 0x310, offset 0xc400\n\t0xc400: 0x6c1e4c20, 0xc403: 0x6c0d6620,\n\t0xc404: 0x6c1e5820, 0xc406: 0x6c1e4e20,\n\t0xc409: 0x6c1e5220,\n\t0xc40f: 0x6c129e20,\n\t0xc410: 0x6c0f5620, 0xc412: 0x6c1e5420,\n\t0xc416: 0x6c156420,\n\t0xc41a: 0x6c159c20, 0xc41b: 0x6c032220,\n\t0xc421: 0x6c001c20, 0xc423: 0x6c1e5020,\n\t0xc429: 0x6c1e4a20,\n\t0xc42e: 0x6c03a020,\n\t0xc434: 0x6c014a20, 0xc436: 0x6c1e5620,\n\t0xc43a: 0x6c159e20,\n\t// Block 0x311, offset 0xc440\n\t0xc446: 0x6c1e5e20,\n\t0xc44d: 0x6c0d6e20, 0xc44f: 0x6c1e6c20,\n\t0xc453: 0x6c1e6020,\n\t0xc456: 0x6c1e5a20, 0xc457: 0x6c1e6820,\n\t0xc45c: 0x6c1e2c20,\n\t0xc466: 0x6c1e6220,\n\t0xc468: 0x6c1e6a20,\n\t0xc46c: 0x6c11e420, 0xc46d: 0x6c100220,\n\t0xc474: 0x6c1e5c20, 0xc476: 0x6c1e6420,\n\t0xc47a: 0x6c057420,\n\t0xc47e: 0x6c07fa20,\n\t// Block 0x312, offset 0xc480\n\t0xc482: 0x6c0c3a20,\n\t0xc48e: 0x6c1e7420,\n\t0xc498: 0x6c0f7820,\n\t0xc4a7: 0x6c1e6e20,\n\t0xc4a9: 0x6c145420,\n\t0xc4af: 0x6c1e7020,\n\t0xc4b6: 0x6c1e7220,\n\t0xc4b8: 0x6c14ec20, 0xc4ba: 0x6c0bc420,\n\t// Block 0x313, offset 0xc4c0\n\t0xc4c3: 0x6c05a820,\n\t0xc4c8: 0x6c1e8020,\n\t0xc4d2: 0x6c083e20, 0xc4d3: 0x6c1e7a20,\n\t0xc4d5: 0x6c1e7820,\n\t0xc4da: 0x6c110820,\n\t0xc4de: 0x6c105220,\n\t0xc4e4: 0x6c0f8e20, 0xc4e5: 0x6c1e7c20,\n\t0xc4e9: 0x6c1e7e20, 0xc4eb: 0x6c12fa20,\n\t0xc4ed: 0x6c112e20, 0xc4ee: 0x6c081a20,\n\t0xc4f0: 0x6c0c6220, 0xc4f2: 0x6c143420,\n\t0xc4f9: 0x6c028620, 0xc4fb: 0x6c1e8c20,\n\t0xc4fc: 0x6c1e8220,\n\t// Block 0x314, offset 0xc500\n\t0xc501: 0x6c15a020, 0xc502: 0x6c1e9020,\n\t0xc505: 0x6c1e8820, 0xc507: 0x6c1e8a20,\n\t0xc50d: 0x6c0cfc20,\n\t0xc512: 0x6c1e8620,\n\t0xc514: 0x6c1e0420,\n\t0xc518: 0x6c1e8e20, 0xc51a: 0x6c1e8420,\n\t0xc520: 0x6c1e9820, 0xc521: 0x6c1e9a20, 0xc522: 0x6c0f7a20, 0xc523: 0x6c1e9e20,\n\t0xc526: 0x6c081c20, 0xc527: 0x6c1e9420,\n\t0xc52c: 0x6c03e420, 0xc52f: 0x6c1ea020,\n\t0xc531: 0x6c1e9220, 0xc532: 0x6c1ea820,\n\t0xc534: 0x6c1ea620, 0xc536: 0x6c1ea420,\n\t0xc53a: 0x6c1eaa20,\n\t0xc53d: 0x6c1eae20, 0xc53e: 0x6c0aea20,\n\t// Block 0x315, offset 0xc540\n\t0xc540: 0x6c1eac20,\n\t0xc545: 0x6c1eb420,\n\t0xc558: 0x6c1eb020,\n\t0xc55c: 0x6c1eb220, 0xc55d: 0x6c1e6620,\n\t0xc563: 0x6c1eb820,\n\t0xc564: 0x6c1eb620,\n\t0xc56a: 0x6c1e7620, 0xc56b: 0x6c1eba20,\n\t0xc56c: 0x6c1ea220, 0xc56f: 0x6c088620,\n\t0xc574: 0x6c1ebc20, 0xc575: 0x6c1ebe20, 0xc576: 0x6c1ec220, 0xc577: 0x6c1ec020,\n\t0xc578: 0x6c1ec420, 0xc579: 0x6c023420, 0xc57b: 0x6c06c820,\n\t0xc57e: 0x6c13d020, 0xc57f: 0x6c0bde20,\n\t// Block 0x316, offset 0xc580\n\t0xc585: 0x6c063c20,\n\t0xc588: 0x6c1ec820,\n\t0xc58d: 0x6c1ece20, 0xc58f: 0x6c12c020,\n\t0xc591: 0x6c042a20,\n\t0xc595: 0x6c1ecc20, 0xc596: 0x6c1eca20, 0xc597: 0x6c114c20,\n\t0xc598: 0x6c1ed020, 0xc599: 0x6c049220,\n\t0xc59d: 0x6c1ed420, 0xc59e: 0x6c1ed220,\n\t0xc5a2: 0x6c032420, 0xc5a3: 0x6c084020,\n\t0xc5a6: 0x6c109820,\n\t0xc5ac: 0x6c057620,\n\t0xc5b0: 0x6c0bac20, 0xc5b2: 0x6c1ed620,\n\t0xc5b4: 0x6c0be020, 0xc5b5: 0x6c0f7c20, 0xc5b7: 0x6c12da20,\n\t0xc5b8: 0x6c1ed820,\n\t// Block 0x317, offset 0xc5c0\n\t0xc5c2: 0x6c1eda20, 0xc5c3: 0x6c1edc20,\n\t0xc5c7: 0x6c134820,\n\t0xc5c8: 0x6c1b5020, 0xc5c9: 0x6c0c0c20,\n\t0xc5cc: 0x6c12b420, 0xc5ce: 0x6c07c820,\n\t0xc5d0: 0x6c122a20, 0xc5d1: 0x6c11e620,\n\t0xc5d7: 0x6c0fc620,\n\t0xc5d9: 0x6c164a20, 0xc5db: 0x6c1ee020,\n\t0xc5dc: 0x6c093020, 0xc5df: 0x6c1ee220,\n\t0xc5e1: 0x6c002c20,\n\t0xc5e4: 0x6c04d020, 0xc5e5: 0x6c0c1a20, 0xc5e7: 0x6c12dc20,\n\t0xc5eb: 0x6c1ee420,\n\t0xc5ec: 0x6c085820, 0xc5ed: 0x6c0e4220, 0xc5ef: 0x6c088a20,\n\t0xc5f0: 0x6c0b3220,\n\t0xc5f7: 0x6c1ee620,\n\t0xc5f9: 0x6c13d220,\n\t0xc5fc: 0x6c016a20, 0xc5fd: 0x6c088c20,\n\t// Block 0x318, offset 0xc600\n\t0xc601: 0x6c1eec20, 0xc603: 0x6c1ee820,\n\t0xc604: 0x6c1eee20, 0xc605: 0x6c163a20, 0xc606: 0x6c1eea20,\n\t0xc60b: 0x6c0c7620,\n\t0xc60c: 0x6c1ef020, 0xc60f: 0x6c0d5c20,\n\t0xc612: 0x6c1ef220,\n\t0xc617: 0x6c03a420,\n\t0xc619: 0x6c1ef620, 0xc61b: 0x6c1ef420,\n\t0xc620: 0x6c1ef820, 0xc621: 0x6c1efa20, 0xc622: 0x6c03a620,\n\t0xc625: 0x6c10e020, 0xc626: 0x6c0e2020, 0xc627: 0x6c044420,\n\t0xc628: 0x6c088e20, 0xc629: 0x6c0cfe20,\n\t0xc62c: 0x6c0a0420, 0xc62d: 0x6c002020,\n\t0xc631: 0x6c1efc20,\n\t0xc63a: 0x6c017c20, 0xc63b: 0x6c1f0420,\n\t// Block 0x319, offset 0xc640\n\t0xc642: 0x6c06ca20, 0xc643: 0x6c1f0220,\n\t0xc646: 0x6c076e20, 0xc647: 0x6c0a7c20,\n\t0xc64a: 0x6c1f0020,\n\t0xc64c: 0x6c0a7e20, 0xc64e: 0x6c14d020, 0xc64f: 0x6c076c20,\n\t0xc653: 0x6c006e20,\n\t0xc654: 0x6c0c1c20,\n\t0xc65c: 0x6c1f0e20, 0xc65f: 0x6c0be220,\n\t0xc660: 0x6c010a20,\n\t0xc665: 0x6c09f620, 0xc667: 0x6c146020,\n\t0xc668: 0x6c07fc20,\n\t0xc66d: 0x6c0a8020, 0xc66f: 0x6c0bce20,\n\t0xc674: 0x6c1f0c20, 0xc675: 0x6c1f0820, 0xc676: 0x6c1f0a20,\n\t0xc67c: 0x6c0e8a20, 0xc67f: 0x6c1f4a20,\n\t// Block 0x31a, offset 0xc680\n\t0xc681: 0x6c1f1620, 0xc682: 0x6c08d020, 0xc683: 0x6c06cc20,\n\t0xc684: 0x6c1f1220,\n\t0xc689: 0x6c1f1420, 0xc68b: 0x6c0b3420,\n\t0xc68f: 0x6c1f1020,\n\t0xc692: 0x6c083220,\n\t0xc69d: 0x6c1f1a20, 0xc69e: 0x6c1f1820, 0xc69f: 0x6c1f2220,\n\t0xc6a2: 0x6c1f2420,\n\t0xc6a4: 0x6c1f1c20, 0xc6a6: 0x6c023820, 0xc6a7: 0x6c1f1e20,\n\t0xc6a8: 0x6c1f2020, 0xc6a9: 0x6c120a20,\n\t0xc6ae: 0x6c12de20, 0xc6af: 0x6c057820,\n\t0xc6b0: 0x6c1f2620,\n\t0xc6b4: 0x6c0be420, 0xc6b6: 0x6c0a8220,\n\t0xc6ba: 0x6c0e5820,\n\t// Block 0x31b, offset 0xc6c0\n\t0xc6c1: 0x6c04b620, 0xc6c3: 0x6c1f2820,\n\t0xc6c4: 0x6c1f3020, 0xc6c7: 0x6c01ce20,\n\t0xc6c8: 0x6c1f2a20, 0xc6c9: 0x6c1f2e20,\n\t0xc6ce: 0x6c1f2c20,\n\t0xc6d1: 0x6c0a2220,\n\t0xc6d6: 0x6c0e4420, 0xc6d7: 0x6c004a20,\n\t0xc6d8: 0x6c1f3220,\n\t0xc6dd: 0x6c1f3420,\n\t0xc6e2: 0x6c0ec420,\n\t0xc6e6: 0x6c16aa20,\n\t0xc6eb: 0x6c085a20,\n\t0xc6ee: 0x6c13ae20,\n\t0xc6f4: 0x6c140e20,\n\t0xc6f8: 0x6c1f4220, 0xc6f9: 0x6c1f3820,\n\t0xc6fc: 0x6c1f3e20, 0xc6fe: 0x6c1f3c20,\n\t// Block 0x31c, offset 0xc700\n\t0xc701: 0x6c1f3620,\n\t0xc704: 0x6c1f4020, 0xc707: 0x6c10a420,\n\t0xc709: 0x6c1f3a20,\n\t0xc716: 0x6c1f4420,\n\t0xc719: 0x6c0a2420, 0xc71a: 0x6c1f4620,\n\t0xc71c: 0x6c15a220, 0xc71d: 0x6c119420,\n\t0xc720: 0x6c1f4820,\n\t0xc726: 0x6c1f4c20,\n\t0xc729: 0x6c1f4e20,\n\t0xc730: 0x6c1f5020, 0xc732: 0x6c04bc20, 0xc733: 0x6c010c20,\n\t0xc734: 0x6c06ce20, 0xc735: 0x6c1f5220, 0xc737: 0x6c1f5420,\n\t0xc738: 0x6c0a2e20, 0xc739: 0x6c0d0020,\n\t0xc73c: 0x6c191220, 0xc73d: 0x6c0cb820, 0xc73e: 0x6c0cb620, 0xc73f: 0x6c0da820,\n\t// Block 0x31d, offset 0xc740\n\t0xc740: 0x6c07a620, 0xc743: 0x6c17ce20,\n\t0xc748: 0x6c05c020, 0xc749: 0x6c156620, 0xc74b: 0x6c13d420,\n\t0xc74d: 0x6c131820, 0xc74f: 0x6c1f5620,\n\t0xc754: 0x6c07fe20, 0xc755: 0x6c0eee20, 0xc756: 0x6c1f5820, 0xc757: 0x6c16e220,\n\t0xc75b: 0x6c141020,\n\t0xc75d: 0x6c0ec620, 0xc75e: 0x6c1f5a20, 0xc75f: 0x6c03a820,\n\t0xc766: 0x6c1f5c20, 0xc767: 0x6c1f5e20,\n\t0xc768: 0x6c150420, 0xc76a: 0x6c149820, 0xc76b: 0x6c148020,\n\t0xc76c: 0x6c144c20, 0xc76d: 0x6c081e20, 0xc76e: 0x6c1f6220,\n\t0xc771: 0x6c096620,\n\t0xc774: 0x6c143620, 0xc776: 0x6c1f6620, 0xc777: 0x6c1f6c20,\n\t0xc778: 0x6c1f6a20, 0xc77a: 0x6c03a220,\n\t0xc77d: 0x6c042c20, 0xc77f: 0x6c1f6420,\n\t// Block 0x31e, offset 0xc780\n\t0xc781: 0x6c1f6820,\n\t0xc786: 0x6c1f6e20,\n\t0xc789: 0x6c0bb620,\n\t0xc78e: 0x6c160220, 0xc78f: 0x6c005220,\n\t0xc790: 0x6c07d820, 0xc791: 0x6c0d7020, 0xc793: 0x6c094a20,\n\t0xc796: 0x6c0aee20,\n\t0xc799: 0x6c1f7420,\n\t0xc79c: 0x6c0fc820, 0xc79e: 0x6c1f7020, 0xc79f: 0x6c0d4e20,\n\t0xc7a0: 0x6c1f7220, 0xc7a1: 0x6c0aec20, 0xc7a2: 0x6c150a20, 0xc7a3: 0x6c1f7620,\n\t0xc7a4: 0x6c1f7820, 0xc7a5: 0x6c15dc20,\n\t0xc7aa: 0x6c1f8220,\n\t0xc7ad: 0x6c06d020, 0xc7af: 0x6c114e20,\n\t0xc7b0: 0x6c1f7c20, 0xc7b1: 0x6c100420, 0xc7b2: 0x6c1efe20, 0xc7b3: 0x6c1f0620,\n\t0xc7b5: 0x6c040a20, 0xc7b7: 0x6c113220,\n\t0xc7bc: 0x6c1f8020, 0xc7be: 0x6c0a8420, 0xc7bf: 0x6c11e820,\n\t// Block 0x31f, offset 0xc7c0\n\t0xc7c5: 0x6c1f8c20, 0xc7c7: 0x6c125420,\n\t0xc7c9: 0x6c1f7a20, 0xc7cb: 0x6c1f8620,\n\t0xc7cc: 0x6c1f8420,\n\t0xc7d0: 0x6c0c1e20,\n\t0xc7d5: 0x6c146e20, 0xc7d7: 0x6c166e20,\n\t0xc7da: 0x6c146220,\n\t0xc7dc: 0x6c01d020, 0xc7dd: 0x6c089020,\n\t0xc7e0: 0x6c171420, 0xc7e1: 0x6c1f8a20, 0xc7e2: 0x6c0bae20,\n\t0xc7e6: 0x6c1f8820,\n\t0xc7e9: 0x6c1f7e20,\n\t0xc7ef: 0x6c063e20,\n\t0xc7f3: 0x6c1f9620,\n\t0xc7f4: 0x6c1f9220, 0xc7f6: 0x6c01d220, 0xc7f7: 0x6c1f8e20,\n\t0xc7f8: 0x6c1f9a20, 0xc7f9: 0x6c1fa620,\n\t// Block 0x320, offset 0xc800\n\t0xc801: 0x6c0d8820,\n\t0xc804: 0x6c135a20, 0xc806: 0x6c1faa20,\n\t0xc80a: 0x6c126020,\n\t0xc80e: 0x6c1fa820, 0xc80f: 0x6c118420,\n\t0xc810: 0x6c141220, 0xc811: 0x6c032620, 0xc813: 0x6c0c6e20,\n\t0xc814: 0x6c09cc20,\n\t0xc818: 0x6c0f1620, 0xc81a: 0x6c156820,\n\t0xc81d: 0x6c1fa020, 0xc81e: 0x6c1f9e20,\n\t0xc822: 0x6c1fa220,\n\t0xc824: 0x6c1f9c20, 0xc827: 0x6c1fac20,\n\t0xc829: 0x6c1f9820,\n\t0xc82c: 0x6c1f9420, 0xc82e: 0x6c1fa420, 0xc82f: 0x6c1f9020,\n\t0xc831: 0x6c0e8c20, 0xc833: 0x6c154020,\n\t0xc834: 0x6c091c20, 0xc835: 0x6c080020,\n\t0xc83b: 0x6c078c20,\n\t0xc83e: 0x6c147220, 0xc83f: 0x6c027620,\n\t// Block 0x321, offset 0xc840\n\t0xc842: 0x6c0f0c20, 0xc843: 0x6c107c20,\n\t0xc844: 0x6c010e20,\n\t0xc853: 0x6c0c6420,\n\t0xc856: 0x6c0be820, 0xc857: 0x6c053820,\n\t0xc85e: 0x6c1fb020,\n\t0xc861: 0x6c06d220, 0xc862: 0x6c02ec20,\n\t0xc869: 0x6c1fb420, 0xc86a: 0x6c02dc20, 0xc86b: 0x6c1fc020,\n\t0xc872: 0x6c1fba20,\n\t0xc874: 0x6c0c6620,\n\t0xc878: 0x6c028a20, 0xc879: 0x6c077020,\n\t0xc87c: 0x6c028820, 0xc87d: 0x6c07b620,\n\t// Block 0x322, offset 0xc880\n\t0xc880: 0x6c1fb620, 0xc881: 0x6c05ae20, 0xc882: 0x6c057a20, 0xc883: 0x6c100620,\n\t0xc886: 0x6c1fb220,\n\t0xc888: 0x6c004c20,\n\t0xc88d: 0x6c1fb820, 0xc88e: 0x6c1fbc20,\n\t0xc890: 0x6c04c220, 0xc891: 0x6c053c20, 0xc893: 0x6c032820,\n\t0xc894: 0x6c040220,\n\t0xc899: 0x6c1fc220,\n\t0xc89c: 0x6c080a20, 0xc89d: 0x6c147620, 0xc89f: 0x6c084220,\n\t0xc8a3: 0x6c1fc420,\n\t0xc8a7: 0x6c127c20,\n\t0xc8b4: 0x6c1fdc20, 0xc8b6: 0x6c019e20, 0xc8b7: 0x6c1fc620,\n\t0xc8be: 0x6c1fe820, 0xc8bf: 0x6c1fc820,\n\t// Block 0x323, offset 0xc8c0\n\t0xc8c1: 0x6c164c20, 0xc8c3: 0x6c1fd620,\n\t0xc8c5: 0x6c116220,\n\t0xc8cd: 0x6c1fe620, 0xc8cf: 0x6c1fcc20,\n\t0xc8d3: 0x6c002820,\n\t0xc8d4: 0x6c1fd020, 0xc8d7: 0x6c06d420,\n\t0xc8db: 0x6c1fd420,\n\t0xc8dd: 0x6c1fd220, 0xc8df: 0x6c1fca20,\n\t0xc8e0: 0x6c1fe020, 0xc8e2: 0x6c0a8620,\n\t0xc8e6: 0x6c1ab420, 0xc8e7: 0x6c067020,\n\t0xc8e8: 0x6c160420,\n\t0xc8ed: 0x6c1fce20, 0xc8ef: 0x6c0f5820,\n\t0xc8f0: 0x6c023a20, 0xc8f1: 0x6c077220, 0xc8f3: 0x6c1fbe20,\n\t0xc8f5: 0x6c1fde20, 0xc8f6: 0x6c02b620,\n\t0xc8f9: 0x6c1fda20, 0xc8fa: 0x6c1fe220,\n\t0xc8fc: 0x6c100820,\n\t// Block 0x324, offset 0xc900\n\t0xc904: 0x6c03ac20, 0xc906: 0x6c201e20,\n\t0xc909: 0x6c14e220, 0xc90a: 0x6c1fec20, 0xc90b: 0x6c03aa20,\n\t0xc90d: 0x6c1ffa20,\n\t0xc912: 0x6c141420,\n\t0xc914: 0x6c1ffc20, 0xc915: 0x6c200020, 0xc917: 0x6c200820,\n\t0xc918: 0x6c1ff020, 0xc91a: 0x6c0e0820,\n\t0xc91f: 0x6c100a20,\n\t0xc920: 0x6c201020, 0xc921: 0x6c1ff620, 0xc923: 0x6c200a20,\n\t0xc927: 0x6c1ffe20,\n\t0xc92e: 0x6c0b3620, 0xc92f: 0x6c201220,\n\t0xc932: 0x6c0be620,\n\t0xc939: 0x6c200e20, 0xc93a: 0x6c032a20,\n\t// Block 0x325, offset 0xc940\n\t0xc940: 0x6c172420, 0xc941: 0x6c1fea20,\n\t0xc944: 0x6c200620, 0xc945: 0x6c007020,\n\t0xc948: 0x6c1fee20, 0xc94b: 0x6c14c420,\n\t0xc94c: 0x6c1ff820, 0xc94d: 0x6c0b0820, 0xc94e: 0x6c0efe20, 0xc94f: 0x6c1fe420,\n\t0xc952: 0x6c200420,\n\t0xc959: 0x6c0bb820, 0xc95a: 0x6c201820, 0xc95b: 0x6c02d620,\n\t0xc95c: 0x6c05e220,\n\t0xc961: 0x6c201c20, 0xc962: 0x6c1ff220, 0xc963: 0x6c201a20,\n\t0xc965: 0x6c200c20, 0xc966: 0x6c1ff420,\n\t0xc968: 0x6c201420, 0xc96a: 0x6c201620,\n\t0xc970: 0x6c203820,\n\t0xc974: 0x6c108420, 0xc976: 0x6c200220,\n\t0xc979: 0x6c203020,\n\t0xc97d: 0x6c203420, 0xc97f: 0x6c0f2020,\n\t// Block 0x326, offset 0xc980\n\t0xc98a: 0x6c15a420,\n\t0xc993: 0x6c130820,\n\t0xc994: 0x6c202a20, 0xc995: 0x6c0d8c20,\n\t0xc999: 0x6c203620, 0xc99a: 0x6c0cba20,\n\t0xc99c: 0x6c202420, 0xc99d: 0x6c203e20, 0xc99e: 0x6c203c20,\n\t0xc9a0: 0x6c10c620, 0xc9a1: 0x6c203a20, 0xc9a2: 0x6c10bc20,\n\t0xc9aa: 0x6c204220, 0xc9ab: 0x6c202820,\n\t0xc9ad: 0x6c04b820, 0xc9ae: 0x6c202e20, 0xc9af: 0x6c0a0620,\n\t0xc9b3: 0x6c116420,\n\t0xc9b4: 0x6c203220, 0xc9b5: 0x6c04be20, 0xc9b7: 0x6c202220,\n\t0xc9b8: 0x6c202620, 0xc9b9: 0x6c202020,\n\t0xc9bc: 0x6c16e420, 0xc9bd: 0x6c02a820, 0xc9be: 0x6c202c20,\n\t// Block 0x327, offset 0xc9c0\n\t0xc9c1: 0x6c204020, 0xc9c2: 0x6c025e20,\n\t0xc9ca: 0x6c07e620,\n\t0xc9ce: 0x6c013620,\n\t0xc9d1: 0x6c206220,\n\t0xc9d4: 0x6c16e620, 0xc9d5: 0x6c206820,\n\t0xc9db: 0x6c0b3820,\n\t0xc9dc: 0x6c206620,\n\t0xc9e0: 0x6c206420,\n\t0xc9e7: 0x6c205e20,\n\t0xc9ee: 0x6c204620,\n\t0xc9f1: 0x6c208020, 0xc9f2: 0x6c204420,\n\t0xc9f4: 0x6c206a20,\n\t0xc9fb: 0x6c205a20,\n\t0xc9fe: 0x6c205020, 0xc9ff: 0x6c204a20,\n\t// Block 0x328, offset 0xca00\n\t0xca01: 0x6c204c20, 0xca03: 0x6c205c20,\n\t0xca07: 0x6c319e20,\n\t0xca0a: 0x6c205620, 0xca0b: 0x6c06d620,\n\t0xca0c: 0x6c0f0020, 0xca0d: 0x6c0d0420, 0xca0e: 0x6c205220,\n\t0xca10: 0x6c204820, 0xca13: 0x6c204e20,\n\t0xca18: 0x6c15a620, 0xca19: 0x6c146820,\n\t0xca1d: 0x6c205820, 0xca1e: 0x6c206c20,\n\t0xca27: 0x6c207c20,\n\t0xca28: 0x6c206e20, 0xca2b: 0x6c208820,\n\t0xca2d: 0x6c208420,\n\t0xca32: 0x6c207a20,\n\t0xca39: 0x6c207820, 0xca3b: 0x6c0f1020,\n\t0xca3d: 0x6c0d0620, 0xca3f: 0x6c207420,\n\t// Block 0x329, offset 0xca40\n\t0xca42: 0x6c207020,\n\t0xca45: 0x6c207e20,\n\t0xca4a: 0x6c208a20, 0xca4b: 0x6c124a20,\n\t0xca4c: 0x6c209620,\n\t0xca52: 0x6c208c20, 0xca53: 0x6c209220,\n\t0xca54: 0x6c208620, 0xca57: 0x6c0e9c20,\n\t0xca59: 0x6c128c20, 0xca5b: 0x6c207220,\n\t0xca5e: 0x6c208220, 0xca5f: 0x6c0a8820,\n\t0xca61: 0x6c14ee20, 0xca62: 0x6c20aa20, 0xca63: 0x6c209020,\n\t0xca69: 0x6c05e420, 0xca6a: 0x6c017e20, 0xca6b: 0x6c02b220,\n\t0xca6e: 0x6c206020,\n\t0xca75: 0x6c0a8a20, 0xca76: 0x6c209a20,\n\t0xca78: 0x6c20a820, 0xca79: 0x6c098220, 0xca7a: 0x6c02d820,\n\t0xca7d: 0x6c0e1020,\n\t// Block 0x32a, offset 0xca80\n\t0xca84: 0x6c209420, 0xca87: 0x6c209e20,\n\t0xca88: 0x6c20a620, 0xca8b: 0x6c049420,\n\t0xca98: 0x6c040420, 0xca99: 0x6c20a220,\n\t0xca9f: 0x6c03ae20,\n\t0xcaa1: 0x6c107e20, 0xcaa2: 0x6c20a020,\n\t0xcaa6: 0x6c20a420,\n\t0xcab2: 0x6c209820,\n\t0xcab8: 0x6c209c20,\n\t0xcabf: 0x6c02b420,\n\t// Block 0x32b, offset 0xcac0\n\t0xcac0: 0x6c0e4620,\n\t0xcac4: 0x6c20b220,\n\t0xcacd: 0x6c20ae20, 0xcace: 0x6c067220,\n\t0xcad0: 0x6c20ac20,\n\t0xcad7: 0x6c20b820,\n\t0xcadc: 0x6c1fae20,\n\t0xcae0: 0x6c20b020, 0xcae2: 0x6c20b420, 0xcae3: 0x6c20b620,\n\t0xcaea: 0x6c20ce20,\n\t0xcaec: 0x6c20c620, 0xcaee: 0x6c1fd820,\n\t0xcaf3: 0x6c20c420,\n\t0xcaf8: 0x6c20c220, 0xcafb: 0x6c20bc20,\n\t// Block 0x32c, offset 0xcb00\n\t0xcb01: 0x6c208e20, 0xcb02: 0x6c20c020, 0xcb03: 0x6c20be20,\n\t0xcb11: 0x6c20ca20, 0xcb13: 0x6c16d020,\n\t0xcb1a: 0x6c20d020, 0xcb1b: 0x6c051e20,\n\t0xcb1e: 0x6c20c820, 0xcb1f: 0x6c20cc20,\n\t0xcb28: 0x6c11ae20, 0xcb2a: 0x6c20d220,\n\t0xcb3a: 0x6c20da20, 0xcb3b: 0x6c20d420,\n\t// Block 0x32d, offset 0xcb40\n\t0xcb44: 0x6c15f220, 0xcb45: 0x6c20d620,\n\t0xcb4a: 0x6c207620,\n\t0xcb52: 0x6c20dc20,\n\t0xcb56: 0x6c20de20,\n\t0xcb5d: 0x6c00e620, 0xcb5f: 0x6c20e220,\n\t0xcb60: 0x6c05b220, 0xcb61: 0x6c08d220, 0xcb63: 0x6c04d220,\n\t0xcb67: 0x6c018020,\n\t0xcb72: 0x6c15ca20,\n\t0xcb77: 0x6c20e620,\n\t0xcb78: 0x6c20e420, 0xcb79: 0x6c20ea20, 0xcb7a: 0x6c03e620,\n\t0xcb7d: 0x6c04d420, 0xcb7e: 0x6c032c20,\n\t// Block 0x32e, offset 0xcb80\n\t0xcb83: 0x6c20f020,\n\t0xcb87: 0x6c20ee20,\n\t0xcb89: 0x6c20f220,\n\t0xcb8c: 0x6c01d420, 0xcb8e: 0x6c0e2220,\n\t0xcb90: 0x6c20f420, 0xcb93: 0x6c032e20,\n\t0xcb94: 0x6c20f820,\n\t0xcb99: 0x6c20f620, 0xcb9b: 0x6c20fa20,\n\t0xcb9f: 0x6c20fc20,\n\t0xcba1: 0x6c20fe20, 0xcba2: 0x6c089220, 0xcba3: 0x6c0bea20,\n\t0xcba4: 0x6c075a20, 0xcba6: 0x6c12fc20,\n\t0xcba9: 0x6c139c20, 0xcbaa: 0x6c170c20,\n\t0xcbaf: 0x6c08be20,\n\t0xcbb3: 0x6c07b820,\n\t0xcbb4: 0x6c16ac20,\n\t0xcbb8: 0x6c210020, 0xcbb9: 0x6c210220, 0xcbbb: 0x6c089420,\n\t0xcbbf: 0x6c210420,\n\t// Block 0x32f, offset 0xcbc0\n\t0xcbc0: 0x6c210620, 0xcbc3: 0x6c210a20,\n\t0xcbc4: 0x6c210820, 0xcbc6: 0x6c144420,\n\t0xcbc9: 0x6c0a0820, 0xcbca: 0x6c096820, 0xcbcb: 0x6c085c20,\n\t0xcbcd: 0x6c210c20,\n\t0xcbd5: 0x6c211020, 0xcbd6: 0x6c0b0a20,\n\t0xcbd8: 0x6c210e20,\n\t0xcbde: 0x6c211220,\n\t0xcbe4: 0x6c211420,\n\t0xcbea: 0x6c211620, 0xcbeb: 0x6c211820,\n\t0xcbef: 0x6c211a20,\n\t0xcbf1: 0x6c211e20, 0xcbf2: 0x6c211c20, 0xcbf3: 0x6c212020,\n\t0xcbf4: 0x6c018220, 0xcbf5: 0x6c0e4820, 0xcbf7: 0x6c212220,\n\t0xcbfa: 0x6c082020, 0xcbfb: 0x6c028c20,\n\t0xcbfc: 0x6c212420, 0xcbff: 0x6c0fb020,\n\t// Block 0x330, offset 0xcc00\n\t0xcc00: 0x6c1a7220,\n\t0xcc05: 0x6c03b220, 0xcc06: 0x6c212620,\n\t0xcc0b: 0x6c212820,\n\t0xcc0d: 0x6c13b020, 0xcc0e: 0x6c146420,\n\t0xcc12: 0x6c107620, 0xcc13: 0x6c212a20,\n\t0xcc14: 0x6c122c20,\n\t0xcc18: 0x6c125620, 0xcc1b: 0x6c14f620,\n\t0xcc1f: 0x6c212c20,\n\t0xcc2b: 0x6c213020,\n\t0xcc2c: 0x6c212e20, 0xcc2f: 0x6c213420,\n\t0xcc33: 0x6c213220,\n\t// Block 0x331, offset 0xcc40\n\t0xcc48: 0x6c213820,\n\t0xcc4f: 0x6c089620,\n\t0xcc51: 0x6c14b220, 0xcc53: 0x6c213a20,\n\t0xcc54: 0x6c213c20, 0xcc57: 0x6c03b420,\n\t0xcc5b: 0x6c213e20,\n\t0xcc63: 0x6c214220,\n\t0xcc64: 0x6c214020,\n\t0xcc74: 0x6c0b8e20, 0xcc77: 0x6c128e20,\n\t0xcc78: 0x6c011020,\n\t0xcc7e: 0x6c11ea20,\n\t// Block 0x332, offset 0xcc80\n\t0xcc80: 0x6c0f5a20, 0xcc81: 0x6c09ce20, 0xcc82: 0x6c042e20,\n\t0xcc8e: 0x6c11ec20,\n\t0xcc90: 0x6c08ec20,\n\t0xcc95: 0x6c214620, 0xcc97: 0x6c033020,\n\t0xcc9a: 0x6c016c20,\n\t0xcc9d: 0x6c10cc20, 0xcc9e: 0x6c214420, 0xcc9f: 0x6c06d820,\n\t0xcca0: 0x6c0e5a20, 0xcca2: 0x6c214820,\n\t0xcca8: 0x6c215820, 0xccaa: 0x6c214a20,\n\t0xccb0: 0x6c0d7a20, 0xccb2: 0x6c043020, 0xccb3: 0x6c215a20,\n\t0xccba: 0x6c05b420,\n\t0xccbd: 0x6c03b620, 0xccbe: 0x6c215620,\n\t// Block 0x333, offset 0xccc0\n\t0xccc1: 0x6c215220, 0xccc2: 0x6c214c20, 0xccc3: 0x6c15cc20,\n\t0xccc8: 0x6c0ef020,\n\t0xcccc: 0x6c109a20, 0xcccd: 0x6c214e20,\n\t0xccd0: 0x6c215e20, 0xccd2: 0x6c215c20, 0xccd3: 0x6c052a20,\n\t0xccd6: 0x6c019220,\n\t0xccd9: 0x6c078e20, 0xccda: 0x6c215020, 0xccdb: 0x6c215420,\n\t0xcce1: 0x6c144220, 0xcce2: 0x6c0de020,\n\t0xcceb: 0x6c148220,\n\t0xccee: 0x6c216e20,\n\t0xccf1: 0x6c217020, 0xccf3: 0x6c01d620,\n\t0xccf8: 0x6c132820, 0xccf9: 0x6c154a20, 0xccfa: 0x6c217420, 0xccfb: 0x6c08d620,\n\t0xccfc: 0x6c0a8c20, 0xccfd: 0x6c216620, 0xccfe: 0x6c217220, 0xccff: 0x6c014c20,\n\t// Block 0x334, offset 0xcd00\n\t0xcd01: 0x6c049620,\n\t0xcd04: 0x6c216020, 0xcd05: 0x6c216a20,\n\t0xcd09: 0x6c0c6820, 0xcd0a: 0x6c118620,\n\t0xcd0c: 0x6c122e20,\n\t0xcd13: 0x6c216420,\n\t0xcd15: 0x6c13d620, 0xcd17: 0x6c216820,\n\t0xcd19: 0x6c217a20, 0xcd1b: 0x6c217620,\n\t0xcd1d: 0x6c216c20,\n\t0xcd21: 0x6c13d820, 0xcd22: 0x6c113420, 0xcd23: 0x6c043220,\n\t0xcd25: 0x6c0f7620,\n\t0xcd28: 0x6c0e8e20, 0xcd2a: 0x6c217c20,\n\t0xcd2f: 0x6c217820,\n\t0xcd30: 0x6c0daa20, 0xcd31: 0x6c216220, 0xcd33: 0x6c011220,\n\t// Block 0x335, offset 0xcd40\n\t0xcd4b: 0x6c15a820,\n\t0xcd4c: 0x6c219220,\n\t0xcd52: 0x6c219020,\n\t0xcd57: 0x6c0c6c20,\n\t0xcd59: 0x6c218a20, 0xcd5b: 0x6c15e420,\n\t0xcd5e: 0x6c105420, 0xcd5f: 0x6c217e20,\n\t0xcd65: 0x6c0efa20,\n\t0xcd69: 0x6c011420, 0xcd6a: 0x6c06da20, 0xcd6b: 0x6c218420,\n\t0xcd72: 0x6c099a20, 0xcd73: 0x6c218e20,\n\t0xcd75: 0x6c218c20, 0xcd76: 0x6c218220,\n\t0xcd78: 0x6c218820, 0xcd7b: 0x6c02c420,\n\t0xcd7d: 0x6c218620, 0xcd7e: 0x6c113620,\n\t// Block 0x336, offset 0xcd80\n\t0xcd81: 0x6c162420,\n\t0xcd84: 0x6c0af020, 0xcd85: 0x6c0c6a20,\n\t0xcd99: 0x6c219e20, 0xcd9a: 0x6c219a20,\n\t0xcd9c: 0x6c12b620,\n\t0xcda3: 0x6c219420,\n\t0xcda4: 0x6c219820, 0xcda6: 0x6c00f020,\n\t0xcda9: 0x6c06dc20, 0xcdaa: 0x6c16e820,\n\t0xcdac: 0x6c026e20, 0xcdae: 0x6c12e020,\n\t0xcdb4: 0x6c15ce20, 0xcdb7: 0x6c023c20,\n\t0xcdb8: 0x6c0b3a20, 0xcdb9: 0x6c219c20,\n\t// Block 0x337, offset 0xcdc0\n\t0xcdc5: 0x6c21a620,\n\t0xcdc8: 0x6c0a8e20,\n\t0xcdcc: 0x6c156c20, 0xcdce: 0x6c21a020,\n\t0xcdd3: 0x6c219620,\n\t0xcdd5: 0x6c21a220,\n\t0xcdd9: 0x6c168420, 0xcddb: 0x6c101220,\n\t0xcddc: 0x6c106c20,\n\t0xcdef: 0x6c026020,\n\t0xcdf2: 0x6c012620,\n\t0xcdf5: 0x6c21ae20,\n\t0xcdf8: 0x6c21b420,\n\t0xcdfc: 0x6c164e20,\n\t// Block 0x338, offset 0xce00\n\t0xce00: 0x6c15d420,\n\t0xce05: 0x6c21c220, 0xce06: 0x6c21b620, 0xce07: 0x6c21b020,\n\t0xce0b: 0x6c167020,\n\t0xce0c: 0x6c21bc20,\n\t0xce11: 0x6c09e020, 0xce12: 0x6c21c020,\n\t0xce15: 0x6c21ca20,\n\t0xce18: 0x6c100e20, 0xce19: 0x6c21c620,\n\t0xce1e: 0x6c21ba20,\n\t0xce21: 0x6c0e2420,\n\t0xce24: 0x6c21c820, 0xce26: 0x6c21b220,\n\t0xce28: 0x6c21be20, 0xce2a: 0x6c21cc20, 0xce2b: 0x6c00b820,\n\t0xce2c: 0x6c21b820, 0xce2e: 0x6c21ce20,\n\t0xce31: 0x6c0b3c20, 0xce33: 0x6c0a0a20,\n\t0xce35: 0x6c132220, 0xce37: 0x6c077420,\n\t0xce39: 0x6c21a820, 0xce3a: 0x6c21c420, 0xce3b: 0x6c0fa020,\n\t// Block 0x339, offset 0xce40\n\t0xce45: 0x6c0bec20, 0xce47: 0x6c02c620,\n\t0xce48: 0x6c07ba20, 0xce49: 0x6c0a9020, 0xce4a: 0x6c21ac20, 0xce4b: 0x6c09d020,\n\t0xce53: 0x6c057c20,\n\t0xce55: 0x6c21aa20,\n\t0xce59: 0x6c21d620, 0xce5a: 0x6c0a2620, 0xce5b: 0x6c061420,\n\t0xce5d: 0x6c21f420, 0xce5f: 0x6c21e820,\n\t0xce60: 0x6c045420, 0xce61: 0x6c0fca20, 0xce63: 0x6c21de20,\n\t0xce64: 0x6c21f020, 0xce65: 0x6c001e20, 0xce66: 0x6c00e020,\n\t0xce69: 0x6c01aa20, 0xce6b: 0x6c21e220,\n\t0xce6c: 0x6c0d5020, 0xce6d: 0x6c21d020, 0xce6e: 0x6c21d420, 0xce6f: 0x6c06de20,\n\t0xce78: 0x6c21f620, 0xce7a: 0x6c21ec20,\n\t0xce7e: 0x6c21dc20,\n\t// Block 0x33a, offset 0xce80\n\t0xce83: 0x6c21ea20,\n\t0xce8a: 0x6c14a620,\n\t0xce8d: 0x6c21e620, 0xce8e: 0x6c21ee20,\n\t0xce96: 0x6c064020,\n\t0xce98: 0x6c0a9220, 0xce9b: 0x6c0e2620,\n\t0xce9f: 0x6c21da20,\n\t0xcea7: 0x6c156a20,\n\t0xceab: 0x6c21e020,\n\t0xceae: 0x6c21d220, 0xceaf: 0x6c101020,\n\t0xceb2: 0x6c21d820,\n\t0xceb6: 0x6c21e420,\n\t0xcebe: 0x6c172620, 0xcebf: 0x6c090c20,\n\t// Block 0x33b, offset 0xcec0\n\t0xcec0: 0x6c149020, 0xcec2: 0x6c21f820,\n\t0xcecc: 0x6c11bc20, 0xcecf: 0x6c221020,\n\t0xced0: 0x6c061620,\n\t0xced6: 0x6c0a0c20,\n\t0xced8: 0x6c21fc20,\n\t0xcedc: 0x6c162620, 0xcedd: 0x6c06e020, 0xcedf: 0x6c221620,\n\t0xcee2: 0x6c009c20,\n\t0xcee5: 0x6c221220,\n\t0xceea: 0x6c21fa20,\n\t0xceef: 0x6c220620,\n\t0xcef2: 0x6c220a20,\n\t0xcef6: 0x6c15aa20, 0xcef7: 0x6c220020,\n\t0xcefa: 0x6c0f8820,\n\t0xcefd: 0x6c220420,\n\t// Block 0x33c, offset 0xcf00\n\t0xcf02: 0x6c221420,\n\t0xcf04: 0x6c220820, 0xcf05: 0x6c14de20,\n\t0xcf09: 0x6c21fe20, 0xcf0b: 0x6c08d420,\n\t0xcf0c: 0x6c222e20,\n\t0xcf11: 0x6c02c820, 0xcf13: 0x6c220220,\n\t0xcf14: 0x6c220c20, 0xcf15: 0x6c220e20,\n\t0xcf1d: 0x6c0dd020, 0xcf1e: 0x6c0dac20,\n\t0xcf2c: 0x6c221e20, 0xcf2f: 0x6c222a20,\n\t0xcf32: 0x6c222620,\n\t0xcf34: 0x6c0f7e20, 0xcf37: 0x6c223420,\n\t0xcf38: 0x6c222020,\n\t0xcf3e: 0x6c222220, 0xcf3f: 0x6c21f220,\n\t// Block 0x33d, offset 0xcf40\n\t0xcf41: 0x6c045e20, 0xcf42: 0x6c129020,\n\t0xcf46: 0x6c090e20,\n\t0xcf49: 0x6c074a20,\n\t0xcf4f: 0x6c16ea20,\n\t0xcf51: 0x6c221a20, 0xcf53: 0x6c223220,\n\t0xcf54: 0x6c014e20, 0xcf55: 0x6c0d0820,\n\t0xcf60: 0x6c119620, 0xcf62: 0x6c033220, 0xcf63: 0x6c16bc20,\n\t0xcf6b: 0x6c149220,\n\t0xcf6c: 0x6c0f1420,\n\t0xcf71: 0x6c222820, 0xcf72: 0x6c222c20,\n\t0xcf78: 0x6c0ca020,\n\t0xcf7e: 0x6c223020, 0xcf7f: 0x6c222420,\n\t// Block 0x33e, offset 0xcf80\n\t0xcf81: 0x6c221820,\n\t0xcf85: 0x6c033620,\n\t0xcf94: 0x6c05b620,\n\t0xcf98: 0x6c224c20, 0xcf9b: 0x6c224220,\n\t0xcf9c: 0x6c0c7020, 0xcf9f: 0x6c02ba20,\n\t0xcfa4: 0x6c0a0e20, 0xcfa6: 0x6c225420,\n\t0xcfad: 0x6c224620, 0xcfae: 0x6c0ec820, 0xcfaf: 0x6c224020,\n\t0xcfb0: 0x6c0f2220,\n\t0xcfb4: 0x6c228620,\n\t0xcfb8: 0x6c223a20, 0xcfba: 0x6c223820,\n\t0xcfbc: 0x6c224a20,\n\t// Block 0x33f, offset 0xcfc0\n\t0xcfc0: 0x6c223e20, 0xcfc1: 0x6c223c20, 0xcfc2: 0x6c224820,\n\t0xcfc4: 0x6c0bc220, 0xcfc6: 0x6c223620,\n\t0xcfce: 0x6c224e20,\n\t0xcfd1: 0x6c225020,\n\t0xcfd7: 0x6c033420,\n\t0xcfe1: 0x6c225a20, 0xcfe3: 0x6c225820,\n\t0xcfe4: 0x6c225c20,\n\t0xcfea: 0x6c226220,\n\t0xcff1: 0x6c0fb220, 0xcff3: 0x6c225620,\n\t0xcff9: 0x6c225e20,\n\t// Block 0x340, offset 0xd000\n\t0xd000: 0x6c05aa20, 0xd001: 0x6c0dea20, 0xd002: 0x6c225220, 0xd003: 0x6c111a20,\n\t0xd006: 0x6c226020,\n\t0xd014: 0x6c226a20, 0xd015: 0x6c226620,\n\t0xd018: 0x6c226c20, 0xd01b: 0x6c227220,\n\t0xd01f: 0x6c226420,\n\t0xd020: 0x6c073020, 0xd021: 0x6c10f420,\n\t0xd024: 0x6c21a420,\n\t0xd02b: 0x6c15f420,\n\t0xd02c: 0x6c226820, 0xd02e: 0x6c227020, 0xd02f: 0x6c0de220,\n\t0xd031: 0x6c226e20, 0xd033: 0x6c224420,\n\t0xd036: 0x6c2e8020,\n\t0xd03a: 0x6c227820,\n\t0xd03e: 0x6c228020,\n\t// Block 0x341, offset 0xd040\n\t0xd041: 0x6c227c20,\n\t0xd049: 0x6c227420, 0xd04b: 0x6c227620,\n\t0xd04f: 0x6c227e20,\n\t0xd051: 0x6c227a20,\n\t0xd055: 0x6c12b820,\n\t0xd058: 0x6c228a20, 0xd05a: 0x6c228420, 0xd05b: 0x6c228220,\n\t0xd05d: 0x6c228820, 0xd05e: 0x6c109020, 0xd05f: 0x6c228c20,\n\t0xd066: 0x6c0e9e20, 0xd067: 0x6c0dd220,\n\t0xd06c: 0x6c0bca20,\n\t0xd070: 0x6c228e20, 0xd072: 0x6c229220,\n\t0xd07e: 0x6c229020,\n\t// Block 0x342, offset 0xd080\n\t0xd08c: 0x6c221c20,\n\t0xd091: 0x6c229420,\n\t0xd098: 0x6c10b620,\n\t0xd0a3: 0x6c229620,\n\t0xd0ab: 0x6c01d820,\n\t0xd0af: 0x6c101420,\n\t0xd0b0: 0x6c023e20,\n\t0xd0b8: 0x6c043420,\n\t0xd0bc: 0x6c094c20, 0xd0bd: 0x6c07bc20,\n\t// Block 0x343, offset 0xd0c0\n\t0xd0c9: 0x6c16d220, 0xd0ca: 0x6c0b9020,\n\t0xd0ce: 0x6c015020,\n\t0xd0d2: 0x6c229a20,\n\t0xd0d9: 0x6c229820,\n\t0xd0ec: 0x6c22a020, 0xd0ed: 0x6c0e2820, 0xd0ee: 0x6c22a620, 0xd0ef: 0x6c229c20,\n\t0xd0f3: 0x6c22a420,\n\t0xd0f8: 0x6c22a220, 0xd0f9: 0x6c0fac20, 0xd0fa: 0x6c007220,\n\t// Block 0x344, offset 0xd100\n\t0xd108: 0x6c16b220, 0xd10b: 0x6c22aa20,\n\t0xd10f: 0x6c00cc20,\n\t0xd119: 0x6c22ae20,\n\t0xd11d: 0x6c22ac20, 0xd11f: 0x6c22a820,\n\t0xd131: 0x6c229e20,\n\t0xd139: 0x6c13da20,\n\t0xd13d: 0x6c22b220,\n\t// Block 0x345, offset 0xd140\n\t0xd149: 0x6c22b020,\n\t0xd154: 0x6c015220,\n\t0xd159: 0x6c22b620, 0xd15a: 0x6c133c20,\n\t0xd15c: 0x6c22b420,\n\t0xd161: 0x6c14ba20,\n\t0xd166: 0x6c0a9620,\n\t0xd176: 0x6c0ca220,\n\t0xd17c: 0x6c0a9420,\n\t// Block 0x346, offset 0xd180\n\t0xd189: 0x6c16be20,\n\t0xd18c: 0x6c22c220, 0xd18e: 0x6c0c7220,\n\t0xd195: 0x6c22ba20, 0xd196: 0x6c22c420,\n\t0xd199: 0x6c015420,\n\t0xd1a2: 0x6c22c020,\n\t0xd1a4: 0x6c116620, 0xd1a5: 0x6c22b820, 0xd1a6: 0x6c22be20, 0xd1a7: 0x6c0a9820,\n\t0xd1a9: 0x6c120220,\n\t0xd1ac: 0x6c22c620, 0xd1ae: 0x6c093220,\n\t0xd1bd: 0x6c0c7420,\n\t// Block 0x347, offset 0xd1c0\n\t0xd1c4: 0x6c22cc20,\n\t0xd1c8: 0x6c22bc20, 0xd1ca: 0x6c053220,\n\t0xd1cf: 0x6c22c820,\n\t0xd1d4: 0x6c15ac20, 0xd1d5: 0x6c22ce20,\n\t0xd1d9: 0x6c31a620,\n\t0xd1df: 0x6c09ea20,\n\t0xd1e8: 0x6c22d020,\n\t0xd1ec: 0x6c22d220,\n\t0xd1f1: 0x6c110020,\n\t0xd1f9: 0x6c22d620,\n\t0xd1fe: 0x6c22d820,\n\t// Block 0x348, offset 0xd200\n\t0xd203: 0x6c110a20,\n\t0xd208: 0x6c101620, 0xd209: 0x6c22dc20,\n\t0xd20e: 0x6c22e020,\n\t0xd210: 0x6c167220, 0xd212: 0x6c22da20,\n\t0xd214: 0x6c22de20, 0xd215: 0x6c015620, 0xd217: 0x6c22d420,\n\t0xd21f: 0x6c19d420,\n\t0xd220: 0x6c22e220,\n\t0xd225: 0x6c0d0a20, 0xd226: 0x6c084420, 0xd227: 0x6c22e620,\n\t0xd22c: 0x6c22e420, 0xd22d: 0x6c0b0c20, 0xd22e: 0x6c191420,\n\t0xd235: 0x6c22e820,\n\t0xd239: 0x6c22ec20, 0xd23b: 0x6c22ca20,\n\t0xd23c: 0x6c22ea20, 0xd23f: 0x6c22ee20,\n\t// Block 0x349, offset 0xd240\n\t0xd246: 0x6c119820,\n\t0xd24d: 0x6c22f020,\n\t0xd250: 0x6c22f220,\n\t0xd25b: 0x6c22f420,\n\t0xd268: 0x6c22f620, 0xd26a: 0x6c0f2c20,\n\t0xd26c: 0x6c22fa20, 0xd26d: 0x6c22f820,\n\t0xd270: 0x6c22fc20, 0xd272: 0x6c22fe20,\n\t0xd275: 0x6c094e20, 0xd276: 0x6c12e220,\n\t0xd27a: 0x6c152820, 0xd27b: 0x6c230020,\n\t0xd27c: 0x6c230220, 0xd27d: 0x6c0ce820, 0xd27e: 0x6c08d820, 0xd27f: 0x6c230420,\n\t// Block 0x34a, offset 0xd280\n\t0xd280: 0x6c230620,\n\t0xd286: 0x6c230820, 0xd287: 0x6c137c20,\n\t0xd288: 0x6c11ee20, 0xd28b: 0x6c230a20,\n\t0xd28c: 0x6c115220,\n\t0xd292: 0x6c0eca20,\n\t0xd298: 0x6c230c20, 0xd299: 0x6c020620, 0xd29b: 0x6c044620,\n\t0xd29d: 0x6c14dc20, 0xd29f: 0x6c14bc20,\n\t0xd2a1: 0x6c01a020, 0xd2a2: 0x6c16ec20,\n\t0xd2a7: 0x6c143820,\n\t0xd2a9: 0x6c132c20,\n\t0xd2b2: 0x6c0bee20,\n\t0xd2b4: 0x6c230e20,\n\t0xd2b9: 0x6c106e20,\n\t0xd2bd: 0x6c05e620, 0xd2be: 0x6c231020,\n\t// Block 0x34b, offset 0xd2c0\n\t0xd2c0: 0x6c07c020, 0xd2c1: 0x6c231420, 0xd2c2: 0x6c231220,\n\t0xd2c7: 0x6c231620,\n\t0xd2d2: 0x6c231820,\n\t0xd2d6: 0x6c231a20,\n\t0xd2e0: 0x6c03e820, 0xd2e2: 0x6c231c20,\n\t0xd2e7: 0x6c231e20,\n\t0xd2ec: 0x6c05e820, 0xd2ef: 0x6c11f020,\n\t0xd2f2: 0x6c232220,\n\t0xd2f6: 0x6c0af220,\n\t0xd2f9: 0x6c232020,\n\t// Block 0x34c, offset 0xd300\n\t0xd302: 0x6c049820, 0xd303: 0x6c232420,\n\t0xd304: 0x6c232820, 0xd306: 0x6c232620,\n\t0xd30e: 0x6c232a20,\n\t0xd310: 0x6c064220, 0xd312: 0x6c232c20,\n\t0xd317: 0x6c04fa20,\n\t0xd319: 0x6c0cbc20, 0xd31b: 0x6c075620,\n\t0xd320: 0x6c233020, 0xd321: 0x6c233220, 0xd322: 0x6c232e20,\n\t0xd329: 0x6c096a20,\n\t0xd32c: 0x6c107820, 0xd32d: 0x6c049a20,\n\t0xd337: 0x6c233620,\n\t0xd338: 0x6c0e0c20, 0xd339: 0x6c233420,\n\t0xd33c: 0x6c16ee20, 0xd33d: 0x6c116820,\n\t// Block 0x34d, offset 0xd340\n\t0xd34a: 0x6c233c20,\n\t0xd356: 0x6c234020, 0xd357: 0x6c233a20,\n\t0xd35b: 0x6c14f820,\n\t0xd35c: 0x6c233e20, 0xd35d: 0x6c234220, 0xd35f: 0x6c165020,\n\t0xd365: 0x6c234a20,\n\t0xd369: 0x6c234820, 0xd36a: 0x6c0ea020, 0xd36b: 0x6c10fe20,\n\t0xd36e: 0x6c05ea20, 0xd36f: 0x6c234620,\n\t0xd374: 0x6c234420, 0xd376: 0x6c156e20, 0xd377: 0x6c157020,\n\t0xd37e: 0x6c234c20, 0xd37f: 0x6c015820,\n\t// Block 0x34e, offset 0xd380\n\t0xd384: 0x6c074820, 0xd385: 0x6c089820,\n\t0xd38e: 0x6c234e20, 0xd38f: 0x6c235020,\n\t0xd397: 0x6c235420,\n\t0xd3a3: 0x6c09d220,\n\t0xd3a8: 0x6c235820, 0xd3aa: 0x6c235620,\n\t0xd3b0: 0x6c235a20, 0xd3b2: 0x6c028e20,\n\t0xd3b5: 0x6c235e20,\n\t0xd3b8: 0x6c235c20, 0xd3ba: 0x6c236220, 0xd3bb: 0x6c236020,\n\t// Block 0x34f, offset 0xd3c0\n\t0xd3c4: 0x6c061820, 0xd3c7: 0x6c161820,\n\t0xd3c9: 0x6c04c020, 0xd3cb: 0x6c018420,\n\t0xd3d6: 0x6c04fc20,\n\t0xd3e9: 0x6c037220,\n\t0xd3f2: 0x6c169820, 0xd3f3: 0x6c236620,\n\t0xd3fb: 0x6c236a20,\n\t// Block 0x350, offset 0xd400\n\t0xd400: 0x6c236c20, 0xd402: 0x6c01da20,\n\t0xd408: 0x6c236420, 0xd40a: 0x6c084620,\n\t0xd40d: 0x6c0ef220, 0xd40e: 0x6c236820,\n\t0xd41e: 0x6c237220,\n\t0xd420: 0x6c096c20,\n\t0xd425: 0x6c236e20,\n\t0xd42a: 0x6c056020,\n\t0xd42d: 0x6c11f220, 0xd42e: 0x6c237020,\n\t0xd431: 0x6c23a620,\n\t0xd438: 0x6c237c20,\n\t0xd43e: 0x6c061a20,\n\t// Block 0x351, offset 0xd440\n\t0xd443: 0x6c043620,\n\t0xd445: 0x6c237620, 0xd446: 0x6c160620,\n\t0xd449: 0x6c162820,\n\t0xd462: 0x6c0de420,\n\t0xd465: 0x6c237a20,\n\t0xd472: 0x6c237e20, 0xd473: 0x6c167420,\n\t0xd474: 0x6c04d620, 0xd475: 0x6c125820, 0xd476: 0x6c113820,\n\t0xd47a: 0x6c238020,\n\t0xd47f: 0x6c238420,\n\t// Block 0x352, offset 0xd480\n\t0xd481: 0x6c238a20,\n\t0xd495: 0x6c238220,\n\t0xd499: 0x6c238820, 0xd49a: 0x6c067420, 0xd49b: 0x6c011620,\n\t0xd49c: 0x6c238c20, 0xd49e: 0x6c0ba420, 0xd49f: 0x6c238620,\n\t0xd4a0: 0x6c168020, 0xd4a3: 0x6c239220,\n\t0xd4a4: 0x6c31a220,\n\t0xd4a9: 0x6c238e20, 0xd4aa: 0x6c239420,\n\t0xd4af: 0x6c237820,\n\t0xd4b0: 0x6c239020, 0xd4b3: 0x6c079020,\n\t0xd4b6: 0x6c239620,\n\t0xd4be: 0x6c239820,\n\t// Block 0x353, offset 0xd4c0\n\t0xd4c3: 0x6c160820,\n\t0xd4cb: 0x6c239a20,\n\t0xd4de: 0x6c239c20,\n\t0xd4e2: 0x6c237420,\n\t0xd4e7: 0x6c239e20,\n\t0xd4f0: 0x6c033820,\n\t0xd4fd: 0x6c08da20,\n\t// Block 0x354, offset 0xd500\n\t0xd50a: 0x6c23a020,\n\t0xd50f: 0x6c23a220,\n\t0xd514: 0x6c23a420,\n\t0xd51c: 0x6c00f220,\n\t0xd520: 0x6c23a820, 0xd522: 0x6c129220, 0xd523: 0x6c23aa20,\n\t0xd526: 0x6c02f820, 0xd527: 0x6c23ac20,\n\t0xd529: 0x6c23ae20,\n\t0xd52e: 0x6c23b020,\n\t0xd530: 0x6c23b420, 0xd531: 0x6c23b620, 0xd532: 0x6c23b220,\n\t0xd536: 0x6c12c220, 0xd537: 0x6c23ba20,\n\t0xd538: 0x6c23b820,\n\t// Block 0x355, offset 0xd540\n\t0xd543: 0x6c23be20,\n\t0xd544: 0x6c23bc20, 0xd545: 0x6c23c020,\n\t0xd54c: 0x6c23c220, 0xd54d: 0x6c23c620, 0xd54e: 0x6c23c420,\n\t0xd551: 0x6c074e20, 0xd553: 0x6c23ca20,\n\t0xd555: 0x6c23c820,\n\t0xd558: 0x6c033a20, 0xd55a: 0x6c0b6a20,\n\t0xd55c: 0x6c0fa420, 0xd55e: 0x6c23cc20, 0xd55f: 0x6c0bf020,\n\t0xd563: 0x6c084820,\n\t0xd565: 0x6c016e20, 0xd566: 0x6c23ce20,\n\t0xd568: 0x6c15ae20, 0xd56b: 0x6c139e20,\n\t0xd56c: 0x6c23d020,\n\t0xd570: 0x6c0fb420, 0xd571: 0x6c157220, 0xd572: 0x6c06e220, 0xd573: 0x6c0b3e20,\n\t0xd577: 0x6c0e4a20,\n\t0xd578: 0x6c18ca20, 0xd57a: 0x6c0ecc20, 0xd57b: 0x6c020820,\n\t0xd57c: 0x6c23d220,\n\t// Block 0x356, offset 0xd580\n\t0xd584: 0x6c23d420, 0xd586: 0x6c23de20,\n\t0xd589: 0x6c23da20, 0xd58a: 0x6c23d820, 0xd58b: 0x6c1ec620,\n\t0xd58c: 0x6c024020, 0xd58d: 0x6c23d620, 0xd58f: 0x6c007420,\n\t0xd591: 0x6c11b420,\n\t0xd594: 0x6c11f420,\n\t0xd599: 0x6c162a20, 0xd59a: 0x6c23e020, 0xd59b: 0x6c23dc20,\n\t0xd59c: 0x6c0e6c20, 0xd59d: 0x6c0bcc20,\n\t0xd5a0: 0x6c11b620, 0xd5a2: 0x6c127620,\n\t0xd5a4: 0x6c23e420, 0xd5a5: 0x6c162020, 0xd5a6: 0x6c057e20, 0xd5a7: 0x6c23e620,\n\t0xd5a9: 0x6c23e220, 0xd5aa: 0x6c120c20, 0xd5ab: 0x6c23e820,\n\t0xd5ad: 0x6c23ea20,\n\t0xd5b0: 0x6c007620, 0xd5b3: 0x6c0af420,\n\t0xd5b4: 0x6c23f420, 0xd5b6: 0x6c23ee20, 0xd5b7: 0x6c10c220,\n\t0xd5b8: 0x6c23ec20,\n\t0xd5bf: 0x6c03b820,\n\t// Block 0x357, offset 0xd5c0\n\t0xd5c2: 0x6c23fa20,\n\t0xd5c6: 0x6c23f020, 0xd5c7: 0x6c23f220,\n\t0xd5c9: 0x6c23f820, 0xd5ca: 0x6c23f620, 0xd5cb: 0x6c126620,\n\t0xd5ce: 0x6c0cc020, 0xd5cf: 0x6c0cbe20,\n\t0xd5d1: 0x6c03ea20,\n\t0xd5d4: 0x6c23fc20,\n\t0xd5da: 0x6c23fe20,\n\t0xd5dd: 0x6c240020,\n\t0xd5e3: 0x6c240420,\n\t0xd5e5: 0x6c240220,\n\t0xd5eb: 0x6c012820,\n\t0xd5f1: 0x6c241420, 0xd5f2: 0x6c123020, 0xd5f3: 0x6c240820,\n\t0xd5f5: 0x6c240c20,\n\t0xd5f8: 0x6c241020, 0xd5f9: 0x6c0b4020,\n\t0xd5fc: 0x6c241220, 0xd5fd: 0x6c240e20, 0xd5fe: 0x6c091020,\n\t// Block 0x358, offset 0xd600\n\t0xd602: 0x6c240620, 0xd603: 0x6c240a20,\n\t0xd605: 0x6c12a020, 0xd607: 0x6c0a9a20,\n\t0xd60a: 0x6c241820,\n\t0xd60d: 0x6c241620,\n\t0xd612: 0x6c241a20,\n\t0xd614: 0x6c08dc20, 0xd615: 0x6c077620,\n\t0xd618: 0x6c101a20, 0xd619: 0x6c241c20, 0xd61b: 0x6c0f0620,\n\t0xd61e: 0x6c242020,\n\t0xd622: 0x6c160a20, 0xd623: 0x6c241e20,\n\t0xd629: 0x6c0d0e20,\n\t0xd630: 0x6c242a20, 0xd632: 0x6c242e20, 0xd633: 0x6c243020,\n\t0xd634: 0x6c0e5c20,\n\t0xd63a: 0x6c242c20,\n\t0xd63c: 0x6c242620, 0xd63e: 0x6c242220, 0xd63f: 0x6c242420,\n\t// Block 0x359, offset 0xd640\n\t0xd641: 0x6c242820,\n\t0xd649: 0x6c243620, 0xd64b: 0x6c243220,\n\t0xd64d: 0x6c243420,\n\t0xd65f: 0x6c243820,\n\t0xd660: 0x6c243c20, 0xd661: 0x6c243e20, 0xd662: 0x6c244020,\n\t0xd664: 0x6c244220, 0xd667: 0x6c243a20,\n\t0xd670: 0x6c244620,\n\t0xd674: 0x6c244420,\n\t0xd67b: 0x6c244820,\n\t// Block 0x35a, offset 0xd680\n\t0xd682: 0x6c165220,\n\t0xd686: 0x6c244e20, 0xd687: 0x6c244a20,\n\t0xd688: 0x6c244c20,\n\t0xd68c: 0x6c037420,\n\t0xd692: 0x6c154c20,\n\t0xd696: 0x6c136c20,\n\t0xd698: 0x6c245220,\n\t0xd69c: 0x6c245020,\n\t0xd6a1: 0x6c245420, 0xd6a2: 0x6c245620,\n\t0xd6a7: 0x6c245e20,\n\t0xd6a8: 0x6c245820, 0xd6a9: 0x6c245a20, 0xd6aa: 0x6c245c20,\n\t0xd6ac: 0x6c246020,\n\t0xd6b0: 0x6c246220, 0xd6b2: 0x6c246420,\n\t0xd6b6: 0x6c246620,\n\t0xd6b8: 0x6c246820, 0xd6ba: 0x6c11be20, 0xd6bb: 0x6c0fcc20,\n\t0xd6bc: 0x6c246a20, 0xd6bd: 0x6c118820, 0xd6be: 0x6c128420,\n\t// Block 0x35b, offset 0xd6c0\n\t0xd6c0: 0x6c246c20, 0xd6c3: 0x6c246e20,\n\t0xd6c4: 0x6c0f8020, 0xd6c6: 0x6c024220, 0xd6c7: 0x6c06e420,\n\t0xd6c8: 0x6c247020, 0xd6cb: 0x6c247220,\n\t0xd6ce: 0x6c247420,\n\t0xd6d0: 0x6c082620, 0xd6d3: 0x6c247820,\n\t0xd6d6: 0x6c247620,\n\t0xd6d9: 0x6c247a20, 0xd6da: 0x6c247c20,\n\t0xd6ee: 0x6c123220,\n\t0xd6f0: 0x6c247e20,\n\t0xd6f4: 0x6c248020, 0xd6f7: 0x6c317020,\n\t0xd6f8: 0x6c248220, 0xd6f9: 0x6c248420, 0xd6fa: 0x6c248620,\n\t0xd6ff: 0x6c083020,\n\t// Block 0x35c, offset 0xd700\n\t0xd702: 0x6c248820, 0xd703: 0x6c115020,\n\t0xd706: 0x6c145220,\n\t0xd708: 0x6c011820, 0xd70a: 0x6c012a20,\n\t0xd70d: 0x6c248a20,\n\t0xd712: 0x6c248e20,\n\t0xd716: 0x6c248c20, 0xd717: 0x6c100c20,\n\t0xd71b: 0x6c0bf220,\n\t0xd71c: 0x6c20e820, 0xd71e: 0x6c249020, 0xd71f: 0x6c14d220,\n\t0xd721: 0x6c249220, 0xd723: 0x6c033c20,\n\t0xd724: 0x6c120e20, 0xd725: 0x6c249420, 0xd727: 0x6c249620,\n\t0xd72a: 0x6c249820,\n\t0xd72e: 0x6c150820,\n\t0xd732: 0x6c14fa20,\n\t0xd734: 0x6c0eec20,\n\t0xd738: 0x6c0d1020, 0xd73b: 0x6c249c20,\n\t0xd73e: 0x6c0a1020,\n\t// Block 0x35d, offset 0xd740\n\t0xd741: 0x6c0a9c20,\n\t0xd744: 0x6c24a220, 0xd747: 0x6c24a020,\n\t0xd748: 0x6c249e20, 0xd749: 0x6c125a20, 0xd74b: 0x6c033e20,\n\t0xd74c: 0x6c05f220,\n\t0xd75b: 0x6c24ae20,\n\t0xd75e: 0x6c24a820, 0xd75f: 0x6c0b4220,\n\t0xd760: 0x6c14b420,\n\t0xd764: 0x6c24a620, 0xd765: 0x6c24aa20, 0xd766: 0x6c24ac20,\n\t0xd769: 0x6c24a420,\n\t0xd777: 0x6c24b020,\n\t0xd778: 0x6c24b220, 0xd77a: 0x6c0ece20,\n\t0xd77c: 0x6c037620,\n\t// Block 0x35e, offset 0xd780\n\t0xd780: 0x6c0e7e20,\n\t0xd787: 0x6c24b420,\n\t0xd79a: 0x6c24b620, 0xd79b: 0x6c24bc20,\n\t0xd7a1: 0x6c0b9220, 0xd7a3: 0x6c107020,\n\t0xd7a5: 0x6c24be20, 0xd7a6: 0x6c143a20,\n\t0xd7a8: 0x6c24b820, 0xd7ab: 0x6c24ba20,\n\t0xd7b9: 0x6c24c420,\n\t0xd7be: 0x6c24c220, 0xd7bf: 0x6c24c020,\n\t// Block 0x35f, offset 0xd7c0\n\t0xd7cb: 0x6c24c820,\n\t0xd7ce: 0x6c24c620,\n\t0xd7d1: 0x6c24ca20,\n\t0xd7de: 0x6c24ce20,\n\t0xd7e0: 0x6c24cc20,\n\t0xd7e5: 0x6c137220,\n\t0xd7ec: 0x6c09f820, 0xd7ed: 0x6c165420,\n\t0xd7f0: 0x6c24d020, 0xd7f3: 0x6c105620,\n\t0xd7f6: 0x6c24d220,\n\t0xd7f9: 0x6c24d420, 0xd7fb: 0x6c24dc20,\n\t0xd7fc: 0x6c24d820, 0xd7fd: 0x6c24da20, 0xd7ff: 0x6c24d620,\n\t// Block 0x360, offset 0xd800\n\t0xd807: 0x6c24de20,\n\t0xd80d: 0x6c24e020,\n\t0xd817: 0x6c24e220,\n\t0xd81a: 0x6c24e420, 0xd81b: 0x6c14be20,\n\t0xd81c: 0x6c24e620,\n\t0xd822: 0x6c153020, 0xd823: 0x6c24e820,\n\t0xd825: 0x6c0e5020, 0xd827: 0x6c117820,\n\t0xd829: 0x6c04fe20,\n\t0xd82d: 0x6c0e2a20, 0xd82e: 0x6c24ea20, 0xd82f: 0x6c049c20,\n\t0xd833: 0x6c0c2020,\n\t0xd83c: 0x6c24ec20,\n\t// Block 0x361, offset 0xd840\n\t0xd842: 0x6c079220,\n\t0xd84c: 0x6c24ee20,\n\t0xd852: 0x6c24f020,\n\t0xd854: 0x6c05ec20, 0xd855: 0x6c07c220,\n\t0xd860: 0x6c24f420,\n\t0xd865: 0x6c0fd820, 0xd866: 0x6c07c420, 0xd867: 0x6c040820,\n\t0xd872: 0x6c13dc20,\n\t0xd874: 0x6c113a20,\n\t0xd87a: 0x6c0fda20,\n\t0xd87f: 0x6c071420,\n\t// Block 0x362, offset 0xd880\n\t0xd885: 0x6c24f820,\n\t0xd89d: 0x6c0a9e20,\n\t0xd8ab: 0x6c162c20,\n\t0xd8ac: 0x6c06e620, 0xd8af: 0x6c05ee20,\n\t0xd8b2: 0x6c11a620,\n\t0xd8b4: 0x6c24fc20,\n\t0xd8bc: 0x6c250020,\n\t// Block 0x363, offset 0xd8c0\n\t0xd8c1: 0x6c067620,\n\t0xd8c6: 0x6c24fe20, 0xd8c7: 0x6c0f5c20,\n\t0xd8cc: 0x6c250420, 0xd8cd: 0x6c026220, 0xd8ce: 0x6c24fa20,\n\t0xd8d1: 0x6c123420, 0xd8d3: 0x6c00dc20,\n\t0xd8d5: 0x6c07f020, 0xd8d7: 0x6c172820,\n\t0xd8da: 0x6c250220,\n\t0xd8e3: 0x6c250620,\n\t0xd8e7: 0x6c136e20,\n\t0xd8e9: 0x6c0c3220, 0xd8ea: 0x6c250a20,\n\t0xd8ef: 0x6c250c20,\n\t0xd8f5: 0x6c250820,\n\t0xd8fa: 0x6c029020,\n\t0xd8fc: 0x6c251820, 0xd8fe: 0x6c251620,\n\t// Block 0x364, offset 0xd900\n\t0xd901: 0x6c08de20,\n\t0xd905: 0x6c251a20, 0xd906: 0x6c251020,\n\t0xd90a: 0x6c251c20, 0xd90b: 0x6c251220,\n\t0xd910: 0x6c121020, 0xd911: 0x6c250e20,\n\t0xd914: 0x6c251420,\n\t0xd91a: 0x6c252220,\n\t0xd927: 0x6c252020,\n\t0xd928: 0x6c145620,\n\t0xd92c: 0x6c251e20, 0xd92f: 0x6c009620,\n\t0xd934: 0x6c252620,\n\t0xd93d: 0x6c252420,\n\t// Block 0x365, offset 0xd940\n\t0xd941: 0x6c0aa020,\n\t0xd947: 0x6c252820,\n\t0xd94e: 0x6c0cc220,\n\t0xd951: 0x6c252c20, 0xd952: 0x6c252a20,\n\t0xd959: 0x6c252e20,\n\t0xd966: 0x6c24f220,\n\t0xd96a: 0x6c24f620, 0xd96b: 0x6c253220,\n\t0xd96c: 0x6c253020,\n\t0xd97a: 0x6c08e020,\n\t0xd97c: 0x6c169a20, 0xd97e: 0x6c093420,\n\t// Block 0x366, offset 0xd980\n\t0xd980: 0x6c253420, 0xd981: 0x6c055220,\n\t0xd987: 0x6c03ec20,\n\t0xd988: 0x6c03ba20, 0xd989: 0x6c089a20,\n\t0xd990: 0x6c157420, 0xd993: 0x6c254020,\n\t0xd995: 0x6c253e20, 0xd996: 0x6c0cc420, 0xd997: 0x6c253820,\n\t0xd99a: 0x6c253c20,\n\t0xd99d: 0x6c09e220, 0xd99e: 0x6c0b4420, 0xd99f: 0x6c253a20,\n\t0xd9a0: 0x6c253620, 0xd9a2: 0x6c10f820,\n\t0xd9a5: 0x6c0aa220,\n\t0xd9a8: 0x6c129420,\n\t0xd9ad: 0x6c07c620,\n\t0xd9b7: 0x6c101c20,\n\t0xd9ba: 0x6c254220,\n\t0xd9bf: 0x6c254420,\n\t// Block 0x367, offset 0xd9c0\n\t0xd9c0: 0x6c257020, 0xd9c1: 0x6c04d820,\n\t0xd9c4: 0x6c16fe20, 0xd9c5: 0x6c0ca620,\n\t0xd9ca: 0x6c254620,\n\t0xd9cd: 0x6c01dc20, 0xd9ce: 0x6c0f5e20, 0xd9cf: 0x6c131a20,\n\t0xd9dd: 0x6c254820,\n\t0xd9e6: 0x6c046020, 0xd9e7: 0x6c254a20,\n\t0xd9ea: 0x6c254e20,\n\t0xd9ee: 0x6c255020,\n\t0xd9f0: 0x6c10f620, 0xd9f3: 0x6c255220,\n\t0xd9f9: 0x6c255420, 0xd9fa: 0x6c255620,\n\t0xd9fd: 0x6c04da20, 0xd9fe: 0x6c01de20, 0xd9ff: 0x6c107220,\n\t// Block 0x368, offset 0xda00\n\t0xda00: 0x6c099c20, 0xda01: 0x6c089c20,\n\t0xda09: 0x6c255820, 0xda0b: 0x6c099e20,\n\t0xda11: 0x6c01cc20, 0xda12: 0x6c12a220,\n\t0xda15: 0x6c255a20,\n\t0xda18: 0x6c123620,\n\t0xda1f: 0x6c0cc620,\n\t0xda21: 0x6c256020, 0xda23: 0x6c256220,\n\t0xda24: 0x6c117620, 0xda26: 0x6c0b4620, 0xda27: 0x6c255c20,\n\t0xda29: 0x6c0e7620,\n\t0xda2c: 0x6c255e20,\n\t0xda30: 0x6c0aa420,\n\t0xda3b: 0x6c007820,\n\t// Block 0x369, offset 0xda40\n\t0xda40: 0x6c03be20,\n\t0xda48: 0x6c256420, 0xda4b: 0x6c0f6020,\n\t0xda4d: 0x6c256620, 0xda4e: 0x6c0c0e20,\n\t0xda54: 0x6c14aa20, 0xda57: 0x6c126220,\n\t0xda58: 0x6c256820, 0xda59: 0x6c256a20, 0xda5a: 0x6c0e5e20,\n\t0xda5c: 0x6c165620, 0xda5f: 0x6c256e20,\n\t0xda60: 0x6c256c20,\n\t0xda6e: 0x6c096e20,\n\t0xda71: 0x6c257220, 0xda72: 0x6c00a020,\n\t0xda77: 0x6c257820,\n\t0xda7b: 0x6c257420,\n\t0xda7c: 0x6c01e020, 0xda7d: 0x6c058020, 0xda7e: 0x6c257620, 0xda7f: 0x6c06e820,\n\t// Block 0x36a, offset 0xda80\n\t0xda80: 0x6c074020, 0xda82: 0x6c13a420, 0xda83: 0x6c257a20,\n\t0xda86: 0x6c143c20,\n\t0xda89: 0x6c257e20,\n\t0xda8d: 0x6c0c2220, 0xda8e: 0x6c011a20, 0xda8f: 0x6c01ac20,\n\t0xda90: 0x6c001820,\n\t0xda97: 0x6c257c20,\n\t0xdaa1: 0x6c258020, 0xdaa2: 0x6c258220, 0xdaa3: 0x6c0af620,\n\t0xdaa9: 0x6c258420, 0xdaab: 0x6c029220,\n\t0xdab0: 0x6c258820,\n\t0xdab4: 0x6c05b820, 0xdab6: 0x6c043820,\n\t0xdab9: 0x6c258a20, 0xdaba: 0x6c051220,\n\t0xdabd: 0x6c258c20, 0xdabf: 0x6c0c7820,\n\t// Block 0x36b, offset 0xdac0\n\t0xdac1: 0x6c108220, 0xdac3: 0x6c0c4020,\n\t0xdac4: 0x6c080220,\n\t0xdac8: 0x6c258e20,\n\t0xdad2: 0x6c0e7820, 0xdad3: 0x6c0d1220,\n\t0xdad5: 0x6c259220, 0xdad6: 0x6c259620, 0xdad7: 0x6c259020,\n\t0xdad8: 0x6c259420,\n\t0xdadf: 0x6c052820,\n\t0xdae9: 0x6c259820, 0xdaea: 0x6c053020,\n\t0xdaee: 0x6c043a20, 0xdaef: 0x6c15b020,\n\t0xdaf0: 0x6c259c20,\n\t0xdaf6: 0x6c259e20,\n\t0xdafa: 0x6c00d820,\n\t0xdaff: 0x6c25a420,\n\t// Block 0x36c, offset 0xdb00\n\t0xdb03: 0x6c02e020,\n\t0xdb04: 0x6c25a220, 0xdb05: 0x6c25a020, 0xdb07: 0x6c25a820,\n\t0xdb08: 0x6c259a20, 0xdb0a: 0x6c25aa20, 0xdb0b: 0x6c161a20,\n\t0xdb0d: 0x6c25ac20, 0xdb0f: 0x6c25ae20,\n\t0xdb12: 0x6c1ac220, 0xdb13: 0x6c25b220,\n\t0xdb15: 0x6c25b020,\n\t0xdb19: 0x6c25b420, 0xdb1a: 0x6c25b620,\n\t0xdb1c: 0x6c163220, 0xdb1d: 0x6c25b820, 0xdb1f: 0x6c2f4820,\n\t0xdb20: 0x6c0aa620, 0xdb21: 0x6c25ba20, 0xdb22: 0x6c25bc20, 0xdb23: 0x6c09fa20,\n\t0xdb25: 0x6c105820, 0xdb26: 0x6c25be20,\n\t0xdb2a: 0x6c0e0420,\n\t0xdb2d: 0x6c25c020, 0xdb2f: 0x6c0e2c20,\n\t0xdb30: 0x6c25c220,\n\t0xdb36: 0x6c047220,\n\t0xdb38: 0x6c182420, 0xdb39: 0x6c0e6e20, 0xdb3a: 0x6c08f620,\n\t0xdb3f: 0x6c034020,\n\t// Block 0x36d, offset 0xdb40\n\t0xdb42: 0x6c25c420,\n\t0xdb44: 0x6c25de20, 0xdb46: 0x6c25ca20,\n\t0xdb48: 0x6c043c20, 0xdb4a: 0x6c25c820, 0xdb4b: 0x6c25e220,\n\t0xdb4f: 0x6c25c620,\n\t0xdb51: 0x6c0aa820,\n\t0xdb58: 0x6c25ce20, 0xdb59: 0x6c25d020, 0xdb5b: 0x6c0f8220,\n\t0xdb5e: 0x6c25d220,\n\t0xdb60: 0x6c02b020,\n\t0xdb65: 0x6c0b7820, 0xdb66: 0x6c12e420,\n\t0xdb68: 0x6c25d620,\n\t0xdb6c: 0x6c0dc820,\n\t0xdb73: 0x6c25cc20,\n\t0xdb75: 0x6c25d420, 0xdb76: 0x6c25d820,\n\t0xdb79: 0x6c080e20,\n\t// Block 0x36e, offset 0xdb80\n\t0xdb85: 0x6c25e620, 0xdb86: 0x6c127820,\n\t0xdb88: 0x6c11ac20, 0xdb89: 0x6c101e20, 0xdb8b: 0x6c04dc20,\n\t0xdb8c: 0x6c25e420, 0xdb8d: 0x6c25e020, 0xdb8f: 0x6c11ca20,\n\t0xdb90: 0x6c25da20, 0xdb91: 0x6c0e7020, 0xdb92: 0x6c102220,\n\t0xdb94: 0x6c102020, 0xdb96: 0x6c080420,\n\t0xdb9d: 0x6c260a20,\n\t0xdba5: 0x6c25ea20, 0xdba7: 0x6c25ee20,\n\t0xdbac: 0x6c25f420, 0xdbae: 0x6c25f620,\n\t0xdbb0: 0x6c25f020, 0xdbb1: 0x6c25f220,\n\t0xdbb4: 0x6c25ec20, 0xdbb5: 0x6c25e820,\n\t0xdbba: 0x6c25dc20,\n\t// Block 0x36f, offset 0xdbc0\n\t0xdbc6: 0x6c137620, 0xdbc7: 0x6c01e220,\n\t0xdbcb: 0x6c260420,\n\t0xdbcd: 0x6c25fe20, 0xdbcf: 0x6c260820,\n\t0xdbd2: 0x6c260620,\n\t0xdbd4: 0x6c118a20, 0xdbd5: 0x6c149e20, 0xdbd7: 0x6c084a20,\n\t0xdbd8: 0x6c25fa20, 0xdbd9: 0x6c260c20, 0xdbda: 0x6c260220,\n\t0xdbdc: 0x6c260020, 0xdbdd: 0x6c25f820, 0xdbdf: 0x6c25fc20,\n\t0xdbe1: 0x6c034220,\n\t0xdbea: 0x6c0e2e20,\n\t0xdbed: 0x6c0c7a20,\n\t0xdbf1: 0x6c11a420,\n\t0xdbf4: 0x6c261620,\n\t0xdbf8: 0x6c11a820,\n\t// Block 0x370, offset 0xdc00\n\t0xdc00: 0x6c0c4220, 0xdc01: 0x6c261020,\n\t0xdc04: 0x6c11fe20, 0xdc06: 0x6c261820, 0xdc07: 0x6c137e20,\n\t0xdc09: 0x6c0e6a20, 0xdc0b: 0x6c260e20,\n\t0xdc0c: 0x6c261220, 0xdc0f: 0x6c261420,\n\t0xdc1d: 0x6c261a20,\n\t0xdc20: 0x6c091820,\n\t0xdc24: 0x6c107420, 0xdc25: 0x6c262420, 0xdc26: 0x6c262220,\n\t0xdc29: 0x6c261c20,\n\t0xdc2d: 0x6c16f020,\n\t0xdc33: 0x6c262e20,\n\t0xdc36: 0x6c263620, 0xdc37: 0x6c263020,\n\t// Block 0x371, offset 0xdc40\n\t0xdc40: 0x6c262820,\n\t0xdc47: 0x6c262a20,\n\t0xdc4d: 0x6c263420,\n\t0xdc51: 0x6c261e20, 0xdc52: 0x6c190c20, 0xdc53: 0x6c262c20,\n\t0xdc54: 0x6c262020, 0xdc57: 0x6c263220,\n\t0xdc5f: 0x6c263e20,\n\t0xdc61: 0x6c034420, 0xdc63: 0x6c263820,\n\t0xdc67: 0x6c263a20,\n\t0xdc6a: 0x6c263c20, 0xdc6b: 0x6c264220,\n\t0xdc77: 0x6c264020,\n\t0xdc78: 0x6c124c20,\n\t0xdc7d: 0x6c264420, 0xdc7e: 0x6c16c020, 0xdc7f: 0x6c13b220,\n\t// Block 0x372, offset 0xdc80\n\t0xdc80: 0x6c264e20, 0xdc83: 0x6c264820,\n\t0xdc8c: 0x6c264620, 0xdc8d: 0x6c0c2420, 0xdc8f: 0x6c264c20,\n\t0xdc90: 0x6c265020,\n\t0xdc94: 0x6c264a20, 0xdc96: 0x6c265820,\n\t0xdc98: 0x6c265220,\n\t0xdc9f: 0x6c265420,\n\t0xdca0: 0x6c262620,\n\t0xdca4: 0x6c265620, 0xdca5: 0x6c265a20,\n\t0xdcac: 0x6c265c20,\n\t0xdcb3: 0x6c136420,\n\t0xdcb5: 0x6c265e20,\n\t0xdcbe: 0x6c151420,\n\t// Block 0x373, offset 0xdcc0\n\t0xdcc1: 0x6c04c420, 0xdcc2: 0x6c053620, 0xdcc3: 0x6c266020,\n\t0xdcc9: 0x6c134020, 0xdccb: 0x6c0b9420,\n\t0xdccd: 0x6c14b020,\n\t0xdcd0: 0x6c266220, 0xdcd2: 0x6c162e20,\n\t0xdcd5: 0x6c118c20, 0xdcd7: 0x6c0cc820,\n\t0xdcd8: 0x6c110c20, 0xdcdb: 0x6c09e620,\n\t0xdcdf: 0x6c004020,\n\t0xdce1: 0x6c266c20, 0xdce2: 0x6c266820,\n\t0xdce4: 0x6c266420, 0xdce5: 0x6c02f220, 0xdce7: 0x6c0aaa20,\n\t0xdce8: 0x6c266e20, 0xdceb: 0x6c266a20,\n\t0xdced: 0x6c266620, 0xdcee: 0x6c267620,\n\t0xdcf1: 0x6c267420, 0xdcf2: 0x6c267220, 0xdcf3: 0x6c267020,\n\t0xdcf9: 0x6c267820,\n\t0xdcfd: 0x6c267a20, 0xdcfe: 0x6c0bf420,\n\t// Block 0x374, offset 0xdd00\n\t0xdd00: 0x6c267c20, 0xdd02: 0x6c268020,\n\t0xdd05: 0x6c267e20,\n\t0xdd0a: 0x6c064420,\n\t0xdd0e: 0x6c0cac20,\n\t0xdd12: 0x6c268420,\n\t0xdd16: 0x6c102420,\n\t0xdd18: 0x6c268220,\n\t0xdd1c: 0x6c268620, 0xdd1e: 0x6c134220, 0xdd1f: 0x6c0d1420,\n\t0xdd20: 0x6c06ea20, 0xdd22: 0x6c268820,\n\t0xdd27: 0x6c165820,\n\t0xdd2f: 0x6c268c20,\n\t0xdd32: 0x6c268e20,\n\t0xdd34: 0x6c269020, 0xdd36: 0x6c269220,\n\t0xdd38: 0x6c089e20, 0xdd3a: 0x6c269420, 0xdd3b: 0x6c058220,\n\t0xdd3e: 0x6c044020,\n\t// Block 0x375, offset 0xdd40\n\t0xdd40: 0x6c03c020, 0xdd42: 0x6c269820,\n\t0xdd44: 0x6c153620, 0xdd45: 0x6c06ec20, 0xdd46: 0x6c269620,\n\t0xdd4a: 0x6c269e20, 0xdd4b: 0x6c151c20,\n\t0xdd4d: 0x6c111c20,\n\t0xdd50: 0x6c128220,\n\t0xdd54: 0x6c0a1220, 0xdd55: 0x6c269c20, 0xdd57: 0x6c093620,\n\t0xdd58: 0x6c06ee20, 0xdd59: 0x6c08a020, 0xdd5a: 0x6c043e20, 0xdd5b: 0x6c134420,\n\t0xdd5c: 0x6c269a20,\n\t0xdd60: 0x6c0cca20, 0xdd61: 0x6c141820, 0xdd62: 0x6c080620,\n\t0xdd6b: 0x6c08a220,\n\t0xdd6c: 0x6c0f2a20, 0xdd6e: 0x6c26a420, 0xdd6f: 0x6c168620,\n\t0xdd70: 0x6c07ca20, 0xdd72: 0x6c26a620, 0xdd73: 0x6c0b4820,\n\t0xdd75: 0x6c26aa20,\n\t0xdd79: 0x6c0aac20, 0xdd7a: 0x6c077820,\n\t0xdd7f: 0x6c26a820,\n\t// Block 0x376, offset 0xdd80\n\t0xdd82: 0x6c09a020, 0xdd83: 0x6c061c20,\n\t0xdd84: 0x6c0ccc20, 0xdd85: 0x6c26a020, 0xdd86: 0x6c26ac20,\n\t0xdd8b: 0x6c26a220,\n\t0xdd8c: 0x6c058420, 0xdd8e: 0x6c26b220, 0xdd8f: 0x6c26ba20,\n\t0xdd90: 0x6c05ba20,\n\t0xdd96: 0x6c26b020,\n\t0xdd9b: 0x6c26c220,\n\t0xdd9e: 0x6c06f020,\n\t0xdda1: 0x6c15e620, 0xdda2: 0x6c003820, 0xdda3: 0x6c26bc20,\n\t0xdda6: 0x6c044220,\n\t0xdda8: 0x6c26b620,\n\t0xddae: 0x6c26b820,\n\t0xddb1: 0x6c102620, 0xddb2: 0x6c26b420, 0xddb3: 0x6c26ae20,\n\t0xddb5: 0x6c024420, 0xddb6: 0x6c0c4820,\n\t0xddb9: 0x6c05f020,\n\t0xddbd: 0x6c26c620,\n\t// Block 0x377, offset 0xddc0\n\t0xddc9: 0x6c26c020,\n\t0xddcf: 0x6c26c420,\n\t0xddd3: 0x6c26be20,\n\t0xddd9: 0x6c058620, 0xddda: 0x6c0d5e20, 0xdddb: 0x6c26c820,\n\t0xdddc: 0x6c0d1820, 0xdddf: 0x6c26e220,\n\t0xdde2: 0x6c26da20, 0xdde3: 0x6c26ce20,\n\t0xddeb: 0x6c26d620,\n\t0xddec: 0x6c098420, 0xdded: 0x6c007a20, 0xddee: 0x6c26cc20, 0xddef: 0x6c26dc20,\n\t0xddf0: 0x6c26e420, 0xddf1: 0x6c06f220, 0xddf2: 0x6c14fc20,\n\t0xddf4: 0x6c0f1c20, 0xddf5: 0x6c26d020,\n\t0xddf8: 0x6c26e020, 0xddfa: 0x6c26ca20, 0xddfb: 0x6c0e3020,\n\t0xddfd: 0x6c26d420, 0xddfe: 0x6c003a20, 0xddff: 0x6c14e420,\n\t// Block 0x378, offset 0xde00\n\t0xde07: 0x6c26d220,\n\t0xde0a: 0x6c04de20, 0xde0b: 0x6c123820,\n\t0xde0f: 0x6c0d1620,\n\t0xde11: 0x6c166820, 0xde12: 0x6c0a2a20,\n\t0xde15: 0x6c273220,\n\t0xde18: 0x6c26e620, 0xde1a: 0x6c0c7c20,\n\t0xde1c: 0x6c26de20, 0xde1d: 0x6c26e820, 0xde1e: 0x6c26ec20,\n\t0xde20: 0x6c0f6220, 0xde21: 0x6c26f220,\n\t0xde24: 0x6c26ea20,\n\t0xde28: 0x6c138020, 0xde29: 0x6c034620,\n\t0xde2c: 0x6c14e620, 0xde2f: 0x6c007c20,\n\t0xde32: 0x6c26f020,\n\t0xde34: 0x6c16c220,\n\t0xde3b: 0x6c26ee20,\n\t// Block 0x379, offset 0xde40\n\t0xde41: 0x6c015a20,\n\t0xde44: 0x6c10c020, 0xde45: 0x6c26f420,\n\t0xde49: 0x6c270220, 0xde4a: 0x6c26f620, 0xde4b: 0x6c270420,\n\t0xde52: 0x6c26fc20,\n\t0xde5b: 0x6c119a20,\n\t0xde5e: 0x6c092420, 0xde5f: 0x6c270020,\n\t0xde61: 0x6c26fa20, 0xde62: 0x6c270620, 0xde63: 0x6c26f820,\n\t0xde66: 0x6c09d420,\n\t0xde6b: 0x6c13de20,\n\t0xde6e: 0x6c09e420,\n\t0xde71: 0x6c26fe20, 0xde72: 0x6c271620,\n\t0xde75: 0x6c270e20, 0xde77: 0x6c271420,\n\t0xde79: 0x6c271020, 0xde7a: 0x6c271820, 0xde7b: 0x6c270c20,\n\t0xde7d: 0x6c26d820, 0xde7e: 0x6c0c2620,\n\t// Block 0x37a, offset 0xde80\n\t0xde81: 0x6c11f620, 0xde83: 0x6c271220,\n\t0xde86: 0x6c270820,\n\t0xde8a: 0x6c0c7e20, 0xde8b: 0x6c058820,\n\t0xde8d: 0x6c09a220,\n\t0xde94: 0x6c0b0e20, 0xde95: 0x6c0ca820, 0xde96: 0x6c271e20,\n\t0xde99: 0x6c272220, 0xde9a: 0x6c272420,\n\t0xde9d: 0x6c271c20, 0xde9e: 0x6c272020,\n\t0xdea6: 0x6c270a20, 0xdea7: 0x6c271a20,\n\t0xdea9: 0x6c272a20, 0xdeaa: 0x6c272820,\n\t0xdead: 0x6c148820,\n\t0xdeb0: 0x6c053a20,\n\t0xdeb9: 0x6c272620, 0xdebb: 0x6c272e20,\n\t0xdebc: 0x6c272c20, 0xdebd: 0x6c273420, 0xdebf: 0x6c273820,\n\t// Block 0x37b, offset 0xdec0\n\t0xdec2: 0x6c084c20, 0xdec3: 0x6c273020,\n\t0xdec8: 0x6c273a20, 0xdec9: 0x6c273c20,\n\t0xdecc: 0x6c273e20, 0xdece: 0x6c274a20, 0xdecf: 0x6c0fa220,\n\t0xded0: 0x6c274220, 0xded2: 0x6c274020, 0xded3: 0x6c274420,\n\t0xded4: 0x6c274620, 0xded6: 0x6c274820,\n\t0xdedb: 0x6c274c20,\n\t0xdedc: 0x6c274e20,\n\t// Block 0x37c, offset 0xdf00\n\t0xdf36: 0x6c034820,\n\t0xdf38: 0x6c275020, 0xdf3a: 0x6c275220,\n\t// Block 0x37d, offset 0xdf40\n\t0xdf45: 0x6c275420,\n\t0xdf4c: 0x6c275620, 0xdf4d: 0x6c275820, 0xdf4e: 0x6c275a20,\n\t0xdf50: 0x6c275c20, 0xdf51: 0x6c275e20,\n\t0xdf54: 0x6c276220, 0xdf55: 0x6c276020,\n\t0xdf58: 0x6c276420,\n\t0xdf5f: 0x6c276620,\n\t0xdf60: 0x6c276820,\n\t0xdf67: 0x6c276e20,\n\t0xdf68: 0x6c276a20, 0xdf69: 0x6c276c20, 0xdf6a: 0x6c07da20, 0xdf6b: 0x6c058a20,\n\t0xdf6e: 0x6c0e6020,\n\t0xdf70: 0x6c11c620, 0xdf72: 0x6c0a2c20,\n\t0xdf75: 0x6c113e20, 0xdf77: 0x6c123a20,\n\t0xdf78: 0x6c277020, 0xdf79: 0x6c1da420,\n\t// Block 0x37e, offset 0xdf80\n\t0xdf82: 0x6c277220, 0xdf83: 0x6c277620,\n\t0xdf85: 0x6c15d620, 0xdf86: 0x6c277420, 0xdf87: 0x6c277a20,\n\t0xdf88: 0x6c277820, 0xdf8a: 0x6c15b220,\n\t0xdf8c: 0x6c277c20, 0xdf8e: 0x6c125c20,\n\t0xdf94: 0x6c277e20,\n\t0xdf9a: 0x6c278420,\n\t0xdf9d: 0x6c278220, 0xdf9e: 0x6c278020,\n\t0xdfa3: 0x6c278620,\n\t0xdfa4: 0x6c054820,\n\t0xdfa8: 0x6c0c8020, 0xdfa9: 0x6c03ee20,\n\t0xdfae: 0x6c278e20, 0xdfaf: 0x6c278820,\n\t0xdfb2: 0x6c278a20,\n\t0xdfb6: 0x6c279020,\n\t0xdfb8: 0x6c279220, 0xdfb9: 0x6c278c20,\n\t0xdfbd: 0x6c00ce20,\n\t// Block 0x37f, offset 0xdfc0\n\t0xdfc1: 0x6c018620,\n\t0xdfc5: 0x6c279620, 0xdfc6: 0x6c279820,\n\t0xdfca: 0x6c279a20,\n\t0xdfcc: 0x6c15d020,\n\t0xdfd2: 0x6c09a420,\n\t0xdfd4: 0x6c279e20, 0xdfd5: 0x6c279c20,\n\t0xdfe0: 0x6c0b9620, 0xdfe1: 0x6c27a020,\n\t0xdfe6: 0x6c27a220,\n\t0xdfe9: 0x6c27a420, 0xdfeb: 0x6c037a20,\n\t0xdff0: 0x6c034a20, 0xdff3: 0x6c27a620,\n\t0xdff9: 0x6c27a820, 0xdffb: 0x6c144e20,\n\t0xdffc: 0x6c15d220,\n\t// Block 0x380, offset 0xe000\n\t0xe000: 0x6c15b420, 0xe001: 0x6c16f220, 0xe003: 0x6c06f620,\n\t0xe004: 0x6c27ae20, 0xe005: 0x6c093820, 0xe006: 0x6c27ac20,\n\t0xe00b: 0x6c27b020,\n\t0xe00c: 0x6c08e220,\n\t0xe010: 0x6c0d9a20, 0xe012: 0x6c27b220,\n\t0xe015: 0x6c06f420, 0xe017: 0x6c14fe20,\n\t0xe018: 0x6c27b420, 0xe019: 0x6c27b620,\n\t0xe01c: 0x6c27b820,\n\t0xe021: 0x6c27ba20,\n\t0xe028: 0x6c27bc20,\n\t0xe033: 0x6c08e420,\n\t0xe036: 0x6c152a20,\n\t0xe03b: 0x6c27c020,\n\t0xe03d: 0x6c0e3220, 0xe03f: 0x6c27be20,\n\t// Block 0x381, offset 0xe040\n\t0xe046: 0x6c27c420,\n\t0xe04a: 0x6c27c220,\n\t0xe052: 0x6c27c620,\n\t0xe056: 0x6c0bf620,\n\t0xe058: 0x6c27c820, 0xe05a: 0x6c27ca20,\n\t0xe05e: 0x6c134a20, 0xe05f: 0x6c27cc20,\n\t0xe061: 0x6c0d1a20, 0xe062: 0x6c27ce20,\n\t0xe068: 0x6c27d020,\n\t0xe06f: 0x6c16c420,\n\t0xe070: 0x6c27d620, 0xe072: 0x6c27d420, 0xe073: 0x6c27d220,\n\t0xe074: 0x6c0ed020, 0xe076: 0x6c27d820, 0xe077: 0x6c0b1020,\n\t0xe079: 0x6c27da20,\n\t0xe07d: 0x6c27dc20, 0xe07e: 0x6c16f420, 0xe07f: 0x6c27de20,\n\t// Block 0x382, offset 0xe080\n\t0xe084: 0x6c27e020, 0xe085: 0x6c27e420, 0xe086: 0x6c27e220, 0xe087: 0x6c11aa20,\n\t0xe089: 0x6c10da20, 0xe08b: 0x6c170020,\n\t0xe08c: 0x6c11b220,\n\t0xe093: 0x6c27e820,\n\t0xe096: 0x6c0aae20,\n\t0xe098: 0x6c127020, 0xe09a: 0x6c27ea20, 0xe09b: 0x6c27e620,\n\t0xe09d: 0x6c034c20,\n\t0xe0a1: 0x6c064820, 0xe0a2: 0x6c08a420,\n\t0xe0a5: 0x6c123c20,\n\t0xe0a9: 0x6c05f420, 0xe0aa: 0x6c141a20,\n\t0xe0ac: 0x6c27f020, 0xe0ad: 0x6c27ec20, 0xe0af: 0x6c06f820,\n\t0xe0b1: 0x6c06fa20, 0xe0b2: 0x6c009220,\n\t0xe0b4: 0x6c07e820,\n\t0xe0ba: 0x6c115620,\n\t// Block 0x383, offset 0xe0c0\n\t0xe0c3: 0x6c007e20,\n\t0xe0c4: 0x6c27fa20, 0xe0c6: 0x6c0e3420,\n\t0xe0cc: 0x6c115420, 0xe0ce: 0x6c0dae20,\n\t0xe0d6: 0x6c27fe20,\n\t0xe0d9: 0x6c27f620, 0xe0da: 0x6c27fc20, 0xe0db: 0x6c27f220,\n\t0xe0dd: 0x6c27f820, 0xe0de: 0x6c13e020,\n\t0xe0e1: 0x6c064a20,\n\t0xe0e4: 0x6c00ba20, 0xe0e5: 0x6c27f420,\n\t0xe0ef: 0x6c280220,\n\t0xe0f1: 0x6c280420,\n\t0xe0f4: 0x6c105a20,\n\t0xe0f8: 0x6c049e20,\n\t0xe0fc: 0x6c281a20, 0xe0fd: 0x6c111e20,\n\t// Block 0x384, offset 0xe100\n\t0xe102: 0x6c08a620,\n\t0xe105: 0x6c04a020, 0xe106: 0x6c0c1020, 0xe107: 0x6c171020,\n\t0xe108: 0x6c14ac20, 0xe109: 0x6c280020, 0xe10a: 0x6c0c2820,\n\t0xe11a: 0x6c041220, 0xe11b: 0x6c280620,\n\t0xe123: 0x6c280a20,\n\t0xe129: 0x6c280820,\n\t0xe12f: 0x6c280c20,\n\t0xe131: 0x6c0e0020, 0xe133: 0x6c112020,\n\t0xe139: 0x6c0ed220,\n\t0xe13e: 0x6c281420,\n\t// Block 0x385, offset 0xe140\n\t0xe146: 0x6c281220,\n\t0xe14b: 0x6c280e20,\n\t0xe14e: 0x6c0b6e20,\n\t0xe150: 0x6c12e620, 0xe151: 0x6c281820, 0xe153: 0x6c281620,\n\t0xe154: 0x6c06fc20, 0xe155: 0x6c172a20,\n\t0xe15f: 0x6c283820,\n\t0xe165: 0x6c282020, 0xe166: 0x6c282220,\n\t0xe16b: 0x6c097020,\n\t0xe16e: 0x6c281e20,\n\t0xe170: 0x6c074c20, 0xe171: 0x6c281c20,\n\t0xe174: 0x6c282420,\n\t0xe178: 0x6c0ed420, 0xe179: 0x6c131c20, 0xe17a: 0x6c0c8220,\n\t0xe17f: 0x6c0db020,\n\t// Block 0x386, offset 0xe180\n\t0xe180: 0x6c282c20, 0xe182: 0x6c282e20, 0xe183: 0x6c282620,\n\t0xe188: 0x6c282820, 0xe18a: 0x6c282a20,\n\t0xe18f: 0x6c06fe20,\n\t0xe193: 0x6c283a20,\n\t0xe195: 0x6c283220,\n\t0xe19a: 0x6c12e820,\n\t0xe19c: 0x6c146c20, 0xe19d: 0x6c126c20,\n\t0xe1a0: 0x6c283020, 0xe1a3: 0x6c283620,\n\t0xe1a4: 0x6c283420,\n\t0xe1a8: 0x6c141c20, 0xe1a9: 0x6c283c20,\n\t0xe1b0: 0x6c283e20, 0xe1b3: 0x6c0caa20,\n\t0xe1b5: 0x6c284020,\n\t0xe1b8: 0x6c284420, 0xe1ba: 0x6c284c20,\n\t0xe1bd: 0x6c284620, 0xe1be: 0x6c284220, 0xe1bf: 0x6c112220,\n\t// Block 0x387, offset 0xe1c0\n\t0xe1c0: 0x6c284820, 0xe1c2: 0x6c284a20,\n\t0xe1c6: 0x6c019c20,\n\t0xe1c8: 0x6c285820, 0xe1c9: 0x6c284e20,\n\t0xe1cd: 0x6c285020,\n\t0xe1d1: 0x6c285220, 0xe1d3: 0x6c0d3a20,\n\t0xe1d8: 0x6c285620, 0xe1d9: 0x6c285420, 0xe1da: 0x6c285a20,\n\t0xe1df: 0x6c285c20,\n\t0xe1e0: 0x6c285e20, 0xe1e3: 0x6c0b4a20,\n\t0xe1e5: 0x6c020a20, 0xe1e7: 0x6c286020,\n\t0xe1e8: 0x6c167620, 0xe1ea: 0x6c08e620,\n\t0xe1ed: 0x6c09a620,\n\t0xe1f3: 0x6c08a820,\n\t0xe1f4: 0x6c0e6220,\n\t0xe1fa: 0x6c286220, 0xe1fb: 0x6c286420,\n\t0xe1fc: 0x6c00de20, 0xe1fe: 0x6c286620,\n\t// Block 0x388, offset 0xe200\n\t0xe201: 0x6c286820, 0xe202: 0x6c286a20,\n\t0xe205: 0x6c286c20, 0xe207: 0x6c286e20,\n\t0xe208: 0x6c04a220, 0xe209: 0x6c1e9620, 0xe20a: 0x6c287020,\n\t0xe20c: 0x6c0c4a20, 0xe20d: 0x6c287220, 0xe20e: 0x6c092620,\n\t0xe210: 0x6c287420, 0xe212: 0x6c174a20,\n\t0xe216: 0x6c287620, 0xe217: 0x6c139420,\n\t0xe218: 0x6c036820, 0xe21b: 0x6c0c8420,\n\t0xe21c: 0x6c09fc20, 0xe21e: 0x6c12fe20, 0xe21f: 0x6c09a820,\n\t0xe229: 0x6c287820, 0xe22a: 0x6c070020, 0xe22b: 0x6c287a20,\n\t0xe22c: 0x6c11f820, 0xe22e: 0x6c289620,\n\t0xe233: 0x6c287e20,\n\t0xe235: 0x6c0d8a20, 0xe236: 0x6c118e20, 0xe237: 0x6c061e20,\n\t0xe238: 0x6c287c20, 0xe239: 0x6c0c8620,\n\t// Block 0x389, offset 0xe240\n\t0xe240: 0x6c288020,\n\t0xe247: 0x6c0f6420,\n\t0xe258: 0x6c288420, 0xe259: 0x6c288220, 0xe25a: 0x6c288820,\n\t0xe25d: 0x6c288620, 0xe25f: 0x6c288a20,\n\t0xe262: 0x6c288e20,\n\t0xe264: 0x6c288c20, 0xe266: 0x6c034e20,\n\t0xe268: 0x6c289020, 0xe26a: 0x6c289220, 0xe26b: 0x6c289420,\n\t0xe26e: 0x6c077a20, 0xe26f: 0x6c165a20,\n\t0xe271: 0x6c289820, 0xe272: 0x6c0b1220,\n\t0xe276: 0x6c015c20, 0xe277: 0x6c289a20,\n\t0xe278: 0x6c289c20,\n\t0xe27e: 0x6c289e20,\n\t// Block 0x38a, offset 0xe280\n\t0xe28b: 0x6c00a420,\n\t0xe28d: 0x6c28a020,\n\t0xe292: 0x6c28a220,\n\t0xe299: 0x6c12ea20,\n\t0xe29d: 0x6c091e20, 0xe29f: 0x6c28a620,\n\t0xe2a5: 0x6c024620, 0xe2a6: 0x6c002420,\n\t0xe2ab: 0x6c28a420,\n\t0xe2ac: 0x6c28aa20, 0xe2ad: 0x6c114020, 0xe2af: 0x6c0b4c20,\n\t0xe2b1: 0x6c01e420, 0xe2b3: 0x6c13e220,\n\t0xe2b8: 0x6c059e20, 0xe2b9: 0x6c04e020, 0xe2bb: 0x6c28a820,\n\t0xe2bd: 0x6c020c20,\n\t// Block 0x38b, offset 0xe2c0\n\t0xe2c5: 0x6c02f620,\n\t0xe2d1: 0x6c015e20, 0xe2d2: 0x6c28b220, 0xe2d3: 0x6c169c20,\n\t0xe2d4: 0x6c0db220, 0xe2d7: 0x6c12a420,\n\t0xe2d9: 0x6c28ca20, 0xe2db: 0x6c01e620,\n\t0xe2dc: 0x6c28c620, 0xe2de: 0x6c28c220, 0xe2df: 0x6c28b020,\n\t0xe2e1: 0x6c28ac20, 0xe2e3: 0x6c28ae20,\n\t0xe2e5: 0x6c095620, 0xe2e6: 0x6c050020, 0xe2e7: 0x6c0ea220,\n\t0xe2eb: 0x6c108a20,\n\t0xe2f1: 0x6c011e20, 0xe2f3: 0x6c28b620,\n\t0xe2f4: 0x6c28b420,\n\t0xe2f9: 0x6c28c020, 0xe2fa: 0x6c28b820, 0xe2fb: 0x6c28be20,\n\t// Block 0x38c, offset 0xe300\n\t0xe302: 0x6c14f020, 0xe303: 0x6c28bc20,\n\t0xe304: 0x6c01e820, 0xe305: 0x6c02ee20, 0xe306: 0x6c28c420,\n\t0xe309: 0x6c28c820,\n\t0xe30e: 0x6c058c20,\n\t0xe316: 0x6c28d020, 0xe317: 0x6c28e220,\n\t0xe318: 0x6c28e420,\n\t0xe31c: 0x6c001620,\n\t0xe323: 0x6c28f220,\n\t0xe328: 0x6c00a220, 0xe32b: 0x6c28e020,\n\t0xe32f: 0x6c28de20,\n\t0xe331: 0x6c28d420, 0xe332: 0x6c28d220,\n\t0xe334: 0x6c28ce20, 0xe335: 0x6c28cc20, 0xe336: 0x6c0e7a20,\n\t0xe338: 0x6c0dee20, 0xe339: 0x6c28d820,\n\t// Block 0x38d, offset 0xe340\n\t0xe340: 0x6c28d620,\n\t0xe345: 0x6c28dc20,\n\t0xe349: 0x6c0d1c20, 0xe34a: 0x6c058e20,\n\t0xe34f: 0x6c00fe20,\n\t0xe350: 0x6c28da20, 0xe352: 0x6c070220,\n\t0xe358: 0x6c0d1e20,\n\t0xe373: 0x6c28fe20,\n\t0xe375: 0x6c290020, 0xe377: 0x6c01ea20,\n\t0xe37b: 0x6c019420,\n\t0xe37c: 0x6c28fa20,\n\t// Block 0x38e, offset 0xe380\n\t0xe385: 0x6c28e620, 0xe387: 0x6c28f620,\n\t0xe389: 0x6c290420, 0xe38a: 0x6c28f820,\n\t0xe38e: 0x6c28f420,\n\t0xe393: 0x6c28ba20,\n\t0xe396: 0x6c28f020,\n\t0xe39a: 0x6c28e820,\n\t0xe39e: 0x6c035020, 0xe39f: 0x6c28ec20,\n\t0xe3a0: 0x6c290220, 0xe3a2: 0x6c28ee20,\n\t0xe3a8: 0x6c290620, 0xe3aa: 0x6c28ea20, 0xe3ab: 0x6c119c20,\n\t0xe3b1: 0x6c15de20,\n\t0xe3b5: 0x6c28fc20,\n\t0xe3bd: 0x6c292820,\n\t// Block 0x38f, offset 0xe3c0\n\t0xe3c1: 0x6c291820,\n\t0xe3c5: 0x6c0bba20,\n\t0xe3ca: 0x6c03f820,\n\t0xe3cc: 0x6c04e220, 0xe3ce: 0x6c290e20,\n\t0xe3d3: 0x6c01ee20,\n\t0xe3d6: 0x6c0ab020,\n\t0xe3d8: 0x6c291420,\n\t0xe3dc: 0x6c07cc20, 0xe3df: 0x6c0fce20,\n\t0xe3e0: 0x6c291e20,\n\t0xe3e9: 0x6c13b420, 0xe3eb: 0x6c290c20,\n\t0xe3ef: 0x6c01ec20,\n\t0xe3f0: 0x6c064c20, 0xe3f1: 0x6c126e20, 0xe3f2: 0x6c292020,\n\t0xe3f4: 0x6c290820, 0xe3f7: 0x6c291a20,\n\t0xe3fb: 0x6c292e20,\n\t0xe3fd: 0x6c291020,\n\t// Block 0x390, offset 0xe400\n\t0xe403: 0x6c291220,\n\t0xe404: 0x6c105c20, 0xe407: 0x6c291c20,\n\t0xe40b: 0x6c291620,\n\t0xe40c: 0x6c13e420, 0xe40d: 0x6c292220, 0xe40e: 0x6c008020,\n\t0xe413: 0x6c290a20,\n\t0xe420: 0x6c292620, 0xe422: 0x6c292420,\n\t0xe429: 0x6c117a20, 0xe42a: 0x6c293220,\n\t0xe42c: 0x6c294820,\n\t0xe431: 0x6c02f020,\n\t0xe435: 0x6c294e20,\n\t0xe438: 0x6c292a20,\n\t0xe43c: 0x6c293420, 0xe43d: 0x6c15e820,\n\t// Block 0x391, offset 0xe440\n\t0xe446: 0x6c294620,\n\t0xe449: 0x6c15b620,\n\t0xe44e: 0x6c161c20,\n\t0xe457: 0x6c0ea420,\n\t0xe45b: 0x6c02ca20,\n\t0xe461: 0x6c130020, 0xe462: 0x6c295220, 0xe463: 0x6c102a20,\n\t0xe466: 0x6c002220,\n\t0xe469: 0x6c294420, 0xe46b: 0x6c293c20,\n\t0xe46c: 0x6c0d2020, 0xe46d: 0x6c293020, 0xe46e: 0x6c294020, 0xe46f: 0x6c294a20,\n\t0xe471: 0x6c10fc20,\n\t0xe475: 0x6c001420, 0xe477: 0x6c293a20,\n\t0xe479: 0x6c294c20, 0xe47a: 0x6c130c20,\n\t// Block 0x392, offset 0xe480\n\t0xe482: 0x6c294220,\n\t0xe484: 0x6c293820,\n\t0xe48b: 0x6c0ab220,\n\t0xe490: 0x6c09aa20,\n\t0xe494: 0x6c08e820,\n\t0xe499: 0x6c150020,\n\t0xe49c: 0x6c12aa20, 0xe49f: 0x6c295820,\n\t0xe4a1: 0x6c296a20,\n\t0xe4ad: 0x6c293e20,\n\t0xe4b2: 0x6c02e220,\n\t0xe4b8: 0x6c0af820, 0xe4b9: 0x6c295420, 0xe4bb: 0x6c295e20,\n\t0xe4bc: 0x6c0d2220, 0xe4bf: 0x6c295620,\n\t// Block 0x393, offset 0xe4c0\n\t0xe4c1: 0x6c296420,\n\t0xe4c4: 0x6c0e7220, 0xe4c6: 0x6c296620,\n\t0xe4c9: 0x6c15b820, 0xe4ca: 0x6c295020, 0xe4cb: 0x6c026420,\n\t0xe4cd: 0x6c295c20,\n\t0xe4d0: 0x6c296220, 0xe4d1: 0x6c14a820,\n\t0xe4d6: 0x6c296820,\n\t0xe4d9: 0x6c295a20, 0xe4da: 0x6c296020,\n\t0xe4ec: 0x6c13e620, 0xe4ee: 0x6c16c620,\n\t0xe4f4: 0x6c297020,\n\t0xe4fc: 0x6c297e20, 0xe4ff: 0x6c296e20,\n\t// Block 0x394, offset 0xe500\n\t0xe500: 0x6c091620,\n\t0xe506: 0x6c292c20,\n\t0xe511: 0x6c137420, 0xe513: 0x6c149420,\n\t0xe514: 0x6c297c20, 0xe515: 0x6c297a20, 0xe517: 0x6c297220,\n\t0xe518: 0x6c297420, 0xe51a: 0x6c00e820,\n\t0xe51f: 0x6c297820,\n\t0xe521: 0x6c296c20,\n\t0xe526: 0x6c0f1a20,\n\t0xe52c: 0x6c297620, 0xe52d: 0x6c00bc20,\n\t0xe535: 0x6c0d3c20,\n\t0xe53d: 0x6c135e20,\n\t// Block 0x395, offset 0xe540\n\t0xe540: 0x6c298020, 0xe541: 0x6c298820, 0xe543: 0x6c121220,\n\t0xe548: 0x6c298620, 0xe549: 0x6c0ab420, 0xe54a: 0x6c092220, 0xe54b: 0x6c298c20,\n\t0xe54e: 0x6c04a420,\n\t0xe555: 0x6c298e20, 0xe557: 0x6c130e20,\n\t0xe558: 0x6c298420, 0xe55a: 0x6c293620,\n\t0xe563: 0x6c298220,\n\t0xe568: 0x6c172220, 0xe569: 0x6c102c20, 0xe56a: 0x6c130220,\n\t0xe56d: 0x6c299c20,\n\t0xe577: 0x6c29a820,\n\t0xe57e: 0x6c29aa20,\n\t// Block 0x396, offset 0xe580\n\t0xe580: 0x6c299020,\n\t0xe584: 0x6c119020, 0xe587: 0x6c29a420,\n\t0xe588: 0x6c299420, 0xe58a: 0x6c299820,\n\t0xe590: 0x6c29ac20, 0xe591: 0x6c299620,\n\t0xe594: 0x6c299e20, 0xe597: 0x6c016020,\n\t0xe599: 0x6c10b220, 0xe59b: 0x6c29a020,\n\t0xe59c: 0x6c29a620,\n\t0xe5a4: 0x6c299220, 0xe5a6: 0x6c0c8820,\n\t0xe5a8: 0x6c299a20, 0xe5a9: 0x6c082220, 0xe5aa: 0x6c0b4e20, 0xe5ab: 0x6c054420,\n\t0xe5ac: 0x6c153820, 0xe5ae: 0x6c154220, 0xe5af: 0x6c0a3020,\n\t0xe5b9: 0x6c29b420, 0xe5ba: 0x6c29b020,\n\t// Block 0x397, offset 0xe5c0\n\t0xe5c1: 0x6c172020,\n\t0xe5c9: 0x6c29ae20,\n\t0xe5cd: 0x6c15f620, 0xe5cf: 0x6c29b220,\n\t0xe5d0: 0x6c29b620,\n\t0xe5d5: 0x6c29b820,\n\t0xe5dc: 0x6c29be20, 0xe5dd: 0x6c29ba20,\n\t0xe5e4: 0x6c102e20, 0xe5e5: 0x6c29bc20,\n\t0xe5e9: 0x6c11fa20, 0xe5ea: 0x6c29a220,\n\t0xe5f7: 0x6c0a3220,\n\t0xe5f9: 0x6c29c020, 0xe5fa: 0x6c29ca20, 0xe5fb: 0x6c0d2420,\n\t0xe5fe: 0x6c29c820,\n\t// Block 0x398, offset 0xe600\n\t0xe602: 0x6c298a20,\n\t0xe606: 0x6c29cc20, 0xe607: 0x6c0cce20,\n\t0xe60a: 0x6c29c220, 0xe60b: 0x6c29c620,\n\t0xe613: 0x6c29c420,\n\t0xe616: 0x6c20d820, 0xe617: 0x6c20ba20,\n\t0xe61a: 0x6c29d020,\n\t0xe622: 0x6c29ce20,\n\t0xe62d: 0x6c15f820, 0xe62f: 0x6c249a20,\n\t0xe630: 0x6c29d220,\n\t0xe63f: 0x6c29d420,\n\t// Block 0x399, offset 0xe640\n\t0xe64d: 0x6c29d620, 0xe64e: 0x6c064e20,\n\t0xe650: 0x6c041420,\n\t0xe654: 0x6c29da20, 0xe655: 0x6c186020,\n\t0xe65a: 0x6c045620,\n\t0xe65c: 0x6c163c20, 0xe65e: 0x6c050e20, 0xe65f: 0x6c29dc20,\n\t0xe667: 0x6c29de20,\n\t0xe66b: 0x6c0e9020,\n\t0xe671: 0x6c29e020,\n\t0xe679: 0x6c10dc20, 0xe67b: 0x6c003420,\n\t// Block 0x39a, offset 0xe680\n\t0xe68a: 0x6c01fe20, 0xe68b: 0x6c29ea20,\n\t0xe68c: 0x6c29ec20,\n\t0xe693: 0x6c29e220,\n\t0xe695: 0x6c084e20,\n\t0xe6a3: 0x6c29e420,\n\t0xe6a4: 0x6c112820,\n\t0xe6a9: 0x6c29e620, 0xe6aa: 0x6c29e820, 0xe6ab: 0x6c29fc20,\n\t0xe6af: 0x6c29f020,\n\t0xe6b0: 0x6c29f620,\n\t0xe6b6: 0x6c29ee20,\n\t// Block 0x39b, offset 0xe6c0\n\t0xe6c4: 0x6c29f220, 0xe6c6: 0x6c29f420, 0xe6c7: 0x6c094020,\n\t0xe6c9: 0x6c29f820, 0xe6cb: 0x6c0e3620,\n\t0xe6cd: 0x6c059020, 0xe6ce: 0x6c027820,\n\t0xe6d4: 0x6c29fe20,\n\t0xe6d9: 0x6c027220, 0xe6db: 0x6c2a0820,\n\t0xe6de: 0x6c2a0020, 0xe6df: 0x6c2a0620,\n\t0xe6e4: 0x6c11d420,\n\t0xe6e9: 0x6c2a0220,\n\t0xe6ec: 0x6c2a0420, 0xe6ed: 0x6c12ac20, 0xe6ee: 0x6c121420, 0xe6ef: 0x6c2a0a20,\n\t0xe6f8: 0x6c0df220, 0xe6f9: 0x6c2a1e20, 0xe6fb: 0x6c2a1620,\n\t0xe6fe: 0x6c020e20,\n\t// Block 0x39c, offset 0xe700\n\t0xe700: 0x6c2a1220, 0xe702: 0x6c13e820, 0xe703: 0x6c2a1420,\n\t0xe706: 0x6c2a0e20,\n\t0xe708: 0x6c2a1020, 0xe709: 0x6c2a1a20, 0xe70a: 0x6c2a2020,\n\t0xe70d: 0x6c2a1c20,\n\t0xe711: 0x6c2a1820, 0xe712: 0x6c2a0c20,\n\t0xe718: 0x6c0e6420, 0xe71a: 0x6c2a2e20,\n\t0xe71c: 0x6c14a420,\n\t0xe725: 0x6c2a2a20,\n\t0xe729: 0x6c2a2c20,\n\t0xe734: 0x6c2a2220, 0xe737: 0x6c2a2620,\n\t0xe73b: 0x6c2a2820,\n\t0xe73f: 0x6c2a2420,\n\t// Block 0x39d, offset 0xe740\n\t0xe749: 0x6c0c4c20, 0xe74b: 0x6c16f620,\n\t0xe74c: 0x6c2a3620, 0xe74e: 0x6c2a3820,\n\t0xe753: 0x6c2a4420,\n\t0xe755: 0x6c0b1820, 0xe757: 0x6c2a3c20,\n\t0xe759: 0x6c2a4220,\n\t0xe75f: 0x6c2a3220,\n\t0xe760: 0x6c2a3020, 0xe763: 0x6c2a4620,\n\t0xe766: 0x6c01f020,\n\t0xe768: 0x6c2a3e20, 0xe76a: 0x6c2a4820,\n\t0xe76e: 0x6c2a4020,\n\t0xe774: 0x6c2a3a20, 0xe776: 0x6c0ed620,\n\t0xe778: 0x6c2a3420,\n\t0xe77f: 0x6c117420,\n\t// Block 0x39e, offset 0xe780\n\t0xe782: 0x6c2a5020,\n\t0xe78d: 0x6c158220,\n\t0xe79f: 0x6c2a4e20,\n\t0xe7a2: 0x6c2a4c20,\n\t0xe7ab: 0x6c2a5e20,\n\t0xe7af: 0x6c2a5220,\n\t0xe7b3: 0x6c2a6220,\n\t0xe7ba: 0x6c15d820, 0xe7bb: 0x6c2a6820,\n\t0xe7bd: 0x6c2a5620,\n\t// Block 0x39f, offset 0xe7c0\n\t0xe7c0: 0x6c2a5820,\n\t0xe7c4: 0x6c2a6020, 0xe7c6: 0x6c2a6620, 0xe7c7: 0x6c2a6420,\n\t0xe7cb: 0x6c2a5420,\n\t0xe7d0: 0x6c2a5a20, 0xe7d2: 0x6c2a7c20,\n\t0xe7e0: 0x6c2a6e20,\n\t0xe7ef: 0x6c2a6a20,\n\t0xe7f2: 0x6c2a6c20,\n\t0xe7f6: 0x6c2a7620, 0xe7f7: 0x6c2a7820,\n\t0xe7f9: 0x6c024820, 0xe7fb: 0x6c03f020,\n\t0xe7fe: 0x6c2a7420,\n\t// Block 0x3a0, offset 0xe800\n\t0xe805: 0x6c2a4a20,\n\t0xe80d: 0x6c2a7220, 0xe80e: 0x6c2a7a20, 0xe80f: 0x6c2a7020,\n\t0xe811: 0x6c2a7e20,\n\t0xe815: 0x6c2a8220, 0xe816: 0x6c2a8020,\n\t0xe821: 0x6c2a8620, 0xe822: 0x6c2a8420, 0xe823: 0x6c29fa20,\n\t0xe827: 0x6c2a8e20,\n\t0xe831: 0x6c2a8820,\n\t0xe836: 0x6c2a8a20,\n\t0xe839: 0x6c2a8c20, 0xe83b: 0x6c2a9020,\n\t// Block 0x3a1, offset 0xe840\n\t0xe840: 0x6c05bc20, 0xe842: 0x6c2a9420,\n\t0xe844: 0x6c2a9220, 0xe846: 0x6c09ac20,\n\t0xe84c: 0x6c070420, 0xe84d: 0x6c218020,\n\t0xe852: 0x6c2a9620, 0xe853: 0x6c09ee20,\n\t0xe857: 0x6c026620,\n\t0xe859: 0x6c2a9820, 0xe85b: 0x6c012020,\n\t0xe85d: 0x6c0ab620, 0xe85e: 0x6c2a9a20,\n\t0xe861: 0x6c070620, 0xe862: 0x6c2a9c20, 0xe863: 0x6c008220,\n\t0xe868: 0x6c129620, 0xe86b: 0x6c2a9e20,\n\t0xe870: 0x6c0b9820, 0xe872: 0x6c2aac20,\n\t0xe875: 0x6c2aa620, 0xe877: 0x6c0e9220,\n\t0xe87d: 0x6c2aa820, 0xe87e: 0x6c2aa220, 0xe87f: 0x6c04e420,\n\t// Block 0x3a2, offset 0xe880\n\t0xe881: 0x6c2aa020, 0xe882: 0x6c2aae20,\n\t0xe888: 0x6c055020, 0xe88b: 0x6c0db420,\n\t0xe88d: 0x6c2aba20,\n\t0xe892: 0x6c2ab220,\n\t0xe896: 0x6c0d6220, 0xe897: 0x6c2ab020,\n\t0xe899: 0x6c2ab620,\n\t0xe89e: 0x6c2aa420,\n\t0xe8a2: 0x6c2ab820,\n\t0xe8a4: 0x6c2abc20,\n\t0xe8ab: 0x6c123e20,\n\t0xe8ae: 0x6c2ab420,\n\t0xe8b0: 0x6c2abe20, 0xe8b1: 0x6c2ac220,\n\t0xe8b4: 0x6c064620, 0xe8b5: 0x6c2aaa20, 0xe8b7: 0x6c004220,\n\t0xe8bf: 0x6c2ac020,\n\t// Block 0x3a3, offset 0xe8c0\n\t0xe8c1: 0x6c07ce20, 0xe8c2: 0x6c16b420, 0xe8c3: 0x6c2ac420,\n\t0xe8c4: 0x6c2ac620, 0xe8c5: 0x6c0d2620,\n\t0xe8cf: 0x6c160c20,\n\t0xe8d4: 0x6c2ac820, 0xe8d5: 0x6c157620,\n\t0xe8d8: 0x6c2aca20, 0xe8d9: 0x6c2acc20,\n\t0xe8dc: 0x6c13a020, 0xe8dd: 0x6c2ace20, 0xe8df: 0x6c079820,\n\t0xe8e1: 0x6c160e20,\n\t0xe8e8: 0x6c2ad820,\n\t0xe8f2: 0x6c2ada20, 0xe8f3: 0x6c0ab820,\n\t0xe8f4: 0x6c2ad620,\n\t0xe8f8: 0x6c15da20, 0xe8f9: 0x6c2ad020,\n\t0xe8fc: 0x6c2ad420, 0xe8fd: 0x6c0bfa20, 0xe8fe: 0x6c0bc020,\n\t// Block 0x3a4, offset 0xe900\n\t0xe902: 0x6c2ad220,\n\t0xe904: 0x6c2adc20, 0xe907: 0x6c131e20,\n\t0xe90a: 0x6c2ae020,\n\t0xe90c: 0x6c2ade20,\n\t0xe910: 0x6c02cc20, 0xe912: 0x6c13ea20, 0xe913: 0x6c2ae220,\n\t0xe91d: 0x6c2afa20, 0xe91e: 0x6c2ae620,\n\t0xe925: 0x6c2ae820,\n\t0xe92a: 0x6c2aea20, 0xe92b: 0x6c2aec20,\n\t0xe936: 0x6c2af420,\n\t0xe938: 0x6c2af620, 0xe93b: 0x6c2af220,\n\t// Block 0x3a5, offset 0xe940\n\t0xe941: 0x6c2aee20, 0xe943: 0x6c2ae420,\n\t0xe944: 0x6c2af020,\n\t0xe94c: 0x6c2af820, 0xe94d: 0x6c2ed820,\n\t0xe956: 0x6c018820,\n\t0xe95e: 0x6c2afe20, 0xe95f: 0x6c04e620,\n\t0xe960: 0x6c2afc20,\n\t0xe964: 0x6c2b0220, 0xe966: 0x6c2b0020,\n\t0xe96a: 0x6c2b0620,\n\t0xe96d: 0x6c2b0420, 0xe96f: 0x6c2b0820,\n\t0xe972: 0x6c09ae20,\n\t0xe974: 0x6c2b0a20, 0xe977: 0x6c2b0c20,\n\t0xe97e: 0x6c2b0e20, 0xe97f: 0x6c0bfc20,\n\t// Block 0x3a6, offset 0xe980\n\t0xe981: 0x6c15ba20, 0xe983: 0x6c2b1020,\n\t0xe986: 0x6c132020, 0xe987: 0x6c113020,\n\t0xe988: 0x6c2b1220, 0xe98a: 0x6c2b1420, 0xe98b: 0x6c05f620,\n\t0xe98f: 0x6c03c420,\n\t0xe993: 0x6c2b1620,\n\t0xe996: 0x6c08aa20, 0xe997: 0x6c112620,\n\t0xe998: 0x6c2b1820, 0xe99a: 0x6c029420,\n\t0xe9a1: 0x6c2b1a20,\n\t0xe9a6: 0x6c2b1e20, 0xe9a7: 0x6c15fa20,\n\t0xe9a9: 0x6c2b1c20, 0xe9aa: 0x6c0b5020,\n\t0xe9ac: 0x6c2b2020, 0xe9af: 0x6c2b2220,\n\t0xe9b2: 0x6c2b2420, 0xe9b3: 0x6c035220,\n\t0xe9ba: 0x6c2b2620,\n\t0xe9bd: 0x6c2b2820, 0xe9bf: 0x6c2b2a20,\n\t// Block 0x3a7, offset 0xe9c0\n\t0xe9c0: 0x6c2b2c20,\n\t0xe9d2: 0x6c029620,\n\t0xe9da: 0x6c2b2e20,\n\t0xe9dc: 0x6c2b3020, 0xe9dd: 0x6c2b3220,\n\t0xe9e3: 0x6c021c20,\n\t0xe9e6: 0x6c0b1420, 0xe9e7: 0x6c2b3420,\n\t0xe9f4: 0x6c2b3620,\n\t0xe9f8: 0x6c2b3820,\n\t// Block 0x3a8, offset 0xea00\n\t0xea00: 0x6c062020, 0xea02: 0x6c0f6620, 0xea03: 0x6c2b3a20,\n\t0xea08: 0x6c059220, 0xea0a: 0x6c0b7020,\n\t0xea0c: 0x6c2b4020, 0xea0e: 0x6c103020,\n\t0xea10: 0x6c2b3e20, 0xea13: 0x6c054620,\n\t0xea16: 0x6c2b3c20, 0xea17: 0x6c0de620,\n\t0xea18: 0x6c03c620, 0xea1b: 0x6c2b4220,\n\t0xea1d: 0x6c2b4420, 0xea1f: 0x6c0aba20,\n\t0xea23: 0x6c05be20,\n\t0xea25: 0x6c2b4620,\n\t0xea2a: 0x6c13ec20,\n\t0xea2d: 0x6c0c3e20,\n\t0xea31: 0x6c045820, 0xea33: 0x6c153a20,\n\t0xea34: 0x6c0cd020, 0xea36: 0x6c2b4820,\n\t0xea3a: 0x6c0b5220, 0xea3b: 0x6c0e9420,\n\t0xea3c: 0x6c0abc20,\n\t// Block 0x3a9, offset 0xea40\n\t0xea41: 0x6c2b4a20,\n\t0xea46: 0x6c2b5020,\n\t0xea48: 0x6c2b5220,\n\t0xea50: 0x6c079420, 0xea51: 0x6c0d7c20, 0xea52: 0x6c2b4e20,\n\t0xea54: 0x6c0abe20, 0xea55: 0x6c129820,\n\t0xea5b: 0x6c2b4c20,\n\t0xea5e: 0x6c08ac20,\n\t0xea60: 0x6c012220, 0xea62: 0x6c2b5a20, 0xea63: 0x6c059420,\n\t0xea66: 0x6c08b020,\n\t0xea69: 0x6c08ae20, 0xea6b: 0x6c171e20,\n\t0xea6c: 0x6c2b5820, 0xea6d: 0x6c2b5620, 0xea6e: 0x6c0c8a20,\n\t0xea70: 0x6c040620, 0xea71: 0x6c170a20, 0xea72: 0x6c026820, 0xea73: 0x6c0ac020,\n\t0xea7c: 0x6c2b5420,\n\t// Block 0x3aa, offset 0xea80\n\t0xea82: 0x6c2b5e20,\n\t0xea84: 0x6c2b6020, 0xea85: 0x6c2b5c20, 0xea87: 0x6c065020,\n\t0xea89: 0x6c158c20,\n\t0xea8c: 0x6c08b220, 0xea8d: 0x6c10f220,\n\t0xea91: 0x6c2b6620, 0xea93: 0x6c0c0020,\n\t0xea95: 0x6c0e3820,\n\t0xea98: 0x6c157820, 0xea9a: 0x6c2b6c20,\n\t0xea9e: 0x6c067820,\n\t0xeaa0: 0x6c0bfe20, 0xeaa1: 0x6c2b6420, 0xeaa3: 0x6c2b6e20,\n\t0xeaa4: 0x6c067a20, 0xeaa5: 0x6c2b6820, 0xeaa6: 0x6c2b6a20,\n\t0xeaa8: 0x6c2b6220,\n\t0xeaac: 0x6c0c4420, 0xeaad: 0x6c107a20,\n\t0xeab0: 0x6c0e1220, 0xeab2: 0x6c01f220,\n\t0xeab9: 0x6c124020,\n\t0xeabc: 0x6c03f220, 0xeabf: 0x6c0ed820,\n\t// Block 0x3ab, offset 0xeac0\n\t0xeac2: 0x6c2b7420,\n\t0xeac4: 0x6c2b7020, 0xeac7: 0x6c0e4c20,\n\t0xeacb: 0x6c0c0220,\n\t0xeacc: 0x6c035420, 0xeacd: 0x6c2b7220, 0xeacf: 0x6c0b7a20,\n\t0xead2: 0x6c165c20,\n\t0xead6: 0x6c170420,\n\t0xeada: 0x6c2b7620, 0xeadb: 0x6c2b8c20,\n\t0xeadc: 0x6c0eda20, 0xeade: 0x6c2b8a20,\n\t0xeae0: 0x6c2b8420, 0xeae1: 0x6c2b9420, 0xeae2: 0x6c2b8620,\n\t0xeae4: 0x6c2b7e20, 0xeae6: 0x6c0f6820, 0xeae7: 0x6c2b7c20,\n\t0xeaeb: 0x6c2b7820,\n\t0xeaed: 0x6c154e20, 0xeaee: 0x6c08b420,\n\t0xeaf1: 0x6c2b8020, 0xeaf3: 0x6c2b7a20,\n\t0xeaf7: 0x6c2b8820,\n\t0xeaf8: 0x6c0a3420, 0xeafa: 0x6c062220,\n\t0xeafe: 0x6c0dec20,\n\t// Block 0x3ac, offset 0xeb00\n\t0xeb00: 0x6c141e20, 0xeb01: 0x6c013020, 0xeb02: 0x6c008420,\n\t0xeb04: 0x6c103220, 0xeb07: 0x6c2b9020,\n\t0xeb0c: 0x6c2b8e20, 0xeb0e: 0x6c10b420,\n\t0xeb10: 0x6c2b9820,\n\t0xeb14: 0x6c2b8220, 0xeb16: 0x6c2b9620, 0xeb17: 0x6c2b9a20,\n\t0xeb19: 0x6c05f820, 0xeb1a: 0x6c2b9220, 0xeb1b: 0x6c070820,\n\t0xeb1d: 0x6c093a20,\n\t0xeb20: 0x6c2b9c20, 0xeb21: 0x6c15bc20,\n\t0xeb26: 0x6c2ba220,\n\t0xeb28: 0x6c2ba820, 0xeb2b: 0x6c2ba420,\n\t0xeb2c: 0x6c128620,\n\t0xeb33: 0x6c2b9e20,\n\t0xeb39: 0x6c04e820,\n\t0xeb3e: 0x6c2ba620,\n\t// Block 0x3ad, offset 0xeb40\n\t0xeb41: 0x6c2baa20,\n\t0xeb49: 0x6c2bb220,\n\t0xeb4c: 0x6c2bac20, 0xeb4e: 0x6c2bb020, 0xeb4f: 0x6c2bae20,\n\t0xeb56: 0x6c2bb420,\n\t0xeb58: 0x6c08f220, 0xeb5a: 0x6c2bb820, 0xeb5b: 0x6c2bb620,\n\t0xeb5c: 0x6c12ec20, 0xeb5f: 0x6c2bbc20,\n\t0xeb66: 0x6c059620,\n\t0xeb6b: 0x6c2bba20,\n\t0xeb6c: 0x6c2bbe20, 0xeb6f: 0x6c2bc020,\n\t0xeb70: 0x6c03f420, 0xeb71: 0x6c279420, 0xeb72: 0x6c0afa20,\n\t0xeb74: 0x6c2bc220, 0xeb77: 0x6c067c20,\n\t0xeb7d: 0x6c2bc420,\n\t// Block 0x3ae, offset 0xeb80\n\t0xeb80: 0x6c2bc620, 0xeb83: 0x6c085020,\n\t0xeb8a: 0x6c1ede20,\n\t0xeb8c: 0x6c2bc820, 0xeb8e: 0x6c2bca20,\n\t0xeb90: 0x6c09b020, 0xeb92: 0x6c2bcc20, 0xeb93: 0x6c2bce20,\n\t0xeb96: 0x6c2bd020,\n\t0xeb99: 0x6c2bd220, 0xeb9a: 0x6c2bd420,\n\t// Block 0x3af, offset 0xebc0\n\t0xebf7: 0x6c0e0a20,\n\t0xebfa: 0x6c2bd620,\n\t0xebff: 0x6c2bda20,\n\t// Block 0x3b0, offset 0xec00\n\t0xec01: 0x6c2bd820,\n\t0xec06: 0x6c103420,\n\t0xec08: 0x6c2bdc20, 0xec0a: 0x6c13ee20,\n\t0xec0c: 0x6c2bde20, 0xec0e: 0x6c2be020,\n\t0xec10: 0x6c2be220,\n\t0xec15: 0x6c2be420,\n\t0xec1a: 0x6c109c20,\n\t0xec21: 0x6c0ac220, 0xec22: 0x6c2be620,\n\t0xec2a: 0x6c073220, 0xec2b: 0x6c174620,\n\t0xec2c: 0x6c2be820,\n\t0xec38: 0x6c2bea20, 0xec39: 0x6c129a20, 0xec3a: 0x6c2bec20,\n\t0xec3c: 0x6c2bfc20,\n\t// Block 0x3b1, offset 0xec40\n\t0xec42: 0x6c2bee20,\n\t0xec45: 0x6c2bf220,\n\t0xec49: 0x6c2bf020, 0xec4a: 0x6c2bf420,\n\t0xec4c: 0x6c142020, 0xec4d: 0x6c2bf620, 0xec4e: 0x6c2bf820,\n\t0xec54: 0x6c2bfa20,\n\t0xec58: 0x6c2bfe20,\n\t0xec5d: 0x6c024e20, 0xec5e: 0x6c0f3e20,\n\t0xec60: 0x6c12ee20, 0xec61: 0x6c07dc20, 0xec62: 0x6c070a20,\n\t0xec67: 0x6c12ba20,\n\t0xec68: 0x6c01f620, 0xec69: 0x6c11fc20, 0xec6a: 0x6c2c0420, 0xec6b: 0x6c035620,\n\t0xec6c: 0x6c0c2a20, 0xec6d: 0x6c2c0220, 0xec6e: 0x6c2c0c20, 0xec6f: 0x6c0ea620,\n\t0xec70: 0x6c151620, 0xec72: 0x6c2c0820, 0xec73: 0x6c2c0a20,\n\t0xec74: 0x6c03c820, 0xec76: 0x6c2c0e20, 0xec77: 0x6c116a20,\n\t0xec78: 0x6c0db620, 0xec7b: 0x6c124220,\n\t0xec7c: 0x6c0fa620, 0xec7d: 0x6c2c0620, 0xec7f: 0x6c142220,\n\t// Block 0x3b2, offset 0xec80\n\t0xec80: 0x6c021020, 0xec81: 0x6c2c1220, 0xec82: 0x6c16d420, 0xec83: 0x6c0ef420,\n\t0xec84: 0x6c170e20, 0xec87: 0x6c08b620,\n\t0xec88: 0x6c2c1020, 0xec8a: 0x6c0d5a20,\n\t0xec8d: 0x6c2c3220, 0xec8e: 0x6c0c8c20,\n\t0xec91: 0x6c10d820, 0xec93: 0x6c12bc20,\n\t0xec9a: 0x6c2c1820, 0xec9b: 0x6c085220,\n\t0xec9c: 0x6c08b820, 0xec9e: 0x6c0ac420,\n\t0xeca0: 0x6c116e20, 0xeca2: 0x6c05fa20, 0xeca3: 0x6c2c1620,\n\t0xeca4: 0x6c2c1420, 0xeca6: 0x6c12f020,\n\t0xecaa: 0x6c091220,\n\t0xecad: 0x6c0fd020,\n\t0xecba: 0x6c2c1c20, 0xecbb: 0x6c2c1e20,\n\t0xecbc: 0x6c070c20, 0xecbd: 0x6c2c1a20,\n\t// Block 0x3b3, offset 0xecc0\n\t0xecc4: 0x6c2c2020, 0xecc5: 0x6c2c2220, 0xecc7: 0x6c2c2620,\n\t0xecc8: 0x6c0d3e20, 0xecca: 0x6c2c2420, 0xeccb: 0x6c037c20,\n\t0xeccd: 0x6c2c2a20, 0xeccf: 0x6c2c2820,\n\t0xecd0: 0x6c2c2c20, 0xecd3: 0x6c2c3020,\n\t0xecd4: 0x6c2c3420, 0xecd6: 0x6c2c3620,\n\t// Block 0x3b4, offset 0xed00\n\t0xed24: 0x6c0c2c20, 0xed26: 0x6c092e20, 0xed27: 0x6c2c3820,\n\t0xed2b: 0x6c029820,\n\t0xed2d: 0x6c2c3a20,\n\t0xed30: 0x6c0d2820, 0xed31: 0x6c2c3c20, 0xed33: 0x6c2c3e20,\n\t0xed34: 0x6c12f220, 0xed37: 0x6c03ca20,\n\t// Block 0x3b5, offset 0xed40\n\t0xed41: 0x6c2c4020,\n\t0xed45: 0x6c0edc20,\n\t0xed4a: 0x6c013220,\n\t0xed59: 0x6c2c4220,\n\t0xed63: 0x6c097220,\n\t0xed68: 0x6c0bb020,\n\t0xed73: 0x6c0d5220,\n\t0xed7a: 0x6c2c4820,\n\t0xed7e: 0x6c2c4620,\n\t// Block 0x3b6, offset 0xed80\n\t0xed82: 0x6c2c4420,\n\t0xed8b: 0x6c2c5420,\n\t0xed8c: 0x6c2c5020, 0xed8f: 0x6c2c4a20,\n\t0xed96: 0x6c2c4e20,\n\t0xed9a: 0x6c2c4c20, 0xed9b: 0x6c2c5220,\n\t0xed9d: 0x6c045a20, 0xed9f: 0x6c2c5a20,\n\t0xeda1: 0x6c0c2e20, 0xeda3: 0x6c2c5c20,\n\t0xeda8: 0x6c065220, 0xedaa: 0x6c2c5620, 0xedab: 0x6c2c5820,\n\t0xedaf: 0x6c16d620,\n\t0xedb3: 0x6c0ede20,\n\t0xedb5: 0x6c0c8e20,\n\t0xedbc: 0x6c2c5e20, 0xedbf: 0x6c2c6420,\n\t// Block 0x3b7, offset 0xedc0\n\t0xedc8: 0x6c2c6020, 0xedc9: 0x6c2c6220, 0xedca: 0x6c15be20,\n\t0xedcf: 0x6c103620,\n\t0xedd0: 0x6c2c6a20,\n\t0xeddd: 0x6c2c6620, 0xedde: 0x6c2c6820, 0xeddf: 0x6c2c6c20,\n\t0xedea: 0x6c2c8820,\n\t0xedf0: 0x6c2c7220,\n\t0xedf4: 0x6c2c7420, 0xedf5: 0x6c2c7020,\n\t// Block 0x3b8, offset 0xee00\n\t0xee02: 0x6c2c6e20,\n\t0xee04: 0x6c0f6a20, 0xee07: 0x6c2c7820,\n\t0xee08: 0x6c2c8020, 0xee09: 0x6c2c7a20, 0xee0a: 0x6c2c7620,\n\t0xee0c: 0x6c2c7c20,\n\t0xee10: 0x6c2c7e20,\n\t0xee15: 0x6c2c8c20,\n\t0xee19: 0x6c2c8220,\n\t0xee1f: 0x6c0c3020,\n\t0xee20: 0x6c2c8620, 0xee23: 0x6c2c8a20,\n\t0xee24: 0x6c2c8420,\n\t0xee32: 0x6c2c9020,\n\t0xee34: 0x6c09b220, 0xee36: 0x6c2c8e20,\n\t0xee3c: 0x6c2c9220,\n\t// Block 0x3b9, offset 0xee40\n\t0xee41: 0x6c2c9420,\n\t0xee44: 0x6c2c9a20, 0xee45: 0x6c2c9820, 0xee47: 0x6c2c9620,\n\t0xee4a: 0x6c2c9e20, 0xee4b: 0x6c2c9c20,\n\t0xee4d: 0x6c153c20,\n\t0xee51: 0x6c2ca220, 0xee53: 0x6c2ca020,\n\t0xee54: 0x6c2ca420,\n\t0xee59: 0x6c2ca620,\n\t0xee61: 0x6c2caa20,\n\t0xee6a: 0x6c2ca820, 0xee6b: 0x6c0b5420,\n\t0xee6c: 0x6c2cac20, 0xee6f: 0x6c050220,\n\t0xee70: 0x6c2cae20, 0xee71: 0x6c2cb220,\n\t0xee7e: 0x6c2cb420,\n\t// Block 0x3ba, offset 0xee80\n\t0xee85: 0x6c2cb620, 0xee86: 0x6c2cb020,\n\t0xee88: 0x6c2cb820, 0xee8a: 0x6c093c20, 0xee8b: 0x6c2cba20,\n\t0xee8c: 0x6c03cc20, 0xee8d: 0x6c054a20,\n\t0xee92: 0x6c05fc20,\n\t0xee9b: 0x6c2cbc20,\n\t0xee9f: 0x6c10c820,\n\t0xeea2: 0x6c0fa820, 0xeea3: 0x6c2cbe20,\n\t0xeeab: 0x6c2cc420,\n\t0xeeb8: 0x6c08f820, 0xeebb: 0x6c2cc220,\n\t0xeebc: 0x6c2cc020, 0xeebd: 0x6c059820, 0xeebe: 0x6c2cc620,\n\t// Block 0x3bb, offset 0xeec0\n\t0xeec3: 0x6c029a20,\n\t0xeec5: 0x6c2cca20,\n\t0xeec9: 0x6c07d020, 0xeeca: 0x6c2cc820,\n\t0xeecc: 0x6c2cda20,\n\t0xeed2: 0x6c2cce20, 0xeed3: 0x6c2cd220,\n\t0xeed4: 0x6c13a220, 0xeed5: 0x6c2ccc20,\n\t0xeed9: 0x6c2cd020, 0xeedb: 0x6c2cd820,\n\t0xeedc: 0x6c2cd420, 0xeedd: 0x6c03ce20, 0xeedf: 0x6c2cd620,\n\t0xeee6: 0x6c2cdc20,\n\t0xeee9: 0x6c115820, 0xeeea: 0x6c167820,\n\t0xeeef: 0x6c09b420,\n\t0xeef3: 0x6c2cde20,\n\t0xeef8: 0x6c155020, 0xeef9: 0x6c2ce220, 0xeefb: 0x6c2ce020,\n\t0xeefe: 0x6c2ce820, 0xeeff: 0x6c158e20,\n\t// Block 0x3bc, offset 0xef00\n\t0xef02: 0x6c2ce620,\n\t0xef04: 0x6c02ce20, 0xef05: 0x6c2ce420, 0xef06: 0x6c2cee20,\n\t0xef09: 0x6c2cec20,\n\t0xef0c: 0x6c2cea20, 0xef0d: 0x6c0f9020, 0xef0e: 0x6c2cf020,\n\t0xef17: 0x6c2cf220,\n\t0xef1c: 0x6c2cf420, 0xef1f: 0x6c073420,\n\t0xef21: 0x6c052e20, 0xef22: 0x6c2cf620, 0xef23: 0x6c2cf820,\n\t0xef24: 0x6c2cfa20,\n\t// Block 0x3bd, offset 0xef40\n\t0xef5b: 0x6c0b5620,\n\t0xef5c: 0x6c2cfc20, 0xef5e: 0x6c08ea20, 0xef5f: 0x6c2cfe20,\n\t0xef63: 0x6c2d0020,\n\t0xef67: 0x6c18a420,\n\t0xef68: 0x6c18a220,\n\t0xef6d: 0x6c2d0220, 0xef6e: 0x6c273620, 0xef6f: 0x6c2d0420,\n\t0xef70: 0x6c0dfc20, 0xef71: 0x6c0b1a20, 0xef72: 0x6c112420,\n\t0xef77: 0x6c2d0620,\n\t0xef7a: 0x6c138220, 0xef7b: 0x6c0f1820,\n\t0xef7c: 0x6c075820, 0xef7f: 0x6c0e0620,\n\t// Block 0x3be, offset 0xef80\n\t0xef82: 0x6c00d020,\n\t0xef84: 0x6c148420, 0xef85: 0x6c0b7220,\n\t0xef8e: 0x6c05a020,\n\t0xef91: 0x6c04ea20,\n\t0xef94: 0x6c138420,\n\t0xef9a: 0x6c2d0820,\n\t0xefa2: 0x6c2d0c20,\n\t0xefa5: 0x6c2d0a20, 0xefa6: 0x6c01f820,\n\t0xefa9: 0x6c10d420, 0xefaa: 0x6c2d0e20, 0xefab: 0x6c119220,\n\t0xefad: 0x6c0f9220, 0xefaf: 0x6c2d1020,\n\t0xefb0: 0x6c09f020,\n\t0xefb4: 0x6c2d1420, 0xefb7: 0x6c14d420,\n\t0xefb8: 0x6c2d3220, 0xefb9: 0x6c2d1820, 0xefba: 0x6c2d1a20,\n\t0xefbd: 0x6c0f0220,\n\t// Block 0x3bf, offset 0xefc0\n\t0xefc0: 0x6c0db820, 0xefc1: 0x6c0d2a20, 0xefc3: 0x6c103820,\n\t0xefc5: 0x6c2d1620, 0xefc6: 0x6c041620,\n\t0xefcb: 0x6c2d2820,\n\t0xefcd: 0x6c2d2220, 0xefce: 0x6c2d3c20, 0xefcf: 0x6c103a20,\n\t0xefd0: 0x6c0e7420, 0xefd1: 0x6c2d1c20, 0xefd3: 0x6c0f6c20,\n\t0xefd4: 0x6c0fd220, 0xefd5: 0x6c2d1e20, 0xefd6: 0x6c2d2620, 0xefd7: 0x6c0b8420,\n\t0xefd9: 0x6c117220, 0xefda: 0x6c0f0820,\n\t0xefdd: 0x6c0c0420, 0xefde: 0x6c2d2420, 0xefdf: 0x6c0d5420,\n\t0xefe0: 0x6c0d4020, 0xefe1: 0x6c2d2020, 0xefe2: 0x6c001220, 0xefe3: 0x6c16c820,\n\t0xefe7: 0x6c2d2a20,\n\t0xefee: 0x6c0dba20,\n\t0xeff1: 0x6c09b620, 0xeff2: 0x6c0b5820,\n\t0xeff5: 0x6c2d2e20, 0xeff6: 0x6c2d2c20,\n\t0xeff8: 0x6c009e20, 0xeff9: 0x6c2d3020,\n\t0xeffc: 0x6c127a20, 0xeffe: 0x6c2d4020,\n\t// Block 0x3c0, offset 0xf000\n\t0xf001: 0x6c109e20, 0xf002: 0x6c0b9a20,\n\t0xf005: 0x6c0e6620, 0xf007: 0x6c051820,\n\t0xf009: 0x6c2d3e20, 0xf00a: 0x6c157a20, 0xf00b: 0x6c00fa20,\n\t0xf00d: 0x6c138620, 0xf00e: 0x6c01fa20, 0xf00f: 0x6c2d3420,\n\t0xf010: 0x6c2d3620, 0xf011: 0x6c2d3820, 0xf012: 0x6c2d3a20, 0xf013: 0x6c105e20,\n\t0xf014: 0x6c0dfa20, 0xf015: 0x6c008620, 0xf016: 0x6c2d4220,\n\t0xf018: 0x6c2d4420, 0xf019: 0x6c31a020,\n\t0xf01c: 0x6c0d7220, 0xf01e: 0x6c2d4620,\n\t0xf020: 0x6c016220, 0xf021: 0x6c0cd420, 0xf023: 0x6c05fe20,\n\t0xf025: 0x6c15c020,\n\t0xf028: 0x6c2d4820, 0xf029: 0x6c0f8420,\n\t0xf02d: 0x6c0d2c20, 0xf02e: 0x6c093e20, 0xf02f: 0x6c2d4a20,\n\t0xf032: 0x6c2d5020,\n\t0xf035: 0x6c0a1620, 0xf036: 0x6c2d4c20, 0xf037: 0x6c0c9220,\n\t0xf038: 0x6c0c9020, 0xf03a: 0x6c008820,\n\t0xf03c: 0x6c165e20, 0xf03d: 0x6c2d5420, 0xf03f: 0x6c124420,\n\t// Block 0x3c1, offset 0xf040\n\t0xf040: 0x6c2d5820, 0xf041: 0x6c2d5620, 0xf042: 0x6c2d5220, 0xf043: 0x6c25a620,\n\t0xf044: 0x6c035820, 0xf047: 0x6c2d1220,\n\t0xf049: 0x6c2d5c20, 0xf04a: 0x6c2d5a20,\n\t0xf04f: 0x6c2d5e20,\n\t0xf051: 0x6c157c20,\n\t0xf063: 0x6c10aa20,\n\t0xf066: 0x6c13f020,\n\t0xf068: 0x6c2d6020, 0xf06a: 0x6c094220,\n\t0xf06f: 0x6c2d6220,\n\t0xf071: 0x6c2d6420,\n\t0xf075: 0x6c2d6620,\n\t0xf078: 0x6c0f6e20,\n\t// Block 0x3c2, offset 0xf080\n\t0xf081: 0x6c009420,\n\t0xf08a: 0x6c070e20,\n\t0xf08e: 0x6c16f820,\n\t0xf09b: 0x6c2d6e20,\n\t0xf0a1: 0x6c054c20, 0xf0a2: 0x6c2d6820,\n\t0xf0a4: 0x6c2d6a20,\n\t0xf0a8: 0x6c130420,\n\t0xf0ad: 0x6c029c20,\n\t0xf0b5: 0x6c157e20, 0xf0b7: 0x6c04a620,\n\t0xf0bd: 0x6c0fd420,\n\t// Block 0x3c3, offset 0xf0c0\n\t0xf0c2: 0x6c2d7020,\n\t0xf0d2: 0x6c2d7220,\n\t0xf0d9: 0x6c2d7420,\n\t0xf0ed: 0x6c0f7020,\n\t0xf0f0: 0x6c2d7820, 0xf0f2: 0x6c2d7620,\n\t// Block 0x3c4, offset 0xf100\n\t0xf109: 0x6c108e20, 0xf10a: 0x6c2d7a20, 0xf10b: 0x6c09b820,\n\t0xf10c: 0x6c095020, 0xf10d: 0x6c115a20, 0xf10e: 0x6c0e9620,\n\t0xf112: 0x6c097420,\n\t0xf114: 0x6c0b9c20, 0xf116: 0x6c2d7c20,\n\t0xf118: 0x6c2d7e20,\n\t0xf122: 0x6c0b7e20, 0xf123: 0x6c2d8020,\n\t0xf125: 0x6c2d8220,\n\t0xf129: 0x6c2d8420, 0xf12a: 0x6c15ea20,\n\t0xf12c: 0x6c09ba20,\n\t0xf132: 0x6c2d8820, 0xf133: 0x6c2d8620,\n\t0xf135: 0x6c071020, 0xf137: 0x6c074220,\n\t0xf138: 0x6c085420,\n\t// Block 0x3c5, offset 0xf140\n\t0xf142: 0x6c2d8e20,\n\t0xf147: 0x6c0a1820,\n\t0xf149: 0x6c2d8c20, 0xf14b: 0x6c2d8a20,\n\t0xf14d: 0x6c0dca20,\n\t0xf150: 0x6c067e20, 0xf152: 0x6c0c0620,\n\t0xf157: 0x6c11c020,\n\t0xf15c: 0x6c09be20,\n\t0xf162: 0x6c2d9020,\n\t0xf164: 0x6c0ac620,\n\t0xf16a: 0x6c2d9620, 0xf16b: 0x6c2d9220,\n\t0xf16f: 0x6c2d9420,\n\t0xf174: 0x6c2d9a20, 0xf175: 0x6c2d9820,\n\t0xf178: 0x6c0afc20, 0xf17a: 0x6c2d9c20,\n\t// Block 0x3c6, offset 0xf180\n\t0xf180: 0x6c2d9e20, 0xf181: 0x6c2da020,\n\t0xf186: 0x6c120020, 0xf187: 0x6c07be20,\n\t0xf188: 0x6c095220, 0xf189: 0x6c2da220, 0xf18b: 0x6c2da420,\n\t0xf18c: 0x6c161020, 0xf18d: 0x6c09d620, 0xf18e: 0x6c152c20, 0xf18f: 0x6c166020,\n\t0xf190: 0x6c2da620, 0xf191: 0x6c04ec20,\n\t0xf196: 0x6c2da820,\n\t0xf198: 0x6c0f7220, 0xf19b: 0x6c2dae20,\n\t0xf19c: 0x6c02e420, 0xf19d: 0x6c0b5a20, 0xf19f: 0x6c2daa20,\n\t0xf1a1: 0x6c2dac20, 0xf1a3: 0x6c0f3020,\n\t0xf1a6: 0x6c143e20, 0xf1a7: 0x6c052020,\n\t0xf1b5: 0x6c2db220, 0xf1b6: 0x6c2db420,\n\t0xf1bc: 0x6c2db020, 0xf1bf: 0x6c2db820,\n\t// Block 0x3c7, offset 0xf1c0\n\t0xf1cd: 0x6c10a620, 0xf1ce: 0x6c027a20,\n\t0xf1d1: 0x6c2dc020,\n\t0xf1d4: 0x6c2dba20, 0xf1d5: 0x6c2dbe20,\n\t0xf1de: 0x6c2db620,\n\t0xf1e9: 0x6c2e4c20,\n\t0xf1ec: 0x6c2dbc20,\n\t0xf1f4: 0x6c169e20, 0xf1f7: 0x6c065420,\n\t0xf1ff: 0x6c2dd020,\n\t// Block 0x3c8, offset 0xf200\n\t0xf204: 0x6c0f9420, 0xf205: 0x6c2dc620,\n\t0xf208: 0x6c2dcc20, 0xf209: 0x6c2dc820, 0xf20b: 0x6c2dd220,\n\t0xf210: 0x6c2dd420,\n\t0xf217: 0x6c2dc420,\n\t0xf21a: 0x6c2dde20, 0xf21b: 0x6c016420,\n\t0xf21e: 0x6c2dc220,\n\t0xf222: 0x6c11ba20,\n\t0xf224: 0x6c2dca20, 0xf226: 0x6c0ac820,\n\t0xf231: 0x6c071220,\n\t0xf23e: 0x6c142420,\n\t// Block 0x3c9, offset 0xf240\n\t0xf240: 0x6c04f020, 0xf243: 0x6c09d820,\n\t0xf245: 0x6c106020,\n\t0xf251: 0x6c0c9620, 0xf253: 0x6c2dda20,\n\t0xf255: 0x6c2dce20, 0xf256: 0x6c2dd820,\n\t0xf258: 0x6c14d620, 0xf25a: 0x6c0ee020, 0xf25b: 0x6c2ddc20,\n\t0xf25c: 0x6c2dd620,\n\t0xf26d: 0x6c0c9420,\n\t0xf277: 0x6c2de420,\n\t0xf279: 0x6c2de220,\n\t// Block 0x3ca, offset 0xf280\n\t0xf28f: 0x6c2de020,\n\t0xf292: 0x6c13f220,\n\t0xf2a4: 0x6c0a4220,\n\t0xf2a9: 0x6c2de620, 0xf2aa: 0x6c139620,\n\t0xf2ad: 0x6c012420,\n\t0xf2b2: 0x6c12a820, 0xf2b3: 0x6c0e9820,\n\t0xf2b8: 0x6c045c20, 0xf2ba: 0x6c2dea20,\n\t0xf2bc: 0x6c071620,\n\t// Block 0x3cb, offset 0xf2c0\n\t0xf2c6: 0x6c082c20,\n\t0xf2cf: 0x6c2de820,\n\t0xf2d0: 0x6c0b9e20,\n\t0xf2d8: 0x6c0ba020, 0xf2d9: 0x6c2df020, 0xf2da: 0x6c2df420,\n\t0xf2e0: 0x6c0afe20, 0xf2e2: 0x6c2df220, 0xf2e3: 0x6c2df620,\n\t0xf2e6: 0x6c04ce20,\n\t0xf2e8: 0x6c12a620, 0xf2eb: 0x6c095420,\n\t0xf2ec: 0x6c16ca20, 0xf2ee: 0x6c2dee20, 0xf2ef: 0x6c080820,\n\t0xf2f2: 0x6c170220,\n\t0xf2f5: 0x6c2dfa20,\n\t0xf2fa: 0x6c2df820, 0xf2fb: 0x6c2dfc20,\n\t// Block 0x3cc, offset 0xf300\n\t0xf304: 0x6c2dec20,\n\t0xf30b: 0x6c10ba20,\n\t0xf30d: 0x6c0fd620,\n\t0xf314: 0x6c0f1e20, 0xf316: 0x6c2e0620,\n\t0xf31b: 0x6c0e3a20,\n\t0xf31c: 0x6c2dfe20,\n\t0xf320: 0x6c2e0020,\n\t0xf32c: 0x6c053e20, 0xf32e: 0x6c2e0420,\n\t0xf335: 0x6c060020,\n\t0xf33c: 0x6c2e0220, 0xf33e: 0x6c0aca20,\n\t// Block 0x3cd, offset 0xf340\n\t0xf34c: 0x6c02e620,\n\t0xf354: 0x6c2e0e20, 0xf356: 0x6c079620, 0xf357: 0x6c0d2e20,\n\t0xf35a: 0x6c0f0420,\n\t0xf367: 0x6c026a20,\n\t0xf36c: 0x6c2e0a20, 0xf36d: 0x6c2e0c20, 0xf36e: 0x6c0ef620,\n\t0xf370: 0x6c2e0820,\n\t0xf379: 0x6c2e1020,\n\t// Block 0x3ce, offset 0xf380\n\t0xf383: 0x6c2e1c20,\n\t0xf388: 0x6c2e2220,\n\t0xf390: 0x6c2e2020, 0xf391: 0x6c0f8620,\n\t0xf396: 0x6c2e1220, 0xf397: 0x6c2e1420,\n\t0xf398: 0x6c2e1a20,\n\t0xf39d: 0x6c2e1e20,\n\t0xf3a1: 0x6c04a820,\n\t0xf3a4: 0x6c2e2420, 0xf3a5: 0x6c2e1820,\n\t0xf3a8: 0x6c2e1620,\n\t// Block 0x3cf, offset 0xf3c0\n\t0xf3c3: 0x6c2e2c20,\n\t0xf3c7: 0x6c2e2e20,\n\t0xf3d0: 0x6c2e3020, 0xf3d3: 0x6c2e2a20,\n\t0xf3d4: 0x6c2e2820,\n\t0xf3d8: 0x6c0acc20, 0xf3d9: 0x6c103c20, 0xf3da: 0x6c2e2620,\n\t0xf3e1: 0x6c2e3820,\n\t0xf3eb: 0x6c2e3420,\n\t0xf3f5: 0x6c2e3620, 0xf3f6: 0x6c2e3220,\n\t0xf3f8: 0x6c0de820, 0xf3fa: 0x6c2e3a20,\n\t// Block 0x3d0, offset 0xf400\n\t0xf401: 0x6c2e3c20,\n\t0xf404: 0x6c2e4020,\n\t0xf411: 0x6c035a20, 0xf412: 0x6c2e3e20, 0xf413: 0x6c154420,\n\t0xf41a: 0x6c2e5620, 0xf41b: 0x6c2e4220,\n\t0xf41e: 0x6c2e4820,\n\t0xf420: 0x6c2e4420, 0xf422: 0x6c2e4620,\n\t0xf42a: 0x6c2e4a20,\n\t0xf430: 0x6c2e4e20,\n\t0xf435: 0x6c2e5020, 0xf437: 0x6c2e5220,\n\t0xf43c: 0x6c2e5820, 0xf43d: 0x6c2e5420, 0xf43e: 0x6c2e5a20, 0xf43f: 0x6c2e5e20,\n\t// Block 0x3d1, offset 0xf440\n\t0xf441: 0x6c2e5c20,\n\t// Block 0x3d2, offset 0xf480\n\t0xf4b7: 0x6c0ee220,\n\t// Block 0x3d3, offset 0xf4c0\n\t0xf4c0: 0x6c151e20, 0xf4c2: 0x6c2e6020, 0xf4c3: 0x6c0c9820,\n\t0xf4c7: 0x6c2e6220,\n\t0xf4c9: 0x6c136020, 0xf4ca: 0x6c2e6420, 0xf4cb: 0x6c024a20,\n\t0xf4cf: 0x6c00f420,\n\t0xf4d1: 0x6c035e20, 0xf4d3: 0x6c035c20,\n\t0xf4d4: 0x6c2e6620, 0xf4d6: 0x6c2e6820,\n\t0xf4d8: 0x6c2e6a20, 0xf4d9: 0x6c2e6c20,\n\t0xf4e0: 0x6c2e6e20, 0xf4e2: 0x6c036020, 0xf4e3: 0x6c029e20,\n\t0xf4e4: 0x6c071820, 0xf4e5: 0x6c11cc20, 0xf4e7: 0x6c2e7220,\n\t0xf4e8: 0x6c2e7020,\n\t0xf4ed: 0x6c2e7420,\n\t0xf4f2: 0x6c013420,\n\t0xf4f9: 0x6c2e7a20, 0xf4fb: 0x6c2e7820,\n\t0xf4fc: 0x6c2e7620, 0xf4fe: 0x6c2e7c20,\n\t// Block 0x3d4, offset 0xf500\n\t0xf503: 0x6c2e8220,\n\t0xf507: 0x6c004e20,\n\t0xf50a: 0x6c2e7e20,\n\t0xf50c: 0x6c2e8620, 0xf50d: 0x6c2e8420,\n\t0xf514: 0x6c2e8a20, 0xf515: 0x6c2e8820, 0xf516: 0x6c2e8c20,\n\t0xf518: 0x6c104420,\n\t0xf51c: 0x6c2e8e20,\n\t0xf521: 0x6c2e9020, 0xf522: 0x6c2e9420,\n\t0xf525: 0x6c2e9220,\n\t// Block 0x3d5, offset 0xf540\n\t0xf55c: 0x6c12f420,\n\t0xf561: 0x6c2e9620,\n\t0xf568: 0x6c2e9820, 0xf56a: 0x6c07e220,\n\t0xf56e: 0x6c2e9a20, 0xf56f: 0x6c2e9c20,\n\t0xf572: 0x6c142620,\n\t0xf57b: 0x6c0cd220,\n\t0xf57f: 0x6c000820,\n\t// Block 0x3d6, offset 0xf580\n\t0xf580: 0x6c0d8e20, 0xf582: 0x6c2e9e20,\n\t0xf584: 0x6c12f620,\n\t0xf58b: 0x6c2ea420,\n\t0xf58c: 0x6c2ea020, 0xf58d: 0x6c071a20, 0xf58f: 0x6c2ea220,\n\t0xf590: 0x6c062420,\n\t0xf59b: 0x6c136220,\n\t0xf59c: 0x6c2ea820, 0xf59d: 0x6c2eac20, 0xf59e: 0x6c2eaa20, 0xf59f: 0x6c2eae20,\n\t0xf5a2: 0x6c00be20, 0xf5a3: 0x6c0b7420,\n\t0xf5a4: 0x6c0a4420, 0xf5a5: 0x6c036220, 0xf5a6: 0x6c2eb020,\n\t0xf5aa: 0x6c117020,\n\t0xf5ac: 0x6c2eb420,\n\t0xf5b0: 0x6c00c020, 0xf5b2: 0x6c2eb220, 0xf5b3: 0x6c0ef820,\n\t0xf5b5: 0x6c166220, 0xf5b6: 0x6c103e20, 0xf5b7: 0x6c2ea620,\n\t0xf5b8: 0x6c161420, 0xf5ba: 0x6c060220,\n\t0xf5bd: 0x6c15c220,\n\t// Block 0x3d7, offset 0xf5c0\n\t0xf5c5: 0x6c051a20, 0xf5c6: 0x6c163020,\n\t0xf5c8: 0x6c053420, 0xf5ca: 0x6c0dbc20, 0xf5cb: 0x6c281020,\n\t0xf5cd: 0x6c2eb620, 0xf5ce: 0x6c024c20, 0xf5cf: 0x6c0ba220,\n\t0xf5d4: 0x6c02a020, 0xf5d5: 0x6c2eba20, 0xf5d7: 0x6c2ebc20,\n\t0xf5d8: 0x6c2eb820, 0xf5d9: 0x6c05ac20, 0xf5db: 0x6c07d220,\n\t0xf5dc: 0x6c0ace20,\n\t0xf5e0: 0x6c00c220, 0xf5e3: 0x6c167a20,\n\t0xf5e7: 0x6c2ec020,\n\t0xf5e8: 0x6c2d4e20, 0xf5ea: 0x6c2ebe20,\n\t0xf5f0: 0x6c2ec620, 0xf5f1: 0x6c2ec220, 0xf5f2: 0x6c2ec420,\n\t0xf5f4: 0x6c2ec820, 0xf5f6: 0x6c2eca20, 0xf5f7: 0x6c16a020,\n\t0xf5f8: 0x6c2ecc20, 0xf5f9: 0x6c2ece20, 0xf5fb: 0x6c0c1220,\n\t0xf5fc: 0x6c11d620,\n\t// Block 0x3d8, offset 0xf600\n\t0xf600: 0x6c0bbe20, 0xf601: 0x6c037e20,\n\t0xf604: 0x6c158020, 0xf605: 0x6c021220, 0xf606: 0x6c09bc20, 0xf607: 0x6c065620,\n\t0xf609: 0x6c2ed420, 0xf60b: 0x6c2ed220,\n\t0xf60c: 0x6c08ba20, 0xf60d: 0x6c2ed620, 0xf60e: 0x6c2ed020,\n\t0xf611: 0x6c082420,\n\t0xf615: 0x6c2ede20, 0xf616: 0x6c2a5c20,\n\t0xf619: 0x6c190e20, 0xf61b: 0x6c0bb220,\n\t0xf61c: 0x6c2eda20,\n\t0xf622: 0x6c161220, 0xf623: 0x6c10ca20,\n\t0xf628: 0x6c00d220, 0xf62a: 0x6c0c4620, 0xf62b: 0x6c08fc20,\n\t0xf630: 0x6c134620, 0xf632: 0x6c00fc20,\n\t0xf636: 0x6c16a220, 0xf637: 0x6c15e220,\n\t0xf639: 0x6c2ee020, 0xf63b: 0x6c0fb620,\n\t// Block 0x3d9, offset 0xf640\n\t0xf640: 0x6c098620,\n\t0xf644: 0x6c2ee220, 0xf646: 0x6c2ee420, 0xf647: 0x6c0b5c20,\n\t0xf648: 0x6c2ee620, 0xf64a: 0x6c16a420,\n\t0xf64d: 0x6c2edc20, 0xf64e: 0x6c2eea20, 0xf64f: 0x6c2eee20,\n\t0xf651: 0x6c2eec20, 0xf653: 0x6c2ee820,\n\t0xf656: 0x6c2ef020,\n\t0xf659: 0x6c2ef220,\n\t0xf65c: 0x6c0d3020, 0xf65e: 0x6c01fc20,\n\t0xf664: 0x6c2ef420, 0xf667: 0x6c14c020,\n\t0xf66a: 0x6c2ef620,\n\t0xf670: 0x6c2ef820, 0xf672: 0x6c16d820,\n\t0xf678: 0x6c1f6020, 0xf679: 0x6c2efa20,\n\t0xf67d: 0x6c2efc20, 0xf67e: 0x6c2efe20,\n\t// Block 0x3da, offset 0xf680\n\t0xf682: 0x6c2f0620,\n\t0xf684: 0x6c2f0020, 0xf686: 0x6c2f0220,\n\t0xf688: 0x6c2f0420, 0xf689: 0x6c2f0820,\n\t0xf692: 0x6c0c0820,\n\t0xf696: 0x6c153e20,\n\t0xf699: 0x6c0c0a20,\n\t0xf69c: 0x6c2f0a20, 0xf69e: 0x6c124620,\n\t0xf6a0: 0x6c2f0c20, 0xf6a1: 0x6c314420, 0xf6a2: 0x6c14e820,\n\t0xf6a4: 0x6c2f0e20, 0xf6a6: 0x6c2f1020,\n\t0xf6a8: 0x6c2f1220, 0xf6a9: 0x6c02a220, 0xf6ab: 0x6c2f1620,\n\t0xf6ad: 0x6c0b7620,\n\t0xf6b1: 0x6c2f1820,\n\t0xf6b4: 0x6c052c20,\n\t0xf6b9: 0x6c2f1a20, 0xf6ba: 0x6c2f2220,\n\t0xf6bc: 0x6c2f1e20,\n\t// Block 0x3db, offset 0xf6c0\n\t0xf6c1: 0x6c2f2020,\n\t0xf6c4: 0x6c02da20, 0xf6c5: 0x6c2f1c20, 0xf6c6: 0x6c2f2420,\n\t0xf6cb: 0x6c2f2620,\n\t0xf6cd: 0x6c005020, 0xf6cf: 0x6c2f2820,\n\t0xf6d0: 0x6c2f2a20,\n\t0xf6d8: 0x6c0ad020,\n\t0xf6dc: 0x6c2f2c20,\n\t0xf6e0: 0x6c03fa20, 0xf6e3: 0x6c2f3220,\n\t0xf6e6: 0x6c2f3020,\n\t0xf6e8: 0x6c2f2e20, 0xf6eb: 0x6c2ba020,\n\t0xf6ed: 0x6c139020,\n\t0xf6f3: 0x6c2f3420,\n\t0xf6f4: 0x6c2f3620,\n\t// Block 0x3dc, offset 0xf700\n\t0xf703: 0x6c2f3820,\n\t0xf706: 0x6c2f3a20,\n\t0xf708: 0x6c2f3c20, 0xf70b: 0x6c2f3e20,\n\t0xf713: 0x6c036420,\n\t0xf71c: 0x6c2f4020,\n\t0xf72d: 0x6c2f4220, 0xf72e: 0x6c10ea20,\n\t0xf732: 0x6c2f4620, 0xf733: 0x6c01ae20,\n\t0xf735: 0x6c2f4c20, 0xf736: 0x6c2f4a20,\n\t0xf73b: 0x6c00c420,\n\t0xf73f: 0x6c04aa20,\n\t// Block 0x3dd, offset 0xf740\n\t0xf741: 0x6c136620, 0xf742: 0x6c0ee420, 0xf743: 0x6c075c20,\n\t0xf745: 0x6c071c20, 0xf746: 0x6c0a1a20,\n\t0xf748: 0x6c0b7c20,\n\t0xf74c: 0x6c2f5020, 0xf74f: 0x6c2f4e20,\n\t0xf750: 0x6c159020, 0xf751: 0x6c038020, 0xf752: 0x6c120420, 0xf753: 0x6c10a020,\n\t0xf757: 0x6c0bbc20,\n\t0xf758: 0x6c166420, 0xf75a: 0x6c059a20,\n\t0xf761: 0x6c2f5620,\n\t0xf764: 0x6c2f5420,\n\t0xf76c: 0x6c142a20, 0xf76d: 0x6c104020,\n\t0xf774: 0x6c011c20, 0xf777: 0x6c2f5820,\n\t0xf778: 0x6c2f5220, 0xf77b: 0x6c12be20,\n\t0xf77c: 0x6c15e020, 0xf77d: 0x6c2f5a20,\n\t// Block 0x3de, offset 0xf780\n\t0xf786: 0x6c2f5c20,\n\t0xf78b: 0x6c2f6020,\n\t0xf78c: 0x6c0dcc20, 0xf78d: 0x6c02aa20, 0xf78e: 0x6c02ac20, 0xf78f: 0x6c2f5e20,\n\t0xf794: 0x6c038220, 0xf795: 0x6c060420,\n\t0xf798: 0x6c038420, 0xf79b: 0x6c0faa20,\n\t0xf79e: 0x6c168820,\n\t0xf7a7: 0x6c065820,\n\t0xf7ab: 0x6c2f6220,\n\t0xf7af: 0x6c2f6420,\n\t0xf7b0: 0x6c2f6620, 0xf7b1: 0x6c2f6820, 0xf7b3: 0x6c2f6c20,\n\t0xf7b4: 0x6c2f6a20,\n\t// Block 0x3df, offset 0xf7c0\n\t0xf7e8: 0x6c130a20, 0xf7ea: 0x6c2f6e20,\n\t0xf7ef: 0x6c2f7020,\n\t0xf7f1: 0x6c2f7220,\n\t0xf7f6: 0x6c2f7420,\n\t// Block 0x3e0, offset 0xf800\n\t0xf803: 0x6c2f7820,\n\t0xf804: 0x6c2f7620, 0xf806: 0x6c2f7a20,\n\t0xf81b: 0x6c124820,\n\t0xf81c: 0x6c27aa20, 0xf81f: 0x6c0b1620,\n\t0xf822: 0x6c03d020,\n\t0xf829: 0x6c2f7c20, 0xf82b: 0x6c2f7e20,\n\t0xf82d: 0x6c18ba20, 0xf82e: 0x6c20ec20, 0xf82f: 0x6c120620,\n\t0xf832: 0x6c00b620,\n\t0xf834: 0x6c003620,\n\t0xf83c: 0x6c08bc20, 0xf83d: 0x6c13f420, 0xf83e: 0x6c0b0420,\n\t// Block 0x3e1, offset 0xf840\n\t0xf843: 0x6c2f8020,\n\t0xf845: 0x6c150e20,\n\t0xf849: 0x6c2f8220, 0xf84a: 0x6c15c420,\n\t0xf84c: 0x6c010020,\n\t0xf850: 0x6c085620, 0xf852: 0x6c2f8420, 0xf853: 0x6c021420,\n\t0xf854: 0x6c2f8620,\n\t0xf858: 0x6c2f8820,\n\t0xf85d: 0x6c2f8c20, 0xf85e: 0x6c2f8e20,\n\t0xf860: 0x6c2f9220, 0xf861: 0x6c2f8a20,\n\t0xf864: 0x6c2f9020,\n\t0xf868: 0x6c036620,\n\t0xf86c: 0x6c2f9420, 0xf86e: 0x6c2f9620,\n\t0xf87d: 0x6c2f9820, 0xf87e: 0x6c2f9a20,\n\t// Block 0x3e2, offset 0xf880\n\t0xf882: 0x6c2f9c20,\n\t0xf885: 0x6c2fa020,\n\t0xf889: 0x6c2f9e20, 0xf88b: 0x6c2fa420,\n\t0xf88c: 0x6c2faa20,\n\t0xf890: 0x6c2fa220, 0xf891: 0x6c2fa620, 0xf892: 0x6c2fa820,\n\t0xf895: 0x6c2fac20, 0xf897: 0x6c04ac20,\n\t// Block 0x3e3, offset 0xf8c0\n\t0xf8d6: 0x6c097620, 0xf8d7: 0x6c2fae20,\n\t0xf8d8: 0x6c2fb020, 0xf8d9: 0x6c071e20,\n\t0xf8e5: 0x6c2fb220,\n\t0xf8e8: 0x6c027020,\n\t0xf8ec: 0x6c114220, 0xf8ed: 0x6c2fb420, 0xf8ee: 0x6c2fb620,\n\t0xf8f3: 0x6c0e6820,\n\t0xf8f4: 0x6c10be20,\n\t0xf8fc: 0x6c2fb820,\n\t// Block 0x3e4, offset 0xf900\n\t0xf901: 0x6c119e20,\n\t0xf904: 0x6c0d9020, 0xf905: 0x6c012c20, 0xf906: 0x6c050420,\n\t0xf908: 0x6c050620,\n\t0xf910: 0x6c0e9a20, 0xf911: 0x6c2fc220, 0xf912: 0x6c050820,\n\t0xf915: 0x6c021620,\n\t0xf918: 0x6c2fc020, 0xf91b: 0x6c2fbc20,\n\t0xf91d: 0x6c2fbe20, 0xf91f: 0x6c2fba20,\n\t0xf922: 0x6c2fd620,\n\t0xf92d: 0x6c2fc420, 0xf92e: 0x6c2fc620,\n\t0xf931: 0x6c2fc820, 0xf932: 0x6c2fca20,\n\t0xf938: 0x6c2fce20, 0xf93b: 0x6c2fcc20,\n\t0xf93f: 0x6c09fe20,\n\t// Block 0x3e5, offset 0xf940\n\t0xf941: 0x6c2fd020,\n\t0xf945: 0x6c2fd420,\n\t0xf94e: 0x6c03d220, 0xf94f: 0x6c2fd220,\n\t0xf952: 0x6c0d3220, 0xf953: 0x6c060620,\n\t0xf959: 0x6c2fd820,\n\t0xf968: 0x6c0d9220, 0xf96b: 0x6c2fda20,\n\t0xf970: 0x6c104220,\n\t0xf977: 0x6c2fdc20,\n\t0xf97e: 0x6c2fe620,\n\t// Block 0x3e6, offset 0xf980\n\t0xf980: 0x6c2fe220, 0xf982: 0x6c2fe020, 0xf983: 0x6c2fe420,\n\t0xf985: 0x6c2fde20,\n\t0xf98d: 0x6c2fea20,\n\t0xf995: 0x6c2fe820, 0xf997: 0x6c2fee20,\n\t0xf99a: 0x6c04ae20, 0xf99b: 0x6c2fec20,\n\t0xf99f: 0x6c2ff020,\n\t0xf9a2: 0x6c2ff220,\n\t0xf9a4: 0x6c2ff620, 0xf9a5: 0x6c2ff420,\n\t0xf9a9: 0x6c2ff820, 0xf9aa: 0x6c2ffc20, 0xf9ab: 0x6c2ffa20,\n\t// Block 0x3e7, offset 0xf9c0\n\t0xf9e8: 0x6c075420,\n\t0xf9ed: 0x6c2ffe20,\n\t0xf9f0: 0x6c300020,\n\t0xf9f8: 0x6c026c20,\n\t0xf9fc: 0x6c300220,\n\t// Block 0x3e8, offset 0xfa00\n\t0xfa00: 0x6c300420,\n\t0xfa04: 0x6c0ba620,\n\t0xfa0f: 0x6c300620,\n\t0xfa11: 0x6c300820, 0xfa13: 0x6c300a20,\n\t0xfa14: 0x6c300c20,\n\t0xfa18: 0x6c072020,\n\t0xfa1e: 0x6c300e20, 0xfa1f: 0x6c301020,\n\t0xfa22: 0x6c301220, 0xfa23: 0x6c301420,\n\t0xfa26: 0x6c301620,\n\t0xfa2a: 0x6c11c220, 0xfa2b: 0x6c301a20,\n\t0xfa2d: 0x6c126820, 0xfa2e: 0x6c301c20, 0xfa2f: 0x6c301820,\n\t0xfa31: 0x6c302020,\n\t0xfa34: 0x6c301e20, 0xfa37: 0x6c302220,\n\t0xfa3b: 0x6c302420,\n\t// Block 0x3e9, offset 0xfa40\n\t0xfa46: 0x6c302620,\n\t0xfa58: 0x6c302820, 0xfa5a: 0x6c302a20,\n\t0xfa5f: 0x6c302c20,\n\t0xfa62: 0x6c302e20, 0xfa63: 0x6c303020,\n\t0xfa65: 0x6c303220, 0xfa67: 0x6c303420,\n\t0xfa68: 0x6c303620, 0xfa69: 0x6c303820, 0xfa6a: 0x6c303a20,\n\t0xfa6e: 0x6c303c20, 0xfa6f: 0x6c303e20,\n\t0xfa71: 0x6c20e020, 0xfa72: 0x6c304020,\n\t0xfa7b: 0x6c268a20,\n\t0xfa7c: 0x6c03d420,\n\t// Block 0x3ea, offset 0xfa80\n\t0xfa81: 0x6c023620, 0xfa82: 0x6c077c20, 0xfa83: 0x6c304420,\n\t0xfa84: 0x6c304220, 0xfa85: 0x6c149a20,\n\t0xfa8d: 0x6c304820, 0xfa8e: 0x6c304a20, 0xfa8f: 0x6c304620,\n\t0xfa91: 0x6c304c20,\n\t0xfa94: 0x6c145820,\n\t0xfa98: 0x6c304e20, 0xfa9a: 0x6c046220,\n\t0xfaaf: 0x6c16ce20,\n\t0xfab4: 0x6c305020,\n\t// Block 0x3eb, offset 0xfac0\n\t0xfac3: 0x6c305420,\n\t0xface: 0x6c003c20,\n\t0xfad1: 0x6c305620, 0xfad2: 0x6c132e20, 0xfad3: 0x6c305220,\n\t0xfad6: 0x6c305820, 0xfad7: 0x6c305a20,\n\t0xfadf: 0x6c305c20,\n\t0xfae0: 0x6c305e20,\n\t0xfae8: 0x6c306020, 0xfaea: 0x6c147020, 0xfaeb: 0x6c082e20,\n\t0xfaed: 0x6c080c20, 0xfaee: 0x6c0c9a20,\n\t0xfaf4: 0x6c306220,\n\t0xfaf9: 0x6c306820,\n\t// Block 0x3ec, offset 0xfb00\n\t0xfb00: 0x6c306420,\n\t0xfb06: 0x6c306a20,\n\t0xfb09: 0x6c068220, 0xfb0a: 0x6c306620,\n\t0xfb0f: 0x6c306c20,\n\t0xfb11: 0x6c306e20, 0xfb12: 0x6c307020,\n\t0xfb14: 0x6c307820, 0xfb16: 0x6c082820,\n\t0xfb1b: 0x6c0dc020,\n\t0xfb21: 0x6c307a20, 0xfb22: 0x6c307420, 0xfb23: 0x6c307220,\n\t0xfb24: 0x6c307620,\n\t0xfb28: 0x6c05a220,\n\t0xfb30: 0x6c308220, 0xfb31: 0x6c308020, 0xfb32: 0x6c307e20,\n\t0xfb35: 0x6c002620,\n\t// Block 0x3ed, offset 0xfb40\n\t0xfb44: 0x6c309620, 0xfb46: 0x6c308e20,\n\t0xfb48: 0x6c309020, 0xfb49: 0x6c308820, 0xfb4a: 0x6c309420,\n\t0xfb4c: 0x6c308c20, 0xfb4d: 0x6c02b820,\n\t0xfb50: 0x6c171c20, 0xfb52: 0x6c309220, 0xfb53: 0x6c308a20,\n\t0xfb54: 0x6c308620, 0xfb55: 0x6c308420,\n\t0xfb5b: 0x6c309a20,\n\t0xfb61: 0x6c30a020,\n\t0xfb64: 0x6c309e20, 0xfb65: 0x6c309c20,\n\t0xfb6d: 0x6c12ae20, 0xfb6e: 0x6c309820, 0xfb6f: 0x6c00a620,\n\t0xfb70: 0x6c30a220, 0xfb72: 0x6c30a620,\n\t0xfb79: 0x6c02d220, 0xfb7a: 0x6c307c20, 0xfb7b: 0x6c00ea20,\n\t0xfb7e: 0x6c30aa20,\n\t// Block 0x3ee, offset 0xfb80\n\t0xfb86: 0x6c30a820, 0xfb87: 0x6c30a420,\n\t0xfb88: 0x6c0e0e20,\n\t0xfb92: 0x6c147420,\n\t0xfb97: 0x6c167c20,\n\t0xfb9a: 0x6c30ac20,\n\t0xfba0: 0x6c30ae20,\n\t0xfba7: 0x6c30b020,\n\t0xfbb6: 0x6c30b220,\n\t0xfbb8: 0x6c30b420,\n\t// Block 0x3ef, offset 0xfbc0\n\t0xfbe5: 0x6c0ee620, 0xfbe7: 0x6c30b620,\n\t0xfbe9: 0x6c11ce20, 0xfbeb: 0x6c30c020,\n\t0xfbec: 0x6c30b820,\n\t0xfbf0: 0x6c30ba20, 0xfbf3: 0x6c13f620,\n\t0xfbf4: 0x6c14d820, 0xfbf6: 0x6c108820,\n\t// Block 0x3f0, offset 0xfc00\n\t0xfc03: 0x6c30c220,\n\t0xfc06: 0x6c30c420, 0xfc07: 0x6c106420,\n\t0xfc08: 0x6c30be20, 0xfc09: 0x6c30bc20,\n\t0xfc0e: 0x6c018c20,\n\t0xfc12: 0x6c30d420,\n\t0xfc15: 0x6c30d220,\n\t0xfc1b: 0x6c016620,\n\t0xfc1f: 0x6c30ce20,\n\t0xfc23: 0x6c30cc20,\n\t0xfc26: 0x6c30c820,\n\t0xfc28: 0x6c02ea20, 0xfc2a: 0x6c30c620, 0xfc2b: 0x6c08f420,\n\t0xfc2c: 0x6c018a20,\n\t0xfc3b: 0x6c072220,\n\t0xfc3e: 0x6c30da20, 0xfc3f: 0x6c30d820,\n\t// Block 0x3f1, offset 0xfc40\n\t0xfc41: 0x6c30d620,\n\t0xfc44: 0x6c30d020, 0xfc46: 0x6c30dc20,\n\t0xfc48: 0x6c30de20,\n\t0xfc50: 0x6c30e820, 0xfc51: 0x6c30e620,\n\t0xfc59: 0x6c30ea20,\n\t0xfc5c: 0x6c00d620, 0xfc5d: 0x6c30e020, 0xfc5e: 0x6c30e220,\n\t0xfc60: 0x6c074420, 0xfc61: 0x6c14c220,\n\t0xfc64: 0x6c30e420,\n\t0xfc6c: 0x6c13f820, 0xfc6f: 0x6c30f420,\n\t0xfc72: 0x6c30ec20,\n\t0xfc7a: 0x6c30f620,\n\t// Block 0x3f2, offset 0xfc80\n\t0xfc87: 0x6c30f020,\n\t0xfc89: 0x6c30ee20,\n\t0xfc8f: 0x6c059c20,\n\t0xfc9a: 0x6c30f820,\n\t0xfca4: 0x6c30fa20,\n\t0xfca9: 0x6c30fc20, 0xfcab: 0x6c30f220,\n\t0xfcaf: 0x6c30ca20,\n\t0xfcb2: 0x6c30fe20,\n\t0xfcb4: 0x6c0f3220,\n\t0xfcb8: 0x6c310620, 0xfcba: 0x6c310820, 0xfcbb: 0x6c310420,\n\t// Block 0x3f3, offset 0xfcc0\n\t0xfcc1: 0x6c310220, 0xfcc2: 0x6c310e20,\n\t0xfcc4: 0x6c310020, 0xfcc6: 0x6c310a20,\n\t0xfccf: 0x6c310c20,\n\t0xfcd3: 0x6c311220,\n\t0xfcd9: 0x6c311020,\n\t0xfce6: 0x6c311620,\n\t0xfced: 0x6c311820, 0xfcef: 0x6c311a20,\n\t0xfcf2: 0x6c171620,\n\t0xfcf8: 0x6c311420, 0xfcf9: 0x6c0dce20, 0xfcfa: 0x6c07f220,\n\t0xfcfd: 0x6c311c20,\n\t// Block 0x3f4, offset 0xfd00\n\t0xfd1a: 0x6c311e20, 0xfd1b: 0x6c312020,\n\t0xfd1e: 0x6c312220,\n\t// Block 0x3f5, offset 0xfd40\n\t0xfd75: 0x6c312420,\n\t0xfd78: 0x6c060820, 0xfd79: 0x6c312620,\n\t0xfd7d: 0x6c312820, 0xfd7f: 0x6c08ee20,\n\t// Block 0x3f6, offset 0xfd80\n\t0xfd81: 0x6c312a20,\n\t0xfd88: 0x6c312c20, 0xfd8b: 0x6c312e20,\n\t0xfd8c: 0x6c313020,\n\t0xfd91: 0x6c313620, 0xfd92: 0x6c313220, 0xfd93: 0x6c16fc20,\n\t0xfd95: 0x6c313420, 0xfd97: 0x6c16a620,\n\t0xfd9d: 0x6c313820, 0xfd9f: 0x6c167e20,\n\t0xfda5: 0x6c313a20, 0xfda6: 0x6c11a020,\n\t0xfda9: 0x6c313c20, 0xfdaa: 0x6c314020,\n\t0xfdad: 0x6c314220,\n\t0xfdb8: 0x6c313e20, 0xfdb9: 0x6c073620, 0xfdba: 0x6c14ea20, 0xfdbb: 0x6c145a20,\n\t0xfdbc: 0x6c1c4020, 0xfdbe: 0x6c213620, 0xfdbf: 0x6c148a20,\n\t// Block 0x3f7, offset 0xfdc0\n\t0xfdc4: 0x6c018e20,\n\t0xfdcc: 0x6c314620, 0xfdcd: 0x6c040c20, 0xfdce: 0x6c314820, 0xfdcf: 0x6c314a20,\n\t0xfdd0: 0x6c314c20, 0xfdd2: 0x6c074620,\n\t0xfdd4: 0x6c314e20,\n\t0xfdd8: 0x6c235220, 0xfdd9: 0x6c150620, 0xfddb: 0x6c0dbe20,\n\t0xfddc: 0x6c315020, 0xfddd: 0x6c315420, 0xfdde: 0x6c315220,\n\t0xfde0: 0x6c315620,\n\t0xfde5: 0x6c315820,\n\t0xfde8: 0x6c315a20,\n\t0xfdef: 0x6c315c20,\n\t0xfdf4: 0x6c315e20, 0xfdf6: 0x6c316020, 0xfdf7: 0x6c316220,\n\t0xfdf9: 0x6c316420, 0xfdfb: 0x6c316620,\n\t0xfdfc: 0x6c316820, 0xfdfd: 0x6c316a20,\n\t// Block 0x3f8, offset 0xfe00\n\t0xfe07: 0x6c316c20,\n\t0xfe08: 0x6c316e20,\n\t0xfe0e: 0x6c0f7420,\n\t0xfe13: 0x6c065a20,\n\t0xfe15: 0x6c317220,\n\t0xfe20: 0x6c0cd620, 0xfe21: 0x6c317420,\n\t0xfe2c: 0x6c317620,\n\t0xfe3b: 0x6c125e20,\n\t0xfe3e: 0x6c317820,\n\t// Block 0x3f9, offset 0xfe40\n\t0xfe4a: 0x6c317a20, 0xfe4b: 0x6c254c20,\n\t0xfe4e: 0x6c2c2e20, 0xfe4f: 0x6c2f4420,\n\t0xfe52: 0x6c317c20,\n\t0xfe54: 0x6c317e20,\n\t0xfe5f: 0x6c318220,\n\t0xfe60: 0x6c318420, 0xfe61: 0x6c318620, 0xfe62: 0x6c16a820, 0xfe63: 0x6c318020,\n\t0xfe66: 0x6c318820, 0xfe67: 0x6c318a20,\n\t0xfe6a: 0x6c318e20,\n\t0xfe6c: 0x6c318c20,\n\t0xfe72: 0x6c319220,\n\t0xfe76: 0x6c319420, 0xfe77: 0x6c319020,\n\t// Block 0x3fa, offset 0xfe80\n\t0xfe8d: 0x6c163420,\n\t0xfe95: 0x6c319620,\n\t0xfe9c: 0x6c319820, 0xfe9d: 0x6c258620,\n\t0xfea0: 0x6c319a20,\n\t// Block 0x3fb, offset 0xfec0\n\t0xfec0: 0x6c2bdc20, 0xfec1: 0x6c06ce20, 0xfec2: 0x6c093c20, 0xfec3: 0x6c2c1020,\n\t0xfec4: 0x6c02c820, 0xfec5: 0x6c051c20, 0xfec6: 0x6c04f620, 0xfec7: 0x6c319820,\n\t0xfec8: 0x6c319820, 0xfec9: 0x6c056420, 0xfeca: 0x6c04ec20, 0xfecb: 0x6c19b020,\n\t0xfecc: 0x6c10a820, 0xfecd: 0x6c1dac20, 0xfece: 0x6c245a20, 0xfecf: 0x6c15d620,\n\t0xfed0: 0x6c29d420, 0xfed1: 0x6c15d820, 0xfed2: 0x6c15da20, 0xfed3: 0x6c2d5e20,\n\t0xfed4: 0x6c207020, 0xfed5: 0x6c15e420, 0xfed6: 0x6c22ae20, 0xfed7: 0x6c237220,\n\t0xfed8: 0x6c15e820, 0xfed9: 0x6c15ea20, 0xfeda: 0x6c2fc820, 0xfedb: 0x6c174220,\n\t0xfedc: 0x6c15ee20, 0xfedd: 0x6c15f220, 0xfede: 0x6c22f420, 0xfedf: 0x6c15f820,\n\t0xfee0: 0x6c312220, 0xfee1: 0x6c15f020, 0xfee2: 0x6c15f420, 0xfee3: 0x6c15f620,\n\t0xfee4: 0x6c2b0220, 0xfee5: 0x6c1e1420, 0xfee6: 0x6c285620, 0xfee7: 0x43103e20,\n\t0xfee8: 0x6c16de20, 0xfee9: 0x6c16e220, 0xfeea: 0x6c16e820, 0xfeeb: 0x6c16ee20,\n\t0xfeec: 0x6c16f820, 0xfeed: 0x6c179220, 0xfeee: 0x6c169020, 0xfeef: 0x6c18b420,\n\t0xfef0: 0x42c98820, 0xfef1: 0x6c16d020, 0xfef2: 0x6c22f220, 0xfef3: 0x6c249620,\n\t0xfef4: 0x6c16f220, 0xfef5: 0x6c29cc20, 0xfef6: 0x6c163c20, 0xfef7: 0x6c16d620,\n\t0xfef8: 0x6c16d820, 0xfef9: 0x6c16ce20, 0xfefa: 0x6c07f220, 0xfefb: 0x6c250420,\n\t0xfefc: 0x6c254420, 0xfefd: 0x42fb4020, 0xfefe: 0x43079220, 0xfeff: 0x43260820,\n\t// Block 0x3fc, offset 0xff00\n\t0xff00: 0x6c08ee20, 0xff01: 0x6c170420, 0xff02: 0x6c1a9e20, 0xff03: 0x6c16e020,\n\t0xff04: 0x6c262620, 0xff05: 0x6c16f420, 0xff06: 0x6c16ec20, 0xff07: 0x6c251c20,\n\t0xff08: 0x6c16d420, 0xff09: 0x6c15e220, 0xff0a: 0x6c1a9620, 0xff0b: 0x42b8c420,\n\t0xff0c: 0x6c209220, 0xff0d: 0x42dbb420, 0xff0e: 0x6c16ea20, 0xff0f: 0x6c168620,\n\t0xff10: 0x6c271420, 0xff11: 0x6c2ea420, 0xff12: 0x6c2f1420, 0xff13: 0x6c170020,\n\t0xff14: 0x6c31a420, 0xff15: 0x6c164620, 0xff16: 0x6c165620, 0xff17: 0x6c003a20,\n\t0xff18: 0x6c126e20, 0xff19: 0x6c166220, 0xff1a: 0x6c2bc620, 0xff1b: 0x6c1dfe20,\n\t0xff1c: 0x6c207020, 0xff1d: 0x6c0dec20, 0xff1e: 0x6c0e1420, 0xff1f: 0x6c10fa20,\n\t0xff20: 0x6c0fe420, 0xff21: 0x6c161820, 0xff22: 0x6c007620, 0xff23: 0x6c142c20,\n\t0xff24: 0x42f1f620, 0xff25: 0x6c138820, 0xff26: 0x6c131420, 0xff27: 0x6c12c420,\n\t0xff28: 0x6c122e20, 0xff29: 0x6c1ed820, 0xff2a: 0x6c080620, 0xff2b: 0x6c190a20,\n\t0xff2c: 0x6c07aa20, 0xff2d: 0x6c0a9c20, 0xff2e: 0x6c15b620, 0xff2f: 0x43155420,\n\t0xff30: 0x6c082020, 0xff31: 0x6c0dfc20, 0xff32: 0x6c0ef020, 0xff33: 0x6c099820,\n\t0xff34: 0x6c095620, 0xff35: 0x6c161e20, 0xff36: 0x6c162020, 0xff37: 0x6c164020,\n\t0xff38: 0x6c182620, 0xff39: 0x6c185a20, 0xff3a: 0x6c164c20, 0xff3b: 0x6c165820,\n\t0xff3c: 0x6c165a20, 0xff3d: 0x6c165c20, 0xff3e: 0x6c166020, 0xff3f: 0x6c18c020,\n\t// Block 0x3fd, offset 0xff40\n\t0xff40: 0x6c16cc20, 0xff41: 0x6c0a3a20, 0xff42: 0x6c1c6220, 0xff43: 0x6c163a20,\n\t0xff44: 0x6c228020, 0xff45: 0x6c24f620, 0xff46: 0x6c2e7420, 0xff47: 0x6c2ffc20,\n\t0xff48: 0x6c16a620, 0xff49: 0x6c314820, 0xff4a: 0x6c166620, 0xff4b: 0x42cd8c20,\n\t0xff4c: 0x42d6ee20, 0xff4d: 0x6c2cf620, 0xff4e: 0x6c110220, 0xff4f: 0x6c16ba20,\n\t0xff50: 0x6c1dba20, 0xff51: 0x6c110820, 0xff52: 0x6c16bc20, 0xff53: 0x6c16be20,\n\t0xff54: 0x42e91220, 0xff55: 0x42f39420, 0xff56: 0x6c16c220, 0xff57: 0x6c16c420,\n\t0xff58: 0x6c2cdc20, 0xff59: 0x6c16c620, 0xff5a: 0x6c16c820, 0xff5b: 0x43269420,\n\t0xff5c: 0x6c16ae20, 0xff5d: 0x6c16b020, 0xff5e: 0x6c00ac20, 0xff5f: 0x6c16b220,\n\t0xff60: 0x6c16b420, 0xff61: 0x43155420, 0xff62: 0x6c16b620, 0xff63: 0x6c110420,\n\t0xff64: 0x6c110620, 0xff65: 0x42d75c20, 0xff66: 0x6c16c020, 0xff67: 0x6c235e20,\n\t0xff68: 0x6c168a20, 0xff69: 0x6c1a1220, 0xff6a: 0x6c10fa20, 0xff6b: 0x6c169420,\n\t0xff6c: 0x6c169620, 0xff6d: 0x6c169820, 0xff6e: 0x6c238e20, 0xff6f: 0x6c278420,\n\t0xff70: 0x6c27c420, 0xff71: 0x6c169e20, 0xff72: 0x6c16a220, 0xff73: 0x6c2f0420,\n\t0xff74: 0x6c166420, 0xff75: 0x6c168e20, 0xff76: 0x6c255020, 0xff77: 0x6c2d9a20,\n\t0xff78: 0x6c2ecc20, 0xff79: 0x6c1d1a20, 0xff7a: 0x6c163e20, 0xff7b: 0x6c164220,\n\t0xff7c: 0x6c164820, 0xff7d: 0x6c10e820, 0xff7e: 0x6c164a20, 0xff7f: 0x6c207020,\n\t// Block 0x3fe, offset 0xff80\n\t0xff80: 0x6c22e020, 0xff81: 0x6c165220, 0xff82: 0x6c297e20, 0xff83: 0x6c165e20,\n\t0xff84: 0x6c163420, 0xff85: 0x6c1f2a20, 0xff86: 0x6c2e9a20, 0xff87: 0x6c162220,\n\t0xff88: 0x42cef620, 0xff89: 0x6c154020, 0xff8a: 0x6c162420, 0xff8b: 0x6c162620,\n\t0xff8c: 0x6c162820, 0xff8d: 0x6c162a20, 0xff8e: 0x6c162c20, 0xff8f: 0x6c128220,\n\t0xff90: 0x6c168820, 0xff91: 0x6c16fa20, 0xff92: 0x6c1dce20, 0xff93: 0x6c161420,\n\t0xff94: 0x6c166a20, 0xff95: 0x6c1bde20, 0xff96: 0x6c21cc20, 0xff97: 0x6c167820,\n\t0xff98: 0x6c161620, 0xff99: 0x6c1d6020, 0xff9a: 0x6c053820, 0xff9b: 0x6c161820,\n\t0xff9c: 0x6c163020, 0xff9d: 0x6c15fc20, 0xff9e: 0x6c15fe20, 0xff9f: 0x6c160020,\n\t0xffa0: 0x6c006e20, 0xffa1: 0x6c160220, 0xffa2: 0x6c160420, 0xffa3: 0x6c0f7620,\n\t0xffa4: 0x6c160620, 0xffa5: 0x6c160a20, 0xffa6: 0x6c1da420, 0xffa7: 0x6c160c20,\n\t0xffa8: 0x6c160e20, 0xffa9: 0x6c161020, 0xffaa: 0x6c161220, 0xffab: 0x6c106620,\n\t0xffac: 0x6c0f8820, 0xffad: 0x6c193020, 0xffae: 0x6c167220, 0xffaf: 0x42e93020,\n\t0xffb0: 0x6c29ca20, 0xffb1: 0x6c167a20, 0xffb2: 0x6c167c20, 0xffb3: 0x6c167e20,\n\t0xffb4: 0x6c166e20, 0xffb5: 0x6c167020, 0xffb6: 0x6c167620, 0xffb7: 0x6c161a20,\n\t0xffb8: 0x6c02b020, 0xffb9: 0x6c162e20, 0xffba: 0x42e58020, 0xffbb: 0x6c229820,\n\t0xffbc: 0x6c08f220, 0xffbd: 0x6c09c020, 0xffbe: 0x6c0e7a20, 0xffbf: 0x6c086620,\n\t// Block 0x3ff, offset 0xffc0\n\t0xffc0: 0x6c0c3420, 0xffc1: 0x6c0fde20, 0xffc2: 0x6c0dde20, 0xffc3: 0x6c102420,\n\t0xffc4: 0x6c0dd820, 0xffc5: 0x6c105420, 0xffc6: 0x6c140e20, 0xffc7: 0x6c2ce020,\n\t0xffc8: 0x6c070420, 0xffc9: 0x6c071a20, 0xffca: 0x6c05f620, 0xffcb: 0x6c028220,\n\t0xffcc: 0x6c181a20, 0xffcd: 0x42ab8020, 0xffce: 0x43f41c20, 0xffcf: 0x43f41e20,\n\t0xffd0: 0x6c0f0a20, 0xffd1: 0x43f42220, 0xffd2: 0x6c0be420, 0xffd3: 0x43f42620,\n\t0xffd4: 0x43f42820, 0xffd5: 0x42a3bc20, 0xffd6: 0x6c0ea020, 0xffd7: 0x6c012a20,\n\t0xffd8: 0x6c169a20, 0xffd9: 0x6c0b4420, 0xffda: 0x6c0aa220, 0xffdb: 0x6c131a20,\n\t0xffdc: 0x6c153e20, 0xffdd: 0x6c0bf420, 0xffde: 0x6c00ce20, 0xffdf: 0x43f43e20,\n\t0xffe0: 0x430c2420, 0xffe1: 0x43f44220, 0xffe2: 0x6c0a3420, 0xffe3: 0x43f44620,\n\t0xffe4: 0x43f44820, 0xffe5: 0x6c009e20, 0xffe6: 0x6c0fd420, 0xffe7: 0x43f44e20,\n\t0xffe8: 0x43f45020, 0xffe9: 0x43f45220, 0xffea: 0x6c120620, 0xffeb: 0x6c08bc20,\n\t0xffec: 0x6c036620, 0xffed: 0x6c0f3220, 0xffee: 0x4321bc20, 0xffef: 0x6c16a020,\n\t0xfff0: 0x6c12f820, 0xfff1: 0x6c0cd820, 0xfff2: 0x6c14e020, 0xfff3: 0x6c138a20,\n\t0xfff4: 0x6c04c820, 0xfff5: 0x6c121820, 0xfff6: 0x6c02be20, 0xfff7: 0x6c0e1820,\n\t0xfff8: 0x6c038e20, 0xfff9: 0x6c135220, 0xfffa: 0x6c143220, 0xfffb: 0x6c0cec20,\n\t0xfffc: 0x6c1b9c20, 0xfffd: 0x6c022a20, 0xfffe: 0x6c025c20, 0xffff: 0x6c0d3820,\n\t// Block 0x400, offset 0x10000\n\t0x10000: 0x6c0ec020, 0x10001: 0x6c12c020, 0x10002: 0x6c03a620, 0x10003: 0x6c0a2220,\n\t0x10004: 0x6c116220, 0x10005: 0x6c023c20, 0x10006: 0x6c0a2620, 0x10007: 0x6c033220,\n\t0x10008: 0x6c093220, 0x10009: 0x42e45620, 0x1000a: 0x6c0de420, 0x1000b: 0x6c123420,\n\t0x1000c: 0x6c093420, 0x1000d: 0x6c089a20, 0x1000e: 0x6c03ba20, 0x1000f: 0x6c157420,\n\t0x10010: 0x6c0cc420, 0x10011: 0x6c09e220, 0x10012: 0x6c01dc20, 0x10013: 0x6c0f5e20,\n\t0x10014: 0x6c074020, 0x10015: 0x6c108220, 0x10016: 0x6c0c4220, 0x10017: 0x6c16c220,\n\t0x10018: 0x6c270220, 0x10019: 0x6c11f620, 0x1001a: 0x6c0a2c20, 0x1001b: 0x6c093820,\n\t0x1001c: 0x6c09a620, 0x1001d: 0x4304f220, 0x1001e: 0x4304f220, 0x1001f: 0x6c0ea420,\n\t0x10020: 0x6c02cc20, 0x10021: 0x6c08aa20, 0x10022: 0x6c013020, 0x10023: 0x6c04e820,\n\t0x10024: 0x6c12bc20, 0x10025: 0x6c0d3e20, 0x10026: 0x431f6c20, 0x10027: 0x6c009e20,\n\t0x10028: 0x6c10ca20, 0x10029: 0x6c04aa20, 0x1002a: 0x6c12be20, 0x1002b: 0x6c056a20,\n\t0x1002c: 0x4885dc20, 0x1002d: 0x6c036820,\n\t0x10030: 0x6c135c20, 0x10031: 0x6c185420, 0x10032: 0x6c0ca420, 0x10033: 0x429f0020,\n\t0x10034: 0x6c09c420, 0x10035: 0x6c182c20, 0x10036: 0x6c155820, 0x10037: 0x6c094620,\n\t0x10038: 0x6c02be20, 0x10039: 0x42aaaa20, 0x1003a: 0x6c199620, 0x1003b: 0x42abc420,\n\t0x1003c: 0x6c0f0a20, 0x1003d: 0x6c133620, 0x1003e: 0x6c014020, 0x1003f: 0x6c144a20,\n\t// Block 0x401, offset 0x10040\n\t0x10040: 0x6c1b0820, 0x10041: 0x42b65020, 0x10042: 0x42bda420, 0x10043: 0x42bdb220,\n\t0x10044: 0x6c07b020, 0x10045: 0x6c1cb620, 0x10046: 0x6c1d2c20, 0x10047: 0x6c0b2e20,\n\t0x10048: 0x6c154820, 0x10049: 0x6c0d3820, 0x1004a: 0x42c2c020, 0x1004b: 0x6c0ec020,\n\t0x1004c: 0x6c0da620, 0x1004d: 0x6c1e5820, 0x1004e: 0x6c1e2c20, 0x1004f: 0x42c8a420,\n\t0x10050: 0x6c1eca20, 0x10051: 0x6c0be420, 0x10052: 0x6c16e220, 0x10053: 0x6c141020,\n\t0x10054: 0x6c0aee20, 0x10055: 0x6c210220, 0x10056: 0x6c082020, 0x10057: 0x6c162420,\n\t0x10058: 0x42ddb620, 0x10059: 0x6c08d420, 0x1005a: 0x6c033220, 0x1005b: 0x6c109020,\n\t0x1005c: 0x6c093220, 0x1005d: 0x42ef4e20, 0x1005e: 0x6c094e20, 0x1005f: 0x6c11f020,\n\t0x10060: 0x6c0ea020, 0x10061: 0x42e8e220, 0x10062: 0x42ea0c20, 0x10063: 0x6c020820,\n\t0x10064: 0x42ec3a20, 0x10065: 0x6c243820, 0x10066: 0x6c012a20, 0x10067: 0x6c0bf220,\n\t0x10068: 0x6c0eec20, 0x10069: 0x42ee9420, 0x1006a: 0x6c0e7e20, 0x1006b: 0x42f19820,\n\t0x1006c: 0x42f56220, 0x1006d: 0x6c0c4220, 0x1006e: 0x42f8f620, 0x1006f: 0x6c26c220,\n\t0x10070: 0x6c16c220, 0x10071: 0x42fe7c20, 0x10072: 0x6c093820, 0x10073: 0x6c070220,\n\t0x10074: 0x6c01ec20, 0x10075: 0x430ef220, 0x10076: 0x6c2aee20, 0x10077: 0x6c132020,\n\t0x10078: 0x6c08aa20, 0x10079: 0x6c0ed820, 0x1007a: 0x6c0a3420, 0x1007b: 0x6c0c0220,\n\t0x1007c: 0x6c013020, 0x1007d: 0x6c0dec20, 0x1007e: 0x6c154e20, 0x1007f: 0x6c04e820,\n\t// Block 0x402, offset 0x10080\n\t0x10080: 0x6c1ede20, 0x10081: 0x6c0d3e20, 0x10082: 0x6c155020, 0x10083: 0x6c2d5020,\n\t0x10084: 0x43233220, 0x10085: 0x4324ec20, 0x10086: 0x432cf820, 0x10087: 0x6c10ca20,\n\t0x10088: 0x6c153e20, 0x10089: 0x432fb620, 0x1008a: 0x6c04aa20, 0x1008b: 0x43301620,\n\t0x1008c: 0x6c12be20, 0x1008d: 0x43362420, 0x1008e: 0x6c319820, 0x1008f: 0x48509420,\n\t0x10090: 0x48508820, 0x10091: 0x4867aa20, 0x10092: 0x44773a20, 0x10093: 0x44803020,\n\t0x10094: 0x44807220, 0x10095: 0x48a49220, 0x10096: 0x48b9a020, 0x10097: 0x48fda620,\n\t0x10098: 0x433e8620, 0x10099: 0x433f1c20,\n\t// Block 0x403, offset 0x100c0\n\t0x100c1: 0x4002ba20, 0x100c2: 0x4003e020, 0x100c3: 0x4004ea20,\n\t0x100c4: 0x4027de20, 0x100c5: 0x4004ec20, 0x100c6: 0x4004e620, 0x100c7: 0x4003d220,\n\t0x100c8: 0x4003f420, 0x100c9: 0x4003f620, 0x100ca: 0x4004d820, 0x100cb: 0x40093820,\n\t0x100cc: 0x40024020, 0x100cd: 0x40021a20, 0x100ce: 0x4002e420, 0x100cf: 0x4004e220,\n\t0x100d0: 0x4029cc20, 0x100d1: 0x4029ce20, 0x100d2: 0x4029d020, 0x100d3: 0x4029d220,\n\t0x100d4: 0x4029d420, 0x100d5: 0x4029d620, 0x100d6: 0x4029d820, 0x100d7: 0x4029da20,\n\t0x100d8: 0x4029dc20, 0x100d9: 0x4029de20, 0x100da: 0x40026c20, 0x100db: 0x40026220,\n\t0x100dc: 0x40094020, 0x100dd: 0x40094220, 0x100de: 0x40094420, 0x100df: 0x4002c420,\n\t0x100e0: 0x4004d620, 0x100e1: 0x002bde88, 0x100e2: 0x002c0a88, 0x100e3: 0x002c3a88,\n\t0x100e4: 0x002c6288, 0x100e5: 0x002c9888, 0x100e6: 0x002d0888, 0x100e7: 0x002d2288,\n\t0x100e8: 0x002d6888, 0x100e9: 0x002d9a88, 0x100ea: 0x002dcc88, 0x100eb: 0x002dfe88,\n\t0x100ec: 0x002e2288, 0x100ed: 0x002e8288, 0x100ee: 0x002e9e88, 0x100ef: 0x002ee288,\n\t0x100f0: 0x002f2c88, 0x100f1: 0x002f5688, 0x100f2: 0x002f7a88, 0x100f3: 0x002fe688,\n\t0x100f4: 0x00302c88, 0x100f5: 0x00306c88, 0x100f6: 0x0030be88, 0x100f7: 0x0030e288,\n\t0x100f8: 0x0030f688, 0x100f9: 0x00310088, 0x100fa: 0x00312a88, 0x100fb: 0x4003f820,\n\t0x100fc: 0x4003d220, 0x100fd: 0x4003fa20, 0x100fe: 0x40062420, 0x100ff: 0x40021620,\n\t// Block 0x404, offset 0x10100\n\t0x10100: 0x40061e20, 0x10101: 0x402bde20, 0x10102: 0x402c0a20, 0x10103: 0x402c3a20,\n\t0x10104: 0x402c6220, 0x10105: 0x402c9820, 0x10106: 0x402d0820, 0x10107: 0x402d2220,\n\t0x10108: 0x402d6820, 0x10109: 0x402d9a20, 0x1010a: 0x402dcc20, 0x1010b: 0x402dfe20,\n\t0x1010c: 0x402e2220, 0x1010d: 0x402e8220, 0x1010e: 0x402e9e20, 0x1010f: 0x402ee220,\n\t0x10110: 0x402f2c20, 0x10111: 0x402f5620, 0x10112: 0x402f7a20, 0x10113: 0x402fe620,\n\t0x10114: 0x40302c20, 0x10115: 0x40306c20, 0x10116: 0x4030be20, 0x10117: 0x4030e220,\n\t0x10118: 0x4030f620, 0x10119: 0x40310020, 0x1011a: 0x40312a20, 0x1011b: 0x4003fc20,\n\t0x1011c: 0x40094820, 0x1011d: 0x4003fe20, 0x1011e: 0x40094c20, 0x1011f: 0x00041883,\n\t0x10120: 0x00041a83, 0x10121: 0x40030420, 0x10122: 0x4004a420, 0x10123: 0x4004a620,\n\t0x10124: 0x40025c20, 0x10125: 0x00023e92, 0x10126: 0xca3c3601, 0x10127: 0xc64d3281,\n\t0x10128: 0xc71d3281, 0x10129: 0xc7dd3601, 0x1012a: 0xc8c43281, 0x1012b: 0xc9793281,\n\t0x1012c: 0xc6e83281, 0x1012d: 0xc8af3281, 0x1012e: 0xca1d3281, 0x1012f: 0xc8483601,\n\t0x10130: 0x0027d692, 0x10131: 0xc6533281, 0x10132: 0xc7233281, 0x10133: 0xc7f23601,\n\t0x10134: 0xc8ca3281, 0x10135: 0xc97f3281, 0x10136: 0xc6663281, 0x10137: 0xc7363601,\n\t0x10138: 0xc8143601, 0x10139: 0xc8dd3281, 0x1013a: 0xc9923601, 0x1013b: 0xc67f3601,\n\t0x1013c: 0xc7583601, 0x1013d: 0xc8363601, 0x1013e: 0xc8f63601, 0x1013f: 0xc9af3601,\n\t// Block 0x405, offset 0x10140\n\t0x10140: 0xc69c3601, 0x10141: 0xc7753601, 0x10142: 0xc85d3601, 0x10143: 0xc9133601,\n\t0x10144: 0xc9d13601, 0x10145: 0xc6ac3281, 0x10146: 0xc7853281, 0x10147: 0xc8703281,\n\t0x10148: 0xc9233281, 0x10149: 0xc9e13281, 0x1014a: 0xc6ca3601, 0x1014b: 0xc7a33601,\n\t0x1014c: 0xc88e3601, 0x1014d: 0xc9413601, 0x1014e: 0xc9ff3601, 0x1014f: 0xc6e23281,\n\t0x10150: 0xc7bb3281, 0x10151: 0xc8a93281, 0x10152: 0xc9593281, 0x10153: 0xca173281,\n\t0x10154: 0xc6ee3281, 0x10155: 0xc8b53281, 0x10156: 0xca233281, 0x10157: 0xc6f73281,\n\t0x10158: 0xc7c43281, 0x10159: 0xc8be3281, 0x1015a: 0xc9623281, 0x1015b: 0xca2c3281,\n\t0x1015c: 0xc7113601, 0x1015d: 0xca453ae1, 0x1015e: 0xa0012812, 0x1015f: 0xa0012912,\n\t0x10160: 0x4063a620, 0x10161: 0x4062ac20, 0x10162: 0x4062ae20, 0x10163: 0x40646820,\n\t0x10164: 0x4062b020, 0x10165: 0x40646c20, 0x10166: 0x40646e20, 0x10167: 0x4062b220,\n\t0x10168: 0x4062b420, 0x10169: 0x4062b620, 0x1016a: 0x40647420, 0x1016b: 0x40647620,\n\t0x1016c: 0x40647820, 0x1016d: 0x40647a20, 0x1016e: 0x40647c20, 0x1016f: 0x40647e20,\n\t0x10170: 0x4062e020, 0x10171: 0x4062b820, 0x10172: 0x4062ba20, 0x10173: 0x4062bc20,\n\t0x10174: 0x4062ee20, 0x10175: 0x4062be20, 0x10176: 0x4062c020, 0x10177: 0x4062c220,\n\t0x10178: 0x4062c420, 0x10179: 0x4062c620, 0x1017a: 0x4062c820, 0x1017b: 0x4062ca20,\n\t0x1017c: 0x4062cc20, 0x1017d: 0x4062ce20, 0x1017e: 0x4062d020,\n\t// Block 0x406, offset 0x10180\n\t0x10182: 0x4063a820, 0x10183: 0x4063aa20,\n\t0x10184: 0x4063ac20, 0x10185: 0x4063ae20, 0x10186: 0x4063b020, 0x10187: 0x4063b220,\n\t0x1018a: 0x4063b420, 0x1018b: 0x4063b620,\n\t0x1018c: 0x4063b820, 0x1018d: 0x4063ba20, 0x1018e: 0x4063bc20, 0x1018f: 0x4063be20,\n\t0x10192: 0x4063c020, 0x10193: 0x4063c220,\n\t0x10194: 0x4063c420, 0x10195: 0x4063c620, 0x10196: 0x4063c820, 0x10197: 0x4063ca20,\n\t0x1019a: 0x4063cc20, 0x1019b: 0x4063ce20,\n\t0x1019c: 0x4063d020,\n\t0x101a0: 0x4027dc20, 0x101a1: 0x4027e020, 0x101a2: 0x40094620, 0x101a3: 0x40021220,\n\t0x101a4: 0x40094a20, 0x101a5: 0x4027e220, 0x101a6: 0x40280820,\n\t0x101a8: 0x400d3220, 0x101a9: 0x40084420, 0x101aa: 0x40084820, 0x101ab: 0x40084620,\n\t0x101ac: 0x40084a20, 0x101ad: 0x400e6e20, 0x101ae: 0x400ec420,\n\t0x101b9: 0xa0000000, 0x101ba: 0xa0000000, 0x101bb: 0xa0000000,\n\t0x101bc: 0x4027ae20, 0x101bd: 0x4027b020, 0x101be: 0x00000285, 0x101bf: 0x2bfffe85,\n\t// Block 0x407, offset 0x101c0\n\t0x101c0: 0xe0003d0b, 0x101c1: 0xe0003cf3, 0x101c2: 0xe0003cf7, 0x101c3: 0xe0003cff,\n\t0x101c4: 0xe0003d0f, 0x101c5: 0xe0003d03, 0x101c6: 0xe0003d13, 0x101c7: 0xe0003cfb,\n\t0x101c8: 0xe0003d07,\n\t0x101d0: 0x02bf2e86, 0x101d1: 0x02a7de86,\n\t// Block 0x408, offset 0x10200\n\t0x10200: 0x429c7a20, 0x10201: 0x6c036a20, 0x10202: 0x429c8220, 0x10203: 0x48024420,\n\t0x10204: 0x429ec020, 0x10205: 0x6c12f820, 0x10206: 0x429f7620, 0x10207: 0x42a00420,\n\t0x10208: 0x42a0f420, 0x10209: 0x6c124e20, 0x1020a: 0x6c0cd820, 0x1020b: 0x6c0d3420,\n\t0x1020c: 0x44693c20, 0x1020d: 0x480c7420, 0x1020e: 0x6c14e020, 0x1020f: 0x6c182020,\n\t0x10210: 0x42a2c820, 0x10211: 0x6c050a20, 0x10212: 0x480a3820, 0x10213: 0x44697220,\n\t0x10214: 0x42a2ce20, 0x10215: 0x6c07a420, 0x10216: 0x480a9620, 0x10217: 0x6c0ada20,\n\t0x10218: 0x6c184020, 0x10219: 0x429d9820, 0x1021a: 0x6c0fea20, 0x1021b: 0x6c185420,\n\t0x1021c: 0x4923be20, 0x1021d: 0x6c186820, 0x1021e: 0x6c0b6220, 0x1021f: 0x4469be20,\n\t0x10220: 0x6c073a20, 0x10221: 0x42a48c20, 0x10222: 0x6c02bc20, 0x10223: 0x42a4ee20,\n\t0x10224: 0x446a2a20, 0x10225: 0x6c155820, 0x10226: 0x6c138a20, 0x10227: 0x6c04c820,\n\t0x10228: 0x6c094620, 0x10229: 0x6c13ba20, 0x1022a: 0x6c18c620, 0x1022b: 0x6c142c20,\n\t0x1022c: 0x6c18e820, 0x1022d: 0x6c121820, 0x1022e: 0x6c118020, 0x1022f: 0x6c0d4820,\n\t0x10230: 0x42a6fa20, 0x10231: 0x6c047c20, 0x10232: 0x6c047c20, 0x10233: 0x6c047c20,\n\t0x10234: 0x48145820, 0x10235: 0x6c023e20, 0x10236: 0x6c042020, 0x10237: 0x6c191020,\n\t0x10238: 0x4816c620, 0x10239: 0x6c047e20, 0x1023a: 0x6c090020, 0x1023b: 0x42a80c20,\n\t0x1023c: 0x42a93c20, 0x1023d: 0x6c042220, 0x1023e: 0x6c0f4020, 0x1023f: 0x6c098c20,\n\t// Block 0x409, offset 0x10240\n\t0x10240: 0x6c195220, 0x10241: 0x42a9ec20, 0x10242: 0x6c0ff020, 0x10243: 0x6c055c20,\n\t0x10244: 0x6c198220, 0x10245: 0x6c0c9e20, 0x10246: 0x6c0c9e20, 0x10247: 0x6c199620,\n\t0x10248: 0x6c040020, 0x10249: 0x42ab6620, 0x1024a: 0x42ab8420, 0x1024b: 0x6c1a2620,\n\t0x1024c: 0x6c0e1820, 0x1024d: 0x42ae2e20, 0x1024e: 0x42aca220, 0x1024f: 0x6c133420,\n\t0x10250: 0x6c0c3420, 0x10251: 0x6c0ce420, 0x10252: 0x6c0ade20, 0x10253: 0x6c0b0220,\n\t0x10254: 0x42b01a20, 0x10255: 0x6c056220, 0x10256: 0x42b06420, 0x10257: 0x6c13be20,\n\t0x10258: 0x42b15820, 0x10259: 0x4829c820, 0x1025a: 0x6c116c20, 0x1025b: 0x6c0f2620,\n\t0x1025c: 0x42b20c20, 0x1025d: 0x6c0d7620, 0x1025e: 0x6c14b820, 0x1025f: 0x6c1ace20,\n\t0x10260: 0x482d5020, 0x10261: 0x482dd420, 0x10262: 0x42b3d820, 0x10263: 0x42b43620,\n\t0x10264: 0x42b44e20, 0x10265: 0x42b3b020, 0x10266: 0x6c12cc20, 0x10267: 0x446ddc20,\n\t0x10268: 0x446df820, 0x10269: 0x42b61020, 0x1026a: 0x6c1b3420, 0x1026b: 0x6c1b3420,\n\t0x1026c: 0x48339020, 0x1026d: 0x6c1b5c20, 0x1026e: 0x42b7b020, 0x1026f: 0x6c10fa20,\n\t0x10270: 0x6c1b7620, 0x10271: 0x48363020, 0x10272: 0x6c097e20, 0x10273: 0x6c0a6220,\n\t0x10274: 0x6c101820, 0x10275: 0x6c1b8420, 0x10276: 0x446f0220, 0x10277: 0x6c0fc220,\n\t0x10278: 0x6c1b9c20, 0x10279: 0x42b98020, 0x1027a: 0x42b91a20, 0x1027b: 0x483bc820,\n\t0x1027c: 0x42ba8620, 0x1027d: 0x483bcc20, 0x1027e: 0x42badc20, 0x1027f: 0x42bad620,\n\t// Block 0x40a, offset 0x10280\n\t0x10280: 0x42baf820, 0x10281: 0x6c0a1420, 0x10282: 0x42bbc420, 0x10283: 0x44705e20,\n\t0x10284: 0x6c0e0220, 0x10285: 0x42bc5020, 0x10286: 0x6c140620, 0x10287: 0x42bcd220,\n\t0x10288: 0x4470c420, 0x10289: 0x48430620, 0x1028a: 0x4470f820, 0x1028b: 0x42bd6020,\n\t0x1028c: 0x42bd6620, 0x1028d: 0x6c0a2820, 0x1028e: 0x6c16de20, 0x1028f: 0x49472420,\n\t0x10290: 0x6c1c6e20, 0x10291: 0x48466220, 0x10292: 0x48466220, 0x10293: 0x6c286820,\n\t0x10294: 0x42be4420, 0x10295: 0x42be4420, 0x10296: 0x44718e20, 0x10297: 0x48657020,\n\t0x10298: 0x48c3b420, 0x10299: 0x6c056620, 0x1029a: 0x6c0ebc20, 0x1029b: 0x4471c620,\n\t0x1029c: 0x42bf3420, 0x1029d: 0x6c10f020, 0x1029e: 0x6c088020, 0x1029f: 0x42bff220,\n\t0x102a0: 0x6c1d0220, 0x102a1: 0x44727420, 0x102a2: 0x44723820, 0x102a3: 0x6c022a20,\n\t0x102a4: 0x484da820, 0x102a5: 0x6c109620, 0x102a6: 0x6c08cc20, 0x102a7: 0x6c06c020,\n\t0x102a8: 0x6c0b2e20, 0x102a9: 0x6c06c020, 0x102aa: 0x42c2f420, 0x102ab: 0x6c0d3820,\n\t0x102ac: 0x6c05da20, 0x102ad: 0x6c133820, 0x102ae: 0x42c35e20, 0x102af: 0x42c3bc20,\n\t0x102b0: 0x6c0ec020, 0x102b1: 0x6c1dac20, 0x102b2: 0x6c0bdc20, 0x102b3: 0x6c1dc620,\n\t0x102b4: 0x42c4ba20, 0x102b5: 0x6c13cc20, 0x102b6: 0x6c1df220, 0x102b7: 0x6c1e2620,\n\t0x102b8: 0x48561820, 0x102b9: 0x6c120820, 0x102ba: 0x42c5f820, 0x102bb: 0x6c092c20,\n\t0x102bc: 0x6c0cf620, 0x102bd: 0x42c7c820, 0x102be: 0x4857e220, 0x102bf: 0x42c84420,\n\t// Block 0x40b, offset 0x102c0\n\t0x102c0: 0x42c78a20, 0x102c1: 0x6c014820, 0x102c2: 0x44745c20, 0x102c3: 0x6c145420,\n\t0x102c4: 0x42c8fc20, 0x102c5: 0x42c93a20, 0x102c6: 0x42c8ee20, 0x102c7: 0x4474d820,\n\t0x102c8: 0x6c12c020, 0x102c9: 0x6c057620, 0x102ca: 0x48601420, 0x102cb: 0x42cbc620,\n\t0x102cc: 0x6c0a2e20, 0x102cd: 0x6c1f1420, 0x102ce: 0x44763220, 0x102cf: 0x6c0a2220,\n\t0x102d0: 0x44761020, 0x102d1: 0x4475c820, 0x102d2: 0x6c141620, 0x102d3: 0x6c183c20,\n\t0x102d4: 0x6c07a620, 0x102d5: 0x42cd3820, 0x102d6: 0x6c27ec20, 0x102d7: 0x4487b220,\n\t0x102d8: 0x6c16e220, 0x102d9: 0x6c141020, 0x102da: 0x42ce4220, 0x102db: 0x6c1f7020,\n\t0x102dc: 0x6c094a20, 0x102dd: 0x48678620, 0x102de: 0x44769220, 0x102df: 0x42cff420,\n\t0x102e0: 0x6c1f8c20, 0x102e1: 0x42d0a420, 0x102e2: 0x6c116220, 0x102e3: 0x4868da20,\n\t0x102e4: 0x42d11c20, 0x102e5: 0x42d03e20, 0x102e6: 0x42d22820, 0x102e7: 0x44773a20,\n\t0x102e8: 0x42d28420, 0x102e9: 0x42d34620, 0x102ea: 0x42d3d420, 0x102eb: 0x42d55020,\n\t0x102ec: 0x486d4620, 0x102ed: 0x6c051e20, 0x102ee: 0x44783020, 0x102ef: 0x6c08d220,\n\t0x102f0: 0x48714e20, 0x102f1: 0x6c20f820, 0x102f2: 0x44789c20, 0x102f3: 0x42d6e420,\n\t0x102f4: 0x42d73e20, 0x102f5: 0x6c082020, 0x102f6: 0x6c028c20, 0x102f7: 0x48751a20,\n\t0x102f8: 0x483a1620, 0x102f9: 0x4875f420, 0x102fa: 0x6c11ec20, 0x102fb: 0x48797820,\n\t0x102fc: 0x6c014c20, 0x102fd: 0x42d99a20, 0x102fe: 0x42d8ce20, 0x102ff: 0x42da2c20,\n\t// Block 0x40c, offset 0x10300\n\t0x10300: 0x6c113620, 0x10301: 0x6c023c20, 0x10302: 0x6c162420, 0x10303: 0x6c06dc20,\n\t0x10304: 0x6c0b3a20, 0x10305: 0x6c21a620, 0x10306: 0x487a3c20, 0x10307: 0x42da6820,\n\t0x10308: 0x6c06de20, 0x10309: 0x6c21d220, 0x1030a: 0x447a6620, 0x1030b: 0x6c08d420,\n\t0x1030c: 0x42dd8e20, 0x1030d: 0x487da220, 0x1030e: 0x6c21a820, 0x1030f: 0x6c0ec820,\n\t0x10310: 0x487ebc20, 0x10311: 0x487f1c20, 0x10312: 0x6c226020, 0x10313: 0x42e07220,\n\t0x10314: 0x6c109020, 0x10315: 0x6c228220, 0x10316: 0x447b2c20, 0x10317: 0x42e09420,\n\t0x10318: 0x6c07bc20, 0x10319: 0x42e0ee20, 0x1031a: 0x6c0e2820, 0x1031b: 0x480a4a20,\n\t0x1031c: 0x42e28a20, 0x1031d: 0x4884c620, 0x1031e: 0x42e33820, 0x1031f: 0x48875620,\n\t0x10320: 0x6c22f620, 0x10321: 0x6c094e20, 0x10322: 0x42e4a020, 0x10323: 0x488c1020,\n\t0x10324: 0x6c07c020, 0x10325: 0x42e52a20, 0x10326: 0x488e6a20, 0x10327: 0x48902820,\n\t0x10328: 0x6c236220, 0x10329: 0x6c018420, 0x1032a: 0x447d5820, 0x1032b: 0x42e74a20,\n\t0x1032c: 0x447d7020, 0x1032d: 0x447d7020, 0x1032e: 0x42e88e20, 0x1032f: 0x6c238c20,\n\t0x10330: 0x42e8e220, 0x10331: 0x42e90a20, 0x10332: 0x6c23a020, 0x10333: 0x447e3620,\n\t0x10334: 0x42ea4820, 0x10335: 0x48986c20, 0x10336: 0x42ea7c20, 0x10337: 0x48992420,\n\t0x10338: 0x6c007620, 0x10339: 0x48433e20, 0x1033a: 0x42ec2020, 0x1033b: 0x489f4220,\n\t0x1033c: 0x489f7020, 0x1033d: 0x48a08820, 0x1033e: 0x447ff820, 0x1033f: 0x44801020,\n\t// Block 0x40d, offset 0x10340\n\t0x10340: 0x6c0eec20, 0x10341: 0x48a1e620, 0x10342: 0x48a1e420, 0x10343: 0x48a23220,\n\t0x10344: 0x48a26620, 0x10345: 0x6c24a820, 0x10346: 0x6c0b4220, 0x10347: 0x6c0b4220,\n\t0x10348: 0x42ee9420, 0x10349: 0x44807220, 0x1034a: 0x6c24c820, 0x1034b: 0x44808c20,\n\t0x1034c: 0x44812c20, 0x1034d: 0x48a83a20, 0x1034e: 0x42f09c20, 0x1034f: 0x6c250420,\n\t0x10350: 0x42f19820, 0x10351: 0x4481c620, 0x10352: 0x48ac4c20, 0x10353: 0x6c0cc420,\n\t0x10354: 0x48ad3420, 0x10355: 0x48ad8a20, 0x10356: 0x6c131a20, 0x10357: 0x42f3d620,\n\t0x10358: 0x44825e20, 0x10359: 0x6c074020, 0x1035a: 0x42f49420, 0x1035b: 0x6c01ac20,\n\t0x1035c: 0x48b2f820, 0x1035d: 0x48b54e20, 0x1035e: 0x48b54e20, 0x1035f: 0x42f5dc20,\n\t0x10360: 0x44840420, 0x10361: 0x48b75620, 0x10362: 0x6c261820, 0x10363: 0x6c0e6a20,\n\t0x10364: 0x44844e20, 0x10365: 0x48b90020, 0x10366: 0x6c268420, 0x10367: 0x44854020,\n\t0x10368: 0x42f9d020, 0x10369: 0x42f9c620, 0x1036a: 0x6c03c020, 0x1036b: 0x48bf0c20,\n\t0x1036c: 0x6c26bc20, 0x1036d: 0x44860220, 0x1036e: 0x6c26d220, 0x1036f: 0x42fc0420,\n\t0x10370: 0x42fc8a20, 0x10371: 0x44866820, 0x10372: 0x48c45020, 0x10373: 0x48c48e20,\n\t0x10374: 0x4486b220, 0x10375: 0x48c5b220, 0x10376: 0x42fef420, 0x10377: 0x48c67c20,\n\t0x10378: 0x42ff2a20, 0x10379: 0x42fff420, 0x1037a: 0x6c093820, 0x1037b: 0x48c9b420,\n\t0x1037c: 0x48ca4620, 0x1037d: 0x4300c020, 0x1037e: 0x48cb5020, 0x1037f: 0x6c27d620,\n\t// Block 0x40e, offset 0x10380\n\t0x10380: 0x4866be20, 0x10381: 0x4487aa20, 0x10382: 0x6c009220, 0x10383: 0x43020620,\n\t0x10384: 0x44881620, 0x10385: 0x6c281420, 0x10386: 0x42b56a20, 0x10387: 0x48cf4e20,\n\t0x10388: 0x48cf6a20, 0x10389: 0x48672620, 0x1038a: 0x48673820, 0x1038b: 0x6c286820,\n\t0x1038c: 0x43040820, 0x1038d: 0x6c08ea20, 0x1038e: 0x4488d620, 0x1038f: 0x43052220,\n\t0x10390: 0x6c00a420, 0x10391: 0x6c091e20, 0x10392: 0x42a56620, 0x10393: 0x6c01e420,\n\t0x10394: 0x6c13e220, 0x10395: 0x6c020c20, 0x10396: 0x6c050020, 0x10397: 0x48d67820,\n\t0x10398: 0x6c095620, 0x10399: 0x43063a20, 0x1039a: 0x4306c620, 0x1039b: 0x43075a20,\n\t0x1039c: 0x6c28f220, 0x1039d: 0x6c292820, 0x1039e: 0x4307ce20, 0x1039f: 0x6c0ea420,\n\t0x103a0: 0x4306a620, 0x103a1: 0x6c03f820, 0x103a2: 0x6c04e220, 0x103a3: 0x6c07cc20,\n\t0x103a4: 0x48d86c20, 0x103a5: 0x48dad620, 0x103a6: 0x48d9aa20, 0x103a7: 0x448a5620,\n\t0x103a8: 0x4309e220, 0x103a9: 0x4309e620, 0x103aa: 0x430a2c20, 0x103ab: 0x48e79420,\n\t0x103ac: 0x430ac820, 0x103ad: 0x48de5820, 0x103ae: 0x448aba20, 0x103af: 0x448ac220,\n\t0x103b0: 0x48df6220, 0x103b1: 0x48e1a420, 0x103b2: 0x448ad620, 0x103b3: 0x6c041420,\n\t0x103b4: 0x6c163c20, 0x103b5: 0x6c29de20, 0x103b6: 0x430cd220, 0x103b7: 0x6c29e620,\n\t0x103b8: 0x430d1020, 0x103b9: 0x430e1c20, 0x103ba: 0x430dc420, 0x103bb: 0x430ef220,\n\t0x103bc: 0x430e5020, 0x103bd: 0x430ed620, 0x103be: 0x430f0c20, 0x103bf: 0x448bae20,\n\t// Block 0x40f, offset 0x103c0\n\t0x103c0: 0x430fc220, 0x103c1: 0x43100220, 0x103c2: 0x448bf220, 0x103c3: 0x4310c020,\n\t0x103c4: 0x6c008220, 0x103c5: 0x48ecce20, 0x103c6: 0x4311ae20, 0x103c7: 0x4311bc20,\n\t0x103c8: 0x448c6a20, 0x103c9: 0x4311f420, 0x103ca: 0x44697620, 0x103cb: 0x48f15c20,\n\t0x103cc: 0x48f2cc20, 0x103cd: 0x448d7c20, 0x103ce: 0x448d8e20, 0x103cf: 0x6c0bfe20,\n\t0x103d0: 0x6c154e20, 0x103d1: 0x6c1ede20, 0x103d2: 0x6c2be420, 0x103d3: 0x48f95020,\n\t0x103d4: 0x6c035620, 0x103d5: 0x6c2c1220, 0x103d6: 0x431a3620, 0x103d7: 0x6c03ca20,\n\t0x103d8: 0x48fe5e20, 0x103d9: 0x48100820, 0x103da: 0x6c2c5420, 0x103db: 0x431b7820,\n\t0x103dc: 0x431be020, 0x103dd: 0x4811bc20, 0x103de: 0x431da820, 0x103df: 0x6c155020,\n\t0x103e0: 0x490ba420, 0x103e1: 0x490bda20, 0x103e2: 0x43212820, 0x103e3: 0x4321e220,\n\t0x103e4: 0x43222220, 0x103e5: 0x490e5c20, 0x103e6: 0x43223620, 0x103e7: 0x43247020,\n\t0x103e8: 0x4325ae20, 0x103e9: 0x4325b020, 0x103ea: 0x4324f820, 0x103eb: 0x4327f220,\n\t0x103ec: 0x43282a20, 0x103ed: 0x4917f420, 0x103ee: 0x6c024a20, 0x103ef: 0x44932a20,\n\t0x103f0: 0x432b6e20, 0x103f1: 0x491aee20, 0x103f2: 0x4493cc20, 0x103f3: 0x432d8620,\n\t0x103f4: 0x42bb6420, 0x103f5: 0x432e4620, 0x103f6: 0x49228a20, 0x103f7: 0x49243420,\n\t0x103f8: 0x4494dc20, 0x103f9: 0x4494ec20, 0x103fa: 0x432fc020, 0x103fb: 0x49281420,\n\t0x103fc: 0x44956420, 0x103fd: 0x49292c20, 0x103fe: 0x43301620, 0x103ff: 0x43301620,\n\t// Block 0x410, offset 0x10400\n\t0x10400: 0x43305220, 0x10401: 0x492b6c20, 0x10402: 0x6c03d020, 0x10403: 0x44966620,\n\t0x10404: 0x43325220, 0x10405: 0x43334e20, 0x10406: 0x43338420, 0x10407: 0x4333fc20,\n\t0x10408: 0x44979c20, 0x10409: 0x49366020, 0x1040a: 0x43362420, 0x1040b: 0x43388020,\n\t0x1040c: 0x4339fa20, 0x1040d: 0x44999c20, 0x1040e: 0x4499da20, 0x1040f: 0x433ace20,\n\t0x10410: 0x49419c20, 0x10411: 0x4499f020, 0x10412: 0x49420a20, 0x10413: 0x49441c20,\n\t0x10414: 0x49452220, 0x10415: 0x6c145a20, 0x10416: 0x449aac20, 0x10417: 0x6c316420,\n\t0x10418: 0x433dfc20, 0x10419: 0x433e0a20, 0x1041a: 0x433e1e20, 0x1041b: 0x433e2c20,\n\t0x1041c: 0x6c125e20, 0x1041d: 0x494c0020,\n\t// Block 0x411, offset 0x10440\n\t0x10440: 0xe00014bd, 0x10441: 0x0033b483, 0x10442: 0x00339688, 0x10443: 0x0033a288,\n\t0x10444: 0x0033c288, 0x10445: 0x0033fc88, 0x10446: 0xca490071, 0x10447: 0x00343688,\n\t0x10448: 0x00344688, 0x10449: 0x00349a88, 0x1044a: 0x0034e488, 0x1044b: 0x00356288,\n\t0x1044c: 0x00356a88, 0x1044d: 0xe00014cf, 0x1044e: 0x00357a88, 0x1044f: 0x00365488,\n\t0x10450: 0xc0090041, 0x10451: 0x00335288, 0x10452: 0x00335a88, 0x10453: 0xc0130092,\n\t0x10454: 0x00338a88, 0x10455: 0xc34c0041, 0x10456: 0xc01c0071, 0x10457: 0xc0200071,\n\t0x10458: 0xc0250041, 0x10459: 0x00343e88, 0x1045a: 0xc0370092, 0x1045b: 0x00348488,\n\t0x1045c: 0x0034a888, 0x1045d: 0x0034ba88, 0x1045e: 0xc02e0071, 0x1045f: 0x00350e88,\n\t0x10460: 0x00352888, 0x10461: 0x00353a88, 0x10462: 0x00354c88, 0x10463: 0xc03e00f1,\n\t0x10464: 0x0035ac88, 0x10465: 0x0035b488, 0x10466: 0x00360288, 0x10467: 0xc0440071,\n\t0x10468: 0x00365c88, 0x10469: 0x00366688, 0x1046a: 0x00367488, 0x1046b: 0xc0480071,\n\t0x1046c: 0x00368e88, 0x1046d: 0xc04c0071, 0x1046e: 0x0036b888, 0x1046f: 0x0036c488,\n\t0x10470: 0xc0060041, 0x10471: 0x40335220, 0x10472: 0x40335a20, 0x10473: 0xc0100092,\n\t0x10474: 0x40338a20, 0x10475: 0xc3490041, 0x10476: 0xc01a0071, 0x10477: 0xc01e0071,\n\t0x10478: 0xc0220041, 0x10479: 0x40343e20, 0x1047a: 0xc0340092, 0x1047b: 0x40348420,\n\t0x1047c: 0x4034a820, 0x1047d: 0x4034ba20, 0x1047e: 0xc02c0071, 0x1047f: 0x40350e20,\n\t// Block 0x412, offset 0x10480\n\t0x10480: 0x40352820, 0x10481: 0x40353a20, 0x10482: 0x40354c20, 0x10483: 0xc03a00f1,\n\t0x10484: 0x4035ac20, 0x10485: 0x4035b420, 0x10486: 0x40360220, 0x10487: 0xc0420071,\n\t0x10488: 0x40365c20, 0x10489: 0x40366620, 0x1048a: 0x40367420, 0x1048b: 0xc0460071,\n\t0x1048c: 0x40368e20, 0x1048d: 0xc04a0071, 0x1048e: 0x4036b820, 0x1048f: 0x4036c420,\n\t0x10490: 0xe00014ba, 0x10491: 0x4033b420, 0x10492: 0x40339620, 0x10493: 0x4033a220,\n\t0x10494: 0x4033c220, 0x10495: 0x4033fc20, 0x10496: 0xca470071, 0x10497: 0x40343620,\n\t0x10498: 0x40344620, 0x10499: 0x40349a20, 0x1049a: 0x4034e420, 0x1049b: 0x40356220,\n\t0x1049c: 0x40356a20, 0x1049d: 0xe00014cc, 0x1049e: 0x40357a20, 0x1049f: 0x40365420,\n\t0x104a0: 0x0035e088, 0x104a1: 0x4035e020, 0x104a2: 0x00369e88, 0x104a3: 0x40369e20,\n\t0x104a4: 0x0036ce88, 0x104a5: 0x4036ce20, 0x104a6: 0x0036d688, 0x104a7: 0x4036d620,\n\t0x104a8: 0x0036ea88, 0x104a9: 0x4036ea20, 0x104aa: 0x0036e088, 0x104ab: 0x4036e020,\n\t0x104ac: 0x0036f488, 0x104ad: 0x4036f420, 0x104ae: 0x0036fc88, 0x104af: 0x4036fc20,\n\t0x104b0: 0x00370488, 0x104b1: 0x40370420, 0x104b2: 0x00370c88, 0x104b3: 0x40370c20,\n\t0x104b4: 0xc0500131, 0x104b5: 0xc04e0131, 0x104b6: 0x00371c88, 0x104b7: 0x40371c20,\n\t0x104b8: 0x0035a488, 0x104b9: 0x4035a420, 0x104ba: 0x0035fa88, 0x104bb: 0x4035fa20,\n\t0x104bc: 0x0035f288, 0x104bd: 0x4035f220, 0x104be: 0x0035e888, 0x104bf: 0x4035e820,\n\t// Block 0x413, offset 0x104c0\n\t0x104c0: 0x00352088, 0x104c1: 0x40352020, 0x104c2: 0x40070620, 0x104c3: 0xae608302,\n\t0x104c4: 0xae605f02, 0x104c5: 0xae602a02, 0x104c6: 0xae602202, 0x104c7: 0xae605f02,\n\t0x104c8: 0xa0000000, 0x104c9: 0xa0000000, 0x104ca: 0x00341c88, 0x104cb: 0x40341c20,\n\t0x104cc: 0x00369688, 0x104cd: 0x40369620, 0x104ce: 0x00353088, 0x104cf: 0x40353020,\n\t0x104d0: 0xe00014b7, 0x104d1: 0xe00014b4, 0x104d2: 0x00336a88, 0x104d3: 0x40336a20,\n\t0x104d4: 0x00337a88, 0x104d5: 0x40337a20, 0x104d6: 0x0033dc88, 0x104d7: 0x4033dc20,\n\t0x104d8: 0x0033aa88, 0x104d9: 0x4033aa20, 0x104da: 0x00345888, 0x104db: 0x40345820,\n\t0x104dc: 0x00347888, 0x104dd: 0x40347820, 0x104de: 0x00347088, 0x104df: 0x40347020,\n\t0x104e0: 0x00346888, 0x104e1: 0x40346820, 0x104e2: 0x0034ca88, 0x104e3: 0x4034ca20,\n\t0x104e4: 0x0034dc88, 0x104e5: 0x4034dc20, 0x104e6: 0x00351888, 0x104e7: 0x40351820,\n\t0x104e8: 0x00372688, 0x104e9: 0x40372620, 0x104ea: 0x00354488, 0x104eb: 0x40354420,\n\t0x104ec: 0x00355888, 0x104ed: 0x40355820, 0x104ee: 0x00359c83, 0x104ef: 0x40359c20,\n\t0x104f0: 0x00359a88, 0x104f1: 0x40359a20, 0x104f2: 0x0035cc88, 0x104f3: 0x4035cc20,\n\t0x104f4: 0x00360e88, 0x104f5: 0x40360e20, 0x104f6: 0x00362a88, 0x104f7: 0x40362a20,\n\t0x104f8: 0x00363a88, 0x104f9: 0x40363a20, 0x104fa: 0x0035d488, 0x104fb: 0x4035d420,\n\t0x104fc: 0x00364488, 0x104fd: 0x40364420, 0x104fe: 0x00364c88, 0x104ff: 0x40364c20,\n\t// Block 0x414, offset 0x10500\n\t0x10500: 0xa0000000, 0x10501: 0xa0000000, 0x10502: 0xa0000000, 0x10503: 0xa0000000,\n\t0x10504: 0xa0000000, 0x10505: 0xa0000000, 0x10506: 0xa0000000, 0x10507: 0xa0000000,\n\t0x10508: 0xa0000000, 0x10509: 0x40020020, 0x1050a: 0x40020220, 0x1050b: 0x40020420,\n\t0x1050c: 0x40020620, 0x1050d: 0x40020820, 0x1050e: 0xa0000000, 0x1050f: 0xa0000000,\n\t0x10510: 0xa0000000, 0x10511: 0xa0000000, 0x10512: 0xa0000000, 0x10513: 0xa0000000,\n\t0x10514: 0xa0000000, 0x10515: 0xa0000000, 0x10516: 0xa0000000, 0x10517: 0xa0000000,\n\t0x10518: 0xa0000000, 0x10519: 0xa0000000, 0x1051a: 0xa0000000, 0x1051b: 0xa0000000,\n\t0x1051c: 0xa0000000, 0x1051d: 0xa0000000, 0x1051e: 0xa0000000, 0x1051f: 0xa0000000,\n\t0x10520: 0x40021220, 0x10521: 0x4002ba20, 0x10522: 0x4003e020, 0x10523: 0x4004ea20,\n\t0x10524: 0x4027de20, 0x10525: 0x4004ec20, 0x10526: 0x4004e620, 0x10527: 0x4003d220,\n\t0x10528: 0x4003f420, 0x10529: 0x4003f620, 0x1052a: 0x4004d820, 0x1052b: 0x40093820,\n\t0x1052c: 0x40024020, 0x1052d: 0x40021a20, 0x1052e: 0x4002e420, 0x1052f: 0x4004e220,\n\t0x10530: 0x4029cc20, 0x10531: 0x4029ce20, 0x10532: 0x4029d020, 0x10533: 0x4029d220,\n\t0x10534: 0x4029d420, 0x10535: 0x4029d620, 0x10536: 0x4029d820, 0x10537: 0x4029da20,\n\t0x10538: 0x4029dc20, 0x10539: 0x4029de20, 0x1053a: 0x40026c20, 0x1053b: 0x40026220,\n\t0x1053c: 0x40094020, 0x1053d: 0x40094220, 0x1053e: 0x40094420, 0x1053f: 0x4002c420,\n\t// Block 0x415, offset 0x10540\n\t0x10540: 0x4004d620, 0x10541: 0xca5027b1, 0x10542: 0x002c0a88, 0x10543: 0x002c3a88,\n\t0x10544: 0x002c6288, 0x10545: 0xc39e0be1, 0x10546: 0x002d0888, 0x10547: 0x002d2288,\n\t0x10548: 0x002d6888, 0x10549: 0x002d9a88, 0x1054a: 0x002dcc88, 0x1054b: 0xca4b3b11,\n\t0x1054c: 0xc0030002, 0x1054d: 0x002e8288, 0x1054e: 0x002e9e88, 0x1054f: 0xc3a30b21,\n\t0x10550: 0x002f2c88, 0x10551: 0x002f5688, 0x10552: 0x002f7a88, 0x10553: 0x002fe688,\n\t0x10554: 0x00302c88, 0x10555: 0xc3900b21, 0x10556: 0x0030be88, 0x10557: 0x0030e288,\n\t0x10558: 0x0030f688, 0x10559: 0x00310088, 0x1055a: 0x00312a88, 0x1055b: 0x4003f820,\n\t0x1055c: 0x4004e420, 0x1055d: 0x4003fa20, 0x1055e: 0x40062420, 0x1055f: 0x40021620,\n\t0x10560: 0x40061e20, 0x10561: 0xca4d27b1, 0x10562: 0x402c0a20, 0x10563: 0x402c3a20,\n\t0x10564: 0x402c6220, 0x10565: 0xc39c0be1, 0x10566: 0x402d0820, 0x10567: 0x402d2220,\n\t0x10568: 0x402d6820, 0x10569: 0x402d9a20, 0x1056a: 0x402dcc20, 0x1056b: 0x402dfe20,\n\t0x1056c: 0xc0000002, 0x1056d: 0x402e8220, 0x1056e: 0x402e9e20, 0x1056f: 0xc3a00b21,\n\t0x10570: 0x402f2c20, 0x10571: 0x402f5620, 0x10572: 0x402f7a20, 0x10573: 0x402fe620,\n\t0x10574: 0x40302c20, 0x10575: 0xc38d0b21, 0x10576: 0x4030be20, 0x10577: 0x4030e220,\n\t0x10578: 0x4030f620, 0x10579: 0x40310020, 0x1057a: 0x40312a20, 0x1057b: 0x4003fc20,\n\t0x1057c: 0x40094820, 0x1057d: 0x4003fe20, 0x1057e: 0x40094c20, 0x1057f: 0xa0000000,\n\t// Block 0x416, offset 0x10580\n\t0x10580: 0xe0000983, 0x10581: 0xe0000980, 0x10582: 0xe00008fb, 0x10583: 0xe00008f8,\n\t0x10584: 0xe000097d, 0x10585: 0xe000097a, 0x10586: 0xe0000a38, 0x10587: 0xe0000a35,\n\t0x10588: 0xe0000a3e, 0x10589: 0xe0000a3b, 0x1058a: 0xe0000a4a, 0x1058b: 0xe0000a47,\n\t0x1058c: 0xe0000a44, 0x1058d: 0xe0000a41, 0x1058e: 0xe0000a86, 0x1058f: 0xe0000a83,\n\t0x10590: 0x002c62a3, 0x10591: 0x402c6221, 0x10592: 0xe0000b46, 0x10593: 0xe0000b43,\n\t0x10594: 0xe0000aee, 0x10595: 0xe0000aeb, 0x10596: 0xe0000b2c, 0x10597: 0xe0000b29,\n\t0x10598: 0x00320cc3, 0x10599: 0x40320c22, 0x1059a: 0xe0000b1a, 0x1059b: 0xe0000b17,\n\t0x1059c: 0xe0000bb8, 0x1059d: 0xe0000bb5, 0x1059e: 0xe0000bb2, 0x1059f: 0xe0000baf,\n\t0x105a0: 0xe0000bc4, 0x105a1: 0xe0000bc1, 0x105a2: 0xe0000bca, 0x105a3: 0xe0000bc7,\n\t0x105a4: 0xe0000bee, 0x105a5: 0xe0000beb, 0x105a6: 0xe0000c1b, 0x105a7: 0xe0000c18,\n\t0x105a8: 0xe0000c51, 0x105a9: 0xe0000c4e, 0x105aa: 0xe0000c60, 0x105ab: 0xe0000c5d,\n\t0x105ac: 0xe0000c31, 0x105ad: 0xe0000c2e, 0x105ae: 0xe0000c5a, 0x105af: 0xe0000c57,\n\t0x105b0: 0xe0000c54, 0x105b1: 0x402da220, 0x105b2: 0xf0000a0a, 0x105b3: 0xf0000404,\n\t0x105b4: 0xe0000c8a, 0x105b5: 0xe0000c87, 0x105b6: 0xe0000c9f, 0x105b7: 0xe0000c9c,\n\t0x105b8: 0x402f5621, 0x105b9: 0xe0000ccc, 0x105ba: 0xe0000cc9, 0x105bb: 0xe0000cd8,\n\t0x105bc: 0xe0000cd5, 0x105bd: 0xe0000cd2, 0x105be: 0xe0000ccf, 0x105bf: 0xe0000d04,\n\t// Block 0x417, offset 0x105c0\n\t0x105c0: 0xca533b21, 0x105c1: 0xca553b21, 0x105c2: 0xca573b21, 0x105c3: 0xca593b21,\n\t0x105c4: 0xca5b3b21, 0x105c5: 0xca5d3b21, 0x105c6: 0xca5f3b21, 0x105c7: 0xca613b21,\n\t0x105c8: 0xca633b21, 0x105c9: 0xca653b21, 0x105ca: 0xca673b21, 0x105cb: 0xca693b21,\n\t0x105cc: 0xca6b3b21, 0x105cd: 0xca6d3b21, 0x105ce: 0xca6f3b21, 0x105cf: 0xca713b21,\n\t0x105d0: 0xca733b21, 0x105d1: 0xca753b21, 0x105d2: 0xca773b21, 0x105d3: 0xca793b21,\n\t0x105d4: 0xca7b3b21, 0x105d5: 0xca7d3b21, 0x105d6: 0xca7f3b21, 0x105d7: 0xca813b21,\n\t0x105d8: 0xca833b21, 0x105d9: 0xca853b21, 0x105da: 0xca873b21, 0x105db: 0xca8b3b21,\n\t0x105dc: 0xca913b21, 0x105dd: 0xca953b21, 0x105de: 0xca973b21, 0x105df: 0xca993b21,\n\t0x105e0: 0xca9b3b21, 0x105e1: 0xca9d3b21, 0x105e2: 0xca9f3b21, 0x105e3: 0xca9f3b21,\n\t0x105e4: 0xe000413a, 0x105e5: 0xe000413d, 0x105e6: 0xe0004140, 0x105e7: 0xe0004143,\n\t0x105e8: 0xe0004146, 0x105e9: 0xe000414a, 0x105ea: 0xe000414d, 0x105eb: 0xca893b21,\n\t0x105ec: 0xca8d3b21, 0x105ed: 0xca8f3b21, 0x105ee: 0xca933b21, 0x105ef: 0xe0004151,\n\t0x105f0: 0xe0004154, 0x105f1: 0xe0004157, 0x105f2: 0xe000415a, 0x105f3: 0xe000415d,\n\t0x105f4: 0xa0000000, 0x105f5: 0xa0000000, 0x105f6: 0xcaa43b81, 0x105f7: 0xcaa63bb1,\n\t0x105f8: 0x40501220, 0x105f9: 0x40501420, 0x105fa: 0x40501620, 0x105fb: 0xcaa13b51,\n\t0x105fc: 0x40501a20, 0x105fd: 0x40501c20, 0x105fe: 0x40501e20, 0x105ff: 0x40502020,\n\t// Block 0x418, offset 0x10600\n\t0x10600: 0x40502220, 0x10601: 0xcaa83bb1, 0x10602: 0x40502620, 0x10603: 0x40502820,\n\t0x10604: 0xcaaa3bb1, 0x10605: 0x40502c20, 0x10606: 0x40503020, 0x10607: 0x40503420,\n\t0x10608: 0xadc11802, 0x10609: 0xadc11b02, 0x1060a: 0xadc11c02, 0x1060b: 0xadc11a02,\n\t0x1060c: 0xa0005f02, 0x1060d: 0xadc11d02, 0x1060e: 0xadc11402, 0x1060f: 0xadc11502,\n\t0x10610: 0xadc11702, 0x10611: 0xadc11602, 0x10612: 0x82092817, 0x10613: 0xa0000000,\n\t0x10614: 0x40032620, 0x10615: 0x40032820, 0x10616: 0x4002ac20, 0x10617: 0x4027bc20,\n\t0x10618: 0xe000409a, 0x10619: 0x4005be20, 0x1061a: 0x4005c020, 0x1061b: 0x4027f620,\n\t0x1061c: 0x404fea20, 0x1061d: 0xadc11902,\n\t0x10620: 0xe00001b5, 0x10621: 0xe0000249, 0x10622: 0xe0000361, 0x10623: 0xe000043b,\n\t0x10624: 0xe0000510, 0x10625: 0xe00005da, 0x10626: 0xe00006a5, 0x10627: 0xe000074d,\n\t0x10628: 0xe00007f9, 0x10629: 0xe000089e,\n\t0x10630: 0xe00001b8, 0x10631: 0xe000024c, 0x10632: 0xe0000364, 0x10633: 0xe000043e,\n\t0x10634: 0xe0000513, 0x10635: 0xe00005dd, 0x10636: 0xe00006a8, 0x10637: 0xe0000750,\n\t0x10638: 0xe00007fc, 0x10639: 0xe00008a1,\n\t// Block 0x419, offset 0x10640\n\t0x10642: 0x40439020, 0x10643: 0x40439220,\n\t0x10645: 0x40437020, 0x10646: 0x40437220, 0x10647: 0x40437420,\n\t0x10648: 0x40437620, 0x10649: 0x40437820, 0x1064a: 0x40437a20, 0x1064b: 0x40437c20,\n\t0x1064c: 0x40438020, 0x1064e: 0x40438420, 0x1064f: 0x40438620,\n\t0x10650: 0x40438820, 0x10652: 0x40438a20, 0x10653: 0x40438c20,\n\t0x10654: 0x40438e20, 0x10655: 0x40439020, 0x10656: 0x40439220, 0x10657: 0x40439420,\n\t0x10658: 0x40439620, 0x10659: 0x40439820, 0x1065a: 0x40439a20, 0x1065b: 0x40439c20,\n\t0x1065c: 0x40439e20, 0x1065d: 0x4043a020, 0x1065e: 0x4043a220, 0x1065f: 0x4043a420,\n\t0x10660: 0x4043a620, 0x10661: 0x4043a820, 0x10662: 0x4043aa20, 0x10663: 0x4043ac20,\n\t0x10664: 0x4043ae20, 0x10665: 0x4043b020, 0x10666: 0x4043b220, 0x10667: 0x4043b420,\n\t0x10668: 0x4043b620, 0x1066a: 0x4043b820, 0x1066b: 0x4043ba20,\n\t0x1066c: 0x4043bc20, 0x1066d: 0x4043be20, 0x1066e: 0x4043c020, 0x1066f: 0x4043c220,\n\t0x10670: 0x4043c420, 0x10671: 0x4043c620, 0x10672: 0x4043c820, 0x10673: 0x4043d420,\n\t0x10675: 0x4043ca20, 0x10676: 0x4043cc20, 0x10677: 0x4043ce20,\n\t0x10678: 0x4043d020, 0x10679: 0x4043d220,\n\t0x1067c: 0xa070f102, 0x1067d: 0x4043d820, 0x1067e: 0x4043de20, 0x1067f: 0xc06a0311,\n\t// Block 0x41a, offset 0x10680\n\t0x10680: 0x4043e220, 0x10681: 0x4043e420, 0x10682: 0x4043e620, 0x10683: 0x4043e820,\n\t0x10684: 0x4043ea20, 0x10686: 0xc06c0341, 0x10687: 0x4043f220,\n\t0x10688: 0x4043f420, 0x1068a: 0xc0710311, 0x1068b: 0x4043f820,\n\t0x1068c: 0x4043fa20, 0x1068d: 0x820921fe,\n\t0x10695: 0x4043fe20, 0x10696: 0x40440020,\n\t0x1069e: 0x4043d620,\n\t0x106a0: 0x40437e20, 0x106a1: 0x40438220, 0x106a2: 0x4043ec20, 0x106a3: 0x4043ee20,\n\t0x106a6: 0xe0000182, 0x106a7: 0xe0000213,\n\t0x106a8: 0xe000032e, 0x106a9: 0xe0000408, 0x106aa: 0xe00004dd, 0x106ab: 0xe00005a7,\n\t0x106ac: 0xe0000672, 0x106ad: 0xe000071a, 0x106ae: 0xe00007c6, 0x106af: 0xe000086b,\n\t0x106b1: 0x40439420, 0x106b2: 0x40439620,\n\t// Block 0x41b, offset 0x106c0\n\t0x106c0: 0xf0000404, 0x106c1: 0xf0000404, 0x106c2: 0xf0000404, 0x106c3: 0xf0000404,\n\t0x106c4: 0xf0000404, 0x106c5: 0xf0000404, 0x106c6: 0xf0000404, 0x106c7: 0xf0000404,\n\t0x106c8: 0xf0000404, 0x106c9: 0xf0000404, 0x106ca: 0xf0000404, 0x106cb: 0xf0000404,\n\t0x106cc: 0xf0000404, 0x106cd: 0xf0000404, 0x106ce: 0xe000004c, 0x106cf: 0xe0000051,\n\t0x106d0: 0xe0000056, 0x106d1: 0xe000005b, 0x106d2: 0xe0000060, 0x106d3: 0xe0000065,\n\t0x106d4: 0xe000006a, 0x106d5: 0xe000006f, 0x106d6: 0xe0000083, 0x106d7: 0xe000008d,\n\t0x106d8: 0xe0000092, 0x106d9: 0xe0000097, 0x106da: 0xe000009c, 0x106db: 0xe00000a1,\n\t0x106dc: 0xe0000088, 0x106dd: 0xe0000074, 0x106de: 0xe000007c,\n\t0x106e0: 0xe0002c96, 0x106e1: 0xe0002ca6, 0x106e2: 0xe0002c9e, 0x106e3: 0xe0002cd6,\n\t0x106e4: 0xe0002caa, 0x106e5: 0xe0002cbe, 0x106e6: 0xe0002c9a, 0x106e7: 0xe0002cba,\n\t0x106e8: 0xe0002ca2, 0x106e9: 0xe0002cc6, 0x106ea: 0xe0002ce6, 0x106eb: 0xe0002cfa,\n\t0x106ec: 0xe0002cf6, 0x106ed: 0xe0002cee, 0x106ee: 0xe0002d22, 0x106ef: 0xe0002cda,\n\t0x106f0: 0xe0002ce2, 0x106f1: 0xe0002cf2, 0x106f2: 0xe0002cea, 0x106f3: 0xe0002d06,\n\t0x106f4: 0xe0002cce, 0x106f5: 0xe0002cfe, 0x106f6: 0xe0002d1a, 0x106f7: 0xe0002d0a,\n\t0x106f8: 0xf0000404, 0x106f9: 0xe0002cae, 0x106fa: 0xe0002cd2, 0x106fb: 0xf0000404,\n\t0x106fc: 0xe0002d02, 0x106fd: 0xe0002cb2, 0x106fe: 0xe0002d1e, 0x106ff: 0xe0002cca,\n\t// Block 0x41c, offset 0x10700\n\t0x10700: 0xe0008556, 0x10701: 0xe0008b49, 0x10703: 0xe0009a4a,\n\t0x10707: 0xe0005e27,\n\t0x10708: 0xe000871e, 0x10709: 0xe0006c4c, 0x1070a: 0xe0006ca0, 0x1070b: 0xe0009fed,\n\t0x1070d: 0xe0006789,\n\t0x10711: 0xe00098b6,\n\t0x10714: 0xe0009245, 0x10715: 0xe0006948, 0x10716: 0xe0007018,\n\t0x10718: 0xe0004c4a, 0x10719: 0xe0006618,\n\t0x1071e: 0xe00073be, 0x1071f: 0xe0008f07,\n\t0x10726: 0xe000665c,\n\t0x1072b: 0xe00075de,\n\t0x1072d: 0xe0008fe1,\n\t0x10730: 0xe0006771, 0x10731: 0xe0004a99, 0x10732: 0xe00049e6,\n\t0x10738: 0xe000a5b0, 0x10739: 0xe000532a, 0x1073b: 0xe0008e8f,\n\t// Block 0x41d, offset 0x10740\n\t0x10742: 0xe0007be3, 0x10743: 0xe0005214,\n\t0x10745: 0xe0004c4d,\n\t0x1074b: 0xe0009055,\n\t0x1074d: 0xe0006ad3, 0x1074e: 0xe000a418, 0x1074f: 0xe0009fe1,\n\t0x10756: 0xe0004b72,\n\t0x10758: 0xe00073c2, 0x10759: 0xe00083a6,\n\t0x1075d: 0xe0004c50, 0x1075e: 0xe0004554, 0x1075f: 0xe0007800,\n\t0x10767: 0xe0005708,\n\t0x1076b: 0xe00042b4,\n\t0x1076c: 0xe0004564, 0x1076d: 0xe0005621,\n\t0x10773: 0xe000820f,\n\t0x10776: 0xe000672d, 0x10777: 0xe0006c38,\n\t0x1077c: 0xe0008fdd, 0x1077e: 0xe000450c,\n\t// Block 0x41e, offset 0x10780\n\t0x10782: 0xe00057ab,\n\t0x10786: 0xe0005b9b,\n\t0x10788: 0xe00079b1, 0x1078b: 0xe0006ad6,\n\t0x1078c: 0xe0008459, 0x1078e: 0xe0007fc6, 0x1078f: 0xe0008026,\n\t0x10790: 0xe00080da, 0x10791: 0xe000808a, 0x10792: 0xe000a41b,\n\t0x10794: 0xe0007c58, 0x10795: 0xe0008b4d,\n\t0x10798: 0xe0005033, 0x10799: 0xe0005043, 0x1079b: 0xe0006ad9,\n\t0x1079e: 0xe00075a8, 0x1079f: 0xe0004f43,\n\t0x107a1: 0xe0005ebb, 0x107a2: 0xe000a13f,\n\t0x107a4: 0xe0004bc6, 0x107a5: 0xe000a18f, 0x107a6: 0xe00079db,\n\t0x107a8: 0xe000a381, 0x107ab: 0xe000a20e,\n\t0x107ac: 0xe0004695, 0x107ad: 0xe0008b51, 0x107ae: 0xe0005891,\n\t0x107b3: 0xe000630c,\n\t0x107b4: 0xe0008029, 0x107b6: 0xe000532e,\n\t0x107b9: 0xe0006226, 0x107ba: 0xe00084e6,\n\t// Block 0x41f, offset 0x107c0\n\t0x107c0: 0xe0007595, 0x107c1: 0xe00084ea,\n\t0x107c4: 0xe000998c, 0x107c6: 0xe0006807, 0x107c7: 0xe0004c53,\n\t0x107ca: 0xe0004fb7, 0x107cb: 0xe0004440,\n\t0x107cd: 0xe00085be,\n\t0x107d4: 0xe00085d2, 0x107d5: 0xe0006adc, 0x107d6: 0xe0009aab, 0x107d7: 0xe0008722,\n\t0x107d8: 0xe000678c, 0x107d9: 0xe0006e50,\n\t0x107dd: 0xe0005631, 0x107de: 0xe000852a, 0x107df: 0xe00094fc,\n\t0x107e1: 0xe000a8d7, 0x107e3: 0xe00054be,\n\t0x107e4: 0xe0005a04, 0x107e5: 0xe000845c,\n\t0x107ee: 0xe00041b7,\n\t0x107f0: 0xe0007727, 0x107f2: 0xe0008fe5, 0x107f3: 0xe00069c6,\n\t0x107f5: 0xe0007caf, 0x107f6: 0xe0004510, 0x107f7: 0xe0004443,\n\t0x107fb: 0xe0008582,\n\t0x107ff: 0xe0006458,\n\t// Block 0x420, offset 0x10800\n\t0x10800: 0xe0008e49, 0x10801: 0xe000504b,\n\t0x10809: 0xe000a143, 0x1080a: 0xe000845f, 0x1080b: 0xe0004fff,\n\t0x1080d: 0xe0007c5b, 0x1080e: 0xe000504e, 0x1080f: 0xe00066c1,\n\t0x10810: 0xe0006530, 0x10811: 0xe000a851,\n\t0x1082f: 0xe00064d4,\n\t0x10830: 0xe0004877,\n\t0x10834: 0xe0006324, 0x10836: 0xe0005a08,\n\t0x10838: 0xe00074bd, 0x1083a: 0xe0006adf,\n\t0x1083c: 0xe0006ae2, 0x1083d: 0xe0004160,\n\t// Block 0x421, offset 0x10840\n\t0x10842: 0xe0008c25, 0x10843: 0xe0008965,\n\t0x10846: 0xe0005332, 0x10847: 0xe000885f,\n\t0x10848: 0xe0009e62, 0x10849: 0xe0004cec, 0x1084b: 0xe00070ab,\n\t0x1084d: 0xe000819a, 0x1084e: 0xe0008862, 0x1084f: 0xe0008e92,\n\t0x10850: 0xe0008e71, 0x10851: 0xe0007fc9, 0x10853: 0xe00068a8,\n\t0x10854: 0xe0008af9, 0x10855: 0xe0009ff0, 0x10856: 0xe0009fb1, 0x10857: 0xe0009ad5,\n\t0x10859: 0xe00079b4, 0x1085a: 0xe000855a, 0x1085b: 0xe00068f4,\n\t0x1085c: 0xe000866e, 0x1085d: 0xe0004cef, 0x1085e: 0xe0005261, 0x1085f: 0xe0009cb6,\n\t0x10869: 0xe0009d60, 0x1086a: 0xe000a6f4,\n\t0x1086f: 0xe000785d,\n\t0x10870: 0xe00064d8, 0x10873: 0xe0004163,\n\t0x10876: 0xe000517b,\n\t0x10878: 0xe0004ae5, 0x10879: 0xe0004e6d, 0x1087a: 0xe0008969, 0x1087b: 0xe0008d73,\n\t0x1087c: 0xe0004c11, 0x1087d: 0xe000926f, 0x1087e: 0xe000855e, 0x1087f: 0xe0006ae5,\n\t// Block 0x422, offset 0x10880\n\t0x10881: 0xe00074c1, 0x10883: 0xe0004228,\n\t0x10884: 0xe00091ad, 0x10886: 0xe000586f,\n\t0x10888: 0xe00099a8, 0x10889: 0xe0004a0e, 0x1088a: 0xe0004afd, 0x1088b: 0xe0005a7c,\n\t0x1088d: 0xe00073ee, 0x1088f: 0xe0008e95,\n\t0x10891: 0xe0008212,\n\t0x10894: 0xe000607b, 0x10896: 0xe0005c70, 0x10897: 0xe0005675,\n\t0x10898: 0xe0009248, 0x1089a: 0xe000733d, 0x1089b: 0xe0004976,\n\t0x1089c: 0xe0008f0a, 0x1089d: 0xe0008402,\n\t0x108ae: 0xe0006033, 0x108af: 0xe000a772,\n\t0x108b2: 0xe0009189,\n\t0x108b5: 0xe0009a56, 0x108b6: 0xe00058dd,\n\t0x108bb: 0xe0009b9c,\n\t0x108bf: 0xe0009db4,\n\t// Block 0x423, offset 0x108c0\n\t0x108c1: 0xe000802c, 0x108c2: 0xe0004799, 0x108c3: 0xe0009778,\n\t0x108c4: 0xe00075ab, 0x108c5: 0xe0004cf2,\n\t0x108c9: 0xe0007c5e, 0x108ca: 0xe0008f51,\n\t0x108cc: 0xe00066ac, 0x108ce: 0xe0008ce9, 0x108cf: 0xe00070ae,\n\t0x108d0: 0xe0005d33, 0x108d1: 0xe0007f42, 0x108d3: 0xe0004699,\n\t0x108d4: 0xe000a299, 0x108d7: 0xe00070f0,\n\t0x108d8: 0xe000680a, 0x108da: 0xe0005ce8, 0x108db: 0xe0005fcc,\n\t0x108dd: 0xe000667c, 0x108df: 0xe0006ae8,\n\t0x108e0: 0xe000a335, 0x108e1: 0xe00074c5, 0x108e3: 0xe0007cb2,\n\t0x108ee: 0xe000718f, 0x108ef: 0xe000678f,\n\t0x108f0: 0xe000a577, 0x108f1: 0xe0004c56, 0x108f3: 0xe000648f,\n\t0x108f4: 0xe0009548, 0x108f5: 0xe0009eeb, 0x108f6: 0xe00072b5,\n\t0x108f8: 0xe0006731, 0x108fa: 0xe0007967,\n\t0x108fe: 0xe00069c9,\n\t// Block 0x424, offset 0x10900\n\t0x10900: 0xe00093e7, 0x10902: 0xe000661c,\n\t0x10905: 0xe0007385, 0x10906: 0xe0005895,\n\t0x10909: 0xe000938f, 0x1090b: 0xe0004446,\n\t0x1090d: 0xe000648c, 0x1090f: 0xe00072b9,\n\t0x10911: 0xe0006195, 0x10912: 0xe000550c,\n\t0x10914: 0xe0004ddb, 0x10916: 0xe000a1f6,\n\t0x10918: 0xe000547a, 0x10919: 0xe000a775, 0x1091a: 0xe0008405,\n\t0x1091c: 0xe00094a0, 0x1091e: 0xe000469d, 0x1091f: 0xe000924b,\n\t0x10921: 0xe0009393, 0x10922: 0xe0009650, 0x10923: 0xe00063e8,\n\t0x10924: 0xe00099ab, 0x10925: 0xe00049b6, 0x10926: 0xe0004e07, 0x10927: 0xe0008e05,\n\t0x10928: 0xe00044b2, 0x10929: 0xe000954c, 0x1092a: 0xe0007be6, 0x1092b: 0xe0005c74,\n\t0x1092c: 0xe0009afc, 0x1092d: 0xe0007e65, 0x1092e: 0xe000576c,\n\t0x10930: 0xe0005ce0,\n\t0x1093b: 0xe0007803,\n\t// Block 0x425, offset 0x10940\n\t0x10943: 0xe0007927,\n\t0x10944: 0xe00051cc, 0x10947: 0xe0004166,\n\t0x10948: 0xe00045a8, 0x10949: 0xe000819d, 0x1094a: 0xe000802f,\n\t0x1094e: 0xe0007e83, 0x1094f: 0xe0009db8,\n\t0x10953: 0xe0007637,\n\t0x10955: 0xe000a192, 0x10956: 0xe0009272,\n\t0x10958: 0xe0004288, 0x1095a: 0xe0008e98,\n\t0x1095c: 0xe0008b55,\n\t0x10960: 0xe0007ef2, 0x10962: 0xe0009721,\n\t0x10965: 0xe0004514,\n\t0x1096a: 0xe0009fe9,\n\t0x10970: 0xe0006f44, 0x10972: 0xe0007442,\n\t0x10974: 0xe0009988, 0x10975: 0xe0008b59, 0x10976: 0xe0007fcc,\n\t0x10978: 0xe0009c9b,\n\t// Block 0x426, offset 0x10980\n\t0x10980: 0xe0004b75,\n\t0x10985: 0xe0006792,\n\t0x1098b: 0xe00043fc,\n\t0x1098d: 0xe00063ec,\n\t0x10991: 0xe0004558, 0x10992: 0xe000a400,\n\t0x10994: 0xe0004671, 0x10996: 0xe00093eb,\n\t0x10998: 0xe0006bd8, 0x10999: 0xe000694b, 0x1099a: 0xe000a75a, 0x1099b: 0xe0007f9e,\n\t0x1099d: 0xe0009bc8, 0x1099e: 0xe0006b87,\n\t0x109a2: 0xe00041ba,\n\t0x109ac: 0xe00097fc, 0x109ad: 0xe0007f46, 0x109ae: 0xe0008d76,\n\t0x109b2: 0xe0007c61, 0x109b3: 0xe000896d,\n\t0x109b4: 0xe0004cf5, 0x109b5: 0xe0009433, 0x109b7: 0xe0006ca4,\n\t0x109bd: 0xe00087ae, 0x109be: 0xe00046a1, 0x109bf: 0xe000793f,\n\t// Block 0x427, offset 0x109c0\n\t0x109c2: 0xe0005c12,\n\t0x109c4: 0xe0009f15, 0x109c5: 0xe0004f53,\n\t0x109c9: 0xe00095e0, 0x109ca: 0xe0006e54,\n\t0x109cf: 0xe0006ca8,\n\t0x109d1: 0xe0004bc9,\n\t0x109d5: 0xe00066c5, 0x109d6: 0xe000a91f,\n\t0x109da: 0xe0005b9e, 0x109db: 0xe000510b,\n\t0x109de: 0xe00081a0,\n\t0x109e2: 0xe0009550,\n\t0x109e5: 0xe0007e9e, 0x109e6: 0xe0009862, 0x109e7: 0xe00073c6,\n\t0x109e9: 0xe000a093,\n\t0x109ec: 0xe0009724, 0x109ed: 0xe0009327, 0x109ee: 0xe0005679,\n\t0x109f5: 0xe0004400,\n\t0x109f9: 0xe0004169, 0x109fb: 0xe0006580,\n\t0x109fe: 0xe0007778, 0x109ff: 0xe0006aeb,\n\t// Block 0x428, offset 0x10a00\n\t0x10a00: 0xe0008408, 0x10a01: 0xe0008f55, 0x10a02: 0xe00052a1, 0x10a03: 0xe0009554,\n\t0x10a04: 0xe000790f, 0x10a06: 0xe00046a5, 0x10a07: 0xe000a2e9,\n\t0x10a09: 0xe0004570, 0x10a0b: 0xe000540a,\n\t0x10a10: 0xe0006a7f, 0x10a12: 0xe0008215, 0x10a13: 0xe00054ee,\n\t0x10a14: 0xe0008f0d, 0x10a15: 0xe0008cb6, 0x10a17: 0xe000843b,\n\t0x10a18: 0xe000918d, 0x10a1a: 0xe0005f80, 0x10a1b: 0xe000617a,\n\t0x10a1c: 0xe0005265, 0x10a1f: 0xe0006cac,\n\t0x10a21: 0xe0005b62, 0x10a22: 0xe0005913,\n\t0x10a24: 0xe0009eb3, 0x10a25: 0xe0008306, 0x10a27: 0xe00092eb,\n\t0x10a2a: 0xe0007fcf, 0x10a2b: 0xe000a493,\n\t0x10a31: 0xe0005b46, 0x10a32: 0xe0008865, 0x10a33: 0xe000934f,\n\t0x10a35: 0xe00072bd, 0x10a37: 0xe00058e0,\n\t0x10a39: 0xe00092ef, 0x10a3a: 0xe000519b, 0x10a3b: 0xe000547e,\n\t0x10a3c: 0xe000796b,\n\t// Block 0x429, offset 0x10a40\n\t0x10a40: 0xe0007d52, 0x10a41: 0xe000830a, 0x10a43: 0xe00080e6,\n\t0x10a44: 0xe000a385, 0x10a45: 0xe0009916, 0x10a46: 0xe0008cec, 0x10a47: 0xe000a87f,\n\t0x10a48: 0xe0006e58, 0x10a49: 0xe0004b01, 0x10a4b: 0xe0004f27,\n\t0x10a4c: 0xe0009bf4, 0x10a4d: 0xe0005fa0, 0x10a4e: 0xe0009c4a,\n\t0x10a52: 0xe00075ae,\n\t0x10a55: 0xe0007445, 0x10a57: 0xe0007a83,\n\t0x10a5a: 0xe0005482,\n\t0x10a5c: 0xe00056b5,\n\t0x10a62: 0xe0005037,\n\t0x10a65: 0xe00085b2, 0x10a67: 0xe0005217,\n\t0x10a68: 0xe0008971, 0x10a69: 0xe0005899, 0x10a6a: 0xe0008218, 0x10a6b: 0xe0009d4c,\n\t0x10a6c: 0xe000497a, 0x10a6d: 0xe0005c60, 0x10a6e: 0xe000a3e5,\n\t0x10a71: 0xe000497e,\n\t0x10a75: 0xe0006620, 0x10a76: 0xe0005051, 0x10a77: 0xe0004c59,\n\t0x10a78: 0xe0008975,\n\t0x10a7c: 0xe0004659,\n\t// Block 0x42a, offset 0x10a80\n\t0x10a80: 0xe0005054,\n\t0x10a86: 0xe00079ad,\n\t0x10a89: 0xe0007afb, 0x10a8a: 0xe000945d,\n\t0x10a8d: 0xe00087fa, 0x10a8f: 0xe0004749,\n\t0x10a92: 0xe0006036, 0x10a93: 0xe0004cf8,\n\t0x10a95: 0xe0005fa4, 0x10a97: 0xe0007f4a,\n\t0x10a98: 0xe0008299,\n\t0x10aa0: 0xe0004a59, 0x10aa3: 0xe000997f,\n\t0x10aa4: 0xe000814e, 0x10aa5: 0xe0005ff0,\n\t0x10aaa: 0xe0005f90,\n\t0x10aac: 0xe0005635,\n\t0x10ab0: 0xe0006ac3, 0x10ab1: 0xe000a496, 0x10ab2: 0xe000992e,\n\t0x10ab6: 0xe0007806, 0x10ab7: 0xe0005881,\n\t0x10abd: 0xe00059b4,\n\t// Block 0x42b, offset 0x10ac0\n\t0x10ac4: 0xe0009485, 0x10ac5: 0xe000487a, 0x10ac6: 0xe0008f59,\n\t0x10ac9: 0xe000589d, 0x10aca: 0xe0009684, 0x10acb: 0xe0008cef,\n\t0x10acc: 0xe0005cc8, 0x10acd: 0xe0005639,\n\t0x10ad2: 0xe000843e,\n\t0x10ad4: 0xe00093ef,\n\t0x10adb: 0xe0005cbc,\n\t0x10adc: 0xe0005cb8, 0x10add: 0xe00083f2, 0x10ade: 0xe000a922,\n\t0x10ae0: 0xe0004e70, 0x10ae1: 0xe0006548,\n\t0x10ae9: 0xe00060c4,\n\t0x10aed: 0xe0006ac7,\n\t0x10af0: 0xe000a63c, 0x10af1: 0xe0004449, 0x10af3: 0xe0005734,\n\t0x10af4: 0xe0006acb, 0x10af6: 0xe000a883,\n\t0x10af8: 0xe0009590, 0x10af9: 0xe0007ea1, 0x10afa: 0xe0009906,\n\t0x10afd: 0xe000a0c3,\n\t// Block 0x42c, offset 0x10b00\n\t0x10b00: 0xe000550f, 0x10b01: 0xe0008d79, 0x10b03: 0xe00084ee,\n\t0x10b06: 0xe000685c, 0x10b07: 0xe0008aa9,\n\t0x10b08: 0xe0007be9, 0x10b0a: 0xe000422c,\n\t0x10b0e: 0xe0006199,\n\t0x10b11: 0xe000a389, 0x10b13: 0xe0007e21,\n\t0x10b16: 0xe0008192, 0x10b17: 0xe00059b8,\n\t0x10b1d: 0xe00096d0,\n\t0x10b24: 0xe0009d24, 0x10b25: 0xe0006600, 0x10b26: 0xe00045a0, 0x10b27: 0xe00045a4,\n\t0x10b29: 0xe0005ceb, 0x10b2a: 0xe0006bdc,\n\t0x10b2e: 0xe0004ad5,\n\t0x10b30: 0xe0005512, 0x10b31: 0xe00093f3, 0x10b32: 0xe0004ed0, 0x10b33: 0xe000487d,\n\t0x10b36: 0xe0008c71, 0x10b37: 0xe0007174,\n\t0x10b38: 0xe0004e0b, 0x10b39: 0xe000930b, 0x10b3a: 0xe00085d5, 0x10b3b: 0xe00041e4,\n\t// Block 0x42d, offset 0x10b40\n\t0x10b43: 0xe0009694,\n\t0x10b44: 0xe000474d, 0x10b47: 0xe0009a26,\n\t0x10b49: 0xe0008e80, 0x10b4a: 0xe0006bc0, 0x10b4b: 0xe0004f2b,\n\t0x10b4c: 0xe00057e7, 0x10b4d: 0xe0008979,\n\t0x10b54: 0xe00094a4, 0x10b55: 0xe00069cc, 0x10b56: 0xe0006795, 0x10b57: 0xe00086d6,\n\t0x10b5a: 0xe0006b8a, 0x10b5b: 0xe000439c,\n\t0x10b5d: 0xe00062c0, 0x10b5e: 0xe000510e, 0x10b5f: 0xe00095b8,\n\t0x10b61: 0xe0006f64,\n\t0x10b69: 0xe00085c2, 0x10b6a: 0xe000897d,\n\t0x10b6f: 0xe0006798,\n\t0x10b72: 0xe000a0b7,\n\t0x10b74: 0xe0004479, 0x10b75: 0xe0009397, 0x10b77: 0xe0006c08,\n\t0x10b7a: 0xe0005d36,\n\t0x10b7d: 0xe0009eee, 0x10b7f: 0xe00096d3,\n\t// Block 0x42e, offset 0x10b80\n\t0x10b82: 0xe0004e73, 0x10b83: 0xe000a70f,\n\t0x10b87: 0xe0004f2f,\n\t0x10b88: 0xe0006584, 0x10b89: 0xe0005c27,\n\t0x10b8d: 0xe0004574,\n\t0x10b91: 0xe0008c74, 0x10b92: 0xe0004578, 0x10b93: 0xe0008441,\n\t0x10b97: 0xe00092f3,\n\t0x10b98: 0xe0005df5, 0x10b9b: 0xe0005934,\n\t0x10b9f: 0xe0004982,\n\t0x10ba0: 0xe000416c, 0x10ba3: 0xe00059bc,\n\t0x10ba4: 0xe0004f57,\n\t0x10ba9: 0xe0008cf2, 0x10baa: 0xe0005271, 0x10bab: 0xe0004594,\n\t0x10bac: 0xe0004cfb, 0x10bad: 0xe0009727,\n\t0x10bbe: 0xe000a1e6,\n\t// Block 0x42f, offset 0x10bc0\n\t0x10bc1: 0xe00046a9, 0x10bc3: 0xe00063a8,\n\t0x10bc5: 0xe0009a2a, 0x10bc7: 0xe0007f4e,\n\t0x10bc9: 0xe0005fa8,\n\t0x10bcc: 0xe0004e2f, 0x10bcd: 0xe00046ad,\n\t0x10bd2: 0xe0005cac,\n\t0x10bd5: 0xe000563d, 0x10bd6: 0xe0008062,\n\t0x10bd8: 0xe00042f4, 0x10bd9: 0xe0006138, 0x10bdb: 0xe000a7ba,\n\t0x10bdd: 0xe00073ca, 0x10bde: 0xe0005a91, 0x10bdf: 0xe0006039,\n\t0x10be0: 0xe0005c6c, 0x10be1: 0xe0009f18, 0x10be2: 0xe000701b, 0x10be3: 0xe00088e9,\n\t0x10be4: 0xe0004f5b, 0x10be6: 0xe000972a,\n\t0x10bf3: 0xe000a7be,\n\t0x10bf5: 0xe00058e3,\n\t0x10bf8: 0xe0004e0f, 0x10bfa: 0xe0008672, 0x10bfb: 0xe0004f03,\n\t0x10bfe: 0xe0004c5c, 0x10bff: 0xe00061e1,\n\t// Block 0x430, offset 0x10c00\n\t0x10c01: 0xe00061c5, 0x10c02: 0xe0005223, 0x10c03: 0xe000447c,\n\t0x10c05: 0xe0009e65,\n\t0x10c08: 0xe000a887, 0x10c0a: 0xe0004d97,\n\t0x10c0c: 0xe000a123, 0x10c0d: 0xe0009e68, 0x10c0f: 0xe0009e6b,\n\t0x10c10: 0xe00066c9,\n\t0x10c15: 0xe000694e, 0x10c16: 0xe000a54d, 0x10c17: 0xe0006858,\n\t0x10c19: 0xe00073f1,\n\t0x10c20: 0xe0008726, 0x10c21: 0xe0004b05, 0x10c23: 0xe0004380,\n\t0x10c27: 0xe000a365,\n\t0x10c2a: 0xe0006951,\n\t0x10c2f: 0xe000a6b8,\n\t0x10c31: 0xe0004e76,\n\t0x10c36: 0xe0004cfe,\n\t0x10c39: 0xe0009f89,\n\t0x10c3d: 0xe0007943, 0x10c3e: 0xe0009ddc, 0x10c3f: 0xe0005311,\n\t// Block 0x431, offset 0x10c40\n\t0x10c40: 0xe0004c5f, 0x10c41: 0xe0007599, 0x10c43: 0xe0009500,\n\t0x10c44: 0xe00085b6, 0x10c45: 0xe0006c84, 0x10c47: 0xe00073ce,\n\t0x10c48: 0xe0007c64, 0x10c49: 0xe000a81e, 0x10c4a: 0xe0006328,\n\t0x10c4d: 0xe0005e2b,\n\t0x10c51: 0xe0006954, 0x10c52: 0xe0008df9, 0x10c53: 0xe0009b00,\n\t0x10c54: 0xe000a339, 0x10c57: 0xe00051e4,\n\t0x10c5a: 0xe00062c4,\n\t0x10c5c: 0xe00066cd, 0x10c5e: 0xe00065c4,\n\t0x10c60: 0xe0008ad5, 0x10c61: 0xe000870a,\n\t0x10c66: 0xe0004b5d,\n\t0x10c68: 0xe0006f10,\n\t0x10c6c: 0xe0007743, 0x10c6e: 0xe00099f0, 0x10c6f: 0xe0006108,\n\t0x10c70: 0xe00084f2, 0x10c71: 0xe00081a3, 0x10c72: 0xe00070b1, 0x10c73: 0xe0008ff9,\n\t0x10c74: 0xe00041e8, 0x10c75: 0xe00057af, 0x10c77: 0xe0004e13,\n\t0x10c78: 0xe0006b8d, 0x10c79: 0xe000a87b, 0x10c7a: 0xe0004f8f, 0x10c7b: 0xe0004210,\n\t0x10c7d: 0xe0008ff5, 0x10c7e: 0xe000763b, 0x10c7f: 0xe00046b1,\n\t// Block 0x432, offset 0x10c80\n\t0x10c84: 0xe00077b4,\n\t0x10c93: 0xe0007757,\n\t0x10c96: 0xe000645c,\n\t0x10c98: 0xe0005cee, 0x10c9a: 0xe000a778,\n\t0x10c9d: 0xe0008d7c, 0x10c9f: 0xe00080ea,\n\t0x10ca0: 0xe0009990,\n\t0x10ca5: 0xe0004e47, 0x10ca6: 0xe0009ff3,\n\t0x10caa: 0xe0004f93,\n\t0x10cad: 0xe0007ad3, 0x10cae: 0xe0007448,\n\t0x10cb2: 0xe0005916,\n\t0x10cb9: 0xe0004d01, 0x10cbb: 0xe00044b5,\n\t// Block 0x433, offset 0x10cc0\n\t0x10cc3: 0xe000932b,\n\t0x10cc5: 0xe0009353,\n\t0x10cc8: 0xe0007fd2, 0x10cc9: 0xe000924e, 0x10cca: 0xe0005003, 0x10ccb: 0xe0007fd5,\n\t0x10ccd: 0xe000632c,\n\t0x10cd4: 0xe0007285, 0x10cd6: 0xe0009955, 0x10cd7: 0xe0007192,\n\t0x10cdb: 0xe0006330,\n\t0x10cdf: 0xe0007246,\n\t0x10ce1: 0xe0007bec, 0x10ce2: 0xe00097bc, 0x10ce3: 0xe0004c62,\n\t0x10ce4: 0xe0004805, 0x10ce5: 0xe0004c65, 0x10ce6: 0xe0005a48,\n\t0x10ce8: 0xe0005584, 0x10ce9: 0xe0004808, 0x10cea: 0xe0009058, 0x10ceb: 0xe0004ea3,\n\t0x10cec: 0xe000703c, 0x10ced: 0xe0009d50, 0x10cee: 0xe0008c29, 0x10cef: 0xe000416f,\n\t0x10cf0: 0xe0009bf7, 0x10cf1: 0xe00091b1, 0x10cf2: 0xe0006aee, 0x10cf3: 0xe0007fd8,\n\t0x10cf4: 0xe0004d04, 0x10cf5: 0xe0009cfa, 0x10cf6: 0xe000a369,\n\t0x10cf8: 0xe0006af1,\n\t// Block 0x434, offset 0x10d00\n\t0x10d01: 0xe0008032, 0x10d03: 0xe000a8c7,\n\t0x10d04: 0xe00041ec,\n\t0x10d08: 0xe000a107, 0x10d09: 0xe000517f, 0x10d0a: 0xe00088ed, 0x10d0b: 0xe00097b8,\n\t0x10d0c: 0xe0005641, 0x10d0d: 0xe0005ff4, 0x10d0e: 0xe000a77b, 0x10d0f: 0xe0005cf1,\n\t0x10d10: 0xe0009c4d, 0x10d11: 0xe000a212,\n\t0x10d1b: 0xe0004da7,\n\t0x10d1d: 0xe0005d5d, 0x10d1f: 0xe00083ae,\n\t0x10d20: 0xe0009e38,\n\t0x10d26: 0xe000679b,\n\t0x10d29: 0xe0006860, 0x10d2b: 0xe000a0c7,\n\t0x10d2c: 0xe0008372, 0x10d2e: 0xe0008a09,\n\t0x10d33: 0xe0007c6a,\n\t0x10d36: 0xe00052dd,\n\t0x10d38: 0xe000a8fb, 0x10d39: 0xe0009958, 0x10d3b: 0xe000619d,\n\t0x10d3c: 0xe000a77e, 0x10d3d: 0xe000a799, 0x10d3e: 0xe0007c67,\n\t// Block 0x435, offset 0x10d40\n\t0x10d40: 0xe000a017, 0x10d42: 0xe00058e6,\n\t0x10d46: 0xe0005f2d,\n\t0x10d48: 0xe0008b5d, 0x10d4a: 0xe000480b,\n\t0x10d4e: 0xe00094d8,\n\t0x10d51: 0xe0009b58,\n\t0x10d5d: 0xe00077d0,\n\t0x10d62: 0xe00052ff,\n\t0x10d64: 0xe0005a4c, 0x10d66: 0xe000829c,\n\t0x10d68: 0xe0008ea4, 0x10d6a: 0xe0008ea1, 0x10d6b: 0xe0009654,\n\t0x10d70: 0xe0008620, 0x10d71: 0xe000480e, 0x10d73: 0xe00061ed,\n\t0x10d75: 0xe0004172, 0x10d76: 0xe0005283,\n\t0x10d7b: 0xe00074c9,\n\t0x10d7c: 0xe000a41e, 0x10d7d: 0xe0005ff8, 0x10d7f: 0xe00044e2,\n\t// Block 0x436, offset 0x10d80\n\t0x10d80: 0xe0008868,\n\t0x10d84: 0xe0005629, 0x10d86: 0xe0009e6e, 0x10d87: 0xe0009fb5,\n\t0x10d8b: 0xe0006b90,\n\t0x10d8c: 0xe000a550, 0x10d8d: 0xe000a1c5, 0x10d8e: 0xe0004c68, 0x10d8f: 0xe0007bb3,\n\t0x10d90: 0xe000679e,\n\t0x10d96: 0xe00041bd,\n\t0x10da0: 0xe0009221, 0x10da2: 0xe000763f,\n\t0x10da4: 0xe0009aae, 0x10da5: 0xe000a95b,\n\t0x10da8: 0xe00085d8, 0x10dab: 0xe000905b,\n\t0x10dac: 0xe0004bcc, 0x10daf: 0xe0004214,\n\t0x10db3: 0xe000a195,\n\t0x10db8: 0xe000a0cb, 0x10dbb: 0xe000a860,\n\t0x10dbc: 0xe0004b66, 0x10dbd: 0xe00084f6, 0x10dbf: 0xe00084a1,\n\t// Block 0x437, offset 0x10dc0\n\t0x10dc0: 0xe000775a, 0x10dc1: 0xe0009f3c, 0x10dc2: 0xe0007519, 0x10dc3: 0xe000567d,\n\t0x10dc4: 0xe000a511, 0x10dc6: 0xe00099f3, 0x10dc7: 0xe0007dbe,\n\t0x10dc8: 0xe000a10b, 0x10dc9: 0xe00087fd,\n\t0x10de1: 0xe00080ee,\n\t0x10de5: 0xe0004175, 0x10de6: 0xe00075e1,\n\t0x10de8: 0xe00096d6, 0x10de9: 0xe0005d39,\n\t0x10ded: 0xe00048ce, 0x10dee: 0xe000a733,\n\t0x10df1: 0xe00063d4, 0x10df2: 0xe0009594,\n\t0x10dfa: 0xe0009e71,\n\t0x10dfd: 0xe0004751, 0x10dff: 0xe00041c0,\n\t// Block 0x438, offset 0x10e00\n\t0x10e04: 0xe0009d63, 0x10e06: 0xe0006af4, 0x10e07: 0xe00090fd,\n\t0x10e09: 0xe000777b,\n\t0x10e0e: 0xe0005cf4, 0x10e0f: 0xe000a95e,\n\t0x10e10: 0xe000544e,\n\t0x10e14: 0xe0007cb5,\n\t0x10e1c: 0xe0005e97,\n\t0x10e2b: 0xe0004feb,\n\t0x10e2e: 0xe0007249, 0x10e2f: 0xe000821b,\n\t0x10e31: 0xe000939b, 0x10e33: 0xe0005919,\n\t0x10e35: 0xe00076cb,\n\t0x10e3c: 0xe0006c88, 0x10e3e: 0xe0009ab1,\n\t// Block 0x439, offset 0x10e40\n\t0x10e40: 0xe000777e, 0x10e42: 0xe00052cf,\n\t0x10e44: 0xe0009b04, 0x10e46: 0xe0006cb0,\n\t0x10e4f: 0xe00061a1,\n\t0x10e53: 0xe000479c,\n\t0x10e56: 0xe00053c6, 0x10e57: 0xe000540e,\n\t0x10e5c: 0xe00095bc, 0x10e5e: 0xe00075b1,\n\t0x10e63: 0xe000a0cf,\n\t0x10e7b: 0xe000744b,\n\t0x10e7c: 0xe0008c77, 0x10e7d: 0xe00076eb, 0x10e7e: 0xe0009865,\n\t// Block 0x43a, offset 0x10e80\n\t0x10e80: 0xe000448e, 0x10e81: 0xe0007d82, 0x10e83: 0xe00051f8,\n\t0x10e84: 0xe0006e5c, 0x10e86: 0xe0009598, 0x10e87: 0xe0005754,\n\t0x10e89: 0xe000a781, 0x10e8a: 0xe000a0d3, 0x10e8b: 0xe0009658,\n\t0x10e91: 0xe00083c6, 0x10e93: 0xe0007ef5,\n\t0x10e94: 0xe0007643,\n\t0x10e98: 0xe0009504, 0x10e99: 0xe000a821, 0x10e9a: 0xe000a5b4,\n\t0x10e9c: 0xe000a925, 0x10e9d: 0xe00042b8, 0x10e9e: 0xe0008ffd, 0x10e9f: 0xe00081e5,\n\t0x10ea3: 0xe000a79c,\n\t0x10ea4: 0xe000a69c, 0x10ea7: 0xe000a802,\n\t0x10ea8: 0xe00058c5, 0x10ea9: 0xe000821e, 0x10eaa: 0xe0006cb4, 0x10eab: 0xe0005197,\n\t0x10eac: 0xe0004bcf, 0x10eae: 0xe0005336,\n\t0x10eb0: 0xe00074b1,\n\t// Block 0x43b, offset 0x10ec0\n\t0x10ec5: 0xe000a784, 0x10ec7: 0xe0006d4c,\n\t0x10ec9: 0xe00070b4,\n\t0x10ed1: 0xe000a127,\n\t0x10ed4: 0xe0009101,\n\t0x10eda: 0xe0007c6d, 0x10edb: 0xe0004675,\n\t0x10edc: 0xe0005057, 0x10edf: 0xe0009251,\n\t0x10ee0: 0xe00057a3, 0x10ee2: 0xe0007d56, 0x10ee3: 0xe0006af7,\n\t0x10ee4: 0xe00099ae,\n\t0x10ef7: 0xe0007cb8,\n\t0x10efd: 0xe0007195, 0x10efe: 0xe0008ea7, 0x10eff: 0xe0009bb0,\n\t// Block 0x43c, offset 0x10f00\n\t0x10f04: 0xe0004c14, 0x10f06: 0xe0009b5c,\n\t0x10f08: 0xe0008d7f, 0x10f09: 0xe0004178,\n\t0x10f0c: 0xe0009f1b, 0x10f0d: 0xe0005c15, 0x10f0e: 0xe00076ab,\n\t0x10f10: 0xe0004c17, 0x10f12: 0xe000a403,\n\t0x10f14: 0xe0004c6b, 0x10f16: 0xe000946d, 0x10f17: 0xe0006cb8,\n\t0x10f29: 0xe000a57a,\n\t0x10f2c: 0xe0009805, 0x10f2f: 0xe000703f,\n\t0x10f32: 0xe0008cf5,\n\t0x10f34: 0xe000995b, 0x10f36: 0xe00073f4, 0x10f37: 0xe000a499,\n\t0x10f38: 0xe000617d, 0x10f39: 0xe0005bbf, 0x10f3b: 0xe000a961,\n\t0x10f3f: 0xe0006191,\n\t// Block 0x43d, offset 0x10f40\n\t0x10f41: 0xe0007cbb, 0x10f42: 0xe0008f9d,\n\t0x10f49: 0xe0005412, 0x10f4b: 0xe0009c56,\n\t0x10f4d: 0xe000972d, 0x10f4e: 0xe0007acf, 0x10f4f: 0xe000a90b,\n\t0x10f53: 0xe000a236,\n\t0x10f64: 0xe0004fef, 0x10f65: 0xe00052a5,\n\t0x10f68: 0xe000505a, 0x10f69: 0xe0007647, 0x10f6a: 0xe0008d82, 0x10f6b: 0xe000a928,\n\t0x10f6c: 0xe0006dda, 0x10f6d: 0xe0004c1a, 0x10f6f: 0xe0007781,\n\t0x10f72: 0xe0009aa5,\n\t0x10f74: 0xe0006864, 0x10f76: 0xe00042dc,\n\t0x10f78: 0xe0009c5a, 0x10f7a: 0xe000751d,\n\t// Block 0x43e, offset 0x10f80\n\t0x10f80: 0xe0005269,\n\t0x10f84: 0xe000a717, 0x10f86: 0xe000a736, 0x10f87: 0xe000a01a,\n\t0x10f8f: 0xe00096af,\n\t0x10f99: 0xe0004c1d, 0x10f9a: 0xe0008376,\n\t0x10fa5: 0xe0007a0f,\n\t0x10fac: 0xe0006a47, 0x10fae: 0xe000a216,\n\t0x10fb3: 0xe00048ea,\n\t0x10fb4: 0xe000796f, 0x10fb6: 0xe00077f0,\n\t0x10fbc: 0xe0008676,\n\t// Block 0x43f, offset 0x10fc0\n\t0x10fc0: 0xe0008a0d, 0x10fc1: 0xe0006fac, 0x10fc2: 0xe000a75d, 0x10fc3: 0xe000870e,\n\t0x10fc8: 0xe0007c1f, 0x10fc9: 0xe000576f, 0x10fca: 0xe0005208,\n\t0x10fcd: 0xe000a92b,\n\t0x10fd1: 0xe000977c,\n\t0x10fda: 0xe0007198, 0x10fdb: 0xe0006afa,\n\t0x10fde: 0xe000a6bb, 0x10fdf: 0xe0007521,\n\t0x10fe0: 0xe00084fa,\n\t0x10fe6: 0xe0007a87,\n\t0x10feb: 0xe000a50d,\n\t0x10fee: 0xe0007dc1,\n\t0x10ff0: 0xe00048fe,\n\t0x10ff7: 0xe0004f1b,\n\t0x10ff9: 0xe0005a0c, 0x10ffa: 0xe0004811,\n\t0x10fff: 0xe000829f,\n\t// Block 0x440, offset 0x11000\n\t0x11001: 0xe000837a, 0x11002: 0xe000a4ed, 0x11003: 0xe0009e74,\n\t0x11004: 0xe00078e5,\n\t0x11008: 0xe0004e17, 0x11009: 0xe0007903, 0x1100a: 0xe0009688, 0x1100b: 0xe0004d7f,\n\t0x1100d: 0xe00081a6,\n\t0x11012: 0xe00080f6, 0x11013: 0xe00080f2,\n\t0x11016: 0xe0005515,\n\t0x11018: 0xe000533a,\n\t0x1101c: 0xe0008152, 0x1101f: 0xe0009c50,\n\t0x11025: 0xe0005b0a,\n\t0x11028: 0xe0008800,\n\t0x1102c: 0xe0007cbe, 0x1102d: 0xe0004ea6, 0x1102e: 0xe00069cf,\n\t0x11030: 0xe000905e,\n\t0x1103b: 0xe000505d,\n\t0x1103e: 0xe000501b,\n\t// Block 0x441, offset 0x11040\n\t0x11040: 0xe0009061, 0x11042: 0xe0009d28,\n\t0x11047: 0xe0004f07,\n\t0x1104a: 0xe00063f0,\n\t0x1104c: 0xe00068ac, 0x1104d: 0xe00053ca, 0x1104e: 0xe00042f8, 0x1104f: 0xe00064c5,\n\t0x11050: 0xe0008e74, 0x11051: 0xe0004496,\n\t0x11061: 0xe0009cca,\n\t0x11064: 0xe0004902, 0x11066: 0xe0009b60, 0x11067: 0xe00094dc,\n\t0x11068: 0xe00084a4, 0x11069: 0xe0004344, 0x1106a: 0xe0009e0c,\n\t0x1106e: 0xe00054c4, 0x1106f: 0xe00064c8,\n\t0x11070: 0xe00046b5, 0x11071: 0xe0007747, 0x11073: 0xe0007ef8,\n\t0x11075: 0xe0004c6e, 0x11077: 0xe00041c3,\n\t0x11078: 0xe0004d07, 0x1107b: 0xe00090b8,\n\t0x1107c: 0xe0009b08,\n\t// Block 0x442, offset 0x11080\n\t0x11082: 0xe000719b,\n\t0x11088: 0xe00054c1, 0x1108b: 0xe000a38d,\n\t0x1108c: 0xe0005681,\n\t0x11093: 0xe000a198,\n\t0x11095: 0xe000a79f,\n\t0x1109e: 0xe0009ad8,\n\t0x110a0: 0xe0008356, 0x110a2: 0xe0004c71, 0x110a3: 0xe00080fa,\n\t0x110a4: 0xe00091e9,\n\t0x110b8: 0xe0007e25,\n\t0x110bd: 0xe000837e,\n\t// Block 0x443, offset 0x110c0\n\t0x110c3: 0xe000775d,\n\t0x110c6: 0xe0004218, 0x110c7: 0xe0007f52,\n\t0x110c8: 0xe0008f5d, 0x110c9: 0xe000a36d, 0x110cb: 0xe0005f03,\n\t0x110ce: 0xe0006fc8, 0x110cf: 0xe0007a8b,\n\t0x110d1: 0xe00095c0, 0x110d2: 0xe00057ef,\n\t0x110dc: 0xe000781e, 0x110df: 0xe00079df,\n\t0x110e0: 0xe00067a1,\n\t0x110e4: 0xe00069d2,\n\t0x110ed: 0xe0009c1e,\n\t0x110f0: 0xe0009436, 0x110f3: 0xe0004348,\n\t0x110f4: 0xe0007475, 0x110f7: 0xe0009209,\n\t0x110f9: 0xe0006492, 0x110fa: 0xe0005060, 0x110fb: 0xe0008fa1,\n\t0x110fc: 0xe0005063, 0x110fd: 0xe00070b7,\n\t// Block 0x444, offset 0x11100\n\t0x11100: 0xe0004dcb, 0x11102: 0xe0005452, 0x11103: 0xe0004926,\n\t0x11105: 0xe00045e5, 0x11106: 0xe0009c86,\n\t0x11108: 0xe00043a0, 0x11109: 0xe00082f6, 0x1110a: 0xe00075ff, 0x1110b: 0xe000693c,\n\t0x11117: 0xe000562d,\n\t0x11119: 0xe000852e,\n\t0x1111d: 0xe0004a11, 0x1111e: 0xe0009628,\n\t0x11120: 0xe000a7a2, 0x11121: 0xe000667f, 0x11123: 0xe0008035,\n\t0x11124: 0xe0008c7a, 0x11126: 0xe00047e1, 0x11127: 0xe0007a13,\n\t0x1112a: 0xe00042fc,\n\t0x1112f: 0xe0007ea4,\n\t0x11130: 0xe000792b, 0x11131: 0xe0006682,\n\t0x11134: 0xe000872a, 0x11135: 0xe0005518,\n\t0x1113a: 0xe000479f,\n\t// Block 0x445, offset 0x11140\n\t0x11140: 0xe0006660,\n\t0x11149: 0xe00094e0, 0x1114a: 0xe0004b78, 0x1114b: 0xe0007b47,\n\t0x1114c: 0xe0009bcc, 0x1114d: 0xe00073e6, 0x1114f: 0xe000444c,\n\t0x11150: 0xe00070ba, 0x11151: 0xe0007042, 0x11152: 0xe000744e,\n\t0x11154: 0xe0009bbc, 0x11157: 0xe000551b,\n\t0x11158: 0xe0005456, 0x11159: 0xe0004880, 0x1115a: 0xe00097c0,\n\t0x1115e: 0xe0006d40,\n\t0x11161: 0xe0008981, 0x11162: 0xe0007c70,\n\t0x11164: 0xe000a7c2,\n\t0x11169: 0xe0007aff,\n\t0x11175: 0xe0009105,\n\t0x11179: 0xe000932f,\n\t0x1117c: 0xe0008985, 0x1117d: 0xe0006d1c, 0x1117e: 0xe0007289,\n\t// Block 0x446, offset 0x11180\n\t0x11180: 0xe00090bb, 0x11181: 0xe0005e73, 0x11183: 0xe00046b9,\n\t0x11185: 0xe0006d80,\n\t0x11189: 0xe0007f56, 0x1118a: 0xe0008afd,\n\t0x1118d: 0xe0005111,\n\t0x11190: 0xe0004f97, 0x11193: 0xe000610b,\n\t0x1119c: 0xe000981d, 0x1119d: 0xe0007efb, 0x1119e: 0xe000901d, 0x1119f: 0xe000a239,\n\t0x111a1: 0xe0006ed0, 0x111a3: 0xe0006705,\n\t0x111a8: 0xe0006189, 0x111a9: 0xe00055ed, 0x111ab: 0xe0008fa5,\n\t0x111ae: 0xe0009ab4,\n\t0x111b0: 0xe0005416, 0x111b1: 0xe0005738, 0x111b3: 0xe0006868,\n\t0x111ba: 0xe0007c73, 0x111bb: 0xe000872e,\n\t0x111be: 0xe0004230,\n\t// Block 0x447, offset 0x111c0\n\t0x111c1: 0xe0006588, 0x111c3: 0xe0004404,\n\t0x111c5: 0xe0007d5e, 0x111c7: 0xe000533e,\n\t0x111ce: 0xe000a7c6,\n\t0x111d1: 0xe000a02f, 0x111d3: 0xe0007717,\n\t0x111d4: 0xe0005587, 0x111d5: 0xe000a421,\n\t0x111d8: 0xe0005beb, 0x111d9: 0xe0004b09, 0x111da: 0xe0005ac4,\n\t0x111dc: 0xe000541a, 0x111dd: 0xe00082a2, 0x111de: 0xe0004b7b, 0x111df: 0xe0005b2a,\n\t0x111e4: 0xe0007861,\n\t0x111eb: 0xe0006afd,\n\t0x111ec: 0xe0008586, 0x111ef: 0xe0008732,\n\t0x111f9: 0xe0008562, 0x111fa: 0xe000a424, 0x111fb: 0xe0006d83,\n\t0x111fd: 0xe000719e,\n\t// Block 0x448, offset 0x11200\n\t0x11206: 0xe0006775,\n\t0x11208: 0xe000882d,\n\t0x1120f: 0xe0009ff6,\n\t0x11210: 0xe000a3d1,\n\t0x11214: 0xe0005066, 0x11215: 0xe0006df8, 0x11216: 0xe0007e74,\n\t0x11219: 0xe000728d, 0x1121a: 0xe0005321,\n\t0x1121c: 0xe0007809,\n\t0x11222: 0xe00060d4,\n\t0x11224: 0xe0008532, 0x11225: 0xe0004a14, 0x11227: 0xe00054c7,\n\t0x11229: 0xe0009508, 0x1122a: 0xe0009bfa, 0x1122b: 0xe00067a4,\n\t0x1122c: 0xe0009aa8, 0x1122d: 0xe0007ea7, 0x1122e: 0xe000772b, 0x1122f: 0xe000a17b,\n\t0x11231: 0xe0007541,\n\t0x11237: 0xe0008462,\n\t0x11238: 0xe0004a17,\n\t0x1123e: 0xe000a33d,\n\t// Block 0x449, offset 0x11240\n\t0x11244: 0xe0007973, 0x11247: 0xe0005069,\n\t0x11248: 0xe000521a, 0x11249: 0xe0006735,\n\t0x1124e: 0xe0004ea9, 0x1124f: 0xe0008eaa,\n\t0x11250: 0xe000a5b8, 0x11251: 0xe00047a2, 0x11253: 0xe0009275,\n\t0x11254: 0xe000686c, 0x11255: 0xe000a279, 0x11257: 0xe0009c9e,\n\t0x11258: 0xe00087b2, 0x1125a: 0xe000a19b,\n\t0x11260: 0xe0008989, 0x11262: 0xe0006b00,\n\t0x11267: 0xe0007c76,\n\t0x11269: 0xe00059ec, 0x1126a: 0xe0009b94, 0x1126b: 0xe000830e,\n\t0x1126c: 0xe0008736, 0x1126d: 0xe0006dfc, 0x1126e: 0xe0006870,\n\t0x11273: 0xe0005232,\n\t0x11274: 0xe0005274, 0x11276: 0xe0005226,\n\t0x11278: 0xe0004234,\n\t0x1127d: 0xe000a427,\n\t// Block 0x44a, offset 0x11280\n\t0x11282: 0xe00079b7, 0x11283: 0xe0006957,\n\t0x11284: 0xe0005ebf,\n\t0x1128a: 0xe000858a,\n\t0x11291: 0xe0009cfd, 0x11292: 0xe0009cad, 0x11293: 0xe000506c,\n\t0x11296: 0xe0007eaa, 0x11297: 0xe0004fbb,\n\t0x11299: 0xe000610e,\n\t0x1129d: 0xe00087b6,\n\t0x112a3: 0xe00069d5,\n\t0x112a5: 0xe0009ab7, 0x112a7: 0xe0007e29,\n\t0x112a8: 0xe00063f4,\n\t0x112ac: 0xe0009ca1, 0x112af: 0xe00098e6,\n\t0x112b2: 0xe00053b2,\n\t0x112b9: 0xe0005f06, 0x112bb: 0xe0009488,\n\t0x112be: 0xe000962c,\n\t// Block 0x44b, offset 0x112c0\n\t0x112c3: 0xe0008b61,\n\t0x112c6: 0xe000603c,\n\t0x112c8: 0xe0005a50, 0x112c9: 0xe00085db, 0x112cb: 0xe00073f7,\n\t0x112cd: 0xe0006c0c,\n\t0x112d0: 0xe000886b, 0x112d1: 0xe0004814, 0x112d2: 0xe0006b93, 0x112d3: 0xe0006fcc,\n\t0x112d4: 0xe00081a9,\n\t0x112d9: 0xe000858e, 0x112da: 0xe0007ead,\n\t0x112dc: 0xe00043a4, 0x112dd: 0xe0008e9b, 0x112de: 0xe000518b,\n\t0x112e3: 0xe0004c20,\n\t0x112e4: 0xe0004d0a, 0x112e5: 0xe000607e, 0x112e6: 0xe0004238,\n\t0x112e8: 0xe0008465, 0x112ea: 0xe00091b5,\n\t0x112ec: 0xe000a92e, 0x112ee: 0xe000a147,\n\t0x112f8: 0xe0007a17, 0x112fa: 0xe0007525, 0x112fb: 0xe00084fe,\n\t0x112ff: 0xe00085de,\n\t// Block 0x44c, offset 0x11300\n\t0x11301: 0xe00081ac, 0x11303: 0xe0007e68,\n\t0x11309: 0xe0006acf,\n\t0x11311: 0xe0006b03, 0x11313: 0xe0006229,\n\t0x11318: 0xe000520c, 0x11319: 0xe000a3d5, 0x1131b: 0xe0007c79,\n\t0x1131c: 0xe000519e, 0x1131f: 0xe0007a1b,\n\t0x11320: 0xe00074cd, 0x11323: 0xe0008cb9,\n\t0x11325: 0xe00075b4, 0x11327: 0xe0009c21,\n\t0x11329: 0xe0005e2f,\n\t0x1132d: 0xe0007784,\n\t0x11335: 0xe0009868, 0x11336: 0xe000995e,\n\t0x1133c: 0xe000939f, 0x1133f: 0xe00075e4,\n\t// Block 0x44d, offset 0x11340\n\t0x11340: 0xe00075e7, 0x11341: 0xe0005bee,\n\t0x11346: 0xe0009ccd,\n\t0x11349: 0xe0007dd9,\n\t0x1134c: 0xe00072c1,\n\t0x11350: 0xe0007dc4,\n\t0x1135a: 0xe000a4d5,\n\t0x11362: 0xe000695a, 0x11363: 0xe0008536,\n\t0x11366: 0xe00067a7, 0x11367: 0xe0008c2d,\n\t0x1136a: 0xe000581f,\n\t0x11372: 0xe000a57d,\n\t0x11377: 0xe0008c31,\n\t0x1137f: 0xe0006ddd,\n\t// Block 0x44e, offset 0x11380\n\t0x11384: 0xe000622c,\n\t0x1138d: 0xe000680d,\n\t0x11392: 0xe0005f09, 0x11393: 0xe000a6a0,\n\t0x11395: 0xe00076ef,\n\t0x1139a: 0xe00061f0, 0x1139b: 0xe00080fe,\n\t0x1139f: 0xe0006f48,\n\t0x113a2: 0xe0006081,\n\t0x113a4: 0xe00073fa, 0x113a7: 0xe0007e71,\n\t0x113aa: 0xe0007cc1,\n\t0x113b3: 0xe00074b5,\n\t0x113b5: 0xe00085ce,\n\t0x113ba: 0xe000622f, 0x113bb: 0xe0006388,\n\t0x113bc: 0xe0007d26, 0x113bd: 0xe0005df8, 0x113be: 0xe0004d0d, 0x113bf: 0xe0004b8d,\n\t// Block 0x44f, offset 0x113c0\n\t0x113c1: 0xe000417b, 0x113c2: 0xe00071a1,\n\t0x113c4: 0xe0008102,\n\t0x113c8: 0xe00077f4, 0x113c9: 0xe00091b9, 0x113cb: 0xe00052bd,\n\t0x113cc: 0xe000a331,\n\t0x113d6: 0xe0009f1e, 0x113d7: 0xe0004d10,\n\t0x113d9: 0xe0006ed4, 0x113da: 0xe0005e77, 0x113db: 0xe0007c22,\n\t0x113e0: 0xe0005d3c, 0x113e1: 0xe00088f1, 0x113e2: 0xe0004ed3, 0x113e3: 0xe0007947,\n\t0x113e5: 0xe0008a11, 0x113e6: 0xe000a14b,\n\t0x113e9: 0xe00052d5, 0x113eb: 0xe0006084,\n\t0x113ed: 0xe000a49c, 0x113ee: 0xe000a49f, 0x113ef: 0xe0007cc4,\n\t0x113f6: 0xe0009730,\n\t0x113fa: 0xe000a097, 0x113fb: 0xe000a09b,\n\t0x113fd: 0xe0005bc2,\n\t// Block 0x450, offset 0x11400\n\t0x11400: 0xe0004ed6,\n\t0x11405: 0xe000a553,\n\t0x11408: 0xe0007efe, 0x11409: 0xe000a931, 0x1140b: 0xe0006e60,\n\t0x1140c: 0xe0004bd2,\n\t0x11416: 0xe0009e3b,\n\t0x11419: 0xe00087ba, 0x1141b: 0xe000a2ed,\n\t0x11425: 0xe0008d85,\n\t0x11428: 0xe0008623, 0x1142a: 0xe0006a4b,\n\t0x1142d: 0xe0005229,\n\t0x11430: 0xe0007bbb, 0x11432: 0xe00052c0,\n\t0x11434: 0xe0007bb7,\n\t0x1143e: 0xe00057cb, 0x1143f: 0xe0007a8f,\n\t// Block 0x451, offset 0x11440\n\t0x11440: 0xe0006cbc, 0x11443: 0xe0007865,\n\t0x11445: 0xe0006f84,\n\t0x1144c: 0xe0005998,\n\t0x11450: 0xe00085e1, 0x11451: 0xe000a319,\n\t0x11454: 0xe0004986, 0x11455: 0xe00085c6, 0x11456: 0xe0008626, 0x11457: 0xe00085e4,\n\t0x11458: 0xe0008ded, 0x1145a: 0xe00067aa, 0x1145b: 0xe0009d81,\n\t0x1145c: 0xe00085e7, 0x1145d: 0xe000a739, 0x1145f: 0xe0005f68,\n\t0x11461: 0xe0009c24, 0x11463: 0xe00047a5,\n\t0x11464: 0xe0004817, 0x11465: 0xe0005286,\n\t0x11469: 0xe000a19e, 0x1146b: 0xe000711c,\n\t0x11470: 0xe0007291, 0x11471: 0xe00086c2,\n\t0x11475: 0xe00067ad, 0x11476: 0xe0008629,\n\t0x11478: 0xe000a033, 0x1147a: 0xe0008221,\n\t0x1147c: 0xe000795b, 0x1147f: 0xe0006c10,\n\t// Block 0x452, offset 0x11480\n\t0x11481: 0xe00088b3, 0x11482: 0xe0007fa2,\n\t0x11485: 0xe0005500, 0x11487: 0xe0007fdb,\n\t0x11488: 0xe00071a4, 0x11489: 0xe0007663, 0x1148a: 0xe00041c6, 0x1148b: 0xe0007148,\n\t0x1148c: 0xe0007ddd, 0x1148f: 0xe0004ba6,\n\t0x11493: 0xe00066d1,\n\t0x11495: 0xe0009bd4, 0x11496: 0xe000a71b, 0x11497: 0xe0008e09,\n\t0x11498: 0xe0004a5d, 0x11499: 0xe0008ead, 0x1149a: 0xe0008b65, 0x1149b: 0xe0007de1,\n\t0x1149c: 0xe000840b,\n\t0x114a2: 0xe0004492, 0x114a3: 0xe0006e64,\n\t0x114a4: 0xe0007545, 0x114a5: 0xe0008224, 0x114a6: 0xe000a5bc,\n\t0x114ac: 0xe0006fd0, 0x114ae: 0xe0004deb,\n\t0x114b0: 0xe0008803, 0x114b3: 0xe000a1a1,\n\t0x114b4: 0xe0007a1f, 0x114b5: 0xe0007045, 0x114b6: 0xe000417e,\n\t0x114b8: 0xe00074d1, 0x114b9: 0xe0007f5a,\n\t0x114bf: 0xe0007295,\n\t// Block 0x453, offset 0x114c0\n\t0x114c0: 0xe0009439, 0x114c2: 0xe00088f5, 0x114c3: 0xe0008106,\n\t0x114c4: 0xe000506f, 0x114c5: 0xe0008502, 0x114c6: 0xe00062ac, 0x114c7: 0xe0004c74,\n\t0x114cc: 0xe00067b0,\n\t0x114d0: 0xe0005f0c, 0x114d2: 0xe000a05b, 0x114d3: 0xe0007fde,\n\t0x114d4: 0xe0007479, 0x114d6: 0xe0009a7a, 0x114d7: 0xe000525d,\n\t0x114d8: 0xe00099f6,\n\t0x114de: 0xe0005e07, 0x114df: 0xe000930f,\n\t0x114e1: 0xe00049ea, 0x114e2: 0xe0009a5a,\n\t0x114e4: 0xe0007c7c, 0x114e5: 0xe0007eb0, 0x114e6: 0xe0007549, 0x114e7: 0xe0005259,\n\t0x114e8: 0xe000943c, 0x114e9: 0xe0007559, 0x114eb: 0xe0006b06,\n\t0x114ec: 0xe0004a61, 0x114ed: 0xe000a406, 0x114ee: 0xe0005ba1, 0x114ef: 0xe0008f61,\n\t0x114f0: 0xe000a5f4,\n\t0x114f5: 0xe00097c4, 0x114f6: 0xe0006685,\n\t0x114f8: 0xe00097a8, 0x114fa: 0xe0006b09,\n\t// Block 0x454, offset 0x11500\n\t0x11501: 0xe0006739,\n\t0x11504: 0xe0006b0c, 0x11505: 0xe0004f47, 0x11507: 0xe000873a,\n\t0x11508: 0xe000898d, 0x11509: 0xe00081af, 0x1150a: 0xe0008df1, 0x1150b: 0xe000755d,\n\t0x1150c: 0xe0008f10, 0x1150d: 0xe00054ca, 0x1150e: 0xe000551e, 0x1150f: 0xe0007048,\n\t0x11511: 0xe000704b,\n\t0x11514: 0xe00084a7, 0x11516: 0xe00095e4,\n\t0x11519: 0xe0006cc0,\n\t0x1151f: 0xe0006ed8,\n\t0x11520: 0xe0006edc,\n\t0x11524: 0xe0007fe1,\n\t0x11528: 0xe00063f8, 0x1152b: 0xe0007e59,\n\t0x11531: 0xe0009961,\n\t0x11538: 0xe00073fd, 0x11539: 0xe0008312, 0x1153a: 0xe00094a8, 0x1153b: 0xe000481a,\n\t0x1153c: 0xe00052f9, 0x1153e: 0xe00061f3, 0x1153f: 0xe00052ba,\n\t// Block 0x455, offset 0x11540\n\t0x11540: 0xe0004d83, 0x11541: 0xe00069d8,\n\t0x11545: 0xe00044b8, 0x11546: 0xe00047a8, 0x11547: 0xe0008a15,\n\t0x11548: 0xe0004dcf, 0x1154b: 0xe0007cfa,\n\t0x1154d: 0xe0007403, 0x1154e: 0xe0007400,\n\t0x11550: 0xe0004f4b, 0x11551: 0xe0006f14,\n\t0x11555: 0xe0008991,\n\t0x1155b: 0xe0006624,\n\t0x11560: 0xe0005521, 0x11562: 0xe0005bf1,\n\t0x11564: 0xe00099a4, 0x11565: 0xe0005cf7,\n\t0x11568: 0xe0004d13,\n\t0x1156c: 0xe00070f4, 0x1156f: 0xe00056e8,\n\t0x11571: 0xe0006be0, 0x11573: 0xe0006ee0,\n\t0x11579: 0xe000a8cb, 0x1157a: 0xe0005114,\n\t// Block 0x456, offset 0x11580\n\t0x11588: 0xe000a01d, 0x1158a: 0xe0008ac9,\n\t0x1158c: 0xe000501f, 0x1158f: 0xe0007e2d,\n\t0x11590: 0xe0005072, 0x11591: 0xe00086e2, 0x11592: 0xe0004679,\n\t0x11594: 0xe0009278,\n\t0x1159d: 0xe00086a2,\n\t0x115a1: 0xe00043a8, 0x115a3: 0xe0004d16,\n\t0x115a5: 0xe0009d00, 0x115a6: 0xe0005dd9, 0x115a7: 0xe0009733,\n\t0x115a8: 0xe00088b6, 0x115a9: 0xe00076cf, 0x115aa: 0xe0006904, 0x115ab: 0xe00071a7,\n\t0x115ac: 0xe0004384, 0x115ad: 0xe0005a54,\n\t0x115b1: 0xe00054cd, 0x115b3: 0xe0007603,\n\t0x115b5: 0xe000a42a, 0x115b7: 0xe0006250,\n\t0x115b8: 0xe0007667, 0x115ba: 0xe0005a10,\n\t0x115be: 0xe0008ad9,\n\t// Block 0x457, offset 0x115c0\n\t0x115c0: 0xe00071aa,\n\t0x115d2: 0xe0005685,\n\t0x115d9: 0xe00099b1,\n\t0x115e0: 0xe0006cc4,\n\t0x115e8: 0xe00075b7, 0x115e9: 0xe00075ea,\n\t0x115ed: 0xe0009736, 0x115ef: 0xe000673d,\n\t0x115f0: 0xe0006741, 0x115f1: 0xe0005289,\n\t0x115f4: 0xe000a29d, 0x115f6: 0xe0005524,\n\t0x115fb: 0xe0008f65,\n\t0x115fd: 0xe000a341,\n\t// Block 0x458, offset 0x11600\n\t0x11606: 0xe00049ba, 0x11607: 0xe0007375,\n\t0x1160d: 0xe0005872, 0x1160e: 0xe0005075,\n\t0x11610: 0xe000492a, 0x11611: 0xe0004906,\n\t0x11614: 0xe00097ff, 0x11615: 0xe0007787, 0x11616: 0xe0007760, 0x11617: 0xe00043ac,\n\t0x11619: 0xe0005c78, 0x1161b: 0xe0004ddf,\n\t0x1161f: 0xe00083ca,\n\t0x11622: 0xe000884f,\n\t0x11624: 0xe000a760, 0x11626: 0xe000797f, 0x11627: 0xe0007379,\n\t0x11629: 0xe0006924,\n\t0x11634: 0xe0007e86,\n\t0x1163d: 0xe0008830,\n\t// Block 0x459, offset 0x11640\n\t0x11641: 0xe000434c, 0x11642: 0xe0005c98,\n\t0x1164b: 0xe00061f6,\n\t0x1164c: 0xe0004300, 0x1164e: 0xe0008038,\n\t0x11650: 0xe00057f7, 0x11653: 0xe00076f3,\n\t0x11654: 0xe0007e89,\n\t0x11669: 0xe000737d,\n\t0x1166c: 0xe0007e77, 0x1166f: 0xe0009254,\n\t0x11671: 0xe0007fa6,\n\t// Block 0x45a, offset 0x11680\n\t0x11681: 0xe0005c18, 0x11682: 0xe00087be,\n\t0x11684: 0xe0009357, 0x11687: 0xe0004c77,\n\t0x1168b: 0xe0005527,\n\t0x11692: 0xe0009049,\n\t0x11694: 0xe0004ff3, 0x11695: 0xe0009739,\n\t0x11699: 0xe0005d81,\n\t0x1169d: 0xe0005710,\n\t0x116a0: 0xe0004bd5, 0x116a2: 0xe0007eb3,\n\t0x116a7: 0xe00079ff,\n\t0x116aa: 0xe0007997, 0x116ab: 0xe000799f,\n\t0x116ae: 0xe000a26d,\n\t0x116b0: 0xe000a1c8,\n\t0x116b7: 0xe0008444,\n\t0x116b8: 0xe0007b4b, 0x116ba: 0xe0005a14,\n\t0x116bc: 0xe0006d86, 0x116bd: 0xe0007607,\n\t// Block 0x45b, offset 0x116c0\n\t0x116c9: 0xe000935b, 0x116cb: 0xe0004ed9,\n\t0x116cd: 0xe0007e7a,\n\t0x116d1: 0xe00092f7, 0x116d2: 0xe0005e33, 0x116d3: 0xe0008a19,\n\t0x116d6: 0xe00076d3,\n\t0x116da: 0xe000a255,\n\t0x116dd: 0xe000950c, 0x116de: 0xe0008eb0,\n\t0x116e1: 0xe00072d1, 0x116e2: 0xe000704e,\n\t0x116e5: 0xe000498a, 0x116e6: 0xe0008e77, 0x116e7: 0xe0004bd8,\n\t0x116e8: 0xe00044bb, 0x116eb: 0xe000613b,\n\t0x116ee: 0xe0009257,\n\t0x116f1: 0xe0005078, 0x116f2: 0xe0008468, 0x116f3: 0xe0006b0f,\n\t0x116f4: 0xe0009cd0, 0x116f5: 0xe00099f9, 0x116f7: 0xe000a14f,\n\t0x116f9: 0xe0004f9b,\n\t0x116fd: 0xe0007120, 0x116fe: 0xe0004518,\n\t// Block 0x45c, offset 0x11700\n\t0x11702: 0xe0007406, 0x11703: 0xe0009e77,\n\t0x11706: 0xe000654c,\n\t0x11709: 0xe00068b0,\n\t0x1170c: 0xe000a934,\n\t0x11711: 0xe0009bd8,\n\t0x11715: 0xe0005eb3, 0x11716: 0xe0009630,\n\t0x11719: 0xe00091bd, 0x1171a: 0xe000986b, 0x1171b: 0xe00064dc,\n\t0x1171d: 0xe0008c7d,\n\t0x11725: 0xe00071ad,\n\t0x11728: 0xe0007030, 0x1172b: 0xe0006b12,\n\t0x1172d: 0xe0006e00,\n\t0x11733: 0xe000873e,\n\t0x11736: 0xe00054d0, 0x11737: 0xe00082a5,\n\t0x11738: 0xe0006cc8,\n\t0x1173d: 0xe000603f, 0x1173f: 0xe000a787,\n\t// Block 0x45d, offset 0x11740\n\t0x11740: 0xe0008b69, 0x11743: 0xe00081e8,\n\t0x11744: 0xe000760b, 0x11745: 0xe0009ed7, 0x11747: 0xe00063fc,\n\t0x1174c: 0xe000a640, 0x1174e: 0xe0005f98,\n\t0x11754: 0xe0005e7b, 0x11755: 0xe0005e0b,\n\t0x11758: 0xe0009471,\n\t0x1175e: 0xe0006709, 0x1175f: 0xe00099b4,\n\t0x11761: 0xe00064f8, 0x11762: 0xe000545a, 0x11763: 0xe0009e3e,\n\t0x11768: 0xe0009608, 0x1176a: 0xe00060e0, 0x1176b: 0xe0006460,\n\t0x1176c: 0xe0008f13,\n\t0x11770: 0xe000a259, 0x11771: 0xe00057cf, 0x11772: 0xe000423c, 0x11773: 0xe0009e10,\n\t0x11774: 0xe0005239, 0x11777: 0xe0006628,\n\t0x11778: 0xe000a1fa, 0x11779: 0xe0004240, 0x1177a: 0xe0007f01, 0x1177b: 0xe000a5c0,\n\t0x1177c: 0xe0008227, 0x1177d: 0xe000822a, 0x1177e: 0xe000507b, 0x1177f: 0xe0007983,\n\t// Block 0x45e, offset 0x11780\n\t0x11784: 0xe0008742, 0x11787: 0xe000695d,\n\t0x1178a: 0xe0006ccc, 0x1178b: 0xe0005117,\n\t0x1178f: 0xe0006d89,\n\t0x11795: 0xe000886e, 0x11796: 0xe0009eb6, 0x11797: 0xe0008add,\n\t0x1179a: 0xe00046bd,\n\t0x1179c: 0xe00067b3,\n\t0x117a0: 0xe0006cd0,\n\t0x117a6: 0xe000552a, 0x117a7: 0xe0008e7a,\n\t0x117ab: 0xe000481d,\n\t0x117ad: 0xe0008b6d,\n\t0x117b3: 0xe00069db,\n\t0x117b5: 0xe00076d7, 0x117b6: 0xe0006d8c, 0x117b7: 0xe00043b0,\n\t0x117b8: 0xe0007f5e,\n\t0x117bd: 0xe000803b, 0x117be: 0xe000822d,\n\t// Block 0x45f, offset 0x117c0\n\t0x117c1: 0xe000999c, 0x117c2: 0xe0006cd4,\n\t0x117c8: 0xe0009ff9, 0x117c9: 0xe00059d8, 0x117ca: 0xe0005837, 0x117cb: 0xe000724c,\n\t0x117d0: 0xe0004c7a, 0x117d1: 0xe0004f9f, 0x117d3: 0xe0004a35,\n\t0x117d5: 0xe00083ce, 0x117d6: 0xe0005ba4,\n\t0x117da: 0xe0008eb3, 0x117db: 0xe0008995,\n\t0x117dd: 0xe0007451, 0x117de: 0xe000a8f7, 0x117df: 0xe0006111,\n\t0x117e0: 0xe00093a3, 0x117e1: 0xe0006180, 0x117e2: 0xe0009e41, 0x117e3: 0xe0004b0d,\n\t0x117e5: 0xe0004b90, 0x117e7: 0xe00087c2,\n\t0x117e8: 0xe000a1cb, 0x117e9: 0xe0005cc0,\n\t0x117ec: 0xe00058e9,\n\t0x117f1: 0xe0007d86, 0x117f3: 0xe0009664,\n\t0x117f6: 0xe0007a23, 0x117f7: 0xe0008b71,\n\t0x117fa: 0xe000451c, 0x117fb: 0xe000a6be,\n\t0x117ff: 0xe00085ba,\n\t// Block 0x460, offset 0x11800\n\t0x11801: 0xe00065c8, 0x11803: 0xe000511a,\n\t0x11804: 0xe0005b2e, 0x11807: 0xe0004350,\n\t0x11808: 0xe000a289, 0x1180a: 0xe0009e44, 0x1180b: 0xe00084da,\n\t0x1180f: 0xe000747d,\n\t0x11811: 0xe0007409, 0x11813: 0xe0004def,\n\t0x11814: 0xe0008cf8, 0x11815: 0xe0008506, 0x11817: 0xe00068f8,\n\t0x11818: 0xe000a515, 0x1181b: 0xe000846b,\n\t0x1181f: 0xe0008c80,\n\t0x11822: 0xe000558a,\n\t0x11825: 0xe0006232, 0x11826: 0xe000a2a1, 0x11827: 0xe000a42d,\n\t0x11829: 0xe0005277,\n\t0x1182d: 0xe0006235,\n\t0x11831: 0xe0007821,\n\t0x11834: 0xe0005615, 0x11835: 0xe0008746,\n\t0x1183a: 0xe00043b4,\n\t0x1183c: 0xe0009f8d,\n\t// Block 0x461, offset 0x11840\n\t0x11840: 0xe0004d19,\n\t0x11846: 0xe0006610,\n\t0x11848: 0xe0009b64, 0x1184a: 0xe00043b8,\n\t0x1184c: 0xe00061f9, 0x1184e: 0xe0005e37,\n\t0x11854: 0xe0005b0e, 0x11856: 0xe0005342, 0x11857: 0xe000a3e8,\n\t0x11858: 0xe00096b2, 0x11859: 0xe000a833, 0x1185b: 0xe000846e,\n\t0x1185d: 0xe00084aa,\n\t0x11862: 0xe000a391,\n\t0x11864: 0xe0005689, 0x11866: 0xe000792f, 0x11867: 0xe0008066,\n\t0x11869: 0xe000943f, 0x1186a: 0xe0009ef1, 0x1186b: 0xe0008cfb,\n\t0x1186c: 0xe0006a4f, 0x1186d: 0xe0009d90,\n\t0x11870: 0xe00093a7, 0x11871: 0xe0007b4f,\n\t0x11877: 0xe0006400,\n\t0x11879: 0xe00079e3,\n\t0x1187c: 0xe0009f64, 0x1187f: 0xe00068fc,\n\t// Block 0x462, offset 0x11880\n\t0x11880: 0xe0007e45, 0x11881: 0xe0008b75, 0x11882: 0xe0008d88,\n\t0x11885: 0xe00054d3, 0x11887: 0xe00072d5,\n\t0x11888: 0xe000a8af, 0x11889: 0xe00078b9, 0x1188a: 0xe000a6c1, 0x1188b: 0xe0005c8c,\n\t0x1188c: 0xe000a78a,\n\t0x11890: 0xe0006d8f, 0x11891: 0xe00046c1, 0x11892: 0xe000552d,\n\t0x11897: 0xe000570c,\n\t0x11898: 0xe0006495, 0x11899: 0xe0006b15,\n\t0x1189c: 0xe0006d20, 0x1189e: 0xe0008e0d,\n\t0x118a0: 0xe0005875, 0x118a1: 0xe00078e8, 0x118a3: 0xe000927b,\n\t0x118a7: 0xe0009de0,\n\t0x118a8: 0xe000a644, 0x118a9: 0xe00066d5, 0x118aa: 0xe00072d9,\n\t0x118ac: 0xe0006464, 0x118ad: 0xe0007f04, 0x118ae: 0xe00061fc, 0x118af: 0xe000a409,\n\t0x118b5: 0xe0009229, 0x118b7: 0xe0005504,\n\t0x118b9: 0xe000959c,\n\t0x118bc: 0xe0007f07, 0x118bd: 0xe000a836,\n\t// Block 0x463, offset 0x118c0\n\t0x118c3: 0xe0007561,\n\t0x118c5: 0xe0009f91,\n\t0x118c9: 0xe000558d,\n\t0x118cc: 0xe000507e, 0x118cd: 0xe000850a,\n\t0x118d0: 0xe0009bb4, 0x118d2: 0xe0009cc2,\n\t0x118d6: 0xe00097ac, 0x118d7: 0xe0009064,\n\t0x118d8: 0xe0005ec3, 0x118d9: 0xe0005ec7,\n\t0x118dd: 0xe000960c, 0x118de: 0xe0006284, 0x118df: 0xe0006288,\n\t0x118e0: 0xe000991a, 0x118e1: 0xe0009932,\n\t0x118e4: 0xe0007cc7,\n\t0x118e8: 0xe0007e31, 0x118eb: 0xe0009aa2,\n\t0x118ed: 0xe00065dc, 0x118ee: 0xe000511d,\n\t0x118f1: 0xe0009a7e,\n\t0x118f5: 0xe0005249,\n\t0x118f8: 0xe00052eb, 0x118fb: 0xe000a8b3,\n\t0x118fc: 0xe0004408, 0x118fd: 0xe000a501, 0x118ff: 0xe0006874,\n\t// Block 0x464, offset 0x11900\n\t0x1190a: 0xe000973c,\n\t0x1190d: 0xe00086a6, 0x1190f: 0xe000772f,\n\t0x11912: 0xe000527a,\n\t0x11914: 0xe0008c35, 0x11915: 0xe0009d03, 0x11916: 0xe0009e7a, 0x11917: 0xe000965c,\n\t0x11919: 0xe000a4a2, 0x1191b: 0xe00053b6,\n\t0x1191c: 0xe0005a18, 0x1191d: 0xe0006b18,\n\t0x11920: 0xe0009bfd, 0x11921: 0xe0008471,\n\t0x11925: 0xe0005007, 0x11926: 0xe0009e20, 0x11927: 0xe0006fd4,\n\t0x11928: 0xe000810a, 0x11929: 0xe0005302, 0x1192a: 0xe0004b7e,\n\t0x1192f: 0xe0004598,\n\t0x11933: 0xe000a6a4,\n\t// Block 0x465, offset 0x11940\n\t0x11941: 0xe0008592, 0x11942: 0xe00072dd, 0x11943: 0xe000740c,\n\t0x11946: 0xe000a17f, 0x11947: 0xe0004b31,\n\t0x11948: 0xe0006087, 0x1194a: 0xe000a371,\n\t0x1194d: 0xe000a648,\n\t0x11950: 0xe000498e, 0x11952: 0xe000a153,\n\t0x11955: 0xe0006d92,\n\t0x11959: 0xe0007869, 0x1195a: 0xe00079a7,\n\t0x1195d: 0xe0004ad9, 0x1195f: 0xe000a893,\n\t0x11960: 0xe0004b93, 0x11962: 0xe000a6c4, 0x11963: 0xe00085ea,\n\t0x11964: 0xe000a86f, 0x11965: 0xe00099b7,\n\t0x11968: 0xe000a05f, 0x11969: 0xe000835a, 0x1196a: 0xe00041f0, 0x1196b: 0xe0009c7a,\n\t0x1196c: 0xe000524d, 0x1196d: 0xe0004992, 0x1196f: 0xe0007481,\n\t0x11970: 0xe000a8ff,\n\t// Block 0x466, offset 0x11980\n\t0x11981: 0xe0007a93, 0x11983: 0xe000492e,\n\t0x11984: 0xe000973f, 0x11985: 0xe0007abf,\n\t0x11989: 0xe000754d, 0x1198b: 0xe0005d85,\n\t0x1198c: 0xe0008c83, 0x1198d: 0xe000a063, 0x1198f: 0xe000a375,\n\t0x11992: 0xe00083e6,\n\t0x11994: 0xe000a6c7, 0x11995: 0xe000a964, 0x11996: 0xe0009d66, 0x11997: 0xe00061c9,\n\t0x1199a: 0xe000714c, 0x1199b: 0xe0008999,\n\t0x1199f: 0xe0007c7f,\n\t0x119a0: 0xe0008230, 0x119a2: 0xe00058c9, 0x119a3: 0xe000a5c4,\n\t0x119a4: 0xe00097c8, 0x119a7: 0xe0005cfa,\n\t0x119b0: 0xe0008e11, 0x119b1: 0xe00069de, 0x119b2: 0xe0006960, 0x119b3: 0xe0005508,\n\t0x119b4: 0xe000993a, 0x119b5: 0xe00093f7, 0x119b6: 0xe0006254,\n\t0x119b8: 0xe00047ab, 0x119bb: 0xe000a20a,\n\t0x119bc: 0xe0005530, 0x119bd: 0xe000948b, 0x119be: 0xe00049be,\n\t// Block 0x467, offset 0x119c0\n\t0x119c4: 0xe0005235, 0x119c5: 0xe0008b79, 0x119c6: 0xe000986e, 0x119c7: 0xe00055f1,\n\t0x119c9: 0xe0009610, 0x119cb: 0xe0007e35,\n\t0x119cf: 0xe0005823,\n\t0x119d1: 0xe000a4c9, 0x119d3: 0xe0004e33,\n\t0x119d5: 0xe00094e4,\n\t0x119d8: 0xe0005eeb, 0x119d9: 0xe00095c4, 0x119da: 0xe000a505, 0x119db: 0xe000a4f1,\n\t0x119dc: 0xe0006e04, 0x119dd: 0xe00093fb, 0x119df: 0xe0008233,\n\t0x119e0: 0xe000a3eb, 0x119e1: 0xe000760f, 0x119e2: 0xe0007180,\n\t0x119f0: 0xe0009aba, 0x119f1: 0xe00052b1, 0x119f2: 0xe00080ba, 0x119f3: 0xe0006cd8,\n\t0x119f4: 0xe0009946, 0x119f6: 0xe000a64c, 0x119f7: 0xe0008fa9,\n\t0x119f8: 0xe0004755, 0x119f9: 0xe000780c, 0x119fa: 0xe0006fd8, 0x119fb: 0xe0009994,\n\t0x119fc: 0xe0009de4,\n\t// Block 0x468, offset 0x11a00\n\t0x11a00: 0xe0009742, 0x11a01: 0xe00071b0, 0x11a03: 0xe0006ee4,\n\t0x11a06: 0xe0004520,\n\t0x11a08: 0xe0008236, 0x11a09: 0xe0008239,\n\t0x11a0d: 0xe0006258, 0x11a0e: 0xe0009db0, 0x11a0f: 0xe000840e,\n\t0x11a14: 0xe00083d2, 0x11a15: 0xe0007613,\n\t0x11a1a: 0xe0007fe4, 0x11a1b: 0xe0007763,\n\t0x11a1c: 0xe000a379, 0x11a1f: 0xe0004304,\n\t0x11a27: 0xe0004b81,\n\t0x11a2c: 0xe00070bd, 0x11a2d: 0xe0005120,\n\t0x11a30: 0xe000a650,\n\t0x11a34: 0xe00093ab, 0x11a37: 0xe000444f,\n\t0x11a3c: 0xe00074d5, 0x11a3e: 0xe0004452, 0x11a3f: 0xe000810e,\n\t// Block 0x469, offset 0x11a40\n\t0x11a42: 0xe0007f62,\n\t0x11a44: 0xe0005c90, 0x11a46: 0xe0005590, 0x11a47: 0xe000835e,\n\t0x11a48: 0xe00085ed, 0x11a4a: 0xe000465d, 0x11a4b: 0xe0009c00,\n\t0x11a4c: 0xe000a654, 0x11a4d: 0xe0007d2a,\n\t0x11a52: 0xe0008e4d, 0x11a53: 0xe0009ef4,\n\t0x11a55: 0xe0006042,\n\t0x11a58: 0xe0009333, 0x11a59: 0xe0009337, 0x11a5a: 0xe000935f,\n\t0x11a5d: 0xe0009cba, 0x11a5f: 0xe0009c62,\n\t0x11a60: 0xe0007cca, 0x11a62: 0xe0005e3b, 0x11a63: 0xe0004a65,\n\t0x11a64: 0xe00041f4, 0x11a67: 0xe000a3ee,\n\t0x11a68: 0xe0004455, 0x11a6b: 0xe0008e15,\n\t0x11a6e: 0xe00058ec,\n\t0x11a70: 0xe00081b2, 0x11a71: 0xe000537a, 0x11a73: 0xe000428c,\n\t0x11a74: 0xe00073b2, 0x11a75: 0xe0007faa, 0x11a76: 0xe00046c5, 0x11a77: 0xe00043bc,\n\t0x11a7a: 0xe0005c1b,\n\t0x11a7d: 0xe00094ac, 0x11a7e: 0xe0007f22,\n\t// Block 0x46a, offset 0x11a80\n\t0x11a81: 0xe00097cc, 0x11a82: 0xe0007fe7, 0x11a83: 0xe0007fae,\n\t0x11a8a: 0xe0006963,\n\t0x11a8d: 0xe0004c23, 0x11a8e: 0xe0009021,\n\t0x11a90: 0xe0005968, 0x11a91: 0xe0006ab3, 0x11a92: 0xe0004e79,\n\t0x11a94: 0xe00096d9, 0x11a96: 0xe0008382,\n\t0x11a98: 0xe000a93a, 0x11a99: 0xe000a937, 0x11a9a: 0xe0009b68,\n\t0x11aa4: 0xe0006878, 0x11aa7: 0xe0005645,\n\t0x11aa8: 0xe0004354, 0x11aa9: 0xe00045ab, 0x11aab: 0xe000625c,\n\t0x11aac: 0xe00046c9, 0x11aae: 0xe000613e, 0x11aaf: 0xe0009363,\n\t0x11ab2: 0xe000a245,\n\t0x11ab6: 0xe0007913,\n\t0x11ab8: 0xe0006f88, 0x11aba: 0xe00053ce, 0x11abb: 0xe0009b80,\n\t0x11abc: 0xe0004759, 0x11abe: 0xe0004308,\n\t// Block 0x46b, offset 0x11ac0\n\t0x11ac3: 0xe0004f5f,\n\t0x11ac6: 0xe0008d8b, 0x11ac7: 0xe0004244,\n\t0x11ac8: 0xe000a1a4, 0x11ac9: 0xe00083f6, 0x11aca: 0xe0007c82, 0x11acb: 0xe0006141,\n\t0x11acc: 0xe0007a03,\n\t0x11ad5: 0xe0007b03, 0x11ad7: 0xe000a020,\n\t0x11ade: 0xe00060e4, 0x11adf: 0xe00054f1,\n\t0x11ae3: 0xe00061cd,\n\t0x11ae6: 0xe00051a1,\n\t0x11af2: 0xe000922d,\n\t0x11af6: 0xe0005757, 0x11af7: 0xe000a6ca,\n\t0x11af8: 0xe000a2a5, 0x11afa: 0xe000933b,\n\t0x11afc: 0xe0004c7d, 0x11afd: 0xe000a5f8, 0x11afe: 0xe0006fb0, 0x11aff: 0xe0008411,\n\t// Block 0x46c, offset 0x11b00\n\t0x11b00: 0xe000596c,\n\t0x11b07: 0xe000545e,\n\t0x11b08: 0xe00049ed, 0x11b0a: 0xe0006144,\n\t0x11b0c: 0xe0007361, 0x11b0d: 0xe00071b3, 0x11b0e: 0xe0008342,\n\t0x11b10: 0xe0006fdc, 0x11b11: 0xe00075ba, 0x11b12: 0xe00047ae,\n\t0x11b14: 0xe00086da, 0x11b15: 0xe00087c6, 0x11b16: 0xe000a4cd,\n\t0x11b1a: 0xe00094b0,\n\t0x11b1e: 0xe00076af, 0x11b1f: 0xe0004f33,\n\t0x11b21: 0xe000430c, 0x11b22: 0xe0009225,\n\t0x11b27: 0xe00093ff,\n\t0x11b29: 0xe0008a1d, 0x11b2a: 0xe0008aad,\n\t0x11b2e: 0xe0005c64,\n\t0x11b30: 0xe000899d, 0x11b31: 0xe000a93d, 0x11b32: 0xe000a967, 0x11b33: 0xe00092a3,\n\t0x11b34: 0xe00054d6, 0x11b35: 0xe0004d1c, 0x11b36: 0xe000a430,\n\t0x11b39: 0xe00077d4,\n\t0x11b3e: 0xe00058ef, 0x11b3f: 0xe0006404,\n\t// Block 0x46d, offset 0x11b40\n\t0x11b40: 0xe0007051, 0x11b41: 0xe0009dbc, 0x11b43: 0xe000475d,\n\t0x11b47: 0xe0006e68,\n\t0x11b48: 0xe000a433, 0x11b49: 0xe0006966, 0x11b4a: 0xe0007b07, 0x11b4b: 0xe00071b6,\n\t0x11b4d: 0xe0008806, 0x11b4e: 0xe000931f,\n\t0x11b51: 0xe000670d, 0x11b52: 0xe00064cb, 0x11b53: 0xe0009abd,\n\t0x11b57: 0xe0008833,\n\t0x11b58: 0xe0009b0c, 0x11b5b: 0xe000440c,\n\t0x11b63: 0xe0004d1f,\n\t0x11b68: 0xe000853a,\n\t0x11b6e: 0xe000687c,\n\t0x11b71: 0xe000500b, 0x11b73: 0xe000638c,\n\t0x11b76: 0xe00067b6,\n\t0x11b79: 0xe0006969, 0x11b7a: 0xe00090be,\n\t0x11b7c: 0xe00077b8, 0x11b7e: 0xe0008d8e, 0x11b7f: 0xe00073d2,\n\t// Block 0x46e, offset 0x11b80\n\t0x11b80: 0xe0005081, 0x11b83: 0xe00065e0,\n\t0x11b84: 0xe00096dc, 0x11b86: 0xe00061d1,\n\t0x11b89: 0xe0004635, 0x11b8a: 0xe0009cd3,\n\t0x11b91: 0xe0007917, 0x11b92: 0xe0006d95,\n\t0x11b94: 0xe0006810, 0x11b95: 0xe0009ca4, 0x11b96: 0xe00056d3, 0x11b97: 0xe000a157,\n\t0x11b98: 0xe0008ab1, 0x11b9b: 0xe0009e7d,\n\t0x11ba8: 0xe0009e24, 0x11bab: 0xe0009f67,\n\t0x11bac: 0xe0009c27,\n\t0x11bb1: 0xe0009e80,\n\t0x11bb5: 0xe0008871,\n\t0x11bb9: 0xe0005e9b,\n\t0x11bbc: 0xe000771b, 0x11bbd: 0xe0009820,\n\t// Block 0x46f, offset 0x11bc0\n\t0x11bc2: 0xe0006900,\n\t0x11bc4: 0xe0008f16, 0x11bc5: 0xe000537e, 0x11bc6: 0xe0009b34, 0x11bc7: 0xe0006147,\n\t0x11bc8: 0xe0005251, 0x11bc9: 0xe0005827, 0x11bca: 0xe0006813,\n\t0x11bcc: 0xe0006334, 0x11bcd: 0xe00062c8, 0x11bcf: 0xe00051a4,\n\t0x11bd0: 0xe0004b84, 0x11bd1: 0xe000467d, 0x11bd2: 0xe00044be, 0x11bd3: 0xe00094b4,\n\t0x11bd4: 0xe00063ac, 0x11bd5: 0xe0009adb, 0x11bd6: 0xe0009ac0, 0x11bd7: 0xe0007eb6,\n\t0x11bd8: 0xe0004c80, 0x11bd9: 0xe0008dfd, 0x11bdb: 0xe00096df,\n\t0x11bdc: 0xe0006498,\n\t0x11bec: 0xe0004add, 0x11bed: 0xe0007485, 0x11bee: 0xe0005183, 0x11bef: 0xe0009029,\n\t0x11bf1: 0xe0004996, 0x11bf3: 0xe0004e1b,\n\t0x11bf5: 0xe0008df5, 0x11bf6: 0xe0009323, 0x11bf7: 0xe0004820,\n\t0x11bfd: 0xe0007c25, 0x11bfe: 0xe00073a2, 0x11bff: 0xe00051a7,\n\t// Block 0x470, offset 0x11c00\n\t0x11c01: 0xe0009067, 0x11c02: 0xe0004b69,\n\t0x11c07: 0xe000906a,\n\t0x11c09: 0xe000766b,\n\t0x11c0c: 0xe00045cd,\n\t0x11c10: 0xe00051ad, 0x11c11: 0xe0005533, 0x11c12: 0xe00059cc,\n\t0x11c28: 0xe000778a, 0x11c2a: 0xe00051b0, 0x11c2b: 0xe0008e7d,\n\t0x11c2f: 0xe0009109,\n\t0x11c39: 0xe00083ea, 0x11c3a: 0xe0008b7d, 0x11c3b: 0xe0007a2b,\n\t0x11c3d: 0xe0005e3f, 0x11c3e: 0xe000a345,\n\t// Block 0x471, offset 0x11c40\n\t0x11c42: 0xe0007ccd, 0x11c43: 0xe0004dbf,\n\t0x11c44: 0xe0004d22, 0x11c46: 0xe0004932,\n\t0x11c49: 0xe0009287,\n\t0x11c4c: 0xe0009d54, 0x11c4d: 0xe000a09f, 0x11c4e: 0xe00070c0, 0x11c4f: 0xe00051dc,\n\t0x11c50: 0xe0007a27,\n\t0x11c55: 0xe0009e83, 0x11c57: 0xe00094e8,\n\t0x11c67: 0xe0006745,\n\t0x11c68: 0xe0006b1b, 0x11c69: 0xe00059d0, 0x11c6b: 0xe00061d5,\n\t0x11c6e: 0xe00044c1,\n\t0x11c71: 0xe000778d, 0x11c72: 0xe0004e1f,\n\t0x11c76: 0xe0009871, 0x11c77: 0xe0009634,\n\t0x11c7a: 0xe00051e0, 0x11c7b: 0xe0005255,\n\t0x11c7f: 0xe0006d98,\n\t// Block 0x472, offset 0x11c80\n\t0x11c80: 0xe000a8b7, 0x11c83: 0xe0007054,\n\t0x11c84: 0xe0005c88, 0x11c87: 0xe00095c8,\n\t0x11c88: 0xe00071b9, 0x11c89: 0xe0005536, 0x11c8a: 0xe0006816,\n\t0x11c8c: 0xe000874a, 0x11c8e: 0xe0005123, 0x11c8f: 0xe0005593,\n\t0x11c92: 0xe000649b,\n\t0x11c96: 0xe00077bc,\n\t0x11c98: 0xe0004dd3, 0x11c9b: 0xe0004b60,\n\t0x11c9c: 0xe0007c28, 0x11c9f: 0xe0008c39,\n\t0x11ca0: 0xe0005885, 0x11ca1: 0xe0009442, 0x11ca2: 0xe0009ba0,\n\t0x11ca5: 0xe0008b25, 0x11ca7: 0xe000499a,\n\t0x11ca8: 0xe0009823, 0x11ca9: 0xe0007977, 0x11caa: 0xe0008cfe,\n\t0x11cac: 0xe0004d9b,\n\t0x11cbe: 0xe0007a97,\n\t// Block 0x473, offset 0x11cc0\n\t0x11cc0: 0xe0004248, 0x11cc3: 0xe0008a21,\n\t0x11cc4: 0xe000823c, 0x11cc6: 0xe0004eac,\n\t0x11cc9: 0xe00082a8,\n\t0x11ccf: 0xe0006114,\n\t0x11cd0: 0xe0008c86,\n\t0x11cd6: 0xe00083da,\n\t0x11cda: 0xe000786d, 0x11cdb: 0xe000a5c8,\n\t0x11cdf: 0xe0006de0,\n\t0x11ce0: 0xe00076b3, 0x11ce1: 0xe0007617, 0x11ce3: 0xe0009949,\n\t0x11ce9: 0xe000447f, 0x11ceb: 0xe0009874,\n\t0x11ced: 0xe00045ae, 0x11cee: 0xe000a839,\n\t0x11cf2: 0xe0006f4c,\n\t0x11cf4: 0xe0008112, 0x11cf5: 0xe000453c, 0x11cf6: 0xe000780f, 0x11cf7: 0xe0006c74,\n\t// Block 0x474, offset 0x11d00\n\t0x11d06: 0xe0004d25,\n\t0x11d09: 0xe000421c,\n\t0x11d0d: 0xe0007124, 0x11d0f: 0xe00062cc,\n\t0x11d12: 0xe0006468,\n\t0x11d14: 0xe0007057, 0x11d16: 0xe0007eb9, 0x11d17: 0xe0005539,\n\t0x11d1c: 0xe00071bc,\n\t0x11d22: 0xe000910d,\n\t0x11d24: 0xe00077d8, 0x11d25: 0xe0009877,\n\t0x11d28: 0xe0009bd0, 0x11d2a: 0xe0005486, 0x11d2b: 0xe0006390,\n\t0x11d2c: 0xe0006338, 0x11d2d: 0xe0009bc0, 0x11d2f: 0xe0005596,\n\t0x11d30: 0xe0004966,\n\t0x11d36: 0xe0009403,\n\t0x11d3a: 0xe000a854,\n\t0x11d3e: 0xe000928b,\n\t// Block 0x475, offset 0x11d40\n\t0x11d58: 0xe00088f9,\n\t0x11d60: 0xe00097d0,\n\t0x11d67: 0xe0009808,\n\t0x11d69: 0xe0005ddd,\n\t0x11d6d: 0xe00094ec, 0x11d6f: 0xe000906d,\n\t0x11d73: 0xe0004d28,\n\t0x11d78: 0xe0006045, 0x11d79: 0xe0006048, 0x11d7a: 0xe0008b29, 0x11d7b: 0xe0006f8c,\n\t0x11d7d: 0xe0009f21,\n\t// Block 0x476, offset 0x11d80\n\t0x11d85: 0xe0004e7c,\n\t0x11d88: 0xe0005a94,\n\t0x11d90: 0xe0009c3f, 0x11d91: 0xe0009c3b, 0x11d92: 0xe0006c3c, 0x11d93: 0xe0007ebc,\n\t0x11d95: 0xe0006de3,\n\t0x11d99: 0xe0008fad, 0x11d9a: 0xe000523d,\n\t0x11d9d: 0xe000a84b, 0x11d9e: 0xe0005462, 0x11d9f: 0xe0004c26,\n\t0x11da4: 0xe00095a0, 0x11da5: 0xe00063b0,\n\t0x11da9: 0xe0005bc5, 0x11dab: 0xe000614a,\n\t0x11dad: 0xe0009cd6, 0x11dae: 0xe00097f8,\n\t0x11db0: 0xe00092af, 0x11db2: 0xe00062d0,\n\t0x11dbb: 0xe000539e,\n\t0x11dbc: 0xe0004358, 0x11dbe: 0xe0004a1a, 0x11dbf: 0xe000458c,\n\t// Block 0x477, offset 0x11dc0\n\t0x11dc1: 0xe0007d62,\n\t0x11dc4: 0xe0005a97, 0x11dc5: 0xe0009510, 0x11dc7: 0xe0009c33,\n\t0x11dc9: 0xe00092a7, 0x11dca: 0xe00045b1,\n\t0x11dcd: 0xe0008d01, 0x11dce: 0xe00046cd,\n\t0x11dd0: 0xe000a5fc, 0x11dd2: 0xe0004fbf,\n\t0x11dd4: 0xe00053d2, 0x11dd5: 0xe000a863, 0x11dd7: 0xe00065ac,\n\t0x11dd8: 0xe000658c, 0x11dda: 0xe00044c4,\n\t0x11de0: 0xe0008cbc, 0x11de1: 0xe00054d9, 0x11de2: 0xe0009b10, 0x11de3: 0xe0005599,\n\t0x11de5: 0xe00057fb, 0x11de6: 0xe0009313, 0x11de7: 0xe00044c7,\n\t0x11dec: 0xe0008414, 0x11ded: 0xe000a580, 0x11def: 0xe0006a83,\n\t0x11df1: 0xe0004220, 0x11df2: 0xe00094b8,\n\t0x11df4: 0xe000a58c,\n\t0x11dfa: 0xe0009cd9,\n\t0x11dfe: 0xe0007ebf,\n\t// Block 0x478, offset 0x11e00\n\t0x11e00: 0xe000633c, 0x11e02: 0xe0005b7a,\n\t0x11e04: 0xe0009c47, 0x11e07: 0xe000a25d,\n\t0x11e0a: 0xe0005950,\n\t0x11e0f: 0xe0005b4a,\n\t0x11e14: 0xe00057d3,\n\t0x11e18: 0xe0007871, 0x11e19: 0xe0009367,\n\t0x11e1d: 0xe0006fa0,\n\t0x11e22: 0xe00092fb, 0x11e23: 0xe0005970,\n\t0x11e24: 0xe0009b84,\n\t0x11e2a: 0xe0004bdb, 0x11e2b: 0xe000a590,\n\t0x11e2c: 0xe00057ff, 0x11e2f: 0xe0009070,\n\t0x11e32: 0xe0005126,\n\t0x11e36: 0xe00071bf, 0x11e37: 0xe0004823,\n\t0x11e38: 0xe000823f, 0x11e39: 0xe0004458, 0x11e3b: 0xe000499e,\n\t0x11e3d: 0xe0006394, 0x11e3e: 0xe0006408, 0x11e3f: 0xe0008b81,\n\t// Block 0x479, offset 0x11e40\n\t0x11e45: 0xe0004826,\n\t0x11e48: 0xe000a73c, 0x11e49: 0xe0006238,\n\t0x11e4d: 0xe0006d9b, 0x11e4e: 0xe0004bde, 0x11e4f: 0xe0006260,\n\t0x11e51: 0xe0004c83,\n\t0x11e54: 0xe0007906, 0x11e55: 0xe0009a32, 0x11e56: 0xe0007c85, 0x11e57: 0xe0009d69,\n\t0x11e5d: 0xe0009e56, 0x11e5e: 0xe00093af,\n\t0x11e62: 0xe0004310, 0x11e63: 0xe0006be4,\n\t0x11e66: 0xe00055f5,\n\t0x11e6c: 0xe00046d1, 0x11e6d: 0xe0007875,\n\t0x11e72: 0xe0004829,\n\t0x11e74: 0xe0008b85, 0x11e75: 0xe00088fd, 0x11e77: 0xe00067b9,\n\t0x11e78: 0xe00071c2,\n\t0x11e7e: 0xe0006e6c,\n\t// Block 0x47a, offset 0x11e80\n\t0x11e81: 0xe00056d6, 0x11e82: 0xe00059dc, 0x11e83: 0xe0009e47,\n\t0x11e85: 0xe000a73f, 0x11e87: 0xe00061a5,\n\t0x11e8c: 0xe0006a53,\n\t0x11e90: 0xe000696c, 0x11e91: 0xe0006340,\n\t0x11e97: 0xe00056b8,\n\t0x11e99: 0xe0005ba7, 0x11e9b: 0xe00048d2,\n\t0x11e9c: 0xe0006b1e, 0x11e9d: 0xe00041c9, 0x11e9f: 0xe00091fd,\n\t0x11ea1: 0xe000769b,\n\t0x11ea4: 0xe0004f63, 0x11ea5: 0xe00094bc, 0x11ea7: 0xe00067bc,\n\t0x11eab: 0xe000867a,\n\t0x11eac: 0xe000933f, 0x11eaf: 0xe0006b21,\n\t0x11eb0: 0xe00074d9, 0x11eb1: 0xe00086aa, 0x11eb2: 0xe00092ab,\n\t0x11eb7: 0xe0005346,\n\t0x11eb9: 0xe000640c,\n\t0x11ebc: 0xe00078eb, 0x11ebd: 0xe000740f, 0x11ebf: 0xe00082ab,\n\t// Block 0x47b, offset 0x11ec0\n\t0x11ec1: 0xe0006410, 0x11ec2: 0xe0005129, 0x11ec3: 0xe0008a25,\n\t0x11ec4: 0xe000608a, 0x11ec5: 0xe00058f2, 0x11ec6: 0xe0009d84,\n\t0x11eca: 0xe000646c, 0x11ecb: 0xe0006e70,\n\t0x11ecc: 0xe0008b89, 0x11ecf: 0xe0008dd9,\n\t0x11ed2: 0xe0005c2a,\n\t0x11ed7: 0xe0005084,\n\t0x11ee0: 0xe000614d, 0x11ee3: 0xe0005087,\n\t0x11ee5: 0xe0008566, 0x11ee6: 0xe000534a,\n\t0x11ee8: 0xe0009073, 0x11ee9: 0xe0008d04,\n\t0x11eec: 0xe00072e1, 0x11eed: 0xe000806a,\n\t0x11ef1: 0xe000a067, 0x11ef2: 0xe00054f4,\n\t0x11ef4: 0xe0007fea,\n\t0x11efa: 0xe0007e49, 0x11efb: 0xe0006264,\n\t0x11efc: 0xe0006268, 0x11efd: 0xe00055f9, 0x11eff: 0xe0007c88,\n\t// Block 0x47c, offset 0x11f00\n\t0x11f00: 0xe000832e, 0x11f03: 0xe00099a0,\n\t0x11f06: 0xe000490a, 0x11f07: 0xe00073d6,\n\t0x11f09: 0xe0006414, 0x11f0a: 0xe000a436,\n\t0x11f0c: 0xe00093b3, 0x11f0e: 0xe0005ffc, 0x11f0f: 0xe000a4d9,\n\t0x11f10: 0xe0006880, 0x11f11: 0xe0004fc3, 0x11f13: 0xe00079e7,\n\t0x11f14: 0xe0006e08, 0x11f15: 0xe000a89f,\n\t0x11f1b: 0xe00044e5,\n\t0x11f1e: 0xe000662c, 0x11f1f: 0xe0006fe0,\n\t0x11f20: 0xe0007b53, 0x11f21: 0xe000a2f1,\n\t0x11f24: 0xe0005a58, 0x11f25: 0xe00098fa, 0x11f27: 0xe0005f0f,\n\t0x11f28: 0xe000867e, 0x11f2b: 0xe0004d2b,\n\t0x11f2d: 0xe000705a, 0x11f2f: 0xe0007412,\n\t0x11f30: 0xe0009ffc, 0x11f31: 0xe000806e,\n\t0x11f34: 0xe0006117, 0x11f35: 0xe0005319, 0x11f36: 0xe00093b7, 0x11f37: 0xe0007d2e,\n\t0x11f3a: 0xe0006630, 0x11f3b: 0xe0007733,\n\t// Block 0x47d, offset 0x11f40\n\t0x11f41: 0xe0008d07, 0x11f42: 0xe0007415, 0x11f43: 0xe000a658,\n\t0x11f44: 0xe000a65c,\n\t0x11f48: 0xe0004c29, 0x11f49: 0xe0009111, 0x11f4b: 0xe0009115,\n\t0x11f4c: 0xe0006d24, 0x11f4e: 0xe000a539, 0x11f4f: 0xe000766f,\n\t0x11f59: 0xe0008f69, 0x11f5b: 0xe000a2a9,\n\t0x11f5d: 0xe0008eb6, 0x11f5e: 0xe000a940, 0x11f5f: 0xe0006fe4,\n\t0x11f61: 0xe0009eb9, 0x11f62: 0xe0008acd,\n\t0x11f64: 0xe0007c8b, 0x11f65: 0xe000a5d0, 0x11f66: 0xe000a6cd, 0x11f67: 0xe000a439,\n\t0x11f68: 0xe00074dd, 0x11f69: 0xe0005e43, 0x11f6b: 0xe0009b14,\n\t0x11f6c: 0xe000724f, 0x11f6e: 0xe0006688, 0x11f6f: 0xe00046d5,\n\t0x11f70: 0xe0006e34, 0x11f73: 0xe0006e0c,\n\t0x11f74: 0xe0009668, 0x11f76: 0xe0008b8d, 0x11f77: 0xe0004e97,\n\t0x11f78: 0xe0008b91, 0x11f7a: 0xe0009076, 0x11f7b: 0xe00076f7,\n\t// Block 0x47e, offset 0x11f80\n\t0x11f84: 0xe000a806, 0x11f87: 0xe0004181,\n\t0x11f88: 0xe000a7de, 0x11f89: 0xe000a83c, 0x11f8b: 0xe000628c,\n\t0x11f8c: 0xe0004edc, 0x11f8e: 0xe0007b57,\n\t0x11f90: 0xe00081b5, 0x11f91: 0xe0006d9e,\n\t0x11f96: 0xe00051c0, 0x11f97: 0xe00076db,\n\t0x11f98: 0xe0007879,\n\t0x11f9d: 0xe0006000, 0x11f9e: 0xe0004c2c,\n\t0x11fa0: 0xe000482c, 0x11fa2: 0xe00093bb, 0x11fa3: 0xe000512c,\n\t0x11fab: 0xe00086e6,\n\t0x11fac: 0xe0006f50, 0x11fae: 0xe000604b,\n\t0x11fb1: 0xe000531d, 0x11fb2: 0xe000874e, 0x11fb3: 0xe000a3f1,\n\t0x11fb4: 0xe0009edb, 0x11fb5: 0xe000a0a3,\n\t0x11fb8: 0xe0005bc8, 0x11fb9: 0xe0006f68, 0x11fbb: 0xe00046d9,\n\t0x11fbe: 0xe00055fd, 0x11fbf: 0xe000a96a,\n\t// Block 0x47f, offset 0x11fc0\n\t0x11fc0: 0xe00079aa, 0x11fc1: 0xe000512f,\n\t0x11fc4: 0xe0007b2b, 0x11fc5: 0xe0007b37, 0x11fc6: 0xe0005938, 0x11fc7: 0xe00053d6,\n\t0x11fc9: 0xe000a742,\n\t0x11fd3: 0xe0009ebc,\n\t0x11fd6: 0xe0007766,\n\t0x11fd9: 0xe0006da1, 0x11fda: 0xe00060e8, 0x11fdb: 0xe000a7e2,\n\t0x11fdc: 0xe0007ec2, 0x11fdd: 0xe0009edf,\n\t0x11fe0: 0xe0004b11, 0x11fe3: 0xe0007a9b,\n\t0x11fe6: 0xe000a943,\n\t0x11fe8: 0xe0005b4e, 0x11fe9: 0xe0005210, 0x11fea: 0xe0005772,\n\t0x11fec: 0xe0007183, 0x11fee: 0xe0007987, 0x11fef: 0xe0009790,\n\t0x11ff0: 0xe0007e41, 0x11ff2: 0xe00048d6, 0x11ff3: 0xe0007bef,\n\t0x11ff4: 0xe00046dd, 0x11ff7: 0xe00042bc,\n\t0x11ff8: 0xe0006da4, 0x11ff9: 0xe0008d0d, 0x11ffa: 0xe0008d0a,\n\t0x11ffc: 0xe0005e47, 0x11ffe: 0xe0009025, 0x11fff: 0xe0009697,\n\t// Block 0x480, offset 0x12000\n\t0x12000: 0xe0009802, 0x12003: 0xe000a6d0,\n\t0x12005: 0xe0004568,\n\t0x12008: 0xe0008186, 0x12009: 0xe0008242, 0x1200b: 0xe0006928,\n\t0x1200c: 0xe0006398, 0x1200d: 0xe00066d9,\n\t0x12014: 0xe0006bc4, 0x12015: 0xe0009201, 0x12017: 0xe000583b,\n\t0x1201b: 0xe0005ecb,\n\t0x1201d: 0xe0008d10, 0x1201e: 0xe000508a, 0x1201f: 0xe000508d,\n\t0x12023: 0xe000568d,\n\t0x12026: 0xe00060d8, 0x12027: 0xe0005b32,\n\t0x12028: 0xe00060a8, 0x1202a: 0xe00061ff, 0x1202b: 0xe0005e9f,\n\t0x1202c: 0xe0006729, 0x1202d: 0xe0009317, 0x1202e: 0xe000990a,\n\t0x12031: 0xe0008eb9, 0x12033: 0xe0009d58,\n\t0x12034: 0xe00062d4, 0x12036: 0xe0009ac3,\n\t0x1203a: 0xe0004e5b,\n\t0x1203d: 0xe000a78d,\n\t// Block 0x481, offset 0x12040\n\t0x12045: 0xe000803e, 0x12046: 0xe000424c,\n\t0x12049: 0xe0006c50,\n\t0x1204e: 0xe0005cfd, 0x1204f: 0xe000a1fe,\n\t0x12050: 0xe0008809, 0x12051: 0xe00097b0, 0x12053: 0xe0009ef7,\n\t0x12056: 0xe0008752,\n\t0x1205c: 0xe00056bb, 0x1205e: 0xe0005090, 0x1205f: 0xe00070f8,\n\t0x12060: 0xe0004410,\n\t0x1206a: 0xe0009745,\n\t0x1206c: 0xe0008156, 0x1206d: 0xe000a15b, 0x1206f: 0xe000649e,\n\t0x12070: 0xe000455c, 0x12071: 0xe0005649, 0x12072: 0xe0004883, 0x12073: 0xe000611a,\n\t0x12075: 0xe0008874, 0x12077: 0xe0009cdc,\n\t0x1207b: 0xe00052e5,\n\t0x1207c: 0xe00088b9, 0x1207e: 0xe0007150, 0x1207f: 0xe0009d2c,\n\t// Block 0x482, offset 0x12080\n\t0x12087: 0xe000696f,\n\t0x12089: 0xe0007e4d, 0x1208b: 0xe0006418,\n\t0x1208c: 0xe00068b4, 0x1208f: 0xe00051e8,\n\t0x12090: 0xe0006e10, 0x12093: 0xe00056be,\n\t0x12095: 0xe0009a5e, 0x12097: 0xe0005db1,\n\t0x12098: 0xe0007c2b, 0x12099: 0xe0007dc7, 0x1209a: 0xe0005f12,\n\t0x1209c: 0xe00049f0, 0x1209d: 0xe0009079,\n\t0x120af: 0xe000482f,\n\t0x120b0: 0xe0009e14, 0x120b2: 0xe0007454, 0x120b3: 0xe000907c,\n\t0x120b6: 0xe0004184, 0x120b7: 0xe0004187,\n\t0x120b8: 0xe0004c86,\n\t0x120be: 0xe0007418,\n\t// Block 0x483, offset 0x120c0\n\t0x120c1: 0xe0009ade,\n\t0x120c4: 0xe0006634, 0x120c5: 0xe0005305,\n\t0x120ca: 0xe0008e51,\n\t0x120cf: 0xe00064e0,\n\t0x120d0: 0xe000604e, 0x120d1: 0xe0004314, 0x120d2: 0xe0009a4e, 0x120d3: 0xe0007ad7,\n\t0x120d4: 0xe0008245, 0x120d7: 0xe0007168,\n\t0x120d8: 0xe000862c, 0x120d9: 0xe000a12b, 0x120da: 0xe0008248,\n\t0x120dd: 0xe0009b18, 0x120de: 0xe00086ae, 0x120df: 0xe00051fc,\n\t0x120e2: 0xe00088bc,\n\t0x120e9: 0xe0004c89,\n\t0x120ec: 0xe0004250, 0x120ef: 0xe000418a,\n\t0x120f0: 0xe000521d, 0x120f1: 0xe0008ebc, 0x120f3: 0xe0005c2d,\n\t0x120f4: 0xe000741b, 0x120f5: 0xe0009461, 0x120f6: 0xe0006b24,\n\t0x120f9: 0xe0007457, 0x120fb: 0xe0006b27,\n\t0x120fe: 0xe0008b95,\n\t// Block 0x484, offset 0x12100\n\t0x12103: 0xe000a6f7,\n\t0x12112: 0xe00072e5, 0x12113: 0xe00089a1,\n\t0x12116: 0xe0006da7, 0x12117: 0xe0005c94,\n\t0x1211d: 0xe0004ae9, 0x1211e: 0xe0004290,\n\t0x12121: 0xe0004be1, 0x12122: 0xe00064e4,\n\t0x1212a: 0xe0008ebf,\n\t0x1212e: 0xe00084ad, 0x1212f: 0xe0008072,\n\t0x12131: 0xe00049c2, 0x12132: 0xe0004886,\n\t0x12134: 0xe0008a29,\n\t0x12138: 0xe000a1ea, 0x12139: 0xe0004f67, 0x1213b: 0xe00074b9,\n\t0x1213c: 0xe00045b5, 0x1213d: 0xe000880c,\n\t// Block 0x485, offset 0x12140\n\t0x12140: 0xe0004560, 0x12141: 0xe000a15f, 0x12142: 0xe00047b1, 0x12143: 0xe000553c,\n\t0x12144: 0xe0004b35, 0x12146: 0xe0004b39,\n\t0x12148: 0xe0007673, 0x12149: 0xe000768b,\n\t0x1214e: 0xe00091c1,\n\t0x12150: 0xe000564d, 0x12151: 0xe0006cdc, 0x12153: 0xe000a5d4,\n\t0x12154: 0xe0005187,\n\t0x1216d: 0xe0009119, 0x1216f: 0xe0008c3d,\n\t0x12174: 0xe0006819, 0x12176: 0xe0009c66, 0x12177: 0xe0004224,\n\t0x1217e: 0xe0004dc3, 0x1217f: 0xe0004254,\n\t// Block 0x486, offset 0x12180\n\t0x12181: 0xe00058a1, 0x12183: 0xe0008c41,\n\t0x12185: 0xe0005f15, 0x12186: 0xe0006470,\n\t0x1218f: 0xe00048da,\n\t0x12193: 0xe000880f,\n\t0x12194: 0xe00099ba, 0x12197: 0xe00046e1,\n\t0x1219b: 0xe00051b3,\n\t0x1219d: 0xe0008d13, 0x1219f: 0xe000a745,\n\t0x121a0: 0xe000591c, 0x121a1: 0xe0007de5, 0x121a2: 0xe00096e2, 0x121a3: 0xe000757d,\n\t0x121a7: 0xe0007c8e,\n\t0x121a8: 0xe0005d00,\n\t0x121ad: 0xe0006b2a, 0x121af: 0xe0008c89,\n\t0x121b0: 0xe00047b4, 0x121b1: 0xe000490e, 0x121b3: 0xe000705d,\n\t0x121b5: 0xe0006550, 0x121b6: 0xe0006202,\n\t// Block 0x487, offset 0x121c0\n\t0x121c4: 0xe0005096, 0x121c5: 0xe0006638,\n\t0x121c9: 0xe0005fac, 0x121ca: 0xe0005132, 0x121cb: 0xe0005093,\n\t0x121cc: 0xe0009457, 0x121cd: 0xe0004912,\n\t0x121d0: 0xe00069e1, 0x121d2: 0xe0006749,\n\t0x121d5: 0xe0008e19, 0x121d6: 0xe0008c45, 0x121d7: 0xe0008d16,\n\t0x121d8: 0xe0004f37, 0x121da: 0xe000692c,\n\t0x121df: 0xe0005651,\n\t0x121e0: 0xe0005466, 0x121e3: 0xe00096b5,\n\t0x121e7: 0xe00086c6,\n\t0x121e8: 0xe00047b7,\n\t0x121ec: 0xe0004e37, 0x121ee: 0xe0006c54,\n\t0x121f2: 0xe0006daa,\n\t0x121f9: 0xe000553f, 0x121fa: 0xe0004a69, 0x121fb: 0xe00068b8,\n\t0x121fc: 0xe00068bc,\n\t// Block 0x488, offset 0x12200\n\t0x12200: 0xe0007de9, 0x12201: 0xe0004a45,\n\t0x12204: 0xe0008b31, 0x12205: 0xe0008417,\n\t0x1220b: 0xe00058cd,\n\t0x1220d: 0xe0007489, 0x1220e: 0xe0009826,\n\t0x12211: 0xe00069e4, 0x12212: 0xe00096e5,\n\t0x12219: 0xe0009407,\n\t0x12227: 0xe0006004,\n\t0x12230: 0xe0007812,\n\t0x12234: 0xe0005382, 0x12236: 0xe0008e55,\n\t0x12239: 0xe0009a82,\n\t0x1223d: 0xe0007a2f, 0x1223f: 0xe00098fe,\n\t// Block 0x489, offset 0x12240\n\t0x12242: 0xe0006b96,\n\t0x1224a: 0xe000787d,\n\t0x1224f: 0xe0004edf,\n\t0x12253: 0xe0009f48,\n\t0x12254: 0xe0006f18, 0x12255: 0xe0009ac6, 0x12257: 0xe0004524,\n\t0x12259: 0xe0006150, 0x1225a: 0xe00096e8,\n\t0x1225d: 0xe000599c, 0x1225e: 0xe0005ccc,\n\t0x12260: 0xe00051ec, 0x12261: 0xe000824b, 0x12262: 0xe000824e, 0x12263: 0xe0006205,\n\t0x12265: 0xe000815a,\n\t0x12268: 0xe0008b99, 0x1226a: 0xe0008b35, 0x1226b: 0xe0009009,\n\t0x1226c: 0xe00042e0, 0x1226d: 0xe000799b, 0x1226e: 0xe0008877, 0x1226f: 0xe00072e9,\n\t0x12273: 0xe0005f30,\n\t0x12275: 0xe0004f3b, 0x12277: 0xe000a1a7,\n\t0x12278: 0xe0009829, 0x12279: 0xe0007b5b,\n\t// Block 0x48a, offset 0x12280\n\t0x1228e: 0xe00041cc,\n\t0x12291: 0xe000681c,\n\t0x12294: 0xe0005857, 0x12295: 0xe0007f66,\n\t0x12298: 0xe0004d2e, 0x1229b: 0xe000911d,\n\t0x1229c: 0xe000641c, 0x1229f: 0xe0008836,\n\t0x122a4: 0xe000456c, 0x122a5: 0xe000a660, 0x122a6: 0xe0004294, 0x122a7: 0xe0006972,\n\t0x122ad: 0xe0006b99, 0x122ae: 0xe0007b5f,\n\t0x122b0: 0xe00090c1, 0x122b1: 0xe000980b,\n\t0x122b4: 0xe0005c30, 0x122b7: 0xe0004c2f,\n\t0x122bb: 0xe0009bc4,\n\t0x122bc: 0xe000a12f, 0x122be: 0xe000496a,\n\t// Block 0x48b, offset 0x122c0\n\t0x122c0: 0xe0004889, 0x122c1: 0xe0004832, 0x122c3: 0xe0006344,\n\t0x122c7: 0xe0008a2d,\n\t0x122ca: 0xe0006bc8, 0x122cb: 0xe0004c8c,\n\t0x122cc: 0xe0009c89, 0x122cd: 0xe00093bf, 0x122ce: 0xe000927e,\n\t0x122d0: 0xe0004b87, 0x122d3: 0xe00049c6,\n\t0x122e5: 0xe000a40c, 0x122e6: 0xe0007fb2, 0x122e7: 0xe000936b,\n\t0x122e8: 0xe0004a39, 0x122e9: 0xe0004482, 0x122ea: 0xe000445b,\n\t0x122ed: 0xe0006d5c,\n\t0x122f2: 0xe00048ee,\n\t0x122f9: 0xe000488c, 0x122fb: 0xe0004eaf,\n\t0x122fd: 0xe0008d19, 0x122ff: 0xe0004f6b,\n\t// Block 0x48c, offset 0x12300\n\t0x12300: 0xe0008949, 0x12302: 0xe000761b,\n\t0x12305: 0xe0008e59,\n\t0x1230a: 0xe00064fc, 0x1230b: 0xe0009c7e,\n\t0x12311: 0xe00058a5, 0x12312: 0xe00062b8, 0x12313: 0xe0005bf4,\n\t0x12314: 0xe00070c3, 0x12317: 0xe000887a,\n\t0x12319: 0xe0009efa, 0x1231b: 0xe0004ee2,\n\t0x1231e: 0xe000982c, 0x1231f: 0xe0008756,\n\t0x12321: 0xe0006051, 0x12323: 0xe0007881,\n\t0x1232b: 0xe0004611,\n\t0x12335: 0xe00096eb,\n\t0x12338: 0xe00062d8, 0x12339: 0xe00071c5, 0x1233a: 0xe000a556, 0x1233b: 0xe0004e7f,\n\t0x1233d: 0xe0008f6d,\n\t// Block 0x48d, offset 0x12340\n\t0x12343: 0xe0006540,\n\t0x12344: 0xe0004318, 0x12347: 0xe0009982,\n\t0x12348: 0xe0007ec5, 0x1234a: 0xe0005c51, 0x1234b: 0xe0004be4,\n\t0x12350: 0xe0009b38, 0x12352: 0xe000808e, 0x12353: 0xe00072ed,\n\t0x12358: 0xe0004f23, 0x12359: 0xe0005714, 0x1235a: 0xe00072c5,\n\t0x1235f: 0xe0005099,\n\t0x12361: 0xe0006ce0, 0x12362: 0xe0009ae1,\n\t0x12366: 0xe0005691,\n\t0x1236b: 0xe000a71f,\n\t0x12375: 0xe0006c14,\n\t0x1237f: 0xe0004414,\n\t// Block 0x48e, offset 0x12380\n\t0x12380: 0xe000534e,\n\t0x12384: 0xe00045b9,\n\t0x12389: 0xe0008b9d,\n\t0x1238d: 0xe000791b, 0x1238e: 0xe0004fc7,\n\t0x12390: 0xe0009614,\n\t0x12394: 0xe000548a, 0x12397: 0xe0006590,\n\t0x1239c: 0xe000a6d3, 0x1239d: 0xe0009015, 0x1239f: 0xe00041cf,\n\t0x123a0: 0xe0004761, 0x123a2: 0xe000457c, 0x123a3: 0xe000875a,\n\t0x123ae: 0xe000559c,\n\t0x123b3: 0xe0006a57,\n\t0x123b6: 0xe0007b0f,\n\t0x123bb: 0xe000a0d7,\n\t0x123bc: 0xe0008386, 0x123bf: 0xe0007b0b,\n\t// Block 0x48f, offset 0x123c0\n\t0x123c2: 0xe0005542, 0x123c3: 0xe0004e5e,\n\t0x123d3: 0xe0005a9a,\n\t0x123da: 0xe00058f5, 0x123db: 0xe0009001,\n\t0x123dc: 0xe000488f, 0x123dd: 0xe00055e5, 0x123de: 0xe0007a9f, 0x123df: 0xe0005954,\n\t0x123ea: 0xe0005958,\n\t0x123ec: 0xe0009a3a,\n\t0x123f6: 0xe000a249,\n\t0x123fb: 0xe00077e0,\n\t0x123fc: 0xe0009618,\n\t// Block 0x490, offset 0x12400\n\t0x12402: 0xe0006310, 0x12403: 0xe000936f,\n\t0x12404: 0xe00057b3,\n\t0x1240a: 0xe0004e23,\n\t0x1240c: 0xe000875e,\n\t0x12411: 0xe00092ff, 0x12412: 0xe00057b7,\n\t0x12416: 0xe0005803,\n\t0x1241e: 0xe0005a5c,\n\t0x12420: 0xe000a8eb, 0x12421: 0xe000925a, 0x12423: 0xe000a8a3,\n\t0x1242c: 0xe000a1ce,\n\t0x12432: 0xe0007f26,\n\t0x12437: 0xe000a96d,\n\t0x12438: 0xe0007790, 0x12439: 0xe0008447, 0x1243a: 0xe000509c, 0x1243b: 0xe000a7fa,\n\t0x1243d: 0xe000a8ef, 0x1243e: 0xe0004a6d, 0x1243f: 0xe000435c,\n\t// Block 0x491, offset 0x12440\n\t0x12443: 0xe0006c8c,\n\t0x12446: 0xe000a8f3, 0x12447: 0xe000a261,\n\t0x12449: 0xe0004681,\n\t0x1244c: 0xe000418d, 0x1244e: 0xe0009b6c,\n\t0x12450: 0xe0004c8f,\n\t0x12454: 0xe000a242,\n\t0x12459: 0xe000a90f, 0x1245a: 0xe0006ee8, 0x1245b: 0xe0004360,\n\t0x1245f: 0xe00079ba,\n\t0x12460: 0xe00095cc, 0x12461: 0xe000a5cc, 0x12462: 0xe000907f, 0x12463: 0xe0008ba1,\n\t0x12464: 0xe000925d, 0x12465: 0xe000668b, 0x12466: 0xe0006153, 0x12467: 0xe0005135,\n\t0x1246a: 0xe0007e6b,\n\t0x12472: 0xe000701e,\n\t0x12477: 0xe000593c,\n\t0x12478: 0xe0004e9a, 0x1247b: 0xe0006b2d,\n\t0x1247f: 0xe00060cc,\n\t// Block 0x492, offset 0x12480\n\t0x12480: 0xe0007f0a, 0x12482: 0xe0008d91, 0x12483: 0xe0007737,\n\t0x12484: 0xe0009121, 0x12486: 0xe0009c03,\n\t0x12489: 0xe00072f1, 0x1248a: 0xe00071c8,\n\t0x1248d: 0xe0009f24,\n\t0x12491: 0xe0005047,\n\t0x12496: 0xe000748d,\n\t0x12498: 0xe00086ca,\n\t0x1249e: 0xe0008092,\n\t0x124a2: 0xe00096b8,\n\t0x124a4: 0xe0006d28,\n\t0x124ab: 0xe0009b88,\n\t0x124ad: 0xe0004418, 0x124ae: 0xe00059e0, 0x124af: 0xe0006a5b,\n\t0x124b2: 0xe0006f6c, 0x124b3: 0xe0007252,\n\t0x124b5: 0xe0005352, 0x124b7: 0xe0008362,\n\t0x124ba: 0xe0006c40,\n\t0x124bc: 0xe00041f8, 0x124bd: 0xe000a763, 0x124bf: 0xe00089a5,\n\t// Block 0x493, offset 0x124c0\n\t0x124c1: 0xe000a824,\n\t0x124c4: 0xe00045d1, 0x124c5: 0xe000841a, 0x124c6: 0xe0004c92,\n\t0x124cb: 0xe0006156,\n\t0x124cd: 0xe0006054, 0x124cf: 0xe0005f18,\n\t0x124d2: 0xe00055bd, 0x124d3: 0xe00082fa,\n\t0x124d4: 0xe0006975, 0x124d6: 0xe0006978, 0x124d7: 0xe000697b,\n\t0x124d8: 0xe000697e, 0x124da: 0xe0009373, 0x124db: 0xe0006057,\n\t0x124eb: 0xe000a43c,\n\t0x124ec: 0xe0004c95, 0x124ef: 0xe000541e,\n\t0x124f3: 0xe0009985,\n\t0x124ff: 0xe0006c34,\n\t// Block 0x494, offset 0x12500\n\t0x12505: 0xe000940b,\n\t0x12508: 0xe00089a9,\n\t0x1250f: 0xe00075a5,\n\t0x12510: 0xe00088bf, 0x12511: 0xe000626c, 0x12513: 0xe0005f6c,\n\t0x1251b: 0xe00068c0,\n\t0x12523: 0xe000509f,\n\t0x12524: 0xe000853e,\n\t0x12533: 0xe0007d32,\n\t0x12534: 0xe00071cb, 0x12537: 0xe0006ab7,\n\t0x12538: 0xe0007b63,\n\t0x1253e: 0xe0006554, 0x1253f: 0xe0004e82,\n\t// Block 0x495, offset 0x12540\n\t0x12540: 0xe0008ba5, 0x12541: 0xe000900d, 0x12542: 0xe0004c98, 0x12543: 0xe0009d5c,\n\t0x1254b: 0xe00086b2,\n\t0x1254e: 0xe0006558, 0x1254f: 0xe00054f7,\n\t0x12550: 0xe0006e14, 0x12552: 0xe0005eef,\n\t0x12554: 0xe000a8db, 0x12555: 0xe0006be8, 0x12557: 0xe000a06b,\n\t0x12559: 0xe0007cd0, 0x1255a: 0xe0007c91, 0x1255b: 0xe0007529,\n\t0x1255c: 0xe0006b9c, 0x1255d: 0xe00079bd, 0x1255e: 0xe000a519, 0x1255f: 0xe00043c0,\n\t0x12560: 0xe0009082,\n\t0x12568: 0xe000495e, 0x1256a: 0xe0007e51,\n\t0x1256d: 0xe0007bf2,\n\t0x12570: 0xe0009c06, 0x12572: 0xe000500f,\n\t0x12574: 0xe0009d48, 0x12576: 0xe00061a9,\n\t0x1257a: 0xe0004639,\n\t0x1257d: 0xe00050a2, 0x1257e: 0xe0006884,\n\t// Block 0x496, offset 0x12580\n\t0x12581: 0xe0007565, 0x12582: 0xe00050a5, 0x12583: 0xe0007cfe,\n\t0x12584: 0xe00080be, 0x12585: 0xe0008116, 0x12586: 0xe000a163, 0x12587: 0xe0007a33,\n\t0x12588: 0xe0009a62, 0x12589: 0xe0009a86,\n\t0x1258c: 0xe0005601, 0x1258d: 0xe000a4a5,\n\t0x12590: 0xe00060ac, 0x12592: 0xe00060d0, 0x12593: 0xe000543a,\n\t0x12594: 0xe0005fb0, 0x12595: 0xe00061e5, 0x12596: 0xe000991e,\n\t0x12598: 0xe00069e7, 0x12599: 0xe0006b30, 0x1259a: 0xe0009085, 0x1259b: 0xe0009d6c,\n\t0x125ab: 0xe0005ea3,\n\t0x125ac: 0xe0005f33, 0x125ae: 0xe000887d,\n\t0x125b0: 0xe0009b3c, 0x125b1: 0xe0009ae4, 0x125b3: 0xe0009fff,\n\t0x125b8: 0xe0006981, 0x125b9: 0xe0008251, 0x125bb: 0xe00099bd,\n\t0x125bc: 0xe0007060, 0x125bd: 0xe0004835, 0x125be: 0xe00095e8, 0x125bf: 0xe0007a37,\n\t// Block 0x497, offset 0x125c0\n\t0x125c1: 0xe000a664, 0x125c2: 0xe000a395,\n\t0x125c4: 0xe0006f1c, 0x125c5: 0xe0007255, 0x125c6: 0xe000857a,\n\t0x125c9: 0xe0009514, 0x125ca: 0xe00062dc,\n\t0x125cc: 0xe0009f95,\n\t0x125d0: 0xe0005cb4, 0x125d1: 0xe00082ae, 0x125d3: 0xe000a51d,\n\t0x125d4: 0xe0004364, 0x125d5: 0xe0006578, 0x125d7: 0xe0006b33,\n\t0x125d9: 0xe0009e28, 0x125da: 0xe000862f, 0x125db: 0xe000655c,\n\t0x125dc: 0xe00090c4, 0x125dd: 0xe00070c6,\n\t0x125e0: 0xe0005a60, 0x125e1: 0xe0009e86, 0x125e2: 0xe0009cdf, 0x125e3: 0xe00083de,\n\t0x125e5: 0xe00052fc,\n\t0x125e8: 0xe0008ec2, 0x125eb: 0xe000a2ad,\n\t0x125ee: 0xe0006348, 0x125ef: 0xe0006270,\n\t0x125f0: 0xe0009c09, 0x125f1: 0xe000774b, 0x125f3: 0xe0007b67,\n\t// Block 0x498, offset 0x12600\n\t0x12604: 0xe000a6fa, 0x12607: 0xe0008542,\n\t0x1260a: 0xe0009558, 0x1260b: 0xe0007885,\n\t0x1260c: 0xe00059c0,\n\t0x12611: 0xe000668e, 0x12612: 0xe0007033,\n\t0x12617: 0xe0007021,\n\t0x12619: 0xe00071ce, 0x1261b: 0xe0005787,\n\t0x1261e: 0xe0005655, 0x1261f: 0xe00084b0,\n\t0x12625: 0xe0009125, 0x12627: 0xe0008254,\n\t0x12629: 0xe0006f20, 0x1262a: 0xe000a521, 0x1262b: 0xe000a28d,\n\t0x1262c: 0xe0007114, 0x1262e: 0xe000559f,\n\t0x12632: 0xe0008ec5,\n\t0x12635: 0xe00072f5, 0x12636: 0xe000a88b,\n\t0x12638: 0xe0004b15, 0x12639: 0xe000811a, 0x1263a: 0xe000602c, 0x1263b: 0xe000a624,\n\t0x1263c: 0xe0007dca, 0x1263d: 0xe000a903, 0x1263e: 0xe0009ce2,\n\t// Block 0x499, offset 0x12640\n\t0x12641: 0xe0005c33,\n\t0x12659: 0xe0008ab5, 0x1265a: 0xe0008f71,\n\t0x1265c: 0xe0006a5f,\n\t0x12661: 0xe00063d8, 0x12663: 0xe0007ded,\n\t0x12664: 0xe0004bb6, 0x12665: 0xe00083ee, 0x12666: 0xe0009e89, 0x12667: 0xe0007bbf,\n\t0x12669: 0xe000a43f, 0x1266a: 0xe000583f,\n\t0x1266c: 0xe0005d03, 0x1266e: 0xe00067bf,\n\t0x12674: 0xe0007f2a, 0x12677: 0xe000a1aa,\n\t0x12678: 0xe0009a66, 0x12679: 0xe000a349,\n\t0x1267f: 0xe0009d6f,\n\t// Block 0x49a, offset 0x12680\n\t0x12682: 0xe00055a2,\n\t0x12685: 0xe0007ac3, 0x12687: 0xe00046e5,\n\t0x12688: 0xe0007063, 0x12689: 0xe0006fa4,\n\t0x1268c: 0xe0007f6a, 0x1268d: 0xe000a748, 0x1268e: 0xe0007a3b,\n\t0x12691: 0xe00070fc, 0x12693: 0xe0007a3f,\n\t0x12694: 0xe00086fa, 0x12695: 0xe000969a, 0x12696: 0xe0005d3f,\n\t0x126aa: 0xe000681f, 0x126ab: 0xe0004a9d,\n\t0x126af: 0xe0007769,\n\t0x126b2: 0xe00077c0,\n\t0x126b4: 0xe0007e39, 0x126b5: 0xe000a0db, 0x126b7: 0xe0005695,\n\t0x126b8: 0xe000a7a5,\n\t0x126bc: 0xe00058d1, 0x126bf: 0xe0009b40,\n\t// Block 0x49b, offset 0x126c0\n\t0x126c0: 0xe0008ba9, 0x126c3: 0xe0004e27,\n\t0x126c4: 0xe00099c0, 0x126c5: 0xe0006e18, 0x126c6: 0xe000a74b, 0x126c7: 0xe00050a8,\n\t0x126c8: 0xe0004de3, 0x126cb: 0xe0005db5,\n\t0x126cf: 0xe000a442,\n\t0x126d1: 0xe0007299, 0x126d2: 0xe0009491,\n\t0x126d6: 0xe00052c3,\n\t0x126d8: 0xe0005545, 0x126d9: 0xe0008e1d, 0x126da: 0xe0005bf7,\n\t0x126dd: 0xe00069ea, 0x126de: 0xe0007154,\n\t0x126e0: 0xe00069ed, 0x126e1: 0xe00053da, 0x126e2: 0xe0007a07,\n\t0x126e4: 0xe0007909, 0x126e5: 0xe0005b12, 0x126e6: 0xe0004368,\n\t0x126e8: 0xe0008bad, 0x126ea: 0xe0005c7c, 0x126eb: 0xe00083b2,\n\t0x126ec: 0xe0007388, 0x126ee: 0xe000a6d6,\n\t0x126f1: 0xe0007569, 0x126f3: 0xe00072f9,\n\t0x126f5: 0xe0007a43, 0x126f6: 0xe000587b, 0x126f7: 0xe000a4dd,\n\t0x126f8: 0xe000966c, 0x126f9: 0xe000797b, 0x126fa: 0xe0009518, 0x126fb: 0xe00095ec,\n\t0x126fc: 0xe000612c,\n\t// Block 0x49c, offset 0x12700\n\t0x12717: 0xe0006c58,\n\t0x12719: 0xe000a5d8, 0x1271a: 0xe0008880, 0x1271b: 0xe000431c,\n\t0x1271d: 0xe0009cb0, 0x1271f: 0xe0008bb1,\n\t0x12720: 0xe00044ca, 0x12721: 0xe0005548, 0x12723: 0xe0006b36,\n\t0x12724: 0xe00063b4, 0x12725: 0xe000761f, 0x12726: 0xe0007da6,\n\t0x12728: 0xe0007e8c, 0x1272b: 0xe0006f24,\n\t0x1272c: 0xe0009998, 0x1272d: 0xe00081b8, 0x1272f: 0xe000a167,\n\t0x12732: 0xe0006e74,\n\t0x12734: 0xe00042c0, 0x12736: 0xe0007b6b, 0x12737: 0xe0007aa3,\n\t0x12738: 0xe0008257, 0x1273a: 0xe000611d,\n\t0x1273c: 0xe0006208, 0x1273d: 0xe0008812, 0x1273e: 0xe000a4e1,\n\t// Block 0x49d, offset 0x12740\n\t0x12743: 0xe00064a1,\n\t0x12744: 0xe000620b, 0x12745: 0xe00059a0,\n\t0x1274a: 0xe0008ec8,\n\t0x1274d: 0xe0005356, 0x1274e: 0xe0005fd0,\n\t0x12751: 0xe0006de6, 0x12753: 0xe00068c4,\n\t0x12754: 0xe0008a31, 0x12756: 0xe000a445,\n\t0x12758: 0xe0006ce4, 0x1275b: 0xe00053de,\n\t0x1275c: 0xe0007491, 0x1275e: 0xe0008bb5, 0x1275f: 0xe000a668,\n\t0x12763: 0xe0006290,\n\t0x12767: 0xe0007f6e,\n\t0x1276b: 0xe000982f,\n\t0x1276e: 0xe000850e, 0x1276f: 0xe0009bdc,\n\t0x12772: 0xe000811e, 0x12773: 0xe00051f0,\n\t0x1277a: 0xe0006691,\n\t// Block 0x49e, offset 0x12780\n\t0x1278f: 0xe000548e,\n\t0x12790: 0xe0008122,\n\t0x12795: 0xe00060ec, 0x12796: 0xe0008f75,\n\t0x12798: 0xe000a133,\n\t0x1279c: 0xe0005c36, 0x1279d: 0xe0004c9b, 0x1279f: 0xe0006008,\n\t0x127a2: 0xe000856a,\n\t0x127a5: 0xe00067c2, 0x127a7: 0xe0005c9c,\n\t0x127aa: 0xe00047ba, 0x127ab: 0xe0007d0e,\n\t0x127af: 0xe0007066,\n\t0x127b1: 0xe0009129, 0x127b2: 0xe0007258,\n\t0x127b5: 0xe000838a, 0x127b6: 0xe0007f72, 0x127b7: 0xe000a4f5,\n\t0x127ba: 0xe0005315,\n\t0x127bd: 0xe0007f3a,\n\t// Block 0x49f, offset 0x127c0\n\t0x127c2: 0xe0006420, 0x127c3: 0xe0007d8a,\n\t0x127c4: 0xe00093c3, 0x127c5: 0xe0005fe0,\n\t0x127c8: 0xe000a4a8, 0x127c9: 0xe000a66c, 0x127cb: 0xe00085f0,\n\t0x127cc: 0xe00094c0, 0x127ce: 0xe000a399,\n\t0x127d1: 0xe000a628, 0x127d3: 0xe0008815,\n\t0x127d4: 0xe000554b, 0x127d5: 0xe000573c,\n\t0x127d9: 0xe000a6fd,\n\t0x127ec: 0xe000a4ab, 0x127ed: 0xe0009fb9, 0x127ef: 0xe000969d,\n\t0x127f4: 0xe0008901, 0x127f5: 0xe00062bc, 0x127f7: 0xe0005ac7,\n\t0x127f8: 0xe000a448,\n\t0x127fe: 0xe0004916, 0x127ff: 0xe0005e4b,\n\t// Block 0x4a0, offset 0x12800\n\t0x12801: 0xe00078ee, 0x12802: 0xe0009efd,\n\t0x12804: 0xe0007793, 0x12806: 0xe0009a52,\n\t0x12809: 0xe0005b16,\n\t0x1280c: 0xe0004fa3, 0x1280f: 0xe0005bfa,\n\t0x12811: 0xe000445e, 0x12813: 0xe0005d42,\n\t0x12814: 0xe0007a47, 0x12815: 0xe0008d1c,\n\t0x12819: 0xe0005386, 0x1281a: 0xe0004d31,\n\t0x12820: 0xe0005e0f, 0x12822: 0xe000a06f, 0x12823: 0xe0005974,\n\t0x1282a: 0xe000844a, 0x1282b: 0xe0005e4f,\n\t0x1282c: 0xe0009088, 0x1282d: 0xe0005ef3,\n\t0x12830: 0xe0006940, 0x12831: 0xe00071d1, 0x12832: 0xe00093c7, 0x12833: 0xe00087ca,\n\t0x12838: 0xe0008ae1,\n\t0x1283c: 0xe000980e, 0x1283e: 0xe00078bd, 0x1283f: 0xe0008762,\n\t// Block 0x4a1, offset 0x12840\n\t0x12841: 0xe0007b6f,\n\t0x1284f: 0xe000833a,\n\t0x12851: 0xe00063b8,\n\t0x12854: 0xe000463d, 0x12857: 0xe000920d,\n\t0x12858: 0xe000634c, 0x12859: 0xe0004ee5, 0x1285a: 0xe000729d, 0x1285b: 0xe00086ea,\n\t0x1285c: 0xe00086fe, 0x1285d: 0xe000a913, 0x1285e: 0xe0005a9d, 0x1285f: 0xe0006e1c,\n\t0x12861: 0xe0005619, 0x12862: 0xe000a670,\n\t0x12864: 0xe0008316, 0x12866: 0xe0005bcb,\n\t0x1286d: 0xe00053e2, 0x1286e: 0xe0008d1f, 0x1286f: 0xe0007581,\n\t0x12870: 0xe0004e61,\n\t0x12874: 0xe00088c2,\n\t0x12878: 0xe0006c18, 0x1287a: 0xe00086ce,\n\t0x1287c: 0xe0005659, 0x1287d: 0xe0006694, 0x1287e: 0xe0005d61,\n\t// Block 0x4a2, offset 0x12880\n\t0x12881: 0xe0006c78, 0x12882: 0xe0009235,\n\t0x12884: 0xe0009231, 0x12886: 0xe0007f0d,\n\t0x12888: 0xe00095a4, 0x12889: 0xe000436c, 0x1288b: 0xe000a727,\n\t0x1288c: 0xe000745a, 0x1288d: 0xe0008ecb, 0x1288e: 0xe0009d94,\n\t0x12890: 0xe0008096, 0x12892: 0xe000a53d,\n\t0x12894: 0xe000a44b, 0x12897: 0xe0004258,\n\t0x12898: 0xe0006c1c,\n\t0x1289f: 0xe0005cc4,\n\t0x128a1: 0xe0008d94, 0x128a3: 0xe000a073,\n\t0x128a4: 0xe0009c37, 0x128a7: 0xe0005a7f,\n\t0x128a8: 0xe0006de9,\n\t0x128ae: 0xe000a6d9, 0x128af: 0xe00092b3,\n\t0x128b1: 0xe00089ad, 0x128b3: 0xe0007c94,\n\t0x128b6: 0xe0008a35,\n\t0x128b9: 0xe00053e6,\n\t0x128be: 0xe00053a2,\n\t// Block 0x4a3, offset 0x128c0\n\t0x128c0: 0xe00045bd, 0x128c1: 0xe0009b1c, 0x128c2: 0xe00059e4, 0x128c3: 0xe0005295,\n\t0x128c6: 0xe00068c8, 0x128c7: 0xe0006d60,\n\t0x128c9: 0xe000725b, 0x128ca: 0xe0007bf5,\n\t0x128d5: 0xe000739e,\n\t0x128d8: 0xe000526d, 0x128da: 0xe0007b73, 0x128db: 0xe00060f0,\n\t0x128de: 0xe00069f0, 0x128df: 0xe0008c8c,\n\t0x128e0: 0xe000a44e, 0x128e1: 0xe000825a,\n\t0x128e4: 0xe000554e,\n\t0x128e9: 0xe000a451, 0x128eb: 0xe0005807,\n\t0x128ec: 0xe0008f79, 0x128ee: 0xe0006711, 0x128ef: 0xe0009b20,\n\t0x128f1: 0xe0006a63, 0x128f3: 0xe0008702,\n\t0x128f4: 0xe0007bc3,\n\t0x128fa: 0xe000955c,\n\t0x128fe: 0xe00058f8,\n\t// Block 0x4a4, offset 0x12900\n\t0x12901: 0xe0007889,\n\t0x12905: 0xe000a39d, 0x12906: 0xe00055c1, 0x12907: 0xe0007e5d,\n\t0x12909: 0xe0006b39, 0x1290b: 0xe000756d,\n\t0x1290f: 0xe0005c39,\n\t0x12911: 0xe0009ee3, 0x12912: 0xe0006d64, 0x12913: 0xe0009239,\n\t0x12915: 0xe0006a67,\n\t0x12918: 0xe0005aa0, 0x1291a: 0xe000a077, 0x1291b: 0xe0007b77,\n\t0x1291c: 0xe0008346, 0x1291d: 0xe0005940, 0x1291e: 0xe0008bb9, 0x1291f: 0xe0007069,\n\t0x12923: 0xe000a1ad,\n\t0x12926: 0xe00088c5, 0x12927: 0xe0005b36,\n\t0x12928: 0xe0005b65,\n\t0x1292f: 0xe0007b7b,\n\t0x12930: 0xe000623b, 0x12932: 0xe00059f0,\n\t0x12937: 0xe00084c2,\n\t0x12938: 0xe000961c,\n\t0x1293c: 0xe00078c1, 0x1293e: 0xe00057bb,\n\t// Block 0x4a5, offset 0x12940\n\t0x12944: 0xe0006fb4,\n\t0x1294c: 0xe0004a71, 0x1294e: 0xe0007b13,\n\t0x12950: 0xe000a3a1, 0x12951: 0xe0007177, 0x12953: 0xe00057d7,\n\t0x12958: 0xe0009b70,\n\t0x1295d: 0xe000a454, 0x1295e: 0xe0009d06,\n\t0x12963: 0xe0005e53,\n\t0x12969: 0xe0007b17, 0x1296b: 0xe000a559,\n\t0x1296f: 0xe0008c49,\n\t0x12970: 0xe000a6dc,\n\t0x12978: 0xe0004c9e,\n\t0x1297c: 0xe0008682, 0x1297d: 0xe0008818, 0x1297e: 0xe0008839,\n\t// Block 0x4a6, offset 0x12980\n\t0x12981: 0xe0005138,\n\t0x12985: 0xe00046e9, 0x12986: 0xe00061d9,\n\t0x1298a: 0xe0009964,\n\t0x1298e: 0xe0007adb,\n\t0x12992: 0xe00096ee,\n\t0x12995: 0xe000a183,\n\t0x12998: 0xe000a8a7, 0x12999: 0xe00085f3, 0x1299a: 0xe0004b19,\n\t0x129a1: 0xe0008bbd,\n\t0x129a4: 0xe000706c,\n\t0x129ab: 0xe000a2b1,\n\t0x129ac: 0xe00044cd, 0x129ad: 0xe0009b74, 0x129ae: 0xe0009ebf, 0x129af: 0xe000a3a5,\n\t0x129b0: 0xe0009ec2, 0x129b3: 0xe000663c,\n\t0x129b7: 0xe0008ece,\n\t0x129b8: 0xe0008686, 0x129b9: 0xe0008ae5,\n\t// Block 0x4a7, offset 0x129c0\n\t0x129c8: 0xe00059c4, 0x129ca: 0xe00078c5, 0x129cb: 0xe000a857,\n\t0x129cf: 0xe0007c97,\n\t0x129d3: 0xe00047e4,\n\t0x129d8: 0xe000a525, 0x129d9: 0xe000578b,\n\t0x129dc: 0xe000a812, 0x129dd: 0xe000902d, 0x129df: 0xe0007a4b,\n\t0x129f1: 0xe00046ed,\n\t0x129f9: 0xe0009d98,\n\t0x129fd: 0xe000674d,\n\t// Block 0x4a8, offset 0x12a00\n\t0x12a04: 0xe000a7ca,\n\t0x12a09: 0xe0007933,\n\t0x12a0c: 0xe0008f7d,\n\t0x12a19: 0xe00064a4, 0x12a1a: 0xe0006888,\n\t0x12a1c: 0xe000a4f9, 0x12a1e: 0xe0005605,\n\t0x12a20: 0xe000738b, 0x12a21: 0xe0006159,\n\t0x12a26: 0xe00096f1,\n\t0x12a2d: 0xe0004769, 0x12a2e: 0xe000a8bb, 0x12a2f: 0xe00086b6,\n\t0x12a30: 0xe0007adf, 0x12a31: 0xe000a291,\n\t0x12a36: 0xe0007a4f,\n\t// Block 0x4a9, offset 0x12a40\n\t0x12a46: 0xe000a023, 0x12a47: 0xe000a83f,\n\t0x12a49: 0xe0005978, 0x12a4a: 0xe000a80a,\n\t0x12a4c: 0xe000a674, 0x12a4e: 0xe00089b1,\n\t0x12a50: 0xe0007b7f, 0x12a52: 0xe00081eb,\n\t0x12a56: 0xe00051c4, 0x12a57: 0xe00051d0,\n\t0x12a59: 0xe0007a53,\n\t0x12a5c: 0xe0008076, 0x12a5e: 0xe0006c44,\n\t0x12a62: 0xe0004765,\n\t0x12a64: 0xe0005f1b, 0x12a65: 0xe000a5dc, 0x12a66: 0xe000a790, 0x12a67: 0xe0008d22,\n\t0x12a68: 0xe0007e8f, 0x12a69: 0xe0006500,\n\t0x12a6c: 0xe000788d, 0x12a6e: 0xe00085f6,\n\t0x12a7d: 0xe0006e78,\n\t// Block 0x4aa, offset 0x12a80\n\t0x12a80: 0xe0007b3b,\n\t0x12a84: 0xe0007495, 0x12a85: 0xe0007d36, 0x12a87: 0xe000a766,\n\t0x12a89: 0xe000809a, 0x12a8a: 0xe00080de,\n\t0x12a8f: 0xe000a7ce,\n\t0x12a92: 0xe000a3a9,\n\t0x12a94: 0xe0007f76,\n\t0x12a99: 0xe000a946, 0x12a9b: 0xe0009f27,\n\t0x12a9f: 0xe00072a1,\n\t0x12aa0: 0xe00073b6, 0x12aa2: 0xe0006751,\n\t0x12aa4: 0xe00084de,\n\t0x12aa8: 0xe00081ee,\n\t0x12aac: 0xe0007c9a, 0x12aaf: 0xe0006eec,\n\t0x12ab1: 0xe0007ac7, 0x12ab2: 0xe000476d,\n\t0x12ab9: 0xe000a949, 0x12aba: 0xe000a94c,\n\t0x12abe: 0xe00099c3,\n\t// Block 0x4ab, offset 0x12ac0\n\t0x12ac1: 0xe0007b2f, 0x12ac3: 0xe0007a57,\n\t0x12ac8: 0xe0005718, 0x12ac9: 0xe0005609, 0x12acb: 0xe0009748,\n\t0x12ace: 0xe0005baa,\n\t0x12ad0: 0xe0005d65, 0x12ad2: 0xe000706f,\n\t0x12ad4: 0xe0006504, 0x12ad5: 0xe0007a5b, 0x12ad6: 0xe0007585,\n\t0x12ad9: 0xe0009be4,\n\t0x12adf: 0xe0007b83,\n\t0x12ae0: 0xe0008086,\n\t0x12ae5: 0xe0008d25, 0x12ae6: 0xe00092b7, 0x12ae7: 0xe00071d4,\n\t0x12aec: 0xe000a827, 0x12aed: 0xe0009780, 0x12aee: 0xe0006fa8,\n\t0x12af9: 0xe000a970, 0x12afb: 0xe000a7d2,\n\t0x12afc: 0xe00074e1, 0x12afe: 0xe0005551, 0x12aff: 0xe0007ec8,\n\t// Block 0x4ac, offset 0x12b00\n\t0x12b00: 0xe000a27d,\n\t0x12b06: 0xe0009ee7, 0x12b07: 0xe0006f54,\n\t0x12b0b: 0xe000a7e6,\n\t0x12b0c: 0xe0004b3d, 0x12b0d: 0xe0006bcc,\n\t0x12b10: 0xe0005aa3,\n\t0x12b14: 0xe000a973, 0x12b17: 0xe0007b3f,\n\t0x12b1a: 0xe000783d, 0x12b1b: 0xe00057bf,\n\t0x12b1f: 0xe0004aa1,\n\t0x12b25: 0xe0009794,\n\t0x12b28: 0xe0009303, 0x12b2a: 0xe0008d28,\n\t0x12b2c: 0xe0009ce5, 0x12b2d: 0xe000883f,\n\t0x12b30: 0xe0008126, 0x12b32: 0xe00081bb,\n\t0x12b35: 0xe000868a, 0x12b36: 0xe00067c5,\n\t0x12b38: 0xe0009d09, 0x12b39: 0xe0005327, 0x12b3a: 0xe0007815, 0x12b3b: 0xe000a74e,\n\t0x12b3d: 0xe0006ce8, 0x12b3e: 0xe0008474,\n\t// Block 0x4ad, offset 0x12b40\n\t0x12b40: 0xe0006cec, 0x12b42: 0xe00087ce,\n\t0x12b46: 0xe0008766, 0x12b47: 0xe0009dc0,\n\t0x12b48: 0xe0009d30, 0x12b4b: 0xe0008a39,\n\t0x12b4c: 0xe0009d72,\n\t0x12b52: 0xe0009638, 0x12b53: 0xe0006474,\n\t0x12b54: 0xe0006314, 0x12b56: 0xe00082b1,\n\t0x12b58: 0xe00055c5, 0x12b59: 0xe00075bd, 0x12b5a: 0xe0009c43, 0x12b5b: 0xe0007fed,\n\t0x12b5d: 0xe0006a6b, 0x12b5f: 0xe000605a,\n\t0x12b61: 0xe000605d, 0x12b62: 0xe0005b68,\n\t0x12b67: 0xe00060b0,\n\t0x12b69: 0xe00061e9,\n\t0x12b6f: 0xe0004892,\n\t0x12b72: 0xe0006d68,\n\t0x12b74: 0xe00088c8,\n\t0x12b78: 0xe0008632, 0x12b79: 0xe0009cbe,\n\t0x12b7d: 0xe00045e9,\n\t// Block 0x4ae, offset 0x12b80\n\t0x12b80: 0xe0006dad, 0x12b81: 0xe0005d06,\n\t0x12b87: 0xe00068cc,\n\t0x12b8d: 0xe0004540,\n\t0x12b92: 0xe000a4ae,\n\t0x12b96: 0xe00057a7,\n\t0x12ba2: 0xe00055c9,\n\t0x12ba7: 0xe000a94f,\n\t0x12bac: 0xe00045ed, 0x12baf: 0xe0006560,\n\t0x12bb3: 0xe00086ba,\n\t0x12bb4: 0xe000768f, 0x12bb5: 0xe000a980,\n\t// Block 0x4af, offset 0x12bc0\n\t0x12bc0: 0xe0006cf0, 0x12bc2: 0xe0004b1d,\n\t0x12bc4: 0xe0008905,\n\t0x12bc9: 0xe00069f3,\n\t0x12bce: 0xe000771f,\n\t0x12bd0: 0xe000a457, 0x12bd2: 0xe00069f6,\n\t0x12bd7: 0xe0004ca1,\n\t0x12bd9: 0xe0008883,\n\t0x12be1: 0xe0004be7, 0x12be2: 0xe000a043,\n\t0x12be5: 0xe0007341,\n\t0x12be8: 0xe0008352, 0x12be9: 0xe00071d7,\n\t0x12bf4: 0xe0009e59, 0x12bf7: 0xe0004615,\n\t0x12bf8: 0xe0005d09, 0x12bf9: 0xe000a34d, 0x12bfa: 0xe000838e, 0x12bfb: 0xe0006c20,\n\t0x12bfc: 0xe0005843, 0x12bfd: 0xe0009d75,\n\t// Block 0x4b0, offset 0x12c00\n\t0x12c09: 0xe000513b, 0x12c0a: 0xe0007bf8,\n\t0x12c13: 0xe0004a1d,\n\t0x12c16: 0xe00093cb, 0x12c17: 0xe000844d,\n\t0x12c18: 0xe0008cbf, 0x12c19: 0xe0008853, 0x12c1b: 0xe0005f70,\n\t0x12c1c: 0xe000741e, 0x12c1d: 0xe0008e01,\n\t0x12c22: 0xe000a4b1,\n\t0x12c25: 0xe0007e7d, 0x12c27: 0xe0007dcd,\n\t0x12c28: 0xe000815e, 0x12c29: 0xe0006fe8, 0x12c2a: 0xe0008886, 0x12c2b: 0xe0006120,\n\t0x12c31: 0xe000528c,\n\t0x12c34: 0xe000a7a8, 0x12c36: 0xe000825d, 0x12c37: 0xe0008260,\n\t0x12c3e: 0xe000a62c, 0x12c3f: 0xe000812a,\n\t// Block 0x4b1, offset 0x12c40\n\t0x12c43: 0xe0007796,\n\t0x12c44: 0xe0007d02, 0x12c45: 0xe0006b3c,\n\t0x12c50: 0xe000876a, 0x12c52: 0xe0007c9d,\n\t0x12c57: 0xe0004e4b,\n\t0x12c58: 0xe0009e5c,\n\t0x12c5c: 0xe0005d89,\n\t0x12c60: 0xe0005bce,\n\t0x12c68: 0xe00055cd, 0x12c69: 0xe0007c2e, 0x12c6a: 0xe000a6df, 0x12c6b: 0xe000a271,\n\t0x12c6c: 0xe000a1d1, 0x12c6f: 0xe000a7ea,\n\t0x12c70: 0xe0007b87, 0x12c72: 0xe000a713,\n\t0x12c75: 0xe00059f8, 0x12c77: 0xe0004b41,\n\t0x12c78: 0xe00071da, 0x12c7a: 0xe00053a6, 0x12c7b: 0xe000a24d,\n\t0x12c7c: 0xe000623e,\n\t// Block 0x4b2, offset 0x12c80\n\t0x12c81: 0xe000a275,\n\t0x12c84: 0xe000a2b5, 0x12c86: 0xe00085f9, 0x12c87: 0xe000713c,\n\t0x12c88: 0xe0005aca, 0x12c89: 0xe0007d06, 0x12c8b: 0xe0007e55,\n\t0x12c8e: 0xe0008bc1,\n\t0x12c94: 0xe000951c, 0x12c95: 0xe0004298, 0x12c96: 0xe0004ca4, 0x12c97: 0xe0007ff0,\n\t0x12c98: 0xe00050ab,\n\t0x12c9e: 0xe0006822, 0x12c9f: 0xe0006274,\n\t0x12ca0: 0xe0004485,\n\t0x12ca6: 0xe000464d, 0x12ca7: 0xe000831a,\n\t0x12ca9: 0xe0007df1, 0x12cab: 0xe0005f36,\n\t0x12cad: 0xe0006a6f,\n\t0x12cb2: 0xe0005a1c, 0x12cb3: 0xe00054dc,\n\t0x12cb7: 0xe0008b01,\n\t0x12cb9: 0xe000a2b9, 0x12cbb: 0xe0009d0c,\n\t// Block 0x4b3, offset 0x12cc0\n\t0x12cc0: 0xe00062e0, 0x12cc2: 0xe0004190,\n\t0x12cc6: 0xe00084b3,\n\t0x12cc8: 0xe00041d2, 0x12cc9: 0xe0006278, 0x12cca: 0xe0006bec,\n\t0x12ccc: 0xe0009f99, 0x12ccd: 0xe000912d, 0x12ccf: 0xe00041fc,\n\t0x12cd2: 0xe0009191,\n\t0x12cd6: 0xe0004b21,\n\t0x12cd9: 0xe00049a2,\n\t0x12cdd: 0xe000a793, 0x12cde: 0xe000578f,\n\t0x12ce0: 0xe0008ed1, 0x12ce2: 0xe0008392, 0x12ce3: 0xe00072fd,\n\t0x12ce4: 0xe0006697, 0x12ce5: 0xe0008477, 0x12ce6: 0xe000a21a,\n\t0x12ce9: 0xe000a3ad, 0x12cea: 0xe0004eb2, 0x12ceb: 0xe0009936,\n\t0x12ced: 0xe0006350, 0x12cee: 0xe0009d87,\n\t0x12cf5: 0xe0008c4d, 0x12cf7: 0xe000615c,\n\t0x12cf9: 0xe0006fec,\n\t0x12cfd: 0xe0008bc5, 0x12cfe: 0xe000a2bd,\n\t// Block 0x4b4, offset 0x12d00\n\t0x12d01: 0xe0006e7c, 0x12d03: 0xe0004ca7,\n\t0x12d04: 0xe000a2f5, 0x12d05: 0xe0005847, 0x12d06: 0xe0005d0c, 0x12d07: 0xe00071dd,\n\t0x12d09: 0xe0005c3c,\n\t0x12d13: 0xe0007df5,\n\t0x12d1b: 0xe0009a6a,\n\t0x12d20: 0xe00089b5, 0x12d21: 0xe00072a5, 0x12d22: 0xe0009b24,\n\t0x12d24: 0xe0008857, 0x12d25: 0xe000a45a, 0x12d26: 0xe00050ae,\n\t0x12d28: 0xe000491a, 0x12d2a: 0xe00050b1, 0x12d2b: 0xe0006755,\n\t0x12d2c: 0xe0007df9, 0x12d2e: 0xe0008e21, 0x12d2f: 0xe0004a75,\n\t0x12d30: 0xe0007ae3, 0x12d31: 0xe0008d97, 0x12d32: 0xe00064ce, 0x12d33: 0xe0005db9,\n\t0x12d34: 0xe0004fcb, 0x12d35: 0xe0006984, 0x12d36: 0xe0009ce8,\n\t0x12d38: 0xe0009b28, 0x12d3a: 0xe000657c,\n\t0x12d3f: 0xe000a4e5,\n\t// Block 0x4b5, offset 0x12d40\n\t0x12d40: 0xe0007ff3, 0x12d41: 0xe0006060, 0x12d43: 0xe0009902,\n\t0x12d44: 0xe0006e80, 0x12d45: 0xe0008cc2, 0x12d46: 0xe0007010,\n\t0x12d4b: 0xe00081be,\n\t0x12d4e: 0xe000a1d4,\n\t0x12d55: 0xe000a002, 0x12d57: 0xe000812e,\n\t0x12d59: 0xe000527d, 0x12d5a: 0xe000a45d, 0x12d5b: 0xe0007b8b,\n\t0x12d5c: 0xe0008263, 0x12d5d: 0xe000a6a8, 0x12d5e: 0xe0006db0, 0x12d5f: 0xe000738e,\n\t0x12d60: 0xe0005c3f, 0x12d62: 0xe0007f7a, 0x12d63: 0xe0007186,\n\t0x12d64: 0xe0007ecb, 0x12d65: 0xe0007d12,\n\t0x12d68: 0xe0009131, 0x12d69: 0xe000a3b1, 0x12d6a: 0xe0005de0,\n\t0x12d6d: 0xe0005492, 0x12d6f: 0xe000584b,\n\t0x12d70: 0xe0004b96, 0x12d71: 0xe0008a3d, 0x12d72: 0xe000940f, 0x12d73: 0xe0009281,\n\t0x12d7d: 0xe0008e5d, 0x12d7e: 0xe0004f6f,\n\t// Block 0x4b6, offset 0x12d80\n\t0x12d80: 0xe0009811, 0x12d82: 0xe00050b4, 0x12d83: 0xe0005d0f,\n\t0x12d86: 0xe0004d34, 0x12d87: 0xe0006e84,\n\t0x12d89: 0xe000597c, 0x12d8a: 0xe00061dd, 0x12d8b: 0xe000876e,\n\t0x12d98: 0xe0005d69,\n\t0x12d9c: 0xe000a678, 0x12d9d: 0xe0004b99, 0x12d9e: 0xe00062e4, 0x12d9f: 0xe00046f1,\n\t0x12da1: 0xe0009135, 0x12da3: 0xe00050b7,\n\t0x12da5: 0xe00046f5, 0x12da7: 0xe0006594,\n\t0x12da8: 0xe00092bb, 0x12daa: 0xe0008d2b, 0x12dab: 0xe0005496,\n\t0x12db0: 0xe000a5e0, 0x12db2: 0xe00071e0,\n\t0x12db5: 0xe00079c0,\n\t0x12db9: 0xe00072a9,\n\t0x12dbd: 0xe0006d43, 0x12dbf: 0xe0006e88,\n\t// Block 0x4b7, offset 0x12dc0\n\t0x12dc6: 0xe00091c5,\n\t0x12dca: 0xe00046f9,\n\t0x12dcf: 0xe0005b3a,\n\t0x12dd4: 0xe0007b8f,\n\t0x12dd8: 0xe0004a79, 0x12dda: 0xe00092bf, 0x12ddb: 0xe000a600,\n\t0x12ddc: 0xe00049f3,\n\t0x12de0: 0xe000a460, 0x12de2: 0xe0009f00, 0x12de3: 0xe0009d34,\n\t0x12de6: 0xe0007da9,\n\t0x12de9: 0xe0009560,\n\t0x12dee: 0xe0007d66,\n\t0x12df2: 0xe0009c5e,\n\t0x12df7: 0xe00085fc,\n\t// Block 0x4b8, offset 0x12e00\n\t0x12e01: 0xe0006640, 0x12e03: 0xe000987a,\n\t0x12e04: 0xe00045f1,\n\t0x12e0c: 0xe0004d37, 0x12e0d: 0xe0005f84, 0x12e0e: 0xe0008a41,\n\t0x12e11: 0xe0009031, 0x12e13: 0xe00065b0,\n\t0x12e15: 0xe0007d6a,\n\t0x12e18: 0xe0004320, 0x12e1a: 0xe0007571, 0x12e1b: 0xe00095f0,\n\t0x12e1e: 0xe0006d2c, 0x12e1f: 0xe0006d6c,\n\t0x12e23: 0xe0006bf0,\n\t0x12e25: 0xe0006d70, 0x12e26: 0xe0007072,\n\t0x12e28: 0xe0007f7e, 0x12e2b: 0xe000669a,\n\t0x12e2c: 0xe0007f82,\n\t0x12e30: 0xe00089b9, 0x12e31: 0xe0008266, 0x12e32: 0xe0004388, 0x12e33: 0xe00074e5,\n\t0x12e37: 0xe00051f4,\n\t0x12e38: 0xe00089bd, 0x12e3a: 0xe0008bc9,\n\t0x12e3f: 0xe0005f88,\n\t// Block 0x4b9, offset 0x12e40\n\t0x12e47: 0xe0004f0b,\n\t0x12e4a: 0xe0004771, 0x12e4b: 0xe0008a45,\n\t0x12e4c: 0xe00047bd, 0x12e4e: 0xe0004619, 0x12e4f: 0xe0007e80,\n\t0x12e51: 0xe00089c1, 0x12e53: 0xe000543e,\n\t0x12e54: 0xe0006354,\n\t0x12e59: 0xe0005c42, 0x12e5a: 0xe00068d0, 0x12e5b: 0xe0009139,\n\t0x12e5c: 0xe00098ba, 0x12e5d: 0xe000615f,\n\t0x12e60: 0xe0008a49, 0x12e62: 0xe0009f9d,\n\t0x12e64: 0xe00099fc, 0x12e65: 0xe0005889, 0x12e66: 0xe000a85a, 0x12e67: 0xe000588d,\n\t0x12e6a: 0xe0006508, 0x12e6b: 0xe000a583,\n\t0x12e6f: 0xe0008f81,\n\t0x12e70: 0xe000847a,\n\t0x12e75: 0xe000a55c, 0x12e76: 0xe000546a,\n\t0x12e78: 0xe00050ba, 0x12e7a: 0xe00043c4,\n\t0x12e7f: 0xe00050bd,\n\t// Block 0x4ba, offset 0x12e80\n\t0x12e86: 0xe00043c8, 0x12e87: 0xe0008ed4,\n\t0x12e88: 0xe00065b4, 0x12e8a: 0xe000963c, 0x12e8b: 0xe0009fa1,\n\t0x12e8e: 0xe0007078, 0x12e8f: 0xe0007075,\n\t0x12e91: 0xe000841d,\n\t0x12e94: 0xe0008c51,\n\t0x12e99: 0xe000a8df, 0x12e9a: 0xe0004d3a,\n\t0x12e9d: 0xe0006bf4,\n\t0x12ea3: 0xe0008041,\n\t0x12ea5: 0xe0004461,\n\t0x12ea9: 0xe000994c, 0x12eab: 0xe00079eb,\n\t0x12eb1: 0xe0009e8c, 0x12eb2: 0xe0009f6a, 0x12eb3: 0xe0004324,\n\t0x12eb4: 0xe00075ed, 0x12eb5: 0xe00085ff,\n\t0x12eb8: 0xe00053aa, 0x12eb9: 0xe000913d,\n\t0x12ebc: 0xe000565d, 0x12ebd: 0xe0008889, 0x12ebe: 0xe00091c9,\n\t// Block 0x4bb, offset 0x12ec0\n\t0x12ec0: 0xe0004d3d, 0x12ec2: 0xe0004193, 0x12ec3: 0xe000a2f9,\n\t0x12ec5: 0xe0006644, 0x12ec7: 0xe0009035,\n\t0x12eca: 0xe0008a4d,\n\t0x12ecd: 0xe000847d, 0x12ece: 0xe000a1d7,\n\t0x12ed2: 0xe0007891, 0x12ed3: 0xe00099ff,\n\t0x12ed4: 0xe00099c6, 0x12ed5: 0xe000a8ab,\n\t0x12ed8: 0xe00056c1, 0x12ed9: 0xe00046fd, 0x12edb: 0xe0009c6a,\n\t0x12ede: 0xe00069f9,\n\t0x12ee2: 0xe0005d12, 0x12ee3: 0xe00090c7,\n\t0x12ee4: 0xe0008e83, 0x12ee7: 0xe0006b9f,\n\t0x12ef0: 0xe00053ea, 0x12ef2: 0xe0005de3, 0x12ef3: 0xe0005dc5,\n\t0x12ef4: 0xe00099c9,\n\t0x12ef9: 0xe00069fc, 0x12efa: 0xe0006987,\n\t0x12efc: 0xe0004838, 0x12eff: 0xe00081f1,\n\t// Block 0x4bc, offset 0x12f00\n\t0x12f00: 0xe00078f1, 0x12f01: 0xe000994f,\n\t0x12f07: 0xe0008e61,\n\t0x12f08: 0xe00047e7, 0x12f09: 0xe00082b4, 0x12f0b: 0xe0009f5c,\n\t0x12f0d: 0xe0007895,\n\t0x12f10: 0xe00082b7,\n\t0x12f15: 0xe000a026,\n\t0x12f19: 0xe000707b,\n\t0x12f1f: 0xe0007d16,\n\t0x12f20: 0xe00094c4, 0x12f21: 0xe00093cf, 0x12f22: 0xe0006358,\n\t0x12f24: 0xe0005c45, 0x12f26: 0xe00071e3, 0x12f27: 0xe000a047,\n\t0x12f2f: 0xe0008de9,\n\t0x12f30: 0xe0005775, 0x12f33: 0xe000987d,\n\t0x12f34: 0xe00087d2,\n\t0x12f3b: 0xe0005bfd,\n\t// Block 0x4bd, offset 0x12f40\n\t0x12f42: 0xe0005bad, 0x12f43: 0xe0005ca4,\n\t0x12f46: 0xe0005acd,\n\t0x12f48: 0xe0009e5f, 0x12f49: 0xe000538a,\n\t0x12f4c: 0xe00076df, 0x12f4e: 0xe000425c,\n\t0x12f52: 0xe0008269,\n\t0x12f55: 0xe0007d8e, 0x12f56: 0xe0006598,\n\t0x12f58: 0xe000591f,\n\t0x12f5c: 0xe0008a51,\n\t0x12f61: 0xe00099cc, 0x12f62: 0xe00078c9,\n\t0x12f64: 0xe0008ab9, 0x12f65: 0xe000923d, 0x12f67: 0xe000595c,\n\t0x12f68: 0xe0004a49, 0x12f69: 0xe000575a,\n\t0x12f6c: 0xe0006e8c, 0x12f6d: 0xe0007bc7, 0x12f6e: 0xe0008396, 0x12f6f: 0xe0004d40,\n\t0x12f70: 0xe0007d6e, 0x12f71: 0xe0009b8c, 0x12f72: 0xe00089c5,\n\t0x12f78: 0xe00047c0, 0x12f7b: 0xe000571c,\n\t0x12f7c: 0xe00063bc, 0x12f7d: 0xe00064e8, 0x12f7e: 0xe00064ec,\n\t// Block 0x4be, offset 0x12f80\n\t0x12f80: 0xe0005023, 0x12f81: 0xe0008d9a, 0x12f83: 0xe000608d,\n\t0x12f84: 0xe0008909, 0x12f86: 0xe0004464, 0x12f87: 0xe000a67c,\n\t0x12f8b: 0xe0004895,\n\t0x12f8e: 0xe0004bea,\n\t0x12f90: 0xe000483b, 0x12f93: 0xe000a463,\n\t0x12f96: 0xe000a604,\n\t0x12f9a: 0xe0007799, 0x12f9b: 0xe000a769,\n\t0x12f9c: 0xe000a4b4, 0x12f9e: 0xe000a4b7,\n\t0x12fa4: 0xe0009d0f,\n\t0x12fac: 0xe000a04b, 0x12fae: 0xe0009f6d,\n\t0x12fb4: 0xe0008fb1, 0x12fb6: 0xe0006ba2,\n\t0x12fb8: 0xe0004dc7, 0x12fba: 0xe0009832,\n\t0x12fbf: 0xe000600c,\n\t// Block 0x4bf, offset 0x12fc0\n\t0x12fc2: 0xe0007ff6, 0x12fc3: 0xe00064a7,\n\t0x12fc6: 0xe000688c,\n\t0x12fc8: 0xe0007b93, 0x12fca: 0xe00084c6,\n\t0x12fcc: 0xe0007e3d, 0x12fcd: 0xe000a137, 0x12fce: 0xe000774f,\n\t0x12fd2: 0xe000a10f,\n\t0x12fd4: 0xe000a700, 0x12fd6: 0xe0004467,\n\t0x12fd9: 0xe00066af, 0x12fdb: 0xe0006ff0,\n\t0x12fdc: 0xe0005554, 0x12fde: 0xe00086d2, 0x12fdf: 0xe0005f78,\n\t0x12fe1: 0xe0009141, 0x12fe3: 0xe0004328,\n\t0x12fe4: 0xe000635c, 0x12fe5: 0xe0004aa5, 0x12fe7: 0xe0005aa6,\n\t0x12fea: 0xe0009be8,\n\t0x12fec: 0xe0004898, 0x12fee: 0xe00060b4,\n\t0x12ff1: 0xe0008044, 0x12ff2: 0xe0005f74,\n\t0x12ff4: 0xe00090e5,\n\t0x12ff8: 0xe0006cf4, 0x12ff9: 0xe0007345, 0x12ffb: 0xe000a40f,\n\t0x12ffc: 0xe0006360, 0x12ffe: 0xe0007301,\n\t// Block 0x4c0, offset 0x13000\n\t0x13001: 0xe0006ff4,\n\t0x13004: 0xe0005fb4, 0x13007: 0xe000612f,\n\t0x13008: 0xe0009ba4, 0x13009: 0xe000620e, 0x1300a: 0xe0006090, 0x1300b: 0xe0004260,\n\t0x1300c: 0xe000a2fd,\n\t0x1301a: 0xe0006d78, 0x1301b: 0xe0005f39,\n\t0x1301e: 0xe0009145,\n\t0x13020: 0xe0005fb8,\n\t0x13025: 0xe0008635, 0x13026: 0xe0008638,\n\t0x13028: 0xe0008712, 0x13029: 0xe000a2c1,\n\t0x13034: 0xe0007349, 0x13037: 0xe0004e2b,\n\t0x13038: 0xe0006063, 0x1303a: 0xe0008d2e, 0x1303b: 0xe00078cd,\n\t0x1303c: 0xe0007677, 0x1303e: 0xe0008ff1,\n\t// Block 0x4c1, offset 0x13040\n\t0x13040: 0xe000928f,\n\t0x13046: 0xe000a608, 0x13047: 0xe0008cc5,\n\t0x1304d: 0xe000a2c5,\n\t0x13052: 0xe0006f90,\n\t0x1305a: 0xe000779c, 0x1305b: 0xe0008bcd,\n\t0x1305f: 0xe000725e,\n\t0x13060: 0xe0004e3b, 0x13061: 0xe00071e6, 0x13062: 0xe0007261, 0x13063: 0xe00055d1,\n\t0x13065: 0xe00069ff, 0x13066: 0xe00060b8,\n\t0x13068: 0xe0007c31, 0x1306b: 0xe0009640,\n\t0x13077: 0xe0004544,\n\t0x13079: 0xe0005557,\n\t0x1307d: 0xe0004ee8, 0x1307e: 0xe000483e, 0x1307f: 0xe0007bfb,\n\t// Block 0x4c2, offset 0x13080\n\t0x1308b: 0xe0009149,\n\t0x1308d: 0xe0007264, 0x1308e: 0xe000a0bf,\n\t0x13091: 0xe0006010,\n\t0x13096: 0xe0007c34,\n\t0x13099: 0xe0005e1f,\n\t0x1309e: 0xe0005e57,\n\t0x130a0: 0xe000549a, 0x130a2: 0xe00060f4,\n\t0x130a5: 0xe0006604,\n\t0x130aa: 0xe0009241,\n\t0x130ac: 0xe0007305, 0x130ad: 0xe0005bb0,\n\t0x130b0: 0xe000432c, 0x130b3: 0xe0005661,\n\t0x130b9: 0xe000779f, 0x130bb: 0xe00095f4,\n\t0x130bc: 0xe0004580, 0x130bd: 0xe000489b, 0x130bf: 0xe0004caa,\n\t// Block 0x4c3, offset 0x130c0\n\t0x130c7: 0xe00060f8,\n\t0x130c9: 0xe0006a87,\n\t0x130cd: 0xe000a5a0,\n\t0x130d7: 0xe0009784,\n\t0x130d9: 0xe0004370, 0x130da: 0xe0009798, 0x130db: 0xe0006066,\n\t0x130dc: 0xe000503b, 0x130de: 0xe000833e,\n\t0x130e1: 0xe000a5a4, 0x130e2: 0xe0007421, 0x130e3: 0xe0008420,\n\t0x130e5: 0xe000908b, 0x130e7: 0xe000752d,\n\t0x130e9: 0xe0004cad,\n\t0x130ed: 0xe000535a, 0x130ee: 0xe0007e6e, 0x130ef: 0xe0004bed,\n\t0x130f0: 0xe000904d, 0x130f3: 0xe0006e20,\n\t0x130fa: 0xe0009b44, 0x130fb: 0xe000496e,\n\t0x130fc: 0xe000441c, 0x130fd: 0xe0006e38,\n\t// Block 0x4c4, offset 0x13100\n\t0x13102: 0xe0006b3f,\n\t0x1310c: 0xe00096bb, 0x1310f: 0xe00068d4,\n\t0x13111: 0xe00075f0, 0x13112: 0xe000698a,\n\t0x13122: 0xe0005778,\n\t0x13125: 0xe000908e, 0x13126: 0xe0009445, 0x13127: 0xe0009a6e,\n\t0x1312c: 0xe0005dc9, 0x1312d: 0xe0009e04,\n\t0x13130: 0xe0009da0, 0x13132: 0xe0009e8f,\n\t0x13134: 0xe0009ceb,\n\t// Block 0x4c5, offset 0x13140\n\t0x13143: 0xe0008f19,\n\t0x13145: 0xe0004eb5,\n\t0x1314f: 0xe0007a5f,\n\t0x1315c: 0xe00044a2, 0x1315d: 0xe00096f4,\n\t0x13160: 0xe000585b,\n\t0x13167: 0xe0007fb6,\n\t0x13168: 0xe0009284, 0x1316b: 0xe0005c48,\n\t0x1316c: 0xe0004701, 0x1316e: 0xe000a04f, 0x1316f: 0xe0007a63,\n\t0x1317c: 0xe0006930,\n\t// Block 0x4c6, offset 0x13180\n\t0x13181: 0xe00050c0,\n\t0x13187: 0xe0008bd1,\n\t0x1318c: 0xe0005aee, 0x1318d: 0xe000776c, 0x1318e: 0xe000717a, 0x1318f: 0xe00086be,\n\t0x13191: 0xe000698d, 0x13193: 0xe00054fa,\n\t0x13197: 0xe0007dfd,\n\t0x1319f: 0xe0006f58,\n\t0x131a3: 0xe00042c4,\n\t0x131a4: 0xe0007bcb, 0x131a7: 0xe000659c,\n\t0x131a8: 0xe0007e92, 0x131a9: 0xe0006e24,\n\t0x131ad: 0xe0009bec,\n\t0x131ba: 0xe000a594, 0x131bb: 0xe000a598,\n\t0x131bc: 0xe0005de6, 0x131be: 0xe0005245,\n\t// Block 0x4c7, offset 0x131c0\n\t0x131c1: 0xe0008602,\n\t0x131c5: 0xe0006424,\n\t0x131c8: 0xe0007e95, 0x131ca: 0xe0005b6b, 0x131cb: 0xe0009260,\n\t0x131ce: 0xe00047c3, 0x131cf: 0xe00059f4,\n\t0x131d0: 0xe0006364, 0x131d1: 0xe00077a2,\n\t0x131d4: 0xe0009475, 0x131d5: 0xe0004488,\n\t0x131da: 0xe0008a55,\n\t0x131e0: 0xe00052c6,\n\t0x131e7: 0xe000894d,\n\t0x131e8: 0xe0005de9, 0x131ea: 0xe0009814,\n\t0x131ec: 0xe0004705, 0x131ef: 0xe00050c3,\n\t0x131f4: 0xe0005740, 0x131f5: 0xe0004264, 0x131f7: 0xe0005d8d,\n\t0x131fa: 0xe0004b45, 0x131fb: 0xe0006368,\n\t0x131fc: 0xe0008716, 0x131fd: 0xe0004c32,\n\t// Block 0x4c8, offset 0x13200\n\t0x13201: 0xe00096f7,\n\t0x1320c: 0xe0005b7d, 0x1320e: 0xe00096fa, 0x1320f: 0xe0005027,\n\t0x13211: 0xe000549e, 0x13212: 0xe0008450,\n\t0x13216: 0xe00079c3,\n\t0x13219: 0xe00077a5,\n\t0x13227: 0xe0005b80,\n\t0x1322a: 0xe00058fb, 0x1322b: 0xe0005944,\n\t0x1322c: 0xe000636c, 0x1322d: 0xe000a5a8,\n\t0x13231: 0xe0005b52,\n\t0x1323a: 0xe0007424,\n\t0x1323e: 0xe0006b42,\n\t// Block 0x4c9, offset 0x13240\n\t0x13240: 0xe0006b45, 0x13241: 0xe00050c6,\n\t0x13245: 0xe0007f10, 0x13246: 0xe0009564, 0x13247: 0xe00050c9,\n\t0x13248: 0xe00050cc, 0x13249: 0xe0009091, 0x1324a: 0xe0009da4,\n\t0x13250: 0xe0007ff9, 0x13253: 0xe0006908,\n\t0x13254: 0xe0006825, 0x13255: 0xe0006a02, 0x13256: 0xe0008d31, 0x13257: 0xe0009094,\n\t0x1325a: 0xe0008d34, 0x1325b: 0xe00044d0,\n\t0x1325c: 0xe000a466, 0x1325d: 0xe00098be, 0x1325e: 0xe00074e9, 0x1325f: 0xe0007267,\n\t0x13260: 0xe0006b48, 0x13262: 0xe0005308,\n\t0x13265: 0xe0006cf8, 0x13267: 0xe0008d9d,\n\t0x13268: 0xe0009f03,\n\t0x1326d: 0xe0008c8f,\n\t0x1327a: 0xe00050cf,\n\t0x1327c: 0xe0004aa9, 0x1327f: 0xe0005af2,\n\t// Block 0x4ca, offset 0x13280\n\t0x13280: 0xe0009f44, 0x13281: 0xe0004fcf,\n\t0x1328a: 0xe00047ea, 0x1328b: 0xe0008546,\n\t0x1328d: 0xe000a55f, 0x1328e: 0xe0008bd5, 0x1328f: 0xe00066dd,\n\t0x13291: 0xe0007ffc,\n\t0x13294: 0xe0008cc8,\n\t0x1329d: 0xe00090f9,\n\t0x132a6: 0xe00078f4, 0x132a7: 0xe000a952,\n\t0x132a8: 0xe000513e, 0x132aa: 0xe0006e90, 0x132ab: 0xe0005422,\n\t0x132ae: 0xe0005a82,\n\t0x132b0: 0xe000530b, 0x132b1: 0xe000555a, 0x132b3: 0xe0007899,\n\t0x132b4: 0xe0007841,\n\t0x132b9: 0xe0007fff, 0x132ba: 0xe0007d92, 0x132bb: 0xe0005d45,\n\t0x132bd: 0xe0004fd3, 0x132be: 0xe000a562, 0x132bf: 0xe00055d5,\n\t// Block 0x4cb, offset 0x132c0\n\t0x132c0: 0xe00071e9, 0x132c1: 0xe0006b4b,\n\t0x132c6: 0xe000429c,\n\t0x132c9: 0xe0006648, 0x132ca: 0xe0005241, 0x132cb: 0xe0009835,\n\t0x132d1: 0xe00049f6, 0x132d2: 0xe00096fd,\n\t0x132d5: 0xe0006990,\n\t0x132d8: 0xe0006993,\n\t0x132df: 0xe0008d37,\n\t0x132e2: 0xe0005a64, 0x132e3: 0xe0005eb7,\n\t0x132e4: 0xe0009a9a, 0x132e6: 0xe000914d, 0x132e7: 0xe000773b,\n\t0x132e9: 0xe00091cd, 0x132ea: 0xe00090ca, 0x132eb: 0xe0009912,\n\t0x132ec: 0xe00044e8,\n\t0x132f8: 0xe00042e4, 0x132fb: 0xe0008480,\n\t// Block 0x4cc, offset 0x13300\n\t0x13300: 0xe000a955, 0x13301: 0xe000489e, 0x13302: 0xe000585f,\n\t0x13305: 0xe0007024,\n\t0x13308: 0xe0004268, 0x1330a: 0xe0008ccb, 0x1330b: 0xe0008bd9,\n\t0x1330c: 0xe00055a5, 0x1330d: 0xe0009700,\n\t0x13314: 0xe0008596, 0x13317: 0xe0009d78,\n\t0x13319: 0xe00090e9, 0x1331a: 0xe00099cf,\n\t0x1331c: 0xe0005cd0, 0x1331e: 0xe0004a20, 0x1331f: 0xe0009f40,\n\t0x13320: 0xe0008d3a,\n\t0x13327: 0xe0006f5c,\n\t0x1332e: 0xe0008e25,\n\t0x13331: 0xe0009a9e,\n\t0x13336: 0xe000807a, 0x13337: 0xe00090ed,\n\t0x13339: 0xe0009195, 0x1333b: 0xe000555d,\n\t0x1333c: 0xe0004196, 0x1333d: 0xe00047c6, 0x1333f: 0xe0004841,\n\t// Block 0x4cd, offset 0x13340\n\t0x13340: 0xe00048de,\n\t0x13345: 0xe0004420, 0x13346: 0xe00060bc,\n\t0x13349: 0xe00099d2,\n\t0x1334d: 0xe000890d, 0x1334e: 0xe0007b97,\n\t0x13357: 0xe00071ec,\n\t0x13360: 0xe00052a9, 0x13361: 0xe0006d50, 0x13362: 0xe0007bfe,\n\t0x13369: 0xe0007d1a, 0x1336b: 0xe000a59c,\n\t0x13370: 0xe000789d,\n\t0x13374: 0xe000a31d, 0x13375: 0xe00076b7, 0x13376: 0xe0004cb0,\n\t0x13379: 0xe0004df3, 0x1337a: 0xe00049a6,\n\t0x1337d: 0xe0008bdd, 0x1337e: 0xe0007f13, 0x1337f: 0xe0009520,\n\t// Block 0x4ce, offset 0x13380\n\t0x13380: 0xe0005700, 0x13381: 0xe0005625, 0x13382: 0xe0005ad0, 0x13383: 0xe0008ad1,\n\t0x13384: 0xe0009293, 0x13385: 0xe0007f16, 0x13386: 0xe0009e08,\n\t0x13388: 0xe0007ece, 0x1338a: 0xe0007dd0,\n\t0x13392: 0xe00091d1, 0x13393: 0xe00093d3,\n\t0x13395: 0xe0008d3d, 0x13396: 0xe0004c35, 0x13397: 0xe0009413,\n\t0x13398: 0xe0004dab, 0x1339b: 0xe0004d43,\n\t0x1339f: 0xe0004dd7,\n\t0x133a0: 0xe0004a23, 0x133a3: 0xe0007140,\n\t0x133a9: 0xe0007dac, 0x133aa: 0xe0007daf,\n\t0x133ac: 0xe00082ba, 0x133ae: 0xe0004df7, 0x133af: 0xe0007ed1,\n\t0x133b3: 0xe00082bd,\n\t0x133b6: 0xe0004d46,\n\t0x133b9: 0xe0007cd3, 0x133ba: 0xe0004eb8, 0x133bb: 0xe0009417,\n\t0x133be: 0xe0004aad, 0x133bf: 0xe0005ca8,\n\t// Block 0x4cf, offset 0x133c0\n\t0x133c4: 0xe00092c3, 0x133c5: 0xe0004ebb, 0x133c7: 0xe00056c4,\n\t0x133c8: 0xe0008da0, 0x133ca: 0xe0008abd, 0x133cb: 0xe0005dcd,\n\t0x133d7: 0xe0006123,\n\t0x133d9: 0xe0009343,\n\t0x133dd: 0xe000664c, 0x133df: 0xe0004709,\n\t0x133e0: 0xe0008772, 0x133e2: 0xe0006ba5, 0x133e3: 0xe0008f85,\n\t0x133e5: 0xe0005665, 0x133e6: 0xe000716c,\n\t0x133ea: 0xe00071ef,\n\t0x133ed: 0xe00042c8, 0x133ef: 0xe000535e,\n\t0x133f6: 0xe000470d,\n\t0x133f8: 0xe0004775, 0x133f9: 0xe0008f49, 0x133fa: 0xe00098c2,\n\t0x133fd: 0xe0008047, 0x133ff: 0xe000426c,\n\t// Block 0x4d0, offset 0x13400\n\t0x13406: 0xe0009d12,\n\t0x13408: 0xe000502b, 0x1340a: 0xe0008da3,\n\t0x1340c: 0xe00075f3, 0x1340f: 0xe000a509,\n\t0x13411: 0xe000707e, 0x13412: 0xe0004ff7,\n\t0x13418: 0xe0008b05, 0x13419: 0xe0006d74, 0x1341b: 0xe0008911,\n\t0x1341e: 0xe0009c0c,\n\t0x13420: 0xe0005dd1,\n\t0x13425: 0xe0006ba8, 0x13426: 0xe00067c8, 0x13427: 0xe0009479,\n\t0x13428: 0xe00068d8,\n\t0x1342c: 0xe0008c92, 0x1342d: 0xe0005a20, 0x1342f: 0xe000528f,\n\t0x13433: 0xe00041d5,\n\t0x13435: 0xe000656c,\n\t0x13439: 0xe0007027,\n\t// Block 0x4d1, offset 0x13440\n\t0x13445: 0xe0006ef0, 0x13446: 0xe0009fa5,\n\t0x13448: 0xe0004aed, 0x13449: 0xe0005720, 0x1344b: 0xe0004f73,\n\t0x1344c: 0xe00089c9, 0x1344d: 0xe0007309, 0x1344f: 0xe0006534,\n\t0x13450: 0xe0004b25, 0x13451: 0xe00098c6, 0x13452: 0xe0009c6e, 0x13453: 0xe00047ed,\n\t0x13454: 0xe0005442, 0x13456: 0xe0009465,\n\t0x1345f: 0xe0006828,\n\t0x13460: 0xe0004f0f,\n\t0x13465: 0xe00044eb, 0x13466: 0xe0004ab1, 0x13467: 0xe000461d,\n\t0x13469: 0xe0009c82,\n\t0x1346c: 0xe0006ff8, 0x1346e: 0xe0006db3,\n\t0x13471: 0xe00070c9, 0x13473: 0xe0008c55,\n\t0x13475: 0xe0007a67,\n\t0x1347d: 0xe0007ca0,\n\t// Block 0x4d2, offset 0x13480\n\t0x13487: 0xe000446a,\n\t0x1348b: 0xe00089cd,\n\t0x1348d: 0xe00048a1, 0x1348e: 0xe000a4ba, 0x1348f: 0xe0008843,\n\t0x13492: 0xe0009883,\n\t0x13494: 0xe00062e8, 0x13495: 0xe00050d2, 0x13497: 0xe0006bf8,\n\t0x13499: 0xe0006715, 0x1349a: 0xe0009263,\n\t0x1349c: 0xe00049ca, 0x1349d: 0xe0004661,\n\t0x134a0: 0xe0009886, 0x134a1: 0xe0004a7d,\n\t0x134ad: 0xe00089d1,\n\t0x134b1: 0xe0006cfc,\n\t0x134b4: 0xe00086ee,\n\t0x134b8: 0xe000888c,\n\t0x134be: 0xe00070cc,\n\t// Block 0x4d3, offset 0x134c0\n\t0x134c0: 0xe0008ac1, 0x134c1: 0xe000a680,\n\t0x134c4: 0xe0006564, 0x134c6: 0xe00089d5, 0x134c7: 0xe0009dc4,\n\t0x134c9: 0xe00098ca, 0x134ca: 0xe000a541, 0x134cb: 0xe000a37d,\n\t0x134cc: 0xe000a7ab,\n\t0x134d2: 0xe0007499,\n\t0x134d4: 0xe00080c2,\n\t0x134d9: 0xe00048a4, 0x134db: 0xe0007845,\n\t0x134dd: 0xe0004d49,\n\t0x134e0: 0xe0007081,\n\t0x134e4: 0xe00055d9, 0x134e6: 0xe0006a05,\n\t0x134e9: 0xe0006b4e, 0x134ea: 0xe00090cd,\n\t0x134f3: 0xe0009fbd,\n\t0x134f7: 0xe0006779,\n\t0x134fe: 0xe0005fe8,\n\t// Block 0x4d4, offset 0x13500\n\t0x13500: 0xe000947d,\n\t0x13507: 0xe0008ddd,\n\t0x13509: 0xe0009889, 0x1350b: 0xe0004e85,\n\t0x1350f: 0xe0005b1a,\n\t0x13512: 0xe00092c7,\n\t0x1351e: 0xe0005362, 0x1351f: 0xe0008b09,\n\t0x13520: 0xe00066b2, 0x13521: 0xe0004270,\n\t0x13527: 0xe000a684,\n\t0x1352a: 0xe00086f2, 0x1352b: 0xe0007084,\n\t0x13537: 0xe0009620,\n\t0x13538: 0xe0009d15,\n\t0x1353d: 0xe00095f8, 0x1353e: 0xe00059e8, 0x1353f: 0xe00067cb,\n\t// Block 0x4d5, offset 0x13540\n\t0x13543: 0xe000580b,\n\t0x1354c: 0xe0008ed7, 0x1354d: 0xe0008915,\n\t0x13550: 0xe0005744, 0x13552: 0xe0008f1c,\n\t0x13554: 0xe000726a,\n\t0x1355b: 0xe0008a59,\n\t0x1355c: 0xe0009b48, 0x1355f: 0xe0005b83,\n\t0x13560: 0xe0005b3e,\n\t0x13564: 0xe00095fc, 0x13565: 0xe0007849, 0x13567: 0xe00044ee,\n\t0x13569: 0xe00065e4,\n\t0x1356c: 0xe0005d15,\n\t0x13572: 0xe00082c0, 0x13573: 0xe0006211,\n\t0x1357e: 0xe000854a,\n\t// Block 0x4d6, offset 0x13580\n\t0x13581: 0xe0009568, 0x13583: 0xe0006996,\n\t0x13589: 0xe0006890,\n\t0x1358d: 0xe0006093,\n\t0x13592: 0xe0005dd5,\n\t0x13595: 0xe00062ec, 0x13597: 0xe0008d40,\n\t0x13598: 0xe0008ae9,\n\t0x1359f: 0xe0007100,\n\t0x135a2: 0xe000863b,\n\t0x135a4: 0xe0008196, 0x135a5: 0xe0008f4d, 0x135a6: 0xe0005d91, 0x135a7: 0xe0008776,\n\t0x135a8: 0xe00064f4,\n\t0x135ae: 0xe00058a9,\n\t0x135b1: 0xe00058ad, 0x135b2: 0xe00092cf, 0x135b3: 0xe000449a,\n\t0x135b9: 0xe00071f2,\n\t0x135bc: 0xe0005d95, 0x135bd: 0xe0008e65, 0x135be: 0xe0008be1,\n\t// Block 0x4d7, offset 0x135c0\n\t0x135c5: 0xe00082c3, 0x135c6: 0xe0005fd4,\n\t0x135ca: 0xe000a469,\n\t0x135d5: 0xe00048a7, 0x135d6: 0xe000546e, 0x135d7: 0xe0004d4c,\n\t0x135d9: 0xe0008da6, 0x135da: 0xe00087d6,\n\t0x135dc: 0xe0006241, 0x135dd: 0xe0006c68, 0x135de: 0xe0006894, 0x135df: 0xe0008d43,\n\t0x135e0: 0xe00043cc, 0x135e2: 0xe0006096,\n\t0x135e5: 0xe00051b6, 0x135e7: 0xe00058b1,\n\t0x135ef: 0xe00051b9,\n\t0x135f2: 0xe0005922,\n\t0x135f4: 0xe0008951, 0x135f6: 0xe0008da9,\n\t0x135f8: 0xe0005f9c, 0x135fa: 0xe0004eeb, 0x135fb: 0xe00047c9,\n\t0x135fe: 0xe0004ebe,\n\t// Block 0x4d8, offset 0x13600\n\t0x13600: 0xe00050d5, 0x13602: 0xe0008eda, 0x13603: 0xe000734d,\n\t0x13604: 0xe0007825, 0x13605: 0xe000a529, 0x13606: 0xe0008002, 0x13607: 0xe000a8cf,\n\t0x13608: 0xe000a5e4, 0x1360a: 0xe00061ad, 0x1360b: 0xe00061b1,\n\t0x1360d: 0xe0005200,\n\t0x13610: 0xe00052e8, 0x13613: 0xe0006dec,\n\t0x13614: 0xe000730d, 0x13615: 0xe0006a08, 0x13617: 0xe0006b51,\n\t0x13618: 0xe0004baa, 0x13619: 0xe0009097, 0x1361a: 0xe0005013, 0x1361b: 0xe0006898,\n\t0x1361c: 0xe00080c6,\n\t0x13620: 0xe0007087, 0x13621: 0xe0006428, 0x13622: 0xe0006d54,\n\t0x1362b: 0xe0008605,\n\t0x1362c: 0xe0008edd, 0x1362e: 0xe000931b, 0x1362f: 0xe0005c00,\n\t0x13630: 0xe000702a, 0x13631: 0xe000690c, 0x13632: 0xe0006f60, 0x13633: 0xe00074ed,\n\t0x13635: 0xe000888f,\n\t0x13639: 0xe000708a, 0x1363a: 0xe0004330,\n\t// Block 0x4d9, offset 0x13640\n\t0x13642: 0xe0008e29, 0x13643: 0xe000a2c9,\n\t0x13644: 0xe0008d46, 0x13645: 0xe0004711, 0x13646: 0xe0006370,\n\t0x13649: 0xe0007371,\n\t0x1364d: 0xe00085a2,\n\t0x13650: 0xe0004641,\n\t0x13656: 0xe0004b49,\n\t0x13659: 0xe000a60c, 0x1365b: 0xe0008daf,\n\t0x1365c: 0xe000a329, 0x1365e: 0xe0004bf0,\n\t0x13661: 0xe0005793, 0x13662: 0xe000a2cd, 0x13663: 0xe0006664,\n\t0x13666: 0xe0005017,\n\t0x13668: 0xe000834a, 0x13669: 0xe0008dac, 0x1366a: 0xe0008512,\n\t0x1366e: 0xe0006db6,\n\t0x13670: 0xe00091ed, 0x13671: 0xe0009c72, 0x13672: 0xe0006b54, 0x13673: 0xe00043d0,\n\t0x13676: 0xe0008ac5,\n\t0x13679: 0xe00045f5, 0x1367a: 0xe0009a02,\n\t0x1367f: 0xe0004cb3,\n\t// Block 0x4da, offset 0x13680\n\t0x13683: 0xe000974b,\n\t0x13686: 0xe0004779,\n\t0x1368e: 0xe0008be5, 0x1368f: 0xe00071f5,\n\t0x13693: 0xe0004715,\n\t0x13698: 0xe000677d,\n\t0x1369c: 0xe0008e2d,\n\t0x136a0: 0xe0005af6, 0x136a2: 0xe0008ee0, 0x136a3: 0xe0004e3f,\n\t0x136a5: 0xe0005141, 0x136a6: 0xe0005144, 0x136a7: 0xe0008fb5,\n\t0x136a9: 0xe0008162, 0x136ab: 0xe0006ef4,\n\t0x136ac: 0xe00071f8, 0x136ad: 0xe000826c, 0x136ae: 0xe00047f0,\n\t0x136b0: 0xe0004ab5, 0x136b1: 0xe00043d4, 0x136b2: 0xe0005ecf,\n\t0x136b4: 0xe00095a8, 0x136b5: 0xe0009448,\n\t0x136b8: 0xe0005c80, 0x136ba: 0xe00050d8, 0x136bb: 0xe0009b78,\n\t0x136bd: 0xe000868e, 0x136be: 0xe0005cd4, 0x136bf: 0xe0005fbc,\n\t// Block 0x4db, offset 0x136c0\n\t0x136c4: 0xe0004936, 0x136c7: 0xe00099d5,\n\t0x136ca: 0xe0005177, 0x136cb: 0xe0006999,\n\t0x136cc: 0xe00082c6, 0x136cd: 0xe0006294,\n\t0x136d6: 0xe0006db9, 0x136d7: 0xe0006d30,\n\t0x136d8: 0xe000a0df, 0x136da: 0xe0006e94,\n\t0x136dc: 0xe0005fd8, 0x136dd: 0xe0009211, 0x136de: 0xe0005366,\n\t0x136e0: 0xe00096a0, 0x136e1: 0xe000627c, 0x136e3: 0xe0007a6b,\n\t0x136e6: 0xe000745d,\n\t0x136e8: 0xe0009dc8, 0x136e9: 0xe0007e01,\n\t0x136ec: 0xe0005fc0, 0x136ef: 0xe00081c1,\n\t0x136f4: 0xe0005980, 0x136f6: 0xe0009de8,\n\t0x136f9: 0xe0008cce, 0x136fb: 0xe00099d8,\n\t// Block 0x4dc, offset 0x13700\n\t0x13708: 0xe0007bcf, 0x13709: 0xe0009151, 0x1370a: 0xe00077c4, 0x1370b: 0xe000988c,\n\t0x13710: 0xe000988f, 0x13711: 0xe0004685,\n\t0x13715: 0xe0007d1e, 0x13717: 0xe0009817,\n\t0x13718: 0xe00047f3, 0x1371b: 0xe00062f0,\n\t0x1371d: 0xe0009155, 0x1371e: 0xe000a46c, 0x1371f: 0xe0007f2e,\n\t0x13720: 0xe00048f2, 0x13721: 0xe000881b, 0x13722: 0xe0005748, 0x13723: 0xe000a2d1,\n\t0x1372b: 0xe0006759,\n\t0x1372e: 0xe00098ce, 0x1372f: 0xe0007a6f,\n\t0x13731: 0xe0008e31, 0x13732: 0xe0005c54, 0x13733: 0xe0004621,\n\t0x13735: 0xe0005e7f, 0x13737: 0xe0005c03,\n\t0x13739: 0xe0009f2a, 0x1373b: 0xe0006244,\n\t0x1373d: 0xe00097d4, 0x1373e: 0xe0008919,\n\t// Block 0x4dd, offset 0x13740\n\t0x13741: 0xe000650c, 0x13743: 0xe0006934,\n\t0x13744: 0xe0007c37, 0x13745: 0xe00070cf, 0x13746: 0xe0006162, 0x13747: 0xe0007ed4,\n\t0x13748: 0xe0004424,\n\t0x13750: 0xe0007036, 0x13752: 0xe0009039,\n\t0x13754: 0xe00090f1, 0x13755: 0xe0006e98, 0x13756: 0xe0006c24, 0x13757: 0xe0005d99,\n\t0x13759: 0xe000651c, 0x1375a: 0xe0005bd1,\n\t0x1375e: 0xe0007ed7,\n\t0x13761: 0xe00071fb, 0x13762: 0xe0004e88,\n\t0x13769: 0xe00073da, 0x1376a: 0xe000a6e2, 0x1376b: 0xe00047cc,\n\t0x1376d: 0xe00045f9, 0x1376f: 0xe000a301,\n\t0x13770: 0xe0008d49,\n\t0x13776: 0xe0007923,\n\t0x13779: 0xe00079ef,\n\t0x1377c: 0xe00047cf, 0x1377d: 0xe0006a8b, 0x1377e: 0xe0004625,\n\t// Block 0x4de, offset 0x13780\n\t0x13781: 0xe000a7ee, 0x13782: 0xe00092cb,\n\t0x13787: 0xe0005b86,\n\t0x13788: 0xe000a984, 0x1378a: 0xe0004b4d,\n\t0x1378c: 0xe0007104, 0x1378d: 0xe0005c57, 0x1378f: 0xe00089d9,\n\t0x13793: 0xe0007b9b,\n\t0x13794: 0xe000883c, 0x13796: 0xe0006f70,\n\t0x13798: 0xe00092d3, 0x1379b: 0xe00055dd,\n\t0x1379c: 0xe000580f,\n\t// Block 0x4df, offset 0x137c0\n\t0x137f6: 0xe00067ce, 0x137f7: 0xe0006bab,\n\t0x137f8: 0xe000a16b, 0x137fa: 0xe0004645,\n\t0x137fe: 0xe0006668, 0x137ff: 0xe000a187,\n\t// Block 0x4e0, offset 0x13800\n\t0x13803: 0xe00077f8,\n\t0x13804: 0xe0004781, 0x13805: 0xe000a029, 0x13807: 0xe0008fb9,\n\t0x1380b: 0xe0007d96,\n\t0x1380c: 0xe00077e4, 0x1380d: 0xe0005b89, 0x1380e: 0xe0005426,\n\t0x13810: 0xe0004a81,\n\t0x13814: 0xe0005ed3, 0x13815: 0xe000a07b,\n\t0x13818: 0xe000682b,\n\t0x1381d: 0xe00088cb, 0x1381f: 0xe00048aa,\n\t0x13820: 0xe0006298, 0x13821: 0xe0004428, 0x13823: 0xe0004b6c,\n\t0x13826: 0xe000682e,\n\t0x13828: 0xe000798b, 0x1382a: 0xe0008e8c, 0x1382b: 0xe0004b63,\n\t0x1382e: 0xe00099db,\n\t0x13830: 0xe0006538, 0x13832: 0xe0006dbc,\n\t0x13835: 0xe0005f1e, 0x13837: 0xe0009cee,\n\t0x13838: 0xe0006544, 0x13839: 0xe0005d18,\n\t0x1383c: 0xe0009fc1, 0x1383d: 0xe00047f6, 0x1383e: 0xe0009051,\n\t// Block 0x4e1, offset 0x13840\n\t0x13842: 0xe0004629,\n\t0x13845: 0xe000575d, 0x13846: 0xe0006a0b, 0x13847: 0xe0005147,\n\t0x13848: 0xe00050db, 0x1384a: 0xe00078a1,\n\t0x1384c: 0xe00043d8, 0x1384e: 0xe0006214,\n\t0x13854: 0xe0004844, 0x13856: 0xe00048ad, 0x13857: 0xe000442c,\n\t0x13858: 0xe00087da, 0x1385a: 0xe0005a24,\n\t0x1385d: 0xe00088ce, 0x1385e: 0xe00071fe,\n\t0x13864: 0xe0004daf,\n\t0x13868: 0xe0006e9c, 0x13869: 0xe0008423, 0x1386b: 0xe0004430,\n\t0x1386f: 0xe00042e8,\n\t0x13872: 0xe000a958,\n\t0x13876: 0xe0008a5d,\n\t0x13878: 0xe0005d1b, 0x13879: 0xe000449e,\n\t0x1387d: 0xe0008005,\n\t// Block 0x4e2, offset 0x13880\n\t0x13881: 0xe0007d72,\n\t0x13885: 0xe0007427,\n\t0x1388a: 0xe00084ca,\n\t0x1388c: 0xe00084ce, 0x1388e: 0xe0005a28,\n\t0x13892: 0xe00073a6,\n\t0x13894: 0xe0006d00, 0x13895: 0xe000a907, 0x13896: 0xe000a917,\n\t0x1389b: 0xe00070d2,\n\t0x1389f: 0xe000891d,\n\t0x138a0: 0xe0009967, 0x138a1: 0xe000699c, 0x138a3: 0xe0006c90,\n\t0x138a4: 0xe0007460, 0x138a6: 0xe0008a61,\n\t0x138a9: 0xe0009dcc, 0x138ab: 0xe0007e05,\n\t0x138ac: 0xe000a84e, 0x138ae: 0xe000a1ee,\n\t0x138b0: 0xe000a07f, 0x138b3: 0xe0007c3a,\n\t0x138b9: 0xe0004bf3, 0x138ba: 0xe00048b0, 0x138bb: 0xe0006520,\n\t0x138bc: 0xe00084d2, 0x138be: 0xe000a305,\n\t// Block 0x4e3, offset 0x138c0\n\t0x138c0: 0xe0007eda, 0x138c1: 0xe0005aa9, 0x138c3: 0xe0004847,\n\t0x138c4: 0xe0006099, 0x138c5: 0xe0008608, 0x138c6: 0xe00050de,\n\t0x138c9: 0xe0004cb6,\n\t0x138cc: 0xe0008483,\n\t0x138d0: 0xe0005220, 0x138d1: 0xe000538e, 0x138d2: 0xe0005b8c,\n\t0x138d4: 0xe000863e, 0x138d5: 0xe0004719, 0x138d6: 0xe000974e, 0x138d7: 0xe0006069,\n\t0x138d8: 0xe000809e, 0x138d9: 0xe0009d18,\n\t0x138de: 0xe00041d8,\n\t0x138e1: 0xe0006def,\n\t0x138e6: 0xe000804a,\n\t0x138e8: 0xe00052d2,\n\t0x138ec: 0xe0005c1e, 0x138ed: 0xe00050e1,\n\t0x138f0: 0xe000804d, 0x138f3: 0xe0008486,\n\t0x138f6: 0xe0007818,\n\t0x138fd: 0xe0009ba8, 0x138ff: 0xe000471d,\n\t// Block 0x4e4, offset 0x13900\n\t0x13903: 0xe00053ee,\n\t0x13906: 0xe0005a2c,\n\t0x1390a: 0xe0005bb3,\n\t0x13912: 0xe0004af1,\n\t0x13915: 0xe000a4bd, 0x13916: 0xe0006ffc,\n\t0x13918: 0xe0006abb, 0x1391a: 0xe000996a,\n\t0x1391e: 0xe00061b5,\n\t0x1392f: 0xe0005984,\n\t0x13930: 0xe00097d8, 0x13931: 0xe0007cd6, 0x13932: 0xe0007000, 0x13933: 0xe0007f86,\n\t0x13935: 0xe0007e98, 0x13936: 0xe0006fb8, 0x13937: 0xe00090f5,\n\t0x1393d: 0xe0009670, 0x1393e: 0xe0005b42, 0x1393f: 0xe0008336,\n\t// Block 0x4e5, offset 0x13940\n\t0x13944: 0xe0008489, 0x13945: 0xe00072ad, 0x13946: 0xe0006b57, 0x13947: 0xe0008d4c,\n\t0x13949: 0xe00082fe, 0x1394b: 0xe0005cb0,\n\t0x1394c: 0xe00050e4,\n\t0x13953: 0xe000a6ac,\n\t0x13956: 0xe0009703,\n\t0x13958: 0xe0008f1f, 0x1395a: 0xe00056d9, 0x1395b: 0xe000a16f,\n\t0x1395d: 0xe0004274,\n\t0x13961: 0xe000484a, 0x13962: 0xe000909a,\n\t0x13965: 0xe000699f, 0x13966: 0xe00068dc,\n\t0x13969: 0xe00045fd, 0x1396a: 0xe000642c, 0x1396b: 0xe0007351,\n\t0x1396d: 0xe00052e1, 0x1396f: 0xe000503f,\n\t0x13971: 0xe0004bae, 0x13972: 0xe0008302,\n\t0x13974: 0xe000a751, 0x13975: 0xe000514a,\n\t0x1397a: 0xe0009e4a,\n\t// Block 0x4e6, offset 0x13980\n\t0x13983: 0xe00081c4,\n\t0x13984: 0xe0008e9e, 0x13986: 0xe0005392,\n\t0x1398a: 0xe0004d4f,\n\t0x1398c: 0xe00064aa, 0x1398e: 0xe0009c0f,\n\t0x13995: 0xe0006831, 0x13996: 0xe000639c,\n\t0x13999: 0xe0008db2, 0x1399a: 0xe00064ad, 0x1399b: 0xe000438c,\n\t0x1399e: 0xe0009e92,\n\t0x139a0: 0xe00044f1, 0x139a1: 0xe000a46f,\n\t0x139a4: 0xe000831e, 0x139a5: 0xe0006dbf,\n\t0x139af: 0xe00048b3,\n\t0x139b1: 0xe0004b29,\n\t0x139b4: 0xe0005669, 0x139b7: 0xe000a897,\n\t0x139b8: 0xe000a88f,\n\t0x139bd: 0xe00052f5, 0x139be: 0xe0008641,\n\t// Block 0x4e7, offset 0x139c0\n\t0x139c2: 0xe000909d,\n\t0x139c5: 0xe000a351, 0x139c6: 0xe000996d, 0x139c7: 0xe000a355,\n\t0x139c8: 0xe0005f48, 0x139c9: 0xe0005f5c, 0x139ca: 0xe00094c8,\n\t0x139d6: 0xe00063dc,\n\t0x139d8: 0xe0007e09, 0x139da: 0xe0004200, 0x139db: 0xe0004721,\n\t0x139e3: 0xe0007311,\n\t0x139e4: 0xe0007531, 0x139e7: 0xe000981a,\n\t0x139e9: 0xe0007201, 0x139eb: 0xe0009b98,\n\t0x139ef: 0xe0009e95,\n\t0x139f0: 0xe00056dc,\n\t0x139f9: 0xe00093d7, 0x139fa: 0xe000726d,\n\t0x139fe: 0xe00069a2,\n\t// Block 0x4e8, offset 0x13a00\n\t0x13a01: 0xe00065ec,\n\t0x13a06: 0xe0008a65,\n\t0x13a0a: 0xe0006e3c, 0x13a0b: 0xe00077c8,\n\t0x13a0e: 0xe00074f1,\n\t0x13a10: 0xe00067d1, 0x13a11: 0xe00067d4, 0x13a12: 0xe00044f4, 0x13a13: 0xe0006a0e,\n\t0x13a14: 0xe00043dc, 0x13a15: 0xe0007e0d,\n\t0x13a20: 0xe0008f22,\n\t0x13a24: 0xe00076fb, 0x13a25: 0xe0007004, 0x13a26: 0xe00052b4,\n\t0x13a2b: 0xe0008e35,\n\t0x13a2d: 0xe000764b,\n\t0x13a30: 0xe0007edd, 0x13a31: 0xe0004528,\n\t0x13a34: 0xe00082c9, 0x13a36: 0xe0005396, 0x13a37: 0xe0009f85,\n\t0x13a38: 0xe000877a, 0x13a39: 0xe00066e1, 0x13a3a: 0xe0006ea0,\n\t0x13a3f: 0xe0009c8c,\n\t// Block 0x4e9, offset 0x13a40\n\t0x13a40: 0xe0006430, 0x13a42: 0xe0005925, 0x13a43: 0xe0007d5a,\n\t0x13a44: 0xe0007270, 0x13a46: 0xe00070d5,\n\t0x13a48: 0xe00045c1, 0x13a4a: 0xe00062f4, 0x13a4b: 0xe0005bd4,\n\t0x13a4f: 0xe000484d,\n\t0x13a5a: 0xe00067d7,\n\t0x13a5c: 0xe0005e13, 0x13a5d: 0xe0007392, 0x13a5e: 0xe0008a69,\n\t0x13a60: 0xe0004bf6, 0x13a63: 0xe00091d5,\n\t0x13a68: 0xe0009d9c, 0x13a69: 0xe000530e,\n\t0x13a70: 0xe0006524, 0x13a73: 0xe0006ea4,\n\t0x13a74: 0xe0006183, 0x13a75: 0xe000993d,\n\t0x13a78: 0xe0007273, 0x13a79: 0xe00068e0, 0x13a7a: 0xe00083fa,\n\t0x13a7d: 0xe00053f2, 0x13a7e: 0xe000a6e5, 0x13a7f: 0xe0005299,\n\t// Block 0x4ea, offset 0x13a80\n\t0x13a80: 0xe00056ec, 0x13a82: 0xe00069a5,\n\t0x13a86: 0xe000791f,\n\t0x13a8a: 0xe0008db5,\n\t0x13a8d: 0xe0008c95, 0x13a8f: 0xe0006a8f,\n\t0x13a91: 0xe0005292,\n\t0x13a98: 0xe000582b, 0x13a99: 0xe0007aa7, 0x13a9a: 0xe0005928,\n\t0x13a9d: 0xe000577b, 0x13a9f: 0xe000877e,\n\t0x13aa0: 0xe00059a4, 0x13aa3: 0xe00074f5,\n\t0x13aa5: 0xe0007db2, 0x13aa7: 0xe0008782,\n\t0x13aa8: 0xe0005dbd, 0x13aaa: 0xe000860b,\n\t0x13aac: 0xe0007963, 0x13aad: 0xe0009970,\n\t0x13ab3: 0xe00090a0,\n\t0x13ab4: 0xe00099de, 0x13ab6: 0xe000956c,\n\t0x13aba: 0xe00054df, 0x13abb: 0xe0009159,\n\t0x13abc: 0xe0004cb9, 0x13abe: 0xe000826f,\n\t// Block 0x4eb, offset 0x13ac0\n\t0x13ac1: 0xe00079d8, 0x13ac2: 0xe0007fba, 0x13ac3: 0xe0006e40,\n\t0x13ac5: 0xe0004cbc, 0x13ac7: 0xe00079c6,\n\t0x13ac8: 0xe000a91b, 0x13aca: 0xe0004cbf,\n\t0x13acc: 0xe0006f28, 0x13acd: 0xe0006b5a,\n\t0x13ad0: 0xe00090d0, 0x13ad2: 0xe0006dc2,\n\t0x13ad6: 0xe0009ec5,\n\t0x13adb: 0xe0009524,\n\t0x13adc: 0xe0007315, 0x13ade: 0xe0006165, 0x13adf: 0xe0008ee3,\n\t0x13ae1: 0xe00043e0,\n\t0x13aea: 0xe000a173, 0x13aeb: 0xe0006434,\n\t0x13aec: 0xe0006374,\n\t0x13af3: 0xe00098ea,\n\t0x13af5: 0xe0009ac9, 0x13af6: 0xe00062f8, 0x13af7: 0xe000a2d5,\n\t0x13af8: 0xe00041db, 0x13af9: 0xe0006ea8,\n\t0x13afd: 0xe0006478,\n\t// Block 0x4ec, offset 0x13b00\n\t0x13b00: 0xe00067da,\n\t0x13b05: 0xe00079c9, 0x13b07: 0xe0008be9,\n\t0x13b11: 0xe0009dec,\n\t0x13b18: 0xe00070d8, 0x13b19: 0xe00093db, 0x13b1a: 0xe0008db8,\n\t0x13b1f: 0xe0005699,\n\t0x13b24: 0xe0008426, 0x13b26: 0xe000a0e3,\n\t0x13b28: 0xe00060fc, 0x13b2a: 0xe0005ad3, 0x13b2b: 0xe0005ad6,\n\t0x13b2e: 0xe0004278, 0x13b2f: 0xe00058b5,\n\t0x13b31: 0xe000427c, 0x13b32: 0xe0006d58,\n\t0x13b34: 0xe0006910, 0x13b36: 0xe0007ae7,\n\t0x13b38: 0xe0009706,\n\t0x13b3e: 0xe000776f,\n\t// Block 0x4ed, offset 0x13b40\n\t0x13b4a: 0xe0009570, 0x13b4b: 0xe0008008,\n\t0x13b4d: 0xe0008692, 0x13b4e: 0xe0004dfb,\n\t0x13b52: 0xe0005ed7,\n\t0x13b54: 0xe000a82a,\n\t0x13b58: 0xe0006a11, 0x13b59: 0xe00067dd, 0x13b5a: 0xe00056f0,\n\t0x13b5d: 0xe00090a3, 0x13b5f: 0xe0006c5c,\n\t0x13b61: 0xe0004590, 0x13b62: 0xe000854e, 0x13b63: 0xe0006834,\n\t0x13b65: 0xe000446d, 0x13b66: 0xe000a472, 0x13b67: 0xe0006df2,\n\t0x13b68: 0xe000502f, 0x13b69: 0xe0004fd7, 0x13b6a: 0xe000514d, 0x13b6b: 0xe0008166,\n\t0x13b6c: 0xe000689c, 0x13b6d: 0xe0009cf1, 0x13b6e: 0xe0007c01, 0x13b6f: 0xe0007575,\n\t0x13b70: 0xe0005150, 0x13b71: 0xe000a565, 0x13b73: 0xe0006438,\n\t0x13b77: 0xe00090a6,\n\t0x13b78: 0xe00080a2, 0x13b79: 0xe0004f77, 0x13b7b: 0xe0009838,\n\t0x13b7c: 0xe000606c, 0x13b7d: 0xe00075c0, 0x13b7e: 0xe0006a14, 0x13b7f: 0xe00085ca,\n\t// Block 0x4ee, offset 0x13b80\n\t0x13b85: 0xe0007c3d,\n\t0x13b91: 0xe0008132, 0x13b92: 0xe0007aeb, 0x13b93: 0xe0005a68,\n\t0x13b94: 0xe0009c12, 0x13b95: 0xe0009709, 0x13b97: 0xe0006126,\n\t0x13b9b: 0xe0004199,\n\t0x13b9c: 0xe00060c8, 0x13b9e: 0xe0009e98, 0x13b9f: 0xe0004cc2,\n\t0x13ba0: 0xe000629c, 0x13ba1: 0xe000848c, 0x13ba3: 0xe00044f7,\n\t0x13ba5: 0xe0007829, 0x13ba6: 0xe0004850, 0x13ba7: 0xe0008892,\n\t0x13bab: 0xe0008b0d,\n\t0x13bb1: 0xe0007b9f, 0x13bb3: 0xe000569d,\n\t0x13bb4: 0xe00088d1,\n\t0x13bb9: 0xe0009e2c, 0x13bba: 0xe0005f3c, 0x13bbb: 0xe0006837,\n\t0x13bbd: 0xe0004853, 0x13bbe: 0xe0009fa9, 0x13bbf: 0xe0006247,\n\t// Block 0x4ef, offset 0x13bc0\n\t0x13bc0: 0xe0006914, 0x13bc1: 0xe0008fd9, 0x13bc2: 0xe0006168, 0x13bc3: 0xe0006568,\n\t0x13bc4: 0xe000419c, 0x13bc5: 0xe000606f,\n\t0x13bc8: 0xe0008644, 0x13bc9: 0xe0005ea7,\n\t0x13bd7: 0xe0006014,\n\t0x13bdb: 0xe00042a0,\n\t0x13bdc: 0xe0009574, 0x13bdd: 0xe000945a,\n\t0x13be3: 0xe0007cd9,\n\t0x13be8: 0xe000860e, 0x13bea: 0xe0004b51, 0x13beb: 0xe0005edb,\n\t0x13bef: 0xe00066e5,\n\t0x13bf1: 0xe0007204, 0x13bf2: 0xe0008647, 0x13bf3: 0xe0004434,\n\t0x13bf4: 0xe000a6e8, 0x13bf5: 0xe0008516, 0x13bf6: 0xe0005324,\n\t0x13bf8: 0xe0007f8a, 0x13bf9: 0xe00079cc,\n\t0x13bfc: 0xe00056a1,\n\t// Block 0x4f0, offset 0x13c00\n\t0x13c00: 0xe0007319, 0x13c03: 0xe0008a6d,\n\t0x13c07: 0xe000a202,\n\t0x13c09: 0xe000970c, 0x13c0a: 0xe000a3b5,\n\t0x13c0f: 0xe000859a,\n\t0x13c10: 0xe0009578, 0x13c11: 0xe000848f, 0x13c12: 0xe000a688,\n\t0x13c33: 0xe00056c7,\n\t0x13c37: 0xe000a005,\n\t0x13c3b: 0xe0008921,\n\t// Block 0x4f1, offset 0x13c40\n\t0x13c45: 0xe0005d48,\n\t0x13c49: 0xe0005d1e, 0x13c4a: 0xe0008786,\n\t0x13c4e: 0xe0006b5d,\n\t0x13c52: 0xe00044fa, 0x13c53: 0xe0005f3f,\n\t0x13c56: 0xe0004725,\n\t0x13c58: 0xe00074f9, 0x13c5a: 0xe0007aab, 0x13c5b: 0xe0008c59,\n\t0x13c5d: 0xe0008e86, 0x13c5e: 0xe0007e11, 0x13c5f: 0xe000a0f3,\n\t0x13c60: 0xe00082cc, 0x13c62: 0xe000a359,\n\t0x13c68: 0xe0005863, 0x13c69: 0xe00067e0, 0x13c6a: 0xe00075c3, 0x13c6b: 0xe0005e17,\n\t0x13c7d: 0xe0005edf, 0x13c7e: 0xe0005ef7, 0x13c7f: 0xe000864a,\n\t// Block 0x4f2, offset 0x13c80\n\t0x13c81: 0xe0009674, 0x13c82: 0xe0008955,\n\t0x13c85: 0xe0004a85,\n\t0x13c89: 0xe0005afa, 0x13c8a: 0xe0004d87,\n\t0x13c8c: 0xe0004f13,\n\t0x13c91: 0xe0009a05, 0x13c93: 0xe00049f9,\n\t0x13c94: 0xe0006719, 0x13c96: 0xe00093df,\n\t0x13c98: 0xe0007381,\n\t0x13c9c: 0xe000944b, 0x13c9f: 0xe00055a8,\n\t0x13ca0: 0xe0009d1b, 0x13ca1: 0xe000a0f7,\n\t0x13ca9: 0xe000669d, 0x13cab: 0xe0004f7b,\n\t0x13caf: 0xe000a568,\n\t0x13cb0: 0xe0004856, 0x13cb1: 0xe0005cd8, 0x13cb2: 0xe00069a8,\n\t0x13cb4: 0xe00076e3, 0x13cb6: 0xe0006781,\n\t0x13cb9: 0xe0008895,\n\t0x13cbd: 0xe00072b1,\n\t// Block 0x4f3, offset 0x13cc0\n\t0x13cc3: 0xe0009940,\n\t0x13cc4: 0xe0005560, 0x13cc6: 0xe0006a17, 0x13cc7: 0xe00087de,\n\t0x13cca: 0xe0005878, 0x13ccb: 0xe0009494,\n\t0x13ccc: 0xe0005f7c, 0x13ccd: 0xe0009e18, 0x13cce: 0xe00081c7,\n\t0x13ce9: 0xe000983b,\n\t0x13cec: 0xe0005e5b,\n\t0x13cf1: 0xe000a80e,\n\t0x13cf5: 0xe0007dd3,\n\t0x13cf8: 0xe0008272, 0x13cf9: 0xe0009df0,\n\t0x13cfc: 0xe000764f, 0x13cfd: 0xe0005797,\n\t// Block 0x4f4, offset 0x13d00\n\t0x13d06: 0xe00066b5,\n\t0x13d09: 0xe0007b33, 0x13d0a: 0xe00076ff,\n\t0x13d11: 0xe0009f60,\n\t0x13d17: 0xe0008898,\n\t0x13d1a: 0xe0007589, 0x13d1b: 0xe00042cc,\n\t0x13d21: 0xe0009e9b, 0x13d23: 0xe000566d,\n\t0x13d26: 0xe00081ca,\n\t0x13d29: 0xe0009d1e, 0x13d2a: 0xe00047f9, 0x13d2b: 0xe000a475,\n\t0x13d2c: 0xe000878a, 0x13d2d: 0xe00041de, 0x13d2f: 0xe000782d,\n\t0x13d31: 0xe00097e4, 0x13d33: 0xe00081f4,\n\t0x13d35: 0xe0004ec1, 0x13d37: 0xe000a7f2,\n\t0x13d3a: 0xe0009011,\n\t// Block 0x4f5, offset 0x13d40\n\t0x13d42: 0xe00096be,\n\t0x13d50: 0xe0007207,\n\t0x13d54: 0xe000742a,\n\t0x13d59: 0xe00060dc,\n\t0x13d5c: 0xe0006bfc, 0x13d5f: 0xe0004d52,\n\t0x13d61: 0xe000643c,\n\t0x13d68: 0xe000957c,\n\t0x13d6d: 0xe0009892, 0x13d6f: 0xe0004b9c,\n\t0x13d72: 0xe0009e9e,\n\t0x13d74: 0xe0006bd0,\n\t0x13d78: 0xe000903d, 0x13d79: 0xe0004689, 0x13d7a: 0xe00091f1, 0x13d7b: 0xe0007831,\n\t0x13d7c: 0xe00093e3, 0x13d7f: 0xe000a478,\n\t// Block 0x4f6, offset 0x13d80\n\t0x13d80: 0xe0007128, 0x13d81: 0xe0009199, 0x13d82: 0xe0006018,\n\t0x13d84: 0xe00098d2, 0x13d86: 0xe0006e28,\n\t0x13d89: 0xe0007f8e, 0x13d8a: 0xe0007d9a, 0x13d8b: 0xe0004470,\n\t0x13d8d: 0xe000742d,\n\t0x13d90: 0xe0007f3e, 0x13d91: 0xe0006b60, 0x13d93: 0xe00064d1,\n\t0x13d96: 0xe0006a1a,\n\t0x13d9a: 0xe000720a,\n\t0x13dac: 0xe000675d, 0x13dad: 0xe0007703, 0x13dae: 0xe0005988, 0x13daf: 0xe00097e8,\n\t0x13db1: 0xe0009e30,\n\t0x13db4: 0xe000731d,\n\t0x13dbc: 0xe0005bb6, 0x13dbd: 0xe0009fc5,\n\t// Block 0x4f7, offset 0x13dc0\n\t0x13dc0: 0xe000683a,\n\t0x13dc6: 0xe0005ce4,\n\t0x13dd1: 0xe0005fe4, 0x13dd3: 0xe0005e5f,\n\t0x13dd4: 0xe00066e9, 0x13dd5: 0xe00096c1, 0x13dd7: 0xe0008611,\n\t0x13dd8: 0xe0006c60, 0x13dda: 0xe00080d2,\n\t0x13dde: 0xe0005c06, 0x13ddf: 0xe0008f25,\n\t0x13de1: 0xe000944e, 0x13de3: 0xe000878e,\n\t0x13de5: 0xe00097dc, 0x13de6: 0xe0008dbb,\n\t0x13dea: 0xe0008b11,\n\t0x13dec: 0xe000708d, 0x13ded: 0xe00083b6, 0x13def: 0xe000915d,\n\t0x13dfd: 0xe0009e4d, 0x13dff: 0xe00081cd,\n\t// Block 0x4f8, offset 0x13e00\n\t0x13e01: 0xe00053f6, 0x13e03: 0xe0006510,\n\t0x13e06: 0xe0009580,\n\t0x13e09: 0xe000970f, 0x13e0a: 0xe0007c40, 0x13e0b: 0xe0007c43,\n\t0x13e0e: 0xe0004bf9,\n\t0x13e13: 0xe00080a6,\n\t0x13e15: 0xe00082cf, 0x13e16: 0xe00044fd,\n\t0x13e18: 0xe0007f19, 0x13e19: 0xe000a3f4,\n\t0x13e1e: 0xe00096c4,\n\t0x13e21: 0xe00068e4, 0x13e23: 0xe0007321,\n\t0x13e24: 0xe00082d2,\n\t0x13e28: 0xe0004e4f, 0x13e29: 0xe0009be0, 0x13e2a: 0xe000616b, 0x13e2b: 0xe00056a5,\n\t0x13e2d: 0xe0007090,\n\t0x13e3a: 0xe0009019,\n\t0x13e3e: 0xe0005b8f,\n\t// Block 0x4f9, offset 0x13e40\n\t0x13e40: 0xe0007d3a,\n\t0x13e44: 0xe00062fc, 0x13e46: 0xe00077a8, 0x13e47: 0xe0006217,\n\t0x13e49: 0xe0007c46, 0x13e4a: 0xe00047fc,\n\t0x13e4c: 0xe000a232, 0x13e4f: 0xe0008429,\n\t0x13e51: 0xe00043e4,\n\t0x13e54: 0xe0008792, 0x13e57: 0xe000816a,\n\t0x13e59: 0xe0009a08, 0x13e5b: 0xe0006f2c,\n\t0x13e5d: 0xe000542a,\n\t0x13e64: 0xe000a1da, 0x13e65: 0xe000979c, 0x13e66: 0xe0009528,\n\t0x13e68: 0xe000a7fe, 0x13e69: 0xe0006c48, 0x13e6a: 0xe00074fd,\n\t0x13e6f: 0xe0006dc5,\n\t0x13e70: 0xe000a7d6,\n\t0x13e7a: 0xe0008c98,\n\t// Block 0x4fa, offset 0x13e80\n\t0x13e81: 0xe0004859,\n\t0x13e89: 0xe0008614,\n\t0x13e8d: 0xe0005813, 0x13e8e: 0xe0007501, 0x13e8f: 0xe0008796,\n\t0x13e90: 0xe0006132,\n\t0x13e95: 0xe000800b,\n\t0x13e9c: 0xe00058fe, 0x13e9d: 0xe0007c04,\n\t0x13ea4: 0xe0005724, 0x13ea5: 0xe0007835,\n\t0x13ea9: 0xe0006514, 0x13eaa: 0xe000720d,\n\t0x13eb7: 0xe000889b,\n\t0x13eb9: 0xe00077ab, 0x13eba: 0xe0005d6d, 0x13ebb: 0xe0008d4f,\n\t0x13ebd: 0xe0009a3e, 0x13ebf: 0xe0004a3d,\n\t// Block 0x4fb, offset 0x13ec0\n\t0x13ec0: 0xe0009b4c, 0x13ec2: 0xe0007c07,\n\t0x13ec4: 0xe0005153, 0x13ec6: 0xe0005aac, 0x13ec7: 0xe0007093,\n\t0x13eca: 0xe0007d22, 0x13ecb: 0xe0006a93,\n\t0x13ed6: 0xe000795f, 0x13ed7: 0xe00065a0,\n\t0x13ed8: 0xe00078d1, 0x13eda: 0xe0006eac,\n\t0x13ee2: 0xe0005b56,\n\t0x13ee7: 0xe0004500,\n\t0x13ee9: 0xe0006528,\n\t0x13eed: 0xe00057c3, 0x13eef: 0xe0009bf0,\n\t0x13efc: 0xe000624a, 0x13eff: 0xe0005760,\n\t// Block 0x4fc, offset 0x13f00\n\t0x13f01: 0xe0005156,\n\t0x13f0e: 0xe000a47b,\n\t0x13f10: 0xe000a037, 0x13f13: 0xe000a76c,\n\t0x13f14: 0xe000452c, 0x13f15: 0xe000948e,\n\t0x13f1b: 0xe000a23c,\n\t0x13f1c: 0xe0005aaf, 0x13f1e: 0xe000800e, 0x13f1f: 0xe000a47e,\n\t0x13f27: 0xe000a85d,\n\t0x13f2b: 0xe000a82d,\n\t0x13f2c: 0xe0004eee, 0x13f2f: 0xe0004ef1,\n\t0x13f31: 0xe000739a,\n\t0x13f38: 0xe000864d, 0x13f39: 0xe000a52d, 0x13f3a: 0xe000a830, 0x13f3b: 0xe0005f8c,\n\t// Block 0x4fd, offset 0x13f40\n\t0x13f4a: 0xe00061b9, 0x13f4b: 0xe0007c49,\n\t0x13f4c: 0xe0006440, 0x13f4d: 0xe0006a1d,\n\t0x13f53: 0xe000851a,\n\t0x13f55: 0xe0009584,\n\t0x13f63: 0xe00049aa,\n\t0x13f64: 0xe0008d52,\n\t0x13f68: 0xe000683d, 0x13f69: 0xe00099e1, 0x13f6a: 0xe00056df,\n\t0x13f6f: 0xe0004d55,\n\t0x13f70: 0xe00082d5, 0x13f71: 0xe0009481,\n\t0x13f74: 0xe00082d8,\n\t// Block 0x4fe, offset 0x13f80\n\t0x13f80: 0xe0008f28,\n\t0x13f85: 0xe0008b15, 0x13f86: 0xe00088d4, 0x13f87: 0xe0006b63,\n\t0x13f89: 0xe0005a6c, 0x13f8b: 0xe000536a,\n\t0x13f94: 0xe000a6eb,\n\t0x13f99: 0xe0007db5, 0x13f9b: 0xe0008ee6,\n\t0x13f9e: 0xe000a638, 0x13f9f: 0xe0004bfc,\n\t0x13fa3: 0xe000518f,\n\t0x13fa4: 0xe000a113,\n\t0x13fa9: 0xe00049ce,\n\t0x13fac: 0xe00049d2, 0x13fad: 0xe00091d9,\n\t0x13fb8: 0xe00070db, 0x13fb9: 0xe0007fbe, 0x13fbb: 0xe0007039,\n\t0x13fbe: 0xe00075c6,\n\t// Block 0x4ff, offset 0x13fc0\n\t0x13fc0: 0xe0009788, 0x13fc2: 0xe0006761, 0x13fc3: 0xe0007505,\n\t0x13fc6: 0xe000a309,\n\t0x13fc8: 0xe0007ca3, 0x13fc9: 0xe0006840, 0x13fca: 0xe0005d4b, 0x13fcb: 0xe0005867,\n\t0x13fd1: 0xe000539a,\n\t0x13fd8: 0xe00090a9, 0x13fda: 0xe00069ab,\n\t0x13fdc: 0xe00062b0, 0x13fdd: 0xe0005159,\n\t0x13fe1: 0xe0006bae,\n\t0x13fe5: 0xe0006e44,\n\t0x13fe8: 0xe0008b39, 0x13fe9: 0xe0008dbe,\n\t0x13ff4: 0xe00094f0, 0x13ff5: 0xe0007aaf, 0x13ff7: 0xe0004e43,\n\t0x13ffa: 0xe0007c4c, 0x13ffb: 0xe000968c,\n\t0x13fff: 0xe000816e,\n\t// Block 0x500, offset 0x14000\n\t0x14000: 0xe00056a9,\n\t0x1400c: 0xe0004a26, 0x1400e: 0xe00042d4,\n\t0x14015: 0xe000749d, 0x14017: 0xe000a68c,\n\t0x14019: 0xe0009df4,\n\t0x1401f: 0xe00081d0,\n\t0x14020: 0xe000671d,\n\t0x14024: 0xe00082db, 0x14025: 0xe000609c, 0x14026: 0xe000a008,\n\t0x14028: 0xe0007396,\n\t0x1402e: 0xe0006721,\n\t0x14034: 0xe000a481, 0x14036: 0xe0008b2d,\n\t0x14038: 0xe0007db8,\n\t// Block 0x501, offset 0x14040\n\t0x14042: 0xe000584f, 0x14043: 0xe000647c,\n\t0x1404c: 0xe00063a0, 0x1404d: 0xe000834e,\n\t0x14058: 0xe0008453,\n\t0x1405e: 0xe0005dfb, 0x1405f: 0xe000601c,\n\t0x14062: 0xe000a3b9, 0x14063: 0xe000574c,\n\t0x1406d: 0xe0005d4e,\n\t0x14073: 0xe0005472,\n\t0x14074: 0xe000919d,\n\t0x1407a: 0xe0005763, 0x1407b: 0xe0005c21,\n\t0x1407d: 0xe0008e69,\n\t// Block 0x502, offset 0x14080\n\t0x14080: 0xe0007144,\n\t0x14084: 0xe0009a96, 0x14087: 0xe0005dfe,\n\t0x1408a: 0xe000609f, 0x1408b: 0xe0007551,\n\t0x14092: 0xe0005efb,\n\t0x1409a: 0xe0009da8, 0x1409b: 0xe0009dac,\n\t0x140a0: 0xe0006378, 0x140a3: 0xe000515c,\n\t0x140ac: 0xe0006eb0, 0x140af: 0xe0007ee0,\n\t0x140b2: 0xe0009922,\n\t0x140b7: 0xe00054a2,\n\t0x140b9: 0xe000a1b0, 0x140bb: 0xe000842c,\n\t0x140be: 0xe0006f74,\n\t// Block 0x503, offset 0x140c0\n\t0x140c5: 0xe00073de,\n\t0x140cd: 0xe00042ec,\n\t0x140d1: 0xe0007bd3,\n\t0x140d5: 0xe0007ab3,\n\t0x140df: 0xe000582f,\n\t0x140e1: 0xe000592b, 0x140e2: 0xe0008f89, 0x140e3: 0xe0005901,\n\t0x140f1: 0xe000485c, 0x140f2: 0xe000462d,\n\t0x140f6: 0xe00086f6,\n\t0x140f9: 0xe00056e2, 0x140fb: 0xe0005e63,\n\t// Block 0x504, offset 0x14100\n\t0x14100: 0xe000a321,\n\t0x14104: 0xe00052f1, 0x14106: 0xe0008fe9,\n\t0x1410a: 0xe0005fec,\n\t0x1410c: 0xe000a206, 0x1410d: 0xe0007a73, 0x1410e: 0xe00042a4,\n\t0x14112: 0xe000a2d9, 0x14113: 0xe0007365,\n\t0x14117: 0xe000419f,\n\t0x14119: 0xe00075c9, 0x1411b: 0xe00081d3,\n\t0x1411d: 0xe0009926, 0x1411e: 0xe00081f7,\n\t0x14121: 0xe000a3bd, 0x14122: 0xe0004cc5, 0x14123: 0xe000842f,\n\t0x14128: 0xe0009f06, 0x1412b: 0xe0006c64,\n\t0x1412e: 0xe000493a,\n\t0x14130: 0xe0007189, 0x14132: 0xe0005204,\n\t0x14137: 0xe000992a,\n\t0x1413d: 0xe00085a6, 0x1413e: 0xe0004fdb, 0x1413f: 0xe0004fdf,\n\t// Block 0x505, offset 0x14140\n\t0x14141: 0xe0008136, 0x14142: 0xe0006030,\n\t0x14148: 0xe00041a2, 0x1414b: 0xe00054e2,\n\t0x1414d: 0xe0009ea1,\n\t0x14152: 0xe000536e,\n\t0x14156: 0xe0007210, 0x14157: 0xe0009161,\n\t0x1415b: 0xe00088d7,\n\t0x1415d: 0xe0006843, 0x1415e: 0xe000491e,\n\t0x14162: 0xe000652c,\n\t0x1416a: 0xe0004503, 0x1416b: 0xe0009f70,\n\t0x14174: 0xe000485f,\n\t// Block 0x506, offset 0x14180\n\t0x14180: 0xe0008552, 0x14181: 0xe000881e, 0x14182: 0xe00059c8,\n\t0x14185: 0xe00087e2,\n\t0x1418a: 0xe00052c9,\n\t0x1418d: 0xe000493e, 0x1418f: 0xe0005d21,\n\t0x14192: 0xe0006846,\n\t0x14194: 0xe0007c0a, 0x14195: 0xe0008275,\n\t0x14198: 0xe0004d58, 0x14199: 0xe0004db3,\n\t0x1419c: 0xe00066a0, 0x1419d: 0xe000879a, 0x1419f: 0xe0006b66,\n\t0x141a1: 0xe0005d24,\n\t0x141a8: 0xe00069ae,\n\t0x141af: 0xe0008f2b,\n\t0x141b1: 0xe0009f2d, 0x141b3: 0xe0006d04,\n\t0x141b4: 0xe00064b0, 0x141b5: 0xe00064b3,\n\t0x141b8: 0xe0005766, 0x141b9: 0xe0004a29,\n\t0x141bd: 0xe0008c9b, 0x141be: 0xe0004506,\n\t// Block 0x507, offset 0x141c0\n\t0x141c4: 0xe0009497, 0x141c7: 0xe00066ed,\n\t0x141ca: 0xe0009df8,\n\t0x141cc: 0xe0004942,\n\t0x141d0: 0xe00042d0, 0x141d2: 0xe0009ea4, 0x141d3: 0xe00066a3,\n\t0x141d5: 0xe00082de,\n\t0x141d8: 0xe00081d6, 0x141d9: 0xe00064b6, 0x141da: 0xe00088da,\n\t0x141e5: 0xe0007f32, 0x141e7: 0xe0004785,\n\t0x141ea: 0xe0009c8f, 0x141eb: 0xe0009a0b,\n\t0x141f0: 0xe0004548,\n\t0x141f6: 0xe00073aa,\n\t0x141f8: 0xe0005c09, 0x141fa: 0xe0009660, 0x141fb: 0xe0006f30,\n\t// Block 0x508, offset 0x14200\n\t0x14201: 0xe00043e8,\n\t0x14204: 0xe00078a5,\n\t0x1420d: 0xe000871a,\n\t0x14216: 0xe0007cdc,\n\t0x14218: 0xe0004b9f,\n\t0x1421c: 0xe0009624, 0x1421e: 0xe00065b8, 0x1421f: 0xe0004fe3,\n\t0x14220: 0xe00054a6,\n\t0x14224: 0xe0005817,\n\t0x1422a: 0xe0005eab,\n\t0x1422d: 0xe000a988, 0x1422f: 0xe0009a42,\n\t0x14232: 0xe00073ae,\n\t0x14234: 0xe00057db,\n\t0x1423f: 0xe0006dc8,\n\t// Block 0x509, offset 0x14240\n\t0x14241: 0xe0007ee3, 0x14243: 0xe00053fa,\n\t0x14246: 0xe00066f1, 0x14247: 0xe0009d7b,\n\t0x14248: 0xe000a1f2, 0x14249: 0xe000515f, 0x1424b: 0xe0004601,\n\t0x1424f: 0xe0004ec4,\n\t0x14253: 0xe0005f94,\n\t0x14256: 0xe0007430, 0x14257: 0xe0006bb1,\n\t0x14258: 0xe0008b19,\n\t0x14261: 0xe00045c5,\n\t0x14268: 0xe0007653, 0x14269: 0xe0005563, 0x1426a: 0xe0009a36,\n\t0x1426c: 0xe0005162, 0x1426f: 0xe0004d5b,\n\t0x14272: 0xe0004f7f,\n\t0x14277: 0xe000949a,\n\t0x1427a: 0xe0004204,\n\t0x1427d: 0xe000581b, 0x1427f: 0xe0008959,\n\t// Block 0x50a, offset 0x14280\n\t0x14280: 0xe0004a89,\n\t0x14292: 0xe0004208,\n\t0x14294: 0xe0004fa7, 0x14296: 0xe0004651,\n\t0x1429a: 0xe00048b6,\n\t0x1429c: 0xe0008650, 0x1429d: 0xe00088dd,\n\t0x142a3: 0xe000a1b3,\n\t0x142a5: 0xe0004bba,\n\t0x142b1: 0xe0009fc9, 0x142b3: 0xe00048f6,\n\t0x142b4: 0xe0006d08,\n\t0x142b8: 0xe000978c,\n\t// Block 0x50b, offset 0x142c0\n\t0x142c0: 0xe0007937, 0x142c2: 0xe0008bed, 0x142c3: 0xe00067e3,\n\t0x142c7: 0xe0004bbe,\n\t0x142c8: 0xe00047d2, 0x142c9: 0xe0006570, 0x142ca: 0xe0007509,\n\t0x142cc: 0xe000a531, 0x142ce: 0xe0009c53,\n\t0x142d0: 0xe00076bb, 0x142d1: 0xe00084b6, 0x142d3: 0xe000a7da,\n\t0x142d4: 0xe000839a, 0x142d5: 0xe0006c28, 0x142d6: 0xe000a8d3, 0x142d7: 0xe0009b2c,\n\t0x142d8: 0xe00050e7, 0x142db: 0xe0007dbb,\n\t0x142dd: 0xe00075cc, 0x142df: 0xe0007158,\n\t0x142e2: 0xe000a8bf, 0x142e3: 0xe0004649,\n\t0x142e5: 0xe00052d9,\n\t0x142ea: 0xe0006444,\n\t0x142ed: 0xe0006f34,\n\t0x142f1: 0xe000a23f,\n\t0x142f4: 0xe0007096, 0x142f6: 0xe00041a5,\n\t0x142fa: 0xe0009165, 0x142fb: 0xe0008ee9,\n\t0x142fc: 0xe0008c5d, 0x142fe: 0xe0008653,\n\t// Block 0x50c, offset 0x14300\n\t0x14301: 0xe00048b9,\n\t0x14306: 0xe00088e0,\n\t0x1430b: 0xe0008f2e,\n\t0x14310: 0xe0006b69, 0x14311: 0xe00084b9,\n\t0x14314: 0xe0008d55, 0x14315: 0xe0009e1c, 0x14316: 0xe0009f79, 0x14317: 0xe000a3d9,\n\t0x14318: 0xe0004de7, 0x1431b: 0xe000889e,\n\t0x1431e: 0xe0006b6c,\n\t0x14320: 0xe0007ba3, 0x14321: 0xe000a7ae, 0x14322: 0xe0007325, 0x14323: 0xe0007c0d,\n\t0x14326: 0xe0007433,\n\t0x14329: 0xe0007436, 0x1432b: 0xe0009ae7,\n\t0x1432c: 0xe0004d5e, 0x1432d: 0xe0004e64, 0x1432e: 0xe00089dd,\n\t0x14330: 0xe000a97c, 0x14331: 0xe000a56b, 0x14332: 0xe000a1b6, 0x14333: 0xe0006d0c,\n\t0x14335: 0xe0006eb4,\n\t0x14339: 0xe0009600,\n\t0x1433c: 0xe000a703, 0x1433f: 0xe0004b6f,\n\t// Block 0x50d, offset 0x14340\n\t0x14342: 0xe0008dc1,\n\t0x14344: 0xe0005b92, 0x14345: 0xe0008eec, 0x14346: 0xe0004b55, 0x14347: 0xe00049fc,\n\t0x1434c: 0xe00090ac, 0x1434d: 0xe000851e,\n\t0x14351: 0xe0004b59, 0x14353: 0xe0006dcb,\n\t0x14355: 0xe0009b7c,\n\t0x14358: 0xe0008278, 0x1435a: 0xe0009751,\n\t0x1435e: 0xe00078f7,\n\t0x14360: 0xe0007008, 0x14361: 0xe00047d5, 0x14362: 0xe000a30d, 0x14363: 0xe000616e,\n\t0x14364: 0xe0007ca6, 0x14365: 0xe0004862, 0x14366: 0xe000715c, 0x14367: 0xe0009ec8,\n\t0x14368: 0xe000a6ee, 0x1436a: 0xe0006f38,\n\t0x14370: 0xe0007213, 0x14372: 0xe00049ff,\n\t0x14379: 0xe00069b1,\n\t0x1437c: 0xe0008432, 0x1437e: 0xe0008366, 0x1437f: 0xe0008d58,\n\t// Block 0x50e, offset 0x14380\n\t0x14382: 0xe0009604,\n\t0x14384: 0xe0007329, 0x14387: 0xe00053fe,\n\t0x14389: 0xe00081fa, 0x1438b: 0xe0009678,\n\t0x1438d: 0xe0008847, 0x1438f: 0xe000983e,\n\t0x14392: 0xe00058b9,\n\t0x14396: 0xe0005b26,\n\t0x1439b: 0xe000827b,\n\t0x1439c: 0xe0009644, 0x1439e: 0xe0009dfc, 0x1439f: 0xe0007463,\n\t0x143a0: 0xe000a816, 0x143a1: 0xe0007439,\n\t0x143a4: 0xe0007657, 0x143a6: 0xe00096a3, 0x143a7: 0xe000a1b9,\n\t0x143aa: 0xe0008bf1, 0x143ab: 0xe0004280,\n\t0x143ad: 0xe000827e, 0x143ae: 0xe0008617,\n\t0x143b0: 0xe0007466, 0x143b1: 0xe000a842, 0x143b3: 0xe0007707,\n\t0x143b4: 0xe000a0fb, 0x143b6: 0xe0007579, 0x143b7: 0xe0009f4c,\n\t0x143b8: 0xe0008c9e, 0x143ba: 0xe000793b,\n\t0x143bc: 0xe000a81a, 0x143be: 0xe00051bc,\n\t// Block 0x50f, offset 0x143c0\n\t0x143c0: 0xe0006072, 0x143c1: 0xe000769f, 0x143c2: 0xe00081d9,\n\t0x143c4: 0xe0005728, 0x143c7: 0xe000454c,\n\t0x143cc: 0xe00041e1, 0x143ce: 0xe000621a,\n\t0x143d0: 0xe00062b4, 0x143d1: 0xe000a412,\n\t0x143d4: 0xe000a03b, 0x143d6: 0xe0007108, 0x143d7: 0xe0006448,\n\t0x143d9: 0xe0004665, 0x143da: 0xe00084d6, 0x143db: 0xe00043ec,\n\t0x143dc: 0xe0008172, 0x143dd: 0xe0006b6f,\n\t0x143e0: 0xe0007ee6, 0x143e3: 0xe0008050,\n\t0x143e6: 0xe0004789,\n\t0x143e8: 0xe0006075, 0x143eb: 0xe0008925,\n\t0x143ec: 0xe0005c4b,\n\t0x143f3: 0xe0004cc8,\n\t0x143f7: 0xe0007cdf,\n\t0x143f9: 0xe0004f83,\n\t0x143fe: 0xe0005e83,\n\t// Block 0x510, offset 0x14400\n\t0x14401: 0xe000a56e, 0x14403: 0xe000a7b1,\n\t0x14409: 0xe0009041,\n\t0x1440c: 0xe0007dd6, 0x1440e: 0xe000a873, 0x1440f: 0xe00050ea,\n\t0x14414: 0xe0006ef8, 0x14416: 0xe0009377,\n\t0x14418: 0xe00074a1, 0x14419: 0xe0009754, 0x1441a: 0xe0005402,\n\t0x1441c: 0xe00066a6, 0x1441f: 0xe0008dc4,\n\t0x14426: 0xe0004729,\n\t0x1442b: 0xe0006f94,\n\t0x1442c: 0xe00069b4, 0x1442f: 0xe00079f3,\n\t0x14430: 0xe0008435, 0x14431: 0xe0006efc,\n\t0x14434: 0xe0004605, 0x14437: 0xe000a484,\n\t0x1443d: 0xe0007c10, 0x1443f: 0xe000a415,\n\t// Block 0x511, offset 0x14440\n\t0x14440: 0xe00055e1,\n\t0x14449: 0xe00082e1, 0x1444a: 0xe00065cc,\n\t0x1444c: 0xe0007ab7, 0x1444e: 0xe0007276,\n\t0x14450: 0xe0007216, 0x14452: 0xe0009347, 0x14453: 0xe00078a9,\n\t0x14456: 0xe000934b,\n\t0x1445a: 0xe00092d7,\n\t0x1445c: 0xe00054aa, 0x1445e: 0xe000794b,\n\t// Block 0x512, offset 0x14480\n\t0x144b7: 0xe00048e2,\n\t0x144bf: 0xe00047d8,\n\t// Block 0x513, offset 0x144c0\n\t0x144c1: 0xe000a630,\n\t0x144c6: 0xe00056ca, 0x144c7: 0xe0004438,\n\t0x144c8: 0xe00050ed, 0x144c9: 0xe0007469, 0x144ca: 0xe0009f50,\n\t0x144cc: 0xe0007e15, 0x144ce: 0xe0007279,\n\t0x144d5: 0xe000743c, 0x144d6: 0xe00098ee,\n\t0x144da: 0xe000560d,\n\t0x144e1: 0xe0006d10, 0x144e2: 0xe000a610,\n\t0x144e8: 0xe000a976, 0x144ea: 0xe000a487, 0x144eb: 0xe0007c13,\n\t0x144ec: 0xe00088e3,\n\t0x144f3: 0xe0006a97,\n\t0x144f8: 0xe0009a0e, 0x144f9: 0xe0009f09, 0x144fa: 0xe000743f,\n\t// Block 0x514, offset 0x14500\n\t0x14502: 0xe0009712, 0x14503: 0xe0005f60,\n\t0x1450a: 0xe0005f4c,\n\t0x1450c: 0xe0006078, 0x1450d: 0xe0005d51,\n\t0x14513: 0xe0006135,\n\t0x14514: 0xe0006a20,\n\t0x14518: 0xe0005f64,\n\t0x1451d: 0xe0009d7e, 0x1451e: 0xe0008bf5,\n\t0x14520: 0xe00067e6, 0x14521: 0xe0008821, 0x14522: 0xe00049ae,\n\t0x14527: 0xe0006a73,\n\t0x14528: 0xe000a571, 0x14529: 0xe0009d38, 0x1452a: 0xe0009bac, 0x1452b: 0xe0004a8d,\n\t0x1452c: 0xe0009469, 0x1452f: 0xe00088a1,\n\t0x14530: 0xe000702d, 0x14532: 0xe0008656, 0x14533: 0xe0008495,\n\t0x14534: 0xe0004e9d, 0x14536: 0xe0009e00, 0x14537: 0xe0005f21,\n\t0x14538: 0xe00054e5, 0x1453a: 0xe000a6b0, 0x1453b: 0xe00069b7,\n\t0x1453c: 0xe0009648, 0x1453d: 0xe0008492, 0x1453f: 0xe0006171,\n\t// Block 0x515, offset 0x14540\n\t0x14540: 0xe000a00b, 0x14541: 0xe00068a0, 0x14542: 0xe0005b6e, 0x14543: 0xe000859e,\n\t0x14544: 0xe000a6f1, 0x14546: 0xe00065f0, 0x14547: 0xe000861a,\n\t0x14548: 0xe00041a8, 0x1454a: 0xe0008929,\n\t0x14551: 0xe0009169, 0x14553: 0xe0006a77,\n\t0x14559: 0xe0008f31, 0x1455a: 0xe0005b71,\n\t0x1455c: 0xe0006b72, 0x1455e: 0xe0006d14,\n\t0x14560: 0xe00064b9, 0x14561: 0xe00044a6, 0x14562: 0xe000a2dd, 0x14563: 0xe0005f24,\n\t0x14564: 0xe000952c, 0x14566: 0xe00067e9,\n\t0x1456a: 0xe00091dd,\n\t0x1456c: 0xe00087e6, 0x1456d: 0xe0005566,\n\t0x14574: 0xe0005b74,\n\t0x1457b: 0xe00067ec,\n\t0x1457c: 0xe0004ccb, 0x1457d: 0xe0006d46,\n\t// Block 0x516, offset 0x14580\n\t0x14584: 0xe00090af, 0x14585: 0xe0009943, 0x14587: 0xe0008322,\n\t0x14588: 0xe0009045, 0x1458a: 0xe00092db, 0x1458b: 0xe0007693,\n\t0x1458d: 0xe0006f78, 0x1458f: 0xe0007bd7,\n\t0x14590: 0xe0007535, 0x14593: 0xe000879e,\n\t0x14594: 0xe0006a23, 0x14596: 0xe000710c,\n\t0x1459b: 0xe00049d6,\n\t// Block 0x517, offset 0x145c0\n\t0x145e4: 0xe000892d, 0x145e6: 0xe0006b75, 0x145e7: 0xe00051d4,\n\t0x145eb: 0xe000a281,\n\t0x145ed: 0xe0008659,\n\t0x145f0: 0xe0008eef, 0x145f3: 0xe0004ec7,\n\t0x145f4: 0xe00067ef, 0x145f6: 0xe00042a8, 0x145f7: 0xe00050f0,\n\t// Block 0x518, offset 0x14600\n\t0x14601: 0xe00091a1,\n\t0x14605: 0xe0009715,\n\t0x1460a: 0xe000818a,\n\t0x1460e: 0xe0008f34,\n\t0x14610: 0xe000a32d,\n\t0x14619: 0xe0008d5b,\n\t0x14620: 0xe0009757, 0x14623: 0xe0009973,\n\t0x14628: 0xe0009841, 0x1462b: 0xe0004c38,\n\t0x14632: 0xe0009307, 0x14633: 0xe0008de1,\n\t0x1463a: 0xe00067f2,\n\t0x1463e: 0xe00090b2,\n\t// Block 0x519, offset 0x14640\n\t0x14642: 0xe0005165,\n\t0x14646: 0xe0009c15,\n\t0x1464b: 0xe00063c0,\n\t0x1464c: 0xe00091e1, 0x1464e: 0xe0009aea, 0x1464f: 0xe00041ab,\n\t0x14655: 0xe0008b3d, 0x14656: 0xe00094f4, 0x14657: 0xe0006849,\n\t0x1465b: 0xe0009cf4,\n\t0x1465d: 0xe00044d3, 0x1465f: 0xe0004fab,\n\t0x14661: 0xe0008931, 0x14663: 0xe0006eb8,\n\t0x14668: 0xe0004a02, 0x1466a: 0xe0004e8b, 0x1466b: 0xe00049da,\n\t0x1466c: 0xe0004ef4, 0x1466f: 0xe0005ab2,\n\t0x14671: 0xe0009a11, 0x14673: 0xe0005569,\n\t0x1467c: 0xe0004d9f,\n\t// Block 0x51a, offset 0x14680\n\t0x14686: 0xe0008fbd,\n\t0x14688: 0xe00070de, 0x14689: 0xe00058d5, 0x1468a: 0xe0007f92,\n\t0x1468f: 0xe0005446,\n\t0x14690: 0xe0009530,\n\t0x14694: 0xe0009b50,\n\t0x1469d: 0xe0004a2c, 0x1469e: 0xe00044d6, 0x1469f: 0xe00090d3,\n\t0x146aa: 0xe0008e39,\n\t0x146b0: 0xe0008281,\n\t0x146b4: 0xe0007fc2, 0x146b5: 0xe0008e3d, 0x146b6: 0xe0008cd1,\n\t0x146bd: 0xe0008053,\n\t// Block 0x51b, offset 0x146c0\n\t0x146c0: 0xe0008b41, 0x146c2: 0xe0008284,\n\t0x146c4: 0xe0008ca1, 0x146c7: 0xe0004530,\n\t0x146c8: 0xe000556c, 0x146c9: 0xe0009266, 0x146ca: 0xe000a3f7,\n\t0x146cc: 0xe000941b, 0x146cf: 0xe0008cd4,\n\t0x146d5: 0xe0009fcd,\n\t0x146d9: 0xe00098d6,\n\t0x146dc: 0xe00098f2, 0x146df: 0xe0008935,\n\t0x146e0: 0xe00094cc, 0x146e3: 0xe0005e87,\n\t0x146e4: 0xe0008e6d,\n\t0x146f2: 0xe0008fc1,\n\t0x146f4: 0xe00098da, 0x146f6: 0xe0004e53,\n\t0x146fb: 0xe0004c3b,\n\t// Block 0x51c, offset 0x14700\n\t0x14701: 0xe0008d5e,\n\t0x14705: 0xe00097a0, 0x14707: 0xe00088a4,\n\t0x14709: 0xe000561d, 0x1470a: 0xe0008ef2, 0x1470b: 0xe0008cd7,\n\t0x1470d: 0xe0007839,\n\t0x14710: 0xe00059fc, 0x14711: 0xe00094f8, 0x14713: 0xe00090d6,\n\t0x14714: 0xe0008a71,\n\t0x14719: 0xe0005d9d,\n\t0x14721: 0xe0006fbc,\n\t0x14729: 0xe0004a4d, 0x1472a: 0xe0005d71, 0x1472b: 0xe000750d,\n\t0x1472c: 0xe0004dff,\n\t0x14731: 0xe0009aed, 0x14733: 0xe0004e03,\n\t// Block 0x51d, offset 0x14740\n\t0x14740: 0xe0004cce,\n\t0x14746: 0xe00096c7,\n\t0x1474a: 0xe0009269, 0x1474b: 0xe00076a3,\n\t0x1474c: 0xe0004e67, 0x1474d: 0xe0004db7,\n\t0x14752: 0xe000a251,\n\t0x1475f: 0xe0007a77,\n\t0x14768: 0xe0005a70, 0x1476b: 0xe000916d,\n\t0x14778: 0xe00098de, 0x14779: 0xe00090d9, 0x1477a: 0xe000975a, 0x1477b: 0xe00041ae,\n\t0x1477c: 0xe000857e, 0x1477e: 0xe00074a5,\n\t// Block 0x51e, offset 0x14780\n\t0x14783: 0xe0004bff,\n\t0x14785: 0xe0005ab5, 0x14787: 0xe0008a75,\n\t0x14788: 0xe0008f37, 0x14789: 0xe0008824,\n\t0x14792: 0xe000964c, 0x14793: 0xe0005e67,\n\t0x14794: 0xe00066a9, 0x14795: 0xe000472d,\n\t0x1479b: 0xe00058bd,\n\t0x1479c: 0xe00099e4, 0x1479d: 0xe000a845, 0x1479e: 0xe0005ee3, 0x1479f: 0xe00095ac,\n\t0x147a6: 0xe000598c, 0x147a7: 0xe0006650,\n\t0x147a8: 0xe0004ab9, 0x147a9: 0xe00064bc, 0x147aa: 0xe0005c84,\n\t0x147af: 0xe0009215,\n\t0x147b0: 0xe00078d5, 0x147b3: 0xe0008ef5,\n\t0x147b8: 0xe0007219, 0x147b9: 0xe00066f5, 0x147bb: 0xe00066f9,\n\t0x147be: 0xe00089e1, 0x147bf: 0xe00079cf,\n\t// Block 0x51f, offset 0x147c0\n\t0x147c0: 0xe0007d3e, 0x147c2: 0xe00048fa,\n\t0x147c4: 0xe000a0bb, 0x147c5: 0xe000813a, 0x147c6: 0xe0005b1e,\n\t0x147c9: 0xe00089e5,\n\t0x147cd: 0xe00095b0, 0x147ce: 0xe0004c02,\n\t0x147d2: 0xe00068e8,\n\t0x147d4: 0xe0005da1, 0x147d7: 0xe0004374,\n\t0x147d8: 0xe000a614,\n\t0x147dd: 0xe00079d2, 0x147de: 0xe000a0ff, 0x147df: 0xe0004bb2,\n\t0x147e1: 0xe0006a26, 0x147e2: 0xe0005948, 0x147e3: 0xe0005960,\n\t0x147e4: 0xe0005ad9,\n\t// Block 0x520, offset 0x14800\n\t0x1481b: 0xe0007511,\n\t0x1481c: 0xe0004865, 0x1481f: 0xe0009f7c,\n\t0x14822: 0xe00057f3, 0x14823: 0xe00057eb,\n\t0x14826: 0xe0009d3c,\n\t0x14828: 0xe00065d0,\n\t0x1482d: 0xe0006b78, 0x1482e: 0xe00065e8, 0x1482f: 0xe00065d4,\n\t0x14830: 0xe0009171, 0x14831: 0xe0007f36, 0x14832: 0xe000529d,\n\t0x1483b: 0xe000759d,\n\t0x1483f: 0xe0009588,\n\t// Block 0x521, offset 0x14840\n\t0x14840: 0xe00042ac, 0x14842: 0xe0008011, 0x14843: 0xe0007ce2,\n\t0x14844: 0xe000a8e3, 0x14845: 0xe0007515,\n\t0x1484d: 0xe0005704, 0x1484e: 0xe0007ba7,\n\t0x14851: 0xe0004f87, 0x14853: 0xe00075f6,\n\t0x14854: 0xe000637c, 0x14855: 0xe0007ce5,\n\t0x14862: 0xe000975d,\n\t0x14864: 0xe00084bc, 0x14865: 0xe000a3dd, 0x14866: 0xe00041b1,\n\t0x14868: 0xe0009c2a, 0x1486a: 0xe0008939, 0x1486b: 0xe0006300,\n\t0x1486c: 0xe0007e61, 0x1486d: 0xe00091e5,\n\t0x14870: 0xe0007369, 0x14872: 0xe000459c,\n\t0x14874: 0xe000a706, 0x14877: 0xe000621d,\n\t0x14878: 0xe000666c, 0x14879: 0xe000893d, 0x1487a: 0xe000522c,\n\t0x1487d: 0xe0009844,\n\t// Block 0x522, offset 0x14880\n\t0x14880: 0xe0009c92, 0x14881: 0xe0007160, 0x14882: 0xe0004ae1, 0x14883: 0xe000556f,\n\t0x14885: 0xe000a796, 0x14886: 0xe00079f7,\n\t0x14888: 0xe000a3c1, 0x1488b: 0xe0009ea7,\n\t0x1488c: 0xe00082e4, 0x1488d: 0xe0007099, 0x1488f: 0xe0009ca7,\n\t0x14890: 0xe00098e2, 0x14891: 0xe0004cd1,\n\t0x14894: 0xe0005572, 0x14895: 0xe0004731, 0x14896: 0xe000895d, 0x14897: 0xe00056cd,\n\t0x14899: 0xe00088a7, 0x1489a: 0xe0009c76,\n\t0x1489d: 0xe0006dce, 0x1489e: 0xe0005a30, 0x1489f: 0xe0007110,\n\t0x148a0: 0xe0008d61, 0x148a1: 0xe0008f8d, 0x148a2: 0xe0006765, 0x148a3: 0xe0005990,\n\t0x148ae: 0xe00096a6,\n\t0x148b1: 0xe0008ef8, 0x148b2: 0xe0009175,\n\t0x148b4: 0xe0009b54, 0x148b5: 0xe0004eca, 0x148b6: 0xe00081fd,\n\t0x148b8: 0xe000856e,\n\t0x148bc: 0xe0009fe5, 0x148be: 0xe000828a,\n\t// Block 0x523, offset 0x148c0\n\t0x148c1: 0xe00056f4, 0x148c2: 0xe000721c,\n\t0x148c7: 0xe0008014,\n\t0x148c9: 0xe0008c61, 0x148ca: 0xe0008287, 0x148cb: 0xe00080aa,\n\t0x148cd: 0xe0009dd0, 0x148ce: 0xe0004a05, 0x148cf: 0xe00076bf,\n\t0x148d0: 0xe000a00e, 0x148d1: 0xe000a690, 0x148d2: 0xe0008f3a, 0x148d3: 0xe0005575,\n\t0x148d4: 0xe00053ae, 0x148d5: 0xe00081dc,\n\t0x148d8: 0xe0004d61, 0x148d9: 0xe0007ee9, 0x148db: 0xe0005c5a,\n\t0x148dc: 0xe000712c, 0x148dd: 0xe000544a, 0x148de: 0xe00096a9,\n\t0x148e0: 0xe000813e, 0x148e1: 0xe000709c, 0x148e3: 0xe0004609,\n\t0x148e8: 0xe0007ce8, 0x148e9: 0xe0008941,\n\t0x148ec: 0xe0007118, 0x148ed: 0xe0008d64, 0x148ee: 0xe000926c, 0x148ef: 0xe00056f8,\n\t0x148f2: 0xe00090b5,\n\t0x148f5: 0xe0008f91, 0x148f6: 0xe0007f1c, 0x148f7: 0xe0009534,\n\t0x148f8: 0xe0006ebc, 0x148fa: 0xe000828d,\n\t0x148fc: 0xe0005bb9, 0x148fd: 0xe00044d9, 0x148ff: 0xe0009f73,\n\t// Block 0x524, offset 0x14900\n\t0x14900: 0xe0007eec, 0x14901: 0xe0005f27, 0x14902: 0xe000a1bc, 0x14903: 0xe000721f,\n\t0x14904: 0xe000a5e8, 0x14905: 0xe0008a79, 0x14907: 0xe0008498,\n\t0x14908: 0xe0005e1b, 0x1490a: 0xe00065d8,\n\t0x1490c: 0xe000592e, 0x1490f: 0xe0005769,\n\t0x14910: 0xe0005d54, 0x14911: 0xe00083e2,\n\t0x14915: 0xe0007d76,\n\t0x14919: 0xe0005ee7,\n\t0x14920: 0xe0006a9b, 0x14922: 0xe000a3c5, 0x14923: 0xe00051aa,\n\t0x14926: 0xe000644c,\n\t0x14928: 0xe00097b4, 0x1492a: 0xe0006b7b,\n\t0x1492f: 0xe0004334,\n\t0x14930: 0xe0009c18, 0x14931: 0xe0004cd4, 0x14933: 0xe0006a29,\n\t0x14935: 0xe000709f,\n\t0x14938: 0xe00088aa,\n\t0x1493d: 0xe0004ef7,\n\t// Block 0x525, offset 0x14940\n\t0x14941: 0xe000807e, 0x14943: 0xe000a13b,\n\t0x14944: 0xe0004f4f, 0x14945: 0xe00091f5,\n\t0x1494a: 0xe0004c05,\n\t0x1495c: 0xe00048bc, 0x1495d: 0xe000a053, 0x1495e: 0xe0005853,\n\t0x14961: 0xe0004dbb, 0x14962: 0xe0007bdb,\n\t0x14968: 0xe00067f5, 0x1496a: 0xe000949d, 0x1496b: 0xe0006a2c,\n\t0x1496d: 0xe0004a41, 0x1496f: 0xe000542e,\n\t0x14974: 0xe0009a8a, 0x14975: 0xe0008017,\n\t0x1497d: 0xe0005578,\n\t// Block 0x526, offset 0x14980\n\t0x14982: 0xe0007623,\n\t0x14992: 0xe0009847,\n\t0x14995: 0xe000a21e,\n\t0x14999: 0xe00069ba,\n\t0x1499e: 0xe000839e,\n\t0x149a2: 0xe000794f, 0x149a3: 0xe00087ea,\n\t0x149a7: 0xe000572c,\n\t0x149ad: 0xe0008bf9,\n\t0x149b0: 0xe0005da5, 0x149b1: 0xe0009d21, 0x149b2: 0xe0005372,\n\t0x149b4: 0xe00079a3,\n\t0x149bd: 0xe0008a7d,\n\t// Block 0x527, offset 0x149c0\n\t0x149c8: 0xe0005964, 0x149c9: 0xe0008290, 0x149ca: 0xe0008bfd, 0x149cb: 0xe000984a,\n\t0x149cc: 0xe0008696, 0x149cd: 0xe00064bf, 0x149ce: 0xe0008efb,\n\t0x149d2: 0xe0008efe,\n\t0x149d6: 0xe0009bb8, 0x149d7: 0xe000a7b4,\n\t0x149e2: 0xe0009718, 0x149e3: 0xe0004378,\n\t0x149e4: 0xe00048bf, 0x149e5: 0xe00070e1,\n\t0x149e9: 0xe0006020, 0x149ea: 0xe000579b,\n\t0x149ec: 0xe0007222,\n\t0x149f2: 0xe0008c65,\n\t0x149f4: 0xe00055ab, 0x149f5: 0xe000a754, 0x149f6: 0xe0005f42, 0x149f7: 0xe000a4d1,\n\t0x149f8: 0xe0006c00, 0x149f9: 0xe0005b95,\n\t// Block 0x528, offset 0x14a00\n\t0x14a03: 0xe000798f,\n\t0x14a07: 0xe000732d,\n\t0x14a09: 0xe0009976, 0x14a0b: 0xe000971b,\n\t0x14a0d: 0xe0008ca4,\n\t0x14a10: 0xe000a4c0, 0x14a12: 0xe000700c,\n\t0x14a1c: 0xe000984d, 0x14a1e: 0xe0007d42,\n\t0x14a22: 0xe000a1dd,\n\t0x14a2a: 0xe0005bd7, 0x14a2b: 0xe0008438,\n\t0x14a2c: 0xe00087a2, 0x14a2e: 0xe000971e, 0x14a2f: 0xe000a3fa,\n\t0x14a31: 0xe00063c4, 0x14a32: 0xe00052ad,\n\t0x14a34: 0xe0005a85, 0x14a35: 0xe00044ae,\n\t// Block 0x529, offset 0x14a40\n\t0x14a40: 0xe00078ad, 0x14a41: 0xe000a8c3, 0x14a43: 0xe000746c,\n\t0x14a45: 0xe0007b1b, 0x14a47: 0xe0009451,\n\t0x14a49: 0xe0008293, 0x14a4b: 0xe0006e2c,\n\t0x14a4c: 0xe0005d27, 0x14a4d: 0xe0008fed, 0x14a4e: 0xe000781b, 0x14a4f: 0xe00058c1,\n\t0x14a50: 0xe0005d2a, 0x14a51: 0xe0005193,\n\t0x14a57: 0xe000718c,\n\t0x14a58: 0xe0008c01,\n\t0x14a5c: 0xe00067f8, 0x14a5d: 0xe0009a72,\n\t0x14a63: 0xe0008d67,\n\t0x14a64: 0xe0006c6c, 0x14a66: 0xe0004d64, 0x14a67: 0xe0009538,\n\t0x14a6a: 0xe000801a,\n\t0x14a6d: 0xe00049de,\n\t0x14a75: 0xe0009454,\n\t0x14a7f: 0xe0004faf,\n\t// Block 0x52a, offset 0x14a80\n\t0x14a87: 0xe000684c,\n\t0x14a8d: 0xe00056fc,\n\t0x14a90: 0xe0004584, 0x14a91: 0xe0009d40, 0x14a92: 0xe0006c7c,\n\t0x14a94: 0xe0009760, 0x14a97: 0xe0008326,\n\t0x14a9c: 0xe000a72b, 0x14a9e: 0xe0004f17, 0x14a9f: 0xe0008dc7,\n\t0x14ab4: 0xe0005a34, 0x14ab5: 0xe0006670, 0x14ab7: 0xe00048c2,\n\t0x14ab8: 0xe00063e0, 0x14aba: 0xe0007d0a,\n\t0x14abf: 0xe00089e9,\n\t// Block 0x52b, offset 0x14ac0\n\t0x14ac0: 0xe0004390, 0x14ac1: 0xe00091a5,\n\t0x14ac5: 0xe00044dc,\n\t0x14ac9: 0xe000a2e1, 0x14acb: 0xe0009ecb,\n\t0x14ace: 0xe0006d7c, 0x14acf: 0xe0006df5,\n\t0x14ad0: 0xe0006e48, 0x14ad2: 0xe0008f3d,\n\t0x14ad7: 0xe0004669,\n\t0x14adb: 0xe0007a7b,\n\t0x14ade: 0xe000818e,\n\t0x14ae2: 0xe00063c8,\n\t0x14ae4: 0xe0004cd7, 0x14ae5: 0xe000736d, 0x14ae6: 0xe0008c05,\n\t0x14af7: 0xe000a545,\n\t0x14af8: 0xe0004c3e,\n\t0x14afc: 0xe0006678, 0x14afe: 0xe00060a2,\n\t// Block 0x52c, offset 0x14b00\n\t0x14b00: 0xe000836a, 0x14b03: 0xe00097e0,\n\t0x14b05: 0xe0005671,\n\t0x14b0b: 0xe00085aa,\n\t0x14b11: 0xe0006ec0, 0x14b13: 0xe00089ed,\n\t0x14b15: 0xe00095d0, 0x14b16: 0xe0007225,\n\t0x14b18: 0xe0006024, 0x14b19: 0xe0004a2f, 0x14b1a: 0xe0008dca, 0x14b1b: 0xe0006f98,\n\t0x14b1c: 0xe000a0e7,\n\t0x14b33: 0xe0007c16,\n\t0x14b36: 0xe0004cda, 0x14b37: 0xe00070a2,\n\t0x14b39: 0xe0007228,\n\t// Block 0x52d, offset 0x14b40\n\t0x14b46: 0xe0008332,\n\t0x14b4c: 0xe0008c09, 0x14b4f: 0xe000a35d,\n\t0x14b51: 0xe0008a81, 0x14b52: 0xe0006769,\n\t0x14b57: 0xe000a311,\n\t0x14b5f: 0xe0009a8e,\n\t0x14b64: 0xe0006dd1, 0x14b65: 0xe0008c69,\n\t0x14b6a: 0xe0009eaa,\n\t0x14b72: 0xe0006674,\n\t0x14b78: 0xe00044df, 0x14b79: 0xe000941f, 0x14b7a: 0xe0008176,\n\t0x14b7c: 0xe00043f0, 0x14b7d: 0xe0008dcd,\n\t// Block 0x52e, offset 0x14b80\n\t0x14b84: 0xe0005afe, 0x14b86: 0xe0009423,\n\t0x14b8f: 0xe00075f9,\n\t0x14b90: 0xe0009850,\n\t0x14b95: 0xe0004946,\n\t0x14b98: 0xe0009853, 0x14b99: 0xe0009a14, 0x14b9a: 0xe000884b,\n\t0x14b9e: 0xe0007331, 0x14b9f: 0xe0005406,\n\t0x14ba0: 0xe0008c0d, 0x14ba1: 0xe00050f3, 0x14ba2: 0xe00089f1, 0x14ba3: 0xe00095d4,\n\t0x14ba4: 0xe00050f6, 0x14ba6: 0xe0004fe7, 0x14ba7: 0xe0004abd,\n\t0x14ba8: 0xe0006129, 0x14baa: 0xe0008a85, 0x14bab: 0xe0006e30,\n\t0x14bac: 0xe00056ad, 0x14bae: 0xe0004868, 0x14baf: 0xe0009297,\n\t// Block 0x52f, offset 0x14bc0\n\t0x14bc8: 0xe0007bab, 0x14bc9: 0xe000746f, 0x14bca: 0xe0005994, 0x14bcb: 0xe0004a08,\n\t0x14bcd: 0xe000557b,\n\t0x14bd4: 0xe0007627, 0x14bd7: 0xe0008cda,\n\t0x14bdb: 0xe0005376,\n\t0x14bdc: 0xe000a02c, 0x14bdd: 0xe0008056,\n\t0x14be4: 0xe0006c94,\n\t0x14beb: 0xe0009763,\n\t0x14bec: 0xe0009766, 0x14bee: 0xe0008296,\n\t0x14bf0: 0xe000a618,\n\t0x14bf5: 0xe0004534,\n\t0x14bfc: 0xe0009a76, 0x14bfe: 0xe0008e41,\n\t// Block 0x530, offset 0x14c00\n\t0x14c0a: 0xe0006480,\n\t0x14c0c: 0xe000466d,\n\t0x14c14: 0xe0007f96, 0x14c16: 0xe000717d, 0x14c17: 0xe000885b,\n\t0x14c1a: 0xe0009856, 0x14c1b: 0xe0006318,\n\t0x14c1f: 0xe0006d34,\n\t0x14c21: 0xe000865c, 0x14c23: 0xe000a3c9,\n\t0x14c24: 0xe000a6b4, 0x14c27: 0xe0004473,\n\t0x14c2c: 0xe000a48a, 0x14c2d: 0xe0009179,\n\t0x14c30: 0xe0008572,\n\t// Block 0x531, offset 0x14c40\n\t0x14c43: 0xe0008de5,\n\t0x14c47: 0xe0006f00,\n\t0x14c48: 0xe00059a8, 0x14c4a: 0xe0007ceb, 0x14c4b: 0xe0005e8b,\n\t0x14c4c: 0xe0005e23,\n\t0x14c51: 0xe0008945,\n\t0x14c56: 0xe0007cee, 0x14c57: 0xe00044aa,\n\t0x14c58: 0xe00087ee,\n\t0x14c5c: 0xe00054ae, 0x14c5d: 0xe0005e8f, 0x14c5e: 0xe0007f9a, 0x14c5f: 0xe0006c2c,\n\t0x14c61: 0xe0004735, 0x14c62: 0xe0009f30,\n\t0x14c64: 0xe0005c0c, 0x14c66: 0xe00097ec,\n\t0x14c68: 0xe000937b,\n\t0x14c76: 0xe0009219,\n\t0x14c7b: 0xe0005da9,\n\t// Block 0x532, offset 0x14c80\n\t0x14c83: 0xe00052cc,\n\t0x14c84: 0xe000a723,\n\t0x14c8f: 0xe0008fc5,\n\t0x14c90: 0xe0005bda, 0x14c93: 0xe00054fd,\n\t0x14c94: 0xe000758d,\n\t0x14c98: 0xe0008e45, 0x14c99: 0xe0005750,\n\t0x14ca5: 0xe0006ec4,\n\t0x14caa: 0xe0005adc, 0x14cab: 0xe00089f5,\n\t0x14cb5: 0xe00095b4, 0x14cb6: 0xe000a61c,\n\t0x14cb8: 0xe0009b30, 0x14cba: 0xe00054b2,\n\t// Block 0x533, offset 0x14cc0\n\t0x14cc2: 0xe000a7f6,\n\t0x14cc4: 0xe0008f01,\n\t0x14cca: 0xe000a5ac,\n\t0x14ccc: 0xe0006a9f,\n\t0x14cd1: 0xe0004338, 0x14cd2: 0xe000433c,\n\t0x14cd5: 0xe00091f9,\n\t0x14cdb: 0xe0004b2d,\n\t0x14cde: 0xe0005833,\n\t0x14ce0: 0xe0006bd4, 0x14ce2: 0xe0005931, 0x14ce3: 0xe0009f33,\n\t0x14cea: 0xe0005adf,\n\t0x14cf0: 0xe000784d, 0x14cf1: 0xe000937f, 0x14cf2: 0xe00078d9,\n\t0x14cf5: 0xe0004ac1, 0x14cf7: 0xe0006fc0,\n\t0x14cfc: 0xe000577e, 0x14cfd: 0xe00092df, 0x14cfe: 0xe00057df, 0x14cff: 0xe000929b,\n\t// Block 0x534, offset 0x14d00\n\t0x14d37: 0xe00087a6,\n\t// Block 0x535, offset 0x14d40\n\t0x14d40: 0xe00061bd, 0x14d43: 0xe0006f7c,\n\t0x14d48: 0xe000a0a7, 0x14d49: 0xe0009e50, 0x14d4a: 0xe0006c30, 0x14d4b: 0xe0004476,\n\t0x14d4e: 0xe0004bc2, 0x14d4f: 0xe000832a,\n\t0x14d51: 0xe000a083, 0x14d52: 0xe000a087, 0x14d53: 0xe0004284,\n\t0x14d54: 0xe0006280,\n\t0x14d58: 0xe0004394,\n\t0x14d5f: 0xe0006a2f,\n\t0x14d63: 0xe000420c,\n\t0x14d64: 0xe000a117, 0x14d65: 0xe000653c,\n\t0x14d68: 0xe0004ecd, 0x14d69: 0xe00062a0, 0x14d6b: 0xe000494a,\n\t0x14d6c: 0xe000586b, 0x14d6d: 0xe0005904,\n\t0x14d71: 0xe0007acb,\n\t0x14d76: 0xe0009427,\n\t0x14d79: 0xe0007993, 0x14d7b: 0xe0007aef,\n\t0x14d7c: 0xe00076a7, 0x14d7d: 0xe000a4fd, 0x14d7e: 0xe0007a0b,\n\t// Block 0x536, offset 0x14d80\n\t0x14d83: 0xe00045d5,\n\t0x14d87: 0xe00076e7,\n\t0x14d88: 0xe0008200, 0x14d8a: 0xe000a634, 0x14d8b: 0xe0004655,\n\t0x14d8c: 0xe00057e3, 0x14d8d: 0xe00055ae,\n\t0x14d93: 0xe000448b,\n\t0x14d94: 0xe000a11b, 0x14d95: 0xe0004e57, 0x14d96: 0xe0009cc6,\n\t0x14d9a: 0xe0004efa,\n\t0x14d9c: 0xe0004a91, 0x14d9e: 0xe000a103,\n\t0x14da0: 0xe0004e8e, 0x14da1: 0xe000953c, 0x14da2: 0xe00065a4,\n\t0x14da5: 0xe00053ba,\n\t// Block 0x537, offset 0x14dc0\n\t0x14ddc: 0xe00067fb,\n\t0x14de1: 0xe0009540,\n\t0x14de4: 0xe0009a17,\n\t0x14de8: 0xe00077dc, 0x14dea: 0xe0009d44,\n\t0x14dee: 0xe0007e19, 0x14def: 0xe00090dc,\n\t0x14df2: 0xe0006450,\n\t0x14dfb: 0xe0008d6a,\n\t0x14dff: 0xe00075cf,\n\t// Block 0x538, offset 0x14e00\n\t0x14e00: 0xe0009acc, 0x14e02: 0xe0009f76,\n\t0x14e04: 0xe00067fe,\n\t0x14e0b: 0xe0005c0f,\n\t0x14e0c: 0xe0005f50, 0x14e0d: 0xe00043f4,\n\t0x14e10: 0xe000a08b,\n\t0x14e18: 0xe000a3e1, 0x14e1b: 0xe0009e53,\n\t0x14e1c: 0xe000a11f, 0x14e1d: 0xe0006f80, 0x14e1e: 0xe00073e2, 0x14e1f: 0xe00094d0,\n\t0x14e21: 0xe00056e5, 0x14e22: 0xe0008142, 0x14e23: 0xe000917d,\n\t0x14e24: 0xe0008ca7,\n\t0x14e2a: 0xe00064c2,\n\t0x14e2c: 0xe0009895,\n\t0x14e30: 0xe00083ba, 0x14e32: 0xe000727c, 0x14e33: 0xe0009181,\n\t0x14e34: 0xe0006a32, 0x14e35: 0xe0005cdc, 0x14e36: 0xe000557e, 0x14e37: 0xe000a0eb,\n\t0x14e38: 0xe0005c68,\n\t0x14e3c: 0xe00088e6, 0x14e3d: 0xe00078b1,\n\t// Block 0x539, offset 0x14e40\n\t0x14e44: 0xe0008cdd, 0x14e45: 0xe000801d, 0x14e46: 0xe0005ca0,\n\t0x14e4a: 0xe00054e8, 0x14e4b: 0xe000722b,\n\t0x14e4d: 0xe000a694, 0x14e4e: 0xe00047db,\n\t0x14e51: 0xe0005168,\n\t0x14e54: 0xe00045c9, 0x14e55: 0xe00080ae, 0x14e57: 0xe0007e9b,\n\t0x14e58: 0xe0007772, 0x14e59: 0xe0004f3f, 0x14e5b: 0xe0008caa,\n\t0x14e5c: 0xe00087aa,\n\t0x14e63: 0xe0005d75,\n\t0x14e64: 0xe0009c98, 0x14e67: 0xe000722e,\n\t0x14e68: 0xe0007231, 0x14e69: 0xe0007cf1, 0x14e6a: 0xe000a265,\n\t0x14e70: 0xe00073ba, 0x14e71: 0xe000836e, 0x14e73: 0xe000a866,\n\t0x14e74: 0xe0005b5a, 0x14e76: 0xe00084bf, 0x14e77: 0xe0005a88,\n\t0x14e78: 0xe0005a8b, 0x14e79: 0xe0009898, 0x14e7b: 0xe00094d4,\n\t0x14e7c: 0xe0008fc9,\n\t// Block 0x53a, offset 0x14e80\n\t0x14e80: 0xe000869a, 0x14e81: 0xe000767b,\n\t0x14e84: 0xe00080e2, 0x14e85: 0xe00075d2, 0x14e86: 0xe000921d, 0x14e87: 0xe000486b,\n\t0x14e89: 0xe00099e7, 0x14e8b: 0xe0008f95,\n\t0x14e8c: 0xe000861d, 0x14e8d: 0xe0007d7a, 0x14e8e: 0xe00088ad,\n\t0x14e95: 0xe0008d6d, 0x14e96: 0xe0007234,\n\t0x14e99: 0xe00075a1, 0x14e9a: 0xe0004ac5, 0x14e9b: 0xe0009859,\n\t0x14e9c: 0xe0008706, 0x14e9d: 0xe0007d9e, 0x14e9e: 0xe00047ff,\n\t0x14ea2: 0xe0005d2d, 0x14ea3: 0xe00051c8,\n\t0x14ea8: 0xe0008020, 0x14ea9: 0xe0008023, 0x14eaa: 0xe0006f3c,\n\t0x14eaf: 0xe00061c1,\n\t0x14eb0: 0xe00068a4, 0x14eb2: 0xe00080b2,\n\t0x14eb6: 0xe0005a38, 0x14eb7: 0xe0005b77,\n\t0x14eb9: 0xe0006304, 0x14eba: 0xe0006100, 0x14ebb: 0xe00089f9,\n\t// Block 0x53b, offset 0x14ec0\n\t0x14ec0: 0xe0007237,\n\t0x14ec4: 0xe00070e4, 0x14ec5: 0xe0006c98, 0x14ec6: 0xe0008c11, 0x14ec7: 0xe0009185,\n\t0x14ec8: 0xe0009d8a, 0x14ec9: 0xe0005f45,\n\t0x14ecc: 0xe0008f40, 0x14ecd: 0xe0004a51, 0x14ece: 0xe0006c9c, 0x14ecf: 0xe0006a35,\n\t0x14ed1: 0xe0008aed, 0x14ed3: 0xe0007c19,\n\t0x14ed4: 0xe0008f43, 0x14ed6: 0xe0005dc1,\n\t0x14ed9: 0xe0007baf,\n\t0x14edc: 0xe0006d18, 0x14ede: 0xe000a011,\n\t0x14ee3: 0xe00080ca,\n\t0x14ee6: 0xe0006aa3, 0x14ee7: 0xe0006174,\n\t0x14eea: 0xe00083d6,\n\t0x14ef0: 0xe0006c04, 0x14ef2: 0xe0005ab8,\n\t0x14ef8: 0xe0009d8d, 0x14ef9: 0xe00065a8,\n\t0x14efd: 0xe0008cad,\n\t// Block 0x53c, offset 0x14f00\n\t0x14f02: 0xe000594c,\n\t0x14f04: 0xe0007775, 0x14f06: 0xe00096ca,\n\t0x14f08: 0xe0005a3c, 0x14f09: 0xe00077ae,\n\t0x14f0c: 0xe00066b8,\n\t0x14f11: 0xe000967c,\n\t0x14f16: 0xe0008c15,\n\t0x14f1a: 0xe0008c6d, 0x14f1b: 0xe0008a89,\n\t0x14f1c: 0xe0008c19, 0x14f1d: 0xe000958c, 0x14f1e: 0xe00069bd,\n\t0x14f20: 0xe00048c5, 0x14f21: 0xe0006220, 0x14f22: 0xe0005fc4,\n\t0x14f26: 0xe0008a8d,\n\t0x14f28: 0xe0007b43, 0x14f29: 0xe000a285,\n\t0x14f2d: 0xe0008522,\n\t0x14f33: 0xe0004fb3,\n\t0x14f34: 0xe000a574, 0x14f35: 0xe00052ee, 0x14f37: 0xe0008526,\n\t0x14f3a: 0xe0005eaf,\n\t0x14f3c: 0xe00053be,\n\t// Block 0x53d, offset 0x14f40\n\t0x14f40: 0xe00055b1, 0x14f41: 0xe0009f7f,\n\t0x14f44: 0xe0009ece, 0x14f45: 0xe0007753,\n\t0x14f4b: 0xe000a3fd,\n\t0x14f4d: 0xe000767f, 0x14f4f: 0xe00049b2,\n\t0x14f58: 0xe0009769,\n\t0x14f60: 0xe0004d8b, 0x14f63: 0xe00082e7,\n\t0x14f66: 0xe000989b,\n\t0x14f68: 0xe00042d8, 0x14f6b: 0xe0004d8f,\n\t0x14f6c: 0xe0004550, 0x14f6d: 0xe0009dd4,\n\t0x14f71: 0xe00055b4,\n\t0x14f74: 0xe0006a38,\n\t0x14f78: 0xe0009fd1, 0x14f79: 0xe0004a55,\n\t// Block 0x53e, offset 0x14f80\n\t0x14f81: 0xe000443c, 0x14f83: 0xe00053c2,\n\t0x14f86: 0xe0009544,\n\t0x14f8b: 0xe00081df,\n\t0x14f8d: 0xe0006918,\n\t0x14f90: 0xe0004398, 0x14f93: 0xe000a08f,\n\t0x14f99: 0xe0008203,\n\t0x14f9c: 0xe0005581, 0x14f9d: 0xe0004d67, 0x14f9e: 0xe0007d46,\n\t0x14fa0: 0xe0009fd5, 0x14fa1: 0xe0008206,\n\t0x14fad: 0xe0004d6a, 0x14fae: 0xe0004d6d,\n\t0x14fb1: 0xe0006f9c, 0x14fb2: 0xe0008ce0, 0x14fb3: 0xe00083be,\n\t0x14fb5: 0xe00080ce, 0x14fb6: 0xe00070a5,\n\t0x14fba: 0xe0007bdf, 0x14fbb: 0xe00080b6,\n\t0x14fbf: 0xe000a222,\n\t// Block 0x53f, offset 0x14fc0\n\t0x14fc0: 0xe000a48d, 0x14fc1: 0xe000a325, 0x14fc2: 0xe0008c1d, 0x14fc3: 0xe0004739,\n\t0x14fc5: 0xe000a177, 0x14fc6: 0xe0007335,\n\t0x14fc8: 0xe000723a, 0x14fca: 0xe0008082,\n\t0x14fcc: 0xe0007164, 0x14fcd: 0xe0004efd, 0x14fce: 0xe000516b, 0x14fcf: 0xe000a18b,\n\t0x14fd0: 0xe0007c1c, 0x14fd1: 0xe0007e1d, 0x14fd2: 0xe0006380, 0x14fd3: 0xe0005611,\n\t0x14fd6: 0xe00063a4, 0x14fd7: 0xe0009cf7,\n\t0x14fd8: 0xe0005a40,\n\t0x14fde: 0xe00076c3,\n\t0x14fe1: 0xe000a98c, 0x14fe3: 0xe0007539,\n\t0x14fe6: 0xe000a1e0,\n\t0x14feb: 0xe000684f,\n\t0x14fed: 0xe00056d0, 0x14fee: 0xe000a709,\n\t0x14ff0: 0xe000a361,\n\t0x14ff7: 0xe000770b,\n\t0x14ff8: 0xe000473d, 0x14ff9: 0xe0009c95, 0x14ffb: 0xe0006a7b,\n\t0x14fff: 0xe000865f,\n\t// Block 0x540, offset 0x15000\n\t0x15002: 0xe0005b98,\n\t0x15006: 0xe0004a0b, 0x15007: 0xe0009952,\n\t0x15008: 0xe000477d, 0x1500b: 0xe0007472,\n\t0x1500c: 0xe0008cb0, 0x1500d: 0xe00077cc, 0x1500e: 0xe000762b,\n\t0x15012: 0xe0007da2, 0x15013: 0xe0008a91,\n\t0x15014: 0xe0007683,\n\t0x15018: 0xe0008146, 0x15019: 0xe0006d38, 0x1501a: 0xe00089fd,\n\t0x1501e: 0xe0005c4e,\n\t0x15025: 0xe000a490, 0x15026: 0xe000976c, 0x15027: 0xe000486e,\n\t0x1502b: 0xe0008a01,\n\t0x1502f: 0xe000a2e5,\n\t0x15030: 0xe0006aa7, 0x15031: 0xe0005ae2, 0x15033: 0xe0006fc4,\n\t0x15034: 0xe0004ac9,\n\t// Block 0x541, offset 0x15040\n\t0x15068: 0xe0009f54,\n\t0x1506d: 0xe0008b1d, 0x1506f: 0xe0006c80,\n\t0x15071: 0xe0009c1b, 0x15072: 0xe00059d4,\n\t0x15076: 0xe0004d70,\n\t0x1507a: 0xe00078dd,\n\t0x1507c: 0xe000727f, 0x1507f: 0xe0006574,\n\t// Block 0x542, offset 0x15080\n\t0x15082: 0xe0005bdd,\n\t0x15084: 0xe0009f0f, 0x15087: 0xe0009f0c,\n\t0x15089: 0xe0005be0, 0x1508b: 0xe0007555,\n\t0x1509b: 0xe00069c0,\n\t0x1509c: 0xe0006518, 0x1509f: 0xe00074a9,\n\t0x150a1: 0xe0007130, 0x150a2: 0xe00050f9,\n\t0x150a6: 0xe0008a95, 0x150a7: 0xe0007134,\n\t0x150aa: 0xe00085ae, 0x150ab: 0xe000790c,\n\t0x150ad: 0xe0009a2e, 0x150ae: 0xe00083c2, 0x150af: 0xe0006384,\n\t0x150b1: 0xe0007138,\n\t0x150b4: 0xe000849b,\n\t0x150bb: 0xe00095d8,\n\t0x150bc: 0xe0006b7e, 0x150bd: 0xe0009ead, 0x150be: 0xe00074ad,\n\t// Block 0x543, offset 0x150c0\n\t0x150c3: 0xe0004c08,\n\t0x150c9: 0xe000a226, 0x150ca: 0xe00078b5,\n\t0x150cc: 0xe000849e,\n\t0x150d0: 0xe00092e3, 0x150d2: 0xe00052b7, 0x150d3: 0xe00075d5,\n\t0x150d4: 0xe0009ed1, 0x150d5: 0xe0008fcd,\n\t0x150d8: 0xe00079d5, 0x150da: 0xe000a76f,\n\t0x150de: 0xe0008a05,\n\t0x150e0: 0xe0006654,\n\t0x150e6: 0xe00087f2, 0x150e7: 0xe0008209,\n\t0x150e8: 0xe0004a95, 0x150ea: 0xe00051d8,\n\t0x150ec: 0xe000a4c3, 0x150ee: 0xe00095dc,\n\t0x150f0: 0xe0008a99, 0x150f1: 0xe000a7b7, 0x150f3: 0xe00054b6,\n\t0x150f9: 0xe00054ba,\n\t0x150fc: 0xe000a979, 0x150fd: 0xe0004e91,\n\t// Block 0x544, offset 0x15100\n\t0x15102: 0xe0007d4a,\n\t0x15105: 0xe0005e6b,\n\t0x15108: 0xe0007282, 0x15109: 0xe0004f8b, 0x1510b: 0xe0004e6a,\n\t0x1510c: 0xe00092e7, 0x1510d: 0xe0006ec8,\n\t0x15110: 0xe0008456, 0x15111: 0xe00050fc, 0x15112: 0xe0007eef,\n\t0x15114: 0xe0007d7e, 0x15115: 0xe00055b7, 0x15117: 0xe000a22a,\n\t0x1511c: 0xe0007b1f, 0x1511e: 0xe0009383,\n\t// Block 0x545, offset 0x15140\n\t0x15156: 0xe000723d, 0x15157: 0xe0004f00,\n\t0x15158: 0xe0004ba2, 0x15159: 0xe000a22e,\n\t0x1515d: 0xe0009fad,\n\t0x15163: 0xe000770f,\n\t0x15165: 0xe00066fd,\n\t0x15168: 0xe000a3cd,\n\t0x1516c: 0xe0005dec, 0x1516d: 0xe00078fa, 0x1516e: 0xe0009f58,\n\t0x15170: 0xe0008961, 0x15171: 0xe0009acf, 0x15173: 0xe00099ea,\n\t0x15174: 0xe0007339,\n\t0x15179: 0xe0008576,\n\t// Block 0x546, offset 0x15180\n\t0x15181: 0xe0006308,\n\t0x15184: 0xe0009c2d,\n\t0x15188: 0xe0004d73, 0x15189: 0xe000478d,\n\t0x1518f: 0xe0004509,\n\t0x15190: 0xe0008f04, 0x15191: 0xe0005280, 0x15192: 0xe0004cdd,\n\t0x15195: 0xe00041b4,\n\t0x15198: 0xe0009c30, 0x15199: 0xe0006801, 0x1519b: 0xe0006bb4,\n\t0x1519c: 0xe0009fd9, 0x1519d: 0xe0009ad2, 0x1519e: 0xe0009af0, 0x1519f: 0xe0006b81,\n\t0x151a2: 0xe00065f4,\n\t0x151a8: 0xe0007355, 0x151aa: 0xe000753d,\n\t0x151ad: 0xe000a1bf, 0x151ae: 0xe000631c,\n\t0x151b1: 0xe000579f,\n\t0x151b8: 0xe0009a92, 0x151bb: 0xe000a0ab,\n\t0x151bd: 0xe000a315, 0x151bf: 0xe0008f99,\n\t// Block 0x547, offset 0x151c0\n\t0x151c1: 0xe0006abf, 0x151c2: 0xe0007014, 0x151c3: 0xe00077b1,\n\t0x151c4: 0xe0005b22, 0x151c5: 0xe000989e,\n\t0x151c8: 0xe0006658, 0x151cb: 0xe000587e,\n\t0x151cd: 0xe0004a32, 0x151ce: 0xe00050ff, 0x151cf: 0xe0005102,\n\t0x151d1: 0xe0006a3b,\n\t0x151d6: 0xe0006186,\n\t0x151d8: 0xe00097f0, 0x151d9: 0xe0009dd8, 0x151db: 0xe0006a3e,\n\t0x151eb: 0xe0004538,\n\t0x151ed: 0xe0009005,\n\t0x151f0: 0xe0005730,\n\t0x151f5: 0xe000817a, 0x151f6: 0xe000985c, 0x151f7: 0xe00070a8,\n\t0x151f8: 0xe0006f04,\n\t0x151fe: 0xe0005781,\n\t// Block 0x548, offset 0x15200\n\t0x15200: 0xe0005f54, 0x15201: 0xe0007cf4, 0x15202: 0xe0009387, 0x15203: 0xe0009f12,\n\t0x15204: 0xe00097f4, 0x15205: 0xe0004ce0,\n\t0x1520a: 0xe000a586,\n\t0x1520c: 0xe00072c9, 0x1520d: 0xe000a757, 0x1520e: 0xe0005dad, 0x1520f: 0xe00086de,\n\t0x15212: 0xe0009b90,\n\t0x15215: 0xe0004c0b, 0x15217: 0xe000a269,\n\t0x15218: 0xe0005784, 0x1521a: 0xe0004741, 0x1521b: 0xe00079fb,\n\t0x1521f: 0xe0009979,\n\t0x15222: 0xe0005907,\n\t0x15224: 0xe00078e1, 0x15225: 0xe0005105,\n\t0x15229: 0xe000a5ec, 0x1522a: 0xe000590a,\n\t// Block 0x549, offset 0x15240\n\t0x15268: 0xe0004962, 0x1526a: 0xe000820c,\n\t0x15270: 0xe0009cb3,\n\t0x15278: 0xe000a1c2, 0x15279: 0xe0004c41,\n\t0x1527c: 0xe00045d9, 0x1527f: 0xe00065f8,\n\t// Block 0x54a, offset 0x15280\n\t0x15280: 0xe0006a41,\n\t0x15286: 0xe0006320,\n\t0x1528f: 0xe0005c24,\n\t0x15291: 0xe00097a4, 0x15293: 0xe0007240,\n\t0x15294: 0xe00096ac, 0x15296: 0xe0004acd, 0x15297: 0xe0005ae5,\n\t0x15298: 0xe0004871,\n\t0x1529f: 0xe0009f36,\n\t0x152a1: 0xe000494e, 0x152a3: 0xe0006484,\n\t0x152a5: 0xe0007af3, 0x152a6: 0xe00060a5,\n\t0x152ab: 0xe000976f,\n\t0x152ad: 0xe0008662, 0x152ae: 0xe00063cc,\n\t0x152b0: 0xe00096cd, 0x152b2: 0xe0009f82,\n\t0x152b4: 0xe000691c,\n\t0x152b9: 0xe000a869, 0x152ba: 0xe0004af5, 0x152bb: 0xe0004802,\n\t0x152bd: 0xe0008e89,\n\t// Block 0x54b, offset 0x152c0\n\t0x152c2: 0xe0006aab,\n\t0x152c5: 0xe0006944, 0x152c6: 0xe0007170,\n\t0x152ca: 0xe0007359, 0x152cb: 0xe0008a9d,\n\t0x152cd: 0xe000a4c6,\n\t0x152d0: 0xe000516e, 0x152d2: 0xe00091a9,\n\t0x152d6: 0xe0006c70,\n\t0x152d8: 0xe0005e93, 0x152d9: 0xe00073ea, 0x152da: 0xe0007243,\n\t0x152df: 0xe000a620,\n\t0x152e2: 0xe0006aaf, 0x152e3: 0xe0005a00,\n\t0x152e7: 0xe0005bbc,\n\t0x152e8: 0xe000a549, 0x152e9: 0xe000a295, 0x152ea: 0xe0009caa,\n\t0x152ee: 0xe0004d76, 0x152ef: 0xe000942b,\n\t0x152f1: 0xe00080d6, 0x152f2: 0xe00045dd,\n\t0x152fa: 0xe0006d3c,\n\t0x152fc: 0xe0004ea0,\n\t// Block 0x54c, offset 0x15300\n\t0x15301: 0xe0004b8a, 0x15302: 0xe000a4e9, 0x15303: 0xe00063d0,\n\t0x15304: 0xe00064f0, 0x15305: 0xe0005f2a,\n\t0x15308: 0xe00070e7, 0x1530b: 0xe00098a1,\n\t0x1530d: 0xe0005eff, 0x1530e: 0xe00058d9, 0x1530f: 0xe00081e2,\n\t0x15311: 0xe0005d57,\n\t0x15314: 0xe0005def,\n\t0x15318: 0xe0007b23, 0x1531a: 0xe00078fd,\n\t0x15326: 0xe0006bb7,\n\t0x1532f: 0xe0005abb,\n\t0x15334: 0xe0006488,\n\t// Block 0x54d, offset 0x15340\n\t0x15340: 0xe0009af3, 0x15343: 0xe0009e34,\n\t0x1534e: 0xe0008af1,\n\t0x15351: 0xe0009eb0, 0x15352: 0xe0006852, 0x15353: 0xe0008665,\n\t0x15357: 0xe00056b1,\n\t0x1535f: 0xe0007687,\n\t0x15367: 0xe0008ce3,\n\t0x15368: 0xe00090df, 0x1536a: 0xe00082ea, 0x1536b: 0xe0004c0e,\n\t0x1536d: 0xe000a1e3, 0x1536e: 0xe0006ecc,\n\t0x15379: 0xe00070ea,\n\t// Block 0x54e, offset 0x15380\n\t0x15381: 0xe0004791,\n\t0x15386: 0xe0009ed4,\n\t0x15389: 0xe0005d30, 0x1538a: 0xe0006bba,\n\t0x15394: 0xe0009a1a, 0x15396: 0xe0009680,\n\t0x1539b: 0xe0008dd0,\n\t0x153a2: 0xe0007c4f,\n\t0x153a4: 0xe0004922,\n\t0x153a8: 0xe0004745,\n\t0x153b7: 0xe0008ce6,\n\t// Block 0x54f, offset 0x153c0\n\t0x153c8: 0xe0008b45, 0x153ca: 0xe00059ac,\n\t0x153cc: 0xe00098a4, 0x153cd: 0xe000985f,\n\t0x153d0: 0xe000762f, 0x153d2: 0xe0006701, 0x153d3: 0xe0006d49,\n\t0x153d5: 0xe000a014,\n\t0x153e4: 0xe0006bbd, 0x153e5: 0xe000a5f0,\n\t0x153ed: 0xe0005171, 0x153ee: 0xe0007d4e, 0x153ef: 0xe0007851,\n\t0x153f1: 0xe00059b0, 0x153f2: 0xe0007ca9,\n\t0x153f5: 0xe00062a4,\n\t0x153f9: 0xe0004631, 0x153fa: 0xe00070ed, 0x153fb: 0xe0005e6f,\n\t0x153fe: 0xe0009f39,\n\t// Block 0x550, offset 0x15400\n\t0x15407: 0xe00043f8,\n\t0x15409: 0xe0006608,\n\t0x1540f: 0xe0007591,\n\t0x15412: 0xe0008fd1, 0x15413: 0xe0006f08,\n\t0x15417: 0xe0005d79,\n\t0x15420: 0xe000a70c, 0x15423: 0xe0008aa1,\n\t0x15427: 0xe0005a8e,\n\t0x15438: 0xe0005ae8, 0x1543b: 0xe0006f0c,\n\t// Block 0x551, offset 0x15440\n\t0x15465: 0xe0008d70, 0x15466: 0xe00083aa, 0x15467: 0xe0006804,\n\t0x15469: 0xe0004ce3,\n\t0x15473: 0xe000676d,\n\t0x15474: 0xe0006028, 0x15476: 0xe0007a7f,\n\t// Block 0x552, offset 0x15480\n\t0x15483: 0xe00045e1,\n\t0x15486: 0xe0009205, 0x15487: 0xe00066bb,\n\t0x15488: 0xe0007697, 0x15489: 0xe00075d8,\n\t0x1548c: 0xe0006785,\n\t0x15492: 0xe0005a74,\n\t0x15495: 0xe0009af6,\n\t0x15498: 0xe00065fc, 0x15499: 0xe0009a1d, 0x1549b: 0xe000814a,\n\t0x1549f: 0xe0009a20,\n\t0x154a3: 0xe00048c8,\n\t0x154a6: 0xe000773f,\n\t0x154a8: 0xe0007723,\n\t0x154b0: 0xe0004af9,\n\t0x154b6: 0xe00076c7,\n\t0x154bb: 0xe000a535,\n\t// Block 0x553, offset 0x154c0\n\t0x154c1: 0xe0004c44, 0x154c2: 0xe000a86c,\n\t0x154c4: 0xe0009a23,\n\t0x154d1: 0xe000460d, 0x154d3: 0xe00063e4,\n\t0x154d4: 0xe0008fd5,\n\t0x154dd: 0xe00075db, 0x154de: 0xe00075fc,\n\t0x154e0: 0xe00048e6, 0x154e1: 0xe0006177,\n\t0x154e9: 0xe0006725,\n\t0x154ec: 0xe0006938, 0x154ef: 0xe0009fdd,\n\t0x154f0: 0xe0008dd3, 0x154f2: 0xe000869e,\n\t0x154f7: 0xe000817e,\n\t0x154fb: 0xe00098a7,\n\t0x154fe: 0xe0004952,\n\t// Block 0x554, offset 0x15500\n\t0x15504: 0xe0009690,\n\t0x15509: 0xe000735d,\n\t0x15516: 0xe00098aa,\n\t0x1551a: 0xe000765b,\n\t0x15521: 0xe00042f0,\n\t0x15524: 0xe0004956,\n\t0x15529: 0xe00060c0,\n\t0x1552c: 0xe000942f, 0x1552f: 0xe00077e8,\n\t0x15534: 0xe000a03f, 0x15535: 0xe00098ad,\n\t0x15538: 0xe0007855, 0x15539: 0xe0005c5d, 0x1553b: 0xe0004972,\n\t0x1553f: 0xe0008668,\n\t// Block 0x555, offset 0x15540\n\t0x15541: 0xe00084e2, 0x15542: 0xe0007f1f,\n\t0x15544: 0xe00047de, 0x15547: 0xe0004d79,\n\t0x15553: 0xe000866b,\n\t0x15556: 0xe0007c52, 0x15557: 0xe0004ce6,\n\t0x15559: 0xe00090e2,\n\t0x15566: 0xe0009772,\n\t0x15569: 0xe0006614, 0x1556a: 0xe00077fc, 0x1556b: 0xe00072cd,\n\t0x15570: 0xe0007abb, 0x15571: 0xe00048cb, 0x15572: 0xe000997c, 0x15573: 0xe000a0af,\n\t0x15578: 0xe000a877, 0x15579: 0xe00083fe, 0x1557a: 0xe0005abe,\n\t0x1557d: 0xe000a057, 0x1557f: 0xe00065bc,\n\t// Block 0x556, offset 0x15580\n\t0x15587: 0xe0008aa5,\n\t0x1558f: 0xe0006104,\n\t0x15595: 0xe0005aeb,\n\t0x1559a: 0xe00077ec, 0x1559b: 0xe0004ad1,\n\t0x1559c: 0xe0004d7c, 0x1559e: 0xe00057c7,\n\t// Block 0x557, offset 0x155c0\n\t0x155f5: 0xe0005ac1, 0x155f7: 0xe0005a78,\n\t0x155f9: 0xe000a0ef, 0x155fb: 0xe000437c,\n\t0x155fd: 0xe0007af7, 0x155ff: 0xe0005b02,\n\t// Block 0x558, offset 0x15600\n\t0x15600: 0xe0008059, 0x15602: 0xe0004e94,\n\t0x15604: 0xe00098b0,\n\t0x1560b: 0xe000624d,\n\t0x1560c: 0xe000805c, 0x1560f: 0xe0004f1f,\n\t0x15611: 0xe0007c55, 0x15612: 0xe0005108, 0x15613: 0xe0005b06,\n\t0x15617: 0xe000590d,\n\t0x1561d: 0xe0006b84, 0x1561e: 0xe00087f6, 0x1561f: 0xe0005d7d,\n\t0x15624: 0xe00098b3, 0x15625: 0xe0005f58,\n\t0x15629: 0xe0006855, 0x1562a: 0xe0005fdc,\n\t0x1562f: 0xe0004da3,\n\t0x15634: 0xe0004d93, 0x15635: 0xe0005fc8,\n\t0x1563b: 0xe0005df2,\n\t0x1563d: 0xe0005e01, 0x1563e: 0xe000a848, 0x1563f: 0xe0005e04,\n\t// Block 0x559, offset 0x15640\n\t0x15643: 0xe000a698,\n\t0x15645: 0xe0004ffb,\n\t0x1564c: 0xe000a72f, 0x1564d: 0xe0006dd4, 0x1564e: 0xe0005910, 0x1564f: 0xe0008b21,\n\t0x15650: 0xe0005d5a, 0x15651: 0xe000a89b,\n\t0x15654: 0xe0004588, 0x15656: 0xe0005174,\n\t0x15658: 0xe000618d, 0x1565a: 0xe000468d, 0x1565b: 0xe00054eb,\n\t0x1565c: 0xe000990e, 0x1565d: 0xe00082ed, 0x1565e: 0xe0008af5,\n\t0x15660: 0xe000a990,\n\t0x15665: 0xe0004795,\n\t0x15668: 0xe0005476,\n\t0x1566e: 0xe0005432, 0x1566f: 0xe0007713,\n\t0x15672: 0xe000938b,\n\t0x15674: 0xe0006223, 0x15675: 0xe0005436, 0x15676: 0xe0007b27, 0x15677: 0xe00055e9,\n\t0x1567a: 0xe00068ec, 0x1567b: 0xe0006920,\n\t0x1567c: 0xe00066be, 0x1567d: 0xe00062a8, 0x1567f: 0xe0008182,\n\t// Block 0x55a, offset 0x15680\n\t0x15680: 0xe00098f6, 0x15682: 0xe0008dd6,\n\t0x15684: 0xe0008f46, 0x15687: 0xe0007cac,\n\t0x15688: 0xe000660c, 0x15689: 0xe0009af9, 0x1568a: 0xe00065c0,\n\t0x1568e: 0xe0008c21,\n\t0x15690: 0xe000522f, 0x15693: 0xe0004874,\n\t0x15697: 0xe00055ba,\n\t0x15699: 0xe0006a44,\n\t0x156a0: 0xe0006dd7, 0x156a2: 0xe00068f0,\n\t0x156ab: 0xe0006e4c,\n\t0x156ac: 0xe00082f0, 0x156af: 0xe0007cf7,\n\t0x156b4: 0xe0007953,\n\t0x156b8: 0xe0004691, 0x156b9: 0xe0007957, 0x156bb: 0xe00069c3,\n\t0x156be: 0xe000a0b3,\n\t// Block 0x55b, offset 0x156c0\n\t0x156ca: 0xe0008cb3, 0x156cb: 0xe0008827,\n\t0x156ce: 0xe000882a,\n\t0x156d2: 0xe00099ed,\n\t0x156d4: 0xe0009a46, 0x156d5: 0xe000a8e7, 0x156d7: 0xe00083a2,\n\t0x156df: 0xe00088b0,\n\t0x156e0: 0xe0009775, 0x156e1: 0xe0005a44,\n\t0x156e6: 0xe00042b0, 0x156e7: 0xe0006f40,\n\t0x156e9: 0xe0004c47, 0x156ea: 0xe000929f, 0x156eb: 0xe000495a,\n\t0x156ec: 0xe0007900,\n\t0x156f2: 0xe000805f,\n\t0x156f6: 0xe000765f, 0x156f7: 0xe0007633,\n\t// Block 0x55c, offset 0x15700\n\t0x1570d: 0xe0005be3, 0x1570e: 0xe0005b5e,\n\t0x15710: 0xe0006454, 0x15712: 0xe0005be7,\n\t0x15714: 0xe00049e2, 0x15715: 0xe0004340,\n\t0x1571c: 0xe0004ce9, 0x1571d: 0xe0009880,\n\t0x15720: 0xe0007859, 0x15722: 0xe000a589,\n\t0x15725: 0xe00082f3,\n\t// Block 0x55d, offset 0x15740\n\t0x15740: 0xe00050ed, 0x15741: 0xe00046dd, 0x15742: 0xe0009269, 0x15743: 0xe00041a8,\n\t0x15744: 0xe000a628, 0x15745: 0xe00049e6, 0x15746: 0xe0004c65, 0x15747: 0xe0004ce9,\n\t0x15748: 0xe0004ce9, 0x15749: 0xe00047a2, 0x1574a: 0xe0005193, 0x1574b: 0xe0005754,\n\t0x1574c: 0xe000521a, 0x1574d: 0xe0005757, 0x1574e: 0xe000575a, 0x1574f: 0xe000575d,\n\t0x15750: 0xe0005760, 0x15751: 0xe0005763, 0x15752: 0xe0005766, 0x15753: 0xe0005769,\n\t0x15754: 0xe000761b, 0x15755: 0xe0005787, 0x15756: 0xe000578b, 0x15757: 0xe000578f,\n\t0x15758: 0xe0005797, 0x15759: 0xe000579b, 0x1575a: 0xe000579f, 0x1575b: 0xe00057ab,\n\t0x1575c: 0xe00057af, 0x1575d: 0xe00057b3, 0x1575e: 0xe00057bf, 0x1575f: 0xe00057c3,\n\t0x15760: 0xe00057c7, 0x15761: 0xe00057f7, 0x15762: 0xe0005807, 0x15763: 0xe0005813,\n\t0x15764: 0xe0005817, 0x15765: 0xe0005827, 0x15766: 0xe000582b, 0x15767: 0xe000582f,\n\t0x15768: 0xe0005837, 0x15769: 0xe000583b, 0x1576a: 0xe000583f, 0x1576b: 0xe0005843,\n\t0x1576c: 0x43219c20, 0x1576d: 0xe000586f, 0x1576e: 0xe0005881, 0x1576f: 0xe0005a91,\n\t0x15770: 0xe0005a97, 0x15771: 0xe0005a9a, 0x15772: 0xe0005aa3, 0x15773: 0xe0005aa6,\n\t0x15774: 0xe0005aa9, 0x15775: 0xe0005aac, 0x15776: 0xe0005aaf, 0x15777: 0xe0005ab2,\n\t0x15778: 0xe0005ab8, 0x15779: 0xe0005abb, 0x1577a: 0xe0005abe, 0x1577b: 0xe0005aee,\n\t0x1577c: 0xe0005af2, 0x1577d: 0xe0005af6, 0x1577e: 0xe0005afa, 0x1577f: 0xe0005afe,\n\t// Block 0x55e, offset 0x15780\n\t0x15780: 0xe0005b02, 0x15781: 0xe0005b26, 0x15782: 0xe0005b2a, 0x15783: 0xe0005b2e,\n\t0x15784: 0xe0005b3e, 0x15785: 0xe0005b42, 0x15786: 0xe0005b68, 0x15787: 0xe0005b6b,\n\t0x15788: 0xe0005b6e, 0x15789: 0xe0005b77, 0x1578a: 0xe0005beb, 0x1578b: 0xe0005bf1,\n\t0x1578c: 0xe0005bf4, 0x1578d: 0xe0005bf7, 0x1578e: 0xe0005bfa, 0x1578f: 0xe0005c00,\n\t0x15790: 0xe0005c03, 0x15791: 0xe0005c0f, 0x15792: 0xe0005cac, 0x15793: 0xe0005cb0,\n\t0x15794: 0xe0005cb8, 0x15795: 0xe0005cc8, 0x15796: 0xe0005cd0, 0x15797: 0xe0005cd4,\n\t0x15798: 0xe0005cd8, 0x15799: 0xe0005cdc, 0x1579a: 0xe00055e1, 0x1579b: 0xe00051a4,\n\t0x1579c: 0xe000761b, 0x1579d: 0xe00051bc, 0x1579e: 0xe000532a, 0x1579f: 0xe0005259,\n\t0x157a0: 0xe000527a, 0x157a1: 0xe000713c, 0x157a2: 0xe000847a, 0x157a3: 0xe0006858,\n\t0x157a4: 0xe0006368, 0x157a5: 0xe0009db4, 0x157a6: 0xe00066d5, 0x157a7: 0xe0006789,\n\t0x157a8: 0xe0009f95, 0x157a9: 0xe00071c2, 0x157aa: 0xe0006d54, 0x157ab: 0xe000932b,\n\t0x157ac: 0xe0006d40, 0x157ad: 0xe0006ff4, 0x157ae: 0xe0007b33, 0x157af: 0xe0006f38,\n\t0x157b0: 0xe0006c40, 0x157b1: 0xe0009171, 0x157b2: 0xe0009a62, 0x157b3: 0xe00073a2,\n\t0x157b4: 0xe0007829, 0x157b5: 0xe0005885, 0x157b6: 0xe0005889, 0x157b7: 0xe0005891,\n\t0x157b8: 0xe0005899, 0x157b9: 0xe000589d, 0x157ba: 0xe00058a1, 0x157bb: 0xe00058b1,\n\t0x157bc: 0xe00058b5, 0x157bd: 0xe00058b9, 0x157be: 0xe00058c1, 0x157bf: 0xe00058e3,\n\t// Block 0x55f, offset 0x157c0\n\t0x157c0: 0xe00058e6, 0x157c1: 0xe0005232, 0x157c2: 0xe00058e9, 0x157c3: 0xe00058f2,\n\t0x157c4: 0xe00058f8, 0x157c5: 0xe00058fb, 0x157c6: 0xe0005904, 0x157c7: 0xe000590a,\n\t0x157c8: 0xe000590d, 0x157c9: 0xe0005910, 0x157ca: 0xe0005934, 0x157cb: 0xe0005938,\n\t0x157cc: 0xe000593c, 0x157cd: 0xe0005948, 0x157ce: 0xe0005239, 0x157cf: 0xe0005968,\n\t0x157d0: 0xe000596c, 0x157d1: 0xe000523d, 0x157d2: 0xe0005974, 0x157d3: 0xe0005978,\n\t0x157d4: 0xe000597c, 0x157d5: 0xe0005241, 0x157d6: 0xe0005980, 0x157d7: 0xe0005984,\n\t0x157d8: 0xe000598c, 0x157d9: 0xe0005988, 0x157da: 0xe0005990, 0x157db: 0xe0005994,\n\t0x157dc: 0xe00059b8, 0x157dd: 0xe00059bc, 0x157de: 0xe00084f6, 0x157df: 0xe00059c4,\n\t0x157e0: 0xe00059c8, 0x157e1: 0xe0006f38, 0x157e2: 0xe00059d8, 0x157e3: 0xe0005249,\n\t0x157e4: 0xe0005255, 0x157e5: 0xe00059e0, 0x157e6: 0xe00059e8, 0x157e7: 0xe00059f8,\n\t0x157e8: 0xe0005a04, 0x157e9: 0xe0005a0c, 0x157ea: 0xe0005259, 0x157eb: 0xe0005a14,\n\t0x157ec: 0xe0005a18, 0x157ed: 0xe0005a1c, 0x157ee: 0xe000a3b1, 0x157ef: 0xe0005a24,\n\t0x157f0: 0xe0005a2c, 0x157f1: 0xe0005a34, 0x157f2: 0xe0005a38, 0x157f3: 0xe0005a3c,\n\t0x157f4: 0xe0005a40, 0x157f5: 0xe0005a7c, 0x157f6: 0xe0005a82, 0x157f7: 0xe0005a85,\n\t0x157f8: 0xe0005a8b, 0x157f9: 0xe000760f, 0x157fa: 0xe0005b9b, 0x157fb: 0xe0005b9e,\n\t0x157fc: 0xe0005ba1, 0x157fd: 0xe00052ba, 0x157fe: 0xe0005ba7, 0x157ff: 0xe000761b,\n\t// Block 0x560, offset 0x15800\n\t0x15800: 0xe0005baa, 0x15801: 0xe0005bad, 0x15802: 0xe0005bb6, 0x15803: 0xe0005bb9,\n\t0x15804: 0xe0005be3, 0x15805: 0xe000a7de, 0x15806: 0xe0007e19, 0x15807: 0xe0005c27,\n\t0x15808: 0xe00052e5, 0x15809: 0xe0005c2d, 0x1580a: 0xe0005c33, 0x1580b: 0xe0005c36,\n\t0x1580c: 0xe0005c3c, 0x1580d: 0xe0005c42, 0x1580e: 0xe0005c48, 0x1580f: 0xe00052e8,\n\t0x15810: 0xe0005c4e, 0x15811: 0xe0005c60, 0x15812: 0xe0005c64, 0x15813: 0xe0005c68,\n\t0x15814: 0xe0005c74, 0x15815: 0xe0005c78, 0x15816: 0xe0005c7c, 0x15817: 0xe0005c84,\n\t0x15818: 0xe0005c8c, 0x15819: 0xe0005c90, 0x1581a: 0xe0005c94, 0x1581b: 0xe000713c,\n\t0x1581c: 0xe0005ca0, 0x1581d: 0xe0005ceb, 0x1581e: 0xe0005cf1, 0x1581f: 0xe0005cf7,\n\t0x15820: 0xe00079e7, 0x15821: 0xe0005cfd, 0x15822: 0xe0005d00, 0x15823: 0xe00052fc,\n\t0x15824: 0xe0005d0c, 0x15825: 0xe0005d12, 0x15826: 0xe0005d18, 0x15827: 0xe0005d21,\n\t0x15828: 0xe0005d24, 0x15829: 0xe0005d27, 0x1582a: 0xe0005d2d, 0x1582b: 0xe0005311,\n\t0x1582c: 0xe0005315, 0x1582d: 0xe0005d5d, 0x1582e: 0xe0005d65, 0x1582f: 0xe0005d69,\n\t0x15830: 0xe0005d6d, 0x15831: 0xe0005d75, 0x15832: 0xe0005d79, 0x15833: 0xe0005d7d,\n\t0x15834: 0xe0005db1, 0x15835: 0xe0005db5, 0x15836: 0xe0005dbd, 0x15837: 0xe0005dcd,\n\t0x15838: 0xe0005dd1, 0x15839: 0xe0005dd5, 0x1583a: 0xe0006cf0, 0x1583b: 0xe00085f3,\n\t0x1583c: 0xe00074a1, 0x1583d: 0xe0007595, 0x1583e: 0xe0005324, 0x1583f: 0xe00085d5,\n\t// Block 0x561, offset 0x15840\n\t0x15840: 0xe0008aa9, 0x15841: 0xe000552a, 0x15842: 0xe00094b4, 0x15843: 0xe000546e,\n\t0x15844: 0xe0005500, 0x15845: 0xe0005655, 0x15846: 0xe0009edb, 0x15847: 0xe00066f9,\n\t0x15848: 0xe000a206, 0x15849: 0xe00043f4, 0x1584a: 0xe0004601, 0x1584b: 0xe0004a35,\n\t0x1584c: 0xe0007d52, 0x1584d: 0x42ab8020, 0x1584e: 0x43f41c20, 0x1584f: 0x43f41e20,\n\t0x15850: 0xe00097c0, 0x15851: 0x43f42220, 0x15852: 0xe0009668, 0x15853: 0x43f42620,\n\t0x15854: 0x43f42820, 0x15855: 0xe000a922, 0x15856: 0xe0008886, 0x15857: 0xe00084c6,\n\t0x15858: 0x42f27820, 0x15859: 0xe00074e9, 0x1585a: 0xe0006cf8, 0x1585b: 0xe00066dd,\n\t0x1585c: 0xe0008c15, 0x1585d: 0xe0008be1, 0x1585e: 0xe0008005, 0x1585f: 0x43f43e20,\n\t0x15860: 0x430c2420, 0x15861: 0x43f44220, 0x15862: 0xe0008c9e, 0x15863: 0x43f44620,\n\t0x15864: 0x43f44820, 0x15865: 0xe000856e, 0x15866: 0xe0005578, 0x15867: 0x43f44e20,\n\t0x15868: 0x43f45020, 0x15869: 0x43f45220, 0x1586a: 0xe0006384, 0x1586b: 0xe0006b7e,\n\t0x1586c: 0xe0004a95, 0x1586d: 0xe000a03f, 0x1586e: 0xe0005853, 0x1586f: 0xe0005a88,\n\t0x15870: 0xe0006033, 0x15871: 0xe00073c6, 0x15872: 0xe0005fa0, 0x15873: 0xe0005fa8,\n\t0x15874: 0xe0004f5b, 0x15875: 0xe0006954, 0x15876: 0xe00042b8, 0x15877: 0xe0009b5c,\n\t0x15878: 0xe000505a, 0x15879: 0xe0006660, 0x1587a: 0xe0006189, 0x1587b: 0xe00099a4,\n\t0x1587c: 0x42b8dc20, 0x1587d: 0xe000a6c7, 0x1587e: 0xe0004455, 0x1587f: 0xe0009021,\n\t// Block 0x562, offset 0x15880\n\t0x15880: 0xe000922d, 0x15881: 0xe0006260, 0x15882: 0x42cbc420, 0x15883: 0xe0006d9e,\n\t0x15884: 0xe0005f15, 0x15885: 0xe000a1aa, 0x15886: 0xe0008880, 0x15887: 0xe000a06f,\n\t0x15888: 0xe00085f6, 0x15889: 0x42e45620, 0x1588a: 0xe0009b24, 0x1588b: 0xe000698d,\n\t0x1588c: 0xe0006b42, 0x1588d: 0xe0009091, 0x1588e: 0xe00050cc, 0x1588f: 0xe0007ff9,\n\t0x15890: 0xe0008d31, 0x15891: 0xe00098be, 0x15892: 0xe000a55f, 0x15893: 0xe0008bd5,\n\t0x15894: 0xe00048de, 0x15895: 0xe0005625, 0x15896: 0xe0008ac1, 0x15897: 0xe0005980,\n\t0x15898: 0xe0009151, 0x15899: 0xe000650c, 0x1589a: 0xe0006dbc, 0x1589b: 0xe0008608,\n\t0x1589c: 0xe0009970, 0x1589d: 0x4304f220, 0x1589e: 0x4304f220, 0x1589f: 0xe0008898,\n\t0x158a0: 0xe00042d0, 0x158a1: 0xe0007430, 0x158a2: 0xe000769f, 0x158a3: 0xe0004f83,\n\t0x158a4: 0xe0006a77, 0x158a5: 0xe0009045, 0x158a6: 0x431f6c20, 0x158a7: 0xe000856e,\n\t0x158a8: 0xe00051c8, 0x158a9: 0xe000a222, 0x158aa: 0xe0006a7b, 0x158ab: 0x42c0ea20,\n\t0x158ac: 0x4885dc20, 0x158ad: 0x43043020,\n\t0x158b0: 0xe000665c, 0x158b1: 0x42a36a20, 0x158b2: 0xe0008971, 0x158b3: 0x429f0020,\n\t0x158b4: 0xe0009916, 0x158b5: 0xe0005054, 0x158b6: 0xe0007f4e, 0x158b7: 0xe0008672,\n\t0x158b8: 0xe00042b8, 0x158b9: 0x42aaaa20, 0x158ba: 0xe000a821, 0x158bb: 0xe0007d56,\n\t0x158bc: 0xe00097c0, 0x158bd: 0xe0006868, 0x158be: 0xe0007973, 0x158bf: 0xe000686c,\n\t// Block 0x563, offset 0x158c0\n\t0x158c0: 0xe000695a, 0x158c1: 0xe0008623, 0x158c2: 0x42bda420, 0x158c3: 0x42bdb220,\n\t0x158c4: 0xe000943f, 0x158c5: 0xe0007f04, 0x158c6: 0xe0005eeb, 0x158c7: 0x42c29c20,\n\t0x158c8: 0xe0008236, 0x158c9: 0xe0009021, 0x158ca: 0xe0007cca, 0x158cb: 0xe000922d,\n\t0x158cc: 0xe00054d6, 0x158cd: 0xe000823c, 0x158ce: 0xe00071bc, 0x158cf: 0x42c8a420,\n\t0x158d0: 0xe0007c85, 0x158d1: 0xe0009668, 0x158d2: 0xe000583b, 0x158d3: 0xe0005ecb,\n\t0x158d4: 0xe0008752, 0x158d5: 0x42d6f220, 0x158d6: 0xe0006c40, 0x158d7: 0xe0005c33,\n\t0x158d8: 0x42ddb620, 0x158d9: 0xe00085f0, 0x158da: 0xe000a06f, 0x158db: 0xe0008bb9,\n\t0x158dc: 0xe00085f6, 0x158dd: 0x42ef4e20, 0x158de: 0xe000868a, 0x158df: 0xe0006560,\n\t0x158e0: 0xe0008886, 0x158e1: 0xe0008a3d, 0x158e2: 0x42ea0c20, 0x158e3: 0x42ea7620,\n\t0x158e4: 0x42ec3a20, 0x158e5: 0xe0007d16, 0x158e6: 0xe00084c6, 0x158e7: 0xe0006ff0,\n\t0x158e8: 0xe00090e5, 0x158e9: 0x42ee9420, 0x158ea: 0xe000928f, 0x158eb: 0x42f19820,\n\t0x158ec: 0x42f56220, 0x158ed: 0xe0008ac1, 0x158ee: 0x42f8f620, 0x158ef: 0xe0008daf,\n\t0x158f0: 0xe0005980, 0x158f1: 0xe0006668, 0x158f2: 0xe0008608, 0x158f3: 0xe000a688,\n\t0x158f4: 0xe000a568, 0x158f5: 0x430ef220, 0x158f6: 0xe00043e8, 0x158f7: 0xe00066f1,\n\t0x158f8: 0xe0007430, 0x158f9: 0xe0008d58, 0x158fa: 0xe0008c9e, 0x158fb: 0xe0009678,\n\t0x158fc: 0xe000769f, 0x158fd: 0xe00051bc, 0x158fe: 0xe000827e, 0x158ff: 0xe0004f83,\n\t// Block 0x564, offset 0x15900\n\t0x15900: 0xe00065cc, 0x15901: 0xe0009045, 0x15902: 0xe0007219, 0x15903: 0xe00090b5,\n\t0x15904: 0x43233220, 0x15905: 0x4324ec20, 0x15906: 0xe00088e6, 0x15907: 0xe00051c8,\n\t0x15908: 0xe0008c15, 0x15909: 0x432fb620, 0x1590a: 0xe000a222, 0x1590b: 0x43301620,\n\t0x1590c: 0xe0006a7b, 0x1590d: 0xe00091a9, 0x1590e: 0xe0004ce9, 0x1590f: 0x48509420,\n\t0x15910: 0x48508820, 0x15911: 0x4867aa20, 0x15912: 0x44773a20, 0x15913: 0x44803020,\n\t0x15914: 0x44807220, 0x15915: 0x48a49220, 0x15916: 0x48b9a020, 0x15917: 0x48fda620,\n\t0x15918: 0x433e8620, 0x15919: 0xe0005b5e,\n\t// Block 0x565, offset 0x15940\n\t0x15940: 0xe0003d0b, 0x15941: 0xe0003cf3, 0x15942: 0xe0003cf7, 0x15943: 0xe0003cff,\n\t0x15944: 0xe0003d0f, 0x15945: 0xe0003d03, 0x15946: 0xf0000404, 0x15947: 0xe0003cfb,\n\t0x15948: 0xe0003d07,\n\t0x15950: 0x02bf2e86, 0x15951: 0x02a7de86,\n\t// Block 0x566, offset 0x15980\n\t0x15980: 0x429c7a20, 0x15981: 0xe000a5b0, 0x15982: 0x429c8220, 0x15983: 0x48024420,\n\t0x15984: 0x429ec020, 0x15985: 0xe0006033, 0x15986: 0xe0009b9c, 0x15987: 0xe000661c,\n\t0x15988: 0x42a0f420, 0x15989: 0xe000694b, 0x1598a: 0xe00073c6, 0x1598b: 0xe0006ca8,\n\t0x1598c: 0x44693c20, 0x1598d: 0x480c7420, 0x1598e: 0xe0005fa0, 0x1598f: 0x42a2a820,\n\t0x15990: 0x42a2c820, 0x15991: 0xe0004c59, 0x15992: 0x480a3820, 0x15993: 0x44697220,\n\t0x15994: 0xe0005217, 0x15995: 0xe00087fa, 0x15996: 0x480a9620, 0x15997: 0xe0007f4a,\n\t0x15998: 0xe000814e, 0x15999: 0x429d9820, 0x1599a: 0xe0005635, 0x1599b: 0x42a36a20,\n\t0x1599c: 0x4923be20, 0x1599d: 0x42a3ea20, 0x1599e: 0xe00084ee, 0x1599f: 0x4469be20,\n\t0x159a0: 0xe00041e4, 0x159a1: 0x42a48c20, 0x159a2: 0xe000a0b7, 0x159a3: 0xe0006c08,\n\t0x159a4: 0x446a2a20, 0x159a5: 0xe0007f4e, 0x159a6: 0xe0005fa8, 0x159a7: 0xe0004f5b,\n\t0x159a8: 0xe0008672, 0x159a9: 0xe0009e65, 0x159aa: 0x42a60c20, 0x159ab: 0xe0006858,\n\t0x159ac: 0xe000a81e, 0x159ad: 0xe0006954, 0x159ae: 0xe00062c4, 0x159af: 0xe0008ff9,\n\t0x159b0: 0xe0008ff5, 0x159b1: 0xe00046b1, 0x159b2: 0xe00046b1, 0x159b3: 0xe00046b1,\n\t0x159b4: 0x48145820, 0x159b5: 0xe000a6dc, 0x159b6: 0xe0005003, 0x159b7: 0xe0007246,\n\t0x159b8: 0x4816c620, 0x159b9: 0xe0004ea3, 0x159ba: 0xe00091b1, 0x159bb: 0x42a80c20,\n\t0x159bc: 0x42a93c20, 0x159bd: 0xe000a8fb, 0x159be: 0xe0008b5d, 0x159bf: 0xe0008ea4,\n\t// Block 0x567, offset 0x159c0\n\t0x159c0: 0xe000763f, 0x159c1: 0x42a9ec20, 0x159c2: 0xe000544e, 0x159c3: 0xe000479c,\n\t0x159c4: 0xe000a0cf, 0x159c5: 0xe0006e5c, 0x159c6: 0xe0006e5c, 0x159c7: 0xe000a821,\n\t0x159c8: 0xe0005197, 0x159c9: 0x42ab6620, 0x159ca: 0x42ab8420, 0x159cb: 0xe0005515,\n\t0x159cc: 0xe0009b5c, 0x159cd: 0x42ae2e20, 0x159ce: 0x42aca220, 0x159cf: 0xe0006864,\n\t0x159d0: 0xe0008aa9, 0x159d1: 0x42b1dc20, 0x159d2: 0xe0006fc8, 0x159d3: 0xe0007475,\n\t0x159d4: 0x42b01a20, 0x159d5: 0xe000a38d, 0x159d6: 0x42b06420, 0x159d7: 0xe0006682,\n\t0x159d8: 0x42b15820, 0x159d9: 0x4829c820, 0x159da: 0x42b1e420, 0x159db: 0x42b1ee20,\n\t0x159dc: 0xe0006775, 0x159dd: 0xe0005321, 0x159de: 0xe00060d4, 0x159df: 0xe0006b00,\n\t0x159e0: 0x482d5020, 0x159e1: 0x482dd420, 0x159e2: 0xe000a92e, 0x159e3: 0xe0007c79,\n\t0x159e4: 0xe0009c21, 0x159e5: 0x42b3b020, 0x159e6: 0xe00067a7, 0x159e7: 0x446ddc20,\n\t0x159e8: 0x446df820, 0x159e9: 0xe0007efe, 0x159ea: 0xe00057cb, 0x159eb: 0xe00057cb,\n\t0x159ec: 0x48339020, 0x159ed: 0xe0008106, 0x159ee: 0xe00099f6, 0x159ef: 0xe0005259,\n\t0x159f0: 0x42b7e620, 0x159f1: 0x48363020, 0x159f2: 0x42b7fe20, 0x159f3: 0x42b80c20,\n\t0x159f4: 0x42bea620, 0x159f5: 0x42b84420, 0x159f6: 0x446f0220, 0x159f7: 0xe0005521,\n\t0x159f8: 0x42b8dc20, 0x159f9: 0xe00071aa, 0x159fa: 0x42b91a20, 0x159fb: 0x483bc820,\n\t0x159fc: 0x42ba8620, 0x159fd: 0x483bcc20, 0x159fe: 0x42badc20, 0x159ff: 0x42bad620,\n\t// Block 0x568, offset 0x15a00\n\t0x15a00: 0x42baf820, 0x15a01: 0xe00072d1, 0x15a02: 0xe000704e, 0x15a03: 0x44705e20,\n\t0x15a04: 0xe0007120, 0x15a05: 0xe0007030, 0x15a06: 0xe000603f, 0x15a07: 0x42bcd220,\n\t0x15a08: 0x4470c420, 0x15a09: 0x48430620, 0x15a0a: 0x4470f820, 0x15a0b: 0x42bd6020,\n\t0x15a0c: 0xe00069db, 0x15a0d: 0xe0006d8c, 0x15a0e: 0xe0005837, 0x15a0f: 0x49472420,\n\t0x15a10: 0x42bdfc20, 0x15a11: 0x48466220, 0x15a12: 0x48466220, 0x15a13: 0xe00079d8,\n\t0x15a14: 0xe000558a, 0x15a15: 0xe000558a, 0x15a16: 0x44718e20, 0x15a17: 0x48657020,\n\t0x15a18: 0x48c3b420, 0x15a19: 0xe000a391, 0x15a1a: 0xe0008cfb, 0x15a1b: 0x4471c620,\n\t0x15a1c: 0x42bf3420, 0x15a1d: 0xe000850a, 0x15a1e: 0xe0009064, 0x15a1f: 0x42bff220,\n\t0x15a20: 0xe0007a93, 0x15a21: 0x44727420, 0x15a22: 0x44723820, 0x15a23: 0xe000a6c7,\n\t0x15a24: 0x484da820, 0x15a25: 0xe00055f1, 0x15a26: 0xe00085ed, 0x15a27: 0xe000a654,\n\t0x15a28: 0x42c29c20, 0x15a29: 0xe000a654, 0x15a2a: 0xe0005c1b, 0x15a2b: 0xe0009021,\n\t0x15a2c: 0xe000a245, 0x15a2d: 0xe0006878, 0x15a2e: 0xe0009363, 0x15a2f: 0xe00060e4,\n\t0x15a30: 0xe000922d, 0x15a31: 0xe0005757, 0x15a32: 0xe0006fdc, 0x15a33: 0x42c43620,\n\t0x15a34: 0x42c4ba20, 0x15a35: 0xe0009e80, 0x15a36: 0xe00063ac, 0x15a37: 0xe0007a27,\n\t0x15a38: 0x48561820, 0x15a39: 0xe0005e3f, 0x15a3a: 0x42c5f820, 0x15a3b: 0xe0006b1b,\n\t0x15a3c: 0xe0007054, 0x15a3d: 0x42c7c820, 0x15a3e: 0x4857e220, 0x15a3f: 0xe000910d,\n\t// Block 0x569, offset 0x15a40\n\t0x15a40: 0x42c78a20, 0x15a41: 0xe0007977, 0x15a42: 0x44745c20, 0x15a43: 0xe0005ddd,\n\t0x15a44: 0x42c8fc20, 0x15a45: 0xe000a84b, 0x15a46: 0x42c8ee20, 0x15a47: 0x4474d820,\n\t0x15a48: 0xe0006260, 0x15a49: 0xe00046d1, 0x15a4a: 0x48601420, 0x15a4b: 0xe0005087,\n\t0x15a4c: 0xe0006da4, 0x15a4d: 0xe0009111, 0x15a4e: 0x44763220, 0x15a4f: 0xe0006d9e,\n\t0x15a50: 0x44761020, 0x15a51: 0x4475c820, 0x15a52: 0xe0006036, 0x15a53: 0xe0005fa4,\n\t0x15a54: 0xe0009802, 0x15a55: 0x42cd3820, 0x15a56: 0xe00052e1, 0x15a57: 0x4487b220,\n\t0x15a58: 0xe000583b, 0x15a59: 0xe0005ecb, 0x15a5a: 0x42ce4220, 0x15a5b: 0xe0005090,\n\t0x15a5c: 0xe0009ef7, 0x15a5d: 0x48678620, 0x15a5e: 0x44769220, 0x15a5f: 0x42cff420,\n\t0x15a60: 0x42cf0a20, 0x15a61: 0x42d0a420, 0x15a62: 0xe0005f15, 0x15a63: 0x4868da20,\n\t0x15a64: 0x42d11c20, 0x15a65: 0x42d03e20, 0x15a66: 0x42d22820, 0x15a67: 0x44773a20,\n\t0x15a68: 0xe0006b96, 0x15a69: 0x42d34620, 0x15a6a: 0xe000445b, 0x15a6b: 0x42d55020,\n\t0x15a6c: 0x486d4620, 0x15a6d: 0xe0009001, 0x15a6e: 0x44783020, 0x15a6f: 0xe000925a,\n\t0x15a70: 0x48714e20, 0x15a71: 0xe000a242, 0x15a72: 0x44789c20, 0x15a73: 0xe000701e,\n\t0x15a74: 0x42d73e20, 0x15a75: 0xe0006c40, 0x15a76: 0x42d77620, 0x15a77: 0x48751a20,\n\t0x15a78: 0x483a1620, 0x15a79: 0x4875f420, 0x15a7a: 0xe0006558, 0x15a7b: 0x48797820,\n\t0x15a7c: 0xe0007a37, 0x15a7d: 0x42d99a20, 0x15a7e: 0x42d8ce20, 0x15a7f: 0x42da2c20,\n\t// Block 0x56a, offset 0x15a80\n\t0x15a80: 0xe0009ce2, 0x15a81: 0xe000a1aa, 0x15a82: 0xe0005c33, 0x15a83: 0xe000a43f,\n\t0x15a84: 0xe0009a66, 0x15a85: 0xe0007ac3, 0x15a86: 0x487a3c20, 0x15a87: 0x42da6820,\n\t0x15a88: 0xe000a167, 0x15a89: 0xe000850e, 0x15a8a: 0x447a6620, 0x15a8b: 0xe00085f0,\n\t0x15a8c: 0x42dd8e20, 0x15a8d: 0x487da220, 0x15a8e: 0xe000797b, 0x15a8f: 0xe0008d1f,\n\t0x15a90: 0x487ebc20, 0x15a91: 0x487f1c20, 0x15a92: 0xe00068c8, 0x15a93: 0x42e07220,\n\t0x15a94: 0xe0008bb9, 0x15a95: 0xe0007b77, 0x15a96: 0x447b2c20, 0x15a97: 0x42e09420,\n\t0x15a98: 0xe0008818, 0x15a99: 0x42e0ee20, 0x15a9a: 0xe0009b74, 0x15a9b: 0x480a4a20,\n\t0x15a9c: 0x42e28a20, 0x15a9d: 0x4884c620, 0x15a9e: 0x42e33820, 0x15a9f: 0x48875620,\n\t0x15aa0: 0xe0009303, 0x15aa1: 0xe000868a, 0x15aa2: 0x42e4a020, 0x15aa3: 0x488c1020,\n\t0x15aa4: 0xe0006dad, 0x15aa5: 0x42e52a20, 0x15aa6: 0x488e6a20, 0x15aa7: 0x48902820,\n\t0x15aa8: 0xe00053a6, 0x15aa9: 0xe0007e55, 0x15aaa: 0x447d5820, 0x15aab: 0x42e74a20,\n\t0x15aac: 0x447d7020, 0x15aad: 0x447d7020, 0x15aae: 0x42e88e20, 0x15aaf: 0xe0008263,\n\t0x15ab0: 0xe0008a3d, 0x15ab1: 0x42e90a20, 0x15ab2: 0xe00046f9, 0x15ab3: 0x447e3620,\n\t0x15ab4: 0x42ea4820, 0x15ab5: 0x48986c20, 0x15ab6: 0x42ea7c20, 0x15ab7: 0x48992420,\n\t0x15ab8: 0xe000847a, 0x15ab9: 0x48433e20, 0x15aba: 0xe00082b7, 0x15abb: 0x489f4220,\n\t0x15abc: 0x489f7020, 0x15abd: 0x48a08820, 0x15abe: 0x447ff820, 0x15abf: 0x44801020,\n\t// Block 0x56b, offset 0x15ac0\n\t0x15ac0: 0xe00090e5, 0x15ac1: 0x48a1e620, 0x15ac2: 0x48a1e420, 0x15ac3: 0x48a23220,\n\t0x15ac4: 0x48a26620, 0x15ac5: 0xe0009145, 0x15ac6: 0x42ee3e20, 0x15ac7: 0x42ee3e20,\n\t0x15ac8: 0x42ee9420, 0x15ac9: 0x44807220, 0x15aca: 0xe0009149, 0x15acb: 0x44808c20,\n\t0x15acc: 0x44812c20, 0x15acd: 0x48a83a20, 0x15ace: 0x42f09c20, 0x15acf: 0xe0005aee,\n\t0x15ad0: 0x42f19820, 0x15ad1: 0x4481c620, 0x15ad2: 0x48ac4c20, 0x15ad3: 0xe0008d31,\n\t0x15ad4: 0x48ad3420, 0x15ad5: 0x48ad8a20, 0x15ad6: 0xe00066dd, 0x15ad7: 0xe0009912,\n\t0x15ad8: 0x44825e20, 0x15ad9: 0xe00048de, 0x15ada: 0x42f49420, 0x15adb: 0x42f49e20,\n\t0x15adc: 0x48b2f820, 0x15add: 0x48b54e20, 0x15ade: 0x48b54e20, 0x15adf: 0x42f5dc20,\n\t0x15ae0: 0x44840420, 0x15ae1: 0x48b75620, 0x15ae2: 0xe00089d5, 0x15ae3: 0xe00098ca,\n\t0x15ae4: 0x44844e20, 0x15ae5: 0x48b90020, 0x15ae6: 0x42f9a420, 0x15ae7: 0x44854020,\n\t0x15ae8: 0x42f9d020, 0x15ae9: 0x42f9c620, 0x15aea: 0xe00050d5, 0x15aeb: 0x48bf0c20,\n\t0x15aec: 0xe0006664, 0x15aed: 0x44860220, 0x15aee: 0xe00099d5, 0x15aef: 0x42fc0420,\n\t0x15af0: 0xe00070cf, 0x15af1: 0x44866820, 0x15af2: 0x48c45020, 0x15af3: 0x48c48e20,\n\t0x15af4: 0x4486b220, 0x15af5: 0x48c5b220, 0x15af6: 0x42fef420, 0x15af7: 0x48c67c20,\n\t0x15af8: 0x42ff2a20, 0x15af9: 0xe00048b0, 0x15afa: 0xe0008608, 0x15afb: 0x48c9b420,\n\t0x15afc: 0x48ca4620, 0x15afd: 0x4300c020, 0x15afe: 0x48cb5020, 0x15aff: 0xe00097d8,\n\t// Block 0x56c, offset 0x15b00\n\t0x15b00: 0x4866be20, 0x15b01: 0x4487aa20, 0x15b02: 0xe0008302, 0x15b03: 0x43020620,\n\t0x15b04: 0x44881620, 0x15b05: 0xe00069a2, 0x15b06: 0xe00085ce, 0x15b07: 0x48cf4e20,\n\t0x15b08: 0x48cf6a20, 0x15b09: 0x48672620, 0x15b0a: 0x48673820, 0x15b0b: 0xe00079d8,\n\t0x15b0c: 0x43040820, 0x15b0d: 0x431f3c20, 0x15b0e: 0x4488d620, 0x15b0f: 0x43052220,\n\t0x15b10: 0xe0008008, 0x15b11: 0xe00090a3, 0x15b12: 0x42a56620, 0x15b13: 0xe000a565,\n\t0x15b14: 0xe0006438, 0x15b15: 0xe00075c0, 0x15b16: 0xe0004850, 0x15b17: 0x48d67820,\n\t0x15b18: 0xe0007829, 0x15b19: 0xe000945a, 0x15b1a: 0x4306c620, 0x15b1b: 0x43075a20,\n\t0x15b1c: 0xe0007cd9, 0x15b1d: 0xe0005edf, 0x15b1e: 0x4307ce20, 0x15b1f: 0xe0008898,\n\t0x15b20: 0x4306a620, 0x15b21: 0xe0004d87, 0x15b22: 0xe0004f13, 0x15b23: 0xe000944b,\n\t0x15b24: 0x48d86c20, 0x15b25: 0x48dad620, 0x15b26: 0x48d9aa20, 0x15b27: 0x448a5620,\n\t0x15b28: 0xe0009e30, 0x15b29: 0x4309e620, 0x15b2a: 0x430a2c20, 0x15b2b: 0x48e79420,\n\t0x15b2c: 0xe00082d2, 0x15b2d: 0x48de5820, 0x15b2e: 0x448aba20, 0x15b2f: 0x448ac220,\n\t0x15b30: 0x48df6220, 0x15b31: 0x48e1a420, 0x15b32: 0x448ad620, 0x15b33: 0xe000a037,\n\t0x15b34: 0xe0005aaf, 0x15b35: 0xe000a85d, 0x15b36: 0x430cd220, 0x15b37: 0xe00099e1,\n\t0x15b38: 0x430d1020, 0x15b39: 0x430e1c20, 0x15b3a: 0x430dc420, 0x15b3b: 0x430ef220,\n\t0x15b3c: 0xe0008b39, 0x15b3d: 0x430ed620, 0x15b3e: 0x430f0c20, 0x15b3f: 0x448bae20,\n\t// Block 0x56d, offset 0x15b40\n\t0x15b40: 0x430fc220, 0x15b41: 0x43100220, 0x15b42: 0x448bf220, 0x15b43: 0x4310c020,\n\t0x15b44: 0xe000842f, 0x15b45: 0x48ecce20, 0x15b46: 0x4311ae20, 0x15b47: 0x4311bc20,\n\t0x15b48: 0x448c6a20, 0x15b49: 0x4311f420, 0x15b4a: 0x44697620, 0x15b4b: 0x48f15c20,\n\t0x15b4c: 0x48f2cc20, 0x15b4d: 0x448d7c20, 0x15b4e: 0x448d8e20, 0x15b4f: 0xe0007008,\n\t0x15b50: 0xe000827e, 0x15b51: 0xe00065cc, 0x15b52: 0xe000743c, 0x15b53: 0x48f95020,\n\t0x15b54: 0xe0004a8d, 0x15b55: 0xe00068a0, 0x15b56: 0xe00049d6, 0x15b57: 0xe00050f0,\n\t0x15b58: 0x48fe5e20, 0x15b59: 0x48100820, 0x15b5a: 0xe00063c0, 0x15b5b: 0x431b7820,\n\t0x15b5c: 0x431be020, 0x15b5d: 0x4811bc20, 0x15b5e: 0x431da820, 0x15b5f: 0xe0007219,\n\t0x15b60: 0x490ba420, 0x15b61: 0x490bda20, 0x15b62: 0x43212820, 0x15b63: 0x4321e220,\n\t0x15b64: 0x43222220, 0x15b65: 0x490e5c20, 0x15b66: 0x43223620, 0x15b67: 0xe00063e0,\n\t0x15b68: 0xe000a311, 0x15b69: 0x4325b020, 0x15b6a: 0xe0006678, 0x15b6b: 0x4327f220,\n\t0x15b6c: 0x43282a20, 0x15b6d: 0x4917f420, 0x15b6e: 0xe0004476, 0x15b6f: 0x44932a20,\n\t0x15b70: 0x432b6e20, 0x15b71: 0x491aee20, 0x15b72: 0x4493cc20, 0x15b73: 0x432d8620,\n\t0x15b74: 0x42bb6420, 0x15b75: 0xe00080ca, 0x15b76: 0x49228a20, 0x15b77: 0x49243420,\n\t0x15b78: 0x4494dc20, 0x15b79: 0x4494ec20, 0x15b7a: 0xe0009fd5, 0x15b7b: 0x49281420,\n\t0x15b7c: 0x44956420, 0x15b7d: 0x49292c20, 0x15b7e: 0x43301620, 0x15b7f: 0x43301620,\n\t// Block 0x56e, offset 0x15b80\n\t0x15b80: 0x43305220, 0x15b81: 0x492b6c20, 0x15b82: 0xe00050f9, 0x15b83: 0x44966620,\n\t0x15b84: 0x43325220, 0x15b85: 0x43334e20, 0x15b86: 0x43338420, 0x15b87: 0x4333fc20,\n\t0x15b88: 0x44979c20, 0x15b89: 0x49366020, 0x15b8a: 0xe00091a9, 0x15b8b: 0x43388020,\n\t0x15b8c: 0x4339fa20, 0x15b8d: 0x44999c20, 0x15b8e: 0x4499da20, 0x15b8f: 0x433ace20,\n\t0x15b90: 0x49419c20, 0x15b91: 0x4499f020, 0x15b92: 0x49420a20, 0x15b93: 0x49441c20,\n\t0x15b94: 0x49452220, 0x15b95: 0xe0005df2, 0x15b96: 0x449aac20, 0x15b97: 0x433df220,\n\t0x15b98: 0x433dfc20, 0x15b99: 0x433e0a20, 0x15b9a: 0x433e1e20, 0x15b9b: 0x433e2c20,\n\t0x15b9c: 0xe00069c3, 0x15b9d: 0x494c0020,\n\t// Block 0x56f, offset 0x15bc0\n\t0x15bc0: 0xa000f202, 0x15bc1: 0x403fba21, 0x15bc2: 0x403fba20, 0x15bc3: 0x403fbc20,\n\t0x15bc4: 0x403fbc20, 0x15bc5: 0x403fbe20, 0x15bc6: 0x403fc020, 0x15bc7: 0x403fcc20,\n\t0x15bc8: 0x403fce20, 0x15bc9: 0x403fd020, 0x15bca: 0x403fd220, 0x15bcb: 0x403fd420,\n\t0x15bcc: 0x403fd820, 0x15bcd: 0x403fdc20, 0x15bce: 0x403fde20, 0x15bcf: 0x403fe020,\n\t0x15bd0: 0x403fe220, 0x15bd1: 0x403fe420, 0x15bd2: 0x403fe620, 0x15bd3: 0x403fe820,\n\t0x15bd4: 0x403fea20, 0x15bd5: 0xcaac3be1, 0x15bd6: 0x403fee20, 0x15bd7: 0x403ff020,\n\t0x15bd8: 0x403ff420, 0x15bd9: 0x403ff620, 0x15bda: 0x403ff820, 0x15bdb: 0x403ffa20,\n\t0x15bdc: 0x403ffc20, 0x15bdd: 0x40400220, 0x15bde: 0x40400420, 0x15bdf: 0x40400620,\n\t0x15be0: 0x40400820, 0x15be1: 0x40400a20, 0x15be2: 0x40400e20, 0x15be3: 0x40401020,\n\t0x15be4: 0x40401220, 0x15be5: 0x40401420, 0x15be6: 0x40401620, 0x15be7: 0x40401820,\n\t0x15be8: 0x40401a20, 0x15be9: 0xe0001830, 0x15bea: 0x40401c20, 0x15beb: 0x40401e20,\n\t0x15bec: 0x40402020, 0x15bed: 0x40402420, 0x15bee: 0x40402620, 0x15bef: 0x40402820,\n\t0x15bf0: 0x40402c20, 0x15bf1: 0xe0001839, 0x15bf2: 0x40402e20, 0x15bf3: 0x40403c20,\n\t0x15bf4: 0xe000a994, 0x15bf5: 0x40403220, 0x15bf6: 0x40403420, 0x15bf7: 0x40403620,\n\t0x15bf8: 0x40403820, 0x15bf9: 0x40403a20, 0x15bfa: 0x40404c20, 0x15bfb: 0x40404e20,\n\t0x15bfc: 0xa070f102, 0x15bfd: 0x40403c20, 0x15bfe: 0x40404a20, 0x15bff: 0x40405620,\n\t// Block 0x570, offset 0x15c00\n\t0x15c00: 0xa0000000, 0x15c01: 0xa0000000, 0x15c02: 0xa0000000, 0x15c03: 0xa0000000,\n\t0x15c04: 0xa0000000, 0x15c05: 0xa0000000, 0x15c06: 0xa0000000, 0x15c07: 0xa0000000,\n\t0x15c08: 0xa0000000, 0x15c09: 0x40020020, 0x15c0a: 0x40020220, 0x15c0b: 0x40020420,\n\t0x15c0c: 0x40020620, 0x15c0d: 0x40020820, 0x15c0e: 0xa0000000, 0x15c0f: 0xa0000000,\n\t0x15c10: 0xa0000000, 0x15c11: 0xa0000000, 0x15c12: 0xa0000000, 0x15c13: 0xa0000000,\n\t0x15c14: 0xa0000000, 0x15c15: 0xa0000000, 0x15c16: 0xa0000000, 0x15c17: 0xa0000000,\n\t0x15c18: 0xa0000000, 0x15c19: 0xa0000000, 0x15c1a: 0xa0000000, 0x15c1b: 0xa0000000,\n\t0x15c1c: 0xa0000000, 0x15c1d: 0xa0000000, 0x15c1e: 0xa0000000, 0x15c1f: 0xa0000000,\n\t0x15c20: 0x40021220, 0x15c21: 0x4002ba20, 0x15c22: 0x4003e020, 0x15c23: 0x4004ea20,\n\t0x15c24: 0x4027de20, 0x15c25: 0x4004ec20, 0x15c26: 0x4004e620, 0x15c27: 0x4003d220,\n\t0x15c28: 0x4003f420, 0x15c29: 0x4003f620, 0x15c2a: 0x4004d820, 0x15c2b: 0x40093820,\n\t0x15c2c: 0x40024020, 0x15c2d: 0x40021a20, 0x15c2e: 0x4002e420, 0x15c2f: 0x4004e220,\n\t0x15c30: 0x4029cc20, 0x15c31: 0x4029ce20, 0x15c32: 0x4029d020, 0x15c33: 0x4029d220,\n\t0x15c34: 0x4029d420, 0x15c35: 0x4029d620, 0x15c36: 0x4029d820, 0x15c37: 0x4029da20,\n\t0x15c38: 0x4029dc20, 0x15c39: 0x4029de20, 0x15c3a: 0x40026c20, 0x15c3b: 0x40026220,\n\t0x15c3c: 0x40094020, 0x15c3d: 0x40094220, 0x15c3e: 0x40094420, 0x15c3f: 0x4002c420,\n\t// Block 0x571, offset 0x15c40\n\t0x15c40: 0x4004d620, 0x15c41: 0x002bde88, 0x15c42: 0x002c0a88, 0x15c43: 0x002c3a88,\n\t0x15c44: 0x002c6288, 0x15c45: 0x002c9888, 0x15c46: 0x002d0888, 0x15c47: 0xcab12692,\n\t0x15c48: 0x002d6888, 0x15c49: 0x002d9a88, 0x15c4a: 0x002dcc88, 0x15c4b: 0xcab726c2,\n\t0x15c4c: 0xc0030002, 0x15c4d: 0xcac33c48, 0x15c4e: 0xcadf3daa, 0x15c4f: 0x002ee288,\n\t0x15c50: 0x002f2c88, 0x15c51: 0x002f5688, 0x15c52: 0x002f7a88, 0x15c53: 0xcaf409c2,\n\t0x15c54: 0xcafa2722, 0x15c55: 0x00306c88, 0x15c56: 0x0030be88, 0x15c57: 0x0030e288,\n\t0x15c58: 0x0030f688, 0x15c59: 0x00310088, 0x15c5a: 0x00312a88, 0x15c5b: 0x4003f820,\n\t0x15c5c: 0x4004e420, 0x15c5d: 0x4003fa20, 0x15c5e: 0x40062420, 0x15c5f: 0x40021620,\n\t0x15c60: 0x40061e20, 0x15c61: 0x402bde20, 0x15c62: 0x402c0a20, 0x15c63: 0x402c3a20,\n\t0x15c64: 0x402c6220, 0x15c65: 0x402c9820, 0x15c66: 0x402d0820, 0x15c67: 0xcaae2692,\n\t0x15c68: 0x402d6820, 0x15c69: 0x402d9a20, 0x15c6a: 0x402dcc20, 0x15c6b: 0xcab426c2,\n\t0x15c6c: 0xc0000002, 0x15c6d: 0xcaba3c48, 0x15c6e: 0xcacc3cca, 0x15c6f: 0x402ee220,\n\t0x15c70: 0x402f2c20, 0x15c71: 0x402f5620, 0x15c72: 0x402f7a20, 0x15c73: 0xcaf109c2,\n\t0x15c74: 0xcaf72722, 0x15c75: 0x40306c20, 0x15c76: 0x4030be20, 0x15c77: 0x4030e220,\n\t0x15c78: 0x4030f620, 0x15c79: 0x40310020, 0x15c7a: 0x40312a20, 0x15c7b: 0x4003fc20,\n\t0x15c7c: 0x40094820, 0x15c7d: 0x4003fe20, 0x15c7e: 0x40094c20, 0x15c7f: 0xa0000000,\n\t// Block 0x572, offset 0x15c80\n\t0x15c80: 0x402c1a20, 0x15c81: 0x002c2a88, 0x15c82: 0x002c3288, 0x15c83: 0x402c3220,\n\t0x15c84: 0x0031c488, 0x15c85: 0x4031c420, 0x15c86: 0x002ee2a3, 0x15c87: 0x002c4e88,\n\t0x15c88: 0x402c4e20, 0x15c89: 0x002c7288, 0x15c8a: 0x002c7a88, 0x15c8b: 0x002c8488,\n\t0x15c8c: 0x402c8420, 0x15c8d: 0xe000115c, 0x15c8e: 0x002cae88, 0x15c8f: 0x002cb888,\n\t0x15c90: 0x002c9a83, 0x15c91: 0x002d1688, 0x15c92: 0x402d1620, 0x15c93: 0x002d4488,\n\t0x15c94: 0x002d5888, 0x15c95: 0x402d7820, 0x15c96: 0x002dc288, 0x15c97: 0x002db688,\n\t0x15c98: 0x002e0a88, 0x15c99: 0x402e0a20, 0x15c9a: 0x402e3820, 0x15c9b: 0x402e7220,\n\t0x15c9c: 0x0030a088, 0x15c9d: 0x002eb488, 0x15c9e: 0x402ebc20, 0x15c9f: 0x002f1088,\n\t0x15ca0: 0xe0000e56, 0x15ca1: 0xe0000e53, 0x15ca2: 0x002d6088, 0x15ca3: 0x402d6020,\n\t0x15ca4: 0x002f3e88, 0x15ca5: 0x402f3e20, 0x15ca6: 0x002f8288, 0x15ca7: 0x0031b488,\n\t0x15ca8: 0x4031b420, 0x15ca9: 0x00300888, 0x15caa: 0x40301220, 0x15cab: 0x40304220,\n\t0x15cac: 0x00304a88, 0x15cad: 0x40304a20, 0x15cae: 0x00305288, 0x15caf: 0xe000105f,\n\t0x15cb0: 0xe000105c, 0x15cb1: 0x0030b488, 0x15cb2: 0x0030cc88, 0x15cb3: 0x00311888,\n\t0x15cb4: 0x40311820, 0x15cb5: 0x00313488, 0x15cb6: 0x40313420, 0x15cb7: 0x00316488,\n\t0x15cb8: 0x00316e88, 0x15cb9: 0x40316e20, 0x15cba: 0x40317820, 0x15cbb: 0x4031a620,\n\t0x15cbc: 0x0031bc88, 0x15cbd: 0x4031bc20, 0x15cbe: 0xe0000fc9, 0x15cbf: 0x40319420,\n\t// Block 0x573, offset 0x15cc0\n\t0x15cc0: 0x40315820, 0x15cc1: 0x0031d488, 0x15cc2: 0x4031d420, 0x15cc3: 0x002c1a88,\n\t0x15cc4: 0x00307c88, 0x15cc5: 0x0030da88, 0x15cc6: 0x002ca288, 0x15cc7: 0x402ca220,\n\t0x15cc8: 0x002dde88, 0x15cc9: 0x402dde20, 0x15cca: 0x002f6a88, 0x15ccb: 0x402f6a20,\n\t0x15ccc: 0x002f8e88, 0x15ccd: 0x402f8e20, 0x15cce: 0x00311088, 0x15ccf: 0x40311020,\n\t0x15cd0: 0x402bf020, 0x15cd1: 0x402bf820, 0x15cd2: 0x402c0220, 0x15cd3: 0x402c2a20,\n\t0x15cd4: 0x402ee221, 0x15cd5: 0x402c5620, 0x15cd6: 0x402c7220, 0x15cd7: 0x402c7a20,\n\t0x15cd8: 0x402ccc20, 0x15cd9: 0x402cb820, 0x15cda: 0x402cd420, 0x15cdb: 0x402c9a20,\n\t0x15cdc: 0x402cdc20, 0x15cdd: 0x402ce820, 0x15cde: 0x402cf020, 0x15cdf: 0x402dee20,\n\t0x15ce0: 0x402d4420, 0x15ce1: 0x402d2a20, 0x15ce2: 0x402d3220, 0x15ce3: 0x402d5820,\n\t0x15ce4: 0x402d0020, 0x15ce5: 0x40308820, 0x15ce6: 0x402d8020, 0x15ce7: 0x402d8e20,\n\t0x15ce8: 0x402db620, 0x15ce9: 0x402dc220, 0x15cea: 0x402daa20, 0x15ceb: 0x402e4220,\n\t0x15cec: 0x402e4a20, 0x15ced: 0x402e5420, 0x15cee: 0x402e6820, 0x15cef: 0x4030a020,\n\t0x15cf0: 0x4030ac20, 0x15cf1: 0x402e9020, 0x15cf2: 0x402eb420, 0x15cf3: 0x402ec820,\n\t0x15cf4: 0x402ea620, 0x15cf5: 0x402f1020, 0x15cf6: 0x402eee20, 0x15cf7: 0x402f1a20,\n\t0x15cf8: 0x402f4c20, 0x15cf9: 0x402f9820, 0x15cfa: 0x402fa220, 0x15cfb: 0x402fac20,\n\t0x15cfc: 0x402fb620, 0x15cfd: 0x402fbe20, 0x15cfe: 0x402fc620, 0x15cff: 0x402fd020,\n\t// Block 0x574, offset 0x15d00\n\t0x15d00: 0xa0000000, 0x15d01: 0xa0000000, 0x15d02: 0xa0000000, 0x15d03: 0xa0000000,\n\t0x15d04: 0xa0000000, 0x15d05: 0xa0000000, 0x15d06: 0xa0000000, 0x15d07: 0xa0000000,\n\t0x15d08: 0xa0000000, 0x15d09: 0x40020020, 0x15d0a: 0x40020220, 0x15d0b: 0x40020420,\n\t0x15d0c: 0x40020620, 0x15d0d: 0x40020820, 0x15d0e: 0xa0000000, 0x15d0f: 0xa0000000,\n\t0x15d10: 0xa0000000, 0x15d11: 0xa0000000, 0x15d12: 0xa0000000, 0x15d13: 0xa0000000,\n\t0x15d14: 0xa0000000, 0x15d15: 0xa0000000, 0x15d16: 0xa0000000, 0x15d17: 0xa0000000,\n\t0x15d18: 0xa0000000, 0x15d19: 0xa0000000, 0x15d1a: 0xa0000000, 0x15d1b: 0xa0000000,\n\t0x15d1c: 0xa0000000, 0x15d1d: 0xa0000000, 0x15d1e: 0xa0000000, 0x15d1f: 0xa0000000,\n\t0x15d20: 0x40021220, 0x15d21: 0x4002ba20, 0x15d22: 0x4003e020, 0x15d23: 0x4004ea20,\n\t0x15d24: 0x4027de20, 0x15d25: 0x4004ec20, 0x15d26: 0x4004e620, 0x15d27: 0x4003d220,\n\t0x15d28: 0x4003f420, 0x15d29: 0x4003f620, 0x15d2a: 0x4004d820, 0x15d2b: 0x40093820,\n\t0x15d2c: 0x40024020, 0x15d2d: 0x40021a20, 0x15d2e: 0x4002e420, 0x15d2f: 0x4004e220,\n\t0x15d30: 0x4029cc20, 0x15d31: 0x4029ce20, 0x15d32: 0x4029d020, 0x15d33: 0x4029d220,\n\t0x15d34: 0x4029d420, 0x15d35: 0x4029d620, 0x15d36: 0x4029d820, 0x15d37: 0x4029da20,\n\t0x15d38: 0x4029dc20, 0x15d39: 0x4029de20, 0x15d3a: 0x40026c20, 0x15d3b: 0x40026220,\n\t0x15d3c: 0x40094020, 0x15d3d: 0x40094220, 0x15d3e: 0x40094420, 0x15d3f: 0x4002c420,\n\t// Block 0x575, offset 0x15d40\n\t0x15d40: 0x4004d620, 0x15d41: 0xcb030be1, 0x15d42: 0x002c0a88, 0x15d43: 0xc3350991,\n\t0x15d44: 0x002c6288, 0x15d45: 0xcb083ea1, 0x15d46: 0x002d0888, 0x15d47: 0x002d2288,\n\t0x15d48: 0x002d6888, 0x15d49: 0xcb0d0be1, 0x15d4a: 0x002dcc88, 0x15d4b: 0x002dfe88,\n\t0x15d4c: 0xc0030002, 0x15d4d: 0x002e8288, 0x15d4e: 0x002e9e88, 0x15d4f: 0x002ee288,\n\t0x15d50: 0x002f2c88, 0x15d51: 0x002f5688, 0x15d52: 0x002f7a88, 0x15d53: 0xc3430991,\n\t0x15d54: 0x00302c88, 0x15d55: 0xcb123ed1, 0x15d56: 0x0030be88, 0x15d57: 0x0030e288,\n\t0x15d58: 0x0030f688, 0x15d59: 0x002d9ac3, 0x15d5a: 0xc3630991, 0x15d5b: 0x4003f820,\n\t0x15d5c: 0x4004e420, 0x15d5d: 0x4003fa20, 0x15d5e: 0x40062420, 0x15d5f: 0x40021620,\n\t0x15d60: 0x40061e20, 0x15d61: 0xcb010be1, 0x15d62: 0x402c0a20, 0x15d63: 0xc3330991,\n\t0x15d64: 0x402c6220, 0x15d65: 0xcb053ea1, 0x15d66: 0x402d0820, 0x15d67: 0x402d2220,\n\t0x15d68: 0x402d6820, 0x15d69: 0xcb0b0be1, 0x15d6a: 0x402dcc20, 0x15d6b: 0x402dfe20,\n\t0x15d6c: 0xc0000002, 0x15d6d: 0x402e8220, 0x15d6e: 0x402e9e20, 0x15d6f: 0x402ee220,\n\t0x15d70: 0x402f2c20, 0x15d71: 0x402f5620, 0x15d72: 0x402f7a20, 0x15d73: 0xc3410991,\n\t0x15d74: 0x40302c20, 0x15d75: 0xcb0f3ed1, 0x15d76: 0x4030be20, 0x15d77: 0x4030e220,\n\t0x15d78: 0x4030f620, 0x15d79: 0x402d9a22, 0x15d7a: 0xc3610991, 0x15d7b: 0x4003fc20,\n\t0x15d7c: 0x40094820, 0x15d7d: 0x4003fe20, 0x15d7e: 0x40094c20, 0x15d7f: 0xa0000000,\n\t// Block 0x576, offset 0x15d80\n\t0x15d80: 0xe00008f5, 0x15d81: 0xe00008ef, 0x15d82: 0xe0000921, 0x15d83: 0xe0000969,\n\t0x15d84: 0xe000095b, 0x15d85: 0xe000094d, 0x15d86: 0xe00009dd, 0x15d87: 0xe0000a53,\n\t0x15d88: 0xe0000ae8, 0x15d89: 0xe0000ae2, 0x15d8a: 0xe0000af4, 0x15d8b: 0xe0000b20,\n\t0x15d8c: 0xe0000c2b, 0x15d8d: 0xe0000c25, 0x15d8e: 0xe0000c37, 0x15d8f: 0xe0000c43,\n\t0x15d90: 0xe0000ab3, 0x15d91: 0xe0000d63, 0x15d92: 0xe0000d9a, 0x15d93: 0xe0000d94,\n\t0x15d94: 0xe0000da6, 0x15d95: 0xe0000de6, 0x15d96: 0xe0000dd2, 0x15d97: 0x40093e20,\n\t0x15d98: 0xe0000e12, 0x15d99: 0xe0000fe1, 0x15d9a: 0xe0000fdb, 0x15d9b: 0xe0000fed,\n\t0x15d9c: 0xe0000fff, 0x15d9d: 0xe000a99a, 0x15d9e: 0x00318888, 0x15d9f: 0xe0000f7b,\n\t0x15da0: 0xe00008f2, 0x15da1: 0xe00008ec, 0x15da2: 0xe000091e, 0x15da3: 0xe0000966,\n\t0x15da4: 0xe0000958, 0x15da5: 0xe000094a, 0x15da6: 0xe00009d5, 0x15da7: 0xe0000a4d,\n\t0x15da8: 0xe0000ae5, 0x15da9: 0xe0000adf, 0x15daa: 0xe0000af1, 0x15dab: 0xe0000b1d,\n\t0x15dac: 0xe0000c28, 0x15dad: 0xe0000c22, 0x15dae: 0xe0000c34, 0x15daf: 0xe0000c40,\n\t0x15db0: 0xe0000aad, 0x15db1: 0xe0000d60, 0x15db2: 0xe0000d97, 0x15db3: 0xe0000d91,\n\t0x15db4: 0xe0000da3, 0x15db5: 0xe0000de3, 0x15db6: 0xe0000dcf, 0x15db7: 0x40093c20,\n\t0x15db8: 0xe0000e0f, 0x15db9: 0xe0000fde, 0x15dba: 0xe0000fd8, 0x15dbb: 0xe0000fea,\n\t0x15dbc: 0xe0000ffc, 0x15dbd: 0xe000a997, 0x15dbe: 0x40318820, 0x15dbf: 0xe000a9ac,\n\t// Block 0x577, offset 0x15dc0\n\t0x15dc0: 0xe0000983, 0x15dc1: 0xe0000980, 0x15dc2: 0xe00008fb, 0x15dc3: 0xe00008f8,\n\t0x15dc4: 0x002bdea3, 0x15dc5: 0x402bde21, 0x15dc6: 0xe0000a38, 0x15dc7: 0xe0000a35,\n\t0x15dc8: 0xe0000a3e, 0x15dc9: 0xe0000a3b, 0x15dca: 0xe0000a4a, 0x15dcb: 0xe0000a47,\n\t0x15dcc: 0x002c3c83, 0x15dcd: 0x402c3c20, 0x15dce: 0xe0000a86, 0x15dcf: 0xe0000a83,\n\t0x15dd0: 0xe0000aaa, 0x15dd1: 0xe0000aa7, 0x15dd2: 0xe0000b46, 0x15dd3: 0xe0000b43,\n\t0x15dd4: 0xe0000aee, 0x15dd5: 0xe0000aeb, 0x15dd6: 0x002c98c3, 0x15dd7: 0x402c9822,\n\t0x15dd8: 0x002c98a3, 0x15dd9: 0x402c9821, 0x15dda: 0xe0000b1a, 0x15ddb: 0xe0000b17,\n\t0x15ddc: 0xe0000bb8, 0x15ddd: 0xe0000bb5, 0x15dde: 0xe0000bb2, 0x15ddf: 0xe0000baf,\n\t0x15de0: 0xe0000bc4, 0x15de1: 0xe0000bc1, 0x15de2: 0xe0000bca, 0x15de3: 0xe0000bc7,\n\t0x15de4: 0xe0000bee, 0x15de5: 0xe0000beb, 0x15de6: 0xe0000c1b, 0x15de7: 0xe0000c18,\n\t0x15de8: 0xe0000c51, 0x15de9: 0xe0000c4e, 0x15dea: 0xe0000c60, 0x15deb: 0xe0000c5d,\n\t0x15dec: 0xe0000c31, 0x15ded: 0xe0000c2e, 0x15dee: 0x002d9aa3, 0x15def: 0x402d9a21,\n\t0x15df0: 0xe0000c54, 0x15df1: 0x402da220, 0x15df2: 0xf0000a0a, 0x15df3: 0xf0000404,\n\t0x15df4: 0xe0000c8a, 0x15df5: 0xe0000c87, 0x15df6: 0xe0000c9f, 0x15df7: 0xe0000c9c,\n\t0x15df8: 0x402f7220, 0x15df9: 0xe0000ccc, 0x15dfa: 0xe0000cc9, 0x15dfb: 0xe0000cd8,\n\t0x15dfc: 0xe0000cd5, 0x15dfd: 0xe0000cd2, 0x15dfe: 0xe0000ccf, 0x15dff: 0xe0000d04,\n\t// Block 0x578, offset 0x15e00\n\t0x15e00: 0xe0000cfe, 0x15e01: 0xe0000cf8, 0x15e02: 0xe0000cf5, 0x15e03: 0xe0000d51,\n\t0x15e04: 0xe0000d4e, 0x15e05: 0xe0000d6f, 0x15e06: 0xe0000d6c, 0x15e07: 0xe0000d5d,\n\t0x15e08: 0xe0000d5a, 0x15e09: 0xf0000404, 0x15e0a: 0x002eda88, 0x15e0b: 0x402eda20,\n\t0x15e0c: 0xe0000e2e, 0x15e0d: 0xe0000e2b, 0x15e0e: 0xe0000da0, 0x15e0f: 0xe0000d9d,\n\t0x15e10: 0xe0000de0, 0x15e11: 0xe0000ddd, 0x15e12: 0xe0000e93, 0x15e13: 0xe0000e8f,\n\t0x15e14: 0xe0000eca, 0x15e15: 0xe0000ec7, 0x15e16: 0xe0000edc, 0x15e17: 0xe0000ed9,\n\t0x15e18: 0xe0000ed0, 0x15e19: 0xe0000ecd, 0x15e1a: 0xe0000f1f, 0x15e1b: 0xe0000f1c,\n\t0x15e1c: 0xe0000f2d, 0x15e1d: 0xe0000f2a, 0x15e1e: 0xe0000f47, 0x15e1f: 0xe0000f44,\n\t0x15e20: 0x002fe883, 0x15e21: 0x402fe820, 0x15e22: 0xe0000f99, 0x15e23: 0xe0000f96,\n\t0x15e24: 0xe0000f8a, 0x15e25: 0xe0000f87, 0x15e26: 0x00303688, 0x15e27: 0x40303620,\n\t0x15e28: 0xe000102b, 0x15e29: 0xe0001028, 0x15e2a: 0x00306cc3, 0x15e2b: 0x40306c22,\n\t0x15e2c: 0xe0000fe7, 0x15e2d: 0xe0000fe4, 0x15e2e: 0xe0000ff9, 0x15e2f: 0xe0000ff6,\n\t0x15e30: 0xe0001025, 0x15e31: 0xe0001022, 0x15e32: 0x00306ca3, 0x15e33: 0x40306c21,\n\t0x15e34: 0xe00010d8, 0x15e35: 0xe00010d5, 0x15e36: 0xe000a9a6, 0x15e37: 0xe000a9a3,\n\t0x15e38: 0xe000a9af, 0x15e39: 0xe000113b, 0x15e3a: 0xe0001138, 0x15e3b: 0xe000114d,\n\t0x15e3c: 0xe000114a, 0x15e3d: 0x00312c83, 0x15e3e: 0x40312c20, 0x15e3f: 0xe0000f64,\n\t// Block 0x579, offset 0x15e40\n\t0x15e40: 0x40321220, 0x15e41: 0x40321a20, 0x15e42: 0x40322220, 0x15e43: 0x40322a20,\n\t0x15e44: 0xe0000ad5, 0x15e45: 0xe0000ad1, 0x15e46: 0xe0000acd, 0x15e47: 0xf0000a0a,\n\t0x15e48: 0xf000040a, 0x15e49: 0xf0000404, 0x15e4a: 0xf0000a0a, 0x15e4b: 0xf000040a,\n\t0x15e4c: 0xf0000404, 0x15e4d: 0xe0000947, 0x15e4e: 0xe0000944, 0x15e4f: 0xe0000c3d,\n\t0x15e50: 0xe0000c3a, 0x15e51: 0xe0000dcc, 0x15e52: 0xe0000dc9, 0x15e53: 0xe0000ff3,\n\t0x15e54: 0xe0000ff0, 0x15e55: 0xe000a9d3, 0x15e56: 0xe000a9d0, 0x15e57: 0xe0001006,\n\t0x15e58: 0xe0001002, 0x15e59: 0xe0001016, 0x15e5a: 0xe0001012, 0x15e5b: 0xe000100e,\n\t0x15e5c: 0xe000100a, 0x15e5d: 0x402cae20, 0x15e5e: 0xe0000962, 0x15e5f: 0xe000095e,\n\t0x15e60: 0xe0000976, 0x15e61: 0xe0000972, 0x15e62: 0xe00009f4, 0x15e63: 0xe00009ef,\n\t0x15e64: 0x002d3a88, 0x15e65: 0x402d3a20, 0x15e66: 0xe0000bbe, 0x15e67: 0xe0000bbb,\n\t0x15e68: 0xe0000c99, 0x15e69: 0xe0000c96, 0x15e6a: 0xe0000e20, 0x15e6b: 0xe0000e1d,\n\t0x15e6c: 0xe0000e27, 0x15e6d: 0xe0000e23, 0x15e6e: 0xe0001162, 0x15e6f: 0xe000115f,\n\t0x15e70: 0xe0000c8d, 0x15e71: 0xf0000a0a, 0x15e72: 0xf000040a, 0x15e73: 0xf0000404,\n\t0x15e74: 0xe0000bac, 0x15e75: 0xe0000ba9, 0x15e76: 0x002d7888, 0x15e77: 0x00319488,\n\t0x15e78: 0xe0000d57, 0x15e79: 0xe0000d54, 0x15e7a: 0xe0000954, 0x15e7b: 0xe0000950,\n\t0x15e7c: 0xe00009ea, 0x15e7d: 0xe00009e5, 0x15e7e: 0xe0000e19, 0x15e7f: 0xe0000e15,\n\t// Block 0x57a, offset 0x15e80\n\t0x15e80: 0xe000098f, 0x15e81: 0xe000098c, 0x15e82: 0xe0000995, 0x15e83: 0xe0000992,\n\t0x15e84: 0xe0000b62, 0x15e85: 0xe0000b5f, 0x15e86: 0xe0000b68, 0x15e87: 0xe0000b65,\n\t0x15e88: 0xe0000c6c, 0x15e89: 0xe0000c69, 0x15e8a: 0xe0000c72, 0x15e8b: 0xe0000c6f,\n\t0x15e8c: 0xe0000e4a, 0x15e8d: 0xe0000e47, 0x15e8e: 0xe0000e50, 0x15e8f: 0xe0000e4d,\n\t0x15e90: 0xe0000ee8, 0x15e91: 0xe0000ee5, 0x15e92: 0xe0000eee, 0x15e93: 0xe0000eeb,\n\t0x15e94: 0xe0001053, 0x15e95: 0xe0001050, 0x15e96: 0xe0001059, 0x15e97: 0xe0001056,\n\t0x15e98: 0xe0000f61, 0x15e99: 0xe0000f5e, 0x15e9a: 0xe0000fa5, 0x15e9b: 0xe0000fa2,\n\t0x15e9c: 0x00312288, 0x15e9d: 0x40312220, 0x15e9e: 0xe0000bf4, 0x15e9f: 0xe0000bf1,\n\t0x15ea0: 0x002ebc88, 0x15ea1: 0x402c8c20, 0x15ea2: 0x002f2288, 0x15ea3: 0x402f2220,\n\t0x15ea4: 0x00314088, 0x15ea5: 0x40314020, 0x15ea6: 0xe000096f, 0x15ea7: 0xe000096c,\n\t0x15ea8: 0xe0000b32, 0x15ea9: 0xe0000b2f, 0x15eaa: 0xe0000dd9, 0x15eab: 0xe0000dd5,\n\t0x15eac: 0xe0000dfd, 0x15ead: 0xe0000df9, 0x15eae: 0xe0000e04, 0x15eaf: 0xe0000e01,\n\t0x15eb0: 0xe0000e0b, 0x15eb1: 0xe0000e07, 0x15eb2: 0xe000a9c1, 0x15eb3: 0xe000a9be,\n\t0x15eb4: 0x402e5e20, 0x15eb5: 0x402ed020, 0x15eb6: 0x40305a20, 0x15eb7: 0x402dd420,\n\t0x15eb8: 0xe0000abf, 0x15eb9: 0xe0000ec4, 0x15eba: 0x002be888, 0x15ebb: 0x002c4488,\n\t0x15ebc: 0x402c4420, 0x15ebd: 0x002e3888, 0x15ebe: 0x00303e88, 0x15ebf: 0x402ffc20,\n\t// Block 0x57b, offset 0x15ec0\n\t0x15ec0: 0xae603502, 0x15ec1: 0xae603202, 0x15ec2: 0xae603c02, 0x15ec3: 0xae604e02,\n\t0x15ec4: 0xae605b02, 0x15ec5: 0xae606302, 0x15ec6: 0xae603702, 0x15ec7: 0xcafd3e71,\n\t0x15ec8: 0xae604702, 0x15ec9: 0xae606402, 0x15eca: 0xae604302, 0x15ecb: 0xae604d02,\n\t0x15ecc: 0xae604102, 0x15ecd: 0xae605f02, 0x15ece: 0xae605f02, 0x15ecf: 0xae606502,\n\t0x15ed0: 0xae606602, 0x15ed1: 0xae606702, 0x15ed2: 0xae605f02, 0x15ed3: 0xae602202,\n\t0x15ed4: 0xae602a02, 0x15ed5: 0xae805f02, 0x15ed6: 0xadc06002, 0x15ed7: 0xadc06002,\n\t0x15ed8: 0xadc06002, 0x15ed9: 0xadc06002, 0x15eda: 0xae805f02, 0x15edb: 0xad806802,\n\t0x15edc: 0xadc06002, 0x15edd: 0xadc06002, 0x15ede: 0xadc06002, 0x15edf: 0xadc06002,\n\t0x15ee0: 0xadc06002, 0x15ee1: 0xaca06e02, 0x15ee2: 0xaca06f02, 0x15ee3: 0xadc07002,\n\t0x15ee4: 0xadc07502, 0x15ee5: 0xadc07602, 0x15ee6: 0xadc07702, 0x15ee7: 0xaca05602,\n\t0x15ee8: 0xaca05902, 0x15ee9: 0xadc06002, 0x15eea: 0xadc06002, 0x15eeb: 0xadc06002,\n\t0x15eec: 0xadc06002, 0x15eed: 0xadc07802, 0x15eee: 0xadc07902, 0x15eef: 0xadc06002,\n\t0x15ef0: 0xadc07a02, 0x15ef1: 0xadc07b02, 0x15ef2: 0xadc02102, 0x15ef3: 0xadc06002,\n\t0x15ef4: 0xa0107c02, 0x15ef5: 0xa0107d02, 0x15ef6: 0xa0106102, 0x15ef7: 0xa0106102,\n\t0x15ef8: 0xa0105402, 0x15ef9: 0xadc07e02, 0x15efa: 0xadc06002, 0x15efb: 0xadc06002,\n\t0x15efc: 0xadc06002, 0x15efd: 0xae605f02, 0x15efe: 0xae605f02, 0x15eff: 0xae605f02,\n\t// Block 0x57c, offset 0x15f00\n\t0x15f00: 0xe0000d24, 0x15f01: 0xe0000d21, 0x15f02: 0xe0000d2a, 0x15f03: 0xe0000d27,\n\t0x15f04: 0xe0000d69, 0x15f05: 0xe0000d66, 0x15f06: 0xe0000d7b, 0x15f07: 0xe0000d78,\n\t0x15f08: 0xe0000d87, 0x15f09: 0xe0000d84, 0x15f0a: 0xe0000d81, 0x15f0b: 0xe0000d7e,\n\t0x15f0c: 0xe0000ded, 0x15f0d: 0xe0000de9, 0x15f0e: 0xe0000df5, 0x15f0f: 0xe0000df1,\n\t0x15f10: 0xe0000e3d, 0x15f11: 0xe0000e39, 0x15f12: 0xe0000e35, 0x15f13: 0xe0000e31,\n\t0x15f14: 0xe0000ea7, 0x15f15: 0xe0000ea4, 0x15f16: 0xe0000ead, 0x15f17: 0xe0000eaa,\n\t0x15f18: 0xe0000ed6, 0x15f19: 0xe0000ed3, 0x15f1a: 0xe0000ef4, 0x15f1b: 0xe0000ef1,\n\t0x15f1c: 0xe0000efb, 0x15f1d: 0xe0000ef7, 0x15f1e: 0xe0000f02, 0x15f1f: 0xe0000eff,\n\t0x15f20: 0xe0000f41, 0x15f21: 0xe0000f3e, 0x15f22: 0xe0000f53, 0x15f23: 0xe0000f50,\n\t0x15f24: 0xe0000f26, 0x15f25: 0xe0000f22, 0x15f26: 0xe000296a, 0x15f27: 0xe0002967,\n\t0x15f28: 0xe0000f5a, 0x15f29: 0xe0000f56, 0x15f2a: 0xe0000f93, 0x15f2b: 0xe0000f90,\n\t0x15f2c: 0xe0000f9f, 0x15f2d: 0xe0000f9c, 0x15f2e: 0xe0000fb1, 0x15f2f: 0xe0000fae,\n\t0x15f30: 0xe0000fab, 0x15f31: 0xe0000fa8, 0x15f32: 0xe0001093, 0x15f33: 0xe0001090,\n\t0x15f34: 0xe000109f, 0x15f35: 0xe000109c, 0x15f36: 0xe0001099, 0x15f37: 0xe0001096,\n\t0x15f38: 0xe0001032, 0x15f39: 0xe000102e, 0x15f3a: 0xe000a9d3, 0x15f3b: 0xe000a9d0,\n\t0x15f3c: 0xe00010a9, 0x15f3d: 0xe00010a6, 0x15f3e: 0xe00010af, 0x15f3f: 0xe00010ac,\n\t// Block 0x57d, offset 0x15f40\n\t0x15f40: 0xe00010d2, 0x15f41: 0xe00010cf, 0x15f42: 0xe00010cc, 0x15f43: 0xe00010c9,\n\t0x15f44: 0xe00010e1, 0x15f45: 0xe00010de, 0x15f46: 0xe00010e7, 0x15f47: 0xe00010e4,\n\t0x15f48: 0xe00010ed, 0x15f49: 0xe00010ea, 0x15f4a: 0xe00010fc, 0x15f4b: 0xe00010f9,\n\t0x15f4c: 0xe00010f6, 0x15f4d: 0xe00010f3, 0x15f4e: 0xe000a9bb, 0x15f4f: 0xe000a9b8,\n\t0x15f50: 0xe0001141, 0x15f51: 0xe000113e, 0x15f52: 0xe0001153, 0x15f53: 0xe0001150,\n\t0x15f54: 0xe0001159, 0x15f55: 0xe0001156, 0x15f56: 0xe0000c15, 0x15f57: 0xe0000f8d,\n\t0x15f58: 0xe00010db, 0x15f59: 0xe000a9a9, 0x15f5a: 0xf0000404, 0x15f5b: 0xe0000f70,\n\t0x15f5c: 0x40300420, 0x15f5d: 0x40300620, 0x15f5e: 0xe0000f7f, 0x15f5f: 0x402c9620,\n\t0x15f60: 0xe000099b, 0x15f61: 0xe0000998, 0x15f62: 0xe0000989, 0x15f63: 0xe0000986,\n\t0x15f64: 0xe0000928, 0x15f65: 0xe0000924, 0x15f66: 0xe0000930, 0x15f67: 0xe000092c,\n\t0x15f68: 0xe0000940, 0x15f69: 0xe000093c, 0x15f6a: 0xe0000938, 0x15f6b: 0xe0000934,\n\t0x15f6c: 0xe00009aa, 0x15f6d: 0xe00009a6, 0x15f6e: 0xe0000902, 0x15f6f: 0xe00008fe,\n\t0x15f70: 0xe000090a, 0x15f71: 0xe0000906, 0x15f72: 0xe000091a, 0x15f73: 0xe0000916,\n\t0x15f74: 0xe0000912, 0x15f75: 0xe000090e, 0x15f76: 0xe00009a2, 0x15f77: 0xe000099e,\n\t0x15f78: 0xe0000b6e, 0x15f79: 0xe0000b6b, 0x15f7a: 0xe0000b5c, 0x15f7b: 0xe0000b59,\n\t0x15f7c: 0xe0000b26, 0x15f7d: 0xe0000b23, 0x15f7e: 0xe0000afb, 0x15f7f: 0xe0000af7,\n\t// Block 0x57e, offset 0x15f80\n\t0x15f80: 0xe0000b03, 0x15f81: 0xe0000aff, 0x15f82: 0xe0000b13, 0x15f83: 0xe0000b0f,\n\t0x15f84: 0xe0000b0b, 0x15f85: 0xe0000b07, 0x15f86: 0xe0000b75, 0x15f87: 0xe0000b71,\n\t0x15f88: 0xe0000c66, 0x15f89: 0xe0000c63, 0x15f8a: 0xe0000c78, 0x15f8b: 0xe0000c75,\n\t0x15f8c: 0xe0000e84, 0x15f8d: 0xe0000e81, 0x15f8e: 0xe0000e44, 0x15f8f: 0xe0000e41,\n\t0x15f90: 0xe0000dad, 0x15f91: 0xe0000da9, 0x15f92: 0xe0000db5, 0x15f93: 0xe0000db1,\n\t0x15f94: 0xe0000dc5, 0x15f95: 0xe0000dc1, 0x15f96: 0xe0000dbd, 0x15f97: 0xe0000db9,\n\t0x15f98: 0xe0000e8b, 0x15f99: 0xe0000e87, 0x15f9a: 0xe0000e5d, 0x15f9b: 0xe0000e59,\n\t0x15f9c: 0xe0000e65, 0x15f9d: 0xe0000e61, 0x15f9e: 0xe0000e75, 0x15f9f: 0xe0000e71,\n\t0x15fa0: 0xe0000e6d, 0x15fa1: 0xe0000e69, 0x15fa2: 0xe0000e7d, 0x15fa3: 0xe0000e79,\n\t0x15fa4: 0xe000108d, 0x15fa5: 0xe000108a, 0x15fa6: 0xe000104d, 0x15fa7: 0xe000104a,\n\t0x15fa8: 0xe0001066, 0x15fa9: 0xe0001062, 0x15faa: 0xe000106e, 0x15fab: 0xe000106a,\n\t0x15fac: 0xe000107e, 0x15fad: 0xe000107a, 0x15fae: 0xe0001076, 0x15faf: 0xe0001072,\n\t0x15fb0: 0xe0001086, 0x15fb1: 0xe0001082, 0x15fb2: 0xe000a9a0, 0x15fb3: 0xe000a99d,\n\t0x15fb4: 0xe000a9cd, 0x15fb5: 0xe000a9ca, 0x15fb6: 0xe000a9c7, 0x15fb7: 0xe000a9c4,\n\t0x15fb8: 0xe000a9b5, 0x15fb9: 0xe000a9b2, 0x15fba: 0xe0000d0a, 0x15fbb: 0xe0000d07,\n\t0x15fbc: 0x0030d888, 0x15fbd: 0x4030d820, 0x15fbe: 0x00312088, 0x15fbf: 0x40312020,\n\t// Block 0x57f, offset 0x15fc0\n\t0x15fc0: 0xe0000024, 0x15fc1: 0xe0000029, 0x15fc2: 0xe000002e, 0x15fc3: 0xe0000033,\n\t0x15fc4: 0xe0000038, 0x15fc5: 0xe000003d, 0x15fc6: 0xe0000042, 0x15fc7: 0xe0000047,\n\t0x15fc8: 0xf0001f04, 0x15fc9: 0xf0001f04, 0x15fca: 0xf0001f04, 0x15fcb: 0xf0001f04,\n\t0x15fcc: 0xf0001f04, 0x15fcd: 0xf0001f04, 0x15fce: 0xf0001f04, 0x15fcf: 0xf0001f04,\n\t0x15fd0: 0xf0001f04, 0x15fd1: 0xf0000404, 0x15fd2: 0xf0000404, 0x15fd3: 0xf0000404,\n\t0x15fd4: 0xf0000404, 0x15fd5: 0xf0000404, 0x15fd6: 0xf0000404, 0x15fd7: 0xf0000404,\n\t0x15fd8: 0xf0000404, 0x15fd9: 0xf0000404, 0x15fda: 0xf0000404, 0x15fdb: 0xf0000404,\n\t0x15fdc: 0xf0000404, 0x15fdd: 0xf0000404, 0x15fde: 0xf0000404, 0x15fdf: 0xf0000404,\n\t0x15fe0: 0xf0000404, 0x15fe1: 0xf0000404, 0x15fe2: 0xf0000404, 0x15fe3: 0xf0000404,\n\t0x15fe4: 0xf0000404, 0x15fe5: 0xf0000404, 0x15fe6: 0xf0000404, 0x15fe7: 0xf0000404,\n\t0x15fe8: 0xf0000404, 0x15fe9: 0xf0000404, 0x15fea: 0xf0000404, 0x15feb: 0xf0000404,\n\t0x15fec: 0xf0000404, 0x15fed: 0xf0000404, 0x15fee: 0xf0000404, 0x15fef: 0xf0000404,\n\t0x15ff0: 0xf0000404, 0x15ff1: 0xf0000404, 0x15ff2: 0xf0000404, 0x15ff3: 0xf0000404,\n\t0x15ff4: 0xe0002c4e, 0x15ff5: 0xf0000404, 0x15ff6: 0x002bde8c, 0x15ff7: 0x002c0a8c,\n\t0x15ff8: 0x002c3a8c, 0x15ff9: 0x002c628c, 0x15ffa: 0x002c988c, 0x15ffb: 0x002d088c,\n\t0x15ffc: 0x002d228c, 0x15ffd: 0x002d688c, 0x15ffe: 0x002d9a8c, 0x15fff: 0x002dcc8c,\n\t// Block 0x580, offset 0x16000\n\t0x16000: 0xf0001d1c, 0x16001: 0xf0001d1d, 0x16002: 0xe00009b7, 0x16003: 0xf0001c1d,\n\t0x16004: 0xf0001c1c, 0x16005: 0xf0001c1c, 0x16006: 0xe0000a66, 0x16007: 0xe0000a7a,\n\t0x16008: 0xf0001d1c, 0x16009: 0xe0003576, 0x1600a: 0xf0001c1c, 0x1600b: 0xf0001d1d,\n\t0x1600c: 0xf0001c1c, 0x1600d: 0xf0001d1d, 0x1600e: 0xf0001d1d, 0x1600f: 0xf0001c1c,\n\t0x16010: 0xf0001c1c, 0x16011: 0xf0001c1c, 0x16012: 0xe0000d0d, 0x16013: 0xf0001c1c,\n\t0x16014: 0xf0001c1c, 0x16015: 0xe0000d3a, 0x16016: 0xe0000d46, 0x16017: 0xf0001d1d,\n\t0x16018: 0xe0000eb0, 0x16019: 0xe0000eb8, 0x1601a: 0xf0001d1d, 0x1601b: 0xf0001c1c,\n\t0x1601c: 0xf0001c1d, 0x1601d: 0xf0001c1d, 0x1601e: 0xe00010b2, 0x1601f: 0xe00009c8,\n\t0x16020: 0xf0001f04, 0x16021: 0xf0001f04, 0x16022: 0xf0001f04, 0x16023: 0xf0001f04,\n\t0x16024: 0xf0001f04, 0x16025: 0xf0001f04, 0x16026: 0xf0001f04, 0x16027: 0xf0001f04,\n\t0x16028: 0xf0001f04, 0x16029: 0xf0000404, 0x1602a: 0xf0000404, 0x1602b: 0xf0000404,\n\t0x1602c: 0xf0000404, 0x1602d: 0xf0000404, 0x1602e: 0xf0000404, 0x1602f: 0xf0000404,\n\t0x16030: 0xf0000404, 0x16031: 0xf0000404, 0x16032: 0xf0000404, 0x16033: 0xf0000404,\n\t0x16034: 0xf0000404, 0x16035: 0xf0000404, 0x16036: 0xf0000404, 0x16037: 0xf0000404,\n\t0x16038: 0xf0000404, 0x16039: 0xf0000404, 0x1603a: 0xf0000404, 0x1603b: 0xf0000404,\n\t0x1603c: 0xf0000404, 0x1603d: 0xf0000404, 0x1603e: 0xf0000404, 0x1603f: 0xe0000bdf,\n\t// Block 0x581, offset 0x16040\n\t0x16040: 0xf0001f04, 0x16041: 0xf0001f04, 0x16042: 0xf0001f04, 0x16043: 0xf0001f04,\n\t0x16044: 0xf0001f04, 0x16045: 0xf0001f04, 0x16046: 0xf0001f04, 0x16047: 0xf0001f04,\n\t0x16048: 0xf0001f04, 0x16049: 0xf0001f04, 0x1604a: 0xf0001f04,\n\t0x16050: 0xf0000a04, 0x16051: 0xf0000a04, 0x16052: 0xf0000a04, 0x16053: 0xf0000a04,\n\t0x16054: 0xf0000a04, 0x16055: 0xf0000a04, 0x16056: 0xf0000a04, 0x16057: 0xf0000a04,\n\t0x16058: 0xf0000a04, 0x16059: 0xf0000a04, 0x1605a: 0xf0000a04, 0x1605b: 0xf0000a04,\n\t0x1605c: 0xf0000a04, 0x1605d: 0xf0000a04, 0x1605e: 0xf0000a04, 0x1605f: 0xf0000a04,\n\t0x16060: 0xf0000a04, 0x16061: 0xf0000a04, 0x16062: 0xf0000a04, 0x16063: 0xf0000a04,\n\t0x16064: 0xf0000a04, 0x16065: 0xf0000a04, 0x16066: 0xf0000a04, 0x16067: 0xf0000a04,\n\t0x16068: 0xe0002c52, 0x16069: 0xf0000a04, 0x1606a: 0xf0000a04, 0x1606b: 0x002c3a8c,\n\t0x1606c: 0x002f7a8c, 0x1606d: 0xf0000c0c, 0x1606e: 0xf0000c0c,\n\t0x16070: 0x002bde9d, 0x16071: 0x002c0a9d, 0x16072: 0x002c3a9d, 0x16073: 0x002c629d,\n\t0x16074: 0x002c989d, 0x16075: 0x002d089d, 0x16076: 0x002d229d, 0x16077: 0x002d689d,\n\t0x16078: 0x002d9a9d, 0x16079: 0x002dcc9d, 0x1607a: 0x002dfe9d, 0x1607b: 0x002e229d,\n\t0x1607c: 0x002e829d, 0x1607d: 0x002e9e9d, 0x1607e: 0x002ee29d, 0x1607f: 0x002f2c9d,\n\t// Block 0x582, offset 0x16080\n\t0x16080: 0xa0000000, 0x16081: 0xa0000000, 0x16082: 0xa0000000, 0x16083: 0xa0000000,\n\t0x16084: 0xa0000000, 0x16085: 0xa0000000, 0x16086: 0xa0000000, 0x16087: 0xa0000000,\n\t0x16088: 0xa0000000, 0x16089: 0x40020020, 0x1608a: 0x40020220, 0x1608b: 0x40020420,\n\t0x1608c: 0x40020620, 0x1608d: 0x40020820, 0x1608e: 0xa0000000, 0x1608f: 0xa0000000,\n\t0x16090: 0xa0000000, 0x16091: 0xa0000000, 0x16092: 0xa0000000, 0x16093: 0xa0000000,\n\t0x16094: 0xa0000000, 0x16095: 0xa0000000, 0x16096: 0xa0000000, 0x16097: 0xa0000000,\n\t0x16098: 0xa0000000, 0x16099: 0xa0000000, 0x1609a: 0xa0000000, 0x1609b: 0xa0000000,\n\t0x1609c: 0xa0000000, 0x1609d: 0xa0000000, 0x1609e: 0xa0000000, 0x1609f: 0xa0000000,\n\t0x160a0: 0x40021220, 0x160a1: 0x4002ba20, 0x160a2: 0x4003e020, 0x160a3: 0x4004ea20,\n\t0x160a4: 0x4027de20, 0x160a5: 0x4004ec20, 0x160a6: 0x4004e620, 0x160a7: 0x4003d220,\n\t0x160a8: 0x4003f420, 0x160a9: 0x4003f620, 0x160aa: 0x4004d820, 0x160ab: 0x40093820,\n\t0x160ac: 0x40024020, 0x160ad: 0x40021a20, 0x160ae: 0x4002e420, 0x160af: 0x4004e220,\n\t0x160b0: 0x4029cc20, 0x160b1: 0x4029ce20, 0x160b2: 0x4029d020, 0x160b3: 0x4029d220,\n\t0x160b4: 0x4029d420, 0x160b5: 0x4029d620, 0x160b6: 0x4029d820, 0x160b7: 0x4029da20,\n\t0x160b8: 0x4029dc20, 0x160b9: 0x4029de20, 0x160ba: 0x40026c20, 0x160bb: 0x40026220,\n\t0x160bc: 0x40094020, 0x160bd: 0x40094220, 0x160be: 0x40094420, 0x160bf: 0x4002c420,\n\t// Block 0x583, offset 0x160c0\n\t0x160c0: 0x4004d620, 0x160c1: 0x002bde88, 0x160c2: 0x002c0a88, 0x160c3: 0xcb170991,\n\t0x160c4: 0x002c6288, 0x160c5: 0x002c9888, 0x160c6: 0x002d0888, 0x160c7: 0xcb1b0911,\n\t0x160c8: 0x002d6888, 0x160c9: 0x002d9a88, 0x160ca: 0x002dcc88, 0x160cb: 0xcb1f0911,\n\t0x160cc: 0xcb253f03, 0x160cd: 0x002e8288, 0x160ce: 0xcb2b0911, 0x160cf: 0x002ee288,\n\t0x160d0: 0x002f2c88, 0x160d1: 0x002f5688, 0x160d2: 0xcb2f0911, 0x160d3: 0xcb330991,\n\t0x160d4: 0x00302c88, 0x160d5: 0x00306c88, 0x160d6: 0x0030be88, 0x160d7: 0x0030e288,\n\t0x160d8: 0x0030f688, 0x160d9: 0x00310088, 0x160da: 0xcb370991, 0x160db: 0x4003f820,\n\t0x160dc: 0x4004e420, 0x160dd: 0x4003fa20, 0x160de: 0x40062420, 0x160df: 0x40021620,\n\t0x160e0: 0x40061e20, 0x160e1: 0x402bde20, 0x160e2: 0x402c0a20, 0x160e3: 0xcb150991,\n\t0x160e4: 0x402c6220, 0x160e5: 0x402c9820, 0x160e6: 0x402d0820, 0x160e7: 0xcb190911,\n\t0x160e8: 0x402d6820, 0x160e9: 0x402d9a20, 0x160ea: 0x402dcc20, 0x160eb: 0xcb1d0911,\n\t0x160ec: 0xcb213f03, 0x160ed: 0x402e8220, 0x160ee: 0xcb290911, 0x160ef: 0x402ee220,\n\t0x160f0: 0x402f2c20, 0x160f1: 0x402f5620, 0x160f2: 0xcb2d0911, 0x160f3: 0xcb310991,\n\t0x160f4: 0x40302c20, 0x160f5: 0x40306c20, 0x160f6: 0x4030be20, 0x160f7: 0x4030e220,\n\t0x160f8: 0x4030f620, 0x160f9: 0x40310020, 0x160fa: 0xcb350991, 0x160fb: 0x4003fc20,\n\t0x160fc: 0x40094820, 0x160fd: 0x4003fe20, 0x160fe: 0x40094c20, 0x160ff: 0xa0000000,\n\t// Block 0x584, offset 0x16100\n\t0x16100: 0xe0000983, 0x16101: 0xe0000980, 0x16102: 0xe00008fb, 0x16103: 0xe00008f8,\n\t0x16104: 0xe000097d, 0x16105: 0xe000097a, 0x16106: 0xe0000a38, 0x16107: 0xe0000a35,\n\t0x16108: 0xe0000a3e, 0x16109: 0xe0000a3b, 0x1610a: 0xe0000a4a, 0x1610b: 0xe0000a47,\n\t0x1610c: 0x002c6083, 0x1610d: 0x402c6020, 0x1610e: 0xe0000a86, 0x1610f: 0xe0000a83,\n\t0x16110: 0xe0000aaa, 0x16111: 0xe0000aa7, 0x16112: 0xe0000b46, 0x16113: 0xe0000b43,\n\t0x16114: 0xe0000aee, 0x16115: 0xe0000aeb, 0x16116: 0xe0000b2c, 0x16117: 0xe0000b29,\n\t0x16118: 0xe0000b40, 0x16119: 0xe0000b3d, 0x1611a: 0xe0000b1a, 0x1611b: 0xe0000b17,\n\t0x1611c: 0xe0000bb8, 0x1611d: 0xe0000bb5, 0x1611e: 0xe0000bb2, 0x1611f: 0xe0000baf,\n\t0x16120: 0xe0000bc4, 0x16121: 0xe0000bc1, 0x16122: 0x002d6683, 0x16123: 0x402d6620,\n\t0x16124: 0xe0000bee, 0x16125: 0xe0000beb, 0x16126: 0xe0000c1b, 0x16127: 0xe0000c18,\n\t0x16128: 0xe0000c51, 0x16129: 0xe0000c4e, 0x1612a: 0xe0000c60, 0x1612b: 0xe0000c5d,\n\t0x1612c: 0xe0000c31, 0x1612d: 0xe0000c2e, 0x1612e: 0xe0000c5a, 0x1612f: 0xe0000c57,\n\t0x16130: 0xe0000c54, 0x16131: 0x402da220, 0x16132: 0xf0000a0a, 0x16133: 0xf0000404,\n\t0x16134: 0xe0000c8a, 0x16135: 0xe0000c87, 0x16136: 0x002e2083, 0x16137: 0x402e2020,\n\t0x16138: 0x402f7220, 0x16139: 0xe0000ccc, 0x1613a: 0xe0000cc9, 0x1613b: 0x002e8083,\n\t0x1613c: 0x402e8020, 0x1613d: 0xe0000cd2, 0x1613e: 0xe0000ccf, 0x1613f: 0xe0000d04,\n\t// Block 0x585, offset 0x16140\n\t0x16140: 0xe0000cfe, 0x16141: 0xe0000cf8, 0x16142: 0xe0000cf5, 0x16143: 0xe0000d51,\n\t0x16144: 0xe0000d4e, 0x16145: 0x002ee083, 0x16146: 0x402ee020, 0x16147: 0xe0000d5d,\n\t0x16148: 0xe0000d5a, 0x16149: 0xf0000404, 0x1614a: 0x002eda88, 0x1614b: 0x402eda20,\n\t0x1614c: 0xe0000e2e, 0x1614d: 0xe0000e2b, 0x1614e: 0xe0000da0, 0x1614f: 0xe0000d9d,\n\t0x16150: 0xe0000de0, 0x16151: 0xe0000ddd, 0x16152: 0xe0000e93, 0x16153: 0xe0000e8f,\n\t0x16154: 0xe0000eca, 0x16155: 0xe0000ec7, 0x16156: 0x002fe483, 0x16157: 0x402fe420,\n\t0x16158: 0xe0000ed0, 0x16159: 0xe0000ecd, 0x1615a: 0xe0000f1f, 0x1615b: 0xe0000f1c,\n\t0x1615c: 0xe0000f2d, 0x1615d: 0xe0000f2a, 0x1615e: 0xe0000f47, 0x1615f: 0xe0000f44,\n\t0x16160: 0x00302a83, 0x16161: 0x40302a20, 0x16162: 0xe0000f99, 0x16163: 0xe0000f96,\n\t0x16164: 0xe0000f8a, 0x16165: 0xe0000f87, 0x16166: 0x00303688, 0x16167: 0x40303620,\n\t0x16168: 0xe000102b, 0x16169: 0xe0001028, 0x1616a: 0xe000103f, 0x1616b: 0xe000103c,\n\t0x1616c: 0xe0000fe7, 0x1616d: 0xe0000fe4, 0x1616e: 0xe0000ff9, 0x1616f: 0xe0000ff6,\n\t0x16170: 0xe0001025, 0x16171: 0xe0001022, 0x16172: 0xe0001039, 0x16173: 0xe0001036,\n\t0x16174: 0xe00010d8, 0x16175: 0xe00010d5, 0x16176: 0xe000110e, 0x16177: 0xe000110b,\n\t0x16178: 0xe0001117, 0x16179: 0xe000113b, 0x1617a: 0xe0001138, 0x1617b: 0xe000114d,\n\t0x1617c: 0xe000114a, 0x1617d: 0x00316283, 0x1617e: 0x40316220, 0x1617f: 0xe0000f64,\n\t// Block 0x586, offset 0x16180\n\t0x16180: 0xe0000d24, 0x16181: 0xe0000d21, 0x16182: 0xe0000d2a, 0x16183: 0xe0000d27,\n\t0x16184: 0xe0000d69, 0x16185: 0xe0000d66, 0x16186: 0xe0000d7b, 0x16187: 0xe0000d78,\n\t0x16188: 0xe0000d87, 0x16189: 0xe0000d84, 0x1618a: 0xe0000d81, 0x1618b: 0xe0000d7e,\n\t0x1618c: 0xe0000ded, 0x1618d: 0xe0000de9, 0x1618e: 0xe0000df5, 0x1618f: 0xe0000df1,\n\t0x16190: 0xe0000e3d, 0x16191: 0xe0000e39, 0x16192: 0xe0000e35, 0x16193: 0xe0000e31,\n\t0x16194: 0xe0000ea7, 0x16195: 0xe0000ea4, 0x16196: 0xe0000ead, 0x16197: 0xe0000eaa,\n\t0x16198: 0xe0000ed6, 0x16199: 0xe0000ed3, 0x1619a: 0xe0000ef4, 0x1619b: 0xe0000ef1,\n\t0x1619c: 0xe0000efb, 0x1619d: 0xe0000ef7, 0x1619e: 0xe0000f02, 0x1619f: 0xe0000eff,\n\t0x161a0: 0xe0000f41, 0x161a1: 0xe0000f3e, 0x161a2: 0xe0000f53, 0x161a3: 0xe0000f50,\n\t0x161a4: 0xe0000f26, 0x161a5: 0xe0000f22, 0x161a6: 0xe000a9d9, 0x161a7: 0xe000a9d6,\n\t0x161a8: 0xe0000f5a, 0x161a9: 0xe0000f56, 0x161aa: 0xe0000f93, 0x161ab: 0xe0000f90,\n\t0x161ac: 0xe0000f9f, 0x161ad: 0xe0000f9c, 0x161ae: 0xe0000fb1, 0x161af: 0xe0000fae,\n\t0x161b0: 0xe0000fab, 0x161b1: 0xe0000fa8, 0x161b2: 0xe0001093, 0x161b3: 0xe0001090,\n\t0x161b4: 0xe000109f, 0x161b5: 0xe000109c, 0x161b6: 0xe0001099, 0x161b7: 0xe0001096,\n\t0x161b8: 0xe0001032, 0x161b9: 0xe000102e, 0x161ba: 0xe0001046, 0x161bb: 0xe0001042,\n\t0x161bc: 0xe00010a9, 0x161bd: 0xe00010a6, 0x161be: 0xe00010af, 0x161bf: 0xe00010ac,\n\t// Block 0x587, offset 0x161c0\n\t0x161c2: 0xe000a9f1, 0x161c3: 0xa000f402,\n\t0x161c5: 0x40440220, 0x161c6: 0x40440420, 0x161c7: 0x40440620,\n\t0x161c8: 0x40440820, 0x161c9: 0x40440a20, 0x161ca: 0x40440c20, 0x161cb: 0x40440e20,\n\t0x161cc: 0x40441220, 0x161ce: 0x40441620, 0x161cf: 0x40441820,\n\t0x161d0: 0x40441a20, 0x161d2: 0x40441c20, 0x161d3: 0x40441e20,\n\t0x161d4: 0x40442020, 0x161d5: 0xcb393f61, 0x161d6: 0x40442420, 0x161d7: 0x40442620,\n\t0x161d8: 0x40442820, 0x161d9: 0x40442a20, 0x161da: 0x40442c20, 0x161db: 0x40442e20,\n\t0x161dc: 0x40443020, 0x161dd: 0x40443220, 0x161de: 0x40443420, 0x161df: 0x40443620,\n\t0x161e0: 0x40443820, 0x161e1: 0x40443a20, 0x161e2: 0x40443c20, 0x161e3: 0xcb3b3fc1,\n\t0x161e4: 0x40444020, 0x161e5: 0x40444220, 0x161e6: 0x40444420, 0x161e7: 0x40444620,\n\t0x161e8: 0xcb3f3f61, 0x161e9: 0x40444a20, 0x161ea: 0x40444c20, 0x161eb: 0x40444e20,\n\t0x161ec: 0x40445020, 0x161ed: 0x40445220, 0x161ee: 0x40445420, 0x161ef: 0x40445620,\n\t0x161f0: 0xcb413f61, 0x161f1: 0x40446a20, 0x161f2: 0xcb433f61, 0x161f3: 0xcb453f61,\n\t0x161f4: 0x40446820, 0x161f5: 0x40445c20, 0x161f6: 0x40445e20, 0x161f7: 0x40446020,\n\t0x161f8: 0x40446220, 0x161f9: 0x40446420, 0x161fa: 0x40446c20,\n\t0x161fd: 0xa000f502, 0x161fe: 0x40447020, 0x161ff: 0x40447220,\n\t// Block 0x588, offset 0x16200\n\t0x16200: 0x40447420, 0x16201: 0x40447620, 0x16202: 0x40447820, 0x16203: 0x40447a20,\n\t0x16204: 0x40447c20, 0x16206: 0xcb4703b1, 0x16207: 0xc0760401,\n\t0x16208: 0x40448620, 0x1620a: 0x40448820, 0x1620b: 0x40448a20,\n\t0x1620c: 0x00448c83, 0x1620d: 0x82092248, 0x1620e: 0xe000186c,\n\t0x16217: 0x40448c20,\n\t0x16220: 0x40441020, 0x16221: 0x40441420, 0x16222: 0x40447e20, 0x16223: 0x40448020,\n\t0x16226: 0xe0000185, 0x16227: 0xe0000216,\n\t0x16228: 0xe0000331, 0x16229: 0xe000040b, 0x1622a: 0xe00004e0, 0x1622b: 0xe00005aa,\n\t0x1622c: 0xe0000675, 0x1622d: 0xe000071d, 0x1622e: 0xe00007c9, 0x1622f: 0xe000086e,\n\t0x16230: 0x40285a20, 0x16231: 0x40285c20, 0x16232: 0x40285e20, 0x16233: 0x40286020,\n\t0x16234: 0x40286220, 0x16235: 0x40286420,\n\t0x16239: 0x40074e20, 0x1623a: 0xe000a9e5, 0x1623b: 0xcb3d4031,\n\t0x1623c: 0xe000a9f7, 0x1623d: 0xe000a9fd, 0x1623e: 0xe000aa03, 0x1623f: 0xe000a9df,\n\t// Block 0x589, offset 0x16240\n\t0x16240: 0xa000f202, 0x16241: 0x403fba21, 0x16242: 0x403fba20, 0x16243: 0x403fbc20,\n\t0x16244: 0x403fbc20, 0x16245: 0x403fbe20, 0x16246: 0x403fc020, 0x16247: 0x403fcc20,\n\t0x16248: 0x403fce20, 0x16249: 0x403fd020, 0x1624a: 0x403fd220, 0x1624b: 0x403fd420,\n\t0x1624c: 0x403fd820, 0x1624d: 0x403fdc20, 0x1624e: 0x403fde20, 0x1624f: 0x403fe020,\n\t0x16250: 0x403fe220, 0x16251: 0x403fe420, 0x16252: 0x403fe620, 0x16253: 0x403fe820,\n\t0x16254: 0x403fea20, 0x16255: 0xcaac3be1, 0x16256: 0x403fee20, 0x16257: 0x403ff020,\n\t0x16258: 0x403ff420, 0x16259: 0x403ff620, 0x1625a: 0x403ff820, 0x1625b: 0x403ffa20,\n\t0x1625c: 0xcb4a4061, 0x1625d: 0x40400220, 0x1625e: 0x40400420, 0x1625f: 0x40400620,\n\t0x16260: 0x40400820, 0x16261: 0x40400a20, 0x16262: 0x40400e20, 0x16263: 0x40401020,\n\t0x16264: 0x40401220, 0x16265: 0x40401420, 0x16266: 0x40401620, 0x16267: 0x40401820,\n\t0x16268: 0x40401a20, 0x16269: 0xe0001830, 0x1626a: 0x40401c20, 0x1626b: 0x40401e20,\n\t0x1626c: 0x40402020, 0x1626d: 0x40402420, 0x1626e: 0x40402620, 0x1626f: 0x40402820,\n\t0x16270: 0x40402c20, 0x16271: 0xe0001839, 0x16272: 0x40402e20, 0x16273: 0x40403c20,\n\t0x16274: 0xe000a994, 0x16275: 0x40403220, 0x16276: 0x40403420, 0x16277: 0x40403620,\n\t0x16278: 0x40403820, 0x16279: 0x40403a20, 0x1627a: 0x40404c20, 0x1627b: 0x40404e20,\n\t0x1627c: 0xa070f102, 0x1627d: 0x40403c20, 0x1627e: 0x40404a20, 0x1627f: 0x40405620,\n\t// Block 0x58a, offset 0x16280\n\t0x16280: 0xa0000000, 0x16281: 0xa0000000, 0x16282: 0xa0000000, 0x16283: 0xa0000000,\n\t0x16284: 0xa0000000, 0x16285: 0xa0000000, 0x16286: 0xa0000000, 0x16287: 0xa0000000,\n\t0x16288: 0xa0000000, 0x16289: 0x40020020, 0x1628a: 0x40020220, 0x1628b: 0x40020420,\n\t0x1628c: 0x40020620, 0x1628d: 0x40020820, 0x1628e: 0xa0000000, 0x1628f: 0xa0000000,\n\t0x16290: 0xa0000000, 0x16291: 0xa0000000, 0x16292: 0xa0000000, 0x16293: 0xa0000000,\n\t0x16294: 0xa0000000, 0x16295: 0xa0000000, 0x16296: 0xa0000000, 0x16297: 0xa0000000,\n\t0x16298: 0xa0000000, 0x16299: 0xa0000000, 0x1629a: 0xa0000000, 0x1629b: 0xa0000000,\n\t0x1629c: 0xa0000000, 0x1629d: 0xa0000000, 0x1629e: 0xa0000000, 0x1629f: 0xa0000000,\n\t0x162a0: 0x40021220, 0x162a1: 0x4002ba20, 0x162a2: 0x4003e020, 0x162a3: 0x4004ea20,\n\t0x162a4: 0x4027de20, 0x162a5: 0x4004ec20, 0x162a6: 0x4004e620, 0x162a7: 0x4003d220,\n\t0x162a8: 0x4003f420, 0x162a9: 0x4003f620, 0x162aa: 0x4004d820, 0x162ab: 0x40093820,\n\t0x162ac: 0x40024020, 0x162ad: 0x40021a20, 0x162ae: 0x4002e420, 0x162af: 0x4004e220,\n\t0x162b0: 0x4029cc20, 0x162b1: 0x4029ce20, 0x162b2: 0x4029d020, 0x162b3: 0x4029d220,\n\t0x162b4: 0x4029d420, 0x162b5: 0x4029d620, 0x162b6: 0x4029d820, 0x162b7: 0x4029da20,\n\t0x162b8: 0x4029dc20, 0x162b9: 0x4029de20, 0x162ba: 0x40026c20, 0x162bb: 0x40026220,\n\t0x162bc: 0x40094020, 0x162bd: 0x40094220, 0x162be: 0x40094420, 0x162bf: 0x4002c420,\n\t// Block 0x58b, offset 0x162c0\n\t0x162c0: 0x4004d620, 0x162c1: 0x002bde88, 0x162c2: 0x002c0a88, 0x162c3: 0xcb4c0931,\n\t0x162c4: 0x002c6288, 0x162c5: 0x002c9888, 0x162c6: 0x002d0888, 0x162c7: 0xcb5040c2,\n\t0x162c8: 0x002d6888, 0x162c9: 0x002d9a88, 0x162ca: 0x002dcc88, 0x162cb: 0x002dfe88,\n\t0x162cc: 0xc0030002, 0x162cd: 0x002e8288, 0x162ce: 0x002e9e88, 0x162cf: 0x002ee288,\n\t0x162d0: 0x002f2c88, 0x162d1: 0x002f5688, 0x162d2: 0x002f7a88, 0x162d3: 0x002fe688,\n\t0x162d4: 0x00302c88, 0x162d5: 0x00306c88, 0x162d6: 0x0030be88, 0x162d7: 0x0030e288,\n\t0x162d8: 0x0030f688, 0x162d9: 0x00310088, 0x162da: 0xcb580931, 0x162db: 0x4003f820,\n\t0x162dc: 0x4004e420, 0x162dd: 0x4003fa20, 0x162de: 0x40062420, 0x162df: 0x40021620,\n\t0x162e0: 0x40061e20, 0x162e1: 0x402bde20, 0x162e2: 0x402c0a20, 0x162e3: 0xcb4e0931,\n\t0x162e4: 0x402c6220, 0x162e5: 0x402c9820, 0x162e6: 0x402d0820, 0x162e7: 0xcb5440c2,\n\t0x162e8: 0x402d6820, 0x162e9: 0x402d9a20, 0x162ea: 0x402dcc20, 0x162eb: 0x402dfe20,\n\t0x162ec: 0xc0000002, 0x162ed: 0x402e8220, 0x162ee: 0x402e9e20, 0x162ef: 0x402ee220,\n\t0x162f0: 0x402f2c20, 0x162f1: 0x402f5620, 0x162f2: 0x402f7a20, 0x162f3: 0x402fe620,\n\t0x162f4: 0x40302c20, 0x162f5: 0x40306c20, 0x162f6: 0x4030be20, 0x162f7: 0x4030e220,\n\t0x162f8: 0x4030f620, 0x162f9: 0x40310020, 0x162fa: 0xcb5a0931, 0x162fb: 0x4003fc20,\n\t0x162fc: 0x40094820, 0x162fd: 0x4003fe20, 0x162fe: 0x40094c20, 0x162ff: 0xa0000000,\n\t// Block 0x58c, offset 0x16300\n\t0x16300: 0xe0000983, 0x16301: 0xe0000980, 0x16302: 0xe00008fb, 0x16303: 0xe00008f8,\n\t0x16304: 0xe000097d, 0x16305: 0xe000097a, 0x16306: 0xe0000a38, 0x16307: 0xe0000a35,\n\t0x16308: 0xe0000a3e, 0x16309: 0xe0000a3b, 0x1630a: 0x402c3820, 0x1630b: 0x002c3883,\n\t0x1630c: 0xe0000a44, 0x1630d: 0xe0000a41, 0x1630e: 0xe0000a86, 0x1630f: 0xe0000a83,\n\t0x16310: 0xe0000aaa, 0x16311: 0xe0000aa7, 0x16312: 0xe0000b46, 0x16313: 0xe0000b43,\n\t0x16314: 0xe0000aee, 0x16315: 0xe0000aeb, 0x16316: 0xe0000b2c, 0x16317: 0xe0000b29,\n\t0x16318: 0xe0000b40, 0x16319: 0xe0000b3d, 0x1631a: 0xe0000b1a, 0x1631b: 0xe0000b17,\n\t0x1631c: 0xe0000bb8, 0x1631d: 0xe0000bb5, 0x1631e: 0xe0000bb2, 0x1631f: 0xe0000baf,\n\t0x16320: 0x402d2020, 0x16321: 0x002d2083, 0x16322: 0xe0000bca, 0x16323: 0xe0000bc7,\n\t0x16324: 0xe0000bee, 0x16325: 0xe0000beb, 0x16326: 0x402d9820, 0x16327: 0x002d9883,\n\t0x16328: 0xe0000c51, 0x16329: 0xe0000c4e, 0x1632a: 0xe0000c60, 0x1632b: 0xe0000c5d,\n\t0x1632c: 0xe0000c31, 0x1632d: 0xe0000c2e, 0x1632e: 0xe0000c5a, 0x1632f: 0xe0000c57,\n\t0x16330: 0xe0000c54, 0x16331: 0x402da220, 0x16332: 0xf0000a0a, 0x16333: 0xf0000404,\n\t0x16334: 0xe0000c8a, 0x16335: 0xe0000c87, 0x16336: 0xe0000c9f, 0x16337: 0xe0000c9c,\n\t0x16338: 0x402f7220, 0x16339: 0xe0000ccc, 0x1633a: 0xe0000cc9, 0x1633b: 0xe0000cd8,\n\t0x1633c: 0xe0000cd5, 0x1633d: 0xe0000cd2, 0x1633e: 0xe0000ccf, 0x1633f: 0xe0000d04,\n\t// Block 0x58d, offset 0x16340\n\t0x16340: 0xe0000cfe, 0x16341: 0xe0000cf8, 0x16342: 0xe0000cf5, 0x16343: 0xe0000d51,\n\t0x16344: 0xe0000d4e, 0x16345: 0xe0000d6f, 0x16346: 0xe0000d6c, 0x16347: 0xe0000d5d,\n\t0x16348: 0xe0000d5a, 0x16349: 0xf0000404, 0x1634a: 0x002eda88, 0x1634b: 0x402eda20,\n\t0x1634c: 0xe0000e2e, 0x1634d: 0xe0000e2b, 0x1634e: 0xe0000da0, 0x1634f: 0xe0000d9d,\n\t0x16350: 0xe0000de0, 0x16351: 0xe0000ddd, 0x16352: 0xe0000e93, 0x16353: 0xe0000e8f,\n\t0x16354: 0xe0000eca, 0x16355: 0xe0000ec7, 0x16356: 0xe0000edc, 0x16357: 0xe0000ed9,\n\t0x16358: 0xe0000ed0, 0x16359: 0xe0000ecd, 0x1635a: 0xe0000f1f, 0x1635b: 0xe0000f1c,\n\t0x1635c: 0xe0000f2d, 0x1635d: 0xe0000f2a, 0x1635e: 0xe0000f47, 0x1635f: 0xe0000f44,\n\t0x16360: 0xe0000f33, 0x16361: 0xe0000f30, 0x16362: 0xe0000f99, 0x16363: 0xe0000f96,\n\t0x16364: 0xe0000f8a, 0x16365: 0xe0000f87, 0x16366: 0x00303688, 0x16367: 0x40303620,\n\t0x16368: 0xe000102b, 0x16369: 0xe0001028, 0x1636a: 0xe000103f, 0x1636b: 0xe000103c,\n\t0x1636c: 0xe0000fe7, 0x1636d: 0xe0000fe4, 0x1636e: 0xe0000ff9, 0x1636f: 0xe0000ff6,\n\t0x16370: 0xe0001025, 0x16371: 0xe0001022, 0x16372: 0xe0001039, 0x16373: 0xe0001036,\n\t0x16374: 0xe00010d8, 0x16375: 0xe00010d5, 0x16376: 0xe000110e, 0x16377: 0xe000110b,\n\t0x16378: 0xe0001117, 0x16379: 0xe000113b, 0x1637a: 0xe0001138, 0x1637b: 0x40312820,\n\t0x1637c: 0x00312883, 0x1637d: 0xe0001147, 0x1637e: 0xe0001144, 0x1637f: 0xe0000f64,\n\t// Block 0x58e, offset 0x16380\n\t0x16380: 0xe00009bc, 0x16381: 0xe00009c0, 0x16382: 0x002c3a8b, 0x16383: 0xf0000a04,\n\t0x16384: 0x40081c20, 0x16385: 0xe0000a5e, 0x16386: 0xe0000a62, 0x16387: 0x002cc28a,\n\t0x16388: 0x40081e20, 0x16389: 0xf0000a04, 0x1638a: 0x002d2285, 0x1638b: 0x002d688b,\n\t0x1638c: 0x002d688b, 0x1638d: 0x002d688b, 0x1638e: 0x002d6885, 0x1638f: 0xe000aa06,\n\t0x16390: 0x002d9a8b, 0x16391: 0x002d9a8b, 0x16392: 0x002e228b, 0x16393: 0x002e2285,\n\t0x16394: 0x40082020, 0x16395: 0x002e9e8b, 0x16396: 0xf000040a, 0x16397: 0x40082220,\n\t0x16398: 0x40082420, 0x16399: 0x002f2c8b, 0x1639a: 0x002f568b, 0x1639b: 0x002f7a8b,\n\t0x1639c: 0x002f7a8b, 0x1639d: 0x002f7a8b, 0x1639e: 0x40082620, 0x1639f: 0x40082820,\n\t0x163a0: 0xf0001414, 0x163a1: 0xe0000fbd, 0x163a2: 0xf0001414, 0x163a3: 0x40082a20,\n\t0x163a4: 0x00312a8b, 0x163a5: 0x40082c20, 0x163a6: 0x0032a288, 0x163a7: 0x40082e20,\n\t0x163a8: 0x00312a8b, 0x163a9: 0x40083020, 0x163aa: 0x002dfe88, 0x163ab: 0xe000094d,\n\t0x163ac: 0x002c0a8b, 0x163ad: 0x002c3a8b, 0x163ae: 0x40083220, 0x163af: 0x002c9885,\n\t0x163b0: 0x002c988b, 0x163b1: 0x002d088b, 0x163b2: 0x002d1e88, 0x163b3: 0x002e828b,\n\t0x163b4: 0x002ee285, 0x163b5: 0x00389084, 0x163b6: 0x00389284, 0x163b7: 0x00389484,\n\t0x163b8: 0x00389684, 0x163b9: 0x002d9a85, 0x163ba: 0x40083420, 0x163bb: 0xe0000b95,\n\t0x163bc: 0x00327e85, 0x163bd: 0x00325685, 0x163be: 0x0032568b, 0x163bf: 0x00327e8b,\n\t// Block 0x58f, offset 0x163c0\n\t0x163f8: 0xe000aa09, 0x163f9: 0xe0000e97, 0x163fa: 0x4030a820, 0x163fb: 0x402d2020,\n\t0x163fc: 0x402f4a20, 0x163fd: 0x402e9820, 0x163fe: 0x402db220, 0x163ff: 0x402e9a20,\n\t// Block 0x590, offset 0x16400\n\t0x16400: 0xcd3882c1, 0x16401: 0xce0382c1, 0x16402: 0xce0682c1, 0x16403: 0xce0b82c1,\n\t0x16404: 0xce0e9581, 0x16405: 0xce1182c1, 0x16406: 0xce1482c1, 0x16407: 0xce1782c1,\n\t0x16408: 0xce1a95e1, 0x16409: 0xce1c82c1, 0x1640a: 0xce1f82c1, 0x1640b: 0xce2282c1,\n\t0x1640c: 0xce2582c1, 0x1640d: 0xce2882c1, 0x1640e: 0xce2b82c1, 0x1640f: 0xce2e82c1,\n\t0x16410: 0xce3182c1, 0x16411: 0xcb5c4101, 0x16412: 0xce3482c1, 0x16413: 0xce3782c1,\n\t0x16414: 0xcb604201, 0x16415: 0xce3a82c1, 0x16416: 0xce3d82c1, 0x16417: 0xce4082c1,\n\t0x16418: 0xce4382c1, 0x16419: 0xce4682c1, 0x1641a: 0xce4982c1, 0x1641b: 0xce4c82c1,\n\t0x1641c: 0xcb6442d1, 0x1641d: 0xce4f95e1, 0x1641e: 0xcb6b44d1, 0x1641f: 0xce5182c1,\n\t0x16420: 0xce5495e1, 0x16421: 0xce5695e1, 0x16422: 0x404ec420, 0x16423: 0xe000aa45,\n\t0x16424: 0xe000aa4b, 0x16425: 0xcb6f4571, 0x16426: 0xe000aa55, 0x16427: 0xe000aa58,\n\t0x16428: 0xe000aa5b, 0x16429: 0xcb7245e1, 0x1642a: 0xe000ad32, 0x1642b: 0xcd7c82f1,\n\t0x1642c: 0xcd3b82f1, 0x1642d: 0xccb17051, 0x1642e: 0x404eea20, 0x1642f: 0xcdbd8bc1,\n\t0x16430: 0x404ef420, 0x16431: 0xcbeb5561, 0x16432: 0x404f0620, 0x16433: 0x404eec20,\n\t0x16434: 0x404f0a20, 0x16435: 0x404f0220, 0x16436: 0x404f0c20, 0x16437: 0xce099551,\n\t0x16438: 0x404f3020, 0x16439: 0x8209278a, 0x1643a: 0x8209278b, 0x1643b: 0xce589611,\n\t0x1643c: 0xce5c9611, 0x1643d: 0xce609681, 0x1643e: 0x40510e20, 0x1643f: 0xe000aa41,\n\t// Block 0x591, offset 0x16440\n\t0x16440: 0xe00001ac, 0x16441: 0xe0000240, 0x16442: 0xe0000358, 0x16443: 0xe0000432,\n\t0x16444: 0xe0000507, 0x16445: 0xe00005d1, 0x16446: 0xe000069c, 0x16447: 0xe0000744,\n\t0x16448: 0xe00007f0, 0x16449: 0xe0000895, 0x1644a: 0x40032220, 0x1644b: 0x40032420,\n\t0x1644c: 0xe000aa19, 0x1644d: 0xe000aa20, 0x1644e: 0xcb694441, 0x1644f: 0xe000aa48,\n\t0x16450: 0x404ea020, 0x16451: 0x404ea220, 0x16452: 0x404ece20, 0x16453: 0x404ed020,\n\t0x16454: 0x404ed220, 0x16455: 0x404ed420, 0x16456: 0x404ef620, 0x16457: 0x404ef820,\n\t0x16458: 0x404efa20, 0x16459: 0x404efc20, 0x1645a: 0x404e2620, 0x1645b: 0x404e3c20,\n\t0x1645c: 0x404eb820, 0x1645d: 0x404eba20, 0x1645e: 0x40510020, 0x1645f: 0x40510220,\n\t0x16460: 0x40510820, 0x16461: 0x404e4020, 0x16462: 0x404f0c20, 0x16463: 0x404f1820,\n\t0x16464: 0x404f1a20, 0x16465: 0x404ea420, 0x16466: 0x404ec020, 0x16467: 0x404f0e20,\n\t0x16468: 0x404f1020, 0x16469: 0x404f1c20, 0x1646a: 0x404f1e20, 0x1646b: 0x404f2020,\n\t0x1646c: 0x404f2220, 0x1646d: 0x404f2420, 0x1646e: 0x404e5c20, 0x1646f: 0x404ebc20,\n\t0x16470: 0x404ebe20, 0x16471: 0x404ee820, 0x16472: 0x404ee220, 0x16473: 0x404ef020,\n\t0x16474: 0x404ef220, 0x16475: 0x404e1620, 0x16476: 0x404e1a20, 0x16477: 0x404e1e20,\n\t0x16478: 0x404e2a20, 0x16479: 0x404e3620, 0x1647a: 0x404e4420, 0x1647b: 0x404e6420,\n\t0x1647c: 0x404e6c20, 0x1647d: 0x404e7620, 0x1647e: 0x404e7820, 0x1647f: 0x404e8020,\n\t// Block 0x592, offset 0x16480\n\t0x16480: 0x404e9e20, 0x16481: 0x404eac20, 0x16482: 0x40510c20, 0x16483: 0x404ee020,\n\t0x16484: 0x404f0020, 0x16485: 0x404f0420, 0x16486: 0x404f1220, 0x16487: 0x404f2620,\n\t0x16488: 0x404f2a20, 0x16489: 0x404f2e20, 0x1648a: 0x404f3020, 0x1648b: 0x404f2820,\n\t0x1648c: 0x404f2c20, 0x1648d: 0xadc11302, 0x1648e: 0x404e7c20, 0x1648f: 0x404f3220,\n\t0x16490: 0xe00001af, 0x16491: 0xe0000243, 0x16492: 0xe000035b, 0x16493: 0xe0000435,\n\t0x16494: 0xe000050a, 0x16495: 0xe00005d4, 0x16496: 0xe000069f, 0x16497: 0xe0000747,\n\t0x16498: 0xe00007f3, 0x16499: 0xe0000898, 0x1649a: 0x404f3420, 0x1649b: 0x404f3620,\n\t0x1649c: 0x404ee420, 0x1649d: 0x404f0820, 0x1649e: 0x4007a820, 0x1649f: 0x4007aa20,\n\t0x164a0: 0x00379888, 0x164a1: 0x00379c88, 0x164a2: 0x0037a088, 0x164a3: 0x0037a488,\n\t0x164a4: 0x0037a888, 0x164a5: 0x0037ac88, 0x164a6: 0x0037b088, 0x164a7: 0x0037b888,\n\t0x164a8: 0x0037bc88, 0x164a9: 0x0037c088, 0x164aa: 0x0037c488, 0x164ab: 0x0037c888,\n\t0x164ac: 0x0037cc88, 0x164ad: 0x0037d488, 0x164ae: 0x0037d888, 0x164af: 0x0037dc88,\n\t0x164b0: 0x0037e088, 0x164b1: 0x0037e488, 0x164b2: 0x0037e888, 0x164b3: 0x0037f088,\n\t0x164b4: 0x0037f488, 0x164b5: 0x0037f888, 0x164b6: 0x0037fc88, 0x164b7: 0x00380088,\n\t0x164b8: 0x00380488, 0x164b9: 0x00380888, 0x164ba: 0x00380c88, 0x164bb: 0x00381088,\n\t0x164bc: 0x00381488, 0x164bd: 0x00381888, 0x164be: 0x00381c88, 0x164bf: 0x00382488,\n\t// Block 0x593, offset 0x164c0\n\t0x164c0: 0xa0000000, 0x164c1: 0xa0000000, 0x164c2: 0xa0000000, 0x164c3: 0xa0000000,\n\t0x164c4: 0xa0000000, 0x164c5: 0xa0000000, 0x164c6: 0xa0000000, 0x164c7: 0xa0000000,\n\t0x164c8: 0xa0000000, 0x164c9: 0x40020020, 0x164ca: 0x40020220, 0x164cb: 0x40020420,\n\t0x164cc: 0x40020620, 0x164cd: 0x40020820, 0x164ce: 0xa0000000, 0x164cf: 0xa0000000,\n\t0x164d0: 0xa0000000, 0x164d1: 0xa0000000, 0x164d2: 0xa0000000, 0x164d3: 0xa0000000,\n\t0x164d4: 0xa0000000, 0x164d5: 0xa0000000, 0x164d6: 0xa0000000, 0x164d7: 0xa0000000,\n\t0x164d8: 0xa0000000, 0x164d9: 0xa0000000, 0x164da: 0xa0000000, 0x164db: 0xa0000000,\n\t0x164dc: 0xa0000000, 0x164dd: 0xa0000000, 0x164de: 0xa0000000, 0x164df: 0xa0000000,\n\t0x164e0: 0x40021220, 0x164e1: 0x4002ba20, 0x164e2: 0x4003e020, 0x164e3: 0x4004ea20,\n\t0x164e4: 0x4027de20, 0x164e5: 0x4004ec20, 0x164e6: 0x4004e620, 0x164e7: 0x4003d220,\n\t0x164e8: 0x4003f420, 0x164e9: 0x4003f620, 0x164ea: 0x4004d820, 0x164eb: 0x40093820,\n\t0x164ec: 0x40024020, 0x164ed: 0x40021a20, 0x164ee: 0x4002e420, 0x164ef: 0x4004e220,\n\t0x164f0: 0x4029cc20, 0x164f1: 0x4029ce20, 0x164f2: 0x4029d020, 0x164f3: 0x4029d220,\n\t0x164f4: 0x4029d420, 0x164f5: 0x4029d620, 0x164f6: 0x4029d820, 0x164f7: 0x4029da20,\n\t0x164f8: 0x4029dc20, 0x164f9: 0x4029de20, 0x164fa: 0x40026c20, 0x164fb: 0x40026220,\n\t0x164fc: 0x40094020, 0x164fd: 0x40094220, 0x164fe: 0x40094420, 0x164ff: 0x4002c420,\n\t// Block 0x594, offset 0x16500\n\t0x16500: 0x4004d620, 0x16501: 0xce660b93, 0x16502: 0x002c0a88, 0x16503: 0x002c3a88,\n\t0x16504: 0x002c6288, 0x16505: 0xc39e0be1, 0x16506: 0x002d0888, 0x16507: 0x002d2288,\n\t0x16508: 0x002d6888, 0x16509: 0x002d9a88, 0x1650a: 0x002dcc88, 0x1650b: 0x002dfe88,\n\t0x1650c: 0xc0030002, 0x1650d: 0x002e8288, 0x1650e: 0x002e9e88, 0x1650f: 0xc3a30b21,\n\t0x16510: 0x002f2c88, 0x16511: 0x002f5688, 0x16512: 0x002f7a88, 0x16513: 0x002fe688,\n\t0x16514: 0x00302c88, 0x16515: 0xc3900b21, 0x16516: 0x0030be88, 0x16517: 0x0030e288,\n\t0x16518: 0x0030f688, 0x16519: 0x00310088, 0x1651a: 0x00312a88, 0x1651b: 0x4003f820,\n\t0x1651c: 0x4004e420, 0x1651d: 0x4003fa20, 0x1651e: 0x40062420, 0x1651f: 0x40021620,\n\t0x16520: 0x40061e20, 0x16521: 0xce620b52, 0x16522: 0x402c0a20, 0x16523: 0x402c3a20,\n\t0x16524: 0x402c6220, 0x16525: 0xc39c0be1, 0x16526: 0x402d0820, 0x16527: 0x402d2220,\n\t0x16528: 0x402d6820, 0x16529: 0x402d9a20, 0x1652a: 0x402dcc20, 0x1652b: 0x402dfe20,\n\t0x1652c: 0xc0000002, 0x1652d: 0x402e8220, 0x1652e: 0x402e9e20, 0x1652f: 0xc3a00b21,\n\t0x16530: 0x402f2c20, 0x16531: 0x402f5620, 0x16532: 0x402f7a20, 0x16533: 0x402fe620,\n\t0x16534: 0x40302c20, 0x16535: 0xc38d0b21, 0x16536: 0x4030be20, 0x16537: 0x4030e220,\n\t0x16538: 0x4030f620, 0x16539: 0x40310020, 0x1653a: 0x40312a20, 0x1653b: 0x4003fc20,\n\t0x1653c: 0x40094820, 0x1653d: 0x4003fe20, 0x1653e: 0x40094c20, 0x1653f: 0xa0000000,\n\t// Block 0x595, offset 0x16540\n\t0x16540: 0xa0000000, 0x16541: 0xa0000000, 0x16542: 0xa0000000, 0x16543: 0xa0000000,\n\t0x16544: 0xa0000000, 0x16545: 0xa0000000, 0x16546: 0xa0000000, 0x16547: 0xa0000000,\n\t0x16548: 0xa0000000, 0x16549: 0x40020020, 0x1654a: 0x40020220, 0x1654b: 0x40020420,\n\t0x1654c: 0x40020620, 0x1654d: 0x40020820, 0x1654e: 0xa0000000, 0x1654f: 0xa0000000,\n\t0x16550: 0xa0000000, 0x16551: 0xa0000000, 0x16552: 0xa0000000, 0x16553: 0xa0000000,\n\t0x16554: 0xa0000000, 0x16555: 0xa0000000, 0x16556: 0xa0000000, 0x16557: 0xa0000000,\n\t0x16558: 0xa0000000, 0x16559: 0xa0000000, 0x1655a: 0xa0000000, 0x1655b: 0xa0000000,\n\t0x1655c: 0xa0000000, 0x1655d: 0xa0000000, 0x1655e: 0xa0000000, 0x1655f: 0xa0000000,\n\t0x16560: 0x40021220, 0x16561: 0x4002ba20, 0x16562: 0x4003e020, 0x16563: 0x4004ea20,\n\t0x16564: 0x4027de20, 0x16565: 0x4004ec20, 0x16566: 0x4004e620, 0x16567: 0x4003d220,\n\t0x16568: 0x4003f420, 0x16569: 0x4003f620, 0x1656a: 0x4004d820, 0x1656b: 0x40093820,\n\t0x1656c: 0x40024020, 0x1656d: 0x40021a20, 0x1656e: 0x4002e420, 0x1656f: 0x4004e220,\n\t0x16570: 0x4029cc20, 0x16571: 0x4029ce20, 0x16572: 0x4029d020, 0x16573: 0x4029d220,\n\t0x16574: 0x4029d420, 0x16575: 0x4029d620, 0x16576: 0x4029d820, 0x16577: 0x4029da20,\n\t0x16578: 0x4029dc20, 0x16579: 0x4029de20, 0x1657a: 0x40026c20, 0x1657b: 0x40026220,\n\t0x1657c: 0x40094020, 0x1657d: 0x40094220, 0x1657e: 0x40094420, 0x1657f: 0x4002c420,\n\t// Block 0x596, offset 0x16580\n\t0x16580: 0x4004d620, 0x16581: 0x002bde88, 0x16582: 0x002c0a88, 0x16583: 0x002c3a88,\n\t0x16584: 0x002c6288, 0x16585: 0xce6d2741, 0x16586: 0x002d0888, 0x16587: 0x002d2288,\n\t0x16588: 0x002d6888, 0x16589: 0x002d9a88, 0x1658a: 0x002dcc88, 0x1658b: 0x002dfe88,\n\t0x1658c: 0xc0030002, 0x1658d: 0x002e8288, 0x1658e: 0x002e9e88, 0x1658f: 0xc33f2741,\n\t0x16590: 0x002f2c88, 0x16591: 0x002f5688, 0x16592: 0x002f7a88, 0x16593: 0xc3430991,\n\t0x16594: 0x00302c88, 0x16595: 0x00306c88, 0x16596: 0x0030be88, 0x16597: 0x0030e288,\n\t0x16598: 0x0030f688, 0x16599: 0x00310088, 0x1659a: 0x00312a88, 0x1659b: 0x4003f820,\n\t0x1659c: 0x4004e420, 0x1659d: 0x4003fa20, 0x1659e: 0x40062420, 0x1659f: 0x40021620,\n\t0x165a0: 0x40061e20, 0x165a1: 0x402bde20, 0x165a2: 0x402c0a20, 0x165a3: 0x402c3a20,\n\t0x165a4: 0x402c6220, 0x165a5: 0xce6b2741, 0x165a6: 0x402d0820, 0x165a7: 0x402d2220,\n\t0x165a8: 0x402d6820, 0x165a9: 0x402d9a20, 0x165aa: 0x402dcc20, 0x165ab: 0x402dfe20,\n\t0x165ac: 0xc0000002, 0x165ad: 0x402e8220, 0x165ae: 0x402e9e20, 0x165af: 0xc33d2741,\n\t0x165b0: 0x402f2c20, 0x165b1: 0x402f5620, 0x165b2: 0x402f7a20, 0x165b3: 0xc3410991,\n\t0x165b4: 0x40302c20, 0x165b5: 0x40306c20, 0x165b6: 0x4030be20, 0x165b7: 0x4030e220,\n\t0x165b8: 0x4030f620, 0x165b9: 0x40310020, 0x165ba: 0x40312a20, 0x165bb: 0x4003fc20,\n\t0x165bc: 0x40094820, 0x165bd: 0x4003fe20, 0x165be: 0x40094c20, 0x165bf: 0xa0000000,\n\t// Block 0x597, offset 0x165c0\n\t0x165c0: 0xe00008f5, 0x165c1: 0xe00008ef, 0x165c2: 0xe0000921, 0x165c3: 0xe0000969,\n\t0x165c4: 0xe000095b, 0x165c5: 0xe000094d, 0x165c6: 0xe00009dd, 0x165c7: 0xe0000a53,\n\t0x165c8: 0xe0000ae8, 0x165c9: 0xe0000ae2, 0x165ca: 0x002c9a83, 0x165cb: 0xe0000b20,\n\t0x165cc: 0xe0000c2b, 0x165cd: 0xe0000c25, 0x165ce: 0xe0000c37, 0x165cf: 0xe0000c43,\n\t0x165d0: 0xe0000ab3, 0x165d1: 0xe0000d63, 0x165d2: 0xe0000d9a, 0x165d3: 0xe0000d94,\n\t0x165d4: 0x002ee483, 0x165d5: 0xe0000de6, 0x165d6: 0xe0000dd2, 0x165d7: 0x40093e20,\n\t0x165d8: 0xe0000e12, 0x165d9: 0xe0000fe1, 0x165da: 0xe0000fdb, 0x165db: 0xe0000fed,\n\t0x165dc: 0xe0000fff, 0x165dd: 0xe0001102, 0x165de: 0x00318888, 0x165df: 0xe0000f7b,\n\t0x165e0: 0xe00008f2, 0x165e1: 0xe00008ec, 0x165e2: 0xe000091e, 0x165e3: 0xe0000966,\n\t0x165e4: 0xe0000958, 0x165e5: 0xe000094a, 0x165e6: 0xe00009d5, 0x165e7: 0xe0000a4d,\n\t0x165e8: 0xe0000ae5, 0x165e9: 0xe0000adf, 0x165ea: 0x402c9a20, 0x165eb: 0xe0000b1d,\n\t0x165ec: 0xe0000c28, 0x165ed: 0xe0000c22, 0x165ee: 0xe0000c34, 0x165ef: 0xe0000c40,\n\t0x165f0: 0xe0000aad, 0x165f1: 0xe0000d60, 0x165f2: 0xe0000d97, 0x165f3: 0xe0000d91,\n\t0x165f4: 0x402ee420, 0x165f5: 0xe0000de3, 0x165f6: 0xe0000dcf, 0x165f7: 0x40093c20,\n\t0x165f8: 0xe0000e0f, 0x165f9: 0xe0000fde, 0x165fa: 0xe0000fd8, 0x165fb: 0xe0000fea,\n\t0x165fc: 0xe0000ffc, 0x165fd: 0xe00010ff, 0x165fe: 0x40318820, 0x165ff: 0xe0001114,\n\t// Block 0x598, offset 0x16600\n\t0x16600: 0xe0000cfe, 0x16601: 0xe0000cf8, 0x16602: 0xe0000cf5, 0x16603: 0xe0000d51,\n\t0x16604: 0xe0000d4e, 0x16605: 0xe0000d6f, 0x16606: 0xe0000d6c, 0x16607: 0xe0000d5d,\n\t0x16608: 0xe0000d5a, 0x16609: 0xf0000404, 0x1660a: 0x002eda88, 0x1660b: 0x402eda20,\n\t0x1660c: 0xe0000e2e, 0x1660d: 0xe0000e2b, 0x1660e: 0xe0000da0, 0x1660f: 0xe0000d9d,\n\t0x16610: 0xe0000de0, 0x16611: 0xe0000ddd, 0x16612: 0xe0000e93, 0x16613: 0xe0000e8f,\n\t0x16614: 0xe0000eca, 0x16615: 0xe0000ec7, 0x16616: 0xe0000edc, 0x16617: 0xe0000ed9,\n\t0x16618: 0xe0000ed0, 0x16619: 0xe0000ecd, 0x1661a: 0xe0000f1f, 0x1661b: 0xe0000f1c,\n\t0x1661c: 0xe0000f2d, 0x1661d: 0xe0000f2a, 0x1661e: 0xe0000f47, 0x1661f: 0xe0000f44,\n\t0x16620: 0x002fe883, 0x16621: 0x402fe820, 0x16622: 0xe0000f99, 0x16623: 0xe0000f96,\n\t0x16624: 0xe0000f8a, 0x16625: 0xe0000f87, 0x16626: 0x00303688, 0x16627: 0x40303620,\n\t0x16628: 0xe000102b, 0x16629: 0xe0001028, 0x1662a: 0xe000103f, 0x1662b: 0xe000103c,\n\t0x1662c: 0xe0000fe7, 0x1662d: 0xe0000fe4, 0x1662e: 0xe0000ff9, 0x1662f: 0xe0000ff6,\n\t0x16630: 0xe0001025, 0x16631: 0xe0001022, 0x16632: 0xe0001039, 0x16633: 0xe0001036,\n\t0x16634: 0xe00010d8, 0x16635: 0xe00010d5, 0x16636: 0xe000110e, 0x16637: 0xe000110b,\n\t0x16638: 0xe0001117, 0x16639: 0xe000113b, 0x1663a: 0xe0001138, 0x1663b: 0xe000114d,\n\t0x1663c: 0xe000114a, 0x1663d: 0xe0001147, 0x1663e: 0xe0001144, 0x1663f: 0xe0000f64,\n\t// Block 0x599, offset 0x16640\n\t0x16640: 0xe00010d2, 0x16641: 0xe00010cf, 0x16642: 0xe00010cc, 0x16643: 0xe00010c9,\n\t0x16644: 0xe00010e1, 0x16645: 0xe00010de, 0x16646: 0xe00010e7, 0x16647: 0xe00010e4,\n\t0x16648: 0xe00010ed, 0x16649: 0xe00010ea, 0x1664a: 0xe00010fc, 0x1664b: 0xe00010f9,\n\t0x1664c: 0xe00010f6, 0x1664d: 0xe00010f3, 0x1664e: 0xe0001123, 0x1664f: 0xe0001120,\n\t0x16650: 0xe0001141, 0x16651: 0xe000113e, 0x16652: 0xe0001153, 0x16653: 0xe0001150,\n\t0x16654: 0xe0001159, 0x16655: 0xe0001156, 0x16656: 0xe0000c15, 0x16657: 0xe0000f8d,\n\t0x16658: 0xe00010db, 0x16659: 0xe0001111, 0x1665a: 0xf0000404, 0x1665b: 0xe0000f70,\n\t0x1665c: 0x40300420, 0x1665d: 0x40300620, 0x1665e: 0xe0000f7f, 0x1665f: 0x402c9620,\n\t0x16660: 0xe000099b, 0x16661: 0xe0000998, 0x16662: 0xe0000989, 0x16663: 0xe0000986,\n\t0x16664: 0xe0000928, 0x16665: 0xe0000924, 0x16666: 0xe0000930, 0x16667: 0xe000092c,\n\t0x16668: 0xe0000940, 0x16669: 0xe000093c, 0x1666a: 0xe0000938, 0x1666b: 0xe0000934,\n\t0x1666c: 0xe00009aa, 0x1666d: 0xe00009a6, 0x1666e: 0xe0000902, 0x1666f: 0xe00008fe,\n\t0x16670: 0xe000090a, 0x16671: 0xe0000906, 0x16672: 0xe000091a, 0x16673: 0xe0000916,\n\t0x16674: 0xe0000912, 0x16675: 0xe000090e, 0x16676: 0xe00009a2, 0x16677: 0xe000099e,\n\t0x16678: 0xe0000b6e, 0x16679: 0xe0000b6b, 0x1667a: 0xe0000b5c, 0x1667b: 0xe0000b59,\n\t0x1667c: 0xe0000b26, 0x1667d: 0xe0000b23, 0x1667e: 0xe000ad41, 0x1667f: 0xe000ad3e,\n\t// Block 0x59a, offset 0x16680\n\t0x16680: 0xe000ad47, 0x16681: 0xe000ad44, 0x16682: 0xe000ad53, 0x16683: 0xe000ad50,\n\t0x16684: 0xe000ad4d, 0x16685: 0xe000ad4a, 0x16686: 0xe000ad59, 0x16687: 0xe000ad56,\n\t0x16688: 0xe0000c66, 0x16689: 0xe0000c63, 0x1668a: 0xe0000c78, 0x1668b: 0xe0000c75,\n\t0x1668c: 0xe0000e84, 0x1668d: 0xe0000e81, 0x1668e: 0xe0000e44, 0x1668f: 0xe0000e41,\n\t0x16690: 0xe000ad5f, 0x16691: 0xe000ad5c, 0x16692: 0xe000ad65, 0x16693: 0xe000ad62,\n\t0x16694: 0xe000ad6b, 0x16695: 0xe000ad68, 0x16696: 0xe0002946, 0x16697: 0xe0002943,\n\t0x16698: 0xe000ad71, 0x16699: 0xe000ad6e, 0x1669a: 0xe0000e5d, 0x1669b: 0xe0000e59,\n\t0x1669c: 0xe0000e65, 0x1669d: 0xe0000e61, 0x1669e: 0xe0000e75, 0x1669f: 0xe0000e71,\n\t0x166a0: 0xe0000e6d, 0x166a1: 0xe0000e69, 0x166a2: 0xe0000e7d, 0x166a3: 0xe0000e79,\n\t0x166a4: 0xe000108d, 0x166a5: 0xe000108a, 0x166a6: 0xe000104d, 0x166a7: 0xe000104a,\n\t0x166a8: 0xe0001066, 0x166a9: 0xe0001062, 0x166aa: 0xe000106e, 0x166ab: 0xe000106a,\n\t0x166ac: 0xe000107e, 0x166ad: 0xe000107a, 0x166ae: 0xe0001076, 0x166af: 0xe0001072,\n\t0x166b0: 0xe0001086, 0x166b1: 0xe0001082, 0x166b2: 0xe0001108, 0x166b3: 0xe0001105,\n\t0x166b4: 0xe0001135, 0x166b5: 0xe0001132, 0x166b6: 0xe000112f, 0x166b7: 0xe000112c,\n\t0x166b8: 0xe000111d, 0x166b9: 0xe000111a, 0x166ba: 0xe0000d0a, 0x166bb: 0xe0000d07,\n\t0x166bc: 0x0030d888, 0x166bd: 0x4030d820, 0x166be: 0x00312088, 0x166bf: 0x40312020,\n\t// Block 0x59b, offset 0x166c0\n\t0x166c0: 0xa0000000, 0x166c1: 0xa0000000, 0x166c2: 0xa0000000, 0x166c3: 0xa0000000,\n\t0x166c4: 0xa0000000, 0x166c5: 0xa0000000, 0x166c6: 0xa0000000, 0x166c7: 0xa0000000,\n\t0x166c8: 0xa0000000, 0x166c9: 0x40020020, 0x166ca: 0x40020220, 0x166cb: 0x40020420,\n\t0x166cc: 0x40020620, 0x166cd: 0x40020820, 0x166ce: 0xa0000000, 0x166cf: 0xa0000000,\n\t0x166d0: 0xa0000000, 0x166d1: 0xa0000000, 0x166d2: 0xa0000000, 0x166d3: 0xa0000000,\n\t0x166d4: 0xa0000000, 0x166d5: 0xa0000000, 0x166d6: 0xa0000000, 0x166d7: 0xa0000000,\n\t0x166d8: 0xa0000000, 0x166d9: 0xa0000000, 0x166da: 0xa0000000, 0x166db: 0xa0000000,\n\t0x166dc: 0xa0000000, 0x166dd: 0xa0000000, 0x166de: 0xa0000000, 0x166df: 0xa0000000,\n\t0x166e0: 0x40021220, 0x166e1: 0x4002ba20, 0x166e2: 0x4003e020, 0x166e3: 0x4004ea20,\n\t0x166e4: 0x4027de20, 0x166e5: 0x4004ec20, 0x166e6: 0x4004e620, 0x166e7: 0x4003d220,\n\t0x166e8: 0x4003f420, 0x166e9: 0x4003f620, 0x166ea: 0x4004d820, 0x166eb: 0x40093820,\n\t0x166ec: 0x40024020, 0x166ed: 0x40021a20, 0x166ee: 0x4002e420, 0x166ef: 0x4004e220,\n\t0x166f0: 0x4029cc20, 0x166f1: 0x4029ce20, 0x166f2: 0x4029d020, 0x166f3: 0x4029d220,\n\t0x166f4: 0x4029d420, 0x166f5: 0x4029d620, 0x166f6: 0x4029d820, 0x166f7: 0x4029da20,\n\t0x166f8: 0x4029dc20, 0x166f9: 0x4029de20, 0x166fa: 0x40026c20, 0x166fb: 0x40026220,\n\t0x166fc: 0x40094020, 0x166fd: 0x40094220, 0x166fe: 0x40094420, 0x166ff: 0x4002c420,\n\t// Block 0x59c, offset 0x16700\n\t0x16700: 0x4004d620, 0x16701: 0x002bde88, 0x16702: 0x002c0a88, 0x16703: 0xce7109c2,\n\t0x16704: 0xce7609c2, 0x16705: 0x002c9888, 0x16706: 0x002d0888, 0x16707: 0x002d2288,\n\t0x16708: 0x002d6888, 0x16709: 0x002d9a88, 0x1670a: 0x002dcc88, 0x1670b: 0xce7b09c2,\n\t0x1670c: 0xc0030002, 0x1670d: 0x002e8288, 0x1670e: 0xce8026f2, 0x1670f: 0x002ee288,\n\t0x16710: 0xce8509c2, 0x16711: 0x002f5688, 0x16712: 0x002f7a88, 0x16713: 0xce8a09b1,\n\t0x16714: 0x00302c88, 0x16715: 0x00306c88, 0x16716: 0x0030be88, 0x16717: 0x0030e288,\n\t0x16718: 0x0030f688, 0x16719: 0x00310088, 0x1671a: 0x00312a88, 0x1671b: 0x4003f820,\n\t0x1671c: 0x4004e420, 0x1671d: 0x4003fa20, 0x1671e: 0x40062420, 0x1671f: 0x40021620,\n\t0x16720: 0x40061e20, 0x16721: 0x402bde20, 0x16722: 0x402c0a20, 0x16723: 0xce6f09b1,\n\t0x16724: 0xce7409b1, 0x16725: 0x402c9820, 0x16726: 0x402d0820, 0x16727: 0x402d2220,\n\t0x16728: 0x402d6820, 0x16729: 0x402d9a20, 0x1672a: 0x402dcc20, 0x1672b: 0xce7909b1,\n\t0x1672c: 0xc0000002, 0x1672d: 0x402e8220, 0x1672e: 0xce7e26e1, 0x1672f: 0x402ee220,\n\t0x16730: 0xce8309b1, 0x16731: 0x402f5620, 0x16732: 0x402f7a20, 0x16733: 0xce8809b1,\n\t0x16734: 0x40302c20, 0x16735: 0x40306c20, 0x16736: 0x4030be20, 0x16737: 0x4030e220,\n\t0x16738: 0x4030f620, 0x16739: 0x40310020, 0x1673a: 0x40312a20, 0x1673b: 0x4003fc20,\n\t0x1673c: 0x40094820, 0x1673d: 0x4003fe20, 0x1673e: 0x40094c20, 0x1673f: 0xa0000000,\n\t// Block 0x59d, offset 0x16740\n\t0x16741: 0x40421220, 0x16742: 0x40421420, 0x16743: 0x40421620,\n\t0x16745: 0x4041f620, 0x16746: 0x4041f820, 0x16747: 0x4041fa20,\n\t0x16748: 0x4041fc20, 0x16749: 0x4041fe20, 0x1674a: 0x40420020, 0x1674b: 0x40420220,\n\t0x1674c: 0x40420620, 0x1674f: 0x40420a20,\n\t0x16750: 0x40420c20, 0x16753: 0x40420e20,\n\t0x16754: 0x40421020, 0x16755: 0xce8c96b1, 0x16756: 0x40421420, 0x16757: 0x40421620,\n\t0x16758: 0x40421820, 0x16759: 0x40421a20, 0x1675a: 0x40421c20, 0x1675b: 0x40421e20,\n\t0x1675c: 0x40422020, 0x1675d: 0x40422220, 0x1675e: 0x40422420, 0x1675f: 0x40422620,\n\t0x16760: 0x40422820, 0x16761: 0x40422a20, 0x16762: 0x40422c20, 0x16763: 0x40422e20,\n\t0x16764: 0x40423020, 0x16765: 0x40423220, 0x16766: 0x40423420, 0x16767: 0x40423620,\n\t0x16768: 0x40423820, 0x1676a: 0x40423a20, 0x1676b: 0x40423c20,\n\t0x1676c: 0x40423e20, 0x1676d: 0x40424020, 0x1676e: 0x40424220, 0x1676f: 0x40424420,\n\t0x16770: 0x40424820, 0x16772: 0x40424a20, 0x16773: 0x40424c20,\n\t0x16775: 0x40424e20, 0x16776: 0x40425220, 0x16777: 0x40425420,\n\t0x16778: 0x40425620, 0x16779: 0x40425820,\n\t0x1677c: 0xa070f102, 0x1677d: 0x40425a20, 0x1677e: 0x40425c20, 0x1677f: 0x40425e20,\n\t// Block 0x59e, offset 0x16780\n\t0x16780: 0x40426020, 0x16781: 0x40426220, 0x16782: 0x40426420, 0x16783: 0x40426620,\n\t0x16784: 0x40426820, 0x16787: 0xc05d01e1,\n\t0x16788: 0x40427020, 0x1678b: 0x40427220,\n\t0x1678c: 0x40427420, 0x1678d: 0x8209213b,\n\t0x16796: 0x40427820, 0x16797: 0x40427a20,\n\t0x1679c: 0xe000185d, 0x1679d: 0xe0001860, 0x1679f: 0x40424421,\n\t0x167a0: 0x40420420, 0x167a1: 0x40420820, 0x167a2: 0x40426a20, 0x167a3: 0x40426c20,\n\t0x167a6: 0xe0000176, 0x167a7: 0xe0000204,\n\t0x167a8: 0xe000031f, 0x167a9: 0xe00003f9, 0x167aa: 0xe00004d4, 0x167ab: 0xe000059e,\n\t0x167ac: 0xe0000669, 0x167ad: 0xe0000711, 0x167ae: 0xe00007bd, 0x167af: 0xe0000862,\n\t0x167b0: 0x40073c20, 0x167b1: 0x40425020, 0x167b2: 0x40283c20, 0x167b3: 0x40283e20,\n\t0x167b4: 0x40284020, 0x167b5: 0x40284220, 0x167b6: 0x40284420, 0x167b7: 0x40284620,\n\t// Block 0x59f, offset 0x167c0\n\t0x167c1: 0xa000f902, 0x167c2: 0xa000f802, 0x167c3: 0xa000f402,\n\t0x167c5: 0x40410620, 0x167c6: 0x40410820, 0x167c7: 0x40411020,\n\t0x167c8: 0x40411220, 0x167c9: 0x40410020, 0x167ca: 0x40410220,\n\t0x167cf: 0x40411420,\n\t0x167d0: 0x40410a20, 0x167d3: 0x40410420,\n\t0x167d4: 0x40410c20, 0x167d5: 0x40411c20, 0x167d6: 0x40411e20, 0x167d7: 0x40412020,\n\t0x167d8: 0x40412220, 0x167d9: 0x40412420, 0x167da: 0x40412620, 0x167db: 0x40412820,\n\t0x167dc: 0x40412a20, 0x167dd: 0x40412c20, 0x167de: 0x40412e20, 0x167df: 0x40413020,\n\t0x167e0: 0x40413220, 0x167e1: 0x40413420, 0x167e2: 0x40413620, 0x167e3: 0x40413820,\n\t0x167e4: 0x40413a20, 0x167e5: 0x40413c20, 0x167e6: 0x40413e20, 0x167e7: 0x40414020,\n\t0x167e8: 0x40414220, 0x167ea: 0x40414420, 0x167eb: 0x40414620,\n\t0x167ec: 0x40414820, 0x167ed: 0x40414a20, 0x167ee: 0x40414c20, 0x167ef: 0x40414e20,\n\t0x167f0: 0x40415220, 0x167f2: 0x40415420, 0x167f3: 0xe000ad83,\n\t0x167f5: 0x40415620, 0x167f6: 0xe000ad74,\n\t0x167f8: 0x40411620, 0x167f9: 0x40411820,\n\t0x167fc: 0xa000fa02, 0x167fe: 0x40415a20, 0x167ff: 0x40415c20,\n\t// Block 0x5a0, offset 0x16800\n\t0x16800: 0x40415e20, 0x16801: 0x40416020, 0x16802: 0x40416220,\n\t0x16807: 0x40416420,\n\t0x16808: 0x40416620, 0x1680b: 0x40416820,\n\t0x1680c: 0x40416a20, 0x1680d: 0x40415a20,\n\t0x16811: 0x40411a20,\n\t0x16819: 0xe000ad77, 0x1681a: 0xe000ad7a, 0x1681b: 0xe000ad7d,\n\t0x1681c: 0x40415820, 0x1681e: 0xe000ad80,\n\t0x16826: 0xe0000170, 0x16827: 0xe00001fe,\n\t0x16828: 0xe0000319, 0x16829: 0xe00003f3, 0x1682a: 0xe00004ce, 0x1682b: 0xe0000598,\n\t0x1682c: 0xe0000663, 0x1682d: 0xe000070b, 0x1682e: 0xe00007b7, 0x1682f: 0xe000085c,\n\t0x16830: 0xa000f702, 0x16831: 0xa000f602, 0x16832: 0x40410e20, 0x16833: 0x4040fe20,\n\t0x16834: 0x4040fc20, 0x16835: 0x40415020,\n\t// Block 0x5a1, offset 0x16840\n\t0x16840: 0xa0000000, 0x16841: 0xa0000000, 0x16842: 0xa0000000, 0x16843: 0xa0000000,\n\t0x16844: 0xa0000000, 0x16845: 0xa0000000, 0x16846: 0xa0000000, 0x16847: 0xa0000000,\n\t0x16848: 0xa0000000, 0x16849: 0x40020020, 0x1684a: 0x40020220, 0x1684b: 0x40020420,\n\t0x1684c: 0x40020620, 0x1684d: 0x40020820, 0x1684e: 0xa0000000, 0x1684f: 0xa0000000,\n\t0x16850: 0xa0000000, 0x16851: 0xa0000000, 0x16852: 0xa0000000, 0x16853: 0xa0000000,\n\t0x16854: 0xa0000000, 0x16855: 0xa0000000, 0x16856: 0xa0000000, 0x16857: 0xa0000000,\n\t0x16858: 0xa0000000, 0x16859: 0xa0000000, 0x1685a: 0xa0000000, 0x1685b: 0xa0000000,\n\t0x1685c: 0xa0000000, 0x1685d: 0xa0000000, 0x1685e: 0xa0000000, 0x1685f: 0xa0000000,\n\t0x16860: 0x40021220, 0x16861: 0x4002ba20, 0x16862: 0x4003e020, 0x16863: 0x4004ea20,\n\t0x16864: 0x4027de20, 0x16865: 0x4004ec20, 0x16866: 0x4004e620, 0x16867: 0x4003d220,\n\t0x16868: 0x4003f420, 0x16869: 0x4003f620, 0x1686a: 0x4004d820, 0x1686b: 0x40093820,\n\t0x1686c: 0x40024020, 0x1686d: 0x40021a20, 0x1686e: 0x4002e420, 0x1686f: 0x4004e220,\n\t0x16870: 0x4029cc20, 0x16871: 0x4029ce20, 0x16872: 0x4029d020, 0x16873: 0x4029d220,\n\t0x16874: 0x4029d420, 0x16875: 0x4029d620, 0x16876: 0x4029d820, 0x16877: 0x4029da20,\n\t0x16878: 0x4029dc20, 0x16879: 0x4029de20, 0x1687a: 0x40026c20, 0x1687b: 0x40026220,\n\t0x1687c: 0x40094020, 0x1687d: 0x40094220, 0x1687e: 0x40094420, 0x1687f: 0x4002c420,\n\t// Block 0x5a2, offset 0x16880\n\t0x16880: 0x4004d620, 0x16881: 0xce900be1, 0x16882: 0x002c0a88, 0x16883: 0xc33531e1,\n\t0x16884: 0x002c6288, 0x16885: 0xce6d0be1, 0x16886: 0x002d0888, 0x16887: 0x002d2288,\n\t0x16888: 0x002d6888, 0x16889: 0x002d9a88, 0x1688a: 0x002dcc88, 0x1688b: 0x002dfe88,\n\t0x1688c: 0xc0030002, 0x1688d: 0x002e8288, 0x1688e: 0xc54631e1, 0x1688f: 0xc33f31e1,\n\t0x16890: 0x002f2c88, 0x16891: 0x002f5688, 0x16892: 0x002f7a88, 0x16893: 0xc34331e1,\n\t0x16894: 0x00302c88, 0x16895: 0x00306c88, 0x16896: 0x0030be88, 0x16897: 0x0030e288,\n\t0x16898: 0x0030f688, 0x16899: 0x00310088, 0x1689a: 0xce959711, 0x1689b: 0x4003f820,\n\t0x1689c: 0x4004e420, 0x1689d: 0x4003fa20, 0x1689e: 0x40062420, 0x1689f: 0x40021620,\n\t0x168a0: 0x40061e20, 0x168a1: 0xce8e0be1, 0x168a2: 0x402c0a20, 0x168a3: 0xc33331e1,\n\t0x168a4: 0x402c6220, 0x168a5: 0xce6b0be1, 0x168a6: 0x402d0820, 0x168a7: 0x402d2220,\n\t0x168a8: 0x402d6820, 0x168a9: 0x402d9a20, 0x168aa: 0x402dcc20, 0x168ab: 0x402dfe20,\n\t0x168ac: 0xc0000002, 0x168ad: 0x402e8220, 0x168ae: 0xc53331e1, 0x168af: 0xc33d31e1,\n\t0x168b0: 0x402f2c20, 0x168b1: 0x402f5620, 0x168b2: 0x402f7a20, 0x168b3: 0xc34131e1,\n\t0x168b4: 0x40302c20, 0x168b5: 0x40306c20, 0x168b6: 0x4030be20, 0x168b7: 0x4030e220,\n\t0x168b8: 0x4030f620, 0x168b9: 0x40310020, 0x168ba: 0xce929711, 0x168bb: 0x4003fc20,\n\t0x168bc: 0x40094820, 0x168bd: 0x4003fe20, 0x168be: 0x40094c20, 0x168bf: 0xa0000000,\n\t// Block 0x5a3, offset 0x168c0\n\t0x168c0: 0xe00008f5, 0x168c1: 0xe00008ef, 0x168c2: 0xe0000921, 0x168c3: 0xe0000969,\n\t0x168c4: 0xe000095b, 0x168c5: 0xe000094d, 0x168c6: 0xe00009dd, 0x168c7: 0xe0000a53,\n\t0x168c8: 0xe0000ae8, 0x168c9: 0xe0000ae2, 0x168ca: 0xe0000af4, 0x168cb: 0xe0000b20,\n\t0x168cc: 0xe0000c2b, 0x168cd: 0xe0000c25, 0x168ce: 0xe0000c37, 0x168cf: 0xe0000c43,\n\t0x168d0: 0xe0000ab3, 0x168d1: 0xe0000d63, 0x168d2: 0xe0000d9a, 0x168d3: 0x002ee483,\n\t0x168d4: 0xe0000da6, 0x168d5: 0xe0000de6, 0x168d6: 0xe0000dd2, 0x168d7: 0x40093e20,\n\t0x168d8: 0xe0000e12, 0x168d9: 0xe0000fe1, 0x168da: 0xe0000fdb, 0x168db: 0xe0000fed,\n\t0x168dc: 0xe0000fff, 0x168dd: 0xe0001102, 0x168de: 0x00318888, 0x168df: 0xe0000f7b,\n\t0x168e0: 0xe00008f2, 0x168e1: 0xe00008ec, 0x168e2: 0xe000091e, 0x168e3: 0xe0000966,\n\t0x168e4: 0xe0000958, 0x168e5: 0xe000094a, 0x168e6: 0xe00009d5, 0x168e7: 0xe0000a4d,\n\t0x168e8: 0xe0000ae5, 0x168e9: 0xe0000adf, 0x168ea: 0xe0000af1, 0x168eb: 0xe0000b1d,\n\t0x168ec: 0xe0000c28, 0x168ed: 0xe0000c22, 0x168ee: 0xe0000c34, 0x168ef: 0xe0000c40,\n\t0x168f0: 0xe0000aad, 0x168f1: 0xe0000d60, 0x168f2: 0xe0000d97, 0x168f3: 0x402ee420,\n\t0x168f4: 0xe0000da3, 0x168f5: 0xe0000de3, 0x168f6: 0xe0000dcf, 0x168f7: 0x40093c20,\n\t0x168f8: 0xe0000e0f, 0x168f9: 0xe0000fde, 0x168fa: 0xe0000fd8, 0x168fb: 0xe0000fea,\n\t0x168fc: 0xe0000ffc, 0x168fd: 0xe00010ff, 0x168fe: 0x40318820, 0x168ff: 0xe0001114,\n\t// Block 0x5a4, offset 0x16900\n\t0x16900: 0xe0000983, 0x16901: 0xe0000980, 0x16902: 0xe00008fb, 0x16903: 0xe00008f8,\n\t0x16904: 0x002be083, 0x16905: 0x402be020, 0x16906: 0x002c3c83, 0x16907: 0x402c3c20,\n\t0x16908: 0xe0000a3e, 0x16909: 0xe0000a3b, 0x1690a: 0xe0000a4a, 0x1690b: 0xe0000a47,\n\t0x1690c: 0xe0000a44, 0x1690d: 0xe0000a41, 0x1690e: 0xe0000a86, 0x1690f: 0xe0000a83,\n\t0x16910: 0xe0000aaa, 0x16911: 0xe0000aa7, 0x16912: 0xe0000b46, 0x16913: 0xe0000b43,\n\t0x16914: 0xe0000aee, 0x16915: 0xe0000aeb, 0x16916: 0xe0000b2c, 0x16917: 0xe0000b29,\n\t0x16918: 0x002c9a83, 0x16919: 0x402c9a20, 0x1691a: 0xe0000b1a, 0x1691b: 0xe0000b17,\n\t0x1691c: 0xe0000bb8, 0x1691d: 0xe0000bb5, 0x1691e: 0xe0000bb2, 0x1691f: 0xe0000baf,\n\t0x16920: 0xe0000bc4, 0x16921: 0xe0000bc1, 0x16922: 0xe0000bca, 0x16923: 0xe0000bc7,\n\t0x16924: 0xe0000bee, 0x16925: 0xe0000beb, 0x16926: 0xe0000c1b, 0x16927: 0xe0000c18,\n\t0x16928: 0xe0000c51, 0x16929: 0xe0000c4e, 0x1692a: 0xe0000c60, 0x1692b: 0xe0000c5d,\n\t0x1692c: 0xe0000c31, 0x1692d: 0xe0000c2e, 0x1692e: 0xe0000c5a, 0x1692f: 0xe0000c57,\n\t0x16930: 0xe0000c54, 0x16931: 0x402da220, 0x16932: 0xf0000a0a, 0x16933: 0xf0000404,\n\t0x16934: 0xe0000c8a, 0x16935: 0xe0000c87, 0x16936: 0xe0000c9f, 0x16937: 0xe0000c9c,\n\t0x16938: 0x402f7220, 0x16939: 0xe0000ccc, 0x1693a: 0xe0000cc9, 0x1693b: 0xe0000cd8,\n\t0x1693c: 0xe0000cd5, 0x1693d: 0xe0000cd2, 0x1693e: 0xe0000ccf, 0x1693f: 0xe0000d04,\n\t// Block 0x5a5, offset 0x16940\n\t0x16940: 0xe0000cfe, 0x16941: 0x002e2483, 0x16942: 0x402e2420, 0x16943: 0x002ea083,\n\t0x16944: 0x402ea020, 0x16945: 0xe0000d6f, 0x16946: 0xe0000d6c, 0x16947: 0xe0000d5d,\n\t0x16948: 0xe0000d5a, 0x16949: 0xf0000404, 0x1694a: 0x002eda88, 0x1694b: 0x402eda20,\n\t0x1694c: 0xe0000e2e, 0x1694d: 0xe0000e2b, 0x1694e: 0xe0000da0, 0x1694f: 0xe0000d9d,\n\t0x16950: 0xe0000de0, 0x16951: 0xe0000ddd, 0x16952: 0xe0000e93, 0x16953: 0xe0000e8f,\n\t0x16954: 0xe0000eca, 0x16955: 0xe0000ec7, 0x16956: 0xe0000edc, 0x16957: 0xe0000ed9,\n\t0x16958: 0xe0000ed0, 0x16959: 0xe0000ecd, 0x1695a: 0x002fe883, 0x1695b: 0x402fe820,\n\t0x1695c: 0xe0000f2d, 0x1695d: 0xe0000f2a, 0x1695e: 0xe0000f47, 0x1695f: 0xe0000f44,\n\t0x16960: 0xe0000f33, 0x16961: 0xe0000f30, 0x16962: 0xe0000f99, 0x16963: 0xe0000f96,\n\t0x16964: 0xe0000f8a, 0x16965: 0xe0000f87, 0x16966: 0x00303688, 0x16967: 0x40303620,\n\t0x16968: 0xe000102b, 0x16969: 0xe0001028, 0x1696a: 0xe000103f, 0x1696b: 0xe000103c,\n\t0x1696c: 0xe0000fe7, 0x1696d: 0xe0000fe4, 0x1696e: 0xe0000ff9, 0x1696f: 0xe0000ff6,\n\t0x16970: 0xe0001025, 0x16971: 0xe0001022, 0x16972: 0xe0001039, 0x16973: 0xe0001036,\n\t0x16974: 0xe00010d8, 0x16975: 0xe00010d5, 0x16976: 0xe000110e, 0x16977: 0xe000110b,\n\t0x16978: 0xe0001117, 0x16979: 0x00312c83, 0x1697a: 0x40312c20, 0x1697b: 0x00312e83,\n\t0x1697c: 0x40312e20, 0x1697d: 0xe0001147, 0x1697e: 0xe0001144, 0x1697f: 0xe0000f64,\n\t// Block 0x5a6, offset 0x16980\n\t0x16980: 0xe00009b1, 0x16981: 0xe00009ae, 0x16982: 0xe0000a22, 0x16983: 0xe0000a1f,\n\t0x16984: 0xe0000a28, 0x16985: 0xe0000a25, 0x16986: 0xe0000a2e, 0x16987: 0xe0000a2b,\n\t0x16988: 0xe000261a, 0x16989: 0xe0002617, 0x1698a: 0xe0000a8c, 0x1698b: 0xe0000a89,\n\t0x1698c: 0xe0000a98, 0x1698d: 0xe0000a95, 0x1698e: 0xe0000aa4, 0x1698f: 0xe0000aa1,\n\t0x16990: 0xe0000a92, 0x16991: 0xe0000a8f, 0x16992: 0xe0000a9e, 0x16993: 0xe0000a9b,\n\t0x16994: 0xe0000b55, 0x16995: 0xe0000b51, 0x16996: 0xe0000b4d, 0x16997: 0xe0000b49,\n\t0x16998: 0xe0000b7c, 0x16999: 0xe0000b79, 0x1699a: 0xe0000b82, 0x1699b: 0xe0000b7f,\n\t0x1699c: 0xe0000b39, 0x1699d: 0xe0000b35, 0x1699e: 0xe0000b8c, 0x1699f: 0xe0000b89,\n\t0x169a0: 0xe0000bd0, 0x169a1: 0xe0000bcd, 0x169a2: 0xe0000c00, 0x169a3: 0xe0000bfd,\n\t0x169a4: 0xe0000c0c, 0x169a5: 0xe0000c09, 0x169a6: 0xe0000bfa, 0x169a7: 0xe0000bf7,\n\t0x169a8: 0xe0000c06, 0x169a9: 0xe0000c03, 0x169aa: 0xe0000c12, 0x169ab: 0xe0000c0f,\n\t0x169ac: 0xe0000c7e, 0x169ad: 0xe0000c7b, 0x169ae: 0xe0000c4a, 0x169af: 0xe0000c46,\n\t0x169b0: 0xe0000c93, 0x169b1: 0xe0000c90, 0x169b2: 0xe0000cab, 0x169b3: 0xe0000ca8,\n\t0x169b4: 0xe0000cb1, 0x169b5: 0xe0000cae, 0x169b6: 0xe0000cde, 0x169b7: 0xe0000cdb,\n\t0x169b8: 0xe0000ce5, 0x169b9: 0xe0000ce1, 0x169ba: 0xe0000cf2, 0x169bb: 0xe0000cef,\n\t0x169bc: 0xe0000cec, 0x169bd: 0xe0000ce9, 0x169be: 0xe0000d1e, 0x169bf: 0xe0000d1b,\n\t// Block 0x5a7, offset 0x169c0\n\t0x169c0: 0xe0000d24, 0x169c1: 0xe0000d21, 0x169c2: 0xe0000d2a, 0x169c3: 0xe0000d27,\n\t0x169c4: 0xe0000d69, 0x169c5: 0xe0000d66, 0x169c6: 0xe0000d7b, 0x169c7: 0xe0000d78,\n\t0x169c8: 0xe0000d87, 0x169c9: 0xe0000d84, 0x169ca: 0xe0000d81, 0x169cb: 0xe0000d7e,\n\t0x169cc: 0xe0002946, 0x169cd: 0xe0002943, 0x169ce: 0xe0000df5, 0x169cf: 0xe0000df1,\n\t0x169d0: 0xe0000e3d, 0x169d1: 0xe0000e39, 0x169d2: 0xe000294c, 0x169d3: 0xe0002949,\n\t0x169d4: 0xe0000ea7, 0x169d5: 0xe0000ea4, 0x169d6: 0xe0000ead, 0x169d7: 0xe0000eaa,\n\t0x169d8: 0xe0000ed6, 0x169d9: 0xe0000ed3, 0x169da: 0xe0000ef4, 0x169db: 0xe0000ef1,\n\t0x169dc: 0xe0000efb, 0x169dd: 0xe0000ef7, 0x169de: 0xe0000f02, 0x169df: 0xe0000eff,\n\t0x169e0: 0xe0000f41, 0x169e1: 0xe0000f3e, 0x169e2: 0xe0000f53, 0x169e3: 0xe0000f50,\n\t0x169e4: 0xe000296a, 0x169e5: 0xe0002967, 0x169e6: 0xe0000f3a, 0x169e7: 0xe0000f36,\n\t0x169e8: 0xe0000f5a, 0x169e9: 0xe0000f56, 0x169ea: 0xe0000f93, 0x169eb: 0xe0000f90,\n\t0x169ec: 0xe0000f9f, 0x169ed: 0xe0000f9c, 0x169ee: 0xe0000fb1, 0x169ef: 0xe0000fae,\n\t0x169f0: 0xe0000fab, 0x169f1: 0xe0000fa8, 0x169f2: 0xe0001093, 0x169f3: 0xe0001090,\n\t0x169f4: 0xe000109f, 0x169f5: 0xe000109c, 0x169f6: 0xe0001099, 0x169f7: 0xe0001096,\n\t0x169f8: 0xe0001032, 0x169f9: 0xe000102e, 0x169fa: 0xe0001046, 0x169fb: 0xe0001042,\n\t0x169fc: 0xe00010a9, 0x169fd: 0xe00010a6, 0x169fe: 0xe00010af, 0x169ff: 0xe00010ac,\n\t// Block 0x5a8, offset 0x16a00\n\t0x16a00: 0xe0000b03, 0x16a01: 0xe0000aff, 0x16a02: 0xe0000b13, 0x16a03: 0xe0000b0f,\n\t0x16a04: 0xe0000b0b, 0x16a05: 0xe0000b07, 0x16a06: 0xe0000b75, 0x16a07: 0xe0000b71,\n\t0x16a08: 0xe0000c66, 0x16a09: 0xe0000c63, 0x16a0a: 0xe0000c78, 0x16a0b: 0xe0000c75,\n\t0x16a0c: 0xe0000e84, 0x16a0d: 0xe0000e81, 0x16a0e: 0xe0000e44, 0x16a0f: 0xe0000e41,\n\t0x16a10: 0xe0003c96, 0x16a11: 0xe0003c93, 0x16a12: 0xe0000db5, 0x16a13: 0xe0000db1,\n\t0x16a14: 0xe0000dc5, 0x16a15: 0xe0000dc1, 0x16a16: 0xe0000dbd, 0x16a17: 0xe0000db9,\n\t0x16a18: 0xe0000e8b, 0x16a19: 0xe0000e87, 0x16a1a: 0xe0003c9c, 0x16a1b: 0xe0003c99,\n\t0x16a1c: 0xe0000e65, 0x16a1d: 0xe0000e61, 0x16a1e: 0xe0000e75, 0x16a1f: 0xe0000e71,\n\t0x16a20: 0xe0000e6d, 0x16a21: 0xe0000e69, 0x16a22: 0xe0000e7d, 0x16a23: 0xe0000e79,\n\t0x16a24: 0xe000108d, 0x16a25: 0xe000108a, 0x16a26: 0xe000104d, 0x16a27: 0xe000104a,\n\t0x16a28: 0xe0001066, 0x16a29: 0xe0001062, 0x16a2a: 0xe000106e, 0x16a2b: 0xe000106a,\n\t0x16a2c: 0xe000107e, 0x16a2d: 0xe000107a, 0x16a2e: 0xe0001076, 0x16a2f: 0xe0001072,\n\t0x16a30: 0xe0001086, 0x16a31: 0xe0001082, 0x16a32: 0xe0001108, 0x16a33: 0xe0001105,\n\t0x16a34: 0xe0001135, 0x16a35: 0xe0001132, 0x16a36: 0xe000112f, 0x16a37: 0xe000112c,\n\t0x16a38: 0xe000111d, 0x16a39: 0xe000111a, 0x16a3a: 0xe0000d0a, 0x16a3b: 0xe0000d07,\n\t0x16a3c: 0x0030d888, 0x16a3d: 0x4030d820, 0x16a3e: 0x00312088, 0x16a3f: 0x40312020,\n\t// Block 0x5a9, offset 0x16a40\n\t0x16a40: 0xa0000000, 0x16a41: 0xa0000000, 0x16a42: 0xa0000000, 0x16a43: 0xa0000000,\n\t0x16a44: 0xa0000000, 0x16a46: 0x40096620, 0x16a47: 0x40096a20,\n\t0x16a48: 0x40070820, 0x16a49: 0x4004f220, 0x16a4a: 0x4004f620, 0x16a4b: 0x4027e620,\n\t0x16a4c: 0x40024820, 0x16a4d: 0x40024a20, 0x16a4e: 0x40070e20, 0x16a4f: 0x40071020,\n\t0x16a50: 0xae600000, 0x16a51: 0xae600000, 0x16a52: 0xae600000, 0x16a53: 0xae600000,\n\t0x16a54: 0xae600000, 0x16a55: 0xae600000, 0x16a56: 0xae600000, 0x16a57: 0xae600000,\n\t0x16a58: 0xa1e00000, 0x16a59: 0xa1f00000, 0x16a5a: 0xa2000000, 0x16a5b: 0x40026420,\n\t0x16a5e: 0x40027020, 0x16a5f: 0x4002cc20,\n\t0x16a60: 0x403aa220, 0x16a61: 0x40393a20, 0x16a62: 0x40393620, 0x16a63: 0x40393821,\n\t0x16a64: 0x403a7421, 0x16a65: 0x40393824, 0x16a66: 0x003a9344, 0x16a67: 0xce980151,\n\t0x16a68: 0x40393c20, 0x16a69: 0x403a6824, 0x16a6a: 0x40395620, 0x16a6b: 0x40395820,\n\t0x16a6c: 0x40396420, 0x16a6d: 0xce9c0171, 0x16a6e: 0x40397420, 0x16a6f: 0x40398820,\n\t0x16a70: 0x40398a20, 0x16a71: 0x4039a420, 0x16a72: 0x4039a620, 0x16a73: 0x4039c620,\n\t0x16a74: 0x4039c820, 0x16a75: 0x4039dc20, 0x16a76: 0x4039de20, 0x16a77: 0x4039e620,\n\t0x16a78: 0x4039e820, 0x16a79: 0x4039ee20, 0x16a7a: 0x4039f020, 0x16a7b: 0x403a3820,\n\t0x16a7c: 0x403a3a20, 0x16a7d: 0x403a9c20, 0x16a7e: 0x403a9e20, 0x16a7f: 0x403aa020,\n\t// Block 0x5aa, offset 0x16a80\n\t0x16a80: 0xa0000000, 0x16a81: 0x4039fc20, 0x16a82: 0x403a1220, 0x16a83: 0x403a1c22,\n\t0x16a84: 0x403a4020, 0x16a85: 0x403a4e20, 0x16a86: 0x403a5620, 0x16a87: 0xcea00171,\n\t0x16a88: 0xcea20171, 0x16a89: 0xcea60171, 0x16a8a: 0xcea80171, 0x16a8b: 0xa000b002,\n\t0x16a8c: 0xa000b202, 0x16a8d: 0xa000b102, 0x16a8e: 0xa1e0ad02, 0x16a8f: 0xa000af02,\n\t0x16a90: 0xa000ae02, 0x16a91: 0xa210ba02, 0x16a92: 0xa220bc02, 0x16a93: 0xae60bd02,\n\t0x16a94: 0xae60be02, 0x16a95: 0xadc0bf02, 0x16a96: 0xadc0c102, 0x16a97: 0xae60c202,\n\t0x16a98: 0xae60c302, 0x16a99: 0xae60c402, 0x16a9a: 0xae60c502, 0x16a9b: 0xae60c602,\n\t0x16a9c: 0xadc0c702, 0x16a9d: 0xae60c802, 0x16a9e: 0xae60c902, 0x16a9f: 0xadc0c002,\n\t0x16aa0: 0xe000015e, 0x16aa1: 0xe00001e6, 0x16aa2: 0xe0000301, 0x16aa3: 0xe00003db,\n\t0x16aa4: 0xe00004b6, 0x16aa5: 0xe0000580, 0x16aa6: 0xe000064b, 0x16aa7: 0xe00006f3,\n\t0x16aa8: 0xe000079f, 0x16aa9: 0xe0000844, 0x16aaa: 0x4004ee20, 0x16aab: 0x40024c20,\n\t0x16aac: 0x40024e20, 0x16aad: 0x4004de20, 0x16aae: 0x40393a20, 0x16aaf: 0x403a1020,\n\t0x16ab0: 0xa230d102, 0x16ab1: 0x40393823, 0x16ab2: 0x40393822, 0x16ab3: 0x40393825,\n\t0x16ab4: 0x00391c84, 0x16ab5: 0xf0000404, 0x16ab6: 0xf0000404, 0x16ab7: 0xe000ad89,\n\t0x16ab8: 0xe0003780, 0x16ab9: 0x40395821, 0x16aba: 0x40395c20, 0x16abb: 0x40393e20,\n\t0x16abc: 0x40395820, 0x16abd: 0x40396020, 0x16abe: 0x40394020, 0x16abf: 0x40396220,\n\t// Block 0x5ab, offset 0x16ac0\n\t0x16ac0: 0x40394220, 0x16ac1: 0x40396620, 0x16ac2: 0x40397820, 0x16ac3: 0x40396620,\n\t0x16ac4: 0x40396820, 0x16ac5: 0x40396c20, 0x16ac6: 0x40396a20, 0x16ac7: 0x40396e20,\n\t0x16ac8: 0x40398a21, 0x16ac9: 0x40398a20, 0x16aca: 0x40399020, 0x16acb: 0x40399220,\n\t0x16acc: 0x40399420, 0x16acd: 0x40399620, 0x16ace: 0x40399820, 0x16acf: 0x40399a20,\n\t0x16ad0: 0x40399c20, 0x16ad1: 0x4039a621, 0x16ad2: 0x4039aa20, 0x16ad3: 0x4039a620,\n\t0x16ad4: 0x4039ae20, 0x16ad5: 0x4039b020, 0x16ad6: 0x4039b820, 0x16ad7: 0x4039b420,\n\t0x16ad8: 0x4039b620, 0x16ad9: 0x4039b820, 0x16ada: 0x4039ca20, 0x16adb: 0x4039cc20,\n\t0x16adc: 0x4039ce20, 0x16add: 0x4039e020, 0x16ade: 0x4039e220, 0x16adf: 0x4039ea20,\n\t0x16ae0: 0x4039f220, 0x16ae1: 0x4039fe20, 0x16ae2: 0x403a0020, 0x16ae3: 0x403a0220,\n\t0x16ae4: 0x403a0420, 0x16ae5: 0x403a0820, 0x16ae6: 0x403a0a20, 0x16ae7: 0x403a1420,\n\t0x16ae8: 0x403a1620, 0x16ae9: 0x403a1c20, 0x16aea: 0x403a1c21, 0x16aeb: 0x403a2020,\n\t0x16aec: 0x403a2220, 0x16aed: 0x403a2620, 0x16aee: 0x403a2820, 0x16aef: 0x403a2021,\n\t0x16af0: 0x403a2c20, 0x16af1: 0x403a2e20, 0x16af2: 0x403a3020, 0x16af3: 0x403a3220,\n\t0x16af4: 0x403a3420, 0x16af5: 0x403a4220, 0x16af6: 0x403a4420, 0x16af7: 0x403a4620,\n\t0x16af8: 0x403a4820, 0x16af9: 0x403a6020, 0x16afa: 0x403a5820, 0x16afb: 0x403a5c21,\n\t0x16afc: 0x403a5c20, 0x16afd: 0x403a5e20, 0x16afe: 0x403a6823, 0x16aff: 0x40396c20,\n\t// Block 0x5ac, offset 0x16b00\n\t0x16b00: 0x003a6883, 0x16b01: 0x403a6822, 0x16b02: 0xe000ad86, 0x16b03: 0x403a6825,\n\t0x16b04: 0x403a7620, 0x16b05: 0x403a7820, 0x16b06: 0x403a7a20, 0x16b07: 0x403a7422,\n\t0x16b08: 0x403a7e20, 0x16b09: 0x403a7423, 0x16b0a: 0x403a8220, 0x16b0b: 0x403a8420,\n\t0x16b0c: 0xcea40171, 0x16b0d: 0x403a9225, 0x16b0e: 0x403a9620, 0x16b0f: 0x403a8620,\n\t0x16b10: 0x403a9224, 0x16b11: 0x403a9a20, 0x16b12: 0x403a9222, 0x16b13: 0xe00037b6,\n\t0x16b14: 0x4002e820, 0x16b15: 0xce9e0171, 0x16b16: 0xae600000, 0x16b17: 0xae600000,\n\t0x16b18: 0xae600000, 0x16b19: 0xae600000, 0x16b1a: 0xae600000, 0x16b1b: 0xae600000,\n\t0x16b1c: 0xae600000, 0x16b1d: 0xa0000000, 0x16b1e: 0x40071220, 0x16b1f: 0xae600000,\n\t0x16b20: 0xae600000, 0x16b21: 0xae600000, 0x16b22: 0xae600000, 0x16b23: 0xadc00000,\n\t0x16b24: 0xae600000, 0x16b25: 0x003a7484, 0x16b26: 0x003a9084, 0x16b27: 0xae600000,\n\t0x16b28: 0xae600000, 0x16b29: 0x40071420, 0x16b2a: 0xadc00000, 0x16b2b: 0xae600000,\n\t0x16b2c: 0xae600000, 0x16b2d: 0xadc00000, 0x16b2e: 0x40399e20, 0x16b2f: 0x4039ba20,\n\t0x16b30: 0xe0000161, 0x16b31: 0xe00001e9, 0x16b32: 0xe0000304, 0x16b33: 0xe00003de,\n\t0x16b34: 0xe00004b9, 0x16b35: 0xe0000583, 0x16b36: 0xe000064e, 0x16b37: 0xe00006f6,\n\t0x16b38: 0xe00007a2, 0x16b39: 0xe0000847, 0x16b3a: 0x4039d020, 0x16b3b: 0x4039e420,\n\t0x16b3c: 0x4039f420, 0x16b3d: 0xe0001553, 0x16b3e: 0xe0001779, 0x16b3f: 0x403a7020,\n\t// Block 0x5ad, offset 0x16b40\n\t0x16b40: 0x00021284, 0x16b41: 0x00021284, 0x16b42: 0x00021284, 0x16b43: 0x00021284,\n\t0x16b44: 0x00021284, 0x16b45: 0x00021284, 0x16b46: 0x00021284, 0x16b47: 0x0002129b,\n\t0x16b48: 0x00021284, 0x16b49: 0x00021284, 0x16b4a: 0x00021284, 0x16b4b: 0xa0000000,\n\t0x16b4c: 0x40021221, 0x16b4d: 0x40021222, 0x16b4e: 0xa0000000, 0x16b4f: 0xa0000000,\n\t0x16b50: 0x40022620, 0x16b51: 0x0002269b, 0x16b52: 0x40022820, 0x16b53: 0x40022a20,\n\t0x16b54: 0x40022c20, 0x16b55: 0x40022e20, 0x16b56: 0x4004c420, 0x16b57: 0x40021820,\n\t0x16b58: 0x4003d420, 0x16b59: 0x4003d620, 0x16b5a: 0x4003d820, 0x16b5b: 0x4003da20,\n\t0x16b5c: 0x4003e220, 0x16b5d: 0x4003e420, 0x16b5e: 0x4003e620, 0x16b5f: 0x4003e820,\n\t0x16b60: 0x4004f820, 0x16b61: 0x4004fa20, 0x16b62: 0x40050220, 0x16b63: 0x40050420,\n\t0x16b64: 0x0002e484, 0x16b65: 0xf0001f04, 0x16b66: 0xf0000404, 0x16b67: 0x40050620,\n\t0x16b68: 0x40020e20, 0x16b69: 0x40021020, 0x16b6a: 0xa0000000, 0x16b6b: 0xa0000000,\n\t0x16b6c: 0xa0000000, 0x16b6d: 0xa0000000, 0x16b6e: 0xa0000000, 0x16b6f: 0x0002129b,\n\t0x16b70: 0x4004f020, 0x16b71: 0x4004f420, 0x16b72: 0x40050e20, 0x16b73: 0xf0001f04,\n\t0x16b74: 0xf0000404, 0x16b75: 0x40051020, 0x16b76: 0xf0001f04, 0x16b77: 0xf0000404,\n\t0x16b78: 0x40051620, 0x16b79: 0x4003dc20, 0x16b7a: 0x4003de20, 0x16b7b: 0x40051820,\n\t0x16b7c: 0xf0001f04, 0x16b7d: 0x4002e020, 0x16b7e: 0x40021420, 0x16b7f: 0x40051a20,\n\t// Block 0x5ae, offset 0x16b80\n\t0x16b80: 0x40073420, 0x16b81: 0x40073620,\n\t0x16b93: 0x003a269a,\n\t0x16b94: 0x003a2699, 0x16b95: 0x003a2697, 0x16b96: 0x003a2698, 0x16b97: 0x003a7c9a,\n\t0x16b98: 0x003a7c99, 0x16b99: 0x003a7a9a, 0x16b9a: 0x003a7a99, 0x16b9b: 0x003a7e9a,\n\t0x16b9c: 0x003a7e99, 0x16b9d: 0xe000ad8c, 0x16b9e: 0x003a849a, 0x16b9f: 0x003a8499,\n\t0x16ba0: 0x003a789a, 0x16ba1: 0x003a7899, 0x16ba2: 0x003a809a, 0x16ba3: 0x003a8099,\n\t0x16ba4: 0x003a989a, 0x16ba5: 0x003a9899, 0x16ba6: 0x003a9897, 0x16ba7: 0x003a9898,\n\t0x16ba8: 0x003a8e97, 0x16ba9: 0x003a8e98, 0x16baa: 0xe0001559, 0x16bab: 0xe0001556,\n\t0x16bac: 0xe0001589, 0x16bad: 0xe0001586, 0x16bae: 0xe000158f, 0x16baf: 0xe000158c,\n\t0x16bb0: 0xe000159b, 0x16bb1: 0xe0001598, 0x16bb2: 0xe0001595, 0x16bb3: 0xe0001592,\n\t0x16bb4: 0xe00015a1, 0x16bb5: 0xe000159e, 0x16bb6: 0xe00015bf, 0x16bb7: 0xe00015bc,\n\t0x16bb8: 0xe00015b9, 0x16bb9: 0xe00015ad, 0x16bba: 0xe00015a7, 0x16bbb: 0xe00015a4,\n\t0x16bbc: 0x003a929a, 0x16bbd: 0x003a9299, 0x16bbe: 0x003a9297, 0x16bbf: 0x003a9298,\n\t// Block 0x5af, offset 0x16bc0\n\t0x16bc0: 0xf0001a1a, 0x16bc1: 0xf0001a1a, 0x16bc2: 0xf0001a1a, 0x16bc3: 0xe00028f4,\n\t0x16bc4: 0xe000374d, 0x16bc5: 0xf0001a1a, 0x16bc6: 0xf0001a1a, 0x16bc7: 0xf0001a1a,\n\t0x16bc8: 0xf0001a1a, 0x16bc9: 0xe00028f7, 0x16bca: 0xe0003750, 0x16bcb: 0xf0001a1a,\n\t0x16bcc: 0xf0001a1a, 0x16bcd: 0xf0001a1a, 0x16bce: 0xf0001a1a, 0x16bcf: 0xe00028fd,\n\t0x16bd0: 0xe000375c, 0x16bd1: 0xf0001a1a, 0x16bd2: 0xf0001a1a, 0x16bd3: 0xe0002900,\n\t0x16bd4: 0xe000376e, 0x16bd5: 0xe0003786, 0x16bd6: 0xe000378c, 0x16bd7: 0xe0003792,\n\t0x16bd8: 0xe00037a4, 0x16bd9: 0xe0002906, 0x16bda: 0xe00037b3, 0x16bdb: 0xf0001a1a,\n\t0x16bdc: 0xf0001a1a, 0x16bdd: 0xe000377d, 0x16bde: 0xe0000003, 0x16bdf: 0xe0000006,\n\t0x16be0: 0xe0000009, 0x16be1: 0xe000000c, 0x16be2: 0xe000000f, 0x16be3: 0xe0000012,\n\t0x16be4: 0xe000156b, 0x16be5: 0xe000156e, 0x16be6: 0xe0001577, 0x16be7: 0xe000157d,\n\t0x16be8: 0xe00015aa, 0x16be9: 0xe00015b3, 0x16bea: 0xf0001919, 0x16beb: 0xf0001919,\n\t0x16bec: 0xf0001919, 0x16bed: 0xf0001919, 0x16bee: 0xe0002891, 0x16bef: 0xe00036a2,\n\t0x16bf0: 0xf0001919, 0x16bf1: 0xf0001919, 0x16bf2: 0xf0001919, 0x16bf3: 0xf0001919,\n\t0x16bf4: 0xe0002897, 0x16bf5: 0xe00036ae, 0x16bf6: 0xf0001919, 0x16bf7: 0xf0001919,\n\t0x16bf8: 0xf0001919, 0x16bf9: 0xf0001919, 0x16bfa: 0xe000289d, 0x16bfb: 0xe00036b7,\n\t0x16bfc: 0xe00028df, 0x16bfd: 0xe0003705, 0x16bfe: 0xe00028e5, 0x16bff: 0xe000370b,\n\t// Block 0x5b0, offset 0x16c00\n\t0x16c00: 0xe0003711, 0x16c01: 0xe000372f, 0x16c02: 0xe000373b, 0x16c03: 0xe00028eb,\n\t0x16c04: 0xe0003741, 0x16c05: 0xf0001919, 0x16c06: 0xe00028f1, 0x16c07: 0xe000374a,\n\t0x16c08: 0xf0001919, 0x16c09: 0xf0001919, 0x16c0a: 0xf0001919, 0x16c0b: 0xf0001919,\n\t0x16c0c: 0xf0001919, 0x16c0d: 0xf0001919, 0x16c0e: 0xe00028fa, 0x16c0f: 0xe0003759,\n\t0x16c10: 0xe000377a, 0x16c11: 0xe0003795, 0x16c12: 0xe0003798, 0x16c13: 0xe00037a1,\n\t0x16c14: 0xe00037a7, 0x16c15: 0xe0002903, 0x16c16: 0xe00037b0, 0x16c17: 0xe000155c,\n\t0x16c18: 0xe0001562, 0x16c19: 0xe0001568, 0x16c1a: 0xe0001571, 0x16c1b: 0xe0001580,\n\t0x16c1c: 0xf0001717, 0x16c1d: 0xf0001717, 0x16c1e: 0xf0001717, 0x16c1f: 0xf0001717,\n\t0x16c20: 0xf0001717, 0x16c21: 0xf0001717, 0x16c22: 0xf0001717, 0x16c23: 0xf0001717,\n\t0x16c24: 0xf0001717, 0x16c25: 0xf0001717, 0x16c26: 0xf0001717, 0x16c27: 0xf0001717,\n\t0x16c28: 0xf0001717, 0x16c29: 0xf0001717, 0x16c2a: 0xf0001717, 0x16c2b: 0xf0001717,\n\t0x16c2c: 0xf0001717, 0x16c2d: 0xf0001717, 0x16c2e: 0xf0001717, 0x16c2f: 0xf0001717,\n\t0x16c30: 0xf0001717, 0x16c31: 0xf0001717, 0x16c32: 0xf0001717, 0x16c33: 0xf0001717,\n\t0x16c34: 0xf0001717, 0x16c35: 0xf0001717, 0x16c36: 0xf0001717, 0x16c37: 0xf0001717,\n\t0x16c38: 0xf0001717, 0x16c39: 0xf0001717, 0x16c3a: 0xf0001717, 0x16c3b: 0xf0001717,\n\t0x16c3c: 0xf0001717, 0x16c3d: 0xf0001717, 0x16c3e: 0xf0001717, 0x16c3f: 0xf0001717,\n\t// Block 0x5b1, offset 0x16c40\n\t0x16c40: 0xf0001717, 0x16c41: 0xf0001717, 0x16c42: 0xf0001717, 0x16c43: 0xf0001717,\n\t0x16c44: 0xe0003717, 0x16c45: 0xe000371d, 0x16c46: 0xe0003723, 0x16c47: 0xe0003729,\n\t0x16c48: 0xe0003735, 0x16c49: 0xf0001717, 0x16c4a: 0xf0001717, 0x16c4b: 0xf0001717,\n\t0x16c4c: 0xf0001717, 0x16c4d: 0xf0001717, 0x16c4e: 0xf0001717, 0x16c4f: 0xf0001717,\n\t0x16c50: 0xf0001717, 0x16c51: 0xf0001717, 0x16c52: 0xf0001717, 0x16c53: 0xf0001717,\n\t0x16c54: 0xf0001717, 0x16c55: 0xf0001717, 0x16c56: 0xf0001717, 0x16c57: 0xf0001717,\n\t0x16c58: 0xf0001717, 0x16c59: 0xf0001717, 0x16c5a: 0xe0003783, 0x16c5b: 0xe0003789,\n\t0x16c5c: 0xe000378f, 0x16c5d: 0xe000379b, 0x16c5e: 0xe00037aa, 0x16c5f: 0xe0001574,\n\t0x16c60: 0xe0001583, 0x16c61: 0xf0001818, 0x16c62: 0xf0001818, 0x16c63: 0xf0001818,\n\t0x16c64: 0xf0001818, 0x16c65: 0xf0001818, 0x16c66: 0xf0001818, 0x16c67: 0xf0001818,\n\t0x16c68: 0xf0001818, 0x16c69: 0xf0001818, 0x16c6a: 0xf0001818, 0x16c6b: 0xe000372c,\n\t0x16c6c: 0xe0003738, 0x16c6d: 0xf0001818, 0x16c6e: 0xf0001818, 0x16c6f: 0xf0001818,\n\t0x16c70: 0xe000379e, 0x16c71: 0xe00037ad, 0x16c72: 0xf0001818, 0x16c73: 0xe0003690,\n\t0x16c74: 0xe0003693, 0x16c75: 0xe00028d0, 0x16c76: 0xe00036f6, 0x16c77: 0xe00028d6,\n\t0x16c78: 0xe00036fc, 0x16c79: 0xe00028dc, 0x16c7a: 0xe0003702, 0x16c7b: 0xe00028b8,\n\t0x16c7c: 0xe00036d8, 0x16c7d: 0xe00028be, 0x16c7e: 0xe00036e4, 0x16c7f: 0xe00028ac,\n\t// Block 0x5b2, offset 0x16c80\n\t0x16c80: 0xe00036c6, 0x16c81: 0xe00028a6, 0x16c82: 0xe00036c0, 0x16c83: 0xe00028b2,\n\t0x16c84: 0xe00036cc, 0x16c85: 0xe00028c4, 0x16c86: 0xe00036ea, 0x16c87: 0xe00028ca,\n\t0x16c88: 0xe00036f0, 0x16c89: 0xf0001a1a, 0x16c8a: 0xf0001a1a, 0x16c8b: 0xf0001a1a,\n\t0x16c8c: 0xf0001a1a, 0x16c8d: 0xf0001a1a, 0x16c8e: 0xf0001a1a, 0x16c8f: 0xf0001a1a,\n\t0x16c90: 0xf0001a1a, 0x16c91: 0xe00028cd, 0x16c92: 0xe00036f3, 0x16c93: 0xe00028d3,\n\t0x16c94: 0xe00036f9, 0x16c95: 0xe00028d9, 0x16c96: 0xe00036ff, 0x16c97: 0xe00028b5,\n\t0x16c98: 0xe00036d5, 0x16c99: 0xe00028bb, 0x16c9a: 0xe00036e1, 0x16c9b: 0xe00028a9,\n\t0x16c9c: 0xe00036c3, 0x16c9d: 0xe00028a3, 0x16c9e: 0xe00036bd, 0x16c9f: 0xe00028af,\n\t0x16ca0: 0xe00036c9, 0x16ca1: 0xe00028c1, 0x16ca2: 0xe00036e7, 0x16ca3: 0xe00028c7,\n\t0x16ca4: 0xe00036ed, 0x16ca5: 0xf0001919, 0x16ca6: 0xf0001919, 0x16ca7: 0xf0001919,\n\t0x16ca8: 0xf0001919, 0x16ca9: 0xf0001919, 0x16caa: 0xf0001919, 0x16cab: 0xf0001919,\n\t0x16cac: 0xf0001919, 0x16cad: 0xf0001717, 0x16cae: 0xf0001717, 0x16caf: 0xf0001717,\n\t0x16cb0: 0xf0001717, 0x16cb1: 0xf0001717, 0x16cb2: 0xf0001717, 0x16cb3: 0xf0001717,\n\t0x16cb4: 0xf0001818, 0x16cb5: 0xf0001818, 0x16cb6: 0xf0001818, 0x16cb7: 0xf0001818,\n\t0x16cb8: 0xf0001818, 0x16cb9: 0xf0001818, 0x16cba: 0xf0001818, 0x16cbb: 0xf0001818,\n\t0x16cbc: 0xe0003696, 0x16cbd: 0xe0003699, 0x16cbe: 0x4004c020, 0x16cbf: 0x4004c220,\n\t// Block 0x5b3, offset 0x16cc0\n\t0x16cc0: 0xa0000000, 0x16cc1: 0xa0000000, 0x16cc2: 0xa0000000, 0x16cc3: 0xa0000000,\n\t0x16cc4: 0xa0000000, 0x16cc5: 0xa0000000, 0x16cc6: 0xa0000000, 0x16cc7: 0xa0000000,\n\t0x16cc8: 0xa0000000, 0x16cc9: 0x40020020, 0x16cca: 0x40020220, 0x16ccb: 0x40020420,\n\t0x16ccc: 0x40020620, 0x16ccd: 0x40020820, 0x16cce: 0xa0000000, 0x16ccf: 0xa0000000,\n\t0x16cd0: 0xa0000000, 0x16cd1: 0xa0000000, 0x16cd2: 0xa0000000, 0x16cd3: 0xa0000000,\n\t0x16cd4: 0xa0000000, 0x16cd5: 0xa0000000, 0x16cd6: 0xa0000000, 0x16cd7: 0xa0000000,\n\t0x16cd8: 0xa0000000, 0x16cd9: 0xa0000000, 0x16cda: 0xa0000000, 0x16cdb: 0xa0000000,\n\t0x16cdc: 0xa0000000, 0x16cdd: 0xa0000000, 0x16cde: 0xa0000000, 0x16cdf: 0xa0000000,\n\t0x16ce0: 0x40021220, 0x16ce1: 0x4002ba20, 0x16ce2: 0x4003e020, 0x16ce3: 0x4004ea20,\n\t0x16ce4: 0x4027de20, 0x16ce5: 0x4004ec20, 0x16ce6: 0x4004e620, 0x16ce7: 0x4003d220,\n\t0x16ce8: 0x4003f420, 0x16ce9: 0x4003f620, 0x16cea: 0x4004d820, 0x16ceb: 0x40093820,\n\t0x16cec: 0x40024020, 0x16ced: 0x40021a20, 0x16cee: 0x4002e420, 0x16cef: 0x4004e220,\n\t0x16cf0: 0x4029cc20, 0x16cf1: 0x4029ce20, 0x16cf2: 0x4029d020, 0x16cf3: 0x4029d220,\n\t0x16cf4: 0x4029d420, 0x16cf5: 0x4029d620, 0x16cf6: 0x4029d820, 0x16cf7: 0x4029da20,\n\t0x16cf8: 0x4029dc20, 0x16cf9: 0x4029de20, 0x16cfa: 0x40026c20, 0x16cfb: 0x40026220,\n\t0x16cfc: 0x40094020, 0x16cfd: 0x40094220, 0x16cfe: 0x40094420, 0x16cff: 0x4002c420,\n\t// Block 0x5b4, offset 0x16d00\n\t0x16d00: 0x4004d620, 0x16d01: 0xcead9741, 0x16d02: 0x002c0a88, 0x16d03: 0x002c3a88,\n\t0x16d04: 0x002c6288, 0x16d05: 0x002c9888, 0x16d06: 0x002d0888, 0x16d07: 0x002d2288,\n\t0x16d08: 0x002d6888, 0x16d09: 0xc6182741, 0x16d0a: 0x002dcc88, 0x16d0b: 0x002dfe88,\n\t0x16d0c: 0xc0030002, 0x16d0d: 0x002e8288, 0x16d0e: 0x002e9e88, 0x16d0f: 0x002ee288,\n\t0x16d10: 0x002f2c88, 0x16d11: 0x002f5688, 0x16d12: 0x002f7a88, 0x16d13: 0xceb39771,\n\t0x16d14: 0xceb99771, 0x16d15: 0x00306c88, 0x16d16: 0x0030be88, 0x16d17: 0x0030e288,\n\t0x16d18: 0x0030f688, 0x16d19: 0x00310088, 0x16d1a: 0x00312a88, 0x16d1b: 0x4003f820,\n\t0x16d1c: 0x4004e420, 0x16d1d: 0x4003fa20, 0x16d1e: 0x40062420, 0x16d1f: 0x40021620,\n\t0x16d20: 0x40061e20, 0x16d21: 0xceaa9741, 0x16d22: 0x402c0a20, 0x16d23: 0x402c3a20,\n\t0x16d24: 0x402c6220, 0x16d25: 0x402c9820, 0x16d26: 0x402d0820, 0x16d27: 0x402d2220,\n\t0x16d28: 0x402d6820, 0x16d29: 0xc6162741, 0x16d2a: 0x402dcc20, 0x16d2b: 0x402dfe20,\n\t0x16d2c: 0xc0000002, 0x16d2d: 0x402e8220, 0x16d2e: 0x402e9e20, 0x16d2f: 0x402ee220,\n\t0x16d30: 0x402f2c20, 0x16d31: 0x402f5620, 0x16d32: 0x402f7a20, 0x16d33: 0xceb09771,\n\t0x16d34: 0xceb69771, 0x16d35: 0x40306c20, 0x16d36: 0x4030be20, 0x16d37: 0x4030e220,\n\t0x16d38: 0x4030f620, 0x16d39: 0x40310020, 0x16d3a: 0x40312a20, 0x16d3b: 0x4003fc20,\n\t0x16d3c: 0x40094820, 0x16d3d: 0x4003fe20, 0x16d3e: 0x40094c20, 0x16d3f: 0xa0000000,\n\t// Block 0x5b5, offset 0x16d40\n\t0x16d40: 0xe00008f5, 0x16d41: 0xe00008ef, 0x16d42: 0x002be283, 0x16d43: 0xe0000969,\n\t0x16d44: 0xe000095b, 0x16d45: 0xe000094d, 0x16d46: 0xe00009dd, 0x16d47: 0xe0000a53,\n\t0x16d48: 0xe0000ae8, 0x16d49: 0xe0000ae2, 0x16d4a: 0xe0000af4, 0x16d4b: 0xe0000b20,\n\t0x16d4c: 0xe0000c2b, 0x16d4d: 0xe0000c25, 0x16d4e: 0x002d9c83, 0x16d4f: 0xe0000c43,\n\t0x16d50: 0xe0000ab3, 0x16d51: 0xe0000d63, 0x16d52: 0xe0000d9a, 0x16d53: 0xe0000d94,\n\t0x16d54: 0xe0000da6, 0x16d55: 0xe0000de6, 0x16d56: 0xe0000dd2, 0x16d57: 0x40093e20,\n\t0x16d58: 0xe0000e12, 0x16d59: 0xe0000fe1, 0x16d5a: 0xe0000fdb, 0x16d5b: 0xe0000fed,\n\t0x16d5c: 0xe0000fff, 0x16d5d: 0xe0001102, 0x16d5e: 0x00318888, 0x16d5f: 0xe0000f7b,\n\t0x16d60: 0xe00008f2, 0x16d61: 0xe00008ec, 0x16d62: 0x402be220, 0x16d63: 0xe0000966,\n\t0x16d64: 0xe0000958, 0x16d65: 0xe000094a, 0x16d66: 0xe00009d5, 0x16d67: 0xe0000a4d,\n\t0x16d68: 0xe0000ae5, 0x16d69: 0xe0000adf, 0x16d6a: 0xe0000af1, 0x16d6b: 0xe0000b1d,\n\t0x16d6c: 0xe0000c28, 0x16d6d: 0xe0000c22, 0x16d6e: 0x402d9c20, 0x16d6f: 0xe0000c40,\n\t0x16d70: 0xe0000aad, 0x16d71: 0xe0000d60, 0x16d72: 0xe0000d97, 0x16d73: 0xe0000d91,\n\t0x16d74: 0xe0000da3, 0x16d75: 0xe0000de3, 0x16d76: 0xe0000dcf, 0x16d77: 0x40093c20,\n\t0x16d78: 0xe0000e0f, 0x16d79: 0xe0000fde, 0x16d7a: 0xe0000fd8, 0x16d7b: 0xe0000fea,\n\t0x16d7c: 0xe0000ffc, 0x16d7d: 0xe00010ff, 0x16d7e: 0x40318820, 0x16d7f: 0xe0001114,\n\t// Block 0x5b6, offset 0x16d80\n\t0x16d80: 0xe0000983, 0x16d81: 0xe0000980, 0x16d82: 0x002be083, 0x16d83: 0x402be020,\n\t0x16d84: 0xe000097d, 0x16d85: 0xe000097a, 0x16d86: 0xe0000a38, 0x16d87: 0xe0000a35,\n\t0x16d88: 0xe0000a3e, 0x16d89: 0xe0000a3b, 0x16d8a: 0xe0000a4a, 0x16d8b: 0xe0000a47,\n\t0x16d8c: 0xe0000a44, 0x16d8d: 0xe0000a41, 0x16d8e: 0xe0000a86, 0x16d8f: 0xe0000a83,\n\t0x16d90: 0xe0000aaa, 0x16d91: 0xe0000aa7, 0x16d92: 0xe0000b46, 0x16d93: 0xe0000b43,\n\t0x16d94: 0xe0000aee, 0x16d95: 0xe0000aeb, 0x16d96: 0xe0000b2c, 0x16d97: 0xe0000b29,\n\t0x16d98: 0xe0000b40, 0x16d99: 0xe0000b3d, 0x16d9a: 0xe0000b1a, 0x16d9b: 0xe0000b17,\n\t0x16d9c: 0xe0000bb8, 0x16d9d: 0xe0000bb5, 0x16d9e: 0xe0000bb2, 0x16d9f: 0xe0000baf,\n\t0x16da0: 0xe0000bc4, 0x16da1: 0xe0000bc1, 0x16da2: 0xe0000bca, 0x16da3: 0xe0000bc7,\n\t0x16da4: 0xe0000bee, 0x16da5: 0xe0000beb, 0x16da6: 0xe0000c1b, 0x16da7: 0xe0000c18,\n\t0x16da8: 0xe0000c51, 0x16da9: 0xe0000c4e, 0x16daa: 0xe0000c60, 0x16dab: 0xe0000c5d,\n\t0x16dac: 0xe0000c31, 0x16dad: 0xe0000c2e, 0x16dae: 0xe0000c5a, 0x16daf: 0xe0000c57,\n\t0x16db0: 0xe0000c54, 0x16db1: 0x402da220, 0x16db2: 0xf0000a0a, 0x16db3: 0xf0000404,\n\t0x16db4: 0xe0000c8a, 0x16db5: 0xe0000c87, 0x16db6: 0xe0000c9f, 0x16db7: 0xe0000c9c,\n\t0x16db8: 0x402f7220, 0x16db9: 0xe0000ccc, 0x16dba: 0xe0000cc9, 0x16dbb: 0xe0000cd8,\n\t0x16dbc: 0xe0000cd5, 0x16dbd: 0xe0000cd2, 0x16dbe: 0xe0000ccf, 0x16dbf: 0xe0000d04,\n\t// Block 0x5b7, offset 0x16dc0\n\t0x16dc0: 0xe0000cfe, 0x16dc1: 0xe0000cf8, 0x16dc2: 0xe0000cf5, 0x16dc3: 0xe0000d51,\n\t0x16dc4: 0xe0000d4e, 0x16dc5: 0xe0000d6f, 0x16dc6: 0xe0000d6c, 0x16dc7: 0xe0000d5d,\n\t0x16dc8: 0xe0000d5a, 0x16dc9: 0xf0000404, 0x16dca: 0x002eda88, 0x16dcb: 0x402eda20,\n\t0x16dcc: 0xe0000e2e, 0x16dcd: 0xe0000e2b, 0x16dce: 0xe0000da0, 0x16dcf: 0xe0000d9d,\n\t0x16dd0: 0xe0000de0, 0x16dd1: 0xe0000ddd, 0x16dd2: 0xe0000e93, 0x16dd3: 0xe0000e8f,\n\t0x16dd4: 0xe0000eca, 0x16dd5: 0xe0000ec7, 0x16dd6: 0xe0000edc, 0x16dd7: 0xe0000ed9,\n\t0x16dd8: 0xe0000ed0, 0x16dd9: 0xe0000ecd, 0x16dda: 0xe0000f1f, 0x16ddb: 0xe0000f1c,\n\t0x16ddc: 0xe0000f2d, 0x16ddd: 0xe0000f2a, 0x16dde: 0x002fe883, 0x16ddf: 0x402fe820,\n\t0x16de0: 0xe0000f33, 0x16de1: 0xe0000f30, 0x16de2: 0x00302e83, 0x16de3: 0x40302e20,\n\t0x16de4: 0xe0000f8a, 0x16de5: 0xe0000f87, 0x16de6: 0x00303688, 0x16de7: 0x40303620,\n\t0x16de8: 0xe000102b, 0x16de9: 0xe0001028, 0x16dea: 0xe000103f, 0x16deb: 0xe000103c,\n\t0x16dec: 0xe0000fe7, 0x16ded: 0xe0000fe4, 0x16dee: 0xe0000ff9, 0x16def: 0xe0000ff6,\n\t0x16df0: 0xe0001025, 0x16df1: 0xe0001022, 0x16df2: 0xe0001039, 0x16df3: 0xe0001036,\n\t0x16df4: 0xe00010d8, 0x16df5: 0xe00010d5, 0x16df6: 0xe000110e, 0x16df7: 0xe000110b,\n\t0x16df8: 0xe0001117, 0x16df9: 0xe000113b, 0x16dfa: 0xe0001138, 0x16dfb: 0xe000114d,\n\t0x16dfc: 0xe000114a, 0x16dfd: 0xe0001147, 0x16dfe: 0xe0001144, 0x16dff: 0xe0000f64,\n\t// Block 0x5b8, offset 0x16e00\n\t0x16e00: 0xe000098f, 0x16e01: 0xe000098c, 0x16e02: 0xe0000995, 0x16e03: 0xe0000992,\n\t0x16e04: 0xe0000b62, 0x16e05: 0xe0000b5f, 0x16e06: 0xe0000b68, 0x16e07: 0xe0000b65,\n\t0x16e08: 0xe0000c6c, 0x16e09: 0xe0000c69, 0x16e0a: 0xe0000c72, 0x16e0b: 0xe0000c6f,\n\t0x16e0c: 0xe0000e4a, 0x16e0d: 0xe0000e47, 0x16e0e: 0xe0000e50, 0x16e0f: 0xe0000e4d,\n\t0x16e10: 0xe0000ee8, 0x16e11: 0xe0000ee5, 0x16e12: 0xe0000eee, 0x16e13: 0xe0000eeb,\n\t0x16e14: 0xe0001053, 0x16e15: 0xe0001050, 0x16e16: 0xe0001059, 0x16e17: 0xe0001056,\n\t0x16e18: 0x002fe883, 0x16e19: 0x402fe820, 0x16e1a: 0x00302e83, 0x16e1b: 0x40302e20,\n\t0x16e1c: 0x00312288, 0x16e1d: 0x40312220, 0x16e1e: 0xe0000bf4, 0x16e1f: 0xe0000bf1,\n\t0x16e20: 0x002ebc88, 0x16e21: 0x402c8c20, 0x16e22: 0x002f2288, 0x16e23: 0x402f2220,\n\t0x16e24: 0x00314088, 0x16e25: 0x40314020, 0x16e26: 0xe000096f, 0x16e27: 0xe000096c,\n\t0x16e28: 0xe0000b32, 0x16e29: 0xe0000b2f, 0x16e2a: 0xe0000dd9, 0x16e2b: 0xe0000dd5,\n\t0x16e2c: 0xe0000dfd, 0x16e2d: 0xe0000df9, 0x16e2e: 0xe0000e04, 0x16e2f: 0xe0000e01,\n\t0x16e30: 0xe0000e0b, 0x16e31: 0xe0000e07, 0x16e32: 0xe0001129, 0x16e33: 0xe0001126,\n\t0x16e34: 0x402e5e20, 0x16e35: 0x402ed020, 0x16e36: 0x40305a20, 0x16e37: 0x402dd420,\n\t0x16e38: 0xe0000abf, 0x16e39: 0xe0000ec4, 0x16e3a: 0x002be888, 0x16e3b: 0x002c4488,\n\t0x16e3c: 0x402c4420, 0x16e3d: 0x002e3888, 0x16e3e: 0x00303e88, 0x16e3f: 0x402ffc20,\n\t// Block 0x5b9, offset 0x16e40\n\t0x16e40: 0xe00010d2, 0x16e41: 0xe00010cf, 0x16e42: 0xe00010cc, 0x16e43: 0xe00010c9,\n\t0x16e44: 0xe00010e1, 0x16e45: 0xe00010de, 0x16e46: 0xe00010e7, 0x16e47: 0xe00010e4,\n\t0x16e48: 0xe00010ed, 0x16e49: 0xe00010ea, 0x16e4a: 0xe00010fc, 0x16e4b: 0xe00010f9,\n\t0x16e4c: 0xe00010f6, 0x16e4d: 0xe00010f3, 0x16e4e: 0xe0001123, 0x16e4f: 0xe0001120,\n\t0x16e50: 0xe0001141, 0x16e51: 0xe000113e, 0x16e52: 0xe0001153, 0x16e53: 0xe0001150,\n\t0x16e54: 0xe0001159, 0x16e55: 0xe0001156, 0x16e56: 0xe0000c15, 0x16e57: 0xe0000f8d,\n\t0x16e58: 0xe00010db, 0x16e59: 0xe0001111, 0x16e5a: 0xf0000404, 0x16e5b: 0xe0000f70,\n\t0x16e5c: 0x40300420, 0x16e5d: 0x40300620, 0x16e5e: 0xe0000f7f, 0x16e5f: 0x402c9620,\n\t0x16e60: 0xe000099b, 0x16e61: 0xe0000998, 0x16e62: 0xe0000989, 0x16e63: 0xe0000986,\n\t0x16e64: 0xe0003934, 0x16e65: 0xe0003931, 0x16e66: 0xe000393a, 0x16e67: 0xe0003937,\n\t0x16e68: 0xe0003975, 0x16e69: 0xe0003972, 0x16e6a: 0xe0003960, 0x16e6b: 0xe000395d,\n\t0x16e6c: 0xe0003987, 0x16e6d: 0xe0003984, 0x16e6e: 0xe000388e, 0x16e6f: 0xe000388b,\n\t0x16e70: 0xe0003894, 0x16e71: 0xe0003891, 0x16e72: 0xe0003908, 0x16e73: 0xe0003905,\n\t0x16e74: 0xe00038d2, 0x16e75: 0xe00038cf, 0x16e76: 0xe000391a, 0x16e77: 0xe0003917,\n\t0x16e78: 0xe0000b6e, 0x16e79: 0xe0000b6b, 0x16e7a: 0xe0000b5c, 0x16e7b: 0xe0000b59,\n\t0x16e7c: 0xe0000b26, 0x16e7d: 0xe0000b23, 0x16e7e: 0xe0000afb, 0x16e7f: 0xe0000af7,\n\t// Block 0x5ba, offset 0x16e80\n\t0x16e80: 0xa0000000, 0x16e81: 0xa0000000, 0x16e82: 0xa0000000, 0x16e83: 0xa0000000,\n\t0x16e84: 0xa0000000, 0x16e85: 0xa0000000, 0x16e86: 0xa0000000, 0x16e87: 0xa0000000,\n\t0x16e88: 0xa0000000, 0x16e89: 0x40020020, 0x16e8a: 0x40020220, 0x16e8b: 0x40020420,\n\t0x16e8c: 0x40020620, 0x16e8d: 0x40020820, 0x16e8e: 0xa0000000, 0x16e8f: 0xa0000000,\n\t0x16e90: 0xa0000000, 0x16e91: 0xa0000000, 0x16e92: 0xa0000000, 0x16e93: 0xa0000000,\n\t0x16e94: 0xa0000000, 0x16e95: 0xa0000000, 0x16e96: 0xa0000000, 0x16e97: 0xa0000000,\n\t0x16e98: 0xa0000000, 0x16e99: 0xa0000000, 0x16e9a: 0xa0000000, 0x16e9b: 0xa0000000,\n\t0x16e9c: 0xa0000000, 0x16e9d: 0xa0000000, 0x16e9e: 0xa0000000, 0x16e9f: 0xa0000000,\n\t0x16ea0: 0x40021220, 0x16ea1: 0x4002ba20, 0x16ea2: 0x4003e020, 0x16ea3: 0x4004ea20,\n\t0x16ea4: 0x4027de20, 0x16ea5: 0x4004ec20, 0x16ea6: 0x4004e620, 0x16ea7: 0x4003d220,\n\t0x16ea8: 0x4003f420, 0x16ea9: 0x4003f620, 0x16eaa: 0x4004d820, 0x16eab: 0x40093820,\n\t0x16eac: 0x40024020, 0x16ead: 0x40021a20, 0x16eae: 0x4002e420, 0x16eaf: 0x4004e220,\n\t0x16eb0: 0x4029cc20, 0x16eb1: 0x4029ce20, 0x16eb2: 0x4029d020, 0x16eb3: 0x4029d220,\n\t0x16eb4: 0x4029d420, 0x16eb5: 0x4029d620, 0x16eb6: 0x4029d820, 0x16eb7: 0x4029da20,\n\t0x16eb8: 0x4029dc20, 0x16eb9: 0x4029de20, 0x16eba: 0x40026c20, 0x16ebb: 0x40026220,\n\t0x16ebc: 0x40094020, 0x16ebd: 0x40094220, 0x16ebe: 0x40094420, 0x16ebf: 0x4002c420,\n\t// Block 0x5bb, offset 0x16ec0\n\t0x16ec0: 0x4004d620, 0x16ec1: 0xcec29791, 0x16ec2: 0x002c0a88, 0x16ec3: 0xceca0991,\n\t0x16ec4: 0x002c6288, 0x16ec5: 0x002c9888, 0x16ec6: 0x002d0888, 0x16ec7: 0xced20991,\n\t0x16ec8: 0x002d6888, 0x16ec9: 0x002d9a88, 0x16eca: 0x002dcc88, 0x16ecb: 0xcb1f0991,\n\t0x16ecc: 0xc0030002, 0x16ecd: 0x002e8288, 0x16ece: 0xced797e1, 0x16ecf: 0xcee49811,\n\t0x16ed0: 0x002f2c88, 0x16ed1: 0x002f5688, 0x16ed2: 0x002f7a88, 0x16ed3: 0xcb330991,\n\t0x16ed4: 0x00302c88, 0x16ed5: 0xc3900b21, 0x16ed6: 0x0030be88, 0x16ed7: 0x0030e288,\n\t0x16ed8: 0x0030f688, 0x16ed9: 0x00310088, 0x16eda: 0xcedc0991, 0x16edb: 0x4003f820,\n\t0x16edc: 0x4004e420, 0x16edd: 0x4003fa20, 0x16ede: 0x40062420, 0x16edf: 0x40021620,\n\t0x16ee0: 0x40061e20, 0x16ee1: 0xcebc9791, 0x16ee2: 0x402c0a20, 0x16ee3: 0xcec80991,\n\t0x16ee4: 0x402c6220, 0x16ee5: 0x402c9820, 0x16ee6: 0x402d0820, 0x16ee7: 0xced00991,\n\t0x16ee8: 0x402d6820, 0x16ee9: 0x402d9a20, 0x16eea: 0x402dcc20, 0x16eeb: 0xcb1d0991,\n\t0x16eec: 0xc0000002, 0x16eed: 0x402e8220, 0x16eee: 0xced497e1, 0x16eef: 0xcede9811,\n\t0x16ef0: 0x402f2c20, 0x16ef1: 0x402f5620, 0x16ef2: 0x402f7a20, 0x16ef3: 0xcb310991,\n\t0x16ef4: 0x40302c20, 0x16ef5: 0xc38d0b21, 0x16ef6: 0x4030be20, 0x16ef7: 0x4030e220,\n\t0x16ef8: 0x4030f620, 0x16ef9: 0x40310020, 0x16efa: 0xceda0991, 0x16efb: 0x4003fc20,\n\t0x16efc: 0x40094820, 0x16efd: 0x4003fe20, 0x16efe: 0x40094c20, 0x16eff: 0xa0000000,\n\t// Block 0x5bc, offset 0x16f00\n\t0x16f00: 0xe00008f5, 0x16f01: 0x002c0883, 0x16f02: 0xe0000921, 0x16f03: 0x00320ea3,\n\t0x16f04: 0x00320e83, 0x16f05: 0x00320c83, 0x16f06: 0x00320a83, 0x16f07: 0xe0000a53,\n\t0x16f08: 0xe0000ae8, 0x16f09: 0xe0000ae2, 0x16f0a: 0xe0000af4, 0x16f0b: 0xe0000b20,\n\t0x16f0c: 0xe0000c2b, 0x16f0d: 0xe0000c25, 0x16f0e: 0xe0000c37, 0x16f0f: 0xe0000c43,\n\t0x16f10: 0x002c96a3, 0x16f11: 0x002ee0c3, 0x16f12: 0xe0000d9a, 0x16f13: 0xe0000d94,\n\t0x16f14: 0x003210e3, 0x16f15: 0x003210c3, 0x16f16: 0x00321083, 0x16f17: 0x40093e20,\n\t0x16f18: 0x00320883, 0x16f19: 0xe0000fe1, 0x16f1a: 0xe0000fdb, 0x16f1b: 0xe0000fed,\n\t0x16f1c: 0x003100a3, 0x16f1d: 0xe0001102, 0x16f1e: 0x00306aa3, 0x16f1f: 0xe0000f7b,\n\t0x16f20: 0xe00008f2, 0x16f21: 0x402c0820, 0x16f22: 0xe000091e, 0x16f23: 0x40320e21,\n\t0x16f24: 0x40320e20, 0x16f25: 0x40320c20, 0x16f26: 0x40320a20, 0x16f27: 0xe0000a4d,\n\t0x16f28: 0xe0000ae5, 0x16f29: 0xe0000adf, 0x16f2a: 0xe0000af1, 0x16f2b: 0xe0000b1d,\n\t0x16f2c: 0xe0000c28, 0x16f2d: 0xe0000c22, 0x16f2e: 0xe0000c34, 0x16f2f: 0xe0000c40,\n\t0x16f30: 0x402c9621, 0x16f31: 0x402ee022, 0x16f32: 0xe0000d97, 0x16f33: 0xe0000d91,\n\t0x16f34: 0x40321023, 0x16f35: 0x40321022, 0x16f36: 0x40321020, 0x16f37: 0x40093c20,\n\t0x16f38: 0x40320820, 0x16f39: 0xe0000fde, 0x16f3a: 0xe0000fd8, 0x16f3b: 0xe0000fea,\n\t0x16f3c: 0x40310021, 0x16f3d: 0xe00010ff, 0x16f3e: 0x40306a21, 0x16f3f: 0xe0001114,\n\t// Block 0x5bd, offset 0x16f40\n\t0x16f40: 0xe0000983, 0x16f41: 0xe0000980, 0x16f42: 0xe00008fb, 0x16f43: 0xe00008f8,\n\t0x16f44: 0xe000097d, 0x16f45: 0xe000097a, 0x16f46: 0xe0000a38, 0x16f47: 0xe0000a35,\n\t0x16f48: 0xe0000a3e, 0x16f49: 0xe0000a3b, 0x16f4a: 0xe0000a4a, 0x16f4b: 0xe0000a47,\n\t0x16f4c: 0x002c5c83, 0x16f4d: 0x402c5c20, 0x16f4e: 0xe0000a86, 0x16f4f: 0xe0000a83,\n\t0x16f50: 0x002c9683, 0x16f51: 0x402c9620, 0x16f52: 0xe0000b46, 0x16f53: 0xe0000b43,\n\t0x16f54: 0xe0000aee, 0x16f55: 0xe0000aeb, 0x16f56: 0xe0000b2c, 0x16f57: 0xe0000b29,\n\t0x16f58: 0xe0000b40, 0x16f59: 0xe0000b3d, 0x16f5a: 0xe0000b1a, 0x16f5b: 0xe0000b17,\n\t0x16f5c: 0xe0000bb8, 0x16f5d: 0xe0000bb5, 0x16f5e: 0xe0000bb2, 0x16f5f: 0xe0000baf,\n\t0x16f60: 0xe0000bc4, 0x16f61: 0xe0000bc1, 0x16f62: 0xe0000bca, 0x16f63: 0xe0000bc7,\n\t0x16f64: 0xe0000bee, 0x16f65: 0xe0000beb, 0x16f66: 0xe0000c1b, 0x16f67: 0xe0000c18,\n\t0x16f68: 0xe0000c51, 0x16f69: 0xe0000c4e, 0x16f6a: 0xe0000c60, 0x16f6b: 0xe0000c5d,\n\t0x16f6c: 0xe0000c31, 0x16f6d: 0xe0000c2e, 0x16f6e: 0xe0000c5a, 0x16f6f: 0xe0000c57,\n\t0x16f70: 0xe0000c54, 0x16f71: 0x402da220, 0x16f72: 0xf0000a0a, 0x16f73: 0xf0000404,\n\t0x16f74: 0xe0000c8a, 0x16f75: 0xe0000c87, 0x16f76: 0xe0000c9f, 0x16f77: 0xe0000c9c,\n\t0x16f78: 0x402f7220, 0x16f79: 0xe0000ccc, 0x16f7a: 0xe0000cc9, 0x16f7b: 0xe0000cd8,\n\t0x16f7c: 0xe0000cd5, 0x16f7d: 0xe0000cd2, 0x16f7e: 0xe0000ccf, 0x16f7f: 0xe0000d04,\n\t// Block 0x5be, offset 0x16f80\n\t0x16f80: 0xe0000cfe, 0x16f81: 0xe0000cf8, 0x16f82: 0xe0000cf5, 0x16f83: 0x002ee0a3,\n\t0x16f84: 0x402ee021, 0x16f85: 0xe0000d6f, 0x16f86: 0xe0000d6c, 0x16f87: 0xe0000d5d,\n\t0x16f88: 0xe0000d5a, 0x16f89: 0xf0000404, 0x16f8a: 0x002ee083, 0x16f8b: 0x402ee020,\n\t0x16f8c: 0xe0000e2e, 0x16f8d: 0xe0000e2b, 0x16f8e: 0xe0000da0, 0x16f8f: 0xe0000d9d,\n\t0x16f90: 0x003210a3, 0x16f91: 0x40321021, 0x16f92: 0x003208a3, 0x16f93: 0x40320821,\n\t0x16f94: 0xe0000eca, 0x16f95: 0xe0000ec7, 0x16f96: 0xe0000edc, 0x16f97: 0xe0000ed9,\n\t0x16f98: 0xe0000ed0, 0x16f99: 0xe0000ecd, 0x16f9a: 0xe0000f1f, 0x16f9b: 0xe0000f1c,\n\t0x16f9c: 0xe0000f2d, 0x16f9d: 0xe0000f2a, 0x16f9e: 0xe0000f47, 0x16f9f: 0xe0000f44,\n\t0x16fa0: 0x00302a83, 0x16fa1: 0x40302a20, 0x16fa2: 0xe0000f99, 0x16fa3: 0xe0000f96,\n\t0x16fa4: 0xe0000f8a, 0x16fa5: 0xe0000f87, 0x16fa6: 0x00306a83, 0x16fa7: 0x40306a20,\n\t0x16fa8: 0xe000102b, 0x16fa9: 0xe0001028, 0x16faa: 0xe000103f, 0x16fab: 0xe000103c,\n\t0x16fac: 0xe0000fe7, 0x16fad: 0xe0000fe4, 0x16fae: 0xe0000ff9, 0x16faf: 0xe0000ff6,\n\t0x16fb0: 0x003100c3, 0x16fb1: 0x40310022, 0x16fb2: 0xe0001039, 0x16fb3: 0xe0001036,\n\t0x16fb4: 0xe00010d8, 0x16fb5: 0xe00010d5, 0x16fb6: 0xe000110e, 0x16fb7: 0xe000110b,\n\t0x16fb8: 0xe0001117, 0x16fb9: 0xe000113b, 0x16fba: 0xe0001138, 0x16fbb: 0xe000114d,\n\t0x16fbc: 0xe000114a, 0x16fbd: 0x00320683, 0x16fbe: 0x40320620, 0x16fbf: 0xe0000f64,\n\t// Block 0x5bf, offset 0x16fc0\n\t0x16fc0: 0x402c1a20, 0x16fc1: 0x002c2a88, 0x16fc2: 0x002c3288, 0x16fc3: 0x402c3220,\n\t0x16fc4: 0x0031c488, 0x16fc5: 0x4031c420, 0x16fc6: 0x002efa88, 0x16fc7: 0x002c4e88,\n\t0x16fc8: 0x402c4e20, 0x16fc9: 0x002c7288, 0x16fca: 0x002c7a88, 0x16fcb: 0x002c8488,\n\t0x16fcc: 0x402c8420, 0x16fcd: 0xe000115c, 0x16fce: 0x002cae88, 0x16fcf: 0x002cb888,\n\t0x16fd0: 0x002cc288, 0x16fd1: 0x002d1688, 0x16fd2: 0x402d1620, 0x16fd3: 0x002d4488,\n\t0x16fd4: 0x002d5888, 0x16fd5: 0x402d7820, 0x16fd6: 0x002dc288, 0x16fd7: 0x002db688,\n\t0x16fd8: 0x002e0a88, 0x16fd9: 0x402e0a20, 0x16fda: 0x402e3820, 0x16fdb: 0x402e7220,\n\t0x16fdc: 0x0030a088, 0x16fdd: 0x002eb488, 0x16fde: 0x402ebc20, 0x16fdf: 0x002f1088,\n\t0x16fe0: 0xe0000e56, 0x16fe1: 0xe0000e53, 0x16fe2: 0x002d6088, 0x16fe3: 0x402d6020,\n\t0x16fe4: 0x002f3e88, 0x16fe5: 0x402f3e20, 0x16fe6: 0x002f8288, 0x16fe7: 0x0031b488,\n\t0x16fe8: 0x4031b420, 0x16fe9: 0x00300888, 0x16fea: 0x40301220, 0x16feb: 0x40304220,\n\t0x16fec: 0x00304a88, 0x16fed: 0x40304a20, 0x16fee: 0x00305288, 0x16fef: 0xe000105f,\n\t0x16ff0: 0xe000105c, 0x16ff1: 0x0030b488, 0x16ff2: 0x0030cc88, 0x16ff3: 0x00311888,\n\t0x16ff4: 0x40311820, 0x16ff5: 0x00313488, 0x16ff6: 0x40313420, 0x16ff7: 0xcece0991,\n\t0x16ff8: 0x00316e88, 0x16ff9: 0x40316e20, 0x16ffa: 0x40317820, 0x16ffb: 0x4031a620,\n\t0x16ffc: 0x0031bc88, 0x16ffd: 0x4031bc20, 0x16ffe: 0xe0000fc9, 0x16fff: 0x40319420,\n\t// Block 0x5c0, offset 0x17000\n\t0x17000: 0x40321220, 0x17001: 0x40321a20, 0x17002: 0x40322220, 0x17003: 0x40322a20,\n\t0x17004: 0xe0000ad5, 0x17005: 0xe0000ad1, 0x17006: 0xe0000acd, 0x17007: 0xf0000a0a,\n\t0x17008: 0xf000040a, 0x17009: 0xf0000404, 0x1700a: 0xf0000a0a, 0x1700b: 0xf000040a,\n\t0x1700c: 0xf0000404, 0x1700d: 0xe0000947, 0x1700e: 0xe0000944, 0x1700f: 0xe0000c3d,\n\t0x17010: 0xe0000c3a, 0x17011: 0xe0000dcc, 0x17012: 0xe0000dc9, 0x17013: 0xe0000ff3,\n\t0x17014: 0xe0000ff0, 0x17015: 0xe000298b, 0x17016: 0xe0002988, 0x17017: 0xe0002979,\n\t0x17018: 0xe0002976, 0x17019: 0xe0002985, 0x1701a: 0xe0002982, 0x1701b: 0xe000297f,\n\t0x1701c: 0xe000297c, 0x1701d: 0x402cae20, 0x1701e: 0xe00037e8, 0x1701f: 0xe00037e5,\n\t0x17020: 0xe000299d, 0x17021: 0xe000299a, 0x17022: 0xe000ad9e, 0x17023: 0xe000ad9b,\n\t0x17024: 0x002d6683, 0x17025: 0x402d6620, 0x17026: 0x002d6483, 0x17027: 0x402d6420,\n\t0x17028: 0x002e2083, 0x17029: 0x402e2020, 0x1702a: 0x00321103, 0x1702b: 0x40321024,\n\t0x1702c: 0xe000ade0, 0x1702d: 0xe000addd, 0x1702e: 0x002c6083, 0x1702f: 0x402c6020,\n\t0x17030: 0xe0000c8d, 0x17031: 0xf0000a0a, 0x17032: 0xf000040a, 0x17033: 0xf0000404,\n\t0x17034: 0xe0000bac, 0x17035: 0xe0000ba9, 0x17036: 0x002d7888, 0x17037: 0x00319488,\n\t0x17038: 0xe0000d57, 0x17039: 0xe0000d54, 0x1703a: 0xe0002991, 0x1703b: 0xe000298e,\n\t0x1703c: 0xe000ad98, 0x1703d: 0xe000ad95, 0x1703e: 0xe000ad92, 0x1703f: 0xe000ad8f,\n\t// Block 0x5c1, offset 0x17040\n\t0x17040: 0xe000098f, 0x17041: 0xe000098c, 0x17042: 0xe0000995, 0x17043: 0xe0000992,\n\t0x17044: 0xe0000b62, 0x17045: 0xe0000b5f, 0x17046: 0xe0000b68, 0x17047: 0xe0000b65,\n\t0x17048: 0xe0000c6c, 0x17049: 0xe0000c69, 0x1704a: 0xe0000c72, 0x1704b: 0xe0000c6f,\n\t0x1704c: 0xe0000e4a, 0x1704d: 0xe0000e47, 0x1704e: 0xe0000e50, 0x1704f: 0xe0000e4d,\n\t0x17050: 0xe0000ee8, 0x17051: 0xe0000ee5, 0x17052: 0xe0000eee, 0x17053: 0xe0000eeb,\n\t0x17054: 0xe0001053, 0x17055: 0xe0001050, 0x17056: 0xe0001059, 0x17057: 0xe0001056,\n\t0x17058: 0xe0000f61, 0x17059: 0xe0000f5e, 0x1705a: 0xe0000fa5, 0x1705b: 0xe0000fa2,\n\t0x1705c: 0x00312288, 0x1705d: 0x40312220, 0x1705e: 0xe0000bf4, 0x1705f: 0xe0000bf1,\n\t0x17060: 0x002ebc88, 0x17061: 0x402c8c20, 0x17062: 0x002f2288, 0x17063: 0x402f2220,\n\t0x17064: 0x00314088, 0x17065: 0x40314020, 0x17066: 0x00320ca3, 0x17067: 0x40320c21,\n\t0x17068: 0xe0000b32, 0x17069: 0xe0000b2f, 0x1706a: 0xe00037fa, 0x1706b: 0xe00037f7,\n\t0x1706c: 0xe000adbc, 0x1706d: 0xe000adb9, 0x1706e: 0xe0000e04, 0x1706f: 0xe0000e01,\n\t0x17070: 0xe0000e0b, 0x17071: 0xe0000e07, 0x17072: 0xe0001129, 0x17073: 0xe0001126,\n\t0x17074: 0x402e5e20, 0x17075: 0x402ed020, 0x17076: 0x40305a20, 0x17077: 0x402dd420,\n\t0x17078: 0xe0000abf, 0x17079: 0xe0000ec4, 0x1707a: 0x002be888, 0x1707b: 0x002c4488,\n\t0x1707c: 0x402c4420, 0x1707d: 0x002e3888, 0x1707e: 0x00303e88, 0x1707f: 0x402ffc20,\n\t// Block 0x5c2, offset 0x17080\n\t0x17080: 0x402f8220, 0x17081: 0x402fd820, 0x17082: 0x402ff420, 0x17083: 0x40300820,\n\t0x17084: 0x402df620, 0x17085: 0x40301a20, 0x17086: 0x40302420, 0x17087: 0x40306420,\n\t0x17088: 0x40305220, 0x17089: 0x40307c20, 0x1708a: 0x4030b420, 0x1708b: 0x4030cc20,\n\t0x1708c: 0x4030da20, 0x1708d: 0x4030ee20, 0x1708e: 0x402e7a20, 0x1708f: 0x40310820,\n\t0x17090: 0x40314820, 0x17091: 0x40315020, 0x17092: 0xcecc0991, 0x17093: 0x40318020,\n\t0x17094: 0x4031cc20, 0x17095: 0x4031e820, 0x17096: 0x40320a20, 0x17097: 0x40323220,\n\t0x17098: 0x40323a20, 0x17099: 0x402c1220, 0x1709a: 0x402cf820, 0x1709b: 0x402d4c20,\n\t0x1709c: 0x402d7020, 0x1709d: 0x402de620, 0x1709e: 0x402e1a20, 0x1709f: 0x402e2a20,\n\t0x170a0: 0x402f6220, 0x170a1: 0x4031fa20, 0x170a2: 0x40320220, 0x170a3: 0xe0000aca,\n\t0x170a4: 0xe0000adc, 0x170a5: 0xe0000ad9, 0x170a6: 0xe0000fcc, 0x170a7: 0xe0000fcf,\n\t0x170a8: 0xe0000fba, 0x170a9: 0xe0000ba1, 0x170aa: 0xe0000d11, 0x170ab: 0xe0000d18,\n\t0x170ac: 0x40324220, 0x170ad: 0x40324a20, 0x170ae: 0x40309020, 0x170af: 0x40309820,\n\t0x170b0: 0x002d6894, 0x170b1: 0x002d8094, 0x170b2: 0x002dcc94, 0x170b3: 0x002f7a94,\n\t0x170b4: 0x002f9894, 0x170b5: 0x002fac94, 0x170b6: 0x002fd894, 0x170b7: 0x0030e294,\n\t0x170b8: 0x00310094, 0x170b9: 0x40064020, 0x170ba: 0x40064420, 0x170bb: 0x402d9620,\n\t0x170bc: 0x4031de20, 0x170bd: 0x402d9820, 0x170be: 0x4031e220, 0x170bf: 0x4031f020,\n\t// Block 0x5c3, offset 0x170c0\n\t0x170c0: 0xe0000d24, 0x170c1: 0xe0000d21, 0x170c2: 0xe0000d2a, 0x170c3: 0xe0000d27,\n\t0x170c4: 0xe0000d69, 0x170c5: 0xe0000d66, 0x170c6: 0xe0000d7b, 0x170c7: 0xe0000d78,\n\t0x170c8: 0xe0000d87, 0x170c9: 0xe0000d84, 0x170ca: 0xe0000d81, 0x170cb: 0xe0000d7e,\n\t0x170cc: 0xe000adb0, 0x170cd: 0xe000adad, 0x170ce: 0xe000adb6, 0x170cf: 0xe000adb3,\n\t0x170d0: 0xe0000e3d, 0x170d1: 0xe0000e39, 0x170d2: 0xe0000e35, 0x170d3: 0xe0000e31,\n\t0x170d4: 0xe0000ea7, 0x170d5: 0xe0000ea4, 0x170d6: 0xe0000ead, 0x170d7: 0xe0000eaa,\n\t0x170d8: 0xe0000ed6, 0x170d9: 0xe0000ed3, 0x170da: 0xe0000ef4, 0x170db: 0xe0000ef1,\n\t0x170dc: 0xe0000efb, 0x170dd: 0xe0000ef7, 0x170de: 0xe0000f02, 0x170df: 0xe0000eff,\n\t0x170e0: 0xe0000f41, 0x170e1: 0xe0000f3e, 0x170e2: 0xe0000f53, 0x170e3: 0xe0000f50,\n\t0x170e4: 0xe0000f26, 0x170e5: 0xe0000f22, 0x170e6: 0xe000a9d9, 0x170e7: 0xe000a9d6,\n\t0x170e8: 0xe0000f5a, 0x170e9: 0xe0000f56, 0x170ea: 0xe0000f93, 0x170eb: 0xe0000f90,\n\t0x170ec: 0xe0000f9f, 0x170ed: 0xe0000f9c, 0x170ee: 0xe0000fb1, 0x170ef: 0xe0000fae,\n\t0x170f0: 0xe0000fab, 0x170f1: 0xe0000fa8, 0x170f2: 0xe0001093, 0x170f3: 0xe0001090,\n\t0x170f4: 0xe000109f, 0x170f5: 0xe000109c, 0x170f6: 0xe0001099, 0x170f7: 0xe0001096,\n\t0x170f8: 0xe0001032, 0x170f9: 0xe000102e, 0x170fa: 0xe000298b, 0x170fb: 0xe0002988,\n\t0x170fc: 0xe00010a9, 0x170fd: 0xe00010a6, 0x170fe: 0xe00010af, 0x170ff: 0xe00010ac,\n\t// Block 0x5c4, offset 0x17100\n\t0x17100: 0xe00010d2, 0x17101: 0xe00010cf, 0x17102: 0xe00010cc, 0x17103: 0xe00010c9,\n\t0x17104: 0xe00010e1, 0x17105: 0xe00010de, 0x17106: 0xe00010e7, 0x17107: 0xe00010e4,\n\t0x17108: 0xe00010ed, 0x17109: 0xe00010ea, 0x1710a: 0xe00010fc, 0x1710b: 0xe00010f9,\n\t0x1710c: 0xe00010f6, 0x1710d: 0xe00010f3, 0x1710e: 0xe0001123, 0x1710f: 0xe0001120,\n\t0x17110: 0xe0001141, 0x17111: 0xe000113e, 0x17112: 0xe0001153, 0x17113: 0xe0001150,\n\t0x17114: 0xe0001159, 0x17115: 0xe0001156, 0x17116: 0xe0000c15, 0x17117: 0xe0000f8d,\n\t0x17118: 0xe00010db, 0x17119: 0xe0001111, 0x1711a: 0xf0000404, 0x1711b: 0xe0000f70,\n\t0x1711c: 0x40300420, 0x1711d: 0x40300620, 0x1711e: 0xe0000f7f, 0x1711f: 0x402c9620,\n\t0x17120: 0xe000099b, 0x17121: 0xe0000998, 0x17122: 0xe0000989, 0x17123: 0xe0000986,\n\t0x17124: 0xe0003cae, 0x17125: 0xe0003cab, 0x17126: 0xe0000930, 0x17127: 0xe000092c,\n\t0x17128: 0xe0000940, 0x17129: 0xe000093c, 0x1712a: 0xe000adaa, 0x1712b: 0xe000ada7,\n\t0x1712c: 0xe00009aa, 0x1712d: 0xe00009a6, 0x1712e: 0xe0003ca8, 0x1712f: 0xe0003ca5,\n\t0x17130: 0xe000090a, 0x17131: 0xe0000906, 0x17132: 0xe000091a, 0x17133: 0xe0000916,\n\t0x17134: 0xe000ada4, 0x17135: 0xe000ada1, 0x17136: 0xe00009a2, 0x17137: 0xe000099e,\n\t0x17138: 0xe0000b6e, 0x17139: 0xe0000b6b, 0x1713a: 0xe0000b5c, 0x1713b: 0xe0000b59,\n\t0x1713c: 0xe0000b26, 0x1713d: 0xe0000b23, 0x1713e: 0xe0000afb, 0x1713f: 0xe0000af7,\n\t// Block 0x5c5, offset 0x17140\n\t0x17140: 0xe0000b03, 0x17141: 0xe0000aff, 0x17142: 0xe0000b13, 0x17143: 0xe0000b0f,\n\t0x17144: 0xe0000b0b, 0x17145: 0xe0000b07, 0x17146: 0xe0000b75, 0x17147: 0xe0000b71,\n\t0x17148: 0xe0000c66, 0x17149: 0xe0000c63, 0x1714a: 0xe0000c78, 0x1714b: 0xe0000c75,\n\t0x1714c: 0xe0000e84, 0x1714d: 0xe0000e81, 0x1714e: 0xe0000e44, 0x1714f: 0xe0000e41,\n\t0x17150: 0xe000380c, 0x17151: 0xe0003809, 0x17152: 0xe000adc8, 0x17153: 0xe000adc5,\n\t0x17154: 0xe000add4, 0x17155: 0xe000add1, 0x17156: 0xe000adce, 0x17157: 0xe000adcb,\n\t0x17158: 0xe000adda, 0x17159: 0xe000add7, 0x1715a: 0xe0000e5d, 0x1715b: 0xe0000e59,\n\t0x1715c: 0xe0000e65, 0x1715d: 0xe0000e61, 0x1715e: 0xe0000e75, 0x1715f: 0xe0000e71,\n\t0x17160: 0xe000adc2, 0x17161: 0xe000adbf, 0x17162: 0xe0000e7d, 0x17163: 0xe0000e79,\n\t0x17164: 0xe000108d, 0x17165: 0xe000108a, 0x17166: 0xe000104d, 0x17167: 0xe000104a,\n\t0x17168: 0xe0001066, 0x17169: 0xe0001062, 0x1716a: 0xe000106e, 0x1716b: 0xe000106a,\n\t0x1716c: 0xe000107e, 0x1716d: 0xe000107a, 0x1716e: 0xe0001076, 0x1716f: 0xe0001072,\n\t0x17170: 0xe0001086, 0x17171: 0xe0001082, 0x17172: 0xe0001108, 0x17173: 0xe0001105,\n\t0x17174: 0xe0001135, 0x17175: 0xe0001132, 0x17176: 0xe000112f, 0x17177: 0xe000112c,\n\t0x17178: 0xe000111d, 0x17179: 0xe000111a, 0x1717a: 0xe0000d0a, 0x1717b: 0xe0000d07,\n\t0x1717c: 0x0030d888, 0x1717d: 0x4030d820, 0x1717e: 0x00312088, 0x1717f: 0x40312020,\n\t// Block 0x5c6, offset 0x17180\n\t0x17182: 0x4044b620, 0x17183: 0x4044b820,\n\t0x17185: 0x40449220, 0x17186: 0x40449420, 0x17187: 0x40449620,\n\t0x17188: 0x40449820, 0x17189: 0x40449a20, 0x1718a: 0x40449c20, 0x1718b: 0x40449e20,\n\t0x1718c: 0x4044a020, 0x1718d: 0x4044a220, 0x1718e: 0x4044a420, 0x1718f: 0x4044a620,\n\t0x17190: 0x4044a820, 0x17191: 0x4044aa20, 0x17192: 0x4044ac20, 0x17193: 0x4044ae20,\n\t0x17194: 0x4044b020, 0x17195: 0x4044b220, 0x17196: 0x4044b420,\n\t0x1719a: 0x4044b620, 0x1719b: 0x4044b820,\n\t0x1719c: 0x4044ba20, 0x1719d: 0x4044bc20, 0x1719e: 0x4044be20, 0x1719f: 0x4044c020,\n\t0x171a0: 0x4044c220, 0x171a1: 0x4044c420, 0x171a2: 0x4044c620, 0x171a3: 0x4044c820,\n\t0x171a4: 0x4044ce20, 0x171a5: 0x4044cc20, 0x171a6: 0x4044ce20, 0x171a7: 0x4044d020,\n\t0x171a8: 0x4044d220, 0x171a9: 0x4044d420, 0x171aa: 0x4044d620, 0x171ab: 0x4044d820,\n\t0x171ac: 0x4044da20, 0x171ad: 0x4044dc20, 0x171ae: 0x4044de20, 0x171af: 0x4044e020,\n\t0x171b0: 0x4044e220, 0x171b1: 0x4044e420, 0x171b3: 0x4044e620,\n\t0x171b4: 0x4044e820, 0x171b5: 0x4044ea20, 0x171b6: 0x4044ec20, 0x171b7: 0x4044ee20,\n\t0x171b8: 0x4044f020, 0x171b9: 0x4044f220, 0x171ba: 0x4044f420, 0x171bb: 0x4044f620,\n\t0x171bd: 0x4044f820,\n\t// Block 0x5c7, offset 0x171c0\n\t0x171c0: 0xa0000000, 0x171c1: 0xa0000000, 0x171c2: 0xa0000000, 0x171c3: 0xa0000000,\n\t0x171c4: 0xa0000000, 0x171c5: 0xa0000000, 0x171c6: 0xa0000000, 0x171c7: 0xa0000000,\n\t0x171c8: 0xa0000000, 0x171c9: 0x40020020, 0x171ca: 0x40020220, 0x171cb: 0x40020420,\n\t0x171cc: 0x40020620, 0x171cd: 0x40020820, 0x171ce: 0xa0000000, 0x171cf: 0xa0000000,\n\t0x171d0: 0xa0000000, 0x171d1: 0xa0000000, 0x171d2: 0xa0000000, 0x171d3: 0xa0000000,\n\t0x171d4: 0xa0000000, 0x171d5: 0xa0000000, 0x171d6: 0xa0000000, 0x171d7: 0xa0000000,\n\t0x171d8: 0xa0000000, 0x171d9: 0xa0000000, 0x171da: 0xa0000000, 0x171db: 0xa0000000,\n\t0x171dc: 0xa0000000, 0x171dd: 0xa0000000, 0x171de: 0xa0000000, 0x171df: 0xa0000000,\n\t0x171e0: 0x40021220, 0x171e1: 0x4002ba20, 0x171e2: 0x4003e020, 0x171e3: 0x4004ea20,\n\t0x171e4: 0x4027de20, 0x171e5: 0x4004ec20, 0x171e6: 0x4004e620, 0x171e7: 0x4003d220,\n\t0x171e8: 0x4003f420, 0x171e9: 0x4003f620, 0x171ea: 0x4004d820, 0x171eb: 0x40093820,\n\t0x171ec: 0x40024020, 0x171ed: 0x40021a20, 0x171ee: 0x4002e420, 0x171ef: 0x4004e220,\n\t0x171f0: 0x4029cc20, 0x171f1: 0x4029ce20, 0x171f2: 0x4029d020, 0x171f3: 0x4029d220,\n\t0x171f4: 0x4029d420, 0x171f5: 0x4029d620, 0x171f6: 0x4029d820, 0x171f7: 0x4029da20,\n\t0x171f8: 0x4029dc20, 0x171f9: 0x4029de20, 0x171fa: 0x40026c20, 0x171fb: 0x40026220,\n\t0x171fc: 0x40094020, 0x171fd: 0x40094220, 0x171fe: 0x40094420, 0x171ff: 0x4002c420,\n\t// Block 0x5c8, offset 0x17200\n\t0x17200: 0x4004d620, 0x17201: 0xce900071, 0x17202: 0x002c0a88, 0x17203: 0xc3590953,\n\t0x17204: 0x002c6288, 0x17205: 0x002c9888, 0x17206: 0x002d0888, 0x17207: 0x002d2288,\n\t0x17208: 0x002d6888, 0x17209: 0x002d9a88, 0x1720a: 0x002dcc88, 0x1720b: 0x002dfe88,\n\t0x1720c: 0xc0030002, 0x1720d: 0x002e8288, 0x1720e: 0x002e9e88, 0x1720f: 0xc33f2741,\n\t0x17210: 0x002f2c88, 0x17211: 0x002f5688, 0x17212: 0xc35f0991, 0x17213: 0xc3430991,\n\t0x17214: 0x00302c88, 0x17215: 0x00306c88, 0x17216: 0x0030be88, 0x17217: 0x0030e288,\n\t0x17218: 0x0030f688, 0x17219: 0x00310088, 0x1721a: 0xc3630991, 0x1721b: 0x4003f820,\n\t0x1721c: 0x4004e420, 0x1721d: 0x4003fa20, 0x1721e: 0x40062420, 0x1721f: 0x40021620,\n\t0x17220: 0x40061e20, 0x17221: 0xce8e0071, 0x17222: 0x402c0a20, 0x17223: 0xc3550953,\n\t0x17224: 0x402c6220, 0x17225: 0x402c9820, 0x17226: 0x402d0820, 0x17227: 0x402d2220,\n\t0x17228: 0x402d6820, 0x17229: 0x402d9a20, 0x1722a: 0x402dcc20, 0x1722b: 0x402dfe20,\n\t0x1722c: 0xc0000002, 0x1722d: 0x402e8220, 0x1722e: 0x402e9e20, 0x1722f: 0xc33d2741,\n\t0x17230: 0x402f2c20, 0x17231: 0x402f5620, 0x17232: 0xc35d0991, 0x17233: 0xc3410991,\n\t0x17234: 0x40302c20, 0x17235: 0x40306c20, 0x17236: 0x4030be20, 0x17237: 0x4030e220,\n\t0x17238: 0x4030f620, 0x17239: 0x40310020, 0x1723a: 0xc3610991, 0x1723b: 0x4003fc20,\n\t0x1723c: 0x40094820, 0x1723d: 0x4003fe20, 0x1723e: 0x40094c20, 0x1723f: 0xa0000000,\n\t// Block 0x5c9, offset 0x17240\n\t0x17240: 0xe00008f5, 0x17241: 0xe00008ef, 0x17242: 0xe0000921, 0x17243: 0xe0000969,\n\t0x17244: 0x002be083, 0x17245: 0xe000094d, 0x17246: 0xe00009dd, 0x17247: 0xe0000a53,\n\t0x17248: 0xe0000ae8, 0x17249: 0xe0000ae2, 0x1724a: 0xe0000af4, 0x1724b: 0xe0000b20,\n\t0x1724c: 0xe0000c2b, 0x1724d: 0xe0000c25, 0x1724e: 0xe0000c37, 0x1724f: 0xe0000c43,\n\t0x17250: 0xe0000ab3, 0x17251: 0xe0000d63, 0x17252: 0xe0000d9a, 0x17253: 0xe0000d94,\n\t0x17254: 0x002ee483, 0x17255: 0xe0000de6, 0x17256: 0xe0000dd2, 0x17257: 0x40093e20,\n\t0x17258: 0xe0000e12, 0x17259: 0xe0000fe1, 0x1725a: 0xe0000fdb, 0x1725b: 0xe0000fed,\n\t0x1725c: 0xe0000fff, 0x1725d: 0xe0001102, 0x1725e: 0x00318888, 0x1725f: 0xe0000f7b,\n\t0x17260: 0xe00008f2, 0x17261: 0xe00008ec, 0x17262: 0xe000091e, 0x17263: 0xe0000966,\n\t0x17264: 0x402be020, 0x17265: 0xe000094a, 0x17266: 0xe00009d5, 0x17267: 0xe0000a4d,\n\t0x17268: 0xe0000ae5, 0x17269: 0xe0000adf, 0x1726a: 0xe0000af1, 0x1726b: 0xe0000b1d,\n\t0x1726c: 0xe0000c28, 0x1726d: 0xe0000c22, 0x1726e: 0xe0000c34, 0x1726f: 0xe0000c40,\n\t0x17270: 0xe0000aad, 0x17271: 0xe0000d60, 0x17272: 0xe0000d97, 0x17273: 0xe0000d91,\n\t0x17274: 0x402ee420, 0x17275: 0xe0000de3, 0x17276: 0xe0000dcf, 0x17277: 0x40093c20,\n\t0x17278: 0xe0000e0f, 0x17279: 0xe0000fde, 0x1727a: 0xe0000fd8, 0x1727b: 0xe0000fea,\n\t0x1727c: 0xe0000ffc, 0x1727d: 0xe00010ff, 0x1727e: 0x40318820, 0x1727f: 0xe0001114,\n\t// Block 0x5ca, offset 0x17280\n\t0x17280: 0x40321220, 0x17281: 0x40321a20, 0x17282: 0x40322220, 0x17283: 0x40322a20,\n\t0x17284: 0xe0000ad5, 0x17285: 0xe0000ad1, 0x17286: 0xe0000acd, 0x17287: 0xf0000a0a,\n\t0x17288: 0xf000040a, 0x17289: 0xf0000404, 0x1728a: 0xf0000a0a, 0x1728b: 0xf000040a,\n\t0x1728c: 0xf0000404, 0x1728d: 0xe0000947, 0x1728e: 0xe0000944, 0x1728f: 0xe0000c3d,\n\t0x17290: 0xe0000c3a, 0x17291: 0xe0000dcc, 0x17292: 0xe0000dc9, 0x17293: 0xe0000ff3,\n\t0x17294: 0xe0000ff0, 0x17295: 0xe000101e, 0x17296: 0xe000101a, 0x17297: 0xe0001006,\n\t0x17298: 0xe0001002, 0x17299: 0xe0001016, 0x1729a: 0xe0001012, 0x1729b: 0xe000100e,\n\t0x1729c: 0xe000100a, 0x1729d: 0x402cae20, 0x1729e: 0xe00038f2, 0x1729f: 0xe00038ef,\n\t0x172a0: 0xe0000976, 0x172a1: 0xe0000972, 0x172a2: 0xe00009f4, 0x172a3: 0xe00009ef,\n\t0x172a4: 0x002d3a88, 0x172a5: 0x402d3a20, 0x172a6: 0xe0000bbe, 0x172a7: 0xe0000bbb,\n\t0x172a8: 0xe0000c99, 0x172a9: 0xe0000c96, 0x172aa: 0xe0000e20, 0x172ab: 0xe0000e1d,\n\t0x172ac: 0xe0000e27, 0x172ad: 0xe0000e23, 0x172ae: 0xe0001162, 0x172af: 0xe000115f,\n\t0x172b0: 0xe0000c8d, 0x172b1: 0xf0000a0a, 0x172b2: 0xf000040a, 0x172b3: 0xf0000404,\n\t0x172b4: 0xe0000bac, 0x172b5: 0xe0000ba9, 0x172b6: 0x002d7888, 0x172b7: 0x00319488,\n\t0x172b8: 0xe0000d57, 0x172b9: 0xe0000d54, 0x172ba: 0xe0000954, 0x172bb: 0xe0000950,\n\t0x172bc: 0xe00009ea, 0x172bd: 0xe00009e5, 0x172be: 0xe0000e19, 0x172bf: 0xe0000e15,\n\t// Block 0x5cb, offset 0x172c0\n\t0x172c0: 0xe0000b03, 0x172c1: 0xe0000aff, 0x172c2: 0xe0000b13, 0x172c3: 0xe0000b0f,\n\t0x172c4: 0xe0000b0b, 0x172c5: 0xe0000b07, 0x172c6: 0xe0000b75, 0x172c7: 0xe0000b71,\n\t0x172c8: 0xe0000c66, 0x172c9: 0xe0000c63, 0x172ca: 0xe0000c78, 0x172cb: 0xe0000c75,\n\t0x172cc: 0xe0000e84, 0x172cd: 0xe0000e81, 0x172ce: 0xe0000e44, 0x172cf: 0xe0000e41,\n\t0x172d0: 0xe000ad5f, 0x172d1: 0xe000ad5c, 0x172d2: 0xe000ad65, 0x172d3: 0xe000ad62,\n\t0x172d4: 0xe000ad6b, 0x172d5: 0xe000ad68, 0x172d6: 0xe0002946, 0x172d7: 0xe0002943,\n\t0x172d8: 0xe000ad71, 0x172d9: 0xe000ad6e, 0x172da: 0xe0000e5d, 0x172db: 0xe0000e59,\n\t0x172dc: 0xe0000e65, 0x172dd: 0xe0000e61, 0x172de: 0xe0000e75, 0x172df: 0xe0000e71,\n\t0x172e0: 0xe0000e6d, 0x172e1: 0xe0000e69, 0x172e2: 0xe0000e7d, 0x172e3: 0xe0000e79,\n\t0x172e4: 0xe000108d, 0x172e5: 0xe000108a, 0x172e6: 0xe000104d, 0x172e7: 0xe000104a,\n\t0x172e8: 0xe0001066, 0x172e9: 0xe0001062, 0x172ea: 0xe000106e, 0x172eb: 0xe000106a,\n\t0x172ec: 0xe000107e, 0x172ed: 0xe000107a, 0x172ee: 0xe0001076, 0x172ef: 0xe0001072,\n\t0x172f0: 0xe0001086, 0x172f1: 0xe0001082, 0x172f2: 0xe0001108, 0x172f3: 0xe0001105,\n\t0x172f4: 0xe0001135, 0x172f5: 0xe0001132, 0x172f6: 0xe000112f, 0x172f7: 0xe000112c,\n\t0x172f8: 0xe000111d, 0x172f9: 0xe000111a, 0x172fa: 0xe0000d0a, 0x172fb: 0xe0000d07,\n\t0x172fc: 0x0030d888, 0x172fd: 0x4030d820, 0x172fe: 0x00312088, 0x172ff: 0x40312020,\n\t// Block 0x5cc, offset 0x17300\n\t0x17300: 0xa0000000, 0x17301: 0xa0000000, 0x17302: 0xa0000000, 0x17303: 0xa0000000,\n\t0x17304: 0xa0000000, 0x17305: 0xa0000000, 0x17306: 0xa0000000, 0x17307: 0xa0000000,\n\t0x17308: 0xa0000000, 0x17309: 0x40020020, 0x1730a: 0x40020220, 0x1730b: 0x40020420,\n\t0x1730c: 0x40020620, 0x1730d: 0x40020820, 0x1730e: 0xa0000000, 0x1730f: 0xa0000000,\n\t0x17310: 0xa0000000, 0x17311: 0xa0000000, 0x17312: 0xa0000000, 0x17313: 0xa0000000,\n\t0x17314: 0xa0000000, 0x17315: 0xa0000000, 0x17316: 0xa0000000, 0x17317: 0xa0000000,\n\t0x17318: 0xa0000000, 0x17319: 0xa0000000, 0x1731a: 0xa0000000, 0x1731b: 0xa0000000,\n\t0x1731c: 0xa0000000, 0x1731d: 0xa0000000, 0x1731e: 0xa0000000, 0x1731f: 0xa0000000,\n\t0x17320: 0x40021220, 0x17321: 0x4002ba20, 0x17322: 0x4003e020, 0x17323: 0x4004ea20,\n\t0x17324: 0x4027de20, 0x17325: 0x4004ec20, 0x17326: 0x4004e620, 0x17327: 0x4003d220,\n\t0x17328: 0x4003f420, 0x17329: 0x4003f620, 0x1732a: 0x4004d820, 0x1732b: 0x40093820,\n\t0x1732c: 0x40024020, 0x1732d: 0x40021a20, 0x1732e: 0x4002e420, 0x1732f: 0x4004e220,\n\t0x17330: 0x4029cc20, 0x17331: 0x4029ce20, 0x17332: 0x4029d020, 0x17333: 0x4029d220,\n\t0x17334: 0x4029d420, 0x17335: 0x4029d620, 0x17336: 0x4029d820, 0x17337: 0x4029da20,\n\t0x17338: 0x4029dc20, 0x17339: 0x4029de20, 0x1733a: 0x40026c20, 0x1733b: 0x40026220,\n\t0x1733c: 0x40094020, 0x1733d: 0x40094220, 0x1733e: 0x40094420, 0x1733f: 0x4002c420,\n\t// Block 0x5cd, offset 0x17340\n\t0x17340: 0x4004d620, 0x17341: 0x002bde88, 0x17342: 0x002c0a88, 0x17343: 0xc59b2891,\n\t0x17344: 0x002c6288, 0x17345: 0x002c9888, 0x17346: 0x002d0888, 0x17347: 0x002d2288,\n\t0x17348: 0x002d6888, 0x17349: 0x002d9a88, 0x1734a: 0x002dcc88, 0x1734b: 0x002dfe88,\n\t0x1734c: 0xc0030002, 0x1734d: 0x002e8288, 0x1734e: 0x002e9e88, 0x1734f: 0x002ee288,\n\t0x17350: 0x002f2c88, 0x17351: 0x002f5688, 0x17352: 0x002f7a88, 0x17353: 0xc3430991,\n\t0x17354: 0x00302c88, 0x17355: 0x00306c88, 0x17356: 0x0030be88, 0x17357: 0x0030e288,\n\t0x17358: 0x0030f688, 0x17359: 0x00310088, 0x1735a: 0xc3630991, 0x1735b: 0x4003f820,\n\t0x1735c: 0x4004e420, 0x1735d: 0x4003fa20, 0x1735e: 0x40062420, 0x1735f: 0x40021620,\n\t0x17360: 0x40061e20, 0x17361: 0x402bde20, 0x17362: 0x402c0a20, 0x17363: 0xc5982891,\n\t0x17364: 0x402c6220, 0x17365: 0x402c9820, 0x17366: 0x402d0820, 0x17367: 0x402d2220,\n\t0x17368: 0x402d6820, 0x17369: 0x402d9a20, 0x1736a: 0x402dcc20, 0x1736b: 0x402dfe20,\n\t0x1736c: 0xc0000002, 0x1736d: 0x402e8220, 0x1736e: 0x402e9e20, 0x1736f: 0x402ee220,\n\t0x17370: 0x402f2c20, 0x17371: 0x402f5620, 0x17372: 0x402f7a20, 0x17373: 0xc3410991,\n\t0x17374: 0x40302c20, 0x17375: 0x40306c20, 0x17376: 0x4030be20, 0x17377: 0x4030e220,\n\t0x17378: 0x4030f620, 0x17379: 0x40310020, 0x1737a: 0xc3610991, 0x1737b: 0x4003fc20,\n\t0x1737c: 0x40094820, 0x1737d: 0x4003fe20, 0x1737e: 0x40094c20, 0x1737f: 0xa0000000,\n\t// Block 0x5ce, offset 0x17380\n\t0x17380: 0xe0000983, 0x17381: 0xe0000980, 0x17382: 0xe00008fb, 0x17383: 0xe00008f8,\n\t0x17384: 0xe000097d, 0x17385: 0xe000097a, 0x17386: 0x002c3e83, 0x17387: 0x402c3e20,\n\t0x17388: 0xe0000a3e, 0x17389: 0xe0000a3b, 0x1738a: 0xe0000a4a, 0x1738b: 0xe0000a47,\n\t0x1738c: 0x002c3c83, 0x1738d: 0x402c3c20, 0x1738e: 0xe0000a86, 0x1738f: 0xe0000a83,\n\t0x17390: 0x002c6483, 0x17391: 0x402c6420, 0x17392: 0xe0000b46, 0x17393: 0xe0000b43,\n\t0x17394: 0xe0000aee, 0x17395: 0xe0000aeb, 0x17396: 0xe0000b2c, 0x17397: 0xe0000b29,\n\t0x17398: 0xe0000b40, 0x17399: 0xe0000b3d, 0x1739a: 0xe0000b1a, 0x1739b: 0xe0000b17,\n\t0x1739c: 0xe0000bb8, 0x1739d: 0xe0000bb5, 0x1739e: 0xe0000bb2, 0x1739f: 0xe0000baf,\n\t0x173a0: 0xe0000bc4, 0x173a1: 0xe0000bc1, 0x173a2: 0xe0000bca, 0x173a3: 0xe0000bc7,\n\t0x173a4: 0xe0000bee, 0x173a5: 0xe0000beb, 0x173a6: 0xe0000c1b, 0x173a7: 0xe0000c18,\n\t0x173a8: 0xe0000c51, 0x173a9: 0xe0000c4e, 0x173aa: 0xe0000c60, 0x173ab: 0xe0000c5d,\n\t0x173ac: 0xe0000c31, 0x173ad: 0xe0000c2e, 0x173ae: 0xe0000c5a, 0x173af: 0xe0000c57,\n\t0x173b0: 0xe0000c54, 0x173b1: 0x402da220, 0x173b2: 0xf0000a0a, 0x173b3: 0xf0000404,\n\t0x173b4: 0xe0000c8a, 0x173b5: 0xe0000c87, 0x173b6: 0xe0000c9f, 0x173b7: 0xe0000c9c,\n\t0x173b8: 0x402f7220, 0x173b9: 0xe0000ccc, 0x173ba: 0xe0000cc9, 0x173bb: 0xe0000cd8,\n\t0x173bc: 0xe0000cd5, 0x173bd: 0xe0000cd2, 0x173be: 0xe0000ccf, 0x173bf: 0xe0000d04,\n\t// Block 0x5cf, offset 0x173c0\n\t0x173c0: 0xa0000000, 0x173c1: 0xa0000000, 0x173c2: 0xa0000000, 0x173c3: 0xa0000000,\n\t0x173c4: 0xa0000000, 0x173c5: 0xa0000000, 0x173c6: 0xa0000000, 0x173c7: 0xa0000000,\n\t0x173c8: 0xa0000000, 0x173c9: 0x40020020, 0x173ca: 0x40020220, 0x173cb: 0x40020420,\n\t0x173cc: 0x40020620, 0x173cd: 0x40020820, 0x173ce: 0xa0000000, 0x173cf: 0xa0000000,\n\t0x173d0: 0xa0000000, 0x173d1: 0xa0000000, 0x173d2: 0xa0000000, 0x173d3: 0xa0000000,\n\t0x173d4: 0xa0000000, 0x173d5: 0xa0000000, 0x173d6: 0xa0000000, 0x173d7: 0xa0000000,\n\t0x173d8: 0xa0000000, 0x173d9: 0xa0000000, 0x173da: 0xa0000000, 0x173db: 0xa0000000,\n\t0x173dc: 0xa0000000, 0x173dd: 0xa0000000, 0x173de: 0xa0000000, 0x173df: 0xa0000000,\n\t0x173e0: 0x40021220, 0x173e1: 0x4002ba20, 0x173e2: 0x4003e020, 0x173e3: 0x4004ea20,\n\t0x173e4: 0x4027de20, 0x173e5: 0x4004ec20, 0x173e6: 0x4004e620, 0x173e7: 0x4003d220,\n\t0x173e8: 0x4003f420, 0x173e9: 0x4003f620, 0x173ea: 0x4004d820, 0x173eb: 0x40093820,\n\t0x173ec: 0x40024020, 0x173ed: 0x40021a20, 0x173ee: 0x4002e420, 0x173ef: 0x4004e220,\n\t0x173f0: 0x4029cc20, 0x173f1: 0x4029ce20, 0x173f2: 0x4029d020, 0x173f3: 0x4029d220,\n\t0x173f4: 0x4029d420, 0x173f5: 0x4029d620, 0x173f6: 0x4029d820, 0x173f7: 0x4029da20,\n\t0x173f8: 0x4029dc20, 0x173f9: 0x4029de20, 0x173fa: 0x40026c20, 0x173fb: 0x40026220,\n\t0x173fc: 0x40094020, 0x173fd: 0x40094220, 0x173fe: 0x40094420, 0x173ff: 0x4002c420,\n\t// Block 0x5d0, offset 0x17400\n\t0x17400: 0x4004d620, 0x17401: 0x002bde88, 0x17402: 0x002c0a88, 0x17403: 0xcb170911,\n\t0x17404: 0xceec09c2, 0x17405: 0xc6360071, 0x17406: 0x002d0888, 0x17407: 0xceef2a52,\n\t0x17408: 0x002d6888, 0x17409: 0x002d9a88, 0x1740a: 0x002dcc88, 0x1740b: 0x002dfe88,\n\t0x1740c: 0xcef60ac4, 0x1740d: 0x002e8288, 0x1740e: 0xcefb2a52, 0x1740f: 0x002ee288,\n\t0x17410: 0x002f2c88, 0x17411: 0x002f5688, 0x17412: 0xcefe9872, 0x17413: 0xcf0109c2,\n\t0x17414: 0xcf0609c2, 0x17415: 0x00306c88, 0x17416: 0x0030be88, 0x17417: 0x0030e288,\n\t0x17418: 0xcf0b09c2, 0x17419: 0x00310088, 0x1741a: 0xcf0e09c2, 0x1741b: 0x4003f820,\n\t0x1741c: 0x4004e420, 0x1741d: 0x4003fa20, 0x1741e: 0x40062420, 0x1741f: 0x40021620,\n\t0x17420: 0x40061e20, 0x17421: 0x402bde20, 0x17422: 0x402c0a20, 0x17423: 0xcb150911,\n\t0x17424: 0xceea09b1, 0x17425: 0xc6340071, 0x17426: 0x402d0820, 0x17427: 0xcb192a41,\n\t0x17428: 0x402d6820, 0x17429: 0x402d9a20, 0x1742a: 0x402dcc20, 0x1742b: 0x402dfe20,\n\t0x1742c: 0xcef20a73, 0x1742d: 0x402e8220, 0x1742e: 0xcb292a41, 0x1742f: 0x402ee220,\n\t0x17430: 0x402f2c20, 0x17431: 0x402f5620, 0x17432: 0xcb2d9861, 0x17433: 0xcb3109b1,\n\t0x17434: 0xcf0409b1, 0x17435: 0x40306c20, 0x17436: 0x4030be20, 0x17437: 0x4030e220,\n\t0x17438: 0xcf0909b1, 0x17439: 0x40310020, 0x1743a: 0xcb3509b1, 0x1743b: 0x4003fc20,\n\t0x1743c: 0x40094820, 0x1743d: 0x4003fe20, 0x1743e: 0x40094c20, 0x1743f: 0xa0000000,\n\t// Block 0x5d1, offset 0x17440\n\t0x17440: 0xe00008f5, 0x17441: 0xe00008ef, 0x17442: 0xe0000921, 0x17443: 0xe0000969,\n\t0x17444: 0xe000095b, 0x17445: 0xe000094d, 0x17446: 0xe00009dd, 0x17447: 0x002c6083,\n\t0x17448: 0xe0000ae8, 0x17449: 0xe0000ae2, 0x1744a: 0xe0000af4, 0x1744b: 0x002d0683,\n\t0x1744c: 0xe0000c2b, 0x1744d: 0xe0000c25, 0x1744e: 0xe0000c37, 0x1744f: 0xe0000c43,\n\t0x17450: 0xe0000ab3, 0x17451: 0xe0000d63, 0x17452: 0xe0000d9a, 0x17453: 0xe0000d94,\n\t0x17454: 0xe0000da6, 0x17455: 0xe0000de6, 0x17456: 0xe0000dd2, 0x17457: 0x40093e20,\n\t0x17458: 0xe0000e12, 0x17459: 0xe0000fe1, 0x1745a: 0xe0000fdb, 0x1745b: 0xe0000fed,\n\t0x1745c: 0xe0000fff, 0x1745d: 0xe0001102, 0x1745e: 0x00318888, 0x1745f: 0xe0000f7b,\n\t0x17460: 0xe00008f2, 0x17461: 0xe00008ec, 0x17462: 0xe000091e, 0x17463: 0xe0000966,\n\t0x17464: 0xe0000958, 0x17465: 0xe000094a, 0x17466: 0xe00009d5, 0x17467: 0x402c6020,\n\t0x17468: 0xe0000ae5, 0x17469: 0xe0000adf, 0x1746a: 0xe0000af1, 0x1746b: 0x402d0620,\n\t0x1746c: 0xe0000c28, 0x1746d: 0xe0000c22, 0x1746e: 0xe0000c34, 0x1746f: 0xe0000c40,\n\t0x17470: 0xe0000aad, 0x17471: 0xe0000d60, 0x17472: 0xe0000d97, 0x17473: 0xe0000d91,\n\t0x17474: 0xe0000da3, 0x17475: 0xe0000de3, 0x17476: 0xe0000dcf, 0x17477: 0x40093c20,\n\t0x17478: 0xe0000e0f, 0x17479: 0xe0000fde, 0x1747a: 0xe0000fd8, 0x1747b: 0xe0000fea,\n\t0x1747c: 0xe0000ffc, 0x1747d: 0xe00010ff, 0x1747e: 0x40318820, 0x1747f: 0xe0001114,\n\t// Block 0x5d2, offset 0x17480\n\t0x17480: 0xe00009b1, 0x17481: 0xe00009ae, 0x17482: 0xe0000a22, 0x17483: 0xe0000a1f,\n\t0x17484: 0xe0000a28, 0x17485: 0xe0000a25, 0x17486: 0xe0000a2e, 0x17487: 0xe0000a2b,\n\t0x17488: 0xe000ade6, 0x17489: 0xe000ade3, 0x1748a: 0xe0000a8c, 0x1748b: 0xe0000a89,\n\t0x1748c: 0xe0000a98, 0x1748d: 0xe0000a95, 0x1748e: 0xe0000aa4, 0x1748f: 0xe0000aa1,\n\t0x17490: 0xe0000a92, 0x17491: 0xe0000a8f, 0x17492: 0xe0000a9e, 0x17493: 0xe0000a9b,\n\t0x17494: 0xe0000b55, 0x17495: 0xe0000b51, 0x17496: 0xe0000b4d, 0x17497: 0xe0000b49,\n\t0x17498: 0xe0000b7c, 0x17499: 0xe0000b79, 0x1749a: 0xe0000b82, 0x1749b: 0xe0000b7f,\n\t0x1749c: 0xe0000b39, 0x1749d: 0xe0000b35, 0x1749e: 0xe0000b8c, 0x1749f: 0xe0000b89,\n\t0x174a0: 0xe0000bd0, 0x174a1: 0xe0000bcd, 0x174a2: 0xe0000c00, 0x174a3: 0xe0000bfd,\n\t0x174a4: 0xe0000c0c, 0x174a5: 0xe0000c09, 0x174a6: 0xe0000bfa, 0x174a7: 0xe0000bf7,\n\t0x174a8: 0xe0000c06, 0x174a9: 0xe0000c03, 0x174aa: 0xe0000c12, 0x174ab: 0xe0000c0f,\n\t0x174ac: 0xe0000c7e, 0x174ad: 0xe0000c7b, 0x174ae: 0xe0000c4a, 0x174af: 0xe0000c46,\n\t0x174b0: 0xe0000c93, 0x174b1: 0xe0000c90, 0x174b2: 0xe0000cab, 0x174b3: 0xe0000ca8,\n\t0x174b4: 0xe0000cb1, 0x174b5: 0xe0000cae, 0x174b6: 0xe0000cde, 0x174b7: 0xe0000cdb,\n\t0x174b8: 0xe0000ce5, 0x174b9: 0xe0000ce1, 0x174ba: 0xe0000cf2, 0x174bb: 0xe0000cef,\n\t0x174bc: 0xe0000cec, 0x174bd: 0xe0000ce9, 0x174be: 0xe0000d1e, 0x174bf: 0xe0000d1b,\n\t// Block 0x5d3, offset 0x174c0\n\t0x174c0: 0xa0000000, 0x174c1: 0xa0000000, 0x174c2: 0xa0000000, 0x174c3: 0xa0000000,\n\t0x174c4: 0xa0000000, 0x174c5: 0xa0000000, 0x174c6: 0xa0000000, 0x174c7: 0xa0000000,\n\t0x174c8: 0xa0000000, 0x174c9: 0x40020020, 0x174ca: 0x40020220, 0x174cb: 0x40020420,\n\t0x174cc: 0x40020620, 0x174cd: 0x40020820, 0x174ce: 0xa0000000, 0x174cf: 0xa0000000,\n\t0x174d0: 0xa0000000, 0x174d1: 0xa0000000, 0x174d2: 0xa0000000, 0x174d3: 0xa0000000,\n\t0x174d4: 0xa0000000, 0x174d5: 0xa0000000, 0x174d6: 0xa0000000, 0x174d7: 0xa0000000,\n\t0x174d8: 0xa0000000, 0x174d9: 0xa0000000, 0x174da: 0xa0000000, 0x174db: 0xa0000000,\n\t0x174dc: 0xa0000000, 0x174dd: 0xa0000000, 0x174de: 0xa0000000, 0x174df: 0xa0000000,\n\t0x174e0: 0x40021220, 0x174e1: 0x4002ba20, 0x174e2: 0x4003e020, 0x174e3: 0x4004ea20,\n\t0x174e4: 0x4027de20, 0x174e5: 0x4004ec20, 0x174e6: 0x4004e620, 0x174e7: 0x4003d220,\n\t0x174e8: 0x4003f420, 0x174e9: 0x4003f620, 0x174ea: 0x4004d820, 0x174eb: 0x40093820,\n\t0x174ec: 0x40024020, 0x174ed: 0x40021a20, 0x174ee: 0x4002e420, 0x174ef: 0x4004e220,\n\t0x174f0: 0x4029cc20, 0x174f1: 0x4029ce20, 0x174f2: 0x4029d020, 0x174f3: 0x4029d220,\n\t0x174f4: 0x4029d420, 0x174f5: 0x4029d620, 0x174f6: 0x4029d820, 0x174f7: 0x4029da20,\n\t0x174f8: 0x4029dc20, 0x174f9: 0x4029de20, 0x174fa: 0x40026c20, 0x174fb: 0x40026220,\n\t0x174fc: 0x40094020, 0x174fd: 0x40094220, 0x174fe: 0x40094420, 0x174ff: 0x4002c420,\n\t// Block 0x5d4, offset 0x17500\n\t0x17500: 0x4004d620, 0x17501: 0xc57327b1, 0x17502: 0x002c0a88, 0x17503: 0x002c3a88,\n\t0x17504: 0x002c6288, 0x17505: 0xcf130be1, 0x17506: 0x002d0888, 0x17507: 0x002d2288,\n\t0x17508: 0x002d6888, 0x17509: 0x002d9a88, 0x1750a: 0x002dcc88, 0x1750b: 0x002dfe88,\n\t0x1750c: 0xc0030002, 0x1750d: 0x002e8288, 0x1750e: 0x002e9e88, 0x1750f: 0xcf199891,\n\t0x17510: 0x002f2c88, 0x17511: 0x002f5688, 0x17512: 0x002f7a88, 0x17513: 0x002fe688,\n\t0x17514: 0x00302c88, 0x17515: 0xc3900b21, 0x17516: 0x0030be88, 0x17517: 0x0030e288,\n\t0x17518: 0x0030f688, 0x17519: 0x00310088, 0x1751a: 0x00312a88, 0x1751b: 0x4003f820,\n\t0x1751c: 0x4004e420, 0x1751d: 0x4003fa20, 0x1751e: 0x40062420, 0x1751f: 0x40021620,\n\t0x17520: 0x40061e20, 0x17521: 0xc57027b1, 0x17522: 0x402c0a20, 0x17523: 0x402c3a20,\n\t0x17524: 0x402c6220, 0x17525: 0xcf110be1, 0x17526: 0x402d0820, 0x17527: 0x402d2220,\n\t0x17528: 0x402d6820, 0x17529: 0x402d9a20, 0x1752a: 0x402dcc20, 0x1752b: 0x402dfe20,\n\t0x1752c: 0xc0000002, 0x1752d: 0x402e8220, 0x1752e: 0x402e9e20, 0x1752f: 0xcf159891,\n\t0x17530: 0x402f2c20, 0x17531: 0x402f5620, 0x17532: 0x402f7a20, 0x17533: 0x402fe620,\n\t0x17534: 0x40302c20, 0x17535: 0xc38d0b21, 0x17536: 0x4030be20, 0x17537: 0x4030e220,\n\t0x17538: 0x4030f620, 0x17539: 0x40310020, 0x1753a: 0x40312a20, 0x1753b: 0x4003fc20,\n\t0x1753c: 0x40094820, 0x1753d: 0x4003fe20, 0x1753e: 0x40094c20, 0x1753f: 0xa0000000,\n\t// Block 0x5d5, offset 0x17540\n\t0x17540: 0xe00008f5, 0x17541: 0xe00008ef, 0x17542: 0xe0000921, 0x17543: 0xe0000969,\n\t0x17544: 0x00320e83, 0x17545: 0x00320c83, 0x17546: 0x00320ea3, 0x17547: 0xe0000a53,\n\t0x17548: 0xe0000ae8, 0x17549: 0xe0000ae2, 0x1754a: 0xe0000af4, 0x1754b: 0xe0000b20,\n\t0x1754c: 0xe0000c2b, 0x1754d: 0xe0000c25, 0x1754e: 0xe0000c37, 0x1754f: 0xe0000c43,\n\t0x17550: 0x002c62c3, 0x17551: 0xe0000d63, 0x17552: 0xe0000d9a, 0x17553: 0xe0000d94,\n\t0x17554: 0x00321103, 0x17555: 0xe0000de6, 0x17556: 0x00321083, 0x17557: 0x40093e20,\n\t0x17558: 0x003210a3, 0x17559: 0xe0000fe1, 0x1755a: 0xe0000fdb, 0x1755b: 0xe0000fed,\n\t0x1755c: 0x003100a3, 0x1755d: 0xe0001102, 0x1755e: 0xe0002973, 0x1755f: 0xe0000f7b,\n\t0x17560: 0xe00008f2, 0x17561: 0xe00008ec, 0x17562: 0xe000091e, 0x17563: 0xe0000966,\n\t0x17564: 0x40320e20, 0x17565: 0x40320c20, 0x17566: 0x40320e21, 0x17567: 0xe0000a4d,\n\t0x17568: 0xe0000ae5, 0x17569: 0xe0000adf, 0x1756a: 0xe0000af1, 0x1756b: 0xe0000b1d,\n\t0x1756c: 0xe0000c28, 0x1756d: 0xe0000c22, 0x1756e: 0xe0000c34, 0x1756f: 0xe0000c40,\n\t0x17570: 0x402c6222, 0x17571: 0xe0000d60, 0x17572: 0xe0000d97, 0x17573: 0xe0000d91,\n\t0x17574: 0x40321024, 0x17575: 0xe0000de3, 0x17576: 0x40321020, 0x17577: 0x40093c20,\n\t0x17578: 0x40321021, 0x17579: 0xe0000fde, 0x1757a: 0xe0000fd8, 0x1757b: 0xe0000fea,\n\t0x1757c: 0x40310021, 0x1757d: 0xe00010ff, 0x1757e: 0xe0002970, 0x1757f: 0xe0001114,\n\t// Block 0x5d6, offset 0x17580\n\t0x17580: 0xe0000983, 0x17581: 0xe0000980, 0x17582: 0xe00008fb, 0x17583: 0xe00008f8,\n\t0x17584: 0xe000097d, 0x17585: 0xe000097a, 0x17586: 0xe0000a38, 0x17587: 0xe0000a35,\n\t0x17588: 0xe0000a3e, 0x17589: 0xe0000a3b, 0x1758a: 0xe0000a4a, 0x1758b: 0xe0000a47,\n\t0x1758c: 0xe0000a44, 0x1758d: 0xe0000a41, 0x1758e: 0xe0000a86, 0x1758f: 0xe0000a83,\n\t0x17590: 0x002c62a3, 0x17591: 0x402c6221, 0x17592: 0xe0000b46, 0x17593: 0xe0000b43,\n\t0x17594: 0xe0000aee, 0x17595: 0xe0000aeb, 0x17596: 0xe0000b2c, 0x17597: 0xe0000b29,\n\t0x17598: 0x00320ec3, 0x17599: 0x40320e22, 0x1759a: 0xe0000b1a, 0x1759b: 0xe0000b17,\n\t0x1759c: 0xe0000bb8, 0x1759d: 0xe0000bb5, 0x1759e: 0xe0000bb2, 0x1759f: 0xe0000baf,\n\t0x175a0: 0xe0000bc4, 0x175a1: 0xe0000bc1, 0x175a2: 0xe0000bca, 0x175a3: 0xe0000bc7,\n\t0x175a4: 0xe0000bee, 0x175a5: 0xe0000beb, 0x175a6: 0xe0000c1b, 0x175a7: 0xe0000c18,\n\t0x175a8: 0xe0000c51, 0x175a9: 0xe0000c4e, 0x175aa: 0xe0000c60, 0x175ab: 0xe0000c5d,\n\t0x175ac: 0xe0000c31, 0x175ad: 0xe0000c2e, 0x175ae: 0xe0000c5a, 0x175af: 0xe0000c57,\n\t0x175b0: 0xe0000c54, 0x175b1: 0x402da220, 0x175b2: 0xf0000a0a, 0x175b3: 0xf0000404,\n\t0x175b4: 0xe0000c8a, 0x175b5: 0xe0000c87, 0x175b6: 0xe0000c9f, 0x175b7: 0xe0000c9c,\n\t0x175b8: 0x402f7220, 0x175b9: 0xe0000ccc, 0x175ba: 0xe0000cc9, 0x175bb: 0xe0000cd8,\n\t0x175bc: 0xe0000cd5, 0x175bd: 0xe0000cd2, 0x175be: 0xe0000ccf, 0x175bf: 0xe0000d04,\n\t// Block 0x5d7, offset 0x175c0\n\t0x175c0: 0xe0000cfe, 0x175c1: 0xe0000cf8, 0x175c2: 0xe0000cf5, 0x175c3: 0xe0000d51,\n\t0x175c4: 0xe0000d4e, 0x175c5: 0xe0000d6f, 0x175c6: 0xe0000d6c, 0x175c7: 0xe0000d5d,\n\t0x175c8: 0xe0000d5a, 0x175c9: 0xf0000404, 0x175ca: 0x002eda88, 0x175cb: 0x402eda20,\n\t0x175cc: 0xe0000e2e, 0x175cd: 0xe0000e2b, 0x175ce: 0xe0000da0, 0x175cf: 0xe0000d9d,\n\t0x175d0: 0x003210c3, 0x175d1: 0x40321022, 0x175d2: 0x003210e3, 0x175d3: 0x40321023,\n\t0x175d4: 0xe0000eca, 0x175d5: 0xe0000ec7, 0x175d6: 0xe0000edc, 0x175d7: 0xe0000ed9,\n\t0x175d8: 0xe0000ed0, 0x175d9: 0xe0000ecd, 0x175da: 0xe0000f1f, 0x175db: 0xe0000f1c,\n\t0x175dc: 0xe0000f2d, 0x175dd: 0xe0000f2a, 0x175de: 0xe0000f47, 0x175df: 0xe0000f44,\n\t0x175e0: 0xe0000f33, 0x175e1: 0xe0000f30, 0x175e2: 0xe0000f99, 0x175e3: 0xe0000f96,\n\t0x175e4: 0xe0000f8a, 0x175e5: 0xe0000f87, 0x175e6: 0x00303688, 0x175e7: 0x40303620,\n\t0x175e8: 0xe000102b, 0x175e9: 0xe0001028, 0x175ea: 0xe000103f, 0x175eb: 0xe000103c,\n\t0x175ec: 0xe0000fe7, 0x175ed: 0xe0000fe4, 0x175ee: 0xe0000ff9, 0x175ef: 0xe0000ff6,\n\t0x175f0: 0x003100c3, 0x175f1: 0x40310022, 0x175f2: 0xe0001039, 0x175f3: 0xe0001036,\n\t0x175f4: 0xe00010d8, 0x175f5: 0xe00010d5, 0x175f6: 0xe000110e, 0x175f7: 0xe000110b,\n\t0x175f8: 0xe0001117, 0x175f9: 0xe000113b, 0x175fa: 0xe0001138, 0x175fb: 0xe000114d,\n\t0x175fc: 0xe000114a, 0x175fd: 0xe0001147, 0x175fe: 0xe0001144, 0x175ff: 0xe0000f64,\n\t// Block 0x5d8, offset 0x17600\n\t0x17600: 0xe0000b03, 0x17601: 0xe0000aff, 0x17602: 0xe0000b13, 0x17603: 0xe0000b0f,\n\t0x17604: 0xe0000b0b, 0x17605: 0xe0000b07, 0x17606: 0xe0000b75, 0x17607: 0xe0000b71,\n\t0x17608: 0xe0000c66, 0x17609: 0xe0000c63, 0x1760a: 0xe0000c78, 0x1760b: 0xe0000c75,\n\t0x1760c: 0xe0000e84, 0x1760d: 0xe0000e81, 0x1760e: 0xe0000e44, 0x1760f: 0xe0000e41,\n\t0x17610: 0xe000adec, 0x17611: 0xe000ade9, 0x17612: 0xe000adf2, 0x17613: 0xe000adef,\n\t0x17614: 0xe000adfe, 0x17615: 0xe000adfb, 0x17616: 0xe000adf8, 0x17617: 0xe000adf5,\n\t0x17618: 0xe000ae04, 0x17619: 0xe000ae01, 0x1761a: 0xe0000e5d, 0x1761b: 0xe0000e59,\n\t0x1761c: 0xe0000e65, 0x1761d: 0xe0000e61, 0x1761e: 0xe0000e75, 0x1761f: 0xe0000e71,\n\t0x17620: 0xe0000e6d, 0x17621: 0xe0000e69, 0x17622: 0xe0000e7d, 0x17623: 0xe0000e79,\n\t0x17624: 0xe000108d, 0x17625: 0xe000108a, 0x17626: 0xe000104d, 0x17627: 0xe000104a,\n\t0x17628: 0xe0001066, 0x17629: 0xe0001062, 0x1762a: 0xe000106e, 0x1762b: 0xe000106a,\n\t0x1762c: 0xe000107e, 0x1762d: 0xe000107a, 0x1762e: 0xe0001076, 0x1762f: 0xe0001072,\n\t0x17630: 0xe0001086, 0x17631: 0xe0001082, 0x17632: 0xe0001108, 0x17633: 0xe0001105,\n\t0x17634: 0xe0001135, 0x17635: 0xe0001132, 0x17636: 0xe000112f, 0x17637: 0xe000112c,\n\t0x17638: 0xe000111d, 0x17639: 0xe000111a, 0x1763a: 0xe0000d0a, 0x1763b: 0xe0000d07,\n\t0x1763c: 0x0030d888, 0x1763d: 0x4030d820, 0x1763e: 0x00312088, 0x1763f: 0x40312020,\n\t// Block 0x5d9, offset 0x17640\n\t0x17640: 0xa0000000, 0x17641: 0xa0000000, 0x17642: 0xa0000000, 0x17643: 0xa0000000,\n\t0x17644: 0xa0000000, 0x17645: 0xa0000000, 0x17646: 0xa0000000, 0x17647: 0xa0000000,\n\t0x17648: 0xa0000000, 0x17649: 0x40020020, 0x1764a: 0x40020220, 0x1764b: 0x40020420,\n\t0x1764c: 0x40020620, 0x1764d: 0x40020820, 0x1764e: 0xa0000000, 0x1764f: 0xa0000000,\n\t0x17650: 0xa0000000, 0x17651: 0xa0000000, 0x17652: 0xa0000000, 0x17653: 0xa0000000,\n\t0x17654: 0xa0000000, 0x17655: 0xa0000000, 0x17656: 0xa0000000, 0x17657: 0xa0000000,\n\t0x17658: 0xa0000000, 0x17659: 0xa0000000, 0x1765a: 0xa0000000, 0x1765b: 0xa0000000,\n\t0x1765c: 0xa0000000, 0x1765d: 0xa0000000, 0x1765e: 0xa0000000, 0x1765f: 0xa0000000,\n\t0x17660: 0x40021220, 0x17661: 0x4002ba20, 0x17662: 0x4003e020, 0x17663: 0x4004ea20,\n\t0x17664: 0x4027de20, 0x17665: 0x4004ec20, 0x17666: 0x4004e620, 0x17667: 0x4003d220,\n\t0x17668: 0x4003f420, 0x17669: 0x4003f620, 0x1766a: 0x4004d820, 0x1766b: 0x40093820,\n\t0x1766c: 0x40024020, 0x1766d: 0x40021a20, 0x1766e: 0x4002e420, 0x1766f: 0x4004e220,\n\t0x17670: 0x4029cc20, 0x17671: 0x4029ce20, 0x17672: 0x4029d020, 0x17673: 0x4029d220,\n\t0x17674: 0x4029d420, 0x17675: 0x4029d620, 0x17676: 0x4029d820, 0x17677: 0x4029da20,\n\t0x17678: 0x4029dc20, 0x17679: 0x4029de20, 0x1767a: 0x40026c20, 0x1767b: 0x40026220,\n\t0x1767c: 0x40094020, 0x1767d: 0x40094220, 0x1767e: 0x40094420, 0x1767f: 0x4002c420,\n\t// Block 0x5da, offset 0x17680\n\t0x17680: 0x4004d620, 0x17681: 0xc57327b1, 0x17682: 0x002c0a88, 0x17683: 0x002c3a88,\n\t0x17684: 0x002c6288, 0x17685: 0xcf130be1, 0x17686: 0x002d0888, 0x17687: 0x002d2288,\n\t0x17688: 0x002d6888, 0x17689: 0x002d9a88, 0x1768a: 0x002dcc88, 0x1768b: 0x002dfe88,\n\t0x1768c: 0xc0030002, 0x1768d: 0x002e8288, 0x1768e: 0x002e9e88, 0x1768f: 0xcf199891,\n\t0x17690: 0x002f2c88, 0x17691: 0x002f5688, 0x17692: 0x002f7a88, 0x17693: 0x002fe688,\n\t0x17694: 0x00302c88, 0x17695: 0xc3900b21, 0x17696: 0x0030be83, 0x17697: 0x0030bea3,\n\t0x17698: 0x0030f688, 0x17699: 0x00310088, 0x1769a: 0x00312a88, 0x1769b: 0x4003f820,\n\t0x1769c: 0x4004e420, 0x1769d: 0x4003fa20, 0x1769e: 0x40062420, 0x1769f: 0x40021620,\n\t0x176a0: 0x40061e20, 0x176a1: 0xc57027b1, 0x176a2: 0x402c0a20, 0x176a3: 0x402c3a20,\n\t0x176a4: 0x402c6220, 0x176a5: 0xcf110be1, 0x176a6: 0x402d0820, 0x176a7: 0x402d2220,\n\t0x176a8: 0x402d6820, 0x176a9: 0x402d9a20, 0x176aa: 0x402dcc20, 0x176ab: 0x402dfe20,\n\t0x176ac: 0xc0000002, 0x176ad: 0x402e8220, 0x176ae: 0x402e9e20, 0x176af: 0xcf159891,\n\t0x176b0: 0x402f2c20, 0x176b1: 0x402f5620, 0x176b2: 0x402f7a20, 0x176b3: 0x402fe620,\n\t0x176b4: 0x40302c20, 0x176b5: 0xc38d0b21, 0x176b6: 0x4030be20, 0x176b7: 0x4030be21,\n\t0x176b8: 0x4030f620, 0x176b9: 0x40310020, 0x176ba: 0x40312a20, 0x176bb: 0x4003fc20,\n\t0x176bc: 0x40094820, 0x176bd: 0x4003fe20, 0x176be: 0x40094c20, 0x176bf: 0xa0000000,\n\t// Block 0x5db, offset 0x176c0\n\t0x176c0: 0xe0000cfe, 0x176c1: 0xe0000cf8, 0x176c2: 0xe0000cf5, 0x176c3: 0xe0000d51,\n\t0x176c4: 0xe0000d4e, 0x176c5: 0xe0000d6f, 0x176c6: 0xe0000d6c, 0x176c7: 0xe0000d5d,\n\t0x176c8: 0xe0000d5a, 0x176c9: 0xf0000404, 0x176ca: 0x002eda88, 0x176cb: 0x402eda20,\n\t0x176cc: 0xe0000e2e, 0x176cd: 0xe0000e2b, 0x176ce: 0xe0000da0, 0x176cf: 0xe0000d9d,\n\t0x176d0: 0x003210c3, 0x176d1: 0x40321022, 0x176d2: 0x003210e3, 0x176d3: 0x40321023,\n\t0x176d4: 0xe0000eca, 0x176d5: 0xe0000ec7, 0x176d6: 0xe0000edc, 0x176d7: 0xe0000ed9,\n\t0x176d8: 0xe0000ed0, 0x176d9: 0xe0000ecd, 0x176da: 0xe0000f1f, 0x176db: 0xe0000f1c,\n\t0x176dc: 0xe0000f2d, 0x176dd: 0xe0000f2a, 0x176de: 0xe0000f47, 0x176df: 0xe0000f44,\n\t0x176e0: 0xe0000f33, 0x176e1: 0xe0000f30, 0x176e2: 0xe0000f99, 0x176e3: 0xe0000f96,\n\t0x176e4: 0xe0000f8a, 0x176e5: 0xe0000f87, 0x176e6: 0x00303688, 0x176e7: 0x40303620,\n\t0x176e8: 0xe000102b, 0x176e9: 0xe0001028, 0x176ea: 0xe000103f, 0x176eb: 0xe000103c,\n\t0x176ec: 0xe0000fe7, 0x176ed: 0xe0000fe4, 0x176ee: 0xe0000ff9, 0x176ef: 0xe0000ff6,\n\t0x176f0: 0x003100c3, 0x176f1: 0x40310022, 0x176f2: 0xe0001039, 0x176f3: 0xe0001036,\n\t0x176f4: 0xe0003636, 0x176f5: 0xe0003633, 0x176f6: 0xe000110e, 0x176f7: 0xe000110b,\n\t0x176f8: 0xe0001117, 0x176f9: 0xe000113b, 0x176fa: 0xe0001138, 0x176fb: 0xe000114d,\n\t0x176fc: 0xe000114a, 0x176fd: 0xe0001147, 0x176fe: 0xe0001144, 0x176ff: 0xe0000f64,\n\t// Block 0x5dc, offset 0x17700\n\t0x17700: 0xe0000d24, 0x17701: 0xe0000d21, 0x17702: 0xe0000d2a, 0x17703: 0xe0000d27,\n\t0x17704: 0xe0000d69, 0x17705: 0xe0000d66, 0x17706: 0xe0000d7b, 0x17707: 0xe0000d78,\n\t0x17708: 0xe0000d87, 0x17709: 0xe0000d84, 0x1770a: 0xe0000d81, 0x1770b: 0xe0000d7e,\n\t0x1770c: 0xe0000ded, 0x1770d: 0xe0000de9, 0x1770e: 0xe00037f4, 0x1770f: 0xe00037f1,\n\t0x17710: 0xe0000e3d, 0x17711: 0xe0000e39, 0x17712: 0xe0000e35, 0x17713: 0xe0000e31,\n\t0x17714: 0xe0000ea7, 0x17715: 0xe0000ea4, 0x17716: 0xe0000ead, 0x17717: 0xe0000eaa,\n\t0x17718: 0xe0000ed6, 0x17719: 0xe0000ed3, 0x1771a: 0xe0000ef4, 0x1771b: 0xe0000ef1,\n\t0x1771c: 0xe0000efb, 0x1771d: 0xe0000ef7, 0x1771e: 0xe0000f02, 0x1771f: 0xe0000eff,\n\t0x17720: 0xe0000f41, 0x17721: 0xe0000f3e, 0x17722: 0xe0000f53, 0x17723: 0xe0000f50,\n\t0x17724: 0xe0000f26, 0x17725: 0xe0000f22, 0x17726: 0xe0000f3a, 0x17727: 0xe0000f36,\n\t0x17728: 0xe0000f5a, 0x17729: 0xe0000f56, 0x1772a: 0xe0000f93, 0x1772b: 0xe0000f90,\n\t0x1772c: 0xe0000f9f, 0x1772d: 0xe0000f9c, 0x1772e: 0xe0000fb1, 0x1772f: 0xe0000fae,\n\t0x17730: 0xe0000fab, 0x17731: 0xe0000fa8, 0x17732: 0xe0001093, 0x17733: 0xe0001090,\n\t0x17734: 0xe000109f, 0x17735: 0xe000109c, 0x17736: 0xe0001099, 0x17737: 0xe0001096,\n\t0x17738: 0xe0001032, 0x17739: 0xe000102e, 0x1773a: 0xe000298b, 0x1773b: 0xe0002988,\n\t0x1773c: 0xe000ae07, 0x1773d: 0xe00010a6, 0x1773e: 0xe000ae0a, 0x1773f: 0xe00010ac,\n\t// Block 0x5dd, offset 0x17740\n\t0x17742: 0x40429620, 0x17743: 0x40429820,\n\t0x17745: 0x40427e20, 0x17746: 0x40428020, 0x17747: 0x40428220,\n\t0x17748: 0x40428420, 0x17749: 0x40428620, 0x1774a: 0x40428820,\n\t0x1774e: 0x40428a20, 0x1774f: 0x40428c20,\n\t0x17750: 0x40428e20, 0x17752: 0xc0610231, 0x17753: 0x40429220,\n\t0x17754: 0x40429420, 0x17755: 0xcf1d98d1,\n\t0x17759: 0xcf219961, 0x1775a: 0xcf239961,\n\t0x1775c: 0xcf439961, 0x1775e: 0xcf259961, 0x1775f: 0xcf279961,\n\t0x17763: 0xcf299961,\n\t0x17764: 0xcf2b9961,\n\t0x17768: 0xcf2d9961, 0x17769: 0xcf419961, 0x1776a: 0xcf2f9961,\n\t0x1776e: 0xcf319961, 0x1776f: 0xcf339961,\n\t0x17770: 0xcf359961, 0x17771: 0xcf3f9961, 0x17772: 0xcf379961, 0x17773: 0xcf3d9961,\n\t0x17774: 0xcf3b9961, 0x17775: 0xcf399961, 0x17776: 0xcf459961, 0x17777: 0xcf479961,\n\t0x17778: 0xcf499961, 0x17779: 0xcf4b9961,\n\t0x1777e: 0x4042c620, 0x1777f: 0x4042c820,\n\t// Block 0x5de, offset 0x17780\n\t0x17781: 0x40430020, 0x17782: 0x40430220, 0x17783: 0x40430420,\n\t0x17785: 0x4042e020, 0x17786: 0x4042e220, 0x17787: 0x4042e420,\n\t0x17788: 0x4042e620, 0x17789: 0x4042e820, 0x1778a: 0x4042ea20, 0x1778b: 0x4042ec20,\n\t0x1778c: 0x4042f020, 0x1778e: 0x4042f420, 0x1778f: 0x4042f620,\n\t0x17790: 0x4042f820, 0x17792: 0x4042fa20, 0x17793: 0x4042fc20,\n\t0x17794: 0x4042fe20, 0x17795: 0x40430020, 0x17796: 0x40430220, 0x17797: 0x40430420,\n\t0x17798: 0x40430620, 0x17799: 0x40430820, 0x1779a: 0x40430a20, 0x1779b: 0x40430e20,\n\t0x1779c: 0x40431020, 0x1779d: 0x40431420, 0x1779e: 0x40431620, 0x1779f: 0x40431820,\n\t0x177a0: 0x40431a20, 0x177a1: 0x40431c20, 0x177a2: 0x40431e20, 0x177a3: 0x40432020,\n\t0x177a4: 0x40432220, 0x177a5: 0x40432420, 0x177a6: 0x40432620, 0x177a7: 0x40432820,\n\t0x177a8: 0x40432a20, 0x177aa: 0x40432c20, 0x177ab: 0x40432e20,\n\t0x177ac: 0x40433020, 0x177ad: 0x40433220, 0x177ae: 0x40433420, 0x177af: 0x40433620,\n\t0x177b0: 0x40433820, 0x177b1: 0x40433a20, 0x177b2: 0x40433c20, 0x177b3: 0x40434820,\n\t0x177b5: 0x40433e20, 0x177b6: 0x40434020, 0x177b7: 0x40434220,\n\t0x177b8: 0x40434420, 0x177b9: 0x40434620,\n\t0x177bd: 0x40434a20, 0x177be: 0x40434c20, 0x177bf: 0x40434e20,\n\t// Block 0x5df, offset 0x177c0\n\t0x177c1: 0x40491020, 0x177c2: 0x40491220, 0x177c3: 0x40491420,\n\t0x177c4: 0x40491620, 0x177c5: 0x40491820, 0x177c6: 0x40491a20, 0x177c7: 0x40491c20,\n\t0x177c8: 0x40491e20, 0x177c9: 0x40492020, 0x177ca: 0x40492220, 0x177cb: 0x40492420,\n\t0x177cc: 0x40492620, 0x177cd: 0x40492820, 0x177ce: 0x40492a20, 0x177cf: 0x40492c20,\n\t0x177d0: 0x40492e20, 0x177d1: 0x40493020, 0x177d2: 0x40493220, 0x177d3: 0x40493420,\n\t0x177d4: 0x40493620, 0x177d5: 0x40493820, 0x177d6: 0x40493a20, 0x177d7: 0x40493c20,\n\t0x177d8: 0x40493e20, 0x177d9: 0x40494020, 0x177da: 0x40494220, 0x177db: 0x40494420,\n\t0x177dc: 0x40494620, 0x177dd: 0x40494820, 0x177de: 0x40494a20, 0x177df: 0x40494c20,\n\t0x177e0: 0x40494e20, 0x177e1: 0x40495020, 0x177e2: 0x40495220, 0x177e3: 0x40495420,\n\t0x177e4: 0x40495620, 0x177e5: 0x40495820, 0x177e6: 0x40495a20, 0x177e7: 0x40495c20,\n\t0x177e8: 0x40495e20, 0x177e9: 0x40496020, 0x177ea: 0x40496220, 0x177eb: 0x40496420,\n\t0x177ec: 0x40496620, 0x177ed: 0x40496820, 0x177ee: 0x40496a20, 0x177ef: 0x40057820,\n\t0x177f0: 0x40496e20, 0x177f1: 0x40497020, 0x177f2: 0x40497220, 0x177f3: 0xe000ae10,\n\t0x177f4: 0x40497620, 0x177f5: 0x40497820, 0x177f6: 0x40497a20, 0x177f7: 0x40497c20,\n\t0x177f8: 0x826724bf, 0x177f9: 0x826724c0, 0x177fa: 0x40498e20,\n\t0x177ff: 0x4027f420,\n\t// Block 0x5e0, offset 0x17800\n\t0x17800: 0xc07f04e1, 0x17801: 0xc0ae04e1, 0x17802: 0xc0dd04e1, 0x17803: 0xc10c04e1,\n\t0x17804: 0xc13b04e1, 0x17805: 0x00497283, 0x17806: 0x40057e20, 0x17807: 0xa000ff02,\n\t0x17808: 0xa6b10002, 0x17809: 0xa6b10102, 0x1780a: 0xa6b10202, 0x1780b: 0xa6b10302,\n\t0x1780c: 0xa000ff02, 0x1780d: 0xcf4d9991, 0x1780e: 0xa000fe02, 0x1780f: 0x40057820,\n\t0x17810: 0xe000019a, 0x17811: 0xe000022e, 0x17812: 0xe0000346, 0x17813: 0xe0000420,\n\t0x17814: 0xe00004f5, 0x17815: 0xe00005bf, 0x17816: 0xe000068a, 0x17817: 0xe0000732,\n\t0x17818: 0xe00007de, 0x17819: 0xe0000883, 0x1781a: 0x40057a20, 0x1781b: 0x40057c20,\n\t// Block 0x5e1, offset 0x17840\n\t0x17840: 0xa0000000, 0x17841: 0xa0000000, 0x17842: 0xa0000000, 0x17843: 0xa0000000,\n\t0x17844: 0xa0000000, 0x17845: 0xa0000000, 0x17846: 0xa0000000, 0x17847: 0xa0000000,\n\t0x17848: 0xa0000000, 0x17849: 0x40020020, 0x1784a: 0x40020220, 0x1784b: 0x40020420,\n\t0x1784c: 0x40020620, 0x1784d: 0x40020820, 0x1784e: 0xa0000000, 0x1784f: 0xa0000000,\n\t0x17850: 0xa0000000, 0x17851: 0xa0000000, 0x17852: 0xa0000000, 0x17853: 0xa0000000,\n\t0x17854: 0xa0000000, 0x17855: 0xa0000000, 0x17856: 0xa0000000, 0x17857: 0xa0000000,\n\t0x17858: 0xa0000000, 0x17859: 0xa0000000, 0x1785a: 0xa0000000, 0x1785b: 0xa0000000,\n\t0x1785c: 0xa0000000, 0x1785d: 0xa0000000, 0x1785e: 0xa0000000, 0x1785f: 0xa0000000,\n\t0x17860: 0x40021220, 0x17861: 0x4002ba20, 0x17862: 0x4003e020, 0x17863: 0x4004ea20,\n\t0x17864: 0x4027de20, 0x17865: 0x4004ec20, 0x17866: 0x4004e620, 0x17867: 0x4003d220,\n\t0x17868: 0x4003f420, 0x17869: 0x4003f620, 0x1786a: 0x4004d820, 0x1786b: 0x40093820,\n\t0x1786c: 0x40024020, 0x1786d: 0x40021a20, 0x1786e: 0x4002e420, 0x1786f: 0x4004e220,\n\t0x17870: 0x4029cc20, 0x17871: 0x4029ce20, 0x17872: 0x4029d020, 0x17873: 0x4029d220,\n\t0x17874: 0x4029d420, 0x17875: 0x4029d620, 0x17876: 0x4029d820, 0x17877: 0x4029da20,\n\t0x17878: 0x4029dc20, 0x17879: 0x4029de20, 0x1787a: 0x40026c20, 0x1787b: 0x40026220,\n\t0x1787c: 0x40094020, 0x1787d: 0x40094220, 0x1787e: 0x40094420, 0x1787f: 0x4002c420,\n\t// Block 0x5e2, offset 0x17880\n\t0x17880: 0x4004d620, 0x17881: 0xcf5399e1, 0x17882: 0x002c0a88, 0x17883: 0x002c3a88,\n\t0x17884: 0x002c6288, 0x17885: 0xcf5999e1, 0x17886: 0x002d0888, 0x17887: 0x002d2288,\n\t0x17888: 0x002d6888, 0x17889: 0xcf5f99e1, 0x1788a: 0x002dcc88, 0x1788b: 0x002dfe88,\n\t0x1788c: 0xc0030002, 0x1788d: 0x002e8288, 0x1788e: 0xc5350a52, 0x1788f: 0xcf6599e1,\n\t0x17890: 0x002f2c88, 0x17891: 0x002f5688, 0x17892: 0x002f7a88, 0x17893: 0x002fe688,\n\t0x17894: 0x00302c88, 0x17895: 0xcf6b99e1, 0x17896: 0x0030be88, 0x17897: 0x0030e288,\n\t0x17898: 0x0030f688, 0x17899: 0x00310088, 0x1789a: 0x00312a88, 0x1789b: 0x4003f820,\n\t0x1789c: 0x4004e420, 0x1789d: 0x4003fa20, 0x1789e: 0x40062420, 0x1789f: 0x40021620,\n\t0x178a0: 0x40061e20, 0x178a1: 0xcf5099e1, 0x178a2: 0x402c0a20, 0x178a3: 0x402c3a20,\n\t0x178a4: 0x402c6220, 0x178a5: 0xcf5699e1, 0x178a6: 0x402d0820, 0x178a7: 0x402d2220,\n\t0x178a8: 0x402d6820, 0x178a9: 0xcf5c99e1, 0x178aa: 0x402dcc20, 0x178ab: 0x402dfe20,\n\t0x178ac: 0xc0000002, 0x178ad: 0x402e8220, 0x178ae: 0xc5330a41, 0x178af: 0xcf6299e1,\n\t0x178b0: 0x402f2c20, 0x178b1: 0x402f5620, 0x178b2: 0x402f7a20, 0x178b3: 0x402fe620,\n\t0x178b4: 0x40302c20, 0x178b5: 0xcf6899e1, 0x178b6: 0x4030be20, 0x178b7: 0x4030e220,\n\t0x178b8: 0x4030f620, 0x178b9: 0x40310020, 0x178ba: 0x40312a20, 0x178bb: 0x4003fc20,\n\t0x178bc: 0x40094820, 0x178bd: 0x4003fe20, 0x178be: 0x40094c20, 0x178bf: 0xa0000000,\n\t// Block 0x5e3, offset 0x178c0\n\t0x178c0: 0xe00008f5, 0x178c1: 0x002bdea3, 0x178c2: 0xe0000921, 0x178c3: 0xe0000969,\n\t0x178c4: 0xe000095b, 0x178c5: 0xe000094d, 0x178c6: 0xe00009dd, 0x178c7: 0xe0000a53,\n\t0x178c8: 0xe0000ae8, 0x178c9: 0x002c98a3, 0x178ca: 0xe0000af4, 0x178cb: 0xe0000b20,\n\t0x178cc: 0xe0000c2b, 0x178cd: 0x002d9aa3, 0x178ce: 0xe0000c37, 0x178cf: 0xe0000c43,\n\t0x178d0: 0xe0000ab3, 0x178d1: 0xe0000d63, 0x178d2: 0xe0000d9a, 0x178d3: 0x002ee2a3,\n\t0x178d4: 0xe0000da6, 0x178d5: 0xe0000de6, 0x178d6: 0xe0000dd2, 0x178d7: 0x40093e20,\n\t0x178d8: 0xe0000e12, 0x178d9: 0xe0000fe1, 0x178da: 0x00306ca3, 0x178db: 0xe0000fed,\n\t0x178dc: 0xe0000fff, 0x178dd: 0xe0001102, 0x178de: 0x00318888, 0x178df: 0xe0000f7b,\n\t0x178e0: 0xe00008f2, 0x178e1: 0x402bde21, 0x178e2: 0xe000091e, 0x178e3: 0xe0000966,\n\t0x178e4: 0xe0000958, 0x178e5: 0xe000094a, 0x178e6: 0xe00009d5, 0x178e7: 0xe0000a4d,\n\t0x178e8: 0xe0000ae5, 0x178e9: 0x402c9821, 0x178ea: 0xe0000af1, 0x178eb: 0xe0000b1d,\n\t0x178ec: 0xe0000c28, 0x178ed: 0x402d9a21, 0x178ee: 0xe0000c34, 0x178ef: 0xe0000c40,\n\t0x178f0: 0xe0000aad, 0x178f1: 0xe0000d60, 0x178f2: 0xe0000d97, 0x178f3: 0x402ee221,\n\t0x178f4: 0xe0000da3, 0x178f5: 0xe0000de3, 0x178f6: 0xe0000dcf, 0x178f7: 0x40093c20,\n\t0x178f8: 0xe0000e0f, 0x178f9: 0xe0000fde, 0x178fa: 0x40306c21, 0x178fb: 0xe0000fea,\n\t0x178fc: 0xe0000ffc, 0x178fd: 0xe00010ff, 0x178fe: 0x40318820, 0x178ff: 0xe0001114,\n\t// Block 0x5e4, offset 0x17900\n\t0x17900: 0x002bdec3, 0x17901: 0x402bde22, 0x17902: 0xe00008fb, 0x17903: 0xe00008f8,\n\t0x17904: 0xe000097d, 0x17905: 0xe000097a, 0x17906: 0xe0000a38, 0x17907: 0xe0000a35,\n\t0x17908: 0xe0000a3e, 0x17909: 0xe0000a3b, 0x1790a: 0xe0000a4a, 0x1790b: 0xe0000a47,\n\t0x1790c: 0xe0000a44, 0x1790d: 0xe0000a41, 0x1790e: 0xe0000a86, 0x1790f: 0xe0000a83,\n\t0x17910: 0xe0000aaa, 0x17911: 0xe0000aa7, 0x17912: 0x002c98c3, 0x17913: 0x402c9822,\n\t0x17914: 0xe0000aee, 0x17915: 0xe0000aeb, 0x17916: 0xe0000b2c, 0x17917: 0xe0000b29,\n\t0x17918: 0xe0000b40, 0x17919: 0xe0000b3d, 0x1791a: 0xe0000b1a, 0x1791b: 0xe0000b17,\n\t0x1791c: 0xe0000bb8, 0x1791d: 0xe0000bb5, 0x1791e: 0xe0000bb2, 0x1791f: 0xe0000baf,\n\t0x17920: 0xe0000bc4, 0x17921: 0xe0000bc1, 0x17922: 0xe0000bca, 0x17923: 0xe0000bc7,\n\t0x17924: 0xe0000bee, 0x17925: 0xe0000beb, 0x17926: 0xe0000c1b, 0x17927: 0xe0000c18,\n\t0x17928: 0xe0000c51, 0x17929: 0xe0000c4e, 0x1792a: 0x002d9ac3, 0x1792b: 0x402d9a22,\n\t0x1792c: 0xe0000c31, 0x1792d: 0xe0000c2e, 0x1792e: 0xe0000c5a, 0x1792f: 0xe0000c57,\n\t0x17930: 0xe0000c54, 0x17931: 0x402da220, 0x17932: 0xf0000a0a, 0x17933: 0xf0000404,\n\t0x17934: 0xe0000c8a, 0x17935: 0xe0000c87, 0x17936: 0xe0000c9f, 0x17937: 0xe0000c9c,\n\t0x17938: 0x402f7220, 0x17939: 0xe0000ccc, 0x1793a: 0xe0000cc9, 0x1793b: 0xe0000cd8,\n\t0x1793c: 0xe0000cd5, 0x1793d: 0xe0000cd2, 0x1793e: 0xe0000ccf, 0x1793f: 0xe0000d04,\n\t// Block 0x5e5, offset 0x17940\n\t0x17940: 0xe0000cfe, 0x17941: 0xe0000cf8, 0x17942: 0xe0000cf5, 0x17943: 0xe0000d51,\n\t0x17944: 0xe0000d4e, 0x17945: 0xe0000d6f, 0x17946: 0xe0000d6c, 0x17947: 0xe0000d5d,\n\t0x17948: 0xe0000d5a, 0x17949: 0xf0000404, 0x1794a: 0x002ea086, 0x1794b: 0x002ea085,\n\t0x1794c: 0x002ee2c3, 0x1794d: 0x402ee222, 0x1794e: 0xe0000da0, 0x1794f: 0xe0000d9d,\n\t0x17950: 0xe0000de0, 0x17951: 0xe0000ddd, 0x17952: 0xe0000e93, 0x17953: 0xe0000e8f,\n\t0x17954: 0xe0000eca, 0x17955: 0xe0000ec7, 0x17956: 0xe0000edc, 0x17957: 0xe0000ed9,\n\t0x17958: 0xe0000ed0, 0x17959: 0xe0000ecd, 0x1795a: 0xe0000f1f, 0x1795b: 0xe0000f1c,\n\t0x1795c: 0xe0000f2d, 0x1795d: 0xe0000f2a, 0x1795e: 0xe0000f47, 0x1795f: 0xe0000f44,\n\t0x17960: 0xe0000f33, 0x17961: 0xe0000f30, 0x17962: 0xe0000f99, 0x17963: 0xe0000f96,\n\t0x17964: 0xe0000f8a, 0x17965: 0xe0000f87, 0x17966: 0x00303688, 0x17967: 0x40303620,\n\t0x17968: 0xe000102b, 0x17969: 0xe0001028, 0x1796a: 0x00306cc3, 0x1796b: 0x40306c22,\n\t0x1796c: 0xe0000fe7, 0x1796d: 0xe0000fe4, 0x1796e: 0xe0000ff9, 0x1796f: 0xe0000ff6,\n\t0x17970: 0xe0001025, 0x17971: 0xe0001022, 0x17972: 0xe0001039, 0x17973: 0xe0001036,\n\t0x17974: 0xe00010d8, 0x17975: 0xe00010d5, 0x17976: 0xe000110e, 0x17977: 0xe000110b,\n\t0x17978: 0xe0001117, 0x17979: 0xe000113b, 0x1797a: 0xe0001138, 0x1797b: 0xe000114d,\n\t0x1797c: 0xe000114a, 0x1797d: 0xe0001147, 0x1797e: 0xe0001144, 0x1797f: 0xe0000f64,\n\t// Block 0x5e6, offset 0x17980\n\t0x17980: 0x40321220, 0x17981: 0x40321a20, 0x17982: 0x40322220, 0x17983: 0x40322a20,\n\t0x17984: 0xe0000ad5, 0x17985: 0xe0000ad1, 0x17986: 0xe0000acd, 0x17987: 0xf0000a0a,\n\t0x17988: 0xf000040a, 0x17989: 0xf0000404, 0x1798a: 0xf0000a0a, 0x1798b: 0xf000040a,\n\t0x1798c: 0xf0000404, 0x1798d: 0xe0000947, 0x1798e: 0xe0000944, 0x1798f: 0xe0000c3d,\n\t0x17990: 0xe0000c3a, 0x17991: 0xe0000dcc, 0x17992: 0xe0000dc9, 0x17993: 0xe0000ff3,\n\t0x17994: 0xe0000ff0, 0x17995: 0xe000a9d3, 0x17996: 0xe000a9d0, 0x17997: 0xe000ae82,\n\t0x17998: 0xe000ae7f, 0x17999: 0xe0001016, 0x1799a: 0xe0001012, 0x1799b: 0xe000100e,\n\t0x1799c: 0xe000100a, 0x1799d: 0x402cae20, 0x1799e: 0xe000ae28, 0x1799f: 0xe000ae25,\n\t0x179a0: 0xe000ae2e, 0x179a1: 0xe000ae2b, 0x179a2: 0xe00009f4, 0x179a3: 0xe00009ef,\n\t0x179a4: 0x002d3a88, 0x179a5: 0x402d3a20, 0x179a6: 0xe0000bbe, 0x179a7: 0xe0000bbb,\n\t0x179a8: 0xe0000c99, 0x179a9: 0xe0000c96, 0x179aa: 0xe0000e20, 0x179ab: 0xe0000e1d,\n\t0x179ac: 0xe000ae7c, 0x179ad: 0xe000ae79, 0x179ae: 0xe0001162, 0x179af: 0xe000115f,\n\t0x179b0: 0xe0000c8d, 0x179b1: 0xf0000a0a, 0x179b2: 0xf000040a, 0x179b3: 0xf0000404,\n\t0x179b4: 0xe0000bac, 0x179b5: 0xe0000ba9, 0x179b6: 0x002d7888, 0x179b7: 0x00319488,\n\t0x179b8: 0xe0000d57, 0x179b9: 0xe0000d54, 0x179ba: 0xe000ae22, 0x179bb: 0xe000ae1f,\n\t0x179bc: 0xe00009ea, 0x179bd: 0xe00009e5, 0x179be: 0xe0000e19, 0x179bf: 0xe0000e15,\n\t// Block 0x5e7, offset 0x179c0\n\t0x179c0: 0xe000098f, 0x179c1: 0xe000098c, 0x179c2: 0xe0000995, 0x179c3: 0xe0000992,\n\t0x179c4: 0xe0000b62, 0x179c5: 0xe0000b5f, 0x179c6: 0xe0000b68, 0x179c7: 0xe0000b65,\n\t0x179c8: 0xe0000c6c, 0x179c9: 0xe0000c69, 0x179ca: 0xe0000c72, 0x179cb: 0xe0000c6f,\n\t0x179cc: 0xe0000e4a, 0x179cd: 0xe0000e47, 0x179ce: 0xe0000e50, 0x179cf: 0xe0000e4d,\n\t0x179d0: 0xe0000ee8, 0x179d1: 0xe0000ee5, 0x179d2: 0xe0000eee, 0x179d3: 0xe0000eeb,\n\t0x179d4: 0xe0001053, 0x179d5: 0xe0001050, 0x179d6: 0xe0001059, 0x179d7: 0xe0001056,\n\t0x179d8: 0xe0000f61, 0x179d9: 0xe0000f5e, 0x179da: 0xe0000fa5, 0x179db: 0xe0000fa2,\n\t0x179dc: 0x00312288, 0x179dd: 0x40312220, 0x179de: 0xe0000bf4, 0x179df: 0xe0000bf1,\n\t0x179e0: 0x002ebc88, 0x179e1: 0x402c8c20, 0x179e2: 0x002f2288, 0x179e3: 0x402f2220,\n\t0x179e4: 0x00314088, 0x179e5: 0x40314020, 0x179e6: 0xe000096f, 0x179e7: 0xe000096c,\n\t0x179e8: 0xe0000b32, 0x179e9: 0xe0000b2f, 0x179ea: 0xe000ae6a, 0x179eb: 0xe000ae67,\n\t0x179ec: 0xe000ae70, 0x179ed: 0xe000ae6d, 0x179ee: 0xe0000e04, 0x179ef: 0xe0000e01,\n\t0x179f0: 0xe000ae76, 0x179f1: 0xe000ae73, 0x179f2: 0xe0001129, 0x179f3: 0xe0001126,\n\t0x179f4: 0x402e5e20, 0x179f5: 0x402ed020, 0x179f6: 0x40305a20, 0x179f7: 0x402dd420,\n\t0x179f8: 0xe0000abf, 0x179f9: 0xe0000ec4, 0x179fa: 0x002be888, 0x179fb: 0x002c4488,\n\t0x179fc: 0x402c4420, 0x179fd: 0x002e3888, 0x179fe: 0x00303e88, 0x179ff: 0x402ffc20,\n\t// Block 0x5e8, offset 0x17a00\n\t0x17a00: 0x402f8220, 0x17a01: 0x402fd820, 0x17a02: 0x402ff420, 0x17a03: 0x40300820,\n\t0x17a04: 0x402df620, 0x17a05: 0x40301a20, 0x17a06: 0x40302420, 0x17a07: 0x40306420,\n\t0x17a08: 0x40305220, 0x17a09: 0x40307c20, 0x17a0a: 0x4030b420, 0x17a0b: 0x4030cc20,\n\t0x17a0c: 0x4030da20, 0x17a0d: 0x4030ee20, 0x17a0e: 0x402e7a20, 0x17a0f: 0x40310820,\n\t0x17a10: 0x40314820, 0x17a11: 0x40315020, 0x17a12: 0x40316420, 0x17a13: 0x40318020,\n\t0x17a14: 0x4031cc20, 0x17a15: 0x4031e820, 0x17a16: 0x40320a20, 0x17a17: 0x40323220,\n\t0x17a18: 0x40323a20, 0x17a19: 0x402c1220, 0x17a1a: 0x402cf820, 0x17a1b: 0x402d4c20,\n\t0x17a1c: 0x402d7020, 0x17a1d: 0x402de620, 0x17a1e: 0x402e1a20, 0x17a1f: 0x402e2a20,\n\t0x17a20: 0x402f6220, 0x17a21: 0x4031fa20, 0x17a22: 0x40320220, 0x17a23: 0xe0000aca,\n\t0x17a24: 0xe0000adc, 0x17a25: 0xe0000ad9, 0x17a26: 0xe0000fcc, 0x17a27: 0xe0000fcf,\n\t0x17a28: 0xe0000fba, 0x17a29: 0xe0000ba1, 0x17a2a: 0xe0000d11, 0x17a2b: 0xe0000d18,\n\t0x17a2c: 0x40324220, 0x17a2d: 0x40324a20, 0x17a2e: 0x40309020, 0x17a2f: 0x40309820,\n\t0x17a30: 0x002d6894, 0x17a31: 0x002d8094, 0x17a32: 0x002dcc94, 0x17a33: 0x002f7a94,\n\t0x17a34: 0x002f9894, 0x17a35: 0x002fac94, 0x17a36: 0x002fd894, 0x17a37: 0x0030e294,\n\t0x17a38: 0x00310094, 0x17a39: 0x40064020, 0x17a3a: 0x40064420, 0x17a3b: 0x40312c20,\n\t0x17a3c: 0x4031de20, 0x17a3d: 0x00312c83, 0x17a3e: 0x4031e220, 0x17a3f: 0x4031f020,\n\t// Block 0x5e9, offset 0x17a40\n\t0x17a40: 0xe00009b1, 0x17a41: 0xe00009ae, 0x17a42: 0xe0000a22, 0x17a43: 0xe0000a1f,\n\t0x17a44: 0xe0000a28, 0x17a45: 0xe0000a25, 0x17a46: 0xe0000a2e, 0x17a47: 0xe0000a2b,\n\t0x17a48: 0xe0000a5a, 0x17a49: 0xe0000a56, 0x17a4a: 0xe0000a8c, 0x17a4b: 0xe0000a89,\n\t0x17a4c: 0xe0000a98, 0x17a4d: 0xe0000a95, 0x17a4e: 0xe0000aa4, 0x17a4f: 0xe0000aa1,\n\t0x17a50: 0xe0000a92, 0x17a51: 0xe0000a8f, 0x17a52: 0xe0000a9e, 0x17a53: 0xe0000a9b,\n\t0x17a54: 0xe000ae40, 0x17a55: 0xe000ae3d, 0x17a56: 0xe000ae3a, 0x17a57: 0xe000ae37,\n\t0x17a58: 0xe0000b7c, 0x17a59: 0xe0000b79, 0x17a5a: 0xe0000b82, 0x17a5b: 0xe0000b7f,\n\t0x17a5c: 0xe0000b39, 0x17a5d: 0xe0000b35, 0x17a5e: 0xe0000b8c, 0x17a5f: 0xe0000b89,\n\t0x17a60: 0xe0000bd0, 0x17a61: 0xe0000bcd, 0x17a62: 0xe0000c00, 0x17a63: 0xe0000bfd,\n\t0x17a64: 0xe0000c0c, 0x17a65: 0xe0000c09, 0x17a66: 0xe0000bfa, 0x17a67: 0xe0000bf7,\n\t0x17a68: 0xe0000c06, 0x17a69: 0xe0000c03, 0x17a6a: 0xe0000c12, 0x17a6b: 0xe0000c0f,\n\t0x17a6c: 0xe0000c7e, 0x17a6d: 0xe0000c7b, 0x17a6e: 0xe000ae46, 0x17a6f: 0xe000ae43,\n\t0x17a70: 0xe0000c93, 0x17a71: 0xe0000c90, 0x17a72: 0xe0000cab, 0x17a73: 0xe0000ca8,\n\t0x17a74: 0xe0000cb1, 0x17a75: 0xe0000cae, 0x17a76: 0xe0000cde, 0x17a77: 0xe0000cdb,\n\t0x17a78: 0xe0000ce5, 0x17a79: 0xe0000ce1, 0x17a7a: 0xe0000cf2, 0x17a7b: 0xe0000cef,\n\t0x17a7c: 0xe0000cec, 0x17a7d: 0xe0000ce9, 0x17a7e: 0xe0000d1e, 0x17a7f: 0xe0000d1b,\n\t// Block 0x5ea, offset 0x17a80\n\t0x17a80: 0xe0000d24, 0x17a81: 0xe0000d21, 0x17a82: 0xe0000d2a, 0x17a83: 0xe0000d27,\n\t0x17a84: 0xe0000d69, 0x17a85: 0xe0000d66, 0x17a86: 0xe0000d7b, 0x17a87: 0xe0000d78,\n\t0x17a88: 0xe0000d87, 0x17a89: 0xe0000d84, 0x17a8a: 0xe0000d81, 0x17a8b: 0xe0000d7e,\n\t0x17a8c: 0xe000ae52, 0x17a8d: 0xe000ae4f, 0x17a8e: 0xe0000df5, 0x17a8f: 0xe0000df1,\n\t0x17a90: 0xe000ae64, 0x17a91: 0xe000ae61, 0x17a92: 0xe000ae5e, 0x17a93: 0xe000ae5b,\n\t0x17a94: 0xe0000ea7, 0x17a95: 0xe0000ea4, 0x17a96: 0xe0000ead, 0x17a97: 0xe0000eaa,\n\t0x17a98: 0xe0000ed6, 0x17a99: 0xe0000ed3, 0x17a9a: 0xe0000ef4, 0x17a9b: 0xe0000ef1,\n\t0x17a9c: 0xe0000efb, 0x17a9d: 0xe0000ef7, 0x17a9e: 0xe0000f02, 0x17a9f: 0xe0000eff,\n\t0x17aa0: 0xe0000f41, 0x17aa1: 0xe0000f3e, 0x17aa2: 0xe0000f53, 0x17aa3: 0xe0000f50,\n\t0x17aa4: 0xe0000f26, 0x17aa5: 0xe0000f22, 0x17aa6: 0xe0000f3a, 0x17aa7: 0xe0000f36,\n\t0x17aa8: 0xe0000f5a, 0x17aa9: 0xe0000f56, 0x17aaa: 0xe0000f93, 0x17aab: 0xe0000f90,\n\t0x17aac: 0xe0000f9f, 0x17aad: 0xe0000f9c, 0x17aae: 0xe0000fb1, 0x17aaf: 0xe0000fae,\n\t0x17ab0: 0xe0000fab, 0x17ab1: 0xe0000fa8, 0x17ab2: 0xe0001093, 0x17ab3: 0xe0001090,\n\t0x17ab4: 0xe000109f, 0x17ab5: 0xe000109c, 0x17ab6: 0xe0001099, 0x17ab7: 0xe0001096,\n\t0x17ab8: 0xe000ae88, 0x17ab9: 0xe000ae85, 0x17aba: 0xe000a9d3, 0x17abb: 0xe000a9d0,\n\t0x17abc: 0xe00010a9, 0x17abd: 0xe00010a6, 0x17abe: 0xe00010af, 0x17abf: 0xe00010ac,\n\t// Block 0x5eb, offset 0x17ac0\n\t0x17ac0: 0xe00010d2, 0x17ac1: 0xe00010cf, 0x17ac2: 0xe00010cc, 0x17ac3: 0xe00010c9,\n\t0x17ac4: 0xe00010e1, 0x17ac5: 0xe00010de, 0x17ac6: 0xe00010e7, 0x17ac7: 0xe00010e4,\n\t0x17ac8: 0xe00010ed, 0x17ac9: 0xe00010ea, 0x17aca: 0xe00010fc, 0x17acb: 0xe00010f9,\n\t0x17acc: 0xe00010f6, 0x17acd: 0xe00010f3, 0x17ace: 0xe0001123, 0x17acf: 0xe0001120,\n\t0x17ad0: 0xe0001141, 0x17ad1: 0xe000113e, 0x17ad2: 0xe0001153, 0x17ad3: 0xe0001150,\n\t0x17ad4: 0xe0001159, 0x17ad5: 0xe0001156, 0x17ad6: 0xe0000c15, 0x17ad7: 0xe0000f8d,\n\t0x17ad8: 0xe00010db, 0x17ad9: 0xe0001111, 0x17ada: 0xf0000404, 0x17adb: 0xe0000f70,\n\t0x17adc: 0x40300420, 0x17add: 0x40300620, 0x17ade: 0xe0000f7f, 0x17adf: 0x402c9620,\n\t0x17ae0: 0xe000099b, 0x17ae1: 0xe0000998, 0x17ae2: 0xe0000989, 0x17ae3: 0xe0000986,\n\t0x17ae4: 0xe000ae1c, 0x17ae5: 0xe000ae19, 0x17ae6: 0xe0000930, 0x17ae7: 0xe000092c,\n\t0x17ae8: 0xe0000940, 0x17ae9: 0xe000093c, 0x17aea: 0xe0000938, 0x17aeb: 0xe0000934,\n\t0x17aec: 0xe00009aa, 0x17aed: 0xe00009a6, 0x17aee: 0xe000ae16, 0x17aef: 0xe000ae13,\n\t0x17af0: 0xe000090a, 0x17af1: 0xe0000906, 0x17af2: 0xe000091a, 0x17af3: 0xe0000916,\n\t0x17af4: 0xe0000912, 0x17af5: 0xe000090e, 0x17af6: 0xe00009a2, 0x17af7: 0xe000099e,\n\t0x17af8: 0xe0000b6e, 0x17af9: 0xe0000b6b, 0x17afa: 0xe0000b5c, 0x17afb: 0xe0000b59,\n\t0x17afc: 0xe0000b26, 0x17afd: 0xe0000b23, 0x17afe: 0xe000ae34, 0x17aff: 0xe000ae31,\n\t// Block 0x5ec, offset 0x17b00\n\t0x17b00: 0xe0000b03, 0x17b01: 0xe0000aff, 0x17b02: 0xe0000b13, 0x17b03: 0xe0000b0f,\n\t0x17b04: 0xe0000b0b, 0x17b05: 0xe0000b07, 0x17b06: 0xe0000b75, 0x17b07: 0xe0000b71,\n\t0x17b08: 0xe0000c66, 0x17b09: 0xe0000c63, 0x17b0a: 0xe0000c78, 0x17b0b: 0xe0000c75,\n\t0x17b0c: 0xe0000e84, 0x17b0d: 0xe0000e81, 0x17b0e: 0xe0000e44, 0x17b0f: 0xe0000e41,\n\t0x17b10: 0xe000ae4c, 0x17b11: 0xe000ae49, 0x17b12: 0xe0000db5, 0x17b13: 0xe0000db1,\n\t0x17b14: 0xe0000dc5, 0x17b15: 0xe0000dc1, 0x17b16: 0xe0000dbd, 0x17b17: 0xe0000db9,\n\t0x17b18: 0xe0000e8b, 0x17b19: 0xe0000e87, 0x17b1a: 0xe000ae58, 0x17b1b: 0xe000ae55,\n\t0x17b1c: 0xe0000e65, 0x17b1d: 0xe0000e61, 0x17b1e: 0xe0000e75, 0x17b1f: 0xe0000e71,\n\t0x17b20: 0xe0000e6d, 0x17b21: 0xe0000e69, 0x17b22: 0xe0000e7d, 0x17b23: 0xe0000e79,\n\t0x17b24: 0xe000108d, 0x17b25: 0xe000108a, 0x17b26: 0xe000104d, 0x17b27: 0xe000104a,\n\t0x17b28: 0xe000ae8e, 0x17b29: 0xe000ae8b, 0x17b2a: 0xe000106e, 0x17b2b: 0xe000106a,\n\t0x17b2c: 0xe000107e, 0x17b2d: 0xe000107a, 0x17b2e: 0xe0001076, 0x17b2f: 0xe0001072,\n\t0x17b30: 0xe0001086, 0x17b31: 0xe0001082, 0x17b32: 0xe0001108, 0x17b33: 0xe0001105,\n\t0x17b34: 0xe0001135, 0x17b35: 0xe0001132, 0x17b36: 0xe000112f, 0x17b37: 0xe000112c,\n\t0x17b38: 0xe000111d, 0x17b39: 0xe000111a, 0x17b3a: 0xe0000d0a, 0x17b3b: 0xe0000d07,\n\t0x17b3c: 0x0030d888, 0x17b3d: 0x4030d820, 0x17b3e: 0x00312088, 0x17b3f: 0x40312020,\n\t// Block 0x5ed, offset 0x17b40\n\t0x17b40: 0xa0000000, 0x17b41: 0xa0000000, 0x17b42: 0xa0000000, 0x17b43: 0xa0000000,\n\t0x17b44: 0xa0000000, 0x17b45: 0xa0000000, 0x17b46: 0xa0000000, 0x17b47: 0xa0000000,\n\t0x17b48: 0xa0000000, 0x17b49: 0x40020020, 0x17b4a: 0x40020220, 0x17b4b: 0x40020420,\n\t0x17b4c: 0x40020620, 0x17b4d: 0x40020820, 0x17b4e: 0xa0000000, 0x17b4f: 0xa0000000,\n\t0x17b50: 0xa0000000, 0x17b51: 0xa0000000, 0x17b52: 0xa0000000, 0x17b53: 0xa0000000,\n\t0x17b54: 0xa0000000, 0x17b55: 0xa0000000, 0x17b56: 0xa0000000, 0x17b57: 0xa0000000,\n\t0x17b58: 0xa0000000, 0x17b59: 0xa0000000, 0x17b5a: 0xa0000000, 0x17b5b: 0xa0000000,\n\t0x17b5c: 0xa0000000, 0x17b5d: 0xa0000000, 0x17b5e: 0xa0000000, 0x17b5f: 0xa0000000,\n\t0x17b60: 0x40021220, 0x17b61: 0x4002ba20, 0x17b62: 0x4003e020, 0x17b63: 0x4004ea20,\n\t0x17b64: 0x4027de20, 0x17b65: 0x4004ec20, 0x17b66: 0x4004e620, 0x17b67: 0x4003d220,\n\t0x17b68: 0x4003f420, 0x17b69: 0x4003f620, 0x17b6a: 0x4004d820, 0x17b6b: 0x40093820,\n\t0x17b6c: 0x40024020, 0x17b6d: 0x40021a20, 0x17b6e: 0x4002e420, 0x17b6f: 0x4004e220,\n\t0x17b70: 0x4029cc20, 0x17b71: 0x4029ce20, 0x17b72: 0x4029d020, 0x17b73: 0x4029d220,\n\t0x17b74: 0x4029d420, 0x17b75: 0x4029d620, 0x17b76: 0x4029d820, 0x17b77: 0x4029da20,\n\t0x17b78: 0x4029dc20, 0x17b79: 0x4029de20, 0x17b7a: 0x40026c20, 0x17b7b: 0x40026220,\n\t0x17b7c: 0x40094020, 0x17b7d: 0x40094220, 0x17b7e: 0x40094420, 0x17b7f: 0x4002c420,\n\t// Block 0x5ee, offset 0x17b80\n\t0x17b80: 0x4004d620, 0x17b81: 0x002bde88, 0x17b82: 0x002c0a88, 0x17b83: 0xc3350911,\n\t0x17b84: 0x002c6288, 0x17b85: 0x002c9888, 0x17b86: 0x002d0888, 0x17b87: 0xc33900d1,\n\t0x17b88: 0x002d6888, 0x17b89: 0xc33b0931, 0x17b8a: 0x002dcc88, 0x17b8b: 0x002dfe88,\n\t0x17b8c: 0xc0030002, 0x17b8d: 0x002e8288, 0x17b8e: 0x002e9e88, 0x17b8f: 0xc33f0071,\n\t0x17b90: 0x002f2c88, 0x17b91: 0x002f5688, 0x17b92: 0x002f7a88, 0x17b93: 0xc3430911,\n\t0x17b94: 0x00302c88, 0x17b95: 0xc3470071, 0x17b96: 0x0030be88, 0x17b97: 0x0030e288,\n\t0x17b98: 0x0030f688, 0x17b99: 0x00310088, 0x17b9a: 0x00312a88, 0x17b9b: 0x4003f820,\n\t0x17b9c: 0x4004e420, 0x17b9d: 0x4003fa20, 0x17b9e: 0x40062420, 0x17b9f: 0x40021620,\n\t0x17ba0: 0x40061e20, 0x17ba1: 0x402bde20, 0x17ba2: 0x402c0a20, 0x17ba3: 0xc3330911,\n\t0x17ba4: 0x402c6220, 0x17ba5: 0x402c9820, 0x17ba6: 0x402d0820, 0x17ba7: 0xc33700d1,\n\t0x17ba8: 0x402d6820, 0x17ba9: 0x402d9a20, 0x17baa: 0x402dcc20, 0x17bab: 0x402dfe20,\n\t0x17bac: 0xc0000002, 0x17bad: 0x402e8220, 0x17bae: 0x402e9e20, 0x17baf: 0xc33d0071,\n\t0x17bb0: 0x402f2c20, 0x17bb1: 0x402f5620, 0x17bb2: 0x402f7a20, 0x17bb3: 0xc3410911,\n\t0x17bb4: 0x40302c20, 0x17bb5: 0xc3450071, 0x17bb6: 0x4030be20, 0x17bb7: 0x4030e220,\n\t0x17bb8: 0x4030f620, 0x17bb9: 0x40310020, 0x17bba: 0x40312a20, 0x17bbb: 0x4003fc20,\n\t0x17bbc: 0x40094820, 0x17bbd: 0x4003fe20, 0x17bbe: 0x40094c20, 0x17bbf: 0xa0000000,\n\t// Block 0x5ef, offset 0x17bc0\n\t0x17bc0: 0x00093685, 0x17bc1: 0x40083620, 0x17bc2: 0x40083820, 0x17bc3: 0x40083a20,\n\t0x17bc4: 0x40083c20, 0x17bc5: 0x002c628b, 0x17bc6: 0x002c6285, 0x17bc7: 0x002c9885,\n\t0x17bc8: 0x002d9a85, 0x17bc9: 0x002dcc85, 0x17bca: 0x40083e20, 0x17bcb: 0x400a6e20,\n\t0x17bcc: 0x40084020, 0x17bcd: 0xe00009c4, 0x17bce: 0x402d1e20, 0x17bcf: 0x40084220,\n\t0x17bd0: 0xe00002cb, 0x17bd1: 0xe00002d3, 0x17bd2: 0xe00002b2, 0x17bd3: 0xe00002bb,\n\t0x17bd4: 0xe00003cd, 0x17bd5: 0xe00002c3, 0x17bd6: 0xe00003d1, 0x17bd7: 0xe00004ab,\n\t0x17bd8: 0xe0000579, 0x17bd9: 0xe00002c7, 0x17bda: 0xe0000640, 0x17bdb: 0xe00002cf,\n\t0x17bdc: 0xe00004af, 0x17bdd: 0xe0000644, 0x17bde: 0xe0000798, 0x17bdf: 0xf0001e1e,\n\t0x17be0: 0x002d9a8a, 0x17be1: 0xe00027d4, 0x17be2: 0xe00027db, 0x17be3: 0xe00027ee,\n\t0x17be4: 0x0030be8a, 0x17be5: 0xe0002848, 0x17be6: 0xe000284f, 0x17be7: 0xe00010bb,\n\t0x17be8: 0xe00027f4, 0x17be9: 0x0030f68a, 0x17bea: 0xe0002883, 0x17beb: 0xe000288a,\n\t0x17bec: 0x002e228a, 0x17bed: 0x002c3a8a, 0x17bee: 0x002c628a, 0x17bef: 0x002e828a,\n\t0x17bf0: 0x002d9a84, 0x17bf1: 0xf0001f04, 0x17bf2: 0xf0000404, 0x17bf3: 0xf0001f04,\n\t0x17bf4: 0x0030be84, 0x17bf5: 0xf0001f04, 0x17bf6: 0xf0000404, 0x17bf7: 0xe00010b6,\n\t0x17bf8: 0xf0001f04, 0x17bf9: 0x0030f684, 0x17bfa: 0xf0001f04, 0x17bfb: 0xf0000404,\n\t0x17bfc: 0x002e2284, 0x17bfd: 0x002c3a84, 0x17bfe: 0x002c6284, 0x17bff: 0x002e8284,\n\t// Block 0x5f0, offset 0x17c00\n\t0x17c00: 0xf0001f04, 0x17c01: 0xf0001f04, 0x17c02: 0xf0001f04, 0x17c03: 0xf0001f04,\n\t0x17c04: 0xf0001f04, 0x17c05: 0xf0001f04, 0x17c06: 0xf0001f04, 0x17c07: 0xf0001f04,\n\t0x17c08: 0xf0001f04, 0x17c09: 0xf0001f04, 0x17c0a: 0xf0001f04,\n\t0x17c10: 0xf0000a04, 0x17c11: 0xf0000a04, 0x17c12: 0xf0000a04, 0x17c13: 0xf0000a04,\n\t0x17c14: 0xf0000a04, 0x17c15: 0xf0000a04, 0x17c16: 0xf0000a04, 0x17c17: 0xf0000a04,\n\t0x17c18: 0xe00024b3, 0x17c19: 0xf0000a04, 0x17c1a: 0xf0000a04, 0x17c1b: 0xf0000a04,\n\t0x17c1c: 0xf0000a04, 0x17c1d: 0xf0000a04, 0x17c1e: 0xf0000a04, 0x17c1f: 0xf0000a04,\n\t0x17c20: 0xf0000a04, 0x17c21: 0xf0000a04, 0x17c22: 0xf0000a04, 0x17c23: 0xf0000a04,\n\t0x17c24: 0xf0000a04, 0x17c25: 0xf0000a04, 0x17c26: 0xf0000a04, 0x17c27: 0xf0000a04,\n\t0x17c28: 0xf0000a04, 0x17c29: 0xf0000a04, 0x17c2a: 0xf0000a04, 0x17c2b: 0x002c3a8c,\n\t0x17c2c: 0x002f7a8c, 0x17c2d: 0xf0000c0c, 0x17c2e: 0xf0000c0c,\n\t0x17c30: 0x002bde9d, 0x17c31: 0x002c0a9d, 0x17c32: 0x002c3a9d, 0x17c33: 0x002c629d,\n\t0x17c34: 0x002c989d, 0x17c35: 0x002d089d, 0x17c36: 0x002d229d, 0x17c37: 0x002d689d,\n\t0x17c38: 0x002d9a9d, 0x17c39: 0x002dcc9d, 0x17c3a: 0x002dfe9d, 0x17c3b: 0x002e229d,\n\t0x17c3c: 0x002e829d, 0x17c3d: 0x002e9e9d, 0x17c3e: 0x002ee29d, 0x17c3f: 0x002f2c9d,\n\t// Block 0x5f1, offset 0x17c40\n\t0x17c40: 0x00352088, 0x17c41: 0x40352020, 0x17c42: 0x40070620, 0x17c43: 0xae608302,\n\t0x17c44: 0xae605f02, 0x17c45: 0xae602a02, 0x17c46: 0xae602202, 0x17c47: 0xae605f02,\n\t0x17c48: 0xa0000000, 0x17c49: 0xa0000000, 0x17c4a: 0x00341c88, 0x17c4b: 0x40341c20,\n\t0x17c4c: 0x00369688, 0x17c4d: 0x40369620, 0x17c4e: 0x00353088, 0x17c4f: 0x40353020,\n\t0x17c50: 0x00336483, 0x17c51: 0x40336420, 0x17c52: 0x00336a88, 0x17c53: 0x40336a20,\n\t0x17c54: 0x00337a88, 0x17c55: 0x40337a20, 0x17c56: 0x0033dc88, 0x17c57: 0x4033dc20,\n\t0x17c58: 0x0033aa88, 0x17c59: 0x4033aa20, 0x17c5a: 0x00345888, 0x17c5b: 0x40345820,\n\t0x17c5c: 0x00347888, 0x17c5d: 0x40347820, 0x17c5e: 0x00347088, 0x17c5f: 0x40347020,\n\t0x17c60: 0x00346888, 0x17c61: 0x40346820, 0x17c62: 0x0034ca88, 0x17c63: 0x4034ca20,\n\t0x17c64: 0x0034dc88, 0x17c65: 0x4034dc20, 0x17c66: 0x00351888, 0x17c67: 0x40351820,\n\t0x17c68: 0x00372688, 0x17c69: 0x40372620, 0x17c6a: 0x00354488, 0x17c6b: 0x40354420,\n\t0x17c6c: 0x00355888, 0x17c6d: 0x40355820, 0x17c6e: 0x00359288, 0x17c6f: 0x40359220,\n\t0x17c70: 0x00359a88, 0x17c71: 0x40359a20, 0x17c72: 0x0035cc88, 0x17c73: 0x4035cc20,\n\t0x17c74: 0x00360e88, 0x17c75: 0x40360e20, 0x17c76: 0x00362a88, 0x17c77: 0x40362a20,\n\t0x17c78: 0x00363a88, 0x17c79: 0x40363a20, 0x17c7a: 0x0035d488, 0x17c7b: 0x4035d420,\n\t0x17c7c: 0x00364488, 0x17c7d: 0x40364420, 0x17c7e: 0x00364c88, 0x17c7f: 0x40364c20,\n\t// Block 0x5f2, offset 0x17c80\n\t0x17c80: 0xa0000000, 0x17c81: 0xa0000000, 0x17c82: 0xa0000000, 0x17c83: 0xa0000000,\n\t0x17c84: 0xa0000000, 0x17c86: 0x40096620, 0x17c87: 0x40096a20,\n\t0x17c88: 0x40070820, 0x17c89: 0x4004f220, 0x17c8a: 0x4004f620, 0x17c8b: 0x4027e620,\n\t0x17c8c: 0x40024820, 0x17c8d: 0x40024a20, 0x17c8e: 0x40070e20, 0x17c8f: 0x40071020,\n\t0x17c90: 0xa0000001, 0x17c91: 0xa0000002, 0x17c92: 0xa0000004, 0x17c93: 0xa0000003,\n\t0x17c94: 0xa0000005, 0x17c95: 0xae600000, 0x17c96: 0xae600000, 0x17c97: 0xae600000,\n\t0x17c98: 0xa1e00000, 0x17c99: 0xa1f00000, 0x17c9a: 0xa2000000, 0x17c9b: 0x40026420,\n\t0x17c9e: 0x40027020, 0x17c9f: 0x4002cc20,\n\t0x17ca0: 0x403aa220, 0x17ca1: 0x4039a620, 0x17ca2: 0x40393a20, 0x17ca3: 0x40393821,\n\t0x17ca4: 0x40399c21, 0x17ca5: 0x40392820, 0x17ca6: 0x4039a821, 0x17ca7: 0xcf6e0151,\n\t0x17ca8: 0xcf729a11, 0x17ca9: 0x40395420, 0x17caa: 0xcf769a11, 0x17cab: 0x40394c20,\n\t0x17cac: 0xcf7a9a11, 0x17cad: 0x40395620, 0x17cae: 0x40395820, 0x17caf: 0xcf7e9a11,\n\t0x17cb0: 0x40396220, 0x17cb1: 0xcf829a11, 0x17cb2: 0x40396c20, 0x17cb3: 0x40397020,\n\t0x17cb4: 0x40397220, 0x17cb5: 0x40397420, 0x17cb6: 0x40397620, 0x17cb7: 0x40397820,\n\t0x17cb8: 0x40397a20, 0x17cb9: 0x40397c20, 0x17cba: 0x40397e20, 0x17cbb: 0x403a3820,\n\t0x17cbc: 0x403a3a20, 0x17cbd: 0x403a9c20, 0x17cbe: 0x403a9e20, 0x17cbf: 0x403aa020,\n\t// Block 0x5f3, offset 0x17cc0\n\t0x17cc0: 0xa0000000, 0x17cc1: 0x40398020, 0x17cc2: 0x40398220, 0x17cc3: 0x403a1a20,\n\t0x17cc4: 0xcf8a9a11, 0x17cc5: 0xcf8c9a11, 0x17cc6: 0xcf8e9a11, 0x17cc7: 0x403a6820,\n\t0x17cc8: 0xcf929a32, 0x17cc9: 0x403a8e20, 0x17cca: 0xcf970171, 0x17ccb: 0xa000c302,\n\t0x17ccc: 0xa000c502, 0x17ccd: 0xa000c402, 0x17cce: 0xa000bd02, 0x17ccf: 0xa000bf02,\n\t0x17cd0: 0xa000be02, 0x17cd1: 0xa000c702, 0x17cd2: 0xa220bc02, 0x17cd3: 0xa000c902,\n\t0x17cd4: 0xa000c602, 0x17cd5: 0xadc0bf02, 0x17cd6: 0xa000c102, 0x17cd7: 0xa000c202,\n\t0x17cd8: 0xa000c802, 0x17cd9: 0xae60c402, 0x17cda: 0xae60c502, 0x17cdb: 0xae60c602,\n\t0x17cdc: 0xadc0c702, 0x17cdd: 0xae60c802, 0x17cde: 0xae60c902, 0x17cdf: 0xadc0c002,\n\t0x17ce0: 0xe000015e, 0x17ce1: 0xe00001e6, 0x17ce2: 0xe0000301, 0x17ce3: 0xe00003db,\n\t0x17ce4: 0xe00004b6, 0x17ce5: 0xe0000580, 0x17ce6: 0xe000064b, 0x17ce7: 0xe00006f3,\n\t0x17ce8: 0xe000079f, 0x17ce9: 0xe0000844, 0x17cea: 0x4004ee20, 0x17ceb: 0x40024c20,\n\t0x17cec: 0x40024e20, 0x17ced: 0x4004de20, 0x17cee: 0x40393a20, 0x17cef: 0x403a1020,\n\t0x17cf0: 0xa000c002, 0x17cf1: 0x40392420, 0x17cf2: 0x40392220, 0x17cf3: 0x40392a20,\n\t0x17cf4: 0x00391c84, 0x17cf5: 0xf0000404, 0x17cf6: 0xe000b07a, 0x17cf7: 0xf0000404,\n\t0x17cf8: 0xf0000404, 0x17cf9: 0xcf789a11, 0x17cfa: 0x40395c20, 0x17cfb: 0x40393e20,\n\t0x17cfc: 0x40395e20, 0x17cfd: 0x40396020, 0x17cfe: 0xcf749a11, 0x17cff: 0x40396220,\n\t// Block 0x5f4, offset 0x17d00\n\t0x17d00: 0x40394220, 0x17d01: 0x40397620, 0x17d02: 0x40397820, 0x17d03: 0x40396620,\n\t0x17d04: 0x40396820, 0x17d05: 0x40397a20, 0x17d06: 0xcf7c9a11, 0x17d07: 0x40396e20,\n\t0x17d08: 0xcf809a11, 0x17d09: 0x40398e20, 0x17d0a: 0x40399020, 0x17d0b: 0x40399220,\n\t0x17d0c: 0x40399420, 0x17d0d: 0x40399620, 0x17d0e: 0x40399820, 0x17d0f: 0x40399a20,\n\t0x17d10: 0x40399c20, 0x17d11: 0xcf849a11, 0x17d12: 0x4039aa20, 0x17d13: 0x4039ac20,\n\t0x17d14: 0x4039ae20, 0x17d15: 0x4039b020, 0x17d16: 0x4039b220, 0x17d17: 0x4039b420,\n\t0x17d18: 0x40396e20, 0x17d19: 0x4039b820, 0x17d1a: 0x4039ca20, 0x17d1b: 0x4039cc20,\n\t0x17d1c: 0x4039ce20, 0x17d1d: 0x4039e020, 0x17d1e: 0x4039e220, 0x17d1f: 0x4039ea20,\n\t0x17d20: 0x4039f220, 0x17d21: 0x4039fe20, 0x17d22: 0x403a0020, 0x17d23: 0x403a0220,\n\t0x17d24: 0x403a0420, 0x17d25: 0x403a0820, 0x17d26: 0x403a0a20, 0x17d27: 0x403a1420,\n\t0x17d28: 0x403a1620, 0x17d29: 0xcf869a11, 0x17d2a: 0x403a1e20, 0x17d2b: 0x403a2020,\n\t0x17d2c: 0x403a2220, 0x17d2d: 0x403a2620, 0x17d2e: 0x403a2820, 0x17d2f: 0xcf889a11,\n\t0x17d30: 0x403a2c20, 0x17d31: 0x403a2e20, 0x17d32: 0x403a3020, 0x17d33: 0x403a3220,\n\t0x17d34: 0x403a3420, 0x17d35: 0x403a4220, 0x17d36: 0x403a4420, 0x17d37: 0x403a4620,\n\t0x17d38: 0x403a4820, 0x17d39: 0x403a6020, 0x17d3a: 0xcf909a11, 0x17d3b: 0x403a5a20,\n\t0x17d3c: 0x403a5c20, 0x17d3d: 0x403a5e20, 0x17d3e: 0x4039a220, 0x17d3f: 0x40396c20,\n\t// Block 0x5f5, offset 0x17d40\n\t0x17d40: 0xe000b077, 0x17d41: 0xcf950171, 0x17d42: 0x4039a021, 0x17d43: 0x4039a420,\n\t0x17d44: 0x403a7620, 0x17d45: 0x403a7820, 0x17d46: 0x403a7a20, 0x17d47: 0x403a7c20,\n\t0x17d48: 0x403a7e20, 0x17d49: 0x403a8020, 0x17d4a: 0x403a8220, 0x17d4b: 0x403a8420,\n\t0x17d4c: 0xcf999a11, 0x17d4d: 0x403a9420, 0x17d4e: 0x403a9620, 0x17d4f: 0x403a8620,\n\t0x17d50: 0x403a9820, 0x17d51: 0x403a9a20, 0x17d52: 0xcf9b0171, 0x17d53: 0x4039ac21,\n\t0x17d54: 0x4002e820, 0x17d55: 0x403a7220, 0x17d56: 0xae600000, 0x17d57: 0xae600000,\n\t0x17d58: 0xae600000, 0x17d59: 0xae600000, 0x17d5a: 0xae600000, 0x17d5b: 0xae600000,\n\t0x17d5c: 0xae600000, 0x17d5d: 0xa0000000, 0x17d5e: 0x40071220, 0x17d5f: 0xae600000,\n\t0x17d60: 0xae600000, 0x17d61: 0xae600000, 0x17d62: 0xae600000, 0x17d63: 0xadc00000,\n\t0x17d64: 0xae600000, 0x17d65: 0x003a7484, 0x17d66: 0x003a9084, 0x17d67: 0xae600000,\n\t0x17d68: 0xae600000, 0x17d69: 0x40071420, 0x17d6a: 0xadc00000, 0x17d6b: 0xae600000,\n\t0x17d6c: 0xae600000, 0x17d6d: 0xadc00000, 0x17d6e: 0x40399e20, 0x17d6f: 0x4039ba20,\n\t0x17d70: 0xe0000161, 0x17d71: 0xe00001e9, 0x17d72: 0xe0000304, 0x17d73: 0xe00003de,\n\t0x17d74: 0xe00004b9, 0x17d75: 0xe0000583, 0x17d76: 0xe000064e, 0x17d77: 0xe00006f6,\n\t0x17d78: 0xe00007a2, 0x17d79: 0xe0000847, 0x17d7a: 0x4039d020, 0x17d7b: 0x4039e420,\n\t0x17d7c: 0x4039f420, 0x17d7d: 0xe0001553, 0x17d7e: 0xe0001779, 0x17d7f: 0x403a7020,\n\t// Block 0x5f6, offset 0x17d80\n\t0x17d80: 0xe000155f, 0x17d81: 0xe0001565, 0x17d82: 0xe000157a, 0x17d83: 0xe00015b0,\n\t0x17d84: 0xe00015b6, 0x17d85: 0xe000ae97, 0x17d86: 0xe000ae9d, 0x17d87: 0xe000aea3,\n\t0x17d88: 0xe000aeb5, 0x17d89: 0xf0001a1a, 0x17d8a: 0xf0001a1a, 0x17d8b: 0xe000aebe,\n\t0x17d8c: 0xe000aec4, 0x17d8d: 0xe000aeca, 0x17d8e: 0xe000aedc, 0x17d8f: 0xe000289a,\n\t0x17d90: 0xe00036b1, 0x17d91: 0xe000aee2, 0x17d92: 0xe000aef4, 0x17d93: 0xe00028a0,\n\t0x17d94: 0xe00036ba, 0x17d95: 0xe000aefd, 0x17d96: 0xe000af03, 0x17d97: 0xe000af09,\n\t0x17d98: 0xe000af0f, 0x17d99: 0xe000af15, 0x17d9a: 0xe000af18, 0x17d9b: 0xe000af1e,\n\t0x17d9c: 0xe000af2d, 0x17d9d: 0xe000af36, 0x17d9e: 0xe000af3f, 0x17d9f: 0xe000af4e,\n\t0x17da0: 0xe000af8a, 0x17da1: 0xe000af99, 0x17da2: 0xe000af9f, 0x17da3: 0xe000afa5,\n\t0x17da4: 0xe000afab, 0x17da5: 0xe000afb7, 0x17da6: 0xe000afbd, 0x17da7: 0xe000afc6,\n\t0x17da8: 0xe000afcf, 0x17da9: 0xe000afd5, 0x17daa: 0xe000afdb, 0x17dab: 0xe000afe1,\n\t0x17dac: 0xe000afe7, 0x17dad: 0xe000afed, 0x17dae: 0xe000aff3, 0x17daf: 0xe000aff9,\n\t0x17db0: 0xe000afff, 0x17db1: 0xe00028e2, 0x17db2: 0xe0003708, 0x17db3: 0xe000b005,\n\t0x17db4: 0xe000b00b, 0x17db5: 0xe00028e8, 0x17db6: 0xe000370e, 0x17db7: 0xf0001a1a,\n\t0x17db8: 0xe000371a, 0x17db9: 0xe0003720, 0x17dba: 0xe0003726, 0x17dbb: 0xe0003732,\n\t0x17dbc: 0xe000373e, 0x17dbd: 0xf0001a1a, 0x17dbe: 0xf0001a1a, 0x17dbf: 0xe000b017,\n\t// Block 0x5f7, offset 0x17dc0\n\t0x17dc0: 0xe000b01d, 0x17dc1: 0xe000b023, 0x17dc2: 0xe000b02f, 0x17dc3: 0xe00028f4,\n\t0x17dc4: 0xe000374d, 0x17dc5: 0xe000b038, 0x17dc6: 0xe000b03e, 0x17dc7: 0xe000b044,\n\t0x17dc8: 0xe000b04d, 0x17dc9: 0xe00028f7, 0x17dca: 0xe0003750, 0x17dcb: 0xe000b053,\n\t0x17dcc: 0xe000b059, 0x17dcd: 0xe000b05f, 0x17dce: 0xe000b071, 0x17dcf: 0xe00028fd,\n\t0x17dd0: 0xe000375c, 0x17dd1: 0xe0003765, 0x17dd2: 0xe000376b, 0x17dd3: 0xf0001a1a,\n\t0x17dd4: 0xf0001a1a, 0x17dd5: 0xe0003786, 0x17dd6: 0xe000378c, 0x17dd7: 0xe0003792,\n\t0x17dd8: 0xe00037a4, 0x17dd9: 0xf0001a1a, 0x17dda: 0xf0001a1a, 0x17ddb: 0xe000af21,\n\t0x17ddc: 0xe000af24, 0x17ddd: 0xe000377d, 0x17dde: 0xe0000003, 0x17ddf: 0xe0000006,\n\t0x17de0: 0xe0000009, 0x17de1: 0xe000000c, 0x17de2: 0xe000000f, 0x17de3: 0xe0000012,\n\t0x17de4: 0xe000156b, 0x17de5: 0xe000156e, 0x17de6: 0xe0001577, 0x17de7: 0xe000157d,\n\t0x17de8: 0xe00015aa, 0x17de9: 0xe00015b3, 0x17dea: 0xe000aea6, 0x17deb: 0xe000aea9,\n\t0x17dec: 0xe000aeb2, 0x17ded: 0xe000aeb8, 0x17dee: 0xf0001919, 0x17def: 0xf0001919,\n\t0x17df0: 0xe000aecd, 0x17df1: 0xe000aed0, 0x17df2: 0xe000aed9, 0x17df3: 0xe000aedf,\n\t0x17df4: 0xe0002897, 0x17df5: 0xe00036ae, 0x17df6: 0xe000aee5, 0x17df7: 0xe000aee8,\n\t0x17df8: 0xe000aef1, 0x17df9: 0xe000aef7, 0x17dfa: 0xe000289d, 0x17dfb: 0xe00036b7,\n\t0x17dfc: 0xe00028df, 0x17dfd: 0xe0003705, 0x17dfe: 0xe00028e5, 0x17dff: 0xe000370b,\n\t// Block 0x5f8, offset 0x17e00\n\t0x17e00: 0xf0001919, 0x17e01: 0xe000372f, 0x17e02: 0xe000373b, 0x17e03: 0xf0001919,\n\t0x17e04: 0xf0001919, 0x17e05: 0xe000b02c, 0x17e06: 0xe00028f1, 0x17e07: 0xe000374a,\n\t0x17e08: 0xe000b032, 0x17e09: 0xe000b04a, 0x17e0a: 0xe000b062, 0x17e0b: 0xe000b065,\n\t0x17e0c: 0xe000b06e, 0x17e0d: 0xe000b074, 0x17e0e: 0xe00028fa, 0x17e0f: 0xe0003759,\n\t0x17e10: 0xe000377a, 0x17e11: 0xe0003795, 0x17e12: 0xe0003798, 0x17e13: 0xe00037a1,\n\t0x17e14: 0xe00037a7, 0x17e15: 0xf0001919, 0x17e16: 0xf0001919, 0x17e17: 0xe000155c,\n\t0x17e18: 0xe0001562, 0x17e19: 0xe0001568, 0x17e1a: 0xe0001571, 0x17e1b: 0xe0001580,\n\t0x17e1c: 0xe000ae94, 0x17e1d: 0xe000ae9a, 0x17e1e: 0xe000aea0, 0x17e1f: 0xe000aeac,\n\t0x17e20: 0xf0001717, 0x17e21: 0xe000aebb, 0x17e22: 0xe000aec1, 0x17e23: 0xe000aec7,\n\t0x17e24: 0xe000aed3, 0x17e25: 0xe00036a8, 0x17e26: 0xe000aeeb, 0x17e27: 0xe000aefa,\n\t0x17e28: 0xe000af00, 0x17e29: 0xe000af06, 0x17e2a: 0xe000af0c, 0x17e2b: 0xe000af12,\n\t0x17e2c: 0xe000af1b, 0x17e2d: 0xe000af27, 0x17e2e: 0xe000af30, 0x17e2f: 0xe000af39,\n\t0x17e30: 0xe000af48, 0x17e31: 0xe000af87, 0x17e32: 0xe000af8d, 0x17e33: 0xe000af96,\n\t0x17e34: 0xe000af9c, 0x17e35: 0xe000afa2, 0x17e36: 0xe000afa8, 0x17e37: 0xe000afb4,\n\t0x17e38: 0xe000afba, 0x17e39: 0xe000afc9, 0x17e3a: 0xe000afd2, 0x17e3b: 0xe000afd8,\n\t0x17e3c: 0xe000afde, 0x17e3d: 0xe000afe4, 0x17e3e: 0xe000afea, 0x17e3f: 0xe000aff0,\n\t// Block 0x5f9, offset 0x17e40\n\t0x17e40: 0xe000aff6, 0x17e41: 0xe000affc, 0x17e42: 0xe000b002, 0x17e43: 0xe000b008,\n\t0x17e44: 0xe0003717, 0x17e45: 0xe000371d, 0x17e46: 0xe0003723, 0x17e47: 0xe0003729,\n\t0x17e48: 0xe0003735, 0x17e49: 0xe000b014, 0x17e4a: 0xe000b01a, 0x17e4b: 0xe000b020,\n\t0x17e4c: 0xe000b026, 0x17e4d: 0xe0003747, 0x17e4e: 0xe000b035, 0x17e4f: 0xe000b03b,\n\t0x17e50: 0xe000b041, 0x17e51: 0xe000b047, 0x17e52: 0xe000b050, 0x17e53: 0xe000b056,\n\t0x17e54: 0xe000b05c, 0x17e55: 0xe000b068, 0x17e56: 0xe0003753, 0x17e57: 0xe0003762,\n\t0x17e58: 0xe0003768, 0x17e59: 0xe000375f, 0x17e5a: 0xe0003783, 0x17e5b: 0xe0003789,\n\t0x17e5c: 0xe000378f, 0x17e5d: 0xe000379b, 0x17e5e: 0xf0001717, 0x17e5f: 0xe0001574,\n\t0x17e60: 0xe0001583, 0x17e61: 0xe000aeaf, 0x17e62: 0xf0001818, 0x17e63: 0xe000aed6,\n\t0x17e64: 0xe00036ab, 0x17e65: 0xe000aeee, 0x17e66: 0xe00036b4, 0x17e67: 0xe000af4b,\n\t0x17e68: 0xe00036d2, 0x17e69: 0xe000af7e, 0x17e6a: 0xe00036de, 0x17e6b: 0xe000372c,\n\t0x17e6c: 0xe0003738, 0x17e6d: 0xe000b029, 0x17e6e: 0xe000b06b, 0x17e6f: 0xe0003756,\n\t0x17e70: 0xe000379e, 0x17e71: 0xf0001818, 0x17e72: 0xe000ae91, 0x17e73: 0xe0003690,\n\t0x17e74: 0xe0003693, 0x17e75: 0xe00028d0, 0x17e76: 0xe00036f6, 0x17e77: 0xe00028d6,\n\t0x17e78: 0xe00036fc, 0x17e79: 0xe00028dc, 0x17e7a: 0xe0003702, 0x17e7b: 0xe00028b8,\n\t0x17e7c: 0xe00036d8, 0x17e7d: 0xe00028be, 0x17e7e: 0xe00036e4, 0x17e7f: 0xe00028ac,\n\t// Block 0x5fa, offset 0x17e80\n\t0x17e80: 0xe00036c6, 0x17e81: 0xe00028a6, 0x17e82: 0xe00036c0, 0x17e83: 0xe00028b2,\n\t0x17e84: 0xe00036cc, 0x17e85: 0xe00028c4, 0x17e86: 0xe00036ea, 0x17e87: 0xe00028ca,\n\t0x17e88: 0xe00036f0, 0x17e89: 0xe000af5a, 0x17e8a: 0xe000af66, 0x17e8b: 0xe000af72,\n\t0x17e8c: 0xe000af84, 0x17e8d: 0xe000af78, 0x17e8e: 0xe000af45, 0x17e8f: 0xe000af93,\n\t0x17e90: 0xe000afb1, 0x17e91: 0xe00028cd, 0x17e92: 0xe00036f3, 0x17e93: 0xe00028d3,\n\t0x17e94: 0xe00036f9, 0x17e95: 0xe00028d9, 0x17e96: 0xe00036ff, 0x17e97: 0xe00028b5,\n\t0x17e98: 0xe00036d5, 0x17e99: 0xe00028bb, 0x17e9a: 0xe00036e1, 0x17e9b: 0xe00028a9,\n\t0x17e9c: 0xe00036c3, 0x17e9d: 0xe00028a3, 0x17e9e: 0xe00036bd, 0x17e9f: 0xe00028af,\n\t0x17ea0: 0xe00036c9, 0x17ea1: 0xe00028c1, 0x17ea2: 0xe00036e7, 0x17ea3: 0xe00028c7,\n\t0x17ea4: 0xe00036ed, 0x17ea5: 0xe000af57, 0x17ea6: 0xe000af63, 0x17ea7: 0xe000af6f,\n\t0x17ea8: 0xe000af81, 0x17ea9: 0xe000af75, 0x17eaa: 0xe000af42, 0x17eab: 0xe000af90,\n\t0x17eac: 0xe000afae, 0x17ead: 0xe000af51, 0x17eae: 0xe000af5d, 0x17eaf: 0xe000af69,\n\t0x17eb0: 0xe000af7b, 0x17eb1: 0xe00036cf, 0x17eb2: 0xe00036db, 0x17eb3: 0xe000afc0,\n\t0x17eb4: 0xe000af2a, 0x17eb5: 0xe000af33, 0x17eb6: 0xe000af3c, 0x17eb7: 0xe000af54,\n\t0x17eb8: 0xe000af60, 0x17eb9: 0xe000af6c, 0x17eba: 0xe000afc3, 0x17ebb: 0xe000afcc,\n\t0x17ebc: 0xe0003696, 0x17ebd: 0xe0003699, 0x17ebe: 0x4004c020, 0x17ebf: 0x4004c220,\n\t// Block 0x5fb, offset 0x17ec0\n\t0x17ec0: 0x0039de98, 0x17ec1: 0x0039e69a, 0x17ec2: 0x0039e699, 0x17ec3: 0x0039e697,\n\t0x17ec4: 0x0039e698, 0x17ec5: 0x0039e89a, 0x17ec6: 0x0039e899, 0x17ec7: 0x0039e897,\n\t0x17ec8: 0x0039e898, 0x17ec9: 0x0039ee9a, 0x17eca: 0x0039ee99, 0x17ecb: 0x0039ee97,\n\t0x17ecc: 0x0039ee98, 0x17ecd: 0x0039f09a, 0x17ece: 0x0039f099, 0x17ecf: 0x0039f097,\n\t0x17ed0: 0x0039f098, 0x17ed1: 0x0039fc9a, 0x17ed2: 0x0039fc99, 0x17ed3: 0x0039fc97,\n\t0x17ed4: 0x0039fc98, 0x17ed5: 0x003a129a, 0x17ed6: 0x003a1299, 0x17ed7: 0x003a1297,\n\t0x17ed8: 0x003a1298, 0x17ed9: 0x003a1a9a, 0x17eda: 0x003a1a99, 0x17edb: 0x003a1a97,\n\t0x17edc: 0x003a1a98, 0x17edd: 0x003a409a, 0x17ede: 0x003a4099, 0x17edf: 0x003a4097,\n\t0x17ee0: 0x003a4098, 0x17ee1: 0x003a4e9a, 0x17ee2: 0x003a4e99, 0x17ee3: 0x003a4e97,\n\t0x17ee4: 0x003a4e98, 0x17ee5: 0x003a569a, 0x17ee6: 0x003a5699, 0x17ee7: 0x003a5697,\n\t0x17ee8: 0x003a5698, 0x17ee9: 0x003a689a, 0x17eea: 0x003a6899, 0x17eeb: 0x003a6897,\n\t0x17eec: 0x003a6898, 0x17eed: 0x003a749a, 0x17eee: 0x003a7499, 0x17eef: 0x003a8e9a,\n\t0x17ef0: 0x003a8e99, 0x17ef1: 0x003a909a, 0x17ef2: 0x003a9099, 0x17ef3: 0x003a9097,\n\t0x17ef4: 0x003a9098, 0x17ef5: 0xe0001732, 0x17ef6: 0xe000172f, 0x17ef7: 0xe0001738,\n\t0x17ef8: 0xe0001735, 0x17ef9: 0xe000173e, 0x17efa: 0xe000173b, 0x17efb: 0xe000b011,\n\t0x17efc: 0xe000b00e, 0x17eff: 0xa0000000,\n\t// Block 0x5fc, offset 0x17f00\n\t0x17f00: 0xa0000000, 0x17f01: 0xa0000000, 0x17f02: 0xa0000000, 0x17f03: 0xa0000000,\n\t0x17f04: 0xa0000000, 0x17f05: 0xa0000000, 0x17f06: 0xa0000000, 0x17f07: 0xa0000000,\n\t0x17f08: 0xa0000000, 0x17f09: 0x40020020, 0x17f0a: 0x40020220, 0x17f0b: 0x40020420,\n\t0x17f0c: 0x40020620, 0x17f0d: 0x40020820, 0x17f0e: 0xa0000000, 0x17f0f: 0xa0000000,\n\t0x17f10: 0xa0000000, 0x17f11: 0xa0000000, 0x17f12: 0xa0000000, 0x17f13: 0xa0000000,\n\t0x17f14: 0xa0000000, 0x17f15: 0xa0000000, 0x17f16: 0xa0000000, 0x17f17: 0xa0000000,\n\t0x17f18: 0xa0000000, 0x17f19: 0xa0000000, 0x17f1a: 0xa0000000, 0x17f1b: 0xa0000000,\n\t0x17f1c: 0xa0000000, 0x17f1d: 0xa0000000, 0x17f1e: 0xa0000000, 0x17f1f: 0xa0000000,\n\t0x17f20: 0x40021220, 0x17f21: 0x4002ba20, 0x17f22: 0x4003e020, 0x17f23: 0x4004ea20,\n\t0x17f24: 0x4027de20, 0x17f25: 0x4004ec20, 0x17f26: 0x4004e620, 0x17f27: 0x4003d220,\n\t0x17f28: 0x4003f420, 0x17f29: 0x4003f620, 0x17f2a: 0x4004d820, 0x17f2b: 0x40093820,\n\t0x17f2c: 0x40024020, 0x17f2d: 0x40021a20, 0x17f2e: 0x4002e420, 0x17f2f: 0x4004e220,\n\t0x17f30: 0x4029cc20, 0x17f31: 0x4029ce20, 0x17f32: 0x4029d020, 0x17f33: 0x4029d220,\n\t0x17f34: 0x4029d420, 0x17f35: 0x4029d620, 0x17f36: 0x4029d820, 0x17f37: 0x4029da20,\n\t0x17f38: 0x4029dc20, 0x17f39: 0x4029de20, 0x17f3a: 0x40026c20, 0x17f3b: 0x40026220,\n\t0x17f3c: 0x40094020, 0x17f3d: 0x40094220, 0x17f3e: 0x40094420, 0x17f3f: 0x4002c420,\n\t// Block 0x5fd, offset 0x17f40\n\t0x17f40: 0x4004d620, 0x17f41: 0xcead9741, 0x17f42: 0x002c0a88, 0x17f43: 0x002c3a88,\n\t0x17f44: 0x002c6288, 0x17f45: 0xce6d2741, 0x17f46: 0x002d0888, 0x17f47: 0x002d2288,\n\t0x17f48: 0x002d6888, 0x17f49: 0x002d9a88, 0x17f4a: 0x002dcc88, 0x17f4b: 0x002dfe88,\n\t0x17f4c: 0xc0030002, 0x17f4d: 0x002e8288, 0x17f4e: 0x002e9e88, 0x17f4f: 0xcfa09a71,\n\t0x17f50: 0x002f2c88, 0x17f51: 0x002f5688, 0x17f52: 0x002f7a88, 0x17f53: 0x002fe688,\n\t0x17f54: 0x00302c88, 0x17f55: 0xc3479aa1, 0x17f56: 0x0030be88, 0x17f57: 0x0030e288,\n\t0x17f58: 0x0030f688, 0x17f59: 0x00310088, 0x17f5a: 0x00312a88, 0x17f5b: 0x4003f820,\n\t0x17f5c: 0x4004e420, 0x17f5d: 0x4003fa20, 0x17f5e: 0x40062420, 0x17f5f: 0x40021620,\n\t0x17f60: 0x40061e20, 0x17f61: 0xceaa9741, 0x17f62: 0x402c0a20, 0x17f63: 0x402c3a20,\n\t0x17f64: 0x402c6220, 0x17f65: 0xce6b2741, 0x17f66: 0x402d0820, 0x17f67: 0x402d2220,\n\t0x17f68: 0x402d6820, 0x17f69: 0x402d9a20, 0x17f6a: 0x402dcc20, 0x17f6b: 0x402dfe20,\n\t0x17f6c: 0xc0000002, 0x17f6d: 0x402e8220, 0x17f6e: 0x402e9e20, 0x17f6f: 0xcf9d9a71,\n\t0x17f70: 0x402f2c20, 0x17f71: 0x402f5620, 0x17f72: 0x402f7a20, 0x17f73: 0x402fe620,\n\t0x17f74: 0x40302c20, 0x17f75: 0xc3459aa1, 0x17f76: 0x4030be20, 0x17f77: 0x4030e220,\n\t0x17f78: 0x4030f620, 0x17f79: 0x40310020, 0x17f7a: 0x40312a20, 0x17f7b: 0x4003fc20,\n\t0x17f7c: 0x40094820, 0x17f7d: 0x4003fe20, 0x17f7e: 0x40094c20, 0x17f7f: 0xa0000000,\n\t// Block 0x5fe, offset 0x17f80\n\t0x17f80: 0xe00008f5, 0x17f81: 0xe000b098, 0x17f82: 0x002be283, 0x17f83: 0xe000b092,\n\t0x17f84: 0xe000095b, 0x17f85: 0xe000094d, 0x17f86: 0xe00009dd, 0x17f87: 0xe0000a53,\n\t0x17f88: 0xe0000ae8, 0x17f89: 0xe000b10c, 0x17f8a: 0x002c9a83, 0x17f8b: 0xe0000b20,\n\t0x17f8c: 0xe0000c2b, 0x17f8d: 0xe000b150, 0x17f8e: 0xe0000c37, 0x17f8f: 0xe0000c43,\n\t0x17f90: 0xe0000ab3, 0x17f91: 0xe000b190, 0x17f92: 0xe0000d9a, 0x17f93: 0xe000b1c6,\n\t0x17f94: 0x002ee483, 0x17f95: 0xe000b1a8, 0x17f96: 0xe0000dd2, 0x17f97: 0x40093e20,\n\t0x17f98: 0xe0000e12, 0x17f99: 0xe0000fe1, 0x17f9a: 0xe000b268, 0x17f9b: 0xe0000fed,\n\t0x17f9c: 0xe0000fff, 0x17f9d: 0xe000b2b8, 0x17f9e: 0x00318888, 0x17f9f: 0xe0000f7b,\n\t0x17fa0: 0xe00008f2, 0x17fa1: 0xe000b095, 0x17fa2: 0x402be220, 0x17fa3: 0xe000b08f,\n\t0x17fa4: 0xe0000958, 0x17fa5: 0xe000094a, 0x17fa6: 0xe00009d5, 0x17fa7: 0xe0000a4d,\n\t0x17fa8: 0xe0000ae5, 0x17fa9: 0xe000b109, 0x17faa: 0x402c9a20, 0x17fab: 0xe0000b1d,\n\t0x17fac: 0xe0000c28, 0x17fad: 0xe000b14d, 0x17fae: 0xe0000c34, 0x17faf: 0xe0000c40,\n\t0x17fb0: 0xe0000aad, 0x17fb1: 0xe000b18d, 0x17fb2: 0xe0000d97, 0x17fb3: 0xe000b1c3,\n\t0x17fb4: 0x402ee420, 0x17fb5: 0xe000b1a5, 0x17fb6: 0xe0000dcf, 0x17fb7: 0x40093c20,\n\t0x17fb8: 0xe0000e0f, 0x17fb9: 0xe0000fde, 0x17fba: 0xe000b265, 0x17fbb: 0xe0000fea,\n\t0x17fbc: 0xe0000ffc, 0x17fbd: 0xe000b2b5, 0x17fbe: 0x40318820, 0x17fbf: 0xe0001114,\n\t// Block 0x5ff, offset 0x17fc0\n\t0x17fc0: 0xe0000983, 0x17fc1: 0xe0000980, 0x17fc2: 0x002be083, 0x17fc3: 0x402be020,\n\t0x17fc4: 0xe000097d, 0x17fc5: 0xe000097a, 0x17fc6: 0xe000b0ec, 0x17fc7: 0xe000b0e9,\n\t0x17fc8: 0xe0000a3e, 0x17fc9: 0xe0000a3b, 0x17fca: 0xe0000a4a, 0x17fcb: 0xe0000a47,\n\t0x17fcc: 0xe0000a44, 0x17fcd: 0xe0000a41, 0x17fce: 0xe0000a86, 0x17fcf: 0xe0000a83,\n\t0x17fd0: 0x002c6483, 0x17fd1: 0x402c6420, 0x17fd2: 0xe0000b46, 0x17fd3: 0xe0000b43,\n\t0x17fd4: 0xe0000aee, 0x17fd5: 0xe0000aeb, 0x17fd6: 0xe0000b2c, 0x17fd7: 0xe0000b29,\n\t0x17fd8: 0xe0000b40, 0x17fd9: 0xe0000b3d, 0x17fda: 0xe0000b1a, 0x17fdb: 0xe0000b17,\n\t0x17fdc: 0xe0000bb8, 0x17fdd: 0xe0000bb5, 0x17fde: 0xe0000bb2, 0x17fdf: 0xe0000baf,\n\t0x17fe0: 0xe0000bc4, 0x17fe1: 0xe0000bc1, 0x17fe2: 0xe0000bca, 0x17fe3: 0xe0000bc7,\n\t0x17fe4: 0xe0000bee, 0x17fe5: 0xe0000beb, 0x17fe6: 0xe0000c1b, 0x17fe7: 0xe0000c18,\n\t0x17fe8: 0xe000b14a, 0x17fe9: 0xe000b147, 0x17fea: 0xe0000c60, 0x17feb: 0xe0000c5d,\n\t0x17fec: 0xe0000c31, 0x17fed: 0xe0000c2e, 0x17fee: 0xe0000c5a, 0x17fef: 0xe0000c57,\n\t0x17ff0: 0xe0000c54, 0x17ff1: 0x402da220, 0x17ff2: 0xf0000a0a, 0x17ff3: 0xf0000404,\n\t0x17ff4: 0xe0000c8a, 0x17ff5: 0xe0000c87, 0x17ff6: 0xe0000c9f, 0x17ff7: 0xe0000c9c,\n\t0x17ff8: 0x402f7220, 0x17ff9: 0xe000b170, 0x17ffa: 0xe000b16d, 0x17ffb: 0xe0000cd8,\n\t0x17ffc: 0xe0000cd5, 0x17ffd: 0xe0000cd2, 0x17ffe: 0xe0000ccf, 0x17fff: 0xe0000d04,\n\t// Block 0x600, offset 0x18000\n\t0x18000: 0xe0000cfe, 0x18001: 0xe0000cf8, 0x18002: 0xe0000cf5, 0x18003: 0xe000b196,\n\t0x18004: 0xe000b193, 0x18005: 0xe0000d6f, 0x18006: 0xe0000d6c, 0x18007: 0xe0000d5d,\n\t0x18008: 0xe0000d5a, 0x18009: 0xf0000404, 0x1800a: 0x002eda88, 0x1800b: 0x402eda20,\n\t0x1800c: 0xe0000e2e, 0x1800d: 0xe0000e2b, 0x1800e: 0xe0000da0, 0x1800f: 0xe0000d9d,\n\t0x18010: 0xe0000de0, 0x18011: 0xe0000ddd, 0x18012: 0xe0000e93, 0x18013: 0xe0000e8f,\n\t0x18014: 0xe000b21e, 0x18015: 0xe000b21b, 0x18016: 0xe0000edc, 0x18017: 0xe0000ed9,\n\t0x18018: 0xe0000ed0, 0x18019: 0xe0000ecd, 0x1801a: 0xe000b232, 0x1801b: 0xe000b22f,\n\t0x1801c: 0xe0000f2d, 0x1801d: 0xe0000f2a, 0x1801e: 0xe0000f47, 0x1801f: 0xe0000f44,\n\t0x18020: 0xe0000f33, 0x18021: 0xe0000f30, 0x18022: 0xe0000f99, 0x18023: 0xe0000f96,\n\t0x18024: 0xe0000f8a, 0x18025: 0xe0000f87, 0x18026: 0x00303688, 0x18027: 0x40303620,\n\t0x18028: 0xe000b25a, 0x18029: 0xe000b257, 0x1802a: 0xe000103f, 0x1802b: 0xe000103c,\n\t0x1802c: 0xe0000fe7, 0x1802d: 0xe0000fe4, 0x1802e: 0xe0000ff9, 0x1802f: 0xe0000ff6,\n\t0x18030: 0xe0001025, 0x18031: 0xe0001022, 0x18032: 0xe0001039, 0x18033: 0xe0001036,\n\t0x18034: 0xe00010d8, 0x18035: 0xe00010d5, 0x18036: 0xe000110e, 0x18037: 0xe000110b,\n\t0x18038: 0xe0001117, 0x18039: 0xe000b2c4, 0x1803a: 0xe000b2c1, 0x1803b: 0xe000114d,\n\t0x1803c: 0xe000114a, 0x1803d: 0xe0001147, 0x1803e: 0xe0001144, 0x1803f: 0xe0000f64,\n\t// Block 0x601, offset 0x18040\n\t0x18040: 0x402c1a20, 0x18041: 0x002c2a88, 0x18042: 0x002c3288, 0x18043: 0x402c3220,\n\t0x18044: 0x0031c488, 0x18045: 0x4031c420, 0x18046: 0x002efa88, 0x18047: 0x002c4e88,\n\t0x18048: 0x402c4e20, 0x18049: 0x002c7288, 0x1804a: 0x002c7a88, 0x1804b: 0x002c8488,\n\t0x1804c: 0x402c8420, 0x1804d: 0xe000115c, 0x1804e: 0x002cae88, 0x1804f: 0x002cb888,\n\t0x18050: 0x002cc288, 0x18051: 0x002d1688, 0x18052: 0x402d1620, 0x18053: 0x002d4488,\n\t0x18054: 0x002d5888, 0x18055: 0x402d7820, 0x18056: 0x002dc288, 0x18057: 0x002db688,\n\t0x18058: 0x002e0a88, 0x18059: 0x402e0a20, 0x1805a: 0x402e3820, 0x1805b: 0x402e7220,\n\t0x1805c: 0x0030a088, 0x1805d: 0x002eb488, 0x1805e: 0x402ebc20, 0x1805f: 0x002f1088,\n\t0x18060: 0x002ee683, 0x18061: 0x402ee620, 0x18062: 0x002d6088, 0x18063: 0x402d6020,\n\t0x18064: 0x002f3e88, 0x18065: 0x402f3e20, 0x18066: 0x002f8288, 0x18067: 0x0031b488,\n\t0x18068: 0x4031b420, 0x18069: 0x00300888, 0x1806a: 0x40301220, 0x1806b: 0x40304220,\n\t0x1806c: 0x00304a88, 0x1806d: 0x40304a20, 0x1806e: 0x00305288, 0x1806f: 0x00306e83,\n\t0x18070: 0x40306e20, 0x18071: 0x0030b488, 0x18072: 0x0030cc88, 0x18073: 0x00311888,\n\t0x18074: 0x40311820, 0x18075: 0x00313488, 0x18076: 0x40313420, 0x18077: 0x00316488,\n\t0x18078: 0x00316e88, 0x18079: 0x40316e20, 0x1807a: 0x40317820, 0x1807b: 0x4031a620,\n\t0x1807c: 0x0031bc88, 0x1807d: 0x4031bc20, 0x1807e: 0xe0000fc9, 0x1807f: 0x40319420,\n\t// Block 0x602, offset 0x18080\n\t0x18080: 0x40321220, 0x18081: 0x40321a20, 0x18082: 0x40322220, 0x18083: 0x40322a20,\n\t0x18084: 0xe0000ad5, 0x18085: 0xe0000ad1, 0x18086: 0xe0000acd, 0x18087: 0xf0000a0a,\n\t0x18088: 0xf000040a, 0x18089: 0xf0000404, 0x1808a: 0xf0000a0a, 0x1808b: 0xf000040a,\n\t0x1808c: 0xf0000404, 0x1808d: 0xe0000947, 0x1808e: 0xe0000944, 0x1808f: 0xe0000c3d,\n\t0x18090: 0xe0000c3a, 0x18091: 0xe0000dcc, 0x18092: 0xe0000dc9, 0x18093: 0xe0000ff3,\n\t0x18094: 0xe0000ff0, 0x18095: 0xe000101e, 0x18096: 0xe000101a, 0x18097: 0xe000b275,\n\t0x18098: 0xe000b271, 0x18099: 0xe0001016, 0x1809a: 0xe0001012, 0x1809b: 0xe000100e,\n\t0x1809c: 0xe000100a, 0x1809d: 0x402cae20, 0x1809e: 0xe0000962, 0x1809f: 0xe000095e,\n\t0x180a0: 0xe0000976, 0x180a1: 0xe0000972, 0x180a2: 0xe00009f4, 0x180a3: 0xe00009ef,\n\t0x180a4: 0x002d3a88, 0x180a5: 0x402d3a20, 0x180a6: 0xe0000bbe, 0x180a7: 0xe0000bbb,\n\t0x180a8: 0xe0000c99, 0x180a9: 0xe0000c96, 0x180aa: 0xe0000e20, 0x180ab: 0xe0000e1d,\n\t0x180ac: 0xe0000e27, 0x180ad: 0xe0000e23, 0x180ae: 0xe0001162, 0x180af: 0xe000115f,\n\t0x180b0: 0xe0000c8d, 0x180b1: 0xf0000a0a, 0x180b2: 0xf000040a, 0x180b3: 0xf0000404,\n\t0x180b4: 0xe000b138, 0x180b5: 0xe000b135, 0x180b6: 0x002d7888, 0x180b7: 0x00319488,\n\t0x180b8: 0xe0000d57, 0x180b9: 0xe0000d54, 0x180ba: 0xe000b0a5, 0x180bb: 0xe000b0a1,\n\t0x180bc: 0xe000b0ae, 0x180bd: 0xe000b0a9, 0x180be: 0xe000b1d3, 0x180bf: 0xe000b1cf,\n\t// Block 0x603, offset 0x180c0\n\t0x180c0: 0xe000098f, 0x180c1: 0xe000098c, 0x180c2: 0xe0000995, 0x180c3: 0xe0000992,\n\t0x180c4: 0xe0000b62, 0x180c5: 0xe0000b5f, 0x180c6: 0xe0000b68, 0x180c7: 0xe0000b65,\n\t0x180c8: 0xe0000c6c, 0x180c9: 0xe0000c69, 0x180ca: 0xe0000c72, 0x180cb: 0xe0000c6f,\n\t0x180cc: 0xe0000e4a, 0x180cd: 0xe0000e47, 0x180ce: 0xe0000e50, 0x180cf: 0xe0000e4d,\n\t0x180d0: 0xe0000ee8, 0x180d1: 0xe0000ee5, 0x180d2: 0xe0000eee, 0x180d3: 0xe0000eeb,\n\t0x180d4: 0xe0001053, 0x180d5: 0xe0001050, 0x180d6: 0xe0001059, 0x180d7: 0xe0001056,\n\t0x180d8: 0xe0000f61, 0x180d9: 0xe0000f5e, 0x180da: 0xe0000fa5, 0x180db: 0xe0000fa2,\n\t0x180dc: 0x00312288, 0x180dd: 0x40312220, 0x180de: 0xe0000bf4, 0x180df: 0xe0000bf1,\n\t0x180e0: 0x002ebc88, 0x180e1: 0x402c8c20, 0x180e2: 0x002f2288, 0x180e3: 0x402f2220,\n\t0x180e4: 0x00314088, 0x180e5: 0x40314020, 0x180e6: 0xe000096f, 0x180e7: 0xe000096c,\n\t0x180e8: 0xe0000b32, 0x180e9: 0xe0000b2f, 0x180ea: 0xe0000dd9, 0x180eb: 0xe0000dd5,\n\t0x180ec: 0xe000b1bf, 0x180ed: 0xe000b1bb, 0x180ee: 0xe0000e04, 0x180ef: 0xe0000e01,\n\t0x180f0: 0xe0000e0b, 0x180f1: 0xe0000e07, 0x180f2: 0xe0001129, 0x180f3: 0xe0001126,\n\t0x180f4: 0x402e5e20, 0x180f5: 0x402ed020, 0x180f6: 0x40305a20, 0x180f7: 0x402dd420,\n\t0x180f8: 0xe0000abf, 0x180f9: 0xe0000ec4, 0x180fa: 0x002be888, 0x180fb: 0x002c4488,\n\t0x180fc: 0x402c4420, 0x180fd: 0x002e3888, 0x180fe: 0x00303e88, 0x180ff: 0x402ffc20,\n\t// Block 0x604, offset 0x18100\n\t0x18100: 0xae603502, 0x18101: 0xae603802, 0x18102: 0xae603c02, 0x18103: 0xae603702,\n\t0x18104: 0xae605b02, 0x18105: 0xae606302, 0x18106: 0xae603702, 0x18107: 0xae605202,\n\t0x18108: 0xae604702, 0x18109: 0xae603602, 0x1810a: 0xae604302, 0x1810b: 0xae604d02,\n\t0x1810c: 0xae604102, 0x1810d: 0xae605f02, 0x1810e: 0xae605f02, 0x1810f: 0xae606502,\n\t0x18110: 0xae606602, 0x18111: 0xae606702, 0x18112: 0xae605f02, 0x18113: 0xae602202,\n\t0x18114: 0xae602a02, 0x18115: 0xae805f02, 0x18116: 0xadc06002, 0x18117: 0xadc06002,\n\t0x18118: 0xadc06002, 0x18119: 0xadc06002, 0x1811a: 0xae805f02, 0x1811b: 0xad806802,\n\t0x1811c: 0xadc06002, 0x1811d: 0xadc06002, 0x1811e: 0xadc06002, 0x1811f: 0xadc06002,\n\t0x18120: 0xadc06002, 0x18121: 0xaca06e02, 0x18122: 0xaca06f02, 0x18123: 0xae603902,\n\t0x18124: 0xadc07502, 0x18125: 0xadc07602, 0x18126: 0xadc07702, 0x18127: 0xaca05602,\n\t0x18128: 0xaca05902, 0x18129: 0xadc06002, 0x1812a: 0xadc06002, 0x1812b: 0xadc06002,\n\t0x1812c: 0xadc06002, 0x1812d: 0xadc07802, 0x1812e: 0xadc07902, 0x1812f: 0xadc06002,\n\t0x18130: 0xadc07a02, 0x18131: 0xadc07b02, 0x18132: 0xadc02102, 0x18133: 0xadc06002,\n\t0x18134: 0xa0107c02, 0x18135: 0xa0107d02, 0x18136: 0xa0106102, 0x18137: 0xa0106102,\n\t0x18138: 0xa0105402, 0x18139: 0xadc07e02, 0x1813a: 0xadc06002, 0x1813b: 0xadc06002,\n\t0x1813c: 0xadc06002, 0x1813d: 0xae605f02, 0x1813e: 0xae605f02, 0x1813f: 0xae605f02,\n\t// Block 0x605, offset 0x18140\n\t0x18140: 0xae603502, 0x18141: 0xae603802, 0x18142: 0xae604502, 0x18143: 0xae602202,\n\t0x18144: 0xe000b07d, 0x18145: 0xaf007f02, 0x18146: 0xae605f02, 0x18147: 0xadc06002,\n\t0x18148: 0xadc06002, 0x18149: 0xadc06002, 0x1814a: 0xae605f02, 0x1814b: 0xae605f02,\n\t0x1814c: 0xae605f02, 0x1814d: 0xadc06002, 0x1814e: 0xadc06002, 0x1814f: 0xa0000000,\n\t0x18150: 0xae605f02, 0x18151: 0xae605f02, 0x18152: 0xae605f02, 0x18153: 0xadc06002,\n\t0x18154: 0xadc06002, 0x18155: 0xadc06002, 0x18156: 0xadc06002, 0x18157: 0xae605f02,\n\t0x18158: 0xae808002, 0x18159: 0xadc06002, 0x1815a: 0xadc06002, 0x1815b: 0xae605f02,\n\t0x1815c: 0xae906002, 0x1815d: 0xaea05f02, 0x1815e: 0xaea05f02, 0x1815f: 0xae906002,\n\t0x18160: 0xaea08102, 0x18161: 0xaea08202, 0x18162: 0xae906002, 0x18163: 0x84e615ef,\n\t0x18164: 0x84e6164c, 0x18165: 0x84e616cd, 0x18166: 0x84e61771, 0x18167: 0x84e61836,\n\t0x18168: 0x84e6161d, 0x18169: 0x84e61631, 0x1816a: 0x84e616b4, 0x1816b: 0x84e61741,\n\t0x1816c: 0x84e617bd, 0x1816d: 0x84e61816, 0x1816e: 0x84e6185f, 0x1816f: 0x84e6187b,\n\t0x18170: 0x00326688, 0x18171: 0x40326620, 0x18172: 0x0032a688, 0x18173: 0x4032a620,\n\t0x18174: 0x40064020, 0x18175: 0x40064220, 0x18176: 0x00326088, 0x18177: 0x40326020,\n\t0x1817a: 0x00326c84, 0x1817b: 0x40329220,\n\t0x1817c: 0x40329020, 0x1817d: 0x40329420, 0x1817e: 0x40026220,\n\t// Block 0x606, offset 0x18180\n\t0x18184: 0x40062020, 0x18185: 0xe000b080, 0x18186: 0xe000b2f4, 0x18187: 0x40030620,\n\t0x18188: 0xe000b30e, 0x18189: 0xe000b338, 0x1818a: 0xe000b352,\n\t0x1818c: 0xe000b36c, 0x1818e: 0xe000b37e, 0x1818f: 0xe000b3ac,\n\t0x18190: 0xe000b355, 0x18191: 0x00325288, 0x18192: 0x00325488, 0x18193: 0x00325688,\n\t0x18194: 0x00325a88, 0x18195: 0x00325c88, 0x18196: 0x00326488, 0x18197: 0x00326888,\n\t0x18198: 0x00326a88, 0x18199: 0x00326c88, 0x1819a: 0x00327088, 0x1819b: 0x00327288,\n\t0x1819c: 0x00327688, 0x1819d: 0x00327888, 0x1819e: 0x00327a88, 0x1819f: 0x00327c88,\n\t0x181a0: 0x00327e88, 0x181a1: 0x00328888, 0x181a3: 0x00328e88,\n\t0x181a4: 0x00329688, 0x181a5: 0x00329888, 0x181a6: 0x00329a88, 0x181a7: 0x00329c88,\n\t0x181a8: 0x00329e88, 0x181a9: 0x0032a288, 0x181aa: 0xe000134f, 0x181ab: 0xe00013f2,\n\t0x181ac: 0xe000b2f1, 0x181ad: 0xe000b30b, 0x181ae: 0xe000b335, 0x181af: 0xe000b34f,\n\t0x181b0: 0xe000b381, 0x181b1: 0x40325220, 0x181b2: 0x40325420, 0x181b3: 0x40325620,\n\t0x181b4: 0x40325a20, 0x181b5: 0x40325c20, 0x181b6: 0x40326420, 0x181b7: 0x40326820,\n\t0x181b8: 0x40326a20, 0x181b9: 0x40326c20, 0x181ba: 0x40327020, 0x181bb: 0x40327220,\n\t0x181bc: 0x40327620, 0x181bd: 0x40327820, 0x181be: 0x40327a20, 0x181bf: 0x40327c20,\n\t// Block 0x607, offset 0x181c0\n\t0x181c0: 0x40327e20, 0x181c1: 0x40328820, 0x181c2: 0x00328e99, 0x181c3: 0x40328e20,\n\t0x181c4: 0x40329620, 0x181c5: 0x40329820, 0x181c6: 0x40329a20, 0x181c7: 0x40329c20,\n\t0x181c8: 0x40329e20, 0x181c9: 0x4032a220, 0x181ca: 0xe000134c, 0x181cb: 0xe00013ef,\n\t0x181cc: 0xe000b369, 0x181cd: 0xe000b37b, 0x181ce: 0xe000b3a9, 0x181cf: 0xe0001368,\n\t0x181d0: 0x00325484, 0x181d1: 0x00326a84, 0x181d2: 0x0032988a, 0x181d3: 0xf000020a,\n\t0x181d4: 0xf000020a, 0x181d5: 0x00329a84, 0x181d6: 0x00327e84, 0x181d7: 0xe0001364,\n\t0x181d8: 0x00328688, 0x181d9: 0x40328620, 0x181da: 0x00326288, 0x181db: 0x40326220,\n\t0x181dc: 0x00325e88, 0x181dd: 0x40325e20, 0x181de: 0x00328488, 0x181df: 0x40328420,\n\t0x181e0: 0x0032a488, 0x181e1: 0x4032a420, 0x181e2: 0x0032e888, 0x181e3: 0x4032e820,\n\t0x181e4: 0x0032f288, 0x181e5: 0x4032f220, 0x181e6: 0x0032f488, 0x181e7: 0x4032f420,\n\t0x181e8: 0x0032fa88, 0x181e9: 0x4032fa20, 0x181ea: 0x00330888, 0x181eb: 0x40330820,\n\t0x181ec: 0x00330e88, 0x181ed: 0x40330e20, 0x181ee: 0x00331688, 0x181ef: 0x40331620,\n\t0x181f0: 0x00327084, 0x181f1: 0x00328884, 0x181f2: 0x00328e84, 0x181f3: 0x40326e20,\n\t0x181f4: 0x00326a8a, 0x181f5: 0x00325c84, 0x181f6: 0x40092e20, 0x181f7: 0x0032a888,\n\t0x181f8: 0x4032a820, 0x181f9: 0x00328e8a, 0x181fa: 0x00328288, 0x181fb: 0x40328220,\n\t0x181fc: 0x40328c20, 0x181fd: 0x00329288, 0x181fe: 0x00329088, 0x181ff: 0x00329488,\n\t// Block 0x608, offset 0x18200\n\t0x18200: 0xe00009b1, 0x18201: 0xe00009ae, 0x18202: 0xe0000a22, 0x18203: 0xe0000a1f,\n\t0x18204: 0xe000b0e6, 0x18205: 0xe000b0e3, 0x18206: 0xe0000a2e, 0x18207: 0xe0000a2b,\n\t0x18208: 0xe000b0f3, 0x18209: 0xe000b0ef, 0x1820a: 0xe0000a8c, 0x1820b: 0xe0000a89,\n\t0x1820c: 0xe000b0fa, 0x1820d: 0xe000b0f7, 0x1820e: 0xe0000aa4, 0x1820f: 0xe0000aa1,\n\t0x18210: 0xe0000a92, 0x18211: 0xe0000a8f, 0x18212: 0xe0000a9e, 0x18213: 0xe0000a9b,\n\t0x18214: 0xe0000b55, 0x18215: 0xe0000b51, 0x18216: 0xe000b119, 0x18217: 0xe000b115,\n\t0x18218: 0xe0000b7c, 0x18219: 0xe0000b79, 0x1821a: 0xe0000b82, 0x1821b: 0xe0000b7f,\n\t0x1821c: 0xe0000b39, 0x1821d: 0xe0000b35, 0x1821e: 0xe0000b8c, 0x1821f: 0xe0000b89,\n\t0x18220: 0xe0000bd0, 0x18221: 0xe0000bcd, 0x18222: 0xe0000c00, 0x18223: 0xe0000bfd,\n\t0x18224: 0xe000b13e, 0x18225: 0xe000b13b, 0x18226: 0xe0000bfa, 0x18227: 0xe0000bf7,\n\t0x18228: 0xe0000c06, 0x18229: 0xe0000c03, 0x1822a: 0xe0000c12, 0x1822b: 0xe0000c0f,\n\t0x1822c: 0xe0000c7e, 0x1822d: 0xe0000c7b, 0x1822e: 0xe000b15d, 0x1822f: 0xe000b159,\n\t0x18230: 0xe000b164, 0x18231: 0xe000b161, 0x18232: 0xe000b16a, 0x18233: 0xe000b167,\n\t0x18234: 0xe0000cb1, 0x18235: 0xe0000cae, 0x18236: 0xe000b176, 0x18237: 0xe000b173,\n\t0x18238: 0xe000b17d, 0x18239: 0xe000b179, 0x1823a: 0xe0000cf2, 0x1823b: 0xe0000cef,\n\t0x1823c: 0xe0000cec, 0x1823d: 0xe0000ce9, 0x1823e: 0xe000b184, 0x1823f: 0xe000b181,\n\t// Block 0x609, offset 0x18240\n\t0x18240: 0xe0000d24, 0x18241: 0xe0000d21, 0x18242: 0xe000b18a, 0x18243: 0xe000b187,\n\t0x18244: 0xe0000d69, 0x18245: 0xe0000d66, 0x18246: 0xe000b19c, 0x18247: 0xe000b199,\n\t0x18248: 0xe0000d87, 0x18249: 0xe0000d84, 0x1824a: 0xe0000d81, 0x1824b: 0xe0000d7e,\n\t0x1824c: 0xe000b1af, 0x1824d: 0xe000b1ab, 0x1824e: 0xe000b1b7, 0x1824f: 0xe000b1b3,\n\t0x18250: 0xe0000e3d, 0x18251: 0xe0000e39, 0x18252: 0xe000b1db, 0x18253: 0xe000b1d7,\n\t0x18254: 0xe000b218, 0x18255: 0xe000b215, 0x18256: 0xe0000ead, 0x18257: 0xe0000eaa,\n\t0x18258: 0xe0000ed6, 0x18259: 0xe0000ed3, 0x1825a: 0xe000b224, 0x1825b: 0xe000b221,\n\t0x1825c: 0xe000b22b, 0x1825d: 0xe000b227, 0x1825e: 0xe0000f02, 0x1825f: 0xe0000eff,\n\t0x18260: 0xe0000f41, 0x18261: 0xe0000f3e, 0x18262: 0xe000b240, 0x18263: 0xe000b23d,\n\t0x18264: 0xe000b239, 0x18265: 0xe000b235, 0x18266: 0xe0000f3a, 0x18267: 0xe0000f36,\n\t0x18268: 0xe000b247, 0x18269: 0xe000b243, 0x1826a: 0xe0000f93, 0x1826b: 0xe0000f90,\n\t0x1826c: 0xe000b24e, 0x1826d: 0xe000b24b, 0x1826e: 0xe0000fb1, 0x1826f: 0xe0000fae,\n\t0x18270: 0xe0000fab, 0x18271: 0xe0000fa8, 0x18272: 0xe0001093, 0x18273: 0xe0001090,\n\t0x18274: 0xe000109f, 0x18275: 0xe000109c, 0x18276: 0xe0001099, 0x18277: 0xe0001096,\n\t0x18278: 0xe000b261, 0x18279: 0xe000b25d, 0x1827a: 0xe0001046, 0x1827b: 0xe0001042,\n\t0x1827c: 0xe000b294, 0x1827d: 0xe000b291, 0x1827e: 0xe000b29a, 0x1827f: 0xe000b297,\n\t// Block 0x60a, offset 0x18280\n\t0x18280: 0xe00010d2, 0x18281: 0xe00010cf, 0x18282: 0xe000b2a0, 0x18283: 0xe000b29d,\n\t0x18284: 0xe00010e1, 0x18285: 0xe00010de, 0x18286: 0xe00010e7, 0x18287: 0xe00010e4,\n\t0x18288: 0xe000b2a6, 0x18289: 0xe000b2a3, 0x1828a: 0xe00010fc, 0x1828b: 0xe00010f9,\n\t0x1828c: 0xe00010f6, 0x1828d: 0xe00010f3, 0x1828e: 0xe0001123, 0x1828f: 0xe0001120,\n\t0x18290: 0xe0001141, 0x18291: 0xe000113e, 0x18292: 0xe000b2ca, 0x18293: 0xe000b2c7,\n\t0x18294: 0xe0001159, 0x18295: 0xe0001156, 0x18296: 0xe0000c15, 0x18297: 0xe0000f8d,\n\t0x18298: 0xe00010db, 0x18299: 0xe0001111, 0x1829a: 0xf0000404, 0x1829b: 0xe0000f70,\n\t0x1829c: 0x40300420, 0x1829d: 0x40300620, 0x1829e: 0xe0000f7f, 0x1829f: 0x402c9620,\n\t0x182a0: 0xe000b09e, 0x182a1: 0xe000b09b, 0x182a2: 0xe000b08c, 0x182a3: 0xe000b089,\n\t0x182a4: 0xe000b0da, 0x182a5: 0xe000b0d7, 0x182a6: 0xe000393a, 0x182a7: 0xe0003937,\n\t0x182a8: 0xe000b0ce, 0x182a9: 0xe000b0cb, 0x182aa: 0xe000b0d4, 0x182ab: 0xe000b0d1,\n\t0x182ac: 0xe000b0e0, 0x182ad: 0xe000b0dd, 0x182ae: 0xe000b0c2, 0x182af: 0xe000b0bf,\n\t0x182b0: 0xe0003894, 0x182b1: 0xe0003891, 0x182b2: 0xe000b0b6, 0x182b3: 0xe000b0b3,\n\t0x182b4: 0xe000b0bc, 0x182b5: 0xe000b0b9, 0x182b6: 0xe000b0c8, 0x182b7: 0xe000b0c5,\n\t0x182b8: 0xe000b112, 0x182b9: 0xe000b10f, 0x182ba: 0xe000b100, 0x182bb: 0xe000b0fd,\n\t0x182bc: 0xe000b106, 0x182bd: 0xe000b103, 0x182be: 0xe000b12c, 0x182bf: 0xe000b129,\n\t// Block 0x60b, offset 0x182c0\n\t0x182c0: 0xe000ad47, 0x182c1: 0xe000ad44, 0x182c2: 0xe000b120, 0x182c3: 0xe000b11d,\n\t0x182c4: 0xe000b126, 0x182c5: 0xe000b123, 0x182c6: 0xe000b132, 0x182c7: 0xe000b12f,\n\t0x182c8: 0xe000b144, 0x182c9: 0xe000b141, 0x182ca: 0xe000b156, 0x182cb: 0xe000b153,\n\t0x182cc: 0xe000b1cc, 0x182cd: 0xe000b1c9, 0x182ce: 0xe000b1a2, 0x182cf: 0xe000b19f,\n\t0x182d0: 0xe000b1ee, 0x182d1: 0xe000b1eb, 0x182d2: 0xe000ad65, 0x182d3: 0xe000ad62,\n\t0x182d4: 0xe000b1e2, 0x182d5: 0xe000b1df, 0x182d6: 0xe000b1e8, 0x182d7: 0xe000b1e5,\n\t0x182d8: 0xe000b1f4, 0x182d9: 0xe000b1f1, 0x182da: 0xe000b20c, 0x182db: 0xe000b209,\n\t0x182dc: 0xe000b1fa, 0x182dd: 0xe000b1f7, 0x182de: 0xe000b200, 0x182df: 0xe000b1fd,\n\t0x182e0: 0xe000b206, 0x182e1: 0xe000b203, 0x182e2: 0xe000b212, 0x182e3: 0xe000b20f,\n\t0x182e4: 0xe000b26e, 0x182e5: 0xe000b26b, 0x182e6: 0xe000b254, 0x182e7: 0xe000b251,\n\t0x182e8: 0xe000b288, 0x182e9: 0xe000b285, 0x182ea: 0xe0002958, 0x182eb: 0xe0002955,\n\t0x182ec: 0xe000b27c, 0x182ed: 0xe000b279, 0x182ee: 0xe000b282, 0x182ef: 0xe000b27f,\n\t0x182f0: 0xe000b28e, 0x182f1: 0xe000b28b, 0x182f2: 0xe0001108, 0x182f3: 0xe0001105,\n\t0x182f4: 0xe000b2be, 0x182f5: 0xe000b2bb, 0x182f6: 0xe000b2ac, 0x182f7: 0xe000b2a9,\n\t0x182f8: 0xe000b2b2, 0x182f9: 0xe000b2af, 0x182fa: 0xe0000d0a, 0x182fb: 0xe0000d07,\n\t0x182fc: 0x0030d888, 0x182fd: 0x4030d820, 0x182fe: 0x00312088, 0x182ff: 0x40312020,\n\t// Block 0x60c, offset 0x18300\n\t0x18300: 0xe0001165, 0x18301: 0xe00011a9, 0x18302: 0xe000117d, 0x18303: 0xe00011c1,\n\t0x18304: 0xe000b2cd, 0x18305: 0xe000b2df, 0x18306: 0xe000118f, 0x18307: 0xe00011d3,\n\t0x18308: 0xe0001168, 0x18309: 0xe00011ac, 0x1830a: 0xe0001181, 0x1830b: 0xe00011c5,\n\t0x1830c: 0xe000b2d1, 0x1830d: 0xe000b2e3, 0x1830e: 0xe0001193, 0x1830f: 0xe00011d7,\n\t0x18310: 0xe000121a, 0x18311: 0xe0001230, 0x18312: 0xe0001228, 0x18313: 0xe000123e,\n\t0x18314: 0xe000b2fb, 0x18315: 0xe000b303,\n\t0x18318: 0xe000121d, 0x18319: 0xe0001233, 0x1831a: 0xe000122c, 0x1831b: 0xe0001242,\n\t0x1831c: 0xe000b2ff, 0x1831d: 0xe000b307,\n\t0x18320: 0xe0001252, 0x18321: 0xe0001296, 0x18322: 0xe000126a, 0x18323: 0xe00012ae,\n\t0x18324: 0xe000b311, 0x18325: 0xe000b323, 0x18326: 0xe000127c, 0x18327: 0xe00012c0,\n\t0x18328: 0xe0001255, 0x18329: 0xe0001299, 0x1832a: 0xe000126e, 0x1832b: 0xe00012b2,\n\t0x1832c: 0xe000b315, 0x1832d: 0xe000b327, 0x1832e: 0xe0001280, 0x1832f: 0xe00012c4,\n\t0x18330: 0xe00012fb, 0x18331: 0xe0001319, 0x18332: 0xe0001309, 0x18333: 0xe0001327,\n\t0x18334: 0xe000b33f, 0x18335: 0xe000b347, 0x18336: 0xe0001311, 0x18337: 0xe000132f,\n\t0x18338: 0xe00012fe, 0x18339: 0xe000131c, 0x1833a: 0xe000130d, 0x1833b: 0xe000132b,\n\t0x1833c: 0xe000b343, 0x1833d: 0xe000b34b, 0x1833e: 0xe0001315, 0x1833f: 0xe0001333,\n\t// Block 0x60d, offset 0x18340\n\t0x18340: 0xe000136c, 0x18341: 0xe0001382, 0x18342: 0xe000137a, 0x18343: 0xe0001390,\n\t0x18344: 0xe000b359, 0x18345: 0xe000b361,\n\t0x18348: 0xe000136f, 0x18349: 0xe0001385, 0x1834a: 0xe000137e, 0x1834b: 0xe0001394,\n\t0x1834c: 0xe000b35d, 0x1834d: 0xe000b365,\n\t0x18350: 0xe00013ad, 0x18351: 0xe00013bc, 0x18352: 0xe00013b4, 0x18353: 0xe00013ca,\n\t0x18354: 0xe000b36f, 0x18355: 0xe000b373, 0x18356: 0xe00013b8, 0x18357: 0xe00013d2,\n\t0x18359: 0xe00013bf, 0x1835b: 0xe00013ce,\n\t0x1835d: 0xe000b377, 0x1835f: 0xe00013d6,\n\t0x18360: 0xe0001407, 0x18361: 0xe000144b, 0x18362: 0xe000141f, 0x18363: 0xe0001463,\n\t0x18364: 0xe000b385, 0x18365: 0xe000b397, 0x18366: 0xe0001431, 0x18367: 0xe0001475,\n\t0x18368: 0xe000140a, 0x18369: 0xe000144e, 0x1836a: 0xe0001423, 0x1836b: 0xe0001467,\n\t0x1836c: 0xe000b389, 0x1836d: 0xe000b39b, 0x1836e: 0xe0001435, 0x1836f: 0xe0001479,\n\t0x18370: 0xe00011f7, 0x18371: 0xe000b2f1, 0x18372: 0xe000124c, 0x18373: 0xe000b30b,\n\t0x18374: 0xe00012e4, 0x18375: 0xe000b335, 0x18376: 0xe000133d, 0x18377: 0xe000b34f,\n\t0x18378: 0xe000139e, 0x18379: 0xe000b369, 0x1837a: 0xe00013e0, 0x1837b: 0xe000b37b,\n\t0x1837c: 0xe0001499, 0x1837d: 0xe000b3a9,\n\t// Block 0x60e, offset 0x18380\n\t0x18380: 0xe00011a1, 0x18381: 0xe00011e5, 0x18382: 0xe0001185, 0x18383: 0xe00011c9,\n\t0x18384: 0xe000b2d5, 0x18385: 0xe000b2e7, 0x18386: 0xe0001197, 0x18387: 0xe00011db,\n\t0x18388: 0xe00011a5, 0x18389: 0xe00011e9, 0x1838a: 0xe000118a, 0x1838b: 0xe00011ce,\n\t0x1838c: 0xe000b2da, 0x1838d: 0xe000b2ec, 0x1838e: 0xe000119c, 0x1838f: 0xe00011e0,\n\t0x18390: 0xe000128e, 0x18391: 0xe00012d2, 0x18392: 0xe0001272, 0x18393: 0xe00012b6,\n\t0x18394: 0xe000b319, 0x18395: 0xe000b32b, 0x18396: 0xe0001284, 0x18397: 0xe00012c8,\n\t0x18398: 0xe0001292, 0x18399: 0xe00012d6, 0x1839a: 0xe0001277, 0x1839b: 0xe00012bb,\n\t0x1839c: 0xe000b31e, 0x1839d: 0xe000b330, 0x1839e: 0xe0001289, 0x1839f: 0xe00012cd,\n\t0x183a0: 0xe0001443, 0x183a1: 0xe0001487, 0x183a2: 0xe0001427, 0x183a3: 0xe000146b,\n\t0x183a4: 0xe000b38d, 0x183a5: 0xe000b39f, 0x183a6: 0xe0001439, 0x183a7: 0xe000147d,\n\t0x183a8: 0xe0001447, 0x183a9: 0xe000148b, 0x183aa: 0xe000142c, 0x183ab: 0xe0001470,\n\t0x183ac: 0xe000b392, 0x183ad: 0xe000b3a4, 0x183ae: 0xe000143e, 0x183af: 0xe0001482,\n\t0x183b0: 0xe0001201, 0x183b1: 0xe000120e, 0x183b2: 0xe00011fd, 0x183b3: 0xe0001214,\n\t0x183b4: 0xe000b2f7, 0x183b6: 0xe0001207, 0x183b7: 0xe000120a,\n\t0x183b8: 0xe0001204, 0x183b9: 0xe0001211, 0x183ba: 0xe00011fa, 0x183bb: 0xe000b2f4,\n\t0x183bc: 0xe0001217, 0x183bd: 0x40063620, 0x183be: 0x40326c20, 0x183bf: 0x40063620,\n\t// Block 0x60f, offset 0x183c0\n\t0x183c0: 0x40063a20, 0x183c1: 0xe00000b1, 0x183c2: 0xe00012ea, 0x183c3: 0xe00012f5,\n\t0x183c4: 0xe000b33b, 0x183c6: 0xe00012ee, 0x183c7: 0xe00012f1,\n\t0x183c8: 0xe000124f, 0x183c9: 0xe000b30e, 0x183ca: 0xe00012e7, 0x183cb: 0xe000b338,\n\t0x183cc: 0xe00012f8, 0x183cd: 0xe00000b7, 0x183ce: 0xe000b083, 0x183cf: 0xe00000ba,\n\t0x183d0: 0xe0001343, 0x183d1: 0xe000135e, 0x183d2: 0xe0001356, 0x183d3: 0xe000b355,\n\t0x183d6: 0xe0001349, 0x183d7: 0xe000135a,\n\t0x183d8: 0xe0001346, 0x183d9: 0xe0001361, 0x183da: 0xe0001340, 0x183db: 0xe000b352,\n\t0x183dd: 0xe00000c0, 0x183de: 0xe000b086, 0x183df: 0xe00000c3,\n\t0x183e0: 0xe00013e6, 0x183e1: 0xe0001401, 0x183e2: 0xe00013f9, 0x183e3: 0xe000b381,\n\t0x183e4: 0xe00013a4, 0x183e5: 0xe00013a7, 0x183e6: 0xe00013ec, 0x183e7: 0xe00013fd,\n\t0x183e8: 0xe00013e9, 0x183e9: 0xe0001404, 0x183ea: 0xe00013e3, 0x183eb: 0xe000b37e,\n\t0x183ec: 0xe00013aa, 0x183ed: 0xe00000ae, 0x183ee: 0xe000b080, 0x183ef: 0x40061e20,\n\t0x183f2: 0xe000149f, 0x183f3: 0xe00014aa,\n\t0x183f4: 0xe000b3af, 0x183f6: 0xe00014a3, 0x183f7: 0xe00014a6,\n\t0x183f8: 0xe00013a1, 0x183f9: 0xe000b36c, 0x183fa: 0xe000149c, 0x183fb: 0xe000b3ac,\n\t0x183fc: 0xe00014ad, 0x183fd: 0x40062020, 0x183fe: 0x40063820,\n\t// Block 0x610, offset 0x18400\n\t0x18400: 0xa0000000, 0x18401: 0xa0000000, 0x18402: 0xa0000000, 0x18403: 0xa0000000,\n\t0x18404: 0xa0000000, 0x18405: 0xa0000000, 0x18406: 0xa0000000, 0x18407: 0xa0000000,\n\t0x18408: 0xa0000000, 0x18409: 0x40020020, 0x1840a: 0x40020220, 0x1840b: 0x40020420,\n\t0x1840c: 0x40020620, 0x1840d: 0x40020820, 0x1840e: 0xa0000000, 0x1840f: 0xa0000000,\n\t0x18410: 0xa0000000, 0x18411: 0xa0000000, 0x18412: 0xa0000000, 0x18413: 0xa0000000,\n\t0x18414: 0xa0000000, 0x18415: 0xa0000000, 0x18416: 0xa0000000, 0x18417: 0xa0000000,\n\t0x18418: 0xa0000000, 0x18419: 0xa0000000, 0x1841a: 0xa0000000, 0x1841b: 0xa0000000,\n\t0x1841c: 0xa0000000, 0x1841d: 0xa0000000, 0x1841e: 0xa0000000, 0x1841f: 0xa0000000,\n\t0x18420: 0x40021220, 0x18421: 0x4002ba20, 0x18422: 0x4003e020, 0x18423: 0x4004ea20,\n\t0x18424: 0x4027de20, 0x18425: 0x4004ec20, 0x18426: 0x4004e620, 0x18427: 0x4003d220,\n\t0x18428: 0x4003f420, 0x18429: 0x4003f620, 0x1842a: 0x4004d820, 0x1842b: 0x40093820,\n\t0x1842c: 0x40024020, 0x1842d: 0x40021a20, 0x1842e: 0x4002e420, 0x1842f: 0x4004e220,\n\t0x18430: 0x4029cc20, 0x18431: 0x4029ce20, 0x18432: 0x4029d020, 0x18433: 0x4029d220,\n\t0x18434: 0x4029d420, 0x18435: 0x4029d620, 0x18436: 0x4029d820, 0x18437: 0x4029da20,\n\t0x18438: 0x4029dc20, 0x18439: 0x4029de20, 0x1843a: 0x40026c20, 0x1843b: 0x40026220,\n\t0x1843c: 0x40094020, 0x1843d: 0x40094220, 0x1843e: 0x40094420, 0x1843f: 0x4002c420,\n\t// Block 0x611, offset 0x18440\n\t0x18440: 0x4004d620, 0x18441: 0x002bde88, 0x18442: 0x002c0a88, 0x18443: 0x002c3a88,\n\t0x18444: 0x002c6288, 0x18445: 0x002c9888, 0x18446: 0x002d0888, 0x18447: 0x002d2288,\n\t0x18448: 0x002d6888, 0x18449: 0x002d9a88, 0x1844a: 0x002dcc88, 0x1844b: 0x002dfe88,\n\t0x1844c: 0xc0030002, 0x1844d: 0x002e8288, 0x1844e: 0x002e9e88, 0x1844f: 0x002ee288,\n\t0x18450: 0x002f2c88, 0x18451: 0x002f5688, 0x18452: 0x002f7a88, 0x18453: 0x002fe688,\n\t0x18454: 0x00302c88, 0x18455: 0x00306c88, 0x18456: 0x0030be88, 0x18457: 0x0030e288,\n\t0x18458: 0x0030f688, 0x18459: 0x00310088, 0x1845a: 0x00312a88, 0x1845b: 0x4003f820,\n\t0x1845c: 0x4004e420, 0x1845d: 0x4003fa20, 0x1845e: 0x40062420, 0x1845f: 0x40021620,\n\t0x18460: 0x40061e20, 0x18461: 0xcfa39ac2, 0x18462: 0x402c0a20, 0x18463: 0xcfa809b1,\n\t0x18464: 0x402c6220, 0x18465: 0xcfaa9b41, 0x18466: 0x402d0820, 0x18467: 0x402d2220,\n\t0x18468: 0x402d6820, 0x18469: 0xcfac9b51, 0x1846a: 0x402dcc20, 0x1846b: 0x402dfe20,\n\t0x1846c: 0xc0000002, 0x1846d: 0x402e8220, 0x1846e: 0x402e9e20, 0x1846f: 0xcfae9b62,\n\t0x18470: 0x402f2c20, 0x18471: 0x402f5620, 0x18472: 0x402f7a20, 0x18473: 0xcfb39be1,\n\t0x18474: 0x40302c20, 0x18475: 0xcfb59c02, 0x18476: 0x4030be20, 0x18477: 0x4030e220,\n\t0x18478: 0x4030f620, 0x18479: 0x40310020, 0x1847a: 0x40312a20, 0x1847b: 0x4003fc20,\n\t0x1847c: 0x40094820, 0x1847d: 0x4003fe20, 0x1847e: 0x40094c20, 0x1847f: 0xa0000000,\n\t// Block 0x612, offset 0x18480\n\t0x18480: 0xe00008f5, 0x18481: 0xe00008ef, 0x18482: 0xe0000921, 0x18483: 0xe0000969,\n\t0x18484: 0xe000095b, 0x18485: 0xe000094d, 0x18486: 0xe00009dd, 0x18487: 0xe0000a53,\n\t0x18488: 0xe0000ae8, 0x18489: 0xe0000ae2, 0x1848a: 0xe0000af4, 0x1848b: 0xe0000b20,\n\t0x1848c: 0xe0000c2b, 0x1848d: 0xe0000c25, 0x1848e: 0xe0000c37, 0x1848f: 0xe0000c43,\n\t0x18490: 0xe0000ab3, 0x18491: 0xe0000d63, 0x18492: 0xe0000d9a, 0x18493: 0xe0000d94,\n\t0x18494: 0xe0000da6, 0x18495: 0xe0000de6, 0x18496: 0xe0000dd2, 0x18497: 0x40093e20,\n\t0x18498: 0xe0000e12, 0x18499: 0xe0000fe1, 0x1849a: 0xe0000fdb, 0x1849b: 0xe0000fed,\n\t0x1849c: 0xe0000fff, 0x1849d: 0xe0001102, 0x1849e: 0x00318888, 0x1849f: 0xe0000f7b,\n\t0x184a0: 0xe00008f2, 0x184a1: 0xe00008ec, 0x184a2: 0xe000091e, 0x184a3: 0xe0000966,\n\t0x184a4: 0xcfa69b21, 0x184a5: 0xe000094a, 0x184a6: 0xe00009d5, 0x184a7: 0xe0000a4d,\n\t0x184a8: 0xe0000ae5, 0x184a9: 0xe0000adf, 0x184aa: 0xe0000af1, 0x184ab: 0xe0000b1d,\n\t0x184ac: 0xe0000c28, 0x184ad: 0xe0000c22, 0x184ae: 0xe0000c34, 0x184af: 0xe0000c40,\n\t0x184b0: 0xe0000aad, 0x184b1: 0xe0000d60, 0x184b2: 0xe0000d97, 0x184b3: 0xe0000d91,\n\t0x184b4: 0xe0000da3, 0x184b5: 0xe0000de3, 0x184b6: 0xcfb19bc1, 0x184b7: 0x40093c20,\n\t0x184b8: 0xe0000e0f, 0x184b9: 0xe0000fde, 0x184ba: 0xe0000fd8, 0x184bb: 0xe0000fea,\n\t0x184bc: 0xcfb89c61, 0x184bd: 0xe00010ff, 0x184be: 0x40318820, 0x184bf: 0xe0001114,\n\t// Block 0x613, offset 0x184c0\n\t0x184c0: 0xa0000000, 0x184c1: 0xa0000000, 0x184c2: 0xa0000000, 0x184c3: 0xa0000000,\n\t0x184c4: 0xa0000000, 0x184c5: 0xa0000000, 0x184c6: 0xa0000000, 0x184c7: 0xa0000000,\n\t0x184c8: 0xa0000000, 0x184c9: 0x40020020, 0x184ca: 0x40020220, 0x184cb: 0x40020420,\n\t0x184cc: 0x40020620, 0x184cd: 0x40020820, 0x184ce: 0xa0000000, 0x184cf: 0xa0000000,\n\t0x184d0: 0xa0000000, 0x184d1: 0xa0000000, 0x184d2: 0xa0000000, 0x184d3: 0xa0000000,\n\t0x184d4: 0xa0000000, 0x184d5: 0xa0000000, 0x184d6: 0xa0000000, 0x184d7: 0xa0000000,\n\t0x184d8: 0xa0000000, 0x184d9: 0xa0000000, 0x184da: 0xa0000000, 0x184db: 0xa0000000,\n\t0x184dc: 0xa0000000, 0x184dd: 0xa0000000, 0x184de: 0xa0000000, 0x184df: 0xa0000000,\n\t0x184e0: 0x40021220, 0x184e1: 0x4002ba20, 0x184e2: 0x4003e020, 0x184e3: 0x4004ea20,\n\t0x184e4: 0x4027de20, 0x184e5: 0x4004ec20, 0x184e6: 0x4004e620, 0x184e7: 0x4003d220,\n\t0x184e8: 0x4003f420, 0x184e9: 0x4003f620, 0x184ea: 0x4004d820, 0x184eb: 0x40093820,\n\t0x184ec: 0x40024020, 0x184ed: 0x40021a20, 0x184ee: 0x4002e420, 0x184ef: 0x4004e220,\n\t0x184f0: 0x4029cc20, 0x184f1: 0x4029ce20, 0x184f2: 0x4029d020, 0x184f3: 0x4029d220,\n\t0x184f4: 0x4029d420, 0x184f5: 0x4029d620, 0x184f6: 0x4029d820, 0x184f7: 0x4029da20,\n\t0x184f8: 0x4029dc20, 0x184f9: 0x4029de20, 0x184fa: 0x40026c20, 0x184fb: 0x40026220,\n\t0x184fc: 0x40094020, 0x184fd: 0x40094220, 0x184fe: 0x40094420, 0x184ff: 0x4002c420,\n\t// Block 0x614, offset 0x18500\n\t0x18500: 0x4004d620, 0x18501: 0x002bde88, 0x18502: 0x002c0a88, 0x18503: 0x002c3a88,\n\t0x18504: 0x002c6288, 0x18505: 0xce6d3081, 0x18506: 0x002d0888, 0x18507: 0xc52b2692,\n\t0x18508: 0x002d6888, 0x18509: 0x002d9a88, 0x1850a: 0x002dcc88, 0x1850b: 0x002dfe88,\n\t0x1850c: 0xc0030002, 0x1850d: 0x002e8288, 0x1850e: 0x002e9e88, 0x1850f: 0xc33f3081,\n\t0x18510: 0x002f2c88, 0x18511: 0x002f5688, 0x18512: 0x002f7a88, 0x18513: 0xc3433081,\n\t0x18514: 0x00302c88, 0x18515: 0x00306c88, 0x18516: 0x0030be88, 0x18517: 0x0030e288,\n\t0x18518: 0x0030f688, 0x18519: 0x00310088, 0x1851a: 0x00312a88, 0x1851b: 0x4003f820,\n\t0x1851c: 0x4004e420, 0x1851d: 0x4003fa20, 0x1851e: 0x40062420, 0x1851f: 0x40021620,\n\t0x18520: 0x40061e20, 0x18521: 0x402bde20, 0x18522: 0x402c0a20, 0x18523: 0x402c3a20,\n\t0x18524: 0x402c6220, 0x18525: 0xce6b3081, 0x18526: 0x402d0820, 0x18527: 0xc3372681,\n\t0x18528: 0x402d6820, 0x18529: 0x402d9a20, 0x1852a: 0x402dcc20, 0x1852b: 0x402dfe20,\n\t0x1852c: 0xc0000002, 0x1852d: 0x402e8220, 0x1852e: 0x402e9e20, 0x1852f: 0xc33d3081,\n\t0x18530: 0x402f2c20, 0x18531: 0x402f5620, 0x18532: 0x402f7a20, 0x18533: 0xc3413081,\n\t0x18534: 0x40302c20, 0x18535: 0x40306c20, 0x18536: 0x4030be20, 0x18537: 0x4030e220,\n\t0x18538: 0x4030f620, 0x18539: 0x40310020, 0x1853a: 0x40312a20, 0x1853b: 0x4003fc20,\n\t0x1853c: 0x40094820, 0x1853d: 0x4003fe20, 0x1853e: 0x40094c20, 0x1853f: 0xa0000000,\n\t// Block 0x615, offset 0x18540\n\t0x18540: 0xe0000d24, 0x18541: 0xe0000d21, 0x18542: 0xe0000d2a, 0x18543: 0xe0000d27,\n\t0x18544: 0xe0000d69, 0x18545: 0xe0000d66, 0x18546: 0xe0000d7b, 0x18547: 0xe0000d78,\n\t0x18548: 0xe0000d87, 0x18549: 0xe0000d84, 0x1854a: 0xe0000d81, 0x1854b: 0xe0000d7e,\n\t0x1854c: 0xe0000ded, 0x1854d: 0xe0000de9, 0x1854e: 0xe0000df5, 0x1854f: 0xe0000df1,\n\t0x18550: 0xe0000e3d, 0x18551: 0xe0000e39, 0x18552: 0xe0000e35, 0x18553: 0xe0000e31,\n\t0x18554: 0xe0000ea7, 0x18555: 0xe0000ea4, 0x18556: 0xe0000ead, 0x18557: 0xe0000eaa,\n\t0x18558: 0xe0000ed6, 0x18559: 0xe0000ed3, 0x1855a: 0xe0000ef4, 0x1855b: 0xe0000ef1,\n\t0x1855c: 0xe0000efb, 0x1855d: 0xe0000ef7, 0x1855e: 0xe0000f02, 0x1855f: 0xe0000eff,\n\t0x18560: 0xe0000f41, 0x18561: 0xe0000f3e, 0x18562: 0x002fe883, 0x18563: 0x402fe820,\n\t0x18564: 0xe0000f26, 0x18565: 0xe0000f22, 0x18566: 0xe0000f3a, 0x18567: 0xe0000f36,\n\t0x18568: 0xe000296a, 0x18569: 0xe0002967, 0x1856a: 0xe0000f93, 0x1856b: 0xe0000f90,\n\t0x1856c: 0xe0000f9f, 0x1856d: 0xe0000f9c, 0x1856e: 0xe0000fb1, 0x1856f: 0xe0000fae,\n\t0x18570: 0xe0000fab, 0x18571: 0xe0000fa8, 0x18572: 0xe0001093, 0x18573: 0xe0001090,\n\t0x18574: 0xe000109f, 0x18575: 0xe000109c, 0x18576: 0xe0001099, 0x18577: 0xe0001096,\n\t0x18578: 0xe0001032, 0x18579: 0xe000102e, 0x1857a: 0xe0001046, 0x1857b: 0xe0001042,\n\t0x1857c: 0xe00010a9, 0x1857d: 0xe00010a6, 0x1857e: 0xe00010af, 0x1857f: 0xe00010ac,\n\t// Block 0x616, offset 0x18580\n\t0x18580: 0xe00010d2, 0x18581: 0xe00010cf, 0x18582: 0xe00010cc, 0x18583: 0xe00010c9,\n\t0x18584: 0xe00010e1, 0x18585: 0xe00010de, 0x18586: 0xe00010e7, 0x18587: 0xe00010e4,\n\t0x18588: 0xe00010ed, 0x18589: 0xe00010ea, 0x1858a: 0xe00010fc, 0x1858b: 0xe00010f9,\n\t0x1858c: 0xe00010f6, 0x1858d: 0xe00010f3, 0x1858e: 0xe0001123, 0x1858f: 0xe0001120,\n\t0x18590: 0xe0001141, 0x18591: 0xe000113e, 0x18592: 0xe0001153, 0x18593: 0xe0001150,\n\t0x18594: 0xe0001159, 0x18595: 0xe0001156, 0x18596: 0xe0000c15, 0x18597: 0xe0000f8d,\n\t0x18598: 0xe00010db, 0x18599: 0xe0001111, 0x1859a: 0xf0000404, 0x1859b: 0xe0000f70,\n\t0x1859c: 0x40300420, 0x1859d: 0x40300620, 0x1859e: 0xe0000f7f, 0x1859f: 0x402c9620,\n\t0x185a0: 0xe000099b, 0x185a1: 0xe0000998, 0x185a2: 0xe0000989, 0x185a3: 0xe0000986,\n\t0x185a4: 0xe0000928, 0x185a5: 0xe0000924, 0x185a6: 0xe0000930, 0x185a7: 0xe000092c,\n\t0x185a8: 0xe0000940, 0x185a9: 0xe000093c, 0x185aa: 0xe0000938, 0x185ab: 0xe0000934,\n\t0x185ac: 0xe00009aa, 0x185ad: 0xe00009a6, 0x185ae: 0xe0000902, 0x185af: 0xe00008fe,\n\t0x185b0: 0xe000090a, 0x185b1: 0xe0000906, 0x185b2: 0xe000091a, 0x185b3: 0xe0000916,\n\t0x185b4: 0xe0000912, 0x185b5: 0xe000090e, 0x185b6: 0xe00009a2, 0x185b7: 0xe000099e,\n\t0x185b8: 0x002c9a83, 0x185b9: 0x402c9a20, 0x185ba: 0xe0000b5c, 0x185bb: 0xe0000b59,\n\t0x185bc: 0xe0000b26, 0x185bd: 0xe0000b23, 0x185be: 0xe0000afb, 0x185bf: 0xe0000af7,\n\t// Block 0x617, offset 0x185c0\n\t0x185c0: 0xe0000b03, 0x185c1: 0xe0000aff, 0x185c2: 0xe0000b13, 0x185c3: 0xe0000b0f,\n\t0x185c4: 0xe0000b0b, 0x185c5: 0xe0000b07, 0x185c6: 0xe000b3c5, 0x185c7: 0xe000b3c2,\n\t0x185c8: 0xe0000c66, 0x185c9: 0xe0000c63, 0x185ca: 0xe0000c78, 0x185cb: 0xe0000c75,\n\t0x185cc: 0x002ee483, 0x185cd: 0x402ee420, 0x185ce: 0xe0000e44, 0x185cf: 0xe0000e41,\n\t0x185d0: 0xe0000dad, 0x185d1: 0xe0000da9, 0x185d2: 0xe0000db5, 0x185d3: 0xe0000db1,\n\t0x185d4: 0xe0000dc5, 0x185d5: 0xe0000dc1, 0x185d6: 0xe0000dbd, 0x185d7: 0xe0000db9,\n\t0x185d8: 0xe0003c96, 0x185d9: 0xe0003c93, 0x185da: 0xe0000e5d, 0x185db: 0xe0000e59,\n\t0x185dc: 0xe0000e65, 0x185dd: 0xe0000e61, 0x185de: 0xe0000e75, 0x185df: 0xe0000e71,\n\t0x185e0: 0xe0000e6d, 0x185e1: 0xe0000e69, 0x185e2: 0xe0003c9c, 0x185e3: 0xe0003c99,\n\t0x185e4: 0xe000108d, 0x185e5: 0xe000108a, 0x185e6: 0xe000104d, 0x185e7: 0xe000104a,\n\t0x185e8: 0xe0001066, 0x185e9: 0xe0001062, 0x185ea: 0xe000106e, 0x185eb: 0xe000106a,\n\t0x185ec: 0xe000107e, 0x185ed: 0xe000107a, 0x185ee: 0xe0001076, 0x185ef: 0xe0001072,\n\t0x185f0: 0xe0001086, 0x185f1: 0xe0001082, 0x185f2: 0xe0001108, 0x185f3: 0xe0001105,\n\t0x185f4: 0xe0001135, 0x185f5: 0xe0001132, 0x185f6: 0xe000112f, 0x185f7: 0xe000112c,\n\t0x185f8: 0xe000111d, 0x185f9: 0xe000111a, 0x185fa: 0xe0000d0a, 0x185fb: 0xe0000d07,\n\t0x185fc: 0x0030d888, 0x185fd: 0x4030d820, 0x185fe: 0x00312088, 0x185ff: 0x40312020,\n\t// Block 0x618, offset 0x18600\n\t0x18600: 0xa0000000, 0x18601: 0xa0000000, 0x18602: 0xa0000000, 0x18603: 0xa0000000,\n\t0x18604: 0xa0000000, 0x18605: 0xa0000000, 0x18606: 0xa0000000, 0x18607: 0xa0000000,\n\t0x18608: 0xa0000000, 0x18609: 0x40020020, 0x1860a: 0x40020220, 0x1860b: 0x40020420,\n\t0x1860c: 0x40020620, 0x1860d: 0x40020820, 0x1860e: 0xa0000000, 0x1860f: 0xa0000000,\n\t0x18610: 0xa0000000, 0x18611: 0xa0000000, 0x18612: 0xa0000000, 0x18613: 0xa0000000,\n\t0x18614: 0xa0000000, 0x18615: 0xa0000000, 0x18616: 0xa0000000, 0x18617: 0xa0000000,\n\t0x18618: 0xa0000000, 0x18619: 0xa0000000, 0x1861a: 0xa0000000, 0x1861b: 0xa0000000,\n\t0x1861c: 0xa0000000, 0x1861d: 0xa0000000, 0x1861e: 0xa0000000, 0x1861f: 0xa0000000,\n\t0x18620: 0x40021220, 0x18621: 0x4002ba20, 0x18622: 0x4003e020, 0x18623: 0x4004ea20,\n\t0x18624: 0x4027de20, 0x18625: 0x4004ec20, 0x18626: 0x4004e620, 0x18627: 0x4003d220,\n\t0x18628: 0x4003f420, 0x18629: 0x4003f620, 0x1862a: 0x4004d820, 0x1862b: 0x40093820,\n\t0x1862c: 0x40024020, 0x1862d: 0x40021a20, 0x1862e: 0x4002e420, 0x1862f: 0x4004e220,\n\t0x18630: 0x4029cc20, 0x18631: 0x4029ce20, 0x18632: 0x4029d020, 0x18633: 0x4029d220,\n\t0x18634: 0x4029d420, 0x18635: 0x4029d620, 0x18636: 0x4029d820, 0x18637: 0x4029da20,\n\t0x18638: 0x4029dc20, 0x18639: 0x4029de20, 0x1863a: 0x40026c20, 0x1863b: 0x40026220,\n\t0x1863c: 0x40094020, 0x1863d: 0x40094220, 0x1863e: 0x40094420, 0x1863f: 0x4002c420,\n\t// Block 0x619, offset 0x18640\n\t0x18640: 0x4004d620, 0x18641: 0xcfbf9c81, 0x18642: 0x002c0a88, 0x18643: 0x002c3a88,\n\t0x18644: 0x002c6288, 0x18645: 0xcfcd9cc1, 0x18646: 0x002d0888, 0x18647: 0x002d2288,\n\t0x18648: 0x002d6888, 0x18649: 0xcfe19c81, 0x1864a: 0x002dcc88, 0x1864b: 0x002dfe88,\n\t0x1864c: 0xc0030002, 0x1864d: 0xcfeb9c81, 0x1864e: 0xcff59c81, 0x1864f: 0xcfff9c81,\n\t0x18650: 0x002f2c88, 0x18651: 0x002f5688, 0x18652: 0x002f7a88, 0x18653: 0x002fe688,\n\t0x18654: 0x00302c88, 0x18655: 0xd00e9d81, 0x18656: 0x0030be88, 0x18657: 0x0030e288,\n\t0x18658: 0x0030f688, 0x18659: 0x00310088, 0x1865a: 0x00312a88, 0x1865b: 0x4003f820,\n\t0x1865c: 0x4004e420, 0x1865d: 0x4003fa20, 0x1865e: 0x40062420, 0x1865f: 0x40021620,\n\t0x18660: 0x40061e20, 0x18661: 0xcfba9c81, 0x18662: 0x402c0a20, 0x18663: 0x402c3a20,\n\t0x18664: 0x402c6220, 0x18665: 0xcfc49cc1, 0x18666: 0x402d0820, 0x18667: 0x402d2220,\n\t0x18668: 0x402d6820, 0x18669: 0xcfdc9c81, 0x1866a: 0x402dcc20, 0x1866b: 0x402dfe20,\n\t0x1866c: 0xc0000002, 0x1866d: 0xcfe69c81, 0x1866e: 0xcff09c81, 0x1866f: 0xcffa9c81,\n\t0x18670: 0x402f2c20, 0x18671: 0x402f5620, 0x18672: 0x402f7a20, 0x18673: 0x402fe620,\n\t0x18674: 0x40302c20, 0x18675: 0xd0049d81, 0x18676: 0x4030be20, 0x18677: 0x4030e220,\n\t0x18678: 0x4030f620, 0x18679: 0x40310020, 0x1867a: 0x40312a20, 0x1867b: 0x4003fc20,\n\t0x1867c: 0x40094820, 0x1867d: 0x4003fe20, 0x1867e: 0x40094c20, 0x1867f: 0xa0000000,\n\t// Block 0x61a, offset 0x18680\n\t0x18680: 0x002bde63, 0x18681: 0x002bde23, 0x18682: 0xe0000921, 0x18683: 0xe0000969,\n\t0x18684: 0xe000095b, 0x18685: 0xe000094d, 0x18686: 0xe00009dd, 0x18687: 0xe0000a53,\n\t0x18688: 0x002c9863, 0x18689: 0x002c9823, 0x1868a: 0xcfd99d51, 0x1868b: 0xe0000b20,\n\t0x1868c: 0x002d9a63, 0x1868d: 0x002d9a23, 0x1868e: 0xe0000c37, 0x1868f: 0xe0000c43,\n\t0x18690: 0xe0000ab3, 0x18691: 0xe0000d63, 0x18692: 0x002ee263, 0x18693: 0x002ee223,\n\t0x18694: 0xe0000da6, 0x18695: 0xe0000de6, 0x18696: 0xe0000dd2, 0x18697: 0x40093e20,\n\t0x18698: 0xe0000e12, 0x18699: 0x00306c63, 0x1869a: 0x00306c23, 0x1869b: 0xe0000fed,\n\t0x1869c: 0x00306d23, 0x1869d: 0xe0001102, 0x1869e: 0x00318888, 0x1869f: 0xe0000f7b,\n\t0x186a0: 0x402bde1f, 0x186a1: 0x402bde1d, 0x186a2: 0xe000091e, 0x186a3: 0xe0000966,\n\t0x186a4: 0xe0000958, 0x186a5: 0xe000094a, 0x186a6: 0xe00009d5, 0x186a7: 0xe0000a4d,\n\t0x186a8: 0x402c981f, 0x186a9: 0x402c981d, 0x186aa: 0xcfd69d51, 0x186ab: 0xe0000b1d,\n\t0x186ac: 0x402d9a1f, 0x186ad: 0x402d9a1d, 0x186ae: 0xe0000c34, 0x186af: 0xe0000c40,\n\t0x186b0: 0xe0000aad, 0x186b1: 0xe0000d60, 0x186b2: 0x402ee21f, 0x186b3: 0x402ee21d,\n\t0x186b4: 0xe0000da3, 0x186b5: 0xe0000de3, 0x186b6: 0xe0000dcf, 0x186b7: 0x40093c20,\n\t0x186b8: 0xe0000e0f, 0x186b9: 0x40306c1f, 0x186ba: 0x40306c1d, 0x186bb: 0xe0000fea,\n\t0x186bc: 0x40306c25, 0x186bd: 0xe00010ff, 0x186be: 0x40318820, 0x186bf: 0xe0001114,\n\t// Block 0x61b, offset 0x186c0\n\t0x186c0: 0x002bde03, 0x186c1: 0x402bde1c, 0x186c2: 0xe00008fb, 0x186c3: 0xe00008f8,\n\t0x186c4: 0xe000097d, 0x186c5: 0xe000097a, 0x186c6: 0xe0000a38, 0x186c7: 0xe0000a35,\n\t0x186c8: 0xe0000a3e, 0x186c9: 0xe0000a3b, 0x186ca: 0xe0000a4a, 0x186cb: 0xe0000a47,\n\t0x186cc: 0xe0000a44, 0x186cd: 0xe0000a41, 0x186ce: 0xe0000a86, 0x186cf: 0xe0000a83,\n\t0x186d0: 0xe0000aaa, 0x186d1: 0xe0000aa7, 0x186d2: 0x002c9803, 0x186d3: 0x402c981c,\n\t0x186d4: 0xe0000aee, 0x186d5: 0xe0000aeb, 0x186d6: 0xe0000b2c, 0x186d7: 0xe0000b29,\n\t0x186d8: 0xe0000b40, 0x186d9: 0xe0000b3d, 0x186da: 0x002c9843, 0x186db: 0x402c981e,\n\t0x186dc: 0xe0000bb8, 0x186dd: 0xe0000bb5, 0x186de: 0xe0000bb2, 0x186df: 0xe0000baf,\n\t0x186e0: 0xe0000bc4, 0x186e1: 0xe0000bc1, 0x186e2: 0xe0000bca, 0x186e3: 0xe0000bc7,\n\t0x186e4: 0xe0000bee, 0x186e5: 0xe0000beb, 0x186e6: 0xe0000c1b, 0x186e7: 0xe0000c18,\n\t0x186e8: 0xe0000c51, 0x186e9: 0xe0000c4e, 0x186ea: 0x002d9a03, 0x186eb: 0x402d9a1c,\n\t0x186ec: 0xe0000c31, 0x186ed: 0xe0000c2e, 0x186ee: 0xe0000c5a, 0x186ef: 0xe0000c57,\n\t0x186f0: 0xe0000c54, 0x186f1: 0x402da220, 0x186f2: 0xf0000a0a, 0x186f3: 0xf0000404,\n\t0x186f4: 0xe0000c8a, 0x186f5: 0xe0000c87, 0x186f6: 0xe0000c9f, 0x186f7: 0xe0000c9c,\n\t0x186f8: 0x402f7220, 0x186f9: 0xe0000ccc, 0x186fa: 0xe0000cc9, 0x186fb: 0xe0000cd8,\n\t0x186fc: 0xe0000cd5, 0x186fd: 0xe0000cd2, 0x186fe: 0xe0000ccf, 0x186ff: 0xe0000d04,\n\t// Block 0x61c, offset 0x18700\n\t0x18700: 0xe0000cfe, 0x18701: 0xe0000cf8, 0x18702: 0xe0000cf5, 0x18703: 0x002e9e23,\n\t0x18704: 0x402e9e1d, 0x18705: 0xe0000d6f, 0x18706: 0xe0000d6c, 0x18707: 0x002e9e43,\n\t0x18708: 0x402e9e1e, 0x18709: 0xf0000404, 0x1870a: 0x002eda88, 0x1870b: 0x402eda20,\n\t0x1870c: 0x002ee203, 0x1870d: 0x402ee21c, 0x1870e: 0xe0000da0, 0x1870f: 0xe0000d9d,\n\t0x18710: 0xe0000de0, 0x18711: 0xe0000ddd, 0x18712: 0xe0000e93, 0x18713: 0xe0000e8f,\n\t0x18714: 0xe0000eca, 0x18715: 0xe0000ec7, 0x18716: 0xe0000edc, 0x18717: 0xe0000ed9,\n\t0x18718: 0xe0000ed0, 0x18719: 0xe0000ecd, 0x1871a: 0xe0000f1f, 0x1871b: 0xe0000f1c,\n\t0x1871c: 0xe0000f2d, 0x1871d: 0xe0000f2a, 0x1871e: 0xe0000f47, 0x1871f: 0xe0000f44,\n\t0x18720: 0xe0000f33, 0x18721: 0xe0000f30, 0x18722: 0xe0000f99, 0x18723: 0xe0000f96,\n\t0x18724: 0xe0000f8a, 0x18725: 0xe0000f87, 0x18726: 0x00303688, 0x18727: 0x40303620,\n\t0x18728: 0xe000102b, 0x18729: 0xe0001028, 0x1872a: 0x00306c03, 0x1872b: 0x40306c1c,\n\t0x1872c: 0xe0000fe7, 0x1872d: 0xe0000fe4, 0x1872e: 0xe0000ff9, 0x1872f: 0xe0000ff6,\n\t0x18730: 0xe0001025, 0x18731: 0xe0001022, 0x18732: 0xe0001039, 0x18733: 0xe0001036,\n\t0x18734: 0xe00010d8, 0x18735: 0xe00010d5, 0x18736: 0xe000110e, 0x18737: 0xe000110b,\n\t0x18738: 0xe0001117, 0x18739: 0xe000113b, 0x1873a: 0xe0001138, 0x1873b: 0xe000114d,\n\t0x1873c: 0xe000114a, 0x1873d: 0xe0001147, 0x1873e: 0xe0001144, 0x1873f: 0xe0000f64,\n\t// Block 0x61d, offset 0x18740\n\t0x18740: 0x40321220, 0x18741: 0x40321a20, 0x18742: 0x40322220, 0x18743: 0x40322a20,\n\t0x18744: 0xe0000ad5, 0x18745: 0xe0000ad1, 0x18746: 0xe0000acd, 0x18747: 0xf0000a0a,\n\t0x18748: 0xf000040a, 0x18749: 0xf0000404, 0x1874a: 0xf0000a0a, 0x1874b: 0xf000040a,\n\t0x1874c: 0xf0000404, 0x1874d: 0x002bde43, 0x1874e: 0x402bde1e, 0x1874f: 0x002d9a43,\n\t0x18750: 0x402d9a1e, 0x18751: 0x002ee243, 0x18752: 0x402ee21e, 0x18753: 0x00306c43,\n\t0x18754: 0x40306c1e, 0x18755: 0x00306ca3, 0x18756: 0x40306c21, 0x18757: 0x00306cc3,\n\t0x18758: 0x40306c22, 0x18759: 0x00306ce3, 0x1875a: 0x40306c23, 0x1875b: 0x00306d03,\n\t0x1875c: 0x40306c24, 0x1875d: 0x402cae20, 0x1875e: 0xe000b51f, 0x1875f: 0xe000b51c,\n\t0x18760: 0xe000b525, 0x18761: 0xe000b522, 0x18762: 0xe00009f4, 0x18763: 0xe00009ef,\n\t0x18764: 0x002d3a88, 0x18765: 0x402d3a20, 0x18766: 0xe0000bbe, 0x18767: 0xe0000bbb,\n\t0x18768: 0xe0000c99, 0x18769: 0xe0000c96, 0x1876a: 0xe0000e20, 0x1876b: 0xe0000e1d,\n\t0x1876c: 0xe000b579, 0x1876d: 0xe000b576, 0x1876e: 0xe0001162, 0x1876f: 0xe000115f,\n\t0x18770: 0xe0000c8d, 0x18771: 0xf0000a0a, 0x18772: 0xf000040a, 0x18773: 0xf0000404,\n\t0x18774: 0xe0000bac, 0x18775: 0xe0000ba9, 0x18776: 0x002d7888, 0x18777: 0x00319488,\n\t0x18778: 0x002e9e63, 0x18779: 0x402e9e1f, 0x1877a: 0xe000b537, 0x1877b: 0xe000b534,\n\t0x1877c: 0xe00009ea, 0x1877d: 0xe00009e5, 0x1877e: 0xe0000e19, 0x1877f: 0xe0000e15,\n\t// Block 0x61e, offset 0x18780\n\t0x18780: 0xe000098f, 0x18781: 0xe000098c, 0x18782: 0xe0000995, 0x18783: 0xe0000992,\n\t0x18784: 0xe0000b62, 0x18785: 0xe0000b5f, 0x18786: 0xe0000b68, 0x18787: 0xe0000b65,\n\t0x18788: 0xe0000c6c, 0x18789: 0xe0000c69, 0x1878a: 0xe0000c72, 0x1878b: 0xe0000c6f,\n\t0x1878c: 0xe0000e4a, 0x1878d: 0xe0000e47, 0x1878e: 0xe0000e50, 0x1878f: 0xe0000e4d,\n\t0x18790: 0xe0000ee8, 0x18791: 0xe0000ee5, 0x18792: 0xe0000eee, 0x18793: 0xe0000eeb,\n\t0x18794: 0xe0001053, 0x18795: 0xe0001050, 0x18796: 0xe0001059, 0x18797: 0xe0001056,\n\t0x18798: 0xe0000f61, 0x18799: 0xe0000f5e, 0x1879a: 0xe0000fa5, 0x1879b: 0xe0000fa2,\n\t0x1879c: 0x00312288, 0x1879d: 0x40312220, 0x1879e: 0xe0000bf4, 0x1879f: 0xe0000bf1,\n\t0x187a0: 0x002ebc88, 0x187a1: 0x402c8c20, 0x187a2: 0x002f2288, 0x187a3: 0x402f2220,\n\t0x187a4: 0x00314088, 0x187a5: 0x40314020, 0x187a6: 0xe000096f, 0x187a7: 0xe000096c,\n\t0x187a8: 0xe0000b32, 0x187a9: 0xe0000b2f, 0x187aa: 0xe000b567, 0x187ab: 0xe000b564,\n\t0x187ac: 0xe000b56d, 0x187ad: 0xe000b56a, 0x187ae: 0xe0000e04, 0x187af: 0xe0000e01,\n\t0x187b0: 0xe000b573, 0x187b1: 0xe000b570, 0x187b2: 0xe0001129, 0x187b3: 0xe0001126,\n\t0x187b4: 0x402e5e20, 0x187b5: 0x402ed020, 0x187b6: 0x40305a20, 0x187b7: 0x402dd420,\n\t0x187b8: 0xe0000abf, 0x187b9: 0xe0000ec4, 0x187ba: 0x002be888, 0x187bb: 0x002c4488,\n\t0x187bc: 0x402c4420, 0x187bd: 0x002e3888, 0x187be: 0x00303e88, 0x187bf: 0x402ffc20,\n\t// Block 0x61f, offset 0x187c0\n\t0x187c0: 0xe00009b1, 0x187c1: 0xe00009ae, 0x187c2: 0xe0000a22, 0x187c3: 0xe0000a1f,\n\t0x187c4: 0xe0000a28, 0x187c5: 0xe0000a25, 0x187c6: 0xe0000a2e, 0x187c7: 0xe0000a2b,\n\t0x187c8: 0xe0000a5a, 0x187c9: 0xe0000a56, 0x187ca: 0xe0000a8c, 0x187cb: 0xe0000a89,\n\t0x187cc: 0xe0000a98, 0x187cd: 0xe0000a95, 0x187ce: 0xe0000aa4, 0x187cf: 0xe0000aa1,\n\t0x187d0: 0xe0000a92, 0x187d1: 0xe0000a8f, 0x187d2: 0xe0000a9e, 0x187d3: 0xe0000a9b,\n\t0x187d4: 0xe000b54f, 0x187d5: 0xe000b54c, 0x187d6: 0xe000b549, 0x187d7: 0xe000b546,\n\t0x187d8: 0xe0000b7c, 0x187d9: 0xe0000b79, 0x187da: 0xe0000b82, 0x187db: 0xe0000b7f,\n\t0x187dc: 0xe0000b39, 0x187dd: 0xe0000b35, 0x187de: 0xe0000b8c, 0x187df: 0xe0000b89,\n\t0x187e0: 0xe0000bd0, 0x187e1: 0xe0000bcd, 0x187e2: 0xe0000c00, 0x187e3: 0xe0000bfd,\n\t0x187e4: 0xe0000c0c, 0x187e5: 0xe0000c09, 0x187e6: 0xe0000bfa, 0x187e7: 0xe0000bf7,\n\t0x187e8: 0xe0000c06, 0x187e9: 0xe0000c03, 0x187ea: 0xe0000c12, 0x187eb: 0xe0000c0f,\n\t0x187ec: 0xe0000c7e, 0x187ed: 0xe0000c7b, 0x187ee: 0xe000b555, 0x187ef: 0xe000b552,\n\t0x187f0: 0xe0000c93, 0x187f1: 0xe0000c90, 0x187f2: 0xe0000cab, 0x187f3: 0xe0000ca8,\n\t0x187f4: 0xe0000cb1, 0x187f5: 0xe0000cae, 0x187f6: 0xe0000cde, 0x187f7: 0xe0000cdb,\n\t0x187f8: 0xe0000ce5, 0x187f9: 0xe0000ce1, 0x187fa: 0xe0000cf2, 0x187fb: 0xe0000cef,\n\t0x187fc: 0xe0000cec, 0x187fd: 0xe0000ce9, 0x187fe: 0x002e8223, 0x187ff: 0x402e821d,\n\t// Block 0x620, offset 0x18800\n\t0x18800: 0xe0000d24, 0x18801: 0xe0000d21, 0x18802: 0xe0000d2a, 0x18803: 0xe0000d27,\n\t0x18804: 0xe0000d69, 0x18805: 0xe0000d66, 0x18806: 0xe0000d7b, 0x18807: 0xe0000d78,\n\t0x18808: 0xe0000d87, 0x18809: 0xe0000d84, 0x1880a: 0xe0000d81, 0x1880b: 0xe0000d7e,\n\t0x1880c: 0xe000b585, 0x1880d: 0xe000b582, 0x1880e: 0xe0000df5, 0x1880f: 0xe0000df1,\n\t0x18810: 0xe000b561, 0x18811: 0xe000b55e, 0x18812: 0xe000b55b, 0x18813: 0xe000b558,\n\t0x18814: 0xe0000ea7, 0x18815: 0xe0000ea4, 0x18816: 0xe0000ead, 0x18817: 0xe0000eaa,\n\t0x18818: 0xe0000ed6, 0x18819: 0xe0000ed3, 0x1881a: 0xe0000ef4, 0x1881b: 0xe0000ef1,\n\t0x1881c: 0xe0000efb, 0x1881d: 0xe0000ef7, 0x1881e: 0xe0000f02, 0x1881f: 0xe0000eff,\n\t0x18820: 0xe0000f41, 0x18821: 0xe0000f3e, 0x18822: 0xe0000f53, 0x18823: 0xe0000f50,\n\t0x18824: 0xe0000f26, 0x18825: 0xe0000f22, 0x18826: 0xe0000f3a, 0x18827: 0xe0000f36,\n\t0x18828: 0xe0000f5a, 0x18829: 0xe0000f56, 0x1882a: 0xe0000f93, 0x1882b: 0xe0000f90,\n\t0x1882c: 0xe0000f9f, 0x1882d: 0xe0000f9c, 0x1882e: 0xe0000fb1, 0x1882f: 0xe0000fae,\n\t0x18830: 0xe0000fab, 0x18831: 0xe0000fa8, 0x18832: 0xe0001093, 0x18833: 0xe0001090,\n\t0x18834: 0xe000109f, 0x18835: 0xe000109c, 0x18836: 0xe0001099, 0x18837: 0xe0001096,\n\t0x18838: 0xe000b5a3, 0x18839: 0xe000b5a0, 0x1883a: 0xe000b59d, 0x1883b: 0xe000b59a,\n\t0x1883c: 0xe00010a9, 0x1883d: 0xe00010a6, 0x1883e: 0xe00010af, 0x1883f: 0xe00010ac,\n\t// Block 0x621, offset 0x18840\n\t0x18840: 0xe00010d2, 0x18841: 0xe00010cf, 0x18842: 0xe00010cc, 0x18843: 0xe00010c9,\n\t0x18844: 0xe00010e1, 0x18845: 0xe00010de, 0x18846: 0xe00010e7, 0x18847: 0xe00010e4,\n\t0x18848: 0xe00010ed, 0x18849: 0xe00010ea, 0x1884a: 0xe00010fc, 0x1884b: 0xe00010f9,\n\t0x1884c: 0xe00010f6, 0x1884d: 0xe00010f3, 0x1884e: 0xe0001123, 0x1884f: 0xe0001120,\n\t0x18850: 0xe0001141, 0x18851: 0xe000113e, 0x18852: 0xe0001153, 0x18853: 0xe0001150,\n\t0x18854: 0xe0001159, 0x18855: 0xe0001156, 0x18856: 0xe0000c15, 0x18857: 0xe0000f8d,\n\t0x18858: 0xe00010db, 0x18859: 0xe0001111, 0x1885a: 0xf0000404, 0x1885b: 0xe0000f70,\n\t0x1885c: 0x40300420, 0x1885d: 0x40300620, 0x1885e: 0xe0000f7f, 0x1885f: 0x402c9620,\n\t0x18860: 0xe000099b, 0x18861: 0xe0000998, 0x18862: 0xe0000989, 0x18863: 0xe0000986,\n\t0x18864: 0xe000b531, 0x18865: 0xe000b52e, 0x18866: 0xe000b543, 0x18867: 0xe000b540,\n\t0x18868: 0xe0000940, 0x18869: 0xe000093c, 0x1886a: 0xe0000938, 0x1886b: 0xe0000934,\n\t0x1886c: 0xe00009aa, 0x1886d: 0xe00009a6, 0x1886e: 0xe000b52b, 0x1886f: 0xe000b528,\n\t0x18870: 0xe000b53d, 0x18871: 0xe000b53a, 0x18872: 0xe000091a, 0x18873: 0xe0000916,\n\t0x18874: 0xe0000912, 0x18875: 0xe000090e, 0x18876: 0xe00009a2, 0x18877: 0xe000099e,\n\t0x18878: 0xe0000b6e, 0x18879: 0xe0000b6b, 0x1887a: 0xe0000b5c, 0x1887b: 0xe0000b59,\n\t0x1887c: 0xe0000b26, 0x1887d: 0xe0000b23, 0x1887e: 0x002c98c3, 0x1887f: 0x402c9822,\n\t// Block 0x622, offset 0x18880\n\t0x18880: 0x002c9903, 0x18881: 0x402c9824, 0x18882: 0xe0000b13, 0x18883: 0xe0000b0f,\n\t0x18884: 0xe0000b0b, 0x18885: 0xe0000b07, 0x18886: 0xe0000b75, 0x18887: 0xe0000b71,\n\t0x18888: 0xe0000c66, 0x18889: 0xe0000c63, 0x1888a: 0xe0000c78, 0x1888b: 0xe0000c75,\n\t0x1888c: 0xe0000e84, 0x1888d: 0xe0000e81, 0x1888e: 0xe0000e44, 0x1888f: 0xe0000e41,\n\t0x18890: 0xe000b57f, 0x18891: 0xe000b57c, 0x18892: 0xe000b591, 0x18893: 0xe000b58e,\n\t0x18894: 0xe0000dc5, 0x18895: 0xe0000dc1, 0x18896: 0xe0000dbd, 0x18897: 0xe0000db9,\n\t0x18898: 0xe0000e8b, 0x18899: 0xe0000e87, 0x1889a: 0xe000b58b, 0x1889b: 0xe000b588,\n\t0x1889c: 0xe000b597, 0x1889d: 0xe000b594, 0x1889e: 0xe0000e75, 0x1889f: 0xe0000e71,\n\t0x188a0: 0xe0000e6d, 0x188a1: 0xe0000e69, 0x188a2: 0xe0000e7d, 0x188a3: 0xe0000e79,\n\t0x188a4: 0xe000108d, 0x188a5: 0xe000108a, 0x188a6: 0xe000104d, 0x188a7: 0xe000104a,\n\t0x188a8: 0xe000b5a9, 0x188a9: 0xe000b5a6, 0x188aa: 0xe000b5af, 0x188ab: 0xe000b5ac,\n\t0x188ac: 0xe000107e, 0x188ad: 0xe000107a, 0x188ae: 0xe0001076, 0x188af: 0xe0001072,\n\t0x188b0: 0xe0001086, 0x188b1: 0xe0001082, 0x188b2: 0xe0001108, 0x188b3: 0xe0001105,\n\t0x188b4: 0xe0001135, 0x188b5: 0xe0001132, 0x188b6: 0xe000112f, 0x188b7: 0xe000112c,\n\t0x188b8: 0xe000111d, 0x188b9: 0xe000111a, 0x188ba: 0xe0000d0a, 0x188bb: 0xe0000d07,\n\t0x188bc: 0x0030d888, 0x188bd: 0x4030d820, 0x188be: 0x00312088, 0x188bf: 0x40312020,\n\t// Block 0x623, offset 0x188c0\n\t0x188c0: 0x6d200220, 0x188c1: 0x6c16fe20, 0x188c2: 0x6d0bdc20, 0x188c3: 0x6d1b3420,\n\t0x188c4: 0x6d0bd620, 0x188c5: 0x6cc58020, 0x188c6: 0x6c6ece20, 0x188c7: 0xe000240a,\n\t0x188c8: 0x6c29ae20, 0x188c9: 0x6c29ca20, 0x188ca: 0x6c100220, 0x188cb: 0x6c6b9220,\n\t0x188cc: 0x6cff9e20, 0x188cd: 0x6cffa020, 0x188ce: 0x6cf39620, 0x188cf: 0x6cedd020,\n\t0x188d0: 0x6cedd220, 0x188d1: 0x6cf39820, 0x188d2: 0x6cd8fa20, 0x188d3: 0x6d10c420,\n\t0x188d4: 0x6c630820, 0x188d5: 0x6c616620, 0x188d6: 0x6d036620, 0x188d7: 0x6d036820,\n\t0x188d8: 0x6cd49220, 0x188d9: 0x6cdbee20, 0x188db: 0x6cc64c20,\n\t0x188dc: 0x6cc63420, 0x188dd: 0x6d266620, 0x188de: 0x6c271e20, 0x188df: 0x2ca22083,\n\t0x188e0: 0x6c9f8820, 0x188e1: 0x6cd74220, 0x188e2: 0x6cd74420, 0x188e3: 0x6c0c6c20,\n\t0x188e4: 0x6d2ff820, 0x188e5: 0x6d2ff220, 0x188e6: 0x6cbb3620, 0x188e7: 0x6ca96420,\n\t0x188e8: 0x6cc38820, 0x188e9: 0xe000243f, 0x188ea: 0xe0002442, 0x188eb: 0x6ca2c020,\n\t0x188ec: 0x6cd2f220, 0x188ed: 0x6cd40820, 0x188ee: 0x6cd30220, 0x188ef: 0x6cd86820,\n\t0x188f0: 0x6cd86a20, 0x188f1: 0x6c429620, 0x188f2: 0x6cee4220, 0x188f3: 0xe0002451,\n\t0x188f4: 0x6cee4020, 0x188f5: 0xe000244e, 0x188f6: 0x6cc5ba20, 0x188f7: 0x6cc60a20,\n\t0x188f8: 0x02ff1684, 0x188f9: 0x03000484, 0x188fa: 0x6d24ba20, 0x188fb: 0x6d24bc20,\n\t0x188fc: 0x6cc78020, 0x188fd: 0x6c719e20, 0x188fe: 0x6c12be20, 0x188ff: 0x6c12c220,\n\t// Block 0x624, offset 0x18900\n\t0x18900: 0x6c12c420, 0x18901: 0x6c562e20, 0x18902: 0x6d199a20, 0x18903: 0x6cf76620,\n\t0x18904: 0x6cf94e20, 0x18905: 0x6c673620, 0x18906: 0x0313a484, 0x18907: 0xe000246c,\n\t0x18908: 0x6d0d2e20, 0x18909: 0x6c077420, 0x1890a: 0xe000246f, 0x1890b: 0x6c17e220,\n\t0x1890c: 0x6c21a220, 0x1890d: 0x6c21a620, 0x1890e: 0x6c21f020, 0x1890f: 0x6c3f9a20,\n\t0x18910: 0x6c6c7c20, 0x18911: 0x6c16dc20, 0x18912: 0x6c16de20, 0x18913: 0x6d2f1620,\n\t0x18914: 0x6c9ae820, 0x18915: 0xe000247b, 0x18916: 0x6c3f9c20, 0x18917: 0x6d222020,\n\t0x18918: 0x6cbe6a20, 0x18919: 0x6cef7e20, 0x1891a: 0x6d13ae20, 0x1891b: 0x6c3c9820,\n\t0x1891c: 0x6c3a3020, 0x1891d: 0x6cd29c20, 0x1891e: 0xe0002481, 0x1891f: 0x6cd29e20,\n\t0x18920: 0x6cd2a020, 0x18921: 0xe0002484, 0x18922: 0x6c96ae20, 0x18923: 0x6c476c20,\n\t0x18924: 0x6c4b2420, 0x18925: 0x6d220e20, 0x18926: 0x6ca7ce20, 0x18927: 0x6c920a20,\n\t0x18928: 0x6c975620, 0x18929: 0x6c5a4020, 0x1892a: 0x6c9e4820, 0x1892b: 0x6cb6bc20,\n\t0x1892c: 0x6cb6be20, 0x1892d: 0x6c1bd020, 0x1892e: 0x6c1bd220, 0x1892f: 0x6c902820,\n\t0x18930: 0x6c902a20, 0x18931: 0x6c4ab620, 0x18932: 0x6c4ab420, 0x18933: 0x2c4a3883,\n\t// Block 0x625, offset 0x18940\n\t0x18940: 0x2d13b686, 0x18941: 0x2c4bb683, 0x18942: 0x2d3a5283, 0x18943: 0x2cb1dc83,\n\t0x18944: 0x2d15aa84, 0x18945: 0x2c73be83, 0x18946: 0x2c37b486, 0x18947: 0x2ce7e283,\n\t0x18948: 0x2cc55a84, 0x18949: 0x2c372e83, 0x1894a: 0x2cc80e83, 0x1894b: 0x2c030a84,\n\t0x1894c: 0x2c6ed083, 0x1894d: 0x2c9d1683, 0x1894e: 0x2c0d9e83, 0x1894f: 0x2c610c83,\n\t0x18950: 0x2cb9ec83, 0x18951: 0x2c29b083, 0x18952: 0x2c855c83, 0x18953: 0x2c059c83,\n\t0x18954: 0x2c08aa83, 0x18955: 0x2c397e83, 0x18956: 0x2cf83483, 0x18957: 0x2cd22485,\n\t0x18958: 0x2c100483, 0x18959: 0x2c6a4e83, 0x1895a: 0x2c16e083, 0x1895b: 0x2cd7b483,\n\t0x1895c: 0x2d200483, 0x1895d: 0x2c79c883, 0x1895e: 0x2ceed683, 0x1895f: 0x2ce91084,\n\t0x18960: 0x2cd2e283, 0x18961: 0x2d34ca83, 0x18962: 0x2cdba683, 0x18963: 0x2cf55a83,\n\t0x18964: 0x2c26e483, 0x18965: 0x2caa6e84, 0x18966: 0x2d3f6883, 0x18967: 0x2c9db683,\n\t0x18968: 0x2c25b083, 0x18969: 0x2cffa283, 0x1896a: 0x2d1edc83, 0x1896b: 0x2cd18a83,\n\t0x1896c: 0x2c17fa83, 0x1896d: 0x2cccb083, 0x1896e: 0x2c1fd683, 0x1896f: 0x2c454a83,\n\t0x18970: 0x2c610e83, 0x18971: 0x2c6c1a83, 0x18972: 0x2c420a83, 0x18973: 0x2d107e83,\n\t0x18974: 0x2c4a0283, 0x18975: 0x2d1ac083, 0x18976: 0x2c45cc83, 0x18977: 0x2d163c83,\n\t0x18978: 0x2c454c83, 0x18979: 0x2c616883, 0x1897a: 0x2cccb283, 0x1897b: 0x2c1bd483,\n\t0x1897c: 0x2d02a283, 0x1897d: 0x2c436083, 0x1897e: 0x2c563883, 0x1897f: 0x2cd43684,\n\t// Block 0x626, offset 0x18980\n\t0x18980: 0x2d337e83, 0x18981: 0x2cb3fc83, 0x18982: 0x2cf17a84, 0x18983: 0x2c30f883,\n\t0x18984: 0x2c6c1e83, 0x18985: 0x2c398083, 0x18986: 0x2cf39a83, 0x18987: 0x2cc63684,\n\t0x18988: 0x2d264283, 0x18989: 0x2d266885, 0x1898a: 0x2ca25c84, 0x1898b: 0x2cba3883,\n\t0x1898c: 0x2d34cc83, 0x1898d: 0x2c271283, 0x1898e: 0x2cd49883, 0x1898f: 0x2cf39c83,\n\t0x18990: 0x2c08ac83, 0x18991: 0x2c98c083, 0x18992: 0x2cd2e483, 0x18993: 0x2cb72683,\n\t0x18994: 0x2cd70284, 0x18995: 0x2c5d8484, 0x18996: 0x2d2f8083, 0x18997: 0x2c3fa083,\n\t0x18998: 0x2d10c683, 0x18999: 0x2cac5083, 0x1899a: 0x2cb14483, 0x1899b: 0x2d0b0883,\n\t0x1899c: 0x2ca96683, 0x1899d: 0x2cc34c83, 0x1899e: 0x2d07fa83, 0x1899f: 0x2d22b883,\n\t0x189a0: 0x2c483e83, 0x189a1: 0x2cec0c83, 0x189a2: 0x2c415c83, 0x189a3: 0x2cd0d284,\n\t0x189a4: 0x2d1e6c83, 0x189a5: 0x2ce47e83, 0x189a6: 0x2cb04483, 0x189a7: 0x2ca54083,\n\t0x189a8: 0x2c0e4683, 0x189a9: 0x2c040883, 0x189aa: 0x2cafa883, 0x189ab: 0x2c9f8a83,\n\t0x189ac: 0x2ca26483, 0x189ad: 0x2c98c283, 0x189ae: 0x2cd2a883, 0x189af: 0x2cd22c83,\n\t0x189b0: 0x2cd2f483, 0x189b1: 0x2cc74083, 0x189b2: 0x2c50b283, 0x189b3: 0x2d08f283,\n\t0x189b4: 0x2c856c83, 0x189b5: 0x2d39f083, 0x189b6: 0x2c9cd683, 0x189b7: 0x2c9d1a83,\n\t0x189b8: 0x2c3d1a83, 0x189b9: 0x2cedf483, 0x189ba: 0x2d0f7683, 0x189bb: 0x2d221c83,\n\t0x189bc: 0x2c819a83, 0x189bd: 0x2c373083, 0x189be: 0x2c82b283, 0x189bf: 0x2c378483,\n\t// Block 0x627, offset 0x189c0\n\t0x189c0: 0x2d22c683, 0x189c1: 0x2cc78283, 0x189c2: 0x2c189483, 0x189c3: 0x2d3f2a83,\n\t0x189c4: 0x2d357083, 0x189c5: 0x2c6fd083, 0x189c6: 0x2ccf0683, 0x189c7: 0x2c201683,\n\t0x189c8: 0x2d385283, 0x189c9: 0x2c449e83, 0x189ca: 0x2ccb1483, 0x189cb: 0x2c12aa83,\n\t0x189cc: 0x2c549483, 0x189cd: 0x2c1d0883, 0x189ce: 0x2d093883, 0x189cf: 0x2d03ba83,\n\t0x189d0: 0x2d13be83, 0x189d1: 0x2d0b7083, 0x189d2: 0x2c665283, 0x189d3: 0x2c68c683,\n\t0x189d4: 0x2d0c5c83, 0x189d5: 0x2c475c83, 0x189d6: 0x2c30fa83, 0x189d7: 0x2cd2b083,\n\t0x189d8: 0x2d357c83, 0x189d9: 0x2c06dc83, 0x189da: 0x2c1be883, 0x189db: 0x2d407e84,\n\t0x189dc: 0x2d40a683, 0x189dd: 0x2ccfa483, 0x189de: 0x2c17ce83, 0x189df: 0x2d02ae83,\n\t0x189e0: 0x2c18a083, 0x189e1: 0x2c21a883, 0x189e2: 0x2d169e83, 0x189e3: 0x2d1fa483,\n\t0x189e4: 0x2c0b7883, 0x189e5: 0x2c84fc83, 0x189e6: 0x2c6c2e84, 0x189e7: 0x2d2f0083,\n\t0x189e8: 0x2c9ac683, 0x189e9: 0x2c3fba83, 0x189ea: 0x2c859883, 0x189eb: 0x2d3c5683,\n\t0x189ec: 0x2d222283, 0x189ed: 0x2cbe3083, 0x189ee: 0x2c39f283, 0x189ef: 0x2c9e5683,\n\t0x189f0: 0x2c43d083, 0x189f1: 0x2ceeee83, 0x189f2: 0x2c6fb483, 0x189f3: 0x2d19ba83,\n\t0x189f4: 0x2d12dc83, 0x189f5: 0x2c3c2c83, 0x189f6: 0x2c39f483, 0x189f7: 0x2cd25883,\n\t0x189f8: 0x2cd44283, 0x189f9: 0x2cfd6683, 0x189fa: 0x2c969883, 0x189fb: 0x2c476e83,\n\t0x189fc: 0x2c42bc83, 0x189fd: 0x2c0bf483, 0x189fe: 0x2c310e83, 0x189ff: 0x2c170e83,\n\t// Block 0x628, offset 0x18a00\n\t0x18a00: 0x2c43e083, 0x18a01: 0x2c4ae283, 0x18a02: 0x2d211283, 0x18a03: 0x2ca79a83,\n\t0x18a04: 0x2c91bc83, 0x18a05: 0x2c924c83, 0x18a06: 0x2c973283, 0x18a07: 0x2c966883,\n\t0x18a08: 0x2c59ce83, 0x18a09: 0x2cd56083, 0x18a0a: 0x2c521c83, 0x18a0b: 0x2d353483,\n\t0x18a0c: 0x2c9e3283, 0x18a0d: 0x2c2f7483, 0x18a0e: 0x2c47a683, 0x18a0f: 0x2cd56683,\n\t0x18a10: 0x2c08a283, 0x18a11: 0x2cb63483, 0x18a12: 0x2c1bc283, 0x18a13: 0x2c8fb083,\n\t0x18a14: 0x2c4a9683, 0x18a15: 0x2d26f683,\n\t0x18a30: 0x40273a20, 0x18a31: 0x40273c20, 0x18a32: 0x40273e20, 0x18a33: 0x40274020,\n\t0x18a34: 0x40274220, 0x18a35: 0x40274420, 0x18a36: 0x40274620, 0x18a37: 0x40274820,\n\t0x18a38: 0x40274a20, 0x18a39: 0x40274c20, 0x18a3a: 0x40274e20, 0x18a3b: 0x40275020,\n\t// Block 0x629, offset 0x18a40\n\t0x18a40: 0x00021283, 0x18a41: 0x40025c20, 0x18a42: 0x40030420, 0x18a43: 0x40051220,\n\t0x18a44: 0x40279a20, 0x18a45: 0x4027ca20, 0x18a46: 0xe0002206, 0x18a47: 0x6c8c9620,\n\t0x18a48: 0x40049c20, 0x18a49: 0x40049e20, 0x18a4a: 0x4004a020, 0x18a4b: 0x4004a220,\n\t0x18a4c: 0x4004a420, 0x18a4d: 0x4004a620, 0x18a4e: 0x4004a820, 0x18a4f: 0x4004aa20,\n\t0x18a50: 0x4004ac20, 0x18a51: 0x4004ae20, 0x18a52: 0x40279c20, 0x18a53: 0x40279e20,\n\t0x18a54: 0x4004b020, 0x18a55: 0x4004b220, 0x18a56: 0x4004b420, 0x18a57: 0x4004b620,\n\t0x18a58: 0x4004b820, 0x18a59: 0x4004ba20, 0x18a5a: 0x4004bc20, 0x18a5b: 0x4004be20,\n\t0x18a5c: 0x40023820, 0x18a5d: 0x4003ea20, 0x18a5e: 0x4003ec20, 0x18a5f: 0x4003ee20,\n\t0x18a60: 0x4027a020, 0x18a61: 0xe0000267, 0x18a62: 0xe000037f, 0x18a63: 0xe0000459,\n\t0x18a64: 0xe000052e, 0x18a65: 0xe00005f8, 0x18a66: 0xe00006c3, 0x18a67: 0xe000076b,\n\t0x18a68: 0xe0000817, 0x18a69: 0xe00008bc, 0x18a6a: 0xada12202, 0x18a6b: 0xae412302,\n\t0x18a6c: 0xae812402, 0x18a6d: 0xade12502, 0x18a6e: 0xae012602, 0x18a6f: 0xae012702,\n\t0x18a70: 0x40023a20, 0x18a71: 0x4027ce20, 0x18a72: 0xe0000152, 0x18a73: 0x4027d020,\n\t0x18a74: 0xe0000155, 0x18a75: 0x4027d220, 0x18a76: 0x00279c84, 0x18a77: 0x4027a220,\n\t0x18a78: 0x2cd22484, 0x18a79: 0x2ca75483, 0x18a7a: 0x2cc96283, 0x18a7b: 0x4027cc20,\n\t0x18a7c: 0xe000231a, 0x18a7d: 0x40051420, 0x18a7e: 0x4027a420, 0x18a7f: 0x4027a620,\n\t// Block 0x62a, offset 0x18a80\n\t0x18a80: 0x00633a84, 0x18a81: 0x00634484, 0x18a82: 0x0064f684, 0x18a83: 0x0064f884,\n\t0x18a84: 0x00635a84, 0x18a85: 0x00635c84, 0x18a86: 0x00635e84, 0x18a87: 0x0063ee84,\n\t0x18a88: 0x0063f084, 0x18a89: 0x0063f684, 0x18a8a: 0x00640884, 0x18a8b: 0x00640a84,\n\t0x18a8c: 0x00640e84, 0x18a8d: 0x00642284, 0x18a8e: 0x00642884,\n\t0x18a90: 0x4027a820, 0x18a91: 0x4027aa20, 0x18a92: 0x2d13b685, 0x18a93: 0x2c37b485,\n\t0x18a94: 0x2cc9f285, 0x18a95: 0x2cd87484, 0x18a96: 0x2cce4884, 0x18a97: 0x2d378285,\n\t0x18a98: 0x2cfa2684, 0x18a99: 0x2c63fc83, 0x18a9a: 0x2d15aa83, 0x18a9b: 0x2c0dba83,\n\t0x18a9c: 0x2c2f4083, 0x18a9d: 0x2ce45484, 0x18a9e: 0x2c2a8a83, 0x18a9f: 0x2cc55a83,\n\t0x18aa0: 0xe000237a, 0x18aa1: 0xe0002383, 0x18aa2: 0xe0002380, 0x18aa3: 0xe000237d,\n\t0x18aa4: 0x40661c20, 0x18aa5: 0xe000238c, 0x18aa6: 0x40661620, 0x18aa7: 0xe0002389,\n\t0x18aa8: 0xe000239e, 0x18aa9: 0xe0002386, 0x18aaa: 0xe0002395, 0x18aab: 0xe000239b,\n\t0x18aac: 0x40663420, 0x18aad: 0x4065f220, 0x18aae: 0xe000238f, 0x18aaf: 0xe0002392,\n\t0x18ab0: 0x40663020, 0x18ab1: 0x40663220, 0x18ab2: 0x40662c20, 0x18ab3: 0xe0002398,\n\t0x18ab4: 0x0065dc99, 0x18ab5: 0x0065e699, 0x18ab6: 0x0065ee99, 0x18ab7: 0x0065f499,\n\t0x18ab8: 0x40660c20, 0x18ab9: 0x40660e20, 0x18aba: 0x40661020,\n\t// Block 0x62b, offset 0x18ac0\n\t0x18ac0: 0xf0000404, 0x18ac1: 0xf0000404, 0x18ac2: 0xf0000404, 0x18ac3: 0xf0000404,\n\t0x18ac4: 0xf0000404, 0x18ac5: 0xf0000404, 0x18ac6: 0xf0000404, 0x18ac7: 0xf0000404,\n\t0x18ac8: 0xf0000404, 0x18ac9: 0xf0000404, 0x18aca: 0xf0000404, 0x18acb: 0xf0000404,\n\t0x18acc: 0xf0000404, 0x18acd: 0xf0000404, 0x18ace: 0xe000004c, 0x18acf: 0xe0000051,\n\t0x18ad0: 0xe0000056, 0x18ad1: 0xe000005b, 0x18ad2: 0xe0000060, 0x18ad3: 0xe0000065,\n\t0x18ad4: 0xe000006a, 0x18ad5: 0xe000006f, 0x18ad6: 0xe0000083, 0x18ad7: 0xe000008d,\n\t0x18ad8: 0xe0000092, 0x18ad9: 0xe0000097, 0x18ada: 0xe000009c, 0x18adb: 0xe00000a1,\n\t0x18adc: 0xe0000088, 0x18add: 0xe0000074, 0x18ade: 0xe000007c,\n\t0x18ae0: 0xe000b438, 0x18ae1: 0xe000b3d4, 0x18ae2: 0xe000b40c, 0x18ae3: 0xe000b41c,\n\t0x18ae4: 0xe000b428, 0x18ae5: 0xe000b3f4, 0x18ae6: 0xe000b400, 0x18ae7: 0xe000b3c8,\n\t0x18ae8: 0xe000b3ec, 0x18ae9: 0xe000b414, 0x18aea: 0xe000b440, 0x18aeb: 0xe000b3dc,\n\t0x18aec: 0xe000b418, 0x18aed: 0xe000b3fc, 0x18aee: 0xe000b3e8, 0x18aef: 0xe000b424,\n\t0x18af0: 0xe000b408, 0x18af1: 0xe000b448, 0x18af2: 0xe000b43c, 0x18af3: 0xe000b410,\n\t0x18af4: 0xe000b3f8, 0x18af5: 0xe000b420, 0x18af6: 0xe000b3cc, 0x18af7: 0xe000b44c,\n\t0x18af8: 0xe000b3f0, 0x18af9: 0xe000b3d0, 0x18afa: 0xe000b3d8, 0x18afb: 0xe000b434,\n\t0x18afc: 0xe000b3e4, 0x18afd: 0xe000b404, 0x18afe: 0xe000b450, 0x18aff: 0xe000b42c,\n\t// Block 0x62c, offset 0x18b00\n\t0x18b00: 0xe000b3e0, 0x18b01: 0xe000b430, 0x18b02: 0xe000b454, 0x18b03: 0xe000b444,\n\t0x18b04: 0x2cf20683, 0x18b05: 0x2d200c83, 0x18b06: 0x2cf17a83, 0x18b07: 0x2d32e283,\n\t0x18b08: 0xe00002e3, 0x18b09: 0xe00003d8, 0x18b0a: 0xe00004b3, 0x18b0b: 0xe000057d,\n\t0x18b0c: 0xe0000648, 0x18b0d: 0xe00006f0, 0x18b0e: 0xe000079c, 0x18b0f: 0xe0000841,\n\t0x18b10: 0xe0000ec0, 0x18b11: 0xf0000606, 0x18b12: 0xf0000606, 0x18b13: 0xf0000606,\n\t0x18b14: 0xf0000606, 0x18b15: 0xf0000606, 0x18b16: 0xf0000606, 0x18b17: 0xf0000606,\n\t0x18b18: 0xf0000606, 0x18b19: 0xf0000606, 0x18b1a: 0xf0000606, 0x18b1b: 0xf0000606,\n\t0x18b1c: 0xf0000606, 0x18b1d: 0xf0000606, 0x18b1e: 0xf0000606, 0x18b1f: 0xf0000606,\n\t0x18b20: 0x0062ac86, 0x18b21: 0x0062b086, 0x18b22: 0x0062b286, 0x18b23: 0x0062b686,\n\t0x18b24: 0x0062b886, 0x18b25: 0x0062ba86, 0x18b26: 0x0062be86, 0x18b27: 0x0062c286,\n\t0x18b28: 0x0062c486, 0x18b29: 0x0062c886, 0x18b2a: 0x0062ca86, 0x18b2b: 0x0062cc86,\n\t0x18b2c: 0x0062ce86, 0x18b2d: 0x0062d086, 0x18b2e: 0xf0000606, 0x18b2f: 0xf0000606,\n\t0x18b30: 0xf0000606, 0x18b31: 0xf0000606, 0x18b32: 0xf0000606, 0x18b33: 0xf0000606,\n\t0x18b34: 0xf0000606, 0x18b35: 0xf0000606, 0x18b36: 0xf0000606, 0x18b37: 0xf0000606,\n\t0x18b38: 0xf0000606, 0x18b39: 0xf0000606, 0x18b3a: 0xf0000606, 0x18b3b: 0xf0000606,\n\t0x18b3c: 0xe0002127, 0x18b3d: 0xe0002122, 0x18b3e: 0xf0000606, 0x18b3f: 0x4027ac20,\n\t// Block 0x62d, offset 0x18b40\n\t0x18b40: 0x2d13b684, 0x18b41: 0x2c37b484, 0x18b42: 0x2cc9f284, 0x18b43: 0x2cd87483,\n\t0x18b44: 0x2cf41483, 0x18b45: 0x2c8f2483, 0x18b46: 0x2cb4c683, 0x18b47: 0x2c030a83,\n\t0x18b48: 0x2c6f9a83, 0x18b49: 0x2cd22483, 0x18b4a: 0x2d266884, 0x18b4b: 0x2c5d8483,\n\t0x18b4c: 0x2cd70283, 0x18b4d: 0x2ca25c83, 0x18b4e: 0x2c6c2e83, 0x18b4f: 0x2ce91083,\n\t0x18b50: 0x2cc63683, 0x18b51: 0x2d399283, 0x18b52: 0x2d1f9884, 0x18b53: 0x2ccf3683,\n\t0x18b54: 0x2c9fe683, 0x18b55: 0x2ce27083, 0x18b56: 0x2c110e83, 0x18b57: 0x2d3ac683,\n\t0x18b58: 0x2c814083, 0x18b59: 0x2c9d3483, 0x18b5a: 0x2ca3e283, 0x18b5b: 0x2caa6e83,\n\t0x18b5c: 0x2cd3bc83, 0x18b5d: 0x2d1eb483, 0x18b5e: 0x2d1b3683, 0x18b5f: 0x2d3ab083,\n\t0x18b60: 0x2cfe3a83, 0x18b61: 0x2d04b283, 0x18b62: 0x2d013e83, 0x18b63: 0x2d333683,\n\t0x18b64: 0x2cce4883, 0x18b65: 0x2d378284, 0x18b66: 0x2cfa2683, 0x18b67: 0x2d426084,\n\t0x18b68: 0x2d200884, 0x18b69: 0x2d13c083, 0x18b6a: 0x2d3f7083, 0x18b6b: 0x2d08f883,\n\t0x18b6c: 0x2c64ca83, 0x18b6d: 0x2cb6c883, 0x18b6e: 0x2d3e6083, 0x18b6f: 0x2d007083,\n\t0x18b70: 0x2d12ca83, 0x18b71: 0xf0000606, 0x18b72: 0xf0000606, 0x18b73: 0xf0000606,\n\t0x18b74: 0xf0000606, 0x18b75: 0xf0000606, 0x18b76: 0xf0000606, 0x18b77: 0xf0000606,\n\t0x18b78: 0xf0000606, 0x18b79: 0xf0000606, 0x18b7a: 0xf0000606, 0x18b7b: 0xf0000606,\n\t0x18b7c: 0xf0000606, 0x18b7d: 0xf0000606, 0x18b7e: 0xf0000606, 0x18b7f: 0xf0000606,\n\t// Block 0x62e, offset 0x18b80\n\t0x18b80: 0xf0000203, 0x18b81: 0xf0000203, 0x18b82: 0xf0000203, 0x18b83: 0xf0000203,\n\t0x18b84: 0xf0000203, 0x18b85: 0xf0000203, 0x18b86: 0xf0000203, 0x18b87: 0xf0000203,\n\t0x18b88: 0xf0000203, 0x18b89: 0xe000b484, 0x18b8a: 0xe000b490, 0x18b8b: 0xe000b49c,\n\t0x18b8c: 0xf0001c1d, 0x18b8d: 0xe0000b85, 0x18b8e: 0xf0001d1c, 0x18b8f: 0xe0000d14,\n\t0x18b90: 0x00657693, 0x18b91: 0x00657893, 0x18b92: 0x00657a93, 0x18b93: 0x00657e93,\n\t0x18b94: 0x00658093, 0x18b95: 0x00658293, 0x18b96: 0x00658493, 0x18b97: 0x00658693,\n\t0x18b98: 0x00658893, 0x18b99: 0x00658a93, 0x18b9a: 0x00658c93, 0x18b9b: 0x00658e93,\n\t0x18b9c: 0x00659093, 0x18b9d: 0x00659293, 0x18b9e: 0x00659493, 0x18b9f: 0x00659693,\n\t0x18ba0: 0x00659893, 0x18ba1: 0x00659a93, 0x18ba2: 0x00659c93, 0x18ba3: 0x00659e93,\n\t0x18ba4: 0x0065a093, 0x18ba5: 0x0065a293, 0x18ba6: 0x0065a493, 0x18ba7: 0x0065a693,\n\t0x18ba8: 0x0065a893, 0x18ba9: 0x0065aa93, 0x18baa: 0x0065ac93, 0x18bab: 0x0065ae93,\n\t0x18bac: 0x0065b093, 0x18bad: 0x0065b293, 0x18bae: 0x0065b493, 0x18baf: 0x0065b693,\n\t0x18bb0: 0x0065b893, 0x18bb1: 0x0065ba93, 0x18bb2: 0x0065bc93, 0x18bb3: 0x0065be93,\n\t0x18bb4: 0x0065c093, 0x18bb5: 0x0065c493, 0x18bb6: 0x0065c693, 0x18bb7: 0x0065c893,\n\t0x18bb8: 0x0065ca93, 0x18bb9: 0x0065cc93, 0x18bba: 0x0065ce93, 0x18bbb: 0x0065d093,\n\t0x18bbc: 0x0065d293, 0x18bbd: 0x0065d493, 0x18bbe: 0x0065d693,\n\t// Block 0x62f, offset 0x18bc0\n\t0x18bc0: 0xe000230b, 0x18bc1: 0xe00022f8, 0x18bc2: 0xe00022fc, 0x18bc3: 0xe0002311,\n\t0x18bc4: 0xe0002316, 0x18bc5: 0xe000231d, 0x18bc6: 0xe0002321, 0x18bc7: 0xe0002325,\n\t0x18bc8: 0xe000232b, 0x18bc9: 0xf0001c1c, 0x18bca: 0xe0002330, 0x18bcb: 0xe000233c,\n\t0x18bcc: 0xe0002340, 0x18bcd: 0xe0002337, 0x18bce: 0xe0002346, 0x18bcf: 0xe000234b,\n\t0x18bd0: 0xe000234f, 0x18bd1: 0xe0002353, 0x18bd2: 0xf0001c1c, 0x18bd3: 0xe000235e,\n\t0x18bd4: 0xe0002358, 0x18bd5: 0xf0001c1c, 0x18bd6: 0xe0002363, 0x18bd7: 0xe000236d,\n\t0x18bd8: 0xf0000203, 0x18bd9: 0xf0000203, 0x18bda: 0xf0000203, 0x18bdb: 0xf0000203,\n\t0x18bdc: 0xf0000203, 0x18bdd: 0xf0000203, 0x18bde: 0xf0000203, 0x18bdf: 0xf0000203,\n\t0x18be0: 0xf0000203, 0x18be1: 0xf0000203, 0x18be2: 0xe000b47c, 0x18be3: 0xe000b488,\n\t0x18be4: 0xe000b494, 0x18be5: 0xe000b4a0, 0x18be6: 0xe000b4a8, 0x18be7: 0xe000b4b0,\n\t0x18be8: 0xe000b4b8, 0x18be9: 0xe000b4c0, 0x18bea: 0xe000b4c8, 0x18beb: 0xe000b4d0,\n\t0x18bec: 0xe000b4d8, 0x18bed: 0xe000b4e0, 0x18bee: 0xe000b4e8, 0x18bef: 0xe000b4f0,\n\t0x18bf0: 0xe000b4f8, 0x18bf1: 0xe0000c1e, 0x18bf2: 0xf0001c1c, 0x18bf3: 0xf0001d1d,\n\t0x18bf4: 0xe0000a31, 0x18bf5: 0xf0001d1c, 0x18bf6: 0xf0001c1c, 0x18bf7: 0xf0001c1c,\n\t0x18bf8: 0xe0000ac2, 0x18bf9: 0xe0000ac6, 0x18bfa: 0xf0001d1d, 0x18bfb: 0xf0000203,\n\t0x18bfc: 0xf0000203, 0x18bfd: 0xf0000203, 0x18bfe: 0xf0000203, 0x18bff: 0xe000b5b2,\n\t// Block 0x630, offset 0x18c00\n\t0x18c00: 0xf0001d1c, 0x18c01: 0xf0001d1d, 0x18c02: 0xe00009b7, 0x18c03: 0xf0001c1d,\n\t0x18c04: 0xf0001c1c, 0x18c05: 0xf0001c1c, 0x18c06: 0xe0000a66, 0x18c07: 0xe0000a7a,\n\t0x18c08: 0xf0001d1c, 0x18c09: 0xf0001c1d, 0x18c0a: 0xf0001c1c, 0x18c0b: 0xf0001d1d,\n\t0x18c0c: 0xf0001c1c, 0x18c0d: 0xf0001d1d, 0x18c0e: 0xf0001d1d, 0x18c0f: 0xf0001c1c,\n\t0x18c10: 0xf0001c1c, 0x18c11: 0xf0001c1c, 0x18c12: 0xe0000d0d, 0x18c13: 0xf0001c1c,\n\t0x18c14: 0xf0001c1c, 0x18c15: 0xe0000d3a, 0x18c16: 0xe0000d46, 0x18c17: 0xf0001d1d,\n\t0x18c18: 0xe0000eb0, 0x18c19: 0xe0000eb8, 0x18c1a: 0xf0001d1d, 0x18c1b: 0xf0001c1c,\n\t0x18c1c: 0xf0001c1d, 0x18c1d: 0xf0001c1d, 0x18c1e: 0xe00010b2, 0x18c1f: 0xe00009c8,\n\t0x18c20: 0xf0000203, 0x18c21: 0xf0000203, 0x18c22: 0xf0000203, 0x18c23: 0xf0000203,\n\t0x18c24: 0xf0000203, 0x18c25: 0xf0000203, 0x18c26: 0xf0000203, 0x18c27: 0xf0000203,\n\t0x18c28: 0xf0000203, 0x18c29: 0xe000b480, 0x18c2a: 0xe000b48c, 0x18c2b: 0xe000b498,\n\t0x18c2c: 0xe000b4a4, 0x18c2d: 0xe000b4ac, 0x18c2e: 0xe000b4b4, 0x18c2f: 0xe000b4bc,\n\t0x18c30: 0xe000b4c4, 0x18c31: 0xe000b4cc, 0x18c32: 0xe000b4d4, 0x18c33: 0xe000b4dc,\n\t0x18c34: 0xe000b4e4, 0x18c35: 0xe000b4ec, 0x18c36: 0xe000b4f4, 0x18c37: 0xe000b4fc,\n\t0x18c38: 0xe000b500, 0x18c39: 0xe000b504, 0x18c3a: 0xe000b508, 0x18c3b: 0xe000b50c,\n\t0x18c3c: 0xe000b510, 0x18c3d: 0xe000b514, 0x18c3e: 0xe000b518, 0x18c3f: 0xe0000bdf,\n\t// Block 0x631, offset 0x18c40\n\t0x18c40: 0x6cbf9220, 0x18c41: 0x6ce52c20,\n\t0x18c44: 0x6c7ae020, 0x18c45: 0x6cf41220, 0x18c46: 0x6d1ac620,\n\t0x18c4c: 0x6d144820,\n\t0x18c56: 0x6d006c20,\n\t0x18c5c: 0x6c1d9020,\n\t0x18c61: 0x6caae820,\n\t0x18c64: 0x6c27da20,\n\t0x18c68: 0x6d067820, 0x18c69: 0x6d03c420, 0x18c6b: 0x6d044c20,\n\t0x18c6c: 0x6c8e4020, 0x18c6d: 0x6c8c1820, 0x18c6e: 0x6cfd7e20, 0x18c6f: 0x6d1dbe20,\n\t0x18c70: 0x6d030e20, 0x18c71: 0x6d31ac20, 0x18c72: 0x6c272020, 0x18c73: 0x6cf49420,\n\t0x18c74: 0x6cac3820, 0x18c77: 0x6c968e20,\n\t0x18c78: 0x6cba3c20, 0x18c79: 0x6d165420, 0x18c7a: 0x6d1a2020, 0x18c7b: 0x6ca58220,\n\t0x18c7c: 0x6c1a7e20, 0x18c7d: 0x6c3c1020,\n\t// Block 0x632, offset 0x18c80\n\t0x18c81: 0x6d3cec20, 0x18c82: 0x6c39ba20, 0x18c83: 0x6c029620,\n\t0x18c84: 0x6cf41c20, 0x18c85: 0x6d427220, 0x18c87: 0x6d38f620,\n\t0x18c88: 0x6c304e20, 0x18c89: 0x6cda7e20, 0x18c8a: 0x6d16a020, 0x18c8b: 0x6cbefc20,\n\t0x18c8c: 0x6c7b8220, 0x18c8d: 0x6c831e20, 0x18c8e: 0x6ca4da20, 0x18c8f: 0x6d3aa820,\n\t0x18c90: 0x6cd4a220,\n\t0x18c94: 0x6d062820, 0x18c97: 0x6ccfb620,\n\t0x18c98: 0x6c6bc820, 0x18c99: 0x6c2e6620, 0x18c9a: 0x6caab620, 0x18c9b: 0x6cda8420,\n\t0x18c9c: 0x6d16d820, 0x18c9d: 0x6c905020, 0x18c9e: 0x6d1d3220, 0x18c9f: 0x6c081020,\n\t0x18ca3: 0x6c7f9220,\n\t0x18ca4: 0x6c9e7220, 0x18ca5: 0x6d171820, 0x18ca6: 0x6c85be20, 0x18ca7: 0x6c61c020,\n\t0x18ca8: 0x6d223420, 0x18ca9: 0x6c953c20, 0x18caa: 0x6c147420,\n\t0x18cae: 0x6c5ce420, 0x18caf: 0x6d063820,\n\t0x18cb0: 0x6c5bb220, 0x18cb1: 0x6cc53820, 0x18cb3: 0x6d392620,\n\t0x18cb5: 0x6c4ebe20, 0x18cb6: 0x6cf88220, 0x18cb7: 0x6cdf7420,\n\t0x18cb8: 0x6d10f020, 0x18cb9: 0x6c5bba20, 0x18cba: 0x6c75b820, 0x18cbb: 0x6c96c020,\n\t0x18cbc: 0x6c94ac20, 0x18cbd: 0x6ce0fa20, 0x18cbe: 0x6d110220, 0x18cbf: 0x6d2fba20,\n\t// Block 0x633, offset 0x18cc0\n\t0x18cc0: 0x6d2cf420, 0x18cc1: 0x6d226420, 0x18cc2: 0x6d3d7620, 0x18cc3: 0x6c37d620,\n\t0x18cc4: 0x6cc4cc20, 0x18cc5: 0x6cb70820, 0x18cc6: 0x6c1c3e20, 0x18cc7: 0x6cf45620,\n\t0x18cc8: 0x6c4eda20, 0x18cc9: 0x6ce17820, 0x18cca: 0x6ccb3220,\n\t0x18ccc: 0x6cbf4820, 0x18ccd: 0x6c824020, 0x18cce: 0x6cc97c20,\n\t0x18cd1: 0x6c7cda20, 0x18cd2: 0x6cb44620, 0x18cd3: 0x6cde8a20,\n\t0x18cd4: 0x6cd53020, 0x18cd5: 0x6d0f6820, 0x18cd6: 0x6cab8a20, 0x18cd7: 0x6cdf3620,\n\t0x18cd9: 0x6c9dd220, 0x18cda: 0x6d1b7820, 0x18cdb: 0x6c2e3a20,\n\t0x18cdc: 0x6d228820, 0x18cdd: 0x6c9eec20, 0x18cde: 0x6c75ee20, 0x18cdf: 0x6ca7b820,\n\t0x18ce0: 0x6d023a20, 0x18ce1: 0x6d1f8820,\n\t0x18ce4: 0x6c185420, 0x18ce5: 0x6c3c7620, 0x18ce6: 0x6c82f820, 0x18ce7: 0x6c874020,\n\t0x18ce9: 0x6c95d420, 0x18ceb: 0x6c617420,\n\t0x18cf0: 0x6cc2b020, 0x18cf2: 0x6c110220, 0x18cf3: 0x6c898420,\n\t0x18cf4: 0x6c475620, 0x18cf5: 0x6c994020, 0x18cf7: 0x6c489020,\n\t0x18cf8: 0x6cdc2820, 0x18cfb: 0x6c996a20,\n\t0x18cfc: 0x6c976220, 0x18cfd: 0x6cc29820, 0x18cfe: 0x6cd39420, 0x18cff: 0x6c84b620,\n\t// Block 0x634, offset 0x18d00\n\t0x18d01: 0x6cedee20, 0x18d02: 0x6c79d820, 0x18d03: 0x6c325420,\n\t0x18d04: 0x6d325a20, 0x18d05: 0x6ce62020,\n\t0x18d08: 0x6c0e0620, 0x18d09: 0x6c5d9e20, 0x18d0a: 0x6c305420, 0x18d0b: 0x6c460e20,\n\t0x18d0c: 0x6c195220, 0x18d0e: 0x6cbd2020, 0x18d0f: 0x6c6f0020,\n\t0x18d10: 0x6c922620, 0x18d11: 0x6d042020, 0x18d13: 0x6ca3f820,\n\t0x18d14: 0x6d01a220, 0x18d16: 0x6c09be20, 0x18d17: 0x6c6b0420,\n\t0x18d18: 0x6cda9c20, 0x18d1a: 0x6c455220,\n\t0x18d1c: 0x6d200620, 0x18d1d: 0x6d03b620, 0x18d1e: 0x6cb83c20, 0x18d1f: 0x6cafae20,\n\t0x18d20: 0x6c2d3620, 0x18d21: 0x6c3f3c20, 0x18d22: 0x6c95de20, 0x18d23: 0x6cb84220,\n\t0x18d24: 0x6cb84420, 0x18d25: 0x6ce0ba20, 0x18d26: 0x6c03fa20, 0x18d27: 0x6c418420,\n\t0x18d28: 0x6c222420, 0x18d29: 0x6d077e20, 0x18d2a: 0x6c80f620,\n\t0x18d2d: 0x6ccf0c20, 0x18d2f: 0x6c83a820,\n\t0x18d30: 0x6c578820, 0x18d31: 0x6ce7ea20, 0x18d32: 0x6cb0f020, 0x18d33: 0x6c2b2420,\n\t0x18d34: 0x6cc85e20, 0x18d35: 0x6c360820, 0x18d36: 0x6cbcb020, 0x18d37: 0x6d178c20,\n\t0x18d38: 0x6d3d0020, 0x18d39: 0x6cc8cc20, 0x18d3a: 0x6c649420,\n\t0x18d3c: 0x6c1c2e20, 0x18d3d: 0x6c1d1820, 0x18d3e: 0x6cf66220,\n\t// Block 0x635, offset 0x18d40\n\t0x18d40: 0x6c94b420, 0x18d41: 0x6c2aa020, 0x18d42: 0x6c8bbe20, 0x18d43: 0x6c747020,\n\t0x18d44: 0x6cdae020, 0x18d45: 0x6cfffa20, 0x18d46: 0x6d299020,\n\t0x18d49: 0x6d3a7620, 0x18d4a: 0x6d2e0e20, 0x18d4b: 0x6c64f020,\n\t0x18d4c: 0x6d408c20, 0x18d4d: 0x6c1fa020, 0x18d4e: 0x6d022a20, 0x18d4f: 0x6c869820,\n\t0x18d51: 0x6c1c8e20, 0x18d52: 0x6cf7b820, 0x18d53: 0x6c656020,\n\t0x18d55: 0x6c5fc020, 0x18d57: 0x6c3a7c20,\n\t0x18d58: 0x6c1f0620, 0x18d59: 0x6c07d420, 0x18d5a: 0x6c6a7820,\n\t0x18d5c: 0x6c036c20, 0x18d5d: 0x6c898a20, 0x18d5e: 0x6c7b1e20,\n\t0x18d60: 0x6cf95e20, 0x18d61: 0x6c0ca420, 0x18d62: 0x6c747420, 0x18d63: 0x6c825c20,\n\t0x18d64: 0x6d035020, 0x18d65: 0x6c045820, 0x18d66: 0x6d103220, 0x18d67: 0x6c940a20,\n\t0x18d68: 0x6c070a20, 0x18d69: 0x6c362420, 0x18d6a: 0x6c91c220,\n\t0x18d6d: 0x6c181220, 0x18d6e: 0x6caad020, 0x18d6f: 0x6d07fe20,\n\t0x18d70: 0x6c525220, 0x18d71: 0x6d224420, 0x18d73: 0x6c4b0620,\n\t0x18d74: 0x6d17dc20, 0x18d75: 0x6d085020, 0x18d76: 0x6c462c20, 0x18d77: 0x6c910020,\n\t0x18d78: 0x6ce2f020, 0x18d79: 0x6c820420, 0x18d7a: 0x6cd2f820,\n\t0x18d7c: 0x6cdcee20, 0x18d7d: 0x6d11ec20, 0x18d7e: 0x6cfa6820, 0x18d7f: 0x6d408420,\n\t// Block 0x636, offset 0x18d80\n\t0x18d81: 0x6cc3a220, 0x18d82: 0x6d1a2220, 0x18d83: 0x6cf56420,\n\t0x18d84: 0x6d34d420, 0x18d85: 0x6c639620, 0x18d86: 0x6c564e20, 0x18d87: 0x6c7e3620,\n\t0x18d88: 0x6d15c620, 0x18d89: 0x6c788020, 0x18d8a: 0x6c3d4620, 0x18d8b: 0x6cbd6020,\n\t0x18d8c: 0x6c009220, 0x18d8e: 0x6c78ac20, 0x18d8f: 0x6c1e8820,\n\t0x18d90: 0x6d014620, 0x18d91: 0x6c1e9a20, 0x18d92: 0x6ceeac20,\n\t0x18d95: 0x6c58ea20, 0x18d96: 0x6cda8a20, 0x18d97: 0x6d203a20,\n\t0x18d99: 0x6c75e020, 0x18d9a: 0x6d2f7e20, 0x18d9b: 0x6d066620,\n\t0x18d9c: 0x6cd2ac20, 0x18d9e: 0x6cd64220, 0x18d9f: 0x6c7cea20,\n\t0x18da0: 0x6cd6a220, 0x18da1: 0x6c515420, 0x18da2: 0x6c414e20, 0x18da3: 0x6d0d3020,\n\t0x18da4: 0x6cbfec20, 0x18da5: 0x6ccf9820, 0x18da6: 0x6c577a20, 0x18da7: 0x6cf56820,\n\t0x18da8: 0x6c391820, 0x18da9: 0x6cad2420, 0x18daa: 0x6c281e20, 0x18dab: 0x6c39bc20,\n\t0x18dac: 0x6c455c20, 0x18dad: 0x6c022620, 0x18dae: 0x6c3f3020, 0x18daf: 0x6ca54420,\n\t0x18db0: 0x6d093a20, 0x18db1: 0x6d1ee420, 0x18db2: 0x6c572620,\n\t0x18db4: 0x6c189620, 0x18db5: 0x6c4c5420, 0x18db6: 0x6ca2c820, 0x18db7: 0x6c577e20,\n\t0x18db8: 0x6c858820, 0x18db9: 0x6c37fa20, 0x18dba: 0x6cfe8020, 0x18dbb: 0x6cb3ea20,\n\t0x18dbd: 0x6cd88820,\n\t// Block 0x637, offset 0x18dc0\n\t0x18dc0: 0x6c821c20, 0x18dc1: 0x6c8c4820, 0x18dc2: 0x6d16dc20, 0x18dc3: 0x6c544c20,\n\t0x18dc5: 0x6d068c20, 0x18dc6: 0x6cc17620, 0x18dc7: 0x6c373a20,\n\t0x18dca: 0x6d09e220,\n\t0x18dcf: 0x6ca80020,\n\t0x18dd0: 0x6cef9a20, 0x18dd1: 0x6d017820, 0x18dd2: 0x6ce31420, 0x18dd3: 0x6c532620,\n\t0x18dd4: 0x6cea7820, 0x18dd5: 0x6ca80220, 0x18dd6: 0x6ca80420, 0x18dd7: 0x6d1a4020,\n\t0x18dd8: 0x6d313420,\n\t0x18dde: 0x6cec5020, 0x18ddf: 0x6cd45a20,\n\t0x18de0: 0x6caaea20, 0x18de1: 0x6d12e420, 0x18de2: 0x6cb5b620, 0x18de3: 0x6ce82620,\n\t0x18de4: 0x6c4df820, 0x18de5: 0x6c75ac20, 0x18de6: 0x6c302c20, 0x18de7: 0x6c5cba20,\n\t0x18de8: 0x6c923220, 0x18de9: 0x6c707a20, 0x18dea: 0x6c5db820, 0x18deb: 0x6c8cdc20,\n\t0x18ded: 0x6ce4e420, 0x18dee: 0x6c94e820,\n\t0x18df5: 0x6c43e220, 0x18df6: 0x6d0c0620, 0x18df7: 0x6cd26420,\n\t0x18df8: 0x6d090c20, 0x18df9: 0x6cae3020, 0x18dfa: 0x6c217820, 0x18dfb: 0x6ca96c20,\n\t0x18dfc: 0x6c348a20, 0x18dfd: 0x6d2aca20, 0x18dfe: 0x6c362820, 0x18dff: 0x6d00a820,\n\t// Block 0x638, offset 0x18e00\n\t0x18e00: 0x6d1ea020, 0x18e01: 0x6c362a20, 0x18e02: 0x6cd13420, 0x18e03: 0x6cf1dc20,\n\t0x18e04: 0x6c7a3e20, 0x18e05: 0x6c555020, 0x18e06: 0x6c43e620, 0x18e07: 0x6cf9c020,\n\t0x18e08: 0x6c97dc20, 0x18e09: 0x6c94a820, 0x18e0a: 0x6c602a20, 0x18e0b: 0x6c53f620,\n\t0x18e0c: 0x6d361620, 0x18e0f: 0x6cec5420,\n\t0x18e11: 0x6c046820, 0x18e12: 0x6c00a020, 0x18e13: 0x6d3c6220,\n\t0x18e14: 0x6cb8ec20, 0x18e15: 0x6c46ac20, 0x18e16: 0x6c289220, 0x18e17: 0x6c06a820,\n\t0x18e18: 0x6c0f0e20, 0x18e19: 0x6c1e6020, 0x18e1a: 0x6c862820, 0x18e1b: 0x6cfff620,\n\t0x18e1c: 0x6d054020,\n\t0x18e22: 0x6c537020, 0x18e23: 0x6ce40620,\n\t0x18e24: 0x6c244220, 0x18e25: 0x6c7e0a20, 0x18e26: 0x6c816020, 0x18e27: 0x6d367820,\n\t0x18e28: 0x6d004e20, 0x18e29: 0x6cf66620, 0x18e2b: 0x6cbcce20,\n\t0x18e2c: 0x6d2be820, 0x18e2d: 0x6cf66820,\n\t0x18e30: 0x6c23a220, 0x18e31: 0x6c607a20, 0x18e32: 0x6c5dec20, 0x18e33: 0x6cde1220,\n\t0x18e34: 0x6d0cbe20, 0x18e35: 0x6d072420, 0x18e36: 0x6cb31c20, 0x18e37: 0x6cc9dc20,\n\t0x18e3b: 0x6c4c3a20,\n\t0x18e3c: 0x6d133620, 0x18e3d: 0x6cfdfe20, 0x18e3e: 0x6d08e620, 0x18e3f: 0x6c516c20,\n\t// Block 0x639, offset 0x18e40\n\t0x18e40: 0x6d42aa20, 0x18e41: 0x6d188020, 0x18e42: 0x6c226620,\n\t0x18e44: 0x6c837020, 0x18e45: 0x6cfba620, 0x18e46: 0x6cdf5620, 0x18e47: 0x6cc6bc20,\n\t0x18e48: 0x6d18be20, 0x18e49: 0x6d372220, 0x18e4a: 0x6cf6fe20, 0x18e4b: 0x6cfbb420,\n\t0x18e4c: 0x6c72aa20, 0x18e4d: 0x6c60d620, 0x18e4e: 0x6c4e6820,\n\t0x18e50: 0x6cad9e20, 0x18e51: 0x6c86e620, 0x18e53: 0x6c7fe020,\n\t0x18e54: 0x6cc9e020, 0x18e55: 0x6c4e7020, 0x18e56: 0x6d0cfe20, 0x18e57: 0x6cc16020,\n\t0x18e59: 0x6d0d1620, 0x18e5a: 0x6c4e7420, 0x18e5b: 0x6c76ba20,\n\t0x18e5c: 0x6c1bce20, 0x18e5d: 0x6ca7e820, 0x18e5e: 0x6c5d9620,\n\t0x18e60: 0x6c092820, 0x18e61: 0x6cf98a20, 0x18e62: 0x6cf24820, 0x18e63: 0x6d080420,\n\t0x18e64: 0x6cec9420, 0x18e65: 0x6d1f8a20, 0x18e66: 0x6cbd4c20, 0x18e67: 0x6d066c20,\n\t0x18e68: 0x6ca7f020, 0x18e69: 0x6c091620, 0x18e6a: 0x6c501020, 0x18e6b: 0x6c6e0820,\n\t0x18e6c: 0x6c02bc20, 0x18e6d: 0x6c02be20,\n\t0x18e70: 0x6d311e20, 0x18e71: 0x6cdf8a20, 0x18e72: 0x6c70f220,\n\t0x18e74: 0x6d427a20, 0x18e75: 0x6c106220, 0x18e76: 0x6c6a8a20, 0x18e77: 0x6c009020,\n\t0x18e78: 0x6d29fc20, 0x18e79: 0x6c222620, 0x18e7a: 0x6c37fc20,\n\t0x18e7f: 0x6ca80620,\n\t// Block 0x63a, offset 0x18e80\n\t0x18e80: 0x6c8f2a20, 0x18e81: 0x6c99e220, 0x18e82: 0x6c334420, 0x18e83: 0x6c052020,\n\t0x18e84: 0x6c095a20, 0x18e85: 0x6c05ee20, 0x18e87: 0x6c1f2c20,\n\t0x18e88: 0x6cfa3620, 0x18e89: 0x6ce4e820, 0x18e8a: 0x6c16a220,\n\t0x18e8d: 0x6c342420, 0x18e8e: 0x6cee7e20, 0x18e8f: 0x6c3fea20,\n\t0x18e90: 0x6c348c20, 0x18e91: 0x6d225420, 0x18e92: 0x6d12ac20, 0x18e93: 0x6c7c7620,\n\t0x18e94: 0x6cefb620, 0x18e95: 0x6c7b2220, 0x18e97: 0x6cee8020,\n\t0x18e98: 0x6d10a420, 0x18e99: 0x6c903420, 0x18e9a: 0x6d037a20, 0x18e9b: 0x6d3b7c20,\n\t0x18e9c: 0x6c1b3020, 0x18e9d: 0x6d00b420, 0x18e9e: 0x6ca83a20, 0x18e9f: 0x6c810020,\n\t0x18ea0: 0x6d13fe20, 0x18ea1: 0x6d3f9e20, 0x18ea2: 0x6c976a20, 0x18ea3: 0x6d2f3820,\n\t0x18ea4: 0x6cfa4220, 0x18ea5: 0x6c4bfe20, 0x18ea6: 0x6d00c820,\n\t0x18ea8: 0x6c625c20, 0x18ea9: 0x6c8a0220, 0x18eaa: 0x6d184820, 0x18eab: 0x6c607c20,\n\t0x18eac: 0x6d1a8e20, 0x18eae: 0x6c266020, 0x18eaf: 0x6d184a20,\n\t0x18eb0: 0x6d020a20, 0x18eb1: 0x6c506220, 0x18eb2: 0x6d1e5c20, 0x18eb3: 0x6c76ea20,\n\t0x18eb4: 0x6c163220, 0x18eb5: 0x6cdf3e20, 0x18eb6: 0x6ce13020, 0x18eb7: 0x6d34a220,\n\t0x18eb8: 0x6c066e20, 0x18eb9: 0x6c9b5220, 0x18eba: 0x6c7ca220, 0x18ebb: 0x6c153620,\n\t0x18ebc: 0x6c82e020, 0x18ebe: 0x6cf91220,\n\t// Block 0x63b, offset 0x18ec0\n\t0x18ec0: 0x6cf72820, 0x18ec1: 0x6cbc7220, 0x18ec2: 0x6ca47e20, 0x18ec3: 0x6d274e20,\n\t0x18ec5: 0x6c8f7220, 0x18ec6: 0x6c3fbe20, 0x18ec7: 0x6d3f7220,\n\t0x18ec9: 0x6c475e20, 0x18eca: 0x6c762820, 0x18ecb: 0x6c2dd420,\n\t0x18ecc: 0x6c57aa20, 0x18ecd: 0x6c7ce020, 0x18ecf: 0x6c42fc20,\n\t0x18ed0: 0x6ce26020, 0x18ed2: 0x6ccd2a20, 0x18ed3: 0x6c7f3a20,\n\t0x18ed4: 0x6ca7f420, 0x18ed5: 0x6c3de220, 0x18ed6: 0x6c42fe20, 0x18ed7: 0x6cbc8420,\n\t0x18ed8: 0x6c04e420, 0x18ed9: 0x6c632620, 0x18eda: 0x6c796a20, 0x18edb: 0x6cf85620,\n\t0x18edc: 0x6d230820, 0x18edd: 0x6d3c5a20, 0x18ede: 0x6cd05820, 0x18edf: 0x6c21ba20,\n\t0x18ee0: 0x6cfed420, 0x18ee1: 0x6c615220, 0x18ee2: 0x6caa3820, 0x18ee3: 0x6cff6a20,\n\t0x18ee4: 0x6d165a20, 0x18ee5: 0x6d20a820, 0x18ee6: 0x6d145420, 0x18ee7: 0x6d0d3620,\n\t0x18ee8: 0x6cd04020, 0x18ee9: 0x6cc4aa20, 0x18eea: 0x6c501220, 0x18eeb: 0x6cc96620,\n\t0x18eec: 0x6c755820, 0x18eed: 0x6d1ee820, 0x18eef: 0x6d02fc20,\n\t0x18ef0: 0x6cadae20, 0x18ef1: 0x6cbfa020, 0x18ef2: 0x6c14b820,\n\t0x18ef4: 0x6c106420, 0x18ef5: 0x6c2fdc20, 0x18ef6: 0x6cd88a20, 0x18ef7: 0x6c378620,\n\t0x18ef9: 0x6c992820, 0x18efa: 0x6d281820, 0x18efb: 0x6c5e8a20,\n\t0x18efd: 0x6cbc1e20, 0x18efe: 0x6d045820, 0x18eff: 0x6cad4a20,\n\t// Block 0x63c, offset 0x18f00\n\t0x18f00: 0x6c1e7420, 0x18f01: 0x6cae5220, 0x18f02: 0x6caad620, 0x18f03: 0x6c6a8c20,\n\t0x18f04: 0x6d13d420, 0x18f05: 0x6c37c220, 0x18f06: 0x6c34d420,\n\t0x18f0a: 0x6c347c20,\n\t0x18f0d: 0x6cbca420, 0x18f0e: 0x6c938220, 0x18f0f: 0x6cc02620,\n\t0x18f10: 0x6cda1020, 0x18f11: 0x6c11f020, 0x18f12: 0x6c310020, 0x18f13: 0x6cf5b820,\n\t0x18f14: 0x6c3c2e20, 0x18f15: 0x6d172220, 0x18f16: 0x6cdd0e20, 0x18f17: 0x6cbc7a20,\n\t0x18f18: 0x6cb37620, 0x18f19: 0x6d02c020, 0x18f1a: 0x6ce7b020, 0x18f1b: 0x6d032820,\n\t0x18f1c: 0x6d1f1220, 0x18f1d: 0x6c06fe20, 0x18f1e: 0x6c905820,\n\t0x18f23: 0x6d279820,\n\t0x18f24: 0x6c83ac20, 0x18f25: 0x6cde4420, 0x18f26: 0x6c802620, 0x18f27: 0x6c97b820,\n\t0x18f28: 0x6cbb3a20, 0x18f29: 0x6d38d220, 0x18f2a: 0x6d0e5c20, 0x18f2b: 0x6cf5de20,\n\t0x18f2c: 0x6c923620, 0x18f2d: 0x6cf5e020, 0x18f2e: 0x6ccae220, 0x18f2f: 0x6c395220,\n\t0x18f31: 0x6cefb820, 0x18f32: 0x6c383a20, 0x18f33: 0x6d179020,\n\t0x18f34: 0x6ca4f420, 0x18f35: 0x6c196c20, 0x18f36: 0x6ce09820, 0x18f37: 0x6c5ec620,\n\t0x18f38: 0x6cd5d020, 0x18f39: 0x6cb10e20, 0x18f3a: 0x6c012e20, 0x18f3b: 0x6c7ac420,\n\t0x18f3c: 0x6c139820, 0x18f3e: 0x6cfb5a20, 0x18f3f: 0x6d361c20,\n\t// Block 0x63d, offset 0x18f40\n\t0x18f42: 0x6c3c4820, 0x18f43: 0x6c88f420,\n\t0x18f44: 0x6d0a0a20, 0x18f45: 0x6d06ee20, 0x18f46: 0x6c9d5020, 0x18f47: 0x6c5bd620,\n\t0x18f48: 0x6ca29220, 0x18f49: 0x6d1d8c20, 0x18f4a: 0x6d2df420, 0x18f4b: 0x6d17de20,\n\t0x18f4c: 0x6caa1e20, 0x18f4d: 0x6ce10020, 0x18f4e: 0x6cf63e20, 0x18f4f: 0x6d27ac20,\n\t0x18f50: 0x6cd5e220, 0x18f51: 0x6c3e9420, 0x18f52: 0x6d17e020, 0x18f53: 0x6c26b020,\n\t0x18f55: 0x6c881e20, 0x18f56: 0x6c127a20, 0x18f57: 0x6c116e20,\n\t0x18f58: 0x6c725e20, 0x18f59: 0x6c927a20, 0x18f5a: 0x6cdae220, 0x18f5b: 0x6ca59a20,\n\t0x18f5c: 0x6c02dc20, 0x18f5d: 0x6c018c20, 0x18f5e: 0x6cba6420,\n\t0x18f60: 0x6c24d420, 0x18f61: 0x6c232420, 0x18f63: 0x6cc48220,\n\t0x18f64: 0x6ca73220, 0x18f65: 0x6c96fe20, 0x18f66: 0x6d030220, 0x18f67: 0x6d26e020,\n\t0x18f68: 0x6ca38220, 0x18f69: 0x6c02ee20, 0x18f6a: 0x6cd01620, 0x18f6b: 0x6c96dc20,\n\t0x18f6e: 0x6c807a20, 0x18f6f: 0x6cf6e620,\n\t0x18f70: 0x6d26f820, 0x18f71: 0x6d372620, 0x18f72: 0x6cf26420, 0x18f73: 0x6c57f620,\n\t0x18f74: 0x6c9c1820, 0x18f75: 0x6ca7bc20, 0x18f76: 0x6ced6620, 0x18f77: 0x6c9c9c20,\n\t0x18f78: 0x6ca89e20, 0x18f79: 0x6cc1f820, 0x18f7a: 0x6d29b820, 0x18f7b: 0x6c893e20,\n\t0x18f7c: 0x6d34c620, 0x18f7d: 0x6d3eda20, 0x18f7e: 0x6c4d1a20, 0x18f7f: 0x6d066e20,\n\t// Block 0x63e, offset 0x18f80\n\t0x18f80: 0x6c501820, 0x18f81: 0x6d078020, 0x18f82: 0x6d35b020, 0x18f83: 0x6c9e1220,\n\t0x18f84: 0x6c214820, 0x18f85: 0x6c46b020, 0x18f87: 0x6c216020,\n\t0x18f88: 0x6c946a20, 0x18f89: 0x6d3a9820, 0x18f8a: 0x6cd43820, 0x18f8b: 0x6c8a5e20,\n\t0x18f8c: 0x6c6fcc20, 0x18f8d: 0x6d014020, 0x18f8e: 0x6c2f9220, 0x18f8f: 0x6c6bae20,\n\t0x18f90: 0x6cc65220, 0x18f91: 0x6c982e20, 0x18f93: 0x6c788a20,\n\t0x18f94: 0x6d119620, 0x18f95: 0x6ca8fc20, 0x18f96: 0x6d148e20, 0x18f97: 0x6c80a620,\n\t0x18f98: 0x6d1df020, 0x18f99: 0x6d1a4420, 0x18f9a: 0x6d0c7e20, 0x18f9b: 0x6cda9e20,\n\t0x18f9d: 0x6c8baa20, 0x18f9e: 0x6d0aec20, 0x18f9f: 0x6c98d820,\n\t0x18fa0: 0x6c9ff420, 0x18fa1: 0x6d41aa20, 0x18fa2: 0x6d225620, 0x18fa3: 0x6d179220,\n\t0x18fa4: 0x6c46b220, 0x18fa5: 0x6c9cfa20, 0x18fa6: 0x6c75c820, 0x18fa7: 0x6cf1e420,\n\t0x18fa9: 0x6c773a20, 0x18faa: 0x6c2d7020, 0x18fab: 0x6c8f9820,\n\t0x18fad: 0x6d040620, 0x18fae: 0x6c255420, 0x18faf: 0x6cbbec20,\n\t0x18fb0: 0x6c9dde20, 0x18fb1: 0x6c9c1c20, 0x18fb2: 0x6cbdf420,\n\t0x18fb4: 0x6cecc220, 0x18fb5: 0x6c2a5e20, 0x18fb6: 0x6c009420,\n\t0x18fb8: 0x6c0b8c20, 0x18fb9: 0x6ca9fe20, 0x18fba: 0x6c882020, 0x18fbb: 0x6c6caa20,\n\t0x18fbc: 0x6d207020, 0x18fbd: 0x6c20bc20, 0x18fbe: 0x6d426420, 0x18fbf: 0x6c0fe020,\n\t// Block 0x63f, offset 0x18fc0\n\t0x18fc0: 0x6c5a9020, 0x18fc1: 0x6d11f020, 0x18fc2: 0x6ce9e020, 0x18fc3: 0x6c61e220,\n\t0x18fc4: 0x6c012420, 0x18fc5: 0x6c95fa20, 0x18fc6: 0x6c613220, 0x18fc7: 0x6cefba20,\n\t0x18fc8: 0x6c0e7420, 0x18fc9: 0x6d289020, 0x18fca: 0x6d06f020, 0x18fcb: 0x6ca71220,\n\t0x18fcc: 0x6d281420, 0x18fce: 0x6c039820, 0x18fcf: 0x6d301a20,\n\t0x18fd0: 0x6c705420, 0x18fd1: 0x6cef9020, 0x18fd2: 0x6d016e20, 0x18fd3: 0x6cb75420,\n\t0x18fd4: 0x6d149020, 0x18fd5: 0x6d017020, 0x18fd6: 0x6c222a20, 0x18fd7: 0x6cc02820,\n\t0x18fd8: 0x6c316a20, 0x18fd9: 0x6ca7d420, 0x18fda: 0x6cb78a20, 0x18fdb: 0x6c613c20,\n\t0x18fdc: 0x6ce99420, 0x18fde: 0x6cd94c20, 0x18fdf: 0x6c2d7420,\n\t0x18fe0: 0x6c816820, 0x18fe1: 0x6d2e2c20,\n\t0x18fe4: 0x6d1a1c20, 0x18fe5: 0x6c132620, 0x18fe6: 0x6c611220, 0x18fe7: 0x6c5b8620,\n\t0x18fe8: 0x6d3ede20, 0x18fe9: 0x6c7f8820, 0x18fea: 0x6ca49020, 0x18feb: 0x6c71f020,\n\t0x18fec: 0x6cbdfc20, 0x18fed: 0x6c272620, 0x18fef: 0x6c6a6020,\n\t0x18ff0: 0x6d062620, 0x18ff1: 0x6c22fa20, 0x18ff2: 0x6d1e6e20, 0x18ff3: 0x6c30d820,\n\t0x18ff4: 0x6c1afe20, 0x18ff6: 0x6c9f9020, 0x18ff7: 0x6c59a820,\n\t0x18ff8: 0x6cdc2020, 0x18ff9: 0x6c785620, 0x18ffa: 0x6d40aa20, 0x18ffb: 0x6c501a20,\n\t0x18ffc: 0x6c19ba20, 0x18ffd: 0x6d094220, 0x18ffe: 0x6ca5bc20, 0x18fff: 0x6c1bec20,\n\t// Block 0x640, offset 0x19000\n\t0x19000: 0x6c87f020, 0x19001: 0x6c01a020, 0x19002: 0x6ca22a20, 0x19003: 0x6cd7ca20,\n\t0x19004: 0x6cfdb220, 0x19005: 0x6d0f9020, 0x19006: 0x6c572c20, 0x19007: 0x6c261620,\n\t0x19008: 0x6cc02a20, 0x19009: 0x6c814c20, 0x1900a: 0x6c3e2e20, 0x1900b: 0x6c334620,\n\t0x1900c: 0x6c984c20, 0x1900d: 0x6c80a820, 0x1900e: 0x6ceb7220, 0x1900f: 0x6c4df220,\n\t0x19010: 0x6c988820, 0x19011: 0x6c0ed220, 0x19012: 0x6cc43220, 0x19013: 0x6cb59e20,\n\t0x19014: 0x6c4df420, 0x19016: 0x6c905c20,\n\t0x19018: 0x6ce57e20, 0x19019: 0x6d2aba20, 0x1901a: 0x6cb5ba20, 0x1901b: 0x6d298a20,\n\t0x1901c: 0x6c9c4620, 0x1901d: 0x6cadd220, 0x1901e: 0x6d2e5620, 0x1901f: 0x6cfe2c20,\n\t0x19020: 0x6c429c20, 0x19022: 0x6cb5bc20,\n\t0x19024: 0x6c923820, 0x19026: 0x6d283020, 0x19027: 0x6c362e20,\n\t0x19028: 0x6c329a20, 0x19029: 0x6c9f5020, 0x1902a: 0x6cee8420, 0x1902b: 0x6cc2ec20,\n\t0x1902c: 0x6cda1c20, 0x1902d: 0x6c9f5220, 0x1902e: 0x6ce85e20,\n\t0x19030: 0x6ca03620, 0x19031: 0x6d11b420, 0x19032: 0x6c746220, 0x19033: 0x6c862c20,\n\t0x19034: 0x6c7b2620, 0x19035: 0x6c42a420, 0x19036: 0x6d257e20, 0x19037: 0x6c26fa20,\n\t0x19039: 0x6c816220, 0x1903a: 0x6c909c20, 0x1903b: 0x6cba6620,\n\t0x1903c: 0x6c025c20, 0x1903d: 0x6c0c7620, 0x1903e: 0x6d1d9a20, 0x1903f: 0x6c989820,\n\t// Block 0x641, offset 0x19040\n\t0x19040: 0x6c29e020, 0x19042: 0x6c025e20,\n\t0x19044: 0x6cf78e20, 0x19045: 0x6c3ed420, 0x19046: 0x6c27f820, 0x19047: 0x6c701420,\n\t0x19048: 0x6cc90220, 0x19049: 0x6ce77a20, 0x1904a: 0x6cc13220, 0x1904b: 0x6c368220,\n\t0x1904c: 0x6cb51a20, 0x1904d: 0x6c607e20, 0x1904e: 0x6c608020, 0x1904f: 0x6c574c20,\n\t0x19050: 0x6c69b820, 0x19051: 0x6d41cc20, 0x19052: 0x6c0c7a20, 0x19053: 0x6c9b4620,\n\t0x19054: 0x6c045620, 0x19055: 0x6cf01420, 0x19056: 0x6d160e20, 0x19057: 0x6c02f020,\n\t0x19058: 0x6d229e20, 0x19059: 0x6c4ff020, 0x1905a: 0x6c336620, 0x1905b: 0x6cf31a20,\n\t0x1905c: 0x6ca6d620, 0x1905d: 0x6c249e20, 0x1905f: 0x6c846e20,\n\t0x19060: 0x6c916c20, 0x19061: 0x6ca7be20, 0x19062: 0x6c57f820, 0x19063: 0x6c86f020,\n\t0x19065: 0x6c941c20, 0x19066: 0x6c3c7e20, 0x19067: 0x6c9d0c20,\n\t0x19068: 0x6d249e20, 0x1906a: 0x6c71e620,\n\t0x1906d: 0x6d2dec20, 0x1906e: 0x6cae8220, 0x1906f: 0x6d15b220,\n\t0x19071: 0x6c61e420, 0x19072: 0x6c08ae20,\n\t0x19074: 0x6cc5b420, 0x19075: 0x6c597220, 0x19076: 0x6c388020, 0x19077: 0x6c43c220,\n\t0x19078: 0x6c7a8020, 0x19079: 0x6c6bb420, 0x1907a: 0x6ccbc220,\n\t0x1907c: 0x6cd7c220, 0x1907d: 0x6ce71620, 0x1907e: 0x6d24c820, 0x1907f: 0x6d3e0420,\n\t// Block 0x642, offset 0x19080\n\t0x19080: 0x6c092c20, 0x19081: 0x6c7ad820, 0x19082: 0x6c859e20, 0x19083: 0x6c598220,\n\t0x19084: 0x6d09e620, 0x19085: 0x6caad820, 0x19087: 0x6d303820,\n\t0x19088: 0x6cf20220, 0x19089: 0x6cfb4420, 0x1908a: 0x6cb85a20, 0x1908b: 0x6d127a20,\n\t0x1908c: 0x6c996c20, 0x1908f: 0x6cd5d420,\n\t0x19091: 0x6cbb7a20, 0x19092: 0x6d3cd220, 0x19093: 0x6c7d6020,\n\t0x19094: 0x6cf4ea20, 0x19095: 0x6d1bb820, 0x19096: 0x6c207220, 0x19097: 0x6ce33e20,\n\t0x19098: 0x6c880e20, 0x19099: 0x6c087820, 0x1909a: 0x6c464e20, 0x1909b: 0x6c986820,\n\t0x1909c: 0x6d01d020, 0x1909d: 0x6c3cec20, 0x1909e: 0x6c909e20, 0x1909f: 0x6d2a1820,\n\t0x190a0: 0x6d335e20, 0x190a1: 0x6c1ea220, 0x190a2: 0x6c980020, 0x190a3: 0x6c8faa20,\n\t0x190a5: 0x6d1b8620, 0x190a6: 0x6cb1f020, 0x190a7: 0x6d337020,\n\t0x190a8: 0x6c653020, 0x190a9: 0x6c945420, 0x190aa: 0x6ca7e420, 0x190ab: 0x6d179a20,\n\t0x190ad: 0x6c623420, 0x190ae: 0x6c60a420, 0x190af: 0x6d2d1a20,\n\t0x190b0: 0x6d221a20, 0x190b1: 0x6c6fa620, 0x190b2: 0x6c585620, 0x190b3: 0x6d34e220,\n\t0x190b4: 0x6c7e3c20, 0x190b5: 0x6c8ca820, 0x190b6: 0x6d34f020, 0x190b7: 0x6c079420,\n\t0x190b8: 0x6d2cae20, 0x190b9: 0x6c705820, 0x190ba: 0x6c286620, 0x190bb: 0x6c8a9020,\n\t0x190bc: 0x6d16e820, 0x190bd: 0x6d2fa020, 0x190be: 0x6cfc8e20, 0x190bf: 0x6c1bf820,\n\t// Block 0x643, offset 0x190c0\n\t0x190c0: 0x6c22ba20, 0x190c1: 0x6c1b8420, 0x190c2: 0x6d0d5420, 0x190c3: 0x6c80aa20,\n\t0x190c4: 0x6c310220, 0x190c5: 0x6c905e20, 0x190c6: 0x6c14ec20,\n\t0x190c8: 0x6ce9a020, 0x190c9: 0x6c13da20, 0x190ca: 0x6c006620, 0x190cb: 0x6c1b9c20,\n\t0x190cd: 0x6d1cec20, 0x190ce: 0x6d305a20, 0x190cf: 0x6ce7ee20,\n\t0x190d1: 0x6ce9a620, 0x190d2: 0x6c13f420, 0x190d3: 0x6d11be20,\n\t0x190d4: 0x6d3ffe20, 0x190d6: 0x6cac4020, 0x190d7: 0x6cbc5620,\n\t0x190d8: 0x6c883220, 0x190d9: 0x6cbd9c20, 0x190da: 0x6c91d820, 0x190db: 0x6d0eb820,\n\t0x190dc: 0x6c778e20, 0x190dd: 0x6cda5e20, 0x190de: 0x6d192820, 0x190df: 0x6c14b420,\n\t0x190e0: 0x6c6ef620, 0x190e1: 0x6c67b020, 0x190e3: 0x6c6ea820,\n\t0x190e5: 0x6c305c20, 0x190e7: 0x6c733620,\n\t0x190e8: 0x6c4e8420, 0x190e9: 0x6c2c1020,\n\t0x190ec: 0x6c52f620, 0x190ee: 0x6c1b0820, 0x190ef: 0x6c2dae20,\n\t0x190f0: 0x6c093020, 0x190f2: 0x6d0a6e20, 0x190f3: 0x6c913e20,\n\t0x190f5: 0x6d007e20, 0x190f6: 0x6c094420,\n\t0x190f8: 0x6c095c20, 0x190fa: 0x6cfb4620, 0x190fb: 0x6cc8c820,\n\t0x190fc: 0x6c0d1420, 0x190fd: 0x6c379620, 0x190fe: 0x6c736220,\n\t// Block 0x644, offset 0x19100\n\t0x19100: 0x6d324820, 0x19101: 0x6c072e20, 0x19102: 0x6c365620, 0x19103: 0x6d227a20,\n\t0x19104: 0x6cc1b220, 0x19105: 0x6d299420, 0x19106: 0x6c9ca820, 0x19107: 0x6d16b220,\n\t0x19108: 0x6cd8e620,\n\t0x1910c: 0x6ccd6e20, 0x1910d: 0x6cdf1620, 0x1910e: 0x6ca28220, 0x1910f: 0x6c6e8220,\n\t0x19110: 0x6c0b9620, 0x19111: 0x6cc68e20, 0x19112: 0x6c136e20, 0x19113: 0x6c120220,\n\t0x19114: 0x6c2f4820,\n\t0x19119: 0x6c2b5620, 0x1911a: 0x6ce7ac20, 0x1911b: 0x6cde3220,\n\t0x1911c: 0x6d03ce20, 0x1911d: 0x6cd90a20, 0x1911e: 0x6c343e20, 0x1911f: 0x6cf85e20,\n\t0x19120: 0x6ce1b220, 0x19122: 0x6ce31620, 0x19123: 0x6ccd7820,\n\t0x19124: 0x6c667620, 0x19125: 0x6d35da20, 0x19126: 0x6cee7220, 0x19127: 0x6d1b4620,\n\t0x1912a: 0x6c58d620, 0x1912b: 0x6d37f220,\n\t0x1912c: 0x6cb78c20, 0x1912d: 0x6d3f8820, 0x1912f: 0x6d01c220,\n\t0x19130: 0x6d01d220, 0x19131: 0x6d2ade20, 0x19132: 0x6cef1e20,\n\t0x19135: 0x6cde9820, 0x19136: 0x6d2d9820, 0x19137: 0x6ca95820,\n\t0x1913b: 0x6d166620,\n\t0x1913c: 0x6cc58420, 0x1913d: 0x6cd59620, 0x1913e: 0x6c142a20, 0x1913f: 0x6d3d1e20,\n\t// Block 0x645, offset 0x19140\n\t0x19141: 0x6c9e0620, 0x19142: 0x6c5fdc20, 0x19143: 0x6c39a420,\n\t0x19144: 0x6cadfe20, 0x19145: 0x6c008e20, 0x19146: 0x6c392020, 0x19147: 0x6c029a20,\n\t0x19148: 0x6cbe0220, 0x19149: 0x6cb82220, 0x1914a: 0x6cffd020, 0x1914b: 0x6c3b1020,\n\t0x1914c: 0x6c417420, 0x1914d: 0x6cbb6620, 0x1914e: 0x6c437a20, 0x1914f: 0x6ce71c20,\n\t0x19150: 0x6c14ba20, 0x19151: 0x6d201620, 0x19152: 0x6c42b420, 0x19153: 0x6c07a820,\n\t0x19154: 0x6c3fb420, 0x19155: 0x6c1f0c20, 0x19156: 0x6d3aac20,\n\t0x19158: 0x6d390020, 0x1915a: 0x6c4f6220, 0x1915b: 0x6ca8e420,\n\t0x1915c: 0x6c73f820, 0x1915d: 0x6c1cb020, 0x1915e: 0x6c143820, 0x1915f: 0x6c799c20,\n\t0x19160: 0x6c8ae820, 0x19161: 0x6c85a020, 0x19162: 0x6d22e020,\n\t0x19164: 0x6d20d620, 0x19165: 0x6c4d5820, 0x19166: 0x6c85a220, 0x19167: 0x6c53ee20,\n\t0x19168: 0x6c45d820, 0x19169: 0x6c789820, 0x1916a: 0x6d260c20, 0x1916b: 0x6c2a6220,\n\t0x1916c: 0x6c5b9a20, 0x1916e: 0x6c4a2220, 0x1916f: 0x6c6f0620,\n\t0x19170: 0x6d429a20, 0x19171: 0x6c3fce20, 0x19172: 0x6cbcb220, 0x19173: 0x6c06c820,\n\t0x19174: 0x6c180a20, 0x19175: 0x6c223e20, 0x19176: 0x6c985020, 0x19177: 0x6c4d9820,\n\t0x19178: 0x6cf86a20, 0x19179: 0x6cc02e20, 0x1917a: 0x6c5a4620,\n\t0x1917d: 0x6c1d9620, 0x1917e: 0x6cca4c20, 0x1917f: 0x6d0bf420,\n\t// Block 0x646, offset 0x19180\n\t0x19180: 0x6d345620, 0x19181: 0x6c2a6c20, 0x19182: 0x6ce27420, 0x19183: 0x6c9aec20,\n\t0x19184: 0x6c8ce220, 0x19185: 0x6cd45e20, 0x19186: 0x6ce9fa20, 0x19187: 0x6c119220,\n\t0x19188: 0x6c2ea020, 0x19189: 0x6c181420, 0x1918a: 0x6cae9c20, 0x1918b: 0x6d13f020,\n\t0x1918c: 0x6c711220, 0x1918d: 0x6c61e820, 0x1918e: 0x6c7f0620, 0x1918f: 0x6ce4ea20,\n\t0x19190: 0x6d261a20, 0x19192: 0x6c112820, 0x19193: 0x6cb4e420,\n\t0x19194: 0x6d230e20, 0x19195: 0x6c880220, 0x19196: 0x6c231420,\n\t0x1919a: 0x6d212020, 0x1919b: 0x6c603220,\n\t0x1919c: 0x6cf09420, 0x1919d: 0x6c9cf020, 0x1919e: 0x6cdc3e20, 0x1919f: 0x6d00aa20,\n\t0x191a0: 0x6d059620, 0x191a1: 0x6c1c1c20, 0x191a2: 0x6cc06020, 0x191a3: 0x6c5bde20,\n\t0x191a5: 0x6d212220, 0x191a6: 0x6cbcc620, 0x191a7: 0x6cd74e20,\n\t0x191a8: 0x6cd72620, 0x191a9: 0x6c349020, 0x191aa: 0x6c908820,\n\t0x191ac: 0x6cad0620, 0x191ad: 0x6cdf7820, 0x191ae: 0x6d393020, 0x191af: 0x6d1af420,\n\t0x191b0: 0x6ccab420, 0x191b1: 0x6c3a5a20, 0x191b2: 0x6c187620, 0x191b3: 0x6d258020,\n\t0x191b4: 0x6d151620, 0x191b5: 0x6c5d2a20, 0x191b6: 0x6ccb3420, 0x191b7: 0x6d131020,\n\t0x191b8: 0x6c9fbc20, 0x191b9: 0x6c3bbe20, 0x191ba: 0x6c513620,\n\t0x191bc: 0x6d1b6420, 0x191bd: 0x6c130220, 0x191be: 0x6ca6b620, 0x191bf: 0x6c02e820,\n\t// Block 0x647, offset 0x191c0\n\t0x191c0: 0x6c3cb420, 0x191c1: 0x6c883420, 0x191c2: 0x6c16be20, 0x191c3: 0x6c15c820,\n\t0x191c4: 0x6c967020, 0x191c5: 0x6c2e5a20, 0x191c6: 0x6c54e620, 0x191c7: 0x6c928020,\n\t0x191c9: 0x6d184c20, 0x191ca: 0x6c574e20, 0x191cb: 0x6d2bf220,\n\t0x191cc: 0x6c550020, 0x191cd: 0x6c368420, 0x191ce: 0x6c5dee20, 0x191cf: 0x6cdcf820,\n\t0x191d0: 0x6ca6bc20, 0x191d1: 0x6cfcf620, 0x191d2: 0x6c842620, 0x191d3: 0x6cfcf820,\n\t0x191d4: 0x6d0eba20, 0x191d5: 0x6c8fa420, 0x191d6: 0x6c9af620, 0x191d7: 0x6c6c5c20,\n\t0x191d8: 0x6c5f5020, 0x191da: 0x6c0b5a20, 0x191db: 0x6d22a420,\n\t0x191dc: 0x6c5e0620, 0x191dd: 0x6c9ea420, 0x191de: 0x6c1df220, 0x191df: 0x6c970620,\n\t0x191e1: 0x6c822c20, 0x191e2: 0x6c6b5620, 0x191e3: 0x6cf10a20,\n\t0x191e4: 0x6d192a20, 0x191e5: 0x6d07e020, 0x191e6: 0x6cf91420, 0x191e7: 0x6c11e220,\n\t0x191e8: 0x6c7fe420, 0x191e9: 0x6d1b2220, 0x191ea: 0x6d027220, 0x191eb: 0x6d28a620,\n\t0x191ec: 0x6c95d220, 0x191ed: 0x6c8dd220, 0x191ee: 0x6cb97020, 0x191ef: 0x6c5d9a20,\n\t0x191f0: 0x6c646a20, 0x191f1: 0x6cf2a820,\n\t0x191f4: 0x6c43d420, 0x191f5: 0x6d399020, 0x191f6: 0x6c2e8220, 0x191f7: 0x6d1e2c20,\n\t0x191f8: 0x6c614220, 0x191f9: 0x6d0fc020, 0x191fa: 0x6cc82220, 0x191fb: 0x6cf79a20,\n\t0x191fc: 0x6cd6f020, 0x191fd: 0x6d240820, 0x191fe: 0x6d146020, 0x191ff: 0x6cb9f220,\n\t// Block 0x648, offset 0x19200\n\t0x19200: 0x6c5fde20, 0x19201: 0x6cc26420, 0x19202: 0x6ce48a20, 0x19203: 0x6cd42820,\n\t0x19204: 0x6cb9ee20, 0x19205: 0x6ca26020, 0x19206: 0x6c6c2620, 0x19207: 0x6c992420,\n\t0x19208: 0x6d1ac820, 0x19209: 0x6c412a20, 0x1920a: 0x6cb2ee20, 0x1920b: 0x6d084020,\n\t0x1920c: 0x6c994220, 0x1920d: 0x6c39c020, 0x1920e: 0x6d0b1020, 0x1920f: 0x6c425420,\n\t0x19210: 0x6cd95020, 0x19211: 0x6c5a8a20, 0x19212: 0x6d22d620, 0x19213: 0x6c484820,\n\t0x19214: 0x6c48e820, 0x19215: 0x6c8ef820, 0x19216: 0x6c35de20, 0x19217: 0x6d3eec20,\n\t0x19218: 0x6d3f3220, 0x19219: 0x6c093820, 0x1921a: 0x6cec1620,\n\t0x1921c: 0x6c8acc20, 0x1921f: 0x6c7af620,\n\t0x19221: 0x6c4d5a20, 0x19222: 0x6d19b020, 0x19223: 0x6d398820,\n\t0x19224: 0x6c1d4820, 0x19225: 0x6cfbea20, 0x19226: 0x6d087420,\n\t0x19228: 0x6cc01420, 0x19229: 0x6cae0c20, 0x1922a: 0x6c4ad620, 0x1922b: 0x6c373e20,\n\t0x1922c: 0x6c45dc20, 0x1922d: 0x6cbf0820, 0x1922e: 0x6c54ac20, 0x1922f: 0x6c81a620,\n\t0x19230: 0x6c85a420, 0x19231: 0x6c192220, 0x19232: 0x6cca1620, 0x19233: 0x6d3df420,\n\t0x19234: 0x6cf2ae20, 0x19235: 0x6cb3d420, 0x19236: 0x6c793020, 0x19237: 0x6cea8820,\n\t0x19238: 0x6cae5c20, 0x19239: 0x6ce27620, 0x1923a: 0x6cde4a20, 0x1923b: 0x6d3d4c20,\n\t0x1923c: 0x6c0c8e20, 0x1923d: 0x6c480e20, 0x1923e: 0x6c54be20,\n\t// Block 0x649, offset 0x19240\n\t0x19240: 0x6c0de020, 0x19241: 0x6d35de20, 0x19242: 0x6c302e20, 0x19243: 0x6c332220,\n\t0x19244: 0x6d387220, 0x19245: 0x6ca58a20, 0x19246: 0x6c8c1c20, 0x19247: 0x6cb32a20,\n\t0x19248: 0x6c613420, 0x19249: 0x6c9f5420, 0x1924a: 0x6cefc220, 0x1924b: 0x6c17ea20,\n\t0x1924c: 0x6c46b620, 0x1924d: 0x6c053220, 0x1924e: 0x6cc7aa20, 0x1924f: 0x6cdfa820,\n\t0x19250: 0x6c103a20, 0x19251: 0x6d3f8c20, 0x19252: 0x6c7c3c20, 0x19253: 0x6c815820,\n\t0x19254: 0x6c4ec220, 0x19255: 0x6d1c7020, 0x19256: 0x6d362620, 0x19257: 0x6c6ac620,\n\t0x19258: 0x6d040220, 0x19259: 0x6d00b820, 0x1925a: 0x6d0a1620, 0x1925b: 0x6ccd4620,\n\t0x1925c: 0x6cb9a620, 0x1925d: 0x6d004620, 0x1925e: 0x6cdacc20, 0x1925f: 0x6c4d1820,\n\t0x19260: 0x6c9d5820, 0x19261: 0x6c5cee20, 0x19262: 0x6caf7220,\n\t0x19264: 0x6c5be020, 0x19265: 0x6ca34c20, 0x19266: 0x6cd96220, 0x19267: 0x6c07bc20,\n\t0x19268: 0x6c1d7220, 0x19269: 0x6c6ae220, 0x1926a: 0x6c5a6e20, 0x1926b: 0x6c802c20,\n\t0x1926d: 0x6c56b420, 0x1926e: 0x6c30b620, 0x1926f: 0x6c5de420,\n\t0x19270: 0x6c4bd420, 0x19271: 0x6d111c20, 0x19272: 0x6c130420, 0x19273: 0x6c4b1220,\n\t0x19274: 0x6c66a620, 0x19275: 0x6c65c020, 0x19276: 0x6c29e620, 0x19277: 0x6c6d2420,\n\t0x19278: 0x6c96cc20, 0x19279: 0x6c5bf820, 0x1927a: 0x6c9e3420, 0x1927b: 0x6c11a820,\n\t0x1927c: 0x6c94ba20, 0x1927d: 0x6cb0aa20, 0x1927e: 0x6d105a20, 0x1927f: 0x6c726420,\n\t// Block 0x64a, offset 0x19280\n\t0x19280: 0x6c726620, 0x19281: 0x6cc3dc20, 0x19283: 0x6cb91220,\n\t0x19284: 0x6ccc8e20, 0x19286: 0x6c701820, 0x19287: 0x6c5df020,\n\t0x19288: 0x6d27fa20, 0x19289: 0x6c26b820, 0x1928a: 0x6d07ba20, 0x1928b: 0x6cff0420,\n\t0x1928c: 0x6c3ac620, 0x1928d: 0x6c131020, 0x1928e: 0x6d132420,\n\t0x19290: 0x6c2a9820, 0x19292: 0x6cbda020, 0x19293: 0x6c5b6a20,\n\t0x19294: 0x6cea6c20, 0x19296: 0x6cbb2420, 0x19297: 0x6cf7a020,\n\t0x19298: 0x6ca64a20, 0x19299: 0x6cc9ce20, 0x1929a: 0x6c9b5620, 0x1929b: 0x6ce95e20,\n\t0x1929c: 0x6c804220, 0x1929d: 0x6c4ff220, 0x1929e: 0x6c22e620, 0x1929f: 0x6d2d4e20,\n\t0x192a0: 0x6c023220, 0x192a1: 0x6c95c420, 0x192a2: 0x6c9efa20,\n\t0x192a4: 0x6c3daa20, 0x192a6: 0x6d010c20, 0x192a7: 0x6c0f8c20,\n\t0x192a8: 0x6c5c6820, 0x192a9: 0x6cbeb820, 0x192aa: 0x6d010e20,\n\t0x192ad: 0x6c0fa220, 0x192ae: 0x6cb9dc20, 0x192af: 0x6cb34020,\n\t0x192b0: 0x6c696820, 0x192b1: 0x6c750a20, 0x192b2: 0x6c7dc620, 0x192b3: 0x6cd97a20,\n\t0x192b4: 0x6c718e20, 0x192b5: 0x6c36f020, 0x192b6: 0x6ca8c020, 0x192b7: 0x6cb95a20,\n\t0x192b8: 0x6c2f1a20, 0x192b9: 0x6c2f1c20, 0x192bb: 0x6cb4da20,\n\t0x192bc: 0x6d33c220, 0x192bd: 0x6cb5c620, 0x192be: 0x6d3c8620, 0x192bf: 0x6c7a1c20,\n\t// Block 0x64b, offset 0x192c0\n\t0x192c0: 0x6d20b420, 0x192c1: 0x6cbd5820, 0x192c2: 0x6c7a2620, 0x192c3: 0x6c50d420,\n\t0x192c4: 0x6c3e0a20, 0x192c6: 0x6c2be220, 0x192c7: 0x6cfca620,\n\t0x192c8: 0x6c4b3c20, 0x192c9: 0x6c50ee20, 0x192ca: 0x6cc44620, 0x192cb: 0x6c4eaa20,\n\t0x192cc: 0x6ce7b420, 0x192cd: 0x6c0ee620, 0x192ce: 0x6ccd3e20, 0x192cf: 0x6c08de20,\n\t0x192d0: 0x6c924e20, 0x192d1: 0x6d12f020, 0x192d2: 0x6ca5e220, 0x192d3: 0x6c1fba20,\n\t0x192d4: 0x6cca5020, 0x192d5: 0x6c2e2820, 0x192d6: 0x6c925020, 0x192d7: 0x6ce81220,\n\t0x192d8: 0x6c88bc20, 0x192d9: 0x6c786620, 0x192da: 0x6cca5220, 0x192db: 0x6d31e420,\n\t0x192dc: 0x6c1fc020, 0x192dd: 0x6c890220, 0x192de: 0x6c998c20,\n\t0x192e0: 0x6cb90620, 0x192e1: 0x6c769220, 0x192e2: 0x6cceb620, 0x192e3: 0x6cfeea20,\n\t0x192e4: 0x6c0a2020, 0x192e5: 0x6d2bf420, 0x192e6: 0x6d1b7220, 0x192e7: 0x6cf6bc20,\n\t0x192e8: 0x6ccdaa20, 0x192e9: 0x6cdb1220, 0x192ea: 0x6cc98e20, 0x192eb: 0x6cc8e820,\n\t0x192ec: 0x6c219c20, 0x192ed: 0x6c917c20, 0x192ee: 0x6c8d9820, 0x192ef: 0x6c13c620,\n\t0x192f1: 0x6c593020,\n\t0x192f4: 0x6c63a220, 0x192f5: 0x6c04ee20, 0x192f6: 0x6c553220, 0x192f7: 0x6c30ec20,\n\t0x192f9: 0x6c90f020, 0x192fa: 0x6c70d220, 0x192fb: 0x6c73a620,\n\t0x192fc: 0x6c785c20, 0x192fd: 0x6cdd5220, 0x192fe: 0x6c95f020, 0x192ff: 0x6d303c20,\n\t// Block 0x64c, offset 0x19300\n\t0x19300: 0x6c2f7220, 0x19301: 0x6c32d220, 0x19302: 0x6d3b1c20, 0x19303: 0x6d0d3a20,\n\t0x19304: 0x6cacf420, 0x19305: 0x6c13d820,\n\t0x1930a: 0x6d15e620,\n\t0x1930d: 0x6d1f3420, 0x1930e: 0x6c5ae620, 0x1930f: 0x6d11c820,\n\t0x19310: 0x6d118020, 0x19311: 0x6d34d620, 0x19312: 0x6c45d220, 0x19313: 0x6cb6d420,\n\t0x19314: 0x6c44ac20, 0x19317: 0x6c545c20,\n\t0x19318: 0x6c9d2420, 0x19319: 0x6c3df020, 0x1931a: 0x6c54a020, 0x1931b: 0x6c4a1a20,\n\t0x1931c: 0x6ce05620, 0x1931d: 0x6c2b1a20, 0x1931f: 0x6d0c7220,\n\t0x19322: 0x6cc26620,\n\t0x19324: 0x6c16e420, 0x19325: 0x6ca02e20, 0x19326: 0x6ce1bc20, 0x19327: 0x6c063c20,\n\t0x19328: 0x6c011e20, 0x1932b: 0x6cfbf620,\n\t0x1932f: 0x6c996e20,\n\t0x19330: 0x6c811c20, 0x19331: 0x6ca42220, 0x19332: 0x6c070c20, 0x19333: 0x6c18be20,\n\t0x19335: 0x6c3a0420, 0x19336: 0x6d38e620, 0x19337: 0x6c5ece20,\n\t0x19338: 0x6c6a1420, 0x19339: 0x6cd5d620, 0x1933b: 0x6c7dd220,\n\t0x1933c: 0x6c2ea620, 0x1933d: 0x6c925220,\n\t// Block 0x64d, offset 0x19340\n\t0x19342: 0x6d215020, 0x19343: 0x6cdf2620,\n\t0x19344: 0x6c162e20, 0x19345: 0x6c97de20, 0x19346: 0x6c9fb820, 0x19347: 0x6c593220,\n\t0x19348: 0x6cf15420, 0x19349: 0x6caa9220, 0x1934a: 0x6c593420, 0x1934b: 0x6c540a20,\n\t0x1934c: 0x6c6e8e20, 0x1934d: 0x6c0f2620, 0x1934e: 0x6cfc2020, 0x1934f: 0x6c864820,\n\t0x19350: 0x6c6d2620, 0x19352: 0x6c989c20, 0x19353: 0x6cb1ba20,\n\t0x19354: 0x6c4fde20, 0x19355: 0x6d0fd620, 0x19357: 0x6cfd0a20,\n\t0x19358: 0x6cdb1420, 0x19359: 0x6cf01620, 0x1935a: 0x6c183c20, 0x1935b: 0x6cf6be20,\n\t0x1935c: 0x6c6d4c20, 0x1935d: 0x6c135a20, 0x1935e: 0x6c51e420, 0x1935f: 0x6c3b4020,\n\t0x19360: 0x6ccca620, 0x19361: 0x6c8d6a20, 0x19363: 0x6c337220,\n\t0x19364: 0x6cb54220, 0x19365: 0x6cb4b820, 0x19366: 0x6d26fa20, 0x19367: 0x6c0f8e20,\n\t0x19369: 0x6c5c7820, 0x1936a: 0x6c2f0220, 0x1936b: 0x6d0ef620,\n\t0x1936c: 0x6c72d020, 0x1936d: 0x6c69e020, 0x1936e: 0x6ca44c20, 0x1936f: 0x6c8b8620,\n\t0x19370: 0x6d20aa20, 0x19371: 0x6ce41c20, 0x19372: 0x6ce47620, 0x19373: 0x6cf42a20,\n\t0x19374: 0x6c53a220, 0x19375: 0x6cff7220, 0x19376: 0x6c503620,\n\t0x19378: 0x6ce55c20, 0x19379: 0x6d32ca20, 0x1937b: 0x6c59a020,\n\t0x1937c: 0x6c403420, 0x1937f: 0x6cea2c20,\n\t// Block 0x64e, offset 0x19380\n\t0x19381: 0x6cc61a20, 0x19382: 0x6c68ba20,\n\t0x19384: 0x6d031c20, 0x19387: 0x6d260020,\n\t0x19388: 0x6c73ee20, 0x19389: 0x6c572820, 0x1938b: 0x6c056020,\n\t0x1938c: 0x6ca1c420, 0x1938e: 0x6c425e20, 0x1938f: 0x6cef9220,\n\t0x19391: 0x6c9a8020, 0x19392: 0x6cd89c20, 0x19393: 0x6c0b8820,\n\t0x19394: 0x6c914220, 0x19395: 0x6cc0e620,\n\t0x19398: 0x6c43da20, 0x19399: 0x6d303e20, 0x1939a: 0x6c938c20, 0x1939b: 0x6cac2020,\n\t0x1939c: 0x6cc66220, 0x1939d: 0x6cc03020, 0x1939e: 0x6c8aea20, 0x1939f: 0x6c45e020,\n\t0x193a0: 0x6cfbf820, 0x193a1: 0x6cf86e20, 0x193a2: 0x6d02c620,\n\t0x193a4: 0x6ca79620,\n\t0x193a8: 0x6d00a220, 0x193a9: 0x6c8afe20, 0x193aa: 0x6c3d6420, 0x193ab: 0x6c25d620,\n\t0x193ac: 0x6d3d4e20, 0x193ad: 0x6c034820, 0x193ae: 0x6d429c20, 0x193af: 0x6d305020,\n\t0x193b0: 0x6d416e20, 0x193b1: 0x6c510620, 0x193b2: 0x6c601a20,\n\t0x193b4: 0x6c648620,\n\t0x193b8: 0x6ce8b020, 0x193b9: 0x6cfb5c20, 0x193ba: 0x6d0d8620, 0x193bb: 0x6ce0f420,\n\t0x193bc: 0x6cde5620, 0x193bd: 0x6c2bf620, 0x193be: 0x6c744c20, 0x193bf: 0x6c01fc20,\n\t// Block 0x64f, offset 0x193c0\n\t0x193c0: 0x6c4e1020, 0x193c1: 0x6cff8820, 0x193c2: 0x6c712020, 0x193c3: 0x6cee8c20,\n\t0x193c4: 0x6c054c20, 0x193c5: 0x6d3c5e20, 0x193c6: 0x6ca82e20, 0x193c7: 0x6ce53820,\n\t0x193c8: 0x6ca3c020, 0x193cb: 0x6d1fd420,\n\t0x193cc: 0x6c9dc620, 0x193cf: 0x6ca3c820,\n\t0x193d0: 0x6cd13c20, 0x193d1: 0x6c13a220, 0x193d2: 0x6d0c1020, 0x193d3: 0x6c44b620,\n\t0x193d4: 0x6c1d5420, 0x193d5: 0x6cc86420, 0x193d6: 0x6c63ca20, 0x193d7: 0x6cbd8220,\n\t0x193d8: 0x6c98e620, 0x193d9: 0x6c365c20, 0x193da: 0x6c863220, 0x193db: 0x6c1b3420,\n\t0x193dc: 0x6d29da20, 0x193dd: 0x6c513820, 0x193de: 0x6c6ae420, 0x193df: 0x6ca72c20,\n\t0x193e1: 0x6c499020, 0x193e2: 0x6c540c20, 0x193e3: 0x6c414220,\n\t0x193e5: 0x6c07be20, 0x193e6: 0x6cdd8020, 0x193e7: 0x6cf37220,\n\t0x193e8: 0x6c623820, 0x193e9: 0x6cf66a20, 0x193ea: 0x6cbf4a20, 0x193eb: 0x6c515820,\n\t0x193ec: 0x6cf23020, 0x193ed: 0x6cfb7220, 0x193ee: 0x6c6b0820, 0x193ef: 0x6c5cf820,\n\t0x193f0: 0x6cb00420, 0x193f1: 0x6cd00620, 0x193f2: 0x6c1d7620, 0x193f3: 0x6d324e20,\n\t0x193f5: 0x6d2d8a20, 0x193f6: 0x6cd78a20, 0x193f7: 0x6c5f0420,\n\t0x193f8: 0x6cd99420, 0x193f9: 0x6d354220, 0x193fa: 0x6c07a220,\n\t0x193fe: 0x6c810e20, 0x193ff: 0x6c0a2220,\n\t// Block 0x650, offset 0x19400\n\t0x19400: 0x6d08ae20, 0x19401: 0x6cade820, 0x19402: 0x6c278a20,\n\t0x19404: 0x6d340e20, 0x19405: 0x6cb00e20, 0x19406: 0x6c15d420, 0x19407: 0x6c0a2420,\n\t0x19408: 0x6cdafa20, 0x19409: 0x6c5df220, 0x1940a: 0x6c523420, 0x1940b: 0x6c6f2a20,\n\t0x1940c: 0x6c200620, 0x1940d: 0x6c67b420, 0x1940e: 0x6ca5a020, 0x1940f: 0x6c47be20,\n\t0x19410: 0x6c39de20, 0x19413: 0x6cde9a20,\n\t0x19414: 0x6c256020, 0x19415: 0x6cf6c220, 0x19416: 0x6c2a8420, 0x19417: 0x6cfb9020,\n\t0x19418: 0x6c7b7220, 0x19419: 0x6d308a20, 0x1941a: 0x6cddfc20, 0x1941b: 0x6c55ae20,\n\t0x1941c: 0x6c256220, 0x1941d: 0x6c92c820, 0x1941e: 0x6c738c20, 0x1941f: 0x6c92ca20,\n\t0x19420: 0x6cba7220, 0x19421: 0x6cad9620, 0x19422: 0x6d326c20,\n\t0x19424: 0x6c867a20, 0x19425: 0x6c128e20, 0x19426: 0x6cb64a20,\n\t0x19429: 0x6ce41e20, 0x1942a: 0x6c8d6c20, 0x1942b: 0x6cc1d420,\n\t0x1942c: 0x6c88cc20, 0x1942d: 0x6c91e020, 0x1942e: 0x6cd54020, 0x1942f: 0x6c462620,\n\t0x19430: 0x6d309a20, 0x19431: 0x6cad3c20, 0x19432: 0x6c6d5a20, 0x19433: 0x6cbe9020,\n\t0x19436: 0x6d3fc420, 0x19437: 0x6cb46620,\n\t0x19438: 0x6c6cbc20, 0x19439: 0x6c0c8620, 0x1943a: 0x6c66ee20, 0x1943b: 0x6c4bf220,\n\t0x1943e: 0x6d2a3020, 0x1943f: 0x6c8b5a20,\n\t// Block 0x651, offset 0x19440\n\t0x19440: 0x6c848a20, 0x19441: 0x6c95c620, 0x19442: 0x6cd08620, 0x19443: 0x6c9de220,\n\t0x19444: 0x6c66fc20, 0x19445: 0x6c2bb020, 0x19446: 0x6c076a20,\n\t0x19448: 0x6c88d420, 0x1944a: 0x6cfbc620, 0x1944b: 0x6cb22220,\n\t0x1944c: 0x6cc41620, 0x1944d: 0x6c8fda20, 0x1944e: 0x6d41e020,\n\t0x19450: 0x6c74fe20, 0x19451: 0x6ccd2020, 0x19452: 0x6d092620,\n\t0x19454: 0x6d027820, 0x19456: 0x6c804e20, 0x19457: 0x6cb6aa20,\n\t0x19458: 0x6d159820, 0x19459: 0x6caad420, 0x1945a: 0x6c84ca20, 0x1945b: 0x6d271e20,\n\t0x1945d: 0x6d15be20, 0x1945e: 0x6c1a9220, 0x1945f: 0x6c619620,\n\t0x19460: 0x6c4f4a20, 0x19461: 0x6d015e20, 0x19462: 0x6c792a20, 0x19463: 0x6d3e1020,\n\t0x19464: 0x6c509220, 0x19465: 0x6cf86220, 0x19466: 0x6cc26820, 0x19467: 0x6c4d1020,\n\t0x19468: 0x6cf95220, 0x19469: 0x6c4d1220, 0x1946a: 0x6c4a4820, 0x1946b: 0x6c14c220,\n\t0x1946c: 0x6d09fa20, 0x1946d: 0x6d058220, 0x1946e: 0x6cd09c20, 0x1946f: 0x6c79e820,\n\t0x19470: 0x6cf96020, 0x19471: 0x6ccc4a20, 0x19472: 0x6d208a20, 0x19473: 0x6d0bae20,\n\t0x19474: 0x6cb3f220, 0x19475: 0x6d40bc20, 0x19476: 0x6d1fc820, 0x19477: 0x6d3f3e20,\n\t0x19478: 0x6c88be20, 0x19479: 0x6cfaaa20, 0x1947a: 0x6cfa3e20, 0x1947b: 0x6d15f620,\n\t0x1947c: 0x6ccc5820, 0x1947d: 0x6d0e8420, 0x1947e: 0x6c69a220, 0x1947f: 0x6cf66e20,\n\t// Block 0x652, offset 0x19480\n\t0x19480: 0x6c1bb620, 0x19481: 0x6cd3b220, 0x19482: 0x6c774620, 0x19483: 0x6d1afc20,\n\t0x19484: 0x6c522420, 0x19485: 0x6d189620, 0x19486: 0x6cf6e820, 0x19487: 0x6ccb6a20,\n\t0x19488: 0x6c6d5c20, 0x19489: 0x6d135e20, 0x1948a: 0x6d1ec420, 0x1948b: 0x6cc41820,\n\t0x1948c: 0x6d129a20, 0x1948d: 0x6c945e20, 0x1948e: 0x6c7d9c20, 0x1948f: 0x6d333820,\n\t0x19494: 0x6d003a20, 0x19496: 0x6c253a20, 0x19497: 0x6d04e420,\n\t0x19498: 0x6c01d820, 0x19499: 0x6d051e20, 0x1949a: 0x6c118820, 0x1949b: 0x6c201820,\n\t0x1949c: 0x6d2c1e20, 0x1949e: 0x6d16f420, 0x1949f: 0x6caf4420,\n\t0x194a0: 0x6c7a3020, 0x194a1: 0x6cd0fa20, 0x194a2: 0x6c80bc20, 0x194a3: 0x6ce9e420,\n\t0x194a4: 0x6cf61020, 0x194a5: 0x6c8d0620, 0x194a6: 0x6cb4f820, 0x194a7: 0x6cf2f020,\n\t0x194a8: 0x6c88fa20, 0x194a9: 0x6c319e20, 0x194aa: 0x6c9af420, 0x194ab: 0x6c807220,\n\t0x194ac: 0x6cefdc20, 0x194ad: 0x6c32ca20, 0x194ae: 0x6c7b2a20, 0x194af: 0x6c004c20,\n\t0x194b0: 0x6d291a20, 0x194b1: 0x6c5bfa20, 0x194b2: 0x6d182620, 0x194b3: 0x6ca14c20,\n\t0x194b4: 0x6d3f5e20, 0x194b5: 0x6c3be820, 0x194b6: 0x6caec420,\n\t0x194b8: 0x6c0a6c20, 0x194b9: 0x6c871e20, 0x194ba: 0x6c918220, 0x194bb: 0x6c964620,\n\t0x194bc: 0x6c4d0a20, 0x194bd: 0x6d31bc20, 0x194be: 0x6c40ee20, 0x194bf: 0x6cc3ac20,\n\t// Block 0x653, offset 0x194c0\n\t0x194c0: 0x6d315220, 0x194c1: 0x6c797a20, 0x194c2: 0x6c1a0420, 0x194c3: 0x6c6ffe20,\n\t0x194c4: 0x6c746420, 0x194c5: 0x6c623a20, 0x194c6: 0x6c8d5620,\n\t0x194c8: 0x6cceaa20, 0x194c9: 0x6cc40020, 0x194ca: 0x6cc8ea20, 0x194cb: 0x6c21ac20,\n\t0x194cc: 0x6ca5b220, 0x194cd: 0x6d339820, 0x194ce: 0x6c907a20, 0x194cf: 0x6cad3620,\n\t0x194d2: 0x6c063820, 0x194d3: 0x6cc66420,\n\t0x194d4: 0x6cfa9a20, 0x194d5: 0x6c832c20, 0x194d6: 0x6cfeb420, 0x194d7: 0x6c3d6620,\n\t0x194d8: 0x6cc18620, 0x194da: 0x6ccbe820, 0x194db: 0x6d352c20,\n\t0x194dc: 0x6cdfe020, 0x194dd: 0x6cc70e20, 0x194de: 0x6cda4a20, 0x194df: 0x6d1cf620,\n\t0x194e0: 0x6c98e820, 0x194e1: 0x6ca3ca20, 0x194e2: 0x6c0baa20,\n\t0x194e4: 0x6cd65820, 0x194e5: 0x6ce11020, 0x194e6: 0x6c4ee220, 0x194e7: 0x6ccaf620,\n\t0x194e8: 0x6cc69420, 0x194ea: 0x6c2aa820, 0x194eb: 0x6cb44e20,\n\t0x194ec: 0x6c687820, 0x194ed: 0x6ce07620, 0x194ef: 0x6cc48e20,\n\t0x194f0: 0x6ca92c20, 0x194f1: 0x6c8b5c20, 0x194f2: 0x6c2f2020, 0x194f3: 0x6c2e8620,\n\t0x194f4: 0x6d381620, 0x194f6: 0x6c93f420, 0x194f7: 0x6c28b020,\n\t0x194f8: 0x6cf56020, 0x194f9: 0x6c4aba20, 0x194fa: 0x6c5fbe20, 0x194fb: 0x6ca67620,\n\t0x194fc: 0x6d164a20, 0x194fd: 0x6ca75820, 0x194fe: 0x6d221e20, 0x194ff: 0x6cedf220,\n\t// Block 0x654, offset 0x19500\n\t0x19500: 0x6c4ce620, 0x19501: 0x6d2b3c20, 0x19502: 0x6d0c5820, 0x19503: 0x6c251a20,\n\t0x19504: 0x6cfb2620, 0x19505: 0x6c68be20, 0x19506: 0x6ce80620, 0x19507: 0x6c3fac20,\n\t0x19508: 0x6cae0020, 0x1950a: 0x6d1e9220, 0x1950b: 0x6cbfa220,\n\t0x1950c: 0x6d0ad620, 0x1950d: 0x6c107220, 0x1950e: 0x6c0b7c20, 0x1950f: 0x6cd31c20,\n\t0x19510: 0x6d2c2220, 0x19511: 0x6d16c020, 0x19512: 0x6c0b7e20,\n\t0x19514: 0x6c333820, 0x19515: 0x6c7f8e20, 0x19516: 0x6d13d820, 0x19517: 0x6c149220,\n\t0x19518: 0x6c1cb220, 0x19519: 0x6d087820, 0x1951a: 0x6d069220, 0x1951b: 0x6d20d820,\n\t0x1951c: 0x6d04c020,\n\t0x19520: 0x6cde3620, 0x19521: 0x6c4c1620,\n\t0x19525: 0x6c906420, 0x19526: 0x6d018220, 0x19527: 0x6c180c20,\n\t0x19528: 0x6c657e20, 0x19529: 0x6cdf9820, 0x1952a: 0x6cb08c20, 0x1952b: 0x6d296820,\n\t0x1952c: 0x6d080620, 0x1952d: 0x6cfb3c20, 0x1952e: 0x6ca7d220,\n\t0x19534: 0x6c9d3820, 0x19535: 0x6c61f020, 0x19536: 0x6caa1c20, 0x19537: 0x6c54c020,\n\t0x19538: 0x6c571020, 0x19539: 0x6cee1020, 0x1953a: 0x6d1f2a20, 0x1953b: 0x6d2ac020,\n\t0x1953c: 0x6c09a020, 0x1953d: 0x6c9cee20, 0x1953e: 0x6cbab020, 0x1953f: 0x6d019220,\n\t// Block 0x655, offset 0x19540\n\t0x19540: 0x6c394420, 0x19541: 0x6d176020, 0x19542: 0x6cdfa020, 0x19543: 0x6c832e20,\n\t0x19544: 0x6d1e2e20, 0x19546: 0x6c6d0220, 0x19547: 0x6ccf4a20,\n\t0x19548: 0x6d1b4820, 0x19549: 0x6c613820, 0x1954b: 0x6cdaa620,\n\t0x1954f: 0x6cee1c20,\n\t0x19550: 0x6c9e5820, 0x19551: 0x6cdab420, 0x19552: 0x6d17a620, 0x19553: 0x6ccc8820,\n\t0x19554: 0x6cf61420, 0x19555: 0x6c603e20, 0x19556: 0x6c960020, 0x19557: 0x6d1ea620,\n\t0x19558: 0x6c998220, 0x19559: 0x6d2c7c20, 0x1955a: 0x6cdc4020, 0x1955b: 0x6d362a20,\n\t0x1955c: 0x6c0b9c20, 0x1955d: 0x6c83d820,\n\t0x19565: 0x6cbc4820, 0x19566: 0x6c498e20, 0x19567: 0x6cf64a20,\n\t0x19568: 0x6d324a20, 0x19569: 0x6d1d9020, 0x1956a: 0x6ca84020, 0x1956b: 0x6c75ca20,\n\t0x1956c: 0x6d01c620, 0x1956d: 0x6d11b620, 0x1956e: 0x6d01c820, 0x1956f: 0x6d33f020,\n\t0x19570: 0x6ca5a820, 0x19572: 0x6cd7f420, 0x19573: 0x6c903620,\n\t0x19574: 0x6c18d220, 0x19575: 0x6c9d5c20, 0x19576: 0x6cc3cc20, 0x19577: 0x6c27e420,\n\t0x19578: 0x6ccd4820,\n\t0x1957c: 0x6cdae820, 0x1957d: 0x6d01da20, 0x1957e: 0x6c0f2820, 0x1957f: 0x6c2f7a20,\n\t// Block 0x656, offset 0x19580\n\t0x19580: 0x6d40ca20, 0x19582: 0x6cd5f220, 0x19583: 0x6ccf2220,\n\t0x19584: 0x6c4ee420, 0x19585: 0x6cdfb220, 0x19586: 0x6c431420,\n\t0x1958a: 0x6ca36420, 0x1958b: 0x6c9d7a20,\n\t0x1958c: 0x6d0a3020, 0x1958d: 0x6c9afa20, 0x1958e: 0x6c66b420, 0x1958f: 0x6c24fe20,\n\t0x19590: 0x6c749220, 0x19591: 0x6c51de20, 0x19592: 0x6c3ac820, 0x19593: 0x6cd28220,\n\t0x19594: 0x6c17f220, 0x19595: 0x6cd0c220, 0x19596: 0x6caa8a20, 0x19597: 0x6cb2c420,\n\t0x19598: 0x6c980220,\n\t0x1959d: 0x6d189a20, 0x1959e: 0x6c1dda20,\n\t0x195a0: 0x6c7a6220, 0x195a1: 0x6c05d420, 0x195a2: 0x6c825a20, 0x195a3: 0x6c787020,\n\t0x195a4: 0x6ccc7820, 0x195a5: 0x6c0a4e20, 0x195a6: 0x6cdbfc20, 0x195a7: 0x6c443420,\n\t0x195a8: 0x6cb0c020, 0x195a9: 0x6d189c20, 0x195aa: 0x6cfb9220, 0x195ab: 0x6ca6c820,\n\t0x195ac: 0x6d1c9820, 0x195ad: 0x6d3a8020, 0x195ae: 0x6c216220, 0x195af: 0x6c3cbc20,\n\t0x195b0: 0x6d074620, 0x195b1: 0x6cb19c20, 0x195b2: 0x6cf48020, 0x195b3: 0x6c8a2420,\n\t0x195b4: 0x6c124c20, 0x195b5: 0x6d409020, 0x195b6: 0x6d422a20, 0x195b7: 0x6c0bc620,\n\t0x195b8: 0x6d122a20, 0x195b9: 0x6c58a420, 0x195ba: 0x6cac3220, 0x195bb: 0x6d04fa20,\n\t0x195bd: 0x6c82ea20, 0x195be: 0x6cbee420, 0x195bf: 0x6d001220,\n\t// Block 0x657, offset 0x195c0\n\t0x195c0: 0x6c689620, 0x195c1: 0x6c4c9420,\n\t0x195c4: 0x6d0cf020, 0x195c5: 0x6d092420, 0x195c6: 0x6d39e220, 0x195c7: 0x6c527e20,\n\t0x195c8: 0x6d1cb820, 0x195c9: 0x6cf71620,\n\t0x195cc: 0x6c889220, 0x195cd: 0x6cfc4820, 0x195ce: 0x6c58bc20, 0x195cf: 0x6d1a1620,\n\t0x195d1: 0x6c892a20, 0x195d2: 0x6ccd6020, 0x195d3: 0x6c125220,\n\t0x195d4: 0x6c077020, 0x195d5: 0x6c662220, 0x195d6: 0x6cd63020, 0x195d7: 0x6c397a20,\n\t0x195d8: 0x6c2d9820, 0x195da: 0x6c03d820, 0x195db: 0x6d21fe20,\n\t0x195de: 0x6ca47420, 0x195df: 0x6c831420,\n\t0x195e0: 0x6d198220, 0x195e1: 0x6c272820, 0x195e3: 0x6c14ea20,\n\t0x195e4: 0x6c178e20, 0x195e5: 0x6c416a20, 0x195e6: 0x6c6cdc20, 0x195e7: 0x6ca59220,\n\t0x195eb: 0x6c8a6a20,\n\t0x195ec: 0x6ca0e620, 0x195ed: 0x6d1fb220, 0x195ef: 0x6c8f2820,\n\t0x195f0: 0x6c4de620, 0x195f2: 0x6d1e7420, 0x195f3: 0x6c6cf020,\n\t0x195f4: 0x6c1b8c20, 0x195f5: 0x6cc5dc20, 0x195f6: 0x6ca9b620,\n\t0x195f9: 0x6c53ba20, 0x195fa: 0x6ce53620,\n\t0x195fc: 0x6c002420, 0x195fd: 0x6c485620, 0x195fe: 0x6c0bf820, 0x195ff: 0x6c0eea20,\n\t// Block 0x658, offset 0x19600\n\t0x19600: 0x6cbf1420, 0x19602: 0x6cd5d820, 0x19603: 0x6c20ee20,\n\t0x19604: 0x6c5b5420, 0x19605: 0x6c179a20, 0x19606: 0x6c3ff220, 0x19607: 0x6c5ab620,\n\t0x19608: 0x6c363a20, 0x19609: 0x6cf09a20, 0x1960a: 0x6c3b7820, 0x1960b: 0x6cdfe220,\n\t0x1960d: 0x6c94fa20, 0x1960e: 0x6c51cc20, 0x1960f: 0x6d1e4a20,\n\t0x19610: 0x6c5b5a20, 0x19612: 0x6d215820, 0x19613: 0x6d3ff820,\n\t0x19614: 0x6d0e8a20, 0x19615: 0x6cc07420, 0x19616: 0x6d2fbc20, 0x19617: 0x6c6f1a20,\n\t0x19618: 0x6cdf2820,\n\t0x1961f: 0x6cea0820,\n\t0x19620: 0x6c8bc220, 0x19621: 0x6c6f2620, 0x19622: 0x6d2c8220, 0x19623: 0x6d038620,\n\t0x19624: 0x6c56ba20, 0x19626: 0x6d071020,\n\t0x1962a: 0x6c254c20, 0x1962b: 0x6cbeb020,\n\t0x1962c: 0x6ca14e20, 0x1962e: 0x6d2a2220, 0x1962f: 0x6c084c20,\n\t0x19630: 0x6c1ace20, 0x19633: 0x6d0ebc20,\n\t0x19634: 0x6c443620, 0x19635: 0x6ca16220, 0x19636: 0x6c075c20, 0x19637: 0x6c732820,\n\t0x19638: 0x6c2ee620, 0x19639: 0x6d2fe020, 0x1963b: 0x6cf3ea20,\n\t0x1963c: 0x6d0ebe20, 0x1963e: 0x6c74c620, 0x1963f: 0x6cfade20,\n\t// Block 0x659, offset 0x19640\n\t0x19640: 0x6cdf4a20, 0x19641: 0x6c4e6620, 0x19643: 0x6c2d2c20,\n\t0x19644: 0x6c62ac20, 0x19645: 0x6c6b6020, 0x19647: 0x6d414c20,\n\t0x19649: 0x6d025820, 0x1964a: 0x6c7f7620, 0x1964b: 0x6c38e220,\n\t0x1964c: 0x6c5e4020, 0x1964d: 0x6cf92820, 0x1964e: 0x6ca8b620, 0x1964f: 0x6c9cb820,\n\t0x19650: 0x6cc49c20, 0x19651: 0x6c24c220, 0x19652: 0x6d1a3220, 0x19653: 0x6c9d2820,\n\t0x19655: 0x6c747e20, 0x19656: 0x6cc0ea20, 0x19657: 0x6ce73820,\n\t0x19658: 0x6ced7a20, 0x19659: 0x6d2ffc20, 0x1965a: 0x6c84fe20, 0x1965b: 0x6cce9c20,\n\t0x1965c: 0x6c79a620, 0x1965d: 0x6cfa7e20, 0x1965e: 0x6d301e20, 0x1965f: 0x6d33c420,\n\t0x19660: 0x6ce5be20, 0x19661: 0x6cd4bc20, 0x19662: 0x6c073e20, 0x19663: 0x6d136220,\n\t0x19664: 0x6cb14c20, 0x19665: 0x6c164420, 0x19666: 0x6c563e20, 0x19667: 0x6c791620,\n\t0x19668: 0x6c6f4a20, 0x19669: 0x6c011620, 0x1966a: 0x6c213020, 0x1966b: 0x6cb97620,\n\t0x1966c: 0x6c06ea20, 0x1966d: 0x6c032620, 0x1966e: 0x6c3b6020, 0x1966f: 0x6c77d620,\n\t0x19670: 0x6ceafc20, 0x19671: 0x6ceafe20, 0x19672: 0x6d423020, 0x19673: 0x6c8cbc20,\n\t0x19675: 0x6c4aea20, 0x19676: 0x6d0be620, 0x19677: 0x6cd35420,\n\t0x19678: 0x6c545220, 0x19679: 0x6c8b0020, 0x1967a: 0x6ccbee20, 0x1967b: 0x6cd8b220,\n\t0x1967d: 0x6c071020, 0x1967e: 0x6cc5e820, 0x1967f: 0x6c319820,\n\t// Block 0x65a, offset 0x19680\n\t0x19680: 0x6c0eec20, 0x19681: 0x6c895620, 0x19682: 0x6cba0c20, 0x19683: 0x6c3aac20,\n\t0x19684: 0x6c624220, 0x19685: 0x6d3ffa20, 0x19686: 0x6c5ac820, 0x19687: 0x6c514020,\n\t0x19688: 0x6c83e420, 0x19689: 0x6d259620, 0x1968a: 0x6d26ce20, 0x1968b: 0x6d04e620,\n\t0x1968c: 0x6c15d620, 0x1968d: 0x6c2b8c20, 0x1968e: 0x6c825020, 0x1968f: 0x6c6cae20,\n\t0x19690: 0x6c1d1c20, 0x19691: 0x6cd8ec20, 0x19692: 0x6cb49a20, 0x19693: 0x6d11d420,\n\t0x19694: 0x6c678620, 0x19695: 0x6c583620, 0x19696: 0x6c595620, 0x19697: 0x6ce1f620,\n\t0x19698: 0x6cc82c20, 0x19699: 0x6cf26620, 0x1969a: 0x6d1ccc20, 0x1969b: 0x6cc53420,\n\t0x1969c: 0x6d1a3420, 0x1969d: 0x6cd30e20, 0x1969e: 0x6d1a2620, 0x1969f: 0x6c73e220,\n\t0x196a0: 0x6cea4020, 0x196a1: 0x6d080020, 0x196a2: 0x6c632e20, 0x196a3: 0x6d379e20,\n\t0x196a4: 0x6cbc9820, 0x196a5: 0x6d3ab220, 0x196a6: 0x6c2db020,\n\t0x196a8: 0x6d201820, 0x196ab: 0x6d14a420,\n\t0x196ac: 0x6cd2c220, 0x196ad: 0x6d16fa20, 0x196ae: 0x6ca0e820,\n\t0x196b1: 0x6cc3ae20, 0x196b2: 0x6cfea420, 0x196b3: 0x6cf3ba20,\n\t0x196b4: 0x6c44c020, 0x196b5: 0x6d1ce620, 0x196b6: 0x6ce66820, 0x196b7: 0x6cd2c620,\n\t0x196b8: 0x6ca5cc20, 0x196b9: 0x6c44c620, 0x196ba: 0x6cde5020, 0x196bb: 0x6cf28a20,\n\t0x196bc: 0x6c711820, 0x196bd: 0x6c15a820, 0x196be: 0x6cb19620, 0x196bf: 0x6d3d5420,\n\t// Block 0x65b, offset 0x196c0\n\t0x196c0: 0x6c54c420, 0x196c1: 0x6ca4fa20, 0x196c2: 0x6d0c9820, 0x196c3: 0x6c468620,\n\t0x196c4: 0x6d225c20, 0x196c5: 0x6c540420, 0x196c7: 0x6cd7f620,\n\t0x196c8: 0x6c1aba20, 0x196c9: 0x6c56a420, 0x196ca: 0x6d105220, 0x196cb: 0x6cf22e20,\n\t0x196cc: 0x6cfcd020, 0x196cd: 0x6cb21020, 0x196ce: 0x6cc69c20, 0x196cf: 0x6c90a820,\n\t0x196d0: 0x6c81b420, 0x196d1: 0x6cccfe20, 0x196d2: 0x6cfef020, 0x196d3: 0x6d2ae220,\n\t0x196d4: 0x6c4d7820, 0x196d5: 0x6c38b420, 0x196d6: 0x6c4e6220, 0x196d7: 0x6c14d420,\n\t0x196d8: 0x6d2e7620, 0x196da: 0x6cde1620, 0x196db: 0x6d3b2a20,\n\t0x196dc: 0x6ca9c820, 0x196dd: 0x6c4f1820, 0x196de: 0x6d21b620, 0x196df: 0x6d3db420,\n\t0x196e0: 0x6d205c20, 0x196e1: 0x6c86fc20, 0x196e2: 0x6c5e2a20, 0x196e3: 0x6cf73e20,\n\t0x196e4: 0x6cfb0020, 0x196e5: 0x6c155820, 0x196e6: 0x6c889420,\n\t0x196e8: 0x6cd7be20, 0x196e9: 0x6c6fce20, 0x196ea: 0x6cb42820, 0x196eb: 0x6cbffc20,\n\t0x196ec: 0x6c45d620, 0x196ed: 0x6d3ee820, 0x196ee: 0x6d20bc20,\n\t0x196f1: 0x6cc62820, 0x196f2: 0x6ca98420, 0x196f3: 0x6c99d820,\n\t0x196f4: 0x6c032820, 0x196f5: 0x6c6f9820, 0x196f7: 0x6d069620,\n\t0x196f8: 0x6cb29020, 0x196f9: 0x6c0b8a20, 0x196fa: 0x6c995420,\n\t0x196ff: 0x6d14ce20,\n\t// Block 0x65c, offset 0x19700\n\t0x19700: 0x6d20f620, 0x19702: 0x6cb29220, 0x19703: 0x6cc0f220,\n\t0x19704: 0x6c05f420, 0x19705: 0x6c5bae20,\n\t0x19709: 0x6c109420, 0x1970a: 0x6c985820, 0x1970b: 0x6c7e7020,\n\t0x1970c: 0x6ce8a820, 0x1970d: 0x6cf3c220, 0x1970e: 0x6c85ec20, 0x1970f: 0x6c8cea20,\n\t0x19711: 0x6c620220, 0x19712: 0x6c75bc20, 0x19713: 0x6d405620,\n\t0x19714: 0x6c349220, 0x19715: 0x6c745020, 0x19716: 0x6c277020, 0x19717: 0x6c073220,\n\t0x1971d: 0x6c7e8020, 0x1971e: 0x6c0d3e20, 0x1971f: 0x6cdbf820,\n\t0x19720: 0x6ce8c220, 0x19721: 0x6d08e220,\n\t0x19727: 0x6c350c20,\n\t0x1972a: 0x6cdc5420, 0x1972b: 0x6c0a2e20,\n\t0x1972c: 0x6ce87420, 0x1972d: 0x6ccb4a20, 0x1972e: 0x6c120020, 0x1972f: 0x6ce8e420,\n\t0x19730: 0x6c9e3620, 0x19731: 0x6c6c5220, 0x19732: 0x6c93b020,\n\t0x19735: 0x6d2e8020, 0x19736: 0x6c08f620, 0x19737: 0x6c60ac20,\n\t0x19738: 0x6d2b7420, 0x19739: 0x6d07d620, 0x1973a: 0x6c86a020,\n\t0x1973d: 0x6cdc8220, 0x1973e: 0x6d1dc220, 0x1973f: 0x6cd57620,\n\t// Block 0x65d, offset 0x19740\n\t0x19742: 0x6c358620,\n\t0x19747: 0x6cbf8620,\n\t0x19748: 0x6c958020, 0x19749: 0x6d322220, 0x1974a: 0x6cea4620, 0x1974b: 0x6c46fe20,\n\t0x1974c: 0x6d223c20, 0x1974d: 0x6c82be20, 0x1974e: 0x6c0eee20, 0x1974f: 0x6ca56e20,\n\t0x19750: 0x6cb12020, 0x19751: 0x6c890e20, 0x19752: 0x6ce17a20, 0x19753: 0x6c883820,\n\t0x19754: 0x6cf16220, 0x19755: 0x6c291020, 0x19756: 0x6c87be20, 0x19757: 0x6ce65e20,\n\t0x19758: 0x6cec1820, 0x19759: 0x6d390220, 0x1975a: 0x6c426620, 0x1975b: 0x6d03d220,\n\t0x1975c: 0x6c021420, 0x1975d: 0x6c393820, 0x1975e: 0x6caf0e20, 0x1975f: 0x6c0eda20,\n\t0x19760: 0x6ceb0620, 0x19761: 0x6cd4d020, 0x19762: 0x6d14e420, 0x19763: 0x6c0ef020,\n\t0x19764: 0x6cbcb820, 0x19765: 0x6ce80e20, 0x19766: 0x6c45e820, 0x19767: 0x6ce74820,\n\t0x19768: 0x6c4e1220, 0x19769: 0x6c1a0820, 0x1976a: 0x6c6ace20, 0x1976b: 0x6c593a20,\n\t0x1976c: 0x6d042c20, 0x1976d: 0x6c2d6220, 0x1976e: 0x6c146a20, 0x1976f: 0x6c308020,\n\t0x19770: 0x6caffc20, 0x19771: 0x6cc86a20, 0x19772: 0x6c8b2220, 0x19773: 0x6cd14020,\n\t0x19774: 0x6cab8420, 0x19775: 0x6c2c8020, 0x19776: 0x6d217020, 0x19777: 0x6c200220,\n\t0x19778: 0x6cc6a220, 0x19779: 0x6c774820, 0x1977a: 0x6ce12420, 0x1977b: 0x6c23b620,\n\t0x1977c: 0x6cb18220, 0x1977d: 0x6c209820, 0x1977e: 0x6c92ce20, 0x1977f: 0x6ce79020,\n\t// Block 0x65e, offset 0x19780\n\t0x19780: 0x6d336620, 0x19781: 0x6c86a420, 0x19782: 0x6cc9a020, 0x19783: 0x6cac4420,\n\t0x19784: 0x6cd82e20, 0x19786: 0x6c291220, 0x19787: 0x6c55de20,\n\t0x19788: 0x6d190c20, 0x19789: 0x6cfd3220, 0x1978a: 0x6d028020, 0x1978b: 0x6c958820,\n\t0x1978c: 0x6c8f5e20, 0x1978e: 0x6cdfea20, 0x1978f: 0x6c422e20,\n\t0x19791: 0x6ce01c20,\n\t0x19795: 0x6d1ef020, 0x19796: 0x6ca3e020,\n\t0x19798: 0x6c429a20, 0x19799: 0x6c759820, 0x1979a: 0x6c1bfe20, 0x1979b: 0x6c464020,\n\t0x1979c: 0x6cecfa20, 0x1979d: 0x6c85ee20, 0x1979e: 0x6c8e5420, 0x1979f: 0x6c8b0a20,\n\t0x197a0: 0x6cf9c420, 0x197a1: 0x6c06ac20, 0x197a2: 0x6c018a20, 0x197a3: 0x6d237220,\n\t0x197a4: 0x6c713220, 0x197a5: 0x6cc75820, 0x197a6: 0x6d0a3420, 0x197a7: 0x6d3e7a20,\n\t0x197a8: 0x6c25ee20, 0x197a9: 0x6c120620, 0x197aa: 0x6d2baa20, 0x197ab: 0x6d1dc420,\n\t0x197ac: 0x6c407420, 0x197ad: 0x6cc88a20, 0x197af: 0x6cf7cc20,\n\t0x197b0: 0x6cd5e620, 0x197b1: 0x6c68c020, 0x197b2: 0x6c68c220, 0x197b3: 0x6d057020,\n\t0x197b4: 0x6d2f2620, 0x197b7: 0x6cd71220,\n\t0x197b8: 0x6c18a820, 0x197b9: 0x6c390820, 0x197ba: 0x6c5ff820, 0x197bb: 0x6d33a820,\n\t0x197bd: 0x6c480420, 0x197be: 0x6cf4d620,\n\t// Block 0x65f, offset 0x197c0\n\t0x197c0: 0x6cbcae20, 0x197c1: 0x6cd5bc20, 0x197c2: 0x6c4d1420, 0x197c3: 0x6ceb0820,\n\t0x197c4: 0x6c319020, 0x197c5: 0x6d3f0220, 0x197c6: 0x6cc46e20, 0x197c7: 0x6ca27820,\n\t0x197c8: 0x6c3fd020, 0x197c9: 0x6c8cca20, 0x197ca: 0x6c601e20, 0x197cb: 0x6d04ce20,\n\t0x197cc: 0x6d084c20, 0x197cd: 0x6ca37820, 0x197ce: 0x6d0aee20, 0x197cf: 0x6c6be020,\n\t0x197d0: 0x6c85f020, 0x197d1: 0x6c269c20, 0x197d2: 0x6cc7a020, 0x197d3: 0x6d24ee20,\n\t0x197d4: 0x6c939c20, 0x197d5: 0x6cd06220, 0x197d6: 0x6c851820, 0x197d7: 0x6c89bc20,\n\t0x197d8: 0x6c450e20, 0x197d9: 0x6d033820, 0x197da: 0x6d004420, 0x197db: 0x6cbdd820,\n\t0x197dc: 0x6cbcc220, 0x197dd: 0x6c182020, 0x197de: 0x6d1f3c20, 0x197df: 0x6c109a20,\n\t0x197e0: 0x6c7bc220, 0x197e1: 0x6cc3be20, 0x197e2: 0x6c00aa20, 0x197e3: 0x6cbd3420,\n\t0x197e4: 0x6cbac020, 0x197e5: 0x6c1f5220, 0x197e6: 0x6cae1e20, 0x197e7: 0x6c7e0620,\n\t0x197e8: 0x6d13fa20, 0x197e9: 0x6c48ce20, 0x197ea: 0x6cd14220, 0x197eb: 0x6cb0fa20,\n\t0x197ed: 0x6d393820, 0x197ee: 0x6c59de20, 0x197ef: 0x6c5ad620,\n\t0x197f0: 0x6c557e20, 0x197f1: 0x6c074220,\n\t0x197f4: 0x6d2bec20, 0x197f5: 0x6c624620, 0x197f6: 0x6c47c220, 0x197f7: 0x6cf6a420,\n\t0x197f8: 0x6c431620, 0x197f9: 0x6c148620, 0x197fa: 0x6c96d620, 0x197fb: 0x6d3b2020,\n\t0x197fc: 0x6ce9ea20, 0x197fd: 0x6d3ca020, 0x197fe: 0x6cface20, 0x197ff: 0x6c80de20,\n\t// Block 0x660, offset 0x19800\n\t0x19803: 0x6d36e820,\n\t0x19804: 0x6c00cc20, 0x19805: 0x6cfc2e20, 0x19806: 0x6c4c3c20, 0x19807: 0x6cf7a220,\n\t0x19809: 0x6ce9f020, 0x1980a: 0x6c11de20, 0x1980b: 0x6ccb0420,\n\t0x1980c: 0x6cfaea20, 0x1980d: 0x6c6c0e20, 0x1980e: 0x6c3bfa20, 0x1980f: 0x6cc45a20,\n\t0x19811: 0x6d123a20, 0x19812: 0x6c29fa20, 0x19813: 0x6c63f420,\n\t0x19814: 0x6c82fc20, 0x19815: 0x6d0d0220, 0x19816: 0x6c918e20, 0x19817: 0x6ce9d620,\n\t0x19818: 0x6d1cd220, 0x19819: 0x6cb0de20, 0x1981a: 0x6c964a20, 0x1981b: 0x6c87a420,\n\t0x1981c: 0x6c0d1220, 0x1981e: 0x6c995620, 0x1981f: 0x6c040e20,\n\t0x19820: 0x6c5a6a20, 0x19822: 0x6d121220, 0x19823: 0x6c50a420,\n\t0x19824: 0x6c218420, 0x19825: 0x6c516420, 0x19826: 0x6ca95620, 0x19827: 0x6c1e0220,\n\t0x19828: 0x6c874620, 0x19829: 0x6ce19420, 0x1982a: 0x6c585a20, 0x1982b: 0x6c095420,\n\t0x1982c: 0x6c033420, 0x1982d: 0x6c181020, 0x1982e: 0x6d104620, 0x1982f: 0x6c269e20,\n\t0x19830: 0x6c024420, 0x19831: 0x6d091020, 0x19833: 0x6d3e5220,\n\t0x19834: 0x6c265a20, 0x19835: 0x6cc4ce20, 0x19836: 0x6c053820, 0x19837: 0x6c25f020,\n\t0x19838: 0x6ced4e20, 0x19839: 0x6cdebe20, 0x1983a: 0x6c05dc20, 0x1983b: 0x6c417a20,\n\t0x1983c: 0x6d0c7620, 0x1983d: 0x6cf5a620, 0x1983e: 0x6d3ad420, 0x1983f: 0x6d0b4e20,\n\t// Block 0x661, offset 0x19840\n\t0x19840: 0x6c393a20, 0x19841: 0x6d203c20, 0x19842: 0x6c012820, 0x19843: 0x6ce9a420,\n\t0x19844: 0x6c9b2020, 0x19845: 0x6ccf5c20, 0x19846: 0x6c6d2e20, 0x19847: 0x6c47ce20,\n\t0x19848: 0x6c627820, 0x19849: 0x6cbc0020, 0x1984a: 0x6c695820, 0x1984b: 0x6d0d0420,\n\t0x1984c: 0x6cf92e20, 0x1984d: 0x6c772020, 0x1984e: 0x6c9e0220, 0x1984f: 0x6d086a20,\n\t0x19850: 0x6cccc420, 0x19851: 0x6cf2d820, 0x19852: 0x6cb8b420, 0x19853: 0x6c58f620,\n\t0x19854: 0x6cc5d020, 0x19855: 0x6d322420, 0x19856: 0x6ce45c20, 0x19857: 0x6c740020,\n\t0x19858: 0x6d008620, 0x19859: 0x6cb75820, 0x1985a: 0x6c01f820, 0x1985b: 0x6c9a8220,\n\t0x1985c: 0x6c476820, 0x1985e: 0x6ce1b820, 0x1985f: 0x6c389220,\n\t0x19860: 0x6c722c20, 0x19861: 0x6c162820, 0x19862: 0x6cd74c20, 0x19863: 0x6c096820,\n\t0x19864: 0x6c996220, 0x19865: 0x6cd77820, 0x19866: 0x6c477220, 0x19867: 0x6c53a420,\n\t0x19868: 0x6c579620, 0x19869: 0x6c95fe20, 0x1986a: 0x6c4f7420, 0x1986b: 0x6c63b820,\n\t0x1986c: 0x6cc2e220, 0x1986d: 0x6c40f420, 0x1986e: 0x6c599020, 0x1986f: 0x6c103c20,\n\t0x19870: 0x6c478e20, 0x19871: 0x6c3c4e20, 0x19872: 0x6ca28820, 0x19873: 0x6c009c20,\n\t0x19874: 0x6d1cee20, 0x19875: 0x6cd75020, 0x19876: 0x6c89be20, 0x19877: 0x6c6ad020,\n\t0x19878: 0x6c1c2220, 0x19879: 0x6c6ad220, 0x1987a: 0x6c1d7020, 0x1987b: 0x6cb2e820,\n\t0x1987c: 0x6c186a20, 0x1987d: 0x6d0c9a20, 0x1987e: 0x6c321c20, 0x1987f: 0x6c2c5a20,\n\t// Block 0x662, offset 0x19880\n\t0x19881: 0x6c89c220, 0x19882: 0x6cfcd220, 0x19883: 0x6c0c0420,\n\t0x19884: 0x6d042e20, 0x19885: 0x6c9bda20, 0x19886: 0x6d130220, 0x19887: 0x6c9d5e20,\n\t0x19888: 0x6cb7a020, 0x19889: 0x6cb7a220, 0x1988a: 0x6cf30620, 0x1988b: 0x6d01dc20,\n\t0x1988c: 0x6d239820, 0x1988d: 0x6cb87020, 0x1988e: 0x6c1a2820, 0x1988f: 0x6d11c220,\n\t0x19890: 0x6d1bd420, 0x19891: 0x6d0fd420, 0x19892: 0x6c606820, 0x19893: 0x6d3fa220,\n\t0x19894: 0x6d07b220, 0x19895: 0x6c9f6e20, 0x19896: 0x6c907620, 0x19897: 0x6c766e20,\n\t0x19898: 0x6d11ca20, 0x19899: 0x6d0dcc20, 0x1989a: 0x6cdcfa20, 0x1989b: 0x6c4b6c20,\n\t0x1989c: 0x6c5a7a20, 0x1989d: 0x6d1c8e20, 0x1989e: 0x6cd14420, 0x1989f: 0x6c140220,\n\t0x198a0: 0x6c883c20, 0x198a2: 0x6d082420, 0x198a3: 0x6c200e20,\n\t0x198a4: 0x6c184220, 0x198a5: 0x6ca6ca20, 0x198a6: 0x6cc27820, 0x198a7: 0x6c9e7e20,\n\t0x198a8: 0x6c5dfe20, 0x198a9: 0x6d21a420, 0x198aa: 0x6d2e1620, 0x198ab: 0x6c55c820,\n\t0x198ac: 0x6c136020, 0x198ad: 0x6c0c2c20, 0x198ae: 0x6cb9d020, 0x198af: 0x6cf6ee20,\n\t0x198b0: 0x6c67c220, 0x198b1: 0x6c79c620, 0x198b2: 0x6c970220, 0x198b3: 0x6c98a220,\n\t0x198b4: 0x6d2e2220, 0x198b5: 0x6c0b5c20, 0x198b6: 0x6c5f6c20, 0x198b7: 0x6c74d820,\n\t0x198b8: 0x6ca45820, 0x198b9: 0x6c0a9020, 0x198ba: 0x6cd3f420, 0x198bb: 0x6cd7ac20,\n\t0x198bc: 0x6ca18820, 0x198bd: 0x6c8b6420, 0x198be: 0x6c9f0820, 0x198bf: 0x6ca19420,\n\t// Block 0x663, offset 0x198c0\n\t0x198c0: 0x6cf74820, 0x198c1: 0x6c156820, 0x198c2: 0x6cc21620, 0x198c3: 0x6c69e620,\n\t0x198c4: 0x6c5e5a20, 0x198c5: 0x6cfb1a20, 0x198c6: 0x6d068820, 0x198c7: 0x6ca98820,\n\t0x198c8: 0x6ce74020, 0x198c9: 0x6c542220, 0x198ca: 0x6d240e20,\n\t0x198cc: 0x6c1ce220, 0x198cd: 0x6c0fbc20, 0x198ce: 0x6d415820, 0x198cf: 0x6c2dba20,\n\t0x198d0: 0x6d3cfa20, 0x198d1: 0x6c5ea620, 0x198d2: 0x6cb86220,\n\t0x198d4: 0x6d043020, 0x198d5: 0x6c5c0020, 0x198d6: 0x6cd23420, 0x198d7: 0x6c7a1e20,\n\t0x198d9: 0x6c32f220, 0x198da: 0x6d10da20, 0x198db: 0x6d20da20,\n\t0x198dc: 0x6c056420, 0x198dd: 0x6c6a9220, 0x198de: 0x6d30e820, 0x198df: 0x6c634620,\n\t0x198e0: 0x6cd2c820, 0x198e1: 0x6c2bea20, 0x198e2: 0x6c302a20, 0x198e3: 0x6c223a20,\n\t0x198e4: 0x6c3fd220, 0x198e5: 0x6c9f4020, 0x198e6: 0x6d314020, 0x198e7: 0x6d31d020,\n\t0x198e9: 0x6d0e6420, 0x198ea: 0x6cbc2020, 0x198eb: 0x6c4f4e20,\n\t0x198ec: 0x6c45ea20, 0x198ed: 0x6cbb6e20, 0x198ee: 0x6c94a220, 0x198ef: 0x6c48f620,\n\t0x198f0: 0x6c7e7620, 0x198f1: 0x6cc8ce20, 0x198f2: 0x6c383420, 0x198f3: 0x6c260a20,\n\t0x198f4: 0x6d0c9c20, 0x198f5: 0x6c458a20, 0x198f6: 0x6c6ad420, 0x198f7: 0x6c48d020,\n\t0x198f8: 0x6c4c7020, 0x198f9: 0x6cdd7c20, 0x198fa: 0x6cf2ba20, 0x198fb: 0x6d335220,\n\t0x198fc: 0x6ca84220, 0x198fd: 0x6c2e2c20, 0x198fe: 0x6c7f3c20, 0x198ff: 0x6cde6420,\n\t// Block 0x664, offset 0x19900\n\t0x19900: 0x6c254620, 0x19901: 0x6d0af420, 0x19902: 0x6c4bd020,\n\t0x19905: 0x6c2b3420, 0x19907: 0x6c9dc820,\n\t0x19908: 0x6c6a2a20, 0x19909: 0x6c9f7020, 0x1990a: 0x6c71ca20, 0x1990b: 0x6d217420,\n\t0x1990c: 0x6d318020, 0x1990d: 0x6d2fc820, 0x1990e: 0x6d2cd220, 0x1990f: 0x6d038820,\n\t0x19911: 0x6c049420, 0x19912: 0x6c516620, 0x19913: 0x6c46d220,\n\t0x19914: 0x6c538220, 0x19915: 0x6c816e20, 0x19916: 0x6cf51620, 0x19917: 0x6c0e8c20,\n\t0x19918: 0x6c795420, 0x19919: 0x6c92d420, 0x1991a: 0x6c246420, 0x1991b: 0x6c885020,\n\t0x1991c: 0x6d141820, 0x1991d: 0x6cbc6020, 0x1991e: 0x6cd53820,\n\t0x19920: 0x6d08b220, 0x19921: 0x6c6c6220, 0x19922: 0x6cbd4220, 0x19923: 0x6c5b7020,\n\t0x19924: 0x6cdb3620, 0x19925: 0x6c207c20, 0x19926: 0x6c33b420, 0x19927: 0x6c8fb220,\n\t0x19929: 0x6ca4c820, 0x1992a: 0x6ce02220, 0x1992b: 0x6c285220,\n\t0x1992c: 0x6cf03e20, 0x1992d: 0x6c41f220, 0x1992e: 0x6c26c620, 0x1992f: 0x6c86d420,\n\t0x19930: 0x6c10de20, 0x19931: 0x6cfd3e20, 0x19932: 0x6cac8c20, 0x19933: 0x6c7eb620,\n\t0x19934: 0x6d39ec20, 0x19935: 0x6ca7c420, 0x19936: 0x6c580220, 0x19937: 0x6d1cce20,\n\t0x19938: 0x6cfd4620, 0x19939: 0x6c809020, 0x1993a: 0x6ca0a020, 0x1993b: 0x6c03e220,\n\t0x1993d: 0x6c4adc20, 0x1993e: 0x6c08c620, 0x1993f: 0x6c3d5020,\n\t// Block 0x665, offset 0x19940\n\t0x19940: 0x6c5da820, 0x19941: 0x6d173c20, 0x19942: 0x6c8f2c20,\n\t0x19944: 0x6d19cc20, 0x19945: 0x6c735c20, 0x19946: 0x6c5d7420, 0x19947: 0x6c1a0a20,\n\t0x19948: 0x6c311c20, 0x19949: 0x6c356a20, 0x1994b: 0x6d0da620,\n\t0x1994c: 0x6d3c9420, 0x1994d: 0x6d2cce20, 0x1994e: 0x6cb70420, 0x1994f: 0x6d216220,\n\t0x19950: 0x6cc37620, 0x19951: 0x6c5d7a20, 0x19952: 0x6ca84420, 0x19953: 0x6c59e220,\n\t0x19954: 0x6c71cc20, 0x19955: 0x6ccf6820,\n\t0x19958: 0x6caebe20, 0x19959: 0x6ca01820, 0x1995a: 0x6c129220, 0x1995b: 0x6c90ba20,\n\t0x1995c: 0x6c843e20, 0x1995d: 0x6c205e20, 0x1995f: 0x6c24f020,\n\t0x19960: 0x6ccdc820, 0x19961: 0x6c280a20, 0x19962: 0x6cb68220,\n\t0x19964: 0x6c7f7a20, 0x19965: 0x6c8de620, 0x19966: 0x6c8a6220, 0x19967: 0x6cc62220,\n\t0x19968: 0x6d20c820, 0x19969: 0x6d16ca20, 0x1996a: 0x6c2df820, 0x1996b: 0x6cb6dc20,\n\t0x1996c: 0x6d147820, 0x1996d: 0x6ca6f420, 0x1996e: 0x6c3d5220, 0x1996f: 0x6c657420,\n\t0x19970: 0x6d0b1c20, 0x19971: 0x6c398c20, 0x19972: 0x6cc8c420, 0x19973: 0x6cfa8c20,\n\t0x19976: 0x6c096a20, 0x19977: 0x6cd25e20,\n\t0x19978: 0x6cb38020, 0x19979: 0x6ca6fc20, 0x1997a: 0x6d35f620, 0x1997b: 0x6ce22020,\n\t0x1997c: 0x6ce4f020, 0x1997d: 0x6ce4f220, 0x1997e: 0x6cc81620, 0x1997f: 0x6d176a20,\n\t// Block 0x666, offset 0x19980\n\t0x19980: 0x6c8b0420, 0x19981: 0x6c01bc20, 0x19982: 0x6c511020, 0x19983: 0x6cbf1620,\n\t0x19984: 0x6c85f420, 0x19985: 0x6c4a5c20, 0x19986: 0x6d3f4a20, 0x19987: 0x6cdaaa20,\n\t0x19988: 0x6d261020, 0x19989: 0x6d0ba220, 0x1998a: 0x6c13dc20, 0x1998b: 0x6ced2420,\n\t0x1998c: 0x6c72f420, 0x1998d: 0x6ce6cc20, 0x1998e: 0x6d1fd020, 0x1998f: 0x6c5bc620,\n\t0x19990: 0x6c659c20, 0x19991: 0x6cc89e20, 0x19992: 0x6c986420, 0x19993: 0x6c71b820,\n\t0x19994: 0x6d3e5620, 0x19995: 0x6c70a820, 0x19996: 0x6c013a20, 0x19997: 0x6cdc5020,\n\t0x19998: 0x6c7f1620, 0x19999: 0x6c5d3020, 0x1999a: 0x6cc35e20, 0x1999b: 0x6c167220,\n\t0x1999c: 0x6c34fa20, 0x1999d: 0x6c798020, 0x1999e: 0x6ca55020, 0x1999f: 0x6c11d220,\n\t0x199a0: 0x6ce35620, 0x199a1: 0x6d064c20, 0x199a2: 0x6c701020, 0x199a3: 0x6c59e420,\n\t0x199a4: 0x6cb7b820, 0x199a5: 0x6c6b0e20, 0x199a6: 0x6c98f220, 0x199a7: 0x6d0c2020,\n\t0x199a9: 0x6d354820, 0x199aa: 0x6ce9b020,\n\t0x199ac: 0x6c00c220, 0x199ad: 0x6cad0a20, 0x199ae: 0x6c125a20, 0x199af: 0x6ce12820,\n\t0x199b0: 0x6c372220, 0x199b1: 0x6c5d3c20, 0x199b2: 0x6cb63e20, 0x199b3: 0x6c1ea620,\n\t0x199b4: 0x6cdd9020, 0x199b5: 0x6d3d8820, 0x199b6: 0x6caa2620, 0x199b7: 0x6ce8f220,\n\t0x199b8: 0x6cd01a20, 0x199b9: 0x6c90f820, 0x199ba: 0x6c0c2020, 0x199bb: 0x6c844020,\n\t0x199bc: 0x6c977c20, 0x199bd: 0x6d02f020, 0x199be: 0x6c133c20, 0x199bf: 0x6c5a0a20,\n\t// Block 0x667, offset 0x199c0\n\t0x199c0: 0x6c9a6c20, 0x199c1: 0x6c42e620, 0x199c2: 0x6c887620, 0x199c3: 0x6c2a3e20,\n\t0x199c4: 0x6d2e2420, 0x199c5: 0x6d3eaa20,\n\t0x199c8: 0x6d375620, 0x199c9: 0x6c03d020, 0x199ca: 0x6c258a20, 0x199cb: 0x6cbfe420,\n\t0x199cd: 0x6c8fea20, 0x199ce: 0x6cfb0a20, 0x199cf: 0x6c3afa20,\n\t0x199d0: 0x6c4cac20, 0x199d1: 0x6c19b820, 0x199d2: 0x6c6fda20, 0x199d3: 0x6c35f620,\n\t0x199d4: 0x6c1cb420, 0x199d5: 0x6d269220, 0x199d6: 0x6c531620, 0x199d7: 0x6d119e20,\n\t0x199d8: 0x6d0ae220, 0x199d9: 0x6d10e620, 0x199da: 0x6ce74420, 0x199db: 0x6d2cc020,\n\t0x199dc: 0x6d204020, 0x199dd: 0x6d095620, 0x199de: 0x6d11aa20, 0x199df: 0x6c78a820,\n\t0x199e0: 0x6c591620, 0x199e1: 0x6c80cc20, 0x199e2: 0x6d26ba20, 0x199e3: 0x6c18ca20,\n\t0x199e6: 0x6cd0b220,\n\t0x199e8: 0x6ca90e20, 0x199e9: 0x6ca00a20, 0x199ea: 0x6c52ba20, 0x199eb: 0x6c205820,\n\t0x199ec: 0x6d27fe20, 0x199ed: 0x6d07be20, 0x199ee: 0x6c6d4420, 0x199ef: 0x6d3d9c20,\n\t0x199f0: 0x6d209c20, 0x199f1: 0x6cdfbc20, 0x199f2: 0x6c775420, 0x199f3: 0x6cbf6420,\n\t0x199f5: 0x6c1a4c20, 0x199f6: 0x6c6f8820, 0x199f7: 0x6d097620,\n\t0x199f8: 0x6d32fa20, 0x199f9: 0x6c1ce420, 0x199fa: 0x6cac4a20, 0x199fb: 0x6cbc6620,\n\t0x199fd: 0x6cc1e620, 0x199fe: 0x6c7fd620, 0x199ff: 0x6d190e20,\n\t// Block 0x668, offset 0x19a00\n\t0x19a00: 0x6cc6de20, 0x19a01: 0x6cd84e20, 0x19a02: 0x6cb89c20, 0x19a03: 0x6cd89220,\n\t0x19a05: 0x6c380420, 0x19a07: 0x6c9b1020,\n\t0x19a08: 0x6c578e20, 0x19a0b: 0x6c4d6620,\n\t0x19a0c: 0x6cbc4420, 0x19a0d: 0x6c1f4620, 0x19a0e: 0x6cc3d420, 0x19a0f: 0x6c334e20,\n\t0x19a10: 0x6c863820, 0x19a11: 0x6c03b820, 0x19a12: 0x6c6c0420, 0x19a13: 0x6d05ee20,\n\t0x19a14: 0x6c963620, 0x19a16: 0x6d27de20, 0x19a17: 0x6d37ae20,\n\t0x19a18: 0x6c568220, 0x19a19: 0x6d1ad220, 0x19a1b: 0x6d351020,\n\t0x19a1c: 0x6cb9fa20, 0x19a1e: 0x6c419420, 0x19a1f: 0x6c667c20,\n\t0x19a20: 0x6d3ae220, 0x19a21: 0x6d3ae420, 0x19a22: 0x6c7a7820, 0x19a23: 0x6ca81a20,\n\t0x19a24: 0x6cc8ca20, 0x19a25: 0x6d2ac220, 0x19a26: 0x6c020820, 0x19a27: 0x6d363820,\n\t0x19a28: 0x6c461a20, 0x19a29: 0x6d17b220, 0x19a2a: 0x6c1ab020, 0x19a2b: 0x6c5ed620,\n\t0x19a2c: 0x6d39a620, 0x19a2d: 0x6c81b220, 0x19a2e: 0x6cc5ee20, 0x19a2f: 0x6cc67620,\n\t0x19a30: 0x6d32c620, 0x19a31: 0x6ca34220, 0x19a32: 0x6c12ec20,\n\t0x19a35: 0x6d151e20, 0x19a36: 0x6c746820, 0x19a37: 0x6c0cee20,\n\t0x19a38: 0x6c1a1e20, 0x19a39: 0x6c75ce20, 0x19a3a: 0x6c312620, 0x19a3b: 0x6cefe420,\n\t0x19a3c: 0x6d17fa20, 0x19a3d: 0x6d306020, 0x19a3e: 0x6d0cae20,\n\t// Block 0x669, offset 0x19a40\n\t0x19a40: 0x6cca0220, 0x19a41: 0x6c950220, 0x19a42: 0x6cb2be20, 0x19a43: 0x6d2f9020,\n\t0x19a44: 0x6c4e2020, 0x19a45: 0x6d239a20, 0x19a46: 0x6c278220, 0x19a47: 0x6d2fca20,\n\t0x19a48: 0x6c3a3e20, 0x19a49: 0x6ccc6620, 0x19a4a: 0x6c8d3820, 0x19a4b: 0x6cde7a20,\n\t0x19a4c: 0x6cc12220, 0x19a4d: 0x6c986e20, 0x19a4e: 0x6d132c20, 0x19a4f: 0x6c05d220,\n\t0x19a50: 0x6c4b6e20, 0x19a51: 0x6c489e20, 0x19a52: 0x6ca43620, 0x19a53: 0x6c442420,\n\t0x19a55: 0x6cd28420, 0x19a56: 0x6c782820, 0x19a57: 0x6cdd9220,\n\t0x19a58: 0x6c225c20, 0x19a59: 0x6d394620, 0x19a5a: 0x6cdf3820, 0x19a5b: 0x6c7b3420,\n\t0x19a5c: 0x6cbe2420, 0x19a5d: 0x6d05d820, 0x19a5e: 0x6c322820, 0x19a5f: 0x6c131220,\n\t0x19a60: 0x6c58da20, 0x19a61: 0x6c234420, 0x19a62: 0x6cc9de20, 0x19a63: 0x6d336020,\n\t0x19a64: 0x6cb9be20, 0x19a65: 0x6c6c5420, 0x19a66: 0x6d3fb420, 0x19a67: 0x6cf00020,\n\t0x19a6a: 0x6cf8de20, 0x19a6b: 0x6ca36c20,\n\t0x19a6c: 0x6cb45420, 0x19a6d: 0x6cd9e020, 0x19a6e: 0x6c729420, 0x19a6f: 0x6d319620,\n\t0x19a70: 0x6cce8620, 0x19a71: 0x6ce1e820, 0x19a72: 0x6c049c20, 0x19a73: 0x6cdea020,\n\t0x19a74: 0x6cba7c20, 0x19a75: 0x6cf23a20, 0x19a76: 0x6cc6ae20, 0x19a77: 0x6c962820,\n\t0x19a78: 0x6c55ca20, 0x19a79: 0x6cda2e20, 0x19a7a: 0x6d37cc20, 0x19a7b: 0x6cb46020,\n\t0x19a7c: 0x6c9ef620, 0x19a7d: 0x6c6c6420, 0x19a7e: 0x6cce8a20, 0x19a7f: 0x6c9d8e20,\n\t// Block 0x66a, offset 0x19a80\n\t0x19a80: 0x6cd61c20, 0x19a81: 0x6c8d7020, 0x19a82: 0x6c82de20, 0x19a83: 0x6c67c420,\n\t0x19a84: 0x6c838a20, 0x19a85: 0x6d370e20, 0x19a86: 0x6c2e0020,\n\t0x19a88: 0x6cca2e20, 0x19a89: 0x6c473e20, 0x19a8a: 0x6c397220, 0x19a8b: 0x6c9ab220,\n\t0x19a8c: 0x6cdc9e20, 0x19a8d: 0x6c65f620, 0x19a8e: 0x6ce15020, 0x19a8f: 0x6d025e20,\n\t0x19a90: 0x6c7a6a20, 0x19a91: 0x6cf3fe20, 0x19a92: 0x6c38d220, 0x19a93: 0x6c963820,\n\t0x19a94: 0x6c117820, 0x19a95: 0x6c136620, 0x19a96: 0x6c8d7a20, 0x19a97: 0x6d142620,\n\t0x19a98: 0x6c23be20, 0x19a99: 0x6d27ce20, 0x19a9a: 0x6c9b7420, 0x19a9b: 0x6d245020,\n\t0x19a9c: 0x6d374220, 0x19a9d: 0x6d162020, 0x19a9e: 0x6c285620, 0x19a9f: 0x6c5e2c20,\n\t0x19aa0: 0x6cef5a20, 0x19aa1: 0x6ce03220, 0x19aa2: 0x6ccb7e20, 0x19aa3: 0x6d024420,\n\t0x19aa4: 0x6cda3620, 0x19aa5: 0x6cd97620, 0x19aa6: 0x6cb94c20, 0x19aa7: 0x6c8eda20,\n\t0x19aa8: 0x6d194620, 0x19aaa: 0x6c835a20, 0x19aab: 0x6c84aa20,\n\t0x19aac: 0x6c3af420, 0x19aad: 0x6c8b6a20, 0x19aae: 0x6c8c8820, 0x19aaf: 0x6cfd4820,\n\t0x19ab0: 0x6d002c20, 0x19ab1: 0x6cab6420, 0x19ab2: 0x6c9cbc20, 0x19ab3: 0x6cfb1220,\n\t0x19ab4: 0x6cc4f820, 0x19ab5: 0x6d3c0220, 0x19ab6: 0x6cd6be20, 0x19ab7: 0x6d0d1e20,\n\t0x19ab8: 0x6c0be020, 0x19ab9: 0x6c8df020, 0x19aba: 0x6c531a20, 0x19abb: 0x6cb5a620,\n\t0x19abc: 0x6c8a9620, 0x19abd: 0x6c04ca20, 0x19abe: 0x6c097e20, 0x19abf: 0x6c554820,\n\t// Block 0x66b, offset 0x19ac0\n\t0x19ac0: 0x6c554a20, 0x19ac2: 0x6c12f220, 0x19ac3: 0x6cae1c20,\n\t0x19ac4: 0x6cbf2c20, 0x19ac5: 0x6c9ffe20, 0x19ac6: 0x6c700220, 0x19ac7: 0x6c10a220,\n\t0x19ac8: 0x6c9a1420, 0x19ac9: 0x6cca1e20, 0x19aca: 0x6cf0a820,\n\t0x19acd: 0x6c841e20, 0x19ace: 0x6cc36220,\n\t0x19ad0: 0x6c5cfa20, 0x19ad1: 0x6cfdf220, 0x19ad3: 0x6cd3c620,\n\t0x19ad4: 0x6d1c9020, 0x19ad6: 0x6ca43820, 0x19ad7: 0x6c59f220,\n\t0x19ad8: 0x6c701a20, 0x19ad9: 0x6d0c2620, 0x19adb: 0x6cc99020,\n\t0x19adc: 0x6ce96220, 0x19add: 0x6d022e20, 0x19ade: 0x6d309c20, 0x19adf: 0x6c9ada20,\n\t0x19ae0: 0x6cf8f420, 0x19ae1: 0x6c978a20, 0x19ae3: 0x6c5a1820,\n\t0x19ae4: 0x6ce02420, 0x19ae5: 0x6d001420, 0x19ae6: 0x6d137220, 0x19ae7: 0x6c0a9420,\n\t0x19ae8: 0x6c955a20, 0x19ae9: 0x6c38d420, 0x19aea: 0x6c870620, 0x19aeb: 0x6c251220,\n\t0x19aec: 0x6c1fa620, 0x19aed: 0x6c2a4620, 0x19aee: 0x6c2bb620, 0x19aef: 0x6c7c1c20,\n\t0x19af0: 0x6c1ecc20, 0x19af1: 0x6cfb1420, 0x19af2: 0x6c165220, 0x19af3: 0x6c9cce20,\n\t0x19af4: 0x6cba8e20, 0x19af5: 0x6cc00820, 0x19af6: 0x6d322620,\n\t0x19afa: 0x6c568620, 0x19afb: 0x6c418c20,\n\t0x19afc: 0x6c1b9220, 0x19afd: 0x6c48f220, 0x19afe: 0x6ca27a20, 0x19aff: 0x6c0ede20,\n\t// Block 0x66c, offset 0x19b00\n\t0x19b00: 0x6c579020, 0x19b01: 0x6c44fc20, 0x19b02: 0x6d10e820, 0x19b03: 0x6c996420,\n\t0x19b04: 0x6cee0820,\n\t0x19b08: 0x6cc7a420, 0x19b09: 0x6d090820, 0x19b0a: 0x6d32b820, 0x19b0b: 0x6c9f4a20,\n\t0x19b0c: 0x6c67a420, 0x19b0e: 0x6d2e5a20, 0x19b0f: 0x6d423820,\n\t0x19b10: 0x6d26a620, 0x19b11: 0x6c8b0620, 0x19b13: 0x6d392420,\n\t0x19b14: 0x6c098020, 0x19b15: 0x6cc5f020, 0x19b16: 0x6d234e20,\n\t0x19b18: 0x6c21c020, 0x19b19: 0x6c379820, 0x19b1a: 0x6d17b420, 0x19b1b: 0x6c9cf620,\n\t0x19b1c: 0x6cbeca20, 0x19b1e: 0x6cee1e20, 0x19b1f: 0x6c621e20,\n\t0x19b20: 0x6c104020, 0x19b22: 0x6c0cae20, 0x19b23: 0x6c38a820,\n\t0x19b24: 0x6d26c820, 0x19b25: 0x6c83ee20, 0x19b26: 0x6c38aa20, 0x19b27: 0x6cc1a820,\n\t0x19b28: 0x6c3f7620, 0x19b29: 0x6c376220, 0x19b2a: 0x6c354420, 0x19b2b: 0x6d32e420,\n\t0x19b2c: 0x6ce47020, 0x19b2d: 0x6d239c20, 0x19b2e: 0x6c6d3020, 0x19b2f: 0x6cb70c20,\n\t0x19b30: 0x6c714220, 0x19b31: 0x6c7f1e20, 0x19b32: 0x6c17f020, 0x19b33: 0x6c06d020,\n\t0x19b34: 0x6ca9a820, 0x19b35: 0x6d186020, 0x19b36: 0x6d065420, 0x19b37: 0x6ca1e020,\n\t0x19b38: 0x6d0a3620, 0x19b39: 0x6c3eda20, 0x19b3b: 0x6ca8ec20,\n\t0x19b3c: 0x6ce64820, 0x19b3d: 0x6c082c20, 0x19b3e: 0x6d2c8a20, 0x19b3f: 0x6ceeae20,\n\t// Block 0x66d, offset 0x19b40\n\t0x19b40: 0x6c782a20, 0x19b41: 0x6d10b020, 0x19b42: 0x6caba420, 0x19b43: 0x6cff0820,\n\t0x19b44: 0x6c451a20, 0x19b45: 0x6ce13820, 0x19b46: 0x6c4b7620, 0x19b47: 0x6c5c3a20,\n\t0x19b48: 0x6cddfe20, 0x19b4a: 0x6d114620, 0x19b4b: 0x6c266820,\n\t0x19b4c: 0x6cb7ea20, 0x19b4d: 0x6c6cba20, 0x19b4e: 0x6c94c220, 0x19b4f: 0x6c9d9020,\n\t0x19b50: 0x6c9d9220, 0x19b51: 0x6c64fe20, 0x19b52: 0x6c92ec20, 0x19b53: 0x6c38c820,\n\t0x19b54: 0x6cab5620, 0x19b55: 0x6c9c7e20, 0x19b56: 0x6c6b6420, 0x19b57: 0x6c3f9220,\n\t0x19b58: 0x6c0d1a20, 0x19b59: 0x6c5a7c20, 0x19b5a: 0x6cda5c20, 0x19b5b: 0x6d115e20,\n\t0x19b5c: 0x6ca89620, 0x19b5d: 0x6c6c6c20, 0x19b5e: 0x6c88d620, 0x19b5f: 0x6c0faa20,\n\t0x19b60: 0x6c652420, 0x19b61: 0x6ce3ca20, 0x19b62: 0x6c8d8220, 0x19b63: 0x6d415220,\n\t0x19b64: 0x6cd20e20, 0x19b65: 0x6d1b2620, 0x19b66: 0x6c2a4820, 0x19b67: 0x6c1e0620,\n\t0x19b68: 0x6c10e220, 0x19b69: 0x6c9f1220, 0x19b6a: 0x6d0e1620, 0x19b6b: 0x6c805620,\n\t0x19b6c: 0x6c1d3420, 0x19b6d: 0x6c68b020, 0x19b6e: 0x6cd6bc20, 0x19b6f: 0x6cc2ac20,\n\t0x19b70: 0x6ca8c820, 0x19b71: 0x6c964c20, 0x19b73: 0x6cd21e20,\n\t0x19b74: 0x6c965020, 0x19b75: 0x6d3a4c20, 0x19b77: 0x6c1d6e20,\n\t0x19b78: 0x6c734e20, 0x19b79: 0x6c6f0c20, 0x19b7a: 0x6c379a20, 0x19b7b: 0x6d17b820,\n\t0x19b7c: 0x6cc8d620, 0x19b7d: 0x6c113c20, 0x19b7e: 0x6cc57a20, 0x19b7f: 0x6c3edc20,\n\t// Block 0x66e, offset 0x19b80\n\t0x19b80: 0x6c7fb820, 0x19b81: 0x6cdcaa20, 0x19b82: 0x6d20e220, 0x19b83: 0x6d1f1c20,\n\t0x19b84: 0x6c2d1820, 0x19b85: 0x6c8cf420, 0x19b86: 0x6d3aec20, 0x19b87: 0x6cde5220,\n\t0x19b88: 0x6cb29e20, 0x19b89: 0x6d2d2a20, 0x19b8a: 0x6c684c20, 0x19b8b: 0x6c20de20,\n\t0x19b8c: 0x6c10ac20, 0x19b8d: 0x6c7a0620, 0x19b8e: 0x6c25b620,\n\t0x19b90: 0x6c4e5220, 0x19b91: 0x6c4e5420, 0x19b92: 0x6ca20020, 0x19b93: 0x6c567420,\n\t0x19b94: 0x6c457220, 0x19b95: 0x6c2b2020, 0x19b96: 0x6c3e3c20, 0x19b97: 0x6d088020,\n\t0x19b98: 0x6c9c4c20, 0x19b99: 0x6c9a0420, 0x19b9a: 0x6c811e20, 0x19b9b: 0x6c481e20,\n\t0x19b9c: 0x6d2fc020, 0x19b9d: 0x6cde6620, 0x19b9e: 0x6d23a220, 0x19b9f: 0x6d402820,\n\t0x19ba0: 0x6c844820, 0x19ba1: 0x6c92d820, 0x19ba2: 0x6cf3f620, 0x19ba3: 0x6c826c20,\n\t0x19ba4: 0x6c615e20, 0x19ba5: 0x6c875220, 0x19ba6: 0x6c84d820,\n\t0x19ba8: 0x6cb30420, 0x19ba9: 0x6d101020, 0x19baa: 0x6cec2e20, 0x19bab: 0x6ceb1a20,\n\t0x19bac: 0x6cae6e20, 0x19bae: 0x6d2fb420, 0x19baf: 0x6c4b0220,\n\t0x19bb1: 0x6d061e20, 0x19bb2: 0x6ca38020, 0x19bb3: 0x6cc3e420,\n\t0x19bb4: 0x6ceff620, 0x19bb5: 0x6d32e620, 0x19bb6: 0x6c300e20, 0x19bb7: 0x6cf00820,\n\t0x19bb8: 0x6c0f6020, 0x19bba: 0x6c595820, 0x19bbb: 0x6d08c020,\n\t0x19bbc: 0x6d295620, 0x19bbd: 0x6c877220, 0x19bbe: 0x6d0d6020, 0x19bbf: 0x6c59ae20,\n\t// Block 0x66f, offset 0x19bc0\n\t0x19bc0: 0x6d095820, 0x19bc1: 0x6c554c20, 0x19bc2: 0x6c05f820, 0x19bc3: 0x6cc4c220,\n\t0x19bc4: 0x6cfeba20, 0x19bc5: 0x6cb38620, 0x19bc6: 0x6c8a9820, 0x19bc7: 0x6d388a20,\n\t0x19bc8: 0x6d17ba20, 0x19bc9: 0x6d06e220, 0x19bca: 0x6c960820, 0x19bcb: 0x6c77be20,\n\t0x19bcc: 0x6c1f5620, 0x19bce: 0x6ca35620, 0x19bcf: 0x6c4e2220,\n\t0x19bd0: 0x6c17a220, 0x19bd1: 0x6c929220, 0x19bd2: 0x6d2e0620, 0x19bd3: 0x6cde7c20,\n\t0x19bd4: 0x6c3da220, 0x19bd5: 0x6c52c820, 0x19bd6: 0x6d2ba020, 0x19bd7: 0x6cbc0620,\n\t0x19bd8: 0x6cdb5020, 0x19bd9: 0x6cb1fa20, 0x19bda: 0x6c49ba20,\n\t0x19bdc: 0x6c5cd020, 0x19bdd: 0x6c1e8020, 0x19bdf: 0x6c374420,\n\t0x19be0: 0x6c374620, 0x19be1: 0x6cc85a20, 0x19be2: 0x6cb6e220, 0x19be3: 0x6cd8ba20,\n\t0x19be4: 0x6c713620, 0x19be6: 0x6d0dbe20, 0x19be7: 0x6c058220,\n\t0x19be8: 0x6d131e20, 0x19be9: 0x6d3e6c20, 0x19bea: 0x6ca55220, 0x19beb: 0x6c20b220,\n\t0x19bec: 0x6c03c220, 0x19bed: 0x6c126c20, 0x19bee: 0x6ce42c20, 0x19bef: 0x6c4f1c20,\n\t0x19bf0: 0x6d425220, 0x19bf1: 0x6c03d420, 0x19bf2: 0x6d301420, 0x19bf3: 0x6cec2820,\n\t0x19bf4: 0x6c44c420, 0x19bf5: 0x6c098220, 0x19bf6: 0x6c37ca20, 0x19bf7: 0x6d3af820,\n\t0x19bf8: 0x6cf50220, 0x19bf9: 0x6cf19a20, 0x19bfa: 0x6d369820, 0x19bfb: 0x6d393c20,\n\t0x19bfc: 0x6c929420, 0x19bfd: 0x6cf1a020, 0x19bfe: 0x6c4bdc20, 0x19bff: 0x6cc08e20,\n\t// Block 0x670, offset 0x19c00\n\t0x19c00: 0x6c7e9420, 0x19c01: 0x6d292020, 0x19c02: 0x6cda2820, 0x19c03: 0x6c9dd420,\n\t0x19c04: 0x6c2c0620, 0x19c05: 0x6cb7ec20, 0x19c06: 0x6c129a20, 0x19c07: 0x6cb1bc20,\n\t0x19c08: 0x6c887820, 0x19c09: 0x6cd21020, 0x19c0a: 0x6c8ff620, 0x19c0b: 0x6cdad620,\n\t0x19c0c: 0x6cb73220, 0x19c0d: 0x6d25fa20, 0x19c0e: 0x6c3c9e20, 0x19c0f: 0x6d056820,\n\t0x19c10: 0x6c73f620, 0x19c11: 0x6c2c3020, 0x19c12: 0x6cb14820, 0x19c13: 0x6c494a20,\n\t0x19c14: 0x6ca98620, 0x19c15: 0x6cc5d220, 0x19c16: 0x6d321c20, 0x19c17: 0x6c412e20,\n\t0x19c18: 0x6cb08a20, 0x19c19: 0x6ce05420, 0x19c1a: 0x6c179220, 0x19c1b: 0x6c217220,\n\t0x19c1c: 0x6c508e20, 0x19c1d: 0x6d3b7220, 0x19c1e: 0x6ca0ec20, 0x19c1f: 0x6c0ce020,\n\t0x19c20: 0x6cb75e20, 0x19c21: 0x6cd34620, 0x19c22: 0x6c08ca20, 0x19c23: 0x6c740620,\n\t0x19c24: 0x6cd8a420, 0x19c26: 0x6c485220, 0x19c27: 0x6ca32a20,\n\t0x19c28: 0x6c5b4e20, 0x19c29: 0x6cf5ca20, 0x19c2a: 0x6c37c820, 0x19c2b: 0x6d04ca20,\n\t0x19c2c: 0x6ca1ca20, 0x19c2e: 0x6cf77220, 0x19c2f: 0x6d360220,\n\t0x19c30: 0x6cc8fc20, 0x19c31: 0x6c711a20, 0x19c32: 0x6c2e9420, 0x19c33: 0x6d30f420,\n\t0x19c34: 0x6cced820, 0x19c35: 0x6c9bd220, 0x19c36: 0x6c098420, 0x19c37: 0x6c4eb420,\n\t0x19c38: 0x6d210420, 0x19c39: 0x6cfcb820, 0x19c3a: 0x6cacd420, 0x19c3b: 0x6ca5a620,\n\t0x19c3c: 0x6c119820, 0x19c3d: 0x6c109c20, 0x19c3f: 0x6cb70020,\n\t// Block 0x671, offset 0x19c40\n\t0x19c40: 0x6c620820, 0x19c41: 0x6d3d6420, 0x19c42: 0x6c925e20, 0x19c43: 0x6c75c220,\n\t0x19c44: 0x6cfccc20, 0x19c45: 0x6cf62620, 0x19c46: 0x6c113220, 0x19c47: 0x6cf1e220,\n\t0x19c48: 0x6d346a20, 0x19c49: 0x6d3f5820, 0x19c4a: 0x6c7d6820, 0x19c4b: 0x6c231a20,\n\t0x19c4c: 0x6ce4f820, 0x19c4d: 0x6c1f5820, 0x19c4e: 0x6c2b3620, 0x19c4f: 0x6c218220,\n\t0x19c50: 0x6cbfb620, 0x19c51: 0x6d306220, 0x19c52: 0x6d2be220, 0x19c53: 0x6cc75420,\n\t0x19c54: 0x6c0d7c20, 0x19c55: 0x6c605c20, 0x19c56: 0x6cf65420, 0x19c57: 0x6d39b220,\n\t0x19c58: 0x6c746a20, 0x19c59: 0x6c440a20, 0x19c5a: 0x6c5eee20, 0x19c5b: 0x6c265620,\n\t0x19c5c: 0x6c187c20, 0x19c5d: 0x6cddce20, 0x19c5e: 0x6cc92820, 0x19c5f: 0x6cfdf420,\n\t0x19c60: 0x6c5a5c20, 0x19c61: 0x6cb65020, 0x19c62: 0x6d3b1820, 0x19c63: 0x6cdcf620,\n\t0x19c64: 0x6c146c20, 0x19c65: 0x6cf25a20, 0x19c66: 0x6c781a20, 0x19c67: 0x6c77c420,\n\t0x19c68: 0x6c47b820, 0x19c69: 0x6c410220, 0x19c6a: 0x6c396620, 0x19c6b: 0x6c234c20,\n\t0x19c6c: 0x6c128c20, 0x19c6d: 0x6d36bc20, 0x19c6e: 0x6c15d820, 0x19c6f: 0x6c825420,\n\t0x19c70: 0x6d04ee20, 0x19c71: 0x6d2d4820, 0x19c72: 0x6d308220, 0x19c73: 0x6d218a20,\n\t0x19c74: 0x6c4b7020, 0x19c75: 0x6c45ae20, 0x19c76: 0x6d295020, 0x19c77: 0x6c27fe20,\n\t0x19c78: 0x6c5e0020, 0x19c79: 0x6cd9e220, 0x19c7a: 0x6ce0ac20, 0x19c7b: 0x6c473020,\n\t0x19c7c: 0x6cf8e620, 0x19c7d: 0x6c978020, 0x19c7e: 0x6c346620, 0x19c7f: 0x6c02f420,\n\t// Block 0x672, offset 0x19c80\n\t0x19c80: 0x6cb0c420, 0x19c81: 0x6cf52a20, 0x19c82: 0x6c007c20, 0x19c83: 0x6c9b7620,\n\t0x19c84: 0x6cb0d220, 0x19c85: 0x6c9b7820, 0x19c86: 0x6d103a20, 0x19c87: 0x6d374420,\n\t0x19c88: 0x6c0fac20, 0x19c89: 0x6d1cc820, 0x19c8a: 0x6cef6020, 0x19c8b: 0x6cc50e20,\n\t0x19c8c: 0x6c7ffa20, 0x19c8d: 0x6d0c4620, 0x19c8e: 0x6c161220, 0x19c8f: 0x6cc33620,\n\t0x19c90: 0x6d31d820, 0x19c91: 0x6cb46a20, 0x19c93: 0x6cdf2a20,\n\t0x19c94: 0x6c3a9e20, 0x19c95: 0x6cd55620, 0x19c97: 0x6c298820,\n\t0x19c98: 0x6c25f220, 0x19c99: 0x6cdf9c20, 0x19c9a: 0x6ce49820, 0x19c9b: 0x6c1ba020,\n\t0x19c9c: 0x6cde9020, 0x19c9d: 0x6c642a20, 0x19c9e: 0x6cd75e20, 0x19c9f: 0x6c5a3220,\n\t0x19ca0: 0x6c8a6820, 0x19ca3: 0x6c185e20,\n\t0x19ca4: 0x6c6cf820, 0x19ca5: 0x6c360020, 0x19ca6: 0x6c464620, 0x19ca7: 0x6c3e6420,\n\t0x19ca8: 0x6c34f020, 0x19caa: 0x6c363e20, 0x19cab: 0x6c07f020,\n\t0x19cac: 0x6ce1ca20, 0x19cad: 0x6c2c6020, 0x19caf: 0x6c2c7020,\n\t0x19cb0: 0x6c10a620, 0x19cb1: 0x6ced3820, 0x19cb2: 0x6d2fd020, 0x19cb3: 0x6c950620,\n\t0x19cb4: 0x6cb62620, 0x19cb5: 0x6ca2a420, 0x19cb6: 0x6cba6c20,\n\t0x19cb8: 0x6d3fae20, 0x19cb9: 0x6cd9d620, 0x19cbb: 0x6d1f6220,\n\t0x19cbc: 0x6d38ac20, 0x19cbd: 0x6cdea620, 0x19cbf: 0x6cdb3c20,\n\t// Block 0x673, offset 0x19cc0\n\t0x19cc0: 0x6c10c220, 0x19cc1: 0x6cf7aa20, 0x19cc2: 0x6c67c620, 0x19cc3: 0x6c12ba20,\n\t0x19cc4: 0x6c406620, 0x19cc5: 0x6ce2b820, 0x19cc6: 0x6c185220, 0x19cc7: 0x6c407820,\n\t0x19cc8: 0x6c3ae020, 0x19cc9: 0x6cf48c20, 0x19cca: 0x6cf5ac20, 0x19ccb: 0x6d101620,\n\t0x19ccc: 0x6ca04820, 0x19ccd: 0x6cad2020, 0x19cce: 0x6c98a620, 0x19ccf: 0x6ccbba20,\n\t0x19cd0: 0x6c9bb420, 0x19cd1: 0x6c12a820, 0x19cd2: 0x6ce57220, 0x19cd3: 0x6c764820,\n\t0x19cd4: 0x6c043620, 0x19cd5: 0x6cffa620, 0x19cd6: 0x6d032620, 0x19cd7: 0x6cb76220,\n\t0x19cda: 0x6cceb020, 0x19cdb: 0x6c590a20,\n\t0x19cdc: 0x6ca96a20, 0x19cdd: 0x6cff7820, 0x19cde: 0x6c18b220, 0x19cdf: 0x6c27ce20,\n\t0x19ce0: 0x6c3c3820, 0x19ce1: 0x6d1ad420, 0x19ce2: 0x6c01fa20, 0x19ce3: 0x6cc4be20,\n\t0x19ce4: 0x6cc64420, 0x19ce5: 0x6c976020, 0x19ce6: 0x6c394c20, 0x19ce7: 0x6cc10220,\n\t0x19ce8: 0x6cd2ce20, 0x19ce9: 0x6c511820, 0x19cea: 0x6c0b9220, 0x19ceb: 0x6c276220,\n\t0x19cec: 0x6ca11420, 0x19ced: 0x6c2aca20,\n\t0x19cf0: 0x6c7ba020, 0x19cf2: 0x6c144220, 0x19cf3: 0x6c349620,\n\t0x19cf4: 0x6d1fd220, 0x19cf5: 0x6c504020, 0x19cf7: 0x6c486020,\n\t0x19cf8: 0x6d095c20, 0x19cf9: 0x6c833620, 0x19cfa: 0x6c6c9220, 0x19cfb: 0x6cb70220,\n\t0x19cfc: 0x6cc11020, 0x19cfd: 0x6cee2220, 0x19cfe: 0x6d13f620, 0x19cff: 0x6c89e620,\n\t// Block 0x674, offset 0x19d00\n\t0x19d02: 0x6d0cb020, 0x19d03: 0x6d180220,\n\t0x19d04: 0x6d1a7620, 0x19d05: 0x6cb60020, 0x19d06: 0x6d306420, 0x19d07: 0x6cf8a620,\n\t0x19d08: 0x6d180420, 0x19d09: 0x6d128620, 0x19d0a: 0x6cf3d820, 0x19d0b: 0x6d33fa20,\n\t0x19d0c: 0x6d366a20, 0x19d0d: 0x6c4e5a20, 0x19d0e: 0x6c21c820, 0x19d0f: 0x6c3d8420,\n\t0x19d10: 0x6c215220, 0x19d11: 0x6cb2b620, 0x19d12: 0x6c7afa20, 0x19d13: 0x6c1dc220,\n\t0x19d15: 0x6ceb8a20, 0x19d16: 0x6cbf4220, 0x19d17: 0x6c233020,\n\t0x19d18: 0x6c42d220, 0x19d19: 0x6c7acc20, 0x19d1a: 0x6cc12620, 0x19d1b: 0x6cc12820,\n\t0x19d1c: 0x6d340020, 0x19d1d: 0x6c9c0a20, 0x19d1e: 0x6c865220, 0x19d1f: 0x6d389c20,\n\t0x19d20: 0x6cde8420, 0x19d21: 0x6d340220, 0x19d22: 0x6c482420, 0x19d23: 0x6c899c20,\n\t0x19d24: 0x6c54ee20, 0x19d25: 0x6c7e8820, 0x19d26: 0x6c2d2620, 0x19d27: 0x6c22d820,\n\t0x19d28: 0x6d1bde20, 0x19d2b: 0x6cb62a20,\n\t0x19d2d: 0x6c144620, 0x19d2e: 0x6c99b020, 0x19d2f: 0x6c31b020,\n\t0x19d30: 0x6d19fe20, 0x19d31: 0x6c148820, 0x19d32: 0x6cc8dc20, 0x19d33: 0x6c524020,\n\t0x19d34: 0x6cc87820, 0x19d35: 0x6c3d9420, 0x19d36: 0x6c7f4e20, 0x19d37: 0x6d043420,\n\t0x19d38: 0x6c64e020, 0x19d39: 0x6d186220, 0x19d3a: 0x6c9a6820,\n\t0x19d3c: 0x6c987620, 0x19d3d: 0x6c627e20, 0x19d3e: 0x6cdd3a20, 0x19d3f: 0x6c4f0c20,\n\t// Block 0x675, offset 0x19d40\n\t0x19d41: 0x6c868420, 0x19d42: 0x6d3f2220, 0x19d43: 0x6d412820,\n\t0x19d44: 0x6d114820, 0x19d45: 0x6c43a820, 0x19d46: 0x6c844c20, 0x19d47: 0x6cb71c20,\n\t0x19d48: 0x6c462420, 0x19d49: 0x6c868620, 0x19d4a: 0x6c0db220, 0x19d4b: 0x6cdd3c20,\n\t0x19d4e: 0x6cdb3e20, 0x19d4f: 0x6c1e4c20,\n\t0x19d50: 0x6c650220, 0x19d51: 0x6d010020, 0x19d52: 0x6c076420, 0x19d53: 0x6d066020,\n\t0x19d54: 0x6c6eb620, 0x19d55: 0x6cb46220, 0x19d56: 0x6c8d7220, 0x19d57: 0x6cfdd620,\n\t0x19d58: 0x6d42ac20, 0x19d59: 0x6c2e4420, 0x19d5a: 0x6c216a20, 0x19d5b: 0x6cbeb620,\n\t0x19d5c: 0x6ca41020, 0x19d5d: 0x6d2cfe20, 0x19d5e: 0x6c940820, 0x19d5f: 0x6d157420,\n\t0x19d60: 0x6cceba20, 0x19d61: 0x6d21ba20, 0x19d62: 0x6c575c20, 0x19d63: 0x6c845e20,\n\t0x19d64: 0x6cabce20, 0x19d67: 0x6c846020,\n\t0x19d6a: 0x6cd6e620,\n\t0x19d6c: 0x6d18d620, 0x19d6d: 0x6ca95c20, 0x19d6e: 0x6cd83820, 0x19d6f: 0x6c7ab020,\n\t0x19d70: 0x6c407a20, 0x19d71: 0x6d142820, 0x19d72: 0x6c2ab820, 0x19d73: 0x6cc49620,\n\t0x19d74: 0x6c131e20, 0x19d76: 0x6ce39820, 0x19d77: 0x6cbdb420,\n\t0x19d78: 0x6c0c8820, 0x19d79: 0x6cdca420, 0x19d7a: 0x6cef4c20, 0x19d7b: 0x6c33bc20,\n\t0x19d7c: 0x6ccb7a20, 0x19d7d: 0x6c00f620, 0x19d7e: 0x6cb7f420, 0x19d7f: 0x6d420e20,\n\t// Block 0x676, offset 0x19d80\n\t0x19d80: 0x6c7b7620, 0x19d81: 0x6c3a7420, 0x19d83: 0x6d1b9620,\n\t0x19d85: 0x6ccaea20, 0x19d86: 0x6c314820, 0x19d87: 0x6c5c8220,\n\t0x19d88: 0x6d026220, 0x19d89: 0x6d2b1c20, 0x19d8a: 0x6ce03420, 0x19d8b: 0x6ce15a20,\n\t0x19d8c: 0x6d374620, 0x19d8d: 0x6d191620, 0x19d8e: 0x6c3f1c20, 0x19d8f: 0x6c359420,\n\t0x19d91: 0x6c75fc20, 0x19d92: 0x6c638e20, 0x19d93: 0x6c141220,\n\t0x19d94: 0x6cfbca20, 0x19d95: 0x6c981420, 0x19d97: 0x6c0aba20,\n\t0x19d98: 0x6c8d9220, 0x19d99: 0x6c6b7620, 0x19d9a: 0x6c7d3620, 0x19d9b: 0x6c63f620,\n\t0x19d9d: 0x6c19a420, 0x19d9e: 0x6c813420, 0x19d9f: 0x6d03b420,\n\t0x19da0: 0x6c3af620, 0x19da1: 0x6c936e20, 0x19da2: 0x6d2c9e20, 0x19da3: 0x6c51a420,\n\t0x19da4: 0x6c5f9420, 0x19da5: 0x6ca66220, 0x19da6: 0x6d1cd620, 0x19da7: 0x6d002e20,\n\t0x19da8: 0x6ce2d820, 0x19da9: 0x6c81c820, 0x19daa: 0x6d2b2820, 0x19dab: 0x6c7cba20,\n\t0x19dad: 0x6cb9e620, 0x19dae: 0x6c719020, 0x19daf: 0x6cb18c20,\n\t0x19db0: 0x6c38f220, 0x19db1: 0x6ce80020, 0x19db2: 0x6c8c4020, 0x19db3: 0x6c9cc020,\n\t0x19db4: 0x6d3de820, 0x19db5: 0x6d013020, 0x19db6: 0x6c56ee20, 0x19db7: 0x6c9cc220,\n\t0x19db8: 0x6c6a4820, 0x19db9: 0x6d28e220, 0x19dba: 0x6c23d620, 0x19dbb: 0x6c87b220,\n\t0x19dbc: 0x6cc4a020, 0x19dbd: 0x6d3a4a20, 0x19dbe: 0x6d1ab820, 0x19dbf: 0x6c4f4020,\n\t// Block 0x677, offset 0x19dc0\n\t0x19dc1: 0x6d198620, 0x19dc2: 0x6c948020, 0x19dc3: 0x6d274420,\n\t0x19dc4: 0x6cc4a420, 0x19dc5: 0x6c8df620, 0x19dc6: 0x6ca78620, 0x19dc7: 0x6d24b620,\n\t0x19dc8: 0x6caaa020, 0x19dca: 0x6d174020, 0x19dcb: 0x6caaa420,\n\t0x19dcc: 0x6d174220, 0x19dcd: 0x6cb98020, 0x19dce: 0x6cf9b620, 0x19dcf: 0x6c1edc20,\n\t0x19dd0: 0x6d1a6820, 0x19dd1: 0x6c9d4820, 0x19dd2: 0x6cf65820, 0x19dd3: 0x6ca35a20,\n\t0x19dd4: 0x6c76de20, 0x19dd5: 0x6d412020, 0x19dd6: 0x6cf9da20, 0x19dd7: 0x6d0cc620,\n\t0x19dd8: 0x6ce8f420, 0x19dd9: 0x6ce30020, 0x19dda: 0x6cf38820, 0x19ddb: 0x6cdda820,\n\t0x19ddc: 0x6d1aaa20, 0x19ddd: 0x6c1d0a20, 0x19dde: 0x6d38de20, 0x19ddf: 0x6c988620,\n\t0x19de0: 0x6d254820, 0x19de1: 0x6caa8020, 0x19de2: 0x6c9e7020, 0x19de3: 0x6d2a4820,\n\t0x19de4: 0x6ced1420, 0x19de5: 0x6c83ca20, 0x19de6: 0x6cc10420, 0x19de7: 0x6ca33a20,\n\t0x19de8: 0x6cd26220, 0x19de9: 0x6c098c20, 0x19dea: 0x6d3e2a20, 0x19deb: 0x6c056c20,\n\t0x19ded: 0x6c736c20, 0x19dee: 0x6cfde620, 0x19def: 0x6c7c7c20,\n\t0x19df0: 0x6cac2c20, 0x19df1: 0x6c7ba220, 0x19df2: 0x6d0a1220, 0x19df3: 0x6d2cc620,\n\t0x19df4: 0x6d10fc20, 0x19df5: 0x6c7d6a20, 0x19df6: 0x6c5acc20, 0x19df7: 0x6cf65a20,\n\t0x19df8: 0x6c357420, 0x19df9: 0x6d0fcc20, 0x19dfa: 0x6ce59020, 0x19dfb: 0x6d1f4e20,\n\t0x19dfc: 0x6c746c20, 0x19dfd: 0x6c83f620, 0x19dff: 0x6c842020,\n\t// Block 0x678, offset 0x19e00\n\t0x19e00: 0x6c198020, 0x19e01: 0x6c624e20, 0x19e02: 0x6c562a20, 0x19e03: 0x6d2e7020,\n\t0x19e04: 0x6c3f7a20, 0x19e05: 0x6c16ba20, 0x19e06: 0x6c495c20, 0x19e07: 0x6c714420,\n\t0x19e08: 0x6c9b3220, 0x19e09: 0x6c167820, 0x19e0a: 0x6ce0a620, 0x19e0b: 0x6ca1e220,\n\t0x19e0c: 0x6d039e20, 0x19e0d: 0x6c852620, 0x19e0e: 0x6d0c2a20, 0x19e0f: 0x6cd9da20,\n\t0x19e10: 0x6cd1ee20, 0x19e11: 0x6d186420, 0x19e12: 0x6c0e2a20, 0x19e13: 0x6c234e20,\n\t0x19e14: 0x6c542c20, 0x19e15: 0x6ced3a20, 0x19e16: 0x6c2c9620, 0x19e17: 0x6c5f4420,\n\t0x19e18: 0x6c443820, 0x19e19: 0x6c4e3420, 0x19e1a: 0x6c0f6220, 0x19e1b: 0x6d04f420,\n\t0x19e1c: 0x6c8ea220, 0x19e1d: 0x6c11ae20, 0x19e1e: 0x6c11b020, 0x19e1f: 0x6d18d820,\n\t0x19e20: 0x6d082c20, 0x19e21: 0x6d0ce020, 0x19e22: 0x6d2a5c20, 0x19e23: 0x6c4f1e20,\n\t0x19e24: 0x6d1e0020, 0x19e25: 0x6d3fc820, 0x19e27: 0x6c775820,\n\t0x19e28: 0x6d21bc20, 0x19e29: 0x6cb53820, 0x19e2a: 0x6d310620, 0x19e2b: 0x6c967e20,\n\t0x19e2e: 0x6cd6e820, 0x19e2f: 0x6c6d6a20,\n\t0x19e30: 0x6c49b020, 0x19e31: 0x6cb46c20, 0x19e32: 0x6c8c7220,\n\t0x19e34: 0x6ce69c20, 0x19e35: 0x6c679420, 0x19e36: 0x6c7eac20, 0x19e37: 0x6d191820,\n\t0x19e38: 0x6d1dce20, 0x19e39: 0x6c22ec20, 0x19e3a: 0x6d0dfe20, 0x19e3b: 0x6c6b7020,\n\t0x19e3c: 0x6d09c820, 0x19e3d: 0x6cf11020, 0x19e3e: 0x6cfc4c20, 0x19e3f: 0x6ca93620,\n\t// Block 0x679, offset 0x19e40\n\t0x19e40: 0x6c408c20, 0x19e41: 0x6c445c20, 0x19e43: 0x6ca19c20,\n\t0x19e44: 0x6d3b4620, 0x19e45: 0x6ca38a20, 0x19e46: 0x6cfc5620, 0x19e47: 0x6cf1c420,\n\t0x19e48: 0x6c877820, 0x19e49: 0x6c11c220, 0x19e4a: 0x6c9f1c20, 0x19e4b: 0x6c655220,\n\t0x19e4c: 0x6ca6e220, 0x19e4d: 0x6c14b020, 0x19e4e: 0x6cecb020, 0x19e4f: 0x6d069c20,\n\t0x19e50: 0x6caa8220, 0x19e51: 0x6c973020, 0x19e52: 0x6d417020, 0x19e53: 0x6c770c20,\n\t0x19e54: 0x6c761620, 0x19e55: 0x6c4f7020,\n\t0x19e58: 0x6d23f420, 0x19e59: 0x6cf11220, 0x19e5a: 0x6d39fa20,\n\t0x19e5d: 0x6d170a20, 0x19e5f: 0x6c2dbc20,\n\t0x19e60: 0x6c3e4420, 0x19e61: 0x6c08d620, 0x19e62: 0x6d3a6820, 0x19e63: 0x6d3f0c20,\n\t0x19e64: 0x6cd5cc20, 0x19e65: 0x6cf9ba20, 0x19e66: 0x6ca5e020,\n\t0x19e68: 0x6c68fe20, 0x19e69: 0x6d0a1420, 0x19e6a: 0x6c1cc620, 0x19e6b: 0x6caa2220,\n\t0x19e6c: 0x6cc67e20, 0x19e6d: 0x6d364220, 0x19e6e: 0x6cca6e20,\n\t0x19e70: 0x6cccf020, 0x19e71: 0x6d237e20, 0x19e73: 0x6c6c4e20,\n\t0x19e75: 0x6c929c20, 0x19e76: 0x6c4db020, 0x19e77: 0x6c0cb220,\n\t0x19e78: 0x6d183a20, 0x19e79: 0x6d41c020, 0x19e7a: 0x6d2e7220, 0x19e7b: 0x6d23ac20,\n\t0x19e7c: 0x6ced3c20, 0x19e7d: 0x6ca5fe20, 0x19e7e: 0x6c495e20, 0x19e7f: 0x6c748420,\n\t// Block 0x67a, offset 0x19e80\n\t0x19e80: 0x6c082820, 0x19e81: 0x6c11a220, 0x19e83: 0x6c351220,\n\t0x19e84: 0x6cb7c620, 0x19e85: 0x6d10b420, 0x19e86: 0x6c7d1820, 0x19e87: 0x6cc84820,\n\t0x19e88: 0x6c542e20, 0x19e89: 0x6d0a3820, 0x19e8a: 0x6d020020,\n\t0x19e8c: 0x6c7d1a20, 0x19e8e: 0x6d00f020, 0x19e8f: 0x6c0f6420,\n\t0x19e90: 0x6c78d820, 0x19e91: 0x6c24ec20, 0x19e92: 0x6d074020, 0x19e93: 0x6c042820,\n\t0x19e94: 0x6cab5820, 0x19e95: 0x6d400c20, 0x19e97: 0x6ce42e20,\n\t0x19e98: 0x6c1ef220, 0x19e99: 0x6c1b5820, 0x19e9a: 0x6ca7b420, 0x19e9b: 0x6c49ac20,\n\t0x19e9c: 0x6c3cbe20, 0x19e9d: 0x6d023020, 0x19e9e: 0x6c2aba20, 0x19e9f: 0x6cef4e20,\n\t0x19ea0: 0x6c74e220, 0x19ea1: 0x6c7d2e20, 0x19ea2: 0x6d2bb420, 0x19ea3: 0x6cc9ac20,\n\t0x19ea4: 0x6c34bc20, 0x19ea5: 0x6c8d8420, 0x19ea6: 0x6c9b9a20,\n\t0x19ea8: 0x6c4cde20, 0x19ea9: 0x6c9b9c20, 0x19eaa: 0x6c8fec20,\n\t0x19eac: 0x6d1d5e20, 0x19eae: 0x6c49c620, 0x19eaf: 0x6c248820,\n\t0x19eb0: 0x6c84e620, 0x19eb1: 0x6c320c20, 0x19eb3: 0x6c0bf220,\n\t0x19eb5: 0x6cf62c20, 0x19eb7: 0x6c2a6620,\n\t0x19eb8: 0x6c2a6820, 0x19eb9: 0x6cfcba20, 0x19eba: 0x6c880020,\n\t0x19ebc: 0x6ccedc20, 0x19ebd: 0x6d00b020, 0x19ebe: 0x6cd1c420, 0x19ebf: 0x6cf09e20,\n\t// Block 0x67b, offset 0x19ec0\n\t0x19ec2: 0x6c51d820, 0x19ec3: 0x6d1f5a20,\n\t0x19ec4: 0x6c92b220, 0x19ec5: 0x6c7f5020, 0x19ec6: 0x6d1d0e20, 0x19ec7: 0x6cd14c20,\n\t0x19ec8: 0x6c739220, 0x19ec9: 0x6cb7e420, 0x19eca: 0x6c65ea20, 0x19ecb: 0x6d285c20,\n\t0x19ecd: 0x6cb7f620, 0x19ecf: 0x6c8c7c20,\n\t0x19ed0: 0x6c60ea20, 0x19ed1: 0x6c970a20, 0x19ed2: 0x6c208220, 0x19ed3: 0x6ca74620,\n\t0x19ed4: 0x6c0d6e20, 0x19ed5: 0x6c87c020, 0x19ed6: 0x6c8dfa20, 0x19ed7: 0x6c427a20,\n\t0x19ed8: 0x6c1a2020, 0x19ed9: 0x6d07b020, 0x19eda: 0x6cfc1a20, 0x19edb: 0x6c558620,\n\t0x19edc: 0x6c088620, 0x19edd: 0x6d40d020, 0x19ede: 0x6c271a20, 0x19edf: 0x6c271c20,\n\t0x19ee0: 0x6c5d3e20, 0x19ee1: 0x6cc9d020, 0x19ee2: 0x6c184420, 0x19ee3: 0x6ce37c20,\n\t0x19ee5: 0x6cab1a20, 0x19ee6: 0x6d371420, 0x19ee7: 0x6c8ebe20,\n\t0x19ee8: 0x6c3aea20, 0x19ee9: 0x6c695e20, 0x19eea: 0x6c493620, 0x19eeb: 0x6cf7ba20,\n\t0x19eec: 0x6c8bf820, 0x19eed: 0x6d07f820, 0x19eee: 0x6cc62a20, 0x19eef: 0x6ce25a20,\n\t0x19ef0: 0x6cb05820, 0x19ef1: 0x6d032a20, 0x19ef2: 0x6ccd7c20, 0x19ef3: 0x6d360e20,\n\t0x19ef4: 0x6cec3220, 0x19ef5: 0x6ce81020, 0x19ef6: 0x6ce46620, 0x19ef7: 0x6d13e820,\n\t0x19ef8: 0x6d019c20, 0x19ef9: 0x6cb05c20, 0x19efa: 0x6d10ec20, 0x19efb: 0x6d10ee20,\n\t0x19efc: 0x6caa8620, 0x19efd: 0x6c503a20, 0x19efe: 0x6ca8e820, 0x19eff: 0x6d1b4a20,\n\t// Block 0x67c, offset 0x19f00\n\t0x19f00: 0x6c390a20, 0x19f01: 0x6ca3fa20, 0x19f02: 0x6d109c20, 0x19f03: 0x6ced7e20,\n\t0x19f04: 0x6d25e820, 0x19f05: 0x6cf9c820, 0x19f06: 0x6d392c20, 0x19f07: 0x6d25ea20,\n\t0x19f08: 0x6cd38a20, 0x19f09: 0x6c9e5a20, 0x19f0a: 0x6cf62e20, 0x19f0b: 0x6c621220,\n\t0x19f0c: 0x6ce22a20, 0x19f0d: 0x6c3ab020, 0x19f0e: 0x6d096020, 0x19f0f: 0x6ca5e820,\n\t0x19f10: 0x6c224620, 0x19f11: 0x6c9d4a20, 0x19f12: 0x6c0ba220,\n\t0x19f14: 0x6ca2e620, 0x19f15: 0x6d238020, 0x19f16: 0x6c366220, 0x19f17: 0x6d353a20,\n\t0x19f18: 0x6cc57420, 0x19f19: 0x6d070020, 0x19f1a: 0x6c94b020, 0x19f1b: 0x6c5be820,\n\t0x19f1c: 0x6d0a9620, 0x19f1d: 0x6ca4b820, 0x19f1e: 0x6c4eee20, 0x19f1f: 0x6c63d620,\n\t0x19f20: 0x6c312e20, 0x19f21: 0x6c57b420, 0x19f22: 0x6ce86c20, 0x19f23: 0x6cb26220,\n\t0x19f24: 0x6c244c20, 0x19f25: 0x6cf68220, 0x19f26: 0x6cd99820, 0x19f27: 0x6c9c6c20,\n\t0x19f28: 0x6d034420, 0x19f29: 0x6cf51a20, 0x19f2a: 0x6cbf5420, 0x19f2b: 0x6d2edc20,\n\t0x19f2c: 0x6ce23620, 0x19f2d: 0x6d043620, 0x19f2e: 0x6c701e20, 0x19f2f: 0x6c728220,\n\t0x19f30: 0x6c5d4020, 0x19f31: 0x6ce36e20, 0x19f32: 0x6c977420, 0x19f33: 0x6d0ea420,\n\t0x19f34: 0x6c5f2020, 0x19f35: 0x6cd47a20, 0x19f36: 0x6c82d620, 0x19f37: 0x6ced4420,\n\t0x19f38: 0x6c183820, 0x19f39: 0x6c120a20, 0x19f3a: 0x6c6c0620, 0x19f3b: 0x6d205820,\n\t0x19f3c: 0x6c5b6620, 0x19f3d: 0x6d2c9420, 0x19f3e: 0x6cdb4820, 0x19f3f: 0x6c444220,\n\t// Block 0x67d, offset 0x19f40\n\t0x19f40: 0x6ca51a20, 0x19f41: 0x6cf8f820, 0x19f43: 0x6c331a20,\n\t0x19f44: 0x6c1b6420, 0x19f45: 0x6cef5020, 0x19f46: 0x6d30ae20, 0x19f47: 0x6c4bf420,\n\t0x19f48: 0x6c175620, 0x19f49: 0x6c1ae020, 0x19f4a: 0x6d2a2820, 0x19f4b: 0x6c5c8420,\n\t0x19f4c: 0x6c944820, 0x19f4d: 0x6c8a4620, 0x19f4e: 0x6c818a20, 0x19f4f: 0x6cead820,\n\t0x19f50: 0x6c5b0420, 0x19f51: 0x6cf54620, 0x19f52: 0x6c02fa20, 0x19f53: 0x6ccf8620,\n\t0x19f54: 0x6cdc0220, 0x19f55: 0x6c974c20, 0x19f56: 0x6ce0b620, 0x19f57: 0x6d035a20,\n\t0x19f58: 0x6c6e4020, 0x19f59: 0x6c017620, 0x19f5a: 0x6cdee220, 0x19f5b: 0x6c156420,\n\t0x19f5c: 0x6cf11a20, 0x19f5d: 0x6ce98420, 0x19f5e: 0x6c62dc20, 0x19f5f: 0x6c18fa20,\n\t0x19f60: 0x6c185820, 0x19f61: 0x6d247c20, 0x19f62: 0x6cfc6020, 0x19f63: 0x6d02d020,\n\t0x19f67: 0x6ca51c20,\n\t0x19f69: 0x6d0f1020, 0x19f6a: 0x6cc01e20, 0x19f6b: 0x6c675820,\n\t0x19f6c: 0x6cd95c20, 0x19f6d: 0x6c75c420, 0x19f6e: 0x6c89fc20, 0x19f6f: 0x6c714e20,\n\t0x19f71: 0x6c97d220, 0x19f72: 0x6c8b7220,\n\t0x19f74: 0x6c1f3820, 0x19f75: 0x6c1bae20, 0x19f76: 0x6cfdcc20, 0x19f77: 0x6cbd3a20,\n\t0x19f78: 0x6c9a6220, 0x19f79: 0x6cd5fa20, 0x19f7a: 0x6c149020, 0x19f7b: 0x6c1bc420,\n\t0x19f7c: 0x6c474620, 0x19f7d: 0x6d21a820, 0x19f7e: 0x6d1a0420,\n\t// Block 0x67e, offset 0x19f80\n\t0x19f80: 0x6c8eac20, 0x19f81: 0x6c818020, 0x19f82: 0x6cd61e20, 0x19f83: 0x6d30be20,\n\t0x19f84: 0x6cd6c420, 0x19f85: 0x6c5aac20,\n\t0x19f88: 0x6c364620, 0x19f8a: 0x6ccc7020, 0x19f8b: 0x6d402e20,\n\t0x19f8c: 0x6c74a620, 0x19f8d: 0x6c75ec20, 0x19f8e: 0x6ce93820, 0x19f8f: 0x6c90ca20,\n\t0x19f90: 0x6cef5c20, 0x19f91: 0x6c1cf420, 0x19f92: 0x6d3b4820, 0x19f93: 0x6c8b7420,\n\t0x19f95: 0x6d30cc20, 0x19f96: 0x6d2f8c20,\n\t0x19f98: 0x6d178020, 0x19f99: 0x6c1e5c20, 0x19f9a: 0x6ca5ea20, 0x19f9b: 0x6c0e7820,\n\t0x19f9c: 0x6cdb8620, 0x19f9d: 0x6d160620, 0x19f9e: 0x6c506020, 0x19f9f: 0x6d0bc820,\n\t0x19fa0: 0x6c58ac20, 0x19fa1: 0x6c980a20, 0x19fa2: 0x6c980c20, 0x19fa3: 0x6cc1f220,\n\t0x19fa4: 0x6c81c420, 0x19fa5: 0x6c4ffe20, 0x19fa6: 0x6d37d620, 0x19fa7: 0x6c9f4e20,\n\t0x19fa8: 0x6cfb5620, 0x19fa9: 0x6d324420, 0x19faa: 0x6cd55e20, 0x19fab: 0x6d423e20,\n\t0x19fac: 0x6d3afc20, 0x19fad: 0x6c46aa20, 0x19fae: 0x6d089820, 0x19faf: 0x6d17c620,\n\t0x19fb0: 0x6d366e20, 0x19fb1: 0x6d00c620, 0x19fb2: 0x6c6d1e20, 0x19fb3: 0x6c11a420,\n\t0x19fb5: 0x6c10ae20, 0x19fb6: 0x6c896a20, 0x19fb7: 0x6d341020,\n\t0x19fb8: 0x6c626c20, 0x19fb9: 0x6ced4620, 0x19fba: 0x6c49a420, 0x19fbb: 0x6c70bc20,\n\t0x19fbc: 0x6c6ea220, 0x19fbd: 0x6c00c420, 0x19fbe: 0x6c404220, 0x19fbf: 0x6c4b7220,\n\t// Block 0x67f, offset 0x19fc0\n\t0x19fc0: 0x6c548020, 0x19fc1: 0x6d0ec620, 0x19fc2: 0x6cc87e20, 0x19fc3: 0x6d36ee20,\n\t0x19fc4: 0x6c0c9420, 0x19fc5: 0x6d157620, 0x19fc6: 0x6cdd9e20, 0x19fc7: 0x6c2efa20,\n\t0x19fc8: 0x6c4b9620, 0x19fc9: 0x6cd18020, 0x19fca: 0x6d0ab820, 0x19fcb: 0x6c194620,\n\t0x19fcc: 0x6ccf2020, 0x19fcd: 0x6cbe8a20,\n\t0x19fd0: 0x6c218a20, 0x19fd1: 0x6c533820, 0x19fd2: 0x6c308220, 0x19fd3: 0x6c198220,\n\t0x19fd4: 0x6ceff820, 0x19fd5: 0x6cc7ea20, 0x19fd6: 0x6cd55420, 0x19fd7: 0x6c10f220,\n\t0x19fd8: 0x6c600e20, 0x19fd9: 0x6d28b620, 0x19fda: 0x6cb5d420, 0x19fdb: 0x6d0c0220,\n\t0x19fdc: 0x6c3fe820, 0x19fdd: 0x6d235820, 0x19fde: 0x6c3e9020, 0x19fdf: 0x6cb39220,\n\t0x19fe0: 0x6d33e620, 0x19fe1: 0x6ce06220, 0x19fe2: 0x6d424020, 0x19fe3: 0x6c17ec20,\n\t0x19fe4: 0x6cc19a20, 0x19fe5: 0x6d204e20, 0x19fe6: 0x6c514a20, 0x19fe7: 0x6c547420,\n\t0x19fe8: 0x6c4b0e20, 0x19fe9: 0x6c366620, 0x19fea: 0x6c67ea20, 0x19feb: 0x6d27f620,\n\t0x19fec: 0x6ce83020, 0x19fed: 0x6c259820, 0x19fee: 0x6ce87020, 0x19fef: 0x6c402a20,\n\t0x19ff0: 0x6d424c20, 0x19ff1: 0x6c558820, 0x19ff3: 0x6c0f4a20,\n\t0x19ff4: 0x6d2f6e20, 0x19ff5: 0x6c754a20, 0x19ff6: 0x6ce0d020, 0x19ff7: 0x6c74aa20,\n\t0x19ff8: 0x6c404620, 0x19ff9: 0x6c5a0220, 0x19ffa: 0x6c211820, 0x19ffb: 0x6d1e5e20,\n\t0x19ffc: 0x6c20f020, 0x19ffd: 0x6cdda020, 0x19ffe: 0x6c1b5c20, 0x19fff: 0x6cb92a20,\n\t// Block 0x680, offset 0x1a000\n\t0x1a000: 0x6c10fc20, 0x1a001: 0x6cff9c20, 0x1a002: 0x6c979220, 0x1a003: 0x6c117c20,\n\t0x1a004: 0x6cb7f820, 0x1a005: 0x6c66f620, 0x1a006: 0x6c0a9a20, 0x1a007: 0x6c5f8420,\n\t0x1a008: 0x6d34b820, 0x1a009: 0x6d3a3620, 0x1a00a: 0x6cc1f420, 0x1a00b: 0x6d2e3420,\n\t0x1a00c: 0x6c60fa20, 0x1a00d: 0x6c0b2420, 0x1a00f: 0x6c878020,\n\t0x1a010: 0x6c879420, 0x1a011: 0x6d272a20, 0x1a012: 0x6cc34020, 0x1a013: 0x6c195a20,\n\t0x1a014: 0x6c3fcc20, 0x1a015: 0x6c144020, 0x1a016: 0x6ce19c20, 0x1a017: 0x6cd37420,\n\t0x1a018: 0x6c4f9620, 0x1a019: 0x6cbcbe20, 0x1a01a: 0x6cb5d620, 0x1a01b: 0x6c0efc20,\n\t0x1a01c: 0x6ca33e20, 0x1a01d: 0x6ce82a20, 0x1a01e: 0x6c1e7a20, 0x1a01f: 0x6c243c20,\n\t0x1a020: 0x6d26c020, 0x1a021: 0x6d33e820, 0x1a022: 0x6c18cc20, 0x1a023: 0x6c1f4a20,\n\t0x1a024: 0x6c09b420, 0x1a025: 0x6c9b1c20, 0x1a026: 0x6c038020, 0x1a027: 0x6ce4a220,\n\t0x1a028: 0x6c9f5a20, 0x1a029: 0x6c8aba20, 0x1a02a: 0x6c3ccc20, 0x1a02b: 0x6c197420,\n\t0x1a02c: 0x6cc0b820, 0x1a02d: 0x6ce58820, 0x1a02e: 0x6c3eac20, 0x1a02f: 0x6c7e0820,\n\t0x1a030: 0x6c65b820,\n\t0x1a034: 0x6d325620, 0x1a035: 0x6cc08a20, 0x1a036: 0x6d42a820, 0x1a037: 0x6c1c4c20,\n\t0x1a038: 0x6c7c9420, 0x1a039: 0x6c8b2420, 0x1a03a: 0x6c074a20, 0x1a03b: 0x6c326e20,\n\t0x1a03c: 0x6cf46c20, 0x1a03e: 0x6d3d9220, 0x1a03f: 0x6c92ba20,\n\t// Block 0x681, offset 0x1a040\n\t0x1a040: 0x6ce0d220, 0x1a042: 0x6c1eaa20, 0x1a043: 0x6c89a020,\n\t0x1a044: 0x6ce51820, 0x1a045: 0x6c7dbe20, 0x1a046: 0x6c16c420, 0x1a047: 0x6c74ac20,\n\t0x1a048: 0x6ce8ec20, 0x1a049: 0x6c594e20, 0x1a04a: 0x6c3aca20, 0x1a04b: 0x6c0a3c20,\n\t0x1a04d: 0x6cf97c20, 0x1a04e: 0x6cf31820, 0x1a04f: 0x6c628a20,\n\t0x1a050: 0x6cc27a20, 0x1a051: 0x6c7cdc20, 0x1a052: 0x6c55c220, 0x1a053: 0x6cbfca20,\n\t0x1a054: 0x6cdc7c20, 0x1a055: 0x6c10fa20, 0x1a057: 0x6cc0bc20,\n\t0x1a058: 0x6cb0c820, 0x1a059: 0x6cad1020, 0x1a05a: 0x6cec4020, 0x1a05b: 0x6d115620,\n\t0x1a05c: 0x6cc6c220, 0x1a05d: 0x6d09b620, 0x1a05e: 0x6c246c20, 0x1a05f: 0x6c2efc20,\n\t0x1a060: 0x6c1c8a20, 0x1a061: 0x6c25f620, 0x1a062: 0x6c9c1220, 0x1a063: 0x6d086420,\n\t0x1a064: 0x6c34be20, 0x1a065: 0x6c0d0420, 0x1a066: 0x6d310a20, 0x1a067: 0x6c1ec620,\n\t0x1a068: 0x6c164220, 0x1a069: 0x6c4b9e20, 0x1a06a: 0x6c32e620, 0x1a06b: 0x6d409420,\n\t0x1a06c: 0x6c2afe20, 0x1a06d: 0x6c7f3820, 0x1a06e: 0x6ce2da20, 0x1a06f: 0x6d272c20,\n\t0x1a070: 0x6cc34220, 0x1a071: 0x6d3a5020, 0x1a072: 0x6c8d1020, 0x1a073: 0x6c186c20,\n\t0x1a074: 0x6d31e020, 0x1a075: 0x6c400220, 0x1a076: 0x6ccf4e20, 0x1a077: 0x6ce5c620,\n\t0x1a078: 0x6c7ac820, 0x1a079: 0x6c004420, 0x1a07b: 0x6cbf5620,\n\t0x1a07c: 0x6cd61220, 0x1a07d: 0x6c4d3420, 0x1a07e: 0x6ccd5e20, 0x1a07f: 0x6cec7620,\n\t// Block 0x682, offset 0x1a080\n\t0x1a080: 0x6d2e3620, 0x1a081: 0x6c904a20, 0x1a082: 0x6c6f6220, 0x1a083: 0x6c85b820,\n\t0x1a085: 0x6c210220, 0x1a086: 0x6cc66c20, 0x1a087: 0x6d26ac20,\n\t0x1a088: 0x6c743a20, 0x1a089: 0x6c776c20, 0x1a08a: 0x6c390c20, 0x1a08b: 0x6cb5da20,\n\t0x1a08c: 0x6c534220, 0x1a08d: 0x6c3e7220, 0x1a08e: 0x6c915220, 0x1a08f: 0x6c535820,\n\t0x1a090: 0x6ceb2a20, 0x1a091: 0x6c9f5c20, 0x1a092: 0x6ce4a420, 0x1a093: 0x6c737c20,\n\t0x1a094: 0x6cb70620, 0x1a095: 0x6d332620, 0x1a096: 0x6cbece20, 0x1a097: 0x6c45f220,\n\t0x1a098: 0x6ce4b620, 0x1a099: 0x6c80dc20, 0x1a09a: 0x6c99a620, 0x1a09b: 0x6d1b6a20,\n\t0x1a09c: 0x6c92c020, 0x1a09d: 0x6d250e20, 0x1a09e: 0x6c715420, 0x1a09f: 0x6cb0b820,\n\t0x1a0a1: 0x6d00f420, 0x1a0a2: 0x6c0bbe20, 0x1a0a3: 0x6c5cd820,\n\t0x1a0a4: 0x6d39cc20, 0x1a0a5: 0x6cc6c820, 0x1a0a6: 0x6cca8e20, 0x1a0a7: 0x6cf38420,\n\t0x1a0a8: 0x6c144e20, 0x1a0a9: 0x6c795820, 0x1a0aa: 0x6ccdc420, 0x1a0ab: 0x6caede20,\n\t0x1a0ac: 0x6c980e20, 0x1a0ad: 0x6d050620, 0x1a0af: 0x6c237020,\n\t0x1a0b0: 0x6c796020, 0x1a0b1: 0x6d3bb220, 0x1a0b2: 0x6c154620, 0x1a0b3: 0x6cd84220,\n\t0x1a0b4: 0x6c1cf620, 0x1a0b5: 0x6cdcae20, 0x1a0b6: 0x6c076e20, 0x1a0b7: 0x6c769e20,\n\t0x1a0b9: 0x6d376020, 0x1a0ba: 0x6cf12620, 0x1a0bb: 0x6c9f8420,\n\t0x1a0bc: 0x6c8db220, 0x1a0bd: 0x6d414220, 0x1a0be: 0x6ca8d420, 0x1a0bf: 0x6c8dfc20,\n\t// Block 0x683, offset 0x1a0c0\n\t0x1a0c0: 0x6cb77420, 0x1a0c1: 0x6d26b020, 0x1a0c3: 0x6d186820,\n\t0x1a0c4: 0x6cf82220, 0x1a0c5: 0x6c18d820, 0x1a0c7: 0x6cc71e20,\n\t0x1a0c8: 0x6c18f820, 0x1a0c9: 0x6ca9da20, 0x1a0ca: 0x6d1ef220, 0x1a0cb: 0x6c618c20,\n\t0x1a0cc: 0x6c0ebe20, 0x1a0cd: 0x6c39ca20,\n\t0x1a0d0: 0x6c242220, 0x1a0d1: 0x6c2be820, 0x1a0d2: 0x6c684020, 0x1a0d3: 0x6d20fc20,\n\t0x1a0d4: 0x6c50fe20, 0x1a0d5: 0x6d06b220, 0x1a0d6: 0x6d22f820, 0x1a0d7: 0x6cc0f620,\n\t0x1a0d9: 0x6c044420, 0x1a0da: 0x6c44cc20, 0x1a0db: 0x6c6f0e20,\n\t0x1a0dd: 0x6d0bb820, 0x1a0de: 0x6cd5de20, 0x1a0df: 0x6d1f3e20,\n\t0x1a0e0: 0x6cd98e20, 0x1a0e1: 0x6d130820, 0x1a0e2: 0x6c125820, 0x1a0e3: 0x6d112a20,\n\t0x1a0e4: 0x6cd5fc20, 0x1a0e5: 0x6d0cba20, 0x1a0e6: 0x6cd67220, 0x1a0e7: 0x6c8aa220,\n\t0x1a0e8: 0x6c235020, 0x1a0e9: 0x6d23d420, 0x1a0ea: 0x6c0f6620, 0x1a0eb: 0x6cdbfe20,\n\t0x1a0ed: 0x6d0eca20, 0x1a0ee: 0x6c834820, 0x1a0ef: 0x6c8bf420,\n\t0x1a0f0: 0x6ce30220, 0x1a0f1: 0x6c31de20, 0x1a0f2: 0x6d272e20, 0x1a0f3: 0x6c611620,\n\t0x1a0f5: 0x6d278620,\n\t0x1a0f8: 0x6c706220, 0x1a0f9: 0x6c71a820, 0x1a0fa: 0x6c1e5820, 0x1a0fb: 0x6c18ac20,\n\t0x1a0fc: 0x6c457820, 0x1a0fd: 0x6cfe4220, 0x1a0fe: 0x6cfbee20, 0x1a0ff: 0x6c011c20,\n\t// Block 0x684, offset 0x1a100\n\t0x1a100: 0x6c4ae020, 0x1a101: 0x6d223220, 0x1a102: 0x6c82bc20,\n\t0x1a104: 0x6ce89c20, 0x1a105: 0x6c18b820, 0x1a106: 0x6d03e020, 0x1a107: 0x6cc03e20,\n\t0x1a108: 0x6c4f9a20, 0x1a10a: 0x6c292c20, 0x1a10b: 0x6c112e20,\n\t0x1a10c: 0x6c2bf420, 0x1a10d: 0x6d0d7020, 0x1a10e: 0x6d3e3020,\n\t0x1a110: 0x6d1bc020, 0x1a111: 0x6c14fa20, 0x1a113: 0x6c840020,\n\t0x1a114: 0x6cdd7e20, 0x1a115: 0x6c969c20, 0x1a116: 0x6c96a620,\n\t0x1a118: 0x6ce11e20, 0x1a119: 0x6cade620, 0x1a11a: 0x6c90ae20, 0x1a11b: 0x6cb51820,\n\t0x1a11c: 0x6c25ec20, 0x1a11d: 0x6ce8ee20, 0x1a11e: 0x6c369a20, 0x1a11f: 0x6c11aa20,\n\t0x1a120: 0x6c6b2c20, 0x1a121: 0x6d156420, 0x1a122: 0x6c60d020, 0x1a123: 0x6c294220,\n\t0x1a124: 0x6c752220, 0x1a125: 0x6c08cc20, 0x1a126: 0x6c832620, 0x1a127: 0x6d174a20,\n\t0x1a128: 0x6c214020, 0x1a129: 0x6c214620, 0x1a12a: 0x6cb38820, 0x1a12b: 0x6c83cc20,\n\t0x1a12c: 0x6d291420, 0x1a12d: 0x6cdf7020, 0x1a12e: 0x6cb39420, 0x1a12f: 0x6c242620,\n\t0x1a130: 0x6c725020, 0x1a131: 0x6d070620, 0x1a132: 0x6c395820,\n\t0x1a134: 0x6d070820, 0x1a135: 0x6c37d420, 0x1a136: 0x6c5d7e20, 0x1a137: 0x6d39b820,\n\t0x1a138: 0x6cc4c820, 0x1a139: 0x6c381c20, 0x1a13a: 0x6c72fc20, 0x1a13b: 0x6c4db620,\n\t0x1a13c: 0x6c896e20, 0x1a13d: 0x6d341220, 0x1a13e: 0x6c9d8220, 0x1a13f: 0x6d209a20,\n\t// Block 0x685, offset 0x1a140\n\t0x1a141: 0x6c133a20, 0x1a142: 0x6c9a2c20, 0x1a143: 0x6d1a0620,\n\t0x1a144: 0x6c9e4220, 0x1a145: 0x6ce8f620, 0x1a146: 0x6c7c9e20,\n\t0x1a149: 0x6c9d9a20, 0x1a14a: 0x6cc6ca20, 0x1a14b: 0x6d241c20,\n\t0x1a14c: 0x6cbae620, 0x1a14d: 0x6c9c8c20, 0x1a14e: 0x6c718020, 0x1a14f: 0x6cb07e20,\n\t0x1a150: 0x6c6cc620, 0x1a151: 0x6cee5e20, 0x1a152: 0x6c62c020, 0x1a153: 0x6c9baa20,\n\t0x1a154: 0x6c672020, 0x1a155: 0x6d098020, 0x1a156: 0x6c068220, 0x1a157: 0x6c420220,\n\t0x1a158: 0x6c161e20, 0x1a159: 0x6c87cc20, 0x1a15a: 0x6c851620, 0x1a15b: 0x6cc04020,\n\t0x1a15c: 0x6c33ee20, 0x1a15d: 0x6d1d3e20, 0x1a15e: 0x6d27ea20, 0x1a15f: 0x6c18ce20,\n\t0x1a160: 0x6d353220, 0x1a161: 0x6cc4ca20, 0x1a163: 0x6c94b220,\n\t0x1a164: 0x6c763a20, 0x1a165: 0x6c4b1420, 0x1a166: 0x6d26d620, 0x1a167: 0x6c5c0820,\n\t0x1a168: 0x6cb0b220, 0x1a169: 0x6c13f820, 0x1a16a: 0x6c34a820, 0x1a16b: 0x6c152220,\n\t0x1a16c: 0x6ccc1020, 0x1a16d: 0x6cd3c820, 0x1a16e: 0x6ccf7620, 0x1a16f: 0x6d03fa20,\n\t0x1a170: 0x6d1c9420, 0x1a171: 0x6cd3ca20, 0x1a172: 0x6c1c6420, 0x1a173: 0x6d134820,\n\t0x1a174: 0x6c4e3620, 0x1a175: 0x6c3ad420, 0x1a176: 0x6d134a20, 0x1a177: 0x6d0de220,\n\t0x1a178: 0x6d416220, 0x1a179: 0x6cd9ee20, 0x1a17a: 0x6c6c6620, 0x1a17b: 0x6c351a20,\n\t0x1a17c: 0x6cfd2220, 0x1a17d: 0x6c492e20, 0x1a17e: 0x6ce1f820, 0x1a17f: 0x6cbcfa20,\n\t// Block 0x686, offset 0x1a180\n\t0x1a180: 0x6c15f420, 0x1a181: 0x6c4e4420, 0x1a182: 0x6c9c1420, 0x1a183: 0x6d26fc20,\n\t0x1a184: 0x6c247020, 0x1a185: 0x6cba8420, 0x1a186: 0x6c6cc420, 0x1a187: 0x6ccdd020,\n\t0x1a188: 0x6ca25820, 0x1a189: 0x6d251e20, 0x1a18b: 0x6cae8a20,\n\t0x1a18c: 0x6d336e20, 0x1a18d: 0x6d374a20, 0x1a18e: 0x6c216c20, 0x1a18f: 0x6d22aa20,\n\t0x1a190: 0x6ca1f820, 0x1a191: 0x6cedae20, 0x1a192: 0x6c681020, 0x1a193: 0x6cb54c20,\n\t0x1a194: 0x6cdb5e20, 0x1a195: 0x6cb1e220, 0x1a196: 0x6ce4d020, 0x1a197: 0x6c7b7820,\n\t0x1a198: 0x6c247a20, 0x1a199: 0x6cdcb820, 0x1a19b: 0x6c6a4220,\n\t0x1a19c: 0x6c671420, 0x1a19d: 0x6c028820, 0x1a19e: 0x6c696e20, 0x1a19f: 0x6d138e20,\n\t0x1a1a1: 0x6d139020, 0x1a1a2: 0x6c8ff020, 0x1a1a3: 0x6d2a3620,\n\t0x1a1a4: 0x6c05de20, 0x1a1a5: 0x6c889a20, 0x1a1a7: 0x6c58c620,\n\t0x1a1a8: 0x6c942620, 0x1a1a9: 0x6cef7820, 0x1a1aa: 0x6cfc5820, 0x1a1ab: 0x6ce60a20,\n\t0x1a1ac: 0x6c0fc820, 0x1a1ad: 0x6d337620, 0x1a1ae: 0x6d3a3e20, 0x1a1af: 0x6c06c420,\n\t0x1a1b0: 0x6c9bba20, 0x1a1b1: 0x6d015220, 0x1a1b2: 0x6cab6820, 0x1a1b3: 0x6d1ed820,\n\t0x1a1b5: 0x6cffc820, 0x1a1b6: 0x6c87aa20, 0x1a1b7: 0x6d2c6e20,\n\t0x1a1b8: 0x6c9cd020, 0x1a1ba: 0x6d128420,\n\t0x1a1bd: 0x6cb31620, 0x1a1be: 0x6d014220,\n\t// Block 0x687, offset 0x1a1c0\n\t0x1a1c2: 0x6ccdd220, 0x1a1c3: 0x6d3d1420,\n\t0x1a1c5: 0x6ccddc20, 0x1a1c6: 0x6c754020, 0x1a1c7: 0x6c61fc20,\n\t0x1a1c8: 0x6c6a2620, 0x1a1ca: 0x6ca7a420, 0x1a1cb: 0x6c028420,\n\t0x1a1cc: 0x6c1f3a20, 0x1a1cd: 0x6cf4e420, 0x1a1ce: 0x6c495420, 0x1a1cf: 0x6d01b820,\n\t0x1a1d0: 0x6ce6d020, 0x1a1d1: 0x6d096220, 0x1a1d2: 0x6c297220, 0x1a1d3: 0x6d2d8620,\n\t0x1a1d4: 0x6ce06620, 0x1a1d5: 0x6cae7c20, 0x1a1d6: 0x6d00d420, 0x1a1d7: 0x6d072020,\n\t0x1a1d8: 0x6cfcf220, 0x1a1d9: 0x6cd8d820, 0x1a1da: 0x6c7aee20, 0x1a1db: 0x6d335a20,\n\t0x1a1dc: 0x6cf3e620, 0x1a1dd: 0x6c5d5c20, 0x1a1de: 0x6cc90620, 0x1a1df: 0x6cf1ee20,\n\t0x1a1e0: 0x6c317a20, 0x1a1e1: 0x6c58a020, 0x1a1e2: 0x6c7e1420, 0x1a1e3: 0x6c405a20,\n\t0x1a1e4: 0x6c1fd020, 0x1a1e5: 0x6cfba420, 0x1a1e6: 0x6cbdae20, 0x1a1e7: 0x6cbc8820,\n\t0x1a1e8: 0x6c7fba20, 0x1a1ea: 0x6d0bca20, 0x1a1eb: 0x6d1c0220,\n\t0x1a1ec: 0x6cc40820, 0x1a1ed: 0x6c4f5620, 0x1a1ee: 0x6c218c20, 0x1a1ef: 0x6d371e20,\n\t0x1a1f1: 0x6cf05620, 0x1a1f2: 0x6d0d0620, 0x1a1f3: 0x6cfe6a20,\n\t0x1a1f4: 0x6d194c20, 0x1a1f5: 0x6ca66a20, 0x1a1f6: 0x6d335c20, 0x1a1f7: 0x6c1fca20,\n\t0x1a1f9: 0x6cd23020, 0x1a1fa: 0x6c2f4a20, 0x1a1fb: 0x6d3ee020,\n\t0x1a1fc: 0x6c73e820, 0x1a1fd: 0x6d067620, 0x1a1fe: 0x6d255a20,\n\t// Block 0x688, offset 0x1a200\n\t0x1a201: 0x6d063020, 0x1a202: 0x6c2a0220, 0x1a203: 0x6ce48620,\n\t0x1a204: 0x6c448020, 0x1a205: 0x6d14b420, 0x1a206: 0x6c532420, 0x1a207: 0x6d13dc20,\n\t0x1a209: 0x6c851220, 0x1a20a: 0x6c7a3820, 0x1a20b: 0x6cfc0820,\n\t0x1a20c: 0x6cdbbe20, 0x1a20d: 0x6cf87620, 0x1a20e: 0x6d088620,\n\t0x1a211: 0x6c2b2a20, 0x1a212: 0x6c7f0420, 0x1a213: 0x6d387e20,\n\t0x1a214: 0x6ca76420, 0x1a215: 0x6c19f820, 0x1a216: 0x6c668620, 0x1a217: 0x6c09ba20,\n\t0x1a218: 0x6d3bc820, 0x1a219: 0x6c8d1620, 0x1a21a: 0x6c504e20, 0x1a21b: 0x6c058020,\n\t0x1a21c: 0x6ce10a20, 0x1a21d: 0x6c1ac220, 0x1a21e: 0x6c96c820, 0x1a21f: 0x6cfce420,\n\t0x1a220: 0x6cd69420, 0x1a221: 0x6d1da020, 0x1a222: 0x6cc12c20,\n\t0x1a224: 0x6cb44c20, 0x1a225: 0x6c5c2020, 0x1a226: 0x6cef3620, 0x1a227: 0x6d161620,\n\t0x1a228: 0x6d134c20, 0x1a22a: 0x6c184820, 0x1a22b: 0x6c4ff820,\n\t0x1a22c: 0x6c0d5a20, 0x1a22e: 0x6cfd3620, 0x1a22f: 0x6c155e20,\n\t0x1a230: 0x6c5d4e20, 0x1a232: 0x6c4ebc20, 0x1a233: 0x6c224220,\n\t0x1a234: 0x6d33ec20, 0x1a235: 0x6cb5f220, 0x1a236: 0x6c7c7e20, 0x1a237: 0x6cc75620,\n\t0x1a239: 0x6d1bca20, 0x1a23a: 0x6d047e20,\n\t0x1a23c: 0x6c55a020, 0x1a23d: 0x6c250620, 0x1a23f: 0x6cc3fc20,\n\t// Block 0x689, offset 0x1a240\n\t0x1a240: 0x6c2b9220, 0x1a241: 0x6cf53020, 0x1a242: 0x6cbfd020,\n\t0x1a244: 0x6d0eee20, 0x1a245: 0x6c8a5020, 0x1a246: 0x6c08a620,\n\t0x1a248: 0x6c0d7220, 0x1a24a: 0x6d252c20, 0x1a24b: 0x6caaa620,\n\t0x1a24c: 0x6c05c620, 0x1a24d: 0x6d1cf220, 0x1a24e: 0x6c536c20, 0x1a24f: 0x6c225820,\n\t0x1a250: 0x6cb87220, 0x1a251: 0x6ce35a20, 0x1a252: 0x6d23b220, 0x1a253: 0x6c824c20,\n\t0x1a254: 0x6c05d020, 0x1a256: 0x6c625620, 0x1a257: 0x6c3ee820,\n\t0x1a258: 0x6cfd0420, 0x1a259: 0x6c133820, 0x1a25a: 0x6c550620, 0x1a25b: 0x6ccb6620,\n\t0x1a25c: 0x6c080a20, 0x1a25d: 0x6cbe5620, 0x1a25e: 0x6d22a020, 0x1a25f: 0x6cebf620,\n\t0x1a260: 0x6c007a20, 0x1a261: 0x6c4e3c20, 0x1a262: 0x6c28d020, 0x1a263: 0x6c444620,\n\t0x1a264: 0x6c2b9c20, 0x1a265: 0x6c5e2020, 0x1a266: 0x6cace420,\n\t0x1a268: 0x6d3c6a20, 0x1a269: 0x6c8d7c20, 0x1a26a: 0x6c970820, 0x1a26b: 0x6c974820,\n\t0x1a26c: 0x6c888c20, 0x1a26d: 0x6cff4220, 0x1a26e: 0x6d093220, 0x1a26f: 0x6d327820,\n\t0x1a270: 0x6cb3b820, 0x1a271: 0x6c408e20, 0x1a272: 0x6caa0e20, 0x1a273: 0x6cf93220,\n\t0x1a274: 0x6c338e20, 0x1a275: 0x6c28f020, 0x1a276: 0x6d280c20, 0x1a277: 0x6cfd5220,\n\t0x1a278: 0x6d1b3020, 0x1a279: 0x6cd52220, 0x1a27a: 0x6c339420, 0x1a27b: 0x6c086820,\n\t0x1a27c: 0x6c56e620, 0x1a27d: 0x6c3a5420, 0x1a27e: 0x6c3aa820, 0x1a27f: 0x6d28be20,\n\t// Block 0x68a, offset 0x1a280\n\t0x1a280: 0x6c075620, 0x1a281: 0x6c3a2820, 0x1a282: 0x6cfab820, 0x1a283: 0x6cd3ae20,\n\t0x1a284: 0x6c9e3020, 0x1a285: 0x6d2e0820, 0x1a286: 0x6d2e0a20, 0x1a287: 0x6d2d8c20,\n\t0x1a288: 0x6c5c4820, 0x1a289: 0x6c3f8820, 0x1a28a: 0x6ced5a20, 0x1a28b: 0x6ca0b420,\n\t0x1a28c: 0x6cbc1020, 0x1a28d: 0x6c8a8a20, 0x1a28f: 0x6c9f1e20,\n\t0x1a290: 0x6c54d820, 0x1a291: 0x6c535e20, 0x1a292: 0x6d213c20, 0x1a293: 0x6cb60820,\n\t0x1a294: 0x6c350420, 0x1a295: 0x6c020020, 0x1a297: 0x6c03ba20,\n\t0x1a298: 0x6c2c7820, 0x1a299: 0x6d08aa20, 0x1a29a: 0x6c2c8a20, 0x1a29b: 0x6c0a0e20,\n\t0x1a29c: 0x6d393e20, 0x1a29d: 0x6cad6020, 0x1a29e: 0x6ce5f620, 0x1a29f: 0x6d155020,\n\t0x1a2a1: 0x6c63ea20, 0x1a2a2: 0x6d36f220, 0x1a2a3: 0x6ce8f820,\n\t0x1a2a4: 0x6d00f820, 0x1a2a5: 0x6c28ba20, 0x1a2a6: 0x6ce5a620, 0x1a2a7: 0x6d022620,\n\t0x1a2a8: 0x6c172620, 0x1a2a9: 0x6d25f220, 0x1a2aa: 0x6c496a20, 0x1a2ab: 0x6c89a420,\n\t0x1a2ac: 0x6c083220, 0x1a2ae: 0x6c930020, 0x1a2af: 0x6c60e420,\n\t0x1a2b0: 0x6d08c220, 0x1a2b1: 0x6cd62420, 0x1a2b2: 0x6c318220, 0x1a2b3: 0x6cd9f420,\n\t0x1a2b4: 0x6c55e220, 0x1a2b5: 0x6d286420, 0x1a2b6: 0x6c160820, 0x1a2b7: 0x6c054620,\n\t0x1a2b8: 0x6cc6da20, 0x1a2b9: 0x6c359c20, 0x1a2ba: 0x6cf24020, 0x1a2bb: 0x6c03ca20,\n\t0x1a2bc: 0x6c3cc220, 0x1a2bd: 0x6d209e20, 0x1a2be: 0x6d310c20, 0x1a2bf: 0x6c3bae20,\n\t// Block 0x68b, offset 0x1a2c0\n\t0x1a2c0: 0x6c496c20, 0x1a2c1: 0x6c104c20, 0x1a2c2: 0x6c446220, 0x1a2c3: 0x6c33c420,\n\t0x1a2c4: 0x6c5a3420, 0x1a2c5: 0x6c31f820, 0x1a2c6: 0x6ce3ce20, 0x1a2c7: 0x6c0fcc20,\n\t0x1a2c8: 0x6cba8a20, 0x1a2c9: 0x6c8b8220, 0x1a2ca: 0x6c901620, 0x1a2cb: 0x6cf13420,\n\t0x1a2cc: 0x6d2eac20, 0x1a2cd: 0x6c801820, 0x1a2ce: 0x6cdbea20, 0x1a2cf: 0x6ca36020,\n\t0x1a2d0: 0x6c0a1020, 0x1a2d1: 0x6ceb3e20, 0x1a2d2: 0x6d3b1a20, 0x1a2d3: 0x6c2e5c20,\n\t0x1a2d4: 0x6c104620, 0x1a2d5: 0x6c716820, 0x1a2d6: 0x6cb3b020, 0x1a2d7: 0x6cfa0c20,\n\t0x1a2d8: 0x6cf04420, 0x1a2d9: 0x6cb3b420, 0x1a2da: 0x6c267420, 0x1a2db: 0x6c387220,\n\t0x1a2dc: 0x6c14e420, 0x1a2dd: 0x6c56f020, 0x1a2de: 0x6d28c020,\n\t0x1a2e4: 0x6c38f020, 0x1a2e5: 0x6d028a20, 0x1a2e6: 0x6c536020, 0x1a2e7: 0x6c1b2e20,\n\t0x1a2e8: 0x6c05c820, 0x1a2e9: 0x6d1a7a20, 0x1a2eb: 0x6c6dd220,\n\t0x1a2ec: 0x6c0f6820, 0x1a2ed: 0x6cc88820, 0x1a2ee: 0x6c1e3a20, 0x1a2ef: 0x6d1c1220,\n\t0x1a2f0: 0x6d143a20, 0x1a2f1: 0x6c411820, 0x1a2f2: 0x6c7d6c20, 0x1a2f3: 0x6d27f020,\n\t0x1a2f4: 0x6d31ec20, 0x1a2f5: 0x6d0b5a20, 0x1a2f6: 0x6c70b820, 0x1a2f7: 0x6c547a20,\n\t0x1a2f8: 0x6c9f7620, 0x1a2f9: 0x6c040220, 0x1a2fa: 0x6c441c20, 0x1a2fb: 0x6c0bb220,\n\t0x1a2fc: 0x6d3d0820, 0x1a2fd: 0x6c505420, 0x1a2fe: 0x6d31ee20, 0x1a2ff: 0x6cd14a20,\n\t// Block 0x68c, offset 0x1a300\n\t0x1a300: 0x6c44a020, 0x1a301: 0x6c0a3e20, 0x1a302: 0x6c34b220, 0x1a303: 0x6c216820,\n\t0x1a304: 0x6c1fb220, 0x1a305: 0x6cca5a20, 0x1a306: 0x6c1a4620, 0x1a307: 0x6cc48a20,\n\t0x1a308: 0x6c191220, 0x1a309: 0x6c99b820, 0x1a30a: 0x6cadf220, 0x1a30b: 0x6ceec220,\n\t0x1a30c: 0x6cb07420, 0x1a30d: 0x6c3f8c20, 0x1a30e: 0x6d3d0e20, 0x1a30f: 0x6cb53c20,\n\t0x1a310: 0x6c8bec20, 0x1a311: 0x6d142020, 0x1a312: 0x6c9adc20, 0x1a313: 0x6cf3f820,\n\t0x1a314: 0x6cb7fa20, 0x1a315: 0x6c2f0020, 0x1a316: 0x6c191a20, 0x1a317: 0x6cfa0e20,\n\t0x1a318: 0x6c518e20, 0x1a319: 0x6cca9220, 0x1a31a: 0x6c487e20, 0x1a31b: 0x6c543e20,\n\t0x1a31c: 0x6c023420, 0x1a31d: 0x6c3f9420, 0x1a31e: 0x6cbbc620, 0x1a31f: 0x6c5d4c20,\n\t0x1a320: 0x6cafa220, 0x1a321: 0x6d0cf820, 0x1a322: 0x6cd84420, 0x1a323: 0x6cf7b420,\n\t0x1a324: 0x6ca02420, 0x1a325: 0x6c7ce420, 0x1a326: 0x6c445620,\n\t0x1a328: 0x6c02fc20, 0x1a329: 0x6cca4220, 0x1a32a: 0x6cd6ee20, 0x1a32b: 0x6c90d820,\n\t0x1a32c: 0x6d320620, 0x1a32d: 0x6c5c9a20, 0x1a32e: 0x6c156620,\n\t0x1a330: 0x6c8c8420, 0x1a331: 0x6ca2ee20, 0x1a332: 0x6c4f3c20, 0x1a333: 0x6c31fc20,\n\t0x1a334: 0x6c6d7820, 0x1a335: 0x6c9df420, 0x1a336: 0x6c38fa20, 0x1a337: 0x6c370020,\n\t0x1a338: 0x6c174220, 0x1a339: 0x6c536220, 0x1a33a: 0x6c536e20, 0x1a33b: 0x6d238820,\n\t0x1a33c: 0x6d096a20, 0x1a33d: 0x6cad3a20, 0x1a33e: 0x6c088220, 0x1a33f: 0x6c175220,\n\t// Block 0x68d, offset 0x1a340\n\t0x1a340: 0x6d1fe220, 0x1a341: 0x6d153a20, 0x1a342: 0x6d096e20, 0x1a343: 0x6cc97e20,\n\t0x1a344: 0x6d073420, 0x1a345: 0x6c866820, 0x1a346: 0x6c868a20, 0x1a347: 0x6d263220,\n\t0x1a348: 0x6c336220, 0x1a349: 0x6c5e0420, 0x1a34a: 0x6ccc7e20, 0x1a34b: 0x6c838c20,\n\t0x1a34c: 0x6cb3ce20, 0x1a34d: 0x6c550e20, 0x1a34e: 0x6c4c8e20, 0x1a34f: 0x6c10c420,\n\t0x1a350: 0x6cc8a620, 0x1a351: 0x6cf0fa20, 0x1a352: 0x6cd9f620, 0x1a353: 0x6c01dc20,\n\t0x1a354: 0x6d21cc20, 0x1a355: 0x6cfd8e20, 0x1a356: 0x6c527c20, 0x1a357: 0x6d0fea20,\n\t0x1a358: 0x6cff4420, 0x1a359: 0x6d116820, 0x1a35b: 0x6c0ac020,\n\t0x1a35d: 0x6c528420, 0x1a35e: 0x6ce25620, 0x1a35f: 0x6c8eee20,\n\t0x1a361: 0x6d3b3420, 0x1a363: 0x6cf89a20,\n\t0x1a364: 0x6d298e20, 0x1a365: 0x6d17d420, 0x1a366: 0x6c312a20, 0x1a367: 0x6d259020,\n\t0x1a368: 0x6c700820, 0x1a36a: 0x6c0f2020, 0x1a36b: 0x6ce35c20,\n\t0x1a36c: 0x6d1d0220, 0x1a36e: 0x6d154020, 0x1a36f: 0x6ca70420,\n\t0x1a370: 0x6ccee220, 0x1a371: 0x6c07c020, 0x1a372: 0x6c465620, 0x1a373: 0x6c04d420,\n\t0x1a374: 0x6ca14820, 0x1a375: 0x6c410420, 0x1a376: 0x6c372620, 0x1a377: 0x6ccf2e20,\n\t0x1a379: 0x6d36d620, 0x1a37a: 0x6d106c20, 0x1a37b: 0x6c66ca20,\n\t0x1a37c: 0x6d263420, 0x1a37d: 0x6cd73020, 0x1a37e: 0x6ce38420, 0x1a37f: 0x6cf02020,\n\t// Block 0x68e, offset 0x1a380\n\t0x1a380: 0x6d0aaa20, 0x1a381: 0x6d36f620, 0x1a382: 0x6d18bc20, 0x1a383: 0x6cc59c20,\n\t0x1a384: 0x6cd3ee20, 0x1a385: 0x6c55d420, 0x1a386: 0x6ca55620, 0x1a387: 0x6d126a20,\n\t0x1a388: 0x6c66f820, 0x1a389: 0x6cdc1220, 0x1a38a: 0x6d1d1e20, 0x1a38b: 0x6c061a20,\n\t0x1a38c: 0x6c55e420, 0x1a38d: 0x6c55e620, 0x1a38e: 0x6d137a20,\n\t0x1a390: 0x6d107420, 0x1a391: 0x6c888e20, 0x1a392: 0x6cf72620, 0x1a393: 0x6c372820,\n\t0x1a394: 0x6c331c20, 0x1a395: 0x6d297e20, 0x1a396: 0x6d3b4420, 0x1a397: 0x6d1d2820,\n\t0x1a398: 0x6d1d2c20, 0x1a399: 0x6c6cca20, 0x1a39a: 0x6c208820, 0x1a39b: 0x6c28ec20,\n\t0x1a39d: 0x6c7b4a20, 0x1a39e: 0x6d196020, 0x1a39f: 0x6d139a20,\n\t0x1a3a0: 0x6c662e20, 0x1a3a1: 0x6c372a20, 0x1a3a2: 0x6ca93e20, 0x1a3a3: 0x6c228820,\n\t0x1a3a4: 0x6cba3420, 0x1a3a5: 0x6d098220, 0x1a3a6: 0x6c0ea420, 0x1a3a7: 0x6c9d1420,\n\t0x1a3a8: 0x6cd73a20, 0x1a3a9: 0x6ca0a620, 0x1a3aa: 0x6c897c20, 0x1a3ab: 0x6cb71820,\n\t0x1a3ac: 0x6cb71a20, 0x1a3ad: 0x6cd44c20, 0x1a3ae: 0x6c3f2020, 0x1a3af: 0x6c0f3a20,\n\t0x1a3b0: 0x6c085820, 0x1a3b1: 0x6c0d0020, 0x1a3b2: 0x6d161c20, 0x1a3b3: 0x6cf13a20,\n\t0x1a3b4: 0x6c587e20, 0x1a3b5: 0x6c38ac20, 0x1a3b6: 0x6cb60e20, 0x1a3b7: 0x6c98f620,\n\t0x1a3b8: 0x6c060820, 0x1a3b9: 0x6c020420, 0x1a3ba: 0x6c020a20, 0x1a3bb: 0x6c403020,\n\t0x1a3bc: 0x6cb63020, 0x1a3bd: 0x6cc45020, 0x1a3be: 0x6ceb4020, 0x1a3bf: 0x6d187420,\n\t// Block 0x68f, offset 0x1a3c0\n\t0x1a3c0: 0x6c0f5420, 0x1a3c1: 0x6cb12820, 0x1a3c2: 0x6c039220,\n\t0x1a3c4: 0x6d082220, 0x1a3c7: 0x6d23fe20,\n\t0x1a3c8: 0x6c1b5620, 0x1a3c9: 0x6c915e20, 0x1a3ca: 0x6d156820, 0x1a3cb: 0x6c868c20,\n\t0x1a3cd: 0x6ca7b020, 0x1a3ce: 0x6cf90220, 0x1a3cf: 0x6cf3fa20,\n\t0x1a3d1: 0x6c834a20, 0x1a3d2: 0x6cb41a20, 0x1a3d3: 0x6d3d1220,\n\t0x1a3d4: 0x6d417e20, 0x1a3d5: 0x6d3dc620, 0x1a3d6: 0x6c168220, 0x1a3d7: 0x6c01de20,\n\t0x1a3d8: 0x6c377220, 0x1a3d9: 0x6d244620, 0x1a3da: 0x6c839c20, 0x1a3db: 0x6c408220,\n\t0x1a3dc: 0x6d2c6420, 0x1a3dd: 0x6c5d0a20, 0x1a3de: 0x6c218e20, 0x1a3df: 0x6cd9fe20,\n\t0x1a3e0: 0x6c089a20, 0x1a3e1: 0x6c0ab420, 0x1a3e2: 0x6d2c6620,\n\t0x1a3e4: 0x6c519e20, 0x1a3e5: 0x6c873a20, 0x1a3e7: 0x6c4f3220,\n\t0x1a3e8: 0x6d292220, 0x1a3e9: 0x6c474a20, 0x1a3ea: 0x6c1a5e20, 0x1a3eb: 0x6c90dc20,\n\t0x1a3ec: 0x6ca19e20, 0x1a3ed: 0x6c9daa20, 0x1a3ee: 0x6c975020, 0x1a3ef: 0x6c030420,\n\t0x1a3f0: 0x6d30c020, 0x1a3f1: 0x6d3a3a20, 0x1a3f2: 0x6c5a3820, 0x1a3f3: 0x6c38f620,\n\t0x1a3f4: 0x6c2b0220, 0x1a3f5: 0x6ce7a420, 0x1a3f7: 0x6c320220,\n\t0x1a3f8: 0x6cf33620, 0x1a3f9: 0x6cf13020, 0x1a3fa: 0x6c62f620, 0x1a3fb: 0x6c1ca020,\n\t0x1a3fc: 0x6c8c1220, 0x1a3fd: 0x6c0c6420, 0x1a3fe: 0x6c901e20, 0x1a3ff: 0x6c664a20,\n\t// Block 0x690, offset 0x1a400\n\t0x1a400: 0x6ca8da20, 0x1a401: 0x6c959e20, 0x1a402: 0x6cd03420,\n\t0x1a404: 0x6c487a20, 0x1a405: 0x6ca8a820, 0x1a406: 0x6d178a20, 0x1a407: 0x6c7a4820,\n\t0x1a408: 0x6cece220, 0x1a409: 0x6cebee20, 0x1a40a: 0x6cb87620, 0x1a40b: 0x6c0f5620,\n\t0x1a40c: 0x6c779220, 0x1a40d: 0x6c8d5020, 0x1a40e: 0x6c423020, 0x1a40f: 0x6c487820,\n\t0x1a410: 0x6c4d2c20, 0x1a411: 0x6c7bb020, 0x1a412: 0x6c527420, 0x1a413: 0x6c7c4620,\n\t0x1a414: 0x6d2b0a20, 0x1a415: 0x6ce64e20, 0x1a416: 0x6c80ee20, 0x1a417: 0x6c0a8020,\n\t0x1a418: 0x6c595a20, 0x1a419: 0x6cb3aa20, 0x1a41a: 0x6d11de20, 0x1a41b: 0x6cedaa20,\n\t0x1a41c: 0x6ce43c20, 0x1a41d: 0x6cdc1620, 0x1a41e: 0x6c7ad020, 0x1a41f: 0x6c337e20,\n\t0x1a420: 0x6c02b620, 0x1a421: 0x6c671620, 0x1a422: 0x6ca09c20, 0x1a423: 0x6c7d4220,\n\t0x1a424: 0x6c7b4c20, 0x1a425: 0x6c01e620, 0x1a426: 0x6c96ea20, 0x1a427: 0x6cbeaa20,\n\t0x1a428: 0x6cbb8820, 0x1a42a: 0x6c77b820, 0x1a42b: 0x6c508220,\n\t0x1a42c: 0x6c34c820, 0x1a42d: 0x6cfaa820, 0x1a42e: 0x6ca37c20, 0x1a42f: 0x6cdd3420,\n\t0x1a430: 0x6c6bf820, 0x1a431: 0x6caf8220, 0x1a432: 0x6cabcc20, 0x1a433: 0x6cd93020,\n\t0x1a434: 0x6c16bc20, 0x1a435: 0x6ca86c20, 0x1a436: 0x6c977620, 0x1a437: 0x6cd93e20,\n\t0x1a438: 0x6c22e420, 0x1a439: 0x6cfae420, 0x1a43a: 0x6c7e2420,\n\t0x1a43c: 0x6c2b9e20, 0x1a43d: 0x6cb3e420, 0x1a43e: 0x6ce5ac20, 0x1a43f: 0x6d40f420,\n\t// Block 0x691, offset 0x1a440\n\t0x1a440: 0x6cf2c820, 0x1a441: 0x6c3ae420, 0x1a442: 0x6c115020, 0x1a443: 0x6caee220,\n\t0x1a444: 0x6cc9d620, 0x1a446: 0x6cc76e20, 0x1a447: 0x6cb68620,\n\t0x1a448: 0x6c25fc20, 0x1a449: 0x6cac8e20, 0x1a44a: 0x6c0fc020, 0x1a44b: 0x6c979c20,\n\t0x1a44c: 0x6d401420, 0x1a44d: 0x6c22f220, 0x1a44e: 0x6c7d4420, 0x1a44f: 0x6c62f820,\n\t0x1a450: 0x6c801420, 0x1a452: 0x6c9bc220, 0x1a453: 0x6c9df820,\n\t0x1a454: 0x6cac9620, 0x1a455: 0x6c91aa20, 0x1a456: 0x6d416020,\n\t0x1a458: 0x6c8ee220, 0x1a459: 0x6d160020, 0x1a45a: 0x6cf1a820, 0x1a45b: 0x6c866c20,\n\t0x1a45c: 0x6c868e20, 0x1a45d: 0x6d2bb820, 0x1a45e: 0x6d3a9220, 0x1a45f: 0x6c5cfc20,\n\t0x1a460: 0x6cd03c20, 0x1a461: 0x6c1c6620, 0x1a462: 0x6d043c20, 0x1a463: 0x6cee3a20,\n\t0x1a464: 0x6c302020, 0x1a465: 0x6c5e2220, 0x1a466: 0x6cb07a20, 0x1a467: 0x6c551420,\n\t0x1a468: 0x6c9ab420, 0x1a469: 0x6c17f420, 0x1a46a: 0x6c9ab820, 0x1a46b: 0x6c175820,\n\t0x1a46c: 0x6c719620, 0x1a46d: 0x6caa3420, 0x1a46f: 0x6d197620,\n\t0x1a470: 0x6cc7f020, 0x1a471: 0x6c8e0420, 0x1a472: 0x6d0bba20,\n\t0x1a474: 0x6cb7bc20, 0x1a475: 0x6d3e7620, 0x1a477: 0x6c058c20,\n\t0x1a478: 0x6c45aa20, 0x1a479: 0x6d2af620, 0x1a47a: 0x6c6bfe20, 0x1a47b: 0x6d219a20,\n\t0x1a47c: 0x6cbd9820, 0x1a47d: 0x6c075820, 0x1a47e: 0x6c035820, 0x1a47f: 0x6ceb5020,\n\t// Block 0x692, offset 0x1a480\n\t0x1a480: 0x6d0f6c20, 0x1a481: 0x6cbbfc20, 0x1a482: 0x6d1ff220, 0x1a483: 0x6d36fa20,\n\t0x1a484: 0x6c6c0a20, 0x1a485: 0x6ca16a20, 0x1a486: 0x6cd12420, 0x1a487: 0x6ccdb820,\n\t0x1a488: 0x6cb65620, 0x1a489: 0x6ccdba20, 0x1a48a: 0x6c9d0420, 0x1a48b: 0x6c460220,\n\t0x1a48c: 0x6d157c20, 0x1a48d: 0x6c453e20, 0x1a48e: 0x6c454020, 0x1a48f: 0x6ce82020,\n\t0x1a490: 0x6c3dac20, 0x1a491: 0x6d092220, 0x1a492: 0x6d137e20, 0x1a493: 0x6ce69a20,\n\t0x1a494: 0x6ce5ae20, 0x1a495: 0x6ca1f620, 0x1a496: 0x6c8ec620, 0x1a497: 0x6c117e20,\n\t0x1a498: 0x6c848020, 0x1a499: 0x6cd51820, 0x1a49a: 0x6c932420, 0x1a49b: 0x6c5e3a20,\n\t0x1a49c: 0x6c263c20, 0x1a49d: 0x6cac1220, 0x1a49e: 0x6c8ed420, 0x1a49f: 0x6c72b820,\n\t0x1a4a0: 0x6d2e9220, 0x1a4a1: 0x6c718220, 0x1a4a2: 0x6d330a20, 0x1a4a3: 0x6d40f820,\n\t0x1a4a4: 0x6cfd3820, 0x1a4a5: 0x6d375020,\n\t0x1a4a8: 0x6c7eb020, 0x1a4ab: 0x6c7ebe20,\n\t0x1a4ac: 0x6d060a20, 0x1a4ad: 0x6c454220, 0x1a4ae: 0x6c35a220, 0x1a4af: 0x6ca21e20,\n\t0x1a4b0: 0x6d384a20, 0x1a4b1: 0x6ce3aa20, 0x1a4b2: 0x6d25ce20, 0x1a4b3: 0x6d2dc020,\n\t0x1a4b4: 0x6c454420, 0x1a4b5: 0x6cf24420, 0x1a4b6: 0x6c80f420, 0x1a4b7: 0x6d21f620,\n\t0x1a4b8: 0x6cda0820, 0x1a4b9: 0x6d2ca020, 0x1a4ba: 0x6c4d3620, 0x1a4bb: 0x6c576e20,\n\t0x1a4bc: 0x6d2e3e20, 0x1a4be: 0x6c90de20, 0x1a4bf: 0x6c165020,\n\t// Block 0x693, offset 0x1a4c0\n\t0x1a4c0: 0x6d376c20, 0x1a4c1: 0x6cf12820, 0x1a4c2: 0x6d083c20, 0x1a4c3: 0x6d2a6420,\n\t0x1a4c4: 0x6c9f8620, 0x1a4c5: 0x6c4aac20, 0x1a4c6: 0x6cda7020,\n\t0x1a4c9: 0x6cd85420, 0x1a4ca: 0x6c352820, 0x1a4cb: 0x6c134220,\n\t0x1a4cc: 0x6c7b7a20, 0x1a4cd: 0x6ce2dc20, 0x1a4ce: 0x6ca57c20, 0x1a4cf: 0x6c819620,\n\t0x1a4d0: 0x6c920820, 0x1a4d1: 0x6d159e20, 0x1a4d2: 0x6d029220, 0x1a4d3: 0x6d0e2a20,\n\t0x1a4d4: 0x6cbe9820, 0x1a4d5: 0x6cb42420, 0x1a4d6: 0x6c1e1220, 0x1a4d7: 0x6cfbe020,\n\t0x1a4d8: 0x6c497020, 0x1a4d9: 0x6c6b8a20, 0x1a4da: 0x6c7f8220, 0x1a4db: 0x6c9bca20,\n\t0x1a4dc: 0x6d13ac20, 0x1a4de: 0x6c869420, 0x1a4df: 0x6d1b8420,\n\t0x1a4e0: 0x6c212620, 0x1a4e1: 0x6cbfde20, 0x1a4e2: 0x6ce2d220, 0x1a4e3: 0x6d21f820,\n\t0x1a4e6: 0x6c278420, 0x1a4e7: 0x6c327420,\n\t0x1a4e8: 0x6c537e20, 0x1a4ea: 0x6cf8c220,\n\t0x1a4ec: 0x6cb64820, 0x1a4ee: 0x6d25a620, 0x1a4ef: 0x6c609e20,\n\t0x1a4f0: 0x6d285020, 0x1a4f1: 0x6c39dc20, 0x1a4f2: 0x6c45ac20, 0x1a4f3: 0x6c4f8820,\n\t0x1a4f4: 0x6d326620, 0x1a4f5: 0x6cc3f620,\n\t0x1a4f8: 0x6c6c0220, 0x1a4f9: 0x6cb02020, 0x1a4fa: 0x6c423220, 0x1a4fb: 0x6d082820,\n\t0x1a4fc: 0x6cd11420, 0x1a4fd: 0x6cd28c20, 0x1a4fe: 0x6cbc2a20, 0x1a4ff: 0x6c227020,\n\t// Block 0x694, offset 0x1a500\n\t0x1a500: 0x6c2eee20, 0x1a501: 0x6c0f7220, 0x1a502: 0x6c2de620, 0x1a503: 0x6ced5020,\n\t0x1a504: 0x6c227220, 0x1a505: 0x6d355420, 0x1a506: 0x6c041220, 0x1a507: 0x6cf47e20,\n\t0x1a508: 0x6c061820, 0x1a509: 0x6c28be20, 0x1a50a: 0x6c039420, 0x1a50b: 0x6ce79620,\n\t0x1a50d: 0x6c45bc20, 0x1a50e: 0x6c702e20, 0x1a50f: 0x6c4b8620,\n\t0x1a510: 0x6c22e820, 0x1a511: 0x6d1ff420, 0x1a512: 0x6d25ba20, 0x1a513: 0x6c81be20,\n\t0x1a514: 0x6c716e20, 0x1a515: 0x6c3f1820, 0x1a516: 0x6ca88e20, 0x1a517: 0x6c358c20,\n\t0x1a518: 0x6c358e20, 0x1a519: 0x6d040e20, 0x1a51a: 0x6c771620, 0x1a51b: 0x6d0ee220,\n\t0x1a51c: 0x6ce90220, 0x1a51d: 0x6cb3f820, 0x1a51e: 0x6c083820, 0x1a51f: 0x6ca02620,\n\t0x1a520: 0x6cd73620, 0x1a521: 0x6d0ef220, 0x1a522: 0x6cb68c20, 0x1a523: 0x6d25ca20,\n\t0x1a524: 0x6c0cca20, 0x1a526: 0x6d07f220, 0x1a527: 0x6c544220,\n\t0x1a528: 0x6c5a3020, 0x1a529: 0x6d10c220, 0x1a52a: 0x6c73a220, 0x1a52b: 0x6c7cb220,\n\t0x1a52c: 0x6c36de20, 0x1a52d: 0x6c60f620, 0x1a52e: 0x6ca19220, 0x1a52f: 0x6c1d2e20,\n\t0x1a530: 0x6c062220, 0x1a531: 0x6cf54e20, 0x1a532: 0x6d327a20, 0x1a533: 0x6d076620,\n\t0x1a534: 0x6cdee820, 0x1a535: 0x6c1c9620, 0x1a536: 0x6cf74a20, 0x1a537: 0x6c23d220,\n\t0x1a538: 0x6c968620, 0x1a539: 0x6c7a1020, 0x1a53a: 0x6d0f0820, 0x1a53b: 0x6c11c420,\n\t0x1a53d: 0x6c520e20, 0x1a53e: 0x6c2ac620, 0x1a53f: 0x6cc49e20,\n\t// Block 0x695, offset 0x1a540\n\t0x1a540: 0x6ce7a820, 0x1a541: 0x6d248c20, 0x1a542: 0x6cfe7020, 0x1a543: 0x6ca4d820,\n\t0x1a544: 0x6cd76420, 0x1a545: 0x6c3bb220, 0x1a546: 0x6cb47820, 0x1a547: 0x6c8dba20,\n\t0x1a548: 0x6c02ba20, 0x1a549: 0x6c58d020, 0x1a54a: 0x6d15a020, 0x1a54b: 0x6c58d220,\n\t0x1a54c: 0x6c9bc620, 0x1a54d: 0x6d1c4e20, 0x1a54e: 0x6c831820, 0x1a54f: 0x6d0f2e20,\n\t0x1a550: 0x6c062820, 0x1a551: 0x6c2f2c20, 0x1a552: 0x6c8e0620, 0x1a553: 0x6cd1f820,\n\t0x1a554: 0x6c689020, 0x1a555: 0x6c8b4420, 0x1a556: 0x6c6dee20, 0x1a557: 0x6c718c20,\n\t0x1a558: 0x6ce30a20, 0x1a559: 0x6cb0e620, 0x1a55a: 0x6c42a620, 0x1a55b: 0x6cff3420,\n\t0x1a55c: 0x6cec5e20, 0x1a55d: 0x6c1fd420, 0x1a55e: 0x6c2bc420, 0x1a55f: 0x6c588e20,\n\t0x1a560: 0x6d11d220, 0x1a561: 0x6c866e20, 0x1a562: 0x6c9c7020, 0x1a563: 0x6c550a20,\n\t0x1a564: 0x6cd11620, 0x1a565: 0x6c638a20, 0x1a566: 0x6d1aa620, 0x1a567: 0x6ceec620,\n\t0x1a569: 0x6cb18e20, 0x1a56a: 0x6c934420, 0x1a56b: 0x6c8dbc20,\n\t0x1a56c: 0x6d184420, 0x1a56d: 0x6c111620, 0x1a56e: 0x6ccd9820, 0x1a56f: 0x6c54fe20,\n\t0x1a570: 0x6cd53620, 0x1a571: 0x6cead420, 0x1a572: 0x6ca16e20, 0x1a573: 0x6c575820,\n\t0x1a574: 0x6ce61a20, 0x1a575: 0x6c0dfe20, 0x1a576: 0x6caee620, 0x1a577: 0x6c5d0820,\n\t0x1a578: 0x6c3dae20, 0x1a579: 0x6c4cdc20, 0x1a57a: 0x6c10d020, 0x1a57b: 0x6c849820,\n\t0x1a57c: 0x6c163e20, 0x1a57d: 0x6cb03420, 0x1a57e: 0x6c260020, 0x1a57f: 0x6c9bb220,\n\t// Block 0x696, offset 0x1a580\n\t0x1a580: 0x6cddc020, 0x1a581: 0x6cbb6020, 0x1a582: 0x6d34c420, 0x1a583: 0x6c7c2420,\n\t0x1a584: 0x6c08a820, 0x1a585: 0x6c029220, 0x1a586: 0x6c9bc820, 0x1a587: 0x6cfd0620,\n\t0x1a588: 0x6c7ab420, 0x1a589: 0x6ce7fc20, 0x1a58a: 0x6ce93c20, 0x1a58b: 0x6cf04a20,\n\t0x1a58c: 0x6cfaf820, 0x1a58e: 0x6ce94220, 0x1a58f: 0x6c81cc20,\n\t0x1a590: 0x6c162220, 0x1a591: 0x6ca6c420, 0x1a592: 0x6ca6d020, 0x1a593: 0x6c845220,\n\t0x1a594: 0x6c304620, 0x1a595: 0x6c72c620, 0x1a596: 0x6cba8620, 0x1a597: 0x6c0fc620,\n\t0x1a598: 0x6cccac20, 0x1a599: 0x6d2c0e20, 0x1a59a: 0x6ce25e20, 0x1a59b: 0x6cba8c20,\n\t0x1a59c: 0x6ca9ee20, 0x1a59d: 0x6d181620, 0x1a59e: 0x6c6e9e20, 0x1a59f: 0x6c41e820,\n\t0x1a5a0: 0x6c2ba020, 0x1a5a1: 0x6c65de20, 0x1a5a2: 0x6c9ab020, 0x1a5a3: 0x6c26c420,\n\t0x1a5a4: 0x6c660620, 0x1a5a5: 0x6d244a20, 0x1a5a6: 0x6d024c20, 0x1a5a7: 0x6d294820,\n\t0x1a5a8: 0x6c988020, 0x1a5a9: 0x6c849a20, 0x1a5aa: 0x6c4c0a20, 0x1a5ab: 0x6d09ca20,\n\t0x1a5ac: 0x6cdedc20, 0x1a5ad: 0x6d310e20, 0x1a5ae: 0x6d107620, 0x1a5af: 0x6ce98620,\n\t0x1a5b0: 0x6cce2e20, 0x1a5b1: 0x6cf93e20, 0x1a5b2: 0x6cbbcc20, 0x1a5b3: 0x6cf13620,\n\t0x1a5b4: 0x6d1d6220, 0x1a5b5: 0x6c1fa820, 0x1a5b6: 0x6cc1ec20, 0x1a5b7: 0x6cebfa20,\n\t0x1a5b9: 0x6d343220, 0x1a5ba: 0x6ce6e420, 0x1a5bb: 0x6c47f820,\n\t0x1a5bc: 0x6cce3020, 0x1a5bd: 0x6c10ec20, 0x1a5be: 0x6c3f1a20, 0x1a5bf: 0x6ce61e20,\n\t// Block 0x697, offset 0x1a5c0\n\t0x1a5c0: 0x6cded220, 0x1a5c1: 0x6cdeea20, 0x1a5c2: 0x6d3da620, 0x1a5c3: 0x6c4e4020,\n\t0x1a5c4: 0x6cb2da20, 0x1a5c5: 0x6c519a20, 0x1a5c6: 0x6d3c7420, 0x1a5c7: 0x6d396e20,\n\t0x1a5c8: 0x6c0fd220, 0x1a5c9: 0x6c8eec20, 0x1a5ca: 0x6caa8c20, 0x1a5cb: 0x6cf71220,\n\t0x1a5cc: 0x6cada220, 0x1a5cd: 0x6c2cb420, 0x1a5ce: 0x6c50ac20, 0x1a5cf: 0x6ce44620,\n\t0x1a5d0: 0x6cec8020, 0x1a5d1: 0x6ce44a20, 0x1a5d2: 0x6cb66a20, 0x1a5d3: 0x6c62a820,\n\t0x1a5d4: 0x6c1b6620, 0x1a5d5: 0x6c03cc20, 0x1a5d6: 0x6c6d7020, 0x1a5d7: 0x6c78e820,\n\t0x1a5d8: 0x6c873e20, 0x1a5d9: 0x6c72c820, 0x1a5da: 0x6cc25620, 0x1a5db: 0x6c7ec820,\n\t0x1a5dc: 0x6c47f020, 0x1a5dd: 0x6cb88620, 0x1a5de: 0x6cb6b420, 0x1a5df: 0x6cfd5020,\n\t0x1a5e0: 0x6c664220, 0x1a5e1: 0x6cd29a20, 0x1a5e2: 0x6c655420, 0x1a5e3: 0x6c005e20,\n\t0x1a5e4: 0x6c577220, 0x1a5e5: 0x6d2c1420, 0x1a5e6: 0x6d2b2e20, 0x1a5e7: 0x6d11e820,\n\t0x1a5e8: 0x6d2dd820, 0x1a5e9: 0x6c630420, 0x1a5ea: 0x6c145c20, 0x1a5eb: 0x6d0f3420,\n\t0x1a5ec: 0x6c654c20, 0x1a5ee: 0x6d0e1020,\n\t0x1a5f0: 0x6c68a820, 0x1a5f1: 0x6ce7a220, 0x1a5f2: 0x6ca41820, 0x1a5f3: 0x6d271a20,\n\t0x1a5f5: 0x6c1b6e20,\n\t// Block 0x698, offset 0x1a600\n\t0x1a600: 0x6d13b620, 0x1a601: 0x6c2f4020, 0x1a602: 0x6c779820, 0x1a603: 0x6cb4c620,\n\t0x1a604: 0x6cce4620, 0x1a605: 0x6cfa2420, 0x1a606: 0x6c4e4c20, 0x1a607: 0x6ced6820,\n\t0x1a608: 0x6d2f1820, 0x1a609: 0x6cc9f220, 0x1a60a: 0x6cce4820, 0x1a60b: 0x6cfa2620,\n\t0x1a60c: 0x6c5e6220, 0x1a60d: 0x6c105620, 0x1a60e: 0x6d221020, 0x1a60f: 0x6c9dfa20,\n\t0x1a610: 0x6c411e20, 0x1a611: 0x6c1e1820, 0x1a612: 0x6c1e1a20, 0x1a613: 0x6d3b6c20,\n\t0x1a614: 0x6cbc8e20, 0x1a615: 0x6caf2220, 0x1a616: 0x6cd2ea20, 0x1a617: 0x6cd2e820,\n\t0x1a618: 0x6cbf9420, 0x1a619: 0x6c0dba20, 0x1a61a: 0x6d12b820, 0x1a61b: 0x6c237e20,\n\t0x1a61c: 0x6c2fd620, 0x1a61d: 0x6cd7b820, 0x1a61e: 0x6c19b020, 0x1a61f: 0x6c2fca20,\n\t0x1a620: 0x6cbf9620, 0x1a621: 0x6c898020, 0x1a622: 0x6c2fcc20, 0x1a623: 0x6d1f9a20,\n\t0x1a624: 0x6c898220, 0x1a625: 0x6d0c5420, 0x1a626: 0x6c0e0820, 0x1a627: 0x6cca9c20,\n\t0x1a628: 0x6c4bb620, 0x1a629: 0x6c6f3620, 0x1a62a: 0x6c447a20, 0x1a62b: 0x6d0ac420,\n\t0x1a62c: 0x6cbb0220, 0x1a62d: 0x6d378220, 0x1a62e: 0x6c611020, 0x1a62f: 0x6c6ba220,\n\t0x1a630: 0x6c3c0c20, 0x1a631: 0x6c497420, 0x1a632: 0x6c202c20, 0x1a633: 0x6c159620,\n\t0x1a634: 0x6c8ba220, 0x1a635: 0x6d3d3620, 0x1a636: 0x6d3a5220, 0x1a637: 0x6c4d0420,\n\t0x1a638: 0x6cecb420, 0x1a639: 0x6c27b220, 0x1a63a: 0x6cf06a20, 0x1a63b: 0x6d3a5420,\n\t0x1a63c: 0x6c6e0020, 0x1a63d: 0x6c857420, 0x1a63e: 0x6c71aa20, 0x1a63f: 0x6cb1dc20,\n\t// Block 0x699, offset 0x1a640\n\t0x1a640: 0x6c3dc220, 0x1a641: 0x6d144620, 0x1a642: 0x6d163420, 0x1a643: 0x6ca38c20,\n\t0x1a644: 0x6cf55020, 0x1a645: 0x6c6f9c20, 0x1a646: 0x6c6f9e20, 0x1a647: 0x6cea9020,\n\t0x1a648: 0x6c99c220, 0x1a649: 0x6d163820, 0x1a64a: 0x6d13b820, 0x1a64b: 0x6d337c20,\n\t0x1a64c: 0x6cf33c20, 0x1a64d: 0x6d2ca620, 0x1a64e: 0x6c56f820, 0x1a64f: 0x6c37f420,\n\t0x1a650: 0x6c820820, 0x1a651: 0x6d1a1e20, 0x1a652: 0x6cb24620, 0x1a653: 0x6caccc20,\n\t0x1a654: 0x6cbbce20, 0x1a655: 0x6c560e20, 0x1a656: 0x6c48c220, 0x1a657: 0x6c19c420,\n\t0x1a658: 0x6c19d420, 0x1a659: 0x6d15aa20, 0x1a65a: 0x6d1abc20, 0x1a65b: 0x6d0bd820,\n\t0x1a65c: 0x6c9ebc20, 0x1a65d: 0x6c6f9a20, 0x1a65e: 0x6cb6c020, 0x1a65f: 0x6d129c20,\n\t0x1a660: 0x6cf76820, 0x1a661: 0x6cfd5e20, 0x1a662: 0x6c412020, 0x1a663: 0x6c6fa020,\n\t0x1a664: 0x6cfa2820, 0x1a665: 0x6c563020, 0x1a666: 0x6cd49620, 0x1a667: 0x6c315a20,\n\t0x1a668: 0x6cd2aa20, 0x1a669: 0x6c5e7020, 0x1a66a: 0x6ca45420, 0x1a66b: 0x6c631a20,\n\t0x1a66c: 0x6c71ec20, 0x1a66d: 0x6cd23220, 0x1a66e: 0x6c992220, 0x1a66f: 0x6c549020,\n\t0x1a670: 0x6c971020, 0x1a671: 0x6c949020, 0x1a672: 0x6d3dfe20, 0x1a673: 0x6cc7f820,\n\t0x1a674: 0x6d08f620, 0x1a675: 0x6d0d4220, 0x1a676: 0x6c3f3a20, 0x1a677: 0x6ccbcc20,\n\t0x1a678: 0x6ca2f020, 0x1a679: 0x6c418220, 0x1a67a: 0x6cdd5020, 0x1a67b: 0x6d20d020,\n\t0x1a67c: 0x6c258c20, 0x1a67d: 0x6d30d420, 0x1a67e: 0x6c419020, 0x1a67f: 0x6d35d220,\n\t// Block 0x69a, offset 0x1a680\n\t0x1a680: 0x6c4a5020, 0x1a681: 0x6c419820, 0x1a682: 0x6c949a20, 0x1a683: 0x6c8c2220,\n\t0x1a684: 0x6d17d820, 0x1a685: 0x6c73be20, 0x1a686: 0x6c823620, 0x1a687: 0x6c96ec20,\n\t0x1a688: 0x6d221220, 0x1a689: 0x6d328020, 0x1a68a: 0x6cd30620, 0x1a68b: 0x6cd31020,\n\t0x1a68c: 0x6c37b420, 0x1a68d: 0x6c1f0020, 0x1a68e: 0x6d20a220, 0x1a68f: 0x6c7c3020,\n\t0x1a690: 0x6d20a020, 0x1a691: 0x6d277420, 0x1a692: 0x6c563220, 0x1a693: 0x6cb56020,\n\t0x1a694: 0x6cf41420, 0x1a695: 0x6c6dfe20, 0x1a696: 0x6cd87220, 0x1a697: 0x6cdc1c20,\n\t0x1a698: 0x6c44a620, 0x1a699: 0x6c44a820, 0x1a69a: 0x6d0b6c20, 0x1a69b: 0x6d003620,\n\t0x1a69c: 0x6d0b7420, 0x1a69d: 0x6cb57820, 0x1a69e: 0x6d0b7c20, 0x1a69f: 0x6c5fd820,\n\t0x1a6a0: 0x6ce7e220, 0x1a6a1: 0x6cedd420, 0x1a6a2: 0x6c777420, 0x1a6a3: 0x6cde2a20,\n\t0x1a6a4: 0x6c682220, 0x1a6a5: 0x6c4d4e20, 0x1a6a6: 0x6d165220, 0x1a6a7: 0x6c158c20,\n\t0x1a6a8: 0x6c524420, 0x1a6a9: 0x6ca22220, 0x1a6aa: 0x6d13b220, 0x1a6ab: 0x6cfdd820,\n\t0x1a6ac: 0x6c6d8e20, 0x1a6ad: 0x6ce66220, 0x1a6ae: 0x6c89aa20, 0x1a6af: 0x6cfdda20,\n\t0x1a6b0: 0x6c6d9620, 0x1a6b1: 0x6d12d420, 0x1a6b2: 0x6cbd1c20, 0x1a6b3: 0x6c0ece20,\n\t0x1a6b4: 0x6d204420, 0x1a6b5: 0x6d01a020, 0x1a6b6: 0x6c283820, 0x1a6b7: 0x6c880820,\n\t0x1a6b8: 0x6c34b420, 0x1a6b9: 0x6c9ae020, 0x1a6ba: 0x6cc55a20, 0x1a6bb: 0x6cc55c20,\n\t0x1a6bc: 0x6c5fb620, 0x1a6bd: 0x6c630a20, 0x1a6be: 0x6cedd620, 0x1a6bf: 0x6d163a20,\n\t// Block 0x69b, offset 0x1a6c0\n\t0x1a6c0: 0x6cd03620, 0x1a6c1: 0x6cc55e20, 0x1a6c2: 0x6c820220, 0x1a6c3: 0x6c2f4220,\n\t0x1a6c4: 0x6d2b3220, 0x1a6c5: 0x6c6c7e20, 0x1a6c6: 0x6cb3fa20, 0x1a6c7: 0x6c1d8c20,\n\t0x1a6c8: 0x6c030c20, 0x1a6c9: 0x6d2ef620, 0x1a6ca: 0x6c6c1c20, 0x1a6cb: 0x6c6ba420,\n\t0x1a6cc: 0x6c0da020, 0x1a6cd: 0x6cc61220, 0x1a6ce: 0x6c237c20, 0x1a6cf: 0x6c3d0820,\n\t0x1a6d0: 0x6cca1220, 0x1a6d1: 0x6c94d420, 0x1a6d2: 0x6c0da220, 0x1a6d3: 0x6c121c20,\n\t0x1a6d4: 0x6d3ed620, 0x1a6d5: 0x6cd2ee20, 0x1a6d6: 0x6cddda20, 0x1a6d7: 0x6d2f1a20,\n\t0x1a6d8: 0x6c3fa420, 0x1a6d9: 0x6cfd5620, 0x1a6da: 0x6cfa6a20, 0x1a6db: 0x6cea9220,\n\t0x1a6dc: 0x6c52e820, 0x1a6dd: 0x6ce70a20, 0x1a6de: 0x6cc5a620, 0x1a6df: 0x6cb88e20,\n\t0x1a6e0: 0x6c41c220, 0x1a6e1: 0x6c436220, 0x1a6e2: 0x6c0ea620, 0x1a6e3: 0x6c272220,\n\t0x1a6e4: 0x6c8e1820, 0x1a6e5: 0x6d15ae20, 0x1a6e6: 0x6c17b020, 0x1a6e7: 0x6c169020,\n\t0x1a6e8: 0x6cc93e20, 0x1a6e9: 0x6cce5a20, 0x1a6ea: 0x6d144a20, 0x1a6eb: 0x6ca25e20,\n\t0x1a6ec: 0x6c9b0220, 0x1a6ed: 0x6cc5a820, 0x1a6ee: 0x6c63fe20, 0x1a6ef: 0x6c17b220,\n\t0x1a6f0: 0x6d0ffc20, 0x1a6f1: 0x6cb96820, 0x1a6f2: 0x6d380e20, 0x1a6f3: 0x6cb04620,\n\t0x1a6f4: 0x6cf2cc20, 0x1a6f5: 0x6cf41820, 0x1a6f6: 0x6c665020, 0x1a6f7: 0x6c643620,\n\t0x1a6f8: 0x6d117e20, 0x1a6f9: 0x6c3c1220, 0x1a6fa: 0x6c121e20, 0x1a6fb: 0x6cc5ac20,\n\t0x1a6fc: 0x6ceddc20, 0x1a6fd: 0x6c3bc420, 0x1a6fe: 0x6c2b0c20, 0x1a6ff: 0x6c39b620,\n\t// Block 0x69c, offset 0x1a700\n\t0x1a700: 0x6d378420, 0x1a701: 0x6cb6c820, 0x1a702: 0x6cadf820, 0x1a703: 0x6d20a620,\n\t0x1a704: 0x6c2e0620, 0x1a705: 0x6c33d220, 0x1a706: 0x6cf49c20, 0x1a707: 0x6d165620,\n\t0x1a708: 0x6d030a20, 0x1a709: 0x6c777620, 0x1a70a: 0x6d13bc20, 0x1a70b: 0x6c5fbc20,\n\t0x1a70c: 0x6c008620, 0x1a70d: 0x6cf55420, 0x1a70e: 0x6c617220, 0x1a70f: 0x6c3dca20,\n\t0x1a710: 0x6c37f620, 0x1a711: 0x6d04b220, 0x1a712: 0x6c6ccc20, 0x1a713: 0x6caf2420,\n\t0x1a714: 0x6c281820, 0x1a715: 0x6c3d3420, 0x1a716: 0x6ce16c20, 0x1a717: 0x6d381020,\n\t0x1a718: 0x6d1e8820, 0x1a719: 0x6c5d8620, 0x1a71a: 0x6c5b8a20, 0x1a71b: 0x6d221420,\n\t0x1a71c: 0x6c251620, 0x1a71d: 0x6c1fee20, 0x1a71e: 0x6cca1420, 0x1a71f: 0x6cef8220,\n\t0x1a720: 0x6c1ff020, 0x1a721: 0x6c17cc20, 0x1a722: 0x6d0b0a20, 0x1a723: 0x6cfc7020,\n\t0x1a724: 0x6ccdfe20, 0x1a725: 0x6c165e20, 0x1a726: 0x6c94d620, 0x1a727: 0x6c122020,\n\t0x1a728: 0x6d0a6420, 0x1a729: 0x6d031220, 0x1a72a: 0x6cef8420, 0x1a72b: 0x6d3a9a20,\n\t0x1a72c: 0x6d2b5820, 0x1a72d: 0x6cfb2220, 0x1a72e: 0x6caa4820, 0x1a72f: 0x6c0eaa20,\n\t0x1a730: 0x6c46e620, 0x1a731: 0x6ca62020, 0x1a732: 0x6ca67a20, 0x1a733: 0x6d015420,\n\t0x1a734: 0x6c04de20, 0x1a735: 0x6d066a20, 0x1a736: 0x6c8e2c20, 0x1a737: 0x6d38f820,\n\t0x1a738: 0x6ccfa020, 0x1a739: 0x6cc0ca20, 0x1a73a: 0x6c22ac20, 0x1a73b: 0x6c07ce20,\n\t0x1a73c: 0x6cd2f620, 0x1a73d: 0x6c631e20, 0x1a73e: 0x6caf2620, 0x1a73f: 0x6d167220,\n\t// Block 0x69d, offset 0x1a740\n\t0x1a740: 0x6cd87c20, 0x1a741: 0x6d15b620, 0x1a742: 0x6d328220, 0x1a743: 0x6c2d3420,\n\t0x1a744: 0x6c4d9020, 0x1a745: 0x6c972220, 0x1a746: 0x6c286220, 0x1a747: 0x6d3a9c20,\n\t0x1a748: 0x6c105a20, 0x1a749: 0x6cc0cc20, 0x1a74a: 0x6c08b420, 0x1a74b: 0x6d2f5020,\n\t0x1a74c: 0x6c228c20, 0x1a74d: 0x6cf06e20, 0x1a74e: 0x6c2b0e20, 0x1a74f: 0x6d3a9e20,\n\t0x1a750: 0x6d426220, 0x1a751: 0x6d200e20, 0x1a752: 0x6d0ffe20, 0x1a753: 0x6ce3ba20,\n\t0x1a754: 0x6d2e4820, 0x1a755: 0x6c50b820, 0x1a756: 0x6c091020, 0x1a757: 0x6ceae420,\n\t0x1a758: 0x6ccf0820, 0x1a759: 0x6d20ac20, 0x1a75a: 0x6d167420, 0x1a75b: 0x6c3dd020,\n\t0x1a75c: 0x6d427420, 0x1a75d: 0x6c463420, 0x1a75e: 0x6ca95020, 0x1a75f: 0x6ce70e20,\n\t0x1a760: 0x6ca62220, 0x1a761: 0x6cfa7620, 0x1a762: 0x6cc17220, 0x1a763: 0x6d1d7c20,\n\t0x1a764: 0x6cec0e20, 0x1a765: 0x6cb8a220, 0x1a766: 0x6cd40a20, 0x1a767: 0x6c761a20,\n\t0x1a768: 0x6c068820, 0x1a769: 0x6cae0420, 0x1a76a: 0x6c5b1a20, 0x1a76b: 0x6c51b620,\n\t0x1a76c: 0x6c819c20, 0x1a76d: 0x6cfdac20, 0x1a76e: 0x6c43c420, 0x1a76f: 0x6d0f8420,\n\t0x1a770: 0x6c041820, 0x1a771: 0x6c382c20, 0x1a772: 0x6ca02a20, 0x1a773: 0x6c632420,\n\t0x1a774: 0x6c37bc20, 0x1a775: 0x6c0e0a20, 0x1a776: 0x6c5fda20, 0x1a777: 0x6c523820,\n\t0x1a778: 0x6c5d6c20, 0x1a779: 0x6c4ac420, 0x1a77a: 0x6cc2b620, 0x1a77b: 0x6ce54820,\n\t0x1a77c: 0x6c68c820, 0x1a77d: 0x6c22b020, 0x1a77e: 0x6d16a220, 0x1a77f: 0x6cd2b220,\n\t// Block 0x69e, offset 0x1a780\n\t0x1a780: 0x6d03c620, 0x1a781: 0x6ccfa620, 0x1a782: 0x6ceaa620, 0x1a783: 0x6c76c020,\n\t0x1a784: 0x6d343a20, 0x1a785: 0x6c40dc20, 0x1a786: 0x6c7ee220, 0x1a787: 0x6d146c20,\n\t0x1a788: 0x6c1b7a20, 0x1a789: 0x6c7ad220, 0x1a78a: 0x6c49d420, 0x1a78b: 0x6c858620,\n\t0x1a78c: 0x6d19a820, 0x1a78d: 0x6cd31220, 0x1a78e: 0x6c9cda20, 0x1a78f: 0x6d398220,\n\t0x1a790: 0x6d067a20, 0x1a791: 0x6d201420, 0x1a792: 0x6c011820, 0x1a793: 0x6c921620,\n\t0x1a794: 0x6ca1c020, 0x1a795: 0x6c373420, 0x1a796: 0x6c94de20, 0x1a797: 0x6c305220,\n\t0x1a798: 0x6c143020, 0x1a799: 0x6c1a9420, 0x1a79a: 0x6d0a6a20, 0x1a79b: 0x6c456220,\n\t0x1a79c: 0x6d385620, 0x1a79d: 0x6d13ca20, 0x1a79e: 0x6cc78c20, 0x1a79f: 0x6c25a220,\n\t0x1a7a0: 0x6cf98820, 0x1a7a1: 0x6cd88620, 0x1a7a2: 0x6d292c20, 0x1a7a3: 0x6c937820,\n\t0x1a7a4: 0x6cdefc20, 0x1a7a5: 0x6c68ca20, 0x1a7a6: 0x6d312220, 0x1a7a7: 0x6c12ca20,\n\t0x1a7a8: 0x6cbbd020, 0x1a7a9: 0x6c7b1220, 0x1a7aa: 0x6c147020, 0x1a7ab: 0x6ca95220,\n\t0x1a7ac: 0x6ca9b020, 0x1a7ad: 0x6c6c8420, 0x1a7ae: 0x6cf43220, 0x1a7af: 0x6c53ec20,\n\t0x1a7b0: 0x6c6efe20, 0x1a7b1: 0x6c1a6420, 0x1a7b2: 0x6d321e20, 0x1a7b3: 0x6d428220,\n\t0x1a7b4: 0x6c1e2620, 0x1a7b5: 0x6cbd1e20, 0x1a7b6: 0x6c937a20, 0x1a7b7: 0x6c70f820,\n\t0x1a7b8: 0x6cd5a420, 0x1a7b9: 0x6ce6b420, 0x1a7ba: 0x6cd09220, 0x1a7bb: 0x6ce9f420,\n\t0x1a7bc: 0x6c0ec020, 0x1a7bd: 0x6ca3e820, 0x1a7be: 0x6cfe8820, 0x1a7bf: 0x6c0b8220,\n\t// Block 0x69f, offset 0x1a7c0\n\t0x1a7c0: 0x6ce9de20, 0x1a7c1: 0x6d222420, 0x1a7c2: 0x6cf85220, 0x1a7c3: 0x6c242e20,\n\t0x1a7c4: 0x6c354e20, 0x1a7c5: 0x6cc01020, 0x1a7c6: 0x6d061620, 0x1a7c7: 0x6c4a1820,\n\t0x1a7c8: 0x6c7a8420, 0x1a7c9: 0x6cf43420, 0x1a7ca: 0x6c759620, 0x1a7cb: 0x6d16da20,\n\t0x1a7cc: 0x6c3f4620, 0x1a7cd: 0x6c894820, 0x1a7ce: 0x6d410e20, 0x1a7cf: 0x6cbc3020,\n\t0x1a7d0: 0x6c859a20, 0x1a7d1: 0x6d1e1620, 0x1a7d2: 0x6c5d1c20, 0x1a7d3: 0x6c6e5220,\n\t0x1a7d4: 0x6cba4220, 0x1a7d5: 0x6cca4820, 0x1a7d6: 0x6cadf420, 0x1a7d7: 0x6cda7220,\n\t0x1a7d8: 0x6c3e0620, 0x1a7d9: 0x6cf59820, 0x1a7da: 0x6c850020, 0x1a7db: 0x6c3f4820,\n\t0x1a7dc: 0x6cb24a20, 0x1a7dd: 0x6c05ea20, 0x1a7de: 0x6d20d220, 0x1a7df: 0x6cb59020,\n\t0x1a7e0: 0x6cf99020, 0x1a7e1: 0x6d032220, 0x1a7e2: 0x6d04b620, 0x1a7e3: 0x6d222620,\n\t0x1a7e4: 0x6c2c2420, 0x1a7e5: 0x6c17d020, 0x1a7e6: 0x6c1d9220, 0x1a7e7: 0x6d377c20,\n\t0x1a7e8: 0x6d0d4e20, 0x1a7e9: 0x6c87e820, 0x1a7ea: 0x6c859c20, 0x1a7eb: 0x6c7ee420,\n\t0x1a7ec: 0x6cd8fc20, 0x1a7ed: 0x6c656a20, 0x1a7ee: 0x6d04b820, 0x1a7ef: 0x6c3f5220,\n\t0x1a7f0: 0x6c5daa20, 0x1a7f1: 0x6c721e20, 0x1a7f2: 0x6cffd820, 0x1a7f3: 0x6cabf620,\n\t0x1a7f4: 0x6c666420, 0x1a7f5: 0x6c0c8c20, 0x1a7f6: 0x6c1f2020, 0x1a7f7: 0x6c3a9420,\n\t0x1a7f8: 0x6c3cde20, 0x1a7f9: 0x6d0b8a20, 0x1a7fa: 0x6c017a20, 0x1a7fb: 0x6c06f820,\n\t0x1a7fc: 0x6d22ea20, 0x1a7fd: 0x6d02bc20, 0x1a7fe: 0x6c08ce20, 0x1a7ff: 0x6c561620,\n\t// Block 0x6a0, offset 0x1a800\n\t0x1a800: 0x6c166220, 0x1a801: 0x6d33be20, 0x1a802: 0x6c0e1020, 0x1a803: 0x6c6fe420,\n\t0x1a804: 0x6d10de20, 0x1a805: 0x6c252020, 0x1a806: 0x6c87ea20, 0x1a807: 0x6cecf420,\n\t0x1a808: 0x6c7ee620, 0x1a809: 0x6c122820, 0x1a80a: 0x6d401c20, 0x1a80b: 0x6c448220,\n\t0x1a80c: 0x6c490a20, 0x1a80d: 0x6c06fa20, 0x1a80e: 0x6ce4dc20, 0x1a80f: 0x6cd4b420,\n\t0x1a810: 0x6cd4b620, 0x1a811: 0x6c9b0420, 0x1a812: 0x6c2a0620, 0x1a813: 0x6cdfd420,\n\t0x1a814: 0x6c740e20, 0x1a815: 0x6c20c220, 0x1a816: 0x6d041e20, 0x1a817: 0x6cae9420,\n\t0x1a818: 0x6ce17020, 0x1a819: 0x6c548e20, 0x1a81a: 0x6d15da20, 0x1a81b: 0x6cb4d620,\n\t0x1a81c: 0x6ce3de20, 0x1a81d: 0x6c421420, 0x1a81e: 0x6c6e5e20, 0x1a81f: 0x6c6bd620,\n\t0x1a820: 0x6cdbb220, 0x1a821: 0x6c170a20, 0x1a822: 0x6c6a9e20, 0x1a823: 0x6c39ce20,\n\t0x1a824: 0x6d344420, 0x1a825: 0x6c796c20, 0x1a826: 0x6c734220, 0x1a827: 0x6d3f7420,\n\t0x1a828: 0x6c722020, 0x1a829: 0x6cba4620, 0x1a82a: 0x6ca5c820, 0x1a82b: 0x6c94e420,\n\t0x1a82c: 0x6d3cf420, 0x1a82d: 0x6cf27e20, 0x1a82e: 0x6c95a820, 0x1a82f: 0x6cd91020,\n\t0x1a830: 0x6c839220, 0x1a831: 0x6c5d1e20, 0x1a832: 0x6c2fea20, 0x1a833: 0x6d3f3620,\n\t0x1a834: 0x6c07aa20, 0x1a835: 0x6cf43820, 0x1a836: 0x6c722220, 0x1a837: 0x6ca39e20,\n\t0x1a838: 0x6c112020, 0x1a839: 0x6c657820, 0x1a83a: 0x6d2d3820, 0x1a83b: 0x6d125a20,\n\t0x1a83c: 0x6d344620, 0x1a83d: 0x6ccc4020, 0x1a83e: 0x6cbe3820, 0x1a83f: 0x6cbd1220,\n\t// Block 0x6a1, offset 0x1a840\n\t0x1a840: 0x6d1ba420, 0x1a841: 0x6c196620, 0x1a842: 0x6c648020, 0x1a843: 0x6d0d6220,\n\t0x1a844: 0x6cc85c20, 0x1a845: 0x6d382420, 0x1a846: 0x6c217620, 0x1a847: 0x6c641220,\n\t0x1a848: 0x6c61da20, 0x1a849: 0x6cefa820, 0x1a84a: 0x6d224220, 0x1a84b: 0x6c0e1820,\n\t0x1a84c: 0x6cc91620, 0x1a84d: 0x6ce31a20, 0x1a84e: 0x6cee7020, 0x1a84f: 0x6cb0ee20,\n\t0x1a850: 0x6d0e5a20, 0x1a851: 0x6c3c3a20, 0x1a852: 0x6ce17220, 0x1a853: 0x6cf2e020,\n\t0x1a854: 0x6c360620, 0x1a855: 0x6d009a20, 0x1a856: 0x6c17e820, 0x1a857: 0x6cd13020,\n\t0x1a858: 0x6c76ca20, 0x1a859: 0x6c2c3820, 0x1a85a: 0x6d429620, 0x1a85b: 0x6c138e20,\n\t0x1a85c: 0x6ce66c20, 0x1a85d: 0x6c070620, 0x1a85e: 0x6d018820, 0x1a85f: 0x6c59b020,\n\t0x1a860: 0x6d11a820, 0x1a861: 0x6d2e5420, 0x1a862: 0x6c1e2a20, 0x1a863: 0x6d0bec20,\n\t0x1a864: 0x6d1f2820, 0x1a865: 0x6c666820, 0x1a866: 0x6d063a20, 0x1a867: 0x6d2bd220,\n\t0x1a868: 0x6c220220, 0x1a869: 0x6c3fdc20, 0x1a86a: 0x6c087020, 0x1a86b: 0x6d35d420,\n\t0x1a86c: 0x6d3fea20, 0x1a86d: 0x6c9e1620, 0x1a86e: 0x6c601020, 0x1a86f: 0x6d15e420,\n\t0x1a870: 0x6d018a20, 0x1a871: 0x6d0a0420, 0x1a872: 0x6c10f420, 0x1a873: 0x6c329420,\n\t0x1a874: 0x6c12da20, 0x1a875: 0x6d314c20, 0x1a876: 0x6cab7c20, 0x1a877: 0x6ce7d420,\n\t0x1a878: 0x6ce7d620, 0x1a879: 0x6c070820, 0x1a87a: 0x6d28b220, 0x1a87b: 0x6c908420,\n\t0x1a87c: 0x6c6aac20, 0x1a87d: 0x6cefaa20, 0x1a87e: 0x6c3bd620, 0x1a87f: 0x6c16a020,\n\t// Block 0x6a2, offset 0x1a880\n\t0x1a880: 0x6c4a5220, 0x1a881: 0x6cda1420, 0x1a882: 0x6d361420, 0x1a883: 0x6cdab020,\n\t0x1a884: 0x6cf96620, 0x1a885: 0x6c40b020, 0x1a886: 0x6d261420, 0x1a887: 0x6cc70420,\n\t0x1a888: 0x6c860420, 0x1a889: 0x6caa6420, 0x1a88a: 0x6d282c20, 0x1a88b: 0x6c67a620,\n\t0x1a88c: 0x6c96bc20, 0x1a88d: 0x6c056e20, 0x1a88e: 0x6c2cc820, 0x1a88f: 0x6ce0ee20,\n\t0x1a890: 0x6c503c20, 0x1a891: 0x6c6ac220, 0x1a892: 0x6cf60820, 0x1a893: 0x6ccd8820,\n\t0x1a894: 0x6cba5020, 0x1a895: 0x6c744020, 0x1a896: 0x6c122c20, 0x1a897: 0x6c1f3c20,\n\t0x1a898: 0x6cca1820, 0x1a899: 0x6c071c20, 0x1a89a: 0x6cffe820, 0x1a89b: 0x6d1e3420,\n\t0x1a89c: 0x6d10f220, 0x1a89d: 0x6ce09620, 0x1a89e: 0x6cdd1420, 0x1a89f: 0x6d101c20,\n\t0x1a8a0: 0x6c37ea20, 0x1a8a1: 0x6c0e1c20, 0x1a8a2: 0x6c635a20, 0x1a8a3: 0x6c271820,\n\t0x1a8a4: 0x6d293620, 0x1a8a5: 0x6ce17620, 0x1a8a6: 0x6c483820, 0x1a8a7: 0x6c0d3420,\n\t0x1a8a8: 0x6c1ede20, 0x1a8a9: 0x6caabc20, 0x1a8aa: 0x6c116c20, 0x1a8ab: 0x6c82c820,\n\t0x1a8ac: 0x6c24ca20, 0x1a8ad: 0x6d1d8820, 0x1a8ae: 0x6d2a1420, 0x1a8af: 0x6d3ff620,\n\t0x1a8b0: 0x6c07f420, 0x1a8b1: 0x6cd95e20, 0x1a8b2: 0x6c02ce20, 0x1a8b3: 0x6c1ffe20,\n\t0x1a8b4: 0x6d226620, 0x1a8b5: 0x6d2d4220, 0x1a8b6: 0x6d40c220, 0x1a8b7: 0x6cce0620,\n\t0x1a8b8: 0x6c208e20, 0x1a8b9: 0x6c6e8c20, 0x1a8ba: 0x6c1c2c20, 0x1a8bb: 0x6ccc3220,\n\t0x1a8bc: 0x6c4ecc20, 0x1a8bd: 0x6d2eb820, 0x1a8be: 0x6cbe4c20, 0x1a8bf: 0x6d0e8020,\n\t// Block 0x6a3, offset 0x1a8c0\n\t0x1a8c0: 0x6c2c6620, 0x1a8c1: 0x6d01bc20, 0x1a8c2: 0x6c909220, 0x1a8c3: 0x6c072020,\n\t0x1a8c4: 0x6cb1b020, 0x1a8c5: 0x6c6c9420, 0x1a8c6: 0x6c88f020, 0x1a8c7: 0x6c926020,\n\t0x1a8c8: 0x6c976620, 0x1a8c9: 0x6cb8ea20, 0x1a8ca: 0x6cfaba20, 0x1a8cb: 0x6ce09c20,\n\t0x1a8cc: 0x6d1c7a20, 0x1a8cd: 0x6c307e20, 0x1a8ce: 0x6d3bd220, 0x1a8cf: 0x6cfe3c20,\n\t0x1a8d0: 0x6ccd9220, 0x1a8d1: 0x6cbbe220, 0x1a8d2: 0x6c6f2220, 0x1a8d3: 0x6ce9e820,\n\t0x1a8d4: 0x6d420620, 0x1a8d5: 0x6cb44220, 0x1a8d6: 0x6cf66020, 0x1a8d7: 0x6c815e20,\n\t0x1a8d8: 0x6c16f020, 0x1a8d9: 0x6c49ec20, 0x1a8da: 0x6c89ec20, 0x1a8db: 0x6cb50420,\n\t0x1a8dc: 0x6c197820, 0x1a8dd: 0x6c150820, 0x1a8de: 0x6cefee20, 0x1a8df: 0x6c5efe20,\n\t0x1a8e0: 0x6c0e8220, 0x1a8e1: 0x6c5bf020, 0x1a8e2: 0x6c202420, 0x1a8e3: 0x6ce5fc20,\n\t0x1a8e4: 0x6c289a20, 0x1a8e5: 0x6c691220, 0x1a8e6: 0x6c700a20, 0x1a8e7: 0x6ccbb820,\n\t0x1a8e8: 0x6c3be020, 0x1a8e9: 0x6cfce620, 0x1a8ea: 0x6c713c20, 0x1a8eb: 0x6c366c20,\n\t0x1a8ec: 0x6c685820, 0x1a8ed: 0x6c66a420, 0x1a8ee: 0x6ce76420, 0x1a8ef: 0x6c8c5620,\n\t0x1a8f0: 0x6c0f2420, 0x1a8f1: 0x6c482220, 0x1a8f2: 0x6cfd5820, 0x1a8f3: 0x6cdade20,\n\t0x1a8f4: 0x6cfce820, 0x1a8f5: 0x6c676e20, 0x1a8f6: 0x6c9fc020, 0x1a8f7: 0x6d130e20,\n\t0x1a8f8: 0x6c6d3220, 0x1a8f9: 0x6c644e20, 0x1a8fa: 0x6cbc5220, 0x1a8fb: 0x6cb0b420,\n\t0x1a8fc: 0x6c3c6020, 0x1a8fd: 0x6d394220, 0x1a8fe: 0x6c00c020, 0x1a8ff: 0x6cc9e820,\n\t// Block 0x6a4, offset 0x1a900\n\t0x1a900: 0x6d154220, 0x1a901: 0x6c75d220, 0x1a902: 0x6ca9be20, 0x1a903: 0x6c151620,\n\t0x1a904: 0x6d184620, 0x1a905: 0x6c297c20, 0x1a906: 0x6c6e2420, 0x1a907: 0x6d07b620,\n\t0x1a908: 0x6c7b3020, 0x1a909: 0x6c65c820, 0x1a90a: 0x6c1f6820, 0x1a90b: 0x6c27f420,\n\t0x1a90c: 0x6c692020, 0x1a90d: 0x6ccc3420, 0x1a90e: 0x6d294020, 0x1a90f: 0x6c121820,\n\t0x1a910: 0x6c0d5020, 0x1a911: 0x6c017220, 0x1a912: 0x6cc7c420, 0x1a913: 0x6cdf3c20,\n\t0x1a914: 0x6c1dd820, 0x1a915: 0x6c148a20, 0x1a916: 0x6c7fb220, 0x1a917: 0x6ca64620,\n\t0x1a918: 0x6c6cb420, 0x1a919: 0x6cba7020, 0x1a91a: 0x6c9b3420, 0x1a91b: 0x6cf47620,\n\t0x1a91c: 0x6ca91820, 0x1a91d: 0x6cbf5a20, 0x1a91e: 0x6ca64820, 0x1a91f: 0x6c16c820,\n\t0x1a920: 0x6c8b2e20, 0x1a921: 0x6c82dc20, 0x1a922: 0x6c93b820, 0x1a923: 0x6c7bd020,\n\t0x1a924: 0x6c066c20, 0x1a925: 0x6d240420, 0x1a926: 0x6c0c2a20, 0x1a927: 0x6d297820,\n\t0x1a928: 0x6d349e20, 0x1a929: 0x6cd8f220, 0x1a92a: 0x6d1eb420, 0x1a92b: 0x6c4fe820,\n\t0x1a92c: 0x6c193220, 0x1a92d: 0x6c193620, 0x1a92e: 0x6c86bc20, 0x1a92f: 0x6ce2be20,\n\t0x1a930: 0x6cf02420, 0x1a931: 0x6c903a20, 0x1a932: 0x6c1eee20, 0x1a933: 0x6c154020,\n\t0x1a934: 0x6cc4e020, 0x1a935: 0x6cd51220, 0x1a936: 0x6c5c8820, 0x1a937: 0x6c874220,\n\t0x1a938: 0x6c956820, 0x1a939: 0x6d298020, 0x1a93a: 0x6caace20, 0x1a93b: 0x6ce18820,\n\t0x1a93c: 0x6d0e1220, 0x1a93d: 0x6c829420, 0x1a93e: 0x6ca47c20, 0x1a93f: 0x6c372e20,\n\t// Block 0x6a5, offset 0x1a940\n\t0x1a940: 0x6cf49020, 0x1a941: 0x6d27d220, 0x1a942: 0x6d294a20, 0x1a943: 0x6d252e20,\n\t0x1a944: 0x6d044a20, 0x1a945: 0x6c1ca820, 0x1a946: 0x6d2f9620, 0x1a947: 0x6d044e20,\n\t0x1a948: 0x6cfa6e20, 0x1a949: 0x6c49d020, 0x1a94a: 0x6c332e20, 0x1a94b: 0x6c787820,\n\t0x1a94c: 0x6c333020, 0x1a94d: 0x6c9dfe20, 0x1a94e: 0x6ce91c20, 0x1a94f: 0x6c169420,\n\t0x1a950: 0x6c373220, 0x1a951: 0x6c333220, 0x1a952: 0x6c373620, 0x1a953: 0x6c6c2c20,\n\t0x1a954: 0x6ce92020, 0x1a955: 0x6cd87e20, 0x1a956: 0x6d0d4420, 0x1a957: 0x6d0d5020,\n\t0x1a958: 0x6cd2bc20, 0x1a95a: 0x6c292a20, 0x1a95b: 0x6cb8c220,\n\t0x1a95c: 0x6c30a820, 0x1a95d: 0x6c3b2820, 0x1a95e: 0x6c98d620, 0x1a95f: 0x6ccfe220,\n\t0x1a960: 0x6c30aa20, 0x1a962: 0x6c6dc620, 0x1a963: 0x6c852e20,\n\t0x1a964: 0x6c5a2a20, 0x1a965: 0x6cc80e20, 0x1a966: 0x6cedd820, 0x1a967: 0x6ca57e20,\n\t0x1a968: 0x6cc2b220, 0x1a969: 0x6c898820, 0x1a96a: 0x6d20d420, 0x1a96b: 0x6c030a20,\n\t0x1a96c: 0x6c454e20, 0x1a96d: 0x6c8f2420, 0x1a96e: 0x6cf55c20, 0x1a96f: 0x6c4f4220,\n\t0x1a970: 0x6c7f8620, 0x1a971: 0x6c460a20, 0x1a972: 0x6ce45620, 0x1a973: 0x6c490020,\n\t0x1a974: 0x6d041020, 0x1a975: 0x6c0daa20, 0x1a976: 0x6cb57a20, 0x1a977: 0x6c720620,\n\t0x1a978: 0x6c2d0620, 0x1a979: 0x6d3e0820, 0x1a97a: 0x6c3b2020, 0x1a97b: 0x6d100620,\n\t0x1a97c: 0x6c647a20, 0x1a97d: 0x6cd45820, 0x1a97e: 0x6c621420, 0x1a97f: 0x6d17da20,\n\t// Block 0x6a6, offset 0x1a980\n\t0x1a980: 0x6c627020, 0x1a981: 0x6c15ec20, 0x1a982: 0x6c6ed020, 0x1a983: 0x6c993e20,\n\t0x1a984: 0x6cc4a620, 0x1a985: 0x6ca58020, 0x1a986: 0x6d253020, 0x1a987: 0x6c991c20,\n\t0x1a988: 0x6c424c20, 0x1a989: 0x6cc4a820, 0x1a98a: 0x6c12c620, 0x1a98b: 0x6c6ed220,\n\t0x1a98c: 0x6c12c820, 0x1a98d: 0x6d292620, 0x1a98e: 0x6c488820, 0x1a98f: 0x6c6ef020,\n\t0x1a990: 0x6c994820, 0x1a991: 0x6d390820, 0x1a992: 0x6c994e20, 0x1a993: 0x6c46a020,\n\t0x1a994: 0x6d063220, 0x1a995: 0x6c9e1820, 0x1a996: 0x6c9d1620, 0x1a997: 0x6cc6ec20,\n\t0x1a998: 0x6d1a1a20, 0x1a999: 0x6d013e20, 0x1a99a: 0x6c76bc20, 0x1a99b: 0x6c755020,\n\t0x1a99c: 0x6ca9ae20, 0x1a99d: 0x6d145a20, 0x1a99e: 0x6c9c3420, 0x1a99f: 0x6cd32820,\n\t0x1a9a0: 0x6c490620, 0x1a9a1: 0x6c9b0e20, 0x1a9a2: 0x6d37ec20, 0x1a9a3: 0x6c722620,\n\t0x1a9a4: 0x6d24d020, 0x1a9a5: 0x6c9ff220, 0x1a9a6: 0x6c79de20, 0x1a9a7: 0x6c8ba420,\n\t0x1a9a8: 0x6c3fe020, 0x1a9a9: 0x6d014420, 0x1a9aa: 0x6c9d7620, 0x1a9ab: 0x6c0d9e20,\n\t0x1a9ac: 0x6c2fd820, 0x1a9ad: 0x6cdf0c20, 0x1a9ae: 0x6c425020, 0x1a9af: 0x6c3c9a20,\n\t0x1a9b0: 0x6c0da620, 0x1a9b1: 0x6c564620, 0x1a9b2: 0x6c1caa20, 0x1a9b3: 0x6c73cc20,\n\t0x1a9b4: 0x6c564820, 0x1a9b5: 0x6c7bdc20, 0x1a9b6: 0x6d12a220, 0x1a9b7: 0x6c839020,\n\t0x1a9b8: 0x6cac9a20, 0x1a9b9: 0x6c3dd220, 0x1a9ba: 0x6c9f8c20, 0x1a9bb: 0x6c305020,\n\t0x1a9bc: 0x6cfbe620, 0x1a9bd: 0x6c8ac620, 0x1a9be: 0x6cb84020, 0x1a9bf: 0x6c646820,\n\t// Block 0x6a7, offset 0x1a9c0\n\t0x1a9c0: 0x6c6e4a20, 0x1a9c1: 0x6cd5a620, 0x1a9c2: 0x6c9a4c20, 0x1a9c3: 0x6ce88a20,\n\t0x1a9c4: 0x6cb4d820, 0x1a9c5: 0x6c480220, 0x1a9c6: 0x6d3cda20, 0x1a9c7: 0x6cd91220,\n\t0x1a9c8: 0x6c6e6020, 0x1a9c9: 0x6c894a20, 0x1a9ca: 0x6cbec420, 0x1a9cb: 0x6c2db820,\n\t0x1a9cc: 0x6c8cc420, 0x1a9cd: 0x6c306c20, 0x1a9ce: 0x6c421620, 0x1a9cf: 0x6c658220,\n\t0x1a9d0: 0x6d19c620, 0x1a9d1: 0x6c23ea20, 0x1a9d2: 0x6d14f220, 0x1a9d3: 0x6c860620,\n\t0x1a9d4: 0x6c20a820, 0x1a9d5: 0x6ca03420, 0x1a9d6: 0x6d3ce820, 0x1a9d7: 0x6c24cc20,\n\t0x1a9d8: 0x6cd7fe20, 0x1a9d9: 0x6c345c20, 0x1a9da: 0x6c6d3420, 0x1a9db: 0x6c8c2620,\n\t0x1a9dc: 0x6c8c2820, 0x1a9dd: 0x6ca91a20, 0x1a9de: 0x6cf6b620, 0x1a9df: 0x6c31be20,\n\t0x1a9e0: 0x6c610c20, 0x1a9e1: 0x6c387820, 0x1a9e2: 0x6c387a20, 0x1a9e3: 0x6c387c20,\n\t0x1a9e4: 0x6c3cd620, 0x1a9e5: 0x6c704a20, 0x1a9e6: 0x6c1ed220, 0x1a9e7: 0x6d337a20,\n\t0x1a9e8: 0x6c3c1420, 0x1a9e9: 0x6ca2c220, 0x1a9ea: 0x6d377a20, 0x1a9eb: 0x6c3dcc20,\n\t0x1a9ec: 0x6c3c1620, 0x1a9ed: 0x6cb27220, 0x1a9ee: 0x6c3c2020, 0x1a9ef: 0x6c764420,\n\t0x1a9f0: 0x6c59b220, 0x1a9f1: 0x6c765220, 0x1a9f2: 0x6c419a20, 0x1a9f3: 0x6c2ad820,\n\t0x1a9f4: 0x6cb2bc20, 0x1a9f5: 0x6cb9ec20, 0x1a9f6: 0x6d044820, 0x1a9f7: 0x6c7b0a20,\n\t0x1a9f8: 0x6ce83620, 0x1a9f9: 0x6c022420, 0x1a9fa: 0x6c1e5020, 0x1a9fb: 0x6c5e6820,\n\t0x1a9fc: 0x6c295020, 0x1a9fd: 0x6c4dd220, 0x1a9fe: 0x6c4dda20, 0x1a9ff: 0x6d2a3420,\n\t// Block 0x6a8, offset 0x1aa00\n\t0x1aa00: 0x6c29b020, 0x1aa01: 0x6c2da220, 0x1aa02: 0x6c29b220, 0x1aa03: 0x6cc5a020,\n\t0x1aa04: 0x6cc5a220, 0x1aa05: 0x6c204a20, 0x1aa06: 0x6c3b0820, 0x1aa07: 0x6cbc9020,\n\t0x1aa08: 0x6d163e20, 0x1aa09: 0x6c5e6a20, 0x1aa0a: 0x6c76a020, 0x1aa0b: 0x6cba3a20,\n\t0x1aa0c: 0x6c25ac20, 0x1aa0d: 0x6c1e7220, 0x1aa0e: 0x6cf1c620, 0x1aa0f: 0x6c5e7220,\n\t0x1aa10: 0x6c281c20, 0x1aa11: 0x6d03b820, 0x1aa12: 0x6c577820, 0x1aa13: 0x6cecb620,\n\t0x1aa14: 0x6c73ce20, 0x1aa15: 0x6c839e20, 0x1aa16: 0x6d267020, 0x1aa17: 0x6c8abc20,\n\t0x1aa18: 0x6c8e3e20, 0x1aa19: 0x6d2aa220, 0x1aa1a: 0x6c425220, 0x1aa1b: 0x6c209e20,\n\t0x1aa1c: 0x6c3dd420, 0x1aa1d: 0x6c1e5420, 0x1aa1e: 0x6cc26020, 0x1aa1f: 0x6c704c20,\n\t0x1aa20: 0x6cccb820, 0x1aa21: 0x6c9f8e20, 0x1aa22: 0x6c8c9a20, 0x1aa23: 0x6d378a20,\n\t0x1aa24: 0x6cac9c20, 0x1aa25: 0x6c0cd820, 0x1aa26: 0x6c6a6420, 0x1aa27: 0x6c6a6620,\n\t0x1aa28: 0x6cad4420, 0x1aa29: 0x6c857620, 0x1aa2a: 0x6cccba20, 0x1aa2b: 0x6c0cda20,\n\t0x1aa2c: 0x6c158e20, 0x1aa2d: 0x6c6e0620, 0x1aa2e: 0x6c484420, 0x1aa2f: 0x6c44b820,\n\t0x1aa30: 0x6c2a0020, 0x1aa31: 0x6c20a220, 0x1aa32: 0x6c7c3220, 0x1aa33: 0x6c7a2020,\n\t0x1aa34: 0x6c34ca20, 0x1aa35: 0x6c37be20, 0x1aa36: 0x6d358020, 0x1aa37: 0x6cd64020,\n\t0x1aa38: 0x6cc36e20, 0x1aa39: 0x6ccbce20, 0x1aa3a: 0x6c22b220, 0x1aa3b: 0x6c787a20,\n\t0x1aa3c: 0x6c6a7620, 0x1aa3d: 0x6c4b2a20, 0x1aa3e: 0x6c22b420, 0x1aa3f: 0x6c4b2c20,\n\t// Block 0x6a9, offset 0x1aa40\n\t0x1aa40: 0x6c764620, 0x1aa41: 0x6c34cc20, 0x1aa42: 0x6c619020, 0x1aa43: 0x6ce3d820,\n\t0x1aa44: 0x6c6e1420, 0x1aa45: 0x6c907c20, 0x1aa46: 0x6c95a620, 0x1aa47: 0x6d2ab220,\n\t0x1aa48: 0x6d24cc20, 0x1aa49: 0x6c260c20, 0x1aa4a: 0x6d08da20, 0x1aa4b: 0x6c788220,\n\t0x1aa4c: 0x6c7e5a20, 0x1aa4d: 0x6cb97820, 0x1aa4e: 0x6ccbd020, 0x1aa4f: 0x6c20a420,\n\t0x1aa50: 0x6c489420, 0x1aa51: 0x6c665820, 0x1aa52: 0x6c261020, 0x1aa53: 0x6c83aa20,\n\t0x1aa54: 0x6ce2e820, 0x1aa55: 0x6c3a9620, 0x1aa56: 0x6cb3c620, 0x1aa57: 0x6c15a020,\n\t0x1aa58: 0x6cb59c20, 0x1aa59: 0x6c20a620, 0x1aa5a: 0x6d3f3820, 0x1aa5b: 0x6c426c20,\n\t0x1aa5c: 0x6cec8420, 0x1aa5d: 0x6c0e5a20, 0x1aa5e: 0x6c5e9e20, 0x1aa5f: 0x6c342220,\n\t0x1aa60: 0x6cbe7220, 0x1aa61: 0x6ccd7420, 0x1aa62: 0x6c316620, 0x1aa63: 0x6c666a20,\n\t0x1aa64: 0x6c61c220, 0x1aa65: 0x6c0e5c20, 0x1aa66: 0x6d0be220, 0x1aa67: 0x6c722820,\n\t0x1aa68: 0x6c5d5420, 0x1aa69: 0x6cd16220, 0x1aa6a: 0x6c658420, 0x1aa6b: 0x6c344420,\n\t0x1aa6c: 0x6c329620, 0x1aa6d: 0x6cf36220, 0x1aa6e: 0x6c489820, 0x1aa6f: 0x6c3fe220,\n\t0x1aa70: 0x6cd15a20, 0x1aa71: 0x6c667420, 0x1aa72: 0x6c438c20, 0x1aa73: 0x6c269420,\n\t0x1aa74: 0x6c765420, 0x1aa75: 0x6c20aa20, 0x1aa76: 0x6c1fe220, 0x1aa77: 0x6c15bc20,\n\t0x1aa78: 0x6ce94e20, 0x1aa79: 0x6c926220, 0x1aa7a: 0x6c83de20, 0x1aa7b: 0x6caf0a20,\n\t0x1aa7c: 0x6ccce820, 0x1aa7d: 0x6cb15620, 0x1aa7e: 0x6c79bc20, 0x1aa7f: 0x6c690220,\n\t// Block 0x6aa, offset 0x1aa80\n\t0x1aa80: 0x6c486620, 0x1aa81: 0x6cbb8a20, 0x1aa82: 0x6c747220, 0x1aa83: 0x6c57a820,\n\t0x1aa84: 0x6d2be620, 0x1aa85: 0x6d3df620, 0x1aa86: 0x6c882a20, 0x1aa87: 0x6c727420,\n\t0x1aa88: 0x6caf8420, 0x1aa89: 0x6c8e8020, 0x1aa8a: 0x6c4b5e20, 0x1aa8b: 0x6c692220,\n\t0x1aa8c: 0x6c4b6020, 0x1aa8d: 0x6c66b020, 0x1aa8e: 0x6c66b220, 0x1aa8f: 0x6ce0c820,\n\t0x1aa90: 0x6c5d5a20, 0x1aa91: 0x6c627220, 0x1aa92: 0x6c66cc20, 0x1aa93: 0x6d187e20,\n\t0x1aa94: 0x6c66ce20, 0x1aa95: 0x6d370020, 0x1aa96: 0x6c154220, 0x1aa97: 0x6c662020,\n\t0x1aa98: 0x6ca09820, 0x1aa99: 0x6c84c820, 0x1aa9a: 0x6d3a8c20, 0x1aa9b: 0x6c855c20,\n\t0x1aa9c: 0x6d0b6220, 0x1aa9d: 0x6cc36c20, 0x1aa9e: 0x6c04da20, 0x1aa9f: 0x6c455420,\n\t0x1aaa0: 0x6c631620, 0x1aaa1: 0x6cf55220, 0x1aaa2: 0x6c971e20, 0x1aaa3: 0x6c8abe20,\n\t0x1aaa4: 0x6c6cce20, 0x1aaa5: 0x6c792020, 0x1aaa6: 0x6d006420, 0x1aaa7: 0x6d34d220,\n\t0x1aaa8: 0x6c304c20, 0x1aaa9: 0x6d3aa020, 0x1aaaa: 0x6caa4a20, 0x1aaab: 0x6c6a6820,\n\t0x1aaac: 0x6cc17420, 0x1aaad: 0x6ccec020, 0x1aaae: 0x6d167620, 0x1aaaf: 0x6d398020,\n\t0x1aab0: 0x6ca0c020, 0x1aab1: 0x6c857a20, 0x1aab2: 0x6c6cd020, 0x1aab3: 0x6c813e20,\n\t0x1aab4: 0x6c814020, 0x1aab5: 0x6c733e20, 0x1aab6: 0x6c79ce20, 0x1aab7: 0x6d0f8620,\n\t0x1aab8: 0x6cebc620, 0x1aab9: 0x6cffd420, 0x1aaba: 0x6ca1c220, 0x1aabb: 0x6c7b8420,\n\t0x1aabc: 0x6c6a7a20, 0x1aabd: 0x6c8aca20, 0x1aabe: 0x6c50ba20, 0x1aabf: 0x6cd31420,\n\t// Block 0x6ab, offset 0x1aac0\n\t0x1aac0: 0x6c788420, 0x1aac1: 0x6c6ce020, 0x1aac2: 0x6c433620, 0x1aac3: 0x6c0ec220,\n\t0x1aac4: 0x6c9f9820, 0x1aac5: 0x6c1bf420, 0x1aac6: 0x6c80a020, 0x1aac7: 0x6d1e1820,\n\t0x1aac8: 0x6d1e1a20, 0x1aac9: 0x6c9e0c20, 0x1aaca: 0x6c788620, 0x1aacb: 0x6d099220,\n\t0x1aacc: 0x6c734420, 0x1aacd: 0x6cbe7420, 0x1aace: 0x6c922820, 0x1aacf: 0x6c107c20,\n\t0x1aad0: 0x6c9bcc20, 0x1aad1: 0x6c1c0420, 0x1aad2: 0x6c823c20, 0x1aad3: 0x6c768620,\n\t0x1aad4: 0x6c9e1a20, 0x1aad5: 0x6c307220, 0x1aad6: 0x6d06b420, 0x1aad7: 0x6d06ba20,\n\t0x1aad8: 0x6c76a620, 0x1aad9: 0x6cf55620, 0x1aada: 0x6d175020, 0x1aadb: 0x6d099820,\n\t0x1aadc: 0x6cf24a20, 0x1aadd: 0x6cd16420, 0x1aade: 0x6c815620, 0x1aadf: 0x6ca28420,\n\t0x1aae0: 0x6c926420, 0x1aae1: 0x6cb1b220, 0x1aae2: 0x6cd39620, 0x1aae3: 0x6c5ee220,\n\t0x1aae4: 0x6cbd7c20, 0x1aae5: 0x6c67ee20, 0x1aae6: 0x6c174c20, 0x1aae7: 0x6cc37420,\n\t0x1aae8: 0x6cfe3e20, 0x1aae9: 0x6d181c20, 0x1aaea: 0x6c747620, 0x1aaeb: 0x6c385220,\n\t0x1aaec: 0x6c72fa20, 0x1aaed: 0x6ce76620, 0x1aaee: 0x6c727620, 0x1aaef: 0x6c27f620,\n\t0x1aaf0: 0x6d00d620, 0x1aaf1: 0x6c973820, 0x1aaf2: 0x6d09a420, 0x1aaf3: 0x6d09a820,\n\t0x1aaf4: 0x6c940220, 0x1aaf5: 0x6c867020, 0x1aaf6: 0x6c184e20, 0x1aaf7: 0x6cc4e220,\n\t0x1aaf8: 0x6cc37c20, 0x1aaf9: 0x6c059c20, 0x1aafa: 0x6cce9420, 0x1aafb: 0x6d277620,\n\t0x1aafc: 0x6c6f4220, 0x1aafd: 0x6c062c20, 0x1aafe: 0x6c463220, 0x1aaff: 0x6cf49220,\n\t// Block 0x6ac, offset 0x1ab00\n\t0x1ab00: 0x6d277820, 0x1ab01: 0x6cf17820, 0x1ab02: 0x6c0ade20, 0x1ab03: 0x6c412220,\n\t0x1ab04: 0x6c412420, 0x1ab05: 0x6c059e20, 0x1ab06: 0x6c22f420, 0x1ab07: 0x6d198a20,\n\t0x1ab08: 0x6d045020, 0x1ab09: 0x6cae5020, 0x1ab0a: 0x6c705020, 0x1ab0b: 0x6ce20420,\n\t0x1ab0c: 0x6c43c620, 0x1ab0d: 0x6cb42c20, 0x1ab0e: 0x6c35f820, 0x1ab0f: 0x6cad5a20,\n\t0x1ab10: 0x6c3e4820, 0x1ab11: 0x6c458820, 0x1ab12: 0x6c269620, 0x1ab13: 0x6c6fee20,\n\t0x1ab14: 0x6cbef220, 0x1ab15: 0x6c08aa20, 0x1ab16: 0x6c577620, 0x1ab17: 0x6c06c620,\n\t0x1ab18: 0x6ca4ea20, 0x1ab19: 0x6cd41420, 0x1ab1a: 0x6c397e20, 0x1ab1b: 0x6c6fc620,\n\t0x1ab1c: 0x6d144c20, 0x1ab1d: 0x6d288020, 0x1ab1e: 0x6c67d020, 0x1ab1f: 0x6c777820,\n\t0x1ab20: 0x6c681820, 0x1ab21: 0x6c7b8020, 0x1ab22: 0x6c549220, 0x1ab23: 0x6cf98420,\n\t0x1ab24: 0x6cc0ce20, 0x1ab25: 0x6c0b6820, 0x1ab26: 0x6c4ac620, 0x1ab27: 0x6cbc9c20,\n\t0x1ab28: 0x6d29d020, 0x1ab29: 0x6c7b8a20, 0x1ab2a: 0x6c3a4c20, 0x1ab2b: 0x6c54b420,\n\t0x1ab2c: 0x6d224620, 0x1ab2d: 0x6c4aee20, 0x1ab2e: 0x6c7cf020, 0x1ab2f: 0x6c5bd220,\n\t0x1ab30: 0x6c27ea20, 0x1ab31: 0x6c4b5c20, 0x1ab32: 0x6c881a20, 0x1ab33: 0x6c882c20,\n\t0x1ab34: 0x6cdb9420, 0x1ab35: 0x6c31c220, 0x1ab36: 0x6c703420, 0x1ab37: 0x6c74fa20,\n\t0x1ab38: 0x6cf83420, 0x1ab39: 0x6cb04020, 0x1ab3a: 0x6cc0c420, 0x1ab3b: 0x6d13c020,\n\t0x1ab3c: 0x6c77d420, 0x1ab3d: 0x6d0d5220, 0x1ab3e: 0x6c0b3220, 0x1ab3f: 0x6ca68c20,\n\t// Block 0x6ad, offset 0x1ab40\n\t0x1ab40: 0x6cc0f820, 0x1ab41: 0x6cd22420, 0x1ab42: 0x6d0a6020, 0x1ab43: 0x6cb88c20,\n\t0x1ab44: 0x6ca75420, 0x1ab45: 0x6cc96220, 0x1ab46: 0x6d40a220, 0x1ab47: 0x6cd0d020,\n\t0x1ab48: 0x6cf41620, 0x1ab49: 0x6c5b8420, 0x1ab4a: 0x6c04dc20, 0x1ab4b: 0x6cd2fa20,\n\t0x1ab4c: 0x6cf83620, 0x1ab4d: 0x6ced6a20, 0x1ab4e: 0x6c572420, 0x1ab4f: 0x6d006620,\n\t0x1ab50: 0x6ced6c20, 0x1ab51: 0x6c068e20, 0x1ab52: 0x6d40a820, 0x1ab53: 0x6d3cee20,\n\t0x1ab54: 0x6d007020, 0x1ab55: 0x6c27ba20, 0x1ab56: 0x6c972820, 0x1ab57: 0x6ca3ea20,\n\t0x1ab58: 0x6c27c020, 0x1ab59: 0x6c601220, 0x1ab5a: 0x6c0efe20, 0x1ab5b: 0x6cd67c20,\n\t0x1ab5c: 0x6c100420, 0x1ab5d: 0x6c7bd420, 0x1ab5e: 0x6c0b6420, 0x1ab5f: 0x6c102a20,\n\t0x1ab60: 0x6d2e4620, 0x1ab61: 0x6c761820, 0x1ab62: 0x6c913020, 0x1ab63: 0x6d1f9c20,\n\t0x1ab64: 0x6c91b420, 0x1ab65: 0x6cf58420, 0x1ab66: 0x6c48a620, 0x1ab67: 0x6cf2d420,\n\t0x1ab68: 0x6d017620, 0x1ab69: 0x6c6a4e20, 0x1ab6a: 0x6c6a5020, 0x1ab6b: 0x6cf06820,\n\t0x1ab6c: 0x6c01f020, 0x1ab6d: 0x6cbef420, 0x1ab6e: 0x6d338020, 0x1ab6f: 0x6c991e20,\n\t0x1ab70: 0x6d1b3620, 0x1ab71: 0x6cee6620, 0x1ab72: 0x6ccec420, 0x1ab73: 0x6c5fd220,\n\t0x1ab74: 0x6cc3a020, 0x1ab75: 0x6c948c20, 0x1ab76: 0x6c1b7c20, 0x1ab77: 0x6c731020,\n\t0x1ab78: 0x6d016a20, 0x1ab79: 0x6d067e20, 0x1ab7a: 0x6c6c8620, 0x1ab7b: 0x6cc3a620,\n\t0x1ab7c: 0x6cf4be20, 0x1ab7d: 0x6c5fec20, 0x1ab7e: 0x6c360a20, 0x1ab7f: 0x6cbe3a20,\n\t// Block 0x6ae, offset 0x1ab80\n\t0x1ab80: 0x6cf63820, 0x1ab81: 0x6cca6620, 0x1ab82: 0x6c16e020, 0x1ab83: 0x6cef8020,\n\t0x1ab84: 0x6c35c020, 0x1ab85: 0x6ce62220, 0x1ab86: 0x6c856020, 0x1ab87: 0x6d300c20,\n\t0x1ab88: 0x6c4e4e20, 0x1ab89: 0x6c856420, 0x1ab8a: 0x6d0b4620, 0x1ab8b: 0x6d0ac820,\n\t0x1ab8c: 0x6d0e3620, 0x1ab8d: 0x6ccf3020, 0x1ab8e: 0x6c2bca20, 0x1ab8f: 0x6d2c7020,\n\t0x1ab90: 0x6cacf020, 0x1ab91: 0x6d0b0c20, 0x1ab92: 0x6c50bc20, 0x1ab93: 0x6d0b1620,\n\t0x1ab94: 0x6d358220, 0x1ab95: 0x6c12cc20, 0x1ab96: 0x6cacf620, 0x1ab97: 0x6ce31020,\n\t0x1ab98: 0x6c83a420, 0x1ab99: 0x6ccf3820, 0x1ab9a: 0x6c546020, 0x1ab9b: 0x6ce63420,\n\t0x1ab9c: 0x6d416820, 0x1ab9d: 0x6c261220, 0x1ab9e: 0x6c3a9820, 0x1ab9f: 0x6d254c20,\n\t0x1aba0: 0x6c12dc20, 0x1aba1: 0x6d255e20, 0x1aba2: 0x6cfd6a20, 0x1aba3: 0x6d0d6420,\n\t0x1aba4: 0x6c860c20, 0x1aba5: 0x6c744220, 0x1aba6: 0x6ccc5020, 0x1aba7: 0x6c2cca20,\n\t0x1aba8: 0x6c1e7c20, 0x1aba9: 0x6c6ff020, 0x1abaa: 0x6c6c9620, 0x1abab: 0x6c024620,\n\t0x1abac: 0x6c4b1020, 0x1abad: 0x6d0e9020, 0x1abae: 0x6cd80020, 0x1abaf: 0x6c862620,\n\t0x1abb0: 0x6c16f220, 0x1abb1: 0x6c7faa20, 0x1abb2: 0x6c864620, 0x1abb3: 0x6d0cd020,\n\t0x1abb4: 0x6d0df620, 0x1abb5: 0x6d25dc20, 0x1abb6: 0x6cd7b420, 0x1abb7: 0x6c455020,\n\t0x1abb8: 0x6c8b9c20, 0x1abb9: 0x6cc73e20, 0x1abba: 0x6cc25a20, 0x1abbb: 0x6cc25c20,\n\t0x1abbc: 0x6c377c20, 0x1abbd: 0x6c82b020, 0x1abbe: 0x6c315e20, 0x1abbf: 0x6cfc7420,\n\t// Block 0x6af, offset 0x1abc0\n\t0x1abc0: 0x6d3b6e20, 0x1abc1: 0x6cc9fa20, 0x1abc2: 0x6c115a20, 0x1abc3: 0x6c115e20,\n\t0x1abc4: 0x6c116020, 0x1abc5: 0x6c116620, 0x1abc6: 0x6c00b420, 0x1abc7: 0x6c278620,\n\t0x1abc8: 0x6d200420, 0x1abc9: 0x6c137220, 0x1abca: 0x6c5fb820, 0x1abcb: 0x6d206820,\n\t0x1abcc: 0x6cd6a020, 0x1abcd: 0x6c390020, 0x1abce: 0x6cd42620, 0x1abcf: 0x6c48e420,\n\t0x1abd0: 0x6c035c20, 0x1abd1: 0x6c37e220, 0x1abd2: 0x6cc91020, 0x1abd3: 0x6cd30820,\n\t0x1abd4: 0x6cd4a620, 0x1abd5: 0x6d3d2a20, 0x1abd6: 0x6cc23c20, 0x1abd7: 0x6cd45220,\n\t0x1abd8: 0x6c0b7a20, 0x1abd9: 0x6d068a20, 0x1abda: 0x6c640420, 0x1abdb: 0x6cacaa20,\n\t0x1abdc: 0x6cda0c20, 0x1abdd: 0x6c433820, 0x1abde: 0x6cf08020, 0x1abdf: 0x6cda0e20,\n\t0x1abe0: 0x6c2ebc20, 0x1abe1: 0x6cc8e220, 0x1abe2: 0x6c23bc20, 0x1abe3: 0x6c79c820,\n\t0x1abe4: 0x6c475020, 0x1abe5: 0x6c71ea20, 0x1abe6: 0x6c8e1a20, 0x1abe7: 0x6c488a20,\n\t0x1abe8: 0x6c29b420, 0x1abe9: 0x6c79d420, 0x1abea: 0x6d34ce20, 0x1abeb: 0x6c697a20,\n\t0x1abec: 0x6d2f9420, 0x1abed: 0x6c03e820, 0x1abee: 0x6c2f4420, 0x1abef: 0x6c785220,\n\t0x1abf0: 0x6cdf0e20, 0x1abf1: 0x6c1bd620, 0x1abf2: 0x6cd2a420, 0x1abf3: 0x6d200820,\n\t0x1abf4: 0x6cbfee20, 0x1abf5: 0x6cb34620, 0x1abf6: 0x6d12ba20, 0x1abf7: 0x6c500e20,\n\t0x1abf8: 0x6cd7bc20, 0x1abf9: 0x6ce08a20, 0x1abfa: 0x6c1b7220, 0x1abfb: 0x6c820a20,\n\t0x1abfc: 0x6c2daa20, 0x1abfd: 0x6c5e6c20, 0x1abfe: 0x6c8a5c20, 0x1abff: 0x6c529020,\n\t// Block 0x6b0, offset 0x1ac00\n\t0x1ac00: 0x6c9ebe20, 0x1ac01: 0x6d056020, 0x1ac02: 0x6c982420, 0x1ac03: 0x6c1a9020,\n\t0x1ac04: 0x6c447c20, 0x1ac05: 0x6d077820, 0x1ac06: 0x6d108620, 0x1ac07: 0x6d3ed820,\n\t0x1ac08: 0x6c50b620, 0x1ac09: 0x6c5fc220, 0x1ac0a: 0x6c2e0820, 0x1ac0b: 0x6c25b220,\n\t0x1ac0c: 0x6ce70c20, 0x1ac0d: 0x6c9fe620, 0x1ac0e: 0x6c545a20, 0x1ac0f: 0x6c856e20,\n\t0x1ac10: 0x6ce91620, 0x1ac11: 0x6cfe1620, 0x1ac12: 0x6d2bc220, 0x1ac13: 0x6cfa2a20,\n\t0x1ac14: 0x6d12a020, 0x1ac15: 0x6c937420, 0x1ac16: 0x6d0aca20, 0x1ac17: 0x6c96ee20,\n\t0x1ac18: 0x6cab7420, 0x1ac19: 0x6c5d5220, 0x1ac1a: 0x6d13c220, 0x1ac1b: 0x6c755420,\n\t0x1ac1c: 0x6c1e1c20, 0x1ac1d: 0x6c8c4420, 0x1ac1e: 0x6cea1620, 0x1ac1f: 0x6d1a2420,\n\t0x1ac20: 0x6c3a7e20, 0x1ac21: 0x6c08b820, 0x1ac22: 0x6cbdfe20, 0x1ac23: 0x6cbe0020,\n\t0x1ac24: 0x6c6ba820, 0x1ac25: 0x6c105c20, 0x1ac26: 0x6c3d1c20, 0x1ac27: 0x6c03ea20,\n\t0x1ac28: 0x6c339620, 0x1ac29: 0x6c3b0c20, 0x1ac2a: 0x6c354820, 0x1ac2b: 0x6c4dce20,\n\t0x1ac2c: 0x6ce62c20, 0x1ac2d: 0x6c792420, 0x1ac2e: 0x6cd74620, 0x1ac2f: 0x6cb6d020,\n\t0x1ac30: 0x6c52f020, 0x1ac31: 0x6d338620, 0x1ac32: 0x6d1aca20, 0x1ac33: 0x6cf3a020,\n\t0x1ac34: 0x6cf3a220, 0x1ac35: 0x6c178c20, 0x1ac36: 0x6ca55820, 0x1ac37: 0x6d093c20,\n\t0x1ac38: 0x6cf56a20, 0x1ac39: 0x6c20b420, 0x1ac3a: 0x6c309e20, 0x1ac3b: 0x6cf1c820,\n\t0x1ac3c: 0x6c544820, 0x1ac3d: 0x6c529220, 0x1ac3e: 0x6cf3a420, 0x1ac3f: 0x6c433220,\n\t// Block 0x6b1, offset 0x1ac40\n\t0x1ac40: 0x6d0bda20, 0x1ac41: 0x6c759420, 0x1ac42: 0x6c937620, 0x1ac43: 0x6c35d020,\n\t0x1ac44: 0x6c43c020, 0x1ac45: 0x6c99ce20, 0x1ac46: 0x6c270420, 0x1ac47: 0x6cb6d220,\n\t0x1ac48: 0x6c19b620, 0x1ac49: 0x6cf3a620, 0x1ac4a: 0x6c433420, 0x1ac4b: 0x6c3d3820,\n\t0x1ac4c: 0x6c698020, 0x1ac4d: 0x6c529420, 0x1ac4e: 0x6c1b7820, 0x1ac4f: 0x6cd0da20,\n\t0x1ac50: 0x6ca55a20, 0x1ac51: 0x6cea1820, 0x1ac52: 0x6c3f3220, 0x1ac53: 0x6d167820,\n\t0x1ac54: 0x6c270620, 0x1ac55: 0x6cab7620, 0x1ac56: 0x6c857c20, 0x1ac57: 0x6c077620,\n\t0x1ac58: 0x6d253820, 0x1ac59: 0x6c4c0e20, 0x1ac5a: 0x6cf21a20, 0x1ac5b: 0x6cba9c20,\n\t0x1ac5c: 0x6cf35020, 0x1ac5d: 0x6c35da20, 0x1ac5e: 0x6cd19820, 0x1ac5f: 0x6c731220,\n\t0x1ac60: 0x6cae4620, 0x1ac61: 0x6cf1ce20, 0x1ac62: 0x6ca55c20, 0x1ac63: 0x6c965a20,\n\t0x1ac64: 0x6c8e1c20, 0x1ac65: 0x6cc46020, 0x1ac66: 0x6d1e9420, 0x1ac67: 0x6c2bd420,\n\t0x1ac68: 0x6d385a20, 0x1ac69: 0x6cd31620, 0x1ac6a: 0x6d38fa20, 0x1ac6b: 0x6ce60e20,\n\t0x1ac6c: 0x6cf84420, 0x1ac6d: 0x6d16a820, 0x1ac6e: 0x6cb74220, 0x1ac6f: 0x6cb27420,\n\t0x1ac70: 0x6d3ef420, 0x1ac71: 0x6c46ea20, 0x1ac72: 0x6c21f420, 0x1ac73: 0x6cf07220,\n\t0x1ac74: 0x6d062a20, 0x1ac75: 0x6c000420, 0x1ac76: 0x6ca49220, 0x1ac77: 0x6c40be20,\n\t0x1ac78: 0x6cadac20, 0x1ac79: 0x6d16aa20, 0x1ac7a: 0x6cfe8220, 0x1ac7b: 0x6ccfa820,\n\t0x1ac7c: 0x6c549820, 0x1ac7d: 0x6ca04020, 0x1ac7e: 0x6c267a20, 0x1ac7f: 0x6cc26220,\n\t// Block 0x6b2, offset 0x1ac80\n\t0x1ac80: 0x6c71a220, 0x1ac81: 0x6c4dd420, 0x1ac82: 0x6d288820, 0x1ac83: 0x6ceaa820,\n\t0x1ac84: 0x6c341a20, 0x1ac85: 0x6cb3ec20, 0x1ac86: 0x6cad4620, 0x1ac87: 0x6c0cdc20,\n\t0x1ac88: 0x6c3de020, 0x1ac89: 0x6d0f4420, 0x1ac8a: 0x6c50be20, 0x1ac8b: 0x6d28e820,\n\t0x1ac8c: 0x6c50c020, 0x1ac8d: 0x6c4d0c20, 0x1ac8e: 0x6c6fd420, 0x1ac8f: 0x6d1e1220,\n\t0x1ac90: 0x6c40aa20, 0x1ac91: 0x6c264020, 0x1ac92: 0x6d38fc20, 0x1ac93: 0x6cec1220,\n\t0x1ac94: 0x6c760c20, 0x1ac95: 0x6c483220, 0x1ac96: 0x6c760e20, 0x1ac97: 0x6d42b820,\n\t0x1ac98: 0x6c106020, 0x1ac99: 0x6c8f6a20, 0x1ac9a: 0x6c2fda20, 0x1ac9b: 0x6ca8f420,\n\t0x1ac9c: 0x6cdefe20, 0x1ac9d: 0x6cd7c820, 0x1ac9e: 0x6cfc7820, 0x1ac9f: 0x6c5da420,\n\t0x1aca0: 0x6cb75020, 0x1aca1: 0x6c37c020, 0x1aca2: 0x6c35e420, 0x1aca3: 0x6c49da20,\n\t0x1aca4: 0x6d2cb220, 0x1aca5: 0x6cf85420, 0x1aca6: 0x6d148a20, 0x1aca7: 0x6c8b9220,\n\t0x1aca8: 0x6d3e0a20, 0x1aca9: 0x6c9ec020, 0x1acaa: 0x6c9c2e20, 0x1acab: 0x6d34fa20,\n\t0x1acac: 0x6d119420, 0x1acad: 0x6c5e9220, 0x1acae: 0x6d390a20, 0x1acaf: 0x6c437820,\n\t0x1acb0: 0x6cd5a820, 0x1acb1: 0x6d295e20, 0x1acb2: 0x6cffd620, 0x1acb3: 0x6c4d0e20,\n\t0x1acb4: 0x6c5a8e20, 0x1acb5: 0x6c7ad420, 0x1acb6: 0x6c580c20, 0x1acb7: 0x6ce20820,\n\t0x1acb8: 0x6cfb3020, 0x1acb9: 0x6c35e620, 0x1acba: 0x6d084220, 0x1acbb: 0x6d04ba20,\n\t0x1acbc: 0x6c4c1020, 0x1acbd: 0x6d0e4220, 0x1acbe: 0x6c81a020, 0x1acbf: 0x6d13ce20,\n\t// Block 0x6b3, offset 0x1acc0\n\t0x1acc0: 0x6c001620, 0x1acc1: 0x6cb23820, 0x1acc2: 0x6cd04a20, 0x1acc3: 0x6ce72020,\n\t0x1acc4: 0x6c529a20, 0x1acc5: 0x6d045c20, 0x1acc6: 0x6c341c20, 0x1acc7: 0x6cec4c20,\n\t0x1acc8: 0x6c4cf820, 0x1acc9: 0x6d28f820, 0x1acca: 0x6d201e20, 0x1accb: 0x6c2f3020,\n\t0x1accc: 0x6cac1c20, 0x1accd: 0x6cfddc20, 0x1acce: 0x6c001420, 0x1accf: 0x6c449c20,\n\t0x1acd0: 0x6c7b8c20, 0x1acd1: 0x6d0b4a20, 0x1acd2: 0x6c264220, 0x1acd3: 0x6cfe8a20,\n\t0x1acd4: 0x6c094220, 0x1acd5: 0x6c5b9620, 0x1acd6: 0x6ca77420, 0x1acd7: 0x6c570a20,\n\t0x1acd8: 0x6d044220, 0x1acd9: 0x6c7b1820, 0x1acda: 0x6c347620, 0x1acdb: 0x6c3b1c20,\n\t0x1acdc: 0x6c619c20, 0x1acdd: 0x6ca9b220, 0x1acde: 0x6ca1ba20, 0x1acdf: 0x6d1d7620,\n\t0x1ace0: 0x6c502420, 0x1ace1: 0x6d254e20, 0x1ace2: 0x6c905620, 0x1ace3: 0x6cb3ee20,\n\t0x1ace4: 0x6c984820, 0x1ace5: 0x6c438020, 0x1ace6: 0x6cab2820, 0x1ace7: 0x6c1a9a20,\n\t0x1ace8: 0x6ccece20, 0x1ace9: 0x6c87dc20, 0x1acea: 0x6ca2f420, 0x1aceb: 0x6d40ae20,\n\t0x1acec: 0x6c50ea20, 0x1aced: 0x6c7a3420, 0x1acee: 0x6cfe9220, 0x1acef: 0x6cfc9a20,\n\t0x1acf0: 0x6c814820, 0x1acf1: 0x6c0e5e20, 0x1acf2: 0x6d302c20, 0x1acf3: 0x6d2bd020,\n\t0x1acf4: 0x6c89ac20, 0x1acf5: 0x6c033620, 0x1acf6: 0x6c9ec220, 0x1acf7: 0x6c8ae220,\n\t0x1acf8: 0x6cdbb420, 0x1acf9: 0x6c3e2a20, 0x1acfa: 0x6c103420, 0x1acfb: 0x6c4e9020,\n\t0x1acfc: 0x6c524620, 0x1acfd: 0x6c44f220, 0x1acfe: 0x6cd76820, 0x1acff: 0x6c447420,\n\t// Block 0x6b4, offset 0x1ad00\n\t0x1ad00: 0x6d203620, 0x1ad01: 0x6d0e4c20, 0x1ad02: 0x6c46fc20, 0x1ad03: 0x6c477020,\n\t0x1ad04: 0x6c077820, 0x1ad05: 0x6c4dec20, 0x1ad06: 0x6cdd0c20, 0x1ad07: 0x6c213820,\n\t0x1ad08: 0x6d171c20, 0x1ad09: 0x6c001820, 0x1ad0a: 0x6c63ae20, 0x1ad0b: 0x6ce84620,\n\t0x1ad0c: 0x6cfb3220, 0x1ad0d: 0x6cecf620, 0x1ad0e: 0x6c85c420, 0x1ad0f: 0x6cf5b220,\n\t0x1ad10: 0x6ce0e820, 0x1ad11: 0x6d428a20, 0x1ad12: 0x6cc02420, 0x1ad13: 0x6c17d420,\n\t0x1ad14: 0x6cf3ac20, 0x1ad15: 0x6d2a6e20, 0x1ad16: 0x6d0b4c20, 0x1ad17: 0x6c30a420,\n\t0x1ad18: 0x6cb6e420, 0x1ad19: 0x6c2b6020, 0x1ad1a: 0x6cbe0c20, 0x1ad1b: 0x6c96ba20,\n\t0x1ad1c: 0x6ca0ee20, 0x1ad1d: 0x6c461220, 0x1ad1e: 0x6c30e620, 0x1ad1f: 0x6cc26c20,\n\t0x1ad20: 0x6c814a20, 0x1ad21: 0x6c898c20, 0x1ad22: 0x6cdd5420, 0x1ad23: 0x6d2a7020,\n\t0x1ad24: 0x6c58fe20, 0x1ad25: 0x6c813620, 0x1ad26: 0x6ccbd620, 0x1ad27: 0x6c5ea020,\n\t0x1ad28: 0x6d426820, 0x1ad29: 0x6cf28420, 0x1ad2a: 0x6c3cca20, 0x1ad2b: 0x6c6cfc20,\n\t0x1ad2c: 0x6c56fc20, 0x1ad2d: 0x6cb77620, 0x1ad2e: 0x6cd45c20, 0x1ad2f: 0x6ceefa20,\n\t0x1ad30: 0x6cd64420, 0x1ad31: 0x6c171020, 0x1ad32: 0x6c374e20, 0x1ad33: 0x6c85e620,\n\t0x1ad34: 0x6cbb5620, 0x1ad35: 0x6c017e20, 0x1ad36: 0x6d2ab620, 0x1ad37: 0x6d1d7820,\n\t0x1ad38: 0x6ca75e20, 0x1ad39: 0x6d208420, 0x1ad3a: 0x6ce4e620, 0x1ad3b: 0x6c7f4420,\n\t0x1ad3c: 0x6ccc4220, 0x1ad3d: 0x6cf5d820, 0x1ad3e: 0x6ceba020, 0x1ad3f: 0x6c54b820,\n\t// Block 0x6b5, offset 0x1ad40\n\t0x1ad40: 0x6c003c20, 0x1ad41: 0x6d2f6420, 0x1ad42: 0x6caa1420, 0x1ad43: 0x6c790220,\n\t0x1ad44: 0x6d3d4420, 0x1ad45: 0x6d3d4620, 0x1ad46: 0x6cce0220, 0x1ad47: 0x6c2c3a20,\n\t0x1ad48: 0x6c524a20, 0x1ad49: 0x6c8ba820, 0x1ad4a: 0x6c001020, 0x1ad4b: 0x6c112220,\n\t0x1ad4c: 0x6cfd6c20, 0x1ad4d: 0x6cea1e20, 0x1ad4e: 0x6cf43e20, 0x1ad4f: 0x6cf20620,\n\t0x1ad50: 0x6c253020, 0x1ad51: 0x6ccc4420, 0x1ad52: 0x6c477a20, 0x1ad53: 0x6cb6ec20,\n\t0x1ad54: 0x6cb6ee20, 0x1ad55: 0x6ce21620, 0x1ad56: 0x6c287420, 0x1ad57: 0x6c287620,\n\t0x1ad58: 0x6d12e620, 0x1ad59: 0x6d3f1020, 0x1ad5a: 0x6c08d820, 0x1ad5b: 0x6c253220,\n\t0x1ad5c: 0x6c1fc220, 0x1ad5d: 0x6c510220, 0x1ad5e: 0x6d0b5020, 0x1ad5f: 0x6cb6f420,\n\t0x1ad60: 0x6d304820, 0x1ad61: 0x6c39f620, 0x1ad62: 0x6c898e20, 0x1ad63: 0x6cfb5820,\n\t0x1ad64: 0x6cafd820, 0x1ad65: 0x6ccc4620, 0x1ad66: 0x6c7ed420, 0x1ad67: 0x6d2ab820,\n\t0x1ad68: 0x6d1baa20, 0x1ad69: 0x6c48ae20, 0x1ad6a: 0x6cabc220, 0x1ad6b: 0x6d30d620,\n\t0x1ad6c: 0x6ccb2020, 0x1ad6d: 0x6d3bc220, 0x1ad6e: 0x6ca81020, 0x1ad6f: 0x6c4cf620,\n\t0x1ad70: 0x6c953020, 0x1ad71: 0x6d0bf020, 0x1ad72: 0x6c2c3c20, 0x1ad73: 0x6cc2d220,\n\t0x1ad74: 0x6c15a420, 0x1ad75: 0x6c100620, 0x1ad76: 0x6c2fa020, 0x1ad77: 0x6c809e20,\n\t0x1ad78: 0x6cffe420, 0x1ad79: 0x6c710c20, 0x1ad7a: 0x6ce0f220, 0x1ad7b: 0x6c1c1a20,\n\t0x1ad7c: 0x6ce31e20, 0x1ad7d: 0x6c016c20, 0x1ad7e: 0x6c6f7020, 0x1ad7f: 0x6c288620,\n\t// Block 0x6b6, offset 0x1ad80\n\t0x1ad80: 0x6c761020, 0x1ad81: 0x6d1df420, 0x1ad82: 0x6cf08a20, 0x1ad83: 0x6ca3fc20,\n\t0x1ad84: 0x6ccd8a20, 0x1ad85: 0x6d232a20, 0x1ad86: 0x6d305820, 0x1ad87: 0x6c7e6220,\n\t0x1ad88: 0x6c6a0820, 0x1ad89: 0x6c53f820, 0x1ad8a: 0x6c4e5820, 0x1ad8b: 0x6c2e9820,\n\t0x1ad8c: 0x6d388220, 0x1ad8d: 0x6c147e20, 0x1ad8e: 0x6cec5220, 0x1ad8f: 0x6caaec20,\n\t0x1ad90: 0x6d230020, 0x1ad91: 0x6d19d820, 0x1ad92: 0x6d28b820, 0x1ad93: 0x6d10a220,\n\t0x1ad94: 0x6cab2420, 0x1ad95: 0x6c9e2020, 0x1ad96: 0x6c555220, 0x1ad97: 0x6d27e820,\n\t0x1ad98: 0x6c201e20, 0x1ad99: 0x6c5bbc20, 0x1ad9a: 0x6c591a20, 0x1ad9b: 0x6c591c20,\n\t0x1ad9c: 0x6cf7e620, 0x1ad9d: 0x6c509c20, 0x1ad9e: 0x6c5ec220, 0x1ad9f: 0x6c7cf420,\n\t0x1ada0: 0x6d37ee20, 0x1ada1: 0x6cef0620, 0x1ada2: 0x6ccc5220, 0x1ada3: 0x6d06cc20,\n\t0x1ada4: 0x6c59ba20, 0x1ada5: 0x6c344a20, 0x1ada6: 0x6ca82620, 0x1ada7: 0x6d079020,\n\t0x1ada8: 0x6c89b420, 0x1ada9: 0x6d232c20, 0x1adaa: 0x6cca9e20, 0x1adab: 0x6c1aae20,\n\t0x1adac: 0x6cbbe020, 0x1adad: 0x6d0e6a20, 0x1adae: 0x6c27dc20, 0x1adaf: 0x6cae4a20,\n\t0x1adb0: 0x6c116820, 0x1adb1: 0x6c83d020, 0x1adb2: 0x6d1d7a20, 0x1adb3: 0x6d2bd620,\n\t0x1adb4: 0x6cee7c20, 0x1adb5: 0x6c9e6c20, 0x1adb6: 0x6d1c6220, 0x1adb7: 0x6cae3220,\n\t0x1adb8: 0x6c103820, 0x1adb9: 0x6c7c7420, 0x1adba: 0x6cf88420, 0x1adbb: 0x6d232e20,\n\t0x1adbc: 0x6c6ac420, 0x1adbd: 0x6c912820, 0x1adbe: 0x6c7a9620, 0x1adbf: 0x6d2a8220,\n\t// Block 0x6b7, offset 0x1adc0\n\t0x1adc0: 0x6c56a220, 0x1adc1: 0x6ce33c20, 0x1adc2: 0x6d110420, 0x1adc3: 0x6c51ca20,\n\t0x1adc4: 0x6c000e20, 0x1adc5: 0x6d054220, 0x1adc6: 0x6cbabe20, 0x1adc7: 0x6ccb2e20,\n\t0x1adc8: 0x6d1d8a20, 0x1adc9: 0x6cdabe20, 0x1adca: 0x6c53a620, 0x1adcb: 0x6d00b220,\n\t0x1adcc: 0x6c00a220, 0x1adcd: 0x6cdd2420, 0x1adce: 0x6c96f020, 0x1adcf: 0x6c139620,\n\t0x1add0: 0x6c4d6c20, 0x1add1: 0x6c780420, 0x1add2: 0x6c264c20, 0x1add3: 0x6cca7e20,\n\t0x1add4: 0x6c187220, 0x1add5: 0x6cc81820, 0x1add6: 0x6cd9aa20, 0x1add7: 0x6cebdc20,\n\t0x1add8: 0x6c5ee420, 0x1add9: 0x6cad1c20, 0x1adda: 0x6cf36e20, 0x1addb: 0x6cba1020,\n\t0x1addc: 0x6cd39820, 0x1addd: 0x6c440020, 0x1adde: 0x6d3e3220, 0x1addf: 0x6c6a0a20,\n\t0x1ade0: 0x6c960c20, 0x1ade1: 0x6cf22820, 0x1ade2: 0x6cec3420, 0x1ade3: 0x6cd8c820,\n\t0x1ade4: 0x6c1ab420, 0x1ade5: 0x6c4fca20, 0x1ade6: 0x6cddd820,\n\t0x1ade8: 0x6c4d1620, 0x1ade9: 0x6cdd7020, 0x1adea: 0x6cbd7e20, 0x1adeb: 0x6ca83820,\n\t0x1adec: 0x6c50a020, 0x1aded: 0x6d347020, 0x1adee: 0x6cc9e220, 0x1adef: 0x6ca2c620,\n\t0x1adf0: 0x6c448a20, 0x1adf1: 0x6ca2e420, 0x1adf2: 0x6c2cb820, 0x1adf3: 0x6c002c20,\n\t0x1adf4: 0x6cbb6220, 0x1adf5: 0x6ce6f620, 0x1adf6: 0x6c09c220, 0x1adf7: 0x6c024a20,\n\t0x1adf8: 0x6c024c20, 0x1adf9: 0x6c880c20, 0x1adfa: 0x6d417420, 0x1adfb: 0x6d300020,\n\t0x1adfc: 0x6ca12420, 0x1adfd: 0x6cda4620, 0x1adfe: 0x6cda2020, 0x1adff: 0x6ce06820,\n\t// Block 0x6b8, offset 0x1ae00\n\t0x1ae00: 0x6c2b7820, 0x1ae01: 0x6cb50820, 0x1ae02: 0x6c69aa20, 0x1ae03: 0x6c1cd020,\n\t0x1ae04: 0x6c685a20, 0x1ae05: 0x6c765620, 0x1ae06: 0x6ce0a020, 0x1ae07: 0x6cccf820,\n\t0x1ae08: 0x6c127820, 0x1ae09: 0x6c637620, 0x1ae0a: 0x6c004620, 0x1ae0b: 0x6cfee620,\n\t0x1ae0c: 0x6cb1b420, 0x1ae0d: 0x6c912a20, 0x1ae0e: 0x6c40c020, 0x1ae0f: 0x6c47aa20,\n\t0x1ae10: 0x6cfee820, 0x1ae11: 0x6c54e220, 0x1ae12: 0x6c5bf220, 0x1ae13: 0x6c4c2c20,\n\t0x1ae14: 0x6cab8220, 0x1ae15: 0x6cfabc20, 0x1ae16: 0x6d2ad820, 0x1ae17: 0x6c16b420,\n\t0x1ae18: 0x6d05b820, 0x1ae19: 0x6cb32e20, 0x1ae1a: 0x6c2a5c20, 0x1ae1b: 0x6c96f420,\n\t0x1ae1c: 0x6c96ca20, 0x1ae1d: 0x6c557820, 0x1ae1e: 0x6c836c20, 0x1ae1f: 0x6c317220,\n\t0x1ae20: 0x6c40c220, 0x1ae21: 0x6ce0c420, 0x1ae22: 0x6d12ae20, 0x1ae23: 0x6c07fe20,\n\t0x1ae24: 0x6d1bcc20, 0x1ae25: 0x6cc9f020, 0x1ae26: 0x6c69ac20, 0x1ae27: 0x6c9d6420,\n\t0x1ae28: 0x6cfffc20, 0x1ae29: 0x6c571220, 0x1ae2a: 0x6c971620, 0x1ae2b: 0x6cc48020,\n\t0x1ae2c: 0x6c1fc420, 0x1ae2d: 0x6cae7e20, 0x1ae2e: 0x6c816420, 0x1ae2f: 0x6d000420,\n\t0x1ae30: 0x6c5f1020, 0x1ae31: 0x6d3a7c20, 0x1ae32: 0x6c177020, 0x1ae33: 0x6c7d0820,\n\t0x1ae34: 0x6d419820, 0x1ae35: 0x6cfefe20, 0x1ae36: 0x6cd80c20, 0x1ae37: 0x6c4fdc20,\n\t0x1ae38: 0x6c3f7e20, 0x1ae39: 0x6c8a0020, 0x1ae3a: 0x6cbbe820, 0x1ae3b: 0x6cf68e20,\n\t0x1ae3c: 0x6c1f6a20, 0x1ae3d: 0x6c15d020, 0x1ae3e: 0x6c28a420, 0x1ae3f: 0x6c521e20,\n\t// Block 0x6b9, offset 0x1ae40\n\t0x1ae40: 0x6d0aa020, 0x1ae41: 0x6c35b620, 0x1ae42: 0x6d420a20, 0x1ae43: 0x6c385420,\n\t0x1ae44: 0x6c1acc20, 0x1ae45: 0x6c5ae220, 0x1ae46: 0x6d297220, 0x1ae47: 0x6c207420,\n\t0x1ae48: 0x6c245220, 0x1ae49: 0x6c289c20, 0x1ae4a: 0x6d23ba20, 0x1ae4b: 0x6cea2420,\n\t0x1ae4c: 0x6c134a20, 0x1ae4d: 0x6c69b620, 0x1ae4e: 0x6d126220, 0x1ae4f: 0x6cf69020,\n\t0x1ae50: 0x6cb7be20, 0x1ae51: 0x6c4fd020, 0x1ae52: 0x6c882e20, 0x1ae53: 0x6d05ca20,\n\t0x1ae54: 0x6c2aa420, 0x1ae55: 0x6c5ae820, 0x1ae56: 0x6d1a8c20, 0x1ae57: 0x6cb40c20,\n\t0x1ae58: 0x6c73b220, 0x1ae59: 0x6cbd9220, 0x1ae5a: 0x6d0a2e20, 0x1ae5b: 0x6ca85a20,\n\t0x1ae5c: 0x6c912c20, 0x1ae5d: 0x6cd80e20, 0x1ae5e: 0x6d0dd420, 0x1ae5f: 0x6d1d4820,\n\t0x1ae60: 0x6c265e20, 0x1ae61: 0x6d2d9420, 0x1ae62: 0x6cab2620, 0x1ae63: 0x6d394e20,\n\t0x1ae64: 0x6c6d4820, 0x1ae65: 0x6ca9c420, 0x1ae66: 0x6c5c2620, 0x1ae67: 0x6d01f420,\n\t0x1ae68: 0x6cb7ce20, 0x1ae69: 0x6c36a620, 0x1ae6a: 0x6d2a8e20, 0x1ae6b: 0x6d140e20,\n\t0x1ae6c: 0x6cd3d620, 0x1ae6d: 0x6c69c220, 0x1ae6e: 0x6d263020, 0x1ae6f: 0x6c003420,\n\t0x1ae70: 0x6d1dac20, 0x1ae71: 0x6c74b420, 0x1ae72: 0x6c7b3820, 0x1ae73: 0x6d228a20,\n\t0x1ae74: 0x6cae3420, 0x1ae75: 0x6c2a2820, 0x1ae76: 0x6c40c820, 0x1ae77: 0x6c528e20,\n\t0x1ae78: 0x6c33aa20, 0x1ae79: 0x6c290220, 0x1ae7a: 0x6d036420, 0x1ae7b: 0x6cc9cc20,\n\t0x1ae7c: 0x6caf8e20, 0x1ae7d: 0x6cb07220, 0x1ae7e: 0x6d1a0e20, 0x1ae7f: 0x6d41a020,\n\t// Block 0x6ba, offset 0x1ae80\n\t0x1ae80: 0x6ca92020, 0x1ae81: 0x6c2b9620, 0x1ae82: 0x6c807820, 0x1ae83: 0x6cddfa20,\n\t0x1ae84: 0x6c5d5e20, 0x1ae85: 0x6cc7cc20, 0x1ae86: 0x6c4fac20, 0x1ae87: 0x6cfa4820,\n\t0x1ae88: 0x6d135220, 0x1ae89: 0x6c343820, 0x1ae8a: 0x6cb0be20, 0x1ae8b: 0x6c1de020,\n\t0x1ae8c: 0x6c629020, 0x1ae8d: 0x6c6d5620, 0x1ae8e: 0x6c4fec20, 0x1ae8f: 0x6ce42820,\n\t0x1ae90: 0x6c16ca20, 0x1ae91: 0x6d0ac220, 0x1ae92: 0x6c99c620, 0x1ae93: 0x6c10d820,\n\t0x1ae94: 0x6ce43820, 0x1ae95: 0x6c91e420, 0x1ae96: 0x6c5c6420, 0x1ae97: 0x6c0f8820,\n\t0x1ae98: 0x6d1eba20, 0x1ae99: 0x6ca88620, 0x1ae9a: 0x6d1a9e20, 0x1ae9b: 0x6c56d620,\n\t0x1ae9c: 0x6c99ca20, 0x1ae9d: 0x6c52d220, 0x1ae9e: 0x6d30a820, 0x1ae9f: 0x6c846c20,\n\t0x1aea0: 0x6c8eb220, 0x1aea1: 0x6c4d8e20, 0x1aea2: 0x6ca45620, 0x1aea3: 0x6cff2e20,\n\t0x1aea4: 0x6ca08220, 0x1aea5: 0x6d0ee620, 0x1aea6: 0x6c86e820, 0x1aea7: 0x6c916820,\n\t0x1aea8: 0x6c8fba20, 0x1aea9: 0x6ca08c20, 0x1aeaa: 0x6c28dc20, 0x1aeab: 0x6c193a20,\n\t0x1aeac: 0x6cb21e20, 0x1aead: 0x6cb07c20, 0x1aeae: 0x6cfe5c20, 0x1aeaf: 0x6c5e2420,\n\t0x1aeb0: 0x6ca08e20, 0x1aeb1: 0x6cf91e20, 0x1aeb2: 0x6c34c220, 0x1aeb3: 0x6c7ab220,\n\t0x1aeb4: 0x6d0ce820, 0x1aeb5: 0x6c154e20, 0x1aeb6: 0x6d1c1820, 0x1aeb7: 0x6cc50420,\n\t0x1aeb8: 0x6c2d3020, 0x1aeb9: 0x6c7ede20, 0x1aeba: 0x6cded620, 0x1aebb: 0x6cff4c20,\n\t0x1aebc: 0x6c74fc20, 0x1aebd: 0x6c21e420, 0x1aebe: 0x6c583c20, 0x1aebf: 0x6c5e3c20,\n\t// Block 0x6bb, offset 0x1aec0\n\t0x1aec0: 0x6d3bfe20, 0x1aec1: 0x6ca8aa20, 0x1aec2: 0x6cff4e20, 0x1aec3: 0x6c10ee20,\n\t0x1aec4: 0x6c84a420, 0x1aec5: 0x6c161620, 0x1aec6: 0x6c14a820, 0x1aec7: 0x6c876020,\n\t0x1aec8: 0x6d194020, 0x1aec9: 0x6c953620, 0x1aeca: 0x6ca45e20, 0x1aecb: 0x6d28dc20,\n\t0x1aecc: 0x6cda6e20, 0x1aecd: 0x6cf82420, 0x1aece: 0x6d2b7e20, 0x1aecf: 0x6c654e20,\n\t0x1aed0: 0x6d28de20, 0x1aed1: 0x6d3a8e20, 0x1aed2: 0x6c800620, 0x1aed3: 0x6ca8c220,\n\t0x1aed4: 0x6ca45220, 0x1aed5: 0x6c806220, 0x1aed6: 0x6c8f6420, 0x1aed7: 0x6ceed620,\n\t0x1aed8: 0x6c5b1220, 0x1aed9: 0x6d199c20, 0x1aeda: 0x6cbff020, 0x1aedb: 0x6cd87420,\n\t0x1aedc: 0x6ca8e220, 0x1aedd: 0x6c656220, 0x1aede: 0x6c5b1420, 0x1aedf: 0x6d031420,\n\t0x1aee0: 0x6d199e20, 0x1aee1: 0x6ca3dc20, 0x1aee2: 0x6ce94420, 0x1aee3: 0x6ce94620,\n\t0x1aee4: 0x6c33d620, 0x1aee5: 0x6c777c20, 0x1aee6: 0x6d24c620, 0x1aee7: 0x6c6ef420,\n\t0x1aee8: 0x6cb0ec20, 0x1aee9: 0x6d277c20, 0x1aeea: 0x6c22f620, 0x1aeeb: 0x6c551c20,\n\t0x1aeec: 0x6c5b1820, 0x1aeed: 0x6d253a20, 0x1aeee: 0x6c354a20, 0x1aeef: 0x6c4c5620,\n\t0x1aef0: 0x6c7dca20, 0x1aef1: 0x6c22f820, 0x1aef2: 0x6ce6ee20, 0x1aef3: 0x6ce88420,\n\t0x1aef4: 0x6ceedc20, 0x1aef5: 0x6c94d820, 0x1aef6: 0x6c4c5a20, 0x1aef7: 0x6cc43020,\n\t0x1aef8: 0x6cc64020, 0x1aef9: 0x6c8c9e20, 0x1aefa: 0x6c47fe20, 0x1aefb: 0x6c4c5c20,\n\t0x1aefc: 0x6cdf0020, 0x1aefd: 0x6c4c5e20, 0x1aefe: 0x6ce88820, 0x1aeff: 0x6d202020,\n\t// Block 0x6bc, offset 0x1af00\n\t0x1af00: 0x6c4c6220, 0x1af01: 0x6d1a4220, 0x1af02: 0x6c5d2020, 0x1af03: 0x6cb48620,\n\t0x1af04: 0x6d223820, 0x1af05: 0x6c4dee20, 0x1af06: 0x6d255020, 0x1af07: 0x6c94ea20,\n\t0x1af08: 0x6cc29620, 0x1af09: 0x6d224820, 0x1af0a: 0x6cbe3e20, 0x1af0b: 0x6c4c6620,\n\t0x1af0c: 0x6c1ffa20, 0x1af0d: 0x6cef0820, 0x1af0e: 0x6d256020, 0x1af0f: 0x6cc29a20,\n\t0x1af10: 0x6c7a4020, 0x1af11: 0x6c400a20, 0x1af12: 0x6d257420, 0x1af13: 0x6d257620,\n\t0x1af14: 0x6d0bbc20, 0x1af15: 0x6ce8b620, 0x1af16: 0x6ce8d420, 0x1af17: 0x6ce8d620,\n\t0x1af18: 0x6ce95020, 0x1af19: 0x6c94b820, 0x1af1a: 0x6c5c0c20, 0x1af1b: 0x6d188220,\n\t0x1af1c: 0x6c589220, 0x1af1d: 0x6c944a20, 0x1af1e: 0x6c946e20, 0x1af1f: 0x6ce91020,\n\t0x1af20: 0x6d0b6620, 0x1af21: 0x6ce91220, 0x1af22: 0x6ce6aa20, 0x1af23: 0x6cd15220,\n\t0x1af24: 0x6cb48020, 0x1af25: 0x6c920c20, 0x1af26: 0x6c7b5020, 0x1af27: 0x6d0ac620,\n\t0x1af28: 0x6d292820, 0x1af29: 0x6ceeda20, 0x1af2a: 0x6c436620, 0x1af2b: 0x6d22be20,\n\t0x1af2c: 0x6cf34020, 0x1af2d: 0x6c4a3420, 0x1af2e: 0x6cb04820, 0x1af2f: 0x6d145020,\n\t0x1af30: 0x6c2a8a20, 0x1af31: 0x6cb89220, 0x1af32: 0x6cb89420, 0x1af33: 0x6d320e20,\n\t0x1af34: 0x6d3d1a20, 0x1af35: 0x6c295220, 0x1af36: 0x6cb83e20, 0x1af37: 0x6cfa6220,\n\t0x1af38: 0x6ccdf620, 0x1af39: 0x6c7bd820, 0x1af3a: 0x6c16e220, 0x1af3b: 0x6cb56e20,\n\t0x1af3c: 0x6ca7f220, 0x1af3d: 0x6ca0c220, 0x1af3e: 0x6c5e7620, 0x1af3f: 0x6c639820,\n\t// Block 0x6bd, offset 0x1af40\n\t0x1af40: 0x6d34dc20, 0x1af41: 0x6d34de20, 0x1af42: 0x6c04b420, 0x1af43: 0x6d098e20,\n\t0x1af44: 0x6d167a20, 0x1af45: 0x6cbdc620, 0x1af46: 0x6c99d020, 0x1af47: 0x6c755620,\n\t0x1af48: 0x6cc6f220, 0x1af49: 0x6cea3c20, 0x1af4a: 0x6c39e820, 0x1af4b: 0x6c07a420,\n\t0x1af4c: 0x6c07a620, 0x1af4d: 0x6cdf8820, 0x1af4e: 0x6c76be20, 0x1af4f: 0x6c580a20,\n\t0x1af50: 0x6d427620, 0x1af51: 0x6c792620, 0x1af52: 0x6c091820, 0x1af53: 0x6c6e0a20,\n\t0x1af54: 0x6c2c1220, 0x1af55: 0x6c6d8620, 0x1af56: 0x6c617c20, 0x1af57: 0x6c7b0c20,\n\t0x1af58: 0x6c2bcc20, 0x1af59: 0x6c6d8820, 0x1af5a: 0x6c646220, 0x1af5b: 0x6cdfca20,\n\t0x1af5c: 0x6c857e20, 0x1af5d: 0x6c03a620, 0x1af5e: 0x6cf4a420, 0x1af5f: 0x6c3b5020,\n\t0x1af60: 0x6d3c7a20, 0x1af61: 0x6cb2f620, 0x1af62: 0x6c04e220, 0x1af63: 0x6ce0bc20,\n\t0x1af64: 0x6c7d4a20, 0x1af65: 0x6cc0da20, 0x1af66: 0x6ce05220, 0x1af67: 0x6d339420,\n\t0x1af68: 0x6ceaea20, 0x1af69: 0x6c417020, 0x1af6a: 0x6cb27620, 0x1af6b: 0x6c2d3a20,\n\t0x1af6c: 0x6c48a820, 0x1af6d: 0x6ca5ba20, 0x1af6e: 0x6cdf1420, 0x1af6f: 0x6caf3020,\n\t0x1af70: 0x6c6ed620, 0x1af71: 0x6d100020, 0x1af72: 0x6c3d0a20, 0x1af73: 0x6c02c420,\n\t0x1af74: 0x6c921820, 0x1af75: 0x6cbf9c20, 0x1af76: 0x6ca22620, 0x1af77: 0x6c785420,\n\t0x1af78: 0x6c469220, 0x1af79: 0x6d094020, 0x1af7a: 0x6c036220, 0x1af7b: 0x6c1b0420,\n\t0x1af7c: 0x6c180020, 0x1af7d: 0x6c8ca020, 0x1af7e: 0x6d3aaa20, 0x1af7f: 0x6c3fb020,\n\t// Block 0x6be, offset 0x1af80\n\t0x1af80: 0x6c549a20, 0x1af81: 0x6d358420, 0x1af82: 0x6c20be20, 0x1af83: 0x6c7e3a20,\n\t0x1af84: 0x6c902e20, 0x1af85: 0x6c903020, 0x1af86: 0x6c913820, 0x1af87: 0x6c02c620,\n\t0x1af88: 0x6c272e20, 0x1af89: 0x6cad4820, 0x1af8a: 0x6c9fe220, 0x1af8b: 0x6d03ca20,\n\t0x1af8c: 0x6c305620, 0x1af8d: 0x6c619e20, 0x1af8e: 0x6c51ba20, 0x1af8f: 0x6c93ce20,\n\t0x1af90: 0x6c222820, 0x1af91: 0x6c1b8220, 0x1af92: 0x6c82ba20, 0x1af93: 0x6c40e420,\n\t0x1af94: 0x6d19aa20, 0x1af95: 0x6c546220, 0x1af96: 0x6c32f420, 0x1af97: 0x6d2f9c20,\n\t0x1af98: 0x6c3e0820, 0x1af99: 0x6c49dc20, 0x1af9a: 0x6d10d420, 0x1af9b: 0x6c347820,\n\t0x1af9c: 0x6c347a20, 0x1af9d: 0x6c4ad020, 0x1af9e: 0x6c13ca20, 0x1af9f: 0x6d0f8e20,\n\t0x1afa0: 0x6d1a3820, 0x1afa1: 0x6c37fe20, 0x1afa2: 0x6c469a20, 0x1afa3: 0x6d254420,\n\t0x1afa4: 0x6c2e6a20, 0x1afa5: 0x6d007620, 0x1afa6: 0x6c78fa20, 0x1afa7: 0x6cce3220,\n\t0x1afa8: 0x6cd43e20, 0x1afa9: 0x6c35ec20, 0x1afaa: 0x6c0e4020, 0x1afab: 0x6c2d4020,\n\t0x1afac: 0x6c530c20, 0x1afad: 0x6d0ad820, 0x1afae: 0x6c7ad620, 0x1afaf: 0x6c26f820,\n\t0x1afb0: 0x6c762020, 0x1afb1: 0x6c295a20, 0x1afb2: 0x6c764a20, 0x1afb3: 0x6c4f9e20,\n\t0x1afb4: 0x6ca4dc20, 0x1afb5: 0x6c017820, 0x1afb6: 0x6d036c20, 0x1afb7: 0x6cfc9c20,\n\t0x1afb8: 0x6d260820, 0x1afb9: 0x6c051a20, 0x1afba: 0x6c3d5a20, 0x1afbb: 0x6c03ae20,\n\t0x1afbc: 0x6d172020, 0x1afbd: 0x6d1b4220, 0x1afbe: 0x6c4e9220, 0x1afbf: 0x6d06a020,\n\t// Block 0x6bf, offset 0x1afc0\n\t0x1afc0: 0x6c20c420, 0x1afc1: 0x6cbd6220, 0x1afc2: 0x6c44f420, 0x1afc3: 0x6c001c20,\n\t0x1afc4: 0x6c081620, 0x1afc5: 0x6c39aa20, 0x1afc6: 0x6cc3a820, 0x1afc7: 0x6d1e2020,\n\t0x1afc8: 0x6c75a020, 0x1afc9: 0x6c633e20, 0x1afca: 0x6c2c2a20, 0x1afcb: 0x6c96fa20,\n\t0x1afcc: 0x6c811420, 0x1afcd: 0x6c731820, 0x1afce: 0x6c19c620, 0x1afcf: 0x6ccccc20,\n\t0x1afd0: 0x6c6c3c20, 0x1afd1: 0x6d303020, 0x1afd2: 0x6c8ae420, 0x1afd3: 0x6c8ae620,\n\t0x1afd4: 0x6c107e20, 0x1afd5: 0x6c19d820, 0x1afd6: 0x6c57d820, 0x1afd7: 0x6c108020,\n\t0x1afd8: 0x6cd25a20, 0x1afd9: 0x6d099420, 0x1afda: 0x6c4c1820, 0x1afdb: 0x6c6eda20,\n\t0x1afdc: 0x6d12a820, 0x1afdd: 0x6ca76020, 0x1afde: 0x6c2bee20, 0x1afdf: 0x6d230420,\n\t0x1afe0: 0x6c109220, 0x1afe1: 0x6d0ae820, 0x1afe2: 0x6cc2d420, 0x1afe3: 0x6cdc3420,\n\t0x1afe4: 0x6cafdc20, 0x1afe5: 0x6cbe4020, 0x1afe6: 0x6cecfe20, 0x1afe7: 0x6c723820,\n\t0x1afe8: 0x6c951420, 0x1afe9: 0x6d329220, 0x1afea: 0x6c796e20, 0x1afeb: 0x6c1d3820,\n\t0x1afec: 0x6c2fee20, 0x1afed: 0x6c275a20, 0x1afee: 0x6ce09220, 0x1afef: 0x6c018020,\n\t0x1aff0: 0x6c114220, 0x1aff1: 0x6c1f2e20, 0x1aff2: 0x6c081820, 0x1aff3: 0x6c76ce20,\n\t0x1aff4: 0x6d344c20, 0x1aff5: 0x6c348420, 0x1aff6: 0x6d175220, 0x1aff7: 0x6d344e20,\n\t0x1aff8: 0x6d175420, 0x1aff9: 0x6cadd020, 0x1affa: 0x6c5eb420, 0x1affb: 0x6d3cdc20,\n\t0x1affc: 0x6cb5b820, 0x1affd: 0x6ccaee20, 0x1affe: 0x6c723a20, 0x1afff: 0x6ca5d420,\n\t// Block 0x6c0, offset 0x1b000\n\t0x1b000: 0x6c7a3a20, 0x1b001: 0x6c78a020, 0x1b002: 0x6ce0ec20, 0x1b003: 0x6c7d5020,\n\t0x1b004: 0x6ca69620, 0x1b005: 0x6c648220, 0x1b006: 0x6c32fa20, 0x1b007: 0x6c6c8e20,\n\t0x1b008: 0x6c427620, 0x1b009: 0x6d230620, 0x1b00a: 0x6c360c20, 0x1b00b: 0x6cae9820,\n\t0x1b00c: 0x6c480820, 0x1b00d: 0x6ce92220, 0x1b00e: 0x6c839420, 0x1b00f: 0x6c39ea20,\n\t0x1b010: 0x6d0b2420, 0x1b011: 0x6cba4c20, 0x1b012: 0x6c7ddc20, 0x1b013: 0x6c01b620,\n\t0x1b014: 0x6cd0ca20, 0x1b015: 0x6c34e620, 0x1b016: 0x6ca4f220, 0x1b017: 0x6ce85c20,\n\t0x1b018: 0x6c19fa20, 0x1b019: 0x6d19da20, 0x1b01a: 0x6c5cea20, 0x1b01b: 0x6c099420,\n\t0x1b01c: 0x6c88f220, 0x1b01d: 0x6c4c1c20, 0x1b01e: 0x6c2e9a20, 0x1b01f: 0x6d3bc420,\n\t0x1b020: 0x6c547020, 0x1b021: 0x6c05fa20, 0x1b022: 0x6c05fc20, 0x1b023: 0x6d211420,\n\t0x1b024: 0x6c2b2e20, 0x1b025: 0x6c98e220, 0x1b026: 0x6c6a0c20, 0x1b027: 0x6cc83c20,\n\t0x1b028: 0x6d12ec20, 0x1b029: 0x6c452e20, 0x1b02a: 0x6c76aa20, 0x1b02b: 0x6d3f8020,\n\t0x1b02c: 0x6d211620, 0x1b02d: 0x6c59bc20, 0x1b02e: 0x6c362c20, 0x1b02f: 0x6d10f620,\n\t0x1b030: 0x6d0e6c20, 0x1b031: 0x6c064c20, 0x1b032: 0x6c223620, 0x1b033: 0x6c99f620,\n\t0x1b034: 0x6c16ec20, 0x1b035: 0x6c321420, 0x1b036: 0x6ceb1c20, 0x1b037: 0x6d1b5020,\n\t0x1b038: 0x6c3ca620, 0x1b039: 0x6d382820, 0x1b03a: 0x6c6be820, 0x1b03b: 0x6c6c4420,\n\t0x1b03c: 0x6c528820, 0x1b03d: 0x6c428620, 0x1b03e: 0x6c210620, 0x1b03f: 0x6c658e20,\n\t// Block 0x6c1, offset 0x1b040\n\t0x1b040: 0x6cb2ec20, 0x1b041: 0x6c836a20, 0x1b042: 0x6cfe3220, 0x1b043: 0x6c599220,\n\t0x1b044: 0x6c837620, 0x1b045: 0x6c32c020, 0x1b046: 0x6cec8e20, 0x1b047: 0x6d079220,\n\t0x1b048: 0x6c61fe20, 0x1b049: 0x6c604a20, 0x1b04a: 0x6c7b2420, 0x1b04b: 0x6d1c7c20,\n\t0x1b04c: 0x6cddee20, 0x1b04d: 0x6c1a1620, 0x1b04e: 0x6d1e4220, 0x1b04f: 0x6c765c20,\n\t0x1b050: 0x6cdac020, 0x1b051: 0x6cdac220, 0x1b052: 0x6cd26e20, 0x1b053: 0x6c9d4e20,\n\t0x1b054: 0x6cde0820, 0x1b055: 0x6cf24e20, 0x1b056: 0x6c1a1820, 0x1b057: 0x6ce8b820,\n\t0x1b058: 0x6ce0fe20, 0x1b059: 0x6cc3c820, 0x1b05a: 0x6d37f420, 0x1b05b: 0x6c862a20,\n\t0x1b05c: 0x6d37f620, 0x1b05d: 0x6c057620, 0x1b05e: 0x6cc9c620, 0x1b05f: 0x6d2a0620,\n\t0x1b060: 0x6c330020, 0x1b061: 0x6ce4a820, 0x1b062: 0x6cf4f820, 0x1b063: 0x6d335020,\n\t0x1b064: 0x6d099c20, 0x1b065: 0x6c440420, 0x1b066: 0x6d324020, 0x1b067: 0x6c00a420,\n\t0x1b068: 0x6c459020, 0x1b069: 0x6d0ca620, 0x1b06a: 0x6c76da20, 0x1b06b: 0x6ce4aa20,\n\t0x1b06c: 0x6d257820, 0x1b06d: 0x6cf14e20, 0x1b06e: 0x6d01be20, 0x1b06f: 0x6c8f3220,\n\t0x1b070: 0x6c4d8c20, 0x1b071: 0x6c810220, 0x1b072: 0x6c16b620, 0x1b073: 0x6caea820,\n\t0x1b074: 0x6c084820, 0x1b075: 0x6c18da20, 0x1b076: 0x6c927820, 0x1b077: 0x6c91c620,\n\t0x1b078: 0x6cab3c20, 0x1b079: 0x6cba6220, 0x1b07a: 0x6c9a1620, 0x1b07b: 0x6ca12620,\n\t0x1b07c: 0x6d3b8220, 0x1b07d: 0x6cd6d420, 0x1b07e: 0x6cd52e20, 0x1b07f: 0x6c90e820,\n\t// Block 0x6c2, offset 0x1b080\n\t0x1b080: 0x6c1b4620, 0x1b081: 0x6c97e220, 0x1b082: 0x6c0c0620, 0x1b083: 0x6c6e9420,\n\t0x1b084: 0x6c130020, 0x1b085: 0x6cd5ee20, 0x1b086: 0x6d367a20, 0x1b087: 0x6d2ec020,\n\t0x1b088: 0x6c770a20, 0x1b089: 0x6d1d9620, 0x1b08a: 0x6c2d6e20, 0x1b08b: 0x6c190820,\n\t0x1b08c: 0x6d347c20, 0x1b08d: 0x6cf8ac20, 0x1b08e: 0x6c4c2420, 0x1b08f: 0x6cbb4620,\n\t0x1b090: 0x6c6d2220, 0x1b091: 0x6c2c7a20, 0x1b092: 0x6cce0a20, 0x1b093: 0x6ca29020,\n\t0x1b094: 0x6c24d220, 0x1b095: 0x6d0e9220, 0x1b096: 0x6cde1020, 0x1b097: 0x6d2b8220,\n\t0x1b098: 0x6cb9ac20, 0x1b099: 0x6cbb1020, 0x1b09a: 0x6c895e20, 0x1b09b: 0x6cf14220,\n\t0x1b09c: 0x6d3c9a20, 0x1b09d: 0x6cbb9820, 0x1b09e: 0x6d2b8620, 0x1b09f: 0x6d05ba20,\n\t0x1b0a0: 0x6ccd9a20, 0x1b0a1: 0x6ccd9c20, 0x1b0a2: 0x6c038e20, 0x1b0a3: 0x6cb44820,\n\t0x1b0a4: 0x6c7b3220, 0x1b0a5: 0x6c303220, 0x1b0a6: 0x6c38b020, 0x1b0a7: 0x6cc3e820,\n\t0x1b0a8: 0x6ca16020, 0x1b0a9: 0x6c33a020, 0x1b0aa: 0x6c33a220, 0x1b0ab: 0x6d41ea20,\n\t0x1b0ac: 0x6c2c7c20, 0x1b0ad: 0x6cd17220, 0x1b0ae: 0x6c350820, 0x1b0af: 0x6c350e20,\n\t0x1b0b0: 0x6cdffc20, 0x1b0b1: 0x6c2ae020, 0x1b0b2: 0x6ca21820, 0x1b0b3: 0x6c3b8420,\n\t0x1b0b4: 0x6c59d820, 0x1b0b5: 0x6cdffe20, 0x1b0b6: 0x6c26fe20, 0x1b0b7: 0x6d12fa20,\n\t0x1b0b8: 0x6d3b5220, 0x1b0b9: 0x6c673a20, 0x1b0ba: 0x6c02e420, 0x1b0bb: 0x6cbb1e20,\n\t0x1b0bc: 0x6c5f2c20, 0x1b0bd: 0x6cbba220, 0x1b0be: 0x6c790a20, 0x1b0bf: 0x6d188420,\n\t// Block 0x6c3, offset 0x1b0c0\n\t0x1b0c0: 0x6cb01a20, 0x1b0c1: 0x6c0a4420, 0x1b0c2: 0x6c2d7c20, 0x1b0c3: 0x6c677820,\n\t0x1b0c4: 0x6d12b420, 0x1b0c5: 0x6d1dae20, 0x1b0c6: 0x6d091620, 0x1b0c7: 0x6ce00c20,\n\t0x1b0c8: 0x6c803820, 0x1b0c9: 0x6c728820, 0x1b0ca: 0x6c581420, 0x1b0cb: 0x6c298e20,\n\t0x1b0cc: 0x6cc50220, 0x1b0cd: 0x6cba8020, 0x1b0ce: 0x6d09ae20, 0x1b0cf: 0x6cfd1820,\n\t0x1b0d0: 0x6cf81620, 0x1b0d1: 0x6c51ee20, 0x1b0d2: 0x6c00c620, 0x1b0d3: 0x6d0b0020,\n\t0x1b0d4: 0x6c29ee20, 0x1b0d5: 0x6c4fee20, 0x1b0d6: 0x6cc84a20, 0x1b0d7: 0x6c6d8220,\n\t0x1b0d8: 0x6c82e220, 0x1b0d9: 0x6c7c0620, 0x1b0da: 0x6c916a20, 0x1b0db: 0x6d0cea20,\n\t0x1b0dc: 0x6ce03020, 0x1b0dd: 0x6cf03820, 0x1b0de: 0x6c581820, 0x1b0df: 0x6c903e20,\n\t0x1b0e0: 0x6c904020, 0x1b0e1: 0x6cc8ec20, 0x1b0e2: 0x6c86ea20, 0x1b0e3: 0x6c8bfe20,\n\t0x1b0e4: 0x6cc50620, 0x1b0e5: 0x6c165c20, 0x1b0e6: 0x6d09c420, 0x1b0e7: 0x6d0d0c20,\n\t0x1b0e8: 0x6c829620, 0x1b0e9: 0x6c03da20, 0x1b0ea: 0x6ceca620, 0x1b0eb: 0x6cd2e220,\n\t0x1b0ec: 0x6cc56020, 0x1b0ed: 0x6cca6220, 0x1b0ee: 0x6d3c2c20, 0x1b0ef: 0x6d3c2e20,\n\t0x1b0f0: 0x6cd0dc20, 0x1b0f1: 0x6d13c620, 0x1b0f2: 0x6c972420, 0x1b0f3: 0x6c784a20,\n\t0x1b0f4: 0x6d3aba20, 0x1b0f5: 0x6d3c3620, 0x1b0f6: 0x6c553020, 0x1b0f7: 0x6c554020,\n\t0x1b0f8: 0x6c7da620, 0x1b0f9: 0x6d13ee20, 0x1b0fa: 0x6c555420, 0x1b0fb: 0x6d06d020,\n\t0x1b0fc: 0x6c7db220, 0x1b0fd: 0x6cd46e20, 0x1b0fe: 0x6c989420, 0x1b0ff: 0x6d41ec20,\n\t// Block 0x6c4, offset 0x1b100\n\t0x1b100: 0x6cd47020, 0x1b101: 0x6d141220, 0x1b102: 0x6d34ca20, 0x1b103: 0x6c474e20,\n\t0x1b104: 0x6c1f0220, 0x1b105: 0x6c67d220, 0x1b106: 0x6c3c9c20, 0x1b107: 0x6c06e020,\n\t0x1b108: 0x6d2d5820, 0x1b109: 0x6c0b8420, 0x1b10a: 0x6cdba620, 0x1b10b: 0x6cc42e20,\n\t0x1b10c: 0x6c8ca220, 0x1b10d: 0x6c3fc020, 0x1b10e: 0x6c261420, 0x1b10f: 0x6cfa3220,\n\t0x1b110: 0x6d049a20, 0x1b111: 0x6d02a020, 0x1b112: 0x6ca4cc20, 0x1b113: 0x6cfa5a20,\n\t0x1b114: 0x6c7cb420, 0x1b115: 0x6cf55a20, 0x1b116: 0x6cec6820, 0x1b117: 0x6d25f820,\n\t0x1b118: 0x6c992020, 0x1b119: 0x6cda7c20, 0x1b11a: 0x6c341620, 0x1b11b: 0x6c341820,\n\t0x1b11c: 0x6d12ca20, 0x1b11d: 0x6cbe6c20, 0x1b11e: 0x6cec6e20, 0x1b11f: 0x6c46a220,\n\t0x1b120: 0x6c46a420, 0x1b121: 0x6cb78820, 0x1b122: 0x6c9c0420, 0x1b123: 0x6c9c0820,\n\t0x1b124: 0x6d1a8020, 0x1b125: 0x6c5d9420, 0x1b126: 0x6c190c20, 0x1b127: 0x6c26e420,\n\t0x1b128: 0x6d2b3020, 0x1b129: 0x6ce45420, 0x1b12a: 0x6cdf5a20, 0x1b12b: 0x6c40a620,\n\t0x1b12c: 0x6c48e220, 0x1b12d: 0x6d108020, 0x1b12e: 0x6d0f4020, 0x1b12f: 0x6c4f4620,\n\t0x1b130: 0x6c42fa20, 0x1b131: 0x6cd18e20, 0x1b132: 0x6ce1aa20, 0x1b133: 0x6cdf5c20,\n\t0x1b134: 0x6ce7e420, 0x1b135: 0x6d0d3420, 0x1b136: 0x6c08b020, 0x1b137: 0x6d145220,\n\t0x1b138: 0x6c7ab820, 0x1b139: 0x6c631c20, 0x1b13a: 0x6c343a20, 0x1b13b: 0x6c577c20,\n\t0x1b13c: 0x6c7bce20, 0x1b13d: 0x6d27d620, 0x1b13e: 0x6c632020, 0x1b13f: 0x6c031820,\n\t// Block 0x6c5, offset 0x1b140\n\t0x1b140: 0x6c370e20, 0x1b141: 0x6c87ec20, 0x1b142: 0x6c58ee20, 0x1b143: 0x6c2b1220,\n\t0x1b144: 0x6d0d4620, 0x1b145: 0x6cad7e20, 0x1b146: 0x6c733c20, 0x1b147: 0x6cb57c20,\n\t0x1b148: 0x6ca3ac20, 0x1b149: 0x6c3cd820, 0x1b14a: 0x6d007820, 0x1b14b: 0x6c3bcc20,\n\t0x1b14c: 0x6c2d0820, 0x1b14d: 0x6d107820, 0x1b14e: 0x6c7c5e20, 0x1b14f: 0x6d408620,\n\t0x1b150: 0x6c58f820, 0x1b151: 0x6cb75220, 0x1b152: 0x6c762620, 0x1b153: 0x6d2bc820,\n\t0x1b154: 0x6c077c20, 0x1b155: 0x6d16e020, 0x1b156: 0x6c679e20, 0x1b157: 0x6ce26220,\n\t0x1b158: 0x6d29fe20, 0x1b159: 0x6c079820, 0x1b15a: 0x6cf5b420, 0x1b15b: 0x6c5a5020,\n\t0x1b15c: 0x6c3a5020, 0x1b15d: 0x6c2dc020, 0x1b15e: 0x6d0a8620, 0x1b15f: 0x6c07e020,\n\t0x1b160: 0x6c2d5620, 0x1b161: 0x6c02d020, 0x1b162: 0x6cceea20, 0x1b163: 0x6cf24c20,\n\t0x1b164: 0x6c4d0220, 0x1b165: 0x6c02d220, 0x1b166: 0x6cf4fa20, 0x1b167: 0x6c02d420,\n\t0x1b168: 0x6c67ac20, 0x1b169: 0x6c881c20, 0x1b16a: 0x6c345a20, 0x1b16b: 0x6d275e20,\n\t0x1b16c: 0x6c67ae20, 0x1b16d: 0x6cd3c420, 0x1b16e: 0x6c3be620, 0x1b16f: 0x6c5df620,\n\t0x1b170: 0x6c0a8620, 0x1b171: 0x6c944c20, 0x1b172: 0x6c34c620, 0x1b173: 0x6caa6e20,\n\t0x1b174: 0x6caa3a20, 0x1b175: 0x6c2f6820, 0x1b176: 0x6ca38e20, 0x1b177: 0x6cb89620,\n\t0x1b178: 0x6c645c20, 0x1b179: 0x6cddde20, 0x1b17a: 0x6c6fa220, 0x1b17b: 0x6caa8e20,\n\t0x1b17c: 0x6c142820, 0x1b17d: 0x6c500620, 0x1b17e: 0x6cfa7020, 0x1b17f: 0x6c391a20,\n\t// Block 0x6c6, offset 0x1b180\n\t0x1b180: 0x6c611a20, 0x1b181: 0x6cd76e20, 0x1b182: 0x6cc78a20, 0x1b183: 0x6c39f020,\n\t0x1b184: 0x6cee4420, 0x1b185: 0x6c52ec20, 0x1b186: 0x6d3c0620, 0x1b187: 0x6c3fa620,\n\t0x1b188: 0x6c965c20, 0x1b189: 0x6c27b420, 0x1b18a: 0x6cc5be20, 0x1b18b: 0x6c3d3a20,\n\t0x1b18c: 0x6c6e4820, 0x1b18d: 0x6d0c5620, 0x1b18e: 0x6c4d5420, 0x1b18f: 0x6cf1fc20,\n\t0x1b190: 0x6d378e20, 0x1b191: 0x6cabb020, 0x1b192: 0x6c323220, 0x1b193: 0x6c617e20,\n\t0x1b194: 0x6c792820, 0x1b195: 0x6d381220, 0x1b196: 0x6d108a20, 0x1b197: 0x6c6cd420,\n\t0x1b198: 0x6d277e20, 0x1b199: 0x6c9eaa20, 0x1b19a: 0x6c3d1e20, 0x1b19b: 0x6c1ca420,\n\t0x1b19c: 0x6d267a20, 0x1b19d: 0x6d3c0a20, 0x1b19e: 0x6ca96220, 0x1b19f: 0x6d0e3a20,\n\t0x1b1a0: 0x6ca30620, 0x1b1a1: 0x6d02a820, 0x1b1a2: 0x6c3b5220, 0x1b1a3: 0x6c08ba20,\n\t0x1b1a4: 0x6d20ae20, 0x1b1a5: 0x6ceb6e20, 0x1b1a6: 0x6c3c1820, 0x1b1a7: 0x6ced7220,\n\t0x1b1a8: 0x6c39a220, 0x1b1a9: 0x6cf41e20, 0x1b1aa: 0x6d22cc20, 0x1b1ab: 0x6c4a3620,\n\t0x1b1ac: 0x6c323a20, 0x1b1ad: 0x6c036420, 0x1b1ae: 0x6ca5b420, 0x1b1af: 0x6d38cc20,\n\t0x1b1b0: 0x6d3d2c20, 0x1b1b1: 0x6d2f5620, 0x1b1b2: 0x6c267c20, 0x1b1b3: 0x6ca39820,\n\t0x1b1b4: 0x6d25fe20, 0x1b1b5: 0x6ce80820, 0x1b1b6: 0x6cfb2a20, 0x1b1b7: 0x6d343c20,\n\t0x1b1b8: 0x6c353020, 0x1b1b9: 0x6c9a7420, 0x1b1ba: 0x6ca0c620, 0x1b1bb: 0x6cb4d020,\n\t0x1b1bc: 0x6c092a20, 0x1b1bd: 0x6ccfaa20, 0x1b1be: 0x6cbc9420, 0x1b1bf: 0x6c353220,\n\t// Block 0x6c7, offset 0x1b1c0\n\t0x1b1c0: 0x6c50c420, 0x1b1c1: 0x6d062c20, 0x1b1c2: 0x6c37f820, 0x1b1c3: 0x6d328420,\n\t0x1b1c4: 0x6c9f2820, 0x1b1c5: 0x6c04e620, 0x1b1c6: 0x6ca22820, 0x1b1c7: 0x6c3d3e20,\n\t0x1b1c8: 0x6c8ca420, 0x1b1c9: 0x6d3ee220, 0x1b1ca: 0x6d3ee420, 0x1b1cb: 0x6cd2b420,\n\t0x1b1cc: 0x6cc4ac20, 0x1b1cd: 0x6cccc020, 0x1b1ce: 0x6d0f4620, 0x1b1cf: 0x6c975c20,\n\t0x1b1d0: 0x6c6c1620, 0x1b1d1: 0x6c46ee20, 0x1b1d2: 0x6cd88020, 0x1b1d3: 0x6d041420,\n\t0x1b1d4: 0x6cef8e20, 0x1b1d5: 0x6d3e0c20, 0x1b1d6: 0x6c71f620, 0x1b1d7: 0x6cccc220,\n\t0x1b1d8: 0x6cb1e820, 0x1b1d9: 0x6cc5d420, 0x1b1da: 0x6d10d620, 0x1b1db: 0x6c305820,\n\t0x1b1dc: 0x6c674c20, 0x1b1dd: 0x6cd4b020, 0x1b1de: 0x6c5ff020, 0x1b1df: 0x6c40e620,\n\t0x1b1e0: 0x6cfe1c20, 0x1b1e1: 0x6c572a20, 0x1b1e2: 0x6c72da20, 0x1b1e3: 0x6c682c20,\n\t0x1b1e4: 0x6c469c20, 0x1b1e5: 0x6c81a220, 0x1b1e6: 0x6c647420, 0x1b1e7: 0x6c647620,\n\t0x1b1e8: 0x6d148c20, 0x1b1e9: 0x6ca75c20, 0x1b1ea: 0x6d344220, 0x1b1eb: 0x6c5e9820,\n\t0x1b1ec: 0x6c5ea220, 0x1b1ed: 0x6cfc8a20, 0x1b1ee: 0x6c525620, 0x1b1ef: 0x6c49de20,\n\t0x1b1f0: 0x6c756020, 0x1b1f1: 0x6c7ac020, 0x1b1f2: 0x6d0e4420, 0x1b1f3: 0x6ca02c20,\n\t0x1b1f4: 0x6c8ad020, 0x1b1f5: 0x6cae0a20, 0x1b1f6: 0x6c35ee20, 0x1b1f7: 0x6d202220,\n\t0x1b1f8: 0x6d0c6e20, 0x1b1f9: 0x6c143420, 0x1b1fa: 0x6ccfb820, 0x1b1fb: 0x6d19ae20,\n\t0x1b1fc: 0x6cd24e20, 0x1b1fd: 0x6c4ad220, 0x1b1fe: 0x6cc2be20, 0x1b1ff: 0x6d3e0e20,\n\t// Block 0x6c8, offset 0x1b200\n\t0x1b200: 0x6cd90820, 0x1b201: 0x6cee6820, 0x1b202: 0x6c530e20, 0x1b203: 0x6cec0420,\n\t0x1b204: 0x6c907e20, 0x1b205: 0x6d0b8420, 0x1b206: 0x6cc52020, 0x1b207: 0x6c682e20,\n\t0x1b208: 0x6c942e20, 0x1b209: 0x6cb24e20, 0x1b20a: 0x6cfc9e20, 0x1b20b: 0x6cced020,\n\t0x1b20c: 0x6c850820, 0x1b20d: 0x6c19c820, 0x1b20e: 0x6d017a20, 0x1b20f: 0x6c984a20,\n\t0x1b210: 0x6c3d5c20, 0x1b211: 0x6cdd1020, 0x1b212: 0x6c99e420, 0x1b213: 0x6cef9c20,\n\t0x1b214: 0x6c789420, 0x1b215: 0x6c21ae20, 0x1b216: 0x6c21b020, 0x1b217: 0x6ce6b820,\n\t0x1b218: 0x6ca78820, 0x1b219: 0x6d03da20, 0x1b21a: 0x6ca3ee20, 0x1b21b: 0x6d20ec20,\n\t0x1b21c: 0x6ca31a20, 0x1b21d: 0x6cb3c820, 0x1b21e: 0x6ca56820, 0x1b21f: 0x6c72e220,\n\t0x1b220: 0x6ccfc620, 0x1b221: 0x6d35ae20, 0x1b222: 0x6c4df020, 0x1b223: 0x6c2c2c20,\n\t0x1b224: 0x6d3c1020, 0x1b225: 0x6c355220, 0x1b226: 0x6cb20820, 0x1b227: 0x6ce9f820,\n\t0x1b228: 0x6cfca020, 0x1b229: 0x6c9e1020, 0x1b22a: 0x6cf3ae20, 0x1b22b: 0x6d0c7020,\n\t0x1b22c: 0x6cf44220, 0x1b22d: 0x6c001e20, 0x1b22e: 0x6d0c7c20, 0x1b22f: 0x6d20ee20,\n\t0x1b230: 0x6cd89a20, 0x1b231: 0x6d20f020, 0x1b232: 0x6cebd020, 0x1b233: 0x6c87de20,\n\t0x1b234: 0x6cfb3a20, 0x1b235: 0x6c707c20, 0x1b236: 0x6cc24220, 0x1b237: 0x6d3c8020,\n\t0x1b238: 0x6cb4e220, 0x1b239: 0x6cfb4020, 0x1b23a: 0x6d3d4820, 0x1b23b: 0x6c2ff020,\n\t0x1b23c: 0x6c166420, 0x1b23d: 0x6c923420, 0x1b23e: 0x6c006420, 0x1b23f: 0x6c353620,\n\t// Block 0x6c9, offset 0x1b240\n\t0x1b240: 0x6c353820, 0x1b241: 0x6c908620, 0x1b242: 0x6c9dbe20, 0x1b243: 0x6c239020,\n\t0x1b244: 0x6cb3f020, 0x1b245: 0x6c710e20, 0x1b246: 0x6cb32820, 0x1b247: 0x6c10f620,\n\t0x1b248: 0x6c8cde20, 0x1b249: 0x6ced0020, 0x1b24a: 0x6c0c7220, 0x1b24b: 0x6cfeb020,\n\t0x1b24c: 0x6cd52620, 0x1b24d: 0x6cb6f020, 0x1b24e: 0x6c5ab020, 0x1b24f: 0x6c394020,\n\t0x1b250: 0x6cf2b220, 0x1b251: 0x6cc89820, 0x1b252: 0x6cdfda20, 0x1b253: 0x6c39f820,\n\t0x1b254: 0x6c3b0420, 0x1b255: 0x6c6aae20, 0x1b256: 0x6ce46020, 0x1b257: 0x6ca5d620,\n\t0x1b258: 0x6cc2d820, 0x1b259: 0x6c6e5820, 0x1b25a: 0x6c5cbc20, 0x1b25b: 0x6c6da420,\n\t0x1b25c: 0x6cb8d220, 0x1b25d: 0x6c2d4c20, 0x1b25e: 0x6d042620, 0x1b25f: 0x6c568a20,\n\t0x1b260: 0x6cec8820, 0x1b261: 0x6c7ef220, 0x1b262: 0x6c097420, 0x1b263: 0x6d19dc20,\n\t0x1b264: 0x6c1d6820, 0x1b265: 0x6ca52e20, 0x1b266: 0x6c3fe420, 0x1b267: 0x6c6e6e20,\n\t0x1b268: 0x6c94ec20, 0x1b269: 0x6c01b820, 0x1b26a: 0x6c7f9420, 0x1b26b: 0x6c7d5220,\n\t0x1b26c: 0x6d1a5220, 0x1b26d: 0x6d0b9220, 0x1b26e: 0x6c707e20, 0x1b26f: 0x6c85e820,\n\t0x1b270: 0x6c2d1220, 0x1b271: 0x6cfb4220, 0x1b272: 0x6c57da20, 0x1b273: 0x6c579220,\n\t0x1b274: 0x6d1bac20, 0x1b275: 0x6c14ee20, 0x1b276: 0x6cd05a20, 0x1b277: 0x6ce66e20,\n\t0x1b278: 0x6c296420, 0x1b279: 0x6d11ac20, 0x1b27a: 0x6cf4e620, 0x1b27b: 0x6ca44820,\n\t0x1b27c: 0x6c21b220, 0x1b27d: 0x6c641420, 0x1b27e: 0x6ce7d820, 0x1b27f: 0x6d06d220,\n\t// Block 0x6ca, offset 0x1b280\n\t0x1b280: 0x6d233020, 0x1b281: 0x6cef0a20, 0x1b282: 0x6c2c5420, 0x1b283: 0x6cc74820,\n\t0x1b284: 0x6c9a5620, 0x1b285: 0x6c27de20, 0x1b286: 0x6cc86220, 0x1b287: 0x6cbd2c20,\n\t0x1b288: 0x6c5ab220, 0x1b289: 0x6cf2ea20, 0x1b28a: 0x6cb99420, 0x1b28b: 0x6c210820,\n\t0x1b28c: 0x6c9e7420, 0x1b28d: 0x6c3fec20, 0x1b28e: 0x6c6b9620, 0x1b28f: 0x6c329820,\n\t0x1b290: 0x6d151420, 0x1b291: 0x6d382a20, 0x1b292: 0x6c99f820, 0x1b293: 0x6c59be20,\n\t0x1b294: 0x6c9dc220, 0x1b295: 0x6c013020, 0x1b296: 0x6d1bae20, 0x1b297: 0x6d079420,\n\t0x1b298: 0x6c6a0e20, 0x1b299: 0x6cee8220, 0x1b29a: 0x6c9a8e20, 0x1b29b: 0x6d261620,\n\t0x1b29c: 0x6d32c220, 0x1b29d: 0x6cbfae20, 0x1b29e: 0x6cd37a20, 0x1b29f: 0x6d01a820,\n\t0x1b2a0: 0x6ceb7c20, 0x1b2a1: 0x6c88f620, 0x1b2a2: 0x6c997820, 0x1b2a3: 0x6cc4c420,\n\t0x1b2a4: 0x6cd7e620, 0x1b2a5: 0x6cb0f220, 0x1b2a6: 0x6cf08e20, 0x1b2a7: 0x6cebd820,\n\t0x1b2a8: 0x6c6ff420, 0x1b2a9: 0x6c555620, 0x1b2aa: 0x6c02a620, 0x1b2ab: 0x6cbd1420,\n\t0x1b2ac: 0x6c05fe20, 0x1b2ad: 0x6d059220, 0x1b2ae: 0x6ce7da20, 0x1b2af: 0x6c4a6420,\n\t0x1b2b0: 0x6c1e8a20, 0x1b2b1: 0x6d110620, 0x1b2b2: 0x6cb09e20, 0x1b2b3: 0x6cf78420,\n\t0x1b2b4: 0x6d257a20, 0x1b2b5: 0x6d1d4020, 0x1b2b6: 0x6cc67020, 0x1b2b7: 0x6cc81a20,\n\t0x1b2b8: 0x6c1ab620, 0x1b2b9: 0x6c8e6620, 0x1b2ba: 0x6c9a5e20, 0x1b2bb: 0x6cac5c20,\n\t0x1b2bc: 0x6c02a820, 0x1b2bd: 0x6c966020, 0x1b2be: 0x6c46ae20, 0x1b2bf: 0x6c7cf620,\n\t// Block 0x6cb, offset 0x1b2c0\n\t0x1b2c0: 0x6cbd8020, 0x1b2c1: 0x6c644820, 0x1b2c2: 0x6ccae420, 0x1b2c3: 0x6d315e20,\n\t0x1b2c4: 0x6d257c20, 0x1b2c5: 0x6c6a1020, 0x1b2c6: 0x6cc68020, 0x1b2c7: 0x6ca00420,\n\t0x1b2c8: 0x6d1bc220, 0x1b2c9: 0x6c604c20, 0x1b2ca: 0x6cdac820, 0x1b2cb: 0x6ca79c20,\n\t0x1b2cc: 0x6cfb6c20, 0x1b2cd: 0x6ce1ce20, 0x1b2ce: 0x6cad0020, 0x1b2cf: 0x6c80b220,\n\t0x1b2d0: 0x6ca4fc20, 0x1b2d1: 0x6c05ca20, 0x1b2d2: 0x6c00a620, 0x1b2d3: 0x6cb0a020,\n\t0x1b2d4: 0x6cb20e20, 0x1b2d5: 0x6d182020, 0x1b2d6: 0x6cb17e20, 0x1b2d7: 0x6d238a20,\n\t0x1b2d8: 0x6c824220, 0x1b2d9: 0x6d081820, 0x1b2da: 0x6c975820, 0x1b2db: 0x6d140020,\n\t0x1b2dc: 0x6d2ec220, 0x1b2dd: 0x6c773820, 0x1b2de: 0x6d1d9820, 0x1b2df: 0x6ca6a820,\n\t0x1b2e0: 0x6c840e20, 0x1b2e1: 0x6c2b7a20, 0x1b2e2: 0x6c4a7820, 0x1b2e3: 0x6d0c1a20,\n\t0x1b2e4: 0x6c6c9c20, 0x1b2e5: 0x6d3b8420, 0x1b2e6: 0x6c16b820, 0x1b2e7: 0x6d2ada20,\n\t0x1b2e8: 0x6c4dac20, 0x1b2e9: 0x6ca59c20, 0x1b2ea: 0x6c81d820, 0x1b2eb: 0x6ca05c20,\n\t0x1b2ec: 0x6d300220, 0x1b2ed: 0x6c56ae20, 0x1b2ee: 0x6c56b020, 0x1b2ef: 0x6c02d620,\n\t0x1b2f0: 0x6ca59e20, 0x1b2f1: 0x6cbb1220, 0x1b2f2: 0x6c96f620, 0x1b2f3: 0x6cb1e420,\n\t0x1b2f4: 0x6c472a20, 0x1b2f5: 0x6cf46020, 0x1b2f6: 0x6cbbea20, 0x1b2f7: 0x6ceb8820,\n\t0x1b2f8: 0x6d2e1020, 0x1b2f9: 0x6c98f020, 0x1b2fa: 0x6cfb7820, 0x1b2fb: 0x6cfb7a20,\n\t0x1b2fc: 0x6ca14a20, 0x1b2fd: 0x6c8a0420, 0x1b2fe: 0x6c883020, 0x1b2ff: 0x6c57b820,\n\t// Block 0x6cc, offset 0x1b300\n\t0x1b300: 0x6c4a8420, 0x1b301: 0x6c2aa620, 0x1b302: 0x6d348c20, 0x1b303: 0x6d05ce20,\n\t0x1b304: 0x6d140a20, 0x1b305: 0x6c579c20, 0x1b306: 0x6cf69220, 0x1b307: 0x6c7d0a20,\n\t0x1b308: 0x6cc52820, 0x1b309: 0x6cf69420, 0x1b30a: 0x6d0ea020, 0x1b30b: 0x6c151820,\n\t0x1b30c: 0x6c686420, 0x1b30d: 0x6c9a6620, 0x1b30e: 0x6c396820, 0x1b30f: 0x6c385620,\n\t0x1b310: 0x6cfad420, 0x1b311: 0x6d188620, 0x1b312: 0x6c5c2a20, 0x1b313: 0x6c69c420,\n\t0x1b314: 0x6c405220, 0x1b315: 0x6cd3d820, 0x1b316: 0x6c0a4620, 0x1b317: 0x6ccda420,\n\t0x1b318: 0x6cdc5a20, 0x1b319: 0x6cbb2020, 0x1b31a: 0x6c88c820, 0x1b31b: 0x6c589420,\n\t0x1b31c: 0x6d02ec20, 0x1b31d: 0x6ca7aa20, 0x1b31e: 0x6c303420, 0x1b31f: 0x6d188820,\n\t0x1b320: 0x6c117020, 0x1b321: 0x6c00c820, 0x1b322: 0x6ca77820, 0x1b323: 0x6ca92220,\n\t0x1b324: 0x6c966420, 0x1b325: 0x6ce5ce20, 0x1b326: 0x6c1de220, 0x1b327: 0x6c6d5820,\n\t0x1b328: 0x6c226820, 0x1b329: 0x6d219e20, 0x1b32a: 0x6cb21620, 0x1b32b: 0x6cc6be20,\n\t0x1b32c: 0x6cc7ce20, 0x1b32d: 0x6ca3a820, 0x1b32e: 0x6d0c3220, 0x1b32f: 0x6cdf4620,\n\t0x1b330: 0x6d1bfc20, 0x1b331: 0x6c11b620, 0x1b332: 0x6ca7b220, 0x1b333: 0x6d26ea20,\n\t0x1b334: 0x6d1c9620, 0x1b335: 0x6c9dd620, 0x1b336: 0x6c0ae620, 0x1b337: 0x6c966620,\n\t0x1b338: 0x6cd08020, 0x1b339: 0x6d043e20, 0x1b33a: 0x6ca6d420, 0x1b33b: 0x6c31c820,\n\t0x1b33c: 0x6c8f2020, 0x1b33d: 0x6d251c20, 0x1b33e: 0x6c804820, 0x1b33f: 0x6d0ee820,\n\t// Block 0x6cd, offset 0x1b340\n\t0x1b340: 0x6cd6a820, 0x1b341: 0x6c8d8c20, 0x1b342: 0x6c696620, 0x1b343: 0x6ca77a20,\n\t0x1b344: 0x6c804c20, 0x1b345: 0x6cb94420, 0x1b346: 0x6d1c1a20, 0x1b347: 0x6cd6ae20,\n\t0x1b348: 0x6c5c9020, 0x1b349: 0x6cc32620, 0x1b34a: 0x6c9d0a20, 0x1b34b: 0x6c84b820,\n\t0x1b34c: 0x6c944e20, 0x1b34d: 0x6d0d0e20, 0x1b34e: 0x6d3a4020, 0x1b34f: 0x6c805820,\n\t0x1b350: 0x6d3f6820, 0x1b351: 0x6c6a5220, 0x1b352: 0x6c73c420, 0x1b353: 0x6c73c620,\n\t0x1b354: 0x6c799220, 0x1b355: 0x6d281220, 0x1b356: 0x6c965e20, 0x1b357: 0x6d3f2820,\n\t0x1b358: 0x6c25a020, 0x1b359: 0x6cdcca20, 0x1b35a: 0x6c3dd620, 0x1b35b: 0x6c06d620,\n\t0x1b35c: 0x6d3e0020, 0x1b35d: 0x6cffcc20, 0x1b35e: 0x6d031a20, 0x1b35f: 0x6c9bfe20,\n\t0x1b360: 0x6cd88c20, 0x1b361: 0x6cdf0220, 0x1b362: 0x6c05a420, 0x1b363: 0x6c619220,\n\t0x1b364: 0x6c46f020, 0x1b365: 0x6caa3c20, 0x1b366: 0x6d08f820, 0x1b367: 0x6d206a20,\n\t0x1b368: 0x6d3ba220, 0x1b369: 0x6c4d1e20, 0x1b36a: 0x6c943020, 0x1b36b: 0x6cdcd020,\n\t0x1b36c: 0x6ca48e20, 0x1b36d: 0x6c9ec420, 0x1b36e: 0x6c239220, 0x1b36f: 0x6cb8d420,\n\t0x1b370: 0x6cd52820, 0x1b371: 0x6c11f620, 0x1b372: 0x6d0aea20, 0x1b373: 0x6d3e3420,\n\t0x1b374: 0x6ca63e20, 0x1b375: 0x6c3d8820, 0x1b376: 0x6d3e4e20, 0x1b377: 0x6c841020,\n\t0x1b378: 0x6d091820, 0x1b379: 0x6c0ff620, 0x1b37a: 0x6cc7d020, 0x1b37b: 0x6ca38820,\n\t0x1b37c: 0x6ca89020, 0x1b37d: 0x6ca89220, 0x1b37e: 0x6d1c1c20, 0x1b37f: 0x6c945020,\n\t// Block 0x6ce, offset 0x1b380\n\t0x1b380: 0x6c9db620, 0x1b381: 0x6ca8f220, 0x1b382: 0x6cc6ee20, 0x1b383: 0x6cdddc20,\n\t0x1b384: 0x6c4ab820, 0x1b385: 0x6d2d1820, 0x1b386: 0x6cbef820, 0x1b387: 0x6d221620,\n\t0x1b388: 0x6cd43a20, 0x1b389: 0x6c011220, 0x1b38a: 0x6ce83820, 0x1b38b: 0x6cd97e20,\n\t0x1b38c: 0x6cecc020, 0x1b38d: 0x6cc78420, 0x1b38e: 0x6d118220, 0x1b38f: 0x6c52f220,\n\t0x1b390: 0x6d145e20, 0x1b391: 0x6c6e0c20, 0x1b392: 0x6d3cc820, 0x1b393: 0x6c9d2220,\n\t0x1b394: 0x6d3a5820, 0x1b395: 0x6c295620, 0x1b396: 0x6c530020, 0x1b397: 0x6d3f7020,\n\t0x1b398: 0x6c490420, 0x1b399: 0x6d38fe20, 0x1b39a: 0x6c2f9620, 0x1b39b: 0x6cecee20,\n\t0x1b39c: 0x6d198e20, 0x1b39d: 0x6c05e220, 0x1b39e: 0x6cd24220, 0x1b39f: 0x6cd24420,\n\t0x1b3a0: 0x6c1d3620, 0x1b3a1: 0x6cd04620, 0x1b3a2: 0x6c788c20, 0x1b3a3: 0x6d078220,\n\t0x1b3a4: 0x6cd32c20, 0x1b3a5: 0x6d202420, 0x1b3a6: 0x6c58fa20, 0x1b3a7: 0x6d14b820,\n\t0x1b3a8: 0x6ce5b820, 0x1b3a9: 0x6cd2be20, 0x1b3aa: 0x6cfc8c20, 0x1b3ab: 0x6c456e20,\n\t0x1b3ac: 0x6c19ca20, 0x1b3ad: 0x6cc44220, 0x1b3ae: 0x6c457a20, 0x1b3af: 0x6cfe9420,\n\t0x1b3b0: 0x6d291220, 0x1b3b1: 0x6d2cba20, 0x1b3b2: 0x6c05f020, 0x1b3b3: 0x6c4d5e20,\n\t0x1b3b4: 0x6d0e4e20, 0x1b3b5: 0x6cfe9620, 0x1b3b6: 0x6c634020, 0x1b3b7: 0x6cd05020,\n\t0x1b3b8: 0x6c18ae20, 0x1b3b9: 0x6cc66020, 0x1b3ba: 0x6c5a4c20, 0x1b3bb: 0x6c9d3020,\n\t0x1b3bc: 0x6c79e020, 0x1b3bd: 0x6c7b5220, 0x1b3be: 0x6c0d2e20, 0x1b3bf: 0x6cdaa020,\n\t// Block 0x6cf, offset 0x1b3c0\n\t0x1b3c0: 0x6c112420, 0x1b3c1: 0x6d296620, 0x1b3c2: 0x6c61de20, 0x1b3c3: 0x6d24da20,\n\t0x1b3c4: 0x6c61e020, 0x1b3c5: 0x6d1a5420, 0x1b3c6: 0x6c9d3620, 0x1b3c7: 0x6c79e620,\n\t0x1b3c8: 0x6cbe4220, 0x1b3c9: 0x6cc3b420, 0x1b3ca: 0x6d315620, 0x1b3cb: 0x6c668820,\n\t0x1b3cc: 0x6c3fee20, 0x1b3cd: 0x6ca90420, 0x1b3ce: 0x6c0e1e20, 0x1b3cf: 0x6c587420,\n\t0x1b3d0: 0x6c9a9020, 0x1b3d1: 0x6cbdd620, 0x1b3d2: 0x6c4e0c20, 0x1b3d3: 0x6d233220,\n\t0x1b3d4: 0x6cd26620, 0x1b3d5: 0x6ca90620, 0x1b3d6: 0x6c6d1020, 0x1b3d7: 0x6ca90a20,\n\t0x1b3d8: 0x6d365020, 0x1b3d9: 0x6d226820, 0x1b3da: 0x6c060220, 0x1b3db: 0x6c7b5620,\n\t0x1b3dc: 0x6ca90c20, 0x1b3dd: 0x6cbddc20, 0x1b3de: 0x6ca12820, 0x1b3df: 0x6c13f220,\n\t0x1b3e0: 0x6c726020, 0x1b3e1: 0x6c489c20, 0x1b3e2: 0x6cbde220, 0x1b3e3: 0x6c54e420,\n\t0x1b3e4: 0x6cf50a20, 0x1b3e5: 0x6c89f020, 0x1b3e6: 0x6cd27a20, 0x1b3e7: 0x6ca91020,\n\t0x1b3e8: 0x6d2d4620, 0x1b3e9: 0x6cd06820, 0x1b3ea: 0x6ceffc20, 0x1b3eb: 0x6d014820,\n\t0x1b3ec: 0x6c7b5820, 0x1b3ed: 0x6c5c0e20, 0x1b3ee: 0x6c8a0620, 0x1b3ef: 0x6c75e220,\n\t0x1b3f0: 0x6c589620, 0x1b3f1: 0x6d18c020, 0x1b3f2: 0x6d156a20, 0x1b3f3: 0x6c061c20,\n\t0x1b3f4: 0x6cbd4a20, 0x1b3f5: 0x6c1d4620, 0x1b3f6: 0x6c062020, 0x1b3f7: 0x6c3c7c20,\n\t0x1b3f8: 0x6c25b020, 0x1b3f9: 0x6c332c20, 0x1b3fa: 0x6cd87820, 0x1b3fb: 0x6d09d420,\n\t0x1b3fc: 0x6c29ce20, 0x1b3fd: 0x6c93ca20, 0x1b3fe: 0x6c333620, 0x1b3ff: 0x6cd45020,\n\t// Block 0x6d0, offset 0x1b400\n\t0x1b400: 0x6cb34a20, 0x1b401: 0x6c3c2420, 0x1b402: 0x6d3b7420, 0x1b403: 0x6c3d5e20,\n\t0x1b404: 0x6ccf3a20, 0x1b405: 0x6c789620, 0x1b406: 0x6c674e20, 0x1b407: 0x6c675c20,\n\t0x1b408: 0x6d3b7a20, 0x1b409: 0x6cf08420, 0x1b40a: 0x6d41e820, 0x1b40b: 0x6d0a0c20,\n\t0x1b40c: 0x6cd5d220, 0x1b40d: 0x6c335420, 0x1b40e: 0x6c29e820, 0x1b40f: 0x6cffa220,\n\t0x1b410: 0x6c6a5420, 0x1b411: 0x6cceac20, 0x1b412: 0x6c377e20, 0x1b413: 0x6c378020,\n\t0x1b414: 0x6c378220, 0x1b415: 0x6c40d020, 0x1b416: 0x6c645e20, 0x1b417: 0x6cd49a20,\n\t0x1b418: 0x6c189220, 0x1b419: 0x6cce4a20, 0x1b41a: 0x6cce4c20, 0x1b41b: 0x6ca1b420,\n\t0x1b41c: 0x6c40c620, 0x1b41d: 0x6c169e20, 0x1b41e: 0x6c8a9a20, 0x1b41f: 0x6cfc1020,\n\t0x1b420: 0x6cfc1220, 0x1b421: 0x6c7dde20, 0x1b422: 0x6d1edc20, 0x1b423: 0x6cedbc20,\n\t0x1b424: 0x6d1ede20, 0x1b425: 0x6c8a8c20, 0x1b426: 0x6c8a8e20, 0x1b427: 0x6d10ca20,\n\t0x1b428: 0x6c983020, 0x1b429: 0x6cedc620, 0x1b42a: 0x6cedc020, 0x1b42b: 0x6cedc220,\n\t0x1b42c: 0x6c40d420, 0x1b42d: 0x6d10cc20, 0x1b42e: 0x6c34d620, 0x1b42f: 0x6c7cec20,\n\t0x1b430: 0x6d37f020, 0x1b431: 0x6c6ff620, 0x1b432: 0x6c419c20, 0x1b433: 0x6c478820,\n\t0x1b434: 0x6c419e20, 0x1b435: 0x6ce9b420, 0x1b436: 0x6c41b620, 0x1b437: 0x6c41b820,\n\t0x1b438: 0x6cd18a20, 0x1b439: 0x6d1ac220, 0x1b43a: 0x6c1b7020, 0x1b43b: 0x6c779020,\n\t0x1b43c: 0x6ca5b620, 0x1b43d: 0x6c6c8020, 0x1b43e: 0x6cef8620, 0x1b43f: 0x6ca7d020,\n\t// Block 0x6d1, offset 0x1b440\n\t0x1b440: 0x6c70f020, 0x1b441: 0x6cb08620, 0x1b442: 0x6c134e20, 0x1b443: 0x6cf83c20,\n\t0x1b444: 0x6c086c20, 0x1b445: 0x6c705620, 0x1b446: 0x6c6bbe20, 0x1b447: 0x6ce48020,\n\t0x1b448: 0x6cc0dc20, 0x1b449: 0x6ce44c20, 0x1b44a: 0x6c6bc020, 0x1b44b: 0x6cf35620,\n\t0x1b44c: 0x6c2dfa20, 0x1b44d: 0x6cd1a220, 0x1b44e: 0x6cd2c020, 0x1b44f: 0x6cb28020,\n\t0x1b450: 0x6c5ea420, 0x1b451: 0x6d017c20, 0x1b452: 0x6d31c620, 0x1b453: 0x6d017e20,\n\t0x1b454: 0x6ca5ca20, 0x1b455: 0x6d2de020, 0x1b456: 0x6cf5ba20, 0x1b457: 0x6cef9e20,\n\t0x1b458: 0x6c97b420, 0x1b459: 0x6c353a20, 0x1b45a: 0x6c910620, 0x1b45b: 0x6cb29820,\n\t0x1b45c: 0x6ce44e20, 0x1b45d: 0x6c3aa420, 0x1b45e: 0x6cd55820, 0x1b45f: 0x6d01aa20,\n\t0x1b460: 0x6ce8a020, 0x1b461: 0x6c939a20, 0x1b462: 0x6c93a620, 0x1b463: 0x6cf7f820,\n\t0x1b464: 0x6c135420, 0x1b465: 0x6c93ae20, 0x1b466: 0x6c727820, 0x1b467: 0x6d01f620,\n\t0x1b468: 0x6c72a420, 0x1b469: 0x6c73ba20, 0x1b46a: 0x6c8a3020, 0x1b46b: 0x6c74e620,\n\t0x1b46c: 0x6cd58820, 0x1b46d: 0x6cf93a20, 0x1b46e: 0x6c17fa20, 0x1b46f: 0x6cea3620,\n\t0x1b470: 0x6ca67420, 0x1b471: 0x6cccb020, 0x1b472: 0x6cec4820, 0x1b473: 0x6cfa6c20,\n\t0x1b474: 0x6c856820, 0x1b475: 0x6c35c620, 0x1b476: 0x6c2a5420, 0x1b477: 0x6c5ca820,\n\t0x1b478: 0x6c8f6820, 0x1b479: 0x6d165c20, 0x1b47a: 0x6cb6ca20, 0x1b47b: 0x6cc5b020,\n\t0x1b47c: 0x6cf49e20, 0x1b47d: 0x6c4e8020, 0x1b47e: 0x6ccf9c20, 0x1b47f: 0x6d221820,\n\t// Block 0x6d2, offset 0x1b480\n\t0x1b480: 0x6c1e5220, 0x1b481: 0x6cdc1e20, 0x1b482: 0x6cb6cc20, 0x1b483: 0x6cc5b220,\n\t0x1b484: 0x6d267c20, 0x1b485: 0x6c04b820, 0x1b486: 0x6d118420, 0x1b487: 0x6c01f220,\n\t0x1b488: 0x6d0b0e20, 0x1b489: 0x6cf4a620, 0x1b48a: 0x6c6a6e20, 0x1b48b: 0x6c35cc20,\n\t0x1b48c: 0x6c5fc620, 0x1b48d: 0x6cb8a420, 0x1b48e: 0x6c3b5420, 0x1b48f: 0x6cecc420,\n\t0x1b490: 0x6cb57020, 0x1b491: 0x6c132820, 0x1b492: 0x6cb96a20, 0x1b493: 0x6cb57220,\n\t0x1b494: 0x6c142e20, 0x1b495: 0x6c6bb020, 0x1b496: 0x6cc0d020, 0x1b497: 0x6c429820,\n\t0x1b498: 0x6cfc7a20, 0x1b499: 0x6c02c020, 0x1b49a: 0x6c7f8a20, 0x1b49b: 0x6c29d020,\n\t0x1b49c: 0x6c031a20, 0x1b49d: 0x6d427c20, 0x1b49e: 0x6d427e20, 0x1b49f: 0x6d100220,\n\t0x1b4a0: 0x6c71f820, 0x1b4a1: 0x6c425c20, 0x1b4a2: 0x6c785820, 0x1b4a3: 0x6c466e20,\n\t0x1b4a4: 0x6d08fa20, 0x1b4a5: 0x6cb2fa20, 0x1b4a6: 0x6c858a20, 0x1b4a7: 0x6ce56e20,\n\t0x1b4a8: 0x6cc0e020, 0x1b4a9: 0x6d0c6220, 0x1b4aa: 0x6c3de420, 0x1b4ab: 0x6d052e20,\n\t0x1b4ac: 0x6c640020, 0x1b4ad: 0x6c8e0a20, 0x1b4ae: 0x6ceaec20, 0x1b4af: 0x6cafb220,\n\t0x1b4b0: 0x6c02c820, 0x1b4b1: 0x6c273020, 0x1b4b2: 0x6c7be020, 0x1b4b3: 0x6d268620,\n\t0x1b4b4: 0x6cc0e220, 0x1b4b5: 0x6c566220, 0x1b4b6: 0x6cb36620, 0x1b4b7: 0x6c9f2a20,\n\t0x1b4b8: 0x6c01a220, 0x1b4b9: 0x6ce57020, 0x1b4ba: 0x6c8ca620, 0x1b4bb: 0x6c1b0620,\n\t0x1b4bc: 0x6cb2ea20, 0x1b4bd: 0x6c2fde20, 0x1b4be: 0x6c4e8c20, 0x1b4bf: 0x6c7c3420,\n\t// Block 0x6d3, offset 0x1b4c0\n\t0x1b4c0: 0x6d053020, 0x1b4c1: 0x6c992a20, 0x1b4c2: 0x6ce71420, 0x1b4c3: 0x6d08fc20,\n\t0x1b4c4: 0x6d16ae20, 0x1b4c5: 0x6c0be220, 0x1b4c6: 0x6c50d220, 0x1b4c7: 0x6c032c20,\n\t0x1b4c8: 0x6c95e620, 0x1b4c9: 0x6c35f020, 0x1b4ca: 0x6c3fc220, 0x1b4cb: 0x6d09e420,\n\t0x1b4cc: 0x6c2e6c20, 0x1b4cd: 0x6c921e20, 0x1b4ce: 0x6c371e20, 0x1b4cf: 0x6c373c20,\n\t0x1b4d0: 0x6c40e820, 0x1b4d1: 0x6cc28c20, 0x1b4d2: 0x6c305a20, 0x1b4d3: 0x6d149420,\n\t0x1b4d4: 0x6ca22e20, 0x1b4d5: 0x6cd25020, 0x1b4d6: 0x6c011a20, 0x1b4d7: 0x6ceee820,\n\t0x1b4d8: 0x6c586220, 0x1b4d9: 0x6d359620, 0x1b4da: 0x6c9d2c20, 0x1b4db: 0x6c850220,\n\t0x1b4dc: 0x6c61a420, 0x1b4dd: 0x6ce72220, 0x1b4de: 0x6ceeea20, 0x1b4df: 0x6d202620,\n\t0x1b4e0: 0x6c483420, 0x1b4e1: 0x6cf99420, 0x1b4e2: 0x6c850420, 0x1b4e3: 0x6d10d820,\n\t0x1b4e4: 0x6c698620, 0x1b4e5: 0x6d329420, 0x1b4e6: 0x6c943220, 0x1b4e7: 0x6c683020,\n\t0x1b4e8: 0x6c355420, 0x1b4e9: 0x6c355620, 0x1b4ea: 0x6d22ee20, 0x1b4eb: 0x6d007a20,\n\t0x1b4ec: 0x6c100e20, 0x1b4ed: 0x6cbc3620, 0x1b4ee: 0x6cc43420, 0x1b4ef: 0x6c3c3220,\n\t0x1b4f0: 0x6c3c3420, 0x1b4f1: 0x6ca4a220, 0x1b4f2: 0x6c850a20, 0x1b4f3: 0x6d1f1420,\n\t0x1b4f4: 0x6cfca220, 0x1b4f5: 0x6c532820, 0x1b4f6: 0x6c29d220, 0x1b4f7: 0x6ccfc820,\n\t0x1b4f8: 0x6c19cc20, 0x1b4f9: 0x6ce88e20, 0x1b4fa: 0x6c44f620, 0x1b4fb: 0x6c75a220,\n\t0x1b4fc: 0x6c502620, 0x1b4fd: 0x6cf9a020, 0x1b4fe: 0x6d1a4620, 0x1b4ff: 0x6d223a20,\n\t// Block 0x6d4, offset 0x1b500\n\t0x1b500: 0x6c811620, 0x1b501: 0x6c770820, 0x1b502: 0x6c814e20, 0x1b503: 0x6c7ee820,\n\t0x1b504: 0x6cfbf220, 0x1b505: 0x6cc3aa20, 0x1b506: 0x6c797020, 0x1b507: 0x6c1d1020,\n\t0x1b508: 0x6c1d1220, 0x1b509: 0x6cde4620, 0x1b50a: 0x6c8bac20, 0x1b50b: 0x6c578a20,\n\t0x1b50c: 0x6c708420, 0x1b50d: 0x6c7ef420, 0x1b50e: 0x6cb5be20, 0x1b50f: 0x6c9f4420,\n\t0x1b510: 0x6c7d5420, 0x1b511: 0x6c7d5620, 0x1b512: 0x6d40b420, 0x1b513: 0x6c480a20,\n\t0x1b514: 0x6c24c820, 0x1b515: 0x6d0b2620, 0x1b516: 0x6d0b2820, 0x1b517: 0x6c429e20,\n\t0x1b518: 0x6c94ee20, 0x1b519: 0x6c94f020, 0x1b51a: 0x6c837420, 0x1b51b: 0x6c742020,\n\t0x1b51c: 0x6c342820, 0x1b51d: 0x6d32ac20, 0x1b51e: 0x6c4c1e20, 0x1b51f: 0x6d1a5620,\n\t0x1b520: 0x6c2ff220, 0x1b521: 0x6c4dfa20, 0x1b522: 0x6d32ae20, 0x1b523: 0x6cefac20,\n\t0x1b524: 0x6cff7e20, 0x1b525: 0x6cafde20, 0x1b526: 0x6d0bf220, 0x1b527: 0x6cd91420,\n\t0x1b528: 0x6c6ab220, 0x1b529: 0x6c07e220, 0x1b52a: 0x6d40b620, 0x1b52b: 0x6c7a3c20,\n\t0x1b52c: 0x6c2ff420, 0x1b52d: 0x6d2de420, 0x1b52e: 0x6c480c20, 0x1b52f: 0x6d1a5820,\n\t0x1b530: 0x6d3f6a20, 0x1b531: 0x6d2b4e20, 0x1b532: 0x6c59c020, 0x1b533: 0x6d211820,\n\t0x1b534: 0x6cec6220, 0x1b535: 0x6d0fb220, 0x1b536: 0x6c3c4a20, 0x1b537: 0x6cc05c20,\n\t0x1b538: 0x6d0fb420, 0x1b539: 0x6ce32020, 0x1b53a: 0x6d15ec20, 0x1b53b: 0x6d361e20,\n\t0x1b53c: 0x6cd37c20, 0x1b53d: 0x6d291620, 0x1b53e: 0x6d11ae20, 0x1b53f: 0x6c363020,\n\t// Block 0x6d5, offset 0x1b540\n\t0x1b540: 0x6d3af220, 0x1b541: 0x6c76ac20, 0x1b542: 0x6c93dc20, 0x1b543: 0x6d0d7a20,\n\t0x1b544: 0x6c9a5820, 0x1b545: 0x6c4e0e20, 0x1b546: 0x6c5ec820, 0x1b547: 0x6c5eca20,\n\t0x1b548: 0x6c591e20, 0x1b549: 0x6ce67020, 0x1b54a: 0x6cd16a20, 0x1b54b: 0x6c99fa20,\n\t0x1b54c: 0x6cba5220, 0x1b54d: 0x6cf4e820, 0x1b54e: 0x6d211a20, 0x1b54f: 0x6d3f8420,\n\t0x1b550: 0x6c7f9a20, 0x1b551: 0x6c786420, 0x1b552: 0x6d0c9220, 0x1b553: 0x6d0c9420,\n\t0x1b554: 0x6cefbc20, 0x1b555: 0x6d3f8620, 0x1b556: 0x6c13e020, 0x1b557: 0x6cdc3c20,\n\t0x1b558: 0x6cc67220, 0x1b559: 0x6c78ee20, 0x1b55a: 0x6cbd2e20, 0x1b55b: 0x6d211c20,\n\t0x1b55c: 0x6ce45220, 0x1b55d: 0x6c90e220, 0x1b55e: 0x6ce8ba20, 0x1b55f: 0x6c330420,\n\t0x1b560: 0x6cf64220, 0x1b561: 0x6cf25220, 0x1b562: 0x6c123020, 0x1b563: 0x6c296c20,\n\t0x1b564: 0x6cc68220, 0x1b565: 0x6c6ae020, 0x1b566: 0x6c765e20, 0x1b567: 0x6c8e6820,\n\t0x1b568: 0x6cf4fc20, 0x1b569: 0x6cd92420, 0x1b56a: 0x6cbb7c20, 0x1b56b: 0x6d3e3620,\n\t0x1b56c: 0x6cef0c20, 0x1b56d: 0x6c07f620, 0x1b56e: 0x6c2ccc20, 0x1b56f: 0x6c25da20,\n\t0x1b570: 0x6cba1220, 0x1b571: 0x6d1e4420, 0x1b572: 0x6ca83e20, 0x1b573: 0x6c25dc20,\n\t0x1b574: 0x6c614820, 0x1b575: 0x6cd41620, 0x1b576: 0x6cc93c20, 0x1b577: 0x6cd96820,\n\t0x1b578: 0x6d3fa020, 0x1b579: 0x6c67f420, 0x1b57a: 0x6c89f220, 0x1b57b: 0x6c773c20,\n\t0x1b57c: 0x6c15c620, 0x1b57d: 0x6c2ec820, 0x1b57e: 0x6c132420, 0x1b57f: 0x6c2f7820,\n\t// Block 0x6d6, offset 0x1b580\n\t0x1b580: 0x6ce86820, 0x1b581: 0x6c90ec20, 0x1b582: 0x6d2f3a20, 0x1b583: 0x6d2dfe20,\n\t0x1b584: 0x6d2e0020, 0x1b585: 0x6c024e20, 0x1b586: 0x6c127c20, 0x1b587: 0x6cc11e20,\n\t0x1b588: 0x6cbac820, 0x1b589: 0x6c24d620, 0x1b58a: 0x6d418e20, 0x1b58b: 0x6c29e220,\n\t0x1b58c: 0x6c29e420, 0x1b58d: 0x6cf79020, 0x1b58e: 0x6d238c20, 0x1b58f: 0x6cae2620,\n\t0x1b590: 0x6c8f9a20, 0x1b591: 0x6cfe4420, 0x1b592: 0x6c135620, 0x1b593: 0x6c0e8620,\n\t0x1b594: 0x6cbd3c20, 0x1b595: 0x6c686620, 0x1b596: 0x6d0dc620, 0x1b597: 0x6c816a20,\n\t0x1b598: 0x6d2e7420, 0x1b599: 0x6c8bcc20, 0x1b59a: 0x6c8a0820, 0x1b59b: 0x6c8a0a20,\n\t0x1b59c: 0x6c6c5020, 0x1b59d: 0x6c2ae220, 0x1b59e: 0x6c350a20, 0x1b59f: 0x6d41ee20,\n\t0x1b5a0: 0x6c69ba20, 0x1b5a1: 0x6c4b6220, 0x1b5a2: 0x6d113420, 0x1b5a3: 0x6c686820,\n\t0x1b5a4: 0x6d113620, 0x1b5a5: 0x6c748e20, 0x1b5a6: 0x6d2d9620, 0x1b5a7: 0x6d188a20,\n\t0x1b5a8: 0x6d091a20, 0x1b5a9: 0x6ca4be20, 0x1b5aa: 0x6d133820, 0x1b5ab: 0x6d133a20,\n\t0x1b5ac: 0x6d155a20, 0x1b5ad: 0x6ca87020, 0x1b5ae: 0x6cfc2a20, 0x1b5af: 0x6c608220,\n\t0x1b5b0: 0x6d020c20, 0x1b5b1: 0x6c786e20, 0x1b5b2: 0x6cf69820, 0x1b5b3: 0x6c2c9a20,\n\t0x1b5b4: 0x6c02e620, 0x1b5b5: 0x6d419c20, 0x1b5b6: 0x6cf14820, 0x1b5b7: 0x6d156c20,\n\t0x1b5b8: 0x6cc6c020, 0x1b5b9: 0x6c29f020, 0x1b5ba: 0x6c8e1420, 0x1b5bb: 0x6d28cc20,\n\t0x1b5bc: 0x6d228c20, 0x1b5bd: 0x6d26f220, 0x1b5be: 0x6d1b0c20, 0x1b5bf: 0x6cc83820,\n\t// Block 0x6d7, offset 0x1b5c0\n\t0x1b5c0: 0x6c6b5420, 0x1b5c1: 0x6c869c20, 0x1b5c2: 0x6c4a9820, 0x1b5c3: 0x6c8fbe20,\n\t0x1b5c4: 0x6c8fc020, 0x1b5c5: 0x6c2ce420, 0x1b5c6: 0x6cc6d620, 0x1b5c7: 0x6cf72a20,\n\t0x1b5c8: 0x6c718620, 0x1b5c9: 0x6c155020, 0x1b5ca: 0x6d1d2220, 0x1b5cb: 0x6c7c5420,\n\t0x1b5cc: 0x6d0cee20, 0x1b5cd: 0x6ceec820, 0x1b5ce: 0x6ca4d420, 0x1b5cf: 0x6cc32820,\n\t0x1b5d0: 0x6c17ac20, 0x1b5d1: 0x6c24a420, 0x1b5d2: 0x6c945220, 0x1b5d3: 0x6c2cf420,\n\t0x1b5d4: 0x6c2cf620, 0x1b5d5: 0x6ca8e020, 0x1b5d6: 0x6d0d1220, 0x1b5d7: 0x6d0d1020,\n\t0x1b5d8: 0x6d0e2020, 0x1b5d9: 0x6c7cbc20, 0x1b5da: 0x6d0e2220, 0x1b5db: 0x6c1fd620,\n\t0x1b5dc: 0x6c7b0820, 0x1b5dd: 0x6c1fd820, 0x1b5de: 0x6d385020, 0x1b5df: 0x6c597020,\n\t0x1b5e0: 0x6c6d8a20, 0x1b5e1: 0x6d09d820, 0x1b5e2: 0x6c175e20, 0x1b5e3: 0x6c176020,\n\t0x1b5e4: 0x6c8b2620, 0x1b5e5: 0x6c454a20, 0x1b5e6: 0x6d426020, 0x1b5e7: 0x6cbc1a20,\n\t0x1b5e8: 0x6c71e820, 0x1b5e9: 0x6c45ce20, 0x1b5ea: 0x6c71f220, 0x1b5eb: 0x6cf35220,\n\t0x1b5ec: 0x6cb4be20, 0x1b5ed: 0x6cb4c020, 0x1b5ee: 0x6c143620, 0x1b5ef: 0x6cc05e20,\n\t0x1b5f0: 0x6cc08220, 0x1b5f1: 0x6c610e20, 0x1b5f2: 0x6d15ac20, 0x1b5f3: 0x6cd87020,\n\t0x1b5f4: 0x6c03e620, 0x1b5f5: 0x6d338a20, 0x1b5f6: 0x6d2f5820, 0x1b5f7: 0x6cfe1e20,\n\t0x1b5f8: 0x6d14bc20, 0x1b5f9: 0x6c6c8820, 0x1b5fa: 0x6d0a6c20, 0x1b5fb: 0x6c734020,\n\t0x1b5fc: 0x6c033820, 0x1b5fd: 0x6d0a8c20, 0x1b5fe: 0x6c6c1a20, 0x1b5ff: 0x6c3dc620,\n\t// Block 0x6d8, offset 0x1b600\n\t0x1b600: 0x6d287e20, 0x1b601: 0x6c090220, 0x1b602: 0x6cd2f020, 0x1b603: 0x6c105820,\n\t0x1b604: 0x6c2f4620, 0x1b605: 0x6cd66220, 0x1b606: 0x6c384a20, 0x1b607: 0x6ca7ec20,\n\t0x1b608: 0x6cd19020, 0x1b609: 0x6c3b0e20, 0x1b60a: 0x6cabe420, 0x1b60b: 0x6d34e020,\n\t0x1b60c: 0x6cf57a20, 0x1b60d: 0x6c565420, 0x1b60e: 0x6c286420, 0x1b60f: 0x6ceede20,\n\t0x1b610: 0x6d2f2020, 0x1b611: 0x6ce16e20, 0x1b612: 0x6c273220, 0x1b613: 0x6ca0c820,\n\t0x1b614: 0x6cae0620, 0x1b615: 0x6cabe620, 0x1b616: 0x6ce5e820, 0x1b617: 0x6c0e4c20,\n\t0x1b618: 0x6c87f220, 0x1b619: 0x6d358620, 0x1b61a: 0x6d397620, 0x1b61b: 0x6c0eb420,\n\t0x1b61c: 0x6d358820, 0x1b61d: 0x6c2c2620, 0x1b61e: 0x6ca0de20, 0x1b61f: 0x6d16e220,\n\t0x1b620: 0x6d16e420, 0x1b621: 0x6cb28220, 0x1b622: 0x6cb84820, 0x1b623: 0x6c731420,\n\t0x1b624: 0x6cc79220, 0x1b625: 0x6cd66420, 0x1b626: 0x6c274020, 0x1b627: 0x6d334020,\n\t0x1b628: 0x6cd71420, 0x1b629: 0x6cbc3820, 0x1b62a: 0x6d313620, 0x1b62b: 0x6cd1b020,\n\t0x1b62c: 0x6cc44420, 0x1b62d: 0x6cf77020, 0x1b62e: 0x6c051c20, 0x1b62f: 0x6c275020,\n\t0x1b630: 0x6c4a4420, 0x1b631: 0x6c1d9420, 0x1b632: 0x6cb29a20, 0x1b633: 0x6d2f2c20,\n\t0x1b634: 0x6cca4a20, 0x1b635: 0x6cec8a20, 0x1b636: 0x6c275c20, 0x1b637: 0x6ceefc20,\n\t0x1b638: 0x6c16a420, 0x1b639: 0x6ccc4820, 0x1b63a: 0x6cb5c220, 0x1b63b: 0x6d2abe20,\n\t0x1b63c: 0x6c4c6820, 0x1b63d: 0x6c997a20, 0x1b63e: 0x6c321620, 0x1b63f: 0x6c540020,\n\t// Block 0x6d9, offset 0x1b640\n\t0x1b640: 0x6d334c20, 0x1b641: 0x6d059420, 0x1b642: 0x6c9d4420, 0x1b643: 0x6cef0e20,\n\t0x1b644: 0x6cf2ec20, 0x1b645: 0x6c3e7620, 0x1b646: 0x6d179620, 0x1b647: 0x6c052e20,\n\t0x1b648: 0x6cb2a420, 0x1b649: 0x6c2f3a20, 0x1b64a: 0x6c459220, 0x1b64b: 0x6cac5e20,\n\t0x1b64c: 0x6c5a5420, 0x1b64d: 0x6ce1d220, 0x1b64e: 0x6c9d5420, 0x1b64f: 0x6c644a20,\n\t0x1b650: 0x6ce2a020, 0x1b651: 0x6c5ad020, 0x1b652: 0x6d37c020, 0x1b653: 0x6cccfa20,\n\t0x1b654: 0x6c97e620, 0x1b655: 0x6ca29420, 0x1b656: 0x6c0c0820, 0x1b657: 0x6c4c7220,\n\t0x1b658: 0x6d2adc20, 0x1b659: 0x6ca29620, 0x1b65a: 0x6c053420, 0x1b65b: 0x6d2f3c20,\n\t0x1b65c: 0x6c6e2820, 0x1b65d: 0x6c15d220, 0x1b65e: 0x6c3ed620, 0x1b65f: 0x6d36a620,\n\t0x1b660: 0x6c54f420, 0x1b661: 0x6c385820, 0x1b662: 0x6c207620, 0x1b663: 0x6c09f220,\n\t0x1b664: 0x6c0ae220, 0x1b665: 0x6d2f4820, 0x1b666: 0x6c9d8420, 0x1b667: 0x6cbba420,\n\t0x1b668: 0x6c14d820, 0x1b669: 0x6c3b8620, 0x1b66a: 0x6c9b4820, 0x1b66b: 0x6c053e20,\n\t0x1b66c: 0x6c1de420, 0x1b66d: 0x6c9eee20, 0x1b66e: 0x6c1eb820, 0x1b66f: 0x6c6b3220,\n\t0x1b670: 0x6cfc3e20, 0x1b671: 0x6c7fe220, 0x1b672: 0x6c420a20, 0x1b673: 0x6cb26e20,\n\t0x1b674: 0x6ca6f220, 0x1b675: 0x6c646020, 0x1b676: 0x6c0e0420, 0x1b677: 0x6c0e0c20,\n\t0x1b678: 0x6d041620, 0x1b679: 0x6c422620, 0x1b67a: 0x6d107e20, 0x1b67b: 0x6c58ec20,\n\t0x1b67c: 0x6d200c20, 0x1b67d: 0x6d1e9a20, 0x1b67e: 0x6c613e20, 0x1b67f: 0x6c4a0220,\n\t// Block 0x6da, offset 0x1b680\n\t0x1b680: 0x6cb04220, 0x1b681: 0x6ce62420, 0x1b682: 0x6d2b3420, 0x1b683: 0x6c4a0420,\n\t0x1b684: 0x6d3c0820, 0x1b685: 0x6ca1b020, 0x1b686: 0x6cbec220, 0x1b687: 0x6c091c20,\n\t0x1b688: 0x6cbd5220, 0x1b689: 0x6c33d820, 0x1b68a: 0x6c206c20, 0x1b68b: 0x6c4ac220,\n\t0x1b68c: 0x6d0b4820, 0x1b68d: 0x6c043020, 0x1b68e: 0x6c6bb620, 0x1b68f: 0x6d067020,\n\t0x1b690: 0x6c913420, 0x1b691: 0x6cf42020, 0x1b692: 0x6d3c5420, 0x1b693: 0x6c7a8220,\n\t0x1b694: 0x6d1b9e20, 0x1b695: 0x6c2bd620, 0x1b696: 0x6cad4c20, 0x1b697: 0x6c2d3c20,\n\t0x1b698: 0x6d0ad020, 0x1b699: 0x6c9eac20, 0x1b69a: 0x6c44ba20, 0x1b69b: 0x6c22b820,\n\t0x1b69c: 0x6c3f3e20, 0x1b69d: 0x6ce71820, 0x1b69e: 0x6cacf220, 0x1b69f: 0x6c3a8220,\n\t0x1b6a0: 0x6cfdb420, 0x1b6a1: 0x6d15ce20, 0x1b6a2: 0x6d359820, 0x1b6a3: 0x6ce54e20,\n\t0x1b6a4: 0x6d359a20, 0x1b6a5: 0x6d04be20, 0x1b6a6: 0x6c324420, 0x1b6a7: 0x6d428e20,\n\t0x1b6a8: 0x6cfe9c20, 0x1b6a9: 0x6ce89020, 0x1b6aa: 0x6c4ae620, 0x1b6ab: 0x6c7a8820,\n\t0x1b6ac: 0x6c984e20, 0x1b6ad: 0x6ce66420, 0x1b6ae: 0x6d1fb620, 0x1b6af: 0x6c101020,\n\t0x1b6b0: 0x6c0e0e20, 0x1b6b1: 0x6c1a6e20, 0x1b6b2: 0x6c7ef620, 0x1b6b3: 0x6c097620,\n\t0x1b6b4: 0x6c601620, 0x1b6b5: 0x6c012620, 0x1b6b6: 0x6cd5c220, 0x1b6b7: 0x6c772c20,\n\t0x1b6b8: 0x6d1d8420, 0x1b6b9: 0x6ceb7820, 0x1b6ba: 0x6cd91620, 0x1b6bb: 0x6cd5c420,\n\t0x1b6bc: 0x6cbea620, 0x1b6bd: 0x6d233620, 0x1b6be: 0x6d224a20, 0x1b6bf: 0x6c9eb420,\n\t// Block 0x6db, offset 0x1b6c0\n\t0x1b6c0: 0x6cd9ac20, 0x1b6c1: 0x6c12e620, 0x1b6c2: 0x6cfd7220, 0x1b6c3: 0x6c3aaa20,\n\t0x1b6c4: 0x6c6ff820, 0x1b6c5: 0x6c365420, 0x1b6c6: 0x6c4a6620, 0x1b6c7: 0x6c8f3420,\n\t0x1b6c8: 0x6ccc5620, 0x1b6c9: 0x6c881020, 0x1b6ca: 0x6c80b420, 0x1b6cb: 0x6cd9ae20,\n\t0x1b6cc: 0x6d365220, 0x1b6cd: 0x6cb3f620, 0x1b6ce: 0x6cbeac20, 0x1b6cf: 0x6c700e20,\n\t0x1b6d0: 0x6c6ffa20, 0x1b6d1: 0x6c6c9e20, 0x1b6d2: 0x6c025020, 0x1b6d3: 0x6c7e0420,\n\t0x1b6d4: 0x6c90a020, 0x1b6d5: 0x6d1b5e20, 0x1b6d6: 0x6c8a9e20, 0x1b6d7: 0x6c277e20,\n\t0x1b6d8: 0x6c927c20, 0x1b6d9: 0x6d182220, 0x1b6da: 0x6c1ea420, 0x1b6db: 0x6c151a20,\n\t0x1b6dc: 0x6ce8d820, 0x1b6dd: 0x6cd81220, 0x1b6de: 0x6d02e420, 0x1b6df: 0x6c9eb820,\n\t0x1b6e0: 0x6c16f420, 0x1b6e1: 0x6cf46220, 0x1b6e2: 0x6c3ac420, 0x1b6e3: 0x6c4a0820,\n\t0x1b6e4: 0x6c7aa620, 0x1b6e5: 0x6c7b3c20, 0x1b6e6: 0x6c0a4820, 0x1b6e7: 0x6cbb2220,\n\t0x1b6e8: 0x6d021020, 0x1b6e9: 0x6c8c2c20, 0x1b6ea: 0x6c8c2e20, 0x1b6eb: 0x6c8a3220,\n\t0x1b6ec: 0x6c916e20, 0x1b6ed: 0x6c631220, 0x1b6ee: 0x6d1d2420, 0x1b6ef: 0x6cfafa20,\n\t0x1b6f0: 0x6ce65420, 0x1b6f1: 0x6d1dd820, 0x1b6f2: 0x6c84bc20, 0x1b6f3: 0x6ce65820,\n\t0x1b6f4: 0x6d1ac020, 0x1b6f5: 0x6d09d220, 0x1b6f6: 0x6d0c5220, 0x1b6f7: 0x6ce65c20,\n\t0x1b6f8: 0x6c2b5220, 0x1b6f9: 0x6cac1420, 0x1b6fa: 0x6c665420, 0x1b6fb: 0x6c5b1c20,\n\t0x1b6fc: 0x6ca39a20, 0x1b6fd: 0x6c5b2220, 0x1b6fe: 0x6c45cc20, 0x1b6ff: 0x6ca75620,\n\t// Block 0x6dc, offset 0x1b700\n\t0x1b700: 0x6c762420, 0x1b701: 0x6c0b6620, 0x1b702: 0x6d166220, 0x1b703: 0x6cb73620,\n\t0x1b704: 0x6ca9f020, 0x1b705: 0x6c3bc620, 0x1b706: 0x6c71a420, 0x1b707: 0x6d0d5620,\n\t0x1b708: 0x6d16ea20, 0x1b709: 0x6d2a0020, 0x1b70a: 0x6c09f420, 0x1b70b: 0x6d163c20,\n\t0x1b70c: 0x6d13ba20, 0x1b70d: 0x6c37b820, 0x1b70e: 0x6cc9f820, 0x1b70f: 0x6cd2fc20,\n\t0x1b710: 0x6c37ba20, 0x1b711: 0x6cd38020, 0x1b712: 0x6cd39a20, 0x1b713: 0x6c454c20,\n\t0x1b714: 0x6c2e0420, 0x1b715: 0x6d1ac420, 0x1b716: 0x6c563620, 0x1b717: 0x6c3dc820,\n\t0x1b718: 0x6c52ea20, 0x1b719: 0x6cf34420, 0x1b71a: 0x6ce99c20, 0x1b71b: 0x6c1af420,\n\t0x1b71c: 0x6c67d420, 0x1b71d: 0x6c03a820, 0x1b71e: 0x6cd04420, 0x1b71f: 0x6c2c1420,\n\t0x1b720: 0x6d2eb020, 0x1b721: 0x6c73dc20, 0x1b722: 0x6ce1b020, 0x1b723: 0x6c3f4020,\n\t0x1b724: 0x6c2bd820, 0x1b725: 0x6c9c3820, 0x1b726: 0x6cfb2c20, 0x1b727: 0x6c552220,\n\t0x1b728: 0x6c173820, 0x1b729: 0x6caa4e20, 0x1b72a: 0x6c6e4c20, 0x1b72b: 0x6d31be20,\n\t0x1b72c: 0x6d14be20, 0x1b72d: 0x6c9ce020, 0x1b72e: 0x6cc28e20, 0x1b72f: 0x6cec8220,\n\t0x1b730: 0x6cce5e20, 0x1b731: 0x6cc91820, 0x1b732: 0x6d078620, 0x1b733: 0x6c6e6420,\n\t0x1b734: 0x6c2dc220, 0x1b735: 0x6d2eb420, 0x1b736: 0x6c67de20, 0x1b737: 0x6cbb0820,\n\t0x1b738: 0x6cae9a20, 0x1b739: 0x6c287820, 0x1b73a: 0x6cbb0e20, 0x1b73b: 0x6c099620,\n\t0x1b73c: 0x6c099820, 0x1b73d: 0x6ccf4820, 0x1b73e: 0x6c288820, 0x1b73f: 0x6c65aa20,\n\t// Block 0x6dd, offset 0x1b740\n\t0x1b740: 0x6c46b420, 0x1b741: 0x6c448e20, 0x1b742: 0x6c37f020, 0x1b743: 0x6c09c420,\n\t0x1b744: 0x6c79c020, 0x1b745: 0x6c673820, 0x1b746: 0x6c0d1820, 0x1b747: 0x6cff1420,\n\t0x1b748: 0x6c28a620, 0x1b749: 0x6c4c2e20, 0x1b74a: 0x6c67f820, 0x1b74b: 0x6c538620,\n\t0x1b74c: 0x6c9c7820, 0x1b74d: 0x6c4c4420, 0x1b74e: 0x6ceca420, 0x1b74f: 0x6c751620,\n\t0x1b750: 0x6c616820, 0x1b751: 0x6c616a20, 0x1b752: 0x6c4a3220, 0x1b753: 0x6c28f820,\n\t0x1b754: 0x6c921a20, 0x1b755: 0x6c921c20, 0x1b756: 0x6ce98820, 0x1b757: 0x6c5bb420,\n\t0x1b758: 0x6d362220, 0x1b759: 0x6c5bda20, 0x1b75a: 0x6c5bdc20, 0x1b75b: 0x6d155c20,\n\t0x1b75c: 0x6d155e20, 0x1b75d: 0x6d158020, 0x1b75e: 0x6d158220, 0x1b75f: 0x6d265e20,\n\t0x1b760: 0x6d266220, 0x1b761: 0x6cccb220, 0x1b762: 0x6d03c020, 0x1b763: 0x6cf17c20,\n\t0x1b764: 0x6ce71020, 0x1b765: 0x6d0e4620, 0x1b766: 0x6d0e4820, 0x1b767: 0x6d22f020,\n\t0x1b768: 0x6c1a9c20, 0x1b769: 0x6c112620, 0x1b76a: 0x6c0bfa20, 0x1b76b: 0x6c2dc420,\n\t0x1b76c: 0x6c0d3020, 0x1b76d: 0x6cae9e20, 0x1b76e: 0x6d1e4620, 0x1b76f: 0x6cb19820,\n\t0x1b770: 0x6d2ec420, 0x1b771: 0x6d1d0420, 0x1b772: 0x6c1af020, 0x1b773: 0x6c1bd420,\n\t0x1b774: 0x6d3d1c20, 0x1b775: 0x6ceb6c20, 0x1b776: 0x6c5fc820, 0x1b777: 0x6c39be20,\n\t0x1b778: 0x6d379220, 0x1b779: 0x6d168420, 0x1b77a: 0x6cedde20, 0x1b77b: 0x6c17fe20,\n\t0x1b77c: 0x6c08c020, 0x1b77d: 0x6c2b1620, 0x1b77e: 0x6c8caa20, 0x1b77f: 0x6c3dea20,\n\t// Block 0x6de, offset 0x1b780\n\t0x1b780: 0x6cedfa20, 0x1b781: 0x6d328820, 0x1b782: 0x6c241e20, 0x1b783: 0x6cedfc20,\n\t0x1b784: 0x6c6e4e20, 0x1b785: 0x6c274220, 0x1b786: 0x6cf59e20, 0x1b787: 0x6d0a7020,\n\t0x1b788: 0x6c523a20, 0x1b789: 0x6d0f9420, 0x1b78a: 0x6c57e820, 0x1b78b: 0x6c93d020,\n\t0x1b78c: 0x6c546420, 0x1b78d: 0x6cee0220, 0x1b78e: 0x6c1a6620, 0x1b78f: 0x6d35b220,\n\t0x1b790: 0x6d061820, 0x1b791: 0x6c6e6620, 0x1b792: 0x6ce89220, 0x1b793: 0x6c238e20,\n\t0x1b794: 0x6d377e20, 0x1b795: 0x6c7eea20, 0x1b796: 0x6c239620, 0x1b797: 0x6c2a9020,\n\t0x1b798: 0x6cabf820, 0x1b799: 0x6cf7dc20, 0x1b79a: 0x6c300020, 0x1b79b: 0x6c61e620,\n\t0x1b79c: 0x6c16a620, 0x1b79d: 0x6d35dc20, 0x1b79e: 0x6c239820, 0x1b79f: 0x6d387020,\n\t0x1b7a0: 0x6c7ef820, 0x1b7a1: 0x6d233820, 0x1b7a2: 0x6d018e20, 0x1b7a3: 0x6c6bdc20,\n\t0x1b7a4: 0x6c667820, 0x1b7a5: 0x6cd38220, 0x1b7a6: 0x6c641620, 0x1b7a7: 0x6c0b9820,\n\t0x1b7a8: 0x6c59c220, 0x1b7a9: 0x6c3ff020, 0x1b7aa: 0x6d0a0e20, 0x1b7ab: 0x6cefbe20,\n\t0x1b7ac: 0x6cad0420, 0x1b7ad: 0x6d110c20, 0x1b7ae: 0x6cee9820, 0x1b7af: 0x6cf64820,\n\t0x1b7b0: 0x6d32d020, 0x1b7b1: 0x6cb1b620, 0x1b7b2: 0x6ce36220, 0x1b7b3: 0x6c2a7c20,\n\t0x1b7b4: 0x6d32de20, 0x1b7b5: 0x6d32f020, 0x1b7b6: 0x6c0cf420, 0x1b7b7: 0x6c2a7e20,\n\t0x1b7b8: 0x6c1cd420, 0x1b7b9: 0x6c183020, 0x1b7ba: 0x6c692620, 0x1b7bb: 0x6c5c2c20,\n\t0x1b7bc: 0x6c693c20, 0x1b7bd: 0x6c5af220, 0x1b7be: 0x6c9a2e20, 0x1b7bf: 0x6c906c20,\n\t// Block 0x6df, offset 0x1b7c0\n\t0x1b7c0: 0x6cfd9220, 0x1b7c1: 0x6c067a20, 0x1b7c2: 0x6cc1fe20, 0x1b7c3: 0x6d02a220,\n\t0x1b7c4: 0x6d036220, 0x1b7c5: 0x6c090420, 0x1b7c6: 0x6d164020, 0x1b7c7: 0x6c820c20,\n\t0x1b7c8: 0x6cc56420, 0x1b7c9: 0x6c29b620, 0x1b7ca: 0x6c2f8e20, 0x1b7cb: 0x6c410820,\n\t0x1b7cc: 0x6c618020, 0x1b7cd: 0x6cc58620, 0x1b7ce: 0x6cc56a20, 0x1b7cf: 0x6c162620,\n\t0x1b7d0: 0x6ce05020, 0x1b7d1: 0x6ce26820, 0x1b7d2: 0x6ce26a20, 0x1b7d3: 0x6c416020,\n\t0x1b7d4: 0x6cb72a20, 0x1b7d5: 0x6cd2fe20, 0x1b7d6: 0x6c25ae20, 0x1b7d7: 0x6d357420,\n\t0x1b7d8: 0x6cee4620, 0x1b7d9: 0x6c982820, 0x1b7da: 0x6cf56e20, 0x1b7db: 0x6c388220,\n\t0x1b7dc: 0x6d1ba020, 0x1b7dd: 0x6ce4d820, 0x1b7de: 0x6c9f2c20, 0x1b7df: 0x6cf1ca20,\n\t0x1b7e0: 0x6d379620, 0x1b7e1: 0x6c1cac20, 0x1b7e2: 0x6cf4b620, 0x1b7e3: 0x6c5fca20,\n\t0x1b7e4: 0x6cf42220, 0x1b7e5: 0x6cf84620, 0x1b7e6: 0x6c639a20, 0x1b7e7: 0x6d1e8e20,\n\t0x1b7e8: 0x6ced7420, 0x1b7e9: 0x6c230220, 0x1b7ea: 0x6cd90220, 0x1b7eb: 0x6c7b0e20,\n\t0x1b7ec: 0x6d22d020, 0x1b7ed: 0x6c0b6c20, 0x1b7ee: 0x6d357620, 0x1b7ef: 0x6cb57420,\n\t0x1b7f0: 0x6c251820, 0x1b7f1: 0x6c189a20, 0x1b7f2: 0x6cdf5e20, 0x1b7f3: 0x6cea3e20,\n\t0x1b7f4: 0x6cb96e20, 0x1b7f5: 0x6ca75a20, 0x1b7f6: 0x6c5cde20, 0x1b7f7: 0x6d045420,\n\t0x1b7f8: 0x6ca97620, 0x1b7f9: 0x6c7bb620, 0x1b7fa: 0x6cfa7820, 0x1b7fb: 0x6d02aa20,\n\t0x1b7fc: 0x6c772420, 0x1b7fd: 0x6c549e20, 0x1b7fe: 0x6c767c20, 0x1b7ff: 0x6c3bce20,\n\t// Block 0x6e0, offset 0x1b800\n\t0x1b800: 0x6c57e620, 0x1b801: 0x6cdf6220, 0x1b802: 0x6cd95220, 0x1b803: 0x6cf42420,\n\t0x1b804: 0x6cab9a20, 0x1b805: 0x6c170220, 0x1b806: 0x6c20a020, 0x1b807: 0x6c71fa20,\n\t0x1b808: 0x6d16b420, 0x1b809: 0x6c05e620, 0x1b80a: 0x6c173a20, 0x1b80b: 0x6c9f2e20,\n\t0x1b80c: 0x6cadb020, 0x1b80d: 0x6d428020, 0x1b80e: 0x6d2b7620, 0x1b80f: 0x6d104020,\n\t0x1b810: 0x6c720a20, 0x1b811: 0x6c04e820, 0x1b812: 0x6caa5e20, 0x1b813: 0x6ca49420,\n\t0x1b814: 0x6d328a20, 0x1b815: 0x6cabe820, 0x1b816: 0x6c106a20, 0x1b817: 0x6ce5ea20,\n\t0x1b818: 0x6c567020, 0x1b819: 0x6c566420, 0x1b81a: 0x6c720c20, 0x1b81b: 0x6c267e20,\n\t0x1b81c: 0x6c87f420, 0x1b81d: 0x6cd7d420, 0x1b81e: 0x6c1d8e20, 0x1b81f: 0x6c2c2020,\n\t0x1b820: 0x6c274420, 0x1b821: 0x6d147020, 0x1b822: 0x6ce84020, 0x1b823: 0x6d1f0620,\n\t0x1b824: 0x6c3d4820, 0x1b825: 0x6c5ff420, 0x1b826: 0x6cae5420, 0x1b827: 0x6d041820,\n\t0x1b828: 0x6d260420, 0x1b829: 0x6ca5be20, 0x1b82a: 0x6c48e620, 0x1b82b: 0x6c3dec20,\n\t0x1b82c: 0x6cf84820, 0x1b82d: 0x6c093220, 0x1b82e: 0x6d1e9620, 0x1b82f: 0x6cbc9620,\n\t0x1b830: 0x6d086e20, 0x1b831: 0x6c230820, 0x1b832: 0x6c0dc220, 0x1b833: 0x6c5a4220,\n\t0x1b834: 0x6d068020, 0x1b835: 0x6c1f0e20, 0x1b836: 0x6c093420, 0x1b837: 0x6cd5ac20,\n\t0x1b838: 0x6cf5a020, 0x1b839: 0x6cdf9620, 0x1b83a: 0x6d1e8220, 0x1b83b: 0x6d3fe820,\n\t0x1b83c: 0x6c334220, 0x1b83d: 0x6ca1b220, 0x1b83e: 0x6d34f220, 0x1b83f: 0x6d16b620,\n\t// Block 0x6e1, offset 0x1b840\n\t0x1b840: 0x6cd33220, 0x1b841: 0x6ca59420, 0x1b842: 0x6d09e820, 0x1b843: 0x6cd33420,\n\t0x1b844: 0x6cf86020, 0x1b845: 0x6c81a420, 0x1b846: 0x6c525820, 0x1b847: 0x6c7b8e20,\n\t0x1b848: 0x6ca1c620, 0x1b849: 0x6d34fe20, 0x1b84a: 0x6d008020, 0x1b84b: 0x6c88e820,\n\t0x1b84c: 0x6ce55220, 0x1b84d: 0x6c5a4820, 0x1b84e: 0x6c2e7020, 0x1b84f: 0x6c502820,\n\t0x1b850: 0x6c799e20, 0x1b851: 0x6c4ad420, 0x1b852: 0x6c525a20, 0x1b853: 0x6cf5a220,\n\t0x1b854: 0x6c68ce20, 0x1b855: 0x6cd5b820, 0x1b856: 0x6cd8fe20, 0x1b857: 0x6c54aa20,\n\t0x1b858: 0x6cbfa420, 0x1b859: 0x6d104220, 0x1b85a: 0x6c5ba820, 0x1b85b: 0x6c5b2420,\n\t0x1b85c: 0x6c1bfa20, 0x1b85d: 0x6c63b020, 0x1b85e: 0x6d149a20, 0x1b85f: 0x6d045e20,\n\t0x1b860: 0x6c48ec20, 0x1b861: 0x6c8c4c20, 0x1b862: 0x6c5a9220, 0x1b863: 0x6d3f3a20,\n\t0x1b864: 0x6d068e20, 0x1b865: 0x6c1b8a20, 0x1b866: 0x6cce4e20, 0x1b867: 0x6caa7c20,\n\t0x1b868: 0x6c524220, 0x1b869: 0x6c371020, 0x1b86a: 0x6c788e20, 0x1b86b: 0x6c305e20,\n\t0x1b86c: 0x6ce48820, 0x1b86d: 0x6c457c20, 0x1b86e: 0x6cc29020, 0x1b86f: 0x6cf94220,\n\t0x1b870: 0x6cb84a20, 0x1b871: 0x6d268c20, 0x1b872: 0x6cae5820, 0x1b873: 0x6c790020,\n\t0x1b874: 0x6c2a6420, 0x1b875: 0x6c5baa20, 0x1b876: 0x6c35fa20, 0x1b877: 0x6d003220,\n\t0x1b878: 0x6ce7c620, 0x1b879: 0x6d0be020, 0x1b87a: 0x6c764c20, 0x1b87b: 0x6c12ce20,\n\t0x1b87c: 0x6ca4e020, 0x1b87d: 0x6d282020, 0x1b87e: 0x6c984020, 0x1b87f: 0x6d1e2a20,\n\t// Block 0x6e2, offset 0x1b880\n\t0x1b880: 0x6d1e2220, 0x1b881: 0x6d24d420, 0x1b882: 0x6caf5220, 0x1b883: 0x6c7da020,\n\t0x1b884: 0x6cbb6a20, 0x1b885: 0x6d269420, 0x1b886: 0x6d230c20, 0x1b887: 0x6ce89420,\n\t0x1b888: 0x6c6bd820, 0x1b889: 0x6cf5e220, 0x1b88a: 0x6d304a20, 0x1b88b: 0x6c8c4e20,\n\t0x1b88c: 0x6ce3e020, 0x1b88d: 0x6c4e9620, 0x1b88e: 0x6c502a20, 0x1b88f: 0x6cbca820,\n\t0x1b890: 0x6ce3ea20, 0x1b891: 0x6c108220, 0x1b892: 0x6d172620, 0x1b893: 0x6cba4a20,\n\t0x1b894: 0x6c5b4c20, 0x1b895: 0x6cf5bc20, 0x1b896: 0x6c070020, 0x1b897: 0x6c975e20,\n\t0x1b898: 0x6d13e420, 0x1b899: 0x6c524820, 0x1b89a: 0x6cd95620, 0x1b89b: 0x6cc29420,\n\t0x1b89c: 0x6c1a6820, 0x1b89d: 0x6c7c3820, 0x1b89e: 0x6cf4d020, 0x1b89f: 0x6cf4d220,\n\t0x1b8a0: 0x6d1e9e20, 0x1b8a1: 0x6c83b620, 0x1b8a2: 0x6c89ae20, 0x1b8a3: 0x6c590e20,\n\t0x1b8a4: 0x6c230c20, 0x1b8a5: 0x6d175a20, 0x1b8a6: 0x6d269620, 0x1b8a7: 0x6c85c820,\n\t0x1b8a8: 0x6ca8e620, 0x1b8a9: 0x6ca4e620, 0x1b8aa: 0x6c360e20, 0x1b8ab: 0x6cc3b620,\n\t0x1b8ac: 0x6d080e20, 0x1b8ad: 0x6cb8c420, 0x1b8ae: 0x6cf4d420, 0x1b8af: 0x6c9fa420,\n\t0x1b8b0: 0x6c239a20, 0x1b8b1: 0x6c3a5220, 0x1b8b2: 0x6c069c20, 0x1b8b3: 0x6c344c20,\n\t0x1b8b4: 0x6c253420, 0x1b8b5: 0x6c171220, 0x1b8b6: 0x6c9af220, 0x1b8b7: 0x6cca4e20,\n\t0x1b8b8: 0x6c61ea20, 0x1b8b9: 0x6c498820, 0x1b8ba: 0x6c497e20, 0x1b8bb: 0x6d042820,\n\t0x1b8bc: 0x6c2a0e20, 0x1b8bd: 0x6cb4e620, 0x1b8be: 0x6c797420, 0x1b8bf: 0x6ce4ec20,\n\t// Block 0x6e3, offset 0x1b8c0\n\t0x1b8c0: 0x6c94f220, 0x1b8c1: 0x6cf60a20, 0x1b8c2: 0x6c76d220, 0x1b8c3: 0x6c4bc020,\n\t0x1b8c4: 0x6ca6a020, 0x1b8c5: 0x6cbe7620, 0x1b8c6: 0x6c1da020, 0x1b8c7: 0x6c339820,\n\t0x1b8c8: 0x6c4cb620, 0x1b8c9: 0x6d2d7420, 0x1b8ca: 0x6c6da820, 0x1b8cb: 0x6ced0420,\n\t0x1b8cc: 0x6d24ea20, 0x1b8cd: 0x6c6c4220, 0x1b8ce: 0x6c620020, 0x1b8cf: 0x6c7f9620,\n\t0x1b8d0: 0x6d231020, 0x1b8d1: 0x6c5dca20, 0x1b8d2: 0x6c512620, 0x1b8d3: 0x6cc2da20,\n\t0x1b8d4: 0x6cdfdc20, 0x1b8d5: 0x6ce3ec20, 0x1b8d6: 0x6ce3f420, 0x1b8d7: 0x6ca81620,\n\t0x1b8d8: 0x6cee0e20, 0x1b8d9: 0x6c21b420, 0x1b8da: 0x6c54bc20, 0x1b8db: 0x6c5cc020,\n\t0x1b8dc: 0x6cf5e420, 0x1b8dd: 0x6c16ea20, 0x1b8de: 0x6d02ca20, 0x1b8df: 0x6ceefe20,\n\t0x1b8e0: 0x6c5bc020, 0x1b8e1: 0x6c363420, 0x1b8e2: 0x6cdd6620, 0x1b8e3: 0x6d3fee20,\n\t0x1b8e4: 0x6c648420, 0x1b8e5: 0x6d1e3620, 0x1b8e6: 0x6c2d4e20, 0x1b8e7: 0x6c723c20,\n\t0x1b8e8: 0x6c11ce20, 0x1b8e9: 0x6c19fc20, 0x1b8ea: 0x6c2a6e20, 0x1b8eb: 0x6c072220,\n\t0x1b8ec: 0x6cbcb420, 0x1b8ed: 0x6c119420, 0x1b8ee: 0x6c287a20, 0x1b8ef: 0x6c498020,\n\t0x1b8f0: 0x6c34f420, 0x1b8f1: 0x6ca4f820, 0x1b8f2: 0x6d283220, 0x1b8f3: 0x6cfdea20,\n\t0x1b8f4: 0x6d3c8420, 0x1b8f5: 0x6c2ea220, 0x1b8f6: 0x6c59c420, 0x1b8f7: 0x6c217e20,\n\t0x1b8f8: 0x6cbf2220, 0x1b8f9: 0x6cc54c20, 0x1b8fa: 0x6d037220, 0x1b8fb: 0x6c12e820,\n\t0x1b8fc: 0x6c0b3e20, 0x1b8fd: 0x6c9fac20, 0x1b8fe: 0x6d3f8a20, 0x1b8ff: 0x6ce32220,\n\t// Block 0x6e4, offset 0x1b900\n\t0x1b900: 0x6cbc2620, 0x1b901: 0x6c1db820, 0x1b902: 0x6c073020, 0x1b903: 0x6d079820,\n\t0x1b904: 0x6cee8620, 0x1b905: 0x6c43ea20, 0x1b906: 0x6cb8ee20, 0x1b907: 0x6cefc020,\n\t0x1b908: 0x6d236a20, 0x1b909: 0x6d212420, 0x1b90a: 0x6c099a20, 0x1b90b: 0x6d079a20,\n\t0x1b90c: 0x6c592020, 0x1b90d: 0x6c9fb620, 0x1b90e: 0x6c099c20, 0x1b90f: 0x6d17e220,\n\t0x1b910: 0x6c9e2420, 0x1b911: 0x6d1e3820, 0x1b912: 0x6c768820, 0x1b913: 0x6c296620,\n\t0x1b914: 0x6d19e020, 0x1b915: 0x6c363620, 0x1b916: 0x6c18c620, 0x1b917: 0x6c998a20,\n\t0x1b918: 0x6cb86820, 0x1b919: 0x6c78b820, 0x1b91a: 0x6d214820, 0x1b91b: 0x6c00a820,\n\t0x1b91c: 0x6cbcc020, 0x1b91d: 0x6d0d7e20, 0x1b91e: 0x6caaf620, 0x1b91f: 0x6c41dc20,\n\t0x1b920: 0x6d283420, 0x1b921: 0x6d3ff020, 0x1b922: 0x6cc9c220, 0x1b923: 0x6c839620,\n\t0x1b924: 0x6c3bd820, 0x1b925: 0x6d1d6620, 0x1b926: 0x6c7cf820, 0x1b927: 0x6c7cfa20,\n\t0x1b928: 0x6cc3d820, 0x1b929: 0x6c459420, 0x1b92a: 0x6d27ae20, 0x1b92b: 0x6cdaca20,\n\t0x1b92c: 0x6cdae420, 0x1b92d: 0x6cb5f820, 0x1b92e: 0x6d110e20, 0x1b92f: 0x6cd96020,\n\t0x1b930: 0x6c5a6c20, 0x1b931: 0x6c604e20, 0x1b932: 0x6c478c20, 0x1b933: 0x6c726220,\n\t0x1b934: 0x6c20ae20, 0x1b935: 0x6ca6aa20, 0x1b936: 0x6d00b620, 0x1b937: 0x6c766020,\n\t0x1b938: 0x6d332a20, 0x1b939: 0x6d1e4820, 0x1b93a: 0x6c12ae20, 0x1b93b: 0x6d0a9a20,\n\t0x1b93c: 0x6cd0aa20, 0x1b93d: 0x6c0f1020, 0x1b93e: 0x6c768e20, 0x1b93f: 0x6d262820,\n\t// Block 0x6e5, offset 0x1b940\n\t0x1b940: 0x6cf89e20, 0x1b941: 0x6c5d3420, 0x1b942: 0x6d1e5020, 0x1b943: 0x6d102420,\n\t0x1b944: 0x6c862e20, 0x1b945: 0x6ccaaa20, 0x1b946: 0x6ce1d420, 0x1b947: 0x6d19f220,\n\t0x1b948: 0x6c224e20, 0x1b949: 0x6d06f220, 0x1b94a: 0x6cba5820, 0x1b94b: 0x6cdf7c20,\n\t0x1b94c: 0x6c599420, 0x1b94d: 0x6d283a20, 0x1b94e: 0x6cd0ac20, 0x1b94f: 0x6ca03820,\n\t0x1b950: 0x6c463020, 0x1b951: 0x6ccf5020, 0x1b952: 0x6c23a420, 0x1b953: 0x6cb15820,\n\t0x1b954: 0x6ca29820, 0x1b955: 0x6ca2a020, 0x1b956: 0x6c4c7620, 0x1b957: 0x6c1c5620,\n\t0x1b958: 0x6c11d420, 0x1b959: 0x6c11a620, 0x1b95a: 0x6c119c20, 0x1b95b: 0x6c24da20,\n\t0x1b95c: 0x6c9fc220, 0x1b95d: 0x6ce27e20, 0x1b95e: 0x6d2ec820, 0x1b95f: 0x6ce7ce20,\n\t0x1b960: 0x6c02d820, 0x1b961: 0x6cd6d620, 0x1b962: 0x6c97e820, 0x1b963: 0x6c499620,\n\t0x1b964: 0x6cc3ea20, 0x1b965: 0x6d2a8420, 0x1b966: 0x6c701620, 0x1b967: 0x6c5c1020,\n\t0x1b968: 0x6c765820, 0x1b969: 0x6c881220, 0x1b96a: 0x6cab9e20, 0x1b96b: 0x6cd96c20,\n\t0x1b96c: 0x6cbd8e20, 0x1b96d: 0x6d1b7020, 0x1b96e: 0x6c93f220, 0x1b96f: 0x6cce0c20,\n\t0x1b970: 0x6cf0b820, 0x1b971: 0x6ce95220, 0x1b972: 0x6c976c20, 0x1b973: 0x6cb8fe20,\n\t0x1b974: 0x6ccf6220, 0x1b975: 0x6d1d9c20, 0x1b976: 0x6cbed620, 0x1b977: 0x6c773e20,\n\t0x1b978: 0x6c2c8e20, 0x1b979: 0x6d348e20, 0x1b97a: 0x6c90a220, 0x1b97b: 0x6c738220,\n\t0x1b97c: 0x6cb51c20, 0x1b97d: 0x6cb50c20, 0x1b97e: 0x6d23c020, 0x1b97f: 0x6cb2c220,\n\t// Block 0x6e6, offset 0x1b980\n\t0x1b980: 0x6c89f620, 0x1b981: 0x6c23da20, 0x1b982: 0x6d1eae20, 0x1b983: 0x6c1cd620,\n\t0x1b984: 0x6d36aa20, 0x1b985: 0x6ce7d020, 0x1b986: 0x6c197a20, 0x1b987: 0x6cb7c020,\n\t0x1b988: 0x6cc12020, 0x1b989: 0x6caebc20, 0x1b98a: 0x6c075a20, 0x1b98b: 0x6c0cb820,\n\t0x1b98c: 0x6cbf5c20, 0x1b98d: 0x6c686a20, 0x1b98e: 0x6d2b8a20, 0x1b98f: 0x6c1c4220,\n\t0x1b990: 0x6c883620, 0x1b991: 0x6cb2cc20, 0x1b992: 0x6c7d0c20, 0x1b993: 0x6c5c1220,\n\t0x1b994: 0x6cbbf020, 0x1b995: 0x6c1a3620, 0x1b996: 0x6d1b7a20, 0x1b997: 0x6d1b7c20,\n\t0x1b998: 0x6cf80620, 0x1b999: 0x6cf6ba20, 0x1b99a: 0x6c28a820, 0x1b99b: 0x6ce00220,\n\t0x1b99c: 0x6c34a220, 0x1b99d: 0x6c335e20, 0x1b99e: 0x6c335a20, 0x1b99f: 0x6cdaf820,\n\t0x1b9a0: 0x6c74b620, 0x1b9a1: 0x6c130e20, 0x1b9a2: 0x6cff0220, 0x1b9a3: 0x6c385a20,\n\t0x1b9a4: 0x6c3be420, 0x1b9a5: 0x6c817220, 0x1b9a6: 0x6c81da20, 0x1b9a7: 0x6c1cd820,\n\t0x1b9a8: 0x6c4db820, 0x1b9a9: 0x6cb7d220, 0x1b9aa: 0x6cfb7c20, 0x1b9ab: 0x6c9fc420,\n\t0x1b9ac: 0x6c6e2a20, 0x1b9ad: 0x6c8a7420, 0x1b9ae: 0x6cf46420, 0x1b9af: 0x6c11da20,\n\t0x1b9b0: 0x6c749020, 0x1b9b1: 0x6c245420, 0x1b9b2: 0x6cfd0820, 0x1b9b3: 0x6ce06e20,\n\t0x1b9b4: 0x6cd12220, 0x1b9b5: 0x6caf9820, 0x1b9b6: 0x6d188e20, 0x1b9b7: 0x6c1f7420,\n\t0x1b9b8: 0x6cfad620, 0x1b9b9: 0x6ca4c020, 0x1b9ba: 0x6c28ac20, 0x1b9bb: 0x6ce07420,\n\t0x1b9bc: 0x6c6e2c20, 0x1b9bd: 0x6cd93220, 0x1b9be: 0x6c4f0220, 0x1b9bf: 0x6c693e20,\n\t// Block 0x6e7, offset 0x1b9c0\n\t0x1b9c0: 0x6cf0cc20, 0x1b9c1: 0x6d07cc20, 0x1b9c2: 0x6c303620, 0x1b9c3: 0x6cbdb020,\n\t0x1b9c4: 0x6cbd9e20, 0x1b9c5: 0x6c728a20, 0x1b9c6: 0x6c12b220, 0x1b9c7: 0x6c791020,\n\t0x1b9c8: 0x6d021420, 0x1b9c9: 0x6d1bfe20, 0x1b9ca: 0x6c02ea20, 0x1b9cb: 0x6c99ba20,\n\t0x1b9cc: 0x6d189020, 0x1b9cd: 0x6c8c3020, 0x1b9ce: 0x6ccb5420, 0x1b9cf: 0x6c75e420,\n\t0x1b9d0: 0x6c57f220, 0x1b9d1: 0x6c9afe20, 0x1b9d2: 0x6c803c20, 0x1b9d3: 0x6c00ca20,\n\t0x1b9d4: 0x6c8c3220, 0x1b9d5: 0x6d0c3c20, 0x1b9d6: 0x6c7e2620, 0x1b9d7: 0x6cfa4a20,\n\t0x1b9d8: 0x6c1c8420, 0x1b9d9: 0x6d228e20, 0x1b9da: 0x6d1b8820, 0x1b9db: 0x6c270e20,\n\t0x1b9dc: 0x6c9be420, 0x1b9dd: 0x6c00d820, 0x1b9de: 0x6c9b4a20, 0x1b9df: 0x6c337020,\n\t0x1b9e0: 0x6cb65c20, 0x1b9e1: 0x6ca0ac20, 0x1b9e2: 0x6c7fbe20, 0x1b9e3: 0x6c9b0020,\n\t0x1b9e4: 0x6c1de620, 0x1b9e5: 0x6d370220, 0x1b9e6: 0x6cab1620, 0x1b9e7: 0x6cab1820,\n\t0x1b9e8: 0x6d0c3420, 0x1b9e9: 0x6d103420, 0x1b9ea: 0x6c0f8a20, 0x1b9eb: 0x6d372820,\n\t0x1b9ec: 0x6c7c0c20, 0x1b9ed: 0x6c7bd220, 0x1b9ee: 0x6d1ff820, 0x1b9ef: 0x6c3db220,\n\t0x1b9f0: 0x6c8eb420, 0x1b9f1: 0x6c9ef020, 0x1b9f2: 0x6c1a5420, 0x1b9f3: 0x6c5cb020,\n\t0x1b9f4: 0x6c163820, 0x1b9f5: 0x6c9bea20, 0x1b9f6: 0x6c804a20, 0x1b9f7: 0x6c57fa20,\n\t0x1b9f8: 0x6d083620, 0x1b9f9: 0x6cc51a20, 0x1b9fa: 0x6c164020, 0x1b9fb: 0x6c62b820,\n\t0x1b9fc: 0x6c72ca20, 0x1b9fd: 0x6c583e20, 0x1b9fe: 0x6ccf8820, 0x1b9ff: 0x6d195a20,\n\t// Block 0x6e8, offset 0x1ba00\n\t0x1ba00: 0x6c893820, 0x1ba01: 0x6ca44020, 0x1ba02: 0x6c9cb020, 0x1ba03: 0x6ce18c20,\n\t0x1ba04: 0x6c751a20, 0x1ba05: 0x6c42b020, 0x1ba06: 0x6c42b220, 0x1ba07: 0x6d3c5220,\n\t0x1ba08: 0x6c436020, 0x1ba09: 0x6d266e20, 0x1ba0a: 0x6cf49820, 0x1ba0b: 0x6c645a20,\n\t0x1ba0c: 0x6d056420, 0x1ba0d: 0x6cd59420, 0x1ba0e: 0x6cc65020, 0x1ba0f: 0x6cf83820,\n\t0x1ba10: 0x6c19b220, 0x1ba11: 0x6cf2a620, 0x1ba12: 0x6c6bb820, 0x1ba13: 0x6c436e20,\n\t0x1ba14: 0x6c646c20, 0x1ba15: 0x6cbaa020, 0x1ba16: 0x6c5da020, 0x1ba17: 0x6cbaa220,\n\t0x1ba18: 0x6d2e4a20, 0x1ba19: 0x6c306e20, 0x1ba1a: 0x6cb81220, 0x1ba1b: 0x6c63b620,\n\t0x1ba1c: 0x6c2e9220, 0x1ba1d: 0x6d2b5e20, 0x1ba1e: 0x6c63be20, 0x1ba1f: 0x6c614420,\n\t0x1ba20: 0x6d33de20, 0x1ba21: 0x6c76b020, 0x1ba22: 0x6c603420, 0x1ba23: 0x6c7c8620,\n\t0x1ba24: 0x6c414020, 0x1ba25: 0x6c2ace20, 0x1ba26: 0x6d2e6820, 0x1ba27: 0x6cbaca20,\n\t0x1ba28: 0x6c439e20, 0x1ba29: 0x6c65bc20, 0x1ba2a: 0x6c6b0620, 0x1ba2b: 0x6d238e20,\n\t0x1ba2c: 0x6c65be20, 0x1ba2d: 0x6d0dc820, 0x1ba2e: 0x6c92a020, 0x1ba2f: 0x6c54f620,\n\t0x1ba30: 0x6d2e7e20, 0x1ba31: 0x6cf8da20, 0x1ba32: 0x6cf8ec20, 0x1ba33: 0x6c219a20,\n\t0x1ba34: 0x6c279420, 0x1ba35: 0x6cc20420, 0x1ba36: 0x6c563820, 0x1ba37: 0x6c563a20,\n\t0x1ba38: 0x6c563c20, 0x1ba39: 0x6c35c820, 0x1ba3a: 0x6cd30c20, 0x1ba3b: 0x6ce3d220,\n\t0x1ba3c: 0x6c992620, 0x1ba3d: 0x6c566620, 0x1ba3e: 0x6c858c20, 0x1ba3f: 0x6c39a620,\n\t// Block 0x6e9, offset 0x1ba40\n\t0x1ba40: 0x6cdd4e20, 0x1ba41: 0x6c0b2e20, 0x1ba42: 0x6c2d4220, 0x1ba43: 0x6c6ed820,\n\t0x1ba44: 0x6cce3420, 0x1ba45: 0x6d14c020, 0x1ba46: 0x6d15dc20, 0x1ba47: 0x6ccd7a20,\n\t0x1ba48: 0x6c568c20, 0x1ba49: 0x6c3a0220, 0x1ba4a: 0x6d0d8020, 0x1ba4b: 0x6cd43620,\n\t0x1ba4c: 0x6cd48e20, 0x1ba4d: 0x6c10fe20, 0x1ba4e: 0x6d2bc020, 0x1ba4f: 0x6cbff220,\n\t0x1ba50: 0x6c820e20, 0x1ba51: 0x6cb3fe20, 0x1ba52: 0x6c031020, 0x1ba53: 0x6c26e020,\n\t0x1ba54: 0x6cc61020, 0x1ba55: 0x6c390220, 0x1ba56: 0x6cc83020, 0x1ba57: 0x6d292a20,\n\t0x1ba58: 0x6cea9620, 0x1ba59: 0x6d2f1e20, 0x1ba5a: 0x6c2df620, 0x1ba5b: 0x6c776620,\n\t0x1ba5c: 0x6d207220, 0x1ba5d: 0x6c7a1820, 0x1ba5e: 0x6c41c420, 0x1ba5f: 0x6ccf9e20,\n\t0x1ba60: 0x6c137820, 0x1ba61: 0x6cea9820, 0x1ba62: 0x6c475420, 0x1ba63: 0x6c79d620,\n\t0x1ba64: 0x6cf4a220, 0x1ba65: 0x6c2a9420, 0x1ba66: 0x6cb89820, 0x1ba67: 0x6d343620,\n\t0x1ba68: 0x6cc5b620, 0x1ba69: 0x6c7de620, 0x1ba6a: 0x6c9ac020, 0x1ba6b: 0x6ccade20,\n\t0x1ba6c: 0x6d0f7420, 0x1ba6d: 0x6ca97820, 0x1ba6e: 0x6c051220, 0x1ba6f: 0x6c17e620,\n\t0x1ba70: 0x6cc53620, 0x1ba71: 0x6cf57020, 0x1ba72: 0x6cb97220, 0x1ba73: 0x6c047020,\n\t0x1ba74: 0x6c639c20, 0x1ba75: 0x6d20b220, 0x1ba76: 0x6c3dda20, 0x1ba77: 0x6c02c220,\n\t0x1ba78: 0x6cf57e20, 0x1ba79: 0x6caf2a20, 0x1ba7a: 0x6d34e620, 0x1ba7b: 0x6d357820,\n\t0x1ba7c: 0x6c35d220, 0x1ba7d: 0x6c2a9620, 0x1ba7e: 0x6d2f8420, 0x1ba7f: 0x6c19bc20,\n\t// Block 0x6ea, offset 0x1ba80\n\t0x1ba80: 0x6c618420, 0x1ba81: 0x6d0d3c20, 0x1ba82: 0x6c7bb820, 0x1ba83: 0x6c0b6e20,\n\t0x1ba84: 0x6c173220, 0x1ba85: 0x6c704e20, 0x1ba86: 0x6cf1cc20, 0x1ba87: 0x6c551e20,\n\t0x1ba88: 0x6d267e20, 0x1ba89: 0x6c73de20, 0x1ba8a: 0x6c039a20, 0x1ba8b: 0x6cbe0420,\n\t0x1ba8c: 0x6c282020, 0x1ba8d: 0x6d331820, 0x1ba8e: 0x6d27d820, 0x1ba8f: 0x6cecc820,\n\t0x1ba90: 0x6ca54820, 0x1ba91: 0x6d168820, 0x1ba92: 0x6cd49e20, 0x1ba93: 0x6d3b5420,\n\t0x1ba94: 0x6cb3d020, 0x1ba95: 0x6ce7e620, 0x1ba96: 0x6c30da20, 0x1ba97: 0x6c777e20,\n\t0x1ba98: 0x6d301220, 0x1ba99: 0x6cb3d220, 0x1ba9a: 0x6c3f3620, 0x1ba9b: 0x6cad3220,\n\t0x1ba9c: 0x6c036020, 0x1ba9d: 0x6c029c20, 0x1ba9e: 0x6d2aa420, 0x1ba9f: 0x6ce94820,\n\t0x1baa0: 0x6c79b220, 0x1baa1: 0x6c94d020, 0x1baa2: 0x6cbb3820, 0x1baa3: 0x6d287a20,\n\t0x1baa4: 0x6c565620, 0x1baa5: 0x6c063020, 0x1baa6: 0x6c0dc420, 0x1baa7: 0x6d34f420,\n\t0x1baa8: 0x6cae5620, 0x1baa9: 0x6cdf8c20, 0x1baaa: 0x6c106c20, 0x1baab: 0x6caf3620,\n\t0x1baac: 0x6cdf1820, 0x1baad: 0x6d118c20, 0x1baae: 0x6d31b820, 0x1baaf: 0x6d2bc620,\n\t0x1bab0: 0x6d0f4820, 0x1bab1: 0x6c063220, 0x1bab2: 0x6c508c20, 0x1bab3: 0x6ca62820,\n\t0x1bab4: 0x6d12ce20, 0x1bab5: 0x6c2bda20, 0x1bab6: 0x6c1bee20, 0x1bab7: 0x6caf3820,\n\t0x1bab8: 0x6c632220, 0x1bab9: 0x6ca0a820, 0x1baba: 0x6c9a7620, 0x1babb: 0x6c185a20,\n\t0x1babc: 0x6d0ad220, 0x1babd: 0x6c1d6420, 0x1babe: 0x6cc0e420, 0x1babf: 0x6c9f9420,\n\t// Block 0x6eb, offset 0x1bac0\n\t0x1bac0: 0x6c1f1020, 0x1bac1: 0x6c632a20, 0x1bac2: 0x6c3dee20, 0x1bac3: 0x6d2c7220,\n\t0x1bac4: 0x6d3a5c20, 0x1bac5: 0x6c27bc20, 0x1bac6: 0x6c146020, 0x1bac7: 0x6ca2c420,\n\t0x1bac8: 0x6ca6ec20, 0x1bac9: 0x6c7e3e20, 0x1baca: 0x6c3f4220, 0x1bacb: 0x6cad3420,\n\t0x1bacc: 0x6c04ea20, 0x1bacd: 0x6cabee20, 0x1bace: 0x6c8b9a20, 0x1bacf: 0x6ca2d020,\n\t0x1bad0: 0x6c48d820, 0x1bad1: 0x6cb97420, 0x1bad2: 0x6c71fc20, 0x1bad3: 0x6cde2e20,\n\t0x1bad4: 0x6c036820, 0x1bad5: 0x6ceaac20, 0x1bad6: 0x6ceaae20, 0x1bad7: 0x6c02a020,\n\t0x1bad8: 0x6c705a20, 0x1bad9: 0x6d3cf020, 0x1bada: 0x6caca020, 0x1badb: 0x6d2f5a20,\n\t0x1badc: 0x6c043c20, 0x1badd: 0x6c043220, 0x1bade: 0x6c2bdc20, 0x1badf: 0x6ca62420,\n\t0x1bae0: 0x6c720e20, 0x1bae1: 0x6c7de820, 0x1bae2: 0x6c903220, 0x1bae3: 0x6c656420,\n\t0x1bae4: 0x6cb83420, 0x1bae5: 0x6d1d7e20, 0x1bae6: 0x6c7f8c20, 0x1bae7: 0x6ca8f620,\n\t0x1bae8: 0x6c0e5020, 0x1bae9: 0x6d2aa820, 0x1baea: 0x6cb8bc20, 0x1baeb: 0x6c522e20,\n\t0x1baec: 0x6c7dea20, 0x1baed: 0x6cd33620, 0x1baee: 0x6c6a8e20, 0x1baef: 0x6d331e20,\n\t0x1baf0: 0x6ca8ee20, 0x1baf1: 0x6c45da20, 0x1baf2: 0x6c45de20, 0x1baf3: 0x6cc2ca20,\n\t0x1baf4: 0x6cd68020, 0x1baf5: 0x6c25a620, 0x1baf6: 0x6d288a20, 0x1baf7: 0x6c77a020,\n\t0x1baf8: 0x6d149c20, 0x1baf9: 0x6d008220, 0x1bafa: 0x6c12d020, 0x1bafb: 0x6c5a9420,\n\t0x1bafc: 0x6cb1ea20, 0x1bafd: 0x6d3b6620, 0x1bafe: 0x6cd41020, 0x1baff: 0x6ca2d620,\n\t// Block 0x6ec, offset 0x1bb00\n\t0x1bb00: 0x6c03fc20, 0x1bb01: 0x6c1b0c20, 0x1bb02: 0x6c48ac20, 0x1bb03: 0x6d359c20,\n\t0x1bb04: 0x6c7dec20, 0x1bb05: 0x6c348020, 0x1bb06: 0x6c348220, 0x1bb07: 0x6d350020,\n\t0x1bb08: 0x6cbcaa20, 0x1bb09: 0x6c01a420, 0x1bb0a: 0x6ca9f220, 0x1bb0b: 0x6d322020,\n\t0x1bb0c: 0x6c43ca20, 0x1bb0d: 0x6c698820, 0x1bb0e: 0x6c7ae620, 0x1bb0f: 0x6c306020,\n\t0x1bb10: 0x6ca2d820, 0x1bb11: 0x6ce55420, 0x1bb12: 0x6c8ad220, 0x1bb13: 0x6d2bca20,\n\t0x1bb14: 0x6c937c20, 0x1bb15: 0x6c2e7220, 0x1bb16: 0x6cebca20, 0x1bb17: 0x6c73fa20,\n\t0x1bb18: 0x6c8b9420, 0x1bb19: 0x6c71b020, 0x1bb1a: 0x6d35b820, 0x1bb1b: 0x6c943420,\n\t0x1bb1c: 0x6d0b8620, 0x1bb1d: 0x6cf27c20, 0x1bb1e: 0x6cde3420, 0x1bb1f: 0x6d008420,\n\t0x1bb20: 0x6ca49c20, 0x1bb21: 0x6c292820, 0x1bb22: 0x6c68d020, 0x1bb23: 0x6d329820,\n\t0x1bb24: 0x6c612a20, 0x1bb25: 0x6c5a9620, 0x1bb26: 0x6cfb3420, 0x1bb27: 0x6d24be20,\n\t0x1bb28: 0x6c002020, 0x1bb29: 0x6ceab420, 0x1bb2a: 0x6caab820, 0x1bb2b: 0x6c261c20,\n\t0x1bb2c: 0x6c0ed420, 0x1bb2d: 0x6c44fa20, 0x1bb2e: 0x6ce3be20, 0x1bb2f: 0x6d322c20,\n\t0x1bb30: 0x6c19dc20, 0x1bb31: 0x6cc94220, 0x1bb32: 0x6cc94420, 0x1bb33: 0x6c793220,\n\t0x1bb34: 0x6c9a5020, 0x1bb35: 0x6c906220, 0x1bb36: 0x6c706820, 0x1bb37: 0x6cae9020,\n\t0x1bb38: 0x6c657a20, 0x1bb39: 0x6d172820, 0x1bb3a: 0x6ce6ba20, 0x1bb3b: 0x6cccce20,\n\t0x1bb3c: 0x6cc83a20, 0x1bb3d: 0x6cecf820, 0x1bb3e: 0x6d008a20, 0x1bb3f: 0x6c138820,\n\t// Block 0x6ed, offset 0x1bb40\n\t0x1bb40: 0x6c3ca020, 0x1bb41: 0x6c68da20, 0x1bb42: 0x6cf43c20, 0x1bb43: 0x6c75a420,\n\t0x1bb44: 0x6c6fe820, 0x1bb45: 0x6ce7b220, 0x1bb46: 0x6c7da220, 0x1bb47: 0x6c5dac20,\n\t0x1bb48: 0x6ce89620, 0x1bb49: 0x6d3cf620, 0x1bb4a: 0x6cb3d620, 0x1bb4b: 0x6c938820,\n\t0x1bb4c: 0x6c033a20, 0x1bb4d: 0x6c4e9820, 0x1bb4e: 0x6cce6020, 0x1bb4f: 0x6ca7da20,\n\t0x1bb50: 0x6c72e420, 0x1bb51: 0x6d2b4620, 0x1bb52: 0x6cd5ba20, 0x1bb53: 0x6d127620,\n\t0x1bb54: 0x6c741220, 0x1bb55: 0x6c103620, 0x1bb56: 0x6cecd020, 0x1bb57: 0x6c108420,\n\t0x1bb58: 0x6d421620, 0x1bb59: 0x6d172a20, 0x1bb5a: 0x6d2ce820, 0x1bb5b: 0x6c937e20,\n\t0x1bb5c: 0x6cd9a420, 0x1bb5d: 0x6ceab620, 0x1bb5e: 0x6c813a20, 0x1bb5f: 0x6cdce620,\n\t0x1bb60: 0x6c052220, 0x1bb61: 0x6c657c20, 0x1bb62: 0x6c590220, 0x1bb63: 0x6c29d420,\n\t0x1bb64: 0x6cf13c20, 0x1bb65: 0x6ced7820, 0x1bb66: 0x6cbd6e20, 0x1bb67: 0x6caf0220,\n\t0x1bb68: 0x6ccf2c20, 0x1bb69: 0x6c8af820, 0x1bb6a: 0x6c9f4620, 0x1bb6b: 0x6c9aca20,\n\t0x1bb6c: 0x6c3f5a20, 0x1bb6d: 0x6c041e20, 0x1bb6e: 0x6c723e20, 0x1bb6f: 0x6c29cc20,\n\t0x1bb70: 0x6cf2b420, 0x1bb71: 0x6c003e20, 0x1bb72: 0x6c731c20, 0x1bb73: 0x6d26a420,\n\t0x1bb74: 0x6d3fec20, 0x1bb75: 0x6c186420, 0x1bb76: 0x6c20c820, 0x1bb77: 0x6c6ab620,\n\t0x1bb78: 0x6ce85420, 0x1bb79: 0x6c07ae20, 0x1bb7a: 0x6ca33220, 0x1bb7b: 0x6ca72020,\n\t0x1bb7c: 0x6cc90e20, 0x1bb7d: 0x6d423620, 0x1bb7e: 0x6cf2e220, 0x1bb7f: 0x6cf5e820,\n\t// Block 0x6ee, offset 0x1bb80\n\t0x1bb80: 0x6cfa9820, 0x1bb81: 0x6c19e620, 0x1bb82: 0x6c2cc420, 0x1bb83: 0x6ccae020,\n\t0x1bb84: 0x6c94d220, 0x1bb85: 0x6cbec620, 0x1bb86: 0x6c427820, 0x1bb87: 0x6c342a20,\n\t0x1bb88: 0x6cd46020, 0x1bb89: 0x6c2e1820, 0x1bb8a: 0x6cb3d820, 0x1bb8b: 0x6c2bf020,\n\t0x1bb8c: 0x6d2f0420, 0x1bb8d: 0x6c5d2420, 0x1bb8e: 0x6c613620, 0x1bb8f: 0x6ce1c220,\n\t0x1bb90: 0x6cb82820, 0x1bb91: 0x6cb5c420, 0x1bb92: 0x6cabfa20, 0x1bb93: 0x6cd4c820,\n\t0x1bb94: 0x6cb8e220, 0x1bb95: 0x6c8ce420, 0x1bb96: 0x6d125c20, 0x1bb97: 0x6d0b9c20,\n\t0x1bb98: 0x6c742420, 0x1bb99: 0x6d32b020, 0x1bb9a: 0x6c899020, 0x1bb9b: 0x6c48b020,\n\t0x1bb9c: 0x6d175c20, 0x1bb9d: 0x6c5dc220, 0x1bb9e: 0x6ccd8220, 0x1bb9f: 0x6d332020,\n\t0x1bba0: 0x6c361020, 0x1bba1: 0x6c112a20, 0x1bba2: 0x6ce09420, 0x1bba3: 0x6c181e20,\n\t0x1bba4: 0x6c0db020, 0x1bba5: 0x6c69fa20, 0x1bba6: 0x6ce3ee20, 0x1bba7: 0x6c79a420,\n\t0x1bba8: 0x6ce99020, 0x1bba9: 0x6d0d6620, 0x1bbaa: 0x6c262220, 0x1bbab: 0x6d387420,\n\t0x1bbac: 0x6c708a20, 0x1bbad: 0x6ce53420, 0x1bbae: 0x6cb98820, 0x1bbaf: 0x6c791820,\n\t0x1bbb0: 0x6c040020, 0x1bbb1: 0x6cabd420, 0x1bbb2: 0x6c69fc20, 0x1bbb3: 0x6c91ba20,\n\t0x1bbb4: 0x6c48cc20, 0x1bbb5: 0x6ca04e20, 0x1bbb6: 0x6c454620, 0x1bbb7: 0x6d35e020,\n\t0x1bbb8: 0x6c283420, 0x1bbb9: 0x6c9c2a20, 0x1bbba: 0x6c11f220, 0x1bbbb: 0x6ccaa620,\n\t0x1bbbc: 0x6c498220, 0x1bbbd: 0x6caf1020, 0x1bbbe: 0x6d261c20, 0x1bbbf: 0x6caaee20,\n\t// Block 0x6ef, offset 0x1bbc0\n\t0x1bbc0: 0x6c659020, 0x1bbc1: 0x6d32c420, 0x1bbc2: 0x6c6f7220, 0x1bbc3: 0x6c659220,\n\t0x1bbc4: 0x6d212620, 0x1bbc5: 0x6d0ca820, 0x1bbc6: 0x6c7c7820, 0x1bbc7: 0x6ca42620,\n\t0x1bbc8: 0x6c52a420, 0x1bbc9: 0x6cc74a20, 0x1bbca: 0x6cb09620, 0x1bbcb: 0x6cee8820,\n\t0x1bbcc: 0x6cc9c420, 0x1bbcd: 0x6d408820, 0x1bbce: 0x6d079c20, 0x1bbcf: 0x6c9e7620,\n\t0x1bbd0: 0x6ce32420, 0x1bbd1: 0x6ca7dc20, 0x1bbd2: 0x6c139c20, 0x1bbd3: 0x6cd38620,\n\t0x1bbd4: 0x6d3ff220, 0x1bbd5: 0x6d324220, 0x1bbd6: 0x6d13f220, 0x1bbd7: 0x6d0a1020,\n\t0x1bbd8: 0x6d1df620, 0x1bbd9: 0x6c0af220, 0x1bbda: 0x6d0fb620, 0x1bbdb: 0x6c592220,\n\t0x1bbdc: 0x6d0d8220, 0x1bbdd: 0x6d296a20, 0x1bbde: 0x6c018620, 0x1bbdf: 0x6d059a20,\n\t0x1bbe0: 0x6d0bac20, 0x1bbe1: 0x6cf2ee20, 0x1bbe2: 0x6c784c20, 0x1bbe3: 0x6c1fb420,\n\t0x1bbe4: 0x6c600020, 0x1bbe5: 0x6ce3fa20, 0x1bbe6: 0x6c7e5e20, 0x1bbe7: 0x6c7e7a20,\n\t0x1bbe8: 0x6c18c820, 0x1bbe9: 0x6c762e20, 0x1bbea: 0x6c6f7420, 0x1bbeb: 0x6c6f7c20,\n\t0x1bbec: 0x6ce8ae20, 0x1bbed: 0x6c6a1220, 0x1bbee: 0x6c5ab420, 0x1bbef: 0x6c44b420,\n\t0x1bbf0: 0x6c1d5020, 0x1bbf1: 0x6cfed620, 0x1bbf2: 0x6c2ea420, 0x1bbf3: 0x6d004020,\n\t0x1bbf4: 0x6d256220, 0x1bbf5: 0x6cb98a20, 0x1bbf6: 0x6d127c20, 0x1bbf7: 0x6c139e20,\n\t0x1bbf8: 0x6d2bda20, 0x1bbf9: 0x6c069e20, 0x1bbfa: 0x6d10f820, 0x1bbfb: 0x6cee8a20,\n\t0x1bbfc: 0x6c086a20, 0x1bbfd: 0x6c802820, 0x1bbfe: 0x6cf20c20, 0x1bbff: 0x6cbe1420,\n\t// Block 0x6f0, offset 0x1bc00\n\t0x1bc00: 0x6c14ca20, 0x1bc01: 0x6c439220, 0x1bc02: 0x6c90e420, 0x1bc03: 0x6d3ff420,\n\t0x1bc04: 0x6c44ce20, 0x1bc05: 0x6c68f220, 0x1bc06: 0x6c46b820, 0x1bc07: 0x6cbe1a20,\n\t0x1bc08: 0x6cc68420, 0x1bc09: 0x6cc3ca20, 0x1bc0a: 0x6c1d7420, 0x1bc0b: 0x6c1fb620,\n\t0x1bc0c: 0x6d2df620, 0x1bc0d: 0x6cdcf020, 0x1bc0e: 0x6cdcd420, 0x1bc0f: 0x6c0f1220,\n\t0x1bc10: 0x6c1f4e20, 0x1bc11: 0x6cc67420, 0x1bc12: 0x6c057a20, 0x1bc13: 0x6c25ba20,\n\t0x1bc14: 0x6ccaac20, 0x1bc15: 0x6c780620, 0x1bc16: 0x6d111020, 0x1bc17: 0x6c29dc20,\n\t0x1bc18: 0x6d33ee20, 0x1bc19: 0x6caa6620, 0x1bc1a: 0x6c7e4820, 0x1bc1b: 0x6c64b020,\n\t0x1bc1c: 0x6cd9b020, 0x1bc1d: 0x6cc0ae20, 0x1bc1e: 0x6c430820, 0x1bc1f: 0x6cfc1420,\n\t0x1bc20: 0x6cd78620, 0x1bc21: 0x6cca8020, 0x1bc22: 0x6c6d1420, 0x1bc23: 0x6c9edc20,\n\t0x1bc24: 0x6c365820, 0x1bc25: 0x6c20ce20, 0x1bc26: 0x6caafc20, 0x1bc27: 0x6cccea20,\n\t0x1bc28: 0x6cde5c20, 0x1bc29: 0x6d2c7e20, 0x1bc2a: 0x6ce10220, 0x1bc2b: 0x6cac6420,\n\t0x1bc2c: 0x6c048620, 0x1bc2d: 0x6c265020, 0x1bc2e: 0x6c863020, 0x1bc2f: 0x6ce1d620,\n\t0x1bc30: 0x6c555c20, 0x1bc31: 0x6d365620, 0x1bc32: 0x6cebe220, 0x1bc33: 0x6c574220,\n\t0x1bc34: 0x6cb90220, 0x1bc35: 0x6cf20e20, 0x1bc36: 0x6cbb3e20, 0x1bc37: 0x6ce4ac20,\n\t0x1bc38: 0x6d316220, 0x1bc39: 0x6c365a20, 0x1bc3a: 0x6d00ba20, 0x1bc3b: 0x6cab0220,\n\t0x1bc3c: 0x6cc2fc20, 0x1bc3d: 0x6c13e220, 0x1bc3e: 0x6d2ccc20, 0x1bc3f: 0x6c441020,\n\t// Block 0x6f1, offset 0x1bc40\n\t0x1bc40: 0x6cf44e20, 0x1bc41: 0x6c372420, 0x1bc42: 0x6ccf5220, 0x1bc43: 0x6c776820,\n\t0x1bc44: 0x6ccf5420, 0x1bc45: 0x6cd4e820, 0x1bc46: 0x6c042620, 0x1bc47: 0x6d111220,\n\t0x1bc48: 0x6c0d8020, 0x1bc49: 0x6cd9be20, 0x1bc4a: 0x6cdfae20, 0x1bc4b: 0x6cc97820,\n\t0x1bc4c: 0x6c15ca20, 0x1bc4d: 0x6cdd2a20, 0x1bc4e: 0x6c6f8020, 0x1bc4f: 0x6c1cd220,\n\t0x1bc50: 0x6c205620, 0x1bc51: 0x6c48d220, 0x1bc52: 0x6c0de620, 0x1bc53: 0x6c3cac20,\n\t0x1bc54: 0x6cd65620, 0x1bc55: 0x6c2c7e20, 0x1bc56: 0x6cb7ae20, 0x1bc57: 0x6cd9cc20,\n\t0x1bc58: 0x6d2cf820, 0x1bc59: 0x6c88c220, 0x1bc5a: 0x6c197c20, 0x1bc5b: 0x6c1ab820,\n\t0x1bc5c: 0x6c499820, 0x1bc5d: 0x6c928220, 0x1bc5e: 0x6c961420, 0x1bc5f: 0x6c90ee20,\n\t0x1bc60: 0x6d400020, 0x1bc61: 0x6c413420, 0x1bc62: 0x6c56b620, 0x1bc63: 0x6d2bea20,\n\t0x1bc64: 0x6c209420, 0x1bc65: 0x6ce19e20, 0x1bc66: 0x6c57ac20, 0x1bc67: 0x6c24dc20,\n\t0x1bc68: 0x6ca38420, 0x1bc69: 0x6ca07220, 0x1bc6a: 0x6c676820, 0x1bc6b: 0x6c4a7a20,\n\t0x1bc6c: 0x6d1cfc20, 0x1bc6d: 0x6d348020, 0x1bc6e: 0x6c026020, 0x1bc6f: 0x6d36ae20,\n\t0x1bc70: 0x6ca85c20, 0x1bc71: 0x6c97ea20, 0x1bc72: 0x6c163020, 0x1bc73: 0x6c79c220,\n\t0x1bc74: 0x6c1e6220, 0x1bc75: 0x6ccf6420, 0x1bc76: 0x6ce95420, 0x1bc77: 0x6c691420,\n\t0x1bc78: 0x6ca05620, 0x1bc79: 0x6ca06820, 0x1bc7a: 0x6d306c20, 0x1bc7b: 0x6c11fc20,\n\t0x1bc7c: 0x6c794820, 0x1bc7d: 0x6c0c0a20, 0x1bc7e: 0x6c67f620, 0x1bc7f: 0x6d19f420,\n\t// Block 0x6f2, offset 0x1bc80\n\t0x1bc80: 0x6c46ce20, 0x1bc81: 0x6cb90420, 0x1bc82: 0x6c8aa020, 0x1bc83: 0x6c608420,\n\t0x1bc84: 0x6d1bce20, 0x1bc85: 0x6c73b420, 0x1bc86: 0x6cb1d020, 0x1bc87: 0x6cb1ca20,\n\t0x1bc88: 0x6c813c20, 0x1bc89: 0x6c33ac20, 0x1bc8a: 0x6cfcfa20, 0x1bc8b: 0x6cc84420,\n\t0x1bc8c: 0x6c4b6620, 0x1bc8d: 0x6d297420, 0x1bc8e: 0x6d185020, 0x1bc8f: 0x6cfb7e20,\n\t0x1bc90: 0x6c198820, 0x1bc91: 0x6c198a20, 0x1bc92: 0x6cc94620, 0x1bc93: 0x6ca4ba20,\n\t0x1bc94: 0x6c53ca20, 0x1bc95: 0x6cd81620, 0x1bc96: 0x6c4ee020, 0x1bc97: 0x6c4a2620,\n\t0x1bc98: 0x6c266420, 0x1bc99: 0x6d420c20, 0x1bc9a: 0x6ca73420, 0x1bc9b: 0x6c8c2a20,\n\t0x1bc9c: 0x6d332c20, 0x1bc9d: 0x6c5ae420, 0x1bc9e: 0x6d3c4820, 0x1bc9f: 0x6c692820,\n\t0x1bca0: 0x6c615020, 0x1bca1: 0x6c126620, 0x1bca2: 0x6c283c20, 0x1bca3: 0x6c283e20,\n\t0x1bca4: 0x6c183220, 0x1bca5: 0x6c0e8820, 0x1bca6: 0x6c17ee20, 0x1bca7: 0x6c73b620,\n\t0x1bca8: 0x6c3f8020, 0x1bca9: 0x6c89d220, 0x1bcaa: 0x6c07c220, 0x1bcab: 0x6c3f8220,\n\t0x1bcac: 0x6cbc5820, 0x1bcad: 0x6c0e8a20, 0x1bcae: 0x6c25c620, 0x1bcaf: 0x6d3d7a20,\n\t0x1bcb0: 0x6d3bda20, 0x1bcb1: 0x6ceff020, 0x1bcb2: 0x6cb40e20, 0x1bcb3: 0x6cbe2220,\n\t0x1bcb4: 0x6c33a620, 0x1bcb5: 0x6ca73620, 0x1bcb6: 0x6c574420, 0x1bcb7: 0x6d00d820,\n\t0x1bcb8: 0x6c912e20, 0x1bcb9: 0x6c692a20, 0x1bcba: 0x6c249020, 0x1bcbb: 0x6cde8c20,\n\t0x1bcbc: 0x6c4f0420, 0x1bcbd: 0x6cbc5c20, 0x1bcbe: 0x6cf29a20, 0x1bcbf: 0x6c65d620,\n\t// Block 0x6f3, offset 0x1bcc0\n\t0x1bcc0: 0x6c41ea20, 0x1bcc1: 0x6d1db220, 0x1bcc2: 0x6c825620, 0x1bcc3: 0x6ca46e20,\n\t0x1bcc4: 0x6c91da20, 0x1bcc5: 0x6ccda820, 0x1bcc6: 0x6d3d7c20, 0x1bcc7: 0x6d2afa20,\n\t0x1bcc8: 0x6cb41420, 0x1bcc9: 0x6c21d620, 0x1bcca: 0x6c5f5220, 0x1bccb: 0x6c293420,\n\t0x1bccc: 0x6ccb5620, 0x1bccd: 0x6c126820, 0x1bcce: 0x6cbe8c20, 0x1bccf: 0x6cbe8420,\n\t0x1bcd0: 0x6c595220, 0x1bcd1: 0x6c6a3020, 0x1bcd2: 0x6cbd9420, 0x1bcd3: 0x6c7b0220,\n\t0x1bcd4: 0x6c27fa20, 0x1bcd5: 0x6d00dc20, 0x1bcd6: 0x6c761420, 0x1bcd7: 0x6cb06e20,\n\t0x1bcd8: 0x6c040620, 0x1bcd9: 0x6c02f220, 0x1bcda: 0x6c728c20, 0x1bcdb: 0x6d132620,\n\t0x1bcdc: 0x6c370620, 0x1bcdd: 0x6c9c2c20, 0x1bcde: 0x6cda2620, 0x1bcdf: 0x6c9c7a20,\n\t0x1bce0: 0x6c615420, 0x1bce1: 0x6cdf4820, 0x1bce2: 0x6d3da820, 0x1bce3: 0x6c29f220,\n\t0x1bce4: 0x6d040a20, 0x1bce5: 0x6c804420, 0x1bce6: 0x6c10da20, 0x1bce7: 0x6c71d820,\n\t0x1bce8: 0x6d129220, 0x1bce9: 0x6cc80620, 0x1bcea: 0x6d136820, 0x1bceb: 0x6d135a20,\n\t0x1bcec: 0x6ca65220, 0x1bced: 0x6cf31420, 0x1bcee: 0x6c60bc20, 0x1bcef: 0x6c0d8820,\n\t0x1bcf0: 0x6ca92420, 0x1bcf1: 0x6c43b420, 0x1bcf2: 0x6d370420, 0x1bcf3: 0x6d36de20,\n\t0x1bcf4: 0x6c7e1a20, 0x1bcf5: 0x6ca08620, 0x1bcf6: 0x6c66ec20, 0x1bcf7: 0x6d011020,\n\t0x1bcf8: 0x6c8b4c20, 0x1bcf9: 0x6cdfc020, 0x1bcfa: 0x6c042a20, 0x1bcfb: 0x6cda3020,\n\t0x1bcfc: 0x6c91e820, 0x1bcfd: 0x6c94ca20, 0x1bcfe: 0x6cc54220, 0x1bcff: 0x6ce2fe20,\n\t// Block 0x6f4, offset 0x1bd00\n\t0x1bd00: 0x6cac4c20, 0x1bd01: 0x6d103620, 0x1bd02: 0x6c834c20, 0x1bd03: 0x6c10dc20,\n\t0x1bd04: 0x6cd51420, 0x1bd05: 0x6d297a20, 0x1bd06: 0x6ca74220, 0x1bd07: 0x6cfc4020,\n\t0x1bd08: 0x6c75fa20, 0x1bd09: 0x6c5d6620, 0x1bd0a: 0x6c86f420, 0x1bd0b: 0x6c7ea420,\n\t0x1bd0c: 0x6c58e420, 0x1bd0d: 0x6d1cb620, 0x1bd0e: 0x6c917020, 0x1bd0f: 0x6c904420,\n\t0x1bd10: 0x6cb93a20, 0x1bd11: 0x6cb93c20, 0x1bd12: 0x6d297c20, 0x1bd13: 0x6cb94620,\n\t0x1bd14: 0x6c7fe620, 0x1bd15: 0x6cfafc20, 0x1bd16: 0x6d1c1e20, 0x1bd17: 0x6c9a3a20,\n\t0x1bd18: 0x6cc50820, 0x1bd19: 0x6c14e020, 0x1bd1a: 0x6d1d6c20, 0x1bd1b: 0x6c249820,\n\t0x1bd1c: 0x6d012420, 0x1bd1d: 0x6ccf8a20, 0x1bd1e: 0x6c957420, 0x1bd1f: 0x6c760820,\n\t0x1bd20: 0x6c9cb220, 0x1bd21: 0x6c84a620, 0x1bd22: 0x6d298220, 0x1bd23: 0x6c945820,\n\t0x1bd24: 0x6cdfc420, 0x1bd25: 0x6d416420, 0x1bd26: 0x6c876620, 0x1bd27: 0x6c2cf820,\n\t0x1bd28: 0x6cec0020, 0x1bd29: 0x6c293c20, 0x1bd2a: 0x6c697420, 0x1bd2b: 0x6c751c20,\n\t0x1bd2c: 0x6c805c20, 0x1bd2d: 0x6c879e20, 0x1bd2e: 0x6ca47620, 0x1bd2f: 0x6d337e20,\n\t0x1bd30: 0x6c4b2820, 0x1bd31: 0x6c4ad820, 0x1bd32: 0x6cb4f020, 0x1bd33: 0x6d0a3a20,\n\t0x1bd34: 0x6cb3fc20, 0x1bd35: 0x6cdba820, 0x1bd36: 0x6cd42a20, 0x1bd37: 0x6c779a20,\n\t0x1bd38: 0x6d1e9020, 0x1bd39: 0x6c410c20, 0x1bd3a: 0x6d15bc20, 0x1bd3b: 0x6c455e20,\n\t0x1bd3c: 0x6c416620, 0x1bd3d: 0x6c047220, 0x1bd3e: 0x6c39e220, 0x1bd3f: 0x6d334220,\n\t// Block 0x6f5, offset 0x1bd40\n\t0x1bd40: 0x6cb36c20, 0x1bd41: 0x6c2cc020, 0x1bd42: 0x6c79da20, 0x1bd43: 0x6c9f9a20,\n\t0x1bd44: 0x6cf4c420, 0x1bd45: 0x6c480020, 0x1bd46: 0x6c50f020, 0x1bd47: 0x6c12d620,\n\t0x1bd48: 0x6cffdc20, 0x1bd49: 0x6c9ce620, 0x1bd4a: 0x6c1f2420, 0x1bd4b: 0x6c43d620,\n\t0x1bd4c: 0x6c2b6220, 0x1bd4d: 0x6d06b620, 0x1bd4e: 0x6c699a20, 0x1bd4f: 0x6c9fa820,\n\t0x1bd50: 0x6c18bc20, 0x1bd51: 0x6c6ff220, 0x1bd52: 0x6ccfda20, 0x1bd53: 0x6c344620,\n\t0x1bd54: 0x6d224e20, 0x1bd55: 0x6c1c0e20, 0x1bd56: 0x6c024020, 0x1bd57: 0x6c044020,\n\t0x1bd58: 0x6d06b820, 0x1bd59: 0x6c699c20, 0x1bd5a: 0x6c344820, 0x1bd5b: 0x6c88b420,\n\t0x1bd5c: 0x6ca82c20, 0x1bd5d: 0x6c097820, 0x1bd5e: 0x6c172c20, 0x1bd5f: 0x6c2d1a20,\n\t0x1bd60: 0x6c342e20, 0x1bd61: 0x6d179c20, 0x1bd62: 0x6c41d420, 0x1bd63: 0x6cca5420,\n\t0x1bd64: 0x6c786820, 0x1bd65: 0x6d0e7020, 0x1bd66: 0x6c339a20, 0x1bd67: 0x6c5ecc20,\n\t0x1bd68: 0x6ce81420, 0x1bd69: 0x6cffea20, 0x1bd6a: 0x6c345020, 0x1bd6b: 0x6c690620,\n\t0x1bd6c: 0x6c6e8420, 0x1bd6d: 0x6d0fc220, 0x1bd6e: 0x6cf9ce20, 0x1bd6f: 0x6c9f5e20,\n\t0x1bd70: 0x6cd5e420, 0x1bd71: 0x6c004820, 0x1bd72: 0x6cbb8c20, 0x1bd73: 0x6c004a20,\n\t0x1bd74: 0x6d333220, 0x1bd75: 0x6c2b8820, 0x1bd76: 0x6d324c20, 0x1bd77: 0x6c3d8e20,\n\t0x1bd78: 0x6cd60020, 0x1bd79: 0x6c8a1020, 0x1bd7a: 0x6cc13620, 0x1bd7b: 0x6d049e20,\n\t0x1bd7c: 0x6d161020, 0x1bd7d: 0x6c694020, 0x1bd7e: 0x6ccdfc20, 0x1bd7f: 0x6c694220,\n\t// Block 0x6f6, offset 0x1bd80\n\t0x1bd80: 0x6d3daa20, 0x1bd81: 0x6d18c220, 0x1bd82: 0x6c88ca20, 0x1bd83: 0x6c0a6820,\n\t0x1bd84: 0x6c848820, 0x1bd85: 0x6d002220, 0x1bd86: 0x6d002420, 0x1bd87: 0x6cf17a20,\n\t0x1bd88: 0x6d08f420, 0x1bd89: 0x6cb58220, 0x1bd8a: 0x6cb5a220, 0x1bd8b: 0x6d2cea20,\n\t0x1bd8c: 0x6c0d3620, 0x1bd8d: 0x6c742620, 0x1bd8e: 0x6d2cf020, 0x1bd8f: 0x6c80b820,\n\t0x1bd90: 0x6c3a5620, 0x1bd91: 0x6c048020, 0x1bd92: 0x6c048820, 0x1bd93: 0x6c7fb420,\n\t0x1bd94: 0x6d22a620, 0x1bd95: 0x6c7ff620, 0x1bd96: 0x6cf06420, 0x1bd97: 0x6c30f820,\n\t0x1bd98: 0x6cd0de20, 0x1bd99: 0x6c8a9420, 0x1bd9a: 0x6c640a20, 0x1bd9b: 0x6c554420,\n\t0x1bd9c: 0x6d00a020, 0x1bd9d: 0x6c641820, 0x1bd9e: 0x6d225820, 0x1bd9f: 0x6d316420,\n\t0x1bda0: 0x6c69ae20, 0x1bda1: 0x6cf30220, 0x1bda2: 0x6ce5ca20, 0x1bda3: 0x6c313a20,\n\t0x1bda4: 0x6c6c1e20, 0x1bda5: 0x6c1bdc20, 0x1bda6: 0x6d1a2e20, 0x1bda7: 0x6c3f4420,\n\t0x1bda8: 0x6cbaa420, 0x1bda9: 0x6d2ddc20, 0x1bdaa: 0x6cc17820, 0x1bdab: 0x6d3d3220,\n\t0x1bdac: 0x6d2de620, 0x1bdad: 0x6c32ba20, 0x1bdae: 0x6c262820, 0x1bdaf: 0x6cd7e820,\n\t0x1bdb0: 0x6d02dc20, 0x1bdb1: 0x6d3d5c20, 0x1bdb2: 0x6d3d7e20, 0x1bdb3: 0x6cbd9620,\n\t0x1bdb4: 0x6c8bda20, 0x1bdb5: 0x6d3dac20, 0x1bdb6: 0x6c1f7c20, 0x1bdb7: 0x6c32e020,\n\t0x1bdb8: 0x6d3a9020, 0x1bdb9: 0x6c398020, 0x1bdba: 0x6c159820, 0x1bdbb: 0x6c4f5e20,\n\t0x1bdbc: 0x6d20c220, 0x1bdbd: 0x6cd1aa20, 0x1bdbe: 0x6cae0e20, 0x1bdbf: 0x6d1f0820,\n\t// Block 0x6f7, offset 0x1bdc0\n\t0x1bdc0: 0x6c9a7c20, 0x1bdc1: 0x6cacfa20, 0x1bdc2: 0x6cb5a420, 0x1bdc3: 0x6d2d6820,\n\t0x1bdc4: 0x6c98d020, 0x1bdc5: 0x6c938a20, 0x1bdc6: 0x6cae1220, 0x1bdc7: 0x6caf6020,\n\t0x1bdc8: 0x6c8e4e20, 0x1bdc9: 0x6c3d6220, 0x1bdca: 0x6c39d020, 0x1bdcb: 0x6d081020,\n\t0x1bdcc: 0x6c6daa20, 0x1bdcd: 0x6c6dac20, 0x1bdce: 0x6ca63620, 0x1bdcf: 0x6d40b820,\n\t0x1bdd0: 0x6d2fb020, 0x1bdd1: 0x6d15ee20, 0x1bdd2: 0x6c8e6a20, 0x1bdd3: 0x6cce7420,\n\t0x1bdd4: 0x6c668a20, 0x1bdd5: 0x6d214c20, 0x1bdd6: 0x6d15fe20, 0x1bdd7: 0x6cb61a20,\n\t0x1bdd8: 0x6d36e020, 0x1bdd9: 0x6c385e20, 0x1bdda: 0x6cb16620, 0x1bddb: 0x6c386020,\n\t0x1bddc: 0x6d2db220, 0x1bddd: 0x6c7b4420, 0x1bdde: 0x6cdc9a20, 0x1bddf: 0x6d21d420,\n\t0x1bde0: 0x6cf39a20, 0x1bde1: 0x6c616c20, 0x1bde2: 0x6c61a820, 0x1bde3: 0x6c61ec20,\n\t0x1bde4: 0x6c5dce20, 0x1bde5: 0x6cc63620, 0x1bde6: 0x6c285e20, 0x1bde7: 0x6c6fca20,\n\t0x1bde8: 0x6d34d820, 0x1bde9: 0x6d2a3a20, 0x1bdea: 0x6d006820, 0x1bdeb: 0x6ce54620,\n\t0x1bdec: 0x6d09d620, 0x1bded: 0x6d066820, 0x1bdee: 0x6c40bc20, 0x1bdef: 0x6c7e5820,\n\t0x1bdf0: 0x6c420c20, 0x1bdf1: 0x6c4e8a20, 0x1bdf2: 0x6cdf1020, 0x1bdf3: 0x6c2c1620,\n\t0x1bdf4: 0x6d056620, 0x1bdf5: 0x6c159420, 0x1bdf6: 0x6cd23a20, 0x1bdf7: 0x6c7bde20,\n\t0x1bdf8: 0x6d0f7c20, 0x1bdf9: 0x6cd24620, 0x1bdfa: 0x6cee4c20, 0x1bdfb: 0x6c9f3020,\n\t0x1bdfc: 0x6c9f3220, 0x1bdfd: 0x6cea8620, 0x1bdfe: 0x6c20fc20, 0x1bdff: 0x6cf42820,\n\t// Block 0x6f8, offset 0x1be00\n\t0x1be00: 0x6d278820, 0x1be01: 0x6c06e620, 0x1be02: 0x6c01f420, 0x1be03: 0x6d2b3e20,\n\t0x1be04: 0x6c04ba20, 0x1be05: 0x6c6a7420, 0x1be06: 0x6c7d4c20, 0x1be07: 0x6cd0e020,\n\t0x1be08: 0x6c566820, 0x1be09: 0x6c39c420, 0x1be0a: 0x6c501c20, 0x1be0b: 0x6c4b2e20,\n\t0x1be0c: 0x6c166020, 0x1be0d: 0x6d077c20, 0x1be0e: 0x6c9fe820, 0x1be0f: 0x6c5cb220,\n\t0x1be10: 0x6c3b1620, 0x1be11: 0x6cbdc820, 0x1be12: 0x6c54a220, 0x1be13: 0x6d16ba20,\n\t0x1be14: 0x6cf58620, 0x1be15: 0x6d02b220, 0x1be16: 0x6d0c6420, 0x1be17: 0x6d2b4020,\n\t0x1be18: 0x6c39c620, 0x1be19: 0x6cdfd220, 0x1be1a: 0x6cd09420, 0x1be1b: 0x6c721020,\n\t0x1be1c: 0x6d0f9620, 0x1be1d: 0x6d296020, 0x1be1e: 0x6c0dcc20, 0x1be1f: 0x6d036a20,\n\t0x1be20: 0x6d1d3420, 0x1be21: 0x6d087620, 0x1be22: 0x6cb36e20, 0x1be23: 0x6d31c020,\n\t0x1be24: 0x6c8cb420, 0x1be25: 0x6c210020, 0x1be26: 0x6c502020, 0x1be27: 0x6c9a7e20,\n\t0x1be28: 0x6d422e20, 0x1be29: 0x6ca0e020, 0x1be2a: 0x6c0b8620, 0x1be2b: 0x6d069020,\n\t0x1be2c: 0x6c5cb420, 0x1be2d: 0x6d2f5c20, 0x1be2e: 0x6d401820, 0x1be2f: 0x6cd33820,\n\t0x1be30: 0x6cd33a20, 0x1be31: 0x6d22e220, 0x1be32: 0x6c3a8e20, 0x1be33: 0x6c2e7420,\n\t0x1be34: 0x6c993220, 0x1be35: 0x6ca68620, 0x1be36: 0x6c16e620, 0x1be37: 0x6cf14a20,\n\t0x1be38: 0x6c2fe420, 0x1be39: 0x6c006220, 0x1be3a: 0x6c0dce20, 0x1be3b: 0x6c01f620,\n\t0x1be3c: 0x6d390e20, 0x1be3d: 0x6c8f7420, 0x1be3e: 0x6cfbec20, 0x1be3f: 0x6c7be820,\n\t// Block 0x6f9, offset 0x1be40\n\t0x1be40: 0x6ce5ba20, 0x1be41: 0x6c175c20, 0x1be42: 0x6cd25c20, 0x1be43: 0x6c5a8220,\n\t0x1be44: 0x6c5a4e20, 0x1be45: 0x6d084820, 0x1be46: 0x6c7c6220, 0x1be47: 0x6d058020,\n\t0x1be48: 0x6c68dc20, 0x1be49: 0x6c6cea20, 0x1be4a: 0x6d35ba20, 0x1be4b: 0x6c6cec20,\n\t0x1be4c: 0x6cce3620, 0x1be4d: 0x6ce72e20, 0x1be4e: 0x6c53a020, 0x1be4f: 0x6d0e5020,\n\t0x1be50: 0x6c40ec20, 0x1be51: 0x6cfde020, 0x1be52: 0x6ccc9c20, 0x1be53: 0x6cffa820,\n\t0x1be54: 0x6d12de20, 0x1be55: 0x6d274c20, 0x1be56: 0x6c5aa220, 0x1be57: 0x6c4dfe20,\n\t0x1be58: 0x6c4eac20, 0x1be59: 0x6c75ae20, 0x1be5a: 0x6ced0820, 0x1be5b: 0x6cfcb020,\n\t0x1be5c: 0x6c7d5820, 0x1be5d: 0x6d392020, 0x1be5e: 0x6cf5ea20, 0x1be5f: 0x6c19de20,\n\t0x1be60: 0x6cd15820, 0x1be61: 0x6c101420, 0x1be62: 0x6d304c20, 0x1be63: 0x6d304e20,\n\t0x1be64: 0x6cf4dc20, 0x1be65: 0x6c4eae20, 0x1be66: 0x6c5bb620, 0x1be67: 0x6c503420,\n\t0x1be68: 0x6c194e20, 0x1be69: 0x6ced1820, 0x1be6a: 0x6ce4f420, 0x1be6b: 0x6d3d5e20,\n\t0x1be6c: 0x6d41b220, 0x1be6d: 0x6d38e820, 0x1be6e: 0x6cb48c20, 0x1be6f: 0x6c6e2020,\n\t0x1be70: 0x6cf60c20, 0x1be71: 0x6ccd4020, 0x1be72: 0x6ca63820, 0x1be73: 0x6cf60e20,\n\t0x1be74: 0x6cbe7a20, 0x1be75: 0x6cb6fc20, 0x1be76: 0x6c6db420, 0x1be77: 0x6c4afc20,\n\t0x1be78: 0x6d332220, 0x1be79: 0x6d179e20, 0x1be7a: 0x6d362820, 0x1be7b: 0x6c01c220,\n\t0x1be7c: 0x6ced1a20, 0x1be7d: 0x6c8bb220, 0x1be7e: 0x6c89b820, 0x1be7f: 0x6c166e20,\n\t// Block 0x6fa, offset 0x1be80\n\t0x1be80: 0x6cee1820, 0x1be81: 0x6cffac20, 0x1be82: 0x6d298c20, 0x1be83: 0x6c3b0620,\n\t0x1be84: 0x6d07a620, 0x1be85: 0x6c453420, 0x1be86: 0x6d151820, 0x1be87: 0x6cf9d020,\n\t0x1be88: 0x6d275420, 0x1be89: 0x6c5ac220, 0x1be8a: 0x6d064220, 0x1be8b: 0x6c9fba20,\n\t0x1be8c: 0x6c7c8820, 0x1be8d: 0x6d126020, 0x1be8e: 0x6d1d3a20, 0x1be8f: 0x6cd55c20,\n\t0x1be90: 0x6cefd820, 0x1be91: 0x6cd55a20, 0x1be92: 0x6cbe8220, 0x1be93: 0x6c998e20,\n\t0x1be94: 0x6ca40020, 0x1be95: 0x6c65ac20, 0x1be96: 0x6caa9420, 0x1be97: 0x6c01c620,\n\t0x1be98: 0x6d0fc420, 0x1be99: 0x6c210a20, 0x1be9a: 0x6d111e20, 0x1be9b: 0x6cdd7820,\n\t0x1be9c: 0x6c6d2820, 0x1be9d: 0x6ca00e20, 0x1be9e: 0x6c691620, 0x1be9f: 0x6c766620,\n\t0x1bea0: 0x6c430e20, 0x1bea1: 0x6cf25620, 0x1bea2: 0x6c171c20, 0x1bea3: 0x6cb7b020,\n\t0x1bea4: 0x6c505220, 0x1bea5: 0x6d0e9420, 0x1bea6: 0x6c864a20, 0x1bea7: 0x6c00ba20,\n\t0x1bea8: 0x6c623620, 0x1bea9: 0x6c626020, 0x1beaa: 0x6c9af820, 0x1beab: 0x6d299620,\n\t0x1beac: 0x6d01f820, 0x1bead: 0x6c505820, 0x1beae: 0x6ca2a220, 0x1beaf: 0x6ca14020,\n\t0x1beb0: 0x6c233820, 0x1beb1: 0x6ca6b820, 0x1beb2: 0x6d2ed420, 0x1beb3: 0x6c5c1420,\n\t0x1beb4: 0x6c066220, 0x1beb5: 0x6c4ef820, 0x1beb6: 0x6d081e20, 0x1beb7: 0x6c200420,\n\t0x1beb8: 0x6c8a1820, 0x1beb9: 0x6cfacc20, 0x1beba: 0x6c28ae20, 0x1bebb: 0x6c6e2e20,\n\t0x1bebc: 0x6cb1d220, 0x1bebd: 0x6c8bdc20, 0x1bebe: 0x6cea2820, 0x1bebf: 0x6cf80e20,\n\t// Block 0x6fb, offset 0x1bec0\n\t0x1bec0: 0x6d189220, 0x1bec1: 0x6c627620, 0x1bec2: 0x6c5a7620, 0x1bec3: 0x6c278820,\n\t0x1bec4: 0x6d131220, 0x1bec5: 0x6d131420, 0x1bec6: 0x6c867820, 0x1bec7: 0x6ce00e20,\n\t0x1bec8: 0x6ce78220, 0x1bec9: 0x6cffba20, 0x1beca: 0x6c3ace20, 0x1becb: 0x6cd07420,\n\t0x1becc: 0x6d2fde20, 0x1becd: 0x6c506620, 0x1bece: 0x6d18c420, 0x1becf: 0x6cfdfc20,\n\t0x1bed0: 0x6d03a220, 0x1bed1: 0x6cd02620, 0x1bed2: 0x6c694a20, 0x1bed3: 0x6c067020,\n\t0x1bed4: 0x6c6eaa20, 0x1bed5: 0x6d0ed020, 0x1bed6: 0x6c00de20, 0x1bed7: 0x6d135c20,\n\t0x1bed8: 0x6cc7dc20, 0x1bed9: 0x6cd57420, 0x1beda: 0x6c9b5820, 0x1bedb: 0x6d09b820,\n\t0x1bedc: 0x6d122e20, 0x1bedd: 0x6cb4bc20, 0x1bede: 0x6c86ca20, 0x1bedf: 0x6c18f620,\n\t0x1bee0: 0x6c7c0e20, 0x1bee1: 0x6c2f0420, 0x1bee2: 0x6c8a7e20, 0x1bee3: 0x6d0ef820,\n\t0x1bee4: 0x6c5e3e20, 0x1bee5: 0x6c917e20, 0x1bee6: 0x6cf73220, 0x1bee7: 0x6cc6dc20,\n\t0x1bee8: 0x6c8fd620, 0x1bee9: 0x6ca47220, 0x1beea: 0x6c95d620, 0x1beeb: 0x6c945a20,\n\t0x1beec: 0x6cccae20, 0x1beed: 0x6ce18e20, 0x1beee: 0x6d0e2420, 0x1beef: 0x6d3a4420,\n\t0x1bef0: 0x6d264220, 0x1bef1: 0x6d264420, 0x1bef2: 0x6cc0c620, 0x1bef3: 0x6d12bc20,\n\t0x1bef4: 0x6c452620, 0x1bef5: 0x6d12c420, 0x1bef6: 0x6c54a420, 0x1bef7: 0x6c50d620,\n\t0x1bef8: 0x6cd4b820, 0x1bef9: 0x6c127420, 0x1befa: 0x6c127020, 0x1befb: 0x6cd18620,\n\t0x1befc: 0x6c97da20, 0x1befd: 0x6c134820, 0x1befe: 0x6c135020, 0x1beff: 0x6ce3fc20,\n\t// Block 0x6fc, offset 0x1bf00\n\t0x1bf00: 0x6d41b020, 0x1bf01: 0x6c11d020, 0x1bf02: 0x6d06d620, 0x1bf03: 0x6c5be220,\n\t0x1bf04: 0x6d1af620, 0x1bf05: 0x6cbcd220, 0x1bf06: 0x6c3b4220, 0x1bf07: 0x6cb03820,\n\t0x1bf08: 0x6d266820, 0x1bf09: 0x6d1f9820, 0x1bf0a: 0x6cc85020, 0x1bf0b: 0x6cae8e20,\n\t0x1bf0c: 0x6c3b5a20, 0x1bf0d: 0x6c3df220, 0x1bf0e: 0x6c8cb620, 0x1bf0f: 0x6c3a4820,\n\t0x1bf10: 0x6cc17a20, 0x1bf11: 0x6ce3da20, 0x1bf12: 0x6caa7e20, 0x1bf13: 0x6ce5bc20,\n\t0x1bf14: 0x6cd77620, 0x1bf15: 0x6d322e20, 0x1bf16: 0x6c80fa20, 0x1bf17: 0x6c80f820,\n\t0x1bf18: 0x6d416c20, 0x1bf19: 0x6c9ff620, 0x1bf1a: 0x6c598c20, 0x1bf1b: 0x6cee5220,\n\t0x1bf1c: 0x6cea2020, 0x1bf1d: 0x6c176220, 0x1bf1e: 0x6c5ed220, 0x1bf1f: 0x6cb4f220,\n\t0x1bf20: 0x6d1bba20, 0x1bf21: 0x6d3f9820, 0x1bf22: 0x6cee5820, 0x1bf23: 0x6ce78420,\n\t0x1bf24: 0x6c811220, 0x1bf25: 0x6c81fa20, 0x1bf26: 0x6c9b5a20, 0x1bf27: 0x6c8fd820,\n\t0x1bf28: 0x6ca25c20, 0x1bf29: 0x6c2ac820, 0x1bf2a: 0x6cf06c20, 0x1bf2b: 0x6ca0bc20,\n\t0x1bf2c: 0x6c079220, 0x1bf2d: 0x6d2c1620, 0x1bf2e: 0x6cd59020, 0x1bf2f: 0x6cd59220,\n\t0x1bf30: 0x6ca26220, 0x1bf31: 0x6d397e20, 0x1bf32: 0x6cc56620, 0x1bf33: 0x6c031420,\n\t0x1bf34: 0x6cb48220, 0x1bf35: 0x6c352a20, 0x1bf36: 0x6c347020, 0x1bf37: 0x6c29ba20,\n\t0x1bf38: 0x6c857220, 0x1bf39: 0x6c4abe20, 0x1bf3a: 0x6c5e7820, 0x1bf3b: 0x6c6f4820,\n\t0x1bf3c: 0x6c08b220, 0x1bf3d: 0x6d051c20, 0x1bf3e: 0x6c19b420, 0x1bf3f: 0x6c22a820,\n\t// Block 0x6fd, offset 0x1bf40\n\t0x1bf40: 0x6ccbc020, 0x1bf41: 0x6cc83420, 0x1bf42: 0x6d28ac20, 0x1bf43: 0x6cc2b420,\n\t0x1bf44: 0x6cb8a620, 0x1bf45: 0x6d20b620, 0x1bf46: 0x6c416820, 0x1bf47: 0x6cf35420,\n\t0x1bf48: 0x6c137c20, 0x1bf49: 0x6cccbc20, 0x1bf4a: 0x6d09dc20, 0x1bf4b: 0x6c388420,\n\t0x1bf4c: 0x6cf4aa20, 0x1bf4d: 0x6d3ee620, 0x1bf4e: 0x6c87d820, 0x1bf4f: 0x6d041220,\n\t0x1bf50: 0x6c110820, 0x1bf51: 0x6c259220, 0x1bf52: 0x6cc5c220, 0x1bf53: 0x6c0bea20,\n\t0x1bf54: 0x6ceaa220, 0x1bf55: 0x6c2c1820, 0x1bf56: 0x6d2f2220, 0x1bf57: 0x6c983220,\n\t0x1bf58: 0x6c1be220, 0x1bf59: 0x6d168a20, 0x1bf5a: 0x6c412c20, 0x1bf5b: 0x6c456020,\n\t0x1bf5c: 0x6c323420, 0x1bf5d: 0x6c83a220, 0x1bf5e: 0x6cb6d620, 0x1bf5f: 0x6cd59820,\n\t0x1bf60: 0x6c425620, 0x1bf61: 0x6ce56a20, 0x1bf62: 0x6c681a20, 0x1bf63: 0x6ccdf820,\n\t0x1bf64: 0x6cedb620, 0x1bf65: 0x6c7ee020, 0x1bf66: 0x6c704420, 0x1bf67: 0x6c983420,\n\t0x1bf68: 0x6d0f7e20, 0x1bf69: 0x6c96b220, 0x1bf6a: 0x6c9e8820, 0x1bf6b: 0x6cd88e20,\n\t0x1bf6c: 0x6d254020, 0x1bf6d: 0x6c4f6020, 0x1bf6e: 0x6c3a8620, 0x1bf6f: 0x6c069020,\n\t0x1bf70: 0x6c6a7e20, 0x1bf71: 0x6c2fe020, 0x1bf72: 0x6c430020, 0x1bf73: 0x6d118e20,\n\t0x1bf74: 0x6cfa7c20, 0x1bf75: 0x6c1ed620, 0x1bf76: 0x6c20fe20, 0x1bf77: 0x6cabd020,\n\t0x1bf78: 0x6cd4a820, 0x1bf79: 0x6c578220, 0x1bf7a: 0x6d02b420, 0x1bf7b: 0x6c1e2020,\n\t0x1bf7c: 0x6d3aae20, 0x1bf7d: 0x6c1e2220, 0x1bf7e: 0x6cd90420, 0x1bf7f: 0x6c04bc20,\n\t// Block 0x6fe, offset 0x1bf80\n\t0x1bf80: 0x6cd90620, 0x1bf81: 0x6c5fd420, 0x1bf82: 0x6cf2d620, 0x1bf83: 0x6c6cda20,\n\t0x1bf84: 0x6c469420, 0x1bf85: 0x6c5e8e20, 0x1bf86: 0x6c98c620, 0x1bf87: 0x6cafb820,\n\t0x1bf88: 0x6c093a20, 0x1bf89: 0x6cee6220, 0x1bf8a: 0x6c021220, 0x1bf8b: 0x6c398820,\n\t0x1bf8c: 0x6c3b5c20, 0x1bf8d: 0x6d16bc20, 0x1bf8e: 0x6c3df420, 0x1bf8f: 0x6ca3e420,\n\t0x1bf90: 0x6cf58820, 0x1bf91: 0x6c566a20, 0x1bf92: 0x6d0ad420, 0x1bf93: 0x6c30dc20,\n\t0x1bf94: 0x6d02fe20, 0x1bf95: 0x6d31ba20, 0x1bf96: 0x6d109020, 0x1bf97: 0x6c8ba020,\n\t0x1bf98: 0x6cc8c220, 0x1bf99: 0x6c35ac20, 0x1bf9a: 0x6c99d620, 0x1bf9b: 0x6d2f9a20,\n\t0x1bf9c: 0x6c4cae20, 0x1bf9d: 0x6d339620, 0x1bf9e: 0x6c230420, 0x1bf9f: 0x6d281c20,\n\t0x1bfa0: 0x6d41e420, 0x1bfa1: 0x6c30de20, 0x1bfa2: 0x6cd4aa20, 0x1bfa3: 0x6d2a3c20,\n\t0x1bfa4: 0x6c352c20, 0x1bfa5: 0x6c858e20, 0x1bfa6: 0x6c934620, 0x1bfa7: 0x6c656620,\n\t0x1bfa8: 0x6c19be20, 0x1bfa9: 0x6cd9a020, 0x1bfaa: 0x6cbaa620, 0x1bfab: 0x6c3c2220,\n\t0x1bfac: 0x6ca3e620, 0x1bfad: 0x6cfe8620, 0x1bfae: 0x6cfa8a20, 0x1bfaf: 0x6c7a2e20,\n\t0x1bfb0: 0x6cb28420, 0x1bfb1: 0x6cdf1c20, 0x1bfb2: 0x6cf7d420, 0x1bfb3: 0x6d350220,\n\t0x1bfb4: 0x6c48da20, 0x1bfb5: 0x6cfe8c20, 0x1bfb6: 0x6c643a20, 0x1bfb7: 0x6c633420,\n\t0x1bfb8: 0x6c467620, 0x1bfb9: 0x6c05aa20, 0x1bfba: 0x6ca0e220, 0x1bfbb: 0x6d16f220,\n\t0x1bfbc: 0x6d12d820, 0x1bfbd: 0x6d12e020, 0x1bfbe: 0x6cd33c20, 0x1bfbf: 0x6ca7fa20,\n\t// Block 0x6ff, offset 0x1bfc0\n\t0x1bfc0: 0x6c08c220, 0x1bfc1: 0x6c34d820, 0x1bfc2: 0x6d149e20, 0x1bfc3: 0x6c8cb820,\n\t0x1bfc4: 0x6c0dd020, 0x1bfc5: 0x6ca63020, 0x1bfc6: 0x6c7e4020, 0x1bfc7: 0x6c50d820,\n\t0x1bfc8: 0x6c04f020, 0x1bfc9: 0x6c388620, 0x1bfca: 0x6d37a420, 0x1bfcb: 0x6c274620,\n\t0x1bfcc: 0x6c222c20, 0x1bfcd: 0x6d100a20, 0x1bfce: 0x6c3d4a20, 0x1bfcf: 0x6c041a20,\n\t0x1bfd0: 0x6ca1fe20, 0x1bfd1: 0x6c418620, 0x1bfd2: 0x6cb4d420, 0x1bfd3: 0x6cc4ba20,\n\t0x1bfd4: 0x6cc74220, 0x1bfd5: 0x6c995220, 0x1bfd6: 0x6cce9a20, 0x1bfd7: 0x6cd90e20,\n\t0x1bfd8: 0x6d30e620, 0x1bfd9: 0x6cf99620, 0x1bfda: 0x6d202a20, 0x1bfdb: 0x6ccfba20,\n\t0x1bfdc: 0x6c4b3020, 0x1bfdd: 0x6ceb9a20, 0x1bfde: 0x6d2cb420, 0x1bfdf: 0x6ca3ec20,\n\t0x1bfe0: 0x6ca8fe20, 0x1bfe1: 0x6d1e2420, 0x1bfe2: 0x6c2be420, 0x1bfe3: 0x6d359e20,\n\t0x1bfe4: 0x6d2bcc20, 0x1bfe5: 0x6c13cc20, 0x1bfe6: 0x6c287020, 0x1bfe7: 0x6c46f820,\n\t0x1bfe8: 0x6c107620, 0x1bfe9: 0x6c6fdc20, 0x1bfea: 0x6c022820, 0x1bfeb: 0x6c3e0c20,\n\t0x1bfec: 0x6c657020, 0x1bfed: 0x6c032e20, 0x1bfee: 0x6c34da20, 0x1bfef: 0x6c77de20,\n\t0x1bff0: 0x6ca3b020, 0x1bff1: 0x6d3abe20, 0x1bff2: 0x6c094820, 0x1bff3: 0x6c8efa20,\n\t0x1bff4: 0x6c147620, 0x1bff5: 0x6cccd020, 0x1bff6: 0x6cd89e20, 0x1bff7: 0x6c1f1820,\n\t0x1bff8: 0x6cadb620, 0x1bff9: 0x6cd31a20, 0x1bffa: 0x6c48dc20, 0x1bffb: 0x6d2bce20,\n\t0x1bffc: 0x6d119820, 0x1bffd: 0x6c195620, 0x1bffe: 0x6c6fde20, 0x1bfff: 0x6cd33e20,\n\t// Block 0x700, offset 0x1c000\n\t0x1c000: 0x6d33a620, 0x1c001: 0x6c8efc20, 0x1c002: 0x6c99de20, 0x1c003: 0x6c87da20,\n\t0x1c004: 0x6cc65620, 0x1c005: 0x6d2cb620, 0x1c006: 0x6d2aa020, 0x1c007: 0x6c0bec20,\n\t0x1c008: 0x6d2e4c20, 0x1c009: 0x6d35a020, 0x1c00a: 0x6c8f7620, 0x1c00b: 0x6c306220,\n\t0x1c00c: 0x6c914420, 0x1c00d: 0x6cd0ea20, 0x1c00e: 0x6c85a620, 0x1c00f: 0x6c7f9020,\n\t0x1c010: 0x6d1e1c20, 0x1c011: 0x6cd5ae20, 0x1c012: 0x6d09f620, 0x1c013: 0x6cd68420,\n\t0x1c014: 0x6cb76820, 0x1c015: 0x6d313820, 0x1c016: 0x6cb4dc20, 0x1c017: 0x6c85ca20,\n\t0x1c018: 0x6d14c220, 0x1c019: 0x6cfdba20, 0x1c01a: 0x6d323020, 0x1c01b: 0x6c85cc20,\n\t0x1c01c: 0x6ccb1a20, 0x1c01d: 0x6c484e20, 0x1c01e: 0x6c76a420, 0x1c01f: 0x6c078420,\n\t0x1c020: 0x6cc58e20, 0x1c021: 0x6cffde20, 0x1c022: 0x6c041c20, 0x1c023: 0x6cc59020,\n\t0x1c024: 0x6c0e1220, 0x1c025: 0x6d3e1620, 0x1c026: 0x6c1d9820, 0x1c027: 0x6d172c20,\n\t0x1c028: 0x6c22be20, 0x1c029: 0x6d063420, 0x1c02a: 0x6d399220, 0x1c02b: 0x6c666c20,\n\t0x1c02c: 0x6d41a820, 0x1c02d: 0x6c374a20, 0x1c02e: 0x6c378e20, 0x1c02f: 0x6d1fb820,\n\t0x1c030: 0x6c380c20, 0x1c031: 0x6c45e220, 0x1c032: 0x6c77a620, 0x1c033: 0x6c81ac20,\n\t0x1c034: 0x6d2d6a20, 0x1c035: 0x6c8aec20, 0x1c036: 0x6d19be20, 0x1c037: 0x6d104420,\n\t0x1c038: 0x6c50f220, 0x1c039: 0x6c449820, 0x1c03a: 0x6d172e20, 0x1c03b: 0x6cd34e20,\n\t0x1c03c: 0x6c43dc20, 0x1c03d: 0x6d28fc20, 0x1c03e: 0x6c943620, 0x1c03f: 0x6c3e3420,\n\t// Block 0x701, offset 0x1c040\n\t0x1c040: 0x6c6aa620, 0x1c041: 0x6c525c20, 0x1c042: 0x6c4b3e20, 0x1c043: 0x6ce21020,\n\t0x1c044: 0x6c49e420, 0x1c045: 0x6ceef420, 0x1c046: 0x6c7b9820, 0x1c047: 0x6cc79620,\n\t0x1c048: 0x6c01ac20, 0x1c049: 0x6c012020, 0x1c04a: 0x6c734a20, 0x1c04b: 0x6d14c420,\n\t0x1c04c: 0x6d3cf820, 0x1c04d: 0x6c7a3620, 0x1c04e: 0x6d35bc20, 0x1c04f: 0x6cbf0420,\n\t0x1c050: 0x6ce73020, 0x1c051: 0x6cca6c20, 0x1c052: 0x6cca6a20, 0x1c053: 0x6c586a20,\n\t0x1c054: 0x6c710420, 0x1c055: 0x6c6fea20, 0x1c056: 0x6d094c20, 0x1c057: 0x6c34e020,\n\t0x1c058: 0x6d3c7c20, 0x1c059: 0x6d20f220, 0x1c05a: 0x6d296420,\n\t0x1c05c: 0x6d1ba620, 0x1c05d: 0x6c6c1820, 0x1c05e: 0x6c8f6220, 0x1c05f: 0x6d2e5020,\n\t0x1c060: 0x6d0ade20, 0x1c061: 0x6cc52620, 0x1c062: 0x6d313a20, 0x1c063: 0x6c295e20,\n\t0x1c064: 0x6cb4de20, 0x1c065: 0x6cbbd820, 0x1c066: 0x6c578c20, 0x1c067: 0x6c4b4020,\n\t0x1c068: 0x6c67a220, 0x1c069: 0x6d3c1220, 0x1c06a: 0x6d09f820, 0x1c06b: 0x6cdd1620,\n\t0x1c06c: 0x6ccbe620, 0x1c06d: 0x6d314e20, 0x1c06e: 0x6c069a20, 0x1c06f: 0x6ce64020,\n\t0x1c070: 0x6c7df220, 0x1c071: 0x6c6e7020, 0x1c072: 0x6cb3c220, 0x1c073: 0x6c07b020,\n\t0x1c074: 0x6c3e4e20, 0x1c075: 0x6cc89a20, 0x1c076: 0x6ce7b620, 0x1c077: 0x6c742820,\n\t0x1c078: 0x6cf5ec20, 0x1c079: 0x6c80ba20, 0x1c07a: 0x6c8f0420, 0x1c07b: 0x6c3c3c20,\n\t0x1c07c: 0x6cb4e820, 0x1c07d: 0x6cf1d420, 0x1c07e: 0x6c756c20, 0x1c07f: 0x6c41d620,\n\t// Block 0x702, offset 0x1c080\n\t0x1c080: 0x6cdaa220, 0x1c081: 0x6c894c20, 0x1c082: 0x6cc04620, 0x1c083: 0x6ce6be20,\n\t0x1c084: 0x6d1fc020, 0x1c085: 0x6c99ec20, 0x1c086: 0x6c052420, 0x1c087: 0x6c906620,\n\t0x1c088: 0x6cae6820, 0x1c089: 0x6d3c1620, 0x1c08a: 0x6c2c4020, 0x1c08b: 0x6d078c20,\n\t0x1c08c: 0x6ce8a220, 0x1c08d: 0x6d2a7e20, 0x1c08e: 0x6c022a20, 0x1c08f: 0x6c481020,\n\t0x1c090: 0x6c097a20, 0x1c091: 0x6c2b6820, 0x1c092: 0x6c4e0020, 0x1c093: 0x6d3f0820,\n\t0x1c094: 0x6d33d420, 0x1c095: 0x6cc5e620, 0x1c096: 0x6c070e20, 0x1c097: 0x6c450820,\n\t0x1c098: 0x6c658620, 0x1c099: 0x6c591020, 0x1c09a: 0x6ced0a20, 0x1c09b: 0x6caaba20,\n\t0x1c09c: 0x6c634a20, 0x1c09d: 0x6ce57c20, 0x1c09e: 0x6c61ee20, 0x1c09f: 0x6cfeb220,\n\t0x1c0a0: 0x6c938e20, 0x1c0a1: 0x6c5ce620, 0x1c0a2: 0x6cce6820, 0x1c0a3: 0x6c133020,\n\t0x1c0a4: 0x6c3b6c20, 0x1c0a5: 0x6cd91a20, 0x1c0a6: 0x6c9c0220, 0x1c0a7: 0x6cf3c020,\n\t0x1c0a8: 0x6c83bc20, 0x1c0a9: 0x6c83be20, 0x1c0aa: 0x6c311020, 0x1c0ab: 0x6cbdd020,\n\t0x1c0ac: 0x6d1cea20, 0x1c0ad: 0x6cdd1820, 0x1c0ae: 0x6c708c20, 0x1c0af: 0x6ce2ea20,\n\t0x1c0b0: 0x6d019020, 0x1c0b1: 0x6c7da820, 0x1c0b2: 0x6d3d5020, 0x1c0b3: 0x6cd4ca20,\n\t0x1c0b4: 0x6c14c020, 0x1c0b5: 0x6c394220, 0x1c0b6: 0x6cefae20, 0x1c0b7: 0x6c6e7220,\n\t0x1c0b8: 0x6c83c020, 0x1c0b9: 0x6c0d3220, 0x1c0ba: 0x6cfa6420, 0x1c0bb: 0x6c3d1020,\n\t0x1c0bc: 0x6ce21c20, 0x1c0bd: 0x6d35e220, 0x1c0be: 0x6c7efa20, 0x1c0bf: 0x6c87fc20,\n\t// Block 0x703, offset 0x1c0c0\n\t0x1c0c0: 0x6c658820, 0x1c0c1: 0x6d3cfc20, 0x1c0c2: 0x6c8ce620, 0x1c0c3: 0x6c83d420,\n\t0x1c0c4: 0x6cb79220, 0x1c0c5: 0x6c0e2220, 0x1c0c6: 0x6c94f820, 0x1c0c7: 0x6c231620,\n\t0x1c0c8: 0x6cba5420, 0x1c0c9: 0x6c9dc420, 0x1c0ca: 0x6cb5e620, 0x1c0cb: 0x6cb5e820,\n\t0x1c0cc: 0x6c114620, 0x1c0cd: 0x6c4bf820, 0x1c0ce: 0x6c14f420, 0x1c0cf: 0x6c2a7020,\n\t0x1c0d0: 0x6c3a5820, 0x1c0d1: 0x6cabfe20, 0x1c0d2: 0x6c057020, 0x1c0d3: 0x6c057220,\n\t0x1c0d4: 0x6c5cca20, 0x1c0d5: 0x6d3f8e20, 0x1c0d6: 0x6c1a0020, 0x1c0d7: 0x6d2a4c20,\n\t0x1c0d8: 0x6c603820, 0x1c0d9: 0x6c861020, 0x1c0da: 0x6caea020, 0x1c0db: 0x6d233e20,\n\t0x1c0dc: 0x6d234020, 0x1c0dd: 0x6c481420, 0x1c0de: 0x6c75ba20, 0x1c0df: 0x6c307620,\n\t0x1c0e0: 0x6ce0f620, 0x1c0e1: 0x6c428020, 0x1c0e2: 0x6cee1a20, 0x1c0e3: 0x6c2c5620,\n\t0x1c0e4: 0x6c262a20, 0x1c0e5: 0x6c389c20, 0x1c0e6: 0x6c195c20, 0x1c0e7: 0x6d2e6220,\n\t0x1c0e8: 0x6cb6fe20, 0x1c0e9: 0x6d24f620, 0x1c0ea: 0x6d0d8820, 0x1c0eb: 0x6d234220,\n\t0x1c0ec: 0x6cc29e20, 0x1c0ed: 0x6d17a020, 0x1c0ee: 0x6ccbaa20, 0x1c0ef: 0x6cc59820,\n\t0x1c0f0: 0x6c20d220, 0x1c0f1: 0x6c837820, 0x1c0f2: 0x6cb4f420, 0x1c0f3: 0x6d3d0220,\n\t0x1c0f4: 0x6c3e7a20, 0x1c0f5: 0x6c77f820, 0x1c0f6: 0x6c7f0820, 0x1c0f7: 0x6d405220,\n\t0x1c0f8: 0x6d405420, 0x1c0f9: 0x6d2fb220, 0x1c0fa: 0x6c491620, 0x1c0fb: 0x6c3b2a20,\n\t0x1c0fc: 0x6c3b7420, 0x1c0fd: 0x6ccfe620, 0x1c0fe: 0x6cbe7c20, 0x1c0ff: 0x6ca5e420,\n\t// Block 0x704, offset 0x1c100\n\t0x1c100: 0x6ced1c20, 0x1c101: 0x6c4cc020, 0x1c102: 0x6c925420, 0x1c103: 0x6c4fc620,\n\t0x1c104: 0x6c6a1620, 0x1c105: 0x6d15f020, 0x1c106: 0x6c1dae20, 0x1c107: 0x6c71b620,\n\t0x1c108: 0x6c712220, 0x1c109: 0x6c1a0220, 0x1c10a: 0x6d423a20, 0x1c10b: 0x6c895420,\n\t0x1c10c: 0x6cbab820, 0x1c10d: 0x6d346020, 0x1c10e: 0x6c20d420, 0x1c10f: 0x6d0af020,\n\t0x1c110: 0x6c709220, 0x1c111: 0x6c06a020, 0x1c112: 0x6c684620, 0x1c113: 0x6d3d6020,\n\t0x1c114: 0x6d3e3a20, 0x1c115: 0x6c0d3820, 0x1c116: 0x6caea220, 0x1c117: 0x6c2fa620,\n\t0x1c118: 0x6c1eda20, 0x1c119: 0x6c172e20, 0x1c11a: 0x6c9b0620, 0x1c11b: 0x6c57dc20,\n\t0x1c11c: 0x6c659420, 0x1c11d: 0x6c4a6820, 0x1c11e: 0x6cf88820, 0x1c11f: 0x6c319c20,\n\t0x1c120: 0x6cba5620, 0x1c121: 0x6c2a5820, 0x1c122: 0x6c4bb420, 0x1c123: 0x6c2da020,\n\t0x1c124: 0x6c954620, 0x1c125: 0x6d33e020, 0x1c126: 0x6cc38220, 0x1c127: 0x6ca04420,\n\t0x1c128: 0x6c40b220, 0x1c129: 0x6c454820, 0x1c12a: 0x6caf1220, 0x1c12b: 0x6d2dee20,\n\t0x1c12c: 0x6d199420, 0x1c12d: 0x6ceb7e20, 0x1c12e: 0x6ccbac20, 0x1c12f: 0x6c349a20,\n\t0x1c130: 0x6d125e20, 0x1c131: 0x6c400c20, 0x1c132: 0x6cefda20, 0x1c133: 0x6cee9a20,\n\t0x1c134: 0x6c32c820, 0x1c135: 0x6c641a20, 0x1c136: 0x6d3f9a20, 0x1c137: 0x6c64b220,\n\t0x1c138: 0x6d151a20, 0x1c139: 0x6cd0ae20, 0x1c13a: 0x6cf78620, 0x1c13b: 0x6d0e8220,\n\t0x1c13c: 0x6d0da220, 0x1c13d: 0x6c200020, 0x1c13e: 0x6c64b420, 0x1c13f: 0x6c210c20,\n\t// Block 0x705, offset 0x1c140\n\t0x1c140: 0x6d226a20, 0x1c141: 0x6c513a20, 0x1c142: 0x6d2be020, 0x1c143: 0x6cf2fa20,\n\t0x1c144: 0x6cb11420, 0x1c145: 0x6c087a20, 0x1c146: 0x6d10ac20, 0x1c147: 0x6c5dd020,\n\t0x1c148: 0x6d05b220, 0x1c149: 0x6cc92020, 0x1c14a: 0x6d0fc620, 0x1c14b: 0x6c7e7c20,\n\t0x1c14c: 0x6d0caa20, 0x1c14d: 0x6c079e20, 0x1c14e: 0x6c5ac420, 0x1c14f: 0x6c7c8a20,\n\t0x1c150: 0x6c6bea20, 0x1c151: 0x6c7c8c20, 0x1c152: 0x6cd7f220, 0x1c153: 0x6c3c5420,\n\t0x1c154: 0x6d004820, 0x1c155: 0x6ceb8220, 0x1c156: 0x6d35e420, 0x1c157: 0x6c668c20,\n\t0x1c158: 0x6ca29a20, 0x1c159: 0x6c999020, 0x1c15a: 0x6c1f9420, 0x1c15b: 0x6c569e20,\n\t0x1c15c: 0x6c556c20, 0x1c15d: 0x6c890420, 0x1c15e: 0x6c837a20, 0x1c15f: 0x6ce67e20,\n\t0x1c160: 0x6ca40220, 0x1c161: 0x6d215220, 0x1c162: 0x6d1f4620, 0x1c163: 0x6c9a0820,\n\t0x1c164: 0x6cd96620, 0x1c165: 0x6d089a20, 0x1c166: 0x6d089c20, 0x1c167: 0x6d101e20,\n\t0x1c168: 0x6d316620, 0x1c169: 0x6cb11620, 0x1c16a: 0x6d12fe20, 0x1c16b: 0x6c605220,\n\t0x1c16c: 0x6c6ae620, 0x1c16d: 0x6d130020, 0x1c16e: 0x6c1ee020, 0x1c16f: 0x6c33fa20,\n\t0x1c170: 0x6d212820, 0x1c171: 0x6d408a20, 0x1c172: 0x6cee9c20, 0x1c173: 0x6c9a0a20,\n\t0x1c174: 0x6ce40220, 0x1c175: 0x6c603a20, 0x1c176: 0x6c6ae820, 0x1c177: 0x6c766220,\n\t0x1c178: 0x6cbfb420, 0x1c179: 0x6d1c7e20, 0x1c17a: 0x6cc77a20, 0x1c17b: 0x6c59d020,\n\t0x1c17c: 0x6c909620, 0x1c17d: 0x6c822220, 0x1c17e: 0x6cc38420, 0x1c17f: 0x6cfe7620,\n\t// Block 0x706, offset 0x1c180\n\t0x1c180: 0x6cb23c20, 0x1c181: 0x6cd41820, 0x1c182: 0x6c414420, 0x1c183: 0x6cdfe820,\n\t0x1c184: 0x6c802e20, 0x1c185: 0x6cf15620, 0x1c186: 0x6d215420, 0x1c187: 0x6c192c20,\n\t0x1c188: 0x6c935620, 0x1c189: 0x6c71be20, 0x1c18a: 0x6cd0cc20, 0x1c18b: 0x6c1f9620,\n\t0x1c18c: 0x6cb0ea20, 0x1c18d: 0x6d01d420, 0x1c18e: 0x6c642420, 0x1c18f: 0x6d182420,\n\t0x1c190: 0x6d2e0220, 0x1c191: 0x6c3ec020, 0x1c192: 0x6cab0620, 0x1c193: 0x6c9d6620,\n\t0x1c194: 0x6c80c220, 0x1c195: 0x6cc69020, 0x1c196: 0x6c47ae20, 0x1c197: 0x6c66a820,\n\t0x1c198: 0x6c71c020, 0x1c199: 0x6cddf220, 0x1c19a: 0x6d11c020, 0x1c19b: 0x6d317a20,\n\t0x1c19c: 0x6c055220, 0x1c19d: 0x6ccc0820, 0x1c19e: 0x6d259220, 0x1c19f: 0x6d3f2020,\n\t0x1c1a0: 0x6ca01020, 0x1c1a1: 0x6cdae620, 0x1c1a2: 0x6c644c20, 0x1c1a3: 0x6d112020,\n\t0x1c1a4: 0x6c6b0a20, 0x1c1a5: 0x6c5a7420, 0x1c1a6: 0x6c422a20, 0x1c1a7: 0x6c3a6220,\n\t0x1c1a8: 0x6d2cd020, 0x1c1a9: 0x6cb9ae20, 0x1c1aa: 0x6c96ce20, 0x1c1ab: 0x6cdcf420,\n\t0x1c1ac: 0x6d259420, 0x1c1ad: 0x6d01d620, 0x1c1ae: 0x6cc69220, 0x1c1af: 0x6cd27c20,\n\t0x1c1b0: 0x6d33fe20, 0x1c1b1: 0x6c24de20, 0x1c1b2: 0x6d27ba20, 0x1c1b3: 0x6ce68020,\n\t0x1c1b4: 0x6c8e7a20, 0x1c1b5: 0x6cc68620, 0x1c1b6: 0x6ce10e20, 0x1c1b7: 0x6cc3de20,\n\t0x1c1b8: 0x6d2cfa20, 0x1c1b9: 0x6cd80220, 0x1c1ba: 0x6cd17420, 0x1c1bb: 0x6cde7020,\n\t0x1c1bc: 0x6c781420, 0x1c1bd: 0x6cf66c20, 0x1c1be: 0x6c479c20, 0x1c1bf: 0x6cb51020,\n\t// Block 0x707, offset 0x1c1c0\n\t0x1c1c0: 0x6c431020, 0x1c1c1: 0x6c431220, 0x1c1c2: 0x6cdcdc20, 0x1c1c3: 0x6cac6620,\n\t0x1c1c4: 0x6ce1da20, 0x1c1c5: 0x6c441220, 0x1c1c6: 0x6d0a1a20, 0x1c1c7: 0x6c2cd420,\n\t0x1c1c8: 0x6caa2420, 0x1c1c9: 0x6c606420, 0x1c1ca: 0x6cd78c20, 0x1c1cb: 0x6c46c220,\n\t0x1c1cc: 0x6c20d820, 0x1c1cd: 0x6cbacc20, 0x1c1ce: 0x6c13ec20, 0x1c1cf: 0x6cba1620,\n\t0x1c1d0: 0x6c57ec20, 0x1c1d1: 0x6c9a1820, 0x1c1d2: 0x6d070a20, 0x1c1d3: 0x6c42ac20,\n\t0x1c1d4: 0x6c42cc20, 0x1c1d5: 0x6d3d8020, 0x1c1d6: 0x6ceb3620, 0x1c1d7: 0x6cbc7420,\n\t0x1c1d8: 0x6d105c20, 0x1c1d9: 0x6c2cd620, 0x1c1da: 0x6c642620, 0x1c1db: 0x6c76e220,\n\t0x1c1dc: 0x6d41be20, 0x1c1dd: 0x6c2a5a20, 0x1c1de: 0x6c907220, 0x1c1df: 0x6c0d4420,\n\t0x1c1e0: 0x6d39ba20, 0x1c1e1: 0x6ccaa420, 0x1c1e2: 0x6cf79c20, 0x1c1e3: 0x6c5f1420,\n\t0x1c1e4: 0x6c882220, 0x1c1e5: 0x6c5c1620, 0x1c1e6: 0x6d1da420, 0x1c1e7: 0x6cba7420,\n\t0x1c1e8: 0x6c4cc220, 0x1c1e9: 0x6c414620, 0x1c1ea: 0x6c415020, 0x1c1eb: 0x6ce95820,\n\t0x1c1ec: 0x6c57bc20, 0x1c1ed: 0x6cb52020, 0x1c1ee: 0x6ccbae20, 0x1c1ef: 0x6c24e220,\n\t0x1c1f0: 0x6caeb220, 0x1c1f1: 0x6d1fe420, 0x1c1f2: 0x6c559020, 0x1c1f3: 0x6c67b620,\n\t0x1c1f4: 0x6c56be20, 0x1c1f5: 0x6c594a20, 0x1c1f6: 0x6c4b6820, 0x1c1f7: 0x6ca85e20,\n\t0x1c1f8: 0x6d185220, 0x1c1f9: 0x6c42d820, 0x1c1fa: 0x6c774420, 0x1c1fb: 0x6c4a8620,\n\t0x1c1fc: 0x6c4a8820, 0x1c1fd: 0x6c128a20, 0x1c1fe: 0x6c97fa20, 0x1c1ff: 0x6c6cac20,\n\t// Block 0x708, offset 0x1c200\n\t0x1c200: 0x6c2b4020, 0x1c201: 0x6d3c2220, 0x1c202: 0x6c822620, 0x1c203: 0x6c810a20,\n\t0x1c204: 0x6c18dc20, 0x1c205: 0x6c233a20, 0x1c206: 0x6c841820, 0x1c207: 0x6d04e220,\n\t0x1c208: 0x6cbe8620, 0x1c209: 0x6cd6da20, 0x1c20a: 0x6c38b220, 0x1c20b: 0x6ce7c220,\n\t0x1c20c: 0x6c499e20, 0x1c20d: 0x6d2ae820, 0x1c20e: 0x6cdafc20, 0x1c20f: 0x6c82d020,\n\t0x1c210: 0x6c91d220, 0x1c211: 0x6c896620, 0x1c212: 0x6c9d7820, 0x1c213: 0x6c90b020,\n\t0x1c214: 0x6c177420, 0x1c215: 0x6cdafe20, 0x1c216: 0x6c782220, 0x1c217: 0x6c1e6620,\n\t0x1c218: 0x6ce12020, 0x1c219: 0x6c0c1620, 0x1c21a: 0x6c92a220, 0x1c21b: 0x6c6f8420,\n\t0x1c21c: 0x6d30fc20, 0x1c21d: 0x6d2bf620, 0x1c21e: 0x6cd50020, 0x1c21f: 0x6d2ed620,\n\t0x1c220: 0x6c977020, 0x1c221: 0x6ca06a20, 0x1c222: 0x6ca7a820, 0x1c223: 0x6d106a20,\n\t0x1c224: 0x6ce59820, 0x1c225: 0x6caeb420, 0x1c226: 0x6d3b1e20, 0x1c227: 0x6ccc0e20,\n\t0x1c228: 0x6cf6c020, 0x1c229: 0x6cc31020, 0x1c22a: 0x6c526c20, 0x1c22b: 0x6c64ce20,\n\t0x1c22c: 0x6c233c20, 0x1c22d: 0x6c630e20, 0x1c22e: 0x6d0f3a20, 0x1c22f: 0x6cbb1820,\n\t0x1c230: 0x6d098820, 0x1c231: 0x6d1be420, 0x1c232: 0x6c37de20, 0x1c233: 0x6d0a3c20,\n\t0x1c234: 0x6d349820, 0x1c235: 0x6cbbf620, 0x1c236: 0x6d417c20, 0x1c237: 0x6c23b420,\n\t0x1c238: 0x6cb49620, 0x1c239: 0x6cd60a20, 0x1c23a: 0x6c57ae20, 0x1c23b: 0x6c7d1e20,\n\t0x1c23c: 0x6d319020, 0x1c23d: 0x6d41f220, 0x1c23e: 0x6d26ec20, 0x1c23f: 0x6ccdac20,\n\t// Block 0x709, offset 0x1c240\n\t0x1c240: 0x6cf6c420, 0x1c241: 0x6c211420, 0x1c242: 0x6c2d8020, 0x1c243: 0x6c382620,\n\t0x1c244: 0x6c41e620, 0x1c245: 0x6ca07620, 0x1c246: 0x6cf47a20, 0x1c247: 0x6cbbaa20,\n\t0x1c248: 0x6cc52c20, 0x1c249: 0x6c8c6020, 0x1c24a: 0x6c8e9620, 0x1c24b: 0x6cbbf820,\n\t0x1c24c: 0x6cfd0c20, 0x1c24d: 0x6cc90820, 0x1c24e: 0x6c38ba20, 0x1c24f: 0x6d2e1420,\n\t0x1c250: 0x6ceb4820, 0x1c251: 0x6c81bc20, 0x1c252: 0x6d27c620, 0x1c253: 0x6cd75a20,\n\t0x1c254: 0x6c33ae20, 0x1c255: 0x6c199220, 0x1c256: 0x6ce13220, 0x1c257: 0x6c9b3820,\n\t0x1c258: 0x6c715a20, 0x1c259: 0x6c1a4220, 0x1c25a: 0x6cdb3020, 0x1c25b: 0x6c74ba20,\n\t0x1c25c: 0x6c74bc20, 0x1c25d: 0x6c2d8220, 0x1c25e: 0x6c5c3020, 0x1c25f: 0x6c5f3020,\n\t0x1c260: 0x6caae020, 0x1c261: 0x6cfe4e20, 0x1c262: 0x6ceb8e20, 0x1c263: 0x6ca94620,\n\t0x1c264: 0x6cc8b020, 0x1c265: 0x6d39c420, 0x1c266: 0x6ce78620, 0x1c267: 0x6d2b8e20,\n\t0x1c268: 0x6c3b9420, 0x1c269: 0x6cbf6020, 0x1c26a: 0x6cc4d220, 0x1c26b: 0x6c526e20,\n\t0x1c26c: 0x6cb9c820, 0x1c26d: 0x6c472e20, 0x1c26e: 0x6c8f1a20, 0x1c26f: 0x6c81e020,\n\t0x1c270: 0x6c42dc20, 0x1c271: 0x6c1eae20, 0x1c272: 0x6cf94620, 0x1c273: 0x6cd18820,\n\t0x1c274: 0x6d3f6c20, 0x1c275: 0x6cca6820, 0x1c276: 0x6c60a620, 0x1c277: 0x6c30c620,\n\t0x1c278: 0x6c6eca20, 0x1c279: 0x6c91dc20, 0x1c27a: 0x6c673c20, 0x1c27b: 0x6c1f9820,\n\t0x1c27c: 0x6d25aa20, 0x1c27d: 0x6cde9c20, 0x1c27e: 0x6cd50c20, 0x1c27f: 0x6c678220,\n\t// Block 0x70a, offset 0x1c280\n\t0x1c280: 0x6ce01820, 0x1c281: 0x6c8c3820, 0x1c282: 0x6ca9cc20, 0x1c283: 0x6d1b0620,\n\t0x1c284: 0x6cf7a820, 0x1c285: 0x6cdc8020, 0x1c286: 0x6ccd1020, 0x1c287: 0x6d41d020,\n\t0x1c288: 0x6d082a20, 0x1c289: 0x6c199a20, 0x1c28a: 0x6c423420, 0x1c28b: 0x6c716220,\n\t0x1c28c: 0x6d41d820, 0x1c28d: 0x6d18c620, 0x1c28e: 0x6cbda220, 0x1c28f: 0x6cb49c20,\n\t0x1c290: 0x6d0cd620, 0x1c291: 0x6c826020, 0x1c292: 0x6c3c6a20, 0x1c293: 0x6c5b6c20,\n\t0x1c294: 0x6c299220, 0x1c295: 0x6c629620, 0x1c296: 0x6cdc7020, 0x1c297: 0x6c0ff820,\n\t0x1c298: 0x6cb2d420, 0x1c299: 0x6c1a4420, 0x1c29a: 0x6c1ef020, 0x1c29b: 0x6d3b5a20,\n\t0x1c29c: 0x6c4b7c20, 0x1c29d: 0x6c60aa20, 0x1c29e: 0x6c6ba020, 0x1c29f: 0x6c643020,\n\t0x1c2a0: 0x6cbe8e20, 0x1c2a1: 0x6d2d2020, 0x1c2a2: 0x6c65e020, 0x1c2a3: 0x6cbb2820,\n\t0x1c2a4: 0x6c2a3420, 0x1c2a5: 0x6d161a20, 0x1c2a6: 0x6c0c8220, 0x1c2a7: 0x6cd93a20,\n\t0x1c2a8: 0x6ccefe20, 0x1c2a9: 0x6c8c3a20, 0x1c2aa: 0x6c87e420, 0x1c2ab: 0x6c140e20,\n\t0x1c2ac: 0x6c9b5c20, 0x1c2ad: 0x6d1aa020, 0x1c2ae: 0x6ce24820, 0x1c2af: 0x6cdf4e20,\n\t0x1c2b0: 0x6c9de020, 0x1c2b1: 0x6cb67020, 0x1c2b2: 0x6ce96820, 0x1c2b3: 0x6c0d5c20,\n\t0x1c2b4: 0x6c5e0820, 0x1c2b5: 0x6c62aa20, 0x1c2b6: 0x6cb93420, 0x1c2b7: 0x6ca65820,\n\t0x1c2b8: 0x6ca92a20, 0x1c2b9: 0x6d142220, 0x1c2ba: 0x6c432a20, 0x1c2bb: 0x6c76f620,\n\t0x1c2bc: 0x6d1b9220, 0x1c2bd: 0x6caa2c20, 0x1c2be: 0x6cbeba20, 0x1c2bf: 0x6d0de620,\n\t// Block 0x70b, offset 0x1c2c0\n\t0x1c2c0: 0x6cb67220, 0x1c2c1: 0x6c9d9e20, 0x1c2c2: 0x6d2fe820, 0x1c2c3: 0x6c4b8820,\n\t0x1c2c4: 0x6c212220, 0x1c2c5: 0x6c5f6a20, 0x1c2c6: 0x6c7ca420, 0x1c2c7: 0x6cb33c20,\n\t0x1c2c8: 0x6c2af020, 0x1c2c9: 0x6c1eba20, 0x1c2ca: 0x6c449020, 0x1c2cb: 0x6c9de420,\n\t0x1c2cc: 0x6d1ec220, 0x1c2cd: 0x6d373e20, 0x1c2ce: 0x6c5a6620, 0x1c2cf: 0x6cb93e20,\n\t0x1c2d0: 0x6c82f420, 0x1c2d1: 0x6c827020, 0x1c2d2: 0x6cc9a820, 0x1c2d3: 0x6c91f220,\n\t0x1c2d4: 0x6c86cc20, 0x1c2d5: 0x6c24a220, 0x1c2d6: 0x6c941220, 0x1c2d7: 0x6c9efc20,\n\t0x1c2d8: 0x6c5c7a20, 0x1c2d9: 0x6cab5c20, 0x1c2da: 0x6c916220, 0x1c2db: 0x6d370620,\n\t0x1c2dc: 0x6c42ea20, 0x1c2dd: 0x6c31d020, 0x1c2de: 0x6d25c620, 0x1c2df: 0x6c86f620,\n\t0x1c2e0: 0x6c3ae820, 0x1c2e1: 0x6d3dba20, 0x1c2e2: 0x6cda3420, 0x1c2e3: 0x6c886020,\n\t0x1c2e4: 0x6c681c20, 0x1c2e5: 0x6c1ec420, 0x1c2e6: 0x6cbeec20, 0x1c2e7: 0x6d39e020,\n\t0x1c2e8: 0x6c918020, 0x1c2e9: 0x6d0cfc20, 0x1c2ea: 0x6c871a20, 0x1c2eb: 0x6d39de20,\n\t0x1c2ec: 0x6c193e20, 0x1c2ed: 0x6c6b5a20, 0x1c2ee: 0x6c36d820, 0x1c2ef: 0x6cda6820,\n\t0x1c2f0: 0x6c580020, 0x1c2f1: 0x6ca8a220, 0x1c2f2: 0x6d244e20, 0x1c2f3: 0x6c8fdc20,\n\t0x1c2f4: 0x6c7f7420, 0x1c2f5: 0x6c69f020, 0x1c2f6: 0x6cfc4620, 0x1c2f7: 0x6c4aa820,\n\t0x1c2f8: 0x6c71de20, 0x1c2f9: 0x6cff4820, 0x1c2fa: 0x6c8d9a20, 0x1c2fb: 0x6d1c2a20,\n\t0x1c2fc: 0x6c653c20, 0x1c2fd: 0x6d1b2420, 0x1c2fe: 0x6d1f9620, 0x1c2ff: 0x6d1cc420,\n\t// Block 0x70c, offset 0x1c300\n\t0x1c300: 0x6cfd9a20, 0x1c301: 0x6ca9e020, 0x1c302: 0x6c0fb620, 0x1c303: 0x6c156020,\n\t0x1c304: 0x6c7ff820, 0x1c305: 0x6c71e220, 0x1c306: 0x6cd6b220, 0x1c307: 0x6ccf9020,\n\t0x1c308: 0x6cef7420, 0x1c309: 0x6c23cc20, 0x1c30a: 0x6cc33020, 0x1c30b: 0x6cc20620,\n\t0x1c30c: 0x6c126220, 0x1c30d: 0x6c704820, 0x1c30e: 0x6d247a20, 0x1c30f: 0x6c957e20,\n\t0x1c310: 0x6c878a20, 0x1c311: 0x6c24a820, 0x1c312: 0x6c945c20, 0x1c313: 0x6c294420,\n\t0x1c314: 0x6c752820, 0x1c315: 0x6d0f3e20, 0x1c316: 0x6c806420, 0x1c317: 0x6c800e20,\n\t0x1c318: 0x6d3a4620, 0x1c319: 0x6c82a220, 0x1c31a: 0x6c855420, 0x1c31b: 0x6c03e020,\n\t0x1c31c: 0x6ca46620, 0x1c31d: 0x6d249220, 0x1c31e: 0x6c8dd820, 0x1c31f: 0x6c4a3020,\n\t0x1c320: 0x6cba3820, 0x1c321: 0x6c22aa20, 0x1c322: 0x6c596a20, 0x1c323: 0x6d02b620,\n\t0x1c324: 0x6d20b820, 0x1c325: 0x6d16be20, 0x1c326: 0x6cb8b220, 0x1c327: 0x6cab3020,\n\t0x1c328: 0x6d057820, 0x1c329: 0x6c173c20, 0x1c32a: 0x6c1f1a20, 0x1c32b: 0x6cb78020,\n\t0x1c32c: 0x6c768220, 0x1c32d: 0x6d173020, 0x1c32e: 0x6c741420, 0x1c32f: 0x6cf87020,\n\t0x1c330: 0x6d06a420, 0x1c331: 0x6c509820, 0x1c332: 0x6d231420, 0x1c333: 0x6c7cf220,\n\t0x1c334: 0x6c80ac20, 0x1c335: 0x6c7b6220, 0x1c336: 0x6cd77c20, 0x1c337: 0x6cf5ee20,\n\t0x1c338: 0x6c002220, 0x1c339: 0x6d13f420, 0x1c33a: 0x6cb4f620, 0x1c33b: 0x6c1f9e20,\n\t0x1c33c: 0x6c1ba620, 0x1c33d: 0x6cbd3020, 0x1c33e: 0x6c7b6620, 0x1c33f: 0x6c76d420,\n\t// Block 0x70d, offset 0x1c340\n\t0x1c340: 0x6c7b6820, 0x1c341: 0x6c76dc20, 0x1c342: 0x6c202220, 0x1c343: 0x6ccc5a20,\n\t0x1c344: 0x6c485a20, 0x1c345: 0x6d19ea20, 0x1c346: 0x6d02de20, 0x1c347: 0x6d004a20,\n\t0x1c348: 0x6d215620, 0x1c349: 0x6cba6820, 0x1c34a: 0x6cfeec20, 0x1c34b: 0x6d131620,\n\t0x1c34c: 0x6c43a020, 0x1c34d: 0x6cf37420, 0x1c34e: 0x6ce0a820, 0x1c34f: 0x6c6d3e20,\n\t0x1c350: 0x6cab4820, 0x1c351: 0x6c54f820, 0x1c352: 0x6ce40e20, 0x1c353: 0x6c582c20,\n\t0x1c354: 0x6d05d420, 0x1c355: 0x6cae3820, 0x1c356: 0x6cf81020, 0x1c357: 0x6d000820,\n\t0x1c358: 0x6c1fa220, 0x1c359: 0x6ccf7820, 0x1c35a: 0x6ccdae20, 0x1c35b: 0x6c4dbe20,\n\t0x1c35c: 0x6c1f7e20, 0x1c35d: 0x6d18c820, 0x1c35e: 0x6c36c420, 0x1c35f: 0x6d21b420,\n\t0x1c360: 0x6c21e220, 0x1c361: 0x6c596e20, 0x1c362: 0x6d34cc20, 0x1c363: 0x6d333620,\n\t0x1c364: 0x6c228a20, 0x1c365: 0x6c105e20, 0x1c366: 0x6cf42c20, 0x1c367: 0x6cb58420,\n\t0x1c368: 0x6c106e20, 0x1c369: 0x6c107020, 0x1c36a: 0x6cec4e20, 0x1c36b: 0x6c721220,\n\t0x1c36c: 0x6cb97e20, 0x1c36d: 0x6c1b1620, 0x1c36e: 0x6ccb2a20, 0x1c36f: 0x6c1ba820,\n\t0x1c370: 0x6ccb3620, 0x1c371: 0x6d37fa20, 0x1c372: 0x6cdc4620, 0x1c373: 0x6cdc4820,\n\t0x1c374: 0x6c864c20, 0x1c375: 0x6c263420, 0x1c376: 0x6d218220, 0x1c377: 0x6c867c20,\n\t0x1c378: 0x6c4a9a20, 0x1c379: 0x6c271220, 0x1c37a: 0x6c35ca20, 0x1c37b: 0x6cd86c20,\n\t0x1c37c: 0x6c646420, 0x1c37d: 0x6d301c20, 0x1c37e: 0x6ca0cc20, 0x1c37f: 0x6ca0ce20,\n\t// Block 0x70e, offset 0x1c380\n\t0x1c380: 0x6d109220, 0x1c381: 0x6ca0d020, 0x1c382: 0x6c242020, 0x1c383: 0x6d0f5020,\n\t0x1c384: 0x6ce4da20, 0x1c385: 0x6cd0ee20, 0x1c386: 0x6c274820, 0x1c387: 0x6cce0020,\n\t0x1c388: 0x6d06a620, 0x1c389: 0x6d0a7c20, 0x1c38a: 0x6cd4ba20, 0x1c38b: 0x6c118c20,\n\t0x1c38c: 0x6c742a20, 0x1c38d: 0x6cb19420, 0x1c38e: 0x6cb85c20, 0x1c38f: 0x6cc04820,\n\t0x1c390: 0x6cdaa420, 0x1c391: 0x6cbe7820, 0x1c392: 0x6d27e620, 0x1c393: 0x6c88ee20,\n\t0x1c394: 0x6d17a220, 0x1c395: 0x6c3d2a20, 0x1c396: 0x6d346220, 0x1c397: 0x6d12f220,\n\t0x1c398: 0x6c119620, 0x1c399: 0x6c5cce20, 0x1c39a: 0x6c27e020, 0x1c39b: 0x6c603c20,\n\t0x1c39c: 0x6c2ebe20, 0x1c39d: 0x6d317c20, 0x1c39e: 0x6d27f220, 0x1c39f: 0x6cf15820,\n\t0x1c3a0: 0x6c1e4820, 0x1c3a1: 0x6c0d8220, 0x1c3a2: 0x6ce41220, 0x1c3a3: 0x6c6d4020,\n\t0x1c3a4: 0x6cce1620, 0x1c3a5: 0x6d1a9220, 0x1c3a6: 0x6c2dda20, 0x1c3a7: 0x6c702220,\n\t0x1c3a8: 0x6c5c3220, 0x1c3a9: 0x6c24b020, 0x1c3aa: 0x6d189820, 0x1c3ab: 0x6c27fc20,\n\t0x1c3ac: 0x6c327e20, 0x1c3ad: 0x6c678420, 0x1c3ae: 0x6c892020, 0x1c3af: 0x6c0d8c20,\n\t0x1c3b0: 0x6c31d220, 0x1c3b1: 0x6c674020, 0x1c3b2: 0x6c653e20, 0x1c3b3: 0x6cd49820,\n\t0x1c3b4: 0x6cab3220, 0x1c3b5: 0x6c32b620, 0x1c3b6: 0x6d3ac020, 0x1c3b7: 0x6d19c020,\n\t0x1c3b8: 0x6cbec820, 0x1c3b9: 0x6d175e20, 0x1c3ba: 0x6ccbda20, 0x1c3bb: 0x6cbc4020,\n\t0x1c3bc: 0x6c784e20, 0x1c3bd: 0x6cff8a20, 0x1c3be: 0x6d0a8e20, 0x1c3bf: 0x6c2d5e20,\n\t// Block 0x70f, offset 0x1c3c0\n\t0x1c3c0: 0x6c5b5620, 0x1c3c1: 0x6c5b5820, 0x1c3c2: 0x6c47a020, 0x1c3c3: 0x6cbb9020,\n\t0x1c3c4: 0x6c5f0620, 0x1c3c5: 0x6d185420, 0x1c3c6: 0x6cab4a20, 0x1c3c7: 0x6c5b6220,\n\t0x1c3c8: 0x6c32da20, 0x1c3c9: 0x6d142420, 0x1c3ca: 0x6cff5c20, 0x1c3cb: 0x6cf39c20,\n\t0x1c3cc: 0x6c497220, 0x1c3cd: 0x6ca22020, 0x1c3ce: 0x6c9a4820, 0x1c3cf: 0x6c9a4a20,\n\t0x1c3d0: 0x6c006020, 0x1c3d1: 0x6c6b9420, 0x1c3d2: 0x6c318820, 0x1c3d3: 0x6d239020,\n\t0x1c3d4: 0x6c08ac20, 0x1c3d5: 0x6c090a20, 0x1c3d6: 0x6c094e20, 0x1c3d7: 0x6cafc220,\n\t0x1c3d8: 0x6cafc420, 0x1c3d9: 0x6c095e20, 0x1c3da: 0x6c152c20, 0x1c3db: 0x6c98c020,\n\t0x1c3dc: 0x6c4fbc20, 0x1c3dd: 0x6c111a20, 0x1c3de: 0x6cafba20, 0x1c3df: 0x6c8b9020,\n\t0x1c3e0: 0x6c633820, 0x1c3e1: 0x6d2d6420, 0x1c3e2: 0x6cc9c020, 0x1c3e3: 0x6ca27620,\n\t0x1c3e4: 0x6ceb9e20, 0x1c3e5: 0x6d09fc20, 0x1c3e6: 0x6c379020, 0x1c3e7: 0x6cc66620,\n\t0x1c3e8: 0x6cfbfa20, 0x1c3e9: 0x6c710620, 0x1c3ea: 0x6ca21020, 0x1c3eb: 0x6c4fc420,\n\t0x1c3ec: 0x6cc04a20, 0x1c3ed: 0x6c311220, 0x1c3ee: 0x6ccbea20, 0x1c3ef: 0x6ce06020,\n\t0x1c3f0: 0x6cadd620, 0x1c3f1: 0x6c712420, 0x1c3f2: 0x6c343020, 0x1c3f3: 0x6c253c20,\n\t0x1c3f4: 0x6c087220, 0x1c3f5: 0x6cca0020, 0x1c3f6: 0x6cca6420, 0x1c3f7: 0x6c999420,\n\t0x1c3f8: 0x6cc9c820, 0x1c3f9: 0x6cd4ea20, 0x1c3fa: 0x6d208e20, 0x1c3fb: 0x6cebac20,\n\t0x1c3fc: 0x6c513c20, 0x1c3fd: 0x6c668e20, 0x1c3fe: 0x6cde7420, 0x1c3ff: 0x6cca0620,\n\t// Block 0x710, offset 0x1c400\n\t0x1c400: 0x6c935e20, 0x1c401: 0x6ca21620, 0x1c402: 0x6c98fa20, 0x1c403: 0x6ce78820,\n\t0x1c404: 0x6cc72220, 0x1c405: 0x6c16f820, 0x1c406: 0x6cb49820, 0x1c407: 0x6c934e20,\n\t0x1c408: 0x6d2da820, 0x1c409: 0x6ccafc20, 0x1c40a: 0x6d2daa20, 0x1c40b: 0x6c9b5e20,\n\t0x1c40c: 0x6c91f420, 0x1c40d: 0x6cc20820, 0x1c40e: 0x6c2f2220, 0x1c40f: 0x6cd2e420,\n\t0x1c410: 0x6c2b0a20, 0x1c411: 0x6c9f2620, 0x1c412: 0x6c73d220, 0x1c413: 0x6c983620,\n\t0x1c414: 0x6cb72620, 0x1c415: 0x6cb1c420, 0x1c416: 0x6ca39220, 0x1c417: 0x6cb72e20,\n\t0x1c418: 0x6c29bc20, 0x1c419: 0x6cfa7a20, 0x1c41a: 0x6c1fde20, 0x1c41b: 0x6c3b1a20,\n\t0x1c41c: 0x6d0f8820, 0x1c41d: 0x6ca58620, 0x1c41e: 0x6c0d9a20, 0x1c41f: 0x6c3e1020,\n\t0x1c420: 0x6ccfbc20, 0x1c421: 0x6c2fe620, 0x1c422: 0x6cbe3420, 0x1c423: 0x6cb76a20,\n\t0x1c424: 0x6d19c220, 0x1c425: 0x6cf5c020, 0x1c426: 0x6c4d6020, 0x1c427: 0x6d100e20,\n\t0x1c428: 0x6c012220, 0x1c429: 0x6d0b8e20, 0x1c42a: 0x6c78a620, 0x1c42b: 0x6cbe4420,\n\t0x1c42c: 0x6d0bb020, 0x1c42d: 0x6c300220, 0x1c42e: 0x6c288a20, 0x1c42f: 0x6c93e020,\n\t0x1c430: 0x6cbe7e20, 0x1c431: 0x6d102620, 0x1c432: 0x6d275620, 0x1c433: 0x6d275c20,\n\t0x1c434: 0x6cd70220, 0x1c435: 0x6cd73c20, 0x1c436: 0x6d331620, 0x1c437: 0x6c0da420,\n\t0x1c438: 0x6d1e0c20, 0x1c439: 0x6c294e20, 0x1c43a: 0x6cd73e20, 0x1c43b: 0x6c821020,\n\t0x1c43c: 0x6ca67820, 0x1c43d: 0x6cea7620, 0x1c43e: 0x6c391420, 0x1c43f: 0x6c4abc20,\n\t// Block 0x711, offset 0x1c440\n\t0x1c440: 0x6ce62620, 0x1c441: 0x6d338220, 0x1c442: 0x6cc00020, 0x1c443: 0x6c0d1e20,\n\t0x1c444: 0x6d2b3620, 0x1c445: 0x6c9dfc20, 0x1c446: 0x6c248c20, 0x1c447: 0x6c5b8820,\n\t0x1c448: 0x6c2dac20, 0x1c449: 0x6c4e7c20, 0x1c44a: 0x6c142c20, 0x1c44b: 0x6d3d2020,\n\t0x1c44c: 0x6c202a20, 0x1c44d: 0x6cecba20, 0x1c44e: 0x6c391c20, 0x1c44f: 0x6c26e820,\n\t0x1c450: 0x6cf57220, 0x1c451: 0x6cea9c20, 0x1c452: 0x6c982a20, 0x1c453: 0x6cbffa20,\n\t0x1c454: 0x6cb73020, 0x1c455: 0x6ccd6a20, 0x1c456: 0x6cb24220, 0x1c457: 0x6c4e8620,\n\t0x1c458: 0x6cb89a20, 0x1c459: 0x6cf34620, 0x1c45a: 0x6cf34820, 0x1c45b: 0x6d0a6620,\n\t0x1c45c: 0x6cd87a20, 0x1c45d: 0x6cc7f420, 0x1c45e: 0x6c45d420, 0x1c45f: 0x6c674220,\n\t0x1c460: 0x6c1af620, 0x1c461: 0x6cf34a20, 0x1c462: 0x6ce92c20, 0x1c463: 0x6c704220,\n\t0x1c464: 0x6ce0b820, 0x1c465: 0x6d338c20, 0x1c466: 0x6d34e820, 0x1c467: 0x6cb8a820,\n\t0x1c468: 0x6c9d1c20, 0x1c469: 0x6c475820, 0x1c46a: 0x6cedc420, 0x1c46b: 0x6c6e0e20,\n\t0x1c46c: 0x6c6e1020, 0x1c46d: 0x6cc8be20, 0x1c46e: 0x6c755a20, 0x1c46f: 0x6c52f820,\n\t0x1c470: 0x6cdf6020, 0x1c471: 0x6cc34e20, 0x1c472: 0x6c5fcc20, 0x1c473: 0x6c0b7020,\n\t0x1c474: 0x6c0b7220, 0x1c475: 0x6c420e20, 0x1c476: 0x6cf1fe20, 0x1c477: 0x6d378820,\n\t0x1c478: 0x6c398420, 0x1c479: 0x6d045620, 0x1c47a: 0x6c73e020, 0x1c47b: 0x6c561020,\n\t0x1c47c: 0x6ca96820, 0x1c47d: 0x6cb73820, 0x1c47e: 0x6c3b5620, 0x1c47f: 0x6d067220,\n\t// Block 0x712, offset 0x1c480\n\t0x1c480: 0x6d068420, 0x1c481: 0x6cbe0620, 0x1c482: 0x6d146220, 0x1c483: 0x6cf2ce20,\n\t0x1c484: 0x6d278020, 0x1c485: 0x6d253e20, 0x1c486: 0x6c4f9020, 0x1c487: 0x6d0d3e20,\n\t0x1c488: 0x6c189c20, 0x1c489: 0x6c189e20, 0x1c48a: 0x6c286820, 0x1c48b: 0x6d1eec20,\n\t0x1c48c: 0x6c33da20, 0x1c48d: 0x6c565820, 0x1c48e: 0x6c5d9c20, 0x1c48f: 0x6cb4cc20,\n\t0x1c490: 0x6ca26820, 0x1c491: 0x6caa7620, 0x1c492: 0x6c99d220, 0x1c493: 0x6c268220,\n\t0x1c494: 0x6c9e0020, 0x1c495: 0x6c9d1e20, 0x1c496: 0x6c1cae20, 0x1c497: 0x6cacce20,\n\t0x1c498: 0x6c08bc20, 0x1c499: 0x6ccbc420, 0x1c49a: 0x6d34ea20, 0x1c49b: 0x6cae0220,\n\t0x1c49c: 0x6cac9e20, 0x1c49d: 0x6d3c7620, 0x1c49e: 0x6d288420, 0x1c49f: 0x6c463820,\n\t0x1c4a0: 0x6c8e4220, 0x1c4a1: 0x6c99d420, 0x1c4a2: 0x6d2aa620, 0x1c4a3: 0x6c3c1c20,\n\t0x1c4a4: 0x6cab2e20, 0x1c4a5: 0x6c858020, 0x1c4a6: 0x6c94da20, 0x1c4a7: 0x6c122220,\n\t0x1c4a8: 0x6c3c1e20, 0x1c4a9: 0x6ceee020, 0x1c4aa: 0x6c565a20, 0x1c4ab: 0x6ca0d220,\n\t0x1c4ac: 0x6c9a7820, 0x1c4ad: 0x6cd59e20, 0x1c4ae: 0x6c71a620, 0x1c4af: 0x6d296220,\n\t0x1c4b0: 0x6ceab020, 0x1c4b1: 0x6ceaee20, 0x1c4b2: 0x6ceaf020, 0x1c4b3: 0x6c50c820,\n\t0x1c4b4: 0x6c859020, 0x1c4b5: 0x6c9cdc20, 0x1c4b6: 0x6d147220, 0x1c4b7: 0x6c37e420,\n\t0x1c4b8: 0x6c3a8820, 0x1c4b9: 0x6d1efe20, 0x1c4ba: 0x6ce48420, 0x1c4bb: 0x6d358a20,\n\t0x1c4bc: 0x6d2f8820, 0x1c4bd: 0x6c46f220, 0x1c4be: 0x6d2d6020, 0x1c4bf: 0x6d0c6820,\n\t// Block 0x713, offset 0x1c4c0\n\t0x1c4c0: 0x6cd7ce20, 0x1c4c1: 0x6c7be420, 0x1c4c2: 0x6c6ef820, 0x1c4c3: 0x6c705c20,\n\t0x1c4c4: 0x6d016020, 0x1c4c5: 0x6cc00620, 0x1c4c6: 0x6d16c220, 0x1c4c7: 0x6c632c20,\n\t0x1c4c8: 0x6d379a20, 0x1c4c9: 0x6cc2c220, 0x1c4ca: 0x6cb2fc20, 0x1c4cb: 0x6c5b9020,\n\t0x1c4cc: 0x6c9d2620, 0x1c4cd: 0x6c077e20, 0x1c4ce: 0x6d2aaa20, 0x1c4cf: 0x6d39f420,\n\t0x1c4d0: 0x6c821820, 0x1c4d1: 0x6d1e9820, 0x1c4d2: 0x6c46f420, 0x1c4d3: 0x6c530420,\n\t0x1c4d4: 0x6c417620, 0x1c4d5: 0x6c382e20, 0x1c4d6: 0x6c992e20, 0x1c4d7: 0x6cd89020,\n\t0x1c4d8: 0x6c54a620, 0x1c4d9: 0x6cb27a20, 0x1c4da: 0x6c229220, 0x1c4db: 0x6c392220,\n\t0x1c4dc: 0x6d339a20, 0x1c4dd: 0x6cda8020, 0x1c4de: 0x6ca95420, 0x1c4df: 0x6c195420,\n\t0x1c4e0: 0x6c8cac20, 0x1c4e1: 0x6cad8220, 0x1c4e2: 0x6c0e5220, 0x1c4e3: 0x6cb74620,\n\t0x1c4e4: 0x6cd88220, 0x1c4e5: 0x6ca5c020, 0x1c4e6: 0x6c70f620, 0x1c4e7: 0x6cc96a20,\n\t0x1c4e8: 0x6d3ab020, 0x1c4e9: 0x6cd0e220, 0x1c4ea: 0x6c832020, 0x1c4eb: 0x6d087020,\n\t0x1c4ec: 0x6c73f020, 0x1c4ed: 0x6c3df620, 0x1c4ee: 0x6caca220, 0x1c4ef: 0x6c9f9620,\n\t0x1c4f0: 0x6cdf6820, 0x1c4f1: 0x6d0f4a20, 0x1c4f2: 0x6c612020, 0x1c4f3: 0x6d1e1420,\n\t0x1c4f4: 0x6c497c20, 0x1c4f5: 0x6c083a20, 0x1c4f6: 0x6d090020, 0x1c4f7: 0x6c8f6c20,\n\t0x1c4f8: 0x6c913a20, 0x1c4f9: 0x6c28f420, 0x1c4fa: 0x6c95e020, 0x1c4fb: 0x6d016220,\n\t0x1c4fc: 0x6cb3c020, 0x1c4fd: 0x6d2aac20, 0x1c4fe: 0x6c6d9020, 0x1c4ff: 0x6d1a3c20,\n\t// Block 0x714, offset 0x1c500\n\t0x1c500: 0x6cac5420, 0x1c501: 0x6c6a9020, 0x1c502: 0x6d16f620, 0x1c503: 0x6c5a9820,\n\t0x1c504: 0x6c5b2620, 0x1c505: 0x6d293020, 0x1c506: 0x6c19ce20, 0x1c507: 0x6d19b420,\n\t0x1c508: 0x6ceeec20, 0x1c509: 0x6c546620, 0x1c50a: 0x6c665a20, 0x1c50b: 0x6d0f9820,\n\t0x1c50c: 0x6c8ad420, 0x1c50d: 0x6cd8a820, 0x1c50e: 0x6c61aa20, 0x1c50f: 0x6c374020,\n\t0x1c510: 0x6d03d020, 0x1c511: 0x6c3e1220, 0x1c512: 0x6cc94c20, 0x1c513: 0x6ccb1820,\n\t0x1c514: 0x6d350420, 0x1c515: 0x6d1b3e20, 0x1c516: 0x6cf3b620, 0x1c517: 0x6cf7d620,\n\t0x1c518: 0x6c77a420, 0x1c519: 0x6d398a20, 0x1c51a: 0x6c67da20, 0x1c51b: 0x6c95e820,\n\t0x1c51c: 0x6c95f420, 0x1c51d: 0x6c01a620, 0x1c51e: 0x6c306420, 0x1c51f: 0x6ce3dc20,\n\t0x1c520: 0x6ca1c820, 0x1c521: 0x6c832220, 0x1c522: 0x6d13da20, 0x1c523: 0x6c9ce420,\n\t0x1c524: 0x6cc2c420, 0x1c525: 0x6c6c3020, 0x1c526: 0x6cb37020, 0x1c527: 0x6cef9820,\n\t0x1c528: 0x6cff7020, 0x1c529: 0x6d017220, 0x1c52a: 0x6c531420, 0x1c52b: 0x6d069420,\n\t0x1c52c: 0x6cda8620, 0x1c52d: 0x6c7b9220, 0x1c52e: 0x6ce20a20, 0x1c52f: 0x6cbcac20,\n\t0x1c530: 0x6c71fe20, 0x1c531: 0x6c378a20, 0x1c532: 0x6d386020, 0x1c533: 0x6cc81220,\n\t0x1c534: 0x6cb28620, 0x1c535: 0x6d09ec20, 0x1c536: 0x6d046020, 0x1c537: 0x6d35a220,\n\t0x1c538: 0x6c49e020, 0x1c539: 0x6c586420, 0x1c53a: 0x6c9fec20, 0x1c53b: 0x6c5d7020,\n\t0x1c53c: 0x6cebcc20, 0x1c53d: 0x6cb84c20, 0x1c53e: 0x6cac1e20, 0x1c53f: 0x6cf35820,\n\t// Block 0x715, offset 0x1c540\n\t0x1c540: 0x6cc0e820, 0x1c541: 0x6c8e4a20, 0x1c542: 0x6d16f820, 0x1c543: 0x6c633a20,\n\t0x1c544: 0x6c6e5a20, 0x1c545: 0x6cb9f420, 0x1c546: 0x6c675420, 0x1c547: 0x6c683220,\n\t0x1c548: 0x6d312a20, 0x1c549: 0x6cd1ac20, 0x1c54a: 0x6d3d3420, 0x1c54b: 0x6c12d420,\n\t0x1c54c: 0x6c380020, 0x1c54d: 0x6c5b9c20, 0x1c54e: 0x6c61ac20, 0x1c54f: 0x6c8e4620,\n\t0x1c550: 0x6c159c20, 0x1c551: 0x6c5ce020, 0x1c552: 0x6c561420, 0x1c553: 0x6ca9b420,\n\t0x1c554: 0x6d09ee20, 0x1c555: 0x6c6ce220, 0x1c556: 0x6c8aee20, 0x1c557: 0x6cc03220,\n\t0x1c558: 0x6cefa220, 0x1c559: 0x6d30ea20, 0x1c55a: 0x6c75a620, 0x1c55b: 0x6c4df620,\n\t0x1c55c: 0x6c052620, 0x1c55d: 0x6c985220, 0x1c55e: 0x6d3d3a20, 0x1c55f: 0x6d1f1820,\n\t0x1c560: 0x6cf5c220, 0x1c561: 0x6c0ed620, 0x1c562: 0x6c310420, 0x1c563: 0x6c590420,\n\t0x1c564: 0x6c532a20, 0x1c565: 0x6d173220, 0x1c566: 0x6cb48820, 0x1c567: 0x6d1ce420,\n\t0x1c568: 0x6c802420, 0x1c569: 0x6c502e20, 0x1c56a: 0x6c811820, 0x1c56b: 0x6c4e5620,\n\t0x1c56c: 0x6c850c20, 0x1c56d: 0x6c44be20, 0x1c56e: 0x6c3e3620, 0x1c56f: 0x6cf3b820,\n\t0x1c570: 0x6c88ea20, 0x1c571: 0x6c213a20, 0x1c572: 0x6c3ca220, 0x1c573: 0x6d173420,\n\t0x1c574: 0x6d22f220, 0x1c575: 0x6ce73420, 0x1c576: 0x6c815420, 0x1c577: 0x6c4d3a20,\n\t0x1c578: 0x6c6cee20, 0x1c579: 0x6c634220, 0x1c57a: 0x6c1cb820, 0x1c57b: 0x6c6f0820,\n\t0x1c57c: 0x6c9a5220, 0x1c57d: 0x6cdbb820, 0x1c57e: 0x6c195e20, 0x1c57f: 0x6cae1420,\n\t// Block 0x716, offset 0x1c580\n\t0x1c580: 0x6cfcaa20, 0x1c581: 0x6cd09820, 0x1c582: 0x6ce92e20, 0x1c583: 0x6c7dd020,\n\t0x1c584: 0x6cb25020, 0x1c585: 0x6ca80820, 0x1c586: 0x6c4e9c20, 0x1c587: 0x6c6da020,\n\t0x1c588: 0x6cfea220, 0x1c589: 0x6ccf3c20, 0x1c58a: 0x6ca71e20, 0x1c58b: 0x6ce84e20,\n\t0x1c58c: 0x6d1e2620, 0x1c58d: 0x6cffe020, 0x1c58e: 0x6cfb3620, 0x1c58f: 0x6ce6bc20,\n\t0x1c590: 0x6c355820, 0x1c591: 0x6cda8e20, 0x1c592: 0x6cea1c20, 0x1c593: 0x6c72e620,\n\t0x1c594: 0x6c132c20, 0x1c595: 0x6ce3e220, 0x1c596: 0x6c85d020, 0x1c597: 0x6cd71620,\n\t0x1c598: 0x6cd8aa20, 0x1c599: 0x6c832820, 0x1c59a: 0x6cd71820, 0x1c59b: 0x6ce1be20,\n\t0x1c59c: 0x6c318e20, 0x1c59d: 0x6c81ce20, 0x1c59e: 0x6c7eec20, 0x1c59f: 0x6c87f620,\n\t0x1c5a0: 0x6ceef620, 0x1c5a1: 0x6cf28020, 0x1c5a2: 0x6d279a20, 0x1c5a3: 0x6c590620,\n\t0x1c5a4: 0x6c2b6420, 0x1c5a5: 0x6c528a20, 0x1c5a6: 0x6cc8fa20, 0x1c5a7: 0x6c666e20,\n\t0x1c5a8: 0x6d2f0220, 0x1c5a9: 0x6ccb1c20, 0x1c5aa: 0x6c3e5220, 0x1c5ab: 0x6c498420,\n\t0x1c5ac: 0x6d042a20, 0x1c5ad: 0x6cd46420, 0x1c5ae: 0x6cd69020, 0x1c5af: 0x6d0b2a20,\n\t0x1c5b0: 0x6c21b620, 0x1c5b1: 0x6d2f2e20, 0x1c5b2: 0x6d12e820, 0x1c5b3: 0x6c797620,\n\t0x1c5b4: 0x6cf2e420, 0x1c5b5: 0x6c4e0220, 0x1c5b6: 0x6ceac020, 0x1c5b7: 0x6c2ffa20,\n\t0x1c5b8: 0x6c510820, 0x1c5b9: 0x6cf28620, 0x1c5ba: 0x6c708e20, 0x1c5bb: 0x6ccf4020,\n\t0x1c5bc: 0x6c894e20, 0x1c5bd: 0x6c5cc220, 0x1c5be: 0x6cde4e20, 0x1c5bf: 0x6d3cfe20,\n\t// Block 0x717, offset 0x1c5c0\n\t0x1c5c0: 0x6c2d5220, 0x1c5c1: 0x6cbcb620, 0x1c5c2: 0x6c2a6a20, 0x1c5c3: 0x6c735620,\n\t0x1c5c4: 0x6d3e2420, 0x1c5c5: 0x6cf5f020, 0x1c5c6: 0x6cff8220, 0x1c5c7: 0x6cb5ca20,\n\t0x1c5c8: 0x6c477e20, 0x1c5c9: 0x6c4cb820, 0x1c5ca: 0x6d0bf620, 0x1c5cb: 0x6c8bb020,\n\t0x1c5cc: 0x6ce17420, 0x1c5cd: 0x6d387620, 0x1c5ce: 0x6caf0420, 0x1c5cf: 0x6c503820,\n\t0x1c5d0: 0x6c166620, 0x1c5d1: 0x6cd4cc20, 0x1c5d2: 0x6cb4ea20, 0x1c5d3: 0x6c399020,\n\t0x1c5d4: 0x6d345820, 0x1c5d5: 0x6c923c20, 0x1c5d6: 0x6ca53020, 0x1c5d7: 0x6c711420,\n\t0x1c5d8: 0x6ce21e20, 0x1c5d9: 0x6c239c20, 0x1c5da: 0x6c833020, 0x1c5db: 0x6d30f020,\n\t0x1c5dc: 0x6cb29c20, 0x1c5dd: 0x6c3a3420, 0x1c5de: 0x6cd91c20, 0x1c5df: 0x6ce4ee20,\n\t0x1c5e0: 0x6cb09020, 0x1c5e1: 0x6c288020, 0x1c5e2: 0x6d231620, 0x1c5e3: 0x6ca5d820,\n\t0x1c5e4: 0x6d208620, 0x1c5e5: 0x6c923e20, 0x1c5e6: 0x6c421a20, 0x1c5e7: 0x6c9d3a20,\n\t0x1c5e8: 0x6c6e7420, 0x1c5e9: 0x6c8ce820, 0x1c5ea: 0x6c94f420, 0x1c5eb: 0x6d1a5c20,\n\t0x1c5ec: 0x6c253620, 0x1c5ed: 0x6cc18820, 0x1c5ee: 0x6c57ea20, 0x1c5ef: 0x6d231820,\n\t0x1c5f0: 0x6ca72220, 0x1c5f1: 0x6ccfde20, 0x1c5f2: 0x6c0bf620, 0x1c5f3: 0x6c214220,\n\t0x1c5f4: 0x6c54c220, 0x1c5f5: 0x6d24ec20, 0x1c5f6: 0x6c7efc20, 0x1c5f7: 0x6c5d2620,\n\t0x1c5f8: 0x6cbe4620, 0x1c5f9: 0x6d0bf820, 0x1c5fa: 0x6cba0220, 0x1c5fb: 0x6ce46220,\n\t0x1c5fc: 0x6c9e9020, 0x1c5fd: 0x6d350c20, 0x1c5fe: 0x6d1ae420, 0x1c5ff: 0x6c9d3c20,\n\t// Block 0x718, offset 0x1c600\n\t0x1c600: 0x6c07b220, 0x1c601: 0x6d24de20, 0x1c602: 0x6cf20820, 0x1c603: 0x6cc91c20,\n\t0x1c604: 0x6c39fa20, 0x1c605: 0x6cbe4820, 0x1c606: 0x6d24e020, 0x1c607: 0x6c786220,\n\t0x1c608: 0x6c61f220, 0x1c609: 0x6ccf4220, 0x1c60a: 0x6d24e220, 0x1c60b: 0x6ccba420,\n\t0x1c60c: 0x6c924020, 0x1c60d: 0x6d3f4420, 0x1c60e: 0x6c319620, 0x1c60f: 0x6cb81420,\n\t0x1c610: 0x6c667a20, 0x1c611: 0x6c9e1c20, 0x1c612: 0x6cb09220, 0x1c613: 0x6cf94420,\n\t0x1c614: 0x6d210220, 0x1c615: 0x6d24e420, 0x1c616: 0x6cd05c20, 0x1c617: 0x6cd09e20,\n\t0x1c618: 0x6cc74c20, 0x1c619: 0x6c592420, 0x1c61a: 0x6d3a6420, 0x1c61b: 0x6c659620,\n\t0x1c61c: 0x6caa9020, 0x1c61d: 0x6d212a20, 0x1c61e: 0x6cc06220, 0x1c61f: 0x6ce67220,\n\t0x1c620: 0x6cc18a20, 0x1c621: 0x6c325c20, 0x1c622: 0x6c389e20, 0x1c623: 0x6d2bdc20,\n\t0x1c624: 0x6c0f0420, 0x1c625: 0x6cf2f220, 0x1c626: 0x6cf28820, 0x1c627: 0x6c2c5820,\n\t0x1c628: 0x6cee8e20, 0x1c629: 0x6cf15020, 0x1c62a: 0x6cc7ac20, 0x1c62b: 0x6d01ae20,\n\t0x1c62c: 0x6c12ea20, 0x1c62d: 0x6cf09820, 0x1c62e: 0x6c510a20, 0x1c62f: 0x6c42a220,\n\t0x1c630: 0x6d0d8a20, 0x1c631: 0x6c534a20, 0x1c632: 0x6d089420, 0x1c633: 0x6c9cf220,\n\t0x1c634: 0x6c786a20, 0x1c635: 0x6c98da20, 0x1c636: 0x6d1bb020, 0x1c637: 0x6d0d8c20,\n\t0x1c638: 0x6d1f3820, 0x1c639: 0x6c52a620, 0x1c63a: 0x6c9e9220, 0x1c63b: 0x6cd13a20,\n\t0x1c63c: 0x6c9a5a20, 0x1c63d: 0x6d290420, 0x1c63e: 0x6c5cec20, 0x1c63f: 0x6ca3c420,\n\t// Block 0x719, offset 0x1c640\n\t0x1c640: 0x6c4afe20, 0x1c641: 0x6c1c2020, 0x1c642: 0x6c363820, 0x1c643: 0x6cac2620,\n\t0x1c644: 0x6c99fc20, 0x1c645: 0x6c88fc20, 0x1c646: 0x6cb79620, 0x1c647: 0x6cb79820,\n\t0x1c648: 0x6c99fe20, 0x1c649: 0x6ce4a020, 0x1c64a: 0x6c23ec20, 0x1c64b: 0x6cef1020,\n\t0x1c64c: 0x6c116a20, 0x1c64d: 0x6ce93220, 0x1c64e: 0x6c9e2620, 0x1c64f: 0x6c5bc420,\n\t0x1c650: 0x6ca11a20, 0x1c651: 0x6d059c20, 0x1c652: 0x6c604020, 0x1c653: 0x6cae4020,\n\t0x1c654: 0x6c649e20, 0x1c655: 0x6c658a20, 0x1c656: 0x6c555e20, 0x1c657: 0x6c3ce020,\n\t0x1c658: 0x6cfd7420, 0x1c659: 0x6d17a820, 0x1c65a: 0x6d1b5420, 0x1c65b: 0x6d2e6420,\n\t0x1c65c: 0x6cd26a20, 0x1c65d: 0x6c6a1820, 0x1c65e: 0x6c197020, 0x1c65f: 0x6c59c620,\n\t0x1c660: 0x6ce09a20, 0x1c661: 0x6d212c20, 0x1c662: 0x6c09a220, 0x1c663: 0x6c9fb020,\n\t0x1c664: 0x6cd1be20, 0x1c665: 0x6ce86020, 0x1c666: 0x6cd10220, 0x1c667: 0x6d1e3a20,\n\t0x1c668: 0x6c712620, 0x1c669: 0x6c307820, 0x1c66a: 0x6ce98a20, 0x1c66b: 0x6c68f620,\n\t0x1c66c: 0x6c690820, 0x1c66d: 0x6cc06420, 0x1c66e: 0x6d0c0820, 0x1c66f: 0x6ce0c020,\n\t0x1c670: 0x6c8f9420, 0x1c671: 0x6c5dd220, 0x1c672: 0x6d256420, 0x1c673: 0x6ca42820,\n\t0x1c674: 0x6c04f620, 0x1c675: 0x6d1fcc20, 0x1c676: 0x6cc2f020, 0x1c677: 0x6d3c1820,\n\t0x1c678: 0x6c89ba20, 0x1c679: 0x6c14f620, 0x1c67a: 0x6d0c9620, 0x1c67b: 0x6c214c20,\n\t0x1c67c: 0x6ca83020, 0x1c67d: 0x6d3e3e20, 0x1c67e: 0x6cec9020, 0x1c67f: 0x6cd1c020,\n\t// Block 0x71a, offset 0x1c680\n\t0x1c680: 0x6c97ba20, 0x1c681: 0x6d1c7220, 0x1c682: 0x6c7ed620, 0x1c683: 0x6c7cfc20,\n\t0x1c684: 0x6c3d0020, 0x1c685: 0x6c669020, 0x1c686: 0x6d06da20, 0x1c687: 0x6c908a20,\n\t0x1c688: 0x6cef1220, 0x1c689: 0x6c413620, 0x1c68a: 0x6cfa6620, 0x1c68b: 0x6d1c7420,\n\t0x1c68c: 0x6cb31020, 0x1c68d: 0x6c6d1820, 0x1c68e: 0x6d0e8620, 0x1c68f: 0x6ce10420,\n\t0x1c690: 0x6d258220, 0x1c691: 0x6cdd7a20, 0x1c692: 0x6d258420, 0x1c693: 0x6c881420,\n\t0x1c694: 0x6d11b820, 0x1c695: 0x6c9c0620, 0x1c696: 0x6d3cde20, 0x1c697: 0x6c1a1c20,\n\t0x1c698: 0x6c78ba20, 0x1c699: 0x6cdf7a20, 0x1c69a: 0x6cde0a20, 0x1c69b: 0x6cebe420,\n\t0x1c69c: 0x6c8e3620, 0x1c69d: 0x6c465220, 0x1c69e: 0x6ccaae20, 0x1c69f: 0x6ca00620,\n\t0x1c6a0: 0x6d2cc420, 0x1c6a1: 0x6cd27220, 0x1c6a2: 0x6d17e820, 0x1c6a3: 0x6c952220,\n\t0x1c6a4: 0x6c969a20, 0x1c6a5: 0x6cb48e20, 0x1c6a6: 0x6cee9e20, 0x1c6a7: 0x6c863420,\n\t0x1c6a8: 0x6c111220, 0x1c6a9: 0x6cf50020, 0x1c6aa: 0x6cf64c20, 0x1c6ab: 0x6cf15a20,\n\t0x1c6ac: 0x6cbaba20, 0x1c6ad: 0x6d2ace20, 0x1c6ae: 0x6cd1ce20, 0x1c6af: 0x6cdace20,\n\t0x1c6b0: 0x6c004220, 0x1c6b1: 0x6cbd8420, 0x1c6b2: 0x6cd9b220, 0x1c6b3: 0x6d27b220,\n\t0x1c6b4: 0x6d054420, 0x1c6b5: 0x6d19ec20, 0x1c6b6: 0x6cc68a20, 0x1c6b7: 0x6c5d2e20,\n\t0x1c6b8: 0x6cdad020, 0x1c6b9: 0x6cddcc20, 0x1c6ba: 0x6ca6ac20, 0x1c6bb: 0x6cddf420,\n\t0x1c6bc: 0x6cd1d020, 0x1c6bd: 0x6cc81c20, 0x1c6be: 0x6c002a20, 0x1c6bf: 0x6cacba20,\n\t// Block 0x71b, offset 0x1c6c0\n\t0x1c6c0: 0x6c1f5020, 0x1c6c1: 0x6c1e7e20, 0x1c6c2: 0x6cacdc20, 0x1c6c3: 0x6cf22c20,\n\t0x1c6c4: 0x6c123220, 0x1c6c5: 0x6c9ede20, 0x1c6c6: 0x6c440620, 0x1c6c7: 0x6c2cce20,\n\t0x1c6c8: 0x6c504420, 0x1c6c9: 0x6c5a7020, 0x1c6ca: 0x6cf8a020, 0x1c6cb: 0x6d3e4020,\n\t0x1c6cc: 0x6c2b7220, 0x1c6cd: 0x6d365a20, 0x1c6ce: 0x6d03f220, 0x1c6cf: 0x6c3f6c20,\n\t0x1c6d0: 0x6c6aea20, 0x1c6d1: 0x6c573e20, 0x1c6d2: 0x6c439a20, 0x1c6d3: 0x6d3f1a20,\n\t0x1c6d4: 0x6ce1d820, 0x1c6d5: 0x6ce2aa20, 0x1c6d6: 0x6cdbc820, 0x1c6d7: 0x6c09c820,\n\t0x1c6d8: 0x6c69a420, 0x1c6d9: 0x6c5be620, 0x1c6da: 0x6c4bce20, 0x1c6db: 0x6d1a7020,\n\t0x1c6dc: 0x6c42ca20, 0x1c6dd: 0x6c8f9620, 0x1c6de: 0x6d362c20, 0x1c6df: 0x6d0e8820,\n\t0x1c6e0: 0x6ccf5820, 0x1c6e1: 0x6c97be20, 0x1c6e2: 0x6d1c8020, 0x1c6e3: 0x6c215020,\n\t0x1c6e4: 0x6c93e620, 0x1c6e5: 0x6c807420, 0x1c6e6: 0x6c943e20, 0x1c6e7: 0x6d003420,\n\t0x1c6e8: 0x6c0d3c20, 0x1c6e9: 0x6cdfb020, 0x1c6ea: 0x6d236e20, 0x1c6eb: 0x6d052420,\n\t0x1c6ec: 0x6c56b820, 0x1c6ed: 0x6c09ca20, 0x1c6ee: 0x6c0c0c20, 0x1c6ef: 0x6d368e20,\n\t0x1c6f0: 0x6c67f220, 0x1c6f1: 0x6c79f620, 0x1c6f2: 0x6cd0be20, 0x1c6f3: 0x6cce0e20,\n\t0x1c6f4: 0x6c2b3a20, 0x1c6f5: 0x6c9d6820, 0x1c6f6: 0x6c025220, 0x1c6f7: 0x6c91cc20,\n\t0x1c6f8: 0x6c562820, 0x1c6f9: 0x6c54e820, 0x1c6fa: 0x6d1eac20, 0x1c6fb: 0x6c15cc20,\n\t0x1c6fc: 0x6c396420, 0x1c6fd: 0x6d1d9e20, 0x1c6fe: 0x6c4bd620, 0x1c6ff: 0x6c97c420,\n\t// Block 0x71c, offset 0x1c700\n\t0x1c700: 0x6cbeae20, 0x1c701: 0x6d216e20, 0x1c702: 0x6cb1b820, 0x1c703: 0x6c623e20,\n\t0x1c704: 0x6d0b3420, 0x1c705: 0x6c176e20, 0x1c706: 0x6cb51220, 0x1c707: 0x6cf7fe20,\n\t0x1c708: 0x6c624020, 0x1c709: 0x6c928620, 0x1c70a: 0x6c90a620, 0x1c70b: 0x6c8f9c20,\n\t0x1c70c: 0x6c6ca020, 0x1c70d: 0x6c4c7a20, 0x1c70e: 0x6c23a620, 0x1c70f: 0x6c910e20,\n\t0x1c710: 0x6d349020, 0x1c711: 0x6c414c20, 0x1c712: 0x6cbb1a20, 0x1c713: 0x6c83e220,\n\t0x1c714: 0x6d0db420, 0x1c715: 0x6c127e20, 0x1c716: 0x6c69b020, 0x1c717: 0x6c232a20,\n\t0x1c718: 0x6c215620, 0x1c719: 0x6ce95620, 0x1c71a: 0x6cab4020, 0x1c71b: 0x6ce2a820,\n\t0x1c71c: 0x6d12b020, 0x1c71d: 0x6cf79220, 0x1c71e: 0x6c9d6a20, 0x1c71f: 0x6ce11220,\n\t0x1c720: 0x6ca12c20, 0x1c721: 0x6cce1020, 0x1c722: 0x6c4ee620, 0x1c723: 0x6c881620,\n\t0x1c724: 0x6c803220, 0x1c725: 0x6cebe820, 0x1c726: 0x6c1b4820, 0x1c727: 0x6c41aa20,\n\t0x1c728: 0x6c3cae20, 0x1c729: 0x6d081a20, 0x1c72a: 0x6d140420, 0x1c72b: 0x6c97ec20,\n\t0x1c72c: 0x6d3f5c20, 0x1c72d: 0x6c989620, 0x1c72e: 0x6c774020, 0x1c72f: 0x6c961620,\n\t0x1c730: 0x6cae7a20, 0x1c731: 0x6cd5f420, 0x1c732: 0x6d2f0620, 0x1c733: 0x6d2eca20,\n\t0x1c734: 0x6d3c4620, 0x1c735: 0x6d070c20, 0x1c736: 0x6c594020, 0x1c737: 0x6c5d9020,\n\t0x1c738: 0x6c66aa20, 0x1c739: 0x6d0c1c20, 0x1c73a: 0x6cd6d820, 0x1c73b: 0x6c89f820,\n\t0x1c73c: 0x6c24fa20, 0x1c73d: 0x6ce36420, 0x1c73e: 0x6d106020, 0x1c73f: 0x6c677220,\n\t// Block 0x71d, offset 0x1c740\n\t0x1c740: 0x6c23a820, 0x1c741: 0x6d1d0620, 0x1c742: 0x6c537220, 0x1c743: 0x6d0a1c20,\n\t0x1c744: 0x6cd5f620, 0x1c745: 0x6c499a20, 0x1c746: 0x6d1c8620, 0x1c747: 0x6cfeee20,\n\t0x1c748: 0x6d404220, 0x1c749: 0x6c7de020, 0x1c74a: 0x6d070e20, 0x1c74b: 0x6c890c20,\n\t0x1c74c: 0x6d369020, 0x1c74d: 0x6cef2020, 0x1c74e: 0x6cb0ac20, 0x1c74f: 0x6d23c420,\n\t0x1c750: 0x6c69be20, 0x1c751: 0x6cb3c420, 0x1c752: 0x6c297820, 0x1c753: 0x6c5c1820,\n\t0x1c754: 0x6c6b1c20, 0x1c755: 0x6cf46820, 0x1c756: 0x6cabdc20, 0x1c757: 0x6c608620,\n\t0x1c758: 0x6cac4220, 0x1c759: 0x6cef2c20, 0x1c75a: 0x6cdb1820, 0x1c75b: 0x6cb9b820,\n\t0x1c75c: 0x6cb9ba20, 0x1c75d: 0x6cf69c20, 0x1c75e: 0x6c92cc20, 0x1c75f: 0x6cf8c620,\n\t0x1c760: 0x6d0aa220, 0x1c761: 0x6c340620, 0x1c762: 0x6c59da20, 0x1c763: 0x6c9fc620,\n\t0x1c764: 0x6cc90420, 0x1c765: 0x6cdb0020, 0x1c766: 0x6c81b820, 0x1c767: 0x6d318a20,\n\t0x1c768: 0x6c23aa20, 0x1c769: 0x6d182820, 0x1c76a: 0x6d30fe20, 0x1c76b: 0x6cec9820,\n\t0x1c76c: 0x6ccd9e20, 0x1c76d: 0x6ce00420, 0x1c76e: 0x6c177620, 0x1c76f: 0x6d0a3220,\n\t0x1c770: 0x6c7d0e20, 0x1c771: 0x6d126420, 0x1c772: 0x6ccee420, 0x1c773: 0x6ce8da20,\n\t0x1c774: 0x6d39bc20, 0x1c775: 0x6cc95820, 0x1c776: 0x6c522220, 0x1c777: 0x6c0a2a20,\n\t0x1c778: 0x6ccd0820, 0x1c779: 0x6c151c20, 0x1c77a: 0x6c151e20, 0x1c77b: 0x6cd56820,\n\t0x1c77c: 0x6ce77c20, 0x1c77d: 0x6cb41020, 0x1c77e: 0x6c8bce20, 0x1c77f: 0x6cef2e20,\n\t// Block 0x71e, offset 0x1c780\n\t0x1c780: 0x6ccb6c20, 0x1c781: 0x6ccb4620, 0x1c782: 0x6c1a3820, 0x1c783: 0x6c6f3020,\n\t0x1c784: 0x6c1a3a20, 0x1c785: 0x6c57be20, 0x1c786: 0x6c686c20, 0x1c787: 0x6c81dc20,\n\t0x1c788: 0x6c183420, 0x1c789: 0x6c41e020, 0x1c78a: 0x6c259c20, 0x1c78b: 0x6c53cc20,\n\t0x1c78c: 0x6cd81820, 0x1c78d: 0x6cd60220, 0x1c78e: 0x6cae8420, 0x1c78f: 0x6c4e2a20,\n\t0x1c790: 0x6d27c020, 0x1c791: 0x6c8f3c20, 0x1c792: 0x6c53ce20, 0x1c793: 0x6c3ed820,\n\t0x1c794: 0x6c505a20, 0x1c795: 0x6c513e20, 0x1c796: 0x6cfb8020, 0x1c797: 0x6c66b620,\n\t0x1c798: 0x6ccd0a20, 0x1c799: 0x6cf8c820, 0x1c79a: 0x6d24c220, 0x1c79b: 0x6c934c20,\n\t0x1c79c: 0x6c7fac20, 0x1c79d: 0x6ca96020, 0x1c79e: 0x6d21a220, 0x1c79f: 0x6c8c3420,\n\t0x1c7a0: 0x6c9e4020, 0x1c7a1: 0x6d2a5020, 0x1c7a2: 0x6c290420, 0x1c7a3: 0x6c595420,\n\t0x1c7a4: 0x6d2afc20, 0x1c7a5: 0x6d021620, 0x1c7a6: 0x6d23ea20, 0x1c7a7: 0x6c853020,\n\t0x1c7a8: 0x6cd3da20, 0x1c7a9: 0x6d091c20, 0x1c7aa: 0x6c8d5820, 0x1c7ab: 0x6ced9420,\n\t0x1c7ac: 0x6d3e8a20, 0x1c7ad: 0x6d1db420, 0x1c7ae: 0x6c5c3420, 0x1c7af: 0x6c120420,\n\t0x1c7b0: 0x6c891620, 0x1c7b1: 0x6c2d8420, 0x1c7b2: 0x6d134020, 0x1c7b3: 0x6c02ec20,\n\t0x1c7b4: 0x6c589820, 0x1c7b5: 0x6d319220, 0x1c7b6: 0x6c152420, 0x1c7b7: 0x6c980420,\n\t0x1c7b8: 0x6c284420, 0x1c7b9: 0x6c28b220, 0x1c7ba: 0x6d189e20, 0x1c7bb: 0x6cdc5c20,\n\t0x1c7bc: 0x6cb0ba20, 0x1c7bd: 0x6c728e20, 0x1c7be: 0x6cde8e20, 0x1c7bf: 0x6cbda420,\n\t// Block 0x71f, offset 0x1c7c0\n\t0x1c7c0: 0x6c5f3420, 0x1c7c1: 0x6d3d9a20, 0x1c7c2: 0x6c884c20, 0x1c7c3: 0x6ca9c620,\n\t0x1c7c4: 0x6c4c3020, 0x1c7c5: 0x6c6d4e20, 0x1c7c6: 0x6c3b8c20, 0x1c7c7: 0x6ccb5a20,\n\t0x1c7c8: 0x6c608820, 0x1c7c9: 0x6cdbda20, 0x1c7ca: 0x6c5c3620, 0x1c7cb: 0x6c1eea20,\n\t0x1c7cc: 0x6cdeac20, 0x1c7cd: 0x6cd93620, 0x1c7ce: 0x6c2f7e20, 0x1c7cf: 0x6ccba620,\n\t0x1c7d0: 0x6d3a7e20, 0x1c7d1: 0x6c7f5620, 0x1c7d2: 0x6c0d5220, 0x1c7d3: 0x6c884e20,\n\t0x1c7d4: 0x6c9d0220, 0x1c7d5: 0x6cd20220, 0x1c7d6: 0x6cd60c20, 0x1c7d7: 0x6c9d8620,\n\t0x1c7d8: 0x6ca95a20, 0x1c7d9: 0x6d1ca220, 0x1c7da: 0x6d1ca420, 0x1c7db: 0x6c9b4c20,\n\t0x1c7dc: 0x6c6d5e20, 0x1c7dd: 0x6cb65e20, 0x1c7de: 0x6c0a7020, 0x1c7df: 0x6c629820,\n\t0x1c7e0: 0x6c4ff420, 0x1c7e1: 0x6cc7d220, 0x1c7e2: 0x6c256a20, 0x1c7e3: 0x6cf31c20,\n\t0x1c7e4: 0x6ce1f020, 0x1c7e5: 0x6d1b0e20, 0x1c7e6: 0x6d1b1020, 0x1c7e7: 0x6c336820,\n\t0x1c7e8: 0x6c226c20, 0x1c7e9: 0x6c5df820, 0x1c7ea: 0x6c6eb220, 0x1c7eb: 0x6c807c20,\n\t0x1c7ec: 0x6c75f020, 0x1c7ed: 0x6c007820, 0x1c7ee: 0x6cb45820, 0x1c7ef: 0x6d3db020,\n\t0x1c7f0: 0x6cef4020, 0x1c7f1: 0x6c0d5420, 0x1c7f2: 0x6c47d620, 0x1c7f3: 0x6cb9d620,\n\t0x1c7f4: 0x6d1ca620, 0x1c7f5: 0x6c0d9c20, 0x1c7f6: 0x6c7e1c20, 0x1c7f7: 0x6c3ade20,\n\t0x1c7f8: 0x6c125e20, 0x1c7f9: 0x6c99c820, 0x1c7fa: 0x6c66f020, 0x1c7fb: 0x6cf02620,\n\t0x1c7fc: 0x6c963420, 0x1c7fd: 0x6d29a420, 0x1c7fe: 0x6c940e20, 0x1c7ff: 0x6c869e20,\n\t// Block 0x720, offset 0x1c800\n\t0x1c800: 0x6d1ebe20, 0x1c801: 0x6d106e20, 0x1c802: 0x6c91ea20, 0x1c803: 0x6cd8f420,\n\t0x1c804: 0x6d36e220, 0x1c805: 0x6d1cb220, 0x1c806: 0x6c31cc20, 0x1c807: 0x6cee3c20,\n\t0x1c808: 0x6c5afc20, 0x1c809: 0x6d024020, 0x1c80a: 0x6cac8020, 0x1c80b: 0x6cd08420,\n\t0x1c80c: 0x6c0c3820, 0x1c80d: 0x6c153820, 0x1c80e: 0x6ca17220, 0x1c80f: 0x6c8eba20,\n\t0x1c810: 0x6c651620, 0x1c811: 0x6cb4ba20, 0x1c812: 0x6ccb7420, 0x1c813: 0x6c1a4e20,\n\t0x1c814: 0x6c47e220, 0x1c815: 0x6c0d6820, 0x1c816: 0x6c5e2820, 0x1c817: 0x6cfd3020,\n\t0x1c818: 0x6c917220, 0x1c819: 0x6cbe2620, 0x1c81a: 0x6c4f2c20, 0x1c81b: 0x6d1cba20,\n\t0x1c81c: 0x6cc6d820, 0x1c81d: 0x6c86f820, 0x1c81e: 0x6c6eb420, 0x1c81f: 0x6cff3a20,\n\t0x1c820: 0x6d1cbc20, 0x1c821: 0x6cdc0e20, 0x1c822: 0x6cf03c20, 0x1c823: 0x6d025620,\n\t0x1c824: 0x6c57fc20, 0x1c825: 0x6d097820, 0x1c826: 0x6d39d420, 0x1c827: 0x6c8fc620,\n\t0x1c828: 0x6c7f6a20, 0x1c829: 0x6c337820, 0x1c82a: 0x6c38de20, 0x1c82b: 0x6c55ee20,\n\t0x1c82c: 0x6c7f6c20, 0x1c82d: 0x6cd63420, 0x1c82e: 0x6c8e3220, 0x1c82f: 0x6d1cbe20,\n\t0x1c830: 0x6c9ca020, 0x1c831: 0x6c62c820, 0x1c832: 0x6c892c20, 0x1c833: 0x6c66fe20,\n\t0x1c834: 0x6d1cc620, 0x1c835: 0x6c3c0220, 0x1c836: 0x6c8c0020, 0x1c837: 0x6d192c20,\n\t0x1c838: 0x6c653220, 0x1c839: 0x6d270a20, 0x1c83a: 0x6c155620, 0x1c83b: 0x6c27a620,\n\t0x1c83c: 0x6cc4e620, 0x1c83d: 0x6c661820, 0x1c83e: 0x6c7fe820, 0x1c83f: 0x6c38e020,\n\t// Block 0x721, offset 0x1c840\n\t0x1c840: 0x6cd6f420, 0x1c841: 0x6d252620, 0x1c842: 0x6d3dd420, 0x1c843: 0x6c3c8020,\n\t0x1c844: 0x6ccf8c20, 0x1c845: 0x6c830220, 0x1c846: 0x6c7fea20, 0x1c847: 0x6c23c620,\n\t0x1c848: 0x6cc20020, 0x1c849: 0x6d1dda20, 0x1c84a: 0x6cb9e020, 0x1c84b: 0x6c383620,\n\t0x1c84c: 0x6c49b420, 0x1c84d: 0x6cc41a20, 0x1c84e: 0x6d0f2220, 0x1c84f: 0x6c507c20,\n\t0x1c850: 0x6d1d7020, 0x1c851: 0x6cc95c20, 0x1c852: 0x6d29ba20, 0x1c853: 0x6c946020,\n\t0x1c854: 0x6d0f0420, 0x1c855: 0x6c84a820, 0x1c856: 0x6c9d0e20, 0x1c857: 0x6ccde820,\n\t0x1c858: 0x6cdfc620, 0x1c859: 0x6c293e20, 0x1c85a: 0x6c697620, 0x1c85b: 0x6c161820,\n\t0x1c85c: 0x6d1d7220, 0x1c85d: 0x6c508420, 0x1c85e: 0x6c03dc20, 0x1c85f: 0x6d3a4220,\n\t0x1c860: 0x6c805e20, 0x1c861: 0x6c800820, 0x1c862: 0x6ca47820, 0x1c863: 0x6cecac20,\n\t0x1c864: 0x6c947020, 0x1c865: 0x6d0a5e20, 0x1c866: 0x6cfc6a20, 0x1c867: 0x6d0f2820,\n\t0x1c868: 0x6c424820, 0x1c869: 0x6d0f3220, 0x1c86a: 0x6d24ac20, 0x1c86b: 0x6c5d8420,\n\t0x1c86c: 0x6c0be820, 0x1c86d: 0x6c9eca20, 0x1c86e: 0x6c49d220, 0x1c86f: 0x6c2a9a20,\n\t0x1c870: 0x6c5a8620, 0x1c871: 0x6cfe7a20, 0x1c872: 0x6cfe7c20, 0x1c873: 0x6c5caa20,\n\t0x1c874: 0x6c529620, 0x1c875: 0x6c8c9c20, 0x1c876: 0x6d2a6620, 0x1c877: 0x6d3bbe20,\n\t0x1c878: 0x6c6faa20, 0x1c879: 0x6d2ca820, 0x1c87a: 0x6d015820, 0x1c87b: 0x6c1be420,\n\t0x1c87c: 0x6d3d2420, 0x1c87d: 0x6d28f220, 0x1c87e: 0x6d28f420, 0x1c87f: 0x6c11ec20,\n\t// Block 0x722, offset 0x1c880\n\t0x1c880: 0x6d0f8020, 0x1c881: 0x6cb74820, 0x1c882: 0x6d379c20, 0x1c883: 0x6c3b5e20,\n\t0x1c884: 0x6ca98220, 0x1c885: 0x6c6efa20, 0x1c886: 0x6cf18220, 0x1c887: 0x6cb36820,\n\t0x1c888: 0x6d16c420, 0x1c889: 0x6c913c20, 0x1c88a: 0x6c20b620, 0x1c88b: 0x6caf4020,\n\t0x1c88c: 0x6c767e20, 0x1c88d: 0x6caca420, 0x1c88e: 0x6d0c6a20, 0x1c88f: 0x6c768020,\n\t0x1c890: 0x6cad2620, 0x1c891: 0x6ca26e20, 0x1c892: 0x6c179020, 0x1c893: 0x6c8a9220,\n\t0x1c894: 0x6c4b3420, 0x1c895: 0x6c778220, 0x1c896: 0x6c33dc20, 0x1c897: 0x6c49d620,\n\t0x1c898: 0x6d02b820, 0x1c899: 0x6d358c20, 0x1c89a: 0x6c4a2e20, 0x1c89b: 0x6c49d820,\n\t0x1c89c: 0x6cef9420, 0x1c89d: 0x6cbb5420, 0x1c89e: 0x6c0be420, 0x1c89f: 0x6c268420,\n\t0x1c8a0: 0x6cf99820, 0x1c8a1: 0x6d329a20, 0x1c8a2: 0x6d39fc20, 0x1c8a3: 0x6c785e20,\n\t0x1c8a4: 0x6d2fa220, 0x1c8a5: 0x6c3e1420, 0x1c8a6: 0x6c036e20, 0x1c8a7: 0x6d017420,\n\t0x1c8a8: 0x6c34dc20, 0x1c8a9: 0x6c8e1e20, 0x1c8aa: 0x6d3cf220, 0x1c8ab: 0x6d087a20,\n\t0x1c8ac: 0x6c721420, 0x1c8ad: 0x6ce08e20, 0x1c8ae: 0x6cad8420, 0x1c8af: 0x6c6f0220,\n\t0x1c8b0: 0x6cad5020, 0x1c8b1: 0x6cdf1e20, 0x1c8b2: 0x6cdf2020, 0x1c8b3: 0x6c0dd220,\n\t0x1c8b4: 0x6d100c20, 0x1c8b5: 0x6ce6f020, 0x1c8b6: 0x6c4d9420, 0x1c8b7: 0x6d3ac220,\n\t0x1c8b8: 0x6d2cb820, 0x1c8b9: 0x6c2d0a20, 0x1c8ba: 0x6cf07a20, 0x1c8bb: 0x6cd25220,\n\t0x1c8bc: 0x6c88e620, 0x1c8bd: 0x6c1bfc20, 0x1c8be: 0x6c5a4a20, 0x1c8bf: 0x6d397820,\n\t// Block 0x723, offset 0x1c8c0\n\t0x1c8c0: 0x6c54ae20, 0x1c8c1: 0x6cd77020, 0x1c8c2: 0x6c806e20, 0x1c8c3: 0x6ce63620,\n\t0x1c8c4: 0x6c68de20, 0x1c8c5: 0x6d06a820, 0x1c8c6: 0x6c525e20, 0x1c8c7: 0x6cc35420,\n\t0x1c8c8: 0x6c8af020, 0x1c8c9: 0x6c590820, 0x1c8ca: 0x6d0fa020, 0x1c8cb: 0x6d04c420,\n\t0x1c8cc: 0x6d04c620, 0x1c8cd: 0x6cfbfe20, 0x1c8ce: 0x6d1a3020, 0x1c8cf: 0x6cf36020,\n\t0x1c8d0: 0x6d386620, 0x1c8d1: 0x6d10e220, 0x1c8d2: 0x6cd35020, 0x1c8d3: 0x6cee6e20,\n\t0x1c8d4: 0x6ce73620, 0x1c8d5: 0x6c9ece20, 0x1c8d6: 0x6d28fe20, 0x1c8d7: 0x6c768420,\n\t0x1c8d8: 0x6c529e20, 0x1c8d9: 0x6c81d020, 0x1c8da: 0x6cf9a820, 0x1c8db: 0x6d3a0420,\n\t0x1c8dc: 0x6d084a20, 0x1c8dd: 0x6d32a020, 0x1c8de: 0x6cb37820, 0x1c8df: 0x6d0be420,\n\t0x1c8e0: 0x6c5b2e20, 0x1c8e1: 0x6c49e620, 0x1c8e2: 0x6c180e20, 0x1c8e3: 0x6c5aa420,\n\t0x1c8e4: 0x6c77a820, 0x1c8e5: 0x6c194c20, 0x1c8e6: 0x6c389020, 0x1c8e7: 0x6cce6220,\n\t0x1c8e8: 0x6d12e220, 0x1c8e9: 0x6c5bac20, 0x1c8eb: 0x6ce19a20,\n\t0x1c8ec: 0x6c6cf220, 0x1c8ed: 0x6cc55020, 0x1c8ee: 0x6c8b9620, 0x1c8ef: 0x6cf5f220,\n\t0x1c8f0: 0x6c3e5420, 0x1c8f1: 0x6c6f0a20, 0x1c8f2: 0x6d019420, 0x1c8f3: 0x6cb48a20,\n\t0x1c8f4: 0x6ce64220, 0x1c8f5: 0x6d3d3c20, 0x1c8f6: 0x6ce6c020, 0x1c8f7: 0x6cecd420,\n\t0x1c8f8: 0x6c4d4020, 0x1c8f9: 0x6cae6a20, 0x1c8fa: 0x6c80fc20, 0x1c8fb: 0x6d0e5220,\n\t0x1c8fc: 0x6d06bc20, 0x1c8fd: 0x6c3c3e20, 0x1c8fe: 0x6c1c1020, 0x1c8ff: 0x6cc66820,\n\t// Block 0x724, offset 0x1c900\n\t0x1c900: 0x6c554620, 0x1c901: 0x6cf5f420, 0x1c902: 0x6cd4ce20, 0x1c903: 0x6c51c420,\n\t0x1c904: 0x6d099620, 0x1c905: 0x6c7a9220, 0x1c906: 0x6c72e820, 0x1c907: 0x6cfeb620,\n\t0x1c908: 0x6cf5f620, 0x1c909: 0x6d0bfa20, 0x1c90a: 0x6c4eb220, 0x1c90b: 0x6d3c3c20,\n\t0x1c90c: 0x6c75b020, 0x1c90d: 0x6c2c4220, 0x1c90e: 0x6d019620, 0x1c90f: 0x6c601c20,\n\t0x1c910: 0x6cf4e020, 0x1c911: 0x6d0bfc20, 0x1c912: 0x6c942c20, 0x1c913: 0x6c4e0620,\n\t0x1c914: 0x6d0e6220, 0x1c915: 0x6c591220, 0x1c916: 0x6c9aee20, 0x1c917: 0x6c711620,\n\t0x1c918: 0x6c2a1020, 0x1c919: 0x6c072420, 0x1c91a: 0x6c3b7a20, 0x1c91b: 0x6c8c5220,\n\t0x1c91c: 0x6c7d6220, 0x1c91d: 0x6c5d2820, 0x1c91e: 0x6cea2220, 0x1c91f: 0x6cf61620,\n\t0x1c920: 0x6c253e20, 0x1c921: 0x6cf3c820, 0x1c922: 0x6c52a820, 0x1c923: 0x6c179c20,\n\t0x1c924: 0x6c3f6220, 0x1c925: 0x6cf2f420, 0x1c926: 0x6c684820, 0x1c927: 0x6c231820,\n\t0x1c928: 0x6c3ce220, 0x1c929: 0x6cb2a620, 0x1c92a: 0x6cbf2620, 0x1c92b: 0x6cc91e20,\n\t0x1c92c: 0x6cf61820, 0x1c92d: 0x6cbf2820, 0x1c92e: 0x6d033420, 0x1c92f: 0x6c174420,\n\t0x1c930: 0x6d0e7420, 0x1c931: 0x6d0e7620, 0x1c932: 0x6d17aa20, 0x1c933: 0x6c744e20,\n\t0x1c934: 0x6d234620, 0x1c935: 0x6c42a820, 0x1c936: 0x6cc47820, 0x1c937: 0x6caff020,\n\t0x1c938: 0x6d049420, 0x1c939: 0x6cee6420, 0x1c93a: 0x6cd10420, 0x1c93b: 0x6c171420,\n\t0x1c93c: 0x6cce6e20, 0x1c93d: 0x6d048420, 0x1c93e: 0x6ca72420, 0x1c93f: 0x6c44d020,\n\t// Block 0x725, offset 0x1c940\n\t0x1c940: 0x6cf13e20, 0x1c941: 0x6c18d420, 0x1c942: 0x6c51ce20, 0x1c943: 0x6c7cd220,\n\t0x1c944: 0x6d37fe20, 0x1c945: 0x6c32cc20, 0x1c946: 0x6cf96a20, 0x1c947: 0x6c5ac620,\n\t0x1c948: 0x6c3ce420, 0x1c949: 0x6c890620, 0x1c94a: 0x6d07a820, 0x1c94b: 0x6d037e20,\n\t0x1c94c: 0x6c59d220, 0x1c94d: 0x6c690a20, 0x1c94e: 0x6c64b620, 0x1c94f: 0x6c09cc20,\n\t0x1c950: 0x6d1bbc20, 0x1c951: 0x6d3a7020, 0x1c952: 0x6cefde20, 0x1c953: 0x6ce93620,\n\t0x1c954: 0x6ccd4a20, 0x1c955: 0x6cf67020, 0x1c956: 0x6caa9620, 0x1c957: 0x6caa9820,\n\t0x1c958: 0x6c150220, 0x1c959: 0x6d0c1220, 0x1c95a: 0x6c6f1020, 0x1c95b: 0x6c6f2420,\n\t0x1c95c: 0x6d237020, 0x1c95d: 0x6c9a9c20, 0x1c95e: 0x6ccbfc20, 0x1c95f: 0x6cf0a620,\n\t0x1c960: 0x6d2c3820, 0x1c961: 0x6d033620, 0x1c962: 0x6cbf3e20, 0x1c963: 0x6cc75020,\n\t0x1c964: 0x6c9a0c20, 0x1c965: 0x6c593620, 0x1c966: 0x6d06f420, 0x1c967: 0x6d2fbe20,\n\t0x1c968: 0x6ceea020, 0x1c969: 0x6c38a620, 0x1c96a: 0x6cc07620, 0x1c96b: 0x6cdc4a20,\n\t0x1c96c: 0x6d0fc820, 0x1c96d: 0x6c8b1620, 0x1c96e: 0x6d3a6e20, 0x1c96f: 0x6c6a2220,\n\t0x1c970: 0x6c434e20, 0x1c971: 0x6c485c20, 0x1c972: 0x6c05b420, 0x1c973: 0x6c557020,\n\t0x1c974: 0x6d275820, 0x1c975: 0x6cf96c20, 0x1c976: 0x6cd41a20, 0x1c977: 0x6c89ce20,\n\t0x1c978: 0x6c0afa20, 0x1c979: 0x6c46c420, 0x1c97a: 0x6cea0020, 0x1c97b: 0x6ce11420,\n\t0x1c97c: 0x6c17a020, 0x1c97d: 0x6cccfc20, 0x1c97e: 0x6c371a20, 0x1c97f: 0x6c0f2a20,\n\t// Block 0x726, offset 0x1c980\n\t0x1c980: 0x6c5a5a20, 0x1c981: 0x6d00ce20, 0x1c982: 0x6cf8ae20, 0x1c983: 0x6cf50e20,\n\t0x1c984: 0x6cf67220, 0x1c985: 0x6d284220, 0x1c986: 0x6c515a20, 0x1c987: 0x6c51d220,\n\t0x1c988: 0x6cf67420, 0x1c989: 0x6d27bc20, 0x1c98a: 0x6d048020, 0x1c98b: 0x6ca37e20,\n\t0x1c98c: 0x6ccd5020, 0x1c98d: 0x6cbf8e20, 0x1c98e: 0x6d121620, 0x1c98f: 0x6d099e20,\n\t0x1c990: 0x6c9d6c20, 0x1c991: 0x6c882420, 0x1c992: 0x6d1c8820, 0x1c993: 0x6cf45a20,\n\t0x1c994: 0x6cc69a20, 0x1c995: 0x6c459e20, 0x1c996: 0x6d0f3820, 0x1c997: 0x6cbb5820,\n\t0x1c998: 0x6c8e3820, 0x1c999: 0x6cf67620, 0x1c99a: 0x6c09f820, 0x1c99b: 0x6c0c1820,\n\t0x1c99c: 0x6c233e20, 0x1c99d: 0x6c92a620, 0x1c99e: 0x6c64d620, 0x1c99f: 0x6cd53420,\n\t0x1c9a0: 0x6d185620, 0x1c9a1: 0x6c90b220, 0x1c9a2: 0x6caeb620, 0x1c9a3: 0x6cdbd420,\n\t0x1c9a4: 0x6d185820, 0x1c9a5: 0x6ce28e20, 0x1c9a6: 0x6c749420, 0x1c9a7: 0x6d3fb220,\n\t0x1c9a8: 0x6d284620, 0x1c9a9: 0x6c56c020, 0x1c9aa: 0x6d154820, 0x1c9ab: 0x6d36b420,\n\t0x1c9ac: 0x6c026220, 0x1c9ad: 0x6cf0bc20, 0x1c9ae: 0x6c8f1420, 0x1c9af: 0x6c4efa20,\n\t0x1c9b0: 0x6cab4c20, 0x1c9b1: 0x6cc55420, 0x1c9b2: 0x6c6f2c20, 0x1c9b3: 0x6c97fc20,\n\t0x1c9b4: 0x6c7de220, 0x1c9b5: 0x6cce1820, 0x1c9b6: 0x6c24b220, 0x1c9b7: 0x6d2b9020,\n\t0x1c9b8: 0x6c64f620, 0x1c9b9: 0x6cf6c620, 0x1c9ba: 0x6cf6c820, 0x1c9bb: 0x6cf6ca20,\n\t0x1c9bc: 0x6d185a20, 0x1c9bd: 0x6d000c20, 0x1c9be: 0x6c1c6e20, 0x1c9bf: 0x6c59ea20,\n\t// Block 0x727, offset 0x1c9c0\n\t0x1c9c0: 0x6c15e420, 0x1c9c1: 0x6d131820, 0x1c9c2: 0x6ce01020, 0x1c9c3: 0x6cc48820,\n\t0x1c9c4: 0x6d0ec020, 0x1c9c5: 0x6cfb9420, 0x1c9c6: 0x6cbbae20, 0x1c9c7: 0x6c75e820,\n\t0x1c9c8: 0x6c2aaa20, 0x1c9c9: 0x6c340a20, 0x1c9ca: 0x6cd01820, 0x1c9cb: 0x6c687a20,\n\t0x1c9cc: 0x6c3b9620, 0x1c9cd: 0x6cd82a20, 0x1c9ce: 0x6c8a1a20, 0x1c9cf: 0x6d23ee20,\n\t0x1c9d0: 0x6c8bde20, 0x1c9d1: 0x6ce78a20, 0x1c9d2: 0x6cce8420, 0x1c9d3: 0x6c3b4620,\n\t0x1c9d4: 0x6c38bc20, 0x1c9d5: 0x6d0ec220, 0x1c9d6: 0x6d0a3e20, 0x1c9d7: 0x6c807620,\n\t0x1c9d8: 0x6c9a6a20, 0x1c9d9: 0x6ce1a220, 0x1c9da: 0x6d18a220, 0x1c9db: 0x6c6e3020,\n\t0x1c9dc: 0x6c9afc20, 0x1c9dd: 0x6c6ecc20, 0x1c9de: 0x6c694420, 0x1c9df: 0x6d1c9a20,\n\t0x1c9e0: 0x6d23f020, 0x1c9e1: 0x6d18ca20, 0x1c9e2: 0x6d091e20, 0x1c9e3: 0x6c7fc020,\n\t0x1c9e4: 0x6cdf8020, 0x1c9e5: 0x6d2a9220, 0x1c9e6: 0x6c120c20, 0x1c9e7: 0x6cdc7420,\n\t0x1c9e8: 0x6cf6ea20, 0x1c9e9: 0x6cc40220, 0x1c9ea: 0x6c235420, 0x1c9eb: 0x6c886220,\n\t0x1c9ec: 0x6c5b6e20, 0x1c9ed: 0x6d3a2c20, 0x1c9ee: 0x6d022c20, 0x1c9ef: 0x6c8d6e20,\n\t0x1c9f0: 0x6ceec020, 0x1c9f1: 0x6d18cc20, 0x1c9f2: 0x6d00fc20, 0x1c9f3: 0x6d2fe220,\n\t0x1c9f4: 0x6c5c5220, 0x1c9f5: 0x6c270020, 0x1c9f6: 0x6ca9ce20, 0x1c9f7: 0x6c7fc220,\n\t0x1c9f8: 0x6cc7de20, 0x1c9f9: 0x6cfc3a20, 0x1c9fa: 0x6c77b620, 0x1c9fb: 0x6d09ba20,\n\t0x1c9fc: 0x6c6d6620, 0x1c9fd: 0x6c1df820, 0x1c9fe: 0x6c2a3a20, 0x1c9ff: 0x6d123020,\n\t// Block 0x728, offset 0x1ca00\n\t0x1ca00: 0x6c51fc20, 0x1ca01: 0x6c807e20, 0x1ca02: 0x6c0c4220, 0x1ca03: 0x6cc6ce20,\n\t0x1ca04: 0x6c86d020, 0x1ca05: 0x6ca18220, 0x1ca06: 0x6c067820, 0x1ca07: 0x6cc93220,\n\t0x1ca08: 0x6c941420, 0x1ca09: 0x6c7ea620, 0x1ca0a: 0x6c023620, 0x1ca0b: 0x6d0ab020,\n\t0x1ca0c: 0x6c7c1020, 0x1ca0d: 0x6cd7aa20, 0x1ca0e: 0x6c8ab420, 0x1ca0f: 0x6c872020,\n\t0x1ca10: 0x6c918420, 0x1ca11: 0x6c74ea20, 0x1ca12: 0x6c8a8620, 0x1ca13: 0x6d0efa20,\n\t0x1ca14: 0x6cf73a20, 0x1ca15: 0x6d025a20, 0x1ca16: 0x6c8fde20, 0x1ca17: 0x6d136e20,\n\t0x1ca18: 0x6c121a20, 0x1ca19: 0x6cc50c20, 0x1ca1a: 0x6d271420, 0x1ca1b: 0x6c808820,\n\t0x1ca1c: 0x6c23ce20, 0x1ca1d: 0x6c750c20, 0x1ca1e: 0x6c1d3220, 0x1ca1f: 0x6c49b620,\n\t0x1ca20: 0x6c72d620, 0x1ca21: 0x6c185620, 0x1ca22: 0x6c9cba20, 0x1ca23: 0x6ce19220,\n\t0x1ca24: 0x6c809220, 0x1ca25: 0x6d3a4820, 0x1ca26: 0x6c809a20, 0x1ca27: 0x6c8dda20,\n\t0x1ca28: 0x6c24c420, 0x1ca29: 0x6d24b220, 0x1ca2a: 0x6d2f8020, 0x1ca2b: 0x6d2ff420,\n\t0x1ca2c: 0x6cabd220, 0x1ca2d: 0x6d328c20, 0x1ca2e: 0x6cad5220, 0x1ca2f: 0x6c195820,\n\t0x1ca30: 0x6d254620, 0x1ca31: 0x6c009620, 0x1ca32: 0x6cf09c20, 0x1ca33: 0x6c4f4420,\n\t0x1ca34: 0x6c749620, 0x1ca35: 0x6c74c820, 0x1ca36: 0x6c3fa020, 0x1ca37: 0x6d13b020,\n\t0x1ca38: 0x6c03aa20, 0x1ca39: 0x6c2e5620, 0x1ca3a: 0x6d13b420, 0x1ca3b: 0x6d10c620,\n\t0x1ca3c: 0x6d411020, 0x1ca3d: 0x6cd6d020, 0x1ca3e: 0x6c379e20, 0x1ca3f: 0x6cac5020,\n\t// Block 0x729, offset 0x1ca40\n\t0x1ca40: 0x6c206e20, 0x1ca41: 0x6c77e220, 0x1ca42: 0x6d29d420, 0x1ca43: 0x6c2ec020,\n\t0x1ca44: 0x6cbace20, 0x1ca45: 0x6d1dfc20, 0x1ca46: 0x6cbb2a20, 0x1ca47: 0x6cb14420,\n\t0x1ca48: 0x6c04be20, 0x1ca49: 0x6cacac20, 0x1ca4a: 0x6c175a20, 0x1ca4b: 0x6c64a020,\n\t0x1ca4c: 0x6cac0020, 0x1ca4d: 0x6c31a020, 0x1ca4e: 0x6c205420, 0x1ca4f: 0x6d215a20,\n\t0x1ca50: 0x6d2c3a20, 0x1ca51: 0x6c0afc20, 0x1ca52: 0x6c2ec220, 0x1ca53: 0x6c055420,\n\t0x1ca54: 0x6c0f2c20, 0x1ca55: 0x6c205a20, 0x1ca56: 0x6d1fea20, 0x1ca57: 0x6d206e20,\n\t0x1ca58: 0x6c31d620, 0x1ca59: 0x6d0b0820, 0x1ca5a: 0x6c197220, 0x1ca5b: 0x6ca96620,\n\t0x1ca5c: 0x6ca9ac20, 0x1ca5d: 0x6cb24020, 0x1ca5e: 0x6c6f4c20, 0x1ca5f: 0x6ca1be20,\n\t0x1ca60: 0x6cdde020, 0x1ca61: 0x6ca22420, 0x1ca62: 0x6c814220, 0x1ca63: 0x6cc5c420,\n\t0x1ca64: 0x6c981a20, 0x1ca65: 0x6c398a20, 0x1ca66: 0x6c98ca20, 0x1ca67: 0x6ca27020,\n\t0x1ca68: 0x6c426020, 0x1ca69: 0x6cf4b820, 0x1ca6a: 0x6d0e4020, 0x1ca6b: 0x6c437420,\n\t0x1ca6c: 0x6c06ec20, 0x1ca6d: 0x6cd8a020, 0x1ca6e: 0x6c665e20, 0x1ca6f: 0x6c476620,\n\t0x1ca70: 0x6d202c20, 0x1ca71: 0x6c437e20, 0x1ca72: 0x6cd0f220, 0x1ca73: 0x6ca23020,\n\t0x1ca74: 0x6c2be620, 0x1ca75: 0x6cb8be20, 0x1ca76: 0x6cc37020, 0x1ca77: 0x6cc2cc20,\n\t0x1ca78: 0x6d3f4020, 0x1ca79: 0x6ce27020, 0x1ca7a: 0x6cf5c420, 0x1ca7b: 0x6c985620,\n\t0x1ca7c: 0x6c793820, 0x1ca7d: 0x6cb8d820, 0x1ca7e: 0x6cf44620, 0x1ca7f: 0x6c481220,\n\t// Block 0x72a, offset 0x1ca80\n\t0x1ca80: 0x6cf61a20, 0x1ca81: 0x6c83c220, 0x1ca82: 0x6c83da20, 0x1ca83: 0x6cb3f420,\n\t0x1ca84: 0x6c5ed420, 0x1ca85: 0x6c428220, 0x1ca86: 0x6d346420, 0x1ca87: 0x6c078820,\n\t0x1ca88: 0x6cc2f220, 0x1ca89: 0x6c214e20, 0x1ca8a: 0x6c31a220, 0x1ca8b: 0x6c724a20,\n\t0x1ca8c: 0x6c636e20, 0x1ca8d: 0x6c64a220, 0x1ca8e: 0x6c3c5620, 0x1ca8f: 0x6cb0f820,\n\t0x1ca90: 0x6c780820, 0x1ca91: 0x6c713020, 0x1ca92: 0x6c77c220, 0x1ca93: 0x6c1e9c20,\n\t0x1ca94: 0x6cf8b220, 0x1ca95: 0x6c074020, 0x1ca96: 0x6c961820, 0x1ca97: 0x6c6bf220,\n\t0x1ca98: 0x6c967220, 0x1ca99: 0x6cca0820, 0x1ca9a: 0x6cf0be20, 0x1ca9b: 0x6c98fc20,\n\t0x1ca9c: 0x6c33b020, 0x1ca9d: 0x6ce78c20, 0x1ca9e: 0x6cbc7620, 0x1ca9f: 0x6c67fc20,\n\t0x1caa0: 0x6cf94820, 0x1caa1: 0x6c86d220, 0x1caa2: 0x6c31d820, 0x1caa3: 0x6c8b5e20,\n\t0x1caa4: 0x6cac1020, 0x1caa5: 0x6cb16e20, 0x1caa6: 0x6c0fa620, 0x1caa7: 0x6cf73c20,\n\t0x1caa8: 0x6c1d8620, 0x1caa9: 0x6cef6820, 0x1caaa: 0x6c7cc220, 0x1caab: 0x6c1d8a20,\n\t0x1caac: 0x6cc34c20, 0x1caad: 0x6cc38020, 0x1caae: 0x6c035e20, 0x1caaf: 0x6c391620,\n\t0x1cab0: 0x6cbff420, 0x1cab1: 0x6c611c20, 0x1cab2: 0x6c110420, 0x1cab3: 0x6d3d2220,\n\t0x1cab4: 0x6c019c20, 0x1cab5: 0x6c436820, 0x1cab6: 0x6d3c3020, 0x1cab7: 0x6c4a0620,\n\t0x1cab8: 0x6c96b020, 0x1cab9: 0x6d1eee20, 0x1caba: 0x6c778020, 0x1cabb: 0x6c0eae20,\n\t0x1cabc: 0x6c544a20, 0x1cabd: 0x6d0b7620, 0x1cabe: 0x6d1a2820, 0x1cabf: 0x6c582620,\n\t// Block 0x72b, offset 0x1cac0\n\t0x1cac0: 0x6d3c3420, 0x1cac1: 0x6d27da20, 0x1cac2: 0x6c7bba20, 0x1cac3: 0x6ca97a20,\n\t0x1cac4: 0x6c2b5420, 0x1cac5: 0x6cbe2e20, 0x1cac6: 0x6d381420, 0x1cac7: 0x6ca26a20,\n\t0x1cac8: 0x6c06d820, 0x1cac9: 0x6caf4220, 0x1caca: 0x6c70fc20, 0x1cacb: 0x6d147420,\n\t0x1cacc: 0x6cd0e420, 0x1cacd: 0x6cad4e20, 0x1cace: 0x6cf98e20, 0x1cacf: 0x6ceaf220,\n\t0x1cad0: 0x6c552620, 0x1cad1: 0x6c8cae20, 0x1cad2: 0x6c3a8a20, 0x1cad3: 0x6cafbe20,\n\t0x1cad4: 0x6ca62a20, 0x1cad5: 0x6d119020, 0x1cad6: 0x6d201a20, 0x1cad7: 0x6c467020,\n\t0x1cad8: 0x6d094620, 0x1cad9: 0x6c705e20, 0x1cada: 0x6c286a20, 0x1cadb: 0x6c0eb820,\n\t0x1cadc: 0x6c7a7420, 0x1cadd: 0x6cfbe820, 0x1cade: 0x6ca8f820, 0x1cadf: 0x6c586620,\n\t0x1cae0: 0x6c523c20, 0x1cae1: 0x6c68d420, 0x1cae2: 0x6c50dc20, 0x1cae3: 0x6d2fa420,\n\t0x1cae4: 0x6c5ff620, 0x1cae5: 0x6d0a7220, 0x1cae6: 0x6cccd220, 0x1cae7: 0x6cde3820,\n\t0x1cae8: 0x6cc65820, 0x1cae9: 0x6cd45620, 0x1caea: 0x6ce72820, 0x1caeb: 0x6c81a820,\n\t0x1caec: 0x6c318a20, 0x1caed: 0x6cf99c20, 0x1caee: 0x6cd1ae20, 0x1caef: 0x6c7b1a20,\n\t0x1caf0: 0x6d329c20, 0x1caf1: 0x6d22e420, 0x1caf2: 0x6cdccc20, 0x1caf3: 0x6d20f420,\n\t0x1caf4: 0x6c096220, 0x1caf5: 0x6c985420, 0x1caf6: 0x6cf5c620, 0x1caf7: 0x6c734c20,\n\t0x1caf8: 0x6c87e020, 0x1caf9: 0x6cf9aa20, 0x1cafa: 0x6d1a4820, 0x1cafb: 0x6cdb7e20,\n\t0x1cafc: 0x6c80ae20, 0x1cafd: 0x6c070220, 0x1cafe: 0x6d35c020, 0x1caff: 0x6d0c7420,\n\t// Block 0x72c, offset 0x1cb00\n\t0x1cb00: 0x6ccbdc20, 0x1cb01: 0x6c85d220, 0x1cb02: 0x6c4e9e20, 0x1cb03: 0x6cfc0020,\n\t0x1cb04: 0x6c6dae20, 0x1cb05: 0x6cabfc20, 0x1cb06: 0x6c3a0620, 0x1cb07: 0x6cfeb820,\n\t0x1cb08: 0x6c044220, 0x1cb09: 0x6cb5cc20, 0x1cb0a: 0x6ca5da20, 0x1cb0b: 0x6c0bfc20,\n\t0x1cb0c: 0x6d1b5620, 0x1cb0d: 0x6c7efe20, 0x1cb0e: 0x6c8b0220, 0x1cb0f: 0x6c648820,\n\t0x1cb10: 0x6cbaac20, 0x1cb11: 0x6c7d5a20, 0x1cb12: 0x6d0c0a20, 0x1cb13: 0x6c4cba20,\n\t0x1cb14: 0x6d402020, 0x1cb15: 0x6c9c4820, 0x1cb16: 0x6c166820, 0x1cb17: 0x6d13e620,\n\t0x1cb18: 0x6d35e820, 0x1cb19: 0x6d32b420, 0x1cb1a: 0x6d0b2c20, 0x1cb1b: 0x6c9bce20,\n\t0x1cb1c: 0x6c10f820, 0x1cb1d: 0x6c243620, 0x1cb1e: 0x6cceec20, 0x1cb1f: 0x6c8b9820,\n\t0x1cb20: 0x6c2d1620, 0x1cb21: 0x6c953e20, 0x1cb22: 0x6c556020, 0x1cb23: 0x6d3f9020,\n\t0x1cb24: 0x6c4b4620, 0x1cb25: 0x6cefc820, 0x1cb26: 0x6c3c4c20, 0x1cb27: 0x6cf28c20,\n\t0x1cb28: 0x6d256620, 0x1cb29: 0x6d037420, 0x1cb2a: 0x6d399820, 0x1cb2b: 0x6c98ba20,\n\t0x1cb2c: 0x6cf14020, 0x1cb2d: 0x6c1fe420, 0x1cb2e: 0x6cfcce20, 0x1cb2f: 0x6ce93420,\n\t0x1cb30: 0x6d0bb220, 0x1cb31: 0x6ca4ac20, 0x1cb32: 0x6d004220, 0x1cb33: 0x6c636020,\n\t0x1cb34: 0x6c540620, 0x1cb35: 0x6c0af420, 0x1cb36: 0x6d1f3a20, 0x1cb37: 0x6d1f4820,\n\t0x1cb38: 0x6c9a0020, 0x1cb39: 0x6c13e420, 0x1cb3a: 0x6d111420, 0x1cb3b: 0x6cdcd620,\n\t0x1cb3c: 0x6c0f1420, 0x1cb3d: 0x6ca00820, 0x1cb3e: 0x6c574020, 0x1cb3f: 0x6d258620,\n\t// Block 0x72d, offset 0x1cb40\n\t0x1cb40: 0x6cd9b420, 0x1cb41: 0x6c96c420, 0x1cb42: 0x6d258820, 0x1cb43: 0x6c270c20,\n\t0x1cb44: 0x6d239220, 0x1cb45: 0x6cd1d220, 0x1cb46: 0x6c4fcc20, 0x1cb47: 0x6cbb6420,\n\t0x1cb48: 0x6d17ea20, 0x1cb49: 0x6d316a20, 0x1cb4a: 0x6c123420, 0x1cb4b: 0x6c4fe220,\n\t0x1cb4c: 0x6c97ee20, 0x1cb4d: 0x6c6e9620, 0x1cb4e: 0x6c67b820, 0x1cb4f: 0x6ca12e20,\n\t0x1cb50: 0x6d2ecc20, 0x1cb51: 0x6c150a20, 0x1cb52: 0x6c026420, 0x1cb53: 0x6c025420,\n\t0x1cb54: 0x6c4fd420, 0x1cb55: 0x6c24e020, 0x1cb56: 0x6c07c420, 0x1cb57: 0x6c749820,\n\t0x1cb58: 0x6c0a2c20, 0x1cb59: 0x6c09fe20, 0x1cb5a: 0x6c59dc20, 0x1cb5b: 0x6cb44a20,\n\t0x1cb5c: 0x6c8bd020, 0x1cb5d: 0x6d072620, 0x1cb5e: 0x6ce77e20, 0x1cb5f: 0x6d121e20,\n\t0x1cb60: 0x6c8a1220, 0x1cb61: 0x6cd79020, 0x1cb62: 0x6cff0620, 0x1cb63: 0x6cd49020,\n\t0x1cb64: 0x6c33a820, 0x1cb65: 0x6c69c620, 0x1cb66: 0x6c442020, 0x1cb67: 0x6c739020,\n\t0x1cb68: 0x6c31b420, 0x1cb69: 0x6c5c3820, 0x1cb6a: 0x6c7b3e20, 0x1cb6b: 0x6cfc2c20,\n\t0x1cb6c: 0x6d021820, 0x1cb6d: 0x6cde1820, 0x1cb6e: 0x6cfc3220, 0x1cb6f: 0x6d09b020,\n\t0x1cb70: 0x6ca92620, 0x1cb71: 0x6cb21820, 0x1cb72: 0x6c5dfc20, 0x1cb73: 0x6caa2a20,\n\t0x1cb74: 0x6c9be620, 0x1cb75: 0x6c8b5420, 0x1cb76: 0x6ca51e20, 0x1cb77: 0x6c4a0c20,\n\t0x1cb78: 0x6cd48420, 0x1cb79: 0x6c917420, 0x1cb7a: 0x6cde2020, 0x1cb7b: 0x6cfd3c20,\n\t0x1cb7c: 0x6c9ca220, 0x1cb7d: 0x6cc4e820, 0x1cb7e: 0x6c584020, 0x1cb7f: 0x6ca52820,\n\t// Block 0x72e, offset 0x1cb80\n\t0x1cb80: 0x6c957820, 0x1cb81: 0x6cfc5420, 0x1cb82: 0x6cb6ac20, 0x1cb83: 0x6c751e20,\n\t0x1cb84: 0x6d07fa20, 0x1cb85: 0x6c9eae20, 0x1cb86: 0x6d3e1a20, 0x1cb87: 0x6c93d620,\n\t0x1cb88: 0x6c914c20, 0x1cb89: 0x6d22b820, 0x1cb8a: 0x6cda7a20, 0x1cb8b: 0x6cedda20,\n\t0x1cb8c: 0x6cbff620, 0x1cb8d: 0x6c40d220, 0x1cb8e: 0x6c2f4c20, 0x1cb8f: 0x6c821620,\n\t0x1cb90: 0x6c031620, 0x1cb91: 0x6c5e7c20, 0x1cb92: 0x6c52fa20, 0x1cb93: 0x6c2c1a20,\n\t0x1cb94: 0x6c202e20, 0x1cb95: 0x6c416c20, 0x1cb96: 0x6c6fac20, 0x1cb97: 0x6d20be20,\n\t0x1cb98: 0x6cb6d820, 0x1cb99: 0x6d20c020, 0x1cb9a: 0x6c170620, 0x1cb9b: 0x6c969020,\n\t0x1cb9c: 0x6c456420, 0x1cb9d: 0x6cf43020, 0x1cb9e: 0x6c3d4220, 0x1cb9f: 0x6cf18420,\n\t0x1cba0: 0x6c6bc620, 0x1cba1: 0x6d0b1a20, 0x1cba2: 0x6c0d2620, 0x1cba3: 0x6c0b8020,\n\t0x1cba4: 0x6c056220, 0x1cba5: 0x6d268820, 0x1cba6: 0x6c73f220, 0x1cba7: 0x6c9ac220,\n\t0x1cba8: 0x6c73f420, 0x1cba9: 0x6cecca20, 0x1cbaa: 0x6c646e20, 0x1cbab: 0x6c99da20,\n\t0x1cbac: 0x6c282420, 0x1cbad: 0x6cb20420, 0x1cbae: 0x6cef9620, 0x1cbaf: 0x6c585820,\n\t0x1cbb0: 0x6cfc8020, 0x1cbb1: 0x6cbaa820, 0x1cbb2: 0x6c8cbe20, 0x1cbb3: 0x6c274a20,\n\t0x1cbb4: 0x6d16fc20, 0x1cbb5: 0x6c016820, 0x1cbb6: 0x6cb28820, 0x1cbb7: 0x6c2d4620,\n\t0x1cbb8: 0x6c3e1620, 0x1cbb9: 0x6d080220, 0x1cbba: 0x6cf7da20, 0x1cbbb: 0x6c0e5820,\n\t0x1cbbc: 0x6c229420, 0x1cbbd: 0x6c467820, 0x1cbbe: 0x6c640620, 0x1cbbf: 0x6cce9e20,\n\t// Block 0x72f, offset 0x1cbc0\n\t0x1cbc0: 0x6cb37220, 0x1cbc1: 0x6c222220, 0x1cbc2: 0x6c77e420, 0x1cbc3: 0x6cc4bc20,\n\t0x1cbc4: 0x6cd0f420, 0x1cbc5: 0x6ccfbe20, 0x1cbc6: 0x6d14a820, 0x1cbc7: 0x6d411220,\n\t0x1cbc8: 0x6c633c20, 0x1cbc9: 0x6c9f3a20, 0x1cbca: 0x6cccd420, 0x1cbcb: 0x6c8efe20,\n\t0x1cbcc: 0x6c095020, 0x1cbcd: 0x6d312c20, 0x1cbce: 0x6d312e20, 0x1cbcf: 0x6c73fc20,\n\t0x1cbd0: 0x6c383820, 0x1cbd1: 0x6c8f7820, 0x1cbd2: 0x6c6c3e20, 0x1cbd3: 0x6c698e20,\n\t0x1cbd4: 0x6c667020, 0x1cbd5: 0x6c85d420, 0x1cbd6: 0x6c4a1e20, 0x1cbd7: 0x6cfa9220,\n\t0x1cbd8: 0x6d386820, 0x1cbd9: 0x6c45e420, 0x1cbda: 0x6d0be820, 0x1cbdb: 0x6d053420,\n\t0x1cbdc: 0x6d0fa420, 0x1cbdd: 0x6d063620, 0x1cbde: 0x6c95f620, 0x1cbdf: 0x6cda9020,\n\t0x1cbe0: 0x6d399420, 0x1cbe1: 0x6cbd6420, 0x1cbe2: 0x6d1a4a20, 0x1cbe3: 0x6d09fe20,\n\t0x1cbe4: 0x6c05f620, 0x1cbe5: 0x6c379220, 0x1cbe6: 0x6cfe2a20, 0x1cbe7: 0x6d10e420,\n\t0x1cbe8: 0x6cf9ac20, 0x1cbe9: 0x6c4f6620, 0x1cbea: 0x6c4a4a20, 0x1cbeb: 0x6c1cba20,\n\t0x1cbec: 0x6d06ac20, 0x1cbed: 0x6c047820, 0x1cbee: 0x6cae1620, 0x1cbef: 0x6c81f020,\n\t0x1cbf0: 0x6c28fa20, 0x1cbf1: 0x6d1d6420, 0x1cbf2: 0x6c5aa620, 0x1cbf3: 0x6cf19220,\n\t0x1cbf4: 0x6c355c20, 0x1cbf5: 0x6c19e820, 0x1cbf6: 0x6c2c4420, 0x1cbf7: 0x6cf44c20,\n\t0x1cbf8: 0x6cf3c420, 0x1cbf9: 0x6c19e020, 0x1cbfa: 0x6c75b220, 0x1cbfb: 0x6c99ee20,\n\t0x1cbfc: 0x6c071220, 0x1cbfd: 0x6ce6c220, 0x1cbfe: 0x6cfcb420, 0x1cbff: 0x6c1f3220,\n\t// Block 0x730, offset 0x1cc00\n\t0x1cc00: 0x6c4e0820, 0x1cc01: 0x6d081220, 0x1cc02: 0x6d0c8820, 0x1cc03: 0x6cc05020,\n\t0x1cc04: 0x6d088a20, 0x1cc05: 0x6c80be20, 0x1cc06: 0x6c851420, 0x1cc07: 0x6d053c20,\n\t0x1cc08: 0x6c3e5620, 0x1cc09: 0x6c8e5020, 0x1cc0a: 0x6d0b1e20, 0x1cc0b: 0x6cf5f820,\n\t0x1cc0c: 0x6c8cec20, 0x1cc0d: 0x6c83c420, 0x1cc0e: 0x6c6d0420, 0x1cc0f: 0x6c88b620,\n\t0x1cc10: 0x6cdd6020, 0x1cc11: 0x6cddd620, 0x1cc12: 0x6c3cfe20, 0x1cc13: 0x6cecd620,\n\t0x1cc14: 0x6c2d5a20, 0x1cc15: 0x6cb20c20, 0x1cc16: 0x6d2df020, 0x1cc17: 0x6ccb2c20,\n\t0x1cc18: 0x6c9f5620, 0x1cc19: 0x6d234820, 0x1cc1a: 0x6c709420, 0x1cc1b: 0x6c186820,\n\t0x1cc1c: 0x6c7f0a20, 0x1cc1d: 0x6cf19620, 0x1cc1e: 0x6cd16c20, 0x1cc1f: 0x6cef1420,\n\t0x1cc20: 0x6ce4f620, 0x1cc21: 0x6c1f4020, 0x1cc22: 0x6d423c20, 0x1cc23: 0x6c081e20,\n\t0x1cc24: 0x6c196020, 0x1cc25: 0x6c562220, 0x1cc26: 0x6cb5ea20, 0x1cc27: 0x6c365e20,\n\t0x1cc28: 0x6c7d6420, 0x1cc29: 0x6c167020, 0x1cc2a: 0x6cb5ec20, 0x1cc2b: 0x6c082020,\n\t0x1cc2c: 0x6ced2020, 0x1cc2d: 0x6c925620, 0x1cc2e: 0x6c239e20, 0x1cc2f: 0x6c495220,\n\t0x1cc30: 0x6d0d9020, 0x1cc31: 0x6c2dca20, 0x1cc32: 0x6c072620, 0x1cc33: 0x6c8bb620,\n\t0x1cc34: 0x6cbd7220, 0x1cc35: 0x6caff220, 0x1cc36: 0x6cabd620, 0x1cc37: 0x6cc3b820,\n\t0x1cc38: 0x6d3d6220, 0x1cc39: 0x6cbd7420, 0x1cc3a: 0x6c383c20, 0x1cc3b: 0x6c6d8020,\n\t0x1cc3c: 0x6cbf2a20, 0x1cc3d: 0x6c321a20, 0x1cc3e: 0x6c6bec20, 0x1cc3f: 0x6c5cf220,\n\t// Block 0x731, offset 0x1cc40\n\t0x1cc40: 0x6d226c20, 0x1cc41: 0x6c999820, 0x1cc42: 0x6c9a1020, 0x1cc43: 0x6c210e20,\n\t0x1cc44: 0x6d07aa20, 0x1cc45: 0x6ce34a20, 0x1cc46: 0x6d038020, 0x1cc47: 0x6c277a20,\n\t0x1cc48: 0x6cc75220, 0x1cc49: 0x6c9f6020, 0x1cc4a: 0x6c64b820, 0x1cc4b: 0x6cefe020,\n\t0x1cc4c: 0x6cc86620, 0x1cc4d: 0x6c593820, 0x1cc4e: 0x6d00be20, 0x1cc4f: 0x6c1fe820,\n\t0x1cc50: 0x6c65ae20, 0x1cc51: 0x6d3bce20, 0x1cc52: 0x6c171620, 0x1cc53: 0x6c890a20,\n\t0x1cc54: 0x6cc2fe20, 0x1cc55: 0x6cf9d420, 0x1cc56: 0x6c32ce20, 0x1cc57: 0x6d262220,\n\t0x1cc58: 0x6d0b2e20, 0x1cc59: 0x6ca50220, 0x1cc5a: 0x6c557220, 0x1cc5b: 0x6d1bbe20,\n\t0x1cc5c: 0x6d215e20, 0x1cc5d: 0x6c59d620, 0x1cc5e: 0x6cc8d420, 0x1cc5f: 0x6ccb3020,\n\t0x1cc60: 0x6c8e7c20, 0x1cc61: 0x6cd1de20, 0x1cc62: 0x6cc69e20, 0x1cc63: 0x6cdd8220,\n\t0x1cc64: 0x6d112620, 0x1cc65: 0x6cf15c20, 0x1cc66: 0x6cf45c20, 0x1cc67: 0x6d317e20,\n\t0x1cc68: 0x6c6d2a20, 0x1cc69: 0x6d1c8a20, 0x1cc6a: 0x6c969e20, 0x1cc6b: 0x6ce1dc20,\n\t0x1cc6c: 0x6c8e8220, 0x1cc6d: 0x6ce11820, 0x1cc6e: 0x6c864e20, 0x1cc6f: 0x6c80c420,\n\t0x1cc70: 0x6c4a7020, 0x1cc71: 0x6d325020, 0x1cc72: 0x6cbad020, 0x1cc73: 0x6c25be20,\n\t0x1cc74: 0x6c748020, 0x1cc75: 0x6d2f8e20, 0x1cc76: 0x6d112820, 0x1cc77: 0x6c00bc20,\n\t0x1cc78: 0x6c0d4620, 0x1cc79: 0x6cd4f620, 0x1cc7a: 0x6c16c020, 0x1cc7b: 0x6c7d8020,\n\t0x1cc7c: 0x6d3b8820, 0x1cc7d: 0x6c234020, 0x1cc7e: 0x6c6cb020, 0x1cc7f: 0x6d141620,\n\t// Block 0x732, offset 0x1cc80\n\t0x1cc80: 0x6c250020, 0x1cc81: 0x6c234220, 0x1cc82: 0x6cb63820, 0x1cc83: 0x6c841a20,\n\t0x1cc84: 0x6d1d0820, 0x1cc85: 0x6cdd8a20, 0x1cc86: 0x6cc08c20, 0x1cc87: 0x6d082020,\n\t0x1cc88: 0x6c026620, 0x1cc89: 0x6c88c420, 0x1cc8a: 0x6c9ad420, 0x1cc8b: 0x6d2eda20,\n\t0x1cc8c: 0x6d1a9620, 0x1cc8d: 0x6c57e220, 0x1cc8e: 0x6d1be620, 0x1cc8f: 0x6cf0ce20,\n\t0x1cc90: 0x6c92e620, 0x1cc91: 0x6cf3ec20, 0x1cc92: 0x6c2aac20, 0x1cc93: 0x6d054820,\n\t0x1cc94: 0x6d2b9420, 0x1cc95: 0x6d0a4220, 0x1cc96: 0x6cc1b420, 0x1cc97: 0x6c299420,\n\t0x1cc98: 0x6c8be020, 0x1cc99: 0x6c8a1c20, 0x1cc9a: 0x6cbf6220, 0x1cc9b: 0x6cdb3420,\n\t0x1cc9c: 0x6c59ec20, 0x1cc9d: 0x6c4a8c20, 0x1cc9e: 0x6cb45220, 0x1cc9f: 0x6c6e3220,\n\t0x1cca0: 0x6c38be20, 0x1cca1: 0x6c6d4220, 0x1cca2: 0x6c8e9820, 0x1cca3: 0x6c5f3620,\n\t0x1cca4: 0x6c5cae20, 0x1cca5: 0x6c6e3420, 0x1cca6: 0x6c00e220, 0x1cca7: 0x6c0a8e20,\n\t0x1cca8: 0x6c120e20, 0x1cca9: 0x6cc1d820, 0x1ccaa: 0x6d2a5820, 0x1ccab: 0x6c290c20,\n\t0x1ccac: 0x6c694c20, 0x1ccad: 0x6c4c0420, 0x1ccae: 0x6ce07e20, 0x1ccaf: 0x6c5c5420,\n\t0x1ccb0: 0x6c58a620, 0x1ccb1: 0x6ccb7020, 0x1ccb2: 0x6cdc7620, 0x1ccb3: 0x6ce4c620,\n\t0x1ccb4: 0x6c1f9a20, 0x1ccb5: 0x6d21b820, 0x1ccb6: 0x6c6d6820, 0x1ccb7: 0x6c917620,\n\t0x1ccb8: 0x6c0d6020, 0x1ccb9: 0x6cd54220, 0x1ccba: 0x6cf21820, 0x1ccbb: 0x6d41a220,\n\t0x1ccbc: 0x6c7fd020, 0x1ccbd: 0x6cf82020, 0x1ccbe: 0x6d3ea820, 0x1ccbf: 0x6d083020,\n\t// Block 0x733, offset 0x1ccc0\n\t0x1ccc0: 0x6cc88420, 0x1ccc1: 0x6cf31e20, 0x1ccc2: 0x6c415820, 0x1ccc3: 0x6c827220,\n\t0x1ccc4: 0x6c31da20, 0x1ccc5: 0x6c86fe20, 0x1ccc6: 0x6d374020, 0x1ccc7: 0x6cc76a20,\n\t0x1ccc8: 0x6c848e20, 0x1ccc9: 0x6d29ac20, 0x1ccca: 0x6cbf7620, 0x1cccb: 0x6ce43a20,\n\t0x1cccc: 0x6c4aa420, 0x1cccd: 0x6cdc0020, 0x1ccce: 0x6c7eb220, 0x1cccf: 0x6c8fe020,\n\t0x1ccd0: 0x6c918620, 0x1ccd1: 0x6c872620, 0x1ccd2: 0x6d29b220, 0x1ccd3: 0x6c808a20,\n\t0x1ccd4: 0x6d1c2e20, 0x1ccd5: 0x6c9cb420, 0x1ccd6: 0x6cfd9c20, 0x1ccd7: 0x6cbf8820,\n\t0x1ccd8: 0x6c49b820, 0x1ccd9: 0x6c2a5020, 0x1ccda: 0x6d29c020, 0x1ccdb: 0x6c58ce20,\n\t0x1ccdc: 0x6c483e20, 0x1ccdd: 0x6c0eba20, 0x1ccde: 0x6c2e8820, 0x1ccdf: 0x6c0ed820,\n\t0x1cce0: 0x6c568e20, 0x1cce1: 0x6d347620, 0x1cce2: 0x6cb18020, 0x1cce3: 0x6c050c20,\n\t0x1cce4: 0x6cc4f020, 0x1cce5: 0x6c87a220, 0x1cce6: 0x6cec0c20,\n\t0x1cce8: 0x6cfdaa20, 0x1cce9: 0x6cb8aa20, 0x1ccea: 0x6c04c020, 0x1cceb: 0x6cae3a20,\n\t0x1ccec: 0x6c39c820, 0x1cced: 0x6c282620, 0x1ccee: 0x6cf26c20, 0x1ccef: 0x6cab3420,\n\t0x1ccf2: 0x6cec4a20, 0x1ccf3: 0x6c552a20,\n\t0x1ccf4: 0x6c8cc020, 0x1ccf5: 0x6d14aa20, 0x1ccf6: 0x6cb29420, 0x1ccf7: 0x6c223820,\n\t0x1ccf8: 0x6c042020, 0x1ccf9: 0x6c72ea20, 0x1ccfa: 0x6c16a820, 0x1ccfb: 0x6c1aa820,\n\t0x1ccfd: 0x6c296820, 0x1ccfe: 0x6c9bd620, 0x1ccff: 0x6c109820,\n\t// Block 0x734, offset 0x1cd00\n\t0x1cd00: 0x6d3c8820, 0x1cd01: 0x6cb2aa20, 0x1cd02: 0x6c0afe20, 0x1cd03: 0x6d393220,\n\t0x1cd04: 0x6d316c20, 0x1cd06: 0x6c225020, 0x1cd07: 0x6d1bd220,\n\t0x1cd08: 0x6cb7b220, 0x1cd09: 0x6cfb7420, 0x1cd0a: 0x6c90f220, 0x1cd0b: 0x6c2c9220,\n\t0x1cd0c: 0x6cab5020, 0x1cd0d: 0x6c9b2e20, 0x1cd0e: 0x6d3b8a20, 0x1cd0f: 0x6c084e20,\n\t0x1cd10: 0x6c8c6420, 0x1cd11: 0x6d2bb020, 0x1cd12: 0x6cf47c20, 0x1cd13: 0x6cb0c220,\n\t0x1cd14: 0x6c280220, 0x1cd15: 0x6cf27420, 0x1cd16: 0x6d1c0820, 0x1cd17: 0x6d0e0420,\n\t0x1cd18: 0x6c415c20, 0x1cd19: 0x6c273420, 0x1cd1a: 0x6cd03820, 0x1cd1b: 0x6ce49a20,\n\t0x1cd1c: 0x6ce49c20, 0x1cd1d: 0x6c4e1c20, 0x1cd1e: 0x6c16b020, 0x1cd1f: 0x6cd0d220,\n\t0x1cd20: 0x6cbe6e20, 0x1cd21: 0x6ccfcc20, 0x1cd22: 0x6c15aa20, 0x1cd23: 0x6c15ac20,\n\t0x1cd24: 0x6cc89c20, 0x1cd25: 0x6cd10620, 0x1cd26: 0x6cda4c20, 0x1cd27: 0x6cd00820,\n\t0x1cd28: 0x6d1e6c20, 0x1cd29: 0x6cd66020, 0x1cd2a: 0x6c920e20, 0x1cd2b: 0x6c40a820,\n\t0x1cd2c: 0x6d1e1020, 0x1cd2d: 0x6c080e20, 0x1cd2e: 0x6c3cdc20, 0x1cd2f: 0x6ca90820,\n\t0x1cd30: 0x6ce47e20, 0x1cd31: 0x6d1ee020, 0x1cd32: 0x6c63fc20, 0x1cd33: 0x6ccf9a20,\n\t0x1cd34: 0x6d2c1820, 0x1cd35: 0x6c2d3220, 0x1cd36: 0x6c3dce20, 0x1cd37: 0x6ca3e220,\n\t0x1cd38: 0x6c2cbc20, 0x1cd39: 0x6cb24820, 0x1cd3a: 0x6ce62e20, 0x1cd3b: 0x6c578420,\n\t0x1cd3c: 0x6ce6b220, 0x1cd3d: 0x6d321a20, 0x1cd3e: 0x6d28f620, 0x1cd3f: 0x6c9b0820,\n\t// Block 0x735, offset 0x1cd40\n\t0x1cd40: 0x6c093c20, 0x1cd41: 0x6cb58620, 0x1cd42: 0x6c8f2620, 0x1cd43: 0x6d09de20,\n\t0x1cd44: 0x6c8e4420, 0x1cd45: 0x6c170820, 0x1cd46: 0x6ca23220, 0x1cd47: 0x6d278a20,\n\t0x1cd48: 0x6c393620, 0x1cd49: 0x6c3e1820, 0x1cd4a: 0x6c44bc20, 0x1cd4b: 0x6ce48e20,\n\t0x1cd4c: 0x6c6bca20, 0x1cd4d: 0x6c6bcc20, 0x1cd4e: 0x6cc35220, 0x1cd4f: 0x6cf07c20,\n\t0x1cd50: 0x6c3e1a20, 0x1cd51: 0x6ce49020, 0x1cd52: 0x6ca23420, 0x1cd53: 0x6c341e20,\n\t0x1cd54: 0x6cacb020, 0x1cd55: 0x6c675620, 0x1cd56: 0x6cebd220, 0x1cd57: 0x6c269020,\n\t0x1cd58: 0x6ca3f020, 0x1cd59: 0x6c8e4c20, 0x1cd5a: 0x6c079a20, 0x1cd5b: 0x6d31c820,\n\t0x1cd5c: 0x6c1f2820, 0x1cd5d: 0x6ca23820, 0x1cd5e: 0x6ca23a20, 0x1cd5f: 0x6c12d820,\n\t0x1cd60: 0x6ce49620, 0x1cd61: 0x6c40f220, 0x1cd62: 0x6c096420, 0x1cd63: 0x6c269a20,\n\t0x1cd64: 0x6d35ea20, 0x1cd65: 0x6c361220, 0x1cd66: 0x6cb5ce20, 0x1cd67: 0x6c94a020,\n\t0x1cd68: 0x6cac3e20, 0x1cd69: 0x6d199020, 0x1cd6a: 0x6c384e20, 0x1cd6b: 0x6c579820,\n\t0x1cd6c: 0x6ccef220, 0x1cd6d: 0x6d212e20, 0x1cd6e: 0x6ca24220, 0x1cd6f: 0x6c75be20,\n\t0x1cd70: 0x6d176620, 0x1cd71: 0x6c8e5820, 0x1cd72: 0x6ccef420, 0x1cd73: 0x6c2eac20,\n\t0x1cd74: 0x6c1db020, 0x1cd75: 0x6c579e20, 0x1cd76: 0x6c290020, 0x1cd77: 0x6d3c9020,\n\t0x1cd78: 0x6c5eea20, 0x1cd79: 0x6ced2a20, 0x1cd7a: 0x6c676620, 0x1cd7b: 0x6c1a2620,\n\t0x1cd7c: 0x6c171e20, 0x1cd7d: 0x6cea8020, 0x1cd7e: 0x6c825220, 0x1cd7f: 0x6c5f1620,\n\t// Block 0x736, offset 0x1cd80\n\t0x1cd80: 0x6c13b020, 0x1cd81: 0x6c8e9a20, 0x1cd82: 0x6c2f3c20, 0x1cd83: 0x6ce98220,\n\t0x1cd84: 0x6c8c6c20, 0x1cd85: 0x6c678c20, 0x1cd86: 0x6c679020, 0x1cd87: 0x6c1e0020,\n\t0x1cd88: 0x6cb0d620, 0x1cd89: 0x6c2f0620, 0x1cd8a: 0x6c2f1020, 0x1cd8b: 0x6cb04420,\n\t0x1cd8c: 0x6c6a8220, 0x1cd8d: 0x6c287220, 0x1cd8e: 0x6cd4da20, 0x1cd8f: 0x6cd4dc20,\n\t0x1cd90: 0x6d369220, 0x1cd91: 0x6d153420, 0x1cd92: 0x6ca54020, 0x1cd93: 0x6ca39420,\n\t0x1cd94: 0x6c2f4e20, 0x1cd95: 0x6c08be20, 0x1cd96: 0x6c69f620, 0x1cd97: 0x6c89da20,\n\t0x1cd98: 0x6c426220, 0x1cd99: 0x6c437620, 0x1cd9a: 0x6c6fd620, 0x1cd9b: 0x6d38da20,\n\t0x1cd9c: 0x6cfa3020, 0x1cd9d: 0x6ccd7220, 0x1cd9e: 0x6d057220, 0x1cd9f: 0x6caa9e20,\n\t0x1cda0: 0x6c859220, 0x1cda1: 0x6d0f8a20, 0x1cda2: 0x6c192020, 0x1cda3: 0x6d1f0c20,\n\t0x1cda4: 0x6c033220, 0x1cda5: 0x6c6bce20, 0x1cda6: 0x6c73fe20, 0x1cda7: 0x6cb59620,\n\t0x1cda8: 0x6cf95620, 0x1cda9: 0x6c251e20, 0x1cdaa: 0x6c095220, 0x1cdab: 0x6d16fe20,\n\t0x1cdac: 0x6c85aa20, 0x1cdad: 0x6d401a20, 0x1cdae: 0x6c204e20, 0x1cdaf: 0x6c3c2620,\n\t0x1cdb0: 0x6d3ad220, 0x1cdb1: 0x6cad8620, 0x1cdb2: 0x6cafd020, 0x1cdb3: 0x6c418a20,\n\t0x1cdb4: 0x6c77ee20, 0x1cdb5: 0x6c21fa20, 0x1cdb6: 0x6d08de20, 0x1cdb7: 0x6d33c620,\n\t0x1cdb8: 0x6c283020, 0x1cdb9: 0x6d31ca20, 0x1cdba: 0x6c380220, 0x1cdbb: 0x6d350e20,\n\t0x1cdbc: 0x6ce29c20, 0x1cdbd: 0x6c706a20, 0x1cdbe: 0x6c600220, 0x1cdbf: 0x6c3a9a20,\n\t// Block 0x737, offset 0x1cdc0\n\t0x1cdc0: 0x6c706c20, 0x1cdc1: 0x6cccda20, 0x1cdc2: 0x6c634420, 0x1cdc3: 0x6d080820,\n\t0x1cdc4: 0x6d2cbc20, 0x1cdc5: 0x6c0e1420, 0x1cdc6: 0x6ca80a20, 0x1cdc7: 0x6d334620,\n\t0x1cdc8: 0x6d1d8020, 0x1cdc9: 0x6c6e6820, 0x1cdca: 0x6cc2e020, 0x1cdcb: 0x6ce29e20,\n\t0x1cdcc: 0x6ce6f420, 0x1cdcd: 0x6d14e620, 0x1cdce: 0x6c6a0020, 0x1cdcf: 0x6cefb020,\n\t0x1cdd0: 0x6c5b3620, 0x1cdd1: 0x6cdfa220, 0x1cdd2: 0x6d101220, 0x1cdd3: 0x6c1c1220,\n\t0x1cdd4: 0x6d35ec20, 0x1cdd5: 0x6c523220, 0x1cdd6: 0x6d0b5220, 0x1cdd7: 0x6c9a9220,\n\t0x1cdd8: 0x6c311a20, 0x1cdd9: 0x6c6e8620, 0x1cdda: 0x6cfec020, 0x1cddb: 0x6ce7c820,\n\t0x1cddc: 0x6ce86220, 0x1cddd: 0x6c986020, 0x1cdde: 0x6cb05e20, 0x1cddf: 0x6cfec220,\n\t0x1cde0: 0x6cdb8020, 0x1cde1: 0x6c3d7020, 0x1cde2: 0x6c861220, 0x1cde3: 0x6d363420,\n\t0x1cde4: 0x6c25de20, 0x1cde5: 0x6c345220, 0x1cde6: 0x6cf4ee20, 0x1cde7: 0x6ccbf420,\n\t0x1cde8: 0x6c815a20, 0x1cde9: 0x6cd46a20, 0x1cdea: 0x6c592620, 0x1cdeb: 0x6cfb5e20,\n\t0x1cdec: 0x6d17ee20, 0x1cded: 0x6c07f820, 0x1cdee: 0x6d2f3420, 0x1cdef: 0x6c495620,\n\t0x1cdf0: 0x6cdfec20, 0x1cdf1: 0x6c3ab820, 0x1cdf2: 0x6c966a20, 0x1cdf3: 0x6c8bba20,\n\t0x1cdf4: 0x6c1abc20, 0x1cdf5: 0x6c621a20, 0x1cdf6: 0x6ce50220, 0x1cdf7: 0x6c013820,\n\t0x1cdf8: 0x6c1c3220, 0x1cdf9: 0x6c09d020, 0x1cdfa: 0x6c09d220, 0x1cdfb: 0x6c9f6220,\n\t0x1cdfc: 0x6c481a20, 0x1cdfd: 0x6c330820, 0x1cdfe: 0x6c354220, 0x1cdff: 0x6cefe220,\n\t// Block 0x738, offset 0x1ce00\n\t0x1ce00: 0x6d209220, 0x1ce01: 0x6c254420, 0x1ce02: 0x6d0b5620, 0x1ce03: 0x6d3a1620,\n\t0x1ce04: 0x6c244020, 0x1ce05: 0x6c27e620, 0x1ce06: 0x6cd0b020, 0x1ce07: 0x6d380220,\n\t0x1ce08: 0x6c1c4620, 0x1ce09: 0x6d239420, 0x1ce0a: 0x6c541c20, 0x1ce0b: 0x6c3c5c20,\n\t0x1ce0c: 0x6c7e8420, 0x1ce0d: 0x6d0fd220, 0x1ce0e: 0x6c18de20, 0x1ce0f: 0x6ce8c420,\n\t0x1ce10: 0x6d226e20, 0x1ce11: 0x6c4c2820, 0x1ce12: 0x6cf19e20, 0x1ce13: 0x6c594420,\n\t0x1ce14: 0x6c7aa220, 0x1ce15: 0x6c642820, 0x1ce16: 0x6d19f620, 0x1ce17: 0x6d182c20,\n\t0x1ce18: 0x6c911020, 0x1ce19: 0x6ccaf820, 0x1ce1a: 0x6c749a20, 0x1ce1b: 0x6c1c5a20,\n\t0x1ce1c: 0x6cf6a620, 0x1ce1d: 0x6c492220, 0x1ce1e: 0x6d185c20, 0x1ce1f: 0x6cf16020,\n\t0x1ce20: 0x6c608c20, 0x1ce21: 0x6c205c20, 0x1ce22: 0x6c049220, 0x1ce23: 0x6c5bfe20,\n\t0x1ce24: 0x6c8e8420, 0x1ce25: 0x6c149c20, 0x1ce26: 0x6cd47220, 0x1ce27: 0x6caaaa20,\n\t0x1ce28: 0x6c2cd820, 0x1ce29: 0x6c26fc20, 0x1ce2a: 0x6c0d0e20, 0x1ce2b: 0x6cdfb820,\n\t0x1ce2c: 0x6d2f4020, 0x1ce2d: 0x6c0c1c20, 0x1ce2e: 0x6cd0c620, 0x1ce2f: 0x6c246220,\n\t0x1ce30: 0x6c95c020, 0x1ce31: 0x6d18a420, 0x1ce32: 0x6d403220, 0x1ce33: 0x6c1d7c20,\n\t0x1ce34: 0x6d2f4220, 0x1ce35: 0x6d2d4a20, 0x1ce36: 0x6cda4220, 0x1ce37: 0x6ccb5e20,\n\t0x1ce38: 0x6cc39c20, 0x1ce39: 0x6c2e3c20, 0x1ce3a: 0x6c911a20, 0x1ce3b: 0x6c911c20,\n\t0x1ce3c: 0x6ca15220, 0x1ce3d: 0x6cbda620, 0x1ce3e: 0x6d1b0820, 0x1ce3f: 0x6d1d0a20,\n\t// Block 0x739, offset 0x1ce40\n\t0x1ce40: 0x6c59fa20, 0x1ce41: 0x6c3f0820, 0x1ce42: 0x6c8a2620, 0x1ce43: 0x6c8fac20,\n\t0x1ce44: 0x6cbbfe20, 0x1ce45: 0x6c8ea820, 0x1ce46: 0x6c817a20, 0x1ce47: 0x6cfba820,\n\t0x1ce48: 0x6c3ad620, 0x1ce49: 0x6c280420, 0x1ce4a: 0x6d1b7420, 0x1ce4b: 0x6c51f020,\n\t0x1ce4c: 0x6c005420, 0x1ce4d: 0x6c04a620, 0x1ce4e: 0x6cfbaa20, 0x1ce4f: 0x6c492a20,\n\t0x1ce50: 0x6c4b8c20, 0x1ce51: 0x6ca9f620, 0x1ce52: 0x6d242e20, 0x1ce53: 0x6cef4a20,\n\t0x1ce54: 0x6d18e820, 0x1ce55: 0x6d1dc620, 0x1ce56: 0x6cb07820, 0x1ce57: 0x6c82ee20,\n\t0x1ce58: 0x6c86a820, 0x1ce59: 0x6cd57820, 0x1ce5a: 0x6c28d820, 0x1ce5b: 0x6c8c3c20,\n\t0x1ce5c: 0x6c2d8c20, 0x1ce5d: 0x6c8c3e20, 0x1ce5e: 0x6c7f6420, 0x1ce5f: 0x6c0d1020,\n\t0x1ce60: 0x6c62ba20, 0x1ce61: 0x6c1ae820, 0x1ce62: 0x6d103820, 0x1ce63: 0x6d086220,\n\t0x1ce64: 0x6c6a3820, 0x1ce65: 0x6d330e20, 0x1ce66: 0x6c99cc20, 0x1ce67: 0x6c874420,\n\t0x1ce68: 0x6c5e4820, 0x1ce69: 0x6c7f7820, 0x1ce6a: 0x6c631420, 0x1ce6b: 0x6c2cf220,\n\t0x1ce6c: 0x6d086620, 0x1ce6d: 0x6d1d2e20, 0x1ce6e: 0x6d1b2820, 0x1ce6f: 0x6cc21420,\n\t0x1ce70: 0x6d1dea20, 0x1ce71: 0x6cdfc820, 0x1ce72: 0x6c2cfe20, 0x1ce73: 0x6c95da20,\n\t0x1ce74: 0x6c947c20, 0x1ce75: 0x6c948420, 0x1ce76: 0x6c0e4620, 0x1ce77: 0x6c0e5420,\n\t0x1ce78: 0x6c4ada20, 0x1ce79: 0x6c037020, 0x1ce7a: 0x6c37e620, 0x1ce7b: 0x6c2a9c20,\n\t0x1ce7c: 0x6c37ec20, 0x1ce7d: 0x6c040820, 0x1ce7e: 0x6c041620, 0x1ce7f: 0x6cbc8020,\n\t// Block 0x73a, offset 0x1ce80\n\t0x1ce80: 0x6c5fd620, 0x1ce81: 0x6d2a6820, 0x1ce82: 0x6d2a6a20, 0x1ce83: 0x6c994420,\n\t0x1ce84: 0x6c2a8c20, 0x1ce85: 0x6cabb820, 0x1ce86: 0x6c69f820, 0x1ce87: 0x6c59ac20,\n\t0x1ce88: 0x6c4a3e20, 0x1ce89: 0x6c229620, 0x1ce8a: 0x6c8ccc20, 0x1ce8b: 0x6c42b620,\n\t0x1ce8c: 0x6ca0f020, 0x1ce8d: 0x6c5ffa20, 0x1ce8e: 0x6c68e420, 0x1ce8f: 0x6caf0620,\n\t0x1ce90: 0x6c42be20, 0x1ce91: 0x6c004020, 0x1ce92: 0x6c356620, 0x1ce93: 0x6c503e20,\n\t0x1ce94: 0x6c4ec420, 0x1ce95: 0x6c09a420, 0x1ce96: 0x6ced2220, 0x1ce97: 0x6c1dbc20,\n\t0x1ce98: 0x6cba5c20, 0x1ce99: 0x6cf65220, 0x1ce9a: 0x6c005020, 0x1ce9b: 0x6cffb820,\n\t0x1ce9c: 0x6c505c20, 0x1ce9d: 0x6c5a7820, 0x1ce9e: 0x6c505e20, 0x1ce9f: 0x6d2b0220,\n\t0x1cea0: 0x6c251020, 0x1cea1: 0x6c506c20, 0x1cea2: 0x6cffc220, 0x1cea3: 0x6d132820,\n\t0x1cea4: 0x6cb33820, 0x1cea5: 0x6c507220, 0x1cea6: 0x6c695220, 0x1cea7: 0x6c00f220,\n\t0x1cea8: 0x6d03ae20, 0x1cea9: 0x6c5a8020, 0x1ceaa: 0x6c872820, 0x1ceab: 0x6cb1a620,\n\t0x1ceac: 0x6c51a220, 0x1cead: 0x6c69e220, 0x1ceae: 0x6cafa820, 0x1ceaf: 0x6c41ca20,\n\t0x1ceb0: 0x6cad8820, 0x1ceb1: 0x6d391c20, 0x1ceb2: 0x6c756e20, 0x1ceb3: 0x6cc06620,\n\t0x1ceb4: 0x6c259420, 0x1ceb5: 0x6cc3ce20, 0x1ceb6: 0x6d2bee20, 0x1ceb7: 0x6c47b420,\n\t0x1ceb8: 0x6c757620, 0x1ceb9: 0x6c757820, 0x1ceba: 0x6d394420, 0x1cebb: 0x6d2bfe20,\n\t0x1cebc: 0x6c47d820, 0x1cebd: 0x6d2f7c20, 0x1cebe: 0x6c31e020, 0x1cebf: 0x6c9f8a20,\n\t// Block 0x73b, offset 0x1cec0\n\t0x1cec0: 0x6cb6da20, 0x1cec1: 0x6d1c5620, 0x1cec2: 0x6d20c620, 0x1cec3: 0x6c069220,\n\t0x1cec4: 0x6d2f5e20, 0x1cec5: 0x6d37a820, 0x1cec6: 0x6cae3c20, 0x1cec7: 0x6c50de20,\n\t0x1cec8: 0x6d1c5c20, 0x1cec9: 0x6c50f420, 0x1ceca: 0x6d173820, 0x1cecb: 0x6c0e6020,\n\t0x1cecc: 0x6cecfc20, 0x1cecd: 0x6c50f620, 0x1cece: 0x6c021620, 0x1cecf: 0x6d2de220,\n\t0x1ced0: 0x6d0c8020, 0x1ced1: 0x6c647e20, 0x1ced2: 0x6c510e20, 0x1ced3: 0x6d208820,\n\t0x1ced4: 0x6c7c3a20, 0x1ced5: 0x6c394620, 0x1ced6: 0x6c413220, 0x1ced7: 0x6c2a1220,\n\t0x1ced8: 0x6cac5620, 0x1ced9: 0x6c3f6620, 0x1ceda: 0x6cc06820, 0x1cedb: 0x6cd15e20,\n\t0x1cedc: 0x6c2a1620, 0x1cedd: 0x6c926a20, 0x1cede: 0x6d2df820, 0x1cedf: 0x6c9b2220,\n\t0x1cee0: 0x6c841c20, 0x1cee1: 0x6c6ca220, 0x1cee2: 0x6d071220, 0x1cee3: 0x6c64ca20,\n\t0x1cee4: 0x6cac6a20, 0x1cee5: 0x6c49a620, 0x1cee6: 0x6c014e20, 0x1cee7: 0x6c915c20,\n\t0x1cee8: 0x6d065e20, 0x1cee9: 0x6d38b420, 0x1ceea: 0x6c299620, 0x1ceeb: 0x6c015620,\n\t0x1ceec: 0x6c47e420, 0x1ceed: 0x6c872a20, 0x1ceee: 0x6ca26420, 0x1ceef: 0x6c2f5020,\n\t0x1cef0: 0x6c421020, 0x1cef1: 0x6d057420, 0x1cef2: 0x6c983a20, 0x1cef3: 0x6cee4e20,\n\t0x1cef4: 0x6d344020, 0x1cef5: 0x6cb74a20, 0x1cef6: 0x6d25e020, 0x1cef7: 0x6ce49220,\n\t0x1cef8: 0x6cfd6420, 0x1cef9: 0x6c33ca20, 0x1cefa: 0x6d02ba20, 0x1cefb: 0x6cf86620,\n\t0x1cefc: 0x6cacae20, 0x1cefd: 0x6c3c2820, 0x1cefe: 0x6c33de20, 0x1ceff: 0x6c9f3c20,\n\t// Block 0x73c, offset 0x1cf00\n\t0x1cf00: 0x6c9fee20, 0x1cf01: 0x6cd12c20, 0x1cf02: 0x6cd34420, 0x1cf03: 0x6d278c20,\n\t0x1cf04: 0x6c9e0e20, 0x1cf05: 0x6cac3a20, 0x1cf06: 0x6c39cc20, 0x1cf07: 0x6c9e8a20,\n\t0x1cf08: 0x6c27c220, 0x1cf09: 0x6c99e020, 0x1cf0a: 0x6c995820, 0x1cf0b: 0x6c770420,\n\t0x1cf0c: 0x6cfc9020, 0x1cf0d: 0x6c79ba20, 0x1cf0e: 0x6cd35620, 0x1cf0f: 0x6d0f5420,\n\t0x1cf10: 0x6d32a220, 0x1cf11: 0x6d119c20, 0x1cf12: 0x6ccfce20, 0x1cf13: 0x6c5dae20,\n\t0x1cf14: 0x6c26ec20, 0x1cf15: 0x6d31cc20, 0x1cf16: 0x6c7bee20, 0x1cf17: 0x6c706e20,\n\t0x1cf18: 0x6cd09a20, 0x1cf19: 0x6d14d020, 0x1cf1a: 0x6cd12e20, 0x1cf1b: 0x6c9a8a20,\n\t0x1cf1c: 0x6ca0f420, 0x1cf1d: 0x6d3ad620, 0x1cf1e: 0x6d313c20, 0x1cf1f: 0x6d313e20,\n\t0x1cf20: 0x6c9dbc20, 0x1cf21: 0x6cd35820, 0x1cf22: 0x6d24d620, 0x1cf23: 0x6c2e8a20,\n\t0x1cf24: 0x6ca69020, 0x1cf25: 0x6d3f4620, 0x1cf26: 0x6d3f4820, 0x1cf27: 0x6c179620,\n\t0x1cf28: 0x6d2c7620, 0x1cf29: 0x6d087e20, 0x1cf2a: 0x6c0dda20, 0x1cf2b: 0x6c9cea20,\n\t0x1cf2c: 0x6c8f7e20, 0x1cf2d: 0x6cdbc220, 0x1cf2e: 0x6ce73e20, 0x1cf2f: 0x6c9c3020,\n\t0x1cf30: 0x6c2f3620, 0x1cf31: 0x6c2c4620, 0x1cf32: 0x6ca54c20, 0x1cf33: 0x6c9ff820,\n\t0x1cf34: 0x6d088c20, 0x1cf35: 0x6c1aaa20, 0x1cf36: 0x6c7bf420, 0x1cf37: 0x6c735a20,\n\t0x1cf38: 0x6ca1ce20, 0x1cf39: 0x6d323a20, 0x1cf3a: 0x6ce5d220, 0x1cf3b: 0x6d0fac20,\n\t0x1cf3c: 0x6d0d6c20, 0x1cf3d: 0x6ca10620, 0x1cf3e: 0x6d382620, 0x1cf3f: 0x6ca0f620,\n\t// Block 0x73d, offset 0x1cf40\n\t0x1cf40: 0x6d311220, 0x1cf41: 0x6d32b620, 0x1cf42: 0x6c9a0220, 0x1cf43: 0x6cdd1e20,\n\t0x1cf44: 0x6cceda20, 0x1cf45: 0x6c4ec820, 0x1cf46: 0x6c592820, 0x1cf47: 0x6c2c5c20,\n\t0x1cf48: 0x6c1a7620, 0x1cf49: 0x6c25e020, 0x1cf4a: 0x6c736420, 0x1cf4b: 0x6c356820,\n\t0x1cf4c: 0x6c97bc20, 0x1cf4d: 0x6cfcc420, 0x1cf4e: 0x6cf61e20, 0x1cf4f: 0x6c7dd420,\n\t0x1cf50: 0x6c7f4820, 0x1cf51: 0x6c659820, 0x1cf52: 0x6ccd4e20, 0x1cf53: 0x6ce50420,\n\t0x1cf54: 0x6c4bfc20, 0x1cf55: 0x6ced2c20, 0x1cf56: 0x6c839820, 0x1cf57: 0x6cd39c20,\n\t0x1cf58: 0x6cbf4020, 0x1cf59: 0x6c8b1820, 0x1cf5a: 0x6d0b3020, 0x1cf5b: 0x6c6ec820,\n\t0x1cf5c: 0x6d32d420, 0x1cf5d: 0x6c83ea20, 0x1cf5e: 0x6c7f4a20, 0x1cf5f: 0x6cdc4c20,\n\t0x1cf60: 0x6c737420, 0x1cf61: 0x6cd72820, 0x1cf62: 0x6cdbca20, 0x1cf63: 0x6c317420,\n\t0x1cf64: 0x6c09d420, 0x1cf65: 0x6cb0a620, 0x1cf66: 0x6ca29c20, 0x1cf67: 0x6c5cd420,\n\t0x1cf68: 0x6ca6ae20, 0x1cf69: 0x6c926c20, 0x1cf6a: 0x6d17f220, 0x1cf6b: 0x6c6aec20,\n\t0x1cf6c: 0x6c113620, 0x1cf6d: 0x6d38ea20, 0x1cf6e: 0x6d217220, 0x1cf6f: 0x6c5cd620,\n\t0x1cf70: 0x6c96c620, 0x1cf71: 0x6cfa4420, 0x1cf72: 0x6d040420, 0x1cf73: 0x6c5ada20,\n\t0x1cf74: 0x6c4c0220, 0x1cf75: 0x6d290a20, 0x1cf76: 0x6c218620, 0x1cf77: 0x6c64ba20,\n\t0x1cf78: 0x6c9a9e20, 0x1cf79: 0x6c322620, 0x1cf7a: 0x6c541e20, 0x1cf7b: 0x6d07b420,\n\t0x1cf7c: 0x6ce53c20, 0x1cf7d: 0x6c7c9220, 0x1cf7e: 0x6c42ce20, 0x1cf7f: 0x6cc8da20,\n\t// Block 0x73e, offset 0x1cf80\n\t0x1cf80: 0x6c99a020, 0x1cf81: 0x6d071420, 0x1cf82: 0x6c381e20, 0x1cf83: 0x6cf30820,\n\t0x1cf84: 0x6c9e7820, 0x1cf85: 0x6c1e2e20, 0x1cf86: 0x6c7d0620, 0x1cf87: 0x6c9c3220,\n\t0x1cf88: 0x6cf25e20, 0x1cf89: 0x6c7a0020, 0x1cf8a: 0x6c298420, 0x1cf8b: 0x6c188220,\n\t0x1cf8c: 0x6c782420, 0x1cf8d: 0x6cda2420, 0x1cf8e: 0x6cf97620, 0x1cf8f: 0x6cbf5020,\n\t0x1cf90: 0x6ca15420, 0x1cf91: 0x6ca01620, 0x1cf92: 0x6c977220, 0x1cf93: 0x6cd72c20,\n\t0x1cf94: 0x6d2b0420, 0x1cf95: 0x6d2f4420, 0x1cf96: 0x6d18a620, 0x1cf97: 0x6c2dde20,\n\t0x1cf98: 0x6c79c420, 0x1cf99: 0x6ca15620, 0x1cf9a: 0x6cd75c20, 0x1cf9b: 0x6c235620,\n\t0x1cf9c: 0x6c907820, 0x1cf9d: 0x6c1ad020, 0x1cf9e: 0x6c977820, 0x1cf9f: 0x6cb19a20,\n\t0x1cfa0: 0x6c199420, 0x1cfa1: 0x6c4b1a20, 0x1cfa2: 0x6c9b3a20, 0x1cfa3: 0x6c596c20,\n\t0x1cfa4: 0x6cc8f220, 0x1cfa5: 0x6cb1d420, 0x1cfa6: 0x6cf6f020, 0x1cfa7: 0x6cbc0220,\n\t0x1cfa8: 0x6cb45a20, 0x1cfa9: 0x6d3a8420, 0x1cfaa: 0x6c2aea20, 0x1cfab: 0x6cd07e20,\n\t0x1cfac: 0x6cd76020, 0x1cfad: 0x6c8a7c20, 0x1cfae: 0x6c185020, 0x1cfaf: 0x6cfbac20,\n\t0x1cfb0: 0x6c771220, 0x1cfb1: 0x6d132a20, 0x1cfb2: 0x6d074820, 0x1cfb3: 0x6ce79220,\n\t0x1cfb4: 0x6ca1ea20, 0x1cfb5: 0x6c8be620, 0x1cfb6: 0x6c4b7e20, 0x1cfb7: 0x6c66e020,\n\t0x1cfb8: 0x6d136420, 0x1cfb9: 0x6c00f420, 0x1cfba: 0x6c5c6a20, 0x1cfbb: 0x6d2dac20,\n\t0x1cfbc: 0x6c65f220, 0x1cfbd: 0x6c47e620, 0x1cfbe: 0x6d2fea20, 0x1cfbf: 0x6cc1e420,\n\t// Block 0x73f, offset 0x1cfc0\n\t0x1cfc0: 0x6c9a3420, 0x1cfc1: 0x6c1e3620, 0x1cfc2: 0x6ccb0620, 0x1cfc3: 0x6ca94c20,\n\t0x1cfc4: 0x6d09c020, 0x1cfc5: 0x6d123e20, 0x1cfc6: 0x6c5e1820, 0x1cfc7: 0x6c9b7020,\n\t0x1cfc8: 0x6c9de620, 0x1cfc9: 0x6cb22020, 0x1cfca: 0x6c9de820, 0x1cfcb: 0x6c870220,\n\t0x1cfcc: 0x6c7c1420, 0x1cfcd: 0x6c750020, 0x1cfce: 0x6d07e220, 0x1cfcf: 0x6c9dee20,\n\t0x1cfd0: 0x6c5e4a20, 0x1cfd1: 0x6c919220, 0x1cfd2: 0x6c9b8e20, 0x1cfd3: 0x6c8fe420,\n\t0x1cfd4: 0x6c49bc20, 0x1cfd5: 0x6c97d620, 0x1cfd6: 0x6cf82e20, 0x1cfd7: 0x6c1f9020,\n\t0x1cfd8: 0x6ce19620, 0x1cfd9: 0x6c771c20, 0x1cfda: 0x6d3a9620, 0x1cfdb: 0x6c98c220,\n\t0x1cfdc: 0x6c6c3220, 0x1cfdd: 0x6c8ba620, 0x1cfde: 0x6d234a20, 0x1cfdf: 0x6cd78420,\n\t0x1cfe0: 0x6d2ad220, 0x1cfe1: 0x6c752c20, 0x1cfe2: 0x6cd2a820, 0x1cfe3: 0x6d15c020,\n\t0x1cfe4: 0x6cd04820, 0x1cfe5: 0x6d339c20, 0x1cfe6: 0x6c53f020, 0x1cfe7: 0x6cd04e20,\n\t0x1cfe8: 0x6d1ce020, 0x1cfe9: 0x6c72d420, 0x1cfea: 0x6d387820, 0x1cfeb: 0x6c68e820,\n\t0x1cfec: 0x6c25e220, 0x1cfed: 0x6c32ae20, 0x1cfee: 0x6c006820, 0x1cfef: 0x6c695020,\n\t0x1cff0: 0x6d2b9820, 0x1cff1: 0x6d265c20, 0x1cff2: 0x6c03ce20, 0x1cff3: 0x6cd22c20,\n\t0x1cff4: 0x6c2f9420, 0x1cff5: 0x6cb73a20, 0x1cff6: 0x6c5e8620, 0x1cff7: 0x6d3eee20,\n\t0x1cff8: 0x6c417c20, 0x1cff9: 0x6cf4ba20, 0x1cffa: 0x6d302020, 0x1cffb: 0x6c7a2a20,\n\t0x1cffc: 0x6c426420, 0x1cffd: 0x6cf84c20, 0x1cffe: 0x6c388820, 0x1cfff: 0x6c7be620,\n\t// Block 0x740, offset 0x1d000\n\t0x1d000: 0x6c295820, 0x1d001: 0x6c969220, 0x1d002: 0x6ccbd220, 0x1d003: 0x6c27c420,\n\t0x1d004: 0x6c740220, 0x1d005: 0x6c85ac20, 0x1d006: 0x6c3d4e20, 0x1d007: 0x6c9f3e20,\n\t0x1d008: 0x6c35b020, 0x1d009: 0x6c5da620, 0x1d00a: 0x6c772820, 0x1d00b: 0x6d350620,\n\t0x1d00c: 0x6cb75c20, 0x1d00d: 0x6c76c420, 0x1d00e: 0x6c6bd020, 0x1d00f: 0x6c0d2a20,\n\t0x1d010: 0x6c35e020, 0x1d011: 0x6d0b8820, 0x1d012: 0x6caf4e20, 0x1d013: 0x6d302420,\n\t0x1d014: 0x6d0c7820, 0x1d015: 0x6cdc2a20, 0x1d016: 0x6d3b7820, 0x1d017: 0x6c17d220,\n\t0x1d018: 0x6c33e020, 0x1d019: 0x6cac3c20, 0x1d01a: 0x6d0e4a20, 0x1d01b: 0x6c6d7e20,\n\t0x1d01c: 0x6c3c2a20, 0x1d01d: 0x6c381020, 0x1d01e: 0x6ca0f820, 0x1d01f: 0x6d2c7820,\n\t0x1d020: 0x6c707020, 0x1d021: 0x6d22f620, 0x1d022: 0x6c77f020, 0x1d023: 0x6ceb0a20,\n\t0x1d024: 0x6ceb0c20, 0x1d025: 0x6c2bec20, 0x1d026: 0x6d2d3c20, 0x1d027: 0x6d314220,\n\t0x1d028: 0x6c35fc20, 0x1d029: 0x6c3e3820, 0x1d02a: 0x6ca23e20, 0x1d02b: 0x6d3ad820,\n\t0x1d02c: 0x6c7e5c20, 0x1d02d: 0x6c0aee20, 0x1d02e: 0x6caa5620, 0x1d02f: 0x6cb25220,\n\t0x1d030: 0x6cae6020, 0x1d031: 0x6c8cce20, 0x1d032: 0x6cad8a20, 0x1d033: 0x6c821e20,\n\t0x1d034: 0x6cb37c20, 0x1d035: 0x6c0e6220, 0x1d036: 0x6cb37e20, 0x1d037: 0x6ccfd020,\n\t0x1d038: 0x6d28b020, 0x1d039: 0x6c009820, 0x1d03a: 0x6c85d620, 0x1d03b: 0x6c8f8020,\n\t0x1d03c: 0x6ce73a20, 0x1d03d: 0x6d1e8420, 0x1d03e: 0x6c85d820, 0x1d03f: 0x6c7c2a20,\n\t// Block 0x741, offset 0x1d040\n\t0x1d040: 0x6c1ed820, 0x1d041: 0x6c793620, 0x1d042: 0x6cc2e420, 0x1d043: 0x6d399c20,\n\t0x1d044: 0x6c7b9c20, 0x1d045: 0x6c4a5a20, 0x1d046: 0x6c361420, 0x1d047: 0x6ca4a620,\n\t0x1d048: 0x6cb86420, 0x1d049: 0x6c924420, 0x1d04a: 0x6cefb220, 0x1d04b: 0x6c009a20,\n\t0x1d04c: 0x6c448420, 0x1d04d: 0x6cfcb620, 0x1d04e: 0x6d03e220, 0x1d04f: 0x6d0c8a20,\n\t0x1d050: 0x6c307420, 0x1d051: 0x6cae6c20, 0x1d052: 0x6cf5fc20, 0x1d053: 0x6c81f220,\n\t0x1d054: 0x6c533c20, 0x1d055: 0x6cd78020, 0x1d056: 0x6cf9b020, 0x1d057: 0x6cbb7020,\n\t0x1d058: 0x6cbeea20, 0x1d059: 0x6cef0220, 0x1d05a: 0x6cbbdc20, 0x1d05b: 0x6d176820,\n\t0x1d05c: 0x6c793e20, 0x1d05d: 0x6cfec620, 0x1d05e: 0x6cc3c220, 0x1d05f: 0x6c162a20,\n\t0x1d060: 0x6c80c820, 0x1d061: 0x6c52ac20, 0x1d062: 0x6d213020, 0x1d063: 0x6cfec820,\n\t0x1d064: 0x6cf9c620, 0x1d065: 0x6c988e20, 0x1d066: 0x6c960220, 0x1d067: 0x6d1e3c20,\n\t0x1d068: 0x6c17dc20, 0x1d069: 0x6c182220, 0x1d06a: 0x6cf2f620, 0x1d06b: 0x6c8e5c20,\n\t0x1d06c: 0x6d1d3c20, 0x1d06d: 0x6c985a20, 0x1d06e: 0x6cc3c420, 0x1d06f: 0x6d0e7820,\n\t0x1d070: 0x6ccbf620, 0x1d071: 0x6c7dac20, 0x1d072: 0x6d234c20, 0x1d073: 0x6c1c2420,\n\t0x1d074: 0x6c57de20, 0x1d075: 0x6c91be20, 0x1d076: 0x6c190420, 0x1d077: 0x6c659a20,\n\t0x1d078: 0x6caaa820, 0x1d079: 0x6cd92620, 0x1d07a: 0x6d3d6e20, 0x1d07b: 0x6c794620,\n\t0x1d07c: 0x6caeaa20, 0x1d07d: 0x6d0c1420, 0x1d07e: 0x6d3c9220, 0x1d07f: 0x6c797e20,\n\t// Block 0x742, offset 0x1d080\n\t0x1d080: 0x6c19ec20, 0x1d081: 0x6cb5fc20, 0x1d082: 0x6d402220, 0x1d083: 0x6cbecc20,\n\t0x1d084: 0x6c8bbc20, 0x1d085: 0x6c757420, 0x1d086: 0x6c0e7e20, 0x1d087: 0x6c2fac20,\n\t0x1d088: 0x6c9f6420, 0x1d089: 0x6c2dce20, 0x1d08a: 0x6c64bc20, 0x1d08b: 0x6c51d020,\n\t0x1d08c: 0x6c926e20, 0x1d08d: 0x6c00ac20, 0x1d08e: 0x6cdc4e20, 0x1d08f: 0x6cc3d220,\n\t0x1d090: 0x6c837c20, 0x1d091: 0x6c06b020, 0x1d092: 0x6d1a7420, 0x1d093: 0x6c334c20,\n\t0x1d094: 0x6cf45220, 0x1d095: 0x6cb5fe20, 0x1d096: 0x6c951820, 0x1d097: 0x6ced2e20,\n\t0x1d098: 0x6c2d2020, 0x1d099: 0x6ca4b220, 0x1d09a: 0x6c073420, 0x1d09b: 0x6cb7a420,\n\t0x1d09c: 0x6c190620, 0x1d09d: 0x6cc87020, 0x1d09e: 0x6d0cb620, 0x1d09f: 0x6c2ed220,\n\t0x1d0a0: 0x6c2fb020, 0x1d0a1: 0x6c31a820, 0x1d0a2: 0x6ceb2e20, 0x1d0a3: 0x6c6b0c20,\n\t0x1d0a4: 0x6d1bc620, 0x1d0a5: 0x6c0b4420, 0x1d0a6: 0x6c78c620, 0x1d0a7: 0x6c0a0220,\n\t0x1d0a8: 0x6cf0b020, 0x1d0a9: 0x6cd79220, 0x1d0aa: 0x6d318220, 0x1d0ab: 0x6c32d420,\n\t0x1d0ac: 0x6cf9de20, 0x1d0ad: 0x6c297a20, 0x1d0ae: 0x6ce35420, 0x1d0af: 0x6ca50c20,\n\t0x1d0b0: 0x6caf1420, 0x1d0b1: 0x6c65c420, 0x1d0b2: 0x6c2c8220, 0x1d0b3: 0x6ce0a220,\n\t0x1d0b4: 0x6c13f620, 0x1d0b5: 0x6ce54220, 0x1d0b6: 0x6cb7b420, 0x1d0b7: 0x6c341420,\n\t0x1d0b8: 0x6c3c5e20, 0x1d0b9: 0x6d08a420, 0x1d0ba: 0x6cc3f020, 0x1d0bb: 0x6cc3f220,\n\t0x1d0bc: 0x6c96a020, 0x1d0bd: 0x6c45a620, 0x1d0be: 0x6ca73820, 0x1d0bf: 0x6cdb0820,\n\t// Block 0x743, offset 0x1d0c0\n\t0x1d0c0: 0x6c357820, 0x1d0c1: 0x6c225420, 0x1d0c2: 0x6c8e8820, 0x1d0c3: 0x6cd81a20,\n\t0x1d0c4: 0x6ce12620, 0x1d0c5: 0x6c058820, 0x1d0c6: 0x6c574620, 0x1d0c7: 0x6caf8620,\n\t0x1d0c8: 0x6ceff420, 0x1d0c9: 0x6cca8820, 0x1d0ca: 0x6c82d220, 0x1d0cb: 0x6c25c420,\n\t0x1d0cc: 0x6ce4ba20, 0x1d0cd: 0x6cf9e620, 0x1d0ce: 0x6cf6aa20, 0x1d0cf: 0x6c883e20,\n\t0x1d0d0: 0x6cac7020, 0x1d0d1: 0x6cef3020, 0x1d0d2: 0x6d27fc20, 0x1d0d3: 0x6c330e20,\n\t0x1d0d4: 0x6d307e20, 0x1d0d5: 0x6c782620, 0x1d0d6: 0x6c7e6020, 0x1d0d7: 0x6d3b8c20,\n\t0x1d0d8: 0x6cbed820, 0x1d0d9: 0x6c4be420, 0x1d0da: 0x6d3b9220, 0x1d0db: 0x6c152620,\n\t0x1d0dc: 0x6cb7da20, 0x1d0dd: 0x6c026c20, 0x1d0de: 0x6cae8620, 0x1d0df: 0x6c8f4020,\n\t0x1d0e0: 0x6c91de20, 0x1d0e1: 0x6c771420, 0x1d0e2: 0x6c209a20, 0x1d0e3: 0x6c190e20,\n\t0x1d0e4: 0x6d1afe20, 0x1d0e5: 0x6c82d820, 0x1d0e6: 0x6c0c1e20, 0x1d0e7: 0x6cb7dc20,\n\t0x1d0e8: 0x6ca07c20, 0x1d0e9: 0x6cb7de20, 0x1d0ea: 0x6c24e820, 0x1d0eb: 0x6d3fc220,\n\t0x1d0ec: 0x6cbeda20, 0x1d0ed: 0x6c21da20, 0x1d0ee: 0x6c952a20, 0x1d0ef: 0x6c5f5420,\n\t0x1d0f0: 0x6ccdbe20, 0x1d0f1: 0x6c817c20, 0x1d0f2: 0x6cc1c020, 0x1d0f3: 0x6d2b9a20,\n\t0x1d0f4: 0x6c2aec20, 0x1d0f5: 0x6c66e220, 0x1d0f6: 0x6cf8f220, 0x1d0f7: 0x6c8be820,\n\t0x1d0f8: 0x6c2fbe20, 0x1d0f9: 0x6ce01e20, 0x1d0fa: 0x6c59fc20, 0x1d0fb: 0x6cac7620,\n\t0x1d0fc: 0x6d28ce20, 0x1d0fd: 0x6cbbb820, 0x1d0fe: 0x6c2b4820, 0x1d0ff: 0x6c86aa20,\n\t// Block 0x744, offset 0x1d100\n\t0x1d100: 0x6c673e20, 0x1d101: 0x6c688220, 0x1d102: 0x6cf94a20, 0x1d103: 0x6d2f0e20,\n\t0x1d104: 0x6cbc0420, 0x1d105: 0x6c33b620, 0x1d106: 0x6c65f420, 0x1d107: 0x6d241220,\n\t0x1d108: 0x6d3cb420, 0x1d109: 0x6c518420, 0x1d10a: 0x6c78e020, 0x1d10b: 0x6d2b1420,\n\t0x1d10c: 0x6c826a20, 0x1d10d: 0x6c787220, 0x1d10e: 0x6c1ef620, 0x1d10f: 0x6d137020,\n\t0x1d110: 0x6cc40c20, 0x1d111: 0x6c299a20, 0x1d112: 0x6d161e20, 0x1d113: 0x6c678e20,\n\t0x1d114: 0x6caf9e20, 0x1d115: 0x6cafa020, 0x1d116: 0x6d243020, 0x1d117: 0x6cb1f420,\n\t0x1d118: 0x6c36d020, 0x1d119: 0x6c00fe20, 0x1d11a: 0x6c783e20, 0x1d11b: 0x6c652220,\n\t0x1d11c: 0x6d243220, 0x1d11d: 0x6cc88e20, 0x1d11e: 0x6c9b7220, 0x1d11f: 0x6cada020,\n\t0x1d120: 0x6c227820, 0x1d121: 0x6c0f9020, 0x1d122: 0x6d107c20, 0x1d123: 0x6c96e420,\n\t0x1d124: 0x6c10e620, 0x1d125: 0x6cfbc820, 0x1d126: 0x6c7c1620, 0x1d127: 0x6c828020,\n\t0x1d128: 0x6c82fe20, 0x1d129: 0x6d375420, 0x1d12a: 0x6c870420, 0x1d12b: 0x6c872e20,\n\t0x1d12c: 0x6c38e420, 0x1d12d: 0x6cc41c20, 0x1d12e: 0x6cada620, 0x1d12f: 0x6d1c3020,\n\t0x1d130: 0x6c874a20, 0x1d131: 0x6c8fe620, 0x1d132: 0x6c8fe820, 0x1d133: 0x6ca19620,\n\t0x1d134: 0x6c0fc220, 0x1d135: 0x6cd6b420, 0x1d136: 0x6c49be20, 0x1d137: 0x6c800020,\n\t0x1d138: 0x6d298620, 0x1d139: 0x6d0d1820, 0x1d13a: 0x6cd2f420, 0x1d13b: 0x6cd2e620,\n\t0x1d13c: 0x6c84f420, 0x1d13d: 0x6cc61c20, 0x1d13e: 0x6ccf3620, 0x1d13f: 0x6d268020,\n\t// Block 0x745, offset 0x1d140\n\t0x1d140: 0x6cd88420, 0x1d141: 0x6cb56820, 0x1d142: 0x6cdde220, 0x1d143: 0x6c96b420,\n\t0x1d144: 0x6d016420, 0x1d145: 0x6d109420, 0x1d146: 0x6cfa8020, 0x1d147: 0x6cb58820,\n\t0x1d148: 0x6cb58a20, 0x1d149: 0x6d34f820, 0x1d14a: 0x6c07d820, 0x1d14b: 0x6c333a20,\n\t0x1d14c: 0x6d381820, 0x1d14d: 0x6cc5d620, 0x1d14e: 0x6d13cc20, 0x1d14f: 0x6cd25420,\n\t0x1d150: 0x6d203020, 0x1d151: 0x6d35a820, 0x1d152: 0x6ce57a20, 0x1d153: 0x6c3e1e20,\n\t0x1d154: 0x6c3fc420, 0x1d155: 0x6c9d2e20, 0x1d156: 0x6d411420, 0x1d157: 0x6d33ac20,\n\t0x1d158: 0x6cdb9620, 0x1d159: 0x6c9a8420, 0x1d15a: 0x6d428620, 0x1d15b: 0x6cc0ec20,\n\t0x1d15c: 0x6c567220, 0x1d15d: 0x6d3ac620, 0x1d15e: 0x6cd03a20, 0x1d15f: 0x6cdc3020,\n\t0x1d160: 0x6c223020, 0x1d161: 0x6c147a20, 0x1d162: 0x6c9c3e20, 0x1d163: 0x6c939020,\n\t0x1d164: 0x6d223e20, 0x1d165: 0x6cfdbc20, 0x1d166: 0x6cf3c620, 0x1d167: 0x6ce55620,\n\t0x1d168: 0x6cb1ae20, 0x1d169: 0x6d3ada20, 0x1d16a: 0x6c4aec20, 0x1d16b: 0x6cf9ae20,\n\t0x1d16c: 0x6d33c820, 0x1d16d: 0x6c61f420, 0x1d16e: 0x6c434620, 0x1d16f: 0x6d314420,\n\t0x1d170: 0x6c434820, 0x1d171: 0x6cd71e20, 0x1d172: 0x6c6d0620, 0x1d173: 0x6cd0a020,\n\t0x1d174: 0x6c40f620, 0x1d175: 0x6c7daa20, 0x1d176: 0x6c2c4820, 0x1d177: 0x6c29d820,\n\t0x1d178: 0x6c5dc620, 0x1d179: 0x6ce22820, 0x1d17a: 0x6cb5ee20, 0x1d17b: 0x6c481620,\n\t0x1d17c: 0x6c498a20, 0x1d17d: 0x6d41b420, 0x1d17e: 0x6c8d0820, 0x1d17f: 0x6c925a20,\n\t// Block 0x746, offset 0x1d180\n\t0x1d180: 0x6c0de820, 0x1d181: 0x6c6d1a20, 0x1d182: 0x6c29da20, 0x1d183: 0x6d346620,\n\t0x1d184: 0x6c925820, 0x1d185: 0x6c14f820, 0x1d186: 0x6c06a620, 0x1d187: 0x6d30d820,\n\t0x1d188: 0x6c5aca20, 0x1d189: 0x6d1fd620, 0x1d18a: 0x6cf8a220, 0x1d18b: 0x6d19ee20,\n\t0x1d18c: 0x6d3e5420, 0x1d18d: 0x6c5dd420, 0x1d18e: 0x6d316e20, 0x1d18f: 0x6c3e9c20,\n\t0x1d190: 0x6d262420, 0x1d191: 0x6cf3d020, 0x1d192: 0x6cfc1820, 0x1d193: 0x6d0fca20,\n\t0x1d194: 0x6d33f420, 0x1d195: 0x6d13fc20, 0x1d196: 0x6c9a1220, 0x1d197: 0x6cd7f820,\n\t0x1d198: 0x6c2c6c20, 0x1d199: 0x6c077a20, 0x1d19a: 0x6d3d8220, 0x1d19b: 0x6d318420,\n\t0x1d19c: 0x6d1e5620, 0x1d19d: 0x6c606c20, 0x1d19e: 0x6c435220, 0x1d19f: 0x6ce11a20,\n\t0x1d1a0: 0x6cd80420, 0x1d1a1: 0x6c96d020, 0x1d1a2: 0x6cde7820, 0x1d1a3: 0x6c40b620,\n\t0x1d1a4: 0x6d07bc20, 0x1d1a5: 0x6cb63c20, 0x1d1a6: 0x6d241420, 0x1d1a7: 0x6cf81220,\n\t0x1d1a8: 0x6c5f3a20, 0x1d1a9: 0x6cd8e020, 0x1d1aa: 0x6c152820, 0x1d1ab: 0x6c28b420,\n\t0x1d1ac: 0x6c4b8020, 0x1d1ad: 0x6cdc7820, 0x1d1ae: 0x6c853820, 0x1d1af: 0x6ca9d020,\n\t0x1d1b0: 0x6c9c8a20, 0x1d1b1: 0x6c29f820, 0x1d1b2: 0x6c86d620, 0x1d1b3: 0x6cc4ee20,\n\t0x1d1b4: 0x6d271620, 0x1d1b5: 0x6ce3b420, 0x1d1b6: 0x6d29c220, 0x1d1b7: 0x6c836420,\n\t0x1d1b8: 0x6cc74020, 0x1d1b9: 0x6d222e20, 0x1d1ba: 0x6d20dc20, 0x1d1bb: 0x6c83ae20,\n\t0x1d1bc: 0x6d019820, 0x1d1bd: 0x6cbd7620, 0x1d1be: 0x6c50b220, 0x1d1bf: 0x6ce83c20,\n\t// Block 0x747, offset 0x1d1c0\n\t0x1d1c0: 0x6d052c20, 0x1d1c1: 0x6cd7c620, 0x1d1c2: 0x6cc56c20, 0x1d1c3: 0x6ce83e20,\n\t0x1d1c4: 0x6d3ef020, 0x1d1c5: 0x6c13c820, 0x1d1c6: 0x6c41cc20, 0x1d1c7: 0x6d16cc20,\n\t0x1d1c8: 0x6cfa8220, 0x1d1c9: 0x6c0dc620, 0x1d1ca: 0x6ca6f620, 0x1d1cb: 0x6cbfa620,\n\t0x1d1cc: 0x6cbfa820, 0x1d1cd: 0x6d37e820, 0x1d1ce: 0x6c3bd420, 0x1d1cf: 0x6c502220,\n\t0x1d1d0: 0x6d279020, 0x1d1d1: 0x6c77e620, 0x1d1d2: 0x6c9e8c20, 0x1d1d3: 0x6d33ae20,\n\t0x1d1d4: 0x6c6d9820, 0x1d1d5: 0x6c08c820, 0x1d1d6: 0x6d33b020, 0x1d1d7: 0x6d22e620,\n\t0x1d1d8: 0x6c9d3420, 0x1d1d9: 0x6c7a8a20, 0x1d1da: 0x6c04f420, 0x1d1db: 0x6caf5620,\n\t0x1d1dc: 0x6ca5ce20, 0x1d1dd: 0x6c85da20, 0x1d1de: 0x6d1f1a20, 0x1d1df: 0x6d409a20,\n\t0x1d1e0: 0x6caf5820, 0x1d1e1: 0x6c0edc20, 0x1d1e2: 0x6c8cd020, 0x1d1e3: 0x6ca0fc20,\n\t0x1d1e4: 0x6c1a8020, 0x1d1e5: 0x6ca6fe20, 0x1d1e6: 0x6cbd6620, 0x1d1e7: 0x6d0f5620,\n\t0x1d1e8: 0x6d423220, 0x1d1e9: 0x6d35c420, 0x1d1ea: 0x6d33ca20, 0x1d1eb: 0x6cd52420,\n\t0x1d1ec: 0x6c721a20, 0x1d1ed: 0x6d3ef620, 0x1d1ee: 0x6c5d7220, 0x1d1ef: 0x6c5ea820,\n\t0x1d1f0: 0x6c196220, 0x1d1f1: 0x6ce74220, 0x1d1f2: 0x6d35f820, 0x1d1f3: 0x6c5d7620,\n\t0x1d1f4: 0x6c511220, 0x1d1f5: 0x6d19ce20, 0x1d1f6: 0x6d3e2620, 0x1d1f7: 0x6d35fa20,\n\t0x1d1f8: 0x6c6a0220, 0x1d1f9: 0x6cc59420, 0x1d1fa: 0x6c325020, 0x1d1fb: 0x6d14e820,\n\t0x1d1fc: 0x6d399e20, 0x1d1fd: 0x6c5bb820, 0x1d1fe: 0x6ca9ba20, 0x1d1ff: 0x6c3ff420,\n\t// Block 0x748, offset 0x1d200\n\t0x1d200: 0x6cf62020, 0x1d201: 0x6c77aa20, 0x1d202: 0x6c80ca20, 0x1d203: 0x6c3d7420,\n\t0x1d204: 0x6d0a9020, 0x1d205: 0x6cd72020, 0x1d206: 0x6c939420, 0x1d207: 0x6c7dae20,\n\t0x1d208: 0x6c41da20, 0x1d209: 0x6c6db820, 0x1d20a: 0x6ce32e20, 0x1d20b: 0x6c1a0c20,\n\t0x1d20c: 0x6ce8b420, 0x1d20d: 0x6cce7020, 0x1d20e: 0x6cd72220, 0x1d20f: 0x6d0bc020,\n\t0x1d210: 0x6c951a20, 0x1d211: 0x6c927020, 0x1d212: 0x6c481c20, 0x1d213: 0x6d424420,\n\t0x1d214: 0x6cc59a20, 0x1d215: 0x6d3ce620, 0x1d216: 0x6c057c20, 0x1d217: 0x6c044a20,\n\t0x1d218: 0x6c5eec20, 0x1d219: 0x6d33f620, 0x1d21a: 0x6d366020, 0x1d21b: 0x6c7db420,\n\t0x1d21c: 0x6c837e20, 0x1d21d: 0x6caeac20, 0x1d21e: 0x6c780a20, 0x1d21f: 0x6c0dea20,\n\t0x1d220: 0x6c1dbe20, 0x1d221: 0x6d41b620, 0x1d222: 0x6d237420, 0x1d223: 0x6cda5220,\n\t0x1d224: 0x6c94ae20, 0x1d225: 0x6cfd8020, 0x1d226: 0x6d140620, 0x1d227: 0x6cf8b620,\n\t0x1d228: 0x6c0b4620, 0x1d229: 0x6c624820, 0x1d22a: 0x6c3ec420, 0x1d22b: 0x6cb0b020,\n\t0x1d22c: 0x6cab0820, 0x1d22d: 0x6c6a2c20, 0x1d22e: 0x6d380420, 0x1d22f: 0x6d3fa820,\n\t0x1d230: 0x6d064e20, 0x1d231: 0x6c197e20, 0x1d232: 0x6c2a2220, 0x1d233: 0x6cf1e820,\n\t0x1d234: 0x6cfb8220, 0x1d235: 0x6d3e6820, 0x1d236: 0x6d23c820, 0x1d237: 0x6c626420,\n\t0x1d238: 0x6d072e20, 0x1d239: 0x6d31f420, 0x1d23a: 0x6d36b820, 0x1d23b: 0x6c2a2a20,\n\t0x1d23c: 0x6c645420, 0x1d23d: 0x6c5f1820, 0x1d23e: 0x6c431820, 0x1d23f: 0x6c431a20,\n\t// Block 0x749, offset 0x1d240\n\t0x1d240: 0x6c47c420, 0x1d241: 0x6cc6a020, 0x1d242: 0x6cdc6020, 0x1d243: 0x6cc73c20,\n\t0x1d244: 0x6c627a20, 0x1d245: 0x6c775220, 0x1d246: 0x6ca2ac20, 0x1d247: 0x6c11dc20,\n\t0x1d248: 0x6c9a2620, 0x1d249: 0x6d370c20, 0x1d24a: 0x6c624a20, 0x1d24b: 0x6c92d620,\n\t0x1d24c: 0x6cda5a20, 0x1d24d: 0x6c5f3c20, 0x1d24e: 0x6d1d0c20, 0x1d24f: 0x6cf1f020,\n\t0x1d250: 0x6cbfc420, 0x1d251: 0x6ccb6020, 0x1d252: 0x6c51e620, 0x1d253: 0x6d18aa20,\n\t0x1d254: 0x6c59fe20, 0x1d255: 0x6cbce620, 0x1d256: 0x6c615620, 0x1d257: 0x6cdc8820,\n\t0x1d258: 0x6cff2020, 0x1d259: 0x6cb45e20, 0x1d25a: 0x6c688420, 0x1d25b: 0x6d3d0c20,\n\t0x1d25c: 0x6d380c20, 0x1d25d: 0x6d41e620, 0x1d25e: 0x6c93ba20, 0x1d25f: 0x6cdc8c20,\n\t0x1d260: 0x6ca9d420, 0x1d261: 0x6ccb7820, 0x1d262: 0x6c5c6c20, 0x1d263: 0x6cc4de20,\n\t0x1d264: 0x6cab1e20, 0x1d265: 0x6d243420, 0x1d266: 0x6cb1f820, 0x1d267: 0x6c62bc20,\n\t0x1d268: 0x6ce9ce20, 0x1d269: 0x6cf1f420, 0x1d26a: 0x6c199e20, 0x1d26b: 0x6c5e1a20,\n\t0x1d26c: 0x6c7c1820, 0x1d26d: 0x6c93c020, 0x1d26e: 0x6c0c4c20, 0x1d26f: 0x6ccba820,\n\t0x1d270: 0x6cc4f420, 0x1d271: 0x6d3d1620, 0x1d272: 0x6c84d420, 0x1d273: 0x6c24aa20,\n\t0x1d274: 0x6d08f220, 0x1d275: 0x6cebc420, 0x1d276: 0x6c6f5620, 0x1d277: 0x6cbefa20,\n\t0x1d278: 0x6cf59020, 0x1d279: 0x6cbefe20, 0x1d27a: 0x6c796820, 0x1d27b: 0x6d207a20,\n\t0x1d27c: 0x6ccfc020, 0x1d27d: 0x6c6e1a20, 0x1d27e: 0x6d11f220, 0x1d27f: 0x6c1fe020,\n\t// Block 0x74a, offset 0x1d280\n\t0x1d280: 0x6d3cce20, 0x1d281: 0x6ce84420, 0x1d282: 0x6c814620, 0x1d283: 0x6cbca020,\n\t0x1d284: 0x6d2d2820, 0x1d285: 0x6d11a020, 0x1d286: 0x6c0b3020, 0x1d287: 0x6c05c420,\n\t0x1d288: 0x6d11a220, 0x1d289: 0x6c0ddc20, 0x1d28a: 0x6cebd420, 0x1d28b: 0x6d3a0820,\n\t0x1d28c: 0x6c699020, 0x1d28d: 0x6cbc3a20, 0x1d28e: 0x6c2e1020, 0x1d28f: 0x6cf36620,\n\t0x1d290: 0x6c4a5e20, 0x1d291: 0x6d10ea20, 0x1d292: 0x6d35fc20, 0x1d293: 0x6c205020,\n\t0x1d294: 0x6d120220, 0x1d295: 0x6ce5c220, 0x1d296: 0x6c69a020, 0x1d297: 0x6c205220,\n\t0x1d298: 0x6c6f1220, 0x1d299: 0x6cfeca20, 0x1d29a: 0x6c19f020, 0x1d29b: 0x6c79ec20,\n\t0x1d29c: 0x6c24ac20, 0x1d29d: 0x6cf29420, 0x1d29e: 0x6c289420, 0x1d29f: 0x6c7a4a20,\n\t0x1d2a0: 0x6c780c20, 0x1d2a1: 0x6d3d7020, 0x1d2a2: 0x6d05b420, 0x1d2a3: 0x6cda5420,\n\t0x1d2a4: 0x6c491c20, 0x1d2a5: 0x6c7c3e20, 0x1d2a6: 0x6c312420, 0x1d2a7: 0x6d3dfa20,\n\t0x1d2a8: 0x6d09a020, 0x1d2a9: 0x6cf29620, 0x1d2aa: 0x6cebea20, 0x1d2ab: 0x6d0bc620,\n\t0x1d2ac: 0x6d217820, 0x1d2ad: 0x6c726a20, 0x1d2ae: 0x6cbf5220, 0x1d2af: 0x6d113a20,\n\t0x1d2b0: 0x6d113c20, 0x1d2b1: 0x6ce5cc20, 0x1d2b2: 0x6c177820, 0x1d2b3: 0x6d228020,\n\t0x1d2b4: 0x6ce4bc20, 0x1d2b5: 0x6c2e3e20, 0x1d2b6: 0x6c729220, 0x1d2b7: 0x6c8aa820,\n\t0x1d2b8: 0x6cf6ce20, 0x1d2b9: 0x6cf52220, 0x1d2ba: 0x6c7c4420, 0x1d2bb: 0x6c206220,\n\t0x1d2bc: 0x6d2f7220, 0x1d2bd: 0x6c7b7c20, 0x1d2be: 0x6c7b7420, 0x1d2bf: 0x6c907420,\n\t// Block 0x74b, offset 0x1d2c0\n\t0x1d2c0: 0x6c199c20, 0x1d2c1: 0x6c256c20, 0x1d2c2: 0x6cb18420, 0x1d2c3: 0x6d2a9420,\n\t0x1d2c4: 0x6c24ba20, 0x1d2c5: 0x6cbc6820, 0x1d2c6: 0x6cbf7820, 0x1d2c7: 0x6c314c20,\n\t0x1d2c8: 0x6d2a9e20, 0x1d2c9: 0x6c904620, 0x1d2ca: 0x6cbd0a20, 0x1d2cb: 0x6c856c20,\n\t0x1d2cc: 0x6c1f0a20, 0x1d2cd: 0x6cd40c20, 0x1d2ce: 0x6c3fb820, 0x1d2cf: 0x6cba9220,\n\t0x1d2d0: 0x6c1f1c20, 0x1d2d1: 0x6c531820, 0x1d2d2: 0x6cb59820, 0x1d2d3: 0x6c508620,\n\t0x1d2d4: 0x6cd18420, 0x1d2d5: 0x6c3c0820, 0x1d2d6: 0x6cd5b220, 0x1d2d7: 0x6c9eb020,\n\t0x1d2d8: 0x6cc24020, 0x1d2d9: 0x6d2e5220, 0x1d2da: 0x6d3adc20, 0x1d2db: 0x6c8cd420,\n\t0x1d2dc: 0x6c8f8220, 0x1d2dd: 0x6c0e1620, 0x1d2de: 0x6c6e6a20, 0x1d2df: 0x6c6e7e20,\n\t0x1d2e0: 0x6d2eb620, 0x1d2e1: 0x6c046620, 0x1d2e2: 0x6cd8c220, 0x1d2e3: 0x6c75c020,\n\t0x1d2e4: 0x6c534e20, 0x1d2e5: 0x6ce74a20, 0x1d2e6: 0x6cd95a20, 0x1d2e7: 0x6c6e8820,\n\t0x1d2e8: 0x6c2e2e20, 0x1d2e9: 0x6d17f820, 0x1d2ea: 0x6cd5e820, 0x1d2eb: 0x6c6e7820,\n\t0x1d2ec: 0x6cc24c20, 0x1d2ed: 0x6c6b1020, 0x1d2ee: 0x6cb26020, 0x1d2ef: 0x6c329e20,\n\t0x1d2f0: 0x6ccea620, 0x1d2f1: 0x6d3bac20, 0x1d2f2: 0x6c136220, 0x1d2f3: 0x6c2ab020,\n\t0x1d2f4: 0x6c259e20, 0x1d2f5: 0x6cec5a20, 0x1d2f6: 0x6c6ec020, 0x1d2f7: 0x6c76fa20,\n\t0x1d2f8: 0x6c6ec420, 0x1d2f9: 0x6d39f020, 0x1d2fa: 0x6d39f620, 0x1d2fb: 0x6c821a20,\n\t0x1d2fc: 0x6cae9220, 0x1d2fd: 0x6d20e020, 0x1d2fe: 0x6c1b0e20, 0x1d2ff: 0x6c418820,\n\t// Block 0x74c, offset 0x1d300\n\t0x1d300: 0x6c984220, 0x1d301: 0x6d39fe20, 0x1d302: 0x6cedb820, 0x1d303: 0x6c321220,\n\t0x1d304: 0x6c5eac20, 0x1d305: 0x6cff7420, 0x1d306: 0x6c03f020, 0x1d307: 0x6cdb9820,\n\t0x1d308: 0x6c5ffc20, 0x1d309: 0x6cbdce20, 0x1d30a: 0x6d2faa20, 0x1d30b: 0x6cdce820,\n\t0x1d30c: 0x6d0b2020, 0x1d30d: 0x6d3c7e20, 0x1d30e: 0x6d255220, 0x1d30f: 0x6c568420,\n\t0x1d310: 0x6c4f6820, 0x1d311: 0x6cffe220, 0x1d312: 0x6c132e20, 0x1d313: 0x6c096c20,\n\t0x1d314: 0x6c08d020, 0x1d315: 0x6c658020, 0x1d316: 0x6d15de20, 0x1d317: 0x6c2ffc20,\n\t0x1d318: 0x6ccce220, 0x1d319: 0x6cd0fe20, 0x1d31a: 0x6c264820, 0x1d31b: 0x6c2b6c20,\n\t0x1d31c: 0x6d3a0e20, 0x1d31d: 0x6ca33420, 0x1d31e: 0x6c1aac20, 0x1d31f: 0x6c470620,\n\t0x1d320: 0x6c85f620, 0x1d321: 0x6cbcba20, 0x1d322: 0x6c9faa20, 0x1d323: 0x6c05ae20,\n\t0x1d324: 0x6ce58220, 0x1d325: 0x6cd8b620, 0x1d326: 0x6c3e5820, 0x1d327: 0x6c12de20,\n\t0x1d328: 0x6c07b420, 0x1d329: 0x6cae1a20, 0x1d32a: 0x6c26a020, 0x1d32b: 0x6d3f0620,\n\t0x1d32c: 0x6c2c4a20, 0x1d32d: 0x6c8cee20, 0x1d32e: 0x6d2ac420, 0x1d32f: 0x6caa4220,\n\t0x1d330: 0x6c3e5a20, 0x1d331: 0x6c467e20, 0x1d332: 0x6c389620, 0x1d333: 0x6c634e20,\n\t0x1d334: 0x6c41d820, 0x1d335: 0x6c394820, 0x1d336: 0x6cd2cc20, 0x1d337: 0x6c993820,\n\t0x1d338: 0x6cb35620, 0x1d339: 0x6ce45020, 0x1d33a: 0x6c648a20, 0x1d33b: 0x6cbf1820,\n\t0x1d33c: 0x6c8f8a20, 0x1d33d: 0x6c9fe420, 0x1d33e: 0x6c0af020, 0x1d33f: 0x6c960420,\n\t// Block 0x74d, offset 0x1d340\n\t0x1d340: 0x6c4b4c20, 0x1d341: 0x6cc10c20, 0x1d342: 0x6c1b2620, 0x1d343: 0x6d19e220,\n\t0x1d344: 0x6d120820, 0x1d345: 0x6cfc0e20, 0x1d346: 0x6c08e220, 0x1d347: 0x6cbf1a20,\n\t0x1d348: 0x6c7dfa20, 0x1d349: 0x6c2acc20, 0x1d34a: 0x6cff8c20, 0x1d34b: 0x6c6c4620,\n\t0x1d34c: 0x6cc2f420, 0x1d34d: 0x6cdcec20, 0x1d34e: 0x6cc7ae20, 0x1d34f: 0x6c381420,\n\t0x1d350: 0x6c7b9e20, 0x1d351: 0x6d3af620, 0x1d352: 0x6ce7b820, 0x1d353: 0x6c5ed820,\n\t0x1d354: 0x6c26a820, 0x1d355: 0x6c4f7a20, 0x1d356: 0x6c12ee20, 0x1d357: 0x6d383020,\n\t0x1d358: 0x6c79ee20, 0x1d359: 0x6c7f0e20, 0x1d35a: 0x6c09a820, 0x1d35b: 0x6ccc8a20,\n\t0x1d35c: 0x6c28fe20, 0x1d35d: 0x6d32c820, 0x1d35e: 0x6c12fa20, 0x1d35f: 0x6c3d7e20,\n\t0x1d360: 0x6d27b420, 0x1d361: 0x6ce8c620, 0x1d362: 0x6cabd820, 0x1d363: 0x6c83ec20,\n\t0x1d364: 0x6c80d020, 0x1d365: 0x6c71ba20, 0x1d366: 0x6c495820, 0x1d367: 0x6c65b020,\n\t0x1d368: 0x6c4e1e20, 0x1d369: 0x6ce75620, 0x1d36a: 0x6cf9d620, 0x1d36b: 0x6d366220,\n\t0x1d36c: 0x6c1a0e20, 0x1d36d: 0x6cdb9a20, 0x1d36e: 0x6cd39e20, 0x1d36f: 0x6d3b0c20,\n\t0x1d370: 0x6d424620, 0x1d371: 0x6cffb020, 0x1d372: 0x6cce7620, 0x1d373: 0x6ce67620,\n\t0x1d374: 0x6c12fc20, 0x1d375: 0x6d0c9e20, 0x1d376: 0x6c435020, 0x1d377: 0x6c7b2c20,\n\t0x1d378: 0x6c41a020, 0x1d379: 0x6c1dc020, 0x1d37a: 0x6c7c2e20, 0x1d37b: 0x6c42aa20,\n\t0x1d37c: 0x6d27b620, 0x1d37d: 0x6cab2a20, 0x1d37e: 0x6cb8f420, 0x1d37f: 0x6cffb220,\n\t// Block 0x74e, offset 0x1d380\n\t0x1d380: 0x6c65b220, 0x1d381: 0x6cb3de20, 0x1d382: 0x6c7f1c20, 0x1d383: 0x6d405c20,\n\t0x1d384: 0x6c08ec20, 0x1d385: 0x6c0a0420, 0x1d386: 0x6c0a0620, 0x1d387: 0x6c448c20,\n\t0x1d388: 0x6cdf3020, 0x1d389: 0x6c48e020, 0x1d38a: 0x6d209420, 0x1d38b: 0x6c64cc20,\n\t0x1d38c: 0x6c2a2420, 0x1d38d: 0x6c472420, 0x1d38e: 0x6c1b4420, 0x1d38f: 0x6d32e220,\n\t0x1d390: 0x6cbed220, 0x1d391: 0x6ccc6820, 0x1d392: 0x6d38ec20, 0x1d393: 0x6c928e20,\n\t0x1d394: 0x6c0f3020, 0x1d395: 0x6c5f0a20, 0x1d396: 0x6c8bc420, 0x1d397: 0x6cdb9e20,\n\t0x1d398: 0x6c75d420, 0x1d399: 0x6c3ec820, 0x1d39a: 0x6d2c4220, 0x1d39b: 0x6c472620,\n\t0x1d39c: 0x6c798620, 0x1d39d: 0x6cb9b220, 0x1d39e: 0x6cb90a20, 0x1d39f: 0x6c75d620,\n\t0x1d3a0: 0x6c20dc20, 0x1d3a1: 0x6c495a20, 0x1d3a2: 0x6d250420, 0x1d3a3: 0x6c130820,\n\t0x1d3a4: 0x6d40cc20, 0x1d3a5: 0x6c0fe620, 0x1d3a6: 0x6d2ae420, 0x1d3a7: 0x6cbcd620,\n\t0x1d3a8: 0x6cebb020, 0x1d3a9: 0x6c954e20, 0x1d3aa: 0x6c27ec20, 0x1d3ab: 0x6cfef420,\n\t0x1d3ac: 0x6cc92620, 0x1d3ad: 0x6c66ba20, 0x1d3ae: 0x6d07c020, 0x1d3af: 0x6c0b0020,\n\t0x1d3b0: 0x6cdcfc20, 0x1d3b1: 0x6cfd8620, 0x1d3b2: 0x6cfc2420, 0x1d3b3: 0x6cb2c620,\n\t0x1d3b4: 0x6d318c20, 0x1d3b5: 0x6d039420, 0x1d3b6: 0x6c559420, 0x1d3b7: 0x6d154a20,\n\t0x1d3b8: 0x6d3b1420, 0x1d3b9: 0x6d265820, 0x1d3ba: 0x6c211020, 0x1d3bb: 0x6c93f620,\n\t0x1d3bc: 0x6cf37e20, 0x1d3bd: 0x6c303820, 0x1d3be: 0x6cd79a20, 0x1d3bf: 0x6c609020,\n\t// Block 0x74f, offset 0x1d3c0\n\t0x1d3c0: 0x6c6af220, 0x1d3c1: 0x6c59ee20, 0x1d3c2: 0x6d039620, 0x1d3c3: 0x6c9aa820,\n\t0x1d3c4: 0x6c396a20, 0x1d3c5: 0x6c200a20, 0x1d3c6: 0x6d3bde20, 0x1d3c7: 0x6cb0fc20,\n\t0x1d3c8: 0x6c3c6220, 0x1d3c9: 0x6d3a2820, 0x1d3ca: 0x6c59f020, 0x1d3cb: 0x6cbce020,\n\t0x1d3cc: 0x6c542420, 0x1d3cd: 0x6cbfbe20, 0x1d3ce: 0x6c9e9a20, 0x1d3cf: 0x6cba7620,\n\t0x1d3d0: 0x6c483c20, 0x1d3d1: 0x6c7d1020, 0x1d3d2: 0x6cd41c20, 0x1d3d3: 0x6c90f420,\n\t0x1d3d4: 0x6d27c820, 0x1d3d5: 0x6c517020, 0x1d3d6: 0x6ce13420, 0x1d3d7: 0x6d26ee20,\n\t0x1d3d8: 0x6c1d7e20, 0x1d3d9: 0x6c42de20, 0x1d3da: 0x6c3a7020, 0x1d3db: 0x6cc92e20,\n\t0x1d3dc: 0x6d32f420, 0x1d3dd: 0x6c465e20, 0x1d3de: 0x6ca87220, 0x1d3df: 0x6cba7e20,\n\t0x1d3e0: 0x6cffbc20, 0x1d3e1: 0x6c24b420, 0x1d3e2: 0x6c903820, 0x1d3e3: 0x6caec620,\n\t0x1d3e4: 0x6c322e20, 0x1d3e5: 0x6c867e20, 0x1d3e6: 0x6c0a5420, 0x1d3e7: 0x6d3d9e20,\n\t0x1d3e8: 0x6c1ea820, 0x1d3e9: 0x6ccc9020, 0x1d3ea: 0x6c1b5220, 0x1d3eb: 0x6d3b2c20,\n\t0x1d3ec: 0x6cbada20, 0x1d3ed: 0x6c8fae20, 0x1d3ee: 0x6c7fb620, 0x1d3ef: 0x6c64fa20,\n\t0x1d3f0: 0x6c10ba20, 0x1d3f1: 0x6c844220, 0x1d3f2: 0x6c5c5820, 0x1d3f3: 0x6c0a5620,\n\t0x1d3f4: 0x6c2b9020, 0x1d3f5: 0x6c236420, 0x1d3f6: 0x6d0c3620, 0x1d3f7: 0x6caf2020,\n\t0x1d3f8: 0x6c11e020, 0x1d3f9: 0x6d3be620, 0x1d3fa: 0x6cb02220, 0x1d3fb: 0x6cb19e20,\n\t0x1d3fc: 0x6c30c820, 0x1d3fd: 0x6d243620, 0x1d3fe: 0x6c9ef820, 0x1d3ff: 0x6ce96020,\n\t// Block 0x750, offset 0x1d400\n\t0x1d400: 0x6d2b1020, 0x1d401: 0x6ccc9220, 0x1d402: 0x6c4b8420, 0x1d403: 0x6d156e20,\n\t0x1d404: 0x6c56cc20, 0x1d405: 0x6c15e620, 0x1d406: 0x6c7a0820, 0x1d407: 0x6c246820,\n\t0x1d408: 0x6cb2d620, 0x1d409: 0x6d2a9020, 0x1d40a: 0x6c5f5620, 0x1d40b: 0x6c4b1c20,\n\t0x1d40c: 0x6cdb3820, 0x1d40d: 0x6c90fc20, 0x1d40e: 0x6c131a20, 0x1d40f: 0x6c92e820,\n\t0x1d410: 0x6ca73e20, 0x1d411: 0x6cdd3820, 0x1d412: 0x6c24b620, 0x1d413: 0x6c2e5420,\n\t0x1d414: 0x6cdd4020, 0x1d415: 0x6c822a20, 0x1d416: 0x6c32dc20, 0x1d417: 0x6c89d020,\n\t0x1d418: 0x6cff2220, 0x1d419: 0x6c0f9420, 0x1d41a: 0x6c9da020, 0x1d41b: 0x6ccc9420,\n\t0x1d41c: 0x6c299c20, 0x1d41d: 0x6c8a3620, 0x1d41e: 0x6c280c20, 0x1d41f: 0x6c2d8e20,\n\t0x1d420: 0x6c3f9020, 0x1d421: 0x6c65f820, 0x1d422: 0x6c9fd020, 0x1d423: 0x6c7d2820,\n\t0x1d424: 0x6c27a020, 0x1d425: 0x6c689820, 0x1d426: 0x6c2ab620, 0x1d427: 0x6c5a0c20,\n\t0x1d428: 0x6cdd0020, 0x1d429: 0x6c818220, 0x1d42a: 0x6d295220, 0x1d42b: 0x6cff3c20,\n\t0x1d42c: 0x6c931e20, 0x1d42d: 0x6cd3f620, 0x1d42e: 0x6d295420, 0x1d42f: 0x6cb81c20,\n\t0x1d430: 0x6cac0a20, 0x1d431: 0x6cb81e20, 0x1d432: 0x6cac0c20, 0x1d433: 0x6c41f620,\n\t0x1d434: 0x6c72b220, 0x1d435: 0x6c328a20, 0x1d436: 0x6c930620, 0x1d437: 0x6d0cf220,\n\t0x1d438: 0x6c0fea20, 0x1d439: 0x6c291820, 0x1d43a: 0x6cc9ec20, 0x1d43b: 0x6d3b5e20,\n\t0x1d43c: 0x6c8fca20, 0x1d43d: 0x6cb94020, 0x1d43e: 0x6c888420, 0x1d43f: 0x6c10cc20,\n\t// Block 0x751, offset 0x1d440\n\t0x1d440: 0x6d396220, 0x1d441: 0x6c7f6e20, 0x1d442: 0x6cd42020, 0x1d443: 0x6c7fec20,\n\t0x1d444: 0x6c7d3420, 0x1d445: 0x6d21d620, 0x1d446: 0x6d270420, 0x1d447: 0x6c500020,\n\t0x1d448: 0x6d31a220, 0x1d449: 0x6cdf5020, 0x1d44a: 0x6ce43e20, 0x1d44b: 0x6ca8a420,\n\t0x1d44c: 0x6c1e0420, 0x1d44d: 0x6c60ec20, 0x1d44e: 0x6d199820, 0x1d44f: 0x6cb82020,\n\t0x1d450: 0x6ce2ca20, 0x1d451: 0x6d3c0020, 0x1d452: 0x6d396820, 0x1d453: 0x6c387020,\n\t0x1d454: 0x6cda3c20, 0x1d455: 0x6d396620, 0x1d456: 0x6cba9820, 0x1d457: 0x6d3de020,\n\t0x1d458: 0x6ce2d420, 0x1d459: 0x6c933a20, 0x1d45a: 0x6c919420, 0x1d45b: 0x6c662a20,\n\t0x1d45c: 0x6cebbe20, 0x1d45d: 0x6d1cd420, 0x1d45e: 0x6d248620, 0x1d45f: 0x6c7f7e20,\n\t0x1d460: 0x6c8ff420, 0x1d461: 0x6cbd1620, 0x1d462: 0x6c88a220, 0x1d463: 0x6c800a20,\n\t0x1d464: 0x6cb95c20, 0x1d465: 0x6d272020, 0x1d466: 0x6d37e420, 0x1d467: 0x6cc20e20,\n\t0x1d468: 0x6c88a420, 0x1d469: 0x6c0b2820, 0x1d46a: 0x6c32ea20, 0x1d46b: 0x6d415a20,\n\t0x1d46c: 0x6c84d620, 0x1d46d: 0x6cd86220, 0x1d46e: 0x6c958e20, 0x1d46f: 0x6d1cde20,\n\t0x1d470: 0x6d273820, 0x1d471: 0x6d3df220, 0x1d472: 0x6d24ae20, 0x1d473: 0x6c9cd620,\n\t0x1d474: 0x6c2b5820, 0x1d475: 0x6c388a20, 0x1d476: 0x6ccfb020, 0x1d477: 0x6d302820,\n\t0x1d478: 0x6ccfc220, 0x1d479: 0x6caa7220, 0x1d47a: 0x6c50e220, 0x1d47b: 0x6c832420,\n\t0x1d47c: 0x6cfa8e20, 0x1d47d: 0x6d3efa20, 0x1d47e: 0x6ca5c620, 0x1d47f: 0x6c25b420,\n\t// Block 0x752, offset 0x1d480\n\t0x1d480: 0x6d2f4620, 0x1d481: 0x6cb8c020, 0x1d482: 0x6d2d5a20, 0x1d483: 0x6c08d220,\n\t0x1d484: 0x6c04c620, 0x1d485: 0x6cf4d820, 0x1d486: 0x6ccbde20, 0x1d487: 0x6c772a20,\n\t0x1d488: 0x6cc77620, 0x1d489: 0x6c3bba20, 0x1d48a: 0x6c096e20, 0x1d48b: 0x6c252620,\n\t0x1d48c: 0x6d1b9a20, 0x1d48d: 0x6d304020, 0x1d48e: 0x6c1b9020, 0x1d48f: 0x6cdf8620,\n\t0x1d490: 0x6c56fa20, 0x1d491: 0x6c033c20, 0x1d492: 0x6c85f820, 0x1d493: 0x6c419620,\n\t0x1d494: 0x6c722e20, 0x1d495: 0x6cb38420, 0x1d496: 0x6ca10c20, 0x1d497: 0x6c241020,\n\t0x1d498: 0x6d2d6e20, 0x1d499: 0x6d392220, 0x1d49a: 0x6c83c620, 0x1d49b: 0x6cdaac20,\n\t0x1d49c: 0x6ce5d620, 0x1d49d: 0x6c85fa20, 0x1d49e: 0x6cf62220, 0x1d49f: 0x6cdab620,\n\t0x1d4a0: 0x6c535020, 0x1d4a1: 0x6ce74c20, 0x1d4a2: 0x6d3e4420, 0x1d4a3: 0x6c12e020,\n\t0x1d4a4: 0x6d26bc20, 0x1d4a5: 0x6d388620, 0x1d4a6: 0x6c8bb820, 0x1d4a7: 0x6d3c1a20,\n\t0x1d4a8: 0x6c042220, 0x1d4a9: 0x6c81f620, 0x1d4aa: 0x6c3bda20, 0x1d4ab: 0x6c375820,\n\t0x1d4ac: 0x6cc10e20, 0x1d4ad: 0x6c521620, 0x1d4ae: 0x6c895a20, 0x1d4af: 0x6cfcd820,\n\t0x1d4b0: 0x6c3ea020, 0x1d4b1: 0x6c895c20, 0x1d4b2: 0x6c11fa20, 0x1d4b3: 0x6c6dc220,\n\t0x1d4b4: 0x6c851c20, 0x1d4b5: 0x6d26c620, 0x1d4b6: 0x6c929020, 0x1d4b7: 0x6c714020,\n\t0x1d4b8: 0x6cb61e20, 0x1d4b9: 0x6c254e20, 0x1d4ba: 0x6c045220, 0x1d4bb: 0x6d2ece20,\n\t0x1d4bc: 0x6c8bc620, 0x1d4bd: 0x6d402620, 0x1d4be: 0x6c6dcc20, 0x1d4bf: 0x6c4cc420,\n\t// Block 0x753, offset 0x1d4c0\n\t0x1d4c0: 0x6c57e020, 0x1d4c1: 0x6cca2220, 0x1d4c2: 0x6cca2620, 0x1d4c3: 0x6ce12a20,\n\t0x1d4c4: 0x6c0b4c20, 0x1d4c5: 0x6cc75c20, 0x1d4c6: 0x6c9e5c20, 0x1d4c7: 0x6c542620,\n\t0x1d4c8: 0x6d065220, 0x1d4c9: 0x6d402a20, 0x1d4ca: 0x6c56fe20, 0x1d4cb: 0x6c66be20,\n\t0x1d4cc: 0x6d294e20, 0x1d4cd: 0x6c225e20, 0x1d4ce: 0x6c843020, 0x1d4cf: 0x6d021a20,\n\t0x1d4d0: 0x6c3da020, 0x1d4d1: 0x6cab1220, 0x1d4d2: 0x6c076020, 0x1d4d3: 0x6c47d020,\n\t0x1d4d4: 0x6d052820, 0x1d4d5: 0x6c42e020, 0x1d4d6: 0x6ce13620, 0x1d4d7: 0x6cc0b220,\n\t0x1d4d8: 0x6c645620, 0x1d4d9: 0x6c126a20, 0x1d4da: 0x6d3c2420, 0x1d4db: 0x6ce14020,\n\t0x1d4dc: 0x6c9c7c20, 0x1d4dd: 0x6cca2c20, 0x1d4de: 0x6c3bf420, 0x1d4df: 0x6d2a2620,\n\t0x1d4e0: 0x6c775620, 0x1d4e1: 0x6c67fe20, 0x1d4e2: 0x6ca07e20, 0x1d4e3: 0x6cca3020,\n\t0x1d4e4: 0x6cca3220, 0x1d4e5: 0x6cab1c20, 0x1d4e6: 0x6cf70820, 0x1d4e7: 0x6c897420,\n\t0x1d4e8: 0x6c680820, 0x1d4e9: 0x6c7b4620, 0x1d4ea: 0x6c0ffa20, 0x1d4eb: 0x6c58b620,\n\t0x1d4ec: 0x6cd63620, 0x1d4ed: 0x6d403e20, 0x1d4ee: 0x6cfd4020, 0x1d4ef: 0x6cab2020,\n\t0x1d4f0: 0x6ce97020, 0x1d4f1: 0x6ca8b820, 0x1d4f2: 0x6c873020, 0x1d4f3: 0x6d42b220,\n\t0x1d4f4: 0x6c2bb820, 0x1d4f5: 0x6ca8ba20, 0x1d4f6: 0x6ce5e420, 0x1d4f7: 0x6c809820,\n\t0x1d4f8: 0x6c9d1a20, 0x1d4f9: 0x6cd7c020, 0x1d4fa: 0x6c6f5820, 0x1d4fb: 0x6cf83e20,\n\t0x1d4fc: 0x6c456620, 0x1d4fd: 0x6d331c20, 0x1d4fe: 0x6c6f5e20, 0x1d4ff: 0x6d201c20,\n\t// Block 0x754, offset 0x1d500\n\t0x1d500: 0x6c61b020, 0x1d501: 0x6c143a20, 0x1d502: 0x6d391020, 0x1d503: 0x6d09f020,\n\t0x1d504: 0x6d264a20, 0x1d505: 0x6c531c20, 0x1d506: 0x6d207e20, 0x1d507: 0x6c50e420,\n\t0x1d508: 0x6cecce20, 0x1d509: 0x6cc5d820, 0x1d50a: 0x6cf1d220, 0x1d50b: 0x6cf18c20,\n\t0x1d50c: 0x6cc03620, 0x1d50d: 0x6ca32820, 0x1d50e: 0x6d3e1c20, 0x1d50f: 0x6ce80c20,\n\t0x1d510: 0x6ca99020, 0x1d511: 0x6c3d1420, 0x1d512: 0x6c61d020, 0x1d513: 0x6cd4c020,\n\t0x1d514: 0x6c213c20, 0x1d515: 0x6caf5a20, 0x1d516: 0x6d323220, 0x1d517: 0x6ccbe020,\n\t0x1d518: 0x6c532e20, 0x1d519: 0x6d351220, 0x1d51a: 0x6c5ffe20, 0x1d51b: 0x6c3b2220,\n\t0x1d51c: 0x6d279e20, 0x1d51d: 0x6cc5de20, 0x1d51e: 0x6c283220, 0x1d51f: 0x6c6c4020,\n\t0x1d520: 0x6cda9420, 0x1d521: 0x6c39d220, 0x1d522: 0x6cdd5a20, 0x1d523: 0x6c252820,\n\t0x1d524: 0x6c6fb820, 0x1d525: 0x6d288c20, 0x1d526: 0x6c03f220, 0x1d527: 0x6c6c8c20,\n\t0x1d528: 0x6c3d6a20, 0x1d529: 0x6d35fe20, 0x1d52a: 0x6c229820, 0x1d52b: 0x6d3f1620,\n\t0x1d52c: 0x6c1da620, 0x1d52d: 0x6c533e20, 0x1d52e: 0x6d288e20, 0x1d52f: 0x6c833420,\n\t0x1d530: 0x6cf87a20, 0x1d531: 0x6c3e5c20, 0x1d532: 0x6d019a20, 0x1d533: 0x6ccfe020,\n\t0x1d534: 0x6c0e6c20, 0x1d535: 0x6d3ae820, 0x1d536: 0x6cc0fc20, 0x1d537: 0x6c8cf020,\n\t0x1d538: 0x6d3aea20, 0x1d539: 0x6cced620, 0x1d53a: 0x6c421e20, 0x1d53b: 0x6d101420,\n\t0x1d53c: 0x6c3e5e20, 0x1d53d: 0x6ceb1820, 0x1d53e: 0x6d31d420, 0x1d53f: 0x6c275e20,\n\t// Block 0x755, offset 0x1d540\n\t0x1d540: 0x6c1f3420, 0x1d541: 0x6cd1b420, 0x1d542: 0x6d37b620, 0x1d543: 0x6cfb4e20,\n\t0x1d544: 0x6d411a20, 0x1d545: 0x6c6ede20, 0x1d546: 0x6c04f820, 0x1d547: 0x6cc18c20,\n\t0x1d548: 0x6ca10e20, 0x1d549: 0x6cd5c620, 0x1d54a: 0x6d41ac20, 0x1d54b: 0x6c7c2c20,\n\t0x1d54c: 0x6c6db020, 0x1d54d: 0x6cc5f220, 0x1d54e: 0x6c4f7c20, 0x1d54f: 0x6d01b220,\n\t0x1d550: 0x6c6ad620, 0x1d551: 0x6d39a820, 0x1d552: 0x6c1db420, 0x1d553: 0x6c48b620,\n\t0x1d554: 0x6c042420, 0x1d555: 0x6c745420, 0x1d556: 0x6c7bf620, 0x1d557: 0x6c556220,\n\t0x1d558: 0x6c22c620, 0x1d559: 0x6c587820, 0x1d55a: 0x6c44d220, 0x1d55b: 0x6ce1c820,\n\t0x1d55c: 0x6c6ad820, 0x1d55d: 0x6c7a9a20, 0x1d55e: 0x6c68fc20, 0x1d55f: 0x6cc2f620,\n\t0x1d560: 0x6c411620, 0x1d561: 0x6c960620, 0x1d562: 0x6d089620, 0x1d563: 0x6c07ee20,\n\t0x1d564: 0x6cfcc620, 0x1d565: 0x6c3e8620, 0x1d566: 0x6c449420, 0x1d567: 0x6c307a20,\n\t0x1d568: 0x6cc67a20, 0x1d569: 0x6ce5d820, 0x1d56a: 0x6d19e420, 0x1d56b: 0x6c82c220,\n\t0x1d56c: 0x6d01b420, 0x1d56d: 0x6c736820, 0x1d56e: 0x6d06e020, 0x1d56f: 0x6c40f820,\n\t0x1d570: 0x6c2eae20, 0x1d571: 0x6ce7ba20, 0x1d572: 0x6cd7ea20, 0x1d573: 0x6c67e820,\n\t0x1d574: 0x6cfdc420, 0x1d575: 0x6c5bc820, 0x1d576: 0x6c745620, 0x1d577: 0x6d346820,\n\t0x1d578: 0x6c65b420, 0x1d579: 0x6c737620, 0x1d57a: 0x6c1ac020, 0x1d57b: 0x6c9e2c20,\n\t0x1d57c: 0x6d31e820, 0x1d57d: 0x6c939e20, 0x1d57e: 0x6c1a1020, 0x1d57f: 0x6cc07a20,\n\t// Block 0x756, offset 0x1d580\n\t0x1d580: 0x6cd4ec20, 0x1d581: 0x6c055020, 0x1d582: 0x6ce7bc20, 0x1d583: 0x6cfedc20,\n\t0x1d584: 0x6c588020, 0x1d585: 0x6cbd3620, 0x1d586: 0x6c451220, 0x1d587: 0x6d052620,\n\t0x1d588: 0x6ce34c20, 0x1d589: 0x6ce82e20, 0x1d58a: 0x6d00c020, 0x1d58b: 0x6c536420,\n\t0x1d58c: 0x6cf8a420, 0x1d58d: 0x6c3ea220, 0x1d58e: 0x6ce64620, 0x1d58f: 0x6cdbcc20,\n\t0x1d590: 0x6c335220, 0x1d591: 0x6c7db620, 0x1d592: 0x6c3d8020, 0x1d593: 0x6c6dc420,\n\t0x1d594: 0x6c56a620, 0x1d595: 0x6d33f820, 0x1d596: 0x6d0ca020, 0x1d597: 0x6c6f1c20,\n\t0x1d598: 0x6c3cb020, 0x1d599: 0x6c622020, 0x1d59a: 0x6d077420, 0x1d59b: 0x6cc60c20,\n\t0x1d59c: 0x6d3faa20, 0x1d59d: 0x6c187820, 0x1d59e: 0x6c34a420, 0x1d59f: 0x6c865020,\n\t0x1d5a0: 0x6c93ec20, 0x1d5a1: 0x6c896020, 0x1d5a2: 0x6c1dcc20, 0x1d5a3: 0x6cc36420,\n\t0x1d5a4: 0x6ccede20, 0x1d5a5: 0x6cb62020, 0x1d5a6: 0x6cb62220, 0x1d5a7: 0x6d3ce020,\n\t0x1d5a8: 0x6cb62420, 0x1d5a9: 0x6ced3420, 0x1d5aa: 0x6cba6a20, 0x1d5ab: 0x6cfcec20,\n\t0x1d5ac: 0x6cd47420, 0x1d5ad: 0x6cef2220, 0x1d5ae: 0x6cb70e20, 0x1d5af: 0x6ce23020,\n\t0x1d5b0: 0x6ced3620, 0x1d5b1: 0x6c428c20, 0x1d5b2: 0x6cee3020, 0x1d5b3: 0x6c080420,\n\t0x1d5b4: 0x6d3cc620, 0x1d5b5: 0x6c113a20, 0x1d5b6: 0x6c4cc620, 0x1d5b7: 0x6c255020,\n\t0x1d5b8: 0x6c950420, 0x1d5b9: 0x6c8f1020, 0x1d5ba: 0x6cb71020, 0x1d5bb: 0x6d2e6e20,\n\t0x1d5bc: 0x6c0a0820, 0x1d5bd: 0x6c21cc20, 0x1d5be: 0x6c8d3c20, 0x1d5bf: 0x6c9dca20,\n\t// Block 0x757, offset 0x1d5c0\n\t0x1d5c0: 0x6cb51420, 0x1d5c1: 0x6cbcd820, 0x1d5c2: 0x6ce4b420, 0x1d5c3: 0x6d3fac20,\n\t0x1d5c4: 0x6c4bd820, 0x1d5c5: 0x6d405e20, 0x1d5c6: 0x6cf67c20, 0x1d5c7: 0x6d3e6a20,\n\t0x1d5c8: 0x6d043220, 0x1d5c9: 0x6c899a20, 0x1d5ca: 0x6c6ca420, 0x1d5cb: 0x6c3a1220,\n\t0x1d5cc: 0x6cc8a020, 0x1d5cd: 0x6c9f7220, 0x1d5ce: 0x6d239e20, 0x1d5cf: 0x6d400420,\n\t0x1d5d0: 0x6c38ae20, 0x1d5d1: 0x6c93ee20, 0x1d5d2: 0x6d071620, 0x1d5d3: 0x6d1bd820,\n\t0x1d5d4: 0x6cce5620, 0x1d5d5: 0x6cb81820, 0x1d5d6: 0x6d073020, 0x1d5d7: 0x6cfd8820,\n\t0x1d5d8: 0x6c64dc20, 0x1d5d9: 0x6c78ce20, 0x1d5da: 0x6cfcfe20, 0x1d5db: 0x6cc87620,\n\t0x1d5dc: 0x6c9dcc20, 0x1d5dd: 0x6c5f1c20, 0x1d5de: 0x6c32d820, 0x1d5df: 0x6c1d1e20,\n\t0x1d5e0: 0x6c2c9420, 0x1d5e1: 0x6c9f7820, 0x1d5e2: 0x6c9e7c20, 0x1d5e3: 0x6d259c20,\n\t0x1d5e4: 0x6d01fe20, 0x1d5e5: 0x6c060e20, 0x1d5e6: 0x6cd82020, 0x1d5e7: 0x6cbfc020,\n\t0x1d5e8: 0x6c0b0220, 0x1d5e9: 0x6c58dc20, 0x1d5ea: 0x6c44d820, 0x1d5eb: 0x6c234620,\n\t0x1d5ec: 0x6c9e3820, 0x1d5ed: 0x6cf0c420, 0x1d5ee: 0x6c403620, 0x1d5ef: 0x6cf00620,\n\t0x1d5f0: 0x6ce7f420, 0x1d5f1: 0x6c465a20, 0x1d5f2: 0x6c9e9c20, 0x1d5f3: 0x6d00de20,\n\t0x1d5f4: 0x6c891220, 0x1d5f5: 0x6d3fb620, 0x1d5f6: 0x6c0bb620, 0x1d5f7: 0x6d284a20,\n\t0x1d5f8: 0x6d19fc20, 0x1d5f9: 0x6ce36820, 0x1d5fa: 0x6c486c20, 0x1d5fb: 0x6d36ea20,\n\t0x1d5fc: 0x6d284c20, 0x1d5fd: 0x6c198c20, 0x1d5fe: 0x6c152020, 0x1d5ff: 0x6c278c20,\n\t// Block 0x758, offset 0x1d600\n\t0x1d600: 0x6cf9ea20, 0x1d601: 0x6d259e20, 0x1d602: 0x6d400620, 0x1d603: 0x6d05da20,\n\t0x1d604: 0x6d1d6a20, 0x1d605: 0x6cf14420, 0x1d606: 0x6c44da20, 0x1d607: 0x6d07c220,\n\t0x1d608: 0x6d1c9c20, 0x1d609: 0x6c6d5220, 0x1d60a: 0x6d18ae20, 0x1d60b: 0x6d3ca220,\n\t0x1d60c: 0x6ca6c020, 0x1d60d: 0x6c053c20, 0x1d60e: 0x6c47c820, 0x1d60f: 0x6cac7220,\n\t0x1d610: 0x6d395420, 0x1d611: 0x6c64fc20, 0x1d612: 0x6c220a20, 0x1d613: 0x6cc31620,\n\t0x1d614: 0x6cd6e020, 0x1d615: 0x6d276620, 0x1d616: 0x6cf9f220, 0x1d617: 0x6c24ea20,\n\t0x1d618: 0x6cf6d220, 0x1d619: 0x6cc6a620, 0x1d61a: 0x6ce1ea20, 0x1d61b: 0x6c405420,\n\t0x1d61c: 0x6d27ca20, 0x1d61d: 0x6c188820, 0x1d61e: 0x6c432020, 0x1d61f: 0x6cc82820,\n\t0x1d620: 0x6c55b820, 0x1d621: 0x6d294620, 0x1d622: 0x6ce2b420, 0x1d623: 0x6cfd1020,\n\t0x1d624: 0x6cdb1e20, 0x1d625: 0x6d31fc20, 0x1d626: 0x6d403420, 0x1d627: 0x6ce1ec20,\n\t0x1d628: 0x6c5a8420, 0x1d629: 0x6c114a20, 0x1d62a: 0x6c0a5820, 0x1d62b: 0x6c3cf620,\n\t0x1d62c: 0x6c246a20, 0x1d62d: 0x6c844620, 0x1d62e: 0x6cdd4220, 0x1d62f: 0x6d0ddc20,\n\t0x1d630: 0x6cf81820, 0x1d631: 0x6d403820, 0x1d632: 0x6c826420, 0x1d633: 0x6c739820,\n\t0x1d634: 0x6cba8220, 0x1d635: 0x6c980820, 0x1d636: 0x6d34a420, 0x1d637: 0x6c93bc20,\n\t0x1d638: 0x6ca2b220, 0x1d639: 0x6cb1a020, 0x1d63a: 0x6c885220, 0x1d63b: 0x6c9c8020,\n\t0x1d63c: 0x6d08bc20, 0x1d63d: 0x6d400a20, 0x1d63e: 0x6c5f5820, 0x1d63f: 0x6ccd1220,\n\t// Block 0x759, offset 0x1d640\n\t0x1d640: 0x6cdc8e20, 0x1d641: 0x6c38ca20, 0x1d642: 0x6c940620, 0x1d643: 0x6c083020,\n\t0x1d644: 0x6d141e20, 0x1d645: 0x6ccac220, 0x1d646: 0x6ca1ec20, 0x1d647: 0x6d114c20,\n\t0x1d648: 0x6cbb4a20, 0x1d649: 0x6c5d0220, 0x1d64a: 0x6cfd5a20, 0x1d64b: 0x6c629a20,\n\t0x1d64c: 0x6ccc8620, 0x1d64d: 0x6d055220, 0x1d64e: 0x6cc49420, 0x1d64f: 0x6d08be20,\n\t0x1d650: 0x6cdca020, 0x1d651: 0x6cbbc020, 0x1d652: 0x6d2b9e20, 0x1d653: 0x6d427020,\n\t0x1d654: 0x6d341e20, 0x1d655: 0x6ccdca20, 0x1d656: 0x6cca3420, 0x1d657: 0x6c8bf020,\n\t0x1d658: 0x6d243820, 0x1d659: 0x6c386220, 0x1d65a: 0x6c8a3820, 0x1d65b: 0x6c21e020,\n\t0x1d65c: 0x6d41f820, 0x1d65d: 0x6c66f220, 0x1d65e: 0x6cc54a20, 0x1d65f: 0x6c15f020,\n\t0x1d660: 0x6cc8b620, 0x1d661: 0x6d055620, 0x1d662: 0x6c5c6e20, 0x1d663: 0x6c57ca20,\n\t0x1d664: 0x6d414a20, 0x1d665: 0x6cf70a20, 0x1d666: 0x6cbb4e20, 0x1d667: 0x6d287c20,\n\t0x1d668: 0x6c270220, 0x1d669: 0x6cd12620, 0x1d66a: 0x6c5c7e20, 0x1d66b: 0x6cf91620,\n\t0x1d66c: 0x6ccb8020, 0x1d66d: 0x6c660020, 0x1d66e: 0x6c679220, 0x1d66f: 0x6c58b820,\n\t0x1d670: 0x6d2a5e20, 0x1d671: 0x6c236e20, 0x1d672: 0x6d026020, 0x1d673: 0x6c695a20,\n\t0x1d674: 0x6c0aa820, 0x1d675: 0x6c28de20, 0x1d676: 0x6d191020, 0x1d677: 0x6ca9ec20,\n\t0x1d678: 0x6cdca220, 0x1d679: 0x6d191220, 0x1d67a: 0x6ccc9a20, 0x1d67b: 0x6d060420,\n\t0x1d67c: 0x6c62cc20, 0x1d67d: 0x6c0d6c20, 0x1d67e: 0x6cba3020, 0x1d67f: 0x6c7fee20,\n\t// Block 0x75a, offset 0x1d680\n\t0x1d680: 0x6cb47020, 0x1d681: 0x6d09c620, 0x1d682: 0x6d415420, 0x1d683: 0x6cb69620,\n\t0x1d684: 0x6caee820, 0x1d685: 0x6d124620, 0x1d686: 0x6ca19a20, 0x1d687: 0x6c835c20,\n\t0x1d688: 0x6d012820, 0x1d689: 0x6d415620, 0x1d68a: 0x6c7c1a20, 0x1d68b: 0x6d1ed220,\n\t0x1d68c: 0x6d076220, 0x1d68d: 0x6c828420, 0x1d68e: 0x6cfb0420, 0x1d68f: 0x6c156220,\n\t0x1d690: 0x6c69f220, 0x1d691: 0x6c919620, 0x1d692: 0x6c156a20, 0x1d693: 0x6d1c4020,\n\t0x1d694: 0x6c111820, 0x1d695: 0x6cc51620, 0x1d696: 0x6cfb1620, 0x1d697: 0x6d418620,\n\t0x1d698: 0x6d415c20, 0x1d699: 0x6c965220, 0x1d69a: 0x6c84e020, 0x1d69b: 0x6c2a5220,\n\t0x1d69c: 0x6c806a20, 0x1d69d: 0x6c82ac20, 0x1d69e: 0x6c894020, 0x1d69f: 0x6cd7b620,\n\t0x1d6a0: 0x6c6f4620, 0x1d6a1: 0x6d207420, 0x1d6a2: 0x6c52ee20, 0x1d6a3: 0x6d38f420,\n\t0x1d6a4: 0x6cfa7420, 0x1d6a5: 0x6c436a20, 0x1d6a6: 0x6d264820, 0x1d6a7: 0x6c5fce20,\n\t0x1d6a8: 0x6cecbc20, 0x1d6a9: 0x6c7bda20, 0x1d6aa: 0x6c617a20, 0x1d6ab: 0x6cc5b820,\n\t0x1d6ac: 0x6cef8820, 0x1d6ad: 0x6d278220, 0x1d6ae: 0x6c52fc20, 0x1d6af: 0x6c213420,\n\t0x1d6b0: 0x6caf2c20, 0x1d6b1: 0x6ccbca20, 0x1d6b2: 0x6c425820, 0x1d6b3: 0x6ca30820,\n\t0x1d6b4: 0x6cc5c620, 0x1d6b5: 0x6d401620, 0x1d6b6: 0x6c94dc20, 0x1d6b7: 0x6c3b1220,\n\t0x1d6b8: 0x6d34ec20, 0x1d6b9: 0x6cf17e20, 0x1d6ba: 0x6c39c220, 0x1d6bb: 0x6d3aa420,\n\t0x1d6bc: 0x6d321420, 0x1d6bd: 0x6ca97c20, 0x1d6be: 0x6cd4a020, 0x1d6bf: 0x6cfc8220,\n\t// Block 0x75b, offset 0x1d6c0\n\t0x1d6c0: 0x6c421220, 0x1d6c1: 0x6d016620, 0x1d6c2: 0x6c3dfa20, 0x1d6c3: 0x6c88e420,\n\t0x1d6c4: 0x6d410c20, 0x1d6c5: 0x6ccfb220, 0x1d6c6: 0x6cf84e20, 0x1d6c7: 0x6d33a020,\n\t0x1d6c8: 0x6d37a020, 0x1d6c9: 0x6d390420, 0x1d6ca: 0x6c04ec20, 0x1d6cb: 0x6c3dfc20,\n\t0x1d6cc: 0x6c1f1420, 0x1d6cd: 0x6ccec820, 0x1d6ce: 0x6d16ce20, 0x1d6cf: 0x6c6d9220,\n\t0x1d6d0: 0x6c273820, 0x1d6d1: 0x6c054a20, 0x1d6d2: 0x6cc65a20, 0x1d6d3: 0x6c6a9820,\n\t0x1d6d4: 0x6c7a8620, 0x1d6d5: 0x6cc54620, 0x1d6d6: 0x6c2e7620, 0x1d6d7: 0x6c4f6420,\n\t0x1d6d8: 0x6c5b9e20, 0x1d6d9: 0x6c449220, 0x1d6da: 0x6d087c20, 0x1d6db: 0x6c67dc20,\n\t0x1d6dc: 0x6c95ea20, 0x1d6dd: 0x6c740420, 0x1d6de: 0x6c68d620, 0x1d6df: 0x6ce7ae20,\n\t0x1d6e0: 0x6c450020, 0x1d6e1: 0x6cfea820, 0x1d6e2: 0x6c735020, 0x1d6e3: 0x6d053620,\n\t0x1d6e4: 0x6cf87220, 0x1d6e5: 0x6cdbf020, 0x1d6e6: 0x6ce1c020, 0x1d6e7: 0x6c61d220,\n\t0x1d6e8: 0x6ce31820, 0x1d6e9: 0x6c5eb820, 0x1d6ea: 0x6d06be20, 0x1d6eb: 0x6c8cf220,\n\t0x1d6ec: 0x6d1bb220, 0x1d6ed: 0x6d06c020, 0x1d6ee: 0x6cb6f620, 0x1d6ef: 0x6c39fc20,\n\t0x1d6f0: 0x6c21b820, 0x1d6f1: 0x6cce5220, 0x1d6f2: 0x6c4bc220, 0x1d6f3: 0x6cd11e20,\n\t0x1d6f4: 0x6cef0420, 0x1d6f5: 0x6c9dc020, 0x1d6f6: 0x6cd46820, 0x1d6f7: 0x6c081a20,\n\t0x1d6f8: 0x6c1da820, 0x1d6f9: 0x6ce22220, 0x1d6fa: 0x6c8f0620, 0x1d6fb: 0x6cc35a20,\n\t0x1d6fc: 0x6d3f7820, 0x1d6fd: 0x6d2e5c20, 0x1d6fe: 0x6ced0c20, 0x1d6ff: 0x6c93d820,\n\t// Block 0x75c, offset 0x1d700\n\t0x1d700: 0x6d3cc420, 0x1d701: 0x6d3e2820, 0x1d702: 0x6c78b420, 0x1d703: 0x6cfd7820,\n\t0x1d704: 0x6c64a420, 0x1d705: 0x6c9e2820, 0x1d706: 0x6c802a20, 0x1d707: 0x6ce33020,\n\t0x1d708: 0x6c9e9420, 0x1d709: 0x6c5eda20, 0x1d70a: 0x6d275020, 0x1d70b: 0x6c5bca20,\n\t0x1d70c: 0x6cd7ec20, 0x1d70d: 0x6c348620, 0x1d70e: 0x6c32c420, 0x1d70f: 0x6c0ba020,\n\t0x1d710: 0x6cfcc820, 0x1d711: 0x6c464a20, 0x1d712: 0x6d3c8a20, 0x1d713: 0x6c58d820,\n\t0x1d714: 0x6c2c5e20, 0x1d715: 0x6c93a020, 0x1d716: 0x6c0af620, 0x1d717: 0x6c9f5820,\n\t0x1d718: 0x6d256820, 0x1d719: 0x6c6d1c20, 0x1d71a: 0x6c401020, 0x1d71b: 0x6cc81e20,\n\t0x1d71c: 0x6d31ea20, 0x1d71d: 0x6c3ce620, 0x1d71e: 0x6c24ce20, 0x1d71f: 0x6c430c20,\n\t0x1d720: 0x6c150420, 0x1d721: 0x6c83f020, 0x1d722: 0x6d17fc20, 0x1d723: 0x6c64be20,\n\t0x1d724: 0x6c0d4020, 0x1d725: 0x6cb15a20, 0x1d726: 0x6c97f020, 0x1d727: 0x6c824820,\n\t0x1d728: 0x6d1bda20, 0x1d729: 0x6cdd2e20, 0x1d72a: 0x6ca1d820, 0x1d72b: 0x6ccaba20,\n\t0x1d72c: 0x6d00e020, 0x1d72d: 0x6c8a1420, 0x1d72e: 0x6ccda220, 0x1d72f: 0x6d2b8c20,\n\t0x1d730: 0x6c677a20, 0x1d731: 0x6cba2420, 0x1d732: 0x6cbbb220, 0x1d733: 0x6c589a20,\n\t0x1d734: 0x6c694620, 0x1d735: 0x6d415020, 0x1d736: 0x6c3d1a20, 0x1d737: 0x6d016820,\n\t0x1d738: 0x6c426820, 0x1d739: 0x6c3d2420, 0x1d73a: 0x6cc38a20, 0x1d73b: 0x6c3d2620,\n\t0x1d73c: 0x6cb81020, 0x1d73d: 0x6c0e6e20, 0x1d73e: 0x6cb2ac20, 0x1d73f: 0x6cfe3420,\n\t// Block 0x75d, offset 0x1d740\n\t0x1d740: 0x6d2ff620, 0x1d741: 0x6c428e20, 0x1d742: 0x6d1bdc20, 0x1d743: 0x6d1bea20,\n\t0x1d744: 0x6cbee020, 0x1d745: 0x6cfa4c20, 0x1d746: 0x6c49aa20, 0x1d747: 0x6d41fa20,\n\t0x1d748: 0x6ce02a20, 0x1d749: 0x6c126020, 0x1d74a: 0x6cb7fe20, 0x1d74b: 0x6cf27620,\n\t0x1d74c: 0x6d1c2220, 0x1d74d: 0x6c828620, 0x1d74e: 0x6ce04820, 0x1d74f: 0x6c919820,\n\t0x1d750: 0x6c49c420, 0x1d751: 0x6cedf420, 0x1d752: 0x6cedf020, 0x1d753: 0x6c424e20,\n\t0x1d754: 0x6cedfe20, 0x1d755: 0x6c4e5020, 0x1d756: 0x6c953820, 0x1d757: 0x6c952c20,\n\t0x1d758: 0x6c3e2220, 0x1d759: 0x6c9c3a20, 0x1d75a: 0x6c380620, 0x1d75b: 0x6c470020,\n\t0x1d75c: 0x6d3a6020, 0x1d75d: 0x6c707220, 0x1d75e: 0x6c98d420, 0x1d75f: 0x6c477420,\n\t0x1d760: 0x6c9f4220, 0x1d761: 0x6c427220, 0x1d762: 0x6c03f420, 0x1d763: 0x6c48b220,\n\t0x1d764: 0x6ce33220, 0x1d765: 0x6c736a20, 0x1d766: 0x6c3e8820, 0x1d767: 0x6cd0b420,\n\t0x1d768: 0x6d0da820, 0x1d769: 0x6d2fc220, 0x1d76a: 0x6d41b820, 0x1d76b: 0x6c48b820,\n\t0x1d76c: 0x6d3d7220, 0x1d76d: 0x6d237620, 0x1d76e: 0x6d366620, 0x1d76f: 0x6c018e20,\n\t0x1d770: 0x6c382020, 0x1d771: 0x6c803420, 0x1d772: 0x6cd56220, 0x1d773: 0x6cd80620,\n\t0x1d774: 0x6cb00820, 0x1d775: 0x6c96da20, 0x1d776: 0x6c8f1620, 0x1d777: 0x6c03f820,\n\t0x1d778: 0x6c382420, 0x1d779: 0x6c844a20, 0x1d77a: 0x6c177e20, 0x1d77b: 0x6cf0d020,\n\t0x1d77c: 0x6c0a3420, 0x1d77d: 0x6c629c20, 0x1d77e: 0x6d2b9c20, 0x1d77f: 0x6c1ce620,\n\t// Block 0x75e, offset 0x1d780\n\t0x1d780: 0x6c8f2220, 0x1d781: 0x6c5f5a20, 0x1d782: 0x6c739e20, 0x1d783: 0x6c9da220,\n\t0x1d784: 0x6d2fec20, 0x1d785: 0x6c956220, 0x1d786: 0x6cb03220, 0x1d787: 0x6c5f9e20,\n\t0x1d788: 0x6c5fb020, 0x1d789: 0x6c946820, 0x1d78a: 0x6d0f7620, 0x1d78b: 0x6c9cde20,\n\t0x1d78c: 0x6cba9e20, 0x1d78d: 0x6c268820, 0x1d78e: 0x6c9a4e20, 0x1d78f: 0x6d0f9a20,\n\t0x1d790: 0x6d1fbc20, 0x1d791: 0x6d1fb420, 0x1d792: 0x6c3b6620, 0x1d793: 0x6c033e20,\n\t0x1d794: 0x6c42b820, 0x1d795: 0x6d104a20, 0x1d796: 0x6c477620, 0x1d797: 0x6cbaaa20,\n\t0x1d798: 0x6d29d620, 0x1d799: 0x6c42ba20, 0x1d79a: 0x6c8cf620, 0x1d79b: 0x6d176e20,\n\t0x1d79c: 0x6d3aee20, 0x1d79d: 0x6c2b2820, 0x1d79e: 0x6d04c820, 0x1d79f: 0x6cbb3c20,\n\t0x1d7a0: 0x6d14fa20, 0x1d7a1: 0x6cfcca20, 0x1d7a2: 0x6cc67c20, 0x1d7a3: 0x6cc44a20,\n\t0x1d7a4: 0x6cc44c20, 0x1d7a5: 0x6cbb4420, 0x1d7a6: 0x6c588220, 0x1d7a7: 0x6cdd2620,\n\t0x1d7a8: 0x6cfcdc20, 0x1d7a9: 0x6d17fe20, 0x1d7aa: 0x6d107a20, 0x1d7ab: 0x6cbad220,\n\t0x1d7ac: 0x6cb9c220, 0x1d7ad: 0x6d218820, 0x1d7ae: 0x6c44dc20, 0x1d7af: 0x6c6b2220,\n\t0x1d7b0: 0x6ce0cc20, 0x1d7b1: 0x6d25ac20, 0x1d7b2: 0x6cf6d420, 0x1d7b3: 0x6c38d820,\n\t0x1d7b4: 0x6ccd1a20, 0x1d7b5: 0x6c3ba220, 0x1d7b6: 0x6ccd1e20, 0x1d7b7: 0x6c88d820,\n\t0x1d7b8: 0x6c827420, 0x1d7b9: 0x6c44e420, 0x1d7ba: 0x6caa0820, 0x1d7bb: 0x6cbb5e20,\n\t0x1d7bc: 0x6c164620, 0x1d7bd: 0x6d221c20, 0x1d7be: 0x6c461020, 0x1d7bf: 0x6d170420,\n\t// Block 0x75f, offset 0x1d7c0\n\t0x1d7c0: 0x6c1cbe20, 0x1d7c1: 0x6cf22220, 0x1d7c2: 0x6c3b2420, 0x1d7c3: 0x6c533020,\n\t0x1d7c4: 0x6c1c0820, 0x1d7c5: 0x6c1c0a20, 0x1d7c6: 0x6c252a20, 0x1d7c7: 0x6c3e6020,\n\t0x1d7c8: 0x6cf9b220, 0x1d7c9: 0x6c079c20, 0x1d7ca: 0x6d177020, 0x1d7cb: 0x6c7e4220,\n\t0x1d7cc: 0x6d177220, 0x1d7cd: 0x6caf6220, 0x1d7ce: 0x6c8cf820, 0x1d7cf: 0x6c8f2e20,\n\t0x1d7d0: 0x6d360020, 0x1d7d1: 0x6cc18e20, 0x1d7d2: 0x6cf77a20, 0x1d7d3: 0x6d00ae20,\n\t0x1d7d4: 0x6cfdc620, 0x1d7d5: 0x6cf62420, 0x1d7d6: 0x6cf88e20, 0x1d7d7: 0x6c785020,\n\t0x1d7d8: 0x6cbc4620, 0x1d7d9: 0x6c5bcc20, 0x1d7da: 0x6c5aba20, 0x1d7db: 0x6cfecc20,\n\t0x1d7dc: 0x6ccc5e20, 0x1d7dd: 0x6c536620, 0x1d7de: 0x6c676c20, 0x1d7df: 0x6c2b7e20,\n\t0x1d7e0: 0x6c255220, 0x1d7e1: 0x6c3a6420, 0x1d7e2: 0x6c2a2620, 0x1d7e3: 0x6ccc6a20,\n\t0x1d7e4: 0x6c1c4a20, 0x1d7e5: 0x6d3b1620, 0x1d7e6: 0x6c65d220, 0x1d7e7: 0x6d07c420,\n\t0x1d7e8: 0x6c1c6220, 0x1d7e9: 0x6cb0fe20, 0x1d7ea: 0x6d3fb820, 0x1d7eb: 0x6cece620,\n\t0x1d7ec: 0x6c5aea20, 0x1d7ed: 0x6c542820, 0x1d7ee: 0x6c517420, 0x1d7ef: 0x6c51e820,\n\t0x1d7f0: 0x6c4f0a20, 0x1d7f1: 0x6c027220, 0x1d7f2: 0x6cb16820, 0x1d7f3: 0x6d18d020,\n\t0x1d7f4: 0x6c885420, 0x1d7f5: 0x6c543420, 0x1d7f6: 0x6c030820, 0x1d7f7: 0x6c8bf220,\n\t0x1d7f8: 0x6cae4820, 0x1d7f9: 0x6cbc6a20, 0x1d7fa: 0x6c027e20, 0x1d7fb: 0x6c386420,\n\t0x1d7fc: 0x6d18d220, 0x1d7fd: 0x6c5c8020, 0x1d7fe: 0x6d07e420, 0x1d7ff: 0x6c2a4a20,\n\t// Block 0x760, offset 0x1d800\n\t0x1d800: 0x6d124420, 0x1d801: 0x6c819a20, 0x1d802: 0x6c819820, 0x1d803: 0x6c779c20,\n\t0x1d804: 0x6c996620, 0x1d805: 0x6d30d220, 0x1d806: 0x6cb5a820, 0x1d807: 0x6c467a20,\n\t0x1d808: 0x6c468020, 0x1d809: 0x6c467c20, 0x1d80a: 0x6c2f3420, 0x1d80b: 0x6c2eb020,\n\t0x1d80c: 0x6c373020, 0x1d80d: 0x6cd64620, 0x1d80e: 0x6cc85620, 0x1d80f: 0x6ca3b220,\n\t0x1d810: 0x6ca3b420, 0x1d811: 0x6c329220, 0x1d812: 0x6c82b220, 0x1d813: 0x6ce63220,\n\t0x1d814: 0x6d3efc20, 0x1d815: 0x6c44c220, 0x1d816: 0x6c17b620, 0x1d817: 0x6c503220,\n\t0x1d818: 0x6d27a020, 0x1d819: 0x6c03b020, 0x1d81a: 0x6caf6420, 0x1d81b: 0x6d14ec20,\n\t0x1d81c: 0x6cd8bc20, 0x1d81d: 0x6cc26e20, 0x1d81e: 0x6c635220, 0x1d81f: 0x6c723220,\n\t0x1d820: 0x6c5d5620, 0x1d821: 0x6c1e8e20, 0x1d822: 0x6c81d420, 0x1d823: 0x6c951c20,\n\t0x1d824: 0x6c607020, 0x1d825: 0x6ce0c620, 0x1d826: 0x6cab8e20, 0x1d827: 0x6c90b420,\n\t0x1d828: 0x6caa2820, 0x1d829: 0x6c67be20, 0x1d82a: 0x6cad1e20, 0x1d82b: 0x6d2c5620,\n\t0x1d82c: 0x6c90be20, 0x1d82d: 0x6c5f7020, 0x1d82e: 0x6c81e420, 0x1d82f: 0x6c5e2e20,\n\t0x1d830: 0x6d1ed420, 0x1d831: 0x6ca1a020, 0x1d832: 0x6c580420, 0x1d833: 0x6c378420,\n\t0x1d834: 0x6d169620, 0x1d835: 0x6c2f5420, 0x1d836: 0x6d127420, 0x1d837: 0x6c264420,\n\t0x1d838: 0x6cd95820, 0x1d839: 0x6cbd6820, 0x1d83a: 0x6d27a220, 0x1d83b: 0x6c1b9420,\n\t0x1d83c: 0x6c27ca20, 0x1d83d: 0x6c27cc20, 0x1d83e: 0x6c533420, 0x1d83f: 0x6c450220,\n\t// Block 0x761, offset 0x1d840\n\t0x1d840: 0x6d344820, 0x1d841: 0x6cacb220, 0x1d842: 0x6ca80c20, 0x1d843: 0x6c27d420,\n\t0x1d844: 0x6d31d620, 0x1d845: 0x6c181a20, 0x1d846: 0x6c8cfa20, 0x1d847: 0x6d32ba20,\n\t0x1d848: 0x6d1fc220, 0x1d849: 0x6cec3020, 0x1d84a: 0x6c89e420, 0x1d84b: 0x6c8f8c20,\n\t0x1d84c: 0x6d345c20, 0x1d84d: 0x6ca90220, 0x1d84e: 0x6ce55e20, 0x1d84f: 0x6c375c20,\n\t0x1d850: 0x6d0bb420, 0x1d851: 0x6ce5f020, 0x1d852: 0x6c485e20, 0x1d853: 0x6d077220,\n\t0x1d854: 0x6c880420, 0x1d855: 0x6c504620, 0x1d856: 0x6cd16e20, 0x1d857: 0x6c8b1a20,\n\t0x1d858: 0x6cb24420, 0x1d859: 0x6c6dce20, 0x1d85a: 0x6c726c20, 0x1d85b: 0x6c08ee20,\n\t0x1d85c: 0x6c2bfe20, 0x1d85d: 0x6c4c7c20, 0x1d85e: 0x6cf1a220, 0x1d85f: 0x6d071a20,\n\t0x1d860: 0x6cb25820, 0x1d861: 0x6c232e20, 0x1d862: 0x6c2fc820, 0x1d863: 0x6ca5f820,\n\t0x1d864: 0x6ce68c20, 0x1d865: 0x6c71d020, 0x1d866: 0x6c234820, 0x1d867: 0x6c7c4220,\n\t0x1d868: 0x6c894420, 0x1d869: 0x6c7d1220, 0x1d86a: 0x6c234a20, 0x1d86b: 0x6c884020,\n\t0x1d86c: 0x6cf26020, 0x1d86d: 0x6c7d1420, 0x1d86e: 0x6c885820, 0x1d86f: 0x6c886820,\n\t0x1d870: 0x6c236620, 0x1d871: 0x6c027420, 0x1d872: 0x6cd11820, 0x1d873: 0x6cd96e20,\n\t0x1d874: 0x6ce64c20, 0x1d875: 0x6c7d2a20, 0x1d876: 0x6ca88820, 0x1d877: 0x6d34aa20,\n\t0x1d878: 0x6c281020, 0x1d879: 0x6ca93420, 0x1d87a: 0x6cbc8a20, 0x1d87b: 0x6ca65e20,\n\t0x1d87c: 0x6ce65220, 0x1d87d: 0x6ce65620, 0x1d87e: 0x6c8ff820, 0x1d87f: 0x6d22c620,\n\t// Block 0x762, offset 0x1d880\n\t0x1d880: 0x6d22b620, 0x1d881: 0x6d2fac20, 0x1d882: 0x6cd8ac20, 0x1d883: 0x6cda8220,\n\t0x1d884: 0x6d180020, 0x1d885: 0x6cdad820, 0x1d886: 0x6cd8ca20, 0x1d887: 0x6d2fcc20,\n\t0x1d888: 0x6d2fce20, 0x1d889: 0x6cc78220, 0x1d88a: 0x6d164c20, 0x1d88b: 0x6c81fe20,\n\t0x1d88c: 0x6c5e8020, 0x1d88d: 0x6cbffe20, 0x1d88e: 0x6c78f220, 0x1d88f: 0x6c12b620,\n\t0x1d890: 0x6c437020, 0x1d891: 0x6c0eb020, 0x1d892: 0x6c58f020, 0x1d893: 0x6c597a20,\n\t0x1d894: 0x6d15c220, 0x1d895: 0x6cc5c820, 0x1d896: 0x6cffd220, 0x1d897: 0x6cc7f620,\n\t0x1d898: 0x6d38d820, 0x1d899: 0x6d25fc20, 0x1d89a: 0x6c323820, 0x1d89b: 0x6c425a20,\n\t0x1d89c: 0x6cc65420, 0x1d89d: 0x6c416e20, 0x1d89e: 0x6c138020, 0x1d89f: 0x6cf2d220,\n\t0x1d8a0: 0x6c169820, 0x1d8a1: 0x6c476020, 0x1d8a2: 0x6d33a220, 0x1d8a3: 0x6c4dd620,\n\t0x1d8a4: 0x6c3d4420, 0x1d8a5: 0x6c3a3220, 0x1d8a6: 0x6c3b6420, 0x1d8a7: 0x6cadb220,\n\t0x1d8a8: 0x6cad2820, 0x1d8a9: 0x6c647020, 0x1d8aa: 0x6c39a820, 0x1d8ab: 0x6d3ccc20,\n\t0x1d8ac: 0x6d1f0220, 0x1d8ad: 0x6ca31420, 0x1d8ae: 0x6c01e820, 0x1d8af: 0x6c78f620,\n\t0x1d8b0: 0x6cc46420, 0x1d8b1: 0x6c456820, 0x1d8b2: 0x6d22da20, 0x1d8b3: 0x6cf1d020,\n\t0x1d8b4: 0x6d10d020, 0x1d8b5: 0x6cb58c20, 0x1d8b6: 0x6cafc020, 0x1d8b7: 0x6cb9f620,\n\t0x1d8b8: 0x6cf59220, 0x1d8b9: 0x6cf59420, 0x1d8ba: 0x6c3a8c20, 0x1d8bb: 0x6c78f820,\n\t0x1d8bc: 0x6c6e1220, 0x1d8bd: 0x6cdf6420, 0x1d8be: 0x6cd09020, 0x1d8bf: 0x6d37e620,\n\t// Block 0x763, offset 0x1d8c0\n\t0x1d8c0: 0x6d2f2820, 0x1d8c1: 0x6d007220, 0x1d8c2: 0x6cd09620, 0x1d8c3: 0x6cf07e20,\n\t0x1d8c4: 0x6d391220, 0x1d8c5: 0x6c2e7820, 0x1d8c6: 0x6c282c20, 0x1d8c7: 0x6c3a9020,\n\t0x1d8c8: 0x6c037220, 0x1d8c9: 0x6c0ec820, 0x1d8ca: 0x6cc17c20, 0x1d8cb: 0x6ce49420,\n\t0x1d8cc: 0x6c06f220, 0x1d8cd: 0x6c484a20, 0x1d8ce: 0x6cdf0420, 0x1d8cf: 0x6d3ef220,\n\t0x1d8d0: 0x6c7a3220, 0x1d8d1: 0x6d33b420, 0x1d8d2: 0x6ca68820, 0x1d8d3: 0x6cb28a20,\n\t0x1d8d4: 0x6d3f5420, 0x1d8d5: 0x6c3f4c20, 0x1d8d6: 0x6cad2a20, 0x1d8d7: 0x6d313020,\n\t0x1d8d8: 0x6cfb3820, 0x1d8d9: 0x6d428820, 0x1d8da: 0x6cadb820, 0x1d8db: 0x6c640820,\n\t0x1d8dc: 0x6cd15620, 0x1d8dd: 0x6d33b620, 0x1d8de: 0x6c05ac20, 0x1d8df: 0x6ca23620,\n\t0x1d8e0: 0x6cc0ee20, 0x1d8e1: 0x6c552e20, 0x1d8e2: 0x6c77ea20, 0x1d8e3: 0x6c1b8620,\n\t0x1d8e4: 0x6d1b4020, 0x1d8e5: 0x6d057a20, 0x1d8e6: 0x6d0f5220, 0x1d8e7: 0x6c8f7a20,\n\t0x1d8e8: 0x6c306620, 0x1d8e9: 0x6c761c20, 0x1d8ea: 0x6c914620, 0x1d8eb: 0x6c6e5c20,\n\t0x1d8ec: 0x6caa5820, 0x1d8ed: 0x6d0bea20, 0x1d8ee: 0x6cacd020, 0x1d8ef: 0x6c7ae820,\n\t0x1d8f0: 0x6d14d620, 0x1d8f1: 0x6c49e820, 0x1d8f2: 0x6c4d3e20, 0x1d8f3: 0x6c438220,\n\t0x1d8f4: 0x6c307020, 0x1d8f5: 0x6c1aa220, 0x1d8f6: 0x6c683e20, 0x1d8f7: 0x6d046420,\n\t0x1d8f8: 0x6d046620, 0x1d8f9: 0x6c374c20, 0x1d8fa: 0x6c01b020, 0x1d8fb: 0x6c526020,\n\t0x1d8fc: 0x6cb10a20, 0x1d8fd: 0x6ca5a420, 0x1d8fe: 0x6d3f5620, 0x1d8ff: 0x6c4a4c20,\n\t// Block 0x764, offset 0x1d900\n\t0x1d900: 0x6c19e220, 0x1d901: 0x6ce5c020, 0x1d902: 0x6d33ce20, 0x1d903: 0x6c252c20,\n\t0x1d904: 0x6c99e620, 0x1d905: 0x6d009220, 0x1d906: 0x6c252e20, 0x1d907: 0x6d009420,\n\t0x1d908: 0x6c972e20, 0x1d909: 0x6c972a20, 0x1d90a: 0x6c600420, 0x1d90b: 0x6d029e20,\n\t0x1d90c: 0x6ca8f020, 0x1d90d: 0x6c7b2020, 0x1d90e: 0x6cc97220, 0x1d90f: 0x6d2a0420,\n\t0x1d910: 0x6cb5aa20, 0x1d911: 0x6ca4e820, 0x1d912: 0x6c9cec20, 0x1d913: 0x6ca9b820,\n\t0x1d914: 0x6c943a20, 0x1d915: 0x6ced7c20, 0x1d916: 0x6c0ef420, 0x1d917: 0x6cf1d820,\n\t0x1d918: 0x6ced0e20, 0x1d919: 0x6d04d020, 0x1d91a: 0x6c68ea20, 0x1d91b: 0x6c6e7a20,\n\t0x1d91c: 0x6d1fc420, 0x1d91d: 0x6c524e20, 0x1d91e: 0x6c260820, 0x1d91f: 0x6c8b0820,\n\t0x1d920: 0x6cccdc20, 0x1d921: 0x6ce6c420, 0x1d922: 0x6c99f020, 0x1d923: 0x6c214420,\n\t0x1d924: 0x6cd0a220, 0x1d925: 0x6cba0420, 0x1d926: 0x6c2a9220, 0x1d927: 0x6c72ee20,\n\t0x1d928: 0x6c243820, 0x1d929: 0x6d04cc20, 0x1d92a: 0x6d032e20, 0x1d92b: 0x6ceac220,\n\t0x1d92c: 0x6cad3820, 0x1d92d: 0x6c19f220, 0x1d92e: 0x6ca56c20, 0x1d92f: 0x6cb43620,\n\t0x1d930: 0x6c311420, 0x1d931: 0x6ceac420, 0x1d932: 0x6ca7d620, 0x1d933: 0x6ca53e20,\n\t0x1d934: 0x6cb05a20, 0x1d935: 0x6c478220, 0x1d936: 0x6c954020, 0x1d937: 0x6c85fc20,\n\t0x1d938: 0x6c88b820, 0x1d939: 0x6d2f3020, 0x1d93a: 0x6c254020, 0x1d93b: 0x6c6a1c20,\n\t0x1d93c: 0x6c899420, 0x1d93d: 0x6cd6fc20, 0x1d93e: 0x6caff420, 0x1d93f: 0x6c0bfe20,\n\t// Block 0x765, offset 0x1d940\n\t0x1d940: 0x6c94fc20, 0x1d941: 0x6cb11020, 0x1d942: 0x6c82c420, 0x1d943: 0x6c7cfe20,\n\t0x1d944: 0x6c20d620, 0x1d945: 0x6c288c20, 0x1d946: 0x6ce4fa20, 0x1d947: 0x6ca57020,\n\t0x1d948: 0x6c6dbc20, 0x1d949: 0x6ca37a20, 0x1d94a: 0x6c7e7820, 0x1d94b: 0x6d12f420,\n\t0x1d94c: 0x6d0c0e20, 0x1d94d: 0x6cc5f420, 0x1d94e: 0x6cd0a420, 0x1d94f: 0x6c21c220,\n\t0x1d950: 0x6c3f7820, 0x1d951: 0x6c3f6a20, 0x1d952: 0x6c709620, 0x1d953: 0x6c3a3620,\n\t0x1d954: 0x6cbabc20, 0x1d955: 0x6ced8820, 0x1d956: 0x6c307c20, 0x1d957: 0x6caff620,\n\t0x1d958: 0x6c4c6e20, 0x1d959: 0x6d3f9220, 0x1d95a: 0x6c2fa820, 0x1d95b: 0x6cf2fe20,\n\t0x1d95c: 0x6c9a6020, 0x1d95d: 0x6ca5f420, 0x1d95e: 0x6d3bd020, 0x1d95f: 0x6c1c3420,\n\t0x1d960: 0x6c23f020, 0x1d961: 0x6c954820, 0x1d962: 0x6cab8020, 0x1d963: 0x6c2c6e20,\n\t0x1d964: 0x6c013c20, 0x1d965: 0x6d038220, 0x1d966: 0x6ca50420, 0x1d967: 0x6cd5ea20,\n\t0x1d968: 0x6cd69220, 0x1d969: 0x6ca42e20, 0x1d96a: 0x6d283c20, 0x1d96b: 0x6d380020,\n\t0x1d96c: 0x6cc78620, 0x1d96d: 0x6c366020, 0x1d96e: 0x6cc9ca20, 0x1d96f: 0x6ce8c820,\n\t0x1d970: 0x6d10ae20, 0x1d971: 0x6c669220, 0x1d972: 0x6cefe620, 0x1d973: 0x6c690e20,\n\t0x1d974: 0x6d213220, 0x1d975: 0x6c637220, 0x1d976: 0x6c32d020, 0x1d977: 0x6c09d820,\n\t0x1d978: 0x6c16b220, 0x1d979: 0x6c401220, 0x1d97a: 0x6cfcde20, 0x1d97b: 0x6ca6b020,\n\t0x1d97c: 0x6c9e2e20, 0x1d97d: 0x6cec3820, 0x1d97e: 0x6ce2a220, 0x1d97f: 0x6ce9e620,\n\t// Block 0x766, offset 0x1d980\n\t0x1d980: 0x6c055620, 0x1d981: 0x6cba1820, 0x1d982: 0x6c93a820, 0x1d983: 0x6cec3a20,\n\t0x1d984: 0x6cda3e20, 0x1d985: 0x6ce11c20, 0x1d986: 0x6cdaee20, 0x1d987: 0x6d3c9820,\n\t0x1d988: 0x6c441420, 0x1d989: 0x6d183220, 0x1d98a: 0x6c100a20, 0x1d98b: 0x6c89fa20,\n\t0x1d98c: 0x6c607220, 0x1d98d: 0x6cb00a20, 0x1d98e: 0x6d00d020, 0x1d98f: 0x6c42d020,\n\t0x1d990: 0x6c93b420, 0x1d991: 0x6c0d8420, 0x1d992: 0x6cab6c20, 0x1d993: 0x6c16c220,\n\t0x1d994: 0x6c92ae20, 0x1d995: 0x6c4c8220, 0x1d996: 0x6cace020, 0x1d997: 0x6c1fbc20,\n\t0x1d998: 0x6c0c1a20, 0x1d999: 0x6c67c020, 0x1d99a: 0x6c3d9220, 0x1d99b: 0x6ce12c20,\n\t0x1d99c: 0x6ca06e20, 0x1d99d: 0x6cf6ac20, 0x1d99e: 0x6d3b8e20, 0x1d99f: 0x6c93f820,\n\t0x1d9a0: 0x6c686e20, 0x1d9a1: 0x6d1d4420, 0x1d9a2: 0x6c936220, 0x1d9a3: 0x6d36be20,\n\t0x1d9a4: 0x6d098620, 0x1d9a5: 0x6c211e20, 0x1d9a6: 0x6c8c6620, 0x1d9a7: 0x6ce78e20,\n\t0x1d9a8: 0x6caec820, 0x1d9a9: 0x6ca6cc20, 0x1d9aa: 0x6c1fcc20, 0x1d9ab: 0x6c8a1e20,\n\t0x1d9ac: 0x6c256620, 0x1d9ad: 0x6c4a8e20, 0x1d9ae: 0x6cff1620, 0x1d9af: 0x6ce29020,\n\t0x1d9b0: 0x6c38c220, 0x1d9b1: 0x6d349a20, 0x1d9b2: 0x6c688020, 0x1d9b3: 0x6ccdb420,\n\t0x1d9b4: 0x6c550420, 0x1d9b5: 0x6c255c20, 0x1d9b6: 0x6cc90a20, 0x1d9b7: 0x6cfd8a20,\n\t0x1d9b8: 0x6cdc1020, 0x1d9b9: 0x6c3bf020, 0x1d9ba: 0x6d1c0020, 0x1d9bb: 0x6ccd1620,\n\t0x1d9bc: 0x6d3b5c20, 0x1d9bd: 0x6c284c20, 0x1d9be: 0x6c7b4020, 0x1d9bf: 0x6ca9d220,\n\t// Block 0x767, offset 0x1d9c0\n\t0x1d9c0: 0x6cea7020, 0x1d9c1: 0x6c886a20, 0x1d9c2: 0x6c0a7620, 0x1d9c3: 0x6d1dc020,\n\t0x1d9c4: 0x6c74cc20, 0x1d9c5: 0x6c1f8020, 0x1d9c6: 0x6d18d420, 0x1d9c7: 0x6c732c20,\n\t0x1d9c8: 0x6c7e9820, 0x1d9c9: 0x6c88ce20, 0x1d9ca: 0x6ccac420, 0x1d9cb: 0x6cea7420,\n\t0x1d9cc: 0x6c47da20, 0x1d9cd: 0x6cb67820, 0x1d9ce: 0x6c257c20, 0x1d9cf: 0x6c0d8e20,\n\t0x1d9d0: 0x6d09bc20, 0x1d9d1: 0x6ca53a20, 0x1d9d2: 0x6cf32020, 0x1d9d3: 0x6d2a0e20,\n\t0x1d9d4: 0x6cfd3420, 0x1d9d5: 0x6c0c4420, 0x1d9d6: 0x6d044020, 0x1d9d7: 0x6c7b5c20,\n\t0x1d9d8: 0x6c7eaa20, 0x1d9d9: 0x6d0c4220, 0x1d9da: 0x6c918820, 0x1d9db: 0x6c5e4220,\n\t0x1d9dc: 0x6d28a020, 0x1d9dd: 0x6c95cc20, 0x1d9de: 0x6cc21020, 0x1d9df: 0x6d2a1020,\n\t0x1d9e0: 0x6c946c20, 0x1d9e1: 0x6ca61e20, 0x1d9e2: 0x6d28aa20, 0x1d9e3: 0x6c189420,\n\t0x1d9e4: 0x6cb8b620, 0x1d9e5: 0x6cf2da20, 0x1d9e6: 0x6c4a2420, 0x1d9e7: 0x6d29e220,\n\t0x1d9e8: 0x6c8bea20, 0x1d9e9: 0x6c4a0e20, 0x1d9ea: 0x6d3f2a20, 0x1d9eb: 0x6c68c420,\n\t0x1d9ec: 0x6ca80e20, 0x1d9ed: 0x6c1e4020, 0x1d9ee: 0x6c620c20, 0x1d9ef: 0x6c42c820,\n\t0x1d9f0: 0x6c1e4420, 0x1d9f1: 0x6c9dce20, 0x1d9f2: 0x6ca87420, 0x1d9f3: 0x6d357020,\n\t0x1d9f4: 0x6d35c620, 0x1d9f5: 0x6c43f220, 0x1d9f6: 0x6c669420, 0x1d9f7: 0x6c2eb220,\n\t0x1d9f8: 0x6d33e420, 0x1d9f9: 0x6d04d820, 0x1d9fa: 0x6cdf3220, 0x1d9fb: 0x6d319820,\n\t0x1d9fc: 0x6c6fd020, 0x1d9fd: 0x6cfc8420, 0x1d9fe: 0x6d20ca20, 0x1d9ff: 0x6c138620,\n\t// Block 0x768, offset 0x1da00\n\t0x1da00: 0x6d11a420, 0x1da01: 0x6d20e820, 0x1da02: 0x6c1cc220, 0x1da03: 0x6cf89020,\n\t0x1da04: 0x6cf89220, 0x1da05: 0x6c700620, 0x1da06: 0x6d217a20, 0x1da07: 0x6d227220,\n\t0x1da08: 0x6d043820, 0x1da09: 0x6c71d420, 0x1da0a: 0x6c702a20, 0x1da0b: 0x6d035820,\n\t0x1da0c: 0x6ccf0620, 0x1da0d: 0x6ccf2820, 0x1da0e: 0x6ccf9620, 0x1da0f: 0x6c6fb220,\n\t0x1da10: 0x6cd36020, 0x1da11: 0x6cdfa420, 0x1da12: 0x6cd4e220, 0x1da13: 0x6cd3b620,\n\t0x1da14: 0x6ce50820, 0x1da15: 0x6ce0a420, 0x1da16: 0x6cb4b020, 0x1da17: 0x6cb4b220,\n\t0x1da18: 0x6c496420, 0x1da19: 0x6c57cc20, 0x1da1a: 0x6ce54020, 0x1da1b: 0x6c201620,\n\t0x1da1c: 0x6cd75220, 0x1da1d: 0x6cf9d820, 0x1da1e: 0x6cf45e20, 0x1da1f: 0x6d385220,\n\t0x1da20: 0x6c29be20, 0x1da21: 0x6c1ff420, 0x1da22: 0x6cccd620, 0x1da23: 0x6d15d420,\n\t0x1da24: 0x6c397c20, 0x1da25: 0x6cabc020, 0x1da26: 0x6cdf6a20, 0x1da27: 0x6c389420,\n\t0x1da28: 0x6c04c820, 0x1da29: 0x6c1ff620, 0x1da2a: 0x6c4f6c20, 0x1da2b: 0x6c39d420,\n\t0x1da2c: 0x6c047a20, 0x1da2d: 0x6c08d420, 0x1da2e: 0x6c934820, 0x1da2f: 0x6d37b020,\n\t0x1da30: 0x6c667220, 0x1da31: 0x6c122a20, 0x1da32: 0x6c8cfc20, 0x1da33: 0x6d3a1020,\n\t0x1da34: 0x6d2ac620, 0x1da35: 0x6c34f220, 0x1da36: 0x6c0ef620, 0x1da37: 0x6cfb5020,\n\t0x1da38: 0x6c447620, 0x1da39: 0x6c1ff820, 0x1da3a: 0x6cf9b420, 0x1da3b: 0x6c914e20,\n\t0x1da3c: 0x6cbf2e20, 0x1da3d: 0x6cacfc20, 0x1da3e: 0x6cf62a20, 0x1da3f: 0x6c7af420,\n\t// Block 0x769, offset 0x1da40\n\t0x1da40: 0x6c3ea420, 0x1da41: 0x6d2a8620, 0x1da42: 0x6c3cb220, 0x1da43: 0x6c83f220,\n\t0x1da44: 0x6cce7820, 0x1da45: 0x6d216420, 0x1da46: 0x6c80d220, 0x1da47: 0x6ce6ce20,\n\t0x1da48: 0x6d237820, 0x1da49: 0x6cefe820, 0x1da4a: 0x6c0f3220, 0x1da4b: 0x6c9be020,\n\t0x1da4c: 0x6ca76c20, 0x1da4d: 0x6c70b420, 0x1da4e: 0x6c59f420, 0x1da4f: 0x6cd44a20,\n\t0x1da50: 0x6c78d020, 0x1da51: 0x6c0bb820, 0x1da52: 0x6ca2a620, 0x1da53: 0x6c2ede20,\n\t0x1da54: 0x6c315c20, 0x1da55: 0x6c059020, 0x1da56: 0x6c13ae20, 0x1da57: 0x6d18b220,\n\t0x1da58: 0x6cd9d820, 0x1da59: 0x6c123a20, 0x1da5a: 0x6c129c20, 0x1da5b: 0x6c90c020,\n\t0x1da5c: 0x6c279820, 0x1da5d: 0x6d098a20, 0x1da5e: 0x6d123420, 0x1da5f: 0x6c1cee20,\n\t0x1da60: 0x6c2b0820, 0x1da61: 0x6c291c20, 0x1da62: 0x6cbb2c20, 0x1da63: 0x6c91f620,\n\t0x1da64: 0x6d162220, 0x1da65: 0x6c60e020, 0x1da66: 0x6c670e20, 0x1da67: 0x6c5e3020,\n\t0x1da68: 0x6c9b8620, 0x1da69: 0x6cb69820, 0x1da6a: 0x6c91fe20, 0x1da6b: 0x6c919a20,\n\t0x1da6c: 0x6c157220, 0x1da6d: 0x6cd6c020, 0x1da6e: 0x6c449e20, 0x1da6f: 0x6c894620,\n\t0x1da70: 0x6c647220, 0x1da71: 0x6c650020, 0x1da72: 0x6ccb1420, 0x1da73: 0x6d0e5420,\n\t0x1da74: 0x6c3e6820, 0x1da75: 0x6cb25a20, 0x1da76: 0x6d0eea20, 0x1da77: 0x6d0f1c20,\n\t0x1da78: 0x6c12aa20, 0x1da79: 0x6c12c020, 0x1da7a: 0x6d164220, 0x1da7b: 0x6c821220,\n\t0x1da7c: 0x6ce62820, 0x1da7d: 0x6c681e20, 0x1da7e: 0x6c008420, 0x1da7f: 0x6ca39020,\n\t// Block 0x76a, offset 0x1da80\n\t0x1da80: 0x6ce56820, 0x1da81: 0x6c682020, 0x1da82: 0x6c6a5a20, 0x1da83: 0x6cae8c20,\n\t0x1da84: 0x6cecbe20, 0x1da85: 0x6d167020, 0x1da86: 0x6c145e20, 0x1da87: 0x6c9db820,\n\t0x1da88: 0x6c9cd820, 0x1da89: 0x6c416220, 0x1da8a: 0x6cb89e20, 0x1da8b: 0x6d22c820,\n\t0x1da8c: 0x6d22ca20, 0x1da8d: 0x6cce9620, 0x1da8e: 0x6cbeee20, 0x1da8f: 0x6c323020,\n\t0x1da90: 0x6c564c20, 0x1da91: 0x6cb6ce20, 0x1da92: 0x6c982c20, 0x1da93: 0x6d3f2e20,\n\t0x1da94: 0x6c5ba020, 0x1da95: 0x6cdbaa20, 0x1da96: 0x6d357220, 0x1da97: 0x6cfd6020,\n\t0x1da98: 0x6cafb020, 0x1da99: 0x6c3ddc20, 0x1da9a: 0x6cea4220, 0x1da9b: 0x6cef8a20,\n\t0x1da9c: 0x6cf3a820, 0x1da9d: 0x6d338420, 0x1da9e: 0x6cb73e20, 0x1da9f: 0x6cccbe20,\n\t0x1daa0: 0x6cf18020, 0x1daa1: 0x6cba3e20, 0x1daa2: 0x6cc56e20, 0x1daa3: 0x6c3dde20,\n\t0x1daa4: 0x6c79b620, 0x1daa5: 0x6c6bba20, 0x1daa6: 0x6c913620, 0x1daa7: 0x6d067420,\n\t0x1daa8: 0x6c5e8220, 0x1daa9: 0x6cbd5420, 0x1daaa: 0x6cb57620, 0x1daab: 0x6d0c5a20,\n\t0x1daac: 0x6c3b1420, 0x1daad: 0x6c032020, 0x1daae: 0x6cc8c020, 0x1daaf: 0x6d02ac20,\n\t0x1dab0: 0x6c618a20, 0x1dab1: 0x6c570620, 0x1dab2: 0x6c570820, 0x1dab3: 0x6c398620,\n\t0x1dab4: 0x6cf4ae20, 0x1dab5: 0x6c73e420, 0x1dab6: 0x6c466c20, 0x1dab7: 0x6d34ee20,\n\t0x1dab8: 0x6d278420, 0x1dab9: 0x6cbd5620, 0x1daba: 0x6c029e20, 0x1dabb: 0x6c1e7820,\n\t0x1dabc: 0x6c994620, 0x1dabd: 0x6d0b1420, 0x1dabe: 0x6c3a8020, 0x1dabf: 0x6cc63220,\n\t// Block 0x76b, offset 0x1dac0\n\t0x1dac0: 0x6c4f5a20, 0x1dac1: 0x6c22fc20, 0x1dac2: 0x6d1a2a20, 0x1dac3: 0x6d1fa220,\n\t0x1dac4: 0x6c0b7420, 0x1dac5: 0x6d169a20, 0x1dac6: 0x6cbd1020, 0x1dac7: 0x6cef8c20,\n\t0x1dac8: 0x6c858420, 0x1dac9: 0x6cb05420, 0x1daca: 0x6c35d420, 0x1dacb: 0x6cfc7c20,\n\t0x1dacc: 0x6c169a20, 0x1dacd: 0x6c122420, 0x1dace: 0x6d3aa620, 0x1dacf: 0x6cda4820,\n\t0x1dad0: 0x6ce30e20, 0x1dad1: 0x6d260220, 0x1dad2: 0x6cc4ae20, 0x1dad3: 0x6c8cb020,\n\t0x1dad4: 0x6cdf1a20, 0x1dad5: 0x6cce9820, 0x1dad6: 0x6c2b5c20, 0x1dad7: 0x6c9e6e20,\n\t0x1dad8: 0x6cbe9c20, 0x1dad9: 0x6c859620, 0x1dada: 0x6d1e7220, 0x1dadb: 0x6c77d820,\n\t0x1dadc: 0x6ca27220, 0x1dadd: 0x6c06ee20, 0x1dade: 0x6c05a820, 0x1dadf: 0x6c467220,\n\t0x1dae0: 0x6c9f3420, 0x1dae1: 0x6d15c420, 0x1dae2: 0x6d15ca20, 0x1dae3: 0x6c720020,\n\t0x1dae4: 0x6cb1de20, 0x1dae5: 0x6cc91420, 0x1dae6: 0x6c7a7620, 0x1dae7: 0x6ca8fa20,\n\t0x1dae8: 0x6ca62c20, 0x1dae9: 0x6c0ebc20, 0x1daea: 0x6c0dc820, 0x1daeb: 0x6cccc620,\n\t0x1daec: 0x6d051a20, 0x1daed: 0x6d119220, 0x1daee: 0x6cfa8420, 0x1daef: 0x6c079620,\n\t0x1daf0: 0x6c530620, 0x1daf1: 0x6d1ba220, 0x1daf2: 0x6d2c7420, 0x1daf3: 0x6c2fe220,\n\t0x1daf4: 0x6c706020, 0x1daf5: 0x6c2e6220, 0x1daf6: 0x6ca7de20, 0x1daf7: 0x6c417e20,\n\t0x1daf8: 0x6c54a820, 0x1daf9: 0x6cb27c20, 0x1dafa: 0x6c99dc20, 0x1dafb: 0x6c3e0220,\n\t0x1dafc: 0x6cd0e820, 0x1dafd: 0x6c46f620, 0x1dafe: 0x6c093e20, 0x1daff: 0x6cf07620,\n\t// Block 0x76c, offset 0x1db00\n\t0x1db00: 0x6c3e0420, 0x1db01: 0x6d3d2e20, 0x1db02: 0x6c994c20, 0x1db03: 0x6c393220,\n\t0x1db04: 0x6c633020, 0x1db05: 0x6c98cc20, 0x1db06: 0x6c98ce20, 0x1db07: 0x6c036a20,\n\t0x1db08: 0x6c223220, 0x1db09: 0x6ca0d620, 0x1db0a: 0x6d3e0620, 0x1db0b: 0x6c2be020,\n\t0x1db0c: 0x6c1b0a20, 0x1db0d: 0x6c61b220, 0x1db0e: 0x6c6d9420, 0x1db0f: 0x6c8f6e20,\n\t0x1db10: 0x6c23e220, 0x1db11: 0x6ca78e20, 0x1db12: 0x6d256c20, 0x1db13: 0x6d08fe20,\n\t0x1db14: 0x6d1c5a20, 0x1db15: 0x6cbf0020, 0x1db16: 0x6c43cc20, 0x1db17: 0x6c9ff020,\n\t0x1db18: 0x6c85ae20, 0x1db19: 0x6cc65c20, 0x1db1a: 0x6d1b3c20, 0x1db1b: 0x6c44b020,\n\t0x1db1c: 0x6cba4420, 0x1db1d: 0x6c148e20, 0x1db1e: 0x6c18aa20, 0x1db1f: 0x6d22e820,\n\t0x1db20: 0x6c4fa220, 0x1db21: 0x6d3f3420, 0x1db22: 0x6c8adc20, 0x1db23: 0x6cf3bc20,\n\t0x1db24: 0x6c61b420, 0x1db25: 0x6c4a4020, 0x1db26: 0x6c22bc20, 0x1db27: 0x6c657620,\n\t0x1db28: 0x6c223420, 0x1db29: 0x6c469e20, 0x1db2a: 0x6c49e220, 0x1db2b: 0x6c984420,\n\t0x1db2c: 0x6c13ce20, 0x1db2d: 0x6c683620, 0x1db2e: 0x6c683820, 0x1db2f: 0x6c3e2420,\n\t0x1db30: 0x6d20ea20, 0x1db31: 0x6d398e20, 0x1db32: 0x6d3e1420, 0x1db33: 0x6c675220,\n\t0x1db34: 0x6c5b2820, 0x1db35: 0x6d19b620, 0x1db36: 0x6c13d020, 0x1db37: 0x6c380820,\n\t0x1db38: 0x6cc64e20, 0x1db39: 0x6cc79420, 0x1db3a: 0x6c1cb620, 0x1db3b: 0x6c989220,\n\t0x1db3c: 0x6ce72c20, 0x1db3d: 0x6d381c20, 0x1db3e: 0x6cb8ac20, 0x1db3f: 0x6d3a0220,\n\t// Block 0x76d, offset 0x1db40\n\t0x1db40: 0x6d09f220, 0x1db41: 0x6c586820, 0x1db42: 0x6c3d5420, 0x1db43: 0x6cc2c620,\n\t0x1db44: 0x6c40ea20, 0x1db45: 0x6c264620, 0x1db46: 0x6c6d9a20, 0x1db47: 0x6d041c20,\n\t0x1db48: 0x6c201c20, 0x1db49: 0x6c12ac20, 0x1db4a: 0x6c6d9c20, 0x1db4b: 0x6c374820,\n\t0x1db4c: 0x6c01a820, 0x1db4d: 0x6cbbd420, 0x1db4e: 0x6c1b1220, 0x1db4f: 0x6cc58c20,\n\t0x1db50: 0x6c666020, 0x1db51: 0x6ce31220, 0x1db52: 0x6c598420, 0x1db53: 0x6cb28e20,\n\t0x1db54: 0x6c85b020, 0x1db55: 0x6c6c3620, 0x1db56: 0x6c81aa20, 0x1db57: 0x6cd5b620,\n\t0x1db58: 0x6d3c0e20, 0x1db59: 0x6c268c20, 0x1db5a: 0x6c63a820, 0x1db5b: 0x6cc52220,\n\t0x1db5c: 0x6c095620, 0x1db5d: 0x6d2ab420, 0x1db5e: 0x6cbbd620, 0x1db5f: 0x6c5ba220,\n\t0x1db60: 0x6c61b620, 0x1db61: 0x6c295c20, 0x1db62: 0x6d24c020, 0x1db63: 0x6cc65e20,\n\t0x1db64: 0x6c5cb620, 0x1db65: 0x6d03d420, 0x1db66: 0x6c95ec20, 0x1db67: 0x6d1c5e20,\n\t0x1db68: 0x6d09f420, 0x1db69: 0x6c6ce420, 0x1db6a: 0x6cdcce20, 0x1db6b: 0x6d19b820,\n\t0x1db6c: 0x6c971220, 0x1db6d: 0x6c532020, 0x1db6e: 0x6d391420, 0x1db6f: 0x6d11f620,\n\t0x1db70: 0x6c324c20, 0x1db71: 0x6cefa420, 0x1db72: 0x6c83b020, 0x1db73: 0x6c310820,\n\t0x1db74: 0x6c3d6020, 0x1db75: 0x6cc59220, 0x1db76: 0x6d1a4c20, 0x1db77: 0x6c50fc20,\n\t0x1db78: 0x6c08a020, 0x1db79: 0x6c108820, 0x1db7a: 0x6d27e220, 0x1db7b: 0x6c2b6620,\n\t0x1db7c: 0x6ce89820, 0x1db7d: 0x6cdbba20, 0x1db7e: 0x6cdbbc20, 0x1db7f: 0x6c19d020,\n\t// Block 0x76e, offset 0x1db80\n\t0x1db80: 0x6c18b420, 0x1db81: 0x6cf3be20, 0x1db82: 0x6c0ce420, 0x1db83: 0x6cf5d020,\n\t0x1db84: 0x6c450420, 0x1db85: 0x6c85de20, 0x1db86: 0x6cb43420, 0x1db87: 0x6d3ae020,\n\t0x1db88: 0x6ca10020, 0x1db89: 0x6c85e020, 0x1db8a: 0x6d3c1420, 0x1db8b: 0x6d423420,\n\t0x1db8c: 0x6ceab820, 0x1db8d: 0x6cc03820, 0x1db8e: 0x6ccbe420, 0x1db8f: 0x6cdd1220,\n\t0x1db90: 0x6c18b620, 0x1db91: 0x6cae9620, 0x1db92: 0x6c71ae20, 0x1db93: 0x6c99e820,\n\t0x1db94: 0x6c9b1220, 0x1db95: 0x6d042420, 0x1db96: 0x6c6da220, 0x1db97: 0x6c17d820,\n\t0x1db98: 0x6ccfd420, 0x1db99: 0x6c756820, 0x1db9a: 0x6d0c7a20, 0x1db9b: 0x6ce66620,\n\t0x1db9c: 0x6d1f2020, 0x1db9d: 0x6c261e20, 0x1db9e: 0x6c494c20, 0x1db9f: 0x6c4ea020,\n\t0x1dba0: 0x6d1fbe20, 0x1dba1: 0x6c262020, 0x1dba2: 0x6c63b420, 0x1dba3: 0x6cede220,\n\t0x1dba4: 0x6cda9620, 0x1dba5: 0x6ca99220, 0x1dba6: 0x6cce6420, 0x1dba7: 0x6cfcac20,\n\t0x1dba8: 0x6c811a20, 0x1dba9: 0x6c3e4020, 0x1dbaa: 0x6c355a20, 0x1dbab: 0x6ca10220,\n\t0x1dbac: 0x6cf20420, 0x1dbad: 0x6c6aa820, 0x1dbae: 0x6ca3f420, 0x1dbaf: 0x6ca27c20,\n\t0x1dbb0: 0x6c76c820, 0x1dbb1: 0x6c7eee20, 0x1dbb2: 0x6c87f820, 0x1dbb3: 0x6cd26020,\n\t0x1dbb4: 0x6cf28220, 0x1dbb5: 0x6ce93020, 0x1dbb6: 0x6cfa9620, 0x1dbb7: 0x6c5db220,\n\t0x1dbb8: 0x6d1f2220, 0x1dbb9: 0x6d1c6020, 0x1dbba: 0x6d1ba820, 0x1dbbb: 0x6c461e20,\n\t0x1dbbc: 0x6c213e20, 0x1dbbd: 0x6c988a20, 0x1dbbe: 0x6c988c20, 0x1dbbf: 0x6c22c220,\n\t// Block 0x76f, offset 0x1dbc0\n\t0x1dbc0: 0x6ced1020, 0x1dbc1: 0x6c6db220, 0x1dbc2: 0x6c2c4e20, 0x1dbc3: 0x6cc18020,\n\t0x1dbc4: 0x6c2ffe20, 0x1dbc5: 0x6c648c20, 0x1dbc6: 0x6d405020, 0x1dbc7: 0x6c483a20,\n\t0x1dbc8: 0x6c7e4420, 0x1dbc9: 0x6c924820, 0x1dbca: 0x6c711c20, 0x1dbcb: 0x6cf08620,\n\t0x1dbcc: 0x6c757020, 0x1dbcd: 0x6ca82220, 0x1dbce: 0x6c7d5c20, 0x1dbcf: 0x6c511a20,\n\t0x1dbd0: 0x6cb43a20, 0x1dbd1: 0x6d290020, 0x1dbd2: 0x6c430420, 0x1dbd3: 0x6c4cbc20,\n\t0x1dbd4: 0x6c3e6c20, 0x1dbd5: 0x6c94f620, 0x1dbd6: 0x6c166a20, 0x1dbd7: 0x6c1daa20,\n\t0x1dbd8: 0x6cd91e20, 0x1dbd9: 0x6c20ca20, 0x1dbda: 0x6d2e5e20, 0x1dbdb: 0x6c9acc20,\n\t0x1dbdc: 0x6c114420, 0x1dbdd: 0x6c037820, 0x1dbde: 0x6c83c820, 0x1dbdf: 0x6ce8aa20,\n\t0x1dbe0: 0x6c0e7020, 0x1dbe1: 0x6c4eb620, 0x1dbe2: 0x6c064620, 0x1dbe3: 0x6cbe1220,\n\t0x1dbe4: 0x6c731e20, 0x1dbe5: 0x6cf60020, 0x1dbe6: 0x6cbd6a20, 0x1dbe7: 0x6c2bf220,\n\t0x1dbe8: 0x6c6a0420, 0x1dbe9: 0x6cb43820, 0x1dbea: 0x6c296220, 0x1dbeb: 0x6c6c9020,\n\t0x1dbec: 0x6cbbde20, 0x1dbed: 0x6cdf2220, 0x1dbee: 0x6c44c820, 0x1dbef: 0x6c573420,\n\t0x1dbf0: 0x6c470c20, 0x1dbf1: 0x6c8cfe20, 0x1dbf2: 0x6c39fe20, 0x1dbf3: 0x6cbd7020,\n\t0x1dbf4: 0x6c012a20, 0x1dbf5: 0x6cee1620, 0x1dbf6: 0x6c081c20, 0x1dbf7: 0x6d38e220,\n\t0x1dbf8: 0x6d0c0020, 0x1dbf9: 0x6c709020, 0x1dbfa: 0x6c648e20, 0x1dbfb: 0x6c8c1e20,\n\t0x1dbfc: 0x6ce05c20, 0x1dbfd: 0x6cd4d420, 0x1dbfe: 0x6ce49e20, 0x1dbff: 0x6c2a1420,\n\t// Block 0x770, offset 0x1dc00\n\t0x1dc00: 0x6c561c20, 0x1dc01: 0x6cb5d020, 0x1dc02: 0x6c511c20, 0x1dc03: 0x6c253820,\n\t0x1dc04: 0x6ce22420, 0x1dc05: 0x6c210420, 0x1dc06: 0x6c098a20, 0x1dc07: 0x6c16aa20,\n\t0x1dc08: 0x6c586e20, 0x1dc09: 0x6c3aa620, 0x1dc0a: 0x6c7f0020, 0x1dc0b: 0x6cb4ee20,\n\t0x1dc0c: 0x6c9b1420, 0x1dc0d: 0x6cb2a020, 0x1dc0e: 0x6cee7420, 0x1dc0f: 0x6c288220,\n\t0x1dc10: 0x6ccc4e20, 0x1dc11: 0x6c587020, 0x1dc12: 0x6d0d6e20, 0x1dc13: 0x6d14ee20,\n\t0x1dc14: 0x6ce58420, 0x1dc15: 0x6cb5d220, 0x1dc16: 0x6ced1220, 0x1dc17: 0x6c12e220,\n\t0x1dc18: 0x6ca3bc20, 0x1dc19: 0x6d327c20, 0x1dc1a: 0x6ceba420, 0x1dc1b: 0x6c6f6c20,\n\t0x1dc1c: 0x6ce5ee20, 0x1dc1d: 0x6c954220, 0x1dc1e: 0x6c0ae020, 0x1dc1f: 0x6d199220,\n\t0x1dc20: 0x6c9b1620, 0x1dc21: 0x6c100820, 0x1dc22: 0x6cada820, 0x1dc23: 0x6c2fc620,\n\t0x1dc24: 0x6d1c6420, 0x1dc25: 0x6d1c6620, 0x1dc26: 0x6d1c6820, 0x1dc27: 0x6cfebc20,\n\t0x1dc28: 0x6cc97420, 0x1dc29: 0x6cbfb020, 0x1dc2a: 0x6c77fc20, 0x1dc2b: 0x6cfe3620,\n\t0x1dc2c: 0x6ced8620, 0x1dc2d: 0x6d226020, 0x1dc2e: 0x6d213620, 0x1dc2f: 0x6c3ffa20,\n\t0x1dc30: 0x6c88fe20, 0x1dc31: 0x6d07a220, 0x1dc32: 0x6d07a420, 0x1dc33: 0x6ca42a20,\n\t0x1dc34: 0x6c12f620, 0x1dc35: 0x6cf28e20, 0x1dc36: 0x6c217a20, 0x1dc37: 0x6cfece20,\n\t0x1dc38: 0x6d210620, 0x1dc39: 0x6c0b4020, 0x1dc3a: 0x6c998420, 0x1dc3b: 0x6c013420,\n\t0x1dc3c: 0x6c364020, 0x1dc3d: 0x6c960a20, 0x1dc3e: 0x6d1c7820, 0x1dc3f: 0x6c7dfc20,\n\t// Block 0x771, offset 0x1dc40\n\t0x1dc40: 0x6c7dfe20, 0x1dc41: 0x6c676420, 0x1dc42: 0x6c9e2a20, 0x1dc43: 0x6d42a020,\n\t0x1dc44: 0x6d42a220, 0x1dc45: 0x6d409c20, 0x1dc46: 0x6c060020, 0x1dc47: 0x6cc74e20,\n\t0x1dc48: 0x6cf7ec20, 0x1dc49: 0x6d12f620, 0x1dc4a: 0x6c013620, 0x1dc4b: 0x6cc19420,\n\t0x1dc4c: 0x6c64a820, 0x1dc4d: 0x6c3e8e20, 0x1dc4e: 0x6c93e420, 0x1dc4f: 0x6c6dbe20,\n\t0x1dc50: 0x6cae4220, 0x1dc51: 0x6c3c5020, 0x1dc52: 0x6c535220, 0x1dc53: 0x6c535420,\n\t0x1dc54: 0x6c540820, 0x1dc55: 0x6d0e7a20, 0x1dc56: 0x6ce86420, 0x1dc57: 0x6d311420,\n\t0x1dc58: 0x6d3e4620, 0x1dc59: 0x6cfd7a20, 0x1dc5a: 0x6cc5f620, 0x1dc5b: 0x6c43f420,\n\t0x1dc5c: 0x6cb82c20, 0x1dc5d: 0x6cbe8020, 0x1dc5e: 0x6c9cf820, 0x1dc5f: 0x6c59c820,\n\t0x1dc60: 0x6ccff220, 0x1dc61: 0x6cb43c20, 0x1dc62: 0x6c413820, 0x1dc63: 0x6c303020,\n\t0x1dc64: 0x6d392a20, 0x1dc65: 0x6c669620, 0x1dc66: 0x6cefcc20, 0x1dc67: 0x6c0f0820,\n\t0x1dc68: 0x6cee9220, 0x1dc69: 0x6cabc620, 0x1dc6a: 0x6c620e20, 0x1dc6b: 0x6c556620,\n\t0x1dc6c: 0x6d2a0820, 0x1dc6d: 0x6c636220, 0x1dc6e: 0x6c32c620, 0x1dc6f: 0x6d120a20,\n\t0x1dc70: 0x6cdbc420, 0x1dc71: 0x6c231c20, 0x1dc72: 0x6cc2fa20, 0x1dc73: 0x6cee9420,\n\t0x1dc74: 0x6d315820, 0x1dc75: 0x6c7c7a20, 0x1dc76: 0x6ce67820, 0x1dc77: 0x6c5cd220,\n\t0x1dc78: 0x6cf7ee20, 0x1dc79: 0x6cd1c220, 0x1dc7a: 0x6cb79a20, 0x1dc7b: 0x6c7f9e20,\n\t0x1dc7c: 0x6d3f9420, 0x1dc7d: 0x6d10a820, 0x1dc7e: 0x6d24f020, 0x1dc7f: 0x6c9a0620,\n\t// Block 0x772, offset 0x1dc80\n\t0x1dc80: 0x6d275220, 0x1dc81: 0x6cd5c820, 0x1dc82: 0x6c2c6220, 0x1dc83: 0x6d3bc620,\n\t0x1dc84: 0x6c491820, 0x1dc85: 0x6cc4dc20, 0x1dc86: 0x6d08e020, 0x1dc87: 0x6c15b820,\n\t0x1dc88: 0x6c765a20, 0x1dc89: 0x6c7d0020, 0x1dc8a: 0x6c571620, 0x1dc8b: 0x6c67a820,\n\t0x1dc8c: 0x6c908e20, 0x1dc8d: 0x6cefce20, 0x1dc8e: 0x6cac2a20, 0x1dc8f: 0x6d206c20,\n\t0x1dc90: 0x6cd9b620, 0x1dc91: 0x6d1b6220, 0x1dc92: 0x6cd1d420, 0x1dc93: 0x6c215420,\n\t0x1dc94: 0x6cd27620, 0x1dc95: 0x6d275a20, 0x1dc96: 0x6d317220, 0x1dc97: 0x6c812220,\n\t0x1dc98: 0x6cc7b420, 0x1dc99: 0x6c9b2a20, 0x1dc9a: 0x6c863a20, 0x1dc9b: 0x6cc38e20,\n\t0x1dc9c: 0x6cdb9c20, 0x1dc9d: 0x6d258a20, 0x1dc9e: 0x6c863c20, 0x1dc9f: 0x6c71c420,\n\t0x1dca0: 0x6cf65620, 0x1dca1: 0x6c057e20, 0x1dca2: 0x6c1e8220, 0x1dca3: 0x6d062020,\n\t0x1dca4: 0x6ce8cc20, 0x1dca5: 0x6c8e7020, 0x1dca6: 0x6c5de020, 0x1dca7: 0x6c2d2220,\n\t0x1dca8: 0x6cba5e20, 0x1dca9: 0x6d409e20, 0x1dcaa: 0x6cb39820, 0x1dcab: 0x6c25e420,\n\t0x1dcac: 0x6d24fa20, 0x1dcad: 0x6c1e9020, 0x1dcae: 0x6d237a20, 0x1dcaf: 0x6c7afe20,\n\t0x1dcb0: 0x6cac6220, 0x1dcb1: 0x6cb43e20, 0x1dcb2: 0x6cb44020, 0x1dcb3: 0x6ca35820,\n\t0x1dcb4: 0x6cd78820, 0x1dcb5: 0x6cf78820, 0x1dcb6: 0x6c3b7c20, 0x1dcb7: 0x6d27b820,\n\t0x1dcb8: 0x6d32d220, 0x1dcb9: 0x6c64c020, 0x1dcba: 0x6c605e20, 0x1dcbb: 0x6cc92220,\n\t0x1dcbc: 0x6c123620, 0x1dcbd: 0x6c371820, 0x1dcbe: 0x6c9c5820, 0x1dcbf: 0x6c4fa820,\n\t// Block 0x773, offset 0x1dcc0\n\t0x1dcc0: 0x6cdcd820, 0x1dcc1: 0x6d317420, 0x1dcc2: 0x6ca00c20, 0x1dcc3: 0x6cd9b820,\n\t0x1dcc4: 0x6d06fe20, 0x1dcc5: 0x6c8e7220, 0x1dcc6: 0x6cf78a20, 0x1dcc7: 0x6c479220,\n\t0x1dcc8: 0x6c80c020, 0x1dcc9: 0x6cc68c20, 0x1dcca: 0x6cf25420, 0x1dccb: 0x6c414820,\n\t0x1dccc: 0x6c263020, 0x1dccd: 0x6cd1d620, 0x1dcce: 0x6ce10820, 0x1dccf: 0x6c95b620,\n\t0x1dcd0: 0x6cc82020, 0x1dcd1: 0x6cdd2820, 0x1dcd2: 0x6d07ae20, 0x1dcd3: 0x6c073620,\n\t0x1dcd4: 0x6d11ba20, 0x1dcd5: 0x6c4b5620, 0x1dcd6: 0x6c09da20, 0x1dcd7: 0x6d3ffc20,\n\t0x1dcd8: 0x6c4bd220, 0x1dcd9: 0x6d42ba20, 0x1dcda: 0x6ce58620, 0x1dcdb: 0x6c12fe20,\n\t0x1dcdc: 0x6cae2e20, 0x1dcdd: 0x6c7fa420, 0x1dcde: 0x6c28b620, 0x1dcdf: 0x6c622420,\n\t0x1dce0: 0x6c83f420, 0x1dce1: 0x6ccffa20, 0x1dce2: 0x6c810620, 0x1dce3: 0x6d237c20,\n\t0x1dce4: 0x6c8e2e20, 0x1dce5: 0x6d1c8420, 0x1dce6: 0x6ca13020, 0x1dce7: 0x6c2e3020,\n\t0x1dce8: 0x6ce58e20, 0x1dce9: 0x6c993c20, 0x1dcea: 0x6ce6fa20, 0x1dceb: 0x6c1f5a20,\n\t0x1dcec: 0x6caeae20, 0x1dced: 0x6c014020, 0x1dcee: 0x6c881820, 0x1dcef: 0x6c233220,\n\t0x1dcf0: 0x6cf80220, 0x1dcf1: 0x6cb2ae20, 0x1dcf2: 0x6cbfb820, 0x1dcf3: 0x6c6ca620,\n\t0x1dcf4: 0x6c215820, 0x1dcf5: 0x6c6b1420, 0x1dcf6: 0x6cef2420, 0x1dcf7: 0x6ce99620,\n\t0x1dcf8: 0x6c128220, 0x1dcf9: 0x6d23ca20, 0x1dcfa: 0x6d183620, 0x1dcfb: 0x6d3ed220,\n\t0x1dcfc: 0x6c8a7220, 0x1dcfd: 0x6c09dc20, 0x1dcfe: 0x6c91ce20, 0x1dcff: 0x6d077620,\n\t// Block 0x774, offset 0x1dd00\n\t0x1dd00: 0x6c10a820, 0x1dd01: 0x6d2ed020, 0x1dd02: 0x6c824a20, 0x1dd03: 0x6cbb1c20,\n\t0x1dd04: 0x6c97f220, 0x1dd05: 0x6d0cb820, 0x1dd06: 0x6c8d3e20, 0x1dd07: 0x6c621020,\n\t0x1dd08: 0x6c0c0e20, 0x1dd09: 0x6c4bde20, 0x1dd0a: 0x6c4e5c20, 0x1dd0b: 0x6c2b8220,\n\t0x1dd0c: 0x6cdaf020, 0x1dd0d: 0x6c929620, 0x1dd0e: 0x6ccf6c20, 0x1dd0f: 0x6cce1420,\n\t0x1dd10: 0x6c2b8420, 0x1dd11: 0x6c9ee420, 0x1dd12: 0x6d09a220, 0x1dd13: 0x6c97f420,\n\t0x1dd14: 0x6c0f3420, 0x1dd15: 0x6c2c8420, 0x1dd16: 0x6c25ea20, 0x1dd17: 0x6d311620,\n\t0x1dd18: 0x6cd00a20, 0x1dd19: 0x6d08a620, 0x1dd1a: 0x6cf0b220, 0x1dd1b: 0x6c558220,\n\t0x1dd1c: 0x6c025620, 0x1dd1d: 0x6c9cfc20, 0x1dd1e: 0x6c90aa20, 0x1dd1f: 0x6c244a20,\n\t0x1dd20: 0x6d37c220, 0x1dd21: 0x6c114820, 0x1dd22: 0x6cb33220, 0x1dd23: 0x6c67b220,\n\t0x1dd24: 0x6c9d6e20, 0x1dd25: 0x6c233420, 0x1dd26: 0x6ca7a220, 0x1dd27: 0x6c5c0220,\n\t0x1dd28: 0x6c738620, 0x1dd29: 0x6d1a8420, 0x1dd2a: 0x6c66ac20, 0x1dd2b: 0x6ca6f020,\n\t0x1dd2c: 0x6cd50220, 0x1dd2d: 0x6d19f020, 0x1dd2e: 0x6c4c7e20, 0x1dd2f: 0x6c18d620,\n\t0x1dd30: 0x6c56bc20, 0x1dd31: 0x6ccc0020, 0x1dd32: 0x6c79fc20, 0x1dd33: 0x6cba6e20,\n\t0x1dd34: 0x6c966e20, 0x1dd35: 0x6d29e420, 0x1dd36: 0x6d2b5a20, 0x1dd37: 0x6cbb1620,\n\t0x1dd38: 0x6c30ba20, 0x1dd39: 0x6c88c620, 0x1dd3a: 0x6c8c5a20, 0x1dd3b: 0x6c79fe20,\n\t0x1dd3c: 0x6c007020, 0x1dd3d: 0x6c0a0a20, 0x1dd3e: 0x6c843220, 0x1dd3f: 0x6cf00a20,\n\t// Block 0x775, offset 0x1dd40\n\t0x1dd40: 0x6c609620, 0x1dd41: 0x6cb9c420, 0x1dd42: 0x6cd17620, 0x1dd43: 0x6c385c20,\n\t0x1dd44: 0x6c9b3c20, 0x1dd45: 0x6cab9020, 0x1dd46: 0x6c15dc20, 0x1dd47: 0x6c2d2820,\n\t0x1dd48: 0x6d0aa420, 0x1dd49: 0x6c687020, 0x1dd4a: 0x6cc8ac20, 0x1dd4b: 0x6cc8ae20,\n\t0x1dd4c: 0x6c82d420, 0x1dd4d: 0x6d218e20, 0x1dd4e: 0x6cbbf220, 0x1dd4f: 0x6c1ea020,\n\t0x1dd50: 0x6c575220, 0x1dd51: 0x6c64e220, 0x1dd52: 0x6c971a20, 0x1dd53: 0x6d27c220,\n\t0x1dd54: 0x6c05b820, 0x1dd55: 0x6d1f6820, 0x1dd56: 0x6cc1aa20, 0x1dd57: 0x6c92da20,\n\t0x1dd58: 0x6cc52a20, 0x1dd59: 0x6c5c1e20, 0x1dd5a: 0x6c369020, 0x1dd5b: 0x6ce36a20,\n\t0x1dd5c: 0x6c3a6a20, 0x1dd5d: 0x6c749e20, 0x1dd5e: 0x6d41c820, 0x1dd5f: 0x6c384020,\n\t0x1dd60: 0x6cc7c020, 0x1dd61: 0x6c3b8e20, 0x1dd62: 0x6c7d1620, 0x1dd63: 0x6cd75820,\n\t0x1dd64: 0x6cc8a220, 0x1dd65: 0x6d0b5e20, 0x1dd66: 0x6d05dc20, 0x1dd67: 0x6c403c20,\n\t0x1dd68: 0x6c74a020, 0x1dd69: 0x6c298a20, 0x1dd6a: 0x6cf3e420, 0x1dd6b: 0x6c303a20,\n\t0x1dd6c: 0x6cd82420, 0x1dd6d: 0x6cff1820, 0x1dd6e: 0x6cf8d020, 0x1dd6f: 0x6c8fa020,\n\t0x1dd70: 0x6cf16420, 0x1dd71: 0x6ccee820, 0x1dd72: 0x6cb64220, 0x1dd73: 0x6c64e420,\n\t0x1dd74: 0x6d284e20, 0x1dd75: 0x6cdcde20, 0x1dd76: 0x6c8d5a20, 0x1dd77: 0x6d23f220,\n\t0x1dd78: 0x6cf9ec20, 0x1dd79: 0x6cf27220, 0x1dd7a: 0x6c609820, 0x1dd7b: 0x6c538820,\n\t0x1dd7c: 0x6cd8ee20, 0x1dd7d: 0x6ca9ca20, 0x1dd7e: 0x6c82da20, 0x1dd7f: 0x6d07ce20,\n\t// Block 0x776, offset 0x1dd80\n\t0x1dd80: 0x6d285620, 0x1dd81: 0x6d23cc20, 0x1dd82: 0x6cf7a420, 0x1dd83: 0x6c506e20,\n\t0x1dd84: 0x6c05d620, 0x1dd85: 0x6c4fae20, 0x1dd86: 0x6c00d220, 0x1dd87: 0x6ceeba20,\n\t0x1dd88: 0x6c5c3c20, 0x1dd89: 0x6c5c3e20, 0x1dd8a: 0x6c628220, 0x1dd8b: 0x6c226e20,\n\t0x1dd8c: 0x6cfd8420, 0x1dd8d: 0x6ced9a20, 0x1dd8e: 0x6c9ee820, 0x1dd8f: 0x6d18b420,\n\t0x1dd90: 0x6c838820, 0x1dd91: 0x6c677e20, 0x1dd92: 0x6c120820, 0x1dd93: 0x6cd01e20,\n\t0x1dd94: 0x6cbb2620, 0x1dd95: 0x6c885a20, 0x1dd96: 0x6c781c20, 0x1dd97: 0x6d25ae20,\n\t0x1dd98: 0x6c26c020, 0x1dd99: 0x6ce42220, 0x1dd9a: 0x6ce0d420, 0x1dd9b: 0x6d08e820,\n\t0x1dd9c: 0x6c0a5c20, 0x1dd9d: 0x6d2d9a20, 0x1dd9e: 0x6cdce020, 0x1dd9f: 0x6cfad820,\n\t0x1dda0: 0x6c38c420, 0x1dda1: 0x6c2f8220, 0x1dda2: 0x6d021c20, 0x1dda3: 0x6c47d220,\n\t0x1dda4: 0x6d021e20, 0x1dda5: 0x6cd56e20, 0x1dda6: 0x6c66d420, 0x1dda7: 0x6c4fb020,\n\t0x1dda8: 0x6c52ca20, 0x1dda9: 0x6cc99820, 0x1ddaa: 0x6d02f220, 0x1ddab: 0x6d09aa20,\n\t0x1ddac: 0x6d122420, 0x1ddad: 0x6c046a20, 0x1ddae: 0x6cda2c20, 0x1ddaf: 0x6cd57020,\n\t0x1ddb0: 0x6d09b420, 0x1ddb1: 0x6c336a20, 0x1ddb2: 0x6cb21a20, 0x1ddb3: 0x6cf01820,\n\t0x1ddb4: 0x6ca92820, 0x1ddb5: 0x6c1df020, 0x1ddb6: 0x6c970420, 0x1ddb7: 0x6cc7d420,\n\t0x1ddb8: 0x6cb18620, 0x1ddb9: 0x6cdf4c20, 0x1ddba: 0x6c62a020, 0x1ddbb: 0x6d2a5a20,\n\t0x1ddbc: 0x6c18f020, 0x1ddbd: 0x6d319a20, 0x1ddbe: 0x6c37a820, 0x1ddbf: 0x6ca65420,\n\t// Block 0x777, offset 0x1ddc0\n\t0x1ddc0: 0x6d1ca820, 0x1ddc1: 0x6c432620, 0x1ddc2: 0x6c23b820, 0x1ddc3: 0x6cff2420,\n\t0x1ddc4: 0x6cb66020, 0x1ddc5: 0x6c382820, 0x1ddc6: 0x6c65e420, 0x1ddc7: 0x6d073e20,\n\t0x1ddc8: 0x6c7ca620, 0x1ddc9: 0x6c60c620, 0x1ddca: 0x6c0b5820, 0x1ddcb: 0x6c2e4620,\n\t0x1ddcc: 0x6c9d9420, 0x1ddcd: 0x6c7fc420, 0x1ddce: 0x6c6d6420, 0x1ddcf: 0x6c124e20,\n\t0x1ddd0: 0x6c9ea020, 0x1ddd1: 0x6cbf6e20, 0x1ddd2: 0x6cbcec20, 0x1ddd3: 0x6cfc3420,\n\t0x1ddd4: 0x6c8a5420, 0x1ddd5: 0x6cab9820, 0x1ddd6: 0x6cfbb620, 0x1ddd7: 0x6cdb4020,\n\t0x1ddd8: 0x6c936a20, 0x1ddd9: 0x6d18f020, 0x1ddda: 0x6d075220, 0x1dddb: 0x6d014c20,\n\t0x1dddc: 0x6c847220, 0x1dddd: 0x6d18f220, 0x1ddde: 0x6c7e6620, 0x1dddf: 0x6c82f020,\n\t0x1dde0: 0x6c69ca20, 0x1dde1: 0x6c2b9a20, 0x1dde2: 0x6d355a20, 0x1dde3: 0x6c06bc20,\n\t0x1dde4: 0x6ce2c220, 0x1dde5: 0x6d123620, 0x1dde6: 0x6ca17c20, 0x1dde7: 0x6c595e20,\n\t0x1dde8: 0x6c0c3e20, 0x1dde9: 0x6c386820, 0x1ddea: 0x6cda3220, 0x1ddeb: 0x6ce02e20,\n\t0x1ddec: 0x6ce99a20, 0x1dded: 0x6cbf8020, 0x1ddee: 0x6cbc0820, 0x1ddef: 0x6cf0f620,\n\t0x1ddf0: 0x6c8ebc20, 0x1ddf1: 0x6c5c5c20, 0x1ddf2: 0x6cabac20, 0x1ddf3: 0x6c432c20,\n\t0x1ddf4: 0x6d286220, 0x1ddf5: 0x6c068a20, 0x1ddf6: 0x6c870a20, 0x1ddf7: 0x6cd57e20,\n\t0x1ddf8: 0x6c1ebe20, 0x1ddf9: 0x6c007e20, 0x1ddfa: 0x6c8c7a20, 0x1ddfb: 0x6d2a6020,\n\t0x1ddfc: 0x6d07e620, 0x1ddfd: 0x6cbe2820, 0x1ddfe: 0x6c7f7220, 0x1ddff: 0x6c5e3220,\n\t// Block 0x778, offset 0x1de00\n\t0x1de00: 0x6cebb620, 0x1de01: 0x6cf54420, 0x1de02: 0x6cc8b820, 0x1de03: 0x6cc8ba20,\n\t0x1de04: 0x6cb68420, 0x1de05: 0x6c528020, 0x1de06: 0x6c917820, 0x1de07: 0x6cda6420,\n\t0x1de08: 0x6ce9d020, 0x1de09: 0x6c9b8a20, 0x1de0a: 0x6d287020, 0x1de0b: 0x6cb2dc20,\n\t0x1de0c: 0x6d22b020, 0x1de0d: 0x6d09c220, 0x1de0e: 0x6c62be20, 0x1de0f: 0x6c6eec20,\n\t0x1de10: 0x6d07e820, 0x1de11: 0x6ca09020, 0x1de12: 0x6cc0c220, 0x1de13: 0x6cda6620,\n\t0x1de14: 0x6c6eee20, 0x1de15: 0x6c3d0420, 0x1de16: 0x6ca8a620, 0x1de17: 0x6c0ffe20,\n\t0x1de18: 0x6cc4ea20, 0x1de19: 0x6d193020, 0x1de1a: 0x6cfc4a20, 0x1de1b: 0x6d21e420,\n\t0x1de1c: 0x6c718820, 0x1de1d: 0x6c892e20, 0x1de1e: 0x6c88dc20, 0x1de1f: 0x6d1b1e20,\n\t0x1de20: 0x6cbb2e20, 0x1de21: 0x6d1c2420, 0x1de22: 0x6c8fcc20, 0x1de23: 0x6ce82220,\n\t0x1de24: 0x6cf05420, 0x1de25: 0x6d270c20, 0x1de26: 0x6c8d9420, 0x1de27: 0x6cc1f020,\n\t0x1de28: 0x6d117020, 0x1de29: 0x6c38e620, 0x1de2a: 0x6c9a3c20, 0x1de2b: 0x6c4f3020,\n\t0x1de2c: 0x6c7c5620, 0x1de2d: 0x6c7ff020, 0x1de2e: 0x6c62d220, 0x1de2f: 0x6c29a220,\n\t0x1de30: 0x6c981820, 0x1de31: 0x6c836220, 0x1de32: 0x6c828820, 0x1de33: 0x6c5b0a20,\n\t0x1de34: 0x6c3c8220, 0x1de35: 0x6d342820, 0x1de36: 0x6cf10e20, 0x1de37: 0x6c7cb620,\n\t0x1de38: 0x6d2ea220, 0x1de39: 0x6c580620, 0x1de3a: 0x6c84ac20, 0x1de3b: 0x6c62e220,\n\t0x1de3c: 0x6c9cb620, 0x1de3d: 0x6c830a20, 0x1de3e: 0x6c582220, 0x1de3f: 0x6c957a20,\n\t// Block 0x779, offset 0x1de40\n\t0x1de40: 0x6c5fa020, 0x1de41: 0x6c7cbe20, 0x1de42: 0x6c934020, 0x1de43: 0x6c655020,\n\t0x1de44: 0x6cc9ba20, 0x1de45: 0x6ce2e620, 0x1de46: 0x6c829e20, 0x1de47: 0x6cc36820,\n\t0x1de48: 0x6cff6020, 0x1de49: 0x6d197420, 0x1de4a: 0x6c947220, 0x1de4b: 0x6c9ae620,\n\t0x1de4c: 0x6c0cd420, 0x1de4d: 0x6c549420, 0x1de4e: 0x6c561220, 0x1de4f: 0x6c91b820,\n\t0x1de50: 0x6caaa220, 0x1de51: 0x6c93d420, 0x1de52: 0x6cd7da20, 0x1de53: 0x6cfeaa20,\n\t0x1de54: 0x6cb98220, 0x1de55: 0x6c1f3620, 0x1de56: 0x6c54c620, 0x1de57: 0x6d058a20,\n\t0x1de58: 0x6c25d820, 0x1de59: 0x6c3e6e20, 0x1de5a: 0x6d058c20, 0x1de5b: 0x6d05a820,\n\t0x1de5c: 0x6c91c420, 0x1de5d: 0x6c562420, 0x1de5e: 0x6d216620, 0x1de5f: 0x6c504a20,\n\t0x1de60: 0x6c686020, 0x1de61: 0x6c725820, 0x1de62: 0x6c4c8620, 0x1de63: 0x6c066820,\n\t0x1de64: 0x6d0cd220, 0x1de65: 0x6d2e8220, 0x1de66: 0x6d2e8420, 0x1de67: 0x6c7c4820,\n\t0x1de68: 0x6c0d5620, 0x1de69: 0x6cf90620, 0x1de6a: 0x6cd63220, 0x1de6b: 0x6c1d0820,\n\t0x1de6c: 0x6cc00220, 0x1de6d: 0x6c2db220, 0x1de6e: 0x6c612620, 0x1de6f: 0x6cc00c20,\n\t0x1de70: 0x6c2f5820, 0x1de71: 0x6cd19a20, 0x1de72: 0x6cf95020, 0x1de73: 0x6c740820,\n\t0x1de74: 0x6d302a20, 0x1de75: 0x6ccf0a20, 0x1de76: 0x6d208020, 0x1de77: 0x6c4dea20,\n\t0x1de78: 0x6d3efe20, 0x1de79: 0x6c532220, 0x1de7a: 0x6c5a9a20, 0x1de7b: 0x6c9b0c20,\n\t0x1de7c: 0x6c447e20, 0x1de7d: 0x6cdbb020, 0x1de7e: 0x6cf95a20, 0x1de7f: 0x6c149420,\n\t// Block 0x77a, offset 0x1de80\n\t0x1de80: 0x6cd25620, 0x1de81: 0x6d15d620, 0x1de82: 0x6c969620, 0x1de83: 0x6cfe2020,\n\t0x1de84: 0x6c399420, 0x1de85: 0x6c360220, 0x1de86: 0x6c034020, 0x1de87: 0x6c1b9620,\n\t0x1de88: 0x6cb8ca20, 0x1de89: 0x6cf18e20, 0x1de8a: 0x6cf19020, 0x1de8b: 0x6cc8c620,\n\t0x1de8c: 0x6c056620, 0x1de8d: 0x6cafd220, 0x1de8e: 0x6d269a20, 0x1de8f: 0x6d269c20,\n\t0x1de90: 0x6c756a20, 0x1de91: 0x6cb5ae20, 0x1de92: 0x6ce73c20, 0x1de93: 0x6d1ad620,\n\t0x1de94: 0x6cb5b020, 0x1de95: 0x6c119020, 0x1de96: 0x6d255420, 0x1de97: 0x6c741a20,\n\t0x1de98: 0x6c5b3020, 0x1de99: 0x6cbd6c20, 0x1de9a: 0x6cb5b220, 0x1de9b: 0x6d382220,\n\t0x1de9c: 0x6d0b2220, 0x1de9d: 0x6c4fc220, 0x1de9e: 0x6ca27e20, 0x1de9f: 0x6cede420,\n\t0x1dea0: 0x6c3b6820, 0x1dea1: 0x6c3b6a20, 0x1dea2: 0x6c4f6e20, 0x1dea3: 0x6c462e20,\n\t0x1dea4: 0x6d2a4620, 0x1dea5: 0x6c3fd420, 0x1dea6: 0x6cc47020, 0x1dea7: 0x6c6bda20,\n\t0x1dea8: 0x6c3e4220, 0x1dea9: 0x6c1aa420, 0x1deaa: 0x6c30ea20, 0x1deab: 0x6c064820,\n\t0x1deac: 0x6cfc0620, 0x1dead: 0x6ca5de20, 0x1deae: 0x6ce27820, 0x1deaf: 0x6cbfac20,\n\t0x1deb0: 0x6d1f2c20, 0x1deb1: 0x6d2cc220, 0x1deb2: 0x6cb2a220, 0x1deb3: 0x6c1b1e20,\n\t0x1deb4: 0x6d204220, 0x1deb5: 0x6c511e20, 0x1deb6: 0x6c4da020, 0x1deb7: 0x6c723420,\n\t0x1deb8: 0x6c85fe20, 0x1deb9: 0x6c3fe620, 0x1deba: 0x6cc47620, 0x1debb: 0x6d2c2a20,\n\t0x1debc: 0x6c468220, 0x1debd: 0x6cafe220, 0x1debe: 0x6cafe420, 0x1debf: 0x6cfb5220,\n\t// Block 0x77b, offset 0x1dec0\n\t0x1dec0: 0x6d3af020, 0x1dec1: 0x6c2dc820, 0x1dec2: 0x6c0ce820, 0x1dec3: 0x6c0de220,\n\t0x1dec4: 0x6c470e20, 0x1dec5: 0x6d2d7020, 0x1dec6: 0x6cc10620, 0x1dec7: 0x6ccf1220,\n\t0x1dec8: 0x6ce5fa20, 0x1dec9: 0x6c8d0020, 0x1deca: 0x6c478420, 0x1decb: 0x6c288420,\n\t0x1decc: 0x6c478620, 0x1decd: 0x6d1c6a20, 0x1dece: 0x6c860020, 0x1decf: 0x6c196a20,\n\t0x1ded0: 0x6cc11220, 0x1ded1: 0x6ca1d620, 0x1ded2: 0x6c43f620, 0x1ded3: 0x6c22ca20,\n\t0x1ded4: 0x6c5b3820, 0x1ded5: 0x6c5b3a20, 0x1ded6: 0x6c986a20, 0x1ded7: 0x6c3ffc20,\n\t0x1ded8: 0x6d0fbc20, 0x1ded9: 0x6cebde20, 0x1deda: 0x6c8b0e20, 0x1dedb: 0x6d39ac20,\n\t0x1dedc: 0x6d13f820, 0x1dedd: 0x6cfb6220, 0x1dede: 0x6c7e0020, 0x1dedf: 0x6c684e20,\n\t0x1dee0: 0x6c861a20, 0x1dee1: 0x6d17be20, 0x1dee2: 0x6cb2b020, 0x1dee3: 0x6cb4fc20,\n\t0x1dee4: 0x6c4cfe20, 0x1dee5: 0x6ccf1a20, 0x1dee6: 0x6d14fc20, 0x1dee7: 0x6cee2420,\n\t0x1dee8: 0x6ca11c20, 0x1dee9: 0x6cbf3220, 0x1deea: 0x6cbcc420, 0x1deeb: 0x6c4b0420,\n\t0x1deec: 0x6cbf3420, 0x1deed: 0x6d364020, 0x1deee: 0x6c976420, 0x1deef: 0x6c81f820,\n\t0x1def0: 0x6d305c20, 0x1def1: 0x6c63c220, 0x1def2: 0x6ca4ae20, 0x1def3: 0x6cd7ee20,\n\t0x1def4: 0x6cb5f020, 0x1def5: 0x6d038420, 0x1def6: 0x6c6bee20, 0x1def7: 0x6cc07c20,\n\t0x1def8: 0x6cce7a20, 0x1def9: 0x6d1e4c20, 0x1defa: 0x6c63ce20, 0x1defb: 0x6cea0220,\n\t0x1defc: 0x6c17de20, 0x1defd: 0x6c044e20, 0x1defe: 0x6c357620, 0x1deff: 0x6c4ed420,\n\t// Block 0x77c, offset 0x1df00\n\t0x1df00: 0x6cd56420, 0x1df01: 0x6d081620, 0x1df02: 0x6c3c5820, 0x1df03: 0x6cd0b820,\n\t0x1df04: 0x6cd0ba20, 0x1df05: 0x6c3f7020, 0x1df06: 0x6cfce020, 0x1df07: 0x6d2ffe20,\n\t0x1df08: 0x6cf3da20, 0x1df09: 0x6c3ea820, 0x1df0a: 0x6c83f820, 0x1df0b: 0x6c80d420,\n\t0x1df0c: 0x6c09de20, 0x1df0d: 0x6c1e9220, 0x1df0e: 0x6d24fc20, 0x1df0f: 0x6d1fd820,\n\t0x1df10: 0x6c6af820, 0x1df11: 0x6c288e20, 0x1df12: 0x6d0ca220, 0x1df13: 0x6ce67a20,\n\t0x1df14: 0x6c2d6820, 0x1df15: 0x6cea0420, 0x1df16: 0x6c5b3c20, 0x1df17: 0x6cf29820,\n\t0x1df18: 0x6d340420, 0x1df19: 0x6cd92c20, 0x1df1a: 0x6c3a1420, 0x1df1b: 0x6c70b620,\n\t0x1df1c: 0x6c9d7020, 0x1df1d: 0x6cb62c20, 0x1df1e: 0x6cb62e20, 0x1df1f: 0x6d23a820,\n\t0x1df20: 0x6c75da20, 0x1df21: 0x6c7e8a20, 0x1df22: 0x6c9be220, 0x1df23: 0x6cbac420,\n\t0x1df24: 0x6cd80820, 0x1df25: 0x6cf68020, 0x1df26: 0x6c950820, 0x1df27: 0x6c865420,\n\t0x1df28: 0x6c2ed620, 0x1df29: 0x6ce59a20, 0x1df2a: 0x6ce23220, 0x1df2b: 0x6c7d7a20,\n\t0x1df2c: 0x6c4e2620, 0x1df2d: 0x6c4eec20, 0x1df2e: 0x6d23aa20, 0x1df2f: 0x6c058420,\n\t0x1df30: 0x6c3a4020, 0x1df31: 0x6cb00c20, 0x1df32: 0x6ceea820, 0x1df33: 0x6c339e20,\n\t0x1df34: 0x6d183820, 0x1df35: 0x6d250c20, 0x1df36: 0x6cddd020, 0x1df37: 0x6cc30c20,\n\t0x1df38: 0x6cba1a20, 0x1df39: 0x6cc8d820, 0x1df3a: 0x6ca5fc20, 0x1df3b: 0x6cbe5220,\n\t0x1df3c: 0x6cf0b420, 0x1df3d: 0x6c899e20, 0x1df3e: 0x6c4cc820, 0x1df3f: 0x6cec9620,\n\t// Block 0x77d, offset 0x1df40\n\t0x1df40: 0x6c301020, 0x1df41: 0x6c367220, 0x1df42: 0x6c04d020, 0x1df43: 0x6c2c8620,\n\t0x1df44: 0x6cee3420, 0x1df45: 0x6c11a020, 0x1df46: 0x6d102820, 0x1df47: 0x6d1d6820,\n\t0x1df48: 0x6c4c3220, 0x1df49: 0x6c150e20, 0x1df4a: 0x6c2fb420, 0x1df4b: 0x6c7e8c20,\n\t0x1df4c: 0x6c782c20, 0x1df4d: 0x6c6afa20, 0x1df4e: 0x6d005020, 0x1df4f: 0x6ce68e20,\n\t0x1df50: 0x6c99b220, 0x1df51: 0x6d05de20, 0x1df52: 0x6c9dd020, 0x1df53: 0x6d219020,\n\t0x1df54: 0x6c6a3220, 0x1df55: 0x6cd28020, 0x1df56: 0x6d07c820, 0x1df57: 0x6c59f620,\n\t0x1df58: 0x6d0dce20, 0x1df59: 0x6c0b0420, 0x1df5a: 0x6cc75e20, 0x1df5b: 0x6ceeb220,\n\t0x1df5c: 0x6c403e20, 0x1df5d: 0x6d25a020, 0x1df5e: 0x6c9aaa20, 0x1df5f: 0x6cf14620,\n\t0x1df60: 0x6c3ee220, 0x1df61: 0x6cc7c220, 0x1df62: 0x6d00e220, 0x1df63: 0x6d1f6a20,\n\t0x1df64: 0x6cc09020, 0x1df65: 0x6c990020, 0x1df66: 0x6cf97820, 0x1df67: 0x6d1be020,\n\t0x1df68: 0x6cd1f020, 0x1df69: 0x6c1d2020, 0x1df6a: 0x6ce0ce20, 0x1df6b: 0x6d39be20,\n\t0x1df6c: 0x6d3fba20, 0x1df6d: 0x6ce36c20, 0x1df6e: 0x6c404020, 0x1df6f: 0x6d25a220,\n\t0x1df70: 0x6c7c9820, 0x1df71: 0x6c9b3e20, 0x1df72: 0x6c7e9620, 0x1df73: 0x6c31b220,\n\t0x1df74: 0x6c559620, 0x1df75: 0x6cbfc220, 0x1df76: 0x6c2ee020, 0x1df77: 0x6c866420,\n\t0x1df78: 0x6cf29c20, 0x1df79: 0x6d276220, 0x1df7a: 0x6cc24e20, 0x1df7b: 0x6ca43a20,\n\t0x1df7c: 0x6c90b620, 0x1df7d: 0x6c211220, 0x1df7e: 0x6cc6a820, 0x1df7f: 0x6d1c9220,\n\t// Block 0x77e, offset 0x1df80\n\t0x1df80: 0x6c677620, 0x1df81: 0x6c051420, 0x1df82: 0x6c80d820, 0x1df83: 0x6cad0e20,\n\t0x1df84: 0x6cd82c20, 0x1df85: 0x6cf6da20, 0x1df86: 0x6c22de20, 0x1df87: 0x6cf6dc20,\n\t0x1df88: 0x6d25b020, 0x1df89: 0x6cf23c20, 0x1df8a: 0x6c885c20, 0x1df8b: 0x6cd9dc20,\n\t0x1df8c: 0x6c04a020, 0x1df8d: 0x6cc6b220, 0x1df8e: 0x6cc6b420, 0x1df8f: 0x6c60b220,\n\t0x1df90: 0x6cf38220, 0x1df91: 0x6d055020, 0x1df92: 0x6c4f0e20, 0x1df93: 0x6cbdac20,\n\t0x1df94: 0x6d156020, 0x1df95: 0x6c089020, 0x1df96: 0x6c575420, 0x1df97: 0x6ce13c20,\n\t0x1df98: 0x6d161420, 0x1df99: 0x6c327c20, 0x1df9a: 0x6ca3d620, 0x1df9b: 0x6c517820,\n\t0x1df9c: 0x6c55c020, 0x1df9d: 0x6c4a8a20, 0x1df9e: 0x6c96a420, 0x1df9f: 0x6ca01a20,\n\t0x1dfa0: 0x6d18b620, 0x1dfa1: 0x6cf1b020, 0x1dfa2: 0x6d1ca020, 0x1dfa3: 0x6ce28420,\n\t0x1dfa4: 0x6d37ca20, 0x1dfa5: 0x6c123c20, 0x1dfa6: 0x6ccb1020, 0x1dfa7: 0x6cb81a20,\n\t0x1dfa8: 0x6c97c820, 0x1dfa9: 0x6ce5e620, 0x1dfaa: 0x6cce2020, 0x1dfab: 0x6cd3e620,\n\t0x1dfac: 0x6c129e20, 0x1dfad: 0x6c1ad620, 0x1dfae: 0x6c2ca620, 0x1dfaf: 0x6c027620,\n\t0x1dfb0: 0x6c92fa20, 0x1dfb1: 0x6cf0e820, 0x1dfb2: 0x6d371220, 0x1dfb3: 0x6ce14220,\n\t0x1dfb4: 0x6c18ea20, 0x1dfb5: 0x6cb16a20, 0x1dfb6: 0x6cc1c420, 0x1dfb7: 0x6cb02420,\n\t0x1dfb8: 0x6d21be20, 0x1dfb9: 0x6c66e420, 0x1dfba: 0x6c955820, 0x1dfbb: 0x6c90c220,\n\t0x1dfbc: 0x6cbdea20, 0x1dfbd: 0x6d37ce20, 0x1dfbe: 0x6d1b1420, 0x1dfbf: 0x6c678820,\n\t// Block 0x77f, offset 0x1dfc0\n\t0x1dfc0: 0x6cd67620, 0x1dfc1: 0x6cf1b820, 0x1dfc2: 0x6cff2620, 0x1dfc3: 0x6ceda020,\n\t0x1dfc4: 0x6d30a220, 0x1dfc5: 0x6d310820, 0x1dfc6: 0x6c96f820, 0x1dfc7: 0x6c967a20,\n\t0x1dfc8: 0x6c4c4820, 0x1dfc9: 0x6c8eaa20, 0x1dfca: 0x6c990a20, 0x1dfcb: 0x6cf6f220,\n\t0x1dfcc: 0x6c236a20, 0x1dfcd: 0x6c846220, 0x1dfce: 0x6c97d020, 0x1dfcf: 0x6cff2820,\n\t0x1dfd0: 0x6c173020, 0x1dfd1: 0x6d2ee220, 0x1dfd2: 0x6c98a020, 0x1dfd3: 0x6cfe5e20,\n\t0x1dfd4: 0x6ca17e20, 0x1dfd5: 0x6d418220, 0x1dfd6: 0x6cd83c20, 0x1dfd7: 0x6cbfd420,\n\t0x1dfd8: 0x6ce28820, 0x1dfd9: 0x6d34ac20, 0x1dfda: 0x6caed820, 0x1dfdb: 0x6caeda20,\n\t0x1dfdc: 0x6c695620, 0x1dfdd: 0x6cc1dc20, 0x1dfde: 0x6c0cc220, 0x1dfdf: 0x6c8a3c20,\n\t0x1dfe0: 0x6cac8220, 0x1dfe1: 0x6c4b2220, 0x1dfe2: 0x6cf81c20, 0x1dfe3: 0x6c615a20,\n\t0x1dfe4: 0x6d3b9620, 0x1dfe5: 0x6c5a0e20, 0x1dfe6: 0x6c3a4220, 0x1dfe7: 0x6c818420,\n\t0x1dfe8: 0x6c74de20, 0x1dfe9: 0x6c74e020, 0x1dfea: 0x6c5c7220, 0x1dfeb: 0x6d1aa220,\n\t0x1dfec: 0x6c153a20, 0x1dfed: 0x6c689c20, 0x1dfee: 0x6ccdcc20, 0x1dfef: 0x6ca4ca20,\n\t0x1dff0: 0x6cff3e20, 0x1dff1: 0x6cf40020, 0x1dff2: 0x6c1d2620, 0x1dff3: 0x6d0a5020,\n\t0x1dff4: 0x6cd83e20, 0x1dff5: 0x6c1f9c20, 0x1dff6: 0x6c19a020, 0x1dff7: 0x6c291e20,\n\t0x1dff8: 0x6c854420, 0x1dff9: 0x6d026620, 0x1dffa: 0x6ccdd420, 0x1dffb: 0x6d162420,\n\t0x1dffc: 0x6c6e3a20, 0x1dffd: 0x6c26c820, 0x1dffe: 0x6c154420, 0x1dfff: 0x6cb80020,\n\t// Block 0x780, offset 0x1e000\n\t0x1e000: 0x6c221820, 0x1e001: 0x6cfe0220, 0x1e002: 0x6ccf7e20, 0x1e003: 0x6c95c820,\n\t0x1e004: 0x6cbdb620, 0x1e005: 0x6d1d6e20, 0x1e006: 0x6c14a220, 0x1e007: 0x6c86da20,\n\t0x1e008: 0x6d2b6a20, 0x1e009: 0x6d07ea20, 0x1e00a: 0x6c888820, 0x1e00b: 0x6d3a3220,\n\t0x1e00c: 0x6d2b1e20, 0x1e00d: 0x6d005a20, 0x1e00e: 0x6c98a420, 0x1e00f: 0x6d026820,\n\t0x1e010: 0x6cb69a20, 0x1e011: 0x6cc6e220, 0x1e012: 0x6c661a20, 0x1e013: 0x6c9bf220,\n\t0x1e014: 0x6c500220, 0x1e015: 0x6cc7e420, 0x1e016: 0x6c5e3420, 0x1e017: 0x6d3dda20,\n\t0x1e018: 0x6c6b7820, 0x1e019: 0x6cb22420, 0x1e01a: 0x6c50aa20, 0x1e01b: 0x6c9f0e20,\n\t0x1e01c: 0x6c38ee20, 0x1e01d: 0x6c828a20, 0x1e01e: 0x6c6b7220, 0x1e01f: 0x6c7ec420,\n\t0x1e020: 0x6c9fda20, 0x1e021: 0x6c84ae20, 0x1e022: 0x6c219020, 0x1e023: 0x6c873220,\n\t0x1e024: 0x6cbfe620, 0x1e025: 0x6ca8bc20, 0x1e026: 0x6c919c20, 0x1e027: 0x6c328c20,\n\t0x1e028: 0x6cff5620, 0x1e029: 0x6d39ee20, 0x1e02a: 0x6c8ffc20, 0x1e02b: 0x6c875620,\n\t0x1e02c: 0x6c8ffe20, 0x1e02d: 0x6c3c8620, 0x1e02e: 0x6d127220, 0x1e02f: 0x6c086620,\n\t0x1e030: 0x6ca46020, 0x1e031: 0x6c47f220, 0x1e032: 0x6c730e20, 0x1e033: 0x6d1c4220,\n\t0x1e034: 0x6cd63820, 0x1e035: 0x6cf75820, 0x1e036: 0x6c11c820, 0x1e037: 0x6cc22420,\n\t0x1e038: 0x6cc33c20, 0x1e039: 0x6c329020, 0x1e03a: 0x6c11ca20, 0x1e03b: 0x6c97ae20,\n\t0x1e03c: 0x6cc22e20, 0x1e03d: 0x6c6b8e20, 0x1e03e: 0x6d3a4e20, 0x1e03f: 0x6d3d1820,\n\t// Block 0x781, offset 0x1e040\n\t0x1e040: 0x6d093820, 0x1e041: 0x6c598620, 0x1e042: 0x6ca9a420, 0x1e043: 0x6cadba20,\n\t0x1e044: 0x6caa8420, 0x1e045: 0x6d033020, 0x1e046: 0x6d383220, 0x1e047: 0x6c973420,\n\t0x1e048: 0x6c37ce20, 0x1e049: 0x6c761220, 0x1e04a: 0x6c9f1020, 0x1e04b: 0x6cf93c20,\n\t0x1e04c: 0x6d03ba20, 0x1e04d: 0x6d0d5c20, 0x1e04e: 0x6c770620, 0x1e04f: 0x6d260e20,\n\t0x1e050: 0x6cc28820, 0x1e051: 0x6c8d0220, 0x1e052: 0x6d089020, 0x1e053: 0x6cd5ca20,\n\t0x1e054: 0x6cfb5420, 0x1e055: 0x6ce7cc20, 0x1e056: 0x6cfe3820, 0x1e057: 0x6c6a1e20,\n\t0x1e058: 0x6cfb7020, 0x1e059: 0x6d0b3220, 0x1e05a: 0x6c559a20, 0x1e05b: 0x6cf0ca20,\n\t0x1e05c: 0x6c2a2c20, 0x1e05d: 0x6c1cdc20, 0x1e05e: 0x6cf0d420, 0x1e05f: 0x6c2a3620,\n\t0x1e060: 0x6d3cd820, 0x1e061: 0x6c527020, 0x1e062: 0x6cc22620, 0x1e063: 0x6d13be20,\n\t0x1e064: 0x6d198c20, 0x1e065: 0x6c103220, 0x1e066: 0x6c41ce20, 0x1e067: 0x6d20cc20,\n\t0x1e068: 0x6c0c7020, 0x1e069: 0x6c141820, 0x1e06a: 0x6d147a20, 0x1e06b: 0x6cccc820,\n\t0x1e06c: 0x6c191e20, 0x1e06d: 0x6c3d5620, 0x1e06e: 0x6c4bbc20, 0x1e06f: 0x6c3b1e20,\n\t0x1e070: 0x6cd65220, 0x1e071: 0x6c6a8820, 0x1e072: 0x6ca32020, 0x1e073: 0x6d37aa20,\n\t0x1e074: 0x6c282e20, 0x1e075: 0x6d170c20, 0x1e076: 0x6d381e20, 0x1e077: 0x6d37b220,\n\t0x1e078: 0x6c6bd220, 0x1e079: 0x6d350820, 0x1e07a: 0x6d009820, 0x1e07b: 0x6cc46820,\n\t0x1e07c: 0x6d33ba20, 0x1e07d: 0x6cc5da20, 0x1e07e: 0x6cbd2620, 0x1e07f: 0x6c6c3820,\n\t// Block 0x782, offset 0x1e080\n\t0x1e080: 0x6c756220, 0x1e081: 0x6d255820, 0x1e082: 0x6c9a8620, 0x1e083: 0x6c149620,\n\t0x1e084: 0x6c02a220, 0x1e085: 0x6ca79820, 0x1e086: 0x6c5a9e20, 0x1e087: 0x6cc46a20,\n\t0x1e088: 0x6c635620, 0x1e089: 0x6ceb1020, 0x1e08a: 0x6c8e0e20, 0x1e08b: 0x6c276620,\n\t0x1e08c: 0x6c064a20, 0x1e08d: 0x6cad5620, 0x1e08e: 0x6d120020, 0x1e08f: 0x6d429420,\n\t0x1e090: 0x6c097020, 0x1e091: 0x6cced220, 0x1e092: 0x6ce05820, 0x1e093: 0x6c723620,\n\t0x1e094: 0x6c51c220, 0x1e095: 0x6d090220, 0x1e096: 0x6d053820, 0x1e097: 0x6d31d220,\n\t0x1e098: 0x6d14da20, 0x1e099: 0x6cabea20, 0x1e09a: 0x6c0e6420, 0x1e09b: 0x6c2b2220,\n\t0x1e09c: 0x6cec2a20, 0x1e09d: 0x6c3fd620, 0x1e09e: 0x6c4bc420, 0x1e09f: 0x6d35ca20,\n\t0x1e0a0: 0x6d360a20, 0x1e0a1: 0x6cc47220, 0x1e0a2: 0x6cacb420, 0x1e0a3: 0x6d174620,\n\t0x1e0a4: 0x6c997420, 0x1e0a5: 0x6ceaba20, 0x1e0a6: 0x6ca32e20, 0x1e0a7: 0x6c464420,\n\t0x1e0a8: 0x6d088220, 0x1e0a9: 0x6d304220, 0x1e0aa: 0x6cc0f420, 0x1e0ab: 0x6c070420,\n\t0x1e0ac: 0x6c4bc620, 0x1e0ad: 0x6cf77c20, 0x1e0ae: 0x6ca6ea20, 0x1e0af: 0x6c0ee020,\n\t0x1e0b0: 0x6c0e7220, 0x1e0b1: 0x6c40ac20, 0x1e0b2: 0x6c1bac20, 0x1e0b3: 0x6c1ba220,\n\t0x1e0b4: 0x6c7a9420, 0x1e0b5: 0x6cc5ea20, 0x1e0b6: 0x6c67e220, 0x1e0b7: 0x6c63ba20,\n\t0x1e0b8: 0x6c667e20, 0x1e0b9: 0x6c0efa20, 0x1e0ba: 0x6c6aba20, 0x1e0bb: 0x6c375420,\n\t0x1e0bc: 0x6c438620, 0x1e0bd: 0x6cc7a620, 0x1e0be: 0x6d39a020, 0x1e0bf: 0x6c4a6020,\n\t// Block 0x783, offset 0x1e0c0\n\t0x1e0c0: 0x6d19d020, 0x1e0c1: 0x6c111020, 0x1e0c2: 0x6c8b1020, 0x1e0c3: 0x6c762220,\n\t0x1e0c4: 0x6d044420, 0x1e0c5: 0x6d3c1c20, 0x1e0c6: 0x6c28fc20, 0x1e0c7: 0x6d05aa20,\n\t0x1e0c8: 0x6c7d5e20, 0x1e0c9: 0x6c791a20, 0x1e0ca: 0x6ca79e20, 0x1e0cb: 0x6cd5dc20,\n\t0x1e0cc: 0x6c63c420, 0x1e0cd: 0x6c7db020, 0x1e0ce: 0x6c1a1220, 0x1e0cf: 0x6c852220,\n\t0x1e0d0: 0x6c72f620, 0x1e0d1: 0x6ccff420, 0x1e0d2: 0x6cb3da20, 0x1e0d3: 0x6c43fa20,\n\t0x1e0d4: 0x6d180820, 0x1e0d5: 0x6d235620, 0x1e0d6: 0x6d31da20, 0x1e0d7: 0x6c8e6020,\n\t0x1e0d8: 0x6cc07e20, 0x1e0d9: 0x6cc44820, 0x1e0da: 0x6c622620, 0x1e0db: 0x6d180a20,\n\t0x1e0dc: 0x6c103e20, 0x1e0dd: 0x6d3c1e20, 0x1e0de: 0x6cd72420, 0x1e0df: 0x6ccc0420,\n\t0x1e0e0: 0x6cc44e20, 0x1e0e1: 0x6c87e220, 0x1e0e2: 0x6c880620, 0x1e0e3: 0x6c88c020,\n\t0x1e0e4: 0x6c7a9e20, 0x1e0e5: 0x6c659e20, 0x1e0e6: 0x6c3d1820, 0x1e0e7: 0x6c14d020,\n\t0x1e0e8: 0x6c09e020, 0x1e0e9: 0x6c7d7020, 0x1e0ea: 0x6ce22e20, 0x1e0eb: 0x6d262a20,\n\t0x1e0ec: 0x6c8d2220, 0x1e0ed: 0x6c1bb420, 0x1e0ee: 0x6c167420, 0x1e0ef: 0x6c1dc420,\n\t0x1e0f0: 0x6c343220, 0x1e0f1: 0x6c0c7420, 0x1e0f2: 0x6c899620, 0x1e0f3: 0x6cce5c20,\n\t0x1e0f4: 0x6cade020, 0x1e0f5: 0x6cade220, 0x1e0f6: 0x6c3a0e20, 0x1e0f7: 0x6d24fe20,\n\t0x1e0f8: 0x6c95b820, 0x1e0f9: 0x6c4cca20, 0x1e0fa: 0x6d0daa20, 0x1e0fb: 0x6c31aa20,\n\t0x1e0fc: 0x6ce40420, 0x1e0fd: 0x6d369a20, 0x1e0fe: 0x6c70ae20, 0x1e0ff: 0x6d15fa20,\n\t// Block 0x784, offset 0x1e100\n\t0x1e100: 0x6c622820, 0x1e101: 0x6d346c20, 0x1e102: 0x6c48ba20, 0x1e103: 0x6c791c20,\n\t0x1e104: 0x6cb81620, 0x1e105: 0x6ce40a20, 0x1e106: 0x6ce35820, 0x1e107: 0x6c402420,\n\t0x1e108: 0x6c1d1a20, 0x1e109: 0x6d01f020, 0x1e10a: 0x6c0b4820, 0x1e10b: 0x6c2ed820,\n\t0x1e10c: 0x6c7d7c20, 0x1e10d: 0x6c32a020, 0x1e10e: 0x6d054a20, 0x1e10f: 0x6d054c20,\n\t0x1e110: 0x6c51d620, 0x1e111: 0x6d262c20, 0x1e112: 0x6c05ba20, 0x1e113: 0x6c060620,\n\t0x1e114: 0x6c402620, 0x1e115: 0x6d217c20, 0x1e116: 0x6ce98c20, 0x1e117: 0x6d0dc420,\n\t0x1e118: 0x6c5adc20, 0x1e119: 0x6c074420, 0x1e11a: 0x6c1ee220, 0x1e11b: 0x6c93aa20,\n\t0x1e11c: 0x6cadaa20, 0x1e11d: 0x6c27ee20, 0x1e11e: 0x6d27f420, 0x1e11f: 0x6cddf820,\n\t0x1e120: 0x6c465c20, 0x1e121: 0x6c265c20, 0x1e122: 0x6c57ee20, 0x1e123: 0x6cc6aa20,\n\t0x1e124: 0x6d262e20, 0x1e125: 0x6cc82620, 0x1e126: 0x6ca3d420, 0x1e127: 0x6c6f3220,\n\t0x1e128: 0x6cdd8620, 0x1e129: 0x6c04a220, 0x1e12a: 0x6cea0a20, 0x1e12b: 0x6c1bbe20,\n\t0x1e12c: 0x6cca8a20, 0x1e12d: 0x6ca7ae20, 0x1e12e: 0x6d1bec20, 0x1e12f: 0x6c6bfa20,\n\t0x1e130: 0x6cb91e20, 0x1e131: 0x6c57f420, 0x1e132: 0x6c7aa820, 0x1e133: 0x6c884220,\n\t0x1e134: 0x6c7fae20, 0x1e135: 0x6c843420, 0x1e136: 0x6d30de20, 0x1e137: 0x6cd1fc20,\n\t0x1e138: 0x6c93b620, 0x1e139: 0x6d18b820, 0x1e13a: 0x6c2e5e20, 0x1e13b: 0x6d023220,\n\t0x1e13c: 0x6cfae020, 0x1e13d: 0x6cf0ea20, 0x1e13e: 0x6c0c7e20, 0x1e13f: 0x6c129620,\n\t// Block 0x785, offset 0x1e140\n\t0x1e140: 0x6c5f4620, 0x1e141: 0x6cbb4c20, 0x1e142: 0x6ccbb020, 0x1e143: 0x6c05bc20,\n\t0x1e144: 0x6cfd8c20, 0x1e145: 0x6c0ae420, 0x1e146: 0x6c3f0c20, 0x1e147: 0x6c65e620,\n\t0x1e148: 0x6d3bea20, 0x1e149: 0x6c65e820, 0x1e14a: 0x6c257020, 0x1e14b: 0x6c60c820,\n\t0x1e14c: 0x6c280620, 0x1e14d: 0x6d28d020, 0x1e14e: 0x6c38cc20, 0x1e14f: 0x6c0f7e20,\n\t0x1e150: 0x6cfe5a20, 0x1e151: 0x6d030420, 0x1e152: 0x6c0cf820, 0x1e153: 0x6cc52e20,\n\t0x1e154: 0x6c97ca20, 0x1e155: 0x6c7fc620, 0x1e156: 0x6c02b220, 0x1e157: 0x6d2b1620,\n\t0x1e158: 0x6c4b8e20, 0x1e159: 0x6c12bc20, 0x1e15a: 0x6cdc9220, 0x1e15b: 0x6ca9d620,\n\t0x1e15c: 0x6c14dc20, 0x1e15d: 0x6c88d220, 0x1e15e: 0x6c0aac20, 0x1e15f: 0x6c6c6a20,\n\t0x1e160: 0x6c291620, 0x1e161: 0x6cd58220, 0x1e162: 0x6ce08020, 0x1e163: 0x6c0aae20,\n\t0x1e164: 0x6c7fd820, 0x1e165: 0x6cb46e20, 0x1e166: 0x6cc7e020, 0x1e167: 0x6d355e20,\n\t0x1e168: 0x6c32ec20, 0x1e169: 0x6cd58620, 0x1e16a: 0x6cec4220, 0x1e16b: 0x6cd40020,\n\t0x1e16c: 0x6c042c20, 0x1e16d: 0x6d012020, 0x1e16e: 0x6c0fbe20, 0x1e16f: 0x6c194220,\n\t0x1e170: 0x6c7f7c20, 0x1e171: 0x6c8fee20, 0x1e172: 0x6cf7c420, 0x1e173: 0x6cfb0c20,\n\t0x1e174: 0x6c800220, 0x1e175: 0x6d30e220, 0x1e176: 0x6c27aa20, 0x1e177: 0x6c72d820,\n\t0x1e178: 0x6d29c620, 0x1e179: 0x6cd21c20, 0x1e17a: 0x6c663820, 0x1e17b: 0x6cacc620,\n\t0x1e17c: 0x6d196820, 0x1e17d: 0x6c809c20, 0x1e17e: 0x6d0b7020, 0x1e17f: 0x6cf94020,\n\t// Block 0x786, offset 0x1e180\n\t0x1e180: 0x6cf57420, 0x1e181: 0x6d11f820, 0x1e182: 0x6c3cc820, 0x1e183: 0x6cdfe620,\n\t0x1e184: 0x6c40b420, 0x1e185: 0x6c3d0620, 0x1e186: 0x6c407e20, 0x1e187: 0x6c03c820,\n\t0x1e188: 0x6c519620, 0x1e189: 0x6c5fa420, 0x1e18a: 0x6c5fb420, 0x1e18b: 0x6c665220,\n\t0x1e18c: 0x6c490820, 0x1e18d: 0x6c0b9020, 0x1e18e: 0x6d0e5620, 0x1e18f: 0x6c4a6220,\n\t0x1e190: 0x6c743020, 0x1e191: 0x6cb13a20, 0x1e192: 0x6c997620, 0x1e193: 0x6c9d4020,\n\t0x1e194: 0x6c9d4220, 0x1e195: 0x6c9ed620, 0x1e196: 0x6cd36c20, 0x1e197: 0x6cd8c420,\n\t0x1e198: 0x6c14cc20, 0x1e199: 0x6c954a20, 0x1e19a: 0x6c745a20, 0x1e19b: 0x6c9d6020,\n\t0x1e19c: 0x6ce5da20, 0x1e19d: 0x6c882620, 0x1e19e: 0x6d121820, 0x1e19f: 0x6d369c20,\n\t0x1e1a0: 0x6c757a20, 0x1e1a1: 0x6cf79620, 0x1e1a2: 0x6ccd5a20, 0x1e1a3: 0x6ceeb620,\n\t0x1e1a4: 0x6cf8d220, 0x1e1a5: 0x6ce51220, 0x1e1a6: 0x6d21a620, 0x1e1a7: 0x6c803e20,\n\t0x1e1a8: 0x6c36aa20, 0x1e1a9: 0x6c322a20, 0x1e1aa: 0x6cbd3e20, 0x1e1ab: 0x6cad2220,\n\t0x1e1ac: 0x6c62a220, 0x1e1ad: 0x6ca01e20, 0x1e1ae: 0x6d1caa20, 0x1e1af: 0x6c46dc20,\n\t0x1e1b0: 0x6cc15020, 0x1e1b1: 0x6d2e8c20, 0x1e1b2: 0x6c6d6c20, 0x1e1b3: 0x6c492c20,\n\t0x1e1b4: 0x6c2abc20, 0x1e1b5: 0x6c670420, 0x1e1b6: 0x6c956420, 0x1e1b7: 0x6cc28220,\n\t0x1e1b8: 0x6c652620, 0x1e1b9: 0x6cef6220, 0x1e1ba: 0x6c750220, 0x1e1bb: 0x6cc15c20,\n\t0x1e1bc: 0x6c956a20, 0x1e1bd: 0x6c805420, 0x1e1be: 0x6cd08a20, 0x1e1bf: 0x6c2bba20,\n\t// Block 0x787, offset 0x1e1c0\n\t0x1e1c0: 0x6c494420, 0x1e1c1: 0x6c664e20, 0x1e1c2: 0x6c490220, 0x1e1c3: 0x6d0e3e20,\n\t0x1e1c4: 0x6c4a3a20, 0x1e1c5: 0x6c9d2a20, 0x1e1c6: 0x6cd32020, 0x1e1c7: 0x6c14be20,\n\t0x1e1c8: 0x6c802020, 0x1e1c9: 0x6c740a20, 0x1e1ca: 0x6c61d620, 0x1e1cb: 0x6cf77e20,\n\t0x1e1cc: 0x6c2b6e20, 0x1e1cd: 0x6ce4fc20, 0x1e1ce: 0x6d216820, 0x1e1cf: 0x6c46cc20,\n\t0x1e1d0: 0x6c6d4620, 0x1e1d1: 0x6cc27220, 0x1e1d2: 0x6c68c620, 0x1e1d3: 0x6cc01820,\n\t0x1e1d4: 0x6c6c3a20, 0x1e1d5: 0x6c241220, 0x1e1d6: 0x6c743220, 0x1e1d7: 0x6d360c20,\n\t0x1e1d8: 0x6c17bc20, 0x1e1d9: 0x6c600a20, 0x1e1da: 0x6c471220, 0x1e1db: 0x6c289020,\n\t0x1e1dc: 0x6d3e5820, 0x1e1dd: 0x6c2bf820, 0x1e1de: 0x6cce0420, 0x1e1df: 0x6c57a020,\n\t0x1e1e0: 0x6cc30220, 0x1e1e1: 0x6c440c20, 0x1e1e2: 0x6cd3a020, 0x1e1e3: 0x6c6b9820,\n\t0x1e1e4: 0x6c4b0a20, 0x1e1e5: 0x6c459820, 0x1e1e6: 0x6c1f5c20, 0x1e1e7: 0x6c6b9a20,\n\t0x1e1e8: 0x6c5d3a20, 0x1e1e9: 0x6cc08420, 0x1e1ea: 0x6d039020, 0x1e1eb: 0x6cdaf220,\n\t0x1e1ec: 0x6ca60220, 0x1e1ed: 0x6c5f1e20, 0x1e1ee: 0x6c92b420, 0x1e1ef: 0x6d36c020,\n\t0x1e1f0: 0x6d2bfa20, 0x1e1f1: 0x6c0a5e20, 0x1e1f2: 0x6d03a620, 0x1e1f3: 0x6c55cc20,\n\t0x1e1f4: 0x6cce2220, 0x1e1f5: 0x6c45be20, 0x1e1f6: 0x6d374820, 0x1e1f7: 0x6d092820,\n\t0x1e1f8: 0x6c1f8a20, 0x1e1f9: 0x6cf71a20, 0x1e1fa: 0x6d159420, 0x1e1fb: 0x6c877e20,\n\t0x1e1fc: 0x6c750e20, 0x1e1fd: 0x6cf75020, 0x1e1fe: 0x6d0f0c20, 0x1e1ff: 0x6cf75e20,\n\t// Block 0x788, offset 0x1e200\n\t0x1e200: 0x6d0c5c20, 0x1e201: 0x6d0f3620, 0x1e202: 0x6c2f9a20, 0x1e203: 0x6c3fc620,\n\t0x1e204: 0x6cc01a20, 0x1e205: 0x6cc01c20, 0x1e206: 0x6c698a20, 0x1e207: 0x6c529c20,\n\t0x1e208: 0x6c61b820, 0x1e209: 0x6c384c20, 0x1e20a: 0x6d0a7e20, 0x1e20b: 0x6c2e1420,\n\t0x1e20c: 0x6c53b820, 0x1e20d: 0x6c149820, 0x1e20e: 0x6ce25c20, 0x1e20f: 0x6d058620,\n\t0x1e210: 0x6c6aaa20, 0x1e211: 0x6d14dc20, 0x1e212: 0x6cc5e020, 0x1e213: 0x6d0ac020,\n\t0x1e214: 0x6d1a4e20, 0x1e215: 0x6ccd7e20, 0x1e216: 0x6cb77020, 0x1e217: 0x6ceabc20,\n\t0x1e218: 0x6c61d820, 0x1e219: 0x6d0a8020, 0x1e21a: 0x6d1a5020, 0x1e21b: 0x6c356020,\n\t0x1e21c: 0x6c3b2c20, 0x1e21d: 0x6d0ba420, 0x1e21e: 0x6d109e20, 0x1e21f: 0x6cd98c20,\n\t0x1e220: 0x6cd06020, 0x1e221: 0x6d1a5e20, 0x1e222: 0x6d02ce20, 0x1e223: 0x6c743420,\n\t0x1e224: 0x6cff8620, 0x1e225: 0x6ca54e20, 0x1e226: 0x6c18c020, 0x1e227: 0x6d1f2e20,\n\t0x1e228: 0x6d352220, 0x1e229: 0x6d046820, 0x1e22a: 0x6c39d620, 0x1e22b: 0x6d033220,\n\t0x1e22c: 0x6c174020, 0x1e22d: 0x6ccf4420, 0x1e22e: 0x6cfaa220, 0x1e22f: 0x6cc94e20,\n\t0x1e230: 0x6d3ce220, 0x1e231: 0x6d063c20, 0x1e232: 0x6d177820, 0x1e233: 0x6d177a20,\n\t0x1e234: 0x6cdb7a20, 0x1e235: 0x6c1ab220, 0x1e236: 0x6c509e20, 0x1e237: 0x6ccff620,\n\t0x1e238: 0x6c512c20, 0x1e239: 0x6d06e620, 0x1e23a: 0x6d31de20, 0x1e23b: 0x6d3afa20,\n\t0x1e23c: 0x6d334e20, 0x1e23d: 0x6c46a820, 0x1e23e: 0x6d3e5c20, 0x1e23f: 0x6d3f1c20,\n\t// Block 0x789, offset 0x1e240\n\t0x1e240: 0x6d2d7820, 0x1e241: 0x6c479420, 0x1e242: 0x6c3ffe20, 0x1e243: 0x6c65a020,\n\t0x1e244: 0x6c2eb420, 0x1e245: 0x6c8d0a20, 0x1e246: 0x6c2bfa20, 0x1e247: 0x6d104e20,\n\t0x1e248: 0x6c861c20, 0x1e249: 0x6ca4b020, 0x1e24a: 0x6cacb820, 0x1e24b: 0x6d392e20,\n\t0x1e24c: 0x6c422220, 0x1e24d: 0x6d17c420, 0x1e24e: 0x6c724420, 0x1e24f: 0x6d120c20,\n\t0x1e250: 0x6d2cc820, 0x1e251: 0x6d150020, 0x1e252: 0x6d150220, 0x1e253: 0x6cc24a20,\n\t0x1e254: 0x6d2fb620, 0x1e255: 0x6cb2b220, 0x1e256: 0x6c09ac20, 0x1e257: 0x6d049620,\n\t0x1e258: 0x6cc11620, 0x1e259: 0x6c037c20, 0x1e25a: 0x6c26aa20, 0x1e25b: 0x6d411e20,\n\t0x1e25c: 0x6ce1cc20, 0x1e25d: 0x6d3a7220, 0x1e25e: 0x6c224820, 0x1e25f: 0x6d305e20,\n\t0x1e260: 0x6d1e3e20, 0x1e261: 0x6d064620, 0x1e262: 0x6d0a2020, 0x1e263: 0x6d180c20,\n\t0x1e264: 0x6c5a5620, 0x1e265: 0x6c514420, 0x1e266: 0x6cd3a220, 0x1e267: 0x6c13f020,\n\t0x1e268: 0x6cfff820, 0x1e269: 0x6cd1d820, 0x1e26a: 0x6c523e20, 0x1e26b: 0x6c144420,\n\t0x1e26c: 0x6c46ba20, 0x1e26d: 0x6c4b0c20, 0x1e26e: 0x6cc30420, 0x1e26f: 0x6c5bea20,\n\t0x1e270: 0x6c6afc20, 0x1e271: 0x6c57a220, 0x1e272: 0x6c40fc20, 0x1e273: 0x6cfdca20,\n\t0x1e274: 0x6ceea420, 0x1e275: 0x6ccffc20, 0x1e276: 0x6d393420, 0x1e277: 0x6ce75c20,\n\t0x1e278: 0x6c9c6220, 0x1e279: 0x6d2d8420, 0x1e27a: 0x6ca04620, 0x1e27b: 0x6c366420,\n\t0x1e27c: 0x6c5ace20, 0x1e27d: 0x6d0cb220, 0x1e27e: 0x6d046e20, 0x1e27f: 0x6c48bc20,\n\t// Block 0x78a, offset 0x1e280\n\t0x1e280: 0x6c37d220, 0x1e281: 0x6c0e2420, 0x1e282: 0x6ce5c420, 0x1e283: 0x6d152020,\n\t0x1e284: 0x6c82ca20, 0x1e285: 0x6d39b420, 0x1e286: 0x6c7ba420, 0x1e287: 0x6c7ac620,\n\t0x1e288: 0x6cf3dc20, 0x1e289: 0x6d238220, 0x1e28a: 0x6ce2a420, 0x1e28b: 0x6c625220,\n\t0x1e28c: 0x6d36a020, 0x1e28d: 0x6cc60220, 0x1e28e: 0x6c244e20, 0x1e28f: 0x6c810c20,\n\t0x1e290: 0x6c357a20, 0x1e291: 0x6c7bc620, 0x1e292: 0x6c370c20, 0x1e293: 0x6cd3b820,\n\t0x1e294: 0x6ce6d820, 0x1e295: 0x6c289620, 0x1e296: 0x6c074620, 0x1e297: 0x6c151020,\n\t0x1e298: 0x6d205620, 0x1e299: 0x6c794a20, 0x1e29a: 0x6cbc4e20, 0x1e29b: 0x6cbd3820,\n\t0x1e29c: 0x6cd65020, 0x1e29d: 0x6c014220, 0x1e29e: 0x6d227c20, 0x1e29f: 0x6cfffe20,\n\t0x1e2a0: 0x6c1a2220, 0x1e2a1: 0x6c6bf420, 0x1e2a2: 0x6cfcee20, 0x1e2a3: 0x6cf37a20,\n\t0x1e2a4: 0x6cf51020, 0x1e2a5: 0x6c435620, 0x1e2a6: 0x6cd99a20, 0x1e2a7: 0x6c101a20,\n\t0x1e2a8: 0x6c5c0420, 0x1e2a9: 0x6c6e9820, 0x1e2aa: 0x6cd76a20, 0x1e2ab: 0x6d325220,\n\t0x1e2ac: 0x6cd76c20, 0x1e2ad: 0x6c31ae20, 0x1e2ae: 0x6c57e420, 0x1e2af: 0x6c172420,\n\t0x1e2b0: 0x6cd6fe20, 0x1e2b1: 0x6c6b2820, 0x1e2b2: 0x6c78d420, 0x1e2b3: 0x6cc13a20,\n\t0x1e2b4: 0x6c23ac20, 0x1e2b5: 0x6cff9820, 0x1e2b6: 0x6cdc6420, 0x1e2b7: 0x6cee3620,\n\t0x1e2b8: 0x6cfb8620, 0x1e2b9: 0x6c3a6c20, 0x1e2ba: 0x6c1ad220, 0x1e2bb: 0x6cde9220,\n\t0x1e2bc: 0x6d186620, 0x1e2bd: 0x6ca6c220, 0x1e2be: 0x6d1a9a20, 0x1e2bf: 0x6c2e3820,\n\t// Block 0x78b, offset 0x1e2c0\n\t0x1e2c0: 0x6cb06820, 0x1e2c1: 0x6d3d8c20, 0x1e2c2: 0x6c15de20, 0x1e2c3: 0x6c188420,\n\t0x1e2c4: 0x6d3cd620, 0x1e2c5: 0x6c626a20, 0x1e2c6: 0x6cb52820, 0x1e2c7: 0x6ce00820,\n\t0x1e2c8: 0x6d3ca420, 0x1e2c9: 0x6cf00c20, 0x1e2ca: 0x6c714c20, 0x1e2cb: 0x6cbeb220,\n\t0x1e2cc: 0x6c303c20, 0x1e2cd: 0x6d335420, 0x1e2ce: 0x6d2af220, 0x1e2cf: 0x6d406020,\n\t0x1e2d0: 0x6cb91620, 0x1e2d1: 0x6d3d8e20, 0x1e2d2: 0x6c89c820, 0x1e2d3: 0x6c66c020,\n\t0x1e2d4: 0x6c1f6e20, 0x1e2d5: 0x6c4fe420, 0x1e2d6: 0x6c952620, 0x1e2d7: 0x6cd06e20,\n\t0x1e2d8: 0x6c0c7820, 0x1e2d9: 0x6c581220, 0x1e2da: 0x6cb12620, 0x1e2db: 0x6d219420,\n\t0x1e2dc: 0x6c2eea20, 0x1e2dd: 0x6d05e820, 0x1e2de: 0x6cb14220, 0x1e2df: 0x6cd3de20,\n\t0x1e2e0: 0x6d07d220, 0x1e2e1: 0x6cd3e020, 0x1e2e2: 0x6c5d4220, 0x1e2e3: 0x6c57c020,\n\t0x1e2e4: 0x6c36ac20, 0x1e2e5: 0x6d384020, 0x1e2e6: 0x6c2c9c20, 0x1e2e7: 0x6d00f220,\n\t0x1e2e8: 0x6c3ef620, 0x1e2e9: 0x6cb49420, 0x1e2ea: 0x6ce69020, 0x1e2eb: 0x6c66d620,\n\t0x1e2ec: 0x6cb71e20, 0x1e2ed: 0x6d23f620, 0x1e2ee: 0x6d3e9020, 0x1e2ef: 0x6d3b9420,\n\t0x1e2f0: 0x6cf81420, 0x1e2f1: 0x6c5c4220, 0x1e2f2: 0x6d1a0220, 0x1e2f3: 0x6c015020,\n\t0x1e2f4: 0x6cfb9e20, 0x1e2f5: 0x6ca40e20, 0x1e2f6: 0x6c18ec20, 0x1e2f7: 0x6c3cce20,\n\t0x1e2f8: 0x6d39c620, 0x1e2f9: 0x6d0fd820, 0x1e2fa: 0x6d0ec420, 0x1e2fb: 0x6c5a0020,\n\t0x1e2fc: 0x6d07d420, 0x1e2fd: 0x6c443a20, 0x1e2fe: 0x6cab0e20, 0x1e2ff: 0x6cb53220,\n\t// Block 0x78c, offset 0x1e300\n\t0x1e300: 0x6ca1e820, 0x1e301: 0x6d134620, 0x1e302: 0x6cf0d620, 0x1e303: 0x6d044620,\n\t0x1e304: 0x6ce2ba20, 0x1e305: 0x6d38b620, 0x1e306: 0x6ccdc020, 0x1e307: 0x6c65ec20,\n\t0x1e308: 0x6cb33a20, 0x1e309: 0x6c7d2220, 0x1e30a: 0x6c5a6420, 0x1e30b: 0x6c5e0c20,\n\t0x1e30c: 0x6c43b620, 0x1e30d: 0x6d1cac20, 0x1e30e: 0x6c9c7420, 0x1e30f: 0x6cffc020,\n\t0x1e310: 0x6c9d9820, 0x1e311: 0x6cf81a20, 0x1e312: 0x6cbae220, 0x1e313: 0x6c188c20,\n\t0x1e314: 0x6d097220, 0x1e315: 0x6ce38820, 0x1e316: 0x6cdb4a20, 0x1e317: 0x6c059420,\n\t0x1e318: 0x6c1b5a20, 0x1e319: 0x6cb92820, 0x1e31a: 0x6cd3ea20, 0x1e31b: 0x6c67c820,\n\t0x1e31c: 0x6d25b620, 0x1e31d: 0x6d023620, 0x1e31e: 0x6c51f620, 0x1e31f: 0x6ce1f220,\n\t0x1e320: 0x6d115020, 0x1e321: 0x6d115220, 0x1e322: 0x6d378020, 0x1e323: 0x6d21c820,\n\t0x1e324: 0x6c0c4020, 0x1e325: 0x6c23e020, 0x1e326: 0x6cbee620, 0x1e327: 0x6c846420,\n\t0x1e328: 0x6ca08020, 0x1e329: 0x6ca17620, 0x1e32a: 0x6cce2420, 0x1e32b: 0x6d30b020,\n\t0x1e32c: 0x6ca05420, 0x1e32d: 0x6c660420, 0x1e32e: 0x6d2b1820, 0x1e32f: 0x6c6a3a20,\n\t0x1e330: 0x6c886e20, 0x1e331: 0x6c90c620, 0x1e332: 0x6c121020, 0x1e333: 0x6cab5e20,\n\t0x1e334: 0x6c4c0620, 0x1e335: 0x6cf7ae20, 0x1e336: 0x6d3dc020, 0x1e337: 0x6c027a20,\n\t0x1e338: 0x6c027c20, 0x1e339: 0x6c6cc220, 0x1e33a: 0x6d30b220, 0x1e33b: 0x6d158620,\n\t0x1e33c: 0x6c551220, 0x1e33d: 0x6c680e20, 0x1e33e: 0x6c978e20, 0x1e33f: 0x6c178a20,\n\t// Block 0x78d, offset 0x1e340\n\t0x1e340: 0x6c4f2620, 0x1e341: 0x6c576020, 0x1e342: 0x6c160020, 0x1e343: 0x6d060020,\n\t0x1e344: 0x6d2ba420, 0x1e345: 0x6ccb9220, 0x1e346: 0x6cf71c20, 0x1e347: 0x6d2c0420,\n\t0x1e348: 0x6c337a20, 0x1e349: 0x6d336c20, 0x1e34a: 0x6ca4ce20, 0x1e34b: 0x6c7fda20,\n\t0x1e34c: 0x6c359820, 0x1e34d: 0x6d1c2620, 0x1e34e: 0x6c74ee20, 0x1e34f: 0x6c5f8220,\n\t0x1e350: 0x6d421220, 0x1e351: 0x6c696020, 0x1e352: 0x6c0ffc20, 0x1e353: 0x6c5c8620,\n\t0x1e354: 0x6d3bf420, 0x1e355: 0x6cf40820, 0x1e356: 0x6d2b7a20, 0x1e357: 0x6d2c6220,\n\t0x1e358: 0x6cd42220, 0x1e359: 0x6cbc6c20, 0x1e35a: 0x6ce03620, 0x1e35b: 0x6d2b7c20,\n\t0x1e35c: 0x6cb4a020, 0x1e35d: 0x6cd12820, 0x1e35e: 0x6d07ee20, 0x1e35f: 0x6d2a9820,\n\t0x1e360: 0x6ce04020, 0x1e361: 0x6c293620, 0x1e362: 0x6cdcac20, 0x1e363: 0x6cfc4e20,\n\t0x1e364: 0x6c5f8c20, 0x1e365: 0x6c69d820, 0x1e366: 0x6c6e3c20, 0x1e367: 0x6d2e9820,\n\t0x1e368: 0x6ca45c20, 0x1e369: 0x6d143220, 0x1e36a: 0x6c010420, 0x1e36b: 0x6d2dbc20,\n\t0x1e36c: 0x6cb0d820, 0x1e36d: 0x6c5b7e20, 0x1e36e: 0x6c57d420, 0x1e36f: 0x6d193220,\n\t0x1e370: 0x6d193420, 0x1e371: 0x6ccdd620, 0x1e372: 0x6cc51c20, 0x1e373: 0x6caa3220,\n\t0x1e374: 0x6cba3220, 0x1e375: 0x6d3cbe20, 0x1e376: 0x6cdee420, 0x1e377: 0x6c56e020,\n\t0x1e378: 0x6d38c420, 0x1e379: 0x6c500420, 0x1e37a: 0x6c010620, 0x1e37b: 0x6d1c3420,\n\t0x1e37c: 0x6c671a20, 0x1e37d: 0x6d246620, 0x1e37e: 0x6c662c20, 0x1e37f: 0x6c5c9c20,\n\t// Block 0x78e, offset 0x1e380\n\t0x1e380: 0x6c31f020, 0x1e381: 0x6d30bc20, 0x1e382: 0x6d08d020, 0x1e383: 0x6d29bc20,\n\t0x1e384: 0x6c830c20, 0x1e385: 0x6cd08c20, 0x1e386: 0x6cf12220, 0x1e387: 0x6c161a20,\n\t0x1e388: 0x6c879020, 0x1e389: 0x6d159a20, 0x1e38a: 0x6c0bdc20, 0x1e38b: 0x6d30c820,\n\t0x1e38c: 0x6d0f0e20, 0x1e38d: 0x6c36f220, 0x1e38e: 0x6c1e0e20, 0x1e38f: 0x6cf12a20,\n\t0x1e390: 0x6c1e1020, 0x1e391: 0x6d125620, 0x1e392: 0x6c157c20, 0x1e393: 0x6cc51e20,\n\t0x1e394: 0x6d1b2c20, 0x1e395: 0x6c801020, 0x1e396: 0x6c194820, 0x1e397: 0x6d013820,\n\t0x1e398: 0x6ca8cc20, 0x1e399: 0x6c584c20, 0x1e39a: 0x6d29ca20, 0x1e39b: 0x6d197c20,\n\t0x1e39c: 0x6c294a20, 0x1e39d: 0x6d2dda20, 0x1e39e: 0x6d0f2a20, 0x1e39f: 0x6c321020,\n\t0x1e3a0: 0x6d0c5020, 0x1e3a1: 0x6c616e20, 0x1e3a2: 0x6c2f8c20, 0x1e3a3: 0x6c3fa220,\n\t0x1e3a4: 0x6cc5a420, 0x1e3a5: 0x6c5e6620, 0x1e3a6: 0x6c6a5c20, 0x1e3a7: 0x6c53b420,\n\t0x1e3a8: 0x6ce25820, 0x1e3a9: 0x6cc51820, 0x1e3aa: 0x6ccd6620, 0x1e3ab: 0x6cb72820,\n\t0x1e3ac: 0x6cea9420, 0x1e3ad: 0x6d0abe20, 0x1e3ae: 0x6d164e20, 0x1e3af: 0x6d0a6220,\n\t0x1e3b0: 0x6c617020, 0x1e3b1: 0x6cc5aa20, 0x1e3b2: 0x6c679c20, 0x1e3b3: 0x6c5b8c20,\n\t0x1e3b4: 0x6cab2c20, 0x1e3b5: 0x6c71f420, 0x1e3b6: 0x6d0b7220, 0x1e3b7: 0x6ca54220,\n\t0x1e3b8: 0x6d062420, 0x1e3b9: 0x6c354620, 0x1e3ba: 0x6c952020, 0x1e3bb: 0x6d045220,\n\t0x1e3bc: 0x6cd97c20, 0x1e3bd: 0x6c3cc420, 0x1e3be: 0x6ccf3220, 0x1e3bf: 0x6c39b820,\n\t// Block 0x78f, offset 0x1e3c0\n\t0x1e3c0: 0x6c73d620, 0x1e3c1: 0x6d333a20, 0x1e3c2: 0x6c475a20, 0x1e3c3: 0x6c508a20,\n\t0x1e3c4: 0x6cb27020, 0x1e3c5: 0x6d410820, 0x1e3c6: 0x6cd40e20, 0x1e3c7: 0x6d048620,\n\t0x1e3c8: 0x6d2caa20, 0x1e3c9: 0x6cdb7820, 0x1e3ca: 0x6d31b420, 0x1e3cb: 0x6c2bce20,\n\t0x1e3cc: 0x6d385420, 0x1e3cd: 0x6c221e20, 0x1e3ce: 0x6cc0d420, 0x1e3cf: 0x6d2f9820,\n\t0x1e3d0: 0x6c092020, 0x1e3d1: 0x6d169c20, 0x1e3d2: 0x6d146620, 0x1e3d3: 0x6c7b8620,\n\t0x1e3d4: 0x6c82b620, 0x1e3d5: 0x6cd32220, 0x1e3d6: 0x6c48aa20, 0x1e3d7: 0x6cd19c20,\n\t0x1e3d8: 0x6c5fe420, 0x1e3d9: 0x6c5a8c20, 0x1e3da: 0x6c19c020, 0x1e3db: 0x6d398420,\n\t0x1e3dc: 0x6ccfb420, 0x1e3dd: 0x6c578620, 0x1e3de: 0x6c286c20, 0x1e3df: 0x6c469620,\n\t0x1e3e0: 0x6cc2ba20, 0x1e3e1: 0x6c4aca20, 0x1e3e2: 0x6d09e020, 0x1e3e3: 0x6d16d220,\n\t0x1e3e4: 0x6d328e20, 0x1e3e5: 0x6c40de20, 0x1e3e6: 0x6cfdb020, 0x1e3e7: 0x6c143220,\n\t0x1e3e8: 0x6c5d1a20, 0x1e3e9: 0x6d062e20, 0x1e3ea: 0x6d386220, 0x1e3eb: 0x6c6bd420,\n\t0x1e3ec: 0x6cf35c20, 0x1e3ed: 0x6d223020, 0x1e3ee: 0x6cbc3220, 0x1e3ef: 0x6cf4ce20,\n\t0x1e3f0: 0x6c433c20, 0x1e3f1: 0x6d203220, 0x1e3f2: 0x6c5ba420, 0x1e3f3: 0x6c7bbc20,\n\t0x1e3f4: 0x6cd76620, 0x1e3f5: 0x6cd98220, 0x1e3f6: 0x6c370a20, 0x1e3f7: 0x6cbea220,\n\t0x1e3f8: 0x6d399620, 0x1e3f9: 0x6d404a20, 0x1e3fa: 0x6caae620, 0x1e3fb: 0x6c319420,\n\t0x1e3fc: 0x6d3d3e20, 0x1e3fd: 0x6c3a4e20, 0x1e3fe: 0x6c789c20, 0x1e3ff: 0x6cefa620,\n\t// Block 0x790, offset 0x1e400\n\t0x1e400: 0x6d20f820, 0x1e401: 0x6cd6fa20, 0x1e402: 0x6cd05420, 0x1e403: 0x6c2e1620,\n\t0x1e404: 0x6c15a220, 0x1e405: 0x6c89b020, 0x1e406: 0x6d3cd020, 0x1e407: 0x6cdc3220,\n\t0x1e408: 0x6cdfd620, 0x1e409: 0x6cd05620, 0x1e40a: 0x6d174820, 0x1e40b: 0x6ca1d020,\n\t0x1e40c: 0x6c18c220, 0x1e40d: 0x6c2e9620, 0x1e40e: 0x6c5a5220, 0x1e40f: 0x6c668220,\n\t0x1e410: 0x6d00a620, 0x1e411: 0x6d095a20, 0x1e412: 0x6d12ea20, 0x1e413: 0x6cf08820,\n\t0x1e414: 0x6c361a20, 0x1e415: 0x6d232420, 0x1e416: 0x6d078e20, 0x1e417: 0x6c14f020,\n\t0x1e418: 0x6d3e2c20, 0x1e419: 0x6c012c20, 0x1e41a: 0x6d0e6620, 0x1e41b: 0x6c2c5020,\n\t0x1e41c: 0x6c9c4e20, 0x1e41d: 0x6cb13c20, 0x1e41e: 0x6d059020, 0x1e41f: 0x6ca05820,\n\t0x1e420: 0x6c292e20, 0x1e421: 0x6cdab820, 0x1e422: 0x6d01b620, 0x1e423: 0x6d10fe20,\n\t0x1e424: 0x6c057420, 0x1e425: 0x6cd38c20, 0x1e426: 0x6cb8e420, 0x1e427: 0x6c9d4c20,\n\t0x1e428: 0x6c6c9820, 0x1e429: 0x6c976820, 0x1e42a: 0x6d306620, 0x1e42b: 0x6c65b620,\n\t0x1e42c: 0x6ca05220, 0x1e42d: 0x6cdff420, 0x1e42e: 0x6d2b7820, 0x1e42f: 0x6cbbe420,\n\t0x1e430: 0x6c7fa820, 0x1e431: 0x6cb49020, 0x1e432: 0x6c748620, 0x1e433: 0x6d0ea820,\n\t0x1e434: 0x6cba1e20, 0x1e435: 0x6d2d9020, 0x1e436: 0x6c193c20, 0x1e437: 0x6c475c20,\n\t0x1e438: 0x6cb8cc20, 0x1e439: 0x6c534020, 0x1e43a: 0x6cf96420, 0x1e43b: 0x6c602420,\n\t0x1e43c: 0x6c536820, 0x1e43d: 0x6c4db220, 0x1e43e: 0x6c52c020, 0x1e43f: 0x6cf6f420,\n\t// Block 0x791, offset 0x1e440\n\t0x1e440: 0x6cf6f620, 0x1e441: 0x6c5d6220, 0x1e442: 0x6c8a3e20, 0x1e443: 0x6c4e6a20,\n\t0x1e444: 0x6c31f220, 0x1e445: 0x6c900420, 0x1e446: 0x6c30fa20, 0x1e447: 0x6c675a20,\n\t0x1e448: 0x6cb6e820, 0x1e449: 0x6cd37220, 0x1e44a: 0x6c852420, 0x1e44b: 0x6c2a9e20,\n\t0x1e44c: 0x6cec9a20, 0x1e44d: 0x6c088a20, 0x1e44e: 0x6cd60820, 0x1e44f: 0x6cfd1c20,\n\t0x1e450: 0x6c3c7020, 0x1e451: 0x6d375a20, 0x1e452: 0x6d377620, 0x1e453: 0x6d0f2c20,\n\t0x1e454: 0x6d0f3020, 0x1e455: 0x6cd2b020, 0x1e456: 0x6c1f1620, 0x1e457: 0x6c5aae20,\n\t0x1e458: 0x6cea4e20, 0x1e459: 0x6d177c20, 0x1e45a: 0x6cea5020, 0x1e45b: 0x6d177e20,\n\t0x1e45c: 0x6c649020, 0x1e45d: 0x6c034a20, 0x1e45e: 0x6c547220, 0x1e45f: 0x6c364820,\n\t0x1e460: 0x6c1e8420, 0x1e461: 0x6cfe3020, 0x1e462: 0x6c593e20, 0x1e463: 0x6c64c220,\n\t0x1e464: 0x6c790420, 0x1e465: 0x6c40fe20, 0x1e466: 0x6c725a20, 0x1e467: 0x6c3d8a20,\n\t0x1e468: 0x6cf68420, 0x1e469: 0x6c0d4820, 0x1e46a: 0x6c4fd620, 0x1e46b: 0x6d23ce20,\n\t0x1e46c: 0x6d39c820, 0x1e46d: 0x6c638420, 0x1e46e: 0x6c3b9a20, 0x1e46f: 0x6cf6f820,\n\t0x1e470: 0x6c0f8020, 0x1e471: 0x6cf16620, 0x1e472: 0x6c58aa20, 0x1e473: 0x6c0d5820,\n\t0x1e474: 0x6c2ba620, 0x1e475: 0x6d3fce20, 0x1e476: 0x6c3ba620, 0x1e477: 0x6d191c20,\n\t0x1e478: 0x6d357c20, 0x1e479: 0x6c064020, 0x1e47a: 0x6c147820, 0x1e47b: 0x6c01b420,\n\t0x1e47c: 0x6cafe620, 0x1e47d: 0x6ca33c20, 0x1e47e: 0x6caf6620, 0x1e47f: 0x6c468a20,\n\t// Block 0x792, offset 0x1e480\n\t0x1e480: 0x6ca34620, 0x1e481: 0x6d204820, 0x1e482: 0x6c2dcc20, 0x1e483: 0x6ca11e20,\n\t0x1e484: 0x6cd8ce20, 0x1e485: 0x6d04dc20, 0x1e486: 0x6c588420, 0x1e487: 0x6c7d7220,\n\t0x1e488: 0x6c514820, 0x1e489: 0x6c4fce20, 0x1e48a: 0x6ca13220, 0x1e48b: 0x6c4ef020,\n\t0x1e48c: 0x6c99a420, 0x1e48d: 0x6c842220, 0x1e48e: 0x6ca60420, 0x1e48f: 0x6c08f420,\n\t0x1e490: 0x6d229620, 0x1e491: 0x6c638620, 0x1e492: 0x6ce93a20, 0x1e493: 0x6c98be20,\n\t0x1e494: 0x6cb02620, 0x1e495: 0x6cf6fa20, 0x1e496: 0x6c36b820, 0x1e497: 0x6c72ae20,\n\t0x1e498: 0x6ca17820, 0x1e499: 0x6c1e6a20, 0x1e49a: 0x6ce03820, 0x1e49b: 0x6c584e20,\n\t0x1e49c: 0x6c753620, 0x1e49d: 0x6c06dc20, 0x1e49e: 0x6d313220, 0x1e49f: 0x6d254a20,\n\t0x1e4a0: 0x6c3fc820, 0x1e4a1: 0x6c110e20, 0x1e4a2: 0x6c461420, 0x1e4a3: 0x6ce27220,\n\t0x1e4a4: 0x6d14de20, 0x1e4a5: 0x6c4f7820, 0x1e4a6: 0x6ced8020, 0x1e4a7: 0x6cb20a20,\n\t0x1e4a8: 0x6c5dc820, 0x1e4a9: 0x6c395020, 0x1e4aa: 0x6cdfa620, 0x1e4ab: 0x6c498620,\n\t0x1e4ac: 0x6d2ac820, 0x1e4ad: 0x6d345e20, 0x1e4ae: 0x6c37cc20, 0x1e4af: 0x6d3afe20,\n\t0x1e4b0: 0x6cd38e20, 0x1e4b1: 0x6c09ae20, 0x1e4b2: 0x6d3e5e20, 0x1e4b3: 0x6c37d020,\n\t0x1e4b4: 0x6c4b4e20, 0x1e4b5: 0x6cb14020, 0x1e4b6: 0x6c0b3a20, 0x1e4b7: 0x6c971420,\n\t0x1e4b8: 0x6c277220, 0x1e4b9: 0x6cd16820, 0x1e4ba: 0x6c7bf820, 0x1e4bb: 0x6c3ab220,\n\t0x1e4bc: 0x6ce5f420, 0x1e4bd: 0x6d150620, 0x1e4be: 0x6c1b2a20, 0x1e4bf: 0x6c998620,\n\t// Block 0x793, offset 0x1e4c0\n\t0x1e4c0: 0x6c51c820, 0x1e4c1: 0x6c09b020, 0x1e4c2: 0x6c927420, 0x1e4c3: 0x6c8c5420,\n\t0x1e4c4: 0x6c5bec20, 0x1e4c5: 0x6c410020, 0x1e4c6: 0x6cb11a20, 0x1e4c7: 0x6d3e6020,\n\t0x1e4c8: 0x6c642020, 0x1e4c9: 0x6d070420, 0x1e4ca: 0x6d2b6020, 0x1e4cb: 0x6c691020,\n\t0x1e4cc: 0x6c414a20, 0x1e4cd: 0x6d29dc20, 0x1e4ce: 0x6c669e20, 0x1e4cf: 0x6d1be220,\n\t0x1e4d0: 0x6d0a9c20, 0x1e4d1: 0x6d325420, 0x1e4d2: 0x6ccef820, 0x1e4d3: 0x6c0d4a20,\n\t0x1e4d4: 0x6c0d4c20, 0x1e4d5: 0x6cc08620, 0x1e4d6: 0x6ccefa20, 0x1e4d7: 0x6c203c20,\n\t0x1e4d8: 0x6d29e620, 0x1e4d9: 0x6d38a220, 0x1e4da: 0x6c7f5220, 0x1e4db: 0x6d299820,\n\t0x1e4dc: 0x6c22e020, 0x1e4dd: 0x6c188620, 0x1e4de: 0x6cce3a20, 0x1e4df: 0x6ce51620,\n\t0x1e4e0: 0x6cadee20, 0x1e4e1: 0x6c44de20, 0x1e4e2: 0x6cfb8820, 0x1e4e3: 0x6c974020,\n\t0x1e4e4: 0x6c66c220, 0x1e4e5: 0x6cdc6820, 0x1e4e6: 0x6c404420, 0x1e4e7: 0x6ce0aa20,\n\t0x1e4e8: 0x6c23ae20, 0x1e4e9: 0x6c23b020, 0x1e4ea: 0x6d36c620, 0x1e4eb: 0x6c5f2220,\n\t0x1e4ec: 0x6d2f3e20, 0x1e4ed: 0x6c322c20, 0x1e4ee: 0x6c6d5420, 0x1e4ef: 0x6d047420,\n\t0x1e4f0: 0x6c218820, 0x1e4f1: 0x6d280420, 0x1e4f2: 0x6c061420, 0x1e4f3: 0x6d290c20,\n\t0x1e4f4: 0x6c7f5820, 0x1e4f5: 0x6c3cf820, 0x1e4f6: 0x6c125c20, 0x1e4f7: 0x6c5f6020,\n\t0x1e4f8: 0x6cd17e20, 0x1e4f9: 0x6d18da20, 0x1e4fa: 0x6d3bec20, 0x1e4fb: 0x6c406820,\n\t0x1e4fc: 0x6c46de20, 0x1e4fd: 0x6cc9ea20, 0x1e4fe: 0x6d2b1a20, 0x1e4ff: 0x6c8a4020,\n\t// Block 0x794, offset 0x1e500\n\t0x1e500: 0x6d18f820, 0x1e501: 0x6c045e20, 0x1e502: 0x6c191620, 0x1e503: 0x6ceda620,\n\t0x1e504: 0x6d373220, 0x1e505: 0x6d3cb620, 0x1e506: 0x6c0c4620, 0x1e507: 0x6d276e20,\n\t0x1e508: 0x6d2bb620, 0x1e509: 0x6c28e020, 0x1e50a: 0x6d29ae20, 0x1e50b: 0x6d0eec20,\n\t0x1e50c: 0x6cb4c420, 0x1e50d: 0x6ccdd820, 0x1e50e: 0x6cedac20, 0x1e50f: 0x6d1cca20,\n\t0x1e510: 0x6c6d7220, 0x1e511: 0x6c423c20, 0x1e512: 0x6cfbd420, 0x1e513: 0x6d29f020,\n\t0x1e514: 0x6c0ac620, 0x1e515: 0x6c31f420, 0x1e516: 0x6cd54820, 0x1e517: 0x6d0f0620,\n\t0x1e518: 0x6cce4220, 0x1e519: 0x6d08d420, 0x1e51a: 0x6c907020, 0x1e51b: 0x6c424420,\n\t0x1e51c: 0x6d29f420, 0x1e51d: 0x6c06d220, 0x1e51e: 0x6d311c20, 0x1e51f: 0x6c3fa820,\n\t0x1e520: 0x6d253420, 0x1e521: 0x6c460c20, 0x1e522: 0x6c110c20, 0x1e523: 0x6d2aae20,\n\t0x1e524: 0x6cfb2e20, 0x1e525: 0x6c043820, 0x1e526: 0x6d2f2a20, 0x1e527: 0x6c5da220,\n\t0x1e528: 0x6d358e20, 0x1e529: 0x6c393420, 0x1e52a: 0x6cdf9220, 0x1e52b: 0x6cb20620,\n\t0x1e52c: 0x6c0b2a20, 0x1e52d: 0x6c469820, 0x1e52e: 0x6d3ab420, 0x1e52f: 0x6c497a20,\n\t0x1e530: 0x6c37c420, 0x1e531: 0x6c666220, 0x1e532: 0x6c078220, 0x1e533: 0x6cd34820,\n\t0x1e534: 0x6ce5ec20, 0x1e535: 0x6c4b3a20, 0x1e536: 0x6c7bec20, 0x1e537: 0x6c274e20,\n\t0x1e538: 0x6c995a20, 0x1e539: 0x6c3a9220, 0x1e53a: 0x6c51be20, 0x1e53b: 0x6d14b020,\n\t0x1e53c: 0x6d2b5c20, 0x1e53d: 0x6d35ce20, 0x1e53e: 0x6c640e20, 0x1e53f: 0x6c5bb020,\n\t// Block 0x795, offset 0x1e540\n\t0x1e540: 0x6d3e1e20, 0x1e541: 0x6c8c5020, 0x1e542: 0x6c922c20, 0x1e543: 0x6d29d820,\n\t0x1e544: 0x6d3e2020, 0x1e545: 0x6c40f020, 0x1e546: 0x6c6cfa20, 0x1e547: 0x6cc05220,\n\t0x1e548: 0x6d323c20, 0x1e549: 0x6c7f4620, 0x1e54a: 0x6ccef020, 0x1e54b: 0x6c400020,\n\t0x1e54c: 0x6c322020, 0x1e54d: 0x6c5edc20, 0x1e54e: 0x6cd52c20, 0x1e54f: 0x6cce3820,\n\t0x1e550: 0x6c22ce20, 0x1e551: 0x6c09b220, 0x1e552: 0x6d388c20, 0x1e553: 0x6c44d420,\n\t0x1e554: 0x6cadda20, 0x1e555: 0x6c283620, 0x1e556: 0x6c7f4c20, 0x1e557: 0x6c3ce820,\n\t0x1e558: 0x6d3c9e20, 0x1e559: 0x6c402820, 0x1e55a: 0x6d3bd620, 0x1e55b: 0x6cc9e620,\n\t0x1e55c: 0x6d2af420, 0x1e55d: 0x6d0ec820, 0x1e55e: 0x6d299a20, 0x1e55f: 0x6d276820,\n\t0x1e560: 0x6d2bb220, 0x1e561: 0x6ccdc220, 0x1e562: 0x6d1cae20, 0x1e563: 0x6c423e20,\n\t0x1e564: 0x6c1be820, 0x1e565: 0x6cf60220, 0x1e566: 0x6ccf4620, 0x1e567: 0x6ca42420,\n\t0x1e568: 0x6ce75e20, 0x1e569: 0x6cf8a820, 0x1e56a: 0x6c197620, 0x1e56b: 0x6c51dc20,\n\t0x1e56c: 0x6c199620, 0x1e56d: 0x6d30dc20, 0x1e56e: 0x6cf9f620, 0x1e56f: 0x6ce14620,\n\t0x1e570: 0x6d407e20, 0x1e571: 0x6d407c20, 0x1e572: 0x6c85b620, 0x1e573: 0x6c6f6020,\n\t0x1e574: 0x6c3fca20, 0x1e575: 0x6d2fa620, 0x1e576: 0x6c41d220, 0x1e577: 0x6cb6ea20,\n\t0x1e578: 0x6ccd8020, 0x1e579: 0x6cbf1c20, 0x1e57a: 0x6d1adc20, 0x1e57b: 0x6cfc0c20,\n\t0x1e57c: 0x6c21fe20, 0x1e57d: 0x6c743620, 0x1e57e: 0x6cbdd420, 0x1e57f: 0x6c1b2020,\n\t// Block 0x796, offset 0x1e580\n\t0x1e580: 0x6c220020, 0x1e581: 0x6c192820, 0x1e582: 0x6c192a20, 0x1e583: 0x6c2eb620,\n\t0x1e584: 0x6c70a020, 0x1e585: 0x6c174820, 0x1e586: 0x6c2b3020, 0x1e587: 0x6cf89620,\n\t0x1e588: 0x6d2d7a20, 0x1e589: 0x6c745c20, 0x1e58a: 0x6d26be20, 0x1e58b: 0x6cc11820,\n\t0x1e58c: 0x6c606220, 0x1e58d: 0x6c1b3e20, 0x1e58e: 0x6c1e9420, 0x1e58f: 0x6c486420,\n\t0x1e590: 0x6d096820, 0x1e591: 0x6d3e6220, 0x1e592: 0x6ce59420, 0x1e593: 0x6c349c20,\n\t0x1e594: 0x6c8b1c20, 0x1e595: 0x6c41e220, 0x1e596: 0x6cdd3220, 0x1e597: 0x6c245020,\n\t0x1e598: 0x6cf79820, 0x1e599: 0x6d2fd220, 0x1e59a: 0x6cdaf420, 0x1e59b: 0x6d1b0020,\n\t0x1e59c: 0x6c715020, 0x1e59d: 0x6c66c420, 0x1e59e: 0x6cc3f420, 0x1e59f: 0x6ce1a020,\n\t0x1e5a0: 0x6c21d020, 0x1e5a1: 0x6c250420, 0x1e5a2: 0x6c92b820, 0x1e5a3: 0x6cc27420,\n\t0x1e5a4: 0x6c298c20, 0x1e5a5: 0x6cbfc820, 0x1e5a6: 0x6d3e9220, 0x1e5a7: 0x6ce37e20,\n\t0x1e5a8: 0x6cc14a20, 0x1e5a9: 0x6c1c8820, 0x1e5aa: 0x6c5a1e20, 0x1e5ab: 0x6cbc0a20,\n\t0x1e5ac: 0x6cbbc220, 0x1e5ad: 0x6c69ce20, 0x1e5ae: 0x6d2a9a20, 0x1e5af: 0x6ce44220,\n\t0x1e5b0: 0x6c37b020, 0x1e5b1: 0x6d298420, 0x1e5b2: 0x6d298820, 0x1e5b3: 0x6d40a620,\n\t0x1e5b4: 0x6cabbc20, 0x1e5b5: 0x6c064220, 0x1e5b6: 0x6c7a8c20, 0x1e5b7: 0x6c77f220,\n\t0x1e5b8: 0x6c33cc20, 0x1e5b9: 0x6c743820, 0x1e5ba: 0x6c3d6c20, 0x1e5bb: 0x6c190020,\n\t0x1e5bc: 0x6c658c20, 0x1e5bd: 0x6c39e420, 0x1e5be: 0x6d352420, 0x1e5bf: 0x6cdde620,\n\t// Block 0x797, offset 0x1e5c0\n\t0x1e5c0: 0x6d26a820, 0x1e5c1: 0x6c03b620, 0x1e5c2: 0x6cb5d820, 0x1e5c3: 0x6d26aa20,\n\t0x1e5c4: 0x6cbab420, 0x1e5c5: 0x6ceba820, 0x1e5c6: 0x6cdf2420, 0x1e5c7: 0x6d17c820,\n\t0x1e5c8: 0x6ca72620, 0x1e5c9: 0x6c8d0e20, 0x1e5ca: 0x6c9a9420, 0x1e5cb: 0x6c038220,\n\t0x1e5cc: 0x6c2e5820, 0x1e5cd: 0x6c7a4420, 0x1e5ce: 0x6ceb2420, 0x1e5cf: 0x6c636620,\n\t0x1e5d0: 0x6c220620, 0x1e5d1: 0x6cad7820, 0x1e5d2: 0x6cb83820, 0x1e5d3: 0x6d3b0020,\n\t0x1e5d4: 0x6c70a220, 0x1e5d5: 0x6c2d1c20, 0x1e5d6: 0x6d346e20, 0x1e5d7: 0x6c3d7620,\n\t0x1e5d8: 0x6cac5a20, 0x1e5d9: 0x6c724e20, 0x1e5da: 0x6ccce620, 0x1e5db: 0x6c0fe420,\n\t0x1e5dc: 0x6ca5ec20, 0x1e5dd: 0x6c724620, 0x1e5de: 0x6c861e20, 0x1e5df: 0x6c449a20,\n\t0x1e5e0: 0x6d152420, 0x1e5e1: 0x6c5ef420, 0x1e5e2: 0x6c34fe20, 0x1e5e3: 0x6cfc1c20,\n\t0x1e5e4: 0x6c685420, 0x1e5e5: 0x6c350020, 0x1e5e6: 0x6d39b620, 0x1e5e7: 0x6cc30620,\n\t0x1e5e8: 0x6c7aec20, 0x1e5e9: 0x6d3b6820, 0x1e5ea: 0x6c4b5a20, 0x1e5eb: 0x6cbf4420,\n\t0x1e5ec: 0x6c7cd620, 0x1e5ed: 0x6cfdce20, 0x1e5ee: 0x6c1c3620, 0x1e5ef: 0x6c927620,\n\t0x1e5f0: 0x6cb11c20, 0x1e5f1: 0x6d367020, 0x1e5f2: 0x6c63d020, 0x1e5f3: 0x6ce5dc20,\n\t0x1e5f4: 0x6c113820, 0x1e5f5: 0x6c669820, 0x1e5f6: 0x6cde6a20, 0x1e5f7: 0x6cbb8020,\n\t0x1e5f8: 0x6c09e220, 0x1e5f9: 0x6cfab220, 0x1e5fa: 0x6c350220, 0x1e5fb: 0x6c5ef620,\n\t0x1e5fc: 0x6c714620, 0x1e5fd: 0x6c625420, 0x1e5fe: 0x6cd4fa20, 0x1e5ff: 0x6ce8e020,\n\t// Block 0x798, offset 0x1e600\n\t0x1e600: 0x6c1f6420, 0x1e601: 0x6c6e9a20, 0x1e602: 0x6ca85620, 0x1e603: 0x6cfef820,\n\t0x1e604: 0x6c10b020, 0x1e605: 0x6d091420, 0x1e606: 0x6c259a20, 0x1e607: 0x6ca25020,\n\t0x1e608: 0x6cd4fc20, 0x1e609: 0x6c896220, 0x1e60a: 0x6d1e5420, 0x1e60b: 0x6c691820,\n\t0x1e60c: 0x6c1dce20, 0x1e60d: 0x6cbb9220, 0x1e60e: 0x6ca1da20, 0x1e60f: 0x6cde9420,\n\t0x1e610: 0x6c66c620, 0x1e611: 0x6cb64620, 0x1e612: 0x6cf29e20, 0x1e613: 0x6cf00e20,\n\t0x1e614: 0x6c219820, 0x1e615: 0x6c6b2a20, 0x1e616: 0x6c609a20, 0x1e617: 0x6ca86420,\n\t0x1e618: 0x6c70be20, 0x1e619: 0x6c70c020, 0x1e61a: 0x6c950c20, 0x1e61b: 0x6c92bc20,\n\t0x1e61c: 0x6c839a20, 0x1e61d: 0x6c57f020, 0x1e61e: 0x6c728420, 0x1e61f: 0x6c1b4e20,\n\t0x1e620: 0x6ced4820, 0x1e621: 0x6cc31420, 0x1e622: 0x6ce2fa20, 0x1e623: 0x6c0f4c20,\n\t0x1e624: 0x6d40d220, 0x1e625: 0x6cbce220, 0x1e626: 0x6d160820, 0x1e627: 0x6c245e20,\n\t0x1e628: 0x6d3fbc20, 0x1e629: 0x6c113e20, 0x1e62a: 0x6d3fbe20, 0x1e62b: 0x6caf1620,\n\t0x1e62c: 0x6d36c820, 0x1e62d: 0x6d32d820, 0x1e62e: 0x6c2d2a20, 0x1e62f: 0x6d349420,\n\t0x1e630: 0x6d21aa20, 0x1e631: 0x6c346220, 0x1e632: 0x6c340c20, 0x1e633: 0x6c202820,\n\t0x1e634: 0x6d1e6020, 0x1e635: 0x6d380820, 0x1e636: 0x6c2c9e20, 0x1e637: 0x6d2c9220,\n\t0x1e638: 0x6c191020, 0x1e639: 0x6c1fce20, 0x1e63a: 0x6c66c820, 0x1e63b: 0x6c486e20,\n\t0x1e63c: 0x6ce13e20, 0x1e63d: 0x6c71d620, 0x1e63e: 0x6c3efa20, 0x1e63f: 0x6d40d820,\n\t// Block 0x799, offset 0x1e640\n\t0x1e640: 0x6c2eec20, 0x1e641: 0x6cb12e20, 0x1e642: 0x6cc76020, 0x1e643: 0x6cab1020,\n\t0x1e644: 0x6ce38020, 0x1e645: 0x6c142020, 0x1e646: 0x6ce9ec20, 0x1e647: 0x6c65ee20,\n\t0x1e648: 0x6c29f420, 0x1e649: 0x6c25ca20, 0x1e64a: 0x6cb53a20, 0x1e64b: 0x6cdeb020,\n\t0x1e64c: 0x6cbae420, 0x1e64d: 0x6ca74020, 0x1e64e: 0x6c2ce020, 0x1e64f: 0x6ce38a20,\n\t0x1e650: 0x6c60ce20, 0x1e651: 0x6ca87e20, 0x1e652: 0x6cac7820, 0x1e653: 0x6c8e3a20,\n\t0x1e654: 0x6d29aa20, 0x1e655: 0x6c0a7a20, 0x1e656: 0x6c1cf220, 0x1e657: 0x6c931020,\n\t0x1e658: 0x6c8a4220, 0x1e659: 0x6c246e20, 0x1e65a: 0x6ce0da20, 0x1e65b: 0x6c27a420,\n\t0x1e65c: 0x6cdb5420, 0x1e65d: 0x6cf81e20, 0x1e65e: 0x6c7ce220, 0x1e65f: 0x6c5f7820,\n\t0x1e660: 0x6d34ae20, 0x1e661: 0x6cbaee20, 0x1e662: 0x6c2ba820, 0x1e663: 0x6cac8420,\n\t0x1e664: 0x6d3fd020, 0x1e665: 0x6c887020, 0x1e666: 0x6c085c20, 0x1e667: 0x6d2a2a20,\n\t0x1e668: 0x6ca74820, 0x1e669: 0x6c0d0220, 0x1e66a: 0x6ce9d220, 0x1e66b: 0x6c717e20,\n\t0x1e66c: 0x6c2ac020, 0x1e66d: 0x6c137020, 0x1e66e: 0x6cfaf420, 0x1e66f: 0x6c38dc20,\n\t0x1e670: 0x6c1ec820, 0x1e671: 0x6d37d820, 0x1e672: 0x6c33be20, 0x1e673: 0x6c0e9a20,\n\t0x1e674: 0x6c247420, 0x1e675: 0x6c247620, 0x1e676: 0x6c74f220, 0x1e677: 0x6c74f420,\n\t0x1e678: 0x6c8c7e20, 0x1e679: 0x6cde0620, 0x1e67a: 0x6cbbc420, 0x1e67b: 0x6c73bc20,\n\t0x1e67c: 0x6cb4a220, 0x1e67d: 0x6c89d420, 0x1e67e: 0x6c33c020, 0x1e67f: 0x6c249620,\n\t// Block 0x79a, offset 0x1e680\n\t0x1e680: 0x6c7c1220, 0x1e681: 0x6d2a9c20, 0x1e682: 0x6c26d220, 0x1e683: 0x6c0abc20,\n\t0x1e684: 0x6c0abe20, 0x1e685: 0x6d3a3820, 0x1e686: 0x6c72be20, 0x1e687: 0x6c1ec020,\n\t0x1e688: 0x6cbc7020, 0x1e689: 0x6c33d020, 0x1e68a: 0x6c1e0820, 0x1e68b: 0x6c5f9620,\n\t0x1e68c: 0x6cf48e20, 0x1e68d: 0x6d271820, 0x1e68e: 0x6ca74c20, 0x1e68f: 0x6c8c8220,\n\t0x1e690: 0x6c8b7620, 0x1e691: 0x6d34c020, 0x1e692: 0x6c878220, 0x1e693: 0x6d376a20,\n\t0x1e694: 0x6c156e20, 0x1e695: 0x6c1ece20, 0x1e696: 0x6c32e820, 0x1e697: 0x6cf12420,\n\t0x1e698: 0x6c900620, 0x1e699: 0x6c8c8c20, 0x1e69a: 0x6cfb0e20, 0x1e69b: 0x6cf12e20,\n\t0x1e69c: 0x6d414020, 0x1e69d: 0x6c801220, 0x1e69e: 0x6d028e20, 0x1e69f: 0x6cc4fa20,\n\t0x1e6a0: 0x6cc95e20, 0x1e6a1: 0x6ca8ce20, 0x1e6a2: 0x6cdef620, 0x1e6a3: 0x6cc22c20,\n\t0x1e6a4: 0x6c6c1220, 0x1e6a5: 0x6c249a20, 0x1e6a6: 0x6c260620, 0x1e6a7: 0x6cf83020,\n\t0x1e6a8: 0x6c7cc620, 0x1e6a9: 0x6c753a20, 0x1e6aa: 0x6c8c9020, 0x1e6ab: 0x6ccfa420,\n\t0x1e6ac: 0x6c457e20, 0x1e6ad: 0x6c27d820, 0x1e6ae: 0x6c3c0a20, 0x1e6af: 0x6cc10820,\n\t0x1e6b0: 0x6ce3c220, 0x1e6b1: 0x6c349e20, 0x1e6b2: 0x6c34a020, 0x1e6b3: 0x6c459a20,\n\t0x1e6b4: 0x6c80da20, 0x1e6b5: 0x6cc60e20, 0x1e6b6: 0x6c95be20, 0x1e6b7: 0x6c007620,\n\t0x1e6b8: 0x6c5f2420, 0x1e6b9: 0x6c715220, 0x1e6ba: 0x6ce18020, 0x1e6bb: 0x6c79ae20,\n\t0x1e6bc: 0x6c81de20, 0x1e6bd: 0x6d0dd820, 0x1e6be: 0x6c9abc20, 0x1e6bf: 0x6c775c20,\n\t// Block 0x79b, offset 0x1e6c0\n\t0x1e6c0: 0x6cc15420, 0x1e6c1: 0x6c90ce20, 0x1e6c2: 0x6c81ea20, 0x1e6c3: 0x6c34c020,\n\t0x1e6c4: 0x6d34b420, 0x1e6c5: 0x6d0f3c20, 0x1e6c6: 0x6ce3cc20, 0x1e6c7: 0x6c2a4e20,\n\t0x1e6c8: 0x6d1d7420, 0x1e6c9: 0x6d249a20, 0x1e6ca: 0x6c17ce20, 0x1e6cb: 0x6d0b8220,\n\t0x1e6cc: 0x6c4ade20, 0x1e6cd: 0x6c756420, 0x1e6ce: 0x6cf08220, 0x1e6cf: 0x6d269e20,\n\t0x1e6d0: 0x6d032c20, 0x1e6d1: 0x6c275420, 0x1e6d2: 0x6d078a20, 0x1e6d3: 0x6c393e20,\n\t0x1e6d4: 0x6cc5e420, 0x1e6d5: 0x6cccde20, 0x1e6d6: 0x6c7bc020, 0x1e6d7: 0x6cd4d620,\n\t0x1e6d8: 0x6cea5220, 0x1e6d9: 0x6c18c420, 0x1e6da: 0x6c276820, 0x1e6db: 0x6c361c20,\n\t0x1e6dc: 0x6ca34020, 0x1e6dd: 0x6cb5dc20, 0x1e6de: 0x6c98de20, 0x1e6df: 0x6cc86020,\n\t0x1e6e0: 0x6cc5ec20, 0x1e6e1: 0x6cb98c20, 0x1e6e2: 0x6d3ba620, 0x1e6e3: 0x6c52a020,\n\t0x1e6e4: 0x6c54d220, 0x1e6e5: 0x6cc19c20, 0x1e6e6: 0x6c7bfa20, 0x1e6e7: 0x6c2bfc20,\n\t0x1e6e8: 0x6c8d1220, 0x1e6e9: 0x6c277420, 0x1e6ea: 0x6c022c20, 0x1e6eb: 0x6d31e220,\n\t0x1e6ec: 0x6c395620, 0x1e6ed: 0x6c7baa20, 0x1e6ee: 0x6d102220, 0x1e6ef: 0x6cae7420,\n\t0x1e6f0: 0x6c072820, 0x1e6f1: 0x6c471420, 0x1e6f2: 0x6c471620, 0x1e6f3: 0x6cad5e20,\n\t0x1e6f4: 0x6d3b0420, 0x1e6f5: 0x6cc71020, 0x1e6f6: 0x6c364a20, 0x1e6f7: 0x6c038420,\n\t0x1e6f8: 0x6d38d420, 0x1e6f9: 0x6d353020, 0x1e6fa: 0x6d110020, 0x1e6fb: 0x6c780020,\n\t0x1e6fc: 0x6d17ca20, 0x1e6fd: 0x6d364420, 0x1e6fe: 0x6cd3a820, 0x1e6ff: 0x6cb2b820,\n\t// Block 0x79c, offset 0x1e700\n\t0x1e700: 0x6c375e20, 0x1e701: 0x6c45f420, 0x1e702: 0x6c713a20, 0x1e703: 0x6c69a820,\n\t0x1e704: 0x6c49ee20, 0x1e705: 0x6c514c20, 0x1e706: 0x6c766420, 0x1e707: 0x6cc30820,\n\t0x1e708: 0x6d389420, 0x1e709: 0x6d293c20, 0x1e70a: 0x6d367220, 0x1e70b: 0x6ccef620,\n\t0x1e70c: 0x6c89c420, 0x1e70d: 0x6d23ae20, 0x1e70e: 0x6cce7c20, 0x1e70f: 0x6d1f5c20,\n\t0x1e710: 0x6ced9020, 0x1e711: 0x6d1af820, 0x1e712: 0x6d307420, 0x1e713: 0x6ced3e20,\n\t0x1e714: 0x6c3f7c20, 0x1e715: 0x6cbe5420, 0x1e716: 0x6d38a620, 0x1e717: 0x6ca60620,\n\t0x1e718: 0x6c838420, 0x1e719: 0x6d308420, 0x1e71a: 0x6d2e7a20, 0x1e71b: 0x6c89ca20,\n\t0x1e71c: 0x6d3e8220, 0x1e71d: 0x6c5aee20, 0x1e71e: 0x6cee3820, 0x1e71f: 0x6c21d220,\n\t0x1e720: 0x6c4ccc20, 0x1e721: 0x6c76e820, 0x1e722: 0x6d160a20, 0x1e723: 0x6caec220,\n\t0x1e724: 0x6cba7a20, 0x1e725: 0x6c4be620, 0x1e726: 0x6ca73a20, 0x1e727: 0x6cb2c820,\n\t0x1e728: 0x6c496020, 0x1e729: 0x6c075220, 0x1e72a: 0x6c950e20, 0x1e72b: 0x6cac0420,\n\t0x1e72c: 0x6c896c20, 0x1e72d: 0x6cc88020, 0x1e72e: 0x6cc76220, 0x1e72f: 0x6c631020,\n\t0x1e730: 0x6d0fda20, 0x1e731: 0x6cfba020, 0x1e732: 0x6c201020, 0x1e733: 0x6c23fe20,\n\t0x1e734: 0x6c211c20, 0x1e735: 0x6c443c20, 0x1e736: 0x6d1f7220, 0x1e737: 0x6c52cc20,\n\t0x1e738: 0x6cd50820, 0x1e739: 0x6c405820, 0x1e73a: 0x6d3e9420, 0x1e73b: 0x6c3efc20,\n\t0x1e73c: 0x6cf16820, 0x1e73d: 0x6c07cc20, 0x1e73e: 0x6d2e2020, 0x1e73f: 0x6d21c020,\n\t// Block 0x79d, offset 0x1e740\n\t0x1e740: 0x6cf16a20, 0x1e741: 0x6ce1f420, 0x1e742: 0x6c47dc20, 0x1e743: 0x6d319e20,\n\t0x1e744: 0x6cfa0220, 0x1e745: 0x6d25b820, 0x1e746: 0x6c931220, 0x1e747: 0x6c689e20,\n\t0x1e748: 0x6c178620, 0x1e749: 0x6d3bb420, 0x1e74a: 0x6cf0f820, 0x1e74b: 0x6c5d0420,\n\t0x1e74c: 0x6d098c20, 0x1e74d: 0x6d30b820, 0x1e74e: 0x6c69d020, 0x1e74f: 0x6d2e9020,\n\t0x1e750: 0x6c102620, 0x1e751: 0x6c81c620, 0x1e752: 0x6c3ba820, 0x1e753: 0x6c386a20,\n\t0x1e754: 0x6c8bfc20, 0x1e755: 0x6c445220, 0x1e756: 0x6ccb8e20, 0x1e757: 0x6c76fc20,\n\t0x1e758: 0x6c58be20, 0x1e759: 0x6d162820, 0x1e75a: 0x6c60f020, 0x1e75b: 0x6d3cc020,\n\t0x1e75c: 0x6c377820, 0x1e75d: 0x6d246820, 0x1e75e: 0x6c671c20, 0x1e75f: 0x6c52e020,\n\t0x1e760: 0x6c829220, 0x1e761: 0x6cae2c20, 0x1e762: 0x6c878420, 0x1e763: 0x6c879a20,\n\t0x1e764: 0x6c91a020, 0x1e765: 0x6c8c9220, 0x1e766: 0x6c17ca20, 0x1e767: 0x6d0b6a20,\n\t0x1e768: 0x6c4ac020, 0x1e769: 0x6d077a20, 0x1e76a: 0x6c272a20, 0x1e76b: 0x6cc5ca20,\n\t0x1e76c: 0x6d3ba020, 0x1e76d: 0x6c35e220, 0x1e76e: 0x6c94e020, 0x1e76f: 0x6cc85420,\n\t0x1e770: 0x6c529820, 0x1e771: 0x6c46fa20, 0x1e772: 0x6c77ec20, 0x1e773: 0x6c914820,\n\t0x1e774: 0x6d38d020, 0x1e775: 0x6d350a20, 0x1e776: 0x6d171020, 0x1e777: 0x6c54b220,\n\t0x1e778: 0x6d31c420, 0x1e779: 0x6c85ba20, 0x1e77a: 0x6d10dc20, 0x1e77b: 0x6cbe3620,\n\t0x1e77c: 0x6cd36220, 0x1e77d: 0x6d293420, 0x1e77e: 0x6d35d020, 0x1e77f: 0x6c699620,\n\t// Block 0x79e, offset 0x1e780\n\t0x1e780: 0x6d386c20, 0x1e781: 0x6cc2d020, 0x1e782: 0x6c922e20, 0x1e783: 0x6c699820,\n\t0x1e784: 0x6d305420, 0x1e785: 0x6c3f6020, 0x1e786: 0x6c89b220, 0x1e787: 0x6ca72a20,\n\t0x1e788: 0x6c072a20, 0x1e789: 0x6c5abc20, 0x1e78a: 0x6c4bcc20, 0x1e78b: 0x6cee2620,\n\t0x1e78c: 0x6c895820, 0x1e78d: 0x6c21c420, 0x1e78e: 0x6d3e4820, 0x1e78f: 0x6c23f420,\n\t0x1e790: 0x6c3eae20, 0x1e791: 0x6c630c20, 0x1e792: 0x6cf15e20, 0x1e793: 0x6cd4f020,\n\t0x1e794: 0x6cae2020, 0x1e795: 0x6d259a20, 0x1e796: 0x6cf9e220, 0x1e797: 0x6ca72e20,\n\t0x1e798: 0x6c92c420, 0x1e799: 0x6d309420, 0x1e79a: 0x6c8be220, 0x1e79b: 0x6d02ae20,\n\t0x1e79c: 0x6c471820, 0x1e79d: 0x6c224a20, 0x1e79e: 0x6c225220, 0x1e79f: 0x6cb0a820,\n\t0x1e7a0: 0x6d41ba20, 0x1e7a1: 0x6c0bb020, 0x1e7a2: 0x6c7e8e20, 0x1e7a3: 0x6c7e9020,\n\t0x1e7a4: 0x6c226020, 0x1e7a5: 0x6d08ea20, 0x1e7a6: 0x6c050620, 0x1e7a7: 0x6c0bc020,\n\t0x1e7a8: 0x6c0bc220, 0x1e7a9: 0x6c0bc420, 0x1e7aa: 0x6d08ec20, 0x1e7ab: 0x6c0bcc20,\n\t0x1e7ac: 0x6c04a820, 0x1e7ad: 0x6c227e20, 0x1e7ae: 0x6c0bd620, 0x1e7af: 0x6c0bda20,\n\t0x1e7b0: 0x6c18a020, 0x1e7b1: 0x6cc7fc20, 0x1e7b2: 0x6ca9bc20, 0x1e7b3: 0x6ca9c220,\n\t0x1e7b4: 0x6c160420, 0x1e7b5: 0x6c21a820, 0x1e7b6: 0x6c21a420, 0x1e7b7: 0x6d198820,\n\t0x1e7b8: 0x6cc61820, 0x1e7b9: 0x6c0ae820, 0x1e7ba: 0x6c0aea20, 0x1e7bb: 0x6cd22e20,\n\t0x1e7bc: 0x6cc83220, 0x1e7bd: 0x6c89d620, 0x1e7be: 0x6c267620, 0x1e7bf: 0x6c14b620,\n\t// Block 0x79f, offset 0x1e7c0\n\t0x1e7c0: 0x6c416420, 0x1e7c1: 0x6cb8a020, 0x1e7c2: 0x6d207620, 0x1e7c3: 0x6d207820,\n\t0x1e7c4: 0x6cb73420, 0x1e7c5: 0x6d0a6820, 0x1e7c6: 0x6d145820, 0x1e7c7: 0x6c4ce420,\n\t0x1e7c8: 0x6c972020, 0x1e7c9: 0x6cb4ca20, 0x1e7ca: 0x6d288620, 0x1e7cb: 0x6cee4a20,\n\t0x1e7cc: 0x6ce91e20, 0x1e7cd: 0x6d3cca20, 0x1e7ce: 0x6d1c5820, 0x1e7cf: 0x6ce3d620,\n\t0x1e7d0: 0x6d281620, 0x1e7d1: 0x6c6cd620, 0x1e7d2: 0x6c4f5c20, 0x1e7d3: 0x6d0b7a20,\n\t0x1e7d4: 0x6c390620, 0x1e7d5: 0x6cf4b020, 0x1e7d6: 0x6c267820, 0x1e7d7: 0x6c354c20,\n\t0x1e7d8: 0x6c4d1c20, 0x1e7d9: 0x6d30e420, 0x1e7da: 0x6d384c20, 0x1e7db: 0x6c6cd820,\n\t0x1e7dc: 0x6d25de20, 0x1e7dd: 0x6ceee420, 0x1e7de: 0x6c87ee20, 0x1e7df: 0x6c1b0220,\n\t0x1e7e0: 0x6c180420, 0x1e7e1: 0x6ca68020, 0x1e7e2: 0x6ce57420, 0x1e7e3: 0x6d359020,\n\t0x1e7e4: 0x6d147c20, 0x1e7e5: 0x6c6efc20, 0x1e7e6: 0x6c633220, 0x1e7e7: 0x6c18a620,\n\t0x1e7e8: 0x6c273a20, 0x1e7e9: 0x6c378820, 0x1e7ea: 0x6c2b5e20, 0x1e7eb: 0x6cb36a20,\n\t0x1e7ec: 0x6d3ab620, 0x1e7ed: 0x6c2e6420, 0x1e7ee: 0x6d2ab020, 0x1e7ef: 0x6ce20620,\n\t0x1e7f0: 0x6cd5a220, 0x1e7f1: 0x6ceaf620, 0x1e7f2: 0x6cc28620, 0x1e7f3: 0x6c6e5020,\n\t0x1e7f4: 0x6c5b2a20, 0x1e7f5: 0x6c306820, 0x1e7f6: 0x6d203420, 0x1e7f7: 0x6c9c4020,\n\t0x1e7f8: 0x6c083c20, 0x1e7f9: 0x6c5e9c20, 0x1e7fa: 0x6ca39c20, 0x1e7fb: 0x6d14b220,\n\t0x1e7fc: 0x6c6a9a20, 0x1e7fd: 0x6d3c5820, 0x1e7fe: 0x6c8ade20, 0x1e7ff: 0x6d0a7420,\n\t// Block 0x7a0, offset 0x1e800\n\t0x1e800: 0x6ce9f620, 0x1e801: 0x6cd98420, 0x1e802: 0x6cd34a20, 0x1e803: 0x6ce20e20,\n\t0x1e804: 0x6cacf820, 0x1e805: 0x6c546820, 0x1e806: 0x6ca68a20, 0x1e807: 0x6c33e420,\n\t0x1e808: 0x6c6f0420, 0x1e809: 0x6d084620, 0x1e80a: 0x6d0a7620, 0x1e80b: 0x6c101220,\n\t0x1e80c: 0x6d1e9c20, 0x1e80d: 0x6cfeac20, 0x1e80e: 0x6cc03a20, 0x1e80f: 0x6ce82420,\n\t0x1e810: 0x6d3a0a20, 0x1e811: 0x6cc03c20, 0x1e812: 0x6c2c3420, 0x1e813: 0x6c2c3620,\n\t0x1e814: 0x6ce89a20, 0x1e815: 0x6c6e6c20, 0x1e816: 0x6ce3e620, 0x1e817: 0x6c310a20,\n\t0x1e818: 0x6d15e020, 0x1e819: 0x6d30ee20, 0x1e81a: 0x6ce6f220, 0x1e81b: 0x6c4a2020,\n\t0x1e81c: 0x6cf4da20, 0x1e81d: 0x6cd36420, 0x1e81e: 0x6c1a6a20, 0x1e81f: 0x6cda9820,\n\t0x1e820: 0x6d2a7a20, 0x1e821: 0x6cc43620, 0x1e822: 0x6c3ca420, 0x1e823: 0x6c87fa20,\n\t0x1e824: 0x6cddc820, 0x1e825: 0x6c5b3220, 0x1e826: 0x6c850e20, 0x1e827: 0x6c483620,\n\t0x1e828: 0x6c7f0220, 0x1e829: 0x6c07b820, 0x1e82a: 0x6c262420, 0x1e82b: 0x6c743e20,\n\t0x1e82c: 0x6c083e20, 0x1e82d: 0x6c591820, 0x1e82e: 0x6c271620, 0x1e82f: 0x6c924a20,\n\t0x1e830: 0x6d1f3220, 0x1e831: 0x6d387c20, 0x1e832: 0x6c6d0820, 0x1e833: 0x6d232620,\n\t0x1e834: 0x6c219620, 0x1e835: 0x6c7c6820, 0x1e836: 0x6cee7620, 0x1e837: 0x6ce3f020,\n\t0x1e838: 0x6d178420, 0x1e839: 0x6c26a220, 0x1e83a: 0x6d25e620, 0x1e83b: 0x6c954420,\n\t0x1e83c: 0x6c087420, 0x1e83d: 0x6caaf220, 0x1e83e: 0x6d213a20, 0x1e83f: 0x6c296a20,\n\t// Block 0x7a1, offset 0x1e840\n\t0x1e840: 0x6cdbf620, 0x1e841: 0x6c33f420, 0x1e842: 0x6cdc4220, 0x1e843: 0x6d0d9820,\n\t0x1e844: 0x6c1ffc20, 0x1e845: 0x6c1b2c20, 0x1e846: 0x6ce33420, 0x1e847: 0x6d235c20,\n\t0x1e848: 0x6cd26c20, 0x1e849: 0x6d315a20, 0x1e84a: 0x6d1f4020, 0x1e84b: 0x6d283820,\n\t0x1e84c: 0x6c364c20, 0x1e84d: 0x6c0ba420, 0x1e84e: 0x6c4cec20, 0x1e84f: 0x6c364e20,\n\t0x1e850: 0x6cf9ca20, 0x1e851: 0x6c59ca20, 0x1e852: 0x6cc07020, 0x1e853: 0x6c2a1820,\n\t0x1e854: 0x6c26ac20, 0x1e855: 0x6cef1620, 0x1e856: 0x6ca45020, 0x1e857: 0x6d150820,\n\t0x1e858: 0x6c46be20, 0x1e859: 0x6d111620, 0x1e85a: 0x6c1e4620, 0x1e85b: 0x6c8e7420,\n\t0x1e85c: 0x6d0a9820, 0x1e85d: 0x6cde6c20, 0x1e85e: 0x6c2c7420, 0x1e85f: 0x6c1b4020,\n\t0x1e860: 0x6d25ec20, 0x1e861: 0x6cdada20, 0x1e862: 0x6cde6e20, 0x1e863: 0x6cba1420,\n\t0x1e864: 0x6c96f220, 0x1e865: 0x6d111820, 0x1e866: 0x6c499c20, 0x1e867: 0x6d2ed220,\n\t0x1e868: 0x6c025820, 0x1e869: 0x6cd3bc20, 0x1e86a: 0x6c10ea20, 0x1e86b: 0x6c1c4e20,\n\t0x1e86c: 0x6cdaf620, 0x1e86d: 0x6d2a1c20, 0x1e86e: 0x6d300420, 0x1e86f: 0x6c340220,\n\t0x1e870: 0x6c2c8820, 0x1e871: 0x6c90ac20, 0x1e872: 0x6c1b5020, 0x1e873: 0x6c25c220,\n\t0x1e874: 0x6c8bd620, 0x1e875: 0x6d41f020, 0x1e876: 0x6cc54820, 0x1e877: 0x6cb91820,\n\t0x1e878: 0x6d085820, 0x1e879: 0x6d23d620, 0x1e87a: 0x6d154e20, 0x1e87b: 0x6cf51c20,\n\t0x1e87c: 0x6c8a1620, 0x1e87d: 0x6c729820, 0x1e87e: 0x6cd3e220, 0x1e87f: 0x6c0a6020,\n\t// Block 0x7a2, offset 0x1e880\n\t0x1e880: 0x6d10bc20, 0x1e881: 0x6c974220, 0x1e882: 0x6d022220, 0x1e883: 0x6cdc9420,\n\t0x1e884: 0x6c4d2a20, 0x1e885: 0x6d2d9e20, 0x1e886: 0x6ce2b020, 0x1e887: 0x6c37aa20,\n\t0x1e888: 0x6c9ea220, 0x1e889: 0x6c0b0c20, 0x1e88a: 0x6c0b1420, 0x1e88b: 0x6c7e5220,\n\t0x1e88c: 0x6c847a20, 0x1e88d: 0x6d25c820, 0x1e88e: 0x6d117620, 0x1e88f: 0x6c957c20,\n\t0x1e890: 0x6c854c20, 0x1e891: 0x6d169e20, 0x1e892: 0x6ce65a20, 0x1e893: 0x6c2ad420,\n\t0x1e894: 0x6cb6c420, 0x1e895: 0x6d1d8220, 0x1e896: 0x6cccb420, 0x1e897: 0x6c4dc820,\n\t0x1e898: 0x6d20a420, 0x1e899: 0x6c982220, 0x1e89a: 0x6cc78820, 0x1e89b: 0x6cbef620,\n\t0x1e89c: 0x6cedb420, 0x1e89d: 0x6c7bd620, 0x1e89e: 0x6c3d3620, 0x1e89f: 0x6c777a20,\n\t0x1e8a0: 0x6c0d2020, 0x1e8a1: 0x6c398220, 0x1e8a2: 0x6d03bc20, 0x1e8a3: 0x6ca30220,\n\t0x1e8a4: 0x6d02a620, 0x1e8a5: 0x6cd04220, 0x1e8a6: 0x6c051620, 0x1e8a7: 0x6d253620,\n\t0x1e8a8: 0x6c259020, 0x1e8a9: 0x6c5d8a20, 0x1e8aa: 0x6d006a20, 0x1e8ab: 0x6c052c20,\n\t0x1e8ac: 0x6cf34e20, 0x1e8ad: 0x6c720220, 0x1e8ae: 0x6d1ef620, 0x1e8af: 0x6c4dd020,\n\t0x1e8b0: 0x6cdf1220, 0x1e8b1: 0x6cbf9820, 0x1e8b2: 0x6c092220, 0x1e8b3: 0x6caf2e20,\n\t0x1e8b4: 0x6c0dbe20, 0x1e8b5: 0x6ccec620, 0x1e8b6: 0x6c06de20, 0x1e8b7: 0x6cec1020,\n\t0x1e8b8: 0x6c2bd020, 0x1e8b9: 0x6d404620, 0x1e8ba: 0x6d12c820, 0x1e8bb: 0x6c8b9e20,\n\t0x1e8bc: 0x6c7b8820, 0x1e8bd: 0x6c4a3c20, 0x1e8be: 0x6d398620, 0x1e8bf: 0x6cd19e20,\n\t// Block 0x7a3, offset 0x1e8c0\n\t0x1e8c0: 0x6c7a2c20, 0x1e8c1: 0x6d22dc20, 0x1e8c2: 0x6c40e020, 0x1e8c3: 0x6c50ce20,\n\t0x1e8c4: 0x6cbc9a20, 0x1e8c5: 0x6d359420, 0x1e8c6: 0x6c5fe620, 0x1e8c7: 0x6c585c20,\n\t0x1e8c8: 0x6c545e20, 0x1e8c9: 0x6d03c820, 0x1e8ca: 0x6c682a20, 0x1e8cb: 0x6cf76a20,\n\t0x1e8cc: 0x6c4a7620, 0x1e8cd: 0x6caab420, 0x1e8ce: 0x6c80a220, 0x1e8cf: 0x6c63a620,\n\t0x1e8d0: 0x6c7b1420, 0x1e8d1: 0x6d333e20, 0x1e8d2: 0x6c813820, 0x1e8d3: 0x6d281e20,\n\t0x1e8d4: 0x6d0c6c20, 0x1e8d5: 0x6c19c220, 0x1e8d6: 0x6c30fc20, 0x1e8d7: 0x6cf5ae20,\n\t0x1e8d8: 0x6c935220, 0x1e8d9: 0x6c3f4e20, 0x1e8da: 0x6cf3aa20, 0x1e8db: 0x6c3e2620,\n\t0x1e8dc: 0x6c433e20, 0x1e8dd: 0x6c500a20, 0x1e8de: 0x6c80a420, 0x1e8df: 0x6c63aa20,\n\t0x1e8e0: 0x6c44f020, 0x1e8e1: 0x6c759a20, 0x1e8e2: 0x6d1ce220, 0x1e8e3: 0x6c0eca20,\n\t0x1e8e4: 0x6cf86820, 0x1e8e5: 0x6c06f420, 0x1e8e6: 0x6c85bc20, 0x1e8e7: 0x6d279220,\n\t0x1e8e8: 0x6c108c20, 0x1e8e9: 0x6cff7a20, 0x1e8ea: 0x6cb4e020, 0x1e8eb: 0x6cafd420,\n\t0x1e8ec: 0x6cbe3c20, 0x1e8ed: 0x6c4c1a20, 0x1e8ee: 0x6d386e20, 0x1e8ef: 0x6cdfd820,\n\t0x1e8f0: 0x6d404c20, 0x1e8f1: 0x6cb27e20, 0x1e8f2: 0x6c7ef020, 0x1e8f3: 0x6ca5d020,\n\t0x1e8f4: 0x6c186220, 0x1e8f5: 0x6d1f2420, 0x1e8f6: 0x6c10b420, 0x1e8f7: 0x6cfd6820,\n\t0x1e8f8: 0x6c27d020, 0x1e8f9: 0x6c711e20, 0x1e8fa: 0x6d1dba20, 0x1e8fb: 0x6cbb7420,\n\t0x1e8fc: 0x6d13ea20, 0x1e8fd: 0x6c30a620, 0x1e8fe: 0x6d0d7220, 0x1e8ff: 0x6c99f220,\n\t// Block 0x7a4, offset 0x1e900\n\t0x1e900: 0x6cc91a20, 0x1e901: 0x6c071820, 0x1e902: 0x6c361e20, 0x1e903: 0x6cd4d820,\n\t0x1e904: 0x6c735e20, 0x1e905: 0x6d225220, 0x1e906: 0x6d282820, 0x1e907: 0x6c53f420,\n\t0x1e908: 0x6c7c6a20, 0x1e909: 0x6cfd6e20, 0x1e90a: 0x6cfd7020, 0x1e90b: 0x6cd9a820,\n\t0x1e90c: 0x6ce0f820, 0x1e90d: 0x6ca00220, 0x1e90e: 0x6cf63220, 0x1e90f: 0x6cc7fe20,\n\t0x1e910: 0x6c1f4c20, 0x1e911: 0x6d3e4a20, 0x1e912: 0x6d405820, 0x1e913: 0x6d12f820,\n\t0x1e914: 0x6cf36c20, 0x1e915: 0x6cfd7c20, 0x1e916: 0x6d27a820, 0x1e917: 0x6c504220,\n\t0x1e918: 0x6d1d9220, 0x1e919: 0x6c08e620, 0x1e91a: 0x6c998820, 0x1e91b: 0x6c176420,\n\t0x1e91c: 0x6c3d8620, 0x1e91d: 0x6c8a6e20, 0x1e91e: 0x6d1a7820, 0x1e91f: 0x6d3b8020,\n\t0x1e920: 0x6c56a820, 0x1e921: 0x6cbb8220, 0x1e922: 0x6d0c1820, 0x1e923: 0x6d2ebc20,\n\t0x1e924: 0x6c97e020, 0x1e925: 0x6cbb8420, 0x1e926: 0x6d065020, 0x1e927: 0x6c2adc20,\n\t0x1e928: 0x6c0a9c20, 0x1e929: 0x6d0a2820, 0x1e92a: 0x6c0a0c20, 0x1e92b: 0x6d2b8420,\n\t0x1e92c: 0x6cef2620, 0x1e92d: 0x6d335820, 0x1e92e: 0x6c99a820, 0x1e92f: 0x6ccd9620,\n\t0x1e930: 0x6c8bc820, 0x1e931: 0x6cb33420, 0x1e932: 0x6c27f020, 0x1e933: 0x6c9b4020,\n\t0x1e934: 0x6d133220, 0x1e935: 0x6c12b820, 0x1e936: 0x6c7b3620, 0x1e937: 0x6c3c6420,\n\t0x1e938: 0x6c9b4220, 0x1e939: 0x6d406420, 0x1e93a: 0x6c7c0220, 0x1e93b: 0x6c88d020,\n\t0x1e93c: 0x6d29a220, 0x1e93d: 0x6c153020, 0x1e93e: 0x6d1eb820, 0x1e93f: 0x6c5f6420,\n\t// Block 0x7a5, offset 0x1e940\n\t0x1e940: 0x6d0ed820, 0x1e941: 0x6c154820, 0x1e942: 0x6c25f820, 0x1e943: 0x6c8d8820,\n\t0x1e944: 0x6c583a20, 0x1e945: 0x6cf74020, 0x1e946: 0x6c3c7820, 0x1e947: 0x6d29b620,\n\t0x1e948: 0x6c875820, 0x1e949: 0x6d1fa420, 0x1e94a: 0x6c2f5a20, 0x1e94b: 0x6cc02020,\n\t0x1e94c: 0x6d3d4020, 0x1e94d: 0x6cae1820, 0x1e94e: 0x6d391e20, 0x1e94f: 0x6d15e220,\n\t0x1e950: 0x6c418e20, 0x1e951: 0x6d20fe20, 0x1e952: 0x6c6fba20, 0x1e953: 0x6d0d7420,\n\t0x1e954: 0x6d41ae20, 0x1e955: 0x6c98e020, 0x1e956: 0x6d323e20, 0x1e957: 0x6d06c820,\n\t0x1e958: 0x6c311820, 0x1e959: 0x6d315420, 0x1e95a: 0x6c3b3020, 0x1e95b: 0x6d263e20,\n\t0x1e95c: 0x6c40ae20, 0x1e95d: 0x6d282a20, 0x1e95e: 0x6cdf7220, 0x1e95f: 0x6ce46a20,\n\t0x1e960: 0x6cb83a20, 0x1e961: 0x6ceb2c20, 0x1e962: 0x6c243e20, 0x1e963: 0x6c4da820,\n\t0x1e964: 0x6c471a20, 0x1e965: 0x6cda5020, 0x1e966: 0x6c37ee20, 0x1e967: 0x6c1dc620,\n\t0x1e968: 0x6d293e20, 0x1e969: 0x6ca03a20, 0x1e96a: 0x6c81d620, 0x1e96b: 0x6c21ca20,\n\t0x1e96c: 0x6c1e4e20, 0x1e96d: 0x6d205020, 0x1e96e: 0x6ce76020, 0x1e96f: 0x6d353c20,\n\t0x1e970: 0x6cfab420, 0x1e971: 0x6c67ec20, 0x1e972: 0x6c1a3020, 0x1e973: 0x6d1b6c20,\n\t0x1e974: 0x6ce8e220, 0x1e975: 0x6c69b220, 0x1e976: 0x6c9a1a20, 0x1e977: 0x6c7aa420,\n\t0x1e978: 0x6cdb8820, 0x1e979: 0x6c833c20, 0x1e97a: 0x6cb44420, 0x1e97b: 0x6d41c220,\n\t0x1e97c: 0x6c4d4420, 0x1e97d: 0x6d0e9c20, 0x1e97e: 0x6ccc8c20, 0x1e97f: 0x6ca77e20,\n\t// Block 0x7a6, offset 0x1e980\n\t0x1e980: 0x6cef3420, 0x1e981: 0x6c92c620, 0x1e982: 0x6c803620, 0x1e983: 0x6d0c2c20,\n\t0x1e984: 0x6ce23820, 0x1e985: 0x6cadc220, 0x1e986: 0x6d2e1220, 0x1e987: 0x6c215e20,\n\t0x1e988: 0x6ce00a20, 0x1e989: 0x6d41ca20, 0x1e98a: 0x6d3ca620, 0x1e98b: 0x6c246020,\n\t0x1e98c: 0x6c7d8220, 0x1e98d: 0x6ce38220, 0x1e98e: 0x6cfba220, 0x1e98f: 0x6c317620,\n\t0x1e990: 0x6c55c420, 0x1e991: 0x6d065c20, 0x1e992: 0x6d040820, 0x1e993: 0x6ce07c20,\n\t0x1e994: 0x6cc09a20, 0x1e995: 0x6c216420, 0x1e996: 0x6d285a20, 0x1e997: 0x6cb3a620,\n\t0x1e998: 0x6c783620, 0x1e999: 0x6cd9e620, 0x1e99a: 0x6c9c7620, 0x1e99b: 0x6cc31820,\n\t0x1e99c: 0x6c1e3220, 0x1e99d: 0x6c25cc20, 0x1e99e: 0x6d285e20, 0x1e99f: 0x6d1e7e20,\n\t0x1e9a0: 0x6c022220, 0x1e9a1: 0x6d2ce420, 0x1e9a2: 0x6c4d4a20, 0x1e9a3: 0x6ce14a20,\n\t0x1e9a4: 0x6c680020, 0x1e9a5: 0x6cb1a220, 0x1e9a6: 0x6c191820, 0x1e9a7: 0x6d244020,\n\t0x1e9a8: 0x6c846620, 0x1e9a9: 0x6d2a2c20, 0x1e9aa: 0x6c818620, 0x1e9ab: 0x6d142c20,\n\t0x1e9ac: 0x6c680a20, 0x1e9ad: 0x6c102820, 0x1e9ae: 0x6c69d420, 0x1e9af: 0x6cf71e20,\n\t0x1e9b0: 0x6ce03c20, 0x1e9b1: 0x6c37f220, 0x1e9b2: 0x6ca9dc20, 0x1e9b3: 0x6d193620,\n\t0x1e9b4: 0x6c854620, 0x1e9b5: 0x6c72c020, 0x1e9b6: 0x6d0efc20, 0x1e9b7: 0x6d193820,\n\t0x1e9b8: 0x6ca78020, 0x1e9b9: 0x6cc7ec20, 0x1e9ba: 0x6d09cc20, 0x1e9bb: 0x6c1e0a20,\n\t0x1e9bc: 0x6d0f1220, 0x1e9bd: 0x6c8db420, 0x1e9be: 0x6c9cc820, 0x1e9bf: 0x6c9cca20,\n\t// Block 0x7a7, offset 0x1e9c0\n\t0x1e9c0: 0x6ca78420, 0x1e9c1: 0x6d036020, 0x1e9c2: 0x6c69ea20, 0x1e9c3: 0x6ccc9620,\n\t0x1e9c4: 0x6c9cd420, 0x1e9c5: 0x6d0f2420, 0x1e9c6: 0x6c0b7820, 0x1e9c7: 0x6c111e20,\n\t0x1e9c8: 0x6cd37620, 0x1e9c9: 0x6d204a20, 0x1e9ca: 0x6cd39220, 0x1e9cb: 0x6cd40220,\n\t0x1e9cc: 0x6c84fc20, 0x1e9cd: 0x6d382020, 0x1e9ce: 0x6d12aa20, 0x1e9cf: 0x6c89c020,\n\t0x1e9d0: 0x6c847c20, 0x1e9d1: 0x6c6c2e20, 0x1e9d2: 0x6c6d7c20, 0x1e9d3: 0x6cc02220,\n\t0x1e9d4: 0x6d15d820, 0x1e9d5: 0x6c8a6c20, 0x1e9d6: 0x6c29c020, 0x1e9d7: 0x6d2f6220,\n\t0x1e9d8: 0x6c2f5c20, 0x1e9d9: 0x6cb38220, 0x1e9da: 0x6cc04220, 0x1e9db: 0x6c034220,\n\t0x1e9dc: 0x6c3f5620, 0x1e9dd: 0x6d314820, 0x1e9de: 0x6d344a20, 0x1e9df: 0x6c034420,\n\t0x1e9e0: 0x6c949820, 0x1e9e1: 0x6c3f5820, 0x1e9e2: 0x6ca3a020, 0x1e9e3: 0x6c2e2020,\n\t0x1e9e4: 0x6ccd8620, 0x1e9e5: 0x6cbc2220, 0x1e9e6: 0x6c79ea20, 0x1e9e7: 0x6c203420,\n\t0x1e9e8: 0x6d3f0e20, 0x1e9e9: 0x6c390e20, 0x1e9ea: 0x6c573620, 0x1e9eb: 0x6c573820,\n\t0x1e9ec: 0x6c4eb820, 0x1e9ed: 0x6c427c20, 0x1e9ee: 0x6cb5de20, 0x1e9ef: 0x6c985c20,\n\t0x1e9f0: 0x6cc64620, 0x1e9f1: 0x6c2c5220, 0x1e9f2: 0x6cd8be20, 0x1e9f3: 0x6cf87e20,\n\t0x1e9f4: 0x6d178620, 0x1e9f5: 0x6c146620, 0x1e9f6: 0x6cd1b620, 0x1e9f7: 0x6ce91a20,\n\t0x1e9f8: 0x6cf60620, 0x1e9f9: 0x6caa7420, 0x1e9fa: 0x6cb8dc20, 0x1e9fb: 0x6cc0c020,\n\t0x1e9fc: 0x6c668420, 0x1e9fd: 0x6cb09a20, 0x1e9fe: 0x6d128220, 0x1e9ff: 0x6c6c4820,\n\t// Block 0x7a8, offset 0x1ea00\n\t0x1ea00: 0x6c03a020, 0x1ea01: 0x6c399620, 0x1ea02: 0x6c18d020, 0x1ea03: 0x6d03ee20,\n\t0x1ea04: 0x6c30ee20, 0x1ea05: 0x6d26c220, 0x1ea06: 0x6cb8e620, 0x1ea07: 0x6c3d7820,\n\t0x1ea08: 0x6caf6820, 0x1ea09: 0x6ca34820, 0x1ea0a: 0x6d02d820, 0x1ea0b: 0x6c356e20,\n\t0x1ea0c: 0x6c746020, 0x1ea0d: 0x6c33f820, 0x1ea0e: 0x6c464c20, 0x1ea0f: 0x6d1ae620,\n\t0x1ea10: 0x6cb99a20, 0x1ea11: 0x6c04ce20, 0x1ea12: 0x6cc97620, 0x1ea13: 0x6cc57220,\n\t0x1ea14: 0x6c174a20, 0x1ea15: 0x6ca99620, 0x1ea16: 0x6c3b3220, 0x1ea17: 0x6d27ec20,\n\t0x1ea18: 0x6c614620, 0x1ea19: 0x6cbd7820, 0x1ea1a: 0x6caf6a20, 0x1ea1b: 0x6c4c2020,\n\t0x1ea1c: 0x6c535a20, 0x1ea1d: 0x6d1a6c20, 0x1ea1e: 0x6c757220, 0x1ea1f: 0x6cd1ca20,\n\t0x1ea20: 0x6d17ce20, 0x1ea21: 0x6d37ba20, 0x1ea22: 0x6cf7f020, 0x1ea23: 0x6c413a20,\n\t0x1ea24: 0x6cc64820, 0x1ea25: 0x6c5d8e20, 0x1ea26: 0x6cdf7620, 0x1ea27: 0x6c778820,\n\t0x1ea28: 0x6d264020, 0x1ea29: 0x6c934a20, 0x1ea2a: 0x6c365020, 0x1ea2b: 0x6cf21c20,\n\t0x1ea2c: 0x6c345420, 0x1ea2d: 0x6d3e7220, 0x1ea2e: 0x6ca64020, 0x1ea2f: 0x6ce8d020,\n\t0x1ea30: 0x6cd3aa20, 0x1ea31: 0x6c9f6820, 0x1ea32: 0x6c472220, 0x1ea33: 0x6c780e20,\n\t0x1ea34: 0x6c8d2420, 0x1ea35: 0x6c0dec20, 0x1ea36: 0x6cd8d020, 0x1ea37: 0x6c47a420,\n\t0x1ea38: 0x6c0f1c20, 0x1ea39: 0x6caf7820, 0x1ea3a: 0x6d238420, 0x1ea3b: 0x6cd8d220,\n\t0x1ea3c: 0x6d424820, 0x1ea3d: 0x6c101820, 0x1ea3e: 0x6d1f5020, 0x1ea3f: 0x6ce4b020,\n\t// Block 0x7a9, offset 0x1ea40\n\t0x1ea40: 0x6c642220, 0x1ea41: 0x6d317620, 0x1ea42: 0x6cd2d420, 0x1ea43: 0x6cd3ac20,\n\t0x1ea44: 0x6d347a20, 0x1ea45: 0x6c725220, 0x1ea46: 0x6c14d220, 0x1ea47: 0x6cd1da20,\n\t0x1ea48: 0x6cd1dc20, 0x1ea49: 0x6d089e20, 0x1ea4a: 0x6d2f6820, 0x1ea4b: 0x6c065420,\n\t0x1ea4c: 0x6c514e20, 0x1ea4d: 0x6c09e620, 0x1ea4e: 0x6cd10e20, 0x1ea4f: 0x6c1e9620,\n\t0x1ea50: 0x6cd27820, 0x1ea51: 0x6c0f1e20, 0x1ea52: 0x6d3b0e20, 0x1ea53: 0x6c1c3820,\n\t0x1ea54: 0x6d289220, 0x1ea55: 0x6cb31420, 0x1ea56: 0x6ce76220, 0x1ea57: 0x6cb9aa20,\n\t0x1ea58: 0x6c3eb020, 0x1ea59: 0x6d2d3020, 0x1ea5a: 0x6c8f0c20, 0x1ea5b: 0x6cb8f820,\n\t0x1ea5c: 0x6c3eb220, 0x1ea5d: 0x6c864020, 0x1ea5e: 0x6d26ca20, 0x1ea5f: 0x6caf7a20,\n\t0x1ea60: 0x6d0f5e20, 0x1ea61: 0x6c04fe20, 0x1ea62: 0x6c0e8020, 0x1ea63: 0x6c6b0020,\n\t0x1ea64: 0x6c465420, 0x1ea65: 0x6cd5ec20, 0x1ea66: 0x6d32da20, 0x1ea67: 0x6ca24c20,\n\t0x1ea68: 0x6cf7f220, 0x1ea69: 0x6cf7f420, 0x1ea6a: 0x6c2c7620, 0x1ea6b: 0x6c637420,\n\t0x1ea6c: 0x6ca29e20, 0x1ea6d: 0x6ce06420, 0x1ea6e: 0x6c588820, 0x1ea6f: 0x6d15f220,\n\t0x1ea70: 0x6cd7fa20, 0x1ea71: 0x6c7bfe20, 0x1ea72: 0x6c761e20, 0x1ea73: 0x6c06ce20,\n\t0x1ea74: 0x6c66a020, 0x1ea75: 0x6ce77020, 0x1ea76: 0x6d03f420, 0x1ea77: 0x6c537820,\n\t0x1ea78: 0x6c691c20, 0x1ea79: 0x6c1bbc20, 0x1ea7a: 0x6c37d820, 0x1ea7b: 0x6c961a20,\n\t0x1ea7c: 0x6c0dee20, 0x1ea7d: 0x6cd3be20, 0x1ea7e: 0x6ca1dc20, 0x1ea7f: 0x6c637820,\n\t// Block 0x7aa, offset 0x1ea80\n\t0x1ea80: 0x6d1a8620, 0x1ea81: 0x6c757c20, 0x1ea82: 0x6d389e20, 0x1ea83: 0x6c1d5620,\n\t0x1ea84: 0x6cfdf620, 0x1ea85: 0x6ce77220, 0x1ea86: 0x6ca14220, 0x1ea87: 0x6c833e20,\n\t0x1ea88: 0x6c5f0e20, 0x1ea89: 0x6d23b020, 0x1ea8a: 0x6d071e20, 0x1ea8b: 0x6cc57820,\n\t0x1ea8c: 0x6d421a20, 0x1ea8d: 0x6d36a220, 0x1ea8e: 0x6cbf4c20, 0x1ea8f: 0x6ccd8e20,\n\t0x1ea90: 0x6c1c5020, 0x1ea91: 0x6cfc2220, 0x1ea92: 0x6d03f620, 0x1ea93: 0x6cc30e20,\n\t0x1ea94: 0x6caf8020, 0x1ea95: 0x6ce5fe20, 0x1ea96: 0x6d39c020, 0x1ea97: 0x6cfe4820,\n\t0x1ea98: 0x6ca01220, 0x1ea99: 0x6c7ada20, 0x1ea9a: 0x6d112c20, 0x1ea9b: 0x6cfac220,\n\t0x1ea9c: 0x6cfb7620, 0x1ea9d: 0x6d04ea20, 0x1ea9e: 0x6c757e20, 0x1ea9f: 0x6c13aa20,\n\t0x1eaa0: 0x6c81b620, 0x1eaa1: 0x6c607820, 0x1eaa2: 0x6cb06620, 0x1eaa3: 0x6cc7ba20,\n\t0x1eaa4: 0x6c9cfe20, 0x1eaa5: 0x6d140820, 0x1eaa6: 0x6d19fa20, 0x1eaa7: 0x6c49f220,\n\t0x1eaa8: 0x6c019020, 0x1eaa9: 0x6c2fd420, 0x1eaaa: 0x6d1fe020, 0x1eaab: 0x6ccb3820,\n\t0x1eaac: 0x6c77c620, 0x1eaad: 0x6cb9b620, 0x1eaae: 0x6c944220, 0x1eaaf: 0x6cd90020,\n\t0x1eab0: 0x6c003020, 0x1eab1: 0x6c2e3220, 0x1eab2: 0x6c4efe20, 0x1eab3: 0x6cc8de20,\n\t0x1eab4: 0x6cd3cc20, 0x1eab5: 0x6c795020, 0x1eab6: 0x6cc09220, 0x1eab7: 0x6cff0c20,\n\t0x1eab8: 0x6d308620, 0x1eab9: 0x6d054e20, 0x1eaba: 0x6d2a0c20, 0x1eabb: 0x6ce37020,\n\t0x1eabc: 0x6c263820, 0x1eabd: 0x6c487020, 0x1eabe: 0x6c53d220, 0x1eabf: 0x6d37c820,\n\t// Block 0x7ab, offset 0x1eac0\n\t0x1eac0: 0x6ce7de20, 0x1eac1: 0x6c93ac20, 0x1eac2: 0x6c9a2220, 0x1eac3: 0x6c80e220,\n\t0x1eac4: 0x6ced4a20, 0x1eac5: 0x6d02e620, 0x1eac6: 0x6d27c420, 0x1eac7: 0x6c075420,\n\t0x1eac8: 0x6cf51e20, 0x1eac9: 0x6cdb0c20, 0x1eaca: 0x6d23dc20, 0x1eacb: 0x6c151420,\n\t0x1eacc: 0x6c2fb620, 0x1eacd: 0x6c0f4e20, 0x1eace: 0x6c4f0020, 0x1eacf: 0x6c63de20,\n\t0x1ead0: 0x6c538420, 0x1ead1: 0x6c249220, 0x1ead2: 0x6c3c6620, 0x1ead3: 0x6c14d620,\n\t0x1ead4: 0x6ced4c20, 0x1ead5: 0x6d36d020, 0x1ead6: 0x6cd82620, 0x1ead7: 0x6d07ca20,\n\t0x1ead8: 0x6c575620, 0x1ead9: 0x6d228220, 0x1eada: 0x6ce59e20, 0x1eadb: 0x6c45fa20,\n\t0x1eadc: 0x6d3d9420, 0x1eadd: 0x6c94bc20, 0x1eade: 0x6d03fc20, 0x1eadf: 0x6cbde620,\n\t0x1eae0: 0x6cd0c420, 0x1eae1: 0x6c4e2e20, 0x1eae2: 0x6c94be20, 0x1eae3: 0x6d128a20,\n\t0x1eae4: 0x6c1eac20, 0x1eae5: 0x6d2bae20, 0x1eae6: 0x6c70c420, 0x1eae7: 0x6cfd0220,\n\t0x1eae8: 0x6ce60020, 0x1eae9: 0x6c987020, 0x1eaea: 0x6cb4b420, 0x1eaeb: 0x6c843620,\n\t0x1eaec: 0x6cacc020, 0x1eaed: 0x6cc8e020, 0x1eaee: 0x6c1a3220, 0x1eaef: 0x6c435820,\n\t0x1eaf0: 0x6c852820, 0x1eaf1: 0x6ce28220, 0x1eaf2: 0x6c0e4420, 0x1eaf3: 0x6d3b2420,\n\t0x1eaf4: 0x6d327e20, 0x1eaf5: 0x6ce87a20, 0x1eaf6: 0x6c8f1820, 0x1eaf7: 0x6d41d420,\n\t0x1eaf8: 0x6c729a20, 0x1eaf9: 0x6c16fa20, 0x1eafa: 0x6d25f020, 0x1eafb: 0x6c66d820,\n\t0x1eafc: 0x6c429220, 0x1eafd: 0x6c2e4020, 0x1eafe: 0x6ce24020, 0x1eaff: 0x6c16c620,\n\t// Block 0x7ac, offset 0x1eb00\n\t0x1eb00: 0x6c951020, 0x1eb01: 0x6c4cd020, 0x1eb02: 0x6c8d5c20, 0x1eb03: 0x6c06ba20,\n\t0x1eb04: 0x6c92de20, 0x1eb05: 0x6c845020, 0x1eb06: 0x6cbade20, 0x1eb07: 0x6cb3e220,\n\t0x1eb08: 0x6c732e20, 0x1eb09: 0x6c9f7a20, 0x1eb0a: 0x6d41d620, 0x1eb0b: 0x6caeca20,\n\t0x1eb0c: 0x6c01d020, 0x1eb0d: 0x6caf9020, 0x1eb0e: 0x6cfd1420, 0x1eb0f: 0x6d0afa20,\n\t0x1eb10: 0x6d3c6820, 0x1eb11: 0x6c834620, 0x1eb12: 0x6c783220, 0x1eb13: 0x6c798a20,\n\t0x1eb14: 0x6cdea820, 0x1eb15: 0x6c7d8420, 0x1eb16: 0x6c31bc20, 0x1eb17: 0x6ca59020,\n\t0x1eb18: 0x6c20e220, 0x1eb19: 0x6d3e9820, 0x1eb1a: 0x6d32ec20, 0x1eb1b: 0x6c078c20,\n\t0x1eb1c: 0x6ca87620, 0x1eb1d: 0x6d403620, 0x1eb1e: 0x6c216620, 0x1eb1f: 0x6ce01420,\n\t0x1eb20: 0x6c2fba20, 0x1eb21: 0x6cb65420, 0x1eb22: 0x6cb9cc20, 0x1eb23: 0x6d3cac20,\n\t0x1eb24: 0x6c5f4820, 0x1eb25: 0x6d23fa20, 0x1eb26: 0x6c6cb620, 0x1eb27: 0x6c496620,\n\t0x1eb28: 0x6c990820, 0x1eb29: 0x6c167c20, 0x1eb2a: 0x6ce51c20, 0x1eb2b: 0x6cf6de20,\n\t0x1eb2c: 0x6c891e20, 0x1eb2d: 0x6ce24220, 0x1eb2e: 0x6c482820, 0x1eb2f: 0x6c263a20,\n\t0x1eb30: 0x6cd61420, 0x1eb31: 0x6d319c20, 0x1eb32: 0x6c92e020, 0x1eb33: 0x6c9be820,\n\t0x1eb34: 0x6c92e220, 0x1eb35: 0x6c571820, 0x1eb36: 0x6c0c8020, 0x1eb37: 0x6c40cc20,\n\t0x1eb38: 0x6c7f2c20, 0x1eb39: 0x6c790e20, 0x1eb3a: 0x6c39ec20, 0x1eb3b: 0x6cf55820,\n\t0x1eb3c: 0x6ca3d820, 0x1eb3d: 0x6ced9c20, 0x1eb3e: 0x6d299c20, 0x1eb3f: 0x6c570020,\n\t// Block 0x7ad, offset 0x1eb40\n\t0x1eb40: 0x6c2a8620, 0x1eb41: 0x6cfada20, 0x1eb42: 0x6cb10220, 0x1eb43: 0x6c5d6020,\n\t0x1eb44: 0x6c89cc20, 0x1eb45: 0x6c384820, 0x1eb46: 0x6c9ad820, 0x1eb47: 0x6c767220,\n\t0x1eb48: 0x6d1bf220, 0x1eb49: 0x6c2b4a20, 0x1eb4a: 0x6c892220, 0x1eb4b: 0x6c4c4020,\n\t0x1eb4c: 0x6cfc3620, 0x1eb4d: 0x6c328220, 0x1eb4e: 0x6ce8fc20, 0x1eb4f: 0x6cef4420,\n\t0x1eb50: 0x6d3fca20, 0x1eb51: 0x6c406a20, 0x1eb52: 0x6cc76620, 0x1eb53: 0x6c60d220,\n\t0x1eb54: 0x6c36ba20, 0x1eb55: 0x6c758620, 0x1eb56: 0x6c191420, 0x1eb57: 0x6ce38c20,\n\t0x1eb58: 0x6d2c5820, 0x1eb59: 0x6c56d420, 0x1eb5a: 0x6d0fe020, 0x1eb5b: 0x6c32de20,\n\t0x1eb5c: 0x6cfa0420, 0x1eb5d: 0x6d21c220, 0x1eb5e: 0x6c795a20, 0x1eb5f: 0x6d03aa20,\n\t0x1eb60: 0x6c5a1020, 0x1eb61: 0x6cf03220, 0x1eb62: 0x6c406c20, 0x1eb63: 0x6d2f7620,\n\t0x1eb64: 0x6c13b620, 0x1eb65: 0x6cbcee20, 0x1eb66: 0x6cd20620, 0x1eb67: 0x6c52d620,\n\t0x1eb68: 0x6c7ca820, 0x1eb69: 0x6ce51e20, 0x1eb6a: 0x6ca1ee20, 0x1eb6b: 0x6cbbbc20,\n\t0x1eb6c: 0x6cbbbe20, 0x1eb6d: 0x6c543820, 0x1eb6e: 0x6ce7e020, 0x1eb6f: 0x6c236c20,\n\t0x1eb70: 0x6c58ae20, 0x1eb71: 0x6d136620, 0x1eb72: 0x6c9f7e20, 0x1eb73: 0x6c66e620,\n\t0x1eb74: 0x6c32a420, 0x1eb75: 0x6c66da20, 0x1eb76: 0x6cd94220, 0x1eb77: 0x6c7caa20,\n\t0x1eb78: 0x6c55d220, 0x1eb79: 0x6d07d820, 0x1eb7a: 0x6c34b620, 0x1eb7b: 0x6c6b4a20,\n\t0x1eb7c: 0x6d31a020, 0x1eb7d: 0x6c0b0e20, 0x1eb7e: 0x6d37d020, 0x1eb7f: 0x6d3ea220,\n\t// Block 0x7ae, offset 0x1eb80\n\t0x1eb80: 0x6d04fe20, 0x1eb81: 0x6d129020, 0x1eb82: 0x6c9a6e20, 0x1eb83: 0x6cac3420,\n\t0x1eb84: 0x6c003620, 0x1eb85: 0x6c6c0c20, 0x1eb86: 0x6cba9420, 0x1eb87: 0x6c9a3220,\n\t0x1eb88: 0x6cdda220, 0x1eb89: 0x6c26ca20, 0x1eb8a: 0x6c059620, 0x1eb8b: 0x6cfa0a20,\n\t0x1eb8c: 0x6c887a20, 0x1eb8d: 0x6cddaa20, 0x1eb8e: 0x6c769a20, 0x1eb8f: 0x6c8ec020,\n\t0x1eb90: 0x6d116420, 0x1eb91: 0x6d137420, 0x1eb92: 0x6caa2e20, 0x1eb93: 0x6cf23e20,\n\t0x1eb94: 0x6cc6d420, 0x1eb95: 0x6ce15420, 0x1eb96: 0x6cddac20, 0x1eb97: 0x6cbaf220,\n\t0x1eb98: 0x6c86e020, 0x1eb99: 0x6cd7a620, 0x1eb9a: 0x6c20e420, 0x1eb9b: 0x6c0f9620,\n\t0x1eb9c: 0x6cac8620, 0x1eb9d: 0x6c266e20, 0x1eb9e: 0x6c089620, 0x1eb9f: 0x6cca9020,\n\t0x1eba0: 0x6c429420, 0x1eba1: 0x6d3ea620, 0x1eba2: 0x6cf38c20, 0x1eba3: 0x6d1cb420,\n\t0x1eba4: 0x6c5a7e20, 0x1eba5: 0x6ce5aa20, 0x1eba6: 0x6c8ec220, 0x1eba7: 0x6c767420,\n\t0x1eba8: 0x6cdd0220, 0x1eba9: 0x6ccc2220, 0x1ebaa: 0x6cd9f020, 0x1ebab: 0x6ceda820,\n\t0x1ebac: 0x6c507620, 0x1ebad: 0x6d327020, 0x1ebae: 0x6d327220, 0x1ebaf: 0x6c80e820,\n\t0x1ebb0: 0x6d18fc20, 0x1ebb1: 0x6d25c420, 0x1ebb2: 0x6ce18620, 0x1ebb3: 0x6ca88a20,\n\t0x1ebb4: 0x6cf7b020, 0x1ebb5: 0x6c638c20, 0x1ebb6: 0x6c43ba20, 0x1ebb7: 0x6c96a820,\n\t0x1ebb8: 0x6c730620, 0x1ebb9: 0x6cd9a220, 0x1ebba: 0x6d413420, 0x1ebbb: 0x6cddae20,\n\t0x1ebbc: 0x6cfa5620, 0x1ebbd: 0x6c3d0220, 0x1ebbe: 0x6cf21e20, 0x1ebbf: 0x6ca2ec20,\n\t// Block 0x7af, offset 0x1ebc0\n\t0x1ebc0: 0x6c91fa20, 0x1ebc1: 0x6cddb020, 0x1ebc2: 0x6cab6020, 0x1ebc3: 0x6d40f620,\n\t0x1ebc4: 0x6ce96e20, 0x1ebc5: 0x6d050820, 0x1ebc6: 0x6c49b220, 0x1ebc7: 0x6d08cc20,\n\t0x1ebc8: 0x6c892620, 0x1ebc9: 0x6cd48620, 0x1ebca: 0x6c02f820, 0x1ebcb: 0x6c97d420,\n\t0x1ebcc: 0x6ca18020, 0x1ebcd: 0x6c956620, 0x1ebce: 0x6c0a9e20, 0x1ebcf: 0x6cf0fe20,\n\t0x1ebd0: 0x6c8ed020, 0x1ebd1: 0x6c2bb220, 0x1ebd2: 0x6cca3620, 0x1ebd3: 0x6d401220,\n\t0x1ebd4: 0x6d158a20, 0x1ebd5: 0x6c932020, 0x1ebd6: 0x6c028220, 0x1ebd7: 0x6c796220,\n\t0x1ebd8: 0x6cbafa20, 0x1ebd9: 0x6c24f820, 0x1ebda: 0x6cb54e20, 0x1ebdb: 0x6c16d220,\n\t0x1ebdc: 0x6ce0dc20, 0x1ebdd: 0x6c981020, 0x1ebde: 0x6d1dd020, 0x1ebdf: 0x6c160620,\n\t0x1ebe0: 0x6c3c7220, 0x1ebe1: 0x6c6ebe20, 0x1ebe2: 0x6c0c4820, 0x1ebe3: 0x6cd62a20,\n\t0x1ebe4: 0x6c912420, 0x1ebe5: 0x6d055820, 0x1ebe6: 0x6c237420, 0x1ebe7: 0x6c8fce20,\n\t0x1ebe8: 0x6d29b020, 0x1ebe9: 0x6c670820, 0x1ebea: 0x6c12a220, 0x1ebeb: 0x6c849220,\n\t0x1ebec: 0x6cfa5c20, 0x1ebed: 0x6cf72020, 0x1ebee: 0x6c776020, 0x1ebef: 0x6cd6f820,\n\t0x1ebf0: 0x6c086220, 0x1ebf1: 0x6d2f4a20, 0x1ebf2: 0x6cba9620, 0x1ebf3: 0x6c19a620,\n\t0x1ebf4: 0x6c933420, 0x1ebf5: 0x6c576820, 0x1ebf6: 0x6c60f220, 0x1ebf7: 0x6cb47220,\n\t0x1ebf8: 0x6c5c8c20, 0x1ebf9: 0x6cbb5020, 0x1ebfa: 0x6cb32420, 0x1ebfb: 0x6c8c0220,\n\t0x1ebfc: 0x6ccb9020, 0x1ebfd: 0x6d055a20, 0x1ebfe: 0x6cca3c20, 0x1ebff: 0x6c19a820,\n\t// Block 0x7b0, offset 0x1ec00\n\t0x1ec00: 0x6c7d3a20, 0x1ec01: 0x6cd84820, 0x1ec02: 0x6c8f5420, 0x1ec03: 0x6ca4d220,\n\t0x1ec04: 0x6c5a2220, 0x1ec05: 0x6cb1e020, 0x1ec06: 0x6cdcb020, 0x1ec07: 0x6c38ea20,\n\t0x1ec08: 0x6cbc0e20, 0x1ec09: 0x6cc2aa20, 0x1ec0a: 0x6d0fee20, 0x1ec0b: 0x6ce0de20,\n\t0x1ec0c: 0x6cfe6620, 0x1ec0d: 0x6c750420, 0x1ec0e: 0x6c68a420, 0x1ec0f: 0x6d41fc20,\n\t0x1ec10: 0x6c8a4e20, 0x1ec11: 0x6cbd0420, 0x1ec12: 0x6c819020, 0x1ec13: 0x6c338020,\n\t0x1ec14: 0x6d030620, 0x1ec15: 0x6d295820, 0x1ec16: 0x6c5f8e20, 0x1ec17: 0x6c661e20,\n\t0x1ec18: 0x6d37da20, 0x1ec19: 0x6c2af620, 0x1ec1a: 0x6d0b0620, 0x1ec1b: 0x6d1d5c20,\n\t0x1ec1c: 0x6c331e20, 0x1ec1d: 0x6c750620, 0x1ec1e: 0x6caa3020, 0x1ec1f: 0x6d295a20,\n\t0x1ec20: 0x6cb4a420, 0x1ec21: 0x6ce60620, 0x1ec22: 0x6c38ec20, 0x1ec23: 0x6d2f4c20,\n\t0x1ec24: 0x6c2f8a20, 0x1ec25: 0x6ccdda20, 0x1ec26: 0x6c764220, 0x1ec27: 0x6c653820,\n\t0x1ec28: 0x6c3af020, 0x1ec29: 0x6cdcba20, 0x1ec2a: 0x6c920020, 0x1ec2b: 0x6c730c20,\n\t0x1ec2c: 0x6c5c9420, 0x1ec2d: 0x6d246a20, 0x1ec2e: 0x6c889c20, 0x1ec2f: 0x6d3dcc20,\n\t0x1ec30: 0x6cbbc820, 0x1ec31: 0x6c672220, 0x1ec32: 0x6d3dde20, 0x1ec33: 0x6c828c20,\n\t0x1ec34: 0x6c0ac820, 0x1ec35: 0x6ce60820, 0x1ec36: 0x6c58c220, 0x1ec37: 0x6d138c20,\n\t0x1ec38: 0x6c346c20, 0x1ec39: 0x6c4cd620, 0x1ec3a: 0x6c29ac20, 0x1ec3b: 0x6c72ce20,\n\t0x1ec3c: 0x6c3bac20, 0x1ec3d: 0x6c26d620, 0x1ec3e: 0x6c077220, 0x1ec3f: 0x6d194a20,\n\t// Block 0x7b1, offset 0x1ec40\n\t0x1ec40: 0x6c010820, 0x1ec41: 0x6d3fe220, 0x1ec42: 0x6d0aba20, 0x1ec43: 0x6c2e4e20,\n\t0x1ec44: 0x6d3b4e20, 0x1ec45: 0x6c528620, 0x1ec46: 0x6d3cc220, 0x1ec47: 0x6c5fa220,\n\t0x1ec48: 0x6ca8be20, 0x1ec49: 0x6c51a620, 0x1ec4a: 0x6c5e4c20, 0x1ec4b: 0x6cbe6020,\n\t0x1ec4c: 0x6c0d7020, 0x1ec4d: 0x6d1c3e20, 0x1ec4e: 0x6c7d4020, 0x1ec4f: 0x6ca93c20,\n\t0x1ec50: 0x6d060e20, 0x1ec51: 0x6c672620, 0x1ec52: 0x6c672820, 0x1ec53: 0x6cba9a20,\n\t0x1ec54: 0x6c142620, 0x1ec55: 0x6d377220, 0x1ec56: 0x6c9f1620, 0x1ec57: 0x6c84ce20,\n\t0x1ec58: 0x6c829820, 0x1ec59: 0x6c5fa620, 0x1ec5a: 0x6d416620, 0x1ec5b: 0x6c7c2220,\n\t0x1ec5c: 0x6cce4420, 0x1ec5d: 0x6caefc20, 0x1ec5e: 0x6c7ece20, 0x1ec5f: 0x6c320020,\n\t0x1ec60: 0x6cd7b020, 0x1ec61: 0x6c21ec20, 0x1ec62: 0x6c942820, 0x1ec63: 0x6c0c6220,\n\t0x1ec64: 0x6c068420, 0x1ec65: 0x6c920420, 0x1ec66: 0x6cfd5c20, 0x1ec67: 0x6c7b7e20,\n\t0x1ec68: 0x6c901020, 0x1ec69: 0x6c36fa20, 0x1ec6a: 0x6c91a220, 0x1ec6b: 0x6d02f820,\n\t0x1ec6c: 0x6c672c20, 0x1ec6d: 0x6c809420, 0x1ec6e: 0x6c0fd620, 0x1ec6f: 0x6c655620,\n\t0x1ec70: 0x6d125820, 0x1ec71: 0x6c157e20, 0x1ec72: 0x6cfda620, 0x1ec73: 0x6c673020,\n\t0x1ec74: 0x6cf76220, 0x1ec75: 0x6c49c820, 0x1ec76: 0x6c125620, 0x1ec77: 0x6ca8d220,\n\t0x1ec78: 0x6c831620, 0x1ec79: 0x6c249c20, 0x1ec7a: 0x6cc23020, 0x1ec7b: 0x6cacc820,\n\t0x1ec7c: 0x6c959420, 0x1ec7d: 0x6d414420, 0x1ec7e: 0x6c947a20, 0x1ec7f: 0x6d2a3820,\n\t// Block 0x7b2, offset 0x1ec80\n\t0x1ec80: 0x6ca8d820, 0x1ec81: 0x6c753e20, 0x1ec82: 0x6ce19820, 0x1ec83: 0x6cd58e20,\n\t0x1ec84: 0x6c801c20, 0x1ec85: 0x6c6c2220, 0x1ec86: 0x6c40c420, 0x1ec87: 0x6d15b420,\n\t0x1ec88: 0x6d312020, 0x1ec89: 0x6c2f5220, 0x1ec8a: 0x6d2f5220, 0x1ec8b: 0x6cb2f020,\n\t0x1ec8c: 0x6c8a6620, 0x1ec8d: 0x6ce91820, 0x1ec8e: 0x6cb8ba20, 0x1ec8f: 0x6c203220,\n\t0x1ec90: 0x6cccca20, 0x1ec91: 0x6c5fe820, 0x1ec92: 0x6c388e20, 0x1ec93: 0x6c2e0a20,\n\t0x1ec94: 0x6c9ac420, 0x1ec95: 0x6caa7020, 0x1ec96: 0x6d0f8c20, 0x1ec97: 0x6c146420,\n\t0x1ec98: 0x6d03d620, 0x1ec99: 0x6c413020, 0x1ec9a: 0x6c107a20, 0x1ec9b: 0x6cdf6620,\n\t0x1ec9c: 0x6c721c20, 0x1ec9d: 0x6c33e620, 0x1ec9e: 0x6c173e20, 0x1ec9f: 0x6d37ac20,\n\t0x1eca0: 0x6ca32220, 0x1eca1: 0x6c06f620, 0x1eca2: 0x6c426a20, 0x1eca3: 0x6c04c420,\n\t0x1eca4: 0x6cb97a20, 0x1eca5: 0x6d11fa20, 0x1eca6: 0x6cbd2220, 0x1eca7: 0x6c756620,\n\t0x1eca8: 0x6cf35e20, 0x1eca9: 0x6c463c20, 0x1ecaa: 0x6c778420, 0x1ecab: 0x6c398e20,\n\t0x1ecac: 0x6c5d8c20, 0x1ecad: 0x6ce80a20, 0x1ecae: 0x6ca98e20, 0x1ecaf: 0x6c039c20,\n\t0x1ecb0: 0x6d22fa20, 0x1ecb1: 0x6cb98420, 0x1ecb2: 0x6d32aa20, 0x1ecb3: 0x6cb98620,\n\t0x1ecb4: 0x6c477820, 0x1ecb5: 0x6c0e6820, 0x1ecb6: 0x6c353c20, 0x1ecb7: 0x6cb35220,\n\t0x1ecb8: 0x6c108e20, 0x1ecb9: 0x6c0ee220, 0x1ecba: 0x6d26a020, 0x1ecbb: 0x6d413820,\n\t0x1ecbc: 0x6ca28020, 0x1ecbd: 0x6ce05a20, 0x1ecbe: 0x6c641020, 0x1ecbf: 0x6c2d4a20,\n\t// Block 0x7b3, offset 0x1ecc0\n\t0x1ecc0: 0x6d1f2620, 0x1ecc1: 0x6ce5f820, 0x1ecc2: 0x6c0ee420, 0x1ecc3: 0x6c8cd620,\n\t0x1ecc4: 0x6cd77a20, 0x1ecc5: 0x6cb8d020, 0x1ecc6: 0x6c993620, 0x1ecc7: 0x6c064420,\n\t0x1ecc8: 0x6cd36620, 0x1ecc9: 0x6d088420, 0x1ecca: 0x6cdde820, 0x1eccb: 0x6c097220,\n\t0x1eccc: 0x6ca5d220, 0x1eccd: 0x6caf5e20, 0x1ecce: 0x6c344220, 0x1eccf: 0x6d03e420,\n\t0x1ecd0: 0x6c77bc20, 0x1ecd1: 0x6c81b020, 0x1ecd2: 0x6c379420, 0x1ecd3: 0x6c985e20,\n\t0x1ecd4: 0x6d0ba820, 0x1ecd5: 0x6d1fc620, 0x1ecd6: 0x6c19f620, 0x1ecd7: 0x6c63bc20,\n\t0x1ecd8: 0x6d127e20, 0x1ecd9: 0x6ca4a820, 0x1ecda: 0x6d361020, 0x1ecdb: 0x6c29aa20,\n\t0x1ecdc: 0x6ce74620, 0x1ecdd: 0x6c939820, 0x1ecde: 0x6c2e2220, 0x1ecdf: 0x6d19d220,\n\t0x1ece0: 0x6c765020, 0x1ece1: 0x6d2c2e20, 0x1ece2: 0x6d39a220, 0x1ece3: 0x6cf7e420,\n\t0x1ece4: 0x6c2fa220, 0x1ece5: 0x6c2fd220, 0x1ece6: 0x6cfaa420, 0x1ece7: 0x6c573a20,\n\t0x1ece8: 0x6cc2e820, 0x1ece9: 0x6ccbf020, 0x1ecea: 0x6c4cfa20, 0x1eceb: 0x6c2e2420,\n\t0x1ecec: 0x6c448620, 0x1eced: 0x6c9ffc20, 0x1ecee: 0x6d32be20, 0x1ecef: 0x6ccb2620,\n\t0x1ecf0: 0x6c68ec20, 0x1ecf1: 0x6d13ec20, 0x1ecf2: 0x6c15b220, 0x1ecf3: 0x6c1d4e20,\n\t0x1ecf4: 0x6ce0be20, 0x1ecf5: 0x6c018220, 0x1ecf6: 0x6d1a6220, 0x1ecf7: 0x6cc7a820,\n\t0x1ecf8: 0x6d3b0620, 0x1ecf9: 0x6c815c20, 0x1ecfa: 0x6cb4ac20, 0x1ecfb: 0x6cf3cc20,\n\t0x1ecfc: 0x6c7f1020, 0x1ecfd: 0x6ce27c20, 0x1ecfe: 0x6c890020, 0x1ecff: 0x6c794420,\n\t// Block 0x7b4, offset 0x1ed00\n\t0x1ed00: 0x6cfed020, 0x1ed01: 0x6cdd6820, 0x1ed02: 0x6c851a20, 0x1ed03: 0x6d2bac20,\n\t0x1ed04: 0x6c1e8620, 0x1ed05: 0x6c4c2220, 0x1ed06: 0x6c434a20, 0x1ed07: 0x6c357020,\n\t0x1ed08: 0x6d053e20, 0x1ed09: 0x6c262e20, 0x1ed0a: 0x6c94aa20, 0x1ed0b: 0x6c3c5220,\n\t0x1ed0c: 0x6d02da20, 0x1ed0d: 0x6c8f0a20, 0x1ed0e: 0x6c763220, 0x1ed0f: 0x6c65a220,\n\t0x1ed10: 0x6cc8d020, 0x1ed11: 0x6ce2f220, 0x1ed12: 0x6c80ce20, 0x1ed13: 0x6cbdda20,\n\t0x1ed14: 0x6c70a420, 0x1ed15: 0x6c000820, 0x1ed16: 0x6cbac620, 0x1ed17: 0x6d30da20,\n\t0x1ed18: 0x6cab0020, 0x1ed19: 0x6c263220, 0x1ed1a: 0x6c98ee20, 0x1ed1b: 0x6c078a20,\n\t0x1ed1c: 0x6cb60620, 0x1ed1d: 0x6c2a7820, 0x1ed1e: 0x6c78be20, 0x1ed1f: 0x6c7d7420,\n\t0x1ed20: 0x6c167620, 0x1ed21: 0x6cf65e20, 0x1ed22: 0x6c482020, 0x1ed23: 0x6c954c20,\n\t0x1ed24: 0x6c20da20, 0x1ed25: 0x6d3c6420, 0x1ed26: 0x6c6c9a20, 0x1ed27: 0x6d367420,\n\t0x1ed28: 0x6cfab620, 0x1ed29: 0x6c732220, 0x1ed2a: 0x6c5d5820, 0x1ed2b: 0x6caddc20,\n\t0x1ed2c: 0x6cdfee20, 0x1ed2d: 0x6c2fae20, 0x1ed2e: 0x6c66a220, 0x1ed2f: 0x6c725c20,\n\t0x1ed30: 0x6c9bdc20, 0x1ed31: 0x6d3e6620, 0x1ed32: 0x6cbcdc20, 0x1ed33: 0x6d1bc820,\n\t0x1ed34: 0x6c766a20, 0x1ed35: 0x6cbad420, 0x1ed36: 0x6cd80a20, 0x1ed37: 0x6c367820,\n\t0x1ed38: 0x6c13ac20, 0x1ed39: 0x6cbb9420, 0x1ed3a: 0x6d37c420, 0x1ed3b: 0x6c32d620,\n\t0x1ed3c: 0x6cd9d220, 0x1ed3d: 0x6c59e820, 0x1ed3e: 0x6c588c20, 0x1ed3f: 0x6c003220,\n\t// Block 0x7b5, offset 0x1ed40\n\t0x1ed40: 0x6c327020, 0x1ed41: 0x6c9a6420, 0x1ed42: 0x6c911420, 0x1ed43: 0x6d3e7420,\n\t0x1ed44: 0x6c3ac020, 0x1ed45: 0x6c9a1c20, 0x1ed46: 0x6ca15820, 0x1ed47: 0x6d325c20,\n\t0x1ed48: 0x6c0f5020, 0x1ed49: 0x6c442a20, 0x1ed4a: 0x6ca86620, 0x1ed4b: 0x6ce18220,\n\t0x1ed4c: 0x6c730220, 0x1ed4d: 0x6ca86820, 0x1ed4e: 0x6ca2e820, 0x1ed4f: 0x6c8e8e20,\n\t0x1ed50: 0x6c431e20, 0x1ed51: 0x6c058a20, 0x1ed52: 0x6d186c20, 0x1ed53: 0x6c638020,\n\t0x1ed54: 0x6c0d4e20, 0x1ed55: 0x6cc6ac20, 0x1ed56: 0x6c0c2420, 0x1ed57: 0x6ce0d620,\n\t0x1ed58: 0x6c980620, 0x1ed59: 0x6c955420, 0x1ed5a: 0x6c085420, 0x1ed5b: 0x6d1dbc20,\n\t0x1ed5c: 0x6c6eae20, 0x1ed5d: 0x6c2b4620, 0x1ed5e: 0x6d40dc20, 0x1ed5f: 0x6d08b420,\n\t0x1ed60: 0x6c8ea620, 0x1ed61: 0x6c153220, 0x1ed62: 0x6c74d020, 0x1ed63: 0x6c8aac20,\n\t0x1ed64: 0x6cb46420, 0x1ed65: 0x6c91e220, 0x1ed66: 0x6c336e20, 0x1ed67: 0x6c7fc820,\n\t0x1ed68: 0x6cb49e20, 0x1ed69: 0x6c249420, 0x1ed6a: 0x6cbae820, 0x1ed6b: 0x6c2aee20,\n\t0x1ed6c: 0x6c5e1e20, 0x1ed6d: 0x6c826e20, 0x1ed6e: 0x6c58b220, 0x1ed6f: 0x6d3dc420,\n\t0x1ed70: 0x6c887c20, 0x1ed71: 0x6d18fe20, 0x1ed72: 0x6c142420, 0x1ed73: 0x6c0c4e20,\n\t0x1ed74: 0x6c7eba20, 0x1ed75: 0x6c157020, 0x1ed76: 0x6cfda020, 0x1ed77: 0x6d2f0020,\n\t0x1ed78: 0x6c169c20, 0x1ed79: 0x6c6fbc20, 0x1ed7a: 0x6c02a420, 0x1ed7b: 0x6c2eb820,\n\t0x1ed7c: 0x6cc13c20, 0x1ed7d: 0x6c8a8420, 0x1ed7e: 0x6c9caa20, 0x1ed7f: 0x6d2efa20,\n\t// Block 0x7b6, offset 0x1ed80\n\t0x1ed80: 0x6c9ac620, 0x1ed81: 0x6c96b620, 0x1ed82: 0x6cd68220, 0x1ed83: 0x6ccd3c20,\n\t0x1ed84: 0x6c5db420, 0x1ed85: 0x6c9ac820, 0x1ed86: 0x6d0c8e20, 0x1ed87: 0x6c098e20,\n\t0x1ed88: 0x6c4eba20, 0x1ed89: 0x6c099020, 0x1ed8a: 0x6ccdfa20, 0x1ed8b: 0x6c763420,\n\t0x1ed8c: 0x6c778a20, 0x1ed8d: 0x6c07f220, 0x1ed8e: 0x6c535c20, 0x1ed8f: 0x6cc8fe20,\n\t0x1ed90: 0x6cca5820, 0x1ed91: 0x6cfb6420, 0x1ed92: 0x6cfb6620, 0x1ed93: 0x6c64ac20,\n\t0x1ed94: 0x6c9fb420, 0x1ed95: 0x6cf96820, 0x1ed96: 0x6cd74020, 0x1ed97: 0x6c312020,\n\t0x1ed98: 0x6d2c3c20, 0x1ed99: 0x6ca53420, 0x1ed9a: 0x6d2d8820, 0x1ed9b: 0x6cae7820,\n\t0x1ed9c: 0x6cfa2220, 0x1ed9d: 0x6c8d2820, 0x1ed9e: 0x6c0bae20, 0x1ed9f: 0x6c09e820,\n\t0x1eda0: 0x6cc90020, 0x1eda1: 0x6c00be20, 0x1eda2: 0x6c492020, 0x1eda3: 0x6c441620,\n\t0x1eda4: 0x6c441820, 0x1eda5: 0x6c382220, 0x1eda6: 0x6c1f6620, 0x1eda7: 0x6c53c820,\n\t0x1eda8: 0x6c4a7e20, 0x1eda9: 0x6c9fbe20, 0x1edaa: 0x6ccb1220, 0x1edab: 0x6c7dc020,\n\t0x1edac: 0x6c812c20, 0x1edad: 0x6c935a20, 0x1edae: 0x6ce68820, 0x1edaf: 0x6ccc7620,\n\t0x1edb0: 0x6c714820, 0x1edb1: 0x6d26e420, 0x1edb2: 0x6d26e620, 0x1edb3: 0x6c15e020,\n\t0x1edb4: 0x6cc27620, 0x1edb5: 0x6c8c6a20, 0x1edb6: 0x6c167e20, 0x1edb7: 0x6ccca420,\n\t0x1edb8: 0x6c7dc220, 0x1edb9: 0x6d0c3020, 0x1edba: 0x6cf1b220, 0x1edbb: 0x6d0cd420,\n\t0x1edbc: 0x6c36b020, 0x1edbd: 0x6c5cda20, 0x1edbe: 0x6d23fc20, 0x1edbf: 0x6cf1b420,\n\t// Block 0x7b7, offset 0x1edc0\n\t0x1edc0: 0x6cfe6020, 0x1edc1: 0x6c05be20, 0x1edc2: 0x6c53d620, 0x1edc3: 0x6cc28020,\n\t0x1edc4: 0x6d11dc20, 0x1edc5: 0x6cf1ba20, 0x1edc6: 0x6c04d820, 0x1edc7: 0x6c01d220,\n\t0x1edc8: 0x6cef4620, 0x1edc9: 0x6d1a1020, 0x1edca: 0x6c7e2020, 0x1edcb: 0x6cc40a20,\n\t0x1edcc: 0x6c7fca20, 0x1edcd: 0x6c317c20, 0x1edce: 0x6cc38620, 0x1edcf: 0x6c3c6e20,\n\t0x1edd0: 0x6ce4cc20, 0x1edd1: 0x6ca88c20, 0x1edd2: 0x6cdec420, 0x1edd3: 0x6c767620,\n\t0x1edd4: 0x6c518a20, 0x1edd5: 0x6cc40e20, 0x1edd6: 0x6c209c20, 0x1edd7: 0x6c493020,\n\t0x1edd8: 0x6c314620, 0x1edd9: 0x6cb72420, 0x1edda: 0x6c7c4e20, 0x1eddb: 0x6ce15c20,\n\t0x1eddc: 0x6c493420, 0x1eddd: 0x6cb18a20, 0x1edde: 0x6c771820, 0x1eddf: 0x6cf92420,\n\t0x1ede0: 0x6c5c8e20, 0x1ede1: 0x6c160e20, 0x1ede2: 0x6cb0dc20, 0x1ede3: 0x6c29a420,\n\t0x1ede4: 0x6c58c420, 0x1ede5: 0x6cdeda20, 0x1ede6: 0x6cf1c220, 0x1ede7: 0x6cde0220,\n\t0x1ede8: 0x6c9abe20, 0x1ede9: 0x6cd67e20, 0x1edea: 0x6ccd2820, 0x1edeb: 0x6d0e3820,\n\t0x1edec: 0x6c4e8820, 0x1eded: 0x6c090e20, 0x1edee: 0x6cf1f820, 0x1edef: 0x6c208c20,\n\t0x1edf0: 0x6cc8f820, 0x1edf1: 0x6ceee620, 0x1edf2: 0x6cfb2820, 0x1edf3: 0x6c52fe20,\n\t0x1edf4: 0x6c646620, 0x1edf5: 0x6c9f9220, 0x1edf6: 0x6c772620, 0x1edf7: 0x6c9aea20,\n\t0x1edf8: 0x6d2c2420, 0x1edf9: 0x6ca52a20, 0x1edfa: 0x6c4a4220, 0x1edfb: 0x6cf18820,\n\t0x1edfc: 0x6cde3e20, 0x1edfd: 0x6c9fa020, 0x1edfe: 0x6c935420, 0x1edff: 0x6c764e20,\n\t// Block 0x7b8, offset 0x1ee00\n\t0x1ee00: 0x6c380a20, 0x1ee01: 0x6c43ce20, 0x1ee02: 0x6c50e620, 0x1ee03: 0x6c7da420,\n\t0x1ee04: 0x6c6f6820, 0x1ee05: 0x6d26a220, 0x1ee06: 0x6c80b020, 0x1ee07: 0x6c316c20,\n\t0x1ee08: 0x6d232820, 0x1ee09: 0x6d0c0420, 0x1ee0a: 0x6c166c20, 0x1ee0b: 0x6cf88020,\n\t0x1ee0c: 0x6cf19420, 0x1ee0d: 0x6c5cc620, 0x1ee0e: 0x6d0c9020, 0x1ee0f: 0x6c362020,\n\t0x1ee10: 0x6c15b420, 0x1ee11: 0x6c7fa020, 0x1ee12: 0x6cc27020, 0x1ee13: 0x6c5bce20,\n\t0x1ee14: 0x6c7e0220, 0x1ee15: 0x6cc3c620, 0x1ee16: 0x6c515020, 0x1ee17: 0x6ce4b220,\n\t0x1ee18: 0x6c26b220, 0x1ee19: 0x6cc39020, 0x1ee1a: 0x6c4e5e20, 0x1ee1b: 0x6c58a220,\n\t0x1ee1c: 0x6c3fba20, 0x1ee1d: 0x6c3f9e20, 0x1ee1e: 0x6c820620, 0x1ee1f: 0x6c332a20,\n\t0x1ee20: 0x6d031020, 0x1ee21: 0x6cb89020, 0x1ee22: 0x6cf49a20, 0x1ee23: 0x6c412620,\n\t0x1ee24: 0x6d356a20, 0x1ee25: 0x6d19a020, 0x1ee26: 0x6d0f7820, 0x1ee27: 0x6c30d620,\n\t0x1ee28: 0x6c35ce20, 0x1ee29: 0x6cd0d620, 0x1ee2a: 0x6c04b220, 0x1ee2b: 0x6cadc620,\n\t0x1ee2c: 0x6c792220, 0x1ee2d: 0x6d27d420, 0x1ee2e: 0x6cc84c20, 0x1ee2f: 0x6d34da20,\n\t0x1ee30: 0x6cafac20, 0x1ee31: 0x6c6e0420, 0x1ee32: 0x6c39a020, 0x1ee33: 0x6d0f7a20,\n\t0x1ee34: 0x6d19a220, 0x1ee35: 0x6d321020, 0x1ee36: 0x6c69f420, 0x1ee37: 0x6c195020,\n\t0x1ee38: 0x6c35d620, 0x1ee39: 0x6cc0d620, 0x1ee3a: 0x6c2bd220, 0x1ee3b: 0x6d410a20,\n\t0x1ee3c: 0x6d427820, 0x1ee3d: 0x6c2d3820, 0x1ee3e: 0x6c8e0820, 0x1ee3f: 0x6c000220,\n\t// Block 0x7b9, offset 0x1ee40\n\t0x1ee40: 0x6ceae620, 0x1ee41: 0x6ceae820, 0x1ee42: 0x6c068c20, 0x1ee43: 0x6c0dc020,\n\t0x1ee44: 0x6c3fae20, 0x1ee45: 0x6c618e20, 0x1ee46: 0x6c921420, 0x1ee47: 0x6c902c20,\n\t0x1ee48: 0x6c18a220, 0x1ee49: 0x6d03c220, 0x1ee4a: 0x6c34ce20, 0x1ee4b: 0x6c910220,\n\t0x1ee4c: 0x6ca0da20, 0x1ee4d: 0x6c67d620, 0x1ee4e: 0x6cd4ae20, 0x1ee4f: 0x6c34d020,\n\t0x1ee50: 0x6cfc8620, 0x1ee51: 0x6c373820, 0x1ee52: 0x6c4acc20, 0x1ee53: 0x6d207c20,\n\t0x1ee54: 0x6c40e220, 0x1ee55: 0x6ccd2e20, 0x1ee56: 0x6c759e20, 0x1ee57: 0x6cbc3420,\n\t0x1ee58: 0x6d03d820, 0x1ee59: 0x6c213620, 0x1ee5a: 0x6c3fd820, 0x1ee5b: 0x6c095820,\n\t0x1ee5c: 0x6cf99e20, 0x1ee5d: 0x6ccd3820, 0x1ee5e: 0x6cd0f620, 0x1ee5f: 0x6d35aa20,\n\t0x1ee60: 0x6cb40420, 0x1ee61: 0x6c30e420, 0x1ee62: 0x6d260620, 0x1ee63: 0x6d322820,\n\t0x1ee64: 0x6c1e7620, 0x1ee65: 0x6cfc9820, 0x1ee66: 0x6c2a5620, 0x1ee67: 0x6ca7fe20,\n\t0x1ee68: 0x6d27e020, 0x1ee69: 0x6cfbf020, 0x1ee6a: 0x6cadce20, 0x1ee6b: 0x6c3aa020,\n\t0x1ee6c: 0x6d404e20, 0x1ee6d: 0x6d174c20, 0x1ee6e: 0x6c334820, 0x1ee6f: 0x6c94e620,\n\t0x1ee70: 0x6d19c420, 0x1ee71: 0x6c707820, 0x1ee72: 0x6c20c620, 0x1ee73: 0x6c18ba20,\n\t0x1ee74: 0x6cafd620, 0x1ee75: 0x6c8cd820, 0x1ee76: 0x6ce21420, 0x1ee77: 0x6cfcae20,\n\t0x1ee78: 0x6c923020, 0x1ee79: 0x6cd0fc20, 0x1ee7a: 0x6cfc0a20, 0x1ee7b: 0x6d19d420,\n\t0x1ee7c: 0x6d3a6220, 0x1ee7d: 0x6d0fb020, 0x1ee7e: 0x6cc62c20, 0x1ee7f: 0x6cf9bc20,\n\t// Block 0x7ba, offset 0x1ee80\n\t0x1ee80: 0x6c1d1420, 0x1ee81: 0x6d0e6820, 0x1ee82: 0x6d19d620, 0x1ee83: 0x6cd5ce20,\n\t0x1ee84: 0x6c2b2c20, 0x1ee85: 0x6d210c20, 0x1ee86: 0x6c8f9220, 0x1ee87: 0x6cee7820,\n\t0x1ee88: 0x6cee7a20, 0x1ee89: 0x6ca82420, 0x1ee8a: 0x6c334a20, 0x1ee8b: 0x6cdbf220,\n\t0x1ee8c: 0x6c018420, 0x1ee8d: 0x6c59b620, 0x1ee8e: 0x6c6a0620, 0x1ee8f: 0x6cdbf420,\n\t0x1ee90: 0x6d1ae220, 0x1ee91: 0x6c413c20, 0x1ee92: 0x6d0d9a20, 0x1ee93: 0x6c5abe20,\n\t0x1ee94: 0x6c43fc20, 0x1ee95: 0x6d27ee20, 0x1ee96: 0x6cf4f220, 0x1ee97: 0x6c7c6c20,\n\t0x1ee98: 0x6c009e20, 0x1ee99: 0x6cf89820, 0x1ee9a: 0x6ce10c20, 0x1ee9b: 0x6c623020,\n\t0x1ee9c: 0x6d2f3620, 0x1ee9d: 0x6c29de20, 0x1ee9e: 0x6c024820, 0x1ee9f: 0x6cf8aa20,\n\t0x1eea0: 0x6d1aee20, 0x1eea1: 0x6cc9be20, 0x1eea2: 0x6cc53a20, 0x1eea3: 0x6c8bca20,\n\t0x1eea4: 0x6ce9b220, 0x1eea5: 0x6c2ade20, 0x1eea6: 0x6c693820, 0x1eea7: 0x6cdc5820,\n\t0x1eea8: 0x6cdbfa20, 0x1eea9: 0x6c02e220, 0x1eeaa: 0x6cfc2620, 0x1eeab: 0x6c3b8220,\n\t0x1eeac: 0x6ca64c20, 0x1eead: 0x6c376820, 0x1eeae: 0x6c5f4a20, 0x1eeaf: 0x6c29ec20,\n\t0x1eeb0: 0x6cf7a620, 0x1eeb1: 0x6d1b0a20, 0x1eeb2: 0x6c358220, 0x1eeb3: 0x6c5af420,\n\t0x1eeb4: 0x6c903c20, 0x1eeb5: 0x6cf72220, 0x1eeb6: 0x6c859820, 0x1eeb7: 0x6c868820,\n\t0x1eeb8: 0x6c86b420, 0x1eeb9: 0x6d3c5620, 0x1eeba: 0x6c553a20, 0x1eebb: 0x6d33d220,\n\t0x1eebc: 0x6cdcea20, 0x1eebd: 0x6c735220, 0x1eebe: 0x6ca3f620, 0x1eebf: 0x6d178820,\n\t// Block 0x7bb, offset 0x1eec0\n\t0x1eec0: 0x6cc3ba20, 0x1eec1: 0x6d0e7e20, 0x1eec2: 0x6cbd7a20, 0x1eec3: 0x6cb8e820,\n\t0x1eec4: 0x6d047c20, 0x1eec5: 0x6d0b5420, 0x1eec6: 0x6c604620, 0x1eec7: 0x6c481820,\n\t0x1eec8: 0x6c587a20, 0x1eec9: 0x6d367620, 0x1eeca: 0x6c46c020, 0x1eecb: 0x6c736e20,\n\t0x1eecc: 0x6c225620, 0x1eecd: 0x6d1d9420, 0x1eece: 0x6c70b020, 0x1eecf: 0x6c1e9820,\n\t0x1eed0: 0x6c54f020, 0x1eed1: 0x6d28c420, 0x1eed2: 0x6c961c20, 0x1eed3: 0x6d219620,\n\t0x1eed4: 0x6c1dde20, 0x1eed5: 0x6c2de020, 0x1eed6: 0x6cdbe020, 0x1eed7: 0x6c4f2820,\n\t0x1eed8: 0x6cf32220, 0x1eed9: 0x6cd6a620, 0x1eeda: 0x6c49ae20, 0x1eedb: 0x6c1ec220,\n\t0x1eedc: 0x6d28d220, 0x1eedd: 0x6d1dcc20, 0x1eede: 0x6c5f7c20, 0x1eedf: 0x6cf70c20,\n\t0x1eee0: 0x6c1dfe20, 0x1eee1: 0x6c8f5220, 0x1eee2: 0x6c847e20, 0x1eee3: 0x6ca41420,\n\t0x1eee4: 0x6d092c20, 0x1eee5: 0x6d28e420, 0x1eee6: 0x6c610820, 0x1eee7: 0x6c610a20,\n\t0x1eee8: 0x6d222220, 0x1eee9: 0x6d211020, 0x1eeea: 0x6d093020, 0x1eeeb: 0x6ca2f820,\n\t0x1eeec: 0x6c3d2e20, 0x1eeed: 0x6ccb2820, 0x1eeee: 0x6ca28e20, 0x1eeef: 0x6cf19820,\n\t0x1eef0: 0x6c3b3620, 0x1eef1: 0x6cacda20, 0x1eef2: 0x6d27aa20, 0x1eef3: 0x6c862220,\n\t0x1eef4: 0x6c1c3a20, 0x1eef5: 0x6d0f6020, 0x1eef6: 0x6c8d2a20, 0x1eef7: 0x6c823e20,\n\t0x1eef8: 0x6c016e20, 0x1eef9: 0x6c05ce20, 0x1eefa: 0x6cf50420, 0x1eefb: 0x6c2d6a20,\n\t0x1eefc: 0x6c297420, 0x1eefd: 0x6c56ac20, 0x1eefe: 0x6cf50620, 0x1eeff: 0x6c2e3420,\n\t// Block 0x7bc, offset 0x1ef00\n\t0x1ef00: 0x6d05c220, 0x1ef01: 0x6c625820, 0x1ef02: 0x6ca2a820, 0x1ef03: 0x6c18e820,\n\t0x1ef04: 0x6cff1020, 0x1ef05: 0x6d2cde20, 0x1ef06: 0x6ce68a20, 0x1ef07: 0x6d325e20,\n\t0x1ef08: 0x6cae2820, 0x1ef09: 0x6c9a2420, 0x1ef0a: 0x6c8d4c20, 0x1ef0b: 0x6cb53420,\n\t0x1ef0c: 0x6d38b020, 0x1ef0d: 0x6c5e0220, 0x1ef0e: 0x6ccc7c20, 0x1ef0f: 0x6c3a1a20,\n\t0x1ef10: 0x6c538a20, 0x1ef11: 0x6d2da020, 0x1ef12: 0x6d1a0820, 0x1ef13: 0x6ca60820,\n\t0x1ef14: 0x6d3b2e20, 0x1ef15: 0x6cea6e20, 0x1ef16: 0x6c8be420, 0x1ef17: 0x6c8e3020,\n\t0x1ef18: 0x6c308e20, 0x1ef19: 0x6d1bf620, 0x1ef1a: 0x6cf53220, 0x1ef1b: 0x6c8d7420,\n\t0x1ef1c: 0x6cd6a420, 0x1ef1d: 0x6c8d7620, 0x1ef1e: 0x6cfa0620, 0x1ef1f: 0x6c539020,\n\t0x1ef20: 0x6d1a1220, 0x1ef21: 0x6c974420, 0x1ef22: 0x6c974620, 0x1ef23: 0x6d280620,\n\t0x1ef24: 0x6c8f4c20, 0x1ef25: 0x6c9c1620, 0x1ef26: 0x6c0d6a20, 0x1ef27: 0x6cf54020,\n\t0x1ef28: 0x6cf10020, 0x1ef29: 0x6c7e2a20, 0x1ef2a: 0x6d1aac20, 0x1ef2b: 0x6cf7b220,\n\t0x1ef2c: 0x6d191e20, 0x1ef2d: 0x6c008020, 0x1ef2e: 0x6c28e420, 0x1ef2f: 0x6ce2e420,\n\t0x1ef30: 0x6cca4020, 0x1ef31: 0x6d246c20, 0x1ef32: 0x6c933620, 0x1ef33: 0x6c8fd020,\n\t0x1ef34: 0x6c27a820, 0x1ef35: 0x6c60f420, 0x1ef36: 0x6cacec20, 0x1ef37: 0x6d0ff420,\n\t0x1ef38: 0x6c03d620, 0x1ef39: 0x6cafa420, 0x1ef3a: 0x6cef7020, 0x1ef3b: 0x6c3c8420,\n\t0x1ef3c: 0x6cf93420, 0x1ef3d: 0x6c62e420, 0x1ef3e: 0x6c970e20, 0x1ef3f: 0x6c9bac20,\n\t// Block 0x7bd, offset 0x1ef40\n\t0x1ef40: 0x6c9bae20, 0x1ef41: 0x6c829a20, 0x1ef42: 0x6c87ae20, 0x1ef43: 0x6c5e5820,\n\t0x1ef44: 0x6c008220, 0x1ef45: 0x6c3b0220, 0x1ef46: 0x6c27ae20, 0x1ef47: 0x6c901220,\n\t0x1ef48: 0x6c8db620, 0x1ef49: 0x6c010e20, 0x1ef4a: 0x6c3c8e20, 0x1ef4b: 0x6c87c820,\n\t0x1ef4c: 0x6c062620, 0x1ef4d: 0x6c521820, 0x1ef4e: 0x6c521020, 0x1ef4f: 0x6c521420,\n\t0x1ef50: 0x6c0e3e20, 0x1ef51: 0x6cbe3020, 0x1ef52: 0x6cbe3220, 0x1ef53: 0x6c6e8a20,\n\t0x1ef54: 0x6ce46c20, 0x1ef55: 0x6d317820, 0x1ef56: 0x6c6e9220, 0x1ef57: 0x6c198420,\n\t0x1ef58: 0x6cbed420, 0x1ef59: 0x6c6e9c20, 0x1ef5a: 0x6c6ea620, 0x1ef5b: 0x6c2d8620,\n\t0x1ef5c: 0x6c6eb020, 0x1ef5d: 0x6ce47a20, 0x1ef5e: 0x6c39f220, 0x1ef5f: 0x6c3a0a20,\n\t0x1ef60: 0x6c77c820, 0x1ef61: 0x6c9c9220, 0x1ef62: 0x6c9e5620, 0x1ef63: 0x6c9e5020,\n\t0x1ef64: 0x6c065a20, 0x1ef65: 0x6d133420, 0x1ef66: 0x6ce52020, 0x1ef67: 0x6c5c9820,\n\t0x1ef68: 0x6d139c20, 0x1ef69: 0x6c43d020, 0x1ef6a: 0x6c2f5e20, 0x1ef6b: 0x6c13ea20,\n\t0x1ef6c: 0x6cb9a020, 0x1ef6d: 0x6cc5f820, 0x1ef6e: 0x6c2b7020, 0x1ef6f: 0x6c326020,\n\t0x1ef70: 0x6cf4f420, 0x1ef71: 0x6cc5fa20, 0x1ef72: 0x6cbd8820, 0x1ef73: 0x6c6d2020,\n\t0x1ef74: 0x6d08e420, 0x1ef75: 0x6ca99e20, 0x1ef76: 0x6c03a220, 0x1ef77: 0x6d1af020,\n\t0x1ef78: 0x6cc95020, 0x1ef79: 0x6ca35e20, 0x1ef7a: 0x6ca14420, 0x1ef7b: 0x6d412220,\n\t0x1ef7c: 0x6c26b620, 0x1ef7d: 0x6c050020, 0x1ef7e: 0x6d183e20, 0x1ef7f: 0x6d121a20,\n\t// Block 0x7be, offset 0x1ef80\n\t0x1ef80: 0x6ce23420, 0x1ef81: 0x6c074c20, 0x1ef82: 0x6c63d820, 0x1ef83: 0x6c537a20,\n\t0x1ef84: 0x6cad6220, 0x1ef85: 0x6d0f6420, 0x1ef86: 0x6c0e4220, 0x1ef87: 0x6d1a0020,\n\t0x1ef88: 0x6c442c20, 0x1ef89: 0x6ce23c20, 0x1ef8a: 0x6c6b2e20, 0x1ef8b: 0x6d00e420,\n\t0x1ef8c: 0x6c014820, 0x1ef8d: 0x6c014a20, 0x1ef8e: 0x6c523620, 0x1ef8f: 0x6c45fc20,\n\t0x1ef90: 0x6cb88a20, 0x1ef91: 0x6c26c220, 0x1ef92: 0x6cbbf420, 0x1ef93: 0x6ce64a20,\n\t0x1ef94: 0x6c978620, 0x1ef95: 0x6d1d4e20, 0x1ef96: 0x6cdbde20, 0x1ef97: 0x6ce5a020,\n\t0x1ef98: 0x6cbc6220, 0x1ef99: 0x6d08b820, 0x1ef9a: 0x6c79ac20, 0x1ef9b: 0x6c083420,\n\t0x1ef9c: 0x6cdeb420, 0x1ef9d: 0x6cce5820, 0x1ef9e: 0x6c0dfa20, 0x1ef9f: 0x6c7e2220,\n\t0x1efa0: 0x6c70d420, 0x1efa1: 0x6c7eda20, 0x1efa2: 0x6d024a20, 0x1efa3: 0x6cc76820,\n\t0x1efa4: 0x6c054420, 0x1efa5: 0x6c372c20, 0x1efa6: 0x6cbfd620, 0x1efa7: 0x6cbfd820,\n\t0x1efa8: 0x6c518c20, 0x1efa9: 0x6d001620, 0x1efaa: 0x6ca2ba20, 0x1efab: 0x6c70da20,\n\t0x1efac: 0x6c650a20, 0x1efad: 0x6c0b1620, 0x1efae: 0x6c2b4c20, 0x1efaf: 0x6c651c20,\n\t0x1efb0: 0x6cf16e20, 0x1efb1: 0x6ce1fa20, 0x1efb2: 0x6c466620, 0x1efb3: 0x6cdec620,\n\t0x1efb4: 0x6c076c20, 0x1efb5: 0x6d011c20, 0x1efb6: 0x6cac8820, 0x1efb7: 0x6c445420,\n\t0x1efb8: 0x6c0ab020, 0x1efb9: 0x6c7e2e20, 0x1efba: 0x6ce0e020, 0x1efbb: 0x6c90d420,\n\t0x1efbc: 0x6c4ba420, 0x1efbd: 0x6cbc1220, 0x1efbe: 0x6d08ee20, 0x1efbf: 0x6c5f9820,\n\t// Block 0x7bf, offset 0x1efc0\n\t0x1efc0: 0x6c654820, 0x1efc1: 0x6c679820, 0x1efc2: 0x6c164c20, 0x1efc3: 0x6c26d820,\n\t0x1efc4: 0x6c56e820, 0x1efc5: 0x6cfc6420, 0x1efc6: 0x6cb96020, 0x1efc7: 0x6c320420,\n\t0x1efc8: 0x6cec4420, 0x1efc9: 0x6c655a20, 0x1efca: 0x6c801e20, 0x1efcb: 0x6ceeee20,\n\t0x1efcc: 0x6cc5fc20, 0x1efcd: 0x6c3ecc20, 0x1efce: 0x6c9aa220, 0x1efcf: 0x6cc37820,\n\t0x1efd0: 0x6c442e20, 0x1efd1: 0x6cf01020, 0x1efd2: 0x6cbc6420, 0x1efd3: 0x6c4e3e20,\n\t0x1efd4: 0x6c172820, 0x1efd5: 0x6c7e3420, 0x1efd6: 0x6cc77c20, 0x1efd7: 0x6d286620,\n\t0x1efd8: 0x6ccf8020, 0x1efd9: 0x6cf04620, 0x1efda: 0x6c444e20, 0x1efdb: 0x6c046220,\n\t0x1efdc: 0x6ce1fc20, 0x1efdd: 0x6c466820, 0x1efde: 0x6d286c20, 0x1efdf: 0x6c435e20,\n\t0x1efe0: 0x6c0ab220, 0x1efe1: 0x6cf05220, 0x1efe2: 0x6cdcc220, 0x1efe3: 0x6c31fa20,\n\t0x1efe4: 0x6cec4620, 0x1efe5: 0x6c320620, 0x1efe6: 0x6ceed820, 0x1efe7: 0x6cc5cc20,\n\t0x1efe8: 0x6c3e2820, 0x1efe9: 0x6c4e1a20, 0x1efea: 0x6cefea20, 0x1efeb: 0x6d283e20,\n\t0x1efec: 0x6ce1e020, 0x1efed: 0x6c6fb420, 0x1efee: 0x6c6fc420, 0x1efef: 0x6cfad220,\n\t0x1eff0: 0x6d022820, 0x1eff1: 0x6cfae220, 0x1eff2: 0x6c5f8820, 0x1eff3: 0x6d19ba20,\n\t0x1eff4: 0x6d28c220, 0x1eff5: 0x6d284020, 0x1eff6: 0x6ccea820, 0x1eff7: 0x6c822420,\n\t0x1eff8: 0x6caecc20, 0x1eff9: 0x6c5a2020, 0x1effa: 0x6d1c0420, 0x1effb: 0x6d287220,\n\t0x1effc: 0x6caef020, 0x1effd: 0x6c016020, 0x1effe: 0x6d1a1820, 0x1efff: 0x6cfe0a20,\n\t// Block 0x7c0, offset 0x1f000\n\t0x1f000: 0x6c56ea20, 0x1f001: 0x6d12dc20, 0x1f002: 0x6c2f6e20, 0x1f003: 0x6cbea820,\n\t0x1f004: 0x6c7c7020, 0x1f005: 0x6cfe3a20, 0x1f006: 0x6cd75420, 0x1f007: 0x6c4daa20,\n\t0x1f008: 0x6d05ae20, 0x1f009: 0x6d152a20, 0x1f00a: 0x6d05b620, 0x1f00b: 0x6c35b420,\n\t0x1f00c: 0x6cd99020, 0x1f00d: 0x6c7cd820, 0x1f00e: 0x6cb60c20, 0x1f00f: 0x6c4f8220,\n\t0x1f010: 0x6d238620, 0x1f011: 0x6cece020, 0x1f012: 0x6c048c20, 0x1f013: 0x6c33fe20,\n\t0x1f014: 0x6c2b8620, 0x1f015: 0x6c27f220, 0x1f016: 0x6cacbe20, 0x1f017: 0x6cb31820,\n\t0x1f018: 0x6c8e1220, 0x1f019: 0x6c182e20, 0x1f01a: 0x6c6e2620, 0x1f01b: 0x6c834020,\n\t0x1f01c: 0x6c516a20, 0x1f01d: 0x6cbb9e20, 0x1f01e: 0x6c36a020, 0x1f01f: 0x6c357c20,\n\t0x1f020: 0x6cf01220, 0x1f021: 0x6d00e620, 0x1f022: 0x6c7e1020, 0x1f023: 0x6cd07020,\n\t0x1f024: 0x6d156620, 0x1f025: 0x6cd07a20, 0x1f026: 0x6c4d2420, 0x1f027: 0x6c332820,\n\t0x1f028: 0x6d228420, 0x1f029: 0x6cb26620, 0x1f02a: 0x6c834220, 0x1f02b: 0x6c3f8420,\n\t0x1f02c: 0x6c63e020, 0x1f02d: 0x6ce7f820, 0x1f02e: 0x6c5c4a20, 0x1f02f: 0x6c7ca020,\n\t0x1f030: 0x6c63ec20, 0x1f031: 0x6c953220, 0x1f032: 0x6ce6e220, 0x1f033: 0x6c199820,\n\t0x1f034: 0x6d1d1020, 0x1f035: 0x6d276a20, 0x1f036: 0x6c55c620, 0x1f037: 0x6c4f1020,\n\t0x1f038: 0x6c6e3620, 0x1f039: 0x6ce9be20, 0x1f03a: 0x6ce9c020, 0x1f03b: 0x6cb21420,\n\t0x1f03c: 0x6c7f5a20, 0x1f03d: 0x6ce9c220, 0x1f03e: 0x6d3eb420, 0x1f03f: 0x6d3eb220,\n\t// Block 0x7c1, offset 0x1f040\n\t0x1f040: 0x6c20e620, 0x1f041: 0x6c2fc020, 0x1f042: 0x6c7f5c20, 0x1f043: 0x6ce02020,\n\t0x1f044: 0x6c4f2220, 0x1f045: 0x6cb93220, 0x1f046: 0x6c783820, 0x1f047: 0x6c257220,\n\t0x1f048: 0x6d085e20, 0x1f049: 0x6cbd4420, 0x1f04a: 0x6d157820, 0x1f04b: 0x6cc9d420,\n\t0x1f04c: 0x6ce39e20, 0x1f04d: 0x6c358a20, 0x1f04e: 0x6c36ca20, 0x1f04f: 0x6d0ce220,\n\t0x1f050: 0x6cf21420, 0x1f051: 0x6c76f820, 0x1f052: 0x6d1e0220, 0x1f053: 0x6d3b9820,\n\t0x1f054: 0x6d0ce420, 0x1f055: 0x6cfc3c20, 0x1f056: 0x6d035220, 0x1f057: 0x6d162620,\n\t0x1f058: 0x6d263820, 0x1f059: 0x6cca9620, 0x1f05a: 0x6c2ce620, 0x1f05b: 0x6c2ce820,\n\t0x1f05c: 0x6c67ca20, 0x1f05d: 0x6c7c4a20, 0x1f05e: 0x6c835420, 0x1f05f: 0x6c819220,\n\t0x1f060: 0x6cb1a820, 0x1f061: 0x6cec7820, 0x1f062: 0x6c979a20, 0x1f063: 0x6c247c20,\n\t0x1f064: 0x6d117820, 0x1f065: 0x6c507e20, 0x1f066: 0x6cbc1420, 0x1f067: 0x6c482e20,\n\t0x1f068: 0x6d0ab620, 0x1f069: 0x6d0e1a20, 0x1f06a: 0x6c5c9e20, 0x1f06b: 0x6c164e20,\n\t0x1f06c: 0x6cc7ee20, 0x1f06d: 0x6c9bb620, 0x1f06e: 0x6c0d7420, 0x1f06f: 0x6cfc6620,\n\t0x1f070: 0x6cb23220, 0x1f071: 0x6c91a620, 0x1f072: 0x6c806620, 0x1f073: 0x6ca8d620,\n\t0x1f074: 0x6cc34620, 0x1f075: 0x6d12be20, 0x1f076: 0x6c2f6a20, 0x1f077: 0x6cbe9e20,\n\t0x1f078: 0x6c4d9620, 0x1f079: 0x6cfe2420, 0x1f07a: 0x6cd74a20, 0x1f07b: 0x6d057e20,\n\t0x1f07c: 0x6d058820, 0x1f07d: 0x6cecd220, 0x1f07e: 0x6c480620, 0x1f07f: 0x6c33ec20,\n\t// Block 0x7c2, offset 0x1f080\n\t0x1f080: 0x6cb5b420, 0x1f081: 0x6c047c20, 0x1f082: 0x6cd98820, 0x1f083: 0x6c4f7220,\n\t0x1f084: 0x6d22fc20, 0x1f085: 0x6c915420, 0x1f086: 0x6c8e1020, 0x1f087: 0x6cb30c20,\n\t0x1f088: 0x6c6e1e20, 0x1f089: 0x6c6ada20, 0x1f08a: 0x6c63c820, 0x1f08b: 0x6ce6d420,\n\t0x1f08c: 0x6c513220, 0x1f08d: 0x6d1cf420, 0x1f08e: 0x6c6f1420, 0x1f08f: 0x6c780220,\n\t0x1f090: 0x6d152c20, 0x1f091: 0x6cb21220, 0x1f092: 0x6c5bee20, 0x1f093: 0x6ce9a820,\n\t0x1f094: 0x6c4ed620, 0x1f095: 0x6d1cf820, 0x1f096: 0x6d1cfa20, 0x1f097: 0x6c781e20,\n\t0x1f098: 0x6ce37420, 0x1f099: 0x6d1dfe20, 0x1f09a: 0x6c36a220, 0x1f09b: 0x6d3b9020,\n\t0x1f09c: 0x6d0ccc20, 0x1f09d: 0x6c357e20, 0x1f09e: 0x6ca87820, 0x1f09f: 0x6c975a20,\n\t0x1f0a0: 0x6c2cdc20, 0x1f0a1: 0x6cca8c20, 0x1f0a2: 0x6c507820, 0x1f0a3: 0x6c835020,\n\t0x1f0a4: 0x6c163c20, 0x1f0a5: 0x6cc7e620, 0x1f0a6: 0x6cb22620, 0x1f0a7: 0x6cc33e20,\n\t0x1f0a8: 0x6c3c2c20, 0x1f0a9: 0x6c0c0020, 0x1f0aa: 0x6c48be20, 0x1f0ab: 0x6c3eb820,\n\t0x1f0ac: 0x6cf96e20, 0x1f0ad: 0x6d2e0c20, 0x1f0ae: 0x6c0c1020, 0x1f0af: 0x6cc98020,\n\t0x1f0b0: 0x6c038820, 0x1f0b1: 0x6cdf3420, 0x1f0b2: 0x6c8b2a20, 0x1f0b3: 0x6c487420,\n\t0x1f0b4: 0x6d08ba20, 0x1f0b5: 0x6cce8820, 0x1f0b6: 0x6c72a820, 0x1f0b7: 0x6c0c3420,\n\t0x1f0b8: 0x6cd84020, 0x1f0b9: 0x6cf04820, 0x1f0ba: 0x6d0fec20, 0x1f0bb: 0x6d116a20,\n\t0x1f0bc: 0x6cd9f820, 0x1f0bd: 0x6c767820, 0x1f0be: 0x6cd9fa20, 0x1f0bf: 0x6c386c20,\n\t// Block 0x7c3, offset 0x1f0c0\n\t0x1f0c0: 0x6c8ed220, 0x1f0c1: 0x6cf7bc20, 0x1f0c2: 0x6c8f5620, 0x1f0c3: 0x6cb17020,\n\t0x1f0c4: 0x6cb17220, 0x1f0c5: 0x6c8ede20, 0x1f0c6: 0x6c0c5620, 0x1f0c7: 0x6c0c5820,\n\t0x1f0c8: 0x6c0c5a20, 0x1f0c9: 0x6c8a5620, 0x1f0ca: 0x6c0c9e20, 0x1f0cb: 0x6ccb9c20,\n\t0x1f0cc: 0x6c3c9020, 0x1f0cd: 0x6d051820, 0x1f0ce: 0x6c3c0e20, 0x1f0cf: 0x6d0f8220,\n\t0x1f0d0: 0x6d2dde20, 0x1f0d1: 0x6c0bee20, 0x1f0d2: 0x6cc97020, 0x1f0d3: 0x6c725420,\n\t0x1f0d4: 0x6cd7fc20, 0x1f0d5: 0x6cd9c620, 0x1f0d6: 0x6d112e20, 0x1f0d7: 0x6c8e7e20,\n\t0x1f0d8: 0x6cb16020, 0x1f0d9: 0x6c0c2620, 0x1f0da: 0x6c0c2820, 0x1f0db: 0x6c39f420,\n\t0x1f0dc: 0x6c387420, 0x1f0dd: 0x6c3a2e20, 0x1f0de: 0x6c39ee20, 0x1f0df: 0x6cd25820,\n\t0x1f0e0: 0x6cd24c20, 0x1f0e1: 0x6c116220, 0x1f0e2: 0x6c5eb020, 0x1f0e3: 0x6c2f9e20,\n\t0x1f0e4: 0x6cd8ae20, 0x1f0e5: 0x6ceac620, 0x1f0e6: 0x6d2d7220, 0x1f0e7: 0x6cdcd220,\n\t0x1f0e8: 0x6cfde820, 0x1f0e9: 0x6cea5a20, 0x1f0ea: 0x6cc5fe20, 0x1f0eb: 0x6d235e20,\n\t0x1f0ec: 0x6c737e20, 0x1f0ed: 0x6c1c2a20, 0x1f0ee: 0x6d1af220, 0x1f0ef: 0x6c395c20,\n\t0x1f0f0: 0x6c395e20, 0x1f0f1: 0x6cdcda20, 0x1f0f2: 0x6d1ae820, 0x1f0f3: 0x6ce81620,\n\t0x1f0f4: 0x6d152e20, 0x1f0f5: 0x6d42a620, 0x1f0f6: 0x6c09ec20, 0x1f0f7: 0x6c6b9c20,\n\t0x1f0f8: 0x6ce1e220, 0x1f0f9: 0x6c8f0e20, 0x1f0fa: 0x6c226220, 0x1f0fb: 0x6ce61420,\n\t0x1f0fc: 0x6cd8d420, 0x1f0fd: 0x6c060420, 0x1f0fe: 0x6cd3b020, 0x1f0ff: 0x6c350620,\n\t// Block 0x7c4, offset 0x1f100\n\t0x1f100: 0x6c4d7220, 0x1f101: 0x6cc60420, 0x1f102: 0x6ce51020, 0x1f103: 0x6c691e20,\n\t0x1f104: 0x6c63da20, 0x1f105: 0x6c0df020, 0x1f106: 0x6d113020, 0x1f107: 0x6ce77420,\n\t0x1f108: 0x6c226420, 0x1f109: 0x6cfdf820, 0x1f10a: 0x6d102a20, 0x1f10b: 0x6c738a20,\n\t0x1f10c: 0x6c37a220, 0x1f10d: 0x6d0eb220, 0x1f10e: 0x6c823a20, 0x1f10f: 0x6cf68c20,\n\t0x1f110: 0x6c117220, 0x1f111: 0x6c0e8e20, 0x1f112: 0x6ca57220, 0x1f113: 0x6c36a420,\n\t0x1f114: 0x6c10b620, 0x1f115: 0x6c75e620, 0x1f116: 0x6c313620, 0x1f117: 0x6cdb0e20,\n\t0x1f118: 0x6d219820, 0x1f119: 0x6cd3d020, 0x1f11a: 0x6d114a20, 0x1f11b: 0x6c5d0020,\n\t0x1f11c: 0x6c4cd220, 0x1f11d: 0x6cd3d220, 0x1f11e: 0x6c66dc20, 0x1f11f: 0x6d3cae20,\n\t0x1f120: 0x6c0df420, 0x1f121: 0x6cfd1620, 0x1f122: 0x6c10c020, 0x1f123: 0x6d135020,\n\t0x1f124: 0x6ce01620, 0x1f125: 0x6c3a1e20, 0x1f126: 0x6d2ede20, 0x1f127: 0x6cf0de20,\n\t0x1f128: 0x6c496820, 0x1f129: 0x6c36b220, 0x1f12a: 0x6caa9a20, 0x1f12b: 0x6d286020,\n\t0x1f12c: 0x6c55d620, 0x1f12d: 0x6c5a1420, 0x1f12e: 0x6ce61c20, 0x1f12f: 0x6c5c6220,\n\t0x1f130: 0x6c650c20, 0x1f131: 0x6c543c20, 0x1f132: 0x6c00e820, 0x1f133: 0x6ce14c20,\n\t0x1f134: 0x6c3b4820, 0x1f135: 0x6cf0ee20, 0x1f136: 0x6c47de20, 0x1f137: 0x6c13b820,\n\t0x1f138: 0x6cd99e20, 0x1f139: 0x6ce15820, 0x1f13a: 0x6c0f9820, 0x1f13b: 0x6c42e820,\n\t0x1f13c: 0x6cf90c20, 0x1f13d: 0x6c7d2620, 0x1f13e: 0x6c8f4e20, 0x1f13f: 0x6cd9f220,\n\t// Block 0x7c5, offset 0x1f140\n\t0x1f140: 0x6ce24a20, 0x1f141: 0x6d137c20, 0x1f142: 0x6d27cc20, 0x1f143: 0x6ca08a20,\n\t0x1f144: 0x6ce16020, 0x1f145: 0x6c979420, 0x1f146: 0x6c0aa020, 0x1f147: 0x6d245620,\n\t0x1f148: 0x6d050a20, 0x1f149: 0x6c6cc820, 0x1f14a: 0x6cca4420, 0x1f14b: 0x6c7d3c20,\n\t0x1f14c: 0x6d3bfc20, 0x1f14d: 0x6ccdde20, 0x1f14e: 0x6c1c9020, 0x1f14f: 0x6c28e620,\n\t0x1f150: 0x6d193c20, 0x1f151: 0x6c5f9020, 0x1f152: 0x6cc53220, 0x1f153: 0x6c19ac20,\n\t0x1f154: 0x6d1de420, 0x1f155: 0x6ce20220, 0x1f156: 0x6cf11c20, 0x1f157: 0x6cfe0e20,\n\t0x1f158: 0x6d2dc620, 0x1f159: 0x6c3b4a20, 0x1f15a: 0x6c4d8a20, 0x1f15b: 0x6c9bb020,\n\t0x1f15c: 0x6d0f1420, 0x1f15d: 0x6ca0a220, 0x1f15e: 0x6c158020, 0x1f15f: 0x6cfe1020,\n\t0x1f160: 0x6c959820, 0x1f161: 0x6d29cc20, 0x1f162: 0x6ca46c20, 0x1f163: 0x6cd22620,\n\t0x1f164: 0x6c2f9020, 0x1f165: 0x6c5e6e20, 0x1f166: 0x6cea9e20, 0x1f167: 0x6ce0e420,\n\t0x1f168: 0x6cea4420, 0x1f169: 0x6cf84020, 0x1f16a: 0x6cc5ce20, 0x1f16b: 0x6d22d220,\n\t0x1f16c: 0x6c1bea20, 0x1f16d: 0x6c392420, 0x1f16e: 0x6d1acc20, 0x1f16f: 0x6c665620,\n\t0x1f170: 0x6cd32620, 0x1f171: 0x6c05e820, 0x1f172: 0x6cd89420, 0x1f173: 0x6c34d220,\n\t0x1f174: 0x6d147e20, 0x1f175: 0x6c378c20, 0x1f176: 0x6cc52420, 0x1f177: 0x6cfdde20,\n\t0x1f178: 0x6c50e820, 0x1f179: 0x6c823820, 0x1f17a: 0x6c68d820, 0x1f17b: 0x6cf5b020,\n\t0x1f17c: 0x6c0dd420, 0x1f17d: 0x6c0e6a20, 0x1f17e: 0x6c310c20, 0x1f17f: 0x6c360420,\n\t// Block 0x7c6, offset 0x1f180\n\t0x1f180: 0x6d210020, 0x1f181: 0x6ca56a20, 0x1f182: 0x6c75a820, 0x1f183: 0x6c4cbe20,\n\t0x1f184: 0x6c5ce820, 0x1f185: 0x6cfcbe20, 0x1f186: 0x6c495020, 0x1f187: 0x6c13a020,\n\t0x1f188: 0x6c7d0220, 0x1f189: 0x6c479820, 0x1f18a: 0x6cd9ba20, 0x1f18b: 0x6c14fc20,\n\t0x1f18c: 0x6d130a20, 0x1f18d: 0x6ca06020, 0x1f18e: 0x6c0f2220, 0x1f18f: 0x6c8e7620,\n\t0x1f190: 0x6d04de20, 0x1f191: 0x6c6ca820, 0x1f192: 0x6c976e20, 0x1f193: 0x6cca2820,\n\t0x1f194: 0x6d3be020, 0x1f195: 0x6ca46420, 0x1f196: 0x6cd44220, 0x1f197: 0x6c7c7220,\n\t0x1f198: 0x6c4c9020, 0x1f199: 0x6cfd6620, 0x1f19a: 0x6c3b8020, 0x1f19b: 0x6c0f3c20,\n\t0x1f19c: 0x6ca64420, 0x1f19d: 0x6c0a1420, 0x1f19e: 0x6c0f6e20, 0x1f19f: 0x6ce8fa20,\n\t0x1f1a0: 0x6c4dbc20, 0x1f1a1: 0x6c3a2020, 0x1f1a2: 0x6c650e20, 0x1f1a3: 0x6c015420,\n\t0x1f1a4: 0x6c00fa20, 0x1f1a5: 0x6c408020, 0x1f1a6: 0x6cfaf620, 0x1f1a7: 0x6d276c20,\n\t0x1f1a8: 0x6d02f420, 0x1f1a9: 0x6c3bb020, 0x1f1aa: 0x6cb1fe20, 0x1f1ab: 0x6d02fa20,\n\t0x1f1ac: 0x6c969820, 0x1f1ad: 0x6d236020, 0x1f1ae: 0x6c3caa20, 0x1f1af: 0x6c4ed820,\n\t0x1f1b0: 0x6c2b7420, 0x1f1b1: 0x6ceb3220, 0x1f1b2: 0x6d306820, 0x1f1b3: 0x6c1b4220,\n\t0x1f1b4: 0x6d0a2420, 0x1f1b5: 0x6d3b1020, 0x1f1b6: 0x6d340c20, 0x1f1b7: 0x6cae2420,\n\t0x1f1b8: 0x6d034620, 0x1f1b9: 0x6cc64a20, 0x1f1ba: 0x6cc97a20, 0x1f1bb: 0x6d27f820,\n\t0x1f1bc: 0x6cf1a420, 0x1f1bd: 0x6d348a20, 0x1f1be: 0x6c28a020, 0x1f1bf: 0x6c935c20,\n\t// Block 0x7c7, offset 0x1f1c0\n\t0x1f1c0: 0x6d1f5e20, 0x1f1c1: 0x6c0f3e20, 0x1f1c2: 0x6c060a20, 0x1f1c3: 0x6c748a20,\n\t0x1f1c4: 0x6ceb4220, 0x1f1c5: 0x6d184020, 0x1f1c6: 0x6cc13020, 0x1f1c7: 0x6cb4c220,\n\t0x1f1c8: 0x6cc13e20, 0x1f1c9: 0x6c6ee620, 0x1f1ca: 0x6cb35c20, 0x1f1cb: 0x6d2f7020,\n\t0x1f1cc: 0x6d251220, 0x1f1cd: 0x6cadf020, 0x1f1ce: 0x6d394c20, 0x1f1cf: 0x6c727220,\n\t0x1f1d0: 0x6d3b2620, 0x1f1d1: 0x6caa4420, 0x1f1d2: 0x6c70c820, 0x1f1d3: 0x6caf8820,\n\t0x1f1d4: 0x6d29fa20, 0x1f1d5: 0x6c645020, 0x1f1d6: 0x6c8d4e20, 0x1f1d7: 0x6d31f620,\n\t0x1f1d8: 0x6cdf3a20, 0x1f1d9: 0x6c404820, 0x1f1da: 0x6d103020, 0x1f1db: 0x6cd2d820,\n\t0x1f1dc: 0x6c0a4020, 0x1f1dd: 0x6cebc220, 0x1f1de: 0x6ceb4620, 0x1f1df: 0x6cd8e420,\n\t0x1f1e0: 0x6c8e9020, 0x1f1e1: 0x6c96de20, 0x1f1e2: 0x6cb13220, 0x1f1e3: 0x6ce24620,\n\t0x1f1e4: 0x6d36f820, 0x1f1e5: 0x6cc6b820, 0x1f1e6: 0x6ce2b620, 0x1f1e7: 0x6c308a20,\n\t0x1f1e8: 0x6d09ac20, 0x1f1e9: 0x6cc2a420, 0x1f1ea: 0x6cd02220, 0x1f1eb: 0x6c6ee820,\n\t0x1f1ec: 0x6c37a620, 0x1f1ed: 0x6c4d7a20, 0x1f1ee: 0x6c0f7020, 0x1f1ef: 0x6d39ce20,\n\t0x1f1f0: 0x6d1a0c20, 0x1f1f1: 0x6c962a20, 0x1f1f2: 0x6d397a20, 0x1f1f3: 0x6c28bc20,\n\t0x1f1f4: 0x6d023820, 0x1f1f5: 0x6c8eb020, 0x1f1f6: 0x6c716a20, 0x1f1f7: 0x6cd97020,\n\t0x1f1f8: 0x6cbd4620, 0x1f1f9: 0x6c987a20, 0x1f1fa: 0x6c80ec20, 0x1f1fb: 0x6c4f2420,\n\t0x1f1fc: 0x6ce90020, 0x1f1fd: 0x6d07da20, 0x1f1fe: 0x6cea1420, 0x1f1ff: 0x6c75f220,\n\t// Block 0x7c8, offset 0x1f200\n\t0x1f200: 0x6c35be20, 0x1f201: 0x6c1a7a20, 0x1f202: 0x6d03ac20, 0x1f203: 0x6c005820,\n\t0x1f204: 0x6c931420, 0x1f205: 0x6d3c6c20, 0x1f206: 0x6d38be20, 0x1f207: 0x6ccf8220,\n\t0x1f208: 0x6cb13620, 0x1f209: 0x6c7d8c20, 0x1f20a: 0x6ce24c20, 0x1f20b: 0x6c7f2e20,\n\t0x1f20c: 0x6d3fd220, 0x1f20d: 0x6c78e220, 0x1f20e: 0x6cb67c20, 0x1f20f: 0x6cb67e20,\n\t0x1f210: 0x6d0ede20, 0x1f211: 0x6c3a2220, 0x1f212: 0x6ccacc20, 0x1f213: 0x6d0df020,\n\t0x1f214: 0x6c445820, 0x1f215: 0x6d11e220, 0x1f216: 0x6cf54820, 0x1f217: 0x6cb14e20,\n\t0x1f218: 0x6c237620, 0x1f219: 0x6cb15020, 0x1f21a: 0x6cb9da20, 0x1f21b: 0x6c3a2420,\n\t0x1f21c: 0x6c5a2420, 0x1f21d: 0x6cb9d420, 0x1f21e: 0x6c5d6820, 0x1f21f: 0x6d21de20,\n\t0x1f220: 0x6ce3a820, 0x1f221: 0x6cc32420, 0x1f222: 0x6cfa1620, 0x1f223: 0x6d3fd620,\n\t0x1f224: 0x6c7cae20, 0x1f225: 0x6cc76c20, 0x1f226: 0x6cd84620, 0x1f227: 0x6c488020,\n\t0x1f228: 0x6ceb5c20, 0x1f229: 0x6c4aa220, 0x1f22a: 0x6cda0020, 0x1f22b: 0x6cb94a20,\n\t0x1f22c: 0x6c1a5a20, 0x1f22d: 0x6d374e20, 0x1f22e: 0x6c8ed620, 0x1f22f: 0x6caef820,\n\t0x1f230: 0x6ce2c820, 0x1f231: 0x6cf7be20, 0x1f232: 0x6c12b420, 0x1f233: 0x6c31ea20,\n\t0x1f234: 0x6d0efe20, 0x1f235: 0x6d25cc20, 0x1f236: 0x6d407220, 0x1f237: 0x6ccad020,\n\t0x1f238: 0x6ccde020, 0x1f239: 0x6c84b020, 0x1f23a: 0x6d376220, 0x1f23b: 0x6cd6b020,\n\t0x1f23c: 0x6c933820, 0x1f23d: 0x6cf7c020, 0x1f23e: 0x6c956c20, 0x1f23f: 0x6d2eec20,\n\t// Block 0x7c9, offset 0x1f240\n\t0x1f240: 0x6ca19020, 0x1f241: 0x6c030020, 0x1f242: 0x6c118420, 0x1f243: 0x6c0c5c20,\n\t0x1f244: 0x6c237a20, 0x1f245: 0x6cc16220, 0x1f246: 0x6c0ac220, 0x1f247: 0x6d376420,\n\t0x1f248: 0x6d248020, 0x1f249: 0x6d060c20, 0x1f24a: 0x6c576c20, 0x1f24b: 0x6c0e9e20,\n\t0x1f24c: 0x6cdb7020, 0x1f24d: 0x6cff5820, 0x1f24e: 0x6c8c0a20, 0x1f24f: 0x6d2ea420,\n\t0x1f250: 0x6c33c620, 0x1f251: 0x6c8eea20, 0x1f252: 0x6ceb6220, 0x1f253: 0x6c136a20,\n\t0x1f254: 0x6c2d9e20, 0x1f255: 0x6c68b220, 0x1f256: 0x6ce60c20, 0x1f257: 0x6d0f1620,\n\t0x1f258: 0x6c958620, 0x1f259: 0x6d2dca20, 0x1f25a: 0x6c6df820, 0x1f25b: 0x6d196a20,\n\t0x1f25c: 0x6d139e20, 0x1f25d: 0x6ceadc20, 0x1f25e: 0x6cb20020, 0x1f25f: 0x6d397220,\n\t0x1f260: 0x6d0f2620, 0x1f261: 0x6c902020, 0x1f262: 0x6c937220, 0x1f263: 0x6ce2e020,\n\t0x1f264: 0x6cfda820, 0x1f265: 0x6c630220, 0x1f266: 0x6cd6ca20, 0x1f267: 0x6c719c20,\n\t0x1f268: 0x6cf7d020, 0x1f269: 0x6c585020, 0x1f26a: 0x6c84ee20, 0x1f26b: 0x6c0c6820,\n\t0x1f26c: 0x6c968c20, 0x1f26d: 0x6d22ba20, 0x1f26e: 0x6ceae220, 0x1f26f: 0x6d09da20,\n\t0x1f270: 0x6c1afa20, 0x1f271: 0x6cc0d820, 0x1f272: 0x6cc63e20, 0x1f273: 0x6c0eb220,\n\t0x1f274: 0x6c935020, 0x1f275: 0x6d29f820, 0x1f276: 0x6cd2ba20, 0x1f277: 0x6cd89620,\n\t0x1f278: 0x6c3fbc20, 0x1f279: 0x6c706420, 0x1f27a: 0x6d404820, 0x1f27b: 0x6d3ab820,\n\t0x1f27c: 0x6cebc020, 0x1f27d: 0x6caa4020, 0x1f27e: 0x6c643820, 0x1f27f: 0x6d16d420,\n\t// Block 0x7ca, offset 0x1f280\n\t0x1f280: 0x6c273c20, 0x1f281: 0x6cfe9020, 0x1f282: 0x6c96b820, 0x1f283: 0x6d19bc20,\n\t0x1f284: 0x6c683a20, 0x1f285: 0x6c572e20, 0x1f286: 0x6c95ee20, 0x1f287: 0x6c4d5c20,\n\t0x1f288: 0x6cb10820, 0x1f289: 0x6c0bf020, 0x1f28a: 0x6c83b420, 0x1f28b: 0x6c1a6c20,\n\t0x1f28c: 0x6d0e5820, 0x1f28d: 0x6d036e20, 0x1f28e: 0x6cbd2820, 0x1f28f: 0x6c75aa20,\n\t0x1f290: 0x6cb5e220, 0x1f291: 0x6cb5e420, 0x1f292: 0x6c78aa20, 0x1f293: 0x6d3c5c20,\n\t0x1f294: 0x6d3f7e20, 0x1f295: 0x6cdaae20, 0x1f296: 0x6c116420, 0x1f297: 0x6cb14a20,\n\t0x1f298: 0x6d364820, 0x1f299: 0x6c7c8220, 0x1f29a: 0x6ccab020, 0x1f29b: 0x6cf4f620,\n\t0x1f29c: 0x6c02da20, 0x1f29d: 0x6c8e7820, 0x1f29e: 0x6cb8fa20, 0x1f29f: 0x6ccd9020,\n\t0x1f2a0: 0x6c0c1220, 0x1f2a1: 0x6c955020, 0x1f2a2: 0x6c233620, 0x1f2a3: 0x6c15e220,\n\t0x1f2a4: 0x6d395c20, 0x1f2a5: 0x6c62c420, 0x1f2a6: 0x6cd6ac20, 0x1f2a7: 0x6cfd9420,\n\t0x1f2a8: 0x6c476e20, 0x1f2a9: 0x6cefb420, 0x1f2aa: 0x6cefd220, 0x1f2ab: 0x6cefd420,\n\t0x1f2ac: 0x6d214020, 0x1f2ad: 0x6c422420, 0x1f2ae: 0x6d17d620, 0x1f2af: 0x6c01ec20,\n\t0x1f2b0: 0x6ce7f220, 0x1f2b1: 0x6c6bf020, 0x1f2b2: 0x6c065e20, 0x1f2b3: 0x6c074e20,\n\t0x1f2b4: 0x6c220c20, 0x1f2b5: 0x6ce3c620, 0x1f2b6: 0x6c2c0020, 0x1f2b7: 0x6c7a5620,\n\t0x1f2b8: 0x6c4d2820, 0x1f2b9: 0x6cbba020, 0x1f2ba: 0x6c543020, 0x1f2bb: 0x6c7af020,\n\t0x1f2bc: 0x6c443220, 0x1f2bd: 0x6ce9ee20, 0x1f2be: 0x6c452020, 0x1f2bf: 0x6cb12a20,\n\t// Block 0x7cb, offset 0x1f2c0\n\t0x1f2c0: 0x6c0a8220, 0x1f2c1: 0x6c783c20, 0x1f2c2: 0x6cb87a20, 0x1f2c3: 0x6d21ce20,\n\t0x1f2c4: 0x6cdc1420, 0x1f2c5: 0x6c90d020, 0x1f2c6: 0x6c0fb220, 0x1f2c7: 0x6cff4620,\n\t0x1f2c8: 0x6c055a20, 0x1f2c9: 0x6c0fb420, 0x1f2ca: 0x6c221420, 0x1f2cb: 0x6c7b5e20,\n\t0x1f2cc: 0x6c0d9220, 0x1f2cd: 0x6ca09420, 0x1f2ce: 0x6c8a5220, 0x1f2cf: 0x6c90da20,\n\t0x1f2d0: 0x6cff5220, 0x1f2d1: 0x6c31fe20, 0x1f2d2: 0x6d29f220, 0x1f2d3: 0x6cdc1a20,\n\t0x1f2d4: 0x6ce3d020, 0x1f2d5: 0x6c0d9620, 0x1f2d6: 0x6c7b6020, 0x1f2d7: 0x6c91a820,\n\t0x1f2d8: 0x6c42bc20, 0x1f2d9: 0x6c42c420, 0x1f2da: 0x6cbc5020, 0x1f2db: 0x6c779420,\n\t0x1f2dc: 0x6cbc2c20, 0x1f2dd: 0x6c819420, 0x1f2de: 0x6ccb0c20, 0x1f2df: 0x6c0bf420,\n\t0x1f2e0: 0x6c7d6e20, 0x1f2e1: 0x6c7d7620, 0x1f2e2: 0x6c2b7620, 0x1f2e3: 0x6c39da20,\n\t0x1f2e4: 0x6d04ec20, 0x1f2e5: 0x6cc47e20, 0x1f2e6: 0x6c98f820, 0x1f2e7: 0x6c28a220,\n\t0x1f2e8: 0x6c7d7e20, 0x1f2e9: 0x6c0d8620, 0x1f2ea: 0x6c383e20, 0x1f2eb: 0x6ce5a220,\n\t0x1f2ec: 0x6caf8a20, 0x1f2ed: 0x6d3e9c20, 0x1f2ee: 0x6c384220, 0x1f2ef: 0x6cc48620,\n\t0x1f2f0: 0x6ce41a20, 0x1f2f1: 0x6c066420, 0x1f2f2: 0x6c0a4220, 0x1f2f3: 0x6c990420,\n\t0x1f2f4: 0x6c3eea20, 0x1f2f5: 0x6c376a20, 0x1f2f6: 0x6cc6ba20, 0x1f2f7: 0x6cc14420,\n\t0x1f2f8: 0x6c45b620, 0x1f2f9: 0x6d04f820, 0x1f2fa: 0x6c7e1620, 0x1f2fb: 0x6c628e20,\n\t0x1f2fc: 0x6caed220, 0x1f2fd: 0x6d3b6020, 0x1f2fe: 0x6cce8e20, 0x1f2ff: 0x6cdd4420,\n\t// Block 0x7cc, offset 0x1f300\n\t0x1f300: 0x6ce43620, 0x1f301: 0x6c86ba20, 0x1f302: 0x6c0d8a20, 0x1f303: 0x6d3fd420,\n\t0x1f304: 0x6c2baa20, 0x1f305: 0x6caee420, 0x1f306: 0x6cd94820, 0x1f307: 0x6d32f820,\n\t0x1f308: 0x6cc32220, 0x1f309: 0x6d3fd820, 0x1f30a: 0x6cd76220, 0x1f30b: 0x6c660e20,\n\t0x1f30c: 0x6ceb9620, 0x1f30d: 0x6c55f420, 0x1f30e: 0x6c7eae20, 0x1f30f: 0x6c6f8e20,\n\t0x1f310: 0x6cb6a020, 0x1f311: 0x6c889820, 0x1f312: 0x6d320420, 0x1f313: 0x6c0d9420,\n\t0x1f314: 0x6caefa20, 0x1f315: 0x6c96e620, 0x1f316: 0x6cca0e20, 0x1f317: 0x6c979e20,\n\t0x1f318: 0x6c97a020, 0x1f319: 0x6ccbbc20, 0x1f31a: 0x6d061020, 0x1f31b: 0x6c8b7a20,\n\t0x1f31c: 0x6cb95420, 0x1f31d: 0x6cb95220, 0x1f31e: 0x6ca46220, 0x1f31f: 0x6c58cc20,\n\t0x1f320: 0x6c7e3220, 0x1f321: 0x6ca94220, 0x1f322: 0x6c0d9820, 0x1f323: 0x6c8b8a20,\n\t0x1f324: 0x6cc4fe20, 0x1f325: 0x6c310e20, 0x1f326: 0x6c313420, 0x1f327: 0x6ca53620,\n\t0x1f328: 0x6c53dc20, 0x1f329: 0x6cf90e20, 0x1f32a: 0x6c314e20, 0x1f32b: 0x6c4e7220,\n\t0x1f32c: 0x6c315420, 0x1f32d: 0x6c315220, 0x1f32e: 0x6c6f9620, 0x1f32f: 0x6c170e20,\n\t0x1f330: 0x6d249c20, 0x1f331: 0x6d24a420, 0x1f332: 0x6c43e020, 0x1f333: 0x6d0ecc20,\n\t0x1f334: 0x6c3f8e20, 0x1f335: 0x6cbdb820, 0x1f336: 0x6c4a9e20, 0x1f337: 0x6d3fdc20,\n\t0x1f338: 0x6c8f5820, 0x1f339: 0x6c4aa620, 0x1f33a: 0x6cce2a20, 0x1f33b: 0x6d248220,\n\t0x1f33c: 0x6c4ae220, 0x1f33d: 0x6c9a9620, 0x1f33e: 0x6c623220, 0x1f33f: 0x6cb61220,\n\t// Block 0x7cd, offset 0x1f340\n\t0x1f340: 0x6c40da20, 0x1f341: 0x6c7c9020, 0x1f342: 0x6c5cf620, 0x1f343: 0x6c038c20,\n\t0x1f344: 0x6cb39c20, 0x1f345: 0x6c9aa620, 0x1f346: 0x6d05c820, 0x1f347: 0x6d0dd220,\n\t0x1f348: 0x6cff1a20, 0x1f349: 0x6c89a220, 0x1f34a: 0x6d242620, 0x1f34b: 0x6ce9ca20,\n\t0x1f34c: 0x6cb53e20, 0x1f34d: 0x6cee3e20, 0x1f34e: 0x6c89a820, 0x1f34f: 0x6cf0f020,\n\t0x1f350: 0x6c41bc20, 0x1f351: 0x6c1aea20, 0x1f352: 0x6cb17420, 0x1f353: 0x6c0ab620,\n\t0x1f354: 0x6ca09620, 0x1f355: 0x6c616220, 0x1f356: 0x6d060820, 0x1f357: 0x6c1e3e20,\n\t0x1f358: 0x6d0e2620, 0x1f359: 0x6d2dcc20, 0x1f35a: 0x6d211220, 0x1f35b: 0x6c29c420,\n\t0x1f35c: 0x6cc57620, 0x1f35d: 0x6c6b0220, 0x1f35e: 0x6c03f620, 0x1f35f: 0x6c537c20,\n\t0x1f360: 0x6ceacc20, 0x1f361: 0x6c2e3620, 0x1f362: 0x6c614e20, 0x1f363: 0x6d073620,\n\t0x1f364: 0x6c358020, 0x1f365: 0x6c367c20, 0x1f366: 0x6ccc1220, 0x1f367: 0x6c4f8620,\n\t0x1f368: 0x6cea6620, 0x1f369: 0x6ca15e20, 0x1f36a: 0x6c6c0020, 0x1f36b: 0x6cd07220,\n\t0x1f36c: 0x6c04d620, 0x1f36d: 0x6d25a420, 0x1f36e: 0x6cb01420, 0x1f36f: 0x6c91d420,\n\t0x1f370: 0x6cf1aa20, 0x1f371: 0x6c55a620, 0x1f372: 0x6c915a20, 0x1f373: 0x6d289a20,\n\t0x1f374: 0x6c39ae20, 0x1f375: 0x6c3b9020, 0x1f376: 0x6ca36820, 0x1f377: 0x6d1f6c20,\n\t0x1f378: 0x6cb15220, 0x1f379: 0x6ca1b620, 0x1f37a: 0x6c517e20, 0x1f37b: 0x6cf9fa20,\n\t0x1f37c: 0x6cc14620, 0x1f37d: 0x6c4e3820, 0x1f37e: 0x6caf9420, 0x1f37f: 0x6c8d6220,\n\t// Block 0x7ce, offset 0x1f380\n\t0x1f380: 0x6ceb5220, 0x1f381: 0x6c0e9820, 0x1f382: 0x6cc0a020, 0x1f383: 0x6cb2d220,\n\t0x1f384: 0x6c3f0620, 0x1f385: 0x6c0a6420, 0x1f386: 0x6c22a420, 0x1f387: 0x6cf0e020,\n\t0x1f388: 0x6c70ce20, 0x1f389: 0x6c2de220, 0x1f38a: 0x6c03c620, 0x1f38b: 0x6d1f7a20,\n\t0x1f38c: 0x6c4bf020, 0x1f38d: 0x6caf9620, 0x1f38e: 0x6ca70620, 0x1f38f: 0x6d03a020,\n\t0x1f390: 0x6cdf4020, 0x1f391: 0x6c066a20, 0x1f392: 0x6c406020, 0x1f393: 0x6d2c9820,\n\t0x1f394: 0x6c728620, 0x1f395: 0x6c473620, 0x1f396: 0x6cd41e20, 0x1f397: 0x6c309a20,\n\t0x1f398: 0x6c27b020, 0x1f399: 0x6cdeba20, 0x1f39a: 0x6c6b4c20, 0x1f39b: 0x6cd50e20,\n\t0x1f39c: 0x6c548220, 0x1f39d: 0x6cfe0420, 0x1f39e: 0x6c376e20, 0x1f39f: 0x6c01d620,\n\t0x1f3a0: 0x6cef4820, 0x1f3a1: 0x6d2fe620, 0x1f3a2: 0x6d39d020, 0x1f3a3: 0x6d1b8220,\n\t0x1f3a4: 0x6c8b4020, 0x1f3a5: 0x6c962e20, 0x1f3a6: 0x6ce79420, 0x1f3a7: 0x6ce3c820,\n\t0x1f3a8: 0x6d18e220, 0x1f3a9: 0x6c0e3020, 0x1f3aa: 0x6cf03420, 0x1f3ab: 0x6c688a20,\n\t0x1f3ac: 0x6c7a6820, 0x1f3ad: 0x6c4a9220, 0x1f3ae: 0x6cfae620, 0x1f3af: 0x6c444820,\n\t0x1f3b0: 0x6c5b4420, 0x1f3b1: 0x6c81fc20, 0x1f3b2: 0x6c40b820, 0x1f3b3: 0x6c77ca20,\n\t0x1f3b4: 0x6d055e20, 0x1f3b5: 0x6c346820, 0x1f3b6: 0x6c758820, 0x1f3b7: 0x6ce3a020,\n\t0x1f3b8: 0x6c9e4620, 0x1f3b9: 0x6cce9220, 0x1f3ba: 0x6d2c9a20, 0x1f3bb: 0x6cdd4620,\n\t0x1f3bc: 0x6cbd4820, 0x1f3bd: 0x6d21d020, 0x1f3be: 0x6ca57820, 0x1f3bf: 0x6d30b420,\n\t// Block 0x7cf, offset 0x1f3c0\n\t0x1f3c0: 0x6c4bf620, 0x1f3c1: 0x6c452420, 0x1f3c2: 0x6cdb7c20, 0x1f3c3: 0x6cf40220,\n\t0x1f3c4: 0x6cc0a620, 0x1f3c5: 0x6ccd1820, 0x1f3c6: 0x6cb42020, 0x1f3c7: 0x6c596220,\n\t0x1f3c8: 0x6ce5a820, 0x1f3c9: 0x6c854020, 0x1f3ca: 0x6ccc2420, 0x1f3cb: 0x6ccc2620,\n\t0x1f3cc: 0x6c77d020, 0x1f3cd: 0x6c9b7e20, 0x1f3ce: 0x6c1a8e20, 0x1f3cf: 0x6c87e620,\n\t0x1f3d0: 0x6d409820, 0x1f3d1: 0x6cf94c20, 0x1f3d2: 0x6d1e6420, 0x1f3d3: 0x6ca61020,\n\t0x1f3d4: 0x6d3eba20, 0x1f3d5: 0x6cb68820, 0x1f3d6: 0x6d330c20, 0x1f3d7: 0x6cfe0620,\n\t0x1f3d8: 0x6ca57a20, 0x1f3d9: 0x6c216e20, 0x1f3da: 0x6c62c620, 0x1f3db: 0x6c2dec20,\n\t0x1f3dc: 0x6cbd0020, 0x1f3dd: 0x6c482c20, 0x1f3de: 0x6d38f220, 0x1f3df: 0x6c302420,\n\t0x1f3e0: 0x6c7f3020, 0x1f3e1: 0x6c3aec20, 0x1f3e2: 0x6ca61420, 0x1f3e3: 0x6d192220,\n\t0x1f3e4: 0x6c7d8e20, 0x1f3e5: 0x6c932620, 0x1f3e6: 0x6c703820, 0x1f3e7: 0x6c168620,\n\t0x1f3e8: 0x6c6de620, 0x1f3e9: 0x6c951220, 0x1f3ea: 0x6c8d8a20, 0x1f3eb: 0x6d406e20,\n\t0x1f3ec: 0x6c849420, 0x1f3ed: 0x6c9bf420, 0x1f3ee: 0x6d3fde20, 0x1f3ef: 0x6d375220,\n\t0x1f3f0: 0x6ca70c20, 0x1f3f1: 0x6c570420, 0x1f3f2: 0x6d24c420, 0x1f3f3: 0x6c2cb620,\n\t0x1f3f4: 0x6cd20c20, 0x1f3f5: 0x6cd02c20, 0x1f3f6: 0x6c5d1620, 0x1f3f7: 0x6ce3ac20,\n\t0x1f3f8: 0x6c544020, 0x1f3f9: 0x6d03b220, 0x1f3fa: 0x6d39e420, 0x1f3fb: 0x6c7ebc20,\n\t0x1f3fc: 0x6d3fe020, 0x1f3fd: 0x6d2b6820, 0x1f3fe: 0x6c0b1820, 0x1f3ff: 0x6c0b1a20,\n\t// Block 0x7d0, offset 0x1f400\n\t0x1f400: 0x6c596420, 0x1f401: 0x6cc32a20, 0x1f402: 0x6d2b7020, 0x1f403: 0x6ceeca20,\n\t0x1f404: 0x6ceecc20, 0x1f405: 0x6d21e620, 0x1f406: 0x6c212420, 0x1f407: 0x6cc77020,\n\t0x1f408: 0x6c2f0a20, 0x1f409: 0x6c5a2e20, 0x1f40a: 0x6c893220, 0x1f40b: 0x6d0e0620,\n\t0x1f40c: 0x6cbfda20, 0x1f40d: 0x6cbfdc20, 0x1f40e: 0x6c661020, 0x1f40f: 0x6c089c20,\n\t0x1f410: 0x6c36dc20, 0x1f411: 0x6d0ff220, 0x1f412: 0x6c409020, 0x1f413: 0x6cc9d820,\n\t0x1f414: 0x6c41fa20, 0x1f415: 0x6cf98220, 0x1f416: 0x6ceb9820, 0x1f417: 0x6c55fa20,\n\t0x1f418: 0x6cd42420, 0x1f419: 0x6cc93420, 0x1f41a: 0x6d08d620, 0x1f41b: 0x6cf17220,\n\t0x1f41c: 0x6cba8820, 0x1f41d: 0x6c508020, 0x1f41e: 0x6cf39020, 0x1f41f: 0x6c39b420,\n\t0x1f420: 0x6ccad620, 0x1f421: 0x6c8ee420, 0x1f422: 0x6c96aa20, 0x1f423: 0x6cd29620,\n\t0x1f424: 0x6cd21420, 0x1f425: 0x6c493a20, 0x1f426: 0x6d3ec220, 0x1f427: 0x6ce2d020,\n\t0x1f428: 0x6cde2620, 0x1f429: 0x6d117a20, 0x1f42a: 0x6c35a820, 0x1f42b: 0x6d1e0820,\n\t0x1f42c: 0x6cb9e420, 0x1f42d: 0x6cb6a420, 0x1f42e: 0x6cf17420, 0x1f42f: 0x6cc93820,\n\t0x1f430: 0x6cd0ce20, 0x1f431: 0x6c889e20, 0x1f432: 0x6c028e20, 0x1f433: 0x6c823420,\n\t0x1f434: 0x6c5b0c20, 0x1f435: 0x6c9fdc20, 0x1f436: 0x6c62e620, 0x1f437: 0x6ce5b620,\n\t0x1f438: 0x6cc16820, 0x1f439: 0x6c654a20, 0x1f43a: 0x6cd03020, 0x1f43b: 0x6c97a820,\n\t0x1f43c: 0x6cf7c620, 0x1f43d: 0x6cc0aa20, 0x1f43e: 0x6c0c9c20, 0x1f43f: 0x6c62e820,\n\t// Block 0x7d1, offset 0x1f440\n\t0x1f440: 0x6c62d820, 0x1f441: 0x6d3a3c20, 0x1f442: 0x6c679a20, 0x1f443: 0x6d051420,\n\t0x1f444: 0x6d3b9c20, 0x1f445: 0x6d1de620, 0x1f446: 0x6d2eee20, 0x1f447: 0x6c776420,\n\t0x1f448: 0x6d093620, 0x1f449: 0x6c0cce20, 0x1f44a: 0x6d248a20, 0x1f44b: 0x6cc16a20,\n\t0x1f44c: 0x6cfe6e20, 0x1f44d: 0x6c0ea220, 0x1f44e: 0x6c697820, 0x1f44f: 0x6d0a5a20,\n\t0x1f450: 0x6cdb7220, 0x1f451: 0x6c5a3a20, 0x1f452: 0x6d420020, 0x1f453: 0x6ccdee20,\n\t0x1f454: 0x6ccdf020, 0x1f455: 0x6c387620, 0x1f456: 0x6c4bae20, 0x1f457: 0x6c8c0c20,\n\t0x1f458: 0x6d0a5c20, 0x1f459: 0x6c9e8620, 0x1f45a: 0x6cf82c20, 0x1f45b: 0x6d2bbe20,\n\t0x1f45c: 0x6cfe7820, 0x1f45d: 0x6c3c0620, 0x1f45e: 0x6c494620, 0x1f45f: 0x6c548a20,\n\t0x1f460: 0x6c7b4e20, 0x1f461: 0x6d2b7220, 0x1f462: 0x6ccada20, 0x1f463: 0x6d2dd020,\n\t0x1f464: 0x6c420420, 0x1f465: 0x6c4bb220, 0x1f466: 0x6d1d6020, 0x1f467: 0x6c855220,\n\t0x1f468: 0x6c16da20, 0x1f469: 0x6c836e20, 0x1f46a: 0x6cd63a20, 0x1f46b: 0x6c011020,\n\t0x1f46c: 0x6cc7f220, 0x1f46d: 0x6c62fe20, 0x1f46e: 0x6d076e20, 0x1f46f: 0x6c56f220,\n\t0x1f470: 0x6cd63c20, 0x1f471: 0x6c87bc20, 0x1f472: 0x6c8b8e20, 0x1f473: 0x6c87c620,\n\t0x1f474: 0x6c9f2020, 0x1f475: 0x6d31a620, 0x1f476: 0x6cfe1220, 0x1f477: 0x6c370220,\n\t0x1f478: 0x6c91ac20, 0x1f479: 0x6c49ca20, 0x1f47a: 0x6c84f020, 0x1f47b: 0x6cfb1c20,\n\t0x1f47c: 0x6d20ce20, 0x1f47d: 0x6c29c220, 0x1f47e: 0x6c613a20, 0x1f47f: 0x6d1f4220,\n\t// Block 0x7d2, offset 0x1f480\n\t0x1f480: 0x6cea5c20, 0x1f481: 0x6c91c020, 0x1f482: 0x6c39ac20, 0x1f483: 0x6c035420,\n\t0x1f484: 0x6c515220, 0x1f485: 0x6c03be20, 0x1f486: 0x6cb2ba20, 0x1f487: 0x6ca70020,\n\t0x1f488: 0x6c915620, 0x1f489: 0x6d1f5220, 0x1f48a: 0x6d2c8020, 0x1f48b: 0x6c401420,\n\t0x1f48c: 0x6c03c020, 0x1f48d: 0x6c065620, 0x1f48e: 0x6c547620, 0x1f48f: 0x6cb00220,\n\t0x1f490: 0x6cdf2c20, 0x1f491: 0x6c4a8220, 0x1f492: 0x6c6b1620, 0x1f493: 0x6c77b420,\n\t0x1f494: 0x6ceffa20, 0x1f495: 0x6c376420, 0x1f496: 0x6ce77620, 0x1f497: 0x6d2b6220,\n\t0x1f498: 0x6c547c20, 0x1f499: 0x6c7b2e20, 0x1f49a: 0x6c625a20, 0x1f49b: 0x6c686220,\n\t0x1f49c: 0x6cfac620, 0x1f49d: 0x6d2c8820, 0x1f49e: 0x6cfdfa20, 0x1f49f: 0x6d0a2c20,\n\t0x1f4a0: 0x6c451e20, 0x1f4a1: 0x6c843820, 0x1f4a2: 0x6c884620, 0x1f4a3: 0x6c64ea20,\n\t0x1f4a4: 0x6c852c20, 0x1f4a5: 0x6cd28820, 0x1f4a6: 0x6ce5a420, 0x1f4a7: 0x6c4be820,\n\t0x1f4a8: 0x6ccc1620, 0x1f4a9: 0x6c595020, 0x1f4aa: 0x6c758020, 0x1f4ab: 0x6c626e20,\n\t0x1f4ac: 0x6d1e5a20, 0x1f4ad: 0x6cbe5820, 0x1f4ae: 0x6c8d6420, 0x1f4af: 0x6cb65820,\n\t0x1f4b0: 0x6d406820, 0x1f4b1: 0x6c3a1c20, 0x1f4b2: 0x6c7d8620, 0x1f4b3: 0x6c168020,\n\t0x1f4b4: 0x6c482a20, 0x1f4b5: 0x6ca60a20, 0x1f4b6: 0x6ca70820, 0x1f4b7: 0x6c2de420,\n\t0x1f4b8: 0x6c6dd420, 0x1f4b9: 0x6cd02420, 0x1f4ba: 0x6cd20020, 0x1f4bb: 0x6d3e9e20,\n\t0x1f4bc: 0x6c3bf820, 0x1f4bd: 0x6c2ef620, 0x1f4be: 0x6c089420, 0x1f4bf: 0x6c16ce20,\n\t// Block 0x7d3, offset 0x1f4c0\n\t0x1f4c0: 0x6ce39020, 0x1f4c1: 0x6cf16c20, 0x1f4c2: 0x6ceec420, 0x1f4c3: 0x6cc9d220,\n\t0x1f4c4: 0x6c36c020, 0x1f4c5: 0x6cbfd220, 0x1f4c6: 0x6c407020, 0x1f4c7: 0x6c5a1620,\n\t0x1f4c8: 0x6cc31e20, 0x1f4c9: 0x6c678a20, 0x1f4ca: 0x6c0b1220, 0x1f4cb: 0x6ccac820,\n\t0x1f4cc: 0x6c028020, 0x1f4cd: 0x6cb68020, 0x1f4ce: 0x6cde1e20, 0x1f4cf: 0x6c493220,\n\t0x1f4d0: 0x6d116620, 0x1f4d1: 0x6cad1220, 0x1f4d2: 0x6c651e20, 0x1f4d3: 0x6c823020,\n\t0x1f4d4: 0x6c0c9a20, 0x1f4d5: 0x6d093420, 0x1f4d6: 0x6c0cc820, 0x1f4d7: 0x6c979820,\n\t0x1f4d8: 0x6c9fd820, 0x1f4d9: 0x6d1dd220, 0x1f4da: 0x6cf10420, 0x1f4db: 0x6cf7b620,\n\t0x1f4dc: 0x6c4ba020, 0x1f4dd: 0x6ccde220, 0x1f4de: 0x6c8c0620, 0x1f4df: 0x6d41fe20,\n\t0x1f4e0: 0x6c56e420, 0x1f4e1: 0x6c41fe20, 0x1f4e2: 0x6c854a20, 0x1f4e3: 0x6d2dc820,\n\t0x1f4e4: 0x6c496e20, 0x1f4e5: 0x6ca79a20, 0x1f4e6: 0x6d15f420, 0x1f4e7: 0x6c3ebc20,\n\t0x1f4e8: 0x6c864220, 0x1f4e9: 0x6c6f7e20, 0x1f4ea: 0x6c102220, 0x1f4eb: 0x6d0e8e20,\n\t0x1f4ec: 0x6c3f5020, 0x1f4ed: 0x6c2dd020, 0x1f4ee: 0x6c5efc20, 0x1f4ef: 0x6c3cea20,\n\t0x1f4f0: 0x6cc83620, 0x1f4f1: 0x6c41ac20, 0x1f4f2: 0x6cd1e820, 0x1f4f3: 0x6c3cee20,\n\t0x1f4f4: 0x6ca01420, 0x1f4f5: 0x6c060c20, 0x1f4f6: 0x6d250820, 0x1f4f7: 0x6d341420,\n\t0x1f4f8: 0x6c56c420, 0x1f4f9: 0x6cbd9a20, 0x1f4fa: 0x6c3d9820, 0x1f4fb: 0x6c049620,\n\t0x1f4fc: 0x6cf1ac20, 0x1f4fd: 0x6c64ec20, 0x1f4fe: 0x6cd1f620, 0x1f4ff: 0x6d23e420,\n\t// Block 0x7d4, offset 0x1f500\n\t0x1f500: 0x6c3d3220, 0x1f501: 0x6d10b620, 0x1f502: 0x6c74b020, 0x1f503: 0x6c74b220,\n\t0x1f504: 0x6cb06c20, 0x1f505: 0x6c583020, 0x1f506: 0x6d326820, 0x1f507: 0x6c061220,\n\t0x1f508: 0x6d0eb420, 0x1f509: 0x6d0af620, 0x1f50a: 0x6d336420, 0x1f50b: 0x6c399c20,\n\t0x1f50c: 0x6c3cf020, 0x1f50d: 0x6cf1ae20, 0x1f50e: 0x6cab5220, 0x1f50f: 0x6c279220,\n\t0x1f510: 0x6c43ac20, 0x1f511: 0x6cc7ca20, 0x1f512: 0x6c8d6620, 0x1f513: 0x6c9eea20,\n\t0x1f514: 0x6c3eec20, 0x1f515: 0x6ceb5420, 0x1f516: 0x6c9f7c20, 0x1f517: 0x6c869620,\n\t0x1f518: 0x6c0b5020, 0x1f519: 0x6d36fc20, 0x1f51a: 0x6c43ae20, 0x1f51b: 0x6d251420,\n\t0x1f51c: 0x6c227620, 0x1f51d: 0x6cc1cc20, 0x1f51e: 0x6cff1c20, 0x1f51f: 0x6c1adc20,\n\t0x1f520: 0x6c28c020, 0x1f521: 0x6c70d020, 0x1f522: 0x6d11d620, 0x1f523: 0x6c473820,\n\t0x1f524: 0x6c301820, 0x1f525: 0x6d240020, 0x1f526: 0x6d0f6e20, 0x1f527: 0x6cc73a20,\n\t0x1f528: 0x6d0afe20, 0x1f529: 0x6ce60420, 0x1f52a: 0x6d240220, 0x1f52b: 0x6ce54420,\n\t0x1f52c: 0x6d1bf820, 0x1f52d: 0x6c331620, 0x1f52e: 0x6cf38620, 0x1f52f: 0x6c377020,\n\t0x1f530: 0x6c487c20, 0x1f531: 0x6c00d420, 0x1f532: 0x6d341a20, 0x1f533: 0x6d0ed620,\n\t0x1f534: 0x6c527a20, 0x1f535: 0x6cff2c20, 0x1f536: 0x6c63f020, 0x1f537: 0x6c8b4220,\n\t0x1f538: 0x6d39d220, 0x1f539: 0x6d0fe220, 0x1f53a: 0x6ce39220, 0x1f53b: 0x6c539220,\n\t0x1f53c: 0x6c963020, 0x1f53d: 0x6cc7da20, 0x1f53e: 0x6ca1f220, 0x1f53f: 0x6c43b820,\n\t// Block 0x7d5, offset 0x1f540\n\t0x1f540: 0x6cc57e20, 0x1f541: 0x6c688c20, 0x1f542: 0x6d050220, 0x1f543: 0x6d38ba20,\n\t0x1f544: 0x6d341c20, 0x1f545: 0x6c963220, 0x1f546: 0x6c528c20, 0x1f547: 0x6ca77620,\n\t0x1f548: 0x6c370820, 0x1f549: 0x6c944620, 0x1f54a: 0x6c63f220, 0x1f54b: 0x6c62b420,\n\t0x1f54c: 0x6ce90420, 0x1f54d: 0x6c583820, 0x1f54e: 0x6ceb9220, 0x1f54f: 0x6c104a20,\n\t0x1f550: 0x6cf40420, 0x1f551: 0x6c730820, 0x1f552: 0x6d244820, 0x1f553: 0x6c0f9c20,\n\t0x1f554: 0x6c75f620, 0x1f555: 0x6d0aae20, 0x1f556: 0x6c089220, 0x1f557: 0x6cf71020,\n\t0x1f558: 0x6c75f820, 0x1f559: 0x6c717620, 0x1f55a: 0x6ce87e20, 0x1f55b: 0x6c6de420,\n\t0x1f55c: 0x6ce3a220, 0x1f55d: 0x6c359020, 0x1f55e: 0x6c359220, 0x1f55f: 0x6c7bcc20,\n\t0x1f560: 0x6c55e820, 0x1f561: 0x6cf48a20, 0x1f562: 0x6cd02a20, 0x1f563: 0x6c7f6620,\n\t0x1f564: 0x6c69ee20, 0x1f565: 0x6cacca20, 0x1f566: 0x6c932820, 0x1f567: 0x6cb02c20,\n\t0x1f568: 0x6cd51a20, 0x1f569: 0x6c3f2220, 0x1f56a: 0x6c015e20, 0x1f56b: 0x6d3dd020,\n\t0x1f56c: 0x6caef420, 0x1f56d: 0x6cbdba20, 0x1f56e: 0x6cb94220, 0x1f56f: 0x6c06be20,\n\t0x1f570: 0x6c2dee20, 0x1f571: 0x6c932a20, 0x1f572: 0x6cc42c20, 0x1f573: 0x6c652a20,\n\t0x1f574: 0x6c718420, 0x1f575: 0x6ce92a20, 0x1f576: 0x6d0b0420, 0x1f577: 0x6d252020,\n\t0x1f578: 0x6cb68e20, 0x1f579: 0x6c849620, 0x1f57a: 0x6d138620, 0x1f57b: 0x6d3c7020,\n\t0x1f57c: 0x6c798e20, 0x1f57d: 0x6c352020, 0x1f57e: 0x6c7d9020, 0x1f57f: 0x6cd11c20,\n\t// Block 0x7d6, offset 0x1f580\n\t0x1f580: 0x6cb69020, 0x1f581: 0x6c6de820, 0x1f582: 0x6d192420, 0x1f583: 0x6d192620,\n\t0x1f584: 0x6c6dea20, 0x1f585: 0x6d3ebc20, 0x1f586: 0x6c7f3220, 0x1f587: 0x6c302620,\n\t0x1f588: 0x6cb55020, 0x1f589: 0x6c219420, 0x1f58a: 0x6c44e620, 0x1f58b: 0x6c70e020,\n\t0x1f58c: 0x6c74f620, 0x1f58d: 0x6d199620, 0x1f58e: 0x6d422420, 0x1f58f: 0x6c5f8a20,\n\t0x1f590: 0x6cd62c20, 0x1f591: 0x6d1c1420, 0x1f592: 0x6c1c9220, 0x1f593: 0x6c9e8220,\n\t0x1f594: 0x6cc77220, 0x1f595: 0x6c016220, 0x1f596: 0x6cbfe020, 0x1f597: 0x6ce3ae20,\n\t0x1f598: 0x6c55fc20, 0x1f599: 0x6ce3b020, 0x1f59a: 0x6c36e020, 0x1f59b: 0x6c6a4420,\n\t0x1f59c: 0x6c991220, 0x1f59d: 0x6c3f2620, 0x1f59e: 0x6c212820, 0x1f59f: 0x6ce90820,\n\t0x1f5a0: 0x6d0e0820, 0x1f5a1: 0x6c51a020, 0x1f5a2: 0x6d25d020, 0x1f5a3: 0x6cb10620,\n\t0x1f5a4: 0x6c7d9620, 0x1f5a5: 0x6c9a3e20, 0x1f5a6: 0x6c55fe20, 0x1f5a7: 0x6d1c1620,\n\t0x1f5a8: 0x6c204820, 0x1f5a9: 0x6cf54c20, 0x1f5aa: 0x6c718a20, 0x1f5ab: 0x6c309c20,\n\t0x1f5ac: 0x6c124420, 0x1f5ad: 0x6c39e020, 0x1f5ae: 0x6c520a20, 0x1f5af: 0x6d1c3620,\n\t0x1f5b0: 0x6d25d220, 0x1f5b1: 0x6cfb0620, 0x1f5b2: 0x6cf24620, 0x1f5b3: 0x6cd21620,\n\t0x1f5b4: 0x6c520c20, 0x1f5b5: 0x6c1eca20, 0x1f5b6: 0x6ce16820, 0x1f5b7: 0x6cfa1a20,\n\t0x1f5b8: 0x6cc93a20, 0x1f5b9: 0x6c8ee620, 0x1f5ba: 0x6c60fe20, 0x1f5bb: 0x6c474c20,\n\t0x1f5bc: 0x6c654620, 0x1f5bd: 0x6cdd0420, 0x1f5be: 0x6c4f3a20, 0x1f5bf: 0x6c228020,\n\t// Block 0x7d7, offset 0x1f5c0\n\t0x1f5c0: 0x6c228220, 0x1f5c1: 0x6d195420, 0x1f5c2: 0x6d124820, 0x1f5c3: 0x6d0f0220,\n\t0x1f5c4: 0x6c5f9a20, 0x1f5c5: 0x6c875c20, 0x1f5c6: 0x6ce4d220, 0x1f5c7: 0x6c7a0e20,\n\t0x1f5c8: 0x6ce30620, 0x1f5c9: 0x6ce30820, 0x1f5ca: 0x6d195620, 0x1f5cb: 0x6ce90c20,\n\t0x1f5cc: 0x6c96ac20, 0x1f5cd: 0x6c68ae20, 0x1f5ce: 0x6c42f420, 0x1f5cf: 0x6ce4d420,\n\t0x1f5d0: 0x6c18fe20, 0x1f5d1: 0x6c610020, 0x1f5d2: 0x6ce97620, 0x1f5d3: 0x6d311020,\n\t0x1f5d4: 0x6c029020, 0x1f5d5: 0x6d11e620, 0x1f5d6: 0x6d143c20, 0x1f5d7: 0x6cab6620,\n\t0x1f5d8: 0x6c1c9820, 0x1f5d9: 0x6d376e20, 0x1f5da: 0x6c8f5c20, 0x1f5db: 0x6d1de820,\n\t0x1f5dc: 0x6c937020, 0x1f5dd: 0x6c0aca20, 0x1f5de: 0x6cd6b820, 0x1f5df: 0x6d3de420,\n\t0x1f5e0: 0x6d21fa20, 0x1f5e1: 0x6cf41020, 0x1f5e2: 0x6c752620, 0x1f5e3: 0x6d1ab620,\n\t0x1f5e4: 0x6ce3b820, 0x1f5e5: 0x6cd85620, 0x1f5e6: 0x6c68b420, 0x1f5e7: 0x6d196c20,\n\t0x1f5e8: 0x6c577020, 0x1f5e9: 0x6c0ad020, 0x1f5ea: 0x6d1c4620, 0x1f5eb: 0x6cdb7420,\n\t0x1f5ec: 0x6c5a3c20, 0x1f5ed: 0x6c38f820, 0x1f5ee: 0x6c68b620, 0x1f5ef: 0x6c8a5a20,\n\t0x1f5f0: 0x6d0f1820, 0x1f5f1: 0x6c42f820, 0x1f5f2: 0x6c704020, 0x1f5f3: 0x6cfbda20,\n\t0x1f5f4: 0x6cfbdc20, 0x1f5f5: 0x6ce90e20, 0x1f5f6: 0x6c971c20, 0x1f5f7: 0x6d420220,\n\t0x1f5f8: 0x6d248e20, 0x1f5f9: 0x6d1c4a20, 0x1f5fa: 0x6c934220, 0x1f5fb: 0x6ce97820,\n\t0x1f5fc: 0x6cfbde20, 0x1f5fd: 0x6d092e20, 0x1f5fe: 0x6d197820, 0x1f5ff: 0x6cb0e020,\n\t// Block 0x7d8, offset 0x1f600\n\t0x1f600: 0x6c1efc20, 0x1f601: 0x6c958c20, 0x1f602: 0x6cf75c20, 0x1f603: 0x6d15a220,\n\t0x1f604: 0x6c5fb220, 0x1f605: 0x6d2b2c20, 0x1f606: 0x6d220820, 0x1f607: 0x6d2dd220,\n\t0x1f608: 0x6d13a420, 0x1f609: 0x6d0ffa20, 0x1f60a: 0x6cb0e220, 0x1f60b: 0x6ca94420,\n\t0x1f60c: 0x6c56f420, 0x1f60d: 0x6c9cd220, 0x1f60e: 0x6d1c5020, 0x1f60f: 0x6c9bc420,\n\t0x1f610: 0x6c2bc220, 0x1f611: 0x6d273620, 0x1f612: 0x6d249020, 0x1f613: 0x6c831a20,\n\t0x1f614: 0x6c068620, 0x1f615: 0x6c91ae20, 0x1f616: 0x6c521220, 0x1f617: 0x6c902220,\n\t0x1f618: 0x6cd6cc20, 0x1f619: 0x6d274020, 0x1f61a: 0x6d1c5220, 0x1f61b: 0x6c49cc20,\n\t0x1f61c: 0x6cc23820, 0x1f61d: 0x6c84f220, 0x1f61e: 0x6c948820, 0x1f61f: 0x6ca78a20,\n\t0x1f620: 0x6c6f5a20, 0x1f621: 0x6c5e8820, 0x1f622: 0x6d24ca20, 0x1f623: 0x6c9fea20,\n\t0x1f624: 0x6cd1a020, 0x1f625: 0x6cab3620, 0x1f626: 0x6d0ada20, 0x1f627: 0x6c122620,\n\t0x1f628: 0x6c05ec20, 0x1f629: 0x6d322a20, 0x1f62a: 0x6c470420, 0x1f62b: 0x6c2fec20,\n\t0x1f62c: 0x6c914a20, 0x1f62d: 0x6d0ae420, 0x1f62e: 0x6cfeae20, 0x1f62f: 0x6d0f5820,\n\t0x1f630: 0x6c8cda20, 0x1f631: 0x6c1aa620, 0x1f632: 0x6cc18220, 0x1f633: 0x6d24d820,\n\t0x1f634: 0x6d090420, 0x1f635: 0x6ceb1220, 0x1f636: 0x6cd7de20, 0x1f637: 0x6d361220,\n\t0x1f638: 0x6c375620, 0x1f639: 0x6c485820, 0x1f63a: 0x6d04d220, 0x1f63b: 0x6c526620,\n\t0x1f63c: 0x6d388020, 0x1f63d: 0x6c438a20, 0x1f63e: 0x6c943820, 0x1f63f: 0x6c534820,\n\t// Block 0x7d9, offset 0x1f640\n\t0x1f640: 0x6cf3ce20, 0x1f641: 0x6c0f0c20, 0x1f642: 0x6c83dc20, 0x1f643: 0x6c72f820,\n\t0x1f644: 0x6c479a20, 0x1f645: 0x6c357220, 0x1f646: 0x6d236220, 0x1f647: 0x6cfb6820,\n\t0x1f648: 0x6ce33a20, 0x1f649: 0x6cf45420, 0x1f64a: 0x6cc42a20, 0x1f64b: 0x6c9e7a20,\n\t0x1f64c: 0x6c013e20, 0x1f64d: 0x6c7d7820, 0x1f64e: 0x6c06b420, 0x1f64f: 0x6caeb020,\n\t0x1f650: 0x6cb8fc20, 0x1f651: 0x6c219220, 0x1f652: 0x6c44d620, 0x1f653: 0x6d250220,\n\t0x1f654: 0x6cdadc20, 0x1f655: 0x6c558e20, 0x1f656: 0x6c516020, 0x1f657: 0x6c367e20,\n\t0x1f658: 0x6c47bc20, 0x1f659: 0x6cbfba20, 0x1f65a: 0x6c225a20, 0x1f65b: 0x6c9a1e20,\n\t0x1f65c: 0x6cf51220, 0x1f65d: 0x6d187820, 0x1f65e: 0x6d122020, 0x1f65f: 0x6cf23820,\n\t0x1f660: 0x6c8e9420, 0x1f661: 0x6c60a020, 0x1f662: 0x6d187a20, 0x1f663: 0x6c64ee20,\n\t0x1f664: 0x6c51e220, 0x1f665: 0x6d141c20, 0x1f666: 0x6d1bfa20, 0x1f667: 0x6d310420,\n\t0x1f668: 0x6c8f4420, 0x1f669: 0x6c8a2e20, 0x1f66a: 0x6c689220, 0x1f66b: 0x6c703020,\n\t0x1f66c: 0x6d242a20, 0x1f66d: 0x6c931820, 0x1f66e: 0x6c58b420, 0x1f66f: 0x6d2db020,\n\t0x1f670: 0x6d1c0c20, 0x1f671: 0x6c56da20, 0x1f672: 0x6c9b8020, 0x1f673: 0x6c49c020,\n\t0x1f674: 0x6cd6ba20, 0x1f675: 0x6c91bc20, 0x1f676: 0x6c6c5820, 0x1f677: 0x6c8d6820,\n\t0x1f678: 0x6c661220, 0x1f679: 0x6cfbd020, 0x1f67a: 0x6c25fe20, 0x1f67b: 0x6c662620,\n\t0x1f67c: 0x6c664020, 0x1f67d: 0x6d0d1a20, 0x1f67e: 0x6c25f420, 0x1f67f: 0x6c924c20,\n\t// Block 0x7da, offset 0x1f680\n\t0x1f680: 0x6d1eaa20, 0x1f681: 0x6c241620, 0x1f682: 0x6c614c20, 0x1f683: 0x6cad6820,\n\t0x1f684: 0x6c241820, 0x1f685: 0x6cad6c20, 0x1f686: 0x6d3b3220, 0x1f687: 0x6c758220,\n\t0x1f688: 0x6d3a8220, 0x1f689: 0x6c651020, 0x1f68a: 0x6c9c8420, 0x1f68b: 0x6c9c8620,\n\t0x1f68c: 0x6d22a820, 0x1f68d: 0x6c8ec820, 0x1f68e: 0x6c18f420, 0x1f68f: 0x6c758a20,\n\t0x1f690: 0x6c8bf620, 0x1f691: 0x6ca61a20, 0x1f692: 0x6cb69420, 0x1f693: 0x6c932c20,\n\t0x1f694: 0x6c703a20, 0x1f695: 0x6c758c20, 0x1f696: 0x6c6df020, 0x1f697: 0x6c871420,\n\t0x1f698: 0x6cfd9820, 0x1f699: 0x6cfbd220, 0x1f69a: 0x6c639020, 0x1f69b: 0x6c9ca620,\n\t0x1f69c: 0x6c875e20, 0x1f69d: 0x6ccf8e20, 0x1f69e: 0x6d2ef220, 0x1f69f: 0x6c8c1020,\n\t0x1f6a0: 0x6c6dfa20, 0x1f6a1: 0x6cb6b620, 0x1f6a2: 0x6c8de220, 0x1f6a3: 0x6d0d2820,\n\t0x1f6a4: 0x6c241a20, 0x1f6a5: 0x6c973220, 0x1f6a6: 0x6c972620, 0x1f6a7: 0x6c516220,\n\t0x1f6a8: 0x6c17a620, 0x1f6a9: 0x6c3d9c20, 0x1f6aa: 0x6c9e5e20, 0x1f6ab: 0x6c9e3e20,\n\t0x1f6ac: 0x6c3da820, 0x1f6ad: 0x6cad9c20, 0x1f6ae: 0x6cc27e20, 0x1f6af: 0x6cc14c20,\n\t0x1f6b0: 0x6ca1f420, 0x1f6b1: 0x6c3db020, 0x1f6b2: 0x6cfd2c20, 0x1f6b3: 0x6c7f3420,\n\t0x1f6b4: 0x6cc15820, 0x1f6b5: 0x6c9e6a20, 0x1f6b6: 0x6c1ca620, 0x1f6b7: 0x6c3c9420,\n\t0x1f6b8: 0x6c3d6e20, 0x1f6b9: 0x6cc14020, 0x1f6ba: 0x6c9e6420, 0x1f6bb: 0x6c966820,\n\t0x1f6bc: 0x6c99c420, 0x1f6bd: 0x6ca07020, 0x1f6be: 0x6c5af020, 0x1f6bf: 0x6ca1b820,\n\t// Block 0x7db, offset 0x1f6c0\n\t0x1f6c0: 0x6d407020, 0x1f6c1: 0x6caaae20, 0x1f6c2: 0x6c3bb420, 0x1f6c3: 0x6c59ce20,\n\t0x1f6c4: 0x6c59b820, 0x1f6c5: 0x6c6c5a20, 0x1f6c6: 0x6c49f620, 0x1f6c7: 0x6ce47420,\n\t0x1f6c8: 0x6ce81c20, 0x1f6c9: 0x6c538c20, 0x1f6ca: 0x6c57c820, 0x1f6cb: 0x6c7c0820,\n\t0x1f6cc: 0x6c539a20, 0x1f6cd: 0x6cd56020, 0x1f6ce: 0x6c843a20, 0x1f6cf: 0x6ca70a20,\n\t0x1f6d0: 0x6c1af220, 0x1f6d1: 0x6c521c20, 0x1f6d2: 0x6c521a20, 0x1f6d3: 0x6d187c20,\n\t0x1f6d4: 0x6cb9ce20, 0x1f6d5: 0x6c284820, 0x1f6d6: 0x6cf8ea20, 0x1f6d7: 0x6cea2e20,\n\t0x1f6d8: 0x6ca17020, 0x1f6d9: 0x6ca15020, 0x1f6da: 0x6cb9d220, 0x1f6db: 0x6c279e20,\n\t0x1f6dc: 0x6c1f8420, 0x1f6dd: 0x6d1ff620, 0x1f6de: 0x6c2d2e20, 0x1f6df: 0x6d143020,\n\t0x1f6e0: 0x6cfa1220, 0x1f6e1: 0x6d0df220, 0x1f6e2: 0x6cc15a20, 0x1f6e3: 0x6c9a7220,\n\t0x1f6e4: 0x6d0e0a20, 0x1f6e5: 0x6cbe9420, 0x1f6e6: 0x6d271220, 0x1f6e7: 0x6c84a220,\n\t0x1f6e8: 0x6c293820, 0x1f6e9: 0x6c31ec20, 0x1f6ea: 0x6c11e820, 0x1f6eb: 0x6d0c4820,\n\t0x1f6ec: 0x6d0d0820, 0x1f6ed: 0x6d0e1420, 0x1f6ee: 0x6c285820, 0x1f6ef: 0x6c01e420,\n\t0x1f6f0: 0x6d320a20, 0x1f6f1: 0x6c27ac20, 0x1f6f2: 0x6c11ea20, 0x1f6f3: 0x6d144020,\n\t0x1f6f4: 0x6c9a4620, 0x1f6f5: 0x6d2e4220, 0x1f6f6: 0x6d0e3420, 0x1f6f7: 0x6c320e20,\n\t0x1f6f8: 0x6c91b020, 0x1f6f9: 0x6d353420, 0x1f6fa: 0x6c3bc220, 0x1f6fb: 0x6c3f1020,\n\t0x1f6fc: 0x6c3f9820, 0x1f6fd: 0x6c9e3220, 0x1f6fe: 0x6c9e0a20, 0x1f6ff: 0x6d25bc20,\n\t// Block 0x7dc, offset 0x1f700\n\t0x1f700: 0x6c247220, 0x1f701: 0x6cc28420, 0x1f702: 0x6c178820, 0x1f703: 0x6cebfc20,\n\t0x1f704: 0x6d39e620, 0x1f705: 0x6d342a20, 0x1f706: 0x6c9bbe20, 0x1f707: 0x6c029420,\n\t0x1f708: 0x6c0cd020, 0x1f709: 0x6ceb6a20, 0x1f70a: 0x6c0ada20, 0x1f70b: 0x6d257220,\n\t0x1f70c: 0x6c176620, 0x1f70d: 0x6ceb5e20, 0x1f70e: 0x6c2f7420, 0x1f70f: 0x6c9d7420,\n\t0x1f710: 0x6ca3d020, 0x1f711: 0x6c2f7c20, 0x1f712: 0x6d3e8420, 0x1f713: 0x6c47a620,\n\t0x1f714: 0x6c47a820, 0x1f715: 0x6c302220, 0x1f716: 0x6c3ba420, 0x1f717: 0x6ce25020,\n\t0x1f718: 0x6d252820, 0x1f719: 0x6cb03a20, 0x1f71a: 0x6c168e20, 0x1f71b: 0x6c42f620,\n\t0x1f71c: 0x6cb80820, 0x1f71d: 0x6d252a20, 0x1f71e: 0x6ce0e220, 0x1f71f: 0x6ce29820,\n\t0x1f720: 0x6cd56620, 0x1f721: 0x6cd55220, 0x1f722: 0x6c3b9e20, 0x1f723: 0x6c3adc20,\n\t0x1f724: 0x6cf1be20, 0x1f725: 0x6c039620, 0x1f726: 0x6c2dea20, 0x1f727: 0x6ceb5a20,\n\t0x1f728: 0x6d37d420, 0x1f729: 0x6cc1ee20, 0x1f72a: 0x6cd11a20, 0x1f72b: 0x6cd28e20,\n\t0x1f72c: 0x6d205e20, 0x1f72d: 0x6cd29420, 0x1f72e: 0x6ce69e20, 0x1f72f: 0x6cf40c20,\n\t0x1f730: 0x6ca77220, 0x1f731: 0x6c6df620, 0x1f732: 0x6c5d1020, 0x1f733: 0x6c719820,\n\t0x1f734: 0x6d0e1e20, 0x1f735: 0x6ce88020, 0x1f736: 0x6cd85c20, 0x1f737: 0x6cf75420,\n\t0x1f738: 0x6cfd4e20, 0x1f739: 0x6d0e2820, 0x1f73a: 0x6c82ae20, 0x1f73b: 0x6c08a220,\n\t0x1f73c: 0x6d11da20, 0x1f73d: 0x6cc0a220, 0x1f73e: 0x6c4dc020, 0x1f73f: 0x6cf53a20,\n\t// Block 0x7dd, offset 0x1f740\n\t0x1f740: 0x6cf54220, 0x1f741: 0x6c53e620, 0x1f742: 0x6d028620, 0x1f743: 0x6c36f820,\n\t0x1f744: 0x6d2c1020, 0x1f745: 0x6d055c20, 0x1f746: 0x6cf27820, 0x1f747: 0x6d2c1220,\n\t0x1f748: 0x6ca9f820, 0x1f749: 0x6ca48c20, 0x1f74a: 0x6cb63420, 0x1f74b: 0x6d2d0020,\n\t0x1f74c: 0x6c62b620, 0x1f74d: 0x6d3ebe20, 0x1f74e: 0x6c5f9c20, 0x1f74f: 0x6c5fac20,\n\t0x1f750: 0x6cb56c20, 0x1f751: 0x6c5f2820, 0x1f752: 0x6c1bc220, 0x1f753: 0x6c193020,\n\t0x1f754: 0x6c193420, 0x1f755: 0x6c519220, 0x1f756: 0x6d0b3a20, 0x1f757: 0x6d1aae20,\n\t0x1f758: 0x6d026c20, 0x1f759: 0x6c05c020, 0x1f75a: 0x6d2b2620, 0x1f75b: 0x6d027620,\n\t0x1f75c: 0x6c148c20, 0x1f75d: 0x6c1aec20, 0x1f75e: 0x6d0e0c20, 0x1f75f: 0x6c71e020,\n\t0x1f760: 0x6ce5b220, 0x1f761: 0x6c8d9620, 0x1f762: 0x6c8d7820, 0x1f763: 0x6c1e6e20,\n\t0x1f764: 0x6cc33220, 0x1f765: 0x6d027e20, 0x1f766: 0x6c791420, 0x1f767: 0x6ca8ae20,\n\t0x1f768: 0x6c703e20, 0x1f769: 0x6d11e420, 0x1f76a: 0x6c21e820, 0x1f76b: 0x6c7dc820,\n\t0x1f76c: 0x6d22b220, 0x1f76d: 0x6c1efa20, 0x1f76e: 0x6d163020, 0x1f76f: 0x6ca61c20,\n\t0x1f770: 0x6d2b2a20, 0x1f771: 0x6d407820, 0x1f772: 0x6cc25820, 0x1f773: 0x6d281020,\n\t0x1f774: 0x6d0e3020, 0x1f775: 0x6cab6e20, 0x1f776: 0x6c36fe20, 0x1f777: 0x6cf33820,\n\t0x1f778: 0x6d198020, 0x1f779: 0x6c221a20, 0x1f77a: 0x6d407a20, 0x1f77b: 0x6c2d0020,\n\t0x1f77c: 0x6c1efe20, 0x1f77d: 0x6c6d7a20, 0x1f77e: 0x6d0bd420, 0x1f77f: 0x6c1b8020,\n\t// Block 0x7de, offset 0x1f780\n\t0x1f780: 0x6c192420, 0x1f781: 0x6c512220, 0x1f782: 0x6d1a6e20, 0x1f783: 0x6c71c620,\n\t0x1f784: 0x6c8d3220, 0x1f785: 0x6c05b620, 0x1f786: 0x6ce59620, 0x1f787: 0x6d3e7820,\n\t0x1f788: 0x6c790620, 0x1f789: 0x6d228620, 0x1f78a: 0x6c21d420, 0x1f78b: 0x6cc25220,\n\t0x1f78c: 0x6cf32620, 0x1f78d: 0x6c8fb020, 0x1f78e: 0x6cad1420, 0x1f78f: 0x6c45c020,\n\t0x1f790: 0x6cad1620, 0x1f791: 0x6d0e0e20, 0x1f792: 0x6c8ff220, 0x1f793: 0x6c904820,\n\t0x1f794: 0x6c45c820, 0x1f795: 0x6c76b820, 0x1f796: 0x6c26dc20, 0x1f797: 0x6c8e0020,\n\t0x1f798: 0x6c26de20, 0x1f799: 0x6c8f6620, 0x1f79a: 0x6c458620, 0x1f79b: 0x6c76a820,\n\t0x1f79c: 0x6c4a9620, 0x1f79d: 0x6cbfea20, 0x1f79e: 0x6c0cd620, 0x1f79f: 0x6c4a3820,\n\t0x1f7a0: 0x6d26f620, 0x1f7a1: 0x6c20f820, 0x1f7a2: 0x6c51aa20, 0x1f7a3: 0x6c753020,\n\t0x1f7a4: 0x6d013c20, 0x1f7a5: 0x6d249820,\n\t// Block 0x7df, offset 0x1f7c0\n\t0x1f7c3: 0x6ccd4220,\n\t// Block 0x7e0, offset 0x1f800\n\t0x1f800: 0x6cb6e820, 0x1f801: 0x6c452620, 0x1f802: 0x6c17ce20, 0x1f803: 0x6c642020,\n\t0x1f804: 0x6c573e20, 0x1f805: 0x6c202c20, 0x1f806: 0x6c71ea20, 0x1f807: 0x6c4a9620,\n\t0x1f808: 0x6c4a9620, 0x1f809: 0x6cb75220, 0x1f80a: 0x6c6c2e20, 0x1f80b: 0x6c7e6220,\n\t0x1f80c: 0x6ca3ac20, 0x1f80d: 0x6c804a20, 0x1f80e: 0x6c7f7820, 0x1f80f: 0x6c956220,\n\t0x1f810: 0x6c957a20, 0x1f811: 0x6c955820, 0x1f812: 0x6c95b820, 0x1f813: 0x6c957c20,\n\t0x1f814: 0x6c822620, 0x1f815: 0x6c95e820, 0x1f816: 0x6c81d020, 0x1f817: 0x6c95f620,\n\t0x1f818: 0x6c960a20, 0x1f819: 0x6c81d620, 0x1f81a: 0x6c962a20, 0x1f81b: 0x6c949a20,\n\t0x1f81c: 0x6c948c20, 0x1f81d: 0x6c7ff820, 0x1f81e: 0x6c808820, 0x1f81f: 0x6c7ff020,\n\t0x1f820: 0x6c948820, 0x1f821: 0x6c7f9a20, 0x1f822: 0x6c807c20, 0x1f823: 0x6c7fc420,\n\t0x1f824: 0x6c7fd820, 0x1f825: 0x6c7e3e20, 0x1f826: 0x6c7eaa20, 0x1f827: 0x6c7ec420,\n\t0x1f828: 0x6c80b420, 0x1f829: 0x6c80f820, 0x1f82a: 0x6c811820, 0x1f82b: 0x6c80ae20,\n\t0x1f82c: 0x6c80a220, 0x1f82d: 0x6c7ee220, 0x1f82e: 0x6c839020, 0x1f82f: 0x6c815620,\n\t0x1f830: 0x6c91da20, 0x1f831: 0x6c91f220, 0x1f832: 0x6c918420, 0x1f833: 0x6c915c20,\n\t0x1f834: 0x6c819a20, 0x1f835: 0x6c917820, 0x1f836: 0x6c91c420, 0x1f837: 0x6c927620,\n\t0x1f838: 0x6c933620, 0x1f839: 0x6c91d420, 0x1f83a: 0x6c934220, 0x1f83b: 0x6c926e20,\n\t0x1f83c: 0x6c925a20, 0x1f83d: 0x6c93ec20, 0x1f83e: 0x6c924820, 0x1f83f: 0x6c92de20,\n\t// Block 0x7e1, offset 0x1f840\n\t0x1f840: 0x6c924c20, 0x1f841: 0x6c952620, 0x1f842: 0x6c903e20, 0x1f843: 0x6ca9f020,\n\t0x1f844: 0x6c8ff420, 0x1f845: 0x6c8ff820, 0x1f846: 0x6c814220, 0x1f847: 0x6c82d220,\n\t0x1f848: 0x6c927420, 0x1f849: 0x6c823e20, 0x1f84a: 0x6c82e220, 0x1f84b: 0x6c93a620,\n\t0x1f84c: 0x6c90b020, 0x1f84d: 0x6c833020, 0x1f84e: 0x6c910e20, 0x1f84f: 0x6c833420,\n\t0x1f850: 0x6c93bc20, 0x1f851: 0x6c910220, 0x1f852: 0x6c823c20, 0x1f853: 0x6c81fe20,\n\t0x1f854: 0x6c8c2820, 0x1f855: 0x6c8cc420, 0x1f856: 0x6c837e20, 0x1f857: 0x6c8d3c20,\n\t0x1f858: 0x6c8cfe20, 0x1f859: 0x6c8cd820, 0x1f85a: 0x6c31f020, 0x1f85b: 0x6ca2d020,\n\t0x1f85c: 0x6c822620, 0x1f85d: 0x6cab0e20, 0x1f85e: 0x6c27b220, 0x1f85f: 0x6ca91020,\n\t0x1f860: 0x6caa5e20, 0x1f861: 0x6c93d620, 0x1f862: 0x6d176620, 0x1f863: 0x6c06c620,\n\t0x1f864: 0x6cac7620, 0x1f865: 0x6c0b8220, 0x1f866: 0x6c3ff020, 0x1f867: 0x6c105620,\n\t0x1f868: 0x6c9d2620, 0x1f869: 0x6cd60020, 0x1f86a: 0x6cdd5a20, 0x1f86b: 0x6c115e20,\n\t0x1f86c: 0x6cc9c620, 0x1f86d: 0x6cd12c20, 0x1f86e: 0x6d12f620, 0x1f86f: 0x6cd76a20,\n\t0x1f870: 0x6ccbda20, 0x1f871: 0x6c18a020, 0x1f872: 0x6c189c20, 0x1f873: 0x6cd41020,\n\t0x1f874: 0x6cc91420, 0x1f875: 0x6c361020, 0x1f876: 0x6c361220, 0x1f877: 0x6c89aa20,\n\t0x1f878: 0x6c898820, 0x1f879: 0x6c894a20, 0x1f87a: 0x6c894c20, 0x1f87b: 0x6c897420,\n\t0x1f87c: 0x6c894620, 0x1f87d: 0x6c89c820, 0x1f87e: 0x6c89c020, 0x1f87f: 0x6c867020,\n\t// Block 0x7e2, offset 0x1f880\n\t0x1f880: 0x6c937620, 0x1f881: 0x6caa6e20, 0x1f882: 0x6c916e20, 0x1f883: 0x6c938a20,\n\t0x1f884: 0x6c940e20, 0x1f885: 0x6c870420, 0x1f886: 0x6c935a20, 0x1f887: 0x6c84ee20,\n\t0x1f888: 0x6c871420, 0x1f889: 0x6c843a20, 0x1f88a: 0x6c855c20, 0x1f88b: 0x6c867820,\n\t0x1f88c: 0x6c867c20, 0x1f88d: 0x6c878420, 0x1f88e: 0x6ca6f220, 0x1f88f: 0x6c883620,\n\t0x1f890: 0x6c893820, 0x1f891: 0x6ca73420, 0x1f892: 0x6c881620, 0x1f893: 0x6c890620,\n\t0x1f894: 0x6c88c420, 0x1f895: 0x6ca6f620, 0x1f896: 0x6c891220, 0x1f897: 0x6c886820,\n\t0x1f898: 0x6ca73a20, 0x1f899: 0x6c881820, 0x1f89a: 0x6c87fa20, 0x1f89b: 0x6c892220,\n\t0x1f89c: 0x6c8abc20, 0x1f89d: 0x6c8abe20, 0x1f89e: 0x6d0e4220, 0x1f89f: 0x6c8af020,\n\t0x1f8a0: 0x6c8b1020, 0x1f8a1: 0x6cd76a20, 0x1f8a2: 0x6c881020, 0x1f8a3: 0x6ca75a20,\n\t0x1f8a4: 0x6ca72020, 0x1f8a5: 0x6c892020, 0x1f8a6: 0x6c888420, 0x1f8a7: 0x6c8b5420,\n\t0x1f8a8: 0x6c8e1820, 0x1f8a9: 0x6c8c9e20, 0x1f8aa: 0x6ca91020, 0x1f8ab: 0x6c8e1420,\n\t0x1f8ac: 0x6c87f420, 0x1f8ad: 0x6c8cbe20, 0x1f8ae: 0x6d1c8a20, 0x1f8af: 0x6c8cf620,\n\t0x1f8b0: 0x6c8cfa20, 0x1f8b1: 0x6c8d2420, 0x1f8b2: 0x6c8d2a20, 0x1f8b3: 0x6c8db620,\n\t0x1f8b4: 0x6c8e1220, 0x1f8b5: 0x6c858620, 0x1f8b6: 0x6c853820, 0x1f8b7: 0x6c854620,\n\t0x1f8b8: 0x6c86b420, 0x1f8b9: 0x6c363420, 0x1f8ba: 0x6c823620, 0x1f8bb: 0x6c89ec20,\n\t0x1f8bc: 0x6c8a0620, 0x1f8bd: 0x6ca7d020, 0x1f8be: 0x6c8a9420, 0x1f8bf: 0x6c822620,\n\t// Block 0x7e3, offset 0x1f8c0\n\t0x1f8c0: 0x6c8a1a20, 0x1f8c1: 0x6c8a2620, 0x1f8c2: 0x6c8a7220, 0x1f8c3: 0x6c8a1620,\n\t0x1f8c4: 0x6c8fb020, 0x1f8c5: 0x6d275420, 0x1f8c6: 0x6cc84c20, 0x1f8c7: 0x6c8e8020,\n\t0x1f8c8: 0x6c1e2020, 0x1f8c9: 0x6c8efa20, 0x1f8ca: 0x6c8e4a20, 0x1f8cb: 0x6c8e3620,\n\t0x1f8cc: 0x6c8e5020, 0x1f8cd: 0x6c8e4c20, 0x1f8ce: 0x6c8e5c20, 0x1f8cf: 0x6ca99020,\n\t0x1f8d0: 0x6c835420, 0x1f8d1: 0x6c8f2420, 0x1f8d2: 0x6c92a020, 0x1f8d3: 0x6c923020,\n\t0x1f8d4: 0x6c94e420, 0x1f8d5: 0x6c94f020, 0x1f8d6: 0x6c94f420, 0x1f8d7: 0x6c950e20,\n\t0x1f8d8: 0x6c93d020, 0x1f8d9: 0x6c862e20, 0x1f8da: 0x6c85ca20, 0x1f8db: 0x6c93d620,\n\t0x1f8dc: 0x6c8f9220, 0x1f8dd: 0x6c857620, 0x1f8de: 0x6c856e20, 0x1f8df: 0x6c93ae20,\n\t0x1f8e0: 0x6d16ba20, 0x1f8e1: 0x6c87d820, 0x1f8e2: 0x6c83bc20, 0x1f8e3: 0x6ca5c020,\n\t0x1f8e4: 0x6c851420, 0x1f8e5: 0x6c861220, 0x1f8e6: 0x6c844a20, 0x1f8e7: 0x6c852220,\n\t0x1f8e8: 0x6c87e220, 0x1f8e9: 0x6c84fc20, 0x1f8ea: 0x6c847e20, 0x1f8eb: 0x6ca68c20,\n\t0x1f8ec: 0x6ca6ac20, 0x1f8ed: 0x6c8c4420, 0x1f8ee: 0x6c8bde20, 0x1f8ef: 0x6c8be020,\n\t0x1f8f0: 0x6c8c7a20, 0x1f8f1: 0x6c8bca20, 0x1f8f2: 0x6c8c0c20, 0x1f8f3: 0x6c8c1020,\n\t0x1f8f4: 0x6c8ba020, 0x1f8f5: 0x6c8bb020, 0x1f8f6: 0x6c8bea20, 0x1f8f7: 0x6c856c20,\n\t0x1f8f8: 0x6c85f620, 0x1f8f9: 0x6c85f820, 0x1f8fa: 0x6d3c3420, 0x1f8fb: 0x6d358c20,\n\t0x1f8fc: 0x6cd42220, 0x1f8fd: 0x6cd03620, 0x1f8fe: 0x6c13d020, 0x1f8ff: 0x6c22b220,\n\t// Block 0x7e4, offset 0x1f900\n\t0x1f900: 0x6cbc9020, 0x1f901: 0x6c324420, 0x1f902: 0x6cde2e20, 0x1f903: 0x6ce13620,\n\t0x1f904: 0x6d2d1820, 0x1f905: 0x6c306420, 0x1f906: 0x6c066220, 0x1f907: 0x6c3efc20,\n\t0x1f908: 0x6d03ba20, 0x1f909: 0x6c67d620, 0x1f90a: 0x6c665220, 0x1f90b: 0x6c7e0420,\n\t0x1f90c: 0x6cf49020, 0x1f90d: 0x6c56a220, 0x1f90e: 0x43f41c20, 0x1f90f: 0x43f41e20,\n\t0x1f910: 0x6d37f420, 0x1f911: 0x43f42220, 0x1f912: 0x6cbe7a20, 0x1f913: 0x43f42620,\n\t0x1f914: 0x43f42820, 0x1f915: 0x6cf6b620, 0x1f916: 0x6d399820, 0x1f917: 0x6d173820,\n\t0x1f918: 0x6c84f420, 0x1f919: 0x6cd03a20, 0x1f91a: 0x6cfdbc20, 0x1f91b: 0x6c3e9c20,\n\t0x1f91c: 0x6c6e9220, 0x1f91d: 0x6c6dcc20, 0x1f91e: 0x6d221c20, 0x1f91f: 0x43f43e20,\n\t0x1f920: 0x6cc0c220, 0x1f921: 0x43f44220, 0x1f922: 0x6d39c620, 0x1f923: 0x43f44620,\n\t0x1f924: 0x43f44820, 0x1f925: 0x6d178420, 0x1f926: 0x6c30a620, 0x1f927: 0x43f44e20,\n\t0x1f928: 0x43f45020, 0x1f929: 0x43f45220, 0x1f92a: 0x6c395c20, 0x1f92b: 0x6cd8d420,\n\t0x1f92c: 0x6c496820, 0x1f92d: 0x6c520c20, 0x1f92e: 0x6c80a420, 0x1f92f: 0x6c868820,\n\t0x1f930: 0x6cf43220, 0x1f931: 0x6ccbb820, 0x1f932: 0x6c9dfe20, 0x1f933: 0x6c9e0c20,\n\t0x1f934: 0x6cbd7c20, 0x1f935: 0x6c068e20, 0x1f936: 0x6c509c20, 0x1f937: 0x6ce0a020,\n\t0x1f938: 0x6cb7ce20, 0x1f939: 0x6cb2ec20, 0x1f93a: 0x6ca16020, 0x1f93b: 0x6c135420,\n\t0x1f93c: 0x6c17fa20, 0x1f93d: 0x6c5b4c20, 0x1f93e: 0x6c765820, 0x1f93f: 0x6d2b8a20,\n\t// Block 0x7e5, offset 0x1f940\n\t0x1f940: 0x6c1a5420, 0x1f941: 0x6c9fa820, 0x1f942: 0x6c61a820, 0x1f943: 0x6cd55a20,\n\t0x1f944: 0x6c99ec20, 0x1f945: 0x6c4d3a20, 0x1f946: 0x6d3a6420, 0x1f947: 0x6c4ee620,\n\t0x1f948: 0x6d3a6e20, 0x1f949: 0x6d2ff420, 0x1f94a: 0x6d423c20, 0x1f94b: 0x6c06b020,\n\t0x1f94c: 0x6ccf3620, 0x1f94d: 0x6d34f820, 0x1f94e: 0x6cb58a20, 0x1f94f: 0x6d203020,\n\t0x1f950: 0x6d411420, 0x1f951: 0x6d3ac620, 0x1f952: 0x6c5dd420, 0x1f953: 0x6d316e20,\n\t0x1f954: 0x6c47c420, 0x1f955: 0x6ce84420, 0x1f956: 0x6c6af220, 0x1f957: 0x6c891220,\n\t0x1f958: 0x6c6d5220, 0x1f959: 0x6c38ca20, 0x1f95a: 0x6cd56220, 0x1f95b: 0x6d30d220,\n\t0x1f95c: 0x6c1e4020, 0x1f95d: 0x6c12c020, 0x1f95e: 0x6c12c020, 0x1f95f: 0x6d311420,\n\t0x1f960: 0x6c51d620, 0x1f961: 0x6cd36c20, 0x1f962: 0x6d134620, 0x1f963: 0x6c6cc220,\n\t0x1f964: 0x6c0d4a20, 0x1f965: 0x6d2bb620, 0x1f966: 0x6c21a420, 0x1f967: 0x6d178420,\n\t0x1f968: 0x6ca41420, 0x1f969: 0x6cfe0a20, 0x1f96a: 0x6cb21420, 0x1f96b: 0x6c5baa20,\n\t0x1f96c: 0x4885dc20, 0x1f96d: 0x6c496420,\n\t0x1f970: 0x6c0e0820, 0x1f971: 0x6c7bdc20, 0x1f972: 0x6cc2b220, 0x1f973: 0x6d03c620,\n\t0x1f974: 0x6c1ca820, 0x1f975: 0x6c627020, 0x1f976: 0x6d1e1820, 0x1f977: 0x6cce9420,\n\t0x1f978: 0x6c509c20, 0x1f979: 0x6ce21620, 0x1f97a: 0x6c5bbc20, 0x1f97b: 0x6cec3420,\n\t0x1f97c: 0x6d37f420, 0x1f97d: 0x6c3b8420, 0x1f97e: 0x6d0d4620, 0x1f97f: 0x6c077c20,\n\t// Block 0x7e6, offset 0x1f980\n\t0x1f980: 0x6c097420, 0x1f981: 0x6c226820, 0x1f982: 0x6c025020, 0x1f983: 0x6d182220,\n\t0x1f984: 0x6c112620, 0x1f985: 0x6d110c20, 0x1f986: 0x6cee0e20, 0x1f987: 0x6cd0ac20,\n\t0x1f988: 0x6d236a20, 0x1f989: 0x6d2b8a20, 0x1f98a: 0x6c02d820, 0x1f98b: 0x6c1a5420,\n\t0x1f98c: 0x6c279420, 0x1f98d: 0x6d212620, 0x1f98e: 0x6cd9b020, 0x1f98f: 0x6c0de620,\n\t0x1f990: 0x6c024020, 0x1f991: 0x6cbe7a20, 0x1f992: 0x6c80f820, 0x1f993: 0x6cee5220,\n\t0x1f994: 0x6d2f2220, 0x1f995: 0x6c271220, 0x1f996: 0x6ccbda20, 0x1f997: 0x6c8e4a20,\n\t0x1f998: 0x6d1a7020, 0x1f999: 0x6d3e4020, 0x1f99a: 0x6c4ee620, 0x1f99b: 0x6c6eb420,\n\t0x1f99c: 0x6d3a6e20, 0x1f99d: 0x6cbc0220, 0x1f99e: 0x6c74c820, 0x1f99f: 0x6c391620,\n\t0x1f9a0: 0x6d399820, 0x1f9a1: 0x6d325020, 0x1f9a2: 0x6c225020, 0x1f9a3: 0x6c578420,\n\t0x1f9a4: 0x6c492220, 0x1f9a5: 0x6cf16020, 0x1f9a6: 0x6d173820, 0x1f9a7: 0x6cd15e20,\n\t0x1f9a8: 0x6d344020, 0x1f9a9: 0x6c736420, 0x1f9aa: 0x6d311220, 0x1f9ab: 0x6ce4ba20,\n\t0x1f9ac: 0x6ce5cc20, 0x1f9ad: 0x6c6af220, 0x1f9ae: 0x6c832420, 0x1f9af: 0x6ce1c820,\n\t0x1f9b0: 0x6c891220, 0x1f9b1: 0x6cb2ac20, 0x1f9b2: 0x6d30d220, 0x1f9b3: 0x6c598420,\n\t0x1f9b4: 0x6c573420, 0x1f9b5: 0x6d276220, 0x1f9b6: 0x6cbb4c20, 0x1f9b7: 0x6c407e20,\n\t0x1f9b8: 0x6cd36c20, 0x1f9b9: 0x6c2e3820, 0x1f9ba: 0x6d39c620, 0x1f9bb: 0x6cbeb220,\n\t0x1f9bc: 0x6d134620, 0x1f9bd: 0x6cab0e20, 0x1f9be: 0x6d23f620, 0x1f9bf: 0x6c6cc220,\n\t// Block 0x7e7, offset 0x1f9c0\n\t0x1f9c0: 0x6c0bdc20, 0x1f9c1: 0x6d2bb620, 0x1f9c2: 0x6cd50820, 0x1f9c3: 0x6c1b5020,\n\t0x1f9c4: 0x6cd9e620, 0x1f9c5: 0x6d03f420, 0x1f9c6: 0x6d3a6220, 0x1f9c7: 0x6ca41420,\n\t0x1f9c8: 0x6c6e9220, 0x1f9c9: 0x6c046220, 0x1f9ca: 0x6cfe0a20, 0x1f9cb: 0x6c35b420,\n\t0x1f9cc: 0x6cb21420, 0x1f9cd: 0x6d320420, 0x1f9ce: 0x6c4a9620, 0x1f9cf: 0x48509420,\n\t0x1f9d0: 0x48508820, 0x1f9d1: 0x4867aa20, 0x1f9d2: 0x6c513820, 0x1f9d3: 0x6d008620,\n\t0x1f9d4: 0x6c6ad220, 0x1f9d5: 0x48a49220, 0x1f9d6: 0x6cba2c20, 0x1f9d7: 0x6c084620,\n\t0x1f9d8: 0x6c36f820, 0x1f9d9: 0x6cad1420,\n\t// Block 0x7e8, offset 0x1fa00\n\t0x1fa00: 0xf0001c1c, 0x1fa01: 0xf0001c1c, 0x1fa02: 0x00658c9c,\n\t0x1fa10: 0x2cd43683, 0x1fa11: 0x2d3f2883, 0x1fa12: 0x2cd6a083, 0x1fa13: 0xf0001c1c,\n\t0x1fa14: 0x2c37b483, 0x1fa15: 0x2c341683, 0x1fa16: 0x2c6b9883, 0x1fa17: 0x2ce45483,\n\t0x1fa18: 0x2c682283, 0x1fa19: 0x2d1d3483, 0x1fa1a: 0x2cf3c883, 0x1fa1b: 0x2c8a9483,\n\t0x1fa1c: 0x2cb97883, 0x1fa1d: 0x2c546483, 0x1fa1e: 0x2d292683, 0x1fa1f: 0x2d02dc83,\n\t0x1fa20: 0x2c1e5483, 0x1fa21: 0x2d37b683, 0x1fa22: 0x2cd0d283, 0x1fa23: 0x2c395083,\n\t0x1fa24: 0x2cd0dc83, 0x1fa25: 0x2c20b483, 0x1fa26: 0x2d0db483, 0x1fa27: 0x2ce7e683,\n\t0x1fa28: 0x2c103683, 0x1fa29: 0x2d13b683, 0x1fa2a: 0x2cc9f283, 0x1fa2b: 0x2d1f4083,\n\t0x1fa2c: 0x2d426083, 0x1fa2d: 0x2d378283, 0x1fa2e: 0x2d200883, 0x1fa2f: 0x2d350083,\n\t0x1fa30: 0x2d407e83, 0x1fa31: 0x2c26e083, 0x1fa32: 0x2c6d1a83, 0x1fa33: 0x2c796883,\n\t0x1fa34: 0x2c50b683, 0x1fa35: 0x2c97ba83, 0x1fa36: 0x2d1f9883, 0x1fa37: 0x2d266883,\n\t0x1fa38: 0x2ccf9a83, 0x1fa39: 0x2c438c83, 0x1fa3a: 0x2d1c6283,\n\t// Block 0x7e9, offset 0x1fa40\n\t0x1fa40: 0xe000b460, 0x1fa41: 0xe000b474, 0x1fa42: 0xe000b470, 0x1fa43: 0xe000b458,\n\t0x1fa44: 0xe000b46c, 0x1fa45: 0xe000b464, 0x1fa46: 0xe000b468, 0x1fa47: 0xe000b478,\n\t0x1fa48: 0xe000b45c,\n\t0x1fa50: 0x2c2a9083, 0x1fa51: 0x2c785283,\n\t// Block 0x7ea, offset 0x1fa80\n\t0x1fa80: 0x6c508820, 0x1fa81: 0x6cb4c820, 0x1fa83: 0x6cbc8c20,\n\t0x1fa85: 0x6c4d4c20,\n\t0x1fa89: 0x6cbf9020, 0x1fa8a: 0x6c126420,\n\t0x1fa8d: 0x6cd2ec20,\n\t0x1fa93: 0x6cd7ba20,\n\t0x1fa94: 0x6c73ca20,\n\t0x1fa9b: 0x6d22c020,\n\t0x1fa9d: 0x6c796620,\n\t0x1faa2: 0x6d3dfc20,\n\t0x1faa6: 0x6d03be20,\n\t0x1fab1: 0x6ca1fc20,\n\t0x1fab7: 0x6c5e9420,\n\t0x1fab8: 0x6d12d220, 0x1fab9: 0x6c755e20,\n\t0x1fabc: 0x6cb97c20, 0x1fabd: 0x6c922420,\n\t// Block 0x7eb, offset 0x1fac0\n\t0x1fac9: 0x6c1e5e20,\n\t0x1fad7: 0x6cd3d420,\n\t0x1fae0: 0x6cbd0220,\n\t0x1fae5: 0x6c40ce20,\n\t0x1faed: 0x6cb58e20,\n\t0x1faf7: 0x6c15c420,\n\t// Block 0x7ec, offset 0x1fb00\n\t0x1fb04: 0x6c582a20, 0x1fb06: 0x6d163620, 0x1fb07: 0x6d425e20,\n\t0x1fb08: 0x6c6a4a20,\n\t0x1fb11: 0x6d404420,\n\t0x1fb14: 0x6d3ed420,\n\t0x1fb1f: 0x6c6c2020,\n\t0x1fb22: 0x6cac1620,\n\t0x1fb24: 0x6c32ee20, 0x1fb25: 0x6c238220, 0x1fb27: 0x6cd08e20,\n\t0x1fb38: 0x6c59aa20,\n\t// Block 0x7ed, offset 0x1fb40\n\t0x1fb4a: 0x6d1abe20,\n\t0x1fb4c: 0x6c4bb820,\n\t0x1fb56: 0x6c6f3a20,\n\t0x1fb6b: 0x6ccfa220,\n\t0x1fb7a: 0x6c6fe220,\n\t// Block 0x7ee, offset 0x1fb80\n\t0x1fb85: 0x6d130c20,\n\t0x1fb89: 0x6c308c20,\n\t0x1fb8c: 0x6c73c020, 0x1fb8d: 0x6c6a4c20, 0x1fb8f: 0x6c2df020,\n\t0x1fb91: 0x6c73c220, 0x1fb92: 0x6c20ba20,\n\t0x1fb96: 0x6c8c9820,\n\t0x1fb9a: 0x6ce63e20,\n\t0x1fba3: 0x6c44aa20,\n\t0x1fbae: 0x6d0b7e20,\n\t0x1fbb1: 0x6d148020,\n\t0x1fbbf: 0x6cef1c20,\n\t// Block 0x7ef, offset 0x1fbc0\n\t0x1fbc2: 0x6c6a5820,\n\t0x1fbcc: 0x6d146a20,\n\t0x1fbd7: 0x6c2f3220,\n\t0x1fbda: 0x6cb59a20,\n\t0x1fbec: 0x6c05b020,\n\t0x1fbf1: 0x6d01a620,\n\t0x1fbf9: 0x6d2f3220,\n\t// Block 0x7f0, offset 0x1fc00\n\t0x1fc0c: 0x6d1daa20,\n\t0x1fc10: 0x6d073820,\n\t0x1fc19: 0x6c2f3820, 0x1fc1b: 0x6c280820,\n\t0x1fc1f: 0x6cf06220,\n\t0x1fc23: 0x6c488620,\n\t0x1fc29: 0x6c391220,\n\t0x1fc2e: 0x6ca0ba20,\n\t0x1fc31: 0x6cf56220, 0x1fc32: 0x6d0d3220,\n\t0x1fc35: 0x6ca5b820, 0x1fc36: 0x6c286020,\n\t// Block 0x7f1, offset 0x1fc40\n\t0x1fc4b: 0x6c281a20,\n\t0x1fc4f: 0x6ce1ac20,\n\t0x1fc52: 0x6c455620,\n\t0x1fc57: 0x6c7abc20,\n\t0x1fc58: 0x6c1f0420,\n\t0x1fc6f: 0x6cc25e20,\n\t0x1fc71: 0x6ca0be20, 0x1fc73: 0x6cd19220,\n\t0x1fc75: 0x6c41c620, 0x1fc77: 0x6cd0d820,\n\t// Block 0x7f2, offset 0x1fc80\n\t0x1fc81: 0x6ceaa020,\n\t0x1fc85: 0x6cd42c20,\n\t0x1fc8a: 0x6ca7e620,\n\t0x1fca4: 0x6d281a20, 0x1fca5: 0x6c489220,\n\t0x1fcac: 0x6cfe7e20, 0x1fcad: 0x6c814420,\n\t0x1fcb0: 0x6c286e20, 0x1fcb1: 0x6cdd0620,\n\t0x1fcb5: 0x6c988420, 0x1fcb6: 0x6d148220,\n\t0x1fcb8: 0x6ce26e20, 0x1fcba: 0x6c094020,\n\t// Block 0x7f3, offset 0x1fcc0\n\t0x1fcc2: 0x6cde3020,\n\t0x1fcd7: 0x6c95e420,\n\t0x1fce2: 0x6cf7d220, 0x1fce3: 0x6c5cb820,\n\t0x1fce4: 0x6c268e20, 0x1fce7: 0x6c722420,\n\t0x1fce9: 0x6c318c20,\n\t0x1fcec: 0x6c017c20,\n\t// Block 0x7f4, offset 0x1fd00\n\t0x1fd09: 0x6c9a8820,\n\t0x1fd0c: 0x6cc46c20, 0x1fd0e: 0x6c003820, 0x1fd0f: 0x6d22ec20,\n\t0x1fd12: 0x6c666620,\n\t0x1fd14: 0x6cb76620,\n\t0x1fd1f: 0x6c9fa220,\n\t0x1fd23: 0x6d391620,\n\t0x1fd24: 0x6d35ac20, 0x1fd25: 0x6d37ea20, 0x1fd26: 0x6ca4e220, 0x1fd27: 0x6c0e1a20,\n\t0x1fd29: 0x6d3bc020, 0x1fd2a: 0x6cd5be20, 0x1fd2b: 0x6d0a8420,\n\t0x1fd2c: 0x6c741e20, 0x1fd2d: 0x6cb9fe20,\n\t0x1fd30: 0x6c489a20, 0x1fd32: 0x6ce85220,\n\t0x1fd36: 0x6d1d3820, 0x1fd37: 0x6d35d620,\n\t0x1fd3e: 0x6c7c6620,\n\t// Block 0x7f5, offset 0x1fd40\n\t0x1fd46: 0x6c192620,\n\t0x1fd56: 0x6c88ec20, 0x1fd57: 0x6d0ae620,\n\t0x1fd5c: 0x6c4ce820, 0x1fd5d: 0x6c9e8e20, 0x1fd5e: 0x6ccf0e20, 0x1fd5f: 0x6d223620,\n\t0x1fd61: 0x6cd8b020, 0x1fd62: 0x6cda1220,\n\t0x1fd64: 0x6d35d820, 0x1fd67: 0x6cbc7c20,\n\t0x1fd69: 0x6c3fde20,\n\t0x1fd6c: 0x6c710a20, 0x1fd6d: 0x6c071e20, 0x1fd6f: 0x6c099220,\n\t0x1fd72: 0x6cdd6220,\n\t0x1fd75: 0x6cba0820, 0x1fd76: 0x6ca03220, 0x1fd77: 0x6c15b620,\n\t0x1fd7a: 0x6ccaa820, 0x1fd7b: 0x6c5ec020,\n\t// Block 0x7f6, offset 0x1fd80\n\t0x1fd95: 0x6c461620, 0x1fd96: 0x6cbf1e20,\n\t0x1fd9a: 0x6cc73820,\n\t0x1fd9e: 0x6cda1a20, 0x1fd9f: 0x6cda1e20,\n\t0x1fda0: 0x6d10f420,\n\t0x1fdaa: 0x6c1d6a20,\n\t0x1fdad: 0x6cd66620, 0x1fdae: 0x6d2ffa20, 0x1fdaf: 0x6c862420,\n\t0x1fdb0: 0x6c413e20, 0x1fdb1: 0x6cdbc620, 0x1fdb2: 0x6d2d7c20,\n\t0x1fdb4: 0x6d3c4220,\n\t0x1fdbd: 0x6c400820,\n\t// Block 0x7f7, offset 0x1fdc0\n\t0x1fdc3: 0x6c5ee020,\n\t0x1fdc4: 0x6c30b220,\n\t0x1fdd7: 0x6c5bd020,\n\t0x1fdda: 0x6c65a420, 0x1fddb: 0x6d0d9c20,\n\t0x1fddc: 0x6d364a20,\n\t0x1fde8: 0x6c9a5c20, 0x1fde9: 0x6d120e20, 0x1fdea: 0x6c2b3220, 0x1fdeb: 0x6d150e20,\n\t0x1fdef: 0x6c0cf220,\n\t0x1fdf2: 0x6cc1a220, 0x1fdf3: 0x6d181a20,\n\t0x1fdf5: 0x6d105420,\n\t0x1fdf9: 0x6d2c3e20,\n\t0x1fdfd: 0x6ccc6020,\n\t// Block 0x7f8, offset 0x1fe00\n\t0x1fe19: 0x6c7f1820,\n\t0x1fe2e: 0x6c746e20,\n\t0x1fe30: 0x6cb50620, 0x1fe33: 0x6d216a20,\n\t0x1fe36: 0x6d291820, 0x1fe37: 0x6cc98220,\n\t0x1fe38: 0x6ccb3a20, 0x1fe3b: 0x6c340420,\n\t0x1fe3f: 0x6c6b9e20,\n\t// Block 0x7f9, offset 0x1fe40\n\t0x1fe40: 0x6c782020, 0x1fe43: 0x6d265420,\n\t0x1fe47: 0x6c65ca20,\n\t0x1fe48: 0x6d113220,\n\t0x1fe53: 0x6cfaca20,\n\t0x1fe55: 0x6d000220, 0x1fe56: 0x6cbb9620,\n\t0x1fe5a: 0x6d23b820, 0x1fe5b: 0x6cc1ae20,\n\t0x1fe61: 0x6cfac820, 0x1fe62: 0x6c962020,\n\t0x1fe64: 0x6c4a0a20, 0x1fe67: 0x6c198620,\n\t0x1fe68: 0x6c209620, 0x1fe69: 0x6d155620, 0x1fe6b: 0x6d333020,\n\t0x1fe6d: 0x6d403020, 0x1fe6e: 0x6c335c20,\n\t0x1fe70: 0x6d2d3420,\n\t0x1fe7f: 0x6c3a6e20,\n\t// Block 0x7fa, offset 0x1fe80\n\t0x1fe80: 0x6d155820, 0x1fe81: 0x6c9b4420,\n\t0x1fe88: 0x6c0b0a20, 0x1fe89: 0x6c6b4020, 0x1fe8a: 0x6cd61820, 0x1fe8b: 0x6c8a2220,\n\t0x1fe8c: 0x6c08fa20, 0x1fe8d: 0x6cda7620,\n\t0x1fe91: 0x6c2ca220,\n\t0x1fea1: 0x6c076220, 0x1fea2: 0x6cf21220,\n\t0x1fea7: 0x6c9b6a20,\n\t0x1fea9: 0x6c15ea20,\n\t0x1feb5: 0x6c29f620,\n\t0x1feba: 0x6cb21c20, 0x1febb: 0x6c660820,\n\t0x1febc: 0x6c8c7420, 0x1febd: 0x6c4b9220, 0x1febe: 0x6cb54620, 0x1febf: 0x6c52dc20,\n\t// Block 0x7fb, offset 0x1fec0\n\t0x1fec3: 0x6c60e820,\n\t0x1fec4: 0x6d024e20, 0x1fec5: 0x6d330820, 0x1fec6: 0x6c15fa20,\n\t0x1fed0: 0x6d116c20, 0x1fed1: 0x6c160a20,\n\t0x1fed8: 0x6c2cee20, 0x1fed9: 0x6c1d6020, 0x1feda: 0x6ca56220, 0x1fedb: 0x6ca56420,\n\t0x1fede: 0x6d2d5420, 0x1fedf: 0x6c0b1e20,\n\t0x1fee1: 0x6c161020,\n\t0x1feea: 0x6cff5a20,\n\t0x1feef: 0x6c248620,\n\t0x1fef0: 0x6d02f620, 0x1fef1: 0x6c6e4420, 0x1fef2: 0x6cb96620,\n\t0x1fef4: 0x6cbe6820,\n\t0x1fef9: 0x6c475220,\n\t// Block 0x7fc, offset 0x1ff00\n\t0x1ff04: 0x6cf4b420,\n\t0x1ff1c: 0x6d25e420, 0x1ff1d: 0x6c0dde20,\n\t0x1ff22: 0x6cecde20,\n\t0x1ff30: 0x6ca7a620,\n\t0x1ff35: 0x6c891020,\n\t0x1ff38: 0x6cc53e20,\n\t0x1ff3e: 0x6c396e20, 0x1ff3f: 0x6c2b9420,\n\t// Block 0x7fd, offset 0x1ff40\n\t0x1ff4a: 0x6c5af820, 0x1ff4b: 0x6d190620,\n\t0x1ff4c: 0x6cfbbc20,\n\t0x1ff56: 0x6c800420, 0x1ff57: 0x6c40a020,\n\t0x1ff59: 0x6d04ae20,\n\t0x1ff5c: 0x6c897e20, 0x1ff5d: 0x6ce1a620, 0x1ff5e: 0x6c5fba20,\n\t0x1ff62: 0x6c6ba620, 0x1ff63: 0x6d2c1a20,\n\t0x1ff64: 0x6cd19420,\n\t0x1ff6a: 0x6cb59220, 0x1ff6b: 0x6c0b2c20,\n\t0x1ff6d: 0x6c802220, 0x1ff6e: 0x6c8c1a20,\n\t0x1ff76: 0x6d364c20, 0x1ff77: 0x6c09bc20,\n\t0x1ff78: 0x6cd17020,\n\t0x1ff7d: 0x6cd17a20, 0x1ff7f: 0x6cbdbc20,\n\t// Block 0x7fe, offset 0x1ff80\n\t0x1ff82: 0x6c0be620, 0x1ff83: 0x6cf55e20,\n\t0x1ff89: 0x6c733a20, 0x1ff8b: 0x6c5e8420,\n\t0x1ff8d: 0x6cf57620, 0x1ff8e: 0x6cbdc420,\n\t0x1ff91: 0x6c4d5620,\n\t0x1ff95: 0x6c94e220,\n\t0x1ffa0: 0x6d26b420,\n\t0x1ffa8: 0x6c880a20,\n\t0x1ffaf: 0x6c048e20,\n\t0x1ffb2: 0x6c526820,\n\t0x1ffb6: 0x6cb54020,\n\t0x1ffba: 0x6cb93820, 0x1ffbb: 0x6d337820,\n\t0x1ffbc: 0x6c991a20,\n\t// Block 0x7ff, offset 0x1ffc0\n\t0x1ffc1: 0x6c238020,\n\t0x1ffc4: 0x6ca30020,\n\t0x1ffca: 0x6ce6a820,\n\t0x1ffcc: 0x6d3f6e20,\n\t0x1ffd5: 0x6c6ed420, 0x1ffd6: 0x6d2f8620,\n\t0x1ffdf: 0x6ca71c20,\n\t0x1ffe0: 0x6c19e420, 0x1ffe3: 0x6cb86620,\n\t0x1ffe6: 0x6d236420, 0x1ffe7: 0x6c690020,\n\t0x1ffed: 0x6d2fda20,\n\t0x1fff3: 0x6c2b5020,\n\t0x1fff4: 0x6c6f3c20,\n\t0x1fff8: 0x6cdc0a20, 0x1fffb: 0x6d108220,\n\t0x1ffff: 0x6cedbe20,\n\t// Block 0x800, offset 0x20000\n\t0x20002: 0x6c89d820,\n\t0x20004: 0x6ce71220, 0x20006: 0x6c9bfc20,\n\t0x2000b: 0x6d1faa20,\n\t0x20013: 0x6cd7e020,\n\t0x2001b: 0x6c910820,\n\t0x2001f: 0x6d19f820,\n\t0x20025: 0x6c1d4420,\n\t0x2002b: 0x6c420020,\n\t0x2002c: 0x6c6f3820,\n\t0x20036: 0x6cbdf820, 0x20037: 0x6c6ef220,\n\t0x20039: 0x6d006e20,\n\t// Block 0x801, offset 0x20040\n\t0x20042: 0x6c51b820,\n\t0x20046: 0x6ce1ae20,\n\t0x20048: 0x6cc01220, 0x20049: 0x6d007420, 0x2004a: 0x6c6e5420, 0x2004b: 0x6ca71620,\n\t0x2004c: 0x6c6e5620, 0x2004f: 0x6c5fea20,\n\t0x20058: 0x6ce4de20, 0x2005a: 0x6c252220, 0x2005b: 0x6c2e7c20,\n\t0x2005d: 0x6cbea020,\n\t0x20065: 0x6cb2e620, 0x20066: 0x6cb29620,\n\t0x20068: 0x6c2e9020, 0x20069: 0x6c910420,\n\t0x20073: 0x6c88ba20,\n\t0x20074: 0x6c4e0a20, 0x20075: 0x6cacd620, 0x20076: 0x6ce0f020,\n\t0x2007a: 0x6d151020, 0x2007b: 0x6d081420,\n\t0x2007c: 0x6cddca20, 0x2007d: 0x6c8e6420, 0x2007e: 0x6cd6d220, 0x2007f: 0x6cd0a820,\n\t// Block 0x802, offset 0x20080\n\t0x20081: 0x6c10a020, 0x20082: 0x6cd9bc20,\n\t0x20085: 0x6cbd8c20, 0x20086: 0x6cd06620,\n\t0x2008a: 0x6ca9f420, 0x2008b: 0x6ce6de20,\n\t0x2008c: 0x6c677020,\n\t0x20095: 0x6cf6b820, 0x20096: 0x6d36fe20,\n\t0x2009d: 0x6c7f5e20, 0x2009e: 0x6c86be20, 0x2009f: 0x6c86c020,\n\t0x200a2: 0x6c519420, 0x200a3: 0x6c69cc20,\n\t0x200a5: 0x6d0d0a20, 0x200a7: 0x6cd49420,\n\t0x200aa: 0x6cd2a220,\n\t0x200b1: 0x6d31ae20, 0x200b3: 0x6d1e8620,\n\t0x200ba: 0x6cddc620, 0x200bb: 0x6cf39e20,\n\t// Block 0x803, offset 0x200c0\n\t0x200c1: 0x6c169620, 0x200c2: 0x6c238820,\n\t0x200c6: 0x6c720820,\n\t0x200ce: 0x6cd4a420,\n\t0x200d4: 0x6c6fe620, 0x200d5: 0x6ceef020,\n\t0x200de: 0x6c5db620,\n\t0x200e4: 0x6c6a2020,\n\t0x200ec: 0x6d2a4e20,\n\t0x200f6: 0x6cab7220,\n\t0x200fc: 0x6c488c20,\n\t// Block 0x804, offset 0x20100\n\t0x20103: 0x6c4fba20,\n\t0x20104: 0x6c84f620, 0x20105: 0x6d356c20, 0x20106: 0x6cfc7220,\n\t0x20109: 0x6c100c20, 0x2010a: 0x6c170020,\n\t0x20113: 0x6d274a20,\n\t0x20114: 0x6c510020,\n\t0x2011c: 0x6ce1e420,\n\t0x20120: 0x6c0c4a20,\n\t0x20125: 0x6c2da420, 0x20127: 0x6c37b620,\n\t0x20128: 0x6c6f3e20,\n\t0x2012d: 0x6c2c0a20, 0x2012e: 0x6d164420, 0x2012f: 0x6c7d4620,\n\t0x20131: 0x6d300a20, 0x20133: 0x6c7de420,\n\t0x20134: 0x6d384e20, 0x20135: 0x6c71ee20,\n\t0x20139: 0x6ccd6820, 0x2013a: 0x6ccc3820, 0x2013b: 0x6c2da820,\n\t0x2013c: 0x6c046c20, 0x2013d: 0x6c5e7420,\n\t// Block 0x805, offset 0x20140\n\t0x20140: 0x6d378620, 0x20143: 0x6d144e20,\n\t0x20145: 0x6c79b020, 0x20146: 0x6cf33e20,\n\t0x2014a: 0x6c436420, 0x2014b: 0x6c031220,\n\t0x2014e: 0x6c463620,\n\t0x20151: 0x6cfb2420, 0x20152: 0x6c484020, 0x20153: 0x6c8ef620,\n\t0x20154: 0x6c1b7620, 0x20155: 0x6c48c020, 0x20156: 0x6c1fdc20,\n\t0x20158: 0x6c83a020, 0x20159: 0x6c242a20, 0x2015a: 0x6cd63e20,\n\t0x20161: 0x6c08b620,\n\t0x20165: 0x6c0dbc20, 0x20166: 0x6c857820,\n\t0x20169: 0x6c6fae20, 0x2016a: 0x6ce54a20, 0x2016b: 0x6c347220,\n\t0x2016d: 0x6d0bde20, 0x2016e: 0x6cc28a20,\n\t0x20171: 0x6c8ac820, 0x20173: 0x6c787c20,\n\t0x20175: 0x6c449620, 0x20176: 0x6d312420,\n\t0x20178: 0x6c3b5820,\n\t// Block 0x806, offset 0x20180\n\t0x20181: 0x6d146e20, 0x20183: 0x6c6fd220,\n\t0x20184: 0x6d067c20, 0x20185: 0x6c68cc20,\n\t0x20188: 0x6c93cc20, 0x20189: 0x6c6fb020, 0x2018b: 0x6c1e1e20,\n\t0x2018e: 0x6cfc7e20,\n\t0x20190: 0x6c7b1620, 0x20191: 0x6c333e20,\n\t0x20196: 0x6c952e20, 0x20197: 0x6cf59a20,\n\t0x20198: 0x6cbe0820, 0x20199: 0x6c107420,\n\t0x201a4: 0x6cb84620,\n\t0x201b1: 0x6caf5020, 0x201b2: 0x6d0adc20, 0x201b3: 0x6c07da20,\n\t0x201b4: 0x6c4cb220, 0x201b5: 0x6c484c20,\n\t0x201b9: 0x6c710020,\n\t0x201bc: 0x6cb82420, 0x201be: 0x6c741020,\n\t// Block 0x807, offset 0x201c0\n\t0x201c4: 0x6c85c020,\n\t0x201d0: 0x6c570c20, 0x201d1: 0x6c683c20,\n\t0x201d8: 0x6cb84e20, 0x201da: 0x6d2c2620, 0x201db: 0x6cb82620,\n\t0x201dd: 0x6d304620, 0x201de: 0x6c139020, 0x201df: 0x6d1ce820,\n\t0x201e2: 0x6d0bee20,\n\t0x201e4: 0x6c1cc020,\n\t0x201e8: 0x6c1b9a20, 0x201ea: 0x6cec8620,\n\t0x201ec: 0x6cd9a620,\n\t0x201f2: 0x6c76cc20, 0x201f3: 0x6d255c20,\n\t0x201fd: 0x6c1d9c20, 0x201ff: 0x6cdd6420,\n\t// Block 0x808, offset 0x20200\n\t0x20200: 0x6ce85820, 0x20203: 0x6d305620,\n\t0x20204: 0x6ce2ee20, 0x20206: 0x6cf36820,\n\t0x20208: 0x6c264a20, 0x20209: 0x6c860820, 0x2020a: 0x6c139420,\n\t0x20215: 0x6cc66e20, 0x20216: 0x6c461820, 0x20217: 0x6cc3bc20,\n\t0x20219: 0x6c83ce20,\n\t0x2021e: 0x6ce1c620,\n\t0x20224: 0x6c860a20, 0x20227: 0x6c9c5c20,\n\t0x20229: 0x6c1c3020,\n\t0x2022c: 0x6c4bfa20, 0x2022d: 0x6c909420, 0x2022e: 0x6c209020, 0x2022f: 0x6cdd6e20,\n\t0x20230: 0x6c690420, 0x20231: 0x6c6d0c20,\n\t0x20235: 0x6c381620, 0x20236: 0x6d2cf620,\n\t0x2023e: 0x6c6d0e20, 0x2023f: 0x6c254220,\n\t// Block 0x809, offset 0x20240\n\t0x20242: 0x6c136c20, 0x20243: 0x6d420820,\n\t0x20245: 0x6d2fc420,\n\t0x20248: 0x6cb1c620, 0x20249: 0x6d2dfc20, 0x2024a: 0x6cf66420, 0x2024b: 0x6d121420,\n\t0x2024c: 0x6c3f7420, 0x2024d: 0x6c1cce20,\n\t0x20253: 0x6c254a20,\n\t0x20257: 0x6c486820,\n\t0x20263: 0x6c5f0020,\n\t0x20266: 0x6ccb3c20, 0x20267: 0x6d2d8e20,\n\t0x20268: 0x6c8e2420, 0x20269: 0x6ccb3e20, 0x2026a: 0x6d132220,\n\t0x20270: 0x6c70ba20,\n\t0x20276: 0x6ce87220,\n\t0x2027a: 0x6cc7c620, 0x2027b: 0x6d2af820,\n\t0x2027c: 0x6c589020,\n\t// Block 0x80a, offset 0x20280\n\t0x20281: 0x6cfc2820, 0x20283: 0x6cb91a20,\n\t0x20284: 0x6d2fdc20,\n\t0x2028b: 0x6c11b220,\n\t0x2028e: 0x6c7e1820, 0x2028f: 0x6c869a20,\n\t0x20290: 0x6cc76420,\n\t0x20294: 0x6c31c020, 0x20297: 0x6c8b3020,\n\t0x2029c: 0x6d1c0620, 0x2029d: 0x6c86c220,\n\t0x202a0: 0x6c31c620, 0x202a2: 0x6c8d8020,\n\t0x202aa: 0x6ceca220,\n\t0x202af: 0x6c2f1820,\n\t0x202b3: 0x6c6f4020,\n\t0x202b5: 0x6c855e20, 0x202b6: 0x6c7a1620, 0x202b7: 0x6c791e20,\n\t0x202b9: 0x6d31b220,\n\t// Block 0x80b, offset 0x202c0\n\t0x202c0: 0x6c51b420, 0x202c2: 0x6c091220,\n\t0x202c4: 0x6caf2820,\n\t0x202ca: 0x6c4f4820,\n\t0x202d1: 0x6d3d2820, 0x202d2: 0x6c332020,\n\t0x202d4: 0x6d16a420,\n\t0x202dc: 0x6c787e20, 0x202dd: 0x6d16a620, 0x202de: 0x6ca0dc20,\n\t0x202e1: 0x6c118a20, 0x202e3: 0x6c44ee20,\n\t0x202e4: 0x6c788820, 0x202e5: 0x6cd32a20,\n\t0x202ed: 0x6c8cc620, 0x202ee: 0x6c07dc20,\n\t0x202f1: 0x6c32b820,\n\t0x202f6: 0x6c72e020, 0x202f7: 0x6ca4e420,\n\t0x202f8: 0x6d3f0020, 0x202fb: 0x6d401e20,\n\t// Block 0x80c, offset 0x20300\n\t0x20303: 0x6ce0ea20,\n\t0x20306: 0x6cf9be20, 0x20307: 0x6c4ec020,\n\t0x2030c: 0x6c94a620, 0x2030d: 0x6cb99020,\n\t0x20313: 0x6ca12220,\n\t0x20314: 0x6cab3a20, 0x20315: 0x6c4fc820,\n\t0x20319: 0x6d2c3420, 0x2031a: 0x6c737020, 0x2031b: 0x6c23a020,\n\t0x20320: 0x6c864420, 0x20321: 0x6d2c4020, 0x20322: 0x6d1fdc20, 0x20323: 0x6c2d6c20,\n\t0x20324: 0x6c747820, 0x20325: 0x6c073a20,\n\t0x20329: 0x6d11bc20, 0x2032a: 0x6cb1c820,\n\t0x20331: 0x6c6d3620, 0x20332: 0x6c766c20, 0x20333: 0x6ccb4020,\n\t0x20334: 0x6d102c20, 0x20335: 0x6c6d3820,\n\t0x20339: 0x6c78dc20,\n\t// Block 0x80d, offset 0x20340\n\t0x20344: 0x6c14de20, 0x20347: 0x6ca74a20,\n\t0x20349: 0x6cedb020, 0x2034a: 0x6c942a20,\n\t0x20350: 0x6d277a20, 0x20351: 0x6d108420, 0x20352: 0x6c05a020,\n\t0x20355: 0x6c755220, 0x20356: 0x6d07fc20,\n\t0x20358: 0x6d385820,\n\t0x20360: 0x6c7ce820, 0x20361: 0x6c3cda20,\n\t0x2036a: 0x6cc17e20, 0x2036b: 0x6ccecc20,\n\t0x2036c: 0x6cdce420,\n\t0x20370: 0x6c316820, 0x20372: 0x6c7af820, 0x20373: 0x6cad8c20,\n\t0x2037a: 0x6c065020,\n\t0x2037e: 0x6c401620, 0x2037f: 0x6c700c20,\n\t// Block 0x80e, offset 0x20380\n\t0x20380: 0x6cc47c20,\n\t0x20384: 0x6c70ca20,\n\t0x2038a: 0x6cbf6a20,\n\t0x2038d: 0x6d38c220, 0x2038e: 0x6c577420, 0x2038f: 0x6c05e020,\n\t0x20395: 0x6d145c20, 0x20397: 0x6d148420,\n\t0x20398: 0x6d148620,\n\t0x2039d: 0x6c995020,\n\t0x203a6: 0x6cc86c20,\n\t0x203ab: 0x6c227c20,\n\t0x203ae: 0x6c4dca20,\n\t0x203b0: 0x6c238420,\n\t0x203b4: 0x6cf83a20,\n\t0x203b9: 0x6cc2b820, 0x203ba: 0x6ce56c20,\n\t0x203bc: 0x6c2e0c20, 0x203be: 0x6c4ddc20,\n\t// Block 0x80f, offset 0x203c0\n\t0x203c7: 0x6d12a620,\n\t0x203cd: 0x6c353420, 0x203ce: 0x6ceef820,\n\t0x203d0: 0x6c122e20, 0x203d1: 0x6c2e2620,\n\t0x203d5: 0x6c362620, 0x203d6: 0x6c2c6820,\n\t0x203d8: 0x6cdb9220, 0x203d9: 0x6cc30a20,\n\t0x203dc: 0x6c368020, 0x203dd: 0x6cab4420, 0x203de: 0x6d081c20,\n\t0x203e2: 0x6cf47820,\n\t0x203e6: 0x6d190820,\n\t0x203e8: 0x6ca1fa20,\n\t0x203f0: 0x6c549620,\n\t0x203f4: 0x6c4dde20,\n\t0x203ff: 0x6cd22820,\n\t// Block 0x810, offset 0x20400\n\t0x20403: 0x6cc96420,\n\t0x20408: 0x6c090820, 0x2040a: 0x6c4dcc20, 0x2040b: 0x6c6e4620,\n\t0x2040e: 0x6cbdfa20, 0x2040f: 0x6c25d420,\n\t0x20410: 0x6c22a620, 0x20412: 0x6c046e20,\n\t0x20417: 0x6c32f020,\n\t0x2041c: 0x6cf84220,\n\t0x20427: 0x6d33c020,\n\t0x20428: 0x6c949220, 0x2042a: 0x6c54b620, 0x2042b: 0x6c601420,\n\t0x2042c: 0x6c48c820,\n\t0x20432: 0x6cacd820,\n\t// Block 0x811, offset 0x20440\n\t0x20440: 0x6d39c220,\n\t0x20445: 0x6c08fc20, 0x20447: 0x6d21ae20,\n\t0x20452: 0x6cb6c220,\n\t0x20455: 0x6c50b420, 0x20456: 0x6c1ed420,\n\t0x20459: 0x6ccec220, 0x2045a: 0x6c1be020, 0x2045b: 0x6c0eac20,\n\t0x2045f: 0x6cc62420,\n\t0x20460: 0x6d1ef820,\n\t0x20464: 0x6ca39620,\n\t0x20469: 0x6c5b9420, 0x2046a: 0x6ce57620, 0x2046b: 0x6c04c220,\n\t0x20470: 0x6d057620,\n\t0x20474: 0x6d1f1020, 0x20475: 0x6c1c0620,\n\t0x2047f: 0x6c526220,\n\t// Block 0x812, offset 0x20480\n\t0x20483: 0x6cec7020,\n\t0x20486: 0x6d01ce20,\n\t0x2048a: 0x6c748c20,\n\t0x2048c: 0x6cdbec20, 0x2048d: 0x6cbe2c20, 0x2048e: 0x6d3bbc20,\n\t0x20495: 0x6c617620,\n\t0x20498: 0x6c091420, 0x2049a: 0x6cf59c20,\n\t0x204a0: 0x6c602820, 0x204a2: 0x6c75c620,\n\t0x204a5: 0x6c89ee20, 0x204a6: 0x6d1eb620,\n\t0x204ad: 0x6c70ea20,\n\t0x204b2: 0x6d266a20,\n\t0x204b5: 0x6c055e20,\n\t0x204b8: 0x6cafaa20, 0x204bb: 0x6d2b3820,\n\t0x204be: 0x6d165820, 0x204bf: 0x6c2bc820,\n\t// Block 0x813, offset 0x204c0\n\t0x204c2: 0x6cbc9220,\n\t0x204c4: 0x6cdd4c20, 0x204c6: 0x6c22ae20,\n\t0x204c8: 0x6d3aa220, 0x204c9: 0x6d267420,\n\t0x204cf: 0x6c682820,\n\t0x204d4: 0x6cd23e20, 0x204d7: 0x6d148820,\n\t0x204d8: 0x6cf99220,\n\t0x204e0: 0x6d254220,\n\t0x204e5: 0x6c4c6020, 0x204e7: 0x6c789020,\n\t0x204ea: 0x6c252420, 0x204eb: 0x6d171a20,\n\t0x204f5: 0x6c85c220, 0x204f7: 0x6c2d0c20,\n\t0x204fa: 0x6cf5d620,\n\t0x204ff: 0x6c09c020,\n\t// Block 0x814, offset 0x20500\n\t0x20502: 0x6c0b3420, 0x20503: 0x6c99ea20,\n\t0x20504: 0x6c85e420, 0x20507: 0x6cda1820,\n\t0x20510: 0x6c8e5620, 0x20511: 0x6c4b5420, 0x20512: 0x6c78b620,\n\t0x20517: 0x6d151220,\n\t0x20519: 0x6cf7f620, 0x2051a: 0x6d1a7c20,\n\t0x2051f: 0x6c78c020,\n\t0x20523: 0x6ccf6020,\n\t0x20527: 0x6cf2bc20,\n\t0x2052e: 0x6cb0b620,\n\t0x20536: 0x6d26dc20, 0x20537: 0x6c538020,\n\t0x2053a: 0x6c867220, 0x2053b: 0x6c405020,\n\t// Block 0x815, offset 0x20540\n\t0x20543: 0x6c74d620,\n\t0x20544: 0x6cfae820,\n\t0x20549: 0x6c2cf020,\n\t0x2054c: 0x6c878820,\n\t0x20553: 0x6ce83420,\n\t0x20558: 0x6c645820, 0x2055b: 0x6c041420,\n\t0x2055c: 0x6c2c0c20, 0x2055d: 0x6d2efc20,\n\t0x20563: 0x6d22bc20,\n\t0x20568: 0x6c333420,\n\t0x2056d: 0x6c115c20, 0x2056e: 0x6ce88620,\n\t0x20576: 0x6cdf9420, 0x20577: 0x6c5fee20,\n\t0x20578: 0x6cb59420, 0x20579: 0x6ccd7620, 0x2057a: 0x6ca6fa20,\n\t// Block 0x816, offset 0x20580\n\t0x20586: 0x6c498c20,\n\t0x20588: 0x6c08e420, 0x2058b: 0x6d037820,\n\t0x20593: 0x6d31fa20,\n\t0x20599: 0x6cc94a20, 0x2059b: 0x6ca0b820,\n\t0x2059d: 0x6c3dc420,\n\t0x205a2: 0x6ce1a820, 0x205a3: 0x6c055c20,\n\t0x205aa: 0x6c0c8a20,\n\t0x205ac: 0x6cf56620, 0x205ae: 0x6c6a5e20,\n\t0x205b6: 0x6c6cd220,\n\t0x205be: 0x6cb8b020,\n\t// Block 0x817, offset 0x205c0\n\t0x205c8: 0x6cd89820, 0x205c9: 0x6c6e1620, 0x205cb: 0x6c1b8820,\n\t0x205d7: 0x6c6e1c20,\n\t0x205e5: 0x6cdc3a20,\n\t0x205ef: 0x6d2bde20,\n\t0x205f0: 0x6c83e020,\n\t0x205f4: 0x6d3d0620,\n\t0x205f9: 0x6c0ba820,\n\t0x205ff: 0x6cea6220,\n\t// Block 0x818, offset 0x20600\n\t0x20603: 0x6c0a1820,\n\t0x20606: 0x6c3ac220,\n\t0x2060a: 0x6c2a8220,\n\t0x2060c: 0x6d3a2620,\n\t0x20611: 0x6c70dc20,\n\t0x20619: 0x6d15b020,\n\t0x2061c: 0x6d0b6420, 0x2061f: 0x6c1bd820,\n\t0x20620: 0x6c488e20, 0x20621: 0x6d34d020,\n\t0x20628: 0x6cc61620, 0x2062b: 0x6d1e8a20,\n\t0x2062d: 0x6c0ea820, 0x2062f: 0x6c611820,\n\t0x20630: 0x6cb23620, 0x20633: 0x6d1b9c20,\n\t0x20634: 0x6d0f4220, 0x20635: 0x6c98b420,\n\t0x2063d: 0x6c904e20, 0x2063e: 0x6ca2ca20, 0x2063f: 0x6cc9bc20,\n\t// Block 0x819, offset 0x20640\n\t0x20640: 0x6c1fda20, 0x20642: 0x6c221c20, 0x20643: 0x6cf41a20,\n\t0x20644: 0x6cc5ae20,\n\t0x20648: 0x6c272420, 0x20649: 0x6c5fc420, 0x2064b: 0x6d15b820,\n\t0x2064d: 0x6cc45e20,\n\t0x20650: 0x6c5d9820, 0x20651: 0x6c484220, 0x20653: 0x6d301020,\n\t0x20654: 0x6cb08220, 0x20657: 0x6d288220,\n\t0x20658: 0x6c04e020, 0x20659: 0x6c6a6a20,\n\t0x2065c: 0x6c53e220, 0x2065f: 0x6cfc7620,\n\t0x20660: 0x6c5a8820,\n\t0x20669: 0x6d2bc420, 0x2066a: 0x6c270820, 0x2066b: 0x6c436c20,\n\t0x2066d: 0x6cb08420, 0x2066f: 0x6cb14620,\n\t0x20670: 0x6cd23620, 0x20671: 0x6c898620, 0x20672: 0x6d267620, 0x20673: 0x6c565020,\n\t0x20674: 0x6c0b6a20, 0x20677: 0x6cc61e20,\n\t0x20679: 0x6cc62020,\n\t// Block 0x81a, offset 0x20680\n\t0x20684: 0x6d13c420, 0x20685: 0x6d338820, 0x20687: 0x6c6c2820,\n\t0x20688: 0x6cf22020, 0x20689: 0x6c173420, 0x2068b: 0x6cbf9a20,\n\t0x2068d: 0x6d3a5620, 0x2068f: 0x6d2c1c20,\n\t0x20690: 0x6cb34820, 0x20691: 0x6c019e20, 0x20693: 0x6c50c220,\n\t0x20695: 0x6c1e5620, 0x20696: 0x6d0c6020,\n\t0x2069a: 0x6cd31820, 0x2069b: 0x6c566020,\n\t0x2069c: 0x6c35dc20,\n\t0x206b4: 0x6cd24020,\n\t0x206b9: 0x6ceaaa20, 0x206ba: 0x6c272c20, 0x206bb: 0x6cec6a20,\n\t0x206bc: 0x6cb2f420, 0x206bd: 0x6cc6f420, 0x206be: 0x6c705220,\n\t// Block 0x81b, offset 0x206c0\n\t0x206c0: 0x6c0e4a20,\n\t0x206d0: 0x6d222820, 0x206d1: 0x6c30a220, 0x206d3: 0x6c4ace20,\n\t0x206d4: 0x6cd45420, 0x206d7: 0x6cdd0820,\n\t0x206d8: 0x6ca68220, 0x206d9: 0x6d385c20, 0x206da: 0x6c905220, 0x206db: 0x6c0dca20,\n\t0x206dc: 0x6d421420, 0x206dd: 0x6d12d620, 0x206de: 0x6cc4b420,\n\t0x206e0: 0x6c8cb220, 0x206e1: 0x6cc96c20,\n\t0x206e4: 0x6c82b820, 0x206e5: 0x6c35e820, 0x206e7: 0x6d381a20,\n\t0x206e8: 0x6c612820, 0x206eb: 0x6c35ea20,\n\t0x206ef: 0x6d428420,\n\t0x206f2: 0x6ca31820, 0x206f3: 0x6d27dc20,\n\t// Block 0x81c, offset 0x20700\n\t0x2070a: 0x6d016c20, 0x2070b: 0x6d418a20,\n\t0x2070c: 0x6cd5aa20, 0x2070d: 0x6c2fce20, 0x2070e: 0x6c384620, 0x2070f: 0x6cc58a20,\n\t0x20711: 0x6c051820, 0x20712: 0x6c4de020, 0x20713: 0x6c530a20,\n\t0x20714: 0x6d13d020, 0x20716: 0x6d13d220,\n\t0x20719: 0x6c77da20, 0x2071a: 0x6d16de20, 0x2071b: 0x6c5b1e20,\n\t0x2071c: 0x6d329020,\n\t0x2072e: 0x6c6e6220,\n\t0x20731: 0x6c43d220,\n\t0x20734: 0x6ca9fa20, 0x20735: 0x6cbca220, 0x20737: 0x6c2e7e20,\n\t0x20739: 0x6c61c420, 0x2073a: 0x6d171e20, 0x2073b: 0x6d14b620,\n\t0x2073d: 0x6c3e2c20, 0x2073e: 0x6cd77220, 0x2073f: 0x6cd77420,\n\t// Block 0x81d, offset 0x20740\n\t0x20740: 0x6d1e1e20, 0x20741: 0x6c78fe20, 0x20742: 0x6c573020, 0x20743: 0x6c53b620,\n\t0x20747: 0x6c50ec20,\n\t0x2074a: 0x6c509620, 0x2074b: 0x6cb9f820,\n\t0x2074c: 0x6cb85020, 0x2074e: 0x6cd8a620,\n\t0x20750: 0x6c051e20,\n\t0x2076c: 0x6c6d9e20, 0x2076d: 0x6c789220,\n\t0x20773: 0x6c001a20,\n\t0x20774: 0x6c908020, 0x20776: 0x6ce84820,\n\t0x20779: 0x6c207020,\n\t0x2077c: 0x6cd98620, 0x2077d: 0x6c19d620, 0x2077f: 0x6cee6a20,\n\t// Block 0x81e, offset 0x20780\n\t0x20782: 0x6caa5220,\n\t0x20784: 0x6c6fb620, 0x20787: 0x6c0d2c20,\n\t0x207a1: 0x6cffda20, 0x207a2: 0x6cd0f820, 0x207a3: 0x6c545020,\n\t0x207a6: 0x6d3ad020,\n\t0x207a8: 0x6c490e20, 0x207a9: 0x6c5eb220, 0x207ab: 0x6c61dc20,\n\t0x207ad: 0x6cf5da20, 0x207af: 0x6ccf3e20,\n\t0x207b0: 0x6cab7e20, 0x207b1: 0x6c553c20, 0x207b2: 0x6cde4220, 0x207b3: 0x6cff7c20,\n\t0x207b5: 0x6d2a7c20,\n\t0x207b8: 0x6c0fee20, 0x207b9: 0x6cb77820, 0x207ba: 0x6cebd620, 0x207bb: 0x6ceabe20,\n\t0x207bc: 0x6c2a0c20, 0x207be: 0x6ca33020,\n\t// Block 0x81f, offset 0x207c0\n\t0x207e0: 0x6d2cee20, 0x207e3: 0x6d0b9020,\n\t0x207e6: 0x6cf44020, 0x207e7: 0x6d31aa20,\n\t0x207e8: 0x6c2a8e20, 0x207e9: 0x6c509a20, 0x207eb: 0x6c01ea20,\n\t0x207ec: 0x6cafda20, 0x207ed: 0x6ccb2220, 0x207ee: 0x6c3bbc20, 0x207ef: 0x6c485420,\n\t0x207f3: 0x6cb35420,\n\t0x207f7: 0x6d088820,\n\t0x207f8: 0x6c4d9c20, 0x207f9: 0x6c427420, 0x207fa: 0x6c034620, 0x207fb: 0x6d3f7620,\n\t0x207fc: 0x6c9c0020, 0x207fe: 0x6c5dba20,\n\t// Block 0x820, offset 0x20800\n\t0x20827: 0x6c2cc220,\n\t0x20828: 0x6cf5dc20, 0x2082b: 0x6c26ee20,\n\t0x2082c: 0x6ca47a20,\n\t0x20830: 0x6c2dbe20, 0x20831: 0x6c95f820, 0x20832: 0x6c789e20,\n\t0x20837: 0x6d178e20,\n\t0x20838: 0x6c744420, 0x20839: 0x6c512420, 0x2083b: 0x6c602c20,\n\t0x2083e: 0x6c51c620, 0x2083f: 0x6ca82820,\n\t// Block 0x821, offset 0x20840\n\t0x20840: 0x6cc8f620, 0x20841: 0x6cb99220, 0x20842: 0x6c276c20, 0x20843: 0x6cce6c20,\n\t0x20844: 0x6c78ae20, 0x20845: 0x6d3a1220, 0x20847: 0x6cd1b820,\n\t0x20848: 0x6c93da20, 0x20849: 0x6c635c20, 0x2084a: 0x6cb10c20, 0x2084b: 0x6c546e20,\n\t0x2084c: 0x6c5ec420, 0x2084d: 0x6cde5420, 0x2084e: 0x6c1dac20, 0x2084f: 0x6cf29020,\n\t0x20850: 0x6c6e8020, 0x20851: 0x6cb30e20, 0x20852: 0x6d2cf220, 0x20853: 0x6d02d420,\n\t0x20856: 0x6c0b9420,\n\t0x20859: 0x6d06ce20,\n\t0x2085e: 0x6c471020, 0x2085f: 0x6c6be620,\n\t0x20862: 0x6cfb6a20,\n\t0x20878: 0x6c356420, 0x2087a: 0x6c0f0020, 0x2087b: 0x6cb15420,\n\t0x2087f: 0x6d28ea20,\n\t// Block 0x822, offset 0x20880\n\t0x20881: 0x6cac2420, 0x20882: 0x6ce85a20,\n\t0x20884: 0x6d1bb420,\n\t0x208ae: 0x6cfde220,\n\t0x208b1: 0x6caaf420, 0x208b2: 0x6c438e20, 0x208b3: 0x6c0f0220,\n\t0x208b4: 0x6d01a420,\n\t0x208b8: 0x6d315c20, 0x208b9: 0x6d214620, 0x208ba: 0x6ca6a420,\n\t// Block 0x823, offset 0x208c0\n\t0x208c0: 0x6d0a9220, 0x208c1: 0x6cec3620, 0x208c3: 0x6c021820,\n\t0x208c4: 0x6c4ece20, 0x208c5: 0x6c52b220, 0x208c6: 0x6c27e220,\n\t0x208c8: 0x6caac220, 0x208ca: 0x6c12b020, 0x208cb: 0x6c604820,\n\t0x208cc: 0x6ca5ae20, 0x208cd: 0x6d1e4020, 0x208ce: 0x6cfed220,\n\t0x208d0: 0x6c1faa20, 0x208d1: 0x6d121020, 0x208d3: 0x6c440220,\n\t0x208d4: 0x6ce0fc20, 0x208d5: 0x6c065220, 0x208d6: 0x6c15be20,\n\t0x208d8: 0x6d06ec20, 0x208db: 0x6c4d2020,\n\t0x208dd: 0x6c1db620, 0x208df: 0x6c65a620,\n\t0x208e0: 0x6d422620,\n\t0x208e4: 0x6cf0a420, 0x208e5: 0x6c265220, 0x208e6: 0x6caf6c20,\n\t// Block 0x824, offset 0x20900\n\t0x20910: 0x6c592c20, 0x20912: 0x6cf63a20,\n\t0x20914: 0x6cae4c20, 0x20915: 0x6c8e3420, 0x20916: 0x6ca24a20, 0x20917: 0x6c9ec620,\n\t0x20918: 0x6c812020, 0x20919: 0x6ce9fe20, 0x2091a: 0x6c048420,\n\t0x2091d: 0x6c439820, 0x2091f: 0x6c7aa020,\n\t0x20922: 0x6c636a20, 0x20923: 0x6c0e7c20,\n\t// Block 0x825, offset 0x20940\n\t0x2094d: 0x6c592e20, 0x2094f: 0x6d40c420,\n\t0x20950: 0x6c960e20,\n\t0x20957: 0x6c840a20,\n\t0x20959: 0x6c515620, 0x2095a: 0x6ca06220,\n\t0x2095c: 0x6cd72a20, 0x2095d: 0x6cd00420, 0x2095e: 0x6c777020, 0x2095f: 0x6c1c4020,\n\t0x20960: 0x6c8d3420, 0x20961: 0x6c95ba20,\n\t0x20964: 0x6d0dae20, 0x20965: 0x6d2fc620, 0x20966: 0x6c1fae20, 0x20967: 0x6c47ac20,\n\t0x20968: 0x6cbde020, 0x2096a: 0x6cdff220, 0x2096b: 0x6c3be220,\n\t0x2096c: 0x6ce8d220,\n\t0x20971: 0x6c8d3620,\n\t0x20974: 0x6c810820,\n\t// Block 0x826, offset 0x20980\n\t0x20996: 0x6c7fa620, 0x20997: 0x6d299220,\n\t0x20998: 0x6cf50820,\n\t0x2099d: 0x6c840c20, 0x2099e: 0x6c000a20, 0x2099f: 0x6c94b620,\n\t0x209a0: 0x6d353e20, 0x209a1: 0x6c1dc820, 0x209a2: 0x6c67f020,\n\t0x209a4: 0x6c64c620,\n\t0x209a9: 0x6c950020, 0x209aa: 0x6d153020,\n\t0x209ac: 0x6cce0820,\n\t0x209bb: 0x6c5f0220,\n\t// Block 0x827, offset 0x209c0\n\t0x209dc: 0x6d181e20, 0x209dd: 0x6ca8ea20,\n\t0x209e1: 0x6c5c0a20, 0x209e3: 0x6d2bf020,\n\t0x209e6: 0x6c4e6020,\n\t0x209e8: 0x6d1afa20, 0x209e9: 0x6c0a1a20, 0x209ea: 0x6c014620, 0x209eb: 0x6cf97220,\n\t0x209ec: 0x6ca60020,\n\t0x209f0: 0x6c2b3e20, 0x209f1: 0x6c65cc20, 0x209f2: 0x6cac6820,\n\t0x209f5: 0x6d23bc20, 0x209f6: 0x6c1fc620, 0x209f7: 0x6d289820,\n\t0x209f9: 0x6c13fc20, 0x209fb: 0x6d307620,\n\t0x209fc: 0x6ccb4220, 0x209fe: 0x6cae3620, 0x209ff: 0x6c472820,\n\t// Block 0x828, offset 0x20a00\n\t0x20a00: 0x6d307820,\n\t0x20a06: 0x6c842420, 0x20a07: 0x6c30be20,\n\t0x20a09: 0x6c1dd020, 0x20a0b: 0x6d419620,\n\t0x20a0c: 0x6cb39e20, 0x20a0f: 0x6ccefc20,\n\t0x20a10: 0x6c8fa220,\n\t0x20a22: 0x6cd5fe20,\n\t0x20a24: 0x6c6d3a20, 0x20a25: 0x6c8d4820,\n\t0x20a28: 0x6c774220, 0x20a29: 0x6c7e9220, 0x20a2b: 0x6d05cc20,\n\t0x20a2c: 0x6c6d3c20, 0x20a2e: 0x6c1fea20,\n\t0x20a32: 0x6d26de20,\n\t// Block 0x829, offset 0x20a40\n\t0x20a46: 0x6c971820, 0x20a47: 0x6d020820,\n\t0x20a48: 0x6c6f8620, 0x20a49: 0x6c627420, 0x20a4b: 0x6d26e820,\n\t0x20a4f: 0x6c64f220,\n\t0x20a51: 0x6c4e3020, 0x20a53: 0x6cc98a20,\n\t0x20a54: 0x6c5c2820, 0x20a55: 0x6cbc5a20, 0x20a57: 0x6ccb5220,\n\t0x20a58: 0x6d419a20, 0x20a5b: 0x6c91d620,\n\t0x20a5c: 0x6c57c420, 0x20a5d: 0x6c1e6820, 0x20a5e: 0x6ccd5c20, 0x20a5f: 0x6cf31220,\n\t0x20a60: 0x6c60a220, 0x20a61: 0x6d3d9620, 0x20a62: 0x6cfb8c20, 0x20a63: 0x6d141020,\n\t0x20a64: 0x6c4c8820, 0x20a65: 0x6c7d1c20,\n\t// Block 0x82a, offset 0x20a80\n\t0x20a91: 0x6d38a820,\n\t0x20a94: 0x6c929e20, 0x20a96: 0x6c0e9020, 0x20a97: 0x6cd28a20,\n\t0x20a98: 0x6d1d4a20, 0x20a99: 0x6c7a5c20,\n\t0x20ab9: 0x6d36d820, 0x20aba: 0x6d00e820,\n\t0x20abd: 0x6d135420, 0x20abe: 0x6c36b420, 0x20abf: 0x6c940420,\n\t// Block 0x82b, offset 0x20ac0\n\t0x20ac0: 0x6c4f1420, 0x20ac1: 0x6d135620,\n\t0x20ac6: 0x6c962c20, 0x20ac7: 0x6c21dc20,\n\t0x20ac8: 0x6c397020, 0x20ac9: 0x6d34a020, 0x20aca: 0x6d1d5020, 0x20acb: 0x6cf1f220,\n\t0x20acc: 0x6cebf220, 0x20acd: 0x6c00d620, 0x20ace: 0x6d21b020,\n\t0x20ad1: 0x6c571a20, 0x20ad3: 0x6c8b3220,\n\t0x20ad4: 0x6c6dd620, 0x20ad5: 0x6d28ca20,\n\t0x20ae7: 0x6d29e820,\n\t0x20ae8: 0x6c336420, 0x20aea: 0x6c629220,\n\t0x20aee: 0x6cf2a220,\n\t0x20af0: 0x6c60ba20, 0x20af1: 0x6cf6e420, 0x20af3: 0x6d2e8620,\n\t0x20af4: 0x6ce95c20,\n\t// Block 0x82c, offset 0x20b00\n\t0x20b0a: 0x6d21b220,\n\t0x20b0f: 0x6c8b4620,\n\t0x20b12: 0x6d372420, 0x20b13: 0x6cd20a20,\n\t0x20b15: 0x6c81c220, 0x20b16: 0x6c7f6020, 0x20b17: 0x6cf03620,\n\t0x20b18: 0x6cad7220, 0x20b19: 0x6c1b6220, 0x20b1a: 0x6d1d1420, 0x20b1b: 0x6c314020,\n\t0x20b1d: 0x6c314220, 0x20b1f: 0x6c067620,\n\t0x20b20: 0x6cbcf020, 0x20b21: 0x6cd62020, 0x20b23: 0x6d34a820,\n\t0x20b29: 0x6c8b4820, 0x20b2b: 0x6caed620,\n\t0x20b2d: 0x6d300620,\n\t0x20b3f: 0x6cab5a20,\n\t// Block 0x82d, offset 0x20b40\n\t0x20b42: 0x6d023c20, 0x20b43: 0x6c60d820,\n\t0x20b44: 0x6c7f6220, 0x20b45: 0x6d1cb020, 0x20b46: 0x6c134c20,\n\t0x20b56: 0x6c820020,\n\t0x20b5d: 0x6c952820,\n\t0x20b61: 0x6c8fbc20, 0x20b62: 0x6cf91020,\n\t0x20b66: 0x6c8c7620,\n\t0x20b69: 0x6c4aa020,\n\t0x20b73: 0x6d03b020,\n\t0x20b77: 0x6c848620,\n\t0x20b78: 0x6c221620,\n\t// Block 0x82e, offset 0x20b80\n\t0x20b87: 0x6cbebc20,\n\t0x20b91: 0x6c652e20, 0x20b92: 0x6c2a4420, 0x20b93: 0x6c661420,\n\t0x20b94: 0x6cbee820, 0x20b95: 0x6d026e20, 0x20b96: 0x6d1d5a20,\n\t0x20b9f: 0x6c4d0020,\n\t0x20ba1: 0x6d311820, 0x20ba2: 0x6ccf0420, 0x20ba3: 0x6c9c9a20,\n\t0x20ba4: 0x6c58ba20,\n\t0x20bb1: 0x6c248220, 0x20bb2: 0x6cc7e820, 0x20bb3: 0x6cc95a20,\n\t0x20bb4: 0x6c5e4620, 0x20bb5: 0x6d143420, 0x20bb7: 0x6c2b4e20,\n\t0x20bb9: 0x6c949e20, 0x20bbb: 0x6d193e20,\n\t// Block 0x82f, offset 0x20bc0\n\t0x20bc2: 0x6c100020, 0x20bc3: 0x6cad1820,\n\t0x20bc4: 0x6ce04220, 0x20bc5: 0x6c35a420, 0x20bc6: 0x6d29ee20, 0x20bc7: 0x6c23c420,\n\t0x20bd3: 0x6d2d0a20,\n\t0x20bd5: 0x6cf82620, 0x20bd6: 0x6c98b020,\n\t0x20bd8: 0x6c7eca20, 0x20bd9: 0x6d287820,\n\t0x20be1: 0x6c36e620,\n\t0x20be5: 0x6c2f0e20,\n\t0x20bed: 0x6c493c20,\n\t0x20bf1: 0x6c596620,\n\t0x20bf5: 0x6cd40620, 0x20bf6: 0x6c663220,\n\t0x20bf9: 0x6d2dce20, 0x20bfa: 0x6c610620, 0x20bfb: 0x6c596820,\n\t// Block 0x830, offset 0x20c00\n\t0x20c05: 0x6cedb220, 0x20c06: 0x6c95d820,\n\t0x20c0f: 0x6c315620,\n\t0x20c15: 0x6c893c20,\n\t0x20c23: 0x6ca7ea20,\n\t0x20c24: 0x6ca41c20, 0x20c25: 0x6c6fc820, 0x20c26: 0x6d266c20,\n\t0x20c29: 0x6d108820, 0x20c2a: 0x6c204c20,\n\t0x20c2e: 0x6c11cc20, 0x20c2f: 0x6c84f820,\n\t0x20c30: 0x6c33d420, 0x20c31: 0x6ca41e20, 0x20c32: 0x6ca42020,\n\t0x20c38: 0x6cc63820,\n\t0x20c3d: 0x6d267820,\n\t// Block 0x831, offset 0x20c40\n\t0x20c40: 0x6d1ee620, 0x20c42: 0x6d19a420,\n\t0x20c44: 0x6c4c5820,\n\t0x20c48: 0x6c295420,\n\t0x20c51: 0x6d312620, 0x20c52: 0x6c9c3c20, 0x20c53: 0x6c2e6820,\n\t0x20c56: 0x6d312820,\n\t0x20c5a: 0x6c7abe20,\n\t0x20c5c: 0x6c4de220, 0x20c5d: 0x6cd98020, 0x20c5e: 0x6c50d020, 0x20c5f: 0x6c5e9620,\n\t0x20c60: 0x6d302e20,\n\t0x20c64: 0x6c0dd620, 0x20c66: 0x6ceef220, 0x20c67: 0x6ce7d220,\n\t0x20c69: 0x6ce88c20,\n\t0x20c6c: 0x6c426e20, 0x20c6d: 0x6c908220, 0x20c6e: 0x6cc2c820, 0x20c6f: 0x6c5d2220,\n\t0x20c70: 0x6d3ba420, 0x20c71: 0x6cc3b220, 0x20c73: 0x6c533a20,\n\t0x20c75: 0x6c296020, 0x20c76: 0x6c510420, 0x20c77: 0x6cdf6e20,\n\t0x20c78: 0x6c48ca20, 0x20c7a: 0x6d230220,\n\t0x20c7c: 0x6d0baa20, 0x20c7f: 0x6cec8c20,\n\t// Block 0x832, offset 0x20c80\n\t0x20c80: 0x6cc43820,\n\t0x20c85: 0x6c744620, 0x20c86: 0x6cab3820,\n\t0x20c89: 0x6cc29c20, 0x20c8a: 0x6d347220,\n\t0x20c8d: 0x6c8d1820, 0x20c8e: 0x6cf37020, 0x20c8f: 0x6d033c20,\n\t0x20c90: 0x6c26ae20, 0x20c92: 0x6d24f220, 0x20c93: 0x6d261e20,\n\t0x20c97: 0x6ca13820,\n\t0x20c99: 0x6d1f5420,\n\t0x20c9e: 0x6cf45820,\n\t0x20ca0: 0x6d2ebe20, 0x20ca3: 0x6d07b820,\n\t0x20ca6: 0x6cc53c20, 0x20ca7: 0x6c4be220,\n\t0x20ca8: 0x6d23be20,\n\t0x20cae: 0x6cf9fc20, 0x20caf: 0x6c0b5220,\n\t0x20cb0: 0x6d1f7e20, 0x20cb2: 0x6d1a1420,\n\t0x20cb4: 0x6d083220, 0x20cb5: 0x6d1f8c20, 0x20cb6: 0x6c827a20,\n\t0x20cbc: 0x6ce6a620, 0x20cbf: 0x6d311a20,\n\t// Block 0x833, offset 0x20cc0\n\t0x20cc4: 0x6d292420, 0x20cc5: 0x6c40ba20, 0x20cc6: 0x6c7e5620,\n\t0x20cc9: 0x6cc39e20,\n\t0x20cce: 0x6c70ec20,\n\t0x20cd0: 0x6c20fa20, 0x20cd1: 0x6c263e20, 0x20cd2: 0x6cea3a20, 0x20cd3: 0x6c001220,\n\t0x20cd7: 0x6d3edc20,\n\t0x20cda: 0x6c59a620, 0x20cdb: 0x6d167c20,\n\t0x20ce9: 0x6c062e20, 0x20cea: 0x6c1afc20,\n\t0x20ced: 0x6cc63a20,\n\t0x20cf4: 0x6c913220, 0x20cf7: 0x6c6a6c20,\n\t0x20cf8: 0x6cd30a20, 0x20cfa: 0x6d413620,\n\t// Block 0x834, offset 0x20d00\n\t0x20d01: 0x6d167e20,\n\t0x20d04: 0x6c3bc820, 0x20d05: 0x6c3bca20,\n\t0x20d09: 0x6ca0c420,\n\t0x20d0d: 0x6cd59a20,\n\t0x20d1b: 0x6c023e20,\n\t0x20d1d: 0x6cb05620, 0x20d1e: 0x6cb27820, 0x20d1f: 0x6cb2f820,\n\t0x20d20: 0x6c639e20, 0x20d21: 0x6d38ca20, 0x20d23: 0x6cbf9e20,\n\t0x20d27: 0x6d1fa620,\n\t0x20d28: 0x6cdfd020, 0x20d2b: 0x6cc6f620,\n\t0x20d2d: 0x6c9d2020,\n\t0x20d36: 0x6d16ac20,\n\t0x20d38: 0x6cc6fc20, 0x20d3b: 0x6c8ace20,\n\t0x20d3c: 0x6cbf0220,\n\t// Block 0x835, offset 0x20d40\n\t0x20d59: 0x6c5b2020, 0x20d5a: 0x6c61a020,\n\t0x20d5f: 0x6c433a20,\n\t0x20d67: 0x6d1f0420,\n\t0x20d68: 0x6c138220, 0x20d69: 0x6c2a6020, 0x20d6a: 0x6d19ac20,\n\t0x20d6c: 0x6d22de20, 0x20d6d: 0x6c06fc20, 0x20d6f: 0x6c0ed020,\n\t// Block 0x836, offset 0x20d80\n\t0x20d94: 0x6cbb6820,\n\t0x20d9a: 0x6c141c20,\n\t0x20d9c: 0x6d02be20, 0x20d9e: 0x6c1b1420,\n\t0x20da3: 0x6d2a7220,\n\t0x20da4: 0x6c7c6020, 0x20da6: 0x6c3aa220,\n\t0x20da9: 0x6cddea20, 0x20daa: 0x6c48f420,\n\t0x20dad: 0x6c342620,\n\t0x20db2: 0x6c4a5420,\n\t0x20db4: 0x6d345020,\n\t// Block 0x837, offset 0x20dc0\n\t0x20dcc: 0x6c15a620, 0x20dcd: 0x6ca4ec20,\n\t0x20dd0: 0x6c553e20, 0x20dd2: 0x6ce21820,\n\t0x20de1: 0x6d175620,\n\t0x20de4: 0x6ca82a20, 0x20de5: 0x6d2d3e20, 0x20de6: 0x6c587220,\n\t0x20de8: 0x6c325620, 0x20dea: 0x6cb78620, 0x20deb: 0x6c12e420,\n\t0x20dee: 0x6c20cc20,\n\t0x20df2: 0x6c264e20,\n\t0x20df6: 0x6d361820, 0x20df7: 0x6c453020,\n\t0x20dfb: 0x6cf26e20,\n\t// Block 0x838, offset 0x20e00\n\t0x20e09: 0x6c325820,\n\t0x20e0d: 0x6c1b2420,\n\t0x20e11: 0x6c01be20, 0x20e12: 0x6c7df820,\n\t0x20e14: 0x6cf2e820,\n\t0x20e18: 0x6d1bb620, 0x20e1a: 0x6cb13e20,\n\t0x20e2b: 0x6d2c3020,\n\t0x20e2c: 0x6d3b6420, 0x20e2e: 0x6cdac420,\n\t0x20e33: 0x6ca6a620,\n\t0x20e3a: 0x6d3a1420, 0x20e3b: 0x6c14fe20,\n\t0x20e3e: 0x6c084020, 0x20e3f: 0x6ca5f220,\n\t// Block 0x839, offset 0x20e40\n\t0x20e40: 0x6d347420, 0x20e41: 0x6c5bd420,\n\t0x20e58: 0x6cfa3a20, 0x20e5a: 0x6d364e20, 0x20e5b: 0x6cf63c20,\n\t0x20e5e: 0x6c67aa20,\n\t0x20e69: 0x6c330220, 0x20e6a: 0x6c3d7c20,\n\t0x20e6d: 0x6c685c20, 0x20e6e: 0x6c176820, 0x20e6f: 0x6c045020,\n\t0x20e75: 0x6c8b1e20,\n\t0x20e7c: 0x6c025a20,\n\t// Block 0x83a, offset 0x20e80\n\t0x20e8b: 0x6d2a1620,\n\t0x20e8c: 0x6c1f6020, 0x20e8f: 0x6ceb8620,\n\t0x20e92: 0x6c4fd220, 0x20e93: 0x6c773620,\n\t0x20e94: 0x6d1a7e20, 0x20e96: 0x6cfcea20,\n\t0x20e9d: 0x6c401820, 0x20e9e: 0x6c0cb620,\n\t0x20ea0: 0x6c7c4020,\n\t0x20ea4: 0x6cbcde20, 0x20ea5: 0x6cc98420,\n\t0x20ebf: 0x6c266220,\n\t// Block 0x83b, offset 0x20ec0\n\t0x20ec0: 0x6d12b220,\n\t0x20ec4: 0x6d2f0820, 0x20ec6: 0x6c896420,\n\t0x20ec8: 0x6c332620,\n\t0x20ecd: 0x6c816620, 0x20ece: 0x6d09a620,\n\t0x20ed8: 0x6d36a420, 0x20eda: 0x6c7a5a20,\n\t0x20ede: 0x6cdc6a20, 0x20edf: 0x6cf2a020,\n\t0x20ee3: 0x6c7a5e20,\n\t0x20eef: 0x6c65d420,\n\t0x20ef6: 0x6c67ba20,\n\t0x20efb: 0x6d3caa20,\n\t0x20efd: 0x6cd6dc20, 0x20efe: 0x6d219c20,\n\t// Block 0x83c, offset 0x20f00\n\t0x20f01: 0x6cc98c20, 0x20f03: 0x6d23e620,\n\t0x20f04: 0x6c803a20,\n\t0x20f0a: 0x6d240620,\n\t0x20f0c: 0x6cba2820, 0x20f0d: 0x6c72a220, 0x20f0f: 0x6c8b3420,\n\t0x20f12: 0x6cd53e20, 0x20f13: 0x6cfd1a20,\n\t0x20f16: 0x6c415420,\n\t0x20f22: 0x6cdf4420,\n\t0x20f27: 0x6ce52220,\n\t0x20f2f: 0x6c9c1020,\n\t0x20f31: 0x6c2ba220, 0x20f33: 0x6c9ddc20,\n\t0x20f3e: 0x6c5afa20,\n\t// Block 0x83d, offset 0x20f40\n\t0x20f49: 0x6c351c20,\n\t0x20f4d: 0x6c8b4a20,\n\t0x20f52: 0x6c7f6820, 0x20f53: 0x6d1aa820,\n\t0x20f54: 0x6c804620, 0x20f56: 0x6c68a020,\n\t0x20f58: 0x6c5e2620,\n\t0x20f63: 0x6c4c4c20,\n\t0x20f66: 0x6d2e9420,\n\t0x20f6d: 0x6c9d0820,\n\t0x20f70: 0x6c7c5020,\n\t0x20f77: 0x6c352620,\n\t0x20f7f: 0x6d1ab020,\n\t// Block 0x83e, offset 0x20f80\n\t0x20f87: 0x6c836020,\n\t0x20f95: 0x6c462a20,\n\t0x20f9b: 0x6ce6ac20,\n\t0x20f9c: 0x6d10c820, 0x20f9e: 0x6cedf620,\n\t0x20fa3: 0x6c6aa020,\n\t0x20fa8: 0x6d04c220, 0x20faa: 0x6cd5c020,\n\t0x20fb1: 0x6cf08c20,\n\t0x20fb4: 0x6d236620,\n\t// Block 0x83f, offset 0x20fc0\n\t0x20fc1: 0x6d2da620,\n\t0x20fc9: 0x6c01ee20,\n\t0x20fcf: 0x6cca9a20,\n\t0x20fd0: 0x6c1e0c20, 0x20fd2: 0x6c7ae220,\n\t0x20fd6: 0x6c71a020, 0x20fd7: 0x6c4d5220,\n\t0x20fe2: 0x6c9e0420,\n\t0x20fe7: 0x6c4f9420,\n\t0x20fea: 0x6c1d9e20,\n\t0x20fee: 0x6c8d1a20,\n\t0x20ff0: 0x6d3f9620,\n\t// Block 0x840, offset 0x21000\n\t0x21009: 0x6c7d4820,\n\t0x2100c: 0x6d378c20, 0x2100e: 0x6d2f5420,\n\t0x21010: 0x6c2f2e20, 0x21011: 0x6c467420, 0x21012: 0x6d279620, 0x21013: 0x6c27c620,\n\t0x21014: 0x6caada20,\n\t0x2101b: 0x6c0dd820,\n\t0x2101d: 0x6cc47420, 0x2101e: 0x6c14c420,\n\t0x21022: 0x6cc70620, 0x21023: 0x6d19c820,\n\t0x21024: 0x6c14c620, 0x21027: 0x6d361a20,\n\t0x2102a: 0x6c48f820, 0x2102b: 0x6caabe20,\n\t0x2102c: 0x6ccfe420, 0x2102f: 0x6cdac620,\n\t0x21032: 0x6cf2b820, 0x21033: 0x6c1bb220,\n\t0x2103a: 0x6c9ee220, 0x2103b: 0x6d347e20,\n\t0x2103e: 0x6cb50a20,\n\t// Block 0x841, offset 0x21040\n\t0x21041: 0x6c465820,\n\t0x21046: 0x6c90fa20,\n\t0x21048: 0x6d3ea020,\n\t0x2104d: 0x6c293a20, 0x2104f: 0x6cfc6820,\n\t0x21051: 0x6cc77e20,\n\t0x21057: 0x6caefe20,\n\t0x2105e: 0x6cf56c20,\n\t0x21062: 0x6c7aba20,\n\t0x21064: 0x6c4b2620, 0x21065: 0x6c212e20, 0x21066: 0x6c6baa20,\n\t0x21072: 0x6c6bac20, 0x21073: 0x6cf57820,\n\t0x21075: 0x6c7a1a20, 0x21077: 0x6c46ec20,\n\t0x21078: 0x6d2cac20, 0x21079: 0x6c392620,\n\t0x2107c: 0x6d015a20,\n\t// Block 0x842, offset 0x21080\n\t0x2108d: 0x6c585e20, 0x2108f: 0x6ca79020,\n\t0x21090: 0x6cf85820,\n\t0x2109b: 0x6c240820,\n\t0x2109d: 0x6c4bba20,\n\t0x210a1: 0x6cf5b620,\n\t0x210a7: 0x6cb83620,\n\t0x210aa: 0x6c981c20,\n\t0x210ad: 0x6d303220,\n\t0x210b0: 0x6c734620,\n\t0x210b4: 0x6c0ca020,\n\t// Block 0x843, offset 0x210c0\n\t0x210c0: 0x6c0ca220,\n\t0x210c5: 0x6cc2d620,\n\t0x210cb: 0x6cf88620,\n\t0x210ce: 0x6c68f020,\n\t0x210d0: 0x6cc2ea20, 0x210d1: 0x6d352620, 0x210d2: 0x6ce46820, 0x210d3: 0x6c762a20,\n\t0x210d8: 0x6cca1a20, 0x210db: 0x6d3e4c20,\n\t0x210e3: 0x6c6adc20,\n\t0x210ea: 0x6c0cec20,\n\t0x210ec: 0x6c312c20, 0x210ed: 0x6d417620,\n\t0x210f6: 0x6d0db020,\n\t// Block 0x844, offset 0x21100\n\t0x21101: 0x6c0a1c20,\n\t0x21105: 0x6c7b0020, 0x21107: 0x6d0eb620,\n\t0x21108: 0x6cef3820, 0x2110a: 0x6c583420,\n\t0x2110c: 0x6c506420,\n\t0x21111: 0x6c45b820,\n\t0x21114: 0x6c9b5420, 0x21117: 0x6c82e420,\n\t0x21119: 0x6c2cae20, 0x2111b: 0x6c0e0220,\n\t0x2111c: 0x6c584420, 0x2111f: 0x6cebfe20,\n\t0x21120: 0x6c751420,\n\t0x21128: 0x6c1bda20,\n\t0x2112d: 0x6c030e20, 0x2112e: 0x6c6fa420,\n\t0x21137: 0x6c2c0e20,\n\t0x21139: 0x6d2f1c20, 0x2113b: 0x6c26e620,\n\t0x2113c: 0x6cd23820, 0x2113d: 0x6c501420,\n\t// Block 0x845, offset 0x21140\n\t0x2114c: 0x6d12c020,\n\t0x21157: 0x6c091a20,\n\t0x21158: 0x6cb05020, 0x21159: 0x6d118820,\n\t0x2115c: 0x6c2b1420, 0x2115d: 0x6c11ee20, 0x2115e: 0x6cb20220, 0x2115f: 0x6d268420,\n\t0x21160: 0x6cbc7820, 0x21161: 0x6caf3220,\n\t0x21175: 0x6ceb7020, 0x21176: 0x6d015c20,\n\t0x2117d: 0x6d12cc20,\n\t// Block 0x846, offset 0x21180\n\t0x21180: 0x6c392820, 0x21181: 0x6c484620, 0x21182: 0x6c566e20, 0x21183: 0x6cc7fa20,\n\t0x21189: 0x6cc4b620, 0x2118a: 0x6c3d2020, 0x2118b: 0x6c598020,\n\t0x2119a: 0x6cc79020,\n\t0x211a2: 0x6c993020,\n\t0x211a5: 0x6c32f620, 0x211a6: 0x6c5b9820, 0x211a7: 0x6cf85a20,\n\t0x211a8: 0x6d04bc20, 0x211ab: 0x6cc4b820,\n\t0x211ac: 0x6d13d620, 0x211af: 0x6d303420,\n\t0x211b1: 0x6c61c620, 0x211b2: 0x6c434020, 0x211b3: 0x6d203820,\n\t0x211b5: 0x6cb40620,\n\t// Block 0x847, offset 0x211c0\n\t0x211c8: 0x6c1f2220, 0x211c9: 0x6c240a20, 0x211ca: 0x6d303620, 0x211cb: 0x6ca79220,\n\t0x211cd: 0x6cbca620,\n\t0x211d0: 0x6c13d220, 0x211d2: 0x6ca79420, 0x211d3: 0x6cdbb620,\n\t0x211d9: 0x6c13d420, 0x211da: 0x6c19da20, 0x211db: 0x6d10e020,\n\t0x211dc: 0x6c324820, 0x211dd: 0x6cedc820, 0x211df: 0x6ca76220,\n\t0x211e0: 0x6c9c4420,\n\t0x211e6: 0x6caa1620, 0x211e7: 0x6cf87820,\n\t0x211e9: 0x6d109820, 0x211eb: 0x6c14c820,\n\t// Block 0x848, offset 0x21200\n\t0x21218: 0x6d018c20, 0x21219: 0x6c9ed420, 0x2121a: 0x6c796420,\n\t0x2121c: 0x6c243a20, 0x2121e: 0x6cd13620, 0x2121f: 0x6cacb620,\n\t0x21220: 0x6c569c20, 0x21222: 0x6c78b020, 0x21223: 0x6cfcc220,\n\t0x21225: 0x6c53fa20, 0x21226: 0x6cbf2020, 0x21227: 0x6d3f8220,\n\t0x2122a: 0x6c3e7420, 0x2122b: 0x6ca3be20,\n\t0x2122d: 0x6ca69e20, 0x2122f: 0x6c7a7a20,\n\t0x2123e: 0x6ca59820,\n\t// Block 0x849, offset 0x21240\n\t0x2124d: 0x6c439020,\n\t0x21251: 0x6c53fc20, 0x21253: 0x6c002620,\n\t0x21255: 0x6cd1ba20,\n\t0x2125e: 0x6d04d420, 0x2125f: 0x6c230e20,\n\t0x21260: 0x6c684420, 0x21262: 0x6d2c3220, 0x21263: 0x6cfebe20,\n\t0x21264: 0x6c88f820, 0x21265: 0x6cc24820,\n\t0x21268: 0x6ccd4420, 0x21269: 0x6d01c020, 0x2126b: 0x6c461c20,\n\t0x2126c: 0x6c9ed820, 0x2126d: 0x6c148020, 0x2126f: 0x6c371620,\n\t0x21273: 0x6c312220,\n\t// Block 0x84a, offset 0x21280\n\t0x21286: 0x6c79f020,\n\t0x2128a: 0x6ce58a20, 0x2128b: 0x6cd1cc20,\n\t0x2128f: 0x6cca7020,\n\t0x21292: 0x6c491a20,\n\t0x21296: 0x6c505620, 0x21297: 0x6d367c20,\n\t0x21298: 0x6d106620, 0x21299: 0x6ce70020, 0x2129a: 0x6c09ee20,\n\t0x2129c: 0x6ca06420, 0x2129e: 0x6c3ebe20,\n\t0x212a5: 0x6cbb1420,\n\t0x212b9: 0x6d367e20,\n\t0x212bc: 0x6cd9ca20, 0x212bf: 0x6ca7a020,\n\t// Block 0x84b, offset 0x212c0\n\t0x212c0: 0x6c738020, 0x212c2: 0x6d105620,\n\t0x212c4: 0x6c599e20,\n\t0x212c8: 0x6c080020, 0x212c9: 0x6ca06620, 0x212ca: 0x6c176a20,\n\t0x212ce: 0x6c93a420, 0x212cf: 0x6cce8220,\n\t0x212d0: 0x6c104220, 0x212d1: 0x6d2b8820, 0x212d2: 0x6cd81020,\n\t0x212d4: 0x6d41c420, 0x212d5: 0x6d265620, 0x212d6: 0x6d294c20, 0x212d7: 0x6c948e20,\n\t0x212e5: 0x6cc1b020,\n\t0x212fa: 0x6c9e9820,\n\t// Block 0x84c, offset 0x21300\n\t0x21300: 0x6d3bd820,\n\t0x21308: 0x6c297e20, 0x2130a: 0x6d250a20,\n\t0x21312: 0x6c71d220,\n\t0x21315: 0x6c5b6020, 0x21316: 0x6cb7d020,\n\t0x21318: 0x6d285220, 0x2131a: 0x6c97fe20,\n\t0x2131c: 0x6ca0aa20,\n\t0x21331: 0x6cb16220, 0x21333: 0x6c6d4a20,\n\t0x21339: 0x6d10b820,\n\t// Block 0x84d, offset 0x21340\n\t0x21340: 0x6c1c6820, 0x21341: 0x6ca6c620, 0x21342: 0x6cd9de20,\n\t0x21348: 0x6cd61a20, 0x2134b: 0x6cb16420,\n\t0x21354: 0x6c4f1620,\n\t0x21360: 0x6d10be20, 0x21362: 0x6ca56020,\n\t0x2136a: 0x6cd3f020,\n\t0x2136c: 0x6d251820, 0x2136e: 0x6c114c20, 0x2136f: 0x6c6b5220,\n\t0x21379: 0x6d023e20,\n\t0x2137d: 0x6d0cec20, 0x2137e: 0x6cff3620,\n\t// Block 0x84e, offset 0x21380\n\t0x2138b: 0x6d025020,\n\t0x2138c: 0x6c86ec20, 0x2138e: 0x6c397620,\n\t0x21397: 0x6d3b3c20,\n\t0x21399: 0x6ca37220, 0x2139b: 0x6d3bb620,\n\t0x2139e: 0x6c7c4c20,\n\t0x213a2: 0x6c957020,\n\t0x213ab: 0x6cb83220,\n\t0x213b6: 0x6ceca820,\n\t0x213bd: 0x6cd54c20, 0x213bf: 0x6c1a7c20,\n\t// Block 0x84f, offset 0x213c0\n\t0x213c1: 0x6d164620,\n\t0x213c6: 0x6c500820,\n\t0x213c8: 0x6c698220, 0x213cb: 0x6c5b8e20,\n\t0x213cd: 0x6cffce20, 0x213ce: 0x6c222020,\n\t0x213de: 0x6c61a220,\n\t0x213e6: 0x6ca62e20,\n\t0x213e8: 0x6ca63420, 0x213e9: 0x6ce3bc20,\n\t0x213f6: 0x6c724820,\n\t0x213f8: 0x6ca04220,\n\t0x213fd: 0x6c83d220, 0x213ff: 0x6d382c20,\n\t// Block 0x850, offset 0x21400\n\t0x21401: 0x6d06d420, 0x21403: 0x6cbf3820,\n\t0x21404: 0x6c3e9620, 0x21406: 0x6c0d7e20,\n\t0x2140a: 0x6c621620,\n\t0x2140d: 0x6cb5f420, 0x2140e: 0x6cf89c20,\n\t0x21414: 0x6c2ada20, 0x21415: 0x6c376020,\n\t0x2141b: 0x6cd53220,\n\t0x2141c: 0x6ce77820, 0x2141d: 0x6cff9620, 0x2141f: 0x6cb01c20,\n\t0x21428: 0x6c284020, 0x2142a: 0x6c60da20,\n\t0x21433: 0x6d002020,\n\t0x21437: 0x6c23ca20,\n\t0x2143b: 0x6c0d1c20,\n\t0x2143c: 0x6cc6f020,\n\t// Block 0x851, offset 0x21440\n\t0x2144d: 0x6c9e4a20,\n\t0x21452: 0x6c9e4c20,\n\t0x21454: 0x6cd49c20, 0x21455: 0x6cff6c20, 0x21456: 0x6c05e420, 0x21457: 0x6cec2220,\n\t0x21459: 0x6cad8020,\n\t0x21463: 0x6c410e20,\n\t0x21465: 0x6c549c20, 0x21466: 0x6c525420,\n\t0x21468: 0x6d39f220, 0x21469: 0x6c48c420,\n\t0x2146d: 0x6c4b3820,\n\t0x21479: 0x6c273e20,\n\t0x2147c: 0x6c0d2820, 0x2147d: 0x6c5a4420,\n\t// Block 0x852, offset 0x21480\n\t0x21480: 0x6c13d620,\n\t0x21484: 0x6cfa3420, 0x21485: 0x6c710220, 0x21487: 0x6d119a20,\n\t0x21496: 0x6c3bb620, 0x21497: 0x6d2a7420,\n\t0x2149b: 0x6c3c3020,\n\t0x214a2: 0x6c708020, 0x214a3: 0x6d230a20,\n\t0x214a9: 0x6c5cbe20,\n\t0x214b2: 0x6c6ab020, 0x214b3: 0x6d049020,\n\t0x214b5: 0x6ca3ba20,\n\t0x214bb: 0x6caa1820,\n\t0x214bd: 0x6cd13820, 0x214bf: 0x6d233420,\n\t// Block 0x853, offset 0x214c0\n\t0x214c2: 0x6c587620, 0x214c3: 0x6c450c20,\n\t0x214c4: 0x6ced1620, 0x214c6: 0x6ceb1e20, 0x214c7: 0x6cbb7820,\n\t0x214d8: 0x6d1b5220, 0x214da: 0x6c635e20,\n\t0x214e1: 0x6cdd7220, 0x214e3: 0x6c6ade20,\n\t0x214e4: 0x6cf64020, 0x214e5: 0x6cf25020,\n\t0x214e9: 0x6c986620,\n\t0x214f6: 0x6d0fbe20,\n\t0x214f8: 0x6d110820,\n\t0x214fd: 0x6c986c20, 0x214fe: 0x6cab3e20,\n\t// Block 0x854, offset 0x21500\n\t0x21501: 0x6c017020,\n\t0x21505: 0x6c910c20,\n\t0x21511: 0x6c366e20, 0x21512: 0x6d3f1e20,\n\t0x21517: 0x6c367020,\n\t0x21519: 0x6c01c820,\n\t0x2151e: 0x6c5de220,\n\t0x21520: 0x6c135220,\n\t0x21530: 0x6d049c20, 0x21531: 0x6c625e20, 0x21533: 0x6d424e20,\n\t0x21535: 0x6cb63620,\n\t0x2153a: 0x6d32ee20,\n\t// Block 0x855, offset 0x21540\n\t0x21540: 0x6c5f2e20, 0x21541: 0x6cb52e20, 0x21542: 0x6c732420, 0x21543: 0x6ca91c20,\n\t0x2155f: 0x6ccb7220,\n\t0x21565: 0x6c51fa20, 0x21566: 0x6cc72c20, 0x21567: 0x6cbdec20,\n\t0x2156c: 0x6c70de20, 0x2156f: 0x6c86ee20,\n\t0x21575: 0x6cd29020,\n\t0x21578: 0x6ca6da20, 0x21579: 0x6cfbc420, 0x2157a: 0x6c3dbc20,\n\t0x2157d: 0x6cc80820,\n\t// Block 0x856, offset 0x21580\n\t0x21581: 0x6d04ac20, 0x21582: 0x6c4ba220,\n\t0x21584: 0x6c62e020, 0x21586: 0x6c9bf820, 0x21587: 0x6c3dc020,\n\t0x21589: 0x6cc9ee20, 0x2158a: 0x6d247820, 0x2158b: 0x6c69de20,\n\t0x2158c: 0x6c9c2220, 0x2158d: 0x6c900e20, 0x2158e: 0x6cbb0020,\n\t0x21590: 0x6c9cc620, 0x21593: 0x6d15a420,\n\t0x21596: 0x6c4dc620, 0x21597: 0x6ca6e620,\n\t0x21598: 0x6c81ee20, 0x21599: 0x6ccbbe20,\n\t0x2159c: 0x6c8c4220, 0x2159e: 0x6d22c220,\n\t0x215a5: 0x6caab020,\n\t0x215ab: 0x6cf4c020,\n\t0x215af: 0x6c0b3620,\n\t0x215b2: 0x6c0b3820, 0x215b3: 0x6d079620,\n\t0x215b5: 0x6c649620,\n\t0x215b8: 0x6c0b3c20,\n\t// Block 0x857, offset 0x215c0\n\t0x215c2: 0x6c2a7a20,\n\t0x215c7: 0x6d3b8620,\n\t0x215cb: 0x6cc72020,\n\t0x215d0: 0x6cd69820,\n\t0x215d8: 0x6c631820, 0x215db: 0x6c5b4a20,\n\t0x215de: 0x6d2d5c20,\n\t0x215e2: 0x6c042e20, 0x215e3: 0x6c8ac420,\n\t0x215e5: 0x6d003820,\n\t0x215ed: 0x6c656c20, 0x215ee: 0x6cd44020,\n\t0x215f3: 0x6c77ba20,\n\t0x215f7: 0x6c490c20,\n\t0x215f8: 0x6c949420,\n\t0x215fe: 0x6caa1a20, 0x215ff: 0x6c16e820,\n\t// Block 0x858, offset 0x21600\n\t0x2160e: 0x6c895220,\n\t0x21619: 0x6ca3c620, 0x2161a: 0x6cc80020,\n\t0x2161e: 0x6d368020,\n\t0x21626: 0x6c128620,\n\t0x21630: 0x6c867420,\n\t0x2163b: 0x6c7fcc20,\n\t0x2163f: 0x6c14e220,\n\t// Block 0x859, offset 0x21640\n\t0x21641: 0x6cedba20,\n\t0x21644: 0x6c856620, 0x21647: 0x6cf49620,\n\t0x21648: 0x6cad4220, 0x21649: 0x6d200a20, 0x2164b: 0x6c415e20,\n\t0x2164f: 0x6c011420,\n\t0x21650: 0x6d04b420, 0x21651: 0x6cd70420, 0x21652: 0x6cc8aa20,\n\t0x21658: 0x6c04b620, 0x21659: 0x6d1eea20,\n\t0x21662: 0x6c5d6e20,\n\t0x21665: 0x6c5a9c20,\n\t0x21668: 0x6d428c20, 0x21669: 0x6cfe9820, 0x2166b: 0x6c9dba20,\n\t0x21670: 0x6c40d620, 0x21671: 0x6d25e220, 0x21673: 0x6c0ff020,\n\t0x21674: 0x6c17ba20, 0x21675: 0x6ce9e220, 0x21677: 0x6c0ff220,\n\t0x2167d: 0x6c40d820, 0x2167f: 0x6ce55820,\n\t// Block 0x85a, offset 0x21680\n\t0x21680: 0x6ca2dc20,\n\t0x21685: 0x6c556a20, 0x21686: 0x6ca83c20,\n\t0x2168b: 0x6c5b3e20,\n\t0x2168c: 0x6c90ea20, 0x2168e: 0x6ce35020,\n\t0x21690: 0x6cbc5420, 0x21691: 0x6cbbee20, 0x21692: 0x6d380620,\n\t0x21696: 0x6c2b4220,\n\t0x2169a: 0x6c8bd820,\n\t0x2169d: 0x6cc32c20, 0x2169e: 0x6d3b9a20,\n\t0x216a0: 0x6c828e20, 0x216a2: 0x6d013620,\n\t0x216a5: 0x6cc56220,\n\t0x216a8: 0x6c28f620, 0x216aa: 0x6c316020, 0x216ab: 0x6ca71420,\n\t0x216af: 0x6cd2ae20,\n\t0x216b2: 0x6cfb2020,\n\t0x216b9: 0x6d343820,\n\t0x216bd: 0x6c008820, 0x216be: 0x6c21f220, 0x216bf: 0x6cb42a20,\n\t// Block 0x85b, offset 0x216c0\n\t0x216c1: 0x6cd2b620,\n\t0x216c5: 0x6cc0de20, 0x216c6: 0x6cd55020, 0x216c7: 0x6c2cbe20,\n\t0x216c9: 0x6cffa420, 0x216ca: 0x6cd70a20,\n\t0x216cc: 0x6c586020,\n\t0x216d0: 0x6d149220, 0x216d1: 0x6c72dc20,\n\t0x216d4: 0x6d34fc20,\n\t0x216dc: 0x6d2f9e20,\n\t0x216e3: 0x6d06a220,\n\t0x216ef: 0x6c905a20,\n\t0x216f1: 0x6d3aca20, 0x216f3: 0x6cdd5620,\n\t0x216f7: 0x6c2e8020,\n\t0x216fa: 0x6cc18420,\n\t0x216fc: 0x6c78a220, 0x216fd: 0x6c54ba20, 0x216fe: 0x6c708220,\n\t// Block 0x85c, offset 0x21700\n\t0x21700: 0x6cbea420,\n\t0x2170d: 0x6c0dae20,\n\t0x21715: 0x6ce3f220, 0x21717: 0x6c744820,\n\t0x2171a: 0x6cc05a20,\n\t0x21723: 0x6c67e420,\n\t0x2172a: 0x6d282e20,\n\t0x2172d: 0x6c9a9a20, 0x2172e: 0x6caf6e20,\n\t0x21730: 0x6cc1a020,\n\t0x2173c: 0x6c9d5220, 0x2173f: 0x6ce3fe20,\n\t// Block 0x85d, offset 0x21740\n\t0x21742: 0x6c768c20,\n\t0x21744: 0x6c08e820, 0x21746: 0x6cc11c20,\n\t0x2174f: 0x6ce56620,\n\t0x21751: 0x6c1f6c20,\n\t0x21758: 0x6c714a20, 0x2175a: 0x6cf69620,\n\t0x2175e: 0x6c8c5e20,\n\t0x2176d: 0x6c1bca20, 0x2176e: 0x6c5f7e20,\n\t0x21774: 0x6c917a20,\n\t0x21778: 0x6c876220,\n\t0x2177e: 0x6c73c820,\n\t// Block 0x85e, offset 0x21780\n\t0x21785: 0x6d397c20, 0x21786: 0x6c921020,\n\t0x2178e: 0x6ca7f620,\n\t0x21794: 0x6cc2c020,\n\t0x217ad: 0x6d0b6820, 0x217af: 0x6c35c220,\n\t0x217b1: 0x6c564020,\n\t// Block 0x85f, offset 0x217c0\n\t0x217c0: 0x6c982620,\n\t0x217c9: 0x6cf4a020,\n\t0x217cc: 0x6c137620,\n\t0x217d1: 0x6cbd1820, 0x217d2: 0x6c6a6220, 0x217d3: 0x6c52f420,\n\t0x217d5: 0x6c27b620, 0x217d6: 0x6c371c20, 0x217d7: 0x6d2b3a20,\n\t0x217d8: 0x6c565220, 0x217d9: 0x6c020e20, 0x217da: 0x6c6bb220, 0x217db: 0x6c3faa20,\n\t0x217dc: 0x6d1e7020, 0x217de: 0x6c3c1a20,\n\t0x217ec: 0x6ca26620,\n\t0x217f6: 0x6ccb1620, 0x217f7: 0x6c238a20,\n\t0x217fb: 0x6c772220,\n\t// Block 0x860, offset 0x21800\n\t0x21802: 0x6d11ea20, 0x21803: 0x6c008c20,\n\t0x21804: 0x6c05a620, 0x21806: 0x6cb34c20,\n\t0x21808: 0x6cd2b820, 0x21809: 0x6c392a20, 0x2180b: 0x6c70f420,\n\t0x2180c: 0x6cafb420, 0x2180e: 0x6cf07420, 0x2180f: 0x6c7a2220,\n\t0x21810: 0x6cbc8620, 0x21811: 0x6c417220,\n\t0x21822: 0x6c7be220, 0x21823: 0x6cdc2420,\n\t0x21824: 0x6c07d620, 0x21825: 0x6c632820, 0x21826: 0x6d0b8020,\n\t0x2182a: 0x6c76fe20, 0x2182b: 0x6ca7f820,\n\t0x2182d: 0x6d03cc20, 0x2182f: 0x6cf85c20,\n\t0x21831: 0x6c8c4a20, 0x21832: 0x6c347e20,\n\t0x21834: 0x6c159a20,\n\t// Block 0x861, offset 0x21840\n\t0x21848: 0x6cd32e20, 0x2184b: 0x6c334020,\n\t0x2184d: 0x6c675020, 0x2184e: 0x6d222a20, 0x2184f: 0x6c922020,\n\t0x21850: 0x6c372020, 0x21853: 0x6c476420,\n\t0x21855: 0x6cefa020, 0x21856: 0x6c17d620, 0x21857: 0x6c590020,\n\t0x21858: 0x6c0ce220, 0x2185b: 0x6c4e9420,\n\t0x2185c: 0x6ce99e20, 0x2185d: 0x6ca32420, 0x2185e: 0x6cb6e620,\n\t0x21860: 0x6ce7e820, 0x21861: 0x6d24d220, 0x21862: 0x6cede020,\n\t0x21864: 0x6cf3b020, 0x21865: 0x6c434220,\n\t0x21868: 0x6c792e20, 0x2186a: 0x6d14ba20,\n\t0x21878: 0x6cfe9a20, 0x2187a: 0x6c4ae420, 0x2187b: 0x6d0b8c20,\n\t0x2187c: 0x6cdc2e20, 0x2187d: 0x6cd95420, 0x2187f: 0x6d3d3820,\n\t// Block 0x862, offset 0x21880\n\t0x21882: 0x6ce84a20, 0x21883: 0x6cfbf420,\n\t0x21888: 0x6d2b4420, 0x21889: 0x6c85c620,\n\t0x2188c: 0x6d3acc20, 0x2188e: 0x6c6aa220,\n\t0x21891: 0x6ce3e820,\n\t0x21894: 0x6d009c20, 0x21895: 0x6cbf1220, 0x21897: 0x6d0b9420,\n\t0x21898: 0x6c708620, 0x2189b: 0x6d1a5a20,\n\t0x2189c: 0x6d345220, 0x2189e: 0x6c76d020, 0x2189f: 0x6d3e2220,\n\t0x218a1: 0x6c77f420, 0x218a3: 0x6ca81220,\n\t0x218a4: 0x6cbb0620, 0x218a5: 0x6ced0220, 0x218a6: 0x6d2abc20,\n\t0x218a8: 0x6c708820, 0x218aa: 0x6d3f4220,\n\t// Block 0x863, offset 0x218c0\n\t0x218c4: 0x6d0b9620, 0x218c7: 0x6c8bae20,\n\t0x218c9: 0x6cb5c020,\n\t0x218ce: 0x6c5b3420,\n\t0x218d3: 0x6cb77a20,\n\t0x218d5: 0x6d0fa820, 0x218d6: 0x6cdc3620,\n\t0x218d8: 0x6cb6f220, 0x218d9: 0x6c4a5620,\n\t0x218e2: 0x6cbe1020, 0x218e3: 0x6c353e20,\n\t0x218e5: 0x6d429820,\n\t0x218e8: 0x6d2b4820, 0x218e9: 0x6cb77c20, 0x218ea: 0x6c602e20,\n\t0x218ec: 0x6ceb2020, 0x218ed: 0x6c2e9c20, 0x218ef: 0x6c5bbe20,\n\t0x218f0: 0x6c98e420, 0x218f2: 0x6d063e20,\n\t0x218f5: 0x6c53fe20, 0x218f6: 0x6d0d7c20, 0x218f7: 0x6cfdc220,\n\t0x218f8: 0x6c231020, 0x218f9: 0x6c555820,\n\t0x218fc: 0x6c01c020, 0x218fe: 0x6c0de420,\n\t// Block 0x864, offset 0x21900\n\t0x21907: 0x6c348e20,\n\t0x21910: 0x6d3a6a20, 0x21911: 0x6c2e9e20, 0x21912: 0x6d1ea220, 0x21913: 0x6cb6fa20,\n\t0x21914: 0x6cd26820, 0x21915: 0x6d099a20, 0x21916: 0x6d1ea420, 0x21917: 0x6c76ae20,\n\t0x21918: 0x6cbc2420, 0x2191b: 0x6cbab620,\n\t0x2191c: 0x6cae3e20, 0x2191f: 0x6cc2ee20,\n\t0x21921: 0x6d1c6e20,\n\t0x21927: 0x6ccbf220,\n\t0x2192b: 0x6ce1d020,\n\t0x2192d: 0x6c53c020, 0x2192e: 0x6cb06220, 0x2192f: 0x6d110a20,\n\t0x21934: 0x6ce8bc20, 0x21935: 0x6c148220, 0x21937: 0x6cfa3c20,\n\t0x21938: 0x6cb5f620, 0x2193a: 0x6cbf3a20,\n\t0x2193d: 0x6c6d1220,\n\t// Block 0x865, offset 0x21940\n\t0x21948: 0x6d316020,\n\t0x2194c: 0x6d39ae20, 0x2194e: 0x6cf64420,\n\t0x21950: 0x6cf22a20, 0x21951: 0x6d37f820,\n\t0x21955: 0x6cdc4420,\n\t0x21958: 0x6c781020, 0x21959: 0x6c7e0c20, 0x2195a: 0x6c777220,\n\t0x2195d: 0x6c176c20, 0x2195e: 0x6c09f020, 0x2195f: 0x6ca13a20,\n\t0x21960: 0x6d3b1220, 0x21961: 0x6c4edc20, 0x21962: 0x6d227820, 0x21963: 0x6d153220,\n\t0x21964: 0x6c966c20, 0x21967: 0x6cb7aa20,\n\t0x21968: 0x6c4c0020, 0x21969: 0x6c97e420, 0x2196a: 0x6c89f420, 0x2196b: 0x6c8bc020,\n\t0x2196c: 0x6d40c620, 0x2196d: 0x6c82cc20, 0x2196e: 0x6c56b220, 0x2196f: 0x6c209220,\n\t0x21970: 0x6cb7ac20, 0x21971: 0x6c824420,\n\t// Block 0x866, offset 0x21980\n\t0x21981: 0x6c1ac420, 0x21983: 0x6cb33020,\n\t0x21984: 0x6c2eca20,\n\t0x2198a: 0x6c82ce20,\n\t0x2198e: 0x6d160420,\n\t0x21993: 0x6c2d7620,\n\t0x21996: 0x6c33a420, 0x21997: 0x6c42d620,\n\t0x21998: 0x6c54f220, 0x2199a: 0x6cff0020, 0x2199b: 0x6c40ca20,\n\t0x2199c: 0x6cae8020,\n\t0x219ac: 0x6cd06a20,\n\t0x219b1: 0x6cef2a20,\n\t0x219bb: 0x6c335820,\n\t0x219bc: 0x6c177220, 0x219bd: 0x6d1b0420, 0x219be: 0x6c7b3a20, 0x219bf: 0x6c7a6020,\n\t// Block 0x867, offset 0x219c0\n\t0x219c1: 0x6d41ce20, 0x219c2: 0x6c47ca20,\n\t0x219c5: 0x6d285420, 0x219c6: 0x6d36da20,\n\t0x219c9: 0x6c629420, 0x219ca: 0x6c199020,\n\t0x219d6: 0x6d020e20,\n\t0x219db: 0x6d419e20,\n\t0x219dc: 0x6c017420, 0x219dd: 0x6c4fb220,\n\t0x219e0: 0x6cb36020, 0x219e2: 0x6c2b9820, 0x219e3: 0x6d135820,\n\t0x219e7: 0x6ca4c420,\n\t0x219f1: 0x6c6b4220, 0x219f2: 0x6c059220, 0x219f3: 0x6c804020,\n\t0x219f4: 0x6c124820, 0x219f6: 0x6c0a6620,\n\t0x219fb: 0x6d2e1a20,\n\t0x219fc: 0x6cb7e620,\n\t// Block 0x868, offset 0x21a00\n\t0x21a02: 0x6ca4c620,\n\t0x21a05: 0x6c940c20, 0x21a07: 0x6c7c0a20,\n\t0x21a09: 0x6ca08420, 0x21a0b: 0x6c82e620,\n\t0x21a0c: 0x6cad7420,\n\t0x21a12: 0x6c86c420, 0x21a13: 0x6c136420,\n\t0x21a15: 0x6c299820, 0x21a16: 0x6c82e820,\n\t0x21a19: 0x6c36cc20, 0x21a1b: 0x6c086020,\n\t0x21a1c: 0x6c74e820,\n\t0x21a25: 0x6d083420, 0x21a26: 0x6ca89420,\n\t0x21a28: 0x6c4d7c20,\n\t0x21a2e: 0x6cfc4220,\n\t0x21a30: 0x6c661620, 0x21a31: 0x6c9c9e20, 0x21a32: 0x6ca8a020,\n\t0x21a3b: 0x6c124a20,\n\t0x21a3c: 0x6cd97820, 0x21a3d: 0x6d2ba820, 0x21a3e: 0x6d194220,\n\t// Block 0x869, offset 0x21a40\n\t0x21a42: 0x6c1d3020,\n\t0x21a44: 0x6c125020,\n\t0x21a49: 0x6c830620, 0x21a4a: 0x6caad220, 0x21a4b: 0x6c876420,\n\t0x21a4e: 0x6c84ba20, 0x21a4f: 0x6c957220,\n\t0x21a53: 0x6ce18a20,\n\t0x21a56: 0x6ca8c420, 0x21a57: 0x6ca8c620,\n\t0x21a59: 0x6c5fae20, 0x21a5b: 0x6c831220,\n\t0x21a5d: 0x6ca48020,\n\t0x21a60: 0x6c8c1420, 0x21a61: 0x6c8dce20,\n\t0x21a64: 0x6cfbe220, 0x21a65: 0x6d24a820, 0x21a67: 0x6d28ec20,\n\t0x21a68: 0x6cc34a20, 0x21a69: 0x6c8ac020,\n\t0x21a6f: 0x6d22ce20,\n\t0x21a70: 0x6c597620,\n\t0x21a7a: 0x6ca4de20,\n\t0x21a7c: 0x6d0a7820, 0x21a7e: 0x6c711020, 0x21a7f: 0x6c5dbc20,\n\t// Block 0x86a, offset 0x21a80\n\t0x21a81: 0x6d179420,\n\t0x21a8a: 0x6cf71420, 0x21a8b: 0x6ccb8a20,\n\t0x21a8c: 0x6c697020, 0x21a8d: 0x6d1de020,\n\t0x21a95: 0x6cd18c20, 0x21a96: 0x6c6d8420, 0x21a97: 0x6ced6e20,\n\t0x21a98: 0x6d129e20, 0x21a99: 0x6c6f4420,\n\t0x21a9c: 0x6c45d020,\n\t0x21aa1: 0x6c5aa020,\n\t0x21aaa: 0x6c37a420,\n\t0x21ab5: 0x6c4e7a20,\n\t0x21abc: 0x6c3e3020,\n\t// Block 0x86b, offset 0x21ac0\n\t0x21ac0: 0x6c3e4a20, 0x21ac1: 0x6d3d4a20, 0x21ac2: 0x6c5eb620,\n\t0x21acf: 0x6c053a20,\n\t0x21ad2: 0x6cb56620, 0x21ad3: 0x6cd2a620,\n\t0x21ad5: 0x6c2df420, 0x21ad6: 0x6cadfa20, 0x21ad7: 0x6cfbe420,\n\t0x21ad8: 0x6cc9f620,\n\t0x21add: 0x6c169220, 0x21ade: 0x6d264620,\n\t0x21ae0: 0x6c455820, 0x21ae2: 0x6cf34220,\n\t0x21ae4: 0x6c3b0a20, 0x21ae7: 0x6c159020,\n\t0x21ae9: 0x6ca58420, 0x21aea: 0x6c73d820,\n\t0x21aec: 0x6d2f8220, 0x21aee: 0x6cb96c20,\n\t0x21af1: 0x6c029820,\n\t0x21af6: 0x6cedf820, 0x21af7: 0x6d379020,\n\t0x21af9: 0x6c597820, 0x21afb: 0x6c106620,\n\t0x21afc: 0x6d3a5a20, 0x21afd: 0x6c092e20, 0x21afe: 0x6c173620, 0x21aff: 0x6d328620,\n\t// Block 0x86c, offset 0x21b00\n\t0x21b00: 0x6c3de620, 0x21b01: 0x6c79b820, 0x21b03: 0x6d422c20,\n\t0x21b04: 0x6d086c20, 0x21b06: 0x6c3fb220,\n\t0x21b0a: 0x6d118a20,\n\t0x21b0d: 0x6c0e4e20, 0x21b0f: 0x6c06e220,\n\t0x21b10: 0x6d007c20, 0x21b11: 0x6cd33020, 0x21b12: 0x6d149620,\n\t0x21b14: 0x6c531020, 0x21b15: 0x6c251c20, 0x21b17: 0x6d16e620,\n\t0x21b18: 0x6d3b7620,\n\t0x21b1d: 0x6c1bf620,\n\t0x21b24: 0x6cb2fe20,\n\t0x21b28: 0x6d1a3a20,\n\t0x21b31: 0x6d260a20,\n\t0x21b36: 0x6c6edc20,\n\t0x21b39: 0x6c995c20, 0x21b3a: 0x6cba4820,\n\t0x21b3c: 0x6d172420,\n\t// Block 0x86d, offset 0x21b40\n\t0x21b40: 0x6cf3b220,\n\t0x21b4d: 0x6c069820, 0x21b4e: 0x6c5dbe20, 0x21b4f: 0x6c239420,\n\t0x21b50: 0x6c797220,\n\t0x21b55: 0x6cde4820, 0x21b57: 0x6c4ea620,\n\t0x21b58: 0x6cba4e20,\n\t0x21b5c: 0x6d345420,\n\t0x21b62: 0x6ccb2420,\n\t0x21b65: 0x6cb8d620, 0x21b66: 0x6c4cb420,\n\t0x21b69: 0x6c4bbe20,\n\t0x21b6c: 0x6c649820, 0x21b6d: 0x6d37b820, 0x21b6e: 0x6c9e2220, 0x21b6f: 0x6c4afa20,\n\t0x21b70: 0x6cd37e20, 0x21b71: 0x6ca1d220, 0x21b72: 0x6c363220, 0x21b73: 0x6c039e20,\n\t0x21b74: 0x6c7e7220,\n\t0x21b78: 0x6d392820, 0x21b7a: 0x6c603020,\n\t// Block 0x86e, offset 0x21b80\n\t0x21b80: 0x6d2a4a20,\n\t0x21b84: 0x6d2bd820, 0x21b85: 0x6d179820, 0x21b87: 0x6c468420,\n\t0x21b8a: 0x6c4a6e20, 0x21b8b: 0x6d1bc420,\n\t0x21b8c: 0x6ccc9820, 0x21b8d: 0x6c513420, 0x21b8e: 0x6c057820, 0x21b8f: 0x6ca12a20,\n\t0x21b90: 0x6c9b1e20, 0x21b93: 0x6cf4fe20,\n\t0x21b94: 0x6c277620, 0x21b97: 0x6c6f1620,\n\t0x21b9c: 0x6c4ed020, 0x21b9f: 0x6ce70220,\n\t0x21ba0: 0x6c79be20, 0x21ba1: 0x6c841220, 0x21ba2: 0x6d368220, 0x21ba3: 0x6c5bf420,\n\t0x21ba4: 0x6d296e20, 0x21ba6: 0x6c2dfc20, 0x21ba7: 0x6c244420,\n\t0x21bb1: 0x6d368420, 0x21bb3: 0x6c7adc20,\n\t0x21bb5: 0x6cfe4a20, 0x21bb6: 0x6c57ba20, 0x21bb7: 0x6c8a0c20,\n\t0x21bb8: 0x6c255620, 0x21bb9: 0x6cbb9a20, 0x21bba: 0x6c692420,\n\t0x21bbc: 0x6d05d020, 0x21bbd: 0x6c37da20, 0x21bbf: 0x6cead020,\n\t// Block 0x86f, offset 0x21bc0\n\t0x21bc0: 0x6ce00020, 0x21bc1: 0x6d36a820,\n\t0x21bc8: 0x6ca51020, 0x21bc9: 0x6c99ac20, 0x21bca: 0x6c2c8c20, 0x21bcb: 0x6c135820,\n\t0x21bce: 0x6c693a20, 0x21bcf: 0x6c884820,\n\t0x21bd1: 0x6ccc1820, 0x21bd2: 0x6c28aa20,\n\t0x21bd5: 0x6cdc6c20, 0x21bd6: 0x6c884a20, 0x21bd7: 0x6c4cf020,\n\t0x21bda: 0x6c0c7c20,\n\t0x21bdc: 0x6c22e220, 0x21bdd: 0x6c2d7e20, 0x21bde: 0x6c93fc20, 0x21bdf: 0x6ca64e20,\n\t0x21be0: 0x6d0dda20, 0x21be1: 0x6c7fbc20,\n\t0x21be4: 0x6c415620, 0x21be5: 0x6c1eb420,\n\t0x21be9: 0x6c0a8820, 0x21bea: 0x6d40ea20, 0x21beb: 0x6c5c6620,\n\t0x21bed: 0x6c7f4220, 0x21bee: 0x6cfbba20, 0x21bef: 0x6c3bfc20,\n\t0x21bf0: 0x6c520220,\n\t0x21bf9: 0x6d124020, 0x21bfa: 0x6d2e3220,\n\t0x21bfc: 0x6ca56620, 0x21bfe: 0x6c95d020,\n\t// Block 0x870, offset 0x21c00\n\t0x21c00: 0x6d25d620, 0x21c02: 0x6ca5ac20,\n\t0x21c09: 0x6cc58220,\n\t0x21c1c: 0x6c43e820, 0x21c1e: 0x6c65a820, 0x21c1f: 0x6cb2b420,\n\t0x21c23: 0x6c0d1620,\n\t0x21c26: 0x6c66d020,\n\t0x21c29: 0x6c0e2e20,\n\t0x21c2f: 0x6c9d1820,\n\t0x21c30: 0x6c563420,\n\t0x21c34: 0x6c2df220, 0x21c36: 0x6d1e8c20, 0x21c37: 0x6d108c20,\n\t0x21c38: 0x6c07d020, 0x21c3a: 0x6c189820, 0x21c3b: 0x6c5e8c20,\n\t0x21c3d: 0x6d108e20,\n\t// Block 0x871, offset 0x21c40\n\t0x21c47: 0x6c491020,\n\t0x21c48: 0x6d0e5e20,\n\t0x21c55: 0x6c1bc820, 0x21c57: 0x6ccc3a20,\n\t0x21c58: 0x6d0d3820, 0x21c59: 0x6d165e20, 0x21c5a: 0x6d166020, 0x21c5b: 0x6c17fc20,\n\t0x21c5e: 0x6c4e8220, 0x21c5f: 0x6c597420,\n\t0x21c64: 0x6cd71020, 0x21c65: 0x6cdc2220, 0x21c66: 0x6cc56820, 0x21c67: 0x6cdfcc20,\n\t0x21c68: 0x6d34e420, 0x21c6a: 0x6c391e20, 0x21c6b: 0x6c3cc620,\n\t0x21c70: 0x6cdfce20, 0x21c72: 0x6c9c3620, 0x21c73: 0x6cafb620,\n\t0x21c74: 0x6c106820, 0x21c75: 0x6ca30e20, 0x21c76: 0x6ce48220, 0x21c77: 0x6c036620,\n\t0x21c78: 0x6d16b020,\n\t// Block 0x872, offset 0x21c80\n\t0x21c82: 0x6d0d4820,\n\t0x21c84: 0x6ce54c20, 0x21c86: 0x6d10ce20, 0x21c87: 0x6cd04c20,\n\t0x21c88: 0x6c77dc20, 0x21c89: 0x6ce72420, 0x21c8b: 0x6d084420,\n\t0x21c93: 0x6d202820,\n\t0x21c95: 0x6c043a20,\n\t0x21c99: 0x6cf9a220, 0x21c9a: 0x6c938420, 0x21c9b: 0x6c7dce20,\n\t0x21c9c: 0x6d29d220, 0x21c9d: 0x6cc02c20,\n\t0x21ca0: 0x6c243020, 0x21ca1: 0x6d416a20, 0x21ca2: 0x6c90e020,\n\t0x21ca4: 0x6cf9a420,\n\t0x21caf: 0x6ccfca20,\n\t0x21cb2: 0x6cb43020,\n\t0x21cb4: 0x6c6da620, 0x21cb5: 0x6cbaae20, 0x21cb6: 0x6d175820,\n\t0x21cb8: 0x6ca81420, 0x21cb9: 0x6c32fc20, 0x21cbb: 0x6c6ab420,\n\t0x21cbc: 0x6cdc3820, 0x21cbd: 0x6d2e5820, 0x21cbe: 0x6c23e420,\n\t// Block 0x873, offset 0x21cc0\n\t0x21cc1: 0x6c07e420, 0x21cc2: 0x6c491220, 0x21cc3: 0x6ccf2a20,\n\t0x21cc5: 0x6c6cfe20, 0x21cc6: 0x6c2c3e20,\n\t0x21cd1: 0x6c27d220, 0x21cd3: 0x6ca3a220,\n\t0x21cd5: 0x6ca9fc20, 0x21cd7: 0x6c601820,\n\t0x21cd8: 0x6d0c8220, 0x21cda: 0x6caa2020,\n\t0x21cdc: 0x6c325a20, 0x21cdd: 0x6cf09020, 0x21cde: 0x6cb0f420,\n\t0x21ce2: 0x6c555a20,\n\t0x21ce4: 0x6c644020, 0x21ce5: 0x6d12ee20, 0x21ce6: 0x6c759220, 0x21ce7: 0x6c7f9c20,\n\t0x21ce8: 0x6c7e7420, 0x21ce9: 0x6d19de20,\n\t0x21ced: 0x6ce9a220,\n\t0x21cf5: 0x6ca4f620,\n\t0x21cfa: 0x6d411c20,\n\t0x21cff: 0x6c96c220,\n\t// Block 0x874, offset 0x21d00\n\t0x21d00: 0x6cd7f020, 0x21d01: 0x6d365420,\n\t0x21d04: 0x6c5ac020, 0x21d05: 0x6d3c8e20, 0x21d07: 0x6c5bd820,\n\t0x21d0d: 0x6c1e8c20, 0x21d0f: 0x6c182420,\n\t0x21d12: 0x6d04da20, 0x21d13: 0x6c7fa220,\n\t0x21d15: 0x6c232620, 0x21d16: 0x6cd0bc20, 0x21d17: 0x6ca13c20,\n\t0x21d18: 0x6d140220, 0x21d19: 0x6d111a20, 0x21d1a: 0x6cf7fa20, 0x21d1b: 0x6d419020,\n\t0x21d1c: 0x6c0e2820,\n\t0x21d27: 0x6d216c20,\n\t0x21d29: 0x6c927e20,\n\t0x21d2e: 0x6ce9b620, 0x21d2f: 0x6ceffe20,\n\t0x21d31: 0x6c3b8820, 0x21d32: 0x6cd06c20,\n\t0x21d3b: 0x6c8a0e20,\n\t// Block 0x875, offset 0x21d40\n\t0x21d42: 0x6cd56a20, 0x21d43: 0x6c284220,\n\t0x21d44: 0x6c732620, 0x21d45: 0x6d21a020, 0x21d46: 0x6d034a20, 0x21d47: 0x6d114220,\n\t0x21d48: 0x6cda5820,\n\t0x21d52: 0x6c5d8020,\n\t0x21d54: 0x6cb92220,\n\t0x21d5a: 0x6c967c20,\n\t0x21d5d: 0x6c767020,\n\t0x21d61: 0x6c91e620, 0x21d63: 0x6d1ebc20,\n\t0x21d6e: 0x6cfd2e20,\n\t0x21d79: 0x6cf40620, 0x21d7b: 0x6d1b2020,\n\t0x21d7c: 0x6cf72c20, 0x21d7f: 0x6d2d0820,\n\t// Block 0x876, offset 0x21d80\n\t0x21d80: 0x6d027020,\n\t0x21d84: 0x6cc1fa20,\n\t0x21d88: 0x6c84be20,\n\t0x21d8d: 0x6cb95820,\n\t0x21d94: 0x6c8dd020, 0x21d95: 0x6c947820,\n\t0x21d9a: 0x6c14b220,\n\t0x21da6: 0x6d334420,\n\t0x21da8: 0x6d0c8420,\n\t0x21db2: 0x6d1b3820, 0x21db3: 0x6c7c5c20,\n\t0x21db7: 0x6cc0d220,\n\t0x21db9: 0x6c3dd820, 0x21dbb: 0x6d22d420,\n\t// Block 0x877, offset 0x21dc0\n\t0x21dc1: 0x6cb57e20,\n\t0x21dc6: 0x6cb75620, 0x21dc7: 0x6c61a620,\n\t0x21dc8: 0x6d24ce20,\n\t0x21dce: 0x6c434420, 0x21dcf: 0x6c734820,\n\t0x21dd1: 0x6cb5a020, 0x21dd3: 0x6c411020,\n\t0x21dd5: 0x6cc37220,\n\t0x21dda: 0x6cf09220,\n\t0x21de7: 0x6d368620,\n\t0x21deb: 0x6c65ba20,\n\t0x21ded: 0x6cd8d620,\n\t0x21df0: 0x6d188c20, 0x21df1: 0x6cb91c20,\n\t0x21dfc: 0x6c856220, 0x21dff: 0x6d29ce20,\n\t// Block 0x878, offset 0x21e00\n\t0x21e00: 0x6d168020, 0x21e02: 0x6c110620, 0x21e03: 0x6d168220,\n\t0x21e04: 0x6c437220, 0x21e06: 0x6c2e6e20,\n\t0x21e08: 0x6d33a420, 0x21e09: 0x6d16ec20, 0x21e0b: 0x6d28fa20,\n\t0x21e0c: 0x6c275220, 0x21e0e: 0x6cdab220,\n\t0x21e14: 0x6c6b4420, 0x21e15: 0x6c193820, 0x21e16: 0x6cc1fc20,\n\t0x21e18: 0x6c4e7820, 0x21e19: 0x6cfb1e20,\n\t0x21e20: 0x6cc2ae20, 0x21e21: 0x6c6a5620,\n\t0x21e25: 0x6c733820,\n\t0x21e2a: 0x6c285c20,\n\t0x21e2d: 0x6c6c2420,\n\t0x21e34: 0x6c0da820, 0x21e35: 0x6c551a20,\n\t0x21e39: 0x6c73da20, 0x21e3b: 0x6d20b020,\n\t// Block 0x879, offset 0x21e40\n\t0x21e43: 0x6c84fa20,\n\t0x21e44: 0x6cbb0420, 0x21e45: 0x6cd70620, 0x21e46: 0x6c7a2420,\n\t0x21e48: 0x6d31b620,\n\t0x21e4d: 0x6c3de820, 0x21e4e: 0x6ccfac20,\n\t0x21e52: 0x6c20c020,\n\t0x21e55: 0x6ce72620, 0x21e57: 0x6d16ee20,\n\t0x21e59: 0x6d0f9220,\n\t0x21e5c: 0x6ceafa20, 0x21e5d: 0x6d385e20, 0x21e5e: 0x6c5ff220,\n\t0x21e64: 0x6d0a7a20, 0x21e66: 0x6cd05220, 0x21e67: 0x6d078820,\n\t0x21e6d: 0x6c8e4820, 0x21e6e: 0x6d24dc20, 0x21e6f: 0x6c554220,\n\t0x21e70: 0x6d334820, 0x21e73: 0x6cae6620,\n\t0x21e77: 0x6c742220,\n\t// Block 0x87a, offset 0x21e80\n\t0x21e82: 0x6d362020, 0x21e83: 0x6cb0f620,\n\t0x21e84: 0x6d261820, 0x21e86: 0x6c649a20,\n\t0x21e8a: 0x6cad0220,\n\t0x21e8e: 0x6d3bca20,\n\t0x21e90: 0x6cfb6e20, 0x21e92: 0x6c080220,\n\t0x21e94: 0x6c232820, 0x21e96: 0x6ca13e20,\n\t0x21e9a: 0x6c4c7420,\n\t0x21e9e: 0x6c1a3420, 0x21e9f: 0x6cbb9c20,\n\t0x21ea6: 0x6c0a4a20,\n\t0x21ea9: 0x6cbb4820, 0x21eab: 0x6d38aa20,\n\t0x21eb2: 0x6c38d020, 0x21eb3: 0x6c0cc420,\n\t0x21ebe: 0x6c0fa020, 0x21ebf: 0x6cc73220,\n\t// Block 0x87b, offset 0x21ec0\n\t0x21ec5: 0x6c2f8820, 0x21ec6: 0x6cc32e20, 0x21ec7: 0x6c703c20,\n\t0x21ec8: 0x6d117420,\n\t0x21ed3: 0x6cf98620,\n\t0x21ed6: 0x6d2a3e20,\n\t0x21edd: 0x6c27c820, 0x21edf: 0x6cf44420,\n\t0x21ee0: 0x6ceb1420, 0x21ee2: 0x6c54c820,\n\t0x21ee7: 0x6cf64620,\n\t0x21eec: 0x6c7f1a20, 0x21eee: 0x6c3a1620,\n\t0x21ef9: 0x6c55ec20,\n\t// Block 0x87c, offset 0x21f00\n\t0x21f06: 0x6cfa7220,\n\t0x21f09: 0x6ccd2c20,\n\t0x21f0d: 0x6c3a8420,\n\t0x21f10: 0x6c261820, 0x21f12: 0x6c3e3220,\n\t0x21f14: 0x6c1f3020,\n\t0x21f1d: 0x6c2fd020, 0x21f1e: 0x6c807020,\n\t0x21f29: 0x6cf7fc20,\n\t0x21f2f: 0x6c0c1420,\n\t0x21f30: 0x6d23e820, 0x21f31: 0x6cdc6e20, 0x21f32: 0x6cf80c20,\n\t0x21f37: 0x6cb3e620,\n\t0x21f3e: 0x6c697c20,\n\t// Block 0x87d, offset 0x21f40\n\t0x21f40: 0x6d166420, 0x21f43: 0x6cecb820,\n\t0x21f44: 0x6c611e20, 0x21f46: 0x6cecc620, 0x21f47: 0x6ce9f220,\n\t0x21f4b: 0x6c021020,\n\t0x21f4d: 0x6ce45820, 0x21f4e: 0x6c1b0020,\n\t0x21f52: 0x6cc46220,\n\t0x21f54: 0x6cc96820, 0x21f55: 0x6d1a2c20, 0x21f56: 0x6caf3420, 0x21f57: 0x6c228e20,\n\t0x21f58: 0x6ce71a20, 0x21f59: 0x6d1ace20,\n\t0x21f5c: 0x6c43c820, 0x21f5d: 0x6ce55020, 0x21f5e: 0x6d329620, 0x21f5f: 0x6d390c20,\n\t0x21f61: 0x6d149820, 0x21f62: 0x6c7ae420, 0x21f63: 0x6cd90c20,\n\t0x21f67: 0x6c2c2820,\n\t0x21f6c: 0x6d008820, 0x21f6e: 0x6cfe9e20, 0x21f6f: 0x6c4a1c20,\n\t0x21f70: 0x6ceb7420, 0x21f71: 0x6c3c3620, 0x21f72: 0x6cf3b420,\n\t0x21f75: 0x6d053220,\n\t0x21f7f: 0x6d1f1620,\n\t// Block 0x87e, offset 0x21f80\n\t0x21f81: 0x6c8ce020, 0x21f82: 0x6d0e6020,\n\t0x21f85: 0x6c2ff620, 0x21f86: 0x6cb77e20, 0x21f87: 0x6ce21a20,\n\t0x21f88: 0x6c4dfc20, 0x21f8a: 0x6c1b1c20, 0x21f8b: 0x6cd91820,\n\t0x21f91: 0x6cc35820,\n\t0x21f94: 0x6c4ea820,\n\t0x21f9f: 0x6cc77820,\n\t0x21fa0: 0x6cb78e20, 0x21fa1: 0x6c762c20, 0x21fa2: 0x6d211e20, 0x21fa3: 0x6c139a20,\n\t0x21fa4: 0x6c1a8220, 0x21fa5: 0x6d233a20, 0x21fa7: 0x6c0e2020,\n\t0x21fa9: 0x6c231220, 0x21faa: 0x6d39a420,\n\t0x21fac: 0x6d235420,\n\t0x21fb1: 0x6c744a20, 0x21fb2: 0x6c8f3620, 0x21fb3: 0x6ccab220,\n\t0x21fb4: 0x6d236820,\n\t// Block 0x87f, offset 0x21fc0\n\t0x21fc5: 0x6cd66820,\n\t0x21fcb: 0x6d262020,\n\t0x21fce: 0x6d2eba20,\n\t0x21fd1: 0x6cd66a20, 0x21fd3: 0x6c1ee420,\n\t0x21fd4: 0x6d2ec620, 0x21fd5: 0x6cca2020, 0x21fd6: 0x6cfabe20,\n\t0x21fd8: 0x6c24d820, 0x21fd9: 0x6c9bde20, 0x21fda: 0x6c2b7c20,\n\t0x21fde: 0x6d368820, 0x21fdf: 0x6c02de20,\n\t0x21fe6: 0x6d04e020,\n\t0x21fe8: 0x6cb11e20, 0x21fea: 0x6c69bc20, 0x21feb: 0x6c7b6c20,\n\t0x21fec: 0x6cc98620, 0x21fed: 0x6cfcf420, 0x21fee: 0x6d2cda20, 0x21fef: 0x6c2d7820,\n\t0x21ff7: 0x6d154420,\n\t0x21ffa: 0x6c5c2e20, 0x21ffb: 0x6ccda620,\n\t// Block 0x880, offset 0x22000\n\t0x22004: 0x6c1d2220, 0x22005: 0x6d156220, 0x22006: 0x6d021220, 0x22007: 0x6d36dc20,\n\t0x22008: 0x6ce5e020, 0x2200a: 0x6cb26c20, 0x2200b: 0x6cfbb020,\n\t0x2200e: 0x6cfadc20, 0x2200f: 0x6cdb4c20,\n\t0x22011: 0x6c24a020,\n\t0x22017: 0x6cd97220,\n\t0x2201b: 0x6c522820,\n\t0x2201d: 0x6cfd3a20, 0x2201f: 0x6d1f8e20,\n\t0x22021: 0x6d246420,\n\t0x22024: 0x6cdf5220, 0x22026: 0x6c751820, 0x22027: 0x6ca48220,\n\t0x22029: 0x6c2cba20, 0x2202b: 0x6d164820,\n\t0x2202c: 0x6c090620,\n\t0x22033: 0x6d056220,\n\t0x22034: 0x6d166820, 0x22035: 0x6cc81020, 0x22037: 0x6c455a20,\n\t0x2203a: 0x6d166a20,\n\t0x2203f: 0x6d356e20,\n\t// Block 0x881, offset 0x22040\n\t0x22040: 0x6d02a420, 0x22042: 0x6c617820,\n\t0x22044: 0x6cfa2c20,\n\t0x22048: 0x6d2f4e20, 0x22049: 0x6ca54620, 0x2204a: 0x6d015620,\n\t0x2204e: 0x6d168620,\n\t0x2206b: 0x6c3f3420,\n\t0x2206d: 0x6ccf3420, 0x2206f: 0x6d253c20,\n\t0x22070: 0x6c390420, 0x22072: 0x6c3d3c20, 0x22073: 0x6cf4a820,\n\t0x22074: 0x6cf57c20, 0x22075: 0x6c539c20,\n\t0x22079: 0x6c618220, 0x2207a: 0x6c170420,\n\t0x2207f: 0x6ca0ca20,\n\t// Block 0x882, offset 0x22080\n\t0x22080: 0x6cae0820, 0x22083: 0x6ca20e20,\n\t0x22084: 0x6cc00420, 0x22085: 0x6c994a20, 0x22087: 0x6c268020,\n\t0x22089: 0x6cf98c20, 0x2208a: 0x6ccfae20, 0x2208b: 0x6ce26c20,\n\t0x2208c: 0x6c530220, 0x2208d: 0x6c093620,\n\t0x2209d: 0x6ca62620, 0x2209f: 0x6cbbd220,\n\t0x220a7: 0x6cc84e20,\n\t0x220b8: 0x6c67d820, 0x220b9: 0x6c138420, 0x220ba: 0x6c9ce220,\n\t0x220bd: 0x6d16f020, 0x220bf: 0x6cdd0a20,\n\t// Block 0x883, offset 0x220c0\n\t0x220c1: 0x6cf4c220, 0x220c2: 0x6d078420,\n\t0x220c5: 0x6cf76c20, 0x220c7: 0x6d15d020,\n\t0x220d0: 0x6ca49a20, 0x220d3: 0x6cf07820,\n\t0x220ee: 0x6c770220,\n\t0x220f1: 0x6c906020, 0x220f2: 0x6c938620, 0x220f3: 0x6d3c2a20,\n\t0x220fa: 0x6d35b420,\n\t0x220fc: 0x6d042220, 0x220fe: 0x6c44f820, 0x220ff: 0x6c6ce620,\n\t// Block 0x884, offset 0x22100\n\t0x22100: 0x6cfca420, 0x22101: 0x6c61c820, 0x22102: 0x6c261a20,\n\t0x22104: 0x6c815020, 0x22105: 0x6c3bb820, 0x22106: 0x6c722a20,\n\t0x2210b: 0x6c9eb220,\n\t0x2210c: 0x6cf9a620,\n\t0x22111: 0x6cda8c20,\n\t0x22128: 0x6d35b620, 0x2212a: 0x6c567e20, 0x2212b: 0x6c79e220,\n\t0x2212d: 0x6cdd5820, 0x2212e: 0x6ca68e20,\n\t0x2213a: 0x6ce28c20, 0x2213b: 0x6d3ace20,\n\t// Block 0x885, offset 0x22140\n\t0x22141: 0x6c269820, 0x22143: 0x6cc04420,\n\t0x22144: 0x6d0b9820, 0x22146: 0x6cfb4820,\n\t0x22149: 0x6ca58820,\n\t0x2214d: 0x6d351420, 0x2214e: 0x6c0ce620,\n\t0x22152: 0x6c1d3a20, 0x22153: 0x6c7f9820,\n\t0x22154: 0x6c2ff820, 0x22155: 0x6cc43a20, 0x22156: 0x6cfe2e20,\n\t0x22158: 0x6cff8020, 0x22159: 0x6ced0620, 0x2215a: 0x6cc81420, 0x2215b: 0x6cee5020,\n\t0x2215c: 0x6ca69820, 0x2215e: 0x6c03fe20, 0x2215f: 0x6d0b9a20,\n\t0x22165: 0x6cd7e220, 0x22166: 0x6d1ad820,\n\t0x22168: 0x6d231220,\n\t0x2216e: 0x6c83b820, 0x2216f: 0x6c5dc020,\n\t// Block 0x886, offset 0x22180\n\t0x22197: 0x6c056820,\n\t0x221a3: 0x6cf5e620,\n\t0x221a5: 0x6c6f6a20,\n\t0x221a8: 0x6d01ac20, 0x221a9: 0x6cb8e020, 0x221aa: 0x6caaf820, 0x221ab: 0x6d040020,\n\t0x221ac: 0x6c344e20, 0x221ad: 0x6c614020, 0x221ae: 0x6cf44a20, 0x221af: 0x6ca21220,\n\t0x221b0: 0x6d0e6e20, 0x221b1: 0x6cb79020, 0x221b2: 0x6ca2de20, 0x221b3: 0x6c1c1e20,\n\t0x221b4: 0x6c540220, 0x221b6: 0x6ccaf220,\n\t0x221b8: 0x6ca4aa20, 0x221bb: 0x6c1a7020,\n\t0x221bc: 0x6c1a7220, 0x221bd: 0x6c7cd020, 0x221bf: 0x6c644220,\n\t// Block 0x887, offset 0x221c0\n\t0x221c0: 0x6ce8ac20, 0x221c2: 0x6c319a20,\n\t0x221c5: 0x6cf9c220, 0x221c6: 0x6d382e20, 0x221c7: 0x6c5dcc20,\n\t0x221c8: 0x6c1d1620, 0x221c9: 0x6c26a420,\n\t0x221cc: 0x6c997c20, 0x221cd: 0x6d120620,\n\t0x221d3: 0x6c72f220,\n\t0x221ec: 0x6cd38420, 0x221ef: 0x6d1a6420,\n\t0x221f3: 0x6c478a20,\n\t0x221f4: 0x6cf4ec20,\n\t0x221f8: 0x6c4cee20, 0x221f9: 0x6ce3f620, 0x221fb: 0x6c52a220,\n\t// Block 0x888, offset 0x22200\n\t0x22207: 0x6cc54e20,\n\t0x22209: 0x6d14f420, 0x2220b: 0x6cea7c20,\n\t0x2220f: 0x6cbf3c20,\n\t0x22210: 0x6c4d6e20, 0x22212: 0x6cb79e20,\n\t0x22215: 0x6c5dd820, 0x22216: 0x6ce40020, 0x22217: 0x6caf7020,\n\t0x2221a: 0x6c451020,\n\t0x2221c: 0x6d01c420, 0x2221e: 0x6c9d5620, 0x2221f: 0x6c434c20,\n\t0x22220: 0x6cddf020, 0x22221: 0x6cfdec20, 0x22223: 0x6cd4e620,\n\t0x22226: 0x6c3e9820,\n\t0x2222c: 0x6d3b7e20, 0x2222d: 0x6c8f3820,\n\t// Block 0x889, offset 0x22240\n\t0x22245: 0x6d1f4420,\n\t0x2224a: 0x6c1a7820, 0x2224b: 0x6c330620,\n\t0x22262: 0x6c841420, 0x22263: 0x6d105820,\n\t0x22264: 0x6c841620, 0x22267: 0x6c91c820,\n\t0x22268: 0x6ca24e20, 0x22269: 0x6cdc5220, 0x2226a: 0x6c00b620,\n\t0x2226d: 0x6c79f420, 0x2226f: 0x6d306a20,\n\t0x22270: 0x6c00b820, 0x22271: 0x6ce2a620, 0x22273: 0x6c93ea20,\n\t0x22274: 0x6ce9ac20, 0x22275: 0x6c088020,\n\t0x2227e: 0x6c5bf620, 0x2227f: 0x6c588a20,\n\t// Block 0x88a, offset 0x22280\n\t0x2229b: 0x6c7e0e20,\n\t0x2229d: 0x6d02e020,\n\t0x222a1: 0x6ccaf420,\n\t0x222ab: 0x6cd5f020,\n\t0x222ac: 0x6cc3da20, 0x222ad: 0x6c035620, 0x222ae: 0x6cea0620,\n\t0x222b2: 0x6c403220, 0x222b3: 0x6c0cba20,\n\t0x222b5: 0x6ce17e20, 0x222b7: 0x6cfe4c20,\n\t0x222b9: 0x6cd81420, 0x222ba: 0x6c0f4020,\n\t0x222bc: 0x6c970020, 0x222bd: 0x6c298020, 0x222bf: 0x6c4b6420,\n\t// Block 0x88b, offset 0x222c0\n\t0x222c0: 0x6c522020, 0x222c1: 0x6cf69a20, 0x222c2: 0x6c298220, 0x222c3: 0x6d184e20,\n\t0x222c5: 0x6c088420, 0x222c7: 0x6c472c20,\n\t0x222c8: 0x6c255820, 0x222c9: 0x6ccb4420,\n\t0x222cd: 0x6c441e20, 0x222ce: 0x6d23c220, 0x222cf: 0x6ca2fa20,\n\t0x222d1: 0x6c865620, 0x222d2: 0x6d36ac20,\n\t0x222f0: 0x6d2fd420,\n\t0x222f4: 0x6c5f1220, 0x222f5: 0x6cc87220,\n\t0x222f9: 0x6c1d5820,\n\t// Block 0x88c, offset 0x22300\n\t0x22302: 0x6c6b1820,\n\t0x2230c: 0x6c172020, 0x2230d: 0x6d307a20,\n\t0x22312: 0x6cdb1020, 0x22313: 0x6d1db020,\n\t0x22316: 0x6cb7d420, 0x22317: 0x6d3d9820,\n\t0x2231a: 0x6c769620,\n\t0x2231c: 0x6d133c20, 0x2231e: 0x6cb7d620,\n\t0x22339: 0x6d04a420,\n\t// Block 0x88d, offset 0x22340\n\t0x22349: 0x6d141420, 0x2234a: 0x6c1e3020,\n\t0x2234e: 0x6ce98020, 0x2234f: 0x6c00da20,\n\t0x22350: 0x6cb1f220, 0x22353: 0x6c8b3620,\n\t0x22354: 0x6c9dd820, 0x22355: 0x6c00dc20, 0x22357: 0x6ca0ae20,\n\t0x22358: 0x6cf0e220, 0x22359: 0x6d1d5220, 0x2235a: 0x6ca65020,\n\t0x2235e: 0x6c0f7420,\n\t0x22360: 0x6c8f4620,\n\t0x22373: 0x6cc8e620,\n\t0x2237b: 0x6c936620,\n\t0x2237c: 0x6c140c20, 0x2237f: 0x6c1f8620,\n\t// Block 0x88e, offset 0x22380\n\t0x22381: 0x6ccb0220, 0x22382: 0x6c847020,\n\t0x22384: 0x6cd94620, 0x22386: 0x6c86c620,\n\t0x2238b: 0x6cf90420,\n\t0x2238d: 0x6d0c3e20, 0x2238e: 0x6c25ce20,\n\t0x22390: 0x6c8eb620,\n\t0x22398: 0x6c9b6c20, 0x2239a: 0x6d2e8a20,\n\t0x223a4: 0x6d3c4c20, 0x223a7: 0x6c9ea620,\n\t0x223a9: 0x6c86f220, 0x223ab: 0x6c71da20,\n\t0x223af: 0x6d025220,\n\t0x223b0: 0x6d025420, 0x223b1: 0x6c904220, 0x223b2: 0x6c8fc220,\n\t// Block 0x88f, offset 0x223c0\n\t0x223c2: 0x6ce2c620, 0x223c3: 0x6d3b3820,\n\t0x223cb: 0x6c155220,\n\t0x223cc: 0x6cfc4420, 0x223cf: 0x6d1cc220,\n\t0x223d0: 0x6cae2a20,\n\t0x223d8: 0x6d012220, 0x223da: 0x6c69dc20,\n\t0x223de: 0x6c1cf820,\n\t0x223f3: 0x6c50ae20,\n\t0x223fd: 0x6cea8420,\n\t// Block 0x890, offset 0x22400\n\t0x22405: 0x6c53b220,\n\t0x22408: 0x6c97b020, 0x2240a: 0x6c6c7a20,\n\t0x2240c: 0x6cc17020, 0x2240d: 0x6c30d420, 0x2240e: 0x6cbff820, 0x2240f: 0x6d28ee20,\n\t0x22411: 0x6cd0d420, 0x22412: 0x6d28f020,\n\t0x22415: 0x6d15ba20,\n\t0x2241a: 0x6c578020,\n\t0x2241f: 0x6c76a220,\n\t0x22430: 0x6d268e20, 0x22431: 0x6ca68420, 0x22432: 0x6cd7d620,\n\t0x22434: 0x6cf2aa20,\n\t0x22438: 0x6c118e20, 0x2243a: 0x6c647c20,\n\t0x2243c: 0x6c9ecc20, 0x2243d: 0x6ccea020, 0x2243f: 0x6cc70820,\n\t// Block 0x891, offset 0x22440\n\t0x22440: 0x6c419220,\n\t0x22445: 0x6cbb0a20, 0x22447: 0x6cd52a20,\n\t0x22448: 0x6d3d5820,\n\t0x2244f: 0x6cd1bc20,\n\t0x22451: 0x6ce3f820,\n\t0x22456: 0x6d2c3620, 0x22457: 0x6d2d7e20,\n\t0x2245d: 0x6c3bdc20, 0x2245e: 0x6c9eda20,\n\t0x22460: 0x6d2b5220,\n\t0x22464: 0x6d368a20, 0x22465: 0x6cb90020, 0x22466: 0x6c4ede20, 0x22467: 0x6c440e20,\n\t0x2246e: 0x6c119e20,\n\t0x22470: 0x6c4c7820, 0x22471: 0x6c685e20, 0x22473: 0x6d1da220,\n\t0x22474: 0x6c026820,\n\t0x2247b: 0x6d2c4620,\n\t0x2247d: 0x6cf8c420,\n\t// Block 0x892, offset 0x22480\n\t0x22481: 0x6d05d220, 0x22482: 0x6cf46620,\n\t0x2248f: 0x6c74b820,\n\t0x22490: 0x6c5f2a20, 0x22492: 0x6c1c6a20,\n\t0x22494: 0x6ced5420, 0x22496: 0x6c9ef220, 0x22497: 0x6d2b6420,\n\t0x2249c: 0x6c6b6e20, 0x2249d: 0x6cd29220, 0x2249f: 0x6cf72e20,\n\t0x224a1: 0x6c36e220,\n\t0x224a5: 0x6c564220, 0x224a6: 0x6c564a20,\n\t0x224a8: 0x6c857020, 0x224ab: 0x6c1f0820,\n\t0x224ae: 0x6d13c820, 0x224af: 0x6c992c20,\n\t0x224b0: 0x6d056c20, 0x224b1: 0x6d379820, 0x224b3: 0x6d16b820,\n\t0x224ba: 0x6c89de20,\n\t0x224bf: 0x6c647820,\n\t// Block 0x893, offset 0x224c0\n\t0x224c0: 0x6c656e20, 0x224c1: 0x6c70fa20,\n\t0x224c4: 0x6d3abc20,\n\t0x224c8: 0x6cf43a20,\n\t0x224cf: 0x6c78a420,\n\t0x224d0: 0x6c786020, 0x224d1: 0x6c860e20, 0x224d2: 0x6c08dc20, 0x224d3: 0x6c43ec20,\n\t0x224d5: 0x6d059820, 0x224d6: 0x6ccbfa20, 0x224d7: 0x6c8d1c20,\n\t0x224d8: 0x6c781220,\n\t0x224de: 0x6c0f4220, 0x224df: 0x6c0b0820,\n\t0x224e0: 0x6cd68820, 0x224e1: 0x6cb66e20, 0x224e2: 0x6ccde420,\n\t0x224e6: 0x6c5e6420,\n\t0x224e8: 0x6cbc1c20,\n\t0x224ee: 0x6d166c20, 0x224ef: 0x6c73d020,\n\t0x224f0: 0x6d2efe20, 0x224f2: 0x6d031620,\n\t0x224f7: 0x6cea9a20,\n\t0x224f8: 0x6c4d5020, 0x224f9: 0x6cfa2e20, 0x224fb: 0x6ceae020,\n\t0x224fc: 0x6d145620,\n\t// Block 0x894, offset 0x22500\n\t0x22503: 0x6c242c20,\n\t0x22507: 0x6c674620,\n\t0x22508: 0x6ca3de20, 0x2250b: 0x6caf0020,\n\t0x2250d: 0x6c6a7020, 0x2250e: 0x6d08d820, 0x2250f: 0x6c552020,\n\t0x22525: 0x6d1f9e20, 0x22526: 0x6caa4c20, 0x22527: 0x6d12c220,\n\t0x2252a: 0x6d1b3a20,\n\t0x2252c: 0x6c799420,\n\t0x22536: 0x6cfe8420, 0x22537: 0x6cfd6220,\n\t0x2253c: 0x6ca49620, 0x2253e: 0x6d2f2420,\n\t// Block 0x895, offset 0x22540\n\t0x22550: 0x6c6a7c20, 0x22553: 0x6caa5020,\n\t0x22554: 0x6ccd7020,\n\t0x22562: 0x6c63a020,\n\t0x22567: 0x6d38dc20,\n\t0x22568: 0x6cc6fe20, 0x2256b: 0x6c922220,\n\t0x2256c: 0x6cc96e20, 0x2256d: 0x6caa6020, 0x2256f: 0x6c0ec420,\n\t0x22570: 0x6d302220, 0x22572: 0x6cbdca20,\n\t0x22574: 0x6c21f620, 0x22575: 0x6d40ac20, 0x22577: 0x6cf2ac20,\n\t0x22578: 0x6cf43620, 0x2257b: 0x6ca7e020,\n\t0x2257f: 0x6cfa8820,\n\t// Block 0x896, offset 0x22580\n\t0x22580: 0x6c531220,\n\t0x225ab: 0x6ce6e820,\n\t0x225ac: 0x6c6c8a20,\n\t0x225b1: 0x6c6aa420, 0x225b2: 0x6c51c020, 0x225b3: 0x6ce84c20,\n\t0x225b4: 0x6d303a20, 0x225b5: 0x6cb1ec20, 0x225b6: 0x6c6ce820, 0x225b7: 0x6ca44420,\n\t0x225bc: 0x6c33e820, 0x225be: 0x6cf5be20, 0x225bf: 0x6d018020,\n\t// Block 0x897, offset 0x225c0\n\t0x225c1: 0x6cf86c20, 0x225c2: 0x6c815220, 0x225c3: 0x6c32ac20,\n\t0x225c4: 0x6c61ca20, 0x225c5: 0x6c138a20, 0x225c6: 0x6c1d6620,\n\t0x225c8: 0x6c427020,\n\t0x225ce: 0x6cfdb820, 0x225cf: 0x6c29d620,\n\t0x225e5: 0x6c0b8e20, 0x225e6: 0x6cfea020, 0x225e7: 0x6d02c220,\n\t// Block 0x898, offset 0x22600\n\t0x22601: 0x6d224c20, 0x22602: 0x6cfb4a20, 0x22603: 0x6c83ba20,\n\t0x22604: 0x6cba0020, 0x22607: 0x6c9a5420,\n\t0x22609: 0x6cbb6c20, 0x2260a: 0x6d0b9e20,\n\t0x2260c: 0x6cb82a20, 0x2260d: 0x6cbf8a20, 0x2260f: 0x6c056a20,\n\t0x22610: 0x6d32b220,\n\t0x2261a: 0x6d2b4a20, 0x2261b: 0x6cd68e20,\n\t0x2261e: 0x6ccaf020,\n\t// Block 0x899, offset 0x22640\n\t0x22645: 0x6c923a20,\n\t0x22649: 0x6d009e20, 0x2264b: 0x6c3f5c20,\n\t0x2264c: 0x6d2d3a20,\n\t0x22669: 0x6d2b5020, 0x2266b: 0x6c32c220,\n\t0x2266d: 0x6c2ad620, 0x2266e: 0x6d233c20,\n\t0x22670: 0x6c93de20, 0x22672: 0x6ced8220, 0x22673: 0x6d090e20,\n\t0x22674: 0x6c68f420, 0x22675: 0x6d266420, 0x22676: 0x6d362420, 0x22677: 0x6cefc420,\n\t0x22679: 0x6c43ee20, 0x2267a: 0x6c71b420,\n\t0x2267c: 0x6d0d8420, 0x2267d: 0x6c262620, 0x2267e: 0x6c997e20,\n\t// Block 0x89a, offset 0x22680\n\t0x22686: 0x6c3e7820, 0x22687: 0x6c002820,\n\t0x2268a: 0x6d079e20,\n\t0x2268c: 0x6c427e20, 0x2268d: 0x6c013220,\n\t0x22692: 0x6c603620,\n\t0x22698: 0x6cafea20, 0x22699: 0x6d352820,\n\t0x2269c: 0x6caac020,\n\t0x226bf: 0x6cacbc20,\n\t// Block 0x89b, offset 0x226c0\n\t0x226c1: 0x6d14f620,\n\t0x226c4: 0x6c6ac820, 0x226c6: 0x6d3e3820,\n\t0x226c8: 0x6c644420, 0x226c9: 0x6cec6420,\n\t0x226cc: 0x6c644620,\n\t0x226df: 0x6c15c020,\n\t0x226e1: 0x6cdd7420, 0x226e2: 0x6cdd7620, 0x226e3: 0x6c605020,\n\t0x226e4: 0x6cd96420, 0x226e6: 0x6ce2f420, 0x226e7: 0x6caf7420,\n\t0x226e8: 0x6cb32c20,\n\t0x226ee: 0x6c9d5a20,\n\t0x226f4: 0x6d12fc20, 0x226f6: 0x6cbe1c20, 0x226f7: 0x6c6d1620,\n\t0x226fa: 0x6c73ae20,\n\t0x226fd: 0x6d24f420, 0x226fe: 0x6cc83e20,\n\t// Block 0x89c, offset 0x22700\n\t0x22714: 0x6c04fa20,\n\t0x22730: 0x6c0d3a20,\n\t0x22734: 0x6cf0ae20, 0x22735: 0x6d2a8820, 0x22736: 0x6cbcd020, 0x22737: 0x6cd9ce20,\n\t0x22738: 0x6c91ca20,\n\t0x2273c: 0x6c2ecc20, 0x2273d: 0x6c1fb820, 0x2273e: 0x6c09f620, 0x2273f: 0x6d3a1a20,\n\t// Block 0x89d, offset 0x22740\n\t0x22740: 0x6c966220, 0x22741: 0x6c3aba20, 0x22742: 0x6cb1cc20, 0x22743: 0x6d1b6620,\n\t0x22744: 0x6d08a220, 0x22746: 0x6c02e020, 0x22747: 0x6d3d7820,\n\t0x22748: 0x6d40c820, 0x2274b: 0x6c08ea20,\n\t0x22751: 0x6c812620, 0x22753: 0x6ce40820,\n\t0x22759: 0x6ce5c820, 0x2275a: 0x6c64c820,\n\t0x2275f: 0x6ce7c020,\n\t0x2277d: 0x6c343420, 0x2277e: 0x6c308420,\n\t// Block 0x89e, offset 0x22780\n\t0x22782: 0x6c0b4220,\n\t0x227a0: 0x6d36b020, 0x227a2: 0x6c3b8a20,\n\t0x227a6: 0x6c776a20, 0x227a7: 0x6d36b220,\n\t0x227a8: 0x6d2cfc20, 0x227a9: 0x6c0a1e20, 0x227aa: 0x6c7b6e20,\n\t0x227ac: 0x6c050220, 0x227ad: 0x6c73b820, 0x227ae: 0x6cc13420,\n\t0x227b0: 0x6cb51e20, 0x227b1: 0x6c824e20, 0x227b2: 0x6d00da20, 0x227b3: 0x6ce0ca20,\n\t0x227bc: 0x6cd9d420, 0x227be: 0x6c075020,\n\t// Block 0x89f, offset 0x227c0\n\t0x227c7: 0x6d106820,\n\t0x227c8: 0x6c65ce20,\n\t0x227e5: 0x6d2a8a20,\n\t// Block 0x8a0, offset 0x22800\n\t0x22800: 0x6d3b6a20, 0x22803: 0x6c38b820,\n\t0x22805: 0x6ccf2420, 0x22807: 0x6cbf5e20,\n\t0x22809: 0x6cb3a020, 0x2280b: 0x6ce60220,\n\t0x2280c: 0x6ccc1a20, 0x2280d: 0x6d28c820,\n\t0x22811: 0x6ca7ac20, 0x22812: 0x6c48fa20, 0x22813: 0x6c250a20,\n\t0x22821: 0x6cbc5e20, 0x22823: 0x6c2ee420,\n\t0x22833: 0x6cb1ee20,\n\t0x22834: 0x6c226a20, 0x22836: 0x6c058e20,\n\t// Block 0x8a1, offset 0x22840\n\t0x2284d: 0x6d1b8a20,\n\t0x22851: 0x6cfc3020,\n\t0x22854: 0x6d161820, 0x22855: 0x6c9e9e20, 0x22856: 0x6c32b220, 0x22857: 0x6d395620,\n\t0x22859: 0x6c798c20,\n\t0x22862: 0x6d2ee020,\n\t0x22876: 0x6c8eb820,\n\t0x22878: 0x6d355820, 0x22879: 0x6c15ee20, 0x2287a: 0x6c31ca20, 0x2287b: 0x6d25c020,\n\t0x2287e: 0x6cddd220, 0x2287f: 0x6c6b5820,\n\t// Block 0x8a2, offset 0x22880\n\t0x22880: 0x6c86c820, 0x22881: 0x6c460420,\n\t0x2288c: 0x6c054220,\n\t0x22897: 0x6c4c9220,\n\t0x22898: 0x6c8a3420, 0x22899: 0x6cd08220,\n\t0x228a3: 0x6ca7c020,\n\t0x228a5: 0x6c24bc20, 0x228a6: 0x6cf04c20,\n\t0x228a8: 0x6cead620, 0x228ab: 0x6cda6020,\n\t0x228ad: 0x6c8fc420,\n\t0x228b3: 0x6cff3820,\n\t0x228b4: 0x6d0df820,\n\t// Block 0x8a3, offset 0x228c0\n\t0x228c3: 0x6cbebe20,\n\t0x228cd: 0x6cf73020, 0x228cf: 0x6d21e220,\n\t0x228d1: 0x6d337220, 0x228d2: 0x6d027420, 0x228d3: 0x6c146e20,\n\t0x228d4: 0x6c3c0020, 0x228d6: 0x6c4c9c20,\n\t0x228d8: 0x6c6e3e20, 0x228d9: 0x6c808220, 0x228da: 0x6cfafe20,\n\t0x228dd: 0x6c8d8e20,\n\t0x228ee: 0x6c830020,\n\t0x228f2: 0x6c760220, 0x228f3: 0x6d002a20,\n\t0x228fc: 0x6d28d820,\n\t// Block 0x8a4, offset 0x22900\n\t0x22904: 0x6c493e20, 0x22905: 0x6cbd0820, 0x22906: 0x6c963e20, 0x22907: 0x6d124a20,\n\t0x22908: 0x6c945620, 0x22909: 0x6cdeee20,\n\t0x22911: 0x6c964020,\n\t0x2291e: 0x6c03a420, 0x2291f: 0x6c165420,\n\t0x22921: 0x6d3dec20,\n\t0x2292b: 0x6ce5d020,\n\t0x2292f: 0x6cecaa20,\n\t0x22930: 0x6c8dd420,\n\t0x22934: 0x6d24aa20, 0x22935: 0x6cb72c20, 0x22937: 0x6cb58020,\n\t0x2293c: 0x6c619420, 0x2293d: 0x6c0eb620, 0x2293f: 0x6cd1a420,\n\t// Block 0x8a5, offset 0x22940\n\t0x22940: 0x6c3f4a20, 0x22942: 0x6c4a4620,\n\t0x22945: 0x6c2d0e20, 0x22947: 0x6c4fa420,\n\t0x22949: 0x6c411220, 0x2294b: 0x6cb5c820,\n\t0x22953: 0x6c19fe20,\n\t0x22954: 0x6c5bc220, 0x22957: 0x6cf9cc20,\n\t0x22958: 0x6cd27020, 0x22959: 0x6d365820, 0x2295a: 0x6cb61420,\n\t0x2295c: 0x6c4d7420, 0x2295f: 0x6c692c20,\n\t0x22960: 0x6c867620, 0x22962: 0x6c8a7820,\n\t0x22964: 0x6cbba620,\n\t0x22968: 0x6cc99c20, 0x2296a: 0x6cb55220, 0x2296b: 0x6cd19620,\n\t0x2296e: 0x6c6a7220,\n\t0x22975: 0x6c06e420, 0x22976: 0x6c0aec20, 0x22977: 0x6c032420,\n\t0x22978: 0x6c755c20, 0x22979: 0x6caf3a20,\n\t0x2297c: 0x6c282220, 0x2297f: 0x6ce0e620,\n\t// Block 0x8a6, offset 0x22980\n\t0x22980: 0x6c7cca20, 0x22981: 0x6c7a2820, 0x22983: 0x6c79d020,\n\t0x22989: 0x6cd1a620, 0x2298a: 0x6cd1a820, 0x2298b: 0x6c5e9a20,\n\t0x2298c: 0x6c063620,\n\t0x22990: 0x6c785a20, 0x22991: 0x6c7b9020,\n\t0x22996: 0x6c9f9c20,\n\t0x22999: 0x6c89e020, 0x2299a: 0x6c35f220, 0x2299b: 0x6c43d820,\n\t0x2299f: 0x6cee0420,\n\t0x229a0: 0x6c344020, 0x229a3: 0x6cb85220,\n\t0x229a4: 0x6c573220, 0x229a6: 0x6c539e20,\n\t0x229a9: 0x6cae5e20, 0x229ab: 0x6c698c20,\n\t0x229b0: 0x6cc0f020, 0x229b1: 0x6d3f3c20, 0x229b2: 0x6d391820, 0x229b3: 0x6c7b9620,\n\t0x229b5: 0x6ccbd820, 0x229b7: 0x6c61cc20,\n\t0x229b8: 0x6cee6c20, 0x229b9: 0x6cb40820, 0x229ba: 0x6d090620,\n\t0x229bc: 0x6cce6620,\n\t// Block 0x8a7, offset 0x229c0\n\t0x229c2: 0x6c80b620, 0x229c3: 0x6d351620,\n\t0x229c4: 0x6ce6c620, 0x229c7: 0x6c26f020,\n\t0x229d5: 0x6d0faa20, 0x229d6: 0x6c6d0020, 0x229d7: 0x6d351820,\n\t0x229da: 0x6d3d5a20,\n\t0x229dc: 0x6d28b420, 0x229dd: 0x6c14f220,\n\t0x229e2: 0x6c998020,\n\t0x229e6: 0x6c797820, 0x229e7: 0x6d388420,\n\t0x229e8: 0x6c54ca20, 0x229e9: 0x6cae7220,\n\t0x229ed: 0x6c6ffc20,\n\t0x229f8: 0x6c21bc20, 0x229f9: 0x6c9fae20,\n\t0x229fe: 0x6cffec20,\n\t// Block 0x8a8, offset 0x22a00\n\t0x22a00: 0x6c322220, 0x22a01: 0x6cef1820, 0x22a03: 0x6c119a20,\n\t0x22a04: 0x6d214a20, 0x22a05: 0x6c326220, 0x22a06: 0x6c763620, 0x22a07: 0x6cb0a220,\n\t0x22a0a: 0x6c1a1a20,\n\t0x22a0e: 0x6c218020,\n\t0x22a10: 0x6cceb420, 0x22a11: 0x6d0d9e20, 0x22a12: 0x6c7b2820,\n\t0x22a14: 0x6d265020,\n\t0x22a26: 0x6cb61620, 0x22a27: 0x6d32e020,\n\t0x22a29: 0x6c78c220, 0x22a2a: 0x6cb61820, 0x22a2b: 0x6d354020,\n\t0x22a2c: 0x6c928420,\n\t0x22a31: 0x6caf7c20, 0x22a32: 0x6cab0420, 0x22a33: 0x6cad7c20,\n\t0x22a3a: 0x6c3a6020,\n\t0x22a3f: 0x6cf19c20,\n\t// Block 0x8a9, offset 0x22a40\n\t0x22a42: 0x6c9b2c20,\n\t0x22a48: 0x6ccd5620,\n\t0x22a4c: 0x6d04a020, 0x22a4e: 0x6c351020, 0x22a4f: 0x6c0c9220,\n\t0x22a5a: 0x6d1eb020,\n\t0x22a5c: 0x6c97f620, 0x22a5e: 0x6c8a7a20,\n\t0x22a61: 0x6d00ea20, 0x22a62: 0x6c949c20, 0x22a63: 0x6cbba820,\n\t0x22a64: 0x6c2ae620, 0x22a66: 0x6c1a3e20, 0x22a67: 0x6c1a4020,\n\t0x22a6d: 0x6c21d820,\n\t0x22a78: 0x6c131420,\n\t// Block 0x8aa, offset 0x22a80\n\t0x22a80: 0x6c825e20, 0x22a81: 0x6d2e1c20, 0x22a82: 0x6c853620, 0x22a83: 0x6c885e20,\n\t0x22a84: 0x6cc45820,\n\t0x22a8d: 0x6c18ee20, 0x22a8f: 0x6c1a4820,\n\t0x22a90: 0x6c473c20, 0x22a92: 0x6d403a20, 0x22a93: 0x6c1df420,\n\t0x22a94: 0x6c204420,\n\t0x22a9c: 0x6c835220, 0x22a9d: 0x6cd7a820, 0x22a9e: 0x6c941020,\n\t0x22aa3: 0x6c3f2420,\n\t0x22aa5: 0x6c871620, 0x22aa7: 0x6cca6020,\n\t0x22aab: 0x6cca0c20,\n\t0x22aaf: 0x6cc9b220,\n\t0x22ab3: 0x6ca8b020,\n\t0x22ab6: 0x6d413c20, 0x22ab7: 0x6c855020,\n\t0x22abb: 0x6cd58c20,\n\t0x22abe: 0x6c3f2a20,\n\t// Block 0x8ab, offset 0x22ac0\n\t0x22ac9: 0x6c094620,\n\t0x22acd: 0x6c2a0820,\n\t0x22ad2: 0x6cd1b220,\n\t0x22ad6: 0x6c422020, 0x22ad7: 0x6ce09e20,\n\t0x22adc: 0x6c97f820, 0x22adf: 0x6c842820,\n\t0x22ae2: 0x6c0a4c20,\n\t0x22ae6: 0x6cac7e20,\n\t0x22ae8: 0x6d1eca20,\n\t0x22aed: 0x6c6f5020, 0x22aef: 0x6c4c1220,\n\t0x22af0: 0x6c89dc20, 0x22af3: 0x6cf2de20,\n\t0x22af4: 0x6cb85420, 0x22af5: 0x6c30e820, 0x22af7: 0x6c8afa20,\n\t0x22af9: 0x6c68e020, 0x22afb: 0x6c8afc20,\n\t// Block 0x8ac, offset 0x22b00\n\t0x22b01: 0x6ce56020,\n\t0x22b04: 0x6c4c2620, 0x22b06: 0x6cacde20, 0x22b07: 0x6cbb8e20,\n\t0x22b09: 0x6c2b8a20, 0x22b0a: 0x6d284420,\n\t0x22b12: 0x6c821420,\n\t0x22b16: 0x6cd7cc20, 0x22b17: 0x6d02b020,\n\t0x22b1c: 0x6d02c420, 0x22b1d: 0x6cfe2620, 0x22b1e: 0x6c95ac20,\n\t0x22b24: 0x6c07e820, 0x22b25: 0x6ce55a20,\n\t0x22b2c: 0x6cffee20, 0x22b2e: 0x6c30b420,\n\t0x22b33: 0x6c296e20,\n\t0x22b34: 0x6ce67c20, 0x22b35: 0x6d3bcc20,\n\t0x22b3b: 0x6cab4620,\n\t0x22b3d: 0x6cf30e20,\n\t// Block 0x8ad, offset 0x22b40\n\t0x22b44: 0x6d02ee20, 0x22b45: 0x6cc87a20,\n\t0x22b48: 0x6d3dae20, 0x22b49: 0x6c299020,\n\t0x22b4d: 0x6c257420,\n\t0x22b51: 0x6d3dc820,\n\t0x22b57: 0x6c238620,\n\t0x22b58: 0x6c159220,\n\t0x22b5d: 0x6d100820,\n\t0x22b67: 0x6d0d5e20,\n\t0x22b73: 0x6d0d6820,\n\t0x22b75: 0x6d323620,\n\t0x22b7d: 0x6caade20, 0x22b7e: 0x6d0e7220,\n\t// Block 0x8ae, offset 0x22b80\n\t0x22b85: 0x6c39d820,\n\t0x22b89: 0x6d0da020, 0x22b8a: 0x6d214e20,\n\t0x22b8d: 0x6ce34020, 0x22b8e: 0x6c401a20, 0x22b8f: 0x6c07a020,\n\t0x22b91: 0x6d0db220, 0x22b93: 0x6c5ad220,\n\t0x22b99: 0x6c5a6220,\n\t0x22b9c: 0x6c4b7420, 0x22b9d: 0x6d0ece20, 0x22b9f: 0x6c55da20,\n\t0x22ba0: 0x6c0c3620,\n\t0x22ba7: 0x6cdcc420,\n\t0x22bae: 0x6d3f3020, 0x22baf: 0x6c618620,\n\t0x22bb0: 0x6c35ae20, 0x22bb1: 0x6c61ce20, 0x22bb2: 0x6c7ccc20,\n\t0x22bb4: 0x6c89b620,\n\t0x22bb8: 0x6c5dda20, 0x22bba: 0x6cef3a20, 0x22bbb: 0x6d3cea20,\n\t0x22bbf: 0x6ce6ae20,\n\t// Block 0x8af, offset 0x22bc0\n\t0x22bc3: 0x6d290e20,\n\t0x22bc4: 0x6d201020,\n\t0x22bc9: 0x6cc5c020,\n\t0x22bcd: 0x6c9e4e20,\n\t0x22bda: 0x6ca31020,\n\t0x22bdd: 0x6ce84220, 0x22bdf: 0x6c27be20,\n\t0x22be1: 0x6c73ec20,\n\t0x22be4: 0x6d056e20, 0x22be5: 0x6c2b1820,\n\t0x22bf0: 0x6cfe1a20,\n\t0x22bf7: 0x6d048a20,\n\t0x22bfa: 0x6d1fac20, 0x22bfb: 0x6c489620,\n\t0x22bfe: 0x6cf5a420,\n\t// Block 0x8b0, offset 0x22c00\n\t0x22c08: 0x6c51bc20,\n\t0x22c0d: 0x6c2f6c20,\n\t0x22c10: 0x6c914020, 0x22c12: 0x6d061a20,\n\t0x22c14: 0x6d391a20, 0x22c15: 0x6cfca820, 0x22c16: 0x6c598820, 0x22c17: 0x6c138c20,\n\t0x22c18: 0x6cd2c420, 0x22c19: 0x6c421820, 0x22c1a: 0x6caadc20, 0x22c1b: 0x6c01aa20,\n\t0x22c1f: 0x6d003c20,\n\t0x22c27: 0x6c502c20,\n\t0x22c32: 0x6cbd2a20, 0x22c33: 0x6c450620,\n\t0x22c34: 0x6ccce020, 0x22c35: 0x6c3e4c20,\n\t0x22c3d: 0x6d2b4c20,\n\t// Block 0x8b1, offset 0x22c40\n\t0x22c47: 0x6c287c20,\n\t0x22c56: 0x6c2d1420, 0x22c57: 0x6ccfdc20,\n\t0x22c59: 0x6d411820,\n\t0x22c62: 0x6c0ca620,\n\t0x22c66: 0x6c20d020, 0x22c67: 0x6d30f820,\n\t0x22c68: 0x6c276e20, 0x22c6b: 0x6cf2b620,\n\t0x22c6c: 0x6cbf2420,\n\t0x22c70: 0x6c8bb420, 0x22c72: 0x6c5cc820, 0x22c73: 0x6c5ed020,\n\t// Block 0x8b2, offset 0x22c80\n\t0x22c85: 0x6c127620,\n\t0x22c8a: 0x6ca28620,\n\t0x22c8d: 0x6c2ea820, 0x22c8e: 0x6cf09620,\n\t0x22ca0: 0x6c0b9a20, 0x22ca1: 0x6ce3c020,\n\t0x22ca5: 0x6ce8be20,\n\t0x22cb6: 0x6c453620,\n\t// Block 0x8b3, offset 0x22cc0\n\t0x22cc4: 0x6c1b3220, 0x22cc5: 0x6c23ee20, 0x22cc6: 0x6ce3c420,\n\t0x22cd2: 0x6c5de620, 0x22cd3: 0x6cb50e20,\n\t0x22cd4: 0x6ccab820, 0x22cd5: 0x6ccaa020, 0x22cd6: 0x6d085220, 0x22cd7: 0x6c021c20,\n\t0x22cd8: 0x6ca3ce20, 0x22cda: 0x6d0fd020, 0x22cdb: 0x6cd4f420,\n\t0x22cdc: 0x6ccc0620,\n\t0x22ce1: 0x6ce6d620,\n\t0x22ce9: 0x6d0bc420, 0x22cea: 0x6c5a5820,\n\t0x22cee: 0x6c0d4220,\n\t0x22cfe: 0x6caba020, 0x22cff: 0x6c128820,\n\t// Block 0x8b4, offset 0x22d00\n\t0x22d01: 0x6c026a20, 0x22d03: 0x6c99ae20,\n\t0x22d14: 0x6c9b3620, 0x22d16: 0x6ce47220,\n\t0x22d1d: 0x6ccaa220, 0x22d1e: 0x6d073a20, 0x22d1f: 0x6c771020,\n\t0x22d27: 0x6c811020,\n\t0x22d36: 0x6c0cc020, 0x22d37: 0x6c23b220,\n\t0x22d3a: 0x6cfb8e20,\n\t// Block 0x8b5, offset 0x22d40\n\t0x22d44: 0x6cea2a20,\n\t0x22d49: 0x6d240a20, 0x22d4a: 0x6c28c220, 0x22d4b: 0x6d1d5420,\n\t0x22d4d: 0x6d2f7820, 0x22d4f: 0x6cb4b620,\n\t0x22d58: 0x6c5c4e20,\n\t0x22d5e: 0x6c00ea20, 0x22d5f: 0x6ca0b220,\n\t0x22d62: 0x6c6dde20, 0x22d63: 0x6c7fce20,\n\t0x22d72: 0x6c8b5820, 0x22d73: 0x6cb1a420,\n\t0x22d75: 0x6c0fa420, 0x22d76: 0x6cbf8220,\n\t0x22d79: 0x6c0aa220,\n\t0x22d7f: 0x6d1dd420,\n\t// Block 0x8b6, offset 0x22d80\n\t0x22d85: 0x6c871820,\n\t0x22d8d: 0x6ca8b220, 0x22d8f: 0x6c2a8820,\n\t0x22d93: 0x6c584620,\n\t0x22d97: 0x6d272420,\n\t0x22d9a: 0x6c212c20,\n\t0x22d9c: 0x6c87b020, 0x22d9e: 0x6d2ef420, 0x22d9f: 0x6c8dd620,\n\t0x22da0: 0x6c217020,\n\t0x22da7: 0x6c12d220,\n\t0x22da8: 0x6d09ea20,\n\t0x22dac: 0x6c71ac20, 0x22dad: 0x6c5cac20,\n\t0x22dbe: 0x6ce6f820,\n\t// Block 0x8b7, offset 0x22dc0\n\t0x22dc6: 0x6ca91220, 0x22dc7: 0x6c727a20,\n\t0x22dcf: 0x6c144c20,\n\t0x22dd6: 0x6d2a2e20,\n\t0x22ddb: 0x6d24a020,\n\t0x22ddf: 0x6c78f420,\n\t0x22de6: 0x6c7bea20, 0x22de7: 0x6c3a4a20,\n\t0x22def: 0x6d282620,\n\t0x22df0: 0x6cb9fc20,\n\t0x22df4: 0x6cc2dc20,\n\t0x22df8: 0x6cb38a20, 0x22dfa: 0x6cadf620,\n\t// Block 0x8b8, offset 0x22e00\n\t0x22e04: 0x6c453820, 0x22e05: 0x6d17e420, 0x22e06: 0x6c961020,\n\t0x22e11: 0x6c7b5a20, 0x22e13: 0x6d085420,\n\t0x22e14: 0x6ca76e20,\n\t0x22e1a: 0x6c55ac20, 0x22e1b: 0x6c715820,\n\t0x22e29: 0x6d136a20,\n\t0x22e2e: 0x6cf73420,\n\t0x22e31: 0x6d271c20, 0x22e32: 0x6ce19020, 0x22e33: 0x6cb23e20,\n\t0x22e34: 0x6c33c820, 0x22e35: 0x6c06d420,\n\t0x22e38: 0x6c8a6020,\n\t// Block 0x8b9, offset 0x22e40\n\t0x22e40: 0x6d1e0e20,\n\t0x22e4e: 0x6d0acc20,\n\t0x22e51: 0x6c68bc20,\n\t0x22e54: 0x6c7dcc20, 0x22e56: 0x6d321820, 0x22e57: 0x6cd59c20,\n\t0x22e5a: 0x6cd24820,\n\t0x22e5e: 0x6d1efa20, 0x22e5f: 0x6cac1a20,\n\t0x22e60: 0x6cff6e20, 0x22e61: 0x6c5fe020,\n\t0x22e76: 0x6cb4d220, 0x22e77: 0x6c50c620,\n\t0x22e7a: 0x6c799620,\n\t// Block 0x8ba, offset 0x22e80\n\t0x22e82: 0x6d12d020, 0x22e83: 0x6c1bf020,\n\t0x22e8a: 0x6c77a220, 0x22e8b: 0x6d269020,\n\t0x22e8e: 0x6cec1a20, 0x22e8f: 0x6ca71820,\n\t0x22e91: 0x6c222e20, 0x22e93: 0x6d14a020,\n\t0x22ea4: 0x6c704620,\n\t0x22eab: 0x6d0f4e20,\n\t0x22eac: 0x6c83a620, 0x22eae: 0x6c270a20, 0x22eaf: 0x6c1d0c20,\n\t0x22eb5: 0x6d14c620,\n\t0x22eba: 0x6c4e9a20,\n\t0x22ebf: 0x6d13de20,\n\t// Block 0x8bb, offset 0x22ec0\n\t0x22ec1: 0x6c1d4a20, 0x22ec2: 0x6c568020, 0x22ec3: 0x6d3b6220,\n\t0x22ee6: 0x6cbf0a20, 0x22ee7: 0x6c34de20,\n\t0x22ef8: 0x6ce73220, 0x22ef9: 0x6cfa9020,\n\t0x22eff: 0x6c3e5020,\n\t// Block 0x8bc, offset 0x22f00\n\t0x22f02: 0x6c2d5020, 0x22f03: 0x6cf77820,\n\t0x22f04: 0x6d003e20, 0x22f05: 0x6d323820, 0x22f06: 0x6cbc3e20, 0x22f07: 0x6ce85620,\n\t0x22f37: 0x6c4eb020,\n\t0x22f38: 0x6c7bf220, 0x22f39: 0x6cdd1a20, 0x22f3b: 0x6cd46220,\n\t0x22f3c: 0x6ce58020,\n\t// Block 0x8bd, offset 0x22f40\n\t0x22f40: 0x6d315020, 0x22f43: 0x6ca58c20,\n\t0x22f45: 0x6cba0a20, 0x22f46: 0x6d1a6620,\n\t0x22f48: 0x6c899220, 0x22f49: 0x6ccc5420, 0x22f4a: 0x6d3f4c20, 0x22f4b: 0x6cafec20,\n\t0x22f4c: 0x6c42c620, 0x22f4f: 0x6c6d0a20,\n\t0x22f50: 0x6d1f3620, 0x22f52: 0x6ccd8c20,\n\t0x22f54: 0x6c9d4620, 0x22f55: 0x6cab9c20, 0x22f57: 0x6c54cc20,\n\t0x22f5b: 0x6d204620,\n\t0x22f5d: 0x6c9bd420,\n\t// Block 0x8be, offset 0x22f80\n\t0x22f90: 0x6d352a20, 0x22f93: 0x6c08e020,\n\t0x22f97: 0x6ccfe820,\n\t0x22f98: 0x6cb79420, 0x22f99: 0x6cfaa620, 0x22f9a: 0x6cac5820, 0x22f9b: 0x6c776e20,\n\t0x22fab: 0x6cd68620,\n\t0x22fac: 0x6cafee20, 0x22fae: 0x6d290220, 0x22faf: 0x6d3a6c20,\n\t0x22fb1: 0x6cd9c020, 0x22fb2: 0x6c6f1820,\n\t0x22fb5: 0x6c150020, 0x22fb6: 0x6c38a420, 0x22fb7: 0x6cff8e20,\n\t0x22fb8: 0x6d1aec20, 0x22fb9: 0x6c540e20, 0x22fba: 0x6c999220, 0x22fbb: 0x6ce8c020,\n\t0x22fbd: 0x6c621820,\n\t// Block 0x8bf, offset 0x22fc0\n\t0x22fc1: 0x6d151c20, 0x22fc3: 0x6d236c20,\n\t0x22fc4: 0x6c6ee020, 0x22fc5: 0x6cad9220, 0x22fc7: 0x6cfed820,\n\t0x22fc9: 0x6c468c20,\n\t0x22fcc: 0x6c465020, 0x22fcd: 0x6cdcf220, 0x22fce: 0x6cfc1620, 0x22fcf: 0x6d3baa20,\n\t0x22ffe: 0x6c1dba20,\n\t// Block 0x8c0, offset 0x23000\n\t0x23004: 0x6cbb7e20, 0x23005: 0x6ce34220, 0x23006: 0x6d27b020,\n\t0x23009: 0x6cccec20, 0x2300a: 0x6c8b1420,\n\t0x2300c: 0x6d353620,\n\t0x23010: 0x6cabf220,\n\t0x23023: 0x6c712e20,\n\t0x23024: 0x6c7f1220,\n\t0x23028: 0x6d3f1820, 0x2302a: 0x6cc1a420, 0x2302b: 0x6c47b020,\n\t0x2302c: 0x6c747a20, 0x2302d: 0x6d348220, 0x2302e: 0x6c021e20, 0x2302f: 0x6cbe2020,\n\t0x23030: 0x6cb00620, 0x23031: 0x6d417820, 0x23033: 0x6cb9b020,\n\t0x23035: 0x6c25e620, 0x23037: 0x6c606620,\n\t0x23038: 0x6ce35220, 0x23039: 0x6cc7b620, 0x2303b: 0x6c4d4220,\n\t0x2303c: 0x6d0a2620, 0x2303e: 0x6c073c20, 0x2303f: 0x6d348420,\n\t// Block 0x8c1, offset 0x23040\n\t0x23041: 0x6c340020,\n\t0x2304b: 0x6c293220,\n\t0x23050: 0x6cc62e20,\n\t0x23072: 0x6c41a820,\n\t0x23075: 0x6c42ae20, 0x23076: 0x6cde7220,\n\t0x23078: 0x6cebae20, 0x23079: 0x6d105e20, 0x2307a: 0x6c7a4e20, 0x2307b: 0x6d368c20,\n\t// Block 0x8c2, offset 0x23080\n\t0x23096: 0x6c64d020, 0x23097: 0x6ca6be20,\n\t0x23098: 0x6cd00e20, 0x23099: 0x6c058620, 0x2309a: 0x6cd66e20, 0x2309b: 0x6c30c020,\n\t0x2309d: 0x6cb91420, 0x2309e: 0x6c4e2820, 0x2309f: 0x6cb83020,\n\t0x230a0: 0x6c41e420, 0x230a3: 0x6c215a20,\n\t0x230a4: 0x6c13fe20, 0x230a5: 0x6c0a2620, 0x230a6: 0x6d140c20, 0x230a7: 0x6c3d9020,\n\t0x230a8: 0x6c35b820, 0x230aa: 0x6c816c20, 0x230ab: 0x6c4fe020,\n\t0x230ac: 0x6c842a20,\n\t0x230b1: 0x6ce28020, 0x230b2: 0x6cd01020,\n\t0x230b4: 0x6d1a9020, 0x230b7: 0x6c64d220,\n\t0x230bb: 0x6c140020,\n\t// Block 0x8c3, offset 0x230c0\n\t0x230d7: 0x6ca86020,\n\t0x230d8: 0x6c23f620, 0x230db: 0x6d154620,\n\t0x230df: 0x6ce12220,\n\t0x230e2: 0x6c738820,\n\t0x230f0: 0x6c1c5820, 0x230f1: 0x6c468e20,\n\t0x230f4: 0x6c6b1a20, 0x230f5: 0x6d307c20, 0x230f6: 0x6c559220, 0x230f7: 0x6c987220,\n\t0x230fb: 0x6d406220,\n\t0x230fc: 0x6cd8e820, 0x230ff: 0x6c3ad020,\n\t// Block 0x8c4, offset 0x23100\n\t0x23100: 0x6d3e8620, 0x23101: 0x6d3e8820, 0x23103: 0x6c6b3420,\n\t0x23104: 0x6cd82820, 0x23106: 0x6c211620, 0x23107: 0x6cad9820,\n\t0x2310b: 0x6d128e20,\n\t0x2310c: 0x6c2b4420, 0x2310e: 0x6c825820, 0x2310f: 0x6d05e420,\n\t0x23110: 0x6cc7c820, 0x23112: 0x6cabde20, 0x23113: 0x6c738e20,\n\t0x23114: 0x6cf8dc20, 0x23115: 0x6d133e20, 0x23116: 0x6c014c20,\n\t0x23118: 0x6d189420, 0x23119: 0x6c64f420,\n\t0x2311c: 0x6cd93820, 0x2311d: 0x6cf2c420, 0x2311f: 0x6ccb5820,\n\t0x23120: 0x6d355020, 0x23121: 0x6c088e20, 0x23122: 0x6d3be220,\n\t0x23126: 0x6c67fa20, 0x23127: 0x6c506820,\n\t0x23129: 0x6c1c6c20, 0x2312a: 0x6c340820,\n\t// Block 0x8c5, offset 0x23140\n\t0x23153: 0x6c0f5820,\n\t0x23154: 0x6c60a820, 0x23155: 0x6c1fb020, 0x23157: 0x6c962620,\n\t0x2315a: 0x6cc8b220,\n\t0x2316b: 0x6c55b020,\n\t0x23171: 0x6c28c420,\n\t0x23174: 0x6c4e6420, 0x23175: 0x6cc3fe20, 0x23176: 0x6ccc1e20, 0x23177: 0x6d2e1e20,\n\t0x23178: 0x6d2b0e20, 0x23179: 0x6c201220, 0x2317a: 0x6cb53620, 0x2317b: 0x6c2ef020,\n\t0x2317d: 0x6d2ce220, 0x2317e: 0x6ce83220,\n\t// Block 0x8c6, offset 0x23180\n\t0x23181: 0x6c221220, 0x23182: 0x6cc99e20,\n\t0x23184: 0x6c955620, 0x23187: 0x6c60be20,\n\t0x231a2: 0x6c95c220, 0x231a3: 0x6cbdb220,\n\t0x231a7: 0x6cbf6c20,\n\t0x231a8: 0x6c739420,\n\t0x231ac: 0x6c00e020, 0x231ad: 0x6c65e220,\n\t0x231b9: 0x6ce42a20, 0x231ba: 0x6cf1b620,\n\t0x231bd: 0x6cbbb620,\n\t// Block 0x8c7, offset 0x231c0\n\t0x231c1: 0x6cac0820, 0x231c2: 0x6c5d0620,\n\t0x231c5: 0x6c00ec20, 0x231c7: 0x6cd7a220,\n\t0x231c8: 0x6c887220, 0x231c9: 0x6c337420, 0x231cb: 0x6cdebc20,\n\t0x231cc: 0x6c6cbe20, 0x231cd: 0x6c0a8a20, 0x231ce: 0x6d0de820, 0x231cf: 0x6c435a20,\n\t0x231d0: 0x6cb18820, 0x231d1: 0x6d242c20, 0x231d2: 0x6ccf7c20,\n\t0x231d5: 0x6c651420, 0x231d7: 0x6c55dc20,\n\t0x231da: 0x6c8b4e20,\n\t0x231dc: 0x6c0bce20, 0x231dd: 0x6cdb4e20, 0x231de: 0x6c689420,\n\t0x231f8: 0x6d3cb820,\n\t0x231fd: 0x6c4dc220,\n\t// Block 0x8c8, offset 0x23200\n\t0x23207: 0x6c340e20,\n\t0x23210: 0x6d014e20, 0x23211: 0x6c9b8220, 0x23212: 0x6c3db420, 0x23213: 0x6c931a20,\n\t0x23214: 0x6ce0b220, 0x23217: 0x6c8ecc20,\n\t0x23218: 0x6cfaee20, 0x23219: 0x6cca9420,\n\t0x2321c: 0x6c240220, 0x2321d: 0x6d3c2620, 0x2321f: 0x6c188e20,\n\t0x23230: 0x6c892820,\n\t0x23234: 0x6c848c20,\n\t// Block 0x8c9, offset 0x23240\n\t0x23240: 0x6caf1a20, 0x23241: 0x6ceb9420,\n\t0x23244: 0x6cebb820, 0x23246: 0x6c8a4a20, 0x23247: 0x6d002620,\n\t0x23248: 0x6c20f620, 0x23249: 0x6c581a20, 0x2324a: 0x6ca7c220, 0x2324b: 0x6cb94820,\n\t0x2324c: 0x6c871c20, 0x2324f: 0x6cad3e20,\n\t0x23250: 0x6ce5b020, 0x23251: 0x6c8ece20, 0x23252: 0x6cf40a20,\n\t0x23264: 0x6d1d2620, 0x23266: 0x6d2c6820,\n\t0x23270: 0x6d21ee20, 0x23272: 0x6cfc5020, 0x23273: 0x6d083820,\n\t0x23274: 0x6cd68a20, 0x23275: 0x6cf74220,\n\t0x23278: 0x6c9a4220, 0x23279: 0x6ccbb420, 0x2327a: 0x6c893420,\n\t0x2327c: 0x6c6f9020, 0x2327d: 0x6c81ec20,\n\t// Block 0x8ca, offset 0x23280\n\t0x2328e: 0x6cff5020, 0x2328f: 0x6d407420,\n\t0x2329a: 0x6c8ee820,\n\t0x2329c: 0x6d2ff020, 0x2329e: 0x6d30c220,\n\t0x232a0: 0x6c830820,\n\t0x232ad: 0x6c32b420,\n\t0x232b7: 0x6c663420,\n\t0x232b8: 0x6cd68c20, 0x232b9: 0x6d425620, 0x232ba: 0x6cbd0c20,\n\t0x232bc: 0x6c81ca20,\n\t// Block 0x8cb, offset 0x232c0\n\t0x232c9: 0x6d248420, 0x232ca: 0x6d196620, 0x232cb: 0x6ca66e20,\n\t0x232ce: 0x6c134620,\n\t0x232d5: 0x6d0f1a20, 0x232d7: 0x6cc89020,\n\t0x232de: 0x6d0d1c20, 0x232df: 0x6c2f1e20,\n\t0x232e0: 0x6c9df620,\n\t0x232e7: 0x6c82a420,\n\t0x232e9: 0x6cecae20,\n\t0x232f0: 0x6ca2fe20,\n\t0x232f6: 0x6d0d2420,\n\t0x232fa: 0x6c831c20,\n\t0x232fd: 0x6ccc3020, 0x232fe: 0x6c551620,\n\t// Block 0x8cc, offset 0x23300\n\t0x23301: 0x6cf58020, 0x23302: 0x6cf58220,\n\t0x23304: 0x6d1fa020, 0x23305: 0x6c4d9220, 0x23307: 0x6c4d0820,\n\t0x23309: 0x6cebc820, 0x2330a: 0x6d068220, 0x2330b: 0x6caf3c20,\n\t0x2330c: 0x6cdf8e20, 0x2330d: 0x6cf58a20, 0x2330e: 0x6cf58c20, 0x2330f: 0x6c0d2420,\n\t0x23310: 0x6cbd1a20, 0x23311: 0x6cf58e20, 0x23312: 0x6d20c420, 0x23313: 0x6cf84a20,\n\t0x23315: 0x6c22b620, 0x23316: 0x6cba4020, 0x23317: 0x6cf95420,\n\t0x2331a: 0x6cec0620, 0x2331b: 0x6c35f420,\n\t0x2331c: 0x6d1fae20, 0x2331d: 0x6d041a20, 0x2331e: 0x6ca5c220, 0x2331f: 0x6c4de420,\n\t0x23320: 0x6c094a20, 0x23321: 0x6cd0ec20,\n\t0x23324: 0x6d2d6220, 0x23325: 0x6c2d4420, 0x23326: 0x6d222c20,\n\t0x23328: 0x6cab7a20, 0x2332a: 0x6c4ae820, 0x2332b: 0x6cee0620,\n\t0x2332c: 0x6cb8c620, 0x2332d: 0x6d14c820,\n\t0x23330: 0x6d40b020, 0x23332: 0x6cb8c820, 0x23333: 0x6c2f9c20,\n\t0x23334: 0x6c793420, 0x23336: 0x6c1f2620, 0x23337: 0x6d13e020,\n\t0x2333a: 0x6c4d9e20, 0x2333b: 0x6c7b6420,\n\t// Block 0x8cd, offset 0x23340\n\t0x23348: 0x6c2d5820, 0x23349: 0x6cf88a20, 0x2334a: 0x6d3e3c20, 0x2334b: 0x6c8d0420,\n\t0x2334c: 0x6d3f4e20, 0x2334e: 0x6d234420, 0x2334f: 0x6c5ccc20,\n\t0x23351: 0x6cd86e20, 0x23352: 0x6c76d620,\n\t0x2335a: 0x6c01c420,\n\t0x2335c: 0x6d1fca20, 0x2335d: 0x6c605420, 0x2335e: 0x6c5d2c20, 0x2335f: 0x6cb82e20,\n\t0x23360: 0x6c541020, 0x23361: 0x6c541220, 0x23363: 0x6c2d5c20,\n\t0x23369: 0x6d004c20,\n\t0x2336d: 0x6ccf5620, 0x2336e: 0x6ccc5c20,\n\t0x23372: 0x6d00ca20, 0x23373: 0x6d112220,\n\t0x23374: 0x6c26f420, 0x23376: 0x6d01d820, 0x23377: 0x6c1ac620,\n\t0x23378: 0x6d1fde20, 0x23379: 0x6c50a220, 0x2337a: 0x6ccc6220,\n\t0x2337f: 0x6cdf2e20,\n\t// Block 0x8ce, offset 0x23380\n\t0x23381: 0x6d3a1c20, 0x23383: 0x6c006c20,\n\t0x23387: 0x6cc3e020,\n\t0x23388: 0x6d2aea20, 0x2338a: 0x6c7e4a20, 0x2338b: 0x6c911620,\n\t0x2338c: 0x6c1fc820, 0x2338e: 0x6d1fe620,\n\t0x23396: 0x6ce41020,\n\t0x23398: 0x6cd1fa20,\n\t0x233a1: 0x6d000a20, 0x233a2: 0x6cf8ee20,\n\t0x233a8: 0x6c5e1220, 0x233a9: 0x6c1c8620, 0x233aa: 0x6d18e620,\n\t0x233af: 0x6cd54420,\n\t0x233b0: 0x6d270020, 0x233b1: 0x6c155420, 0x233b2: 0x6c36da20, 0x233b3: 0x6cf73620,\n\t0x233b4: 0x6cf74420, 0x233b5: 0x6d1d2a20, 0x233b6: 0x6d410020, 0x233b7: 0x6d28a220,\n\t0x233ba: 0x6d28a820,\n\t// Block 0x8cf, offset 0x233c0\n\t0x233c2: 0x6cde2c20, 0x233c3: 0x6ced7020,\n\t0x233c7: 0x6d031e20,\n\t0x233ca: 0x6cee4820, 0x233cb: 0x6c3f3820,\n\t0x233d0: 0x6c91b620,\n\t0x233de: 0x6c656820,\n\t0x233e1: 0x6d0c6620, 0x233e3: 0x6c094c20,\n\t0x233e4: 0x6c78fc20, 0x233e5: 0x6c497820,\n\t0x233e8: 0x6d3e1820,\n\t0x233ee: 0x6c7cce20, 0x233ef: 0x6d38e020,\n\t0x233f0: 0x6d35be20, 0x233f3: 0x6ce8a420,\n\t0x233f7: 0x6cde4c20,\n\t0x233f9: 0x6c1f3e20, 0x233fa: 0x6c196e20, 0x233fb: 0x6c1a7420,\n\t0x233fc: 0x6d3af420, 0x233fe: 0x6c26f220,\n\t// Block 0x8d0, offset 0x23400\n\t0x23407: 0x6c09c620,\n\t0x23409: 0x6c641c20,\n\t0x2340c: 0x6d17e620, 0x2340f: 0x6d26c420,\n\t0x23410: 0x6c428a20,\n\t0x23416: 0x6c41ae20,\n\t0x2341c: 0x6cbbac20,\n\t0x23420: 0x6c1eb020, 0x23421: 0x6c1eb620, 0x23422: 0x6c0a6a20,\n\t0x23426: 0x6c4b8a20,\n\t0x23429: 0x6c47e020, 0x2342a: 0x6c0e0020, 0x2342b: 0x6d1b9420,\n\t0x2342c: 0x6d3cbc20, 0x2342d: 0x6c47ec20, 0x2342f: 0x6c876820,\n\t0x23435: 0x6c35c420, 0x23436: 0x6c271420,\n\t0x2343c: 0x6c118620,\n\t// Block 0x8d1, offset 0x23440\n\t0x23442: 0x6ce3d420, 0x23443: 0x6c323620,\n\t0x23444: 0x6d168c20,\n\t0x23448: 0x6c2e6020, 0x2344a: 0x6ca97e20,\n\t0x2344c: 0x6d094420, 0x2344d: 0x6ca54a20, 0x2344e: 0x6c4b3220, 0x2344f: 0x6c779e20,\n\t0x23452: 0x6c201a20,\n\t0x23456: 0x6d2c2020, 0x23457: 0x6d1efc20,\n\t0x23459: 0x6c043420, 0x2345a: 0x6cd24a20, 0x2345b: 0x6c2d3e20,\n\t0x2345c: 0x6cabb420, 0x2345d: 0x6cc01620,\n\t0x23461: 0x6d094820, 0x23463: 0x6ca0e420,\n\t0x23464: 0x6c77e020, 0x23465: 0x6d1fb020, 0x23466: 0x6c68d220, 0x23467: 0x6c0ec620,\n\t0x2346c: 0x6d052020,\n\t0x23472: 0x6c9ce820, 0x23473: 0x6c95f220,\n\t0x23475: 0x6d094e20, 0x23477: 0x6c34e220,\n\t0x23479: 0x6c37c620, 0x2347a: 0x6cccd820,\n\t0x2347c: 0x6c7cee20, 0x2347d: 0x6ca52c20, 0x2347e: 0x6c9e1420, 0x2347f: 0x6c85ce20,\n\t// Block 0x8d2, offset 0x23480\n\t0x23480: 0x6c949620, 0x23482: 0x6c2e8420,\n\t0x23484: 0x6cb85620, 0x23485: 0x6c832a20, 0x23487: 0x6c997020,\n\t0x23489: 0x6c524c20, 0x2348a: 0x6c181620, 0x2348b: 0x6d35e620,\n\t0x2348d: 0x6c477c20, 0x2348e: 0x6c25b820,\n\t0x23493: 0x6cf4de20,\n\t0x23494: 0x6ce26420, 0x23497: 0x6cf61220,\n\t0x23498: 0x6d10a620, 0x23499: 0x6cefc620, 0x2349b: 0x6d40be20,\n\t0x2349c: 0x6c96be20, 0x2349d: 0x6d225a20, 0x2349e: 0x6caf0820, 0x2349f: 0x6d17a420,\n\t0x234a0: 0x6cbe1620, 0x234a1: 0x6d26b620, 0x234a2: 0x6c754c20, 0x234a3: 0x6c67e620,\n\t0x234a4: 0x6d06d820, 0x234a5: 0x6c07ea20,\n\t0x234aa: 0x6c95b020, 0x234ab: 0x6d3c6020,\n\t0x234b2: 0x6c326420, 0x234b3: 0x6cfe4020,\n\t0x234b6: 0x6c5be420,\n\t0x234ba: 0x6c479e20, 0x234bb: 0x6c77b020,\n\t0x234be: 0x6d037c20, 0x234bf: 0x6c5cf020,\n\t// Block 0x8d3, offset 0x234c0\n\t0x234c0: 0x6c0af820,\n\t0x234c4: 0x6c78c420, 0x234c5: 0x6c77b220,\n\t0x234c8: 0x6c25e820,\n\t0x234cf: 0x6c92a420,\n\t0x234d1: 0x6d41c620, 0x234d2: 0x6d2a2020, 0x234d3: 0x6c692e20,\n\t0x234d4: 0x6c49a020,\n\t0x234d9: 0x6d0c2220, 0x234da: 0x6c376620,\n\t0x234dc: 0x6cbe8820, 0x234df: 0x6c2ae820,\n\t0x234e0: 0x6cd8ea20, 0x234e1: 0x6cdc7220, 0x234e2: 0x6c8aa420,\n\t0x234e7: 0x6ccdb020,\n\t0x234e9: 0x6c0a6e20, 0x234ea: 0x6cf0e420, 0x234eb: 0x6d136020,\n\t0x234ed: 0x6d2d5020, 0x234ef: 0x6d129420,\n\t0x234f0: 0x6c2e4c20, 0x234f1: 0x6c00ee20,\n\t0x234f4: 0x6c680620, 0x234f7: 0x6cda6220,\n\t0x234f9: 0x6c581c20, 0x234fa: 0x6d246020,\n\t0x234fd: 0x6cc50a20,\n\t// Block 0x8d4, offset 0x23500\n\t0x23500: 0x6c2cfa20, 0x23501: 0x6d413e20, 0x23502: 0x6c047420,\n\t0x23504: 0x6cbd5a20, 0x23507: 0x6c633620,\n\t0x23509: 0x6cafcc20,\n\t0x2350c: 0x6ce7ec20,\n\t0x23510: 0x6c1da220,\n\t0x23515: 0x6c4af020,\n\t0x23520: 0x6c5ee620,\n\t0x23528: 0x6d096420, 0x2352a: 0x6c2d6020,\n\t0x2352d: 0x6c0bac20, 0x2352e: 0x6d291c20, 0x2352f: 0x6ce76820,\n\t0x23536: 0x6ccd5820,\n\t0x23538: 0x6c482620, 0x23539: 0x6cc3ec20,\n\t// Block 0x8d5, offset 0x23540\n\t0x23540: 0x6c47cc20,\n\t0x23548: 0x6c55b220, 0x23549: 0x6c7b0420,\n\t0x2354c: 0x6c46d820, 0x2354e: 0x6cdb3220,\n\t0x23550: 0x6c1df620, 0x23552: 0x6c795c20,\n\t0x23554: 0x6c317e20,\n\t0x23559: 0x6d190a20,\n\t0x2355c: 0x6c2a4220, 0x2355d: 0x6cbaf820,\n\t0x23563: 0x6c900220,\n\t0x23565: 0x6c84cc20, 0x23567: 0x6c87a020,\n\t0x23568: 0x6cbe6420, 0x2356a: 0x6ceed420,\n\t0x2356c: 0x6ca1bc20,\n\t0x23571: 0x6cb74420, 0x23573: 0x6c67a020,\n\t0x23574: 0x6d008c20,\n\t0x23579: 0x6c277820, 0x2357b: 0x6c90a420,\n\t// Block 0x8d6, offset 0x23580\n\t0x23582: 0x6c497620,\n\t0x23586: 0x6cadc820,\n\t0x23589: 0x6cafce20, 0x2358b: 0x6c735420,\n\t0x2358d: 0x6c06aa20, 0x2358e: 0x6c747c20, 0x2358f: 0x6c738420,\n\t0x23590: 0x6cd3b420,\n\t0x23595: 0x6d014a20,\n\t0x23598: 0x6cc8a820, 0x23599: 0x6c6ec220, 0x2359a: 0x6cb3be20, 0x2359b: 0x6cc9f420,\n\t0x235a0: 0x6c5e7a20,\n\t0x235a9: 0x6c3b1820, 0x235aa: 0x6c06e820, 0x235ab: 0x6c6bc220,\n\t0x235ac: 0x6cc94020, 0x235ae: 0x6caf3e20,\n\t0x235b4: 0x6c2c2220, 0x235b5: 0x6c98c820, 0x235b6: 0x6c03ec20, 0x235b7: 0x6c03ee20,\n\t0x235b8: 0x6ce57820, 0x235b9: 0x6c8cba20, 0x235ba: 0x6cd0f020, 0x235bb: 0x6d31c220,\n\t0x235bc: 0x6caf4620, 0x235bd: 0x6cf4c620, 0x235bf: 0x6d2b4220,\n\t// Block 0x8d7, offset 0x235c0\n\t0x235c0: 0x6c063a20,\n\t0x235c7: 0x6c938020,\n\t0x235d6: 0x6c4fa020, 0x235d7: 0x6c30e020,\n\t0x235d8: 0x6c3e0e20, 0x235d9: 0x6ca5c420,\n\t0x235dd: 0x6c43de20,\n\t0x235e0: 0x6cc79820, 0x235e1: 0x6cfbfc20,\n\t0x235e4: 0x6c096020,\n\t0x235ee: 0x6c98d220,\n\t0x235f2: 0x6cc70a20, 0x235f3: 0x6cc04c20,\n\t0x235f7: 0x6c0ee820,\n\t0x235f9: 0x6c4fa620, 0x235fa: 0x6ca4ee20, 0x235fb: 0x6d0c8620,\n\t// Block 0x8d8, offset 0x23600\n\t0x23603: 0x6cad5c20,\n\t0x23604: 0x6cdbc020, 0x23606: 0x6ceba220,\n\t0x23608: 0x6cc10a20, 0x23609: 0x6c83d620, 0x2360a: 0x6c2a7220,\n\t0x2360c: 0x6c6aca20, 0x2360d: 0x6c6acc20, 0x2360e: 0x6c4bc820, 0x2360f: 0x6c649c20,\n\t0x23610: 0x6c099e20,\n\t0x23620: 0x6cca5620, 0x23621: 0x6c053020, 0x23622: 0x6c214a20,\n\t0x23626: 0x6ca3c220, 0x23627: 0x6c054e20,\n\t0x2362a: 0x6cc68820, 0x2362b: 0x6c636c20,\n\t0x2362c: 0x6cd9c220,\n\t0x23630: 0x6c2a7420,\n\t0x2363e: 0x6cfaac20, 0x2363f: 0x6d2d8020,\n\t// Block 0x8d9, offset 0x23640\n\t0x23640: 0x6c999620, 0x23643: 0x6d3e5020,\n\t0x23645: 0x6c623c20, 0x23646: 0x6cb61c20,\n\t0x2364b: 0x6cc82420,\n\t0x2364c: 0x6cdd2c20, 0x2364d: 0x6cc71620, 0x2364e: 0x6cf50c20, 0x2364f: 0x6cc69620,\n\t0x23650: 0x6cc69820,\n\t0x2365a: 0x6cde7620,\n\t0x2365c: 0x6cd9d020,\n\t0x23664: 0x6c842c20, 0x23667: 0x6c24fc20,\n\t0x23668: 0x6d3fb020, 0x23669: 0x6c9ad220, 0x2366a: 0x6cf80820,\n\t0x2366c: 0x6c989e20, 0x2366d: 0x6ca86220, 0x2366f: 0x6cdbd220,\n\t0x23671: 0x6cadea20,\n\t0x23674: 0x6c0a2820, 0x23675: 0x6c2c9020,\n\t0x23678: 0x6cc1be20, 0x23679: 0x6cbbfa20, 0x2367b: 0x6c3b4420,\n\t0x2367c: 0x6cdb1620,\n\t// Block 0x8da, offset 0x23680\n\t0x23683: 0x6d05e620,\n\t0x23687: 0x6cc72420,\n\t0x23688: 0x6c5f3220, 0x2368b: 0x6cc1d620,\n\t0x2368c: 0x6c8b3820,\n\t0x23695: 0x6ccafe20,\n\t0x23698: 0x6c7dd620, 0x2369a: 0x6c257620, 0x2369b: 0x6d136c20,\n\t0x2369c: 0x6c0e3220, 0x2369e: 0x6c6b5c20,\n\t0x236a0: 0x6cc1e020, 0x236a1: 0x6cc1e220,\n\t0x236a5: 0x6c9b6e20, 0x236a6: 0x6cc49020,\n\t0x236a8: 0x6c0d5e20, 0x236a9: 0x6c178220,\n\t0x236ac: 0x6c31d420,\n\t0x236b6: 0x6cc4ec20, 0x236b7: 0x6cfb0220,\n\t0x236ba: 0x6ce25220, 0x236bb: 0x6cc20a20,\n\t0x236bc: 0x6ca8b420, 0x236bf: 0x6cd51c20,\n\t// Block 0x8db, offset 0x236c0\n\t0x236c0: 0x6c920220, 0x236c2: 0x6c7dda20,\n\t0x236c8: 0x6c9f3620, 0x236c9: 0x6c9f9e20,\n\t0x236cd: 0x6c287e20,\n\t0x236d0: 0x6d1b6820, 0x236d3: 0x6d001020,\n\t0x236d7: 0x6c618820,\n\t0x236dc: 0x6d19b220,\n\t0x236e6: 0x6c3b3820, 0x236e7: 0x6d383420,\n\t0x236eb: 0x6c47c020,\n\t0x236f1: 0x6c13c420, 0x236f3: 0x6c8e3c20,\n\t0x236f6: 0x6c102c20,\n\t0x236fa: 0x6cabae20, 0x236fb: 0x6cd87620,\n\t0x236fc: 0x6c29b820, 0x236fd: 0x6d31b020,\n\t// Block 0x8dc, offset 0x23700\n\t0x23700: 0x6cccb620, 0x23702: 0x6c1fbe20,\n\t0x23704: 0x6c6fa820,\n\t0x2370a: 0x6c787620, 0x2370b: 0x6c1af820,\n\t0x23711: 0x6c565c20, 0x23712: 0x6c858220, 0x23713: 0x6ccbc620,\n\t0x23716: 0x6cac1820, 0x23717: 0x6ceee220,\n\t0x23718: 0x6cf42620,\n\t0x2371c: 0x6d1c5420,\n\t0x23721: 0x6ccbc820, 0x23722: 0x6c2b1020,\n\t0x23725: 0x6c27b820,\n\t0x23731: 0x6ce83a20, 0x23732: 0x6c50ca20, 0x23733: 0x6cb34e20,\n\t0x23735: 0x6d34f620, 0x23736: 0x6ca98020, 0x23737: 0x6ca67e20,\n\t0x2373d: 0x6cc6f820, 0x2373e: 0x6c48ea20,\n\t// Block 0x8dd, offset 0x23740\n\t0x23740: 0x6d343e20, 0x23743: 0x6c5fe220,\n\t0x2375c: 0x6c392c20, 0x2375f: 0x6c6a8020,\n\t0x23760: 0x6c4d3820,\n\t0x23764: 0x6d2e4e20, 0x23766: 0x6cf86420,\n\t0x23769: 0x6d3e1220,\n\t0x2376c: 0x6cf76e20, 0x2376d: 0x6cb1ac20,\n\t0x23770: 0x6c078020, 0x23772: 0x6c657220,\n\t// Block 0x8de, offset 0x23780\n\t0x23793: 0x6c665c20,\n\t0x23796: 0x6d28ae20,\n\t0x2379e: 0x6c07ac20, 0x2379f: 0x6c995e20,\n\t0x237a2: 0x6d2a7620, 0x237a3: 0x6d3c3820,\n\t0x237a5: 0x6c7bbe20,\n\t0x237a8: 0x6c089e20, 0x237aa: 0x6cac2220,\n\t0x237bc: 0x6c996020, 0x237bd: 0x6ce09020,\n\t// Block 0x8df, offset 0x237c0\n\t0x237de: 0x6cea7a20, 0x237df: 0x6c95aa20,\n\t0x237e2: 0x6cdf9a20,\n\t0x237f1: 0x6c016a20,\n\t0x237f7: 0x6c4e0420,\n\t0x237f8: 0x6d3a0c20, 0x237fa: 0x6c34e820, 0x237fb: 0x6c34ea20,\n\t0x237fc: 0x6c421c20,\n\t// Block 0x8e0, offset 0x23800\n\t0x23806: 0x6cbf8c20,\n\t0x23808: 0x6cee1220, 0x2380a: 0x6ca10420, 0x2380b: 0x6d30f220,\n\t0x2380c: 0x6cf1d620, 0x2380d: 0x6d3c3a20, 0x2380f: 0x6c69fe20,\n\t0x23810: 0x6cad8e20,\n\t0x23818: 0x6cdaa820,\n\t0x2381d: 0x6c724020,\n\t0x23820: 0x6cb4ec20, 0x23821: 0x6c11f420, 0x23823: 0x6ce94a20,\n\t0x23824: 0x6ccbec20, 0x23826: 0x6ceb1620,\n\t0x23829: 0x6c579420, 0x2382b: 0x6d176220,\n\t// Block 0x8e1, offset 0x23840\n\t0x23860: 0x6c9f4820, 0x23861: 0x6d37b420,\n\t0x23865: 0x6cd77e20,\n\t0x23869: 0x6d176420, 0x2386a: 0x6cee1420, 0x2386b: 0x6c024220,\n\t0x23876: 0x6cda7820,\n\t0x2387e: 0x6c4b0020, 0x2387f: 0x6ceb8020,\n\t// Block 0x8e2, offset 0x23880\n\t0x23880: 0x6c5b5220, 0x23883: 0x6d06dc20,\n\t0x23884: 0x6d296c20, 0x23886: 0x6d3f1220, 0x23887: 0x6c0b9e20,\n\t0x23889: 0x6c26a620, 0x2388a: 0x6d19ca20, 0x2388b: 0x6cc35c20,\n\t0x2388e: 0x6c580e20, 0x2388f: 0x6ca2e020,\n\t0x23890: 0x6d28ba20, 0x23892: 0x6ce32620,\n\t0x23898: 0x6d14f820, 0x23899: 0x6cdfaa20, 0x2389a: 0x6ccf1820, 0x2389b: 0x6cd78220,\n\t0x2389d: 0x6d03e620,\n\t0x238a0: 0x6d1fce20, 0x238a3: 0x6c3b7620,\n\t// Block 0x8e3, offset 0x238c0\n\t0x238c7: 0x6c78b220,\n\t0x238cb: 0x6c3e7c20,\n\t0x238d2: 0x6c9fb220,\n\t0x238da: 0x6cb09820,\n\t0x238dc: 0x6c604220, 0x238dd: 0x6cbc4a20, 0x238de: 0x6d37fc20, 0x238df: 0x6c422820,\n\t0x238e0: 0x6d24f820, 0x238e1: 0x6c1b3620,\n\t0x238e5: 0x6cba5a20, 0x238e7: 0x6d424220,\n\t0x238e9: 0x6d00bc20, 0x238ea: 0x6c98ea20,\n\t0x238ec: 0x6c556e20, 0x238ee: 0x6cb0a420, 0x238ef: 0x6d0a9420,\n\t0x238f1: 0x6cf9d220, 0x238f2: 0x6ce34420,\n\t0x238f5: 0x6ca34e20, 0x238f6: 0x6c1fac20,\n\t// Block 0x8e4, offset 0x23900\n\t0x23900: 0x6cf45020,\n\t0x2392c: 0x6c599820, 0x2392d: 0x6d096620, 0x2392e: 0x6ce26620,\n\t0x23930: 0x6cbc4c20, 0x23933: 0x6c685020,\n\t0x2393c: 0x6c293020, 0x2393d: 0x6c044620,\n\t// Block 0x8e5, offset 0x23940\n\t0x2394d: 0x6c297620, 0x2394e: 0x6c79f820,\n\t0x23950: 0x6c70b220, 0x23951: 0x6ccc0a20, 0x23952: 0x6c6dc820,\n\t0x23955: 0x6ca06c20, 0x23956: 0x6caa0220,\n\t0x23958: 0x6cd78e20, 0x2395a: 0x6cd5f820, 0x2395b: 0x6d3c2020,\n\t0x2395c: 0x6c3ec220, 0x2395f: 0x6d29de20,\n\t0x23960: 0x6d00cc20, 0x23961: 0x6c812820, 0x23962: 0x6ce70420,\n\t0x23969: 0x6d306e20,\n\t0x2396c: 0x6c11fe20, 0x2396e: 0x6d26cc20,\n\t0x23971: 0x6d393620,\n\t// Block 0x8e6, offset 0x23980\n\t0x2399a: 0x6cdfb420,\n\t0x2399e: 0x6d0cb420, 0x2399f: 0x6c928820,\n\t0x239a0: 0x6d0db620,\n\t0x239a6: 0x6d2ae020, 0x239a7: 0x6cd66c20,\n\t// Block 0x8e7, offset 0x239c0\n\t0x239c5: 0x6c4c3620, 0x239c6: 0x6d3a2020,\n\t0x239c8: 0x6cc7bc20, 0x239c9: 0x6cc7be20,\n\t0x239cc: 0x6c76e620, 0x239cd: 0x6c626220, 0x239ce: 0x6c42da20,\n\t0x239d2: 0x6d01fa20,\n\t0x239d5: 0x6caba220, 0x239d6: 0x6c64d420,\n\t0x239da: 0x6d349220, 0x239db: 0x6d2c4820,\n\t0x239dd: 0x6c53a820, 0x239df: 0x6c7b7020,\n\t0x239e1: 0x6c0f4420,\n\t0x239e4: 0x6ccb4820, 0x239e5: 0x6c01cc20, 0x239e6: 0x6c66b820,\n\t0x239e8: 0x6ce2ac20, 0x239eb: 0x6cd93420,\n\t0x239ed: 0x6c9c0c20, 0x239ee: 0x6d1a9420, 0x239ef: 0x6cdfb620,\n\t0x239f0: 0x6c4c3820, 0x239f3: 0x6cc84620,\n\t0x239f4: 0x6cf0ba20, 0x239f7: 0x6cd8de20,\n\t// Block 0x8e8, offset 0x23a00\n\t0x23a24: 0x6cb7c220, 0x23a26: 0x6d2f0a20,\n\t// Block 0x8e9, offset 0x23a40\n\t0x23a45: 0x6c304020, 0x23a46: 0x6c3eee20, 0x23a47: 0x6cd07620,\n\t0x23a48: 0x6cdb1a20, 0x23a49: 0x6d18a020, 0x23a4a: 0x6c891820,\n\t0x23a4c: 0x6c516e20, 0x23a4e: 0x6d319420,\n\t0x23a50: 0x6d2afe20, 0x23a52: 0x6c250c20, 0x23a53: 0x6c250e20,\n\t0x23a5d: 0x6c3cf220, 0x23a5e: 0x6c853220, 0x23a5f: 0x6c7a0220,\n\t0x23a63: 0x6d000620,\n\t0x23a64: 0x6d1fee20,\n\t// Block 0x8ea, offset 0x23a80\n\t0x23a83: 0x6c4fea20,\n\t0x23a89: 0x6c4f0620, 0x23a8a: 0x6c790c20,\n\t0x23a9d: 0x6d23ec20,\n\t0x23aa3: 0x6c58e220,\n\t0x23aa4: 0x6cdd3e20, 0x23aa6: 0x6c7e9c20,\n\t0x23aa8: 0x6c313c20, 0x23aa9: 0x6c66de20, 0x23aaa: 0x6cb32020, 0x23aab: 0x6c0b5420,\n\t0x23ab0: 0x6d097420, 0x23ab2: 0x6c0bc820,\n\t0x23ab7: 0x6cf0e620,\n\t// Block 0x8eb, offset 0x23ac0\n\t0x23ae1: 0x6c28d620, 0x23ae2: 0x6c6b5e20, 0x23ae3: 0x6c046020,\n\t0x23ae5: 0x6ca74420, 0x23ae6: 0x6cfd2620, 0x23ae7: 0x6ccb7620,\n\t0x23aea: 0x6c576420, 0x23aeb: 0x6c1fa420,\n\t0x23aee: 0x6caba620, 0x23aef: 0x6c8b5020,\n\t0x23af0: 0x6c2ba420, 0x23af1: 0x6c114e20, 0x23af3: 0x6d2c5e20,\n\t0x23af5: 0x6c936820,\n\t0x23af9: 0x6c5e1420,\n\t0x23afc: 0x6c86ce20, 0x23afd: 0x6d1d1620, 0x23aff: 0x6cf03a20,\n\t// Block 0x8ec, offset 0x23b00\n\t0x23b00: 0x6c0a8c20, 0x23b01: 0x6c4c9620, 0x23b03: 0x6cb0ce20,\n\t0x23b06: 0x6c0c3a20,\n\t0x23b20: 0x6d0dea20,\n\t0x23b24: 0x6d3bee20,\n\t0x23b32: 0x6c539420,\n\t0x23b36: 0x6c8c7820, 0x23b37: 0x6c36ce20,\n\t0x23b39: 0x6d1b1820, 0x23b3a: 0x6c808020,\n\t0x23b3c: 0x6d123820, 0x23b3f: 0x6d08c820,\n\t// Block 0x8ed, offset 0x23b40\n\t0x23b40: 0x6c86fa20,\n\t0x23b68: 0x6c808420, 0x23b69: 0x6c8d9020, 0x23b6a: 0x6cf73820, 0x23b6b: 0x6c52de20,\n\t0x23b6d: 0x6c696a20, 0x23b6e: 0x6d3dd220,\n\t0x23b72: 0x6d34b620,\n\t0x23b75: 0x6c0fb820, 0x23b76: 0x6ce29620, 0x23b77: 0x6c019820,\n\t0x23b7a: 0x6d0a5220, 0x23b7b: 0x6c82fa20,\n\t0x23b7c: 0x6d29ec20, 0x23b7d: 0x6c5b7c20,\n\t// Block 0x8ee, offset 0x23b80\n\t0x23b8e: 0x6cf92620, 0x23b8f: 0x6c539820,\n\t0x23b91: 0x6c397820, 0x23b92: 0x6c662420, 0x23b93: 0x6c23c820,\n\t0x23b94: 0x6d28da20, 0x23b96: 0x6c10e020,\n\t0x23b98: 0x6d1ece20, 0x23b9b: 0x6c338820,\n\t0x23b9c: 0x6cac4e20,\n\t0x23ba5: 0x6cdede20, 0x23ba7: 0x6cacc420,\n\t0x23bab: 0x6c386e20,\n\t0x23bac: 0x6cf74620,\n\t0x23bb6: 0x6d124c20, 0x23bb7: 0x6c957620,\n\t0x23bba: 0x6c0b2220,\n\t0x23bbc: 0x6c6d7420, 0x23bbd: 0x6c876a20,\n\t// Block 0x8ef, offset 0x23bc0\n\t0x23bca: 0x6d0f0a20, 0x23bcb: 0x6c315020,\n\t0x23bce: 0x6c981620,\n\t0x23bd0: 0x6c45ca20, 0x23bd1: 0x6cc51420, 0x23bd2: 0x6c121220,\n\t0x23be3: 0x6c9ae420,\n\t0x23bf1: 0x6c47fc20, 0x23bf2: 0x6cd69e20,\n\t0x23bf8: 0x6d0d2020, 0x23bf9: 0x6c0adc20,\n\t// Block 0x8f0, offset 0x23c00\n\t0x23c00: 0x6c0c6a20, 0x23c01: 0x6c1a6220, 0x23c02: 0x6c7ce620,\n\t0x23c04: 0x6c5d8820,\n\t0x23c0d: 0x6c1be620, 0x23c0f: 0x6cf2d020,\n\t0x23c11: 0x6c23e820, 0x23c12: 0x6d357a20,\n\t0x23c19: 0x6cd70820,\n\t0x23c1c: 0x6c48a220, 0x23c1d: 0x6cb40020, 0x23c1e: 0x6d068620, 0x23c1f: 0x6cd7d020,\n\t0x23c21: 0x6cf42e20,\n\t0x23c2e: 0x6c3d4020,\n\t0x23c30: 0x6cd31e20, 0x23c33: 0x6c5b9220,\n\t0x23c34: 0x6c597c20, 0x23c35: 0x6cabb620,\n\t0x23c3c: 0x6d3a5e20, 0x23c3e: 0x6d14a220,\n\t// Block 0x8f1, offset 0x23c40\n\t0x23c43: 0x6c85a820,\n\t0x23c44: 0x6ccd3420,\n\t0x23c5c: 0x6c9f3820, 0x23c5e: 0x6c437c20,\n\t0x23c60: 0x6c54b020,\n\t0x23c6f: 0x6c371220,\n\t0x23c70: 0x6c380e20, 0x23c73: 0x6d06aa20,\n\t0x23c74: 0x6d14ca20,\n\t0x23c7e: 0x6d1d3620,\n\t// Block 0x8f2, offset 0x23c80\n\t0x23c94: 0x6c1b1820,\n\t0x23c99: 0x6d14cc20,\n\t0x23ca5: 0x6c2b6a20, 0x23ca6: 0x6c5b5020, 0x23ca7: 0x6c510c20,\n\t0x23ca9: 0x6d2c7a20,\n\t0x23cb6: 0x6d27a420, 0x23cb7: 0x6cfa9c20,\n\t// Block 0x8f3, offset 0x23cc0\n\t0x23ccc: 0x6cfb4c20, 0x23ccd: 0x6c81d220, 0x23cce: 0x6cced420, 0x23ccf: 0x6cd36820,\n\t0x23cd0: 0x6d3d5220,\n\t0x23ce4: 0x6c0ca820, 0x23ce5: 0x6c6fc020, 0x23ce6: 0x6cf29220, 0x23ce7: 0x6c68f820,\n\t0x23ce8: 0x6c3e7e20, 0x23cea: 0x6cfd7620, 0x23ceb: 0x6c768a20,\n\t// Block 0x8f4, offset 0x23d00\n\t0x23d32: 0x6ca4fe20,\n\t0x23d34: 0x6c5ddc20, 0x23d35: 0x6c605620, 0x23d36: 0x6c7e7e20,\n\t0x23d3b: 0x6c3d1220,\n\t0x23d3c: 0x6ccd4c20, 0x23d3d: 0x6c8a9c20, 0x23d3e: 0x6c9ee020, 0x23d3f: 0x6c182620,\n\t// Block 0x8f5, offset 0x23d40\n\t0x23d42: 0x6ca05e20,\n\t0x23d4f: 0x6c909820,\n\t0x23d68: 0x6c34f620, 0x23d6b: 0x6ca50020,\n\t0x23d6d: 0x6c5ee820,\n\t0x23d70: 0x6d3b0820,\n\t// Block 0x8f6, offset 0x23d80\n\t0x23d82: 0x6cdad220, 0x23d83: 0x6c34f820,\n\t0x23d87: 0x6c6f2820,\n\t0x23d8a: 0x6d291e20, 0x23d8b: 0x6c5b5c20,\n\t0x23d8c: 0x6d1cfe20, 0x23d8d: 0x6c557a20, 0x23d8e: 0x6c8c5820, 0x23d8f: 0x6cf25820,\n\t0x23d90: 0x6c4ee820,\n\t0x23d94: 0x6ca40620,\n\t0x23db7: 0x6cf8b020,\n\t0x23db9: 0x6c422c20,\n\t0x23dbe: 0x6c51d420, 0x23dbf: 0x6c5f0820,\n\t// Block 0x8f7, offset 0x23dc0\n\t0x23dc0: 0x6cfdf020, 0x23dc1: 0x6ccc0c20,\n\t0x23dd0: 0x6cea0c20, 0x23dd2: 0x6d2f6c20, 0x23dd3: 0x6cd60420,\n\t0x23dd5: 0x6d1fe820, 0x23dd6: 0x6c64d820,\n\t0x23ddc: 0x6d2a8c20,\n\t0x23de4: 0x6d2ed820,\n\t0x23dfd: 0x6cc92c20,\n\t// Block 0x8f8, offset 0x23e00\n\t0x23e04: 0x6d0c2420,\n\t0x23e0b: 0x6c255a20,\n\t0x23e17: 0x6c608a20,\n\t0x23e18: 0x6cce1a20,\n\t0x23e23: 0x6c36a820,\n\t0x23e24: 0x6c817420, 0x23e25: 0x6ce07820, 0x23e27: 0x6d3b2820,\n\t0x23e2d: 0x6c8c3620, 0x23e2f: 0x6d2b9220,\n\t0x23e31: 0x6c732a20, 0x23e32: 0x6c550220,\n\t// Block 0x8f9, offset 0x23e40\n\t0x23e57: 0x6cd07820,\n\t0x23e58: 0x6c5dfa20,\n\t0x23e5c: 0x6c7d2020,\n\t0x23e71: 0x6c1f7620, 0x23e72: 0x6d395020,\n\t0x23e76: 0x6c023020,\n\t0x23e78: 0x6d3db220,\n\t0x23e7d: 0x6d03a420, 0x23e7f: 0x6c9ef420,\n\t// Block 0x8fa, offset 0x23e80\n\t0x23e80: 0x6c550c20,\n\t0x23e94: 0x6ce01a20,\n\t0x23e99: 0x6c0a7220,\n\t0x23ea3: 0x6c2f8420,\n\t0x23ea9: 0x6c769820, 0x23eab: 0x6c0c3c20,\n\t0x23eb0: 0x6c5e1620, 0x23eb1: 0x6c8b5220, 0x23eb2: 0x6c24b820,\n\t// Block 0x8fb, offset 0x23ec0\n\t0x23ec3: 0x6cfd2820,\n\t0x23ec4: 0x6cc55620,\n\t0x23ed3: 0x6d270220,\n\t0x23ed5: 0x6d09be20, 0x23ed7: 0x6c8a8020,\n\t0x23ee3: 0x6ccc2a20,\n\t0x23ee6: 0x6cd3fc20,\n\t0x23eea: 0x6d025c20,\n\t0x23ef3: 0x6cff4a20,\n\t0x23ef7: 0x6d129620,\n\t0x23ef8: 0x6c805020, 0x23ef9: 0x6d192e20,\n\t0x23eff: 0x6c88da20,\n\t// Block 0x8fc, offset 0x23f00\n\t0x23f14: 0x6c0fba20, 0x23f15: 0x6c126e20,\n\t0x23f1d: 0x6d124220,\n\t0x23f26: 0x6c893620,\n\t0x23f3b: 0x6cdef020,\n\t// Block 0x8fd, offset 0x23f40\n\t0x23f51: 0x6c62ec20,\n\t0x23f54: 0x6cf75220, 0x23f55: 0x6d377020,\n\t0x23f5a: 0x6cf75620,\n\t0x23f5d: 0x6d273220,\n\t0x23f64: 0x6cfc6c20, 0x23f66: 0x6d3df820,\n\t0x23f6f: 0x6d2ef820,\n\t0x23f75: 0x6d410620, 0x23f77: 0x6ca2ce20,\n\t0x23f7e: 0x6c2a0420, 0x23f7f: 0x6c8ad620,\n\t// Block 0x8fe, offset 0x23f80\n\t0x23f80: 0x6ca2d220,\n\t0x23f89: 0x6cad5420, 0x23f8b: 0x6c721620,\n\t0x23f96: 0x6c95b220,\n\t0x23f99: 0x6cd64820, 0x23f9a: 0x6cce5420,\n\t0x23f9d: 0x6c95b420, 0x23f9f: 0x6c3b3a20,\n\t0x23fa3: 0x6c065820,\n\t0x23fa8: 0x6c865820, 0x23fab: 0x6d04a220,\n\t0x23fb6: 0x6c290820,\n\t// Block 0x8ff, offset 0x23fc0\n\t0x23fc0: 0x6c1a8c20,\n\t0x23fc4: 0x6d2f1420, 0x23fc7: 0x6cda3a20,\n\t0x23fca: 0x6cd03e20,\n\t0x23fd2: 0x6c447220,\n\t0x23fd8: 0x6d209020, 0x23fda: 0x6c5ad420, 0x23fdb: 0x6c183e20,\n\t0x23fdd: 0x6c698420, 0x23fde: 0x6d3ac420, 0x23fdf: 0x6cd4b220,\n\t0x23fe2: 0x6cff8420,\n\t0x23fe6: 0x6ca91420,\n\t0x23fed: 0x6c674420, 0x23fef: 0x6c674820,\n\t0x23ff7: 0x6c2e0e20,\n\t0x23ffd: 0x6cbb0c20, 0x23ffe: 0x6cc04e20,\n\t// Block 0x900, offset 0x24000\n\t0x24000: 0x6c3c4020,\n\t0x24006: 0x6d2e6620, 0x24007: 0x6c77fa20,\n\t0x24012: 0x6c2ece20, 0x24013: 0x6d2aec20,\n\t0x24016: 0x6c49f820, 0x24017: 0x6ccb5c20,\n\t0x24018: 0x6c3bea20, 0x2401b: 0x6c67bc20,\n\t0x2401d: 0x6d0cd820, 0x2401e: 0x6d370820,\n\t0x24022: 0x6c872220,\n\t0x24026: 0x6c8ddc20,\n\t0x2402a: 0x6d146420,\n\t0x2402c: 0x6cc23e20, 0x2402d: 0x6cac5220, 0x2402e: 0x6c463a20,\n\t0x24030: 0x6c640220, 0x24031: 0x6c50da20, 0x24033: 0x6caf0c20,\n\t0x24035: 0x6c721820, 0x24037: 0x6c180620,\n\t0x2403a: 0x6c8af220, 0x2403b: 0x6cd35220,\n\t0x2403c: 0x6cb37a20, 0x2403d: 0x6cfe2820, 0x2403f: 0x6cb08e20,\n\t// Block 0x901, offset 0x24040\n\t0x24040: 0x6c95ae20, 0x24041: 0x6c243420, 0x24043: 0x6d225020,\n\t0x24047: 0x6c79a820,\n\t0x24048: 0x6d01b020,\n\t0x2404d: 0x6ced1e20, 0x2404e: 0x6d0d8e20, 0x2404f: 0x6cadd820,\n\t0x24053: 0x6c1a0620,\n\t0x24058: 0x6ce34620, 0x24059: 0x6c182820, 0x2405a: 0x6c09ce20, 0x2405b: 0x6c890820,\n\t0x2405c: 0x6c641e20, 0x2405e: 0x6ce68220,\n\t0x24062: 0x6ce2f620,\n\t0x24068: 0x6c2edc20, 0x2406a: 0x6cd60620, 0x2406b: 0x6c842e20,\n\t0x2406c: 0x6c936020, 0x2406d: 0x6cf97420, 0x2406f: 0x6c24e420,\n\t0x24073: 0x6c0e9220,\n\t0x24074: 0x6ce9ba20, 0x24075: 0x6cb45020, 0x24077: 0x6c8c6220,\n\t0x24078: 0x6c3bec20, 0x2407a: 0x6c0f7620, 0x2407b: 0x6c163620,\n\t0x2407e: 0x6c290a20, 0x2407f: 0x6cdf5820,\n\t// Block 0x902, offset 0x24080\n\t0x24080: 0x6c2a3c20, 0x24083: 0x6c872420,\n\t0x24085: 0x6d0b1220, 0x24086: 0x6d0b1820, 0x24087: 0x6d2d6620,\n\t0x2408a: 0x6d14e220,\n\t0x2408c: 0x6cb4fa20,\n\t0x24094: 0x6c564420, 0x24096: 0x6ce62a20,\n\t0x24098: 0x6c79cc20, 0x2409b: 0x6c213220,\n\t0x2409c: 0x6d1f0020, 0x2409d: 0x6c3bd020, 0x2409f: 0x6caab220,\n\t0x240a0: 0x6ce53020, 0x240a1: 0x6c6cde20, 0x240a2: 0x6cafbc20, 0x240a3: 0x6c18a420,\n\t0x240a4: 0x6cb08820, 0x240a6: 0x6c6bc420, 0x240a7: 0x6c4ac820,\n\t0x240b2: 0x6d3c3220,\n\t0x240b5: 0x6c552420, 0x240b6: 0x6c1e2420, 0x240b7: 0x6cd5a020,\n\t0x240b8: 0x6ce1b420, 0x240b9: 0x6cafc620, 0x240ba: 0x6cc70020, 0x240bb: 0x6cc70220,\n\t0x240bd: 0x6c544e20, 0x240be: 0x6cae5a20,\n\t// Block 0x903, offset 0x240c0\n\t0x240c5: 0x6c043e20, 0x240c7: 0x6cf99a20,\n\t0x240cb: 0x6cbdcc20,\n\t0x240cc: 0x6ca63220, 0x240ce: 0x6ce1b620, 0x240cf: 0x6cc26a20,\n\t0x240d2: 0x6d008e20,\n\t0x240d4: 0x6d2fa820, 0x240d5: 0x6c570e20, 0x240d6: 0x6d02c820,\n\t0x240d8: 0x6cd42e20, 0x240db: 0x6ce8a620,\n\t0x240dd: 0x6c895020, 0x240de: 0x6c097c20, 0x240df: 0x6c1e5a20,\n\t0x240e1: 0x6d037020, 0x240e3: 0x6d02cc20,\n\t0x240e4: 0x6c3d6820,\n\t0x240e9: 0x6c6bde20,\n\t0x240ed: 0x6c3f5e20,\n\t0x240f0: 0x6ce27a20, 0x240f1: 0x6ccf4c20,\n\t0x240f4: 0x6c174620, 0x240f5: 0x6c20b820,\n\t0x240fc: 0x6cc47a20, 0x240fd: 0x6c545620, 0x240fe: 0x6c07ec20,\n\t// Block 0x904, offset 0x24100\n\t0x24100: 0x6c113020,\n\t0x24105: 0x6ca21420,\n\t0x24109: 0x6d059e20, 0x2410a: 0x6c2eaa20,\n\t0x2410d: 0x6c15c220, 0x2410e: 0x6d215c20, 0x2410f: 0x6d383620,\n\t0x24113: 0x6c83e620,\n\t0x24114: 0x6cd43420,\n\t0x2411a: 0x6c31a420,\n\t0x2411c: 0x6c98bc20, 0x2411d: 0x6c59d420, 0x2411f: 0x6ce22c20,\n\t0x24121: 0x6c326620, 0x24122: 0x6ce34820, 0x24123: 0x6cd10820,\n\t0x24124: 0x6c9a0e20,\n\t0x24128: 0x6d316820, 0x24129: 0x6cbd9020, 0x2412a: 0x6cb0ae20, 0x2412b: 0x6ce11620,\n\t0x2412c: 0x6c123820, 0x2412d: 0x6d112420, 0x2412f: 0x6d054620,\n\t0x24130: 0x6c053620, 0x24131: 0x6c47b220,\n\t0x24135: 0x6c10aa20,\n\t0x2413c: 0x6c46c620, 0x2413d: 0x6c0f2e20,\n\t// Block 0x905, offset 0x24140\n\t0x24141: 0x6cf21020,\n\t0x24144: 0x6c624420,\n\t0x2414a: 0x6c7e4c20,\n\t0x2414d: 0x6c24e620, 0x2414e: 0x6c9fc820, 0x2414f: 0x6c242820,\n\t0x24150: 0x6cab4e20, 0x24151: 0x6d1da620,\n\t0x24156: 0x6c98fe20, 0x24157: 0x6c78c820,\n\t0x24158: 0x6c981e20, 0x24159: 0x6c2f8020, 0x2415a: 0x6c582e20, 0x2415b: 0x6c34ac20,\n\t0x2415c: 0x6c677420, 0x2415d: 0x6cdb0220,\n\t0x24162: 0x6c135c20, 0x24163: 0x6cde9e20,\n\t0x24165: 0x6c59f820, 0x24166: 0x6c74be20, 0x24167: 0x6d0a4020,\n\t0x2416a: 0x6d04a620,\n\t0x2416c: 0x6c9d8820, 0x2416d: 0x6cc45620, 0x2416e: 0x6c817620,\n\t0x24171: 0x6d370a20, 0x24172: 0x6cf02820,\n\t0x24177: 0x6ccb6e20,\n\t0x2417b: 0x6d29ea20,\n\t// Block 0x906, offset 0x24180\n\t0x24181: 0x6c019620, 0x24182: 0x6cf10c20,\n\t0x24184: 0x6c581e20, 0x24187: 0x6d2e9e20,\n\t0x24189: 0x6d1c2c20, 0x2418a: 0x6c43bc20, 0x2418b: 0x6c5c9220,\n\t0x2418d: 0x6cc33420,\n\t0x24193: 0x6c8b7c20,\n\t0x24194: 0x6c719a20, 0x24195: 0x6c03de20, 0x24196: 0x6c82a620,\n\t0x24198: 0x6c97ac20, 0x24199: 0x6c8dde20,\n\t0x2419c: 0x6c856a20, 0x2419d: 0x6c611420,\n\t0x241a1: 0x6c5b1620, 0x241a2: 0x6d031820, 0x241a3: 0x6cd30020,\n\t0x241a4: 0x6d300e20, 0x241a7: 0x6c0e4820,\n\t0x241ab: 0x6c137a20,\n\t0x241af: 0x6c137e20,\n\t0x241b0: 0x6c6d8c20, 0x241b1: 0x6c031c20, 0x241b2: 0x6c06da20,\n\t0x241b5: 0x6d0e3c20, 0x241b7: 0x6c565e20,\n\t0x241b9: 0x6d20ba20, 0x241bb: 0x6c091e20,\n\t0x241bc: 0x6c1ff220, 0x241be: 0x6c612220,\n\t// Block 0x907, offset 0x241c0\n\t0x241c2: 0x6ca26c20,\n\t0x241c4: 0x6c98c420, 0x241c5: 0x6d379420, 0x241c7: 0x6d12c620,\n\t0x241c8: 0x6c30a020, 0x241c9: 0x6d12a420,\n\t0x241cd: 0x6cc63c20, 0x241ce: 0x6d19a620,\n\t0x241d0: 0x6c501e20, 0x241d2: 0x6ca31220, 0x241d3: 0x6ce61020,\n\t0x241d4: 0x6c3fb620, 0x241d5: 0x6ca22c20, 0x241d6: 0x6d291020,\n\t0x241d8: 0x6c552820, 0x241da: 0x6c185c20, 0x241db: 0x6ceaf420,\n\t0x241de: 0x6c1f1220, 0x241df: 0x6c3df820,\n\t0x241e7: 0x6c063420,\n\t0x241ec: 0x6c2bde20, 0x241ed: 0x6c111c20, 0x241ee: 0x6c921220, 0x241ef: 0x6cb35020,\n\t0x241f0: 0x6c268620, 0x241f1: 0x6d12da20, 0x241f3: 0x6d15d220,\n\t0x241f7: 0x6cfdb620,\n\t0x241f8: 0x6c086e20, 0x241f9: 0x6d398c20, 0x241fb: 0x6d14a620,\n\t0x241fd: 0x6c93d220, 0x241ff: 0x6c7b9420,\n\t// Block 0x908, offset 0x24200\n\t0x24202: 0x6d35a420,\n\t0x24207: 0x6cec0820,\n\t0x24208: 0x6c2b1c20, 0x24209: 0x6cd5b020, 0x2420a: 0x6c8ad820, 0x2420b: 0x6d2a4220,\n\t0x2420c: 0x6d35a620, 0x2420d: 0x6ca49e20,\n\t0x24217: 0x6c147220,\n\t0x2421a: 0x6cfea620, 0x2421b: 0x6d2a0220,\n\t0x2421e: 0x6d22f420, 0x2421f: 0x6c310620,\n\t0x24220: 0x6c143e20, 0x24221: 0x6d009020, 0x24222: 0x6d0fa220,\n\t0x24224: 0x6cfc0220, 0x24225: 0x6c05f220,\n\t0x2422e: 0x6d2cec20,\n\t0x24230: 0x6cc03420, 0x24232: 0x6c553420, 0x24233: 0x6d293220,\n\t0x24234: 0x6c741620, 0x24236: 0x6c4d9a20,\n\t0x2423f: 0x6c01ae20,\n\t// Block 0x909, offset 0x24240\n\t0x24240: 0x6d2a7820, 0x24243: 0x6ccc4c20,\n\t0x24245: 0x6cfcb220, 0x24246: 0x6c1b9e20, 0x24247: 0x6d0d6a20,\n\t0x24249: 0x6c01ba20,\n\t0x2424d: 0x6d305220, 0x2424e: 0x6c742c20,\n\t0x24251: 0x6c85ea20, 0x24253: 0x6c822020,\n\t0x24256: 0x6c112c20,\n\t0x24258: 0x6c924220, 0x2425a: 0x6c634c20,\n\t0x2425d: 0x6cfa3820, 0x2425e: 0x6cfff020, 0x2425f: 0x6d0c0c20,\n\t0x24260: 0x6d05a020, 0x24262: 0x6c33f020, 0x24263: 0x6d1c7620,\n\t0x24264: 0x6c5ab820, 0x24265: 0x6ce32820, 0x24266: 0x6caa0020, 0x24267: 0x6cf7e820,\n\t0x2426a: 0x6ce8b220,\n\t0x24277: 0x6cec5620,\n\t0x24278: 0x6c186620,\n\t0x2427c: 0x6c52aa20, 0x2427e: 0x6ce32a20, 0x2427f: 0x6d07a020,\n\t// Block 0x90a, offset 0x24280\n\t0x24280: 0x6d28bc20,\n\t0x24287: 0x6c43f020,\n\t0x2428b: 0x6c908c20,\n\t0x2428c: 0x6c147c20, 0x2428d: 0x6cac6020, 0x2428e: 0x6c605820,\n\t0x24290: 0x6cde5e20, 0x24293: 0x6cf64e20,\n\t0x24296: 0x6cfeda20,\n\t0x24298: 0x6ccab620, 0x24299: 0x6c637020, 0x2429a: 0x6cdad420, 0x2429b: 0x6c599a20,\n\t0x2429d: 0x6c25bc20, 0x2429f: 0x6cde6020,\n\t0x242a0: 0x6cd65420,\n\t0x242aa: 0x6c3e9a20, 0x242ab: 0x6c863620,\n\t0x242ad: 0x6ccf5a20, 0x242af: 0x6ce10620,\n\t0x242b6: 0x6c2cd020,\n\t0x242ba: 0x6c09fa20,\n\t0x242bc: 0x6c46c820, 0x242bd: 0x6c244620, 0x242bf: 0x6cb90820,\n\t// Block 0x90b, offset 0x242c0\n\t0x242c2: 0x6c824620, 0x242c3: 0x6cdaea20,\n\t0x242c6: 0x6d402420, 0x242c7: 0x6c4faa20,\n\t0x242cf: 0x6c1c4420,\n\t0x242d0: 0x6c128020, 0x242d3: 0x6cf30420,\n\t0x242d4: 0x6cfef220, 0x242d5: 0x6c8b2020, 0x242d6: 0x6d0c1e20,\n\t0x242dd: 0x6c09fc20, 0x242df: 0x6c594220,\n\t0x242e1: 0x6cf67820, 0x242e2: 0x6c1ac820, 0x242e3: 0x6d05d620,\n\t0x242e4: 0x6ca4bc20, 0x242e5: 0x6d0cc020, 0x242e7: 0x6d01fc20,\n\t0x242e8: 0x6d2c4a20, 0x242ea: 0x6cdc5e20,\n\t0x242ec: 0x6cf8ca20, 0x242ed: 0x6c080620, 0x242ee: 0x6cc48420, 0x242ef: 0x6cd79820,\n\t0x242f0: 0x6c049020, 0x242f1: 0x6c4b6a20, 0x242f2: 0x6c763c20, 0x242f3: 0x6c188020,\n\t0x242f6: 0x6d072820,\n\t0x242fe: 0x6c368620, 0x242ff: 0x6c865a20,\n\t// Block 0x90c, offset 0x24300\n\t0x24300: 0x6cf69e20, 0x24301: 0x6c594c20, 0x24302: 0x6cdb0420,\n\t0x24304: 0x6c16f620,\n\t0x2430a: 0x6c92a820, 0x2430b: 0x6d0cc220,\n\t0x2430e: 0x6c290620, 0x2430f: 0x6c284620,\n\t0x24310: 0x6d0f6a20, 0x24312: 0x6d2d3620, 0x24313: 0x6c729020,\n\t0x24315: 0x6c345e20, 0x24316: 0x6ccabe20, 0x24317: 0x6c7f2a20,\n\t0x24318: 0x6cdb1c20,\n\t0x2431f: 0x6d2b0020,\n\t0x24323: 0x6c0a5020,\n\t0x24326: 0x6d1b8c20,\n\t0x24328: 0x6c4fb420, 0x2432a: 0x6c8b3a20,\n\t0x2432d: 0x6c4ff620, 0x2432e: 0x6d0fdc20,\n\t0x24334: 0x6cd7a420, 0x24335: 0x6c00f020, 0x24336: 0x6cbf7420,\n\t0x24339: 0x6c82ec20, 0x2433a: 0x6d011220,\n\t0x2433c: 0x6cd3f220,\n\t// Block 0x90d, offset 0x24340\n\t0x24343: 0x6c91ec20,\n\t0x24345: 0x6cc41220, 0x24346: 0x6c888020,\n\t0x2434c: 0x6d001a20, 0x2434e: 0x6d1c2020,\n\t0x24351: 0x6d012620,\n\t0x24358: 0x6c8d9e20, 0x24359: 0x6d1ed620,\n\t0x2435e: 0x6c294020, 0x2435f: 0x6c806020,\n\t0x24360: 0x6cff5e20,\n\t0x24368: 0x6d182a20,\n\t0x2436c: 0x6cf34c20, 0x2436e: 0x6d168e20, 0x2436f: 0x6ceaa420,\n\t0x24370: 0x6c102e20, 0x24372: 0x6d032020,\n\t0x24375: 0x6cd7c420, 0x24376: 0x6c6c2a20,\n\t0x24378: 0x6c031e20, 0x24379: 0x6c383020, 0x2437b: 0x6ca0d420,\n\t0x2437c: 0x6cc91220,\n\t// Block 0x90e, offset 0x24380\n\t0x2438a: 0x6c26ea20, 0x2438b: 0x6c619820,\n\t0x24390: 0x6cda8820, 0x24391: 0x6cbf0620, 0x24392: 0x6c033020,\n\t0x243a6: 0x6ce48c20, 0x243a7: 0x6d1f0a20,\n\t0x243a9: 0x6ceb0020, 0x243ab: 0x6cec6c20,\n\t0x243ac: 0x6d202e20, 0x243ae: 0x6c2fe820,\n\t0x243b1: 0x6cf7d820, 0x243b2: 0x6c799820,\n\t0x243b6: 0x6cbf0c20, 0x243b7: 0x6c32f820,\n\t0x243b8: 0x6c34e420, 0x243ba: 0x6d173620,\n\t// Block 0x90f, offset 0x243c0\n\t0x243d2: 0x6cf5c820, 0x243d3: 0x6cbd2420,\n\t0x243d4: 0x6cda9220, 0x243d7: 0x6c8e5220,\n\t0x243d9: 0x6cecd820,\n\t0x243ed: 0x6c17da20, 0x243ee: 0x6d399a20,\n\t0x243f0: 0x6c997220,\n\t0x243f7: 0x6cc2de20,\n\t0x243fd: 0x6d208c20, 0x243ff: 0x6d17ac20,\n\t// Block 0x910, offset 0x24400\n\t0x24400: 0x6c9c5020, 0x24403: 0x6c7f0c20,\n\t0x24404: 0x6d362e20,\n\t0x24424: 0x6ca5e620, 0x24426: 0x6c048220,\n\t0x2442a: 0x6c300420,\n\t0x2442e: 0x6d363020,\n\t// Block 0x911, offset 0x24440\n\t0x24455: 0x6d17ec20,\n\t0x24458: 0x6c8d1e20, 0x24459: 0x6d216020, 0x2445a: 0x6c231e20, 0x2445b: 0x6c2c6a20,\n\t0x2445c: 0x6d365c20,\n\t0x24460: 0x6cc86820, 0x24463: 0x6c669a20,\n\t0x24469: 0x6ced8c20, 0x2446b: 0x6c6d2c20,\n\t0x2446d: 0x6cad0820,\n\t// Block 0x912, offset 0x24480\n\t0x2448d: 0x6c928a20, 0x2448e: 0x6cc1a620,\n\t0x24490: 0x6cf80020, 0x24491: 0x6c26b420,\n\t0x24496: 0x6c56c220, 0x24497: 0x6c95bc20,\n\t0x24499: 0x6c822820,\n\t0x244b6: 0x6c45f820,\n\t0x244bb: 0x6c8e2620,\n\t// Block 0x913, offset 0x244c0\n\t0x244c2: 0x6c817820,\n\t0x244c4: 0x6d3be420,\n\t0x244e8: 0x6d2a5220, 0x244e9: 0x6c506a20, 0x244ea: 0x6cfe5420,\n\t0x244ed: 0x6c507020, 0x244ee: 0x6c86a220,\n\t0x244f1: 0x6c2d8820, 0x244f2: 0x6c444020,\n\t0x244fd: 0x6c58a820,\n\t// Block 0x914, offset 0x24500\n\t0x24504: 0x6c36b620, 0x24506: 0x6cf9fe20,\n\t0x2450b: 0x6c651820,\n\t0x2450c: 0x6cb67420, 0x2450d: 0x6cfa0820, 0x2450e: 0x6d1ffa20,\n\t0x24521: 0x6d330420,\n\t0x2452a: 0x6d3bf220,\n\t0x2452e: 0x6c163a20,\n\t// Block 0x915, offset 0x24540\n\t0x24549: 0x6d027a20,\n\t0x24555: 0x6ca4d620,\n\t0x2455d: 0x6c62ee20, 0x2455e: 0x6ce4d620,\n\t0x24563: 0x6d0e3220,\n\t0x24567: 0x6c500c20,\n\t0x24568: 0x6d030820, 0x24569: 0x6c8de020, 0x2456b: 0x6c047620,\n\t0x2456c: 0x6c081220,\n\t0x24571: 0x6c463e20, 0x24572: 0x6c8cc820,\n\t0x24575: 0x6c7df420, 0x24576: 0x6cb85e20, 0x24577: 0x6c699e20,\n\t0x24579: 0x6c371420, 0x2457a: 0x6d10fa20, 0x2457b: 0x6c316e20,\n\t// Block 0x916, offset 0x24580\n\t0x24581: 0x6c5d9220, 0x24582: 0x6c322420, 0x24583: 0x6cadbe20,\n\t0x2458c: 0x6d259820, 0x2458f: 0x6c90b820,\n\t0x24590: 0x6d03f820, 0x24593: 0x6c883a20,\n\t0x24594: 0x6d113820, 0x24595: 0x6cf6a020, 0x24596: 0x6d114420,\n\t0x24598: 0x6cf70020, 0x2459b: 0x6c918a20,\n\t0x2459d: 0x6d0f0020,\n\t0x245a0: 0x6cc33820,\n\t0x245a5: 0x6cc50020, 0x245a6: 0x6cec2020, 0x245a7: 0x6d40a420,\n\t0x245a8: 0x6c392e20, 0x245a9: 0x6d16c620, 0x245aa: 0x6c323c20, 0x245ab: 0x6cdc2620,\n\t0x245ad: 0x6caf4820, 0x245af: 0x6c4de820,\n\t0x245b1: 0x6d069820, 0x245b3: 0x6c45e620,\n\t0x245b5: 0x6c2c2e20, 0x245b7: 0x6ca32620,\n\t0x245be: 0x6c34ec20, 0x245bf: 0x6cebda20,\n\t// Block 0x917, offset 0x245c0\n\t0x245c2: 0x6ca81820,\n\t0x245c8: 0x6c2e1a20, 0x245c9: 0x6c598e20,\n\t0x245cc: 0x6ce32c20, 0x245cd: 0x6c395420,\n\t0x245d1: 0x6cf3ca20, 0x245d2: 0x6c01fe20,\n\t0x245d4: 0x6cb2a820,\n\t0x245d9: 0x6c4e1420, 0x245db: 0x6c428820,\n\t0x245dc: 0x6c83e820, 0x245de: 0x6c339c20, 0x245df: 0x6c400e20,\n\t0x245e0: 0x6ca35020, 0x245e2: 0x6c132220,\n\t0x245e7: 0x6c6a2820,\n\t0x245e9: 0x6cbed020, 0x245eb: 0x6d1bd020,\n\t0x245ec: 0x6cfdd220,\n\t0x245f1: 0x6c557c20,\n\t0x245f4: 0x6cdaec20,\n\t0x245fb: 0x6c43a420,\n\t0x245fc: 0x6c368820, 0x245fd: 0x6d072a20,\n\t// Block 0x918, offset 0x24600\n\t0x24606: 0x6cf6cc20,\n\t0x2460a: 0x6c774c20, 0x2460b: 0x6c4c8a20,\n\t0x2460c: 0x6c6a3620, 0x2460d: 0x6c200c20, 0x2460e: 0x6c826220, 0x2460f: 0x6c527620,\n\t0x24610: 0x6d41f420,\n\t0x24615: 0x6cb1e620,\n\t0x24618: 0x6c2ab420, 0x24619: 0x6cf70220, 0x2461a: 0x6c826820,\n\t0x2461c: 0x6ccdc620,\n\t0x24627: 0x6c918c20,\n\t0x24629: 0x6c338a20, 0x2462a: 0x6c760420,\n\t0x2462d: 0x6c164820, 0x2462f: 0x6d012c20,\n\t0x24630: 0x6cec0220, 0x24631: 0x6d30c420, 0x24633: 0x6d3b9e20,\n\t0x24637: 0x6c8f6020,\n\t0x24638: 0x6c82aa20,\n\t0x2463c: 0x6c273620, 0x2463d: 0x6c417820,\n\t// Block 0x919, offset 0x24640\n\t0x24644: 0x6cd34020, 0x24647: 0x6d0da420,\n\t0x2464c: 0x6c41b420,\n\t0x24650: 0x6d0d0020,\n\t0x24656: 0x6cdbac20,\n\t0x2465a: 0x6d37a620,\n\t0x2465c: 0x6cd34220,\n\t0x24661: 0x6cd15c20,\n\t0x24665: 0x6c15ae20,\n\t0x24677: 0x6c5a0820,\n\t0x24678: 0x6d1b8e20, 0x2467b: 0x6c9bee20,\n\t// Block 0x91a, offset 0x24680\n\t0x24682: 0x6cc4f220,\n\t0x24685: 0x6cfdae20,\n\t0x24688: 0x6c071420,\n\t0x2468c: 0x6c200820,\n\t0x24691: 0x6cb47620,\n\t0x24699: 0x6c77d220, 0x2469a: 0x6c7e3820,\n\t0x2469d: 0x6cc35020, 0x2469f: 0x6c4f9220,\n\t0x246a0: 0x6c1bf220, 0x246a1: 0x6c983820,\n\t0x246a6: 0x6d2cb020,\n\t0x246aa: 0x6c3bd220,\n\t0x246ac: 0x6c17b420,\n\t0x246b3: 0x6c6e1820,\n\t// Block 0x91b, offset 0x246c0\n\t0x246c3: 0x6c8ada20,\n\t0x246c5: 0x6ca31c20, 0x246c6: 0x6ca31e20, 0x246c7: 0x6ce72a20,\n\t0x246cb: 0x6cc46620,\n\t0x246cc: 0x6d411620, 0x246cd: 0x6caf5420, 0x246ce: 0x6d1fba20,\n\t0x246d0: 0x6cd4be20,\n\t0x246db: 0x6c8af420,\n\t0x246dc: 0x6cd43020, 0x246dd: 0x6ce97e20, 0x246df: 0x6c430220,\n\t0x246e0: 0x6ccea220, 0x246e1: 0x6ceb0420, 0x246e3: 0x6ca3f220,\n\t0x246e7: 0x6ceb7a20,\n\t0x246e8: 0x6c458220, 0x246e9: 0x6c2e1c20,\n\t0x246f4: 0x6c9bd020, 0x246f5: 0x6c052820, 0x246f7: 0x6d00a420,\n\t0x246f8: 0x6cd8b420, 0x246f9: 0x6ce6c820, 0x246fa: 0x6c4b4220,\n\t0x246fd: 0x6c3e8020, 0x246fe: 0x6c4b4820,\n\t// Block 0x91c, offset 0x24700\n\t0x24709: 0x6c4b4a20,\n\t0x24711: 0x6d3a7420, 0x24713: 0x6c7f1420,\n\t0x24715: 0x6c951620, 0x24716: 0x6ce50020, 0x24717: 0x6cc4c620,\n\t0x2471a: 0x6c300820,\n\t0x24728: 0x6c737220, 0x24729: 0x6d0cac20,\n\t0x2472c: 0x6cc84020, 0x2472d: 0x6c283a20,\n\t0x24730: 0x6c999e20,\n\t0x24736: 0x6c944020,\n\t0x24738: 0x6d072c20, 0x2473a: 0x6cf6a220,\n\t// Block 0x91d, offset 0x24740\n\t0x24742: 0x6c967420, 0x24743: 0x6cb52220,\n\t0x24745: 0x6c144820,\n\t0x24748: 0x6cce1e20, 0x24749: 0x6c4f0820, 0x2474a: 0x6cb2ce20,\n\t0x2474e: 0x6c5f3820,\n\t0x24753: 0x6c86a620,\n\t0x24755: 0x6d240c20, 0x24756: 0x6c04a420,\n\t0x24758: 0x6ce29220,\n\t0x2475d: 0x6c1de820,\n\t0x24760: 0x6c1dea20,\n\t0x24764: 0x6cb54420, 0x24765: 0x6cf70420, 0x24766: 0x6c076820,\n\t0x2476a: 0x6d138020,\n\t0x2476d: 0x6c4a1020, 0x2476f: 0x6d3b3a20,\n\t0x24773: 0x6c827c20,\n\t0x24774: 0x6c827e20, 0x24775: 0x6c13be20,\n\t// Block 0x91e, offset 0x24780\n\t0x24780: 0x6c4a1420,\n\t0x2478d: 0x6c2f2420,\n\t0x24793: 0x6d0b4420,\n\t0x24798: 0x6ca7fc20, 0x24799: 0x6cd4de20, 0x2479b: 0x6d363220,\n\t0x2479f: 0x6d36e420,\n\t0x247a2: 0x6d36e620, 0x247a3: 0x6cb07620,\n\t0x247a5: 0x6c6f4e20, 0x247a6: 0x6c6f5220, 0x247a7: 0x6d169020,\n\t0x247a8: 0x6d201220, 0x247aa: 0x6c6f5420,\n\t0x247af: 0x6c58f220,\n\t0x247b1: 0x6c323e20,\n\t0x247bb: 0x6ce20c20,\n\t0x247bc: 0x6cbc9e20, 0x247bd: 0x6cbd5c20, 0x247be: 0x6d032420, 0x247bf: 0x6c14bc20,\n\t// Block 0x91f, offset 0x247c0\n\t0x247c0: 0x6c61ae20, 0x247c2: 0x6cbe0a20,\n\t0x247ca: 0x6c324620, 0x247cb: 0x6d33aa20,\n\t0x247ce: 0x6cab7820,\n\t0x247d0: 0x6cf4c820, 0x247d2: 0x6cf18620,\n\t0x247d8: 0x6c096620, 0x247db: 0x6c069420,\n\t0x247dd: 0x6ca23c20, 0x247de: 0x6c6cf420, 0x247df: 0x6ce21220,\n\t0x247e0: 0x6c89e220,\n\t0x247e5: 0x6c127220, 0x247e6: 0x6d2c2820,\n\t0x247ec: 0x6c1b8e20, 0x247ed: 0x6d0ae020, 0x247ee: 0x6c7c6420, 0x247ef: 0x6d1b4420,\n\t0x247f8: 0x6c8f8820, 0x247f9: 0x6cb86020, 0x247fb: 0x6c4f4c20,\n\t0x247fc: 0x6cce5020, 0x247fd: 0x6c4d6420, 0x247fe: 0x6c139220,\n\t// Block 0x920, offset 0x24800\n\t0x24800: 0x6c68e220, 0x24801: 0x6c81ae20,\n\t0x24808: 0x6cf5fa20, 0x2480b: 0x6c0ef220,\n\t0x24813: 0x6d351a20,\n\t0x24815: 0x6cea8a20, 0x24816: 0x6c3e8220,\n\t0x24818: 0x6c54ce20, 0x2481a: 0x6ca83220, 0x2481b: 0x6d17ae20,\n\t0x2481c: 0x6d3c4020,\n\t0x24820: 0x6c13e620,\n\t0x24824: 0x6cdb8220, 0x24827: 0x6d283620,\n\t0x2482e: 0x6c325e20,\n\t0x24830: 0x6cf61c20, 0x24831: 0x6c203620, 0x24832: 0x6d03e820, 0x24833: 0x6c68fa20,\n\t0x24834: 0x6ccfea20,\n\t// Block 0x921, offset 0x24840\n\t0x24840: 0x6cedca20, 0x24841: 0x6c06a220, 0x24842: 0x6c3a3a20, 0x24843: 0x6c669c20,\n\t0x24844: 0x6cc30020, 0x24845: 0x6d17f020, 0x24846: 0x6c300a20, 0x24847: 0x6d06f620,\n\t0x24848: 0x6ca35220, 0x24849: 0x6c605a20,\n\t0x2484c: 0x6d31e620, 0x2484d: 0x6cb5fa20, 0x2484e: 0x6c330a20, 0x2484f: 0x6d1a7220,\n\t0x24851: 0x6c700420, 0x24852: 0x6caffe20, 0x24853: 0x6d033e20,\n\t0x24854: 0x6c94fe20, 0x24855: 0x6c113420, 0x24856: 0x6c8e2020, 0x24857: 0x6c0cac20,\n\t0x24858: 0x6c2a1c20, 0x24859: 0x6c2a7620,\n\t0x2485f: 0x6c7ed820,\n\t0x24861: 0x6cf65020, 0x24862: 0x6c725620,\n\t0x24864: 0x6cff9020, 0x24866: 0x6c6dc020,\n\t0x24879: 0x6cec7220, 0x2487b: 0x6ca50a20,\n\t0x2487c: 0x6cfd8220, 0x2487d: 0x6cc3e220, 0x2487e: 0x6cbcd420, 0x2487f: 0x6ce86a20,\n\t// Block 0x922, offset 0x24880\n\t0x24880: 0x6d064a20, 0x24881: 0x6c5bfc20,\n\t0x24885: 0x6c9f6c20, 0x24886: 0x6ceff220,\n\t0x24888: 0x6d1f5620, 0x24889: 0x6ce9ae20, 0x2488a: 0x6c278020,\n\t0x2488e: 0x6c786c20, 0x2488f: 0x6ca36220,\n\t0x24891: 0x6c401c20, 0x24892: 0x6d239620, 0x24893: 0x6d354420,\n\t0x24895: 0x6c4dae20, 0x24896: 0x6c002e20, 0x24897: 0x6c401e20,\n\t0x248a1: 0x6d0f6220,\n\t0x248a4: 0x6cd27e20, 0x248a6: 0x6c150c20,\n\t0x248aa: 0x6c1c5c20, 0x248ab: 0x6d284820,\n\t0x248ac: 0x6cd65a20, 0x248ae: 0x6cdb0620, 0x248af: 0x6cca8620,\n\t0x248b1: 0x6c368a20, 0x248b2: 0x6d332e20, 0x248b3: 0x6c004e20,\n\t0x248b4: 0x6cdd8c20, 0x248b5: 0x6c10b220, 0x248b7: 0x6cc45220,\n\t0x248b8: 0x6d185e20, 0x248b9: 0x6d0dca20, 0x248bb: 0x6ca36620,\n\t0x248bc: 0x6cf46a20,\n\t// Block 0x923, offset 0x248c0\n\t0x248c7: 0x6c865c20,\n\t0x248c8: 0x6c865e20, 0x248ca: 0x6cf6a820, 0x248cb: 0x6c749c20,\n\t0x248cc: 0x6cd1ea20, 0x248ce: 0x6d0b5c20,\n\t0x248db: 0x6c18e420,\n\t0x248dc: 0x6d1c8c20, 0x248dd: 0x6c0a5220, 0x248de: 0x6c184020,\n\t0x248e1: 0x6d2bfc20, 0x248e2: 0x6ceb9020, 0x248e3: 0x6c56c620,\n\t0x248e4: 0x6ce2b220, 0x248e5: 0x6d1d4c20, 0x248e6: 0x6c08f820, 0x248e7: 0x6ca91e20,\n\t0x248e8: 0x6c891a20, 0x248e9: 0x6d034c20, 0x248ea: 0x6d229020,\n\t0x248f2: 0x6c075e20,\n\t0x248f4: 0x6ca07820, 0x248f5: 0x6c331420, 0x248f7: 0x6c29ea20,\n\t0x248f8: 0x6cb64c20,\n\t// Block 0x924, offset 0x24900\n\t0x24900: 0x6cd65c20, 0x24903: 0x6cff1e20,\n\t0x24904: 0x6d380a20, 0x24905: 0x6d3cb220, 0x24907: 0x6c0bca20,\n\t0x24909: 0x6cf02a20, 0x2490a: 0x6cf6ec20,\n\t0x2490c: 0x6c2aae20, 0x2490e: 0x6d005620, 0x2490f: 0x6cac4620,\n\t0x24910: 0x6ca87a20, 0x24913: 0x6c0cfa20,\n\t0x24914: 0x6ccf7a20, 0x24915: 0x6c3ad820, 0x24916: 0x6c9fcc20, 0x24917: 0x6cb7e820,\n\t0x2492a: 0x6ccdbc20, 0x2492b: 0x6cdd9c20,\n\t0x24937: 0x6c60c020,\n\t0x2493a: 0x6c285020, 0x2493b: 0x6c739c20,\n\t0x2493c: 0x6c930420, 0x2493e: 0x6c02f620,\n\t// Block 0x925, offset 0x24940\n\t0x24942: 0x6d18ea20, 0x24943: 0x6cd57a20,\n\t0x24944: 0x6cdc9c20, 0x24945: 0x6cf0f220, 0x24946: 0x6cecec20, 0x24947: 0x6c1ef420,\n\t0x2494c: 0x6cf32820,\n\t0x24956: 0x6c0aa420,\n\t0x24958: 0x6d1b1a20, 0x24959: 0x6c5d8220,\n\t0x2495c: 0x6c769c20, 0x2495d: 0x6ca93020,\n\t0x24962: 0x6c00fc20,\n\t0x24964: 0x6c870020, 0x24966: 0x6d2d0220,\n\t0x24971: 0x6c933020,\n\t0x24976: 0x6c0bd420, 0x24977: 0x6cac8a20,\n\t0x2497f: 0x6c4b9c20,\n\t// Block 0x926, offset 0x24980\n\t0x24980: 0x6cda6a20, 0x24981: 0x6c9ba020, 0x24982: 0x6cfc5220, 0x24983: 0x6c906e20,\n\t0x24985: 0x6cb80220,\n\t0x2498b: 0x6c164a20,\n\t0x2498c: 0x6d195c20, 0x2498d: 0x6c4f8e20, 0x2498f: 0x6c88e020,\n\t0x24990: 0x6c49c220, 0x24992: 0x6cf06020,\n\t0x24997: 0x6c752020,\n\t0x24998: 0x6c829c20, 0x24999: 0x6c946620, 0x2499a: 0x6c87a620,\n\t0x2499c: 0x6cb03e20,\n\t0x249a2: 0x6c58e820,\n\t0x249ae: 0x6c4a5820,\n\t0x249b3: 0x6c713420,\n\t0x249b6: 0x6c2aa220,\n\t0x249ba: 0x6c3ad220,\n\t// Block 0x927, offset 0x249c0\n\t0x249c1: 0x6d338e20, 0x249c3: 0x6c9a7a20,\n\t0x249c5: 0x6c58f420,\n\t0x249c9: 0x6cabba20, 0x249ca: 0x6c08c420,\n\t0x249cc: 0x6cb30020,\n\t0x249d3: 0x6c374220,\n\t0x249d5: 0x6c58fc20,\n\t0x249e3: 0x6c170c20,\n\t0x249e5: 0x6c95fc20, 0x249e6: 0x6c3d2820,\n\t0x249ef: 0x6c1db220,\n\t0x249f1: 0x6d40c020, 0x249f2: 0x6ca3fe20, 0x249f3: 0x6cffae20,\n\t0x249f9: 0x6c044820, 0x249fa: 0x6c926620,\n\t0x249fc: 0x6c961220, 0x249ff: 0x6ca76620,\n\t// Block 0x928, offset 0x24a00\n\t0x24a00: 0x6d2ad020,\n\t0x24a04: 0x6d3b0a20, 0x24a05: 0x6c557420,\n\t0x24a08: 0x6c5ad820, 0x24a09: 0x6ce17c20, 0x24a0a: 0x6c1dca20,\n\t0x24a11: 0x6c59e020, 0x24a12: 0x6c30b820,\n\t0x24a1b: 0x6c9eba20,\n\t0x24a1d: 0x6c0f5a20,\n\t0x24a20: 0x6c2ca420, 0x24a22: 0x6c2ad020, 0x24a23: 0x6cb41620,\n\t0x24a25: 0x6cd94020, 0x24a26: 0x6c1dec20,\n\t0x24a2b: 0x6d123c20,\n\t0x24a2c: 0x6c9bf020, 0x24a2d: 0x6c8fc820,\n\t0x24a32: 0x6c888220,\n\t0x24a35: 0x6c0d0620,\n\t0x24a3a: 0x6c93c220,\n\t0x24a3f: 0x6ccba020,\n\t// Block 0x929, offset 0x24a40\n\t0x24a40: 0x6d425820,\n\t0x24a44: 0x6c25aa20, 0x24a45: 0x6c8de420, 0x24a46: 0x6d331a20, 0x24a47: 0x6cb05220,\n\t0x24a48: 0x6c05c220, 0x24a4b: 0x6cc3a420,\n\t0x24a4e: 0x6caf4a20, 0x24a4f: 0x6ca44220,\n\t0x24a50: 0x6caf4c20, 0x24a51: 0x6c0fe220, 0x24a52: 0x6c06f020, 0x24a53: 0x6c37e820,\n\t0x24a55: 0x6c9fa620, 0x24a56: 0x6ca0f220, 0x24a57: 0x6cec2420,\n\t0x24a58: 0x6d2f6020, 0x24a59: 0x6d35c220, 0x24a5a: 0x6c240c20,\n\t0x24a5f: 0x6d0a0620,\n\t0x24a60: 0x6c602020, 0x24a61: 0x6c4b4420, 0x24a63: 0x6c19ea20,\n\t0x24a67: 0x6c4ec620,\n\t0x24a68: 0x6cfff220, 0x24a69: 0x6cc3c020, 0x24a6b: 0x6c21be20,\n\t0x24a6d: 0x6c3f6420,\n\t0x24a73: 0x6cbdde20,\n\t0x24a74: 0x6c926820, 0x24a75: 0x6cc3d020, 0x24a76: 0x6c2d1e20, 0x24a77: 0x6cb8f020,\n\t0x24a7c: 0x6c16ee20, 0x24a7d: 0x6cde6220, 0x24a7e: 0x6c06ae20,\n\t// Block 0x92a, offset 0x24a80\n\t0x24a81: 0x6c326c20, 0x24a82: 0x6c082620, 0x24a83: 0x6c547820,\n\t0x24a88: 0x6d2c8420, 0x24a89: 0x6d2c8620,\n\t0x24a8e: 0x6cc3ee20, 0x24a8f: 0x6c967620,\n\t0x24a90: 0x6c4e2c20, 0x24a93: 0x6c8e8620,\n\t0x24a94: 0x6c92d020, 0x24a96: 0x6d3e8c20,\n\t0x24a98: 0x6cb07020, 0x24a99: 0x6d395220, 0x24a9b: 0x6d2a2420,\n\t0x24a9d: 0x6ca9a020,\n\t0x24aa0: 0x6c5c5620, 0x24aa3: 0x6d092020,\n\t0x24aa5: 0x6c7ea020,\n\t0x24aab: 0x6caa0620,\n\t0x24aac: 0x6d0dfa20, 0x24aad: 0x6cc4d820, 0x24aae: 0x6ca52220,\n\t0x24ab0: 0x6c7eb420, 0x24ab1: 0x6c4a1220, 0x24ab2: 0x6c31e220,\n\t0x24ab5: 0x6c919020,\n\t0x24ab9: 0x6c663c20, 0x24aba: 0x6d028c20, 0x24abb: 0x6cb80e20,\n\t0x24abe: 0x6cfe7420,\n\t// Block 0x92b, offset 0x24ac0\n\t0x24ac1: 0x6c4cb020, 0x24ac2: 0x6c6a8420, 0x24ac3: 0x6c98b620,\n\t0x24ac6: 0x6cf95820, 0x24ac7: 0x6c7c3620,\n\t0x24ace: 0x6d1e7620,\n\t0x24ad0: 0x6c4d3c20, 0x24ad1: 0x6c9d3220, 0x24ad2: 0x6d11fc20,\n\t0x24ad5: 0x6cf14c20,\n\t0x24adf: 0x6c85f220,\n\t0x24ae0: 0x6c735820, 0x24ae1: 0x6cf36420, 0x24ae2: 0x6cbbda20,\n\t0x24aee: 0x6c2e2a20, 0x24aef: 0x6c1f4220,\n\t0x24af2: 0x6cdd1c20,\n\t0x24af5: 0x6c1cc420,\n\t0x24af8: 0x6cc2a020, 0x24af9: 0x6ccf5e20,\n\t// Block 0x92c, offset 0x24b00\n\t0x24b02: 0x6c9bd820, 0x24b03: 0x6c726820,\n\t0x24b0b: 0x6ce8e620,\n\t0x24b12: 0x6ca9c020, 0x24b13: 0x6ca07a20,\n\t0x24b19: 0x6c3bee20,\n\t0x24b22: 0x6c027020, 0x24b23: 0x6c4c3e20,\n\t0x24b24: 0x6c55b420, 0x24b25: 0x6c11b820, 0x24b26: 0x6c33b220, 0x24b27: 0x6c4d4820,\n\t0x24b28: 0x6c694e20,\n\t0x24b30: 0x6c473a20,\n\t0x24b35: 0x6c6c6020,\n\t0x24b38: 0x6d0fe420,\n\t// Block 0x92d, offset 0x24b40\n\t0x24b40: 0x6c145020,\n\t0x24b4c: 0x6c5b0820,\n\t0x24b54: 0x6cc20c20, 0x24b55: 0x6c784420,\n\t0x24b5f: 0x6cbe6620,\n\t0x24b60: 0x6d197a20, 0x24b63: 0x6c767a20,\n\t0x24b64: 0x6c68b820, 0x24b67: 0x6c1d6220,\n\t0x24b68: 0x6c103020, 0x24b69: 0x6c44ae20, 0x24b6a: 0x6c682620, 0x24b6b: 0x6d339020,\n\t0x24b6e: 0x6cf20020,\n\t0x24b70: 0x6c0d2220,\n\t0x24b74: 0x6d048820, 0x24b75: 0x6c393020,\n\t0x24b78: 0x6d147620, 0x24b79: 0x6c203020, 0x24b7a: 0x6d11ee20,\n\t0x24b7d: 0x6d0f4c20, 0x24b7e: 0x6c324020, 0x24b7f: 0x6d0d4a20,\n\t// Block 0x92e, offset 0x24b80\n\t0x24b81: 0x6c9b0a20,\n\t0x24b87: 0x6c1a9620,\n\t0x24b88: 0x6ca27420, 0x24b89: 0x6c683420, 0x24b8b: 0x6caa7a20,\n\t0x24b8d: 0x6c4c6420, 0x24b8e: 0x6d094a20,\n\t0x24b91: 0x6c3e1c20, 0x24b92: 0x6d08dc20, 0x24b93: 0x6c3d4c20,\n\t0x24b94: 0x6cae1020, 0x24b95: 0x6ca0ea20, 0x24b96: 0x6cf5a820, 0x24b97: 0x6cf2dc20,\n\t0x24b98: 0x6ccd3620, 0x24b9b: 0x6cf5aa20,\n\t0x24b9c: 0x6cb75a20, 0x24b9d: 0x6c9e5220,\n\t0x24ba6: 0x6c282820,\n\t0x24ba8: 0x6c1e2820,\n\t0x24bb1: 0x6c3a9c20, 0x24bb2: 0x6c9ec820,\n\t0x24bb4: 0x6d095020, 0x24bb5: 0x6d06ae20, 0x24bb6: 0x6cd7dc20, 0x24bb7: 0x6c71b220,\n\t0x24bb8: 0x6c993420, 0x24bb9: 0x6c063e20, 0x24bbb: 0x6d14d220,\n\t0x24bbc: 0x6c485020, 0x24bbd: 0x6ca69220, 0x24bbf: 0x6d14d420,\n\t// Block 0x92f, offset 0x24bc0\n\t0x24bc1: 0x6d429020,\n\t0x24bc4: 0x6caa5420,\n\t0x24bd1: 0x6c2d4820, 0x24bd2: 0x6c393c20, 0x24bd3: 0x6d173a20,\n\t0x24bd4: 0x6cd35a20, 0x24bd7: 0x6c240e20,\n\t0x24bd8: 0x6d31ce20,\n\t0x24bde: 0x6cd36a20, 0x24bdf: 0x6c68e620,\n\t0x24be0: 0x6c546a20, 0x24be1: 0x6c375020,\n\t0x24be6: 0x6c833220, 0x24be7: 0x6d095420,\n\t0x24be8: 0x6c452c20, 0x24bea: 0x6cd43220,\n\t0x24bec: 0x6c72ec20,\n\t0x24bf4: 0x6c6ab820, 0x24bf5: 0x6cef0020, 0x24bf7: 0x6cd44620,\n\t0x24bf8: 0x6c6e7620, 0x24bfa: 0x6d061c20, 0x24bfb: 0x6c1d4c20,\n\t// Block 0x930, offset 0x24c00\n\t0x24c05: 0x6c675e20, 0x24c06: 0x6ca20a20,\n\t0x24c09: 0x6d231a20,\n\t0x24c0c: 0x6c745220,\n\t0x24c11: 0x6ce6ea20,\n\t0x24c14: 0x6cfec420, 0x24c16: 0x6c30ac20,\n\t0x24c18: 0x6c4c6c20, 0x24c19: 0x6c986220, 0x24c1a: 0x6cedcc20, 0x24c1b: 0x6d06de20,\n\t0x24c1c: 0x6cee5420, 0x24c1d: 0x6cdd2020, 0x24c1e: 0x6c736620, 0x24c1f: 0x6d26b820,\n\t0x24c21: 0x6c4e1620, 0x24c23: 0x6ccfec20,\n\t0x24c25: 0x6d00ac20, 0x24c26: 0x6c8e5a20, 0x24c27: 0x6cc8f020,\n\t0x24c2f: 0x6c09a620,\n\t0x24c32: 0x6ca53220,\n\t0x24c36: 0x6ced8420, 0x24c37: 0x6c700020,\n\t0x24c38: 0x6cc38c20,\n\t// Block 0x931, offset 0x24c40\n\t0x24c44: 0x6ca6a220, 0x24c46: 0x6c9c5220, 0x24c47: 0x6cdd2220,\n\t0x24c49: 0x6cbb4020,\n\t0x24c4c: 0x6c4ed220, 0x24c4d: 0x6d3d6c20, 0x24c4e: 0x6c9c5e20, 0x24c4f: 0x6d06f820,\n\t0x24c51: 0x6c810420, 0x24c52: 0x6c6aee20, 0x24c53: 0x6c2faa20,\n\t0x24c54: 0x6c171820, 0x24c55: 0x6d365e20, 0x24c56: 0x6c3a0c20, 0x24c57: 0x6c63cc20,\n\t0x24c58: 0x6c75cc20, 0x24c59: 0x6c5dde20, 0x24c5a: 0x6cb4fe20, 0x24c5b: 0x6c70a620,\n\t0x24c5c: 0x6d3cd420, 0x24c5e: 0x6c2d6420, 0x24c5f: 0x6c690c20,\n\t0x24c60: 0x6d0af220, 0x24c62: 0x6d2dfa20,\n\t0x24c6d: 0x6d33f220, 0x24c6f: 0x6c973620,\n\t0x24c70: 0x6c54da20, 0x24c71: 0x6d01ca20, 0x24c72: 0x6cd27420, 0x24c73: 0x6c4a7220,\n\t0x24c7f: 0x6d06fa20,\n\t// Block 0x932, offset 0x24c80\n\t0x24c82: 0x6c606a20,\n\t0x24c84: 0x6c20b020, 0x24c86: 0x6c99a220, 0x24c87: 0x6cc84220,\n\t0x24c88: 0x6d05bc20, 0x24c89: 0x6c594620, 0x24c8a: 0x6ccc6420, 0x24c8b: 0x6c71c820,\n\t0x24c8f: 0x6c7c0020,\n\t0x24c91: 0x6c542020, 0x24c92: 0x6c491e20, 0x24c93: 0x6c486a20,\n\t0x24c95: 0x6c9c6420, 0x24c96: 0x6c2ed020, 0x24c97: 0x6c0a0020,\n\t0x24c98: 0x6c899820, 0x24c99: 0x6c7e8620, 0x24c9a: 0x6ccd5220, 0x24c9b: 0x6c928c20,\n\t0x24c9c: 0x6cf8b420, 0x24c9f: 0x6cda2220,\n\t0x24cac: 0x6cab4220, 0x24cae: 0x6c838020,\n\t0x24cb7: 0x6c7a5020,\n\t0x24cb8: 0x6c4a7c20, 0x24cbb: 0x6cf67a20,\n\t0x24cbc: 0x6cac6c20, 0x24cbd: 0x6ccb4c20, 0x24cbe: 0x6c754e20, 0x24cbf: 0x6c53d020,\n\t// Block 0x933, offset 0x24cc0\n\t0x24cc0: 0x6c49a220, 0x24cc1: 0x6c727c20, 0x24cc3: 0x6ca3d220,\n\t0x24cc4: 0x6c575020, 0x24cc5: 0x6c442220, 0x24cc6: 0x6c866020, 0x24cc7: 0x6c46d020,\n\t0x24cc8: 0x6ce41420, 0x24cca: 0x6c96d820, 0x24ccb: 0x6ce2ae20,\n\t0x24ccc: 0x6c26ba20,\n\t0x24cd0: 0x6cb52420, 0x24cd1: 0x6d23c620, 0x24cd2: 0x6c693020, 0x24cd3: 0x6c9ee620,\n\t0x24cd4: 0x6c451820, 0x24cd5: 0x6c9c0e20, 0x24cd6: 0x6cf0c020,\n\t0x24cd8: 0x6ce36620, 0x24cd9: 0x6cb63a20,\n\t0x24cdc: 0x6c18e620, 0x24cdd: 0x6c30c220, 0x24cdf: 0x6cac6e20,\n\t0x24cf0: 0x6c4efc20,\n\t0x24cf4: 0x6c9d8a20, 0x24cf5: 0x6c967820, 0x24cf6: 0x6c92d220, 0x24cf7: 0x6cb53020,\n\t0x24cf8: 0x6c795220, 0x24cfa: 0x6c2ee820, 0x24cfb: 0x6cb7d820,\n\t0x24cfc: 0x6c687c20, 0x24cfd: 0x6c774e20, 0x24cfe: 0x6cbbb020, 0x24cff: 0x6c9d8c20,\n\t// Block 0x934, offset 0x24d00\n\t0x24d00: 0x6ccd0c20,\n\t0x24d07: 0x6c64da20,\n\t0x24d08: 0x6c843c20, 0x24d09: 0x6c78d620, 0x24d0a: 0x6d073c20,\n\t0x24d11: 0x6c977a20, 0x24d12: 0x6c3cf420, 0x24d13: 0x6c163420,\n\t0x24d14: 0x6c5b6420,\n\t0x24d27: 0x6c7a0420,\n\t0x24d2a: 0x6cf02c20, 0x24d2b: 0x6c49a820,\n\t0x24d2c: 0x6c60c220, 0x24d2d: 0x6d421c20, 0x24d2e: 0x6c5e0a20, 0x24d2f: 0x6d00fe20,\n\t0x24d34: 0x6cdc8420, 0x24d36: 0x6cc88220,\n\t0x24d38: 0x6ce28620,\n\t0x24d3c: 0x6d336820, 0x24d3d: 0x6c7d8820, 0x24d3e: 0x6cfe0020, 0x24d3f: 0x6c9dda20,\n\t// Block 0x935, offset 0x24d40\n\t0x24d41: 0x6cf8f020,\n\t0x24d4c: 0x6cc94820,\n\t0x24d59: 0x6c36c620, 0x24d5a: 0x6c9efe20, 0x24d5b: 0x6d3a8820,\n\t0x24d5c: 0x6d406c20, 0x24d5d: 0x6c9bec20, 0x24d5f: 0x6cf70620,\n\t0x24d61: 0x6ce14e20, 0x24d63: 0x6c645220,\n\t0x24d64: 0x6c16d020, 0x24d65: 0x6c60dc20,\n\t0x24d6e: 0x6d3dbc20,\n\t0x24d7f: 0x6c520420,\n\t// Block 0x936, offset 0x24d80\n\t0x24d80: 0x6c141020, 0x24d81: 0x6cb7fc20, 0x24d82: 0x6c9dea20, 0x24d83: 0x6d320220,\n\t0x24d84: 0x6c7a6c20, 0x24d85: 0x6d138220, 0x24d86: 0x6d38c020,\n\t0x24d88: 0x6c652020, 0x24d8a: 0x6cacc220,\n\t0x24d8d: 0x6c5b0220, 0x24d8f: 0x6ca02220,\n\t0x24d90: 0x6c8f5020,\n\t0x24d98: 0x6cd73420, 0x24d9a: 0x6c974a20, 0x24d9b: 0x6c849c20,\n\t0x24d9e: 0x6cd7ae20, 0x24d9f: 0x6d159020,\n\t0x24da4: 0x6c872c20,\n\t0x24da8: 0x6d005e20, 0x24da9: 0x6ce28a20, 0x24daa: 0x6d051020,\n\t0x24dad: 0x6d08ce20, 0x24dae: 0x6c874820, 0x24daf: 0x6c9ba220,\n\t0x24db0: 0x6cef6a20, 0x24db1: 0x6c9ba420,\n\t0x24dba: 0x6d124e20, 0x24dbb: 0x6c7ffe20,\n\t0x24dbc: 0x6c8da020, 0x24dbd: 0x6d1c3820, 0x24dbe: 0x6d1c3a20, 0x24dbf: 0x6c876c20,\n\t// Block 0x937, offset 0x24dc0\n\t0x24dc0: 0x6c662820, 0x24dc1: 0x6c4aaa20,\n\t0x24dc5: 0x6c494020, 0x24dc6: 0x6d028220,\n\t0x24dc9: 0x6ccf9220, 0x24dcb: 0x6d418420,\n\t0x24dd3: 0x6c771e20,\n\t0x24dd4: 0x6c82a820,\n\t0x24dda: 0x6c0bde20,\n\t0x24ddd: 0x6cd54e20, 0x24dde: 0x6caa7820, 0x24ddf: 0x6d069a20,\n\t0x24de3: 0x6c503020,\n\t0x24de8: 0x6c4af220, 0x24dea: 0x6d2d4020, 0x24deb: 0x6c80c620,\n\t0x24dec: 0x6c248e20, 0x24ded: 0x6d363620, 0x24dee: 0x6c3ca820, 0x24def: 0x6cbd3220,\n\t0x24df1: 0x6d2acc20, 0x24df2: 0x6ca35420, 0x24df3: 0x6ca99a20,\n\t0x24df4: 0x6d17f420, 0x24df7: 0x6c232c20,\n\t0x24df8: 0x6cd1e020, 0x24df9: 0x6c65c220, 0x24dfa: 0x6d3fa420, 0x24dfb: 0x6d0db820,\n\t0x24dfc: 0x6d1bd620,\n\t// Block 0x938, offset 0x24e00\n\t0x24e00: 0x6cc86e20, 0x24e02: 0x6cc6a420, 0x24e03: 0x6cf8cc20,\n\t0x24e05: 0x6c492420, 0x24e06: 0x6c769420,\n\t0x24e08: 0x6cf51420, 0x24e0a: 0x6cbda820, 0x24e0b: 0x6c235820,\n\t0x24e0d: 0x6d2b0620, 0x24e0e: 0x6d024220,\n\t0x24e10: 0x6d241020, 0x24e11: 0x6d29a020, 0x24e12: 0x6c206620, 0x24e13: 0x6c853c20,\n\t0x24e14: 0x6c853e20, 0x24e15: 0x6d075020, 0x24e16: 0x6c9c9020, 0x24e17: 0x6d075420,\n\t0x24e18: 0x6cc88c20, 0x24e1b: 0x6c4b9420,\n\t0x24e1c: 0x6cc73020, 0x24e1f: 0x6c991420,\n\t0x24e21: 0x6cbdbe20, 0x24e22: 0x6c24be20, 0x24e23: 0x6c24c020,\n\t0x24e24: 0x6c24c620,\n\t0x24e2e: 0x6cf35a20,\n\t0x24e30: 0x6c383220, 0x24e31: 0x6c037620,\n\t0x24e38: 0x6cb85820, 0x24e39: 0x6d35ee20, 0x24e3a: 0x6ce5d420,\n\t// Block 0x939, offset 0x24e40\n\t0x24e44: 0x6d35f020, 0x24e45: 0x6d345a20, 0x24e47: 0x6c591420,\n\t0x24e48: 0x6c1da420, 0x24e4a: 0x6d35f220,\n\t0x24e4e: 0x6d1cf020,\n\t0x24e52: 0x6cf4f020, 0x24e53: 0x6c06a420,\n\t0x24e55: 0x6c534c20, 0x24e56: 0x6cd06420,\n\t0x24e58: 0x6c746620, 0x24e59: 0x6c7d0420,\n\t0x24e5c: 0x6d15f820, 0x24e5d: 0x6d0bbe20,\n\t0x24e60: 0x6c087c20,\n\t0x24e64: 0x6c7aea20, 0x24e65: 0x6cb8f220,\n\t0x24e68: 0x6d2f6620, 0x24e6a: 0x6c766820, 0x24e6b: 0x6cce1220,\n\t0x24e6e: 0x6c01ca20, 0x24e6f: 0x6d307020,\n\t0x24e70: 0x6d369420,\n\t0x24e77: 0x6d36b620,\n\t0x24e79: 0x6c693220,\n\t// Block 0x93a, offset 0x24e80\n\t0x24e80: 0x6cd83020, 0x24e81: 0x6cb45c20, 0x24e82: 0x6cab9420,\n\t0x24e8a: 0x6d3dbe20,\n\t0x24e91: 0x6d1c3c20, 0x24e93: 0x6c584a20,\n\t0x24e95: 0x6d0b6e20,\n\t0x24e98: 0x6cd23c20, 0x24e99: 0x6cabb220, 0x24e9a: 0x6cb48420,\n\t0x24e9e: 0x6c983c20, 0x24e9f: 0x6c146220,\n\t0x24ea9: 0x6d278e20,\n\t0x24eac: 0x6c476a20,\n\t0x24eb9: 0x6c282a20, 0x24ebb: 0x6ca4a020,\n\t0x24ebd: 0x6d302620, 0x24ebf: 0x6c552c20,\n\t// Block 0x93b, offset 0x24ec0\n\t0x24ec5: 0x6c792c20, 0x24ec7: 0x6c2e8c20,\n\t0x24ec8: 0x6ce63c20, 0x24ecb: 0x6c48ee20,\n\t0x24ece: 0x6cbef020, 0x24ecf: 0x6cd2ca20,\n\t0x24ed0: 0x6c640c20, 0x24ed1: 0x6c02ca20, 0x24ed2: 0x6ca2f620, 0x24ed3: 0x6cb23a20,\n\t0x24ed4: 0x6c63b220,\n\t0x24ee1: 0x6d30ec20, 0x24ee2: 0x6c108620, 0x24ee3: 0x6cf2b020,\n\t0x24ee5: 0x6c141e20,\n\t0x24eea: 0x6ca4a420, 0x24eeb: 0x6c76c620,\n\t0x24eef: 0x6c319220,\n\t0x24ef0: 0x6c48f020, 0x24ef1: 0x6cbf0e20, 0x24ef3: 0x6cc66a20,\n\t0x24ef4: 0x6d15e820, 0x24ef5: 0x6c32fe20, 0x24ef6: 0x6c82c020,\n\t0x24ef8: 0x6d387a20, 0x24ef9: 0x6c7ac220, 0x24efa: 0x6c354020, 0x24efb: 0x6cfa9e20,\n\t0x24efc: 0x6c2d5420, 0x24efd: 0x6caaf020, 0x24efe: 0x6c361620, 0x24eff: 0x6d1d8620,\n\t// Block 0x93c, offset 0x24f00\n\t0x24f00: 0x6cf4e220, 0x24f01: 0x6c793a20,\n\t0x24f13: 0x6d35f420,\n\t0x24f17: 0x6d351c20,\n\t0x24f18: 0x6d0a0820, 0x24f1b: 0x6d334a20,\n\t0x24f1e: 0x6d0fae20,\n\t0x24f20: 0x6c5dc420, 0x24f21: 0x6c602220, 0x24f22: 0x6ca4f020,\n\t0x24f27: 0x6d0ba020,\n\t0x24f28: 0x6c924620, 0x24f2b: 0x6c3d7220,\n\t0x24f2c: 0x6cca1c20, 0x24f2d: 0x6c1f4420, 0x24f2e: 0x6cefca20,\n\t0x24f30: 0x6c3f6820, 0x24f31: 0x6c794020, 0x24f32: 0x6cd8c020, 0x24f33: 0x6c778620,\n\t0x24f35: 0x6d17b020, 0x24f36: 0x6c579a20,\n\t0x24f3e: 0x6d225e20,\n\t// Block 0x93d, offset 0x24f40\n\t0x24f43: 0x6c861420,\n\t0x24f46: 0x6c8c2020, 0x24f47: 0x6c321e20,\n\t0x24f48: 0x6c363c20,\n\t0x24f4c: 0x6cbb4220, 0x24f4d: 0x6c31a620,\n\t0x24f50: 0x6c6af020, 0x24f51: 0x6c21c620, 0x24f52: 0x6cfcd420,\n\t0x24f56: 0x6c430a20,\n\t0x24f6c: 0x6c2a1e20,\n\t0x24f70: 0x6c52b420,\n\t0x24f7b: 0x6d3fa620,\n\t0x24f7e: 0x6cb7b620, 0x24f7f: 0x6ceb3820,\n\t// Block 0x93e, offset 0x24f80\n\t0x24f80: 0x6c52b820, 0x24f81: 0x6cb06420, 0x24f82: 0x6c453c20,\n\t0x24f84: 0x6ca85020, 0x24f87: 0x6c798420,\n\t0x24f8a: 0x6d354620,\n\t0x24f91: 0x6cffb420,\n\t0x24fa1: 0x6ccf6620, 0x24fa2: 0x6d217620, 0x24fa3: 0x6c676a20,\n\t0x24fa9: 0x6cb70a20, 0x24faa: 0x6c190a20, 0x24fab: 0x6cca8220,\n\t0x24fad: 0x6cdd8e20, 0x24fae: 0x6cb9bc20, 0x24faf: 0x6c5c1a20,\n\t0x24fb1: 0x6ccda020, 0x24fb2: 0x6c368c20,\n\t0x24fbb: 0x6cbfbc20,\n\t0x24fbd: 0x6c78ca20,\n\t// Block 0x93f, offset 0x24fc0\n\t0x24fc0: 0x6cf23420, 0x24fc1: 0x6d3e7c20, 0x24fc2: 0x6c608e20,\n\t0x24fc7: 0x6c26e220,\n\t0x24fc9: 0x6c263620,\n\t0x24fcd: 0x6c90f620, 0x24fce: 0x6c775020, 0x24fcf: 0x6c7e1220,\n\t0x24fd0: 0x6c2b8e20, 0x24fd1: 0x6cbc7e20, 0x24fd3: 0x6ca16420,\n\t0x24fd6: 0x6c4cce20, 0x24fd7: 0x6c52c620,\n\t0x24fd8: 0x6c177c20, 0x24fd9: 0x6c522620,\n\t0x24fe2: 0x6c129020, 0x24fe3: 0x6d308c20,\n\t0x24fe6: 0x6c4bea20,\n\t0x24ff0: 0x6d05ec20, 0x24ff1: 0x6caece20, 0x24ff2: 0x6c74ca20,\n\t0x24ff5: 0x6c41ee20, 0x24ff6: 0x6cd83220,\n\t0x24ff8: 0x6cdc8620, 0x24ff9: 0x6cc40420, 0x24ffb: 0x6cf3f220,\n\t0x24ffc: 0x6d0cda20, 0x24ffd: 0x6caf1820, 0x24ffe: 0x6cffc420, 0x24fff: 0x6cac4820,\n\t// Block 0x940, offset 0x25000\n\t0x2500d: 0x6c7e9e20,\n\t0x25017: 0x6c085a20,\n\t0x25018: 0x6d320020, 0x25019: 0x6c60de20,\n\t0x2501c: 0x6c6cc020, 0x2501d: 0x6c887420, 0x2501e: 0x6c791220,\n\t0x25020: 0x6d38d620,\n\t0x25028: 0x6d2a9620, 0x2502a: 0x6c822e20, 0x2502b: 0x6cb54820,\n\t0x2502c: 0x6c0e3820,\n\t0x25035: 0x6d1b1c20, 0x25036: 0x6cb1f620,\n\t0x2503b: 0x6cda3820,\n\t0x2503c: 0x6c941620, 0x2503e: 0x6c2bb420, 0x2503f: 0x6c31e420,\n\t// Block 0x941, offset 0x25040\n\t0x25040: 0x6c8a8820, 0x25041: 0x6d3dd620,\n\t0x2504a: 0x6c16fc20,\n\t0x25052: 0x6c194020, 0x25053: 0x6cdee020,\n\t0x25059: 0x6cc41e20, 0x2505a: 0x6c2a4c20,\n\t0x2505d: 0x6cc51020, 0x2505f: 0x6cb3ba20,\n\t0x25066: 0x6d37e020, 0x25067: 0x6d006020,\n\t0x2506a: 0x6c679620, 0x2506b: 0x6cc21820,\n\t0x2506c: 0x6c831020, 0x2506d: 0x6c10f020, 0x2506e: 0x6cc39a20,\n\t0x25075: 0x6cfe7220, 0x25076: 0x6c836820,\n\t0x2507a: 0x6c809620,\n\t0x2507f: 0x6c7e6820,\n\t// Block 0x942, offset 0x25080\n\t0x25081: 0x6c7e6a20,\n\t0x25084: 0x6d24b420,\n\t0x2508a: 0x6c697e20, 0x2508b: 0x6cbd4e20,\n\t0x2508c: 0x6c5e7e20, 0x2508f: 0x6c41c820,\n\t0x25092: 0x6d169220,\n\t0x250a0: 0x6d16c820, 0x250a1: 0x6d339e20,\n\t0x250a4: 0x6c0c6e20, 0x250a5: 0x6cd0e620, 0x250a6: 0x6c6fd820,\n\t0x250ab: 0x6c509420,\n\t0x250ac: 0x6c3e2020, 0x250ae: 0x6c706620,\n\t// Block 0x943, offset 0x250c0\n\t0x250c0: 0x6d426620, 0x250c1: 0x6d14ac20,\n\t0x250c6: 0x6cfc9420, 0x250c7: 0x6d14ae20,\n\t0x250c9: 0x6cd8a220, 0x250cb: 0x6c20f220,\n\t0x250ce: 0x6ca0fa20,\n\t0x250e1: 0x6d2d6c20, 0x250e3: 0x6d0a0020,\n\t0x250e6: 0x6cc79a20,\n\t0x250e8: 0x6c5db020,\n\t0x250ec: 0x6cce6a20,\n\t0x250f0: 0x6cd46620,\n\t0x250fe: 0x6d203e20, 0x250ff: 0x6d231c20,\n\t// Block 0x944, offset 0x25100\n\t0x25102: 0x6c75b420,\n\t0x25109: 0x6d3e4220, 0x2510a: 0x6c925c20,\n\t0x2511a: 0x6c1baa20, 0x2511b: 0x6c7d6620,\n\t0x25120: 0x6d3ce420,\n\t0x25126: 0x6c541420,\n\t0x25129: 0x6d064420,\n\t0x2513e: 0x6d3f9c20, 0x2513f: 0x6d1d4220,\n\t// Block 0x945, offset 0x25140\n\t0x25142: 0x6d39b020,\n\t0x25145: 0x6c8f3a20,\n\t0x25151: 0x6caa6820,\n\t0x25158: 0x6c0a3020, 0x2515a: 0x6c1c5e20,\n\t0x2515c: 0x6d412420, 0x2515d: 0x6c3cb820, 0x2515e: 0x6c92aa20, 0x2515f: 0x6cb49220,\n\t0x25165: 0x6d3bdc20, 0x25167: 0x6d308020,\n\t0x25168: 0x6cd1ec20, 0x25169: 0x6d227e20, 0x2516a: 0x6c92ac20, 0x2516b: 0x6c896820,\n\t0x2516f: 0x6c74c020,\n\t0x25170: 0x6c8aa620, 0x25171: 0x6c080820,\n\t// Block 0x946, offset 0x25180\n\t0x25183: 0x6d18ce20,\n\t0x25184: 0x6c492820,\n\t0x2518c: 0x6c02ae20, 0x2518f: 0x6c4b8220,\n\t0x25190: 0x6c9fce20, 0x25192: 0x6d0dec20, 0x25193: 0x6c7fd220,\n\t0x25196: 0x6c0f9220,\n\t0x25199: 0x6d29a620, 0x2519a: 0x6d1ffe20,\n\t0x251a5: 0x6d194420, 0x251a6: 0x6ca66020,\n\t0x251ac: 0x6ca66620, 0x251ad: 0x6c4ce020, 0x251ae: 0x6c760a20,\n\t0x251b0: 0x6cd21820, 0x251b2: 0x6cfc5c20,\n\t0x251b4: 0x6cb95e20, 0x251b5: 0x6cc42020, 0x251b6: 0x6c7cc420,\n\t// Block 0x947, offset 0x251c0\n\t0x251c0: 0x6ccf1620, 0x251c2: 0x6c5dd620,\n\t0x251c4: 0x6ced8e20,\n\t0x251ca: 0x6c3af220, 0x251cb: 0x6c3b0020,\n\t0x251cd: 0x6d22c420,\n\t0x251d1: 0x6d339220, 0x251d2: 0x6c48a420,\n\t0x251d4: 0x6c6a8620, 0x251d5: 0x6c983e20, 0x251d6: 0x6c50cc20,\n\t0x251d8: 0x6d1fa820,\n\t0x251df: 0x6c324220,\n\t0x251e0: 0x6cd7d220, 0x251e2: 0x6c859420,\n\t0x251e5: 0x6c6a9420, 0x251e6: 0x6ca98a20, 0x251e7: 0x6c03ac20,\n\t0x251e8: 0x6d20de20,\n\t0x251ee: 0x6d33b220,\n\t0x251f8: 0x6c50e020, 0x251f9: 0x6c77e820,\n\t0x251fe: 0x6c324a20, 0x251ff: 0x6c634820,\n\t// Block 0x948, offset 0x25200\n\t0x25201: 0x6c186020, 0x25203: 0x6c20f420,\n\t0x25204: 0x6c50f820, 0x25205: 0x6d2d2620,\n\t0x2520a: 0x6c9a8c20,\n\t0x2520d: 0x6c50fa20, 0x2520e: 0x6d3f0420, 0x2520f: 0x6d3a0620,\n\t0x25212: 0x6ceb0e20,\n\t0x25218: 0x6d421820, 0x2521a: 0x6cc7a220, 0x2521b: 0x6c34ee20,\n\t0x2521c: 0x6c67e020,\n\t0x25227: 0x6c526420,\n\t0x25229: 0x6c07e620, 0x2522a: 0x6ca10820,\n\t0x2522f: 0x6d40ba20,\n\t0x25232: 0x6c0caa20,\n\t0x25234: 0x6c7a9820, 0x25235: 0x6c63c020,\n\t0x2523a: 0x6d3d0420,\n\t0x2523c: 0x6d04d620,\n\t// Block 0x949, offset 0x25240\n\t0x25243: 0x6c512820,\n\t0x25245: 0x6cbb7220,\n\t0x2524d: 0x6c3a5c20, 0x2524e: 0x6cd10a20,\n\t0x25252: 0x6d3c9620, 0x25253: 0x6c7b6a20,\n\t0x25254: 0x6d2b5420, 0x25255: 0x6cfaae20, 0x25257: 0x6c09d620,\n\t0x25258: 0x6d17f620, 0x2525a: 0x6c171a20,\n\t0x2526a: 0x6c999a20,\n\t0x25276: 0x6ced3020,\n\t0x2527d: 0x6cf37620, 0x2527e: 0x6c7a5220, 0x2527f: 0x6cf2be20,\n\t// Block 0x94a, offset 0x25280\n\t0x25280: 0x6d038a20, 0x25281: 0x6c781620, 0x25283: 0x6c6f8220,\n\t0x25284: 0x6c329c20, 0x25285: 0x6c594820,\n\t0x25288: 0x6d369620, 0x25289: 0x6c130620, 0x2528a: 0x6cc75a20, 0x2528b: 0x6c606e20,\n\t0x2528d: 0x6d131a20,\n\t0x2529b: 0x6c6dca20,\n\t0x2529c: 0x6d106220,\n\t0x252a1: 0x6d400220,\n\t0x252a9: 0x6c11d620,\n\t0x252b1: 0x6cd81c20, 0x252b2: 0x6c866220, 0x252b3: 0x6c47c620,\n\t0x252b4: 0x6c172220, 0x252b6: 0x6c3a6820, 0x252b7: 0x6c8e8a20,\n\t0x252b9: 0x6c6b1e20, 0x252ba: 0x6d276020,\n\t0x252bd: 0x6d36ba20,\n\t// Block 0x94b, offset 0x252c0\n\t0x252c0: 0x6c1dd220, 0x252c1: 0x6c0cbc20,\n\t0x252d2: 0x6c5f1a20,\n\t0x252dc: 0x6c955220, 0x252dd: 0x6c64f820, 0x252df: 0x6c206020,\n\t0x252e0: 0x6cd6de20, 0x252e2: 0x6c93fe20, 0x252e3: 0x6c75ea20,\n\t0x252e4: 0x6c69c820, 0x252e6: 0x6ce42020, 0x252e7: 0x6d2c0020,\n\t0x252ea: 0x6d18a820,\n\t0x252ec: 0x6c235a20, 0x252ed: 0x6ca57420, 0x252ee: 0x6c638220,\n\t0x252f4: 0x6c627c20,\n\t0x252fd: 0x6c00ce20,\n\t// Block 0x94c, offset 0x25300\n\t0x25307: 0x6c65d820,\n\t0x2530a: 0x6c07ca20,\n\t0x2530c: 0x6c38c620, 0x2530d: 0x6cdc8a20, 0x2530e: 0x6d421e20,\n\t0x25310: 0x6c42e420, 0x25311: 0x6c432420, 0x25312: 0x6c817e20,\n\t0x25314: 0x6d3db620,\n\t0x2531f: 0x6c56ca20,\n\t0x25322: 0x6ce9c420,\n\t0x25326: 0x6c0a7420, 0x25327: 0x6c716420,\n\t0x2532e: 0x6c575a20,\n\t0x25332: 0x6c1a4a20,\n\t0x25336: 0x6c7b4220, 0x25337: 0x6c291420,\n\t0x25338: 0x6c444c20, 0x25339: 0x6d011420, 0x2533b: 0x6c6b6220,\n\t0x2533d: 0x6c117620,\n\t// Block 0x94d, offset 0x25340\n\t0x25346: 0x6d40ec20,\n\t0x25348: 0x6cb46820, 0x2534b: 0x6cd57c20,\n\t0x2534c: 0x6c104820,\n\t0x25357: 0x6ca93220,\n\t0x25358: 0x6d0dfc20, 0x25359: 0x6d396020, 0x2535b: 0x6c9b8420,\n\t0x2535d: 0x6c0b5e20, 0x2535f: 0x6cfe6420,\n\t0x25364: 0x6c931c20, 0x25365: 0x6c849020,\n\t0x25369: 0x6c62ca20, 0x2536b: 0x6c9f0a20,\n\t0x2536c: 0x6c835620, 0x2536e: 0x6d375820, 0x2536f: 0x6d1ecc20,\n\t0x25370: 0x6c0b6020,\n\t0x25378: 0x6ca2bc20, 0x25379: 0x6cc4da20,\n\t// Block 0x94e, offset 0x25380\n\t0x25382: 0x6ca7c620,\n\t0x2538a: 0x6cc33a20, 0x2538b: 0x6d30c620,\n\t0x25390: 0x6c836620,\n\t0x25397: 0x6c294820,\n\t0x25398: 0x6c752e20,\n\t0x2539c: 0x6c8dc420, 0x2539e: 0x6c8de820, 0x2539f: 0x6d0d2620,\n\t0x253a3: 0x6d118620,\n\t0x253a4: 0x6d321220, 0x253a5: 0x6cb4ce20, 0x253a6: 0x6c008a20,\n\t0x253a8: 0x6caa3e20, 0x253a9: 0x6c988220,\n\t0x253b1: 0x6c76c220, 0x253b3: 0x6c6f5c20,\n\t0x253b4: 0x6d0d5820, 0x253b5: 0x6c9e5420, 0x253b7: 0x6d1a3e20,\n\t0x253b8: 0x6ceccc20, 0x253b9: 0x6d11f420, 0x253ba: 0x6cebce20, 0x253bb: 0x6cafc820,\n\t0x253bc: 0x6cdc2c20,\n\t// Block 0x94f, offset 0x253c0\n\t0x253c5: 0x6c799a20,\n\t0x253c8: 0x6c532c20, 0x253ca: 0x6ca03020, 0x253cb: 0x6c8cd220,\n\t0x253cc: 0x6d173e20, 0x253cd: 0x6ccfd220, 0x253cf: 0x6d429220,\n\t0x253db: 0x6ce85020,\n\t0x253dd: 0x6d1e7820, 0x253df: 0x6cec2620,\n\t0x253e0: 0x6c4af420, 0x253e1: 0x6c53bc20,\n\t0x253e5: 0x6cd36e20, 0x253e7: 0x6d049220,\n\t0x253e9: 0x6c000620,\n\t0x253f1: 0x6c19ee20, 0x253f3: 0x6c793c20,\n\t0x253f4: 0x6d176c20, 0x253f5: 0x6d104820, 0x253f6: 0x6ce67420, 0x253f7: 0x6c311e20,\n\t0x253f8: 0x6c13e820, 0x253f9: 0x6c8f3020,\n\t0x253fd: 0x6cc06a20, 0x253fe: 0x6d084e20, 0x253ff: 0x6ccfee20,\n\t// Block 0x950, offset 0x25400\n\t0x25400: 0x6c7b5420, 0x25401: 0x6ce7ca20, 0x25403: 0x6cba0e20,\n\t0x25405: 0x6c1e4220,\n\t0x2540a: 0x6cf1de20,\n\t0x2540c: 0x6c906820, 0x2540d: 0x6c018820,\n\t0x25414: 0x6c76d820, 0x25416: 0x6d11b020,\n\t0x25418: 0x6c3e8420,\n\t0x2541c: 0x6c084220, 0x2541d: 0x6c803020, 0x2541e: 0x6cb86c20, 0x2541f: 0x6c2d6620,\n\t0x25422: 0x6c69a620, 0x25423: 0x6c4a7420,\n\t0x25425: 0x6d049820,\n\t0x25428: 0x6c78bc20,\n\t0x25436: 0x6cfcd620, 0x25437: 0x6cf33a20,\n\t// Block 0x951, offset 0x25440\n\t0x25442: 0x6c45f620,\n\t0x25446: 0x6cab8620, 0x25447: 0x6c781820,\n\t0x2544b: 0x6c7a5420,\n\t0x25451: 0x6ce4be20, 0x25452: 0x6c46d420, 0x25453: 0x6c96a220,\n\t0x25455: 0x6c8f3e20,\n\t0x25459: 0x6cf0c220, 0x2545a: 0x6cf1ec20,\n\t0x25461: 0x6c462020, 0x25463: 0x6ce8e820,\n\t0x25464: 0x6ca91620, 0x25467: 0x6c9d7c20,\n\t0x2546b: 0x6c80e020,\n\t0x2546c: 0x6cba2220, 0x2546d: 0x6c977e20, 0x2546e: 0x6d308e20,\n\t0x25470: 0x6c57c620, 0x25471: 0x6d1db620, 0x25472: 0x6c6d5020,\n\t0x25474: 0x6c9aae20, 0x25477: 0x6c3ef020,\n\t0x2547b: 0x6cc1c220,\n\t// Block 0x952, offset 0x25480\n\t0x2548c: 0x6c8f4820, 0x2548d: 0x6c406220, 0x2548e: 0x6c28c620,\n\t0x25490: 0x6c460020, 0x25492: 0x6c256e20,\n\t0x25495: 0x6d040c20,\n\t0x2549c: 0x6ce87c20, 0x2549d: 0x6cd48020,\n\t0x254aa: 0x6cbf8420,\n\t0x254b3: 0x6cc6e020,\n\t0x254bb: 0x6c874c20,\n\t0x254bf: 0x6c5f9220,\n\t// Block 0x953, offset 0x254c0\n\t0x254c0: 0x6cebbc20,\n\t0x254cc: 0x6ce7aa20,\n\t0x254d2: 0x6ce04c20,\n\t0x254d4: 0x6c8dea20, 0x254d6: 0x6d169420, 0x254d7: 0x6cc85220,\n\t0x254d9: 0x6cabe220,\n\t0x254dd: 0x6c10e820,\n\t0x254e1: 0x6d269820, 0x254e2: 0x6cc3b020, 0x254e3: 0x6d3ade20,\n\t0x254e4: 0x6c4d6220,\n\t0x254f1: 0x6c381220, 0x254f2: 0x6c4d6820,\n\t// Block 0x954, offset 0x25500\n\t0x25500: 0x6c101620, 0x25501: 0x6cb25620, 0x25502: 0x6c8b0c20,\n\t0x2550a: 0x6c7cd420, 0x2550b: 0x6c3e9e20,\n\t0x2550c: 0x6ce50620, 0x2550d: 0x6cf2fc20, 0x2550f: 0x6c70aa20,\n\t0x25518: 0x6d318620, 0x2551a: 0x6c3ec620,\n\t0x25522: 0x6c8f9e20,\n\t0x25526: 0x6cf8ce20, 0x25527: 0x6ce4c020,\n\t0x2552b: 0x6c626620,\n\t0x2552f: 0x6d122c20,\n\t0x25531: 0x6c246620,\n\t0x25534: 0x6cad3020, 0x25535: 0x6cbce820,\n\t0x2553b: 0x6c8fb420,\n\t0x2553c: 0x6c615820,\n\t// Block 0x955, offset 0x25540\n\t0x25542: 0x6ce79a20, 0x25543: 0x6d158420,\n\t0x25545: 0x6c168420,\n\t0x2554b: 0x6c45c220,\n\t0x2554e: 0x6c309620,\n\t0x25556: 0x6cfda420,\n\t0x25559: 0x6ce6b620, 0x2555b: 0x6d3b7020,\n\t0x2555c: 0x6d15c820, 0x2555d: 0x6d170020, 0x2555e: 0x6d3ef820, 0x2555f: 0x6cb6e020,\n\t0x25562: 0x6c141a20,\n\t0x2556c: 0x6c33e220, 0x2556f: 0x6c1cbc20,\n\t0x25570: 0x6c922a20, 0x25571: 0x6c33ea20, 0x25573: 0x6c399220,\n\t0x25574: 0x6cd35c20, 0x25575: 0x6ce3e420, 0x25576: 0x6c5eaa20, 0x25577: 0x6cbfaa20,\n\t0x25578: 0x6cd70e20, 0x25579: 0x6c18b020,\n\t0x2557c: 0x6c5a6820, 0x2557d: 0x6cd41220,\n\t// Block 0x956, offset 0x25580\n\t0x25580: 0x6d279c20,\n\t0x25586: 0x6c8f8420,\n\t0x25588: 0x6c97b620, 0x25589: 0x6c464220,\n\t0x2558d: 0x6cfaa020, 0x2558e: 0x6ca10a20,\n\t0x25590: 0x6cd05e20, 0x25592: 0x6cb30820, 0x25593: 0x6d120420,\n\t0x25594: 0x6cc0fa20, 0x25595: 0x6cc4c020,\n\t0x25599: 0x6c724220,\n\t0x2559c: 0x6d1ada20, 0x2559d: 0x6c041020, 0x2559e: 0x6ca81c20,\n\t0x255a0: 0x6c1d6c20,\n\t0x255aa: 0x6cc67820, 0x255ab: 0x6c202020,\n\t0x255ac: 0x6ca83420, 0x255ad: 0x6c861620, 0x255ae: 0x6c676220, 0x255af: 0x6c77ac20,\n\t0x255b0: 0x6c12f020, 0x255b1: 0x6c1d5220, 0x255b2: 0x6d3b5620, 0x255b3: 0x6d3f1420,\n\t0x255b4: 0x6d0fb820,\n\t0x255bc: 0x6cf1e020,\n\t// Block 0x957, offset 0x255c0\n\t0x255cb: 0x6c620420,\n\t0x255cc: 0x6c620620,\n\t0x255d0: 0x6c93e820, 0x255d1: 0x6cc07820, 0x255d2: 0x6c33fc20, 0x255d3: 0x6c05cc20,\n\t0x255d4: 0x6c14ce20, 0x255d6: 0x6c0f1620,\n\t0x255d8: 0x6c1abe20, 0x255d9: 0x6d30fa20, 0x255da: 0x6c98b820,\n\t0x255dc: 0x6c621c20, 0x255dd: 0x6c9eb620, 0x255de: 0x6d262620,\n\t0x255e0: 0x6cf3d220, 0x255e1: 0x6d366420, 0x255e2: 0x6cb25c20,\n\t0x255e5: 0x6c1ccc20,\n\t0x255eb: 0x6c9c6020,\n\t0x255ec: 0x6c3a3c20, 0x255ed: 0x6c25c020, 0x255ee: 0x6c9b2420,\n\t// Block 0x958, offset 0x25600\n\t0x2560d: 0x6d1a8220, 0x2560e: 0x6c989a20, 0x2560f: 0x6c2d2420,\n\t0x25610: 0x6c2dd620, 0x25612: 0x6cb9b420,\n\t0x25615: 0x6c4f9820, 0x25616: 0x6d348620, 0x25617: 0x6c713e20,\n\t0x25618: 0x6ca76820,\n\t0x2561c: 0x6c9c6620, 0x2561d: 0x6c47b620,\n\t0x25623: 0x6d3b5820,\n\t0x25624: 0x6ca85220, 0x25625: 0x6d3d8420, 0x25627: 0x6d131c20,\n\t0x25628: 0x6c23dc20, 0x2562a: 0x6d05be20,\n\t0x2562c: 0x6cf8b820, 0x2562f: 0x6c0e8420,\n\t0x2563e: 0x6c11d820,\n\t// Block 0x959, offset 0x25640\n\t0x25643: 0x6d0dba20,\n\t0x25651: 0x6c6cb220,\n\t0x25654: 0x6c71ce20, 0x25655: 0x6c298620, 0x25656: 0x6c327620,\n\t0x25658: 0x6d128c20, 0x25659: 0x6c6ea020, 0x2565a: 0x6c78cc20, 0x2565b: 0x6c962220,\n\t0x2565c: 0x6cf00220, 0x2565d: 0x6ce87620, 0x2565e: 0x6d1f6020, 0x2565f: 0x6cac3020,\n\t0x25661: 0x6cb01020, 0x25662: 0x6c2fb820,\n\t0x25664: 0x6cf00420, 0x25665: 0x6c183620, 0x25666: 0x6c66bc20,\n\t0x25668: 0x6cd81e20, 0x25669: 0x6d3d8a20, 0x2566a: 0x6cda4020,\n\t0x2566c: 0x6cc87420, 0x2566e: 0x6d218420,\n\t0x25673: 0x6c368e20,\n\t0x25676: 0x6c7a7e20,\n\t0x25678: 0x6d3b2220,\n\t0x2567e: 0x6cf9e820,\n\t// Block 0x95a, offset 0x25680\n\t0x2569b: 0x6c3ef220,\n\t0x2569c: 0x6ce23e20, 0x2569d: 0x6cf6d020, 0x2569e: 0x6c1d8020, 0x2569f: 0x6c41ec20,\n\t0x256a0: 0x6c936420, 0x256a1: 0x6c131620, 0x256a2: 0x6ccdb220, 0x256a3: 0x6c8e9c20,\n\t0x256a5: 0x6cf8e020, 0x256a6: 0x6c5f3e20, 0x256a7: 0x6d161220,\n\t0x256a8: 0x6ce01220, 0x256aa: 0x6c55b620,\n\t0x256ad: 0x6c25c820, 0x256ae: 0x6c447820,\n\t0x256b0: 0x6cd3dc20, 0x256b1: 0x6ccac020, 0x256b2: 0x6c53d420, 0x256b3: 0x6cfd0e20,\n\t0x256b6: 0x6cf9f020,\n\t0x256bb: 0x6ca2ae20,\n\t0x256bc: 0x6cdd9620, 0x256be: 0x6d2d4c20,\n\t// Block 0x95b, offset 0x256c0\n\t0x256c0: 0x6c3d9e20, 0x256c1: 0x6ccb6220, 0x256c2: 0x6caa4620, 0x256c3: 0x6d18ac20,\n\t0x256e7: 0x6cbdaa20,\n\t0x256e8: 0x6cbedc20,\n\t0x256f5: 0x6c5c5a20, 0x256f6: 0x6cd6e220, 0x256f7: 0x6c284a20,\n\t0x256f8: 0x6cab5420, 0x256f9: 0x6ca17420, 0x256fa: 0x6cb92420, 0x256fb: 0x6c1c8020,\n\t0x256fc: 0x6cac0620, 0x256fd: 0x6c739620,\n\t// Block 0x95c, offset 0x25700\n\t0x25700: 0x6c178020, 0x25701: 0x6c8b3c20, 0x25702: 0x6c0db420, 0x25703: 0x6c7a0a20,\n\t0x25704: 0x6c28c820, 0x25705: 0x6c1dee20, 0x25706: 0x6ce70620, 0x25707: 0x6c28ca20,\n\t0x25708: 0x6c97ce20, 0x25709: 0x6c56ce20, 0x2570a: 0x6c8a2820, 0x2570b: 0x6cfbae20,\n\t0x2570d: 0x6c129820, 0x2570e: 0x6c92ea20, 0x2570f: 0x6c204220,\n\t0x25710: 0x6cf3f420, 0x25711: 0x6c978820,\n\t0x25715: 0x6d3f2420, 0x25717: 0x6c328020,\n\t0x2571a: 0x6cd6f220, 0x2571b: 0x6c406420,\n\t0x2571c: 0x6c72a620, 0x2571d: 0x6d395820, 0x2571f: 0x6c2e4220,\n\t0x25720: 0x6cee5a20, 0x25721: 0x6c206820, 0x25722: 0x6cb92620, 0x25723: 0x6cea1220,\n\t0x25725: 0x6c886420, 0x25726: 0x6c0c2e20, 0x25727: 0x6c845420,\n\t0x2572a: 0x6c845620,\n\t// Block 0x95d, offset 0x25740\n\t0x25746: 0x6c0a9220, 0x25747: 0x6c407620,\n\t0x25748: 0x6c257820, 0x25749: 0x6c318020, 0x2574b: 0x6d29a820,\n\t0x2574c: 0x6c8fb620, 0x2574d: 0x6d0a4a20, 0x2574e: 0x6cbf7a20, 0x2574f: 0x6c5f6e20,\n\t0x25750: 0x6cba2c20, 0x25752: 0x6c65fa20, 0x25753: 0x6cce9020,\n\t0x25754: 0x6c351e20, 0x25755: 0x6cd51620, 0x25756: 0x6c10c820, 0x25757: 0x6d05f820,\n\t0x25758: 0x6c304420, 0x2575a: 0x6cc49220,\n\t0x2575c: 0x6d0fe620, 0x2575d: 0x6cc8b420, 0x2575e: 0x6c8c7020, 0x2575f: 0x6c65fc20,\n\t0x25760: 0x6c2ca820, 0x25761: 0x6c3ba020, 0x25762: 0x6c2d9020, 0x25763: 0x6d41dc20,\n\t0x25765: 0x6ca94820,\n\t0x2576a: 0x6cdba020, 0x2576b: 0x6ce52420,\n\t0x2576c: 0x6c01da20, 0x2576f: 0x6c131c20,\n\t0x25770: 0x6c2fc220, 0x25771: 0x6cd02820, 0x25772: 0x6c328420, 0x25773: 0x6ce39420,\n\t0x25774: 0x6c695420, 0x25775: 0x6d41de20, 0x25776: 0x6d2f1020, 0x25777: 0x6c65fe20,\n\t0x25778: 0x6c28da20, 0x25779: 0x6c285420, 0x2577a: 0x6cd97420,\n\t// Block 0x95e, offset 0x25780\n\t0x25790: 0x6d2e2620, 0x25791: 0x6ce69620, 0x25792: 0x6d372a20,\n\t0x25795: 0x6d1f8220, 0x25796: 0x6cac0e20,\n\t0x257a1: 0x6c854220,\n\t0x257a4: 0x6cb9d820, 0x257a6: 0x6cdca620, 0x257a7: 0x6c71dc20,\n\t0x257a8: 0x6c010020, 0x257a9: 0x6c445020, 0x257aa: 0x6c72b420, 0x257ab: 0x6cea7220,\n\t0x257ac: 0x6c0aa620, 0x257ad: 0x6cb87e20, 0x257ae: 0x6c0fa820, 0x257af: 0x6c5c7c20,\n\t0x257b1: 0x6c670020,\n\t0x257b4: 0x6c466420, 0x257b5: 0x6cdba420,\n\t0x257ba: 0x6c227a20, 0x257bb: 0x6cbb5c20,\n\t0x257bf: 0x6d0cf420,\n\t// Block 0x95f, offset 0x257c0\n\t0x257cf: 0x6c2d9420,\n\t0x257d2: 0x6c9f0420,\n\t0x257dc: 0x6cb3b620, 0x257dd: 0x6c8e1620, 0x257de: 0x6c6b7420, 0x257df: 0x6d3b3e20,\n\t0x257e0: 0x6c47ee20, 0x257e3: 0x6c32aa20,\n\t0x257e4: 0x6d2fee20, 0x257e6: 0x6ccebe20, 0x257e7: 0x6cbdf020,\n\t0x257e8: 0x6c9ca420, 0x257ea: 0x6cb2e220, 0x257eb: 0x6c23c020,\n\t0x257ec: 0x6c1d8820, 0x257ef: 0x6cc9ae20,\n\t0x257f6: 0x6ce52620,\n\t// Block 0x960, offset 0x25800\n\t0x25805: 0x6c8edc20, 0x25806: 0x6c936c20, 0x25807: 0x6c91fc20,\n\t0x25808: 0x6d407620,\n\t0x2580c: 0x6c941e20, 0x2580d: 0x6c58e620, 0x2580f: 0x6ce5b420,\n\t0x25810: 0x6ce9d820, 0x25811: 0x6cbb5220, 0x25812: 0x6c8c8020, 0x25813: 0x6c06c220,\n\t0x25814: 0x6cad7620, 0x25815: 0x6d2dc420, 0x25817: 0x6c874e20,\n\t0x2581b: 0x6ce3b220,\n\t0x2581c: 0x6c560020,\n\t0x25822: 0x6c8b6c20,\n\t0x25835: 0x6c5b8020, 0x25836: 0x6cc16420, 0x25837: 0x6d086820,\n\t0x25839: 0x6c6ec620, 0x2583a: 0x6c2f1220, 0x2583b: 0x6cdc0820,\n\t0x2583d: 0x6cf11e20, 0x2583f: 0x6d0d1420,\n\t// Block 0x961, offset 0x25840\n\t0x25840: 0x6d0c4a20, 0x25841: 0x6c050e20, 0x25843: 0x6c67ce20,\n\t0x25844: 0x6ca66820, 0x25845: 0x6c876e20, 0x25846: 0x6c560620, 0x25847: 0x6cb80420,\n\t0x25848: 0x6d37e220,\n\t0x25851: 0x6c0acc20,\n\t0x25854: 0x6d220020, 0x25855: 0x6c2f1420, 0x25856: 0x6c8c8a20, 0x25857: 0x6c878c20,\n\t0x25858: 0x6d3de620, 0x25859: 0x6c62f020, 0x2585a: 0x6c70e620,\n\t0x2585c: 0x6c3c8820, 0x2585e: 0x6d248820,\n\t0x25868: 0x6c8b7e20, 0x25869: 0x6d28e020, 0x2586a: 0x6cb9e820, 0x2586b: 0x6c6a4620,\n\t0x2586c: 0x6c494220, 0x2586e: 0x6d3dee20,\n\t0x25871: 0x6c40a220,\n\t0x25879: 0x6ccba220,\n\t0x2587c: 0x6c248a20,\n\t// Block 0x962, offset 0x25880\n\t0x25883: 0x6c5b8220,\n\t0x25888: 0x6c29a620, 0x25889: 0x6c901c20, 0x2588a: 0x6d198420,\n\t0x25897: 0x6cc96020,\n\t0x25898: 0x6d274220, 0x2589a: 0x6c2bc620,\n\t0x258a1: 0x6c420820, 0x258a2: 0x6d295c20, 0x258a3: 0x6ccdf420,\n\t0x258a4: 0x6d24b020, 0x258a5: 0x6c0fde20, 0x258a7: 0x6c2f9820,\n\t0x258a8: 0x6c388c20, 0x258aa: 0x6d22d820,\n\t0x258ac: 0x6ccfc420,\n\t0x258b2: 0x6c457020,\n\t0x258b4: 0x6c9ed020, 0x258b5: 0x6cea4a20,\n\t0x258b8: 0x6c8af620,\n\t// Block 0x963, offset 0x258c0\n\t0x258c1: 0x6d2bd420, 0x258c2: 0x6cadbc20,\n\t0x258c4: 0x6c9c4a20, 0x258c6: 0x6c9ffa20, 0x258c7: 0x6c394a20,\n\t0x258c9: 0x6ca33620, 0x258ca: 0x6cd8b820, 0x258cb: 0x6d14ea20,\n\t0x258cc: 0x6c635020, 0x258cd: 0x6d3ae620,\n\t0x258d3: 0x6c047e20,\n\t0x258d4: 0x6d231e20, 0x258d6: 0x6cb35820,\n\t0x258da: 0x6c582820, 0x258db: 0x6c11f820,\n\t0x258dc: 0x6c684a20,\n\t0x258e0: 0x6cdfe420,\n\t0x258e9: 0x6d363a20, 0x258eb: 0x6c9cf420,\n\t0x258ec: 0x6c77ae20,\n\t0x258f1: 0x6d109a20, 0x258f2: 0x6c335020, 0x258f3: 0x6cc36020,\n\t0x258f4: 0x6c10a420, 0x258f5: 0x6c1f5420, 0x258f6: 0x6cbc2820, 0x258f7: 0x6c8e6c20,\n\t0x258f8: 0x6c0f1820, 0x258fa: 0x6c772e20, 0x258fb: 0x6c3bde20,\n\t// Block 0x964, offset 0x25900\n\t0x25905: 0x6c2a2020,\n\t0x25909: 0x6c312820, 0x2590a: 0x6c440820,\n\t0x25919: 0x6c8d3a20, 0x2591a: 0x6cf79420,\n\t0x2591c: 0x6ca6ba20, 0x2591d: 0x6d389620, 0x2591e: 0x6d389820,\n\t0x25923: 0x6c1d7820,\n\t0x25934: 0x6ca6ee20, 0x25935: 0x6c5f0c20, 0x25937: 0x6cc12420,\n\t// Block 0x965, offset 0x25940\n\t0x25944: 0x6c763e20, 0x25947: 0x6cfcfc20,\n\t0x25949: 0x6c516820, 0x2594b: 0x6c8bd220,\n\t0x2594d: 0x6d3e7e20,\n\t0x25951: 0x6cab8c20, 0x25952: 0x6c245620,\n\t0x25957: 0x6c140420,\n\t0x2595d: 0x6d383820, 0x2595e: 0x6c102420,\n\t0x25964: 0x6c1d8220, 0x25965: 0x6cf8e220, 0x25966: 0x6cc99220, 0x25967: 0x6cfb9620,\n\t0x25968: 0x6ccb6420, 0x25969: 0x6c9e6020, 0x2596b: 0x6c38c020,\n\t0x2596c: 0x6d341620, 0x2596e: 0x6c256420,\n\t0x25974: 0x6cfa4620,\n\t0x2597e: 0x6cab1420, 0x2597f: 0x6c845820,\n\t// Block 0x966, offset 0x25980\n\t0x25980: 0x6d40de20, 0x25982: 0x6c24f220, 0x25983: 0x6d2b1220,\n\t0x25985: 0x6c845a20,\n\t0x25998: 0x6cb67620, 0x2599a: 0x6d3d1020, 0x2599b: 0x6c257a20,\n\t0x2599c: 0x6cb41e20, 0x2599e: 0x6c38d620, 0x2599f: 0x6ce02620,\n\t0x259a9: 0x6d3eac20, 0x259aa: 0x6d412a20, 0x259ab: 0x6d38bc20,\n\t0x259ac: 0x6cc6d020, 0x259ad: 0x6c8bee20, 0x259ae: 0x6ce02820,\n\t0x259b6: 0x6cd3fe20,\n\t0x259ba: 0x6c251420, 0x259bb: 0x6d3eb820,\n\t0x259bc: 0x6c3db620,\n\t// Block 0x967, offset 0x259c0\n\t0x259c1: 0x6d001c20,\n\t0x259c8: 0x6c3c7420,\n\t0x259cf: 0x6cfd4220,\n\t0x259d0: 0x6c670c20, 0x259d2: 0x6c3c0420,\n\t0x259d7: 0x6c875020,\n\t0x259d8: 0x6ca19820,\n\t0x259df: 0x6d1ed020,\n\t0x259e5: 0x6c5e5020, 0x259e7: 0x6cc16620,\n\t0x259ec: 0x6ca78220,\n\t0x259f0: 0x6c9cbe20, 0x259f3: 0x6cb80a20,\n\t0x259f6: 0x6c51ae20,\n\t0x259f8: 0x6c893a20,\n\t0x259ff: 0x6d42b420,\n\t// Block 0x968, offset 0x25a00\n\t0x25a02: 0x6c8df220,\n\t0x25a05: 0x6d39f820, 0x25a07: 0x6ca78c20,\n\t0x25a0a: 0x6c612420, 0x25a0b: 0x6cc62620,\n\t0x25a0c: 0x6c6a9620, 0x25a0d: 0x6c41d020,\n\t0x25a10: 0x6d170220, 0x25a13: 0x6d38ce20,\n\t0x25a15: 0x6cf4ca20,\n\t0x25a1a: 0x6c44fe20, 0x25a1b: 0x6c243220,\n\t0x25a1d: 0x6c9ed220,\n\t0x25a21: 0x6d0a0220, 0x25a23: 0x6d33cc20,\n\t0x25a24: 0x6cff7620, 0x25a27: 0x6c3e3a20,\n\t0x25a28: 0x6c553620,\n\t0x25a2c: 0x6c2b1e20, 0x25a2e: 0x6c741820, 0x25a2f: 0x6c2e1220,\n\t0x25a39: 0x6cd44420,\n\t0x25a3c: 0x6cee0a20,\n\t// Block 0x969, offset 0x25a40\n\t0x25a43: 0x6ca33820,\n\t0x25a44: 0x6c2b2620, 0x25a45: 0x6cd37020, 0x25a46: 0x6c224020, 0x25a47: 0x6cd4d220,\n\t0x25a49: 0x6cec2c20, 0x25a4a: 0x6c181820, 0x25a4b: 0x6c389820,\n\t0x25a4d: 0x6c470820, 0x25a4e: 0x6d24e620,\n\t0x25a51: 0x6c491420,\n\t0x25a5a: 0x6cbcbc20,\n\t0x25a5c: 0x6d2de820, 0x25a5d: 0x6c276020, 0x25a5e: 0x6cceee20,\n\t0x25a66: 0x6d388820, 0x25a67: 0x6cfde420,\n\t0x25a68: 0x6ca00020, 0x25a69: 0x6d3f5020, 0x25a6a: 0x6c599620, 0x25a6b: 0x6c9c5420,\n\t0x25a6d: 0x6cf88c20, 0x25a6e: 0x6d363c20, 0x25a6f: 0x6cac2820,\n\t0x25a70: 0x6c349420,\n\t0x25a74: 0x6c22c820, 0x25a75: 0x6ca1d420, 0x25a77: 0x6c17be20,\n\t0x25a79: 0x6d17b620, 0x25a7a: 0x6c464820,\n\t// Block 0x96a, offset 0x25a80\n\t0x25a87: 0x6c6dba20,\n\t0x25a93: 0x6d2b8020,\n\t0x25a94: 0x6cb25e20, 0x25a95: 0x6d130420, 0x25a96: 0x6c6af420,\n\t0x25a98: 0x6caf7620, 0x25a9b: 0x6ccbfe20,\n\t0x25a9c: 0x6d3c4420, 0x25a9d: 0x6c6f1e20,\n\t0x25aa0: 0x6c8e6e20, 0x25aa1: 0x6d227020, 0x25aa3: 0x6c70ac20,\n\t0x25aa8: 0x6caafe20,\n\t0x25ab8: 0x6c999c20,\n\t// Block 0x96b, offset 0x25ac0\n\t0x25ac4: 0x6c187420, 0x25ac6: 0x6d3bd420, 0x25ac7: 0x6ca76a20,\n\t0x25ac8: 0x6c79aa20, 0x25ac9: 0x6c6a2e20, 0x25aca: 0x6c57b020,\n\t0x25acd: 0x6d02e220, 0x25ace: 0x6d424a20, 0x25acf: 0x6d0e9620,\n\t0x25ad0: 0x6c748220,\n\t0x25ad5: 0x6c54ea20, 0x25ad6: 0x6d393a20, 0x25ad7: 0x6ccf6a20,\n\t0x25ad9: 0x6d0dbc20, 0x25adb: 0x6d01de20,\n\t0x25adc: 0x6c2ed420, 0x25adf: 0x6c187a20,\n\t0x25af2: 0x6c65c620, 0x25af3: 0x6c624c20,\n\t0x25af6: 0x6c21ce20, 0x25af7: 0x6c537420,\n\t// Block 0x96c, offset 0x25b00\n\t0x25b00: 0x6c26bc20,\n\t0x25b04: 0x6c764020, 0x25b05: 0x6d039820, 0x25b06: 0x6c5c1c20, 0x25b07: 0x6c65d020,\n\t0x25b08: 0x6d394820, 0x25b09: 0x6d2c8c20, 0x25b0a: 0x6c403820, 0x25b0b: 0x6c1c6020,\n\t0x25b0c: 0x6c082e20, 0x25b0d: 0x6cab0a20,\n\t0x25b11: 0x6c626820, 0x25b12: 0x6cb9c020,\n\t0x25b14: 0x6ced9620, 0x25b15: 0x6cab6a20, 0x25b16: 0x6c0a3220, 0x25b17: 0x6cd79c20,\n\t0x25b20: 0x6c6dd020, 0x25b21: 0x6d132e20,\n\t// Block 0x96d, offset 0x25b40\n\t0x25b44: 0x6c3a7220, 0x25b47: 0x6c844420,\n\t0x25b4a: 0x6c868020, 0x25b4b: 0x6cb01e20,\n\t0x25b52: 0x6cdc7a20, 0x25b53: 0x6c8e9e20,\n\t0x25b54: 0x6c517220, 0x25b55: 0x6c5d1420, 0x25b56: 0x6ce07a20, 0x25b57: 0x6cd79e20,\n\t0x25b58: 0x6d36ec20, 0x25b59: 0x6c0f5c20,\n\t0x25b5d: 0x6cf8e420,\n\t0x25b61: 0x6cb33620, 0x25b62: 0x6cc45c20,\n\t0x25b64: 0x6ca2b020,\n\t0x25b7d: 0x6d1db820,\n\t// Block 0x96e, offset 0x25b80\n\t0x25b82: 0x6c279620,\n\t0x25b8a: 0x6cb72220, 0x25b8b: 0x6c2e0220,\n\t0x25b8c: 0x6ca87c20, 0x25b8d: 0x6cd6e420, 0x25b8f: 0x6cce8c20,\n\t0x25b90: 0x6c7dc420, 0x25b91: 0x6cdc9020, 0x25b93: 0x6c30ca20,\n\t0x25b94: 0x6c2ef220,\n\t0x25b9c: 0x6c45ba20,\n\t0x25baf: 0x6d3bb020,\n\t0x25bb0: 0x6c4c8c20,\n\t0x25bbc: 0x6d05fa20, 0x25bbd: 0x6cc1e820,\n\t// Block 0x96f, offset 0x25bc0\n\t0x25bc0: 0x6d0a4c20, 0x25bc3: 0x6c689a20,\n\t0x25bc4: 0x6d30aa20, 0x25bc6: 0x6c2d9220, 0x25bc7: 0x6cca7620,\n\t0x25bc8: 0x6c080c20, 0x25bca: 0x6cdda620, 0x25bcb: 0x6cba2e20,\n\t0x25bcf: 0x6d05fc20,\n\t0x25bd1: 0x6d0a4e20,\n\t0x25bd4: 0x6ca17a20,\n\t0x25bf5: 0x6cdca820, 0x25bf6: 0x6c7ea820, 0x25bf7: 0x6d3a8a20,\n\t0x25bf8: 0x6d396420, 0x25bfa: 0x6c870820,\n\t0x25bfc: 0x6c280e20, 0x25bfd: 0x6c717820, 0x25bff: 0x6d286e20,\n\t// Block 0x970, offset 0x25c00\n\t0x25c00: 0x6c15fc20, 0x25c01: 0x6c956020,\n\t0x25c04: 0x6ccb8220, 0x25c06: 0x6c888620,\n\t0x25c08: 0x6d414e20, 0x25c0b: 0x6c7f7020,\n\t0x25c0c: 0x6cd6ec20, 0x25c0d: 0x6cbcfe20,\n\t0x25c18: 0x6c30ce20,\n\t0x25c1e: 0x6cf54a20, 0x25c1f: 0x6c9b9020,\n\t0x25c21: 0x6c62ce20,\n\t0x25c24: 0x6c1aee20, 0x25c26: 0x6ca65c20,\n\t0x25c38: 0x6d116e20, 0x25c3b: 0x6c7ec020,\n\t0x25c3e: 0x6c942020,\n\t// Block 0x971, offset 0x25c40\n\t0x25c40: 0x6cdcbe20, 0x25c41: 0x6c3dbe20,\n\t0x25c44: 0x6c830420, 0x25c45: 0x6cf05820,\n\t0x25c4e: 0x6c237820,\n\t0x25c54: 0x6c877020, 0x25c56: 0x6cb22820,\n\t0x25c58: 0x6c759020, 0x25c59: 0x6c71e420, 0x25c5b: 0x6c7ecc20,\n\t0x25c67: 0x6c62f220,\n\t0x25c6a: 0x6c9f1a20,\n\t0x25c6c: 0x6d125020, 0x25c6d: 0x6c0b2620,\n\t0x25c71: 0x6c23d420, 0x25c72: 0x6cd85e20,\n\t0x25c75: 0x6cd86020,\n\t0x25c78: 0x6c51b020,\n\t// Block 0x972, offset 0x25c80\n\t0x25c83: 0x6ca48820,\n\t0x25c85: 0x6c2f2620,\n\t0x25c88: 0x6c180220, 0x25c89: 0x6d282220, 0x25c8b: 0x6d052220,\n\t0x25c8c: 0x6cd4c220, 0x25c8e: 0x6c15b020, 0x25c8f: 0x6c9f4c20,\n\t0x25c90: 0x6c87fe20, 0x25c91: 0x6d19e620, 0x25c92: 0x6d037620, 0x25c93: 0x6cee9020,\n\t0x25c94: 0x6c479020, 0x25c95: 0x6ce7f020, 0x25c96: 0x6cddf620, 0x25c97: 0x6c3a5e20,\n\t0x25c98: 0x6c265420, 0x25c99: 0x6ca84620, 0x25c9a: 0x6c244820, 0x25c9b: 0x6d426e20,\n\t0x25c9c: 0x6c6b2020, 0x25c9d: 0x6d08b020, 0x25c9e: 0x6c0f5e20, 0x25c9f: 0x6c6c5e20,\n\t0x25ca0: 0x6d1b1220, 0x25ca1: 0x6d05f020, 0x25ca3: 0x6d20e420,\n\t0x25ca4: 0x6d048c20, 0x25ca6: 0x6cb76c20, 0x25ca7: 0x6c069620,\n\t0x25ca8: 0x6d03dc20, 0x25ca9: 0x6c45ec20,\n\t0x25cac: 0x6d418c20,\n\t0x25cb0: 0x6c6a1a20, 0x25cb2: 0x6c763020,\n\t0x25cb5: 0x6d03f020, 0x25cb6: 0x6c06b220, 0x25cb7: 0x6cd4ee20,\n\t0x25cb8: 0x6d23a020, 0x25cba: 0x6d38ee20, 0x25cbb: 0x6d2e0420,\n\t// Block 0x973, offset 0x25cc0\n\t0x25cc2: 0x6d37c620,\n\t0x25cc6: 0x6c140620,\n\t0x25cc8: 0x6c20e020, 0x25cc9: 0x6c8f4220,\n\t0x25cce: 0x6cdbdc20,\n\t0x25cd0: 0x6d3a8620,\n\t0x25cd9: 0x6c0bd220,\n\t0x25cdd: 0x6d035420, 0x25cdf: 0x6d0bce20,\n\t0x25ce2: 0x6c8daa20,\n\t0x25ce7: 0x6d0bd220,\n\t0x25cec: 0x6ce63020,\n\t0x25cf9: 0x6c2b5a20,\n\t// Block 0x974, offset 0x25d00\n\t0x25d01: 0x6cafca20, 0x25d02: 0x6c567620, 0x25d03: 0x6c132a20,\n\t0x25d0a: 0x6ce45e20, 0x25d0b: 0x6ca20220,\n\t0x25d0c: 0x6c731620, 0x25d0e: 0x6ca20420,\n\t0x25d10: 0x6c723020, 0x25d11: 0x6c8f0020, 0x25d13: 0x6c8e0c20,\n\t0x25d17: 0x6c8f0220,\n\t0x25d18: 0x6c568820,\n\t0x25d26: 0x6c3e3e20, 0x25d27: 0x6c553820,\n\t0x25d2a: 0x6c361820, 0x25d2b: 0x6c458420,\n\t0x25d2c: 0x6c470a20,\n\t0x25d31: 0x6c48b420,\n\t0x25d39: 0x6c94a420, 0x25d3b: 0x6c389a20,\n\t0x25d3c: 0x6c93e220, 0x25d3d: 0x6c9b1820, 0x25d3e: 0x6c3e8a20, 0x25d3f: 0x6c8e5e20,\n\t// Block 0x975, offset 0x25d40\n\t0x25d45: 0x6d00c220, 0x25d46: 0x6c471e20,\n\t0x25d48: 0x6cfcda20, 0x25d49: 0x6c0f1a20, 0x25d4b: 0x6c622220,\n\t0x25d53: 0x6cc2a220,\n\t0x25d54: 0x6c927220,\n\t0x25d5e: 0x6cd79420,\n\t0x25d61: 0x6ca20820, 0x25d62: 0x6d23a420, 0x25d63: 0x6c4eea20,\n\t0x25d69: 0x6d26d020, 0x25d6a: 0x6c289e20,\n\t0x25d6f: 0x6d218620,\n\t0x25d70: 0x6c64de20, 0x25d73: 0x6c429020,\n\t0x25d7f: 0x6c129420,\n\t// Block 0x976, offset 0x25d80\n\t0x25d80: 0x6cd0c820, 0x25d81: 0x6c8f1c20,\n\t0x25d86: 0x6c687e20,\n\t0x25d89: 0x6cdb2020, 0x25d8a: 0x6cdb2220, 0x25d8b: 0x6d383e20,\n\t0x25d92: 0x6c8aaa20,\n\t0x25d94: 0x6d085c20, 0x25d95: 0x6c92ee20, 0x25d97: 0x6c629e20,\n\t0x25d9a: 0x6d0cdc20,\n\t0x25d9f: 0x6c930820,\n\t0x25da1: 0x6c9fd220, 0x25da2: 0x6ce39620,\n\t0x25da6: 0x6c595c20,\n\t0x25da9: 0x6d18ec20, 0x25daa: 0x6ce08220,\n\t0x25dac: 0x6cf48820,\n\t0x25db0: 0x6c5f8020,\n\t0x25db7: 0x6c31e620,\n\t0x25db8: 0x6c7d9420, 0x25dba: 0x6c758e20,\n\t0x25dbf: 0x6cd21a20,\n\t// Block 0x977, offset 0x25dc0\n\t0x25dc0: 0x6ca44e20, 0x25dc1: 0x6cb3bc20,\n\t0x25dc4: 0x6cd52020, 0x25dc5: 0x6cc37e20,\n\t0x25dcc: 0x6cc5bc20, 0x25dcf: 0x6c3b6220,\n\t0x25dd2: 0x6cde3a20, 0x25dd3: 0x6cea4820,\n\t0x25dd5: 0x6d0f9c20,\n\t0x25de6: 0x6c342c20, 0x25de7: 0x6c21fc20,\n\t0x25de9: 0x6c478020, 0x25dea: 0x6c3b6e20,\n\t0x25ded: 0x6cc74620,\n\t0x25df1: 0x6c42c020, 0x25df2: 0x6cfdbe20,\n\t0x25df4: 0x6cfdc020, 0x25df5: 0x6c545420, 0x25df7: 0x6ce1c420,\n\t0x25df8: 0x6ccd8420, 0x25df9: 0x6d0fba20, 0x25dfa: 0x6d3f5220,\n\t0x25dfc: 0x6d256a20,\n\t// Block 0x978, offset 0x25e00\n\t0x25e04: 0x6cda7420, 0x25e07: 0x6c203820,\n\t0x25e08: 0x6cfdc820, 0x25e0a: 0x6c048a20,\n\t0x25e0c: 0x6c97c020, 0x25e0e: 0x6c3f6e20, 0x25e0f: 0x6c7e6420,\n\t0x25e10: 0x6c851e20, 0x25e12: 0x6c6af620, 0x25e13: 0x6d1ea820,\n\t0x25e18: 0x6d23a620, 0x25e1a: 0x6c1c4820,\n\t0x25e1c: 0x6c203a20, 0x25e1d: 0x6d182e20, 0x25e1e: 0x6ccd0020,\n\t0x25e22: 0x6c609220, 0x25e23: 0x6d0c2820,\n\t0x25e26: 0x6cf51820, 0x25e27: 0x6c215c20,\n\t0x25e28: 0x6c987420,\n\t0x25e2d: 0x6c3ede20, 0x25e2e: 0x6c637c20, 0x25e2f: 0x6c46d620,\n\t0x25e30: 0x6c474420, 0x25e31: 0x6c63e420,\n\t0x25e35: 0x6cfb9820, 0x25e37: 0x6c6d6020,\n\t0x25e38: 0x6d3f6420, 0x25e39: 0x6c90bc20,\n\t0x25e3c: 0x6c46da20,\n\t// Block 0x979, offset 0x25e40\n\t0x25e40: 0x6cc57c20, 0x25e42: 0x6ccd1420,\n\t0x25e45: 0x6c74da20, 0x25e46: 0x6ce79c20, 0x25e47: 0x6d1ffc20,\n\t0x25e54: 0x6c651a20, 0x25e55: 0x6c31dc20, 0x25e57: 0x6c55f020,\n\t0x25e5b: 0x6ccace20,\n\t0x25e5c: 0x6d246220,\n\t0x25e62: 0x6c974e20,\n\t0x25e64: 0x6d342620, 0x25e65: 0x6d0c4420, 0x25e66: 0x6c42f020,\n\t0x25e68: 0x6c582020,\n\t0x25e6e: 0x6cc34420,\n\t0x25e71: 0x6d103e20, 0x25e73: 0x6d418820,\n\t0x25e77: 0x6cfe8e20,\n\t0x25e78: 0x6d170620, 0x25e79: 0x6d0d5a20, 0x25e7a: 0x6c531e20, 0x25e7b: 0x6d20e620,\n\t0x25e7f: 0x6c1c0020,\n\t// Block 0x97a, offset 0x25e80\n\t0x25e81: 0x6c1b1020,\n\t0x25e84: 0x6c4f6a20, 0x25e85: 0x6ccb1e20, 0x25e86: 0x6cabbe20, 0x25e87: 0x6cde4020,\n\t0x25e88: 0x6c3b2620, 0x25e89: 0x6c1aa020,\n\t0x25e8c: 0x6c533220, 0x25e8d: 0x6d095220,\n\t0x25e96: 0x6d351e20,\n\t0x25e9b: 0x6cc19020,\n\t0x25ea0: 0x6cf5fe20, 0x25ea1: 0x6c3e6220, 0x25ea3: 0x6cd4e020,\n\t0x25ea4: 0x6c4d6a20, 0x25ea6: 0x6cb38c20,\n\t0x25ea8: 0x6c229a20,\n\t0x25eb0: 0x6c149a20, 0x25eb3: 0x6c52ae20,\n\t0x25eb8: 0x6cad7a20, 0x25eb9: 0x6ccff820, 0x25eba: 0x6cfede20,\n\t0x25ebd: 0x6d07ac20, 0x25ebe: 0x6c229e20, 0x25ebf: 0x6ce68420,\n\t// Block 0x97b, offset 0x25ec0\n\t0x25ec0: 0x6cb39620,\n\t0x25ec7: 0x6cde7e20,\n\t0x25ec8: 0x6c13a820, 0x25ecb: 0x6d40ce20,\n\t0x25ecc: 0x6c5de820, 0x25ecd: 0x6d071820, 0x25ece: 0x6d0e9820, 0x25ecf: 0x6c149e20,\n\t0x25ed1: 0x6ceb3420,\n\t0x25ed8: 0x6cfb8420, 0x25ed9: 0x6d07c620, 0x25eda: 0x6c542a20, 0x25edb: 0x6c58de20,\n\t0x25edc: 0x6c442620, 0x25edd: 0x6c1d3c20, 0x25ede: 0x6c0a3620, 0x25edf: 0x6c52bc20,\n\t0x25ee0: 0x6c52be20, 0x25ee1: 0x6c1b4a20, 0x25ee3: 0x6c140820,\n\t0x25eef: 0x6d2c8e20,\n\t0x25ef1: 0x6d2d1e20, 0x25ef2: 0x6cdea220,\n\t0x25ef5: 0x6cb3a220, 0x25ef6: 0x6cdea420,\n\t0x25ef8: 0x6d1f6e20, 0x25ef9: 0x6c3ef420, 0x25efa: 0x6c220e20, 0x25efb: 0x6c26be20,\n\t0x25efc: 0x6cde1a20, 0x25efe: 0x6c8ea020,\n\t// Block 0x97c, offset 0x25f00\n\t0x25f01: 0x6c221020, 0x25f03: 0x6c52d420,\n\t0x25f05: 0x6c4f1a20, 0x25f06: 0x6c7e5020,\n\t0x25f08: 0x6cd20420,\n\t0x25f0d: 0x6ce79e20, 0x25f0e: 0x6c5c7020, 0x25f0f: 0x6c518620,\n\t0x25f10: 0x6cb1d820, 0x25f11: 0x6d243a20,\n\t0x25f1c: 0x6cfaf020, 0x25f1d: 0x6c4e6c20, 0x25f1f: 0x6cb3ac20,\n\t0x25f26: 0x6c7ec220, 0x25f27: 0x6c5e5220,\n\t0x25f30: 0x6cdf8420,\n\t0x25f34: 0x6c819e20, 0x25f36: 0x6cd5b420,\n\t0x25f3a: 0x6c2a0a20, 0x25f3b: 0x6c2d1020,\n\t// Block 0x97d, offset 0x25f40\n\t0x25f48: 0x6d04a820, 0x25f4b: 0x6cee6020,\n\t0x25f4d: 0x6c17f820, 0x25f4e: 0x6ca3ae20,\n\t0x25f50: 0x6c73d420, 0x25f53: 0x6c375220,\n\t0x25f54: 0x6c375a20, 0x25f55: 0x6caa6c20, 0x25f56: 0x6caa8820,\n\t0x25f5d: 0x6d3bae20,\n\t0x25f62: 0x6cab2220,\n\t0x25f64: 0x6c8ac220, 0x25f65: 0x6c82b420, 0x25f67: 0x6c032a20,\n\t0x25f6c: 0x6c196820, 0x25f6f: 0x6c4a6a20,\n\t0x25f70: 0x6cc2f820, 0x25f71: 0x6c448820, 0x25f73: 0x6c45ee20,\n\t0x25f74: 0x6ccee020,\n\t0x25f79: 0x6c7f2020, 0x25f7a: 0x6d32e820, 0x25f7b: 0x6d183020,\n\t0x25f7c: 0x6c4bda20, 0x25f7d: 0x6ceea620, 0x25f7e: 0x6c951e20,\n\t// Block 0x97e, offset 0x25f80\n\t0x25f82: 0x6cd28620, 0x25f83: 0x6d1be820,\n\t0x25f84: 0x6cd14620, 0x25f85: 0x6ce8ea20, 0x25f86: 0x6c0a3820,\n\t0x25f88: 0x6d2aee20, 0x25f89: 0x6d383a20, 0x25f8b: 0x6cc72620,\n\t0x25f8c: 0x6cb64e20, 0x25f8d: 0x6c405620, 0x25f8e: 0x6c131820,\n\t0x25f93: 0x6c845c20,\n\t0x25f94: 0x6c978c20, 0x25f96: 0x6c886620, 0x25f97: 0x6c0c3020,\n\t0x25f9b: 0x6c207e20,\n\t0x25f9c: 0x6d18ee20,\n\t0x25fa0: 0x6cac3620,\n\t0x25fa5: 0x6d191420, 0x25fa6: 0x6c7b4820,\n\t0x25fa9: 0x6c0c5220, 0x25fab: 0x6c1c9e20,\n\t0x25fac: 0x6cc22020, 0x25fad: 0x6ca1ae20, 0x25fae: 0x6d301620, 0x25faf: 0x6ccc3c20,\n\t0x25fb0: 0x6ccc3e20,\n\t0x25fb7: 0x6d109620,\n\t0x25fb8: 0x6c457420, 0x25fb9: 0x6ca3b620,\n\t0x25fbc: 0x6d018420, 0x25fbf: 0x6ce53220,\n\t// Block 0x97f, offset 0x25fc0\n\t0x25fc6: 0x6d127820,\n\t0x25fc9: 0x6ccbe220,\n\t0x25fcf: 0x6ccaec20,\n\t0x25fd2: 0x6c2cc620, 0x25fd3: 0x6d06c220,\n\t0x25fd9: 0x6cc19220,\n\t0x25fe0: 0x6c52b020, 0x25fe1: 0x6cd16620, 0x25fe2: 0x6ce6ec20,\n\t0x25ff0: 0x6c352e20,\n\t0x25ff5: 0x6c89ea20, 0x25ff7: 0x6c53c220,\n\t0x25ff8: 0x6c852020, 0x25ffa: 0x6cfdee20,\n\t0x25ffd: 0x6cd0b620,\n\t// Block 0x980, offset 0x26000\n\t0x26000: 0x6c3d8220,\n\t0x26008: 0x6d0dc020, 0x26009: 0x6cee3220, 0x2600a: 0x6cb51620, 0x2600b: 0x6c34a620,\n\t0x2600d: 0x6c57b220, 0x2600e: 0x6cb90c20,\n\t0x26010: 0x6d01e020,\n\t0x2601d: 0x6c22d620, 0x2601e: 0x6cd11020,\n\t0x26022: 0x6c37dc20,\n\t0x26024: 0x6d039a20, 0x26026: 0x6cea0e20, 0x26027: 0x6d0ea220,\n\t0x26029: 0x6c8b2820,\n\t0x2602c: 0x6c9c6e20,\n\t0x26038: 0x6d402c20, 0x2603a: 0x6d3e8020,\n\t0x2603c: 0x6c55ba20, 0x2603d: 0x6d1c9e20, 0x2603e: 0x6c885620, 0x2603f: 0x6c266a20,\n\t// Block 0x981, offset 0x26040\n\t0x26040: 0x6ce4c420, 0x26041: 0x6ce53e20,\n\t0x2604b: 0x6cc6b020,\n\t0x2604d: 0x6c00d020,\n\t0x26050: 0x6c00e420, 0x26051: 0x6d309e20, 0x26052: 0x6c4c4620, 0x26053: 0x6c92f020,\n\t0x26054: 0x6d2f7a20, 0x26055: 0x6c9c8220, 0x26056: 0x6c8a2a20, 0x26057: 0x6d30a020,\n\t0x2605b: 0x6cc25020,\n\t0x2605c: 0x6c236820, 0x2605f: 0x6ce65020,\n\t0x26061: 0x6ce02c20, 0x26062: 0x6d2e2820, 0x26063: 0x6c55e020,\n\t0x26065: 0x6cb1da20, 0x26067: 0x6c267020,\n\t0x26068: 0x6cc6d220,\n\t0x2606e: 0x6ca52020,\n\t0x26073: 0x6ca45a20,\n\t0x26074: 0x6c291a20, 0x26075: 0x6c695c20,\n\t0x2607b: 0x6c72b620,\n\t0x2607c: 0x6c37ac20,\n\t// Block 0x982, offset 0x26080\n\t0x2608a: 0x6c877420,\n\t0x2608c: 0x6c4c4e20, 0x2608d: 0x6cec7e20,\n\t0x26092: 0x6ca7ee20,\n\t0x26094: 0x6c6c3420,\n\t0x260a9: 0x6cb04a20, 0x260aa: 0x6c1bde20,\n\t0x260b2: 0x6cb04c20, 0x260b3: 0x6d166e20,\n\t0x260b4: 0x6c316220, 0x260b5: 0x6cec1420, 0x260b6: 0x6d099020,\n\t0x260b8: 0x6cb73c20, 0x260b9: 0x6ccd6c20,\n\t0x260bc: 0x6d056a20, 0x260bf: 0x6c509020,\n\t// Block 0x983, offset 0x260c0\n\t0x260c0: 0x6caca620, 0x260c2: 0x6cadb420,\n\t0x260c4: 0x6d045a20, 0x260c6: 0x6c1b7e20, 0x260c7: 0x6cdf9020,\n\t0x260c8: 0x6d41a620, 0x260c9: 0x6d414820, 0x260ca: 0x6cb74c20, 0x260cb: 0x6c316420,\n\t0x260d9: 0x6cd70c20,\n\t0x260dc: 0x6ca2f220, 0x260dd: 0x6cf59620,\n\t0x260e7: 0x6c179420,\n\t0x260e8: 0x6d16d020, 0x260eb: 0x6d329e20,\n\t0x260ee: 0x6c70fe20, 0x260ef: 0x6c274c20,\n\t0x260f1: 0x6cc9fc20,\n\t0x260f4: 0x6d3ac820, 0x260f5: 0x6ced7620,\n\t0x260f8: 0x6cc9fe20, 0x260f9: 0x6c04f220, 0x260fa: 0x6c643c20, 0x260fb: 0x6c972c20,\n\t// Block 0x984, offset 0x26100\n\t0x26108: 0x6ceb9c20, 0x2610a: 0x6cb76020,\n\t0x2610f: 0x6d3c0c20,\n\t0x26110: 0x6ceb0220, 0x26113: 0x6cb28c20,\n\t0x2611d: 0x6cae6220, 0x2611e: 0x6c7b9a20, 0x2611f: 0x6d14d820,\n\t0x26121: 0x6d018620, 0x26122: 0x6d264c20, 0x26123: 0x6c523020,\n\t0x26125: 0x6c53f220, 0x26126: 0x6d32a420, 0x26127: 0x6c217420,\n\t0x26128: 0x6cd35e20, 0x26129: 0x6cec1c20, 0x2612b: 0x6d009620,\n\t0x26138: 0x6c452a20,\n\t// Block 0x985, offset 0x26140\n\t0x26145: 0x6c35fe20,\n\t0x2614f: 0x6c7a7220,\n\t0x26150: 0x6ca32c20, 0x26153: 0x6c707420,\n\t0x26154: 0x6d088e20, 0x26155: 0x6cc0fe20, 0x26156: 0x6c181c20, 0x26157: 0x6c939620,\n\t0x26158: 0x6c511420, 0x26159: 0x6cd16020, 0x2615a: 0x6ca44620,\n\t0x2615c: 0x6c511620, 0x2615d: 0x6c13de20, 0x2615e: 0x6d0bfe20, 0x2615f: 0x6c450a20,\n\t0x26160: 0x6ca81e20, 0x26162: 0x6c4c6a20, 0x26163: 0x6d0c8c20,\n\t0x26164: 0x6c494e20, 0x26167: 0x6d360420,\n\t0x26168: 0x6c81f420,\n\t0x2616f: 0x6c321820,\n\t0x26170: 0x6cb78220, 0x26171: 0x6cc10020, 0x26172: 0x6c742e20,\n\t// Block 0x986, offset 0x26180\n\t0x26181: 0x6c3c4220, 0x26183: 0x6d06c420,\n\t0x26184: 0x6ce9fc20, 0x26186: 0x6c4e1820, 0x26187: 0x6c7a4220,\n\t0x2618a: 0x6ccff020, 0x2618b: 0x6d363e20,\n\t0x2618d: 0x6cad2c20, 0x2618e: 0x6d32cc20, 0x2618f: 0x6c861820,\n\t0x26190: 0x6ced2620, 0x26192: 0x6c391020, 0x26193: 0x6d033a20,\n\t0x26196: 0x6d0bb620,\n\t0x2619b: 0x6c709820,\n\t0x2619c: 0x6cd0a620,\n\t0x261ad: 0x6c989020, 0x261af: 0x6cea7e20,\n\t0x261b0: 0x6d3d6620, 0x261b1: 0x6cf62820, 0x261b2: 0x6d1b5820, 0x261b3: 0x6c6db620,\n\t0x261b4: 0x6cea5420, 0x261b7: 0x6c453220,\n\t0x261b8: 0x6c620a20,\n\t// Block 0x987, offset 0x261c0\n\t0x261cf: 0x6d3ba820,\n\t0x261d2: 0x6ce5f220,\n\t0x261d4: 0x6d33e220, 0x261d6: 0x6c604420,\n\t0x261da: 0x6d1c8220, 0x261db: 0x6cf0aa20,\n\t0x261dd: 0x6c593c20, 0x261de: 0x6ce68620, 0x261df: 0x6c150620,\n\t0x261e2: 0x6c7c8e20, 0x261e3: 0x6cb86e20,\n\t0x261e4: 0x6c04fc20, 0x261e5: 0x6c13a420, 0x261e6: 0x6ceb8420, 0x261e7: 0x6ca43020,\n\t0x261e8: 0x6c6a2420, 0x261ea: 0x6d0c1620,\n\t0x261ec: 0x6ce8ca20, 0x261ee: 0x6cf1e620,\n\t0x261f0: 0x6c232020, 0x261f3: 0x6d06fc20,\n\t0x261f4: 0x6d1b6020, 0x261f7: 0x6c084420,\n\t0x261fc: 0x6c935820,\n\t// Block 0x988, offset 0x26200\n\t0x26201: 0x6d290620, 0x26202: 0x6c265820,\n\t0x26206: 0x6ca84820, 0x26207: 0x6c71c220,\n\t0x26208: 0x6c541620,\n\t0x2620c: 0x6c453a20,\n\t0x26215: 0x6c541820, 0x26216: 0x6c76b220, 0x26217: 0x6c459620,\n\t0x26219: 0x6c5b5e20, 0x2621a: 0x6d01e220,\n\t0x2621d: 0x6cf8ba20, 0x2621e: 0x6c4e2420, 0x2621f: 0x6c9c6820,\n\t0x26221: 0x6cf25c20, 0x26222: 0x6c5d3620, 0x26223: 0x6ccabc20,\n\t0x26224: 0x6d034220, 0x26225: 0x6d307220, 0x26226: 0x6c5dea20,\n\t0x26228: 0x6c45a020, 0x2622b: 0x6cc9e420,\n\t0x2622c: 0x6c6c4a20, 0x2622d: 0x6cebec20,\n\t0x26231: 0x6c332420, 0x26232: 0x6c1aca20,\n\t0x2623d: 0x6cf67e20,\n\t// Block 0x989, offset 0x26240\n\t0x26242: 0x6c9c6a20, 0x26243: 0x6d29e020,\n\t0x26244: 0x6cca8420,\n\t0x26253: 0x6cea5e20,\n\t0x26254: 0x6d366820, 0x26255: 0x6cf1ea20,\n\t0x26258: 0x6d1a9820, 0x26259: 0x6cea8220, 0x2625b: 0x6c1cda20,\n\t0x2625c: 0x6d2af020, 0x2625e: 0x6cff0a20, 0x2625f: 0x6ca07420,\n\t0x26260: 0x6c245820, 0x26263: 0x6c0b4e20,\n\t0x26264: 0x6d04f020, 0x26267: 0x6d154c20,\n\t0x2626e: 0x6c5a6020,\n\t0x26270: 0x6d2bf820, 0x26271: 0x6cdd3620, 0x26272: 0x6c5cfe20, 0x26273: 0x6c727e20,\n\t// Block 0x98a, offset 0x26280\n\t0x26281: 0x6c245a20,\n\t0x26284: 0x6c5f4020, 0x26285: 0x6d0a4420, 0x26286: 0x6cdcfe20, 0x26287: 0x6c135e20,\n\t0x26289: 0x6d18b020,\n\t0x2628e: 0x6c0c2220,\n\t0x26292: 0x6c74c220, 0x26293: 0x6c868220,\n\t0x26296: 0x6cad9a20,\n\t0x2629b: 0x6d289c20,\n\t0x2629c: 0x6d134220, 0x2629e: 0x6c0a5a20, 0x2629f: 0x6d310020,\n\t0x262a0: 0x6d310220, 0x262a2: 0x6c702420, 0x262a3: 0x6d309020,\n\t0x262a6: 0x6cd60e20,\n\t0x262aa: 0x6cf6d620,\n\t0x262b7: 0x6d065820,\n\t0x262b8: 0x6ca3a620, 0x262b9: 0x6cfb9a20, 0x262ba: 0x6c4bec20, 0x262bb: 0x6cf0d220,\n\t0x262be: 0x6c60c420, 0x262bf: 0x6cc9a220,\n\t// Block 0x98b, offset 0x262c0\n\t0x262c2: 0x6c304220, 0x262c3: 0x6caac820,\n\t0x262c4: 0x6c327a20, 0x262c5: 0x6d32fc20, 0x262c6: 0x6c7a6420,\n\t0x262c9: 0x6ca01c20,\n\t0x262d5: 0x6c05d820, 0x262d6: 0x6c5c5020,\n\t0x262d9: 0x6d3fc620,\n\t0x262e8: 0x6cca5c20, 0x262ea: 0x6ce29420, 0x262eb: 0x6d157220,\n\t0x262ed: 0x6d241620,\n\t0x262f1: 0x6d123220, 0x262f2: 0x6ca94a20,\n\t0x262f4: 0x6c1dfa20, 0x262f5: 0x6c5d4820, 0x262f7: 0x6c337620,\n\t0x262f9: 0x6cb7f220, 0x262fa: 0x6d1d1820, 0x262fb: 0x6c0e3420,\n\t0x262fc: 0x6ca92e20, 0x262fd: 0x6c5a1a20,\n\t// Block 0x98c, offset 0x26300\n\t0x26306: 0x6d1d1a20,\n\t0x2630a: 0x6c05da20,\n\t0x2630e: 0x6c4a2820, 0x2630f: 0x6c82f620,\n\t0x26310: 0x6d421020,\n\t0x26319: 0x6c15fe20,\n\t0x26323: 0x6c660a20,\n\t0x26327: 0x6c9b9220,\n\t0x26329: 0x6d002820,\n\t0x2632f: 0x6d035620,\n\t0x26331: 0x6c849e20,\n\t0x2633a: 0x6cbc2e20,\n\t0x2633f: 0x6cf05c20,\n\t// Block 0x98d, offset 0x26340\n\t0x26340: 0x6ca37620, 0x26342: 0x6cacee20,\n\t0x26344: 0x6c829020, 0x26347: 0x6c958220,\n\t0x2634b: 0x6c946220,\n\t0x2634d: 0x6c44ea20, 0x2634f: 0x6c946420,\n\t0x26352: 0x6cc22220,\n\t0x26356: 0x6c959020,\n\t0x26358: 0x6ca46820, 0x2635b: 0x6c959220,\n\t0x2635c: 0x6d273e20,\n\t0x26362: 0x6cd71a20,\n\t0x26365: 0x6c9d3e20, 0x26366: 0x6cede820, 0x26367: 0x6c12f420,\n\t0x26368: 0x6c64a620, 0x26369: 0x6cee2020,\n\t0x2636f: 0x6c637e20,\n\t0x26374: 0x6c58c020,\n\t0x26378: 0x6c894220, 0x26379: 0x6d3f2c20, 0x2637a: 0x6c040a20, 0x2637b: 0x6cd43c20,\n\t0x2637e: 0x6cecf220,\n\t// Block 0x98e, offset 0x26380\n\t0x26382: 0x6cd4c420,\n\t0x26387: 0x6c4a4e20,\n\t0x26388: 0x6cf5cc20, 0x2638a: 0x6cc79c20, 0x2638b: 0x6d11fe20,\n\t0x2638e: 0x6c42c220,\n\t0x26395: 0x6d26d220,\n\t0x26398: 0x6d1da820, 0x26399: 0x6cec3c20, 0x2639a: 0x6c0f4620,\n\t0x2639f: 0x6d034e20,\n\t0x263a2: 0x6cb0c620, 0x263a3: 0x6c0f7820,\n\t0x263a6: 0x6c4d7e20, 0x263a7: 0x6d2d5220,\n\t0x263a8: 0x6cf33020, 0x263aa: 0x6d138420, 0x263ab: 0x6c0ab820,\n\t0x263ac: 0x6c4d8620,\n\t0x263b8: 0x6c1c0220, 0x263bb: 0x6d360620,\n\t0x263bd: 0x6ca5dc20,\n\t// Block 0x98f, offset 0x263c0\n\t0x263c1: 0x6cf3d420, 0x263c2: 0x6c006e20,\n\t0x263c8: 0x6c006a20, 0x263c9: 0x6d229220, 0x263ca: 0x6c1c7020,\n\t0x263cd: 0x6c6eac20, 0x263ce: 0x6d371020, 0x263cf: 0x6d372c20,\n\t0x263d0: 0x6d372e20, 0x263d1: 0x6c70ee20,\n\t0x263d6: 0x6c4dd820,\n\t0x263da: 0x6cb24c20,\n\t0x263dd: 0x6d11a620,\n\t0x263e3: 0x6d1f1e20,\n\t0x263e4: 0x6cb25420, 0x263e6: 0x6ca11020,\n\t0x263ec: 0x6d429e20, 0x263ed: 0x6cb38e20, 0x263ef: 0x6d091220,\n\t0x263f0: 0x6c7bc420, 0x263f1: 0x6d17bc20, 0x263f2: 0x6cb39020,\n\t0x263fb: 0x6d3c9c20,\n\t// Block 0x990, offset 0x26400\n\t0x26403: 0x6ca5fa20,\n\t0x26404: 0x6cc0b020, 0x26405: 0x6c23f820,\n\t0x2640c: 0x6d11cc20,\n\t0x26411: 0x6c3b9820,\n\t0x26415: 0x6cf9f420, 0x26417: 0x6c677c20,\n\t0x26418: 0x6c13b220, 0x2641b: 0x6d000e20,\n\t0x2641c: 0x6c13b420,\n\t0x26422: 0x6c1a5020, 0x26423: 0x6c257e20,\n\t0x26427: 0x6cbf7c20,\n\t0x26429: 0x6d245220, 0x2642b: 0x6d21d820,\n\t0x2642f: 0x6cf21620,\n\t0x26431: 0x6c13c020, 0x26432: 0x6d22ae20,\n\t0x26439: 0x6d425420, 0x2643a: 0x6c29fc20,\n\t0x2643d: 0x6c73a820, 0x2643e: 0x6c29fe20, 0x2643f: 0x6d1c4c20,\n\t// Block 0x991, offset 0x26440\n\t0x26441: 0x6c3cd420,\n\t0x26445: 0x6cf27a20,\n\t0x26448: 0x6c6cf620, 0x26449: 0x6cb76e20, 0x2644b: 0x6cbe0e20,\n\t0x2644d: 0x6c7dee20, 0x2644f: 0x6cdf9e20,\n\t0x26450: 0x6cfa9420, 0x26452: 0x6ce46420,\n\t0x26454: 0x6c7df620, 0x26456: 0x6ce53a20,\n\t0x26458: 0x6c556420, 0x26459: 0x6d39aa20, 0x2645a: 0x6d2d7620, 0x2645b: 0x6cde5820,\n\t0x2645d: 0x6ce46e20, 0x2645e: 0x6cde6820, 0x2645f: 0x6cde8020,\n\t0x26460: 0x6c574820, 0x26461: 0x6d0dc220, 0x26462: 0x6ce61620,\n\t0x26464: 0x6ce61820, 0x26465: 0x6cde8220,\n\t0x2646c: 0x6c581020, 0x2646e: 0x6c63e620, 0x2646f: 0x6cb7e020,\n\t0x26471: 0x6cdeae20,\n\t0x26474: 0x6cdfc220, 0x26475: 0x6c57ce20,\n\t0x26478: 0x6d3bf620, 0x26479: 0x6c572220,\n\t0x2647c: 0x6c800c20,\n\t// Block 0x992, offset 0x26480\n\t0x26486: 0x6d420420, 0x26487: 0x6d169820,\n\t0x26488: 0x6c3dfe20, 0x26489: 0x6cf4bc20, 0x2648b: 0x6c3e0020,\n\t0x2648d: 0x6c2f5620, 0x2648e: 0x6cde3c20,\n\t0x26496: 0x6c17b820,\n\t0x26499: 0x6cc64220, 0x2649a: 0x6cc35620,\n\t0x2649c: 0x6c438420,\n\t0x264a1: 0x6c3e6620, 0x264a2: 0x6c2c4c20, 0x264a3: 0x6c2dc620,\n\t0x264a4: 0x6d1e3020, 0x264a6: 0x6c643e20,\n\t0x264a9: 0x6c8f8e20,\n\t0x264ac: 0x6d1e3220, 0x264ad: 0x6cafe020, 0x264af: 0x6c5d7820,\n\t0x264b0: 0x6cbf3020, 0x264b2: 0x6c38a020, 0x264b3: 0x6cf3d620,\n\t0x264b4: 0x6ce74e20, 0x264b5: 0x6c4f7e20,\n\t0x264b8: 0x6cdfac20,\n\t0x264be: 0x6c525020,\n\t// Block 0x993, offset 0x264c0\n\t0x264c4: 0x6ce56220,\n\t0x264c8: 0x6d388e20, 0x264cb: 0x6c045420,\n\t0x264cc: 0x6d01e420, 0x264cd: 0x6c29c620, 0x264cf: 0x6c6c4c20,\n\t0x264d5: 0x6c54ec20, 0x264d6: 0x6c06b620,\n\t0x264d8: 0x6c2fb220,\n\t0x264dc: 0x6caac420, 0x264dd: 0x6cf0c620, 0x264de: 0x6d218c20,\n\t0x264e0: 0x6d039c20, 0x264e1: 0x6c3ee020, 0x264e2: 0x6cfd0020, 0x264e3: 0x6cb7c420,\n\t0x264e4: 0x6ce87820, 0x264e7: 0x6c609420,\n\t0x264e9: 0x6d1d4620, 0x264eb: 0x6c2ae420,\n\t0x264ec: 0x6ceeb020, 0x264ed: 0x6cf6ae20, 0x264ef: 0x6cac0220,\n\t0x264f1: 0x6cd12020, 0x264f2: 0x6d1fec20,\n\t0x264f4: 0x6c005220, 0x264f5: 0x6c66d220, 0x264f7: 0x6c466020,\n\t0x264f8: 0x6cc93020,\n\t0x264fc: 0x6c462220, 0x264ff: 0x6ccc6e20,\n\t// Block 0x994, offset 0x26500\n\t0x26500: 0x6ce13a20,\n\t0x26507: 0x6c92f220,\n\t0x26508: 0x6c027820, 0x2650a: 0x6cb7ee20, 0x2650b: 0x6d04fc20,\n\t0x2650d: 0x6c271020,\n\t0x26511: 0x6c382a20, 0x26512: 0x6cf0f420,\n\t0x26514: 0x6c341020, 0x26515: 0x6c8a3a20, 0x26516: 0x6c386620, 0x26517: 0x6c5a1c20,\n\t0x26518: 0x6c74dc20, 0x26519: 0x6cdec020, 0x2651a: 0x6d422020, 0x2651b: 0x6cc53020,\n\t0x2651c: 0x6c117a20, 0x2651d: 0x6ce2c020,\n\t0x26520: 0x6c57d020, 0x26521: 0x6d05fe20, 0x26523: 0x6d2dae20,\n\t0x26527: 0x6c41f420,\n\t0x2652a: 0x6caeea20, 0x2652b: 0x6c118020,\n\t0x2652c: 0x6d005820, 0x2652d: 0x6c26d020,\n\t0x26531: 0x6c62d020,\n\t0x26536: 0x6c854820,\n\t0x26539: 0x6cac9020,\n\t0x2653d: 0x6c8ffa20, 0x2653e: 0x6c877620, 0x2653f: 0x6cf7c220,\n\t// Block 0x995, offset 0x26540\n\t0x26540: 0x6ce2d620, 0x26543: 0x6c8dac20,\n\t0x26548: 0x6c855820, 0x26549: 0x6cc4a220, 0x2654a: 0x6c8df420,\n\t0x2654e: 0x6c4bca20,\n\t0x26554: 0x6cb30a20, 0x26555: 0x6ca11220, 0x26556: 0x6cabf020,\n\t0x26559: 0x6c03b420,\n\t0x26561: 0x6cb62820,\n\t0x26564: 0x6d0cc420,\n\t0x2656a: 0x6cec3e20, 0x2656b: 0x6c020c20,\n\t0x2656d: 0x6ca04a20, 0x2656e: 0x6c9fca20, 0x2656f: 0x6d0ab220,\n\t0x26570: 0x6c9b9420, 0x26573: 0x6c48d620,\n\t0x26576: 0x6c682420,\n\t0x2657b: 0x6c410a20,\n\t// Block 0x996, offset 0x26580\n\t0x26581: 0x6c110a20, 0x26582: 0x6cf4ac20, 0x26583: 0x6d301820,\n\t0x26584: 0x6cc58820, 0x26585: 0x6c79b420,\n\t0x26594: 0x6d2f8a20, 0x26595: 0x6d37a220, 0x26596: 0x6cc00a20, 0x26597: 0x6c4c1420,\n\t0x26598: 0x6c456a20, 0x26599: 0x6cb40220, 0x2659a: 0x6c566c20, 0x2659b: 0x6c9e0820,\n\t0x2659e: 0x6ce45a20,\n\t0x265a3: 0x6cee0020,\n\t0x265b8: 0x6d3a0020, 0x265b9: 0x6c268a20, 0x265ba: 0x6d048e20, 0x265bb: 0x6ca2d420,\n\t0x265be: 0x6c72de20,\n\t// Block 0x997, offset 0x265c0\n\t0x265c1: 0x6ca71a20,\n\t0x265c8: 0x6c567820, 0x265c9: 0x6ccbd420,\n\t0x265dc: 0x6d33b820, 0x265df: 0x6cdde420,\n\t0x265e1: 0x6cd7d820,\n\t0x265e5: 0x6d170820,\n\t0x265ed: 0x6cbf1020, 0x265ee: 0x6d35c820, 0x265ef: 0x6c939220,\n\t0x265f0: 0x6cc79e20, 0x265f2: 0x6cb5ac20, 0x265f3: 0x6d224020,\n\t0x265f4: 0x6d386a20, 0x265f5: 0x6d0fa620, 0x265f6: 0x6cfc0420, 0x265f7: 0x6ca1cc20,\n\t0x265f8: 0x6c1d9a20, 0x265f9: 0x6c5aa820, 0x265fa: 0x6c6f6420, 0x265fb: 0x6c6fec20,\n\t0x265fc: 0x6cb19220,\n\t// Block 0x998, offset 0x26600\n\t0x26601: 0x6c699220, 0x26603: 0x6c48c620,\n\t0x26605: 0x6ca0fe20,\n\t0x26610: 0x6cf5ce20, 0x26611: 0x6cb43220,\n\t0x2662f: 0x6c61d420,\n\t0x26636: 0x6cf1da20, 0x26637: 0x6c071620,\n\t0x26638: 0x6d15ea20, 0x26639: 0x6c3e6a20, 0x2663a: 0x6cd7e420, 0x2663b: 0x6c72f020,\n\t0x2663c: 0x6c61f620, 0x2663e: 0x6ca69a20,\n\t// Block 0x999, offset 0x26640\n\t0x26640: 0x6c07b620,\n\t0x26645: 0x6d06c620,\n\t0x26648: 0x6cbdd220, 0x26649: 0x6c0ef820,\n\t0x2664c: 0x6cede620, 0x2664d: 0x6d30f620, 0x2664f: 0x6cf2e620,\n\t0x26650: 0x6ccea420, 0x26651: 0x6d2a8020, 0x26652: 0x6d101820,\n\t0x26655: 0x6cd98a20, 0x26656: 0x6ca82020,\n\t0x2665b: 0x6c098620,\n\t0x26663: 0x6c242420,\n\t0x26664: 0x6cbab220,\n\t0x2666a: 0x6cffe620, 0x2666b: 0x6d33d620,\n\t0x2666c: 0x6ccf1020, 0x2666f: 0x6d360820,\n\t0x26670: 0x6cae7020,\n\t// Block 0x99a, offset 0x26680\n\t0x2668f: 0x6c2e1e20,\n\t0x26696: 0x6cf2f820,\n\t0x26698: 0x6d352020, 0x26699: 0x6c098820, 0x2669b: 0x6c3b7020,\n\t0x266a5: 0x6c052a20,\n\t0x266aa: 0x6cc06c20, 0x266ab: 0x6ca63a20,\n\t0x266ac: 0x6c0f0620, 0x266ad: 0x6c33f220, 0x266af: 0x6cd2d020,\n\t0x266b0: 0x6d05a220, 0x266b1: 0x6c16ac20, 0x266b2: 0x6d05a420, 0x266b3: 0x6d128020,\n\t0x266b4: 0x6c9c5620,\n\t0x266b8: 0x6d02d620, 0x266b9: 0x6d3d6820, 0x266ba: 0x6c3ff620,\n\t0x266bd: 0x6cb06020, 0x266be: 0x6d095e20,\n\t// Block 0x99b, offset 0x266c0\n\t0x266c0: 0x6d235020, 0x266c1: 0x6cfb6020, 0x266c2: 0x6d235220, 0x266c3: 0x6d213420,\n\t0x266c5: 0x6c709a20, 0x266c6: 0x6cddec20, 0x266c7: 0x6c797c20,\n\t0x266ca: 0x6d32ce20, 0x266cb: 0x6c9b1a20,\n\t0x266cc: 0x6c428420,\n\t0x266d2: 0x6ca28a20, 0x266d3: 0x6cf7ea20,\n\t0x266d4: 0x6c09aa20, 0x266d6: 0x6c3ff820,\n\t0x266dc: 0x6cfff420,\n\t0x266e0: 0x6c6f7620, 0x266e3: 0x6c468820,\n\t0x266f0: 0x6c1b2820, 0x266f1: 0x6c6f7820, 0x266f2: 0x6c6f7a20,\n\t0x266f5: 0x6ccbf820, 0x266f7: 0x6c3a0820,\n\t// Block 0x99c, offset 0x26700\n\t0x2672b: 0x6c3e8c20,\n\t0x2672f: 0x6ced8a20,\n\t0x26730: 0x6d05a620, 0x26731: 0x6c0e7620,\n\t// Block 0x99d, offset 0x26740\n\t0x26741: 0x6c504820, 0x26743: 0x6d00c420,\n\t0x26744: 0x6cb11820, 0x26745: 0x6d227420, 0x26747: 0x6ce4ae20,\n\t0x26748: 0x6cb00020, 0x2674a: 0x6cd2d220, 0x2674b: 0x6c7afc20,\n\t0x2674c: 0x6c5ef020, 0x2674f: 0x6d2be420,\n\t0x26750: 0x6ca3cc20, 0x26751: 0x6ca20620, 0x26753: 0x6c3ea620,\n\t0x26754: 0x6c326820, 0x26757: 0x6cd13e20,\n\t0x26758: 0x6c13ee20, 0x2675a: 0x6c1b3820, 0x2675b: 0x6c4b0820,\n\t0x2675c: 0x6c9f6620, 0x2675d: 0x6ce0c220, 0x2675e: 0x6c044c20, 0x2675f: 0x6cbac220,\n\t0x26761: 0x6d3d7420, 0x26762: 0x6cf0ac20, 0x26763: 0x6d0a1e20,\n\t0x26765: 0x6c9e9620, 0x26766: 0x6d290820, 0x26767: 0x6d1f4a20,\n\t0x26769: 0x6d204c20, 0x2676b: 0x6cccee20,\n\t0x2676c: 0x6c514220, 0x2676d: 0x6c93a220, 0x2676e: 0x6d347820,\n\t0x26772: 0x6c6e9020, 0x26773: 0x6d317020,\n\t0x26776: 0x6c9b2620, 0x26777: 0x6d1f4c20,\n\t0x26779: 0x6cf30020, 0x2677a: 0x6c038620,\n\t0x2677d: 0x6c737820, 0x2677e: 0x6cc7b220, 0x2677f: 0x6c23f220,\n\t// Block 0x99e, offset 0x26780\n\t0x26780: 0x6d33fc20,\n\t0x26789: 0x6c557620, 0x2678a: 0x6d0f5c20,\n\t0x2678c: 0x6c75d020, 0x2678d: 0x6ccf1c20, 0x2678e: 0x6c79f220,\n\t0x26791: 0x6cb9a820,\n\t0x26794: 0x6c9b2820,\n\t0x2679a: 0x6ce58c20,\n\t// Block 0x99f, offset 0x267c0\n\t0x267d0: 0x6ca84a20,\n\t0x267df: 0x6c1b3a20,\n\t0x267e1: 0x6d047220, 0x267e3: 0x6c5d3820,\n\t0x267e6: 0x6c2b8020, 0x267e7: 0x6c80d620,\n\t0x267e9: 0x6d2a1a20, 0x267ea: 0x6c130a20, 0x267eb: 0x6cdd8420,\n\t0x267ec: 0x6d412c20, 0x267ed: 0x6cdbd020, 0x267ef: 0x6cf9e020,\n\t0x267f1: 0x6d01e620,\n\t0x267f4: 0x6c6b1220, 0x267f5: 0x6d1f5820, 0x267f7: 0x6c46ca20,\n\t0x267f8: 0x6c451620,\n\t0x267fc: 0x6c75d820, 0x267fd: 0x6c5a5e20, 0x267fe: 0x6c607420, 0x267ff: 0x6cb3ca20,\n\t// Block 0x9a0, offset 0x26800\n\t0x26800: 0x6cf37820, 0x26802: 0x6d183420,\n\t0x26805: 0x6ca3a420, 0x26807: 0x6cc71820,\n\t0x26808: 0x6ca40820, 0x2680a: 0x6cb2c020, 0x2680b: 0x6ccd9420,\n\t0x2680c: 0x6c2dd820, 0x2680d: 0x6c607620, 0x2680e: 0x6c571420, 0x2680f: 0x6c335620,\n\t0x26810: 0x6c79a020, 0x26811: 0x6cde8620, 0x26813: 0x6c53c620,\n\t0x26815: 0x6cd4f820,\n\t0x26819: 0x6c526a20, 0x2681a: 0x6c3bc020,\n\t0x26832: 0x6c79fa20,\n\t// Block 0x9a1, offset 0x26840\n\t0x26859: 0x6ca70220,\n\t0x2685d: 0x6c1e9e20,\n\t0x26866: 0x6cbb5a20,\n\t0x26872: 0x6cf8bc20, 0x26873: 0x6c558020,\n\t0x26874: 0x6cd99620, 0x26875: 0x6cf30a20, 0x26877: 0x6c4d7620,\n\t0x26878: 0x6cc7b820, 0x26879: 0x6c9b3020, 0x2687b: 0x6cca2420,\n\t0x2687d: 0x6cf3de20, 0x2687f: 0x6d1f6420,\n\t// Block 0x9a2, offset 0x26880\n\t0x26881: 0x6cdfba20, 0x26882: 0x6cd01220,\n\t0x26886: 0x6cb71220,\n\t0x26888: 0x6c4c8420, 0x26889: 0x6cb87420, 0x2688a: 0x6cfad020,\n\t0x2688f: 0x6cdbd620,\n\t0x26890: 0x6c92b020, 0x26893: 0x6cb52620,\n\t0x26894: 0x6c2ddc20, 0x26897: 0x6cb64020,\n\t0x26898: 0x6c63dc20, 0x26899: 0x6d1f6620, 0x2689a: 0x6cf79e20, 0x2689b: 0x6c177a20,\n\t0x268a1: 0x6c9d7e20, 0x268a2: 0x6c911820, 0x268a3: 0x6c08f220,\n\t0x268aa: 0x6cadec20,\n\t0x268ae: 0x6d318e20, 0x268af: 0x6cd01420,\n\t0x268b0: 0x6c15da20, 0x268b1: 0x6c403a20,\n\t0x268b6: 0x6cc13820, 0x268b7: 0x6cd82220,\n\t0x268ba: 0x6d417a20,\n\t// Block 0x9a3, offset 0x268c0\n\t0x268eb: 0x6d2fd620,\n\t0x268fd: 0x6cb01220,\n\t// Block 0x9a4, offset 0x26900\n\t0x26900: 0x6c23fa20,\n\t0x26906: 0x6c42e220, 0x26907: 0x6c31b620,\n\t0x26909: 0x6c3da420, 0x2690a: 0x6c492620, 0x2690b: 0x6ccae620,\n\t0x2690c: 0x6cda2a20, 0x2690d: 0x6c65da20, 0x2690e: 0x6cb3e020,\n\t0x26910: 0x6c11ac20, 0x26911: 0x6c085020, 0x26912: 0x6ca20c20, 0x26913: 0x6d2f7420,\n\t0x26914: 0x6cff9a20, 0x26916: 0x6c715c20, 0x26917: 0x6cd50620,\n\t0x26918: 0x6c65dc20, 0x26919: 0x6c844e20, 0x2691b: 0x6c203e20,\n\t0x2691c: 0x6c81e220, 0x2691e: 0x6c51ea20, 0x2691f: 0x6c55bc20,\n\t0x26920: 0x6c473220, 0x26921: 0x6d2f0c20, 0x26922: 0x6c6b3620, 0x26923: 0x6cfe5620,\n\t0x26925: 0x6c317820, 0x26926: 0x6c4e3220, 0x26927: 0x6c63e820,\n\t0x26928: 0x6cfe5820, 0x26929: 0x6c60ae20, 0x2692a: 0x6cd56c20, 0x2692b: 0x6c812e20,\n\t0x2692c: 0x6c5f4220, 0x2692d: 0x6ccd0e20,\n\t0x26930: 0x6ce1ee20, 0x26931: 0x6d3e8e20, 0x26932: 0x6cd69620,\n\t0x26934: 0x6c60b020, 0x26935: 0x6c1f7820, 0x26936: 0x6c628020, 0x26937: 0x6cd01c20,\n\t0x26938: 0x6c8c6820, 0x26939: 0x6c8a2020, 0x2693b: 0x6cca2a20,\n\t0x2693d: 0x6c019220, 0x2693e: 0x6cc87c20,\n\t// Block 0x9a5, offset 0x26940\n\t0x26940: 0x6ce37820, 0x26941: 0x6c28b820, 0x26943: 0x6c589c20,\n\t0x26945: 0x6cc99420,\n\t// Block 0x9a6, offset 0x26980\n\t0x26986: 0x6cc8a420, 0x26987: 0x6cf38020,\n\t0x26988: 0x6c729620, 0x26989: 0x6c589e20, 0x2698a: 0x6c838620, 0x2698b: 0x6c92dc20,\n\t0x2698e: 0x6cdfbe20, 0x2698f: 0x6d2b9620,\n\t0x26993: 0x6cb9ca20,\n\t0x26997: 0x6cf6d820,\n\t0x269a1: 0x6c22a220, 0x269a2: 0x6ccf2620,\n\t0x269a7: 0x6cc99620,\n\t0x269aa: 0x6c99bc20, 0x269ab: 0x6cc1da20,\n\t0x269ad: 0x6c0f7a20, 0x269ae: 0x6c41f020,\n\t0x269b0: 0x6cbcea20, 0x269b1: 0x6c739a20, 0x269b2: 0x6c290e20, 0x269b3: 0x6c16cc20,\n\t0x269b4: 0x6d0fde20, 0x269b5: 0x6c518020, 0x269b7: 0x6c5f5c20,\n\t0x269b9: 0x6c0df820, 0x269bb: 0x6c9a3020,\n\t0x269bf: 0x6c33b820,\n\t// Block 0x9a7, offset 0x269c0\n\t0x269c0: 0x6c02b020, 0x269c1: 0x6c6dd820, 0x269c2: 0x6c92f420, 0x269c3: 0x6c9e6620,\n\t0x269c4: 0x6c2d8a20, 0x269c5: 0x6c51f220, 0x269c7: 0x6c650420,\n\t0x269ca: 0x6c575e20, 0x269cb: 0x6c466220,\n\t0x269ce: 0x6c92f620, 0x269cf: 0x6c3f0a20,\n\t0x269d0: 0x6c5b7220, 0x269d2: 0x6d2b6620,\n\t0x269d4: 0x6c6d6220, 0x269d5: 0x6cd83420, 0x269d6: 0x6cc43e20,\n\t0x269dc: 0x6c28cc20, 0x269de: 0x6ced9e20, 0x269df: 0x6c0b5620,\n\t0x269e4: 0x6c63ee20,\n\t0x269eb: 0x6c284e20,\n\t0x269ec: 0x6c6f8a20, 0x269ed: 0x6cfb9c20, 0x269ee: 0x6c0f7c20,\n\t// Block 0x9a8, offset 0x26a00\n\t0x26a0f: 0x6cfa0020,\n\t0x26a11: 0x6c0c3220,\n\t0x26a15: 0x6cb3a820,\n\t0x26a18: 0x6ccae820, 0x26a19: 0x6c076620, 0x26a1a: 0x6ccc8020, 0x26a1b: 0x6cf02e20,\n\t0x26a1d: 0x6c123e20, 0x26a1e: 0x6c92f820,\n\t0x26a29: 0x6c28ce20, 0x26a2b: 0x6c47e820,\n\t0x26a2c: 0x6d289e20, 0x26a2d: 0x6c055820, 0x26a2e: 0x6c423820,\n\t0x26a31: 0x6c175420, 0x26a32: 0x6c62ae20, 0x26a33: 0x6c8ab620,\n\t0x26a35: 0x6cbf7e20, 0x26a36: 0x6c66f420, 0x26a37: 0x6c930a20,\n\t0x26a38: 0x6c32a620, 0x26a39: 0x6cdb8a20, 0x26a3a: 0x6d116020, 0x26a3b: 0x6d1b1620,\n\t0x26a3d: 0x6cdec220, 0x26a3e: 0x6d116220, 0x26a3f: 0x6c6de020,\n\t// Block 0x9a9, offset 0x26a40\n\t0x26a40: 0x6c1ebc20, 0x26a41: 0x6c3f1220, 0x26a42: 0x6d25c220, 0x26a43: 0x6ccebc20,\n\t0x26a45: 0x6c0e3620, 0x26a46: 0x6c299e20, 0x26a47: 0x6cd3f820,\n\t0x26a4a: 0x6c916420, 0x26a4b: 0x6cbcf220,\n\t0x26a4c: 0x6c955c20, 0x26a4d: 0x6cb3ae20, 0x26a4f: 0x6c9b7a20,\n\t0x26a50: 0x6c6b6620, 0x26a53: 0x6c5f7220,\n\t0x26a56: 0x6c930c20,\n\t// Block 0x9aa, offset 0x26a80\n\t0x26a84: 0x6c172a20, 0x26a85: 0x6c9f0020, 0x26a86: 0x6c9b7c20, 0x26a87: 0x6c660220,\n\t0x26a8a: 0x6c114020,\n\t0x26a8c: 0x6cdb5220,\n\t0x26a94: 0x6c51fe20, 0x26a95: 0x6cc9aa20, 0x26a97: 0x6d3eae20,\n\t0x26a98: 0x6c795e20, 0x26a99: 0x6c452220, 0x26a9a: 0x6cd83a20,\n\t0x26aa0: 0x6ce3a420, 0x26aa1: 0x6d2e8e20, 0x26aa2: 0x6d026420, 0x26aa3: 0x6cd70020,\n\t0x26aa4: 0x6c1bcc20, 0x26aa5: 0x6d1ec620, 0x26aa6: 0x6c91f820, 0x26aa7: 0x6c9c1a20,\n\t0x26aa8: 0x6c8b6020, 0x26aa9: 0x6cd8f620,\n\t0x26aac: 0x6cf71820, 0x26aad: 0x6c38da20, 0x26aae: 0x6c3db820, 0x26aaf: 0x6cd08820,\n\t0x26ab0: 0x6ce3a620, 0x26ab1: 0x6c14a420, 0x26ab2: 0x6d270620,\n\t0x26ab4: 0x6c3dba20, 0x26ab5: 0x6c670220, 0x26ab6: 0x6c2cb020,\n\t0x26aba: 0x6d011a20, 0x26abb: 0x6c281220,\n\t0x26abf: 0x6d34b020,\n\t// Block 0x9ab, offset 0x26ac0\n\t0x26ac3: 0x6d075620,\n\t0x26ac8: 0x6ca89820, 0x26ac9: 0x6c397420, 0x26aca: 0x6c9b8820, 0x26acb: 0x6c9fd420,\n\t0x26afe: 0x6c90d220, 0x26aff: 0x6c31e820,\n\t// Block 0x9ac, offset 0x26b00\n\t0x26b01: 0x6d2e9620, 0x26b02: 0x6c671020, 0x26b03: 0x6c4f2e20,\n\t0x26b04: 0x6c28e220, 0x26b05: 0x6ccbb220, 0x26b06: 0x6c671220, 0x26b07: 0x6ce03e20,\n\t0x26b08: 0x6c696c20, 0x26b09: 0x6cb34220, 0x26b0b: 0x6cb2e420,\n\t0x26b0d: 0x6d3bf820, 0x26b0f: 0x6c8a4c20,\n\t0x26b10: 0x6d3f6620, 0x26b12: 0x6d3dd820,\n\t0x26b14: 0x6c56de20,\n\t0x26b19: 0x6cf92020, 0x26b1b: 0x6c9b9620,\n\t0x26b1c: 0x6c72ba20, 0x26b1d: 0x6c9f0c20, 0x26b1e: 0x6cfbcc20,\n\t0x26b20: 0x6c7d3820, 0x26b21: 0x6c9b9820, 0x26b22: 0x6c653420,\n\t0x26b26: 0x6caa0a20,\n\t0x26b28: 0x6c2cb220, 0x26b29: 0x6ccad220,\n\t// Block 0x9ad, offset 0x26b40\n\t0x26b4f: 0x6c1f8c20,\n\t0x26b50: 0x6d34bc20, 0x26b51: 0x6cb9e220, 0x26b52: 0x6c93c420,\n\t0x26b54: 0x6d3ddc20,\n\t0x26b58: 0x6d42b020, 0x26b59: 0x6c4e4820, 0x26b5a: 0x6cdc1820, 0x26b5b: 0x6c46e220,\n\t0x26b5d: 0x6c1e3c20, 0x26b5e: 0x6c62da20, 0x26b5f: 0x6d194820,\n\t0x26b60: 0x6d21f020,\n\t0x26b68: 0x6caa0c20, 0x26b69: 0x6ca66420, 0x26b6a: 0x6cc93620,\n\t0x26b6e: 0x6c8c0820,\n\t0x26b71: 0x6ca93820,\n\t// Block 0x9ae, offset 0x26b80\n\t0x26b8d: 0x6cbc1620, 0x26b8e: 0x6d117c20, 0x26b8f: 0x6c409c20,\n\t0x26b90: 0x6cd6b620, 0x26b91: 0x6c7d3e20, 0x26b92: 0x6cc21220, 0x26b93: 0x6c304a20,\n\t0x26b94: 0x6cd58a20,\n\t0x26b9a: 0x6c84c020, 0x26b9b: 0x6c719220,\n\t0x26b9c: 0x6cc8bc20,\n\t0x26ba0: 0x6d2c6c20,\n\t0x26ba4: 0x6cff5420,\n\t0x26bb8: 0x6c9ae220, 0x26bb9: 0x6cd29820, 0x26bba: 0x6c2cfc20, 0x26bbb: 0x6c878e20,\n\t0x26bbc: 0x6c2b0420, 0x26bbd: 0x6d29c420, 0x26bbf: 0x6c958420,\n\t// Block 0x9af, offset 0x26bc0\n\t0x26bc0: 0x6c11c620, 0x26bc3: 0x6c023c20,\n\t0x26bc6: 0x6c663620,\n\t0x26bc8: 0x6c2e5020, 0x26bcb: 0x6d1cd820,\n\t0x26bd6: 0x6d197220, 0x26bd7: 0x6c294620,\n\t0x26bd8: 0x6caa1220, 0x26bda: 0x6d272620,\n\t0x26bee: 0x6c855620, 0x26bef: 0x6c84e220,\n\t0x26bf0: 0x6c56f620, 0x26bf2: 0x6d206420,\n\t0x26bfa: 0x6ca48420,\n\t// Block 0x9b0, offset 0x26c00\n\t0x26c02: 0x6c194a20,\n\t0x26c09: 0x6c3c9220, 0x26c0a: 0x6c0cd220,\n\t0x26c0f: 0x6c97d820,\n\t0x26c10: 0x6c424a20, 0x26c11: 0x6c5e6020, 0x26c13: 0x6c241c20,\n\t0x26c15: 0x6d200020,\n\t0x26c18: 0x6d206620,\n\t0x26c1c: 0x6d057c20,\n\t0x26c21: 0x6d06b020, 0x26c22: 0x6c561820, 0x26c23: 0x6c915020,\n\t0x26c25: 0x6cf9b820, 0x26c26: 0x6d177420,\n\t0x26c2e: 0x6c561e20, 0x26c2f: 0x6c569020,\n\t0x26c30: 0x6d3f0a20,\n\t0x26c37: 0x6c458c20,\n\t0x26c38: 0x6ce99220, 0x26c39: 0x6cf36a20, 0x26c3a: 0x6c8d2020, 0x26c3b: 0x6c472020,\n\t0x26c3c: 0x6d37be20,\n\t// Block 0x9b1, offset 0x26c40\n\t0x26c44: 0x6c915820,\n\t0x26c48: 0x6d412e20,\n\t0x26c4c: 0x6ce76a20, 0x26c4d: 0x6cf97020, 0x26c4e: 0x6c515c20,\n\t0x26c53: 0x6d26e220,\n\t0x26c59: 0x6ca40c20, 0x26c5a: 0x6c0f4820, 0x26c5b: 0x6c54fa20,\n\t0x26c5c: 0x6cb7e220, 0x26c5d: 0x6cd53a20, 0x26c5e: 0x6cbadc20, 0x26c5f: 0x6d38ae20,\n\t0x26c60: 0x6d122620, 0x26c61: 0x6c473420,\n\t0x26c65: 0x6c049e20, 0x26c66: 0x6c76ec20,\n\t0x26c6e: 0x6c517620, 0x26c6f: 0x6c628420,\n\t0x26c70: 0x6c55be20, 0x26c71: 0x6d0cde20,\n\t0x26c76: 0x6c212020, 0x26c77: 0x6c2f8620,\n\t0x26c78: 0x6cbfce20, 0x26c79: 0x6c543620,\n\t0x26c7c: 0x6c507420, 0x26c7f: 0x6d413220,\n\t// Block 0x9b2, offset 0x26c80\n\t0x26c81: 0x6cfbb820,\n\t0x26c84: 0x6cfa5220, 0x26c85: 0x6cf91820,\n\t0x26c88: 0x6ccb8420,\n\t0x26c8c: 0x6c445a20, 0x26c8d: 0x6cf92220,\n\t0x26c91: 0x6c445e20,\n\t0x26c94: 0x6c93c620, 0x26c96: 0x6c446020, 0x26c97: 0x6c78ea20,\n\t0x26c99: 0x6cd48a20, 0x26c9a: 0x6d3b5020,\n\t0x26c9c: 0x6ce2de20, 0x26c9d: 0x6d0b7820, 0x26c9e: 0x6ca67c20,\n\t0x26ca6: 0x6c95e220, 0x26ca7: 0x6cdbae20,\n\t0x26caa: 0x6c159e20,\n\t0x26cad: 0x6cf4cc20, 0x26caf: 0x6d208220,\n\t0x26cb9: 0x6d2a4420, 0x26cbb: 0x6d174420,\n\t0x26cbc: 0x6cf5d220, 0x26cbd: 0x6c533620, 0x26cbe: 0x6cc2ce20, 0x26cbf: 0x6cee0c20,\n\t// Block 0x9b3, offset 0x26cc0\n\t0x26cc0: 0x6c1b9820, 0x26cc1: 0x6cf87420, 0x26cc2: 0x6ce4e020, 0x26cc3: 0x6d27e420,\n\t0x26cc5: 0x6d13e220, 0x26cc6: 0x6c600620, 0x26cc7: 0x6c5aaa20,\n\t0x26cc8: 0x6c3d1620, 0x26cca: 0x6c3f5420,\n\t0x26ccd: 0x6c600820, 0x26cce: 0x6d080a20,\n\t0x26cd1: 0x6cdf6c20, 0x26cd3: 0x6c324e20,\n\t0x26cd7: 0x6d255620,\n\t0x26cdb: 0x6c2c3220,\n\t0x26cde: 0x6d3a6620, 0x26cdf: 0x6cdf0620,\n\t0x26ce1: 0x6cc70c20, 0x26ce2: 0x6d090a20, 0x26ce3: 0x6d232020,\n\t0x26ce4: 0x6c394e20, 0x26ce5: 0x6c06ca20, 0x26ce7: 0x6cc24420,\n\t0x26ce9: 0x6c109620, 0x26cea: 0x6c635420, 0x26ceb: 0x6d2c2c20,\n\t0x26ced: 0x6caa5a20, 0x26cee: 0x6ccf1420,\n\t0x26cf2: 0x6c860220,\n\t// Block 0x9b4, offset 0x26d00\n\t0x26d04: 0x6c4af620, 0x26d05: 0x6c48de20, 0x26d07: 0x6c276420,\n\t0x26d0f: 0x6c40fa20,\n\t0x26d12: 0x6c22cc20,\n\t0x26d14: 0x6d0d9220, 0x26d15: 0x6cd92220, 0x26d16: 0x6cd38820,\n\t0x26d18: 0x6c7a9c20, 0x26d19: 0x6d352e20, 0x26d1a: 0x6ce75020, 0x26d1b: 0x6cc19620,\n\t0x26d1c: 0x6c364220, 0x26d1e: 0x6d03ea20, 0x26d1f: 0x6cc7b020,\n\t0x26d20: 0x6d213820, 0x26d23: 0x6d17c020,\n\t0x26d24: 0x6d17c220, 0x26d25: 0x6d06e420, 0x26d26: 0x6c3d2c20, 0x26d27: 0x6c43f820,\n\t0x26d2c: 0x6c512a20, 0x26d2d: 0x6d19e820, 0x26d2f: 0x6c53be20,\n\t0x26d31: 0x6c349820,\n\t0x26d3d: 0x6d03ec20, 0x26d3e: 0x6c38a220,\n\t// Block 0x9b5, offset 0x26d40\n\t0x26d49: 0x6cb50020, 0x26d4a: 0x6ccc0220,\n\t0x26d4c: 0x6c326a20, 0x26d4d: 0x6c2c7220, 0x26d4e: 0x6c83fa20, 0x26d4f: 0x6d180620,\n\t0x26d50: 0x6cf78c20, 0x26d51: 0x6c451420, 0x26d52: 0x6ce75820, 0x26d53: 0x6c77c020,\n\t0x26d54: 0x6c53c420, 0x26d55: 0x6c7db820, 0x26d56: 0x6ca84c20, 0x26d57: 0x6c1b3c20,\n\t0x26d58: 0x6ce34e20, 0x26d5a: 0x6ce75a20,\n\t0x26d60: 0x6c83fc20, 0x26d61: 0x6ca35c20,\n\t0x26d71: 0x6d2d8220, 0x26d72: 0x6c06cc20,\n\t// Block 0x9b6, offset 0x26d80\n\t0x26d81: 0x6ce59220, 0x26d83: 0x6d289420,\n\t0x26d84: 0x6c367420, 0x26d85: 0x6cd47620, 0x26d86: 0x6c798820, 0x26d87: 0x6caeb820,\n\t0x26d88: 0x6c402020, 0x26d89: 0x6c929820, 0x26d8a: 0x6d01e820, 0x26d8b: 0x6d01ea20,\n\t0x26d8c: 0x6d04e820, 0x26d8d: 0x6c929a20, 0x26d8e: 0x6ce50a20, 0x26d8f: 0x6cde8820,\n\t0x26d90: 0x6c22da20, 0x26d91: 0x6cc12a20, 0x26d93: 0x6c402220,\n\t0x26d94: 0x6d340620, 0x26d96: 0x6d01ec20, 0x26d97: 0x6d408220,\n\t0x26d98: 0x6c3abe20, 0x26d99: 0x6c9f7420, 0x26d9a: 0x6d038c20,\n\t0x26d9d: 0x6ce76c20, 0x26d9e: 0x6cb60220,\n\t0x26da0: 0x6cb15c20, 0x26da2: 0x6cdc5620, 0x26da3: 0x6c37a020,\n\t0x26da7: 0x6c562c20,\n\t0x26dbb: 0x6cd92e20,\n\t0x26dbd: 0x6c0cb020, 0x26dbe: 0x6c2f6620, 0x26dbf: 0x6c04d220,\n\t// Block 0x9b7, offset 0x26dc0\n\t0x26dc0: 0x6cd1e220, 0x26dc1: 0x6d01ee20, 0x26dc2: 0x6cff9420, 0x26dc3: 0x6c3a6620,\n\t0x26dd2: 0x6c202620, 0x26dd3: 0x6cd67020,\n\t0x26dd4: 0x6d10b220, 0x26dd5: 0x6c74a220, 0x26dd6: 0x6cd14820,\n\t0x26dd8: 0x6d1eb220, 0x26dd9: 0x6c396c20,\n\t0x26ddc: 0x6c7c9a20, 0x26ddd: 0x6c2c9820, 0x26ddf: 0x6c990220,\n\t0x26de0: 0x6c6b2420, 0x26de2: 0x6d0cc820,\n\t0x26de5: 0x6ceeb420,\n\t0x26de8: 0x6cca7220, 0x26de9: 0x6c6b2620, 0x26dea: 0x6d219220, 0x26deb: 0x6cf0c820,\n\t0x26dec: 0x6c369220, 0x26ded: 0x6cc31220, 0x26dee: 0x6c6f2e20, 0x26def: 0x6c3cba20,\n\t0x26df0: 0x6c8fa620, 0x26df1: 0x6c2ee220, 0x26df2: 0x6cb12420,\n\t0x26df4: 0x6c891420, 0x26df5: 0x6c559820, 0x26df6: 0x6c93fa20,\n\t0x26dff: 0x6c2d7a20,\n\t// Block 0x9b8, offset 0x26e00\n\t0x26e03: 0x6c255e20,\n\t0x26e04: 0x6ca1e420,\n\t0x26e15: 0x6cedea20, 0x26e16: 0x6c72fe20, 0x26e17: 0x6c782e20,\n\t0x26e18: 0x6d0cca20, 0x26e19: 0x6c693420,\n\t0x26e21: 0x6c45b020, 0x26e23: 0x6cc6b620,\n\t0x26e24: 0x6cdce220, 0x26e25: 0x6ccdb620,\n\t0x26e28: 0x6c1b5420, 0x26e2a: 0x6cb65220, 0x26e2b: 0x6cdd9820,\n\t0x26e2d: 0x6d134420, 0x26e2e: 0x6d2a5420, 0x26e2f: 0x6cc39620,\n\t0x26e30: 0x6d2e1820, 0x26e31: 0x6c035a20, 0x26e32: 0x6d40d620, 0x26e33: 0x6cdd9a20,\n\t0x26e34: 0x6d309220, 0x26e35: 0x6cf8e820, 0x26e37: 0x6c1eec20,\n\t0x26e38: 0x6c694820, 0x26e39: 0x6d41d220, 0x26e3a: 0x6c43aa20, 0x26e3b: 0x6cf52420,\n\t0x26e3e: 0x6c94c020, 0x26e3f: 0x6c60b420,\n\t// Block 0x9b9, offset 0x26e40\n\t0x26e42: 0x6d00ec20, 0x26e43: 0x6d00ee20,\n\t0x26e46: 0x6c30f620,\n\t0x26e4b: 0x6cbfc620,\n\t0x26e51: 0x6cb2d020, 0x26e53: 0x6c8ea420,\n\t0x26e65: 0x6c6b3820, 0x26e67: 0x6c5c4020,\n\t0x26e6b: 0x6ccc7a20,\n\t0x26e78: 0x6d34a620, 0x26e79: 0x6c00e620, 0x26e7a: 0x6d074a20, 0x26e7b: 0x6c0a7820,\n\t0x26e7d: 0x6d126820, 0x26e7e: 0x6ca6d820, 0x26e7f: 0x6d3a2e20,\n\t// Block 0x9ba, offset 0x26e80\n\t0x26e81: 0x6cdb4220, 0x26e83: 0x6d010220,\n\t0x26e84: 0x6d241820, 0x26e85: 0x6cc14820,\n\t0x26e88: 0x6d40e020, 0x26e89: 0x6d341820, 0x26e8a: 0x6d2ee420, 0x26e8b: 0x6c94c420,\n\t0x26e8c: 0x6cf03020, 0x26e8d: 0x6c1ce820, 0x26e8e: 0x6c9d9620,\n\t0x26e90: 0x6c5f5e20, 0x26e92: 0x6cdb4420, 0x26e93: 0x6d12b620,\n\t0x26e94: 0x6cf7ac20, 0x26e95: 0x6ce96420, 0x26e96: 0x6c886c20, 0x26e97: 0x6d082e20,\n\t0x26e99: 0x6cf52c20,\n\t0x26e9f: 0x6c990c20,\n\t0x26eac: 0x6c538e20, 0x26eaf: 0x6c94c620,\n\t0x26eb0: 0x6c31ce20, 0x26eb1: 0x6c23ba20, 0x26eb2: 0x6c152e20, 0x26eb3: 0x6c92fc20,\n\t0x26eb4: 0x6cdb4620,\n\t// Block 0x9bb, offset 0x26ec0\n\t0x26ec0: 0x6c94c820,\n\t0x26ec6: 0x6d37d220, 0x26ec7: 0x6c847420,\n\t0x26ec8: 0x6c3ae220, 0x26eca: 0x6c6e3820, 0x26ecb: 0x6c7d2c20,\n\t0x26ecc: 0x6d18f420, 0x26ecd: 0x6c576620, 0x26ece: 0x6c258020,\n\t0x26ed0: 0x6d243c20, 0x26ed1: 0x6c083620, 0x26ed2: 0x6cea3020, 0x26ed3: 0x6cd58020,\n\t0x26ed4: 0x6c27a220, 0x26ed5: 0x6cf38a20, 0x26ed6: 0x6c22ea20, 0x26ed7: 0x6ca95e20,\n\t0x26ed8: 0x6c29a020, 0x26ed9: 0x6d40ee20, 0x26eda: 0x6c4e4220,\n\t0x26edc: 0x6cb02e20, 0x26edd: 0x6c204620,\n\t0x26ee0: 0x6c328620, 0x26ee1: 0x6cabe020,\n\t0x26ee4: 0x6d39d620, 0x26ee6: 0x6d011620, 0x26ee7: 0x6d30ac20,\n\t0x26ee8: 0x6cbcf420, 0x26ee9: 0x6d07dc20, 0x26eeb: 0x6ccb0820,\n\t// Block 0x9bc, offset 0x26f00\n\t0x26f00: 0x6c0a9620, 0x26f02: 0x6c407c20,\n\t0x26f08: 0x6c86d820,\n\t0x26f0e: 0x6c359620,\n\t0x26f10: 0x6d126e20, 0x26f11: 0x6cd58420, 0x26f13: 0x6ccb8620,\n\t0x26f15: 0x6cb54a20, 0x26f16: 0x6c4cf220, 0x26f17: 0x6ccb8820,\n\t0x26f19: 0x6c408620, 0x26f1a: 0x6c990e20,\n\t0x26f1c: 0x6c827620, 0x26f1d: 0x6d2db420,\n\t0x26f28: 0x6c14a620,\n\t0x26f2d: 0x6cf0fc20,\n\t0x26f3d: 0x6c827820, 0x26f3f: 0x6d2b6c20,\n\t// Block 0x9bd, offset 0x26f40\n\t0x26f40: 0x6d1c0e20, 0x26f41: 0x6c010220, 0x26f42: 0x6d005c20,\n\t0x26f44: 0x6c0aaa20,\n\t0x26f4b: 0x6c155a20,\n\t0x26f4e: 0x6cb03620, 0x26f4f: 0x6c23c220,\n\t0x26f50: 0x6c8b6620, 0x26f51: 0x6cb69c20, 0x26f53: 0x6c62d420,\n\t0x26f54: 0x6c6df220, 0x26f55: 0x6c302820, 0x26f56: 0x6c3a4620, 0x26f57: 0x6d159220,\n\t0x26f58: 0x6ce97220,\n\t0x26f68: 0x6c9bf620, 0x26f69: 0x6c11be20, 0x26f6a: 0x6d0b3c20,\n\t0x26f72: 0x6d103c20,\n\t0x26f74: 0x6ce6a220,\n\t0x26f78: 0x6d34be20, 0x26f7a: 0x6d027c20, 0x26f7b: 0x6c942220,\n\t0x26f7d: 0x6c875420, 0x26f7f: 0x6c991620,\n\t// Block 0x9be, offset 0x26f80\n\t0x26f82: 0x6cfa1820,\n\t0x26f85: 0x6cda4420,\n\t0x26f96: 0x6cda6c20, 0x26f97: 0x6d097e20,\n\t0x26f9d: 0x6c877a20, 0x26f9e: 0x6d25d820,\n\t0x26fa1: 0x6d2e4020, 0x26fa3: 0x6cdef220,\n\t0x26fa4: 0x6d083a20, 0x26fa5: 0x6cf12020, 0x26fa6: 0x6d139620, 0x26fa7: 0x6cad1a20,\n\t0x26fa8: 0x6c991820, 0x26fa9: 0x6ce3b620, 0x26faa: 0x6cb22a20,\n\t0x26fac: 0x6c328e20, 0x26fad: 0x6cc0a820, 0x26fae: 0x6d162c20,\n\t0x26fb3: 0x6ceb6020,\n\t0x26fb4: 0x6c14aa20, 0x26fb7: 0x6c6d7620,\n\t0x26fbc: 0x6c35aa20,\n\t// Block 0x9bf, offset 0x26fc0\n\t0x26fc3: 0x6c157420,\n\t0x26fc4: 0x6d1c4420, 0x26fc5: 0x6c8dae20, 0x26fc7: 0x6cfc5e20,\n\t0x26fc9: 0x6cb55a20, 0x26fcb: 0x6d272220,\n\t0x26fcc: 0x6c94ce20, 0x26fcd: 0x6d1cda20, 0x26fce: 0x6cc21a20,\n\t0x26fd2: 0x6c3a7820, 0x26fd3: 0x6d3eca20,\n\t0x26fd9: 0x6cbe6220,\n\t0x26fdd: 0x6ca94020, 0x26fde: 0x6cf13220, 0x26fdf: 0x6cd6c220,\n\t0x26fe1: 0x6c40a420,\n\t0x26fe4: 0x6ca1aa20, 0x26fe5: 0x6ca1ac20, 0x26fe6: 0x6ceb6820, 0x26fe7: 0x6c14ae20,\n\t0x26fe8: 0x6d2a1220,\n\t0x26fee: 0x6c84da20, 0x26fef: 0x6c84e420,\n\t0x26ff1: 0x6cfa2020, 0x26ff2: 0x6c733420,\n\t0x26ff4: 0x6ca41a20, 0x26ff5: 0x6c9db420,\n\t0x26ff8: 0x6c5a3e20, 0x26ffa: 0x6cd6f620,\n\t0x26ffc: 0x6d066420, 0x26fff: 0x6c3a7a20,\n\t// Block 0x9c0, offset 0x27000\n\t0x27001: 0x6d029420,\n\t0x27006: 0x6cdefa20, 0x27007: 0x6d1e6a20,\n\t0x27009: 0x6d2e4420,\n\t0x27011: 0x6cbb3420, 0x27012: 0x6ca46a20,\n\t0x27014: 0x6c8c9420,\n\t0x27018: 0x6c948220, 0x27019: 0x6cfc6e20, 0x2701a: 0x6c3f2c20,\n\t0x2701c: 0x6c8df820,\n\t0x27020: 0x6ccadc20, 0x27022: 0x6c5ca620,\n\t0x27028: 0x6ce66020, 0x2702a: 0x6cbe7020,\n\t0x2702c: 0x6c598a20, 0x2702e: 0x6c01b220,\n\t0x27035: 0x6c97c220, 0x27037: 0x6ca6b220,\n\t0x2703b: 0x6c4c8020,\n\t0x2703c: 0x6cab8820, 0x2703f: 0x6cfe4620,\n\t// Block 0x9c1, offset 0x27040\n\t0x27041: 0x6c6c5620,\n\t0x27046: 0x6d32f620,\n\t0x27048: 0x6ca2cc20, 0x2704b: 0x6cca5e20,\n\t0x2704c: 0x6c56d020, 0x2704e: 0x6d40f020, 0x2704f: 0x6c5b7620,\n\t0x27052: 0x6c5f7420,\n\t0x27056: 0x6d138a20,\n\t0x27066: 0x6d03de20,\n\t0x27069: 0x6c7e6c20, 0x2706a: 0x6d232220, 0x2706b: 0x6c745820,\n\t0x27071: 0x6cd5da20, 0x27072: 0x6d32d620,\n\t0x27074: 0x6d1e4e20, 0x27076: 0x6c439c20,\n\t0x27078: 0x6c66ae20, 0x27079: 0x6d034820,\n\t0x2707c: 0x6c5aec20, 0x2707f: 0x6cd67820,\n\t// Block 0x9c2, offset 0x27080\n\t0x27082: 0x6c1cf020, 0x27083: 0x6c4f8a20,\n\t0x27088: 0x6c8a6420,\n\t0x2708d: 0x6c674a20, 0x2708f: 0x6c456c20,\n\t0x27091: 0x6d3d3020,\n\t0x27097: 0x6cb6de20,\n\t0x2709c: 0x6cb8b820, 0x2709e: 0x6c30e220, 0x2709f: 0x6cb30220,\n\t0x270a2: 0x6c567a20,\n\t0x270a5: 0x6ca98c20, 0x270a7: 0x6cb76420,\n\t0x270a8: 0x6c2db420, 0x270a9: 0x6c2db620, 0x270ab: 0x6c85b220,\n\t0x270ae: 0x6d046220,\n\t0x270bd: 0x6ca2da20, 0x270bf: 0x6d32a620,\n\t// Block 0x9c3, offset 0x270c0\n\t0x270c0: 0x6c7e6e20, 0x270c1: 0x6d35cc20, 0x270c3: 0x6c35b220,\n\t0x270c4: 0x6c0e6620, 0x270c5: 0x6cb30620, 0x270c6: 0x6d058420, 0x270c7: 0x6d1e7a20,\n\t0x270c8: 0x6c223c20, 0x270c9: 0x6c85e220,\n\t0x270cc: 0x6cad5820, 0x270cf: 0x6d053a20,\n\t0x270db: 0x6cb4a820,\n\t0x270dd: 0x6c17e420, 0x270de: 0x6cb78420,\n\t0x270e1: 0x6d177620, 0x270e3: 0x6ce31c20,\n\t0x270e4: 0x6c348820, 0x270e5: 0x6c8f9020, 0x270e7: 0x6c668020,\n\t0x270ed: 0x6d2e6020, 0x270ee: 0x6d261220,\n\t0x270f6: 0x6d210820,\n\t0x270f8: 0x6c44ca20, 0x270fa: 0x6c546c20,\n\t0x270fe: 0x6cb6f820,\n\t// Block 0x9c4, offset 0x27100\n\t0x27100: 0x6ca28c20, 0x27101: 0x6c592a20, 0x27102: 0x6c906a20, 0x27103: 0x6cf89420,\n\t0x27104: 0x6c356c20, 0x27105: 0x6c80fe20, 0x27106: 0x6c3aae20, 0x27107: 0x6ced2820,\n\t0x27109: 0x6c259620, 0x2710b: 0x6caea420,\n\t0x2710f: 0x6c262c20,\n\t0x27110: 0x6cf22420,\n\t0x27121: 0x6c430620,\n\t0x27125: 0x6c254820,\n\t0x27128: 0x6cb7a620, 0x27129: 0x6c83fe20, 0x2712a: 0x6cbcc820, 0x2712b: 0x6cba6020,\n\t0x2712c: 0x6c798220, 0x2712d: 0x6c082220, 0x2712f: 0x6cd46c20,\n\t0x27137: 0x6ceea220,\n\t// Block 0x9c5, offset 0x27140\n\t0x27144: 0x6cccf220,\n\t0x2714f: 0x6d3e6e20,\n\t0x27152: 0x6ce40c20, 0x27153: 0x6cb90e20,\n\t0x27154: 0x6c31ac20, 0x27157: 0x6ce8dc20,\n\t0x2715a: 0x6ceeaa20,\n\t0x2715e: 0x6c558420, 0x2715f: 0x6d038e20,\n\t0x27161: 0x6ccd0220, 0x27162: 0x6d354a20,\n\t0x27167: 0x6c1bb820,\n\t0x27178: 0x6d394a20, 0x27179: 0x6cf23620, 0x2717a: 0x6c1b4c20, 0x2717b: 0x6cdd9420,\n\t0x2717c: 0x6d020220, 0x2717e: 0x6c78d220,\n\t// Block 0x9c6, offset 0x27180\n\t0x27181: 0x6ccca220, 0x27182: 0x6cd1f220, 0x27183: 0x6cd47820,\n\t0x27185: 0x6c6bfc20,\n\t0x27189: 0x6c431c20, 0x2718a: 0x6c93b220,\n\t0x27194: 0x6d020420,\n\t0x2719a: 0x6d354c20,\n\t0x2719e: 0x6c978220,\n\t0x271a0: 0x6cd67420, 0x271a1: 0x6c78da20, 0x271a3: 0x6c2dfe20,\n\t0x271a4: 0x6d141a20, 0x271a6: 0x6cdb2420, 0x271a7: 0x6c206420,\n\t0x271b1: 0x6c256820, 0x271b2: 0x6cebb220,\n\t0x271b5: 0x6d022020,\n\t0x271bd: 0x6d082620,\n\t// Block 0x9c7, offset 0x271c0\n\t0x271c2: 0x6c51f420, 0x271c3: 0x6c74ce20,\n\t0x271c6: 0x6ce43020, 0x271c7: 0x6c3ada20,\n\t0x271c9: 0x6d355620, 0x271ca: 0x6cd3e820, 0x271cb: 0x6ce9c620,\n\t0x271ce: 0x6c1cea20,\n\t0x271d0: 0x6ce43220, 0x271d1: 0x6d2e8820, 0x271d2: 0x6c527820,\n\t0x271d4: 0x6cc1de20, 0x271d5: 0x6cef4220, 0x271d7: 0x6c33ba20,\n\t0x271d8: 0x6c067220,\n\t0x271dc: 0x6c8a2c20,\n\t0x271e4: 0x6cd83620,\n\t0x271ea: 0x6c0c8420, 0x271eb: 0x6d023420,\n\t0x271ec: 0x6c0cfc20, 0x271ee: 0x6c23d820,\n\t0x271f2: 0x6c72ac20, 0x271f3: 0x6c518820,\n\t0x271f7: 0x6c7d3020,\n\t0x271f8: 0x6d1dc820,\n\t// Block 0x9c8, offset 0x27200\n\t0x27200: 0x6cd62220,\n\t0x2720d: 0x6ca89a20, 0x2720f: 0x6d21da20,\n\t0x27210: 0x6d3dca20, 0x27211: 0x6c9b8c20, 0x27212: 0x6c55f220,\n\t0x27215: 0x6c8b6220,\n\t0x2721d: 0x6c6a4020, 0x2721e: 0x6d048220,\n\t0x27223: 0x6d0e0020,\n\t0x27229: 0x6c6b7a20, 0x2722a: 0x6c7eb820, 0x2722b: 0x6cd62e20,\n\t0x2722c: 0x6c6b7c20, 0x2722d: 0x6c828220,\n\t0x27230: 0x6d40fc20, 0x27232: 0x6cd40420,\n\t0x27238: 0x6cef6c20, 0x27239: 0x6c318620, 0x2723a: 0x6cdb6420,\n\t// Block 0x9c9, offset 0x27240\n\t0x27243: 0x6d012e20,\n\t0x27244: 0x6cc4f620,\n\t0x2724c: 0x6c964e20,\n\t0x27251: 0x6cb96420,\n\t0x27258: 0x6ca48620, 0x27259: 0x6c8dec20,\n\t0x2725c: 0x6c630620,\n\t0x27260: 0x6ca03e20, 0x27263: 0x6c476220,\n\t0x27268: 0x6d080c20,\n\t0x2726c: 0x6d058e20,\n\t0x27271: 0x6c0f3620,\n\t0x2727c: 0x6ceebc20,\n\t// Block 0x9ca, offset 0x27280\n\t0x27282: 0x6c7a6e20,\n\t0x27286: 0x6cecf020,\n\t0x27288: 0x6c143c20, 0x2728a: 0x6c996820, 0x2728b: 0x6c789a20,\n\t0x2728e: 0x6c22c420,\n\t0x27292: 0x6cfcbc20, 0x27293: 0x6ca11620,\n\t0x2729a: 0x6c5cc420, 0x2729b: 0x6c162c20,\n\t0x2729c: 0x6cd1c620, 0x2729d: 0x6d31dc20, 0x2729e: 0x6c364420, 0x2729f: 0x6c9c5a20,\n\t0x272a1: 0x6cd1c820, 0x272a2: 0x6cc11420, 0x272a3: 0x6cd4e420,\n\t0x272a5: 0x6c220420, 0x272a6: 0x6d0d9420,\n\t0x272a9: 0x6c54dc20, 0x272aa: 0x6cb50220, 0x272ab: 0x6d366c20,\n\t0x272ac: 0x6c599c20,\n\t0x272b4: 0x6d353820, 0x272b6: 0x6d1fda20,\n\t0x272bc: 0x6c435420, 0x272bd: 0x6d11c420, 0x272be: 0x6cb3cc20,\n\t// Block 0x9cb, offset 0x272c0\n\t0x272c7: 0x6d153620,\n\t0x272c8: 0x6c1a8420, 0x272c9: 0x6c625020, 0x272cb: 0x6c007420,\n\t0x272cd: 0x6c308620, 0x272cf: 0x6cdc6220,\n\t0x272d1: 0x6c701c20,\n\t0x272d8: 0x6cb7c820, 0x272d9: 0x6c884420, 0x272da: 0x6d085620,\n\t0x272dc: 0x6c8a7620,\n\t0x272e1: 0x6d285820, 0x272e2: 0x6d085a20, 0x272e3: 0x6c23e620,\n\t0x272e4: 0x6cb10020, 0x272e6: 0x6c7c9c20,\n\t0x272e8: 0x6ce37a20, 0x272e9: 0x6c58e020, 0x272ea: 0x6c280020, 0x272eb: 0x6c4b7820,\n\t0x272ec: 0x6c188a20, 0x272ee: 0x6cce3c20, 0x272ef: 0x6c628620,\n\t0x272f4: 0x6c891c20, 0x272f5: 0x6c76b620, 0x272f6: 0x6cd17820,\n\t0x272f8: 0x6c30cc20, 0x272f9: 0x6d1f8020, 0x272fa: 0x6cb66220,\n\t0x272fc: 0x6cffc620,\n\t// Block 0x9cc, offset 0x27300\n\t0x27302: 0x6d18f620, 0x27303: 0x6c90c420,\n\t0x27306: 0x6c206a20,\n\t0x2730b: 0x6c81e620,\n\t0x2730c: 0x6c42ec20,\n\t0x27310: 0x6d2ba220, 0x27312: 0x6cef6420,\n\t0x27316: 0x6c653620,\n\t0x2731b: 0x6d1c3220,\n\t0x2731c: 0x6c38f420, 0x2731d: 0x6c877c20, 0x2731e: 0x6cb94e20,\n\t0x27322: 0x6d125420,\n\t0x27326: 0x6c7c5a20, 0x27327: 0x6cef7a20,\n\t0x27329: 0x6cc42620,\n\t0x2732c: 0x6cffca20, 0x2732d: 0x6cc42820,\n\t0x27330: 0x6c551820,\n\t0x27335: 0x6c342020, 0x27336: 0x6c1f1e20,\n\t0x27339: 0x6ccfd620,\n\t0x2733c: 0x6d3d5620, 0x2733d: 0x6c355e20, 0x2733e: 0x6c61f820,\n\t// Block 0x9cd, offset 0x27340\n\t0x27341: 0x6cdfde20, 0x27343: 0x6cabc420,\n\t0x2734b: 0x6c6be220,\n\t0x2734c: 0x6cbc4220,\n\t0x27351: 0x6cb99620, 0x27352: 0x6c724c20,\n\t0x27355: 0x6cc06e20, 0x27356: 0x6ceb2220,\n\t0x2735a: 0x6caafa20, 0x2735b: 0x6cd8c620,\n\t0x2735f: 0x6d14fe20,\n\t0x27361: 0x6c47a220, 0x27362: 0x6c5d3220, 0x27363: 0x6cabda20,\n\t0x27364: 0x6d3e5a20, 0x27366: 0x6c685220,\n\t0x27369: 0x6cf80420, 0x2736a: 0x6cceb820,\n\t0x2736c: 0x6d153820, 0x2736d: 0x6d369e20,\n\t0x27375: 0x6c952420, 0x27377: 0x6d38a020,\n\t0x27378: 0x6c74a420, 0x27379: 0x6ce00620, 0x2737a: 0x6cab0c20, 0x2737b: 0x6c728020,\n\t0x2737c: 0x6c559c20, 0x2737e: 0x6d36c220,\n\t// Block 0x9ce, offset 0x27380\n\t0x27383: 0x6c088820,\n\t0x2738d: 0x6c1c7220, 0x2738e: 0x6d07d020, 0x2738f: 0x6c60b620,\n\t0x27390: 0x6c48a020, 0x27391: 0x6c715e20, 0x27392: 0x6cf31620, 0x27393: 0x6ceb4a20,\n\t0x27395: 0x6cc09820, 0x27396: 0x6ceebe20, 0x27397: 0x6c32a220,\n\t0x27399: 0x6cd47c20, 0x2739b: 0x6d31fe20,\n\t0x2739c: 0x6ca55420, 0x2739f: 0x6cf8f620,\n\t0x273a0: 0x6d30a420, 0x273a1: 0x6d371620, 0x273a3: 0x6ca2ea20,\n\t0x273a8: 0x6c650620,\n\t0x273ae: 0x6d114e20, 0x273af: 0x6c4c9820,\n\t0x273b2: 0x6c2c0820,\n\t0x273b4: 0x6c5e1c20, 0x273b5: 0x6c6de220,\n\t0x273bc: 0x6c74ec20, 0x273bd: 0x6d270820,\n\t// Block 0x9cf, offset 0x273c0\n\t0x273c4: 0x6c60ee20, 0x273c6: 0x6cdb5c20,\n\t0x273c8: 0x6c654020, 0x273ca: 0x6c7d9820, 0x273cb: 0x6cf33220,\n\t0x273cc: 0x6c7c1e20, 0x273cd: 0x6c0c6020, 0x273ce: 0x6c751220,\n\t0x273d1: 0x6c0ad620, 0x273d3: 0x6c157a20,\n\t0x273d5: 0x6d3ecc20, 0x273d6: 0x6c87c220,\n\t0x273da: 0x6c3d0e20, 0x273db: 0x6cb9f020,\n\t0x273dc: 0x6d0d4020, 0x273de: 0x6ce08c20, 0x273df: 0x6ca0d820,\n\t0x273e3: 0x6c79e420,\n\t0x273e4: 0x6cf5d420,\n\t0x273ee: 0x6c569220, 0x273ef: 0x6c569420,\n\t0x273f1: 0x6c3e7020,\n\t0x273f4: 0x6d104c20, 0x273f5: 0x6c4cea20, 0x273f7: 0x6cc57020,\n\t0x273f8: 0x6d1b4c20, 0x273f9: 0x6c3c4420, 0x273fa: 0x6c75b620,\n\t0x273fc: 0x6d27a620, 0x273ff: 0x6d0a8820,\n\t// Block 0x9d0, offset 0x27400\n\t0x27401: 0x6cf87c20,\n\t0x2740e: 0x6cf96220,\n\t0x27411: 0x6c4f7620,\n\t0x2741a: 0x6c569620,\n\t0x2741d: 0x6c54d020, 0x2741e: 0x6cb4aa20, 0x2741f: 0x6c385020,\n\t0x27424: 0x6c636420, 0x27427: 0x6d150420,\n\t0x2742d: 0x6ceac820, 0x2742e: 0x6ca2e220,\n\t0x27438: 0x6d1a6a20, 0x27439: 0x6d1b5a20,\n\t// Block 0x9d1, offset 0x27440\n\t0x27443: 0x6c622a20,\n\t0x27444: 0x6cee5620, 0x27445: 0x6cd3a420, 0x27446: 0x6c330c20, 0x27447: 0x6c34fc20,\n\t0x27449: 0x6ceb3020, 0x2744a: 0x6cebe620, 0x2744b: 0x6c863e20,\n\t0x2744f: 0x6cc55220,\n\t0x27452: 0x6c22d020, 0x27453: 0x6d070220,\n\t0x27454: 0x6d389020, 0x27455: 0x6d3f5a20,\n\t0x2745c: 0x6cee2a20, 0x2745d: 0x6d0b5820, 0x2745f: 0x6c622c20,\n\t0x27460: 0x6c179e20,\n\t0x27469: 0x6c606020,\n\t0x27475: 0x6ccd5420, 0x27476: 0x6ce8de20,\n\t0x27478: 0x6c0cf620, 0x27479: 0x6cf8be20, 0x2747a: 0x6caf7e20, 0x2747b: 0x6d2cd420,\n\t0x2747e: 0x6c5c0620,\n\t// Block 0x9d2, offset 0x27480\n\t0x27480: 0x6cdd3020, 0x27482: 0x6c51da20,\n\t0x27484: 0x6d265220, 0x27486: 0x6cf37c20,\n\t0x27488: 0x6c8d4020, 0x2748a: 0x6d2cd620, 0x2748b: 0x6c574a20,\n\t0x27497: 0x6c151220,\n\t0x2749f: 0x6c367620,\n\t0x274a1: 0x6c18e020,\n\t0x274a7: 0x6cdc6620,\n\t0x274a9: 0x6ce51420,\n\t0x274b0: 0x6d36c420, 0x274b1: 0x6ce41620, 0x274b2: 0x6c022e20, 0x274b3: 0x6d3d9020,\n\t0x274b4: 0x6d3f6020, 0x274b5: 0x6c783020, 0x274b7: 0x6ccb4e20,\n\t0x274b8: 0x6ce4c220, 0x274b9: 0x6c92b620,\n\t0x274be: 0x6ccd2620, 0x274bf: 0x6d2c9020,\n\t// Block 0x9d3, offset 0x274c0\n\t0x274c3: 0x6c1cde20,\n\t0x274c5: 0x6d0ea620,\n\t0x274d2: 0x6ca25420, 0x274d3: 0x6c54fc20,\n\t0x274da: 0x6c1ad420,\n\t0x274dd: 0x6cdb0a20,\n\t0x274e3: 0x6ca51420,\n\t0x274e6: 0x6c60b820, 0x274e7: 0x6c346020,\n\t0x274e8: 0x6c547e20, 0x274ea: 0x6c23de20, 0x274eb: 0x6d2c0220,\n\t0x274ec: 0x6d1a9c20, 0x274ee: 0x6cffbe20,\n\t0x274f0: 0x6c0bbc20, 0x274f1: 0x6c085220, 0x274f2: 0x6c7e9a20,\n\t0x274f4: 0x6c1ad820, 0x274f6: 0x6cb87820,\n\t0x274f8: 0x6c015220, 0x274f9: 0x6cd1fe20,\n\t0x274fc: 0x6c1c7420,\n\t// Block 0x9d4, offset 0x27500\n\t0x27505: 0x6caa6a20, 0x27507: 0x6c628820,\n\t0x27513: 0x6cab9220,\n\t0x27515: 0x6cf97a20,\n\t0x27518: 0x6c14a020, 0x2751a: 0x6c005620,\n\t0x2751d: 0x6cd17c20, 0x2751e: 0x6c518220,\n\t0x27520: 0x6c60ca20, 0x27521: 0x6c1ade20, 0x27522: 0x6cf8fa20, 0x27523: 0x6d32fe20,\n\t0x27526: 0x6cde0020,\n\t0x27528: 0x6c96e220, 0x2752b: 0x6caf9a20,\n\t0x2752e: 0x6d05f220, 0x2752f: 0x6cba2a20,\n\t0x27539: 0x6cfa4e20,\n\t// Block 0x9d5, offset 0x27540\n\t0x2754a: 0x6d241a20,\n\t0x27551: 0x6c6b4620, 0x27552: 0x6cfa5420, 0x27553: 0x6c91ee20,\n\t0x27555: 0x6cbcf620, 0x27557: 0x6c145220,\n\t0x2755b: 0x6d107020,\n\t0x2755c: 0x6c62b020, 0x2755d: 0x6ccc3620, 0x2755e: 0x6c912020,\n\t0x27560: 0x6c5f7620, 0x27561: 0x6d373020, 0x27562: 0x6cee5c20,\n\t0x27564: 0x6c0a9820, 0x27565: 0x6c015820, 0x27566: 0x6d142a20, 0x27567: 0x6c015a20,\n\t0x2756c: 0x6c847620,\n\t0x27579: 0x6cfaec20,\n\t0x2757e: 0x6c703620, 0x2757f: 0x6ce08420,\n\t// Block 0x9d6, offset 0x27580\n\t0x27581: 0x6c507a20, 0x27582: 0x6c520620,\n\t0x27585: 0x6d2c0620, 0x27586: 0x6d2e2e20, 0x27587: 0x6d191a20,\n\t0x27588: 0x6cf91a20, 0x2758a: 0x6cf91c20, 0x2758b: 0x6c384420,\n\t0x2758c: 0x6d0cf620, 0x2758f: 0x6ca25620,\n\t0x27595: 0x6c474020,\n\t0x2759e: 0x6d27d020,\n\t0x275a4: 0x6d384820, 0x275a6: 0x6c160220, 0x275a7: 0x6c208620,\n\t0x275a8: 0x6c5c8a20, 0x275a9: 0x6d28d620, 0x275aa: 0x6c4c0820, 0x275ab: 0x6c661c20,\n\t0x275ac: 0x6d0b3e20,\n\t0x275b0: 0x6cfe6820, 0x275b1: 0x6c520820,\n\t// Block 0x9d7, offset 0x275c0\n\t0x275c3: 0x6c28e820,\n\t0x275c7: 0x6c9df020,\n\t0x275c8: 0x6ca93a20, 0x275ca: 0x6c9ba620,\n\t0x275cc: 0x6c8b6e20, 0x275cd: 0x6d396a20, 0x275ce: 0x6cb42220, 0x275cf: 0x6cdf0a20,\n\t0x275d3: 0x6d1cd020,\n\t0x275d4: 0x6ce2cc20, 0x275d5: 0x6c4ca220,\n\t0x275da: 0x6cbb3020,\n\t0x275dc: 0x6c942420, 0x275dd: 0x6cc9b820, 0x275de: 0x6c8b7020, 0x275df: 0x6c1b6c20,\n\t0x275e0: 0x6d015020, 0x275e3: 0x6c4ca820,\n\t0x275e4: 0x6c067e20, 0x275e5: 0x6c964220, 0x275e6: 0x6c73a420,\n\t0x275ea: 0x6c36e820,\n\t0x275f3: 0x6c51a820,\n\t0x275f5: 0x6c9aba20,\n\t0x275f8: 0x6d028820, 0x275f9: 0x6cb22c20, 0x275fb: 0x6c4dc420,\n\t0x275fc: 0x6c194420, 0x275fd: 0x6ccdec20, 0x275fe: 0x6c5ca020,\n\t// Block 0x9d8, offset 0x27600\n\t0x27606: 0x6d1c4820,\n\t0x27608: 0x6c663e20,\n\t0x2760d: 0x6c016620,\n\t0x27611: 0x6cdef420, 0x27612: 0x6d144220, 0x27613: 0x6ce9dc20,\n\t0x27617: 0x6c8ef220,\n\t0x27619: 0x6d425a20, 0x2761b: 0x6c84ec20,\n\t0x2761d: 0x6cb23420, 0x2761e: 0x6d098420,\n\t0x27620: 0x6ca5a220, 0x27621: 0x6c315820,\n\t0x27624: 0x6c806c20,\n\t0x2762a: 0x6d2d5e20, 0x2762b: 0x6c73e620,\n\t0x2762c: 0x6d314620, 0x2762d: 0x6c600c20, 0x2762e: 0x6cb8ce20,\n\t0x27630: 0x6c4da220, 0x27631: 0x6c3b7220, 0x27633: 0x6c4da420,\n\t0x27634: 0x6c535620, 0x27635: 0x6c514620, 0x27636: 0x6c541a20,\n\t0x2763a: 0x6d2e7820, 0x2763b: 0x6c1dd420,\n\t0x2763c: 0x6cdf7e20, 0x2763d: 0x6cba7820, 0x2763f: 0x6ccf7420,\n\t// Block 0x9d9, offset 0x27640\n\t0x27640: 0x6d1bee20, 0x27643: 0x6cbd4020,\n\t0x27646: 0x6c5e0e20,\n\t0x27648: 0x6cf8fc20, 0x27649: 0x6c51f820, 0x2764a: 0x6cf90820, 0x2764b: 0x6cf97e20,\n\t0x2764c: 0x6c4fb620, 0x2764d: 0x6c81e820, 0x2764f: 0x6c870c20,\n\t0x27652: 0x6c19a220,\n\t0x27656: 0x6c760620, 0x27657: 0x6cf76020,\n\t0x27658: 0x6c4e7620,\n\t0x2765e: 0x6c311620,\n\t0x27660: 0x6c30ae20, 0x27661: 0x6cec9220,\n\t0x27664: 0x6c30b020, 0x27665: 0x6d293820, 0x27666: 0x6c737a20,\n\t0x27668: 0x6c90e620, 0x27669: 0x6c1f6220, 0x2766b: 0x6d32ea20,\n\t0x2766f: 0x6cb64420,\n\t0x27670: 0x6c770e20, 0x27671: 0x6c5df420, 0x27672: 0x6c7f2420,\n\t0x2767a: 0x6c410620,\n\t0x2767c: 0x6cd48220, 0x2767e: 0x6c301a20,\n\t// Block 0x9da, offset 0x27680\n\t0x27683: 0x6c90c820,\n\t0x27684: 0x6ce93e20, 0x27687: 0x6d21ca20,\n\t0x27688: 0x6cf52e20, 0x2768a: 0x6ce4ce20,\n\t0x27692: 0x6c4c9e20,\n\t0x27698: 0x6ce04420, 0x27699: 0x6cb6ae20,\n\t0x276a0: 0x6c8b8020, 0x276a1: 0x6c87b420, 0x276a3: 0x6d09d020,\n\t0x276a8: 0x6c452820, 0x276a9: 0x6ce63820, 0x276aa: 0x6c4ea220, 0x276ab: 0x6c1f2a20,\n\t0x276ad: 0x6cea4c20, 0x276af: 0x6d047a20,\n\t0x276b0: 0x6d1f3020, 0x276b1: 0x6ca11820, 0x276b2: 0x6c1ba420,\n\t0x276b4: 0x6c562020, 0x276b5: 0x6c317020, 0x276b7: 0x6ca24420,\n\t0x276b9: 0x6ca34420, 0x276bb: 0x6c8d0c20,\n\t0x276bf: 0x6c00ae20,\n\t// Block 0x9db, offset 0x276c0\n\t0x276c0: 0x6cfab020,\n\t0x276c4: 0x6c76e020, 0x276c5: 0x6cd8cc20, 0x276c6: 0x6cca0420,\n\t0x276ca: 0x6d180e20,\n\t0x276cf: 0x6d183c20,\n\t0x276d0: 0x6d000020, 0x276d2: 0x6d340820, 0x276d3: 0x6c313020,\n\t0x276d8: 0x6c973e20,\n\t0x276dc: 0x6c950a20, 0x276dd: 0x6c74a820,\n\t0x276e1: 0x6cbad620, 0x276e2: 0x6c8d4a20,\n\t0x276e9: 0x6cb12c20, 0x276ea: 0x6c23fc20, 0x276eb: 0x6c351820,\n\t0x276ec: 0x6d229420,\n\t0x276f0: 0x6d3d0a20, 0x276f2: 0x6cf8fe20, 0x276f3: 0x6c581620,\n\t0x276f4: 0x6ca02020, 0x276f5: 0x6ce14420,\n\t0x276f9: 0x6cb41820, 0x276fb: 0x6c9da420,\n\t0x276fc: 0x6c979020, 0x276fe: 0x6c48d420,\n\t// Block 0x9dc, offset 0x27700\n\t0x27700: 0x6cb93620, 0x27702: 0x6c8bfa20, 0x27703: 0x6c9fd620,\n\t0x27704: 0x6cf04e20, 0x27705: 0x6c136820, 0x27707: 0x6c56e220,\n\t0x27708: 0x6cdc0420, 0x2770b: 0x6c72bc20,\n\t0x2770c: 0x6ccc8420, 0x2770d: 0x6c9ba820,\n\t0x27717: 0x6cef7620,\n\t0x27718: 0x6cf75a20, 0x27719: 0x6c8e2a20,\n\t0x2771c: 0x6c0ad820, 0x2771d: 0x6cf13820,\n\t0x27721: 0x6c85b420, 0x27722: 0x6d304420,\n\t0x27724: 0x6d1df220, 0x27725: 0x6c554e20, 0x27726: 0x6cecda20, 0x27727: 0x6c034c20,\n\t0x27728: 0x6c649220,\n\t0x2772d: 0x6d426a20, 0x2772e: 0x6d2df220, 0x2772f: 0x6c0e7a20,\n\t0x27730: 0x6cbfb220, 0x27731: 0x6d0f5a20,\n\t0x27734: 0x6c300620, 0x27735: 0x6cc19820,\n\t0x2773a: 0x6caff820, 0x2773b: 0x6d2d2c20,\n\t0x2773e: 0x6cccf420, 0x2773f: 0x6c46bc20,\n\t// Block 0x9dd, offset 0x27740\n\t0x27740: 0x6c0c9020, 0x27741: 0x6d152220, 0x27742: 0x6c3eaa20,\n\t0x27744: 0x6d034020, 0x27745: 0x6cd3a620, 0x27746: 0x6ce6fc20,\n\t0x27749: 0x6c2f6220,\n\t0x2774c: 0x6ce86e20, 0x2774d: 0x6cfef620, 0x2774e: 0x6cf3e020, 0x2774f: 0x6cade420,\n\t0x27750: 0x6c5ade20,\n\t0x27755: 0x6c7f2220,\n\t0x27759: 0x6cd8e220, 0x2775a: 0x6c250220, 0x2775b: 0x6ccc7220,\n\t0x2775c: 0x6d38f020, 0x2775d: 0x6d2fd820, 0x2775e: 0x6cef3220, 0x2775f: 0x6c7f2620,\n\t0x27760: 0x6c0a3a20, 0x27763: 0x6c303e20,\n\t0x27766: 0x6ca51620, 0x27767: 0x6d005420,\n\t0x27768: 0x6cc54020, 0x27769: 0x6ce98e20, 0x2776a: 0x6cf0d820, 0x2776b: 0x6d1f7020,\n\t0x2776c: 0x6c9a2820, 0x2776d: 0x6d25b220, 0x2776e: 0x6d384220,\n\t0x27776: 0x6cd9ea20,\n\t0x27778: 0x6c474820, 0x27779: 0x6ccee620, 0x2777b: 0x6d2f9220,\n\t0x2777c: 0x6cb02820, 0x2777f: 0x6ce70820,\n\t// Block 0x9de, offset 0x27780\n\t0x27781: 0x6c1ae220, 0x27782: 0x6caedc20, 0x27783: 0x6c153c20,\n\t0x27784: 0x6d1dca20, 0x27785: 0x6cd6ea20, 0x27787: 0x6cf48420,\n\t0x27789: 0x6cb03020, 0x2778a: 0x6c596020,\n\t0x2778c: 0x6c3f1e20, 0x2778e: 0x6c0c9620,\n\t0x27793: 0x6ca4d020,\n\t0x27795: 0x6c0c9820, 0x27796: 0x6cf11420, 0x27797: 0x6d1dd620,\n\t0x27799: 0x6ca52620, 0x2779a: 0x6c48fe20,\n\t0x277a0: 0x6c879220, 0x277a2: 0x6d035e20, 0x277a3: 0x6d0d2220,\n\t0x277a4: 0x6cb37420, 0x277a5: 0x6cadca20,\n\t0x277aa: 0x6cdd5c20,\n\t0x277ac: 0x6cc5e220, 0x277ad: 0x6ccd3a20,\n\t0x277b2: 0x6cdd5e20,\n\t0x277b8: 0x6c27d620, 0x277ba: 0x6c9af020,\n\t// Block 0x9df, offset 0x277c0\n\t0x277c3: 0x6cd44820,\n\t0x277c8: 0x6c46a620, 0x277ca: 0x6c4da620, 0x277cb: 0x6cd39020,\n\t0x277cc: 0x6d102020, 0x277ce: 0x6c479620,\n\t0x277db: 0x6c77fe20,\n\t0x277de: 0x6c709c20,\n\t0x277e0: 0x6cac2e20, 0x277e1: 0x6c12f820, 0x277e2: 0x6c05b220, 0x277e3: 0x6d047020,\n\t0x277e4: 0x6c111420, 0x277e7: 0x6c8c2420,\n\t0x277e8: 0x6c00b020,\n\t0x277ec: 0x6c9d6220, 0x277ed: 0x6c7f3e20,\n\t0x277f1: 0x6cfee020, 0x277f3: 0x6ccf1e20,\n\t0x277fb: 0x6c5d7c20,\n\t0x277fc: 0x6ca6b420,\n\t// Block 0x9e0, offset 0x27800\n\t0x27804: 0x6d335620, 0x27806: 0x6c8c5c20, 0x27807: 0x6d2c4420,\n\t0x2780a: 0x6d27be20,\n\t0x2780d: 0x6d071c20,\n\t0x27814: 0x6c1a2a20, 0x27815: 0x6cf2c020, 0x27816: 0x6cf68620,\n\t0x27819: 0x6c074820,\n\t0x2781c: 0x6cce1c20,\n\t0x27820: 0x6d23d020, 0x27821: 0x6c9d8020,\n\t0x27832: 0x6c32b020,\n\t0x27835: 0x6c144a20, 0x27837: 0x6d2b0820,\n\t0x27838: 0x6c1a8820, 0x2783a: 0x6ce69220,\n\t// Block 0x9e1, offset 0x27840\n\t0x27845: 0x6d157020,\n\t0x2784b: 0x6d10ba20,\n\t0x2784e: 0x6c7a6620,\n\t0x27850: 0x6c3b9c20, 0x27851: 0x6d010420, 0x27852: 0x6c1a8a20,\n\t0x2785b: 0x6c7d2420,\n\t0x2785f: 0x6c0d6220,\n\t0x27861: 0x6c90cc20,\n\t0x27865: 0x6d18fa20, 0x27866: 0x6c9da620, 0x27867: 0x6d024620,\n\t0x27871: 0x6c4a9c20, 0x27873: 0x6c955e20,\n\t0x27876: 0x6ccdce20,\n\t0x2787e: 0x6c717a20, 0x2787f: 0x6c318420,\n\t// Block 0x9e2, offset 0x27880\n\t0x27882: 0x6cfaf220,\n\t0x27885: 0x6d356020,\n\t0x27888: 0x6c0d9020,\n\t0x27895: 0x6d356220, 0x27896: 0x6d3bfa20, 0x27897: 0x6d092a20,\n\t0x27898: 0x6c893020, 0x27899: 0x6cdcb220,\n\t0x278a6: 0x6c808c20, 0x278a7: 0x6c72cc20,\n\t0x278a8: 0x6c9df220, 0x278a9: 0x6d0ab420, 0x278aa: 0x6d2ea020, 0x278ab: 0x6c4c0c20,\n\t0x278b2: 0x6d376820,\n\t0x278bd: 0x6cf12c20, 0x278be: 0x6cc36a20, 0x278bf: 0x6c14ac20,\n\t// Block 0x9e3, offset 0x278c0\n\t0x278c8: 0x6cc63020, 0x278ca: 0x6d272820,\n\t0x278cc: 0x6d3ece20,\n\t0x278d0: 0x6c965420, 0x278d1: 0x6c4b3620, 0x278d3: 0x6c19f420,\n\t0x278d5: 0x6c709e20, 0x278d6: 0x6ce4fe20, 0x278d7: 0x6ced9820,\n\t0x278db: 0x6d33d820,\n\t0x278de: 0x6ca42c20,\n\t0x278e3: 0x6c4db420,\n\t0x278e8: 0x6cf6b020, 0x278e9: 0x6c8bd420,\n\t0x278ec: 0x6d0c2e20, 0x278ed: 0x6d074220,\n\t0x278f2: 0x6c56d220, 0x278f3: 0x6c423620,\n\t0x278f4: 0x6d074c20, 0x278f6: 0x6cf90a20,\n\t0x278fa: 0x6c258420,\n\t0x278fd: 0x6cf92a20, 0x278fe: 0x6c560220,\n\t// Block 0x9e4, offset 0x27900\n\t0x27905: 0x6d0c4c20,\n\t0x2790e: 0x6d170e20, 0x2790f: 0x6c1b1a20,\n\t0x27910: 0x6c741c20, 0x27912: 0x6d40b220,\n\t0x2791c: 0x6c699420, 0x2791d: 0x6d178220, 0x2791f: 0x6ce05e20,\n\t0x27920: 0x6c1c1420, 0x27921: 0x6c037a20, 0x27922: 0x6ce82820, 0x27923: 0x6d3f7a20,\n\t0x27924: 0x6cc05420, 0x27927: 0x6c1c1620,\n\t0x27928: 0x6cf7e020,\n\t0x27930: 0x6ca69c20, 0x27932: 0x6c241420,\n\t0x27934: 0x6cf44820, 0x27936: 0x6c1f4820, 0x27937: 0x6cda4e20,\n\t0x27938: 0x6d1df820, 0x27939: 0x6c71bc20, 0x2793a: 0x6c037e20,\n\t0x2793c: 0x6c229c20, 0x2793d: 0x6c2c6420, 0x2793e: 0x6cac9820, 0x2793f: 0x6c1c2620,\n\t// Block 0x9e5, offset 0x27940\n\t0x27941: 0x6cc0ac20, 0x27943: 0x6d0ca420,\n\t0x2794d: 0x6d2d2e20,\n\t0x27952: 0x6cfce220, 0x27953: 0x6c084620,\n\t0x27954: 0x6c7ba620, 0x27955: 0x6cb7a820, 0x27956: 0x6d389220, 0x27957: 0x6c713820,\n\t0x27958: 0x6cbcca20, 0x27959: 0x6ca13420, 0x2795a: 0x6d258c20,\n\t0x2795c: 0x6c4b5820, 0x2795d: 0x6d417220,\n\t0x27967: 0x6cbccc20,\n\t0x27970: 0x6c558a20, 0x27971: 0x6cc08820, 0x27972: 0x6c4d2220, 0x27973: 0x6c402c20,\n\t0x27974: 0x6c812a20, 0x27975: 0x6ccc6c20, 0x27976: 0x6cf68820, 0x27977: 0x6c101c20,\n\t0x27978: 0x6cd3ba20, 0x27979: 0x6d1e5220, 0x2797a: 0x6c49f020,\n\t0x2797c: 0x6ca85420, 0x2797f: 0x6c545820,\n\t// Block 0x9e6, offset 0x27980\n\t0x2798a: 0x6c9d7220,\n\t0x2798e: 0x6c369420, 0x2798f: 0x6cfb8a20,\n\t0x27990: 0x6d280020, 0x27991: 0x6d073220, 0x27992: 0x6cbde420, 0x27993: 0x6c301220,\n\t0x27994: 0x6c838220, 0x27995: 0x6cb7ca20, 0x27996: 0x6c7fb020, 0x27997: 0x6c3ee420,\n\t0x27998: 0x6cb71420, 0x27999: 0x6c1d3e20,\n\t0x2799c: 0x6c245c20, 0x2799f: 0x6ca16620,\n\t0x279a0: 0x6c06b820,\n\t0x279a4: 0x6c2a2e20,\n\t0x279a8: 0x6c6b3a20, 0x279a9: 0x6c1d5c20, 0x279aa: 0x6c1c7620, 0x279ab: 0x6d23f820,\n\t0x279ac: 0x6c24ee20, 0x279ad: 0x6cdb2620, 0x279ae: 0x6ce42420, 0x279af: 0x6cd61020,\n\t0x279b0: 0x6d2c4c20, 0x279b1: 0x6c3ef820, 0x279b3: 0x6c184620,\n\t0x279b4: 0x6c3d0c20, 0x279b5: 0x6c543220, 0x279b6: 0x6d2c4e20,\n\t// Block 0x9e7, offset 0x279c0\n\t0x279c4: 0x6c6b3c20, 0x279c5: 0x6d2c5020, 0x279c6: 0x6d2d9c20,\n\t0x279c9: 0x6d0dde20, 0x279ca: 0x6c4d3020, 0x279cb: 0x6cf48220,\n\t0x279cc: 0x6c576220, 0x279cd: 0x6c2cde20, 0x279ce: 0x6d115420, 0x279cf: 0x6cd9ec20,\n\t0x279d0: 0x6cb92c20, 0x279d1: 0x6c60cc20, 0x279d2: 0x6d04aa20, 0x279d3: 0x6cb7f020,\n\t0x279d4: 0x6c758420, 0x279d6: 0x6c4d3220,\n\t0x279de: 0x6d0dee20, 0x279df: 0x6c6b6820,\n\t0x279e0: 0x6c24f420, 0x279e2: 0x6ce96a20, 0x279e3: 0x6d2ee620,\n\t0x279e4: 0x6cb16c20, 0x279e5: 0x6c930e20, 0x279e6: 0x6d342020, 0x279e7: 0x6c1f8820,\n\t0x279e8: 0x6c9da820, 0x279e9: 0x6cbaec20, 0x279eb: 0x6c892420,\n\t0x279f2: 0x6c86dc20,\n\t0x279f6: 0x6c359a20, 0x279f7: 0x6cdb5820,\n\t0x279f8: 0x6c74f020, 0x279fb: 0x6c717c20,\n\t0x279fc: 0x6ce03a20, 0x279fd: 0x6c8a4820, 0x279fe: 0x6cca0a20, 0x279ff: 0x6c309220,\n\t// Block 0x9e8, offset 0x27a00\n\t0x27a01: 0x6d28d420, 0x27a02: 0x6d34b220,\n\t0x27a06: 0x6d08ca20, 0x27a07: 0x6c8d8620,\n\t0x27a0a: 0x6c2abe20,\n\t0x27a0d: 0x6d2dbe20, 0x27a0e: 0x6d07f020, 0x27a0f: 0x6cbdf220,\n\t0x27a10: 0x6c69da20, 0x27a11: 0x6cb0da20,\n\t0x27a14: 0x6c4e6e20,\n\t0x27a1a: 0x6d21f220, 0x27a1b: 0x6c4ca420,\n\t0x27a1d: 0x6d0a5420,\n\t0x27a20: 0x6d0a5620, 0x27a21: 0x6c156c20, 0x27a22: 0x6c6b8020, 0x27a23: 0x6c719420,\n\t0x27a24: 0x6d0e1820, 0x27a25: 0x6c31f620, 0x27a27: 0x6c53e020,\n\t0x27a28: 0x6cfd4a20, 0x27a29: 0x6d0a5820,\n\t0x27a2e: 0x6c8db020, 0x27a2f: 0x6c6b8620,\n\t0x27a30: 0x6d197e20, 0x27a31: 0x6cc22a20, 0x27a32: 0x6c41c020, 0x27a33: 0x6c3c8c20,\n\t0x27a35: 0x6c753820, 0x27a36: 0x6cc16e20,\n\t0x27a3b: 0x6c6fe020,\n\t0x27a3d: 0x6c61ba20, 0x27a3e: 0x6c612c20,\n\t// Block 0x9e9, offset 0x27a40\n\t0x27a45: 0x6cf77420, 0x27a46: 0x6cacd220,\n\t0x27a48: 0x6c7bf020, 0x27a49: 0x6c7a8e20, 0x27a4b: 0x6c7a9020,\n\t0x27a4c: 0x6d2cbe20, 0x27a4f: 0x6c03b220,\n\t0x27a52: 0x6c190220, 0x27a53: 0x6c569820,\n\t0x27a54: 0x6caa6220, 0x27a55: 0x6c356220, 0x27a56: 0x6d046a20, 0x27a57: 0x6c33ce20,\n\t0x27a58: 0x6cd10020, 0x27a59: 0x6cecdc20, 0x27a5a: 0x6c3b2e20,\n\t0x27a5d: 0x6cf60420, 0x27a5e: 0x6d3e2e20,\n\t0x27a60: 0x6c569a20,\n\t0x27a65: 0x6c0cea20, 0x27a67: 0x6ceba620,\n\t0x27a68: 0x6c04cc20, 0x27a69: 0x6c43e420, 0x27a6b: 0x6c77f620,\n\t0x27a72: 0x6d3c8c20, 0x27a73: 0x6c3e9220,\n\t0x27a74: 0x6ca12020, 0x27a75: 0x6c63c620, 0x27a76: 0x6ceb2620, 0x27a77: 0x6d235a20,\n\t0x27a79: 0x6ca24620, 0x27a7a: 0x6c745e20, 0x27a7b: 0x6c712820,\n\t0x27a7c: 0x6c486220, 0x27a7d: 0x6cb35a20,\n\t// Block 0x9ea, offset 0x27a80\n\t0x27a80: 0x6ca63c20,\n\t0x27a84: 0x6cec1e20, 0x27a85: 0x6d0d9620,\n\t0x27a94: 0x6c1e2c20, 0x27a95: 0x6c7ba820, 0x27a96: 0x6c4d7020,\n\t0x27a98: 0x6cfdd020, 0x27a99: 0x6cf65c20, 0x27a9b: 0x6c25a820,\n\t0x27a9c: 0x6ce6fe20, 0x27a9d: 0x6cc92420, 0x27a9f: 0x6c345820,\n\t0x27aa0: 0x6c182a20,\n\t0x27aa4: 0x6c833820, 0x27aa5: 0x6d3e6420, 0x27aa7: 0x6d332420,\n\t0x27aa8: 0x6d426c20, 0x27aab: 0x6c773020,\n\t0x27aac: 0x6d293a20, 0x27aae: 0x6d250020, 0x27aaf: 0x6cbf4620,\n\t0x27ab3: 0x6c381820,\n\t0x27ab4: 0x6d0a2220, 0x27ab6: 0x6c622e20,\n\t0x27ab8: 0x6c13a620,\n\t// Block 0x9eb, offset 0x27ac0\n\t0x27ac0: 0x6cd4fe20, 0x27ac1: 0x6d08a820, 0x27ac2: 0x6d00d220, 0x27ac3: 0x6ce2f820,\n\t0x27ac4: 0x6c4ef220, 0x27ac5: 0x6cfac020, 0x27ac6: 0x6ccd0420, 0x27ac7: 0x6cea8c20,\n\t0x27ac8: 0x6c4f8420, 0x27ac9: 0x6c7dbc20, 0x27aca: 0x6c133620, 0x27acb: 0x6c30bc20,\n\t0x27acc: 0x6caac620, 0x27acd: 0x6d0e9a20, 0x27ace: 0x6c1a2c20, 0x27acf: 0x6cb40a20,\n\t0x27ad0: 0x6cb7ba20, 0x27ad1: 0x6d26d420, 0x27ad2: 0x6c3d8c20,\n\t0x27ad7: 0x6ce6dc20,\n\t0x27adf: 0x6cf2c220,\n\t0x27ae0: 0x6cd11220, 0x27ae1: 0x6ceb8c20,\n\t0x27af4: 0x6ce06a20, 0x27af6: 0x6d0b6020, 0x27af7: 0x6d36ca20,\n\t0x27af8: 0x6c92be20, 0x27af9: 0x6d0dd020, 0x27afa: 0x6c70c220,\n\t0x27afd: 0x6c2a8020, 0x27aff: 0x6c1f7020,\n\t// Block 0x9ec, offset 0x27b00\n\t0x27b00: 0x6d412620, 0x27b01: 0x6c369620, 0x27b02: 0x6d349620, 0x27b03: 0x6caec020,\n\t0x27b05: 0x6c0cbe20, 0x27b07: 0x6c2c0220,\n\t0x27b10: 0x6c7f2820, 0x27b12: 0x6d133020,\n\t0x27b1c: 0x6c4fe620, 0x27b1d: 0x6cac7420, 0x27b1e: 0x6ce0ae20, 0x27b1f: 0x6c774a20,\n\t0x27b20: 0x6d05ea20, 0x27b21: 0x6d408e20, 0x27b22: 0x6c628c20, 0x27b23: 0x6cf52620,\n\t0x27b26: 0x6c204020,\n\t0x27b29: 0x6cb3a420, 0x27b2a: 0x6d0dd620, 0x27b2b: 0x6cebb420,\n\t0x27b2d: 0x6c31b820, 0x27b2f: 0x6cb13020,\n\t0x27b30: 0x6c1c7820, 0x27b31: 0x6c5d4420, 0x27b32: 0x6cb26820,\n\t0x27b34: 0x6c235c20, 0x27b35: 0x6d2c9620,\n\t0x27b3a: 0x6cec9e20,\n\t0x27b3f: 0x6cec6620,\n\t// Block 0x9ed, offset 0x27b40\n\t0x27b43: 0x6c36ae20,\n\t0x27b44: 0x6cf0da20, 0x27b45: 0x6c040420, 0x27b47: 0x6c678020,\n\t0x27b53: 0x6c140a20,\n\t0x27b55: 0x6c1f8220, 0x27b56: 0x6c7af220, 0x27b57: 0x6ce2bc20,\n\t0x27b58: 0x6d406a20, 0x27b59: 0x6c86ac20, 0x27b5a: 0x6cdeb220, 0x27b5b: 0x6cc9a420,\n\t0x27b5e: 0x6cac7a20, 0x27b5f: 0x6cac7c20,\n\t0x27b63: 0x6ccb0020,\n\t0x27b64: 0x6cbbba20,\n\t0x27b6d: 0x6d40e220, 0x27b6f: 0x6d371820,\n\t0x27b70: 0x6d0de020, 0x27b72: 0x6c6b4820, 0x27b73: 0x6ca5aa20,\n\t// Block 0x9ee, offset 0x27b80\n\t0x27b84: 0x6c944420, 0x27b85: 0x6cc15220, 0x27b87: 0x6c2af220,\n\t0x27b88: 0x6c897620, 0x27b89: 0x6c15f220, 0x27b8a: 0x6cbcf820, 0x27b8b: 0x6c912220,\n\t0x27b8c: 0x6c2efe20, 0x27b8d: 0x6c24f620,\n\t0x27b90: 0x6c615c20, 0x27b93: 0x6c178420,\n\t0x27b94: 0x6cd69a20, 0x27b95: 0x6d40f220, 0x27b97: 0x6c775a20,\n\t0x27b9a: 0x6cbaf020, 0x27b9b: 0x6c847820,\n\t0x27bae: 0x6cd65e20, 0x27baf: 0x6d243e20,\n\t0x27bb0: 0x6d2ee820, 0x27bb1: 0x6c82f220,\n\t// Block 0x9ef, offset 0x27bc0\n\t0x27bc5: 0x6cb33e20,\n\t0x27bca: 0x6d30b620, 0x27bcb: 0x6d001e20,\n\t0x27bcd: 0x6ce08620, 0x27bce: 0x6c258620, 0x27bcf: 0x6c7fdc20,\n\t0x27bd1: 0x6d060220, 0x27bd2: 0x6cd62820, 0x27bd3: 0x6d2c9c20,\n\t0x27bd4: 0x6c11ba20, 0x27bd7: 0x6c08fe20,\n\t0x27bd8: 0x6caf1c20,\n\t0x27bdd: 0x6c1a5620,\n\t0x27be3: 0x6cbc0c20,\n\t0x27be4: 0x6c5f8620,\n\t0x27bea: 0x6d2d0420,\n\t0x27bec: 0x6c7fde20,\n\t// Block 0x9f0, offset 0x27c00\n\t0x27c01: 0x6ce52820, 0x27c02: 0x6cc9b020, 0x27c03: 0x6c6c6e20,\n\t0x27c04: 0x6d3b4020, 0x27c05: 0x6c352220, 0x27c07: 0x6c145620,\n\t0x27c08: 0x6c73a020, 0x27c09: 0x6ce16220, 0x27c0a: 0x6c086420,\n\t0x27c0c: 0x6c38e820, 0x27c0d: 0x6c8b6820, 0x27c0e: 0x6d2b6e20, 0x27c0f: 0x6cdcb420,\n\t0x27c19: 0x6ccb8c20,\n\t0x27c27: 0x6d375c20,\n\t0x27c28: 0x6ce9d420, 0x27c2a: 0x6cbe5e20,\n\t0x27c2c: 0x6c21e620,\n\t0x27c30: 0x6cdee620, 0x27c31: 0x6c0e3c20, 0x27c32: 0x6cf1f620,\n\t0x27c35: 0x6cb36220,\n\t0x27c3d: 0x6ca09a20, 0x27c3e: 0x6c10e420,\n\t// Block 0x9f1, offset 0x27c40\n\t0x27c41: 0x6c7c2020, 0x27c43: 0x6c260220,\n\t0x27c44: 0x6cc54420, 0x27c45: 0x6c068020, 0x27c46: 0x6c7f8020,\n\t0x27c4d: 0x6ca75220, 0x27c4e: 0x6c84c220,\n\t0x27c55: 0x6c697220, 0x27c56: 0x6c919e20, 0x27c57: 0x6c879620,\n\t0x27c58: 0x6c900820, 0x27c59: 0x6c4baa20,\n\t0x27c5d: 0x6c161c20,\n\t0x27c64: 0x6cfb1820, 0x27c66: 0x6c165620,\n\t0x27c68: 0x6d029020, 0x27c69: 0x6d2ea820,\n\t0x27c6f: 0x6cd6c620,\n\t0x27c7b: 0x6c9d1220,\n\t0x27c7c: 0x6c947420, 0x27c7d: 0x6c965620,\n\t// Block 0x9f2, offset 0x27c80\n\t0x27c80: 0x6c2d0220,\n\t0x27c88: 0x6c2f2820, 0x27c8a: 0x6cecb220, 0x27c8b: 0x6d274620,\n\t0x27c8c: 0x6c948620, 0x27c8e: 0x6c948a20,\n\t0x27c93: 0x6c837220,\n\t0x27c95: 0x6cec6020, 0x27c96: 0x6c2f3e20, 0x27c97: 0x6ca59620,\n\t0x27c98: 0x6cceb220, 0x27c99: 0x6d019e20, 0x27c9a: 0x6cafe820,\n\t0x27ca5: 0x6c98dc20, 0x27ca7: 0x6d1ade20,\n\t0x27ca9: 0x6c0f0a20, 0x27cab: 0x6d3b0220,\n\t0x27cae: 0x6c1cc820,\n\t0x27cb6: 0x6ca24820, 0x27cb7: 0x6ceb2820,\n\t0x27cb9: 0x6ce7be20, 0x27cba: 0x6d128820,\n\t// Block 0x9f3, offset 0x27cc0\n\t0x27cc1: 0x6c5a7220, 0x27cc3: 0x6cc60020,\n\t0x27cc5: 0x6d130620,\n\t0x27ccb: 0x6ceb3a20,\n\t0x27cd6: 0x6d413a20, 0x27cd7: 0x6d23d220,\n\t0x27cda: 0x6c000c20,\n\t0x27cdc: 0x6d38a420, 0x27cdd: 0x6cec9c20,\n\t0x27ce1: 0x6c34ae20, 0x27ce2: 0x6d384420, 0x27ce3: 0x6c4cfc20,\n\t0x27ce4: 0x6c5a0420, 0x27ce5: 0x6c9e6220,\n\t0x27ce9: 0x6c211a20, 0x27cea: 0x6cbce420, 0x27ceb: 0x6c45b220,\n\t0x27cec: 0x6ce69420, 0x27ced: 0x6c9a2a20,\n\t0x27cf1: 0x6ce1a420,\n\t0x27cf4: 0x6cc6c420, 0x27cf7: 0x6cc6c620,\n\t0x27cf8: 0x6cb66420, 0x27cf9: 0x6c4c9a20,\n\t0x27cfd: 0x6cfe6220, 0x27cfe: 0x6ce4ca20,\n\t// Block 0x9f4, offset 0x27d00\n\t0x27d05: 0x6cff4020,\n\t0x27d08: 0x6d2db620, 0x27d09: 0x6c258820,\n\t0x27d14: 0x6c7ffc20,\n\t0x27d18: 0x6cd02e20, 0x27d1a: 0x6c830e20, 0x27d1b: 0x6c879820,\n\t0x27d1d: 0x6c14e620, 0x27d1e: 0x6ca8d020, 0x27d1f: 0x6c947620,\n\t0x27d21: 0x6ce63a20, 0x27d22: 0x6c5ba620,\n\t0x27d27: 0x6c458020,\n\t0x27d30: 0x6cb77220, 0x27d31: 0x6d20fa20, 0x27d33: 0x6d02d220,\n\t0x27d38: 0x6d26ae20, 0x27d39: 0x6c034e20, 0x27d3a: 0x6c276a20, 0x27d3b: 0x6c5eba20,\n\t0x27d3c: 0x6d089220, 0x27d3f: 0x6c743c20,\n\t// Block 0x9f5, offset 0x27d40\n\t0x27d40: 0x6ca99420,\n\t0x27d48: 0x6c325220, 0x27d49: 0x6c602620,\n\t0x27d50: 0x6cabc820, 0x27d51: 0x6c45f020, 0x27d52: 0x6c07ba20,\n\t0x27d54: 0x6c794220, 0x27d55: 0x6d105020, 0x27d56: 0x6c8f0820, 0x27d57: 0x6ca5ee20,\n\t0x27d58: 0x6d2cca20, 0x27d59: 0x6d1b5c20, 0x27d5a: 0x6ca72820, 0x27d5b: 0x6cad9020,\n\t0x27d5d: 0x6c458e20, 0x27d5e: 0x6c109e20, 0x27d5f: 0x6c512e20,\n\t0x27d60: 0x6cc71220, 0x27d61: 0x6c4b5020,\n\t0x27d65: 0x6c09b620, 0x27d66: 0x6cf63020, 0x27d67: 0x6c712a20,\n\t0x27d68: 0x6c5cf420, 0x27d69: 0x6c09e420, 0x27d6b: 0x6ce56420,\n\t0x27d6c: 0x6d332820, 0x27d6f: 0x6d181020,\n\t0x27d70: 0x6c22d220, 0x27d72: 0x6c0e2620,\n\t0x27d77: 0x6c459c20,\n\t0x27d7a: 0x6c381a20,\n\t0x27d7d: 0x6d0fce20, 0x27d7e: 0x6d064820,\n\t// Block 0x9f6, offset 0x27d80\n\t0x27d81: 0x6c52b620,\n\t0x27d84: 0x6d2a0a20, 0x27d85: 0x6c148420, 0x27d86: 0x6c537620,\n\t0x27d88: 0x6ce4b820,\n\t0x27d8c: 0x6d340a20, 0x27d8d: 0x6d039220, 0x27d8e: 0x6d062220,\n\t0x27d91: 0x6d325820,\n\t0x27d94: 0x6ced4020,\n\t0x27d98: 0x6c75dc20,\n\t0x27d9d: 0x6cf30c20,\n\t0x27da0: 0x6c92c220, 0x27da2: 0x6d32f220, 0x27da3: 0x6cc71a20,\n\t0x27da4: 0x6c1a3c20, 0x27da5: 0x6c3ee620, 0x27da7: 0x6c369820,\n\t0x27da8: 0x6ce1e620, 0x27da9: 0x6ce12e20, 0x27dab: 0x6c730020,\n\t0x27dac: 0x6c17c020, 0x27dad: 0x6cde9620, 0x27dae: 0x6c2c0420,\n\t0x27db0: 0x6d3fc020, 0x27db3: 0x6c794c20,\n\t0x27db4: 0x6ce99820, 0x27db6: 0x6c794e20,\n\t// Block 0x9f7, offset 0x27dc0\n\t0x27dc5: 0x6cc71c20, 0x27dc6: 0x6d276420, 0x27dc7: 0x6c517a20,\n\t0x27dc8: 0x6d400820, 0x27dc9: 0x6c235e20, 0x27dca: 0x6cbfcc20,\n\t0x27dce: 0x6ca2b420, 0x27dcf: 0x6c346420,\n\t0x27dd0: 0x6d065a20, 0x27dd1: 0x6c795620, 0x27dd2: 0x6cfd1220,\n\t0x27ddb: 0x6c31ba20,\n\t0x27ddc: 0x6c76ee20, 0x27dde: 0x6d1bf020,\n\t0x27de2: 0x6d3e9620,\n\t0x27de7: 0x6c5a0620,\n\t0x27de9: 0x6caed020, 0x27deb: 0x6c86ae20,\n\t0x27ded: 0x6c0f8220, 0x27dee: 0x6c444420, 0x27def: 0x6c716620,\n\t0x27df0: 0x6c783420, 0x27df2: 0x6c55ce20, 0x27df3: 0x6d115820,\n\t0x27df4: 0x6ce14820, 0x27df6: 0x6cbf7020, 0x27df7: 0x6cc72820,\n\t0x27df8: 0x6c8f1e20, 0x27df9: 0x6c5c5e20, 0x27dfa: 0x6c5f6220,\n\t// Block 0x9f8, offset 0x27e00\n\t0x27e09: 0x6d371a20, 0x27e0b: 0x6ce15220,\n\t0x27e0c: 0x6d355c20, 0x27e0d: 0x6c775e20,\n\t0x27e14: 0x6d107220, 0x27e16: 0x6ce18420, 0x27e17: 0x6c52d820,\n\t0x27e1b: 0x6c897820,\n\t0x27e1d: 0x6c12a020,\n\t0x27e21: 0x6ca3aa20, 0x27e22: 0x6d400e20,\n\t0x27e24: 0x6c2af420, 0x27e26: 0x6c68a220, 0x27e27: 0x6caeec20,\n\t0x27e29: 0x6c49fa20, 0x27e2a: 0x6c377420, 0x27e2b: 0x6c670620,\n\t0x27e2c: 0x6c69d220, 0x27e2d: 0x6caaca20, 0x27e2e: 0x6d2a6220,\n\t0x27e33: 0x6caef620,\n\t0x27e34: 0x6c292020, 0x27e36: 0x6cc1f620, 0x27e37: 0x6c889620,\n\t0x27e38: 0x6ca2be20, 0x27e39: 0x6c805220,\n\t0x27e3e: 0x6c3baa20,\n\t// Block 0x9f9, offset 0x27e40\n\t0x27e42: 0x6c5d0e20,\n\t0x27e46: 0x6c7bb420,\n\t0x27e48: 0x6d1b2a20, 0x27e49: 0x6cd69c20, 0x27e4a: 0x6c671e20,\n\t0x27e52: 0x6c964420,\n\t0x27e54: 0x6c933c20,\n\t0x27e5a: 0x6c446a20, 0x27e5b: 0x6cc51220,\n\t0x27e5e: 0x6cb22e20,\n\t0x27e60: 0x6c900a20,\n\t0x27e64: 0x6d320c20, 0x27e65: 0x6cfd4c20,\n\t0x27e68: 0x6c8c8e20, 0x27e69: 0x6c88aa20, 0x27e6a: 0x6ccd2420, 0x27e6b: 0x6c0fd420,\n\t0x27e6c: 0x6c87a820,\n\t0x27e73: 0x6d013a20,\n\t0x27e74: 0x6c446e20, 0x27e75: 0x6c9fe020, 0x27e76: 0x6c88ae20,\n\t0x27e79: 0x6c753c20, 0x27e7a: 0x6d38c820,\n\t0x27e7f: 0x6c784820,\n\t// Block 0x9fa, offset 0x27e80\n\t0x27e81: 0x6c2f2a20, 0x27e83: 0x6d30ce20,\n\t0x27e85: 0x6cd4ac20, 0x27e86: 0x6c5e9020, 0x27e87: 0x6c8f7c20,\n\t0x27e88: 0x6c49ea20, 0x27e89: 0x6d2a5620, 0x27e8a: 0x6cfd4420, 0x27e8b: 0x6cb8ae20,\n\t0x27e8d: 0x6ccfd820,\n\t0x27e90: 0x6d1ae020, 0x27e91: 0x6c6be420,\n\t0x27e94: 0x6ccffe20, 0x27e95: 0x6cd00020, 0x27e96: 0x6cc95220,\n\t0x27e9b: 0x6cf8c020,\n\t0x27ea1: 0x6c7aac20, 0x27ea3: 0x6cc1c620,\n\t0x27ea5: 0x6c443e20, 0x27ea6: 0x6c050820,\n\t0x27ea8: 0x6c0a7c20, 0x27ea9: 0x6cb92e20,\n\t0x27eb0: 0x6c0d6420, 0x27eb1: 0x6c050a20, 0x27eb3: 0x6d42ae20,\n\t0x27eb4: 0x6cb0d020, 0x27eb6: 0x6c5e3620,\n\t0x27ebe: 0x6c051020,\n\t// Block 0x9fb, offset 0x27ec0\n\t0x27eca: 0x6ca9d820,\n\t0x27ecc: 0x6c18fc20, 0x27ece: 0x6cae4e20,\n\t0x27ed1: 0x6c3f2e20, 0x27ed2: 0x6ce88220,\n\t0x27edc: 0x6cb04e20, 0x27edd: 0x6cb36420,\n\t0x27ee0: 0x6c1b7420, 0x27ee3: 0x6d093e20,\n\t0x27ee4: 0x6cb74020, 0x27ee5: 0x6cf4b220,\n\t0x27ee8: 0x6d357e20, 0x27ee9: 0x6c2c1c20, 0x27eea: 0x6c22fe20, 0x27eeb: 0x6d1ef420,\n\t0x27ef9: 0x6c230020,\n\t0x27efc: 0x6c2c1e20, 0x27efd: 0x6d3d2620, 0x27eff: 0x6d408020,\n\t// Block 0x9fc, offset 0x27f00\n\t0x27f00: 0x6c238c20, 0x27f03: 0x6caca820,\n\t0x27f04: 0x6d0d4c20, 0x27f05: 0x6cb74e20, 0x27f06: 0x6cc6fa20, 0x27f07: 0x6c63a420,\n\t0x27f09: 0x6d359220, 0x27f0a: 0x6cc00e20, 0x27f0b: 0x6d268a20,\n\t0x27f0d: 0x6cd32420,\n\t0x27f11: 0x6c4fc020,\n\t0x27f19: 0x6ceab220,\n\t0x27f1c: 0x6c0cde20, 0x27f1e: 0x6c770020,\n\t0x27f22: 0x6c21aa20,\n\t0x27f24: 0x6c229020, 0x27f26: 0x6d1ad020, 0x27f27: 0x6cd34c20,\n\t0x27f28: 0x6ca3b820, 0x27f29: 0x6cc85820, 0x27f2b: 0x6d0f9e20,\n\t0x27f2c: 0x6c1a9820, 0x27f2e: 0x6c21f820,\n\t0x27f31: 0x6c457620, 0x27f32: 0x6c9c4220,\n\t0x27f34: 0x6c612e20,\n\t0x27f3c: 0x6c44b220, 0x27f3d: 0x6d2a6c20,\n\t// Block 0x9fd, offset 0x27f40\n\t0x27f41: 0x6c081420,\n\t0x27f47: 0x6d030c20,\n\t0x27f48: 0x6c7df020, 0x27f4a: 0x6c2e8e20,\n\t0x27f4d: 0x6ce66a20,\n\t0x27f5a: 0x6cd71c20,\n\t0x27f5e: 0x6c275620,\n\t0x27f66: 0x6c851020,\n\t0x27f68: 0x6d1e2820, 0x27f69: 0x6c684220,\n\t0x27f6c: 0x6cde0420, 0x27f6d: 0x6cc24620, 0x27f6e: 0x6d1a6020, 0x27f6f: 0x6d24e820,\n\t0x27f70: 0x6c6abc20, 0x27f72: 0x6cb8da20, 0x27f73: 0x6d10a020,\n\t0x27f74: 0x6d0ba620, 0x27f77: 0x6cbe4a20,\n\t0x27f7f: 0x6cadd420,\n\t// Block 0x9fe, offset 0x27f80\n\t0x27f97: 0x6c635820,\n\t0x27f99: 0x6ce82c20, 0x27f9b: 0x6ce2ec20,\n\t0x27fa1: 0x6c33f620, 0x27fa2: 0x6c15ba20, 0x27fa3: 0x6c636820,\n\t0x27fa4: 0x6c1c2820, 0x27fa5: 0x6c64aa20, 0x27fa6: 0x6cd5e020,\n\t0x27faf: 0x6cde5a20,\n\t// Block 0x9ff, offset 0x27fc0\n\t0x27fd5: 0x6d33ea20, 0x27fd7: 0x6d256e20,\n\t0x27fda: 0x6c54d420,\n\t0x27fdc: 0x6c8b1220,\n\t0x27fe0: 0x6d2ad420, 0x27fe2: 0x6c1f5e20,\n\t0x27fe6: 0x6cc0ba20, 0x27fe7: 0x6c07fa20,\n\t0x27ff9: 0x6c588620, 0x27ffa: 0x6c7aca20, 0x27ffb: 0x6cd10c20,\n\t0x27ffd: 0x6c6afe20, 0x27fff: 0x6cee2c20,\n\t// Block 0xa00, offset 0x28000\n\t0x28003: 0x6c54de20,\n\t0x2800a: 0x6d2ae620, 0x2800b: 0x6d297020,\n\t0x2800c: 0x6d106420, 0x2800e: 0x6c1bba20, 0x2800f: 0x6c701220,\n\t0x2801a: 0x6c89fe20, 0x2801b: 0x6d209620,\n\t0x28020: 0x6c0b4a20, 0x28022: 0x6c7bc820,\n\t0x2802c: 0x6c1e4a20, 0x2802d: 0x6d0b3620, 0x2802e: 0x6d3d8620,\n\t0x28030: 0x6cbcda20, 0x28031: 0x6cfcf020, 0x28033: 0x6d250620,\n\t0x28034: 0x6cf46e20, 0x28035: 0x6c693620, 0x28036: 0x6cfe5020, 0x28037: 0x6ccc7420,\n\t0x28039: 0x6d36cc20,\n\t0x2803c: 0x6c1d5a20, 0x2803e: 0x6c0b0620, 0x2803f: 0x6ceeb820,\n\t// Block 0xa01, offset 0x28040\n\t0x28053: 0x6c2a3220,\n\t0x2805d: 0x6d23d820, 0x2805e: 0x6ce9b820,\n\t0x28061: 0x6c17c220,\n\t0x28065: 0x6c5c4420, 0x28066: 0x6cba2620,\n\t0x28068: 0x6cf01a20,\n\t0x28070: 0x6d1f7420,\n\t0x2807c: 0x6c2ca020, 0x2807e: 0x6c26f620,\n\t// Block 0xa02, offset 0x28080\n\t0x28081: 0x6d1f7620, 0x28082: 0x6c702620, 0x28083: 0x6ce9bc20,\n\t0x28084: 0x6d297620, 0x28087: 0x6c5c6020,\n\t0x28089: 0x6ccc8220,\n\t0x2808c: 0x6c5e1020,\n\t0x28094: 0x6d115a20,\n\t0x28099: 0x6cfd1e20,\n\t0x2809e: 0x6cfd2020,\n\t0x280ac: 0x6c2caa20, 0x280ae: 0x6c703220,\n\t0x280b2: 0x6c5c7420,\n\t0x280b4: 0x6c77cc20, 0x280b5: 0x6d1f8420,\n\t0x280b8: 0x6c870e20,\n\t0x280bc: 0x6c201420, 0x280be: 0x6c1b6820,\n\t// Block 0xa03, offset 0x280c0\n\t0x280c0: 0x6c5e3820, 0x280c2: 0x6d1f9020,\n\t0x280c4: 0x6d270e20,\n\t0x280ce: 0x6cded820, 0x280cf: 0x6d29b420,\n\t0x280d3: 0x6ca8ac20,\n\t0x280d4: 0x6d3b4a20,\n\t0x280e1: 0x6cfc6220,\n\t0x280e9: 0x6cd22a20, 0x280eb: 0x6c79ca20,\n\t0x280ec: 0x6cb6c620, 0x280ed: 0x6ce91420, 0x280ee: 0x6c387e20, 0x280ef: 0x6c258e20,\n\t0x280f2: 0x6cea3820, 0x280f3: 0x6c137420,\n\t0x280f4: 0x6c110020, 0x280f5: 0x6cfe1420, 0x280f6: 0x6cadfc20, 0x280f7: 0x6c6e0220,\n\t0x280f8: 0x6cb56a20, 0x280f9: 0x6cceae20, 0x280fa: 0x6ca97420, 0x280fb: 0x6ca30420,\n\t0x280fd: 0x6cbd5020,\n\t// Block 0xa04, offset 0x28100\n\t0x2810d: 0x6c090c20,\n\t0x28113: 0x6c092420,\n\t0x28114: 0x6c05a220, 0x28115: 0x6c0b7620, 0x28116: 0x6d3e0220, 0x28117: 0x6ca30a20,\n\t0x28118: 0x6cf07020, 0x28119: 0x6c4fbe20,\n\t0x28121: 0x6c6c8220, 0x28123: 0x6d333c20,\n\t0x28127: 0x6cbc8220,\n\t0x2812e: 0x6c501620, 0x2812f: 0x6ce71e20,\n\t0x28130: 0x6d2a4020, 0x28131: 0x6cd15420, 0x28132: 0x6c25a420, 0x28133: 0x6c597e20,\n\t0x28134: 0x6cc78e20, 0x28135: 0x6d292e20, 0x28136: 0x6ca6f820,\n\t0x2813e: 0x6cfa8620,\n\t// Block 0xa05, offset 0x28140\n\t0x28148: 0x6cc2bc20, 0x28149: 0x6c619a20, 0x2814a: 0x6d1a3620, 0x2814b: 0x6c850620,\n\t0x2814c: 0x6c984620, 0x2814d: 0x6cceca20, 0x2814e: 0x6c4e8e20, 0x2814f: 0x6c260e20,\n\t0x28150: 0x6c759c20, 0x28151: 0x6c61bc20, 0x28152: 0x6c107820, 0x28153: 0x6c905420,\n\t0x28154: 0x6c3d2220, 0x28155: 0x6d1f0e20, 0x28156: 0x6c7b1c20,\n\t0x2815c: 0x6cfe2220,\n\t0x28161: 0x6d279420, 0x28163: 0x6cbd5e20,\n\t0x28164: 0x6c5b2c20, 0x28165: 0x6cb42e20,\n\t0x2816b: 0x6c83b220,\n\t0x2816c: 0x6cadcc20, 0x2816d: 0x6cd4c620, 0x2816e: 0x6c707620, 0x2816f: 0x6d14e020,\n\t0x28170: 0x6d32a820, 0x28171: 0x6c1d0e20, 0x28173: 0x6cf77620,\n\t0x28175: 0x6c561a20, 0x28176: 0x6cc74420,\n\t// Block 0xa06, offset 0x28180\n\t0x2818c: 0x6c590c20, 0x2818d: 0x6cbc3c20, 0x2818e: 0x6d33d020, 0x2818f: 0x6d1c6c20,\n\t0x28190: 0x6cf7e220, 0x28191: 0x6cbb7620, 0x28192: 0x6c61fa20, 0x28193: 0x6d32bc20,\n\t0x28194: 0x6c59b420, 0x28196: 0x6d210a20, 0x28197: 0x6d405a20,\n\t0x28198: 0x6c99f420,\n\t0x2819c: 0x6cd13220,\n\t0x281a9: 0x6cc2e620,\n\t0x281b0: 0x6c676020, 0x281b1: 0x6c512020, 0x281b3: 0x6ce75220,\n\t0x281b4: 0x6c513020, 0x281b5: 0x6cf15220, 0x281b6: 0x6d17cc20, 0x281b7: 0x6cacfe20,\n\t0x281ba: 0x6cf22620, 0x281bb: 0x6cb99820,\n\t0x281bc: 0x6c862020, 0x281bd: 0x6d150a20, 0x281be: 0x6c20ac20, 0x281bf: 0x6d06e820,\n\t// Block 0xa07, offset 0x281c0\n\t0x281c0: 0x6cefd020,\n\t0x281c6: 0x6c439420,\n\t0x281c8: 0x6d226220, 0x281cb: 0x6d2d4420,\n\t0x281cc: 0x6c41a220, 0x281cd: 0x6cb8f620, 0x281ce: 0x6c773220, 0x281cf: 0x6c840220,\n\t0x281d0: 0x6cd00220, 0x281d1: 0x6c499220, 0x281d3: 0x6cb17c20,\n\t0x281d6: 0x6c840420,\n\t0x281d8: 0x6c562620, 0x281db: 0x6ce8ce20,\n\t0x281dc: 0x6cd75620, 0x281de: 0x6c56aa20, 0x281df: 0x6c840620,\n\t0x281e2: 0x6c910a20,\n\t0x281e6: 0x6c297020,\n\t0x281e8: 0x6d42a420, 0x281e9: 0x6cccf620, 0x281eb: 0x6ccf6e20,\n\t0x281ed: 0x6c3cb620, 0x281ee: 0x6c726e20, 0x281ef: 0x6ce76e20,\n\t0x281f0: 0x6c691a20, 0x281f1: 0x6cbbe620, 0x281f2: 0x6c42d420, 0x281f3: 0x6d3e7020,\n\t0x281f4: 0x6c59e620, 0x281f5: 0x6ccd0620,\n\t0x281f8: 0x6cdff620,\n\t// Block 0xa08, offset 0x28200\n\t0x2820c: 0x6ceaca20, 0x2820e: 0x6c8e2220,\n\t0x28210: 0x6c1a2e20, 0x28211: 0x6cf27020, 0x28212: 0x6d425020, 0x28213: 0x6d23da20,\n\t0x28215: 0x6d3a2220, 0x28217: 0x6cc45420,\n\t0x28218: 0x6cf80a20, 0x28219: 0x6cc1b620, 0x2821b: 0x6c442820,\n\t0x28222: 0x6cb52a20, 0x28223: 0x6d05e020,\n\t0x28228: 0x6c415220, 0x28229: 0x6cc3f820, 0x2822a: 0x6c1ddc20, 0x2822b: 0x6c9b4e20,\n\t0x28232: 0x6cd02020, 0x28233: 0x6cc1c820,\n\t0x28236: 0x6cbbb420, 0x28237: 0x6c11b420,\n\t0x2823a: 0x6c86b020,\n\t0x2823c: 0x6ceda220, 0x2823d: 0x6c826620, 0x2823e: 0x6d03a820, 0x2823f: 0x6c80ea20,\n\t// Block 0xa09, offset 0x28240\n\t0x28242: 0x6cd3ec20, 0x28243: 0x6d330020,\n\t0x28244: 0x6c38ce20,\n\t0x2824a: 0x6d371c20,\n\t0x2824f: 0x6d1aa420,\n\t0x28251: 0x6c86de20,\n\t0x28256: 0x6ca08820, 0x28257: 0x6cf04020,\n\t0x28259: 0x6d1c1020, 0x2825a: 0x6cc4e420,\n\t0x28260: 0x6cc2a820,\n\t0x28265: 0x6c95ce20,\n\t0x28272: 0x6c275820,\n\t0x28274: 0x6d1b4e20, 0x28275: 0x6c08da20, 0x28276: 0x6c438820,\n\t0x28278: 0x6cf20a20, 0x28279: 0x6d0d7620, 0x2827a: 0x6c9e1e20,\n\t0x2827c: 0x6c42a020, 0x2827d: 0x6cc05620, 0x2827e: 0x6d33da20,\n\t// Block 0xa0a, offset 0x28280\n\t0x2828b: 0x6c471c20,\n\t0x2828c: 0x6ce75420, 0x2828e: 0x6c8d1420, 0x2828f: 0x6ce33620,\n\t0x28290: 0x6c224c20, 0x28291: 0x6d150c20, 0x28292: 0x6c395a20, 0x28293: 0x6cb31220,\n\t0x28294: 0x6c09b820, 0x28296: 0x6c064e20,\n\t0x2829f: 0x6cae7620,\n\t0x282a1: 0x6cdb8420,\n\t0x282a4: 0x6cd92820, 0x282a5: 0x6cef1a20, 0x282a6: 0x6cff9220,\n\t0x282ac: 0x6c504c20, 0x282ad: 0x6d0dac20,\n\t0x282b6: 0x6d152620, 0x282b7: 0x6d2a1e20,\n\t0x282b8: 0x6d1d0020, 0x282b9: 0x6ca43220,\n\t0x282bf: 0x6d289620,\n\t// Block 0xa0b, offset 0x282c0\n\t0x282c1: 0x6ce50c20, 0x282c2: 0x6cf68a20, 0x282c3: 0x6c69b420,\n\t0x282c4: 0x6d0cbc20,\n\t0x282cc: 0x6ca55e20, 0x282cd: 0x6ce07020, 0x282ce: 0x6d0eaa20, 0x282cf: 0x6ce51a20,\n\t0x282d0: 0x6d36ce20, 0x282d1: 0x6c1d7a20, 0x282d2: 0x6ce23a20,\n\t0x282d7: 0x6d2cdc20,\n\t0x282de: 0x6c9e3a20,\n\t0x282e1: 0x6cf47020, 0x282e2: 0x6d1b0220, 0x282e3: 0x6d0eac20,\n\t0x282e4: 0x6c81ba20,\n\t0x282e9: 0x6cb31e20, 0x282eb: 0x6c5d4620,\n\t0x282ec: 0x6c4d4620, 0x282ed: 0x6ca21a20, 0x282ee: 0x6c236020,\n\t0x282f1: 0x6c7aae20, 0x282f2: 0x6c1d8420,\n\t0x282f4: 0x6d1ff020,\n\t0x282f8: 0x6d3da020, 0x282fb: 0x6cd9e420,\n\t// Block 0xa0c, offset 0x28300\n\t0x28302: 0x6d1b7e20,\n\t0x28305: 0x6d41da20, 0x28306: 0x6cca7420, 0x28307: 0x6c8f4a20,\n\t0x28308: 0x6c4f2020, 0x28309: 0x6cf0ec20, 0x2830a: 0x6c9b6020, 0x2830b: 0x6c55d020,\n\t0x2830c: 0x6c86b220, 0x2830e: 0x6c9d9c20,\n\t0x28310: 0x6c054020, 0x28311: 0x6c65f020,\n\t0x2831c: 0x6cc40620,\n\t0x28320: 0x6c9b6220, 0x28322: 0x6ca21c20, 0x28323: 0x6c53ac20,\n\t0x28324: 0x6c56d820, 0x28325: 0x6c9c8e20, 0x28326: 0x6ccca820,\n\t0x28329: 0x6cce2620, 0x2832a: 0x6c17c620,\n\t0x2832c: 0x6d3dc220, 0x2832e: 0x6d342220, 0x2832f: 0x6ca77020,\n\t0x28335: 0x6c62b220,\n\t0x28338: 0x6c784020, 0x28339: 0x6d330620,\n\t0x2833f: 0x6c281420,\n\t// Block 0xa0d, offset 0x28340\n\t0x28340: 0x6c8a8220, 0x28341: 0x6d2e3020, 0x28342: 0x6c460620, 0x28343: 0x6c818c20,\n\t0x28344: 0x6c571e20, 0x28345: 0x6c1fd220, 0x28347: 0x6c660c20,\n\t0x28348: 0x6c7d3220,\n\t0x2834d: 0x6ccf0220,\n\t0x28354: 0x6c191c20, 0x28355: 0x6ce08820, 0x28357: 0x6c55f820,\n\t0x28358: 0x6c9b9e20, 0x28359: 0x6cada420, 0x2835a: 0x6d2e3820, 0x2835b: 0x6c16d620,\n\t0x2835d: 0x6c41f820,\n\t0x28360: 0x6d193a20, 0x28362: 0x6cdcb620,\n\t0x28366: 0x6d076420, 0x28367: 0x6c62de20,\n\t0x28368: 0x6c808e20,\n\t0x2836c: 0x6d159620, 0x2836f: 0x6c9dae20,\n\t0x28371: 0x6c9f1420,\n\t0x28375: 0x6c24a620,\n\t0x28378: 0x6c805a20, 0x2837b: 0x6d0c4e20,\n\t0x2837e: 0x6c9ccc20,\n\t// Block 0xa0e, offset 0x28380\n\t0x28382: 0x6d1e6820, 0x28383: 0x6c125420,\n\t0x28384: 0x6c664420, 0x28387: 0x6cda0a20,\n\t0x2838e: 0x6d0d2a20,\n\t0x28391: 0x6c736020,\n\t0x28395: 0x6c369c20,\n\t0x28398: 0x6c3bf220, 0x2839a: 0x6c3bf620,\n\t0x283a1: 0x6c4a2a20, 0x283a2: 0x6c96fc20,\n\t0x283a4: 0x6c8ab820,\n\t0x283a9: 0x6c1cca20, 0x283ab: 0x6c840820,\n\t0x283b1: 0x6d349c20,\n\t0x283b4: 0x6d024820, 0x283b7: 0x6c1dfc20,\n\t0x283b9: 0x6c60fc20,\n\t0x283bd: 0x6caf5c20,\n\t// Block 0xa0f, offset 0x283c0\n\t0x283c2: 0x6c6abe20,\n\t0x283c7: 0x6d38e420,\n\t0x283cd: 0x6d046c20,\n\t0x283d1: 0x6c7bfc20,\n\t0x283d9: 0x6c6e2220, 0x283db: 0x6c56a020,\n\t0x283de: 0x6cb99c20,\n\t0x283e3: 0x6c133220,\n\t0x283e6: 0x6cb60420, 0x283e7: 0x6ced3220,\n\t0x283e8: 0x6c98ec20, 0x283ea: 0x6c30f020,\n\t0x283f4: 0x6c79d220, 0x283f6: 0x6c277c20,\n\t0x283f8: 0x6ca4b420, 0x283fa: 0x6c536a20,\n\t// Block 0xa10, offset 0x28400\n\t0x28402: 0x6c7f4020, 0x28403: 0x6c34aa20,\n\t0x28404: 0x6cb91020, 0x28406: 0x6d1a8820,\n\t0x28416: 0x6c911220, 0x28417: 0x6c5ae020,\n\t0x2841b: 0x6c402e20,\n\t0x2841c: 0x6c98f420, 0x2841e: 0x6d389a20,\n\t0x28421: 0x6d1dfa20,\n\t0x2842d: 0x6c817020, 0x2842e: 0x6c609c20, 0x2842f: 0x6d186a20,\n\t0x28430: 0x6c8e8c20, 0x28431: 0x6c235220, 0x28433: 0x6ca43c20,\n\t// Block 0xa11, offset 0x28440\n\t0x28450: 0x6cea2620, 0x28451: 0x6cfe5220,\n\t0x28455: 0x6c0bba20, 0x28456: 0x6c207820, 0x28457: 0x6cf52020,\n\t0x28459: 0x6c70c620,\n\t0x28465: 0x6d005220, 0x28466: 0x6caf9220, 0x28467: 0x6d3da220,\n\t0x28468: 0x6cc8e420, 0x2846a: 0x6ccafa20, 0x2846b: 0x6d3f6220,\n\t0x2846d: 0x6d336220,\n\t0x28470: 0x6d40da20, 0x28471: 0x6cc14220, 0x28473: 0x6c1c7a20,\n\t0x28475: 0x6d36f020,\n\t// Block 0xa12, offset 0x28480\n\t0x28497: 0x6cc37a20,\n\t0x28498: 0x6cb92020, 0x28499: 0x6d0afc20, 0x2849a: 0x6c17c420, 0x2849b: 0x6c517c20,\n\t0x2849c: 0x6cc80420,\n\t0x284a0: 0x6c70cc20, 0x284a1: 0x6cf52820,\n\t0x284ac: 0x6c1c7c20, 0x284ad: 0x6c7c0420, 0x284af: 0x6c240020,\n\t0x284b0: 0x6cc89220, 0x284b1: 0x6c7e1e20, 0x284b2: 0x6c1b5e20, 0x284b3: 0x6d40e420,\n\t0x284b4: 0x6c688620, 0x284b6: 0x6d21c420, 0x284b7: 0x6ce8fe20,\n\t0x284b8: 0x6c9b6420, 0x284b9: 0x6c266c20, 0x284ba: 0x6cd7a020,\n\t// Block 0xa13, offset 0x284c0\n\t0x284e5: 0x6c3c6c20, 0x284e6: 0x6c469020, 0x284e7: 0x6c301c20,\n\t0x284e8: 0x6c142220, 0x284e9: 0x6c99be20, 0x284ea: 0x6c15e820, 0x284eb: 0x6c0b1020,\n\t0x284ec: 0x6d241e20, 0x284ef: 0x6cecea20,\n\t0x284f0: 0x6d40e620, 0x284f2: 0x6d3ea420,\n\t0x284f4: 0x6c1fec20, 0x284f5: 0x6ced5620, 0x284f6: 0x6cebf420,\n\t0x284f8: 0x6cc2a620, 0x284fb: 0x6ced5820,\n\t0x284fd: 0x6cfa5020,\n\t// Block 0xa14, offset 0x28500\n\t0x28504: 0x6d1d5620, 0x28505: 0x6c66e820,\n\t0x28508: 0x6cf04220, 0x28509: 0x6ce39a20, 0x2850a: 0x6ccaca20,\n\t0x2850c: 0x6cb67a20, 0x2850d: 0x6ccc2020, 0x2850e: 0x6d244220, 0x2850f: 0x6c60e220,\n\t0x28510: 0x6c314420, 0x28511: 0x6c15f620, 0x28512: 0x6ce96c20,\n\t0x28515: 0x6c8ec420, 0x28517: 0x6d3cba20,\n\t0x28533: 0x6cc89420,\n\t0x28536: 0x6d0eda20, 0x28537: 0x6c47ea20,\n\t0x28539: 0x6c86e220, 0x2853a: 0x6c13ba20,\n\t0x2853e: 0x6c2cac20,\n\t// Block 0xa15, offset 0x28540\n\t0x28540: 0x6d2e2a20, 0x28541: 0x6cb32220,\n\t0x28552: 0x6c912620,\n\t0x28554: 0x6d374c20,\n\t// Block 0xa16, offset 0x28580\n\t0x28581: 0x6c888a20,\n\t0x28585: 0x6c95ca20,\n\t0x2858d: 0x6c352420,\n\t0x28590: 0x6c750820, 0x28591: 0x6c873420, 0x28592: 0x6c7ff220,\n\t0x28594: 0x6cc89620, 0x28595: 0x6c474220, 0x28596: 0x6c155c20, 0x28597: 0x6d060620,\n\t0x2859a: 0x6d356420,\n\t// Block 0xa17, offset 0x285c0\n\t0x285c1: 0x6d097c20, 0x285c2: 0x6c0e9c20, 0x285c3: 0x6c19aa20,\n\t0x285c5: 0x6d3b4220, 0x285c6: 0x6c522a20,\n\t0x285c9: 0x6c04ac20,\n\t0x285d3: 0x6c2f0820,\n\t0x285d6: 0x6d2e3a20, 0x285d7: 0x6c4ca620,\n\t0x285da: 0x6c0c5420, 0x285db: 0x6c7ec620,\n\t0x285fa: 0x6c6c7620,\n\t// Block 0xa18, offset 0x28600\n\t0x28602: 0x6c411c20,\n\t0x28612: 0x6c9c1e20,\n\t0x28614: 0x6d247e20,\n\t0x2862a: 0x6cf82a20,\n\t0x2862c: 0x6cb17820, 0x2862d: 0x6cd85020,\n\t0x28634: 0x6c2b0020,\n\t0x28638: 0x6c219e20, 0x28639: 0x6c2bbe20, 0x2863a: 0x6c5fa820, 0x2863b: 0x6c157620,\n\t0x2863f: 0x6d3dea20,\n\t// Block 0xa19, offset 0x28640\n\t0x28653: 0x6c115220,\n\t0x2865e: 0x6c681620,\n\t0x28672: 0x6ce80220,\n\t0x2867d: 0x6c84e820,\n\t// Block 0xa1a, offset 0x28680\n\t0x28682: 0x6cba9020,\n\t0x28686: 0x6c21a020,\n\t0x2868f: 0x6cdef820,\n\t0x28691: 0x6c2e5220, 0x28693: 0x6c664820,\n\t0x2869b: 0x6d356820,\n\t0x2869c: 0x6c753220, 0x2869e: 0x6ca0a420,\n\t0x286a0: 0x6c959620,\n\t0x286a6: 0x6c062420,\n\t0x286ad: 0x6d415e20,\n\t0x286b5: 0x6d300820,\n\t0x286b8: 0x6d220c20, 0x286bb: 0x6c062a20,\n\t0x286be: 0x6c969420, 0x286bf: 0x6cf85020,\n\t// Block 0xa1b, offset 0x286c0\n\t0x286c0: 0x6c567c20, 0x286c1: 0x6d171220, 0x286c2: 0x6c355020, 0x286c3: 0x6c470220,\n\t0x286c4: 0x6ce89e20, 0x286c5: 0x6d314a20, 0x286c7: 0x6cc07220,\n\t0x286c8: 0x6cdaba20, 0x286c9: 0x6c89c620, 0x286ca: 0x6cc11a20, 0x286cb: 0x6c8d2620,\n\t0x286cc: 0x6c499420, 0x286cd: 0x6c80e420, 0x286ce: 0x6ce7dc20, 0x286cf: 0x6c266620,\n\t0x286d0: 0x6c911e20, 0x286d1: 0x6c5a1220, 0x286d2: 0x6cd47e20, 0x286d3: 0x6c688820,\n\t0x286d4: 0x6d41f620, 0x286d5: 0x6c411a20, 0x286d6: 0x6cef5220,\n\t0x286d9: 0x6c7d4e20, 0x286da: 0x6c32bc20, 0x286db: 0x6cd92020,\n\t0x286dc: 0x6cb5e020, 0x286dd: 0x6d101a20,\n\t0x286e1: 0x6cd37820, 0x286e3: 0x6c411420,\n\t0x286e6: 0x6c2a1a20, 0x286e7: 0x6d11b220,\n\t0x286eb: 0x6cb99e20,\n\t0x286ed: 0x6cce7220, 0x286ee: 0x6c16ae20, 0x286ef: 0x6ca05020,\n\t0x286f1: 0x6ca05a20,\n\t0x286f5: 0x6ca50620,\n\t0x286f8: 0x6c232220, 0x286fa: 0x6ca84e20, 0x286fb: 0x6d2f6a20,\n\t0x286fc: 0x6c133420, 0x286ff: 0x6cd92a20,\n\t// Block 0xa1c, offset 0x28700\n\t0x28700: 0x6ca85820, 0x28701: 0x6c22dc20,\n\t0x28704: 0x6c75de20, 0x28706: 0x6cce7e20,\n\t0x28708: 0x6d3a2420, 0x28709: 0x6c34b020, 0x2870a: 0x6c01ce20, 0x2870b: 0x6c088c20,\n\t0x2870e: 0x6ce41820,\n\t0x28710: 0x6cb06a20, 0x28711: 0x6cf9ee20, 0x28712: 0x6cc09420, 0x28713: 0x6cd14e20,\n\t0x28717: 0x6ce0d820,\n\t0x2871b: 0x6c978420,\n\t0x2871c: 0x6cb10420, 0x2871e: 0x6ce43420, 0x2871f: 0x6cc6cc20,\n\t0x28727: 0x6c237220,\n\t0x2872a: 0x6c5f7a20, 0x2872b: 0x6c3cc020,\n\t0x2872c: 0x6cf53c20, 0x2872d: 0x6c69d620, 0x2872e: 0x6c818e20, 0x2872f: 0x6d2ba620,\n\t0x28730: 0x6caeee20, 0x28731: 0x6c11e420, 0x28733: 0x6ca9de20,\n\t0x28735: 0x6c160c20,\n\t0x2873e: 0x6c97a420, 0x2873f: 0x6c4ba820,\n\t// Block 0xa1d, offset 0x28740\n\t0x28740: 0x6ca7d820, 0x28741: 0x6c1d0220, 0x28742: 0x6c165820,\n\t0x28746: 0x6ca48a20,\n\t0x28749: 0x6cf95c20, 0x2874a: 0x6c6f6620, 0x2874b: 0x6c613020,\n\t0x2874c: 0x6d323420,\n\t0x28751: 0x6ce6ca20,\n\t0x28754: 0x6c9ace20, 0x28755: 0x6d26b220, 0x28757: 0x6d37bc20,\n\t0x28758: 0x6cea5620, 0x28759: 0x6cc8d220, 0x2875a: 0x6d01ba20, 0x2875b: 0x6cf63420,\n\t0x2875d: 0x6ce6d220, 0x2875e: 0x6ca99820,\n\t0x28760: 0x6cee2820, 0x28761: 0x6c64ae20, 0x28763: 0x6c3b3420,\n\t0x28772: 0x6c0ba620,\n\t0x28777: 0x6d152820,\n\t0x2877a: 0x6c2ec420, 0x2877b: 0x6c5ef820,\n\t0x2877c: 0x6c41de20, 0x2877f: 0x6c64c420,\n\t// Block 0xa1e, offset 0x28780\n\t0x28780: 0x6c6ee220,\n\t0x28786: 0x6c763820,\n\t0x2878a: 0x6cc3d620,\n\t0x2878c: 0x6ca40420, 0x2878d: 0x6ca1de20, 0x2878e: 0x6d072220, 0x2878f: 0x6cd96a20,\n\t0x28790: 0x6cd0c020, 0x28791: 0x6c7bac20, 0x28792: 0x6cc3e620, 0x28793: 0x6cef2820,\n\t0x28797: 0x6c2eda20,\n\t0x28798: 0x6ca40a20, 0x2879a: 0x6cc92a20, 0x2879b: 0x6c45a220,\n\t0x2879c: 0x6c313220, 0x2879e: 0x6ca73020,\n\t0x287a1: 0x6c175020, 0x287a2: 0x6c515e20, 0x287a3: 0x6d0e9e20,\n\t0x287a9: 0x6ce8f020, 0x287aa: 0x6c104420,\n\t0x287ac: 0x6c559e20, 0x287ad: 0x6d1e5820, 0x287af: 0x6cd2d620,\n\t0x287b0: 0x6c1f7220,\n\t0x287b9: 0x6cff0e20, 0x287ba: 0x6c9ad620, 0x287bb: 0x6c852a20,\n\t0x287bc: 0x6ce37220, 0x287be: 0x6c64e620,\n\t// Block 0xa1f, offset 0x287c0\n\t0x287c2: 0x6d354e20, 0x287c3: 0x6c487220,\n\t0x287c4: 0x6c496220, 0x287c6: 0x6cb7cc20,\n\t0x287c8: 0x6c3a1820, 0x287c9: 0x6d229820, 0x287ca: 0x6d309620, 0x287cb: 0x6cf01c20,\n\t0x287cc: 0x6c35ba20, 0x287cd: 0x6c14da20, 0x287ce: 0x6cf6e020,\n\t0x287d0: 0x6c47d420,\n\t0x287d7: 0x6cc3fa20,\n\t0x287d8: 0x6c5c4620, 0x287da: 0x6d00f620, 0x287db: 0x6d1bf420,\n\t0x287dd: 0x6cdeaa20, 0x287de: 0x6cec5820, 0x287df: 0x6c3efe20,\n\t0x287e0: 0x6c6c0820, 0x287e1: 0x6cb0bc20,\n\t0x287e5: 0x6cd15020, 0x287e6: 0x6d21c620, 0x287e7: 0x6c7ace20,\n\t0x287e9: 0x6cb0ca20, 0x287ea: 0x6d010620, 0x287eb: 0x6caaac20,\n\t0x287ec: 0x6cfd2420, 0x287ed: 0x6c66ea20, 0x287ee: 0x6d074e20,\n\t0x287f0: 0x6c0a7e20,\n\t0x287f4: 0x6ca41220, 0x287f6: 0x6c897020,\n\t0x287f8: 0x6cb13420,\n\t0x287fc: 0x6c6eb820,\n\t// Block 0xa20, offset 0x28800\n\t0x28800: 0x6cde1c20, 0x28801: 0x6d0edc20, 0x28802: 0x6c00f820,\n\t0x28805: 0x6cff3020, 0x28806: 0x6cbaf420, 0x28807: 0x6cf48620,\n\t0x28808: 0x6ce15620, 0x2880a: 0x6c75f420,\n\t0x28810: 0x6c7e2820,\n\t0x28817: 0x6c813220,\n\t0x28819: 0x6ca5b020,\n\t0x2881c: 0x6c314a20, 0x2881d: 0x6cd54620, 0x2881f: 0x6c696220,\n\t0x28820: 0x6ca89c20, 0x28822: 0x6d21dc20,\n\t0x28828: 0x6c132020, 0x2882a: 0x6c696420,\n\t0x2882c: 0x6c57d620, 0x2882d: 0x6cf1c020, 0x2882e: 0x6d127020, 0x2882f: 0x6c35a020,\n\t0x28830: 0x6c49fe20, 0x28831: 0x6c572020, 0x28832: 0x6c68a620,\n\t0x2883a: 0x6c835820,\n\t0x2883c: 0x6cce2820, 0x2883d: 0x6d1e8020, 0x2883f: 0x6c2ac220,\n\t// Block 0xa21, offset 0x28840\n\t0x28840: 0x6c493820, 0x28841: 0x6ca97220, 0x28843: 0x6cdcc020,\n\t0x28844: 0x6cfe6c20, 0x28846: 0x6cc9b420, 0x28847: 0x6c168c20,\n\t0x2884e: 0x6cc90c20,\n\t0x28850: 0x6d277020, 0x28852: 0x6c3b4c20, 0x28853: 0x6c672420,\n\t0x28854: 0x6d076a20,\n\t0x28858: 0x6cf93020, 0x28859: 0x6cd54a20,\n\t0x28865: 0x6d013220, 0x28866: 0x6c87ac20,\n\t0x28869: 0x6ce80420,\n\t0x2886c: 0x6c9d1020, 0x2886d: 0x6c162020, 0x2886e: 0x6c5d6a20,\n\t0x28871: 0x6d3bb820, 0x28872: 0x6d273420,\n\t0x2887b: 0x6c801a20,\n\t0x2887d: 0x6d0d2c20, 0x2887e: 0x6c29a820, 0x2887f: 0x6cfe1820,\n\t// Block 0xa22, offset 0x28880\n\t0x28880: 0x6d267220, 0x28881: 0x6ce6b020, 0x28882: 0x6c07d220, 0x28883: 0x6cca4620,\n\t0x28884: 0x6cfc9620, 0x28885: 0x6c2e7a20, 0x28886: 0x6cb09c20, 0x28887: 0x6cb11220,\n\t0x28889: 0x6cde0c20, 0x2888b: 0x6c687220,\n\t0x2888c: 0x6d126620, 0x2888e: 0x6d271020,\n\t0x28890: 0x6cc61420, 0x28891: 0x6cbc1820, 0x28892: 0x6cb56220, 0x28893: 0x6c2da620,\n\t0x28894: 0x6cb56420, 0x28897: 0x6c4e7e20,\n\t0x28898: 0x6d253220, 0x28899: 0x6d1ee220, 0x2889a: 0x6c5fd020, 0x2889b: 0x6c412820,\n\t0x2889c: 0x6c4d0620, 0x2889d: 0x6cd30420, 0x2889f: 0x6cc0c820,\n\t0x288a9: 0x6cf1fa20,\n\t0x288ac: 0x6d321620, 0x288ad: 0x6cb2f220, 0x288ae: 0x6d0c5e20, 0x288af: 0x6c46e820,\n\t0x288b0: 0x6c720420, 0x288b1: 0x6ce52e20,\n\t0x288b7: 0x6c35d820,\n\t0x288ba: 0x6d0ace20, 0x288bb: 0x6c8c4620,\n\t0x288bc: 0x6c092620,\n\t// Block 0xa23, offset 0x288c0\n\t0x288c0: 0x6d3eea20, 0x288c1: 0x6c530820, 0x288c3: 0x6c347420,\n\t0x288c5: 0x6c333c20, 0x288c6: 0x6d087220,\n\t0x288c8: 0x6ccd3020, 0x288ca: 0x6ccd3220, 0x288cb: 0x6d10d220,\n\t0x288cc: 0x6cc4b020,\n\t0x288d4: 0x6ceaf820, 0x288d7: 0x6c0dac20,\n\t0x288d8: 0x6d069e20, 0x288d9: 0x6cea1a20, 0x288da: 0x6c19d220,\n\t0x288dc: 0x6c30fe20, 0x288dd: 0x6d171420,\n\t0x288e1: 0x6c180820,\n\t0x288f5: 0x6c731a20, 0x288f6: 0x6c5eae20,\n\t0x288f8: 0x6d2fae20, 0x288f9: 0x6c07de20, 0x288fb: 0x6ce4e220,\n\t// Block 0xa24, offset 0x28900\n\t0x28900: 0x6cae6420,\n\t0x28905: 0x6c3fda20,\n\t0x28916: 0x6ceb7620,\n\t0x28918: 0x6cfb3e20, 0x28919: 0x6ca69420, 0x2891a: 0x6c8f8620,\n\t0x2891d: 0x6d3d4220, 0x2891f: 0x6d32c020,\n\t0x28920: 0x6cd74820, 0x28921: 0x6d3f7c20, 0x28922: 0x6c3c4620, 0x28923: 0x6c32be20,\n\t0x28924: 0x6cb09420, 0x28925: 0x6d0d7820, 0x28926: 0x6cda1620, 0x28927: 0x6cc05820,\n\t0x28928: 0x6c362220, 0x28929: 0x6cb98e20, 0x2892b: 0x6cba0620,\n\t0x2892d: 0x6c10d420, 0x2892e: 0x6d0a8a20,\n\t0x28935: 0x6d3c8220,\n\t0x28938: 0x6c993a20, 0x28939: 0x6c68ee20,\n\t0x2893f: 0x6d2dea20,\n\t// Block 0xa25, offset 0x28940\n\t0x28940: 0x6caffa20, 0x28941: 0x6cf63620, 0x28942: 0x6d0e7c20, 0x28943: 0x6c3ab420,\n\t0x28944: 0x6ca83620, 0x28946: 0x6d364620,\n\t0x28948: 0x6cdd6a20, 0x2894a: 0x6d17d020,\n\t0x2894c: 0x6c82c620, 0x2894d: 0x6d06ea20, 0x2894f: 0x6d17d220,\n\t0x28952: 0x6cee9620,\n\t0x28955: 0x6c5ede20, 0x28956: 0x6c186e20, 0x28957: 0x6c2eba20,\n\t0x28963: 0x6d257020,\n\t0x28965: 0x6cf78020, 0x28967: 0x6c8e6220,\n\t0x28968: 0x6cdd6c20,\n\t0x28971: 0x6c07fc20, 0x28972: 0x6cfa4020, 0x28973: 0x6d0e8c20,\n\t0x28975: 0x6c24d020, 0x28977: 0x6c773420,\n\t0x2897a: 0x6cbe4e20, 0x2897b: 0x6c909a20,\n\t0x2897c: 0x6c087e20,\n\t// Block 0xa26, offset 0x28980\n\t0x28988: 0x6d2e6a20, 0x28989: 0x6c24ae20, 0x2898a: 0x6cf3e220, 0x2898b: 0x6d05c020,\n\t0x2898c: 0x6c187e20, 0x2898d: 0x6c4fd820, 0x2898e: 0x6c748820,\n\t0x28990: 0x6c192e20, 0x28991: 0x6c13fa20, 0x28992: 0x6c15ce20, 0x28993: 0x6d348820,\n\t0x28994: 0x6d0a2a20,\n\t0x289a3: 0x6c441a20,\n\t0x289a4: 0x6c18e220, 0x289a5: 0x6d132020,\n\t0x289aa: 0x6c1ee820, 0x289ab: 0x6cc1b820,\n\t0x289ac: 0x6d020620, 0x289ae: 0x6d2e7c20, 0x289af: 0x6c790820,\n\t0x289b1: 0x6c74ae20,\n\t0x289bd: 0x6cc1ba20, 0x289bf: 0x6c9b5020,\n\t// Block 0xa27, offset 0x289c0\n\t0x289c0: 0x6d134e20, 0x289c1: 0x6d406620, 0x289c2: 0x6cb45620,\n\t0x289c4: 0x6cd3e420,\n\t0x289c9: 0x6cd57220, 0x289ca: 0x6c152a20,\n\t0x289cd: 0x6c31c420, 0x289cf: 0x6c4c4a20,\n\t0x289d0: 0x6c92fe20, 0x289d1: 0x6d0c3820,\n\t0x289d6: 0x6ca7ba20, 0x289d7: 0x6c0d6620,\n\t0x289df: 0x6ce9cc20,\n\t0x289e6: 0x6ca6dc20, 0x289e7: 0x6c584220,\n\t0x289e8: 0x6cb9de20,\n\t0x289ef: 0x6cfa6020,\n\t0x289f2: 0x6c8dc620,\n\t0x289f7: 0x6c882820,\n\t0x289f9: 0x6d186e20, 0x289fb: 0x6c866620,\n\t0x289fc: 0x6cd8f020, 0x289ff: 0x6c279a20,\n\t// Block 0xa28, offset 0x28a00\n\t0x28a02: 0x6cf11620,\n\t0x28a05: 0x6c22c020,\n\t0x28a09: 0x6c6fbe20, 0x28a0a: 0x6c534420,\n\t0x28a0c: 0x6d210e20, 0x28a0e: 0x6c7c6e20,\n\t0x28a12: 0x6c4f8020, 0x28a13: 0x6c439620,\n\t0x28a14: 0x6c39e620, 0x28a17: 0x6c7c8020,\n\t0x28a1a: 0x6c4a6c20, 0x28a1b: 0x6c1bb020,\n\t0x28a1e: 0x6c6fc220,\n\t0x28a21: 0x6cdbce20,\n\t0x28a24: 0x6c2ec620,\n\t0x28a2c: 0x6cdc0c20,\n\t0x28a30: 0x6cbd8620,\n\t0x28a34: 0x6c4a8020,\n\t0x28a3b: 0x6d3c6620,\n\t0x28a3e: 0x6ce5de20,\n\t// Block 0xa29, offset 0x28a40\n\t0x28a41: 0x6d26d820,\n\t0x28a47: 0x6d419220,\n\t0x28a4f: 0x6cf3e820,\n\t0x28a50: 0x6c250820,\n\t0x28a5b: 0x6d36d220,\n\t0x28a60: 0x6cd72e20, 0x28a62: 0x6c301420,\n\t0x28a6d: 0x6cef3c20,\n\t0x28a7f: 0x6c1d4220,\n\t// Block 0xa2a, offset 0x28a80\n\t0x28a8b: 0x6cc8f420,\n\t0x28a96: 0x6c60d420,\n\t0x28a9c: 0x6c2de820, 0x28a9e: 0x6c124020,\n\t0x28aa0: 0x6c7a0c20, 0x28aa3: 0x6cef5420,\n\t0x28aa7: 0x6c11bc20,\n\t0x28aaa: 0x6c968020, 0x28aab: 0x6caba820,\n\t0x28ab2: 0x6cca3820,\n\t0x28ab6: 0x6cef6620,\n\t0x28abc: 0x6cca3e20, 0x28abf: 0x6c6c7020,\n\t// Block 0xa2b, offset 0x28ac0\n\t0x28acc: 0x6cef6e20,\n\t0x28ade: 0x6c115420, 0x28adf: 0x6c84d020,\n\t0x28aef: 0x6d273a20,\n\t0x28af4: 0x6d277220, 0x28af7: 0x6c196420,\n\t0x28afa: 0x6ccce420,\n\t// Block 0xa2c, offset 0x28b00\n\t0x28b02: 0x6c54d620, 0x28b03: 0x6ccc9e20,\n\t0x28b04: 0x6cea5820, 0x28b06: 0x6c3d3020,\n\t0x28b08: 0x6cbe1820, 0x28b09: 0x6d05ac20,\n\t0x28b0d: 0x6c1fe620, 0x28b0e: 0x6c400420,\n\t0x28b12: 0x6d181220, 0x28b13: 0x6c300c20,\n\t0x28b14: 0x6c3eb420, 0x28b15: 0x6c3eb620, 0x28b16: 0x6d2ad620, 0x28b17: 0x6cb4ae20,\n\t0x28b19: 0x6c8d2c20,\n\t0x28b1d: 0x6ccca020, 0x28b1e: 0x6cad9420,\n\t0x28b22: 0x6d1a8a20, 0x28b23: 0x6c961e20,\n\t0x28b24: 0x6c57b620, 0x28b25: 0x6d1b6e20, 0x28b26: 0x6c084a20, 0x28b27: 0x6d209820,\n\t0x28b28: 0x6ccf7020, 0x28b2a: 0x6d01f220, 0x28b2b: 0x6c1ee620,\n\t0x28b34: 0x6ccf7220, 0x28b35: 0x6c2d7220,\n\t0x28b39: 0x6d187020, 0x28b3b: 0x6c183a20,\n\t0x28b3c: 0x6c451c20, 0x28b3d: 0x6c8fa820, 0x28b3e: 0x6cb2ca20, 0x28b3f: 0x6d280220,\n\t// Block 0xa2d, offset 0x28b40\n\t0x28b40: 0x6d0eae20, 0x28b41: 0x6ca15a20, 0x28b43: 0x6cdbd820,\n\t0x28b4b: 0x6c6ea420,\n\t0x28b4d: 0x6cd99c20, 0x28b4e: 0x6cad0c20,\n\t0x28b50: 0x6d0b3820, 0x28b51: 0x6ccb5020, 0x28b52: 0x6c34b820,\n\t0x28b55: 0x6c207a20, 0x28b56: 0x6d022420,\n\t0x28b58: 0x6ce95a20, 0x28b59: 0x6c45b420, 0x28b5a: 0x6d08b620,\n\t0x28b5c: 0x6c7e4e20, 0x28b5e: 0x6c8d5e20,\n\t0x28b60: 0x6c279020, 0x28b61: 0x6d2c5220,\n\t0x28b6c: 0x6d1a0a20, 0x28b6d: 0x6cd93c20, 0x28b6f: 0x6d229a20,\n\t0x28b70: 0x6ceb4c20, 0x28b71: 0x6ceb4e20,\n\t0x28b74: 0x6c03c420, 0x28b75: 0x6cc4d620, 0x28b76: 0x6c0f8420, 0x28b77: 0x6c279c20,\n\t0x28b79: 0x6d2c5a20, 0x28b7a: 0x6c543a20,\n\t0x28b7e: 0x6c5b7820,\n\t// Block 0xa2e, offset 0x28b80\n\t0x28b85: 0x6c916020,\n\t0x28b8a: 0x6c8e2820, 0x28b8b: 0x6cc7d620,\n\t0x28b95: 0x6c28d220, 0x28b96: 0x6c9b6620, 0x28b97: 0x6cfa5820,\n\t0x28b98: 0x6cf26220, 0x28b99: 0x6c4e4620, 0x28b9a: 0x6d3eb020, 0x28b9b: 0x6d327420,\n\t0x28b9c: 0x6ccb7c20, 0x28b9d: 0x6c25fa20, 0x28b9e: 0x6c86e420,\n\t0x28ba0: 0x6c2ce220, 0x28ba1: 0x6c887e20, 0x28ba2: 0x6c46e020,\n\t0x28ba6: 0x6caee020,\n\t0x28baa: 0x6d1c0a20,\n\t0x28bac: 0x6c548420, 0x28bae: 0x6c336c20, 0x28baf: 0x6cf53e20,\n\t0x28bb7: 0x6cb1be20,\n\t0x28bb8: 0x6c520020, 0x28bba: 0x6c8fb820, 0x28bbb: 0x6ca18420,\n\t0x28bbc: 0x6c3a7620, 0x28bbd: 0x6c93be20, 0x28bbe: 0x6d2b2020, 0x28bbf: 0x6c0fae20,\n\t// Block 0xa2f, offset 0x28bc0\n\t0x28bc0: 0x6c2d9620, 0x28bc1: 0x6c98aa20, 0x28bc3: 0x6d3c4e20,\n\t0x28bc4: 0x6c932220, 0x28bc5: 0x6cace820, 0x28bc6: 0x6c337c20, 0x28bc7: 0x6c10ce20,\n\t0x28bcc: 0x6c189020, 0x28bcd: 0x6c981220,\n\t0x28bd6: 0x6cf72420,\n\t0x28bdd: 0x6c019a20, 0x28bde: 0x6d37dc20,\n\t0x28be0: 0x6ca44a20, 0x28be1: 0x6cebba20, 0x28be2: 0x6c519c20,\n\t0x28be5: 0x6c338220, 0x28be6: 0x6ceca020, 0x28be7: 0x6d37de20,\n\t0x28be8: 0x6c133e20, 0x28be9: 0x6c873620, 0x28bea: 0x6cd6aa20,\n\t0x28bee: 0x6c134020,\n\t0x28bf0: 0x6cd84a20, 0x28bf2: 0x6c338420,\n\t0x28bf4: 0x6c5cdc20,\n\t0x28bfc: 0x6c654220, 0x28bfd: 0x6ca9e220, 0x28bfe: 0x6c28ea20, 0x28bff: 0x6c409820,\n\t// Block 0xa30, offset 0x28c00\n\t0x28c00: 0x6c5e4e20, 0x28c01: 0x6c5c9620, 0x28c02: 0x6c228420,\n\t0x28c04: 0x6d1e6620, 0x28c05: 0x6cc9b620, 0x28c06: 0x6ce6a420,\n\t0x28c0e: 0x6c8f5a20,\n\t0x28c11: 0x6cdb8c20, 0x28c12: 0x6c8da220, 0x28c13: 0x6c97a620,\n\t0x28c14: 0x6c2d9c20,\n\t0x28c18: 0x6cad4020, 0x28c1a: 0x6c8da420,\n\t0x28c1d: 0x6c878620, 0x28c1f: 0x6caa1020,\n\t0x28c23: 0x6c8b7820,\n\t0x28c24: 0x6ccd6220, 0x28c26: 0x6c3afe20,\n\t0x28c2b: 0x6ccd6420,\n\t0x28c2e: 0x6c8db820, 0x28c2f: 0x6d2eaa20,\n\t0x28c31: 0x6c0d7820, 0x28c32: 0x6c84dc20,\n\t0x28c35: 0x6cd86420, 0x28c36: 0x6cc4fc20, 0x28c37: 0x6c655820,\n\t0x28c38: 0x6d3df020, 0x28c3b: 0x6c8dbe20,\n\t0x28c3c: 0x6c8dc020, 0x28c3d: 0x6c9c2420, 0x28c3f: 0x6cd6c820,\n\t// Block 0xa31, offset 0x28c40\n\t0x28c44: 0x6c8dc820, 0x28c47: 0x6c5d5020,\n\t0x28c4e: 0x6c8dee20, 0x28c4f: 0x6c655e20,\n\t0x28c50: 0x6cc23a20,\n\t0x28c54: 0x6ca9ea20, 0x28c55: 0x6c6e7c20, 0x28c56: 0x6c187020,\n\t0x28c5c: 0x6d318820, 0x28c5d: 0x6cbede20, 0x28c5f: 0x6cbee220,\n\t0x28c60: 0x6c36c820, 0x28c63: 0x6ccb9420,\n\t0x28c69: 0x6c071a20, 0x28c6b: 0x6c3a0020,\n\t0x28c6e: 0x6c3ab620, 0x28c6f: 0x6c3a3820,\n\t0x28c74: 0x6c399820, 0x28c75: 0x6c7a7c20,\n\t0x28c7a: 0x6d28c620, 0x28c7b: 0x6c5c2220,\n\t0x28c7d: 0x6c3a4420,\n\t// Block 0xa32, offset 0x28c80\n\t0x28c81: 0x6c338620,\n\t0x28c86: 0x6cabca20, 0x28c87: 0x6ca99c20,\n\t0x28c88: 0x6cad2e20, 0x28c89: 0x6c289820, 0x28c8a: 0x6c27e820, 0x28c8b: 0x6c00b220,\n\t0x28c8d: 0x6ce50e20, 0x28c8e: 0x6c17a420, 0x28c8f: 0x6c02ac20,\n\t0x28c90: 0x6c9aa020, 0x28c91: 0x6ca43420,\n\t0x28c94: 0x6c0ff420, 0x28c95: 0x6d23b420, 0x28c96: 0x6cfac420, 0x28c97: 0x6c973a20,\n\t0x28c9a: 0x6cb26420,\n\t0x28c9c: 0x6c331020, 0x28c9e: 0x6c2a3020,\n\t0x28ca1: 0x6d043a20, 0x28ca2: 0x6ca6ce20, 0x28ca3: 0x6c4dba20,\n\t0x28ca4: 0x6c1f7a20, 0x28ca5: 0x6cd64a20, 0x28ca6: 0x6c97cc20,\n\t0x28cac: 0x6ceda420, 0x28cad: 0x6d18dc20, 0x28cae: 0x6c2e4820, 0x28caf: 0x6d0c3a20,\n\t0x28cb1: 0x6cf32420, 0x28cb2: 0x6cdba220,\n\t0x28cb4: 0x6c019420, 0x28cb5: 0x6c7fd420, 0x28cb6: 0x6ca43e20,\n\t0x28cb8: 0x6cc0b620, 0x28cb9: 0x6c9e6820, 0x28cba: 0x6caae420, 0x28cbb: 0x6c11c020,\n\t0x28cbc: 0x6c11e620,\n\t// Block 0xa33, offset 0x28cc0\n\t0x28cc0: 0x6c808620, 0x28cc1: 0x6ce52a20, 0x28cc2: 0x6d139220,\n\t0x28cc4: 0x6ca74e20, 0x28cc6: 0x6cd64e20,\n\t0x28ccb: 0x6c228620,\n\t0x28ccd: 0x6c663a20,\n\t0x28cd0: 0x6c424020,\n\t0x28cd4: 0x6c673220, 0x28cd5: 0x6c4caa20, 0x28cd7: 0x6d2dd620,\n\t0x28cd9: 0x6c95dc20,\n\t0x28cdc: 0x6c5ebc20, 0x28cdd: 0x6c4b5220,\n\t0x28ce1: 0x6c63d220, 0x28ce2: 0x6c614a20,\n\t0x28ce5: 0x6d08a020, 0x28ce7: 0x6c3c5a20,\n\t0x28ceb: 0x6c09ea20,\n\t0x28cec: 0x6cb60a20, 0x28cef: 0x6d258e20,\n\t0x28cf0: 0x6c021a20, 0x28cf1: 0x6c2b3820,\n\t0x28cf4: 0x6c366820, 0x28cf5: 0x6c3b7e20,\n\t0x28cf8: 0x6c727020, 0x28cf9: 0x6ca64220, 0x28cfa: 0x6ceb3c20,\n\t0x28cfc: 0x6cd00c20, 0x28cfd: 0x6c3eca20, 0x28cfe: 0x6cf9e420, 0x28cff: 0x6cc1ac20,\n\t// Block 0xa34, offset 0x28d00\n\t0x28d00: 0x6cb39a20, 0x28d01: 0x6ced4220, 0x28d02: 0x6c8d4220, 0x28d03: 0x6c96d220,\n\t0x28d04: 0x6d394020, 0x28d05: 0x6c065c20, 0x28d07: 0x6d23b620,\n\t0x28d0c: 0x6c082a20, 0x28d0d: 0x6c973c20, 0x28d0f: 0x6c637a20,\n\t0x28d11: 0x6d102e20, 0x28d13: 0x6c7ade20,\n\t0x28d14: 0x6c69c020, 0x28d16: 0x6c0df220,\n\t0x28d1a: 0x6c962420, 0x28d1b: 0x6c4b1820,\n\t0x28d1c: 0x6c351420, 0x28d1d: 0x6d36d420,\n\t0x28d21: 0x6d326020, 0x28d22: 0x6c369e20, 0x28d23: 0x6d39ca20,\n\t0x28d24: 0x6c039020,\n\t0x28d28: 0x6d326220, 0x28d29: 0x6c3c6820, 0x28d2a: 0x6c313820, 0x28d2b: 0x6ca73c20,\n\t0x28d2c: 0x6c10bc20, 0x28d2d: 0x6c336020, 0x28d2e: 0x6ccc1c20, 0x28d2f: 0x6ccb6820,\n\t0x28d30: 0x6c0a6220,\n\t0x28d34: 0x6d36f420, 0x28d35: 0x6d309820, 0x28d36: 0x6c10be20,\n\t0x28d3a: 0x6c74c420, 0x28d3b: 0x6d0aa820,\n\t0x28d3f: 0x6cf90020,\n\t// Block 0xa35, offset 0x28d40\n\t0x28d41: 0x6d3db820, 0x28d42: 0x6c045a20, 0x28d43: 0x6d115c20,\n\t0x28d44: 0x6c1e3420, 0x28d45: 0x6cdeb620, 0x28d46: 0x6cb93020,\n\t0x28d48: 0x6ca53820, 0x28d49: 0x6d242020, 0x28d4a: 0x6c36bc20, 0x28d4b: 0x6c650820,\n\t0x28d4c: 0x6d18de20, 0x28d4d: 0x6cff2a20, 0x28d4f: 0x6ca88020,\n\t0x28d52: 0x6c0db620,\n\t0x28d57: 0x6c4cd420,\n\t0x28d58: 0x6d010820, 0x28d59: 0x6c2e4a20,\n\t0x28d5c: 0x6c70d620, 0x28d5d: 0x6cdda420, 0x28d5e: 0x6c2ef420, 0x28d5f: 0x6c3f1420,\n\t0x28d60: 0x6c9e4420, 0x28d61: 0x6cd3fa20, 0x28d62: 0x6d08c420, 0x28d63: 0x6ce39c20,\n\t0x28d64: 0x6d244420, 0x28d67: 0x6d011820,\n\t0x28d68: 0x6c3f1620, 0x28d69: 0x6d373420, 0x28d6a: 0x6ca65a20, 0x28d6b: 0x6d08c620,\n\t0x28d6c: 0x6d0fe820, 0x28d6e: 0x6c3cd020, 0x28d6f: 0x6d403c20,\n\t0x28d70: 0x6d395e20, 0x28d71: 0x6d07de20,\n\t0x28d75: 0x6d39d820, 0x28d77: 0x6c7edc20,\n\t0x28d79: 0x6d1d5820, 0x28d7a: 0x6c435c20, 0x28d7b: 0x6c7e2c20,\n\t0x28d7d: 0x6c358820, 0x28d7e: 0x6cef5620, 0x28d7f: 0x6c9a3620,\n\t// Block 0xa36, offset 0x28d80\n\t0x28d83: 0x6c57fe20,\n\t0x28d84: 0x6c1e3820, 0x28d86: 0x6cddb220, 0x28d87: 0x6cdec820,\n\t0x28d88: 0x6cddb420, 0x28d89: 0x6cdeca20, 0x28d8a: 0x6d097a20,\n\t0x28d8c: 0x6c460820, 0x28d8d: 0x6c643220, 0x28d8f: 0x6c0fb020,\n\t0x28d90: 0x6cdecc20, 0x28d91: 0x6d25f620,\n\t0x28d98: 0x6cdece20,\n\t0x28d9d: 0x6c20ec20,\n\t0x28da0: 0x6d047820, 0x28da1: 0x6c519820, 0x28da2: 0x6cdd4820,\n\t0x28da7: 0x6ca18a20,\n\t0x28da8: 0x6c1d2c20, 0x28da9: 0x6cdbe420, 0x28daa: 0x6d2b2220, 0x28dab: 0x6c933220,\n\t0x28dac: 0x6d2eea20, 0x28dad: 0x6c963c20, 0x28dae: 0x6d075820, 0x28daf: 0x6c653a20,\n\t0x28db0: 0x6ccd2220, 0x28db2: 0x6d075a20,\n\t0x28dbe: 0x6c67cc20,\n\t// Block 0xa37, offset 0x28dc0\n\t0x28dc2: 0x6c067c20, 0x28dc3: 0x6c970c20,\n\t0x28dc5: 0x6ce7a020, 0x28dc6: 0x6cf92c20,\n\t0x28dc9: 0x6cc6e620, 0x28dcb: 0x6cd12a20,\n\t0x28dcc: 0x6d396c20, 0x28dce: 0x6c654420, 0x28dcf: 0x6c409a20,\n\t0x28dd0: 0x6c2afa20, 0x28dd3: 0x6d1de220,\n\t0x28dd4: 0x6c70e420, 0x28dd6: 0x6d195e20, 0x28dd7: 0x6c054820,\n\t0x28dd9: 0x6ccb9620, 0x28dda: 0x6cdcc620,\n\t0x28ddc: 0x6c346e20, 0x28ddd: 0x6d028420,\n\t0x28de1: 0x6c58c820,\n\t0x28de5: 0x6cc80c20, 0x28de6: 0x6ca66c20, 0x28de7: 0x6d397020,\n\t0x28de8: 0x6c4bac20, 0x28dea: 0x6c964820,\n\t0x28df2: 0x6d342e20, 0x28df3: 0x6d076c20,\n\t0x28df5: 0x6d343020, 0x28df7: 0x6c752a20,\n\t0x28df8: 0x6c70e820, 0x28dfb: 0x6d25da20,\n\t0x28dfc: 0x6c91a420, 0x28dff: 0x6c0fda20,\n\t// Block 0xa38, offset 0x28e00\n\t0x28e02: 0x6cc6ea20, 0x28e03: 0x6d029620,\n\t0x28e09: 0x6cf83220, 0x28e0a: 0x6c959a20,\n\t0x28e0e: 0x6c447020,\n\t0x28e11: 0x6d414620, 0x28e12: 0x6c4eca20,\n\t0x28e14: 0x6c685620, 0x28e15: 0x6cc95420, 0x28e16: 0x6cbd8a20, 0x28e17: 0x6cc43c20,\n\t0x28e18: 0x6cad6420, 0x28e19: 0x6d26da20, 0x28e1a: 0x6c182c20, 0x28e1b: 0x6c3ece20,\n\t0x28e1c: 0x6cadc020, 0x28e1f: 0x6c9aa420,\n\t0x28e22: 0x6ce1de20,\n\t0x28e24: 0x6c78f020, 0x28e25: 0x6cf8d420,\n\t0x28e2b: 0x6c351620,\n\t0x28e2d: 0x6d187220,\n\t0x28e30: 0x6cdc7e20, 0x28e32: 0x6cf9f820, 0x28e33: 0x6c730420,\n\t0x28e35: 0x6cef3e20, 0x28e37: 0x6d18ba20,\n\t0x28e39: 0x6d242220, 0x28e3b: 0x6c045c20,\n\t0x28e3c: 0x6ceb5820, 0x28e3d: 0x6cdeb820, 0x28e3e: 0x6cad6e20,\n\t// Block 0xa39, offset 0x28e40\n\t0x28e42: 0x6c0dfc20,\n\t0x28e45: 0x6d286820, 0x28e46: 0x6d286a20, 0x28e47: 0x6c32e220,\n\t0x28e48: 0x6cc88620, 0x28e49: 0x6cef5820,\n\t0x28e4f: 0x6cf05020,\n\t0x28e50: 0x6c4b9820, 0x28e52: 0x6c26d420, 0x28e53: 0x6cfa1420,\n\t0x28e56: 0x6c5d4a20, 0x28e57: 0x6c733220,\n\t0x28e58: 0x6cdbe620, 0x28e5a: 0x6cdcbc20,\n\t0x28e5d: 0x6c90d620, 0x28e5e: 0x6c046420, 0x28e5f: 0x6d246e20,\n\t0x28e60: 0x6d337420, 0x28e61: 0x6c4ba620, 0x28e63: 0x6c7c5820,\n\t0x28e64: 0x6c42f220, 0x28e65: 0x6c281620,\n\t0x28e69: 0x6cfc5a20, 0x28e6a: 0x6d2d2420, 0x28e6b: 0x6ccb9820,\n\t0x28e6d: 0x6c784620, 0x28e6e: 0x6c105020, 0x28e6f: 0x6c0fce20,\n\t0x28e72: 0x6cdcc820,\n\t0x28e74: 0x6d249420, 0x28e75: 0x6c105220, 0x28e76: 0x6c6f9220, 0x28e77: 0x6c6f9420,\n\t0x28e79: 0x6c73aa20, 0x28e7a: 0x6c754220,\n\t0x28e7c: 0x6ca31620, 0x28e7d: 0x6d2d1c20, 0x28e7e: 0x6ce1ba20, 0x28e7f: 0x6cefec20,\n\t// Block 0xa3a, offset 0x28e80\n\t0x28e80: 0x6cf9dc20, 0x28e81: 0x6d01cc20,\n\t0x28e85: 0x6cc9a620, 0x28e86: 0x6c5f6620,\n\t0x28e89: 0x6d026a20,\n\t0x28e8c: 0x6c338c20, 0x28e8d: 0x6d3f2620,\n\t0x28e98: 0x6d25ee20, 0x28e99: 0x6cbe1e20, 0x28e9a: 0x6c3ed020, 0x28e9b: 0x6caeba20,\n\t0x28e9c: 0x6cad6620, 0x28e9e: 0x6d1b7620,\n\t0x28ea0: 0x6c52c220, 0x28ea1: 0x6d40d420, 0x28ea3: 0x6c45a820,\n\t0x28ea4: 0x6c308820, 0x28ea5: 0x6c50a820, 0x28ea6: 0x6cf31020,\n\t0x28ea8: 0x6cace220, 0x28eab: 0x6cdb2820,\n\t0x28eac: 0x6c76f020, 0x28ead: 0x6ca88220, 0x28eae: 0x6c4ffa20, 0x28eaf: 0x6c3cfa20,\n\t0x28eb0: 0x6c36be20, 0x28eb1: 0x6d137620,\n\t0x28eb4: 0x6ce69820, 0x28eb5: 0x6c309420, 0x28eb6: 0x6d30ba20, 0x28eb7: 0x6cca7820,\n\t0x28ebb: 0x6ca18c20,\n\t0x28ebc: 0x6cdb6020, 0x28ebe: 0x6c823220,\n\t// Block 0xa3b, offset 0x28ec0\n\t0x28ec0: 0x6cb4a620, 0x28ec1: 0x6c35a620, 0x28ec2: 0x6d3de220, 0x28ec3: 0x6d139820,\n\t0x28ec7: 0x6cfda220,\n\t0x28ec8: 0x6c4a2c20, 0x28ec9: 0x6cc59e20, 0x28eca: 0x6c8dfe20,\n\t0x28ecd: 0x6c02cc20,\n\t0x28ed0: 0x6c146820, 0x28ed2: 0x6c345620, 0x28ed3: 0x6cbf3620,\n\t0x28ed4: 0x6c7a4620, 0x28ed5: 0x6d05b020, 0x28ed6: 0x6c587c20, 0x28ed7: 0x6d10aa20,\n\t0x28ed8: 0x6d324620, 0x28ed9: 0x6ce6da20, 0x28eda: 0x6c082420,\n\t0x28edd: 0x6c020220, 0x28edf: 0x6c76b420,\n\t0x28ee1: 0x6c7a4c20, 0x28ee2: 0x6cadde20, 0x28ee3: 0x6d205220,\n\t0x28ee4: 0x6c02aa20, 0x28ee5: 0x6c9ad020, 0x28ee6: 0x6ca13620,\n\t0x28eec: 0x6c3f7220, 0x28eed: 0x6cbe5020, 0x28eee: 0x6c7e8220, 0x28eef: 0x6c30f220,\n\t0x28ef0: 0x6ce06c20, 0x28ef3: 0x6cba1c20,\n\t0x28ef4: 0x6d121c20, 0x28ef5: 0x6cf0b620, 0x28ef6: 0x6c558c20, 0x28ef7: 0x6ca14620,\n\t0x28ef8: 0x6c50a620, 0x28ef9: 0x6d08ac20, 0x28efb: 0x6c0a1220,\n\t0x28efc: 0x6cb31a20, 0x28efe: 0x6c2b3c20,\n\t// Block 0xa3c, offset 0x28f00\n\t0x28f00: 0x6d31f020, 0x28f02: 0x6cd1e420, 0x28f03: 0x6c76e420,\n\t0x28f04: 0x6c130c20, 0x28f07: 0x6d05c420,\n\t0x28f08: 0x6d31f220, 0x28f0a: 0x6d3a7820,\n\t0x28f0f: 0x6c5c2420,\n\t0x28f10: 0x6c1bc020, 0x28f13: 0x6c53aa20,\n\t0x28f14: 0x6caa0420, 0x28f15: 0x6ca86a20, 0x28f16: 0x6d0eb020,\n\t0x28f18: 0x6c1d4020, 0x28f19: 0x6c3f8620, 0x28f1a: 0x6c49f420, 0x28f1b: 0x6cb52c20,\n\t0x28f1d: 0x6c44a220, 0x28f1e: 0x6ce6e020,\n\t0x28f22: 0x6ce07220, 0x28f23: 0x6cba2020,\n\t0x28f26: 0x6c702020, 0x28f27: 0x6d05e220,\n\t0x28f28: 0x6cb71620, 0x28f2a: 0x6d326420,\n\t0x28f2e: 0x6cc09c20,\n\t0x28f30: 0x6c35bc20, 0x28f33: 0x6c5c4c20,\n\t0x28f34: 0x6c53d820, 0x28f35: 0x6cbeb420, 0x28f37: 0x6c17e020,\n\t0x28f3a: 0x6c405c20,\n\t0x28f3c: 0x6c52ce20, 0x28f3d: 0x6cf6e220, 0x28f3e: 0x6cf3ee20, 0x28f3f: 0x6c987820,\n\t// Block 0xa3d, offset 0x28f40\n\t0x28f42: 0x6ce2fc20,\n\t0x28f45: 0x6c52d020,\n\t0x28f50: 0x6c0f6a20, 0x28f52: 0x6cbde820, 0x28f53: 0x6c44a420,\n\t0x28f56: 0x6c3f0020, 0x28f57: 0x6c7cde20,\n\t0x28f5d: 0x6c0cfe20, 0x28f5e: 0x6c6eba20, 0x28f5f: 0x6c76f220,\n\t0x28f60: 0x6c4a9020, 0x28f62: 0x6c432820, 0x28f63: 0x6d05f420,\n\t0x28f64: 0x6c01d420, 0x28f65: 0x6d26f420, 0x28f66: 0x6cf53420, 0x28f67: 0x6d157a20,\n\t0x28f68: 0x6c6dda20, 0x28f6a: 0x6c930220, 0x28f6b: 0x6cc31c20,\n\t0x28f6c: 0x6ce9c820, 0x28f6e: 0x6c62a420,\n\t0x28f7a: 0x6c6f3420, 0x28f7b: 0x6c74d420,\n\t0x28f7c: 0x6cb1d620, 0x28f7d: 0x6c7d8a20,\n\t// Block 0xa3e, offset 0x28f80\n\t0x28f80: 0x6cec7420, 0x28f81: 0x6c5c7620, 0x28f82: 0x6c341220, 0x28f83: 0x6d25f420,\n\t0x28f84: 0x6c6b6a20, 0x28f86: 0x6c4b9020, 0x28f87: 0x6c432e20,\n\t0x28f88: 0x6cb3b220, 0x28f89: 0x6c9ade20, 0x28f8a: 0x6d3bf020, 0x28f8b: 0x6c4f9c20,\n\t0x28f94: 0x6d1e0420, 0x28f95: 0x6cc0a420, 0x28f97: 0x6c834e20,\n\t0x28f98: 0x6c020620, 0x28f99: 0x6cb08020, 0x28f9a: 0x6cf24220,\n\t0x28f9d: 0x6cbe2a20, 0x28f9f: 0x6cbdee20,\n\t0x28fa0: 0x6c9f0620, 0x28fa1: 0x6c30d020, 0x28fa2: 0x6c9c9420, 0x28fa3: 0x6d2db820,\n\t0x28fa5: 0x6cbec020, 0x28fa6: 0x6d158c20,\n\t0x28fae: 0x6c04aa20,\n\t0x28fb1: 0x6c730a20, 0x28fb3: 0x6d2b2420,\n\t0x28fb4: 0x6d075c20, 0x28fb5: 0x6c7ff420, 0x28fb6: 0x6c968220, 0x28fb7: 0x6c968420,\n\t0x28fb8: 0x6cab6220, 0x28fb9: 0x6c06c020, 0x28fbb: 0x6cb3e820,\n\t0x28fbc: 0x6d075e20,\n\t// Block 0xa3f, offset 0x28fc0\n\t0x28fc0: 0x6c02fe20,\n\t0x28fc6: 0x6c53ae20,\n\t0x28fc9: 0x6c53b020, 0x28fca: 0x6d2e3c20,\n\t0x28fcc: 0x6ccbb620, 0x28fcd: 0x6c433020, 0x28fcf: 0x6cb34420,\n\t0x28fd0: 0x6c8aae20,\n\t0x28fd5: 0x6cec7a20, 0x28fd6: 0x6d07f420,\n\t0x28fdc: 0x6c7cb820, 0x28fdf: 0x6c36ea20,\n\t0x28fe0: 0x6c4f3e20, 0x28fe1: 0x6ccb9a20,\n\t0x28fe4: 0x6c28ee20,\n\t0x28fea: 0x6d07f620,\n\t0x28fec: 0x6c36f420, 0x28fed: 0x6c415a20, 0x28fef: 0x6c29c820,\n\t0x28ff1: 0x6c9bfa20, 0x28ff2: 0x6d143e20, 0x28ff3: 0x6ca94e20,\n\t0x28ff5: 0x6cb23020,\n\t0x28ff9: 0x6c124620,\n\t0x28ffe: 0x6d263c20,\n\t// Block 0xa40, offset 0x29000\n\t0x29000: 0x6c36fc20, 0x29001: 0x6ca8ca20,\n\t0x29004: 0x6d1b2e20, 0x29007: 0x6cbbca20,\n\t0x29009: 0x6c52e220, 0x2900a: 0x6c8dca20,\n\t0x2900c: 0x6c14e820, 0x2900d: 0x6d1d3020,\n\t0x29012: 0x6c494820,\n\t0x29014: 0x6ca7ca20, 0x29015: 0x6d05c620, 0x29016: 0x6cdff820, 0x29017: 0x6c6d6e20,\n\t0x2901b: 0x6caea620,\n\t0x2901d: 0x6c89e820,\n\t0x29020: 0x6c072c20, 0x29023: 0x6d030020,\n\t0x29024: 0x6cea6020, 0x29025: 0x6c174e20, 0x29026: 0x6c41a420,\n\t0x29028: 0x6c54e020, 0x29029: 0x6cee2e20,\n\t0x2902c: 0x6c3eba20, 0x2902d: 0x6cae2220, 0x2902f: 0x6ca4b620,\n\t0x29030: 0x6d0a1820, 0x29031: 0x6d096c20,\n\t0x29034: 0x6c8f1220, 0x29035: 0x6c8d4420, 0x29036: 0x6d097020, 0x29037: 0x6cc12e20,\n\t0x29038: 0x6c4fda20, 0x29039: 0x6d153c20, 0x2903a: 0x6c4ef420,\n\t0x2903c: 0x6c3ed220, 0x2903d: 0x6c038a20, 0x2903e: 0x6d153e20,\n\t// Block 0xa41, offset 0x29040\n\t0x29040: 0x6c0f3820,\n\t0x29044: 0x6c52c420, 0x29045: 0x6c866a20,\n\t0x29049: 0x6cc98820, 0x2904a: 0x6cf6b220,\n\t0x2904e: 0x6cd3ce20, 0x2904f: 0x6cb15e20,\n\t0x29050: 0x6c57c220, 0x29051: 0x6d155220, 0x29052: 0x6c0f5220, 0x29053: 0x6c0f6c20,\n\t0x29054: 0x6ca57620, 0x29055: 0x6cc09e20,\n\t0x29058: 0x6cf01e20, 0x29059: 0x6c184a20, 0x2905a: 0x6d1f7820,\n\t0x2905c: 0x6cf0dc20, 0x2905d: 0x6c5b6820, 0x2905e: 0x6cc99a20,\n\t0x29062: 0x6c53da20, 0x29063: 0x6cd9e820,\n\t0x29064: 0x6c4f1220, 0x29065: 0x6cad6a20, 0x29067: 0x6c39b020,\n\t0x29069: 0x6c8eae20, 0x2906a: 0x6d395a20, 0x2906b: 0x6cb02a20,\n\t0x2906d: 0x6c86b620,\n\t0x29070: 0x6c20e820, 0x29071: 0x6cf6fc20, 0x29072: 0x6d330220,\n\t0x29074: 0x6c085620, 0x29075: 0x6d333420, 0x29076: 0x6cdc9620, 0x29077: 0x6d0de420,\n\t0x2907c: 0x6cbe5a20, 0x2907d: 0x6cf53620, 0x2907e: 0x6c89a620,\n\t// Block 0xa42, offset 0x29080\n\t0x29080: 0x6d2fe420, 0x29081: 0x6c897220,\n\t0x29085: 0x6c6a3c20, 0x29087: 0x6c52da20,\n\t0x29088: 0x6d1ec020, 0x2908a: 0x6c7ea220, 0x2908b: 0x6c548620,\n\t0x2908d: 0x6d263620, 0x2908e: 0x6c539620, 0x2908f: 0x6d137820,\n\t0x29091: 0x6d1d1c20, 0x29092: 0x6d086020, 0x29093: 0x6d1f8620,\n\t0x29098: 0x6cc32020,\n\t0x2909c: 0x6ce15e20, 0x2909d: 0x6cddb620, 0x2909f: 0x6c871020,\n\t0x290a0: 0x6cd9fc20, 0x290a1: 0x6c871220,\n\t0x290a4: 0x6d245420, 0x290a7: 0x6d192020,\n\t0x290ad: 0x6d051220, 0x290ae: 0x6c028620, 0x290af: 0x6ce97420,\n\t0x290b0: 0x6cdb6220, 0x290b1: 0x6cd67a20, 0x290b3: 0x6d247020,\n\t0x290b5: 0x6c3c7a20,\n\t0x290b9: 0x6cdb6620, 0x290ba: 0x6ce9da20, 0x290bb: 0x6d247220,\n\t0x290bc: 0x6d331020, 0x290bd: 0x6d331220, 0x290bf: 0x6ce25420,\n\t// Block 0xa43, offset 0x290c0\n\t0x290c4: 0x6c8ee020, 0x290c6: 0x6c1a5c20, 0x290c7: 0x6cdc0620,\n\t0x290c8: 0x6ccad820,\n\t0x290cf: 0x6c47f420,\n\t0x290d0: 0x6c3c8a20, 0x290d1: 0x6c8b8420, 0x290d2: 0x6cb17a20,\n\t0x290d6: 0x6c87b620,\n\t0x290d8: 0x6c901820, 0x290d9: 0x6c1e7020, 0x290da: 0x6cff6220, 0x290db: 0x6c52e420,\n\t0x290dc: 0x6d029820, 0x290dd: 0x6ccf9420,\n\t0x290e0: 0x6c902620, 0x290e1: 0x6c53ea20, 0x290e2: 0x6d083e20, 0x290e3: 0x6c3c9620,\n\t0x290e5: 0x6c037420, 0x290e6: 0x6c0ecc20, 0x290e7: 0x6ce22620,\n\t0x290e8: 0x6cdabc20, 0x290e9: 0x6d2fb820, 0x290ea: 0x6c0c0220, 0x290eb: 0x6cd9c420,\n\t0x290ec: 0x6ce9aa20, 0x290ed: 0x6cdd8820, 0x290ee: 0x6cfefa20, 0x290ef: 0x6c527220,\n\t0x290f0: 0x6ccac620, 0x290f2: 0x6c3a1020,\n\t0x290f7: 0x6ca9aa20,\n\t0x290f8: 0x6c98ac20,\n\t0x290fd: 0x6c58ca20, 0x290fe: 0x6d343420,\n\t// Block 0xa44, offset 0x29100\n\t0x29102: 0x6d171620,\n\t0x29104: 0x6d22fe20, 0x29107: 0x6d14f020,\n\t0x29108: 0x6d264e20, 0x29109: 0x6c1b2220,\n\t0x29115: 0x6d1aea20, 0x29116: 0x6ca9a620, 0x29117: 0x6cc71420,\n\t0x2911b: 0x6ca34a20,\n\t0x29123: 0x6ce4a620,\n\t0x29125: 0x6c035020,\n\t0x2912a: 0x6c379c20, 0x2912b: 0x6d32dc20,\n\t0x2912c: 0x6c366a20, 0x2912d: 0x6cb3dc20, 0x2912e: 0x6c5efa20, 0x2912f: 0x6ca5f620,\n\t0x29131: 0x6c6f2020, 0x29132: 0x6c63d420,\n\t0x29135: 0x6c41a620,\n\t0x29139: 0x6c8d2e20, 0x2913b: 0x6d41bc20,\n\t0x2913e: 0x6c073820,\n\t// Block 0xa45, offset 0x29140\n\t0x29145: 0x6cd4f220, 0x29146: 0x6d15fc20, 0x29147: 0x6cabf420,\n\t0x2914b: 0x6ca50e20,\n\t0x2914c: 0x6cd3c020, 0x2914e: 0x6c97c620, 0x2914f: 0x6cd3c220,\n\t0x29151: 0x6ce35e20,\n\t0x29158: 0x6c45a420,\n\t0x2915d: 0x6c834420, 0x2915e: 0x6c061020, 0x2915f: 0x6d251020,\n\t0x29160: 0x6d422820, 0x29161: 0x6c80e620, 0x29162: 0x6d04f220,\n\t0x29165: 0x6d294220, 0x29166: 0x6c1a8620, 0x29167: 0x6c64e820,\n\t0x29168: 0x6c99b420, 0x29169: 0x6c63e220, 0x2916a: 0x6d23de20,\n\t0x2916d: 0x6d23e020, 0x2916e: 0x6d155420,\n\t0x29172: 0x6c982020, 0x29173: 0x6d294420,\n\t0x29175: 0x6d3ca820, 0x29176: 0x6ce37620,\n\t0x29179: 0x6cf8d620, 0x2917a: 0x6c716020, 0x2917b: 0x6d299e20,\n\t0x2917c: 0x6c92e420, 0x2917d: 0x6ce24420,\n\t// Block 0xa46, offset 0x29180\n\t0x29180: 0x6d3cb020, 0x29181: 0x6c8d6020, 0x29183: 0x6c729c20,\n\t0x29186: 0x6c5f4c20, 0x29187: 0x6c733020,\n\t0x2918a: 0x6d3e9a20,\n\t0x2918c: 0x6d265a20, 0x2918d: 0x6c301620,\n\t0x29192: 0x6ca47020,\n\t0x29196: 0x6c1d2420,\n\t0x2919f: 0x6c022020,\n\t0x291a3: 0x6c44e020,\n\t0x291a5: 0x6c0e9420, 0x291a6: 0x6c2fbc20, 0x291a7: 0x6cf02220,\n\t0x291ac: 0x6cc31a20, 0x291ad: 0x6c783a20,\n\t0x291b0: 0x6cb0cc20, 0x291b1: 0x6c76f420, 0x291b2: 0x6c3f0e20, 0x291b3: 0x6d1e6220,\n\t0x291b5: 0x6ce96620, 0x291b6: 0x6ce81e20, 0x291b7: 0x6d205a20,\n\t0x291b8: 0x6d10c020, 0x291ba: 0x6d126c20,\n\t0x291bd: 0x6d0ed220,\n\t// Block 0xa47, offset 0x291c0\n\t0x291c8: 0x6cfbb220, 0x291ca: 0x6ce38e20,\n\t0x291cc: 0x6cdc9820,\n\t0x291d0: 0x6c227420,\n\t0x291d4: 0x6d066220, 0x291d5: 0x6cf53820, 0x291d6: 0x6c117420, 0x291d7: 0x6d242420,\n\t0x291da: 0x6c15f820, 0x291db: 0x6cfa1020,\n\t0x291dd: 0x6c77ce20, 0x291de: 0x6c124220, 0x291df: 0x6c13bc20,\n\t0x291e0: 0x6cc0b420, 0x291e3: 0x6c267220,\n\t0x291e5: 0x6cdb5620,\n\t0x291e8: 0x6c571c20,\n\t0x291f7: 0x6cf38e20,\n\t0x291f8: 0x6d251a20,\n\t0x291fd: 0x6c681220, 0x291fe: 0x6cfe0820, 0x291ff: 0x6d2d0620,\n\t// Block 0xa48, offset 0x29200\n\t0x29200: 0x6cca3a20, 0x29201: 0x6ca09220, 0x29203: 0x6cce3e20,\n\t0x29204: 0x6c12a420, 0x29205: 0x6cdbe220, 0x29206: 0x6c208420, 0x29207: 0x6c9c9620,\n\t0x29208: 0x6d3a3420, 0x29209: 0x6c1d2820, 0x2920a: 0x6c62c220, 0x2920b: 0x6c1d2a20,\n\t0x29219: 0x6c889020,\n\t0x2921e: 0x6c4d8020,\n\t0x29224: 0x6c33c220, 0x29225: 0x6cfe0c20, 0x29226: 0x6c19ae20, 0x29227: 0x6cce4020,\n\t0x29228: 0x6c873820, 0x29229: 0x6c5a2c20,\n\t0x2922c: 0x6c2af820, 0x2922f: 0x6c897a20,\n\t0x29236: 0x6d28a420,\n\t0x2923a: 0x6c5e4420, 0x2923b: 0x6c8c0420,\n\t0x2923e: 0x6c31ee20, 0x2923f: 0x6c4f3620,\n\t// Block 0xa49, offset 0x29240\n\t0x29240: 0x6d1ddc20, 0x29241: 0x6d263a20, 0x29242: 0x6c4cf420, 0x29243: 0x6c8d9c20,\n\t0x29245: 0x6c88de20, 0x29247: 0x6c030220,\n\t0x29248: 0x6c292220, 0x29249: 0x6d194e20, 0x2924a: 0x6ca9e420, 0x2924b: 0x6ccde620,\n\t0x2924d: 0x6d035c20,\n\t0x29250: 0x6c26da20, 0x29251: 0x6d247420, 0x29252: 0x6c118220, 0x29253: 0x6cf33420,\n\t0x29254: 0x6c141420, 0x29255: 0x6c0fca20, 0x29257: 0x6c663020,\n\t0x2925e: 0x6c9bb820, 0x2925f: 0x6cf05e20,\n\t0x29260: 0x6ca09e20,\n\t0x29265: 0x6cd73820, 0x29266: 0x6c6b8220, 0x29267: 0x6cd7b220,\n\t0x29268: 0x6c5e5420, 0x2926b: 0x6c21ee20,\n\t0x2926d: 0x6c901420, 0x2926e: 0x6c582420,\n\t0x29270: 0x6ceada20, 0x29273: 0x6d220620,\n\t0x29276: 0x6c165a20, 0x29277: 0x6d1dee20,\n\t0x29278: 0x6c5e5e20, 0x2927a: 0x6c806820,\n\t0x2927f: 0x6ca30c20,\n\t// Block 0xa4a, offset 0x29280\n\t0x29280: 0x6c032220, 0x29281: 0x6c418020, 0x29282: 0x6d15cc20, 0x29283: 0x6c63ac20,\n\t0x29285: 0x6c269220, 0x29286: 0x6c2fa420, 0x29287: 0x6d0a8220,\n\t0x29288: 0x6cc59620, 0x29289: 0x6c732020, 0x2928a: 0x6ce94c20, 0x2928b: 0x6d064020,\n\t0x2928c: 0x6cd99220, 0x2928e: 0x6c128420, 0x2928f: 0x6c198e20,\n\t0x29291: 0x6c2f7020,\n\t0x2929a: 0x6c4d2620,\n\t0x2929f: 0x6cf47220,\n\t0x292a6: 0x6cb72020,\n\t0x292a8: 0x6c5f6820,\n\t0x292ae: 0x6c7cac20, 0x292af: 0x6cef5e20,\n\t0x292b6: 0x6cd44e20, 0x292b7: 0x6c3f2820,\n\t0x292b9: 0x6ce97a20, 0x292bb: 0x6c0cf020,\n\t0x292bd: 0x6cdff020, 0x292be: 0x6c4f5220, 0x292bf: 0x6cb1ce20,\n\t// Block 0xa4b, offset 0x292c0\n\t0x292c3: 0x6d217e20,\n\t0x292c4: 0x6cdffa20,\n\t0x292cc: 0x6cfd9020, 0x292ce: 0x6d050c20,\n\t0x292d3: 0x6cf26820,\n\t0x292d4: 0x6c4d8220, 0x292d5: 0x6caef220,\n\t0x292dd: 0x6ce04620, 0x292df: 0x6c0d0a20,\n\t0x292e0: 0x6cfd9e20, 0x292e3: 0x6d162e20,\n\t0x292e6: 0x6cb19020, 0x292e7: 0x6c586c20,\n\t0x292e8: 0x6ca24020, 0x292e9: 0x6c035220, 0x292eb: 0x6c396020,\n\t0x292ef: 0x6c2f6020,\n\t0x292f7: 0x6c3b3c20,\n\t0x292fa: 0x6c6bf620,\n\t0x292fe: 0x6cdd4a20,\n\t// Block 0xa4c, offset 0x29300\n\t0x29304: 0x6ced9220, 0x29305: 0x6c43a220,\n\t0x29308: 0x6c3b3e20, 0x2930a: 0x6ceb4420,\n\t0x2930c: 0x6cf1a620, 0x2930d: 0x6c487620, 0x2930e: 0x6c343620,\n\t0x29310: 0x6d308820, 0x29311: 0x6c22a020, 0x29312: 0x6d11ce20,\n\t0x29314: 0x6c050420, 0x29315: 0x6c10b820, 0x29316: 0x6ca15c20,\n\t0x29318: 0x6cb35e20, 0x2931b: 0x6c443020,\n\t0x2931e: 0x6c8e9220,\n\t0x29321: 0x6cc4d020,\n\t0x29328: 0x6c41b020, 0x2932a: 0x6c55a220, 0x2932b: 0x6ca1e620,\n\t0x2932e: 0x6d04f620, 0x2932f: 0x6c59a220,\n\t0x29330: 0x6c3f0220, 0x29331: 0x6c5b4220, 0x29333: 0x6cc1ca20,\n\t0x29334: 0x6c6b3e20, 0x29335: 0x6cead220, 0x29336: 0x6d21ac20, 0x29337: 0x6ca16820,\n\t0x29338: 0x6d38b220, 0x29339: 0x6c702820, 0x2933b: 0x6cd53c20,\n\t0x2933c: 0x6c7bae20, 0x2933d: 0x6cbf6620, 0x2933e: 0x6c8b2c20, 0x2933f: 0x6c405e20,\n\t// Block 0xa4d, offset 0x29340\n\t0x2934a: 0x6d074420,\n\t0x29356: 0x6c8c6e20,\n\t0x29358: 0x6ca88420, 0x2935a: 0x6caf9c20,\n\t0x2935c: 0x6c406e20, 0x2935d: 0x6c10c620, 0x2935e: 0x6d18e020,\n\t0x29361: 0x6c0f8620, 0x29363: 0x6c358420,\n\t0x29369: 0x6d30a620, 0x2936b: 0x6c86b820,\n\t0x2936e: 0x6ce92620, 0x2936f: 0x6c26cc20,\n\t0x29371: 0x6c931620, 0x29372: 0x6d0c4020, 0x29373: 0x6c301e20,\n\t0x29374: 0x6cbcfc20, 0x29375: 0x6ced5c20, 0x29376: 0x6ca03c20, 0x29377: 0x6d418020,\n\t0x29378: 0x6c408420, 0x29379: 0x6cc15620, 0x2937a: 0x6c078e20, 0x2937b: 0x6c02b420,\n\t0x2937c: 0x6cbaf620,\n\t// Block 0xa4e, offset 0x29380\n\t0x29381: 0x6cc44020,\n\t0x29388: 0x6cc41020, 0x29389: 0x6c576a20, 0x2938a: 0x6cfd2a20, 0x2938b: 0x6c7dd820,\n\t0x2938f: 0x6c258220,\n\t0x29392: 0x6d158820,\n\t0x29396: 0x6c1ae420, 0x29397: 0x6d404020,\n\t0x29398: 0x6ca52420, 0x29399: 0x6c1a5820, 0x2939a: 0x6c32a820, 0x2939b: 0x6d1e0620,\n\t0x2939c: 0x6d30e020, 0x2939e: 0x6ce0b020, 0x2939f: 0x6d0ff020,\n\t0x293a0: 0x6d011e20, 0x293a1: 0x6d07ec20, 0x293a3: 0x6c32e420,\n\t0x293a4: 0x6cd64c20, 0x293a5: 0x6cfbbe20, 0x293a6: 0x6cfbc020,\n\t0x293a9: 0x6c359e20,\n\t0x293b2: 0x6c7e5420,\n\t0x293b8: 0x6cf10220, 0x293b9: 0x6d1ec820, 0x293ba: 0x6d21e020,\n\t0x293bd: 0x6ce30420, 0x293bf: 0x6c6c7220,\n\t// Block 0xa4f, offset 0x293c0\n\t0x293c1: 0x6ce16420, 0x293c2: 0x6cb69e20,\n\t0x293c4: 0x6c2cec20, 0x293c5: 0x6ce1fe20, 0x293c6: 0x6c941820, 0x293c7: 0x6d2e9a20,\n\t0x293c8: 0x6cf17020, 0x293c9: 0x6c62d620, 0x293ca: 0x6c023820, 0x293cb: 0x6cabaa20,\n\t0x293cc: 0x6cb88420,\n\t0x293d0: 0x6cd21220, 0x293d1: 0x6cde2420,\n\t0x293d4: 0x6ca18e20,\n\t0x293d8: 0x6d1f9220,\n\t0x293e0: 0x6d2c6a20, 0x293e3: 0x6d117220,\n\t0x293eb: 0x6c1cfa20,\n\t0x293ec: 0x6c84b220, 0x293ed: 0x6d21f420, 0x293ee: 0x6c161420, 0x293ef: 0x6d143620,\n\t0x293f2: 0x6c1c9420,\n\t0x293f4: 0x6c84b420,\n\t0x293fd: 0x6ce90a20, 0x293ff: 0x6d40fe20,\n\t// Block 0xa50, offset 0x29400\n\t0x29402: 0x6cfbd620,\n\t0x29407: 0x6cf93620,\n\t0x29409: 0x6c0d0c20, 0x2940a: 0x6c4e4a20, 0x2940b: 0x6cb6b020,\n\t0x2940c: 0x6cca7a20, 0x2940e: 0x6c3a2c20,\n\t0x29410: 0x6ccdea20,\n\t0x29418: 0x6c584820,\n\t0x29420: 0x6c059a20, 0x29421: 0x6d220220, 0x29422: 0x6d220420,\n\t0x29424: 0x6c610420,\n\t0x29431: 0x6c7b0620, 0x29432: 0x6d3fe420,\n\t0x29439: 0x6cfd5420, 0x2943a: 0x6c9bc020,\n\t// Block 0xa51, offset 0x29440\n\t0x29443: 0x6c87b820,\n\t0x29444: 0x6d377820, 0x29445: 0x6c38fc20, 0x29446: 0x6c8b8820, 0x29447: 0x6c115620,\n\t0x29448: 0x6c320a20, 0x29449: 0x6c4a0020, 0x2944a: 0x6d04b020, 0x2944b: 0x6c84ea20,\n\t0x2944c: 0x6cb80c20, 0x2944f: 0x6c753420,\n\t0x29450: 0x6ceade20, 0x29452: 0x6c72d220, 0x29453: 0x6cff6420,\n\t0x29458: 0x6cc23420,\n\t0x2945c: 0x6d3bba20,\n\t0x29461: 0x6c754420,\n\t0x29466: 0x6c6bbc20,\n\t0x29468: 0x6d390620, 0x29469: 0x6cfc8820, 0x2946a: 0x6c8f7020, 0x2946b: 0x6d100420,\n\t0x2946c: 0x6cc4b220, 0x2946d: 0x6d16d620, 0x2946e: 0x6c8ae020, 0x2946f: 0x6c0e5620,\n\t0x29470: 0x6c5ce220, 0x29471: 0x6c61be20, 0x29472: 0x6c306a20, 0x29473: 0x6d386420,\n\t0x29474: 0x6cc29220, 0x29475: 0x6c6a9c20,\n\t0x2947a: 0x6c710820,\n\t0x2947c: 0x6c078620, 0x2947f: 0x6c087620,\n\t// Block 0xa52, offset 0x29480\n\t0x29480: 0x6c43fe20, 0x29481: 0x6c217c20, 0x29483: 0x6cb9a220,\n\t0x29484: 0x6cd9c820, 0x29485: 0x6cf0a020, 0x29486: 0x6c1a1420, 0x29487: 0x6c909020,\n\t0x29488: 0x6d213e20, 0x29489: 0x6c7e4620, 0x2948a: 0x6cb9a420, 0x2948b: 0x6c2cd220,\n\t0x2948c: 0x6cde0e20, 0x2948d: 0x6d2e6c20, 0x2948f: 0x6c38b620,\n\t0x29490: 0x6c8b5620, 0x29491: 0x6ce64420, 0x29492: 0x6c5ebe20, 0x29493: 0x6cb8de20,\n\t0x29494: 0x6c556820, 0x29497: 0x6d214220,\n\t0x29498: 0x6cb79c20, 0x29499: 0x6d214420, 0x2949a: 0x6cebe020,\n\t0x2949c: 0x6c03bc20, 0x2949d: 0x6cb61020, 0x2949e: 0x6cc95620, 0x2949f: 0x6cbb8620,\n\t0x294a0: 0x6d0bc220, 0x294a1: 0x6cfc1e20,\n\t0x294a8: 0x6c220820, 0x294a9: 0x6c396220, 0x294ab: 0x6c7dba20,\n\t0x294ac: 0x6c4be020, 0x294ad: 0x6cc39220, 0x294ae: 0x6c367a20, 0x294af: 0x6cbf4e20,\n\t0x294b2: 0x6c96d420, 0x294b3: 0x6c7a5820,\n\t0x294b4: 0x6d11c620, 0x294b7: 0x6cc39420,\n\t0x294b8: 0x6c1e6420, 0x294b9: 0x6c642c20, 0x294bb: 0x6d3a7a20,\n\t0x294bd: 0x6c331220, 0x294be: 0x6cec0a20,\n\t// Block 0xa53, offset 0x294c0\n\t0x294c0: 0x6ca51220,\n\t0x294c4: 0x6d0cce20, 0x294c5: 0x6ce78020,\n\t0x294cb: 0x6d03fe20,\n\t0x294cc: 0x6c4bee20, 0x294cd: 0x6cb26a20,\n\t0x294d1: 0x6d229c20, 0x294d2: 0x6c51ec20,\n\t0x294d4: 0x6d3da420, 0x294d7: 0x6ccf0020,\n\t0x294d8: 0x6d22a220, 0x294db: 0x6c62a620,\n\t0x294dd: 0x6cbaea20, 0x294de: 0x6cd73220, 0x294df: 0x6c21de20,\n\t0x294e0: 0x6d40e820, 0x294e1: 0x6c838e20, 0x294e2: 0x6ca60e20,\n\t0x294e4: 0x6cebf820, 0x294e5: 0x6d2c5c20, 0x294e7: 0x6c28d420,\n\t0x294ee: 0x6c328820, 0x294ef: 0x6c0bd020,\n\t0x294f0: 0x6c6a3e20, 0x294f1: 0x6cb87c20, 0x294f2: 0x6c519020, 0x294f3: 0x6c1d5e20,\n\t0x294f4: 0x6d0ce620, 0x294f6: 0x6d0ee020,\n\t0x294fa: 0x6cd94e20, 0x294fb: 0x6ce2c420,\n\t0x294fc: 0x6d11e020, 0x294fe: 0x6c779620,\n\t// Block 0xa54, offset 0x29500\n\t0x29500: 0x6d3c6e20, 0x29501: 0x6c4b9a20, 0x29502: 0x6c005a20, 0x29503: 0x6c4d8420,\n\t0x29508: 0x6cddb820, 0x29509: 0x6d076020, 0x2950a: 0x6c0c5020,\n\t0x2950c: 0x6c3cfc20, 0x2950d: 0x6cc15e20, 0x2950e: 0x6c98ae20,\n\t0x29510: 0x6c4ca020,\n\t0x29516: 0x6c0ac420, 0x29517: 0x6c751020,\n\t0x29518: 0x6c208a20, 0x2951b: 0x6cb47420,\n\t0x2951f: 0x6d195020,\n\t0x29522: 0x6cb95020, 0x29523: 0x6d196220,\n\t0x29524: 0x6c36ec20, 0x29525: 0x6c8da620, 0x29527: 0x6c0ace20,\n\t0x2952d: 0x6c5e5620, 0x2952e: 0x6ca0b620,\n\t0x29531: 0x6d09ce20,\n\t0x29534: 0x6d0f1e20,\n\t0x29538: 0x6c87ba20, 0x2953a: 0x6ce04e20,\n\t0x2953e: 0x6c947e20,\n\t// Block 0xa55, offset 0x29540\n\t0x29540: 0x6c769020, 0x29541: 0x6c99aa20, 0x29542: 0x6cfefc20,\n\t0x29547: 0x6c007220,\n\t0x2954a: 0x6cde1420,\n\t0x2954d: 0x6c9aac20, 0x2954f: 0x6c4c4220,\n\t0x29553: 0x6c432220,\n\t0x29554: 0x6ca4c220, 0x29555: 0x6c4ffc20,\n\t0x29560: 0x6cc39820,\n\t0x29565: 0x6c12a620, 0x29566: 0x6ccb0a20,\n\t0x2956b: 0x6cb03c20,\n\t0x29572: 0x6d006220, 0x29573: 0x6cff6620,\n\t0x29574: 0x6c712c20,\n\t0x29579: 0x6c1a2420, 0x2957a: 0x6ca50820,\n\t// Block 0xa56, offset 0x29580\n\t0x29580: 0x6ca58e20,\n\t0x2958d: 0x6ca25220, 0x2958f: 0x6cce8020,\n\t0x29591: 0x6c2cda20,\n\t0x29594: 0x6c8d5220, 0x29596: 0x6d31f820, 0x29597: 0x6d11d020,\n\t0x29599: 0x6c404a20, 0x2959a: 0x6cb9c620, 0x2959b: 0x6cbf5820,\n\t0x2959c: 0x6c715620, 0x2959d: 0x6c0e2c20, 0x2959e: 0x6c990620, 0x2959f: 0x6d2ce020,\n\t0x295a0: 0x6cdf0820,\n\t0x295a4: 0x6c1ce020,\n\t0x295ab: 0x6d2d3220,\n\t0x295ad: 0x6cd1f420, 0x295ae: 0x6d1e7c20,\n\t0x295b0: 0x6cbf6820, 0x295b1: 0x6c2a3820, 0x295b2: 0x6ce42620, 0x295b3: 0x6d3c7820,\n\t0x295b5: 0x6d1b8020, 0x295b7: 0x6ca51820,\n\t0x295b8: 0x6c0e9620, 0x295b9: 0x6c7bb220, 0x295ba: 0x6d355220, 0x295bb: 0x6c34ba20,\n\t0x295bc: 0x6c236220, 0x295bd: 0x6c061620,\n\t// Block 0xa57, offset 0x295c0\n\t0x295c7: 0x6c846820,\n\t0x295ca: 0x6c716c20, 0x295cb: 0x6cf1bc20,\n\t0x295cc: 0x6c8b3e20, 0x295cf: 0x6cf2c620,\n\t0x295d0: 0x6cd2de20, 0x295d1: 0x6ca7b620, 0x295d2: 0x6c987c20, 0x295d3: 0x6c6f8c20,\n\t0x295d8: 0x6d050020,\n\t0x295dd: 0x6cf2a420, 0x295df: 0x6c2a4020,\n\t0x295e1: 0x6cf70e20, 0x295e2: 0x6c01e020, 0x295e3: 0x6c26ce20,\n\t0x295e4: 0x6d401020, 0x295e5: 0x6c4f2a20, 0x295e6: 0x6c20ea20, 0x295e7: 0x6c089820,\n\t0x295e9: 0x6c309020, 0x295eb: 0x6d2f1220,\n\t0x295ef: 0x6d0b0220,\n\t0x295f2: 0x6c2bac20, 0x295f3: 0x6c5d6420,\n\t0x295f7: 0x6c9f8020,\n\t0x295fa: 0x6c408820,\n\t0x295fc: 0x6c061e20, 0x295fd: 0x6c78e420, 0x295fe: 0x6c991020, 0x295ff: 0x6cc55820,\n\t// Block 0xa58, offset 0x29600\n\t0x29600: 0x6d3fda20, 0x29601: 0x6cb88020, 0x29602: 0x6cf98020, 0x29603: 0x6cda0220,\n\t0x29604: 0x6d050e20, 0x29605: 0x6ca36e20,\n\t0x29609: 0x6c979620,\n\t0x2960e: 0x6d2c0820, 0x2960f: 0x6c154a20,\n\t0x29610: 0x6ccf8420, 0x29611: 0x6cf2ca20,\n\t0x29616: 0x6c005c20, 0x29617: 0x6c059820,\n\t0x29618: 0x6c4fb820, 0x2961a: 0x6ccad420, 0x2961b: 0x6cddba20,\n\t0x2961c: 0x6ce44020, 0x2961d: 0x6d0bcc20, 0x2961f: 0x6c0e3a20,\n\t0x29620: 0x6cc6e420,\n\t0x2962b: 0x6ccc2c20,\n\t0x2962c: 0x6cf26a20, 0x2962f: 0x6c028a20,\n\t0x29631: 0x6d3c2820, 0x29633: 0x6cb1c020,\n\t0x29634: 0x6cdbe820, 0x29635: 0x6d143820, 0x29636: 0x6cda0420, 0x29637: 0x6c30d220,\n\t0x29638: 0x6cda0620, 0x29639: 0x6c956e20,\n\t// Block 0xa59, offset 0x29640\n\t0x29643: 0x6c3afc20,\n\t0x29644: 0x6d422220, 0x29646: 0x6ca53c20, 0x29647: 0x6c2ac420,\n\t0x29648: 0x6d34c220, 0x29649: 0x6c25d020, 0x2964a: 0x6c8a5820, 0x2964b: 0x6c616420,\n\t0x2964c: 0x6c0ea020, 0x2964d: 0x6c23d020, 0x2964e: 0x6c1a6020, 0x2964f: 0x6c104e20,\n\t0x29651: 0x6cca1020, 0x29652: 0x6d29be20,\n\t0x29658: 0x6c69e420, 0x2965b: 0x6d125220,\n\t0x2965c: 0x6c920620, 0x2965e: 0x6c121420,\n\t0x29668: 0x6ca67020,\n\t0x29670: 0x6c6b8820, 0x29671: 0x6cb47c20, 0x29672: 0x6d3c5020, 0x29673: 0x6d29c820,\n\t0x2967a: 0x6c87c420,\n\t0x2967d: 0x6c7ed020,\n\t// Block 0xa5a, offset 0x29680\n\t0x29680: 0x6c1d0620, 0x29683: 0x6d2eae20,\n\t0x2968d: 0x6c0bb420, 0x2968e: 0x6cf23220,\n\t0x29693: 0x6c53de20,\n\t0x29697: 0x6cb1fc20,\n\t0x29699: 0x6ccb9e20,\n\t0x2969e: 0x6ca67220, 0x2969f: 0x6c3b4e20,\n\t0x296a0: 0x6d065620, 0x296a2: 0x6cd2da20,\n\t0x296a4: 0x6c72c220,\n\t0x296a8: 0x6c752420, 0x296aa: 0x6d24a220,\n\t0x296ac: 0x6c4c2a20, 0x296ad: 0x6c4c3420, 0x296af: 0x6c55a420,\n\t0x296b2: 0x6c869020, 0x296b3: 0x6d00fa20,\n\t0x296b4: 0x6c376c20, 0x296b5: 0x6d25b420, 0x296b6: 0x6c4d2e20,\n\t0x296b9: 0x6c6ebc20, 0x296bb: 0x6c78de20,\n\t0x296bd: 0x6d3fcc20, 0x296be: 0x6c3ae620,\n\t// Block 0xa5b, offset 0x296c0\n\t0x296c0: 0x6cae8820, 0x296c1: 0x6c44e220, 0x296c3: 0x6c652820,\n\t0x296c4: 0x6ca61220, 0x296c6: 0x6cfbc220, 0x296c7: 0x6c873c20,\n\t0x296c8: 0x6c17a820, 0x296ca: 0x6c377620, 0x296cb: 0x6c44e820,\n\t0x296cc: 0x6d247620, 0x296cd: 0x6c560420, 0x296ce: 0x6c3af820, 0x296cf: 0x6c028c20,\n\t0x296d3: 0x6c37b220,\n\t0x296d8: 0x6c78ec20, 0x296d9: 0x6c7ab620, 0x296da: 0x6c0fd020,\n\t0x296dd: 0x6d13a020, 0x296de: 0x6c69e820,\n\t0x296e6: 0x6c17ae20, 0x296e7: 0x6c44ec20,\n\t0x296e8: 0x6cc82e20, 0x296ea: 0x6d273c20,\n\t0x296ec: 0x6c8c1620,\n\t0x296f1: 0x6d24a620, 0x296f2: 0x6d274820, 0x296f3: 0x6d2d1220,\n\t0x296f4: 0x6cff6820, 0x296f7: 0x6c9f2420,\n\t0x296fb: 0x6c4af820,\n\t0x296fc: 0x6c6f6e20, 0x296fe: 0x6cebaa20,\n\t// Block 0xa5c, offset 0x29700\n\t0x29701: 0x6cf78220, 0x29702: 0x6cefd620, 0x29703: 0x6d3d6a20,\n\t0x29704: 0x6cf0a220, 0x29705: 0x6c7c8420,\n\t0x29708: 0x6c9a9820, 0x2970a: 0x6c505020, 0x2970b: 0x6c4f5020,\n\t0x2970c: 0x6c399a20, 0x2970d: 0x6ca96e20, 0x2970e: 0x6d205420, 0x2970f: 0x6c57a420,\n\t0x29712: 0x6c812420,\n\t0x29720: 0x6d3a1820, 0x29721: 0x6c4b1620, 0x29722: 0x6c0a1620, 0x29723: 0x6c642e20,\n\t0x29724: 0x6ce59c20, 0x29726: 0x6c93f020, 0x29727: 0x6c79a220,\n\t0x29728: 0x6d419420, 0x29729: 0x6c8d4620, 0x2972a: 0x6cb63220,\n\t0x2972c: 0x6d3a1e20,\n\t0x29731: 0x6c47ba20, 0x29732: 0x6d413020,\n\t0x29734: 0x6d0f6620, 0x29735: 0x6cda5620, 0x29737: 0x6c7c9620,\n\t0x29739: 0x6c167a20, 0x2973b: 0x6d113e20,\n\t0x2973e: 0x6d23e220,\n\t// Block 0xa5d, offset 0x29740\n\t0x29745: 0x6cd50420, 0x29746: 0x6c7f5420, 0x29747: 0x6d187620,\n\t0x29748: 0x6c30c420,\n\t0x2974c: 0x6cf3f020, 0x2974d: 0x6d1d1220, 0x2974e: 0x6c3f0420, 0x2974f: 0x6d3be820,\n\t0x29750: 0x6c3f8a20, 0x29752: 0x6cdb2a20, 0x29753: 0x6c853420,\n\t0x29754: 0x6d122820, 0x29755: 0x6cea1020,\n\t0x2975d: 0x6c4b7a20,\n\t0x29761: 0x6c940020, 0x29762: 0x6d0ed420, 0x29763: 0x6cb66620,\n\t0x29764: 0x6c813020, 0x29765: 0x6d3a3020, 0x29767: 0x6c4b1e20,\n\t0x29768: 0x6c551020,\n\t0x2976f: 0x6c6ddc20,\n\t0x29772: 0x6c1bc620,\n\t0x29775: 0x6c717220, 0x29776: 0x6d2c6020,\n\t0x29778: 0x6c9e8020,\n\t// Block 0xa5e, offset 0x29780\n\t0x29780: 0x6d39da20, 0x29781: 0x6c41ba20, 0x29782: 0x6d047620, 0x29783: 0x6c60e620,\n\t0x29787: 0x6cccaa20,\n\t0x29788: 0x6c9ab620, 0x29789: 0x6d287420,\n\t0x2978d: 0x6cd48820,\n\t0x29790: 0x6c941a20, 0x29791: 0x6d206020, 0x29792: 0x6c681420, 0x29793: 0x6caacc20,\n\t0x29798: 0x6c72c420, 0x29799: 0x6d206220,\n\t0x2979c: 0x6d195220, 0x2979d: 0x6ce2ce20, 0x2979e: 0x6cef7220, 0x2979f: 0x6c17f620,\n\t0x297a0: 0x6c8c8620, 0x297a1: 0x6c483020, 0x297a3: 0x6c875a20,\n\t0x297a4: 0x6c8ab020, 0x297a7: 0x6c68ac20,\n\t0x297a8: 0x6d0ff620, 0x297a9: 0x6c0c5e20, 0x297aa: 0x6cb6a220,\n\t0x297ae: 0x6d196420,\n\t0x297b1: 0x6c0d7620, 0x297b2: 0x6c9bbc20, 0x297b3: 0x6c145a20,\n\t0x297b5: 0x6c41be20,\n\t0x297b9: 0x6cc21c20, 0x297ba: 0x6c2bc020, 0x297bb: 0x6c82a020,\n\t// Block 0xa5f, offset 0x297c0\n\t0x297c0: 0x6c8dcc20,\n\t0x297c4: 0x6c585220, 0x297c5: 0x6cc23220, 0x297c7: 0x6c959c20,\n\t0x297c9: 0x6c7cc820,\n\t0x297cd: 0x6cc08020, 0x297ce: 0x6d227620, 0x297cf: 0x6c57a620,\n\t0x297d3: 0x6c833a20,\n\t0x297d5: 0x6cc60620, 0x297d6: 0x6cffb620, 0x297d7: 0x6cd8da20,\n\t0x297da: 0x6c327220, 0x297db: 0x6c0cb420,\n\t0x297e0: 0x6ca97020, 0x297e2: 0x6c51e020, 0x297e3: 0x6cadc420,\n\t0x297e5: 0x6c3acc20, 0x297e6: 0x6ca2aa20,\n\t0x297e9: 0x6c3d9620,\n\t0x297ec: 0x6c55a820, 0x297ed: 0x6cedec20, 0x297ee: 0x6ccc1420,\n\t0x297f0: 0x6c687420, 0x297f1: 0x6cf47420,\n\t0x297f9: 0x6c404c20,\n\t// Block 0xa60, offset 0x29800\n\t0x29801: 0x6c0df620, 0x29802: 0x6d3b3020,\n\t0x29804: 0x6d3a2a20, 0x29805: 0x6c1ada20, 0x29807: 0x6cd07c20,\n\t0x29808: 0x6c550820, 0x29809: 0x6c101e20,\n\t0x2980e: 0x6cc4d420,\n\t0x29816: 0x6ca2b620,\n\t0x29818: 0x6c869220, 0x2981b: 0x6c638820,\n\t0x2981e: 0x6c96e020,\n\t0x29821: 0x6c9b6820, 0x29822: 0x6ca1f020, 0x29823: 0x6d38b820,\n\t0x29824: 0x6cfc3820, 0x29825: 0x6c5b7420, 0x29826: 0x6c48fc20, 0x29827: 0x6c702c20,\n\t0x29829: 0x6ca2b820, 0x2982b: 0x6cc82a20,\n\t0x2982d: 0x6cf3fc20, 0x2982f: 0x6cc7d820,\n\t0x29831: 0x6d2ce620,\n\t// Block 0xa61, offset 0x29840\n\t0x29841: 0x6caae220, 0x29842: 0x6d010a20,\n\t0x29844: 0x6c680220,\n\t0x2984b: 0x6c853a20,\n\t0x2984c: 0x6cd51020, 0x2984d: 0x6d190020, 0x2984e: 0x6c2bae20, 0x2984f: 0x6cbe9220,\n\t0x29850: 0x6c717420, 0x29853: 0x6d373620,\n\t0x29855: 0x6c80f020, 0x29856: 0x6c10ca20, 0x29857: 0x6c7bca20,\n\t0x29858: 0x6d190220, 0x2985a: 0x6c0f9a20,\n\t0x29867: 0x6c1c8c20,\n\t0x2986d: 0x6c680c20, 0x2986f: 0x6cf32a20,\n\t0x29870: 0x6d0aac20,\n\t0x29875: 0x6cea3220, 0x29876: 0x6c987e20,\n\t0x29878: 0x6c39b220, 0x29879: 0x6d3dce20, 0x2987b: 0x6cb88220,\n\t0x2987d: 0x6cde2220, 0x2987e: 0x6cb68a20,\n\t// Block 0xa62, offset 0x29880\n\t0x29880: 0x6caf1e20, 0x29881: 0x6c0cc620, 0x29882: 0x6c3bfe20, 0x29883: 0x6ce92820,\n\t0x29884: 0x6c57d220, 0x29887: 0x6c36d220,\n\t0x2988b: 0x6c36d420,\n\t0x2988e: 0x6c2fc420,\n\t0x29890: 0x6cc7e220,\n\t0x29896: 0x6c36d620,\n\t0x2989e: 0x6d0ef020, 0x2989f: 0x6cd8f820,\n\t0x298a5: 0x6d1cc020, 0x298a6: 0x6ca61620, 0x298a7: 0x6ca61820,\n\t0x298a8: 0x6d158e20,\n\t0x298b9: 0x6c9c9820,\n\t0x298be: 0x6d129820, 0x298bf: 0x6cb32620,\n\t// Block 0xa63, offset 0x298c0\n\t0x298c0: 0x6c240420, 0x298c2: 0x6cf11820,\n\t0x298c4: 0x6c4d8820, 0x298c5: 0x6d1c2820, 0x298c7: 0x6ce6a020,\n\t0x298c8: 0x6d375e20, 0x298c9: 0x6c3a2a20, 0x298ca: 0x6d1f9420,\n\t0x298cd: 0x6c7cb020, 0x298ce: 0x6c01e220, 0x298cf: 0x6c03d220,\n\t0x298d1: 0x6c4f3420,\n\t0x298de: 0x6ca41620, 0x298df: 0x6ca3da20,\n\t0x298e2: 0x6c6df420,\n\t0x298e5: 0x6ceece20,\n\t0x298f1: 0x6c1f8e20, 0x298f3: 0x6cddbe20,\n\t0x298f4: 0x6ce20020, 0x298f5: 0x6cb6a620, 0x298f6: 0x6ce16620, 0x298f7: 0x6cf05a20,\n\t0x298f8: 0x6c41fc20, 0x298fa: 0x6c446420,\n\t0x298fc: 0x6c4f3820, 0x298fe: 0x6ca37420, 0x298ff: 0x6c446620,\n\t// Block 0xa64, offset 0x29900\n\t0x29904: 0x6d331420,\n\t0x29917: 0x6cde2820,\n\t0x2991b: 0x6cd84c20,\n\t0x2991d: 0x6ca6de20, 0x2991e: 0x6cca9820,\n\t0x2992b: 0x6d012a20,\n\t0x2992f: 0x6d410220,\n\t0x29930: 0x6d21fc20, 0x29931: 0x6ca6e020, 0x29932: 0x6cb55420,\n\t0x29935: 0x6cd03220,\n\t0x2993c: 0x6c102020,\n\t// Block 0xa65, offset 0x29940\n\t0x2994b: 0x6c7d9a20,\n\t0x2994c: 0x6c84c420, 0x2994e: 0x6c488220,\n\t0x29956: 0x6d0e1c20, 0x29957: 0x6c10d220,\n\t0x29958: 0x6c672a20, 0x2995a: 0x6cf40e20, 0x2995b: 0x6c134420,\n\t0x2995c: 0x6c8c0e20, 0x2995d: 0x6d3c0420, 0x2995f: 0x6c5b0e20,\n\t0x29961: 0x6ce7a620, 0x29962: 0x6d2ca220,\n\t0x29964: 0x6c522c20, 0x29967: 0x6c4ce220,\n\t0x29971: 0x6c6e4220,\n\t0x29975: 0x6c2f1620, 0x29977: 0x6d1cdc20,\n\t0x2997c: 0x6d377420,\n\t// Block 0xa66, offset 0x29980\n\t0x29982: 0x6cf06620,\n\t0x29984: 0x6c62fa20, 0x29985: 0x6cc73620,\n\t0x29988: 0x6c030620, 0x29989: 0x6c292420, 0x2998a: 0x6c958a20, 0x2998b: 0x6d13a220,\n\t0x2998c: 0x6ceed220,\n\t0x29992: 0x6cbb3220,\n\t0x29999: 0x6c446c20, 0x2999a: 0x6c62fc20,\n\t0x299a6: 0x6d409620,\n\t0x299a8: 0x6d15a620, 0x299ab: 0x6d2ca420,\n\t0x299ad: 0x6c8b8c20,\n\t0x299b4: 0x6d13a820,\n\t0x299bc: 0x6d2dd420,\n\t// Block 0xa67, offset 0x299c0\n\t0x299c0: 0x6c1e1620, 0x299c1: 0x6c0c6620,\n\t0x299c6: 0x6d077020, 0x299c7: 0x6d1eda20,\n\t0x299cd: 0x6d029a20, 0x299ce: 0x6cef7c20, 0x299cf: 0x6c87ca20,\n\t0x299db: 0x6c0fdc20,\n\t0x299dc: 0x6c664c20, 0x299dd: 0x6c158220, 0x299de: 0x6c7d9e20,\n\t0x299e1: 0x6cbe9a20,\n\t0x299e7: 0x6cd6ce20,\n\t0x299e8: 0x6cf76420, 0x299e9: 0x6cc23620,\n\t0x299f0: 0x6c95a020, 0x299f3: 0x6c294c20,\n\t0x299f4: 0x6ca71020, 0x299f5: 0x6c855a20, 0x299f7: 0x6c03e420,\n\t0x299f9: 0x6c365220, 0x299fa: 0x6c3d7a20, 0x299fb: 0x6c400620,\n\t0x299fc: 0x6c5d1220, 0x299fd: 0x6d2cd820, 0x299fe: 0x6c014420,\n\t// Block 0xa68, offset 0x29a00\n\t0x29a01: 0x6cc09620, 0x29a02: 0x6c1dd620, 0x29a03: 0x6c9e3c20,\n\t0x29a04: 0x6d0aa620, 0x29a05: 0x6ce92420, 0x29a06: 0x6ca60c20, 0x29a07: 0x6c570220,\n\t0x29a08: 0x6cd50a20, 0x29a0a: 0x6d05f620, 0x29a0b: 0x6d384620,\n\t0x29a0c: 0x6c776220,\n\t0x29a12: 0x6cfee220, 0x29a13: 0x6cfee420,\n\t0x29a14: 0x6c22d420, 0x29a15: 0x6c1c3c20, 0x29a17: 0x6c2dd220,\n\t0x29a18: 0x6d181420, 0x29a1a: 0x6c2f6420,\n\t0x29a1d: 0x6c4ef620, 0x29a1e: 0x6cece420,\n\t0x29a20: 0x6d160220, 0x29a21: 0x6c066020, 0x29a22: 0x6d184220,\n\t0x29a27: 0x6d0a9e20,\n\t0x29a2c: 0x6cfdd420,\n\t0x29a33: 0x6c08a420,\n\t0x29a36: 0x6c6b3020, 0x29a37: 0x6c43a620,\n\t0x29a38: 0x6d2b5620, 0x29a3a: 0x6d326a20, 0x29a3b: 0x6c55aa20,\n\t0x29a3c: 0x6cf6b420, 0x29a3d: 0x6d02e820, 0x29a3e: 0x6cff1220, 0x29a3f: 0x6c404e20,\n\t// Block 0xa69, offset 0x29a40\n\t0x29a40: 0x6d383c20, 0x29a42: 0x6c99b620, 0x29a43: 0x6d02ea20,\n\t0x29a44: 0x6cbad820,\n\t0x29a48: 0x6c3b9220, 0x29a49: 0x6c049820, 0x29a4a: 0x6c583220,\n\t0x29a51: 0x6c687620, 0x29a53: 0x6c066620,\n\t0x29a54: 0x6d0af820, 0x29a55: 0x6d114020,\n\t0x29a5b: 0x6cf8d820,\n\t0x29a5d: 0x6c729e20, 0x29a5f: 0x6cc27c20,\n\t0x29a60: 0x6d26f020, 0x29a61: 0x6cdf4220, 0x29a62: 0x6ce81820, 0x29a63: 0x6ca16c20,\n\t0x29a64: 0x6d2c5420, 0x29a65: 0x6cc1ce20, 0x29a67: 0x6c3da620,\n\t0x29a69: 0x6cc1d020, 0x29a6a: 0x6c1c7e20,\n\t0x29a6c: 0x6d1f7c20,\n\t0x29a77: 0x6ce38620,\n\t0x29a7a: 0x6cebf020,\n\t0x29a7d: 0x6ceb5620, 0x29a7f: 0x6c1eb220,\n\t// Block 0xa6a, offset 0x29a80\n\t0x29a81: 0x6c43b020,\n\t0x29a88: 0x6d251620, 0x29a89: 0x6c43b220, 0x29a8a: 0x6cc1d220,\n\t0x29a8f: 0x6c72a020,\n\t0x29a92: 0x6c2ef820, 0x29a93: 0x6d157e20,\n\t0x29a94: 0x6cd20820, 0x29a95: 0x6d18e420, 0x29a97: 0x6c4b2020,\n\t0x29a98: 0x6c680420, 0x29a9a: 0x6cd94420, 0x29a9b: 0x6cbf7220,\n\t0x29a9d: 0x6c36c220, 0x29a9e: 0x6c59a420, 0x29a9f: 0x6c5b4620,\n\t0x29aa0: 0x6d0a4620, 0x29aa3: 0x6c717020,\n\t0x29aa5: 0x6d2d2220, 0x29aa6: 0x6c1c8220, 0x29aa7: 0x6c81c020,\n\t0x29aa9: 0x6cb66820, 0x29aaa: 0x6d050420,\n\t0x29aac: 0x6c5af620, 0x29aad: 0x6ce79820,\n\t0x29aba: 0x6c407220,\n\t0x29abd: 0x6d0a4820, 0x29abe: 0x6c6b4e20, 0x29abf: 0x6c9d0620,\n\t// Block 0xa6b, offset 0x29ac0\n\t0x29ac0: 0x6d242820,\n\t0x29ac8: 0x6d3c4a20, 0x29ac9: 0x6c688e20, 0x29aca: 0x6d373820, 0x29acb: 0x6c1a5220,\n\t0x29acd: 0x6c6b6c20, 0x29ace: 0x6cff3220, 0x29acf: 0x6c18f220,\n\t0x29ad0: 0x6c848220, 0x29ad1: 0x6d26fe20, 0x29ad3: 0x6d373a20,\n\t0x29ad4: 0x6c818820, 0x29ad5: 0x6cf32c20, 0x29ad6: 0x6cc1ea20,\n\t0x29ad8: 0x6cedce20, 0x29ada: 0x6d142e20, 0x29adb: 0x6d190420,\n\t0x29adc: 0x6c80f220, 0x29ade: 0x6ce7fa20, 0x29adf: 0x6c015c20,\n\t0x29ae0: 0x6c74e420, 0x29ae1: 0x6d0ee420,\n\t0x29ae5: 0x6c72b020, 0x29ae7: 0x6d327620,\n\t0x29ae9: 0x6d373c20, 0x29aea: 0x6c98a820,\n\t0x29aee: 0x6d055420,\n\t0x29af1: 0x6c208020, 0x29af2: 0x6c1e6c20,\n\t0x29af8: 0x6cbafc20, 0x29af9: 0x6c3a2620, 0x29afa: 0x6c16d420,\n\t0x29afc: 0x6c9dec20, 0x29afd: 0x6cdb5a20, 0x29afe: 0x6c02b820,\n\t// Block 0xa6c, offset 0x29b00\n\t0x29b00: 0x6c3f9620,\n\t0x29b04: 0x6cf10620, 0x29b05: 0x6d342420, 0x29b06: 0x6c9f8220, 0x29b07: 0x6c168820,\n\t0x29b08: 0x6d0cfa20, 0x29b09: 0x6d245820, 0x29b0b: 0x6c408a20,\n\t0x29b0c: 0x6cded020, 0x29b0d: 0x6c616020, 0x29b0f: 0x6c3aee20,\n\t0x29b12: 0x6c55f620, 0x29b13: 0x6c70e220,\n\t0x29b15: 0x6d22ac20,\n\t0x29b1b: 0x6cb69220,\n\t0x29b1c: 0x6c9a3820, 0x29b1f: 0x6c0ccc20,\n\t0x29b20: 0x6c4cd820,\n\t0x29b24: 0x6ca04c20, 0x29b26: 0x6ced5e20, 0x29b27: 0x6ced6020,\n\t0x29b34: 0x6c6dec20, 0x29b35: 0x6d245a20, 0x29b36: 0x6cfbce20,\n\t0x29b39: 0x6c212a20, 0x29b3a: 0x6c60f820,\n\t0x29b3c: 0x6cfd9620, 0x29b3d: 0x6cae4420, 0x29b3e: 0x6c409220,\n\t// Block 0xa6d, offset 0x29b40\n\t0x29b42: 0x6c8ed820,\n\t0x29b44: 0x6cc9da20, 0x29b45: 0x6d08f020, 0x29b46: 0x6d409220,\n\t0x29b48: 0x6c6b7e20, 0x29b4b: 0x6d2dc220,\n\t0x29b4d: 0x6d21e820, 0x29b4e: 0x6d21ea20, 0x29b4f: 0x6c9a4020,\n\t0x29b50: 0x6c9ea820, 0x29b51: 0x6c99c020, 0x29b52: 0x6c346a20, 0x29b53: 0x6c409420,\n\t0x29b5b: 0x6c671820,\n\t0x29b66: 0x6c9e8420,\n\t0x29b68: 0x6c023a20,\n\t0x29b6d: 0x6c78e620,\n\t0x29b76: 0x6c544420,\n\t0x29b7a: 0x6c46e420,\n\t0x29b7c: 0x6cf74c20, 0x29b7e: 0x6cc6e820, 0x29b7f: 0x6c43be20,\n\t// Block 0xa6e, offset 0x29b80\n\t0x29b80: 0x6cac9220, 0x29b81: 0x6d25d420, 0x29b82: 0x6cfa5e20,\n\t0x29b85: 0x6ccc2e20, 0x29b86: 0x6cafa620,\n\t0x29b88: 0x6cbe9620, 0x29b89: 0x6d1dde20, 0x29b8a: 0x6cc20220,\n\t0x29b8c: 0x6c462820, 0x29b8e: 0x6c446820, 0x29b8f: 0x6cfb0820,\n\t0x29b91: 0x6cdb6820,\n\t0x29b95: 0x6c04ae20, 0x29b96: 0x6cb6a820, 0x29b97: 0x6c548820,\n\t0x29b9b: 0x6cf74e20,\n\t0x29b9d: 0x6cf39220,\n\t0x29bad: 0x6cb55620, 0x29bae: 0x6c56ec20, 0x29baf: 0x6c4aae20,\n\t0x29bb1: 0x6c2bbc20, 0x29bb2: 0x6cce2c20, 0x29bb3: 0x6c975220,\n\t0x29bb4: 0x6c9fde20, 0x29bb5: 0x6c62ea20, 0x29bb6: 0x6cf7c820, 0x29bb7: 0x6cfb1020,\n\t0x29bb8: 0x6c610220, 0x29bb9: 0x6c16d820, 0x29bba: 0x6c7a1220, 0x29bbb: 0x6c1cfc20,\n\t// Block 0xa6f, offset 0x29bc0\n\t0x29bc2: 0x6d2ef020, 0x29bc3: 0x6cb1aa20,\n\t0x29bc4: 0x6cdb6c20, 0x29bc5: 0x6c94cc20, 0x29bc6: 0x6c84c620, 0x29bc7: 0x6c9c2020,\n\t0x29bc8: 0x6c1cfe20, 0x29bc9: 0x6ce47c20, 0x29bcb: 0x6c8da820,\n\t0x29bcd: 0x6c1c9a20,\n\t0x29bd6: 0x6c1d0020,\n\t0x29bd9: 0x6c1c9c20,\n\t0x29bdd: 0x6ca7c820, 0x29bdf: 0x6d1e0a20,\n\t0x29bee: 0x6c9db020,\n\t0x29bf0: 0x6cd51e20, 0x29bf2: 0x6cf93820,\n\t0x29bf4: 0x6c36f620, 0x29bf5: 0x6d3ec820,\n\t0x29bf8: 0x6c6b8420, 0x29bf9: 0x6c5faa20, 0x29bfa: 0x6c53e820, 0x29bfb: 0x6cd18220,\n\t0x29bfc: 0x6c879c20, 0x29bfe: 0x6cb55c20,\n\t// Block 0xa70, offset 0x29c00\n\t0x29c00: 0x6d38c620, 0x29c01: 0x6cd85820, 0x29c02: 0x6cc21e20,\n\t0x29c0b: 0x6d013420,\n\t0x29c17: 0x6cd85a20,\n\t0x29c1b: 0x6d061220,\n\t0x29c20: 0x6c409e20,\n\t0x29c2f: 0x6ca9e620,\n\t0x29c30: 0x6d0bd020, 0x29c31: 0x6c8ef020, 0x29c32: 0x6c643420, 0x29c33: 0x6c4ab020,\n\t0x29c34: 0x6c7cc020, 0x29c35: 0x6c1ca220, 0x29c36: 0x6c121620, 0x29c37: 0x6c1ed020,\n\t0x29c39: 0x6c4c5020, 0x29c3b: 0x6c285a20,\n\t0x29c3f: 0x6c672e20,\n\t// Block 0xa71, offset 0x29c40\n\t0x29c41: 0x6c292620, 0x29c42: 0x6c548c20,\n\t0x29c44: 0x6c7a1420, 0x29c46: 0x6c1f9220, 0x29c47: 0x6cb96220,\n\t0x29c48: 0x6c010c20, 0x29c4a: 0x6cb0e420,\n\t0x29c51: 0x6d0abc20, 0x29c52: 0x6c6dfc20, 0x29c53: 0x6c9c2620,\n\t0x29c55: 0x6c0d7a20, 0x29c56: 0x6c801620, 0x29c57: 0x6c47fa20,\n\t0x29c58: 0x6c1e1420, 0x29c5b: 0x6d1dec20,\n\t0x29c5c: 0x6c488420, 0x29c5d: 0x6d220a20, 0x29c5e: 0x6d397420,\n\t0x29c6d: 0x6c115820, 0x29c6f: 0x6c8ef420,\n\t0x29c70: 0x6c105420, 0x29c71: 0x6c965820, 0x29c72: 0x6c6b8c20, 0x29c73: 0x6d31a820,\n\t0x29c74: 0x6c9f2220, 0x29c75: 0x6c4a1620, 0x29c77: 0x6c63f820,\n\t0x29c79: 0x6c7ed220,\n\t// Block 0xa72, offset 0x29c80\n\t0x29c80: 0x6cd48c20, 0x29c83: 0x6c4c5220,\n\t0x29c86: 0x6c9c2820, 0x29c87: 0x6cb9ea20,\n\t0x29c88: 0x6c7f8420, 0x29c8a: 0x6c51b220, 0x29c8b: 0x6ce97c20,\n\t0x29c91: 0x6c5b1020,\n\t0x29c98: 0x6c52e620,\n\t0x29c9c: 0x6c93c820, 0x29c9f: 0x6c63fa20,\n\t0x29ca5: 0x6c4ab220,\n\t0x29ca8: 0x6d144420, 0x29ca9: 0x6c585420,\n\t0x29cb0: 0x6c95a220,\n\t0x29cb4: 0x6c754620,\n\t0x29cb8: 0x6c49ce20, 0x29cbb: 0x6cc34820,\n\t0x29cbc: 0x6ca7cc20, 0x29cbf: 0x6c97b220,\n\t// Block 0xa73, offset 0x29cc0\n\t0x29cc2: 0x6d282420, 0x29cc3: 0x6cf18a20,\n\t0x29cc4: 0x6c1c0c20, 0x29cc5: 0x6c1c1820, 0x29cc6: 0x6d33dc20,\n\t0x29cc8: 0x6c224420, 0x29cc9: 0x6d3c3e20, 0x29cca: 0x6c573c20, 0x29ccb: 0x6c6ac020,\n\t0x29ccc: 0x6cc19e20, 0x29ccd: 0x6ce86620, 0x29cce: 0x6c9f6a20, 0x29ccf: 0x6c9a2020,\n\t0x29cd0: 0x6d218020, 0x29cd1: 0x6c026e20, 0x29cd2: 0x6c049a20,\n\t0x29cd4: 0x6caf8c20, 0x29cd5: 0x6d31a420, 0x29cd6: 0x6c91d020, 0x29cd7: 0x6c1c5420,\n\t0x29cd8: 0x6ce7f620, 0x29cda: 0x6c6a3420,\n\t0x29cdc: 0x6d2da420,\n\t0x29ce2: 0x6c6c6820, 0x29ce3: 0x6c91f020,\n\t0x29ce6: 0x6c670a20, 0x29ce7: 0x6ce0b420,\n\t0x29ce8: 0x6c168a20, 0x29cea: 0x6c22ee20,\n\t0x29ced: 0x6cec5c20, 0x29cee: 0x6c240620, 0x29cef: 0x6c771a20,\n\t0x29cf1: 0x6c0bd820,\n\t0x29cf8: 0x6cf17620, 0x29cfb: 0x6cb95620,\n\t0x29cff: 0x6c424220,\n\t// Block 0xa74, offset 0x29d00\n\t0x29d02: 0x6c5ca220,\n\t0x29d04: 0x6c420620, 0x29d06: 0x6c630020, 0x29d07: 0x6c424620,\n\t0x29d09: 0x6c580820,\n\t0x29d0d: 0x6cd8dc20,\n\t0x29d10: 0x6c3d9a20,\n\t0x29d15: 0x6cb01620, 0x29d17: 0x6c10d620,\n\t0x29d1c: 0x6c07c620,\n\t0x29d22: 0x6cd2dc20,\n\t0x29d25: 0x6c58b020, 0x29d27: 0x6c4a9420,\n\t0x29d2a: 0x6cab9620,\n\t0x29d33: 0x6cad7020,\n\t0x29d35: 0x6d1d2020, 0x29d36: 0x6ce6e620, 0x29d37: 0x6d001820,\n\t0x29d39: 0x6d3b3620, 0x29d3b: 0x6d21d220,\n\t// Block 0xa75, offset 0x29d40\n\t0x29d41: 0x6c66fa20,\n\t0x29d44: 0x6cc25420, 0x29d45: 0x6ced6220, 0x29d46: 0x6c7d9220, 0x29d47: 0x6d3c7220,\n\t0x29d49: 0x6d245c20, 0x29d4a: 0x6c4cda20, 0x29d4b: 0x6cb2de20,\n\t0x29d4c: 0x6d41a420, 0x29d4d: 0x6d40fa20, 0x29d4f: 0x6d39e820,\n\t0x29d50: 0x6caa9c20, 0x29d51: 0x6d39ea20,\n\t0x29d56: 0x6cb17620, 0x29d57: 0x6c9cac20,\n\t0x29d5c: 0x6c0ad220, 0x29d5d: 0x6cdb6e20,\n\t0x29d61: 0x6cb47a20, 0x29d62: 0x6c9cc420,\n\t0x29d6b: 0x6d13a620,\n\t0x29d6c: 0x6d22b420, 0x29d6e: 0x6d249620,\n\t0x29d70: 0x6d3a9420, 0x29d73: 0x6c8dc220,\n\t0x29d7a: 0x6caa3620,\n\t0x29d7e: 0x6c8d3020,\n\t// Block 0xa76, offset 0x29d80\n\t0x29d80: 0x6c8a7020, 0x29d82: 0x6ceace20,\n\t0x29d84: 0x6c08f020, 0x29d85: 0x6ca36a20, 0x29d86: 0x6cc1bc20,\n\t0x29d88: 0x6cb01820, 0x29d89: 0x6c30f420, 0x29d8a: 0x6ca86e20, 0x29d8b: 0x6cea6820,\n\t0x29d8d: 0x6c5f2620, 0x29d8f: 0x6c8d5420,\n\t0x29d93: 0x6c7aaa20,\n\t0x29d94: 0x6cdb2c20,\n\t0x29d98: 0x6ce81a20,\n\t0x29d9e: 0x6ca38620, 0x29d9f: 0x6d2b0c20,\n\t0x29da2: 0x6ce7c420, 0x29da3: 0x6c444a20,\n\t0x29da4: 0x6c331820, 0x29da7: 0x6c6b5020,\n\t0x29da9: 0x6ce4c820, 0x29daa: 0x6ce5e220, 0x29dab: 0x6c1b6020,\n\t0x29dac: 0x6cc14e20, 0x29dae: 0x6ccc2820,\n\t0x29db0: 0x6c0f9e20, 0x29db1: 0x6c848420, 0x29db3: 0x6c963a20,\n\t0x29db5: 0x6c8a4420, 0x29db6: 0x6cd62620, 0x29db7: 0x6c2ad220,\n\t0x29db9: 0x6c1ae620, 0x29dba: 0x6c9f0220,\n\t0x29dbc: 0x6ce24e20, 0x29dbd: 0x6c5d0c20, 0x29dbf: 0x6ca7e220,\n\t// Block 0xa77, offset 0x29dc0\n\t0x29dc1: 0x6c75fe20, 0x29dc2: 0x6c56dc20,\n\t0x29dc4: 0x6c932e20, 0x29dc5: 0x6d138820, 0x29dc7: 0x6ca18620,\n\t0x29dc8: 0x6c17c820,\n\t0x29dcc: 0x6cddd420, 0x29dce: 0x6c784220, 0x29dcf: 0x6c409620,\n\t0x29dd1: 0x6c17aa20,\n\t0x29dd4: 0x6cddbc20, 0x29dd7: 0x6cbfe220,\n\t0x29ddb: 0x6cdb6a20,\n\t0x29ddd: 0x6d287620, 0x29ddf: 0x6cddc220,\n\t0x29de0: 0x6c7a7020, 0x29de1: 0x6c0fc420, 0x29de3: 0x6c90fe20,\n\t0x29de4: 0x6ca1a220, 0x29de6: 0x6c88e220, 0x29de7: 0x6d08d220,\n\t0x29de8: 0x6cddc420, 0x29de9: 0x6c97aa20, 0x29dea: 0x6c0ad420,\n\t0x29df2: 0x6ce44820,\n\t0x29df4: 0x6c88a620, 0x29df5: 0x6ce04a20, 0x29df6: 0x6ccdf220,\n\t0x29df8: 0x6cc22820, 0x29df9: 0x6c320820, 0x29dfa: 0x6c58d420, 0x29dfb: 0x6ccb0e20,\n\t0x29dff: 0x6c7c2620,\n\t// Block 0xa78, offset 0x29e00\n\t0x29e03: 0x6ca8dc20,\n\t0x29e05: 0x6ca8de20, 0x29e06: 0x6c95a420, 0x29e07: 0x6d425c20,\n\t0x29e08: 0x6d174e20, 0x29e09: 0x6cfcc020, 0x29e0a: 0x6c179820, 0x29e0b: 0x6ce61220,\n\t0x29e12: 0x6cd79620,\n\t0x29e14: 0x6c9d0020, 0x29e17: 0x6c9c7220,\n\t0x29e1b: 0x6ced5220,\n\t0x29e1d: 0x6c07c820, 0x29e1e: 0x6cbae020,\n\t0x29e20: 0x6ca0b020, 0x29e23: 0x6c8eca20,\n\t0x29e24: 0x6cf32e20, 0x29e26: 0x6c9a7020,\n\t0x29e28: 0x6ce7fe20, 0x29e2b: 0x6ca25a20,\n\t0x29e2d: 0x6c9a4420,\n\t0x29e32: 0x6d42b620,\n\t0x29e34: 0x6cea6420, 0x29e35: 0x6c778c20, 0x29e36: 0x6cea6a20,\n\t0x29e3a: 0x6c184c20, 0x29e3b: 0x6d336a20,\n\t0x29e3d: 0x6c1cec20, 0x29e3e: 0x6ce47820,\n\t// Block 0xa79, offset 0x29e40\n\t0x29e40: 0x6d372020, 0x29e41: 0x6c153420, 0x29e42: 0x6c153e20,\n\t0x29e45: 0x6cbe5c20, 0x29e46: 0x6cea3420, 0x29e47: 0x6c5b7a20,\n\t0x29e48: 0x6cc41420, 0x29e49: 0x6d2dba20, 0x29e4a: 0x6c652c20, 0x29e4b: 0x6c154c20,\n\t0x29e4d: 0x6c5a2620, 0x29e4f: 0x6c5b0620,\n\t0x29e50: 0x6c1b6a20, 0x29e52: 0x6c5a2820, 0x29e53: 0x6c528220,\n\t0x29e54: 0x6d280820, 0x29e56: 0x6ce94020, 0x29e57: 0x6c0b1c20,\n\t0x29e59: 0x6c5a3620, 0x29e5a: 0x6d280a20,\n\t0x29e5f: 0x6ca1a420,\n\t0x29e60: 0x6c45c420, 0x29e62: 0x6c45c620,\n\t0x29e64: 0x6c4bb020, 0x29e66: 0x6c157820,\n\t0x29e68: 0x6cc42220, 0x29e69: 0x6cc8ee20, 0x29e6a: 0x6c7c2820, 0x29e6b: 0x6cb1c220,\n\t0x29e6e: 0x6cc80220,\n\t0x29e72: 0x6ca9a220, 0x29e73: 0x6c56c820,\n\t0x29e74: 0x6c6cb820, 0x29e75: 0x6ca6d220, 0x29e76: 0x6c067420,\n\t0x29e78: 0x6ca65620, 0x29e7a: 0x6c0a8420, 0x29e7b: 0x6c55d820,\n\t0x29e7c: 0x6c846a20, 0x29e7f: 0x6d39dc20,\n\t// Block 0xa7a, offset 0x29e80\n\t0x29e80: 0x6ca2fc20, 0x29e82: 0x6cc36620, 0x29e83: 0x6c3cd220,\n\t0x29e84: 0x6c090020, 0x29e85: 0x6c84a020, 0x29e86: 0x6c0d0820, 0x29e87: 0x6ca70e20,\n\t0x29e88: 0x6c304820, 0x29e8b: 0x6c88a020,\n\t0x29e8c: 0x6ca6e420, 0x29e8d: 0x6c88a820, 0x29e8e: 0x6c968820, 0x29e8f: 0x6d30ca20,\n\t0x29e93: 0x6c639420,\n\t0x29e94: 0x6d15a820, 0x29e96: 0x6c904c20,\n\t0x29e98: 0x6d181820,\n\t0x29e9d: 0x6c278e20, 0x29e9e: 0x6c327820,\n\t0x29ea3: 0x6d160c20,\n\t0x29ea5: 0x6cdf8220, 0x29ea6: 0x6c4f5420, 0x29ea7: 0x6cd61620,\n\t0x29eac: 0x6cece820, 0x29eae: 0x6cdb2e20, 0x29eaf: 0x6d11d820,\n\t0x29eb0: 0x6c37e020, 0x29eb2: 0x6d326e20,\n\t0x29eba: 0x6c313e20, 0x29ebb: 0x6c651220,\n\t0x29ebf: 0x6cace620,\n\t// Block 0xa7b, offset 0x29ec0\n\t0x29ec0: 0x6c5afe20, 0x29ec2: 0x6c145420, 0x29ec3: 0x6ccd1c20,\n\t0x29ec4: 0x6c916620, 0x29ec6: 0x6d244c20,\n\t0x29ec8: 0x6d0ef420, 0x29ec9: 0x6ced6420, 0x29eca: 0x6cbc6e20, 0x29ecb: 0x6c953420,\n\t0x29ecc: 0x6d245e20, 0x29ecf: 0x6ce90620,\n\t0x29ed0: 0x6cf10820, 0x29ed2: 0x6cea8e20,\n\t0x29ed5: 0x6c5d1820, 0x29ed6: 0x6c079020, 0x29ed7: 0x6cbd0620,\n\t0x29ed9: 0x6c6c7420, 0x29eda: 0x6c7f3620,\n\t0x29edc: 0x6d356620, 0x29edd: 0x6d21ec20, 0x29edf: 0x6c22f020,\n\t0x29ee6: 0x6d139420, 0x29ee7: 0x6c2f0c20,\n\t0x29ee8: 0x6c145820, 0x29ee9: 0x6c2d9a20, 0x29eea: 0x6c97a220,\n\t0x29eec: 0x6c2afc20, 0x29eed: 0x6ceed020, 0x29eee: 0x6ca75020, 0x29eef: 0x6c835e20,\n\t0x29ef0: 0x6c0db820, 0x29ef1: 0x6cf39420, 0x29ef3: 0x6d320820,\n\t0x29ef6: 0x6cc77420, 0x29ef7: 0x6cec7c20,\n\t0x29ef8: 0x6c9dac20, 0x29ef9: 0x6c6c1020, 0x29efb: 0x6c544620,\n\t0x29efd: 0x6d2d5620, 0x29efe: 0x6cc80a20, 0x29eff: 0x6d3ec620,\n\t// Block 0xa7c, offset 0x29f00\n\t0x29f00: 0x6cac9420, 0x29f02: 0x6ca1a620,\n\t0x29f04: 0x6c9db220, 0x29f06: 0x6cb55820, 0x29f07: 0x6ca1a820,\n\t0x29f0a: 0x6d342c20, 0x29f0b: 0x6c04b020,\n\t0x29f0d: 0x6c9f1820, 0x29f0f: 0x6c933e20,\n\t0x29f11: 0x6cb55e20, 0x29f12: 0x6c1d0420,\n\t0x29f14: 0x6c84d220, 0x29f15: 0x6d196e20,\n\t0x29f18: 0x6c2b0620, 0x29f19: 0x6c25d220, 0x29f1b: 0x6c339020,\n\t0x29f1c: 0x6c96e820, 0x29f1d: 0x6d0e2c20, 0x29f1f: 0x6d2bba20,\n\t0x29f20: 0x6d0e2e20, 0x29f21: 0x6c339220, 0x29f22: 0x6cb42620,\n\t0x29f25: 0x6d273020,\n\t0x29f29: 0x6c5e5c20, 0x29f2a: 0x6c975420, 0x29f2b: 0x6c664620,\n\t0x29f2c: 0x6ca9e820, 0x29f2d: 0x6cbdc020, 0x29f2f: 0x6cbdc220,\n\t0x29f32: 0x6d13aa20,\n\t0x29f34: 0x6cdf5420,\n\t0x29f39: 0x6c655c20,\n\t0x29f3c: 0x6c141620, 0x29f3e: 0x6c28f220, 0x29f3f: 0x6ce2e220,\n\t// Block 0xa7d, offset 0x29f40\n\t0x29f40: 0x6c87ce20, 0x29f43: 0x6ca77c20,\n\t0x29f44: 0x6c158420, 0x29f45: 0x6d29f620,\n\t0x29f4a: 0x6d24b820,\n\t0x29f4c: 0x6d41e220, 0x29f4d: 0x6c0b2020,\n\t0x29f50: 0x6c1ef820,\n\t0x29f58: 0x6cc48c20, 0x29f5a: 0x6cc49820, 0x29f5b: 0x6d0f7020,\n\t0x29f5c: 0x6c0fe820,\n\t0x29f61: 0x6c247820,\n\t0x29f6c: 0x6c9cae20, 0x29f6e: 0x6c787420,\n\t0x29f70: 0x6c248420,\n\t0x29f77: 0x6cf7ce20,\n\t0x29f79: 0x6c968a20, 0x29f7b: 0x6cd22020,\n\t0x29f7c: 0x6c2d0420, 0x29f7f: 0x6cd22220,\n\t// Block 0xa7e, offset 0x29f80\n\t0x29f82: 0x6c2f7620, 0x29f83: 0x6c6ee420,\n\t0x29f85: 0x6d25a820, 0x29f86: 0x6c41b220,\n\t0x29f8a: 0x6c5ca420, 0x29f8b: 0x6c5f4e20,\n\t0x29f8d: 0x6caed420, 0x29f8f: 0x6c2ab220,\n\t0x29f91: 0x6c085e20,\n\t0x29f94: 0x6cacea20, 0x29f95: 0x6cded420, 0x29f97: 0x6d252220,\n\t0x29f98: 0x6c42ee20, 0x29f99: 0x6d252420,\n\t0x29f9f: 0x6c639220,\n\t0x29fa3: 0x6c799020,\n\t0x29fa6: 0x6c309820,\n\t0x29fa9: 0x6cfbd820, 0x29faa: 0x6cb80620,\n\t0x29fac: 0x6cca7c20,\n\t0x29fb0: 0x6d1b9820, 0x29fb3: 0x6c901a20,\n\t0x29fb6: 0x6ce29a20, 0x29fb7: 0x6c902420,\n\t0x29fba: 0x6cc60820,\n\t0x29fbd: 0x6d1b9020, 0x29fbe: 0x6cb2d820, 0x29fbf: 0x6cb41c20,\n\t// Block 0xa7f, offset 0x29fc0\n\t0x29fc0: 0x6d25be20, 0x29fc1: 0x6cc72a20, 0x29fc3: 0x6c399e20,\n\t0x29fc7: 0x6c4f5820,\n\t0x29fc8: 0x6c9c8820, 0x29fc9: 0x6c55ea20, 0x29fca: 0x6d3eb620,\n\t0x29fcc: 0x6c8d7e20, 0x29fcd: 0x6c6eea20, 0x29fce: 0x6cc72e20,\n\t0x29fd2: 0x6cb2e020, 0x29fd3: 0x6c49fc20,\n\t0x29fd4: 0x6c37ae20,\n\t0x29fdd: 0x6c247e20, 0x29fde: 0x6c760020,\n\t0x29fe6: 0x6d052a20,\n\t0x29fe8: 0x6c377a20, 0x29fe9: 0x6ce44420, 0x29feb: 0x6d0ff820,\n\t0x29fed: 0x6c010a20, 0x29fee: 0x6c560820, 0x29fef: 0x6cf7ca20,\n\t0x29ff1: 0x6c560a20, 0x29ff3: 0x6cd85220,\n\t0x29ff4: 0x6c854e20, 0x29ff6: 0x6d197020, 0x29ff7: 0x6c47f620,\n\t0x29ff9: 0x6ce16a20,\n\t// Block 0xa80, offset 0x2a000\n\t0x2a000: 0x6cc42420, 0x2a001: 0x6d3fe620, 0x2a002: 0x6c84de20,\n\t0x2a004: 0x6c69ec20, 0x2a007: 0x6c38fe20,\n\t0x2a008: 0x6cb47e20, 0x2a009: 0x6cd86620, 0x2a00b: 0x6c6b9020,\n\t0x2a00c: 0x6c91b220, 0x2a00d: 0x6c87d020, 0x2a00e: 0x6c158620,\n\t0x2a010: 0x6d122220,\n\t0x2a015: 0x6c5b0020,\n\t0x2a019: 0x6c53e420, 0x2a01a: 0x6c2cea20, 0x2a01b: 0x6cc0be20,\n\t0x2a01c: 0x6c74f820, 0x2a01e: 0x6cb0d420,\n\t0x2a022: 0x6c7c5220,\n\t0x2a025: 0x6cf82820, 0x2a026: 0x6ce30c20,\n\t0x2a029: 0x6d076820,\n\t0x2a02f: 0x6c0b6220,\n\t0x2a032: 0x6c50b020, 0x2a033: 0x6c88ac20,\n\t0x2a036: 0x6cdb7620, 0x2a037: 0x6c8ab220,\n\t0x2a03c: 0x6c6c7820,\n\t// Block 0xa81, offset 0x2a040\n\t0x2a041: 0x6c87d220, 0x2a042: 0x6c158820,\n\t0x2a045: 0x6cb65a20, 0x2a046: 0x6cb66c20,\n\t0x2a049: 0x6d3ec020, 0x2a04b: 0x6d3ec420,\n\t0x2a04d: 0x6cb6b220, 0x2a04f: 0x6cb6b820,\n\t0x2a050: 0x6d3ed020, 0x2a052: 0x6d2d1020, 0x2a053: 0x6d2d1420,\n\t0x2a054: 0x6cabec20, 0x2a056: 0x6c70d820,\n\t0x2a059: 0x6d0df420,\n\t0x2a05c: 0x6c4f8c20, 0x2a05d: 0x6ca37020,\n\t0x2a064: 0x6d0e0220, 0x2a066: 0x6d2e9c20, 0x2a067: 0x6cd2e020,\n\t0x2a068: 0x6d34ba20,\n\t0x2a06d: 0x6d2c0a20,\n\t0x2a074: 0x6cc73420, 0x2a075: 0x6d2c0c20, 0x2a077: 0x6d195820,\n\t0x2a078: 0x6ca02820, 0x2a079: 0x6d0b4020, 0x2a07b: 0x6d376620,\n\t0x2a07d: 0x6c7e3020, 0x2a07e: 0x6cfa1c20,\n\t// Block 0xa82, offset 0x2a080\n\t0x2a080: 0x6cb13820, 0x2a081: 0x6cdeec20, 0x2a083: 0x6d162a20,\n\t0x2a086: 0x6d051620, 0x2a087: 0x6d2d0c20,\n\t0x2a089: 0x6c34c420, 0x2a08a: 0x6c36e420,\n\t0x2a08e: 0x6d1ab420,\n\t0x2a090: 0x6c36ee20, 0x2a091: 0x6cdb8e20, 0x2a092: 0x6c016420, 0x2a093: 0x6c260420,\n\t0x2a095: 0x6ceb6420, 0x2a097: 0x6ceb6620,\n\t0x2a098: 0x6cfa1e20, 0x2a09b: 0x6c21ea20,\n\t0x2a09d: 0x6cdb9020,\n\t0x2a0a5: 0x6c62f420, 0x2a0a6: 0x6cba3620, 0x2a0a7: 0x6d410420,\n\t0x2a0a8: 0x6d2d0e20, 0x2a0a9: 0x6d280e20, 0x2a0aa: 0x6d2ea620,\n\t0x2a0ac: 0x6d159c20,\n\t0x2a0b2: 0x6d0b4220, 0x2a0b3: 0x6d266020,\n\t0x2a0b9: 0x6c51ac20, 0x2a0ba: 0x6cb88820,\n\t0x2a0be: 0x6c13c220,\n\t// Block 0xa83, offset 0x2a0c0\n\t0x2a0c3: 0x6cab7020,\n\t0x2a0c8: 0x6c560c20, 0x2a0ca: 0x6d0f2020,\n\t0x2a0cc: 0x6cbd0e20, 0x2a0cd: 0x6c0fd820, 0x2a0ce: 0x6cbafe20, 0x2a0cf: 0x6c6c1420,\n\t0x2a0db: 0x6ca6e820,\n\t0x2a0de: 0x6c162420, 0x2a0df: 0x6cbdf620,\n\t0x2a0e1: 0x6d2a3220,\n\t0x2a0e4: 0x6d1b3220, 0x2a0e5: 0x6d029c20, 0x2a0e7: 0x6cb6ba20,\n\t0x2a0e8: 0x6c673420, 0x2a0eb: 0x6d061420,\n\t0x2a0ed: 0x6d2bbc20, 0x2a0ef: 0x6c370420,\n\t0x2a0f3: 0x6d40a020,\n\t0x2a0f4: 0x6d163220,\n\t0x2a0f9: 0x6d34c820, 0x2a0fa: 0x6c87d420,\n\t0x2a0fd: 0x6c87d620, 0x2a0fe: 0x6d1aba20,\n\t// Block 0xa84, offset 0x2a100\n\t0x2a101: 0x6c88b220, 0x2a103: 0x6c158a20,\n\t0x2a105: 0x6c754820, 0x2a107: 0x6d28e620,\n\t0x2a10e: 0x6d2d1620, 0x2a10f: 0x6cb12220,\n\t0x2a111: 0x6c8fd220, 0x2a113: 0x6c8fd420,\n\t0x2a118: 0x6c8fe220,\n\t0x2a11d: 0x6c900020,\n\t0x2a120: 0x6c900c20, 0x2a122: 0x6c98b220,\n\t0x2a125: 0x6d30d020,\n\t0x2a12c: 0x6c423a20, 0x2a12d: 0x6c466a20, 0x2a12e: 0x6cc49a20, 0x2a12f: 0x6c248020,\n\t0x2a130: 0x6c68aa20,\n\t0x2a137: 0x6c0fec20,\n\t0x2a139: 0x6d3b4c20, 0x2a13a: 0x6cbfe820, 0x2a13b: 0x6d0f7220,\n\t// Block 0xa85, offset 0x2a140\n\t0x2a140: 0x6d003020, 0x2a142: 0x6c5b4820, 0x2a143: 0x6cc16c20,\n\t0x2a148: 0x6c8e0220, 0x2a14a: 0x6d1ab220,\n\t0x2a14e: 0x6cb0e820,\n\t0x2a152: 0x6c88b020,\n\t// Block 0xa86, offset 0x2a180\n\t0x2a19d: 0x6c343c20,\n\t// Block 0xa87, offset 0x2a1c0\n\t0x2a1c8: 0x6c040c20,\n\t0x2a1cf: 0x6d2d9220,\n\t// Block 0xa88, offset 0x2a200\n\t0x2a22e: 0x6c943c20,\n\t// Block 0xa89, offset 0x2a240\n\t0x2a24a: 0x6cd94a20,\n\t0x2a257: 0x6c73ac20,\n\t// Block 0xa8a, offset 0x2a280\n\t0x2a29d: 0x6d1d8e20,\n\t// Block 0xa8b, offset 0x2a2c0\n\t0x2a2f9: 0x6caa5c20,\n\t// Block 0xa8c, offset 0x2a300\n\t0x2a310: 0x6c230620,\n\t// Block 0xa8d, offset 0x2a340\n\t0x2a362: 0x6cfc9220,\n\t// Block 0xa8e, offset 0x2a380\n\t0x2a3a1: 0x6c85dc20,\n\t// Block 0xa8f, offset 0x2a3c0\n\t0x2a3c8: 0x6c3abc20,\n\t0x2a3d9: 0x6cdb3a20,\n\t// Block 0xa90, offset 0x2a400\n\t0x2a41c: 0x6c79dc20,\n\t// Block 0xa91, offset 0x2a440\n\t0x2a468: 0x6c1a9e20,\n\t0x2a478: 0x6d09b220,\n\t// Block 0xa92, offset 0x2a480\n\t0x2a4b0: 0x6cb86a20,\n\t// Block 0xa93, offset 0x2a4c0\n\t0x2a4d0: 0x6c45fe20,\n\t// Block 0xa94, offset 0x2a500\n\t0x2a500: 0x6c5ef220,\n\t0x2a528: 0x6c953a20,\n\t// Block 0xa95, offset 0x2a540\n\t0x2a559: 0x6d165020,\n\t0x2a55f: 0x6d146820,\n\t0x2a562: 0x6ca49820,\n\t0x2a570: 0x6cf7de20, 0x2a572: 0x6cffaa20,\n\t// Block 0xa96, offset 0x2a580\n\t0x2a58b: 0x6c73b020,\n\t// Block 0xa97, offset 0x2a5c0\n\t0x2a5c4: 0x6d268220, 0x2a5c6: 0x6c7b1020,\n\t0x2a5c9: 0x6c8cc220,\n\t0x2a5d0: 0x6ca5f020, 0x2a5d3: 0x6c108a20,\n\t// Block 0xa98, offset 0x2a600\n\t0x2a636: 0x6c4e3a20,\n\t// Block 0xa99, offset 0x2a640\n\t0x2a667: 0x6c3d5820,\n\t0x2a669: 0x6c230a20,\n\t// Block 0xa9a, offset 0x2a680\n\t0x2a68e: 0x6c74d220,\n\t// Block 0xa9b, offset 0x2a6c0\n\t0x2a6e0: 0x6d2eb220,\n\t0x2a6e6: 0x6c109020, 0x2a6e7: 0x6cda9a20,\n\t0x2a6ee: 0x6c59cc20,\n\t0x2a6f4: 0x6d2da220,\n\t// Block 0xa9c, offset 0x2a700\n\t0x2a71d: 0x6c73ea20,\n\t0x2a723: 0x6c4ea420,\n\t0x2a724: 0x6c003a20,\n\t0x2a728: 0x6ce33820,\n\t// Block 0xa9d, offset 0x2a740\n\t0x2a748: 0x6d06ca20, 0x2a749: 0x6c534620,\n\t0x2a752: 0x6c3e4620,\n\t0x2a754: 0x6c5b4020, 0x2a755: 0x6cd1e620,\n\t0x2a759: 0x6cb41220,\n\t// Block 0xa9e, offset 0x2a780\n\t0x2a79b: 0x6d33bc20,\n\t0x2a79e: 0x6c740c20,\n\t0x2a7a2: 0x6ca90020,\n\t0x2a7b6: 0x6c1c5220,\n\t0x2a7b8: 0x6ce36020,\n\t// Block 0xa9f, offset 0x2a7c0\n\t0x2a7c0: 0x6c857420, 0x2a7c1: 0x6cecb420, 0x2a7c2: 0x6d144620, 0x2a7c3: 0x48024420,\n\t0x2a7c4: 0x6ca62220, 0x2a7c5: 0x6cf43220, 0x2a7c6: 0x6ce9f420, 0x2a7c7: 0x6c0e1020,\n\t0x2a7c8: 0x6d28b220, 0x2a7c9: 0x6c071c20, 0x2a7ca: 0x6ccbb820, 0x2a7cb: 0x6cfe3c20,\n\t0x2a7cc: 0x6c75ee20, 0x2a7cd: 0x6cddc620, 0x2a7ce: 0x6c9dfe20, 0x2a7cf: 0x6ce92020,\n\t0x2a7d0: 0x6c5a2a20, 0x2a7d1: 0x6c720620, 0x2a7d2: 0x480a3820, 0x2a7d3: 0x44697220,\n\t0x2a7d4: 0x6ca57e20, 0x2a7d5: 0x6d292620, 0x2a7d6: 0x480a9620, 0x2a7d7: 0x6cc6ec20,\n\t0x2a7d8: 0x6d24d020, 0x2a7d9: 0x6c0da020, 0x2a7da: 0x6c2fd820, 0x2a7db: 0x6c7bdc20,\n\t0x2a7dc: 0x6cbee220, 0x2a7dd: 0x6cb9ec20, 0x2a7de: 0x6cc5a020, 0x2a7df: 0x6cafae20,\n\t0x2a7e0: 0x6c787a20, 0x2a7e1: 0x6c95a620, 0x2a7e2: 0x6c438c20, 0x2a7e3: 0x6c15bc20,\n\t0x2a7e4: 0x6c5fc020, 0x2a7e5: 0x6d1e1820, 0x2a7e6: 0x6c9e0c20, 0x2a7e7: 0x6cbd7c20,\n\t0x2a7e8: 0x6cce9420, 0x2a7e9: 0x6c059e20, 0x2a7ea: 0x6c22f420, 0x2a7eb: 0x6c06c620,\n\t0x2a7ec: 0x6c5b8420, 0x2a7ed: 0x6c068e20, 0x2a7ee: 0x6c0efe20, 0x2a7ef: 0x6c5fd220,\n\t0x2a7f0: 0x6c5fec20, 0x2a7f1: 0x6cbe3a20, 0x2a7f2: 0x6cbe3a20, 0x2a7f3: 0x6cbe3a20,\n\t0x2a7f4: 0x48145820, 0x2a7f5: 0x6c5a8620, 0x2a7f6: 0x6c5fb820, 0x2a7f7: 0x6cda0e20,\n\t0x2a7f8: 0x4816c620, 0x2a7f9: 0x6c697a20, 0x2a7fa: 0x6c1bd620, 0x2a7fb: 0x6d108620,\n\t0x2a7fc: 0x6cfc7820, 0x2a7fd: 0x6cf56a20, 0x2a7fe: 0x6c19b620, 0x2a7ff: 0x6d385a20,\n\t// Block 0xaa0, offset 0x2a800\n\t0x2a800: 0x6c35e420, 0x2a801: 0x6c9ec220, 0x2a802: 0x6ce0e820, 0x2a803: 0x6cb6ec20,\n\t0x2a804: 0x6cfb5820, 0x2a805: 0x6ccd8a20, 0x2a806: 0x6ccd8a20, 0x2a807: 0x6c5bbc20,\n\t0x2a808: 0x6c1aae20, 0x2a809: 0x6d2bd620, 0x2a80a: 0x6d110420, 0x2a80b: 0x6ce8d420,\n\t0x2a80c: 0x6ce0a020, 0x2a80d: 0x6ce8d620, 0x2a80e: 0x6c4fd020, 0x2a80f: 0x6cae3420,\n\t0x2a810: 0x6cbc9020, 0x2a811: 0x6d3c2c20, 0x2a812: 0x6c19c620, 0x2a813: 0x6d344c20,\n\t0x2a814: 0x6ce92220, 0x2a815: 0x6d03ca20, 0x2a816: 0x6c223620, 0x2a817: 0x6c064c20,\n\t0x2a818: 0x6c2c7c20, 0x2a819: 0x4829c820, 0x2a81a: 0x6c972420, 0x2a81b: 0x6c554020,\n\t0x2a81c: 0x6c3c9c20, 0x2a81d: 0x6c341620, 0x2a81e: 0x6c9c0420, 0x2a81f: 0x6cceea20,\n\t0x2a820: 0x6c1bda20, 0x2a821: 0x482dd420, 0x2a822: 0x6c5ea220, 0x2a823: 0x6d20ec20,\n\t0x2a824: 0x6ce9f820, 0x2a825: 0x6cb1e820, 0x2a826: 0x6c3fe420, 0x2a827: 0x6ccae220,\n\t0x2a828: 0x6c139820, 0x2a829: 0x6cc52820, 0x2a82a: 0x6c804820, 0x2a82b: 0x6c804820,\n\t0x2a82c: 0x48339020, 0x2a82d: 0x6d24da20, 0x2a82e: 0x6d365020, 0x2a82f: 0x6ca91020,\n\t0x2a830: 0x6c061c20, 0x2a831: 0x6c81ee20, 0x2a832: 0x6cd45020, 0x2a833: 0x6c674e20,\n\t0x2a834: 0x6c28f820, 0x2a835: 0x6d1edc20, 0x2a836: 0x6d11f020, 0x2a837: 0x6ce8a020,\n\t0x2a838: 0x6c17fa20, 0x2a839: 0x6d053020, 0x2a83a: 0x6cb8a420, 0x2a83b: 0x6cf3b020,\n\t0x2a83c: 0x6d0d7a20, 0x2a83d: 0x483bcc20, 0x2a83e: 0x6c2ccc20, 0x2a83f: 0x6d3e3620,\n\t// Block 0xaa1, offset 0x2a840\n\t0x2a840: 0x6c15c620, 0x2a841: 0x6d09d820, 0x2a842: 0x6c175e20, 0x2a843: 0x6d15b220,\n\t0x2a844: 0x6d0a8c20, 0x2a845: 0x6cd71420, 0x2a846: 0x6c997a20, 0x2a847: 0x6c3b8620,\n\t0x2a848: 0x6c980020, 0x2a849: 0x48430620, 0x2a84a: 0x6d16e820, 0x2a84b: 0x6c0e0e20,\n\t0x2a84c: 0x6c097620, 0x2a84d: 0x6cd5c220, 0x2a84e: 0x6c80b420, 0x2a84f: 0x6cd79620,\n\t0x2a850: 0x6c45cc20, 0x2a851: 0x48466220, 0x2a852: 0x48466220, 0x2a853: 0x6d20e820,\n\t0x2a854: 0x6ce1b020, 0x2a855: 0x6ce1b020, 0x2a856: 0x6d16b220, 0x2a857: 0x48657020,\n\t0x2a858: 0x48c3b420, 0x2a859: 0x6d03c020, 0x2a85a: 0x6c2dc420, 0x2a85b: 0x6ccd7820,\n\t0x2a85c: 0x6c300020, 0x2a85d: 0x6cc58620, 0x2a85e: 0x6d357420, 0x2a85f: 0x6c7bb620,\n\t0x2a860: 0x6d24d420, 0x2a861: 0x6c5a4620, 0x2a862: 0x6c73f820, 0x2a863: 0x6c5b4c20,\n\t0x2a864: 0x6c2ff820, 0x2a865: 0x6c339820, 0x2a866: 0x6c224e20, 0x2a867: 0x6c599420,\n\t0x2a868: 0x6cd0ac20, 0x2a869: 0x6c599420, 0x2a86a: 0x6c90a220, 0x2a86b: 0x6d2b8a20,\n\t0x2a86c: 0x6cfd0820, 0x2a86d: 0x6c3be420, 0x2a86e: 0x6c11da20, 0x2a86f: 0x6c9b4a20,\n\t0x2a870: 0x6c1a5420, 0x2a871: 0x6c804a20, 0x2a872: 0x6c19b220, 0x2a873: 0x6c63b620,\n\t0x2a874: 0x6c7a1820, 0x2a875: 0x6c063220, 0x2a876: 0x6c036820, 0x2a877: 0x6c72e420,\n\t0x2a878: 0x48561820, 0x2a879: 0x6cecf820, 0x2a87a: 0x6cb1ea20, 0x2a87b: 0x6ccf2c20,\n\t0x2a87c: 0x6ccae020, 0x2a87d: 0x6c600020, 0x2a87e: 0x4857e220, 0x2a87f: 0x6c6d1420,\n\t// Block 0xaa2, offset 0x2a880\n\t0x2a880: 0x6d0ca820, 0x2a881: 0x6d0d6620, 0x2a882: 0x6c30b620, 0x2a883: 0x6ca07220,\n\t0x2a884: 0x6c67f620, 0x2a885: 0x6c5ae420, 0x2a886: 0x6c691420, 0x2a887: 0x4474d820,\n\t0x2a888: 0x6c9fa820, 0x2a889: 0x6c6e8420, 0x2a88a: 0x48601420, 0x2a88b: 0x6c61ec20,\n\t0x2a88c: 0x6cd4b820, 0x2a88d: 0x6c6cea20, 0x2a88e: 0x6cf01620, 0x2a88f: 0x6cd55a20,\n\t0x2a890: 0x6cf15420, 0x2a891: 0x6c16e420, 0x2a892: 0x6c994e20, 0x2a893: 0x6c9e1820,\n\t0x2a894: 0x6d41b020, 0x2a895: 0x6c6d2820, 0x2a896: 0x6ca31420, 0x2a897: 0x6ce05420,\n\t0x2a898: 0x6c80f820, 0x2a899: 0x6cee5220, 0x2a89a: 0x6d3f9820, 0x2a89b: 0x6cb6d620,\n\t0x2a89c: 0x6c0bea20, 0x2a89d: 0x48678620, 0x2a89e: 0x6c572820, 0x2a89f: 0x6c48dc20,\n\t0x2a8a0: 0x6c5e8e20, 0x2a8a1: 0x6cca6a20, 0x2a8a2: 0x6c99ec20, 0x2a8a3: 0x4868da20,\n\t0x2a8a4: 0x6c022a20, 0x2a8a5: 0x6c078420, 0x2a8a6: 0x6d3e3a20, 0x2a8a7: 0x6c513820,\n\t0x2a8a8: 0x6d2be020, 0x2a8a9: 0x6d112020, 0x2a8aa: 0x6c415020, 0x2a8ab: 0x6ccefe20,\n\t0x2a8ac: 0x486d4620, 0x2a8ad: 0x6d370620, 0x2a8ae: 0x6d159820, 0x2a8af: 0x6c22aa20,\n\t0x2a8b0: 0x48714e20, 0x2a8b1: 0x6d05d420, 0x2a8b2: 0x6c7d9c20, 0x2a8b3: 0x6cdc4620,\n\t0x2a8b4: 0x6cf15820, 0x2a8b5: 0x6ccbda20, 0x2a8b6: 0x6cbc4020, 0x2a8b7: 0x48751a20,\n\t0x2a8b8: 0x483a1620, 0x2a8b9: 0x4875f420, 0x2a8ba: 0x6c391c20, 0x2a8bb: 0x48797820,\n\t0x2a8bc: 0x6d0c6820, 0x2a8bd: 0x6c077e20, 0x2a8be: 0x6cb8a820, 0x2a8bf: 0x6cf3b620,\n\t// Block 0xaa3, offset 0x2a8c0\n\t0x2a8c0: 0x6cac1e20, 0x2a8c1: 0x6c4d3a20, 0x2a8c2: 0x6c8e4a20, 0x2a8c3: 0x6c502e20,\n\t0x2a8c4: 0x6c6cee20, 0x2a8c5: 0x6ca80820, 0x2a8c6: 0x6c07ac20, 0x2a8c7: 0x6cb28620,\n\t0x2a8c8: 0x6c42a220, 0x2a8c9: 0x6d0c0820, 0x2a8ca: 0x6c903620, 0x2a8cb: 0x6d3e4020,\n\t0x2a8cc: 0x6c2cce20, 0x2a8cd: 0x6ccc0a20, 0x2a8ce: 0x6d0bf820, 0x2a8cf: 0x6c177620,\n\t0x2a8d0: 0x487ebc20, 0x2a8d1: 0x487f1c20, 0x2a8d2: 0x6c3b8c20, 0x2a8d3: 0x6d270a20,\n\t0x2a8d4: 0x6c6eb420, 0x2a8d5: 0x6d1cba20, 0x2a8d6: 0x6cd63020, 0x2a8d7: 0x6cb9e020,\n\t0x2a8d8: 0x6d28f220, 0x2a8d9: 0x6d3bbe20, 0x2a8da: 0x6ce08e20, 0x2a8db: 0x480a4a20,\n\t0x2a8dc: 0x6c32cc20, 0x2a8dd: 0x4884c620, 0x2a8de: 0x6c233e20, 0x2a8df: 0x48875620,\n\t0x2a8e0: 0x6c24c420, 0x2a8e1: 0x6c74c820, 0x2a8e2: 0x6d2c3a20, 0x2a8e3: 0x488c1020,\n\t0x2a8e4: 0x6cf61a20, 0x2a8e5: 0x6c074020, 0x2a8e6: 0x6d0e3c20, 0x2a8e7: 0x48902820,\n\t0x2a8e8: 0x6cde2020, 0x2a8e9: 0x6cedda20, 0x2a8ea: 0x6c45d620, 0x2a8eb: 0x6d268820,\n\t0x2a8ec: 0x6cb29020, 0x2a8ed: 0x6cb29020, 0x2a8ee: 0x6c277a20, 0x2a8ef: 0x6d215e20,\n\t0x2a8f0: 0x6d325020, 0x2a8f1: 0x6cdd8a20, 0x2a8f2: 0x6cbf7620, 0x2a8f3: 0x6d03d220,\n\t0x2a8f4: 0x6cc89c20, 0x2a8f5: 0x48986c20, 0x2a8f6: 0x6d28f620, 0x2a8f7: 0x48992420,\n\t0x2a8f8: 0x6d176620, 0x2a8f9: 0x6cb2b420, 0x2a8fa: 0x6d226e20, 0x2a8fb: 0x489f4220,\n\t0x2a8fc: 0x489f7020, 0x2a8fd: 0x48a08820, 0x2a8fe: 0x6d0c7620, 0x2a8ff: 0x6c627820,\n\t// Block 0xaa4, offset 0x2a900\n\t0x2a900: 0x6d344020, 0x2a901: 0x48a1e620, 0x2a902: 0x48a1e420, 0x2a903: 0x48a23220,\n\t0x2a904: 0x48a26620, 0x2a905: 0x6d313c20, 0x2a906: 0x6d313e20, 0x2a907: 0x6d313e20,\n\t0x2a908: 0x6c736420, 0x2a909: 0x6c6ad220, 0x2a90a: 0x6c188220, 0x2a90b: 0x6d130220,\n\t0x2a90c: 0x6cd23420, 0x2a90d: 0x48a83a20, 0x2a90e: 0x6d03e220, 0x2a90f: 0x6c926e20,\n\t0x2a910: 0x6ce4ba20, 0x2a911: 0x6c5b7020, 0x2a912: 0x6c6fd820, 0x2a913: 0x6d411420,\n\t0x2a914: 0x6c1baa20, 0x2a915: 0x6c8f3a20, 0x2a916: 0x6c3e9c20, 0x2a917: 0x6cd52420,\n\t0x2a918: 0x6c657420, 0x2a919: 0x6c47c420, 0x2a91a: 0x6c624a20, 0x2a91b: 0x6cf1f020,\n\t0x2a91c: 0x48b2f820, 0x2a91d: 0x6ce4c020, 0x2a91e: 0x6ce4c020, 0x2a91f: 0x6cb26020,\n\t0x2a920: 0x6cb2be20, 0x2a921: 0x48b75620, 0x2a922: 0x6d3bde20, 0x2a923: 0x6d3a2820,\n\t0x2a924: 0x6cf00020, 0x2a925: 0x6c178020, 0x2a926: 0x6c076020, 0x2a927: 0x6cf8f420,\n\t0x2a928: 0x6c680820, 0x2a929: 0x6cca3020, 0x2a92a: 0x6c61b020, 0x2a92b: 0x48bf0c20,\n\t0x2a92c: 0x6c07ee20, 0x2a92d: 0x6d10b020, 0x2a92e: 0x6d3e6a20, 0x2a92f: 0x6d400620,\n\t0x2a930: 0x6ccac220, 0x2a931: 0x6c965020, 0x2a932: 0x6d03dc20, 0x2a933: 0x48c48e20,\n\t0x2a934: 0x6c9a0420, 0x2a935: 0x48c5b220, 0x2a936: 0x6c177e20, 0x2a937: 0x48c67c20,\n\t0x2a938: 0x6d104a20, 0x2a939: 0x6c027e20, 0x2a93a: 0x6d30d220, 0x2a93b: 0x48c9b420,\n\t0x2a93c: 0x48ca4620, 0x2a93d: 0x6cb25820, 0x2a93e: 0x48cb5020, 0x2a93f: 0x6c236620,\n\t// Block 0xaa5, offset 0x2a940\n\t0x2a940: 0x6c78f420, 0x2a941: 0x6cc5d220, 0x2a942: 0x6d22da20, 0x2a943: 0x6c252c20,\n\t0x2a944: 0x6c231a20, 0x2a945: 0x6caff420, 0x2a946: 0x6d1d4020, 0x2a947: 0x48cf4e20,\n\t0x2a948: 0x48cf6a20, 0x2a949: 0x6d085420, 0x2a94a: 0x48673820, 0x2a94b: 0x6d20e820,\n\t0x2a94c: 0x6cf89220, 0x2a94d: 0x6c225220, 0x2a94e: 0x6c07f020, 0x2a94f: 0x6cb6ce20,\n\t0x2a950: 0x6d22c820, 0x2a951: 0x6d338420, 0x2a952: 0x6c813e20, 0x2a953: 0x6c570620,\n\t0x2a954: 0x6c398620, 0x2a955: 0x6d0b1420, 0x2a956: 0x6c7a7620, 0x2a957: 0x48d67820,\n\t0x2a958: 0x6cc91420, 0x2a959: 0x6c148e20, 0x2a95a: 0x6cc65e20, 0x2a95b: 0x6c6aa820,\n\t0x2a95c: 0x6cf3bc20, 0x2a95d: 0x6c988a20, 0x2a95e: 0x6c2bf220, 0x2a95f: 0x6d311420,\n\t0x2a960: 0x6cb28e20, 0x2a961: 0x6c711c20, 0x2a962: 0x6c757020, 0x2a963: 0x6c114420,\n\t0x2a964: 0x48d86c20, 0x2a965: 0x6cdd8420, 0x2a966: 0x48d9aa20, 0x2a967: 0x448a5620,\n\t0x2a968: 0x6cb2ae20, 0x2a969: 0x6c6ca620, 0x2a96a: 0x6c25ea20, 0x2a96b: 0x48e79420,\n\t0x2a96c: 0x6cc8a220, 0x2a96d: 0x48de5820, 0x2a96e: 0x6c19a420, 0x2a96f: 0x6c936e20,\n\t0x2a970: 0x6c175420, 0x2a971: 0x6c93c420, 0x2a972: 0x6c7cba20, 0x2a973: 0x6caaa220,\n\t0x2a974: 0x6c91c420, 0x2a975: 0x6c7c4820, 0x2a976: 0x6cf90620, 0x2a977: 0x6c1aa420,\n\t0x2a978: 0x6cb8ca20, 0x2a979: 0x6d24fc20, 0x2a97a: 0x6cb2b020, 0x2a97b: 0x6d276220,\n\t0x2a97c: 0x6c2ed620, 0x2a97d: 0x6d39be20, 0x2a97e: 0x6c22de20, 0x2a97f: 0x6c5f4420,\n\t// Block 0xaa6, offset 0x2a980\n\t0x2a980: 0x6c4b2220, 0x2a981: 0x6cfe0220, 0x2a982: 0x6c22ec20, 0x2a983: 0x6d3cd820,\n\t0x2a984: 0x6d13be20, 0x2a985: 0x6c668020, 0x2a986: 0x6c8e6020, 0x2a987: 0x6cd72420,\n\t0x2a988: 0x6c929c20, 0x2a989: 0x6d0daa20, 0x2a98a: 0x6c996a20, 0x2a98b: 0x48f15c20,\n\t0x2a98c: 0x48f2cc20, 0x2a98d: 0x6ca8e820, 0x2a98e: 0x6d25ea20, 0x2a98f: 0x6c1a2220,\n\t0x2a990: 0x6d23f620, 0x2a991: 0x6c0bdc20, 0x2a992: 0x6cd2b020, 0x2a993: 0x6c649220,\n\t0x2a994: 0x6c498620, 0x2a995: 0x6c09b020, 0x2a996: 0x6c424420, 0x2a997: 0x6cb6ea20,\n\t0x2a998: 0x6cd61020, 0x2a999: 0x6d2fdc20, 0x2a99a: 0x6c038220, 0x2a99b: 0x6c658c20,\n\t0x2a99c: 0x6cb11c20, 0x2a99d: 0x4811bc20, 0x2a99e: 0x6cc5e420, 0x2a99f: 0x6cd50820,\n\t0x2a9a0: 0x490ba420, 0x2a9a1: 0x490bda20, 0x2a9a2: 0x6cb6c420, 0x2a9a3: 0x6cb27e20,\n\t0x2a9a4: 0x6d3e4a20, 0x2a9a5: 0x490e5c20, 0x2a9a6: 0x6c176420, 0x2a9a7: 0x6c0f1c20,\n\t0x2a9a8: 0x6d07ca20, 0x2a9a9: 0x6c575620, 0x2a9aa: 0x6c0dee20, 0x2a9ab: 0x6cbb5020,\n\t0x2a9ac: 0x6d295820, 0x2a9ad: 0x4917f420, 0x2a9ae: 0x6c763420, 0x2a9af: 0x6cae7c20,\n\t0x2a9b0: 0x6ccca420, 0x2a9b1: 0x491aee20, 0x2a9b2: 0x6cef3620, 0x2a9b3: 0x6cb8e820,\n\t0x2a9b4: 0x6cf69820, 0x2a9b5: 0x6d280620, 0x2a9b6: 0x6cace820, 0x2a9b7: 0x6cb26420,\n\t0x2a9b8: 0x6c930020, 0x2a9b9: 0x6c160820, 0x2a9ba: 0x6c0ab220, 0x2a9bb: 0x49281420,\n\t0x2a9bc: 0x6c7d6c20, 0x2a9bd: 0x6d0eb020, 0x2a9be: 0x6c35b420, 0x2a9bf: 0x6c35b420,\n\t// Block 0xaa7, offset 0x2a9c0\n\t0x2a9c0: 0x6cb26620, 0x2a9c1: 0x6d097020, 0x2a9c2: 0x6c5eb020, 0x2a9c3: 0x6c04d420,\n\t0x2a9c4: 0x6c36b220, 0x2a9c5: 0x6d276c20, 0x2a9c6: 0x6c060a20, 0x2a9c7: 0x6cea1420,\n\t0x2a9c8: 0x6c423020, 0x2a9c9: 0x6cbf6820, 0x2a9ca: 0x6d320420, 0x2a9cb: 0x6c62d820,\n\t0x2a9cc: 0x6c64ec20, 0x2a9cd: 0x6c702e20, 0x2a9ce: 0x6c60f620, 0x2a9cf: 0x6cb02c20,\n\t0x2a9d0: 0x6d21ea20, 0x2a9d1: 0x6c968620, 0x2a9d2: 0x6ccc2e20, 0x2a9d3: 0x49441c20,\n\t0x2a9d4: 0x49452220, 0x2a9d5: 0x6c966820, 0x2a9d6: 0x6cba8620, 0x2a9d7: 0x6d353420,\n\t0x2a9d8: 0x6c9e0a20, 0x2a9d9: 0x6d342a20, 0x2a9da: 0x6c9d7420, 0x2a9db: 0x6c3ba420,\n\t0x2a9dc: 0x6c08a220, 0x2a9dd: 0x6cb13820,\n\t// Block 0xaa8, offset 0x2aa00\n\t0x2aa00: 0x6c00c220, 0x2aa01: 0xe0002416, 0x2aa02: 0x029cb684, 0x2aa03: 0x029cb484,\n\t0x2aa04: 0x6c000e20, 0x2aa05: 0x029d7684, 0x2aa06: 0x6c008a20, 0x2aa07: 0x6c009220,\n\t0x2aa08: 0x6c009e20, 0x2aa09: 0x02a40484, 0x2aa0a: 0x6c00b820, 0x2aa0b: 0xe0002413,\n\t0x2aa0c: 0x6c01a420, 0x2aa0d: 0x6c01a620, 0x2aa0e: 0xe000241f, 0x2aa0f: 0x02b84684,\n\t0x2aa10: 0x02b84484, 0x2aa11: 0xe0002422, 0x2aa12: 0x02bbe684, 0x2aa13: 0x02bcf484,\n\t0x2aa14: 0x02bea284, 0x2aa15: 0x6c01e620, 0x2aa16: 0x02bf8884, 0x2aa17: 0xe0002428,\n\t0x2aa18: 0x02c49884, 0x2aa19: 0x02ca6a84, 0x2aa1b: 0x02cbc284,\n\t0x2aa1c: 0x6c049420, 0x2aa1d: 0x6c049a20, 0x2aa1e: 0xe0002436, 0x2aa1f: 0x2c098083,\n\t0x2aa20: 0x02d82284, 0x2aa21: 0x02d86a84, 0x2aa22: 0x02d87484, 0x2aa23: 0x02e0d884,\n\t0x2aa24: 0x02e45684, 0x2aa25: 0x6c04d420, 0x2aa26: 0x029c5884, 0x2aa27: 0x6c04ee20,\n\t0x2aa28: 0x02e55a84, 0x2aa29: 0xe000243f, 0x2aa2a: 0x6c0a1820, 0x2aa2b: 0xe0002445,\n\t0x2aa2c: 0x6c0a3220, 0x2aa2d: 0x02f27684, 0x2aa2e: 0x6c13f420, 0x2aa2f: 0x02f9f284,\n\t0x2aa30: 0x02fd3e84, 0x2aa31: 0x02fea684, 0x2aa32: 0x02fea484, 0x2aa33: 0xe0002451,\n\t0x2aa34: 0xe0002454, 0x2aa35: 0xe000244e, 0x2aa36: 0x6c143820, 0x2aa37: 0xe000245a,\n\t0x2aa38: 0x02ff1684, 0x2aa39: 0x03000484, 0x2aa3a: 0x03010084, 0x2aa3b: 0xe000245d,\n\t0x2aa3c: 0x6c050a20, 0x2aa3d: 0xe0002463, 0x2aa3e: 0x6c020220, 0x2aa3f: 0xe0002466,\n\t// Block 0xaa9, offset 0x2aa40\n\t0x2aa40: 0xe0002469, 0x2aa41: 0x030c9c84, 0x2aa42: 0x0310c884, 0x2aa43: 0x03130084,\n\t0x2aa44: 0x0312fe84, 0x2aa45: 0x03138284, 0x2aa46: 0x6c26a420, 0x2aa47: 0xe000246c,\n\t0x2aa48: 0x03174084, 0x2aa49: 0x031a3a84, 0x2aa4a: 0x6c270020, 0x2aa4b: 0x031ecc84,\n\t0x2aa4c: 0x6c020620, 0x2aa4d: 0x6c051c20, 0x2aa4e: 0xe0002475, 0x2aa4f: 0x6c00cc20,\n\t0x2aa50: 0x03290a84, 0x2aa51: 0x032aee84, 0x2aa52: 0x032af084, 0x2aa53: 0x032afe84,\n\t0x2aa54: 0x032bd084, 0x2aa55: 0xe000247b, 0x2aa56: 0x6c00ce20, 0x2aa57: 0x6c427620,\n\t0x2aa58: 0x032ea484, 0x2aa59: 0x032fcc84, 0x2aa5a: 0x0330ea84, 0x2aa5b: 0x03319c84,\n\t0x2aa5c: 0x0331bc84, 0x2aa5d: 0x0331be84, 0x2aa5e: 0x6c636020, 0x2aa5f: 0x0331c084,\n\t0x2aa60: 0x0332c684, 0x2aa61: 0xe0002484, 0x2aa62: 0x0334d884, 0x2aa63: 0x6c63aa20,\n\t0x2aa64: 0xe000248a, 0x2aa65: 0x0338f884, 0x2aa66: 0x033c3e84, 0x2aa67: 0xe000248d,\n\t0x2aa68: 0x033d4c84, 0x2aa69: 0x033d8884, 0x2aa6a: 0x033dfc84, 0x2aa6b: 0xe0002490,\n\t0x2aa6c: 0x033ea084, 0x2aa6d: 0xe0002493, 0x2aa6e: 0x033efe84, 0x2aa6f: 0xe0002496,\n\t0x2aa70: 0x033f3284, 0x2aa71: 0xe0002499, 0x2aa72: 0xe000249c, 0x2aa73: 0x2c28ac83,\n\t// Block 0xaaa, offset 0x2aa80\n\t0x2aa80: 0x2c000286, 0x2aa81: 0x2c000483, 0x2aa82: 0x2c000683, 0x2aa83: 0x2c000883,\n\t0x2aa84: 0x2c001084, 0x2aa85: 0x2c002483, 0x2aa86: 0x2c007486, 0x2aa87: 0x2c007c83,\n\t0x2aa88: 0x2c007e84, 0x2aa89: 0x2c008483, 0x2aa8a: 0x2c008683, 0x2aa8b: 0x2c008884,\n\t0x2aa8c: 0x2c008c83, 0x2aa8d: 0x2c008e83, 0x2aa8e: 0x2c009083, 0x2aa8f: 0x2c009483,\n\t0x2aa90: 0x2c009a83, 0x2aa91: 0x2c00a083, 0x2aa92: 0x2c00a883, 0x2aa93: 0x2c00aa83,\n\t0x2aa94: 0x2c00ac83, 0x2aa95: 0x2c00b083, 0x2aa96: 0x2c00b483, 0x2aa97: 0x2c00b685,\n\t0x2aa98: 0x2c00ba83, 0x2aa99: 0x2c00bc83, 0x2aa9a: 0x2c00be83, 0x2aa9b: 0x2c00c083,\n\t0x2aa9c: 0x2c00c483, 0x2aa9d: 0x2c018083, 0x2aa9e: 0x2c018283, 0x2aa9f: 0x2c018484,\n\t0x2aaa0: 0x2c018683, 0x2aaa1: 0x2c018883, 0x2aaa2: 0x2c018c83, 0x2aaa3: 0x2c018e83,\n\t0x2aaa4: 0x2c019083, 0x2aaa5: 0x2c019484, 0x2aaa6: 0x2c019683, 0x2aaa7: 0x2c01a083,\n\t0x2aaa8: 0x2c01a283, 0x2aaa9: 0x2c01a883, 0x2aaaa: 0x2c01ac83, 0x2aaab: 0x2c01b283,\n\t0x2aaac: 0x2c01b683, 0x2aaad: 0x2c01ba83, 0x2aaae: 0x2c01bc83, 0x2aaaf: 0x2c01c483,\n\t0x2aab0: 0x2c01c683, 0x2aab1: 0x2c01cc83, 0x2aab2: 0x2c01ce83, 0x2aab3: 0x2c01d283,\n\t0x2aab4: 0x2c01d483, 0x2aab5: 0x2c01d683, 0x2aab6: 0x2c01d883, 0x2aab7: 0x2c01dc83,\n\t0x2aab8: 0x2c01e083, 0x2aab9: 0x2c01e883, 0x2aaba: 0x2c01ec83, 0x2aabb: 0x2c01ee83,\n\t0x2aabc: 0x2c046683, 0x2aabd: 0x2c046c83, 0x2aabe: 0x2c046e83, 0x2aabf: 0x2c047484,\n\t// Block 0xaab, offset 0x2aac0\n\t0x2aac0: 0x2c047e83, 0x2aac1: 0x2c048083, 0x2aac2: 0x2c048484, 0x2aac3: 0x2c048683,\n\t0x2aac4: 0x2c048a83, 0x2aac5: 0x2c048e83, 0x2aac6: 0x2c049083, 0x2aac7: 0x2c049684,\n\t0x2aac8: 0x2c049883, 0x2aac9: 0x2c049c85, 0x2aaca: 0x2c049e84, 0x2aacb: 0x2c04a683,\n\t0x2aacc: 0x2c04a883, 0x2aacd: 0x2c04ae83, 0x2aace: 0x2c04b483, 0x2aacf: 0x2c04b683,\n\t0x2aad0: 0x2c04bc83, 0x2aad1: 0x2c04be83, 0x2aad2: 0x2c04c283, 0x2aad3: 0x2c04c483,\n\t0x2aad4: 0x2c04c684, 0x2aad5: 0x2c04d084, 0x2aad6: 0x2c04d683, 0x2aad7: 0x2c04de83,\n\t0x2aad8: 0x2c04e083, 0x2aad9: 0x2c04e483, 0x2aada: 0x2c04e883, 0x2aadb: 0x2c04ec83,\n\t0x2aadc: 0x2c04f083, 0x2aadd: 0x2c04f483, 0x2aade: 0x2c09ee83, 0x2aadf: 0x2c09f283,\n\t0x2aae0: 0x2c09fa83, 0x2aae1: 0x2c09fc83, 0x2aae2: 0x2c09fe83, 0x2aae3: 0x2c0a0284,\n\t0x2aae4: 0x2c0a0683, 0x2aae5: 0x2c0a0a83, 0x2aae6: 0x2c0a1a83, 0x2aae7: 0x2c0a2083,\n\t0x2aae8: 0x2c0a2283, 0x2aae9: 0x2c0a2483, 0x2aaea: 0x2c0a2683, 0x2aaeb: 0x2c0a2883,\n\t0x2aaec: 0x2c0a2a83, 0x2aaed: 0x2c0a2c83, 0x2aaee: 0x2c0a2e83, 0x2aaef: 0x2c0a3083,\n\t0x2aaf0: 0x2c0a3483, 0x2aaf1: 0x2c0a3883, 0x2aaf2: 0x2c0a3c83, 0x2aaf3: 0x2c0a4083,\n\t0x2aaf4: 0x2c0a4483, 0x2aaf5: 0x2c141083, 0x2aaf6: 0x2c141483, 0x2aaf7: 0x2c141683,\n\t0x2aaf8: 0x2c143083, 0x2aaf9: 0x2c143483, 0x2aafa: 0x2c143a83, 0x2aafb: 0x2c144283,\n\t0x2aafc: 0x2c144483, 0x2aafd: 0x2c144883, 0x2aafe: 0x2c144c83, 0x2aaff: 0x2c145083,\n\t// Block 0xaac, offset 0x2ab00\n\t0x2ab00: 0x2c145283, 0x2ab01: 0x2c145683, 0x2ab02: 0x2c147a83, 0x2ab03: 0x2c147e83,\n\t0x2ab04: 0x2c148283, 0x2ab05: 0x2c148883, 0x2ab06: 0x2c149083, 0x2ab07: 0x2c149283,\n\t0x2ab08: 0x2c149483, 0x2ab09: 0x2c149883, 0x2ab0a: 0x2c149a83, 0x2ab0b: 0x2c149e83,\n\t0x2ab0c: 0x2c14ca83, 0x2ab0d: 0x2c14cc83, 0x2ab0e: 0x2c14ce83, 0x2ab0f: 0x2c14d083,\n\t0x2ab10: 0x2c14d283, 0x2ab11: 0x2c14d483, 0x2ab12: 0x2c26a083, 0x2ab13: 0x2c26a683,\n\t0x2ab14: 0x2c26aa83, 0x2ab15: 0x2c26e683, 0x2ab16: 0x2c26ea83, 0x2ab17: 0x2c26ec83,\n\t0x2ab18: 0x2c26f283, 0x2ab19: 0x2c26f483, 0x2ab1a: 0x2c26fa83, 0x2ab1b: 0x2c26fc84,\n\t0x2ab1c: 0x2c270283, 0x2ab1d: 0x2c270683, 0x2ab1e: 0x2c270e83, 0x2ab1f: 0x2c271c83,\n\t0x2ab20: 0x2c272083, 0x2ab21: 0x2c272683, 0x2ab22: 0x2c278a83, 0x2ab23: 0x2c27ec83,\n\t0x2ab24: 0x2c27ee83, 0x2ab25: 0x2c27f083, 0x2ab26: 0x2c41dc84, 0x2ab27: 0x2c41fe83,\n\t0x2ab28: 0x2c420283, 0x2ab29: 0x2c421083, 0x2ab2a: 0x2c427283, 0x2ab2b: 0x2c427483,\n\t0x2ab2c: 0x2c427883, 0x2ab2d: 0x2c427a83, 0x2ab2e: 0x2c427e83, 0x2ab2f: 0x2c632e83,\n\t0x2ab30: 0x2c633283, 0x2ab31: 0x2c633483, 0x2ab32: 0x2c633c83, 0x2ab33: 0x2c633e83,\n\t0x2ab34: 0x2c634083, 0x2ab35: 0x2c634e83, 0x2ab36: 0x2c635c83, 0x2ab37: 0x2c636283,\n\t0x2ab38: 0x2c637e83, 0x2ab39: 0x2c638283, 0x2ab3a: 0x2c8a8e83, 0x2ab3b: 0x2c8aae83,\n\t0x2ab3c: 0x2c8ab083, 0x2ab3d: 0x2c8ab283, 0x2ab3e: 0x2c8ab483, 0x2ab3f: 0x2c8aba83,\n\t// Block 0xaad, offset 0x2ab40\n\t0x2ab40: 0x2c8abc83, 0x2ab41: 0x2c8abe83, 0x2ab42: 0x2cb74483, 0x2ab43: 0x2cb75283,\n\t0x2ab44: 0x2cb78283, 0x2ab45: 0x2cb78683, 0x2ab46: 0x2cb78a83, 0x2ab47: 0x2cb79483,\n\t0x2ab48: 0x2ce8b483, 0x2ab49: 0x2ce8b883, 0x2ab4a: 0x2ce8ba83, 0x2ab4b: 0x2ce8be83,\n\t0x2ab4c: 0x2d187483, 0x2ab4d: 0x2d187883, 0x2ab4e: 0x2d187a83, 0x2ab4f: 0x2d188083,\n\t0x2ab50: 0x2d478083, 0x2ab51: 0x2d478283, 0x2ab52: 0x2d75b683, 0x2ab53: 0x2d9f9c83,\n\t0x2ab54: 0x2d9f9e83, 0x2ab55: 0x2dc24283,\n\t0x2ab70: 0x40273a20, 0x2ab71: 0x40273c20, 0x2ab72: 0x40273e20, 0x2ab73: 0x40274020,\n\t0x2ab74: 0x40274220, 0x2ab75: 0x40274420, 0x2ab76: 0x40274620, 0x2ab77: 0x40274820,\n\t0x2ab78: 0x40274a20, 0x2ab79: 0x40274c20, 0x2ab7a: 0x40274e20, 0x2ab7b: 0x40275020,\n\t// Block 0xaae, offset 0x2ab80\n\t0x2ab80: 0x00021283, 0x2ab81: 0x40025c20, 0x2ab82: 0x40030420, 0x2ab83: 0x40051220,\n\t0x2ab84: 0x40279a20, 0x2ab85: 0x6c021420, 0x2ab86: 0x6c002820, 0x2ab87: 0x6c002a20,\n\t0x2ab88: 0x40049c20, 0x2ab89: 0x40049e20, 0x2ab8a: 0x4004a020, 0x2ab8b: 0x4004a220,\n\t0x2ab8c: 0x4004a420, 0x2ab8d: 0x4004a620, 0x2ab8e: 0x4004a820, 0x2ab8f: 0x4004aa20,\n\t0x2ab90: 0x4004ac20, 0x2ab91: 0x4004ae20, 0x2ab92: 0x40279c20, 0x2ab93: 0x40279e20,\n\t0x2ab94: 0x4004b020, 0x2ab95: 0x4004b220, 0x2ab96: 0x4004b420, 0x2ab97: 0x4004b620,\n\t0x2ab98: 0x4004b820, 0x2ab99: 0x4004ba20, 0x2ab9a: 0x4004bc20, 0x2ab9b: 0x4004be20,\n\t0x2ab9c: 0x40023820, 0x2ab9d: 0x4003ea20, 0x2ab9e: 0x4003ec20, 0x2ab9f: 0x4003ee20,\n\t0x2aba0: 0x4027a020, 0x2aba1: 0x6c002c20, 0x2aba2: 0x6c00d220, 0x2aba3: 0x6c021620,\n\t0x2aba4: 0x6c00d420, 0x2aba5: 0x6c002e20, 0x2aba6: 0x6c00d620, 0x2aba7: 0x6c021820,\n\t0x2aba8: 0x6c053820, 0x2aba9: 0x6c053a20, 0x2abaa: 0xada12202, 0x2abab: 0xae412302,\n\t0x2abac: 0xae812402, 0x2abad: 0xade12502, 0x2abae: 0xae012602, 0x2abaf: 0xae012702,\n\t0x2abb0: 0x40023a20, 0x2abb1: 0x4027ce20, 0x2abb2: 0xe0000152, 0x2abb3: 0x4027d020,\n\t0x2abb4: 0xe0000155, 0x2abb5: 0x4027d220, 0x2abb6: 0x00279c84, 0x2abb7: 0x4027a220,\n\t0x2abb8: 0x2c00b684, 0x2abb9: 0x2c00e683, 0x2abba: 0x2c036883, 0x2abbb: 0x6c003020,\n\t0x2abbc: 0xe000231a, 0x2abbd: 0x40051420, 0x2abbe: 0x4027a420, 0x2abbf: 0x4027a620,\n\t// Block 0xaaf, offset 0x2abc0\n\t0x2abc0: 0x00633a84, 0x2abc1: 0x00634484, 0x2abc2: 0x0064f684, 0x2abc3: 0x0064f884,\n\t0x2abc4: 0x00635a84, 0x2abc5: 0x00635c84, 0x2abc6: 0x00635e84, 0x2abc7: 0x0063ee84,\n\t0x2abc8: 0x0063f084, 0x2abc9: 0x0063f684, 0x2abca: 0x00640884, 0x2abcb: 0x00640a84,\n\t0x2abcc: 0x00640e84, 0x2abcd: 0x00642284, 0x2abce: 0x00642884,\n\t0x2abd0: 0x4027a820, 0x2abd1: 0x4027aa20, 0x2abd2: 0x2c000285, 0x2abd3: 0x2c007485,\n\t0x2abd4: 0x2c00dc85, 0x2abd5: 0x2c079084, 0x2abd6: 0x2c00de84, 0x2abd7: 0x2c023685,\n\t0x2abd8: 0x2c00e084, 0x2abd9: 0x2c0a0e83, 0x2abda: 0x2c001083, 0x2abdb: 0x2c054883,\n\t0x2abdc: 0x2c003283, 0x2abdd: 0x2c03de84, 0x2abde: 0x2c0ed083, 0x2abdf: 0x2c007e83,\n\t0x2abe0: 0xe000237a, 0x2abe1: 0xe0002383, 0x2abe2: 0xe0002380, 0x2abe3: 0xe000237d,\n\t0x2abe4: 0x40661c20, 0x2abe5: 0xe000238c, 0x2abe6: 0x40661620, 0x2abe7: 0xe0002389,\n\t0x2abe8: 0xe000239e, 0x2abe9: 0xe0002386, 0x2abea: 0xe0002395, 0x2abeb: 0xe000239b,\n\t0x2abec: 0x40663420, 0x2abed: 0x4065f220, 0x2abee: 0xe000238f, 0x2abef: 0xe0002392,\n\t0x2abf0: 0x40663020, 0x2abf1: 0x40663220, 0x2abf2: 0x40662c20, 0x2abf3: 0xe0002398,\n\t0x2abf4: 0x0065dc99, 0x2abf5: 0x0065e699, 0x2abf6: 0x0065ee99, 0x2abf7: 0x0065f499,\n\t0x2abf8: 0x40660c20, 0x2abf9: 0x40660e20, 0x2abfa: 0x40661020,\n\t// Block 0xab0, offset 0x2ac00\n\t0x2ac00: 0xf0000404, 0x2ac01: 0xf0000404, 0x2ac02: 0xf0000404, 0x2ac03: 0xf0000404,\n\t0x2ac04: 0xf0000404, 0x2ac05: 0xf0000404, 0x2ac06: 0xf0000404, 0x2ac07: 0xf0000404,\n\t0x2ac08: 0xf0000404, 0x2ac09: 0xf0000404, 0x2ac0a: 0xf0000404, 0x2ac0b: 0xf0000404,\n\t0x2ac0c: 0xf0000404, 0x2ac0d: 0xf0000404, 0x2ac0e: 0xe000004c, 0x2ac0f: 0xe0000051,\n\t0x2ac10: 0xe0000056, 0x2ac11: 0xe000005b, 0x2ac12: 0xe0000060, 0x2ac13: 0xe0000065,\n\t0x2ac14: 0xe000006a, 0x2ac15: 0xe000006f, 0x2ac16: 0xe0000083, 0x2ac17: 0xe000008d,\n\t0x2ac18: 0xe0000092, 0x2ac19: 0xe0000097, 0x2ac1a: 0xe000009c, 0x2ac1b: 0xe00000a1,\n\t0x2ac1c: 0xe0000088, 0x2ac1d: 0xe0000074, 0x2ac1e: 0xe000007c,\n\t0x2ac20: 0xe000b5b7, 0x2ac21: 0xe000b5c3, 0x2ac22: 0xe000b5cf, 0x2ac23: 0xe000b5f7,\n\t0x2ac24: 0xe000b5d7, 0x2ac25: 0xe000b5db, 0x2ac26: 0xe000b5bb, 0x2ac27: 0xe000b5c7,\n\t0x2ac28: 0xe000b5bf, 0x2ac29: 0xe000b5cb, 0x2ac2a: 0xe000b5e3, 0x2ac2b: 0xe000b5ef,\n\t0x2ac2c: 0xe000b5eb, 0x2ac2d: 0xe000b5e7, 0x2ac2e: 0xe000b627, 0x2ac2f: 0xe000b5d3,\n\t0x2ac30: 0xe000b5df, 0x2ac31: 0xe000b62b, 0x2ac32: 0xe000b607, 0x2ac33: 0xe000b623,\n\t0x2ac34: 0xe000b603, 0x2ac35: 0xe000b62f, 0x2ac36: 0xe000b637, 0x2ac37: 0xe000b633,\n\t0x2ac38: 0xe000b613, 0x2ac39: 0xe000b5f3, 0x2ac3a: 0xe000b61b, 0x2ac3b: 0xe000b61f,\n\t0x2ac3c: 0xe000b643, 0x2ac3d: 0xe000b5fb, 0x2ac3e: 0xe000b63f, 0x2ac3f: 0xe000b617,\n\t// Block 0xab1, offset 0x2ac40\n\t0x2ac40: 0xe000b63b, 0x2ac41: 0xe000b5ff, 0x2ac42: 0xe000b60b, 0x2ac43: 0xe000b60f,\n\t0x2ac44: 0x2c8e8e83, 0x2ac45: 0x2c08be83, 0x2ac46: 0x2c048483, 0x2ac47: 0x2d326883,\n\t0x2ac48: 0xe00002e3, 0x2ac49: 0xe00003d8, 0x2ac4a: 0xe00004b3, 0x2ac4b: 0xe000057d,\n\t0x2ac4c: 0xe0000648, 0x2ac4d: 0xe00006f0, 0x2ac4e: 0xe000079c, 0x2ac4f: 0xe0000841,\n\t0x2ac50: 0xe0000ec0, 0x2ac51: 0xf0000606, 0x2ac52: 0xf0000606, 0x2ac53: 0xf0000606,\n\t0x2ac54: 0xf0000606, 0x2ac55: 0xf0000606, 0x2ac56: 0xf0000606, 0x2ac57: 0xf0000606,\n\t0x2ac58: 0xf0000606, 0x2ac59: 0xf0000606, 0x2ac5a: 0xf0000606, 0x2ac5b: 0xf0000606,\n\t0x2ac5c: 0xf0000606, 0x2ac5d: 0xf0000606, 0x2ac5e: 0xf0000606, 0x2ac5f: 0xf0000606,\n\t0x2ac60: 0x0062ac86, 0x2ac61: 0x0062b086, 0x2ac62: 0x0062b286, 0x2ac63: 0x0062b686,\n\t0x2ac64: 0x0062b886, 0x2ac65: 0x0062ba86, 0x2ac66: 0x0062be86, 0x2ac67: 0x0062c286,\n\t0x2ac68: 0x0062c486, 0x2ac69: 0x0062c886, 0x2ac6a: 0x0062ca86, 0x2ac6b: 0x0062cc86,\n\t0x2ac6c: 0x0062ce86, 0x2ac6d: 0x0062d086, 0x2ac6e: 0xf0000606, 0x2ac6f: 0xf0000606,\n\t0x2ac70: 0xf0000606, 0x2ac71: 0xf0000606, 0x2ac72: 0xf0000606, 0x2ac73: 0xf0000606,\n\t0x2ac74: 0xf0000606, 0x2ac75: 0xf0000606, 0x2ac76: 0xf0000606, 0x2ac77: 0xf0000606,\n\t0x2ac78: 0xf0000606, 0x2ac79: 0xf0000606, 0x2ac7a: 0xf0000606, 0x2ac7b: 0xf0000606,\n\t0x2ac7c: 0xe0002127, 0x2ac7d: 0xe0002122, 0x2ac7e: 0xf0000606, 0x2ac7f: 0x4027ac20,\n\t// Block 0xab2, offset 0x2ac80\n\t0x2ac80: 0x2c000284, 0x2ac81: 0x2c007484, 0x2ac82: 0x2c00dc84, 0x2ac83: 0x2c079083,\n\t0x2ac84: 0x2c028883, 0x2ac85: 0x2c02d883, 0x2ac86: 0x2c003683, 0x2ac87: 0x2c008883,\n\t0x2ac88: 0x2c006283, 0x2ac89: 0x2c00b683, 0x2ac8a: 0x2c049c84, 0x2ac8b: 0x2c04d083,\n\t0x2ac8c: 0x2c04c683, 0x2ac8d: 0x2c049e83, 0x2ac8e: 0x2c41dc83, 0x2ac8f: 0x2c018483,\n\t0x2ac90: 0x2c049683, 0x2ac91: 0x2c741683, 0x2ac92: 0x2c127484, 0x2ac93: 0x2c3cee83,\n\t0x2ac94: 0x2c0e3e83, 0x2ac95: 0x2c791683, 0x2ac96: 0x2c86f083, 0x2ac97: 0x2c7de083,\n\t0x2ac98: 0x2c185283, 0x2ac99: 0x2c7e3883, 0x2ac9a: 0x2c24b683, 0x2ac9b: 0x2c019483,\n\t0x2ac9c: 0x2d6c7483, 0x2ac9d: 0x2d9fc483, 0x2ac9e: 0x2c0db883, 0x2ac9f: 0x2c38fa83,\n\t0x2aca0: 0x2ce74883, 0x2aca1: 0x2c0bc083, 0x2aca2: 0x2c063e83, 0x2aca3: 0x2c097683,\n\t0x2aca4: 0x2c00de83, 0x2aca5: 0x2c023684, 0x2aca6: 0x2c00e083, 0x2aca7: 0x2c089284,\n\t0x2aca8: 0x2c075484, 0x2aca9: 0x2c18a683, 0x2acaa: 0x2c300483, 0x2acab: 0x2c2fd883,\n\t0x2acac: 0x2d2efa83, 0x2acad: 0x2c0ba083, 0x2acae: 0x2d0f3883, 0x2acaf: 0x2c2bb283,\n\t0x2acb0: 0x2c2e8e83, 0x2acb1: 0xf0000606, 0x2acb2: 0xf0000606, 0x2acb3: 0xf0000606,\n\t0x2acb4: 0xf0000606, 0x2acb5: 0xf0000606, 0x2acb6: 0xf0000606, 0x2acb7: 0xf0000606,\n\t0x2acb8: 0xf0000606, 0x2acb9: 0xf0000606, 0x2acba: 0xf0000606, 0x2acbb: 0xf0000606,\n\t0x2acbc: 0xf0000606, 0x2acbd: 0xf0000606, 0x2acbe: 0xf0000606, 0x2acbf: 0xf0000606,\n\t// Block 0xab3, offset 0x2acc0\n\t0x2acc0: 0xf0000203, 0x2acc1: 0xf0000203, 0x2acc2: 0xf0000203, 0x2acc3: 0xf0000203,\n\t0x2acc4: 0xf0000203, 0x2acc5: 0xf0000203, 0x2acc6: 0xf0000203, 0x2acc7: 0xf0000203,\n\t0x2acc8: 0xf0000203, 0x2acc9: 0xe000b66f, 0x2acca: 0xe000b67b, 0x2accb: 0xe000b687,\n\t0x2accc: 0xf0001c1d, 0x2accd: 0xe0000b85, 0x2acce: 0xf0001d1c, 0x2accf: 0xe0000d14,\n\t0x2acd0: 0x00657693, 0x2acd1: 0x00657893, 0x2acd2: 0x00657a93, 0x2acd3: 0x00657e93,\n\t0x2acd4: 0x00658093, 0x2acd5: 0x00658293, 0x2acd6: 0x00658493, 0x2acd7: 0x00658693,\n\t0x2acd8: 0x00658893, 0x2acd9: 0x00658a93, 0x2acda: 0x00658c93, 0x2acdb: 0x00658e93,\n\t0x2acdc: 0x00659093, 0x2acdd: 0x00659293, 0x2acde: 0x00659493, 0x2acdf: 0x00659693,\n\t0x2ace0: 0x00659893, 0x2ace1: 0x00659a93, 0x2ace2: 0x00659c93, 0x2ace3: 0x00659e93,\n\t0x2ace4: 0x0065a093, 0x2ace5: 0x0065a293, 0x2ace6: 0x0065a493, 0x2ace7: 0x0065a693,\n\t0x2ace8: 0x0065a893, 0x2ace9: 0x0065aa93, 0x2acea: 0x0065ac93, 0x2aceb: 0x0065ae93,\n\t0x2acec: 0x0065b093, 0x2aced: 0x0065b293, 0x2acee: 0x0065b493, 0x2acef: 0x0065b693,\n\t0x2acf0: 0x0065b893, 0x2acf1: 0x0065ba93, 0x2acf2: 0x0065bc93, 0x2acf3: 0x0065be93,\n\t0x2acf4: 0x0065c093, 0x2acf5: 0x0065c493, 0x2acf6: 0x0065c693, 0x2acf7: 0x0065c893,\n\t0x2acf8: 0x0065ca93, 0x2acf9: 0x0065cc93, 0x2acfa: 0x0065ce93, 0x2acfb: 0x0065d093,\n\t0x2acfc: 0x0065d293, 0x2acfd: 0x0065d493, 0x2acfe: 0x0065d693,\n\t// Block 0xab4, offset 0x2ad00\n\t0x2ad00: 0xe000230b, 0x2ad01: 0xe00022f8, 0x2ad02: 0xe00022fc, 0x2ad03: 0xe0002311,\n\t0x2ad04: 0xe0002316, 0x2ad05: 0xe000231d, 0x2ad06: 0xe0002321, 0x2ad07: 0xe0002325,\n\t0x2ad08: 0xe000232b, 0x2ad09: 0xf0001c1c, 0x2ad0a: 0xe0002330, 0x2ad0b: 0xe000233c,\n\t0x2ad0c: 0xe0002340, 0x2ad0d: 0xe0002337, 0x2ad0e: 0xe0002346, 0x2ad0f: 0xe000234b,\n\t0x2ad10: 0xe000234f, 0x2ad11: 0xe0002353, 0x2ad12: 0xf0001c1c, 0x2ad13: 0xe000235e,\n\t0x2ad14: 0xe0002358, 0x2ad15: 0xf0001c1c, 0x2ad16: 0xe0002363, 0x2ad17: 0xe000236d,\n\t0x2ad18: 0xf0000203, 0x2ad19: 0xf0000203, 0x2ad1a: 0xf0000203, 0x2ad1b: 0xf0000203,\n\t0x2ad1c: 0xf0000203, 0x2ad1d: 0xf0000203, 0x2ad1e: 0xf0000203, 0x2ad1f: 0xf0000203,\n\t0x2ad20: 0xf0000203, 0x2ad21: 0xf0000203, 0x2ad22: 0xe000b673, 0x2ad23: 0xe000b67f,\n\t0x2ad24: 0xe000b68b, 0x2ad25: 0xe000b693, 0x2ad26: 0xe000b69b, 0x2ad27: 0xe000b6a3,\n\t0x2ad28: 0xe000b6ab, 0x2ad29: 0xe000b6b3, 0x2ad2a: 0xe000b6bb, 0x2ad2b: 0xe000b6c3,\n\t0x2ad2c: 0xe000b6cb, 0x2ad2d: 0xe000b6d3, 0x2ad2e: 0xe000b6db, 0x2ad2f: 0xe000b6e3,\n\t0x2ad30: 0xe000b6eb, 0x2ad31: 0xe0000c1e, 0x2ad32: 0xf0001c1c, 0x2ad33: 0xf0001d1d,\n\t0x2ad34: 0xe0000a31, 0x2ad35: 0xf0001d1c, 0x2ad36: 0xf0001c1c, 0x2ad37: 0xf0001c1c,\n\t0x2ad38: 0xe0000ac2, 0x2ad39: 0xe0000ac6, 0x2ad3a: 0xf0001d1d, 0x2ad3b: 0xf0000203,\n\t0x2ad3c: 0xf0000203, 0x2ad3d: 0xf0000203, 0x2ad3e: 0xf0000203, 0x2ad3f: 0xe000b70b,\n\t// Block 0xab5, offset 0x2ad40\n\t0x2ad40: 0xf0001d1c, 0x2ad41: 0xf0001d1d, 0x2ad42: 0xe00009b7, 0x2ad43: 0xf0001c1d,\n\t0x2ad44: 0xf0001c1c, 0x2ad45: 0xf0001c1c, 0x2ad46: 0xe0000a66, 0x2ad47: 0xe0000a7a,\n\t0x2ad48: 0xf0001d1c, 0x2ad49: 0xf0001c1d, 0x2ad4a: 0xf0001c1c, 0x2ad4b: 0xf0001d1d,\n\t0x2ad4c: 0xf0001c1c, 0x2ad4d: 0xf0001d1d, 0x2ad4e: 0xf0001d1d, 0x2ad4f: 0xf0001c1c,\n\t0x2ad50: 0xf0001c1c, 0x2ad51: 0xf0001c1c, 0x2ad52: 0xe0000d0d, 0x2ad53: 0xf0001c1c,\n\t0x2ad54: 0xf0001c1c, 0x2ad55: 0xe0000d3a, 0x2ad56: 0xe0000d46, 0x2ad57: 0xf0001d1d,\n\t0x2ad58: 0xe0000eb0, 0x2ad59: 0xe0000eb8, 0x2ad5a: 0xf0001d1d, 0x2ad5b: 0xf0001c1c,\n\t0x2ad5c: 0xf0001c1d, 0x2ad5d: 0xf0001c1d, 0x2ad5e: 0xe00010b2, 0x2ad5f: 0xe00009c8,\n\t0x2ad60: 0xf0000203, 0x2ad61: 0xf0000203, 0x2ad62: 0xf0000203, 0x2ad63: 0xf0000203,\n\t0x2ad64: 0xf0000203, 0x2ad65: 0xf0000203, 0x2ad66: 0xf0000203, 0x2ad67: 0xf0000203,\n\t0x2ad68: 0xf0000203, 0x2ad69: 0xe000b66b, 0x2ad6a: 0xe000b677, 0x2ad6b: 0xe000b683,\n\t0x2ad6c: 0xe000b68f, 0x2ad6d: 0xe000b697, 0x2ad6e: 0xe000b69f, 0x2ad6f: 0xe000b6a7,\n\t0x2ad70: 0xe000b6af, 0x2ad71: 0xe000b6b7, 0x2ad72: 0xe000b6bf, 0x2ad73: 0xe000b6c7,\n\t0x2ad74: 0xe000b6cf, 0x2ad75: 0xe000b6d7, 0x2ad76: 0xe000b6df, 0x2ad77: 0xe000b6e7,\n\t0x2ad78: 0xe000b6ef, 0x2ad79: 0xe000b6f3, 0x2ad7a: 0xe000b6f7, 0x2ad7b: 0xe000b6fb,\n\t0x2ad7c: 0xe000b6ff, 0x2ad7d: 0xe000b703, 0x2ad7e: 0xe000b707, 0x2ad7f: 0xe0000bdf,\n\t// Block 0xab6, offset 0x2ad80\n\t0x2ad80: 0x6c053e20, 0x2ad81: 0x6c0acc20, 0x2ad82: 0x6c0ace20, 0x2ad83: 0x6c00f620,\n\t0x2ad84: 0x6c00f820, 0x2ad85: 0x6c004e20, 0x2ad86: 0x6c0aee20, 0x2ad87: 0x6c011a20,\n\t0x2ad88: 0x6c011c20, 0x2ad89: 0x6c011e20, 0x2ad8a: 0x6c025820, 0x2ad8b: 0x6c025a20,\n\t0x2ad8c: 0x6c059820, 0x2ad8d: 0x6c059a20, 0x2ad8e: 0x6c059c20, 0x2ad8f: 0x6c059e20,\n\t0x2ad90: 0x6c0b0e20, 0x2ad91: 0x6c0b1020, 0x2ad92: 0x6c0b1220, 0x2ad93: 0x6c0b1420,\n\t0x2ad94: 0x6c0b1620, 0x2ad95: 0x6c0b1820, 0x2ad96: 0x6c160a20, 0x2ad97: 0x6c160c20,\n\t0x2ad98: 0x6c160e20, 0x2ad99: 0x6c28d820, 0x2ad9a: 0x6c28da20, 0x2ad9b: 0x6c28dc20,\n\t0x2ad9c: 0x6c430a20, 0x2ad9d: 0x6c430c20, 0x2ad9e: 0x6c430e20, 0x2ad9f: 0x6c431020,\n\t0x2ada0: 0x6c431220, 0x2ada1: 0x6c8b0620, 0x2ada2: 0x6c8b0820, 0x2ada3: 0x6c8b0a20,\n\t0x2ada4: 0x6cb7b020, 0x2ada5: 0x6d75d620, 0x2ada6: 0x6de00620, 0x2ada7: 0x6c027820,\n\t0x2ada8: 0x6c28f220, 0x2ada9: 0x6c28fa20, 0x2adaa: 0x6c0b5020, 0x2adab: 0x6c0b5220,\n\t0x2adac: 0x6c163420, 0x2adad: 0x6c290c20, 0x2adae: 0x6ce8e420, 0x2adaf: 0x6d9fa820,\n\t0x2adb0: 0x6c05b820, 0x2adb1: 0x6c05ba20, 0x2adb2: 0x6c05bc20, 0x2adb3: 0x6c05be20,\n\t0x2adb4: 0x6c05c020, 0x2adb5: 0x6c05c220, 0x2adb6: 0x6c05c420, 0x2adb7: 0x6c05c620,\n\t0x2adb8: 0x6c0b6820, 0x2adb9: 0x6c0b6a20, 0x2adba: 0x6c0b6c20, 0x2adbb: 0x6c0b6e20,\n\t0x2adbc: 0x6c0b7020, 0x2adbd: 0x6c0b7220, 0x2adbe: 0x6c0b7420, 0x2adbf: 0x6c0b7620,\n\t// Block 0xab7, offset 0x2adc0\n\t0x2adc0: 0x6c0b7820, 0x2adc1: 0x6c164620, 0x2adc2: 0x6c164820, 0x2adc3: 0x6c164a20,\n\t0x2adc4: 0x6c164c20, 0x2adc5: 0x6c164e20, 0x2adc6: 0x6c165020, 0x2adc7: 0x6c165220,\n\t0x2adc8: 0x6c165420, 0x2adc9: 0x6c292220, 0x2adca: 0x6c292420, 0x2adcb: 0x6c292620,\n\t0x2adcc: 0x6c292820, 0x2adcd: 0x6c292a20, 0x2adce: 0x6c292c20, 0x2adcf: 0x6c292e20,\n\t0x2add0: 0x6c293020, 0x2add1: 0x6c293220, 0x2add2: 0x6c293420, 0x2add3: 0x6c293620,\n\t0x2add4: 0x6c293820, 0x2add5: 0x6c293a20, 0x2add6: 0x6c293c20, 0x2add7: 0x6c434620,\n\t0x2add8: 0x6c434820, 0x2add9: 0x6c434a20, 0x2adda: 0x6c434c20, 0x2addb: 0x6c434e20,\n\t0x2addc: 0x6c435020, 0x2addd: 0x6c435220, 0x2adde: 0x6c435420, 0x2addf: 0x6c435620,\n\t0x2ade0: 0x6c435820, 0x2ade1: 0x6c435a20, 0x2ade2: 0x6c435c20, 0x2ade3: 0x6c641a20,\n\t0x2ade4: 0x6c8b3e20, 0x2ade5: 0x6c641c20, 0x2ade6: 0x6c641e20, 0x2ade7: 0x6c642020,\n\t0x2ade8: 0x6c642220, 0x2ade9: 0x6c642420, 0x2adea: 0x6c642620, 0x2adeb: 0x6c642820,\n\t0x2adec: 0x6c642a20, 0x2aded: 0x6c642c20, 0x2adee: 0x6c8b4020, 0x2adef: 0x6c8b4220,\n\t0x2adf0: 0x6c8b4420, 0x2adf1: 0x6c8b4620, 0x2adf2: 0x6c8b4820, 0x2adf3: 0x6cb7da20,\n\t0x2adf4: 0x6cb7dc20, 0x2adf5: 0x6cb7de20, 0x2adf6: 0x6cb7e020, 0x2adf7: 0x6cb7e220,\n\t0x2adf8: 0x6cb7e420, 0x2adf9: 0x6cb7e620, 0x2adfa: 0x6cb7e820, 0x2adfb: 0x6ce8fe20,\n\t0x2adfc: 0x6ce90020, 0x2adfd: 0x6ce90220, 0x2adfe: 0x6ce90420, 0x2adff: 0x6ce90620,\n\t// Block 0xab8, offset 0x2ae00\n\t0x2ae00: 0x6ce90820, 0x2ae01: 0x6ce90a20, 0x2ae02: 0x6d18ae20, 0x2ae03: 0x6d18b020,\n\t0x2ae04: 0x6d18b220, 0x2ae05: 0x6d18b420, 0x2ae06: 0x6d18b620, 0x2ae07: 0x6d18b820,\n\t0x2ae08: 0x6d18ba20, 0x2ae09: 0x6d18bc20, 0x2ae0a: 0x6d18be20, 0x2ae0b: 0x6d18c020,\n\t0x2ae0c: 0x6d18c220, 0x2ae0d: 0x6d18c420, 0x2ae0e: 0x6d18c620, 0x2ae0f: 0x6d18c820,\n\t0x2ae10: 0x6d18ca20, 0x2ae11: 0x6d47b220, 0x2ae12: 0x6d47b420, 0x2ae13: 0x6d47b620,\n\t0x2ae14: 0x6d47b820, 0x2ae15: 0x6d47ba20, 0x2ae16: 0x6d47bc20, 0x2ae17: 0x6d47be20,\n\t0x2ae18: 0x6d47c020, 0x2ae19: 0x6d75f420, 0x2ae1a: 0x6d75f620, 0x2ae1b: 0x6d75f820,\n\t0x2ae1c: 0x6d75fa20, 0x2ae1d: 0x6d9faa20, 0x2ae1e: 0x6d9fac20, 0x2ae1f: 0x6dc24a20,\n\t0x2ae20: 0x6dc24c20, 0x2ae21: 0x6de00e20, 0x2ae22: 0x6de01020, 0x2ae23: 0x6de01220,\n\t0x2ae24: 0x6df86e20, 0x2ae25: 0x6df87020, 0x2ae26: 0x6df87220, 0x2ae27: 0x6e0c3e20,\n\t0x2ae28: 0x6e0c4020, 0x2ae29: 0x6e284a20, 0x2ae2a: 0x6e3ce220, 0x2ae2b: 0x6c0c4420,\n\t0x2ae2c: 0x6c2a2c20, 0x2ae2d: 0x6c657020, 0x2ae2e: 0x6c8c6620, 0x2ae2f: 0x6dc28c20,\n\t0x2ae30: 0x6c061620, 0x2ae31: 0x6c061820, 0x2ae32: 0x6c0c5820, 0x2ae33: 0x6c174e20,\n\t0x2ae34: 0x6c175020, 0x2ae35: 0x6c175c20, 0x2ae36: 0x6c175e20, 0x2ae37: 0x6c176020,\n\t0x2ae38: 0x6c447420, 0x2ae39: 0x6df89620, 0x2ae3a: 0x6c2a5c20, 0x2ae3b: 0x6c8c8420,\n\t0x2ae3c: 0x6c8c8620, 0x2ae3d: 0x6cb8f220, 0x2ae3e: 0x6cea0820, 0x2ae3f: 0x6e1c1c20,\n\t// Block 0xab9, offset 0x2ae40\n\t0x2ae40: 0x6c02fa20, 0x2ae41: 0x6c02fc20, 0x2ae42: 0x6c449020, 0x2ae43: 0x6cb8fc20,\n\t0x2ae44: 0x6d487620, 0x2ae45: 0x6c030620, 0x2ae46: 0x6c0c9820, 0x2ae47: 0x6c0c9a20,\n\t0x2ae48: 0x6c178e20, 0x2ae49: 0x6c2a7420, 0x2ae4a: 0x6c2a7620, 0x2ae4b: 0x6c2a7820,\n\t0x2ae4c: 0x6c2a7a20, 0x2ae4d: 0x6c2a7c20, 0x2ae4e: 0x6c44a020, 0x2ae4f: 0x6c44a220,\n\t0x2ae50: 0x6c65c220, 0x2ae51: 0x6c65c420, 0x2ae52: 0x6c65c620, 0x2ae53: 0x6c8c9620,\n\t0x2ae54: 0x6cb90c20, 0x2ae55: 0x6cb90e20, 0x2ae56: 0x6cea1220, 0x2ae57: 0x6d19ea20,\n\t0x2ae58: 0x6c8cbe20, 0x2ae59: 0x6c0cd220, 0x2ae5a: 0x6c067c20, 0x2ae5b: 0x6c067e20,\n\t0x2ae5c: 0x6c068020, 0x2ae5d: 0x6c0ce620, 0x2ae5e: 0x6c0ce820, 0x2ae5f: 0x6c17da20,\n\t0x2ae60: 0x6c17dc20, 0x2ae61: 0x6c2abc20, 0x2ae62: 0x6c2abe20, 0x2ae63: 0x6c2ac020,\n\t0x2ae64: 0x6c2ac220, 0x2ae65: 0x6c2ac420, 0x2ae66: 0x6c2ac620, 0x2ae67: 0x6c44e020,\n\t0x2ae68: 0x6c44e220, 0x2ae69: 0x6c44e420, 0x2ae6a: 0x6c44e620, 0x2ae6b: 0x6c44e820,\n\t0x2ae6c: 0x6c661220, 0x2ae6d: 0x6c661420, 0x2ae6e: 0x6c661620, 0x2ae6f: 0x6c661820,\n\t0x2ae70: 0x6c661a20, 0x2ae71: 0x6c8cd820, 0x2ae72: 0x6c8cda20, 0x2ae73: 0x6c8cdc20,\n\t0x2ae74: 0x6c8cde20, 0x2ae75: 0x6c8ce020, 0x2ae76: 0x6c8ce220, 0x2ae77: 0x6cb94620,\n\t0x2ae78: 0x6cb94820, 0x2ae79: 0x6cb94a20, 0x2ae7a: 0x6cb94c20, 0x2ae7b: 0x6cb94e20,\n\t0x2ae7c: 0x6cea3c20, 0x2ae7d: 0x6cea3e20, 0x2ae7e: 0x6d1a0e20, 0x2ae7f: 0x6d1a1020,\n\t// Block 0xaba, offset 0x2ae80\n\t0x2ae80: 0x6d1a1220, 0x2ae81: 0x6d1a1420, 0x2ae82: 0x6d1a1620, 0x2ae83: 0x6d1a1820,\n\t0x2ae84: 0x6d1a1a20, 0x2ae85: 0x6d1a1c20, 0x2ae86: 0x6d1a1e20, 0x2ae87: 0x6d1a2020,\n\t0x2ae88: 0x6d1a2220, 0x2ae89: 0x6d1a2420, 0x2ae8a: 0x6d489620, 0x2ae8b: 0x6d76a420,\n\t0x2ae8c: 0x6d76a620, 0x2ae8d: 0x6d76a820, 0x2ae8e: 0x6da03020, 0x2ae8f: 0x6da03220,\n\t0x2ae90: 0x6dc2b620, 0x2ae91: 0x6de05620, 0x2ae92: 0x6df8a620, 0x2ae93: 0x6c06a020,\n\t0x2ae94: 0x6c0d3a20, 0x2ae95: 0x6c0d3c20, 0x2ae96: 0x6c0d3e20, 0x2ae97: 0x6c183820,\n\t0x2ae98: 0x6c183a20, 0x2ae99: 0x6c2b4c20, 0x2ae9a: 0x6c2b4e20, 0x2ae9b: 0x6c2b5020,\n\t0x2ae9c: 0x6c454e20, 0x2ae9d: 0x6c66a620, 0x2ae9e: 0x6c66a820, 0x2ae9f: 0x6c66aa20,\n\t0x2aea0: 0x6c8d4220, 0x2aea1: 0x6cb9aa20, 0x2aea2: 0x6d1a7620, 0x2aea3: 0x6da05420,\n\t0x2aea4: 0x6da05620, 0x2aea5: 0x6da05820, 0x2aea6: 0x6da05a20, 0x2aea7: 0x6dc2c420,\n\t0x2aea8: 0x6c8d6a20, 0x2aea9: 0x6cb9d420, 0x2aeaa: 0x6ceac220, 0x2aeab: 0x6c035820,\n\t0x2aeac: 0x6c2b9a20, 0x2aead: 0x6c8d8020, 0x2aeae: 0x6e123e20, 0x2aeaf: 0x6c188c20,\n\t0x2aeb0: 0x6c188e20, 0x2aeb1: 0x6c8d8620, 0x2aeb2: 0x6cead220, 0x2aeb3: 0x6cead420,\n\t0x2aeb4: 0x6cead620, 0x2aeb5: 0x6d1aba20, 0x2aeb6: 0x6e3cf020, 0x2aeb7: 0x6c18a420,\n\t0x2aeb8: 0x6cb9f020, 0x2aeb9: 0x6c036620, 0x2aeba: 0x6c0d8020, 0x2aebb: 0x6c0d8220,\n\t0x2aebc: 0x6ceae020, 0x2aebd: 0x6c2bd420, 0x2aebe: 0x6c016e20, 0x2aebf: 0x6c017020,\n\t// Block 0xabb, offset 0x2aec0\n\t0x2aec0: 0x6c18d020, 0x2aec1: 0x6c2bf220, 0x2aec2: 0x6c0dc820, 0x2aec3: 0x6c0dca20,\n\t0x2aec4: 0x6c0dcc20, 0x2aec5: 0x6c18dc20, 0x2aec6: 0x6c18de20, 0x2aec7: 0x6c18e020,\n\t0x2aec8: 0x6c2c0020, 0x2aec9: 0x6c2c0220, 0x2aeca: 0x6c45f620, 0x2aecb: 0x6c673220,\n\t0x2aecc: 0x6c673420, 0x2aecd: 0x6c673620, 0x2aece: 0x6cba0a20, 0x2aecf: 0x6ceb0220,\n\t0x2aed0: 0x6d1adc20, 0x2aed1: 0x6d1ade20, 0x2aed2: 0x6d491820, 0x2aed3: 0x6da08620,\n\t0x2aed4: 0x6e319620, 0x2aed5: 0x6c039020, 0x2aed6: 0x6c677020, 0x2aed7: 0x6c8de220,\n\t0x2aed8: 0x6c8de420, 0x2aed9: 0x6d493a20, 0x2aeda: 0x6c039c20, 0x2aedb: 0x6c039e20,\n\t0x2aedc: 0x6c0e0620, 0x2aedd: 0x6c190c20, 0x2aede: 0x6c2c3a20, 0x2aedf: 0x6c463e20,\n\t0x2aee0: 0x6cba4220, 0x2aee1: 0x6d1b2020, 0x2aee2: 0x6d3d7420, 0x2aee3: 0x6c073020,\n\t0x2aee4: 0x6c073220, 0x2aee5: 0x6c073420, 0x2aee6: 0x6c0e1c20, 0x2aee7: 0x6c0e1e20,\n\t0x2aee8: 0x6c0e2020, 0x2aee9: 0x6c192220, 0x2aeea: 0x6c192420, 0x2aeeb: 0x6c192620,\n\t0x2aeec: 0x6c192820, 0x2aeed: 0x6c192a20, 0x2aeee: 0x6c192c20, 0x2aeef: 0x6c192e20,\n\t0x2aef0: 0x6c193020, 0x2aef1: 0x6c193220, 0x2aef2: 0x6c193420, 0x2aef3: 0x6c193620,\n\t0x2aef4: 0x6c193820, 0x2aef5: 0x6c193a20, 0x2aef6: 0x6c193c20, 0x2aef7: 0x6c2c5620,\n\t0x2aef8: 0x6c2c5820, 0x2aef9: 0x6c2c5a20, 0x2aefa: 0x6c2c5c20, 0x2aefb: 0x6c2c5e20,\n\t0x2aefc: 0x6c2c6020, 0x2aefd: 0x6c2c6220, 0x2aefe: 0x6c2c6420, 0x2aeff: 0x6c2c6620,\n\t// Block 0xabc, offset 0x2af00\n\t0x2af00: 0x6c466820, 0x2af01: 0x6c466a20, 0x2af02: 0x6c466c20, 0x2af03: 0x6c466e20,\n\t0x2af04: 0x6c467020, 0x2af05: 0x6c467220, 0x2af06: 0x6c467420, 0x2af07: 0x6c467620,\n\t0x2af08: 0x6c467820, 0x2af09: 0x6c467a20, 0x2af0a: 0x6c467c20, 0x2af0b: 0x6c467e20,\n\t0x2af0c: 0x6c468020, 0x2af0d: 0x6c468220, 0x2af0e: 0x6c468420, 0x2af0f: 0x6c679a20,\n\t0x2af10: 0x6c679c20, 0x2af11: 0x6c679e20, 0x2af12: 0x6c67a020, 0x2af13: 0x6c67a220,\n\t0x2af14: 0x6c67a420, 0x2af15: 0x6c67a620, 0x2af16: 0x6c67a820, 0x2af17: 0x6c67aa20,\n\t0x2af18: 0x6c67ac20, 0x2af19: 0x6c67ae20, 0x2af1a: 0x6c67b020, 0x2af1b: 0x6c67b220,\n\t0x2af1c: 0x6c67b420, 0x2af1d: 0x6c67b620, 0x2af1e: 0x6c67b820, 0x2af1f: 0x6c8e1220,\n\t0x2af20: 0x6c8e1420, 0x2af21: 0x6c8e1620, 0x2af22: 0x6c8e1820, 0x2af23: 0x6c8e1a20,\n\t0x2af24: 0x6c8e1c20, 0x2af25: 0x6c8e1e20, 0x2af26: 0x6c8e2020, 0x2af27: 0x6c8e2220,\n\t0x2af28: 0x6c8e2420, 0x2af29: 0x6c8e2620, 0x2af2a: 0x6c8e2820, 0x2af2b: 0x6c8e2a20,\n\t0x2af2c: 0x6c8e2c20, 0x2af2d: 0x6c8e2e20, 0x2af2e: 0x6c8e3020, 0x2af2f: 0x6c8e3220,\n\t0x2af30: 0x6c8e3420, 0x2af31: 0x6c8e3620, 0x2af32: 0x6c8e3820, 0x2af33: 0x6c8e3a20,\n\t0x2af34: 0x6c8e3c20, 0x2af35: 0x6c8e3e20, 0x2af36: 0x6cba5c20, 0x2af37: 0x6cba5e20,\n\t0x2af38: 0x6cba6020, 0x2af39: 0x6cba6220, 0x2af3a: 0x6cba6420, 0x2af3b: 0x6cba6620,\n\t0x2af3c: 0x6cba6820, 0x2af3d: 0x6cba6a20, 0x2af3e: 0x6cba6c20, 0x2af3f: 0x6cba6e20,\n\t// Block 0xabd, offset 0x2af40\n\t0x2af40: 0x6cba7020, 0x2af41: 0x6cba7220, 0x2af42: 0x6cba7420, 0x2af43: 0x6cba7620,\n\t0x2af44: 0x6cba7820, 0x2af45: 0x6cba7a20, 0x2af46: 0x6cba7c20, 0x2af47: 0x6cba7e20,\n\t0x2af48: 0x6cba8020, 0x2af49: 0x6cba8220, 0x2af4a: 0x6cba8420, 0x2af4b: 0x6cba8620,\n\t0x2af4c: 0x6cba8820, 0x2af4d: 0x6cba8a20, 0x2af4e: 0x6cba8c20, 0x2af4f: 0x6cba8e20,\n\t0x2af50: 0x6cba9020, 0x2af51: 0x6cba9220, 0x2af52: 0x6ceb4e20, 0x2af53: 0x6ceb5020,\n\t0x2af54: 0x6ceb5220, 0x2af55: 0x6ceb5420, 0x2af56: 0x6ceb5620, 0x2af57: 0x6ceb5820,\n\t0x2af58: 0x6ceb5a20, 0x2af59: 0x6ceb5c20, 0x2af5a: 0x6ceb5e20, 0x2af5b: 0x6ceb6020,\n\t0x2af5c: 0x6ceb6220, 0x2af5d: 0x6ceb6420, 0x2af5e: 0x6ceb6620, 0x2af5f: 0x6ceb6820,\n\t0x2af60: 0x6ceb6a20, 0x2af61: 0x6ceb6c20, 0x2af62: 0x6d1b3420, 0x2af63: 0x6d1b3620,\n\t0x2af64: 0x6d1b3820, 0x2af65: 0x6d1b3a20, 0x2af66: 0x6d1b3c20, 0x2af67: 0x6d1b3e20,\n\t0x2af68: 0x6d1b4020, 0x2af69: 0x6d1b4220, 0x2af6a: 0x6d1b4420, 0x2af6b: 0x6d1b4620,\n\t0x2af6c: 0x6d1b4820, 0x2af6d: 0x6d1b4a20, 0x2af6e: 0x6d1b4c20, 0x2af6f: 0x6d1b4e20,\n\t0x2af70: 0x6d1b5020, 0x2af71: 0x6d494e20, 0x2af72: 0x6d495020, 0x2af73: 0x6d495220,\n\t0x2af74: 0x6d495420, 0x2af75: 0x6d495620, 0x2af76: 0x6d495820, 0x2af77: 0x6d495a20,\n\t0x2af78: 0x6d495c20, 0x2af79: 0x6d495e20, 0x2af7a: 0x6d496020, 0x2af7b: 0x6d770e20,\n\t0x2af7c: 0x6d771020, 0x2af7d: 0x6d771220, 0x2af7e: 0x6d771420, 0x2af7f: 0x6d771620,\n\t// Block 0xabe, offset 0x2af80\n\t0x2af80: 0x6d771820, 0x2af81: 0x6d771a20, 0x2af82: 0x6d771c20, 0x2af83: 0x6d771e20,\n\t0x2af84: 0x6d772020, 0x2af85: 0x6da09a20, 0x2af86: 0x6da09c20, 0x2af87: 0x6da09e20,\n\t0x2af88: 0x6da0a020, 0x2af89: 0x6dc2fa20, 0x2af8a: 0x6dc2fc20, 0x2af8b: 0x6dc2fe20,\n\t0x2af8c: 0x6dc30020, 0x2af8d: 0x6dc30220, 0x2af8e: 0x6dc30420, 0x2af8f: 0x6dc30620,\n\t0x2af90: 0x6de07e20, 0x2af91: 0x6de08020, 0x2af92: 0x6de08220, 0x2af93: 0x6df8cc20,\n\t0x2af94: 0x6df8ce20, 0x2af95: 0x6e0c9220, 0x2af96: 0x6e0c9420, 0x2af97: 0x6e0c9620,\n\t0x2af98: 0x6e1c2e20, 0x2af99: 0x6e287220, 0x2af9a: 0x6e287420, 0x2af9b: 0x6e384620,\n\t0x2af9c: 0x6e3cf820, 0x2af9d: 0x6c078820, 0x2af9e: 0x6c06a220, 0x2af9f: 0x6c0e9620,\n\t0x2afa0: 0x6c2d7e20, 0x2afa1: 0x6c2d8020, 0x2afa2: 0x6c47dc20, 0x2afa3: 0x6c694e20,\n\t0x2afa4: 0x6d1cf020, 0x2afa5: 0x6df92a20, 0x2afa6: 0x6c07a020, 0x2afa7: 0x6c1a9820,\n\t0x2afa8: 0x6c1a9a20, 0x2afa9: 0x6c1a9c20, 0x2afaa: 0x6c1a9e20, 0x2afab: 0x6c1aa020,\n\t0x2afac: 0x6c1aa220, 0x2afad: 0x6c1aa420, 0x2afae: 0x6c1aa620, 0x2afaf: 0x6c1aa820,\n\t0x2afb0: 0x6c1aaa20, 0x2afb1: 0x6c2daa20, 0x2afb2: 0x6c2dac20, 0x2afb3: 0x6c2dae20,\n\t0x2afb4: 0x6c2db020, 0x2afb5: 0x6c2db220, 0x2afb6: 0x6c480020, 0x2afb7: 0x6c480220,\n\t0x2afb8: 0x6c480420, 0x2afb9: 0x6c480620, 0x2afba: 0x6c480820, 0x2afbb: 0x6c480a20,\n\t0x2afbc: 0x6c480c20, 0x2afbd: 0x6c480e20, 0x2afbe: 0x6c481020, 0x2afbf: 0x6c697e20,\n\t// Block 0xabf, offset 0x2afc0\n\t0x2afc0: 0x6c698020, 0x2afc1: 0x6c698220, 0x2afc2: 0x6c698420, 0x2afc3: 0x6c698620,\n\t0x2afc4: 0x6c698820, 0x2afc5: 0x6c698a20, 0x2afc6: 0x6c698c20, 0x2afc7: 0x6c904620,\n\t0x2afc8: 0x6c904820, 0x2afc9: 0x6c904a20, 0x2afca: 0x6c904c20, 0x2afcb: 0x6c904e20,\n\t0x2afcc: 0x6c905020, 0x2afcd: 0x6c905220, 0x2afce: 0x6cbc6420, 0x2afcf: 0x6cbc6620,\n\t0x2afd0: 0x6cbc6820, 0x2afd1: 0x6cbc6a20, 0x2afd2: 0x6cbc6c20, 0x2afd3: 0x6cbc6e20,\n\t0x2afd4: 0x6cbc7020, 0x2afd5: 0x6cbc7220, 0x2afd6: 0x6cbc7420, 0x2afd7: 0x6cbc7620,\n\t0x2afd8: 0x6cbc7820, 0x2afd9: 0x6ced4a20, 0x2afda: 0x6ced4c20, 0x2afdb: 0x6ced4e20,\n\t0x2afdc: 0x6ced5020, 0x2afdd: 0x6ced5220, 0x2afde: 0x6ced5420, 0x2afdf: 0x6ced5620,\n\t0x2afe0: 0x6d1d1620, 0x2afe1: 0x6d1d1820, 0x2afe2: 0x6d1d1a20, 0x2afe3: 0x6d1d1c20,\n\t0x2afe4: 0x6d1d1e20, 0x2afe5: 0x6d1d2020, 0x2afe6: 0x6d1d2220, 0x2afe7: 0x6d4ac820,\n\t0x2afe8: 0x6d4aca20, 0x2afe9: 0x6d4acc20, 0x2afea: 0x6d4ace20, 0x2afeb: 0x6d4ad020,\n\t0x2afec: 0x6d4ad220, 0x2afed: 0x6d4ad420, 0x2afee: 0x6d4ad620, 0x2afef: 0x6d4ad820,\n\t0x2aff0: 0x6d786620, 0x2aff1: 0x6d786820, 0x2aff2: 0x6d786a20, 0x2aff3: 0x6d786c20,\n\t0x2aff4: 0x6d786e20, 0x2aff5: 0x6d787020, 0x2aff6: 0x6d787220, 0x2aff7: 0x6da18820,\n\t0x2aff8: 0x6da18a20, 0x2aff9: 0x6da18c20, 0x2affa: 0x6da18e20, 0x2affb: 0x6dc3e020,\n\t0x2affc: 0x6dc3e220, 0x2affd: 0x6dc3e420, 0x2affe: 0x6de10220, 0x2afff: 0x6de10420,\n\t// Block 0xac0, offset 0x2b000\n\t0x2b000: 0x6df93220, 0x2b001: 0x6e31c220, 0x2b002: 0x6e385e20, 0x2b003: 0x6cbd8620,\n\t0x2b004: 0x6d4ba020, 0x2b005: 0x6c48f020, 0x2b006: 0x6c48f420, 0x2b007: 0x6c48f620,\n\t0x2b008: 0x6c07ce20, 0x2b009: 0x6c2e8c20, 0x2b00a: 0x6cbd9820, 0x2b00b: 0x6d1e0c20,\n\t0x2b00c: 0x6d1e0e20, 0x2b00d: 0x6dc44620, 0x2b00e: 0x6c07dc20, 0x2b00f: 0x6c0f2c20,\n\t0x2b010: 0x6c0f2e20, 0x2b011: 0x6c0f3020, 0x2b012: 0x6c1b8a20, 0x2b013: 0x6c1b8c20,\n\t0x2b014: 0x6c2e9a20, 0x2b015: 0x6c2e9c20, 0x2b016: 0x6c2e9e20, 0x2b017: 0x6c2ea020,\n\t0x2b018: 0x6c2ea220, 0x2b019: 0x6c2ea420, 0x2b01a: 0x6c490220, 0x2b01b: 0x6c490420,\n\t0x2b01c: 0x6c919820, 0x2b01d: 0x6c919a20, 0x2b01e: 0x6c919c20, 0x2b01f: 0x6cbdb620,\n\t0x2b020: 0x6cee7620, 0x2b021: 0x6d791c20, 0x2b022: 0x6c07fc20, 0x2b023: 0x6c0f5620,\n\t0x2b024: 0x6c0f5820, 0x2b025: 0x6c0f5a20, 0x2b026: 0x6c0f5c20, 0x2b027: 0x6c0f5e20,\n\t0x2b028: 0x6c0f6020, 0x2b029: 0x6c1bc420, 0x2b02a: 0x6c1bc620, 0x2b02b: 0x6c1bc820,\n\t0x2b02c: 0x6c1bca20, 0x2b02d: 0x6c1bcc20, 0x2b02e: 0x6c1bce20, 0x2b02f: 0x6c1bd020,\n\t0x2b030: 0x6c2ef420, 0x2b031: 0x6c2ef620, 0x2b032: 0x6c2ef820, 0x2b033: 0x6c2efa20,\n\t0x2b034: 0x6c2efc20, 0x2b035: 0x6c2efe20, 0x2b036: 0x6c2f0020, 0x2b037: 0x6c2f0220,\n\t0x2b038: 0x6c2f0420, 0x2b039: 0x6c2f0620, 0x2b03a: 0x6c2f0820, 0x2b03b: 0x6c2f0a20,\n\t0x2b03c: 0x6c2f0c20, 0x2b03d: 0x6c2f0e20, 0x2b03e: 0x6c2f1020, 0x2b03f: 0x6c2f1220,\n\t// Block 0xac1, offset 0x2b040\n\t0x2b040: 0x6c2f1420, 0x2b041: 0x6c2f1620, 0x2b042: 0x6c493e20, 0x2b043: 0x6c494020,\n\t0x2b044: 0x6c494220, 0x2b045: 0x6c494420, 0x2b046: 0x6c494620, 0x2b047: 0x6c494820,\n\t0x2b048: 0x6c494a20, 0x2b049: 0x6c494c20, 0x2b04a: 0x6c494e20, 0x2b04b: 0x6c495020,\n\t0x2b04c: 0x6c495220, 0x2b04d: 0x6c6aea20, 0x2b04e: 0x6c6aec20, 0x2b04f: 0x6c6aee20,\n\t0x2b050: 0x6c6af020, 0x2b051: 0x6c6af220, 0x2b052: 0x6c6af420, 0x2b053: 0x6c6af620,\n\t0x2b054: 0x6c6af820, 0x2b055: 0x6c6afa20, 0x2b056: 0x6c6afc20, 0x2b057: 0x6c6afe20,\n\t0x2b058: 0x6c6b0020, 0x2b059: 0x6c6b0220, 0x2b05a: 0x6c6b0420, 0x2b05b: 0x6c6b0620,\n\t0x2b05c: 0x6c6b0820, 0x2b05d: 0x6c6b0a20, 0x2b05e: 0x6c6b0c20, 0x2b05f: 0x6c6b0e20,\n\t0x2b060: 0x6c1bd220, 0x2b061: 0x6c6b1020, 0x2b062: 0x6c6b1220, 0x2b063: 0x6c6b1420,\n\t0x2b064: 0x6c6b1620, 0x2b065: 0x6c91da20, 0x2b066: 0x6c91dc20, 0x2b067: 0x6c91de20,\n\t0x2b068: 0x6c91e020, 0x2b069: 0x6c91e220, 0x2b06a: 0x6c91e420, 0x2b06b: 0x6c91e620,\n\t0x2b06c: 0x6c91e820, 0x2b06d: 0x6c91ea20, 0x2b06e: 0x6cbdf220, 0x2b06f: 0x6cbdf420,\n\t0x2b070: 0x6cbdf620, 0x2b071: 0x6cbdf820, 0x2b072: 0x6cbdfa20, 0x2b073: 0x6cbdfc20,\n\t0x2b074: 0x6cbdfe20, 0x2b075: 0x6cbe0020, 0x2b076: 0x6cbe0220, 0x2b077: 0x6cbe0420,\n\t0x2b078: 0x6cbe0620, 0x2b079: 0x6cbe0820, 0x2b07a: 0x6cbe0a20, 0x2b07b: 0x6cbe0c20,\n\t0x2b07c: 0x6cbe0e20, 0x2b07d: 0x6cbe1020, 0x2b07e: 0x6cbe1220, 0x2b07f: 0x6cbe1420,\n\t// Block 0xac2, offset 0x2b080\n\t0x2b080: 0x6cbe1620, 0x2b081: 0x6cbe1820, 0x2b082: 0x6cbe1a20, 0x2b083: 0x6cbe1c20,\n\t0x2b084: 0x6cbe1e20, 0x2b085: 0x6ceea620, 0x2b086: 0x6ceea820, 0x2b087: 0x6ceeaa20,\n\t0x2b088: 0x6ceeac20, 0x2b089: 0x6ceeae20, 0x2b08a: 0x6ceeb020, 0x2b08b: 0x6ceeb220,\n\t0x2b08c: 0x6ceeb420, 0x2b08d: 0x6ceeb620, 0x2b08e: 0x6ceeb820, 0x2b08f: 0x6ceeba20,\n\t0x2b090: 0x6ceebc20, 0x2b091: 0x6ceebe20, 0x2b092: 0x6ceec020, 0x2b093: 0x6ceec220,\n\t0x2b094: 0x6ceec420, 0x2b095: 0x6d1e5220, 0x2b096: 0x6d1e5420, 0x2b097: 0x6d1e5620,\n\t0x2b098: 0x6d1e5820, 0x2b099: 0x6d1e5a20, 0x2b09a: 0x6d1e5c20, 0x2b09b: 0x6d1e5e20,\n\t0x2b09c: 0x6d1e6020, 0x2b09d: 0x6d1e6220, 0x2b09e: 0x6d1e6420, 0x2b09f: 0x6d1e6620,\n\t0x2b0a0: 0x6d1e6820, 0x2b0a1: 0x6d1e6a20, 0x2b0a2: 0x6d1e6c20, 0x2b0a3: 0x6d4bde20,\n\t0x2b0a4: 0x6d4be020, 0x2b0a5: 0x6d4be220, 0x2b0a6: 0x6d4be420, 0x2b0a7: 0x6d4be620,\n\t0x2b0a8: 0x6d4be820, 0x2b0a9: 0x6d793820, 0x2b0aa: 0x6d793a20, 0x2b0ab: 0x6d793c20,\n\t0x2b0ac: 0x6d793e20, 0x2b0ad: 0x6d794020, 0x2b0ae: 0x6da22220, 0x2b0af: 0x6da22420,\n\t0x2b0b0: 0x6dc45420, 0x2b0b1: 0x6dc45620, 0x2b0b2: 0x6de15a20, 0x2b0b3: 0x6de15c20,\n\t0x2b0b4: 0x6de15e20, 0x2b0b5: 0x6de16020, 0x2b0b6: 0x6df95c20, 0x2b0b7: 0x6df95e20,\n\t0x2b0b8: 0x6df96020, 0x2b0b9: 0x6e0d2820, 0x2b0ba: 0x6e1c9820, 0x2b0bb: 0x6e3d1620,\n\t0x2b0bc: 0x6e3d1820, 0x2b0bd: 0x6c0fa620, 0x2b0be: 0x6c1c6220, 0x2b0bf: 0x6c1c6420,\n\t// Block 0xac3, offset 0x2b0c0\n\t0x2b0c0: 0x6c2fc820, 0x2b0c1: 0x6c4a1c20, 0x2b0c2: 0x6c6bdc20, 0x2b0c3: 0x6c6bde20,\n\t0x2b0c4: 0x6cbf4220, 0x2b0c5: 0x6cef7820, 0x2b0c6: 0x6d4cb620, 0x2b0c7: 0x6d79e020,\n\t0x2b0c8: 0x6e386820, 0x2b0c9: 0x6c03f620, 0x2b0ca: 0x6c081e20, 0x2b0cb: 0x6c082020,\n\t0x2b0cc: 0x6c0fb820, 0x2b0cd: 0x6c0fba20, 0x2b0ce: 0x6c1c8620, 0x2b0cf: 0x6c1c8820,\n\t0x2b0d0: 0x6c1c8a20, 0x2b0d1: 0x6c1c8c20, 0x2b0d2: 0x6c2ffa20, 0x2b0d3: 0x6c4a4020,\n\t0x2b0d4: 0x6c4a4220, 0x2b0d5: 0x6c4a4420, 0x2b0d6: 0x6c4a4620, 0x2b0d7: 0x6c6bf620,\n\t0x2b0d8: 0x6c6bf820, 0x2b0d9: 0x6c6bfa20, 0x2b0da: 0x6c6bfc20, 0x2b0db: 0x6c932220,\n\t0x2b0dc: 0x6c932420, 0x2b0dd: 0x6c932620, 0x2b0de: 0x6c932820, 0x2b0df: 0x6c932a20,\n\t0x2b0e0: 0x6c932c20, 0x2b0e1: 0x6c932e20, 0x2b0e2: 0x6cbf6420, 0x2b0e3: 0x6cbf6620,\n\t0x2b0e4: 0x6cef9a20, 0x2b0e5: 0x6cef9c20, 0x2b0e6: 0x6cef9e20, 0x2b0e7: 0x6cefa020,\n\t0x2b0e8: 0x6cefa220, 0x2b0e9: 0x6d1f3c20, 0x2b0ea: 0x6d1f3e20, 0x2b0eb: 0x6d1f4020,\n\t0x2b0ec: 0x6d1f4220, 0x2b0ed: 0x6d4cc820, 0x2b0ee: 0x6d4cca20, 0x2b0ef: 0x6d4ccc20,\n\t0x2b0f0: 0x6dc49420, 0x2b0f1: 0x6e0d4620, 0x2b0f2: 0x6e3d1a20, 0x2b0f3: 0x6c083020,\n\t0x2b0f4: 0x6c1cbc20, 0x2b0f5: 0x6c304420, 0x2b0f6: 0x6c6c7220, 0x2b0f7: 0x6cbfd420,\n\t0x2b0f8: 0x6c6c7c20, 0x2b0f9: 0x6cbfea20, 0x2b0fa: 0x6d1fba20, 0x2b0fb: 0x6d4d3820,\n\t0x2b0fc: 0x6c0ffa20, 0x2b0fd: 0x6c1cd620, 0x2b0fe: 0x6c306a20, 0x2b0ff: 0x6c306c20,\n\t// Block 0xac4, offset 0x2b100\n\t0x2b100: 0x6c4aba20, 0x2b101: 0x6c4abc20, 0x2b102: 0x6c6c9420, 0x2b103: 0x6c93b820,\n\t0x2b104: 0x6c93ba20, 0x2b105: 0x6c93bc20, 0x2b106: 0x6c93be20, 0x2b107: 0x6cc00220,\n\t0x2b108: 0x6cc00420, 0x2b109: 0x6cf01220, 0x2b10a: 0x6cf01420, 0x2b10b: 0x6c085020,\n\t0x2b10c: 0x6c100a20, 0x2b10d: 0x6c100c20, 0x2b10e: 0x6c1cf820, 0x2b10f: 0x6c308020,\n\t0x2b110: 0x6c308220, 0x2b111: 0x6c308420, 0x2b112: 0x6c4acc20, 0x2b113: 0x6c4ace20,\n\t0x2b114: 0x6c4ad020, 0x2b115: 0x6c4ad220, 0x2b116: 0x6c4ad420, 0x2b117: 0x6c6cac20,\n\t0x2b118: 0x6c93cc20, 0x2b119: 0x6c93ce20, 0x2b11a: 0x6cc02020, 0x2b11b: 0x6cc02220,\n\t0x2b11c: 0x6d1fda20, 0x2b11d: 0x6d1fdc20, 0x2b11e: 0x6d1fde20, 0x2b11f: 0x6d4d5e20,\n\t0x2b120: 0x6d4d6020, 0x2b121: 0x6de1be20, 0x2b122: 0x6c040c20, 0x2b123: 0x6c1d1e20,\n\t0x2b124: 0x6c086420, 0x2b125: 0x6c086620, 0x2b126: 0x6c086820, 0x2b127: 0x6c086a20,\n\t0x2b128: 0x6c103620, 0x2b129: 0x6c103820, 0x2b12a: 0x6c103a20, 0x2b12b: 0x6c103c20,\n\t0x2b12c: 0x6c103e20, 0x2b12d: 0x6c104020, 0x2b12e: 0x6c104220, 0x2b12f: 0x6c104420,\n\t0x2b130: 0x6c1d2c20, 0x2b131: 0x6c1d2e20, 0x2b132: 0x6c1d3020, 0x2b133: 0x6c1d3220,\n\t0x2b134: 0x6c1d3420, 0x2b135: 0x6c1d3620, 0x2b136: 0x6c1d3820, 0x2b137: 0x6c1d2020,\n\t0x2b138: 0x6c1d3a20, 0x2b139: 0x6c30b820, 0x2b13a: 0x6c30ba20, 0x2b13b: 0x6c30bc20,\n\t0x2b13c: 0x6c30be20, 0x2b13d: 0x6c30c020, 0x2b13e: 0x6c30c220, 0x2b13f: 0x6c30c420,\n\t// Block 0xac5, offset 0x2b140\n\t0x2b140: 0x6c30c620, 0x2b141: 0x6c30c820, 0x2b142: 0x6c30ca20, 0x2b143: 0x6c30cc20,\n\t0x2b144: 0x6c4b2020, 0x2b145: 0x6c4b2220, 0x2b146: 0x6c4b2420, 0x2b147: 0x6c6d0020,\n\t0x2b148: 0x6c6d0220, 0x2b149: 0x6c6d0420, 0x2b14a: 0x6c6d0620, 0x2b14b: 0x6c6d0820,\n\t0x2b14c: 0x6c6d0a20, 0x2b14d: 0x6c6d0c20, 0x2b14e: 0x6c6d0e20, 0x2b14f: 0x6c6d1020,\n\t0x2b150: 0x6c6d1220, 0x2b151: 0x6c6d1420, 0x2b152: 0x6c6d1620, 0x2b153: 0x6c6d1820,\n\t0x2b154: 0x6c6d1a20, 0x2b155: 0x6c6d1c20, 0x2b156: 0x6c6d1e20, 0x2b157: 0x6c941620,\n\t0x2b158: 0x6c941820, 0x2b159: 0x6c941a20, 0x2b15a: 0x6c941c20, 0x2b15b: 0x6c941e20,\n\t0x2b15c: 0x6c942020, 0x2b15d: 0x6c942220, 0x2b15e: 0x6c942420, 0x2b15f: 0x6c942620,\n\t0x2b160: 0x6c942820, 0x2b161: 0x6c942a20, 0x2b162: 0x6c942c20, 0x2b163: 0x6c942e20,\n\t0x2b164: 0x6c943020, 0x2b165: 0x6c943220, 0x2b166: 0x6cc07020, 0x2b167: 0x6cc07220,\n\t0x2b168: 0x6cc07420, 0x2b169: 0x6cc07620, 0x2b16a: 0x6cc07820, 0x2b16b: 0x6cc07a20,\n\t0x2b16c: 0x6cc07c20, 0x2b16d: 0x6cc07e20, 0x2b16e: 0x6cc08020, 0x2b16f: 0x6cc08220,\n\t0x2b170: 0x6cf06820, 0x2b171: 0x6cf06a20, 0x2b172: 0x6cf06c20, 0x2b173: 0x6cf06e20,\n\t0x2b174: 0x6cf07020, 0x2b175: 0x6cf07220, 0x2b176: 0x6cf07420, 0x2b177: 0x6cf07620,\n\t0x2b178: 0x6cf07820, 0x2b179: 0x6d200020, 0x2b17a: 0x6d200220, 0x2b17b: 0x6d200420,\n\t0x2b17c: 0x6d200620, 0x2b17d: 0x6d200820, 0x2b17e: 0x6d200a20, 0x2b17f: 0x6d200c20,\n\t// Block 0xac6, offset 0x2b180\n\t0x2b180: 0x6d200e20, 0x2b181: 0x6d201020, 0x2b182: 0x6d201220, 0x2b183: 0x6d201420,\n\t0x2b184: 0x6d201620, 0x2b185: 0x6d4d9420, 0x2b186: 0x6d4d9620, 0x2b187: 0x6d4d9820,\n\t0x2b188: 0x6d4d9a20, 0x2b189: 0x6d4d9c20, 0x2b18a: 0x6d4d9e20, 0x2b18b: 0x6d4da020,\n\t0x2b18c: 0x6d4da220, 0x2b18d: 0x6d4da420, 0x2b18e: 0x6d4da620, 0x2b18f: 0x6d4da820,\n\t0x2b190: 0x6d4daa20, 0x2b191: 0x6d7a6020, 0x2b192: 0x6d7a6220, 0x2b193: 0x6d7a6420,\n\t0x2b194: 0x6d7a6620, 0x2b195: 0x6d7a6820, 0x2b196: 0x6d7a6a20, 0x2b197: 0x6d7a6c20,\n\t0x2b198: 0x6da2e220, 0x2b199: 0x6da2e420, 0x2b19a: 0x6da2e620, 0x2b19b: 0x6da2e820,\n\t0x2b19c: 0x6da2ea20, 0x2b19d: 0x6dc4d020, 0x2b19e: 0x6dc4d220, 0x2b19f: 0x6dc4d420,\n\t0x2b1a0: 0x6de1d020, 0x2b1a1: 0x6de1d220, 0x2b1a2: 0x6de1d420, 0x2b1a3: 0x6de1d620,\n\t0x2b1a4: 0x6df9b020, 0x2b1a5: 0x6e0d7020, 0x2b1a6: 0x6e0d7220, 0x2b1a7: 0x6e1cd620,\n\t0x2b1a8: 0x6e429020, 0x2b1a9: 0x6c109220, 0x2b1aa: 0x6c041c20, 0x2b1ab: 0x6c6de820,\n\t0x2b1ac: 0x6c6dea20, 0x2b1ad: 0x6cc16e20, 0x2b1ae: 0x6d4e4c20, 0x2b1af: 0x6c08a020,\n\t0x2b1b0: 0x6c318820, 0x2b1b1: 0x6c955820, 0x2b1b2: 0x6c08a620, 0x2b1b3: 0x6c08a820,\n\t0x2b1b4: 0x6c10ae20, 0x2b1b5: 0x6c10b020, 0x2b1b6: 0x6c10b220, 0x2b1b7: 0x6c1dea20,\n\t0x2b1b8: 0x6c1dec20, 0x2b1b9: 0x6c1dee20, 0x2b1ba: 0x6c1df020, 0x2b1bb: 0x6c1df220,\n\t0x2b1bc: 0x6c1df420, 0x2b1bd: 0x6c319220, 0x2b1be: 0x6c319420, 0x2b1bf: 0x6c319620,\n\t// Block 0xac7, offset 0x2b1c0\n\t0x2b1c0: 0x6c319820, 0x2b1c1: 0x6c4bf020, 0x2b1c2: 0x6c4bf220, 0x2b1c3: 0x6c4bf420,\n\t0x2b1c4: 0x6c4bf620, 0x2b1c5: 0x6c4bf820, 0x2b1c6: 0x6c4bfa20, 0x2b1c7: 0x6c6dfc20,\n\t0x2b1c8: 0x6c6dfe20, 0x2b1c9: 0x6c956420, 0x2b1ca: 0x6c956620, 0x2b1cb: 0x6c956820,\n\t0x2b1cc: 0x6c956a20, 0x2b1cd: 0x6c956c20, 0x2b1ce: 0x6c956e20, 0x2b1cf: 0x6cc18820,\n\t0x2b1d0: 0x6cc18a20, 0x2b1d1: 0x6cc18c20, 0x2b1d2: 0x6cc18e20, 0x2b1d3: 0x6cc19020,\n\t0x2b1d4: 0x6cc19220, 0x2b1d5: 0x6cc19420, 0x2b1d6: 0x6cc19620, 0x2b1d7: 0x6cf11a20,\n\t0x2b1d8: 0x6cf11c20, 0x2b1d9: 0x6cf11e20, 0x2b1da: 0x6cf12020, 0x2b1db: 0x6cf12220,\n\t0x2b1dc: 0x6d20c020, 0x2b1dd: 0x6d20c220, 0x2b1de: 0x6d20c420, 0x2b1df: 0x6d20c620,\n\t0x2b1e0: 0x6d4e5a20, 0x2b1e1: 0x6d4e5c20, 0x2b1e2: 0x6d7ae820, 0x2b1e3: 0x6d7aea20,\n\t0x2b1e4: 0x6d7aec20, 0x2b1e5: 0x6da35c20, 0x2b1e6: 0x6da35e20, 0x2b1e7: 0x6df9dc20,\n\t0x2b1e8: 0x6df9de20, 0x2b1e9: 0x6e1d0420, 0x2b1ea: 0x6e1d0620, 0x2b1eb: 0x6cc1fc20,\n\t0x2b1ec: 0x6cc1fe20, 0x2b1ed: 0x6d210c20, 0x2b1ee: 0x6d7b2420, 0x2b1ef: 0x6c10e420,\n\t0x2b1f0: 0x6c10e620, 0x2b1f1: 0x6c10e820, 0x2b1f2: 0x6c1e4220, 0x2b1f3: 0x6c1e4420,\n\t0x2b1f4: 0x6c31f220, 0x2b1f5: 0x6c31f420, 0x2b1f6: 0x6c31f620, 0x2b1f7: 0x6c31f820,\n\t0x2b1f8: 0x6c31fa20, 0x2b1f9: 0x6c31fc20, 0x2b1fa: 0x6c31fe20, 0x2b1fb: 0x6c320020,\n\t0x2b1fc: 0x6c4c6820, 0x2b1fd: 0x6c4c6a20, 0x2b1fe: 0x6c4c6c20, 0x2b1ff: 0x6c4c6e20,\n\t// Block 0xac8, offset 0x2b200\n\t0x2b200: 0x6c4c7020, 0x2b201: 0x6c4c7220, 0x2b202: 0x6c4c7420, 0x2b203: 0x6c6e6020,\n\t0x2b204: 0x6c6e6220, 0x2b205: 0x6c6e6420, 0x2b206: 0x6c6e6620, 0x2b207: 0x6c6e6820,\n\t0x2b208: 0x6c95d820, 0x2b209: 0x6c95da20, 0x2b20a: 0x6c95dc20, 0x2b20b: 0x6c95de20,\n\t0x2b20c: 0x6c95e020, 0x2b20d: 0x6cc20420, 0x2b20e: 0x6cc20620, 0x2b20f: 0x6cc20820,\n\t0x2b210: 0x6cc20a20, 0x2b211: 0x6cf16a20, 0x2b212: 0x6d211620, 0x2b213: 0x6d211820,\n\t0x2b214: 0x6d211a20, 0x2b215: 0x6d211c20, 0x2b216: 0x6d4eb620, 0x2b217: 0x6d4eb820,\n\t0x2b218: 0x6d4eba20, 0x2b219: 0x6d7b2620, 0x2b21a: 0x6d7b2820, 0x2b21b: 0x6d7b2a20,\n\t0x2b21c: 0x6d7b2c20, 0x2b21d: 0x6de23020, 0x2b21e: 0x6df9ec20, 0x2b21f: 0x6c110820,\n\t0x2b220: 0x6c324420, 0x2b221: 0x6d217420, 0x2b222: 0x6d4f0020, 0x2b223: 0x6d7b5c20,\n\t0x2b224: 0x6c1ea620, 0x2b225: 0x6c4ce020, 0x2b226: 0x6cf1b820, 0x2b227: 0x6c044820,\n\t0x2b228: 0x6c112020, 0x2b229: 0x6c112220, 0x2b22a: 0x6c112420, 0x2b22b: 0x6c112620,\n\t0x2b22c: 0x6c1eb220, 0x2b22d: 0x6c1eb420, 0x2b22e: 0x6c326020, 0x2b22f: 0x6c326220,\n\t0x2b230: 0x6c326420, 0x2b231: 0x6c326620, 0x2b232: 0x6c4cec20, 0x2b233: 0x6c4cee20,\n\t0x2b234: 0x6c4cf020, 0x2b235: 0x6c4cf220, 0x2b236: 0x6c4cf420, 0x2b237: 0x6c4cf620,\n\t0x2b238: 0x6c6ed820, 0x2b239: 0x6c6eda20, 0x2b23a: 0x6c966820, 0x2b23b: 0x6c966a20,\n\t0x2b23c: 0x6c966c20, 0x2b23d: 0x6cc27e20, 0x2b23e: 0x6cc28020, 0x2b23f: 0x6cc28220,\n\t// Block 0xac9, offset 0x2b240\n\t0x2b240: 0x6cf1c220, 0x2b241: 0x6cf1c420, 0x2b242: 0x6cf1c620, 0x2b243: 0x6d218420,\n\t0x2b244: 0x6d4f0820, 0x2b245: 0x6d4f0a20, 0x2b246: 0x6e0dac20, 0x2b247: 0x6c329a20,\n\t0x2b248: 0x6d7b7820, 0x2b249: 0x6c115620, 0x2b24a: 0x6c1ede20, 0x2b24b: 0x6c32a420,\n\t0x2b24c: 0x6c32a620, 0x2b24d: 0x6c32a820, 0x2b24e: 0x6c96aa20, 0x2b24f: 0x6cc2ae20,\n\t0x2b250: 0x6cc2b020, 0x2b251: 0x6d21b220, 0x2b252: 0x6d4f2620, 0x2b253: 0x6d7b8220,\n\t0x2b254: 0x6c090020, 0x2b255: 0x6c116020, 0x2b256: 0x6c1eea20, 0x2b257: 0x6c1eec20,\n\t0x2b258: 0x6c32b420, 0x2b259: 0x6c32b620, 0x2b25a: 0x6c4d3c20, 0x2b25b: 0x6c4d3e20,\n\t0x2b25c: 0x6c4d4020, 0x2b25d: 0x6c4d4220, 0x2b25e: 0x6c4d4420, 0x2b25f: 0x6c4d4620,\n\t0x2b260: 0x6c4d4820, 0x2b261: 0x6c4d4a20, 0x2b262: 0x6c6f1220, 0x2b263: 0x6c6f1420,\n\t0x2b264: 0x6c96c620, 0x2b265: 0x6c96c820, 0x2b266: 0x6c96ca20, 0x2b267: 0x6c96cc20,\n\t0x2b268: 0x6c96ce20, 0x2b269: 0x6c96d020, 0x2b26a: 0x6cc2c020, 0x2b26b: 0x6cc2c220,\n\t0x2b26c: 0x6cc2c420, 0x2b26d: 0x6cc2c620, 0x2b26e: 0x6cc2c820, 0x2b26f: 0x6cf1f620,\n\t0x2b270: 0x6d21bc20, 0x2b271: 0x6d21be20, 0x2b272: 0x6d21c020, 0x2b273: 0x6d4f3620,\n\t0x2b274: 0x6d4f3820, 0x2b275: 0x6d7b8c20, 0x2b276: 0x6d7b8e20, 0x2b277: 0x6da3c020,\n\t0x2b278: 0x6de27220, 0x2b279: 0x6dfa1a20, 0x2b27a: 0x6c090620, 0x2b27b: 0x6c116e20,\n\t0x2b27c: 0x6c117220, 0x2b27d: 0x6c1f1c20, 0x2b27e: 0x6c117420, 0x2b27f: 0x6c117620,\n\t// Block 0xaca, offset 0x2b280\n\t0x2b280: 0x6c1f1e20, 0x2b281: 0x6c32e020, 0x2b282: 0x6c32e220, 0x2b283: 0x6c1f3220,\n\t0x2b284: 0x6c1f3420, 0x2b285: 0x6c32e420, 0x2b286: 0x6c1f3620, 0x2b287: 0x6c1f3820,\n\t0x2b288: 0x6c1f3a20, 0x2b289: 0x6c1f3c20, 0x2b28a: 0x6c1f3e20, 0x2b28b: 0x6c1f4020,\n\t0x2b28c: 0x6c32fc20, 0x2b28d: 0x6c4d7c20, 0x2b28e: 0x6c4d7e20, 0x2b28f: 0x6c32fe20,\n\t0x2b290: 0x6c330020, 0x2b291: 0x6c330220, 0x2b292: 0x6c330420, 0x2b293: 0x6c330620,\n\t0x2b294: 0x6c330820, 0x2b295: 0x6c330a20, 0x2b296: 0x6c330c20, 0x2b297: 0x6c4d8020,\n\t0x2b298: 0x6c330e20, 0x2b299: 0x6c4d8220, 0x2b29a: 0x6c4da220, 0x2b29b: 0x6c4da420,\n\t0x2b29c: 0x6c4da620, 0x2b29d: 0x6c4da820, 0x2b29e: 0x6c4daa20, 0x2b29f: 0x6c6f5620,\n\t0x2b2a0: 0x6c6f5820, 0x2b2a1: 0x6c4dac20, 0x2b2a2: 0x6c4dae20, 0x2b2a3: 0x6c6f5a20,\n\t0x2b2a4: 0x6c4db020, 0x2b2a5: 0x6c4db220, 0x2b2a6: 0x6c4db420, 0x2b2a7: 0x6c4db620,\n\t0x2b2a8: 0x6c4db820, 0x2b2a9: 0x6c6f5c20, 0x2b2aa: 0x6c6f5e20, 0x2b2ab: 0x6c6f6020,\n\t0x2b2ac: 0x6c4dba20, 0x2b2ad: 0x6c4dbc20, 0x2b2ae: 0x6c972e20, 0x2b2af: 0x6c6f8a20,\n\t0x2b2b0: 0x6c973020, 0x2b2b1: 0x6c6f8c20, 0x2b2b2: 0x6c973220, 0x2b2b3: 0x6c6f8e20,\n\t0x2b2b4: 0x6c6f9020, 0x2b2b5: 0x6c973420, 0x2b2b6: 0x6c6f9220, 0x2b2b7: 0x6c6f9420,\n\t0x2b2b8: 0x6c6f9620, 0x2b2b9: 0x6c6f9820, 0x2b2ba: 0x6c4dbe20, 0x2b2bb: 0x6c973620,\n\t0x2b2bc: 0x6c6f9a20, 0x2b2bd: 0x6c6f9c20, 0x2b2be: 0x6c975620, 0x2b2bf: 0x6c975820,\n\t// Block 0xacb, offset 0x2b2c0\n\t0x2b2c0: 0x6c975a20, 0x2b2c1: 0x6cc30420, 0x2b2c2: 0x6c975c20, 0x2b2c3: 0x6c975e20,\n\t0x2b2c4: 0x6c976020, 0x2b2c5: 0x6c976220, 0x2b2c6: 0x6c976420, 0x2b2c7: 0x6c976620,\n\t0x2b2c8: 0x6cc30620, 0x2b2c9: 0x6c976820, 0x2b2ca: 0x6c976a20, 0x2b2cb: 0x6cc30820,\n\t0x2b2cc: 0x6c976c20, 0x2b2cd: 0x6c976e20, 0x2b2ce: 0x6cc30a20, 0x2b2cf: 0x6c977020,\n\t0x2b2d0: 0x6cc30c20, 0x2b2d1: 0x6cc30e20, 0x2b2d2: 0x6c977220, 0x2b2d3: 0x6c977420,\n\t0x2b2d4: 0x6c977620, 0x2b2d5: 0x6cc31020, 0x2b2d6: 0x6cc31220, 0x2b2d7: 0x6c977820,\n\t0x2b2d8: 0x6c977a20, 0x2b2d9: 0x6c977c20, 0x2b2da: 0x6cc33c20, 0x2b2db: 0x6cc33e20,\n\t0x2b2dc: 0x6cc34020, 0x2b2dd: 0x6cc34220, 0x2b2de: 0x6cc34420, 0x2b2df: 0x6cc34620,\n\t0x2b2e0: 0x6cc34820, 0x2b2e1: 0x6cc34a20, 0x2b2e2: 0x6cc34c20, 0x2b2e3: 0x6cf24220,\n\t0x2b2e4: 0x6cf24420, 0x2b2e5: 0x6cc34e20, 0x2b2e6: 0x6cf24620, 0x2b2e7: 0x6cc35020,\n\t0x2b2e8: 0x6cf24820, 0x2b2e9: 0x6cc35220, 0x2b2ea: 0x6cc35420, 0x2b2eb: 0x6cc35620,\n\t0x2b2ec: 0x6cf26620, 0x2b2ed: 0x6cf26820, 0x2b2ee: 0x6cf26a20, 0x2b2ef: 0x6d220420,\n\t0x2b2f0: 0x6cf26c20, 0x2b2f1: 0x6cf26e20, 0x2b2f2: 0x6d220620, 0x2b2f3: 0x6cf27020,\n\t0x2b2f4: 0x6cf27220, 0x2b2f5: 0x6cf27420, 0x2b2f6: 0x6d220820, 0x2b2f7: 0x6d220a20,\n\t0x2b2f8: 0x6d220c20, 0x2b2f9: 0x6d220e20, 0x2b2fa: 0x6cf27620, 0x2b2fb: 0x6d221020,\n\t0x2b2fc: 0x6d222a20, 0x2b2fd: 0x6d222c20, 0x2b2fe: 0x6d222e20, 0x2b2ff: 0x6d4f6420,\n\t// Block 0xacc, offset 0x2b300\n\t0x2b300: 0x6d223020, 0x2b301: 0x6d4f6620, 0x2b302: 0x6d4f6820, 0x2b303: 0x6d223220,\n\t0x2b304: 0x6d4f6a20, 0x2b305: 0x6d223420, 0x2b306: 0x6d223620, 0x2b307: 0x6d223820,\n\t0x2b308: 0x6d223a20, 0x2b309: 0x6d4f9820, 0x2b30a: 0x6d4f9a20, 0x2b30b: 0x6d4f9c20,\n\t0x2b30c: 0x6d7bb220, 0x2b30d: 0x6d4f9e20, 0x2b30e: 0x6d4fa020, 0x2b30f: 0x6d4fa220,\n\t0x2b310: 0x6d4fa420, 0x2b311: 0x6d4fa620, 0x2b312: 0x6d4fa820, 0x2b313: 0x6d4faa20,\n\t0x2b314: 0x6d7bb420, 0x2b315: 0x6d4fac20, 0x2b316: 0x6d4fae20, 0x2b317: 0x6d7bce20,\n\t0x2b318: 0x6da3d420, 0x2b319: 0x6d7bd020, 0x2b31a: 0x6dc57420, 0x2b31b: 0x6dc57620,\n\t0x2b31c: 0x6da3e620, 0x2b31d: 0x6dc57820, 0x2b31e: 0x6dc57a20, 0x2b31f: 0x6dc57c20,\n\t0x2b320: 0x6da3e820, 0x2b321: 0x6dc58820, 0x2b322: 0x6dc58a20, 0x2b323: 0x6dfa2a20,\n\t0x2b324: 0x6dfa2c20, 0x2b325: 0x6de28420, 0x2b326: 0x6de28620, 0x2b327: 0x6de28820,\n\t0x2b328: 0x6dfa3020, 0x2b329: 0x6dfa3220, 0x2b32a: 0x6dfa3420, 0x2b32b: 0x6e1d3420,\n\t0x2b32c: 0x6e1d3620, 0x2b32d: 0x6e403c20, 0x2b32e: 0x6c1ffc20, 0x2b32f: 0x6c1ffe20,\n\t0x2b330: 0x6c33dc20, 0x2b331: 0x6c33de20, 0x2b332: 0x6c33e020, 0x2b333: 0x6c4e9e20,\n\t0x2b334: 0x6c709620, 0x2b335: 0x6c709820, 0x2b336: 0x6c709a20, 0x2b337: 0x6c98b620,\n\t0x2b338: 0x6cc48e20, 0x2b339: 0x6cf37620, 0x2b33a: 0x6d233220, 0x2b33b: 0x6d50be20,\n\t0x2b33c: 0x6d50c020, 0x2b33d: 0x6da46820, 0x2b33e: 0x6c201620, 0x2b33f: 0x6c340220,\n\t// Block 0xacd, offset 0x2b340\n\t0x2b340: 0x6c340420, 0x2b341: 0x6c4ec820, 0x2b342: 0x6c4eca20, 0x2b343: 0x6c093220,\n\t0x2b344: 0x6c093420, 0x2b345: 0x6c093620, 0x2b346: 0x6c11d620, 0x2b347: 0x6c11d820,\n\t0x2b348: 0x6c11da20, 0x2b349: 0x6c202820, 0x2b34a: 0x6c202a20, 0x2b34b: 0x6c202c20,\n\t0x2b34c: 0x6c202e20, 0x2b34d: 0x6c203020, 0x2b34e: 0x6c203220, 0x2b34f: 0x6c203420,\n\t0x2b350: 0x6c203620, 0x2b351: 0x6c203820, 0x2b352: 0x6c341e20, 0x2b353: 0x6c342020,\n\t0x2b354: 0x6c342220, 0x2b355: 0x6c342420, 0x2b356: 0x6c342620, 0x2b357: 0x6c342820,\n\t0x2b358: 0x6c4ef220, 0x2b359: 0x6c342a20, 0x2b35a: 0x6c342c20, 0x2b35b: 0x6c342e20,\n\t0x2b35c: 0x6c343020, 0x2b35d: 0x6c343220, 0x2b35e: 0x6c343420, 0x2b35f: 0x6c343620,\n\t0x2b360: 0x6c343820, 0x2b361: 0x6c4ef820, 0x2b362: 0x6c4efa20, 0x2b363: 0x6c4efc20,\n\t0x2b364: 0x6c4efe20, 0x2b365: 0x6c4f0020, 0x2b366: 0x6c4f0220, 0x2b367: 0x6c4f0420,\n\t0x2b368: 0x6c4f0620, 0x2b369: 0x6c4f0820, 0x2b36a: 0x6c4f0a20, 0x2b36b: 0x6c4f0c20,\n\t0x2b36c: 0x6c70ca20, 0x2b36d: 0x6c70cc20, 0x2b36e: 0x6c4f0e20, 0x2b36f: 0x6c4f1020,\n\t0x2b370: 0x6c4f1220, 0x2b371: 0x6c70ce20, 0x2b372: 0x6c70e020, 0x2b373: 0x6c98e220,\n\t0x2b374: 0x6c70e220, 0x2b375: 0x6c70e420, 0x2b376: 0x6c70e620, 0x2b377: 0x6c70e820,\n\t0x2b378: 0x6c70ea20, 0x2b379: 0x6c98e820, 0x2b37a: 0x6c98ea20, 0x2b37b: 0x6c98ec20,\n\t0x2b37c: 0x6c98ee20, 0x2b37d: 0x6c98f020, 0x2b37e: 0x6c98f220, 0x2b37f: 0x6c98f420,\n\t// Block 0xace, offset 0x2b380\n\t0x2b380: 0x6c98f620, 0x2b381: 0x6c98f820, 0x2b382: 0x6c98fa20, 0x2b383: 0x6c98fc20,\n\t0x2b384: 0x6c98fe20, 0x2b385: 0x6c990020, 0x2b386: 0x6c990220, 0x2b387: 0x6cc4bc20,\n\t0x2b388: 0x6c990420, 0x2b389: 0x6cc4c820, 0x2b38a: 0x6cc4ca20, 0x2b38b: 0x6cc4cc20,\n\t0x2b38c: 0x6cf3a820, 0x2b38d: 0x6cf3aa20, 0x2b38e: 0x6cc4ce20, 0x2b38f: 0x6cc4d020,\n\t0x2b390: 0x6cc4d220, 0x2b391: 0x6cc4d420, 0x2b392: 0x6cc4d620, 0x2b393: 0x6cc4d820,\n\t0x2b394: 0x6cc4da20, 0x2b395: 0x6cc4dc20, 0x2b396: 0x6cc66c20, 0x2b397: 0x6cc4de20,\n\t0x2b398: 0x6cc4e020, 0x2b399: 0x6cf3b220, 0x2b39a: 0x6cf3b420, 0x2b39b: 0x6cf3b620,\n\t0x2b39c: 0x6cf3b820, 0x2b39d: 0x6cf3ba20, 0x2b39e: 0x6cf3bc20, 0x2b39f: 0x6cf3be20,\n\t0x2b3a0: 0x6cf3c020, 0x2b3a1: 0x6cf3c220, 0x2b3a2: 0x6cf3c420, 0x2b3a3: 0x6cf3c620,\n\t0x2b3a4: 0x6cf3c820, 0x2b3a5: 0x6cf3ca20, 0x2b3a6: 0x6cf3cc20, 0x2b3a7: 0x6cf3ce20,\n\t0x2b3a8: 0x6cf3d020, 0x2b3a9: 0x6cf3d220, 0x2b3aa: 0x6cf3d420, 0x2b3ab: 0x6cf3d620,\n\t0x2b3ac: 0x6cf3d820, 0x2b3ad: 0x6d237220, 0x2b3ae: 0x6d237420, 0x2b3af: 0x6d237620,\n\t0x2b3b0: 0x6d237820, 0x2b3b1: 0x6d237a20, 0x2b3b2: 0x6d237c20, 0x2b3b3: 0x6d237e20,\n\t0x2b3b4: 0x6d238020, 0x2b3b5: 0x6d238220, 0x2b3b6: 0x6d238420, 0x2b3b7: 0x6d238620,\n\t0x2b3b8: 0x6d238820, 0x2b3b9: 0x6d238a20, 0x2b3ba: 0x6d238c20, 0x2b3bb: 0x6d50fc20,\n\t0x2b3bc: 0x6d50fe20, 0x2b3bd: 0x6d238e20, 0x2b3be: 0x6d239020, 0x2b3bf: 0x6d239220,\n\t// Block 0xacf, offset 0x2b3c0\n\t0x2b3c0: 0x6d239420, 0x2b3c1: 0x6d239620, 0x2b3c2: 0x6d239820, 0x2b3c3: 0x6d511020,\n\t0x2b3c4: 0x6d511220, 0x2b3c5: 0x6d511420, 0x2b3c6: 0x6d511620, 0x2b3c7: 0x6d511820,\n\t0x2b3c8: 0x6d511a20, 0x2b3c9: 0x6d511c20, 0x2b3ca: 0x6d511e20, 0x2b3cb: 0x6d512020,\n\t0x2b3cc: 0x6d512220, 0x2b3cd: 0x6d512420, 0x2b3ce: 0x6d512620, 0x2b3cf: 0x6d512820,\n\t0x2b3d0: 0x6d512a20, 0x2b3d1: 0x6d512c20, 0x2b3d2: 0x6d7cb420, 0x2b3d3: 0x6da47a20,\n\t0x2b3d4: 0x6d7cb620, 0x2b3d5: 0x6d7cb820, 0x2b3d6: 0x6d7cba20, 0x2b3d7: 0x6d7cbc20,\n\t0x2b3d8: 0x6d7cbe20, 0x2b3d9: 0x6d7cc020, 0x2b3da: 0x6da48220, 0x2b3db: 0x6da48420,\n\t0x2b3dc: 0x6da48620, 0x2b3dd: 0x6da48820, 0x2b3de: 0x6da48a20, 0x2b3df: 0x6da48c20,\n\t0x2b3e0: 0x6dc60e20, 0x2b3e1: 0x6dc61020, 0x2b3e2: 0x6dc61220, 0x2b3e3: 0x6dc61420,\n\t0x2b3e4: 0x6dc61620, 0x2b3e5: 0x6dc61820, 0x2b3e6: 0x6dc61a20, 0x2b3e7: 0x6dc61c20,\n\t0x2b3e8: 0x6dc61e20, 0x2b3e9: 0x6dc62020, 0x2b3ea: 0x6dc62220, 0x2b3eb: 0x6dc62420,\n\t0x2b3ec: 0x6de2ea20, 0x2b3ed: 0x6de2ec20, 0x2b3ee: 0x6dfa5c20, 0x2b3ef: 0x6dfa5e20,\n\t0x2b3f0: 0x6dfa6020, 0x2b3f1: 0x6e0df020, 0x2b3f2: 0x6e0df220, 0x2b3f3: 0x6e0df420,\n\t0x2b3f4: 0x6e0df620, 0x2b3f5: 0x6e28f820, 0x2b3f6: 0x6e28fa20, 0x2b3f7: 0x6e28fc20,\n\t0x2b3f8: 0x6e389020, 0x2b3f9: 0x6e389220, 0x2b3fa: 0x6c352e20, 0x2b3fb: 0x6c722220,\n\t0x2b3fc: 0x6c722420, 0x2b3fd: 0x6c9a9420, 0x2b3fe: 0x6cc67020, 0x2b3ff: 0x6c211c20,\n\t// Block 0xad0, offset 0x2b400\n\t0x2b400: 0x6c211e20, 0x2b401: 0x6c354020, 0x2b402: 0x6c354220, 0x2b403: 0x6c503420,\n\t0x2b404: 0x6c503620, 0x2b405: 0x6c503820, 0x2b406: 0x6c503a20, 0x2b407: 0x6c723620,\n\t0x2b408: 0x6c723820, 0x2b409: 0x6c723a20, 0x2b40a: 0x6c9aa020, 0x2b40b: 0x6c9aa220,\n\t0x2b40c: 0x6c9aa420, 0x2b40d: 0x6c9aa620, 0x2b40e: 0x6c9aa820, 0x2b40f: 0x6cc68220,\n\t0x2b410: 0x6cc68420, 0x2b411: 0x6cc68620, 0x2b412: 0x6cc68820, 0x2b413: 0x6cc68a20,\n\t0x2b414: 0x6cc68c20, 0x2b415: 0x6cc68e20, 0x2b416: 0x6cc69020, 0x2b417: 0x6cc69220,\n\t0x2b418: 0x6cc69420, 0x2b419: 0x6cc69620, 0x2b41a: 0x6cc69820, 0x2b41b: 0x6cf52c20,\n\t0x2b41c: 0x6cf52e20, 0x2b41d: 0x6cf53020, 0x2b41e: 0x6cf53220, 0x2b41f: 0x6cf53420,\n\t0x2b420: 0x6d24f020, 0x2b421: 0x6d24f220, 0x2b422: 0x6d24f420, 0x2b423: 0x6d24f620,\n\t0x2b424: 0x6d527220, 0x2b425: 0x6d527420, 0x2b426: 0x6d527620, 0x2b427: 0x6d7dae20,\n\t0x2b428: 0x6d7db020, 0x2b429: 0x6d7db220, 0x2b42a: 0x6d7db420, 0x2b42b: 0x6dc6b620,\n\t0x2b42c: 0x6dc6b820, 0x2b42d: 0x6dfab220, 0x2b42e: 0x6e0e2c20, 0x2b42f: 0x6c213a20,\n\t0x2b430: 0x6c728c20, 0x2b431: 0x6cf58c20, 0x2b432: 0x6c124020, 0x2b433: 0x6c124220,\n\t0x2b434: 0x6c358220, 0x2b435: 0x6c507a20, 0x2b436: 0x6c729a20, 0x2b437: 0x6c9b2820,\n\t0x2b438: 0x6cc71420, 0x2b439: 0x6d52cc20, 0x2b43a: 0x6da54220, 0x2b43b: 0x6e292a20,\n\t0x2b43c: 0x6c508220, 0x2b43d: 0x6c508420, 0x2b43e: 0x6c72aa20, 0x2b43f: 0x6c72ac20,\n\t// Block 0xad1, offset 0x2b440\n\t0x2b440: 0x6cc72420, 0x2b441: 0x6d255620, 0x2b442: 0x6d52d620, 0x2b443: 0x6c124620,\n\t0x2b444: 0x6c359e20, 0x2b445: 0x6c72b420, 0x2b446: 0x6c508e20, 0x2b447: 0x6c72b620,\n\t0x2b448: 0x6c72b820, 0x2b449: 0x6c72ba20, 0x2b44a: 0x6c9b4220, 0x2b44b: 0x6c9b4420,\n\t0x2b44c: 0x6c9b4620, 0x2b44d: 0x6cc74420, 0x2b44e: 0x6d52e420, 0x2b44f: 0x6d52e620,\n\t0x2b450: 0x6c124c20, 0x2b451: 0x6c124e20, 0x2b452: 0x6c215020, 0x2b453: 0x6c215220,\n\t0x2b454: 0x6c215420, 0x2b455: 0x6c215620, 0x2b456: 0x6c215820, 0x2b457: 0x6c215a20,\n\t0x2b458: 0x6c35b020, 0x2b459: 0x6c35b220, 0x2b45a: 0x6c35b420, 0x2b45b: 0x6c50b020,\n\t0x2b45c: 0x6c50b220, 0x2b45d: 0x6c50b420, 0x2b45e: 0x6c50b620, 0x2b45f: 0x6c50b820,\n\t0x2b460: 0x6c50ba20, 0x2b461: 0x6c50bc20, 0x2b462: 0x6c50be20, 0x2b463: 0x6c50c020,\n\t0x2b464: 0x6c50c220, 0x2b465: 0x6c72f020, 0x2b466: 0x6c72f220, 0x2b467: 0x6c72f420,\n\t0x2b468: 0x6c72f620, 0x2b469: 0x6c72f820, 0x2b46a: 0x6c72fa20, 0x2b46b: 0x6c72fc20,\n\t0x2b46c: 0x6c72fe20, 0x2b46d: 0x6c730020, 0x2b46e: 0x6c730220, 0x2b46f: 0x6c9b7020,\n\t0x2b470: 0x6c9b7220, 0x2b471: 0x6c9b7420, 0x2b472: 0x6c9b7620, 0x2b473: 0x6c9b7820,\n\t0x2b474: 0x6c9b7a20, 0x2b475: 0x6cc76e20, 0x2b476: 0x6cc77020, 0x2b477: 0x6cc77220,\n\t0x2b478: 0x6cc77420, 0x2b479: 0x6cc77620, 0x2b47a: 0x6cc77820, 0x2b47b: 0x6cc77a20,\n\t0x2b47c: 0x6cc77c20, 0x2b47d: 0x6cc77e20, 0x2b47e: 0x6cc78020, 0x2b47f: 0x6cc78220,\n\t// Block 0xad2, offset 0x2b480\n\t0x2b480: 0x6cc78420, 0x2b481: 0x6cf5d820, 0x2b482: 0x6cf5da20, 0x2b483: 0x6cf5dc20,\n\t0x2b484: 0x6cf5de20, 0x2b485: 0x6cf5e020, 0x2b486: 0x6cf5e220, 0x2b487: 0x6cf5e420,\n\t0x2b488: 0x6cf5e620, 0x2b489: 0x6cf5e820, 0x2b48a: 0x6cf5ea20, 0x2b48b: 0x6cf5ec20,\n\t0x2b48c: 0x6cf5ee20, 0x2b48d: 0x6d257620, 0x2b48e: 0x6d257820, 0x2b48f: 0x6d257a20,\n\t0x2b490: 0x6d257c20, 0x2b491: 0x6d52f420, 0x2b492: 0x6d52f620, 0x2b493: 0x6d52f820,\n\t0x2b494: 0x6d52fa20, 0x2b495: 0x6d52fc20, 0x2b496: 0x6d52fe20, 0x2b497: 0x6d7e3220,\n\t0x2b498: 0x6d7e3420, 0x2b499: 0x6d7e3620, 0x2b49a: 0x6d7e3820, 0x2b49b: 0x6d7e3a20,\n\t0x2b49c: 0x6d7e3c20, 0x2b49d: 0x6d7e3e20, 0x2b49e: 0x6d7e4020, 0x2b49f: 0x6d7e4220,\n\t0x2b4a0: 0x6da55e20, 0x2b4a1: 0x6da56020, 0x2b4a2: 0x6da56220, 0x2b4a3: 0x6dc6fa20,\n\t0x2b4a4: 0x6dc6fc20, 0x2b4a5: 0x6dc6fe20, 0x2b4a6: 0x6dc70020, 0x2b4a7: 0x6dc70220,\n\t0x2b4a8: 0x6dc70420, 0x2b4a9: 0x6de38420, 0x2b4aa: 0x6de38620, 0x2b4ab: 0x6dfade20,\n\t0x2b4ac: 0x6e1d9a20, 0x2b4ad: 0x6e1d9c20, 0x2b4ae: 0x6e292e20, 0x2b4af: 0x6e38a620,\n\t0x2b4b0: 0x6c126e20, 0x2b4b1: 0x6d7ed420, 0x2b4b2: 0x6da5aa20, 0x2b4b3: 0x6c364a20,\n\t0x2b4b4: 0x6c73aa20, 0x2b4b5: 0x6c73ac20, 0x2b4b6: 0x6c9c1620, 0x2b4b7: 0x6c9c1820,\n\t0x2b4b8: 0x6cc85820, 0x2b4b9: 0x6cd95a20, 0x2b4ba: 0x6d260220, 0x2b4bb: 0x6d260420,\n\t0x2b4bc: 0x6d538020, 0x2b4bd: 0x6d538220, 0x2b4be: 0x6d538420, 0x2b4bf: 0x6d7ee420,\n\t// Block 0xad3, offset 0x2b4c0\n\t0x2b4c0: 0x6da5b020, 0x2b4c1: 0x6c127a20, 0x2b4c2: 0x6c21b020, 0x2b4c3: 0x6c21b220,\n\t0x2b4c4: 0x6c21b420, 0x2b4c5: 0x6c21b620, 0x2b4c6: 0x6c21b820, 0x2b4c7: 0x6c365820,\n\t0x2b4c8: 0x6c365a20, 0x2b4c9: 0x6c365c20, 0x2b4ca: 0x6c365e20, 0x2b4cb: 0x6c366020,\n\t0x2b4cc: 0x6c366220, 0x2b4cd: 0x6c366420, 0x2b4ce: 0x6c366620, 0x2b4cf: 0x6c366820,\n\t0x2b4d0: 0x6c366a20, 0x2b4d1: 0x6c518620, 0x2b4d2: 0x6c518820, 0x2b4d3: 0x6c518a20,\n\t0x2b4d4: 0x6c518c20, 0x2b4d5: 0x6c518e20, 0x2b4d6: 0x6c519020, 0x2b4d7: 0x6c519220,\n\t0x2b4d8: 0x6c73c620, 0x2b4d9: 0x6c73c820, 0x2b4da: 0x6c73ca20, 0x2b4db: 0x6c73cc20,\n\t0x2b4dc: 0x6c73ce20, 0x2b4dd: 0x6c73d020, 0x2b4de: 0x6c73d220, 0x2b4df: 0x6c73d420,\n\t0x2b4e0: 0x6c73d620, 0x2b4e1: 0x6c73d820, 0x2b4e2: 0x6c73da20, 0x2b4e3: 0x6c73dc20,\n\t0x2b4e4: 0x6c73de20, 0x2b4e5: 0x6c73e020, 0x2b4e6: 0x6c73e220, 0x2b4e7: 0x6c73e420,\n\t0x2b4e8: 0x6c9c3620, 0x2b4e9: 0x6c9c3820, 0x2b4ea: 0x6c9c3a20, 0x2b4eb: 0x6c9c3c20,\n\t0x2b4ec: 0x6c9c3e20, 0x2b4ed: 0x6c9c4020, 0x2b4ee: 0x6c9c4220, 0x2b4ef: 0x6c9c4420,\n\t0x2b4f0: 0x6c9c4620, 0x2b4f1: 0x6c9c4820, 0x2b4f2: 0x6c9c4a20, 0x2b4f3: 0x6c9c4c20,\n\t0x2b4f4: 0x6c9c4e20, 0x2b4f5: 0x6c9c5020, 0x2b4f6: 0x6cc88620, 0x2b4f7: 0x6c9c5220,\n\t0x2b4f8: 0x6cc88820, 0x2b4f9: 0x6cc88a20, 0x2b4fa: 0x6cc88c20, 0x2b4fb: 0x6cc88e20,\n\t0x2b4fc: 0x6cc89020, 0x2b4fd: 0x6cc89220, 0x2b4fe: 0x6cc89420, 0x2b4ff: 0x6cc89620,\n\t// Block 0xad4, offset 0x2b500\n\t0x2b500: 0x6cc89820, 0x2b501: 0x6cc89a20, 0x2b502: 0x6cc89c20, 0x2b503: 0x6cc89e20,\n\t0x2b504: 0x6cc8a020, 0x2b505: 0x6cc8a220, 0x2b506: 0x6cc8a420, 0x2b507: 0x6cc8a620,\n\t0x2b508: 0x6cc8a820, 0x2b509: 0x6cc8aa20, 0x2b50a: 0x6cc8ac20, 0x2b50b: 0x6cf6b220,\n\t0x2b50c: 0x6cf6b420, 0x2b50d: 0x6cf6b620, 0x2b50e: 0x6cf6b820, 0x2b50f: 0x6cf6ba20,\n\t0x2b510: 0x6cf6bc20, 0x2b511: 0x6cf6be20, 0x2b512: 0x6cf6c020, 0x2b513: 0x6cf6c220,\n\t0x2b514: 0x6cf6c420, 0x2b515: 0x6cf6c620, 0x2b516: 0x6cf6c820, 0x2b517: 0x6cf6ca20,\n\t0x2b518: 0x6cf6cc20, 0x2b519: 0x6cf6ce20, 0x2b51a: 0x6cf6d020, 0x2b51b: 0x6cf6d220,\n\t0x2b51c: 0x6cf6d420, 0x2b51d: 0x6cf6d620, 0x2b51e: 0x6cf6d820, 0x2b51f: 0x6cf6da20,\n\t0x2b520: 0x6cf6dc20, 0x2b521: 0x6cfbd820, 0x2b522: 0x6cf6de20, 0x2b523: 0x6cf6e020,\n\t0x2b524: 0x6d261a20, 0x2b525: 0x6d261c20, 0x2b526: 0x6d261e20, 0x2b527: 0x6d262020,\n\t0x2b528: 0x6d262220, 0x2b529: 0x6d262420, 0x2b52a: 0x6d262620, 0x2b52b: 0x6d262820,\n\t0x2b52c: 0x6d262a20, 0x2b52d: 0x6d262c20, 0x2b52e: 0x6d262e20, 0x2b52f: 0x6d263020,\n\t0x2b530: 0x6d263220, 0x2b531: 0x6d263420, 0x2b532: 0x6d263620, 0x2b533: 0x6d263820,\n\t0x2b534: 0x6d263a20, 0x2b535: 0x6d263c20, 0x2b536: 0x6d263e20, 0x2b537: 0x6d264020,\n\t0x2b538: 0x6d264220, 0x2b539: 0x6d264420, 0x2b53a: 0x6d264620, 0x2b53b: 0x6d264820,\n\t0x2b53c: 0x6d264a20, 0x2b53d: 0x6d264c20, 0x2b53e: 0x6d539e20, 0x2b53f: 0x6d53a020,\n\t// Block 0xad5, offset 0x2b540\n\t0x2b540: 0x6d53a220, 0x2b541: 0x6d53a420, 0x2b542: 0x6d53a620, 0x2b543: 0x6d53a820,\n\t0x2b544: 0x6d53aa20, 0x2b545: 0x6d53ac20, 0x2b546: 0x6d53ae20, 0x2b547: 0x6d53b020,\n\t0x2b548: 0x6d53b220, 0x2b549: 0x6d53b420, 0x2b54a: 0x6d53b620, 0x2b54b: 0x6d53b820,\n\t0x2b54c: 0x6d53ba20, 0x2b54d: 0x6d53bc20, 0x2b54e: 0x6d53be20, 0x2b54f: 0x6d53c020,\n\t0x2b550: 0x6d7f0220, 0x2b551: 0x6d53c220, 0x2b552: 0x6d53c420, 0x2b553: 0x6d7f0420,\n\t0x2b554: 0x6d7f0620, 0x2b555: 0x6d7f0820, 0x2b556: 0x6d7f0a20, 0x2b557: 0x6d7f0c20,\n\t0x2b558: 0x6d7f0e20, 0x2b559: 0x6d7f1020, 0x2b55a: 0x6d7f1220, 0x2b55b: 0x6d7f1420,\n\t0x2b55c: 0x6d7f1620, 0x2b55d: 0x6d7f1820, 0x2b55e: 0x6d7f1a20, 0x2b55f: 0x6d7f1c20,\n\t0x2b560: 0x6d53c620, 0x2b561: 0x6d7f1e20, 0x2b562: 0x6d7f2020, 0x2b563: 0x6d7f2220,\n\t0x2b564: 0x6d7f2420, 0x2b565: 0x6d7f2620, 0x2b566: 0x6d7f2820, 0x2b567: 0x6d7f2a20,\n\t0x2b568: 0x6d7f2c20, 0x2b569: 0x6d7f2e20, 0x2b56a: 0x6da5c220, 0x2b56b: 0x6da5c420,\n\t0x2b56c: 0x6da5c620, 0x2b56d: 0x6da5c820, 0x2b56e: 0x6da5ca20, 0x2b56f: 0x6da5cc20,\n\t0x2b570: 0x6da5ce20, 0x2b571: 0x6da5d020, 0x2b572: 0x6da5d220, 0x2b573: 0x6da5d420,\n\t0x2b574: 0x6da5d620, 0x2b575: 0x6da5d820, 0x2b576: 0x6da5da20, 0x2b577: 0x6dc75420,\n\t0x2b578: 0x6dc75620, 0x2b579: 0x6dc75820, 0x2b57a: 0x6dc75a20, 0x2b57b: 0x6dc75c20,\n\t0x2b57c: 0x6dc75e20, 0x2b57d: 0x6dc76020, 0x2b57e: 0x6de3b420, 0x2b57f: 0x6de3b620,\n\t// Block 0xad6, offset 0x2b580\n\t0x2b580: 0x6de3b820, 0x2b581: 0x6de3ba20, 0x2b582: 0x6de3bc20, 0x2b583: 0x6de3be20,\n\t0x2b584: 0x6de3c020, 0x2b585: 0x6de3c220, 0x2b586: 0x6de3c420, 0x2b587: 0x6de3c620,\n\t0x2b588: 0x6de3c820, 0x2b589: 0x6dfb0820, 0x2b58a: 0x6dfb0a20, 0x2b58b: 0x6dfb0c20,\n\t0x2b58c: 0x6dfb0e20, 0x2b58d: 0x6dfb1020, 0x2b58e: 0x6dfb1220, 0x2b58f: 0x6dfb1420,\n\t0x2b590: 0x6dfb1620, 0x2b591: 0x6dfb1820, 0x2b592: 0x6dfb1a20, 0x2b593: 0x6dfb1c20,\n\t0x2b594: 0x6e0e5e20, 0x2b595: 0x6e0e6020, 0x2b596: 0x6dfb1e20, 0x2b597: 0x6e1db220,\n\t0x2b598: 0x6e1db420, 0x2b599: 0x6e293a20, 0x2b59a: 0x6e293c20, 0x2b59b: 0x6e293e20,\n\t0x2b59c: 0x6e294020, 0x2b59d: 0x6c223820, 0x2b59e: 0x6c223a20, 0x2b59f: 0x6c376620,\n\t0x2b5a0: 0x6c376820, 0x2b5a1: 0x6c376a20, 0x2b5a2: 0x6c376c20, 0x2b5a3: 0x6c52c220,\n\t0x2b5a4: 0x6c52c420, 0x2b5a5: 0x6c52c620, 0x2b5a6: 0x6c52c820, 0x2b5a7: 0x6c52ca20,\n\t0x2b5a8: 0x6c52cc20, 0x2b5a9: 0x6c754820, 0x2b5aa: 0x6c754a20, 0x2b5ab: 0x6c754c20,\n\t0x2b5ac: 0x6c754e20, 0x2b5ad: 0x6c755020, 0x2b5ae: 0x6c9da620, 0x2b5af: 0x6c9da820,\n\t0x2b5b0: 0x6c9daa20, 0x2b5b1: 0x6c9dac20, 0x2b5b2: 0x6cca8c20, 0x2b5b3: 0x6cca8e20,\n\t0x2b5b4: 0x6cca9020, 0x2b5b5: 0x6cca9220, 0x2b5b6: 0x6cca9420, 0x2b5b7: 0x6c75a620,\n\t0x2b5b8: 0x6cca9620, 0x2b5b9: 0x6cf8bc20, 0x2b5ba: 0x6cf8be20, 0x2b5bb: 0x6cf8c020,\n\t0x2b5bc: 0x6cf8c220, 0x2b5bd: 0x6cf8c420, 0x2b5be: 0x6cf8c620, 0x2b5bf: 0x6d280220,\n\t// Block 0xad7, offset 0x2b5c0\n\t0x2b5c0: 0x6d280420, 0x2b5c1: 0x6d280620, 0x2b5c2: 0x6d555220, 0x2b5c3: 0x6d555420,\n\t0x2b5c4: 0x6d80d020, 0x2b5c5: 0x6d80d220, 0x2b5c6: 0x6da6f420, 0x2b5c7: 0x6da6f620,\n\t0x2b5c8: 0x6da6f820, 0x2b5c9: 0x6da6fa20, 0x2b5ca: 0x6de47a20, 0x2b5cb: 0x6dfb9a20,\n\t0x2b5cc: 0x6e1e0c20, 0x2b5cd: 0x6e297620, 0x2b5ce: 0x6e38d620, 0x2b5cf: 0x6c12ba20,\n\t0x2b5d0: 0x6c224e20, 0x2b5d1: 0x6c225020, 0x2b5d2: 0x6c52f820, 0x2b5d3: 0x6c52fa20,\n\t0x2b5d4: 0x6c52fc20, 0x2b5d5: 0x6ccad220, 0x2b5d6: 0x6ccad420, 0x2b5d7: 0x6d284220,\n\t0x2b5d8: 0x6dc85c20, 0x2b5d9: 0x6c12c220, 0x2b5da: 0x6c37ca20, 0x2b5db: 0x6c37cc20,\n\t0x2b5dc: 0x6c37ce20, 0x2b5dd: 0x6c37d020, 0x2b5de: 0x6c530820, 0x2b5df: 0x6c530a20,\n\t0x2b5e0: 0x6c530c20, 0x2b5e1: 0x6c75a820, 0x2b5e2: 0x6c9de820, 0x2b5e3: 0x6c9dea20,\n\t0x2b5e4: 0x6ccaf820, 0x2b5e5: 0x6ccafa20, 0x2b5e6: 0x6ccafc20, 0x2b5e7: 0x6ccafe20,\n\t0x2b5e8: 0x6ccb0020, 0x2b5e9: 0x6ccb0220, 0x2b5ea: 0x6cf92220, 0x2b5eb: 0x6cf92420,\n\t0x2b5ec: 0x6cf92620, 0x2b5ed: 0x6cf92820, 0x2b5ee: 0x6cf92a20, 0x2b5ef: 0x6d285020,\n\t0x2b5f0: 0x6d285220, 0x2b5f1: 0x6d285420, 0x2b5f2: 0x6d285620, 0x2b5f3: 0x6d559a20,\n\t0x2b5f4: 0x6d559c20, 0x2b5f5: 0x6d810220, 0x2b5f6: 0x6d810420, 0x2b5f7: 0x6d810620,\n\t0x2b5f8: 0x6da71e20, 0x2b5f9: 0x6dfba420, 0x2b5fa: 0x6dfba620, 0x2b5fb: 0x6e297e20,\n\t0x2b5fc: 0x6c227420, 0x2b5fd: 0x6c380420, 0x2b5fe: 0x6c75dc20, 0x2b5ff: 0x6c75de20,\n\t// Block 0xad8, offset 0x2b600\n\t0x2b600: 0x6c9e2020, 0x2b601: 0x6ccb4a20, 0x2b602: 0x6ccb4c20, 0x2b603: 0x6ccb4e20,\n\t0x2b604: 0x6cf95620, 0x2b605: 0x6d287620, 0x2b606: 0x6d812820, 0x2b607: 0x6d812a20,\n\t0x2b608: 0x6d812c20, 0x2b609: 0x6da73620, 0x2b60a: 0x6dc87e20, 0x2b60b: 0x6c535620,\n\t0x2b60c: 0x6c12da20, 0x2b60d: 0x6c382020, 0x2b60e: 0x6c382220, 0x2b60f: 0x6c382420,\n\t0x2b610: 0x6c382620, 0x2b611: 0x6c382820, 0x2b612: 0x6c535e20, 0x2b613: 0x6c75f620,\n\t0x2b614: 0x6c9e5420, 0x2b615: 0x6c9e5620, 0x2b616: 0x6c9e5820, 0x2b617: 0x6c9e5a20,\n\t0x2b618: 0x6c9e5c20, 0x2b619: 0x6c9e5e20, 0x2b61a: 0x6c9e6020, 0x2b61b: 0x6ccb6a20,\n\t0x2b61c: 0x6ccb6c20, 0x2b61d: 0x6ccb6e20, 0x2b61e: 0x6ccb7020, 0x2b61f: 0x6cf98220,\n\t0x2b620: 0x6cf98420, 0x2b621: 0x6cf98620, 0x2b622: 0x6cf98820, 0x2b623: 0x6cf98a20,\n\t0x2b624: 0x6d289e20, 0x2b625: 0x6d28a020, 0x2b626: 0x6d28a220, 0x2b627: 0x6d28a420,\n\t0x2b628: 0x6d28a620, 0x2b629: 0x6d28a820, 0x2b62a: 0x6d815c20, 0x2b62b: 0x6d815e20,\n\t0x2b62c: 0x6d816020, 0x2b62d: 0x6d816220, 0x2b62e: 0x6d816420, 0x2b62f: 0x6dc89220,\n\t0x2b630: 0x6dc89420, 0x2b631: 0x6de4a220, 0x2b632: 0x6e3d4820, 0x2b633: 0x6c763820,\n\t0x2b634: 0x6c385620, 0x2b635: 0x6c9ea020, 0x2b636: 0x6d561220, 0x2b637: 0x6d819620,\n\t0x2b638: 0x6c04c820, 0x2b639: 0x6c099620, 0x2b63a: 0x6c099820, 0x2b63b: 0x6c12f420,\n\t0x2b63c: 0x6c099a20, 0x2b63d: 0x6c12fa20, 0x2b63e: 0x6c22a020, 0x2b63f: 0x6c12fc20,\n\t// Block 0xad9, offset 0x2b640\n\t0x2b640: 0x6c22a620, 0x2b641: 0x6c22a820, 0x2b642: 0x6c22aa20, 0x2b643: 0x6c22ac20,\n\t0x2b644: 0x6c22ae20, 0x2b645: 0x6c22b020, 0x2b646: 0x6c22b220, 0x2b647: 0x6c22b420,\n\t0x2b648: 0x6c22b620, 0x2b649: 0x6c22b820, 0x2b64a: 0x6c22ba20, 0x2b64b: 0x6c387020,\n\t0x2b64c: 0x6c387220, 0x2b64d: 0x6c387420, 0x2b64e: 0x6c387620, 0x2b64f: 0x6c387820,\n\t0x2b650: 0x6c387a20, 0x2b651: 0x6c387c20, 0x2b652: 0x6c387e20, 0x2b653: 0x6c388020,\n\t0x2b654: 0x6c388220, 0x2b655: 0x6c388420, 0x2b656: 0x6c53d820, 0x2b657: 0x6c53da20,\n\t0x2b658: 0x6c53dc20, 0x2b659: 0x6c53de20, 0x2b65a: 0x6c53e020, 0x2b65b: 0x6c53e220,\n\t0x2b65c: 0x6c53e420, 0x2b65d: 0x6c53e620, 0x2b65e: 0x6c53e820, 0x2b65f: 0x6c9eaa20,\n\t0x2b660: 0x6c53ea20, 0x2b661: 0x6c53ec20, 0x2b662: 0x6c53ee20, 0x2b663: 0x6c53f020,\n\t0x2b664: 0x6c765220, 0x2b665: 0x6c765420, 0x2b666: 0x6c765620, 0x2b667: 0x6c765820,\n\t0x2b668: 0x6c765a20, 0x2b669: 0x6c765c20, 0x2b66a: 0x6c765e20, 0x2b66b: 0x6c9eac20,\n\t0x2b66c: 0x6c766020, 0x2b66d: 0x6c766220, 0x2b66e: 0x6c766420, 0x2b66f: 0x6c766620,\n\t0x2b670: 0x6c766820, 0x2b671: 0x6c766a20, 0x2b672: 0x6c766c20, 0x2b673: 0x6c766e20,\n\t0x2b674: 0x6c9eb020, 0x2b675: 0x6c9eb220, 0x2b676: 0x6c9eb420, 0x2b677: 0x6c9eb620,\n\t0x2b678: 0x6c9eb820, 0x2b679: 0x6c9eba20, 0x2b67a: 0x6c9ebc20, 0x2b67b: 0x6c9ebe20,\n\t0x2b67c: 0x6ccbd620, 0x2b67d: 0x6c9ec020, 0x2b67e: 0x6c9ec220, 0x2b67f: 0x6c9ec420,\n\t// Block 0xada, offset 0x2b680\n\t0x2b680: 0x6c9ec620, 0x2b681: 0x6c9ec820, 0x2b682: 0x6c9eca20, 0x2b683: 0x6c9ecc20,\n\t0x2b684: 0x6c9ece20, 0x2b685: 0x6ccbd820, 0x2b686: 0x6c9ed020, 0x2b687: 0x6ccbda20,\n\t0x2b688: 0x6c9ed220, 0x2b689: 0x6c9ed420, 0x2b68a: 0x6c9ed620, 0x2b68b: 0x6c9ed820,\n\t0x2b68c: 0x6c9eda20, 0x2b68d: 0x6c9edc20, 0x2b68e: 0x6c9ede20, 0x2b68f: 0x6ccbe020,\n\t0x2b690: 0x6ccbe220, 0x2b691: 0x6ccbe420, 0x2b692: 0x6ccbe620, 0x2b693: 0x6ccbe820,\n\t0x2b694: 0x6ccbea20, 0x2b695: 0x6ccbec20, 0x2b696: 0x6ccbee20, 0x2b697: 0x6ccbf020,\n\t0x2b698: 0x6ccbf220, 0x2b699: 0x6ccbf420, 0x2b69a: 0x6ccbf620, 0x2b69b: 0x6ccbf820,\n\t0x2b69c: 0x6ccbfa20, 0x2b69d: 0x6ccbfc20, 0x2b69e: 0x6ccbfe20, 0x2b69f: 0x6ccc0020,\n\t0x2b6a0: 0x6ccc0220, 0x2b6a1: 0x6ccc0420, 0x2b6a2: 0x6ccc0620, 0x2b6a3: 0x6ccc0820,\n\t0x2b6a4: 0x6ccc0a20, 0x2b6a5: 0x6cf9e420, 0x2b6a6: 0x6cf9e620, 0x2b6a7: 0x6cf9e820,\n\t0x2b6a8: 0x6cf9ea20, 0x2b6a9: 0x6cf9ec20, 0x2b6aa: 0x6cf9ee20, 0x2b6ab: 0x6cf9f020,\n\t0x2b6ac: 0x6cf9f220, 0x2b6ad: 0x6cf9f420, 0x2b6ae: 0x6cf9f620, 0x2b6af: 0x6cf9f820,\n\t0x2b6b0: 0x6cf9fa20, 0x2b6b1: 0x6cf9fc20, 0x2b6b2: 0x6cf9fe20, 0x2b6b3: 0x6cfa0020,\n\t0x2b6b4: 0x6cfa0220, 0x2b6b5: 0x6cfa0420, 0x2b6b6: 0x6cfa0620, 0x2b6b7: 0x6cfa0820,\n\t0x2b6b8: 0x6cfa0a20, 0x2b6b9: 0x6cfa0c20, 0x2b6ba: 0x6cfa0e20, 0x2b6bb: 0x6cfa1020,\n\t0x2b6bc: 0x6d28f620, 0x2b6bd: 0x6d28f820, 0x2b6be: 0x6d28fa20, 0x2b6bf: 0x6d28fc20,\n\t// Block 0xadb, offset 0x2b6c0\n\t0x2b6c0: 0x6d28fe20, 0x2b6c1: 0x6d290020, 0x2b6c2: 0x6d290220, 0x2b6c3: 0x6d290420,\n\t0x2b6c4: 0x6d290620, 0x2b6c5: 0x6d290820, 0x2b6c6: 0x6d290a20, 0x2b6c7: 0x6d290c20,\n\t0x2b6c8: 0x6d290e20, 0x2b6c9: 0x6d291020, 0x2b6ca: 0x6d562420, 0x2b6cb: 0x6d562620,\n\t0x2b6cc: 0x6d562820, 0x2b6cd: 0x6d562a20, 0x2b6ce: 0x6d562c20, 0x2b6cf: 0x6d562e20,\n\t0x2b6d0: 0x6d563020, 0x2b6d1: 0x6d563220, 0x2b6d2: 0x6d563420, 0x2b6d3: 0x6d563620,\n\t0x2b6d4: 0x6d563820, 0x2b6d5: 0x6d563a20, 0x2b6d6: 0x6d563c20, 0x2b6d7: 0x6d563e20,\n\t0x2b6d8: 0x6d819820, 0x2b6d9: 0x6d564020, 0x2b6da: 0x6d564220, 0x2b6db: 0x6d564420,\n\t0x2b6dc: 0x6d564620, 0x2b6dd: 0x6d819e20, 0x2b6de: 0x6d81a020, 0x2b6df: 0x6d81a220,\n\t0x2b6e0: 0x6d81a420, 0x2b6e1: 0x6d81a620, 0x2b6e2: 0x6d81a820, 0x2b6e3: 0x6d81aa20,\n\t0x2b6e4: 0x6d81ac20, 0x2b6e5: 0x6d81ae20, 0x2b6e6: 0x6d81b020, 0x2b6e7: 0x6d81b220,\n\t0x2b6e8: 0x6da77620, 0x2b6e9: 0x6d81b420, 0x2b6ea: 0x6d81b620, 0x2b6eb: 0x6d81b820,\n\t0x2b6ec: 0x6d81ba20, 0x2b6ed: 0x6d81bc20, 0x2b6ee: 0x6d81be20, 0x2b6ef: 0x6da77c20,\n\t0x2b6f0: 0x6da77e20, 0x2b6f1: 0x6da78020, 0x2b6f2: 0x6da78220, 0x2b6f3: 0x6da78420,\n\t0x2b6f4: 0x6da78620, 0x2b6f5: 0x6da78820, 0x2b6f6: 0x6da78a20, 0x2b6f7: 0x6da78c20,\n\t0x2b6f8: 0x6da78e20, 0x2b6f9: 0x6da79020, 0x2b6fa: 0x6da79220, 0x2b6fb: 0x6da79420,\n\t0x2b6fc: 0x6da79620, 0x2b6fd: 0x6dc8c420, 0x2b6fe: 0x6dc8c620, 0x2b6ff: 0x6dc8c820,\n\t// Block 0xadc, offset 0x2b700\n\t0x2b700: 0x6dc8ca20, 0x2b701: 0x6dc8cc20, 0x2b702: 0x6dc8ce20, 0x2b703: 0x6dc8d020,\n\t0x2b704: 0x6de4b220, 0x2b705: 0x6de4b420, 0x2b706: 0x6de4b620, 0x2b707: 0x6de4b820,\n\t0x2b708: 0x6de4ba20, 0x2b709: 0x6de4bc20, 0x2b70a: 0x6de4be20, 0x2b70b: 0x6de4c020,\n\t0x2b70c: 0x6dfbc420, 0x2b70d: 0x6dfbc620, 0x2b70e: 0x6dfbc820, 0x2b70f: 0x6dfbca20,\n\t0x2b710: 0x6dfbcc20, 0x2b711: 0x6dfbce20, 0x2b712: 0x6e0efa20, 0x2b713: 0x6e0efc20,\n\t0x2b714: 0x6e0efe20, 0x2b715: 0x6e0f0020, 0x2b716: 0x6e0f0220, 0x2b717: 0x6e1e2e20,\n\t0x2b718: 0x6e0f0420, 0x2b719: 0x6e1e3020, 0x2b71a: 0x6e1e3220, 0x2b71b: 0x6e299820,\n\t0x2b71c: 0x6e299a20, 0x2b71d: 0x6e299c20, 0x2b71e: 0x6e329e20, 0x2b71f: 0x6e32a020,\n\t0x2b720: 0x6e3d5020, 0x2b721: 0x6c135620, 0x2b722: 0x6c135820, 0x2b723: 0x6c238a20,\n\t0x2b724: 0x6c238c20, 0x2b725: 0x6c238e20, 0x2b726: 0x6c399420, 0x2b727: 0x6c399620,\n\t0x2b728: 0x6c399820, 0x2b729: 0x6c399a20, 0x2b72a: 0x6c399c20, 0x2b72b: 0x6c551820,\n\t0x2b72c: 0x6c551a20, 0x2b72d: 0x6c551c20, 0x2b72e: 0x6c551e20, 0x2b72f: 0x6c552020,\n\t0x2b730: 0x6c552220, 0x2b731: 0x6c552420, 0x2b732: 0x6c552620, 0x2b733: 0x6c77ea20,\n\t0x2b734: 0x6c77ec20, 0x2b735: 0x6c77ee20, 0x2b736: 0x6c77f020, 0x2b737: 0x6c77f220,\n\t0x2b738: 0x6c77f420, 0x2b739: 0x6ca0de20, 0x2b73a: 0x6ca0e020, 0x2b73b: 0x6ca0e220,\n\t0x2b73c: 0x6ca0e420, 0x2b73d: 0x6ca0e620, 0x2b73e: 0x6ca0e820, 0x2b73f: 0x6ca0ea20,\n\t// Block 0xadd, offset 0x2b740\n\t0x2b740: 0x6ca0ec20, 0x2b741: 0x6ca0ee20, 0x2b742: 0x6ccdde20, 0x2b743: 0x6ccde020,\n\t0x2b744: 0x6ccde220, 0x2b745: 0x6ccde420, 0x2b746: 0x6ccde620, 0x2b747: 0x6ccde820,\n\t0x2b748: 0x6ccdea20, 0x2b749: 0x6ccdec20, 0x2b74a: 0x6ccdee20, 0x2b74b: 0x6ccdf020,\n\t0x2b74c: 0x6ccdf220, 0x2b74d: 0x6ccdf420, 0x2b74e: 0x6cfbda20, 0x2b74f: 0x6cfbdc20,\n\t0x2b750: 0x6cfbde20, 0x2b751: 0x6cfbe020, 0x2b752: 0x6cfbe220, 0x2b753: 0x6cfbe420,\n\t0x2b754: 0x6cfbe620, 0x2b755: 0x6cfbe820, 0x2b756: 0x6cfbea20, 0x2b757: 0x6cfbec20,\n\t0x2b758: 0x6cfbee20, 0x2b759: 0x6cfbf020, 0x2b75a: 0x6cfbf220, 0x2b75b: 0x6cfbf420,\n\t0x2b75c: 0x6cfbf620, 0x2b75d: 0x6cfbf820, 0x2b75e: 0x6cfbfa20, 0x2b75f: 0x6d2ad220,\n\t0x2b760: 0x6d2ad420, 0x2b761: 0x6d2ad620, 0x2b762: 0x6d2ad820, 0x2b763: 0x6d2ada20,\n\t0x2b764: 0x6d2adc20, 0x2b765: 0x6d2ade20, 0x2b766: 0x6d2ae020, 0x2b767: 0x6d2ae220,\n\t0x2b768: 0x6d2ae420, 0x2b769: 0x6d2ae620, 0x2b76a: 0x6d2ae820, 0x2b76b: 0x6d580e20,\n\t0x2b76c: 0x6d581020, 0x2b76d: 0x6d581220, 0x2b76e: 0x6d581420, 0x2b76f: 0x6d581620,\n\t0x2b770: 0x6d581820, 0x2b771: 0x6d581a20, 0x2b772: 0x6d581c20, 0x2b773: 0x6d82fe20,\n\t0x2b774: 0x6d830020, 0x2b775: 0x6d830220, 0x2b776: 0x6d830420, 0x2b777: 0x6d830620,\n\t0x2b778: 0x6d830820, 0x2b779: 0x6d830a20, 0x2b77a: 0x6d830c20, 0x2b77b: 0x6d830e20,\n\t0x2b77c: 0x6d831020, 0x2b77d: 0x6d831220, 0x2b77e: 0x6da87020, 0x2b77f: 0x6da87220,\n\t// Block 0xade, offset 0x2b780\n\t0x2b780: 0x6da87420, 0x2b781: 0x6da87620, 0x2b782: 0x6da87820, 0x2b783: 0x6da87a20,\n\t0x2b784: 0x6dc9ba20, 0x2b785: 0x6dc9bc20, 0x2b786: 0x6de57220, 0x2b787: 0x6de57420,\n\t0x2b788: 0x6dfc4a20, 0x2b789: 0x6de57620, 0x2b78a: 0x6dfc4c20, 0x2b78b: 0x6dfc4e20,\n\t0x2b78c: 0x6dfc5020, 0x2b78d: 0x6e0f7c20, 0x2b78e: 0x6e1e6e20, 0x2b78f: 0x6e29d620,\n\t0x2b790: 0x6e29d820, 0x2b791: 0x6e3d6620, 0x2b792: 0x6c3a2420, 0x2b793: 0x6c3a2620,\n\t0x2b794: 0x6ca1ce20, 0x2b795: 0x6d2bda20, 0x2b796: 0x6c561420, 0x2b797: 0x6c78d420,\n\t0x2b798: 0x6ca1da20, 0x2b799: 0x6cfd3e20, 0x2b79a: 0x6c3a4020, 0x2b79b: 0x6c561e20,\n\t0x2b79c: 0x6ccf2820, 0x2b79d: 0x6c3a4e20, 0x2b79e: 0x6c3a5020, 0x2b79f: 0x6c78ee20,\n\t0x2b7a0: 0x6c78f020, 0x2b7a1: 0x6c78f220, 0x2b7a2: 0x6d2bfa20, 0x2b7a3: 0x6da93c20,\n\t0x2b7a4: 0x6dca4420, 0x2b7a5: 0x6e0fb620, 0x2b7a6: 0x6c04ea20, 0x2b7a7: 0x6c790220,\n\t0x2b7a8: 0x6c137e20, 0x2b7a9: 0x6c23e820, 0x2b7aa: 0x6c23ea20, 0x2b7ab: 0x6c3a6220,\n\t0x2b7ac: 0x6c3a6420, 0x2b7ad: 0x6c3a6620, 0x2b7ae: 0x6c3a6820, 0x2b7af: 0x6c3a6a20,\n\t0x2b7b0: 0x6c564220, 0x2b7b1: 0x6c564420, 0x2b7b2: 0x6c564620, 0x2b7b3: 0x6c564820,\n\t0x2b7b4: 0x6c564a20, 0x2b7b5: 0x6c790820, 0x2b7b6: 0x6c790a20, 0x2b7b7: 0x6c790c20,\n\t0x2b7b8: 0x6c790e20, 0x2b7b9: 0x6ca20e20, 0x2b7ba: 0x6ca21020, 0x2b7bb: 0x6ca21220,\n\t0x2b7bc: 0x6ca21420, 0x2b7bd: 0x6ca21620, 0x2b7be: 0x6ca21820, 0x2b7bf: 0x6ca21a20,\n\t// Block 0xadf, offset 0x2b7c0\n\t0x2b7c0: 0x6ca21c20, 0x2b7c1: 0x6ccf7220, 0x2b7c2: 0x6ccf7420, 0x2b7c3: 0x6ccf7620,\n\t0x2b7c4: 0x6d2c0e20, 0x2b7c5: 0x6cfd7020, 0x2b7c6: 0x6cfd7220, 0x2b7c7: 0x6cfd7420,\n\t0x2b7c8: 0x6cfd7620, 0x2b7c9: 0x6d2c1020, 0x2b7ca: 0x6d2c1220, 0x2b7cb: 0x6d2c1420,\n\t0x2b7cc: 0x6d594620, 0x2b7cd: 0x6d594820, 0x2b7ce: 0x6d594a20, 0x2b7cf: 0x6d594c20,\n\t0x2b7d0: 0x6d594e20, 0x2b7d1: 0x6d845220, 0x2b7d2: 0x6d845420, 0x2b7d3: 0x6d845620,\n\t0x2b7d4: 0x6da94820, 0x2b7d5: 0x6da94a20, 0x2b7d6: 0x6da94c20, 0x2b7d7: 0x6dca5020,\n\t0x2b7d8: 0x6dca5220, 0x2b7d9: 0x6de5e420, 0x2b7da: 0x6e0fba20, 0x2b7db: 0x6e1e9a20,\n\t0x2b7dc: 0x6c3ab420, 0x2b7dd: 0x6c240220, 0x2b7de: 0x6c240420, 0x2b7df: 0x6c240620,\n\t0x2b7e0: 0x6c240820, 0x2b7e1: 0x6c3ab820, 0x2b7e2: 0x6c3aba20, 0x2b7e3: 0x6c3abc20,\n\t0x2b7e4: 0x6c3abe20, 0x2b7e5: 0x6c3ac020, 0x2b7e6: 0x6c3ac220, 0x2b7e7: 0x6c3ac420,\n\t0x2b7e8: 0x6c3ac620, 0x2b7e9: 0x6c3ac820, 0x2b7ea: 0x6c3aca20, 0x2b7eb: 0x6c569820,\n\t0x2b7ec: 0x6c569a20, 0x2b7ed: 0x6c569c20, 0x2b7ee: 0x6c569e20, 0x2b7ef: 0x6c56a020,\n\t0x2b7f0: 0x6c56a220, 0x2b7f1: 0x6c793420, 0x2b7f2: 0x6c793620, 0x2b7f3: 0x6c793820,\n\t0x2b7f4: 0x6c793a20, 0x2b7f5: 0x6c793c20, 0x2b7f6: 0x6c793e20, 0x2b7f7: 0x6c794020,\n\t0x2b7f8: 0x6c794220, 0x2b7f9: 0x6ca25420, 0x2b7fa: 0x6ca25620, 0x2b7fb: 0x6ca25820,\n\t0x2b7fc: 0x6ca25a20, 0x2b7fd: 0x6ca25c20, 0x2b7fe: 0x6ca25e20, 0x2b7ff: 0x6ca26020,\n\t// Block 0xae0, offset 0x2b800\n\t0x2b800: 0x6ca26220, 0x2b801: 0x6ccfd820, 0x2b802: 0x6ccfda20, 0x2b803: 0x6ccfdc20,\n\t0x2b804: 0x6ccfde20, 0x2b805: 0x6ccfe020, 0x2b806: 0x6ccfe220, 0x2b807: 0x6cfdc420,\n\t0x2b808: 0x6cfdc620, 0x2b809: 0x6cfdc820, 0x2b80a: 0x6cfdca20, 0x2b80b: 0x6cfdcc20,\n\t0x2b80c: 0x6cfdce20, 0x2b80d: 0x6cfdd020, 0x2b80e: 0x6d2c6c20, 0x2b80f: 0x6d2c6e20,\n\t0x2b810: 0x6d2c7020, 0x2b811: 0x6d2c7220, 0x2b812: 0x6d2c7420, 0x2b813: 0x6d2c7620,\n\t0x2b814: 0x6d598820, 0x2b815: 0x6d598a20, 0x2b816: 0x6d598c20, 0x2b817: 0x6d598e20,\n\t0x2b818: 0x6d599020, 0x2b819: 0x6d599220, 0x2b81a: 0x6d848020, 0x2b81b: 0x6d848220,\n\t0x2b81c: 0x6d848420, 0x2b81d: 0x6da96420, 0x2b81e: 0x6da96620, 0x2b81f: 0x6da96820,\n\t0x2b820: 0x6dca5820, 0x2b821: 0x6de60220, 0x2b822: 0x6de60420, 0x2b823: 0x6dfce820,\n\t0x2b824: 0x6dfcea20, 0x2b825: 0x6dfcec20, 0x2b826: 0x6dfcee20, 0x2b827: 0x6e32d420,\n\t0x2b828: 0x6c13b620, 0x2b829: 0x6c13b820, 0x2b82a: 0x6c13ba20, 0x2b82b: 0x6c13bc20,\n\t0x2b82c: 0x6c246c20, 0x2b82d: 0x6c246e20, 0x2b82e: 0x6c247020, 0x2b82f: 0x6c247220,\n\t0x2b830: 0x6c3b3820, 0x2b831: 0x6c572a20, 0x2b832: 0x6c3b3a20, 0x2b833: 0x6c3b3c20,\n\t0x2b834: 0x6c3b3e20, 0x2b835: 0x6c3b4020, 0x2b836: 0x6c3b4220, 0x2b837: 0x6c572c20,\n\t0x2b838: 0x6c79bc20, 0x2b839: 0x6c572e20, 0x2b83a: 0x6c573020, 0x2b83b: 0x6c573220,\n\t0x2b83c: 0x6c573420, 0x2b83d: 0x6c573620, 0x2b83e: 0x6c573820, 0x2b83f: 0x6c79c220,\n\t// Block 0xae1, offset 0x2b840\n\t0x2b840: 0x6c79c420, 0x2b841: 0x6c79c620, 0x2b842: 0x6c79c820, 0x2b843: 0x6c79ca20,\n\t0x2b844: 0x6c79cc20, 0x2b845: 0x6c79ce20, 0x2b846: 0x6c79d020, 0x2b847: 0x6c79d220,\n\t0x2b848: 0x6c79d420, 0x2b849: 0x6ca2da20, 0x2b84a: 0x6ca2dc20, 0x2b84b: 0x6ca2de20,\n\t0x2b84c: 0x6ca2e020, 0x2b84d: 0x6ca2e220, 0x2b84e: 0x6ca2e420, 0x2b84f: 0x6ca2e620,\n\t0x2b850: 0x6ca2e820, 0x2b851: 0x6cd07620, 0x2b852: 0x6cd07820, 0x2b853: 0x6cd07a20,\n\t0x2b854: 0x6cd07c20, 0x2b855: 0x6cd07e20, 0x2b856: 0x6cd08020, 0x2b857: 0x6cfe4a20,\n\t0x2b858: 0x6cd08220, 0x2b859: 0x6cd08420, 0x2b85a: 0x6cd08620, 0x2b85b: 0x6cd08820,\n\t0x2b85c: 0x6cd08a20, 0x2b85d: 0x6cfe4e20, 0x2b85e: 0x6cfe5020, 0x2b85f: 0x6cfe5220,\n\t0x2b860: 0x6cfe5420, 0x2b861: 0x6cfe5620, 0x2b862: 0x6cfe5820, 0x2b863: 0x6cfe5a20,\n\t0x2b864: 0x6cfe5c20, 0x2b865: 0x6cfe5e20, 0x2b866: 0x6cfe6020, 0x2b867: 0x6d2ce220,\n\t0x2b868: 0x6d2ce420, 0x2b869: 0x6d2ce620, 0x2b86a: 0x6d2ce820, 0x2b86b: 0x6d5a0a20,\n\t0x2b86c: 0x6d5a0c20, 0x2b86d: 0x6d5a0e20, 0x2b86e: 0x6d5a1020, 0x2b86f: 0x6d5a1220,\n\t0x2b870: 0x6d5a1420, 0x2b871: 0x6d5a1620, 0x2b872: 0x6d5a1820, 0x2b873: 0x6d5a1a20,\n\t0x2b874: 0x6d5a1c20, 0x2b875: 0x6d84ce20, 0x2b876: 0x6d84d020, 0x2b877: 0x6d84d220,\n\t0x2b878: 0x6d84d420, 0x2b879: 0x6da99620, 0x2b87a: 0x6da99820, 0x2b87b: 0x6d84d620,\n\t0x2b87c: 0x6d84d820, 0x2b87d: 0x6da99e20, 0x2b87e: 0x6dca8420, 0x2b87f: 0x6da9a020,\n\t// Block 0xae2, offset 0x2b880\n\t0x2b880: 0x6da9a220, 0x2b881: 0x6da9a420, 0x2b882: 0x6dca8620, 0x2b883: 0x6de62020,\n\t0x2b884: 0x6de62220, 0x2b885: 0x6de62420, 0x2b886: 0x6de62620, 0x2b887: 0x6dfcfe20,\n\t0x2b888: 0x6e2a1a20, 0x2b889: 0x6c57c620, 0x2b88a: 0x6c57c820, 0x2b88b: 0x6c7a7420,\n\t0x2b88c: 0x6c7a7620, 0x2b88d: 0x6ca37c20, 0x2b88e: 0x6ca37e20, 0x2b88f: 0x6cd16020,\n\t0x2b890: 0x6d2d8620, 0x2b891: 0x6d2d8820, 0x2b892: 0x6d2d8a20, 0x2b893: 0x6d5ab220,\n\t0x2b894: 0x6d5ab420, 0x2b895: 0x6dcae220, 0x2b896: 0x6e3d7020, 0x2b897: 0x6c24a020,\n\t0x2b898: 0x6c3bb220, 0x2b899: 0x6c3bb420, 0x2b89a: 0x6c57d620, 0x2b89b: 0x6c57d820,\n\t0x2b89c: 0x6c7a8620, 0x2b89d: 0x6c7a8820, 0x2b89e: 0x6c7a8a20, 0x2b89f: 0x6c7a8c20,\n\t0x2b8a0: 0x6c7a8e20, 0x2b8a1: 0x6ca38c20, 0x2b8a2: 0x6ca38e20, 0x2b8a3: 0x6ca39020,\n\t0x2b8a4: 0x6ca39220, 0x2b8a5: 0x6ca39420, 0x2b8a6: 0x6ca39620, 0x2b8a7: 0x6cd17020,\n\t0x2b8a8: 0x6cd17220, 0x2b8a9: 0x6cd17420, 0x2b8aa: 0x6cd17620, 0x2b8ab: 0x6cff5220,\n\t0x2b8ac: 0x6cff5420, 0x2b8ad: 0x6cff5620, 0x2b8ae: 0x6cff5820, 0x2b8af: 0x6cff5a20,\n\t0x2b8b0: 0x6cff5c20, 0x2b8b1: 0x6cff5e20, 0x2b8b2: 0x6d2d9820, 0x2b8b3: 0x6d2d9a20,\n\t0x2b8b4: 0x6d2d9c20, 0x2b8b5: 0x6d2d9e20, 0x2b8b6: 0x6d2da020, 0x2b8b7: 0x6d2da220,\n\t0x2b8b8: 0x6d5ac620, 0x2b8b9: 0x6d5ac820, 0x2b8ba: 0x6d5aca20, 0x2b8bb: 0x6d857220,\n\t0x2b8bc: 0x6d857420, 0x2b8bd: 0x6d857620, 0x2b8be: 0x6d857820, 0x2b8bf: 0x6daa1220,\n\t// Block 0xae3, offset 0x2b8c0\n\t0x2b8c0: 0x6daa1420, 0x2b8c1: 0x6daa1620, 0x2b8c2: 0x6daa1820, 0x2b8c3: 0x6daa1a20,\n\t0x2b8c4: 0x6daa1c20, 0x2b8c5: 0x6daa1e20, 0x2b8c6: 0x6dcaea20, 0x2b8c7: 0x6dcaec20,\n\t0x2b8c8: 0x6de66a20, 0x2b8c9: 0x6de66c20, 0x2b8ca: 0x6e1ecc20, 0x2b8cb: 0x6e32e820,\n\t0x2b8cc: 0x6e392220, 0x2b8cd: 0x6c7aae20, 0x2b8ce: 0x6cff8820, 0x2b8cf: 0x6d2dd220,\n\t0x2b8d0: 0x6d5af020, 0x2b8d1: 0x6daa3a20, 0x2b8d2: 0x6cd1a220, 0x2b8d3: 0x6d5af620,\n\t0x2b8d4: 0x6d859a20, 0x2b8d5: 0x6c24b020, 0x2b8d6: 0x6c24b220, 0x2b8d7: 0x6c24b420,\n\t0x2b8d8: 0x6c581e20, 0x2b8d9: 0x6c582020, 0x2b8da: 0x6c582220, 0x2b8db: 0x6c7aba20,\n\t0x2b8dc: 0x6c7abc20, 0x2b8dd: 0x6ca3d220, 0x2b8de: 0x6ca3d420, 0x2b8df: 0x6cd1ba20,\n\t0x2b8e0: 0x6cd1bc20, 0x2b8e1: 0x6cffa220, 0x2b8e2: 0x6cffa420, 0x2b8e3: 0x6cffa620,\n\t0x2b8e4: 0x6cffa820, 0x2b8e5: 0x6d2de020, 0x2b8e6: 0x6d5afe20, 0x2b8e7: 0x6d5b0020,\n\t0x2b8e8: 0x6d5b0220, 0x2b8e9: 0x6d859e20, 0x2b8ea: 0x6daa4420, 0x2b8eb: 0x6dcb0a20,\n\t0x2b8ec: 0x6dcb0c20, 0x2b8ed: 0x6de67e20, 0x2b8ee: 0x6dfd3420, 0x2b8ef: 0x6e2a4020,\n\t0x2b8f0: 0x6cfff020, 0x2b8f1: 0x6c24d420, 0x2b8f2: 0x6c24d620, 0x2b8f3: 0x6c3c1820,\n\t0x2b8f4: 0x6c3c1a20, 0x2b8f5: 0x6c3c1c20, 0x2b8f6: 0x6c3c1e20, 0x2b8f7: 0x6c589020,\n\t0x2b8f8: 0x6c589220, 0x2b8f9: 0x6c589420, 0x2b8fa: 0x6c589620, 0x2b8fb: 0x6c589820,\n\t0x2b8fc: 0x6c589a20, 0x2b8fd: 0x6c7b1220, 0x2b8fe: 0x6c7b1420, 0x2b8ff: 0x6c7b1620,\n\t// Block 0xae4, offset 0x2b900\n\t0x2b900: 0x6c7b1820, 0x2b901: 0x6c7b1a20, 0x2b902: 0x6c7b1c20, 0x2b903: 0x6c7b1e20,\n\t0x2b904: 0x6c7b2020, 0x2b905: 0x6c7b2220, 0x2b906: 0x6c7b2420, 0x2b907: 0x6c7b2620,\n\t0x2b908: 0x6c7b2820, 0x2b909: 0x6c7b2a20, 0x2b90a: 0x6ca41c20, 0x2b90b: 0x6ca41e20,\n\t0x2b90c: 0x6ca42020, 0x2b90d: 0x6ca42220, 0x2b90e: 0x6ca42420, 0x2b90f: 0x6ca42620,\n\t0x2b910: 0x6ca42820, 0x2b911: 0x6ca42a20, 0x2b912: 0x6ca42c20, 0x2b913: 0x6cd21220,\n\t0x2b914: 0x6cd21420, 0x2b915: 0x6cd21620, 0x2b916: 0x6cd21820, 0x2b917: 0x6cd21a20,\n\t0x2b918: 0x6cd21c20, 0x2b919: 0x6cd21e20, 0x2b91a: 0x6cd22020, 0x2b91b: 0x6cd22220,\n\t0x2b91c: 0x6cd22420, 0x2b91d: 0x6cd22620, 0x2b91e: 0x6cd22820, 0x2b91f: 0x6cd22a20,\n\t0x2b920: 0x6cd22c20, 0x2b921: 0x6cd22e20, 0x2b922: 0x6cfff620, 0x2b923: 0x6cfff820,\n\t0x2b924: 0x6cfffa20, 0x2b925: 0x6cfffc20, 0x2b926: 0x6cfffe20, 0x2b927: 0x6d000020,\n\t0x2b928: 0x6d000220, 0x2b929: 0x6d000420, 0x2b92a: 0x6d2e0820, 0x2b92b: 0x6d2e0a20,\n\t0x2b92c: 0x6d2e0c20, 0x2b92d: 0x6d2e0e20, 0x2b92e: 0x6d2e1020, 0x2b92f: 0x6d2e1220,\n\t0x2b930: 0x6d2e1420, 0x2b931: 0x6d2e1620, 0x2b932: 0x6d2e1820, 0x2b933: 0x6d2e1a20,\n\t0x2b934: 0x6d2e1c20, 0x2b935: 0x6d2e1e20, 0x2b936: 0x6d5b3220, 0x2b937: 0x6d5b3420,\n\t0x2b938: 0x6d5b3620, 0x2b939: 0x6d5b3820, 0x2b93a: 0x6d5b3a20, 0x2b93b: 0x6d5b3c20,\n\t0x2b93c: 0x6d5b3e20, 0x2b93d: 0x6d5b4020, 0x2b93e: 0x6d5b4220, 0x2b93f: 0x6d5b4420,\n\t// Block 0xae5, offset 0x2b940\n\t0x2b940: 0x6d5b4620, 0x2b941: 0x6d5b4820, 0x2b942: 0x6d85c620, 0x2b943: 0x6d85c820,\n\t0x2b944: 0x6d85ca20, 0x2b945: 0x6d85cc20, 0x2b946: 0x6d85ce20, 0x2b947: 0x6d85d020,\n\t0x2b948: 0x6d85d220, 0x2b949: 0x6daa7020, 0x2b94a: 0x6daa7220, 0x2b94b: 0x6dcb2020,\n\t0x2b94c: 0x6dcb2220, 0x2b94d: 0x6dcb2420, 0x2b94e: 0x6dcb2620, 0x2b94f: 0x6dcb2820,\n\t0x2b950: 0x6dcb2a20, 0x2b951: 0x6de69620, 0x2b952: 0x6de69820, 0x2b953: 0x6de69a20,\n\t0x2b954: 0x6dfd4a20, 0x2b955: 0x6e101e20, 0x2b956: 0x6e102020, 0x2b957: 0x6e102220,\n\t0x2b958: 0x6e1ee820, 0x2b959: 0x6e2a4820, 0x2b95a: 0x6e32ee20, 0x2b95b: 0x6e32f020,\n\t0x2b95c: 0x6e42c820, 0x2b95d: 0x6c24f820, 0x2b95e: 0x6c590c20, 0x2b95f: 0x6c7baa20,\n\t0x2b960: 0x6ca48e20, 0x2b961: 0x6ca49020, 0x2b962: 0x6d00ba20, 0x2b963: 0x6d2ea820,\n\t0x2b964: 0x6d2eaa20, 0x2b965: 0x6d5bdc20, 0x2b966: 0x6d865220, 0x2b967: 0x6de6dc20,\n\t0x2b968: 0x6e104420, 0x2b969: 0x6e393020, 0x2b96a: 0x6c3c5420, 0x2b96b: 0x6c593a20,\n\t0x2b96c: 0x6c593c20, 0x2b96d: 0x6c7bd420, 0x2b96e: 0x6c7bd620, 0x2b96f: 0x6ca4a820,\n\t0x2b970: 0x6ca4aa20, 0x2b971: 0x6cd2ee20, 0x2b972: 0x6d00e420, 0x2b973: 0x6d00e620,\n\t0x2b974: 0x6d2ec820, 0x2b975: 0x6d2eca20, 0x2b976: 0x6d5bf820, 0x2b977: 0x6d5bfa20,\n\t0x2b978: 0x6d866420, 0x2b979: 0x6dcb9220, 0x2b97a: 0x6dfd8020, 0x2b97b: 0x6c3c6620,\n\t0x2b97c: 0x6c594e20, 0x2b97d: 0x6c595020, 0x2b97e: 0x6c7bf020, 0x2b97f: 0x6c7bf220,\n\t// Block 0xae6, offset 0x2b980\n\t0x2b980: 0x6c7bf420, 0x2b981: 0x6ca4be20, 0x2b982: 0x6ca4c020, 0x2b983: 0x6cd30a20,\n\t0x2b984: 0x6d010820, 0x2b985: 0x6d010a20, 0x2b986: 0x6d2ef220, 0x2b987: 0x6d867e20,\n\t0x2b988: 0x6d868020, 0x2b989: 0x6dab1e20, 0x2b98a: 0x6de6fa20, 0x2b98b: 0x6e105420,\n\t0x2b98c: 0x6e1f0820, 0x2b98d: 0x6e443e20, 0x2b98e: 0x6c251420, 0x2b98f: 0x6c251620,\n\t0x2b990: 0x6c3c7620, 0x2b991: 0x6c3c7820, 0x2b992: 0x6c3c7a20, 0x2b993: 0x6c3c7c20,\n\t0x2b994: 0x6c3c7e20, 0x2b995: 0x6c597420, 0x2b996: 0x6c597620, 0x2b997: 0x6c597820,\n\t0x2b998: 0x6c597a20, 0x2b999: 0x6c597c20, 0x2b99a: 0x6c597e20, 0x2b99b: 0x6c598020,\n\t0x2b99c: 0x6c598220, 0x2b99d: 0x6c598420, 0x2b99e: 0x6c598620, 0x2b99f: 0x6c7c2e20,\n\t0x2b9a0: 0x6c7c3020, 0x2b9a1: 0x6c7c3220, 0x2b9a2: 0x6c7c3420, 0x2b9a3: 0x6c7c3620,\n\t0x2b9a4: 0x6c7c3820, 0x2b9a5: 0x6c7c3a20, 0x2b9a6: 0x6c7c3c20, 0x2b9a7: 0x6ca4f220,\n\t0x2b9a8: 0x6ca4f420, 0x2b9a9: 0x6ca4f620, 0x2b9aa: 0x6ca4f820, 0x2b9ab: 0x6ca4fa20,\n\t0x2b9ac: 0x6ca4fc20, 0x2b9ad: 0x6ca4fe20, 0x2b9ae: 0x6ca50020, 0x2b9af: 0x6cd32c20,\n\t0x2b9b0: 0x6cd32e20, 0x2b9b1: 0x6cd33020, 0x2b9b2: 0x6cd33220, 0x2b9b3: 0x6cd33420,\n\t0x2b9b4: 0x6cd33620, 0x2b9b5: 0x6cd33820, 0x2b9b6: 0x6cd33a20, 0x2b9b7: 0x6cd33c20,\n\t0x2b9b8: 0x6cd33e20, 0x2b9b9: 0x6cd34020, 0x2b9ba: 0x6cd34220, 0x2b9bb: 0x6cd34420,\n\t0x2b9bc: 0x6cd34620, 0x2b9bd: 0x6cd34820, 0x2b9be: 0x6cd34a20, 0x2b9bf: 0x6cd34c20,\n\t// Block 0xae7, offset 0x2b9c0\n\t0x2b9c0: 0x6cd34e20, 0x2b9c1: 0x6d013020, 0x2b9c2: 0x6d013220, 0x2b9c3: 0x6d013420,\n\t0x2b9c4: 0x6d013620, 0x2b9c5: 0x6d013820, 0x2b9c6: 0x6d013a20, 0x2b9c7: 0x6d013c20,\n\t0x2b9c8: 0x6d013e20, 0x2b9c9: 0x6d014020, 0x2b9ca: 0x6d2f0820, 0x2b9cb: 0x6d2f0a20,\n\t0x2b9cc: 0x6d2f0c20, 0x2b9cd: 0x6d2f0e20, 0x2b9ce: 0x6d2f1020, 0x2b9cf: 0x6d2f1220,\n\t0x2b9d0: 0x6d2f1420, 0x2b9d1: 0x6d2f1620, 0x2b9d2: 0x6d2f1820, 0x2b9d3: 0x6d2f1a20,\n\t0x2b9d4: 0x6d2f1c20, 0x2b9d5: 0x6d2f1e20, 0x2b9d6: 0x6d2f2020, 0x2b9d7: 0x6d5c2820,\n\t0x2b9d8: 0x6d5c2a20, 0x2b9d9: 0x6d5c2c20, 0x2b9da: 0x6d5c2e20, 0x2b9db: 0x6d5c3020,\n\t0x2b9dc: 0x6d5c3220, 0x2b9dd: 0x6d5c3420, 0x2b9de: 0x6d5c3620, 0x2b9df: 0x6d5c3820,\n\t0x2b9e0: 0x6d5c3a20, 0x2b9e1: 0x6d5c3c20, 0x2b9e2: 0x6d86ae20, 0x2b9e3: 0x6d86b020,\n\t0x2b9e4: 0x6d86b220, 0x2b9e5: 0x6d86b420, 0x2b9e6: 0x6d86b620, 0x2b9e7: 0x6d86b820,\n\t0x2b9e8: 0x6d86ba20, 0x2b9e9: 0x6d86bc20, 0x2b9ea: 0x6d86be20, 0x2b9eb: 0x6dab4e20,\n\t0x2b9ec: 0x6dab5020, 0x2b9ed: 0x6dab5220, 0x2b9ee: 0x6dab5420, 0x2b9ef: 0x6dab5620,\n\t0x2b9f0: 0x6dab5820, 0x2b9f1: 0x6dab5a20, 0x2b9f2: 0x6dab5c20, 0x2b9f3: 0x6dab5e20,\n\t0x2b9f4: 0x6dcbbe20, 0x2b9f5: 0x6dcbc020, 0x2b9f6: 0x6dcbc220, 0x2b9f7: 0x6dcbc420,\n\t0x2b9f8: 0x6dcbc620, 0x2b9f9: 0x6dcbc820, 0x2b9fa: 0x6dcbca20, 0x2b9fb: 0x6dfda620,\n\t0x2b9fc: 0x6dfda820, 0x2b9fd: 0x6dfdaa20, 0x2b9fe: 0x6dfdac20, 0x2b9ff: 0x6e105c20,\n\t// Block 0xae8, offset 0x2ba00\n\t0x2ba00: 0x6e105e20, 0x2ba01: 0x6e1f1620, 0x2ba02: 0x6e2a6820, 0x2ba03: 0x6e2a6a20,\n\t0x2ba04: 0x6e393820, 0x2ba05: 0x6e452e20, 0x2ba06: 0x6c3cb220, 0x2ba07: 0x6c5a1a20,\n\t0x2ba08: 0x6ca59420, 0x2ba09: 0x6d2fce20, 0x2ba0a: 0x6dabea20, 0x2ba0b: 0x6dabec20,\n\t0x2ba0c: 0x6dabee20, 0x2ba0d: 0x6dfde020, 0x2ba0e: 0x6e332220, 0x2ba0f: 0x6c7ce420,\n\t0x2ba10: 0x6c7ce620, 0x2ba11: 0x6c7cfc20, 0x2ba12: 0x6ca59c20, 0x2ba13: 0x6cd40a20,\n\t0x2ba14: 0x6d020620, 0x2ba15: 0x6d2fe820, 0x2ba16: 0x6c13ee20, 0x2ba17: 0x6c253820,\n\t0x2ba18: 0x6c3cbc20, 0x2ba19: 0x6c3cbe20, 0x2ba1a: 0x6c5a3c20, 0x2ba1b: 0x6c5a3e20,\n\t0x2ba1c: 0x6c5a4020, 0x2ba1d: 0x6c5a4220, 0x2ba1e: 0x6c5a4420, 0x2ba1f: 0x6c7cfe20,\n\t0x2ba20: 0x6c7d0020, 0x2ba21: 0x6c7d0220, 0x2ba22: 0x6c7d0420, 0x2ba23: 0x6c7d0620,\n\t0x2ba24: 0x6c7d0820, 0x2ba25: 0x6c7d0a20, 0x2ba26: 0x6c7d0c20, 0x2ba27: 0x6c7d0e20,\n\t0x2ba28: 0x6c7d1020, 0x2ba29: 0x6ca5d020, 0x2ba2a: 0x6ca5d220, 0x2ba2b: 0x6ca5d420,\n\t0x2ba2c: 0x6ca5d620, 0x2ba2d: 0x6ca5d820, 0x2ba2e: 0x6ca5da20, 0x2ba2f: 0x6ca5dc20,\n\t0x2ba30: 0x6cd42620, 0x2ba31: 0x6cd42820, 0x2ba32: 0x6cd42a20, 0x2ba33: 0x6cd42c20,\n\t0x2ba34: 0x6cd42e20, 0x2ba35: 0x6cd43020, 0x2ba36: 0x6cd43220, 0x2ba37: 0x6d023020,\n\t0x2ba38: 0x6d023220, 0x2ba39: 0x6d023420, 0x2ba3a: 0x6d023620, 0x2ba3b: 0x6d023820,\n\t0x2ba3c: 0x6d023a20, 0x2ba3d: 0x6d023c20, 0x2ba3e: 0x6d023e20, 0x2ba3f: 0x6d024020,\n\t// Block 0xae9, offset 0x2ba40\n\t0x2ba40: 0x6d024220, 0x2ba41: 0x6d024420, 0x2ba42: 0x6d024620, 0x2ba43: 0x6d024820,\n\t0x2ba44: 0x6d024a20, 0x2ba45: 0x6d024c20, 0x2ba46: 0x6d024e20, 0x2ba47: 0x6d025020,\n\t0x2ba48: 0x6d2ffc20, 0x2ba49: 0x6d2ffe20, 0x2ba4a: 0x6d300020, 0x2ba4b: 0x6d300220,\n\t0x2ba4c: 0x6d300420, 0x2ba4d: 0x6d300620, 0x2ba4e: 0x6d300820, 0x2ba4f: 0x6d300a20,\n\t0x2ba50: 0x6d300c20, 0x2ba51: 0x6d5cf820, 0x2ba52: 0x6d5cfa20, 0x2ba53: 0x6d5cfc20,\n\t0x2ba54: 0x6d5cfe20, 0x2ba55: 0x6d5d0020, 0x2ba56: 0x6d5d0220, 0x2ba57: 0x6d5d0420,\n\t0x2ba58: 0x6d876a20, 0x2ba59: 0x6d876c20, 0x2ba5a: 0x6d876e20, 0x2ba5b: 0x6d877020,\n\t0x2ba5c: 0x6d877220, 0x2ba5d: 0x6d877420, 0x2ba5e: 0x6d877620, 0x2ba5f: 0x6dac0a20,\n\t0x2ba60: 0x6d877820, 0x2ba61: 0x6dac0c20, 0x2ba62: 0x6dac0e20, 0x2ba63: 0x6dac1020,\n\t0x2ba64: 0x6dac1220, 0x2ba65: 0x6dac1420, 0x2ba66: 0x6dac1620, 0x2ba67: 0x6dac1820,\n\t0x2ba68: 0x6dac1a20, 0x2ba69: 0x6dcc4220, 0x2ba6a: 0x6dcc4420, 0x2ba6b: 0x6dcc4620,\n\t0x2ba6c: 0x6dcc4820, 0x2ba6d: 0x6dcc4a20, 0x2ba6e: 0x6dcc4c20, 0x2ba6f: 0x6dcc4e20,\n\t0x2ba70: 0x6de76a20, 0x2ba71: 0x6dfdec20, 0x2ba72: 0x6dfdee20, 0x2ba73: 0x6dfdf020,\n\t0x2ba74: 0x6e108c20, 0x2ba75: 0x6e108e20, 0x2ba76: 0x6e109020, 0x2ba77: 0x6e109220,\n\t0x2ba78: 0x6e1f3420, 0x2ba79: 0x6e1f3620, 0x2ba7a: 0x6e332420, 0x2ba7b: 0x6e3d9620,\n\t0x2ba7c: 0x6c254c20, 0x2ba7d: 0x6c5abe20, 0x2ba7e: 0x6c5ac020, 0x2ba7f: 0x6c5ac220,\n\t// Block 0xaea, offset 0x2ba80\n\t0x2ba80: 0x6c5ac420, 0x2ba81: 0x6c7dbe20, 0x2ba82: 0x6c7dc020, 0x2ba83: 0x6c7dc220,\n\t0x2ba84: 0x6ca68c20, 0x2ba85: 0x6ca68e20, 0x2ba86: 0x6ca69020, 0x2ba87: 0x6cd4b820,\n\t0x2ba88: 0x6cd4ba20, 0x2ba89: 0x6cd4bc20, 0x2ba8a: 0x6cd4be20, 0x2ba8b: 0x6d030820,\n\t0x2ba8c: 0x6d030a20, 0x2ba8d: 0x6d030c20, 0x2ba8e: 0x6d030e20, 0x2ba8f: 0x6d031020,\n\t0x2ba90: 0x6d031220, 0x2ba91: 0x6d031420, 0x2ba92: 0x6d031620, 0x2ba93: 0x6d30b420,\n\t0x2ba94: 0x6d30b620, 0x2ba95: 0x6d30b820, 0x2ba96: 0x6d30ba20, 0x2ba97: 0x6d30bc20,\n\t0x2ba98: 0x6d5d8820, 0x2ba99: 0x6d5d8a20, 0x2ba9a: 0x6d87f420, 0x2ba9b: 0x6d87f620,\n\t0x2ba9c: 0x6d87f820, 0x2ba9d: 0x6d87fa20, 0x2ba9e: 0x6d87fc20, 0x2ba9f: 0x6dac9e20,\n\t0x2baa0: 0x6dcca020, 0x2baa1: 0x6dcca220, 0x2baa2: 0x6de7aa20, 0x2baa3: 0x6dfe3820,\n\t0x2baa4: 0x6e10bc20, 0x2baa5: 0x6e444820, 0x2baa6: 0x6c256420, 0x2baa7: 0x6c256620,\n\t0x2baa8: 0x6c3d2e20, 0x2baa9: 0x6c3d3020, 0x2baaa: 0x6c3d3220, 0x2baab: 0x6c3d3420,\n\t0x2baac: 0x6c3d3620, 0x2baad: 0x6c3d3820, 0x2baae: 0x6c5b2e20, 0x2baaf: 0x6c5b3020,\n\t0x2bab0: 0x6c5b3220, 0x2bab1: 0x6c5b3420, 0x2bab2: 0x6c5b3620, 0x2bab3: 0x6c5b3820,\n\t0x2bab4: 0x6c5b3a20, 0x2bab5: 0x6c5b3c20, 0x2bab6: 0x6c7e3020, 0x2bab7: 0x6c7e3220,\n\t0x2bab8: 0x6c7e3420, 0x2bab9: 0x6c7e3620, 0x2baba: 0x6ca6f820, 0x2babb: 0x6ca6fa20,\n\t0x2babc: 0x6ca6fc20, 0x2babd: 0x6ca6fe20, 0x2babe: 0x6ca70020, 0x2babf: 0x6ca70220,\n\t// Block 0xaeb, offset 0x2bac0\n\t0x2bac0: 0x6ca70420, 0x2bac1: 0x6ca70620, 0x2bac2: 0x6ca70820, 0x2bac3: 0x6ca70a20,\n\t0x2bac4: 0x6ca70c20, 0x2bac5: 0x6ca70e20, 0x2bac6: 0x6ca71020, 0x2bac7: 0x6ca71220,\n\t0x2bac8: 0x6ca71420, 0x2bac9: 0x6ca71620, 0x2baca: 0x6ca71820, 0x2bacb: 0x6cd52e20,\n\t0x2bacc: 0x6cd53020, 0x2bacd: 0x6cd53220, 0x2bace: 0x6cd53420, 0x2bacf: 0x6cd53620,\n\t0x2bad0: 0x6cd53820, 0x2bad1: 0x6cd53a20, 0x2bad2: 0x6cd53c20, 0x2bad3: 0x6cd53e20,\n\t0x2bad4: 0x6d037c20, 0x2bad5: 0x6d037e20, 0x2bad6: 0x6d038020, 0x2bad7: 0x6d038220,\n\t0x2bad8: 0x6d038420, 0x2bad9: 0x6d038620, 0x2bada: 0x6d038820, 0x2badb: 0x6d038a20,\n\t0x2badc: 0x6d038c20, 0x2badd: 0x6d038e20, 0x2bade: 0x6d039020, 0x2badf: 0x6d039220,\n\t0x2bae0: 0x6d311a20, 0x2bae1: 0x6d311c20, 0x2bae2: 0x6d311e20, 0x2bae3: 0x6d312020,\n\t0x2bae4: 0x6d312220, 0x2bae5: 0x6d312420, 0x2bae6: 0x6d312620, 0x2bae7: 0x6d312820,\n\t0x2bae8: 0x6d312a20, 0x2bae9: 0x6d312c20, 0x2baea: 0x6d312e20, 0x2baeb: 0x6d313020,\n\t0x2baec: 0x6d5dd820, 0x2baed: 0x6d5dda20, 0x2baee: 0x6d5ddc20, 0x2baef: 0x6d5dde20,\n\t0x2baf0: 0x6d5de020, 0x2baf1: 0x6d5de220, 0x2baf2: 0x6d5de420, 0x2baf3: 0x6d5de620,\n\t0x2baf4: 0x6d5de820, 0x2baf5: 0x6d5dea20, 0x2baf6: 0x6d5dec20, 0x2baf7: 0x6d883420,\n\t0x2baf8: 0x6d883620, 0x2baf9: 0x6d883820, 0x2bafa: 0x6d883a20, 0x2bafb: 0x6d883c20,\n\t0x2bafc: 0x6d883e20, 0x2bafd: 0x6d884020, 0x2bafe: 0x6dacce20, 0x2baff: 0x6dacd020,\n\t// Block 0xaec, offset 0x2bb00\n\t0x2bb00: 0x6dacd220, 0x2bb01: 0x6dccc020, 0x2bb02: 0x6dccc220, 0x2bb03: 0x6dccc420,\n\t0x2bb04: 0x6dccc620, 0x2bb05: 0x6dccc820, 0x2bb06: 0x6dccca20, 0x2bb07: 0x6dcccc20,\n\t0x2bb08: 0x6dfe4620, 0x2bb09: 0x6dfe4820, 0x2bb0a: 0x6e10ca20, 0x2bb0b: 0x6e10cc20,\n\t0x2bb0c: 0x6e10ce20, 0x2bb0d: 0x6e10d020, 0x2bb0e: 0x6e1f6620, 0x2bb0f: 0x6e1f6820,\n\t0x2bb10: 0x6e453020, 0x2bb11: 0x6c257a20, 0x2bb12: 0x6c3d6820, 0x2bb13: 0x6c5b9220,\n\t0x2bb14: 0x6c5b9420, 0x2bb15: 0x6c5b9620, 0x2bb16: 0x6c5b9820, 0x2bb17: 0x6c7ea620,\n\t0x2bb18: 0x6c7ea820, 0x2bb19: 0x6c7eaa20, 0x2bb1a: 0x6ca77820, 0x2bb1b: 0x6ca77a20,\n\t0x2bb1c: 0x6ca77c20, 0x2bb1d: 0x6ca77e20, 0x2bb1e: 0x6ca78020, 0x2bb1f: 0x6ca78220,\n\t0x2bb20: 0x6ca78420, 0x2bb21: 0x6cd5a220, 0x2bb22: 0x6cd5a420, 0x2bb23: 0x6cd5a620,\n\t0x2bb24: 0x6cd5a820, 0x2bb25: 0x6cd5aa20, 0x2bb26: 0x6d042a20, 0x2bb27: 0x6d042c20,\n\t0x2bb28: 0x6d042e20, 0x2bb29: 0x6d043020, 0x2bb2a: 0x6d31c420, 0x2bb2b: 0x6d31c620,\n\t0x2bb2c: 0x6d5e6a20, 0x2bb2d: 0x6d5e6c20, 0x2bb2e: 0x6d5e6e20, 0x2bb2f: 0x6d88bc20,\n\t0x2bb30: 0x6d88be20, 0x2bb31: 0x6d88c020, 0x2bb32: 0x6d88c220, 0x2bb33: 0x6d88c420,\n\t0x2bb34: 0x6d88c620, 0x2bb35: 0x6dad4220, 0x2bb36: 0x6dad4420, 0x2bb37: 0x6dad4620,\n\t0x2bb38: 0x6dad4820, 0x2bb39: 0x6dad4a20, 0x2bb3a: 0x6dad4c20, 0x2bb3b: 0x6dad4e20,\n\t0x2bb3c: 0x6dcd1c20, 0x2bb3d: 0x6dcd1e20, 0x2bb3e: 0x6de7f220, 0x2bb3f: 0x6de7f420,\n\t// Block 0xaed, offset 0x2bb40\n\t0x2bb40: 0x6dfe8420, 0x2bb41: 0x6e1f7620, 0x2bb42: 0x6c140e20, 0x2bb43: 0x6c3d8c20,\n\t0x2bb44: 0x6c3d8e20, 0x2bb45: 0x6c5bd220, 0x2bb46: 0x6c5bd420, 0x2bb47: 0x6c7ef620,\n\t0x2bb48: 0x6c7ef820, 0x2bb49: 0x6c7efa20, 0x2bb4a: 0x6c7efc20, 0x2bb4b: 0x6ca7c620,\n\t0x2bb4c: 0x6cd60a20, 0x2bb4d: 0x6cd60c20, 0x2bb4e: 0x6d048620, 0x2bb4f: 0x6d048820,\n\t0x2bb50: 0x6d048a20, 0x2bb51: 0x6d048c20, 0x2bb52: 0x6d892020, 0x2bb53: 0x6dad8820,\n\t0x2bb54: 0x6dcd3820, 0x2bb55: 0x6de80620, 0x2bb56: 0x6c5bf620, 0x2bb57: 0x6c7f3220,\n\t0x2bb58: 0x6c7f3420, 0x2bb59: 0x6c7f3620, 0x2bb5a: 0x6c7f3820, 0x2bb5b: 0x6c7f3a20,\n\t0x2bb5c: 0x6c7f3c20, 0x2bb5d: 0x6c7f3e20, 0x2bb5e: 0x6ca7e820, 0x2bb5f: 0x6ca7ea20,\n\t0x2bb60: 0x6ca7ec20, 0x2bb61: 0x6ca7ee20, 0x2bb62: 0x6ca7f020, 0x2bb63: 0x6ca7f220,\n\t0x2bb64: 0x6ca7f420, 0x2bb65: 0x6ca7f620, 0x2bb66: 0x6ca7f820, 0x2bb67: 0x6cd63620,\n\t0x2bb68: 0x6cd63820, 0x2bb69: 0x6cd63a20, 0x2bb6a: 0x6cd63c20, 0x2bb6b: 0x6cd63e20,\n\t0x2bb6c: 0x6cd64020, 0x2bb6d: 0x6cd64220, 0x2bb6e: 0x6cd64420, 0x2bb6f: 0x6cd64620,\n\t0x2bb70: 0x6cd64820, 0x2bb71: 0x6cd64a20, 0x2bb72: 0x6cd64c20, 0x2bb73: 0x6cd64e20,\n\t0x2bb74: 0x6cd65020, 0x2bb75: 0x6d04b620, 0x2bb76: 0x6d04b820, 0x2bb77: 0x6d04ba20,\n\t0x2bb78: 0x6d04bc20, 0x2bb79: 0x6d04be20, 0x2bb7a: 0x6d04c020, 0x2bb7b: 0x6d04c220,\n\t0x2bb7c: 0x6d04c420, 0x2bb7d: 0x6d04c620, 0x2bb7e: 0x6d04c820, 0x2bb7f: 0x6d04ca20,\n\t// Block 0xaee, offset 0x2bb80\n\t0x2bb80: 0x6d04cc20, 0x2bb81: 0x6d323220, 0x2bb82: 0x6d323420, 0x2bb83: 0x6d323620,\n\t0x2bb84: 0x6d323820, 0x2bb85: 0x6d323a20, 0x2bb86: 0x6d323c20, 0x2bb87: 0x6d323e20,\n\t0x2bb88: 0x6d324020, 0x2bb89: 0x6d324220, 0x2bb8a: 0x6d324420, 0x2bb8b: 0x6d324620,\n\t0x2bb8c: 0x6d324820, 0x2bb8d: 0x6d324a20, 0x2bb8e: 0x6d5ecc20, 0x2bb8f: 0x6d5ece20,\n\t0x2bb90: 0x6d5ed020, 0x2bb91: 0x6d5ed220, 0x2bb92: 0x6d5ed420, 0x2bb93: 0x6d5ed620,\n\t0x2bb94: 0x6d5ed820, 0x2bb95: 0x6d5eda20, 0x2bb96: 0x6d5edc20, 0x2bb97: 0x6d5ede20,\n\t0x2bb98: 0x6d5ee020, 0x2bb99: 0x6d5ee220, 0x2bb9a: 0x6d5ee420, 0x2bb9b: 0x6d5ee620,\n\t0x2bb9c: 0x6d5ee820, 0x2bb9d: 0x6d5eea20, 0x2bb9e: 0x6d5eec20, 0x2bb9f: 0x6d5eee20,\n\t0x2bba0: 0x6d5ef020, 0x2bba1: 0x6d5ef220, 0x2bba2: 0x6d5ef420, 0x2bba3: 0x6d5ef620,\n\t0x2bba4: 0x6d5ef820, 0x2bba5: 0x6d5efa20, 0x2bba6: 0x6d5efc20, 0x2bba7: 0x6d5efe20,\n\t0x2bba8: 0x6d5f0020, 0x2bba9: 0x6d5f0220, 0x2bbaa: 0x6d892e20, 0x2bbab: 0x6d893020,\n\t0x2bbac: 0x6d893220, 0x2bbad: 0x6d893420, 0x2bbae: 0x6d893620, 0x2bbaf: 0x6d893820,\n\t0x2bbb0: 0x6d893a20, 0x2bbb1: 0x6d893c20, 0x2bbb2: 0x6d893e20, 0x2bbb3: 0x6d894020,\n\t0x2bbb4: 0x6d894220, 0x2bbb5: 0x6d894420, 0x2bbb6: 0x6d894620, 0x2bbb7: 0x6d894820,\n\t0x2bbb8: 0x6dada820, 0x2bbb9: 0x6dadaa20, 0x2bbba: 0x6dadac20, 0x2bbbb: 0x6dadae20,\n\t0x2bbbc: 0x6dadb020, 0x2bbbd: 0x6dadb220, 0x2bbbe: 0x6dadb420, 0x2bbbf: 0x6dadb620,\n\t// Block 0xaef, offset 0x2bbc0\n\t0x2bbc0: 0x6dadb820, 0x2bbc1: 0x6dadba20, 0x2bbc2: 0x6dadbc20, 0x2bbc3: 0x6dadbe20,\n\t0x2bbc4: 0x6dadc020, 0x2bbc5: 0x6dadc220, 0x2bbc6: 0x6dadc420, 0x2bbc7: 0x6dadc620,\n\t0x2bbc8: 0x6dcd4c20, 0x2bbc9: 0x6dcd4e20, 0x2bbca: 0x6dcd5020, 0x2bbcb: 0x6dcd5220,\n\t0x2bbcc: 0x6dcd5420, 0x2bbcd: 0x6dcd5620, 0x2bbce: 0x6dcd5820, 0x2bbcf: 0x6de81420,\n\t0x2bbd0: 0x6dcd5a20, 0x2bbd1: 0x6dcd5c20, 0x2bbd2: 0x6dcd5e20, 0x2bbd3: 0x6dcd6020,\n\t0x2bbd4: 0x6dcd6220, 0x2bbd5: 0x6dcd6420, 0x2bbd6: 0x6dcd6620, 0x2bbd7: 0x6dcd6820,\n\t0x2bbd8: 0x6dcd6a20, 0x2bbd9: 0x6dcd6c20, 0x2bbda: 0x6dcd6e20, 0x2bbdb: 0x6de81620,\n\t0x2bbdc: 0x6de81820, 0x2bbdd: 0x6de81a20, 0x2bbde: 0x6de81c20, 0x2bbdf: 0x6de81e20,\n\t0x2bbe0: 0x6de82020, 0x2bbe1: 0x6de82220, 0x2bbe2: 0x6de82420, 0x2bbe3: 0x6dcd7020,\n\t0x2bbe4: 0x6de82620, 0x2bbe5: 0x6dfeaa20, 0x2bbe6: 0x6e110820, 0x2bbe7: 0x6e110a20,\n\t0x2bbe8: 0x6e110c20, 0x2bbe9: 0x6e110e20, 0x2bbea: 0x6e111020, 0x2bbeb: 0x6e111220,\n\t0x2bbec: 0x6e111420, 0x2bbed: 0x6e111620, 0x2bbee: 0x6e1f8620, 0x2bbef: 0x6e1f8820,\n\t0x2bbf0: 0x6e1f8a20, 0x2bbf1: 0x6e1f8c20, 0x2bbf2: 0x6e2ac620, 0x2bbf3: 0x6e2ac820,\n\t0x2bbf4: 0x6e2aca20, 0x2bbf5: 0x6e2e7820, 0x2bbf6: 0x6e335220, 0x2bbf7: 0x6e3dac20,\n\t0x2bbf8: 0x6e408e20, 0x2bbf9: 0x6e453220, 0x2bbfa: 0x6c5c2e20, 0x2bbfb: 0x6c7faa20,\n\t0x2bbfc: 0x6c7fac20, 0x2bbfd: 0x6ca89220, 0x2bbfe: 0x6ca89420, 0x2bbff: 0x6ca89620,\n\t// Block 0xaf0, offset 0x2bc00\n\t0x2bc00: 0x6ca89820, 0x2bc01: 0x6cd6e020, 0x2bc02: 0x6cd6e220, 0x2bc03: 0x6cd6e420,\n\t0x2bc04: 0x6cd6e620, 0x2bc05: 0x6cd6e820, 0x2bc06: 0x6cd6ea20, 0x2bc07: 0x6d059820,\n\t0x2bc08: 0x6d059a20, 0x2bc09: 0x6d059c20, 0x2bc0a: 0x6d059e20, 0x2bc0b: 0x6d05a020,\n\t0x2bc0c: 0x6d05a220, 0x2bc0d: 0x6d333820, 0x2bc0e: 0x6d333a20, 0x2bc0f: 0x6d333c20,\n\t0x2bc10: 0x6d333e20, 0x2bc11: 0x6d334020, 0x2bc12: 0x6d334220, 0x2bc13: 0x6d5fee20,\n\t0x2bc14: 0x6d5ff020, 0x2bc15: 0x6d5ff220, 0x2bc16: 0x6d5ff420, 0x2bc17: 0x6d5ff620,\n\t0x2bc18: 0x6d5ff820, 0x2bc19: 0x6d5ffa20, 0x2bc1a: 0x6d8a5220, 0x2bc1b: 0x6d8a5420,\n\t0x2bc1c: 0x6daec620, 0x2bc1d: 0x6daec820, 0x2bc1e: 0x6daeca20, 0x2bc1f: 0x6daecc20,\n\t0x2bc20: 0x6daece20, 0x2bc21: 0x6daed020, 0x2bc22: 0x6daed220, 0x2bc23: 0x6dce6420,\n\t0x2bc24: 0x6dce6620, 0x2bc25: 0x6dce6820, 0x2bc26: 0x6dce6a20, 0x2bc27: 0x6dce6c20,\n\t0x2bc28: 0x6dce6e20, 0x2bc29: 0x6dce7020, 0x2bc2a: 0x6de8c220, 0x2bc2b: 0x6de8c420,\n\t0x2bc2c: 0x6de8c620, 0x2bc2d: 0x6dff1c20, 0x2bc2e: 0x6dff1e20, 0x2bc2f: 0x6e118a20,\n\t0x2bc30: 0x6e1fe220, 0x2bc31: 0x6e2b0420, 0x2bc32: 0x6e2b0620, 0x2bc33: 0x6e398420,\n\t0x2bc34: 0x6e398620, 0x2bc35: 0x6c3dba20, 0x2bc36: 0x6c5c5e20, 0x2bc37: 0x6c5c6020,\n\t0x2bc38: 0x6c5c6220, 0x2bc39: 0x6c5c6420, 0x2bc3a: 0x6c7fee20, 0x2bc3b: 0x6c7ff020,\n\t0x2bc3c: 0x6c7ff220, 0x2bc3d: 0x6c7ff420, 0x2bc3e: 0x6c7ff620, 0x2bc3f: 0x6c7ff820,\n\t// Block 0xaf1, offset 0x2bc40\n\t0x2bc40: 0x6c7ffa20, 0x2bc41: 0x6c7ffc20, 0x2bc42: 0x6c7ffe20, 0x2bc43: 0x6c800020,\n\t0x2bc44: 0x6c800220, 0x2bc45: 0x6c800420, 0x2bc46: 0x6c800620, 0x2bc47: 0x6c800820,\n\t0x2bc48: 0x6ca8f220, 0x2bc49: 0x6ca8f420, 0x2bc4a: 0x6ca8f620, 0x2bc4b: 0x6ca8f820,\n\t0x2bc4c: 0x6ca8fa20, 0x2bc4d: 0x6ca8fc20, 0x2bc4e: 0x6ca8fe20, 0x2bc4f: 0x6ca90020,\n\t0x2bc50: 0x6ca90220, 0x2bc51: 0x6ca90420, 0x2bc52: 0x6ca90620, 0x2bc53: 0x6ca90820,\n\t0x2bc54: 0x6ca90a20, 0x2bc55: 0x6cd74620, 0x2bc56: 0x6cd74820, 0x2bc57: 0x6cd74a20,\n\t0x2bc58: 0x6cd74c20, 0x2bc59: 0x6cd74e20, 0x2bc5a: 0x6cd75020, 0x2bc5b: 0x6cd75220,\n\t0x2bc5c: 0x6cd75420, 0x2bc5d: 0x6cd75620, 0x2bc5e: 0x6cd75820, 0x2bc5f: 0x6d060420,\n\t0x2bc60: 0x6d060620, 0x2bc61: 0x6d060820, 0x2bc62: 0x6d060a20, 0x2bc63: 0x6d060c20,\n\t0x2bc64: 0x6d060e20, 0x2bc65: 0x6d061020, 0x2bc66: 0x6d061220, 0x2bc67: 0x6d33b820,\n\t0x2bc68: 0x6d33ba20, 0x2bc69: 0x6d33bc20, 0x2bc6a: 0x6d33be20, 0x2bc6b: 0x6d33c020,\n\t0x2bc6c: 0x6d33c220, 0x2bc6d: 0x6d33c420, 0x2bc6e: 0x6d33c620, 0x2bc6f: 0x6d33c820,\n\t0x2bc70: 0x6d33ca20, 0x2bc71: 0x6d33cc20, 0x2bc72: 0x6d33ce20, 0x2bc73: 0x6d606420,\n\t0x2bc74: 0x6d606620, 0x2bc75: 0x6d606820, 0x2bc76: 0x6d606a20, 0x2bc77: 0x6d606c20,\n\t0x2bc78: 0x6d606e20, 0x2bc79: 0x6d607020, 0x2bc7a: 0x6d607220, 0x2bc7b: 0x6d607420,\n\t0x2bc7c: 0x6d607620, 0x2bc7d: 0x6d607820, 0x2bc7e: 0x6d607a20, 0x2bc7f: 0x6d607c20,\n\t// Block 0xaf2, offset 0x2bc80\n\t0x2bc80: 0x6d607e20, 0x2bc81: 0x6d608020, 0x2bc82: 0x6d608220, 0x2bc83: 0x6d608420,\n\t0x2bc84: 0x6d608620, 0x2bc85: 0x6d8aac20, 0x2bc86: 0x6d8aae20, 0x2bc87: 0x6d8ab020,\n\t0x2bc88: 0x6d8ab220, 0x2bc89: 0x6d8ab420, 0x2bc8a: 0x6d8ab620, 0x2bc8b: 0x6d8ab820,\n\t0x2bc8c: 0x6daf2020, 0x2bc8d: 0x6daf2220, 0x2bc8e: 0x6daf2420, 0x2bc8f: 0x6daf2620,\n\t0x2bc90: 0x6daf2820, 0x2bc91: 0x6daf2a20, 0x2bc92: 0x6daf2c20, 0x2bc93: 0x6daf2e20,\n\t0x2bc94: 0x6daf3020, 0x2bc95: 0x6daf3220, 0x2bc96: 0x6dcec020, 0x2bc97: 0x6dcec220,\n\t0x2bc98: 0x6dcec420, 0x2bc99: 0x6dcec620, 0x2bc9a: 0x6dcec820, 0x2bc9b: 0x6dceca20,\n\t0x2bc9c: 0x6de90c20, 0x2bc9d: 0x6de90e20, 0x2bc9e: 0x6de91020, 0x2bc9f: 0x6de91220,\n\t0x2bca0: 0x6de91420, 0x2bca1: 0x6de91620, 0x2bca2: 0x6de91820, 0x2bca3: 0x6dff3820,\n\t0x2bca4: 0x6dff3a20, 0x2bca5: 0x6dff3c20, 0x2bca6: 0x6dff3e20, 0x2bca7: 0x6dff4020,\n\t0x2bca8: 0x6e11a620, 0x2bca9: 0x6e11a820, 0x2bcaa: 0x6e200020, 0x2bcab: 0x6e200220,\n\t0x2bcac: 0x6e200420, 0x2bcad: 0x6e200620, 0x2bcae: 0x6e2b1420, 0x2bcaf: 0x6e338a20,\n\t0x2bcb0: 0x6e338c20, 0x2bcb1: 0x6e338e20, 0x2bcb2: 0x6e339020, 0x2bcb3: 0x6e399420,\n\t0x2bcb4: 0x6e399620, 0x2bcb5: 0x6e40a420, 0x2bcb6: 0x6c5c9820, 0x2bcb7: 0x6ca99e20,\n\t0x2bcb8: 0x6c809c20, 0x2bcb9: 0x6ca9a020, 0x2bcba: 0x6cd80e20, 0x2bcbb: 0x6cd81020,\n\t0x2bcbc: 0x6d06cc20, 0x2bcbd: 0x6d34c620, 0x2bcbe: 0x6d617c20, 0x2bcbf: 0x6d617e20,\n\t// Block 0xaf3, offset 0x2bcc0\n\t0x2bcc0: 0x6d8b9420, 0x2bcc1: 0x6de9a020, 0x2bcc2: 0x6c5cc420, 0x2bcc3: 0x6c80c420,\n\t0x2bcc4: 0x6ca9e220, 0x2bcc5: 0x6ca9e420, 0x2bcc6: 0x6ca9e620, 0x2bcc7: 0x6ca9e820,\n\t0x2bcc8: 0x6ca9ea20, 0x2bcc9: 0x6ca9ec20, 0x2bcca: 0x6cd85220, 0x2bccb: 0x6d34e020,\n\t0x2bccc: 0x6d34e220, 0x2bccd: 0x6d8ba620, 0x2bcce: 0x6e2b3220, 0x2bccf: 0x6c0a4820,\n\t0x2bcd0: 0x6c3e0220, 0x2bcd1: 0x6c5cce20, 0x2bcd2: 0x6c5cd020, 0x2bcd3: 0x6c5cd220,\n\t0x2bcd4: 0x6c5cd420, 0x2bcd5: 0x6c80d220, 0x2bcd6: 0x6c80d420, 0x2bcd7: 0x6c80d620,\n\t0x2bcd8: 0x6ca9fe20, 0x2bcd9: 0x6cd86420, 0x2bcda: 0x6cd86620, 0x2bcdb: 0x6d06fc20,\n\t0x2bcdc: 0x6d06fe20, 0x2bcdd: 0x6d070020, 0x2bcde: 0x6d34fc20, 0x2bcdf: 0x6d34fe20,\n\t0x2bce0: 0x6d8bba20, 0x2bce1: 0x6d8bbc20, 0x2bce2: 0x6db00620, 0x2bce3: 0x6dcf8c20,\n\t0x2bce4: 0x6de9b420, 0x2bce5: 0x6e120820, 0x2bce6: 0x6e33ae20, 0x2bce7: 0x6c812420,\n\t0x2bce8: 0x6c812620, 0x2bce9: 0x6c812820, 0x2bcea: 0x6caa2a20, 0x2bceb: 0x6caa2c20,\n\t0x2bcec: 0x6caa2e20, 0x2bced: 0x6caa3020, 0x2bcee: 0x6cd88220, 0x2bcef: 0x6cd88420,\n\t0x2bcf0: 0x6cd88620, 0x2bcf1: 0x6d074620, 0x2bcf2: 0x6d352e20, 0x2bcf3: 0x6d353020,\n\t0x2bcf4: 0x6d353220, 0x2bcf5: 0x6d353420, 0x2bcf6: 0x6d353620, 0x2bcf7: 0x6d61ca20,\n\t0x2bcf8: 0x6d8bf220, 0x2bcf9: 0x6d8bf420, 0x2bcfa: 0x6db02c20, 0x2bcfb: 0x6dcfa820,\n\t0x2bcfc: 0x6dcfaa20, 0x2bcfd: 0x6e204220, 0x2bcfe: 0x6c815620, 0x2bcff: 0x6c815820,\n\t// Block 0xaf4, offset 0x2bd00\n\t0x2bd00: 0x6caa6e20, 0x2bd01: 0x6caa7020, 0x2bd02: 0x6caa7220, 0x2bd03: 0x6caa7420,\n\t0x2bd04: 0x6caa7620, 0x2bd05: 0x6caa7820, 0x2bd06: 0x6caa7a20, 0x2bd07: 0x6cd8aa20,\n\t0x2bd08: 0x6cd8ac20, 0x2bd09: 0x6cd8ae20, 0x2bd0a: 0x6cd8b020, 0x2bd0b: 0x6d077c20,\n\t0x2bd0c: 0x6d077e20, 0x2bd0d: 0x6d078020, 0x2bd0e: 0x6d078220, 0x2bd0f: 0x6d355020,\n\t0x2bd10: 0x6d355220, 0x2bd11: 0x6d355420, 0x2bd12: 0x6d355620, 0x2bd13: 0x6d355820,\n\t0x2bd14: 0x6d8c0c20, 0x2bd15: 0x6d8c0e20, 0x2bd16: 0x6dcfd820, 0x2bd17: 0x6dcfda20,\n\t0x2bd18: 0x6dcfdc20, 0x2bd19: 0x6dffb220, 0x2bd1a: 0x6e122220, 0x2bd1b: 0x6c5d2e20,\n\t0x2bd1c: 0x6cd8f220, 0x2bd1d: 0x6cd8f420, 0x2bd1e: 0x6cd8f620, 0x2bd1f: 0x6c5d3a20,\n\t0x2bd20: 0x6c5d3c20, 0x2bd21: 0x6c81a620, 0x2bd22: 0x6c5d4820, 0x2bd23: 0x6caaba20,\n\t0x2bd24: 0x6d07b020, 0x2bd25: 0x6d07b220, 0x2bd26: 0x6d359420, 0x2bd27: 0x6d359620,\n\t0x2bd28: 0x6d359820, 0x2bd29: 0x6d359a20, 0x2bd2a: 0x6d359c20, 0x2bd2b: 0x6d624c20,\n\t0x2bd2c: 0x6d624e20, 0x2bd2d: 0x6db07e20, 0x2bd2e: 0x6db08020, 0x2bd2f: 0x6db08220,\n\t0x2bd30: 0x6dd01020, 0x2bd31: 0x6e122c20, 0x2bd32: 0x6c25e420, 0x2bd33: 0x6c81b620,\n\t0x2bd34: 0x6c81b820, 0x2bd35: 0x6caad020, 0x2bd36: 0x6caad220, 0x2bd37: 0x6cd90e20,\n\t0x2bd38: 0x6d07c020, 0x2bd39: 0x6d07c220, 0x2bd3a: 0x6d35ba20, 0x2bd3b: 0x6d35bc20,\n\t0x2bd3c: 0x6d35be20, 0x2bd3d: 0x6d35c020, 0x2bd3e: 0x6d35c220, 0x2bd3f: 0x6d626820,\n\t// Block 0xaf5, offset 0x2bd40\n\t0x2bd40: 0x6d626a20, 0x2bd41: 0x6d8c6220, 0x2bd42: 0x6d8c6420, 0x2bd43: 0x6d8c6620,\n\t0x2bd44: 0x6db09820, 0x2bd45: 0x6db09a20, 0x2bd46: 0x6db09c20, 0x2bd47: 0x6db09e20,\n\t0x2bd48: 0x6dd02a20, 0x2bd49: 0x6dffc620, 0x2bd4a: 0x6e205c20, 0x2bd4b: 0x6d07fc20,\n\t0x2bd4c: 0x6c145820, 0x2bd4d: 0x6c145a20, 0x2bd4e: 0x6c25ea20, 0x2bd4f: 0x6c25ec20,\n\t0x2bd50: 0x6c3e6220, 0x2bd51: 0x6c81fe20, 0x2bd52: 0x6c3e6420, 0x2bd53: 0x6c3e6620,\n\t0x2bd54: 0x6c3e6820, 0x2bd55: 0x6c3e6a20, 0x2bd56: 0x6c3e6c20, 0x2bd57: 0x6c3e6e20,\n\t0x2bd58: 0x6c3e7020, 0x2bd59: 0x6c3e7220, 0x2bd5a: 0x6c3e7420, 0x2bd5b: 0x6c3e7620,\n\t0x2bd5c: 0x6c3e7820, 0x2bd5d: 0x6c3e7a20, 0x2bd5e: 0x6c5d6220, 0x2bd5f: 0x6c5d6420,\n\t0x2bd60: 0x6c5d6620, 0x2bd61: 0x6c5d6820, 0x2bd62: 0x6c5d6a20, 0x2bd63: 0x6c5d6c20,\n\t0x2bd64: 0x6c5d6e20, 0x2bd65: 0x6c5d7020, 0x2bd66: 0x6c820020, 0x2bd67: 0x6c820220,\n\t0x2bd68: 0x6c820420, 0x2bd69: 0x6c820620, 0x2bd6a: 0x6c820820, 0x2bd6b: 0x6c820a20,\n\t0x2bd6c: 0x6c820c20, 0x2bd6d: 0x6c820e20, 0x2bd6e: 0x6c821020, 0x2bd6f: 0x6cab1220,\n\t0x2bd70: 0x6cab1420, 0x2bd71: 0x6cab1620, 0x2bd72: 0x6cab1820, 0x2bd73: 0x6cab1a20,\n\t0x2bd74: 0x6cab1c20, 0x2bd75: 0x6cab1e20, 0x2bd76: 0x6cab2020, 0x2bd77: 0x6cab2220,\n\t0x2bd78: 0x6cab2420, 0x2bd79: 0x6cab2620, 0x2bd7a: 0x6cab2820, 0x2bd7b: 0x6cab2a20,\n\t0x2bd7c: 0x6cd95c20, 0x2bd7d: 0x6cd95e20, 0x2bd7e: 0x6cd96020, 0x2bd7f: 0x6cd96220,\n\t// Block 0xaf6, offset 0x2bd80\n\t0x2bd80: 0x6cd96420, 0x2bd81: 0x6cd96620, 0x2bd82: 0x6cd96820, 0x2bd83: 0x6cd96a20,\n\t0x2bd84: 0x6cd96c20, 0x2bd85: 0x6cd96e20, 0x2bd86: 0x6cd97020, 0x2bd87: 0x6cd97220,\n\t0x2bd88: 0x6cd97420, 0x2bd89: 0x6cd97620, 0x2bd8a: 0x6cd97820, 0x2bd8b: 0x6cd97a20,\n\t0x2bd8c: 0x6cd97c20, 0x2bd8d: 0x6d080a20, 0x2bd8e: 0x6d080c20, 0x2bd8f: 0x6d080e20,\n\t0x2bd90: 0x6d081020, 0x2bd91: 0x6d081220, 0x2bd92: 0x6d081420, 0x2bd93: 0x6d081620,\n\t0x2bd94: 0x6d081820, 0x2bd95: 0x6d081a20, 0x2bd96: 0x6d081c20, 0x2bd97: 0x6d081e20,\n\t0x2bd98: 0x6d082020, 0x2bd99: 0x6d082220, 0x2bd9a: 0x6d082420, 0x2bd9b: 0x6d082620,\n\t0x2bd9c: 0x6d361c20, 0x2bd9d: 0x6d361e20, 0x2bd9e: 0x6d362020, 0x2bd9f: 0x6d362220,\n\t0x2bda0: 0x6d362420, 0x2bda1: 0x6d8c9e20, 0x2bda2: 0x6d362620, 0x2bda3: 0x6d362820,\n\t0x2bda4: 0x6d362a20, 0x2bda5: 0x6d362c20, 0x2bda6: 0x6d362e20, 0x2bda7: 0x6d363020,\n\t0x2bda8: 0x6d363220, 0x2bda9: 0x6d363420, 0x2bdaa: 0x6d363620, 0x2bdab: 0x6d62bc20,\n\t0x2bdac: 0x6d62be20, 0x2bdad: 0x6d62c020, 0x2bdae: 0x6d62c220, 0x2bdaf: 0x6d62c420,\n\t0x2bdb0: 0x6d62c620, 0x2bdb1: 0x6d62c820, 0x2bdb2: 0x6d62ca20, 0x2bdb3: 0x6d62cc20,\n\t0x2bdb4: 0x6d62ce20, 0x2bdb5: 0x6d8ca220, 0x2bdb6: 0x6d8ca420, 0x2bdb7: 0x6d8ca620,\n\t0x2bdb8: 0x6d8ca820, 0x2bdb9: 0x6d8caa20, 0x2bdba: 0x6d8cac20, 0x2bdbb: 0x6d8cae20,\n\t0x2bdbc: 0x6d8cb020, 0x2bdbd: 0x6d8cb220, 0x2bdbe: 0x6db0d620, 0x2bdbf: 0x6db0d820,\n\t// Block 0xaf7, offset 0x2bdc0\n\t0x2bdc0: 0x6db0da20, 0x2bdc1: 0x6db0dc20, 0x2bdc2: 0x6dd05e20, 0x2bdc3: 0x6dd06020,\n\t0x2bdc4: 0x6dd06220, 0x2bdc5: 0x6dd06420, 0x2bdc6: 0x6dea2020, 0x2bdc7: 0x6dea2220,\n\t0x2bdc8: 0x6dea2420, 0x2bdc9: 0x6dffe020, 0x2bdca: 0x6dffe220, 0x2bdcb: 0x6e124020,\n\t0x2bdcc: 0x6e124220, 0x2bdcd: 0x6e124420, 0x2bdce: 0x6e124620, 0x2bdcf: 0x6e206820,\n\t0x2bdd0: 0x6cabdc20, 0x2bdd1: 0x6dd0b020, 0x2bdd2: 0x6c5e4020, 0x2bdd3: 0x6d08fc20,\n\t0x2bdd4: 0x6c82fa20, 0x2bdd5: 0x6cabf220, 0x2bdd6: 0x6d370020, 0x2bdd7: 0x6d637020,\n\t0x2bdd8: 0x6d8d7420, 0x2bdd9: 0x6c831020, 0x2bdda: 0x6c831220, 0x2bddb: 0x6cac0420,\n\t0x2bddc: 0x6d638620, 0x2bddd: 0x6d372e20, 0x2bdde: 0x6d8d9620, 0x2bddf: 0x6e126a20,\n\t0x2bde0: 0x6c3f3420, 0x2bde1: 0x6c5e5a20, 0x2bde2: 0x6c5e5c20, 0x2bde3: 0x6c5e5e20,\n\t0x2bde4: 0x6c832820, 0x2bde5: 0x6c832a20, 0x2bde6: 0x6cac1020, 0x2bde7: 0x6cac1220,\n\t0x2bde8: 0x6cac1420, 0x2bde9: 0x6cac1620, 0x2bdea: 0x6cdac020, 0x2bdeb: 0x6cdac220,\n\t0x2bdec: 0x6cdac420, 0x2bded: 0x6cdac620, 0x2bdee: 0x6cdac820, 0x2bdef: 0x6d091e20,\n\t0x2bdf0: 0x6d092020, 0x2bdf1: 0x6d373220, 0x2bdf2: 0x6d373420, 0x2bdf3: 0x6d373620,\n\t0x2bdf4: 0x6d373820, 0x2bdf5: 0x6d373a20, 0x2bdf6: 0x6d373c20, 0x2bdf7: 0x6d373e20,\n\t0x2bdf8: 0x6d374020, 0x2bdf9: 0x6d639c20, 0x2bdfa: 0x6d639e20, 0x2bdfb: 0x6d63a020,\n\t0x2bdfc: 0x6d8d9820, 0x2bdfd: 0x6d8d9a20, 0x2bdfe: 0x6d8d9c20, 0x2bdff: 0x6db18e20,\n\t// Block 0xaf8, offset 0x2be00\n\t0x2be00: 0x6db19020, 0x2be01: 0x6db19220, 0x2be02: 0x6db19420, 0x2be03: 0x6db19620,\n\t0x2be04: 0x6db19820, 0x2be05: 0x6db19a20, 0x2be06: 0x6dd0dc20, 0x2be07: 0x6dd0de20,\n\t0x2be08: 0x6dd0e020, 0x2be09: 0x6e003420, 0x2be0a: 0x6c5e7a20, 0x2be0b: 0x6cac4c20,\n\t0x2be0c: 0x6d8dca20, 0x2be0d: 0x6d8dcc20, 0x2be0e: 0x6dd11820, 0x2be0f: 0x6dd11a20,\n\t0x2be10: 0x6e209c20, 0x2be11: 0x6c149c20, 0x2be12: 0x6c3f4620, 0x2be13: 0x6c3f4820,\n\t0x2be14: 0x6c3f4a20, 0x2be15: 0x6c5e7e20, 0x2be16: 0x6c5e8020, 0x2be17: 0x6c5e8220,\n\t0x2be18: 0x6c5e8420, 0x2be19: 0x6c5e8620, 0x2be1a: 0x6c836020, 0x2be1b: 0x6c836220,\n\t0x2be1c: 0x6c836420, 0x2be1d: 0x6c836620, 0x2be1e: 0x6c836820, 0x2be1f: 0x6c836a20,\n\t0x2be20: 0x6c836c20, 0x2be21: 0x6c836e20, 0x2be22: 0x6c837020, 0x2be23: 0x6c837220,\n\t0x2be24: 0x6c837420, 0x2be25: 0x6c837620, 0x2be26: 0x6cac5c20, 0x2be27: 0x6cac5e20,\n\t0x2be28: 0x6cac6020, 0x2be29: 0x6cac6220, 0x2be2a: 0x6cac6420, 0x2be2b: 0x6cac6620,\n\t0x2be2c: 0x6cac6820, 0x2be2d: 0x6cac6a20, 0x2be2e: 0x6cac6c20, 0x2be2f: 0x6cac6e20,\n\t0x2be30: 0x6cdaf220, 0x2be31: 0x6cdaf420, 0x2be32: 0x6cdaf620, 0x2be33: 0x6cdaf820,\n\t0x2be34: 0x6cdafa20, 0x2be35: 0x6cdafc20, 0x2be36: 0x6cdafe20, 0x2be37: 0x6cdb0020,\n\t0x2be38: 0x6cdb0220, 0x2be39: 0x6cdb0420, 0x2be3a: 0x6cdb0620, 0x2be3b: 0x6cdb0820,\n\t0x2be3c: 0x6cdb0a20, 0x2be3d: 0x6cdb0c20, 0x2be3e: 0x6cdb0e20, 0x2be3f: 0x6cdb1020,\n\t// Block 0xaf9, offset 0x2be40\n\t0x2be40: 0x6cdb1220, 0x2be41: 0x6cdb1420, 0x2be42: 0x6d095a20, 0x2be43: 0x6d095c20,\n\t0x2be44: 0x6d095e20, 0x2be45: 0x6d096020, 0x2be46: 0x6d096220, 0x2be47: 0x6d096420,\n\t0x2be48: 0x6d096620, 0x2be49: 0x6d096820, 0x2be4a: 0x6d096a20, 0x2be4b: 0x6d096c20,\n\t0x2be4c: 0x6d096e20, 0x2be4d: 0x6d097020, 0x2be4e: 0x6d097220, 0x2be4f: 0x6d097420,\n\t0x2be50: 0x6d097620, 0x2be51: 0x6d097820, 0x2be52: 0x6d097a20, 0x2be53: 0x6d097c20,\n\t0x2be54: 0x6d097e20, 0x2be55: 0x6d378020, 0x2be56: 0x6d098020, 0x2be57: 0x6d378220,\n\t0x2be58: 0x6d378420, 0x2be59: 0x6d378620, 0x2be5a: 0x6d378820, 0x2be5b: 0x6d378a20,\n\t0x2be5c: 0x6d378c20, 0x2be5d: 0x6d378e20, 0x2be5e: 0x6d379020, 0x2be5f: 0x6d379220,\n\t0x2be60: 0x6d379420, 0x2be61: 0x6d379620, 0x2be62: 0x6d379820, 0x2be63: 0x6d379a20,\n\t0x2be64: 0x6d379c20, 0x2be65: 0x6d379e20, 0x2be66: 0x6d37a020, 0x2be67: 0x6d37a220,\n\t0x2be68: 0x6d37a420, 0x2be69: 0x6d37a620, 0x2be6a: 0x6d37a820, 0x2be6b: 0x6d37aa20,\n\t0x2be6c: 0x6d37ac20, 0x2be6d: 0x6d37ae20, 0x2be6e: 0x6d63f220, 0x2be6f: 0x6d63f420,\n\t0x2be70: 0x6d63f620, 0x2be71: 0x6d63f820, 0x2be72: 0x6d63fa20, 0x2be73: 0x6d63fc20,\n\t0x2be74: 0x6d63fe20, 0x2be75: 0x6d640020, 0x2be76: 0x6d640220, 0x2be77: 0x6d640420,\n\t0x2be78: 0x6d640620, 0x2be79: 0x6d640820, 0x2be7a: 0x6d640a20, 0x2be7b: 0x6d640c20,\n\t0x2be7c: 0x6d8dda20, 0x2be7d: 0x6d8ddc20, 0x2be7e: 0x6d8dde20, 0x2be7f: 0x6d8de020,\n\t// Block 0xafa, offset 0x2be80\n\t0x2be80: 0x6d8de220, 0x2be81: 0x6d8de420, 0x2be82: 0x6d8de620, 0x2be83: 0x6d8de820,\n\t0x2be84: 0x6d8dea20, 0x2be85: 0x6d8dec20, 0x2be86: 0x6d8dee20, 0x2be87: 0x6d8df020,\n\t0x2be88: 0x6d8df220, 0x2be89: 0x6d8df420, 0x2be8a: 0x6d8df620, 0x2be8b: 0x6d8df820,\n\t0x2be8c: 0x6d8dfa20, 0x2be8d: 0x6d8dfc20, 0x2be8e: 0x6db1c020, 0x2be8f: 0x6db1c220,\n\t0x2be90: 0x6db1c420, 0x2be91: 0x6db1c620, 0x2be92: 0x6db1c820, 0x2be93: 0x6db1ca20,\n\t0x2be94: 0x6db1cc20, 0x2be95: 0x6db1ce20, 0x2be96: 0x6db1d020, 0x2be97: 0x6db1d220,\n\t0x2be98: 0x6db1d420, 0x2be99: 0x6db1d620, 0x2be9a: 0x6db1d820, 0x2be9b: 0x6db1da20,\n\t0x2be9c: 0x6db1dc20, 0x2be9d: 0x6db1de20, 0x2be9e: 0x6db1e020, 0x2be9f: 0x6db1e220,\n\t0x2bea0: 0x6db1e420, 0x2bea1: 0x6db1e620, 0x2bea2: 0x6db1e820, 0x2bea3: 0x6db1ea20,\n\t0x2bea4: 0x6db1ec20, 0x2bea5: 0x6db1ee20, 0x2bea6: 0x6db1f020, 0x2bea7: 0x6db1f220,\n\t0x2bea8: 0x6db1f420, 0x2bea9: 0x6db1f620, 0x2beaa: 0x6db1f820, 0x2beab: 0x6db1fa20,\n\t0x2beac: 0x6db1fc20, 0x2bead: 0x6dd11c20, 0x2beae: 0x6dd11e20, 0x2beaf: 0x6dd12020,\n\t0x2beb0: 0x6dd12220, 0x2beb1: 0x6dd12420, 0x2beb2: 0x6dd12620, 0x2beb3: 0x6dd12820,\n\t0x2beb4: 0x6dd12a20, 0x2beb5: 0x6dd12c20, 0x2beb6: 0x6dd12e20, 0x2beb7: 0x6dd13020,\n\t0x2beb8: 0x6dd13220, 0x2beb9: 0x6dd13420, 0x2beba: 0x6dd13620, 0x2bebb: 0x6dd13820,\n\t0x2bebc: 0x6dd13a20, 0x2bebd: 0x6dd13c20, 0x2bebe: 0x6dd13e20, 0x2bebf: 0x6dd14020,\n\t// Block 0xafb, offset 0x2bec0\n\t0x2bec0: 0x6dd14220, 0x2bec1: 0x6dd14420, 0x2bec2: 0x6dd14620, 0x2bec3: 0x6dd14820,\n\t0x2bec4: 0x6dd14a20, 0x2bec5: 0x6deaa420, 0x2bec6: 0x6deaa620, 0x2bec7: 0x6deaa820,\n\t0x2bec8: 0x6deaaa20, 0x2bec9: 0x6deaac20, 0x2beca: 0x6deaae20, 0x2becb: 0x6deab020,\n\t0x2becc: 0x6deab220, 0x2becd: 0x6deab420, 0x2bece: 0x6deab620, 0x2becf: 0x6deab820,\n\t0x2bed0: 0x6deaba20, 0x2bed1: 0x6deabc20, 0x2bed2: 0x6e005220, 0x2bed3: 0x6e005420,\n\t0x2bed4: 0x6e005620, 0x2bed5: 0x6e005820, 0x2bed6: 0x6e005a20, 0x2bed7: 0x6e005c20,\n\t0x2bed8: 0x6e005e20, 0x2bed9: 0x6e006020, 0x2beda: 0x6e006220, 0x2bedb: 0x6e006420,\n\t0x2bedc: 0x6e006620, 0x2bedd: 0x6e006820, 0x2bede: 0x6e127a20, 0x2bedf: 0x6e127c20,\n\t0x2bee0: 0x6e127e20, 0x2bee1: 0x6e128020, 0x2bee2: 0x6e128220, 0x2bee3: 0x6e128420,\n\t0x2bee4: 0x6e128620, 0x2bee5: 0x6e128820, 0x2bee6: 0x6e209e20, 0x2bee7: 0x6e20a020,\n\t0x2bee8: 0x6e20a220, 0x2bee9: 0x6e20a420, 0x2beea: 0x6e20a620, 0x2beeb: 0x6e20a820,\n\t0x2beec: 0x6e20aa20, 0x2beed: 0x6e20ac20, 0x2beee: 0x6e20ae20, 0x2beef: 0x6e20b020,\n\t0x2bef0: 0x6e20b220, 0x2bef1: 0x6e20b420, 0x2bef2: 0x6e20b620, 0x2bef3: 0x6e2b7420,\n\t0x2bef4: 0x6e2b7620, 0x2bef5: 0x6e2b7820, 0x2bef6: 0x6e2b7a20, 0x2bef7: 0x6e2b7c20,\n\t0x2bef8: 0x6e33e620, 0x2bef9: 0x6e33e820, 0x2befa: 0x6e33ea20, 0x2befb: 0x6e39c420,\n\t0x2befc: 0x6e39c620, 0x2befd: 0x6e39c820, 0x2befe: 0x6e3df220, 0x2beff: 0x6e40c820,\n\t// Block 0xafc, offset 0x2bf00\n\t0x2bf00: 0x6e40ca20, 0x2bf01: 0x6e42ee20, 0x2bf02: 0x6e446020, 0x2bf03: 0x6e446220,\n\t0x2bf04: 0x6e446420, 0x2bf05: 0x6e454820, 0x2bf06: 0x6e454a20, 0x2bf07: 0x6e46ce20,\n\t0x2bf08: 0x6c400e20, 0x2bf09: 0x6c5f9420, 0x2bf0a: 0x6c84c620, 0x2bf0b: 0x6c84c820,\n\t0x2bf0c: 0x6c84ca20, 0x2bf0d: 0x6c84cc20, 0x2bf0e: 0x6cae2220, 0x2bf0f: 0x6cae2420,\n\t0x2bf10: 0x6cdd4820, 0x2bf11: 0x6cdd4a20, 0x2bf12: 0x6d0bc220, 0x2bf13: 0x6d0bc420,\n\t0x2bf14: 0x6d0bc620, 0x2bf15: 0x6d0bc820, 0x2bf16: 0x6d0bca20, 0x2bf17: 0x6d65f420,\n\t0x2bf18: 0x6d8fc820, 0x2bf19: 0x6db39820, 0x2bf1a: 0x6dd29620, 0x2bf1b: 0x6dd29820,\n\t0x2bf1c: 0x6debd220, 0x2bf1d: 0x6c268820, 0x2bf1e: 0x6c5fa220, 0x2bf1f: 0x6c5fa420,\n\t0x2bf20: 0x6c5fa620, 0x2bf21: 0x6c84de20, 0x2bf22: 0x6c84e020, 0x2bf23: 0x6c84e220,\n\t0x2bf24: 0x6cae4e20, 0x2bf25: 0x6cae5020, 0x2bf26: 0x6cae5220, 0x2bf27: 0x6cae5420,\n\t0x2bf28: 0x6cae5620, 0x2bf29: 0x6cae5820, 0x2bf2a: 0x6cae5a20, 0x2bf2b: 0x6cae5c20,\n\t0x2bf2c: 0x6cae5e20, 0x2bf2d: 0x6cdd6620, 0x2bf2e: 0x6cdd6820, 0x2bf2f: 0x6cdd6a20,\n\t0x2bf30: 0x6cdd6c20, 0x2bf31: 0x6cdd6e20, 0x2bf32: 0x6cdd7020, 0x2bf33: 0x6cdd7220,\n\t0x2bf34: 0x6cdd7420, 0x2bf35: 0x6cdd7620, 0x2bf36: 0x6d0bde20, 0x2bf37: 0x6d0be020,\n\t0x2bf38: 0x6d0be220, 0x2bf39: 0x6d0be420, 0x2bf3a: 0x6d0be620, 0x2bf3b: 0x6d0be820,\n\t0x2bf3c: 0x6d0bea20, 0x2bf3d: 0x6d0bec20, 0x2bf3e: 0x6d0bee20, 0x2bf3f: 0x6d39e220,\n\t// Block 0xafd, offset 0x2bf40\n\t0x2bf40: 0x6d39e420, 0x2bf41: 0x6d39e620, 0x2bf42: 0x6d39e820, 0x2bf43: 0x6d39ea20,\n\t0x2bf44: 0x6d39ec20, 0x2bf45: 0x6d39ee20, 0x2bf46: 0x6d39f020, 0x2bf47: 0x6d39f220,\n\t0x2bf48: 0x6d39f420, 0x2bf49: 0x6d39f620, 0x2bf4a: 0x6d39f820, 0x2bf4b: 0x6d661220,\n\t0x2bf4c: 0x6d661420, 0x2bf4d: 0x6d661620, 0x2bf4e: 0x6d661820, 0x2bf4f: 0x6d661a20,\n\t0x2bf50: 0x6d661c20, 0x2bf51: 0x6d661e20, 0x2bf52: 0x6d662020, 0x2bf53: 0x6d662220,\n\t0x2bf54: 0x6d662420, 0x2bf55: 0x6d39fa20, 0x2bf56: 0x6d662620, 0x2bf57: 0x6d8ffa20,\n\t0x2bf58: 0x6d8ffc20, 0x2bf59: 0x6d8ffe20, 0x2bf5a: 0x6d900020, 0x2bf5b: 0x6d900220,\n\t0x2bf5c: 0x6d900420, 0x2bf5d: 0x6d900620, 0x2bf5e: 0x6d900820, 0x2bf5f: 0x6db3b420,\n\t0x2bf60: 0x6db3b620, 0x2bf61: 0x6db3b820, 0x2bf62: 0x6db3ba20, 0x2bf63: 0x6db3bc20,\n\t0x2bf64: 0x6db3be20, 0x2bf65: 0x6db3c020, 0x2bf66: 0x6db3c220, 0x2bf67: 0x6db3c420,\n\t0x2bf68: 0x6db3c620, 0x2bf69: 0x6db3c820, 0x2bf6a: 0x6db3ca20, 0x2bf6b: 0x6db3cc20,\n\t0x2bf6c: 0x6db3ce20, 0x2bf6d: 0x6db3d020, 0x2bf6e: 0x6db3d220, 0x2bf6f: 0x6dd2b020,\n\t0x2bf70: 0x6dd2b220, 0x2bf71: 0x6dd2b420, 0x2bf72: 0x6dd2b620, 0x2bf73: 0x6dd2b820,\n\t0x2bf74: 0x6debe620, 0x2bf75: 0x6debe820, 0x2bf76: 0x6debea20, 0x2bf77: 0x6debec20,\n\t0x2bf78: 0x6debee20, 0x2bf79: 0x6debf020, 0x2bf7a: 0x6debf220, 0x2bf7b: 0x6debf420,\n\t0x2bf7c: 0x6e016420, 0x2bf7d: 0x6e016620, 0x2bf7e: 0x6e016820, 0x2bf7f: 0x6e016a20,\n\t// Block 0xafe, offset 0x2bf80\n\t0x2bf80: 0x6e016c20, 0x2bf81: 0x6e016e20, 0x2bf82: 0x6e135020, 0x2bf83: 0x6e135220,\n\t0x2bf84: 0x6e135420, 0x2bf85: 0x6e212220, 0x2bf86: 0x6e212420, 0x2bf87: 0x6e212620,\n\t0x2bf88: 0x6e212820, 0x2bf89: 0x6e212a20, 0x2bf8a: 0x6e2bdc20, 0x2bf8b: 0x6e2bde20,\n\t0x2bf8c: 0x6e2be020, 0x2bf8d: 0x6e39ea20, 0x2bf8e: 0x6e42fc20, 0x2bf8f: 0x6c5ff620,\n\t0x2bf90: 0x6c858220, 0x2bf91: 0x6caf1a20, 0x2bf92: 0x6d0cbc20, 0x2bf93: 0x6d3b1020,\n\t0x2bf94: 0x6d673a20, 0x2bf95: 0x6c859420, 0x2bf96: 0x6cde5020, 0x2bf97: 0x6d912020,\n\t0x2bf98: 0x6d912220, 0x2bf99: 0x6e01e020, 0x2bf9a: 0x6c404420, 0x2bf9b: 0x6c404620,\n\t0x2bf9c: 0x6c600c20, 0x2bf9d: 0x6c600e20, 0x2bf9e: 0x6c601020, 0x2bf9f: 0x6c85a020,\n\t0x2bfa0: 0x6c85a220, 0x2bfa1: 0x6c85a420, 0x2bfa2: 0x6caf3420, 0x2bfa3: 0x6caf3620,\n\t0x2bfa4: 0x6caf3820, 0x2bfa5: 0x6caf3a20, 0x2bfa6: 0x6caf3c20, 0x2bfa7: 0x6caf3e20,\n\t0x2bfa8: 0x6cde6a20, 0x2bfa9: 0x6cde6c20, 0x2bfaa: 0x6cde6e20, 0x2bfab: 0x6cde7020,\n\t0x2bfac: 0x6cde7220, 0x2bfad: 0x6cde7420, 0x2bfae: 0x6cde7620, 0x2bfaf: 0x6d0cd820,\n\t0x2bfb0: 0x6d0cda20, 0x2bfb1: 0x6d0cdc20, 0x2bfb2: 0x6d0cde20, 0x2bfb3: 0x6d3b2820,\n\t0x2bfb4: 0x6d3b2a20, 0x2bfb5: 0x6d3b2c20, 0x2bfb6: 0x6d3b2e20, 0x2bfb7: 0x6d3b3020,\n\t0x2bfb8: 0x6d3b3220, 0x2bfb9: 0x6d3b3420, 0x2bfba: 0x6d3b3620, 0x2bfbb: 0x6d3b3820,\n\t0x2bfbc: 0x6d3b3a20, 0x2bfbd: 0x6d3b3c20, 0x2bfbe: 0x6d3b3e20, 0x2bfbf: 0x6d3b4020,\n\t// Block 0xaff, offset 0x2bfc0\n\t0x2bfc0: 0x6d3b4220, 0x2bfc1: 0x6d3b4420, 0x2bfc2: 0x6d3b4620, 0x2bfc3: 0x6d675820,\n\t0x2bfc4: 0x6d675a20, 0x2bfc5: 0x6d675c20, 0x2bfc6: 0x6d675e20, 0x2bfc7: 0x6d676020,\n\t0x2bfc8: 0x6d676220, 0x2bfc9: 0x6d676420, 0x2bfca: 0x6d676620, 0x2bfcb: 0x6d676820,\n\t0x2bfcc: 0x6d676a20, 0x2bfcd: 0x6d676c20, 0x2bfce: 0x6d913020, 0x2bfcf: 0x6d913220,\n\t0x2bfd0: 0x6d913420, 0x2bfd1: 0x6d913620, 0x2bfd2: 0x6d913820, 0x2bfd3: 0x6d913a20,\n\t0x2bfd4: 0x6db4da20, 0x2bfd5: 0x6db4dc20, 0x2bfd6: 0x6db4de20, 0x2bfd7: 0x6db4e020,\n\t0x2bfd8: 0x6db4e220, 0x2bfd9: 0x6db4e420, 0x2bfda: 0x6db4e620, 0x2bfdb: 0x6db4e820,\n\t0x2bfdc: 0x6db4ea20, 0x2bfdd: 0x6db4ec20, 0x2bfde: 0x6dd3aa20, 0x2bfdf: 0x6dd3ac20,\n\t0x2bfe0: 0x6dd3ae20, 0x2bfe1: 0x6dd3b020, 0x2bfe2: 0x6dd3b220, 0x2bfe3: 0x6dd3b420,\n\t0x2bfe4: 0x6decac20, 0x2bfe5: 0x6decae20, 0x2bfe6: 0x6e01e420, 0x2bfe7: 0x6e01e620,\n\t0x2bfe8: 0x6e01e820, 0x2bfe9: 0x6e01ea20, 0x2bfea: 0x6e13d020, 0x2bfeb: 0x6e218c20,\n\t0x2bfec: 0x6e2c2220, 0x2bfed: 0x6e2c2420, 0x2bfee: 0x6e346020, 0x2bfef: 0x6e346220,\n\t0x2bff0: 0x6e3a0a20, 0x2bff1: 0x6e40fe20, 0x2bff2: 0x6c606420, 0x2bff3: 0x6c862220,\n\t0x2bff4: 0x6cafe220, 0x2bff5: 0x6cdefa20, 0x2bff6: 0x6cdefc20, 0x2bff7: 0x6c862a20,\n\t0x2bff8: 0x6c862c20, 0x2bff9: 0x6cafee20, 0x2bffa: 0x6caff020, 0x2bffb: 0x6caff220,\n\t0x2bffc: 0x6cdf0a20, 0x2bffd: 0x6cdf0c20, 0x2bffe: 0x6cdf0e20, 0x2bfff: 0x6cdf1020,\n\t// Block 0xb00, offset 0x2c000\n\t0x2c000: 0x6d0d7c20, 0x2c001: 0x6d0d7e20, 0x2c002: 0x6d3bec20, 0x2c003: 0x6d3bee20,\n\t0x2c004: 0x6d67f820, 0x2c005: 0x6d67fa20, 0x2c006: 0x6d91c220, 0x2c007: 0x6d91c420,\n\t0x2c008: 0x6d91c620, 0x2c009: 0x6d91c820, 0x2c00a: 0x6db58020, 0x2c00b: 0x6db58220,\n\t0x2c00c: 0x6db58420, 0x2c00d: 0x6dd41420, 0x2c00e: 0x6dd41620, 0x2c00f: 0x6ded0420,\n\t0x2c010: 0x6ded0620, 0x2c011: 0x6ded0820, 0x2c012: 0x6ded0a20, 0x2c013: 0x6ded0c20,\n\t0x2c014: 0x6e13fc20, 0x2c015: 0x6e3e2e20, 0x2c016: 0x6e45d820, 0x2c017: 0x6cb01e20,\n\t0x2c018: 0x6d0db020, 0x2c019: 0x6d0db220, 0x2c01a: 0x6d0db420, 0x2c01b: 0x6d3c2020,\n\t0x2c01c: 0x6d683a20, 0x2c01d: 0x6d683c20, 0x2c01e: 0x6d683e20, 0x2c01f: 0x6d684020,\n\t0x2c020: 0x6d684220, 0x2c021: 0x6d920220, 0x2c022: 0x6d920420, 0x2c023: 0x6d920620,\n\t0x2c024: 0x6d920820, 0x2c025: 0x6db5a820, 0x2c026: 0x6db5aa20, 0x2c027: 0x6dd43620,\n\t0x2c028: 0x6ded2420, 0x2c029: 0x6ded2620, 0x2c02a: 0x6e022e20, 0x2c02b: 0x6e023020,\n\t0x2c02c: 0x6ded2820, 0x2c02d: 0x6e3a3620, 0x2c02e: 0x6c608620, 0x2c02f: 0x6c608820,\n\t0x2c030: 0x6c608a20, 0x2c031: 0x6c864a20, 0x2c032: 0x6c864c20, 0x2c033: 0x6cb05620,\n\t0x2c034: 0x6cb05820, 0x2c035: 0x6cb05a20, 0x2c036: 0x6cb05c20, 0x2c037: 0x6cb05e20,\n\t0x2c038: 0x6cb06020, 0x2c039: 0x6cb06220, 0x2c03a: 0x6cb06420, 0x2c03b: 0x6cb06620,\n\t0x2c03c: 0x6cb06820, 0x2c03d: 0x6cb06a20, 0x2c03e: 0x6cb06c20, 0x2c03f: 0x6cb06e20,\n\t// Block 0xb01, offset 0x2c040\n\t0x2c040: 0x6cb07020, 0x2c041: 0x6cb07220, 0x2c042: 0x6cb07420, 0x2c043: 0x6cb07620,\n\t0x2c044: 0x6cdf6020, 0x2c045: 0x6cdf6220, 0x2c046: 0x6cdf6420, 0x2c047: 0x6cdf6620,\n\t0x2c048: 0x6cdf6820, 0x2c049: 0x6cdf6a20, 0x2c04a: 0x6cdf6c20, 0x2c04b: 0x6cdf6e20,\n\t0x2c04c: 0x6cdf7020, 0x2c04d: 0x6cdf7220, 0x2c04e: 0x6cdf7420, 0x2c04f: 0x6cdf7620,\n\t0x2c050: 0x6cdf7820, 0x2c051: 0x6cdf7a20, 0x2c052: 0x6cdf7c20, 0x2c053: 0x6cdf7e20,\n\t0x2c054: 0x6d0de020, 0x2c055: 0x6d0de220, 0x2c056: 0x6d0de420, 0x2c057: 0x6d0de620,\n\t0x2c058: 0x6d0de820, 0x2c059: 0x6d0dea20, 0x2c05a: 0x6d0dec20, 0x2c05b: 0x6d0dee20,\n\t0x2c05c: 0x6d0df020, 0x2c05d: 0x6d3c4220, 0x2c05e: 0x6d3c4420, 0x2c05f: 0x6d3c4620,\n\t0x2c060: 0x6d3c4820, 0x2c061: 0x6d3c4a20, 0x2c062: 0x6d3c4c20, 0x2c063: 0x6d3c4e20,\n\t0x2c064: 0x6d3c5020, 0x2c065: 0x6d3c5220, 0x2c066: 0x6d3c5420, 0x2c067: 0x6d3c5620,\n\t0x2c068: 0x6d3c5820, 0x2c069: 0x6d687e20, 0x2c06a: 0x6d688020, 0x2c06b: 0x6d688220,\n\t0x2c06c: 0x6d688420, 0x2c06d: 0x6d688620, 0x2c06e: 0x6d688820, 0x2c06f: 0x6d688a20,\n\t0x2c070: 0x6d688c20, 0x2c071: 0x6d688e20, 0x2c072: 0x6d689020, 0x2c073: 0x6d689220,\n\t0x2c074: 0x6d689420, 0x2c075: 0x6d689620, 0x2c076: 0x6d689820, 0x2c077: 0x6d689a20,\n\t0x2c078: 0x6d689c20, 0x2c079: 0x6d923220, 0x2c07a: 0x6d923420, 0x2c07b: 0x6d923620,\n\t0x2c07c: 0x6d923820, 0x2c07d: 0x6d923a20, 0x2c07e: 0x6db5d620, 0x2c07f: 0x6db5d820,\n\t// Block 0xb02, offset 0x2c080\n\t0x2c080: 0x6db5da20, 0x2c081: 0x6db5dc20, 0x2c082: 0x6db5de20, 0x2c083: 0x6dd45220,\n\t0x2c084: 0x6dd45420, 0x2c085: 0x6dd45620, 0x2c086: 0x6dd45820, 0x2c087: 0x6dd45a20,\n\t0x2c088: 0x6dd45c20, 0x2c089: 0x6dd45e20, 0x2c08a: 0x6dd46020, 0x2c08b: 0x6ded4220,\n\t0x2c08c: 0x6ded4420, 0x2c08d: 0x6ded4620, 0x2c08e: 0x6ded4820, 0x2c08f: 0x6ded4a20,\n\t0x2c090: 0x6ded4c20, 0x2c091: 0x6ded4e20, 0x2c092: 0x6e024020, 0x2c093: 0x6e024220,\n\t0x2c094: 0x6e024420, 0x2c095: 0x6e024620, 0x2c096: 0x6e024820, 0x2c097: 0x6e024a20,\n\t0x2c098: 0x6e024c20, 0x2c099: 0x6e141620, 0x2c09a: 0x6e141820, 0x2c09b: 0x6e141a20,\n\t0x2c09c: 0x6e141c20, 0x2c09d: 0x6e141e20, 0x2c09e: 0x6e142020, 0x2c09f: 0x6e21c220,\n\t0x2c0a0: 0x6e21c420, 0x2c0a1: 0x6e21c620, 0x2c0a2: 0x6e2c4420, 0x2c0a3: 0x6cb10a20,\n\t0x2c0a4: 0x6d0eb220, 0x2c0a5: 0x6d697a20, 0x2c0a6: 0x6db69820, 0x2c0a7: 0x6db69a20,\n\t0x2c0a8: 0x6dd4fc20, 0x2c0a9: 0x6e2c7620, 0x2c0aa: 0x6c60be20, 0x2c0ab: 0x6c86c420,\n\t0x2c0ac: 0x6ce04820, 0x2c0ad: 0x6ce04a20, 0x2c0ae: 0x6d3d1620, 0x2c0af: 0x6d698420,\n\t0x2c0b0: 0x6db69e20, 0x2c0b1: 0x6dd4fe20, 0x2c0b2: 0x6e221620, 0x2c0b3: 0x6c40b620,\n\t0x2c0b4: 0x6cb15020, 0x2c0b5: 0x6ce05020, 0x2c0b6: 0x6d0eca20, 0x2c0b7: 0x6d3d1e20,\n\t0x2c0b8: 0x6d3d2020, 0x2c0b9: 0x6d3d2220, 0x2c0ba: 0x6d699620, 0x2c0bb: 0x6d930c20,\n\t0x2c0bc: 0x6d930e20, 0x2c0bd: 0x6d931020, 0x2c0be: 0x6d931220, 0x2c0bf: 0x6d931420,\n\t// Block 0xb03, offset 0x2c0c0\n\t0x2c0c0: 0x6db6ae20, 0x2c0c1: 0x6db6b020, 0x2c0c2: 0x6db6b220, 0x2c0c3: 0x6e147020,\n\t0x2c0c4: 0x6e3a5420, 0x2c0c5: 0x6c86d820, 0x2c0c6: 0x6cb15820, 0x2c0c7: 0x6cb15a20,\n\t0x2c0c8: 0x6ce05c20, 0x2c0c9: 0x6d0ed620, 0x2c0ca: 0x6d69b420, 0x2c0cb: 0x6d69b620,\n\t0x2c0cc: 0x6d69b820, 0x2c0cd: 0x6d932020, 0x2c0ce: 0x6d932220, 0x2c0cf: 0x6dd51420,\n\t0x2c0d0: 0x6dee0620, 0x2c0d1: 0x6dee0820, 0x2c0d2: 0x6e147620, 0x2c0d3: 0x6e222220,\n\t0x2c0d4: 0x6e3a5c20, 0x2c0d5: 0x6e3a5e20, 0x2c0d6: 0x6cb17820, 0x2c0d7: 0x6cb17a20,\n\t0x2c0d8: 0x6cb17c20, 0x2c0d9: 0x6cb17e20, 0x2c0da: 0x6ce07a20, 0x2c0db: 0x6ce07c20,\n\t0x2c0dc: 0x6d3d4e20, 0x2c0dd: 0x6d69dc20, 0x2c0de: 0x6d69de20, 0x2c0df: 0x6d934020,\n\t0x2c0e0: 0x6db6e220, 0x2c0e1: 0x6dd52820, 0x2c0e2: 0x6dd52a20, 0x2c0e3: 0x6dee1820,\n\t0x2c0e4: 0x6dee1a20, 0x2c0e5: 0x6dee1c20, 0x2c0e6: 0x6dee1e20, 0x2c0e7: 0x6cb19420,\n\t0x2c0e8: 0x6cb19620, 0x2c0e9: 0x6ce0ae20, 0x2c0ea: 0x6ce0b020, 0x2c0eb: 0x6ce0b220,\n\t0x2c0ec: 0x6ce0b420, 0x2c0ed: 0x6ce0b620, 0x2c0ee: 0x6ce0b820, 0x2c0ef: 0x6ce0ba20,\n\t0x2c0f0: 0x6d0f2820, 0x2c0f1: 0x6d0f2a20, 0x2c0f2: 0x6d0f2c20, 0x2c0f3: 0x6d3d7620,\n\t0x2c0f4: 0x6d3d7820, 0x2c0f5: 0x6d3d7a20, 0x2c0f6: 0x6d6a0020, 0x2c0f7: 0x6d6a0220,\n\t0x2c0f8: 0x6d6a0420, 0x2c0f9: 0x6d6a0620, 0x2c0fa: 0x6d6a0820, 0x2c0fb: 0x6d6a0a20,\n\t0x2c0fc: 0x6d6a0c20, 0x2c0fd: 0x6d6a0e20, 0x2c0fe: 0x6d6a1020, 0x2c0ff: 0x6d6a1220,\n\t// Block 0xb04, offset 0x2c100\n\t0x2c100: 0x6d936820, 0x2c101: 0x6d936a20, 0x2c102: 0x6d936c20, 0x2c103: 0x6d936e20,\n\t0x2c104: 0x6d937020, 0x2c105: 0x6db70420, 0x2c106: 0x6db70620, 0x2c107: 0x6dd54620,\n\t0x2c108: 0x6dee3620, 0x2c109: 0x6e02e220, 0x2c10a: 0x6e223020, 0x2c10b: 0x6e2c8a20,\n\t0x2c10c: 0x6d0f9020, 0x2c10d: 0x6d6a6e20, 0x2c10e: 0x6d6a7020, 0x2c10f: 0x6d93be20,\n\t0x2c110: 0x6d93c020, 0x2c111: 0x6c872620, 0x2c112: 0x6d0f9820, 0x2c113: 0x6d3dca20,\n\t0x2c114: 0x6d3dcc20, 0x2c115: 0x6e14a620, 0x2c116: 0x6c872820, 0x2c117: 0x6c872a20,\n\t0x2c118: 0x6c872c20, 0x2c119: 0x6cb1f220, 0x2c11a: 0x6cb1f420, 0x2c11b: 0x6cb1f620,\n\t0x2c11c: 0x6cb1f820, 0x2c11d: 0x6ce13e20, 0x2c11e: 0x6ce14020, 0x2c11f: 0x6ce14220,\n\t0x2c120: 0x6ce14420, 0x2c121: 0x6ce14620, 0x2c122: 0x6ce14820, 0x2c123: 0x6ce14a20,\n\t0x2c124: 0x6ce14c20, 0x2c125: 0x6d0fa820, 0x2c126: 0x6d0faa20, 0x2c127: 0x6d0fac20,\n\t0x2c128: 0x6d0fae20, 0x2c129: 0x6d0fb020, 0x2c12a: 0x6d0fb220, 0x2c12b: 0x6d3dd820,\n\t0x2c12c: 0x6d3dda20, 0x2c12d: 0x6d3ddc20, 0x2c12e: 0x6d3dde20, 0x2c12f: 0x6d3de020,\n\t0x2c130: 0x6d3de220, 0x2c131: 0x6d3de420, 0x2c132: 0x6d3de620, 0x2c133: 0x6d6a8420,\n\t0x2c134: 0x6d6a8620, 0x2c135: 0x6d6a8820, 0x2c136: 0x6d6a8a20, 0x2c137: 0x6d6a8c20,\n\t0x2c138: 0x6d6a8e20, 0x2c139: 0x6d93dc20, 0x2c13a: 0x6d93de20, 0x2c13b: 0x6d93e020,\n\t0x2c13c: 0x6d93e220, 0x2c13d: 0x6db74e20, 0x2c13e: 0x6db75020, 0x2c13f: 0x6db75220,\n\t// Block 0xb05, offset 0x2c140\n\t0x2c140: 0x6db75420, 0x2c141: 0x6dd59c20, 0x2c142: 0x6dd59e20, 0x2c143: 0x6dd5a020,\n\t0x2c144: 0x6dd5a220, 0x2c145: 0x6dd5a420, 0x2c146: 0x6dd5a620, 0x2c147: 0x6dee8620,\n\t0x2c148: 0x6e030a20, 0x2c149: 0x6e030c20, 0x2c14a: 0x6e030e20, 0x2c14b: 0x6e031020,\n\t0x2c14c: 0x6e14ae20, 0x2c14d: 0x6e225c20, 0x2c14e: 0x6e225e20, 0x2c14f: 0x6e226020,\n\t0x2c150: 0x6e2cae20, 0x2c151: 0x6e34ba20, 0x2c152: 0x6e3a6e20, 0x2c153: 0x6c611620,\n\t0x2c154: 0x6c611820, 0x2c155: 0x6c875020, 0x2c156: 0x6c875220, 0x2c157: 0x6cb23e20,\n\t0x2c158: 0x6cb24020, 0x2c159: 0x6cb24220, 0x2c15a: 0x6cb24420, 0x2c15b: 0x6cb24620,\n\t0x2c15c: 0x6cb24820, 0x2c15d: 0x6cb24a20, 0x2c15e: 0x6cb24c20, 0x2c15f: 0x6ce19c20,\n\t0x2c160: 0x6ce19e20, 0x2c161: 0x6ce1a020, 0x2c162: 0x6ce1a220, 0x2c163: 0x6ce1a420,\n\t0x2c164: 0x6ce1a620, 0x2c165: 0x6ce1a820, 0x2c166: 0x6ce1aa20, 0x2c167: 0x6ce1ac20,\n\t0x2c168: 0x6ce1ae20, 0x2c169: 0x6ce1b020, 0x2c16a: 0x6ce1b220, 0x2c16b: 0x6ce1b420,\n\t0x2c16c: 0x6ce1b620, 0x2c16d: 0x6ce1b820, 0x2c16e: 0x6d100a20, 0x2c16f: 0x6d100c20,\n\t0x2c170: 0x6d100e20, 0x2c171: 0x6d101020, 0x2c172: 0x6d101220, 0x2c173: 0x6d101420,\n\t0x2c174: 0x6d3e3a20, 0x2c175: 0x6d3e3c20, 0x2c176: 0x6d3e3e20, 0x2c177: 0x6d3e4020,\n\t0x2c178: 0x6d3e4220, 0x2c179: 0x6d3e4420, 0x2c17a: 0x6d3e4620, 0x2c17b: 0x6d3e4820,\n\t0x2c17c: 0x6d6ada20, 0x2c17d: 0x6d3e4a20, 0x2c17e: 0x6d6adc20, 0x2c17f: 0x6d6ade20,\n\t// Block 0xb06, offset 0x2c180\n\t0x2c180: 0x6d6ae020, 0x2c181: 0x6d6ae220, 0x2c182: 0x6d6ae420, 0x2c183: 0x6d6ae620,\n\t0x2c184: 0x6d6ae820, 0x2c185: 0x6d6aea20, 0x2c186: 0x6d6aec20, 0x2c187: 0x6d6aee20,\n\t0x2c188: 0x6d6af020, 0x2c189: 0x6d6af220, 0x2c18a: 0x6d6af420, 0x2c18b: 0x6d6af620,\n\t0x2c18c: 0x6d6af820, 0x2c18d: 0x6d943220, 0x2c18e: 0x6d943420, 0x2c18f: 0x6d943620,\n\t0x2c190: 0x6d943820, 0x2c191: 0x6d943a20, 0x2c192: 0x6d943c20, 0x2c193: 0x6d943e20,\n\t0x2c194: 0x6d944020, 0x2c195: 0x6d944220, 0x2c196: 0x6d944420, 0x2c197: 0x6db78420,\n\t0x2c198: 0x6db78620, 0x2c199: 0x6db78820, 0x2c19a: 0x6db78a20, 0x2c19b: 0x6db78c20,\n\t0x2c19c: 0x6db78e20, 0x2c19d: 0x6db79020, 0x2c19e: 0x6dd5de20, 0x2c19f: 0x6dd5e020,\n\t0x2c1a0: 0x6dd5e220, 0x2c1a1: 0x6dd5e420, 0x2c1a2: 0x6dd5e620, 0x2c1a3: 0x6deebe20,\n\t0x2c1a4: 0x6deec020, 0x2c1a5: 0x6deec220, 0x2c1a6: 0x6deec420, 0x2c1a7: 0x6deec620,\n\t0x2c1a8: 0x6e032c20, 0x2c1a9: 0x6e032e20, 0x2c1aa: 0x6e14c420, 0x2c1ab: 0x6e14c620,\n\t0x2c1ac: 0x6e227020, 0x2c1ad: 0x6e2cbe20, 0x2c1ae: 0x6e2cc020, 0x2c1af: 0x6e34c020,\n\t0x2c1b0: 0x6e3a7a20, 0x2c1b1: 0x6e432220, 0x2c1b2: 0x6ce23a20, 0x2c1b3: 0x6ce23c20,\n\t0x2c1b4: 0x6ce23e20, 0x2c1b5: 0x6ce24020, 0x2c1b6: 0x6ce24220, 0x2c1b7: 0x6d10b020,\n\t0x2c1b8: 0x6d10b220, 0x2c1b9: 0x6d10b420, 0x2c1ba: 0x6d10b620, 0x2c1bb: 0x6d6b9c20,\n\t0x2c1bc: 0x6d94e220, 0x2c1bd: 0x6db81620, 0x2c1be: 0x6db81820, 0x2c1bf: 0x6def6a20,\n\t// Block 0xb07, offset 0x2c1c0\n\t0x2c1c0: 0x6e039a20, 0x2c1c1: 0x6e2ce820, 0x2c1c2: 0x6c612c20, 0x2c1c3: 0x6c612e20,\n\t0x2c1c4: 0x6c613020, 0x2c1c5: 0x6c878c20, 0x2c1c6: 0x6cb2d220, 0x2c1c7: 0x6cb2d420,\n\t0x2c1c8: 0x6cb2d620, 0x2c1c9: 0x6cb2d820, 0x2c1ca: 0x6cb2da20, 0x2c1cb: 0x6cb2dc20,\n\t0x2c1cc: 0x6cb2de20, 0x2c1cd: 0x6cb2e020, 0x2c1ce: 0x6cb2e220, 0x2c1cf: 0x6ce26420,\n\t0x2c1d0: 0x6ce26620, 0x2c1d1: 0x6ce26820, 0x2c1d2: 0x6ce26a20, 0x2c1d3: 0x6d10e020,\n\t0x2c1d4: 0x6d10e220, 0x2c1d5: 0x6d10e420, 0x2c1d6: 0x6d10e620, 0x2c1d7: 0x6d10e820,\n\t0x2c1d8: 0x6d3f0220, 0x2c1d9: 0x6d3f0420, 0x2c1da: 0x6d3f0620, 0x2c1db: 0x6d3f0820,\n\t0x2c1dc: 0x6d6bc820, 0x2c1dd: 0x6d6bca20, 0x2c1de: 0x6d6bcc20, 0x2c1df: 0x6d6bce20,\n\t0x2c1e0: 0x6d94fe20, 0x2c1e1: 0x6d950020, 0x2c1e2: 0x6d950220, 0x2c1e3: 0x6d950420,\n\t0x2c1e4: 0x6d950620, 0x2c1e5: 0x6db83620, 0x2c1e6: 0x6db83820, 0x2c1e7: 0x6db83a20,\n\t0x2c1e8: 0x6db83c20, 0x2c1e9: 0x6db83e20, 0x2c1ea: 0x6db84020, 0x2c1eb: 0x6dd6c020,\n\t0x2c1ec: 0x6dd6c220, 0x2c1ed: 0x6dd6c420, 0x2c1ee: 0x6dd6c620, 0x2c1ef: 0x6dd6c820,\n\t0x2c1f0: 0x6dd6ca20, 0x2c1f1: 0x6dd6cc20, 0x2c1f2: 0x6def9220, 0x2c1f3: 0x6def9420,\n\t0x2c1f4: 0x6def9620, 0x2c1f5: 0x6def9820, 0x2c1f6: 0x6e03ac20, 0x2c1f7: 0x6e151220,\n\t0x2c1f8: 0x6e151420, 0x2c1f9: 0x6e151620, 0x2c1fa: 0x6e22b420, 0x2c1fb: 0x6e22b620,\n\t0x2c1fc: 0x6e34e020, 0x2c1fd: 0x6e3e5e20, 0x2c1fe: 0x6e412e20, 0x2c1ff: 0x6e45de20,\n\t// Block 0xb08, offset 0x2c200\n\t0x2c200: 0x6c87b820, 0x2c201: 0x6cb33820, 0x2c202: 0x6c614420, 0x2c203: 0x6d6c5420,\n\t0x2c204: 0x6e03ec20, 0x2c205: 0x6d115e20, 0x2c206: 0x6d3f7620, 0x2c207: 0x6d6c6020,\n\t0x2c208: 0x6e03f820, 0x2c209: 0x6e03fa20, 0x2c20a: 0x6c272820, 0x2c20b: 0x6c272a20,\n\t0x2c20c: 0x6c40f820, 0x2c20d: 0x6c40fa20, 0x2c20e: 0x6c40fc20, 0x2c20f: 0x6c40fe20,\n\t0x2c210: 0x6c616620, 0x2c211: 0x6c616820, 0x2c212: 0x6c87d820, 0x2c213: 0x6c87da20,\n\t0x2c214: 0x6c87dc20, 0x2c215: 0x6c87de20, 0x2c216: 0x6c87e020, 0x2c217: 0x6c87e220,\n\t0x2c218: 0x6c87e420, 0x2c219: 0x6cb34820, 0x2c21a: 0x6cb34a20, 0x2c21b: 0x6cb34c20,\n\t0x2c21c: 0x6ce2fa20, 0x2c21d: 0x6ce2fc20, 0x2c21e: 0x6ce2fe20, 0x2c21f: 0x6ce30020,\n\t0x2c220: 0x6ce30220, 0x2c221: 0x6d116820, 0x2c222: 0x6d3f7820, 0x2c223: 0x6d3f7a20,\n\t0x2c224: 0x6d3f7c20, 0x2c225: 0x6d3f7e20, 0x2c226: 0x6d6c6620, 0x2c227: 0x6d6c6820,\n\t0x2c228: 0x6d6c6a20, 0x2c229: 0x6d6c6c20, 0x2c22a: 0x6d959620, 0x2c22b: 0x6d959820,\n\t0x2c22c: 0x6d959a20, 0x2c22d: 0x6d959c20, 0x2c22e: 0x6db8b020, 0x2c22f: 0x6dd71e20,\n\t0x2c230: 0x6dd72020, 0x2c231: 0x6defda20, 0x2c232: 0x6e34f820, 0x2c233: 0x6c0a8c20,\n\t0x2c234: 0x6c153a20, 0x2c235: 0x6c278c20, 0x2c236: 0x6c278e20, 0x2c237: 0x6c279020,\n\t0x2c238: 0x6c417c20, 0x2c239: 0x6c417e20, 0x2c23a: 0x6c418020, 0x2c23b: 0x6c61d220,\n\t0x2c23c: 0x6c61d420, 0x2c23d: 0x6d11fc20, 0x2c23e: 0x6c61d620, 0x2c23f: 0x6c61d820,\n\t// Block 0xb09, offset 0x2c240\n\t0x2c240: 0x6c61da20, 0x2c241: 0x6c61dc20, 0x2c242: 0x6c61de20, 0x2c243: 0x6c886c20,\n\t0x2c244: 0x6c886e20, 0x2c245: 0x6c887020, 0x2c246: 0x6c887220, 0x2c247: 0x6c887420,\n\t0x2c248: 0x6d400420, 0x2c249: 0x6d400620, 0x2c24a: 0x6cb40020, 0x2c24b: 0x6cb40220,\n\t0x2c24c: 0x6cb40420, 0x2c24d: 0x6cb40620, 0x2c24e: 0x6cb40820, 0x2c24f: 0x6cb40a20,\n\t0x2c250: 0x6ce3c020, 0x2c251: 0x6ce3c220, 0x2c252: 0x6ce3c420, 0x2c253: 0x6d120020,\n\t0x2c254: 0x6d120220, 0x2c255: 0x6d120420, 0x2c256: 0x6db90420, 0x2c257: 0x6d120620,\n\t0x2c258: 0x6d400a20, 0x2c259: 0x6d400c20, 0x2c25a: 0x6d400e20, 0x2c25b: 0x6d401020,\n\t0x2c25c: 0x6d401220, 0x2c25d: 0x6d6cfa20, 0x2c25e: 0x6d6cfc20, 0x2c25f: 0x6d6cfe20,\n\t0x2c260: 0x6d6d0020, 0x2c261: 0x6d95fc20, 0x2c262: 0x6db90620, 0x2c263: 0x6e2d1620,\n\t0x2c264: 0x6e2d1820, 0x2c265: 0x6c625620, 0x2c266: 0x6c625820, 0x2c267: 0x6c88ea20,\n\t0x2c268: 0x6c88ec20, 0x2c269: 0x6cb47420, 0x2c26a: 0x6cb47620, 0x2c26b: 0x6cb47820,\n\t0x2c26c: 0x6cb47a20, 0x2c26d: 0x6cb47c20, 0x2c26e: 0x6ce42020, 0x2c26f: 0x6ce42220,\n\t0x2c270: 0x6ce42420, 0x2c271: 0x6d126a20, 0x2c272: 0x6ce42620, 0x2c273: 0x6ce42820,\n\t0x2c274: 0x6d126c20, 0x2c275: 0x6d126e20, 0x2c276: 0x6d127020, 0x2c277: 0x6d127220,\n\t0x2c278: 0x6d127420, 0x2c279: 0x6d127620, 0x2c27a: 0x6d407a20, 0x2c27b: 0x6d407c20,\n\t0x2c27c: 0x6d6d4820, 0x2c27d: 0x6d6d4a20, 0x2c27e: 0x6d6d4c20, 0x2c27f: 0x6d6d4e20,\n\t// Block 0xb0a, offset 0x2c280\n\t0x2c280: 0x6d963020, 0x2c281: 0x6d963220, 0x2c282: 0x6d963420, 0x2c283: 0x6d963620,\n\t0x2c284: 0x6d963820, 0x2c285: 0x6d963a20, 0x2c286: 0x6d963c20, 0x2c287: 0x6d963e20,\n\t0x2c288: 0x6d964020, 0x2c289: 0x6db93420, 0x2c28a: 0x6db93620, 0x2c28b: 0x6db93820,\n\t0x2c28c: 0x6db93a20, 0x2c28d: 0x6dd78020, 0x2c28e: 0x6df00a20, 0x2c28f: 0x6df00c20,\n\t0x2c290: 0x6df00e20, 0x2c291: 0x6df01020, 0x2c292: 0x6df01220, 0x2c293: 0x6e155c20,\n\t0x2c294: 0x6e155e20, 0x2c295: 0x6e22f020, 0x2c296: 0x6e22f220, 0x2c297: 0x6e34fe20,\n\t0x2c298: 0x6e350020, 0x2c299: 0x6e433820, 0x2c29a: 0x6cb4ca20, 0x2c29b: 0x6c890c20,\n\t0x2c29c: 0x6cb4d420, 0x2c29d: 0x6ce47c20, 0x2c29e: 0x6ce47e20, 0x2c29f: 0x6ce48020,\n\t0x2c2a0: 0x6ce48220, 0x2c2a1: 0x6d12c020, 0x2c2a2: 0x6d12c220, 0x2c2a3: 0x6d12c420,\n\t0x2c2a4: 0x6d40d620, 0x2c2a5: 0x6d40d820, 0x2c2a6: 0x6d40da20, 0x2c2a7: 0x6d40dc20,\n\t0x2c2a8: 0x6d40de20, 0x2c2a9: 0x6d40e020, 0x2c2aa: 0x6d40e220, 0x2c2ab: 0x6d6db220,\n\t0x2c2ac: 0x6d6db420, 0x2c2ad: 0x6d6db620, 0x2c2ae: 0x6d6db820, 0x2c2af: 0x6d6dba20,\n\t0x2c2b0: 0x6d6dbc20, 0x2c2b1: 0x6d6dbe20, 0x2c2b2: 0x6d6dc020, 0x2c2b3: 0x6d969a20,\n\t0x2c2b4: 0x6d969c20, 0x2c2b5: 0x6d969e20, 0x2c2b6: 0x6d96a020, 0x2c2b7: 0x6db9a020,\n\t0x2c2b8: 0x6db9a220, 0x2c2b9: 0x6db9a420, 0x2c2ba: 0x6db9a620, 0x2c2bb: 0x6db9a820,\n\t0x2c2bc: 0x6db9aa20, 0x2c2bd: 0x6dd7d820, 0x2c2be: 0x6dd7da20, 0x2c2bf: 0x6dd7dc20,\n\t// Block 0xb0b, offset 0x2c2c0\n\t0x2c2c0: 0x6dd7de20, 0x2c2c1: 0x6dd7e020, 0x2c2c2: 0x6dd7e220, 0x2c2c3: 0x6dd7e420,\n\t0x2c2c4: 0x6dd7e620, 0x2c2c5: 0x6dd7e820, 0x2c2c6: 0x6dd7ea20, 0x2c2c7: 0x6dd7ec20,\n\t0x2c2c8: 0x6df05620, 0x2c2c9: 0x6df05820, 0x2c2ca: 0x6df05a20, 0x2c2cb: 0x6df05c20,\n\t0x2c2cc: 0x6df05e20, 0x2c2cd: 0x6df06020, 0x2c2ce: 0x6df06220, 0x2c2cf: 0x6df06420,\n\t0x2c2d0: 0x6df06620, 0x2c2d1: 0x6df06820, 0x2c2d2: 0x6df06a20, 0x2c2d3: 0x6df06c20,\n\t0x2c2d4: 0x6e046a20, 0x2c2d5: 0x6e046c20, 0x2c2d6: 0x6e046e20, 0x2c2d7: 0x6e047020,\n\t0x2c2d8: 0x6e047220, 0x2c2d9: 0x6e047420, 0x2c2da: 0x6e047620, 0x2c2db: 0x6e047820,\n\t0x2c2dc: 0x6e047a20, 0x2c2dd: 0x6e158020, 0x2c2de: 0x6e158220, 0x2c2df: 0x6e158420,\n\t0x2c2e0: 0x6e158620, 0x2c2e1: 0x6e158820, 0x2c2e2: 0x6e158a20, 0x2c2e3: 0x6e158c20,\n\t0x2c2e4: 0x6e158e20, 0x2c2e5: 0x6e159020, 0x2c2e6: 0x6e159220, 0x2c2e7: 0x6e230620,\n\t0x2c2e8: 0x6e230820, 0x2c2e9: 0x6e230a20, 0x2c2ea: 0x6e230c20, 0x2c2eb: 0x6e230e20,\n\t0x2c2ec: 0x6e231020, 0x2c2ed: 0x6e231220, 0x2c2ee: 0x6e231420, 0x2c2ef: 0x6e2d3a20,\n\t0x2c2f0: 0x6e2d3c20, 0x2c2f1: 0x6e2d3e20, 0x2c2f2: 0x6e2d4020, 0x2c2f3: 0x6e2d4220,\n\t0x2c2f4: 0x6e2d4420, 0x2c2f5: 0x6e351620, 0x2c2f6: 0x6e351820, 0x2c2f7: 0x6e351a20,\n\t0x2c2f8: 0x6e3ab220, 0x2c2f9: 0x6e449220, 0x2c2fa: 0x6ce52420, 0x2c2fb: 0x6ce52620,\n\t0x2c2fc: 0x6ce52820, 0x2c2fd: 0x6d139e20, 0x2c2fe: 0x6d13a020, 0x2c2ff: 0x6d13a220,\n\t// Block 0xb0c, offset 0x2c300\n\t0x2c300: 0x6d41c220, 0x2c301: 0x6d6ed020, 0x2c302: 0x6dd8fa20, 0x2c303: 0x6e058c20,\n\t0x2c304: 0x6e058e20, 0x2c305: 0x6e059020, 0x2c306: 0x6e435820, 0x2c307: 0x6cb58820,\n\t0x2c308: 0x6d13f620, 0x2c309: 0x6d13f820, 0x2c30a: 0x6d41fc20, 0x2c30b: 0x6df16420,\n\t0x2c30c: 0x6cb5a620, 0x2c30d: 0x6cb5a820, 0x2c30e: 0x6ce58c20, 0x2c30f: 0x6ce58e20,\n\t0x2c310: 0x6ce59020, 0x2c311: 0x6ce59220, 0x2c312: 0x6d141820, 0x2c313: 0x6d141a20,\n\t0x2c314: 0x6d141c20, 0x2c315: 0x6d420c20, 0x2c316: 0x6d420e20, 0x2c317: 0x6d421020,\n\t0x2c318: 0x6d421220, 0x2c319: 0x6d421420, 0x2c31a: 0x6d421620, 0x2c31b: 0x6d421820,\n\t0x2c31c: 0x6d6f1c20, 0x2c31d: 0x6d6f1e20, 0x2c31e: 0x6d6f2020, 0x2c31f: 0x6d6f2220,\n\t0x2c320: 0x6d982420, 0x2c321: 0x6d982620, 0x2c322: 0x6d982820, 0x2c323: 0x6d982a20,\n\t0x2c324: 0x6d982c20, 0x2c325: 0x6d982e20, 0x2c326: 0x6d983020, 0x2c327: 0x6d983220,\n\t0x2c328: 0x6d983420, 0x2c329: 0x6dbb2620, 0x2c32a: 0x6dbb2820, 0x2c32b: 0x6dbb2a20,\n\t0x2c32c: 0x6dbb2c20, 0x2c32d: 0x6dbb2e20, 0x2c32e: 0x6dbb3020, 0x2c32f: 0x6dbb3220,\n\t0x2c330: 0x6df17420, 0x2c331: 0x6e05a020, 0x2c332: 0x6e165620, 0x2c333: 0x6e165820,\n\t0x2c334: 0x6e165a20, 0x2c335: 0x6e23a420, 0x2c336: 0x6d426220, 0x2c337: 0x6d6f8220,\n\t0x2c338: 0x6dbb8620, 0x2c339: 0x6c0ab020, 0x2c33a: 0x6c0ab220, 0x2c33b: 0x6c15a220,\n\t0x2c33c: 0x6c281e20, 0x2c33d: 0x6c282020, 0x2c33e: 0x6c89a220, 0x2c33f: 0x6c282220,\n\t// Block 0xb0d, offset 0x2c340\n\t0x2c340: 0x6c282420, 0x2c341: 0x6c421220, 0x2c342: 0x6c421420, 0x2c343: 0x6c421620,\n\t0x2c344: 0x6c62cc20, 0x2c345: 0x6c62ce20, 0x2c346: 0x6c62d020, 0x2c347: 0x6c62d220,\n\t0x2c348: 0x6c62d420, 0x2c349: 0x6c89a420, 0x2c34a: 0x6c89a620, 0x2c34b: 0x6c89a820,\n\t0x2c34c: 0x6c89aa20, 0x2c34d: 0x6c89ac20, 0x2c34e: 0x6c89ae20, 0x2c34f: 0x6c89b020,\n\t0x2c350: 0x6cb5da20, 0x2c351: 0x6cb5dc20, 0x2c352: 0x6cb5de20, 0x2c353: 0x6cb5e020,\n\t0x2c354: 0x6cb5e220, 0x2c355: 0x6cb5e420, 0x2c356: 0x6cb5e620, 0x2c357: 0x6ce5fc20,\n\t0x2c358: 0x6ce5fe20, 0x2c359: 0x6ce60020, 0x2c35a: 0x6d148020, 0x2c35b: 0x6d148220,\n\t0x2c35c: 0x6d148420, 0x2c35d: 0x6d148620, 0x2c35e: 0x6d148820, 0x2c35f: 0x6d148a20,\n\t0x2c360: 0x6d426c20, 0x2c361: 0x6d426e20, 0x2c362: 0x6d427020, 0x2c363: 0x6d427220,\n\t0x2c364: 0x6d6f8820, 0x2c365: 0x6d6f8a20, 0x2c366: 0x6d6f8c20, 0x2c367: 0x6d989220,\n\t0x2c368: 0x6d989420, 0x2c369: 0x6d6f8e20, 0x2c36a: 0x6d989620, 0x2c36b: 0x6dbb8c20,\n\t0x2c36c: 0x6dbb8e20, 0x2c36d: 0x6dbb9020, 0x2c36e: 0x6df1a220, 0x2c36f: 0x6e05da20,\n\t0x2c370: 0x6e169020, 0x2c371: 0x6c8a3020, 0x2c372: 0x6cb66020, 0x2c373: 0x6cb66220,\n\t0x2c374: 0x6ce68a20, 0x2c375: 0x6ce68c20, 0x2c376: 0x6ce68e20, 0x2c377: 0x6d14e020,\n\t0x2c378: 0x6d14e220, 0x2c379: 0x6d14e420, 0x2c37a: 0x6d14e620, 0x2c37b: 0x6d42d020,\n\t0x2c37c: 0x6d6fcc20, 0x2c37d: 0x6d6fce20, 0x2c37e: 0x6d98c820, 0x2c37f: 0x6d98ca20,\n\t// Block 0xb0e, offset 0x2c380\n\t0x2c380: 0x6d8a5620, 0x2c381: 0x6dbbb620, 0x2c382: 0x6dbbb820, 0x2c383: 0x6dd98a20,\n\t0x2c384: 0x6df1ae20, 0x2c385: 0x6e05ee20, 0x2c386: 0x6e05f020, 0x2c387: 0x6e05f220,\n\t0x2c388: 0x6e23be20, 0x2c389: 0x6e3afa20, 0x2c38a: 0x6e464620, 0x2c38b: 0x6cb67c20,\n\t0x2c38c: 0x6ce6be20, 0x2c38d: 0x6ce6c020, 0x2c38e: 0x6d151820, 0x2c38f: 0x6d430c20,\n\t0x2c390: 0x6d430e20, 0x2c391: 0x6d431020, 0x2c392: 0x6d431220, 0x2c393: 0x6d431420,\n\t0x2c394: 0x6d431620, 0x2c395: 0x6d431820, 0x2c396: 0x6d431a20, 0x2c397: 0x6d6ffc20,\n\t0x2c398: 0x6d6ffe20, 0x2c399: 0x6d700020, 0x2c39a: 0x6d990e20, 0x2c39b: 0x6d991020,\n\t0x2c39c: 0x6d991220, 0x2c39d: 0x6d991420, 0x2c39e: 0x6dbbec20, 0x2c39f: 0x6dbbee20,\n\t0x2c3a0: 0x6dbbf020, 0x2c3a1: 0x6dbbf220, 0x2c3a2: 0x6dbbf420, 0x2c3a3: 0x6dbbf620,\n\t0x2c3a4: 0x6dbbf820, 0x2c3a5: 0x6dd9be20, 0x2c3a6: 0x6dd9c020, 0x2c3a7: 0x6dd9c220,\n\t0x2c3a8: 0x6dd9c420, 0x2c3a9: 0x6dd9c620, 0x2c3aa: 0x6dd9c820, 0x2c3ab: 0x6df1d420,\n\t0x2c3ac: 0x6df1d620, 0x2c3ad: 0x6df1d820, 0x2c3ae: 0x6df1da20, 0x2c3af: 0x6df1dc20,\n\t0x2c3b0: 0x6e061a20, 0x2c3b1: 0x6e061c20, 0x2c3b2: 0x6e23d220, 0x2c3b3: 0x6e23d420,\n\t0x2c3b4: 0x6e23d620, 0x2c3b5: 0x6e2de620, 0x2c3b6: 0x6e2de820, 0x2c3b7: 0x6e358e20,\n\t0x2c3b8: 0x6e3b0220, 0x2c3b9: 0x6e416620, 0x2c3ba: 0x6e46f020, 0x2c3bb: 0x6e473e20,\n\t0x2c3bc: 0x6e240c20, 0x2c3bd: 0x6cb69c20, 0x2c3be: 0x6cb69e20, 0x2c3bf: 0x6ce6fe20,\n\t// Block 0xb0f, offset 0x2c3c0\n\t0x2c3c0: 0x6d705020, 0x2c3c1: 0x6e067220, 0x2c3c2: 0x6d156820, 0x2c3c3: 0x6d156a20,\n\t0x2c3c4: 0x6d156c20, 0x2c3c5: 0x6d435c20, 0x2c3c6: 0x6d435e20, 0x2c3c7: 0x6d436020,\n\t0x2c3c8: 0x6d998620, 0x2c3c9: 0x6d998820, 0x2c3ca: 0x6dbc5620, 0x2c3cb: 0x6e067c20,\n\t0x2c3cc: 0x6e16f020, 0x2c3cd: 0x6e16f220, 0x2c3ce: 0x6e240e20, 0x2c3cf: 0x6e35b420,\n\t0x2c3d0: 0x6ce71820, 0x2c3d1: 0x6ce71a20, 0x2c3d2: 0x6ce71c20, 0x2c3d3: 0x6d157c20,\n\t0x2c3d4: 0x6d157e20, 0x2c3d5: 0x6d158020, 0x2c3d6: 0x6d158220, 0x2c3d7: 0x6d158420,\n\t0x2c3d8: 0x6d158620, 0x2c3d9: 0x6d437e20, 0x2c3da: 0x6d438020, 0x2c3db: 0x6d438220,\n\t0x2c3dc: 0x6d438420, 0x2c3dd: 0x6d438620, 0x2c3de: 0x6d438820, 0x2c3df: 0x6d707220,\n\t0x2c3e0: 0x6d99a220, 0x2c3e1: 0x6d99a420, 0x2c3e2: 0x6d99a620, 0x2c3e3: 0x6d99a820,\n\t0x2c3e4: 0x6d99aa20, 0x2c3e5: 0x6d99ac20, 0x2c3e6: 0x6d99ae20, 0x2c3e7: 0x6d99b020,\n\t0x2c3e8: 0x6dbc6620, 0x2c3e9: 0x6dbc6820, 0x2c3ea: 0x6dbc6a20, 0x2c3eb: 0x6dbc6c20,\n\t0x2c3ec: 0x6dbc6e20, 0x2c3ed: 0x6dbc7020, 0x2c3ee: 0x6dbc7220, 0x2c3ef: 0x6dda3020,\n\t0x2c3f0: 0x6dda3220, 0x2c3f1: 0x6dda3420, 0x2c3f2: 0x6dda3620, 0x2c3f3: 0x6dda3820,\n\t0x2c3f4: 0x6dda3a20, 0x2c3f5: 0x6dda3c20, 0x2c3f6: 0x6df24220, 0x2c3f7: 0x6df24420,\n\t0x2c3f8: 0x6df24620, 0x2c3f9: 0x6df24820, 0x2c3fa: 0x6df24a20, 0x2c3fb: 0x6df24c20,\n\t0x2c3fc: 0x6e068a20, 0x2c3fd: 0x6e068c20, 0x2c3fe: 0x6e068e20, 0x2c3ff: 0x6e170a20,\n\t// Block 0xb10, offset 0x2c400\n\t0x2c400: 0x6e170c20, 0x2c401: 0x6e170e20, 0x2c402: 0x6e171020, 0x2c403: 0x6e171220,\n\t0x2c404: 0x6e171420, 0x2c405: 0x6e241420, 0x2c406: 0x6e241620, 0x2c407: 0x6e2e0a20,\n\t0x2c408: 0x6e2e0c20, 0x2c409: 0x6e35ba20, 0x2c40a: 0x6e3b2020, 0x2c40b: 0x6e3b2220,\n\t0x2c40c: 0x6e3edc20, 0x2c40d: 0x6e3ede20, 0x2c40e: 0x6e417620, 0x2c40f: 0x6d15c620,\n\t0x2c410: 0x6d43d820, 0x2c411: 0x6d43da20, 0x2c412: 0x6d43dc20, 0x2c413: 0x6d43de20,\n\t0x2c414: 0x6d99ec20, 0x2c415: 0x6dbcc420, 0x2c416: 0x6ddaa420, 0x2c417: 0x6ddaa620,\n\t0x2c418: 0x6ddaa820, 0x2c419: 0x6df2a420, 0x2c41a: 0x6df2a620, 0x2c41b: 0x6e174020,\n\t0x2c41c: 0x6e244620, 0x2c41d: 0x6e2e2c20, 0x2c41e: 0x6d15de20, 0x2c41f: 0x6d70e020,\n\t0x2c420: 0x6dbce820, 0x2c421: 0x6df2c220, 0x2c422: 0x6df2c420, 0x2c423: 0x6e06ea20,\n\t0x2c424: 0x6e175620, 0x2c425: 0x6e2e3620, 0x2c426: 0x6ce73c20, 0x2c427: 0x6ce73e20,\n\t0x2c428: 0x6ce74020, 0x2c429: 0x6d15e620, 0x2c42a: 0x6d440220, 0x2c42b: 0x6d9a0820,\n\t0x2c42c: 0x6d9a0a20, 0x2c42d: 0x6ddaca20, 0x2c42e: 0x6df2cc20, 0x2c42f: 0x6df2ce20,\n\t0x2c430: 0x6e245c20, 0x2c431: 0x6ce74420, 0x2c432: 0x6ce74620, 0x2c433: 0x6d15f420,\n\t0x2c434: 0x6d15f620, 0x2c435: 0x6d15f820, 0x2c436: 0x6d441420, 0x2c437: 0x6d441620,\n\t0x2c438: 0x6d441820, 0x2c439: 0x6d441a20, 0x2c43a: 0x6d441c20, 0x2c43b: 0x6d441e20,\n\t0x2c43c: 0x6d442020, 0x2c43d: 0x6d442220, 0x2c43e: 0x6d442420, 0x2c43f: 0x6d70f820,\n\t// Block 0xb11, offset 0x2c440\n\t0x2c440: 0x6d70fa20, 0x2c441: 0x6d70fc20, 0x2c442: 0x6d70fe20, 0x2c443: 0x6d9a1a20,\n\t0x2c444: 0x6d9a1c20, 0x2c445: 0x6d9a1e20, 0x2c446: 0x6d9a2020, 0x2c447: 0x6d9a2220,\n\t0x2c448: 0x6d9a2420, 0x2c449: 0x6d9a2620, 0x2c44a: 0x6d9a2820, 0x2c44b: 0x6dbcfa20,\n\t0x2c44c: 0x6dbcfc20, 0x2c44d: 0x6dbcfe20, 0x2c44e: 0x6dbd0020, 0x2c44f: 0x6dbd0220,\n\t0x2c450: 0x6dbd0420, 0x2c451: 0x6dbd0620, 0x2c452: 0x6dbd0820, 0x2c453: 0x6dbd0a20,\n\t0x2c454: 0x6ddadc20, 0x2c455: 0x6ddade20, 0x2c456: 0x6ddae020, 0x2c457: 0x6ddae220,\n\t0x2c458: 0x6ddae420, 0x2c459: 0x6ddae620, 0x2c45a: 0x6ddae820, 0x2c45b: 0x6ddaea20,\n\t0x2c45c: 0x6ddaec20, 0x2c45d: 0x6ddaee20, 0x2c45e: 0x6df2dc20, 0x2c45f: 0x6df2de20,\n\t0x2c460: 0x6df2e020, 0x2c461: 0x6df2e220, 0x2c462: 0x6df2e420, 0x2c463: 0x6df2e620,\n\t0x2c464: 0x6df2e820, 0x2c465: 0x6df2ea20, 0x2c466: 0x6df2ec20, 0x2c467: 0x6df2ee20,\n\t0x2c468: 0x6e070620, 0x2c469: 0x6e070820, 0x2c46a: 0x6e070a20, 0x2c46b: 0x6e070c20,\n\t0x2c46c: 0x6e176620, 0x2c46d: 0x6e176820, 0x2c46e: 0x6e176a20, 0x2c46f: 0x6e176c20,\n\t0x2c470: 0x6e176e20, 0x2c471: 0x6e177020, 0x2c472: 0x6e246820, 0x2c473: 0x6e246a20,\n\t0x2c474: 0x6e246c20, 0x2c475: 0x6e35da20, 0x2c476: 0x6e35dc20, 0x2c477: 0x6e3b3620,\n\t0x2c478: 0x6cb6cc20, 0x2c479: 0x6ce77820, 0x2c47a: 0x6d165020, 0x2c47b: 0x6d165220,\n\t0x2c47c: 0x6d165420, 0x2c47d: 0x6d165620, 0x2c47e: 0x6d447e20, 0x2c47f: 0x6d448020,\n\t// Block 0xb12, offset 0x2c480\n\t0x2c480: 0x6d448220, 0x2c481: 0x6d448420, 0x2c482: 0x6d448620, 0x2c483: 0x6d448820,\n\t0x2c484: 0x6d716c20, 0x2c485: 0x6d716e20, 0x2c486: 0x6d9abc20, 0x2c487: 0x6d9abe20,\n\t0x2c488: 0x6d9ac020, 0x2c489: 0x6d9ac220, 0x2c48a: 0x6d9ac420, 0x2c48b: 0x6dbd6c20,\n\t0x2c48c: 0x6dbd6e20, 0x2c48d: 0x6dbd7020, 0x2c48e: 0x6dbd7220, 0x2c48f: 0x6dbd7420,\n\t0x2c490: 0x6dbd7620, 0x2c491: 0x6ddb4220, 0x2c492: 0x6ddb4420, 0x2c493: 0x6ddb4620,\n\t0x2c494: 0x6ddb4820, 0x2c495: 0x6ddb4a20, 0x2c496: 0x6ddb4c20, 0x2c497: 0x6ddb4e20,\n\t0x2c498: 0x6df33c20, 0x2c499: 0x6df33e20, 0x2c49a: 0x6df34020, 0x2c49b: 0x6e074a20,\n\t0x2c49c: 0x6e074c20, 0x2c49d: 0x6e17ae20, 0x2c49e: 0x6e2e6e20, 0x2c49f: 0x6e35f220,\n\t0x2c4a0: 0x6dbdbc20, 0x2c4a1: 0x6ddb8620, 0x2c4a2: 0x6cb6d620, 0x2c4a3: 0x6ce79820,\n\t0x2c4a4: 0x6ce79a20, 0x2c4a5: 0x6ce79c20, 0x2c4a6: 0x6d168a20, 0x2c4a7: 0x6d168c20,\n\t0x2c4a8: 0x6d168e20, 0x2c4a9: 0x6d169020, 0x2c4aa: 0x6d169220, 0x2c4ab: 0x6d44c220,\n\t0x2c4ac: 0x6d44c420, 0x2c4ad: 0x6d44c620, 0x2c4ae: 0x6d44c820, 0x2c4af: 0x6d44ca20,\n\t0x2c4b0: 0x6d44cc20, 0x2c4b1: 0x6d44ce20, 0x2c4b2: 0x6d44d020, 0x2c4b3: 0x6d44d220,\n\t0x2c4b4: 0x6d44d420, 0x2c4b5: 0x6d719820, 0x2c4b6: 0x6d719a20, 0x2c4b7: 0x6d719c20,\n\t0x2c4b8: 0x6d719e20, 0x2c4b9: 0x6d71a020, 0x2c4ba: 0x6d71a220, 0x2c4bb: 0x6d71a420,\n\t0x2c4bc: 0x6d9afa20, 0x2c4bd: 0x6d9afc20, 0x2c4be: 0x6d9afe20, 0x2c4bf: 0x6d9b0020,\n\t// Block 0xb13, offset 0x2c4c0\n\t0x2c4c0: 0x6d9b0220, 0x2c4c1: 0x6d9b0420, 0x2c4c2: 0x6d9b0620, 0x2c4c3: 0x6dbdc020,\n\t0x2c4c4: 0x6dbdc220, 0x2c4c5: 0x6dbdc420, 0x2c4c6: 0x6dbdc620, 0x2c4c7: 0x6dbdc820,\n\t0x2c4c8: 0x6ddb8a20, 0x2c4c9: 0x6ddb8c20, 0x2c4ca: 0x6ddb8e20, 0x2c4cb: 0x6ddb9020,\n\t0x2c4cc: 0x6ddb9220, 0x2c4cd: 0x6ddb9420, 0x2c4ce: 0x6ddb9620, 0x2c4cf: 0x6ddb9820,\n\t0x2c4d0: 0x6df37e20, 0x2c4d1: 0x6df38020, 0x2c4d2: 0x6df38220, 0x2c4d3: 0x6df38420,\n\t0x2c4d4: 0x6df38620, 0x2c4d5: 0x6e076e20, 0x2c4d6: 0x6e077020, 0x2c4d7: 0x6e077220,\n\t0x2c4d8: 0x6e17e220, 0x2c4d9: 0x6e17e420, 0x2c4da: 0x6e17e620, 0x2c4db: 0x6e17e820,\n\t0x2c4dc: 0x6e17ea20, 0x2c4dd: 0x6e24a620, 0x2c4de: 0x6e24a820, 0x2c4df: 0x6e24aa20,\n\t0x2c4e0: 0x6e24ac20, 0x2c4e1: 0x6e2e7a20, 0x2c4e2: 0x6e2e7c20, 0x2c4e3: 0x6e2e7e20,\n\t0x2c4e4: 0x6e2e8020, 0x2c4e5: 0x6e360020, 0x2c4e6: 0x6e3f0420, 0x2c4e7: 0x6e3f0620,\n\t0x2c4e8: 0x6e419620, 0x2c4e9: 0x6e437420, 0x2c4ea: 0x6e182020, 0x2c4eb: 0x6d720820,\n\t0x2c4ec: 0x6d720a20, 0x2c4ed: 0x6ddbfa20, 0x2c4ee: 0x6df3e420, 0x2c4ef: 0x6d453420,\n\t0x2c4f0: 0x6dbe5020, 0x2c4f1: 0x6dbe5220, 0x2c4f2: 0x6dbe5420, 0x2c4f3: 0x6e419e20,\n\t0x2c4f4: 0x6ce7f020, 0x2c4f5: 0x6d171020, 0x2c4f6: 0x6d171220, 0x2c4f7: 0x6d454820,\n\t0x2c4f8: 0x6d454a20, 0x2c4f9: 0x6d454c20, 0x2c4fa: 0x6d454e20, 0x2c4fb: 0x6d455020,\n\t0x2c4fc: 0x6d455220, 0x2c4fd: 0x6d455420, 0x2c4fe: 0x6d455620, 0x2c4ff: 0x6d722420,\n\t// Block 0xb14, offset 0x2c500\n\t0x2c500: 0x6d722620, 0x2c501: 0x6d722820, 0x2c502: 0x6d722a20, 0x2c503: 0x6d722c20,\n\t0x2c504: 0x6d722e20, 0x2c505: 0x6d723020, 0x2c506: 0x6d9baa20, 0x2c507: 0x6d9bac20,\n\t0x2c508: 0x6d9bae20, 0x2c509: 0x6d9bb020, 0x2c50a: 0x6d9bb220, 0x2c50b: 0x6d9bb420,\n\t0x2c50c: 0x6d9bb620, 0x2c50d: 0x6d9bb820, 0x2c50e: 0x6dbe6620, 0x2c50f: 0x6dbe6820,\n\t0x2c510: 0x6dbe6a20, 0x2c511: 0x6dbe6c20, 0x2c512: 0x6dbe6e20, 0x2c513: 0x6ddc1620,\n\t0x2c514: 0x6ddc1820, 0x2c515: 0x6ddc1a20, 0x2c516: 0x6ddc1c20, 0x2c517: 0x6ddc1e20,\n\t0x2c518: 0x6ddc2020, 0x2c519: 0x6ddc2220, 0x2c51a: 0x6ddc2420, 0x2c51b: 0x6ddc2620,\n\t0x2c51c: 0x6df3fc20, 0x2c51d: 0x6df3fe20, 0x2c51e: 0x6df40020, 0x2c51f: 0x6df40220,\n\t0x2c520: 0x6df40420, 0x2c521: 0x6df40620, 0x2c522: 0x6df40820, 0x2c523: 0x6e07d820,\n\t0x2c524: 0x6e07da20, 0x2c525: 0x6e07dc20, 0x2c526: 0x6e07de20, 0x2c527: 0x6e07e020,\n\t0x2c528: 0x6e07e220, 0x2c529: 0x6e07e420, 0x2c52a: 0x6e183220, 0x2c52b: 0x6e183420,\n\t0x2c52c: 0x6e183620, 0x2c52d: 0x6e183820, 0x2c52e: 0x6e183a20, 0x2c52f: 0x6e183c20,\n\t0x2c530: 0x6e183e20, 0x2c531: 0x6e184020, 0x2c532: 0x6e24e420, 0x2c533: 0x6e24e620,\n\t0x2c534: 0x6e24e820, 0x2c535: 0x6e24ea20, 0x2c536: 0x6e24ec20, 0x2c537: 0x6e2e9e20,\n\t0x2c538: 0x6e2ea020, 0x2c539: 0x6e2ea220, 0x2c53a: 0x6e361c20, 0x2c53b: 0x6e361e20,\n\t0x2c53c: 0x6e362020, 0x2c53d: 0x6e3b5620, 0x2c53e: 0x6e3f1220, 0x2c53f: 0x6e41a220,\n\t// Block 0xb15, offset 0x2c540\n\t0x2c540: 0x6e437820, 0x2c541: 0x6e44c020, 0x2c542: 0x6e46b820, 0x2c543: 0x6d9c3020,\n\t0x2c544: 0x6dbec220, 0x2c545: 0x6e086c20, 0x2c546: 0x6cb72e20, 0x2c547: 0x6ce82a20,\n\t0x2c548: 0x6d45b820, 0x2c549: 0x6d45ba20, 0x2c54a: 0x6d72b220, 0x2c54b: 0x6d72b420,\n\t0x2c54c: 0x6d72b620, 0x2c54d: 0x6d72b820, 0x2c54e: 0x6d72ba20, 0x2c54f: 0x6d9c3620,\n\t0x2c550: 0x6d9c3820, 0x2c551: 0x6d9c3a20, 0x2c552: 0x6d9c3c20, 0x2c553: 0x6d9c3e20,\n\t0x2c554: 0x6d9c4020, 0x2c555: 0x6dbec620, 0x2c556: 0x6dbec820, 0x2c557: 0x6dbeca20,\n\t0x2c558: 0x6dbecc20, 0x2c559: 0x6dbece20, 0x2c55a: 0x6dbed020, 0x2c55b: 0x6ddca820,\n\t0x2c55c: 0x6ddcaa20, 0x2c55d: 0x6df48420, 0x2c55e: 0x6df48620, 0x2c55f: 0x6df48820,\n\t0x2c560: 0x6df48a20, 0x2c561: 0x6e087420, 0x2c562: 0x6e189220, 0x2c563: 0x6e254420,\n\t0x2c564: 0x6e2ee420, 0x2c565: 0x6e364220, 0x2c566: 0x6e3b7220, 0x2c567: 0x6ce83e20,\n\t0x2c568: 0x6d177220, 0x2c569: 0x6d45e420, 0x2c56a: 0x6df4a420, 0x2c56b: 0x6e256220,\n\t0x2c56c: 0x6e3b7e20, 0x2c56d: 0x6ce84220, 0x2c56e: 0x6ce84420, 0x2c56f: 0x6d45fa20,\n\t0x2c570: 0x6d45fc20, 0x2c571: 0x6d45fe20, 0x2c572: 0x6d460020, 0x2c573: 0x6d460220,\n\t0x2c574: 0x6d460420, 0x2c575: 0x6d72ee20, 0x2c576: 0x6d72f020, 0x2c577: 0x6d9c7c20,\n\t0x2c578: 0x6d9c7e20, 0x2c579: 0x6dbf0c20, 0x2c57a: 0x6dbf0e20, 0x2c57b: 0x6dbf1020,\n\t0x2c57c: 0x6dbf1220, 0x2c57d: 0x6ddce420, 0x2c57e: 0x6ddce620, 0x2c57f: 0x6ddce820,\n\t// Block 0xb16, offset 0x2c580\n\t0x2c580: 0x6ddcea20, 0x2c581: 0x6ddcec20, 0x2c582: 0x6ddcee20, 0x2c583: 0x6ddcf020,\n\t0x2c584: 0x6df4aa20, 0x2c585: 0x6df4ac20, 0x2c586: 0x6df4ae20, 0x2c587: 0x6df4b020,\n\t0x2c588: 0x6e08aa20, 0x2c589: 0x6e08ac20, 0x2c58a: 0x6e08ae20, 0x2c58b: 0x6e08b020,\n\t0x2c58c: 0x6e18b020, 0x2c58d: 0x6e18b220, 0x2c58e: 0x6e256a20, 0x2c58f: 0x6e365420,\n\t0x2c590: 0x6e365620, 0x2c591: 0x6e365820, 0x2c592: 0x6e365a20, 0x2c593: 0x6e3b8220,\n\t0x2c594: 0x6e3b8420, 0x2c595: 0x6e3f3020, 0x2c596: 0x6e44c820, 0x2c597: 0x6e08ec20,\n\t0x2c598: 0x6e18e820, 0x2c599: 0x6d464420, 0x2c59a: 0x6d464620, 0x2c59b: 0x6d734c20,\n\t0x2c59c: 0x6d9cc620, 0x2c59d: 0x6e25ac20, 0x2c59e: 0x6e3b9c20, 0x2c59f: 0x6d464e20,\n\t0x2c5a0: 0x6d735420, 0x2c5a1: 0x6d735620, 0x2c5a2: 0x6d9cda20, 0x2c5a3: 0x6d9cdc20,\n\t0x2c5a4: 0x6ddd4e20, 0x2c5a5: 0x6ddd5020, 0x2c5a6: 0x6ddd5220, 0x2c5a7: 0x6ddd5420,\n\t0x2c5a8: 0x6df50420, 0x2c5a9: 0x6df50620, 0x2c5aa: 0x6e090020, 0x2c5ab: 0x6e25b820,\n\t0x2c5ac: 0x6e25ba20, 0x2c5ad: 0x6e25bc20, 0x2c5ae: 0x6e2f3420, 0x2c5af: 0x6e368620,\n\t0x2c5b0: 0x6e368820, 0x2c5b1: 0x6e46ba20, 0x2c5b2: 0x6ce86c20, 0x2c5b3: 0x6d17c420,\n\t0x2c5b4: 0x6d468c20, 0x2c5b5: 0x6d468e20, 0x2c5b6: 0x6d469020, 0x2c5b7: 0x6d738620,\n\t0x2c5b8: 0x6d738820, 0x2c5b9: 0x6d738a20, 0x2c5ba: 0x6d738c20, 0x2c5bb: 0x6d738e20,\n\t0x2c5bc: 0x6d739020, 0x2c5bd: 0x6d739220, 0x2c5be: 0x6d739420, 0x2c5bf: 0x6d9d0e20,\n\t// Block 0xb17, offset 0x2c5c0\n\t0x2c5c0: 0x6d9d1020, 0x2c5c1: 0x6d9d1220, 0x2c5c2: 0x6d9d1420, 0x2c5c3: 0x6d9d1620,\n\t0x2c5c4: 0x6d9d1820, 0x2c5c5: 0x6d9d1a20, 0x2c5c6: 0x6d9d1c20, 0x2c5c7: 0x6d9d1e20,\n\t0x2c5c8: 0x6d9d2020, 0x2c5c9: 0x6d9d2220, 0x2c5ca: 0x6dbf9220, 0x2c5cb: 0x6dbf9420,\n\t0x2c5cc: 0x6dbf9620, 0x2c5cd: 0x6dbf9820, 0x2c5ce: 0x6dbf9a20, 0x2c5cf: 0x6ddd8420,\n\t0x2c5d0: 0x6ddd8620, 0x2c5d1: 0x6ddd8820, 0x2c5d2: 0x6ddd8a20, 0x2c5d3: 0x6ddd8c20,\n\t0x2c5d4: 0x6ddd8e20, 0x2c5d5: 0x6ddd9020, 0x2c5d6: 0x6ddd9220, 0x2c5d7: 0x6ddd9420,\n\t0x2c5d8: 0x6ddd9620, 0x2c5d9: 0x6df51e20, 0x2c5da: 0x6df52020, 0x2c5db: 0x6df52220,\n\t0x2c5dc: 0x6df52420, 0x2c5dd: 0x6df52620, 0x2c5de: 0x6df52820, 0x2c5df: 0x6df52a20,\n\t0x2c5e0: 0x6df52c20, 0x2c5e1: 0x6df52e20, 0x2c5e2: 0x6df53020, 0x2c5e3: 0x6df53220,\n\t0x2c5e4: 0x6df53420, 0x2c5e5: 0x6df53620, 0x2c5e6: 0x6df53820, 0x2c5e7: 0x6df53a20,\n\t0x2c5e8: 0x6df53c20, 0x2c5e9: 0x6df53e20, 0x2c5ea: 0x6df54020, 0x2c5eb: 0x6e091e20,\n\t0x2c5ec: 0x6e092020, 0x2c5ed: 0x6e092220, 0x2c5ee: 0x6e092420, 0x2c5ef: 0x6e092620,\n\t0x2c5f0: 0x6e092820, 0x2c5f1: 0x6e092a20, 0x2c5f2: 0x6e092c20, 0x2c5f3: 0x6e092e20,\n\t0x2c5f4: 0x6e093020, 0x2c5f5: 0x6e193420, 0x2c5f6: 0x6e193620, 0x2c5f7: 0x6e193820,\n\t0x2c5f8: 0x6e193a20, 0x2c5f9: 0x6e193c20, 0x2c5fa: 0x6e193e20, 0x2c5fb: 0x6e194020,\n\t0x2c5fc: 0x6e194220, 0x2c5fd: 0x6e194420, 0x2c5fe: 0x6e25c820, 0x2c5ff: 0x6e25ca20,\n\t// Block 0xb18, offset 0x2c600\n\t0x2c600: 0x6e25cc20, 0x2c601: 0x6e25ce20, 0x2c602: 0x6e25d020, 0x2c603: 0x6e25d220,\n\t0x2c604: 0x6e25d420, 0x2c605: 0x6e25d620, 0x2c606: 0x6e25d820, 0x2c607: 0x6e25da20,\n\t0x2c608: 0x6e25dc20, 0x2c609: 0x6e2f4820, 0x2c60a: 0x6e2f4a20, 0x2c60b: 0x6e2f4c20,\n\t0x2c60c: 0x6e2f4e20, 0x2c60d: 0x6e2f5020, 0x2c60e: 0x6e2f5220, 0x2c60f: 0x6e2f5420,\n\t0x2c610: 0x6e369a20, 0x2c611: 0x6e369c20, 0x2c612: 0x6e369e20, 0x2c613: 0x6e36a020,\n\t0x2c614: 0x6e36a220, 0x2c615: 0x6e36a420, 0x2c616: 0x6e3ba620, 0x2c617: 0x6e3ba820,\n\t0x2c618: 0x6e3baa20, 0x2c619: 0x6e3f5220, 0x2c61a: 0x6e41d620, 0x2c61b: 0x6e41d820,\n\t0x2c61c: 0x6e473220, 0x2c61d: 0x6d740a20, 0x2c61e: 0x6d9dac20, 0x2c61f: 0x6d9dae20,\n\t0x2c620: 0x6e09e820, 0x2c621: 0x6e09ea20, 0x2c622: 0x6e19f220, 0x2c623: 0x6e19f420,\n\t0x2c624: 0x6e19f620, 0x2c625: 0x6d180620, 0x2c626: 0x6d46e820, 0x2c627: 0x6d46ea20,\n\t0x2c628: 0x6d46ec20, 0x2c629: 0x6d46ee20, 0x2c62a: 0x6d46f020, 0x2c62b: 0x6d46f220,\n\t0x2c62c: 0x6d743620, 0x2c62d: 0x6d743820, 0x2c62e: 0x6d743a20, 0x2c62f: 0x6d743c20,\n\t0x2c630: 0x6d743e20, 0x2c631: 0x6d744020, 0x2c632: 0x6d744220, 0x2c633: 0x6d744420,\n\t0x2c634: 0x6d744620, 0x2c635: 0x6d744820, 0x2c636: 0x6d744a20, 0x2c637: 0x6d744c20,\n\t0x2c638: 0x6d744e20, 0x2c639: 0x6d9de220, 0x2c63a: 0x6d9de420, 0x2c63b: 0x6d9de620,\n\t0x2c63c: 0x6d9de820, 0x2c63d: 0x6d9dea20, 0x2c63e: 0x6d9dec20, 0x2c63f: 0x6d9dee20,\n\t// Block 0xb19, offset 0x2c640\n\t0x2c640: 0x6d9df020, 0x2c641: 0x6d9df220, 0x2c642: 0x6d9df420, 0x2c643: 0x6d9df620,\n\t0x2c644: 0x6d9df820, 0x2c645: 0x6d9dfa20, 0x2c646: 0x6d9dfc20, 0x2c647: 0x6d9dfe20,\n\t0x2c648: 0x6d9e0020, 0x2c649: 0x6d9e0220, 0x2c64a: 0x6d9e0420, 0x2c64b: 0x6dc06c20,\n\t0x2c64c: 0x6dc06e20, 0x2c64d: 0x6dc07020, 0x2c64e: 0x6dc07220, 0x2c64f: 0x6dc07420,\n\t0x2c650: 0x6dc07620, 0x2c651: 0x6dc07820, 0x2c652: 0x6dc07a20, 0x2c653: 0x6dc07c20,\n\t0x2c654: 0x6dc07e20, 0x2c655: 0x6dde3e20, 0x2c656: 0x6dde4020, 0x2c657: 0x6dde4220,\n\t0x2c658: 0x6dde4420, 0x2c659: 0x6dde4620, 0x2c65a: 0x6dde4820, 0x2c65b: 0x6dde4a20,\n\t0x2c65c: 0x6dde4c20, 0x2c65d: 0x6df63a20, 0x2c65e: 0x6df63c20, 0x2c65f: 0x6df63e20,\n\t0x2c660: 0x6df64020, 0x2c661: 0x6df64220, 0x2c662: 0x6df64420, 0x2c663: 0x6df64620,\n\t0x2c664: 0x6df64820, 0x2c665: 0x6df64a20, 0x2c666: 0x6e09f820, 0x2c667: 0x6e09fa20,\n\t0x2c668: 0x6e09fc20, 0x2c669: 0x6e09fe20, 0x2c66a: 0x6e0a0020, 0x2c66b: 0x6e0a0220,\n\t0x2c66c: 0x6e0a0420, 0x2c66d: 0x6e0a0620, 0x2c66e: 0x6e0a0820, 0x2c66f: 0x6e0a0a20,\n\t0x2c670: 0x6e0a0c20, 0x2c671: 0x6e1a0420, 0x2c672: 0x6e1a0620, 0x2c673: 0x6e1a0820,\n\t0x2c674: 0x6e1a0a20, 0x2c675: 0x6e1a0c20, 0x2c676: 0x6e1a0e20, 0x2c677: 0x6e267820,\n\t0x2c678: 0x6e267a20, 0x2c679: 0x6e267c20, 0x2c67a: 0x6e267e20, 0x2c67b: 0x6e268020,\n\t0x2c67c: 0x6e268220, 0x2c67d: 0x6e268420, 0x2c67e: 0x6e2fe020, 0x2c67f: 0x6e2fe220,\n\t// Block 0xb1a, offset 0x2c680\n\t0x2c680: 0x6e2fe420, 0x2c681: 0x6e2fe620, 0x2c682: 0x6e2fe820, 0x2c683: 0x6e2fea20,\n\t0x2c684: 0x6e2fec20, 0x2c685: 0x6e2fee20, 0x2c686: 0x6e2ff020, 0x2c687: 0x6e371820,\n\t0x2c688: 0x6e371a20, 0x2c689: 0x6e371c20, 0x2c68a: 0x6e371e20, 0x2c68b: 0x6e372020,\n\t0x2c68c: 0x6e3be620, 0x2c68d: 0x6e3be820, 0x2c68e: 0x6e3f8620, 0x2c68f: 0x6e41f820,\n\t0x2c690: 0x6e45fe20, 0x2c691: 0x6e46bc20, 0x2c692: 0x6e46d420, 0x2c693: 0x6d74de20,\n\t0x2c694: 0x6dc13420, 0x2c695: 0x6dc13620, 0x2c696: 0x6df72e20, 0x2c697: 0x6e0ad420,\n\t0x2c698: 0x6e1ac220, 0x2c699: 0x6e378a20, 0x2c69a: 0x6d74fe20, 0x2c69b: 0x6ddef020,\n\t0x2c69c: 0x6e1ac420, 0x2c69d: 0x6e30a820, 0x2c69e: 0x6e3c3220, 0x2c69f: 0x6d474a20,\n\t0x2c6a0: 0x6d750c20, 0x2c6a1: 0x6d750e20, 0x2c6a2: 0x6d751020, 0x2c6a3: 0x6d9edc20,\n\t0x2c6a4: 0x6d9ede20, 0x2c6a5: 0x6d9ee020, 0x2c6a6: 0x6ddefa20, 0x2c6a7: 0x6df74620,\n\t0x2c6a8: 0x6e1ad420, 0x2c6a9: 0x6e274220, 0x2c6aa: 0x6e379620, 0x2c6ab: 0x6e379820,\n\t0x2c6ac: 0x6d475020, 0x2c6ad: 0x6d475220, 0x2c6ae: 0x6d475420, 0x2c6af: 0x6d753020,\n\t0x2c6b0: 0x6d753220, 0x2c6b1: 0x6d9efe20, 0x2c6b2: 0x6d9f0020, 0x2c6b3: 0x6d9f0220,\n\t0x2c6b4: 0x6d9f0420, 0x2c6b5: 0x6dc16e20, 0x2c6b6: 0x6ddf2820, 0x2c6b7: 0x6ddf2a20,\n\t0x2c6b8: 0x6ddf2c20, 0x2c6b9: 0x6df76a20, 0x2c6ba: 0x6df76c20, 0x2c6bb: 0x6df76e20,\n\t0x2c6bc: 0x6df77020, 0x2c6bd: 0x6df77220, 0x2c6be: 0x6e1ae420, 0x2c6bf: 0x6e1ae620,\n\t// Block 0xb1b, offset 0x2c6c0\n\t0x2c6c0: 0x6e1ae820, 0x2c6c1: 0x6e275020, 0x2c6c2: 0x6e275220, 0x2c6c3: 0x6e30c820,\n\t0x2c6c4: 0x6e37a420, 0x2c6c5: 0x6e275420, 0x2c6c6: 0x6e3c4820, 0x2c6c7: 0x6d756220,\n\t0x2c6c8: 0x6e0b2620, 0x2c6c9: 0x6e0b2820, 0x2c6ca: 0x6d9f3220, 0x2c6cb: 0x6ddf5820,\n\t0x2c6cc: 0x6df7a420, 0x2c6cd: 0x6e0b3020, 0x2c6ce: 0x6e1afe20, 0x2c6cf: 0x6e30de20,\n\t0x2c6d0: 0x6e37b620, 0x2c6d1: 0x6d757e20, 0x2c6d2: 0x6d9f3a20, 0x2c6d3: 0x6d9f3c20,\n\t0x2c6d4: 0x6e0b3e20, 0x2c6d5: 0x6e0b4020, 0x2c6d6: 0x6e0b4220, 0x2c6d7: 0x6e1b0c20,\n\t0x2c6d8: 0x6e1b0e20, 0x2c6d9: 0x6e1b1020, 0x2c6da: 0x6e278220, 0x2c6db: 0x6e30e620,\n\t0x2c6dc: 0x6e3c4e20, 0x2c6dd: 0x6d187020, 0x2c6de: 0x6d477220, 0x2c6df: 0x6d758620,\n\t0x2c6e0: 0x6dc1bc20, 0x2c6e1: 0x6d9f4a20, 0x2c6e2: 0x6dc1be20, 0x2c6e3: 0x6dc1c020,\n\t0x2c6e4: 0x6ddf6a20, 0x2c6e5: 0x6ddf6c20, 0x2c6e6: 0x6ddf6e20, 0x2c6e7: 0x6ddf7020,\n\t0x2c6e8: 0x6df7c220, 0x2c6e9: 0x6df7c420, 0x2c6ea: 0x6e0b4e20, 0x2c6eb: 0x6e0b5020,\n\t0x2c6ec: 0x6e0b5220, 0x2c6ed: 0x6e1b1a20, 0x2c6ee: 0x6e1b1c20, 0x2c6ef: 0x6e1b1e20,\n\t0x2c6f0: 0x6e30f020, 0x2c6f1: 0x6e37c020, 0x2c6f2: 0x6e3c5220, 0x2c6f3: 0x6e3c5420,\n\t0x2c6f4: 0x6e3c5620, 0x2c6f5: 0x6e3fc620, 0x2c6f6: 0x6ddf8c20, 0x2c6f7: 0x6df7e220,\n\t0x2c6f8: 0x6e27ae20, 0x2c6f9: 0x6e37e420, 0x2c6fa: 0x6d9f7620, 0x2c6fb: 0x6e37e820,\n\t0x2c6fc: 0x6e37ea20, 0x2c6fd: 0x6ddfa420, 0x2c6fe: 0x6ddfa620, 0x2c6ff: 0x6ddfa820,\n\t// Block 0xb1c, offset 0x2c700\n\t0x2c700: 0x6df7f620, 0x2c701: 0x6e1b6c20, 0x2c702: 0x6d9f8020, 0x2c703: 0x6dc20020,\n\t0x2c704: 0x6ddfb620, 0x2c705: 0x6df80a20, 0x2c706: 0x6e1b7e20, 0x2c707: 0x6e27d620,\n\t0x2c708: 0x6e311820, 0x2c709: 0x6e311a20, 0x2c70a: 0x6ddfdc20, 0x2c70b: 0x6ddfde20,\n\t0x2c70c: 0x6df82020, 0x2c70d: 0x6e0bc420, 0x2c70e: 0x6e0bc620, 0x2c70f: 0x6e1b8820,\n\t0x2c710: 0x6e424c20, 0x2c711: 0x6e45a820, 0x2c712: 0x6dc22820, 0x2c713: 0x6dc22a20,\n\t0x2c714: 0x6ddff420, 0x2c715: 0x6df83a20, 0x2c716: 0x6df83c20, 0x2c717: 0x6e0bd420,\n\t0x2c718: 0x6e0bd620, 0x2c719: 0x6e0bd820, 0x2c71a: 0x6e1ba020, 0x2c71b: 0x6e1ba220,\n\t0x2c71c: 0x6e27fc20, 0x2c71d: 0x6e27fe20, 0x2c71e: 0x6e314620, 0x2c71f: 0x6e314820,\n\t0x2c720: 0x6e380c20, 0x2c721: 0x6e380e20, 0x2c722: 0x6e381020, 0x2c723: 0x6e3ca420,\n\t0x2c724: 0x6e3ca620, 0x2c725: 0x6e3fe620, 0x2c726: 0x6e3fe820, 0x2c727: 0x6e425620,\n\t0x2c728: 0x6e440420, 0x2c729: 0x6e450c20, 0x2c72a: 0x6e450e20, 0x2c72b: 0x6e46da20,\n\t0x2c72c: 0x6e283620, 0x2c72d: 0x6e0c2020, 0x2c72e: 0x6e0c2220, 0x2c72f: 0x6df86420,\n\t0x2c730: 0x6e0c2420, 0x2c731: 0x6e1be620, 0x2c732: 0x6e1be820, 0x2c733: 0x6e1bfe20,\n\t0x2c734: 0x6e3cd820, 0x2c735: 0x6e427e20,\n\t// Block 0xb1d, offset 0x2c740\n\t0x2c740: 0x6c000220, 0x2c741: 0x6c003220, 0x2c742: 0x6c003420, 0x2c743: 0x6c003620,\n\t0x2c744: 0x6c003820, 0x2c745: 0x6c003a20, 0x2c746: 0x6c003c20, 0x2c747: 0x6c00d820,\n\t0x2c748: 0x6c00da20, 0x2c749: 0x6c00dc20, 0x2c74a: 0x6c00de20, 0x2c74b: 0x6c00e020,\n\t0x2c74c: 0x6c00e220, 0x2c74d: 0x6c021a20, 0x2c74e: 0x6c021c20, 0x2c74f: 0x6c021e20,\n\t0x2c750: 0x6c022020, 0x2c751: 0x6c022220, 0x2c752: 0x6c022420, 0x2c753: 0x6c022620,\n\t0x2c754: 0x6c054020, 0x2c755: 0x6c054220, 0x2c756: 0x6c054420, 0x2c757: 0x6c053c20,\n\t0x2c758: 0x6c054620, 0x2c759: 0x6c054820, 0x2c75a: 0x6c054a20, 0x2c75b: 0x6c054c20,\n\t0x2c75c: 0x6c054e20, 0x2c75d: 0x6c055020, 0x2c75e: 0x6c0ad020, 0x2c75f: 0x6c0ad220,\n\t0x2c760: 0x6c0ad420, 0x2c761: 0x6c0ad620, 0x2c762: 0x6c0ad820, 0x2c763: 0x6c15e420,\n\t0x2c764: 0x6c15e620, 0x2c765: 0x6c15e820, 0x2c766: 0x6c28ae20, 0x2c767: 0x6c28b020,\n\t0x2c768: 0x6c000420, 0x2c769: 0x6c004420, 0x2c76a: 0x6c00fa20, 0x2c76b: 0x6c00fc20,\n\t0x2c76c: 0x6c04e220, 0x2c76d: 0x6c023620, 0x2c76e: 0x6c023820, 0x2c76f: 0x6c023a20,\n\t0x2c770: 0x6c023c20, 0x2c771: 0x6c056820, 0x2c772: 0x6c160020, 0x2c773: 0x6c28c420,\n\t0x2c774: 0x6c42f620, 0x2c775: 0x6c63d820, 0x2c776: 0x6c000620, 0x2c777: 0x6c004a20,\n\t0x2c778: 0x6c00fe20, 0x2c779: 0x6c024220, 0x2c77a: 0x6c024420, 0x2c77b: 0x6c056c20,\n\t0x2c77c: 0x6c056e20, 0x2c77d: 0x6c15ea20, 0x2c77e: 0x6c430020, 0x2c77f: 0x6c000820,\n\t// Block 0xb1e, offset 0x2c780\n\t0x2c780: 0x6c000a20, 0x2c781: 0x6c000c20, 0x2c782: 0x6c005020, 0x2c783: 0x6c005220,\n\t0x2c784: 0x6c005420, 0x2c785: 0x6c010620, 0x2c786: 0x6c010820, 0x2c787: 0x6c010a20,\n\t0x2c788: 0x6c010c20, 0x2c789: 0x6c010020, 0x2c78a: 0x6c010e20, 0x2c78b: 0x6c024820,\n\t0x2c78c: 0x6c024a20, 0x2c78d: 0x6c057420, 0x2c78e: 0x6c057620, 0x2c78f: 0x6c057820,\n\t0x2c790: 0x6c057a20, 0x2c791: 0x6c0af020, 0x2c792: 0x6c0af220, 0x2c793: 0x6c0af420,\n\t0x2c794: 0x6c0af620, 0x2c795: 0x6c160620, 0x2c796: 0x6c28d020, 0x2c797: 0x6c430220,\n\t0x2c798: 0x6c63e020, 0x2c799: 0x6c001020, 0x2c79a: 0x6c001220, 0x2c79b: 0x6c001420,\n\t0x2c79c: 0x6c006020, 0x2c79d: 0x6c006220, 0x2c79e: 0x6c012020, 0x2c79f: 0x6c012220,\n\t0x2c7a0: 0x6c012420, 0x2c7a1: 0x6c01d020, 0x2c7a2: 0x6c041020, 0x2c7a3: 0x6c025c20,\n\t0x2c7a4: 0x6c025e20, 0x2c7a5: 0x6c026020, 0x2c7a6: 0x6c026220, 0x2c7a7: 0x6c05a020,\n\t0x2c7a8: 0x6c0b1a20, 0x2c7a9: 0x6c0b1c20, 0x2c7aa: 0x6c0b1e20, 0x2c7ab: 0x6c0b2020,\n\t0x2c7ac: 0x6c0b2220, 0x2c7ad: 0x6c0b2420, 0x2c7ae: 0x6c0b2620, 0x2c7af: 0x6c0b2820,\n\t0x2c7b0: 0x6c0b2a20, 0x2c7b1: 0x6c161020, 0x2c7b2: 0x6c161220, 0x2c7b3: 0x6c28de20,\n\t0x2c7b4: 0x6c28e020, 0x2c7b5: 0x6c28e220, 0x2c7b6: 0x6c28e420, 0x2c7b7: 0x6c28e620,\n\t0x2c7b8: 0x6c28e820, 0x2c7b9: 0x6c431420, 0x2c7ba: 0x6c431620, 0x2c7bb: 0x6c431820,\n\t0x2c7bc: 0x6c431a20, 0x2c7bd: 0x6c63f220, 0x2c7be: 0x6c8b0c20, 0x2c7bf: 0x6c8b0e20,\n\t// Block 0xb1f, offset 0x2c7c0\n\t0x2c7c0: 0x6c8b1020, 0x2c7c1: 0x6cb7b220, 0x2c7c2: 0x6ce8d220, 0x2c7c3: 0x6ce8d420,\n\t0x2c7c4: 0x6ce8d620, 0x2c7c5: 0x6c002420, 0x2c7c6: 0x6c006a20, 0x2c7c7: 0x6c012c20,\n\t0x2c7c8: 0x6c027a20, 0x2c7c9: 0x6c0b3820, 0x2c7ca: 0x6c162020, 0x2c7cb: 0x6c28f420,\n\t0x2c7cc: 0x6c007420, 0x2c7cd: 0x6c013020, 0x2c7ce: 0x6c013220, 0x2c7cf: 0x6c013420,\n\t0x2c7d0: 0x6c00e420, 0x2c7d1: 0x6c028220, 0x2c7d2: 0x6c028420, 0x2c7d3: 0x6c028620,\n\t0x2c7d4: 0x6c028820, 0x2c7d5: 0x6c028a20, 0x2c7d6: 0x6c028c20, 0x2c7d7: 0x6c05b020,\n\t0x2c7d8: 0x6c0b3e20, 0x2c7d9: 0x6c0b4020, 0x2c7da: 0x6c0b4220, 0x2c7db: 0x6c28f820,\n\t0x2c7dc: 0x6c162a20, 0x2c7dd: 0x6c28fc20, 0x2c7de: 0x6c28fe20, 0x2c7df: 0x6c290020,\n\t0x2c7e0: 0x6c007c20, 0x2c7e1: 0x6c013620, 0x2c7e2: 0x6c029020, 0x2c7e3: 0x6c029220,\n\t0x2c7e4: 0x6c0b5420, 0x2c7e5: 0x6c0b5620, 0x2c7e6: 0x6c0b5820, 0x2c7e7: 0x6c0b5a20,\n\t0x2c7e8: 0x6c163620, 0x2c7e9: 0x6c163820, 0x2c7ea: 0x6c163a20, 0x2c7eb: 0x6c290e20,\n\t0x2c7ec: 0x6c291020, 0x2c7ed: 0x6c433420, 0x2c7ee: 0x6c433620, 0x2c7ef: 0x6c433820,\n\t0x2c7f0: 0x6c433a20, 0x2c7f1: 0x6c433c20, 0x2c7f2: 0x6c433e20, 0x2c7f3: 0x6c640a20,\n\t0x2c7f4: 0x6cb7c020, 0x2c7f5: 0x6cb7c220, 0x2c7f6: 0x6ce8e620, 0x2c7f7: 0x6ce8e820,\n\t0x2c7f8: 0x6d75da20, 0x2c7f9: 0x6e1c0620, 0x2c7fa: 0x6c007e20, 0x2c7fb: 0x6c008020,\n\t0x2c7fc: 0x6c013820, 0x2c7fd: 0x6c013a20, 0x2c7fe: 0x6c013c20, 0x2c7ff: 0x6c013e20,\n\t// Block 0xb20, offset 0x2c800\n\t0x2c800: 0x6c029620, 0x2c801: 0x6c029820, 0x2c802: 0x6c029a20, 0x2c803: 0x6c029c20,\n\t0x2c804: 0x6c029e20, 0x2c805: 0x6c02a020, 0x2c806: 0x6c02a220, 0x2c807: 0x6c02a420,\n\t0x2c808: 0x6c02a620, 0x2c809: 0x6c02a820, 0x2c80a: 0x6c02aa20, 0x2c80b: 0x6c02ac20,\n\t0x2c80c: 0x6c02ae20, 0x2c80d: 0x6c02b020, 0x2c80e: 0x6c02b220, 0x2c80f: 0x6c02b420,\n\t0x2c810: 0x6c02b620, 0x2c811: 0x6c02b820, 0x2c812: 0x6c02ba20, 0x2c813: 0x6c02bc20,\n\t0x2c814: 0x6c05c820, 0x2c815: 0x6c05ca20, 0x2c816: 0x6c05cc20, 0x2c817: 0x6c05ce20,\n\t0x2c818: 0x6c05d020, 0x2c819: 0x6c05d220, 0x2c81a: 0x6c05d420, 0x2c81b: 0x6c05d620,\n\t0x2c81c: 0x6c05d820, 0x2c81d: 0x6c05da20, 0x2c81e: 0x6c05dc20, 0x2c81f: 0x6c05de20,\n\t0x2c820: 0x6c05e020, 0x2c821: 0x6c05e220, 0x2c822: 0x6c05e420, 0x2c823: 0x6c05e620,\n\t0x2c824: 0x6c05e820, 0x2c825: 0x6c05ea20, 0x2c826: 0x6c05ec20, 0x2c827: 0x6c05ee20,\n\t0x2c828: 0x6c05f020, 0x2c829: 0x6c05f220, 0x2c82a: 0x6c05f420, 0x2c82b: 0x6c05f620,\n\t0x2c82c: 0x6c05f820, 0x2c82d: 0x6c05fa20, 0x2c82e: 0x6c0b7a20, 0x2c82f: 0x6c0b7c20,\n\t0x2c830: 0x6c0b7e20, 0x2c831: 0x6c0b8020, 0x2c832: 0x6c0b8220, 0x2c833: 0x6c0b8420,\n\t0x2c834: 0x6c0b8620, 0x2c835: 0x6c0b8820, 0x2c836: 0x6c0b8a20, 0x2c837: 0x6c0b8c20,\n\t0x2c838: 0x6c0b8e20, 0x2c839: 0x6c0b9020, 0x2c83a: 0x6c0b9220, 0x2c83b: 0x6c0b9420,\n\t0x2c83c: 0x6c0b9620, 0x2c83d: 0x6c0b9820, 0x2c83e: 0x6c0b9a20, 0x2c83f: 0x6c0b9c20,\n\t// Block 0xb21, offset 0x2c840\n\t0x2c840: 0x6c0b9e20, 0x2c841: 0x6c0ba020, 0x2c842: 0x6c0ba220, 0x2c843: 0x6c0ba420,\n\t0x2c844: 0x6c0ba620, 0x2c845: 0x6c0ba820, 0x2c846: 0x6c0baa20, 0x2c847: 0x6c0bac20,\n\t0x2c848: 0x6c0bae20, 0x2c849: 0x6c0bb020, 0x2c84a: 0x6c0bb220, 0x2c84b: 0x6c0bb420,\n\t0x2c84c: 0x6c0bb620, 0x2c84d: 0x6c0bb820, 0x2c84e: 0x6c0bba20, 0x2c84f: 0x6c0bbc20,\n\t0x2c850: 0x6c0bbe20, 0x2c851: 0x6c0bc020, 0x2c852: 0x6c0bc220, 0x2c853: 0x6c0bc420,\n\t0x2c854: 0x6c0bc620, 0x2c855: 0x6c0bc820, 0x2c856: 0x6c0bca20, 0x2c857: 0x6c0bcc20,\n\t0x2c858: 0x6c0bce20, 0x2c859: 0x6c0bd020, 0x2c85a: 0x6c0bd220, 0x2c85b: 0x6c0bd420,\n\t0x2c85c: 0x6c0bd620, 0x2c85d: 0x6c0bd820, 0x2c85e: 0x6c0bda20, 0x2c85f: 0x6c0bdc20,\n\t0x2c860: 0x6c0bde20, 0x2c861: 0x6c0be020, 0x2c862: 0x6c0be220, 0x2c863: 0x6c0be420,\n\t0x2c864: 0x6c0be620, 0x2c865: 0x6c0be820, 0x2c866: 0x6c0bea20, 0x2c867: 0x6c0bec20,\n\t0x2c868: 0x6c0bee20, 0x2c869: 0x6c0bf020, 0x2c86a: 0x6c0bf220, 0x2c86b: 0x6c0bf420,\n\t0x2c86c: 0x6c0bf620, 0x2c86d: 0x6c165620, 0x2c86e: 0x6c165820, 0x2c86f: 0x6c165a20,\n\t0x2c870: 0x6c165c20, 0x2c871: 0x6c165e20, 0x2c872: 0x6c166020, 0x2c873: 0x6c166220,\n\t0x2c874: 0x6c166420, 0x2c875: 0x6c166620, 0x2c876: 0x6c166820, 0x2c877: 0x6c166a20,\n\t0x2c878: 0x6c166c20, 0x2c879: 0x6c166e20, 0x2c87a: 0x6c167020, 0x2c87b: 0x6c167220,\n\t0x2c87c: 0x6c167420, 0x2c87d: 0x6c167620, 0x2c87e: 0x6c167820, 0x2c87f: 0x6c167a20,\n\t// Block 0xb22, offset 0x2c880\n\t0x2c880: 0x6c167c20, 0x2c881: 0x6c167e20, 0x2c882: 0x6c168020, 0x2c883: 0x6c168220,\n\t0x2c884: 0x6c168420, 0x2c885: 0x6c168620, 0x2c886: 0x6c168820, 0x2c887: 0x6c168a20,\n\t0x2c888: 0x6c168c20, 0x2c889: 0x6c168e20, 0x2c88a: 0x6c169020, 0x2c88b: 0x6c169220,\n\t0x2c88c: 0x6c292020, 0x2c88d: 0x6c169420, 0x2c88e: 0x6c169620, 0x2c88f: 0x6c169820,\n\t0x2c890: 0x6c169a20, 0x2c891: 0x6c169c20, 0x2c892: 0x6c169e20, 0x2c893: 0x6c16a020,\n\t0x2c894: 0x6c16a220, 0x2c895: 0x6c16a420, 0x2c896: 0x6c16a620, 0x2c897: 0x6c16a820,\n\t0x2c898: 0x6c16aa20, 0x2c899: 0x6c16ac20, 0x2c89a: 0x6c16ae20, 0x2c89b: 0x6c16b020,\n\t0x2c89c: 0x6c16b220, 0x2c89d: 0x6c16b420, 0x2c89e: 0x6c16b620, 0x2c89f: 0x6c16b820,\n\t0x2c8a0: 0x6c16ba20, 0x2c8a1: 0x6c16bc20, 0x2c8a2: 0x6c16be20, 0x2c8a3: 0x6c16c020,\n\t0x2c8a4: 0x6c0bf820, 0x2c8a5: 0x6c16c220, 0x2c8a6: 0x6c16c420, 0x2c8a7: 0x6c16c620,\n\t0x2c8a8: 0x6c16c820, 0x2c8a9: 0x6c293e20, 0x2c8aa: 0x6c294020, 0x2c8ab: 0x6c294220,\n\t0x2c8ac: 0x6c294420, 0x2c8ad: 0x6c294620, 0x2c8ae: 0x6c294820, 0x2c8af: 0x6c294a20,\n\t0x2c8b0: 0x6c294c20, 0x2c8b1: 0x6c294e20, 0x2c8b2: 0x6c295020, 0x2c8b3: 0x6c295220,\n\t0x2c8b4: 0x6c295420, 0x2c8b5: 0x6c295620, 0x2c8b6: 0x6c295820, 0x2c8b7: 0x6c295a20,\n\t0x2c8b8: 0x6c295c20, 0x2c8b9: 0x6c295e20, 0x2c8ba: 0x6c296020, 0x2c8bb: 0x6c296220,\n\t0x2c8bc: 0x6c296420, 0x2c8bd: 0x6c296620, 0x2c8be: 0x6c296820, 0x2c8bf: 0x6c296a20,\n\t// Block 0xb23, offset 0x2c8c0\n\t0x2c8c0: 0x6c296c20, 0x2c8c1: 0x6c296e20, 0x2c8c2: 0x6c297020, 0x2c8c3: 0x6c297220,\n\t0x2c8c4: 0x6c297420, 0x2c8c5: 0x6c297620, 0x2c8c6: 0x6c297820, 0x2c8c7: 0x6c297a20,\n\t0x2c8c8: 0x6c297c20, 0x2c8c9: 0x6c297e20, 0x2c8ca: 0x6c298020, 0x2c8cb: 0x6c298220,\n\t0x2c8cc: 0x6c298420, 0x2c8cd: 0x6c298620, 0x2c8ce: 0x6c298820, 0x2c8cf: 0x6c298a20,\n\t0x2c8d0: 0x6c298c20, 0x2c8d1: 0x6c298e20, 0x2c8d2: 0x6c299020, 0x2c8d3: 0x6c299220,\n\t0x2c8d4: 0x6c299420, 0x2c8d5: 0x6c299620, 0x2c8d6: 0x6c299820, 0x2c8d7: 0x6c299a20,\n\t0x2c8d8: 0x6c299c20, 0x2c8d9: 0x6c299e20, 0x2c8da: 0x6c29a020, 0x2c8db: 0x6c29a220,\n\t0x2c8dc: 0x6c29a420, 0x2c8dd: 0x6c29a620, 0x2c8de: 0x6c29a820, 0x2c8df: 0x6c29aa20,\n\t0x2c8e0: 0x6c29ac20, 0x2c8e1: 0x6c29ae20, 0x2c8e2: 0x6c29b020, 0x2c8e3: 0x6c29b220,\n\t0x2c8e4: 0x6c29b420, 0x2c8e5: 0x6c29b620, 0x2c8e6: 0x6c29b820, 0x2c8e7: 0x6c29ba20,\n\t0x2c8e8: 0x6c29bc20, 0x2c8e9: 0x6c29be20, 0x2c8ea: 0x6c29c020, 0x2c8eb: 0x6c29c220,\n\t0x2c8ec: 0x6c29c420, 0x2c8ed: 0x6c29c620, 0x2c8ee: 0x6c435e20, 0x2c8ef: 0x6c436020,\n\t0x2c8f0: 0x6c436220, 0x2c8f1: 0x6c436420, 0x2c8f2: 0x6c436620, 0x2c8f3: 0x6c436820,\n\t0x2c8f4: 0x6c436a20, 0x2c8f5: 0x6c436c20, 0x2c8f6: 0x6c436e20, 0x2c8f7: 0x6c437020,\n\t0x2c8f8: 0x6c437220, 0x2c8f9: 0x6c437420, 0x2c8fa: 0x6c437620, 0x2c8fb: 0x6c437820,\n\t0x2c8fc: 0x6c437a20, 0x2c8fd: 0x6c437c20, 0x2c8fe: 0x6c437e20, 0x2c8ff: 0x6c438020,\n\t// Block 0xb24, offset 0x2c900\n\t0x2c900: 0x6c438220, 0x2c901: 0x6c438420, 0x2c902: 0x6c438620, 0x2c903: 0x6c438820,\n\t0x2c904: 0x6c438a20, 0x2c905: 0x6c438c20, 0x2c906: 0x6c438e20, 0x2c907: 0x6c439020,\n\t0x2c908: 0x6c439220, 0x2c909: 0x6c439420, 0x2c90a: 0x6c439620, 0x2c90b: 0x6c439820,\n\t0x2c90c: 0x6c439a20, 0x2c90d: 0x6c439c20, 0x2c90e: 0x6c439e20, 0x2c90f: 0x6c43a020,\n\t0x2c910: 0x6c43a220, 0x2c911: 0x6c43a420, 0x2c912: 0x6c43a620, 0x2c913: 0x6c43a820,\n\t0x2c914: 0x6c43aa20, 0x2c915: 0x6c43ac20, 0x2c916: 0x6c43ae20, 0x2c917: 0x6c43b020,\n\t0x2c918: 0x6c43b220, 0x2c919: 0x6c43b420, 0x2c91a: 0x6c43b620, 0x2c91b: 0x6c43b820,\n\t0x2c91c: 0x6c43ba20, 0x2c91d: 0x6c43bc20, 0x2c91e: 0x6c43be20, 0x2c91f: 0x6c43c020,\n\t0x2c920: 0x6c43c220, 0x2c921: 0x6c43c420, 0x2c922: 0x6c43c620, 0x2c923: 0x6c43c820,\n\t0x2c924: 0x6c43ca20, 0x2c925: 0x6c43cc20, 0x2c926: 0x6c43ce20, 0x2c927: 0x6c43d020,\n\t0x2c928: 0x6c43d220, 0x2c929: 0x6c43d420, 0x2c92a: 0x6c43d620, 0x2c92b: 0x6c43d820,\n\t0x2c92c: 0x6c43da20, 0x2c92d: 0x6c43dc20, 0x2c92e: 0x6c642e20, 0x2c92f: 0x6c643020,\n\t0x2c930: 0x6c643220, 0x2c931: 0x6c643420, 0x2c932: 0x6c643620, 0x2c933: 0x6c643820,\n\t0x2c934: 0x6c643a20, 0x2c935: 0x6c643c20, 0x2c936: 0x6c643e20, 0x2c937: 0x6c644020,\n\t0x2c938: 0x6c644220, 0x2c939: 0x6c644420, 0x2c93a: 0x6c644620, 0x2c93b: 0x6c644820,\n\t0x2c93c: 0x6c644a20, 0x2c93d: 0x6c644c20, 0x2c93e: 0x6c644e20, 0x2c93f: 0x6c645020,\n\t// Block 0xb25, offset 0x2c940\n\t0x2c940: 0x6c645220, 0x2c941: 0x6c645420, 0x2c942: 0x6c645620, 0x2c943: 0x6c645820,\n\t0x2c944: 0x6c645a20, 0x2c945: 0x6c645c20, 0x2c946: 0x6c645e20, 0x2c947: 0x6c646020,\n\t0x2c948: 0x6c646220, 0x2c949: 0x6c646420, 0x2c94a: 0x6c646620, 0x2c94b: 0x6c646820,\n\t0x2c94c: 0x6c646a20, 0x2c94d: 0x6c646c20, 0x2c94e: 0x6c646e20, 0x2c94f: 0x6c647020,\n\t0x2c950: 0x6c647220, 0x2c951: 0x6c647420, 0x2c952: 0x6c647620, 0x2c953: 0x6c647820,\n\t0x2c954: 0x6c647a20, 0x2c955: 0x6c647c20, 0x2c956: 0x6c647e20, 0x2c957: 0x6c648020,\n\t0x2c958: 0x6c648220, 0x2c959: 0x6c648420, 0x2c95a: 0x6c648620, 0x2c95b: 0x6c648820,\n\t0x2c95c: 0x6c648a20, 0x2c95d: 0x6c648c20, 0x2c95e: 0x6c648e20, 0x2c95f: 0x6c649020,\n\t0x2c960: 0x6c649220, 0x2c961: 0x6c649420, 0x2c962: 0x6c649620, 0x2c963: 0x6c649820,\n\t0x2c964: 0x6c649a20, 0x2c965: 0x6c649c20, 0x2c966: 0x6c649e20, 0x2c967: 0x6c64a020,\n\t0x2c968: 0x6c64a220, 0x2c969: 0x6c64a420, 0x2c96a: 0x6c64a620, 0x2c96b: 0x6c64a820,\n\t0x2c96c: 0x6c64aa20, 0x2c96d: 0x6c64ac20, 0x2c96e: 0x6c64ae20, 0x2c96f: 0x6c64b020,\n\t0x2c970: 0x6c64b220, 0x2c971: 0x6c64b420, 0x2c972: 0x6c64b620, 0x2c973: 0x6c64b820,\n\t0x2c974: 0x6c64ba20, 0x2c975: 0x6c64bc20, 0x2c976: 0x6c64be20, 0x2c977: 0x6c64c020,\n\t0x2c978: 0x6c64c220, 0x2c979: 0x6c64c420, 0x2c97a: 0x6c64c620, 0x2c97b: 0x6c64c820,\n\t0x2c97c: 0x6c64ca20, 0x2c97d: 0x6c64cc20, 0x2c97e: 0x6c64ce20, 0x2c97f: 0x6c64d020,\n\t// Block 0xb26, offset 0x2c980\n\t0x2c980: 0x6c8b4a20, 0x2c981: 0x6c8b4c20, 0x2c982: 0x6c8b4e20, 0x2c983: 0x6c8b5020,\n\t0x2c984: 0x6c8b5220, 0x2c985: 0x6c8b5420, 0x2c986: 0x6c8b5620, 0x2c987: 0x6c8b5820,\n\t0x2c988: 0x6c8b5a20, 0x2c989: 0x6c8b5c20, 0x2c98a: 0x6c8b5e20, 0x2c98b: 0x6c8b6020,\n\t0x2c98c: 0x6c8b6220, 0x2c98d: 0x6c8b6420, 0x2c98e: 0x6c8b6620, 0x2c98f: 0x6c8b6820,\n\t0x2c990: 0x6c8b6a20, 0x2c991: 0x6c8b6c20, 0x2c992: 0x6c8b6e20, 0x2c993: 0x6c8b7020,\n\t0x2c994: 0x6c8b7220, 0x2c995: 0x6c8b7420, 0x2c996: 0x6c656e20, 0x2c997: 0x6c8b7620,\n\t0x2c998: 0x6c8b7820, 0x2c999: 0x6c8b7a20, 0x2c99a: 0x6c8b7c20, 0x2c99b: 0x6c8b7e20,\n\t0x2c99c: 0x6c8b8020, 0x2c99d: 0x6c8b8220, 0x2c99e: 0x6c8b8420, 0x2c99f: 0x6c8b8620,\n\t0x2c9a0: 0x6c8b8820, 0x2c9a1: 0x6c8b8a20, 0x2c9a2: 0x6c8b8c20, 0x2c9a3: 0x6c8b8e20,\n\t0x2c9a4: 0x6c8b9020, 0x2c9a5: 0x6c8b9220, 0x2c9a6: 0x6c8b9420, 0x2c9a7: 0x6c8b9620,\n\t0x2c9a8: 0x6cb7d820, 0x2c9a9: 0x6c8b9820, 0x2c9aa: 0x6c8b9a20, 0x2c9ab: 0x6c8b9c20,\n\t0x2c9ac: 0x6c8b9e20, 0x2c9ad: 0x6c8ba020, 0x2c9ae: 0x6c8ba220, 0x2c9af: 0x6c8ba420,\n\t0x2c9b0: 0x6c8ba620, 0x2c9b1: 0x6c8ba820, 0x2c9b2: 0x6c8baa20, 0x2c9b3: 0x6c8bac20,\n\t0x2c9b4: 0x6c8bae20, 0x2c9b5: 0x6c8bb020, 0x2c9b6: 0x6c8bb220, 0x2c9b7: 0x6c8bb420,\n\t0x2c9b8: 0x6c8bb620, 0x2c9b9: 0x6c8bb820, 0x2c9ba: 0x6c8bba20, 0x2c9bb: 0x6c8bbc20,\n\t0x2c9bc: 0x6c8bbe20, 0x2c9bd: 0x6c8bc020, 0x2c9be: 0x6c8bc220, 0x2c9bf: 0x6c8bc420,\n\t// Block 0xb27, offset 0x2c9c0\n\t0x2c9c0: 0x6cb7ea20, 0x2c9c1: 0x6cb7ec20, 0x2c9c2: 0x6cb7ee20, 0x2c9c3: 0x6cb7f020,\n\t0x2c9c4: 0x6cb7f220, 0x2c9c5: 0x6cb7f420, 0x2c9c6: 0x6cb7f620, 0x2c9c7: 0x6cb7f820,\n\t0x2c9c8: 0x6cb7fa20, 0x2c9c9: 0x6cb7fc20, 0x2c9ca: 0x6cb7fe20, 0x2c9cb: 0x6cb80020,\n\t0x2c9cc: 0x6cb80220, 0x2c9cd: 0x6cb80420, 0x2c9ce: 0x6cb80620, 0x2c9cf: 0x6cb80820,\n\t0x2c9d0: 0x6cb80a20, 0x2c9d1: 0x6cb80c20, 0x2c9d2: 0x6cb80e20, 0x2c9d3: 0x6cb81020,\n\t0x2c9d4: 0x6cb81220, 0x2c9d5: 0x6cb81420, 0x2c9d6: 0x6cb81620, 0x2c9d7: 0x6cb81820,\n\t0x2c9d8: 0x6cb81a20, 0x2c9d9: 0x6cb81c20, 0x2c9da: 0x6cb81e20, 0x2c9db: 0x6cb82020,\n\t0x2c9dc: 0x6cb82220, 0x2c9dd: 0x6cb82420, 0x2c9de: 0x6cb82620, 0x2c9df: 0x6cb82820,\n\t0x2c9e0: 0x6cb82a20, 0x2c9e1: 0x6cb82c20, 0x2c9e2: 0x6cb82e20, 0x2c9e3: 0x6cb83020,\n\t0x2c9e4: 0x6cb83220, 0x2c9e5: 0x6cb83420, 0x2c9e6: 0x6cb83620, 0x2c9e7: 0x6cb83820,\n\t0x2c9e8: 0x6cb83a20, 0x2c9e9: 0x6cb83c20, 0x2c9ea: 0x6ce90c20, 0x2c9eb: 0x6ce90e20,\n\t0x2c9ec: 0x6ce91020, 0x2c9ed: 0x6ce91220, 0x2c9ee: 0x6ce91420, 0x2c9ef: 0x6ce91620,\n\t0x2c9f0: 0x6ce91820, 0x2c9f1: 0x6ce91a20, 0x2c9f2: 0x6ce91c20, 0x2c9f3: 0x6ce91e20,\n\t0x2c9f4: 0x6ce92020, 0x2c9f5: 0x6ce92220, 0x2c9f6: 0x6ce92420, 0x2c9f7: 0x6ce92620,\n\t0x2c9f8: 0x6ce92820, 0x2c9f9: 0x6ce92a20, 0x2c9fa: 0x6ce92c20, 0x2c9fb: 0x6ce92e20,\n\t0x2c9fc: 0x6ce93020, 0x2c9fd: 0x6ce93220, 0x2c9fe: 0x6ce93420, 0x2c9ff: 0x6ce93620,\n\t// Block 0xb28, offset 0x2ca00\n\t0x2ca00: 0x6ce93820, 0x2ca01: 0x6ce93a20, 0x2ca02: 0x6ce93c20, 0x2ca03: 0x6ce93e20,\n\t0x2ca04: 0x6ce94020, 0x2ca05: 0x6ce94220, 0x2ca06: 0x6ce94420, 0x2ca07: 0x6ce94620,\n\t0x2ca08: 0x6ce94820, 0x2ca09: 0x6ce94a20, 0x2ca0a: 0x6ce94c20, 0x2ca0b: 0x6ce94e20,\n\t0x2ca0c: 0x6ce95020, 0x2ca0d: 0x6ce95220, 0x2ca0e: 0x6d18cc20, 0x2ca0f: 0x6d18ce20,\n\t0x2ca10: 0x6d18d020, 0x2ca11: 0x6d18d220, 0x2ca12: 0x6d18d420, 0x2ca13: 0x6d18d620,\n\t0x2ca14: 0x6d18d820, 0x2ca15: 0x6d18da20, 0x2ca16: 0x6d18dc20, 0x2ca17: 0x6d18de20,\n\t0x2ca18: 0x6d18e020, 0x2ca19: 0x6d18e220, 0x2ca1a: 0x6d18e420, 0x2ca1b: 0x6d18e620,\n\t0x2ca1c: 0x6d18e820, 0x2ca1d: 0x6d18ea20, 0x2ca1e: 0x6d18ec20, 0x2ca1f: 0x6d18ee20,\n\t0x2ca20: 0x6d18f020, 0x2ca21: 0x6d18f220, 0x2ca22: 0x6d18f420, 0x2ca23: 0x6d18f620,\n\t0x2ca24: 0x6d18f820, 0x2ca25: 0x6d18fa20, 0x2ca26: 0x6d18fc20, 0x2ca27: 0x6d18fe20,\n\t0x2ca28: 0x6d190020, 0x2ca29: 0x6d190220, 0x2ca2a: 0x6d190420, 0x2ca2b: 0x6d190620,\n\t0x2ca2c: 0x6d190820, 0x2ca2d: 0x6d190a20, 0x2ca2e: 0x6d190c20, 0x2ca2f: 0x6d190e20,\n\t0x2ca30: 0x6d191020, 0x2ca31: 0x6d191220, 0x2ca32: 0x6d19b420, 0x2ca33: 0x6d191420,\n\t0x2ca34: 0x6d191620, 0x2ca35: 0x6d47c220, 0x2ca36: 0x6d47c420, 0x2ca37: 0x6d191820,\n\t0x2ca38: 0x6d47c620, 0x2ca39: 0x6d47c820, 0x2ca3a: 0x6d47ca20, 0x2ca3b: 0x6d47cc20,\n\t0x2ca3c: 0x6d47ce20, 0x2ca3d: 0x6d47d020, 0x2ca3e: 0x6d47d220, 0x2ca3f: 0x6d47d420,\n\t// Block 0xb29, offset 0x2ca40\n\t0x2ca40: 0x6d47d620, 0x2ca41: 0x6d47d820, 0x2ca42: 0x6d47da20, 0x2ca43: 0x6d47dc20,\n\t0x2ca44: 0x6d47de20, 0x2ca45: 0x6d47e020, 0x2ca46: 0x6d47e220, 0x2ca47: 0x6d47e420,\n\t0x2ca48: 0x6d47e620, 0x2ca49: 0x6d47e820, 0x2ca4a: 0x6d47ea20, 0x2ca4b: 0x6d47ec20,\n\t0x2ca4c: 0x6d47ee20, 0x2ca4d: 0x6d47f020, 0x2ca4e: 0x6d47f220, 0x2ca4f: 0x6d47f420,\n\t0x2ca50: 0x6d75fc20, 0x2ca51: 0x6d75fe20, 0x2ca52: 0x6d760020, 0x2ca53: 0x6d760220,\n\t0x2ca54: 0x6d760420, 0x2ca55: 0x6d760620, 0x2ca56: 0x6d760820, 0x2ca57: 0x6d760a20,\n\t0x2ca58: 0x6d760c20, 0x2ca59: 0x6d760e20, 0x2ca5a: 0x6d761020, 0x2ca5b: 0x6d761220,\n\t0x2ca5c: 0x6d761420, 0x2ca5d: 0x6d761620, 0x2ca5e: 0x6d761820, 0x2ca5f: 0x6d9fae20,\n\t0x2ca60: 0x6d9fb020, 0x2ca61: 0x6d9fb220, 0x2ca62: 0x6d9fb420, 0x2ca63: 0x6d9fb620,\n\t0x2ca64: 0x6d9fb820, 0x2ca65: 0x6d9fba20, 0x2ca66: 0x6d9fbc20, 0x2ca67: 0x6d9fbe20,\n\t0x2ca68: 0x6d9fc020, 0x2ca69: 0x6d9fc220, 0x2ca6a: 0x6d9fc420, 0x2ca6b: 0x6d761a20,\n\t0x2ca6c: 0x6d9fc620, 0x2ca6d: 0x6dc24e20, 0x2ca6e: 0x6dc25020, 0x2ca6f: 0x6dc25220,\n\t0x2ca70: 0x6d485a20, 0x2ca71: 0x6dc25420, 0x2ca72: 0x6da00220, 0x2ca73: 0x6de01420,\n\t0x2ca74: 0x6de01620, 0x2ca75: 0x6de01820, 0x2ca76: 0x6df87420, 0x2ca77: 0x6e0c4220,\n\t0x2ca78: 0x6e0c4420, 0x2ca79: 0x6e0c4620, 0x2ca7a: 0x6e0c4820, 0x2ca7b: 0x6e1c0820,\n\t0x2ca7c: 0x6e1c0a20, 0x2ca7d: 0x6e284c20, 0x2ca7e: 0x6e318820, 0x2ca7f: 0x6c008420,\n\t// Block 0xb2a, offset 0x2ca80\n\t0x2ca80: 0x6c014620, 0x2ca81: 0x6c02c620, 0x2ca82: 0x6c02c820, 0x2ca83: 0x6c02ca20,\n\t0x2ca84: 0x6c060e20, 0x2ca85: 0x6c061420, 0x2ca86: 0x6c0c4620, 0x2ca87: 0x6c0c4820,\n\t0x2ca88: 0x6c0c4a20, 0x2ca89: 0x6c0c4c20, 0x2ca8a: 0x6c0c4e20, 0x2ca8b: 0x6c173420,\n\t0x2ca8c: 0x6c173620, 0x2ca8d: 0x6c173820, 0x2ca8e: 0x6c173a20, 0x2ca8f: 0x6c173c20,\n\t0x2ca90: 0x6c173e20, 0x2ca91: 0x6c174020, 0x2ca92: 0x6c2a2e20, 0x2ca93: 0x6c2a3020,\n\t0x2ca94: 0x6c2a3220, 0x2ca95: 0x6c2a3420, 0x2ca96: 0x6c2a3620, 0x2ca97: 0x6c445a20,\n\t0x2ca98: 0x6c445c20, 0x2ca99: 0x6c445e20, 0x2ca9a: 0x6c657220, 0x2ca9b: 0x6c657420,\n\t0x2ca9c: 0x6c8c6820, 0x2ca9d: 0x6c8c6a20, 0x2ca9e: 0x6c8c6c20, 0x2ca9f: 0x6cb8c620,\n\t0x2caa0: 0x6cb8c820, 0x2caa1: 0x6ce9e220, 0x2caa2: 0x6d19b620, 0x2caa3: 0x6d766620,\n\t0x2caa4: 0x6e0c6420, 0x2caa5: 0x6c008620, 0x2caa6: 0x6c014820, 0x2caa7: 0x6c02ce20,\n\t0x2caa8: 0x6c0c5a20, 0x2caa9: 0x6c2a4c20, 0x2caaa: 0x6c446c20, 0x2caab: 0x6c008820,\n\t0x2caac: 0x6c02d620, 0x2caad: 0x6c02d820, 0x2caae: 0x6c02da20, 0x2caaf: 0x6c02dc20,\n\t0x2cab0: 0x6c061c20, 0x2cab1: 0x6c0c6820, 0x2cab2: 0x6c0c6a20, 0x2cab3: 0x6c0c6c20,\n\t0x2cab4: 0x6c0c6e20, 0x2cab5: 0x6c176220, 0x2cab6: 0x6c2a5020, 0x2cab7: 0x6c2a5220,\n\t0x2cab8: 0x6c2a5420, 0x2cab9: 0x6c447620, 0x2caba: 0x6c659020, 0x2cabb: 0x6c447820,\n\t0x2cabc: 0x6c659220, 0x2cabd: 0x6c8c7e20, 0x2cabe: 0x6ce9f420, 0x2cabf: 0x6ce9f620,\n\t// Block 0xb2b, offset 0x2cac0\n\t0x2cac0: 0x6d767a20, 0x2cac1: 0x6dc29820, 0x2cac2: 0x6c008c20, 0x2cac3: 0x6c02e620,\n\t0x2cac4: 0x6c02e820, 0x2cac5: 0x6c02ea20, 0x2cac6: 0x6c02ec20, 0x2cac7: 0x6c02ee20,\n\t0x2cac8: 0x6c02f020, 0x2cac9: 0x6c062220, 0x2caca: 0x6c062420, 0x2cacb: 0x6c062620,\n\t0x2cacc: 0x6c062820, 0x2cacd: 0x6c0c7820, 0x2cace: 0x6c0c7a20, 0x2cacf: 0x6c177020,\n\t0x2cad0: 0x6c2a5e20, 0x2cad1: 0x6c448620, 0x2cad2: 0x6c448820, 0x2cad3: 0x6c659a20,\n\t0x2cad4: 0x6c659c20, 0x2cad5: 0x6c8c8820, 0x2cad6: 0x6c008e20, 0x2cad7: 0x6c02fe20,\n\t0x2cad8: 0x6c030020, 0x2cad9: 0x6c063e20, 0x2cada: 0x6c064020, 0x2cadb: 0x6c0c8620,\n\t0x2cadc: 0x6c0c8820, 0x2cadd: 0x6c178020, 0x2cade: 0x6c2a6a20, 0x2cadf: 0x6c449220,\n\t0x2cae0: 0x6c449420, 0x2cae1: 0x6c65a420, 0x2cae2: 0x6c65a620, 0x2cae3: 0x6c65a820,\n\t0x2cae4: 0x6c65aa20, 0x2cae5: 0x6c65ac20, 0x2cae6: 0x6c65ae20, 0x2cae7: 0x6c65b020,\n\t0x2cae8: 0x6c8c9020, 0x2cae9: 0x6d19e020, 0x2caea: 0x6d768820, 0x2caeb: 0x6c009020,\n\t0x2caec: 0x6c064a20, 0x2caed: 0x6c064c20, 0x2caee: 0x6c064e20, 0x2caef: 0x6c065020,\n\t0x2caf0: 0x6c0c9c20, 0x2caf1: 0x6c0c9e20, 0x2caf2: 0x6c0ca020, 0x2caf3: 0x6c0ca220,\n\t0x2caf4: 0x6c0ca420, 0x2caf5: 0x6c179020, 0x2caf6: 0x6c179220, 0x2caf7: 0x6c179420,\n\t0x2caf8: 0x6c179620, 0x2caf9: 0x6c179820, 0x2cafa: 0x6c179a20, 0x2cafb: 0x6c179c20,\n\t0x2cafc: 0x6c2a7e20, 0x2cafd: 0x6c2a8020, 0x2cafe: 0x6c2a8220, 0x2caff: 0x6c2a8420,\n\t// Block 0xb2c, offset 0x2cb00\n\t0x2cb00: 0x6c2a8620, 0x2cb01: 0x6c44a420, 0x2cb02: 0x6c44a620, 0x2cb03: 0x6c44a820,\n\t0x2cb04: 0x6c65c820, 0x2cb05: 0x6c65ca20, 0x2cb06: 0x6c65cc20, 0x2cb07: 0x6c65ce20,\n\t0x2cb08: 0x6c65d020, 0x2cb09: 0x6c65d220, 0x2cb0a: 0x6c65d420, 0x2cb0b: 0x6c65d620,\n\t0x2cb0c: 0x6c65d820, 0x2cb0d: 0x6c65da20, 0x2cb0e: 0x6c65dc20, 0x2cb0f: 0x6c8c9820,\n\t0x2cb10: 0x6c8c9a20, 0x2cb11: 0x6c8c9c20, 0x2cb12: 0x6cb91020, 0x2cb13: 0x6cb91220,\n\t0x2cb14: 0x6cb91420, 0x2cb15: 0x6cb91620, 0x2cb16: 0x6cb91820, 0x2cb17: 0x6cea1420,\n\t0x2cb18: 0x6d19ec20, 0x2cb19: 0x6d487820, 0x2cb1a: 0x6d487a20, 0x2cb1b: 0x6d487c20,\n\t0x2cb1c: 0x6d487e20, 0x2cb1d: 0x6d768e20, 0x2cb1e: 0x6d769020, 0x2cb1f: 0x6da01a20,\n\t0x2cb20: 0x6c009420, 0x2cb21: 0x6c015220, 0x2cb22: 0x6c015420, 0x2cb23: 0x6c015620,\n\t0x2cb24: 0x6c030a20, 0x2cb25: 0x6c065a20, 0x2cb26: 0x6c065c20, 0x2cb27: 0x6c065e20,\n\t0x2cb28: 0x6c0cba20, 0x2cb29: 0x6c0cbc20, 0x2cb2a: 0x6c0cbe20, 0x2cb2b: 0x6c0cc020,\n\t0x2cb2c: 0x6c17b820, 0x2cb2d: 0x6c2a9820, 0x2cb2e: 0x6c2a9a20, 0x2cb2f: 0x6c2a9c20,\n\t0x2cb30: 0x6c8cc020, 0x2cb31: 0x6cb93020, 0x2cb32: 0x6cb93220, 0x2cb33: 0x6d19fe20,\n\t0x2cb34: 0x6d1a0020, 0x2cb35: 0x6c009a20, 0x2cb36: 0x6c031c20, 0x2cb37: 0x6c066820,\n\t0x2cb38: 0x6c066a20, 0x2cb39: 0x6c066c20, 0x2cb3a: 0x6c066e20, 0x2cb3b: 0x6c067020,\n\t0x2cb3c: 0x6c0cd420, 0x2cb3d: 0x6c2ab220, 0x2cb3e: 0x6c44d820, 0x2cb3f: 0x6cb94020,\n\t// Block 0xb2d, offset 0x2cb40\n\t0x2cb40: 0x6c00a020, 0x2cb41: 0x6c00a220, 0x2cb42: 0x6c00a420, 0x2cb43: 0x6c015a20,\n\t0x2cb44: 0x6c015c20, 0x2cb45: 0x6c032420, 0x2cb46: 0x6c032620, 0x2cb47: 0x6c032820,\n\t0x2cb48: 0x6c032a20, 0x2cb49: 0x6c068220, 0x2cb4a: 0x6c068420, 0x2cb4b: 0x6c068620,\n\t0x2cb4c: 0x6c068820, 0x2cb4d: 0x6c068a20, 0x2cb4e: 0x6c0cea20, 0x2cb4f: 0x6c0cec20,\n\t0x2cb50: 0x6c0cee20, 0x2cb51: 0x6c0cf020, 0x2cb52: 0x6c0cf220, 0x2cb53: 0x6c0cf420,\n\t0x2cb54: 0x6c0cf620, 0x2cb55: 0x6c0cf820, 0x2cb56: 0x6c0cfa20, 0x2cb57: 0x6c0cfc20,\n\t0x2cb58: 0x6c0cfe20, 0x2cb59: 0x6c0d0020, 0x2cb5a: 0x6c0d0220, 0x2cb5b: 0x6c0d0420,\n\t0x2cb5c: 0x6c17de20, 0x2cb5d: 0x6c17e020, 0x2cb5e: 0x6c17e220, 0x2cb5f: 0x6c17e420,\n\t0x2cb60: 0x6c17e620, 0x2cb61: 0x6c17e820, 0x2cb62: 0x6c17ea20, 0x2cb63: 0x6c17ec20,\n\t0x2cb64: 0x6c17ee20, 0x2cb65: 0x6c17f020, 0x2cb66: 0x6c17f220, 0x2cb67: 0x6c17f420,\n\t0x2cb68: 0x6c17f620, 0x2cb69: 0x6c17f820, 0x2cb6a: 0x6c17fa20, 0x2cb6b: 0x6c17fc20,\n\t0x2cb6c: 0x6c17fe20, 0x2cb6d: 0x6c180020, 0x2cb6e: 0x6c2ac820, 0x2cb6f: 0x6c2aca20,\n\t0x2cb70: 0x6c2acc20, 0x2cb71: 0x6c2ace20, 0x2cb72: 0x6c2ad020, 0x2cb73: 0x6c2ad220,\n\t0x2cb74: 0x6c2ad420, 0x2cb75: 0x6c2ad620, 0x2cb76: 0x6c2ad820, 0x2cb77: 0x6c2ada20,\n\t0x2cb78: 0x6c2adc20, 0x2cb79: 0x6c2ade20, 0x2cb7a: 0x6c2ae020, 0x2cb7b: 0x6c2ae220,\n\t0x2cb7c: 0x6c2ae420, 0x2cb7d: 0x6c2ae620, 0x2cb7e: 0x6c2ae820, 0x2cb7f: 0x6c2aea20,\n\t// Block 0xb2e, offset 0x2cb80\n\t0x2cb80: 0x6c2aec20, 0x2cb81: 0x6c2aee20, 0x2cb82: 0x6c2af020, 0x2cb83: 0x6c44ea20,\n\t0x2cb84: 0x6c44ec20, 0x2cb85: 0x6c44ee20, 0x2cb86: 0x6c2b4a20, 0x2cb87: 0x6c44f020,\n\t0x2cb88: 0x6c44f220, 0x2cb89: 0x6c44f420, 0x2cb8a: 0x6c44f620, 0x2cb8b: 0x6c44f820,\n\t0x2cb8c: 0x6c44fa20, 0x2cb8d: 0x6c44fc20, 0x2cb8e: 0x6c44fe20, 0x2cb8f: 0x6c450020,\n\t0x2cb90: 0x6c450220, 0x2cb91: 0x6c450420, 0x2cb92: 0x6c661c20, 0x2cb93: 0x6c661e20,\n\t0x2cb94: 0x6c662020, 0x2cb95: 0x6c662220, 0x2cb96: 0x6c662420, 0x2cb97: 0x6c662620,\n\t0x2cb98: 0x6c662820, 0x2cb99: 0x6c662a20, 0x2cb9a: 0x6c662c20, 0x2cb9b: 0x6c662e20,\n\t0x2cb9c: 0x6c663020, 0x2cb9d: 0x6c663220, 0x2cb9e: 0x6c663420, 0x2cb9f: 0x6c663620,\n\t0x2cba0: 0x6c663820, 0x2cba1: 0x6c663a20, 0x2cba2: 0x6c663c20, 0x2cba3: 0x6c663e20,\n\t0x2cba4: 0x6c664020, 0x2cba5: 0x6c664220, 0x2cba6: 0x6c664420, 0x2cba7: 0x6c664620,\n\t0x2cba8: 0x6c8ce420, 0x2cba9: 0x6cb95020, 0x2cbaa: 0x6c8ce620, 0x2cbab: 0x6c8ce820,\n\t0x2cbac: 0x6c8cea20, 0x2cbad: 0x6c8cec20, 0x2cbae: 0x6c8cee20, 0x2cbaf: 0x6c8cf020,\n\t0x2cbb0: 0x6c8cf220, 0x2cbb1: 0x6c8cf420, 0x2cbb2: 0x6cb95220, 0x2cbb3: 0x6cb95420,\n\t0x2cbb4: 0x6cb95620, 0x2cbb5: 0x6cb95820, 0x2cbb6: 0x6c8cf620, 0x2cbb7: 0x6cea4020,\n\t0x2cbb8: 0x6cea4220, 0x2cbb9: 0x6cea4420, 0x2cbba: 0x6cea4620, 0x2cbbb: 0x6cea4820,\n\t0x2cbbc: 0x6cea4a20, 0x2cbbd: 0x6cea4c20, 0x2cbbe: 0x6cea4e20, 0x2cbbf: 0x6cea5020,\n\t// Block 0xb2f, offset 0x2cbc0\n\t0x2cbc0: 0x6d1a2620, 0x2cbc1: 0x6d1a2820, 0x2cbc2: 0x6d1a2a20, 0x2cbc3: 0x6d1a2c20,\n\t0x2cbc4: 0x6d1a2e20, 0x2cbc5: 0x6d489820, 0x2cbc6: 0x6d489a20, 0x2cbc7: 0x6d489c20,\n\t0x2cbc8: 0x6d489e20, 0x2cbc9: 0x6d48a020, 0x2cbca: 0x6d48a220, 0x2cbcb: 0x6d48a420,\n\t0x2cbcc: 0x6d48a620, 0x2cbcd: 0x6d48a820, 0x2cbce: 0x6d48aa20, 0x2cbcf: 0x6d48ac20,\n\t0x2cbd0: 0x6d76aa20, 0x2cbd1: 0x6d76ac20, 0x2cbd2: 0x6d76ae20, 0x2cbd3: 0x6d76b020,\n\t0x2cbd4: 0x6d76b220, 0x2cbd5: 0x6da03420, 0x2cbd6: 0x6de05820, 0x2cbd7: 0x6e0c7220,\n\t0x2cbd8: 0x6e0c7420, 0x2cbd9: 0x6e286020, 0x2cbda: 0x6e286220, 0x2cbdb: 0x6c00a820,\n\t0x2cbdc: 0x6c016020, 0x2cbdd: 0x6c033c20, 0x2cbde: 0x6c033e20, 0x2cbdf: 0x6c06a420,\n\t0x2cbe0: 0x6c06a620, 0x2cbe1: 0x6c06a820, 0x2cbe2: 0x6c06aa20, 0x2cbe3: 0x6c0d4020,\n\t0x2cbe4: 0x6c0d4220, 0x2cbe5: 0x6c0d4420, 0x2cbe6: 0x6c0d4620, 0x2cbe7: 0x6c0d4820,\n\t0x2cbe8: 0x6c0d4a20, 0x2cbe9: 0x6c183c20, 0x2cbea: 0x6c183e20, 0x2cbeb: 0x6c184020,\n\t0x2cbec: 0x6c184220, 0x2cbed: 0x6c184420, 0x2cbee: 0x6c184620, 0x2cbef: 0x6c184820,\n\t0x2cbf0: 0x6c184a20, 0x2cbf1: 0x6c184c20, 0x2cbf2: 0x6c184e20, 0x2cbf3: 0x6c185020,\n\t0x2cbf4: 0x6c185220, 0x2cbf5: 0x6c2b5220, 0x2cbf6: 0x6c2b5420, 0x2cbf7: 0x6c2b5620,\n\t0x2cbf8: 0x6c2b5820, 0x2cbf9: 0x6c2b5a20, 0x2cbfa: 0x6c2b5c20, 0x2cbfb: 0x6c2b5e20,\n\t0x2cbfc: 0x6c2b6020, 0x2cbfd: 0x6c2b6220, 0x2cbfe: 0x6c2b6420, 0x2cbff: 0x6c2b6620,\n\t// Block 0xb30, offset 0x2cc00\n\t0x2cc00: 0x6c455020, 0x2cc01: 0x6c455220, 0x2cc02: 0x6c455420, 0x2cc03: 0x6c455620,\n\t0x2cc04: 0x6c455820, 0x2cc05: 0x6c455a20, 0x2cc06: 0x6c2b8620, 0x2cc07: 0x6c455c20,\n\t0x2cc08: 0x6c455e20, 0x2cc09: 0x6c456020, 0x2cc0a: 0x6c456220, 0x2cc0b: 0x6c456420,\n\t0x2cc0c: 0x6c66ac20, 0x2cc0d: 0x6c66ae20, 0x2cc0e: 0x6c66b020, 0x2cc0f: 0x6c66b220,\n\t0x2cc10: 0x6c66b420, 0x2cc11: 0x6c66b620, 0x2cc12: 0x6c8d4420, 0x2cc13: 0x6c8d4620,\n\t0x2cc14: 0x6c8d4820, 0x2cc15: 0x6c8d4a20, 0x2cc16: 0x6c8d4c20, 0x2cc17: 0x6c9b7c20,\n\t0x2cc18: 0x6c8d4e20, 0x2cc19: 0x6c8d5020, 0x2cc1a: 0x6c8d5220, 0x2cc1b: 0x6cb9ac20,\n\t0x2cc1c: 0x6cb9ae20, 0x2cc1d: 0x6cb9b020, 0x2cc1e: 0x6cb9b220, 0x2cc1f: 0x6cea9220,\n\t0x2cc20: 0x6cea9420, 0x2cc21: 0x6cea9620, 0x2cc22: 0x6cea9820, 0x2cc23: 0x6cea9a20,\n\t0x2cc24: 0x6cea9c20, 0x2cc25: 0x6cea9e20, 0x2cc26: 0x6ceaa020, 0x2cc27: 0x6ceaa220,\n\t0x2cc28: 0x6d1a7820, 0x2cc29: 0x6d1a7a20, 0x2cc2a: 0x6d1a7c20, 0x2cc2b: 0x6d1a7e20,\n\t0x2cc2c: 0x6d1a8020, 0x2cc2d: 0x6d1a8220, 0x2cc2e: 0x6d48da20, 0x2cc2f: 0x6d48dc20,\n\t0x2cc30: 0x6d48de20, 0x2cc31: 0x6d48e020, 0x2cc32: 0x6d48e220, 0x2cc33: 0x6d76da20,\n\t0x2cc34: 0x6da05c20, 0x2cc35: 0x6da05e20, 0x2cc36: 0x6da06020, 0x2cc37: 0x6de06020,\n\t0x2cc38: 0x6de06620, 0x2cc39: 0x6c00aa20, 0x2cc3a: 0x6c016420, 0x2cc3b: 0x6c034620,\n\t0x2cc3c: 0x6c034820, 0x2cc3d: 0x6c034a20, 0x2cc3e: 0x6c034c20, 0x2cc3f: 0x6c034e20,\n\t// Block 0xb31, offset 0x2cc40\n\t0x2cc40: 0x6c035020, 0x2cc41: 0x6c035220, 0x2cc42: 0x6c035420, 0x2cc43: 0x6c06b420,\n\t0x2cc44: 0x6c06b620, 0x2cc45: 0x6c06b820, 0x2cc46: 0x6c06ba20, 0x2cc47: 0x6c06bc20,\n\t0x2cc48: 0x6c0d5e20, 0x2cc49: 0x6c187820, 0x2cc4a: 0x6c2b8820, 0x2cc4b: 0x6c2b8a20,\n\t0x2cc4c: 0x6c2b8c20, 0x2cc4d: 0x6c458220, 0x2cc4e: 0x6c66de20, 0x2cc4f: 0x6c8d6c20,\n\t0x2cc50: 0x6c8d6e20, 0x2cc51: 0x6cb9d620, 0x2cc52: 0x6cb9d820, 0x2cc53: 0x6c8d7e20,\n\t0x2cc54: 0x6d48f220, 0x2cc55: 0x6c00ac20, 0x2cc56: 0x6c035a20, 0x2cc57: 0x6c06c620,\n\t0x2cc58: 0x6c8d8220, 0x2cc59: 0x6c8d8420, 0x2cc5a: 0x6c00b020, 0x2cc5b: 0x6c06ca20,\n\t0x2cc5c: 0x6c06cc20, 0x2cc5d: 0x6c06ce20, 0x2cc5e: 0x6c06d020, 0x2cc5f: 0x6c0d6820,\n\t0x2cc60: 0x6c0d6a20, 0x2cc61: 0x6c0d6c20, 0x2cc62: 0x6c0d6e20, 0x2cc63: 0x6c189020,\n\t0x2cc64: 0x6c189220, 0x2cc65: 0x6c189420, 0x2cc66: 0x6c2b9e20, 0x2cc67: 0x6c45a020,\n\t0x2cc68: 0x6c45a220, 0x2cc69: 0x6c45a420, 0x2cc6a: 0x6c66fc20, 0x2cc6b: 0x6c66fe20,\n\t0x2cc6c: 0x6c8d8820, 0x2cc6d: 0x6c8d8a20, 0x2cc6e: 0x6c8d8c20, 0x2cc6f: 0x6cead820,\n\t0x2cc70: 0x6d1abc20, 0x2cc71: 0x6d1abe20, 0x2cc72: 0x6d1ac020, 0x2cc73: 0x6d48f620,\n\t0x2cc74: 0x6d76ea20, 0x2cc75: 0x6da07820, 0x2cc76: 0x6de06820, 0x2cc77: 0x6df8ba20,\n\t0x2cc78: 0x6c00b420, 0x2cc79: 0x6c036020, 0x2cc7a: 0x6c036220, 0x2cc7b: 0x6c18a620,\n\t0x2cc7c: 0x6c2ba820, 0x2cc7d: 0x6c45c020, 0x2cc7e: 0x6c8d9220, 0x2cc7f: 0x6c8d9420,\n\t// Block 0xb32, offset 0x2cc80\n\t0x2cc80: 0x6c8d9620, 0x2cc81: 0x6c00b620, 0x2cc82: 0x6c016820, 0x2cc83: 0x6c016a20,\n\t0x2cc84: 0x6c00e620, 0x2cc85: 0x6c036820, 0x2cc86: 0x6c036a20, 0x2cc87: 0x6c036c20,\n\t0x2cc88: 0x6c036e20, 0x2cc89: 0x6c06d220, 0x2cc8a: 0x6c06d420, 0x2cc8b: 0x6c0d8420,\n\t0x2cc8c: 0x6c06d620, 0x2cc8d: 0x6c0d8620, 0x2cc8e: 0x6c0d8820, 0x2cc8f: 0x6c0d8a20,\n\t0x2cc90: 0x6c0d8c20, 0x2cc91: 0x6c2bac20, 0x2cc92: 0x6c2bae20, 0x2cc93: 0x6c2bb020,\n\t0x2cc94: 0x6c2bb220, 0x2cc95: 0x6c2bb420, 0x2cc96: 0x6c2bb620, 0x2cc97: 0x6c45c820,\n\t0x2cc98: 0x6c45ca20, 0x2cc99: 0x6c8d9820, 0x2cc9a: 0x6cb9f220, 0x2cc9b: 0x6e0c8420,\n\t0x2cc9c: 0x6c00ba20, 0x2cc9d: 0x6c037620, 0x2cc9e: 0x6c037820, 0x2cc9f: 0x6c06e220,\n\t0x2cca0: 0x6c06e420, 0x2cca1: 0x6c06e620, 0x2cca2: 0x6c06e820, 0x2cca3: 0x6c18c020,\n\t0x2cca4: 0x6c18c220, 0x2cca5: 0x6c2bd620, 0x2cca6: 0x6c2bd820, 0x2cca7: 0x6c2bda20,\n\t0x2cca8: 0x6c8da820, 0x2cca9: 0x6c00bc20, 0x2ccaa: 0x6c017220, 0x2ccab: 0x6c017420,\n\t0x2ccac: 0x6c037c20, 0x2ccad: 0x6c06ec20, 0x2ccae: 0x6c06ee20, 0x2ccaf: 0x6c06f020,\n\t0x2ccb0: 0x6c0db820, 0x2ccb1: 0x6c0dba20, 0x2ccb2: 0x6c18d220, 0x2ccb3: 0x6c18d420,\n\t0x2ccb4: 0x6c18d620, 0x2ccb5: 0x6c18d820, 0x2ccb6: 0x6c2bf420, 0x2ccb7: 0x6c2bf620,\n\t0x2ccb8: 0x6c2bf820, 0x2ccb9: 0x6c2bfa20, 0x2ccba: 0x6c2bfc20, 0x2ccbb: 0x6c45e420,\n\t0x2ccbc: 0x6c45e620, 0x2ccbd: 0x6c45e820, 0x2ccbe: 0x6c8db620, 0x2ccbf: 0x6c673020,\n\t// Block 0xb33, offset 0x2ccc0\n\t0x2ccc0: 0x6ceaf820, 0x2ccc1: 0x6ceafa20, 0x2ccc2: 0x6c00be20, 0x2ccc3: 0x6c038620,\n\t0x2ccc4: 0x6c038820, 0x2ccc5: 0x6c038a20, 0x2ccc6: 0x6c038c20, 0x2ccc7: 0x6c06f420,\n\t0x2ccc8: 0x6c06f620, 0x2ccc9: 0x6c06f820, 0x2ccca: 0x6c0dce20, 0x2cccb: 0x6c0dd020,\n\t0x2cccc: 0x6c0dd220, 0x2cccd: 0x6c0dd420, 0x2ccce: 0x6c18e220, 0x2cccf: 0x6c18e420,\n\t0x2ccd0: 0x6c18e620, 0x2ccd1: 0x6c18e820, 0x2ccd2: 0x6c2c0420, 0x2ccd3: 0x6c2c0620,\n\t0x2ccd4: 0x6c2c0820, 0x2ccd5: 0x6c2c0a20, 0x2ccd6: 0x6c45f820, 0x2ccd7: 0x6c45fa20,\n\t0x2ccd8: 0x6c45fc20, 0x2ccd9: 0x6c45fe20, 0x2ccda: 0x6c460020, 0x2ccdb: 0x6c460220,\n\t0x2ccdc: 0x6c673820, 0x2ccdd: 0x6c673a20, 0x2ccde: 0x6c673c20, 0x2ccdf: 0x6c673e20,\n\t0x2cce0: 0x6c8db820, 0x2cce1: 0x6c8dba20, 0x2cce2: 0x6c8dbc20, 0x2cce3: 0x6c8dbe20,\n\t0x2cce4: 0x6cba0c20, 0x2cce5: 0x6cba0e20, 0x2cce6: 0x6cba1020, 0x2cce7: 0x6cba1220,\n\t0x2cce8: 0x6cba1420, 0x2cce9: 0x6c8dc020, 0x2ccea: 0x6ceb0420, 0x2cceb: 0x6ceb0620,\n\t0x2ccec: 0x6d1ae020, 0x2cced: 0x6d1ae220, 0x2ccee: 0x6d1ae420, 0x2ccef: 0x6ceb2020,\n\t0x2ccf0: 0x6d1ae620, 0x2ccf1: 0x6d491a20, 0x2ccf2: 0x6d491c20, 0x2ccf3: 0x6da08820,\n\t0x2ccf4: 0x6de07020, 0x2ccf5: 0x6e451620, 0x2ccf6: 0x6c00c020, 0x2ccf7: 0x6c039220,\n\t0x2ccf8: 0x6c039420, 0x2ccf9: 0x6c039620, 0x2ccfa: 0x6c070a20, 0x2ccfb: 0x6c070c20,\n\t0x2ccfc: 0x6c070e20, 0x2ccfd: 0x6c0df220, 0x2ccfe: 0x6c0df420, 0x2ccff: 0x6c190420,\n\t// Block 0xb34, offset 0x2cd00\n\t0x2cd00: 0x6c2c2820, 0x2cd01: 0x6c2c2a20, 0x2cd02: 0x6c2c2c20, 0x2cd03: 0x6c8de620,\n\t0x2cd04: 0x6c8de820, 0x2cd05: 0x6cba2e20, 0x2cd06: 0x6d1b1420, 0x2cd07: 0x6d493c20,\n\t0x2cd08: 0x6c00c420, 0x2cd09: 0x6c017e20, 0x2cd0a: 0x6c03a020, 0x2cd0b: 0x6c03a220,\n\t0x2cd0c: 0x6c03a420, 0x2cd0d: 0x6c03a620, 0x2cd0e: 0x6c03a820, 0x2cd0f: 0x6c071a20,\n\t0x2cd10: 0x6c071c20, 0x2cd11: 0x6c071e20, 0x2cd12: 0x6c0e0820, 0x2cd13: 0x6c190e20,\n\t0x2cd14: 0x6c2c3c20, 0x2cd15: 0x6c2c3e20, 0x2cd16: 0x6c2c4020, 0x2cd17: 0x6c2c4220,\n\t0x2cd18: 0x6c2c4420, 0x2cd19: 0x6c464020, 0x2cd1a: 0x6c464220, 0x2cd1b: 0x6c464420,\n\t0x2cd1c: 0x6c464620, 0x2cd1d: 0x6c464820, 0x2cd1e: 0x6c677c20, 0x2cd1f: 0x6c677e20,\n\t0x2cd20: 0x6ceb3220, 0x2cd21: 0x6d76fc20, 0x2cd22: 0x6dc2f620, 0x2cd23: 0x6c018020,\n\t0x2cd24: 0x6c073620, 0x2cd25: 0x6c073820, 0x2cd26: 0x6c073a20, 0x2cd27: 0x6c073c20,\n\t0x2cd28: 0x6c073e20, 0x2cd29: 0x6c074020, 0x2cd2a: 0x6c074220, 0x2cd2b: 0x6c074420,\n\t0x2cd2c: 0x6c074620, 0x2cd2d: 0x6c074820, 0x2cd2e: 0x6c074a20, 0x2cd2f: 0x6c074c20,\n\t0x2cd30: 0x6c074e20, 0x2cd31: 0x6c075020, 0x2cd32: 0x6c075220, 0x2cd33: 0x6c075420,\n\t0x2cd34: 0x6c075620, 0x2cd35: 0x6c075820, 0x2cd36: 0x6c075a20, 0x2cd37: 0x6c075c20,\n\t0x2cd38: 0x6c075e20, 0x2cd39: 0x6c076020, 0x2cd3a: 0x6c076220, 0x2cd3b: 0x6c076420,\n\t0x2cd3c: 0x6c076620, 0x2cd3d: 0x6c076820, 0x2cd3e: 0x6c076a20, 0x2cd3f: 0x6c0e2220,\n\t// Block 0xb35, offset 0x2cd40\n\t0x2cd40: 0x6c0e2420, 0x2cd41: 0x6c0e2620, 0x2cd42: 0x6c0e2820, 0x2cd43: 0x6c0e2a20,\n\t0x2cd44: 0x6c0e2c20, 0x2cd45: 0x6c0e2e20, 0x2cd46: 0x6c0e3020, 0x2cd47: 0x6c0e3220,\n\t0x2cd48: 0x6c0e3420, 0x2cd49: 0x6c0e3620, 0x2cd4a: 0x6c0e3820, 0x2cd4b: 0x6c0e3a20,\n\t0x2cd4c: 0x6c0e3c20, 0x2cd4d: 0x6c0e3e20, 0x2cd4e: 0x6c0e4020, 0x2cd4f: 0x6c0e4220,\n\t0x2cd50: 0x6c0e4420, 0x2cd51: 0x6c0e4620, 0x2cd52: 0x6c0e4820, 0x2cd53: 0x6c0e4a20,\n\t0x2cd54: 0x6c0e4c20, 0x2cd55: 0x6c0e4e20, 0x2cd56: 0x6c0e5020, 0x2cd57: 0x6c0e5220,\n\t0x2cd58: 0x6c193e20, 0x2cd59: 0x6c194020, 0x2cd5a: 0x6c194220, 0x2cd5b: 0x6c194420,\n\t0x2cd5c: 0x6c194620, 0x2cd5d: 0x6c194820, 0x2cd5e: 0x6c194a20, 0x2cd5f: 0x6c194c20,\n\t0x2cd60: 0x6c194e20, 0x2cd61: 0x6c195020, 0x2cd62: 0x6c195220, 0x2cd63: 0x6c195420,\n\t0x2cd64: 0x6c195620, 0x2cd65: 0x6c195820, 0x2cd66: 0x6c195a20, 0x2cd67: 0x6c195c20,\n\t0x2cd68: 0x6c195e20, 0x2cd69: 0x6c196020, 0x2cd6a: 0x6c196220, 0x2cd6b: 0x6c196420,\n\t0x2cd6c: 0x6c196620, 0x2cd6d: 0x6c196820, 0x2cd6e: 0x6c196a20, 0x2cd6f: 0x6c196c20,\n\t0x2cd70: 0x6c196e20, 0x2cd71: 0x6c197020, 0x2cd72: 0x6c197220, 0x2cd73: 0x6c197420,\n\t0x2cd74: 0x6c197620, 0x2cd75: 0x6c197820, 0x2cd76: 0x6c197a20, 0x2cd77: 0x6c197c20,\n\t0x2cd78: 0x6c197e20, 0x2cd79: 0x6c198020, 0x2cd7a: 0x6c198220, 0x2cd7b: 0x6c198420,\n\t0x2cd7c: 0x6c198620, 0x2cd7d: 0x6c198820, 0x2cd7e: 0x6c198a20, 0x2cd7f: 0x6c198c20,\n\t// Block 0xb36, offset 0x2cd80\n\t0x2cd80: 0x6c198e20, 0x2cd81: 0x6c199020, 0x2cd82: 0x6c199220, 0x2cd83: 0x6c199420,\n\t0x2cd84: 0x6c199620, 0x2cd85: 0x6c199820, 0x2cd86: 0x6c199a20, 0x2cd87: 0x6c199c20,\n\t0x2cd88: 0x6c199e20, 0x2cd89: 0x6c19a020, 0x2cd8a: 0x6c19a220, 0x2cd8b: 0x6c19a420,\n\t0x2cd8c: 0x6c19a620, 0x2cd8d: 0x6c19a820, 0x2cd8e: 0x6c19aa20, 0x2cd8f: 0x6c19ac20,\n\t0x2cd90: 0x6c19ae20, 0x2cd91: 0x6c19b020, 0x2cd92: 0x6c19b220, 0x2cd93: 0x6c19b420,\n\t0x2cd94: 0x6c19b620, 0x2cd95: 0x6c19b820, 0x2cd96: 0x6c19ba20, 0x2cd97: 0x6c19bc20,\n\t0x2cd98: 0x6c19be20, 0x2cd99: 0x6c19c020, 0x2cd9a: 0x6c19c220, 0x2cd9b: 0x6c19c420,\n\t0x2cd9c: 0x6c19c620, 0x2cd9d: 0x6c2c6820, 0x2cd9e: 0x6c2c6a20, 0x2cd9f: 0x6c2c6c20,\n\t0x2cda0: 0x6c2c6e20, 0x2cda1: 0x6c2c7020, 0x2cda2: 0x6c2c7220, 0x2cda3: 0x6c2c7420,\n\t0x2cda4: 0x6c2c7620, 0x2cda5: 0x6c2c7820, 0x2cda6: 0x6c2c7a20, 0x2cda7: 0x6c2c7c20,\n\t0x2cda8: 0x6c2c7e20, 0x2cda9: 0x6c2c8020, 0x2cdaa: 0x6c2c8220, 0x2cdab: 0x6c2c8420,\n\t0x2cdac: 0x6c2c8620, 0x2cdad: 0x6c2c8820, 0x2cdae: 0x6c2c8a20, 0x2cdaf: 0x6c2c8c20,\n\t0x2cdb0: 0x6c466420, 0x2cdb1: 0x6c2c8e20, 0x2cdb2: 0x6c466620, 0x2cdb3: 0x6c2c9020,\n\t0x2cdb4: 0x6c2c9220, 0x2cdb5: 0x6c2c9420, 0x2cdb6: 0x6c2c9620, 0x2cdb7: 0x6c2c9820,\n\t0x2cdb8: 0x6c2c9a20, 0x2cdb9: 0x6c2c9c20, 0x2cdba: 0x6c2c9e20, 0x2cdbb: 0x6c2ca020,\n\t0x2cdbc: 0x6c2ca220, 0x2cdbd: 0x6c2ca420, 0x2cdbe: 0x6c2ca620, 0x2cdbf: 0x6c2ca820,\n\t// Block 0xb37, offset 0x2cdc0\n\t0x2cdc0: 0x6c2caa20, 0x2cdc1: 0x6c2cac20, 0x2cdc2: 0x6c2cae20, 0x2cdc3: 0x6c2cb020,\n\t0x2cdc4: 0x6c2cb220, 0x2cdc5: 0x6c2cb420, 0x2cdc6: 0x6c2cb620, 0x2cdc7: 0x6c2cb820,\n\t0x2cdc8: 0x6c2cba20, 0x2cdc9: 0x6c2cbc20, 0x2cdca: 0x6c2cbe20, 0x2cdcb: 0x6c2cc020,\n\t0x2cdcc: 0x6c2cc220, 0x2cdcd: 0x6c2cc420, 0x2cdce: 0x6c2cc620, 0x2cdcf: 0x6c2cc820,\n\t0x2cdd0: 0x6c2cca20, 0x2cdd1: 0x6c2ccc20, 0x2cdd2: 0x6c2cce20, 0x2cdd3: 0x6c2cd020,\n\t0x2cdd4: 0x6c2cd220, 0x2cdd5: 0x6c2cd420, 0x2cdd6: 0x6c2cd620, 0x2cdd7: 0x6c2cd820,\n\t0x2cdd8: 0x6c2cda20, 0x2cdd9: 0x6c2cdc20, 0x2cdda: 0x6c2cde20, 0x2cddb: 0x6c2ce020,\n\t0x2cddc: 0x6c2ce220, 0x2cddd: 0x6c2ce420, 0x2cdde: 0x6c468620, 0x2cddf: 0x6c468820,\n\t0x2cde0: 0x6c468a20, 0x2cde1: 0x6c468c20, 0x2cde2: 0x6c468e20, 0x2cde3: 0x6c469020,\n\t0x2cde4: 0x6c469220, 0x2cde5: 0x6c469420, 0x2cde6: 0x6c469620, 0x2cde7: 0x6c469820,\n\t0x2cde8: 0x6c469a20, 0x2cde9: 0x6c469c20, 0x2cdea: 0x6c469e20, 0x2cdeb: 0x6c46a020,\n\t0x2cdec: 0x6c46a220, 0x2cded: 0x6c46a420, 0x2cdee: 0x6c46a620, 0x2cdef: 0x6c46a820,\n\t0x2cdf0: 0x6c46aa20, 0x2cdf1: 0x6c46ac20, 0x2cdf2: 0x6c46ae20, 0x2cdf3: 0x6c46b020,\n\t0x2cdf4: 0x6c46b220, 0x2cdf5: 0x6c46b420, 0x2cdf6: 0x6c46b620, 0x2cdf7: 0x6c46b820,\n\t0x2cdf8: 0x6c46ba20, 0x2cdf9: 0x6c46bc20, 0x2cdfa: 0x6c46be20, 0x2cdfb: 0x6c46c020,\n\t0x2cdfc: 0x6c46c220, 0x2cdfd: 0x6c46c420, 0x2cdfe: 0x6c46c620, 0x2cdff: 0x6c46c820,\n\t// Block 0xb38, offset 0x2ce00\n\t0x2ce00: 0x6c46ca20, 0x2ce01: 0x6c46cc20, 0x2ce02: 0x6c46ce20, 0x2ce03: 0x6c46d020,\n\t0x2ce04: 0x6c46d220, 0x2ce05: 0x6c46d420, 0x2ce06: 0x6c46d620, 0x2ce07: 0x6c46d820,\n\t0x2ce08: 0x6c46da20, 0x2ce09: 0x6c46dc20, 0x2ce0a: 0x6c46de20, 0x2ce0b: 0x6c46e020,\n\t0x2ce0c: 0x6c46e220, 0x2ce0d: 0x6c46e420, 0x2ce0e: 0x6c46e620, 0x2ce0f: 0x6c46e820,\n\t0x2ce10: 0x6c46ea20, 0x2ce11: 0x6c46ec20, 0x2ce12: 0x6c46ee20, 0x2ce13: 0x6c46f020,\n\t0x2ce14: 0x6c46f220, 0x2ce15: 0x6c46f420, 0x2ce16: 0x6c46f620, 0x2ce17: 0x6c46f820,\n\t0x2ce18: 0x6c46fa20, 0x2ce19: 0x6c46fc20, 0x2ce1a: 0x6c46fe20, 0x2ce1b: 0x6c470020,\n\t0x2ce1c: 0x6c470220, 0x2ce1d: 0x6c470420, 0x2ce1e: 0x6c470620, 0x2ce1f: 0x6c470820,\n\t0x2ce20: 0x6c67ba20, 0x2ce21: 0x6c67bc20, 0x2ce22: 0x6c67be20, 0x2ce23: 0x6c67c020,\n\t0x2ce24: 0x6c67c220, 0x2ce25: 0x6c67c420, 0x2ce26: 0x6c67c620, 0x2ce27: 0x6c67c820,\n\t0x2ce28: 0x6c67ca20, 0x2ce29: 0x6c67cc20, 0x2ce2a: 0x6c67ce20, 0x2ce2b: 0x6c67d020,\n\t0x2ce2c: 0x6c67d220, 0x2ce2d: 0x6c67d420, 0x2ce2e: 0x6c67d620, 0x2ce2f: 0x6c67d820,\n\t0x2ce30: 0x6c67da20, 0x2ce31: 0x6c67dc20, 0x2ce32: 0x6c67de20, 0x2ce33: 0x6c67e020,\n\t0x2ce34: 0x6c67e220, 0x2ce35: 0x6c67e420, 0x2ce36: 0x6c67e620, 0x2ce37: 0x6c67e820,\n\t0x2ce38: 0x6c67ea20, 0x2ce39: 0x6c67ec20, 0x2ce3a: 0x6c67ee20, 0x2ce3b: 0x6c67f020,\n\t0x2ce3c: 0x6c67f220, 0x2ce3d: 0x6c67f420, 0x2ce3e: 0x6c67f620, 0x2ce3f: 0x6c67f820,\n\t// Block 0xb39, offset 0x2ce40\n\t0x2ce40: 0x6c67fa20, 0x2ce41: 0x6c67fc20, 0x2ce42: 0x6c67fe20, 0x2ce43: 0x6c680020,\n\t0x2ce44: 0x6c680220, 0x2ce45: 0x6c680420, 0x2ce46: 0x6c680620, 0x2ce47: 0x6c680820,\n\t0x2ce48: 0x6c680a20, 0x2ce49: 0x6c680c20, 0x2ce4a: 0x6c680e20, 0x2ce4b: 0x6c681020,\n\t0x2ce4c: 0x6c8e1020, 0x2ce4d: 0x6c681220, 0x2ce4e: 0x6c681420, 0x2ce4f: 0x6c681620,\n\t0x2ce50: 0x6c681820, 0x2ce51: 0x6c681a20, 0x2ce52: 0x6c681c20, 0x2ce53: 0x6c681e20,\n\t0x2ce54: 0x6c682020, 0x2ce55: 0x6c682220, 0x2ce56: 0x6c682420, 0x2ce57: 0x6c682620,\n\t0x2ce58: 0x6c682820, 0x2ce59: 0x6c682a20, 0x2ce5a: 0x6c682c20, 0x2ce5b: 0x6c682e20,\n\t0x2ce5c: 0x6c683020, 0x2ce5d: 0x6c683220, 0x2ce5e: 0x6c683420, 0x2ce5f: 0x6c683620,\n\t0x2ce60: 0x6c683820, 0x2ce61: 0x6c683a20, 0x2ce62: 0x6c683c20, 0x2ce63: 0x6c683e20,\n\t0x2ce64: 0x6c684020, 0x2ce65: 0x6c684220, 0x2ce66: 0x6c684420, 0x2ce67: 0x6c684620,\n\t0x2ce68: 0x6c8e4020, 0x2ce69: 0x6c8e4220, 0x2ce6a: 0x6c8e4420, 0x2ce6b: 0x6c8e4620,\n\t0x2ce6c: 0x6c8e4820, 0x2ce6d: 0x6c8e4a20, 0x2ce6e: 0x6c8e4c20, 0x2ce6f: 0x6c8e4e20,\n\t0x2ce70: 0x6c8e5020, 0x2ce71: 0x6c8e5220, 0x2ce72: 0x6c8e5420, 0x2ce73: 0x6c8e5620,\n\t0x2ce74: 0x6c8e5820, 0x2ce75: 0x6c8e5a20, 0x2ce76: 0x6c8e5c20, 0x2ce77: 0x6c8e5e20,\n\t0x2ce78: 0x6c8e6020, 0x2ce79: 0x6c8e6220, 0x2ce7a: 0x6c8e6420, 0x2ce7b: 0x6c8e6620,\n\t0x2ce7c: 0x6c8e6820, 0x2ce7d: 0x6c8e6a20, 0x2ce7e: 0x6c8e6c20, 0x2ce7f: 0x6c8e6e20,\n\t// Block 0xb3a, offset 0x2ce80\n\t0x2ce80: 0x6c8e7020, 0x2ce81: 0x6c8e7220, 0x2ce82: 0x6c8e7420, 0x2ce83: 0x6c8e7620,\n\t0x2ce84: 0x6c8e7820, 0x2ce85: 0x6c8e7a20, 0x2ce86: 0x6c8e7c20, 0x2ce87: 0x6c8e7e20,\n\t0x2ce88: 0x6c8e8020, 0x2ce89: 0x6c8e8220, 0x2ce8a: 0x6c8e8420, 0x2ce8b: 0x6c8e8620,\n\t0x2ce8c: 0x6c8e8820, 0x2ce8d: 0x6c8e8a20, 0x2ce8e: 0x6c8e8c20, 0x2ce8f: 0x6c8e8e20,\n\t0x2ce90: 0x6c8e9020, 0x2ce91: 0x6c8e9220, 0x2ce92: 0x6c8e9420, 0x2ce93: 0x6c8e9620,\n\t0x2ce94: 0x6c8e9820, 0x2ce95: 0x6c8e9a20, 0x2ce96: 0x6c8e9c20, 0x2ce97: 0x6c8e9e20,\n\t0x2ce98: 0x6c8ea020, 0x2ce99: 0x6cba9420, 0x2ce9a: 0x6c8ea220, 0x2ce9b: 0x6c8ea420,\n\t0x2ce9c: 0x6c8ea620, 0x2ce9d: 0x6c8ea820, 0x2ce9e: 0x6c8eaa20, 0x2ce9f: 0x6c9aaa20,\n\t0x2cea0: 0x6c8eac20, 0x2cea1: 0x6c8eae20, 0x2cea2: 0x6c8eb020, 0x2cea3: 0x6c8eb220,\n\t0x2cea4: 0x6c8eb420, 0x2cea5: 0x6c8eb620, 0x2cea6: 0x6c8eb820, 0x2cea7: 0x6c8eba20,\n\t0x2cea8: 0x6c8ebc20, 0x2cea9: 0x6c8ebe20, 0x2ceaa: 0x6c8ec020, 0x2ceab: 0x6c901820,\n\t0x2ceac: 0x6c8ec220, 0x2cead: 0x6c8ec420, 0x2ceae: 0x6c8ec620, 0x2ceaf: 0x6c8ec820,\n\t0x2ceb0: 0x6c8eca20, 0x2ceb1: 0x6c8ecc20, 0x2ceb2: 0x6c8ece20, 0x2ceb3: 0x6c8ed020,\n\t0x2ceb4: 0x6c8ed220, 0x2ceb5: 0x6c8ed420, 0x2ceb6: 0x6c8ed620, 0x2ceb7: 0x6c8ed820,\n\t0x2ceb8: 0x6c8eda20, 0x2ceb9: 0x6c8edc20, 0x2ceba: 0x6cba9620, 0x2cebb: 0x6cba9820,\n\t0x2cebc: 0x6cba9a20, 0x2cebd: 0x6cba9c20, 0x2cebe: 0x6cba9e20, 0x2cebf: 0x6cbaa020,\n\t// Block 0xb3b, offset 0x2cec0\n\t0x2cec0: 0x6cbaa220, 0x2cec1: 0x6cbaa420, 0x2cec2: 0x6cbaa620, 0x2cec3: 0x6cbaa820,\n\t0x2cec4: 0x6cbaaa20, 0x2cec5: 0x6cbaac20, 0x2cec6: 0x6cbaae20, 0x2cec7: 0x6cbab020,\n\t0x2cec8: 0x6cbab220, 0x2cec9: 0x6cbab420, 0x2ceca: 0x6cbab620, 0x2cecb: 0x6cbab820,\n\t0x2cecc: 0x6cbaba20, 0x2cecd: 0x6ceb6e20, 0x2cece: 0x6cbabc20, 0x2cecf: 0x6cbabe20,\n\t0x2ced0: 0x6cbac020, 0x2ced1: 0x6cbac220, 0x2ced2: 0x6cbac420, 0x2ced3: 0x6cbac620,\n\t0x2ced4: 0x6cbac820, 0x2ced5: 0x6cbaca20, 0x2ced6: 0x6cbacc20, 0x2ced7: 0x6cbace20,\n\t0x2ced8: 0x6cbad020, 0x2ced9: 0x6cbad220, 0x2ceda: 0x6cbad420, 0x2cedb: 0x6cbad620,\n\t0x2cedc: 0x6cbad820, 0x2cedd: 0x6cbada20, 0x2cede: 0x6cbadc20, 0x2cedf: 0x6cbade20,\n\t0x2cee0: 0x6cbae020, 0x2cee1: 0x6cbae220, 0x2cee2: 0x6cbae420, 0x2cee3: 0x6cbae620,\n\t0x2cee4: 0x6cbae820, 0x2cee5: 0x6cbaea20, 0x2cee6: 0x6cbaec20, 0x2cee7: 0x6cbaee20,\n\t0x2cee8: 0x6cbaf020, 0x2cee9: 0x6cbaf220, 0x2ceea: 0x6cbaf420, 0x2ceeb: 0x6cbaf620,\n\t0x2ceec: 0x6cbaf820, 0x2ceed: 0x6cbafa20, 0x2ceee: 0x6cbafc20, 0x2ceef: 0x6cbafe20,\n\t0x2cef0: 0x6cbb0020, 0x2cef1: 0x6cbb0220, 0x2cef2: 0x6cbb0420, 0x2cef3: 0x6cbb0620,\n\t0x2cef4: 0x6cbb0820, 0x2cef5: 0x6cbb0a20, 0x2cef6: 0x6c901a20, 0x2cef7: 0x6cbb0c20,\n\t0x2cef8: 0x6cbb0e20, 0x2cef9: 0x6cbb1020, 0x2cefa: 0x6cbb1220, 0x2cefb: 0x6cbb1420,\n\t0x2cefc: 0x6cbb1620, 0x2cefd: 0x6cbb1820, 0x2cefe: 0x6cbb1a20, 0x2ceff: 0x6ceb7020,\n\t// Block 0xb3c, offset 0x2cf00\n\t0x2cf00: 0x6ceb7220, 0x2cf01: 0x6ceb7420, 0x2cf02: 0x6ceb7620, 0x2cf03: 0x6ceb7820,\n\t0x2cf04: 0x6ceb7a20, 0x2cf05: 0x6ceb7c20, 0x2cf06: 0x6ceb7e20, 0x2cf07: 0x6ceb8020,\n\t0x2cf08: 0x6ceb8220, 0x2cf09: 0x6ceb8420, 0x2cf0a: 0x6ceb8620, 0x2cf0b: 0x6ceb8820,\n\t0x2cf0c: 0x6ceb8a20, 0x2cf0d: 0x6ceb8c20, 0x2cf0e: 0x6ceb8e20, 0x2cf0f: 0x6ceb9020,\n\t0x2cf10: 0x6ceb9220, 0x2cf11: 0x6ceb9420, 0x2cf12: 0x6ceb9620, 0x2cf13: 0x6ceb9820,\n\t0x2cf14: 0x6ceb9a20, 0x2cf15: 0x6ceb9c20, 0x2cf16: 0x6ceb9e20, 0x2cf17: 0x6ceba020,\n\t0x2cf18: 0x6ceba220, 0x2cf19: 0x6ceba420, 0x2cf1a: 0x6ceba620, 0x2cf1b: 0x6ceba820,\n\t0x2cf1c: 0x6cebaa20, 0x2cf1d: 0x6cebac20, 0x2cf1e: 0x6cbc3e20, 0x2cf1f: 0x6cebae20,\n\t0x2cf20: 0x6cebb020, 0x2cf21: 0x6cebb220, 0x2cf22: 0x6cebb420, 0x2cf23: 0x6cebb620,\n\t0x2cf24: 0x6cebb820, 0x2cf25: 0x6cebba20, 0x2cf26: 0x6cebbc20, 0x2cf27: 0x6cebbe20,\n\t0x2cf28: 0x6cebc020, 0x2cf29: 0x6cebc220, 0x2cf2a: 0x6cebc420, 0x2cf2b: 0x6cebc620,\n\t0x2cf2c: 0x6cebc820, 0x2cf2d: 0x6cebca20, 0x2cf2e: 0x6cebcc20, 0x2cf2f: 0x6cebce20,\n\t0x2cf30: 0x6cebd020, 0x2cf31: 0x6cebd220, 0x2cf32: 0x6cebd420, 0x2cf33: 0x6cebd620,\n\t0x2cf34: 0x6cebd820, 0x2cf35: 0x6cebda20, 0x2cf36: 0x6d1b5220, 0x2cf37: 0x6d1b5420,\n\t0x2cf38: 0x6d1b5620, 0x2cf39: 0x6d1b5820, 0x2cf3a: 0x6d1b5a20, 0x2cf3b: 0x6d1b5c20,\n\t0x2cf3c: 0x6d1b5e20, 0x2cf3d: 0x6d1b6020, 0x2cf3e: 0x6d1b6220, 0x2cf3f: 0x6d1b6420,\n\t// Block 0xb3d, offset 0x2cf40\n\t0x2cf40: 0x6d1b6620, 0x2cf41: 0x6d1b6820, 0x2cf42: 0x6d1b6a20, 0x2cf43: 0x6d1b6c20,\n\t0x2cf44: 0x6d1b6e20, 0x2cf45: 0x6d1b7020, 0x2cf46: 0x6d1b7220, 0x2cf47: 0x6d1b7420,\n\t0x2cf48: 0x6d1b7620, 0x2cf49: 0x6d1b7820, 0x2cf4a: 0x6d1b7a20, 0x2cf4b: 0x6d1b7c20,\n\t0x2cf4c: 0x6d1b7e20, 0x2cf4d: 0x6d1b8020, 0x2cf4e: 0x6d1b8220, 0x2cf4f: 0x6d1b8420,\n\t0x2cf50: 0x6d1b8620, 0x2cf51: 0x6d1b8820, 0x2cf52: 0x6d1b8a20, 0x2cf53: 0x6d1b8c20,\n\t0x2cf54: 0x6d1b8e20, 0x2cf55: 0x6d1b9020, 0x2cf56: 0x6d1b9220, 0x2cf57: 0x6d1b9420,\n\t0x2cf58: 0x6d1b9620, 0x2cf59: 0x6d1b9820, 0x2cf5a: 0x6d1b9a20, 0x2cf5b: 0x6d1b9c20,\n\t0x2cf5c: 0x6d1b9e20, 0x2cf5d: 0x6d1ba020, 0x2cf5e: 0x6d1ba220, 0x2cf5f: 0x6d1cec20,\n\t0x2cf60: 0x6d496220, 0x2cf61: 0x6d1ba420, 0x2cf62: 0x6d1ba620, 0x2cf63: 0x6d1ba820,\n\t0x2cf64: 0x6d1baa20, 0x2cf65: 0x6d1bac20, 0x2cf66: 0x6d1bae20, 0x2cf67: 0x6d1bb020,\n\t0x2cf68: 0x6d1cee20, 0x2cf69: 0x6d496420, 0x2cf6a: 0x6d496620, 0x2cf6b: 0x6d496820,\n\t0x2cf6c: 0x6d496a20, 0x2cf6d: 0x6d496c20, 0x2cf6e: 0x6d496e20, 0x2cf6f: 0x6d497020,\n\t0x2cf70: 0x6d497220, 0x2cf71: 0x6d497420, 0x2cf72: 0x6d497620, 0x2cf73: 0x6d497820,\n\t0x2cf74: 0x6d497a20, 0x2cf75: 0x6d497c20, 0x2cf76: 0x6d497e20, 0x2cf77: 0x6d498020,\n\t0x2cf78: 0x6d498220, 0x2cf79: 0x6d498420, 0x2cf7a: 0x6d498620, 0x2cf7b: 0x6d498820,\n\t0x2cf7c: 0x6d498a20, 0x2cf7d: 0x6d498c20, 0x2cf7e: 0x6d498e20, 0x2cf7f: 0x6d499020,\n\t// Block 0xb3e, offset 0x2cf80\n\t0x2cf80: 0x6d499220, 0x2cf81: 0x6d499420, 0x2cf82: 0x6d499620, 0x2cf83: 0x6d499820,\n\t0x2cf84: 0x6d499a20, 0x2cf85: 0x6cbb1c20, 0x2cf86: 0x6d499c20, 0x2cf87: 0x6d499e20,\n\t0x2cf88: 0x6d49a020, 0x2cf89: 0x6d49a220, 0x2cf8a: 0x6d49a420, 0x2cf8b: 0x6d49a620,\n\t0x2cf8c: 0x6d49a820, 0x2cf8d: 0x6d49aa20, 0x2cf8e: 0x6d49ac20, 0x2cf8f: 0x6d49ae20,\n\t0x2cf90: 0x6d49b020, 0x2cf91: 0x6d1bb220, 0x2cf92: 0x6d49b220, 0x2cf93: 0x6d494c20,\n\t0x2cf94: 0x6d49b420, 0x2cf95: 0x6d590220, 0x2cf96: 0x6d49b620, 0x2cf97: 0x6d49b820,\n\t0x2cf98: 0x6d49ba20, 0x2cf99: 0x6d49bc20, 0x2cf9a: 0x6d49be20, 0x2cf9b: 0x6d49c020,\n\t0x2cf9c: 0x6d49c220, 0x2cf9d: 0x6d49c420, 0x2cf9e: 0x6d772220, 0x2cf9f: 0x6d772420,\n\t0x2cfa0: 0x6d772620, 0x2cfa1: 0x6d772820, 0x2cfa2: 0x6d772a20, 0x2cfa3: 0x6d772c20,\n\t0x2cfa4: 0x6d772e20, 0x2cfa5: 0x6d773020, 0x2cfa6: 0x6d773220, 0x2cfa7: 0x6d773420,\n\t0x2cfa8: 0x6d773620, 0x2cfa9: 0x6d773820, 0x2cfaa: 0x6d773a20, 0x2cfab: 0x6d773c20,\n\t0x2cfac: 0x6d773e20, 0x2cfad: 0x6d774020, 0x2cfae: 0x6d774220, 0x2cfaf: 0x6d774420,\n\t0x2cfb0: 0x6d774620, 0x2cfb1: 0x6d774820, 0x2cfb2: 0x6d774a20, 0x2cfb3: 0x6d774c20,\n\t0x2cfb4: 0x6d49c620, 0x2cfb5: 0x6d774e20, 0x2cfb6: 0x6d775020, 0x2cfb7: 0x6d775220,\n\t0x2cfb8: 0x6d775420, 0x2cfb9: 0x6d775620, 0x2cfba: 0x6d775820, 0x2cfbb: 0x6d775a20,\n\t0x2cfbc: 0x6d775c20, 0x2cfbd: 0x6da0a220, 0x2cfbe: 0x6da0a420, 0x2cfbf: 0x6da0a620,\n\t// Block 0xb3f, offset 0x2cfc0\n\t0x2cfc0: 0x6da0a820, 0x2cfc1: 0x6da0aa20, 0x2cfc2: 0x6da0ac20, 0x2cfc3: 0x6da0ae20,\n\t0x2cfc4: 0x6da0b020, 0x2cfc5: 0x6da0b220, 0x2cfc6: 0x6da0b420, 0x2cfc7: 0x6da0b620,\n\t0x2cfc8: 0x6da0b820, 0x2cfc9: 0x6da0ba20, 0x2cfca: 0x6da0bc20, 0x2cfcb: 0x6da0be20,\n\t0x2cfcc: 0x6da0c020, 0x2cfcd: 0x6da0c220, 0x2cfce: 0x6da0c420, 0x2cfcf: 0x6da0c620,\n\t0x2cfd0: 0x6da0c820, 0x2cfd1: 0x6da0ca20, 0x2cfd2: 0x6da0cc20, 0x2cfd3: 0x6da0ce20,\n\t0x2cfd4: 0x6dc30820, 0x2cfd5: 0x6dc30a20, 0x2cfd6: 0x6dc30c20, 0x2cfd7: 0x6dc30e20,\n\t0x2cfd8: 0x6dc31020, 0x2cfd9: 0x6dc31220, 0x2cfda: 0x6dc31420, 0x2cfdb: 0x6dc31620,\n\t0x2cfdc: 0x6dc31820, 0x2cfdd: 0x6dc31a20, 0x2cfde: 0x6dc31c20, 0x2cfdf: 0x6dc31e20,\n\t0x2cfe0: 0x6dc32020, 0x2cfe1: 0x6dc32220, 0x2cfe2: 0x6dc32420, 0x2cfe3: 0x6dc32620,\n\t0x2cfe4: 0x6dc32820, 0x2cfe5: 0x6de08420, 0x2cfe6: 0x6de08620, 0x2cfe7: 0x6de08820,\n\t0x2cfe8: 0x6de08a20, 0x2cfe9: 0x6de08c20, 0x2cfea: 0x6de08e20, 0x2cfeb: 0x6de09020,\n\t0x2cfec: 0x6de09220, 0x2cfed: 0x6de09420, 0x2cfee: 0x6dc3dc20, 0x2cfef: 0x6de09620,\n\t0x2cff0: 0x6de09820, 0x2cff1: 0x6df8d020, 0x2cff2: 0x6df8d220, 0x2cff3: 0x6df8d420,\n\t0x2cff4: 0x6df8d620, 0x2cff5: 0x6df8d820, 0x2cff6: 0x6df8da20, 0x2cff7: 0x6df8dc20,\n\t0x2cff8: 0x6df8de20, 0x2cff9: 0x6df8e020, 0x2cffa: 0x6e0c9020, 0x2cffb: 0x6e0c9820,\n\t0x2cffc: 0x6df92820, 0x2cffd: 0x6e0c9a20, 0x2cffe: 0x6e0c9c20, 0x2cfff: 0x6e0c9e20,\n\t// Block 0xb40, offset 0x2d000\n\t0x2d000: 0x6e0ca020, 0x2d001: 0x6e0ca220, 0x2d002: 0x6e0ca420, 0x2d003: 0x6e0ca620,\n\t0x2d004: 0x6e0ca820, 0x2d005: 0x6e1c3020, 0x2d006: 0x6e1c3220, 0x2d007: 0x6e1c3420,\n\t0x2d008: 0x6e1c3620, 0x2d009: 0x6e1c3820, 0x2d00a: 0x6e1c3a20, 0x2d00b: 0x6e1c3c20,\n\t0x2d00c: 0x6e287620, 0x2d00d: 0x6e0caa20, 0x2d00e: 0x6e1c3e20, 0x2d00f: 0x6e287820,\n\t0x2d010: 0x6e287a20, 0x2d011: 0x6e319e20, 0x2d012: 0x6e31a020, 0x2d013: 0x6e31a220,\n\t0x2d014: 0x6e384820, 0x2d015: 0x6e384a20, 0x2d016: 0x6e428420, 0x2d017: 0x6c018220,\n\t0x2d018: 0x6c078a20, 0x2d019: 0x6c078c20, 0x2d01a: 0x6c078e20, 0x2d01b: 0x6c079020,\n\t0x2d01c: 0x6c079220, 0x2d01d: 0x6c0e9820, 0x2d01e: 0x6c0e9a20, 0x2d01f: 0x6c0e9c20,\n\t0x2d020: 0x6c0e9e20, 0x2d021: 0x6c0ea020, 0x2d022: 0x6c0ea220, 0x2d023: 0x6c0ea420,\n\t0x2d024: 0x6c1a4a20, 0x2d025: 0x6c1a4c20, 0x2d026: 0x6c1a4e20, 0x2d027: 0x6c1a5020,\n\t0x2d028: 0x6c1a5220, 0x2d029: 0x6c1a5420, 0x2d02a: 0x6c1a5620, 0x2d02b: 0x6c1a5820,\n\t0x2d02c: 0x6c1a5a20, 0x2d02d: 0x6c1a5c20, 0x2d02e: 0x6c1a5e20, 0x2d02f: 0x6c1a6020,\n\t0x2d030: 0x6c1a6220, 0x2d031: 0x6c1a6420, 0x2d032: 0x6c1a6620, 0x2d033: 0x6c1a6820,\n\t0x2d034: 0x6c1a6a20, 0x2d035: 0x6c1a6c20, 0x2d036: 0x6c2d8220, 0x2d037: 0x6c2d8420,\n\t0x2d038: 0x6c2d8620, 0x2d039: 0x6c2d8820, 0x2d03a: 0x6c2d8a20, 0x2d03b: 0x6c2d8c20,\n\t0x2d03c: 0x6c2d8e20, 0x2d03d: 0x6c2d9020, 0x2d03e: 0x6c2d9220, 0x2d03f: 0x6c47de20,\n\t// Block 0xb41, offset 0x2d040\n\t0x2d040: 0x6c47e020, 0x2d041: 0x6c695020, 0x2d042: 0x6c695220, 0x2d043: 0x6c695420,\n\t0x2d044: 0x6c695620, 0x2d045: 0x6c695820, 0x2d046: 0x6c695a20, 0x2d047: 0x6c901c20,\n\t0x2d048: 0x6c901e20, 0x2d049: 0x6c902020, 0x2d04a: 0x6c902220, 0x2d04b: 0x6c902420,\n\t0x2d04c: 0x6cbc4020, 0x2d04d: 0x6cbc4220, 0x2d04e: 0x6cbc4420, 0x2d04f: 0x6c902620,\n\t0x2d050: 0x6cbc4620, 0x2d051: 0x6ced2820, 0x2d052: 0x6ced2a20, 0x2d053: 0x6ced2c20,\n\t0x2d054: 0x6ced2e20, 0x2d055: 0x6ced3020, 0x2d056: 0x6d1cf220, 0x2d057: 0x6d1cf420,\n\t0x2d058: 0x6d1cf620, 0x2d059: 0x6d1cf820, 0x2d05a: 0x6d4ab620, 0x2d05b: 0x6d785820,\n\t0x2d05c: 0x6d785a20, 0x2d05d: 0x6e1c7420, 0x2d05e: 0x6e3d0e20, 0x2d05f: 0x6c018420,\n\t0x2d060: 0x6c03ce20, 0x2d061: 0x6c03d020, 0x2d062: 0x6c07a220, 0x2d063: 0x6c07a420,\n\t0x2d064: 0x6c07a620, 0x2d065: 0x6c07a820, 0x2d066: 0x6c07aa20, 0x2d067: 0x6c07ac20,\n\t0x2d068: 0x6c0ec020, 0x2d069: 0x6c0ec220, 0x2d06a: 0x6c0ec420, 0x2d06b: 0x6c0ec620,\n\t0x2d06c: 0x6c0ec820, 0x2d06d: 0x6c0eca20, 0x2d06e: 0x6c0ecc20, 0x2d06f: 0x6c0ece20,\n\t0x2d070: 0x6c0ed020, 0x2d071: 0x6c0ed220, 0x2d072: 0x6c0ed420, 0x2d073: 0x6c0ed620,\n\t0x2d074: 0x6c0ed820, 0x2d075: 0x6c0eda20, 0x2d076: 0x6c0edc20, 0x2d077: 0x6c0ede20,\n\t0x2d078: 0x6c0ee020, 0x2d079: 0x6c0ee220, 0x2d07a: 0x6c0ee420, 0x2d07b: 0x6c1aac20,\n\t0x2d07c: 0x6c1aae20, 0x2d07d: 0x6c1ab020, 0x2d07e: 0x6c1ab220, 0x2d07f: 0x6c1ab420,\n\t// Block 0xb42, offset 0x2d080\n\t0x2d080: 0x6c1ab620, 0x2d081: 0x6c1ab820, 0x2d082: 0x6c1aba20, 0x2d083: 0x6c1abc20,\n\t0x2d084: 0x6c1abe20, 0x2d085: 0x6c1ac020, 0x2d086: 0x6c1ac220, 0x2d087: 0x6c1ac420,\n\t0x2d088: 0x6c1ac620, 0x2d089: 0x6c1ac820, 0x2d08a: 0x6c1aca20, 0x2d08b: 0x6c1acc20,\n\t0x2d08c: 0x6c1ace20, 0x2d08d: 0x6c1ad020, 0x2d08e: 0x6c1ad220, 0x2d08f: 0x6c1ad420,\n\t0x2d090: 0x6c1ad620, 0x2d091: 0x6c1ad820, 0x2d092: 0x6c1ada20, 0x2d093: 0x6c1adc20,\n\t0x2d094: 0x6c1ade20, 0x2d095: 0x6c1ae020, 0x2d096: 0x6c1ae220, 0x2d097: 0x6c1ae420,\n\t0x2d098: 0x6c1ae620, 0x2d099: 0x6c1ae820, 0x2d09a: 0x6c1aea20, 0x2d09b: 0x6c1aec20,\n\t0x2d09c: 0x6c1aee20, 0x2d09d: 0x6c1af020, 0x2d09e: 0x6c1af220, 0x2d09f: 0x6c1af420,\n\t0x2d0a0: 0x6c1af620, 0x2d0a1: 0x6c2db420, 0x2d0a2: 0x6c2db620, 0x2d0a3: 0x6c2db820,\n\t0x2d0a4: 0x6c2dba20, 0x2d0a5: 0x6c2dbc20, 0x2d0a6: 0x6c2dbe20, 0x2d0a7: 0x6c2dc020,\n\t0x2d0a8: 0x6c2dc220, 0x2d0a9: 0x6c2dc420, 0x2d0aa: 0x6c2dc620, 0x2d0ab: 0x6c2dc820,\n\t0x2d0ac: 0x6c2dca20, 0x2d0ad: 0x6c2dcc20, 0x2d0ae: 0x6c2dce20, 0x2d0af: 0x6c2dd020,\n\t0x2d0b0: 0x6c2dd220, 0x2d0b1: 0x6c2dd420, 0x2d0b2: 0x6c2dd620, 0x2d0b3: 0x6c2dd820,\n\t0x2d0b4: 0x6c2dda20, 0x2d0b5: 0x6c2ddc20, 0x2d0b6: 0x6c2dde20, 0x2d0b7: 0x6c2de020,\n\t0x2d0b8: 0x6c2de220, 0x2d0b9: 0x6c2de420, 0x2d0ba: 0x6c2de620, 0x2d0bb: 0x6c2de820,\n\t0x2d0bc: 0x6c2dea20, 0x2d0bd: 0x6c2dec20, 0x2d0be: 0x6c2dee20, 0x2d0bf: 0x6c2df020,\n\t// Block 0xb43, offset 0x2d0c0\n\t0x2d0c0: 0x6c2df220, 0x2d0c1: 0x6c2df420, 0x2d0c2: 0x6c2df620, 0x2d0c3: 0x6c2df820,\n\t0x2d0c4: 0x6c2dfa20, 0x2d0c5: 0x6c2dfc20, 0x2d0c6: 0x6c2dfe20, 0x2d0c7: 0x6c2e0020,\n\t0x2d0c8: 0x6c2e0220, 0x2d0c9: 0x6c2e0420, 0x2d0ca: 0x6c2e0620, 0x2d0cb: 0x6c481220,\n\t0x2d0cc: 0x6c481420, 0x2d0cd: 0x6c481620, 0x2d0ce: 0x6c481820, 0x2d0cf: 0x6c481a20,\n\t0x2d0d0: 0x6c481c20, 0x2d0d1: 0x6c481e20, 0x2d0d2: 0x6c482020, 0x2d0d3: 0x6c482220,\n\t0x2d0d4: 0x6c482420, 0x2d0d5: 0x6c482620, 0x2d0d6: 0x6c482820, 0x2d0d7: 0x6c482a20,\n\t0x2d0d8: 0x6c482c20, 0x2d0d9: 0x6c482e20, 0x2d0da: 0x6c483020, 0x2d0db: 0x6c483220,\n\t0x2d0dc: 0x6c483420, 0x2d0dd: 0x6c483620, 0x2d0de: 0x6c483820, 0x2d0df: 0x6c483a20,\n\t0x2d0e0: 0x6c483c20, 0x2d0e1: 0x6c483e20, 0x2d0e2: 0x6c484020, 0x2d0e3: 0x6c484220,\n\t0x2d0e4: 0x6c484420, 0x2d0e5: 0x6c484620, 0x2d0e6: 0x6c484820, 0x2d0e7: 0x6c484a20,\n\t0x2d0e8: 0x6c484c20, 0x2d0e9: 0x6c484e20, 0x2d0ea: 0x6c485020, 0x2d0eb: 0x6c485220,\n\t0x2d0ec: 0x6c485420, 0x2d0ed: 0x6c485620, 0x2d0ee: 0x6c485820, 0x2d0ef: 0x6c485a20,\n\t0x2d0f0: 0x6c485c20, 0x2d0f1: 0x6c485e20, 0x2d0f2: 0x6c486020, 0x2d0f3: 0x6c486220,\n\t0x2d0f4: 0x6c486420, 0x2d0f5: 0x6c486620, 0x2d0f6: 0x6c698e20, 0x2d0f7: 0x6c699020,\n\t0x2d0f8: 0x6c699220, 0x2d0f9: 0x6c699420, 0x2d0fa: 0x6c699620, 0x2d0fb: 0x6c699820,\n\t0x2d0fc: 0x6c699a20, 0x2d0fd: 0x6c699c20, 0x2d0fe: 0x6c699e20, 0x2d0ff: 0x6c69a020,\n\t// Block 0xb44, offset 0x2d100\n\t0x2d100: 0x6c69a220, 0x2d101: 0x6c69a420, 0x2d102: 0x6c69a620, 0x2d103: 0x6c69a820,\n\t0x2d104: 0x6c69aa20, 0x2d105: 0x6c69ac20, 0x2d106: 0x6c69ae20, 0x2d107: 0x6c69b020,\n\t0x2d108: 0x6c69b220, 0x2d109: 0x6c69b420, 0x2d10a: 0x6c69b620, 0x2d10b: 0x6c69b820,\n\t0x2d10c: 0x6c69ba20, 0x2d10d: 0x6c69bc20, 0x2d10e: 0x6c486820, 0x2d10f: 0x6c69be20,\n\t0x2d110: 0x6c69c020, 0x2d111: 0x6c69c220, 0x2d112: 0x6c69c420, 0x2d113: 0x6c69c620,\n\t0x2d114: 0x6c69c820, 0x2d115: 0x6c69ca20, 0x2d116: 0x6c69cc20, 0x2d117: 0x6c69ce20,\n\t0x2d118: 0x6c69d020, 0x2d119: 0x6c69d220, 0x2d11a: 0x6c69d420, 0x2d11b: 0x6c69d620,\n\t0x2d11c: 0x6c905420, 0x2d11d: 0x6c905620, 0x2d11e: 0x6c905820, 0x2d11f: 0x6c905a20,\n\t0x2d120: 0x6c905c20, 0x2d121: 0x6c905e20, 0x2d122: 0x6c906020, 0x2d123: 0x6c906220,\n\t0x2d124: 0x6c906420, 0x2d125: 0x6c906620, 0x2d126: 0x6c906820, 0x2d127: 0x6c906a20,\n\t0x2d128: 0x6c906c20, 0x2d129: 0x6c906e20, 0x2d12a: 0x6c915e20, 0x2d12b: 0x6c907020,\n\t0x2d12c: 0x6c907220, 0x2d12d: 0x6c907420, 0x2d12e: 0x6c907620, 0x2d12f: 0x6c907820,\n\t0x2d130: 0x6c907a20, 0x2d131: 0x6c907c20, 0x2d132: 0x6c907e20, 0x2d133: 0x6c908020,\n\t0x2d134: 0x6c908220, 0x2d135: 0x6c908420, 0x2d136: 0x6c908620, 0x2d137: 0x6c908820,\n\t0x2d138: 0x6c908a20, 0x2d139: 0x6c908c20, 0x2d13a: 0x6c908e20, 0x2d13b: 0x6c909020,\n\t0x2d13c: 0x6c909220, 0x2d13d: 0x6c909420, 0x2d13e: 0x6c909620, 0x2d13f: 0x6c909820,\n\t// Block 0xb45, offset 0x2d140\n\t0x2d140: 0x6c909a20, 0x2d141: 0x6c909c20, 0x2d142: 0x6c909e20, 0x2d143: 0x6c90a020,\n\t0x2d144: 0x6c90a220, 0x2d145: 0x6c90a420, 0x2d146: 0x6c90a620, 0x2d147: 0x6c90a820,\n\t0x2d148: 0x6c90aa20, 0x2d149: 0x6c90ac20, 0x2d14a: 0x6c90ae20, 0x2d14b: 0x6c90b020,\n\t0x2d14c: 0x6c90b220, 0x2d14d: 0x6c90b420, 0x2d14e: 0x6c90b620, 0x2d14f: 0x6c90b820,\n\t0x2d150: 0x6c90ba20, 0x2d151: 0x6c90bc20, 0x2d152: 0x6c90be20, 0x2d153: 0x6c90c020,\n\t0x2d154: 0x6c90c220, 0x2d155: 0x6c90c420, 0x2d156: 0x6cbc7a20, 0x2d157: 0x6cbc7c20,\n\t0x2d158: 0x6cbc7e20, 0x2d159: 0x6cbc8020, 0x2d15a: 0x6cbc8220, 0x2d15b: 0x6cbc8420,\n\t0x2d15c: 0x6cbc8620, 0x2d15d: 0x6cbc8820, 0x2d15e: 0x6cbc8a20, 0x2d15f: 0x6cbc8c20,\n\t0x2d160: 0x6cbc8e20, 0x2d161: 0x6cbc9020, 0x2d162: 0x6cbc9220, 0x2d163: 0x6cbc9420,\n\t0x2d164: 0x6cbc9620, 0x2d165: 0x6cbc9820, 0x2d166: 0x6cbc9a20, 0x2d167: 0x6cbc9c20,\n\t0x2d168: 0x6cbc9e20, 0x2d169: 0x6cbca020, 0x2d16a: 0x6cbca220, 0x2d16b: 0x6cbca420,\n\t0x2d16c: 0x6cbca620, 0x2d16d: 0x6cbca820, 0x2d16e: 0x6cbcaa20, 0x2d16f: 0x6cbcac20,\n\t0x2d170: 0x6cbcae20, 0x2d171: 0x6cbcb020, 0x2d172: 0x6c6a6e20, 0x2d173: 0x6cbcb220,\n\t0x2d174: 0x6cbcb420, 0x2d175: 0x6c916020, 0x2d176: 0x6cbcb620, 0x2d177: 0x6cbcb820,\n\t0x2d178: 0x6cbcba20, 0x2d179: 0x6cbcbc20, 0x2d17a: 0x6cbcbe20, 0x2d17b: 0x6cbcc020,\n\t0x2d17c: 0x6cbcc220, 0x2d17d: 0x6ced5820, 0x2d17e: 0x6cbcc420, 0x2d17f: 0x6cbcc620,\n\t// Block 0xb46, offset 0x2d180\n\t0x2d180: 0x6cbcc820, 0x2d181: 0x6cbcca20, 0x2d182: 0x6cbccc20, 0x2d183: 0x6ced5a20,\n\t0x2d184: 0x6cbcce20, 0x2d185: 0x6cbcd020, 0x2d186: 0x6cbcd220, 0x2d187: 0x6cbcd420,\n\t0x2d188: 0x6cbcd620, 0x2d189: 0x6ced5c20, 0x2d18a: 0x6ced5e20, 0x2d18b: 0x6ced6020,\n\t0x2d18c: 0x6ced6220, 0x2d18d: 0x6ced6420, 0x2d18e: 0x6ced6620, 0x2d18f: 0x6ced6820,\n\t0x2d190: 0x6ced6a20, 0x2d191: 0x6ced6c20, 0x2d192: 0x6ced6e20, 0x2d193: 0x6ced7020,\n\t0x2d194: 0x6ced7220, 0x2d195: 0x6ced7420, 0x2d196: 0x6ced7620, 0x2d197: 0x6ced7820,\n\t0x2d198: 0x6ced7a20, 0x2d199: 0x6ced7c20, 0x2d19a: 0x6ced7e20, 0x2d19b: 0x6ced8020,\n\t0x2d19c: 0x6ced8220, 0x2d19d: 0x6ced8420, 0x2d19e: 0x6ced8620, 0x2d19f: 0x6ced8820,\n\t0x2d1a0: 0x6ced8a20, 0x2d1a1: 0x6ced8c20, 0x2d1a2: 0x6ced8e20, 0x2d1a3: 0x6ced9020,\n\t0x2d1a4: 0x6ced9220, 0x2d1a5: 0x6ced9420, 0x2d1a6: 0x6ced9620, 0x2d1a7: 0x6ced9820,\n\t0x2d1a8: 0x6ced9a20, 0x2d1a9: 0x6ced9c20, 0x2d1aa: 0x6ced9e20, 0x2d1ab: 0x6ceda020,\n\t0x2d1ac: 0x6ceda220, 0x2d1ad: 0x6ceda420, 0x2d1ae: 0x6ceda620, 0x2d1af: 0x6ceda820,\n\t0x2d1b0: 0x6cedaa20, 0x2d1b1: 0x6cedac20, 0x2d1b2: 0x6d1d2420, 0x2d1b3: 0x6d1d2620,\n\t0x2d1b4: 0x6d1d2820, 0x2d1b5: 0x6d1d2a20, 0x2d1b6: 0x6d1d2c20, 0x2d1b7: 0x6d1d2e20,\n\t0x2d1b8: 0x6d1d3020, 0x2d1b9: 0x6d1d3220, 0x2d1ba: 0x6d1d3420, 0x2d1bb: 0x6d1d3620,\n\t0x2d1bc: 0x6d1d3820, 0x2d1bd: 0x6d1d3a20, 0x2d1be: 0x6d1d3c20, 0x2d1bf: 0x6d1d3e20,\n\t// Block 0xb47, offset 0x2d1c0\n\t0x2d1c0: 0x6d4ac620, 0x2d1c1: 0x6d1d4020, 0x2d1c2: 0x6d1d4220, 0x2d1c3: 0x6d1d4420,\n\t0x2d1c4: 0x6d1d4620, 0x2d1c5: 0x6d1d4820, 0x2d1c6: 0x6d1d4a20, 0x2d1c7: 0x6d1d4c20,\n\t0x2d1c8: 0x6d1d4e20, 0x2d1c9: 0x6d1d5020, 0x2d1ca: 0x6d1d5220, 0x2d1cb: 0x6d1d5420,\n\t0x2d1cc: 0x6d1d5620, 0x2d1cd: 0x6d1d5820, 0x2d1ce: 0x6d1d5a20, 0x2d1cf: 0x6d1d5c20,\n\t0x2d1d0: 0x6d1d5e20, 0x2d1d1: 0x6d1d6020, 0x2d1d2: 0x6d1d6220, 0x2d1d3: 0x6d1d6420,\n\t0x2d1d4: 0x6d1d6620, 0x2d1d5: 0x6d1d6820, 0x2d1d6: 0x6d1d6a20, 0x2d1d7: 0x6d1d6c20,\n\t0x2d1d8: 0x6d1d6e20, 0x2d1d9: 0x6d1d7020, 0x2d1da: 0x6d1d7220, 0x2d1db: 0x6d1d7420,\n\t0x2d1dc: 0x6d4ada20, 0x2d1dd: 0x6d4adc20, 0x2d1de: 0x6d4ade20, 0x2d1df: 0x6d4ae020,\n\t0x2d1e0: 0x6d4ae220, 0x2d1e1: 0x6d4ae420, 0x2d1e2: 0x6d4ae620, 0x2d1e3: 0x6d4ae820,\n\t0x2d1e4: 0x6d4aea20, 0x2d1e5: 0x6d4aec20, 0x2d1e6: 0x6d4aee20, 0x2d1e7: 0x6d4af020,\n\t0x2d1e8: 0x6d758820, 0x2d1e9: 0x6d4af220, 0x2d1ea: 0x6d4af420, 0x2d1eb: 0x6d4af620,\n\t0x2d1ec: 0x6d4af820, 0x2d1ed: 0x6d1df220, 0x2d1ee: 0x6d4afa20, 0x2d1ef: 0x6d4afc20,\n\t0x2d1f0: 0x6d4afe20, 0x2d1f1: 0x6d4b0020, 0x2d1f2: 0x6d4b0220, 0x2d1f3: 0x6d4b0420,\n\t0x2d1f4: 0x6d4b0620, 0x2d1f5: 0x6d4b0820, 0x2d1f6: 0x6d4b0a20, 0x2d1f7: 0x6d4b0c20,\n\t0x2d1f8: 0x6d4b0e20, 0x2d1f9: 0x6d4b1020, 0x2d1fa: 0x6d787420, 0x2d1fb: 0x6d787620,\n\t0x2d1fc: 0x6d787820, 0x2d1fd: 0x6d787a20, 0x2d1fe: 0x6d787c20, 0x2d1ff: 0x6d787e20,\n\t// Block 0xb48, offset 0x2d200\n\t0x2d200: 0x6d788020, 0x2d201: 0x6d788220, 0x2d202: 0x6d788420, 0x2d203: 0x6d788620,\n\t0x2d204: 0x6d788820, 0x2d205: 0x6d788a20, 0x2d206: 0x6d788c20, 0x2d207: 0x6d788e20,\n\t0x2d208: 0x6d789020, 0x2d209: 0x6d789220, 0x2d20a: 0x6d789420, 0x2d20b: 0x6d789620,\n\t0x2d20c: 0x6d789820, 0x2d20d: 0x6da19020, 0x2d20e: 0x6da19220, 0x2d20f: 0x6da19420,\n\t0x2d210: 0x6da19620, 0x2d211: 0x6da19820, 0x2d212: 0x6da19a20, 0x2d213: 0x6da19c20,\n\t0x2d214: 0x6da19e20, 0x2d215: 0x6da1a020, 0x2d216: 0x6da1a220, 0x2d217: 0x6da1a420,\n\t0x2d218: 0x6dc3e620, 0x2d219: 0x6dc3e820, 0x2d21a: 0x6de10620, 0x2d21b: 0x6de10820,\n\t0x2d21c: 0x6de10a20, 0x2d21d: 0x6de10c20, 0x2d21e: 0x6de10e20, 0x2d21f: 0x6de11020,\n\t0x2d220: 0x6de11220, 0x2d221: 0x6de07820, 0x2d222: 0x6de11420, 0x2d223: 0x6df93420,\n\t0x2d224: 0x6df93620, 0x2d225: 0x6df93820, 0x2d226: 0x6e0cfc20, 0x2d227: 0x6e288e20,\n\t0x2d228: 0x6e289020, 0x2d229: 0x6e31c420, 0x2d22a: 0x6e386020, 0x2d22b: 0x6c018620,\n\t0x2d22c: 0x6c03da20, 0x2d22d: 0x6c07c420, 0x2d22e: 0x6c0f0e20, 0x2d22f: 0x6c1b6620,\n\t0x2d230: 0x6c1b6820, 0x2d231: 0x6c1b6a20, 0x2d232: 0x6c1b6c20, 0x2d233: 0x6c1b6e20,\n\t0x2d234: 0x6c48e620, 0x2d235: 0x6c48e820, 0x2d236: 0x6c6a7020, 0x2d237: 0x6c916220,\n\t0x2d238: 0x6c916420, 0x2d239: 0x6cbd8820, 0x2d23a: 0x6cbd8a20, 0x2d23b: 0x6cbd8c20,\n\t0x2d23c: 0x6cee4e20, 0x2d23d: 0x6d1df420, 0x2d23e: 0x6d1df620, 0x2d23f: 0x6d4ba220,\n\t// Block 0xb49, offset 0x2d240\n\t0x2d240: 0x6d4ba420, 0x2d241: 0x6d790020, 0x2d242: 0x6c018820, 0x2d243: 0x6c03dc20,\n\t0x2d244: 0x6c07c820, 0x2d245: 0x6c0f1220, 0x2d246: 0x6c1b7420, 0x2d247: 0x6c2e8020,\n\t0x2d248: 0x6c48f220, 0x2d249: 0x6c48f820, 0x2d24a: 0x6c018c20, 0x2d24b: 0x6c1b7c20,\n\t0x2d24c: 0x6c2e8220, 0x2d24d: 0x6c48fa20, 0x2d24e: 0x6c6a8420, 0x2d24f: 0x6c6a8620,\n\t0x2d250: 0x6d1e0220, 0x2d251: 0x6dc43a20, 0x2d252: 0x6de14820, 0x2d253: 0x6dc43c20,\n\t0x2d254: 0x6e0d1e20, 0x2d255: 0x6c018e20, 0x2d256: 0x6c07d020, 0x2d257: 0x6c07d220,\n\t0x2d258: 0x6c07d420, 0x2d259: 0x6c0f1c20, 0x2d25a: 0x6c0f1e20, 0x2d25b: 0x6c0f2020,\n\t0x2d25c: 0x6c2e8e20, 0x2d25d: 0x6c2e9020, 0x2d25e: 0x6c6a8c20, 0x2d25f: 0x6c918020,\n\t0x2d260: 0x6c918220, 0x2d261: 0x6cbd9a20, 0x2d262: 0x6d1e1020, 0x2d263: 0x6d1e1220,\n\t0x2d264: 0x6d1e1420, 0x2d265: 0x6d1e1620, 0x2d266: 0x6d4bae20, 0x2d267: 0x6c019020,\n\t0x2d268: 0x6c019220, 0x2d269: 0x6c03de20, 0x2d26a: 0x6c03e020, 0x2d26b: 0x6c03e220,\n\t0x2d26c: 0x6c03e420, 0x2d26d: 0x6c03e620, 0x2d26e: 0x6c07de20, 0x2d26f: 0x6c07e020,\n\t0x2d270: 0x6c07e220, 0x2d271: 0x6c07e420, 0x2d272: 0x6c07e620, 0x2d273: 0x6c07e820,\n\t0x2d274: 0x6c07ea20, 0x2d275: 0x6c0f3220, 0x2d276: 0x6c0f3420, 0x2d277: 0x6c0f3620,\n\t0x2d278: 0x6c0f3820, 0x2d279: 0x6c0f3a20, 0x2d27a: 0x6c0f3c20, 0x2d27b: 0x6c0f3e20,\n\t0x2d27c: 0x6c0f4020, 0x2d27d: 0x6c1b8e20, 0x2d27e: 0x6c1b9020, 0x2d27f: 0x6c1b9220,\n\t// Block 0xb4a, offset 0x2d280\n\t0x2d280: 0x6c1b9420, 0x2d281: 0x6c1b9620, 0x2d282: 0x6c1b9820, 0x2d283: 0x6c2ea620,\n\t0x2d284: 0x6c2ea820, 0x2d285: 0x6c2eaa20, 0x2d286: 0x6c2eac20, 0x2d287: 0x6c2eae20,\n\t0x2d288: 0x6c2eb020, 0x2d289: 0x6c2eb220, 0x2d28a: 0x6c6aaa20, 0x2d28b: 0x6c2eb420,\n\t0x2d28c: 0x6c2eb620, 0x2d28d: 0x6c2eb820, 0x2d28e: 0x6c490620, 0x2d28f: 0x6c490820,\n\t0x2d290: 0x6c490a20, 0x2d291: 0x6c490c20, 0x2d292: 0x6c490e20, 0x2d293: 0x6c491020,\n\t0x2d294: 0x6c2ef220, 0x2d295: 0x6c491220, 0x2d296: 0x6c491420, 0x2d297: 0x6c6aac20,\n\t0x2d298: 0x6c6aae20, 0x2d299: 0x6c6ab020, 0x2d29a: 0x6c6ab220, 0x2d29b: 0x6c919e20,\n\t0x2d29c: 0x6c91a020, 0x2d29d: 0x6c91a220, 0x2d29e: 0x6c91a420, 0x2d29f: 0x6c91d220,\n\t0x2d2a0: 0x6cbdb820, 0x2d2a1: 0x6cbdba20, 0x2d2a2: 0x6c91d420, 0x2d2a3: 0x6cbdbc20,\n\t0x2d2a4: 0x6cbdbe20, 0x2d2a5: 0x6cbdc020, 0x2d2a6: 0x6cee7820, 0x2d2a7: 0x6cee7a20,\n\t0x2d2a8: 0x6cee7c20, 0x2d2a9: 0x6d1e2e20, 0x2d2aa: 0x6d1e3020, 0x2d2ab: 0x6d1e3220,\n\t0x2d2ac: 0x6d1e3420, 0x2d2ad: 0x6d4bb820, 0x2d2ae: 0x6d791e20, 0x2d2af: 0x6d792020,\n\t0x2d2b0: 0x6dc44c20, 0x2d2b1: 0x6e1c9220, 0x2d2b2: 0x6e28a420, 0x2d2b3: 0x6c019420,\n\t0x2d2b4: 0x6c07fe20, 0x2d2b5: 0x6c080020, 0x2d2b6: 0x6c080220, 0x2d2b7: 0x6c0f6220,\n\t0x2d2b8: 0x6c0f6420, 0x2d2b9: 0x6c0f6620, 0x2d2ba: 0x6c0f6820, 0x2d2bb: 0x6c0f6a20,\n\t0x2d2bc: 0x6c0f6c20, 0x2d2bd: 0x6c0f6e20, 0x2d2be: 0x6c0f7020, 0x2d2bf: 0x6c0f7220,\n\t// Block 0xb4b, offset 0x2d2c0\n\t0x2d2c0: 0x6c0f7420, 0x2d2c1: 0x6c0f7620, 0x2d2c2: 0x6c0f7820, 0x2d2c3: 0x6c0f7a20,\n\t0x2d2c4: 0x6c0f7c20, 0x2d2c5: 0x6c0f7e20, 0x2d2c6: 0x6c0f8020, 0x2d2c7: 0x6c0f8220,\n\t0x2d2c8: 0x6c0f8420, 0x2d2c9: 0x6c1bd420, 0x2d2ca: 0x6c1bd620, 0x2d2cb: 0x6c1bd820,\n\t0x2d2cc: 0x6c1bda20, 0x2d2cd: 0x6c495420, 0x2d2ce: 0x6c1bdc20, 0x2d2cf: 0x6c1bde20,\n\t0x2d2d0: 0x6c1be020, 0x2d2d1: 0x6c1be220, 0x2d2d2: 0x6c1be420, 0x2d2d3: 0x6c1be620,\n\t0x2d2d4: 0x6c1be820, 0x2d2d5: 0x6c1bea20, 0x2d2d6: 0x6c1bec20, 0x2d2d7: 0x6c1bee20,\n\t0x2d2d8: 0x6c1bf020, 0x2d2d9: 0x6c1bf220, 0x2d2da: 0x6c1bf420, 0x2d2db: 0x6c1bf620,\n\t0x2d2dc: 0x6c1bf820, 0x2d2dd: 0x6c1bfa20, 0x2d2de: 0x6c1bfc20, 0x2d2df: 0x6c1bfe20,\n\t0x2d2e0: 0x6c1c0020, 0x2d2e1: 0x6c1c0220, 0x2d2e2: 0x6c1c0420, 0x2d2e3: 0x6c1c0620,\n\t0x2d2e4: 0x6c1c0820, 0x2d2e5: 0x6c1c0a20, 0x2d2e6: 0x6c1c0c20, 0x2d2e7: 0x6c1c0e20,\n\t0x2d2e8: 0x6c1c1020, 0x2d2e9: 0x6c1c1220, 0x2d2ea: 0x6c1c1420, 0x2d2eb: 0x6c1c1620,\n\t0x2d2ec: 0x6c2f1820, 0x2d2ed: 0x6c2f1a20, 0x2d2ee: 0x6c2f1c20, 0x2d2ef: 0x6c2f1e20,\n\t0x2d2f0: 0x6c2f2020, 0x2d2f1: 0x6c2f2220, 0x2d2f2: 0x6c2f2420, 0x2d2f3: 0x6c2f2620,\n\t0x2d2f4: 0x6c2f2820, 0x2d2f5: 0x6c2f2a20, 0x2d2f6: 0x6c2f2c20, 0x2d2f7: 0x6c2f2e20,\n\t0x2d2f8: 0x6c2f3020, 0x2d2f9: 0x6c2f3220, 0x2d2fa: 0x6c2f3420, 0x2d2fb: 0x6c2f3620,\n\t0x2d2fc: 0x6c2f3820, 0x2d2fd: 0x6c2f3a20, 0x2d2fe: 0x6c2f3c20, 0x2d2ff: 0x6c2f3e20,\n\t// Block 0xb4c, offset 0x2d300\n\t0x2d300: 0x6c2f4020, 0x2d301: 0x6c2f4220, 0x2d302: 0x6c2f4420, 0x2d303: 0x6c2f4620,\n\t0x2d304: 0x6c2f4820, 0x2d305: 0x6c2f4a20, 0x2d306: 0x6c2f4c20, 0x2d307: 0x6c2f4e20,\n\t0x2d308: 0x6c2f5020, 0x2d309: 0x6c2f5220, 0x2d30a: 0x6c2f5420, 0x2d30b: 0x6c2f5620,\n\t0x2d30c: 0x6c2f5820, 0x2d30d: 0x6c2f5a20, 0x2d30e: 0x6c2f5c20, 0x2d30f: 0x6c2f5e20,\n\t0x2d310: 0x6c2f6020, 0x2d311: 0x6c2f6220, 0x2d312: 0x6c2f6420, 0x2d313: 0x6c2f6620,\n\t0x2d314: 0x6c2f6820, 0x2d315: 0x6c493c20, 0x2d316: 0x6c2f6a20, 0x2d317: 0x6c2f6c20,\n\t0x2d318: 0x6c495620, 0x2d319: 0x6c495820, 0x2d31a: 0x6c495a20, 0x2d31b: 0x6c495c20,\n\t0x2d31c: 0x6c495e20, 0x2d31d: 0x6c496020, 0x2d31e: 0x6c496220, 0x2d31f: 0x6c496420,\n\t0x2d320: 0x6c496620, 0x2d321: 0x6c496820, 0x2d322: 0x6c496a20, 0x2d323: 0x6c496c20,\n\t0x2d324: 0x6c496e20, 0x2d325: 0x6c497020, 0x2d326: 0x6c497220, 0x2d327: 0x6c497420,\n\t0x2d328: 0x6c497620, 0x2d329: 0x6c497820, 0x2d32a: 0x6c497a20, 0x2d32b: 0x6c497c20,\n\t0x2d32c: 0x6c6b1820, 0x2d32d: 0x6c497e20, 0x2d32e: 0x6c498020, 0x2d32f: 0x6c498220,\n\t0x2d330: 0x6c498420, 0x2d331: 0x6c498620, 0x2d332: 0x6c498820, 0x2d333: 0x6c498a20,\n\t0x2d334: 0x6c498c20, 0x2d335: 0x6c498e20, 0x2d336: 0x6c499020, 0x2d337: 0x6c499220,\n\t0x2d338: 0x6c499420, 0x2d339: 0x6c499620, 0x2d33a: 0x6c499820, 0x2d33b: 0x6c499a20,\n\t0x2d33c: 0x6c499c20, 0x2d33d: 0x6c499e20, 0x2d33e: 0x6c49a020, 0x2d33f: 0x6c49a220,\n\t// Block 0xb4d, offset 0x2d340\n\t0x2d340: 0x6c49a420, 0x2d341: 0x6c49a620, 0x2d342: 0x6c49a820, 0x2d343: 0x6c49aa20,\n\t0x2d344: 0x6c5c3020, 0x2d345: 0x6c49ac20, 0x2d346: 0x6c49ae20, 0x2d347: 0x6c49b020,\n\t0x2d348: 0x6c49b220, 0x2d349: 0x6c6b1a20, 0x2d34a: 0x6c6b1c20, 0x2d34b: 0x6c6b1e20,\n\t0x2d34c: 0x6c6b2020, 0x2d34d: 0x6c4a1a20, 0x2d34e: 0x6c6b2220, 0x2d34f: 0x6c6b2420,\n\t0x2d350: 0x6c6b2620, 0x2d351: 0x6c6b2820, 0x2d352: 0x6c6b2a20, 0x2d353: 0x6c6b2c20,\n\t0x2d354: 0x6c6b2e20, 0x2d355: 0x6c6b3020, 0x2d356: 0x6c6b3220, 0x2d357: 0x6c6b3420,\n\t0x2d358: 0x6c6b3620, 0x2d359: 0x6c6b3820, 0x2d35a: 0x6c6b3a20, 0x2d35b: 0x6c6b3c20,\n\t0x2d35c: 0x6c6b3e20, 0x2d35d: 0x6c6b4020, 0x2d35e: 0x6c6b4220, 0x2d35f: 0x6c6b4420,\n\t0x2d360: 0x6c6b4620, 0x2d361: 0x6c6b4820, 0x2d362: 0x6c6b4a20, 0x2d363: 0x6c6b4c20,\n\t0x2d364: 0x6c6b4e20, 0x2d365: 0x6c6b5020, 0x2d366: 0x6c6b5220, 0x2d367: 0x6c6b5420,\n\t0x2d368: 0x6c6b5620, 0x2d369: 0x6c6b5820, 0x2d36a: 0x6c6b5a20, 0x2d36b: 0x6c91d620,\n\t0x2d36c: 0x6c91ec20, 0x2d36d: 0x6c6b5c20, 0x2d36e: 0x6c6b5e20, 0x2d36f: 0x6c6b6020,\n\t0x2d370: 0x6c6b6220, 0x2d371: 0x6c6b6420, 0x2d372: 0x6c6b6620, 0x2d373: 0x6c6b6820,\n\t0x2d374: 0x6c6b6a20, 0x2d375: 0x6c91ee20, 0x2d376: 0x6c91f020, 0x2d377: 0x6c91f220,\n\t0x2d378: 0x6c91f420, 0x2d379: 0x6c91f620, 0x2d37a: 0x6c91f820, 0x2d37b: 0x6c91fa20,\n\t0x2d37c: 0x6c91fc20, 0x2d37d: 0x6c91d820, 0x2d37e: 0x6c91fe20, 0x2d37f: 0x6c920020,\n\t// Block 0xb4e, offset 0x2d380\n\t0x2d380: 0x6c920220, 0x2d381: 0x6c920420, 0x2d382: 0x6c920620, 0x2d383: 0x6c920820,\n\t0x2d384: 0x6c920a20, 0x2d385: 0x6c920c20, 0x2d386: 0x6c920e20, 0x2d387: 0x6c921020,\n\t0x2d388: 0x6c921220, 0x2d389: 0x6c921420, 0x2d38a: 0x6c921620, 0x2d38b: 0x6c921820,\n\t0x2d38c: 0x6c921a20, 0x2d38d: 0x6c921c20, 0x2d38e: 0x6c921e20, 0x2d38f: 0x6c922020,\n\t0x2d390: 0x6c922220, 0x2d391: 0x6c922420, 0x2d392: 0x6c922620, 0x2d393: 0x6c922820,\n\t0x2d394: 0x6c922a20, 0x2d395: 0x6c922c20, 0x2d396: 0x6c922e20, 0x2d397: 0x6c923020,\n\t0x2d398: 0x6c923220, 0x2d399: 0x6c923420, 0x2d39a: 0x6c923620, 0x2d39b: 0x6c923820,\n\t0x2d39c: 0x6c923a20, 0x2d39d: 0x6c923c20, 0x2d39e: 0x6c923e20, 0x2d39f: 0x6c924020,\n\t0x2d3a0: 0x6c924220, 0x2d3a1: 0x6c924420, 0x2d3a2: 0x6c924620, 0x2d3a3: 0x6c924820,\n\t0x2d3a4: 0x6c924a20, 0x2d3a5: 0x6c924c20, 0x2d3a6: 0x6c924e20, 0x2d3a7: 0x6c925020,\n\t0x2d3a8: 0x6c925220, 0x2d3a9: 0x6c925420, 0x2d3aa: 0x6c925620, 0x2d3ab: 0x6c925820,\n\t0x2d3ac: 0x6c925a20, 0x2d3ad: 0x6c925c20, 0x2d3ae: 0x6c925e20, 0x2d3af: 0x6c926020,\n\t0x2d3b0: 0x6c926220, 0x2d3b1: 0x6c926420, 0x2d3b2: 0x6c926620, 0x2d3b3: 0x6c926820,\n\t0x2d3b4: 0x6c926a20, 0x2d3b5: 0x6c926c20, 0x2d3b6: 0x6c926e20, 0x2d3b7: 0x6cbe2020,\n\t0x2d3b8: 0x6cbe2220, 0x2d3b9: 0x6cbe2420, 0x2d3ba: 0x6cbe2620, 0x2d3bb: 0x6cbe2820,\n\t0x2d3bc: 0x6cbe2a20, 0x2d3bd: 0x6cbe2c20, 0x2d3be: 0x6cbe2e20, 0x2d3bf: 0x6cbe3020,\n\t// Block 0xb4f, offset 0x2d3c0\n\t0x2d3c0: 0x6cbe3220, 0x2d3c1: 0x6cbe3420, 0x2d3c2: 0x6cbe3620, 0x2d3c3: 0x6cbe3820,\n\t0x2d3c4: 0x6cbe3a20, 0x2d3c5: 0x6cbe3c20, 0x2d3c6: 0x6cbe3e20, 0x2d3c7: 0x6cbe4020,\n\t0x2d3c8: 0x6cbe4220, 0x2d3c9: 0x6cbe4420, 0x2d3ca: 0x6cbe4620, 0x2d3cb: 0x6cbe4820,\n\t0x2d3cc: 0x6cbe4a20, 0x2d3cd: 0x6cbe4c20, 0x2d3ce: 0x6c930220, 0x2d3cf: 0x6cbe4e20,\n\t0x2d3d0: 0x6ceec620, 0x2d3d1: 0x6cbe5020, 0x2d3d2: 0x6cbe5220, 0x2d3d3: 0x6cbe5420,\n\t0x2d3d4: 0x6cbe5620, 0x2d3d5: 0x6cbe5820, 0x2d3d6: 0x6cbe5a20, 0x2d3d7: 0x6cbe5c20,\n\t0x2d3d8: 0x6cbe5e20, 0x2d3d9: 0x6cbe6020, 0x2d3da: 0x6cbe6220, 0x2d3db: 0x6cbe6420,\n\t0x2d3dc: 0x6cbe6620, 0x2d3dd: 0x6cbe6820, 0x2d3de: 0x6cbe6a20, 0x2d3df: 0x6cbe6c20,\n\t0x2d3e0: 0x6cbe6e20, 0x2d3e1: 0x6cbe7020, 0x2d3e2: 0x6cbe7220, 0x2d3e3: 0x6cbe7420,\n\t0x2d3e4: 0x6cbe7620, 0x2d3e5: 0x6cbe7820, 0x2d3e6: 0x6cbe7a20, 0x2d3e7: 0x6cbe7c20,\n\t0x2d3e8: 0x6cbe7e20, 0x2d3e9: 0x6cbe8020, 0x2d3ea: 0x6cbe8220, 0x2d3eb: 0x6cbe8420,\n\t0x2d3ec: 0x6cbe8620, 0x2d3ed: 0x6cbe8820, 0x2d3ee: 0x6cbe8a20, 0x2d3ef: 0x6cbe8c20,\n\t0x2d3f0: 0x6ceec820, 0x2d3f1: 0x6ceeca20, 0x2d3f2: 0x6ceecc20, 0x2d3f3: 0x6ceece20,\n\t0x2d3f4: 0x6ceed020, 0x2d3f5: 0x6ceed220, 0x2d3f6: 0x6ceed420, 0x2d3f7: 0x6ceed620,\n\t0x2d3f8: 0x6ceed820, 0x2d3f9: 0x6ceeda20, 0x2d3fa: 0x6ceedc20, 0x2d3fb: 0x6ceede20,\n\t0x2d3fc: 0x6ceee020, 0x2d3fd: 0x6ceee220, 0x2d3fe: 0x6ceee420, 0x2d3ff: 0x6ceee620,\n\t// Block 0xb50, offset 0x2d400\n\t0x2d400: 0x6ceee820, 0x2d401: 0x6ceeea20, 0x2d402: 0x6ceeec20, 0x2d403: 0x6ceeee20,\n\t0x2d404: 0x6ceef020, 0x2d405: 0x6ceef220, 0x2d406: 0x6ceef420, 0x2d407: 0x6ceef620,\n\t0x2d408: 0x6ceef820, 0x2d409: 0x6ceefa20, 0x2d40a: 0x6ceefc20, 0x2d40b: 0x6ceefe20,\n\t0x2d40c: 0x6cef0020, 0x2d40d: 0x6cef0220, 0x2d40e: 0x6cef0420, 0x2d40f: 0x6cbe8e20,\n\t0x2d410: 0x6cef0620, 0x2d411: 0x6cef0820, 0x2d412: 0x6cef0a20, 0x2d413: 0x6cef0c20,\n\t0x2d414: 0x6cef0e20, 0x2d415: 0x6d1e6e20, 0x2d416: 0x6d1e7020, 0x2d417: 0x6d1e7220,\n\t0x2d418: 0x6d1e7420, 0x2d419: 0x6d1e7620, 0x2d41a: 0x6d1e7820, 0x2d41b: 0x6d1e7a20,\n\t0x2d41c: 0x6d1e7c20, 0x2d41d: 0x6d1e7e20, 0x2d41e: 0x6d1e8020, 0x2d41f: 0x6d1e8220,\n\t0x2d420: 0x6d1e8420, 0x2d421: 0x6d1e8620, 0x2d422: 0x6d1e8820, 0x2d423: 0x6d1e8a20,\n\t0x2d424: 0x6d1e8c20, 0x2d425: 0x6d1e8e20, 0x2d426: 0x6d1e9020, 0x2d427: 0x6d1e9220,\n\t0x2d428: 0x6d1e9420, 0x2d429: 0x6d1e9620, 0x2d42a: 0x6d1e9820, 0x2d42b: 0x6d1e9a20,\n\t0x2d42c: 0x6d1e9c20, 0x2d42d: 0x6d1e9e20, 0x2d42e: 0x6d1ea020, 0x2d42f: 0x6d1ea220,\n\t0x2d430: 0x6d1ea420, 0x2d431: 0x6d1ea620, 0x2d432: 0x6d1ea820, 0x2d433: 0x6d1f2820,\n\t0x2d434: 0x6d4bea20, 0x2d435: 0x6d4bec20, 0x2d436: 0x6d4bee20, 0x2d437: 0x6d4bf020,\n\t0x2d438: 0x6d4bf220, 0x2d439: 0x6d4bf420, 0x2d43a: 0x6d4bf620, 0x2d43b: 0x6d4bf820,\n\t0x2d43c: 0x6d4bfa20, 0x2d43d: 0x6d4bfc20, 0x2d43e: 0x6d4bfe20, 0x2d43f: 0x6d4c0020,\n\t// Block 0xb51, offset 0x2d440\n\t0x2d440: 0x6d4c0220, 0x2d441: 0x6d4c0420, 0x2d442: 0x6d4c0620, 0x2d443: 0x6d4c0820,\n\t0x2d444: 0x6d4c0a20, 0x2d445: 0x6d4c0c20, 0x2d446: 0x6d4c0e20, 0x2d447: 0x6d4c1020,\n\t0x2d448: 0x6d4c1220, 0x2d449: 0x6d4c1420, 0x2d44a: 0x6d4c1620, 0x2d44b: 0x6d4c1820,\n\t0x2d44c: 0x6d4c1a20, 0x2d44d: 0x6d4c1c20, 0x2d44e: 0x6d4c1e20, 0x2d44f: 0x6d4c2020,\n\t0x2d450: 0x6d794220, 0x2d451: 0x6d794420, 0x2d452: 0x6d794620, 0x2d453: 0x6d794820,\n\t0x2d454: 0x6d794a20, 0x2d455: 0x6d794c20, 0x2d456: 0x6d794e20, 0x2d457: 0x6d795020,\n\t0x2d458: 0x6d795220, 0x2d459: 0x6d795420, 0x2d45a: 0x6d795620, 0x2d45b: 0x6d795820,\n\t0x2d45c: 0x6d795a20, 0x2d45d: 0x6d795c20, 0x2d45e: 0x6d795e20, 0x2d45f: 0x6d796020,\n\t0x2d460: 0x6d796220, 0x2d461: 0x6d796420, 0x2d462: 0x6d796620, 0x2d463: 0x6da22620,\n\t0x2d464: 0x6da22820, 0x2d465: 0x6da22a20, 0x2d466: 0x6da22c20, 0x2d467: 0x6da22e20,\n\t0x2d468: 0x6d79de20, 0x2d469: 0x6da23020, 0x2d46a: 0x6da23220, 0x2d46b: 0x6da23420,\n\t0x2d46c: 0x6da23620, 0x2d46d: 0x6da23820, 0x2d46e: 0x6da23a20, 0x2d46f: 0x6da23c20,\n\t0x2d470: 0x6da23e20, 0x2d471: 0x6da24020, 0x2d472: 0x6da24220, 0x2d473: 0x6da24420,\n\t0x2d474: 0x6d796820, 0x2d475: 0x6da24620, 0x2d476: 0x6da24820, 0x2d477: 0x6da24a20,\n\t0x2d478: 0x6dc45820, 0x2d479: 0x6de16220, 0x2d47a: 0x6dc45a20, 0x2d47b: 0x6dc45c20,\n\t0x2d47c: 0x6dc45e20, 0x2d47d: 0x6de15820, 0x2d47e: 0x6de16420, 0x2d47f: 0x6de16620,\n\t// Block 0xb52, offset 0x2d480\n\t0x2d480: 0x6df96220, 0x2d481: 0x6df96420, 0x2d482: 0x6df96620, 0x2d483: 0x6df96820,\n\t0x2d484: 0x6df96a20, 0x2d485: 0x6df96c20, 0x2d486: 0x6df96e20, 0x2d487: 0x6e0d2a20,\n\t0x2d488: 0x6e0d2c20, 0x2d489: 0x6e0d2e20, 0x2d48a: 0x6e1c9a20, 0x2d48b: 0x6e1c9c20,\n\t0x2d48c: 0x6e1c9e20, 0x2d48d: 0x6e28a620, 0x2d48e: 0x6e31d820, 0x2d48f: 0x6e31da20,\n\t0x2d490: 0x6c019620, 0x2d491: 0x6c019820, 0x2d492: 0x6c019a20, 0x2d493: 0x6c019c20,\n\t0x2d494: 0x6c03f220, 0x2d495: 0x6c081220, 0x2d496: 0x6c0fa820, 0x2d497: 0x6c0faa20,\n\t0x2d498: 0x6c0fac20, 0x2d499: 0x6c0fae20, 0x2d49a: 0x6c1c6620, 0x2d49b: 0x6c1c6820,\n\t0x2d49c: 0x6c1c6a20, 0x2d49d: 0x6c1c6c20, 0x2d49e: 0x6c1c6e20, 0x2d49f: 0x6c2fca20,\n\t0x2d4a0: 0x6c2fcc20, 0x2d4a1: 0x6c2fce20, 0x2d4a2: 0x6c2fd020, 0x2d4a3: 0x6c2fd220,\n\t0x2d4a4: 0x6c2fd420, 0x2d4a5: 0x6c2fd620, 0x2d4a6: 0x6c2fd820, 0x2d4a7: 0x6c2fda20,\n\t0x2d4a8: 0x6c4a1e20, 0x2d4a9: 0x6c4a2020, 0x2d4aa: 0x6c4a2220, 0x2d4ab: 0x6c6be020,\n\t0x2d4ac: 0x6c6be220, 0x2d4ad: 0x6c6be420, 0x2d4ae: 0x6c930420, 0x2d4af: 0x6c930620,\n\t0x2d4b0: 0x6c930820, 0x2d4b1: 0x6cbf4420, 0x2d4b2: 0x6c930a20, 0x2d4b3: 0x6cbf6220,\n\t0x2d4b4: 0x6cef7a20, 0x2d4b5: 0x6d1f2a20, 0x2d4b6: 0x6cef9820, 0x2d4b7: 0x6d1f2c20,\n\t0x2d4b8: 0x6d79e220, 0x2d4b9: 0x6d79e420, 0x2d4ba: 0x6da29620, 0x2d4bb: 0x6da29820,\n\t0x2d4bc: 0x6de19020, 0x2d4bd: 0x6df98620, 0x2d4be: 0x6df98820, 0x2d4bf: 0x6e1cb420,\n\t// Block 0xb53, offset 0x2d4c0\n\t0x2d4c0: 0x6c01a020, 0x2d4c1: 0x6c082220, 0x2d4c2: 0x6c082420, 0x2d4c3: 0x6c082620,\n\t0x2d4c4: 0x6c082820, 0x2d4c5: 0x6c0fbc20, 0x2d4c6: 0x6c0fbe20, 0x2d4c7: 0x6c0fc020,\n\t0x2d4c8: 0x6c0fc220, 0x2d4c9: 0x6c0fc420, 0x2d4ca: 0x6c1c8e20, 0x2d4cb: 0x6c1c9020,\n\t0x2d4cc: 0x6c1c9220, 0x2d4cd: 0x6c1c9420, 0x2d4ce: 0x6c1c9620, 0x2d4cf: 0x6c1c9820,\n\t0x2d4d0: 0x6c1c9a20, 0x2d4d1: 0x6c1c9c20, 0x2d4d2: 0x6c1c9e20, 0x2d4d3: 0x6c2ffc20,\n\t0x2d4d4: 0x6c2ffe20, 0x2d4d5: 0x6c300020, 0x2d4d6: 0x6c300220, 0x2d4d7: 0x6c300420,\n\t0x2d4d8: 0x6c300620, 0x2d4d9: 0x6c300820, 0x2d4da: 0x6c300a20, 0x2d4db: 0x6c300c20,\n\t0x2d4dc: 0x6c300e20, 0x2d4dd: 0x6c301020, 0x2d4de: 0x6c301220, 0x2d4df: 0x6c301420,\n\t0x2d4e0: 0x6c301620, 0x2d4e1: 0x6c301820, 0x2d4e2: 0x6c4a4820, 0x2d4e3: 0x6c4a4a20,\n\t0x2d4e4: 0x6c4a4c20, 0x2d4e5: 0x6c4a4e20, 0x2d4e6: 0x6c4a5020, 0x2d4e7: 0x6c6bfe20,\n\t0x2d4e8: 0x6c4a5220, 0x2d4e9: 0x6c4a5420, 0x2d4ea: 0x6c4a5620, 0x2d4eb: 0x6c4a5820,\n\t0x2d4ec: 0x6c6c0020, 0x2d4ed: 0x6c6c0220, 0x2d4ee: 0x6c6c0420, 0x2d4ef: 0x6c6c0620,\n\t0x2d4f0: 0x6c6c0820, 0x2d4f1: 0x6c6c0a20, 0x2d4f2: 0x6c6c0c20, 0x2d4f3: 0x6c6c0e20,\n\t0x2d4f4: 0x6c6c1020, 0x2d4f5: 0x6c6c1220, 0x2d4f6: 0x6c6c1420, 0x2d4f7: 0x6c6c1620,\n\t0x2d4f8: 0x6c6c1820, 0x2d4f9: 0x6c6c1a20, 0x2d4fa: 0x6c6c1c20, 0x2d4fb: 0x6c6c1e20,\n\t0x2d4fc: 0x6c6c2020, 0x2d4fd: 0x6c6c2220, 0x2d4fe: 0x6c6c2420, 0x2d4ff: 0x6c933020,\n\t// Block 0xb54, offset 0x2d500\n\t0x2d500: 0x6c933220, 0x2d501: 0x6c933420, 0x2d502: 0x6c933620, 0x2d503: 0x6c933820,\n\t0x2d504: 0x6c933a20, 0x2d505: 0x6c933c20, 0x2d506: 0x6c933e20, 0x2d507: 0x6c934020,\n\t0x2d508: 0x6c934220, 0x2d509: 0x6c934420, 0x2d50a: 0x6cbf6820, 0x2d50b: 0x6cbf6a20,\n\t0x2d50c: 0x6cbf6c20, 0x2d50d: 0x6cbf6e20, 0x2d50e: 0x6cbf7020, 0x2d50f: 0x6cbf7220,\n\t0x2d510: 0x6cbf7420, 0x2d511: 0x6cbf7620, 0x2d512: 0x6cbf7820, 0x2d513: 0x6cbf7a20,\n\t0x2d514: 0x6cbf7c20, 0x2d515: 0x6cbf7e20, 0x2d516: 0x6cefa420, 0x2d517: 0x6cefa620,\n\t0x2d518: 0x6cefa820, 0x2d519: 0x6cefaa20, 0x2d51a: 0x6cefac20, 0x2d51b: 0x6cefae20,\n\t0x2d51c: 0x6cefb020, 0x2d51d: 0x6cefb220, 0x2d51e: 0x6d1f4420, 0x2d51f: 0x6d1f4620,\n\t0x2d520: 0x6d1f4820, 0x2d521: 0x6d1f4a20, 0x2d522: 0x6d1f4c20, 0x2d523: 0x6d1f4e20,\n\t0x2d524: 0x6d1f5020, 0x2d525: 0x6d1f5220, 0x2d526: 0x6d1f5420, 0x2d527: 0x6d1f5620,\n\t0x2d528: 0x6d1f5820, 0x2d529: 0x6d4cce20, 0x2d52a: 0x6cbf8020, 0x2d52b: 0x6d4cd020,\n\t0x2d52c: 0x6d4cd220, 0x2d52d: 0x6d4cd420, 0x2d52e: 0x6d4cd620, 0x2d52f: 0x6d79fe20,\n\t0x2d530: 0x6d7a0020, 0x2d531: 0x6da2a020, 0x2d532: 0x6da2a220, 0x2d533: 0x6de19a20,\n\t0x2d534: 0x6de19c20, 0x2d535: 0x6de19e20, 0x2d536: 0x6df99620, 0x2d537: 0x6e0d4820,\n\t0x2d538: 0x6c01a220, 0x2d539: 0x6c083220, 0x2d53a: 0x6c0fe220, 0x2d53b: 0x6c0fe420,\n\t0x2d53c: 0x6c0fe620, 0x2d53d: 0x6c1cbe20, 0x2d53e: 0x6c1cc020, 0x2d53f: 0x6c1cc220,\n\t// Block 0xb55, offset 0x2d540\n\t0x2d540: 0x6c304620, 0x2d541: 0x6c4a8e20, 0x2d542: 0x6c4a9020, 0x2d543: 0x6c6c7420,\n\t0x2d544: 0x6c6c7620, 0x2d545: 0x6c6c7820, 0x2d546: 0x6c4a9220, 0x2d547: 0x6c938220,\n\t0x2d548: 0x6c938420, 0x2d549: 0x6c938620, 0x2d54a: 0x6cbfd620, 0x2d54b: 0x6cbfd820,\n\t0x2d54c: 0x6cbfda20, 0x2d54d: 0x6d1fac20, 0x2d54e: 0x6d4d2220, 0x2d54f: 0x6c01a820,\n\t0x2d550: 0x6c03fc20, 0x2d551: 0x6c03fe20, 0x2d552: 0x6c083420, 0x2d553: 0x6c083620,\n\t0x2d554: 0x6c083820, 0x2d555: 0x6c083a20, 0x2d556: 0x6c0fec20, 0x2d557: 0x6c0fee20,\n\t0x2d558: 0x6c0ff020, 0x2d559: 0x6c305820, 0x2d55a: 0x6c305a20, 0x2d55b: 0x6c4aa020,\n\t0x2d55c: 0x6c4aa220, 0x2d55d: 0x6c4aa420, 0x2d55e: 0x6cbfec20, 0x2d55f: 0x6cf00020,\n\t0x2d560: 0x6cf00220, 0x2d561: 0x6d1fbc20, 0x2d562: 0x6c01ac20, 0x2d563: 0x6c040420,\n\t0x2d564: 0x6c040620, 0x2d565: 0x6c0ffc20, 0x2d566: 0x6c0ffe20, 0x2d567: 0x6c100020,\n\t0x2d568: 0x6c1cd820, 0x2d569: 0x6c1cda20, 0x2d56a: 0x6c1cdc20, 0x2d56b: 0x6c1cde20,\n\t0x2d56c: 0x6c1ce020, 0x2d56d: 0x6c306e20, 0x2d56e: 0x6c4abe20, 0x2d56f: 0x6c4ac020,\n\t0x2d570: 0x6cc00620, 0x2d571: 0x6cc00820, 0x2d572: 0x6cf01620, 0x2d573: 0x6cf01820,\n\t0x2d574: 0x6cf01a20, 0x2d575: 0x6d4d5020, 0x2d576: 0x6da2d220, 0x2d577: 0x6da2d420,\n\t0x2d578: 0x6c01b220, 0x2d579: 0x6c024c20, 0x2d57a: 0x6c040a20, 0x2d57b: 0x6c085220,\n\t0x2d57c: 0x6c085420, 0x2d57d: 0x6c100e20, 0x2d57e: 0x6c1cfa20, 0x2d57f: 0x6c1cfc20,\n\t// Block 0xb56, offset 0x2d580\n\t0x2d580: 0x6c1cfe20, 0x2d581: 0x6c1d0020, 0x2d582: 0x6c1d0220, 0x2d583: 0x6c1d0420,\n\t0x2d584: 0x6c308620, 0x2d585: 0x6c308820, 0x2d586: 0x6c308a20, 0x2d587: 0x6c308c20,\n\t0x2d588: 0x6c308e20, 0x2d589: 0x6c309020, 0x2d58a: 0x6c309220, 0x2d58b: 0x6c4ad620,\n\t0x2d58c: 0x6c4ad820, 0x2d58d: 0x6c4ada20, 0x2d58e: 0x6c4adc20, 0x2d58f: 0x6c4ade20,\n\t0x2d590: 0x6c6cae20, 0x2d591: 0x6c6cb020, 0x2d592: 0x6c6cb220, 0x2d593: 0x6c6cb420,\n\t0x2d594: 0x6c6cb620, 0x2d595: 0x6c6cb820, 0x2d596: 0x6c6cba20, 0x2d597: 0x6c6cbc20,\n\t0x2d598: 0x6c6cbe20, 0x2d599: 0x6c93d020, 0x2d59a: 0x6c93d220, 0x2d59b: 0x6c93d420,\n\t0x2d59c: 0x6c93d620, 0x2d59d: 0x6c93d820, 0x2d59e: 0x6cc02420, 0x2d59f: 0x6cc02620,\n\t0x2d5a0: 0x6c941020, 0x2d5a1: 0x6cc02820, 0x2d5a2: 0x6d1fe020, 0x2d5a3: 0x6d1fe220,\n\t0x2d5a4: 0x6d4d6220, 0x2d5a5: 0x6d4d6420, 0x2d5a6: 0x6d4d6620, 0x2d5a7: 0x6d4d6820,\n\t0x2d5a8: 0x6da2da20, 0x2d5a9: 0x6dc4c620, 0x2d5aa: 0x6dc4c820, 0x2d5ab: 0x6de1c020,\n\t0x2d5ac: 0x6e0d6420, 0x2d5ad: 0x6e31f020, 0x2d5ae: 0x6c01b620, 0x2d5af: 0x6c040e20,\n\t0x2d5b0: 0x6c102820, 0x2d5b1: 0x6c01ba20, 0x2d5b2: 0x6c041220, 0x2d5b3: 0x6c086c20,\n\t0x2d5b4: 0x6c086e20, 0x2d5b5: 0x6c087020, 0x2d5b6: 0x6c087220, 0x2d5b7: 0x6c087420,\n\t0x2d5b8: 0x6c104620, 0x2d5b9: 0x6c104820, 0x2d5ba: 0x6c104a20, 0x2d5bb: 0x6c104c20,\n\t0x2d5bc: 0x6c104e20, 0x2d5bd: 0x6c105020, 0x2d5be: 0x6c105220, 0x2d5bf: 0x6c105420,\n\t// Block 0xb57, offset 0x2d5c0\n\t0x2d5c0: 0x6c105620, 0x2d5c1: 0x6c105820, 0x2d5c2: 0x6c105a20, 0x2d5c3: 0x6c105c20,\n\t0x2d5c4: 0x6c1d3c20, 0x2d5c5: 0x6c1d3e20, 0x2d5c6: 0x6c1d4020, 0x2d5c7: 0x6c1d4220,\n\t0x2d5c8: 0x6c1d4420, 0x2d5c9: 0x6c1d4620, 0x2d5ca: 0x6c1d4820, 0x2d5cb: 0x6c1d4a20,\n\t0x2d5cc: 0x6c1d4c20, 0x2d5cd: 0x6c1dd220, 0x2d5ce: 0x6c1d4e20, 0x2d5cf: 0x6c1d5020,\n\t0x2d5d0: 0x6c1d5220, 0x2d5d1: 0x6c1d5420, 0x2d5d2: 0x6c1d5620, 0x2d5d3: 0x6c1d5820,\n\t0x2d5d4: 0x6c1d5a20, 0x2d5d5: 0x6c1d5c20, 0x2d5d6: 0x6c1d5e20, 0x2d5d7: 0x6c1d6020,\n\t0x2d5d8: 0x6c1d6220, 0x2d5d9: 0x6c1d6420, 0x2d5da: 0x6c1d6620, 0x2d5db: 0x6c1d6820,\n\t0x2d5dc: 0x6c1d6a20, 0x2d5dd: 0x6c30ce20, 0x2d5de: 0x6c30d020, 0x2d5df: 0x6c30d220,\n\t0x2d5e0: 0x6c30d420, 0x2d5e1: 0x6c30d620, 0x2d5e2: 0x6c30d820, 0x2d5e3: 0x6c30da20,\n\t0x2d5e4: 0x6c30dc20, 0x2d5e5: 0x6c30de20, 0x2d5e6: 0x6c30e020, 0x2d5e7: 0x6c30e220,\n\t0x2d5e8: 0x6c30e420, 0x2d5e9: 0x6c30e620, 0x2d5ea: 0x6c30e820, 0x2d5eb: 0x6c30ea20,\n\t0x2d5ec: 0x6c30ec20, 0x2d5ed: 0x6c30ee20, 0x2d5ee: 0x6c30f020, 0x2d5ef: 0x6c30f220,\n\t0x2d5f0: 0x6c30f420, 0x2d5f1: 0x6c30f620, 0x2d5f2: 0x6c30f820, 0x2d5f3: 0x6c30fa20,\n\t0x2d5f4: 0x6c30fc20, 0x2d5f5: 0x6c30fe20, 0x2d5f6: 0x6c310020, 0x2d5f7: 0x6c310220,\n\t0x2d5f8: 0x6c310420, 0x2d5f9: 0x6c310620, 0x2d5fa: 0x6c310820, 0x2d5fb: 0x6c310a20,\n\t0x2d5fc: 0x6c310c20, 0x2d5fd: 0x6c310e20, 0x2d5fe: 0x6c311020, 0x2d5ff: 0x6c311220,\n\t// Block 0xb58, offset 0x2d600\n\t0x2d600: 0x6c311420, 0x2d601: 0x6c311620, 0x2d602: 0x6c311820, 0x2d603: 0x6c311a20,\n\t0x2d604: 0x6c311c20, 0x2d605: 0x6c311e20, 0x2d606: 0x6c4b2620, 0x2d607: 0x6c4b2820,\n\t0x2d608: 0x6c4b2a20, 0x2d609: 0x6c4b2c20, 0x2d60a: 0x6c4b2e20, 0x2d60b: 0x6c4b3020,\n\t0x2d60c: 0x6c4b3220, 0x2d60d: 0x6c4b3420, 0x2d60e: 0x6c4b3620, 0x2d60f: 0x6c4b3820,\n\t0x2d610: 0x6c4b3a20, 0x2d611: 0x6c4b3c20, 0x2d612: 0x6c4b3e20, 0x2d613: 0x6c4b4020,\n\t0x2d614: 0x6c4b4220, 0x2d615: 0x6c4b4420, 0x2d616: 0x6c4b4620, 0x2d617: 0x6c4b4820,\n\t0x2d618: 0x6c4b4a20, 0x2d619: 0x6c4b4c20, 0x2d61a: 0x6c4b4e20, 0x2d61b: 0x6c4b5020,\n\t0x2d61c: 0x6c4b5220, 0x2d61d: 0x6c4b5420, 0x2d61e: 0x6c4b5620, 0x2d61f: 0x6c4b5820,\n\t0x2d620: 0x6c4b5a20, 0x2d621: 0x6c4b5c20, 0x2d622: 0x6c4b5e20, 0x2d623: 0x6c4b6020,\n\t0x2d624: 0x6c4b6220, 0x2d625: 0x6c4b6420, 0x2d626: 0x6c4b6620, 0x2d627: 0x6c4b6820,\n\t0x2d628: 0x6c6d2020, 0x2d629: 0x6c6d2220, 0x2d62a: 0x6c6d2420, 0x2d62b: 0x6c6d2620,\n\t0x2d62c: 0x6c6d2820, 0x2d62d: 0x6c6d2a20, 0x2d62e: 0x6c6d2c20, 0x2d62f: 0x6c6d2e20,\n\t0x2d630: 0x6c6d3020, 0x2d631: 0x6c6d3220, 0x2d632: 0x6c6d3420, 0x2d633: 0x6c6d3620,\n\t0x2d634: 0x6c6d3820, 0x2d635: 0x6c6d3a20, 0x2d636: 0x6c6d3c20, 0x2d637: 0x6c6d3e20,\n\t0x2d638: 0x6c4bcc20, 0x2d639: 0x6c6d4020, 0x2d63a: 0x6c6d4220, 0x2d63b: 0x6c6d4420,\n\t0x2d63c: 0x6c6d4620, 0x2d63d: 0x6c6d4820, 0x2d63e: 0x6c6d4a20, 0x2d63f: 0x6c6d4c20,\n\t// Block 0xb59, offset 0x2d640\n\t0x2d640: 0x6c6d4e20, 0x2d641: 0x6c6d5020, 0x2d642: 0x6c6d5220, 0x2d643: 0x6c6d5420,\n\t0x2d644: 0x6c6d5620, 0x2d645: 0x6c6d5820, 0x2d646: 0x6c943420, 0x2d647: 0x6c943620,\n\t0x2d648: 0x6c943820, 0x2d649: 0x6c943a20, 0x2d64a: 0x6c943c20, 0x2d64b: 0x6c943e20,\n\t0x2d64c: 0x6c944020, 0x2d64d: 0x6c944220, 0x2d64e: 0x6c944420, 0x2d64f: 0x6c944620,\n\t0x2d650: 0x6c944820, 0x2d651: 0x6c944a20, 0x2d652: 0x6c944c20, 0x2d653: 0x6c944e20,\n\t0x2d654: 0x6c945020, 0x2d655: 0x6c945220, 0x2d656: 0x6c945420, 0x2d657: 0x6c945620,\n\t0x2d658: 0x6c945820, 0x2d659: 0x6c945a20, 0x2d65a: 0x6c945c20, 0x2d65b: 0x6c945e20,\n\t0x2d65c: 0x6c946020, 0x2d65d: 0x6c946220, 0x2d65e: 0x6c946420, 0x2d65f: 0x6c946620,\n\t0x2d660: 0x6c946820, 0x2d661: 0x6c946a20, 0x2d662: 0x6c946c20, 0x2d663: 0x6c946e20,\n\t0x2d664: 0x6c947020, 0x2d665: 0x6c947220, 0x2d666: 0x6c947420, 0x2d667: 0x6c947620,\n\t0x2d668: 0x6c947820, 0x2d669: 0x6c947a20, 0x2d66a: 0x6c947c20, 0x2d66b: 0x6c947e20,\n\t0x2d66c: 0x6c948020, 0x2d66d: 0x6c948220, 0x2d66e: 0x6c948420, 0x2d66f: 0x6c948620,\n\t0x2d670: 0x6c948820, 0x2d671: 0x6cc08420, 0x2d672: 0x6cc08620, 0x2d673: 0x6cc08820,\n\t0x2d674: 0x6cc08a20, 0x2d675: 0x6cc08c20, 0x2d676: 0x6cc08e20, 0x2d677: 0x6cc09020,\n\t0x2d678: 0x6cc09220, 0x2d679: 0x6cc09420, 0x2d67a: 0x6cc09620, 0x2d67b: 0x6cc09820,\n\t0x2d67c: 0x6cc09a20, 0x2d67d: 0x6cc09c20, 0x2d67e: 0x6cc09e20, 0x2d67f: 0x6cc0a020,\n\t// Block 0xb5a, offset 0x2d680\n\t0x2d680: 0x6cc0a220, 0x2d681: 0x6cc0a420, 0x2d682: 0x6cc0a620, 0x2d683: 0x6cc0a820,\n\t0x2d684: 0x6cc0aa20, 0x2d685: 0x6cc0ac20, 0x2d686: 0x6cc0ae20, 0x2d687: 0x6cc0b020,\n\t0x2d688: 0x6cc0b220, 0x2d689: 0x6cc0b420, 0x2d68a: 0x6cf07a20, 0x2d68b: 0x6cc0b620,\n\t0x2d68c: 0x6cc0b820, 0x2d68d: 0x6cc0ba20, 0x2d68e: 0x6cc0bc20, 0x2d68f: 0x6cc0be20,\n\t0x2d690: 0x6cc0c020, 0x2d691: 0x6cc0c220, 0x2d692: 0x6cc0c420, 0x2d693: 0x6cc0c620,\n\t0x2d694: 0x6cc0c820, 0x2d695: 0x6cc0ca20, 0x2d696: 0x6cc0cc20, 0x2d697: 0x6cc0ce20,\n\t0x2d698: 0x6cc0d020, 0x2d699: 0x6cc0d220, 0x2d69a: 0x6cc0d420, 0x2d69b: 0x6cc0d620,\n\t0x2d69c: 0x6cc0d820, 0x2d69d: 0x6cc0da20, 0x2d69e: 0x6cf07c20, 0x2d69f: 0x6cf07e20,\n\t0x2d6a0: 0x6cf08020, 0x2d6a1: 0x6cf08220, 0x2d6a2: 0x6cf08420, 0x2d6a3: 0x6cf08620,\n\t0x2d6a4: 0x6cf08820, 0x2d6a5: 0x6cf08a20, 0x2d6a6: 0x6cf08c20, 0x2d6a7: 0x6cf08e20,\n\t0x2d6a8: 0x6cf09020, 0x2d6a9: 0x6cf09220, 0x2d6aa: 0x6cf09420, 0x2d6ab: 0x6cc16a20,\n\t0x2d6ac: 0x6cf09620, 0x2d6ad: 0x6cf09820, 0x2d6ae: 0x6cf09a20, 0x2d6af: 0x6cf09c20,\n\t0x2d6b0: 0x6cf09e20, 0x2d6b1: 0x6cf0a020, 0x2d6b2: 0x6cf0a220, 0x2d6b3: 0x6cf0a420,\n\t0x2d6b4: 0x6cf0a620, 0x2d6b5: 0x6cf0a820, 0x2d6b6: 0x6cf0aa20, 0x2d6b7: 0x6d201820,\n\t0x2d6b8: 0x6d201a20, 0x2d6b9: 0x6d201c20, 0x2d6ba: 0x6d201e20, 0x2d6bb: 0x6d202020,\n\t0x2d6bc: 0x6d202220, 0x2d6bd: 0x6d202420, 0x2d6be: 0x6d202620, 0x2d6bf: 0x6d202820,\n\t// Block 0xb5b, offset 0x2d6c0\n\t0x2d6c0: 0x6d202a20, 0x2d6c1: 0x6d202c20, 0x2d6c2: 0x6d202e20, 0x2d6c3: 0x6d203020,\n\t0x2d6c4: 0x6d203220, 0x2d6c5: 0x6d203420, 0x2d6c6: 0x6d203620, 0x2d6c7: 0x6d203820,\n\t0x2d6c8: 0x6d203a20, 0x2d6c9: 0x6d203c20, 0x2d6ca: 0x6d203e20, 0x2d6cb: 0x6d204020,\n\t0x2d6cc: 0x6d204220, 0x2d6cd: 0x6d204420, 0x2d6ce: 0x6d204620, 0x2d6cf: 0x6d4dac20,\n\t0x2d6d0: 0x6d4dae20, 0x2d6d1: 0x6d4db020, 0x2d6d2: 0x6d4db220, 0x2d6d3: 0x6d4db420,\n\t0x2d6d4: 0x6d4db620, 0x2d6d5: 0x6d4db820, 0x2d6d6: 0x6d4dba20, 0x2d6d7: 0x6d4dbc20,\n\t0x2d6d8: 0x6d4dbe20, 0x2d6d9: 0x6d4dc020, 0x2d6da: 0x6d4dc220, 0x2d6db: 0x6d4dc420,\n\t0x2d6dc: 0x6d4dc620, 0x2d6dd: 0x6d4dc820, 0x2d6de: 0x6d4dca20, 0x2d6df: 0x6d4dcc20,\n\t0x2d6e0: 0x6d4dce20, 0x2d6e1: 0x6d4dd020, 0x2d6e2: 0x6d4dd220, 0x2d6e3: 0x6d4dd420,\n\t0x2d6e4: 0x6d4dd620, 0x2d6e5: 0x6d4dd820, 0x2d6e6: 0x6d7a6e20, 0x2d6e7: 0x6d7a7020,\n\t0x2d6e8: 0x6d7a7220, 0x2d6e9: 0x6d7a7420, 0x2d6ea: 0x6d7a7620, 0x2d6eb: 0x6d7a7820,\n\t0x2d6ec: 0x6d7a7a20, 0x2d6ed: 0x6d7a7c20, 0x2d6ee: 0x6d7a7e20, 0x2d6ef: 0x6d7a8020,\n\t0x2d6f0: 0x6d7a8220, 0x2d6f1: 0x6d7a8420, 0x2d6f2: 0x6d7a8620, 0x2d6f3: 0x6d7a8820,\n\t0x2d6f4: 0x6d7a8a20, 0x2d6f5: 0x6d7a8c20, 0x2d6f6: 0x6d7a8e20, 0x2d6f7: 0x6da2ec20,\n\t0x2d6f8: 0x6da2ee20, 0x2d6f9: 0x6da2f020, 0x2d6fa: 0x6da2f220, 0x2d6fb: 0x6da35220,\n\t0x2d6fc: 0x6da2f420, 0x2d6fd: 0x6da2f620, 0x2d6fe: 0x6da2f820, 0x2d6ff: 0x6da2fa20,\n\t// Block 0xb5c, offset 0x2d700\n\t0x2d700: 0x6dc4d620, 0x2d701: 0x6dc4d820, 0x2d702: 0x6dc4da20, 0x2d703: 0x6de1d820,\n\t0x2d704: 0x6de1da20, 0x2d705: 0x6de1dc20, 0x2d706: 0x6df9b220, 0x2d707: 0x6df9b420,\n\t0x2d708: 0x6df9b620, 0x2d709: 0x6df9b820, 0x2d70a: 0x6df9ba20, 0x2d70b: 0x6e0d6e20,\n\t0x2d70c: 0x6df9bc20, 0x2d70d: 0x6e0d7420, 0x2d70e: 0x6e1cd820, 0x2d70f: 0x6e0d7620,\n\t0x2d710: 0x6e0d7820, 0x2d711: 0x6e1cda20, 0x2d712: 0x6e1cdc20, 0x2d713: 0x6e1cde20,\n\t0x2d714: 0x6e1ce020, 0x2d715: 0x6e1ce220, 0x2d716: 0x6e28b220, 0x2d717: 0x6e1ce420,\n\t0x2d718: 0x6e28b420, 0x2d719: 0x6e31f420, 0x2d71a: 0x6e28b620, 0x2d71b: 0x6c01bc20,\n\t0x2d71c: 0x6c00c620, 0x2d71d: 0x6c01be20, 0x2d71e: 0x6c109420, 0x2d71f: 0x6c109620,\n\t0x2d720: 0x6c1dd420, 0x2d721: 0x6c272c20, 0x2d722: 0x6c954a20, 0x2d723: 0x6c954c20,\n\t0x2d724: 0x6d4e4820, 0x2d725: 0x6c01c420, 0x2d726: 0x6c089220, 0x2d727: 0x6c089420,\n\t0x2d728: 0x6c089620, 0x2d729: 0x6c10a220, 0x2d72a: 0x6c10a420, 0x2d72b: 0x6c1dde20,\n\t0x2d72c: 0x6c4bda20, 0x2d72d: 0x6c4bdc20, 0x2d72e: 0x6c6dec20, 0x2d72f: 0x6cc17020,\n\t0x2d730: 0x6cf11020, 0x2d731: 0x6c01c620, 0x2d732: 0x6c01c820, 0x2d733: 0x6c01ca20,\n\t0x2d734: 0x6c042820, 0x2d735: 0x6c1de620, 0x2d736: 0x6c318a20, 0x2d737: 0x6c4be020,\n\t0x2d738: 0x6c4be220, 0x2d739: 0x6c4be420, 0x2d73a: 0x6c4be620, 0x2d73b: 0x6c4be820,\n\t0x2d73c: 0x6c6df220, 0x2d73d: 0x6cc17820, 0x2d73e: 0x6c01cc20, 0x2d73f: 0x6c042c20,\n\t// Block 0xb5d, offset 0x2d740\n\t0x2d740: 0x6c042e20, 0x2d741: 0x6c043020, 0x2d742: 0x6c08aa20, 0x2d743: 0x6c08ac20,\n\t0x2d744: 0x6c08ae20, 0x2d745: 0x6c08b020, 0x2d746: 0x6c10b420, 0x2d747: 0x6c10b620,\n\t0x2d748: 0x6c10b820, 0x2d749: 0x6c1df620, 0x2d74a: 0x6c1df820, 0x2d74b: 0x6c1dfa20,\n\t0x2d74c: 0x6c1dfc20, 0x2d74d: 0x6c1dfe20, 0x2d74e: 0x6c1e0020, 0x2d74f: 0x6c1e0220,\n\t0x2d750: 0x6c1e0420, 0x2d751: 0x6c319a20, 0x2d752: 0x6c319c20, 0x2d753: 0x6c319e20,\n\t0x2d754: 0x6c31a020, 0x2d755: 0x6c31a220, 0x2d756: 0x6c31a420, 0x2d757: 0x6c31a620,\n\t0x2d758: 0x6c31a820, 0x2d759: 0x6c31aa20, 0x2d75a: 0x6c31ac20, 0x2d75b: 0x6c31ae20,\n\t0x2d75c: 0x6c31b020, 0x2d75d: 0x6c4bfc20, 0x2d75e: 0x6c4bfe20, 0x2d75f: 0x6c4c0020,\n\t0x2d760: 0x6c4c0220, 0x2d761: 0x6c4c0420, 0x2d762: 0x6c4c0620, 0x2d763: 0x6c4c0820,\n\t0x2d764: 0x6c4c0a20, 0x2d765: 0x6c4c0c20, 0x2d766: 0x6c4c0e20, 0x2d767: 0x6c4c1020,\n\t0x2d768: 0x6c6e0020, 0x2d769: 0x6c6e0220, 0x2d76a: 0x6c6e0420, 0x2d76b: 0x6c6e0620,\n\t0x2d76c: 0x6c6e0820, 0x2d76d: 0x6c6e0a20, 0x2d76e: 0x6c6e0c20, 0x2d76f: 0x6c6e0e20,\n\t0x2d770: 0x6c6e1020, 0x2d771: 0x6c6e1220, 0x2d772: 0x6c957020, 0x2d773: 0x6c957220,\n\t0x2d774: 0x6c957420, 0x2d775: 0x6c957620, 0x2d776: 0x6c957820, 0x2d777: 0x6c957a20,\n\t0x2d778: 0x6c957c20, 0x2d779: 0x6c957e20, 0x2d77a: 0x6c958020, 0x2d77b: 0x6c958220,\n\t0x2d77c: 0x6c958420, 0x2d77d: 0x6cc19820, 0x2d77e: 0x6c95ca20, 0x2d77f: 0x6cc19a20,\n\t// Block 0xb5e, offset 0x2d780\n\t0x2d780: 0x6cc19c20, 0x2d781: 0x6cc19e20, 0x2d782: 0x6cc1a020, 0x2d783: 0x6cc1a220,\n\t0x2d784: 0x6cc1a420, 0x2d785: 0x6cc1a620, 0x2d786: 0x6cc1a820, 0x2d787: 0x6cc1aa20,\n\t0x2d788: 0x6cc1f220, 0x2d789: 0x6cc1ac20, 0x2d78a: 0x6cf12420, 0x2d78b: 0x6cf12620,\n\t0x2d78c: 0x6cf12820, 0x2d78d: 0x6cf12a20, 0x2d78e: 0x6cf12c20, 0x2d78f: 0x6cf12e20,\n\t0x2d790: 0x6d082820, 0x2d791: 0x6d20c820, 0x2d792: 0x6d20ca20, 0x2d793: 0x6d20cc20,\n\t0x2d794: 0x6d20ce20, 0x2d795: 0x6d20d020, 0x2d796: 0x6d20d220, 0x2d797: 0x6d20d420,\n\t0x2d798: 0x6d20d620, 0x2d799: 0x6d20d820, 0x2d79a: 0x6d4e5e20, 0x2d79b: 0x6d20da20,\n\t0x2d79c: 0x6d4e6020, 0x2d79d: 0x6d4e6220, 0x2d79e: 0x6d4e6420, 0x2d79f: 0x6d4e6620,\n\t0x2d7a0: 0x6d4e6820, 0x2d7a1: 0x6d4e6a20, 0x2d7a2: 0x6d4e6c20, 0x2d7a3: 0x6d210620,\n\t0x2d7a4: 0x6d4e6e20, 0x2d7a5: 0x6d4e7020, 0x2d7a6: 0x6d7aee20, 0x2d7a7: 0x6d7af020,\n\t0x2d7a8: 0x6d7af220, 0x2d7a9: 0x6d4ea820, 0x2d7aa: 0x6da36020, 0x2d7ab: 0x6da36220,\n\t0x2d7ac: 0x6da36420, 0x2d7ad: 0x6dc51020, 0x2d7ae: 0x6dc51220, 0x2d7af: 0x6d7b1a20,\n\t0x2d7b0: 0x6de21220, 0x2d7b1: 0x6df9e020, 0x2d7b2: 0x6c01ce20, 0x2d7b3: 0x6c08ba20,\n\t0x2d7b4: 0x6c10da20, 0x2d7b5: 0x6c10dc20, 0x2d7b6: 0x6c10de20, 0x2d7b7: 0x6c31dc20,\n\t0x2d7b8: 0x6c31de20, 0x2d7b9: 0x6cf15a20, 0x2d7ba: 0x6c01d220, 0x2d7bb: 0x6c043220,\n\t0x2d7bc: 0x6c08be20, 0x2d7bd: 0x6c4c5e20, 0x2d7be: 0x6cc20020, 0x2d7bf: 0x6c01d420,\n\t// Block 0xb5f, offset 0x2d7c0\n\t0x2d7c0: 0x6c08c820, 0x2d7c1: 0x6c08ca20, 0x2d7c2: 0x6c08cc20, 0x2d7c3: 0x6c08ce20,\n\t0x2d7c4: 0x6c10ea20, 0x2d7c5: 0x6c10ec20, 0x2d7c6: 0x6c10ee20, 0x2d7c7: 0x6c1e4620,\n\t0x2d7c8: 0x6c1e4820, 0x2d7c9: 0x6c1e4a20, 0x2d7ca: 0x6c1e4c20, 0x2d7cb: 0x6c1e4e20,\n\t0x2d7cc: 0x6c1e5020, 0x2d7cd: 0x6c1e5220, 0x2d7ce: 0x6c1e5420, 0x2d7cf: 0x6c1e5620,\n\t0x2d7d0: 0x6c1e5820, 0x2d7d1: 0x6c1e5a20, 0x2d7d2: 0x6c1e5c20, 0x2d7d3: 0x6c1e5e20,\n\t0x2d7d4: 0x6c1e6020, 0x2d7d5: 0x6c320220, 0x2d7d6: 0x6c320420, 0x2d7d7: 0x6c320620,\n\t0x2d7d8: 0x6c31f020, 0x2d7d9: 0x6c320820, 0x2d7da: 0x6c320a20, 0x2d7db: 0x6c4c6620,\n\t0x2d7dc: 0x6c320c20, 0x2d7dd: 0x6c320e20, 0x2d7de: 0x6c321020, 0x2d7df: 0x6c321220,\n\t0x2d7e0: 0x6c4c7620, 0x2d7e1: 0x6c4c7820, 0x2d7e2: 0x6c4c7a20, 0x2d7e3: 0x6c4c7c20,\n\t0x2d7e4: 0x6c4c7e20, 0x2d7e5: 0x6c4c8020, 0x2d7e6: 0x6c4c8220, 0x2d7e7: 0x6c6e6a20,\n\t0x2d7e8: 0x6c6e6c20, 0x2d7e9: 0x6c6e6e20, 0x2d7ea: 0x6c6e7020, 0x2d7eb: 0x6c6e7220,\n\t0x2d7ec: 0x6c6e7420, 0x2d7ed: 0x6c6e7620, 0x2d7ee: 0x6c6e7820, 0x2d7ef: 0x6c6e7a20,\n\t0x2d7f0: 0x6c4cac20, 0x2d7f1: 0x6c95e220, 0x2d7f2: 0x6c95e420, 0x2d7f3: 0x6c95e620,\n\t0x2d7f4: 0x6c95e820, 0x2d7f5: 0x6c95ea20, 0x2d7f6: 0x6c95ec20, 0x2d7f7: 0x6c95ee20,\n\t0x2d7f8: 0x6c95f020, 0x2d7f9: 0x6c95f220, 0x2d7fa: 0x6c95f420, 0x2d7fb: 0x6c95f620,\n\t0x2d7fc: 0x6c95f820, 0x2d7fd: 0x6cc20c20, 0x2d7fe: 0x6c965020, 0x2d7ff: 0x6cc20e20,\n\t// Block 0xb60, offset 0x2d800\n\t0x2d800: 0x6cc21020, 0x2d801: 0x6cc21220, 0x2d802: 0x6cc21420, 0x2d803: 0x6cc21620,\n\t0x2d804: 0x6cc26420, 0x2d805: 0x6cf16c20, 0x2d806: 0x6cf16e20, 0x2d807: 0x6cf17020,\n\t0x2d808: 0x6cf17220, 0x2d809: 0x6cf17420, 0x2d80a: 0x6cc21820, 0x2d80b: 0x6cf17620,\n\t0x2d80c: 0x6cf17820, 0x2d80d: 0x6d211e20, 0x2d80e: 0x6d212020, 0x2d80f: 0x6d212220,\n\t0x2d810: 0x6d212420, 0x2d811: 0x6d212620, 0x2d812: 0x6d212820, 0x2d813: 0x6d212a20,\n\t0x2d814: 0x6d212c20, 0x2d815: 0x6d212e20, 0x2d816: 0x6d213020, 0x2d817: 0x6d213220,\n\t0x2d818: 0x6d213420, 0x2d819: 0x6d216c20, 0x2d81a: 0x6d4ebc20, 0x2d81b: 0x6d4ebe20,\n\t0x2d81c: 0x6d216e20, 0x2d81d: 0x6d4ec020, 0x2d81e: 0x6d4ec220, 0x2d81f: 0x6d4ec420,\n\t0x2d820: 0x6d4ec620, 0x2d821: 0x6d4ec820, 0x2d822: 0x6d4eca20, 0x2d823: 0x6d4ecc20,\n\t0x2d824: 0x6d4ece20, 0x2d825: 0x6d7b2e20, 0x2d826: 0x6d7b3020, 0x2d827: 0x6d7b3220,\n\t0x2d828: 0x6d7b3420, 0x2d829: 0x6d7b3620, 0x2d82a: 0x6d7b3820, 0x2d82b: 0x6dc52020,\n\t0x2d82c: 0x6de23220, 0x2d82d: 0x6de23420, 0x2d82e: 0x6df9ee20, 0x2d82f: 0x6df9f020,\n\t0x2d830: 0x6df9f220, 0x2d831: 0x6e0da020, 0x2d832: 0x6e1d1220, 0x2d833: 0x6e388020,\n\t0x2d834: 0x6c01d620, 0x2d835: 0x6c110a20, 0x2d836: 0x6c324220, 0x2d837: 0x6c1e8420,\n\t0x2d838: 0x6c324620, 0x2d839: 0x6c324820, 0x2d83a: 0x6c4cae20, 0x2d83b: 0x6c4cb020,\n\t0x2d83c: 0x6c4cb220, 0x2d83d: 0x6c6eba20, 0x2d83e: 0x6c01d820, 0x2d83f: 0x6c043c20,\n\t// Block 0xb61, offset 0x2d840\n\t0x2d840: 0x6c043e20, 0x2d841: 0x6c08da20, 0x2d842: 0x6c110e20, 0x2d843: 0x6c1e9020,\n\t0x2d844: 0x6c1e9220, 0x2d845: 0x6c1e9420, 0x2d846: 0x6c324c20, 0x2d847: 0x6c4cc220,\n\t0x2d848: 0x6c4cc420, 0x2d849: 0x6c6ec220, 0x2d84a: 0x6d218220, 0x2d84b: 0x6c01dc20,\n\t0x2d84c: 0x6c044220, 0x2d84d: 0x6c08e020, 0x2d84e: 0x6c111620, 0x2d84f: 0x6c111820,\n\t0x2d850: 0x6c111a20, 0x2d851: 0x6cc27a20, 0x2d852: 0x6cf1ba20, 0x2d853: 0x6c01e020,\n\t0x2d854: 0x6c044a20, 0x2d855: 0x6c044c20, 0x2d856: 0x6c044e20, 0x2d857: 0x6c08e220,\n\t0x2d858: 0x6c08e420, 0x2d859: 0x6c112820, 0x2d85a: 0x6c112a20, 0x2d85b: 0x6c112c20,\n\t0x2d85c: 0x6c112e20, 0x2d85d: 0x6c1eb620, 0x2d85e: 0x6c1eb820, 0x2d85f: 0x6c1eba20,\n\t0x2d860: 0x6c1ebc20, 0x2d861: 0x6c326820, 0x2d862: 0x6c326a20, 0x2d863: 0x6c326c20,\n\t0x2d864: 0x6c326e20, 0x2d865: 0x6c327020, 0x2d866: 0x6c327220, 0x2d867: 0x6c327420,\n\t0x2d868: 0x6c327620, 0x2d869: 0x6c327820, 0x2d86a: 0x6c327a20, 0x2d86b: 0x6c4cf820,\n\t0x2d86c: 0x6c4cfa20, 0x2d86d: 0x6c4cfc20, 0x2d86e: 0x6c4cfe20, 0x2d86f: 0x6c4d0020,\n\t0x2d870: 0x6c6edc20, 0x2d871: 0x6c6ede20, 0x2d872: 0x6c6ee020, 0x2d873: 0x6c6ee220,\n\t0x2d874: 0x6c966e20, 0x2d875: 0x6c967020, 0x2d876: 0x6c967220, 0x2d877: 0x6c967420,\n\t0x2d878: 0x6c967620, 0x2d879: 0x6c967820, 0x2d87a: 0x6cc28420, 0x2d87b: 0x6cc28620,\n\t0x2d87c: 0x6cc28820, 0x2d87d: 0x6cc28a20, 0x2d87e: 0x6cc28c20, 0x2d87f: 0x6cf1c820,\n\t// Block 0xb62, offset 0x2d880\n\t0x2d880: 0x6cf1ca20, 0x2d881: 0x6cf1cc20, 0x2d882: 0x6cf1ce20, 0x2d883: 0x6d218620,\n\t0x2d884: 0x6d218820, 0x2d885: 0x6d218a20, 0x2d886: 0x6d21a620, 0x2d887: 0x6d4f0c20,\n\t0x2d888: 0x6d4f0e20, 0x2d889: 0x6d4f1020, 0x2d88a: 0x6d7b6820, 0x2d88b: 0x6d7b6a20,\n\t0x2d88c: 0x6da3aa20, 0x2d88d: 0x6dc54020, 0x2d88e: 0x6e1d2220, 0x2d88f: 0x6e28ca20,\n\t0x2d890: 0x6c01e820, 0x2d891: 0x6c01ea20, 0x2d892: 0x6c08f820, 0x2d893: 0x6c114a20,\n\t0x2d894: 0x6c329c20, 0x2d895: 0x6c329e20, 0x2d896: 0x6c4d2a20, 0x2d897: 0x6c96a020,\n\t0x2d898: 0x6cc2a620, 0x2d899: 0x6cf1e020, 0x2d89a: 0x6cf1e220, 0x2d89b: 0x6d7b7a20,\n\t0x2d89c: 0x6d7b7c20, 0x2d89d: 0x6dc54e20, 0x2d89e: 0x6dc55020, 0x2d89f: 0x6de26820,\n\t0x2d8a0: 0x6e3d2420, 0x2d8a1: 0x6c01ec20, 0x2d8a2: 0x6c1ee020, 0x2d8a3: 0x6c1ee220,\n\t0x2d8a4: 0x6c1ee420, 0x2d8a5: 0x6c4d3420, 0x2d8a6: 0x6c4d3620, 0x2d8a7: 0x6c6f0020,\n\t0x2d8a8: 0x6c6f0220, 0x2d8a9: 0x6c96ac20, 0x2d8aa: 0x6cae2020, 0x2d8ab: 0x6c96ae20,\n\t0x2d8ac: 0x6c96b020, 0x2d8ad: 0x6cc2b220, 0x2d8ae: 0x6cf1ea20, 0x2d8af: 0x6d21b420,\n\t0x2d8b0: 0x6d21b620, 0x2d8b1: 0x6d4f2820, 0x2d8b2: 0x6e1d2820, 0x2d8b3: 0x6c01ee20,\n\t0x2d8b4: 0x6c116220, 0x2d8b5: 0x6c116420, 0x2d8b6: 0x6c1eee20, 0x2d8b7: 0x6c1ef020,\n\t0x2d8b8: 0x6c1ef220, 0x2d8b9: 0x6c1ef420, 0x2d8ba: 0x6c1ef620, 0x2d8bb: 0x6c1ef820,\n\t0x2d8bc: 0x6c32b820, 0x2d8bd: 0x6c32ba20, 0x2d8be: 0x6c32bc20, 0x2d8bf: 0x6c32be20,\n\t// Block 0xb63, offset 0x2d8c0\n\t0x2d8c0: 0x6c32c020, 0x2d8c1: 0x6c32c220, 0x2d8c2: 0x6c32c420, 0x2d8c3: 0x6c32c620,\n\t0x2d8c4: 0x6c32c820, 0x2d8c5: 0x6c4d4c20, 0x2d8c6: 0x6c4d4e20, 0x2d8c7: 0x6c4d5020,\n\t0x2d8c8: 0x6c4d5220, 0x2d8c9: 0x6c4d5420, 0x2d8ca: 0x6c4d5620, 0x2d8cb: 0x6c4d5820,\n\t0x2d8cc: 0x6c4d5a20, 0x2d8cd: 0x6c4d5c20, 0x2d8ce: 0x6c6f1620, 0x2d8cf: 0x6c6f1820,\n\t0x2d8d0: 0x6c6f1a20, 0x2d8d1: 0x6c6f1c20, 0x2d8d2: 0x6c6f1e20, 0x2d8d3: 0x6c6f2020,\n\t0x2d8d4: 0x6c4d5e20, 0x2d8d5: 0x6c6f2220, 0x2d8d6: 0x6c96d220, 0x2d8d7: 0x6c96d420,\n\t0x2d8d8: 0x6c96d620, 0x2d8d9: 0x6c96d820, 0x2d8da: 0x6cc2ca20, 0x2d8db: 0x6c96da20,\n\t0x2d8dc: 0x6c96dc20, 0x2d8dd: 0x6c96de20, 0x2d8de: 0x6c96e020, 0x2d8df: 0x6c96e220,\n\t0x2d8e0: 0x6c96e420, 0x2d8e1: 0x6c96e620, 0x2d8e2: 0x6c96e820, 0x2d8e3: 0x6c96ea20,\n\t0x2d8e4: 0x6c96ec20, 0x2d8e5: 0x6cc2cc20, 0x2d8e6: 0x6cc2ce20, 0x2d8e7: 0x6cc2d020,\n\t0x2d8e8: 0x6cc2d220, 0x2d8e9: 0x6cc2d420, 0x2d8ea: 0x6cc2d620, 0x2d8eb: 0x6cc2d820,\n\t0x2d8ec: 0x6cf1f820, 0x2d8ed: 0x6cf1fa20, 0x2d8ee: 0x6cf1fc20, 0x2d8ef: 0x6cf1fe20,\n\t0x2d8f0: 0x6cf20020, 0x2d8f1: 0x6d21c220, 0x2d8f2: 0x6d4f3a20, 0x2d8f3: 0x6d21c420,\n\t0x2d8f4: 0x6d21c620, 0x2d8f5: 0x6d4f3c20, 0x2d8f6: 0x6d220220, 0x2d8f7: 0x6d4f3e20,\n\t0x2d8f8: 0x6d4f4020, 0x2d8f9: 0x6d4f4220, 0x2d8fa: 0x6d4f4420, 0x2d8fb: 0x6d7b9020,\n\t0x2d8fc: 0x6d7b9220, 0x2d8fd: 0x6da3c220, 0x2d8fe: 0x6da3c420, 0x2d8ff: 0x6de27420,\n\t// Block 0xb64, offset 0x2d900\n\t0x2d900: 0x6dfa1c20, 0x2d901: 0x6dfa1e20, 0x2d902: 0x6e0dba20, 0x2d903: 0x6c046620,\n\t0x2d904: 0x6c01f020, 0x2d905: 0x6c090820, 0x2d906: 0x6c046820, 0x2d907: 0x6c090a20,\n\t0x2d908: 0x6c117020, 0x2d909: 0x6c090c20, 0x2d90a: 0x6c090e20, 0x2d90b: 0x6c117820,\n\t0x2d90c: 0x6c1f2020, 0x2d90d: 0x6c1f2220, 0x2d90e: 0x6c1f2420, 0x2d90f: 0x6c117a20,\n\t0x2d910: 0x6c1f2620, 0x2d911: 0x6c1f2820, 0x2d912: 0x6c1f2a20, 0x2d913: 0x6c117c20,\n\t0x2d914: 0x6c117e20, 0x2d915: 0x6c118020, 0x2d916: 0x6c118220, 0x2d917: 0x6c1f2c20,\n\t0x2d918: 0x6c1f2e20, 0x2d919: 0x6c118420, 0x2d91a: 0x6c118620, 0x2d91b: 0x6c118820,\n\t0x2d91c: 0x6c1f3020, 0x2d91d: 0x6c32e620, 0x2d91e: 0x6c32e820, 0x2d91f: 0x6c1f4220,\n\t0x2d920: 0x6c32ea20, 0x2d921: 0x6c1f4420, 0x2d922: 0x6c32ec20, 0x2d923: 0x6c1f4620,\n\t0x2d924: 0x6c1f4820, 0x2d925: 0x6c32ee20, 0x2d926: 0x6c1f4a20, 0x2d927: 0x6c1f4c20,\n\t0x2d928: 0x6c1f4e20, 0x2d929: 0x6c32f020, 0x2d92a: 0x6c1f5020, 0x2d92b: 0x6c1f5220,\n\t0x2d92c: 0x6c1f5420, 0x2d92d: 0x6c1f5620, 0x2d92e: 0x6c1f5820, 0x2d92f: 0x6c1f5a20,\n\t0x2d930: 0x6c1f5c20, 0x2d931: 0x6c1f5e20, 0x2d932: 0x6c1f6020, 0x2d933: 0x6c1f6220,\n\t0x2d934: 0x6c1f6420, 0x2d935: 0x6c32f220, 0x2d936: 0x6c1f6620, 0x2d937: 0x6c1f6820,\n\t0x2d938: 0x6c1f6a20, 0x2d939: 0x6c1f6c20, 0x2d93a: 0x6c1f6e20, 0x2d93b: 0x6c1f7020,\n\t0x2d93c: 0x6c1f7220, 0x2d93d: 0x6c32f420, 0x2d93e: 0x6c1f7420, 0x2d93f: 0x6c32f620,\n\t// Block 0xb65, offset 0x2d940\n\t0x2d940: 0x6c1f7620, 0x2d941: 0x6c32f820, 0x2d942: 0x6c32fa20, 0x2d943: 0x6c1f7820,\n\t0x2d944: 0x6c1f7a20, 0x2d945: 0x6c1f7c20, 0x2d946: 0x6c1f7e20, 0x2d947: 0x6c331020,\n\t0x2d948: 0x6c331220, 0x2d949: 0x6c331420, 0x2d94a: 0x6c331620, 0x2d94b: 0x6c331820,\n\t0x2d94c: 0x6c331a20, 0x2d94d: 0x6c331c20, 0x2d94e: 0x6c4d8420, 0x2d94f: 0x6c331e20,\n\t0x2d950: 0x6c332020, 0x2d951: 0x6c332220, 0x2d952: 0x6c4d8620, 0x2d953: 0x6c332420,\n\t0x2d954: 0x6c332620, 0x2d955: 0x6c332820, 0x2d956: 0x6c332a20, 0x2d957: 0x6c332c20,\n\t0x2d958: 0x6c4d8820, 0x2d959: 0x6c332e20, 0x2d95a: 0x6c333020, 0x2d95b: 0x6c333220,\n\t0x2d95c: 0x6c333420, 0x2d95d: 0x6c4d8a20, 0x2d95e: 0x6c333620, 0x2d95f: 0x6c333820,\n\t0x2d960: 0x6c4d8c20, 0x2d961: 0x6c333a20, 0x2d962: 0x6c333c20, 0x2d963: 0x6c4d8e20,\n\t0x2d964: 0x6c4d9020, 0x2d965: 0x6c4d9220, 0x2d966: 0x6c333e20, 0x2d967: 0x6c334020,\n\t0x2d968: 0x6c4d9420, 0x2d969: 0x6c334220, 0x2d96a: 0x6c334420, 0x2d96b: 0x6c334620,\n\t0x2d96c: 0x6c334820, 0x2d96d: 0x6c334a20, 0x2d96e: 0x6c334c20, 0x2d96f: 0x6c334e20,\n\t0x2d970: 0x6c335020, 0x2d971: 0x6c4d9620, 0x2d972: 0x6c335220, 0x2d973: 0x6c335420,\n\t0x2d974: 0x6c335620, 0x2d975: 0x6c335820, 0x2d976: 0x6c335a20, 0x2d977: 0x6c4d9820,\n\t0x2d978: 0x6c4d9a20, 0x2d979: 0x6c4d9c20, 0x2d97a: 0x6c335c20, 0x2d97b: 0x6c4d9e20,\n\t0x2d97c: 0x6c4da020, 0x2d97d: 0x6c335e20, 0x2d97e: 0x6c336020, 0x2d97f: 0x6c336220,\n\t// Block 0xb66, offset 0x2d980\n\t0x2d980: 0x6c4dc020, 0x2d981: 0x6c6f6220, 0x2d982: 0x6c4dc220, 0x2d983: 0x6c4dc420,\n\t0x2d984: 0x6c4dc620, 0x2d985: 0x6c4dc820, 0x2d986: 0x6c4dca20, 0x2d987: 0x6c4dcc20,\n\t0x2d988: 0x6c4dce20, 0x2d989: 0x6c4dd020, 0x2d98a: 0x6c4dd220, 0x2d98b: 0x6c6f6420,\n\t0x2d98c: 0x6c4dd420, 0x2d98d: 0x6c4dd620, 0x2d98e: 0x6c4dd820, 0x2d98f: 0x6c6f6620,\n\t0x2d990: 0x6c6f6820, 0x2d991: 0x6c4dda20, 0x2d992: 0x6c4ddc20, 0x2d993: 0x6c4dde20,\n\t0x2d994: 0x6c4de020, 0x2d995: 0x6c6f6a20, 0x2d996: 0x6c6f6c20, 0x2d997: 0x6c4de220,\n\t0x2d998: 0x6c4de420, 0x2d999: 0x6c6f6e20, 0x2d99a: 0x6c6f7020, 0x2d99b: 0x6c4de620,\n\t0x2d99c: 0x6c4de820, 0x2d99d: 0x6c6f7220, 0x2d99e: 0x6c4dea20, 0x2d99f: 0x6c4dec20,\n\t0x2d9a0: 0x6c4dee20, 0x2d9a1: 0x6c4df020, 0x2d9a2: 0x6c4df220, 0x2d9a3: 0x6c6f7420,\n\t0x2d9a4: 0x6c4df420, 0x2d9a5: 0x6c6f7620, 0x2d9a6: 0x6c4df620, 0x2d9a7: 0x6c6f7820,\n\t0x2d9a8: 0x6c4df820, 0x2d9a9: 0x6c6f7a20, 0x2d9aa: 0x6c4dfa20, 0x2d9ab: 0x6c4dfc20,\n\t0x2d9ac: 0x6c4dfe20, 0x2d9ad: 0x6c6f7c20, 0x2d9ae: 0x6c4e0020, 0x2d9af: 0x6c6f7e20,\n\t0x2d9b0: 0x6c4e0220, 0x2d9b1: 0x6c4e0420, 0x2d9b2: 0x6c4e0620, 0x2d9b3: 0x6c6f8020,\n\t0x2d9b4: 0x6c6f8220, 0x2d9b5: 0x6c6f8420, 0x2d9b6: 0x6c6f8620, 0x2d9b7: 0x6c6f8820,\n\t0x2d9b8: 0x6c4e0820, 0x2d9b9: 0x6c4e0a20, 0x2d9ba: 0x6c4e0c20, 0x2d9bb: 0x6c4e0e20,\n\t0x2d9bc: 0x6c4e1020, 0x2d9bd: 0x6c4e1220, 0x2d9be: 0x6c6f9e20, 0x2d9bf: 0x6c973820,\n\t// Block 0xb67, offset 0x2d9c0\n\t0x2d9c0: 0x6c6fa020, 0x2d9c1: 0x6c6fa220, 0x2d9c2: 0x6c6fa420, 0x2d9c3: 0x6c6fa620,\n\t0x2d9c4: 0x6c6fa820, 0x2d9c5: 0x6c6faa20, 0x2d9c6: 0x6c973a20, 0x2d9c7: 0x6c6fac20,\n\t0x2d9c8: 0x6c6fae20, 0x2d9c9: 0x6c973c20, 0x2d9ca: 0x6c973e20, 0x2d9cb: 0x6c6fb020,\n\t0x2d9cc: 0x6c6fb220, 0x2d9cd: 0x6c6fb420, 0x2d9ce: 0x6c6fb620, 0x2d9cf: 0x6c6fb820,\n\t0x2d9d0: 0x6c974020, 0x2d9d1: 0x6c6fba20, 0x2d9d2: 0x6c6fbc20, 0x2d9d3: 0x6c6fbe20,\n\t0x2d9d4: 0x6c6fc020, 0x2d9d5: 0x6c6fc220, 0x2d9d6: 0x6c6fc420, 0x2d9d7: 0x6c6fc620,\n\t0x2d9d8: 0x6c974220, 0x2d9d9: 0x6c6fc820, 0x2d9da: 0x6c6fca20, 0x2d9db: 0x6c6fcc20,\n\t0x2d9dc: 0x6c6fce20, 0x2d9dd: 0x6c6fd020, 0x2d9de: 0x6c6fd220, 0x2d9df: 0x6c6fd420,\n\t0x2d9e0: 0x6c974420, 0x2d9e1: 0x6c974620, 0x2d9e2: 0x6c6fd620, 0x2d9e3: 0x6c974820,\n\t0x2d9e4: 0x6c974a20, 0x2d9e5: 0x6c974c20, 0x2d9e6: 0x6c6fd820, 0x2d9e7: 0x6c6fda20,\n\t0x2d9e8: 0x6c974e20, 0x2d9e9: 0x6c6fdc20, 0x2d9ea: 0x6c975020, 0x2d9eb: 0x6c975220,\n\t0x2d9ec: 0x6c975420, 0x2d9ed: 0x6c6fde20, 0x2d9ee: 0x6c6fe020, 0x2d9ef: 0x6c6fe220,\n\t0x2d9f0: 0x6c977e20, 0x2d9f1: 0x6c978020, 0x2d9f2: 0x6cc31420, 0x2d9f3: 0x6cc31620,\n\t0x2d9f4: 0x6c978220, 0x2d9f5: 0x6c978420, 0x2d9f6: 0x6cc31820, 0x2d9f7: 0x6c978620,\n\t0x2d9f8: 0x6c978820, 0x2d9f9: 0x6cc31a20, 0x2d9fa: 0x6c978a20, 0x2d9fb: 0x6c978c20,\n\t0x2d9fc: 0x6c978e20, 0x2d9fd: 0x6c979020, 0x2d9fe: 0x6c979220, 0x2d9ff: 0x6c979420,\n\t// Block 0xb68, offset 0x2da00\n\t0x2da00: 0x6c979620, 0x2da01: 0x6cc31c20, 0x2da02: 0x6c979820, 0x2da03: 0x6c979a20,\n\t0x2da04: 0x6cc31e20, 0x2da05: 0x6c979c20, 0x2da06: 0x6c979e20, 0x2da07: 0x6c97a020,\n\t0x2da08: 0x6c97a220, 0x2da09: 0x6cc32020, 0x2da0a: 0x6c97a420, 0x2da0b: 0x6c97a620,\n\t0x2da0c: 0x6cc32220, 0x2da0d: 0x6c97a820, 0x2da0e: 0x6cc32420, 0x2da0f: 0x6c97aa20,\n\t0x2da10: 0x6c97ac20, 0x2da11: 0x6cc32620, 0x2da12: 0x6cc32820, 0x2da13: 0x6c97ae20,\n\t0x2da14: 0x6c97b020, 0x2da15: 0x6c97b220, 0x2da16: 0x6cc32a20, 0x2da17: 0x6c97b420,\n\t0x2da18: 0x6c97b620, 0x2da19: 0x6c97b820, 0x2da1a: 0x6c97ba20, 0x2da1b: 0x6c97bc20,\n\t0x2da1c: 0x6c97be20, 0x2da1d: 0x6c97c020, 0x2da1e: 0x6c97c220, 0x2da1f: 0x6c97c420,\n\t0x2da20: 0x6cc32c20, 0x2da21: 0x6cc32e20, 0x2da22: 0x6cc33020, 0x2da23: 0x6cc33220,\n\t0x2da24: 0x6c97c620, 0x2da25: 0x6cc33420, 0x2da26: 0x6c97c820, 0x2da27: 0x6c97ca20,\n\t0x2da28: 0x6c97cc20, 0x2da29: 0x6cc33620, 0x2da2a: 0x6cc33820, 0x2da2b: 0x6cc33a20,\n\t0x2da2c: 0x6c97ce20, 0x2da2d: 0x6c97d020, 0x2da2e: 0x6c97d220, 0x2da2f: 0x6c97d420,\n\t0x2da30: 0x6cc35820, 0x2da31: 0x6cc35a20, 0x2da32: 0x6cc35c20, 0x2da33: 0x6cf24a20,\n\t0x2da34: 0x6cc35e20, 0x2da35: 0x6cc36020, 0x2da36: 0x6cc36220, 0x2da37: 0x6cf24c20,\n\t0x2da38: 0x6cc36420, 0x2da39: 0x6cf24e20, 0x2da3a: 0x6cc36620, 0x2da3b: 0x6cc36820,\n\t0x2da3c: 0x6cc36a20, 0x2da3d: 0x6cc36c20, 0x2da3e: 0x6cc36e20, 0x2da3f: 0x6cc37020,\n\t// Block 0xb69, offset 0x2da40\n\t0x2da40: 0x6cc37220, 0x2da41: 0x6cf25020, 0x2da42: 0x6cf25220, 0x2da43: 0x6cc37420,\n\t0x2da44: 0x6cc37620, 0x2da45: 0x6cc37820, 0x2da46: 0x6cf25420, 0x2da47: 0x6cc37a20,\n\t0x2da48: 0x6cf25620, 0x2da49: 0x6cc37c20, 0x2da4a: 0x6cc37e20, 0x2da4b: 0x6cc38020,\n\t0x2da4c: 0x6cc38220, 0x2da4d: 0x6cf25820, 0x2da4e: 0x6cc38420, 0x2da4f: 0x6cf25a20,\n\t0x2da50: 0x6cc38620, 0x2da51: 0x6cc38820, 0x2da52: 0x6cc38a20, 0x2da53: 0x6cc38c20,\n\t0x2da54: 0x6cc38e20, 0x2da55: 0x6cc39020, 0x2da56: 0x6cc39220, 0x2da57: 0x6cf25c20,\n\t0x2da58: 0x6cc39420, 0x2da59: 0x6cf25e20, 0x2da5a: 0x6cf26020, 0x2da5b: 0x6cf26220,\n\t0x2da5c: 0x6cc39620, 0x2da5d: 0x6cc39820, 0x2da5e: 0x6cc39a20, 0x2da5f: 0x6cf26420,\n\t0x2da60: 0x6cc39c20, 0x2da61: 0x6cc39e20, 0x2da62: 0x6cc3a020, 0x2da63: 0x6cc3a220,\n\t0x2da64: 0x6cc3a420, 0x2da65: 0x6cc3a620, 0x2da66: 0x6cc3a820, 0x2da67: 0x6cf27820,\n\t0x2da68: 0x6d221220, 0x2da69: 0x6cf27a20, 0x2da6a: 0x6cf27c20, 0x2da6b: 0x6cf27e20,\n\t0x2da6c: 0x6d221420, 0x2da6d: 0x6cf28020, 0x2da6e: 0x6cf28220, 0x2da6f: 0x6cf28420,\n\t0x2da70: 0x6cf28620, 0x2da71: 0x6cf28820, 0x2da72: 0x6cf28a20, 0x2da73: 0x6d221620,\n\t0x2da74: 0x6cf28c20, 0x2da75: 0x6cf28e20, 0x2da76: 0x6cf29020, 0x2da77: 0x6cf29220,\n\t0x2da78: 0x6d221820, 0x2da79: 0x6cf29420, 0x2da7a: 0x6cf29620, 0x2da7b: 0x6d221a20,\n\t0x2da7c: 0x6cf29820, 0x2da7d: 0x6cf29a20, 0x2da7e: 0x6cf29c20, 0x2da7f: 0x6d221c20,\n\t// Block 0xb6a, offset 0x2da80\n\t0x2da80: 0x6cf29e20, 0x2da81: 0x6d221e20, 0x2da82: 0x6d222020, 0x2da83: 0x6cf2a020,\n\t0x2da84: 0x6cf2a220, 0x2da85: 0x6cf2a420, 0x2da86: 0x6cf2a620, 0x2da87: 0x6d222220,\n\t0x2da88: 0x6d222420, 0x2da89: 0x6cf2a820, 0x2da8a: 0x6cf2aa20, 0x2da8b: 0x6d222620,\n\t0x2da8c: 0x6cf2ac20, 0x2da8d: 0x6cf2ae20, 0x2da8e: 0x6cf2b020, 0x2da8f: 0x6cf2b220,\n\t0x2da90: 0x6d222820, 0x2da91: 0x6cf2b420, 0x2da92: 0x6d223c20, 0x2da93: 0x6d223e20,\n\t0x2da94: 0x6d224020, 0x2da95: 0x6d4f6c20, 0x2da96: 0x6d224220, 0x2da97: 0x6d4f6e20,\n\t0x2da98: 0x6d224420, 0x2da99: 0x6d4f7020, 0x2da9a: 0x6d224620, 0x2da9b: 0x6d224820,\n\t0x2da9c: 0x6d4f7220, 0x2da9d: 0x6d4f7420, 0x2da9e: 0x6d224a20, 0x2da9f: 0x6d224c20,\n\t0x2daa0: 0x6d224e20, 0x2daa1: 0x6d225020, 0x2daa2: 0x6d225220, 0x2daa3: 0x6d225420,\n\t0x2daa4: 0x6d4f7620, 0x2daa5: 0x6d225620, 0x2daa6: 0x6d4f7820, 0x2daa7: 0x6d4f7a20,\n\t0x2daa8: 0x6cc3aa20, 0x2daa9: 0x6d225820, 0x2daaa: 0x6d225a20, 0x2daab: 0x6d4f7c20,\n\t0x2daac: 0x6d225c20, 0x2daad: 0x6d4fb020, 0x2daae: 0x6d4f7e20, 0x2daaf: 0x6d225e20,\n\t0x2dab0: 0x6d4f8020, 0x2dab1: 0x6d226020, 0x2dab2: 0x6d226220, 0x2dab3: 0x6d226420,\n\t0x2dab4: 0x6d226620, 0x2dab5: 0x6d226820, 0x2dab6: 0x6d4f8220, 0x2dab7: 0x6d226a20,\n\t0x2dab8: 0x6d4f8420, 0x2dab9: 0x6d4f8620, 0x2daba: 0x6d226c20, 0x2dabb: 0x6d226e20,\n\t0x2dabc: 0x6d4f8820, 0x2dabd: 0x6d227020, 0x2dabe: 0x6d4f8a20, 0x2dabf: 0x6d4f8c20,\n\t// Block 0xb6b, offset 0x2dac0\n\t0x2dac0: 0x6d227220, 0x2dac1: 0x6d227420, 0x2dac2: 0x6d4f8e20, 0x2dac3: 0x6d4f9020,\n\t0x2dac4: 0x6d4f9220, 0x2dac5: 0x6d4f9420, 0x2dac6: 0x6d227620, 0x2dac7: 0x6d4f9620,\n\t0x2dac8: 0x6d227820, 0x2dac9: 0x6d4fb220, 0x2daca: 0x6d7bb620, 0x2dacb: 0x6d4fb420,\n\t0x2dacc: 0x6d7bb820, 0x2dacd: 0x6d4fb620, 0x2dace: 0x6d4fb820, 0x2dacf: 0x6d4fba20,\n\t0x2dad0: 0x6d4fbc20, 0x2dad1: 0x6d7bba20, 0x2dad2: 0x6d4fbe20, 0x2dad3: 0x6d4fc020,\n\t0x2dad4: 0x6d4fc220, 0x2dad5: 0x6d4fc420, 0x2dad6: 0x6d7bbc20, 0x2dad7: 0x6d7bbe20,\n\t0x2dad8: 0x6d4fc620, 0x2dad9: 0x6d7bc020, 0x2dada: 0x6d4fc820, 0x2dadb: 0x6d4fca20,\n\t0x2dadc: 0x6d4fcc20, 0x2dadd: 0x6d7bc220, 0x2dade: 0x6d4fce20, 0x2dadf: 0x6d4fd020,\n\t0x2dae0: 0x6d7bc420, 0x2dae1: 0x6d4fd220, 0x2dae2: 0x6d4fd420, 0x2dae3: 0x6d4fd620,\n\t0x2dae4: 0x6d4fd820, 0x2dae5: 0x6d7bc620, 0x2dae6: 0x6d4fda20, 0x2dae7: 0x6d4fdc20,\n\t0x2dae8: 0x6d7bc820, 0x2dae9: 0x6d7bca20, 0x2daea: 0x6d4fde20, 0x2daeb: 0x6d4fe020,\n\t0x2daec: 0x6d4fe220, 0x2daed: 0x6d4fe420, 0x2daee: 0x6d4fe620, 0x2daef: 0x6d4fe820,\n\t0x2daf0: 0x6d4fea20, 0x2daf1: 0x6d4fec20, 0x2daf2: 0x6d7bcc20, 0x2daf3: 0x6d4fee20,\n\t0x2daf4: 0x6d7bd220, 0x2daf5: 0x6da3d620, 0x2daf6: 0x6d7bd420, 0x2daf7: 0x6d7bd620,\n\t0x2daf8: 0x6d7bd820, 0x2daf9: 0x6d7bda20, 0x2dafa: 0x6d7bdc20, 0x2dafb: 0x6d7c8e20,\n\t0x2dafc: 0x6da3d820, 0x2dafd: 0x6d7bde20, 0x2dafe: 0x6d7be020, 0x2daff: 0x6d7be220,\n\t// Block 0xb6c, offset 0x2db00\n\t0x2db00: 0x6d7be420, 0x2db01: 0x6d7be620, 0x2db02: 0x6da3da20, 0x2db03: 0x6da3dc20,\n\t0x2db04: 0x6d7be820, 0x2db05: 0x6d7bea20, 0x2db06: 0x6d7bec20, 0x2db07: 0x6da3de20,\n\t0x2db08: 0x6d7bee20, 0x2db09: 0x6da3e020, 0x2db0a: 0x6d7bf020, 0x2db0b: 0x6da3e220,\n\t0x2db0c: 0x6d7bf220, 0x2db0d: 0x6d7bf420, 0x2db0e: 0x6d7bf620, 0x2db0f: 0x6d7bf820,\n\t0x2db10: 0x6d7bfa20, 0x2db11: 0x6da3e420, 0x2db12: 0x6d7bfc20, 0x2db13: 0x6d7bfe20,\n\t0x2db14: 0x6d7c0020, 0x2db15: 0x6dc57e20, 0x2db16: 0x6dc58020, 0x2db17: 0x6da3ea20,\n\t0x2db18: 0x6dc58220, 0x2db19: 0x6da3ec20, 0x2db1a: 0x6da3ee20, 0x2db1b: 0x6da3f020,\n\t0x2db1c: 0x6da3f220, 0x2db1d: 0x6da3f420, 0x2db1e: 0x6da3f620, 0x2db1f: 0x6dc58420,\n\t0x2db20: 0x6da3f820, 0x2db21: 0x6da3fa20, 0x2db22: 0x6da3fc20, 0x2db23: 0x6dc58620,\n\t0x2db24: 0x6da3fe20, 0x2db25: 0x6da40020, 0x2db26: 0x6da40220, 0x2db27: 0x6da40420,\n\t0x2db28: 0x6da40620, 0x2db29: 0x6dc58c20, 0x2db2a: 0x6dc58e20, 0x2db2b: 0x6dc59020,\n\t0x2db2c: 0x6de27e20, 0x2db2d: 0x6dc59220, 0x2db2e: 0x6dc59420, 0x2db2f: 0x6de28020,\n\t0x2db30: 0x6dc59620, 0x2db31: 0x6dc59820, 0x2db32: 0x6de28220, 0x2db33: 0x6dc59a20,\n\t0x2db34: 0x6dc59c20, 0x2db35: 0x6de28a20, 0x2db36: 0x6de28c20, 0x2db37: 0x6de28e20,\n\t0x2db38: 0x6dfa2e20, 0x2db39: 0x6dfa3620, 0x2db3a: 0x6dfa3820, 0x2db3b: 0x6de2de20,\n\t0x2db3c: 0x6e0dc020, 0x2db3d: 0x6e0dc220, 0x2db3e: 0x6e0dc420, 0x2db3f: 0x6e1d3220,\n\t// Block 0xb6d, offset 0x2db40\n\t0x2db40: 0x6e28d020, 0x2db41: 0x6e28d220, 0x2db42: 0x6e1d3820, 0x2db43: 0x6e28d420,\n\t0x2db44: 0x6e28d620, 0x2db45: 0x6e388a20, 0x2db46: 0x6e388c20, 0x2db47: 0x6e429820,\n\t0x2db48: 0x6c046c20, 0x2db49: 0x6c092020, 0x2db4a: 0x6c092220, 0x2db4b: 0x6c092420,\n\t0x2db4c: 0x6c11ba20, 0x2db4d: 0x6c11bc20, 0x2db4e: 0x6c11be20, 0x2db4f: 0x6c11c020,\n\t0x2db50: 0x6c11c220, 0x2db51: 0x6c200020, 0x2db52: 0x6c200220, 0x2db53: 0x6c200420,\n\t0x2db54: 0x6c33e220, 0x2db55: 0x6c33e420, 0x2db56: 0x6c33e620, 0x2db57: 0x6c33e820,\n\t0x2db58: 0x6c4ea020, 0x2db59: 0x6c709c20, 0x2db5a: 0x6c98b820, 0x2db5b: 0x6c98ba20,\n\t0x2db5c: 0x6c98bc20, 0x2db5d: 0x6c98be20, 0x2db5e: 0x6cc49020, 0x2db5f: 0x6cc49220,\n\t0x2db60: 0x6cf37820, 0x2db61: 0x6cf37a20, 0x2db62: 0x6cf37c20, 0x2db63: 0x6cf37e20,\n\t0x2db64: 0x6cf38020, 0x2db65: 0x6cf38220, 0x2db66: 0x6cf37420, 0x2db67: 0x6d233420,\n\t0x2db68: 0x6d233620, 0x2db69: 0x6d233820, 0x2db6a: 0x6d233a20, 0x2db6b: 0x6d233c20,\n\t0x2db6c: 0x6d233e20, 0x2db6d: 0x6d50c220, 0x2db6e: 0x6d50c420, 0x2db6f: 0x6d50c620,\n\t0x2db70: 0x6d7c9220, 0x2db71: 0x6d7c9020, 0x2db72: 0x6da46a20, 0x2db73: 0x6dc60020,\n\t0x2db74: 0x6da46c20, 0x2db75: 0x6e1d5220, 0x2db76: 0x6c046e20, 0x2db77: 0x6c047020,\n\t0x2db78: 0x6c047220, 0x2db79: 0x6c092c20, 0x2db7a: 0x6c201820, 0x2db7b: 0x6c201a20,\n\t0x2db7c: 0x6c201c20, 0x2db7d: 0x6c340620, 0x2db7e: 0x6c340820, 0x2db7f: 0x6c340a20,\n\t// Block 0xb6e, offset 0x2db80\n\t0x2db80: 0x6c340c20, 0x2db81: 0x6c4ecc20, 0x2db82: 0x6c4ece20, 0x2db83: 0x6c4ed020,\n\t0x2db84: 0x6c70b220, 0x2db85: 0x6c70b420, 0x2db86: 0x6c70b620, 0x2db87: 0x6c70b820,\n\t0x2db88: 0x6c98d620, 0x2db89: 0x6cc4ae20, 0x2db8a: 0x6cc4b020, 0x2db8b: 0x6c047420,\n\t0x2db8c: 0x6c01f420, 0x2db8d: 0x6c01f620, 0x2db8e: 0x6c047620, 0x2db8f: 0x6c095020,\n\t0x2db90: 0x6c093820, 0x2db91: 0x6c093a20, 0x2db92: 0x6c093c20, 0x2db93: 0x6c093e20,\n\t0x2db94: 0x6c094020, 0x2db95: 0x6c094220, 0x2db96: 0x6c094420, 0x2db97: 0x6c11dc20,\n\t0x2db98: 0x6c11de20, 0x2db99: 0x6c11e020, 0x2db9a: 0x6c11e220, 0x2db9b: 0x6c11e420,\n\t0x2db9c: 0x6c11e620, 0x2db9d: 0x6c11e820, 0x2db9e: 0x6c11ea20, 0x2db9f: 0x6c123420,\n\t0x2dba0: 0x6c11ec20, 0x2dba1: 0x6c11ee20, 0x2dba2: 0x6c11f020, 0x2dba3: 0x6c11f220,\n\t0x2dba4: 0x6c11f420, 0x2dba5: 0x6c11f620, 0x2dba6: 0x6c11f820, 0x2dba7: 0x6c11fa20,\n\t0x2dba8: 0x6c11fc20, 0x2dba9: 0x6c11fe20, 0x2dbaa: 0x6c120020, 0x2dbab: 0x6c120220,\n\t0x2dbac: 0x6c120420, 0x2dbad: 0x6c203a20, 0x2dbae: 0x6c203c20, 0x2dbaf: 0x6c203e20,\n\t0x2dbb0: 0x6c204020, 0x2dbb1: 0x6c204220, 0x2dbb2: 0x6c204420, 0x2dbb3: 0x6c204620,\n\t0x2dbb4: 0x6c204820, 0x2dbb5: 0x6c204a20, 0x2dbb6: 0x6c204c20, 0x2dbb7: 0x6c204e20,\n\t0x2dbb8: 0x6c211820, 0x2dbb9: 0x6c205020, 0x2dbba: 0x6c205220, 0x2dbbb: 0x6c205420,\n\t0x2dbbc: 0x6c205620, 0x2dbbd: 0x6c205820, 0x2dbbe: 0x6c205a20, 0x2dbbf: 0x6c341c20,\n\t// Block 0xb6f, offset 0x2dbc0\n\t0x2dbc0: 0x6c205c20, 0x2dbc1: 0x6c205e20, 0x2dbc2: 0x6c206020, 0x2dbc3: 0x6c206220,\n\t0x2dbc4: 0x6c206420, 0x2dbc5: 0x6c206620, 0x2dbc6: 0x6c206820, 0x2dbc7: 0x6c206a20,\n\t0x2dbc8: 0x6c206c20, 0x2dbc9: 0x6c206e20, 0x2dbca: 0x6c207020, 0x2dbcb: 0x6c207220,\n\t0x2dbcc: 0x6c207420, 0x2dbcd: 0x6c207620, 0x2dbce: 0x6c207820, 0x2dbcf: 0x6c207a20,\n\t0x2dbd0: 0x6c207c20, 0x2dbd1: 0x6c207e20, 0x2dbd2: 0x6c208020, 0x2dbd3: 0x6c208220,\n\t0x2dbd4: 0x6c208420, 0x2dbd5: 0x6c208620, 0x2dbd6: 0x6c208820, 0x2dbd7: 0x6c208a20,\n\t0x2dbd8: 0x6c208c20, 0x2dbd9: 0x6c208e20, 0x2dbda: 0x6c209020, 0x2dbdb: 0x6c209220,\n\t0x2dbdc: 0x6c209420, 0x2dbdd: 0x6c209620, 0x2dbde: 0x6c209820, 0x2dbdf: 0x6c209a20,\n\t0x2dbe0: 0x6c209c20, 0x2dbe1: 0x6c209e20, 0x2dbe2: 0x6c20a020, 0x2dbe3: 0x6c20a220,\n\t0x2dbe4: 0x6c20a420, 0x2dbe5: 0x6c20a620, 0x2dbe6: 0x6c343a20, 0x2dbe7: 0x6c343c20,\n\t0x2dbe8: 0x6c343e20, 0x2dbe9: 0x6c344020, 0x2dbea: 0x6c344220, 0x2dbeb: 0x6c344420,\n\t0x2dbec: 0x6c344620, 0x2dbed: 0x6c344820, 0x2dbee: 0x6c344a20, 0x2dbef: 0x6c344c20,\n\t0x2dbf0: 0x6c344e20, 0x2dbf1: 0x6c345020, 0x2dbf2: 0x6c345220, 0x2dbf3: 0x6c345420,\n\t0x2dbf4: 0x6c345620, 0x2dbf5: 0x6c345820, 0x2dbf6: 0x6c345a20, 0x2dbf7: 0x6c345c20,\n\t0x2dbf8: 0x6c345e20, 0x2dbf9: 0x6c346020, 0x2dbfa: 0x6c346220, 0x2dbfb: 0x6c346420,\n\t0x2dbfc: 0x6c346620, 0x2dbfd: 0x6c346820, 0x2dbfe: 0x6c346a20, 0x2dbff: 0x6c346c20,\n\t// Block 0xb70, offset 0x2dc00\n\t0x2dc00: 0x6c346e20, 0x2dc01: 0x6c347020, 0x2dc02: 0x6c347220, 0x2dc03: 0x6c347420,\n\t0x2dc04: 0x6c347620, 0x2dc05: 0x6c347820, 0x2dc06: 0x6c347a20, 0x2dc07: 0x6c347c20,\n\t0x2dc08: 0x6c347e20, 0x2dc09: 0x6c348020, 0x2dc0a: 0x6c348220, 0x2dc0b: 0x6c348420,\n\t0x2dc0c: 0x6c348620, 0x2dc0d: 0x6c348820, 0x2dc0e: 0x6c348a20, 0x2dc0f: 0x6c4ef420,\n\t0x2dc10: 0x6c348c20, 0x2dc11: 0x6c348e20, 0x2dc12: 0x6c349020, 0x2dc13: 0x6c349220,\n\t0x2dc14: 0x6c349420, 0x2dc15: 0x6c349620, 0x2dc16: 0x6c349820, 0x2dc17: 0x6c349a20,\n\t0x2dc18: 0x6c349c20, 0x2dc19: 0x6c349e20, 0x2dc1a: 0x6c34a020, 0x2dc1b: 0x6c34a220,\n\t0x2dc1c: 0x6c4ef620, 0x2dc1d: 0x6c34a420, 0x2dc1e: 0x6c34a620, 0x2dc1f: 0x6c34a820,\n\t0x2dc20: 0x6c34aa20, 0x2dc21: 0x6c34ac20, 0x2dc22: 0x6c34ae20, 0x2dc23: 0x6c34b020,\n\t0x2dc24: 0x6c34b220, 0x2dc25: 0x6c34b420, 0x2dc26: 0x6c34b620, 0x2dc27: 0x6c34b820,\n\t0x2dc28: 0x6c34ba20, 0x2dc29: 0x6c34bc20, 0x2dc2a: 0x6c4f1420, 0x2dc2b: 0x6c4f1620,\n\t0x2dc2c: 0x6c4f1820, 0x2dc2d: 0x6c4f1a20, 0x2dc2e: 0x6c4f1c20, 0x2dc2f: 0x6c4f1e20,\n\t0x2dc30: 0x6c4f2020, 0x2dc31: 0x6c4f2220, 0x2dc32: 0x6c70d020, 0x2dc33: 0x6c70d220,\n\t0x2dc34: 0x6c4f2420, 0x2dc35: 0x6c4f2620, 0x2dc36: 0x6c4f2820, 0x2dc37: 0x6c4f2a20,\n\t0x2dc38: 0x6c4f2c20, 0x2dc39: 0x6c4f2e20, 0x2dc3a: 0x6c4f3020, 0x2dc3b: 0x6c4f3220,\n\t0x2dc3c: 0x6c4f3420, 0x2dc3d: 0x6c4f3620, 0x2dc3e: 0x6c4f3820, 0x2dc3f: 0x6c70d420,\n\t// Block 0xb71, offset 0x2dc40\n\t0x2dc40: 0x6c4f3a20, 0x2dc41: 0x6c4f3c20, 0x2dc42: 0x6c4f3e20, 0x2dc43: 0x6c4f4020,\n\t0x2dc44: 0x6c4f4220, 0x2dc45: 0x6c4f4420, 0x2dc46: 0x6c4f4620, 0x2dc47: 0x6c4f4820,\n\t0x2dc48: 0x6c70d620, 0x2dc49: 0x6c4f4a20, 0x2dc4a: 0x6c4f4c20, 0x2dc4b: 0x6c4f4e20,\n\t0x2dc4c: 0x6c4f5020, 0x2dc4d: 0x6c4f5220, 0x2dc4e: 0x6c4f5420, 0x2dc4f: 0x6c4f5620,\n\t0x2dc50: 0x6c70d820, 0x2dc51: 0x6c4f5820, 0x2dc52: 0x6c4f5a20, 0x2dc53: 0x6c4f5c20,\n\t0x2dc54: 0x6c4f5e20, 0x2dc55: 0x6c4f6020, 0x2dc56: 0x6c4f6220, 0x2dc57: 0x6c4f6420,\n\t0x2dc58: 0x6c4f6620, 0x2dc59: 0x6c70da20, 0x2dc5a: 0x6c70dc20, 0x2dc5b: 0x6c70de20,\n\t0x2dc5c: 0x6c4f6820, 0x2dc5d: 0x6c4f6a20, 0x2dc5e: 0x6c4f6c20, 0x2dc5f: 0x6c4f6e20,\n\t0x2dc60: 0x6c4f7020, 0x2dc61: 0x6c4f7220, 0x2dc62: 0x6c4f7420, 0x2dc63: 0x6c4f7620,\n\t0x2dc64: 0x6c4f7820, 0x2dc65: 0x6c4f7a20, 0x2dc66: 0x6c4f7c20, 0x2dc67: 0x6c4f7e20,\n\t0x2dc68: 0x6c70ec20, 0x2dc69: 0x6c70ee20, 0x2dc6a: 0x6c70f020, 0x2dc6b: 0x6c70f220,\n\t0x2dc6c: 0x6c70f420, 0x2dc6d: 0x6c70f620, 0x2dc6e: 0x6c70f820, 0x2dc6f: 0x6c70fa20,\n\t0x2dc70: 0x6c70fc20, 0x2dc71: 0x6c70fe20, 0x2dc72: 0x6c98e420, 0x2dc73: 0x6c710020,\n\t0x2dc74: 0x6c710220, 0x2dc75: 0x6c710420, 0x2dc76: 0x6c710620, 0x2dc77: 0x6c710820,\n\t0x2dc78: 0x6c710a20, 0x2dc79: 0x6c710c20, 0x2dc7a: 0x6c710e20, 0x2dc7b: 0x6c98e620,\n\t0x2dc7c: 0x6c711020, 0x2dc7d: 0x6c711220, 0x2dc7e: 0x6c711420, 0x2dc7f: 0x6c711620,\n\t// Block 0xb72, offset 0x2dc80\n\t0x2dc80: 0x6c711820, 0x2dc81: 0x6c711a20, 0x2dc82: 0x6c711c20, 0x2dc83: 0x6c711e20,\n\t0x2dc84: 0x6c712020, 0x2dc85: 0x6c712220, 0x2dc86: 0x6c712420, 0x2dc87: 0x6c712620,\n\t0x2dc88: 0x6c712820, 0x2dc89: 0x6c712a20, 0x2dc8a: 0x6c712c20, 0x2dc8b: 0x6c712e20,\n\t0x2dc8c: 0x6c713020, 0x2dc8d: 0x6c713220, 0x2dc8e: 0x6c713420, 0x2dc8f: 0x6c713620,\n\t0x2dc90: 0x6c713820, 0x2dc91: 0x6c713a20, 0x2dc92: 0x6c713c20, 0x2dc93: 0x6c713e20,\n\t0x2dc94: 0x6c714020, 0x2dc95: 0x6c714220, 0x2dc96: 0x6c714420, 0x2dc97: 0x6c714620,\n\t0x2dc98: 0x6c714820, 0x2dc99: 0x6c714a20, 0x2dc9a: 0x6c714c20, 0x2dc9b: 0x6c714e20,\n\t0x2dc9c: 0x6c715020, 0x2dc9d: 0x6c715220, 0x2dc9e: 0x6c715420, 0x2dc9f: 0x6c715620,\n\t0x2dca0: 0x6c715820, 0x2dca1: 0x6c715a20, 0x2dca2: 0x6c715c20, 0x2dca3: 0x6c715e20,\n\t0x2dca4: 0x6c716020, 0x2dca5: 0x6c990620, 0x2dca6: 0x6c990820, 0x2dca7: 0x6c990a20,\n\t0x2dca8: 0x6c990c20, 0x2dca9: 0x6c990e20, 0x2dcaa: 0x6c991020, 0x2dcab: 0x6c991220,\n\t0x2dcac: 0x6c991420, 0x2dcad: 0x6c991620, 0x2dcae: 0x6c991820, 0x2dcaf: 0x6c991a20,\n\t0x2dcb0: 0x6c991c20, 0x2dcb1: 0x6c991e20, 0x2dcb2: 0x6c992020, 0x2dcb3: 0x6c992220,\n\t0x2dcb4: 0x6c992420, 0x2dcb5: 0x6c992620, 0x2dcb6: 0x6c992820, 0x2dcb7: 0x6c992a20,\n\t0x2dcb8: 0x6c992c20, 0x2dcb9: 0x6c992e20, 0x2dcba: 0x6c993020, 0x2dcbb: 0x6c993220,\n\t0x2dcbc: 0x6c993420, 0x2dcbd: 0x6c993620, 0x2dcbe: 0x6c993820, 0x2dcbf: 0x6c993a20,\n\t// Block 0xb73, offset 0x2dcc0\n\t0x2dcc0: 0x6c993c20, 0x2dcc1: 0x6c993e20, 0x2dcc2: 0x6c994020, 0x2dcc3: 0x6c994220,\n\t0x2dcc4: 0x6c994420, 0x2dcc5: 0x6c994620, 0x2dcc6: 0x6c994820, 0x2dcc7: 0x6c994a20,\n\t0x2dcc8: 0x6c994c20, 0x2dcc9: 0x6c994e20, 0x2dcca: 0x6c995020, 0x2dccb: 0x6c995220,\n\t0x2dccc: 0x6cc4be20, 0x2dccd: 0x6c995420, 0x2dcce: 0x6c995620, 0x2dccf: 0x6c995820,\n\t0x2dcd0: 0x6c995a20, 0x2dcd1: 0x6c995c20, 0x2dcd2: 0x6c995e20, 0x2dcd3: 0x6c996020,\n\t0x2dcd4: 0x6cc4c020, 0x2dcd5: 0x6c996220, 0x2dcd6: 0x6c996420, 0x2dcd7: 0x6c996620,\n\t0x2dcd8: 0x6c996820, 0x2dcd9: 0x6c996a20, 0x2dcda: 0x6c996c20, 0x2dcdb: 0x6c996e20,\n\t0x2dcdc: 0x6c997020, 0x2dcdd: 0x6c997220, 0x2dcde: 0x6c997420, 0x2dcdf: 0x6c997620,\n\t0x2dce0: 0x6c997820, 0x2dce1: 0x6c997a20, 0x2dce2: 0x6c997c20, 0x2dce3: 0x6cc4c220,\n\t0x2dce4: 0x6c997e20, 0x2dce5: 0x6c998020, 0x2dce6: 0x6c998220, 0x2dce7: 0x6c998420,\n\t0x2dce8: 0x6c998620, 0x2dce9: 0x6c998820, 0x2dcea: 0x6c998a20, 0x2dceb: 0x6c998c20,\n\t0x2dcec: 0x6c998e20, 0x2dced: 0x6c999020, 0x2dcee: 0x6c999220, 0x2dcef: 0x6c999420,\n\t0x2dcf0: 0x6cc4c420, 0x2dcf1: 0x6cc4c620, 0x2dcf2: 0x6c9a9220, 0x2dcf3: 0x6c999620,\n\t0x2dcf4: 0x6c999820, 0x2dcf5: 0x6c999a20, 0x2dcf6: 0x6c999c20, 0x2dcf7: 0x6c999e20,\n\t0x2dcf8: 0x6c99a020, 0x2dcf9: 0x6c99a220, 0x2dcfa: 0x6c99a420, 0x2dcfb: 0x6c99a620,\n\t0x2dcfc: 0x6c99a820, 0x2dcfd: 0x6c99aa20, 0x2dcfe: 0x6cc4e220, 0x2dcff: 0x6cc4e420,\n\t// Block 0xb74, offset 0x2dd00\n\t0x2dd00: 0x6cc4e620, 0x2dd01: 0x6cc4e820, 0x2dd02: 0x6cc4ea20, 0x2dd03: 0x6cc4ec20,\n\t0x2dd04: 0x6cc4ee20, 0x2dd05: 0x6cf51c20, 0x2dd06: 0x6cc4f020, 0x2dd07: 0x6cc4f220,\n\t0x2dd08: 0x6cc4f420, 0x2dd09: 0x6cc4f620, 0x2dd0a: 0x6cc4f820, 0x2dd0b: 0x6cc4fa20,\n\t0x2dd0c: 0x6cc4fc20, 0x2dd0d: 0x6cc4fe20, 0x2dd0e: 0x6cc50020, 0x2dd0f: 0x6cc50220,\n\t0x2dd10: 0x6cc50420, 0x2dd11: 0x6cc50620, 0x2dd12: 0x6cc50820, 0x2dd13: 0x6cc50a20,\n\t0x2dd14: 0x6cc50c20, 0x2dd15: 0x6cc50e20, 0x2dd16: 0x6cc51020, 0x2dd17: 0x6cc51220,\n\t0x2dd18: 0x6cc51420, 0x2dd19: 0x6cc51620, 0x2dd1a: 0x6cc51820, 0x2dd1b: 0x6cc51a20,\n\t0x2dd1c: 0x6cc51c20, 0x2dd1d: 0x6cc51e20, 0x2dd1e: 0x6cc52020, 0x2dd1f: 0x6cc52220,\n\t0x2dd20: 0x6cc52420, 0x2dd21: 0x6cc52620, 0x2dd22: 0x6cc52820, 0x2dd23: 0x6cc52a20,\n\t0x2dd24: 0x6c722020, 0x2dd25: 0x6cc52c20, 0x2dd26: 0x6cc52e20, 0x2dd27: 0x6cf3ac20,\n\t0x2dd28: 0x6cc53020, 0x2dd29: 0x6cc53220, 0x2dd2a: 0x6cc53420, 0x2dd2b: 0x6cf3ae20,\n\t0x2dd2c: 0x6cc53620, 0x2dd2d: 0x6cc53820, 0x2dd2e: 0x6cc53a20, 0x2dd2f: 0x6cc53c20,\n\t0x2dd30: 0x6cc53e20, 0x2dd31: 0x6cf3b020, 0x2dd32: 0x6cc54020, 0x2dd33: 0x6cc54220,\n\t0x2dd34: 0x6cc54420, 0x2dd35: 0x6cc54620, 0x2dd36: 0x6cc54820, 0x2dd37: 0x6cc54a20,\n\t0x2dd38: 0x6cc54c20, 0x2dd39: 0x6cc54e20, 0x2dd3a: 0x6cc55020, 0x2dd3b: 0x6cc55220,\n\t0x2dd3c: 0x6cc55420, 0x2dd3d: 0x6cc55620, 0x2dd3e: 0x6cc55820, 0x2dd3f: 0x6cc55a20,\n\t// Block 0xb75, offset 0x2dd40\n\t0x2dd40: 0x6cc55c20, 0x2dd41: 0x6cc55e20, 0x2dd42: 0x6cc56020, 0x2dd43: 0x6cc56220,\n\t0x2dd44: 0x6cc56420, 0x2dd45: 0x6cc56620, 0x2dd46: 0x6cf3da20, 0x2dd47: 0x6cf3dc20,\n\t0x2dd48: 0x6cf3de20, 0x2dd49: 0x6cf3e020, 0x2dd4a: 0x6cf3e220, 0x2dd4b: 0x6cf3e420,\n\t0x2dd4c: 0x6cf3e620, 0x2dd4d: 0x6cf3e820, 0x2dd4e: 0x6cf3ea20, 0x2dd4f: 0x6cf3ec20,\n\t0x2dd50: 0x6cf3ee20, 0x2dd51: 0x6cf3f020, 0x2dd52: 0x6cf3f220, 0x2dd53: 0x6cf3f420,\n\t0x2dd54: 0x6cf3f620, 0x2dd55: 0x6cf3f820, 0x2dd56: 0x6cf3fa20, 0x2dd57: 0x6cf3fc20,\n\t0x2dd58: 0x6cf3fe20, 0x2dd59: 0x6cf40020, 0x2dd5a: 0x6cf40220, 0x2dd5b: 0x6cf40420,\n\t0x2dd5c: 0x6cf40620, 0x2dd5d: 0x6cf40820, 0x2dd5e: 0x6cf40a20, 0x2dd5f: 0x6cf40c20,\n\t0x2dd60: 0x6cf40e20, 0x2dd61: 0x6cf41020, 0x2dd62: 0x6cf41220, 0x2dd63: 0x6cf41420,\n\t0x2dd64: 0x6cf41620, 0x2dd65: 0x6cf41820, 0x2dd66: 0x6cf41a20, 0x2dd67: 0x6cf41c20,\n\t0x2dd68: 0x6cf41e20, 0x2dd69: 0x6cf42020, 0x2dd6a: 0x6cf42220, 0x2dd6b: 0x6d236a20,\n\t0x2dd6c: 0x6cf42420, 0x2dd6d: 0x6cf42620, 0x2dd6e: 0x6cf42820, 0x2dd6f: 0x6cf42a20,\n\t0x2dd70: 0x6cf42c20, 0x2dd71: 0x6cf51e20, 0x2dd72: 0x6cf42e20, 0x2dd73: 0x6cf43020,\n\t0x2dd74: 0x6d236c20, 0x2dd75: 0x6cf43220, 0x2dd76: 0x6cf43420, 0x2dd77: 0x6cf43620,\n\t0x2dd78: 0x6cf43820, 0x2dd79: 0x6cf43a20, 0x2dd7a: 0x6cf43c20, 0x2dd7b: 0x6d236e20,\n\t0x2dd7c: 0x6cf43e20, 0x2dd7d: 0x6cf44020, 0x2dd7e: 0x6cf44220, 0x2dd7f: 0x6d237020,\n\t// Block 0xb76, offset 0x2dd80\n\t0x2dd80: 0x6cf44420, 0x2dd81: 0x6cf44620, 0x2dd82: 0x6cf44820, 0x2dd83: 0x6cf44a20,\n\t0x2dd84: 0x6cf44c20, 0x2dd85: 0x6cf44e20, 0x2dd86: 0x6cf45020, 0x2dd87: 0x6cf45220,\n\t0x2dd88: 0x6cf45420, 0x2dd89: 0x6cf45620, 0x2dd8a: 0x6cf45820, 0x2dd8b: 0x6d239a20,\n\t0x2dd8c: 0x6d239c20, 0x2dd8d: 0x6d239e20, 0x2dd8e: 0x6d23a020, 0x2dd8f: 0x6d23a220,\n\t0x2dd90: 0x6d23a420, 0x2dd91: 0x6d23a620, 0x2dd92: 0x6cc56820, 0x2dd93: 0x6d23a820,\n\t0x2dd94: 0x6d23aa20, 0x2dd95: 0x6d23ac20, 0x2dd96: 0x6d24e620, 0x2dd97: 0x6d23ae20,\n\t0x2dd98: 0x6d23b020, 0x2dd99: 0x6d23b220, 0x2dd9a: 0x6d23b420, 0x2dd9b: 0x6d23b620,\n\t0x2dd9c: 0x6d23b820, 0x2dd9d: 0x6d23ba20, 0x2dd9e: 0x6d23bc20, 0x2dd9f: 0x6d23be20,\n\t0x2dda0: 0x6d23c020, 0x2dda1: 0x6cc66e20, 0x2dda2: 0x6d23c220, 0x2dda3: 0x6d23c420,\n\t0x2dda4: 0x6d23c620, 0x2dda5: 0x6d23c820, 0x2dda6: 0x6d23ca20, 0x2dda7: 0x6d23cc20,\n\t0x2dda8: 0x6d510020, 0x2dda9: 0x6d510220, 0x2ddaa: 0x6d23ce20, 0x2ddab: 0x6d23d020,\n\t0x2ddac: 0x6d23d220, 0x2ddad: 0x6d23d420, 0x2ddae: 0x6d510420, 0x2ddaf: 0x6d510620,\n\t0x2ddb0: 0x6d510820, 0x2ddb1: 0x6d23d620, 0x2ddb2: 0x6d23d820, 0x2ddb3: 0x6d23da20,\n\t0x2ddb4: 0x6d23dc20, 0x2ddb5: 0x6d23de20, 0x2ddb6: 0x6d23e020, 0x2ddb7: 0x6d23e220,\n\t0x2ddb8: 0x6d23e420, 0x2ddb9: 0x6d510a20, 0x2ddba: 0x6d23e620, 0x2ddbb: 0x6d23e820,\n\t0x2ddbc: 0x6d23ea20, 0x2ddbd: 0x6d23ec20, 0x2ddbe: 0x6d23ee20, 0x2ddbf: 0x6d23f020,\n\t// Block 0xb77, offset 0x2ddc0\n\t0x2ddc0: 0x6d510c20, 0x2ddc1: 0x6d23f220, 0x2ddc2: 0x6d23f420, 0x2ddc3: 0x6d510e20,\n\t0x2ddc4: 0x6d23f620, 0x2ddc5: 0x6d512e20, 0x2ddc6: 0x6d513020, 0x2ddc7: 0x6d23f820,\n\t0x2ddc8: 0x6d513220, 0x2ddc9: 0x6d7cb220, 0x2ddca: 0x6d513420, 0x2ddcb: 0x6d513620,\n\t0x2ddcc: 0x6d513820, 0x2ddcd: 0x6d513a20, 0x2ddce: 0x6d513c20, 0x2ddcf: 0x6d513e20,\n\t0x2ddd0: 0x6d514020, 0x2ddd1: 0x6d514220, 0x2ddd2: 0x6d514420, 0x2ddd3: 0x6d514620,\n\t0x2ddd4: 0x6d514820, 0x2ddd5: 0x6d514a20, 0x2ddd6: 0x6d514c20, 0x2ddd7: 0x6d514e20,\n\t0x2ddd8: 0x6d515020, 0x2ddd9: 0x6d515220, 0x2ddda: 0x6d515420, 0x2dddb: 0x6d515620,\n\t0x2dddc: 0x6d515820, 0x2dddd: 0x6d515a20, 0x2ddde: 0x6d515c20, 0x2dddf: 0x6d515e20,\n\t0x2dde0: 0x6d516020, 0x2dde1: 0x6d516220, 0x2dde2: 0x6d516420, 0x2dde3: 0x6d516620,\n\t0x2dde4: 0x6d516820, 0x2dde5: 0x6d516a20, 0x2dde6: 0x6d24e820, 0x2dde7: 0x6d516c20,\n\t0x2dde8: 0x6d516e20, 0x2dde9: 0x6d517020, 0x2ddea: 0x6d517220, 0x2ddeb: 0x6d517420,\n\t0x2ddec: 0x6d517620, 0x2dded: 0x6d517820, 0x2ddee: 0x6d517a20, 0x2ddef: 0x6d517c20,\n\t0x2ddf0: 0x6d517e20, 0x2ddf1: 0x6d518020, 0x2ddf2: 0x6d518220, 0x2ddf3: 0x6d518420,\n\t0x2ddf4: 0x6d518620, 0x2ddf5: 0x6d518820, 0x2ddf6: 0x6d518a20, 0x2ddf7: 0x6d518c20,\n\t0x2ddf8: 0x6d518e20, 0x2ddf9: 0x6d519020, 0x2ddfa: 0x6d519220, 0x2ddfb: 0x6d7cc220,\n\t0x2ddfc: 0x6d7cc420, 0x2ddfd: 0x6d7cc620, 0x2ddfe: 0x6d7cc820, 0x2ddff: 0x6d7cca20,\n\t// Block 0xb78, offset 0x2de00\n\t0x2de00: 0x6d7ccc20, 0x2de01: 0x6d7cce20, 0x2de02: 0x6d7cd020, 0x2de03: 0x6d7cd220,\n\t0x2de04: 0x6d7cd420, 0x2de05: 0x6d7cd620, 0x2de06: 0x6d519420, 0x2de07: 0x6d7cd820,\n\t0x2de08: 0x6d7cda20, 0x2de09: 0x6d7cdc20, 0x2de0a: 0x6da47c20, 0x2de0b: 0x6d7cde20,\n\t0x2de0c: 0x6d7ce020, 0x2de0d: 0x6d7ce220, 0x2de0e: 0x6da47e20, 0x2de0f: 0x6d7ce420,\n\t0x2de10: 0x6d7ce620, 0x2de11: 0x6d7ce820, 0x2de12: 0x6d7cea20, 0x2de13: 0x6d7cec20,\n\t0x2de14: 0x6d7cee20, 0x2de15: 0x6d7cf020, 0x2de16: 0x6d7cf220, 0x2de17: 0x6d7cf420,\n\t0x2de18: 0x6da48020, 0x2de19: 0x6d7cf620, 0x2de1a: 0x6d7cf820, 0x2de1b: 0x6d7cfa20,\n\t0x2de1c: 0x6d7cfc20, 0x2de1d: 0x6d7cfe20, 0x2de1e: 0x6d7d0020, 0x2de1f: 0x6da48e20,\n\t0x2de20: 0x6da49020, 0x2de21: 0x6da49220, 0x2de22: 0x6da49420, 0x2de23: 0x6da49620,\n\t0x2de24: 0x6da49820, 0x2de25: 0x6dc62620, 0x2de26: 0x6da49a20, 0x2de27: 0x6dc60a20,\n\t0x2de28: 0x6da49c20, 0x2de29: 0x6da49e20, 0x2de2a: 0x6dc60c20, 0x2de2b: 0x6da4a020,\n\t0x2de2c: 0x6da4a220, 0x2de2d: 0x6da4a420, 0x2de2e: 0x6da4a620, 0x2de2f: 0x6da4a820,\n\t0x2de30: 0x6da4aa20, 0x2de31: 0x6da4ac20, 0x2de32: 0x6dc62820, 0x2de33: 0x6d7d9e20,\n\t0x2de34: 0x6dc62a20, 0x2de35: 0x6dc62c20, 0x2de36: 0x6dc62e20, 0x2de37: 0x6dc63020,\n\t0x2de38: 0x6dc63220, 0x2de39: 0x6dc63420, 0x2de3a: 0x6dc63620, 0x2de3b: 0x6dc63820,\n\t0x2de3c: 0x6dc63a20, 0x2de3d: 0x6dc63c20, 0x2de3e: 0x6dc63e20, 0x2de3f: 0x6dc64020,\n\t// Block 0xb79, offset 0x2de40\n\t0x2de40: 0x6de2e820, 0x2de41: 0x6dc64220, 0x2de42: 0x6dc64420, 0x2de43: 0x6dc64620,\n\t0x2de44: 0x6dc64820, 0x2de45: 0x6dc64a20, 0x2de46: 0x6dc64c20, 0x2de47: 0x6de2ee20,\n\t0x2de48: 0x6de2f020, 0x2de49: 0x6de2f220, 0x2de4a: 0x6de2f420, 0x2de4b: 0x6de2f620,\n\t0x2de4c: 0x6de2f820, 0x2de4d: 0x6de2fa20, 0x2de4e: 0x6de2fc20, 0x2de4f: 0x6de2fe20,\n\t0x2de50: 0x6de30020, 0x2de51: 0x6e0dee20, 0x2de52: 0x6de30220, 0x2de53: 0x6dfa6220,\n\t0x2de54: 0x6dfa6420, 0x2de55: 0x6dfa6620, 0x2de56: 0x6dfa6820, 0x2de57: 0x6dfa6a20,\n\t0x2de58: 0x6dfa6c20, 0x2de59: 0x6dfa6e20, 0x2de5a: 0x6dfa7020, 0x2de5b: 0x6e0df820,\n\t0x2de5c: 0x6e0dfa20, 0x2de5d: 0x6e0dfc20, 0x2de5e: 0x6e1d5620, 0x2de5f: 0x6e1d5820,\n\t0x2de60: 0x6e1d5a20, 0x2de61: 0x6e1d5c20, 0x2de62: 0x6e1d5e20, 0x2de63: 0x6e28f620,\n\t0x2de64: 0x6e1d6020, 0x2de65: 0x6e28fe20, 0x2de66: 0x6e1d6220, 0x2de67: 0x6e1d6420,\n\t0x2de68: 0x6e290020, 0x2de69: 0x6e290220, 0x2de6a: 0x6e290420, 0x2de6b: 0x6e290620,\n\t0x2de6c: 0x6e322620, 0x2de6d: 0x6e322820, 0x2de6e: 0x6e389420, 0x2de6f: 0x6c047e20,\n\t0x2de70: 0x6c123620, 0x2de71: 0x6c502a20, 0x2de72: 0x6cc67220, 0x2de73: 0x6d7da020,\n\t0x2de74: 0x6c048020, 0x2de75: 0x6c048220, 0x2de76: 0x6c123a20, 0x2de77: 0x6c123c20,\n\t0x2de78: 0x6c212020, 0x2de79: 0x6c212220, 0x2de7a: 0x6c212420, 0x2de7b: 0x6c212620,\n\t0x2de7c: 0x6c212820, 0x2de7d: 0x6c354420, 0x2de7e: 0x6c354620, 0x2de7f: 0x6c503220,\n\t// Block 0xb7a, offset 0x2de80\n\t0x2de80: 0x6c503c20, 0x2de81: 0x6c503e20, 0x2de82: 0x6c504020, 0x2de83: 0x6c504220,\n\t0x2de84: 0x6c504420, 0x2de85: 0x6c504620, 0x2de86: 0x6c723c20, 0x2de87: 0x6c723e20,\n\t0x2de88: 0x6c724020, 0x2de89: 0x6c724220, 0x2de8a: 0x6c724420, 0x2de8b: 0x6c724620,\n\t0x2de8c: 0x6c724820, 0x2de8d: 0x6c9aac20, 0x2de8e: 0x6c9aae20, 0x2de8f: 0x6c9ab020,\n\t0x2de90: 0x6c9ab220, 0x2de91: 0x6c9ab420, 0x2de92: 0x6c9ab620, 0x2de93: 0x6c9ab820,\n\t0x2de94: 0x6c9aba20, 0x2de95: 0x6c9abc20, 0x2de96: 0x6c9abe20, 0x2de97: 0x6c9ac020,\n\t0x2de98: 0x6c9ac220, 0x2de99: 0x6c9ac420, 0x2de9a: 0x6c9ac620, 0x2de9b: 0x6c9ac820,\n\t0x2de9c: 0x6cc69a20, 0x2de9d: 0x6c9b1420, 0x2de9e: 0x6cc69c20, 0x2de9f: 0x6cc69e20,\n\t0x2dea0: 0x6cc6a020, 0x2dea1: 0x6cc6a220, 0x2dea2: 0x6cc6a420, 0x2dea3: 0x6cc6a620,\n\t0x2dea4: 0x6cc6a820, 0x2dea5: 0x6cc6aa20, 0x2dea6: 0x6cc6ac20, 0x2dea7: 0x6cc6ae20,\n\t0x2dea8: 0x6cc6b020, 0x2dea9: 0x6cc6b220, 0x2deaa: 0x6cc6b420, 0x2deab: 0x6cf53620,\n\t0x2deac: 0x6cf53820, 0x2dead: 0x6cf52a20, 0x2deae: 0x6cf53a20, 0x2deaf: 0x6cf53c20,\n\t0x2deb0: 0x6cf53e20, 0x2deb1: 0x6d24f820, 0x2deb2: 0x6d24fa20, 0x2deb3: 0x6d24fc20,\n\t0x2deb4: 0x6d7dac20, 0x2deb5: 0x6d527820, 0x2deb6: 0x6d527a20, 0x2deb7: 0x6d527c20,\n\t0x2deb8: 0x6d527e20, 0x2deb9: 0x6d528020, 0x2deba: 0x6d528220, 0x2debb: 0x6d528420,\n\t0x2debc: 0x6d7db620, 0x2debd: 0x6d7db820, 0x2debe: 0x6d7dba20, 0x2debf: 0x6d7dbc20,\n\t// Block 0xb7b, offset 0x2dec0\n\t0x2dec0: 0x6da51420, 0x2dec1: 0x6da51620, 0x2dec2: 0x6da51820, 0x2dec3: 0x6da53e20,\n\t0x2dec4: 0x6de35a20, 0x2dec5: 0x6dfab420, 0x2dec6: 0x6dfab620, 0x2dec7: 0x6c048420,\n\t0x2dec8: 0x6c213c20, 0x2dec9: 0x6c357620, 0x2deca: 0x6c728e20, 0x2decb: 0x6c729020,\n\t0x2decc: 0x6cc70220, 0x2decd: 0x6c9b1620, 0x2dece: 0x6c9b1820, 0x2decf: 0x6c9b1a20,\n\t0x2ded0: 0x6cc70420, 0x2ded1: 0x6cc70620, 0x2ded2: 0x6cf58e20, 0x2ded3: 0x6d7e0420,\n\t0x2ded4: 0x6dc6dc20, 0x2ded5: 0x6e0e3c20, 0x2ded6: 0x6e292620, 0x2ded7: 0x6c048620,\n\t0x2ded8: 0x6c214220, 0x2ded9: 0x6c729c20, 0x2deda: 0x6c729e20, 0x2dedb: 0x6c9b2a20,\n\t0x2dedc: 0x6c9b2c20, 0x2dedd: 0x6cc71620, 0x2dede: 0x6cc72220, 0x2dedf: 0x6cf59820,\n\t0x2dee0: 0x6d254820, 0x2dee1: 0x6d254a20, 0x2dee2: 0x6d7e0a20, 0x2dee3: 0x6da54420,\n\t0x2dee4: 0x6c048a20, 0x2dee5: 0x6c095220, 0x2dee6: 0x6c358a20, 0x2dee7: 0x6c358c20,\n\t0x2dee8: 0x6c358e20, 0x2dee9: 0x6c359020, 0x2deea: 0x6c508620, 0x2deeb: 0x6c508820,\n\t0x2deec: 0x6c9b3820, 0x2deed: 0x6c9b3a20, 0x2deee: 0x6cc72620, 0x2deef: 0x6cc72820,\n\t0x2def0: 0x6cf5a220, 0x2def1: 0x6cc74220, 0x2def2: 0x6d255820, 0x2def3: 0x6d52d820,\n\t0x2def4: 0x6d7e0c20, 0x2def5: 0x6da54c20, 0x2def6: 0x6da54e20, 0x2def7: 0x6dc6e020,\n\t0x2def8: 0x6e38a220, 0x2def9: 0x6c048e20, 0x2defa: 0x6c35a020, 0x2defb: 0x6c35a220,\n\t0x2defc: 0x6c35a420, 0x2defd: 0x6c509020, 0x2defe: 0x6c509220, 0x2deff: 0x6c509420,\n\t// Block 0xb7c, offset 0x2df00\n\t0x2df00: 0x6c509620, 0x2df01: 0x6c72bc20, 0x2df02: 0x6c72be20, 0x2df03: 0x6c72c020,\n\t0x2df04: 0x6c72c220, 0x2df05: 0x6c72c420, 0x2df06: 0x6c72c620, 0x2df07: 0x6c9b4820,\n\t0x2df08: 0x6c9b4a20, 0x2df09: 0x6c9b4c20, 0x2df0a: 0x6c72c820, 0x2df0b: 0x6c9b4e20,\n\t0x2df0c: 0x6c9b5020, 0x2df0d: 0x6c9b5220, 0x2df0e: 0x6c9b5420, 0x2df0f: 0x6c9b5620,\n\t0x2df10: 0x6cc74620, 0x2df11: 0x6cc74820, 0x2df12: 0x6cf5b620, 0x2df13: 0x6cf5b820,\n\t0x2df14: 0x6cf5ba20, 0x2df15: 0x6cf5bc20, 0x2df16: 0x6d256420, 0x2df17: 0x6d256620,\n\t0x2df18: 0x6d7e1c20, 0x2df19: 0x6d7e1e20, 0x2df1a: 0x6da55a20, 0x2df1b: 0x6dc6ec20,\n\t0x2df1c: 0x6de37820, 0x2df1d: 0x6de37a20, 0x2df1e: 0x6de37c20, 0x2df1f: 0x6dfad820,\n\t0x2df20: 0x6c049020, 0x2df21: 0x6c049220, 0x2df22: 0x6c50ac20, 0x2df23: 0x6c9b6e20,\n\t0x2df24: 0x6cf5ce20, 0x2df25: 0x6c049620, 0x2df26: 0x6c095420, 0x2df27: 0x6c095620,\n\t0x2df28: 0x6c125020, 0x2df29: 0x6c125220, 0x2df2a: 0x6c125420, 0x2df2b: 0x6c125620,\n\t0x2df2c: 0x6c125820, 0x2df2d: 0x6c125a20, 0x2df2e: 0x6c125c20, 0x2df2f: 0x6c125e20,\n\t0x2df30: 0x6c215c20, 0x2df31: 0x6c215e20, 0x2df32: 0x6c216020, 0x2df33: 0x6c216220,\n\t0x2df34: 0x6c216420, 0x2df35: 0x6c216620, 0x2df36: 0x6c216820, 0x2df37: 0x6c216a20,\n\t0x2df38: 0x6c216c20, 0x2df39: 0x6c35b620, 0x2df3a: 0x6c35b820, 0x2df3b: 0x6c35ba20,\n\t0x2df3c: 0x6c35bc20, 0x2df3d: 0x6c35be20, 0x2df3e: 0x6c35c020, 0x2df3f: 0x6c35c220,\n\t// Block 0xb7d, offset 0x2df40\n\t0x2df40: 0x6c35c420, 0x2df41: 0x6c35c620, 0x2df42: 0x6c35c820, 0x2df43: 0x6c35ca20,\n\t0x2df44: 0x6c35cc20, 0x2df45: 0x6c35ce20, 0x2df46: 0x6c35d020, 0x2df47: 0x6c35d220,\n\t0x2df48: 0x6c35d420, 0x2df49: 0x6c35d620, 0x2df4a: 0x6c35d820, 0x2df4b: 0x6c35da20,\n\t0x2df4c: 0x6c35dc20, 0x2df4d: 0x6c35de20, 0x2df4e: 0x6c35e020, 0x2df4f: 0x6c35e220,\n\t0x2df50: 0x6c35e420, 0x2df51: 0x6c35e620, 0x2df52: 0x6c35e820, 0x2df53: 0x6c35ea20,\n\t0x2df54: 0x6c35ec20, 0x2df55: 0x6c35ee20, 0x2df56: 0x6c35f020, 0x2df57: 0x6c35f220,\n\t0x2df58: 0x6c35f420, 0x2df59: 0x6c35f620, 0x2df5a: 0x6c50c420, 0x2df5b: 0x6c50c620,\n\t0x2df5c: 0x6c50c820, 0x2df5d: 0x6c50ca20, 0x2df5e: 0x6c50cc20, 0x2df5f: 0x6c50ce20,\n\t0x2df60: 0x6c50d020, 0x2df61: 0x6c50d220, 0x2df62: 0x6c50d420, 0x2df63: 0x6c50d620,\n\t0x2df64: 0x6c50d820, 0x2df65: 0x6c50da20, 0x2df66: 0x6c50dc20, 0x2df67: 0x6c50de20,\n\t0x2df68: 0x6c50e020, 0x2df69: 0x6c50e220, 0x2df6a: 0x6c50e420, 0x2df6b: 0x6c50e620,\n\t0x2df6c: 0x6c50e820, 0x2df6d: 0x6c50ea20, 0x2df6e: 0x6c50ec20, 0x2df6f: 0x6c50ee20,\n\t0x2df70: 0x6c50f020, 0x2df71: 0x6c50f220, 0x2df72: 0x6c50f420, 0x2df73: 0x6c50f620,\n\t0x2df74: 0x6c50f820, 0x2df75: 0x6c50fa20, 0x2df76: 0x6c50fc20, 0x2df77: 0x6c50fe20,\n\t0x2df78: 0x6c510020, 0x2df79: 0x6c510220, 0x2df7a: 0x6c510420, 0x2df7b: 0x6c510620,\n\t0x2df7c: 0x6c510820, 0x2df7d: 0x6c510a20, 0x2df7e: 0x6c510c20, 0x2df7f: 0x6c510e20,\n\t// Block 0xb7e, offset 0x2df80\n\t0x2df80: 0x6c730420, 0x2df81: 0x6c730620, 0x2df82: 0x6c730820, 0x2df83: 0x6c730a20,\n\t0x2df84: 0x6c730c20, 0x2df85: 0x6c730e20, 0x2df86: 0x6c731020, 0x2df87: 0x6c731220,\n\t0x2df88: 0x6c731420, 0x2df89: 0x6c731620, 0x2df8a: 0x6c731820, 0x2df8b: 0x6c731a20,\n\t0x2df8c: 0x6c731c20, 0x2df8d: 0x6c731e20, 0x2df8e: 0x6c732020, 0x2df8f: 0x6c732220,\n\t0x2df90: 0x6c732420, 0x2df91: 0x6c732620, 0x2df92: 0x6c732820, 0x2df93: 0x6c732a20,\n\t0x2df94: 0x6c732c20, 0x2df95: 0x6c732e20, 0x2df96: 0x6c733020, 0x2df97: 0x6c9b7e20,\n\t0x2df98: 0x6c9b8020, 0x2df99: 0x6c9b8220, 0x2df9a: 0x6c9b8420, 0x2df9b: 0x6c9b8620,\n\t0x2df9c: 0x6c9b8820, 0x2df9d: 0x6c9b8a20, 0x2df9e: 0x6c9b8c20, 0x2df9f: 0x6c738c20,\n\t0x2dfa0: 0x6c738e20, 0x2dfa1: 0x6c9b8e20, 0x2dfa2: 0x6c9b9020, 0x2dfa3: 0x6c9b9220,\n\t0x2dfa4: 0x6c9b9420, 0x2dfa5: 0x6c9b9620, 0x2dfa6: 0x6c9b9820, 0x2dfa7: 0x6c9b9a20,\n\t0x2dfa8: 0x6c9b9c20, 0x2dfa9: 0x6c9b9e20, 0x2dfaa: 0x6cc78620, 0x2dfab: 0x6cc78820,\n\t0x2dfac: 0x6cc78a20, 0x2dfad: 0x6cc78c20, 0x2dfae: 0x6cc78e20, 0x2dfaf: 0x6cc79020,\n\t0x2dfb0: 0x6cc79220, 0x2dfb1: 0x6cc79420, 0x2dfb2: 0x6cc79620, 0x2dfb3: 0x6cc79820,\n\t0x2dfb4: 0x6cc79a20, 0x2dfb5: 0x6cc79c20, 0x2dfb6: 0x6cc79e20, 0x2dfb7: 0x6cc7a020,\n\t0x2dfb8: 0x6cf5d620, 0x2dfb9: 0x6cc7a220, 0x2dfba: 0x6cc7a420, 0x2dfbb: 0x6cc7a620,\n\t0x2dfbc: 0x6cc7a820, 0x2dfbd: 0x6cc7aa20, 0x2dfbe: 0x6cc7ac20, 0x2dfbf: 0x6cc7ae20,\n\t// Block 0xb7f, offset 0x2dfc0\n\t0x2dfc0: 0x6cc7b020, 0x2dfc1: 0x6cc7b220, 0x2dfc2: 0x6cc7b420, 0x2dfc3: 0x6cc7b620,\n\t0x2dfc4: 0x6cf5f020, 0x2dfc5: 0x6cf5f220, 0x2dfc6: 0x6cf5f420, 0x2dfc7: 0x6cf5f620,\n\t0x2dfc8: 0x6cf5f820, 0x2dfc9: 0x6cf5fa20, 0x2dfca: 0x6cf5fc20, 0x2dfcb: 0x6cf5fe20,\n\t0x2dfcc: 0x6cf60020, 0x2dfcd: 0x6cf60220, 0x2dfce: 0x6cf60420, 0x2dfcf: 0x6cf60620,\n\t0x2dfd0: 0x6cf60820, 0x2dfd1: 0x6cc7b820, 0x2dfd2: 0x6cf60a20, 0x2dfd3: 0x6cf60c20,\n\t0x2dfd4: 0x6cf60e20, 0x2dfd5: 0x6cf61020, 0x2dfd6: 0x6cf61220, 0x2dfd7: 0x6cf61420,\n\t0x2dfd8: 0x6cf61620, 0x2dfd9: 0x6cf61820, 0x2dfda: 0x6d257e20, 0x2dfdb: 0x6d258020,\n\t0x2dfdc: 0x6d258220, 0x2dfdd: 0x6d258420, 0x2dfde: 0x6d258620, 0x2dfdf: 0x6d258820,\n\t0x2dfe0: 0x6d258a20, 0x2dfe1: 0x6d258c20, 0x2dfe2: 0x6d258e20, 0x2dfe3: 0x6d259020,\n\t0x2dfe4: 0x6d259220, 0x2dfe5: 0x6d259420, 0x2dfe6: 0x6d259620, 0x2dfe7: 0x6d259820,\n\t0x2dfe8: 0x6d259a20, 0x2dfe9: 0x6d530020, 0x2dfea: 0x6d530220, 0x2dfeb: 0x6d530420,\n\t0x2dfec: 0x6d530620, 0x2dfed: 0x6d530820, 0x2dfee: 0x6d530a20, 0x2dfef: 0x6d530c20,\n\t0x2dff0: 0x6d530e20, 0x2dff1: 0x6d531020, 0x2dff2: 0x6d531220, 0x2dff3: 0x6d531420,\n\t0x2dff4: 0x6d531620, 0x2dff5: 0x6d531820, 0x2dff6: 0x6d531a20, 0x2dff7: 0x6d531c20,\n\t0x2dff8: 0x6d7e4420, 0x2dff9: 0x6d7e4620, 0x2dffa: 0x6d7e4820, 0x2dffb: 0x6d7e4a20,\n\t0x2dffc: 0x6d537220, 0x2dffd: 0x6d7e4c20, 0x2dffe: 0x6d7e4e20, 0x2dfff: 0x6d7e5020,\n\t// Block 0xb80, offset 0x2e000\n\t0x2e000: 0x6d7e5220, 0x2e001: 0x6d7e5420, 0x2e002: 0x6d7e5620, 0x2e003: 0x6d7e5820,\n\t0x2e004: 0x6d7e5a20, 0x2e005: 0x6d7e5c20, 0x2e006: 0x6d7e5e20, 0x2e007: 0x6d7e6020,\n\t0x2e008: 0x6d7e6220, 0x2e009: 0x6d7e6420, 0x2e00a: 0x6d7e6620, 0x2e00b: 0x6d7e6820,\n\t0x2e00c: 0x6d7e6a20, 0x2e00d: 0x6d7e6c20, 0x2e00e: 0x6da56420, 0x2e00f: 0x6d7ed220,\n\t0x2e010: 0x6da56620, 0x2e011: 0x6da56820, 0x2e012: 0x6da56a20, 0x2e013: 0x6da56c20,\n\t0x2e014: 0x6da56e20, 0x2e015: 0x6da57020, 0x2e016: 0x6da57220, 0x2e017: 0x6da57420,\n\t0x2e018: 0x6dc70620, 0x2e019: 0x6da5a820, 0x2e01a: 0x6da57620, 0x2e01b: 0x6dc70820,\n\t0x2e01c: 0x6dc70a20, 0x2e01d: 0x6de38820, 0x2e01e: 0x6de38a20, 0x2e01f: 0x6de38c20,\n\t0x2e020: 0x6de38e20, 0x2e021: 0x6de39020, 0x2e022: 0x6de39220, 0x2e023: 0x6dfae020,\n\t0x2e024: 0x6dfae220, 0x2e025: 0x6dfae420, 0x2e026: 0x6dfae620, 0x2e027: 0x6dfae820,\n\t0x2e028: 0x6dfaea20, 0x2e029: 0x6e0e4620, 0x2e02a: 0x6e293020, 0x2e02b: 0x6e293220,\n\t0x2e02c: 0x6e293420, 0x2e02d: 0x6e324a20, 0x2e02e: 0x6e324c20, 0x2e02f: 0x6e38a820,\n\t0x2e030: 0x6c049820, 0x2e031: 0x6c095e20, 0x2e032: 0x6c127020, 0x2e033: 0x6c127220,\n\t0x2e034: 0x6c219c20, 0x2e035: 0x6c219e20, 0x2e036: 0x6c364020, 0x2e037: 0x6c515c20,\n\t0x2e038: 0x6c739020, 0x2e039: 0x6c9c0a20, 0x2e03a: 0x6c739220, 0x2e03b: 0x6c73a820,\n\t0x2e03c: 0x6c9c0c20, 0x2e03d: 0x6c9ba020, 0x2e03e: 0x6cc84a20, 0x2e03f: 0x6cc84c20,\n\t// Block 0xb81, offset 0x2e040\n\t0x2e040: 0x6cb8f420, 0x2e041: 0x6cc84e20, 0x2e042: 0x6cc85020, 0x2e043: 0x6cf68820,\n\t0x2e044: 0x6d25f820, 0x2e045: 0x6d25fa20, 0x2e046: 0x6d7ed620, 0x2e047: 0x6e0e5820,\n\t0x2e048: 0x6c049c20, 0x2e049: 0x6c127420, 0x2e04a: 0x6c364c20, 0x2e04b: 0x6c364e20,\n\t0x2e04c: 0x6c365020, 0x2e04d: 0x6c365220, 0x2e04e: 0x6c516c20, 0x2e04f: 0x6c516e20,\n\t0x2e050: 0x6c517020, 0x2e051: 0x6c517220, 0x2e052: 0x6c73ae20, 0x2e053: 0x6c73b020,\n\t0x2e054: 0x6c73b220, 0x2e055: 0x6c73b420, 0x2e056: 0x6c9c1a20, 0x2e057: 0x6c73be20,\n\t0x2e058: 0x6c9c1c20, 0x2e059: 0x6c9c1e20, 0x2e05a: 0x6c9c2020, 0x2e05b: 0x6c9c2220,\n\t0x2e05c: 0x6cc85a20, 0x2e05d: 0x6cc85c20, 0x2e05e: 0x6cc85e20, 0x2e05f: 0x6cc86020,\n\t0x2e060: 0x6cf69420, 0x2e061: 0x6cf69620, 0x2e062: 0x6d260620, 0x2e063: 0x6d7ee620,\n\t0x2e064: 0x6d7ee820, 0x2e065: 0x6d7eea20, 0x2e066: 0x6dc74820, 0x2e067: 0x6dfb0220,\n\t0x2e068: 0x6c049e20, 0x2e069: 0x6c04a020, 0x2e06a: 0x6c096220, 0x2e06b: 0x6c096420,\n\t0x2e06c: 0x6c096620, 0x2e06d: 0x6c096820, 0x2e06e: 0x6c096a20, 0x2e06f: 0x6c096c20,\n\t0x2e070: 0x6c096e20, 0x2e071: 0x6c127c20, 0x2e072: 0x6c127e20, 0x2e073: 0x6c128020,\n\t0x2e074: 0x6c128220, 0x2e075: 0x6c128420, 0x2e076: 0x6c128620, 0x2e077: 0x6c128820,\n\t0x2e078: 0x6c128a20, 0x2e079: 0x6c128c20, 0x2e07a: 0x6c128e20, 0x2e07b: 0x6c129020,\n\t0x2e07c: 0x6c129220, 0x2e07d: 0x6c129420, 0x2e07e: 0x6c129620, 0x2e07f: 0x6c129820,\n\t// Block 0xb82, offset 0x2e080\n\t0x2e080: 0x6c129a20, 0x2e081: 0x6c129c20, 0x2e082: 0x6c129e20, 0x2e083: 0x6c12a020,\n\t0x2e084: 0x6c21ba20, 0x2e085: 0x6c21bc20, 0x2e086: 0x6c21be20, 0x2e087: 0x6c21c020,\n\t0x2e088: 0x6c21c220, 0x2e089: 0x6c21c420, 0x2e08a: 0x6c21c620, 0x2e08b: 0x6c21c820,\n\t0x2e08c: 0x6c21ca20, 0x2e08d: 0x6c21cc20, 0x2e08e: 0x6c21ce20, 0x2e08f: 0x6c21d020,\n\t0x2e090: 0x6c21d220, 0x2e091: 0x6c21d420, 0x2e092: 0x6c21d620, 0x2e093: 0x6c21d820,\n\t0x2e094: 0x6c21da20, 0x2e095: 0x6c21dc20, 0x2e096: 0x6c21de20, 0x2e097: 0x6c21e020,\n\t0x2e098: 0x6c21e220, 0x2e099: 0x6c21e420, 0x2e09a: 0x6c21e620, 0x2e09b: 0x6c21e820,\n\t0x2e09c: 0x6c21ea20, 0x2e09d: 0x6c21ec20, 0x2e09e: 0x6c21ee20, 0x2e09f: 0x6c21f020,\n\t0x2e0a0: 0x6c21f220, 0x2e0a1: 0x6c21f420, 0x2e0a2: 0x6c21f620, 0x2e0a3: 0x6c21f820,\n\t0x2e0a4: 0x6c21fa20, 0x2e0a5: 0x6c21fc20, 0x2e0a6: 0x6c21fe20, 0x2e0a7: 0x6c220020,\n\t0x2e0a8: 0x6c220220, 0x2e0a9: 0x6c220420, 0x2e0aa: 0x6c366c20, 0x2e0ab: 0x6c366e20,\n\t0x2e0ac: 0x6c367020, 0x2e0ad: 0x6c367220, 0x2e0ae: 0x6c367420, 0x2e0af: 0x6c367620,\n\t0x2e0b0: 0x6c367820, 0x2e0b1: 0x6c367a20, 0x2e0b2: 0x6c367c20, 0x2e0b3: 0x6c367e20,\n\t0x2e0b4: 0x6c368020, 0x2e0b5: 0x6c368220, 0x2e0b6: 0x6c368420, 0x2e0b7: 0x6c368620,\n\t0x2e0b8: 0x6c368820, 0x2e0b9: 0x6c368a20, 0x2e0ba: 0x6c368c20, 0x2e0bb: 0x6c368e20,\n\t0x2e0bc: 0x6c369020, 0x2e0bd: 0x6c369220, 0x2e0be: 0x6c369420, 0x2e0bf: 0x6c369620,\n\t// Block 0xb83, offset 0x2e0c0\n\t0x2e0c0: 0x6c369820, 0x2e0c1: 0x6c220620, 0x2e0c2: 0x6c369a20, 0x2e0c3: 0x6c369c20,\n\t0x2e0c4: 0x6c369e20, 0x2e0c5: 0x6c36a020, 0x2e0c6: 0x6c36a220, 0x2e0c7: 0x6c36a420,\n\t0x2e0c8: 0x6c36a620, 0x2e0c9: 0x6c36a820, 0x2e0ca: 0x6c36aa20, 0x2e0cb: 0x6c36ac20,\n\t0x2e0cc: 0x6c36ae20, 0x2e0cd: 0x6c36b020, 0x2e0ce: 0x6c36b220, 0x2e0cf: 0x6c36b420,\n\t0x2e0d0: 0x6c36b620, 0x2e0d1: 0x6c36b820, 0x2e0d2: 0x6c36ba20, 0x2e0d3: 0x6c36bc20,\n\t0x2e0d4: 0x6c36be20, 0x2e0d5: 0x6c36c020, 0x2e0d6: 0x6c36c220, 0x2e0d7: 0x6c36c420,\n\t0x2e0d8: 0x6c36c620, 0x2e0d9: 0x6c36c820, 0x2e0da: 0x6c36ca20, 0x2e0db: 0x6c36cc20,\n\t0x2e0dc: 0x6c36ce20, 0x2e0dd: 0x6c36d020, 0x2e0de: 0x6c36d220, 0x2e0df: 0x6c36d420,\n\t0x2e0e0: 0x6c36d620, 0x2e0e1: 0x6c36d820, 0x2e0e2: 0x6c36da20, 0x2e0e3: 0x6c36dc20,\n\t0x2e0e4: 0x6c36de20, 0x2e0e5: 0x6c36e020, 0x2e0e6: 0x6c36e220, 0x2e0e7: 0x6c36e420,\n\t0x2e0e8: 0x6c36e620, 0x2e0e9: 0x6c36e820, 0x2e0ea: 0x6c36ea20, 0x2e0eb: 0x6c36ec20,\n\t0x2e0ec: 0x6c36ee20, 0x2e0ed: 0x6c36f020, 0x2e0ee: 0x6c519420, 0x2e0ef: 0x6c519620,\n\t0x2e0f0: 0x6c519820, 0x2e0f1: 0x6c519a20, 0x2e0f2: 0x6c519c20, 0x2e0f3: 0x6c519e20,\n\t0x2e0f4: 0x6c51a020, 0x2e0f5: 0x6c51a220, 0x2e0f6: 0x6c51a420, 0x2e0f7: 0x6c51a620,\n\t0x2e0f8: 0x6c51a820, 0x2e0f9: 0x6c51aa20, 0x2e0fa: 0x6c51ac20, 0x2e0fb: 0x6c51ae20,\n\t0x2e0fc: 0x6c51b020, 0x2e0fd: 0x6c73c020, 0x2e0fe: 0x6c51b220, 0x2e0ff: 0x6c51b420,\n\t// Block 0xb84, offset 0x2e100\n\t0x2e100: 0x6c51b620, 0x2e101: 0x6c51b820, 0x2e102: 0x6c51ba20, 0x2e103: 0x6c51bc20,\n\t0x2e104: 0x6c51be20, 0x2e105: 0x6c51c020, 0x2e106: 0x6c51c220, 0x2e107: 0x6c51c420,\n\t0x2e108: 0x6c51c620, 0x2e109: 0x6c51c820, 0x2e10a: 0x6c51ca20, 0x2e10b: 0x6c51cc20,\n\t0x2e10c: 0x6c51ce20, 0x2e10d: 0x6c51d020, 0x2e10e: 0x6c51d220, 0x2e10f: 0x6c51d420,\n\t0x2e110: 0x6c51d620, 0x2e111: 0x6c51d820, 0x2e112: 0x6c51da20, 0x2e113: 0x6c51dc20,\n\t0x2e114: 0x6c51de20, 0x2e115: 0x6c51e020, 0x2e116: 0x6c51e220, 0x2e117: 0x6c51e420,\n\t0x2e118: 0x6c51e620, 0x2e119: 0x6c51e820, 0x2e11a: 0x6c51ea20, 0x2e11b: 0x6c51ec20,\n\t0x2e11c: 0x6c51ee20, 0x2e11d: 0x6c51f020, 0x2e11e: 0x6c51f220, 0x2e11f: 0x6c51f420,\n\t0x2e120: 0x6c51f620, 0x2e121: 0x6c73c220, 0x2e122: 0x6c51f820, 0x2e123: 0x6c51fa20,\n\t0x2e124: 0x6c51fc20, 0x2e125: 0x6c51fe20, 0x2e126: 0x6c520020, 0x2e127: 0x6c520220,\n\t0x2e128: 0x6c520420, 0x2e129: 0x6c520620, 0x2e12a: 0x6c520820, 0x2e12b: 0x6c520a20,\n\t0x2e12c: 0x6c520c20, 0x2e12d: 0x6c520e20, 0x2e12e: 0x6c521020, 0x2e12f: 0x6c521220,\n\t0x2e130: 0x6c521420, 0x2e131: 0x6c521620, 0x2e132: 0x6c521820, 0x2e133: 0x6c521a20,\n\t0x2e134: 0x6c73c420, 0x2e135: 0x6c521c20, 0x2e136: 0x6c521e20, 0x2e137: 0x6c522020,\n\t0x2e138: 0x6c522220, 0x2e139: 0x6c376420, 0x2e13a: 0x6c522420, 0x2e13b: 0x6c522620,\n\t0x2e13c: 0x6c522820, 0x2e13d: 0x6c522a20, 0x2e13e: 0x6c522c20, 0x2e13f: 0x6c522e20,\n\t// Block 0xb85, offset 0x2e140\n\t0x2e140: 0x6c523020, 0x2e141: 0x6c523220, 0x2e142: 0x6c523420, 0x2e143: 0x6c523620,\n\t0x2e144: 0x6c523820, 0x2e145: 0x6c523a20, 0x2e146: 0x6c523c20, 0x2e147: 0x6c523e20,\n\t0x2e148: 0x6c524020, 0x2e149: 0x6c524220, 0x2e14a: 0x6c524420, 0x2e14b: 0x6c524620,\n\t0x2e14c: 0x6c524820, 0x2e14d: 0x6c524a20, 0x2e14e: 0x6c524c20, 0x2e14f: 0x6c524e20,\n\t0x2e150: 0x6c525020, 0x2e151: 0x6c525220, 0x2e152: 0x6c73e620, 0x2e153: 0x6c73e820,\n\t0x2e154: 0x6c73ea20, 0x2e155: 0x6c73ec20, 0x2e156: 0x6c73ee20, 0x2e157: 0x6c73f020,\n\t0x2e158: 0x6c73f220, 0x2e159: 0x6c73f420, 0x2e15a: 0x6c73f620, 0x2e15b: 0x6c73f820,\n\t0x2e15c: 0x6c73fa20, 0x2e15d: 0x6c73fc20, 0x2e15e: 0x6c73fe20, 0x2e15f: 0x6c740020,\n\t0x2e160: 0x6c740220, 0x2e161: 0x6c740420, 0x2e162: 0x6c740620, 0x2e163: 0x6c740820,\n\t0x2e164: 0x6c740a20, 0x2e165: 0x6c740c20, 0x2e166: 0x6c740e20, 0x2e167: 0x6c741020,\n\t0x2e168: 0x6c741220, 0x2e169: 0x6c741420, 0x2e16a: 0x6c741620, 0x2e16b: 0x6c741820,\n\t0x2e16c: 0x6c741a20, 0x2e16d: 0x6c741c20, 0x2e16e: 0x6c741e20, 0x2e16f: 0x6c742020,\n\t0x2e170: 0x6c742220, 0x2e171: 0x6c742420, 0x2e172: 0x6c742620, 0x2e173: 0x6c742820,\n\t0x2e174: 0x6c742a20, 0x2e175: 0x6c742c20, 0x2e176: 0x6c742e20, 0x2e177: 0x6c743020,\n\t0x2e178: 0x6c743220, 0x2e179: 0x6c743420, 0x2e17a: 0x6c743620, 0x2e17b: 0x6c743820,\n\t0x2e17c: 0x6c743a20, 0x2e17d: 0x6c743c20, 0x2e17e: 0x6c743e20, 0x2e17f: 0x6c744020,\n\t// Block 0xb86, offset 0x2e180\n\t0x2e180: 0x6c744220, 0x2e181: 0x6c744420, 0x2e182: 0x6c744620, 0x2e183: 0x6c744820,\n\t0x2e184: 0x6c744a20, 0x2e185: 0x6c744c20, 0x2e186: 0x6c744e20, 0x2e187: 0x6c745020,\n\t0x2e188: 0x6c745220, 0x2e189: 0x6c745420, 0x2e18a: 0x6c745620, 0x2e18b: 0x6c745820,\n\t0x2e18c: 0x6c745a20, 0x2e18d: 0x6c745c20, 0x2e18e: 0x6c745e20, 0x2e18f: 0x6c746020,\n\t0x2e190: 0x6c746220, 0x2e191: 0x6c746420, 0x2e192: 0x6c52c020, 0x2e193: 0x6c746620,\n\t0x2e194: 0x6c746820, 0x2e195: 0x6c746a20, 0x2e196: 0x6c746c20, 0x2e197: 0x6c746e20,\n\t0x2e198: 0x6c747020, 0x2e199: 0x6c747220, 0x2e19a: 0x6c747420, 0x2e19b: 0x6c747620,\n\t0x2e19c: 0x6c747820, 0x2e19d: 0x6c747a20, 0x2e19e: 0x6c747c20, 0x2e19f: 0x6c747e20,\n\t0x2e1a0: 0x6c748020, 0x2e1a1: 0x6c748220, 0x2e1a2: 0x6c748420, 0x2e1a3: 0x6c748620,\n\t0x2e1a4: 0x6c748820, 0x2e1a5: 0x6c748a20, 0x2e1a6: 0x6c748c20, 0x2e1a7: 0x6c748e20,\n\t0x2e1a8: 0x6c749020, 0x2e1a9: 0x6c749220, 0x2e1aa: 0x6c749420, 0x2e1ab: 0x6c9c5420,\n\t0x2e1ac: 0x6c9c5620, 0x2e1ad: 0x6c9c5820, 0x2e1ae: 0x6c9c5a20, 0x2e1af: 0x6c9c5c20,\n\t0x2e1b0: 0x6c9c5e20, 0x2e1b1: 0x6c9c6020, 0x2e1b2: 0x6c9c6220, 0x2e1b3: 0x6c9c6420,\n\t0x2e1b4: 0x6c9c6620, 0x2e1b5: 0x6c9c6820, 0x2e1b6: 0x6c9c6a20, 0x2e1b7: 0x6c9c6c20,\n\t0x2e1b8: 0x6c9c6e20, 0x2e1b9: 0x6c9c7020, 0x2e1ba: 0x6c9c7220, 0x2e1bb: 0x6c9c7420,\n\t0x2e1bc: 0x6c9c7620, 0x2e1bd: 0x6c9c7820, 0x2e1be: 0x6c9c7a20, 0x2e1bf: 0x6c9c7c20,\n\t// Block 0xb87, offset 0x2e1c0\n\t0x2e1c0: 0x6c9c7e20, 0x2e1c1: 0x6c9c8020, 0x2e1c2: 0x6c9c8220, 0x2e1c3: 0x6c9c8420,\n\t0x2e1c4: 0x6c9c8620, 0x2e1c5: 0x6c9c8820, 0x2e1c6: 0x6c9c8a20, 0x2e1c7: 0x6c9c8c20,\n\t0x2e1c8: 0x6c9c8e20, 0x2e1c9: 0x6c9c9020, 0x2e1ca: 0x6c9c9220, 0x2e1cb: 0x6c9c9420,\n\t0x2e1cc: 0x6c9c9620, 0x2e1cd: 0x6c9c9820, 0x2e1ce: 0x6c9c9a20, 0x2e1cf: 0x6c9c9c20,\n\t0x2e1d0: 0x6c9c9e20, 0x2e1d1: 0x6c9ca020, 0x2e1d2: 0x6c9ca220, 0x2e1d3: 0x6c9ca420,\n\t0x2e1d4: 0x6c9ca620, 0x2e1d5: 0x6c9ca820, 0x2e1d6: 0x6c9caa20, 0x2e1d7: 0x6c9cac20,\n\t0x2e1d8: 0x6c9cae20, 0x2e1d9: 0x6c9cb020, 0x2e1da: 0x6c9cb220, 0x2e1db: 0x6c9cb420,\n\t0x2e1dc: 0x6c9cb620, 0x2e1dd: 0x6c9cb820, 0x2e1de: 0x6c9cba20, 0x2e1df: 0x6c9cbc20,\n\t0x2e1e0: 0x6c9cbe20, 0x2e1e1: 0x6c9cc020, 0x2e1e2: 0x6c9cc220, 0x2e1e3: 0x6c9cc420,\n\t0x2e1e4: 0x6c9cc620, 0x2e1e5: 0x6c9cc820, 0x2e1e6: 0x6c9cca20, 0x2e1e7: 0x6c9ccc20,\n\t0x2e1e8: 0x6c9cce20, 0x2e1e9: 0x6c9cd020, 0x2e1ea: 0x6c9cd220, 0x2e1eb: 0x6c9cd420,\n\t0x2e1ec: 0x6c9cd620, 0x2e1ed: 0x6c9cd820, 0x2e1ee: 0x6c9cda20, 0x2e1ef: 0x6c9cdc20,\n\t0x2e1f0: 0x6c9cde20, 0x2e1f1: 0x6c9ce020, 0x2e1f2: 0x6c9ce220, 0x2e1f3: 0x6c9ce420,\n\t0x2e1f4: 0x6cc88420, 0x2e1f5: 0x6c9ce620, 0x2e1f6: 0x6c9ce820, 0x2e1f7: 0x6c9cea20,\n\t0x2e1f8: 0x6c9cec20, 0x2e1f9: 0x6c9cee20, 0x2e1fa: 0x6c9cf020, 0x2e1fb: 0x6c9cf220,\n\t0x2e1fc: 0x6c9cf420, 0x2e1fd: 0x6c9cf620, 0x2e1fe: 0x6c9cf820, 0x2e1ff: 0x6c9cfa20,\n\t// Block 0xb88, offset 0x2e200\n\t0x2e200: 0x6c9cfc20, 0x2e201: 0x6c9cfe20, 0x2e202: 0x6c9d0020, 0x2e203: 0x6cc8ae20,\n\t0x2e204: 0x6cc8b020, 0x2e205: 0x6cc8b220, 0x2e206: 0x6cc8b420, 0x2e207: 0x6cc8b620,\n\t0x2e208: 0x6cc8b820, 0x2e209: 0x6cc8ba20, 0x2e20a: 0x6cc8bc20, 0x2e20b: 0x6cc8be20,\n\t0x2e20c: 0x6cc8c020, 0x2e20d: 0x6cc8c220, 0x2e20e: 0x6cc8c420, 0x2e20f: 0x6cc8c620,\n\t0x2e210: 0x6cc8c820, 0x2e211: 0x6cc8ca20, 0x2e212: 0x6cc8cc20, 0x2e213: 0x6cc8ce20,\n\t0x2e214: 0x6cc8d020, 0x2e215: 0x6cc8d220, 0x2e216: 0x6cc8d420, 0x2e217: 0x6cc8d620,\n\t0x2e218: 0x6cc8d820, 0x2e219: 0x6cc8da20, 0x2e21a: 0x6cc8dc20, 0x2e21b: 0x6cc8de20,\n\t0x2e21c: 0x6cc8e020, 0x2e21d: 0x6cc8e220, 0x2e21e: 0x6cc8e420, 0x2e21f: 0x6cc8e620,\n\t0x2e220: 0x6cc8e820, 0x2e221: 0x6cc8ea20, 0x2e222: 0x6cc8ec20, 0x2e223: 0x6cc8ee20,\n\t0x2e224: 0x6cc8f020, 0x2e225: 0x6cc8f220, 0x2e226: 0x6cc8f420, 0x2e227: 0x6cc8f620,\n\t0x2e228: 0x6cc8f820, 0x2e229: 0x6cc8fa20, 0x2e22a: 0x6cc8fc20, 0x2e22b: 0x6cc8fe20,\n\t0x2e22c: 0x6cc90020, 0x2e22d: 0x6cc90220, 0x2e22e: 0x6cc90420, 0x2e22f: 0x6cc90620,\n\t0x2e230: 0x6cc90820, 0x2e231: 0x6cc90a20, 0x2e232: 0x6cc90c20, 0x2e233: 0x6cc90e20,\n\t0x2e234: 0x6cc91020, 0x2e235: 0x6cc91220, 0x2e236: 0x6cc91420, 0x2e237: 0x6cc91620,\n\t0x2e238: 0x6cc91820, 0x2e239: 0x6cc91a20, 0x2e23a: 0x6cc91c20, 0x2e23b: 0x6cc91e20,\n\t0x2e23c: 0x6cc92020, 0x2e23d: 0x6cc92220, 0x2e23e: 0x6cc92420, 0x2e23f: 0x6cc92620,\n\t// Block 0xb89, offset 0x2e240\n\t0x2e240: 0x6cc92820, 0x2e241: 0x6cc92a20, 0x2e242: 0x6cc92c20, 0x2e243: 0x6cc92e20,\n\t0x2e244: 0x6cc93020, 0x2e245: 0x6cc93220, 0x2e246: 0x6cc93420, 0x2e247: 0x6cc93620,\n\t0x2e248: 0x6cc93820, 0x2e249: 0x6cc93a20, 0x2e24a: 0x6cc93c20, 0x2e24b: 0x6cc93e20,\n\t0x2e24c: 0x6cc94020, 0x2e24d: 0x6cc94220, 0x2e24e: 0x6cc94420, 0x2e24f: 0x6cc94620,\n\t0x2e250: 0x6cc94820, 0x2e251: 0x6cc94a20, 0x2e252: 0x6cc94c20, 0x2e253: 0x6cc94e20,\n\t0x2e254: 0x6cc95020, 0x2e255: 0x6cc95220, 0x2e256: 0x6cc95420, 0x2e257: 0x6cc95620,\n\t0x2e258: 0x6cc95820, 0x2e259: 0x6cc95a20, 0x2e25a: 0x6cc95c20, 0x2e25b: 0x6cc95e20,\n\t0x2e25c: 0x6cc96020, 0x2e25d: 0x6cc96220, 0x2e25e: 0x6cc96420, 0x2e25f: 0x6cc96620,\n\t0x2e260: 0x6cc96820, 0x2e261: 0x6cc96a20, 0x2e262: 0x6cc96c20, 0x2e263: 0x6cc96e20,\n\t0x2e264: 0x6cc97020, 0x2e265: 0x6cc97220, 0x2e266: 0x6cc97420, 0x2e267: 0x6cc97620,\n\t0x2e268: 0x6cc97820, 0x2e269: 0x6cc97a20, 0x2e26a: 0x6cc97c20, 0x2e26b: 0x6cc97e20,\n\t0x2e26c: 0x6cc98020, 0x2e26d: 0x6cc98220, 0x2e26e: 0x6cc98420, 0x2e26f: 0x6cf6e220,\n\t0x2e270: 0x6cf6e420, 0x2e271: 0x6cf6e620, 0x2e272: 0x6cf6e820, 0x2e273: 0x6cf6ea20,\n\t0x2e274: 0x6cf6ec20, 0x2e275: 0x6cf6ee20, 0x2e276: 0x6cf6f020, 0x2e277: 0x6cf6f220,\n\t0x2e278: 0x6cf6f420, 0x2e279: 0x6cf6f620, 0x2e27a: 0x6cf6f820, 0x2e27b: 0x6cf6fa20,\n\t0x2e27c: 0x6cf6fc20, 0x2e27d: 0x6cf6fe20, 0x2e27e: 0x6cf70020, 0x2e27f: 0x6cf70220,\n\t// Block 0xb8a, offset 0x2e280\n\t0x2e280: 0x6cf70420, 0x2e281: 0x6cf70620, 0x2e282: 0x6cf70820, 0x2e283: 0x6cf70a20,\n\t0x2e284: 0x6cf70c20, 0x2e285: 0x6cf70e20, 0x2e286: 0x6cf71020, 0x2e287: 0x6cf71220,\n\t0x2e288: 0x6cf71420, 0x2e289: 0x6cf71620, 0x2e28a: 0x6cf71820, 0x2e28b: 0x6cf71a20,\n\t0x2e28c: 0x6cf71c20, 0x2e28d: 0x6cf71e20, 0x2e28e: 0x6cf72020, 0x2e28f: 0x6cf72220,\n\t0x2e290: 0x6cf72420, 0x2e291: 0x6cf72620, 0x2e292: 0x6cf72820, 0x2e293: 0x6cf72a20,\n\t0x2e294: 0x6cf72c20, 0x2e295: 0x6cf72e20, 0x2e296: 0x6c9da420, 0x2e297: 0x6cf73020,\n\t0x2e298: 0x6cf73220, 0x2e299: 0x6cf73420, 0x2e29a: 0x6cf73620, 0x2e29b: 0x6cf73820,\n\t0x2e29c: 0x6cf73a20, 0x2e29d: 0x6cf73c20, 0x2e29e: 0x6cf73e20, 0x2e29f: 0x6cf74020,\n\t0x2e2a0: 0x6cf74220, 0x2e2a1: 0x6cf74420, 0x2e2a2: 0x6cf74620, 0x2e2a3: 0x6cf74820,\n\t0x2e2a4: 0x6cf74a20, 0x2e2a5: 0x6cf74c20, 0x2e2a6: 0x6cf74e20, 0x2e2a7: 0x6cf75020,\n\t0x2e2a8: 0x6cf75220, 0x2e2a9: 0x6cf75420, 0x2e2aa: 0x6cf75620, 0x2e2ab: 0x6cf75820,\n\t0x2e2ac: 0x6cf75a20, 0x2e2ad: 0x6cf75c20, 0x2e2ae: 0x6cca8820, 0x2e2af: 0x6cf75e20,\n\t0x2e2b0: 0x6cca8a20, 0x2e2b1: 0x6cf76020, 0x2e2b2: 0x6cf76220, 0x2e2b3: 0x6cf76420,\n\t0x2e2b4: 0x6cf76620, 0x2e2b5: 0x6cf76820, 0x2e2b6: 0x6cf76a20, 0x2e2b7: 0x6cf76c20,\n\t0x2e2b8: 0x6cf76e20, 0x2e2b9: 0x6cf77020, 0x2e2ba: 0x6cf77220, 0x2e2bb: 0x6cf77420,\n\t0x2e2bc: 0x6cf77620, 0x2e2bd: 0x6cf77820, 0x2e2be: 0x6cf77a20, 0x2e2bf: 0x6cf77c20,\n\t// Block 0xb8b, offset 0x2e2c0\n\t0x2e2c0: 0x6cf77e20, 0x2e2c1: 0x6cf78020, 0x2e2c2: 0x6cf78220, 0x2e2c3: 0x6cf78420,\n\t0x2e2c4: 0x6cf78620, 0x2e2c5: 0x6cf78820, 0x2e2c6: 0x6cf78a20, 0x2e2c7: 0x6cf78c20,\n\t0x2e2c8: 0x6cf78e20, 0x2e2c9: 0x6cf79020, 0x2e2ca: 0x6d264e20, 0x2e2cb: 0x6cf79220,\n\t0x2e2cc: 0x6cf79420, 0x2e2cd: 0x6d265020, 0x2e2ce: 0x6d265220, 0x2e2cf: 0x6d265420,\n\t0x2e2d0: 0x6d265620, 0x2e2d1: 0x6d265820, 0x2e2d2: 0x6d265a20, 0x2e2d3: 0x6d265c20,\n\t0x2e2d4: 0x6cf79620, 0x2e2d5: 0x6d265e20, 0x2e2d6: 0x6d266020, 0x2e2d7: 0x6d266220,\n\t0x2e2d8: 0x6cf79820, 0x2e2d9: 0x6d266420, 0x2e2da: 0x6d266620, 0x2e2db: 0x6d266820,\n\t0x2e2dc: 0x6d266a20, 0x2e2dd: 0x6d266c20, 0x2e2de: 0x6d266e20, 0x2e2df: 0x6d267020,\n\t0x2e2e0: 0x6d267220, 0x2e2e1: 0x6d267420, 0x2e2e2: 0x6d267620, 0x2e2e3: 0x6d267820,\n\t0x2e2e4: 0x6d267a20, 0x2e2e5: 0x6d267c20, 0x2e2e6: 0x6d267e20, 0x2e2e7: 0x6d268020,\n\t0x2e2e8: 0x6d268220, 0x2e2e9: 0x6d268420, 0x2e2ea: 0x6d268620, 0x2e2eb: 0x6d268820,\n\t0x2e2ec: 0x6d268a20, 0x2e2ed: 0x6d268c20, 0x2e2ee: 0x6d268e20, 0x2e2ef: 0x6d269020,\n\t0x2e2f0: 0x6d269220, 0x2e2f1: 0x6d269420, 0x2e2f2: 0x6d269620, 0x2e2f3: 0x6d269820,\n\t0x2e2f4: 0x6d269a20, 0x2e2f5: 0x6d269c20, 0x2e2f6: 0x6d269e20, 0x2e2f7: 0x6d26a020,\n\t0x2e2f8: 0x6d26a220, 0x2e2f9: 0x6d26a420, 0x2e2fa: 0x6d26a620, 0x2e2fb: 0x6d26a820,\n\t0x2e2fc: 0x6d26aa20, 0x2e2fd: 0x6d26ac20, 0x2e2fe: 0x6d26ae20, 0x2e2ff: 0x6d26b020,\n\t// Block 0xb8c, offset 0x2e300\n\t0x2e300: 0x6d26b220, 0x2e301: 0x6d26b420, 0x2e302: 0x6d26b620, 0x2e303: 0x6d26b820,\n\t0x2e304: 0x6d26ba20, 0x2e305: 0x6d26bc20, 0x2e306: 0x6d26be20, 0x2e307: 0x6d26c020,\n\t0x2e308: 0x6d26c220, 0x2e309: 0x6d26c420, 0x2e30a: 0x6d26c620, 0x2e30b: 0x6d26c820,\n\t0x2e30c: 0x6d26ca20, 0x2e30d: 0x6d26cc20, 0x2e30e: 0x6d26ce20, 0x2e30f: 0x6d26d020,\n\t0x2e310: 0x6d26d220, 0x2e311: 0x6d26d420, 0x2e312: 0x6d26d620, 0x2e313: 0x6d26d820,\n\t0x2e314: 0x6d26da20, 0x2e315: 0x6d26dc20, 0x2e316: 0x6d26de20, 0x2e317: 0x6d26e020,\n\t0x2e318: 0x6d26e220, 0x2e319: 0x6d26e420, 0x2e31a: 0x6d26e620, 0x2e31b: 0x6d26e820,\n\t0x2e31c: 0x6d26ea20, 0x2e31d: 0x6d26ec20, 0x2e31e: 0x6d26ee20, 0x2e31f: 0x6d26f020,\n\t0x2e320: 0x6d26f220, 0x2e321: 0x6d26f420, 0x2e322: 0x6d53c820, 0x2e323: 0x6d53ca20,\n\t0x2e324: 0x6d53cc20, 0x2e325: 0x6d53ce20, 0x2e326: 0x6d53d020, 0x2e327: 0x6d53d220,\n\t0x2e328: 0x6d53d420, 0x2e329: 0x6d539c20, 0x2e32a: 0x6d53d620, 0x2e32b: 0x6d53d820,\n\t0x2e32c: 0x6d53da20, 0x2e32d: 0x6d53dc20, 0x2e32e: 0x6d53de20, 0x2e32f: 0x6d53e020,\n\t0x2e330: 0x6d53e220, 0x2e331: 0x6d53e420, 0x2e332: 0x6d53e620, 0x2e333: 0x6d53e820,\n\t0x2e334: 0x6d53ea20, 0x2e335: 0x6d53ec20, 0x2e336: 0x6d53ee20, 0x2e337: 0x6d53f020,\n\t0x2e338: 0x6d53f220, 0x2e339: 0x6d53f420, 0x2e33a: 0x6d53f620, 0x2e33b: 0x6d53f820,\n\t0x2e33c: 0x6d53fa20, 0x2e33d: 0x6d53fc20, 0x2e33e: 0x6d53fe20, 0x2e33f: 0x6d540020,\n\t// Block 0xb8d, offset 0x2e340\n\t0x2e340: 0x6d540220, 0x2e341: 0x6d540420, 0x2e342: 0x6d540620, 0x2e343: 0x6d280020,\n\t0x2e344: 0x6d540820, 0x2e345: 0x6d540a20, 0x2e346: 0x6d540c20, 0x2e347: 0x6d540e20,\n\t0x2e348: 0x6d541020, 0x2e349: 0x6d541220, 0x2e34a: 0x6d541420, 0x2e34b: 0x6d541620,\n\t0x2e34c: 0x6d541820, 0x2e34d: 0x6d541a20, 0x2e34e: 0x6d541c20, 0x2e34f: 0x6d541e20,\n\t0x2e350: 0x6d542020, 0x2e351: 0x6d542220, 0x2e352: 0x6d542420, 0x2e353: 0x6d542620,\n\t0x2e354: 0x6d542820, 0x2e355: 0x6d542a20, 0x2e356: 0x6d542c20, 0x2e357: 0x6d542e20,\n\t0x2e358: 0x6d543020, 0x2e359: 0x6d543220, 0x2e35a: 0x6d543420, 0x2e35b: 0x6d543620,\n\t0x2e35c: 0x6d543820, 0x2e35d: 0x6d543a20, 0x2e35e: 0x6d543c20, 0x2e35f: 0x6d543e20,\n\t0x2e360: 0x6d544020, 0x2e361: 0x6d544220, 0x2e362: 0x6d544420, 0x2e363: 0x6d544620,\n\t0x2e364: 0x6d544820, 0x2e365: 0x6d544a20, 0x2e366: 0x6d544c20, 0x2e367: 0x6d544e20,\n\t0x2e368: 0x6d7efe20, 0x2e369: 0x6d545020, 0x2e36a: 0x6d545220, 0x2e36b: 0x6d545420,\n\t0x2e36c: 0x6d545620, 0x2e36d: 0x6d545820, 0x2e36e: 0x6d26f620, 0x2e36f: 0x6d545a20,\n\t0x2e370: 0x6d545c20, 0x2e371: 0x6d545e20, 0x2e372: 0x6d7f3020, 0x2e373: 0x6d7f3220,\n\t0x2e374: 0x6d7f3420, 0x2e375: 0x6d7f3620, 0x2e376: 0x6d7f3820, 0x2e377: 0x6d7f3a20,\n\t0x2e378: 0x6d7f3c20, 0x2e379: 0x6d7f3e20, 0x2e37a: 0x6d7f4020, 0x2e37b: 0x6d7f4220,\n\t0x2e37c: 0x6d7f4420, 0x2e37d: 0x6d7f4620, 0x2e37e: 0x6d7f4820, 0x2e37f: 0x6d7f4a20,\n\t// Block 0xb8e, offset 0x2e380\n\t0x2e380: 0x6d7f4c20, 0x2e381: 0x6d7f4e20, 0x2e382: 0x6d7f5020, 0x2e383: 0x6d7f5220,\n\t0x2e384: 0x6d7f5420, 0x2e385: 0x6d7f5620, 0x2e386: 0x6d7f5820, 0x2e387: 0x6d7f5a20,\n\t0x2e388: 0x6d7f5c20, 0x2e389: 0x6d7f5e20, 0x2e38a: 0x6d7f6020, 0x2e38b: 0x6d7f6220,\n\t0x2e38c: 0x6d7f6420, 0x2e38d: 0x6d7f6620, 0x2e38e: 0x6d7f6820, 0x2e38f: 0x6d7f6a20,\n\t0x2e390: 0x6d7f6c20, 0x2e391: 0x6d7f6e20, 0x2e392: 0x6d7f7020, 0x2e393: 0x6d7f7220,\n\t0x2e394: 0x6d7f7420, 0x2e395: 0x6d7f7620, 0x2e396: 0x6d7f7820, 0x2e397: 0x6d7f7a20,\n\t0x2e398: 0x6d7f7c20, 0x2e399: 0x6d7f7e20, 0x2e39a: 0x6d7f8020, 0x2e39b: 0x6d7f8220,\n\t0x2e39c: 0x6d7f8420, 0x2e39d: 0x6d7f8620, 0x2e39e: 0x6d7f8820, 0x2e39f: 0x6d7f8a20,\n\t0x2e3a0: 0x6d7f8c20, 0x2e3a1: 0x6d7f8e20, 0x2e3a2: 0x6d7f9020, 0x2e3a3: 0x6d7f9220,\n\t0x2e3a4: 0x6d7f9420, 0x2e3a5: 0x6d546020, 0x2e3a6: 0x6d7f9620, 0x2e3a7: 0x6d7f9820,\n\t0x2e3a8: 0x6d7f9a20, 0x2e3a9: 0x6d7f9c20, 0x2e3aa: 0x6d7f9e20, 0x2e3ab: 0x6d7fa020,\n\t0x2e3ac: 0x6d7fa220, 0x2e3ad: 0x6d7fa420, 0x2e3ae: 0x6d7fa620, 0x2e3af: 0x6d7fa820,\n\t0x2e3b0: 0x6d7faa20, 0x2e3b1: 0x6d7fac20, 0x2e3b2: 0x6d7fae20, 0x2e3b3: 0x6d7fb020,\n\t0x2e3b4: 0x6d7f0020, 0x2e3b5: 0x6d7fb220, 0x2e3b6: 0x6d7fb420, 0x2e3b7: 0x6d7fb620,\n\t0x2e3b8: 0x6d7fb820, 0x2e3b9: 0x6d7fba20, 0x2e3ba: 0x6d7fbc20, 0x2e3bb: 0x6d7fbe20,\n\t0x2e3bc: 0x6d7fc020, 0x2e3bd: 0x6da5dc20, 0x2e3be: 0x6da5de20, 0x2e3bf: 0x6da5e020,\n\t// Block 0xb8f, offset 0x2e3c0\n\t0x2e3c0: 0x6da5e220, 0x2e3c1: 0x6da5e420, 0x2e3c2: 0x6da5e620, 0x2e3c3: 0x6da5e820,\n\t0x2e3c4: 0x6da5ea20, 0x2e3c5: 0x6da5ec20, 0x2e3c6: 0x6da5ee20, 0x2e3c7: 0x6da5f020,\n\t0x2e3c8: 0x6da5f220, 0x2e3c9: 0x6da5f420, 0x2e3ca: 0x6da5f620, 0x2e3cb: 0x6da5f820,\n\t0x2e3cc: 0x6da5fa20, 0x2e3cd: 0x6da5fc20, 0x2e3ce: 0x6da5fe20, 0x2e3cf: 0x6da60020,\n\t0x2e3d0: 0x6da60220, 0x2e3d1: 0x6da60420, 0x2e3d2: 0x6da60620, 0x2e3d3: 0x6da60820,\n\t0x2e3d4: 0x6da60a20, 0x2e3d5: 0x6da60c20, 0x2e3d6: 0x6da60e20, 0x2e3d7: 0x6da61020,\n\t0x2e3d8: 0x6da61220, 0x2e3d9: 0x6da61420, 0x2e3da: 0x6da61620, 0x2e3db: 0x6da61820,\n\t0x2e3dc: 0x6da61a20, 0x2e3dd: 0x6da61c20, 0x2e3de: 0x6da61e20, 0x2e3df: 0x6da62020,\n\t0x2e3e0: 0x6da62220, 0x2e3e1: 0x6da62420, 0x2e3e2: 0x6da62620, 0x2e3e3: 0x6da62820,\n\t0x2e3e4: 0x6da62a20, 0x2e3e5: 0x6da62c20, 0x2e3e6: 0x6da62e20, 0x2e3e7: 0x6da63020,\n\t0x2e3e8: 0x6da63220, 0x2e3e9: 0x6da63420, 0x2e3ea: 0x6da63620, 0x2e3eb: 0x6dc76220,\n\t0x2e3ec: 0x6dc76420, 0x2e3ed: 0x6dc76620, 0x2e3ee: 0x6dc76820, 0x2e3ef: 0x6dc76a20,\n\t0x2e3f0: 0x6dc76c20, 0x2e3f1: 0x6dc76e20, 0x2e3f2: 0x6dc77020, 0x2e3f3: 0x6dc77220,\n\t0x2e3f4: 0x6dc77420, 0x2e3f5: 0x6dc77620, 0x2e3f6: 0x6dc77820, 0x2e3f7: 0x6dc77a20,\n\t0x2e3f8: 0x6dc77c20, 0x2e3f9: 0x6dc77e20, 0x2e3fa: 0x6dc78020, 0x2e3fb: 0x6dc78220,\n\t0x2e3fc: 0x6dc78420, 0x2e3fd: 0x6dc78620, 0x2e3fe: 0x6dc78820, 0x2e3ff: 0x6dc78a20,\n\t// Block 0xb90, offset 0x2e400\n\t0x2e400: 0x6dc78c20, 0x2e401: 0x6dc78e20, 0x2e402: 0x6dc79020, 0x2e403: 0x6dc79220,\n\t0x2e404: 0x6dc79420, 0x2e405: 0x6dc79620, 0x2e406: 0x6dc79820, 0x2e407: 0x6dc79a20,\n\t0x2e408: 0x6dc79c20, 0x2e409: 0x6dc79e20, 0x2e40a: 0x6dc7a020, 0x2e40b: 0x6de3ca20,\n\t0x2e40c: 0x6de3cc20, 0x2e40d: 0x6de3ce20, 0x2e40e: 0x6de3d020, 0x2e40f: 0x6de3d220,\n\t0x2e410: 0x6de3d420, 0x2e411: 0x6de3d620, 0x2e412: 0x6de3d820, 0x2e413: 0x6de3da20,\n\t0x2e414: 0x6de3dc20, 0x2e415: 0x6de3de20, 0x2e416: 0x6de3e020, 0x2e417: 0x6de3e220,\n\t0x2e418: 0x6de3e420, 0x2e419: 0x6de3e620, 0x2e41a: 0x6de3e820, 0x2e41b: 0x6da6f220,\n\t0x2e41c: 0x6de3ea20, 0x2e41d: 0x6de3ec20, 0x2e41e: 0x6de3ee20, 0x2e41f: 0x6de3f020,\n\t0x2e420: 0x6de3f220, 0x2e421: 0x6dc84c20, 0x2e422: 0x6de3f420, 0x2e423: 0x6de3f620,\n\t0x2e424: 0x6de3f820, 0x2e425: 0x6de3fa20, 0x2e426: 0x6de3fc20, 0x2e427: 0x6de47820,\n\t0x2e428: 0x6dfb2020, 0x2e429: 0x6dfb2220, 0x2e42a: 0x6dfb2420, 0x2e42b: 0x6de3fe20,\n\t0x2e42c: 0x6dfb2620, 0x2e42d: 0x6dc84e20, 0x2e42e: 0x6dfb2820, 0x2e42f: 0x6dfb2a20,\n\t0x2e430: 0x6dfb2c20, 0x2e431: 0x6dfb2e20, 0x2e432: 0x6dfb3020, 0x2e433: 0x6dfb3220,\n\t0x2e434: 0x6dfb3420, 0x2e435: 0x6dfb3620, 0x2e436: 0x6dfb3820, 0x2e437: 0x6e1db620,\n\t0x2e438: 0x6e0e6220, 0x2e439: 0x6dfb9820, 0x2e43a: 0x6e0e6420, 0x2e43b: 0x6e0e6620,\n\t0x2e43c: 0x6e0e6820, 0x2e43d: 0x6e0e6a20, 0x2e43e: 0x6e0e6c20, 0x2e43f: 0x6e0e6e20,\n\t// Block 0xb91, offset 0x2e440\n\t0x2e440: 0x6e0e7020, 0x2e441: 0x6e0e7220, 0x2e442: 0x6e0e7420, 0x2e443: 0x6e0e7620,\n\t0x2e444: 0x6e0e7820, 0x2e445: 0x6e0e7a20, 0x2e446: 0x6e1db820, 0x2e447: 0x6e1dba20,\n\t0x2e448: 0x6e1dbc20, 0x2e449: 0x6e1dbe20, 0x2e44a: 0x6e1dc020, 0x2e44b: 0x6e1dc220,\n\t0x2e44c: 0x6e0e7c20, 0x2e44d: 0x6e1dc420, 0x2e44e: 0x6e1dc620, 0x2e44f: 0x6e294220,\n\t0x2e450: 0x6e294420, 0x2e451: 0x6e294620, 0x2e452: 0x6e294820, 0x2e453: 0x6e325e20,\n\t0x2e454: 0x6e326020, 0x2e455: 0x6e326220, 0x2e456: 0x6e38b020, 0x2e457: 0x6e38b220,\n\t0x2e458: 0x6e38b420, 0x2e459: 0x6e38b620, 0x2e45a: 0x6e38b820, 0x2e45b: 0x6e38ba20,\n\t0x2e45c: 0x6e3d3020, 0x2e45d: 0x6e38d420, 0x2e45e: 0x6e42a620, 0x2e45f: 0x6e42a820,\n\t0x2e460: 0x6c04a620, 0x2e461: 0x6c12b420, 0x2e462: 0x6c12b620, 0x2e463: 0x6c376e20,\n\t0x2e464: 0x6c223c20, 0x2e465: 0x6c377020, 0x2e466: 0x6c377220, 0x2e467: 0x6c377420,\n\t0x2e468: 0x6c52ce20, 0x2e469: 0x6c52d020, 0x2e46a: 0x6c52d220, 0x2e46b: 0x6c755220,\n\t0x2e46c: 0x6c755420, 0x2e46d: 0x6c755620, 0x2e46e: 0x6c755820, 0x2e46f: 0x6c755a20,\n\t0x2e470: 0x6c755c20, 0x2e471: 0x6c755e20, 0x2e472: 0x6c9dae20, 0x2e473: 0x6c9db020,\n\t0x2e474: 0x6c758620, 0x2e475: 0x6c9db220, 0x2e476: 0x6c9db420, 0x2e477: 0x6c9db620,\n\t0x2e478: 0x6c9db820, 0x2e479: 0x6cca9820, 0x2e47a: 0x6cca9a20, 0x2e47b: 0x6cca9c20,\n\t0x2e47c: 0x6cca9e20, 0x2e47d: 0x6ccaa020, 0x2e47e: 0x6ccaa220, 0x2e47f: 0x6ccaa420,\n\t// Block 0xb92, offset 0x2e480\n\t0x2e480: 0x6cf8c820, 0x2e481: 0x6cf8ca20, 0x2e482: 0x6cf8cc20, 0x2e483: 0x6cf8ce20,\n\t0x2e484: 0x6cf8d020, 0x2e485: 0x6cf8d220, 0x2e486: 0x6cf8d420, 0x2e487: 0x6cf8d620,\n\t0x2e488: 0x6cf8d820, 0x2e489: 0x6d280820, 0x2e48a: 0x6d280a20, 0x2e48b: 0x6d280c20,\n\t0x2e48c: 0x6d280e20, 0x2e48d: 0x6d281020, 0x2e48e: 0x6d555620, 0x2e48f: 0x6d555820,\n\t0x2e490: 0x6d555a20, 0x2e491: 0x6d555c20, 0x2e492: 0x6d555e20, 0x2e493: 0x6d556020,\n\t0x2e494: 0x6d80d420, 0x2e495: 0x6d80d620, 0x2e496: 0x6d80d820, 0x2e497: 0x6d80da20,\n\t0x2e498: 0x6d80dc20, 0x2e499: 0x6d80de20, 0x2e49a: 0x6d80e020, 0x2e49b: 0x6da6fc20,\n\t0x2e49c: 0x6da6fe20, 0x2e49d: 0x6da70020, 0x2e49e: 0x6dc85020, 0x2e49f: 0x6dc85220,\n\t0x2e4a0: 0x6de47c20, 0x2e4a1: 0x6e1e0e20, 0x2e4a2: 0x6c04a820, 0x2e4a3: 0x6c097620,\n\t0x2e4a4: 0x6c12bc20, 0x2e4a5: 0x6c225220, 0x2e4a6: 0x6c379420, 0x2e4a7: 0x6c379620,\n\t0x2e4a8: 0x6c379820, 0x2e4a9: 0x6c379a20, 0x2e4aa: 0x6c52fe20, 0x2e4ab: 0x6c530020,\n\t0x2e4ac: 0x6c758820, 0x2e4ad: 0x6c758a20, 0x2e4ae: 0x6ccad620, 0x2e4af: 0x6ccad820,\n\t0x2e4b0: 0x6d284020, 0x2e4b1: 0x6cf90620, 0x2e4b2: 0x6cf90820, 0x2e4b3: 0x6cf90a20,\n\t0x2e4b4: 0x6d284420, 0x2e4b5: 0x6d558420, 0x2e4b6: 0x6d558620, 0x2e4b7: 0x6d80f220,\n\t0x2e4b8: 0x6dc85e20, 0x2e4b9: 0x6c04ae20, 0x2e4ba: 0x6c097c20, 0x2e4bb: 0x6c12c420,\n\t0x2e4bc: 0x6c225e20, 0x2e4bd: 0x6c37d220, 0x2e4be: 0x6c37d420, 0x2e4bf: 0x6c37d620,\n\t// Block 0xb93, offset 0x2e4c0\n\t0x2e4c0: 0x6c37d820, 0x2e4c1: 0x6c37da20, 0x2e4c2: 0x6c530e20, 0x2e4c3: 0x6c531020,\n\t0x2e4c4: 0x6c531220, 0x2e4c5: 0x6c531420, 0x2e4c6: 0x6c531620, 0x2e4c7: 0x6c531820,\n\t0x2e4c8: 0x6c75aa20, 0x2e4c9: 0x6c75ac20, 0x2e4ca: 0x6c75ae20, 0x2e4cb: 0x6c75b020,\n\t0x2e4cc: 0x6c9dec20, 0x2e4cd: 0x6c9dee20, 0x2e4ce: 0x6c9df020, 0x2e4cf: 0x6c9df220,\n\t0x2e4d0: 0x6c9df420, 0x2e4d1: 0x6c9df620, 0x2e4d2: 0x6c9df820, 0x2e4d3: 0x6c9dfa20,\n\t0x2e4d4: 0x6ccb0420, 0x2e4d5: 0x6ccb0620, 0x2e4d6: 0x6ccb0820, 0x2e4d7: 0x6ccb0a20,\n\t0x2e4d8: 0x6ccb0c20, 0x2e4d9: 0x6ccb0e20, 0x2e4da: 0x6ccb1020, 0x2e4db: 0x6cf92c20,\n\t0x2e4dc: 0x6cf92e20, 0x2e4dd: 0x6d285820, 0x2e4de: 0x6d285a20, 0x2e4df: 0x6d285c20,\n\t0x2e4e0: 0x6d285e20, 0x2e4e1: 0x6d286020, 0x2e4e2: 0x6d559e20, 0x2e4e3: 0x6d55a020,\n\t0x2e4e4: 0x6d55a220, 0x2e4e5: 0x6d55a420, 0x2e4e6: 0x6d55a620, 0x2e4e7: 0x6d810820,\n\t0x2e4e8: 0x6d810a20, 0x2e4e9: 0x6d810c20, 0x2e4ea: 0x6d810e20, 0x2e4eb: 0x6d811020,\n\t0x2e4ec: 0x6da72020, 0x2e4ed: 0x6da72220, 0x2e4ee: 0x6da72420, 0x2e4ef: 0x6dc86c20,\n\t0x2e4f0: 0x6de48a20, 0x2e4f1: 0x6de48c20, 0x2e4f2: 0x6e0ee220, 0x2e4f3: 0x6c04b420,\n\t0x2e4f4: 0x6c380620, 0x2e4f5: 0x6c534820, 0x2e4f6: 0x6c534a20, 0x2e4f7: 0x6c75e020,\n\t0x2e4f8: 0x6c9e2220, 0x2e4f9: 0x6c9e2420, 0x2e4fa: 0x6c9e2620, 0x2e4fb: 0x6c9e2820,\n\t0x2e4fc: 0x6ccb5020, 0x2e4fd: 0x6ccb5220, 0x2e4fe: 0x6ccb6820, 0x2e4ff: 0x6cf95820,\n\t// Block 0xb94, offset 0x2e500\n\t0x2e500: 0x6cf95a20, 0x2e501: 0x6cf95c20, 0x2e502: 0x6cf95e20, 0x2e503: 0x6d287820,\n\t0x2e504: 0x6d287a20, 0x2e505: 0x6d55ca20, 0x2e506: 0x6d55cc20, 0x2e507: 0x6d812e20,\n\t0x2e508: 0x6d813020, 0x2e509: 0x6dc89020, 0x2e50a: 0x6e298620, 0x2e50b: 0x6c04b620,\n\t0x2e50c: 0x6c04b820, 0x2e50d: 0x6c098020, 0x2e50e: 0x6c12d420, 0x2e50f: 0x6c227620,\n\t0x2e510: 0x6c227820, 0x2e511: 0x6c380e20, 0x2e512: 0x6c535220, 0x2e513: 0x6cf97c20,\n\t0x2e514: 0x6c04bc20, 0x2e515: 0x6c12d820, 0x2e516: 0x6c535820, 0x2e517: 0x6c535a20,\n\t0x2e518: 0x6c535c20, 0x2e519: 0x6c75ee20, 0x2e51a: 0x6da74620, 0x2e51b: 0x6c04be20,\n\t0x2e51c: 0x6c228220, 0x2e51d: 0x6c228420, 0x2e51e: 0x6c382a20, 0x2e51f: 0x6c382c20,\n\t0x2e520: 0x6c536020, 0x2e521: 0x6c536220, 0x2e522: 0x6c75f820, 0x2e523: 0x6c75fa20,\n\t0x2e524: 0x6c75fc20, 0x2e525: 0x6c75fe20, 0x2e526: 0x6c760020, 0x2e527: 0x6c760220,\n\t0x2e528: 0x6c760420, 0x2e529: 0x6c760620, 0x2e52a: 0x6c760820, 0x2e52b: 0x6c9e6220,\n\t0x2e52c: 0x6c9e6420, 0x2e52d: 0x6c9e6620, 0x2e52e: 0x6c9e6820, 0x2e52f: 0x6ccb7220,\n\t0x2e530: 0x6ccb7420, 0x2e531: 0x6ccb7620, 0x2e532: 0x6ccb7820, 0x2e533: 0x6ccb7a20,\n\t0x2e534: 0x6ccb7c20, 0x2e535: 0x6ccb7e20, 0x2e536: 0x6ccb8020, 0x2e537: 0x6cf98c20,\n\t0x2e538: 0x6cf98e20, 0x2e539: 0x6cf99020, 0x2e53a: 0x6cf99220, 0x2e53b: 0x6cf99420,\n\t0x2e53c: 0x6cf99620, 0x2e53d: 0x6cf99820, 0x2e53e: 0x6d28aa20, 0x2e53f: 0x6d55de20,\n\t// Block 0xb95, offset 0x2e540\n\t0x2e540: 0x6d55e020, 0x2e541: 0x6d55e220, 0x2e542: 0x6d55e420, 0x2e543: 0x6d816620,\n\t0x2e544: 0x6d816820, 0x2e545: 0x6d816a20, 0x2e546: 0x6d816c20, 0x2e547: 0x6d816e20,\n\t0x2e548: 0x6da74a20, 0x2e549: 0x6da74c20, 0x2e54a: 0x6da74e20, 0x2e54b: 0x6dc89620,\n\t0x2e54c: 0x6de4a420, 0x2e54d: 0x6e1e2420, 0x2e54e: 0x6e3d4a20, 0x2e54f: 0x6c04c220,\n\t0x2e550: 0x6c098420, 0x2e551: 0x6c098620, 0x2e552: 0x6c12e620, 0x2e553: 0x6c385020,\n\t0x2e554: 0x6c04c420, 0x2e555: 0x6c098a20, 0x2e556: 0x6c12ea20, 0x2e557: 0x6c12ec20,\n\t0x2e558: 0x6c12ee20, 0x2e559: 0x6c229620, 0x2e55a: 0x6c229820, 0x2e55b: 0x6c385820,\n\t0x2e55c: 0x6c385a20, 0x2e55d: 0x6c385c20, 0x2e55e: 0x6c53b820, 0x2e55f: 0x6c53ba20,\n\t0x2e560: 0x6c53bc20, 0x2e561: 0x6c53be20, 0x2e562: 0x6c53c020, 0x2e563: 0x6c763a20,\n\t0x2e564: 0x6c763c20, 0x2e565: 0x6c763e20, 0x2e566: 0x6c764020, 0x2e567: 0x6c764220,\n\t0x2e568: 0x6c764420, 0x2e569: 0x6c764620, 0x2e56a: 0x6c9ea220, 0x2e56b: 0x6c9ea420,\n\t0x2e56c: 0x6ccbc620, 0x2e56d: 0x6ccbc820, 0x2e56e: 0x6ccbca20, 0x2e56f: 0x6ccbcc20,\n\t0x2e570: 0x6ccbce20, 0x2e571: 0x6cf9d820, 0x2e572: 0x6d28ec20, 0x2e573: 0x6d28ee20,\n\t0x2e574: 0x6c04c620, 0x2e575: 0x6c01fa20, 0x2e576: 0x6c098e20, 0x2e577: 0x6c099020,\n\t0x2e578: 0x6c099220, 0x2e579: 0x6c099420, 0x2e57a: 0x6c098c20, 0x2e57b: 0x6c099c20,\n\t0x2e57c: 0x6c12f620, 0x2e57d: 0x6c0c5c20, 0x2e57e: 0x6c099e20, 0x2e57f: 0x6c09a020,\n\t// Block 0xb96, offset 0x2e580\n\t0x2e580: 0x6c09a220, 0x2e581: 0x6c09a420, 0x2e582: 0x6c229e20, 0x2e583: 0x6c09a620,\n\t0x2e584: 0x6c09a820, 0x2e585: 0x6c09aa20, 0x2e586: 0x6c12f820, 0x2e587: 0x6c09ac20,\n\t0x2e588: 0x6c09ae20, 0x2e589: 0x6c09b020, 0x2e58a: 0x6c12fe20, 0x2e58b: 0x6c130020,\n\t0x2e58c: 0x6c130220, 0x2e58d: 0x6c130420, 0x2e58e: 0x6c130620, 0x2e58f: 0x6c130820,\n\t0x2e590: 0x6c130a20, 0x2e591: 0x6c130c20, 0x2e592: 0x6c130e20, 0x2e593: 0x6c131020,\n\t0x2e594: 0x6c131220, 0x2e595: 0x6c131420, 0x2e596: 0x6c22a220, 0x2e597: 0x6c131620,\n\t0x2e598: 0x6c131820, 0x2e599: 0x6c131a20, 0x2e59a: 0x6c131c20, 0x2e59b: 0x6c131e20,\n\t0x2e59c: 0x6c132020, 0x2e59d: 0x6c132220, 0x2e59e: 0x6c22a420, 0x2e59f: 0x6c132420,\n\t0x2e5a0: 0x6c132620, 0x2e5a1: 0x6c132820, 0x2e5a2: 0x6c132a20, 0x2e5a3: 0x6c132c20,\n\t0x2e5a4: 0x6c132e20, 0x2e5a5: 0x6c22bc20, 0x2e5a6: 0x6c22be20, 0x2e5a7: 0x6c22c020,\n\t0x2e5a8: 0x6c22c220, 0x2e5a9: 0x6c22c420, 0x2e5aa: 0x6c22c620, 0x2e5ab: 0x6c22c820,\n\t0x2e5ac: 0x6c386620, 0x2e5ad: 0x6c22ca20, 0x2e5ae: 0x6c22cc20, 0x2e5af: 0x6c22ce20,\n\t0x2e5b0: 0x6c22d020, 0x2e5b1: 0x6c22d220, 0x2e5b2: 0x6c22d420, 0x2e5b3: 0x6c22d620,\n\t0x2e5b4: 0x6c22d820, 0x2e5b5: 0x6c22da20, 0x2e5b6: 0x6c22dc20, 0x2e5b7: 0x6c135420,\n\t0x2e5b8: 0x6c22de20, 0x2e5b9: 0x6c22e020, 0x2e5ba: 0x6c22e220, 0x2e5bb: 0x6c22e420,\n\t0x2e5bc: 0x6c22e620, 0x2e5bd: 0x6c22e820, 0x2e5be: 0x6c22ea20, 0x2e5bf: 0x6c22ec20,\n\t// Block 0xb97, offset 0x2e5c0\n\t0x2e5c0: 0x6c386820, 0x2e5c1: 0x6c22ee20, 0x2e5c2: 0x6c22f020, 0x2e5c3: 0x6c22f220,\n\t0x2e5c4: 0x6c22f420, 0x2e5c5: 0x6c22f620, 0x2e5c6: 0x6c22f820, 0x2e5c7: 0x6c22fa20,\n\t0x2e5c8: 0x6c22fc20, 0x2e5c9: 0x6c22fe20, 0x2e5ca: 0x6c386a20, 0x2e5cb: 0x6c230020,\n\t0x2e5cc: 0x6c230220, 0x2e5cd: 0x6c230420, 0x2e5ce: 0x6c230620, 0x2e5cf: 0x6c230820,\n\t0x2e5d0: 0x6c230a20, 0x2e5d1: 0x6c230c20, 0x2e5d2: 0x6c230e20, 0x2e5d3: 0x6c386c20,\n\t0x2e5d4: 0x6c231020, 0x2e5d5: 0x6c231220, 0x2e5d6: 0x6c231420, 0x2e5d7: 0x6c53ce20,\n\t0x2e5d8: 0x6c231620, 0x2e5d9: 0x6c231820, 0x2e5da: 0x6c231a20, 0x2e5db: 0x6c231c20,\n\t0x2e5dc: 0x6c231e20, 0x2e5dd: 0x6c386e20, 0x2e5de: 0x6c232020, 0x2e5df: 0x6c232220,\n\t0x2e5e0: 0x6c232420, 0x2e5e1: 0x6c232620, 0x2e5e2: 0x6c232820, 0x2e5e3: 0x6c232a20,\n\t0x2e5e4: 0x6c232c20, 0x2e5e5: 0x6c232e20, 0x2e5e6: 0x6c233020, 0x2e5e7: 0x6c233220,\n\t0x2e5e8: 0x6c233420, 0x2e5e9: 0x6c233620, 0x2e5ea: 0x6c233820, 0x2e5eb: 0x6c388620,\n\t0x2e5ec: 0x6c388820, 0x2e5ed: 0x6c388a20, 0x2e5ee: 0x6c388c20, 0x2e5ef: 0x6c53d020,\n\t0x2e5f0: 0x6c388e20, 0x2e5f1: 0x6c389020, 0x2e5f2: 0x6c389220, 0x2e5f3: 0x6c389420,\n\t0x2e5f4: 0x6c389620, 0x2e5f5: 0x6c389820, 0x2e5f6: 0x6c389a20, 0x2e5f7: 0x6c389c20,\n\t0x2e5f8: 0x6c389e20, 0x2e5f9: 0x6c38a020, 0x2e5fa: 0x6c38a220, 0x2e5fb: 0x6c38a420,\n\t0x2e5fc: 0x6c38a620, 0x2e5fd: 0x6c38a820, 0x2e5fe: 0x6c38aa20, 0x2e5ff: 0x6c38ac20,\n\t// Block 0xb98, offset 0x2e600\n\t0x2e600: 0x6c38ae20, 0x2e601: 0x6c38b020, 0x2e602: 0x6c38b220, 0x2e603: 0x6c38b420,\n\t0x2e604: 0x6c38b620, 0x2e605: 0x6c38b820, 0x2e606: 0x6c38ba20, 0x2e607: 0x6c38bc20,\n\t0x2e608: 0x6c38be20, 0x2e609: 0x6c53d220, 0x2e60a: 0x6c38c020, 0x2e60b: 0x6c38c220,\n\t0x2e60c: 0x6c38c420, 0x2e60d: 0x6c38c620, 0x2e60e: 0x6c38c820, 0x2e60f: 0x6c38ca20,\n\t0x2e610: 0x6c38cc20, 0x2e611: 0x6c38ce20, 0x2e612: 0x6c38d020, 0x2e613: 0x6c38d220,\n\t0x2e614: 0x6c38d420, 0x2e615: 0x6c38d620, 0x2e616: 0x6c38d820, 0x2e617: 0x6c38da20,\n\t0x2e618: 0x6c38dc20, 0x2e619: 0x6c38de20, 0x2e61a: 0x6c53f220, 0x2e61b: 0x6c38e020,\n\t0x2e61c: 0x6c38e220, 0x2e61d: 0x6c38e420, 0x2e61e: 0x6c38e620, 0x2e61f: 0x6c38e820,\n\t0x2e620: 0x6c38ea20, 0x2e621: 0x6c38ec20, 0x2e622: 0x6c38ee20, 0x2e623: 0x6c38f020,\n\t0x2e624: 0x6c38f220, 0x2e625: 0x6c38f420, 0x2e626: 0x6c38f620, 0x2e627: 0x6c38f820,\n\t0x2e628: 0x6c38fa20, 0x2e629: 0x6c38fc20, 0x2e62a: 0x6c38fe20, 0x2e62b: 0x6c390020,\n\t0x2e62c: 0x6c390220, 0x2e62d: 0x6c390420, 0x2e62e: 0x6c390620, 0x2e62f: 0x6c390820,\n\t0x2e630: 0x6c764a20, 0x2e631: 0x6c390a20, 0x2e632: 0x6c390c20, 0x2e633: 0x6c390e20,\n\t0x2e634: 0x6c53d420, 0x2e635: 0x6c5a4620, 0x2e636: 0x6c53d620, 0x2e637: 0x6c391020,\n\t0x2e638: 0x6c391220, 0x2e639: 0x6c391420, 0x2e63a: 0x6c391620, 0x2e63b: 0x6c391820,\n\t0x2e63c: 0x6c391a20, 0x2e63d: 0x6c391c20, 0x2e63e: 0x6c391e20, 0x2e63f: 0x6c53f420,\n\t// Block 0xb99, offset 0x2e640\n\t0x2e640: 0x6c53f620, 0x2e641: 0x6c53f820, 0x2e642: 0x6c53fa20, 0x2e643: 0x6c53fc20,\n\t0x2e644: 0x6c53fe20, 0x2e645: 0x6c540020, 0x2e646: 0x6c540220, 0x2e647: 0x6c540420,\n\t0x2e648: 0x6c540620, 0x2e649: 0x6c540820, 0x2e64a: 0x6c540a20, 0x2e64b: 0x6c540c20,\n\t0x2e64c: 0x6c540e20, 0x2e64d: 0x6c767020, 0x2e64e: 0x6c541020, 0x2e64f: 0x6c541220,\n\t0x2e650: 0x6c541420, 0x2e651: 0x6c541620, 0x2e652: 0x6c541820, 0x2e653: 0x6c541a20,\n\t0x2e654: 0x6c541c20, 0x2e655: 0x6c541e20, 0x2e656: 0x6c767220, 0x2e657: 0x6c542020,\n\t0x2e658: 0x6c542220, 0x2e659: 0x6c542420, 0x2e65a: 0x6c542620, 0x2e65b: 0x6c542820,\n\t0x2e65c: 0x6c764c20, 0x2e65d: 0x6c542a20, 0x2e65e: 0x6c542c20, 0x2e65f: 0x6c542e20,\n\t0x2e660: 0x6c543020, 0x2e661: 0x6c543220, 0x2e662: 0x6c543420, 0x2e663: 0x6c543620,\n\t0x2e664: 0x6c543820, 0x2e665: 0x6c543a20, 0x2e666: 0x6c543c20, 0x2e667: 0x6c543e20,\n\t0x2e668: 0x6c544020, 0x2e669: 0x6c544220, 0x2e66a: 0x6c544420, 0x2e66b: 0x6c544620,\n\t0x2e66c: 0x6c544820, 0x2e66d: 0x6c544a20, 0x2e66e: 0x6c544c20, 0x2e66f: 0x6c764e20,\n\t0x2e670: 0x6c399020, 0x2e671: 0x6c544e20, 0x2e672: 0x6c545020, 0x2e673: 0x6c545220,\n\t0x2e674: 0x6c545420, 0x2e675: 0x6c545620, 0x2e676: 0x6c545820, 0x2e677: 0x6c545a20,\n\t0x2e678: 0x6c545c20, 0x2e679: 0x6c545e20, 0x2e67a: 0x6c546020, 0x2e67b: 0x6c546220,\n\t0x2e67c: 0x6c546420, 0x2e67d: 0x6c546620, 0x2e67e: 0x6c546820, 0x2e67f: 0x6c546a20,\n\t// Block 0xb9a, offset 0x2e680\n\t0x2e680: 0x6c546c20, 0x2e681: 0x6c546e20, 0x2e682: 0x6c547020, 0x2e683: 0x6c547220,\n\t0x2e684: 0x6c547420, 0x2e685: 0x6c547620, 0x2e686: 0x6c765020, 0x2e687: 0x6c547820,\n\t0x2e688: 0x6c547a20, 0x2e689: 0x6c547c20, 0x2e68a: 0x6c547e20, 0x2e68b: 0x6c548020,\n\t0x2e68c: 0x6c548220, 0x2e68d: 0x6c548420, 0x2e68e: 0x6c548620, 0x2e68f: 0x6c548820,\n\t0x2e690: 0x6c548a20, 0x2e691: 0x6c548c20, 0x2e692: 0x6c548e20, 0x2e693: 0x6c549020,\n\t0x2e694: 0x6c549220, 0x2e695: 0x6c549420, 0x2e696: 0x6c767420, 0x2e697: 0x6c767620,\n\t0x2e698: 0x6c767820, 0x2e699: 0x6c767a20, 0x2e69a: 0x6c767c20, 0x2e69b: 0x6c767e20,\n\t0x2e69c: 0x6c768020, 0x2e69d: 0x6c768220, 0x2e69e: 0x6c768420, 0x2e69f: 0x6c768620,\n\t0x2e6a0: 0x6c768820, 0x2e6a1: 0x6c768a20, 0x2e6a2: 0x6c768c20, 0x2e6a3: 0x6c768e20,\n\t0x2e6a4: 0x6c769020, 0x2e6a5: 0x6c769220, 0x2e6a6: 0x6c769420, 0x2e6a7: 0x6c769620,\n\t0x2e6a8: 0x6c769820, 0x2e6a9: 0x6c769a20, 0x2e6aa: 0x6c769c20, 0x2e6ab: 0x6c769e20,\n\t0x2e6ac: 0x6c76a020, 0x2e6ad: 0x6c76a220, 0x2e6ae: 0x6c76a420, 0x2e6af: 0x6c76a620,\n\t0x2e6b0: 0x6c76a820, 0x2e6b1: 0x6c76aa20, 0x2e6b2: 0x6c76ac20, 0x2e6b3: 0x6c76ae20,\n\t0x2e6b4: 0x6c76b020, 0x2e6b5: 0x6c76b220, 0x2e6b6: 0x6c76b420, 0x2e6b7: 0x6c76b620,\n\t0x2e6b8: 0x6c76b820, 0x2e6b9: 0x6c76ba20, 0x2e6ba: 0x6c76bc20, 0x2e6bb: 0x6c76be20,\n\t0x2e6bc: 0x6c76c020, 0x2e6bd: 0x6c76c220, 0x2e6be: 0x6c76c420, 0x2e6bf: 0x6c76c620,\n\t// Block 0xb9b, offset 0x2e6c0\n\t0x2e6c0: 0x6c76c820, 0x2e6c1: 0x6c76ca20, 0x2e6c2: 0x6c76cc20, 0x2e6c3: 0x6c76ce20,\n\t0x2e6c4: 0x6c76d020, 0x2e6c5: 0x6c76d220, 0x2e6c6: 0x6c76d420, 0x2e6c7: 0x6c76d620,\n\t0x2e6c8: 0x6c76d820, 0x2e6c9: 0x6c76da20, 0x2e6ca: 0x6c76dc20, 0x2e6cb: 0x6c76de20,\n\t0x2e6cc: 0x6c76e020, 0x2e6cd: 0x6c76e220, 0x2e6ce: 0x6c9eae20, 0x2e6cf: 0x6c76e420,\n\t0x2e6d0: 0x6c76e620, 0x2e6d1: 0x6c76e820, 0x2e6d2: 0x6c76ea20, 0x2e6d3: 0x6c76ec20,\n\t0x2e6d4: 0x6c76ee20, 0x2e6d5: 0x6c76f020, 0x2e6d6: 0x6c76f220, 0x2e6d7: 0x6c76f420,\n\t0x2e6d8: 0x6c76f620, 0x2e6d9: 0x6c9ee020, 0x2e6da: 0x6c76f820, 0x2e6db: 0x6c76fa20,\n\t0x2e6dc: 0x6c76fc20, 0x2e6dd: 0x6c76fe20, 0x2e6de: 0x6c770020, 0x2e6df: 0x6c770220,\n\t0x2e6e0: 0x6c770420, 0x2e6e1: 0x6c770620, 0x2e6e2: 0x6c770820, 0x2e6e3: 0x6c770a20,\n\t0x2e6e4: 0x6c770c20, 0x2e6e5: 0x6c770e20, 0x2e6e6: 0x6c771020, 0x2e6e7: 0x6c771220,\n\t0x2e6e8: 0x6c771420, 0x2e6e9: 0x6c771620, 0x2e6ea: 0x6c9ee220, 0x2e6eb: 0x6c9ee420,\n\t0x2e6ec: 0x6c9ee620, 0x2e6ed: 0x6c9ee820, 0x2e6ee: 0x6c9eea20, 0x2e6ef: 0x6c9eec20,\n\t0x2e6f0: 0x6c9eee20, 0x2e6f1: 0x6c9ef020, 0x2e6f2: 0x6c9ef220, 0x2e6f3: 0x6c9ef420,\n\t0x2e6f4: 0x6c9ef620, 0x2e6f5: 0x6c9ef820, 0x2e6f6: 0x6c9efa20, 0x2e6f7: 0x6c9efc20,\n\t0x2e6f8: 0x6c9efe20, 0x2e6f9: 0x6c9f0020, 0x2e6fa: 0x6c9f0220, 0x2e6fb: 0x6c9f0420,\n\t0x2e6fc: 0x6c9f0620, 0x2e6fd: 0x6c9f0820, 0x2e6fe: 0x6c9f0a20, 0x2e6ff: 0x6c9f0c20,\n\t// Block 0xb9c, offset 0x2e700\n\t0x2e700: 0x6c9f0e20, 0x2e701: 0x6c9f1020, 0x2e702: 0x6c9f1220, 0x2e703: 0x6c9f1420,\n\t0x2e704: 0x6c9f1620, 0x2e705: 0x6c9f1820, 0x2e706: 0x6c9f1a20, 0x2e707: 0x6c9f1c20,\n\t0x2e708: 0x6c9f1e20, 0x2e709: 0x6c9f2020, 0x2e70a: 0x6c9f2220, 0x2e70b: 0x6c9f2420,\n\t0x2e70c: 0x6c9f2620, 0x2e70d: 0x6c9f2820, 0x2e70e: 0x6c9f2a20, 0x2e70f: 0x6c9f2c20,\n\t0x2e710: 0x6c9f2e20, 0x2e711: 0x6c9f3020, 0x2e712: 0x6c9f3220, 0x2e713: 0x6c9f3420,\n\t0x2e714: 0x6c9f3620, 0x2e715: 0x6c9f3820, 0x2e716: 0x6c9f3a20, 0x2e717: 0x6c9f3c20,\n\t0x2e718: 0x6c9f3e20, 0x2e719: 0x6c9f4020, 0x2e71a: 0x6c9f4220, 0x2e71b: 0x6c9f4420,\n\t0x2e71c: 0x6c9f4620, 0x2e71d: 0x6c9f4820, 0x2e71e: 0x6c9f4a20, 0x2e71f: 0x6c9f4c20,\n\t0x2e720: 0x6c9f4e20, 0x2e721: 0x6c9f5020, 0x2e722: 0x6c9f5220, 0x2e723: 0x6c9f5420,\n\t0x2e724: 0x6c9f5620, 0x2e725: 0x6c9f5820, 0x2e726: 0x6c9f5a20, 0x2e727: 0x6c9f5c20,\n\t0x2e728: 0x6c9f5e20, 0x2e729: 0x6c9f6020, 0x2e72a: 0x6c9f6220, 0x2e72b: 0x6c9f6420,\n\t0x2e72c: 0x6c9f6620, 0x2e72d: 0x6c9f6820, 0x2e72e: 0x6c9f6a20, 0x2e72f: 0x6c9f6c20,\n\t0x2e730: 0x6c9f6e20, 0x2e731: 0x6c9f7020, 0x2e732: 0x6c9f7220, 0x2e733: 0x6c9f7420,\n\t0x2e734: 0x6c9f7620, 0x2e735: 0x6c9f7820, 0x2e736: 0x6c9f7a20, 0x2e737: 0x6c9f7c20,\n\t0x2e738: 0x6c9f7e20, 0x2e739: 0x6c9f8020, 0x2e73a: 0x6c9f8220, 0x2e73b: 0x6c9f8420,\n\t0x2e73c: 0x6ccbdc20, 0x2e73d: 0x6c9f8620, 0x2e73e: 0x6ccbde20, 0x2e73f: 0x6c9f8820,\n\t// Block 0xb9d, offset 0x2e740\n\t0x2e740: 0x6c9f8a20, 0x2e741: 0x6c9f8c20, 0x2e742: 0x6c9f8e20, 0x2e743: 0x6ccc0c20,\n\t0x2e744: 0x6c9f9020, 0x2e745: 0x6c9f9220, 0x2e746: 0x6c9f9420, 0x2e747: 0x6c9f9620,\n\t0x2e748: 0x6c9f9820, 0x2e749: 0x6c9f9a20, 0x2e74a: 0x6c9f9c20, 0x2e74b: 0x6c9f9e20,\n\t0x2e74c: 0x6c9fa020, 0x2e74d: 0x6c9fa220, 0x2e74e: 0x6c9fa420, 0x2e74f: 0x6c9fa620,\n\t0x2e750: 0x6c9fa820, 0x2e751: 0x6c9faa20, 0x2e752: 0x6c9fac20, 0x2e753: 0x6c9fae20,\n\t0x2e754: 0x6c9fb020, 0x2e755: 0x6c9fb220, 0x2e756: 0x6c9fb420, 0x2e757: 0x6c9fb620,\n\t0x2e758: 0x6ccc0e20, 0x2e759: 0x6ccc1020, 0x2e75a: 0x6c9fb820, 0x2e75b: 0x6ccc1220,\n\t0x2e75c: 0x6ccc1420, 0x2e75d: 0x6ccc1620, 0x2e75e: 0x6ccc1820, 0x2e75f: 0x6ccc1a20,\n\t0x2e760: 0x6ccc1c20, 0x2e761: 0x6ccc1e20, 0x2e762: 0x6ccc2020, 0x2e763: 0x6ccc2220,\n\t0x2e764: 0x6ccc2420, 0x2e765: 0x6ccc2620, 0x2e766: 0x6ccc2820, 0x2e767: 0x6ccc2a20,\n\t0x2e768: 0x6ccc2c20, 0x2e769: 0x6ccc2e20, 0x2e76a: 0x6ccc3020, 0x2e76b: 0x6ccc3220,\n\t0x2e76c: 0x6ccc3420, 0x2e76d: 0x6ccc3620, 0x2e76e: 0x6ccc3820, 0x2e76f: 0x6ccc3a20,\n\t0x2e770: 0x6ccc3c20, 0x2e771: 0x6ccc3e20, 0x2e772: 0x6ccc4020, 0x2e773: 0x6ccc4220,\n\t0x2e774: 0x6ccc4420, 0x2e775: 0x6ccc4620, 0x2e776: 0x6ccc4820, 0x2e777: 0x6ccc4a20,\n\t0x2e778: 0x6ccc4c20, 0x2e779: 0x6ccc4e20, 0x2e77a: 0x6ccc5020, 0x2e77b: 0x6ccc5220,\n\t0x2e77c: 0x6ccc5420, 0x2e77d: 0x6ccc5620, 0x2e77e: 0x6ccc5820, 0x2e77f: 0x6ccc5a20,\n\t// Block 0xb9e, offset 0x2e780\n\t0x2e780: 0x6ccc5c20, 0x2e781: 0x6ccc5e20, 0x2e782: 0x6ccc6020, 0x2e783: 0x6ccc6220,\n\t0x2e784: 0x6ccc6420, 0x2e785: 0x6ccc6620, 0x2e786: 0x6ccc6820, 0x2e787: 0x6ccc6a20,\n\t0x2e788: 0x6ccc6c20, 0x2e789: 0x6ccc6e20, 0x2e78a: 0x6ccc7020, 0x2e78b: 0x6ccc7220,\n\t0x2e78c: 0x6ccc7420, 0x2e78d: 0x6ccc7620, 0x2e78e: 0x6ccc7820, 0x2e78f: 0x6ccc7a20,\n\t0x2e790: 0x6ccc7c20, 0x2e791: 0x6ccc7e20, 0x2e792: 0x6ccc8020, 0x2e793: 0x6ccc8220,\n\t0x2e794: 0x6ccc8420, 0x2e795: 0x6ccc8620, 0x2e796: 0x6ccc8820, 0x2e797: 0x6ccc8a20,\n\t0x2e798: 0x6ccc8c20, 0x2e799: 0x6ccc8e20, 0x2e79a: 0x6ccc9020, 0x2e79b: 0x6ccc9220,\n\t0x2e79c: 0x6ccc9420, 0x2e79d: 0x6ccc9620, 0x2e79e: 0x6ccc9820, 0x2e79f: 0x6ccc9a20,\n\t0x2e7a0: 0x6ccc9c20, 0x2e7a1: 0x6ccc9e20, 0x2e7a2: 0x6ccca020, 0x2e7a3: 0x6ccca220,\n\t0x2e7a4: 0x6ccca420, 0x2e7a5: 0x6ccca620, 0x2e7a6: 0x6ccca820, 0x2e7a7: 0x6cccaa20,\n\t0x2e7a8: 0x6cccac20, 0x2e7a9: 0x6cccae20, 0x2e7aa: 0x6cccb020, 0x2e7ab: 0x6cccb220,\n\t0x2e7ac: 0x6cf9e220, 0x2e7ad: 0x6cccb420, 0x2e7ae: 0x6cccb620, 0x2e7af: 0x6cccb820,\n\t0x2e7b0: 0x6cccba20, 0x2e7b1: 0x6cccbc20, 0x2e7b2: 0x6cccbe20, 0x2e7b3: 0x6cccc020,\n\t0x2e7b4: 0x6c9fba20, 0x2e7b5: 0x6cccc220, 0x2e7b6: 0x6cccc420, 0x2e7b7: 0x6cccc620,\n\t0x2e7b8: 0x6cccc820, 0x2e7b9: 0x6cccca20, 0x2e7ba: 0x6ccccc20, 0x2e7bb: 0x6cccce20,\n\t0x2e7bc: 0x6cccd020, 0x2e7bd: 0x6cccd220, 0x2e7be: 0x6cccd420, 0x2e7bf: 0x6cccd620,\n\t// Block 0xb9f, offset 0x2e7c0\n\t0x2e7c0: 0x6cccd820, 0x2e7c1: 0x6cccda20, 0x2e7c2: 0x6cccdc20, 0x2e7c3: 0x6cccde20,\n\t0x2e7c4: 0x6ccce020, 0x2e7c5: 0x6ccce220, 0x2e7c6: 0x6ccce420, 0x2e7c7: 0x6ccce620,\n\t0x2e7c8: 0x6ccce820, 0x2e7c9: 0x6cccea20, 0x2e7ca: 0x6cccec20, 0x2e7cb: 0x6cccee20,\n\t0x2e7cc: 0x6cccf020, 0x2e7cd: 0x6cfa1220, 0x2e7ce: 0x6cfa1420, 0x2e7cf: 0x6cfa1620,\n\t0x2e7d0: 0x6cfa1820, 0x2e7d1: 0x6cfa1a20, 0x2e7d2: 0x6cfa1c20, 0x2e7d3: 0x6cfa1e20,\n\t0x2e7d4: 0x6cfa2020, 0x2e7d5: 0x6cfa2220, 0x2e7d6: 0x6cfa2420, 0x2e7d7: 0x6cfa2620,\n\t0x2e7d8: 0x6cfa2820, 0x2e7d9: 0x6cfa2a20, 0x2e7da: 0x6cfa2c20, 0x2e7db: 0x6cfa2e20,\n\t0x2e7dc: 0x6cfa3020, 0x2e7dd: 0x6cfa3220, 0x2e7de: 0x6cfa3420, 0x2e7df: 0x6cfa3620,\n\t0x2e7e0: 0x6cfa3820, 0x2e7e1: 0x6cfa3a20, 0x2e7e2: 0x6cfa3c20, 0x2e7e3: 0x6cfa3e20,\n\t0x2e7e4: 0x6cfa4020, 0x2e7e5: 0x6cfa4220, 0x2e7e6: 0x6cfa4420, 0x2e7e7: 0x6cfa4620,\n\t0x2e7e8: 0x6cfa4820, 0x2e7e9: 0x6cfa4a20, 0x2e7ea: 0x6cfa4c20, 0x2e7eb: 0x6cfa4e20,\n\t0x2e7ec: 0x6cfa5020, 0x2e7ed: 0x6cfa5220, 0x2e7ee: 0x6cfa5420, 0x2e7ef: 0x6cfa5620,\n\t0x2e7f0: 0x6cfa5820, 0x2e7f1: 0x6cfa5a20, 0x2e7f2: 0x6cfa5c20, 0x2e7f3: 0x6cfa5e20,\n\t0x2e7f4: 0x6cfa6020, 0x2e7f5: 0x6cfa6220, 0x2e7f6: 0x6cfa6420, 0x2e7f7: 0x6cfa6620,\n\t0x2e7f8: 0x6cfa6820, 0x2e7f9: 0x6cfa6a20, 0x2e7fa: 0x6cfa6c20, 0x2e7fb: 0x6cfa6e20,\n\t0x2e7fc: 0x6cfa7020, 0x2e7fd: 0x6cfa7220, 0x2e7fe: 0x6cfa7420, 0x2e7ff: 0x6cfa7620,\n\t// Block 0xba0, offset 0x2e800\n\t0x2e800: 0x6cfa7820, 0x2e801: 0x6cfa7a20, 0x2e802: 0x6cfa7c20, 0x2e803: 0x6cfa7e20,\n\t0x2e804: 0x6cfa8020, 0x2e805: 0x6cfa8220, 0x2e806: 0x6cfa8420, 0x2e807: 0x6cfa8620,\n\t0x2e808: 0x6cfa8820, 0x2e809: 0x6cfa8a20, 0x2e80a: 0x6cfa8c20, 0x2e80b: 0x6cccf220,\n\t0x2e80c: 0x6d291220, 0x2e80d: 0x6cfa8e20, 0x2e80e: 0x6d28f420, 0x2e80f: 0x6cfa9020,\n\t0x2e810: 0x6cfa9220, 0x2e811: 0x6cfa9420, 0x2e812: 0x6cfa9620, 0x2e813: 0x6cfa9820,\n\t0x2e814: 0x6cfa9a20, 0x2e815: 0x6d561820, 0x2e816: 0x6cfa9c20, 0x2e817: 0x6cfa9e20,\n\t0x2e818: 0x6cfaa020, 0x2e819: 0x6cfaa220, 0x2e81a: 0x6cfbd620, 0x2e81b: 0x6cfaa420,\n\t0x2e81c: 0x6cfaa620, 0x2e81d: 0x6cfaa820, 0x2e81e: 0x6cccf420, 0x2e81f: 0x6cfaaa20,\n\t0x2e820: 0x6cfaac20, 0x2e821: 0x6cfaae20, 0x2e822: 0x6cfab020, 0x2e823: 0x6cfab220,\n\t0x2e824: 0x6cfab420, 0x2e825: 0x6cfab620, 0x2e826: 0x6cfab820, 0x2e827: 0x6cfaba20,\n\t0x2e828: 0x6cfabc20, 0x2e829: 0x6cfabe20, 0x2e82a: 0x6cfac020, 0x2e82b: 0x6d291420,\n\t0x2e82c: 0x6d291620, 0x2e82d: 0x6d291820, 0x2e82e: 0x6d291a20, 0x2e82f: 0x6d291c20,\n\t0x2e830: 0x6d291e20, 0x2e831: 0x6d292020, 0x2e832: 0x6d292220, 0x2e833: 0x6d292420,\n\t0x2e834: 0x6d292620, 0x2e835: 0x6d292820, 0x2e836: 0x6d292a20, 0x2e837: 0x6d292c20,\n\t0x2e838: 0x6d292e20, 0x2e839: 0x6d293020, 0x2e83a: 0x6d293220, 0x2e83b: 0x6d293420,\n\t0x2e83c: 0x6d293620, 0x2e83d: 0x6d293820, 0x2e83e: 0x6d293a20, 0x2e83f: 0x6d293c20,\n\t// Block 0xba1, offset 0x2e840\n\t0x2e840: 0x6d561a20, 0x2e841: 0x6d293e20, 0x2e842: 0x6d294020, 0x2e843: 0x6d294220,\n\t0x2e844: 0x6d294420, 0x2e845: 0x6d294620, 0x2e846: 0x6d294820, 0x2e847: 0x6d294a20,\n\t0x2e848: 0x6d294c20, 0x2e849: 0x6d294e20, 0x2e84a: 0x6d295020, 0x2e84b: 0x6d564820,\n\t0x2e84c: 0x6d295220, 0x2e84d: 0x6d295420, 0x2e84e: 0x6d295620, 0x2e84f: 0x6d295820,\n\t0x2e850: 0x6d561c20, 0x2e851: 0x6d295a20, 0x2e852: 0x6d295c20, 0x2e853: 0x6cfac220,\n\t0x2e854: 0x6d295e20, 0x2e855: 0x6d296020, 0x2e856: 0x6d296220, 0x2e857: 0x6d296420,\n\t0x2e858: 0x6d296620, 0x2e859: 0x6d296820, 0x2e85a: 0x6d296a20, 0x2e85b: 0x6d296c20,\n\t0x2e85c: 0x6d296e20, 0x2e85d: 0x6d297020, 0x2e85e: 0x6d297220, 0x2e85f: 0x6d297420,\n\t0x2e860: 0x6d297620, 0x2e861: 0x6d297820, 0x2e862: 0x6d297a20, 0x2e863: 0x6d297c20,\n\t0x2e864: 0x6d297e20, 0x2e865: 0x6d298020, 0x2e866: 0x6d561e20, 0x2e867: 0x6d298220,\n\t0x2e868: 0x6d298420, 0x2e869: 0x6d298620, 0x2e86a: 0x6d298820, 0x2e86b: 0x6d298a20,\n\t0x2e86c: 0x6d298c20, 0x2e86d: 0x6d298e20, 0x2e86e: 0x6d299020, 0x2e86f: 0x6d299220,\n\t0x2e870: 0x6d299420, 0x2e871: 0x6d299620, 0x2e872: 0x6d299820, 0x2e873: 0x6d299a20,\n\t0x2e874: 0x6d299c20, 0x2e875: 0x6d299e20, 0x2e876: 0x6d29a020, 0x2e877: 0x6d29a220,\n\t0x2e878: 0x6d29a420, 0x2e879: 0x6d29a620, 0x2e87a: 0x6d29a820, 0x2e87b: 0x6d29aa20,\n\t0x2e87c: 0x6d29ac20, 0x2e87d: 0x6d564a20, 0x2e87e: 0x6d29ae20, 0x2e87f: 0x6d562020,\n\t// Block 0xba2, offset 0x2e880\n\t0x2e880: 0x6d29b020, 0x2e881: 0x6d562220, 0x2e882: 0x6d29b220, 0x2e883: 0x6d29b420,\n\t0x2e884: 0x6d29b620, 0x2e885: 0x6d29b820, 0x2e886: 0x6d29ba20, 0x2e887: 0x6d29bc20,\n\t0x2e888: 0x6d29be20, 0x2e889: 0x6d29c020, 0x2e88a: 0x6d29c220, 0x2e88b: 0x6d29c420,\n\t0x2e88c: 0x6d29c620, 0x2e88d: 0x6d29c820, 0x2e88e: 0x6d2aca20, 0x2e88f: 0x6d564c20,\n\t0x2e890: 0x6d564e20, 0x2e891: 0x6d565020, 0x2e892: 0x6d565220, 0x2e893: 0x6d565420,\n\t0x2e894: 0x6d565620, 0x2e895: 0x6d565820, 0x2e896: 0x6d565a20, 0x2e897: 0x6d565c20,\n\t0x2e898: 0x6d565e20, 0x2e899: 0x6d566020, 0x2e89a: 0x6d566220, 0x2e89b: 0x6d566420,\n\t0x2e89c: 0x6d566620, 0x2e89d: 0x6d566820, 0x2e89e: 0x6d819a20, 0x2e89f: 0x6d566a20,\n\t0x2e8a0: 0x6d566c20, 0x2e8a1: 0x6d566e20, 0x2e8a2: 0x6d567020, 0x2e8a3: 0x6d567220,\n\t0x2e8a4: 0x6d567420, 0x2e8a5: 0x6d567620, 0x2e8a6: 0x6d567820, 0x2e8a7: 0x6d567a20,\n\t0x2e8a8: 0x6d567c20, 0x2e8a9: 0x6d567e20, 0x2e8aa: 0x6d568020, 0x2e8ab: 0x6d568220,\n\t0x2e8ac: 0x6d568420, 0x2e8ad: 0x6d568620, 0x2e8ae: 0x6d568820, 0x2e8af: 0x6d568a20,\n\t0x2e8b0: 0x6d568c20, 0x2e8b1: 0x6d568e20, 0x2e8b2: 0x6d569020, 0x2e8b3: 0x6d2acc20,\n\t0x2e8b4: 0x6d569220, 0x2e8b5: 0x6d569420, 0x2e8b6: 0x6d569620, 0x2e8b7: 0x6d569820,\n\t0x2e8b8: 0x6d569a20, 0x2e8b9: 0x6d569c20, 0x2e8ba: 0x6d569e20, 0x2e8bb: 0x6d56a020,\n\t0x2e8bc: 0x6d56a220, 0x2e8bd: 0x6d56a420, 0x2e8be: 0x6d56a620, 0x2e8bf: 0x6d56a820,\n\t// Block 0xba3, offset 0x2e8c0\n\t0x2e8c0: 0x6da79820, 0x2e8c1: 0x6d56aa20, 0x2e8c2: 0x6d56ac20, 0x2e8c3: 0x6d819c20,\n\t0x2e8c4: 0x6d56ae20, 0x2e8c5: 0x6d56b020, 0x2e8c6: 0x6d56b220, 0x2e8c7: 0x6d56b420,\n\t0x2e8c8: 0x6d56b620, 0x2e8c9: 0x6d56b820, 0x2e8ca: 0x6d56ba20, 0x2e8cb: 0x6d56bc20,\n\t0x2e8cc: 0x6d56be20, 0x2e8cd: 0x6d56c020, 0x2e8ce: 0x6d56c220, 0x2e8cf: 0x6d56c420,\n\t0x2e8d0: 0x6d56c620, 0x2e8d1: 0x6d56c820, 0x2e8d2: 0x6d56ca20, 0x2e8d3: 0x6d56cc20,\n\t0x2e8d4: 0x6d56ce20, 0x2e8d5: 0x6d56d020, 0x2e8d6: 0x6d56d220, 0x2e8d7: 0x6d56d420,\n\t0x2e8d8: 0x6d56d620, 0x2e8d9: 0x6d81c020, 0x2e8da: 0x6d56d820, 0x2e8db: 0x6d56da20,\n\t0x2e8dc: 0x6d56dc20, 0x2e8dd: 0x6d56de20, 0x2e8de: 0x6d81c220, 0x2e8df: 0x6d81c420,\n\t0x2e8e0: 0x6d81c620, 0x2e8e1: 0x6d81c820, 0x2e8e2: 0x6d81ca20, 0x2e8e3: 0x6d81cc20,\n\t0x2e8e4: 0x6d81ce20, 0x2e8e5: 0x6d81d020, 0x2e8e6: 0x6d81d220, 0x2e8e7: 0x6d81d420,\n\t0x2e8e8: 0x6d81d620, 0x2e8e9: 0x6da77820, 0x2e8ea: 0x6d81d820, 0x2e8eb: 0x6d81da20,\n\t0x2e8ec: 0x6d81dc20, 0x2e8ed: 0x6d81de20, 0x2e8ee: 0x6d81e020, 0x2e8ef: 0x6d81e220,\n\t0x2e8f0: 0x6d81e420, 0x2e8f1: 0x6d81e620, 0x2e8f2: 0x6d81e820, 0x2e8f3: 0x6d81ea20,\n\t0x2e8f4: 0x6d81ec20, 0x2e8f5: 0x6d81ee20, 0x2e8f6: 0x6d81f020, 0x2e8f7: 0x6d81f220,\n\t0x2e8f8: 0x6d81f420, 0x2e8f9: 0x6d81f620, 0x2e8fa: 0x6d81f820, 0x2e8fb: 0x6d81fa20,\n\t0x2e8fc: 0x6d81fc20, 0x2e8fd: 0x6d81fe20, 0x2e8fe: 0x6d820020, 0x2e8ff: 0x6d820220,\n\t// Block 0xba4, offset 0x2e900\n\t0x2e900: 0x6d820420, 0x2e901: 0x6d820620, 0x2e902: 0x6d820820, 0x2e903: 0x6d820a20,\n\t0x2e904: 0x6d820c20, 0x2e905: 0x6d820e20, 0x2e906: 0x6d580a20, 0x2e907: 0x6d821020,\n\t0x2e908: 0x6d821220, 0x2e909: 0x6d821420, 0x2e90a: 0x6d821620, 0x2e90b: 0x6d821820,\n\t0x2e90c: 0x6da77a20, 0x2e90d: 0x6d821a20, 0x2e90e: 0x6d821c20, 0x2e90f: 0x6d821e20,\n\t0x2e910: 0x6d56e020, 0x2e911: 0x6d822020, 0x2e912: 0x6d822220, 0x2e913: 0x6d822420,\n\t0x2e914: 0x6da79a20, 0x2e915: 0x6da79c20, 0x2e916: 0x6d822620, 0x2e917: 0x6da79e20,\n\t0x2e918: 0x6da7a020, 0x2e919: 0x6da7a220, 0x2e91a: 0x6da7a420, 0x2e91b: 0x6da7a620,\n\t0x2e91c: 0x6da7a820, 0x2e91d: 0x6da7aa20, 0x2e91e: 0x6da7ac20, 0x2e91f: 0x6da7ae20,\n\t0x2e920: 0x6da7b020, 0x2e921: 0x6da7b220, 0x2e922: 0x6da7b420, 0x2e923: 0x6da7b620,\n\t0x2e924: 0x6da7b820, 0x2e925: 0x6da7ba20, 0x2e926: 0x6da7bc20, 0x2e927: 0x6da7be20,\n\t0x2e928: 0x6da7c020, 0x2e929: 0x6da7c220, 0x2e92a: 0x6da7c420, 0x2e92b: 0x6da7c620,\n\t0x2e92c: 0x6da7c820, 0x2e92d: 0x6da7ca20, 0x2e92e: 0x6da7cc20, 0x2e92f: 0x6da7ce20,\n\t0x2e930: 0x6da7d020, 0x2e931: 0x6da7d220, 0x2e932: 0x6da7d420, 0x2e933: 0x6de4c220,\n\t0x2e934: 0x6da7d620, 0x2e935: 0x6da7d820, 0x2e936: 0x6da7da20, 0x2e937: 0x6dc8c220,\n\t0x2e938: 0x6da7dc20, 0x2e939: 0x6dc8d220, 0x2e93a: 0x6dc8d420, 0x2e93b: 0x6dc8d620,\n\t0x2e93c: 0x6dc8d820, 0x2e93d: 0x6dc8da20, 0x2e93e: 0x6dc8dc20, 0x2e93f: 0x6dc8de20,\n\t// Block 0xba5, offset 0x2e940\n\t0x2e940: 0x6dc8e020, 0x2e941: 0x6dc8e220, 0x2e942: 0x6dc8e420, 0x2e943: 0x6dc8e620,\n\t0x2e944: 0x6d82fc20, 0x2e945: 0x6dc8e820, 0x2e946: 0x6dc8ea20, 0x2e947: 0x6dc8ec20,\n\t0x2e948: 0x6dc8ee20, 0x2e949: 0x6dc8f020, 0x2e94a: 0x6dc8f220, 0x2e94b: 0x6dc8f420,\n\t0x2e94c: 0x6dc8f620, 0x2e94d: 0x6dc8f820, 0x2e94e: 0x6dc8fa20, 0x2e94f: 0x6dc8fc20,\n\t0x2e950: 0x6dc8fe20, 0x2e951: 0x6dc90020, 0x2e952: 0x6dc90220, 0x2e953: 0x6dc90420,\n\t0x2e954: 0x6dc90620, 0x2e955: 0x6de4c420, 0x2e956: 0x6de4c620, 0x2e957: 0x6de4c820,\n\t0x2e958: 0x6de4ca20, 0x2e959: 0x6de4cc20, 0x2e95a: 0x6de4ce20, 0x2e95b: 0x6de4d020,\n\t0x2e95c: 0x6de4d220, 0x2e95d: 0x6de4d420, 0x2e95e: 0x6de4d620, 0x2e95f: 0x6de4d820,\n\t0x2e960: 0x6de4da20, 0x2e961: 0x6de4dc20, 0x2e962: 0x6de4de20, 0x2e963: 0x6de4e020,\n\t0x2e964: 0x6de4e220, 0x2e965: 0x6de4e420, 0x2e966: 0x6dc9b820, 0x2e967: 0x6de4e620,\n\t0x2e968: 0x6de4e820, 0x2e969: 0x6de4ea20, 0x2e96a: 0x6dfbc220, 0x2e96b: 0x6de4ec20,\n\t0x2e96c: 0x6de4ee20, 0x2e96d: 0x6de4f020, 0x2e96e: 0x6de4f220, 0x2e96f: 0x6dfbd020,\n\t0x2e970: 0x6dfbd220, 0x2e971: 0x6dfbd420, 0x2e972: 0x6dfbd620, 0x2e973: 0x6dfbd820,\n\t0x2e974: 0x6dfbda20, 0x2e975: 0x6dfbdc20, 0x2e976: 0x6dfbde20, 0x2e977: 0x6dfbe020,\n\t0x2e978: 0x6dfbe220, 0x2e979: 0x6dfbe420, 0x2e97a: 0x6dfbe620, 0x2e97b: 0x6dfbe820,\n\t0x2e97c: 0x6dfbea20, 0x2e97d: 0x6dfbec20, 0x2e97e: 0x6dfbee20, 0x2e97f: 0x6dfbf020,\n\t// Block 0xba6, offset 0x2e980\n\t0x2e980: 0x6dfbf220, 0x2e981: 0x6dfbf420, 0x2e982: 0x6dfc4820, 0x2e983: 0x6e0f0620,\n\t0x2e984: 0x6e0f0820, 0x2e985: 0x6e0f0a20, 0x2e986: 0x6e0f0c20, 0x2e987: 0x6e0f0e20,\n\t0x2e988: 0x6e0f1020, 0x2e989: 0x6e0f1220, 0x2e98a: 0x6e0f1420, 0x2e98b: 0x6e0f1620,\n\t0x2e98c: 0x6e0f1820, 0x2e98d: 0x6e0f1a20, 0x2e98e: 0x6e3d5220, 0x2e98f: 0x6e0f1c20,\n\t0x2e990: 0x6e0f1e20, 0x2e991: 0x6e1e3420, 0x2e992: 0x6e1e3620, 0x2e993: 0x6e299620,\n\t0x2e994: 0x6e1e3820, 0x2e995: 0x6e1e3a20, 0x2e996: 0x6e1e3c20, 0x2e997: 0x6e1e3e20,\n\t0x2e998: 0x6e1e4020, 0x2e999: 0x6e299e20, 0x2e99a: 0x6e29a020, 0x2e99b: 0x6e29a220,\n\t0x2e99c: 0x6e29a420, 0x2e99d: 0x6e32a220, 0x2e99e: 0x6e32a420, 0x2e99f: 0x6e32a620,\n\t0x2e9a0: 0x6e32a820, 0x2e9a1: 0x6e32aa20, 0x2e9a2: 0x6e38e020, 0x2e9a3: 0x6e38e220,\n\t0x2e9a4: 0x6e3d5420, 0x2e9a5: 0x6e405c20, 0x2e9a6: 0x6e3d5620, 0x2e9a7: 0x6e405e20,\n\t0x2e9a8: 0x6e406020, 0x2e9a9: 0x6e45c420, 0x2e9aa: 0x6e463020, 0x2e9ab: 0x6c04d020,\n\t0x2e9ac: 0x6c04d220, 0x2e9ad: 0x6c09ca20, 0x2e9ae: 0x6c135a20, 0x2e9af: 0x6c135c20,\n\t0x2e9b0: 0x6c135e20, 0x2e9b1: 0x6c136020, 0x2e9b2: 0x6c136220, 0x2e9b3: 0x6c136420,\n\t0x2e9b4: 0x6c239020, 0x2e9b5: 0x6c239220, 0x2e9b6: 0x6c239420, 0x2e9b7: 0x6c239620,\n\t0x2e9b8: 0x6c239820, 0x2e9b9: 0x6c239a20, 0x2e9ba: 0x6c239c20, 0x2e9bb: 0x6c239e20,\n\t0x2e9bc: 0x6c23a020, 0x2e9bd: 0x6c23a220, 0x2e9be: 0x6c23a420, 0x2e9bf: 0x6c23a620,\n\t// Block 0xba7, offset 0x2e9c0\n\t0x2e9c0: 0x6c23a820, 0x2e9c1: 0x6c399e20, 0x2e9c2: 0x6c39a020, 0x2e9c3: 0x6c39a220,\n\t0x2e9c4: 0x6c39a420, 0x2e9c5: 0x6c39a620, 0x2e9c6: 0x6c39a820, 0x2e9c7: 0x6c399220,\n\t0x2e9c8: 0x6c39aa20, 0x2e9c9: 0x6c39ac20, 0x2e9ca: 0x6c39ae20, 0x2e9cb: 0x6c39b020,\n\t0x2e9cc: 0x6c39b220, 0x2e9cd: 0x6c39b420, 0x2e9ce: 0x6c39b620, 0x2e9cf: 0x6c39b820,\n\t0x2e9d0: 0x6c39ba20, 0x2e9d1: 0x6c39bc20, 0x2e9d2: 0x6c39be20, 0x2e9d3: 0x6c39c020,\n\t0x2e9d4: 0x6c39c220, 0x2e9d5: 0x6c39c420, 0x2e9d6: 0x6c39c620, 0x2e9d7: 0x6c39c820,\n\t0x2e9d8: 0x6c39ca20, 0x2e9d9: 0x6c39cc20, 0x2e9da: 0x6c39ce20, 0x2e9db: 0x6c39d020,\n\t0x2e9dc: 0x6c39d220, 0x2e9dd: 0x6c39d420, 0x2e9de: 0x6c39d620, 0x2e9df: 0x6c552820,\n\t0x2e9e0: 0x6c552a20, 0x2e9e1: 0x6c552c20, 0x2e9e2: 0x6c552e20, 0x2e9e3: 0x6c553020,\n\t0x2e9e4: 0x6c553220, 0x2e9e5: 0x6c553420, 0x2e9e6: 0x6c553620, 0x2e9e7: 0x6c553820,\n\t0x2e9e8: 0x6c553a20, 0x2e9e9: 0x6c553c20, 0x2e9ea: 0x6c553e20, 0x2e9eb: 0x6c554020,\n\t0x2e9ec: 0x6c554220, 0x2e9ed: 0x6c554420, 0x2e9ee: 0x6c554620, 0x2e9ef: 0x6c554820,\n\t0x2e9f0: 0x6c554a20, 0x2e9f1: 0x6c554c20, 0x2e9f2: 0x6c554e20, 0x2e9f3: 0x6c555020,\n\t0x2e9f4: 0x6c555220, 0x2e9f5: 0x6c555420, 0x2e9f6: 0x6c555620, 0x2e9f7: 0x6c555820,\n\t0x2e9f8: 0x6c555a20, 0x2e9f9: 0x6c555c20, 0x2e9fa: 0x6c555e20, 0x2e9fb: 0x6c556020,\n\t0x2e9fc: 0x6c556220, 0x2e9fd: 0x6c556420, 0x2e9fe: 0x6c556620, 0x2e9ff: 0x6c556820,\n\t// Block 0xba8, offset 0x2ea00\n\t0x2ea00: 0x6c556a20, 0x2ea01: 0x6c556c20, 0x2ea02: 0x6c556e20, 0x2ea03: 0x6c557020,\n\t0x2ea04: 0x6c77f620, 0x2ea05: 0x6c77f820, 0x2ea06: 0x6c77fa20, 0x2ea07: 0x6c77fc20,\n\t0x2ea08: 0x6c77fe20, 0x2ea09: 0x6c780020, 0x2ea0a: 0x6c780220, 0x2ea0b: 0x6c780420,\n\t0x2ea0c: 0x6c780620, 0x2ea0d: 0x6c780820, 0x2ea0e: 0x6c780a20, 0x2ea0f: 0x6c780c20,\n\t0x2ea10: 0x6c780e20, 0x2ea11: 0x6c781020, 0x2ea12: 0x6c781220, 0x2ea13: 0x6c781420,\n\t0x2ea14: 0x6c781620, 0x2ea15: 0x6c781820, 0x2ea16: 0x6c781a20, 0x2ea17: 0x6c781c20,\n\t0x2ea18: 0x6c781e20, 0x2ea19: 0x6c782020, 0x2ea1a: 0x6c782220, 0x2ea1b: 0x6c782420,\n\t0x2ea1c: 0x6c782620, 0x2ea1d: 0x6c782820, 0x2ea1e: 0x6c782a20, 0x2ea1f: 0x6c782c20,\n\t0x2ea20: 0x6c782e20, 0x2ea21: 0x6c783020, 0x2ea22: 0x6c783220, 0x2ea23: 0x6c783420,\n\t0x2ea24: 0x6c783620, 0x2ea25: 0x6c783820, 0x2ea26: 0x6c783a20, 0x2ea27: 0x6c783c20,\n\t0x2ea28: 0x6c783e20, 0x2ea29: 0x6c784020, 0x2ea2a: 0x6c784220, 0x2ea2b: 0x6c784420,\n\t0x2ea2c: 0x6c784620, 0x2ea2d: 0x6c784820, 0x2ea2e: 0x6c784a20, 0x2ea2f: 0x6ca0f020,\n\t0x2ea30: 0x6ca0f220, 0x2ea31: 0x6ca0f420, 0x2ea32: 0x6ca0f620, 0x2ea33: 0x6ca0f820,\n\t0x2ea34: 0x6ca0fa20, 0x2ea35: 0x6ca0fc20, 0x2ea36: 0x6ca0fe20, 0x2ea37: 0x6ca10020,\n\t0x2ea38: 0x6ca10220, 0x2ea39: 0x6ca10420, 0x2ea3a: 0x6ca10620, 0x2ea3b: 0x6ccddc20,\n\t0x2ea3c: 0x6ca10820, 0x2ea3d: 0x6ca10a20, 0x2ea3e: 0x6ca10c20, 0x2ea3f: 0x6ca10e20,\n\t// Block 0xba9, offset 0x2ea40\n\t0x2ea40: 0x6ca11020, 0x2ea41: 0x6ca11220, 0x2ea42: 0x6ca11420, 0x2ea43: 0x6ca11620,\n\t0x2ea44: 0x6ca11820, 0x2ea45: 0x6ca11a20, 0x2ea46: 0x6ca11c20, 0x2ea47: 0x6ca11e20,\n\t0x2ea48: 0x6ca12020, 0x2ea49: 0x6ca12220, 0x2ea4a: 0x6ca12420, 0x2ea4b: 0x6ca12620,\n\t0x2ea4c: 0x6ca12820, 0x2ea4d: 0x6ca12a20, 0x2ea4e: 0x6ca12c20, 0x2ea4f: 0x6ca12e20,\n\t0x2ea50: 0x6ca13020, 0x2ea51: 0x6ca13220, 0x2ea52: 0x6ca13420, 0x2ea53: 0x6ca13620,\n\t0x2ea54: 0x6ca1cc20, 0x2ea55: 0x6ca13820, 0x2ea56: 0x6ca13a20, 0x2ea57: 0x6ca13c20,\n\t0x2ea58: 0x6ca13e20, 0x2ea59: 0x6ccdf620, 0x2ea5a: 0x6ccdf820, 0x2ea5b: 0x6ccdfa20,\n\t0x2ea5c: 0x6ccdfc20, 0x2ea5d: 0x6ccdfe20, 0x2ea5e: 0x6cce0020, 0x2ea5f: 0x6cce0220,\n\t0x2ea60: 0x6cce0420, 0x2ea61: 0x6cce0620, 0x2ea62: 0x6cce0820, 0x2ea63: 0x6cce0a20,\n\t0x2ea64: 0x6cce0c20, 0x2ea65: 0x6cce0e20, 0x2ea66: 0x6cce1020, 0x2ea67: 0x6cce1220,\n\t0x2ea68: 0x6cce1420, 0x2ea69: 0x6cce1620, 0x2ea6a: 0x6cce1820, 0x2ea6b: 0x6cce1a20,\n\t0x2ea6c: 0x6cce1c20, 0x2ea6d: 0x6cce1e20, 0x2ea6e: 0x6cce2020, 0x2ea6f: 0x6cce2220,\n\t0x2ea70: 0x6cce2420, 0x2ea71: 0x6cce2620, 0x2ea72: 0x6cce2820, 0x2ea73: 0x6cce2a20,\n\t0x2ea74: 0x6cce2c20, 0x2ea75: 0x6cce2e20, 0x2ea76: 0x6cce3020, 0x2ea77: 0x6cce3220,\n\t0x2ea78: 0x6cce3420, 0x2ea79: 0x6cce3620, 0x2ea7a: 0x6cce3820, 0x2ea7b: 0x6cce3a20,\n\t0x2ea7c: 0x6cce3c20, 0x2ea7d: 0x6cce3e20, 0x2ea7e: 0x6cce4020, 0x2ea7f: 0x6cce4220,\n\t// Block 0xbaa, offset 0x2ea80\n\t0x2ea80: 0x6cce4420, 0x2ea81: 0x6cfbfc20, 0x2ea82: 0x6cfbfe20, 0x2ea83: 0x6cfc0020,\n\t0x2ea84: 0x6cfc0220, 0x2ea85: 0x6cfc0420, 0x2ea86: 0x6cfc0620, 0x2ea87: 0x6cfc0820,\n\t0x2ea88: 0x6cfc0a20, 0x2ea89: 0x6cfc0c20, 0x2ea8a: 0x6cfc0e20, 0x2ea8b: 0x6cfc1020,\n\t0x2ea8c: 0x6cfc1220, 0x2ea8d: 0x6cfc1420, 0x2ea8e: 0x6cfc1620, 0x2ea8f: 0x6cfc1820,\n\t0x2ea90: 0x6cfc1a20, 0x2ea91: 0x6cfc1c20, 0x2ea92: 0x6cfc1e20, 0x2ea93: 0x6cfc2020,\n\t0x2ea94: 0x6cfc2220, 0x2ea95: 0x6d2ace20, 0x2ea96: 0x6cfc2420, 0x2ea97: 0x6cfc2620,\n\t0x2ea98: 0x6cfc2820, 0x2ea99: 0x6cfc2a20, 0x2ea9a: 0x6cfc2c20, 0x2ea9b: 0x6d2ad020,\n\t0x2ea9c: 0x6cfc2e20, 0x2ea9d: 0x6cfc3020, 0x2ea9e: 0x6cfc3220, 0x2ea9f: 0x6cfc3420,\n\t0x2eaa0: 0x6cfc3620, 0x2eaa1: 0x6cfc3820, 0x2eaa2: 0x6cfc3a20, 0x2eaa3: 0x6cfc3c20,\n\t0x2eaa4: 0x6cfc3e20, 0x2eaa5: 0x6cfc4020, 0x2eaa6: 0x6cfc4220, 0x2eaa7: 0x6cfc4420,\n\t0x2eaa8: 0x6cfc4620, 0x2eaa9: 0x6cfc4820, 0x2eaaa: 0x6cfc4a20, 0x2eaab: 0x6cfc4c20,\n\t0x2eaac: 0x6cfc4e20, 0x2eaad: 0x6cfc5020, 0x2eaae: 0x6cce4620, 0x2eaaf: 0x6cfc5220,\n\t0x2eab0: 0x6cfc5420, 0x2eab1: 0x6cfc5620, 0x2eab2: 0x6cfc5820, 0x2eab3: 0x6cfc5a20,\n\t0x2eab4: 0x6cfc5c20, 0x2eab5: 0x6cfc5e20, 0x2eab6: 0x6cfc6020, 0x2eab7: 0x6cfc6220,\n\t0x2eab8: 0x6cfc6420, 0x2eab9: 0x6d2aea20, 0x2eaba: 0x6cfc6620, 0x2eabb: 0x6d2aec20,\n\t0x2eabc: 0x6d2aee20, 0x2eabd: 0x6d2af020, 0x2eabe: 0x6d2af220, 0x2eabf: 0x6d2af420,\n\t// Block 0xbab, offset 0x2eac0\n\t0x2eac0: 0x6d2af620, 0x2eac1: 0x6d2af820, 0x2eac2: 0x6d2afa20, 0x2eac3: 0x6d2afc20,\n\t0x2eac4: 0x6d2afe20, 0x2eac5: 0x6d2b0020, 0x2eac6: 0x6d2b0220, 0x2eac7: 0x6d2b0420,\n\t0x2eac8: 0x6d2b0620, 0x2eac9: 0x6d2b0820, 0x2eaca: 0x6d2b0a20, 0x2eacb: 0x6d2b0c20,\n\t0x2eacc: 0x6d2b0e20, 0x2eacd: 0x6d2b1020, 0x2eace: 0x6d2b1220, 0x2eacf: 0x6d2b1420,\n\t0x2ead0: 0x6d2b1620, 0x2ead1: 0x6d2b1820, 0x2ead2: 0x6d2b1a20, 0x2ead3: 0x6d2b1c20,\n\t0x2ead4: 0x6d2b1e20, 0x2ead5: 0x6d2b2020, 0x2ead6: 0x6d2b2220, 0x2ead7: 0x6d2b2420,\n\t0x2ead8: 0x6d2b2620, 0x2ead9: 0x6d2b2820, 0x2eada: 0x6d581e20, 0x2eadb: 0x6d582020,\n\t0x2eadc: 0x6d582220, 0x2eadd: 0x6d582420, 0x2eade: 0x6d582620, 0x2eadf: 0x6d582820,\n\t0x2eae0: 0x6d582a20, 0x2eae1: 0x6d582c20, 0x2eae2: 0x6d582e20, 0x2eae3: 0x6d583020,\n\t0x2eae4: 0x6d583220, 0x2eae5: 0x6d583420, 0x2eae6: 0x6d580c20, 0x2eae7: 0x6d583620,\n\t0x2eae8: 0x6d583820, 0x2eae9: 0x6d583a20, 0x2eaea: 0x6d583c20, 0x2eaeb: 0x6d583e20,\n\t0x2eaec: 0x6d584020, 0x2eaed: 0x6d584220, 0x2eaee: 0x6d584420, 0x2eaef: 0x6d584620,\n\t0x2eaf0: 0x6d584820, 0x2eaf1: 0x6d584a20, 0x2eaf2: 0x6d584c20, 0x2eaf3: 0x6d584e20,\n\t0x2eaf4: 0x6d585020, 0x2eaf5: 0x6d585220, 0x2eaf6: 0x6d831420, 0x2eaf7: 0x6d831620,\n\t0x2eaf8: 0x6d831820, 0x2eaf9: 0x6d831a20, 0x2eafa: 0x6d831c20, 0x2eafb: 0x6d831e20,\n\t0x2eafc: 0x6d832020, 0x2eafd: 0x6d832220, 0x2eafe: 0x6d832420, 0x2eaff: 0x6d832620,\n\t// Block 0xbac, offset 0x2eb00\n\t0x2eb00: 0x6d832820, 0x2eb01: 0x6d832a20, 0x2eb02: 0x6d832c20, 0x2eb03: 0x6d832e20,\n\t0x2eb04: 0x6d833020, 0x2eb05: 0x6d833220, 0x2eb06: 0x6d833420, 0x2eb07: 0x6d833620,\n\t0x2eb08: 0x6d833820, 0x2eb09: 0x6d833a20, 0x2eb0a: 0x6d833c20, 0x2eb0b: 0x6d833e20,\n\t0x2eb0c: 0x6d834020, 0x2eb0d: 0x6d834220, 0x2eb0e: 0x6d834420, 0x2eb0f: 0x6d834620,\n\t0x2eb10: 0x6d834820, 0x2eb11: 0x6d834a20, 0x2eb12: 0x6d834c20, 0x2eb13: 0x6d834e20,\n\t0x2eb14: 0x6d835020, 0x2eb15: 0x6d835220, 0x2eb16: 0x6d835420, 0x2eb17: 0x6d835620,\n\t0x2eb18: 0x6d835820, 0x2eb19: 0x6d835a20, 0x2eb1a: 0x6d835c20, 0x2eb1b: 0x6d835e20,\n\t0x2eb1c: 0x6d836020, 0x2eb1d: 0x6d836220, 0x2eb1e: 0x6d836420, 0x2eb1f: 0x6da87c20,\n\t0x2eb20: 0x6da87e20, 0x2eb21: 0x6da88020, 0x2eb22: 0x6da88220, 0x2eb23: 0x6da88420,\n\t0x2eb24: 0x6da88620, 0x2eb25: 0x6da88820, 0x2eb26: 0x6da88a20, 0x2eb27: 0x6da88c20,\n\t0x2eb28: 0x6da88e20, 0x2eb29: 0x6da89020, 0x2eb2a: 0x6da89220, 0x2eb2b: 0x6da89420,\n\t0x2eb2c: 0x6da89620, 0x2eb2d: 0x6da89820, 0x2eb2e: 0x6da89a20, 0x2eb2f: 0x6da89c20,\n\t0x2eb30: 0x6da89e20, 0x2eb31: 0x6da8a020, 0x2eb32: 0x6da8a220, 0x2eb33: 0x6da8a420,\n\t0x2eb34: 0x6da8a620, 0x2eb35: 0x6da8a820, 0x2eb36: 0x6da8aa20, 0x2eb37: 0x6da8ac20,\n\t0x2eb38: 0x6dc9be20, 0x2eb39: 0x6dc9c020, 0x2eb3a: 0x6dc9c220, 0x2eb3b: 0x6dc9c420,\n\t0x2eb3c: 0x6dc9c620, 0x2eb3d: 0x6dc9c820, 0x2eb3e: 0x6dc9ca20, 0x2eb3f: 0x6dc9cc20,\n\t// Block 0xbad, offset 0x2eb40\n\t0x2eb40: 0x6dc9ce20, 0x2eb41: 0x6dc9d020, 0x2eb42: 0x6de57020, 0x2eb43: 0x6dc9d220,\n\t0x2eb44: 0x6de57820, 0x2eb45: 0x6de57a20, 0x2eb46: 0x6de57c20, 0x2eb47: 0x6de57e20,\n\t0x2eb48: 0x6de58020, 0x2eb49: 0x6de58220, 0x2eb4a: 0x6de58420, 0x2eb4b: 0x6dfc5220,\n\t0x2eb4c: 0x6de58620, 0x2eb4d: 0x6de58820, 0x2eb4e: 0x6de58a20, 0x2eb4f: 0x6dfc5420,\n\t0x2eb50: 0x6dfc5620, 0x2eb51: 0x6dfc5820, 0x2eb52: 0x6dfc5a20, 0x2eb53: 0x6dfc5c20,\n\t0x2eb54: 0x6dfc5e20, 0x2eb55: 0x6de58c20, 0x2eb56: 0x6dfc6020, 0x2eb57: 0x6dfc6220,\n\t0x2eb58: 0x6dfc6420, 0x2eb59: 0x6e0f7e20, 0x2eb5a: 0x6e0f8020, 0x2eb5b: 0x6e0f8220,\n\t0x2eb5c: 0x6e1e7020, 0x2eb5d: 0x6e0fb220, 0x2eb5e: 0x6e1e7220, 0x2eb5f: 0x6e1e7420,\n\t0x2eb60: 0x6e1e7620, 0x2eb61: 0x6e29da20, 0x2eb62: 0x6e29dc20, 0x2eb63: 0x6e32c020,\n\t0x2eb64: 0x6e38f220, 0x2eb65: 0x6e38f420, 0x2eb66: 0x6e38f620, 0x2eb67: 0x6e42b620,\n\t0x2eb68: 0x6e443420, 0x2eb69: 0x6e468220, 0x2eb6a: 0x6c04d620, 0x2eb6b: 0x6c04d820,\n\t0x2eb6c: 0x6c3a2820, 0x2eb6d: 0x6c3a2a20, 0x2eb6e: 0x6c55ee20, 0x2eb6f: 0x6c55f020,\n\t0x2eb70: 0x6c55f220, 0x2eb71: 0x6c78ca20, 0x2eb72: 0x6ccf0a20, 0x2eb73: 0x6d2bdc20,\n\t0x2eb74: 0x6d590420, 0x2eb75: 0x6da93020, 0x2eb76: 0x6c04de20, 0x2eb77: 0x6c137a20,\n\t0x2eb78: 0x6c3a3a20, 0x2eb79: 0x6c78d620, 0x2eb7a: 0x6cfd4020, 0x2eb7b: 0x6c04e020,\n\t0x2eb7c: 0x6c561820, 0x2eb7d: 0x6ca1e020, 0x2eb7e: 0x6d2bec20, 0x2eb7f: 0x6c04e420,\n\t// Block 0xbae, offset 0x2eb80\n\t0x2eb80: 0x6c3a4620, 0x2eb81: 0x6c562020, 0x2eb82: 0x6c78e220, 0x2eb83: 0x6cfd4820,\n\t0x2eb84: 0x6d2bf020, 0x2eb85: 0x6d591e20, 0x2eb86: 0x6da93220, 0x2eb87: 0x6c04e820,\n\t0x2eb88: 0x6c3a5220, 0x2eb89: 0x6c562a20, 0x2eb8a: 0x6c562c20, 0x2eb8b: 0x6ccf3c20,\n\t0x2eb8c: 0x6ccf3e20, 0x2eb8d: 0x6ccf4020, 0x2eb8e: 0x6cfd5020, 0x2eb8f: 0x6cfd5220,\n\t0x2eb90: 0x6cfd5420, 0x2eb91: 0x6cfd5620, 0x2eb92: 0x6cfd5820, 0x2eb93: 0x6d2bfc20,\n\t0x2eb94: 0x6d2bfe20, 0x2eb95: 0x6d592820, 0x2eb96: 0x6d592a20, 0x2eb97: 0x6d592c20,\n\t0x2eb98: 0x6de5e220, 0x2eb99: 0x6c04ec20, 0x2eb9a: 0x6ccf6620, 0x2eb9b: 0x6c04f020,\n\t0x2eb9c: 0x6c04f220, 0x2eb9d: 0x6c138020, 0x2eb9e: 0x6c138220, 0x2eb9f: 0x6c138420,\n\t0x2eba0: 0x6c23ec20, 0x2eba1: 0x6c23ee20, 0x2eba2: 0x6c23f020, 0x2eba3: 0x6c23f220,\n\t0x2eba4: 0x6c23f420, 0x2eba5: 0x6c3a6c20, 0x2eba6: 0x6c3a6e20, 0x2eba7: 0x6c3a7020,\n\t0x2eba8: 0x6c3a7220, 0x2eba9: 0x6c3a7420, 0x2ebaa: 0x6c3a7620, 0x2ebab: 0x6c3a7820,\n\t0x2ebac: 0x6c3a7a20, 0x2ebad: 0x6c564c20, 0x2ebae: 0x6c564e20, 0x2ebaf: 0x6c565020,\n\t0x2ebb0: 0x6c565220, 0x2ebb1: 0x6c565420, 0x2ebb2: 0x6c565620, 0x2ebb3: 0x6c565820,\n\t0x2ebb4: 0x6c565a20, 0x2ebb5: 0x6c565c20, 0x2ebb6: 0x6c791020, 0x2ebb7: 0x6c791220,\n\t0x2ebb8: 0x6c791420, 0x2ebb9: 0x6c791620, 0x2ebba: 0x6c791820, 0x2ebbb: 0x6ca21e20,\n\t0x2ebbc: 0x6ca22020, 0x2ebbd: 0x6ca22220, 0x2ebbe: 0x6ca22420, 0x2ebbf: 0x6ca22620,\n\t// Block 0xbaf, offset 0x2ebc0\n\t0x2ebc0: 0x6ccf7820, 0x2ebc1: 0x6ca22820, 0x2ebc2: 0x6ccf7a20, 0x2ebc3: 0x6ccf7c20,\n\t0x2ebc4: 0x6ccf7e20, 0x2ebc5: 0x6ccf8020, 0x2ebc6: 0x6ccf8220, 0x2ebc7: 0x6ccf8420,\n\t0x2ebc8: 0x6ccf8620, 0x2ebc9: 0x6ccf8820, 0x2ebca: 0x6ccf8a20, 0x2ebcb: 0x6ccf8c20,\n\t0x2ebcc: 0x6cfd7820, 0x2ebcd: 0x6cfd7a20, 0x2ebce: 0x6cfd7c20, 0x2ebcf: 0x6cfd7e20,\n\t0x2ebd0: 0x6cfd8020, 0x2ebd1: 0x6cfd8220, 0x2ebd2: 0x6d2c1620, 0x2ebd3: 0x6d2c1820,\n\t0x2ebd4: 0x6d2c1a20, 0x2ebd5: 0x6d2c1c20, 0x2ebd6: 0x6d2c1e20, 0x2ebd7: 0x6d2c2020,\n\t0x2ebd8: 0x6d595020, 0x2ebd9: 0x6d595220, 0x2ebda: 0x6d595420, 0x2ebdb: 0x6d595620,\n\t0x2ebdc: 0x6d845820, 0x2ebdd: 0x6d845a20, 0x2ebde: 0x6d845c20, 0x2ebdf: 0x6d845e20,\n\t0x2ebe0: 0x6da94e20, 0x2ebe1: 0x6de5e620, 0x2ebe2: 0x6de5e820, 0x2ebe3: 0x6de5ea20,\n\t0x2ebe4: 0x6de5ec20, 0x2ebe5: 0x6de5ee20, 0x2ebe6: 0x6de5f020, 0x2ebe7: 0x6dfcd820,\n\t0x2ebe8: 0x6dfcda20, 0x2ebe9: 0x6e1e9c20, 0x2ebea: 0x6e390e20, 0x2ebeb: 0x6e407820,\n\t0x2ebec: 0x6c04f420, 0x2ebed: 0x6c01fe20, 0x2ebee: 0x6c09dc20, 0x2ebef: 0x6c09de20,\n\t0x2ebf0: 0x6c09e020, 0x2ebf1: 0x6c138c20, 0x2ebf2: 0x6c138e20, 0x2ebf3: 0x6c139020,\n\t0x2ebf4: 0x6c139220, 0x2ebf5: 0x6c139420, 0x2ebf6: 0x6c240020, 0x2ebf7: 0x6c139620,\n\t0x2ebf8: 0x6c139820, 0x2ebf9: 0x6c240a20, 0x2ebfa: 0x6c240c20, 0x2ebfb: 0x6c240e20,\n\t0x2ebfc: 0x6c241020, 0x2ebfd: 0x6c241220, 0x2ebfe: 0x6c241420, 0x2ebff: 0x6c241620,\n\t// Block 0xbb0, offset 0x2ec00\n\t0x2ec00: 0x6c3ab620, 0x2ec01: 0x6c241820, 0x2ec02: 0x6c241a20, 0x2ec03: 0x6c241c20,\n\t0x2ec04: 0x6c241e20, 0x2ec05: 0x6c242020, 0x2ec06: 0x6c242220, 0x2ec07: 0x6c242420,\n\t0x2ec08: 0x6c242620, 0x2ec09: 0x6c3acc20, 0x2ec0a: 0x6c569620, 0x2ec0b: 0x6c3ace20,\n\t0x2ec0c: 0x6c3ad020, 0x2ec0d: 0x6c3ad220, 0x2ec0e: 0x6c3ad420, 0x2ec0f: 0x6c3ad620,\n\t0x2ec10: 0x6c3ad820, 0x2ec11: 0x6c3ada20, 0x2ec12: 0x6c3adc20, 0x2ec13: 0x6c3ade20,\n\t0x2ec14: 0x6c3ae020, 0x2ec15: 0x6c3ae220, 0x2ec16: 0x6c3ae420, 0x2ec17: 0x6c3ae620,\n\t0x2ec18: 0x6c3ae820, 0x2ec19: 0x6c3aea20, 0x2ec1a: 0x6c3aec20, 0x2ec1b: 0x6c3aee20,\n\t0x2ec1c: 0x6c3af020, 0x2ec1d: 0x6c3af220, 0x2ec1e: 0x6c3af420, 0x2ec1f: 0x6c56a420,\n\t0x2ec20: 0x6c56a620, 0x2ec21: 0x6c56a820, 0x2ec22: 0x6c56aa20, 0x2ec23: 0x6c56ac20,\n\t0x2ec24: 0x6c56ae20, 0x2ec25: 0x6c56b020, 0x2ec26: 0x6c56b220, 0x2ec27: 0x6c56b420,\n\t0x2ec28: 0x6c56b620, 0x2ec29: 0x6c56b820, 0x2ec2a: 0x6c56ba20, 0x2ec2b: 0x6c56bc20,\n\t0x2ec2c: 0x6c56be20, 0x2ec2d: 0x6c56c020, 0x2ec2e: 0x6c56c220, 0x2ec2f: 0x6c56c420,\n\t0x2ec30: 0x6c56c620, 0x2ec31: 0x6c56c820, 0x2ec32: 0x6c56ca20, 0x2ec33: 0x6c794420,\n\t0x2ec34: 0x6c794620, 0x2ec35: 0x6c794820, 0x2ec36: 0x6c794a20, 0x2ec37: 0x6c794c20,\n\t0x2ec38: 0x6c794e20, 0x2ec39: 0x6c795020, 0x2ec3a: 0x6c795220, 0x2ec3b: 0x6c795420,\n\t0x2ec3c: 0x6c795620, 0x2ec3d: 0x6c795820, 0x2ec3e: 0x6c795a20, 0x2ec3f: 0x6ca25220,\n\t// Block 0xbb1, offset 0x2ec40\n\t0x2ec40: 0x6c795c20, 0x2ec41: 0x6c795e20, 0x2ec42: 0x6c796020, 0x2ec43: 0x6c796220,\n\t0x2ec44: 0x6ca26420, 0x2ec45: 0x6ca26620, 0x2ec46: 0x6ccfce20, 0x2ec47: 0x6ca26820,\n\t0x2ec48: 0x6ca26a20, 0x2ec49: 0x6ca26c20, 0x2ec4a: 0x6ca26e20, 0x2ec4b: 0x6ccfd020,\n\t0x2ec4c: 0x6ccfd220, 0x2ec4d: 0x6ca27020, 0x2ec4e: 0x6ca27220, 0x2ec4f: 0x6ca27420,\n\t0x2ec50: 0x6ca27620, 0x2ec51: 0x6ca27820, 0x2ec52: 0x6ccfd420, 0x2ec53: 0x6ca27a20,\n\t0x2ec54: 0x6ca27c20, 0x2ec55: 0x6ca27e20, 0x2ec56: 0x6ca28020, 0x2ec57: 0x6ca28220,\n\t0x2ec58: 0x6ca28420, 0x2ec59: 0x6ca28620, 0x2ec5a: 0x6ca28820, 0x2ec5b: 0x6ca28a20,\n\t0x2ec5c: 0x6ca28c20, 0x2ec5d: 0x6ca28e20, 0x2ec5e: 0x6ca29020, 0x2ec5f: 0x6ca29220,\n\t0x2ec60: 0x6ca29420, 0x2ec61: 0x6ca29620, 0x2ec62: 0x6ccfe420, 0x2ec63: 0x6ccfe620,\n\t0x2ec64: 0x6ccfe820, 0x2ec65: 0x6ccfea20, 0x2ec66: 0x6ccfec20, 0x2ec67: 0x6ccfee20,\n\t0x2ec68: 0x6ccff020, 0x2ec69: 0x6ccff220, 0x2ec6a: 0x6ca29820, 0x2ec6b: 0x6ccfd620,\n\t0x2ec6c: 0x6ccff420, 0x2ec6d: 0x6ccff620, 0x2ec6e: 0x6cfdbe20, 0x2ec6f: 0x6ccff820,\n\t0x2ec70: 0x6ccffa20, 0x2ec71: 0x6ccffc20, 0x2ec72: 0x6ccffe20, 0x2ec73: 0x6cd00020,\n\t0x2ec74: 0x6cd00220, 0x2ec75: 0x6cd00420, 0x2ec76: 0x6cd00620, 0x2ec77: 0x6cfdc020,\n\t0x2ec78: 0x6cd00820, 0x2ec79: 0x6cd00a20, 0x2ec7a: 0x6cfdd220, 0x2ec7b: 0x6cfdd420,\n\t0x2ec7c: 0x6cfdd620, 0x2ec7d: 0x6cfdd820, 0x2ec7e: 0x6cfdda20, 0x2ec7f: 0x6cfddc20,\n\t// Block 0xbb2, offset 0x2ec80\n\t0x2ec80: 0x6cfdde20, 0x2ec81: 0x6cfdc220, 0x2ec82: 0x6cfde020, 0x2ec83: 0x6d2c6a20,\n\t0x2ec84: 0x6d2c7820, 0x2ec85: 0x6cfde220, 0x2ec86: 0x6cfde420, 0x2ec87: 0x6cfde620,\n\t0x2ec88: 0x6cfde820, 0x2ec89: 0x6cfdea20, 0x2ec8a: 0x6cfdec20, 0x2ec8b: 0x6d599420,\n\t0x2ec8c: 0x6d2c7a20, 0x2ec8d: 0x6d2c7c20, 0x2ec8e: 0x6d598620, 0x2ec8f: 0x6d2c7e20,\n\t0x2ec90: 0x6d2c8020, 0x2ec91: 0x6d2c8220, 0x2ec92: 0x6d2c8420, 0x2ec93: 0x6d2c6820,\n\t0x2ec94: 0x6d2c8620, 0x2ec95: 0x6d2c8820, 0x2ec96: 0x6d599620, 0x2ec97: 0x6d599820,\n\t0x2ec98: 0x6d599a20, 0x2ec99: 0x6d599c20, 0x2ec9a: 0x6d599e20, 0x2ec9b: 0x6d59a020,\n\t0x2ec9c: 0x6d59a220, 0x2ec9d: 0x6d59a420, 0x2ec9e: 0x6d59a620, 0x2ec9f: 0x6d59a820,\n\t0x2eca0: 0x6d59aa20, 0x2eca1: 0x6d59ac20, 0x2eca2: 0x6d59ae20, 0x2eca3: 0x6d847e20,\n\t0x2eca4: 0x6d59b020, 0x2eca5: 0x6d848620, 0x2eca6: 0x6d848820, 0x2eca7: 0x6d848a20,\n\t0x2eca8: 0x6d848c20, 0x2eca9: 0x6d848e20, 0x2ecaa: 0x6d849020, 0x2ecab: 0x6d849220,\n\t0x2ecac: 0x6d849420, 0x2ecad: 0x6d849620, 0x2ecae: 0x6da96a20, 0x2ecaf: 0x6da96c20,\n\t0x2ecb0: 0x6da96e20, 0x2ecb1: 0x6da97020, 0x2ecb2: 0x6da97220, 0x2ecb3: 0x6da97420,\n\t0x2ecb4: 0x6da97620, 0x2ecb5: 0x6dca5a20, 0x2ecb6: 0x6dca5c20, 0x2ecb7: 0x6dca5e20,\n\t0x2ecb8: 0x6de60020, 0x2ecb9: 0x6de60620, 0x2ecba: 0x6de60820, 0x2ecbb: 0x6dfce620,\n\t0x2ecbc: 0x6dfcf020, 0x2ecbd: 0x6dfcf220, 0x2ecbe: 0x6e0fc820, 0x2ecbf: 0x6e1ea820,\n\t// Block 0xbb3, offset 0x2ecc0\n\t0x2ecc0: 0x6e1eaa20, 0x2ecc1: 0x6e2a0c20, 0x2ecc2: 0x6e2a0e20, 0x2ecc3: 0x6e2a1020,\n\t0x2ecc4: 0x6c09ee20, 0x2ecc5: 0x6c572620, 0x2ecc6: 0x6c79ba20, 0x2ecc7: 0x6ca2d620,\n\t0x2ecc8: 0x6ca2d820, 0x2ecc9: 0x6c09f220, 0x2ecca: 0x6c09f420, 0x2eccb: 0x6c04fa20,\n\t0x2eccc: 0x6c09f620, 0x2eccd: 0x6c09f820, 0x2ecce: 0x6c13be20, 0x2eccf: 0x6c13c020,\n\t0x2ecd0: 0x6c13c220, 0x2ecd1: 0x6c13c420, 0x2ecd2: 0x6c247420, 0x2ecd3: 0x6c247620,\n\t0x2ecd4: 0x6c247820, 0x2ecd5: 0x6c247a20, 0x2ecd6: 0x6c247c20, 0x2ecd7: 0x6c247e20,\n\t0x2ecd8: 0x6c248020, 0x2ecd9: 0x6c248220, 0x2ecda: 0x6c248420, 0x2ecdb: 0x6c248620,\n\t0x2ecdc: 0x6c3b4420, 0x2ecdd: 0x6c3b4620, 0x2ecde: 0x6c3b4820, 0x2ecdf: 0x6c3b4a20,\n\t0x2ece0: 0x6c3b4c20, 0x2ece1: 0x6c3b4e20, 0x2ece2: 0x6c3b5020, 0x2ece3: 0x6c3b5220,\n\t0x2ece4: 0x6c3b5420, 0x2ece5: 0x6c3b5620, 0x2ece6: 0x6c3b5820, 0x2ece7: 0x6c3b5a20,\n\t0x2ece8: 0x6c3b5c20, 0x2ece9: 0x6c3b5e20, 0x2ecea: 0x6c3b6020, 0x2eceb: 0x6c3b6220,\n\t0x2ecec: 0x6c3b6420, 0x2eced: 0x6c3b6620, 0x2ecee: 0x6c3b6820, 0x2ecef: 0x6c3b6a20,\n\t0x2ecf0: 0x6c3b6c20, 0x2ecf1: 0x6c3b6e20, 0x2ecf2: 0x6c573a20, 0x2ecf3: 0x6c573c20,\n\t0x2ecf4: 0x6c573e20, 0x2ecf5: 0x6c574020, 0x2ecf6: 0x6c574220, 0x2ecf7: 0x6c574420,\n\t0x2ecf8: 0x6c574620, 0x2ecf9: 0x6c574820, 0x2ecfa: 0x6c79be20, 0x2ecfb: 0x6c574a20,\n\t0x2ecfc: 0x6c79c020, 0x2ecfd: 0x6c574c20, 0x2ecfe: 0x6c574e20, 0x2ecff: 0x6c575020,\n\t// Block 0xbb4, offset 0x2ed00\n\t0x2ed00: 0x6c575220, 0x2ed01: 0x6c575420, 0x2ed02: 0x6c575620, 0x2ed03: 0x6c575820,\n\t0x2ed04: 0x6c575a20, 0x2ed05: 0x6c575c20, 0x2ed06: 0x6c575e20, 0x2ed07: 0x6c576020,\n\t0x2ed08: 0x6c576220, 0x2ed09: 0x6c576420, 0x2ed0a: 0x6c576620, 0x2ed0b: 0x6c576820,\n\t0x2ed0c: 0x6c576a20, 0x2ed0d: 0x6c576c20, 0x2ed0e: 0x6c576e20, 0x2ed0f: 0x6c577020,\n\t0x2ed10: 0x6c577220, 0x2ed11: 0x6c577420, 0x2ed12: 0x6c79d620, 0x2ed13: 0x6c79d820,\n\t0x2ed14: 0x6c79da20, 0x2ed15: 0x6c79dc20, 0x2ed16: 0x6c79de20, 0x2ed17: 0x6c79e020,\n\t0x2ed18: 0x6c79e220, 0x2ed19: 0x6c79e420, 0x2ed1a: 0x6c79e620, 0x2ed1b: 0x6c79e820,\n\t0x2ed1c: 0x6c79ea20, 0x2ed1d: 0x6c79ec20, 0x2ed1e: 0x6c79ee20, 0x2ed1f: 0x6c79f020,\n\t0x2ed20: 0x6c79f220, 0x2ed21: 0x6c79f420, 0x2ed22: 0x6c79f620, 0x2ed23: 0x6c79f820,\n\t0x2ed24: 0x6c79fa20, 0x2ed25: 0x6c79fc20, 0x2ed26: 0x6c79fe20, 0x2ed27: 0x6c7a0020,\n\t0x2ed28: 0x6c7a0220, 0x2ed29: 0x6c7a0420, 0x2ed2a: 0x6c7a0620, 0x2ed2b: 0x6c7a0820,\n\t0x2ed2c: 0x6c7a0a20, 0x2ed2d: 0x6c7a0c20, 0x2ed2e: 0x6c7a0e20, 0x2ed2f: 0x6c7a1020,\n\t0x2ed30: 0x6c7a1220, 0x2ed31: 0x6c7a1420, 0x2ed32: 0x6c7a1620, 0x2ed33: 0x6ca2ea20,\n\t0x2ed34: 0x6ca2ec20, 0x2ed35: 0x6ca2ee20, 0x2ed36: 0x6ca2f020, 0x2ed37: 0x6cd08c20,\n\t0x2ed38: 0x6ca2f220, 0x2ed39: 0x6c7a7220, 0x2ed3a: 0x6ca2f420, 0x2ed3b: 0x6ca2f620,\n\t0x2ed3c: 0x6ca2f820, 0x2ed3d: 0x6ca2fa20, 0x2ed3e: 0x6ca2fc20, 0x2ed3f: 0x6ca2fe20,\n\t// Block 0xbb5, offset 0x2ed40\n\t0x2ed40: 0x6ca30020, 0x2ed41: 0x6ca30220, 0x2ed42: 0x6ca30420, 0x2ed43: 0x6ca30620,\n\t0x2ed44: 0x6ca30820, 0x2ed45: 0x6ca30a20, 0x2ed46: 0x6ca30c20, 0x2ed47: 0x6ca30e20,\n\t0x2ed48: 0x6ca31020, 0x2ed49: 0x6c7a1820, 0x2ed4a: 0x6ca31220, 0x2ed4b: 0x6ca31420,\n\t0x2ed4c: 0x6ca31620, 0x2ed4d: 0x6ca31820, 0x2ed4e: 0x6ca31a20, 0x2ed4f: 0x6ca31c20,\n\t0x2ed50: 0x6ca31e20, 0x2ed51: 0x6ca32020, 0x2ed52: 0x6ca32220, 0x2ed53: 0x6ca32420,\n\t0x2ed54: 0x6cd08e20, 0x2ed55: 0x6cd09020, 0x2ed56: 0x6cd09220, 0x2ed57: 0x6cd09420,\n\t0x2ed58: 0x6cd09620, 0x2ed59: 0x6cd09820, 0x2ed5a: 0x6cd09a20, 0x2ed5b: 0x6cd09c20,\n\t0x2ed5c: 0x6cd09e20, 0x2ed5d: 0x6cd0a020, 0x2ed5e: 0x6cfe6220, 0x2ed5f: 0x6cd0a220,\n\t0x2ed60: 0x6cd0a420, 0x2ed61: 0x6cd0a620, 0x2ed62: 0x6cd0a820, 0x2ed63: 0x6cd0aa20,\n\t0x2ed64: 0x6cd0ac20, 0x2ed65: 0x6cd0ae20, 0x2ed66: 0x6cd0b020, 0x2ed67: 0x6cfe4c20,\n\t0x2ed68: 0x6cd0b220, 0x2ed69: 0x6cd0b420, 0x2ed6a: 0x6cd0b620, 0x2ed6b: 0x6cd0b820,\n\t0x2ed6c: 0x6cd0ba20, 0x2ed6d: 0x6cd0bc20, 0x2ed6e: 0x6cd0be20, 0x2ed6f: 0x6cd0c020,\n\t0x2ed70: 0x6cd0c220, 0x2ed71: 0x6cd0c420, 0x2ed72: 0x6cd0c620, 0x2ed73: 0x6cd0c820,\n\t0x2ed74: 0x6cd0ca20, 0x2ed75: 0x6cd0cc20, 0x2ed76: 0x6cd0ce20, 0x2ed77: 0x6cd0d020,\n\t0x2ed78: 0x6cd0d220, 0x2ed79: 0x6cd0d420, 0x2ed7a: 0x6cd0d620, 0x2ed7b: 0x6cd0d820,\n\t0x2ed7c: 0x6cd0da20, 0x2ed7d: 0x6cfe6420, 0x2ed7e: 0x6cfe6620, 0x2ed7f: 0x6cfe6820,\n\t// Block 0xbb6, offset 0x2ed80\n\t0x2ed80: 0x6cfe6a20, 0x2ed81: 0x6cfe6c20, 0x2ed82: 0x6cfe6e20, 0x2ed83: 0x6cfe7020,\n\t0x2ed84: 0x6cfe7220, 0x2ed85: 0x6cfe7420, 0x2ed86: 0x6cfe7620, 0x2ed87: 0x6cfe7820,\n\t0x2ed88: 0x6cfe7a20, 0x2ed89: 0x6cfe7c20, 0x2ed8a: 0x6cfe7e20, 0x2ed8b: 0x6cfe8020,\n\t0x2ed8c: 0x6cfe8220, 0x2ed8d: 0x6cfe8420, 0x2ed8e: 0x6cfe8620, 0x2ed8f: 0x6cfe8820,\n\t0x2ed90: 0x6cfe8a20, 0x2ed91: 0x6cfe8c20, 0x2ed92: 0x6cfe8e20, 0x2ed93: 0x6cfe9020,\n\t0x2ed94: 0x6cfe9220, 0x2ed95: 0x6cfe9420, 0x2ed96: 0x6cfe9620, 0x2ed97: 0x6cfe9820,\n\t0x2ed98: 0x6cfe9a20, 0x2ed99: 0x6cfe9c20, 0x2ed9a: 0x6cfe9e20, 0x2ed9b: 0x6cfea020,\n\t0x2ed9c: 0x6cfea220, 0x2ed9d: 0x6cfea420, 0x2ed9e: 0x6cfea620, 0x2ed9f: 0x6cfea820,\n\t0x2eda0: 0x6d2cea20, 0x2eda1: 0x6d2cec20, 0x2eda2: 0x6d2cee20, 0x2eda3: 0x6d2cf020,\n\t0x2eda4: 0x6d2cf220, 0x2eda5: 0x6d2cf420, 0x2eda6: 0x6d2cf620, 0x2eda7: 0x6d2cf820,\n\t0x2eda8: 0x6d2cfa20, 0x2eda9: 0x6d5a0620, 0x2edaa: 0x6d2cfc20, 0x2edab: 0x6d2cfe20,\n\t0x2edac: 0x6d5a0820, 0x2edad: 0x6d2d0020, 0x2edae: 0x6d2d0220, 0x2edaf: 0x6cff4020,\n\t0x2edb0: 0x6d2d0420, 0x2edb1: 0x6d2d0620, 0x2edb2: 0x6d2d0820, 0x2edb3: 0x6d2d0a20,\n\t0x2edb4: 0x6d2d0c20, 0x2edb5: 0x6d2d0e20, 0x2edb6: 0x6d2d1020, 0x2edb7: 0x6d2d1220,\n\t0x2edb8: 0x6d2d1420, 0x2edb9: 0x6d5a1e20, 0x2edba: 0x6d5a2020, 0x2edbb: 0x6d5a2220,\n\t0x2edbc: 0x6d5a2420, 0x2edbd: 0x6d5a2620, 0x2edbe: 0x6d5a2820, 0x2edbf: 0x6d84cc20,\n\t// Block 0xbb7, offset 0x2edc0\n\t0x2edc0: 0x6d5a2a20, 0x2edc1: 0x6d5a2c20, 0x2edc2: 0x6d5a2e20, 0x2edc3: 0x6d5a3020,\n\t0x2edc4: 0x6d5a3220, 0x2edc5: 0x6d5a3420, 0x2edc6: 0x6d5a3620, 0x2edc7: 0x6d5a3820,\n\t0x2edc8: 0x6d5a3a20, 0x2edc9: 0x6d5a3c20, 0x2edca: 0x6d5a3e20, 0x2edcb: 0x6d5a4020,\n\t0x2edcc: 0x6d5a4220, 0x2edcd: 0x6d84da20, 0x2edce: 0x6d5a4420, 0x2edcf: 0x6d84dc20,\n\t0x2edd0: 0x6da99a20, 0x2edd1: 0x6d84de20, 0x2edd2: 0x6d84e020, 0x2edd3: 0x6d5a4620,\n\t0x2edd4: 0x6d84e220, 0x2edd5: 0x6d84e420, 0x2edd6: 0x6d84e620, 0x2edd7: 0x6da99c20,\n\t0x2edd8: 0x6d84e820, 0x2edd9: 0x6d84ea20, 0x2edda: 0x6d84ec20, 0x2eddb: 0x6d84ee20,\n\t0x2eddc: 0x6d84f020, 0x2eddd: 0x6d84f220, 0x2edde: 0x6d84f420, 0x2eddf: 0x6d84f620,\n\t0x2ede0: 0x6d84f820, 0x2ede1: 0x6d84fa20, 0x2ede2: 0x6d856820, 0x2ede3: 0x6d84fc20,\n\t0x2ede4: 0x6d84fe20, 0x2ede5: 0x6da9a620, 0x2ede6: 0x6da9a820, 0x2ede7: 0x6dca8820,\n\t0x2ede8: 0x6da9aa20, 0x2ede9: 0x6da9ac20, 0x2edea: 0x6da9ae20, 0x2edeb: 0x6da9b020,\n\t0x2edec: 0x6da9b220, 0x2eded: 0x6da9b420, 0x2edee: 0x6da9b620, 0x2edef: 0x6da9b820,\n\t0x2edf0: 0x6da9ba20, 0x2edf1: 0x6da9bc20, 0x2edf2: 0x6da9be20, 0x2edf3: 0x6da9c020,\n\t0x2edf4: 0x6da9c220, 0x2edf5: 0x6dca8a20, 0x2edf6: 0x6dca8c20, 0x2edf7: 0x6de61c20,\n\t0x2edf8: 0x6dca8e20, 0x2edf9: 0x6dca9020, 0x2edfa: 0x6dfcfc20, 0x2edfb: 0x6dca9220,\n\t0x2edfc: 0x6dca9420, 0x2edfd: 0x6de61e20, 0x2edfe: 0x6dca9620, 0x2edff: 0x6dca9820,\n\t// Block 0xbb8, offset 0x2ee00\n\t0x2ee00: 0x6dca9a20, 0x2ee01: 0x6dca9c20, 0x2ee02: 0x6dca9e20, 0x2ee03: 0x6de62820,\n\t0x2ee04: 0x6de62a20, 0x2ee05: 0x6de62c20, 0x2ee06: 0x6de62e20, 0x2ee07: 0x6de63020,\n\t0x2ee08: 0x6de63220, 0x2ee09: 0x6de63420, 0x2ee0a: 0x6de63620, 0x2ee0b: 0x6de63820,\n\t0x2ee0c: 0x6dfd0020, 0x2ee0d: 0x6dfd0220, 0x2ee0e: 0x6dfd0420, 0x2ee0f: 0x6dfd0620,\n\t0x2ee10: 0x6dfd0820, 0x2ee11: 0x6dfd0a20, 0x2ee12: 0x6dfd0c20, 0x2ee13: 0x6e0fd620,\n\t0x2ee14: 0x6e0fd820, 0x2ee15: 0x6e1eb420, 0x2ee16: 0x6e0fda20, 0x2ee17: 0x6e1eb620,\n\t0x2ee18: 0x6e1eb820, 0x2ee19: 0x6e1eba20, 0x2ee1a: 0x6e2a1c20, 0x2ee1b: 0x6e32de20,\n\t0x2ee1c: 0x6c09fa20, 0x2ee1d: 0x6c3bac20, 0x2ee1e: 0x6c7a7820, 0x2ee1f: 0x6c7a7a20,\n\t0x2ee20: 0x6ca38020, 0x2ee21: 0x6cff4220, 0x2ee22: 0x6d856a20, 0x2ee23: 0x6de66820,\n\t0x2ee24: 0x6e1ec620, 0x2ee25: 0x6e32e420, 0x2ee26: 0x6c09fc20, 0x2ee27: 0x6c24a220,\n\t0x2ee28: 0x6c3bb620, 0x2ee29: 0x6c3bb820, 0x2ee2a: 0x6c57da20, 0x2ee2b: 0x6c57dc20,\n\t0x2ee2c: 0x6c57de20, 0x2ee2d: 0x6c57e020, 0x2ee2e: 0x6c57e220, 0x2ee2f: 0x6c57e420,\n\t0x2ee30: 0x6c57e620, 0x2ee31: 0x6c57e820, 0x2ee32: 0x6c57ea20, 0x2ee33: 0x6c7a9020,\n\t0x2ee34: 0x6c7a9220, 0x2ee35: 0x6c7a9420, 0x2ee36: 0x6ca39820, 0x2ee37: 0x6ca39a20,\n\t0x2ee38: 0x6ca39c20, 0x2ee39: 0x6cd17820, 0x2ee3a: 0x6cd17a20, 0x2ee3b: 0x6cd17c20,\n\t0x2ee3c: 0x6cd17e20, 0x2ee3d: 0x6cff6020, 0x2ee3e: 0x6cff6220, 0x2ee3f: 0x6cff6420,\n\t// Block 0xbb9, offset 0x2ee40\n\t0x2ee40: 0x6d2d9620, 0x2ee41: 0x6cff6620, 0x2ee42: 0x6d2da420, 0x2ee43: 0x6d2da620,\n\t0x2ee44: 0x6d2da820, 0x2ee45: 0x6d2daa20, 0x2ee46: 0x6d2dac20, 0x2ee47: 0x6d5acc20,\n\t0x2ee48: 0x6d5ace20, 0x2ee49: 0x6d5ad020, 0x2ee4a: 0x6d857a20, 0x2ee4b: 0x6d857c20,\n\t0x2ee4c: 0x6d857e20, 0x2ee4d: 0x6d858020, 0x2ee4e: 0x6d858220, 0x2ee4f: 0x6daa2020,\n\t0x2ee50: 0x6daa2220, 0x2ee51: 0x6daa2420, 0x2ee52: 0x6daa2620, 0x2ee53: 0x6dcaee20,\n\t0x2ee54: 0x6dcaf020, 0x2ee55: 0x6dcaf220, 0x2ee56: 0x6de66e20, 0x2ee57: 0x6e0ffa20,\n\t0x2ee58: 0x6c09fe20, 0x2ee59: 0x6c3bc420, 0x2ee5a: 0x6c57fe20, 0x2ee5b: 0x6ca3ba20,\n\t0x2ee5c: 0x6ca3bc20, 0x2ee5d: 0x6cff8a20, 0x2ee5e: 0x6cff8c20, 0x2ee5f: 0x6c0a0220,\n\t0x2ee60: 0x6c580a20, 0x2ee61: 0x6c7ab220, 0x2ee62: 0x6ca3be20, 0x2ee63: 0x6ca3c020,\n\t0x2ee64: 0x6cd1a420, 0x2ee65: 0x6cd1a620, 0x2ee66: 0x6cd1a820, 0x2ee67: 0x6d2dd620,\n\t0x2ee68: 0x6c0a0620, 0x2ee69: 0x6c0a0820, 0x2ee6a: 0x6c13d020, 0x2ee6b: 0x6c24aa20,\n\t0x2ee6c: 0x6c24ac20, 0x2ee6d: 0x6c581a20, 0x2ee6e: 0x6c581c20, 0x2ee6f: 0x6cd1b620,\n\t0x2ee70: 0x6c0a0a20, 0x2ee71: 0x6c0a0c20, 0x2ee72: 0x6c0a0e20, 0x2ee73: 0x6c0a1020,\n\t0x2ee74: 0x6c0a1220, 0x2ee75: 0x6c0a1420, 0x2ee76: 0x6c13d620, 0x2ee77: 0x6c24b620,\n\t0x2ee78: 0x6c24b820, 0x2ee79: 0x6c24ba20, 0x2ee7a: 0x6c24bc20, 0x2ee7b: 0x6c3be220,\n\t0x2ee7c: 0x6c24be20, 0x2ee7d: 0x6c3be420, 0x2ee7e: 0x6c3be620, 0x2ee7f: 0x6c3be820,\n\t// Block 0xbba, offset 0x2ee80\n\t0x2ee80: 0x6c3bea20, 0x2ee81: 0x6c3bec20, 0x2ee82: 0x6c3bee20, 0x2ee83: 0x6c3bf020,\n\t0x2ee84: 0x6c3bf220, 0x2ee85: 0x6c3bf420, 0x2ee86: 0x6c582420, 0x2ee87: 0x6c582620,\n\t0x2ee88: 0x6c582820, 0x2ee89: 0x6c582a20, 0x2ee8a: 0x6c582c20, 0x2ee8b: 0x6c582e20,\n\t0x2ee8c: 0x6c583020, 0x2ee8d: 0x6c583220, 0x2ee8e: 0x6c583420, 0x2ee8f: 0x6c583620,\n\t0x2ee90: 0x6c583820, 0x2ee91: 0x6c583a20, 0x2ee92: 0x6c583c20, 0x2ee93: 0x6c583e20,\n\t0x2ee94: 0x6c7abe20, 0x2ee95: 0x6c7ac020, 0x2ee96: 0x6c7ac220, 0x2ee97: 0x6c7ac420,\n\t0x2ee98: 0x6c7ac620, 0x2ee99: 0x6c7ac820, 0x2ee9a: 0x6c7aca20, 0x2ee9b: 0x6c7acc20,\n\t0x2ee9c: 0x6c7ace20, 0x2ee9d: 0x6c7ad020, 0x2ee9e: 0x6c7ad220, 0x2ee9f: 0x6c7ad420,\n\t0x2eea0: 0x6c7bac20, 0x2eea1: 0x6ca3d620, 0x2eea2: 0x6ca3d820, 0x2eea3: 0x6ca3da20,\n\t0x2eea4: 0x6ca3dc20, 0x2eea5: 0x6ca3de20, 0x2eea6: 0x6ca3e020, 0x2eea7: 0x6ca3e220,\n\t0x2eea8: 0x6ca89a20, 0x2eea9: 0x6ca3e420, 0x2eeaa: 0x6cd1be20, 0x2eeab: 0x6cd1c020,\n\t0x2eeac: 0x6cd1c220, 0x2eead: 0x6cd1c420, 0x2eeae: 0x6cd1c620, 0x2eeaf: 0x6cd1c820,\n\t0x2eeb0: 0x6ca3e620, 0x2eeb1: 0x6cd20620, 0x2eeb2: 0x6cd1ca20, 0x2eeb3: 0x6cd1cc20,\n\t0x2eeb4: 0x6cd1ce20, 0x2eeb5: 0x6cffaa20, 0x2eeb6: 0x6cffac20, 0x2eeb7: 0x6cffae20,\n\t0x2eeb8: 0x6cffb020, 0x2eeb9: 0x6cffb220, 0x2eeba: 0x6cffb420, 0x2eebb: 0x6d2de220,\n\t0x2eebc: 0x6d2de420, 0x2eebd: 0x6d2de620, 0x2eebe: 0x6d5b0420, 0x2eebf: 0x6d5b0620,\n\t// Block 0xbbb, offset 0x2eec0\n\t0x2eec0: 0x6d85a020, 0x2eec1: 0x6d85a220, 0x2eec2: 0x6d85a420, 0x2eec3: 0x6daa4620,\n\t0x2eec4: 0x6daa4820, 0x2eec5: 0x6dcb0e20, 0x2eec6: 0x6de68020, 0x2eec7: 0x6de68220,\n\t0x2eec8: 0x6dfd3620, 0x2eec9: 0x6dfd4820, 0x2eeca: 0x6e1ede20, 0x2eecb: 0x6c0a1a20,\n\t0x2eecc: 0x6c3c1420, 0x2eecd: 0x6c7b0e20, 0x2eece: 0x6cd20820, 0x2eecf: 0x6cd20a20,\n\t0x2eed0: 0x6d2e0420, 0x2eed1: 0x6d2e0620, 0x2eed2: 0x6c0a2020, 0x2eed3: 0x6c24d820,\n\t0x2eed4: 0x6c24da20, 0x2eed5: 0x6c24dc20, 0x2eed6: 0x6c24de20, 0x2eed7: 0x6c24e020,\n\t0x2eed8: 0x6c3c2020, 0x2eed9: 0x6c3c2220, 0x2eeda: 0x6c3c2420, 0x2eedb: 0x6c3c2620,\n\t0x2eedc: 0x6c3c2820, 0x2eedd: 0x6c3c2a20, 0x2eede: 0x6c3c2c20, 0x2eedf: 0x6c3c2e20,\n\t0x2eee0: 0x6c3c3020, 0x2eee1: 0x6c3c4220, 0x2eee2: 0x6c589c20, 0x2eee3: 0x6c589e20,\n\t0x2eee4: 0x6c58a020, 0x2eee5: 0x6c58a220, 0x2eee6: 0x6c58a420, 0x2eee7: 0x6c58a620,\n\t0x2eee8: 0x6c58a820, 0x2eee9: 0x6c58aa20, 0x2eeea: 0x6c58ac20, 0x2eeeb: 0x6c58ae20,\n\t0x2eeec: 0x6c58b020, 0x2eeed: 0x6c58b220, 0x2eeee: 0x6c58b420, 0x2eeef: 0x6c58b620,\n\t0x2eef0: 0x6c7b2c20, 0x2eef1: 0x6c7b2e20, 0x2eef2: 0x6c7b3020, 0x2eef3: 0x6c7b3220,\n\t0x2eef4: 0x6c7b3420, 0x2eef5: 0x6ca41a20, 0x2eef6: 0x6c7b3620, 0x2eef7: 0x6c7b3820,\n\t0x2eef8: 0x6c7b3a20, 0x2eef9: 0x6c7b3c20, 0x2eefa: 0x6c58b820, 0x2eefb: 0x6c7b3e20,\n\t0x2eefc: 0x6c7b4020, 0x2eefd: 0x6c7b4220, 0x2eefe: 0x6c7b4420, 0x2eeff: 0x6c7b4620,\n\t// Block 0xbbc, offset 0x2ef00\n\t0x2ef00: 0x6c7b4820, 0x2ef01: 0x6c7b4a20, 0x2ef02: 0x6c7b4c20, 0x2ef03: 0x6c7b4e20,\n\t0x2ef04: 0x6c7b5020, 0x2ef05: 0x6c7b5220, 0x2ef06: 0x6c7b5420, 0x2ef07: 0x6c7b5620,\n\t0x2ef08: 0x6c7b5820, 0x2ef09: 0x6c7b5a20, 0x2ef0a: 0x6ca42e20, 0x2ef0b: 0x6ca43020,\n\t0x2ef0c: 0x6ca43220, 0x2ef0d: 0x6ca43420, 0x2ef0e: 0x6ca43620, 0x2ef0f: 0x6ca43820,\n\t0x2ef10: 0x6ca43a20, 0x2ef11: 0x6ca43c20, 0x2ef12: 0x6ca43e20, 0x2ef13: 0x6ca44020,\n\t0x2ef14: 0x6ca44220, 0x2ef15: 0x6ca44420, 0x2ef16: 0x6ca44620, 0x2ef17: 0x6cd23020,\n\t0x2ef18: 0x6cd23220, 0x2ef19: 0x6cd23420, 0x2ef1a: 0x6cd23620, 0x2ef1b: 0x6cd23820,\n\t0x2ef1c: 0x6cd23a20, 0x2ef1d: 0x6cd23c20, 0x2ef1e: 0x6cd23e20, 0x2ef1f: 0x6cd24020,\n\t0x2ef20: 0x6cd24220, 0x2ef21: 0x6cd24420, 0x2ef22: 0x6cd24620, 0x2ef23: 0x6cd24820,\n\t0x2ef24: 0x6cd24a20, 0x2ef25: 0x6cd24c20, 0x2ef26: 0x6cd24e20, 0x2ef27: 0x6cd25020,\n\t0x2ef28: 0x6cd25220, 0x2ef29: 0x6cd25420, 0x2ef2a: 0x6cd25620, 0x2ef2b: 0x6cd25820,\n\t0x2ef2c: 0x6d000620, 0x2ef2d: 0x6d000820, 0x2ef2e: 0x6d000a20, 0x2ef2f: 0x6d000c20,\n\t0x2ef30: 0x6d000e20, 0x2ef31: 0x6d001020, 0x2ef32: 0x6d001220, 0x2ef33: 0x6d001420,\n\t0x2ef34: 0x6d001620, 0x2ef35: 0x6d001820, 0x2ef36: 0x6d001a20, 0x2ef37: 0x6d001c20,\n\t0x2ef38: 0x6d001e20, 0x2ef39: 0x6d002020, 0x2ef3a: 0x6d002220, 0x2ef3b: 0x6d002420,\n\t0x2ef3c: 0x6d002620, 0x2ef3d: 0x6d002820, 0x2ef3e: 0x6d002a20, 0x2ef3f: 0x6d002c20,\n\t// Block 0xbbd, offset 0x2ef40\n\t0x2ef40: 0x6d002e20, 0x2ef41: 0x6d003020, 0x2ef42: 0x6d003220, 0x2ef43: 0x6d003420,\n\t0x2ef44: 0x6d003620, 0x2ef45: 0x6d003820, 0x2ef46: 0x6d003a20, 0x2ef47: 0x6d2e2020,\n\t0x2ef48: 0x6d2e2220, 0x2ef49: 0x6d2e2420, 0x2ef4a: 0x6d2e2620, 0x2ef4b: 0x6d2e2820,\n\t0x2ef4c: 0x6d2e2a20, 0x2ef4d: 0x6d2e2c20, 0x2ef4e: 0x6d2e2e20, 0x2ef4f: 0x6d00b020,\n\t0x2ef50: 0x6d00b220, 0x2ef51: 0x6d2e3020, 0x2ef52: 0x6d2e3220, 0x2ef53: 0x6d2e3420,\n\t0x2ef54: 0x6d2e3620, 0x2ef55: 0x6d2e3820, 0x2ef56: 0x6d2e3a20, 0x2ef57: 0x6d2e3c20,\n\t0x2ef58: 0x6d2e3e20, 0x2ef59: 0x6d5b4a20, 0x2ef5a: 0x6d5b4c20, 0x2ef5b: 0x6d5b4e20,\n\t0x2ef5c: 0x6d5b5020, 0x2ef5d: 0x6d5b5220, 0x2ef5e: 0x6d5b5420, 0x2ef5f: 0x6d5b3020,\n\t0x2ef60: 0x6d5b5620, 0x2ef61: 0x6d5b5820, 0x2ef62: 0x6d5b5a20, 0x2ef63: 0x6d5b5c20,\n\t0x2ef64: 0x6d5b5e20, 0x2ef65: 0x6d5b6020, 0x2ef66: 0x6d5b6220, 0x2ef67: 0x6d2e4020,\n\t0x2ef68: 0x6d5b6420, 0x2ef69: 0x6d5b6620, 0x2ef6a: 0x6d5b6820, 0x2ef6b: 0x6d5b6a20,\n\t0x2ef6c: 0x6d85d420, 0x2ef6d: 0x6d85d620, 0x2ef6e: 0x6d85d820, 0x2ef6f: 0x6d85da20,\n\t0x2ef70: 0x6d85dc20, 0x2ef71: 0x6d85de20, 0x2ef72: 0x6d85e020, 0x2ef73: 0x6d85e220,\n\t0x2ef74: 0x6d85e420, 0x2ef75: 0x6d85e620, 0x2ef76: 0x6d85e820, 0x2ef77: 0x6d85ea20,\n\t0x2ef78: 0x6d85ec20, 0x2ef79: 0x6d85ee20, 0x2ef7a: 0x6d85f020, 0x2ef7b: 0x6d85f220,\n\t0x2ef7c: 0x6d85f420, 0x2ef7d: 0x6d85f620, 0x2ef7e: 0x6d85f820, 0x2ef7f: 0x6d85fa20,\n\t// Block 0xbbe, offset 0x2ef80\n\t0x2ef80: 0x6daa7420, 0x2ef81: 0x6daa7620, 0x2ef82: 0x6daa7820, 0x2ef83: 0x6daa7a20,\n\t0x2ef84: 0x6daa7c20, 0x2ef85: 0x6daa7e20, 0x2ef86: 0x6daa8020, 0x2ef87: 0x6daa8220,\n\t0x2ef88: 0x6daa8420, 0x2ef89: 0x6daa8620, 0x2ef8a: 0x6d85fc20, 0x2ef8b: 0x6daa8820,\n\t0x2ef8c: 0x6daa8a20, 0x2ef8d: 0x6daa8c20, 0x2ef8e: 0x6daa8e20, 0x2ef8f: 0x6dcb2c20,\n\t0x2ef90: 0x6dcb2e20, 0x2ef91: 0x6dcb3020, 0x2ef92: 0x6dcb3220, 0x2ef93: 0x6dcb3420,\n\t0x2ef94: 0x6dcb3620, 0x2ef95: 0x6dcb3820, 0x2ef96: 0x6dcb3a20, 0x2ef97: 0x6dcb3c20,\n\t0x2ef98: 0x6dcb3e20, 0x2ef99: 0x6dcb4020, 0x2ef9a: 0x6dcb4220, 0x2ef9b: 0x6dcb4420,\n\t0x2ef9c: 0x6dcb4620, 0x2ef9d: 0x6dcb4820, 0x2ef9e: 0x6dcb4a20, 0x2ef9f: 0x6de69c20,\n\t0x2efa0: 0x6de69e20, 0x2efa1: 0x6de6a020, 0x2efa2: 0x6dfd4c20, 0x2efa3: 0x6de6a220,\n\t0x2efa4: 0x6dcb8220, 0x2efa5: 0x6dfd4e20, 0x2efa6: 0x6dfd5020, 0x2efa7: 0x6e102420,\n\t0x2efa8: 0x6e102620, 0x2efa9: 0x6e102820, 0x2efaa: 0x6e102a20, 0x2efab: 0x6e102c20,\n\t0x2efac: 0x6e1eea20, 0x2efad: 0x6e1eec20, 0x2efae: 0x6e1eee20, 0x2efaf: 0x6e2a4a20,\n\t0x2efb0: 0x6e2a4c20, 0x2efb1: 0x6e32f220, 0x2efb2: 0x6e32f420, 0x2efb3: 0x6e3d8020,\n\t0x2efb4: 0x6e42ca20, 0x2efb5: 0x6e452a20, 0x2efb6: 0x6c0a2220, 0x2efb7: 0x6c3c4420,\n\t0x2efb8: 0x6c590220, 0x2efb9: 0x6c590420, 0x2efba: 0x6c590620, 0x2efbb: 0x6cd2b820,\n\t0x2efbc: 0x6cd2ba20, 0x2efbd: 0x6c0a2420, 0x2efbe: 0x6c13e020, 0x2efbf: 0x6c13e220,\n\t// Block 0xbbf, offset 0x2efc0\n\t0x2efc0: 0x6c24fa20, 0x2efc1: 0x6c24fc20, 0x2efc2: 0x6c24fe20, 0x2efc3: 0x6c250020,\n\t0x2efc4: 0x6c3c4620, 0x2efc5: 0x6c590e20, 0x2efc6: 0x6c591020, 0x2efc7: 0x6c591220,\n\t0x2efc8: 0x6c591420, 0x2efc9: 0x6ca48c20, 0x2efca: 0x6c7bae20, 0x2efcb: 0x6c7bb020,\n\t0x2efcc: 0x6c7bb220, 0x2efcd: 0x6c7bb420, 0x2efce: 0x6ca49220, 0x2efcf: 0x6ca49420,\n\t0x2efd0: 0x6ca49620, 0x2efd1: 0x6ca49820, 0x2efd2: 0x6cd2c420, 0x2efd3: 0x6cd2c620,\n\t0x2efd4: 0x6cd2c820, 0x2efd5: 0x6cd2ca20, 0x2efd6: 0x6cd2cc20, 0x2efd7: 0x6d00bc20,\n\t0x2efd8: 0x6d00be20, 0x2efd9: 0x6d00c020, 0x2efda: 0x6d5bde20, 0x2efdb: 0x6d5be020,\n\t0x2efdc: 0x6d5be220, 0x2efdd: 0x6d5be420, 0x2efde: 0x6d5be620, 0x2efdf: 0x6d865420,\n\t0x2efe0: 0x6d865620, 0x2efe1: 0x6d865820, 0x2efe2: 0x6dab0020, 0x2efe3: 0x6dab0220,\n\t0x2efe4: 0x6dab0420, 0x2efe5: 0x6dab0620, 0x2efe6: 0x6dcb8420, 0x2efe7: 0x6dcb8620,\n\t0x2efe8: 0x6dcb8820, 0x2efe9: 0x6de6de20, 0x2efea: 0x6dfd7420, 0x2efeb: 0x6dfd7620,\n\t0x2efec: 0x6e104620, 0x2efed: 0x6e1f0020, 0x2efee: 0x6c0a2620, 0x2efef: 0x6c3c5620,\n\t0x2eff0: 0x6c7bd820, 0x2eff1: 0x6c7bda20, 0x2eff2: 0x6ca4ac20, 0x2eff3: 0x6cd2f020,\n\t0x2eff4: 0x6cd2f220, 0x2eff5: 0x6d00e820, 0x2eff6: 0x6d2ecc20, 0x2eff7: 0x6d2ece20,\n\t0x2eff8: 0x6d2ed020, 0x2eff9: 0x6d2ed220, 0x2effa: 0x6d5bfc20, 0x2effb: 0x6d866620,\n\t0x2effc: 0x6dab1620, 0x2effd: 0x6dcb9420, 0x2effe: 0x6dfd8220, 0x2efff: 0x6c0a2820,\n\t// Block 0xbc0, offset 0x2f000\n\t0x2f000: 0x6c250c20, 0x2f001: 0x6c250e20, 0x2f002: 0x6c3c6820, 0x2f003: 0x6c595220,\n\t0x2f004: 0x6c595420, 0x2f005: 0x6c595620, 0x2f006: 0x6c595820, 0x2f007: 0x6c595a20,\n\t0x2f008: 0x6c595c20, 0x2f009: 0x6c7bf620, 0x2f00a: 0x6c7bf820, 0x2f00b: 0x6c7bfa20,\n\t0x2f00c: 0x6c7bfc20, 0x2f00d: 0x6c7bfe20, 0x2f00e: 0x6c7c0020, 0x2f00f: 0x6c7c0220,\n\t0x2f010: 0x6c7c0420, 0x2f011: 0x6c7c0620, 0x2f012: 0x6ca4c220, 0x2f013: 0x6ca4c420,\n\t0x2f014: 0x6ca4c620, 0x2f015: 0x6ca4c820, 0x2f016: 0x6ca4ca20, 0x2f017: 0x6ca4cc20,\n\t0x2f018: 0x6ca4ce20, 0x2f019: 0x6cd30c20, 0x2f01a: 0x6cd30e20, 0x2f01b: 0x6ca4d020,\n\t0x2f01c: 0x6cd31020, 0x2f01d: 0x6d010c20, 0x2f01e: 0x6d010e20, 0x2f01f: 0x6d011020,\n\t0x2f020: 0x6d2ef420, 0x2f021: 0x6d2ef620, 0x2f022: 0x6d2ef820, 0x2f023: 0x6d2efa20,\n\t0x2f024: 0x6d5c0c20, 0x2f025: 0x6d868220, 0x2f026: 0x6d868420, 0x2f027: 0x6d868620,\n\t0x2f028: 0x6dab2020, 0x2f029: 0x6dab2220, 0x2f02a: 0x6dab2420, 0x2f02b: 0x6dcba820,\n\t0x2f02c: 0x6dcbaa20, 0x2f02d: 0x6dfd8e20, 0x2f02e: 0x6c0a2a20, 0x2f02f: 0x6c251820,\n\t0x2f030: 0x6c3c8020, 0x2f031: 0x6c3c8220, 0x2f032: 0x6c3c8420, 0x2f033: 0x6c3c8620,\n\t0x2f034: 0x6c3c8820, 0x2f035: 0x6c3c8a20, 0x2f036: 0x6c598820, 0x2f037: 0x6c598a20,\n\t0x2f038: 0x6c598c20, 0x2f039: 0x6c598e20, 0x2f03a: 0x6c599020, 0x2f03b: 0x6c599220,\n\t0x2f03c: 0x6c599420, 0x2f03d: 0x6c599620, 0x2f03e: 0x6c599820, 0x2f03f: 0x6c599a20,\n\t// Block 0xbc1, offset 0x2f040\n\t0x2f040: 0x6c599c20, 0x2f041: 0x6c599e20, 0x2f042: 0x6c59a020, 0x2f043: 0x6c59a220,\n\t0x2f044: 0x6c59a420, 0x2f045: 0x6c59a620, 0x2f046: 0x6c59a820, 0x2f047: 0x6c59aa20,\n\t0x2f048: 0x6c59ac20, 0x2f049: 0x6c59ae20, 0x2f04a: 0x6c59b020, 0x2f04b: 0x6c59b220,\n\t0x2f04c: 0x6c59b420, 0x2f04d: 0x6c59b620, 0x2f04e: 0x6c7c3e20, 0x2f04f: 0x6c7c4020,\n\t0x2f050: 0x6c7c4220, 0x2f051: 0x6c7c4420, 0x2f052: 0x6c7c4620, 0x2f053: 0x6c7c4820,\n\t0x2f054: 0x6c7c4a20, 0x2f055: 0x6c7c4c20, 0x2f056: 0x6c7c4e20, 0x2f057: 0x6c7c5020,\n\t0x2f058: 0x6c7c5220, 0x2f059: 0x6c7c5420, 0x2f05a: 0x6c7c5620, 0x2f05b: 0x6c7c5820,\n\t0x2f05c: 0x6c7c5a20, 0x2f05d: 0x6c7c5c20, 0x2f05e: 0x6c7c5e20, 0x2f05f: 0x6c7c6020,\n\t0x2f060: 0x6c7c6220, 0x2f061: 0x6c7c6420, 0x2f062: 0x6c7c6620, 0x2f063: 0x6c7c6820,\n\t0x2f064: 0x6c7c6a20, 0x2f065: 0x6ca4ee20, 0x2f066: 0x6ca4f020, 0x2f067: 0x6c7c6c20,\n\t0x2f068: 0x6c7c6e20, 0x2f069: 0x6c7c7020, 0x2f06a: 0x6c7c7220, 0x2f06b: 0x6c7c7420,\n\t0x2f06c: 0x6c7c7620, 0x2f06d: 0x6ca50220, 0x2f06e: 0x6ca50420, 0x2f06f: 0x6ca50620,\n\t0x2f070: 0x6ca50820, 0x2f071: 0x6ca50a20, 0x2f072: 0x6ca50c20, 0x2f073: 0x6ca50e20,\n\t0x2f074: 0x6ca51020, 0x2f075: 0x6ca51220, 0x2f076: 0x6ca51420, 0x2f077: 0x6ca51620,\n\t0x2f078: 0x6ca51820, 0x2f079: 0x6ca51a20, 0x2f07a: 0x6ca51c20, 0x2f07b: 0x6ca51e20,\n\t0x2f07c: 0x6ca52020, 0x2f07d: 0x6ca52220, 0x2f07e: 0x6ca52420, 0x2f07f: 0x6c7c7820,\n\t// Block 0xbc2, offset 0x2f080\n\t0x2f080: 0x6ca59220, 0x2f081: 0x6ca52620, 0x2f082: 0x6cd35020, 0x2f083: 0x6cd35220,\n\t0x2f084: 0x6cd35420, 0x2f085: 0x6cd35620, 0x2f086: 0x6cd35820, 0x2f087: 0x6cd35a20,\n\t0x2f088: 0x6cd35c20, 0x2f089: 0x6cd35e20, 0x2f08a: 0x6cd36020, 0x2f08b: 0x6cd36220,\n\t0x2f08c: 0x6cd36420, 0x2f08d: 0x6cd36620, 0x2f08e: 0x6cd36820, 0x2f08f: 0x6cd36a20,\n\t0x2f090: 0x6cd36c20, 0x2f091: 0x6cd36e20, 0x2f092: 0x6d014220, 0x2f093: 0x6d014420,\n\t0x2f094: 0x6d014620, 0x2f095: 0x6d014820, 0x2f096: 0x6d014a20, 0x2f097: 0x6d014c20,\n\t0x2f098: 0x6d014e20, 0x2f099: 0x6d015020, 0x2f09a: 0x6d015220, 0x2f09b: 0x6d015420,\n\t0x2f09c: 0x6d015620, 0x2f09d: 0x6d015820, 0x2f09e: 0x6d015a20, 0x2f09f: 0x6d015c20,\n\t0x2f0a0: 0x6d015e20, 0x2f0a1: 0x6d01f620, 0x2f0a2: 0x6d016020, 0x2f0a3: 0x6d016220,\n\t0x2f0a4: 0x6d016420, 0x2f0a5: 0x6d016620, 0x2f0a6: 0x6d016820, 0x2f0a7: 0x6d016a20,\n\t0x2f0a8: 0x6d016c20, 0x2f0a9: 0x6d016e20, 0x2f0aa: 0x6d017020, 0x2f0ab: 0x6d017220,\n\t0x2f0ac: 0x6d017420, 0x2f0ad: 0x6d017620, 0x2f0ae: 0x6d2f2220, 0x2f0af: 0x6d2f2420,\n\t0x2f0b0: 0x6d2f2620, 0x2f0b1: 0x6d2f2820, 0x2f0b2: 0x6d2f2a20, 0x2f0b3: 0x6d2f2c20,\n\t0x2f0b4: 0x6d2f2e20, 0x2f0b5: 0x6d2f3020, 0x2f0b6: 0x6d2f3220, 0x2f0b7: 0x6d2f3420,\n\t0x2f0b8: 0x6d2f3620, 0x2f0b9: 0x6d01f820, 0x2f0ba: 0x6d2f3820, 0x2f0bb: 0x6d2f3a20,\n\t0x2f0bc: 0x6d2f3c20, 0x2f0bd: 0x6d2f3e20, 0x2f0be: 0x6d2f4020, 0x2f0bf: 0x6d2f4220,\n\t// Block 0xbc3, offset 0x2f0c0\n\t0x2f0c0: 0x6d2f4420, 0x2f0c1: 0x6d2f4620, 0x2f0c2: 0x6d2f4820, 0x2f0c3: 0x6d2f4a20,\n\t0x2f0c4: 0x6d2f4c20, 0x2f0c5: 0x6d2f4e20, 0x2f0c6: 0x6d2f5020, 0x2f0c7: 0x6d5c3e20,\n\t0x2f0c8: 0x6d5c4020, 0x2f0c9: 0x6d5c4220, 0x2f0ca: 0x6d5c4420, 0x2f0cb: 0x6d5c4620,\n\t0x2f0cc: 0x6d5c4820, 0x2f0cd: 0x6d5c4a20, 0x2f0ce: 0x6d5c4c20, 0x2f0cf: 0x6d5c4e20,\n\t0x2f0d0: 0x6d5c5020, 0x2f0d1: 0x6d5c5220, 0x2f0d2: 0x6d5c5420, 0x2f0d3: 0x6d5c5620,\n\t0x2f0d4: 0x6d86c020, 0x2f0d5: 0x6d86c220, 0x2f0d6: 0x6d86c420, 0x2f0d7: 0x6d86c620,\n\t0x2f0d8: 0x6d86c820, 0x2f0d9: 0x6d86ca20, 0x2f0da: 0x6d86cc20, 0x2f0db: 0x6d86ce20,\n\t0x2f0dc: 0x6d86d020, 0x2f0dd: 0x6d86d220, 0x2f0de: 0x6d86d420, 0x2f0df: 0x6d86d620,\n\t0x2f0e0: 0x6d86d820, 0x2f0e1: 0x6d86da20, 0x2f0e2: 0x6d86dc20, 0x2f0e3: 0x6d86de20,\n\t0x2f0e4: 0x6dab6020, 0x2f0e5: 0x6d875220, 0x2f0e6: 0x6dab6220, 0x2f0e7: 0x6dab6420,\n\t0x2f0e8: 0x6dab6620, 0x2f0e9: 0x6dab6820, 0x2f0ea: 0x6dab6a20, 0x2f0eb: 0x6dab6c20,\n\t0x2f0ec: 0x6dab6e20, 0x2f0ed: 0x6dab7020, 0x2f0ee: 0x6dab7220, 0x2f0ef: 0x6dab7420,\n\t0x2f0f0: 0x6dab7620, 0x2f0f1: 0x6dab7820, 0x2f0f2: 0x6dab7a20, 0x2f0f3: 0x6dab7c20,\n\t0x2f0f4: 0x6dab7e20, 0x2f0f5: 0x6dab8020, 0x2f0f6: 0x6dab8220, 0x2f0f7: 0x6dab8420,\n\t0x2f0f8: 0x6dcbcc20, 0x2f0f9: 0x6dcbce20, 0x2f0fa: 0x6dcbd020, 0x2f0fb: 0x6dcbd220,\n\t0x2f0fc: 0x6dcbd420, 0x2f0fd: 0x6dcbd620, 0x2f0fe: 0x6dcbd820, 0x2f0ff: 0x6dcbda20,\n\t// Block 0xbc4, offset 0x2f100\n\t0x2f100: 0x6dcbdc20, 0x2f101: 0x6dcbde20, 0x2f102: 0x6dcbe020, 0x2f103: 0x6de70c20,\n\t0x2f104: 0x6de70e20, 0x2f105: 0x6de71020, 0x2f106: 0x6de71220, 0x2f107: 0x6de71420,\n\t0x2f108: 0x6de71620, 0x2f109: 0x6de71820, 0x2f10a: 0x6de71a20, 0x2f10b: 0x6dfdae20,\n\t0x2f10c: 0x6dfdb020, 0x2f10d: 0x6dfdb220, 0x2f10e: 0x6dfdb420, 0x2f10f: 0x6dfdb620,\n\t0x2f110: 0x6e106020, 0x2f111: 0x6e106220, 0x2f112: 0x6e106420, 0x2f113: 0x6e106620,\n\t0x2f114: 0x6e2a6c20, 0x2f115: 0x6e331420, 0x2f116: 0x6e332020, 0x2f117: 0x6e331620,\n\t0x2f118: 0x6e393a20, 0x2f119: 0x6e393c20, 0x2f11a: 0x6e3d8a20, 0x2f11b: 0x6c0a2c20,\n\t0x2f11c: 0x6c5a1c20, 0x2f11d: 0x6c7cd620, 0x2f11e: 0x6cd3f420, 0x2f11f: 0x6cd3f620,\n\t0x2f120: 0x6d01fa20, 0x2f121: 0x6e394020, 0x2f122: 0x6c0a2e20, 0x2f123: 0x6c253220,\n\t0x2f124: 0x6c3cb620, 0x2f125: 0x6c3cb820, 0x2f126: 0x6c5a2420, 0x2f127: 0x6c5a2620,\n\t0x2f128: 0x6c5a2820, 0x2f129: 0x6c7ce820, 0x2f12a: 0x6ca59e20, 0x2f12b: 0x6ca5a020,\n\t0x2f12c: 0x6cd40c20, 0x2f12d: 0x6cd40e20, 0x2f12e: 0x6d020820, 0x2f12f: 0x6dabf820,\n\t0x2f130: 0x6dabfa20, 0x2f131: 0x6de76020, 0x2f132: 0x6dfde820, 0x2f133: 0x6c0a3020,\n\t0x2f134: 0x6c253a20, 0x2f135: 0x6c253c20, 0x2f136: 0x6c253e20, 0x2f137: 0x6c3cc020,\n\t0x2f138: 0x6c3cc220, 0x2f139: 0x6c3cc420, 0x2f13a: 0x6c3cc620, 0x2f13b: 0x6c3cc820,\n\t0x2f13c: 0x6c3cca20, 0x2f13d: 0x6c3ccc20, 0x2f13e: 0x6c3cce20, 0x2f13f: 0x6c3cd020,\n\t// Block 0xbc5, offset 0x2f140\n\t0x2f140: 0x6c3cd220, 0x2f141: 0x6c3cd420, 0x2f142: 0x6c5a4820, 0x2f143: 0x6c5a4a20,\n\t0x2f144: 0x6c5a4c20, 0x2f145: 0x6c5a4e20, 0x2f146: 0x6c5a5020, 0x2f147: 0x6c5a5220,\n\t0x2f148: 0x6c5a5420, 0x2f149: 0x6c5a5620, 0x2f14a: 0x6c5a5820, 0x2f14b: 0x6c5a5a20,\n\t0x2f14c: 0x6c5a5c20, 0x2f14d: 0x6c5a5e20, 0x2f14e: 0x6c5a6020, 0x2f14f: 0x6c5a6220,\n\t0x2f150: 0x6c5a6420, 0x2f151: 0x6c5a6620, 0x2f152: 0x6c5a6820, 0x2f153: 0x6c5a6a20,\n\t0x2f154: 0x6c5a6c20, 0x2f155: 0x6c5a6e20, 0x2f156: 0x6c5a7020, 0x2f157: 0x6c5a7220,\n\t0x2f158: 0x6c5a7420, 0x2f159: 0x6c5a7620, 0x2f15a: 0x6c5a7820, 0x2f15b: 0x6c5a7a20,\n\t0x2f15c: 0x6c5a7c20, 0x2f15d: 0x6c7d1220, 0x2f15e: 0x6c7d1420, 0x2f15f: 0x6c7d1620,\n\t0x2f160: 0x6c7d1820, 0x2f161: 0x6c7d1a20, 0x2f162: 0x6c7d1c20, 0x2f163: 0x6c7d1e20,\n\t0x2f164: 0x6c7d2020, 0x2f165: 0x6c7d2220, 0x2f166: 0x6ca5ce20, 0x2f167: 0x6c7d2420,\n\t0x2f168: 0x6c7d2620, 0x2f169: 0x6c7d2820, 0x2f16a: 0x6c7d2a20, 0x2f16b: 0x6c7d2c20,\n\t0x2f16c: 0x6c7d2e20, 0x2f16d: 0x6c7d3020, 0x2f16e: 0x6c7d3220, 0x2f16f: 0x6c7d3420,\n\t0x2f170: 0x6c7d3620, 0x2f171: 0x6c7d3820, 0x2f172: 0x6c7d3a20, 0x2f173: 0x6c7d3c20,\n\t0x2f174: 0x6c7d3e20, 0x2f175: 0x6c7d4020, 0x2f176: 0x6c7d4220, 0x2f177: 0x6c7d4420,\n\t0x2f178: 0x6c7d4620, 0x2f179: 0x6c7d4820, 0x2f17a: 0x6c7d4a20, 0x2f17b: 0x6c7d4c20,\n\t0x2f17c: 0x6c7d4e20, 0x2f17d: 0x6c7d5020, 0x2f17e: 0x6c7d5220, 0x2f17f: 0x6c7d5420,\n\t// Block 0xbc6, offset 0x2f180\n\t0x2f180: 0x6c7d5620, 0x2f181: 0x6c7d5820, 0x2f182: 0x6ca5de20, 0x2f183: 0x6ca5e020,\n\t0x2f184: 0x6ca5e220, 0x2f185: 0x6ca5e420, 0x2f186: 0x6ca5e620, 0x2f187: 0x6ca5e820,\n\t0x2f188: 0x6ca5ea20, 0x2f189: 0x6ca5ec20, 0x2f18a: 0x6ca5ee20, 0x2f18b: 0x6ca5f020,\n\t0x2f18c: 0x6ca5f220, 0x2f18d: 0x6ca5f420, 0x2f18e: 0x6ca5f620, 0x2f18f: 0x6ca5f820,\n\t0x2f190: 0x6ca5fa20, 0x2f191: 0x6ca5fc20, 0x2f192: 0x6ca5fe20, 0x2f193: 0x6ca60020,\n\t0x2f194: 0x6ca60220, 0x2f195: 0x6ca60420, 0x2f196: 0x6ca60620, 0x2f197: 0x6ca60820,\n\t0x2f198: 0x6ca60a20, 0x2f199: 0x6ca60c20, 0x2f19a: 0x6ca60e20, 0x2f19b: 0x6ca61020,\n\t0x2f19c: 0x6cd43420, 0x2f19d: 0x6cd43620, 0x2f19e: 0x6cd43820, 0x2f19f: 0x6cd43a20,\n\t0x2f1a0: 0x6cd43c20, 0x2f1a1: 0x6cd43e20, 0x2f1a2: 0x6cd44020, 0x2f1a3: 0x6cd44220,\n\t0x2f1a4: 0x6cd44420, 0x2f1a5: 0x6cd44620, 0x2f1a6: 0x6cd44820, 0x2f1a7: 0x6cd44a20,\n\t0x2f1a8: 0x6cd44c20, 0x2f1a9: 0x6cd44e20, 0x2f1aa: 0x6cd45020, 0x2f1ab: 0x6cd45220,\n\t0x2f1ac: 0x6cd45420, 0x2f1ad: 0x6cd45620, 0x2f1ae: 0x6cd45820, 0x2f1af: 0x6cd45a20,\n\t0x2f1b0: 0x6cd45c20, 0x2f1b1: 0x6cd45e20, 0x2f1b2: 0x6cd46020, 0x2f1b3: 0x6cd46220,\n\t0x2f1b4: 0x6cd46420, 0x2f1b5: 0x6cd46620, 0x2f1b6: 0x6cd46820, 0x2f1b7: 0x6cd46a20,\n\t0x2f1b8: 0x6d025220, 0x2f1b9: 0x6d025420, 0x2f1ba: 0x6d025620, 0x2f1bb: 0x6d025820,\n\t0x2f1bc: 0x6d025a20, 0x2f1bd: 0x6d025c20, 0x2f1be: 0x6d300e20, 0x2f1bf: 0x6d025e20,\n\t// Block 0xbc7, offset 0x2f1c0\n\t0x2f1c0: 0x6d026020, 0x2f1c1: 0x6d026220, 0x2f1c2: 0x6d026420, 0x2f1c3: 0x6d026620,\n\t0x2f1c4: 0x6d026820, 0x2f1c5: 0x6d026a20, 0x2f1c6: 0x6d026c20, 0x2f1c7: 0x6d026e20,\n\t0x2f1c8: 0x6d027020, 0x2f1c9: 0x6d027220, 0x2f1ca: 0x6d027420, 0x2f1cb: 0x6d027620,\n\t0x2f1cc: 0x6d027820, 0x2f1cd: 0x6d027a20, 0x2f1ce: 0x6d027c20, 0x2f1cf: 0x6d027e20,\n\t0x2f1d0: 0x6d028020, 0x2f1d1: 0x6d028220, 0x2f1d2: 0x6d028420, 0x2f1d3: 0x6d028620,\n\t0x2f1d4: 0x6d028820, 0x2f1d5: 0x6d028a20, 0x2f1d6: 0x6d028c20, 0x2f1d7: 0x6d028e20,\n\t0x2f1d8: 0x6d029020, 0x2f1d9: 0x6d029220, 0x2f1da: 0x6d029420, 0x2f1db: 0x6d029620,\n\t0x2f1dc: 0x6d029820, 0x2f1dd: 0x6d301020, 0x2f1de: 0x6d301220, 0x2f1df: 0x6d301420,\n\t0x2f1e0: 0x6d301620, 0x2f1e1: 0x6d301820, 0x2f1e2: 0x6d301a20, 0x2f1e3: 0x6d301c20,\n\t0x2f1e4: 0x6d301e20, 0x2f1e5: 0x6d302020, 0x2f1e6: 0x6d302220, 0x2f1e7: 0x6d302420,\n\t0x2f1e8: 0x6d302620, 0x2f1e9: 0x6d302820, 0x2f1ea: 0x6d302a20, 0x2f1eb: 0x6d302c20,\n\t0x2f1ec: 0x6d302e20, 0x2f1ed: 0x6d303020, 0x2f1ee: 0x6d303220, 0x2f1ef: 0x6d303420,\n\t0x2f1f0: 0x6d029a20, 0x2f1f1: 0x6d303620, 0x2f1f2: 0x6d303820, 0x2f1f3: 0x6d303a20,\n\t0x2f1f4: 0x6d303c20, 0x2f1f5: 0x6d303e20, 0x2f1f6: 0x6d304020, 0x2f1f7: 0x6d304220,\n\t0x2f1f8: 0x6d304420, 0x2f1f9: 0x6d304620, 0x2f1fa: 0x6d5d0620, 0x2f1fb: 0x6d5d0820,\n\t0x2f1fc: 0x6d5d0a20, 0x2f1fd: 0x6d5d0c20, 0x2f1fe: 0x6d5d0e20, 0x2f1ff: 0x6d5d1020,\n\t// Block 0xbc8, offset 0x2f200\n\t0x2f200: 0x6d5d1220, 0x2f201: 0x6d304820, 0x2f202: 0x6d5d1420, 0x2f203: 0x6d5d1620,\n\t0x2f204: 0x6d5d1820, 0x2f205: 0x6d5d1a20, 0x2f206: 0x6d5d1c20, 0x2f207: 0x6d5d1e20,\n\t0x2f208: 0x6d5d2020, 0x2f209: 0x6d5d2220, 0x2f20a: 0x6d5d2420, 0x2f20b: 0x6d5d2620,\n\t0x2f20c: 0x6d5d2820, 0x2f20d: 0x6d5d2a20, 0x2f20e: 0x6d5d2c20, 0x2f20f: 0x6d5d2e20,\n\t0x2f210: 0x6d5d3020, 0x2f211: 0x6d5d3220, 0x2f212: 0x6d5d3420, 0x2f213: 0x6d5d3620,\n\t0x2f214: 0x6d5d3820, 0x2f215: 0x6d5d3a20, 0x2f216: 0x6d876620, 0x2f217: 0x6d5d3c20,\n\t0x2f218: 0x6d5d3e20, 0x2f219: 0x6d5d4020, 0x2f21a: 0x6d877a20, 0x2f21b: 0x6d877c20,\n\t0x2f21c: 0x6d876820, 0x2f21d: 0x6d877e20, 0x2f21e: 0x6d878020, 0x2f21f: 0x6d878220,\n\t0x2f220: 0x6d878420, 0x2f221: 0x6d878620, 0x2f222: 0x6d878820, 0x2f223: 0x6d878a20,\n\t0x2f224: 0x6d5d4220, 0x2f225: 0x6d878c20, 0x2f226: 0x6d878e20, 0x2f227: 0x6d879020,\n\t0x2f228: 0x6d879220, 0x2f229: 0x6d879420, 0x2f22a: 0x6d879620, 0x2f22b: 0x6d879820,\n\t0x2f22c: 0x6d879a20, 0x2f22d: 0x6d879c20, 0x2f22e: 0x6d879e20, 0x2f22f: 0x6dac1c20,\n\t0x2f230: 0x6dac1e20, 0x2f231: 0x6dac2020, 0x2f232: 0x6dac2220, 0x2f233: 0x6dac2420,\n\t0x2f234: 0x6dac2620, 0x2f235: 0x6dac2820, 0x2f236: 0x6dac2a20, 0x2f237: 0x6dac2c20,\n\t0x2f238: 0x6dac2e20, 0x2f239: 0x6dac3020, 0x2f23a: 0x6dac3220, 0x2f23b: 0x6dac3420,\n\t0x2f23c: 0x6dac3620, 0x2f23d: 0x6dac3820, 0x2f23e: 0x6dac3a20, 0x2f23f: 0x6dac3c20,\n\t// Block 0xbc9, offset 0x2f240\n\t0x2f240: 0x6dac3e20, 0x2f241: 0x6dac4020, 0x2f242: 0x6dac4220, 0x2f243: 0x6dac4420,\n\t0x2f244: 0x6dac4620, 0x2f245: 0x6dac4820, 0x2f246: 0x6dcc5020, 0x2f247: 0x6dcc5220,\n\t0x2f248: 0x6dcc5420, 0x2f249: 0x6dcc5620, 0x2f24a: 0x6dcc5820, 0x2f24b: 0x6dcc5a20,\n\t0x2f24c: 0x6dcc5c20, 0x2f24d: 0x6dcc5e20, 0x2f24e: 0x6dcc6020, 0x2f24f: 0x6dcc6220,\n\t0x2f250: 0x6dcc6420, 0x2f251: 0x6dcc6620, 0x2f252: 0x6dcc6820, 0x2f253: 0x6dcc6a20,\n\t0x2f254: 0x6dcc6c20, 0x2f255: 0x6dcc6e20, 0x2f256: 0x6dcc7020, 0x2f257: 0x6de76c20,\n\t0x2f258: 0x6de76e20, 0x2f259: 0x6de77020, 0x2f25a: 0x6de77220, 0x2f25b: 0x6de77420,\n\t0x2f25c: 0x6de77620, 0x2f25d: 0x6de77820, 0x2f25e: 0x6de77a20, 0x2f25f: 0x6de77c20,\n\t0x2f260: 0x6de77e20, 0x2f261: 0x6de78020, 0x2f262: 0x6dfdf220, 0x2f263: 0x6dfdf420,\n\t0x2f264: 0x6dfdf620, 0x2f265: 0x6dfdf820, 0x2f266: 0x6dfdfa20, 0x2f267: 0x6dfdfc20,\n\t0x2f268: 0x6dfdfe20, 0x2f269: 0x6dfe0020, 0x2f26a: 0x6dfe0220, 0x2f26b: 0x6dfe0420,\n\t0x2f26c: 0x6dfe0620, 0x2f26d: 0x6e109420, 0x2f26e: 0x6e109620, 0x2f26f: 0x6e109820,\n\t0x2f270: 0x6e109a20, 0x2f271: 0x6e109c20, 0x2f272: 0x6e109e20, 0x2f273: 0x6e10a020,\n\t0x2f274: 0x6e10a220, 0x2f275: 0x6e1f3820, 0x2f276: 0x6e2a8820, 0x2f277: 0x6e2a8a20,\n\t0x2f278: 0x6e332620, 0x2f279: 0x6e394220, 0x2f27a: 0x6c0a3420, 0x2f27b: 0x6c04fe20,\n\t0x2f27c: 0x6c13f620, 0x2f27d: 0x6c254e20, 0x2f27e: 0x6c3cee20, 0x2f27f: 0x6c3cf020,\n\t// Block 0xbca, offset 0x2f280\n\t0x2f280: 0x6c3cf220, 0x2f281: 0x6c3cf420, 0x2f282: 0x6c3cf620, 0x2f283: 0x6c3cf820,\n\t0x2f284: 0x6c5ac620, 0x2f285: 0x6c5ac820, 0x2f286: 0x6c5aca20, 0x2f287: 0x6c5acc20,\n\t0x2f288: 0x6c5ace20, 0x2f289: 0x6c5ad020, 0x2f28a: 0x6c5ad220, 0x2f28b: 0x6c5ad420,\n\t0x2f28c: 0x6c5ad620, 0x2f28d: 0x6c5ad820, 0x2f28e: 0x6c5ada20, 0x2f28f: 0x6c7dc420,\n\t0x2f290: 0x6c7dc620, 0x2f291: 0x6c7dc820, 0x2f292: 0x6c7dca20, 0x2f293: 0x6c7dcc20,\n\t0x2f294: 0x6c7dce20, 0x2f295: 0x6c7dd020, 0x2f296: 0x6c7dd220, 0x2f297: 0x6c7dd420,\n\t0x2f298: 0x6c7dd620, 0x2f299: 0x6c7dd820, 0x2f29a: 0x6c7dda20, 0x2f29b: 0x6c7ddc20,\n\t0x2f29c: 0x6c7dde20, 0x2f29d: 0x6c7de020, 0x2f29e: 0x6c7de220, 0x2f29f: 0x6c7de420,\n\t0x2f2a0: 0x6c7de620, 0x2f2a1: 0x6ca68a20, 0x2f2a2: 0x6c7de820, 0x2f2a3: 0x6ca69220,\n\t0x2f2a4: 0x6ca69420, 0x2f2a5: 0x6ca69620, 0x2f2a6: 0x6cd4c020, 0x2f2a7: 0x6ca69820,\n\t0x2f2a8: 0x6ca69a20, 0x2f2a9: 0x6ca69c20, 0x2f2aa: 0x6ca69e20, 0x2f2ab: 0x6ca6a020,\n\t0x2f2ac: 0x6ca6a220, 0x2f2ad: 0x6ca6a420, 0x2f2ae: 0x6ca6a620, 0x2f2af: 0x6ca6a820,\n\t0x2f2b0: 0x6cd4c220, 0x2f2b1: 0x6cd4c420, 0x2f2b2: 0x6cd4c620, 0x2f2b3: 0x6cd4c820,\n\t0x2f2b4: 0x6cd4ca20, 0x2f2b5: 0x6cd4cc20, 0x2f2b6: 0x6cd4ce20, 0x2f2b7: 0x6cd4d020,\n\t0x2f2b8: 0x6cd4d220, 0x2f2b9: 0x6d031820, 0x2f2ba: 0x6d031a20, 0x2f2bb: 0x6d031c20,\n\t0x2f2bc: 0x6d031e20, 0x2f2bd: 0x6d032020, 0x2f2be: 0x6d032220, 0x2f2bf: 0x6d032420,\n\t// Block 0xbcb, offset 0x2f2c0\n\t0x2f2c0: 0x6d032620, 0x2f2c1: 0x6d032820, 0x2f2c2: 0x6d032a20, 0x2f2c3: 0x6d032c20,\n\t0x2f2c4: 0x6cd4d420, 0x2f2c5: 0x6d032e20, 0x2f2c6: 0x6d033020, 0x2f2c7: 0x6d30be20,\n\t0x2f2c8: 0x6d30c020, 0x2f2c9: 0x6d30c220, 0x2f2ca: 0x6d30c420, 0x2f2cb: 0x6d30c620,\n\t0x2f2cc: 0x6d30c820, 0x2f2cd: 0x6d30ca20, 0x2f2ce: 0x6d30cc20, 0x2f2cf: 0x6d30ce20,\n\t0x2f2d0: 0x6d30d020, 0x2f2d1: 0x6d30d220, 0x2f2d2: 0x6d30d420, 0x2f2d3: 0x6d30d620,\n\t0x2f2d4: 0x6d30d820, 0x2f2d5: 0x6d30da20, 0x2f2d6: 0x6d30dc20, 0x2f2d7: 0x6d30de20,\n\t0x2f2d8: 0x6d30e020, 0x2f2d9: 0x6d30e220, 0x2f2da: 0x6d5d8c20, 0x2f2db: 0x6d5d8e20,\n\t0x2f2dc: 0x6d5d9020, 0x2f2dd: 0x6d5d9220, 0x2f2de: 0x6d5d9420, 0x2f2df: 0x6d5d9620,\n\t0x2f2e0: 0x6d5d9820, 0x2f2e1: 0x6d5d9a20, 0x2f2e2: 0x6d5d9c20, 0x2f2e3: 0x6d5d9e20,\n\t0x2f2e4: 0x6d87fe20, 0x2f2e5: 0x6d880020, 0x2f2e6: 0x6d880220, 0x2f2e7: 0x6daca020,\n\t0x2f2e8: 0x6daca220, 0x2f2e9: 0x6d880420, 0x2f2ea: 0x6daca420, 0x2f2eb: 0x6daca620,\n\t0x2f2ec: 0x6dcca420, 0x2f2ed: 0x6dcca620, 0x2f2ee: 0x6dcca820, 0x2f2ef: 0x6dccaa20,\n\t0x2f2f0: 0x6de7ac20, 0x2f2f1: 0x6de7ae20, 0x2f2f2: 0x6dfe3a20, 0x2f2f3: 0x6e1f5620,\n\t0x2f2f4: 0x6e1f5820, 0x2f2f5: 0x6e2aa020, 0x2f2f6: 0x6e333020, 0x2f2f7: 0x6e333220,\n\t0x2f2f8: 0x6c0a3820, 0x2f2f9: 0x6c5b2a20, 0x2f2fa: 0x6c5b2c20, 0x2f2fb: 0x6ca6f420,\n\t0x2f2fc: 0x6cd52620, 0x2f2fd: 0x6d037620, 0x2f2fe: 0x6c0a3c20, 0x2f2ff: 0x6c256820,\n\t// Block 0xbcc, offset 0x2f300\n\t0x2f300: 0x6c256a20, 0x2f301: 0x6c256c20, 0x2f302: 0x6c256e20, 0x2f303: 0x6c257020,\n\t0x2f304: 0x6c3d3a20, 0x2f305: 0x6c3d3c20, 0x2f306: 0x6c3d3e20, 0x2f307: 0x6c3d4020,\n\t0x2f308: 0x6c3d4220, 0x2f309: 0x6c3d4420, 0x2f30a: 0x6c3d4620, 0x2f30b: 0x6c5b3e20,\n\t0x2f30c: 0x6c5b4020, 0x2f30d: 0x6c5b4220, 0x2f30e: 0x6c5b4420, 0x2f30f: 0x6c5b4620,\n\t0x2f310: 0x6c5b4820, 0x2f311: 0x6c5b4a20, 0x2f312: 0x6c5b4c20, 0x2f313: 0x6c5b4e20,\n\t0x2f314: 0x6c5b5020, 0x2f315: 0x6c5b5220, 0x2f316: 0x6c5b5420, 0x2f317: 0x6c5b5620,\n\t0x2f318: 0x6c7e3820, 0x2f319: 0x6c7e3a20, 0x2f31a: 0x6c7e3c20, 0x2f31b: 0x6c7e3e20,\n\t0x2f31c: 0x6c7e4020, 0x2f31d: 0x6c7e4220, 0x2f31e: 0x6c7e4420, 0x2f31f: 0x6c7e4620,\n\t0x2f320: 0x6c7e4820, 0x2f321: 0x6c7e4a20, 0x2f322: 0x6c7e4c20, 0x2f323: 0x6c7e4e20,\n\t0x2f324: 0x6c7e5020, 0x2f325: 0x6c7e5220, 0x2f326: 0x6c7e5420, 0x2f327: 0x6c7e5620,\n\t0x2f328: 0x6c7e5820, 0x2f329: 0x6c7e5a20, 0x2f32a: 0x6c7e5c20, 0x2f32b: 0x6c7e5e20,\n\t0x2f32c: 0x6c7e6020, 0x2f32d: 0x6c7e6220, 0x2f32e: 0x6c7e6420, 0x2f32f: 0x6c7e6620,\n\t0x2f330: 0x6c7e6820, 0x2f331: 0x6ca71a20, 0x2f332: 0x6ca71c20, 0x2f333: 0x6ca71e20,\n\t0x2f334: 0x6ca72020, 0x2f335: 0x6ca72220, 0x2f336: 0x6ca72420, 0x2f337: 0x6ca72620,\n\t0x2f338: 0x6ca72820, 0x2f339: 0x6ca72a20, 0x2f33a: 0x6ca72c20, 0x2f33b: 0x6ca72e20,\n\t0x2f33c: 0x6ca73020, 0x2f33d: 0x6ca73220, 0x2f33e: 0x6ca73420, 0x2f33f: 0x6cd54020,\n\t// Block 0xbcd, offset 0x2f340\n\t0x2f340: 0x6cd54220, 0x2f341: 0x6cd54420, 0x2f342: 0x6cd54620, 0x2f343: 0x6cd54820,\n\t0x2f344: 0x6cd54a20, 0x2f345: 0x6cd54c20, 0x2f346: 0x6ca73620, 0x2f347: 0x6cd54e20,\n\t0x2f348: 0x6cd55020, 0x2f349: 0x6cd55220, 0x2f34a: 0x6cd55420, 0x2f34b: 0x6cd55620,\n\t0x2f34c: 0x6cd55820, 0x2f34d: 0x6cd55a20, 0x2f34e: 0x6cd55c20, 0x2f34f: 0x6d039420,\n\t0x2f350: 0x6d039620, 0x2f351: 0x6d039820, 0x2f352: 0x6d039a20, 0x2f353: 0x6d039c20,\n\t0x2f354: 0x6d039e20, 0x2f355: 0x6d03a020, 0x2f356: 0x6d03a220, 0x2f357: 0x6d03a420,\n\t0x2f358: 0x6d03a620, 0x2f359: 0x6d03a820, 0x2f35a: 0x6d03aa20, 0x2f35b: 0x6d03ac20,\n\t0x2f35c: 0x6d03ae20, 0x2f35d: 0x6d03b020, 0x2f35e: 0x6d03b220, 0x2f35f: 0x6d03b420,\n\t0x2f360: 0x6d03b620, 0x2f361: 0x6d03b820, 0x2f362: 0x6d03ba20, 0x2f363: 0x6d03bc20,\n\t0x2f364: 0x6d03be20, 0x2f365: 0x6d03c020, 0x2f366: 0x6d313220, 0x2f367: 0x6d313420,\n\t0x2f368: 0x6d313620, 0x2f369: 0x6d313820, 0x2f36a: 0x6d313a20, 0x2f36b: 0x6d313c20,\n\t0x2f36c: 0x6d313e20, 0x2f36d: 0x6d314020, 0x2f36e: 0x6d314220, 0x2f36f: 0x6d314420,\n\t0x2f370: 0x6d314620, 0x2f371: 0x6d314820, 0x2f372: 0x6d314a20, 0x2f373: 0x6d314c20,\n\t0x2f374: 0x6d5dee20, 0x2f375: 0x6d31c220, 0x2f376: 0x6d5df020, 0x2f377: 0x6d5df220,\n\t0x2f378: 0x6d5df420, 0x2f379: 0x6d5df620, 0x2f37a: 0x6d5df820, 0x2f37b: 0x6d5dfa20,\n\t0x2f37c: 0x6d5dfc20, 0x2f37d: 0x6d5dfe20, 0x2f37e: 0x6d5e0020, 0x2f37f: 0x6d5e0220,\n\t// Block 0xbce, offset 0x2f380\n\t0x2f380: 0x6d5e0420, 0x2f381: 0x6d5e0620, 0x2f382: 0x6d5e0820, 0x2f383: 0x6d5e0a20,\n\t0x2f384: 0x6d884220, 0x2f385: 0x6d884420, 0x2f386: 0x6d884620, 0x2f387: 0x6d884820,\n\t0x2f388: 0x6d884a20, 0x2f389: 0x6dacd420, 0x2f38a: 0x6d314e20, 0x2f38b: 0x6d884c20,\n\t0x2f38c: 0x6d884e20, 0x2f38d: 0x6d885020, 0x2f38e: 0x6d885220, 0x2f38f: 0x6d885420,\n\t0x2f390: 0x6d885620, 0x2f391: 0x6d885820, 0x2f392: 0x6d885a20, 0x2f393: 0x6d88ba20,\n\t0x2f394: 0x6dacd620, 0x2f395: 0x6dacd820, 0x2f396: 0x6dacda20, 0x2f397: 0x6dacdc20,\n\t0x2f398: 0x6dacde20, 0x2f399: 0x6dace020, 0x2f39a: 0x6dace220, 0x2f39b: 0x6dace420,\n\t0x2f39c: 0x6dace620, 0x2f39d: 0x6dace820, 0x2f39e: 0x6dacea20, 0x2f39f: 0x6dccce20,\n\t0x2f3a0: 0x6dccd020, 0x2f3a1: 0x6dccd220, 0x2f3a2: 0x6dccd420, 0x2f3a3: 0x6dccd620,\n\t0x2f3a4: 0x6de7bc20, 0x2f3a5: 0x6de7be20, 0x2f3a6: 0x6de7c020, 0x2f3a7: 0x6de7c220,\n\t0x2f3a8: 0x6de7c420, 0x2f3a9: 0x6de7c620, 0x2f3aa: 0x6de7c820, 0x2f3ab: 0x6de7ca20,\n\t0x2f3ac: 0x6dfe4a20, 0x2f3ad: 0x6dfe4c20, 0x2f3ae: 0x6dfe4e20, 0x2f3af: 0x6dfe5020,\n\t0x2f3b0: 0x6e1f6a20, 0x2f3b1: 0x6e1f7420, 0x2f3b2: 0x6e333e20, 0x2f3b3: 0x6e333c20,\n\t0x2f3b4: 0x6c0a4020, 0x2f3b5: 0x6c140c20, 0x2f3b6: 0x6c257c20, 0x2f3b7: 0x6c257e20,\n\t0x2f3b8: 0x6c3d6a20, 0x2f3b9: 0x6c3d6c20, 0x2f3ba: 0x6c3d6e20, 0x2f3bb: 0x6c3d7020,\n\t0x2f3bc: 0x6c5b9a20, 0x2f3bd: 0x6c5b9c20, 0x2f3be: 0x6c5b9e20, 0x2f3bf: 0x6c5ba020,\n\t// Block 0xbcf, offset 0x2f3c0\n\t0x2f3c0: 0x6c5ba220, 0x2f3c1: 0x6c5ba420, 0x2f3c2: 0x6c5ba620, 0x2f3c3: 0x6c5ba820,\n\t0x2f3c4: 0x6c7eac20, 0x2f3c5: 0x6c7eae20, 0x2f3c6: 0x6c7eb020, 0x2f3c7: 0x6c7eb220,\n\t0x2f3c8: 0x6c7eb420, 0x2f3c9: 0x6c7eb620, 0x2f3ca: 0x6c7eb820, 0x2f3cb: 0x6c7eba20,\n\t0x2f3cc: 0x6c7ebc20, 0x2f3cd: 0x6c7ebe20, 0x2f3ce: 0x6c7ec020, 0x2f3cf: 0x6ca78620,\n\t0x2f3d0: 0x6ca78820, 0x2f3d1: 0x6ca78a20, 0x2f3d2: 0x6ca78c20, 0x2f3d3: 0x6ca78e20,\n\t0x2f3d4: 0x6ca79020, 0x2f3d5: 0x6ca79220, 0x2f3d6: 0x6cd5ac20, 0x2f3d7: 0x6cd5ae20,\n\t0x2f3d8: 0x6cd5b020, 0x2f3d9: 0x6cd5b220, 0x2f3da: 0x6ca7c420, 0x2f3db: 0x6cd5b420,\n\t0x2f3dc: 0x6cd5b620, 0x2f3dd: 0x6cd5b820, 0x2f3de: 0x6d043220, 0x2f3df: 0x6d043420,\n\t0x2f3e0: 0x6d043620, 0x2f3e1: 0x6d043820, 0x2f3e2: 0x6d043a20, 0x2f3e3: 0x6d043c20,\n\t0x2f3e4: 0x6d043e20, 0x2f3e5: 0x6d044020, 0x2f3e6: 0x6d044220, 0x2f3e7: 0x6d044420,\n\t0x2f3e8: 0x6d31c820, 0x2f3e9: 0x6d31ca20, 0x2f3ea: 0x6d31cc20, 0x2f3eb: 0x6d31ce20,\n\t0x2f3ec: 0x6d31d020, 0x2f3ed: 0x6d31d220, 0x2f3ee: 0x6d5e7020, 0x2f3ef: 0x6d5e7220,\n\t0x2f3f0: 0x6d5e7420, 0x2f3f1: 0x6d5e7620, 0x2f3f2: 0x6d5e7820, 0x2f3f3: 0x6d5e7a20,\n\t0x2f3f4: 0x6d5e7c20, 0x2f3f5: 0x6d88c820, 0x2f3f6: 0x6d88ca20, 0x2f3f7: 0x6d88cc20,\n\t0x2f3f8: 0x6d88ce20, 0x2f3f9: 0x6d88d020, 0x2f3fa: 0x6d88d220, 0x2f3fb: 0x6d88d420,\n\t0x2f3fc: 0x6d88d620, 0x2f3fd: 0x6d88d820, 0x2f3fe: 0x6dad5020, 0x2f3ff: 0x6dad5220,\n\t// Block 0xbd0, offset 0x2f400\n\t0x2f400: 0x6dad5420, 0x2f401: 0x6dad5620, 0x2f402: 0x6dad5820, 0x2f403: 0x6e10de20,\n\t0x2f404: 0x6dcd2020, 0x2f405: 0x6dcd2220, 0x2f406: 0x6de7f620, 0x2f407: 0x6dfe8620,\n\t0x2f408: 0x6e10e020, 0x2f409: 0x6e10e220, 0x2f40a: 0x6e1f7820, 0x2f40b: 0x6c0a4420,\n\t0x2f40c: 0x6c258a20, 0x2f40d: 0x6c258c20, 0x2f40e: 0x6c3d9020, 0x2f40f: 0x6c3d9220,\n\t0x2f410: 0x6c5bd620, 0x2f411: 0x6c5bd820, 0x2f412: 0x6c5bda20, 0x2f413: 0x6c5bdc20,\n\t0x2f414: 0x6c5bde20, 0x2f415: 0x6c5be020, 0x2f416: 0x6c5be220, 0x2f417: 0x6c5be420,\n\t0x2f418: 0x6c7efe20, 0x2f419: 0x6c7f0020, 0x2f41a: 0x6c7f0220, 0x2f41b: 0x6c7f0420,\n\t0x2f41c: 0x6c7f0620, 0x2f41d: 0x6c7f0820, 0x2f41e: 0x6c7f0a20, 0x2f41f: 0x6cb6ae20,\n\t0x2f420: 0x6cb6b020, 0x2f421: 0x6ca7c820, 0x2f422: 0x6cd60e20, 0x2f423: 0x6cd61020,\n\t0x2f424: 0x6cd61220, 0x2f425: 0x6cd61420, 0x2f426: 0x6cd61620, 0x2f427: 0x6cd61820,\n\t0x2f428: 0x6d048e20, 0x2f429: 0x6d049020, 0x2f42a: 0x6d049220, 0x2f42b: 0x6d049420,\n\t0x2f42c: 0x6d320820, 0x2f42d: 0x6d320a20, 0x2f42e: 0x6d322e20, 0x2f42f: 0x6d320c20,\n\t0x2f430: 0x6d320e20, 0x2f431: 0x6d892220, 0x2f432: 0x6dad8a20, 0x2f433: 0x6dad8c20,\n\t0x2f434: 0x6dad8e20, 0x2f435: 0x6dcd3a20, 0x2f436: 0x6dfe9a20, 0x2f437: 0x6dfe9c20,\n\t0x2f438: 0x6e1f7e20, 0x2f439: 0x6c141020, 0x2f43a: 0x6c3d9a20, 0x2f43b: 0x6c3d9c20,\n\t0x2f43c: 0x6c5bf820, 0x2f43d: 0x6c5bfa20, 0x2f43e: 0x6c5bfc20, 0x2f43f: 0x6c5bfe20,\n\t// Block 0xbd1, offset 0x2f440\n\t0x2f440: 0x6c5c0020, 0x2f441: 0x6c5c0220, 0x2f442: 0x6c5c0420, 0x2f443: 0x6c5c0620,\n\t0x2f444: 0x6c7fa820, 0x2f445: 0x6c7f4020, 0x2f446: 0x6c7f4220, 0x2f447: 0x6c7f4420,\n\t0x2f448: 0x6c7f4620, 0x2f449: 0x6c7f4820, 0x2f44a: 0x6c7f4a20, 0x2f44b: 0x6c7f4c20,\n\t0x2f44c: 0x6c7f4e20, 0x2f44d: 0x6c7f5020, 0x2f44e: 0x6c7f5220, 0x2f44f: 0x6c7f5420,\n\t0x2f450: 0x6c7f5620, 0x2f451: 0x6c7f5820, 0x2f452: 0x6c7f5a20, 0x2f453: 0x6c7f5c20,\n\t0x2f454: 0x6c7f5e20, 0x2f455: 0x6c7f6020, 0x2f456: 0x6ca7fa20, 0x2f457: 0x6ca7fc20,\n\t0x2f458: 0x6ca7fe20, 0x2f459: 0x6ca80020, 0x2f45a: 0x6ca80220, 0x2f45b: 0x6ca80420,\n\t0x2f45c: 0x6ca80620, 0x2f45d: 0x6ca80820, 0x2f45e: 0x6ca80a20, 0x2f45f: 0x6ca80c20,\n\t0x2f460: 0x6ca80e20, 0x2f461: 0x6ca81020, 0x2f462: 0x6ca81220, 0x2f463: 0x6ca81420,\n\t0x2f464: 0x6ca81620, 0x2f465: 0x6ca81820, 0x2f466: 0x6ca81a20, 0x2f467: 0x6ca81c20,\n\t0x2f468: 0x6ca81e20, 0x2f469: 0x6ca82020, 0x2f46a: 0x6ca82220, 0x2f46b: 0x6ca82420,\n\t0x2f46c: 0x6ca82620, 0x2f46d: 0x6ca82820, 0x2f46e: 0x6ca82a20, 0x2f46f: 0x6ca82c20,\n\t0x2f470: 0x6ca82e20, 0x2f471: 0x6ca83020, 0x2f472: 0x6ca83220, 0x2f473: 0x6ca83420,\n\t0x2f474: 0x6ca83620, 0x2f475: 0x6ca83820, 0x2f476: 0x6ca83a20, 0x2f477: 0x6ca83c20,\n\t0x2f478: 0x6ca83e20, 0x2f479: 0x6ca84020, 0x2f47a: 0x6ca84220, 0x2f47b: 0x6ca84420,\n\t0x2f47c: 0x6ca84620, 0x2f47d: 0x6ca84820, 0x2f47e: 0x6ca84a20, 0x2f47f: 0x6cd65220,\n\t// Block 0xbd2, offset 0x2f480\n\t0x2f480: 0x6cd65420, 0x2f481: 0x6cd65620, 0x2f482: 0x6cd65820, 0x2f483: 0x6cd65a20,\n\t0x2f484: 0x6cd65c20, 0x2f485: 0x6cd65e20, 0x2f486: 0x6cd66020, 0x2f487: 0x6cd66220,\n\t0x2f488: 0x6cd66420, 0x2f489: 0x6cd66620, 0x2f48a: 0x6cd66820, 0x2f48b: 0x6cd66a20,\n\t0x2f48c: 0x6cd66c20, 0x2f48d: 0x6cd66e20, 0x2f48e: 0x6cd67020, 0x2f48f: 0x6cd67220,\n\t0x2f490: 0x6cd67420, 0x2f491: 0x6cd67620, 0x2f492: 0x6cd67820, 0x2f493: 0x6cd67a20,\n\t0x2f494: 0x6cd67c20, 0x2f495: 0x6cd67e20, 0x2f496: 0x6cd68020, 0x2f497: 0x6cd68220,\n\t0x2f498: 0x6cd68420, 0x2f499: 0x6cd68620, 0x2f49a: 0x6cd68820, 0x2f49b: 0x6cd68a20,\n\t0x2f49c: 0x6cd68c20, 0x2f49d: 0x6cd68e20, 0x2f49e: 0x6d04ce20, 0x2f49f: 0x6d04d020,\n\t0x2f4a0: 0x6d04d220, 0x2f4a1: 0x6d04d420, 0x2f4a2: 0x6d04d620, 0x2f4a3: 0x6d04d820,\n\t0x2f4a4: 0x6d04da20, 0x2f4a5: 0x6d04dc20, 0x2f4a6: 0x6d04de20, 0x2f4a7: 0x6d04e020,\n\t0x2f4a8: 0x6d04e220, 0x2f4a9: 0x6d04e420, 0x2f4aa: 0x6d04e620, 0x2f4ab: 0x6d04e820,\n\t0x2f4ac: 0x6cd6de20, 0x2f4ad: 0x6d04ea20, 0x2f4ae: 0x6d04ec20, 0x2f4af: 0x6d04ee20,\n\t0x2f4b0: 0x6d04f020, 0x2f4b1: 0x6d04f220, 0x2f4b2: 0x6d04f420, 0x2f4b3: 0x6d04f620,\n\t0x2f4b4: 0x6d04f820, 0x2f4b5: 0x6d323020, 0x2f4b6: 0x6d04fa20, 0x2f4b7: 0x6d04fc20,\n\t0x2f4b8: 0x6d04fe20, 0x2f4b9: 0x6d050020, 0x2f4ba: 0x6d050220, 0x2f4bb: 0x6d050420,\n\t0x2f4bc: 0x6d050620, 0x2f4bd: 0x6d050820, 0x2f4be: 0x6d050a20, 0x2f4bf: 0x6d050c20,\n\t// Block 0xbd3, offset 0x2f4c0\n\t0x2f4c0: 0x6d050e20, 0x2f4c1: 0x6d324c20, 0x2f4c2: 0x6d324e20, 0x2f4c3: 0x6d325020,\n\t0x2f4c4: 0x6d325220, 0x2f4c5: 0x6d325420, 0x2f4c6: 0x6d325620, 0x2f4c7: 0x6d325820,\n\t0x2f4c8: 0x6d325a20, 0x2f4c9: 0x6d325c20, 0x2f4ca: 0x6d325e20, 0x2f4cb: 0x6d326020,\n\t0x2f4cc: 0x6d326220, 0x2f4cd: 0x6d326420, 0x2f4ce: 0x6d326620, 0x2f4cf: 0x6d326820,\n\t0x2f4d0: 0x6d326a20, 0x2f4d1: 0x6d326c20, 0x2f4d2: 0x6d326e20, 0x2f4d3: 0x6d327020,\n\t0x2f4d4: 0x6d327220, 0x2f4d5: 0x6d327420, 0x2f4d6: 0x6d327620, 0x2f4d7: 0x6d327820,\n\t0x2f4d8: 0x6d327a20, 0x2f4d9: 0x6d327c20, 0x2f4da: 0x6d327e20, 0x2f4db: 0x6d328020,\n\t0x2f4dc: 0x6d328220, 0x2f4dd: 0x6d328420, 0x2f4de: 0x6d328620, 0x2f4df: 0x6d328820,\n\t0x2f4e0: 0x6d328a20, 0x2f4e1: 0x6d328c20, 0x2f4e2: 0x6d328e20, 0x2f4e3: 0x6d329020,\n\t0x2f4e4: 0x6d329220, 0x2f4e5: 0x6d329420, 0x2f4e6: 0x6d329620, 0x2f4e7: 0x6d329820,\n\t0x2f4e8: 0x6d329a20, 0x2f4e9: 0x6d329c20, 0x2f4ea: 0x6d329e20, 0x2f4eb: 0x6d32a020,\n\t0x2f4ec: 0x6d5f0420, 0x2f4ed: 0x6d5f0620, 0x2f4ee: 0x6d5f0820, 0x2f4ef: 0x6d5f0a20,\n\t0x2f4f0: 0x6d5f0c20, 0x2f4f1: 0x6d5f0e20, 0x2f4f2: 0x6d5f1020, 0x2f4f3: 0x6d5f1220,\n\t0x2f4f4: 0x6d5f1420, 0x2f4f5: 0x6d5f1620, 0x2f4f6: 0x6d5f1820, 0x2f4f7: 0x6d5f1a20,\n\t0x2f4f8: 0x6d333620, 0x2f4f9: 0x6d5f1c20, 0x2f4fa: 0x6d5f1e20, 0x2f4fb: 0x6d5f2020,\n\t0x2f4fc: 0x6d5f2220, 0x2f4fd: 0x6d5f2420, 0x2f4fe: 0x6d5f2620, 0x2f4ff: 0x6d5f2820,\n\t// Block 0xbd4, offset 0x2f500\n\t0x2f500: 0x6d051020, 0x2f501: 0x6d5f2a20, 0x2f502: 0x6d5f2c20, 0x2f503: 0x6d5f2e20,\n\t0x2f504: 0x6d5f3020, 0x2f505: 0x6d5f3220, 0x2f506: 0x6d5f3420, 0x2f507: 0x6d5f3620,\n\t0x2f508: 0x6d5f3820, 0x2f509: 0x6d894a20, 0x2f50a: 0x6d5f3a20, 0x2f50b: 0x6d5f3c20,\n\t0x2f50c: 0x6d5f3e20, 0x2f50d: 0x6d5f4020, 0x2f50e: 0x6d5f4220, 0x2f50f: 0x6d5f4420,\n\t0x2f510: 0x6d5f4620, 0x2f511: 0x6d5f4820, 0x2f512: 0x6d5f4a20, 0x2f513: 0x6d5f4c20,\n\t0x2f514: 0x6d894c20, 0x2f515: 0x6d894e20, 0x2f516: 0x6d895020, 0x2f517: 0x6d895220,\n\t0x2f518: 0x6d895420, 0x2f519: 0x6d895620, 0x2f51a: 0x6d895820, 0x2f51b: 0x6d895a20,\n\t0x2f51c: 0x6d895c20, 0x2f51d: 0x6d895e20, 0x2f51e: 0x6d896020, 0x2f51f: 0x6d896220,\n\t0x2f520: 0x6d896420, 0x2f521: 0x6d896620, 0x2f522: 0x6d896820, 0x2f523: 0x6d896a20,\n\t0x2f524: 0x6d896c20, 0x2f525: 0x6d896e20, 0x2f526: 0x6d897020, 0x2f527: 0x6d897220,\n\t0x2f528: 0x6d897420, 0x2f529: 0x6d897620, 0x2f52a: 0x6d897820, 0x2f52b: 0x6d897a20,\n\t0x2f52c: 0x6d897c20, 0x2f52d: 0x6d897e20, 0x2f52e: 0x6d898020, 0x2f52f: 0x6d898220,\n\t0x2f530: 0x6dadc820, 0x2f531: 0x6dadca20, 0x2f532: 0x6dadcc20, 0x2f533: 0x6dadce20,\n\t0x2f534: 0x6dadd020, 0x2f535: 0x6dadd220, 0x2f536: 0x6dadd420, 0x2f537: 0x6dadd620,\n\t0x2f538: 0x6dadd820, 0x2f539: 0x6d8a5020, 0x2f53a: 0x6dadda20, 0x2f53b: 0x6daddc20,\n\t0x2f53c: 0x6dadde20, 0x2f53d: 0x6dade020, 0x2f53e: 0x6dade220, 0x2f53f: 0x6dade420,\n\t// Block 0xbd5, offset 0x2f540\n\t0x2f540: 0x6dade620, 0x2f541: 0x6dade820, 0x2f542: 0x6dadea20, 0x2f543: 0x6dadec20,\n\t0x2f544: 0x6dadee20, 0x2f545: 0x6dadf020, 0x2f546: 0x6dadf220, 0x2f547: 0x6dadf420,\n\t0x2f548: 0x6dadf620, 0x2f549: 0x6dadf820, 0x2f54a: 0x6dadfa20, 0x2f54b: 0x6dadfc20,\n\t0x2f54c: 0x6dadfe20, 0x2f54d: 0x6dae0020, 0x2f54e: 0x6dae0220, 0x2f54f: 0x6dae0420,\n\t0x2f550: 0x6dae0620, 0x2f551: 0x6d898420, 0x2f552: 0x6dae0820, 0x2f553: 0x6dae0a20,\n\t0x2f554: 0x6dae0c20, 0x2f555: 0x6dada620, 0x2f556: 0x6dae0e20, 0x2f557: 0x6dae1020,\n\t0x2f558: 0x6daec420, 0x2f559: 0x6dcd7220, 0x2f55a: 0x6dcd7420, 0x2f55b: 0x6dcd7620,\n\t0x2f55c: 0x6dcd7820, 0x2f55d: 0x6dcd7a20, 0x2f55e: 0x6dcd7c20, 0x2f55f: 0x6dcd7e20,\n\t0x2f560: 0x6dcd8020, 0x2f561: 0x6dcd8220, 0x2f562: 0x6dcd8420, 0x2f563: 0x6dcd8620,\n\t0x2f564: 0x6dcd8820, 0x2f565: 0x6dcd8a20, 0x2f566: 0x6dcd8c20, 0x2f567: 0x6dcd8e20,\n\t0x2f568: 0x6dcd9020, 0x2f569: 0x6dcd9220, 0x2f56a: 0x6dcd9420, 0x2f56b: 0x6dcd9620,\n\t0x2f56c: 0x6de81220, 0x2f56d: 0x6dcd9820, 0x2f56e: 0x6dcd9a20, 0x2f56f: 0x6dcd9c20,\n\t0x2f570: 0x6dcd9e20, 0x2f571: 0x6dcda020, 0x2f572: 0x6dcda220, 0x2f573: 0x6de82820,\n\t0x2f574: 0x6de82a20, 0x2f575: 0x6de82c20, 0x2f576: 0x6de82e20, 0x2f577: 0x6de83020,\n\t0x2f578: 0x6de83220, 0x2f579: 0x6de83420, 0x2f57a: 0x6de83620, 0x2f57b: 0x6de83820,\n\t0x2f57c: 0x6de83a20, 0x2f57d: 0x6de83c20, 0x2f57e: 0x6de83e20, 0x2f57f: 0x6de84020,\n\t// Block 0xbd6, offset 0x2f580\n\t0x2f580: 0x6de84220, 0x2f581: 0x6de84420, 0x2f582: 0x6de84620, 0x2f583: 0x6dfeac20,\n\t0x2f584: 0x6dfeae20, 0x2f585: 0x6dfeb020, 0x2f586: 0x6dfeb220, 0x2f587: 0x6dfeb420,\n\t0x2f588: 0x6dfeb620, 0x2f589: 0x6dfeb820, 0x2f58a: 0x6dfeba20, 0x2f58b: 0x6dfebc20,\n\t0x2f58c: 0x6dfebe20, 0x2f58d: 0x6dfec020, 0x2f58e: 0x6dfec220, 0x2f58f: 0x6dfec420,\n\t0x2f590: 0x6e111820, 0x2f591: 0x6e111a20, 0x2f592: 0x6e111c20, 0x2f593: 0x6e111e20,\n\t0x2f594: 0x6e112020, 0x2f595: 0x6dfec620, 0x2f596: 0x6e110620, 0x2f597: 0x6e1f8e20,\n\t0x2f598: 0x6e1f9020, 0x2f599: 0x6e1f9220, 0x2f59a: 0x6e1f9420, 0x2f59b: 0x6e1f9620,\n\t0x2f59c: 0x6e1f9820, 0x2f59d: 0x6e1f9a20, 0x2f59e: 0x6e2ac420, 0x2f59f: 0x6e1f9c20,\n\t0x2f5a0: 0x6e1f9e20, 0x2f5a1: 0x6e1fa020, 0x2f5a2: 0x6e2acc20, 0x2f5a3: 0x6e2ace20,\n\t0x2f5a4: 0x6e2ad020, 0x2f5a5: 0x6e2ad220, 0x2f5a6: 0x6e2ad420, 0x2f5a7: 0x6e2ad620,\n\t0x2f5a8: 0x6e2ad820, 0x2f5a9: 0x6e396020, 0x2f5aa: 0x6e335420, 0x2f5ab: 0x6e396220,\n\t0x2f5ac: 0x6e396420, 0x2f5ad: 0x6e396620, 0x2f5ae: 0x6e396820, 0x2f5af: 0x6e3dae20,\n\t0x2f5b0: 0x6e3db020, 0x2f5b1: 0x6e453420, 0x2f5b2: 0x6e463620, 0x2f5b3: 0x6c141420,\n\t0x2f5b4: 0x6c3da820, 0x2f5b5: 0x6c3daa20, 0x2f5b6: 0x6c3dac20, 0x2f5b7: 0x6c5c3220,\n\t0x2f5b8: 0x6c5c3420, 0x2f5b9: 0x6c5c3620, 0x2f5ba: 0x6c5c3820, 0x2f5bb: 0x6c5c3a20,\n\t0x2f5bc: 0x6c5c3c20, 0x2f5bd: 0x6c5c3e20, 0x2f5be: 0x6c5c4020, 0x2f5bf: 0x6c5c4220,\n\t// Block 0xbd7, offset 0x2f5c0\n\t0x2f5c0: 0x6c5c4420, 0x2f5c1: 0x6c5c4620, 0x2f5c2: 0x6c5c4820, 0x2f5c3: 0x6c7fae20,\n\t0x2f5c4: 0x6c7fb020, 0x2f5c5: 0x6c7fb220, 0x2f5c6: 0x6c7fb420, 0x2f5c7: 0x6c7fb620,\n\t0x2f5c8: 0x6c7fb820, 0x2f5c9: 0x6c7fba20, 0x2f5ca: 0x6c7fbc20, 0x2f5cb: 0x6c7fbe20,\n\t0x2f5cc: 0x6c7fc020, 0x2f5cd: 0x6c7fc220, 0x2f5ce: 0x6c7fc420, 0x2f5cf: 0x6c7fc620,\n\t0x2f5d0: 0x6c7fc820, 0x2f5d1: 0x6c7fca20, 0x2f5d2: 0x6ca89c20, 0x2f5d3: 0x6ca89e20,\n\t0x2f5d4: 0x6ca8a020, 0x2f5d5: 0x6ca8a220, 0x2f5d6: 0x6ca8a420, 0x2f5d7: 0x6ca8a620,\n\t0x2f5d8: 0x6ca8a820, 0x2f5d9: 0x6ca8aa20, 0x2f5da: 0x6ca8ac20, 0x2f5db: 0x6ca8ae20,\n\t0x2f5dc: 0x6ca8b020, 0x2f5dd: 0x6ca8b220, 0x2f5de: 0x6cd6ec20, 0x2f5df: 0x6cd6ee20,\n\t0x2f5e0: 0x6cd6f020, 0x2f5e1: 0x6cd6f220, 0x2f5e2: 0x6cd6f420, 0x2f5e3: 0x6ca8b420,\n\t0x2f5e4: 0x6cd6f620, 0x2f5e5: 0x6cd6f820, 0x2f5e6: 0x6cd6fa20, 0x2f5e7: 0x6cd6fc20,\n\t0x2f5e8: 0x6cd6fe20, 0x2f5e9: 0x6cd70020, 0x2f5ea: 0x6cd70220, 0x2f5eb: 0x6cd70420,\n\t0x2f5ec: 0x6cd70620, 0x2f5ed: 0x6cd70820, 0x2f5ee: 0x6d05a420, 0x2f5ef: 0x6d05a620,\n\t0x2f5f0: 0x6d05a820, 0x2f5f1: 0x6d05aa20, 0x2f5f2: 0x6d05ac20, 0x2f5f3: 0x6d05ae20,\n\t0x2f5f4: 0x6d05b020, 0x2f5f5: 0x6d05b220, 0x2f5f6: 0x6d334420, 0x2f5f7: 0x6d334620,\n\t0x2f5f8: 0x6d334820, 0x2f5f9: 0x6d334a20, 0x2f5fa: 0x6d334c20, 0x2f5fb: 0x6d334e20,\n\t0x2f5fc: 0x6d335020, 0x2f5fd: 0x6d335220, 0x2f5fe: 0x6d335420, 0x2f5ff: 0x6d335620,\n\t// Block 0xbd8, offset 0x2f600\n\t0x2f600: 0x6d05b420, 0x2f601: 0x6d335820, 0x2f602: 0x6d5ffc20, 0x2f603: 0x6d5ffe20,\n\t0x2f604: 0x6d600020, 0x2f605: 0x6d600220, 0x2f606: 0x6d600420, 0x2f607: 0x6d600620,\n\t0x2f608: 0x6d600820, 0x2f609: 0x6d600a20, 0x2f60a: 0x6d600c20, 0x2f60b: 0x6d600e20,\n\t0x2f60c: 0x6d601020, 0x2f60d: 0x6d601220, 0x2f60e: 0x6d601420, 0x2f60f: 0x6d8a5820,\n\t0x2f610: 0x6d8a5a20, 0x2f611: 0x6d8a5c20, 0x2f612: 0x6d8a5e20, 0x2f613: 0x6d8a6020,\n\t0x2f614: 0x6d8a6220, 0x2f615: 0x6d8a6420, 0x2f616: 0x6d8a6620, 0x2f617: 0x6d8a6820,\n\t0x2f618: 0x6d8a6a20, 0x2f619: 0x6daed420, 0x2f61a: 0x6daed620, 0x2f61b: 0x6daed820,\n\t0x2f61c: 0x6daeda20, 0x2f61d: 0x6daedc20, 0x2f61e: 0x6daede20, 0x2f61f: 0x6daee020,\n\t0x2f620: 0x6daee220, 0x2f621: 0x6daee420, 0x2f622: 0x6daee620, 0x2f623: 0x6dce7220,\n\t0x2f624: 0x6dce7420, 0x2f625: 0x6dce7620, 0x2f626: 0x6dce7820, 0x2f627: 0x6dce7a20,\n\t0x2f628: 0x6daee820, 0x2f629: 0x6de8c820, 0x2f62a: 0x6de8ca20, 0x2f62b: 0x6de8cc20,\n\t0x2f62c: 0x6de8ce20, 0x2f62d: 0x6de8d020, 0x2f62e: 0x6dff2020, 0x2f62f: 0x6dff2220,\n\t0x2f630: 0x6dff2420, 0x2f631: 0x6e1fe420, 0x2f632: 0x6e118c20, 0x2f633: 0x6e3dc220,\n\t0x2f634: 0x6e1fe620, 0x2f635: 0x6e2b0820, 0x2f636: 0x6e398820, 0x2f637: 0x6e409e20,\n\t0x2f638: 0x6c141620, 0x2f639: 0x6c141820, 0x2f63a: 0x6c259a20, 0x2f63b: 0x6c259c20,\n\t0x2f63c: 0x6c3dbc20, 0x2f63d: 0x6c3dbe20, 0x2f63e: 0x6c3dc020, 0x2f63f: 0x6c3dc220,\n\t// Block 0xbd9, offset 0x2f640\n\t0x2f640: 0x6c5c6620, 0x2f641: 0x6c5c6820, 0x2f642: 0x6c5c6a20, 0x2f643: 0x6c5c6c20,\n\t0x2f644: 0x6c5c6e20, 0x2f645: 0x6c5c7020, 0x2f646: 0x6c5c7220, 0x2f647: 0x6c5c7420,\n\t0x2f648: 0x6c5c7620, 0x2f649: 0x6c5c7820, 0x2f64a: 0x6c800a20, 0x2f64b: 0x6c800c20,\n\t0x2f64c: 0x6c800e20, 0x2f64d: 0x6c801020, 0x2f64e: 0x6c801220, 0x2f64f: 0x6c801420,\n\t0x2f650: 0x6c801620, 0x2f651: 0x6c801820, 0x2f652: 0x6c801a20, 0x2f653: 0x6c801c20,\n\t0x2f654: 0x6c801e20, 0x2f655: 0x6c802020, 0x2f656: 0x6c802220, 0x2f657: 0x6c802420,\n\t0x2f658: 0x6c802620, 0x2f659: 0x6c802820, 0x2f65a: 0x6c802a20, 0x2f65b: 0x6c802c20,\n\t0x2f65c: 0x6c802e20, 0x2f65d: 0x6c803020, 0x2f65e: 0x6c803220, 0x2f65f: 0x6c803420,\n\t0x2f660: 0x6c803620, 0x2f661: 0x6c803820, 0x2f662: 0x6c803a20, 0x2f663: 0x6c803c20,\n\t0x2f664: 0x6c803e20, 0x2f665: 0x6c804020, 0x2f666: 0x6c804220, 0x2f667: 0x6c804420,\n\t0x2f668: 0x6ca90c20, 0x2f669: 0x6ca90e20, 0x2f66a: 0x6cd74220, 0x2f66b: 0x6cd74420,\n\t0x2f66c: 0x6ca91020, 0x2f66d: 0x6ca91220, 0x2f66e: 0x6ca91420, 0x2f66f: 0x6ca91620,\n\t0x2f670: 0x6ca91820, 0x2f671: 0x6ca91a20, 0x2f672: 0x6ca91c20, 0x2f673: 0x6ca91e20,\n\t0x2f674: 0x6ca92020, 0x2f675: 0x6ca92220, 0x2f676: 0x6ca92420, 0x2f677: 0x6ca92620,\n\t0x2f678: 0x6ca92820, 0x2f679: 0x6ca92a20, 0x2f67a: 0x6ca92c20, 0x2f67b: 0x6ca92e20,\n\t0x2f67c: 0x6ca93020, 0x2f67d: 0x6ca93220, 0x2f67e: 0x6ca93420, 0x2f67f: 0x6ca93620,\n\t// Block 0xbda, offset 0x2f680\n\t0x2f680: 0x6ca93820, 0x2f681: 0x6ca93a20, 0x2f682: 0x6ca93c20, 0x2f683: 0x6ca93e20,\n\t0x2f684: 0x6ca94020, 0x2f685: 0x6ca94220, 0x2f686: 0x6ca94420, 0x2f687: 0x6ca94620,\n\t0x2f688: 0x6ca94820, 0x2f689: 0x6ca94a20, 0x2f68a: 0x6ca94c20, 0x2f68b: 0x6ca94e20,\n\t0x2f68c: 0x6ca95020, 0x2f68d: 0x6cd75a20, 0x2f68e: 0x6cd75c20, 0x2f68f: 0x6cd75e20,\n\t0x2f690: 0x6cd76020, 0x2f691: 0x6cd76220, 0x2f692: 0x6cd76420, 0x2f693: 0x6cd76620,\n\t0x2f694: 0x6cd76820, 0x2f695: 0x6cd76a20, 0x2f696: 0x6cd76c20, 0x2f697: 0x6cd76e20,\n\t0x2f698: 0x6cd77020, 0x2f699: 0x6cd77220, 0x2f69a: 0x6cd77420, 0x2f69b: 0x6d061420,\n\t0x2f69c: 0x6cd77620, 0x2f69d: 0x6cd77820, 0x2f69e: 0x6cd77a20, 0x2f69f: 0x6cd77c20,\n\t0x2f6a0: 0x6cd77e20, 0x2f6a1: 0x6cd78020, 0x2f6a2: 0x6cd78220, 0x2f6a3: 0x6cd78420,\n\t0x2f6a4: 0x6cd78620, 0x2f6a5: 0x6cd78820, 0x2f6a6: 0x6cd78a20, 0x2f6a7: 0x6cd78c20,\n\t0x2f6a8: 0x6cd78e20, 0x2f6a9: 0x6cd79020, 0x2f6aa: 0x6cd79220, 0x2f6ab: 0x6cd79420,\n\t0x2f6ac: 0x6cd79620, 0x2f6ad: 0x6cd79820, 0x2f6ae: 0x6cd79a20, 0x2f6af: 0x6cd79c20,\n\t0x2f6b0: 0x6cd79e20, 0x2f6b1: 0x6cd7a020, 0x2f6b2: 0x6cd7a220, 0x2f6b3: 0x6cd7a420,\n\t0x2f6b4: 0x6cd7a620, 0x2f6b5: 0x6cd7a820, 0x2f6b6: 0x6cd7aa20, 0x2f6b7: 0x6cd7ac20,\n\t0x2f6b8: 0x6d061620, 0x2f6b9: 0x6d061820, 0x2f6ba: 0x6d061a20, 0x2f6bb: 0x6d061c20,\n\t0x2f6bc: 0x6d061e20, 0x2f6bd: 0x6d062020, 0x2f6be: 0x6cd80c20, 0x2f6bf: 0x6d062220,\n\t// Block 0xbdb, offset 0x2f6c0\n\t0x2f6c0: 0x6d062420, 0x2f6c1: 0x6d062620, 0x2f6c2: 0x6d062820, 0x2f6c3: 0x6d062a20,\n\t0x2f6c4: 0x6d062c20, 0x2f6c5: 0x6d062e20, 0x2f6c6: 0x6d063020, 0x2f6c7: 0x6d063220,\n\t0x2f6c8: 0x6d063420, 0x2f6c9: 0x6d063620, 0x2f6ca: 0x6d063820, 0x2f6cb: 0x6d063a20,\n\t0x2f6cc: 0x6d063c20, 0x2f6cd: 0x6d063e20, 0x2f6ce: 0x6d064020, 0x2f6cf: 0x6d064220,\n\t0x2f6d0: 0x6d064420, 0x2f6d1: 0x6d064620, 0x2f6d2: 0x6d064820, 0x2f6d3: 0x6d064a20,\n\t0x2f6d4: 0x6d064c20, 0x2f6d5: 0x6d064e20, 0x2f6d6: 0x6d33b420, 0x2f6d7: 0x6d065020,\n\t0x2f6d8: 0x6d065220, 0x2f6d9: 0x6d065420, 0x2f6da: 0x6d065620, 0x2f6db: 0x6d065820,\n\t0x2f6dc: 0x6d33d020, 0x2f6dd: 0x6d33d220, 0x2f6de: 0x6d33d420, 0x2f6df: 0x6d33d620,\n\t0x2f6e0: 0x6d33d820, 0x2f6e1: 0x6d33da20, 0x2f6e2: 0x6d33dc20, 0x2f6e3: 0x6d33de20,\n\t0x2f6e4: 0x6d33e020, 0x2f6e5: 0x6d33e220, 0x2f6e6: 0x6d33e420, 0x2f6e7: 0x6d33e620,\n\t0x2f6e8: 0x6d33e820, 0x2f6e9: 0x6d33ea20, 0x2f6ea: 0x6d33ec20, 0x2f6eb: 0x6d33ee20,\n\t0x2f6ec: 0x6d33f020, 0x2f6ed: 0x6d33f220, 0x2f6ee: 0x6d33f420, 0x2f6ef: 0x6d33f620,\n\t0x2f6f0: 0x6d33f820, 0x2f6f1: 0x6d33fa20, 0x2f6f2: 0x6d33fc20, 0x2f6f3: 0x6d33fe20,\n\t0x2f6f4: 0x6d340020, 0x2f6f5: 0x6d340220, 0x2f6f6: 0x6d340420, 0x2f6f7: 0x6d340620,\n\t0x2f6f8: 0x6d340820, 0x2f6f9: 0x6d340a20, 0x2f6fa: 0x6d340c20, 0x2f6fb: 0x6d340e20,\n\t0x2f6fc: 0x6d341020, 0x2f6fd: 0x6d341220, 0x2f6fe: 0x6d341420, 0x2f6ff: 0x6d341620,\n\t// Block 0xbdc, offset 0x2f700\n\t0x2f700: 0x6d341820, 0x2f701: 0x6d341a20, 0x2f702: 0x6d341c20, 0x2f703: 0x6d341e20,\n\t0x2f704: 0x6d342020, 0x2f705: 0x6d342220, 0x2f706: 0x6d342420, 0x2f707: 0x6d342620,\n\t0x2f708: 0x6d342820, 0x2f709: 0x6d342a20, 0x2f70a: 0x6d342c20, 0x2f70b: 0x6d342e20,\n\t0x2f70c: 0x6d343020, 0x2f70d: 0x6d343220, 0x2f70e: 0x6d343420, 0x2f70f: 0x6d343620,\n\t0x2f710: 0x6d33b620, 0x2f711: 0x6d343820, 0x2f712: 0x6d343a20, 0x2f713: 0x6d608820,\n\t0x2f714: 0x6d343c20, 0x2f715: 0x6d343e20, 0x2f716: 0x6d608a20, 0x2f717: 0x6d608c20,\n\t0x2f718: 0x6d608e20, 0x2f719: 0x6d609020, 0x2f71a: 0x6d609220, 0x2f71b: 0x6d609420,\n\t0x2f71c: 0x6d609620, 0x2f71d: 0x6d609820, 0x2f71e: 0x6d609a20, 0x2f71f: 0x6d609c20,\n\t0x2f720: 0x6d609e20, 0x2f721: 0x6d60a020, 0x2f722: 0x6d60a220, 0x2f723: 0x6d60a420,\n\t0x2f724: 0x6d60a620, 0x2f725: 0x6d60a820, 0x2f726: 0x6d60aa20, 0x2f727: 0x6d60ac20,\n\t0x2f728: 0x6d60ae20, 0x2f729: 0x6d60b020, 0x2f72a: 0x6d60b220, 0x2f72b: 0x6d60b420,\n\t0x2f72c: 0x6d60b620, 0x2f72d: 0x6d60b820, 0x2f72e: 0x6d60ba20, 0x2f72f: 0x6d60bc20,\n\t0x2f730: 0x6d60be20, 0x2f731: 0x6d60c020, 0x2f732: 0x6d60c220, 0x2f733: 0x6d60c420,\n\t0x2f734: 0x6d60c620, 0x2f735: 0x6d60c820, 0x2f736: 0x6d60ca20, 0x2f737: 0x6d60cc20,\n\t0x2f738: 0x6d60ce20, 0x2f739: 0x6d60d020, 0x2f73a: 0x6d60d220, 0x2f73b: 0x6d60d420,\n\t0x2f73c: 0x6d60d620, 0x2f73d: 0x6d60d820, 0x2f73e: 0x6d60da20, 0x2f73f: 0x6d60dc20,\n\t// Block 0xbdd, offset 0x2f740\n\t0x2f740: 0x6d60de20, 0x2f741: 0x6d60e020, 0x2f742: 0x6d60e220, 0x2f743: 0x6d60e420,\n\t0x2f744: 0x6d60e620, 0x2f745: 0x6d60e820, 0x2f746: 0x6d60ea20, 0x2f747: 0x6d60ec20,\n\t0x2f748: 0x6d8aba20, 0x2f749: 0x6d8abc20, 0x2f74a: 0x6d8abe20, 0x2f74b: 0x6d8ac020,\n\t0x2f74c: 0x6d8ac220, 0x2f74d: 0x6d8ac420, 0x2f74e: 0x6d8ac620, 0x2f74f: 0x6d8ac820,\n\t0x2f750: 0x6d8aca20, 0x2f751: 0x6d8acc20, 0x2f752: 0x6d8ace20, 0x2f753: 0x6d8ad020,\n\t0x2f754: 0x6d8ad220, 0x2f755: 0x6d8ad420, 0x2f756: 0x6d8ad620, 0x2f757: 0x6d8ad820,\n\t0x2f758: 0x6d8ada20, 0x2f759: 0x6d8adc20, 0x2f75a: 0x6d8ade20, 0x2f75b: 0x6d8ae020,\n\t0x2f75c: 0x6d8ae220, 0x2f75d: 0x6d8ae420, 0x2f75e: 0x6d8ae620, 0x2f75f: 0x6d8ae820,\n\t0x2f760: 0x6d8aea20, 0x2f761: 0x6d8aec20, 0x2f762: 0x6d8aee20, 0x2f763: 0x6d8af020,\n\t0x2f764: 0x6d8af220, 0x2f765: 0x6d8af420, 0x2f766: 0x6d8af620, 0x2f767: 0x6d8af820,\n\t0x2f768: 0x6d8afa20, 0x2f769: 0x6daf3420, 0x2f76a: 0x6daf3620, 0x2f76b: 0x6daf3820,\n\t0x2f76c: 0x6daf3a20, 0x2f76d: 0x6daf3c20, 0x2f76e: 0x6daf3e20, 0x2f76f: 0x6daf4020,\n\t0x2f770: 0x6daf4220, 0x2f771: 0x6daf4420, 0x2f772: 0x6daf4620, 0x2f773: 0x6daf4820,\n\t0x2f774: 0x6daf4a20, 0x2f775: 0x6daf4c20, 0x2f776: 0x6daf4e20, 0x2f777: 0x6daf5020,\n\t0x2f778: 0x6daf5220, 0x2f779: 0x6daf5420, 0x2f77a: 0x6daf5620, 0x2f77b: 0x6daf5820,\n\t0x2f77c: 0x6daf5a20, 0x2f77d: 0x6daf5c20, 0x2f77e: 0x6daf5e20, 0x2f77f: 0x6daf6020,\n\t// Block 0xbde, offset 0x2f780\n\t0x2f780: 0x6daf6220, 0x2f781: 0x6daf6420, 0x2f782: 0x6daf6620, 0x2f783: 0x6daf6820,\n\t0x2f784: 0x6daf6a20, 0x2f785: 0x6daf6c20, 0x2f786: 0x6daf6e20, 0x2f787: 0x6daf7020,\n\t0x2f788: 0x6dafea20, 0x2f789: 0x6daf7220, 0x2f78a: 0x6daf7420, 0x2f78b: 0x6de91a20,\n\t0x2f78c: 0x6daf7620, 0x2f78d: 0x6daf7820, 0x2f78e: 0x6dcecc20, 0x2f78f: 0x6dcece20,\n\t0x2f790: 0x6dced020, 0x2f791: 0x6dced220, 0x2f792: 0x6dced420, 0x2f793: 0x6dced620,\n\t0x2f794: 0x6dced820, 0x2f795: 0x6dceda20, 0x2f796: 0x6dcedc20, 0x2f797: 0x6dcede20,\n\t0x2f798: 0x6dcee020, 0x2f799: 0x6dcee220, 0x2f79a: 0x6dcee420, 0x2f79b: 0x6dcee620,\n\t0x2f79c: 0x6dcee820, 0x2f79d: 0x6dceea20, 0x2f79e: 0x6dceec20, 0x2f79f: 0x6dceee20,\n\t0x2f7a0: 0x6dcef020, 0x2f7a1: 0x6dcef220, 0x2f7a2: 0x6dcef420, 0x2f7a3: 0x6dcef620,\n\t0x2f7a4: 0x6dcef820, 0x2f7a5: 0x6dcefa20, 0x2f7a6: 0x6de91c20, 0x2f7a7: 0x6dcefc20,\n\t0x2f7a8: 0x6de91e20, 0x2f7a9: 0x6de92020, 0x2f7aa: 0x6de92220, 0x2f7ab: 0x6de92420,\n\t0x2f7ac: 0x6de92620, 0x2f7ad: 0x6de92820, 0x2f7ae: 0x6de92a20, 0x2f7af: 0x6de92c20,\n\t0x2f7b0: 0x6de92e20, 0x2f7b1: 0x6dcefe20, 0x2f7b2: 0x6de93020, 0x2f7b3: 0x6de93220,\n\t0x2f7b4: 0x6de93420, 0x2f7b5: 0x6de93620, 0x2f7b6: 0x6de93820, 0x2f7b7: 0x6de93a20,\n\t0x2f7b8: 0x6de93c20, 0x2f7b9: 0x6de93e20, 0x2f7ba: 0x6de94020, 0x2f7bb: 0x6dff4220,\n\t0x2f7bc: 0x6dff4420, 0x2f7bd: 0x6dff4620, 0x2f7be: 0x6dff4820, 0x2f7bf: 0x6dff4a20,\n\t// Block 0xbdf, offset 0x2f7c0\n\t0x2f7c0: 0x6dff4c20, 0x2f7c1: 0x6dff4e20, 0x2f7c2: 0x6dff5020, 0x2f7c3: 0x6dff5220,\n\t0x2f7c4: 0x6e11aa20, 0x2f7c5: 0x6e11ac20, 0x2f7c6: 0x6e11ae20, 0x2f7c7: 0x6e11b020,\n\t0x2f7c8: 0x6e11b220, 0x2f7c9: 0x6e11b420, 0x2f7ca: 0x6e11b620, 0x2f7cb: 0x6e11b820,\n\t0x2f7cc: 0x6e11ba20, 0x2f7cd: 0x6e11bc20, 0x2f7ce: 0x6e11be20, 0x2f7cf: 0x6e11c020,\n\t0x2f7d0: 0x6e11c220, 0x2f7d1: 0x6e200820, 0x2f7d2: 0x6e200a20, 0x2f7d3: 0x6e2b1620,\n\t0x2f7d4: 0x6e2b1820, 0x2f7d5: 0x6e2b1a20, 0x2f7d6: 0x6e2b1c20, 0x2f7d7: 0x6e339220,\n\t0x2f7d8: 0x6e399820, 0x2f7d9: 0x6e399a20, 0x2f7da: 0x6e399c20, 0x2f7db: 0x6e399e20,\n\t0x2f7dc: 0x6e40a620, 0x2f7dd: 0x6e40a820, 0x2f7de: 0x6e445a20, 0x2f7df: 0x6c020020,\n\t0x2f7e0: 0x6c0a4620, 0x2f7e1: 0x6c141a20, 0x2f7e2: 0x6c141c20, 0x2f7e3: 0x6c141e20,\n\t0x2f7e4: 0x6c142020, 0x2f7e5: 0x6c142220, 0x2f7e6: 0x6c142420, 0x2f7e7: 0x6c142620,\n\t0x2f7e8: 0x6c142820, 0x2f7e9: 0x6c142a20, 0x2f7ea: 0x6c142c20, 0x2f7eb: 0x6c142e20,\n\t0x2f7ec: 0x6c25a020, 0x2f7ed: 0x6c25a220, 0x2f7ee: 0x6c25a420, 0x2f7ef: 0x6c25a620,\n\t0x2f7f0: 0x6c25a820, 0x2f7f1: 0x6c25aa20, 0x2f7f2: 0x6c25ac20, 0x2f7f3: 0x6c25ae20,\n\t0x2f7f4: 0x6c25b020, 0x2f7f5: 0x6c25b220, 0x2f7f6: 0x6c259e20, 0x2f7f7: 0x6c25b420,\n\t0x2f7f8: 0x6c25b620, 0x2f7f9: 0x6c25b820, 0x2f7fa: 0x6c25ba20, 0x2f7fb: 0x6c25bc20,\n\t0x2f7fc: 0x6c25be20, 0x2f7fd: 0x6c25c020, 0x2f7fe: 0x6c25c220, 0x2f7ff: 0x6c3dd620,\n\t// Block 0xbe0, offset 0x2f800\n\t0x2f800: 0x6c3dd820, 0x2f801: 0x6c3dda20, 0x2f802: 0x6c3ddc20, 0x2f803: 0x6c3dde20,\n\t0x2f804: 0x6c3de020, 0x2f805: 0x6c3de220, 0x2f806: 0x6c3de420, 0x2f807: 0x6c3de620,\n\t0x2f808: 0x6c3de820, 0x2f809: 0x6c3dea20, 0x2f80a: 0x6c3dec20, 0x2f80b: 0x6c3dee20,\n\t0x2f80c: 0x6c3df020, 0x2f80d: 0x6c3df220, 0x2f80e: 0x6c3df420, 0x2f80f: 0x6c3df620,\n\t0x2f810: 0x6c3df820, 0x2f811: 0x6c5c9a20, 0x2f812: 0x6c5c9c20, 0x2f813: 0x6c5c9e20,\n\t0x2f814: 0x6c5ca020, 0x2f815: 0x6c5ca220, 0x2f816: 0x6c5ca420, 0x2f817: 0x6c5ca620,\n\t0x2f818: 0x6c5ca820, 0x2f819: 0x6c5caa20, 0x2f81a: 0x6c5cac20, 0x2f81b: 0x6c5cae20,\n\t0x2f81c: 0x6c5cb020, 0x2f81d: 0x6c5cb220, 0x2f81e: 0x6c5cb420, 0x2f81f: 0x6c5cb620,\n\t0x2f820: 0x6c809e20, 0x2f821: 0x6c80a020, 0x2f822: 0x6c80a220, 0x2f823: 0x6c80a420,\n\t0x2f824: 0x6c80a620, 0x2f825: 0x6c80a820, 0x2f826: 0x6c80aa20, 0x2f827: 0x6c80ac20,\n\t0x2f828: 0x6c80ae20, 0x2f829: 0x6ca9a220, 0x2f82a: 0x6ca9a420, 0x2f82b: 0x6ca9a620,\n\t0x2f82c: 0x6ca9a820, 0x2f82d: 0x6ca9aa20, 0x2f82e: 0x6ca9ac20, 0x2f82f: 0x6ca9ae20,\n\t0x2f830: 0x6ca9b020, 0x2f831: 0x6ca9b220, 0x2f832: 0x6ca9b420, 0x2f833: 0x6ca9b620,\n\t0x2f834: 0x6ca9b820, 0x2f835: 0x6ca9ba20, 0x2f836: 0x6ca9bc20, 0x2f837: 0x6ca9be20,\n\t0x2f838: 0x6ca9c020, 0x2f839: 0x6ca9c220, 0x2f83a: 0x6ca9c420, 0x2f83b: 0x6ca9c620,\n\t0x2f83c: 0x6ca9c820, 0x2f83d: 0x6ca9ca20, 0x2f83e: 0x6ca9cc20, 0x2f83f: 0x6ca9ce20,\n\t// Block 0xbe1, offset 0x2f840\n\t0x2f840: 0x6ca9d020, 0x2f841: 0x6ca9d220, 0x2f842: 0x6cd81220, 0x2f843: 0x6cd81420,\n\t0x2f844: 0x6cd81620, 0x2f845: 0x6cd81820, 0x2f846: 0x6cd81a20, 0x2f847: 0x6cd81c20,\n\t0x2f848: 0x6cd81e20, 0x2f849: 0x6cd82020, 0x2f84a: 0x6cd82220, 0x2f84b: 0x6cd82420,\n\t0x2f84c: 0x6cd82620, 0x2f84d: 0x6cd82820, 0x2f84e: 0x6cd82a20, 0x2f84f: 0x6cd82c20,\n\t0x2f850: 0x6cd82e20, 0x2f851: 0x6cd83020, 0x2f852: 0x6cd83220, 0x2f853: 0x6cd83420,\n\t0x2f854: 0x6cd83620, 0x2f855: 0x6cd83820, 0x2f856: 0x6cd83a20, 0x2f857: 0x6cd83c20,\n\t0x2f858: 0x6cd83e20, 0x2f859: 0x6d06ce20, 0x2f85a: 0x6d06d020, 0x2f85b: 0x6d06d220,\n\t0x2f85c: 0x6d06d420, 0x2f85d: 0x6d06d620, 0x2f85e: 0x6d06d820, 0x2f85f: 0x6d06da20,\n\t0x2f860: 0x6d06dc20, 0x2f861: 0x6d06de20, 0x2f862: 0x6d06e020, 0x2f863: 0x6d06e220,\n\t0x2f864: 0x6d06e420, 0x2f865: 0x6d34c820, 0x2f866: 0x6d34ca20, 0x2f867: 0x6d34cc20,\n\t0x2f868: 0x6d34ce20, 0x2f869: 0x6d34d020, 0x2f86a: 0x6d34d220, 0x2f86b: 0x6d34d420,\n\t0x2f86c: 0x6d618020, 0x2f86d: 0x6d618220, 0x2f86e: 0x6d618420, 0x2f86f: 0x6d618620,\n\t0x2f870: 0x6d8b9620, 0x2f871: 0x6d8b9820, 0x2f872: 0x6d8b9a20, 0x2f873: 0x6d8b9c20,\n\t0x2f874: 0x6d8b9e20, 0x2f875: 0x6de9a220, 0x2f876: 0x6c143020, 0x2f877: 0x6c3e0020,\n\t0x2f878: 0x6c5cc620, 0x2f879: 0x6c80c620, 0x2f87a: 0x6c80c820, 0x2f87b: 0x6ca9ee20,\n\t0x2f87c: 0x6c80ca20, 0x2f87d: 0x6ca9f020, 0x2f87e: 0x6cd85420, 0x2f87f: 0x6cd85620,\n\t// Block 0xbe2, offset 0x2f880\n\t0x2f880: 0x6cd85820, 0x2f881: 0x6d34e420, 0x2f882: 0x6d34e620, 0x2f883: 0x6d8ba820,\n\t0x2f884: 0x6daff420, 0x2f885: 0x6daff620, 0x2f886: 0x6daff820, 0x2f887: 0x6dcf7c20,\n\t0x2f888: 0x6dcf7e20, 0x2f889: 0x6dcf8020, 0x2f88a: 0x6de9a420, 0x2f88b: 0x6de9a620,\n\t0x2f88c: 0x6dff9020, 0x2f88d: 0x6e120220, 0x2f88e: 0x6e203a20, 0x2f88f: 0x6e203c20,\n\t0x2f890: 0x6e33a620, 0x2f891: 0x6c143420, 0x2f892: 0x6c0a4a20, 0x2f893: 0x6c050420,\n\t0x2f894: 0x6c3e0420, 0x2f895: 0x6c25dc20, 0x2f896: 0x6c3e0620, 0x2f897: 0x6c3e0820,\n\t0x2f898: 0x6c5cd620, 0x2f899: 0x6c3e2020, 0x2f89a: 0x6c5cd820, 0x2f89b: 0x6c80d820,\n\t0x2f89c: 0x6c80da20, 0x2f89d: 0x6c80dc20, 0x2f89e: 0x6c80de20, 0x2f89f: 0x6c80e020,\n\t0x2f8a0: 0x6c80e220, 0x2f8a1: 0x6c80e420, 0x2f8a2: 0x6c80e620, 0x2f8a3: 0x6caa0020,\n\t0x2f8a4: 0x6cd86820, 0x2f8a5: 0x6cd86a20, 0x2f8a6: 0x6cd86c20, 0x2f8a7: 0x6d070220,\n\t0x2f8a8: 0x6d070420, 0x2f8a9: 0x6d070620, 0x2f8aa: 0x6d070820, 0x2f8ab: 0x6d070a20,\n\t0x2f8ac: 0x6d070c20, 0x2f8ad: 0x6d070e20, 0x2f8ae: 0x6d071020, 0x2f8af: 0x6d350020,\n\t0x2f8b0: 0x6d350220, 0x2f8b1: 0x6d350420, 0x2f8b2: 0x6d071220, 0x2f8b3: 0x6d350620,\n\t0x2f8b4: 0x6d350820, 0x2f8b5: 0x6d61a420, 0x2f8b6: 0x6d61a620, 0x2f8b7: 0x6d61a820,\n\t0x2f8b8: 0x6d61aa20, 0x2f8b9: 0x6d8bbe20, 0x2f8ba: 0x6d8bc020, 0x2f8bb: 0x6d8bc220,\n\t0x2f8bc: 0x6d8bc420, 0x2f8bd: 0x6db00820, 0x2f8be: 0x6db00a20, 0x2f8bf: 0x6db00c20,\n\t// Block 0xbe3, offset 0x2f8c0\n\t0x2f8c0: 0x6dcf8a20, 0x2f8c1: 0x6db00e20, 0x2f8c2: 0x6dcf8e20, 0x2f8c3: 0x6de9b620,\n\t0x2f8c4: 0x6de9b820, 0x2f8c5: 0x6de9ba20, 0x2f8c6: 0x6de9bc20, 0x2f8c7: 0x6e204020,\n\t0x2f8c8: 0x6e33b020, 0x2f8c9: 0x6e33b220, 0x2f8ca: 0x6c143a20, 0x2f8cb: 0x6c3e2220,\n\t0x2f8cc: 0x6c3e2420, 0x2f8cd: 0x6c5cf620, 0x2f8ce: 0x6c5cf820, 0x2f8cf: 0x6c5cfa20,\n\t0x2f8d0: 0x6c812220, 0x2f8d1: 0x6c5cfc20, 0x2f8d2: 0x6c812a20, 0x2f8d3: 0x6c812c20,\n\t0x2f8d4: 0x6c812e20, 0x2f8d5: 0x6caa3220, 0x2f8d6: 0x6c813020, 0x2f8d7: 0x6c813220,\n\t0x2f8d8: 0x6c813420, 0x2f8d9: 0x6c813620, 0x2f8da: 0x6caa3420, 0x2f8db: 0x6caa3620,\n\t0x2f8dc: 0x6caa3820, 0x2f8dd: 0x6caa3a20, 0x2f8de: 0x6caa3c20, 0x2f8df: 0x6caa3e20,\n\t0x2f8e0: 0x6cd88820, 0x2f8e1: 0x6cd88a20, 0x2f8e2: 0x6cd88c20, 0x2f8e3: 0x6d074820,\n\t0x2f8e4: 0x6d074a20, 0x2f8e5: 0x6d074c20, 0x2f8e6: 0x6d074e20, 0x2f8e7: 0x6d075020,\n\t0x2f8e8: 0x6d075220, 0x2f8e9: 0x6d075420, 0x2f8ea: 0x6d075620, 0x2f8eb: 0x6d353820,\n\t0x2f8ec: 0x6d61cc20, 0x2f8ed: 0x6d61ce20, 0x2f8ee: 0x6d61d020, 0x2f8ef: 0x6d61d220,\n\t0x2f8f0: 0x6d61d420, 0x2f8f1: 0x6d8bf620, 0x2f8f2: 0x6d8bf820, 0x2f8f3: 0x6dcfac20,\n\t0x2f8f4: 0x6dcfae20, 0x2f8f5: 0x6dcfb020, 0x2f8f6: 0x6de9d620, 0x2f8f7: 0x6de9d820,\n\t0x2f8f8: 0x6de9da20, 0x2f8f9: 0x6de9dc20, 0x2f8fa: 0x6dffa220, 0x2f8fb: 0x6e121020,\n\t0x2f8fc: 0x6e121220, 0x2f8fd: 0x6c144220, 0x2f8fe: 0x6c5d0c20, 0x2f8ff: 0x6c5d0e20,\n\t// Block 0xbe4, offset 0x2f900\n\t0x2f900: 0x6c815a20, 0x2f901: 0x6c815c20, 0x2f902: 0x6c815e20, 0x2f903: 0x6c816020,\n\t0x2f904: 0x6c816220, 0x2f905: 0x6c816420, 0x2f906: 0x6c816620, 0x2f907: 0x6caa7c20,\n\t0x2f908: 0x6caa7e20, 0x2f909: 0x6caa8020, 0x2f90a: 0x6caa8220, 0x2f90b: 0x6caa8420,\n\t0x2f90c: 0x6caa8620, 0x2f90d: 0x6caa8820, 0x2f90e: 0x6caa8a20, 0x2f90f: 0x6caa8c20,\n\t0x2f910: 0x6caa8e20, 0x2f911: 0x6caa9020, 0x2f912: 0x6caa9220, 0x2f913: 0x6cd8b220,\n\t0x2f914: 0x6cd8b420, 0x2f915: 0x6cd8b620, 0x2f916: 0x6cd8b820, 0x2f917: 0x6cd8ba20,\n\t0x2f918: 0x6cd8bc20, 0x2f919: 0x6cd8be20, 0x2f91a: 0x6cd8c020, 0x2f91b: 0x6d078420,\n\t0x2f91c: 0x6d078620, 0x2f91d: 0x6d078820, 0x2f91e: 0x6d355a20, 0x2f91f: 0x6d355c20,\n\t0x2f920: 0x6d355e20, 0x2f921: 0x6d356020, 0x2f922: 0x6d356220, 0x2f923: 0x6d356420,\n\t0x2f924: 0x6d356620, 0x2f925: 0x6d358c20, 0x2f926: 0x6d61f620, 0x2f927: 0x6d61f820,\n\t0x2f928: 0x6d61fa20, 0x2f929: 0x6d61fc20, 0x2f92a: 0x6d61fe20, 0x2f92b: 0x6d620020,\n\t0x2f92c: 0x6d620220, 0x2f92d: 0x6d620420, 0x2f92e: 0x6d8c1020, 0x2f92f: 0x6d8c1220,\n\t0x2f930: 0x6d8c1420, 0x2f931: 0x6d8c1620, 0x2f932: 0x6db05020, 0x2f933: 0x6db05220,\n\t0x2f934: 0x6db05420, 0x2f935: 0x6db05620, 0x2f936: 0x6db05820, 0x2f937: 0x6dcfde20,\n\t0x2f938: 0x6dcfe020, 0x2f939: 0x6dcfe220, 0x2f93a: 0x6dcfe420, 0x2f93b: 0x6dcfe620,\n\t0x2f93c: 0x6db05a20, 0x2f93d: 0x6de9ec20, 0x2f93e: 0x6de9ee20, 0x2f93f: 0x6dffb420,\n\t// Block 0xbe5, offset 0x2f940\n\t0x2f940: 0x6dffb620, 0x2f941: 0x6c144420, 0x2f942: 0x6c050620, 0x2f943: 0x6c144620,\n\t0x2f944: 0x6c819020, 0x2f945: 0x6c3e3620, 0x2f946: 0x6c819220, 0x2f947: 0x6c5d3820,\n\t0x2f948: 0x6caab220, 0x2f949: 0x6caab420, 0x2f94a: 0x6c81a420, 0x2f94b: 0x6cd8f820,\n\t0x2f94c: 0x6c144820, 0x2f94d: 0x6c5d3e20, 0x2f94e: 0x6c5d4020, 0x2f94f: 0x6c5d4220,\n\t0x2f950: 0x6c5d4420, 0x2f951: 0x6c5d4620, 0x2f952: 0x6c144c20, 0x2f953: 0x6c3e3e20,\n\t0x2f954: 0x6c5d4a20, 0x2f955: 0x6c81aa20, 0x2f956: 0x6c81ac20, 0x2f957: 0x6c81ae20,\n\t0x2f958: 0x6c81b020, 0x2f959: 0x6c81b220, 0x2f95a: 0x6caabc20, 0x2f95b: 0x6caabe20,\n\t0x2f95c: 0x6caac020, 0x2f95d: 0x6caac220, 0x2f95e: 0x6caac420, 0x2f95f: 0x6caac620,\n\t0x2f960: 0x6cd8fe20, 0x2f961: 0x6d07b420, 0x2f962: 0x6d07b620, 0x2f963: 0x6d359e20,\n\t0x2f964: 0x6d35a020, 0x2f965: 0x6d35a220, 0x2f966: 0x6d625020, 0x2f967: 0x6d625220,\n\t0x2f968: 0x6d8c4a20, 0x2f969: 0x6d8c4c20, 0x2f96a: 0x6d8c4e20, 0x2f96b: 0x6db08420,\n\t0x2f96c: 0x6db08620, 0x2f96d: 0x6dd01220, 0x2f96e: 0x6dd01420, 0x2f96f: 0x6dffc420,\n\t0x2f970: 0x6e122e20, 0x2f971: 0x6e205820, 0x2f972: 0x6e205a20, 0x2f973: 0x6c145020,\n\t0x2f974: 0x6c25e620, 0x2f975: 0x6c3e4620, 0x2f976: 0x6c5d5220, 0x2f977: 0x6c5d5420,\n\t0x2f978: 0x6c81ba20, 0x2f979: 0x6c81bc20, 0x2f97a: 0x6c81be20, 0x2f97b: 0x6c81c020,\n\t0x2f97c: 0x6c81c220, 0x2f97d: 0x6c81c420, 0x2f97e: 0x6c81c620, 0x2f97f: 0x6c81c820,\n\t// Block 0xbe6, offset 0x2f980\n\t0x2f980: 0x6c81ca20, 0x2f981: 0x6c81cc20, 0x2f982: 0x6c81ce20, 0x2f983: 0x6caad420,\n\t0x2f984: 0x6caad620, 0x2f985: 0x6caad820, 0x2f986: 0x6caada20, 0x2f987: 0x6caadc20,\n\t0x2f988: 0x6caade20, 0x2f989: 0x6caae020, 0x2f98a: 0x6caae220, 0x2f98b: 0x6caae420,\n\t0x2f98c: 0x6caae620, 0x2f98d: 0x6caae820, 0x2f98e: 0x6cd91020, 0x2f98f: 0x6cd91220,\n\t0x2f990: 0x6cd91420, 0x2f991: 0x6cd91620, 0x2f992: 0x6cd91820, 0x2f993: 0x6cd91a20,\n\t0x2f994: 0x6cd91c20, 0x2f995: 0x6d07c420, 0x2f996: 0x6d07c620, 0x2f997: 0x6d07c820,\n\t0x2f998: 0x6d07ca20, 0x2f999: 0x6d35c420, 0x2f99a: 0x6d35c620, 0x2f99b: 0x6d35c820,\n\t0x2f99c: 0x6d35ca20, 0x2f99d: 0x6d35cc20, 0x2f99e: 0x6d35ce20, 0x2f99f: 0x6d35d020,\n\t0x2f9a0: 0x6cd91e20, 0x2f9a1: 0x6d35d220, 0x2f9a2: 0x6d35d420, 0x2f9a3: 0x6d35d620,\n\t0x2f9a4: 0x6d626c20, 0x2f9a5: 0x6d626e20, 0x2f9a6: 0x6d627020, 0x2f9a7: 0x6d627220,\n\t0x2f9a8: 0x6d627420, 0x2f9a9: 0x6d627620, 0x2f9aa: 0x6d627820, 0x2f9ab: 0x6d627a20,\n\t0x2f9ac: 0x6d8c6820, 0x2f9ad: 0x6d8c6a20, 0x2f9ae: 0x6d8c9a20, 0x2f9af: 0x6db0a020,\n\t0x2f9b0: 0x6db0a220, 0x2f9b1: 0x6db0a420, 0x2f9b2: 0x6db0a620, 0x2f9b3: 0x6db0a820,\n\t0x2f9b4: 0x6db0cc20, 0x2f9b5: 0x6dd02c20, 0x2f9b6: 0x6dd02e20, 0x2f9b7: 0x6dd03020,\n\t0x2f9b8: 0x6dea0220, 0x2f9b9: 0x6dffc820, 0x2f9ba: 0x6dffca20, 0x2f9bb: 0x6dffcc20,\n\t0x2f9bc: 0x6dffce20, 0x2f9bd: 0x6e205e20, 0x2f9be: 0x6e206020, 0x2f9bf: 0x6c145220,\n\t// Block 0xbe7, offset 0x2f9c0\n\t0x2f9c0: 0x6c050820, 0x2f9c1: 0x6c81fa20, 0x2f9c2: 0x6c81fc20, 0x2f9c3: 0x6c3e5e20,\n\t0x2f9c4: 0x6d07fe20, 0x2f9c5: 0x6d080020, 0x2f9c6: 0x6d080220, 0x2f9c7: 0x6d360e20,\n\t0x2f9c8: 0x6d361020, 0x2f9c9: 0x6c145620, 0x2f9ca: 0x6c0a5420, 0x2f9cb: 0x6c145c20,\n\t0x2f9cc: 0x6c145e20, 0x2f9cd: 0x6c146020, 0x2f9ce: 0x6c146220, 0x2f9cf: 0x6c3e6020,\n\t0x2f9d0: 0x6c25ee20, 0x2f9d1: 0x6c25f020, 0x2f9d2: 0x6c25f220, 0x2f9d3: 0x6c25f420,\n\t0x2f9d4: 0x6c25f620, 0x2f9d5: 0x6c25f820, 0x2f9d6: 0x6c25fa20, 0x2f9d7: 0x6c25fc20,\n\t0x2f9d8: 0x6c25fe20, 0x2f9d9: 0x6c260020, 0x2f9da: 0x6c260220, 0x2f9db: 0x6c260420,\n\t0x2f9dc: 0x6c260620, 0x2f9dd: 0x6c260820, 0x2f9de: 0x6c260a20, 0x2f9df: 0x6c260c20,\n\t0x2f9e0: 0x6c260e20, 0x2f9e1: 0x6c3e7c20, 0x2f9e2: 0x6c3e7e20, 0x2f9e3: 0x6c3e8020,\n\t0x2f9e4: 0x6c3e8220, 0x2f9e5: 0x6c3e8420, 0x2f9e6: 0x6c3e8620, 0x2f9e7: 0x6c3e8820,\n\t0x2f9e8: 0x6c3e8a20, 0x2f9e9: 0x6c3e8c20, 0x2f9ea: 0x6c3e8e20, 0x2f9eb: 0x6c3e9020,\n\t0x2f9ec: 0x6c3e9220, 0x2f9ed: 0x6c3e9420, 0x2f9ee: 0x6c3e9620, 0x2f9ef: 0x6c3e9820,\n\t0x2f9f0: 0x6c3e9a20, 0x2f9f1: 0x6c3e9c20, 0x2f9f2: 0x6c3e9e20, 0x2f9f3: 0x6c3ea020,\n\t0x2f9f4: 0x6c3ea220, 0x2f9f5: 0x6c3ea420, 0x2f9f6: 0x6c3ea620, 0x2f9f7: 0x6c3ea820,\n\t0x2f9f8: 0x6c3eaa20, 0x2f9f9: 0x6c3eac20, 0x2f9fa: 0x6c3eae20, 0x2f9fb: 0x6c3eb020,\n\t0x2f9fc: 0x6c3eb220, 0x2f9fd: 0x6c3eb420, 0x2f9fe: 0x6c3eb620, 0x2f9ff: 0x6c3eb820,\n\t// Block 0xbe8, offset 0x2fa00\n\t0x2fa00: 0x6c3eba20, 0x2fa01: 0x6c3ebc20, 0x2fa02: 0x6c5d7220, 0x2fa03: 0x6c5d7420,\n\t0x2fa04: 0x6c5d7620, 0x2fa05: 0x6c5d7820, 0x2fa06: 0x6c5d7a20, 0x2fa07: 0x6c5d7c20,\n\t0x2fa08: 0x6c5d7e20, 0x2fa09: 0x6c5d8020, 0x2fa0a: 0x6c5d8220, 0x2fa0b: 0x6c5d8420,\n\t0x2fa0c: 0x6c5d8620, 0x2fa0d: 0x6c5d8820, 0x2fa0e: 0x6c5d8a20, 0x2fa0f: 0x6c5d8c20,\n\t0x2fa10: 0x6c5d8e20, 0x2fa11: 0x6c5d9020, 0x2fa12: 0x6c5d9220, 0x2fa13: 0x6c5d9420,\n\t0x2fa14: 0x6cd95220, 0x2fa15: 0x6c5d9620, 0x2fa16: 0x6c5d9820, 0x2fa17: 0x6c5d9a20,\n\t0x2fa18: 0x6c5d9c20, 0x2fa19: 0x6c5d9e20, 0x2fa1a: 0x6c5da020, 0x2fa1b: 0x6c5da220,\n\t0x2fa1c: 0x6c5da420, 0x2fa1d: 0x6c5da620, 0x2fa1e: 0x6c5da820, 0x2fa1f: 0x6c5daa20,\n\t0x2fa20: 0x6c5dac20, 0x2fa21: 0x6c5dae20, 0x2fa22: 0x6c5db020, 0x2fa23: 0x6c5db220,\n\t0x2fa24: 0x6c5db420, 0x2fa25: 0x6c5db620, 0x2fa26: 0x6c5db820, 0x2fa27: 0x6c5dba20,\n\t0x2fa28: 0x6c5dbc20, 0x2fa29: 0x6c5dbe20, 0x2fa2a: 0x6c5dc020, 0x2fa2b: 0x6c5dc220,\n\t0x2fa2c: 0x6cab1020, 0x2fa2d: 0x6c821220, 0x2fa2e: 0x6c821420, 0x2fa2f: 0x6c821620,\n\t0x2fa30: 0x6c821820, 0x2fa31: 0x6c821a20, 0x2fa32: 0x6c821c20, 0x2fa33: 0x6c821e20,\n\t0x2fa34: 0x6c822020, 0x2fa35: 0x6c822220, 0x2fa36: 0x6c822420, 0x2fa37: 0x6c822620,\n\t0x2fa38: 0x6c822820, 0x2fa39: 0x6c822a20, 0x2fa3a: 0x6c822c20, 0x2fa3b: 0x6c822e20,\n\t0x2fa3c: 0x6c823020, 0x2fa3d: 0x6c823220, 0x2fa3e: 0x6cd95420, 0x2fa3f: 0x6c823420,\n\t// Block 0xbe9, offset 0x2fa40\n\t0x2fa40: 0x6c823620, 0x2fa41: 0x6c823820, 0x2fa42: 0x6c823a20, 0x2fa43: 0x6c823c20,\n\t0x2fa44: 0x6c823e20, 0x2fa45: 0x6c824020, 0x2fa46: 0x6c824220, 0x2fa47: 0x6c824420,\n\t0x2fa48: 0x6c824620, 0x2fa49: 0x6c5dc420, 0x2fa4a: 0x6c824820, 0x2fa4b: 0x6c824a20,\n\t0x2fa4c: 0x6c824c20, 0x2fa4d: 0x6c824e20, 0x2fa4e: 0x6c825020, 0x2fa4f: 0x6c825220,\n\t0x2fa50: 0x6c825420, 0x2fa51: 0x6c825620, 0x2fa52: 0x6c825820, 0x2fa53: 0x6c825a20,\n\t0x2fa54: 0x6cd95620, 0x2fa55: 0x6cab2c20, 0x2fa56: 0x6cab2e20, 0x2fa57: 0x6cab3020,\n\t0x2fa58: 0x6cab3220, 0x2fa59: 0x6cab3420, 0x2fa5a: 0x6cab3620, 0x2fa5b: 0x6cab3820,\n\t0x2fa5c: 0x6cab3a20, 0x2fa5d: 0x6cab3c20, 0x2fa5e: 0x6cab3e20, 0x2fa5f: 0x6cab4020,\n\t0x2fa60: 0x6cd95820, 0x2fa61: 0x6cab4220, 0x2fa62: 0x6cab4420, 0x2fa63: 0x6cab4620,\n\t0x2fa64: 0x6cab4820, 0x2fa65: 0x6cab4a20, 0x2fa66: 0x6cab4c20, 0x2fa67: 0x6cab4e20,\n\t0x2fa68: 0x6cab5020, 0x2fa69: 0x6cab5220, 0x2fa6a: 0x6cab5420, 0x2fa6b: 0x6cab5620,\n\t0x2fa6c: 0x6cab5820, 0x2fa6d: 0x6cab5a20, 0x2fa6e: 0x6cab5c20, 0x2fa6f: 0x6cab5e20,\n\t0x2fa70: 0x6cab6020, 0x2fa71: 0x6cab6220, 0x2fa72: 0x6cab6420, 0x2fa73: 0x6cab6620,\n\t0x2fa74: 0x6cab6820, 0x2fa75: 0x6cab6a20, 0x2fa76: 0x6cab6c20, 0x2fa77: 0x6cab6e20,\n\t0x2fa78: 0x6cab7020, 0x2fa79: 0x6cd97e20, 0x2fa7a: 0x6cd98020, 0x2fa7b: 0x6cd98220,\n\t0x2fa7c: 0x6cd98420, 0x2fa7d: 0x6cd98620, 0x2fa7e: 0x6cd98820, 0x2fa7f: 0x6cd98a20,\n\t// Block 0xbea, offset 0x2fa80\n\t0x2fa80: 0x6cd98c20, 0x2fa81: 0x6cd98e20, 0x2fa82: 0x6cd99020, 0x2fa83: 0x6cd99220,\n\t0x2fa84: 0x6cd99420, 0x2fa85: 0x6cd99620, 0x2fa86: 0x6cd99820, 0x2fa87: 0x6cd99a20,\n\t0x2fa88: 0x6cd99c20, 0x2fa89: 0x6cd99e20, 0x2fa8a: 0x6cd9a020, 0x2fa8b: 0x6cd9a220,\n\t0x2fa8c: 0x6cd9a420, 0x2fa8d: 0x6cd9a620, 0x2fa8e: 0x6cd9a820, 0x2fa8f: 0x6cd9aa20,\n\t0x2fa90: 0x6d361a20, 0x2fa91: 0x6cd9ac20, 0x2fa92: 0x6cd9ae20, 0x2fa93: 0x6cd9b020,\n\t0x2fa94: 0x6cd9b220, 0x2fa95: 0x6cd9b420, 0x2fa96: 0x6cd9b620, 0x2fa97: 0x6cd9b820,\n\t0x2fa98: 0x6cd9ba20, 0x2fa99: 0x6cd9bc20, 0x2fa9a: 0x6cd9be20, 0x2fa9b: 0x6d082a20,\n\t0x2fa9c: 0x6d082c20, 0x2fa9d: 0x6d082e20, 0x2fa9e: 0x6d083020, 0x2fa9f: 0x6d083220,\n\t0x2faa0: 0x6d083420, 0x2faa1: 0x6d083620, 0x2faa2: 0x6d083820, 0x2faa3: 0x6d083a20,\n\t0x2faa4: 0x6d083c20, 0x2faa5: 0x6d083e20, 0x2faa6: 0x6d084020, 0x2faa7: 0x6d084220,\n\t0x2faa8: 0x6d084420, 0x2faa9: 0x6d084620, 0x2faaa: 0x6d084820, 0x2faab: 0x6d084a20,\n\t0x2faac: 0x6d084c20, 0x2faad: 0x6d084e20, 0x2faae: 0x6d085020, 0x2faaf: 0x6d085220,\n\t0x2fab0: 0x6d085420, 0x2fab1: 0x6d085620, 0x2fab2: 0x6d085820, 0x2fab3: 0x6d085a20,\n\t0x2fab4: 0x6cda6e20, 0x2fab5: 0x6d085c20, 0x2fab6: 0x6d085e20, 0x2fab7: 0x6d086020,\n\t0x2fab8: 0x6d086220, 0x2fab9: 0x6d086420, 0x2faba: 0x6d086620, 0x2fabb: 0x6d086820,\n\t0x2fabc: 0x6d086a20, 0x2fabd: 0x6d086c20, 0x2fabe: 0x6d086e20, 0x2fabf: 0x6d363820,\n\t// Block 0xbeb, offset 0x2fac0\n\t0x2fac0: 0x6d363a20, 0x2fac1: 0x6d363c20, 0x2fac2: 0x6d363e20, 0x2fac3: 0x6d364020,\n\t0x2fac4: 0x6d364220, 0x2fac5: 0x6d364420, 0x2fac6: 0x6d364620, 0x2fac7: 0x6d364820,\n\t0x2fac8: 0x6d364a20, 0x2fac9: 0x6d364c20, 0x2faca: 0x6d364e20, 0x2facb: 0x6d365020,\n\t0x2facc: 0x6d365220, 0x2facd: 0x6d365420, 0x2face: 0x6d365620, 0x2facf: 0x6d365820,\n\t0x2fad0: 0x6d8ca020, 0x2fad1: 0x6d365a20, 0x2fad2: 0x6d62d020, 0x2fad3: 0x6d62d220,\n\t0x2fad4: 0x6d62d420, 0x2fad5: 0x6d62d620, 0x2fad6: 0x6d62d820, 0x2fad7: 0x6d62da20,\n\t0x2fad8: 0x6d62dc20, 0x2fad9: 0x6d62de20, 0x2fada: 0x6d62e020, 0x2fadb: 0x6d62e220,\n\t0x2fadc: 0x6d62e420, 0x2fadd: 0x6d62e620, 0x2fade: 0x6d62e820, 0x2fadf: 0x6d62ea20,\n\t0x2fae0: 0x6d62ec20, 0x2fae1: 0x6d62ee20, 0x2fae2: 0x6d62f020, 0x2fae3: 0x6d62f220,\n\t0x2fae4: 0x6d538620, 0x2fae5: 0x6db0d420, 0x2fae6: 0x6d8cb420, 0x2fae7: 0x6d8cb620,\n\t0x2fae8: 0x6d8cb820, 0x2fae9: 0x6d8cba20, 0x2faea: 0x6d8cbc20, 0x2faeb: 0x6d8cbe20,\n\t0x2faec: 0x6d8cc020, 0x2faed: 0x6d8cc220, 0x2faee: 0x6d8cc420, 0x2faef: 0x6d8cc620,\n\t0x2faf0: 0x6d8cc820, 0x2faf1: 0x6d8cca20, 0x2faf2: 0x6d8ccc20, 0x2faf3: 0x6d8cce20,\n\t0x2faf4: 0x6d8cd020, 0x2faf5: 0x6d8cd220, 0x2faf6: 0x6d8cd420, 0x2faf7: 0x6d8d5820,\n\t0x2faf8: 0x6db0de20, 0x2faf9: 0x6d8d5a20, 0x2fafa: 0x6db0e020, 0x2fafb: 0x6db0e220,\n\t0x2fafc: 0x6db0e420, 0x2fafd: 0x6db0e620, 0x2fafe: 0x6db0e820, 0x2faff: 0x6db0ea20,\n\t// Block 0xbec, offset 0x2fb00\n\t0x2fb00: 0x6db0ec20, 0x2fb01: 0x6db0ee20, 0x2fb02: 0x6db0f020, 0x2fb03: 0x6db0f220,\n\t0x2fb04: 0x6db0f420, 0x2fb05: 0x6db0f620, 0x2fb06: 0x6db0f820, 0x2fb07: 0x6db0fa20,\n\t0x2fb08: 0x6db0fc20, 0x2fb09: 0x6db0fe20, 0x2fb0a: 0x6db10020, 0x2fb0b: 0x6dea1e20,\n\t0x2fb0c: 0x6db10220, 0x2fb0d: 0x6dd06620, 0x2fb0e: 0x6dd06820, 0x2fb0f: 0x6dd06a20,\n\t0x2fb10: 0x6dd06c20, 0x2fb11: 0x6dd06e20, 0x2fb12: 0x6dd07020, 0x2fb13: 0x6dd07220,\n\t0x2fb14: 0x6dea2620, 0x2fb15: 0x6dea2820, 0x2fb16: 0x6dffe420, 0x2fb17: 0x6dea2a20,\n\t0x2fb18: 0x6dea2c20, 0x2fb19: 0x6dffe620, 0x2fb1a: 0x6dffe820, 0x2fb1b: 0x6dffea20,\n\t0x2fb1c: 0x6dffec20, 0x2fb1d: 0x6e124820, 0x2fb1e: 0x6e206a20, 0x2fb1f: 0x6e206c20,\n\t0x2fb20: 0x6e39ae20, 0x2fb21: 0x6e39b020, 0x2fb22: 0x6e2b4820, 0x2fb23: 0x6c147a20,\n\t0x2fb24: 0x6c3f1a20, 0x2fb25: 0x6c3f1c20, 0x2fb26: 0x6cda7020, 0x2fb27: 0x6d36e420,\n\t0x2fb28: 0x6db16420, 0x2fb29: 0x6db16620, 0x2fb2a: 0x6c147e20, 0x2fb2b: 0x6c262820,\n\t0x2fb2c: 0x6c82dc20, 0x2fb2d: 0x6c82de20, 0x2fb2e: 0x6cda7c20, 0x2fb2f: 0x6cda7e20,\n\t0x2fb30: 0x6cda8020, 0x2fb31: 0x6d635a20, 0x2fb32: 0x6d8d5e20, 0x2fb33: 0x6c148220,\n\t0x2fb34: 0x6c5e4220, 0x2fb35: 0x6cda8c20, 0x2fb36: 0x6cda8e20, 0x2fb37: 0x6cda9020,\n\t0x2fb38: 0x6cda9220, 0x2fb39: 0x6cda9820, 0x2fb3a: 0x6d36f420, 0x2fb3b: 0x6d8d6620,\n\t0x2fb3c: 0x6c148820, 0x2fb3d: 0x6c3f2220, 0x2fb3e: 0x6c3f2420, 0x2fb3f: 0x6c5e4a20,\n\t// Block 0xbed, offset 0x2fb40\n\t0x2fb40: 0x6c82fc20, 0x2fb41: 0x6c82fe20, 0x2fb42: 0x6cabf420, 0x2fb43: 0x6cda9a20,\n\t0x2fb44: 0x6cda9c20, 0x2fb45: 0x6d090220, 0x2fb46: 0x6d8d7620, 0x2fb47: 0x6d370220,\n\t0x2fb48: 0x6d8d7220, 0x2fb49: 0x6d8d7820, 0x2fb4a: 0x6dd0c020, 0x2fb4b: 0x6dea7220,\n\t0x2fb4c: 0x6c149020, 0x2fb4d: 0x6c3f2c20, 0x2fb4e: 0x6c3f2e20, 0x2fb4f: 0x6c3f3020,\n\t0x2fb50: 0x6c831420, 0x2fb51: 0x6cac0620, 0x2fb52: 0x6cdaac20, 0x2fb53: 0x6d371820,\n\t0x2fb54: 0x6d371a20, 0x2fb55: 0x6d371c20, 0x2fb56: 0x6d638820, 0x2fb57: 0x6d638a20,\n\t0x2fb58: 0x6d8d8a20, 0x2fb59: 0x6dd0d220, 0x2fb5a: 0x6dea8020, 0x2fb5b: 0x6c149220,\n\t0x2fb5c: 0x6cdabe20, 0x2fb5d: 0x6d091c20, 0x2fb5e: 0x6d373020, 0x2fb5f: 0x6c149420,\n\t0x2fb60: 0x6c3f3620, 0x2fb61: 0x6c5e6020, 0x2fb62: 0x6c5e6220, 0x2fb63: 0x6c5e6420,\n\t0x2fb64: 0x6c5e6620, 0x2fb65: 0x6c832c20, 0x2fb66: 0x6c832e20, 0x2fb67: 0x6c833020,\n\t0x2fb68: 0x6c833220, 0x2fb69: 0x6c833420, 0x2fb6a: 0x6c833620, 0x2fb6b: 0x6c833820,\n\t0x2fb6c: 0x6c833a20, 0x2fb6d: 0x6c833c20, 0x2fb6e: 0x6c833e20, 0x2fb6f: 0x6c834020,\n\t0x2fb70: 0x6c834220, 0x2fb71: 0x6c834420, 0x2fb72: 0x6cac1820, 0x2fb73: 0x6cac1a20,\n\t0x2fb74: 0x6cac1c20, 0x2fb75: 0x6cac1e20, 0x2fb76: 0x6cac2020, 0x2fb77: 0x6cac2220,\n\t0x2fb78: 0x6cac2420, 0x2fb79: 0x6cac2620, 0x2fb7a: 0x6cac2820, 0x2fb7b: 0x6cac2a20,\n\t0x2fb7c: 0x6cdaca20, 0x2fb7d: 0x6cdacc20, 0x2fb7e: 0x6cdace20, 0x2fb7f: 0x6cdad020,\n\t// Block 0xbee, offset 0x2fb80\n\t0x2fb80: 0x6d092220, 0x2fb81: 0x6d092420, 0x2fb82: 0x6d092620, 0x2fb83: 0x6d092820,\n\t0x2fb84: 0x6d092a20, 0x2fb85: 0x6d092c20, 0x2fb86: 0x6d092e20, 0x2fb87: 0x6d093020,\n\t0x2fb88: 0x6d093220, 0x2fb89: 0x6d093420, 0x2fb8a: 0x6d374220, 0x2fb8b: 0x6d374420,\n\t0x2fb8c: 0x6d374620, 0x2fb8d: 0x6d374820, 0x2fb8e: 0x6d63a220, 0x2fb8f: 0x6d63a420,\n\t0x2fb90: 0x6d63a620, 0x2fb91: 0x6d63a820, 0x2fb92: 0x6d63aa20, 0x2fb93: 0x6d63ac20,\n\t0x2fb94: 0x6d63ae20, 0x2fb95: 0x6d8d9e20, 0x2fb96: 0x6d8da020, 0x2fb97: 0x6d8da220,\n\t0x2fb98: 0x6d8da420, 0x2fb99: 0x6d8da620, 0x2fb9a: 0x6db19c20, 0x2fb9b: 0x6db19e20,\n\t0x2fb9c: 0x6db1a020, 0x2fb9d: 0x6db1a220, 0x2fb9e: 0x6dd0e220, 0x2fb9f: 0x6dd0e420,\n\t0x2fba0: 0x6dd0e620, 0x2fba1: 0x6dea8620, 0x2fba2: 0x6dea8820, 0x2fba3: 0x6dea8a20,\n\t0x2fba4: 0x6dea8c20, 0x2fba5: 0x6dea8e20, 0x2fba6: 0x6e003620, 0x2fba7: 0x6e003820,\n\t0x2fba8: 0x6e003a20, 0x2fba9: 0x6e003c20, 0x2fbaa: 0x6e126c20, 0x2fbab: 0x6e208820,\n\t0x2fbac: 0x6e2b6e20, 0x2fbad: 0x6e33e220, 0x2fbae: 0x6c149820, 0x2fbaf: 0x6c263620,\n\t0x2fbb0: 0x6c3f4420, 0x2fbb1: 0x6db1bc20, 0x2fbb2: 0x6c149a20, 0x2fbb3: 0x6c835e20,\n\t0x2fbb4: 0x6cac4e20, 0x2fbb5: 0x6cdaf020, 0x2fbb6: 0x6deaa220, 0x2fbb7: 0x6e33e420,\n\t0x2fbb8: 0x6c149e20, 0x2fbb9: 0x6c020420, 0x2fbba: 0x6c0a5620, 0x2fbbb: 0x6c14a020,\n\t0x2fbbc: 0x6c14a220, 0x2fbbd: 0x6c14a420, 0x2fbbe: 0x6c14a620, 0x2fbbf: 0x6c14a820,\n\t// Block 0xbef, offset 0x2fbc0\n\t0x2fbc0: 0x6c14aa20, 0x2fbc1: 0x6c14ac20, 0x2fbc2: 0x6c14ae20, 0x2fbc3: 0x6c263820,\n\t0x2fbc4: 0x6c263a20, 0x2fbc5: 0x6c263c20, 0x2fbc6: 0x6c263e20, 0x2fbc7: 0x6c264020,\n\t0x2fbc8: 0x6c264220, 0x2fbc9: 0x6c264420, 0x2fbca: 0x6c264620, 0x2fbcb: 0x6c264820,\n\t0x2fbcc: 0x6c264a20, 0x2fbcd: 0x6c264c20, 0x2fbce: 0x6c264e20, 0x2fbcf: 0x6c265020,\n\t0x2fbd0: 0x6c265220, 0x2fbd1: 0x6c265420, 0x2fbd2: 0x6c265620, 0x2fbd3: 0x6c265820,\n\t0x2fbd4: 0x6c5e8820, 0x2fbd5: 0x6c265a20, 0x2fbd6: 0x6c265c20, 0x2fbd7: 0x6c265e20,\n\t0x2fbd8: 0x6c3f4c20, 0x2fbd9: 0x6c3f4e20, 0x2fbda: 0x6c3f5020, 0x2fbdb: 0x6c3f5220,\n\t0x2fbdc: 0x6c3f5420, 0x2fbdd: 0x6c3f5620, 0x2fbde: 0x6c3f5820, 0x2fbdf: 0x6c3f5a20,\n\t0x2fbe0: 0x6c3f5c20, 0x2fbe1: 0x6c3f5e20, 0x2fbe2: 0x6c3f6020, 0x2fbe3: 0x6c3f6220,\n\t0x2fbe4: 0x6c3f6420, 0x2fbe5: 0x6c3f6620, 0x2fbe6: 0x6c3f6820, 0x2fbe7: 0x6c3f6a20,\n\t0x2fbe8: 0x6c3f6c20, 0x2fbe9: 0x6c3f6e20, 0x2fbea: 0x6c3f7020, 0x2fbeb: 0x6c3f7220,\n\t0x2fbec: 0x6c3f7420, 0x2fbed: 0x6c3f7620, 0x2fbee: 0x6c3f7820, 0x2fbef: 0x6c3f7a20,\n\t0x2fbf0: 0x6c3f7c20, 0x2fbf1: 0x6c3f7e20, 0x2fbf2: 0x6c3f8020, 0x2fbf3: 0x6c3f8220,\n\t0x2fbf4: 0x6c3f8420, 0x2fbf5: 0x6c3f8620, 0x2fbf6: 0x6c3f8820, 0x2fbf7: 0x6c3f8a20,\n\t0x2fbf8: 0x6c3f8c20, 0x2fbf9: 0x6c3f8e20, 0x2fbfa: 0x6c3f9020, 0x2fbfb: 0x6c837820,\n\t0x2fbfc: 0x6c3f9220, 0x2fbfd: 0x6c3f9420, 0x2fbfe: 0x6c3f9620, 0x2fbff: 0x6c400c20,\n\t// Block 0xbf0, offset 0x2fc00\n\t0x2fc00: 0x6c3f9820, 0x2fc01: 0x6c3f9a20, 0x2fc02: 0x6c3f9c20, 0x2fc03: 0x6c3f9e20,\n\t0x2fc04: 0x6c3fa020, 0x2fc05: 0x6c3fa220, 0x2fc06: 0x6c3fa420, 0x2fc07: 0x6c3fa620,\n\t0x2fc08: 0x6c3fa820, 0x2fc09: 0x6c3faa20, 0x2fc0a: 0x6c3fac20, 0x2fc0b: 0x6c3fae20,\n\t0x2fc0c: 0x6c3fb020, 0x2fc0d: 0x6c3fb220, 0x2fc0e: 0x6c3fb420, 0x2fc0f: 0x6c3fb620,\n\t0x2fc10: 0x6c5e8a20, 0x2fc11: 0x6c5e8c20, 0x2fc12: 0x6c5e8e20, 0x2fc13: 0x6c5e9020,\n\t0x2fc14: 0x6c5e9220, 0x2fc15: 0x6c5e9420, 0x2fc16: 0x6c5e9620, 0x2fc17: 0x6c5e9820,\n\t0x2fc18: 0x6c5e9a20, 0x2fc19: 0x6c5e9c20, 0x2fc1a: 0x6c5e9e20, 0x2fc1b: 0x6c5ea020,\n\t0x2fc1c: 0x6c5ea220, 0x2fc1d: 0x6c5ea420, 0x2fc1e: 0x6c5ea620, 0x2fc1f: 0x6c5ea820,\n\t0x2fc20: 0x6c5eaa20, 0x2fc21: 0x6c5eac20, 0x2fc22: 0x6c5eae20, 0x2fc23: 0x6c5eb020,\n\t0x2fc24: 0x6c5eb220, 0x2fc25: 0x6c5eb420, 0x2fc26: 0x6c5eb620, 0x2fc27: 0x6c5eb820,\n\t0x2fc28: 0x6c5eba20, 0x2fc29: 0x6c5ebc20, 0x2fc2a: 0x6c5ebe20, 0x2fc2b: 0x6c5ec020,\n\t0x2fc2c: 0x6c5ec220, 0x2fc2d: 0x6c5ec420, 0x2fc2e: 0x6c5ec620, 0x2fc2f: 0x6c5ec820,\n\t0x2fc30: 0x6c5eca20, 0x2fc31: 0x6c5ecc20, 0x2fc32: 0x6c5ece20, 0x2fc33: 0x6c5ed020,\n\t0x2fc34: 0x6c5ed220, 0x2fc35: 0x6c5ed420, 0x2fc36: 0x6c5ed620, 0x2fc37: 0x6c5ed820,\n\t0x2fc38: 0x6c5eda20, 0x2fc39: 0x6c5edc20, 0x2fc3a: 0x6c5ede20, 0x2fc3b: 0x6c5ee020,\n\t0x2fc3c: 0x6c5ee220, 0x2fc3d: 0x6c5ee420, 0x2fc3e: 0x6c5ee620, 0x2fc3f: 0x6c5ee820,\n\t// Block 0xbf1, offset 0x2fc40\n\t0x2fc40: 0x6c5eea20, 0x2fc41: 0x6c5eec20, 0x2fc42: 0x6c5eee20, 0x2fc43: 0x6c5ef020,\n\t0x2fc44: 0x6c5ef220, 0x2fc45: 0x6c5ef420, 0x2fc46: 0x6c5ef620, 0x2fc47: 0x6c5ef820,\n\t0x2fc48: 0x6c837a20, 0x2fc49: 0x6c5efa20, 0x2fc4a: 0x6c5efc20, 0x2fc4b: 0x6c5efe20,\n\t0x2fc4c: 0x6c5f0020, 0x2fc4d: 0x6c5f0220, 0x2fc4e: 0x6c5f0420, 0x2fc4f: 0x6c5f0620,\n\t0x2fc50: 0x6c5f0820, 0x2fc51: 0x6c5f0a20, 0x2fc52: 0x6cdb1620, 0x2fc53: 0x6c5f0c20,\n\t0x2fc54: 0x6c5f0e20, 0x2fc55: 0x6c5f1020, 0x2fc56: 0x6c837c20, 0x2fc57: 0x6c837e20,\n\t0x2fc58: 0x6c838020, 0x2fc59: 0x6c838220, 0x2fc5a: 0x6c838420, 0x2fc5b: 0x6c838620,\n\t0x2fc5c: 0x6c838820, 0x2fc5d: 0x6cac7420, 0x2fc5e: 0x6c838a20, 0x2fc5f: 0x6c838c20,\n\t0x2fc60: 0x6c838e20, 0x2fc61: 0x6c839020, 0x2fc62: 0x6c839220, 0x2fc63: 0x6cac7620,\n\t0x2fc64: 0x6c839420, 0x2fc65: 0x6c839620, 0x2fc66: 0x6c839820, 0x2fc67: 0x6c839a20,\n\t0x2fc68: 0x6c839c20, 0x2fc69: 0x6c839e20, 0x2fc6a: 0x6c83a020, 0x2fc6b: 0x6c83a220,\n\t0x2fc6c: 0x6c83a420, 0x2fc6d: 0x6c83a620, 0x2fc6e: 0x6c83a820, 0x2fc6f: 0x6c83aa20,\n\t0x2fc70: 0x6c83ac20, 0x2fc71: 0x6c83ae20, 0x2fc72: 0x6c83b020, 0x2fc73: 0x6c83b220,\n\t0x2fc74: 0x6c83b420, 0x2fc75: 0x6c83b620, 0x2fc76: 0x6c83b820, 0x2fc77: 0x6c83ba20,\n\t0x2fc78: 0x6c83bc20, 0x2fc79: 0x6c83be20, 0x2fc7a: 0x6c5f9220, 0x2fc7b: 0x6cdb1820,\n\t0x2fc7c: 0x6c83c020, 0x2fc7d: 0x6c83c220, 0x2fc7e: 0x6c3fb820, 0x2fc7f: 0x6c83c420,\n\t// Block 0xbf2, offset 0x2fc80\n\t0x2fc80: 0x6c83c620, 0x2fc81: 0x6c83c820, 0x2fc82: 0x6c83ca20, 0x2fc83: 0x6c83cc20,\n\t0x2fc84: 0x6c83ce20, 0x2fc85: 0x6c83d020, 0x2fc86: 0x6cdb1a20, 0x2fc87: 0x6c83d220,\n\t0x2fc88: 0x6c83d420, 0x2fc89: 0x6c83d620, 0x2fc8a: 0x6c83d820, 0x2fc8b: 0x6c83da20,\n\t0x2fc8c: 0x6c83dc20, 0x2fc8d: 0x6c83de20, 0x2fc8e: 0x6c83e020, 0x2fc8f: 0x6c83e220,\n\t0x2fc90: 0x6c83e420, 0x2fc91: 0x6c83e620, 0x2fc92: 0x6c83e820, 0x2fc93: 0x6c84c420,\n\t0x2fc94: 0x6c83ea20, 0x2fc95: 0x6c83ec20, 0x2fc96: 0x6c83ee20, 0x2fc97: 0x6c83f020,\n\t0x2fc98: 0x6c83f220, 0x2fc99: 0x6cac7020, 0x2fc9a: 0x6c83f420, 0x2fc9b: 0x6c83f620,\n\t0x2fc9c: 0x6c83f820, 0x2fc9d: 0x6c83fa20, 0x2fc9e: 0x6c83fc20, 0x2fc9f: 0x6c83fe20,\n\t0x2fca0: 0x6c840020, 0x2fca1: 0x6c840220, 0x2fca2: 0x6c840420, 0x2fca3: 0x6c840620,\n\t0x2fca4: 0x6c840820, 0x2fca5: 0x6c840a20, 0x2fca6: 0x6c840c20, 0x2fca7: 0x6c840e20,\n\t0x2fca8: 0x6c841020, 0x2fca9: 0x6c841220, 0x2fcaa: 0x6c841420, 0x2fcab: 0x6cac7220,\n\t0x2fcac: 0x6c841620, 0x2fcad: 0x6c841820, 0x2fcae: 0x6c841a20, 0x2fcaf: 0x6c841c20,\n\t0x2fcb0: 0x6cac7820, 0x2fcb1: 0x6cac7a20, 0x2fcb2: 0x6cac7c20, 0x2fcb3: 0x6cac7e20,\n\t0x2fcb4: 0x6cac8020, 0x2fcb5: 0x6cac8220, 0x2fcb6: 0x6cac8420, 0x2fcb7: 0x6cac8620,\n\t0x2fcb8: 0x6cac8820, 0x2fcb9: 0x6cac8a20, 0x2fcba: 0x6cac8c20, 0x2fcbb: 0x6cac8e20,\n\t0x2fcbc: 0x6cac9020, 0x2fcbd: 0x6cac9220, 0x2fcbe: 0x6cac9420, 0x2fcbf: 0x6cac9620,\n\t// Block 0xbf3, offset 0x2fcc0\n\t0x2fcc0: 0x6cac9820, 0x2fcc1: 0x6cac9a20, 0x2fcc2: 0x6cac9c20, 0x2fcc3: 0x6cac9e20,\n\t0x2fcc4: 0x6caca020, 0x2fcc5: 0x6caca220, 0x2fcc6: 0x6caca420, 0x2fcc7: 0x6caca620,\n\t0x2fcc8: 0x6caca820, 0x2fcc9: 0x6cacaa20, 0x2fcca: 0x6cacac20, 0x2fccb: 0x6cacae20,\n\t0x2fccc: 0x6cacb020, 0x2fccd: 0x6cacb220, 0x2fcce: 0x6cacb420, 0x2fccf: 0x6cacb620,\n\t0x2fcd0: 0x6cacb820, 0x2fcd1: 0x6cacba20, 0x2fcd2: 0x6cacbc20, 0x2fcd3: 0x6cacbe20,\n\t0x2fcd4: 0x6cacc020, 0x2fcd5: 0x6cacc220, 0x2fcd6: 0x6cacc420, 0x2fcd7: 0x6cacc620,\n\t0x2fcd8: 0x6cacc820, 0x2fcd9: 0x6cacca20, 0x2fcda: 0x6cdb1c20, 0x2fcdb: 0x6caccc20,\n\t0x2fcdc: 0x6cacce20, 0x2fcdd: 0x6cacd020, 0x2fcde: 0x6cacd220, 0x2fcdf: 0x6cacd420,\n\t0x2fce0: 0x6cacd620, 0x2fce1: 0x6cacd820, 0x2fce2: 0x6cacda20, 0x2fce3: 0x6cacdc20,\n\t0x2fce4: 0x6cacde20, 0x2fce5: 0x6cace020, 0x2fce6: 0x6cace220, 0x2fce7: 0x6cace420,\n\t0x2fce8: 0x6cace620, 0x2fce9: 0x6cace820, 0x2fcea: 0x6cacea20, 0x2fceb: 0x6cacec20,\n\t0x2fcec: 0x6cacee20, 0x2fced: 0x6cae1e20, 0x2fcee: 0x6cacf020, 0x2fcef: 0x6cacf220,\n\t0x2fcf0: 0x6cacf420, 0x2fcf1: 0x6cacf620, 0x2fcf2: 0x6cacf820, 0x2fcf3: 0x6cacfa20,\n\t0x2fcf4: 0x6cacfc20, 0x2fcf5: 0x6cacfe20, 0x2fcf6: 0x6cad0020, 0x2fcf7: 0x6cad0220,\n\t0x2fcf8: 0x6cad0420, 0x2fcf9: 0x6cad0620, 0x2fcfa: 0x6cad0820, 0x2fcfb: 0x6d098220,\n\t0x2fcfc: 0x6cad0a20, 0x2fcfd: 0x6cad0c20, 0x2fcfe: 0x6cdb1e20, 0x2fcff: 0x6cdb2020,\n\t// Block 0xbf4, offset 0x2fd00\n\t0x2fd00: 0x6cdb2220, 0x2fd01: 0x6cdb2420, 0x2fd02: 0x6cdb2620, 0x2fd03: 0x6cdb2820,\n\t0x2fd04: 0x6cdb2a20, 0x2fd05: 0x6cdb2c20, 0x2fd06: 0x6cdb2e20, 0x2fd07: 0x6cdb3020,\n\t0x2fd08: 0x6cdb3220, 0x2fd09: 0x6cdb3420, 0x2fd0a: 0x6cdb3620, 0x2fd0b: 0x6cdb3820,\n\t0x2fd0c: 0x6cdb3a20, 0x2fd0d: 0x6cdb3c20, 0x2fd0e: 0x6cdb3e20, 0x2fd0f: 0x6cdb4020,\n\t0x2fd10: 0x6cdb4220, 0x2fd11: 0x6cdb4420, 0x2fd12: 0x6cdb4620, 0x2fd13: 0x6cdb4820,\n\t0x2fd14: 0x6cdb4a20, 0x2fd15: 0x6cdb4c20, 0x2fd16: 0x6cdb4e20, 0x2fd17: 0x6cdb5020,\n\t0x2fd18: 0x6cdb5220, 0x2fd19: 0x6d098420, 0x2fd1a: 0x6cdb5420, 0x2fd1b: 0x6cdb5620,\n\t0x2fd1c: 0x6cdb5820, 0x2fd1d: 0x6cdb5a20, 0x2fd1e: 0x6cdb5c20, 0x2fd1f: 0x6cdb5e20,\n\t0x2fd20: 0x6cdb6020, 0x2fd21: 0x6cdb6220, 0x2fd22: 0x6cdb6420, 0x2fd23: 0x6cdb6620,\n\t0x2fd24: 0x6cdb6820, 0x2fd25: 0x6cdb6a20, 0x2fd26: 0x6cdb6c20, 0x2fd27: 0x6cdb6e20,\n\t0x2fd28: 0x6cdb7020, 0x2fd29: 0x6cdb7220, 0x2fd2a: 0x6cdb7420, 0x2fd2b: 0x6cdb7620,\n\t0x2fd2c: 0x6cdb7820, 0x2fd2d: 0x6cdb7a20, 0x2fd2e: 0x6cdb7c20, 0x2fd2f: 0x6cdb7e20,\n\t0x2fd30: 0x6cdb8020, 0x2fd31: 0x6cdb8220, 0x2fd32: 0x6cdb8420, 0x2fd33: 0x6cdb8620,\n\t0x2fd34: 0x6cdb8820, 0x2fd35: 0x6cdb8a20, 0x2fd36: 0x6cdb8c20, 0x2fd37: 0x6cdb8e20,\n\t0x2fd38: 0x6cdb9020, 0x2fd39: 0x6cdb9220, 0x2fd3a: 0x6cdb9420, 0x2fd3b: 0x6cdb9620,\n\t0x2fd3c: 0x6cdb9820, 0x2fd3d: 0x6cdb9a20, 0x2fd3e: 0x6cdb9c20, 0x2fd3f: 0x6cdb9e20,\n\t// Block 0xbf5, offset 0x2fd40\n\t0x2fd40: 0x6cdba020, 0x2fd41: 0x6cdba220, 0x2fd42: 0x6cdba420, 0x2fd43: 0x6cdba620,\n\t0x2fd44: 0x6cdba820, 0x2fd45: 0x6cdbaa20, 0x2fd46: 0x6cdbac20, 0x2fd47: 0x6cdbae20,\n\t0x2fd48: 0x6cdbb020, 0x2fd49: 0x6cdbb220, 0x2fd4a: 0x6cdbb420, 0x2fd4b: 0x6cdbb620,\n\t0x2fd4c: 0x6cdbb820, 0x2fd4d: 0x6cdbba20, 0x2fd4e: 0x6cdbbc20, 0x2fd4f: 0x6cdbbe20,\n\t0x2fd50: 0x6cdbc020, 0x2fd51: 0x6cdbc220, 0x2fd52: 0x6cdbc420, 0x2fd53: 0x6cdbc620,\n\t0x2fd54: 0x6cdbc820, 0x2fd55: 0x6cdbca20, 0x2fd56: 0x6cdbcc20, 0x2fd57: 0x6cdbce20,\n\t0x2fd58: 0x6cdbd020, 0x2fd59: 0x6cdbd220, 0x2fd5a: 0x6cdbd420, 0x2fd5b: 0x6cdbd620,\n\t0x2fd5c: 0x6cdbd820, 0x2fd5d: 0x6cdbda20, 0x2fd5e: 0x6cdbdc20, 0x2fd5f: 0x6cdbde20,\n\t0x2fd60: 0x6cdbe020, 0x2fd61: 0x6cdbe220, 0x2fd62: 0x6cdbe420, 0x2fd63: 0x6cdbe620,\n\t0x2fd64: 0x6cdbe820, 0x2fd65: 0x6d098620, 0x2fd66: 0x6cdbea20, 0x2fd67: 0x6cdbec20,\n\t0x2fd68: 0x6d098820, 0x2fd69: 0x6d098a20, 0x2fd6a: 0x6d098c20, 0x2fd6b: 0x6d098e20,\n\t0x2fd6c: 0x6d037820, 0x2fd6d: 0x6d099020, 0x2fd6e: 0x6d099220, 0x2fd6f: 0x6d099420,\n\t0x2fd70: 0x6d099620, 0x2fd71: 0x6d099820, 0x2fd72: 0x6d099a20, 0x2fd73: 0x6d099c20,\n\t0x2fd74: 0x6d099e20, 0x2fd75: 0x6d09a020, 0x2fd76: 0x6d09a220, 0x2fd77: 0x6d09a420,\n\t0x2fd78: 0x6cdd4420, 0x2fd79: 0x6d09a620, 0x2fd7a: 0x6d09a820, 0x2fd7b: 0x6d09aa20,\n\t0x2fd7c: 0x6d09ac20, 0x2fd7d: 0x6d09ae20, 0x2fd7e: 0x6d09b020, 0x2fd7f: 0x6d09b220,\n\t// Block 0xbf6, offset 0x2fd80\n\t0x2fd80: 0x6d09b420, 0x2fd81: 0x6d09b620, 0x2fd82: 0x6d09b820, 0x2fd83: 0x6d09ba20,\n\t0x2fd84: 0x6d09bc20, 0x2fd85: 0x6d09be20, 0x2fd86: 0x6d09c020, 0x2fd87: 0x6d09c220,\n\t0x2fd88: 0x6d09c420, 0x2fd89: 0x6d09c620, 0x2fd8a: 0x6d09c820, 0x2fd8b: 0x6d09ca20,\n\t0x2fd8c: 0x6d09cc20, 0x2fd8d: 0x6d09ce20, 0x2fd8e: 0x6d09d020, 0x2fd8f: 0x6d09d220,\n\t0x2fd90: 0x6d09d420, 0x2fd91: 0x6d09d620, 0x2fd92: 0x6d09d820, 0x2fd93: 0x6d09da20,\n\t0x2fd94: 0x6d09dc20, 0x2fd95: 0x6d09de20, 0x2fd96: 0x6d09e020, 0x2fd97: 0x6cdbee20,\n\t0x2fd98: 0x6d09e220, 0x2fd99: 0x6d09e420, 0x2fd9a: 0x6d09e620, 0x2fd9b: 0x6d09e820,\n\t0x2fd9c: 0x6d09ea20, 0x2fd9d: 0x6d09ec20, 0x2fd9e: 0x6d09ee20, 0x2fd9f: 0x6d09f020,\n\t0x2fda0: 0x6d09f220, 0x2fda1: 0x6d09f420, 0x2fda2: 0x6d09f620, 0x2fda3: 0x6d09f820,\n\t0x2fda4: 0x6d09fa20, 0x2fda5: 0x6d09fc20, 0x2fda6: 0x6d09fe20, 0x2fda7: 0x6d0a0020,\n\t0x2fda8: 0x6d0a0220, 0x2fda9: 0x6d0a0420, 0x2fdaa: 0x6d0a0620, 0x2fdab: 0x6d0a0820,\n\t0x2fdac: 0x6d0a0a20, 0x2fdad: 0x6d0a0c20, 0x2fdae: 0x6d0a0e20, 0x2fdaf: 0x6d0a1020,\n\t0x2fdb0: 0x6d0a1220, 0x2fdb1: 0x6d0a1420, 0x2fdb2: 0x6d0a1620, 0x2fdb3: 0x6d0a1820,\n\t0x2fdb4: 0x6d0a1a20, 0x2fdb5: 0x6d0a1c20, 0x2fdb6: 0x6d0a1e20, 0x2fdb7: 0x6d0a2020,\n\t0x2fdb8: 0x6d0a2220, 0x2fdb9: 0x6d0a2420, 0x2fdba: 0x6d0a2620, 0x2fdbb: 0x6d0a2820,\n\t0x2fdbc: 0x6d0a2a20, 0x2fdbd: 0x6d0a2c20, 0x2fdbe: 0x6d0a2e20, 0x2fdbf: 0x6d0a3020,\n\t// Block 0xbf7, offset 0x2fdc0\n\t0x2fdc0: 0x6d0a3220, 0x2fdc1: 0x6d0a3420, 0x2fdc2: 0x6d0a3620, 0x2fdc3: 0x6d0a3820,\n\t0x2fdc4: 0x6d0a3a20, 0x2fdc5: 0x6d0a3c20, 0x2fdc6: 0x6d0a3e20, 0x2fdc7: 0x6d0a4020,\n\t0x2fdc8: 0x6d0a4220, 0x2fdc9: 0x6d0a4420, 0x2fdca: 0x6d640e20, 0x2fdcb: 0x6d0a4620,\n\t0x2fdcc: 0x6d0a4820, 0x2fdcd: 0x6d0a4a20, 0x2fdce: 0x6d0a4c20, 0x2fdcf: 0x6d0a4e20,\n\t0x2fdd0: 0x6d37b020, 0x2fdd1: 0x6d37b220, 0x2fdd2: 0x6d37b420, 0x2fdd3: 0x6d37b620,\n\t0x2fdd4: 0x6d37b820, 0x2fdd5: 0x6d37ba20, 0x2fdd6: 0x6d37bc20, 0x2fdd7: 0x6d37be20,\n\t0x2fdd8: 0x6d37c020, 0x2fdd9: 0x6d37c220, 0x2fdda: 0x6d37c420, 0x2fddb: 0x6d37c620,\n\t0x2fddc: 0x6d37c820, 0x2fddd: 0x6d37ca20, 0x2fdde: 0x6d37cc20, 0x2fddf: 0x6d37ce20,\n\t0x2fde0: 0x6d37d020, 0x2fde1: 0x6d37d220, 0x2fde2: 0x6d37d420, 0x2fde3: 0x6d37d620,\n\t0x2fde4: 0x6d37d820, 0x2fde5: 0x6d37da20, 0x2fde6: 0x6d37dc20, 0x2fde7: 0x6d37de20,\n\t0x2fde8: 0x6d37e020, 0x2fde9: 0x6d37e220, 0x2fdea: 0x6d37e420, 0x2fdeb: 0x6d37e620,\n\t0x2fdec: 0x6d37e820, 0x2fded: 0x6d37ea20, 0x2fdee: 0x6d37ec20, 0x2fdef: 0x6d37ee20,\n\t0x2fdf0: 0x6d37f020, 0x2fdf1: 0x6d37f220, 0x2fdf2: 0x6d37f420, 0x2fdf3: 0x6d37f620,\n\t0x2fdf4: 0x6d37f820, 0x2fdf5: 0x6d37fa20, 0x2fdf6: 0x6d37fc20, 0x2fdf7: 0x6d37fe20,\n\t0x2fdf8: 0x6d2b2a20, 0x2fdf9: 0x6d380020, 0x2fdfa: 0x6d380220, 0x2fdfb: 0x6d380420,\n\t0x2fdfc: 0x6d380620, 0x2fdfd: 0x6d380820, 0x2fdfe: 0x6d380a20, 0x2fdff: 0x6d380c20,\n\t// Block 0xbf8, offset 0x2fe00\n\t0x2fe00: 0x6d380e20, 0x2fe01: 0x6d381020, 0x2fe02: 0x6d381220, 0x2fe03: 0x6d381420,\n\t0x2fe04: 0x6d381620, 0x2fe05: 0x6d0bb820, 0x2fe06: 0x6d381820, 0x2fe07: 0x6d381a20,\n\t0x2fe08: 0x6d0bba20, 0x2fe09: 0x6d381c20, 0x2fe0a: 0x6d381e20, 0x2fe0b: 0x6d382020,\n\t0x2fe0c: 0x6d382220, 0x2fe0d: 0x6d382420, 0x2fe0e: 0x6d382620, 0x2fe0f: 0x6d382820,\n\t0x2fe10: 0x6d382a20, 0x2fe11: 0x6d382c20, 0x2fe12: 0x6d382e20, 0x2fe13: 0x6d383020,\n\t0x2fe14: 0x6d383220, 0x2fe15: 0x6d383420, 0x2fe16: 0x6d383620, 0x2fe17: 0x6d383820,\n\t0x2fe18: 0x6d383a20, 0x2fe19: 0x6d383c20, 0x2fe1a: 0x6d383e20, 0x2fe1b: 0x6d384020,\n\t0x2fe1c: 0x6d384220, 0x2fe1d: 0x6d384420, 0x2fe1e: 0x6d8dfe20, 0x2fe1f: 0x6d384620,\n\t0x2fe20: 0x6d641020, 0x2fe21: 0x6d384820, 0x2fe22: 0x6d384a20, 0x2fe23: 0x6d384c20,\n\t0x2fe24: 0x6d384e20, 0x2fe25: 0x6d39b820, 0x2fe26: 0x6d385020, 0x2fe27: 0x6d641220,\n\t0x2fe28: 0x6d641420, 0x2fe29: 0x6d641620, 0x2fe2a: 0x6d641820, 0x2fe2b: 0x6d641a20,\n\t0x2fe2c: 0x6d641c20, 0x2fe2d: 0x6d641e20, 0x2fe2e: 0x6d642020, 0x2fe2f: 0x6d642220,\n\t0x2fe30: 0x6d642420, 0x2fe31: 0x6d0bbc20, 0x2fe32: 0x6d642620, 0x2fe33: 0x6d642820,\n\t0x2fe34: 0x6d642a20, 0x2fe35: 0x6d642c20, 0x2fe36: 0x6d642e20, 0x2fe37: 0x6d643020,\n\t0x2fe38: 0x6d643220, 0x2fe39: 0x6d643420, 0x2fe3a: 0x6d643620, 0x2fe3b: 0x6d643820,\n\t0x2fe3c: 0x6d643a20, 0x2fe3d: 0x6d643c20, 0x2fe3e: 0x6d643e20, 0x2fe3f: 0x6d644020,\n\t// Block 0xbf9, offset 0x2fe40\n\t0x2fe40: 0x6d644220, 0x2fe41: 0x6d644420, 0x2fe42: 0x6d644620, 0x2fe43: 0x6d644820,\n\t0x2fe44: 0x6d644a20, 0x2fe45: 0x6d644c20, 0x2fe46: 0x6d644e20, 0x2fe47: 0x6d0bbe20,\n\t0x2fe48: 0x6d645020, 0x2fe49: 0x6d645220, 0x2fe4a: 0x6d645420, 0x2fe4b: 0x6d645620,\n\t0x2fe4c: 0x6d645820, 0x2fe4d: 0x6d645a20, 0x2fe4e: 0x6d645c20, 0x2fe4f: 0x6d645e20,\n\t0x2fe50: 0x6d646020, 0x2fe51: 0x6d646220, 0x2fe52: 0x6d646420, 0x2fe53: 0x6d646620,\n\t0x2fe54: 0x6d646820, 0x2fe55: 0x6d646a20, 0x2fe56: 0x6d646c20, 0x2fe57: 0x6d646e20,\n\t0x2fe58: 0x6d647020, 0x2fe59: 0x6d647220, 0x2fe5a: 0x6d647420, 0x2fe5b: 0x6d647620,\n\t0x2fe5c: 0x6d647820, 0x2fe5d: 0x6d647a20, 0x2fe5e: 0x6d647c20, 0x2fe5f: 0x6d647e20,\n\t0x2fe60: 0x6d648020, 0x2fe61: 0x6d648220, 0x2fe62: 0x6d648420, 0x2fe63: 0x6d648620,\n\t0x2fe64: 0x6d648820, 0x2fe65: 0x6d648a20, 0x2fe66: 0x6d648c20, 0x2fe67: 0x6d648e20,\n\t0x2fe68: 0x6d649020, 0x2fe69: 0x6d649220, 0x2fe6a: 0x6d649420, 0x2fe6b: 0x6d649620,\n\t0x2fe6c: 0x6d649820, 0x2fe6d: 0x6d649a20, 0x2fe6e: 0x6d649c20, 0x2fe6f: 0x6d649e20,\n\t0x2fe70: 0x6d64a020, 0x2fe71: 0x6d64a220, 0x2fe72: 0x6d64a420, 0x2fe73: 0x6d64a620,\n\t0x2fe74: 0x6d64a820, 0x2fe75: 0x6d64aa20, 0x2fe76: 0x6d64ac20, 0x2fe77: 0x6d64ae20,\n\t0x2fe78: 0x6d64b020, 0x2fe79: 0x6d64b220, 0x2fe7a: 0x6d64b420, 0x2fe7b: 0x6d64b620,\n\t0x2fe7c: 0x6d64b820, 0x2fe7d: 0x6d65f020, 0x2fe7e: 0x6d8e0020, 0x2fe7f: 0x6d8e0220,\n\t// Block 0xbfa, offset 0x2fe80\n\t0x2fe80: 0x6d8e0420, 0x2fe81: 0x6d8e0620, 0x2fe82: 0x6d8e0820, 0x2fe83: 0x6d8e0a20,\n\t0x2fe84: 0x6d8e0c20, 0x2fe85: 0x6d8e0e20, 0x2fe86: 0x6d8e1020, 0x2fe87: 0x6d8e1220,\n\t0x2fe88: 0x6d8e1420, 0x2fe89: 0x6d8e1620, 0x2fe8a: 0x6d8e1820, 0x2fe8b: 0x6d8e1a20,\n\t0x2fe8c: 0x6d8e1c20, 0x2fe8d: 0x6d8e1e20, 0x2fe8e: 0x6d8e2020, 0x2fe8f: 0x6d65f220,\n\t0x2fe90: 0x6d8e2220, 0x2fe91: 0x6d8e2420, 0x2fe92: 0x6d8e2620, 0x2fe93: 0x6d8e2820,\n\t0x2fe94: 0x6d8e2a20, 0x2fe95: 0x6d8e2c20, 0x2fe96: 0x6d8e2e20, 0x2fe97: 0x6db1fe20,\n\t0x2fe98: 0x6d8e3020, 0x2fe99: 0x6d8e3220, 0x2fe9a: 0x6d8e3420, 0x2fe9b: 0x6d8e3620,\n\t0x2fe9c: 0x6d8e3820, 0x2fe9d: 0x6d8e3a20, 0x2fe9e: 0x6d8e3c20, 0x2fe9f: 0x6d8e3e20,\n\t0x2fea0: 0x6d8e4020, 0x2fea1: 0x6d8e4220, 0x2fea2: 0x6d8e4420, 0x2fea3: 0x6d8e4620,\n\t0x2fea4: 0x6d8e4820, 0x2fea5: 0x6d8e4a20, 0x2fea6: 0x6d8e4c20, 0x2fea7: 0x6d8e4e20,\n\t0x2fea8: 0x6d8e5020, 0x2fea9: 0x6d8e5220, 0x2feaa: 0x6d8e5420, 0x2feab: 0x6d8e5620,\n\t0x2feac: 0x6d8e5820, 0x2fead: 0x6d8e5a20, 0x2feae: 0x6d8e5c20, 0x2feaf: 0x6d8e5e20,\n\t0x2feb0: 0x6d8e6020, 0x2feb1: 0x6d8e6220, 0x2feb2: 0x6d8e6420, 0x2feb3: 0x6d8e6620,\n\t0x2feb4: 0x6d8e6820, 0x2feb5: 0x6d8e6a20, 0x2feb6: 0x6db20020, 0x2feb7: 0x6db20220,\n\t0x2feb8: 0x6db20420, 0x2feb9: 0x6db20620, 0x2feba: 0x6db20820, 0x2febb: 0x6db20a20,\n\t0x2febc: 0x6db20c20, 0x2febd: 0x6db20e20, 0x2febe: 0x6db21020, 0x2febf: 0x6db21220,\n\t// Block 0xbfb, offset 0x2fec0\n\t0x2fec0: 0x6db21420, 0x2fec1: 0x6db21620, 0x2fec2: 0x6db21820, 0x2fec3: 0x6db21a20,\n\t0x2fec4: 0x6db21c20, 0x2fec5: 0x6db21e20, 0x2fec6: 0x6db22020, 0x2fec7: 0x6db22220,\n\t0x2fec8: 0x6db22420, 0x2fec9: 0x6db22620, 0x2feca: 0x6db22820, 0x2fecb: 0x6db22a20,\n\t0x2fecc: 0x6d8fc420, 0x2fecd: 0x6db22c20, 0x2fece: 0x6db22e20, 0x2fecf: 0x6db23020,\n\t0x2fed0: 0x6db23220, 0x2fed1: 0x6db23420, 0x2fed2: 0x6db23620, 0x2fed3: 0x6db23820,\n\t0x2fed4: 0x6db23a20, 0x2fed5: 0x6db23c20, 0x2fed6: 0x6db23e20, 0x2fed7: 0x6db24020,\n\t0x2fed8: 0x6db24220, 0x2fed9: 0x6db24420, 0x2feda: 0x6db24620, 0x2fedb: 0x6db24820,\n\t0x2fedc: 0x6db24a20, 0x2fedd: 0x6db24c20, 0x2fede: 0x6db24e20, 0x2fedf: 0x6db25020,\n\t0x2fee0: 0x6db25220, 0x2fee1: 0x6db25420, 0x2fee2: 0x6db25620, 0x2fee3: 0x6db25820,\n\t0x2fee4: 0x6db25a20, 0x2fee5: 0x6db25c20, 0x2fee6: 0x6db25e20, 0x2fee7: 0x6db26020,\n\t0x2fee8: 0x6db26220, 0x2fee9: 0x6dd14c20, 0x2feea: 0x6db26420, 0x2feeb: 0x6db26620,\n\t0x2feec: 0x6db26820, 0x2feed: 0x6db39420, 0x2feee: 0x6db26a20, 0x2feef: 0x6db39620,\n\t0x2fef0: 0x6dd14e20, 0x2fef1: 0x6dd15020, 0x2fef2: 0x6dd15220, 0x2fef3: 0x6dd15420,\n\t0x2fef4: 0x6dd15620, 0x2fef5: 0x6dd15820, 0x2fef6: 0x6dd15a20, 0x2fef7: 0x6dd15c20,\n\t0x2fef8: 0x6dd15e20, 0x2fef9: 0x6dd16020, 0x2fefa: 0x6dd16220, 0x2fefb: 0x6dd16420,\n\t0x2fefc: 0x6dd16620, 0x2fefd: 0x6dd16820, 0x2fefe: 0x6dd16a20, 0x2feff: 0x6dd16c20,\n\t// Block 0xbfc, offset 0x2ff00\n\t0x2ff00: 0x6dd16e20, 0x2ff01: 0x6dd17020, 0x2ff02: 0x6dd17220, 0x2ff03: 0x6dd17420,\n\t0x2ff04: 0x6dd17620, 0x2ff05: 0x6dd17820, 0x2ff06: 0x6dd17a20, 0x2ff07: 0x6dd17c20,\n\t0x2ff08: 0x6dd17e20, 0x2ff09: 0x6dd18020, 0x2ff0a: 0x6dd18220, 0x2ff0b: 0x6dd18420,\n\t0x2ff0c: 0x6dd18620, 0x2ff0d: 0x6dd18820, 0x2ff0e: 0x6dd18a20, 0x2ff0f: 0x6dd18c20,\n\t0x2ff10: 0x6dd18e20, 0x2ff11: 0x6deac020, 0x2ff12: 0x6dd19020, 0x2ff13: 0x6dd19220,\n\t0x2ff14: 0x6e128a20, 0x2ff15: 0x6deac220, 0x2ff16: 0x6deac420, 0x2ff17: 0x6deac620,\n\t0x2ff18: 0x6deac820, 0x2ff19: 0x6deaca20, 0x2ff1a: 0x6deacc20, 0x2ff1b: 0x6deace20,\n\t0x2ff1c: 0x6dead020, 0x2ff1d: 0x6dead220, 0x2ff1e: 0x6dead420, 0x2ff1f: 0x6dead620,\n\t0x2ff20: 0x6dead820, 0x2ff21: 0x6deada20, 0x2ff22: 0x6deadc20, 0x2ff23: 0x6deade20,\n\t0x2ff24: 0x6deae020, 0x2ff25: 0x6deae220, 0x2ff26: 0x6deae420, 0x2ff27: 0x6deae620,\n\t0x2ff28: 0x6deae820, 0x2ff29: 0x6deaea20, 0x2ff2a: 0x6deaec20, 0x2ff2b: 0x6deaee20,\n\t0x2ff2c: 0x6deaf020, 0x2ff2d: 0x6deaf220, 0x2ff2e: 0x6e006c20, 0x2ff2f: 0x6deaf420,\n\t0x2ff30: 0x6deaf620, 0x2ff31: 0x6deaf820, 0x2ff32: 0x6deafa20, 0x2ff33: 0x6deafc20,\n\t0x2ff34: 0x6deafe20, 0x2ff35: 0x6deb0020, 0x2ff36: 0x6e006e20, 0x2ff37: 0x6debce20,\n\t0x2ff38: 0x6debd020, 0x2ff39: 0x6e007020, 0x2ff3a: 0x6e007220, 0x2ff3b: 0x6e007420,\n\t0x2ff3c: 0x6e007620, 0x2ff3d: 0x6e007820, 0x2ff3e: 0x6e007a20, 0x2ff3f: 0x6e007c20,\n\t// Block 0xbfd, offset 0x2ff40\n\t0x2ff40: 0x6e007e20, 0x2ff41: 0x6e008020, 0x2ff42: 0x6e008220, 0x2ff43: 0x6e008420,\n\t0x2ff44: 0x6e008620, 0x2ff45: 0x6e008820, 0x2ff46: 0x6e008a20, 0x2ff47: 0x6e008c20,\n\t0x2ff48: 0x6e008e20, 0x2ff49: 0x6e009020, 0x2ff4a: 0x6e009220, 0x2ff4b: 0x6e009420,\n\t0x2ff4c: 0x6e009620, 0x2ff4d: 0x6e009820, 0x2ff4e: 0x6e009a20, 0x2ff4f: 0x6e009c20,\n\t0x2ff50: 0x6e009e20, 0x2ff51: 0x6e00a020, 0x2ff52: 0x6e015420, 0x2ff53: 0x6e00a220,\n\t0x2ff54: 0x6e00a420, 0x2ff55: 0x6e128c20, 0x2ff56: 0x6e128e20, 0x2ff57: 0x6e129020,\n\t0x2ff58: 0x6e129220, 0x2ff59: 0x6e129420, 0x2ff5a: 0x6e129620, 0x2ff5b: 0x6e015620,\n\t0x2ff5c: 0x6e129820, 0x2ff5d: 0x6e129a20, 0x2ff5e: 0x6e129c20, 0x2ff5f: 0x6e129e20,\n\t0x2ff60: 0x6e12a020, 0x2ff61: 0x6e12a220, 0x2ff62: 0x6e00a620, 0x2ff63: 0x6e12a420,\n\t0x2ff64: 0x6e006a20, 0x2ff65: 0x6e12a620, 0x2ff66: 0x6e12a820, 0x2ff67: 0x6e12aa20,\n\t0x2ff68: 0x6e12ac20, 0x2ff69: 0x6e12ae20, 0x2ff6a: 0x6e12b020, 0x2ff6b: 0x6e12b220,\n\t0x2ff6c: 0x6e20b820, 0x2ff6d: 0x6e12b420, 0x2ff6e: 0x6e12b620, 0x2ff6f: 0x6e12b820,\n\t0x2ff70: 0x6e015820, 0x2ff71: 0x6e2b7e20, 0x2ff72: 0x6e20ba20, 0x2ff73: 0x6e20bc20,\n\t0x2ff74: 0x6e20be20, 0x2ff75: 0x6e20c020, 0x2ff76: 0x6e20c220, 0x2ff77: 0x6e20c420,\n\t0x2ff78: 0x6e2b8020, 0x2ff79: 0x6e2b8220, 0x2ff7a: 0x6e2b8420, 0x2ff7b: 0x6e2b8620,\n\t0x2ff7c: 0x6e2b8820, 0x2ff7d: 0x6e2b8a20, 0x2ff7e: 0x6e2b8c20, 0x2ff7f: 0x6e2b8e20,\n\t// Block 0xbfe, offset 0x2ff80\n\t0x2ff80: 0x6e2b9020, 0x2ff81: 0x6e2b9220, 0x2ff82: 0x6e39ca20, 0x2ff83: 0x6e33ec20,\n\t0x2ff84: 0x6e3df420, 0x2ff85: 0x6e33ee20, 0x2ff86: 0x6e39cc20, 0x2ff87: 0x6e39ce20,\n\t0x2ff88: 0x6e39d020, 0x2ff89: 0x6e39d220, 0x2ff8a: 0x6e40cc20, 0x2ff8b: 0x6e446620,\n\t0x2ff8c: 0x6e42fa20, 0x2ff8d: 0x6c14ca20, 0x2ff8e: 0x6c401020, 0x2ff8f: 0x6c401220,\n\t0x2ff90: 0x6c5f9620, 0x2ff91: 0x6c84ce20, 0x2ff92: 0x6c674020, 0x2ff93: 0x6c84d020,\n\t0x2ff94: 0x6c84d220, 0x2ff95: 0x6cae2620, 0x2ff96: 0x6cae2820, 0x2ff97: 0x6cae2a20,\n\t0x2ff98: 0x6cae2c20, 0x2ff99: 0x6cae2e20, 0x2ff9a: 0x6cae3020, 0x2ff9b: 0x6cdd4c20,\n\t0x2ff9c: 0x6d0bc020, 0x2ff9d: 0x6cdd4e20, 0x2ff9e: 0x6d0bcc20, 0x2ff9f: 0x6d0bce20,\n\t0x2ffa0: 0x6d39ba20, 0x2ffa1: 0x6d39bc20, 0x2ffa2: 0x6d65f620, 0x2ffa3: 0x6d8fc620,\n\t0x2ffa4: 0x6d8fca20, 0x2ffa5: 0x6d8fcc20, 0x2ffa6: 0x6d8fce20, 0x2ffa7: 0x6db39a20,\n\t0x2ffa8: 0x6db39c20, 0x2ffa9: 0x6dd29a20, 0x2ffaa: 0x6e3e1220, 0x2ffab: 0x6c14cc20,\n\t0x2ffac: 0x6c268a20, 0x2ffad: 0x6c401620, 0x2ffae: 0x6c401820, 0x2ffaf: 0x6c401a20,\n\t0x2ffb0: 0x6c401c20, 0x2ffb1: 0x6c401e20, 0x2ffb2: 0x6c402020, 0x2ffb3: 0x6c5fa820,\n\t0x2ffb4: 0x6c5faa20, 0x2ffb5: 0x6c5fac20, 0x2ffb6: 0x6c5fae20, 0x2ffb7: 0x6c5fb020,\n\t0x2ffb8: 0x6c5fb220, 0x2ffb9: 0x6c5fb420, 0x2ffba: 0x6c5fb620, 0x2ffbb: 0x6c5fb820,\n\t0x2ffbc: 0x6c5fba20, 0x2ffbd: 0x6c5fbc20, 0x2ffbe: 0x6c5fbe20, 0x2ffbf: 0x6c5fc020,\n\t// Block 0xbff, offset 0x2ffc0\n\t0x2ffc0: 0x6c5fc220, 0x2ffc1: 0x6c5fc420, 0x2ffc2: 0x6c5fc620, 0x2ffc3: 0x6c5fc820,\n\t0x2ffc4: 0x6c84e420, 0x2ffc5: 0x6c84e620, 0x2ffc6: 0x6c84e820, 0x2ffc7: 0x6c84ea20,\n\t0x2ffc8: 0x6cdd7820, 0x2ffc9: 0x6c84ec20, 0x2ffca: 0x6c84ee20, 0x2ffcb: 0x6c84f020,\n\t0x2ffcc: 0x6c84f220, 0x2ffcd: 0x6c84f420, 0x2ffce: 0x6c84f620, 0x2ffcf: 0x6c84f820,\n\t0x2ffd0: 0x6c84fa20, 0x2ffd1: 0x6c84fc20, 0x2ffd2: 0x6c84fe20, 0x2ffd3: 0x6c850020,\n\t0x2ffd4: 0x6c850220, 0x2ffd5: 0x6c850420, 0x2ffd6: 0x6c850620, 0x2ffd7: 0x6c850820,\n\t0x2ffd8: 0x6c850a20, 0x2ffd9: 0x6c850c20, 0x2ffda: 0x6c850e20, 0x2ffdb: 0x6c851020,\n\t0x2ffdc: 0x6c851220, 0x2ffdd: 0x6c851420, 0x2ffde: 0x6c851620, 0x2ffdf: 0x6c851820,\n\t0x2ffe0: 0x6c851a20, 0x2ffe1: 0x6c851c20, 0x2ffe2: 0x6c851e20, 0x2ffe3: 0x6c852020,\n\t0x2ffe4: 0x6c852220, 0x2ffe5: 0x6c852420, 0x2ffe6: 0x6c852620, 0x2ffe7: 0x6c852820,\n\t0x2ffe8: 0x6c852a20, 0x2ffe9: 0x6c852c20, 0x2ffea: 0x6c852e20, 0x2ffeb: 0x6cae6020,\n\t0x2ffec: 0x6c853020, 0x2ffed: 0x6cae6220, 0x2ffee: 0x6cae6420, 0x2ffef: 0x6cae6620,\n\t0x2fff0: 0x6cae6820, 0x2fff1: 0x6cae6a20, 0x2fff2: 0x6cae6c20, 0x2fff3: 0x6cae6e20,\n\t0x2fff4: 0x6cae7020, 0x2fff5: 0x6cae7220, 0x2fff6: 0x6cae7420, 0x2fff7: 0x6cae7620,\n\t0x2fff8: 0x6cae7820, 0x2fff9: 0x6cae7a20, 0x2fffa: 0x6cae7c20, 0x2fffb: 0x6cae7e20,\n\t0x2fffc: 0x6cae8020, 0x2fffd: 0x6cae8220, 0x2fffe: 0x6cae8420, 0x2ffff: 0x6cae8620,\n\t// Block 0xc00, offset 0x30000\n\t0x30000: 0x6cae8820, 0x30001: 0x6cae8a20, 0x30002: 0x6cae8c20, 0x30003: 0x6cae8e20,\n\t0x30004: 0x6cae9020, 0x30005: 0x6cae9220, 0x30006: 0x6cae9420, 0x30007: 0x6cae9620,\n\t0x30008: 0x6cae9820, 0x30009: 0x6cae9a20, 0x3000a: 0x6cae9c20, 0x3000b: 0x6cae9e20,\n\t0x3000c: 0x6caea020, 0x3000d: 0x6caea220, 0x3000e: 0x6caea420, 0x3000f: 0x6caea620,\n\t0x30010: 0x6cdd7a20, 0x30011: 0x6cdd7c20, 0x30012: 0x6cdd7e20, 0x30013: 0x6cdd8020,\n\t0x30014: 0x6cdd8220, 0x30015: 0x6cdd8420, 0x30016: 0x6d0bf020, 0x30017: 0x6cdd8620,\n\t0x30018: 0x6cdd8820, 0x30019: 0x6cdd8a20, 0x3001a: 0x6cdd8c20, 0x3001b: 0x6cdd8e20,\n\t0x3001c: 0x6cdd9020, 0x3001d: 0x6cdd9220, 0x3001e: 0x6cdd9420, 0x3001f: 0x6cdd9620,\n\t0x30020: 0x6cdd9820, 0x30021: 0x6cdd9a20, 0x30022: 0x6cdd9c20, 0x30023: 0x6cdd9e20,\n\t0x30024: 0x6cdda020, 0x30025: 0x6cdda220, 0x30026: 0x6cdda420, 0x30027: 0x6cdda620,\n\t0x30028: 0x6cdda820, 0x30029: 0x6cddaa20, 0x3002a: 0x6cddac20, 0x3002b: 0x6cddae20,\n\t0x3002c: 0x6cddb020, 0x3002d: 0x6cddb220, 0x3002e: 0x6cddb420, 0x3002f: 0x6cddb620,\n\t0x30030: 0x6cddb820, 0x30031: 0x6cddba20, 0x30032: 0x6cddbc20, 0x30033: 0x6cddbe20,\n\t0x30034: 0x6cddc020, 0x30035: 0x6d0bf220, 0x30036: 0x6d0bf420, 0x30037: 0x6d0bf620,\n\t0x30038: 0x6d0bf820, 0x30039: 0x6d0bfa20, 0x3003a: 0x6d0bfc20, 0x3003b: 0x6d0bfe20,\n\t0x3003c: 0x6d0c0020, 0x3003d: 0x6d0c0220, 0x3003e: 0x6d0c0420, 0x3003f: 0x6d0c0620,\n\t// Block 0xc01, offset 0x30040\n\t0x30040: 0x6d0c0820, 0x30041: 0x6d0c0a20, 0x30042: 0x6d0c0c20, 0x30043: 0x6d0c0e20,\n\t0x30044: 0x6d0c1020, 0x30045: 0x6d0c1220, 0x30046: 0x6d0c1420, 0x30047: 0x6d0c1620,\n\t0x30048: 0x6d0c1820, 0x30049: 0x6d0c1a20, 0x3004a: 0x6d0c1c20, 0x3004b: 0x6d0c1e20,\n\t0x3004c: 0x6d0c2020, 0x3004d: 0x6d0c2220, 0x3004e: 0x6d0c2420, 0x3004f: 0x6d0c2620,\n\t0x30050: 0x6d0c2820, 0x30051: 0x6d39dc20, 0x30052: 0x6d39de20, 0x30053: 0x6d0c2a20,\n\t0x30054: 0x6d0c2c20, 0x30055: 0x6d0c2e20, 0x30056: 0x6d0c3020, 0x30057: 0x6d0c3220,\n\t0x30058: 0x6d39fc20, 0x30059: 0x6d39fe20, 0x3005a: 0x6d3a0020, 0x3005b: 0x6d3a0220,\n\t0x3005c: 0x6d3a0420, 0x3005d: 0x6d3a0620, 0x3005e: 0x6d3a0820, 0x3005f: 0x6d3a0a20,\n\t0x30060: 0x6d3a0c20, 0x30061: 0x6d3a0e20, 0x30062: 0x6d3a1020, 0x30063: 0x6d3a1220,\n\t0x30064: 0x6d3a1420, 0x30065: 0x6d3a1620, 0x30066: 0x6d3a1820, 0x30067: 0x6d3a1a20,\n\t0x30068: 0x6d3a1c20, 0x30069: 0x6d3a1e20, 0x3006a: 0x6d3a2020, 0x3006b: 0x6d39e020,\n\t0x3006c: 0x6d3a2220, 0x3006d: 0x6d3a2420, 0x3006e: 0x6d3a2620, 0x3006f: 0x6d3a2820,\n\t0x30070: 0x6d3a2a20, 0x30071: 0x6d3a2c20, 0x30072: 0x6d3a2e20, 0x30073: 0x6d3a3020,\n\t0x30074: 0x6d3a3220, 0x30075: 0x6d3a3420, 0x30076: 0x6d3a3620, 0x30077: 0x6d3a3820,\n\t0x30078: 0x6d3a3a20, 0x30079: 0x6d3a3c20, 0x3007a: 0x6d3a3e20, 0x3007b: 0x6d3a4020,\n\t0x3007c: 0x6d3a4220, 0x3007d: 0x6d3a4420, 0x3007e: 0x6d3a4620, 0x3007f: 0x6d3a4820,\n\t// Block 0xc02, offset 0x30080\n\t0x30080: 0x6d3a4a20, 0x30081: 0x6d3a4c20, 0x30082: 0x6d3a4e20, 0x30083: 0x6d3a5020,\n\t0x30084: 0x6d3a5220, 0x30085: 0x6d3a5420, 0x30086: 0x6d0c3420, 0x30087: 0x6d3a5620,\n\t0x30088: 0x6d3a5820, 0x30089: 0x6d3a5a20, 0x3008a: 0x6d3a5c20, 0x3008b: 0x6d3a5e20,\n\t0x3008c: 0x6d662820, 0x3008d: 0x6d0cba20, 0x3008e: 0x6d662a20, 0x3008f: 0x6d662c20,\n\t0x30090: 0x6d662e20, 0x30091: 0x6d663020, 0x30092: 0x6d663220, 0x30093: 0x6d663420,\n\t0x30094: 0x6d663620, 0x30095: 0x6d3b0c20, 0x30096: 0x6d663820, 0x30097: 0x6d663a20,\n\t0x30098: 0x6d663c20, 0x30099: 0x6d663e20, 0x3009a: 0x6d664020, 0x3009b: 0x6d664220,\n\t0x3009c: 0x6d664420, 0x3009d: 0x6d664620, 0x3009e: 0x6d664820, 0x3009f: 0x6d664a20,\n\t0x300a0: 0x6d664c20, 0x300a1: 0x6d664e20, 0x300a2: 0x6d665020, 0x300a3: 0x6d665220,\n\t0x300a4: 0x6d665420, 0x300a5: 0x6d665620, 0x300a6: 0x6d665820, 0x300a7: 0x6d665a20,\n\t0x300a8: 0x6d665c20, 0x300a9: 0x6d665e20, 0x300aa: 0x6d666020, 0x300ab: 0x6d3b0e20,\n\t0x300ac: 0x6d666220, 0x300ad: 0x6d666420, 0x300ae: 0x6d666620, 0x300af: 0x6d666820,\n\t0x300b0: 0x6d666a20, 0x300b1: 0x6d666c20, 0x300b2: 0x6d666e20, 0x300b3: 0x6d667020,\n\t0x300b4: 0x6d667220, 0x300b5: 0x6d667420, 0x300b6: 0x6d667620, 0x300b7: 0x6d667820,\n\t0x300b8: 0x6d667a20, 0x300b9: 0x6d900a20, 0x300ba: 0x6d667c20, 0x300bb: 0x6d667e20,\n\t0x300bc: 0x6d668020, 0x300bd: 0x6d668220, 0x300be: 0x6d668420, 0x300bf: 0x6d668620,\n\t// Block 0xc03, offset 0x300c0\n\t0x300c0: 0x6d668820, 0x300c1: 0x6d900c20, 0x300c2: 0x6d673820, 0x300c3: 0x6d900e20,\n\t0x300c4: 0x6d901020, 0x300c5: 0x6d901220, 0x300c6: 0x6d901420, 0x300c7: 0x6d901620,\n\t0x300c8: 0x6d901820, 0x300c9: 0x6d901a20, 0x300ca: 0x6d901c20, 0x300cb: 0x6d901e20,\n\t0x300cc: 0x6d902020, 0x300cd: 0x6d902220, 0x300ce: 0x6d902420, 0x300cf: 0x6d902620,\n\t0x300d0: 0x6d902820, 0x300d1: 0x6d902a20, 0x300d2: 0x6d902c20, 0x300d3: 0x6d902e20,\n\t0x300d4: 0x6d903020, 0x300d5: 0x6d903220, 0x300d6: 0x6d903420, 0x300d7: 0x6d903620,\n\t0x300d8: 0x6d903820, 0x300d9: 0x6d903a20, 0x300da: 0x6d903c20, 0x300db: 0x6d903e20,\n\t0x300dc: 0x6d904020, 0x300dd: 0x6d904220, 0x300de: 0x6d904420, 0x300df: 0x6d904620,\n\t0x300e0: 0x6d904820, 0x300e1: 0x6d904a20, 0x300e2: 0x6d904c20, 0x300e3: 0x6d904e20,\n\t0x300e4: 0x6d905020, 0x300e5: 0x6d905220, 0x300e6: 0x6d905420, 0x300e7: 0x6d905620,\n\t0x300e8: 0x6d905820, 0x300e9: 0x6d905a20, 0x300ea: 0x6db3d420, 0x300eb: 0x6db3d620,\n\t0x300ec: 0x6db3d820, 0x300ed: 0x6db3da20, 0x300ee: 0x6db3dc20, 0x300ef: 0x6db3de20,\n\t0x300f0: 0x6db3e020, 0x300f1: 0x6db3e220, 0x300f2: 0x6db3e420, 0x300f3: 0x6db3e620,\n\t0x300f4: 0x6db3e820, 0x300f5: 0x6db3ea20, 0x300f6: 0x6db3ec20, 0x300f7: 0x6db3ee20,\n\t0x300f8: 0x6db3f020, 0x300f9: 0x6db3f220, 0x300fa: 0x6db3f420, 0x300fb: 0x6db3f620,\n\t0x300fc: 0x6db3f820, 0x300fd: 0x6db3fa20, 0x300fe: 0x6db3fc20, 0x300ff: 0x6db3fe20,\n\t// Block 0xc04, offset 0x30100\n\t0x30100: 0x6db40020, 0x30101: 0x6db40220, 0x30102: 0x6db40420, 0x30103: 0x6db40620,\n\t0x30104: 0x6db40820, 0x30105: 0x6db40a20, 0x30106: 0x6db40c20, 0x30107: 0x6db40e20,\n\t0x30108: 0x6db41020, 0x30109: 0x6db41220, 0x3010a: 0x6db41420, 0x3010b: 0x6db41620,\n\t0x3010c: 0x6db41820, 0x3010d: 0x6db41a20, 0x3010e: 0x6db41c20, 0x3010f: 0x6db41e20,\n\t0x30110: 0x6db42020, 0x30111: 0x6db42220, 0x30112: 0x6db42420, 0x30113: 0x6dd2ba20,\n\t0x30114: 0x6dd2bc20, 0x30115: 0x6debe420, 0x30116: 0x6dd2be20, 0x30117: 0x6dd2ae20,\n\t0x30118: 0x6dd2c020, 0x30119: 0x6dd2c220, 0x3011a: 0x6dd2c420, 0x3011b: 0x6dd2c620,\n\t0x3011c: 0x6dd2c820, 0x3011d: 0x6dd2ca20, 0x3011e: 0x6db4c620, 0x3011f: 0x6dd2cc20,\n\t0x30120: 0x6dd2ce20, 0x30121: 0x6d668a20, 0x30122: 0x6dd2d020, 0x30123: 0x6dd2d220,\n\t0x30124: 0x6dd2d420, 0x30125: 0x6dd2d620, 0x30126: 0x6dd2d820, 0x30127: 0x6dd2da20,\n\t0x30128: 0x6dd2dc20, 0x30129: 0x6dd2de20, 0x3012a: 0x6dd2e020, 0x3012b: 0x6dd2e220,\n\t0x3012c: 0x6dd2e420, 0x3012d: 0x6dd2e620, 0x3012e: 0x6dd2e820, 0x3012f: 0x6dd2ea20,\n\t0x30130: 0x6dd2ec20, 0x30131: 0x6dd2ee20, 0x30132: 0x6dd2f020, 0x30133: 0x6dd2f220,\n\t0x30134: 0x6dd2f420, 0x30135: 0x6dd2f620, 0x30136: 0x6debf620, 0x30137: 0x6debf820,\n\t0x30138: 0x6debfa20, 0x30139: 0x6debfc20, 0x3013a: 0x6debfe20, 0x3013b: 0x6dec0020,\n\t0x3013c: 0x6dec0220, 0x3013d: 0x6dec0420, 0x3013e: 0x6dec0620, 0x3013f: 0x6dec0820,\n\t// Block 0xc05, offset 0x30140\n\t0x30140: 0x6dec0a20, 0x30141: 0x6debe220, 0x30142: 0x6dec0c20, 0x30143: 0x6dec0e20,\n\t0x30144: 0x6dec1020, 0x30145: 0x6dec1220, 0x30146: 0x6dec1420, 0x30147: 0x6dec1620,\n\t0x30148: 0x6dec1820, 0x30149: 0x6dec1a20, 0x3014a: 0x6dec1c20, 0x3014b: 0x6dec1e20,\n\t0x3014c: 0x6dec2020, 0x3014d: 0x6dec2220, 0x3014e: 0x6dd2f820, 0x3014f: 0x6dec2420,\n\t0x30150: 0x6e017020, 0x30151: 0x6e017220, 0x30152: 0x6e017420, 0x30153: 0x6e017620,\n\t0x30154: 0x6e017820, 0x30155: 0x6e017a20, 0x30156: 0x6e017c20, 0x30157: 0x6e017e20,\n\t0x30158: 0x6e018020, 0x30159: 0x6e018220, 0x3015a: 0x6e135620, 0x3015b: 0x6e135820,\n\t0x3015c: 0x6e135a20, 0x3015d: 0x6e135c20, 0x3015e: 0x6deca420, 0x3015f: 0x6e135e20,\n\t0x30160: 0x6e136020, 0x30161: 0x6e136220, 0x30162: 0x6e136420, 0x30163: 0x6e136620,\n\t0x30164: 0x6e136820, 0x30165: 0x6e212c20, 0x30166: 0x6e212e20, 0x30167: 0x6e213020,\n\t0x30168: 0x6e213220, 0x30169: 0x6e13c620, 0x3016a: 0x6e213420, 0x3016b: 0x6e13c820,\n\t0x3016c: 0x6e213620, 0x3016d: 0x6e2be220, 0x3016e: 0x6e2be420, 0x3016f: 0x6e2be620,\n\t0x30170: 0x6e2be820, 0x30171: 0x6e2bea20, 0x30172: 0x6e2bec20, 0x30173: 0x6e2bee20,\n\t0x30174: 0x6e2bda20, 0x30175: 0x6e342620, 0x30176: 0x6e342820, 0x30177: 0x6e342a20,\n\t0x30178: 0x6e342c20, 0x30179: 0x6e342e20, 0x3017a: 0x6e343020, 0x3017b: 0x6e39ec20,\n\t0x3017c: 0x6e3e1620, 0x3017d: 0x6e40de20, 0x3017e: 0x6e40e020, 0x3017f: 0x6e40fa20,\n\t// Block 0xc06, offset 0x30180\n\t0x30180: 0x6c14ce20, 0x30181: 0x6c5ff820, 0x30182: 0x6c5ffa20, 0x30183: 0x6c858420,\n\t0x30184: 0x6c858620, 0x30185: 0x6caf1c20, 0x30186: 0x6cde4420, 0x30187: 0x6cde4620,\n\t0x30188: 0x6cde4820, 0x30189: 0x6cde4a20, 0x3018a: 0x6e13ca20, 0x3018b: 0x6e345c20,\n\t0x3018c: 0x6c14d020, 0x3018d: 0x6c5ffe20, 0x3018e: 0x6c600020, 0x3018f: 0x6c859620,\n\t0x30190: 0x6caf2620, 0x30191: 0x6caf2820, 0x30192: 0x6caf2a20, 0x30193: 0x6caf2c20,\n\t0x30194: 0x6caf2e20, 0x30195: 0x6cde5220, 0x30196: 0x6cde5420, 0x30197: 0x6cde5620,\n\t0x30198: 0x6d0cc820, 0x30199: 0x6d0cca20, 0x3019a: 0x6d674620, 0x3019b: 0x6d674820,\n\t0x3019c: 0x6d674a20, 0x3019d: 0x6d674c20, 0x3019e: 0x6d912420, 0x3019f: 0x6d912620,\n\t0x301a0: 0x6d912820, 0x301a1: 0x6d912a20, 0x301a2: 0x6e345e20, 0x301a3: 0x6c14d220,\n\t0x301a4: 0x6c0a6020, 0x301a5: 0x6c404820, 0x301a6: 0x6c601220, 0x301a7: 0x6c601420,\n\t0x301a8: 0x6c404a20, 0x301a9: 0x6c601620, 0x301aa: 0x6c601820, 0x301ab: 0x6c601a20,\n\t0x301ac: 0x6c601c20, 0x301ad: 0x6c85a620, 0x301ae: 0x6c85a820, 0x301af: 0x6c85aa20,\n\t0x301b0: 0x6c85ac20, 0x301b1: 0x6c85ae20, 0x301b2: 0x6c85b020, 0x301b3: 0x6c85b220,\n\t0x301b4: 0x6c85b420, 0x301b5: 0x6c85b620, 0x301b6: 0x6c85b820, 0x301b7: 0x6c85ba20,\n\t0x301b8: 0x6c85bc20, 0x301b9: 0x6c85be20, 0x301ba: 0x6c85c020, 0x301bb: 0x6c85c220,\n\t0x301bc: 0x6c85c420, 0x301bd: 0x6c85c620, 0x301be: 0x6c85c820, 0x301bf: 0x6c85ca20,\n\t// Block 0xc07, offset 0x301c0\n\t0x301c0: 0x6c85cc20, 0x301c1: 0x6c85ce20, 0x301c2: 0x6c85d020, 0x301c3: 0x6c85d220,\n\t0x301c4: 0x6c85d420, 0x301c5: 0x6c85d620, 0x301c6: 0x6c85d820, 0x301c7: 0x6c85da20,\n\t0x301c8: 0x6caf4020, 0x301c9: 0x6caf4220, 0x301ca: 0x6caf4420, 0x301cb: 0x6caf4620,\n\t0x301cc: 0x6caf4820, 0x301cd: 0x6caf4a20, 0x301ce: 0x6caf4c20, 0x301cf: 0x6caf4e20,\n\t0x301d0: 0x6caf5020, 0x301d1: 0x6caf5220, 0x301d2: 0x6caf5420, 0x301d3: 0x6caf5620,\n\t0x301d4: 0x6caf5820, 0x301d5: 0x6caf5a20, 0x301d6: 0x6caf5c20, 0x301d7: 0x6caf5e20,\n\t0x301d8: 0x6caf6020, 0x301d9: 0x6caf6220, 0x301da: 0x6caf6420, 0x301db: 0x6caf6620,\n\t0x301dc: 0x6caf6820, 0x301dd: 0x6caf6a20, 0x301de: 0x6caf6c20, 0x301df: 0x6caf6e20,\n\t0x301e0: 0x6caf7020, 0x301e1: 0x6caf7220, 0x301e2: 0x6caf7420, 0x301e3: 0x6caf7620,\n\t0x301e4: 0x6caf7820, 0x301e5: 0x6caf7a20, 0x301e6: 0x6caf7c20, 0x301e7: 0x6caf7e20,\n\t0x301e8: 0x6caf8020, 0x301e9: 0x6caf8220, 0x301ea: 0x6caf8420, 0x301eb: 0x6caf8620,\n\t0x301ec: 0x6caf8820, 0x301ed: 0x6caf8a20, 0x301ee: 0x6caf8c20, 0x301ef: 0x6caf9020,\n\t0x301f0: 0x6caf8e20, 0x301f1: 0x6cde7820, 0x301f2: 0x6cde7a20, 0x301f3: 0x6cde7c20,\n\t0x301f4: 0x6cde7e20, 0x301f5: 0x6cde8020, 0x301f6: 0x6cde8220, 0x301f7: 0x6cde8420,\n\t0x301f8: 0x6cde8620, 0x301f9: 0x6cde8820, 0x301fa: 0x6cde8a20, 0x301fb: 0x6cde8c20,\n\t0x301fc: 0x6cde8e20, 0x301fd: 0x6cde9020, 0x301fe: 0x6cde9220, 0x301ff: 0x6cde9420,\n\t// Block 0xc08, offset 0x30200\n\t0x30200: 0x6cde9620, 0x30201: 0x6cde9820, 0x30202: 0x6cde9a20, 0x30203: 0x6cde9c20,\n\t0x30204: 0x6cde9e20, 0x30205: 0x6cdea020, 0x30206: 0x6cdea220, 0x30207: 0x6cdea420,\n\t0x30208: 0x6cdea620, 0x30209: 0x6cdea820, 0x3020a: 0x6d0ce020, 0x3020b: 0x6d0ce220,\n\t0x3020c: 0x6d0ce420, 0x3020d: 0x6d0ce620, 0x3020e: 0x6d0ce820, 0x3020f: 0x6d0cea20,\n\t0x30210: 0x6d0cec20, 0x30211: 0x6d0cee20, 0x30212: 0x6d0cf020, 0x30213: 0x6d0cf220,\n\t0x30214: 0x6d0cf420, 0x30215: 0x6d0cf620, 0x30216: 0x6d0cf820, 0x30217: 0x6cdeaa20,\n\t0x30218: 0x6d0cfa20, 0x30219: 0x6d0cfc20, 0x3021a: 0x6d0cfe20, 0x3021b: 0x6d0d0020,\n\t0x3021c: 0x6d0d0220, 0x3021d: 0x6d0d0420, 0x3021e: 0x6d0d0620, 0x3021f: 0x6d0d0820,\n\t0x30220: 0x6d0d0a20, 0x30221: 0x6d0d0c20, 0x30222: 0x6d3b2620, 0x30223: 0x6d0d0e20,\n\t0x30224: 0x6d0d1020, 0x30225: 0x6d0d1220, 0x30226: 0x6d676e20, 0x30227: 0x6d3b4820,\n\t0x30228: 0x6d3b4a20, 0x30229: 0x6d3b4c20, 0x3022a: 0x6d3b4e20, 0x3022b: 0x6d3b5020,\n\t0x3022c: 0x6d3b5220, 0x3022d: 0x6d3b5420, 0x3022e: 0x6d3b5620, 0x3022f: 0x6d3b5820,\n\t0x30230: 0x6d3b5a20, 0x30231: 0x6d3b5c20, 0x30232: 0x6d3b5e20, 0x30233: 0x6d3b6020,\n\t0x30234: 0x6d3b6220, 0x30235: 0x6d3b6420, 0x30236: 0x6d3b6620, 0x30237: 0x6d3b6820,\n\t0x30238: 0x6d3b6a20, 0x30239: 0x6d3b6c20, 0x3023a: 0x6d3b6e20, 0x3023b: 0x6d3b7020,\n\t0x3023c: 0x6d3b7220, 0x3023d: 0x6d3b7420, 0x3023e: 0x6d3b7620, 0x3023f: 0x6d3b7820,\n\t// Block 0xc09, offset 0x30240\n\t0x30240: 0x6d3b7a20, 0x30241: 0x6cdef820, 0x30242: 0x6d3b7c20, 0x30243: 0x6d3b7e20,\n\t0x30244: 0x6d3b8020, 0x30245: 0x6d677020, 0x30246: 0x6d677220, 0x30247: 0x6d677420,\n\t0x30248: 0x6d677620, 0x30249: 0x6d677820, 0x3024a: 0x6d677a20, 0x3024b: 0x6d677c20,\n\t0x3024c: 0x6d677e20, 0x3024d: 0x6d678020, 0x3024e: 0x6d678220, 0x3024f: 0x6d678420,\n\t0x30250: 0x6d678620, 0x30251: 0x6d678820, 0x30252: 0x6d678a20, 0x30253: 0x6d678c20,\n\t0x30254: 0x6d678e20, 0x30255: 0x6d679020, 0x30256: 0x6d679220, 0x30257: 0x6d679420,\n\t0x30258: 0x6d679620, 0x30259: 0x6d679820, 0x3025a: 0x6d3b8220, 0x3025b: 0x6d679a20,\n\t0x3025c: 0x6d679c20, 0x3025d: 0x6d679e20, 0x3025e: 0x6d913c20, 0x3025f: 0x6d913e20,\n\t0x30260: 0x6d914020, 0x30261: 0x6d914220, 0x30262: 0x6d914420, 0x30263: 0x6d914620,\n\t0x30264: 0x6d914820, 0x30265: 0x6d914a20, 0x30266: 0x6d914c20, 0x30267: 0x6d914e20,\n\t0x30268: 0x6d915020, 0x30269: 0x6d915220, 0x3026a: 0x6d915420, 0x3026b: 0x6d915620,\n\t0x3026c: 0x6d915820, 0x3026d: 0x6d915a20, 0x3026e: 0x6d915c20, 0x3026f: 0x6d915e20,\n\t0x30270: 0x6d916020, 0x30271: 0x6d916220, 0x30272: 0x6d916420, 0x30273: 0x6db4ee20,\n\t0x30274: 0x6d916620, 0x30275: 0x6db4f020, 0x30276: 0x6db4f220, 0x30277: 0x6db4f420,\n\t0x30278: 0x6db4f620, 0x30279: 0x6db4f820, 0x3027a: 0x6db4fa20, 0x3027b: 0x6db4fc20,\n\t0x3027c: 0x6db4fe20, 0x3027d: 0x6db50020, 0x3027e: 0x6db50220, 0x3027f: 0x6db50420,\n\t// Block 0xc0a, offset 0x30280\n\t0x30280: 0x6db50620, 0x30281: 0x6db50820, 0x30282: 0x6db50a20, 0x30283: 0x6db50c20,\n\t0x30284: 0x6db50e20, 0x30285: 0x6db51020, 0x30286: 0x6dd3b620, 0x30287: 0x6dd3b820,\n\t0x30288: 0x6dd3ba20, 0x30289: 0x6dd3bc20, 0x3028a: 0x6dd3be20, 0x3028b: 0x6dd3c020,\n\t0x3028c: 0x6dd3c220, 0x3028d: 0x6dd3c420, 0x3028e: 0x6dd3c620, 0x3028f: 0x6dd3c820,\n\t0x30290: 0x6dd3ca20, 0x30291: 0x6dd3cc20, 0x30292: 0x6db51420, 0x30293: 0x6dd3ce20,\n\t0x30294: 0x6db51220, 0x30295: 0x6dd3d020, 0x30296: 0x6decb020, 0x30297: 0x6decb220,\n\t0x30298: 0x6decb420, 0x30299: 0x6decb620, 0x3029a: 0x6decb820, 0x3029b: 0x6decba20,\n\t0x3029c: 0x6decbc20, 0x3029d: 0x6decbe20, 0x3029e: 0x6decc020, 0x3029f: 0x6decc220,\n\t0x302a0: 0x6decc420, 0x302a1: 0x6decc620, 0x302a2: 0x6decc820, 0x302a3: 0x6e01ec20,\n\t0x302a4: 0x6e01ee20, 0x302a5: 0x6e01f020, 0x302a6: 0x6e01f220, 0x302a7: 0x6e01f420,\n\t0x302a8: 0x6e01f620, 0x302a9: 0x6e13d220, 0x302aa: 0x6e13d420, 0x302ab: 0x6e13d620,\n\t0x302ac: 0x6e13d820, 0x302ad: 0x6e13da20, 0x302ae: 0x6e13dc20, 0x302af: 0x6e218e20,\n\t0x302b0: 0x6e219020, 0x302b1: 0x6e219220, 0x302b2: 0x6e219420, 0x302b3: 0x6e2c2620,\n\t0x302b4: 0x6e2c2820, 0x302b5: 0x6e346420, 0x302b6: 0x6e2c2a20, 0x302b7: 0x6e346620,\n\t0x302b8: 0x6e3a0c20, 0x302b9: 0x6e3a0e20, 0x302ba: 0x6e3a1020, 0x302bb: 0x6e3a1220,\n\t0x302bc: 0x6e3a1420, 0x302bd: 0x6e40fc20, 0x302be: 0x6c14d420, 0x302bf: 0x6c14d620,\n\t// Block 0xc0b, offset 0x302c0\n\t0x302c0: 0x6c14d820, 0x302c1: 0x6c606620, 0x302c2: 0x6cafe420, 0x302c3: 0x6cdefe20,\n\t0x302c4: 0x6cdf0020, 0x302c5: 0x6d0d7620, 0x302c6: 0x6dd40e20, 0x302c7: 0x6decfe20,\n\t0x302c8: 0x6ded0020, 0x302c9: 0x6e2c3820, 0x302ca: 0x6e3a2020, 0x302cb: 0x6c26a020,\n\t0x302cc: 0x6c606e20, 0x302cd: 0x6c862e20, 0x302ce: 0x6c863020, 0x302cf: 0x6caff420,\n\t0x302d0: 0x6caff620, 0x302d1: 0x6caff820, 0x302d2: 0x6caffa20, 0x302d3: 0x6caffc20,\n\t0x302d4: 0x6caffe20, 0x302d5: 0x6cdf1220, 0x302d6: 0x6ca6aa20, 0x302d7: 0x6cdf1420,\n\t0x302d8: 0x6cdf1620, 0x302d9: 0x6cdf0820, 0x302da: 0x6cdf1820, 0x302db: 0x6d0d8020,\n\t0x302dc: 0x6d0d8220, 0x302dd: 0x6d3bf020, 0x302de: 0x6d3bf220, 0x302df: 0x6d3bf420,\n\t0x302e0: 0x6d3bf620, 0x302e1: 0x6d3bf820, 0x302e2: 0x6d67fc20, 0x302e3: 0x6d67fe20,\n\t0x302e4: 0x6d680020, 0x302e5: 0x6d680220, 0x302e6: 0x6d91ca20, 0x302e7: 0x6d91cc20,\n\t0x302e8: 0x6d91ce20, 0x302e9: 0x6d683220, 0x302ea: 0x6d91d020, 0x302eb: 0x6db58620,\n\t0x302ec: 0x6db58820, 0x302ed: 0x6db58a20, 0x302ee: 0x6db58c20, 0x302ef: 0x6db58e20,\n\t0x302f0: 0x6dd41820, 0x302f1: 0x6dd41a20, 0x302f2: 0x6dd41c20, 0x302f3: 0x6dd41e20,\n\t0x302f4: 0x6ded0e20, 0x302f5: 0x6ded1020, 0x302f6: 0x6ded1220, 0x302f7: 0x6ded1420,\n\t0x302f8: 0x6ded1620, 0x302f9: 0x6e021a20, 0x302fa: 0x6e021c20, 0x302fb: 0x6e021e20,\n\t0x302fc: 0x6e13fe20, 0x302fd: 0x6e140020, 0x302fe: 0x6e21a220, 0x302ff: 0x6e21a420,\n\t// Block 0xc0c, offset 0x30300\n\t0x30300: 0x6e3a2420, 0x30301: 0x6c050c20, 0x30302: 0x6c14da20, 0x30303: 0x6c26a220,\n\t0x30304: 0x6c407220, 0x30305: 0x6c407420, 0x30306: 0x6c5adc20, 0x30307: 0x6c607220,\n\t0x30308: 0x6c607420, 0x30309: 0x6c607620, 0x3030a: 0x6c863e20, 0x3030b: 0x6cb01c20,\n\t0x3030c: 0x6cdf3420, 0x3030d: 0x6cdf3620, 0x3030e: 0x6d0dac20, 0x3030f: 0x6d3c1e20,\n\t0x30310: 0x6d683420, 0x30311: 0x6d683620, 0x30312: 0x6c26a620, 0x30313: 0x6c607c20,\n\t0x30314: 0x6c607e20, 0x30315: 0x6cb02020, 0x30316: 0x6cb02220, 0x30317: 0x6cb02420,\n\t0x30318: 0x6cb02620, 0x30319: 0x6cb02820, 0x3031a: 0x6cdf3820, 0x3031b: 0x6cdf3a20,\n\t0x3031c: 0x6d0db620, 0x3031d: 0x6cdf3c20, 0x3031e: 0x6cdf3e20, 0x3031f: 0x6d0db820,\n\t0x30320: 0x6d0dba20, 0x30321: 0x6d0dbc20, 0x30322: 0x6d0dbe20, 0x30323: 0x6d0dc020,\n\t0x30324: 0x6d0dc220, 0x30325: 0x6d0dc420, 0x30326: 0x6d0dc620, 0x30327: 0x6d0dc820,\n\t0x30328: 0x6d3c2220, 0x30329: 0x6d3c2420, 0x3032a: 0x6d3c2620, 0x3032b: 0x6d3c2820,\n\t0x3032c: 0x6d684420, 0x3032d: 0x6d684620, 0x3032e: 0x6d684820, 0x3032f: 0x6d684a20,\n\t0x30330: 0x6d687a20, 0x30331: 0x6d920a20, 0x30332: 0x6db5ac20, 0x30333: 0x6db5ae20,\n\t0x30334: 0x6dd43820, 0x30335: 0x6ded2a20, 0x30336: 0x6ded2c20, 0x30337: 0x6e023220,\n\t0x30338: 0x6e023420, 0x30339: 0x6e023620, 0x3033a: 0x6e140a20, 0x3033b: 0x6e21b420,\n\t0x3033c: 0x6e21b620, 0x3033d: 0x6e2c3c20, 0x3033e: 0x6e2c3e20, 0x3033f: 0x6e3a3820,\n\t// Block 0xc0d, offset 0x30340\n\t0x30340: 0x6c26aa20, 0x30341: 0x6c26ac20, 0x30342: 0x6c608c20, 0x30343: 0x6c608e20,\n\t0x30344: 0x6c609020, 0x30345: 0x6c609220, 0x30346: 0x6c609420, 0x30347: 0x6c609620,\n\t0x30348: 0x6c609820, 0x30349: 0x6c864e20, 0x3034a: 0x6c865020, 0x3034b: 0x6c865220,\n\t0x3034c: 0x6c865420, 0x3034d: 0x6c865620, 0x3034e: 0x6c865820, 0x3034f: 0x6c865a20,\n\t0x30350: 0x6c865c20, 0x30351: 0x6c865e20, 0x30352: 0x6c866020, 0x30353: 0x6c866220,\n\t0x30354: 0x6c866420, 0x30355: 0x6c866620, 0x30356: 0x6c866820, 0x30357: 0x6c866a20,\n\t0x30358: 0x6c866c20, 0x30359: 0x6c866e20, 0x3035a: 0x6c867020, 0x3035b: 0x6cb07820,\n\t0x3035c: 0x6cb07a20, 0x3035d: 0x6cb07c20, 0x3035e: 0x6cb07e20, 0x3035f: 0x6cb08020,\n\t0x30360: 0x6cb08220, 0x30361: 0x6cb08420, 0x30362: 0x6cb08620, 0x30363: 0x6cb08820,\n\t0x30364: 0x6cb08a20, 0x30365: 0x6cb08c20, 0x30366: 0x6cb08e20, 0x30367: 0x6cb09020,\n\t0x30368: 0x6cb09220, 0x30369: 0x6cb09420, 0x3036a: 0x6cb09620, 0x3036b: 0x6cb09820,\n\t0x3036c: 0x6cb09a20, 0x3036d: 0x6cb09c20, 0x3036e: 0x6cb09e20, 0x3036f: 0x6cb0a020,\n\t0x30370: 0x6cb0a220, 0x30371: 0x6cb0a420, 0x30372: 0x6cb0a620, 0x30373: 0x6cb0a820,\n\t0x30374: 0x6cdf8020, 0x30375: 0x6cdf8220, 0x30376: 0x6cdf8420, 0x30377: 0x6cdf8620,\n\t0x30378: 0x6cdf8820, 0x30379: 0x6cdf8a20, 0x3037a: 0x6cdf8c20, 0x3037b: 0x6cdf8e20,\n\t0x3037c: 0x6cdf9020, 0x3037d: 0x6cdf9220, 0x3037e: 0x6d0ddc20, 0x3037f: 0x6d0dde20,\n\t// Block 0xc0e, offset 0x30380\n\t0x30380: 0x6cdf9420, 0x30381: 0x6cdf9620, 0x30382: 0x6cdf9820, 0x30383: 0x6cdf9a20,\n\t0x30384: 0x6cdf9c20, 0x30385: 0x6cdf9e20, 0x30386: 0x6cdfa020, 0x30387: 0x6cdfa220,\n\t0x30388: 0x6cdfa420, 0x30389: 0x6cdfa620, 0x3038a: 0x6cdfa820, 0x3038b: 0x6cdfaa20,\n\t0x3038c: 0x6cdfac20, 0x3038d: 0x6cdfae20, 0x3038e: 0x6cdfb020, 0x3038f: 0x6cdfb220,\n\t0x30390: 0x6cdfb420, 0x30391: 0x6cdfb620, 0x30392: 0x6cdfb820, 0x30393: 0x6cdfba20,\n\t0x30394: 0x6cdfbc20, 0x30395: 0x6cdfbe20, 0x30396: 0x6cdfc020, 0x30397: 0x6cdfc220,\n\t0x30398: 0x6cdfc420, 0x30399: 0x6cdfc620, 0x3039a: 0x6cdfc820, 0x3039b: 0x6cdfca20,\n\t0x3039c: 0x6cdfcc20, 0x3039d: 0x6cdfce20, 0x3039e: 0x6cdfd020, 0x3039f: 0x6cdfd220,\n\t0x303a0: 0x6cdfd420, 0x303a1: 0x6d0df220, 0x303a2: 0x6d0df420, 0x303a3: 0x6d0df620,\n\t0x303a4: 0x6d0df820, 0x303a5: 0x6d0dfa20, 0x303a6: 0x6d0dfc20, 0x303a7: 0x6d0dfe20,\n\t0x303a8: 0x6d0e0020, 0x303a9: 0x6d0e0220, 0x303aa: 0x6d0e0420, 0x303ab: 0x6d0e0620,\n\t0x303ac: 0x6d0e0820, 0x303ad: 0x6d0e0a20, 0x303ae: 0x6d0e0c20, 0x303af: 0x6d0e0e20,\n\t0x303b0: 0x6d0e1020, 0x303b1: 0x6d0e1220, 0x303b2: 0x6d0e1420, 0x303b3: 0x6d0e1620,\n\t0x303b4: 0x6d0e1820, 0x303b5: 0x6d0e1a20, 0x303b6: 0x6d0e1c20, 0x303b7: 0x6d0e1e20,\n\t0x303b8: 0x6d0e2020, 0x303b9: 0x6d0e2220, 0x303ba: 0x6d0e2420, 0x303bb: 0x6d0e2620,\n\t0x303bc: 0x6d0e2820, 0x303bd: 0x6d0e2a20, 0x303be: 0x6d0e2c20, 0x303bf: 0x6d0e2e20,\n\t// Block 0xc0f, offset 0x303c0\n\t0x303c0: 0x6d0e3020, 0x303c1: 0x6d0e3220, 0x303c2: 0x6d0e3420, 0x303c3: 0x6d0e3620,\n\t0x303c4: 0x6d0e3820, 0x303c5: 0x6d0e3a20, 0x303c6: 0x6d0e3c20, 0x303c7: 0x6d0e3e20,\n\t0x303c8: 0x6d0e4020, 0x303c9: 0x6d0e4220, 0x303ca: 0x6d0e4420, 0x303cb: 0x6d3c5a20,\n\t0x303cc: 0x6d3c5c20, 0x303cd: 0x6d3c5e20, 0x303ce: 0x6d3c6020, 0x303cf: 0x6d3c6220,\n\t0x303d0: 0x6d3c6420, 0x303d1: 0x6d3c6620, 0x303d2: 0x6d3c6820, 0x303d3: 0x6d3c6a20,\n\t0x303d4: 0x6d3c6c20, 0x303d5: 0x6d687c20, 0x303d6: 0x6d3c6e20, 0x303d7: 0x6d3c7020,\n\t0x303d8: 0x6d3c7220, 0x303d9: 0x6d3c7420, 0x303da: 0x6d3c7620, 0x303db: 0x6d3c7820,\n\t0x303dc: 0x6d3c7a20, 0x303dd: 0x6d3c7c20, 0x303de: 0x6d3c7e20, 0x303df: 0x6d3c8020,\n\t0x303e0: 0x6d0e4620, 0x303e1: 0x6d3c8220, 0x303e2: 0x6d3c8420, 0x303e3: 0x6d3c8620,\n\t0x303e4: 0x6d3c8820, 0x303e5: 0x6d3c8a20, 0x303e6: 0x6d3c8c20, 0x303e7: 0x6d3c8e20,\n\t0x303e8: 0x6d3c9020, 0x303e9: 0x6d3c9220, 0x303ea: 0x6d3c9420, 0x303eb: 0x6d3c9620,\n\t0x303ec: 0x6d3c9820, 0x303ed: 0x6d3c9a20, 0x303ee: 0x6d3c9c20, 0x303ef: 0x6d689e20,\n\t0x303f0: 0x6d68a020, 0x303f1: 0x6d68a220, 0x303f2: 0x6d68a420, 0x303f3: 0x6d68a620,\n\t0x303f4: 0x6d68a820, 0x303f5: 0x6d68aa20, 0x303f6: 0x6d68ac20, 0x303f7: 0x6d68ae20,\n\t0x303f8: 0x6d68b020, 0x303f9: 0x6d68b220, 0x303fa: 0x6d68b420, 0x303fb: 0x6d68b620,\n\t0x303fc: 0x6d68b820, 0x303fd: 0x6d68ba20, 0x303fe: 0x6d68bc20, 0x303ff: 0x6d68be20,\n\t// Block 0xc10, offset 0x30400\n\t0x30400: 0x6d68c020, 0x30401: 0x6d68c220, 0x30402: 0x6d68c420, 0x30403: 0x6d68c620,\n\t0x30404: 0x6d68c820, 0x30405: 0x6d68ca20, 0x30406: 0x6d68cc20, 0x30407: 0x6d68ce20,\n\t0x30408: 0x6d68d020, 0x30409: 0x6d68d220, 0x3040a: 0x6d68d420, 0x3040b: 0x6d68d620,\n\t0x3040c: 0x6d68d820, 0x3040d: 0x6d68da20, 0x3040e: 0x6d68dc20, 0x3040f: 0x6d68de20,\n\t0x30410: 0x6d68e020, 0x30411: 0x6d68e220, 0x30412: 0x6d68e420, 0x30413: 0x6d68e620,\n\t0x30414: 0x6d68e820, 0x30415: 0x6d68ea20, 0x30416: 0x6d68ec20, 0x30417: 0x6d68ee20,\n\t0x30418: 0x6d68f020, 0x30419: 0x6d68f220, 0x3041a: 0x6d68f420, 0x3041b: 0x6d697620,\n\t0x3041c: 0x6d923c20, 0x3041d: 0x6d923e20, 0x3041e: 0x6d924020, 0x3041f: 0x6d924220,\n\t0x30420: 0x6d924420, 0x30421: 0x6d924620, 0x30422: 0x6d924820, 0x30423: 0x6d924a20,\n\t0x30424: 0x6d924c20, 0x30425: 0x6d924e20, 0x30426: 0x6d925020, 0x30427: 0x6d925220,\n\t0x30428: 0x6d925420, 0x30429: 0x6d68f620, 0x3042a: 0x6d925620, 0x3042b: 0x6d925820,\n\t0x3042c: 0x6d925a20, 0x3042d: 0x6d925c20, 0x3042e: 0x6d925e20, 0x3042f: 0x6d926020,\n\t0x30430: 0x6d926220, 0x30431: 0x6d926420, 0x30432: 0x6d926620, 0x30433: 0x6d926820,\n\t0x30434: 0x6d926a20, 0x30435: 0x6d926c20, 0x30436: 0x6d926e20, 0x30437: 0x6d927020,\n\t0x30438: 0x6d697820, 0x30439: 0x6d927220, 0x3043a: 0x6d927420, 0x3043b: 0x6d927620,\n\t0x3043c: 0x6d927820, 0x3043d: 0x6d927a20, 0x3043e: 0x6d927c20, 0x3043f: 0x6d927e20,\n\t// Block 0xc11, offset 0x30440\n\t0x30440: 0x6d928020, 0x30441: 0x6d928220, 0x30442: 0x6d928420, 0x30443: 0x6d928620,\n\t0x30444: 0x6db5e020, 0x30445: 0x6db5e220, 0x30446: 0x6db5e420, 0x30447: 0x6db5e620,\n\t0x30448: 0x6db5e820, 0x30449: 0x6db5ea20, 0x3044a: 0x6db5ec20, 0x3044b: 0x6db5ee20,\n\t0x3044c: 0x6db5f020, 0x3044d: 0x6db5f220, 0x3044e: 0x6db5f420, 0x3044f: 0x6db5f620,\n\t0x30450: 0x6db5f820, 0x30451: 0x6db5fa20, 0x30452: 0x6db5fc20, 0x30453: 0x6db5fe20,\n\t0x30454: 0x6d92fc20, 0x30455: 0x6db60020, 0x30456: 0x6db60220, 0x30457: 0x6db60420,\n\t0x30458: 0x6db60620, 0x30459: 0x6db60820, 0x3045a: 0x6db60a20, 0x3045b: 0x6db60c20,\n\t0x3045c: 0x6db60e20, 0x3045d: 0x6db61020, 0x3045e: 0x6db61220, 0x3045f: 0x6db61420,\n\t0x30460: 0x6db61620, 0x30461: 0x6db61820, 0x30462: 0x6db61a20, 0x30463: 0x6dd46220,\n\t0x30464: 0x6dd46420, 0x30465: 0x6dd46620, 0x30466: 0x6dd46820, 0x30467: 0x6dd46a20,\n\t0x30468: 0x6dd46c20, 0x30469: 0x6dd46e20, 0x3046a: 0x6dd47020, 0x3046b: 0x6dd47220,\n\t0x3046c: 0x6dd47420, 0x3046d: 0x6dd47620, 0x3046e: 0x6dd47820, 0x3046f: 0x6dd47a20,\n\t0x30470: 0x6dd47c20, 0x30471: 0x6dd47e20, 0x30472: 0x6dd48020, 0x30473: 0x6dd48220,\n\t0x30474: 0x6dd48420, 0x30475: 0x6dd48620, 0x30476: 0x6dd48820, 0x30477: 0x6dd48a20,\n\t0x30478: 0x6dd48c20, 0x30479: 0x6dd48e20, 0x3047a: 0x6dd49020, 0x3047b: 0x6dd49220,\n\t0x3047c: 0x6dd49420, 0x3047d: 0x6dd49620, 0x3047e: 0x6dd49820, 0x3047f: 0x6ded5020,\n\t// Block 0xc12, offset 0x30480\n\t0x30480: 0x6ded5220, 0x30481: 0x6ded5420, 0x30482: 0x6ded5620, 0x30483: 0x6ded5820,\n\t0x30484: 0x6ded5a20, 0x30485: 0x6e141420, 0x30486: 0x6ded5c20, 0x30487: 0x6dd4fa20,\n\t0x30488: 0x6ded5e20, 0x30489: 0x6ded6020, 0x3048a: 0x6ded6220, 0x3048b: 0x6ded6420,\n\t0x3048c: 0x6ded6620, 0x3048d: 0x6e024e20, 0x3048e: 0x6ded6820, 0x3048f: 0x6ded6a20,\n\t0x30490: 0x6ded6c20, 0x30491: 0x6ded6e20, 0x30492: 0x6ded7020, 0x30493: 0x6ded7220,\n\t0x30494: 0x6ded7420, 0x30495: 0x6ded7620, 0x30496: 0x6ded7820, 0x30497: 0x6ded7a20,\n\t0x30498: 0x6ded7c20, 0x30499: 0x6ded7e20, 0x3049a: 0x6ded8020, 0x3049b: 0x6ded8220,\n\t0x3049c: 0x6ded8420, 0x3049d: 0x6e025020, 0x3049e: 0x6e025220, 0x3049f: 0x6e025420,\n\t0x304a0: 0x6e025620, 0x304a1: 0x6e025820, 0x304a2: 0x6e025a20, 0x304a3: 0x6e025c20,\n\t0x304a4: 0x6e025e20, 0x304a5: 0x6e026020, 0x304a6: 0x6e026220, 0x304a7: 0x6e026420,\n\t0x304a8: 0x6e026620, 0x304a9: 0x6e026820, 0x304aa: 0x6e026a20, 0x304ab: 0x6e026c20,\n\t0x304ac: 0x6e026e20, 0x304ad: 0x6e027020, 0x304ae: 0x6e027220, 0x304af: 0x6e027420,\n\t0x304b0: 0x6e027620, 0x304b1: 0x6e027820, 0x304b2: 0x6e027a20, 0x304b3: 0x6e142220,\n\t0x304b4: 0x6e142420, 0x304b5: 0x6e142620, 0x304b6: 0x6e142820, 0x304b7: 0x6e142a20,\n\t0x304b8: 0x6e142c20, 0x304b9: 0x6e142e20, 0x304ba: 0x6e143020, 0x304bb: 0x6e143220,\n\t0x304bc: 0x6e143420, 0x304bd: 0x6e143620, 0x304be: 0x6e21c820, 0x304bf: 0x6e21ca20,\n\t// Block 0xc13, offset 0x304c0\n\t0x304c0: 0x6e21cc20, 0x304c1: 0x6e21ce20, 0x304c2: 0x6e21d020, 0x304c3: 0x6e21d220,\n\t0x304c4: 0x6e21d420, 0x304c5: 0x6e21d620, 0x304c6: 0x6e221420, 0x304c7: 0x6e2c4620,\n\t0x304c8: 0x6e2c4820, 0x304c9: 0x6e2c4a20, 0x304ca: 0x6e2c4c20, 0x304cb: 0x6e2c4e20,\n\t0x304cc: 0x6e2c5020, 0x304cd: 0x6e2c5220, 0x304ce: 0x6e2c5420, 0x304cf: 0x6e2c5620,\n\t0x304d0: 0x6e2c5820, 0x304d1: 0x6e347c20, 0x304d2: 0x6e347e20, 0x304d3: 0x6e348020,\n\t0x304d4: 0x6e348220, 0x304d5: 0x6e348420, 0x304d6: 0x6e348620, 0x304d7: 0x6e3a3c20,\n\t0x304d8: 0x6e3a3e20, 0x304d9: 0x6e3a4020, 0x304da: 0x6e3e3420, 0x304db: 0x6e3e3620,\n\t0x304dc: 0x6e410420, 0x304dd: 0x6e410620, 0x304de: 0x6e410820, 0x304df: 0x6e448020,\n\t0x304e0: 0x6c00c820, 0x304e1: 0x6c050e20, 0x304e2: 0x6c051020, 0x304e3: 0x6c051220,\n\t0x304e4: 0x6c051420, 0x304e5: 0x6c051620, 0x304e6: 0x6c0a6420, 0x304e7: 0x6c0a6620,\n\t0x304e8: 0x6c0a6820, 0x304e9: 0x6c0a6a20, 0x304ea: 0x6c0a6c20, 0x304eb: 0x6c0a6e20,\n\t0x304ec: 0x6c0a7020, 0x304ed: 0x6c0a7220, 0x304ee: 0x6c0a7420, 0x304ef: 0x6c0a7620,\n\t0x304f0: 0x6c0a7820, 0x304f1: 0x6c0a7a20, 0x304f2: 0x6c14dc20, 0x304f3: 0x6c14de20,\n\t0x304f4: 0x6c14e020, 0x304f5: 0x6c14e220, 0x304f6: 0x6c14e420, 0x304f7: 0x6c14e620,\n\t0x304f8: 0x6c14e820, 0x304f9: 0x6c14ea20, 0x304fa: 0x6c14ec20, 0x304fb: 0x6c14ee20,\n\t0x304fc: 0x6c14f020, 0x304fd: 0x6c14f220, 0x304fe: 0x6c14f420, 0x304ff: 0x6c14f620,\n\t// Block 0xc14, offset 0x30500\n\t0x30500: 0x6c14f820, 0x30501: 0x6c26b220, 0x30502: 0x6c26b420, 0x30503: 0x6c26b620,\n\t0x30504: 0x6c26b820, 0x30505: 0x6c26ba20, 0x30506: 0x6c26bc20, 0x30507: 0x6c26be20,\n\t0x30508: 0x6c26c020, 0x30509: 0x6c26c220, 0x3050a: 0x6c26c420, 0x3050b: 0x6c26c620,\n\t0x3050c: 0x6c26c820, 0x3050d: 0x6c26ca20, 0x3050e: 0x6c26cc20, 0x3050f: 0x6c26ce20,\n\t0x30510: 0x6c26d020, 0x30511: 0x6c26d220, 0x30512: 0x6c26d420, 0x30513: 0x6c407e20,\n\t0x30514: 0x6c408020, 0x30515: 0x6c408220, 0x30516: 0x6c408420, 0x30517: 0x6c408620,\n\t0x30518: 0x6c408820, 0x30519: 0x6c408a20, 0x3051a: 0x6c408c20, 0x3051b: 0x6c408e20,\n\t0x3051c: 0x6c409020, 0x3051d: 0x6c409220, 0x3051e: 0x6c409420, 0x3051f: 0x6c409620,\n\t0x30520: 0x6c409820, 0x30521: 0x6c409a20, 0x30522: 0x6c409c20, 0x30523: 0x6c409e20,\n\t0x30524: 0x6c40a020, 0x30525: 0x6c40a220, 0x30526: 0x6c40a420, 0x30527: 0x6c40a620,\n\t0x30528: 0x6c40a820, 0x30529: 0x6c40aa20, 0x3052a: 0x6c609c20, 0x3052b: 0x6c609e20,\n\t0x3052c: 0x6c60a020, 0x3052d: 0x6c60a220, 0x3052e: 0x6c60a420, 0x3052f: 0x6c60a620,\n\t0x30530: 0x6c60a820, 0x30531: 0x6c60aa20, 0x30532: 0x6c60ac20, 0x30533: 0x6c60ae20,\n\t0x30534: 0x6c60b020, 0x30535: 0x6c60b220, 0x30536: 0x6c60b420, 0x30537: 0x6c869020,\n\t0x30538: 0x6c869220, 0x30539: 0x6c869420, 0x3053a: 0x6c869620, 0x3053b: 0x6c869820,\n\t0x3053c: 0x6c869a20, 0x3053d: 0x6c869c20, 0x3053e: 0x6c869e20, 0x3053f: 0x6c86a020,\n\t// Block 0xc15, offset 0x30540\n\t0x30540: 0x6c86a220, 0x30541: 0x6c86a420, 0x30542: 0x6c86a620, 0x30543: 0x6c86a820,\n\t0x30544: 0x6c86aa20, 0x30545: 0x6c86ac20, 0x30546: 0x6c86ae20, 0x30547: 0x6c86b020,\n\t0x30548: 0x6c86b220, 0x30549: 0x6c86b420, 0x3054a: 0x6c86b620, 0x3054b: 0x6cb10c20,\n\t0x3054c: 0x6cb10e20, 0x3054d: 0x6cb11020, 0x3054e: 0x6cb11220, 0x3054f: 0x6cb11420,\n\t0x30550: 0x6cb11620, 0x30551: 0x6cb11820, 0x30552: 0x6cb11a20, 0x30553: 0x6cb11c20,\n\t0x30554: 0x6cb11e20, 0x30555: 0x6cb12020, 0x30556: 0x6cb12220, 0x30557: 0x6cb12420,\n\t0x30558: 0x6cb12620, 0x30559: 0x6cb12820, 0x3055a: 0x6cb12a20, 0x3055b: 0x6cb12c20,\n\t0x3055c: 0x6cb12e20, 0x3055d: 0x6cb13020, 0x3055e: 0x6cb13220, 0x3055f: 0x6ce02c20,\n\t0x30560: 0x6ce02e20, 0x30561: 0x6ce03020, 0x30562: 0x6ce03220, 0x30563: 0x6ce03420,\n\t0x30564: 0x6ce03620, 0x30565: 0x6ce03820, 0x30566: 0x6ce03a20, 0x30567: 0x6ce03c20,\n\t0x30568: 0x6d0eb420, 0x30569: 0x6d0eb620, 0x3056a: 0x6d0eb820, 0x3056b: 0x6d0eba20,\n\t0x3056c: 0x6d0ebc20, 0x3056d: 0x6d3d0620, 0x3056e: 0x6d3d0820, 0x3056f: 0x6d3d0a20,\n\t0x30570: 0x6d3d0c20, 0x30571: 0x6d3d0e20, 0x30572: 0x6d3d1020, 0x30573: 0x6d697c20,\n\t0x30574: 0x6d697e20, 0x30575: 0x6d698020, 0x30576: 0x6dede020, 0x30577: 0x6c26e620,\n\t0x30578: 0x6c86c620, 0x30579: 0x6cb14020, 0x3057a: 0x6cb14220, 0x3057b: 0x6cb14420,\n\t0x3057c: 0x6d0ec220, 0x3057d: 0x6d3d1820, 0x3057e: 0x6d698620, 0x3057f: 0x6db6a020,\n\t// Block 0xc16, offset 0x30580\n\t0x30580: 0x6db6a220, 0x30581: 0x6db6a420, 0x30582: 0x6dd50020, 0x30583: 0x6dede220,\n\t0x30584: 0x6e221820, 0x30585: 0x6e2c7820, 0x30586: 0x6c26ea20, 0x30587: 0x6c86ce20,\n\t0x30588: 0x6c86d020, 0x30589: 0x6cb15220, 0x3058a: 0x6d0ecc20, 0x3058b: 0x6d0ece20,\n\t0x3058c: 0x6d699820, 0x3058d: 0x6d699a20, 0x3058e: 0x6d699c20, 0x3058f: 0x6db6b420,\n\t0x30590: 0x6dd50420, 0x30591: 0x6e02ba20, 0x30592: 0x6e3a5620, 0x30593: 0x6e411420,\n\t0x30594: 0x6e431e20, 0x30595: 0x6c26ec20, 0x30596: 0x6c40b820, 0x30597: 0x6c86da20,\n\t0x30598: 0x6cb15c20, 0x30599: 0x6cb15e20, 0x3059a: 0x6cb16020, 0x3059b: 0x6cb16220,\n\t0x3059c: 0x6cb16420, 0x3059d: 0x6cb16620, 0x3059e: 0x6ce05e20, 0x3059f: 0x6ce06020,\n\t0x305a0: 0x6ce06220, 0x305a1: 0x6ce06420, 0x305a2: 0x6d0ed820, 0x305a3: 0x6d0eda20,\n\t0x305a4: 0x6d0edc20, 0x305a5: 0x6d0ede20, 0x305a6: 0x6d0ee020, 0x305a7: 0x6d3d2c20,\n\t0x305a8: 0x6d3d2e20, 0x305a9: 0x6d3d3020, 0x305aa: 0x6d3d3220, 0x305ab: 0x6d932420,\n\t0x305ac: 0x6d69da20, 0x305ad: 0x6d932620, 0x305ae: 0x6d932820, 0x305af: 0x6db6c620,\n\t0x305b0: 0x6db6c820, 0x305b1: 0x6db6ca20, 0x305b2: 0x6db6cc20, 0x305b3: 0x6db6ce20,\n\t0x305b4: 0x6dd51620, 0x305b5: 0x6dd51820, 0x305b6: 0x6dee1620, 0x305b7: 0x6dee0a20,\n\t0x305b8: 0x6c26f220, 0x305b9: 0x6c86e420, 0x305ba: 0x6c86e620, 0x305bb: 0x6c86e820,\n\t0x305bc: 0x6cb18020, 0x305bd: 0x6cb18220, 0x305be: 0x6ce07e20, 0x305bf: 0x6ce08020,\n\t// Block 0xc17, offset 0x305c0\n\t0x305c0: 0x6ce08220, 0x305c1: 0x6ce08420, 0x305c2: 0x6ce08620, 0x305c3: 0x6ce08820,\n\t0x305c4: 0x6d0efe20, 0x305c5: 0x6d0f0020, 0x305c6: 0x6d0f0220, 0x305c7: 0x6d0f0420,\n\t0x305c8: 0x6d0f0620, 0x305c9: 0x6d0f0820, 0x305ca: 0x6d0f0a20, 0x305cb: 0x6d3d5020,\n\t0x305cc: 0x6d3d5220, 0x305cd: 0x6d3d5420, 0x305ce: 0x6d69e020, 0x305cf: 0x6d69e220,\n\t0x305d0: 0x6d934220, 0x305d1: 0x6d934420, 0x305d2: 0x6d934620, 0x305d3: 0x6d934820,\n\t0x305d4: 0x6db6e420, 0x305d5: 0x6db6e620, 0x305d6: 0x6db6e820, 0x305d7: 0x6dd52c20,\n\t0x305d8: 0x6dd52e20, 0x305d9: 0x6dd53020, 0x305da: 0x6dee2020, 0x305db: 0x6e3a6620,\n\t0x305dc: 0x6e411c20, 0x305dd: 0x6c26f420, 0x305de: 0x6c60c820, 0x305df: 0x6c60ca20,\n\t0x305e0: 0x6c60cc20, 0x305e1: 0x6c86f020, 0x305e2: 0x6c86f220, 0x305e3: 0x6c86f420,\n\t0x305e4: 0x6c86f620, 0x305e5: 0x6cb19820, 0x305e6: 0x6cb19a20, 0x305e7: 0x6cb19c20,\n\t0x305e8: 0x6cb19e20, 0x305e9: 0x6cb1a020, 0x305ea: 0x6cb1a220, 0x305eb: 0x6cb1a420,\n\t0x305ec: 0x6cb1a620, 0x305ed: 0x6cb1a820, 0x305ee: 0x6cb1aa20, 0x305ef: 0x6ce0bc20,\n\t0x305f0: 0x6ce0be20, 0x305f1: 0x6ce0c020, 0x305f2: 0x6d0f2620, 0x305f3: 0x6ce0c220,\n\t0x305f4: 0x6ce0c420, 0x305f5: 0x6ce0c620, 0x305f6: 0x6ce0c820, 0x305f7: 0x6ce0ca20,\n\t0x305f8: 0x6ce0cc20, 0x305f9: 0x6ce0ce20, 0x305fa: 0x6ce0d020, 0x305fb: 0x6ce0d220,\n\t0x305fc: 0x6ce0d420, 0x305fd: 0x6ce0d620, 0x305fe: 0x6ce0d820, 0x305ff: 0x6ce0da20,\n\t// Block 0xc18, offset 0x30600\n\t0x30600: 0x6ce0dc20, 0x30601: 0x6ce0de20, 0x30602: 0x6d0f2e20, 0x30603: 0x6d0f3020,\n\t0x30604: 0x6d0f3220, 0x30605: 0x6d0f3420, 0x30606: 0x6d0f3620, 0x30607: 0x6d0f3820,\n\t0x30608: 0x6d0f3a20, 0x30609: 0x6d0f3c20, 0x3060a: 0x6d0f3e20, 0x3060b: 0x6d0f4020,\n\t0x3060c: 0x6d0f4220, 0x3060d: 0x6d0f4420, 0x3060e: 0x6d0f4620, 0x3060f: 0x6d3d7c20,\n\t0x30610: 0x6d3d7e20, 0x30611: 0x6d3d8020, 0x30612: 0x6d3d8220, 0x30613: 0x6d3d8420,\n\t0x30614: 0x6d3d8620, 0x30615: 0x6d3d8820, 0x30616: 0x6d3d8a20, 0x30617: 0x6d3d8c20,\n\t0x30618: 0x6d3d8e20, 0x30619: 0x6d6a1420, 0x3061a: 0x6d6a1620, 0x3061b: 0x6d6a1820,\n\t0x3061c: 0x6d6a1a20, 0x3061d: 0x6d6a1c20, 0x3061e: 0x6d6a1e20, 0x3061f: 0x6d6a2020,\n\t0x30620: 0x6d6a2220, 0x30621: 0x6d6a2420, 0x30622: 0x6d6a2620, 0x30623: 0x6d6a2820,\n\t0x30624: 0x6d6a2a20, 0x30625: 0x6d6a2c20, 0x30626: 0x6d6a2e20, 0x30627: 0x6d6a3020,\n\t0x30628: 0x6d6a3220, 0x30629: 0x6d6a3420, 0x3062a: 0x6d6a3620, 0x3062b: 0x6d6a3820,\n\t0x3062c: 0x6d6a3a20, 0x3062d: 0x6d6a6c20, 0x3062e: 0x6d937220, 0x3062f: 0x6d937420,\n\t0x30630: 0x6d937620, 0x30631: 0x6d937820, 0x30632: 0x6d937a20, 0x30633: 0x6d937c20,\n\t0x30634: 0x6d937e20, 0x30635: 0x6d938020, 0x30636: 0x6db70820, 0x30637: 0x6db70a20,\n\t0x30638: 0x6db70c20, 0x30639: 0x6db70e20, 0x3063a: 0x6db71020, 0x3063b: 0x6db71220,\n\t0x3063c: 0x6db71420, 0x3063d: 0x6db71620, 0x3063e: 0x6dd54820, 0x3063f: 0x6dd54a20,\n\t// Block 0xc19, offset 0x30640\n\t0x30640: 0x6dd54c20, 0x30641: 0x6dc6ba20, 0x30642: 0x6dd54e20, 0x30643: 0x6dd55020,\n\t0x30644: 0x6dd55220, 0x30645: 0x6dd55420, 0x30646: 0x6dee3820, 0x30647: 0x6dee3a20,\n\t0x30648: 0x6dee3c20, 0x30649: 0x6dee3e20, 0x3064a: 0x6dee4020, 0x3064b: 0x6dee4220,\n\t0x3064c: 0x6dee4420, 0x3064d: 0x6e02e420, 0x3064e: 0x6e02e620, 0x3064f: 0x6e02e820,\n\t0x30650: 0x6e148420, 0x30651: 0x6e148620, 0x30652: 0x6e148820, 0x30653: 0x6e148a20,\n\t0x30654: 0x6e148c20, 0x30655: 0x6e223220, 0x30656: 0x6e223420, 0x30657: 0x6e223620,\n\t0x30658: 0x6e223820, 0x30659: 0x6e2c8c20, 0x3065a: 0x6e2c8e20, 0x3065b: 0x6e34b020,\n\t0x3065c: 0x6e3a6820, 0x3065d: 0x6c051820, 0x3065e: 0x6c150020, 0x3065f: 0x6c150220,\n\t0x30660: 0x6c150420, 0x30661: 0x6c26f620, 0x30662: 0x6c26f820, 0x30663: 0x6c40c020,\n\t0x30664: 0x6c40c220, 0x30665: 0x6c40c420, 0x30666: 0x6c40c620, 0x30667: 0x6c40c820,\n\t0x30668: 0x6c40ca20, 0x30669: 0x6c40cc20, 0x3066a: 0x6c40ce20, 0x3066b: 0x6c40d020,\n\t0x3066c: 0x6c40d220, 0x3066d: 0x6c40d420, 0x3066e: 0x6c40d620, 0x3066f: 0x6c40d820,\n\t0x30670: 0x6c60dc20, 0x30671: 0x6c60de20, 0x30672: 0x6c60e020, 0x30673: 0x6c60e220,\n\t0x30674: 0x6c60e420, 0x30675: 0x6c60e620, 0x30676: 0x6c60e820, 0x30677: 0x6c60ea20,\n\t0x30678: 0x6c60ec20, 0x30679: 0x6c60ee20, 0x3067a: 0x6c60f020, 0x3067b: 0x6c60f220,\n\t0x3067c: 0x6c871020, 0x3067d: 0x6c871220, 0x3067e: 0x6c871420, 0x3067f: 0x6c871620,\n\t// Block 0xc1a, offset 0x30680\n\t0x30680: 0x6c871820, 0x30681: 0x6c871a20, 0x30682: 0x6c871c20, 0x30683: 0x6c871e20,\n\t0x30684: 0x6c872020, 0x30685: 0x6c872220, 0x30686: 0x6c872420, 0x30687: 0x6cb1dc20,\n\t0x30688: 0x6cb1de20, 0x30689: 0x6cb1e020, 0x3068a: 0x6cb1e220, 0x3068b: 0x6ce11820,\n\t0x3068c: 0x6ce11a20, 0x3068d: 0x6ce11c20, 0x3068e: 0x6ce11e20, 0x3068f: 0x6ce12020,\n\t0x30690: 0x6ce12220, 0x30691: 0x6ce12420, 0x30692: 0x6ce12620, 0x30693: 0x6ce12820,\n\t0x30694: 0x6ce12a20, 0x30695: 0x6ce12c20, 0x30696: 0x6d0f9220, 0x30697: 0x6d0f9420,\n\t0x30698: 0x6d3dc220, 0x30699: 0x6d3dc420, 0x3069a: 0x6d3dc620, 0x3069b: 0x6d3dc820,\n\t0x3069c: 0x6d6a7220, 0x3069d: 0x6d93c220, 0x3069e: 0x6d93c420, 0x3069f: 0x6d93c620,\n\t0x306a0: 0x6d93c820, 0x306a1: 0x6db74020, 0x306a2: 0x6db74220, 0x306a3: 0x6e14a420,\n\t0x306a4: 0x6c26fa20, 0x306a5: 0x6cb1e820, 0x306a6: 0x6cb1ea20, 0x306a7: 0x6cb1ec20,\n\t0x306a8: 0x6d0f9a20, 0x306a9: 0x6d0f9c20, 0x306aa: 0x6d0f9e20, 0x306ab: 0x6d3dce20,\n\t0x306ac: 0x6d93cc20, 0x306ad: 0x6d6a8220, 0x306ae: 0x6d93ce20, 0x306af: 0x6db74420,\n\t0x306b0: 0x6c26fc20, 0x306b1: 0x6c150620, 0x306b2: 0x6c60fe20, 0x306b3: 0x6c610020,\n\t0x306b4: 0x6c610220, 0x306b5: 0x6c610420, 0x306b6: 0x6c872e20, 0x306b7: 0x6c873020,\n\t0x306b8: 0x6c873220, 0x306b9: 0x6cb1fa20, 0x306ba: 0x6cb1fc20, 0x306bb: 0x6cb1fe20,\n\t0x306bc: 0x6cb20020, 0x306bd: 0x6cb20220, 0x306be: 0x6cb20420, 0x306bf: 0x6cb20620,\n\t// Block 0xc1b, offset 0x306c0\n\t0x306c0: 0x6ce14e20, 0x306c1: 0x6ce15020, 0x306c2: 0x6ce15220, 0x306c3: 0x6ce15420,\n\t0x306c4: 0x6ce15620, 0x306c5: 0x6ce15820, 0x306c6: 0x6ce15a20, 0x306c7: 0x6ce15c20,\n\t0x306c8: 0x6ce15e20, 0x306c9: 0x6ce16020, 0x306ca: 0x6ce16220, 0x306cb: 0x6ce16420,\n\t0x306cc: 0x6d0fb420, 0x306cd: 0x6d0fb620, 0x306ce: 0x6d0fb820, 0x306cf: 0x6d0fba20,\n\t0x306d0: 0x6d0fbc20, 0x306d1: 0x6d0fbe20, 0x306d2: 0x6d0fc020, 0x306d3: 0x6d0fc220,\n\t0x306d4: 0x6d0fc420, 0x306d5: 0x6d3de820, 0x306d6: 0x6d3dea20, 0x306d7: 0x6d3dec20,\n\t0x306d8: 0x6d3dee20, 0x306d9: 0x6d3df020, 0x306da: 0x6d3df220, 0x306db: 0x6d6a9020,\n\t0x306dc: 0x6d6a9220, 0x306dd: 0x6d6a9420, 0x306de: 0x6d6a9620, 0x306df: 0x6d6a9820,\n\t0x306e0: 0x6d6a9a20, 0x306e1: 0x6d6a9c20, 0x306e2: 0x6d6a9e20, 0x306e3: 0x6d6aa020,\n\t0x306e4: 0x6d6aa220, 0x306e5: 0x6d93e420, 0x306e6: 0x6d93e620, 0x306e7: 0x6d93e820,\n\t0x306e8: 0x6db75620, 0x306e9: 0x6dd5dc20, 0x306ea: 0x6dee8820, 0x306eb: 0x6dee8a20,\n\t0x306ec: 0x6dee8c20, 0x306ed: 0x6dee8e20, 0x306ee: 0x6e031220, 0x306ef: 0x6e14b020,\n\t0x306f0: 0x6e14b220, 0x306f1: 0x6e2cb020, 0x306f2: 0x6e3e4a20, 0x306f3: 0x6c270220,\n\t0x306f4: 0x6c611a20, 0x306f5: 0x6c875420, 0x306f6: 0x6c875620, 0x306f7: 0x6c875820,\n\t0x306f8: 0x6c875a20, 0x306f9: 0x6cb24e20, 0x306fa: 0x6cb25020, 0x306fb: 0x6cb25220,\n\t0x306fc: 0x6d101620, 0x306fd: 0x6cb25420, 0x306fe: 0x6cb25620, 0x306ff: 0x6cb25820,\n\t// Block 0xc1c, offset 0x30700\n\t0x30700: 0x6cb25a20, 0x30701: 0x6cb25c20, 0x30702: 0x6cb25e20, 0x30703: 0x6cb26020,\n\t0x30704: 0x6cb26220, 0x30705: 0x6ce1ba20, 0x30706: 0x6ce1bc20, 0x30707: 0x6ce1be20,\n\t0x30708: 0x6ce1c020, 0x30709: 0x6ce1c220, 0x3070a: 0x6ce1c420, 0x3070b: 0x6ce1c620,\n\t0x3070c: 0x6ce1c820, 0x3070d: 0x6ce1ca20, 0x3070e: 0x6ce1cc20, 0x3070f: 0x6ce1ce20,\n\t0x30710: 0x6d100820, 0x30711: 0x6ce1d020, 0x30712: 0x6ce1d220, 0x30713: 0x6ce1d420,\n\t0x30714: 0x6ce1d620, 0x30715: 0x6ce1d820, 0x30716: 0x6ce1da20, 0x30717: 0x6ce1dc20,\n\t0x30718: 0x6ce1de20, 0x30719: 0x6ce1e020, 0x3071a: 0x6ce1e220, 0x3071b: 0x6ce1e420,\n\t0x3071c: 0x6ce1e620, 0x3071d: 0x6ce1e820, 0x3071e: 0x6ce1ea20, 0x3071f: 0x6d101820,\n\t0x30720: 0x6d101a20, 0x30721: 0x6d101c20, 0x30722: 0x6d101e20, 0x30723: 0x6d102020,\n\t0x30724: 0x6d102220, 0x30725: 0x6d102420, 0x30726: 0x6d102620, 0x30727: 0x6d102820,\n\t0x30728: 0x6d102a20, 0x30729: 0x6d102c20, 0x3072a: 0x6d102e20, 0x3072b: 0x6d103020,\n\t0x3072c: 0x6d103220, 0x3072d: 0x6d103420, 0x3072e: 0x6d103620, 0x3072f: 0x6d103820,\n\t0x30730: 0x6d103a20, 0x30731: 0x6d103c20, 0x30732: 0x6d103e20, 0x30733: 0x6d104020,\n\t0x30734: 0x6d104220, 0x30735: 0x6ce1ec20, 0x30736: 0x6d104420, 0x30737: 0x6d104620,\n\t0x30738: 0x6d104820, 0x30739: 0x6d104a20, 0x3073a: 0x6d104c20, 0x3073b: 0x6d104e20,\n\t0x3073c: 0x6d3e4c20, 0x3073d: 0x6d3e4e20, 0x3073e: 0x6d3e5020, 0x3073f: 0x6d3e5220,\n\t// Block 0xc1d, offset 0x30740\n\t0x30740: 0x6d3e5420, 0x30741: 0x6d3e5620, 0x30742: 0x6d3e5820, 0x30743: 0x6d3e5a20,\n\t0x30744: 0x6d3e5c20, 0x30745: 0x6d3e5e20, 0x30746: 0x6d3e6020, 0x30747: 0x6d3e6220,\n\t0x30748: 0x6d3e6420, 0x30749: 0x6d3e6620, 0x3074a: 0x6d3e6820, 0x3074b: 0x6d3e6a20,\n\t0x3074c: 0x6d3e6c20, 0x3074d: 0x6d3e6e20, 0x3074e: 0x6d3e7020, 0x3074f: 0x6d6afa20,\n\t0x30750: 0x6d6afc20, 0x30751: 0x6d6afe20, 0x30752: 0x6d6b0020, 0x30753: 0x6d6b0220,\n\t0x30754: 0x6d6b0420, 0x30755: 0x6d6b0620, 0x30756: 0x6d6b0820, 0x30757: 0x6d6b0a20,\n\t0x30758: 0x6d6b0c20, 0x30759: 0x6d6b0e20, 0x3075a: 0x6d6b1020, 0x3075b: 0x6d6b1220,\n\t0x3075c: 0x6d6b1420, 0x3075d: 0x6d6b1620, 0x3075e: 0x6d6b1820, 0x3075f: 0x6d6b1a20,\n\t0x30760: 0x6d6b1c20, 0x30761: 0x6d6b1e20, 0x30762: 0x6d6b2020, 0x30763: 0x6d6b2220,\n\t0x30764: 0x6d6b2420, 0x30765: 0x6d6b2620, 0x30766: 0x6d6b2820, 0x30767: 0x6d6b2a20,\n\t0x30768: 0x6d6b2c20, 0x30769: 0x6d6b2e20, 0x3076a: 0x6d6b3020, 0x3076b: 0x6d6b9820,\n\t0x3076c: 0x6d6b3220, 0x3076d: 0x6d6b3420, 0x3076e: 0x6d6b3620, 0x3076f: 0x6d6b3820,\n\t0x30770: 0x6d944620, 0x30771: 0x6d944820, 0x30772: 0x6d944a20, 0x30773: 0x6d944c20,\n\t0x30774: 0x6d944e20, 0x30775: 0x6d945020, 0x30776: 0x6d945220, 0x30777: 0x6d6b9a20,\n\t0x30778: 0x6d945420, 0x30779: 0x6d945620, 0x3077a: 0x6d6b3a20, 0x3077b: 0x6d945820,\n\t0x3077c: 0x6d945a20, 0x3077d: 0x6d945c20, 0x3077e: 0x6d945e20, 0x3077f: 0x6d946020,\n\t// Block 0xc1e, offset 0x30780\n\t0x30780: 0x6d946220, 0x30781: 0x6d946420, 0x30782: 0x6d946620, 0x30783: 0x6d946820,\n\t0x30784: 0x6d946a20, 0x30785: 0x6d946c20, 0x30786: 0x6db79220, 0x30787: 0x6db79420,\n\t0x30788: 0x6db79620, 0x30789: 0x6db79820, 0x3078a: 0x6db79a20, 0x3078b: 0x6db79c20,\n\t0x3078c: 0x6db79e20, 0x3078d: 0x6db7a020, 0x3078e: 0x6db7a220, 0x3078f: 0x6db7a420,\n\t0x30790: 0x6db7a620, 0x30791: 0x6db7a820, 0x30792: 0x6db7aa20, 0x30793: 0x6db7ac20,\n\t0x30794: 0x6dd5e820, 0x30795: 0x6dd5ea20, 0x30796: 0x6dd5ec20, 0x30797: 0x6dd5ee20,\n\t0x30798: 0x6dd5f020, 0x30799: 0x6dd5f220, 0x3079a: 0x6dd5f420, 0x3079b: 0x6dd5f620,\n\t0x3079c: 0x6dd5f820, 0x3079d: 0x6dd5fa20, 0x3079e: 0x6dd5fc20, 0x3079f: 0x6dd5fe20,\n\t0x307a0: 0x6dd60020, 0x307a1: 0x6dd60220, 0x307a2: 0x6dd60420, 0x307a3: 0x6dd60620,\n\t0x307a4: 0x6dd60820, 0x307a5: 0x6dd60a20, 0x307a6: 0x6dd60c20, 0x307a7: 0x6dd60e20,\n\t0x307a8: 0x6deec820, 0x307a9: 0x6dd6aa20, 0x307aa: 0x6deeca20, 0x307ab: 0x6deecc20,\n\t0x307ac: 0x6deece20, 0x307ad: 0x6deed020, 0x307ae: 0x6dd61020, 0x307af: 0x6deed220,\n\t0x307b0: 0x6deed420, 0x307b1: 0x6deed620, 0x307b2: 0x6deed820, 0x307b3: 0x6deeda20,\n\t0x307b4: 0x6deedc20, 0x307b5: 0x6deede20, 0x307b6: 0x6deee020, 0x307b7: 0x6deee220,\n\t0x307b8: 0x6deee420, 0x307b9: 0x6deee620, 0x307ba: 0x6deee820, 0x307bb: 0x6deeea20,\n\t0x307bc: 0x6deeec20, 0x307bd: 0x6deeee20, 0x307be: 0x6deef020, 0x307bf: 0x6deef220,\n\t// Block 0xc1f, offset 0x307c0\n\t0x307c0: 0x6dd61220, 0x307c1: 0x6e033020, 0x307c2: 0x6e033220, 0x307c3: 0x6e033420,\n\t0x307c4: 0x6e033620, 0x307c5: 0x6e033820, 0x307c6: 0x6e033a20, 0x307c7: 0x6def6820,\n\t0x307c8: 0x6e033c20, 0x307c9: 0x6e033e20, 0x307ca: 0x6e14c820, 0x307cb: 0x6e14ca20,\n\t0x307cc: 0x6e14cc20, 0x307cd: 0x6e14ce20, 0x307ce: 0x6e14d020, 0x307cf: 0x6e14d220,\n\t0x307d0: 0x6e227220, 0x307d1: 0x6e227420, 0x307d2: 0x6e227620, 0x307d3: 0x6e227820,\n\t0x307d4: 0x6e227a20, 0x307d5: 0x6e227c20, 0x307d6: 0x6e227e20, 0x307d7: 0x6e22aa20,\n\t0x307d8: 0x6e2cc220, 0x307d9: 0x6e2cc420, 0x307da: 0x6e22ac20, 0x307db: 0x6e2cc620,\n\t0x307dc: 0x6e2cc820, 0x307dd: 0x6e34c220, 0x307de: 0x6e34c420, 0x307df: 0x6e34c620,\n\t0x307e0: 0x6e34c820, 0x307e1: 0x6e3a7c20, 0x307e2: 0x6e3a7e20, 0x307e3: 0x6e3a8020,\n\t0x307e4: 0x6e3a8220, 0x307e5: 0x6e3a8420, 0x307e6: 0x6e3e4c20, 0x307e7: 0x6e3e4e20,\n\t0x307e8: 0x6e432420, 0x307e9: 0x6e412220, 0x307ea: 0x6e412420, 0x307eb: 0x6c270620,\n\t0x307ec: 0x6c878020, 0x307ed: 0x6cb2aa20, 0x307ee: 0x6cb2ac20, 0x307ef: 0x6cb2ae20,\n\t0x307f0: 0x6ce24420, 0x307f1: 0x6d10b820, 0x307f2: 0x6d10ba20, 0x307f3: 0x6d3ee220,\n\t0x307f4: 0x6d3ee420, 0x307f5: 0x6d3ee620, 0x307f6: 0x6d6b9e20, 0x307f7: 0x6d6ba020,\n\t0x307f8: 0x6d6ba220, 0x307f9: 0x6d6ba420, 0x307fa: 0x6d6ba620, 0x307fb: 0x6d6ba820,\n\t0x307fc: 0x6d6baa20, 0x307fd: 0x6d94e420, 0x307fe: 0x6d94e620, 0x307ff: 0x6dd6ac20,\n\t// Block 0xc20, offset 0x30800\n\t0x30800: 0x6dd6ae20, 0x30801: 0x6dd6b020, 0x30802: 0x6def6c20, 0x30803: 0x6def6e20,\n\t0x30804: 0x6def7020, 0x30805: 0x6def7220, 0x30806: 0x6e039c20, 0x30807: 0x6e150620,\n\t0x30808: 0x6e34de20, 0x30809: 0x6e412c20, 0x3080a: 0x6c270e20, 0x3080b: 0x6c40e420,\n\t0x3080c: 0x6c613220, 0x3080d: 0x6c613420, 0x3080e: 0x6c878e20, 0x3080f: 0x6c879020,\n\t0x30810: 0x6c879220, 0x30811: 0x6c879420, 0x30812: 0x6c879620, 0x30813: 0x6c879820,\n\t0x30814: 0x6c879a20, 0x30815: 0x6c879c20, 0x30816: 0x6cb2e420, 0x30817: 0x6cb2e620,\n\t0x30818: 0x6cb2e820, 0x30819: 0x6cb2ea20, 0x3081a: 0x6cb2ec20, 0x3081b: 0x6cb2ee20,\n\t0x3081c: 0x6cb2f020, 0x3081d: 0x6cb2f220, 0x3081e: 0x6cb2f420, 0x3081f: 0x6cb2f620,\n\t0x30820: 0x6cb2f820, 0x30821: 0x6cb2fa20, 0x30822: 0x6cb2fc20, 0x30823: 0x6cb2fe20,\n\t0x30824: 0x6ce26c20, 0x30825: 0x6ce26e20, 0x30826: 0x6ce27020, 0x30827: 0x6ce27220,\n\t0x30828: 0x6ce27420, 0x30829: 0x6ce27620, 0x3082a: 0x6ce27820, 0x3082b: 0x6ce27a20,\n\t0x3082c: 0x6ce27c20, 0x3082d: 0x6d10ea20, 0x3082e: 0x6ce27e20, 0x3082f: 0x6ce28020,\n\t0x30830: 0x6ce28220, 0x30831: 0x6ce28420, 0x30832: 0x6ce28620, 0x30833: 0x6ce28820,\n\t0x30834: 0x6ce28a20, 0x30835: 0x6ce28c20, 0x30836: 0x6ce28e20, 0x30837: 0x6ce29020,\n\t0x30838: 0x6ce29220, 0x30839: 0x6ce29420, 0x3083a: 0x6ce29620, 0x3083b: 0x6ce29820,\n\t0x3083c: 0x6ce29a20, 0x3083d: 0x6ce29c20, 0x3083e: 0x6d10ec20, 0x3083f: 0x6d10ee20,\n\t// Block 0xc21, offset 0x30840\n\t0x30840: 0x6d10f020, 0x30841: 0x6d10f220, 0x30842: 0x6d10f420, 0x30843: 0x6d10f620,\n\t0x30844: 0x6d10f820, 0x30845: 0x6d10fa20, 0x30846: 0x6d10fc20, 0x30847: 0x6d10fe20,\n\t0x30848: 0x6d110020, 0x30849: 0x6d110220, 0x3084a: 0x6d110420, 0x3084b: 0x6d110620,\n\t0x3084c: 0x6d110820, 0x3084d: 0x6d3f0a20, 0x3084e: 0x6d3f0c20, 0x3084f: 0x6d3f0e20,\n\t0x30850: 0x6d3f1020, 0x30851: 0x6d3f1220, 0x30852: 0x6d3f1420, 0x30853: 0x6d3f1620,\n\t0x30854: 0x6d3f1820, 0x30855: 0x6d3f1a20, 0x30856: 0x6d6bd020, 0x30857: 0x6d6bd220,\n\t0x30858: 0x6d6bd420, 0x30859: 0x6d6bd620, 0x3085a: 0x6d6bd820, 0x3085b: 0x6d6bda20,\n\t0x3085c: 0x6d6bdc20, 0x3085d: 0x6d6bde20, 0x3085e: 0x6d6be020, 0x3085f: 0x6d6be220,\n\t0x30860: 0x6d6be420, 0x30861: 0x6d6be620, 0x30862: 0x6d6be820, 0x30863: 0x6d6bea20,\n\t0x30864: 0x6d6bec20, 0x30865: 0x6d6bee20, 0x30866: 0x6d6bf020, 0x30867: 0x6d6bf220,\n\t0x30868: 0x6d6bf420, 0x30869: 0x6d6bf620, 0x3086a: 0x6d6bf820, 0x3086b: 0x6d6bfa20,\n\t0x3086c: 0x6d6bfc20, 0x3086d: 0x6d950820, 0x3086e: 0x6d950a20, 0x3086f: 0x6d950c20,\n\t0x30870: 0x6d950e20, 0x30871: 0x6d951020, 0x30872: 0x6d951220, 0x30873: 0x6d951420,\n\t0x30874: 0x6d951620, 0x30875: 0x6d951820, 0x30876: 0x6d951a20, 0x30877: 0x6d951c20,\n\t0x30878: 0x6d951e20, 0x30879: 0x6d952020, 0x3087a: 0x6d952220, 0x3087b: 0x6d952420,\n\t0x3087c: 0x6d952620, 0x3087d: 0x6db84220, 0x3087e: 0x6db84420, 0x3087f: 0x6db84620,\n\t// Block 0xc22, offset 0x30880\n\t0x30880: 0x6db84820, 0x30881: 0x6db84a20, 0x30882: 0x6db84c20, 0x30883: 0x6db84e20,\n\t0x30884: 0x6db85020, 0x30885: 0x6db85220, 0x30886: 0x6dd6ce20, 0x30887: 0x6dd6d020,\n\t0x30888: 0x6dd6d220, 0x30889: 0x6dd6d420, 0x3088a: 0x6dd6d620, 0x3088b: 0x6dd6d820,\n\t0x3088c: 0x6dd6da20, 0x3088d: 0x6def9a20, 0x3088e: 0x6def9c20, 0x3088f: 0x6def9e20,\n\t0x30890: 0x6defa020, 0x30891: 0x6defa220, 0x30892: 0x6defa420, 0x30893: 0x6defa620,\n\t0x30894: 0x6defa820, 0x30895: 0x6e03ae20, 0x30896: 0x6e03b020, 0x30897: 0x6e03b220,\n\t0x30898: 0x6e03b420, 0x30899: 0x6e03b620, 0x3089a: 0x6e03b820, 0x3089b: 0x6e151820,\n\t0x3089c: 0x6e151a20, 0x3089d: 0x6e151c20, 0x3089e: 0x6e151e20, 0x3089f: 0x6e152020,\n\t0x308a0: 0x6e22b820, 0x308a1: 0x6e22ba20, 0x308a2: 0x6e22bc20, 0x308a3: 0x6e2cee20,\n\t0x308a4: 0x6e2cf020, 0x308a5: 0x6e413020, 0x308a6: 0x6c051a20, 0x308a7: 0x6c0a7e20,\n\t0x308a8: 0x6c150820, 0x308a9: 0x6c271020, 0x308aa: 0x6c271220, 0x308ab: 0x6c271420,\n\t0x308ac: 0x6c40e620, 0x308ad: 0x6c40e820, 0x308ae: 0x6c40ea20, 0x308af: 0x6c40ec20,\n\t0x308b0: 0x6c40ee20, 0x308b1: 0x6c614620, 0x308b2: 0x6c614820, 0x308b3: 0x6c614a20,\n\t0x308b4: 0x6c614c20, 0x308b5: 0x6c614e20, 0x308b6: 0x6c615020, 0x308b7: 0x6c615220,\n\t0x308b8: 0x6c615420, 0x308b9: 0x6c615620, 0x308ba: 0x6c615820, 0x308bb: 0x6c615a20,\n\t0x308bc: 0x6c87ba20, 0x308bd: 0x6c87bc20, 0x308be: 0x6c87be20, 0x308bf: 0x6c87c020,\n\t// Block 0xc23, offset 0x308c0\n\t0x308c0: 0x6c87c220, 0x308c1: 0x6c87c420, 0x308c2: 0x6c87c620, 0x308c3: 0x6c87c820,\n\t0x308c4: 0x6cb33a20, 0x308c5: 0x6cb33c20, 0x308c6: 0x6cb33e20, 0x308c7: 0x6ce2d820,\n\t0x308c8: 0x6ce2da20, 0x308c9: 0x6ce2dc20, 0x308ca: 0x6ce2de20, 0x308cb: 0x6ce2e020,\n\t0x308cc: 0x6ce2e220, 0x308cd: 0x6ce2e420, 0x308ce: 0x6ce2e620, 0x308cf: 0x6d113e20,\n\t0x308d0: 0x6d114020, 0x308d1: 0x6d114220, 0x308d2: 0x6d114420, 0x308d3: 0x6d114620,\n\t0x308d4: 0x6d114820, 0x308d5: 0x6d3f5e20, 0x308d6: 0x6d3f6020, 0x308d7: 0x6d3f6220,\n\t0x308d8: 0x6d6c4e20, 0x308d9: 0x6d957020, 0x308da: 0x6d957220, 0x308db: 0x6c271c20,\n\t0x308dc: 0x6ce2f020, 0x308dd: 0x6ce2f220, 0x308de: 0x6d114c20, 0x308df: 0x6d114e20,\n\t0x308e0: 0x6d115020, 0x308e1: 0x6d3f6820, 0x308e2: 0x6d3f6a20, 0x308e3: 0x6d3f6c20,\n\t0x308e4: 0x6d6c5620, 0x308e5: 0x6d957820, 0x308e6: 0x6d957a20, 0x308e7: 0x6d957c20,\n\t0x308e8: 0x6d957e20, 0x308e9: 0x6d958020, 0x308ea: 0x6d958220, 0x308eb: 0x6db89e20,\n\t0x308ec: 0x6dd71620, 0x308ed: 0x6defca20, 0x308ee: 0x6e03ee20, 0x308ef: 0x6e153620,\n\t0x308f0: 0x6c272020, 0x308f1: 0x6c87d620, 0x308f2: 0x6d116020, 0x308f3: 0x6d6c6220,\n\t0x308f4: 0x6defd620, 0x308f5: 0x6c272620, 0x308f6: 0x6c051e20, 0x308f7: 0x6c0a8020,\n\t0x308f8: 0x6c150a20, 0x308f9: 0x6c150c20, 0x308fa: 0x6c150e20, 0x308fb: 0x6c151020,\n\t0x308fc: 0x6c151220, 0x308fd: 0x6c151420, 0x308fe: 0x6c272e20, 0x308ff: 0x6c273020,\n\t// Block 0xc24, offset 0x30900\n\t0x30900: 0x6c273220, 0x30901: 0x6c273420, 0x30902: 0x6c273620, 0x30903: 0x6c273820,\n\t0x30904: 0x6c273a20, 0x30905: 0x6c273c20, 0x30906: 0x6c273e20, 0x30907: 0x6c274020,\n\t0x30908: 0x6c274220, 0x30909: 0x6c274420, 0x3090a: 0x6c410020, 0x3090b: 0x6c410220,\n\t0x3090c: 0x6c410420, 0x3090d: 0x6c410620, 0x3090e: 0x6c410820, 0x3090f: 0x6c410a20,\n\t0x30910: 0x6c410c20, 0x30911: 0x6c410e20, 0x30912: 0x6c411020, 0x30913: 0x6c411220,\n\t0x30914: 0x6c411420, 0x30915: 0x6c411620, 0x30916: 0x6c411820, 0x30917: 0x6c411a20,\n\t0x30918: 0x6c411c20, 0x30919: 0x6c411e20, 0x3091a: 0x6c412020, 0x3091b: 0x6c412220,\n\t0x3091c: 0x6c412420, 0x3091d: 0x6c412620, 0x3091e: 0x6c412820, 0x3091f: 0x6c412a20,\n\t0x30920: 0x6c616a20, 0x30921: 0x6c616c20, 0x30922: 0x6c616e20, 0x30923: 0x6c617020,\n\t0x30924: 0x6c617220, 0x30925: 0x6c617420, 0x30926: 0x6c617620, 0x30927: 0x6c617820,\n\t0x30928: 0x6c617a20, 0x30929: 0x6c617c20, 0x3092a: 0x6c617e20, 0x3092b: 0x6c618020,\n\t0x3092c: 0x6c412c20, 0x3092d: 0x6c618220, 0x3092e: 0x6c618420, 0x3092f: 0x6c618620,\n\t0x30930: 0x6c618820, 0x30931: 0x6c618a20, 0x30932: 0x6c618c20, 0x30933: 0x6c618e20,\n\t0x30934: 0x6c87e620, 0x30935: 0x6c87e820, 0x30936: 0x6c87ea20, 0x30937: 0x6c87ec20,\n\t0x30938: 0x6c87ee20, 0x30939: 0x6c87f020, 0x3093a: 0x6c87f220, 0x3093b: 0x6c87f420,\n\t0x3093c: 0x6c87f620, 0x3093d: 0x6c87f820, 0x3093e: 0x6c87fa20, 0x3093f: 0x6c87fc20,\n\t// Block 0xc25, offset 0x30940\n\t0x30940: 0x6c87fe20, 0x30941: 0x6c880020, 0x30942: 0x6c880220, 0x30943: 0x6c880420,\n\t0x30944: 0x6c880620, 0x30945: 0x6c880820, 0x30946: 0x6c880a20, 0x30947: 0x6c880c20,\n\t0x30948: 0x6c880e20, 0x30949: 0x6c881020, 0x3094a: 0x6c881220, 0x3094b: 0x6cb34e20,\n\t0x3094c: 0x6cb35020, 0x3094d: 0x6cb35220, 0x3094e: 0x6cb35420, 0x3094f: 0x6cb35620,\n\t0x30950: 0x6cb35820, 0x30951: 0x6cb35a20, 0x30952: 0x6cb35c20, 0x30953: 0x6cb35e20,\n\t0x30954: 0x6cb36020, 0x30955: 0x6cb36220, 0x30956: 0x6cb36420, 0x30957: 0x6cb36620,\n\t0x30958: 0x6cb36820, 0x30959: 0x6cb36a20, 0x3095a: 0x6cb36c20, 0x3095b: 0x6cb36e20,\n\t0x3095c: 0x6cb37020, 0x3095d: 0x6cb37220, 0x3095e: 0x6cb37420, 0x3095f: 0x6cb37620,\n\t0x30960: 0x6cb37820, 0x30961: 0x6cb37a20, 0x30962: 0x6cb37c20, 0x30963: 0x6cb37e20,\n\t0x30964: 0x6cb38020, 0x30965: 0x6cb38220, 0x30966: 0x6cb38420, 0x30967: 0x6cb38620,\n\t0x30968: 0x6ce30420, 0x30969: 0x6ce30620, 0x3096a: 0x6ce30820, 0x3096b: 0x6ce30a20,\n\t0x3096c: 0x6ce30c20, 0x3096d: 0x6ce30e20, 0x3096e: 0x6ce31020, 0x3096f: 0x6ce31220,\n\t0x30970: 0x6ce31420, 0x30971: 0x6ce31620, 0x30972: 0x6ce31820, 0x30973: 0x6ce31a20,\n\t0x30974: 0x6ce31c20, 0x30975: 0x6ce31e20, 0x30976: 0x6ce32020, 0x30977: 0x6ce32220,\n\t0x30978: 0x6ce32420, 0x30979: 0x6ce32620, 0x3097a: 0x6ce32820, 0x3097b: 0x6ce32a20,\n\t0x3097c: 0x6d116a20, 0x3097d: 0x6d116c20, 0x3097e: 0x6d116e20, 0x3097f: 0x6d117020,\n\t// Block 0xc26, offset 0x30980\n\t0x30980: 0x6d117220, 0x30981: 0x6d117420, 0x30982: 0x6d117620, 0x30983: 0x6d117820,\n\t0x30984: 0x6d117a20, 0x30985: 0x6d117c20, 0x30986: 0x6d117e20, 0x30987: 0x6d118020,\n\t0x30988: 0x6d118220, 0x30989: 0x6d118420, 0x3098a: 0x6d118620, 0x3098b: 0x6d118820,\n\t0x3098c: 0x6d118a20, 0x3098d: 0x6d118c20, 0x3098e: 0x6d118e20, 0x3098f: 0x6d119020,\n\t0x30990: 0x6d119220, 0x30991: 0x6d119420, 0x30992: 0x6d119620, 0x30993: 0x6d119820,\n\t0x30994: 0x6d119a20, 0x30995: 0x6d119c20, 0x30996: 0x6d119e20, 0x30997: 0x6d11a020,\n\t0x30998: 0x6d3f8020, 0x30999: 0x6d3f8220, 0x3099a: 0x6d3f8420, 0x3099b: 0x6d3f8620,\n\t0x3099c: 0x6d3f8820, 0x3099d: 0x6d3f8a20, 0x3099e: 0x6d3f8c20, 0x3099f: 0x6d3f8e20,\n\t0x309a0: 0x6d3f9020, 0x309a1: 0x6d3f9220, 0x309a2: 0x6d3f9420, 0x309a3: 0x6d3f9620,\n\t0x309a4: 0x6d3f9820, 0x309a5: 0x6d3f9a20, 0x309a6: 0x6d6c6e20, 0x309a7: 0x6d6c7020,\n\t0x309a8: 0x6d6c7220, 0x309a9: 0x6d6c7420, 0x309aa: 0x6d6c7620, 0x309ab: 0x6d6c7820,\n\t0x309ac: 0x6d6c7a20, 0x309ad: 0x6d6c7c20, 0x309ae: 0x6d6c7e20, 0x309af: 0x6d6c8020,\n\t0x309b0: 0x6d6c8220, 0x309b1: 0x6d6c8420, 0x309b2: 0x6d959e20, 0x309b3: 0x6d6c8620,\n\t0x309b4: 0x6d95a020, 0x309b5: 0x6d95a220, 0x309b6: 0x6d95a420, 0x309b7: 0x6d6c8820,\n\t0x309b8: 0x6d95a620, 0x309b9: 0x6d95a820, 0x309ba: 0x6d95aa20, 0x309bb: 0x6d95ac20,\n\t0x309bc: 0x6d95ae20, 0x309bd: 0x6db8b220, 0x309be: 0x6db8b420, 0x309bf: 0x6db8b620,\n\t// Block 0xc27, offset 0x309c0\n\t0x309c0: 0x6db8b820, 0x309c1: 0x6db8ba20, 0x309c2: 0x6db8bc20, 0x309c3: 0x6db8be20,\n\t0x309c4: 0x6db8c020, 0x309c5: 0x6db8c220, 0x309c6: 0x6d95b020, 0x309c7: 0x6dd72220,\n\t0x309c8: 0x6dd72420, 0x309c9: 0x6db8c420, 0x309ca: 0x6defdc20, 0x309cb: 0x6defde20,\n\t0x309cc: 0x6defe020, 0x309cd: 0x6e03fc20, 0x309ce: 0x6e153c20, 0x309cf: 0x6e2d0820,\n\t0x309d0: 0x6e2d0a20, 0x309d1: 0x6c278a20, 0x309d2: 0x6c0a8e20, 0x309d3: 0x6c0a9020,\n\t0x309d4: 0x6c153c20, 0x309d5: 0x6c886a20, 0x309d6: 0x6c153e20, 0x309d7: 0x6c154020,\n\t0x309d8: 0x6c154220, 0x309d9: 0x6c154420, 0x309da: 0x6c154620, 0x309db: 0x6c154820,\n\t0x309dc: 0x6c154a20, 0x309dd: 0x6c154c20, 0x309de: 0x6c279220, 0x309df: 0x6c279420,\n\t0x309e0: 0x6c279620, 0x309e1: 0x6c279820, 0x309e2: 0x6c279a20, 0x309e3: 0x6c279c20,\n\t0x309e4: 0x6c279e20, 0x309e5: 0x6c27a020, 0x309e6: 0x6c27a220, 0x309e7: 0x6c27a420,\n\t0x309e8: 0x6c27a620, 0x309e9: 0x6c27a820, 0x309ea: 0x6c27aa20, 0x309eb: 0x6cb3fc20,\n\t0x309ec: 0x6c27ac20, 0x309ed: 0x6c418220, 0x309ee: 0x6c418420, 0x309ef: 0x6c418620,\n\t0x309f0: 0x6c418820, 0x309f1: 0x6c418a20, 0x309f2: 0x6c418c20, 0x309f3: 0x6c418e20,\n\t0x309f4: 0x6c419020, 0x309f5: 0x6c419220, 0x309f6: 0x6c419420, 0x309f7: 0x6c419620,\n\t0x309f8: 0x6c419820, 0x309f9: 0x6c419a20, 0x309fa: 0x6c419c20, 0x309fb: 0x6c419e20,\n\t0x309fc: 0x6c61e020, 0x309fd: 0x6c61e220, 0x309fe: 0x6c61e420, 0x309ff: 0x6c61e620,\n\t// Block 0xc28, offset 0x30a00\n\t0x30a00: 0x6c61e820, 0x30a01: 0x6c61ea20, 0x30a02: 0x6c61ec20, 0x30a03: 0x6c61ee20,\n\t0x30a04: 0x6c61f020, 0x30a05: 0x6c61f220, 0x30a06: 0x6c61f420, 0x30a07: 0x6c61f620,\n\t0x30a08: 0x6c61f820, 0x30a09: 0x6c61fa20, 0x30a0a: 0x6c61fc20, 0x30a0b: 0x6c61fe20,\n\t0x30a0c: 0x6d11fe20, 0x30a0d: 0x6c620020, 0x30a0e: 0x6c620220, 0x30a0f: 0x6c620420,\n\t0x30a10: 0x6c620620, 0x30a11: 0x6c620820, 0x30a12: 0x6d400820, 0x30a13: 0x6c620a20,\n\t0x30a14: 0x6cb3fe20, 0x30a15: 0x6c620c20, 0x30a16: 0x6c887620, 0x30a17: 0x6c887820,\n\t0x30a18: 0x6c887a20, 0x30a19: 0x6c887c20, 0x30a1a: 0x6c887e20, 0x30a1b: 0x6c888020,\n\t0x30a1c: 0x6c888220, 0x30a1d: 0x6c888420, 0x30a1e: 0x6c888620, 0x30a1f: 0x6c888820,\n\t0x30a20: 0x6c888a20, 0x30a21: 0x6c888c20, 0x30a22: 0x6c888e20, 0x30a23: 0x6c889020,\n\t0x30a24: 0x6c889220, 0x30a25: 0x6c889420, 0x30a26: 0x6c889620, 0x30a27: 0x6c889820,\n\t0x30a28: 0x6cb40c20, 0x30a29: 0x6cb40e20, 0x30a2a: 0x6cb41020, 0x30a2b: 0x6cb41220,\n\t0x30a2c: 0x6cb41420, 0x30a2d: 0x6cb41620, 0x30a2e: 0x6cb41820, 0x30a2f: 0x6cb41a20,\n\t0x30a30: 0x6cb41c20, 0x30a31: 0x6c625420, 0x30a32: 0x6cb41e20, 0x30a33: 0x6cb42020,\n\t0x30a34: 0x6cb42220, 0x30a35: 0x6ce3be20, 0x30a36: 0x6d6cf820, 0x30a37: 0x6cb42420,\n\t0x30a38: 0x6cb42620, 0x30a39: 0x6ce3c620, 0x30a3a: 0x6d95fa20, 0x30a3b: 0x6ce3c820,\n\t0x30a3c: 0x6ce3ca20, 0x30a3d: 0x6cb42820, 0x30a3e: 0x6ce3cc20, 0x30a3f: 0x6ce3ce20,\n\t// Block 0xc29, offset 0x30a40\n\t0x30a40: 0x6ce3d020, 0x30a41: 0x6ce3d220, 0x30a42: 0x6ce3d420, 0x30a43: 0x6ce3d620,\n\t0x30a44: 0x6ce3d820, 0x30a45: 0x6ce3da20, 0x30a46: 0x6ce3dc20, 0x30a47: 0x6ce3de20,\n\t0x30a48: 0x6ce3e020, 0x30a49: 0x6ce3e220, 0x30a4a: 0x6ce3e420, 0x30a4b: 0x6d120820,\n\t0x30a4c: 0x6d120a20, 0x30a4d: 0x6d120c20, 0x30a4e: 0x6d120e20, 0x30a4f: 0x6d121020,\n\t0x30a50: 0x6d121220, 0x30a51: 0x6d121420, 0x30a52: 0x6d121620, 0x30a53: 0x6d121820,\n\t0x30a54: 0x6d121a20, 0x30a55: 0x6d121c20, 0x30a56: 0x6d121e20, 0x30a57: 0x6d122020,\n\t0x30a58: 0x6d401420, 0x30a59: 0x6d401620, 0x30a5a: 0x6d401820, 0x30a5b: 0x6d401a20,\n\t0x30a5c: 0x6d401c20, 0x30a5d: 0x6d401e20, 0x30a5e: 0x6d402020, 0x30a5f: 0x6d402220,\n\t0x30a60: 0x6d402420, 0x30a61: 0x6d402620, 0x30a62: 0x6d402820, 0x30a63: 0x6d402a20,\n\t0x30a64: 0x6d402c20, 0x30a65: 0x6d402e20, 0x30a66: 0x6d6d0220, 0x30a67: 0x6d6d0420,\n\t0x30a68: 0x6dd75620, 0x30a69: 0x6d6d0620, 0x30a6a: 0x6d6d0820, 0x30a6b: 0x6d6d0a20,\n\t0x30a6c: 0x6ce41e20, 0x30a6d: 0x6d6d0c20, 0x30a6e: 0x6d6d0e20, 0x30a6f: 0x6d6d1020,\n\t0x30a70: 0x6d6d1220, 0x30a71: 0x6d6d1420, 0x30a72: 0x6d6d1620, 0x30a73: 0x6d95fe20,\n\t0x30a74: 0x6d960020, 0x30a75: 0x6d960220, 0x30a76: 0x6d960420, 0x30a77: 0x6d960620,\n\t0x30a78: 0x6db90820, 0x30a79: 0x6db90a20, 0x30a7a: 0x6dd75820, 0x30a7b: 0x6dd75a20,\n\t0x30a7c: 0x6dd75c20, 0x30a7d: 0x6dd75e20, 0x30a7e: 0x6dd76020, 0x30a7f: 0x6deff620,\n\t// Block 0xc2a, offset 0x30a80\n\t0x30a80: 0x6deff820, 0x30a81: 0x6e042620, 0x30a82: 0x6deffa20, 0x30a83: 0x6e042820,\n\t0x30a84: 0x6e154e20, 0x30a85: 0x6e155020, 0x30a86: 0x6e155220, 0x30a87: 0x6e22ea20,\n\t0x30a88: 0x6e22ec20, 0x30a89: 0x6c27ec20, 0x30a8a: 0x6c625a20, 0x30a8b: 0x6c625c20,\n\t0x30a8c: 0x6c88ee20, 0x30a8d: 0x6c88f020, 0x30a8e: 0x6c88f220, 0x30a8f: 0x6c88f420,\n\t0x30a90: 0x6c88f620, 0x30a91: 0x6c88f820, 0x30a92: 0x6c88fa20, 0x30a93: 0x6cb47e20,\n\t0x30a94: 0x6cb48020, 0x30a95: 0x6cb48220, 0x30a96: 0x6cb48420, 0x30a97: 0x6cb48620,\n\t0x30a98: 0x6cb48820, 0x30a99: 0x6cb48a20, 0x30a9a: 0x6cb48c20, 0x30a9b: 0x6cb48e20,\n\t0x30a9c: 0x6cb49020, 0x30a9d: 0x6cb49220, 0x30a9e: 0x6cb49420, 0x30a9f: 0x6ce42a20,\n\t0x30aa0: 0x6ce42c20, 0x30aa1: 0x6ce42e20, 0x30aa2: 0x6ce43020, 0x30aa3: 0x6ce43220,\n\t0x30aa4: 0x6ce43420, 0x30aa5: 0x6ce43620, 0x30aa6: 0x6d127820, 0x30aa7: 0x6d127a20,\n\t0x30aa8: 0x6d127c20, 0x30aa9: 0x6d127e20, 0x30aaa: 0x6d128020, 0x30aab: 0x6d128220,\n\t0x30aac: 0x6d128420, 0x30aad: 0x6d128620, 0x30aae: 0x6d128820, 0x30aaf: 0x6d128a20,\n\t0x30ab0: 0x6d128c20, 0x30ab1: 0x6d128e20, 0x30ab2: 0x6d407e20, 0x30ab3: 0x6d408020,\n\t0x30ab4: 0x6d408220, 0x30ab5: 0x6d408420, 0x30ab6: 0x6d408620, 0x30ab7: 0x6d408820,\n\t0x30ab8: 0x6d408a20, 0x30ab9: 0x6d408c20, 0x30aba: 0x6d408e20, 0x30abb: 0x6d409020,\n\t0x30abc: 0x6d409220, 0x30abd: 0x6d409420, 0x30abe: 0x6d409620, 0x30abf: 0x6d409820,\n\t// Block 0xc2b, offset 0x30ac0\n\t0x30ac0: 0x6d6d5020, 0x30ac1: 0x6d6d5220, 0x30ac2: 0x6d6d5420, 0x30ac3: 0x6d6d5620,\n\t0x30ac4: 0x6d6d5820, 0x30ac5: 0x6d6d5a20, 0x30ac6: 0x6d6d5c20, 0x30ac7: 0x6d6d5e20,\n\t0x30ac8: 0x6d6d6020, 0x30ac9: 0x6d6d6220, 0x30aca: 0x6d6d6420, 0x30acb: 0x6d6d6620,\n\t0x30acc: 0x6d6d6820, 0x30acd: 0x6d964220, 0x30ace: 0x6d964420, 0x30acf: 0x6d964620,\n\t0x30ad0: 0x6d964820, 0x30ad1: 0x6d964a20, 0x30ad2: 0x6d964c20, 0x30ad3: 0x6d964e20,\n\t0x30ad4: 0x6d965020, 0x30ad5: 0x6d965220, 0x30ad6: 0x6d965420, 0x30ad7: 0x6d965620,\n\t0x30ad8: 0x6db93c20, 0x30ad9: 0x6db93e20, 0x30ada: 0x6db94020, 0x30adb: 0x6db94220,\n\t0x30adc: 0x6db94420, 0x30add: 0x6db94620, 0x30ade: 0x6db94820, 0x30adf: 0x6db94a20,\n\t0x30ae0: 0x6db94c20, 0x30ae1: 0x6db94e20, 0x30ae2: 0x6db95020, 0x30ae3: 0x6db95220,\n\t0x30ae4: 0x6db95420, 0x30ae5: 0x6dd78220, 0x30ae6: 0x6dd78420, 0x30ae7: 0x6dd78620,\n\t0x30ae8: 0x6dd78820, 0x30ae9: 0x6dd78a20, 0x30aea: 0x6dd78c20, 0x30aeb: 0x6dd78e20,\n\t0x30aec: 0x6dd79020, 0x30aed: 0x6df01420, 0x30aee: 0x6df01620, 0x30aef: 0x6df01820,\n\t0x30af0: 0x6df01a20, 0x30af1: 0x6df01c20, 0x30af2: 0x6e043420, 0x30af3: 0x6e043620,\n\t0x30af4: 0x6e043820, 0x30af5: 0x6e043a20, 0x30af6: 0x6e043c20, 0x30af7: 0x6e043e20,\n\t0x30af8: 0x6e044020, 0x30af9: 0x6e156020, 0x30afa: 0x6e156220, 0x30afb: 0x6e156420,\n\t0x30afc: 0x6e2d2620, 0x30afd: 0x6e350220, 0x30afe: 0x6e350420, 0x30aff: 0x6e350620,\n\t// Block 0xc2c, offset 0x30b00\n\t0x30b00: 0x6e350820, 0x30b01: 0x6e3aaa20, 0x30b02: 0x6e351420, 0x30b03: 0x6e3e6e20,\n\t0x30b04: 0x6e3e7020, 0x30b05: 0x6e413820, 0x30b06: 0x6c27ee20, 0x30b07: 0x6c41da20,\n\t0x30b08: 0x6cb4c420, 0x30b09: 0x6ce46a20, 0x30b0a: 0x6ce46c20, 0x30b0b: 0x6e046220,\n\t0x30b0c: 0x6c27f020, 0x30b0d: 0x6c625e20, 0x30b0e: 0x6cb4cc20, 0x30b0f: 0x6ce47020,\n\t0x30b10: 0x6dd7ce20, 0x30b11: 0x6c41dc20, 0x30b12: 0x6c41de20, 0x30b13: 0x6c626220,\n\t0x30b14: 0x6c626420, 0x30b15: 0x6c890e20, 0x30b16: 0x6c891020, 0x30b17: 0x6c891220,\n\t0x30b18: 0x6c891420, 0x30b19: 0x6c891620, 0x30b1a: 0x6c891820, 0x30b1b: 0x6c891a20,\n\t0x30b1c: 0x6c891c20, 0x30b1d: 0x6c891e20, 0x30b1e: 0x6c892020, 0x30b1f: 0x6c892220,\n\t0x30b20: 0x6c892420, 0x30b21: 0x6c892620, 0x30b22: 0x6c892820, 0x30b23: 0x6cb4d620,\n\t0x30b24: 0x6cb4d820, 0x30b25: 0x6cb4da20, 0x30b26: 0x6cb4dc20, 0x30b27: 0x6cb4de20,\n\t0x30b28: 0x6cb4e020, 0x30b29: 0x6cb4e220, 0x30b2a: 0x6cb4e420, 0x30b2b: 0x6cb4e620,\n\t0x30b2c: 0x6cb4e820, 0x30b2d: 0x6cb4ea20, 0x30b2e: 0x6cb4ec20, 0x30b2f: 0x6cb4ee20,\n\t0x30b30: 0x6cb4f020, 0x30b31: 0x6cb4f220, 0x30b32: 0x6cb4f420, 0x30b33: 0x6cb4f620,\n\t0x30b34: 0x6cb4f820, 0x30b35: 0x6cb4fa20, 0x30b36: 0x6cb4fc20, 0x30b37: 0x6cb4fe20,\n\t0x30b38: 0x6cb50020, 0x30b39: 0x6cb50220, 0x30b3a: 0x6cb50420, 0x30b3b: 0x6cb50620,\n\t0x30b3c: 0x6cb50820, 0x30b3d: 0x6ce48420, 0x30b3e: 0x6ce48620, 0x30b3f: 0x6ce48820,\n\t// Block 0xc2d, offset 0x30b40\n\t0x30b40: 0x6ce48a20, 0x30b41: 0x6ce48c20, 0x30b42: 0x6ce48e20, 0x30b43: 0x6ce49020,\n\t0x30b44: 0x6ce49220, 0x30b45: 0x6ce49420, 0x30b46: 0x6ce49620, 0x30b47: 0x6ce49820,\n\t0x30b48: 0x6ce49a20, 0x30b49: 0x6ce49c20, 0x30b4a: 0x6ce49e20, 0x30b4b: 0x6ce4a020,\n\t0x30b4c: 0x6ce4a220, 0x30b4d: 0x6ce4a420, 0x30b4e: 0x6ce4a620, 0x30b4f: 0x6ce4a820,\n\t0x30b50: 0x6ce4aa20, 0x30b51: 0x6ce4ac20, 0x30b52: 0x6ce4ae20, 0x30b53: 0x6ce4b020,\n\t0x30b54: 0x6ce4b220, 0x30b55: 0x6ce4b420, 0x30b56: 0x6ce4b620, 0x30b57: 0x6ce4b820,\n\t0x30b58: 0x6ce4ba20, 0x30b59: 0x6ce4bc20, 0x30b5a: 0x6ce4be20, 0x30b5b: 0x6ce4c020,\n\t0x30b5c: 0x6ce4c220, 0x30b5d: 0x6ce4c420, 0x30b5e: 0x6ce4c620, 0x30b5f: 0x6ce4c820,\n\t0x30b60: 0x6ce4ca20, 0x30b61: 0x6ce4cc20, 0x30b62: 0x6ce4ce20, 0x30b63: 0x6ce4d020,\n\t0x30b64: 0x6ce4d220, 0x30b65: 0x6ce4d420, 0x30b66: 0x6ce4d620, 0x30b67: 0x6ce4d820,\n\t0x30b68: 0x6ce4da20, 0x30b69: 0x6ce4dc20, 0x30b6a: 0x6ce4de20, 0x30b6b: 0x6ce4e020,\n\t0x30b6c: 0x6ce4e220, 0x30b6d: 0x6d40d420, 0x30b6e: 0x6d12c620, 0x30b6f: 0x6d12c820,\n\t0x30b70: 0x6d12ca20, 0x30b71: 0x6d12cc20, 0x30b72: 0x6d12ce20, 0x30b73: 0x6d12d020,\n\t0x30b74: 0x6d12d220, 0x30b75: 0x6d12d420, 0x30b76: 0x6d12d620, 0x30b77: 0x6d12d820,\n\t0x30b78: 0x6d12da20, 0x30b79: 0x6d12dc20, 0x30b7a: 0x6d12de20, 0x30b7b: 0x6d12e020,\n\t0x30b7c: 0x6d12e220, 0x30b7d: 0x6d12e420, 0x30b7e: 0x6d12e620, 0x30b7f: 0x6d12e820,\n\t// Block 0xc2e, offset 0x30b80\n\t0x30b80: 0x6d12ea20, 0x30b81: 0x6d12ec20, 0x30b82: 0x6d12ee20, 0x30b83: 0x6d12f020,\n\t0x30b84: 0x6d12f220, 0x30b85: 0x6d12f420, 0x30b86: 0x6d12f620, 0x30b87: 0x6d12f820,\n\t0x30b88: 0x6d12fa20, 0x30b89: 0x6d12fc20, 0x30b8a: 0x6d12fe20, 0x30b8b: 0x6d130020,\n\t0x30b8c: 0x6d130220, 0x30b8d: 0x6d130420, 0x30b8e: 0x6d130620, 0x30b8f: 0x6d130820,\n\t0x30b90: 0x6d130a20, 0x30b91: 0x6d130c20, 0x30b92: 0x6d130e20, 0x30b93: 0x6d131020,\n\t0x30b94: 0x6d131220, 0x30b95: 0x6d131420, 0x30b96: 0x6d131620, 0x30b97: 0x6d131820,\n\t0x30b98: 0x6d131a20, 0x30b99: 0x6d131c20, 0x30b9a: 0x6d131e20, 0x30b9b: 0x6d132020,\n\t0x30b9c: 0x6d132220, 0x30b9d: 0x6d132420, 0x30b9e: 0x6d132620, 0x30b9f: 0x6d132820,\n\t0x30ba0: 0x6d132a20, 0x30ba1: 0x6d132c20, 0x30ba2: 0x6d132e20, 0x30ba3: 0x6d133020,\n\t0x30ba4: 0x6d133220, 0x30ba5: 0x6d133420, 0x30ba6: 0x6d133620, 0x30ba7: 0x6d133820,\n\t0x30ba8: 0x6d133a20, 0x30ba9: 0x6d133c20, 0x30baa: 0x6d133e20, 0x30bab: 0x6d134020,\n\t0x30bac: 0x6d134220, 0x30bad: 0x6d134420, 0x30bae: 0x6d134620, 0x30baf: 0x6d134820,\n\t0x30bb0: 0x6d134a20, 0x30bb1: 0x6d134c20, 0x30bb2: 0x6d134e20, 0x30bb3: 0x6d135020,\n\t0x30bb4: 0x6d135220, 0x30bb5: 0x6d40e420, 0x30bb6: 0x6d40e620, 0x30bb7: 0x6d40e820,\n\t0x30bb8: 0x6d40ea20, 0x30bb9: 0x6d40ec20, 0x30bba: 0x6d40ee20, 0x30bbb: 0x6d40f020,\n\t0x30bbc: 0x6d41c020, 0x30bbd: 0x6d40f220, 0x30bbe: 0x6d40f420, 0x30bbf: 0x6d40f620,\n\t// Block 0xc2f, offset 0x30bc0\n\t0x30bc0: 0x6d40f820, 0x30bc1: 0x6d40fa20, 0x30bc2: 0x6d40fc20, 0x30bc3: 0x6d40fe20,\n\t0x30bc4: 0x6d410020, 0x30bc5: 0x6d410220, 0x30bc6: 0x6d410420, 0x30bc7: 0x6d410620,\n\t0x30bc8: 0x6d410820, 0x30bc9: 0x6d410a20, 0x30bca: 0x6d410c20, 0x30bcb: 0x6d410e20,\n\t0x30bcc: 0x6d411020, 0x30bcd: 0x6d411220, 0x30bce: 0x6d411420, 0x30bcf: 0x6d135420,\n\t0x30bd0: 0x6d411620, 0x30bd1: 0x6d411820, 0x30bd2: 0x6d411a20, 0x30bd3: 0x6d411c20,\n\t0x30bd4: 0x6d411e20, 0x30bd5: 0x6d412020, 0x30bd6: 0x6d412220, 0x30bd7: 0x6d412420,\n\t0x30bd8: 0x6d412620, 0x30bd9: 0x6d412820, 0x30bda: 0x6d412a20, 0x30bdb: 0x6d412c20,\n\t0x30bdc: 0x6d412e20, 0x30bdd: 0x6d413020, 0x30bde: 0x6d413220, 0x30bdf: 0x6d413420,\n\t0x30be0: 0x6d413620, 0x30be1: 0x6d413820, 0x30be2: 0x6d413a20, 0x30be3: 0x6d413c20,\n\t0x30be4: 0x6d413e20, 0x30be5: 0x6d414020, 0x30be6: 0x6d414220, 0x30be7: 0x6d414420,\n\t0x30be8: 0x6d414620, 0x30be9: 0x6d414820, 0x30bea: 0x6d414a20, 0x30beb: 0x6d414c20,\n\t0x30bec: 0x6d414e20, 0x30bed: 0x6d415020, 0x30bee: 0x6d415220, 0x30bef: 0x6d415420,\n\t0x30bf0: 0x6d415620, 0x30bf1: 0x6d415820, 0x30bf2: 0x6d6dc220, 0x30bf3: 0x6d6dc420,\n\t0x30bf4: 0x6d6dc620, 0x30bf5: 0x6d6dc820, 0x30bf6: 0x6d6dca20, 0x30bf7: 0x6d6dcc20,\n\t0x30bf8: 0x6d6dce20, 0x30bf9: 0x6d6dd020, 0x30bfa: 0x6d6dd220, 0x30bfb: 0x6d6dd420,\n\t0x30bfc: 0x6d6dd620, 0x30bfd: 0x6d6dd820, 0x30bfe: 0x6d6dda20, 0x30bff: 0x6d6ddc20,\n\t// Block 0xc30, offset 0x30c00\n\t0x30c00: 0x6d6dde20, 0x30c01: 0x6d6de020, 0x30c02: 0x6d6de220, 0x30c03: 0x6d6de420,\n\t0x30c04: 0x6d6de620, 0x30c05: 0x6d6de820, 0x30c06: 0x6d6dea20, 0x30c07: 0x6d6dec20,\n\t0x30c08: 0x6d6dee20, 0x30c09: 0x6d6df020, 0x30c0a: 0x6d6df220, 0x30c0b: 0x6d969820,\n\t0x30c0c: 0x6d6df420, 0x30c0d: 0x6d6df620, 0x30c0e: 0x6d6df820, 0x30c0f: 0x6d6dfa20,\n\t0x30c10: 0x6d6dfc20, 0x30c11: 0x6d6dfe20, 0x30c12: 0x6d6e0020, 0x30c13: 0x6d6e0220,\n\t0x30c14: 0x6d6e0420, 0x30c15: 0x6d6e0620, 0x30c16: 0x6d6e0820, 0x30c17: 0x6d6e0a20,\n\t0x30c18: 0x6d6e0c20, 0x30c19: 0x6d6e0e20, 0x30c1a: 0x6d6e1020, 0x30c1b: 0x6d6e1220,\n\t0x30c1c: 0x6d6e1420, 0x30c1d: 0x6d6e1620, 0x30c1e: 0x6d6e1820, 0x30c1f: 0x6d6e1a20,\n\t0x30c20: 0x6d6e1c20, 0x30c21: 0x6d6e1e20, 0x30c22: 0x6d6e2020, 0x30c23: 0x6d6e2220,\n\t0x30c24: 0x6d6e2420, 0x30c25: 0x6d6e2620, 0x30c26: 0x6d6e2820, 0x30c27: 0x6d6e2a20,\n\t0x30c28: 0x6d6e2c20, 0x30c29: 0x6d6e2e20, 0x30c2a: 0x6d6e3020, 0x30c2b: 0x6d6e3220,\n\t0x30c2c: 0x6d6e3420, 0x30c2d: 0x6d6e3620, 0x30c2e: 0x6d41be20, 0x30c2f: 0x6d6e3820,\n\t0x30c30: 0x6d6e3a20, 0x30c31: 0x6d6e3c20, 0x30c32: 0x6d6e3e20, 0x30c33: 0x6d6e4020,\n\t0x30c34: 0x6d6e4220, 0x30c35: 0x6d6e4420, 0x30c36: 0x6d6e4620, 0x30c37: 0x6d96a220,\n\t0x30c38: 0x6d96a420, 0x30c39: 0x6d96a620, 0x30c3a: 0x6d96a820, 0x30c3b: 0x6d96aa20,\n\t0x30c3c: 0x6d96ac20, 0x30c3d: 0x6d96ae20, 0x30c3e: 0x6d96b020, 0x30c3f: 0x6d96b220,\n\t// Block 0xc31, offset 0x30c40\n\t0x30c40: 0x6d96b420, 0x30c41: 0x6d96b620, 0x30c42: 0x6d96b820, 0x30c43: 0x6d96ba20,\n\t0x30c44: 0x6d96bc20, 0x30c45: 0x6d96be20, 0x30c46: 0x6d96c020, 0x30c47: 0x6d96c220,\n\t0x30c48: 0x6d96c420, 0x30c49: 0x6d96c620, 0x30c4a: 0x6d96c820, 0x30c4b: 0x6d96ca20,\n\t0x30c4c: 0x6d96cc20, 0x30c4d: 0x6d96ce20, 0x30c4e: 0x6d96d020, 0x30c4f: 0x6d96d220,\n\t0x30c50: 0x6d96d420, 0x30c51: 0x6d96d620, 0x30c52: 0x6d96d820, 0x30c53: 0x6d96da20,\n\t0x30c54: 0x6d96dc20, 0x30c55: 0x6d96de20, 0x30c56: 0x6d96e020, 0x30c57: 0x6d96e220,\n\t0x30c58: 0x6d96e420, 0x30c59: 0x6d96e620, 0x30c5a: 0x6d96e820, 0x30c5b: 0x6d96ea20,\n\t0x30c5c: 0x6d96ec20, 0x30c5d: 0x6d96ee20, 0x30c5e: 0x6d96f020, 0x30c5f: 0x6d96f220,\n\t0x30c60: 0x6d96f420, 0x30c61: 0x6d96f620, 0x30c62: 0x6d96f820, 0x30c63: 0x6d96fa20,\n\t0x30c64: 0x6d96fc20, 0x30c65: 0x6d96fe20, 0x30c66: 0x6d970020, 0x30c67: 0x6d970220,\n\t0x30c68: 0x6db9ac20, 0x30c69: 0x6d970420, 0x30c6a: 0x6d970620, 0x30c6b: 0x6d970820,\n\t0x30c6c: 0x6d970a20, 0x30c6d: 0x6d970c20, 0x30c6e: 0x6d970e20, 0x30c6f: 0x6d971020,\n\t0x30c70: 0x6d971220, 0x30c71: 0x6d971420, 0x30c72: 0x6d971620, 0x30c73: 0x6d971820,\n\t0x30c74: 0x6d971a20, 0x30c75: 0x6d971c20, 0x30c76: 0x6d971e20, 0x30c77: 0x6d972020,\n\t0x30c78: 0x6d972220, 0x30c79: 0x6d972420, 0x30c7a: 0x6d972620, 0x30c7b: 0x6d972820,\n\t0x30c7c: 0x6d972a20, 0x30c7d: 0x6d972c20, 0x30c7e: 0x6d972e20, 0x30c7f: 0x6d973020,\n\t// Block 0xc32, offset 0x30c80\n\t0x30c80: 0x6d973220, 0x30c81: 0x6d973420, 0x30c82: 0x6d973620, 0x30c83: 0x6d973820,\n\t0x30c84: 0x6d973a20, 0x30c85: 0x6d973c20, 0x30c86: 0x6d973e20, 0x30c87: 0x6db9ae20,\n\t0x30c88: 0x6d974020, 0x30c89: 0x6db9b020, 0x30c8a: 0x6db9b220, 0x30c8b: 0x6db9b420,\n\t0x30c8c: 0x6db9b620, 0x30c8d: 0x6db9b820, 0x30c8e: 0x6db9ba20, 0x30c8f: 0x6db9bc20,\n\t0x30c90: 0x6db9be20, 0x30c91: 0x6db9c020, 0x30c92: 0x6db9c220, 0x30c93: 0x6db9c420,\n\t0x30c94: 0x6db9c620, 0x30c95: 0x6db9c820, 0x30c96: 0x6db9ca20, 0x30c97: 0x6db9cc20,\n\t0x30c98: 0x6db9ce20, 0x30c99: 0x6db9d020, 0x30c9a: 0x6db9d220, 0x30c9b: 0x6db9d420,\n\t0x30c9c: 0x6db9d620, 0x30c9d: 0x6db9d820, 0x30c9e: 0x6db9da20, 0x30c9f: 0x6db9dc20,\n\t0x30ca0: 0x6db9de20, 0x30ca1: 0x6db9e020, 0x30ca2: 0x6db9e220, 0x30ca3: 0x6db9e420,\n\t0x30ca4: 0x6db9e620, 0x30ca5: 0x6db9e820, 0x30ca6: 0x6db9ea20, 0x30ca7: 0x6db9ec20,\n\t0x30ca8: 0x6db9ee20, 0x30ca9: 0x6db9f020, 0x30caa: 0x6db9f220, 0x30cab: 0x6db9f420,\n\t0x30cac: 0x6db9f620, 0x30cad: 0x6db9f820, 0x30cae: 0x6db9fa20, 0x30caf: 0x6db9fc20,\n\t0x30cb0: 0x6db9fe20, 0x30cb1: 0x6dba0020, 0x30cb2: 0x6dba0220, 0x30cb3: 0x6dba0420,\n\t0x30cb4: 0x6dba0620, 0x30cb5: 0x6dba0820, 0x30cb6: 0x6dba0a20, 0x30cb7: 0x6dba0c20,\n\t0x30cb8: 0x6dba0e20, 0x30cb9: 0x6dba1020, 0x30cba: 0x6d97ec20, 0x30cbb: 0x6dba1220,\n\t0x30cbc: 0x6dba1420, 0x30cbd: 0x6dba1620, 0x30cbe: 0x6dba1820, 0x30cbf: 0x6dba1a20,\n\t// Block 0xc33, offset 0x30cc0\n\t0x30cc0: 0x6dba1c20, 0x30cc1: 0x6dba1e20, 0x30cc2: 0x6dba2020, 0x30cc3: 0x6dba2220,\n\t0x30cc4: 0x6dba2420, 0x30cc5: 0x6dba2620, 0x30cc6: 0x6dba2820, 0x30cc7: 0x6dba2a20,\n\t0x30cc8: 0x6dd7ee20, 0x30cc9: 0x6dd7f020, 0x30cca: 0x6dd7f220, 0x30ccb: 0x6dd7f420,\n\t0x30ccc: 0x6dd7f620, 0x30ccd: 0x6dd7f820, 0x30cce: 0x6dd7fa20, 0x30ccf: 0x6dd7fc20,\n\t0x30cd0: 0x6dd7fe20, 0x30cd1: 0x6dd80020, 0x30cd2: 0x6dd80220, 0x30cd3: 0x6dd80420,\n\t0x30cd4: 0x6dd80620, 0x30cd5: 0x6dd80820, 0x30cd6: 0x6dd80a20, 0x30cd7: 0x6dd80c20,\n\t0x30cd8: 0x6dd80e20, 0x30cd9: 0x6dd81020, 0x30cda: 0x6dd81220, 0x30cdb: 0x6dd81420,\n\t0x30cdc: 0x6dd81620, 0x30cdd: 0x6dd81820, 0x30cde: 0x6dd81a20, 0x30cdf: 0x6dd81c20,\n\t0x30ce0: 0x6dd81e20, 0x30ce1: 0x6dbaec20, 0x30ce2: 0x6dd82020, 0x30ce3: 0x6dd82220,\n\t0x30ce4: 0x6dd82420, 0x30ce5: 0x6dd82620, 0x30ce6: 0x6dd82820, 0x30ce7: 0x6dd82a20,\n\t0x30ce8: 0x6dd82c20, 0x30ce9: 0x6df06e20, 0x30cea: 0x6dd82e20, 0x30ceb: 0x6dd83020,\n\t0x30cec: 0x6dd83220, 0x30ced: 0x6dd83420, 0x30cee: 0x6dd83620, 0x30cef: 0x6dbaee20,\n\t0x30cf0: 0x6dd83820, 0x30cf1: 0x6dd83a20, 0x30cf2: 0x6dd83c20, 0x30cf3: 0x6dd83e20,\n\t0x30cf4: 0x6dd84020, 0x30cf5: 0x6dd84220, 0x30cf6: 0x6dd84420, 0x30cf7: 0x6dd84620,\n\t0x30cf8: 0x6dd84820, 0x30cf9: 0x6dd84a20, 0x30cfa: 0x6dd84c20, 0x30cfb: 0x6dd84e20,\n\t0x30cfc: 0x6dd85020, 0x30cfd: 0x6dd85220, 0x30cfe: 0x6dd85420, 0x30cff: 0x6dd85620,\n\t// Block 0xc34, offset 0x30d00\n\t0x30d00: 0x6df07020, 0x30d01: 0x6df07220, 0x30d02: 0x6df07420, 0x30d03: 0x6df07620,\n\t0x30d04: 0x6df07820, 0x30d05: 0x6df07a20, 0x30d06: 0x6df07c20, 0x30d07: 0x6df07e20,\n\t0x30d08: 0x6df08020, 0x30d09: 0x6df08220, 0x30d0a: 0x6df08420, 0x30d0b: 0x6df08620,\n\t0x30d0c: 0x6df08820, 0x30d0d: 0x6df08a20, 0x30d0e: 0x6df08c20, 0x30d0f: 0x6df08e20,\n\t0x30d10: 0x6df09020, 0x30d11: 0x6df09220, 0x30d12: 0x6df09420, 0x30d13: 0x6df09620,\n\t0x30d14: 0x6df09820, 0x30d15: 0x6df09a20, 0x30d16: 0x6df09c20, 0x30d17: 0x6df09e20,\n\t0x30d18: 0x6df0a020, 0x30d19: 0x6df0a220, 0x30d1a: 0x6df0a420, 0x30d1b: 0x6df0a620,\n\t0x30d1c: 0x6df0a820, 0x30d1d: 0x6df0aa20, 0x30d1e: 0x6df0ac20, 0x30d1f: 0x6df0ae20,\n\t0x30d20: 0x6df0b020, 0x30d21: 0x6df0b220, 0x30d22: 0x6df0b420, 0x30d23: 0x6df0b620,\n\t0x30d24: 0x6df0b820, 0x30d25: 0x6df0ba20, 0x30d26: 0x6df0bc20, 0x30d27: 0x6df0be20,\n\t0x30d28: 0x6df0c020, 0x30d29: 0x6df0c220, 0x30d2a: 0x6df0c420, 0x30d2b: 0x6df0c620,\n\t0x30d2c: 0x6df0c820, 0x30d2d: 0x6df0ca20, 0x30d2e: 0x6df0cc20, 0x30d2f: 0x6df0ce20,\n\t0x30d30: 0x6df0d020, 0x30d31: 0x6df0d220, 0x30d32: 0x6df0d420, 0x30d33: 0x6e047c20,\n\t0x30d34: 0x6e159420, 0x30d35: 0x6e047e20, 0x30d36: 0x6e048020, 0x30d37: 0x6e048220,\n\t0x30d38: 0x6e048420, 0x30d39: 0x6df0d620, 0x30d3a: 0x6e048620, 0x30d3b: 0x6e048820,\n\t0x30d3c: 0x6e048a20, 0x30d3d: 0x6e048c20, 0x30d3e: 0x6e048e20, 0x30d3f: 0x6e049020,\n\t// Block 0xc35, offset 0x30d40\n\t0x30d40: 0x6e049220, 0x30d41: 0x6e049420, 0x30d42: 0x6e049620, 0x30d43: 0x6e049820,\n\t0x30d44: 0x6e049a20, 0x30d45: 0x6e049c20, 0x30d46: 0x6e049e20, 0x30d47: 0x6e04a020,\n\t0x30d48: 0x6e04a220, 0x30d49: 0x6e04a420, 0x30d4a: 0x6e04a620, 0x30d4b: 0x6e04a820,\n\t0x30d4c: 0x6e04aa20, 0x30d4d: 0x6e04ac20, 0x30d4e: 0x6e04ae20, 0x30d4f: 0x6e04b020,\n\t0x30d50: 0x6e04b220, 0x30d51: 0x6e04b420, 0x30d52: 0x6e04b620, 0x30d53: 0x6e04b820,\n\t0x30d54: 0x6e04ba20, 0x30d55: 0x6e04bc20, 0x30d56: 0x6e04be20, 0x30d57: 0x6e04c020,\n\t0x30d58: 0x6e04c220, 0x30d59: 0x6e04c420, 0x30d5a: 0x6e04c620, 0x30d5b: 0x6e04c820,\n\t0x30d5c: 0x6e04ca20, 0x30d5d: 0x6e04cc20, 0x30d5e: 0x6e04ce20, 0x30d5f: 0x6e04d020,\n\t0x30d60: 0x6e04d220, 0x30d61: 0x6e04d420, 0x30d62: 0x6e04d620, 0x30d63: 0x6e04d820,\n\t0x30d64: 0x6e04da20, 0x30d65: 0x6e04dc20, 0x30d66: 0x6e04de20, 0x30d67: 0x6e04e020,\n\t0x30d68: 0x6e04e220, 0x30d69: 0x6e159620, 0x30d6a: 0x6e159820, 0x30d6b: 0x6e159a20,\n\t0x30d6c: 0x6e159c20, 0x30d6d: 0x6e159e20, 0x30d6e: 0x6e15a020, 0x30d6f: 0x6e058820,\n\t0x30d70: 0x6e15a220, 0x30d71: 0x6e15a420, 0x30d72: 0x6e15a620, 0x30d73: 0x6e15a820,\n\t0x30d74: 0x6e15aa20, 0x30d75: 0x6e15ac20, 0x30d76: 0x6e15ae20, 0x30d77: 0x6e15b020,\n\t0x30d78: 0x6e15b220, 0x30d79: 0x6e15b420, 0x30d7a: 0x6e15b620, 0x30d7b: 0x6e15b820,\n\t0x30d7c: 0x6e058a20, 0x30d7d: 0x6e15ba20, 0x30d7e: 0x6e15bc20, 0x30d7f: 0x6e15be20,\n\t// Block 0xc36, offset 0x30d80\n\t0x30d80: 0x6e15c020, 0x30d81: 0x6e15c220, 0x30d82: 0x6e231620, 0x30d83: 0x6e231820,\n\t0x30d84: 0x6e231a20, 0x30d85: 0x6e231c20, 0x30d86: 0x6e231e20, 0x30d87: 0x6e232020,\n\t0x30d88: 0x6e232220, 0x30d89: 0x6e232420, 0x30d8a: 0x6e232620, 0x30d8b: 0x6e232820,\n\t0x30d8c: 0x6e232a20, 0x30d8d: 0x6e232c20, 0x30d8e: 0x6e232e20, 0x30d8f: 0x6e233020,\n\t0x30d90: 0x6e233220, 0x30d91: 0x6e233420, 0x30d92: 0x6e233620, 0x30d93: 0x6e233820,\n\t0x30d94: 0x6e233a20, 0x30d95: 0x6e2d4620, 0x30d96: 0x6e2d4820, 0x30d97: 0x6e2d4a20,\n\t0x30d98: 0x6e2d4c20, 0x30d99: 0x6e2d4e20, 0x30d9a: 0x6e2d5020, 0x30d9b: 0x6e2d5220,\n\t0x30d9c: 0x6e2d5420, 0x30d9d: 0x6e2d5620, 0x30d9e: 0x6e2d5820, 0x30d9f: 0x6e2d5a20,\n\t0x30da0: 0x6e2d5c20, 0x30da1: 0x6e2d5e20, 0x30da2: 0x6e2d6020, 0x30da3: 0x6e2d6220,\n\t0x30da4: 0x6e2d6420, 0x30da5: 0x6e2d6620, 0x30da6: 0x6e2d6820, 0x30da7: 0x6e233c20,\n\t0x30da8: 0x6e351c20, 0x30da9: 0x6e351e20, 0x30daa: 0x6e352020, 0x30dab: 0x6e352220,\n\t0x30dac: 0x6e352420, 0x30dad: 0x6e3ab420, 0x30dae: 0x6e3ab620, 0x30daf: 0x6e3ab820,\n\t0x30db0: 0x6e3aba20, 0x30db1: 0x6e3abc20, 0x30db2: 0x6e3abe20, 0x30db3: 0x6e3ac020,\n\t0x30db4: 0x6e3e7620, 0x30db5: 0x6e3e7820, 0x30db6: 0x6e3e7a20, 0x30db7: 0x6e3e7c20,\n\t0x30db8: 0x6e3e7e20, 0x30db9: 0x6e3e8020, 0x30dba: 0x6e3e8220, 0x30dbb: 0x6e414020,\n\t0x30dbc: 0x6e414220, 0x30dbd: 0x6e414420, 0x30dbe: 0x6e414620, 0x30dbf: 0x6e434020,\n\t// Block 0xc37, offset 0x30dc0\n\t0x30dc0: 0x6e434220, 0x30dc1: 0x6e434420, 0x30dc2: 0x6e434620, 0x30dc3: 0x6e449420,\n\t0x30dc4: 0x6e449620, 0x30dc5: 0x6c0aaa20, 0x30dc6: 0x6c158c20, 0x30dc7: 0x6c158e20,\n\t0x30dc8: 0x6c27f220, 0x30dc9: 0x6c27f420, 0x30dca: 0x6c27f620, 0x30dcb: 0x6c27f820,\n\t0x30dcc: 0x6c27fa20, 0x30dcd: 0x6c41e020, 0x30dce: 0x6c41e220, 0x30dcf: 0x6c41e420,\n\t0x30dd0: 0x6c41e620, 0x30dd1: 0x6c41e820, 0x30dd2: 0x6c41ea20, 0x30dd3: 0x6c41ec20,\n\t0x30dd4: 0x6c41ee20, 0x30dd5: 0x6c41f020, 0x30dd6: 0x6c41f220, 0x30dd7: 0x6c41f420,\n\t0x30dd8: 0x6c626620, 0x30dd9: 0x6c626820, 0x30dda: 0x6c626a20, 0x30ddb: 0x6c626c20,\n\t0x30ddc: 0x6c626e20, 0x30ddd: 0x6c627020, 0x30dde: 0x6c627220, 0x30ddf: 0x6c627420,\n\t0x30de0: 0x6c627620, 0x30de1: 0x6c627820, 0x30de2: 0x6c627a20, 0x30de3: 0x6c627c20,\n\t0x30de4: 0x6c627e20, 0x30de5: 0x6c628020, 0x30de6: 0x6c628220, 0x30de7: 0x6c628420,\n\t0x30de8: 0x6c628620, 0x30de9: 0x6c628820, 0x30dea: 0x6c628a20, 0x30deb: 0x6c628c20,\n\t0x30dec: 0x6c628e20, 0x30ded: 0x6c629020, 0x30dee: 0x6c629220, 0x30def: 0x6c629420,\n\t0x30df0: 0x6c893420, 0x30df1: 0x6c893620, 0x30df2: 0x6c893820, 0x30df3: 0x6c893a20,\n\t0x30df4: 0x6c893c20, 0x30df5: 0x6c893e20, 0x30df6: 0x6c894020, 0x30df7: 0x6c894220,\n\t0x30df8: 0x6c894420, 0x30df9: 0x6c894620, 0x30dfa: 0x6c894820, 0x30dfb: 0x6c894a20,\n\t0x30dfc: 0x6c894c20, 0x30dfd: 0x6c894e20, 0x30dfe: 0x6c895020, 0x30dff: 0x6c895220,\n\t// Block 0xc38, offset 0x30e00\n\t0x30e00: 0x6c895420, 0x30e01: 0x6c895620, 0x30e02: 0x6c895820, 0x30e03: 0x6c895a20,\n\t0x30e04: 0x6c895c20, 0x30e05: 0x6c895e20, 0x30e06: 0x6c896020, 0x30e07: 0x6c896220,\n\t0x30e08: 0x6c896420, 0x30e09: 0x6c896620, 0x30e0a: 0x6c896820, 0x30e0b: 0x6c896a20,\n\t0x30e0c: 0x6c896c20, 0x30e0d: 0x6c896e20, 0x30e0e: 0x6c897020, 0x30e0f: 0x6cb52220,\n\t0x30e10: 0x6cb52420, 0x30e11: 0x6cb52620, 0x30e12: 0x6cb52820, 0x30e13: 0x6cb52a20,\n\t0x30e14: 0x6cb52c20, 0x30e15: 0x6cb52e20, 0x30e16: 0x6cb53020, 0x30e17: 0x6cb53220,\n\t0x30e18: 0x6cb53420, 0x30e19: 0x6cb53620, 0x30e1a: 0x6cb53820, 0x30e1b: 0x6cb53a20,\n\t0x30e1c: 0x6cb53c20, 0x30e1d: 0x6cb53e20, 0x30e1e: 0x6cb54020, 0x30e1f: 0x6cb54220,\n\t0x30e20: 0x6cb54420, 0x30e21: 0x6cb54620, 0x30e22: 0x6cb54820, 0x30e23: 0x6cb54a20,\n\t0x30e24: 0x6cb54c20, 0x30e25: 0x6cb54e20, 0x30e26: 0x6cb55020, 0x30e27: 0x6cb55220,\n\t0x30e28: 0x6cb55420, 0x30e29: 0x6cb55620, 0x30e2a: 0x6cb55820, 0x30e2b: 0x6cb55a20,\n\t0x30e2c: 0x6cb55c20, 0x30e2d: 0x6cb55e20, 0x30e2e: 0x6cb56020, 0x30e2f: 0x6cb56220,\n\t0x30e30: 0x6cb56420, 0x30e31: 0x6cb56620, 0x30e32: 0x6cb56820, 0x30e33: 0x6cb56a20,\n\t0x30e34: 0x6cb56c20, 0x30e35: 0x6cb56e20, 0x30e36: 0x6cb57020, 0x30e37: 0x6cb57220,\n\t0x30e38: 0x6ce52a20, 0x30e39: 0x6ce52c20, 0x30e3a: 0x6ce52e20, 0x30e3b: 0x6ce53020,\n\t0x30e3c: 0x6ce53220, 0x30e3d: 0x6ce53420, 0x30e3e: 0x6ce53620, 0x30e3f: 0x6ce53820,\n\t// Block 0xc39, offset 0x30e40\n\t0x30e40: 0x6ce53a20, 0x30e41: 0x6ce53c20, 0x30e42: 0x6ce53e20, 0x30e43: 0x6ce54020,\n\t0x30e44: 0x6ce54220, 0x30e45: 0x6ce54420, 0x30e46: 0x6ce54620, 0x30e47: 0x6ce54820,\n\t0x30e48: 0x6ce54a20, 0x30e49: 0x6ce54c20, 0x30e4a: 0x6ce54e20, 0x30e4b: 0x6ce55020,\n\t0x30e4c: 0x6ce55220, 0x30e4d: 0x6ce55420, 0x30e4e: 0x6ce55620, 0x30e4f: 0x6ce55820,\n\t0x30e50: 0x6ce55a20, 0x30e51: 0x6ce55c20, 0x30e52: 0x6ce55e20, 0x30e53: 0x6ce56020,\n\t0x30e54: 0x6ce56220, 0x30e55: 0x6ce56420, 0x30e56: 0x6d13a420, 0x30e57: 0x6d13a620,\n\t0x30e58: 0x6d13a820, 0x30e59: 0x6d13aa20, 0x30e5a: 0x6d13ac20, 0x30e5b: 0x6d13ae20,\n\t0x30e5c: 0x6d13b020, 0x30e5d: 0x6d13b220, 0x30e5e: 0x6d13b420, 0x30e5f: 0x6d13b620,\n\t0x30e60: 0x6d13b820, 0x30e61: 0x6d13ba20, 0x30e62: 0x6d13bc20, 0x30e63: 0x6d13be20,\n\t0x30e64: 0x6d13c020, 0x30e65: 0x6d13c220, 0x30e66: 0x6d13c420, 0x30e67: 0x6d13c620,\n\t0x30e68: 0x6d13c820, 0x30e69: 0x6d13ca20, 0x30e6a: 0x6d13cc20, 0x30e6b: 0x6d13ce20,\n\t0x30e6c: 0x6d13d020, 0x30e6d: 0x6d13d220, 0x30e6e: 0x6d13d420, 0x30e6f: 0x6d13d620,\n\t0x30e70: 0x6d13d820, 0x30e71: 0x6d13da20, 0x30e72: 0x6d41c420, 0x30e73: 0x6d41c620,\n\t0x30e74: 0x6d41c820, 0x30e75: 0x6d41ca20, 0x30e76: 0x6d41cc20, 0x30e77: 0x6d41ce20,\n\t0x30e78: 0x6d41d020, 0x30e79: 0x6d41d220, 0x30e7a: 0x6d41d420, 0x30e7b: 0x6d41d620,\n\t0x30e7c: 0x6d41d820, 0x30e7d: 0x6d41da20, 0x30e7e: 0x6d41dc20, 0x30e7f: 0x6d41de20,\n\t// Block 0xc3a, offset 0x30e80\n\t0x30e80: 0x6d41e020, 0x30e81: 0x6d41e220, 0x30e82: 0x6d41e420, 0x30e83: 0x6d41e620,\n\t0x30e84: 0x6d41e820, 0x30e85: 0x6d41ea20, 0x30e86: 0x6d6ed220, 0x30e87: 0x6d6ed420,\n\t0x30e88: 0x6d6ed620, 0x30e89: 0x6d6ed820, 0x30e8a: 0x6d6eda20, 0x30e8b: 0x6d6edc20,\n\t0x30e8c: 0x6d6ede20, 0x30e8d: 0x6d6ee020, 0x30e8e: 0x6d6ee220, 0x30e8f: 0x6d6ee420,\n\t0x30e90: 0x6d6ee620, 0x30e91: 0x6d6ee820, 0x30e92: 0x6d6eea20, 0x30e93: 0x6d6eec20,\n\t0x30e94: 0x6d6eee20, 0x30e95: 0x6d6ef020, 0x30e96: 0x6d97ee20, 0x30e97: 0x6d97f020,\n\t0x30e98: 0x6d97f220, 0x30e99: 0x6d97f420, 0x30e9a: 0x6d97f620, 0x30e9b: 0x6d97f820,\n\t0x30e9c: 0x6d97fa20, 0x30e9d: 0x6d97fc20, 0x30e9e: 0x6d97fe20, 0x30e9f: 0x6d980020,\n\t0x30ea0: 0x6d980220, 0x30ea1: 0x6dbaf020, 0x30ea2: 0x6dbaf220, 0x30ea3: 0x6dbaf420,\n\t0x30ea4: 0x6dbaf620, 0x30ea5: 0x6dbaf820, 0x30ea6: 0x6dbafa20, 0x30ea7: 0x6dbafc20,\n\t0x30ea8: 0x6dbafe20, 0x30ea9: 0x6dbb0020, 0x30eaa: 0x6dbb0220, 0x30eab: 0x6dbb0420,\n\t0x30eac: 0x6dd8fc20, 0x30ead: 0x6dd8fe20, 0x30eae: 0x6dd90020, 0x30eaf: 0x6dd90220,\n\t0x30eb0: 0x6dd90420, 0x30eb1: 0x6dd90620, 0x30eb2: 0x6df15e20, 0x30eb3: 0x6e059220,\n\t0x30eb4: 0x6e059420, 0x30eb5: 0x6e239420, 0x30eb6: 0x6e239620, 0x30eb7: 0x6c41fe20,\n\t0x30eb8: 0x6c420020, 0x30eb9: 0x6cb58a20, 0x30eba: 0x6cb58c20, 0x30ebb: 0x6ce57220,\n\t0x30ebc: 0x6d6f0020, 0x30ebd: 0x6df16620, 0x30ebe: 0x6e239820, 0x30ebf: 0x6c0aac20,\n\t// Block 0xc3b, offset 0x30ec0\n\t0x30ec0: 0x6c420220, 0x30ec1: 0x6c62ac20, 0x30ec2: 0x6c62ae20, 0x30ec3: 0x6c898420,\n\t0x30ec4: 0x6c898620, 0x30ec5: 0x6c898820, 0x30ec6: 0x6cb5aa20, 0x30ec7: 0x6cb5ac20,\n\t0x30ec8: 0x6cb5ae20, 0x30ec9: 0x6cb5b020, 0x30eca: 0x6cb5b220, 0x30ecb: 0x6ce59420,\n\t0x30ecc: 0x6ce59620, 0x30ecd: 0x6ce59820, 0x30ece: 0x6ce59a20, 0x30ecf: 0x6ce59c20,\n\t0x30ed0: 0x6ce59e20, 0x30ed1: 0x6ce5a020, 0x30ed2: 0x6ce5a220, 0x30ed3: 0x6ce5a420,\n\t0x30ed4: 0x6ce5a620, 0x30ed5: 0x6ce5a820, 0x30ed6: 0x6ce5aa20, 0x30ed7: 0x6ce5ac20,\n\t0x30ed8: 0x6d141e20, 0x30ed9: 0x6d142020, 0x30eda: 0x6d142220, 0x30edb: 0x6d142420,\n\t0x30edc: 0x6d142620, 0x30edd: 0x6d142820, 0x30ede: 0x6d142a20, 0x30edf: 0x6d142c20,\n\t0x30ee0: 0x6d142e20, 0x30ee1: 0x6d421a20, 0x30ee2: 0x6d421c20, 0x30ee3: 0x6d421e20,\n\t0x30ee4: 0x6d422020, 0x30ee5: 0x6d422220, 0x30ee6: 0x6d422420, 0x30ee7: 0x6d422620,\n\t0x30ee8: 0x6d422820, 0x30ee9: 0x6d422a20, 0x30eea: 0x6d422c20, 0x30eeb: 0x6d6f2420,\n\t0x30eec: 0x6d6f2620, 0x30eed: 0x6d6f2820, 0x30eee: 0x6d6f2a20, 0x30eef: 0x6d6f2c20,\n\t0x30ef0: 0x6d6f2e20, 0x30ef1: 0x6d6f3020, 0x30ef2: 0x6d6f3220, 0x30ef3: 0x6d6f3420,\n\t0x30ef4: 0x6d6f3620, 0x30ef5: 0x6d983620, 0x30ef6: 0x6d983820, 0x30ef7: 0x6dbb3420,\n\t0x30ef8: 0x6d983a20, 0x30ef9: 0x6d983c20, 0x30efa: 0x6d983e20, 0x30efb: 0x6d984020,\n\t0x30efc: 0x6d984220, 0x30efd: 0x6d984420, 0x30efe: 0x6d984620, 0x30eff: 0x6d984820,\n\t// Block 0xc3c, offset 0x30f00\n\t0x30f00: 0x6dbb2420, 0x30f01: 0x6d984a20, 0x30f02: 0x6d984c20, 0x30f03: 0x6dbb3620,\n\t0x30f04: 0x6dbb3820, 0x30f05: 0x6dbb3a20, 0x30f06: 0x6dbb3c20, 0x30f07: 0x6dbb3e20,\n\t0x30f08: 0x6dbb4020, 0x30f09: 0x6dbb4220, 0x30f0a: 0x6dbb4420, 0x30f0b: 0x6dbb4620,\n\t0x30f0c: 0x6dbb4820, 0x30f0d: 0x6d988e20, 0x30f0e: 0x6dbb4a20, 0x30f0f: 0x6dbb4c20,\n\t0x30f10: 0x6dd92020, 0x30f11: 0x6dd92220, 0x30f12: 0x6dd92420, 0x30f13: 0x6dd92620,\n\t0x30f14: 0x6dd92820, 0x30f15: 0x6dd92a20, 0x30f16: 0x6dd92c20, 0x30f17: 0x6dd92e20,\n\t0x30f18: 0x6dd93020, 0x30f19: 0x6df17620, 0x30f1a: 0x6df17820, 0x30f1b: 0x6df17a20,\n\t0x30f1c: 0x6df17c20, 0x30f1d: 0x6df17e20, 0x30f1e: 0x6e05a220, 0x30f1f: 0x6e05a420,\n\t0x30f20: 0x6e05a620, 0x30f21: 0x6e05a820, 0x30f22: 0x6e165c20, 0x30f23: 0x6e165e20,\n\t0x30f24: 0x6e166020, 0x30f25: 0x6e166220, 0x30f26: 0x6e166420, 0x30f27: 0x6e23a620,\n\t0x30f28: 0x6c020a20, 0x30f29: 0x6c052620, 0x30f2a: 0x6c0aae20, 0x30f2b: 0x6c159020,\n\t0x30f2c: 0x6c159220, 0x30f2d: 0x6c159420, 0x30f2e: 0x6c159620, 0x30f2f: 0x6c159820,\n\t0x30f30: 0x6c280420, 0x30f31: 0x6c280620, 0x30f32: 0x6c280820, 0x30f33: 0x6c280a20,\n\t0x30f34: 0x6c280c20, 0x30f35: 0x6c280e20, 0x30f36: 0x6c281020, 0x30f37: 0x6c281220,\n\t0x30f38: 0x6c420820, 0x30f39: 0x6c420a20, 0x30f3a: 0x6c62b420, 0x30f3b: 0x6c62b620,\n\t0x30f3c: 0x6c62b820, 0x30f3d: 0x6c62ba20, 0x30f3e: 0x6c62bc20, 0x30f3f: 0x6c62be20,\n\t// Block 0xc3d, offset 0x30f40\n\t0x30f40: 0x6c62c020, 0x30f41: 0x6c62c220, 0x30f42: 0x6c62c420, 0x30f43: 0x6c899620,\n\t0x30f44: 0x6c899820, 0x30f45: 0x6c899a20, 0x30f46: 0x6c899c20, 0x30f47: 0x6cb5c420,\n\t0x30f48: 0x6cb5c620, 0x30f49: 0x6cb5c820, 0x30f4a: 0x6cb5ca20, 0x30f4b: 0x6cb5cc20,\n\t0x30f4c: 0x6cb5ce20, 0x30f4d: 0x6cb5d020, 0x30f4e: 0x6cb5d220, 0x30f4f: 0x6cb5d420,\n\t0x30f50: 0x6cb5d620, 0x30f51: 0x6ce5ea20, 0x30f52: 0x6ce5ec20, 0x30f53: 0x6ce5ee20,\n\t0x30f54: 0x6ce5f020, 0x30f55: 0x6ce5f220, 0x30f56: 0x6d146e20, 0x30f57: 0x6d147020,\n\t0x30f58: 0x6d147220, 0x30f59: 0x6d147420, 0x30f5a: 0x6d426420, 0x30f5b: 0x6d989020,\n\t0x30f5c: 0x6c421020, 0x30f5d: 0x6c020c20, 0x30f5e: 0x6c0ab420, 0x30f5f: 0x6c0ab620,\n\t0x30f60: 0x6c15a420, 0x30f61: 0x6c15a620, 0x30f62: 0x6c15a820, 0x30f63: 0x6c15aa20,\n\t0x30f64: 0x6c15ac20, 0x30f65: 0x6c282620, 0x30f66: 0x6c282820, 0x30f67: 0x6c282a20,\n\t0x30f68: 0x6c282c20, 0x30f69: 0x6c282e20, 0x30f6a: 0x6c283020, 0x30f6b: 0x6c283220,\n\t0x30f6c: 0x6c283420, 0x30f6d: 0x6c283620, 0x30f6e: 0x6c283820, 0x30f6f: 0x6c283a20,\n\t0x30f70: 0x6c283c20, 0x30f71: 0x6c283e20, 0x30f72: 0x6c284020, 0x30f73: 0x6c284220,\n\t0x30f74: 0x6c284420, 0x30f75: 0x6c284620, 0x30f76: 0x6c284820, 0x30f77: 0x6c421820,\n\t0x30f78: 0x6c421a20, 0x30f79: 0x6c421c20, 0x30f7a: 0x6c421e20, 0x30f7b: 0x6c422020,\n\t0x30f7c: 0x6c422220, 0x30f7d: 0x6c422420, 0x30f7e: 0x6c422620, 0x30f7f: 0x6c422820,\n\t// Block 0xc3e, offset 0x30f80\n\t0x30f80: 0x6c422a20, 0x30f81: 0x6c422c20, 0x30f82: 0x6c422e20, 0x30f83: 0x6c423020,\n\t0x30f84: 0x6c423220, 0x30f85: 0x6c423420, 0x30f86: 0x6c423620, 0x30f87: 0x6c423820,\n\t0x30f88: 0x6c423a20, 0x30f89: 0x6c423c20, 0x30f8a: 0x6c62d620, 0x30f8b: 0x6c62d820,\n\t0x30f8c: 0x6c62da20, 0x30f8d: 0x6c62dc20, 0x30f8e: 0x6c62de20, 0x30f8f: 0x6c62e020,\n\t0x30f90: 0x6c62e220, 0x30f91: 0x6c62e420, 0x30f92: 0x6c62e620, 0x30f93: 0x6c62e820,\n\t0x30f94: 0x6c62ea20, 0x30f95: 0x6c62ec20, 0x30f96: 0x6c89b220, 0x30f97: 0x6c89b420,\n\t0x30f98: 0x6c89b620, 0x30f99: 0x6c89b820, 0x30f9a: 0x6c89d820, 0x30f9b: 0x6c89ba20,\n\t0x30f9c: 0x6c89bc20, 0x30f9d: 0x6c89be20, 0x30f9e: 0x6c89c020, 0x30f9f: 0x6c89c220,\n\t0x30fa0: 0x6c89c420, 0x30fa1: 0x6c89c620, 0x30fa2: 0x6c89c820, 0x30fa3: 0x6c89ca20,\n\t0x30fa4: 0x6c89cc20, 0x30fa5: 0x6c89ce20, 0x30fa6: 0x6c89d020, 0x30fa7: 0x6c89d220,\n\t0x30fa8: 0x6c89d420, 0x30fa9: 0x6c89d620, 0x30faa: 0x6cb5e820, 0x30fab: 0x6cb5ea20,\n\t0x30fac: 0x6cb5ec20, 0x30fad: 0x6cb5ee20, 0x30fae: 0x6cb5f020, 0x30faf: 0x6cb5f220,\n\t0x30fb0: 0x6cb5f420, 0x30fb1: 0x6cb5f620, 0x30fb2: 0x6ce5fa20, 0x30fb3: 0x6cb5f820,\n\t0x30fb4: 0x6cb5fa20, 0x30fb5: 0x6cb5fc20, 0x30fb6: 0x6cb5fe20, 0x30fb7: 0x6cb60020,\n\t0x30fb8: 0x6cb60220, 0x30fb9: 0x6cb60420, 0x30fba: 0x6cb60620, 0x30fbb: 0x6ce60220,\n\t0x30fbc: 0x6cb60820, 0x30fbd: 0x6ce60420, 0x30fbe: 0x6ce60620, 0x30fbf: 0x6ce60820,\n\t// Block 0xc3f, offset 0x30fc0\n\t0x30fc0: 0x6ce60a20, 0x30fc1: 0x6ce60c20, 0x30fc2: 0x6ce60e20, 0x30fc3: 0x6ce61020,\n\t0x30fc4: 0x6ce61220, 0x30fc5: 0x6ce61420, 0x30fc6: 0x6ce61620, 0x30fc7: 0x6ce61820,\n\t0x30fc8: 0x6ce61a20, 0x30fc9: 0x6ce61c20, 0x30fca: 0x6ce61e20, 0x30fcb: 0x6ce62020,\n\t0x30fcc: 0x6ce62220, 0x30fcd: 0x6ce62420, 0x30fce: 0x6ce62620, 0x30fcf: 0x6d147e20,\n\t0x30fd0: 0x6ce62820, 0x30fd1: 0x6d148c20, 0x30fd2: 0x6d148e20, 0x30fd3: 0x6d149020,\n\t0x30fd4: 0x6d149220, 0x30fd5: 0x6d149420, 0x30fd6: 0x6d149620, 0x30fd7: 0x6d149820,\n\t0x30fd8: 0x6d149a20, 0x30fd9: 0x6d426a20, 0x30fda: 0x6d427420, 0x30fdb: 0x6d427620,\n\t0x30fdc: 0x6d427820, 0x30fdd: 0x6d427a20, 0x30fde: 0x6d427c20, 0x30fdf: 0x6d427e20,\n\t0x30fe0: 0x6d428020, 0x30fe1: 0x6d428220, 0x30fe2: 0x6d6f9020, 0x30fe3: 0x6d6f9220,\n\t0x30fe4: 0x6d6f9420, 0x30fe5: 0x6d6f9620, 0x30fe6: 0x6d989820, 0x30fe7: 0x6d989a20,\n\t0x30fe8: 0x6d989c20, 0x30fe9: 0x6d989e20, 0x30fea: 0x6d98a020, 0x30feb: 0x6d98a220,\n\t0x30fec: 0x6dbb9220, 0x30fed: 0x6dbb9420, 0x30fee: 0x6dbb9620, 0x30fef: 0x6dbb9820,\n\t0x30ff0: 0x6dbb9a20, 0x30ff1: 0x6dbb9c20, 0x30ff2: 0x6dbb9e20, 0x30ff3: 0x6dd96a20,\n\t0x30ff4: 0x6df1a420, 0x30ff5: 0x6e05dc20, 0x30ff6: 0x6c427220, 0x30ff7: 0x6d98c020,\n\t0x30ff8: 0x6dbbb220, 0x30ff9: 0x6c427420, 0x30ffa: 0x6c8a3220, 0x30ffb: 0x6c8a3420,\n\t0x30ffc: 0x6c8a3620, 0x30ffd: 0x6c8a3820, 0x30ffe: 0x6c8a3a20, 0x30fff: 0x6cb66420,\n\t// Block 0xc40, offset 0x31000\n\t0x31000: 0x6cb66620, 0x31001: 0x6ce69020, 0x31002: 0x6ce69220, 0x31003: 0x6ce69420,\n\t0x31004: 0x6ce69620, 0x31005: 0x6ce69820, 0x31006: 0x6ce69a20, 0x31007: 0x6ce69c20,\n\t0x31008: 0x6ce69e20, 0x31009: 0x6d14e820, 0x3100a: 0x6d14ea20, 0x3100b: 0x6d14ec20,\n\t0x3100c: 0x6d42ce20, 0x3100d: 0x6d14ee20, 0x3100e: 0x6d14f020, 0x3100f: 0x6d14f220,\n\t0x31010: 0x6d42d220, 0x31011: 0x6d42d420, 0x31012: 0x6d42d620, 0x31013: 0x6d6fd020,\n\t0x31014: 0x6d98cc20, 0x31015: 0x6d98ce20, 0x31016: 0x6dbbba20, 0x31017: 0x6dd98c20,\n\t0x31018: 0x6dd98e20, 0x31019: 0x6dd99020, 0x3101a: 0x6dd99220, 0x3101b: 0x6dd99420,\n\t0x3101c: 0x6dd99620, 0x3101d: 0x6dd99820, 0x3101e: 0x6dd99a20, 0x3101f: 0x6dd99c20,\n\t0x31020: 0x6dd99e20, 0x31021: 0x6df1b020, 0x31022: 0x6dd9bc20, 0x31023: 0x6df1b220,\n\t0x31024: 0x6e169620, 0x31025: 0x6e358020, 0x31026: 0x6e358220, 0x31027: 0x6e435c20,\n\t0x31028: 0x6c427820, 0x31029: 0x6cb67e20, 0x3102a: 0x6cb68020, 0x3102b: 0x6cb68220,\n\t0x3102c: 0x6ce6c220, 0x3102d: 0x6ce6c420, 0x3102e: 0x6ce6c620, 0x3102f: 0x6ce6c820,\n\t0x31030: 0x6ce6ca20, 0x31031: 0x6ce6cc20, 0x31032: 0x6ce6ce20, 0x31033: 0x6ce6d020,\n\t0x31034: 0x6d151a20, 0x31035: 0x6d151c20, 0x31036: 0x6d151e20, 0x31037: 0x6d152020,\n\t0x31038: 0x6d152220, 0x31039: 0x6d152420, 0x3103a: 0x6d152620, 0x3103b: 0x6d152820,\n\t0x3103c: 0x6d152a20, 0x3103d: 0x6d152c20, 0x3103e: 0x6d152e20, 0x3103f: 0x6d431c20,\n\t// Block 0xc41, offset 0x31040\n\t0x31040: 0x6d431e20, 0x31041: 0x6d432020, 0x31042: 0x6d700220, 0x31043: 0x6d700420,\n\t0x31044: 0x6d700620, 0x31045: 0x6d700820, 0x31046: 0x6d700a20, 0x31047: 0x6d700c20,\n\t0x31048: 0x6d700e20, 0x31049: 0x6d701020, 0x3104a: 0x6d701220, 0x3104b: 0x6d991620,\n\t0x3104c: 0x6d991820, 0x3104d: 0x6d991a20, 0x3104e: 0x6d991c20, 0x3104f: 0x6d991e20,\n\t0x31050: 0x6d992020, 0x31051: 0x6d992220, 0x31052: 0x6d992420, 0x31053: 0x6d992620,\n\t0x31054: 0x6d992820, 0x31055: 0x6d992a20, 0x31056: 0x6d992c20, 0x31057: 0x6d992e20,\n\t0x31058: 0x6dbbfa20, 0x31059: 0x6dbbfc20, 0x3105a: 0x6dbbfe20, 0x3105b: 0x6dbc0020,\n\t0x3105c: 0x6dbc0220, 0x3105d: 0x6dbc0420, 0x3105e: 0x6dbc0620, 0x3105f: 0x6dbc0820,\n\t0x31060: 0x6dbc0a20, 0x31061: 0x6dbc5220, 0x31062: 0x6dd9ca20, 0x31063: 0x6dd9cc20,\n\t0x31064: 0x6dd9ce20, 0x31065: 0x6dd9d020, 0x31066: 0x6df1de20, 0x31067: 0x6df1e020,\n\t0x31068: 0x6df1e220, 0x31069: 0x6df1e420, 0x3106a: 0x6df1e620, 0x3106b: 0x6df1e820,\n\t0x3106c: 0x6df1ea20, 0x3106d: 0x6df1ec20, 0x3106e: 0x6e061e20, 0x3106f: 0x6e062020,\n\t0x31070: 0x6e062220, 0x31071: 0x6e062420, 0x31072: 0x6e16b020, 0x31073: 0x6e062620,\n\t0x31074: 0x6e062820, 0x31075: 0x6e16b220, 0x31076: 0x6e16b420, 0x31077: 0x6e16b620,\n\t0x31078: 0x6e16b820, 0x31079: 0x6e16ba20, 0x3107a: 0x6e16bc20, 0x3107b: 0x6e16be20,\n\t0x3107c: 0x6e23d820, 0x3107d: 0x6e23da20, 0x3107e: 0x6e23dc20, 0x3107f: 0x6e23de20,\n\t// Block 0xc42, offset 0x31080\n\t0x31080: 0x6e23e020, 0x31081: 0x6e2dea20, 0x31082: 0x6e359020, 0x31083: 0x6e359220,\n\t0x31084: 0x6e359420, 0x31085: 0x6e359620, 0x31086: 0x6e359820, 0x31087: 0x6e359a20,\n\t0x31088: 0x6e359c20, 0x31089: 0x6e3b0420, 0x3108a: 0x6e3ec220, 0x3108b: 0x6e416820,\n\t0x3108c: 0x6e416a20, 0x3108d: 0x6e416c20, 0x3108e: 0x6e416e20, 0x3108f: 0x6e44a620,\n\t0x31090: 0x6e472220, 0x31091: 0x6c427a20, 0x31092: 0x6c427c20, 0x31093: 0x6ce6f620,\n\t0x31094: 0x6ce6f820, 0x31095: 0x6d155420, 0x31096: 0x6d155620, 0x31097: 0x6d435020,\n\t0x31098: 0x6d435220, 0x31099: 0x6d435420, 0x3109a: 0x6d704e20, 0x3109b: 0x6d997a20,\n\t0x3109c: 0x6d997c20, 0x3109d: 0x6dda1c20, 0x3109e: 0x6c427e20, 0x3109f: 0x6ce70020,\n\t0x310a0: 0x6d705220, 0x310a1: 0x6df23a20, 0x310a2: 0x6c632e20, 0x310a3: 0x6c428020,\n\t0x310a4: 0x6d436220, 0x310a5: 0x6d705c20, 0x310a6: 0x6d998a20, 0x310a7: 0x6e16f420,\n\t0x310a8: 0x6e2dfe20, 0x310a9: 0x6c633220, 0x310aa: 0x6cb6a820, 0x310ab: 0x6ce71e20,\n\t0x310ac: 0x6ce72020, 0x310ad: 0x6ce72220, 0x310ae: 0x6ce72420, 0x310af: 0x6ce72620,\n\t0x310b0: 0x6ce72820, 0x310b1: 0x6ce72a20, 0x310b2: 0x6d158820, 0x310b3: 0x6d158a20,\n\t0x310b4: 0x6d158c20, 0x310b5: 0x6d158e20, 0x310b6: 0x6d159020, 0x310b7: 0x6d159220,\n\t0x310b8: 0x6d159420, 0x310b9: 0x6d159620, 0x310ba: 0x6d438a20, 0x310bb: 0x6d438c20,\n\t0x310bc: 0x6d438e20, 0x310bd: 0x6d439020, 0x310be: 0x6d439220, 0x310bf: 0x6d439420,\n\t// Block 0xc43, offset 0x310c0\n\t0x310c0: 0x6d439620, 0x310c1: 0x6d439820, 0x310c2: 0x6d439a20, 0x310c3: 0x6d439c20,\n\t0x310c4: 0x6d439e20, 0x310c5: 0x6d43a020, 0x310c6: 0x6d43a220, 0x310c7: 0x6d707420,\n\t0x310c8: 0x6d707620, 0x310c9: 0x6d707820, 0x310ca: 0x6d707a20, 0x310cb: 0x6d707c20,\n\t0x310cc: 0x6d707e20, 0x310cd: 0x6d708020, 0x310ce: 0x6d708220, 0x310cf: 0x6d708420,\n\t0x310d0: 0x6d708620, 0x310d1: 0x6d708820, 0x310d2: 0x6d708a20, 0x310d3: 0x6d99b220,\n\t0x310d4: 0x6d99b420, 0x310d5: 0x6d99b620, 0x310d6: 0x6d99b820, 0x310d7: 0x6d99ba20,\n\t0x310d8: 0x6d99bc20, 0x310d9: 0x6d99be20, 0x310da: 0x6dbc7420, 0x310db: 0x6dbc7620,\n\t0x310dc: 0x6dbc7820, 0x310dd: 0x6dbc7a20, 0x310de: 0x6dbc7c20, 0x310df: 0x6dbc7e20,\n\t0x310e0: 0x6dbc8020, 0x310e1: 0x6dbc8220, 0x310e2: 0x6dda3e20, 0x310e3: 0x6dda4020,\n\t0x310e4: 0x6dda4220, 0x310e5: 0x6dda4420, 0x310e6: 0x6dda4620, 0x310e7: 0x6dda4820,\n\t0x310e8: 0x6dda4a20, 0x310e9: 0x6dda4c20, 0x310ea: 0x6dda4e20, 0x310eb: 0x6dda5020,\n\t0x310ec: 0x6dda5220, 0x310ed: 0x6dda5420, 0x310ee: 0x6dda5620, 0x310ef: 0x6dda5820,\n\t0x310f0: 0x6dda5a20, 0x310f1: 0x6df24e20, 0x310f2: 0x6df25020, 0x310f3: 0x6df25220,\n\t0x310f4: 0x6df25420, 0x310f5: 0x6df25620, 0x310f6: 0x6df25820, 0x310f7: 0x6df25a20,\n\t0x310f8: 0x6e069020, 0x310f9: 0x6e069220, 0x310fa: 0x6e069420, 0x310fb: 0x6e069620,\n\t0x310fc: 0x6e171620, 0x310fd: 0x6e171820, 0x310fe: 0x6e171a20, 0x310ff: 0x6e171c20,\n\t// Block 0xc44, offset 0x31100\n\t0x31100: 0x6e241820, 0x31101: 0x6e241a20, 0x31102: 0x6e241c20, 0x31103: 0x6e241e20,\n\t0x31104: 0x6e2e0e20, 0x31105: 0x6e2e1020, 0x31106: 0x6e35bc20, 0x31107: 0x6e35be20,\n\t0x31108: 0x6e35c020, 0x31109: 0x6e3ee020, 0x3110a: 0x6e456e20, 0x3110b: 0x6c633420,\n\t0x3110c: 0x6ce73420, 0x3110d: 0x6d43e020, 0x3110e: 0x6d43e220, 0x3110f: 0x6d70c220,\n\t0x31110: 0x6d70c420, 0x31111: 0x6d70c620, 0x31112: 0x6d99ee20, 0x31113: 0x6dbcc620,\n\t0x31114: 0x6dbcc820, 0x31115: 0x6dbcca20, 0x31116: 0x6ddaaa20, 0x31117: 0x6ddaac20,\n\t0x31118: 0x6ddaae20, 0x31119: 0x6ddab020, 0x3111a: 0x6ddab220, 0x3111b: 0x6e06d420,\n\t0x3111c: 0x6df2a820, 0x3111d: 0x6df2aa20, 0x3111e: 0x6df2ac20, 0x3111f: 0x6df2ae20,\n\t0x31120: 0x6e06d620, 0x31121: 0x6e174220, 0x31122: 0x6e174420, 0x31123: 0x6e244820,\n\t0x31124: 0x6e35ce20, 0x31125: 0x6e35d020, 0x31126: 0x6c053420, 0x31127: 0x6c287c20,\n\t0x31128: 0x6c633620, 0x31129: 0x6ce73820, 0x3112a: 0x6d15d420, 0x3112b: 0x6d15d620,\n\t0x3112c: 0x6d43fc20, 0x3112d: 0x6c633c20, 0x3112e: 0x6d15e020, 0x3112f: 0x6d70e220,\n\t0x31130: 0x6d9a0420, 0x31131: 0x6dbcea20, 0x31132: 0x6df2c620, 0x31133: 0x6c633e20,\n\t0x31134: 0x6d15e820, 0x31135: 0x6d15ea20, 0x31136: 0x6d440420, 0x31137: 0x6d440620,\n\t0x31138: 0x6d9a0c20, 0x31139: 0x6ddacc20, 0x3113a: 0x6ddace20, 0x3113b: 0x6df2d020,\n\t0x3113c: 0x6df2d220, 0x3113d: 0x6e06f220, 0x3113e: 0x6e06f420, 0x3113f: 0x6e06f620,\n\t// Block 0xc45, offset 0x31140\n\t0x31140: 0x6e2e3c20, 0x31141: 0x6c634020, 0x31142: 0x6cb6b220, 0x31143: 0x6cb6b420,\n\t0x31144: 0x6cb6b620, 0x31145: 0x6ce74820, 0x31146: 0x6ce74a20, 0x31147: 0x6ce74c20,\n\t0x31148: 0x6ce74e20, 0x31149: 0x6d15f220, 0x3114a: 0x6d15fa20, 0x3114b: 0x6d15fc20,\n\t0x3114c: 0x6d15fe20, 0x3114d: 0x6d160020, 0x3114e: 0x6d160220, 0x3114f: 0x6d160420,\n\t0x31150: 0x6d160620, 0x31151: 0x6d160820, 0x31152: 0x6d160a20, 0x31153: 0x6d160c20,\n\t0x31154: 0x6d442620, 0x31155: 0x6d442820, 0x31156: 0x6d442a20, 0x31157: 0x6d442c20,\n\t0x31158: 0x6d442e20, 0x31159: 0x6d441220, 0x3115a: 0x6d443020, 0x3115b: 0x6d710020,\n\t0x3115c: 0x6d710220, 0x3115d: 0x6d710420, 0x3115e: 0x6d710620, 0x3115f: 0x6d710820,\n\t0x31160: 0x6d710a20, 0x31161: 0x6d710c20, 0x31162: 0x6d710e20, 0x31163: 0x6d711020,\n\t0x31164: 0x6d9a2a20, 0x31165: 0x6d9a2c20, 0x31166: 0x6d711220, 0x31167: 0x6d711420,\n\t0x31168: 0x6d711620, 0x31169: 0x6d711820, 0x3116a: 0x6d711a20, 0x3116b: 0x6d711c20,\n\t0x3116c: 0x6d711e20, 0x3116d: 0x6d9a2e20, 0x3116e: 0x6d9a3020, 0x3116f: 0x6d9a3220,\n\t0x31170: 0x6d9a3420, 0x31171: 0x6d9a3620, 0x31172: 0x6d9a3820, 0x31173: 0x6d9a3a20,\n\t0x31174: 0x6d9a3c20, 0x31175: 0x6d9a3e20, 0x31176: 0x6d9a4020, 0x31177: 0x6d9a4220,\n\t0x31178: 0x6d9a4420, 0x31179: 0x6d9a4620, 0x3117a: 0x6d9a4820, 0x3117b: 0x6d9a4a20,\n\t0x3117c: 0x6d9a4c20, 0x3117d: 0x6d9a4e20, 0x3117e: 0x6ddaf020, 0x3117f: 0x6ddada20,\n\t// Block 0xc46, offset 0x31180\n\t0x31180: 0x6dbd0c20, 0x31181: 0x6dbd0e20, 0x31182: 0x6dbd1020, 0x31183: 0x6dbd1220,\n\t0x31184: 0x6dbd1420, 0x31185: 0x6dbd1620, 0x31186: 0x6dbd1820, 0x31187: 0x6dbd1a20,\n\t0x31188: 0x6dbd1c20, 0x31189: 0x6dbd1e20, 0x3118a: 0x6dbd2020, 0x3118b: 0x6ddaf220,\n\t0x3118c: 0x6ddaf420, 0x3118d: 0x6ddaf620, 0x3118e: 0x6ddaf820, 0x3118f: 0x6ddafa20,\n\t0x31190: 0x6ddafc20, 0x31191: 0x6ddafe20, 0x31192: 0x6ddb0020, 0x31193: 0x6ddb0220,\n\t0x31194: 0x6ddb0420, 0x31195: 0x6ddb0620, 0x31196: 0x6df2f020, 0x31197: 0x6df2f220,\n\t0x31198: 0x6df2f420, 0x31199: 0x6df2f620, 0x3119a: 0x6df2f820, 0x3119b: 0x6df2fa20,\n\t0x3119c: 0x6df2fc20, 0x3119d: 0x6df2fe20, 0x3119e: 0x6df30020, 0x3119f: 0x6e070e20,\n\t0x311a0: 0x6e071020, 0x311a1: 0x6e071220, 0x311a2: 0x6e071420, 0x311a3: 0x6e071620,\n\t0x311a4: 0x6e177220, 0x311a5: 0x6e177420, 0x311a6: 0x6e177620, 0x311a7: 0x6e177820,\n\t0x311a8: 0x6e177a20, 0x311a9: 0x6e246e20, 0x311aa: 0x6e247020, 0x311ab: 0x6e247220,\n\t0x311ac: 0x6e2e4020, 0x311ad: 0x6e2e4220, 0x311ae: 0x6e2e4420, 0x311af: 0x6e2e4620,\n\t0x311b0: 0x6e35de20, 0x311b1: 0x6e3b3820, 0x311b2: 0x6e3b3a20, 0x311b3: 0x6e418220,\n\t0x311b4: 0x6e418420, 0x311b5: 0x6c15d220, 0x311b6: 0x6c428620, 0x311b7: 0x6c428820,\n\t0x311b8: 0x6c634420, 0x311b9: 0x6c634620, 0x311ba: 0x6c634820, 0x311bb: 0x6c634a20,\n\t0x311bc: 0x6c8a5220, 0x311bd: 0x6c8a5420, 0x311be: 0x6c8a5620, 0x311bf: 0x6c8a5820,\n\t// Block 0xc47, offset 0x311c0\n\t0x311c0: 0x6c8a5a20, 0x311c1: 0x6c8a5c20, 0x311c2: 0x6c8a5e20, 0x311c3: 0x6c8a6020,\n\t0x311c4: 0x6c8a6220, 0x311c5: 0x6cb6c020, 0x311c6: 0x6cb6c220, 0x311c7: 0x6cb6c420,\n\t0x311c8: 0x6cb6c620, 0x311c9: 0x6ce76220, 0x311ca: 0x6ce76420, 0x311cb: 0x6ce76620,\n\t0x311cc: 0x6ce76820, 0x311cd: 0x6ce76a20, 0x311ce: 0x6ce76c20, 0x311cf: 0x6ce76e20,\n\t0x311d0: 0x6d163e20, 0x311d1: 0x6d164020, 0x311d2: 0x6d164220, 0x311d3: 0x6d164420,\n\t0x311d4: 0x6d164620, 0x311d5: 0x6d164820, 0x311d6: 0x6d164a20, 0x311d7: 0x6d447220,\n\t0x311d8: 0x6d715e20, 0x311d9: 0x6d716020, 0x311da: 0x6d716220, 0x311db: 0x6d716420,\n\t0x311dc: 0x6d716620, 0x311dd: 0x6d716820, 0x311de: 0x6d9ab220, 0x311df: 0x6d9ab420,\n\t0x311e0: 0x6d9ab620, 0x311e1: 0x6d9ab820, 0x311e2: 0x6ddb3e20, 0x311e3: 0x6ddb4020,\n\t0x311e4: 0x6df33820, 0x311e5: 0x6e074820, 0x311e6: 0x6e17aa20, 0x311e7: 0x6e2e6c20,\n\t0x311e8: 0x6c634e20, 0x311e9: 0x6ce77a20, 0x311ea: 0x6ce77c20, 0x311eb: 0x6d165820,\n\t0x311ec: 0x6d165a20, 0x311ed: 0x6d448a20, 0x311ee: 0x6d448c20, 0x311ef: 0x6d448e20,\n\t0x311f0: 0x6d449020, 0x311f1: 0x6d449220, 0x311f2: 0x6d717020, 0x311f3: 0x6d717220,\n\t0x311f4: 0x6d9ac620, 0x311f5: 0x6d9ac820, 0x311f6: 0x6dbd7820, 0x311f7: 0x6dbd7a20,\n\t0x311f8: 0x6ddb5020, 0x311f9: 0x6ddb5220, 0x311fa: 0x6ddb5420, 0x311fb: 0x6df34220,\n\t0x311fc: 0x6df34420, 0x311fd: 0x6df34620, 0x311fe: 0x6df34820, 0x311ff: 0x6df34a20,\n\t// Block 0xc48, offset 0x31200\n\t0x31200: 0x6df34c20, 0x31201: 0x6e074e20, 0x31202: 0x6e075020, 0x31203: 0x6e075220,\n\t0x31204: 0x6e075420, 0x31205: 0x6e17b020, 0x31206: 0x6e17b220, 0x31207: 0x6e17b420,\n\t0x31208: 0x6e17b620, 0x31209: 0x6e17b820, 0x3120a: 0x6e17ba20, 0x3120b: 0x6e249020,\n\t0x3120c: 0x6e418c20, 0x3120d: 0x6e418e20, 0x3120e: 0x6c053620, 0x3120f: 0x6c287e20,\n\t0x31210: 0x6c635020, 0x31211: 0x6c635220, 0x31212: 0x6c635420, 0x31213: 0x6ce78e20,\n\t0x31214: 0x6d168020, 0x31215: 0x6d44b820, 0x31216: 0x6d44b620, 0x31217: 0x6d44ba20,\n\t0x31218: 0x6d719420, 0x31219: 0x6d9af420, 0x3121a: 0x6d9af620, 0x3121b: 0x6c635c20,\n\t0x3121c: 0x6e17dc20, 0x3121d: 0x6e419420, 0x3121e: 0x6c020e20, 0x3121f: 0x6c636220,\n\t0x31220: 0x6c636420, 0x31221: 0x6cb6d820, 0x31222: 0x6c8a6820, 0x31223: 0x6c8a6a20,\n\t0x31224: 0x6c8a6c20, 0x31225: 0x6cb6da20, 0x31226: 0x6cb6dc20, 0x31227: 0x6ce79e20,\n\t0x31228: 0x6ce7a020, 0x31229: 0x6ce7a220, 0x3122a: 0x6ce7a420, 0x3122b: 0x6ce7a620,\n\t0x3122c: 0x6d169420, 0x3122d: 0x6ce7a820, 0x3122e: 0x6d169620, 0x3122f: 0x6ce7aa20,\n\t0x31230: 0x6ce7ac20, 0x31231: 0x6d169820, 0x31232: 0x6ce7ae20, 0x31233: 0x6d169a20,\n\t0x31234: 0x6d169c20, 0x31235: 0x6d169e20, 0x31236: 0x6d16a020, 0x31237: 0x6d16a220,\n\t0x31238: 0x6d44d620, 0x31239: 0x6d16a420, 0x3123a: 0x6d71a620, 0x3123b: 0x6d16a620,\n\t0x3123c: 0x6d16a820, 0x3123d: 0x6d16aa20, 0x3123e: 0x6d16ac20, 0x3123f: 0x6d16ae20,\n\t// Block 0xc49, offset 0x31240\n\t0x31240: 0x6d44d820, 0x31241: 0x6d44da20, 0x31242: 0x6d44dc20, 0x31243: 0x6d44de20,\n\t0x31244: 0x6d44e020, 0x31245: 0x6d44e220, 0x31246: 0x6d44e420, 0x31247: 0x6d44e620,\n\t0x31248: 0x6d71a820, 0x31249: 0x6d44e820, 0x3124a: 0x6d71aa20, 0x3124b: 0x6d71ac20,\n\t0x3124c: 0x6d44ea20, 0x3124d: 0x6d71ae20, 0x3124e: 0x6d44ec20, 0x3124f: 0x6d44ee20,\n\t0x31250: 0x6d9b0820, 0x31251: 0x6d71b020, 0x31252: 0x6d71b220, 0x31253: 0x6d71b420,\n\t0x31254: 0x6d71b620, 0x31255: 0x6d71b820, 0x31256: 0x6d71ba20, 0x31257: 0x6d71bc20,\n\t0x31258: 0x6d71be20, 0x31259: 0x6d71c020, 0x3125a: 0x6d9b0c20, 0x3125b: 0x6d9b0e20,\n\t0x3125c: 0x6d9b1020, 0x3125d: 0x6d9b0a20, 0x3125e: 0x6d9b1220, 0x3125f: 0x6d9b1420,\n\t0x31260: 0x6d9b1620, 0x31261: 0x6d9b1820, 0x31262: 0x6d9b1a20, 0x31263: 0x6d9b1c20,\n\t0x31264: 0x6d9b1e20, 0x31265: 0x6dbdca20, 0x31266: 0x6d9b2020, 0x31267: 0x6d9b2220,\n\t0x31268: 0x6d9b2420, 0x31269: 0x6d9b2620, 0x3126a: 0x6dbdcc20, 0x3126b: 0x6dbdce20,\n\t0x3126c: 0x6dbdd020, 0x3126d: 0x6dbdd220, 0x3126e: 0x6ddb9a20, 0x3126f: 0x6dbdd420,\n\t0x31270: 0x6dbdd620, 0x31271: 0x6dbdd820, 0x31272: 0x6dbdda20, 0x31273: 0x6dbddc20,\n\t0x31274: 0x6d9b8c20, 0x31275: 0x6dbdde20, 0x31276: 0x6ddb9c20, 0x31277: 0x6dbde020,\n\t0x31278: 0x6ddb9e20, 0x31279: 0x6ddba020, 0x3127a: 0x6ddba220, 0x3127b: 0x6ddba420,\n\t0x3127c: 0x6ddba620, 0x3127d: 0x6ddba820, 0x3127e: 0x6ddbaa20, 0x3127f: 0x6ddbac20,\n\t// Block 0xc4a, offset 0x31280\n\t0x31280: 0x6ddbae20, 0x31281: 0x6ddbb020, 0x31282: 0x6dbe4420, 0x31283: 0x6df38820,\n\t0x31284: 0x6df38a20, 0x31285: 0x6df38c20, 0x31286: 0x6dbe4620, 0x31287: 0x6df38e20,\n\t0x31288: 0x6df39020, 0x31289: 0x6df39220, 0x3128a: 0x6e077420, 0x3128b: 0x6e077620,\n\t0x3128c: 0x6e077820, 0x3128d: 0x6e077a20, 0x3128e: 0x6e077c20, 0x3128f: 0x6e17ec20,\n\t0x31290: 0x6e077e20, 0x31291: 0x6e078020, 0x31292: 0x6e078220, 0x31293: 0x6e078420,\n\t0x31294: 0x6e24ae20, 0x31295: 0x6e24b020, 0x31296: 0x6e17ee20, 0x31297: 0x6e17f020,\n\t0x31298: 0x6e17f220, 0x31299: 0x6e07c220, 0x3129a: 0x6e24b220, 0x3129b: 0x6e24b420,\n\t0x3129c: 0x6e2e8220, 0x3129d: 0x6e360220, 0x3129e: 0x6e3b4c20, 0x3129f: 0x6e3b4e20,\n\t0x312a0: 0x6e419820, 0x312a1: 0x6e419a20, 0x312a2: 0x6e457220, 0x312a3: 0x6c021020,\n\t0x312a4: 0x6c0ac220, 0x312a5: 0x6c0ac420, 0x312a6: 0x6c15d420, 0x312a7: 0x6c15d620,\n\t0x312a8: 0x6c288020, 0x312a9: 0x6c288220, 0x312aa: 0x6c288420, 0x312ab: 0x6c288620,\n\t0x312ac: 0x6c288820, 0x312ad: 0x6c288a20, 0x312ae: 0x6c288c20, 0x312af: 0x6c429820,\n\t0x312b0: 0x6c429a20, 0x312b1: 0x6c429c20, 0x312b2: 0x6c429e20, 0x312b3: 0x6c42a020,\n\t0x312b4: 0x6c42a220, 0x312b5: 0x6c636820, 0x312b6: 0x6c636a20, 0x312b7: 0x6c636c20,\n\t0x312b8: 0x6c636e20, 0x312b9: 0x6c637020, 0x312ba: 0x6c637220, 0x312bb: 0x6c637420,\n\t0x312bc: 0x6c637620, 0x312bd: 0x6c8a7420, 0x312be: 0x6c8a7620, 0x312bf: 0x6c8a7820,\n\t// Block 0xc4b, offset 0x312c0\n\t0x312c0: 0x6c8a7a20, 0x312c1: 0x6c8a7c20, 0x312c2: 0x6c8a7e20, 0x312c3: 0x6cb6fa20,\n\t0x312c4: 0x6cb6fc20, 0x312c5: 0x6cb6fe20, 0x312c6: 0x6cb70020, 0x312c7: 0x6ce7d820,\n\t0x312c8: 0x6ce7da20, 0x312c9: 0x6d16f420, 0x312ca: 0x6ce7dc20, 0x312cb: 0x6ce7de20,\n\t0x312cc: 0x6d16f620, 0x312cd: 0x6d16f820, 0x312ce: 0x6d16fa20, 0x312cf: 0x6d16fc20,\n\t0x312d0: 0x6d16fe20, 0x312d1: 0x6d452020, 0x312d2: 0x6d452220, 0x312d3: 0x6d71fe20,\n\t0x312d4: 0x6d720020, 0x312d5: 0x6e3b5220, 0x312d6: 0x6c637e20, 0x312d7: 0x6cb70c20,\n\t0x312d8: 0x6dbe4820, 0x312d9: 0x6c638220, 0x312da: 0x6d170820, 0x312db: 0x6d453620,\n\t0x312dc: 0x6d453820, 0x312dd: 0x6d453a20, 0x312de: 0x6d9ba020, 0x312df: 0x6d9ba220,\n\t0x312e0: 0x6d9ba420, 0x312e1: 0x6dbe5620, 0x312e2: 0x6dbe5820, 0x312e3: 0x6dbe5a20,\n\t0x312e4: 0x6ddc0420, 0x312e5: 0x6ddc0620, 0x312e6: 0x6df3ec20, 0x312e7: 0x6df3ee20,\n\t0x312e8: 0x6e07ca20, 0x312e9: 0x6e182420, 0x312ea: 0x6e2e9a20, 0x312eb: 0x6e41a020,\n\t0x312ec: 0x6c8a8e20, 0x312ed: 0x6ce7f220, 0x312ee: 0x6ce7f420, 0x312ef: 0x6d171420,\n\t0x312f0: 0x6d171620, 0x312f1: 0x6d171820, 0x312f2: 0x6d171a20, 0x312f3: 0x6d171c20,\n\t0x312f4: 0x6d171e20, 0x312f5: 0x6d172020, 0x312f6: 0x6d455820, 0x312f7: 0x6d455a20,\n\t0x312f8: 0x6d455c20, 0x312f9: 0x6d455e20, 0x312fa: 0x6d456020, 0x312fb: 0x6d456220,\n\t0x312fc: 0x6d456420, 0x312fd: 0x6d456620, 0x312fe: 0x6d456820, 0x312ff: 0x6d456a20,\n\t// Block 0xc4c, offset 0x31300\n\t0x31300: 0x6d456c20, 0x31301: 0x6d456e20, 0x31302: 0x6d457020, 0x31303: 0x6d457220,\n\t0x31304: 0x6d457420, 0x31305: 0x6d457620, 0x31306: 0x6d457820, 0x31307: 0x6d457a20,\n\t0x31308: 0x6d723220, 0x31309: 0x6d723420, 0x3130a: 0x6d723620, 0x3130b: 0x6d723820,\n\t0x3130c: 0x6d723a20, 0x3130d: 0x6d723c20, 0x3130e: 0x6d723e20, 0x3130f: 0x6d724020,\n\t0x31310: 0x6d724220, 0x31311: 0x6d724420, 0x31312: 0x6d724620, 0x31313: 0x6d724820,\n\t0x31314: 0x6d724a20, 0x31315: 0x6d724c20, 0x31316: 0x6d724e20, 0x31317: 0x6d725020,\n\t0x31318: 0x6d725220, 0x31319: 0x6d725420, 0x3131a: 0x6d725620, 0x3131b: 0x6d725820,\n\t0x3131c: 0x6d725a20, 0x3131d: 0x6d725c20, 0x3131e: 0x6d725e20, 0x3131f: 0x6d726020,\n\t0x31320: 0x6d726220, 0x31321: 0x6d9bba20, 0x31322: 0x6d9bbc20, 0x31323: 0x6d9bbe20,\n\t0x31324: 0x6d9bc020, 0x31325: 0x6d9bc220, 0x31326: 0x6d9bc420, 0x31327: 0x6d9bc620,\n\t0x31328: 0x6d9bc820, 0x31329: 0x6d9bca20, 0x3132a: 0x6d9bcc20, 0x3132b: 0x6d9bce20,\n\t0x3132c: 0x6d9bd020, 0x3132d: 0x6d9bd220, 0x3132e: 0x6d9bd420, 0x3132f: 0x6d9bd620,\n\t0x31330: 0x6d9bd820, 0x31331: 0x6d9bda20, 0x31332: 0x6d9bdc20, 0x31333: 0x6dbec020,\n\t0x31334: 0x6dbe7020, 0x31335: 0x6dbe7220, 0x31336: 0x6dbe7420, 0x31337: 0x6dbe7620,\n\t0x31338: 0x6dbe7820, 0x31339: 0x6dbe7a20, 0x3133a: 0x6dbe7c20, 0x3133b: 0x6dbe7e20,\n\t0x3133c: 0x6dbe8020, 0x3133d: 0x6dbe8220, 0x3133e: 0x6dbe8420, 0x3133f: 0x6dbe8620,\n\t// Block 0xc4d, offset 0x31340\n\t0x31340: 0x6dbe8820, 0x31341: 0x6dbe8a20, 0x31342: 0x6dbe8c20, 0x31343: 0x6dbe8e20,\n\t0x31344: 0x6ddc2820, 0x31345: 0x6ddc2a20, 0x31346: 0x6ddc2c20, 0x31347: 0x6ddc2e20,\n\t0x31348: 0x6ddc3020, 0x31349: 0x6ddc3220, 0x3134a: 0x6ddc3420, 0x3134b: 0x6ddc3620,\n\t0x3134c: 0x6ddc3820, 0x3134d: 0x6ddc3a20, 0x3134e: 0x6ddc3c20, 0x3134f: 0x6ddc3e20,\n\t0x31350: 0x6ddc4020, 0x31351: 0x6ddc4220, 0x31352: 0x6ddc4420, 0x31353: 0x6ddc4620,\n\t0x31354: 0x6df40a20, 0x31355: 0x6df40c20, 0x31356: 0x6df40e20, 0x31357: 0x6df41020,\n\t0x31358: 0x6df41220, 0x31359: 0x6df41420, 0x3135a: 0x6df41620, 0x3135b: 0x6df41820,\n\t0x3135c: 0x6df41a20, 0x3135d: 0x6df41c20, 0x3135e: 0x6df41e20, 0x3135f: 0x6df42020,\n\t0x31360: 0x6df42220, 0x31361: 0x6df42420, 0x31362: 0x6df42620, 0x31363: 0x6df42820,\n\t0x31364: 0x6df42a20, 0x31365: 0x6df42c20, 0x31366: 0x6df42e20, 0x31367: 0x6df43020,\n\t0x31368: 0x6df43220, 0x31369: 0x6e07e620, 0x3136a: 0x6e07e820, 0x3136b: 0x6e07ea20,\n\t0x3136c: 0x6e07ec20, 0x3136d: 0x6e07ee20, 0x3136e: 0x6e07f020, 0x3136f: 0x6e07f220,\n\t0x31370: 0x6e07f420, 0x31371: 0x6e07f620, 0x31372: 0x6e07f820, 0x31373: 0x6e07fa20,\n\t0x31374: 0x6e07fc20, 0x31375: 0x6e07fe20, 0x31376: 0x6e080020, 0x31377: 0x6e080220,\n\t0x31378: 0x6e080420, 0x31379: 0x6e184220, 0x3137a: 0x6e184420, 0x3137b: 0x6e184620,\n\t0x3137c: 0x6e184820, 0x3137d: 0x6e184a20, 0x3137e: 0x6e184c20, 0x3137f: 0x6e184e20,\n\t// Block 0xc4e, offset 0x31380\n\t0x31380: 0x6e185020, 0x31381: 0x6e185220, 0x31382: 0x6e185420, 0x31383: 0x6e185620,\n\t0x31384: 0x6e185820, 0x31385: 0x6e185a20, 0x31386: 0x6e185c20, 0x31387: 0x6e185e20,\n\t0x31388: 0x6e24ee20, 0x31389: 0x6e24f020, 0x3138a: 0x6e24f220, 0x3138b: 0x6e24f420,\n\t0x3138c: 0x6e24f620, 0x3138d: 0x6e24f820, 0x3138e: 0x6e24fa20, 0x3138f: 0x6e24fc20,\n\t0x31390: 0x6e24fe20, 0x31391: 0x6e250020, 0x31392: 0x6e250220, 0x31393: 0x6e250420,\n\t0x31394: 0x6e250620, 0x31395: 0x6e250820, 0x31396: 0x6e2ea420, 0x31397: 0x6e2ea620,\n\t0x31398: 0x6e2ea820, 0x31399: 0x6e2eaa20, 0x3139a: 0x6e2eac20, 0x3139b: 0x6e2eae20,\n\t0x3139c: 0x6e2eb020, 0x3139d: 0x6e362220, 0x3139e: 0x6e362420, 0x3139f: 0x6e362620,\n\t0x313a0: 0x6e3f1420, 0x313a1: 0x6e3f1620, 0x313a2: 0x6e3f1820, 0x313a3: 0x6e3f1a20,\n\t0x313a4: 0x6e41a420, 0x313a5: 0x6e3f2620, 0x313a6: 0x6e41a620, 0x313a7: 0x6e41a820,\n\t0x313a8: 0x6e437a20, 0x313a9: 0x6e437c20, 0x313aa: 0x6e44c220, 0x313ab: 0x6e457620,\n\t0x313ac: 0x6c021220, 0x313ad: 0x6c0ac620, 0x313ae: 0x6c15da20, 0x313af: 0x6c15dc20,\n\t0x313b0: 0x6c15de20, 0x313b1: 0x6c289820, 0x313b2: 0x6c289a20, 0x313b3: 0x6c289c20,\n\t0x313b4: 0x6c289e20, 0x313b5: 0x6c42ae20, 0x313b6: 0x6c42b020, 0x313b7: 0x6c42b220,\n\t0x313b8: 0x6c42b420, 0x313b9: 0x6c42b620, 0x313ba: 0x6c42b820, 0x313bb: 0x6c42ba20,\n\t0x313bc: 0x6c42bc20, 0x313bd: 0x6c42be20, 0x313be: 0x6c42c020, 0x313bf: 0x6c42c220,\n\t// Block 0xc4f, offset 0x313c0\n\t0x313c0: 0x6c42c420, 0x313c1: 0x6c638420, 0x313c2: 0x6c638620, 0x313c3: 0x6c638820,\n\t0x313c4: 0x6c638a20, 0x313c5: 0x6c638c20, 0x313c6: 0x6c638e20, 0x313c7: 0x6c639020,\n\t0x313c8: 0x6c639220, 0x313c9: 0x6c639420, 0x313ca: 0x6c8a9420, 0x313cb: 0x6c8a9620,\n\t0x313cc: 0x6c8a9820, 0x313cd: 0x6c8a9a20, 0x313ce: 0x6c8a9c20, 0x313cf: 0x6c8a9e20,\n\t0x313d0: 0x6cb71420, 0x313d1: 0x6cb71620, 0x313d2: 0x6cb71820, 0x313d3: 0x6cb71a20,\n\t0x313d4: 0x6cb71c20, 0x313d5: 0x6cb71e20, 0x313d6: 0x6cb72020, 0x313d7: 0x6ce80420,\n\t0x313d8: 0x6ce80620, 0x313d9: 0x6ce80820, 0x313da: 0x6ce80a20, 0x313db: 0x6ce80c20,\n\t0x313dc: 0x6d173220, 0x313dd: 0x6d173420, 0x313de: 0x6d173620, 0x313df: 0x6d173820,\n\t0x313e0: 0x6d45ac20, 0x313e1: 0x6d45ae20, 0x313e2: 0x6d45b020, 0x313e3: 0x6d72aa20,\n\t0x313e4: 0x6dbec420, 0x313e5: 0x6df48220, 0x313e6: 0x6e086e20, 0x313e7: 0x6e087020,\n\t0x313e8: 0x6c8aae20, 0x313e9: 0x6ce82c20, 0x313ea: 0x6d174820, 0x313eb: 0x6d174a20,\n\t0x313ec: 0x6d174c20, 0x313ed: 0x6d174e20, 0x313ee: 0x6d175020, 0x313ef: 0x6d45bc20,\n\t0x313f0: 0x6d45be20, 0x313f1: 0x6d45c020, 0x313f2: 0x6d72bc20, 0x313f3: 0x6d72be20,\n\t0x313f4: 0x6d72c020, 0x313f5: 0x6d72c220, 0x313f6: 0x6d72c420, 0x313f7: 0x6d72c620,\n\t0x313f8: 0x6d9c4220, 0x313f9: 0x6d9c4420, 0x313fa: 0x6d9c4620, 0x313fb: 0x6d9c4820,\n\t0x313fc: 0x6d9c4a20, 0x313fd: 0x6dbed220, 0x313fe: 0x6dbed420, 0x313ff: 0x6d9c6820,\n\t// Block 0xc50, offset 0x31400\n\t0x31400: 0x6ddcac20, 0x31401: 0x6ddcae20, 0x31402: 0x6df48c20, 0x31403: 0x6df48e20,\n\t0x31404: 0x6e087220, 0x31405: 0x6df49020, 0x31406: 0x6e087620, 0x31407: 0x6e087820,\n\t0x31408: 0x6e087a20, 0x31409: 0x6e087c20, 0x3140a: 0x6e087e20, 0x3140b: 0x6e088020,\n\t0x3140c: 0x6e088220, 0x3140d: 0x6e189420, 0x3140e: 0x6e189620, 0x3140f: 0x6e189820,\n\t0x31410: 0x6e254620, 0x31411: 0x6e2ee620, 0x31412: 0x6e254820, 0x31413: 0x6e2ee820,\n\t0x31414: 0x6e2eea20, 0x31415: 0x6e364420, 0x31416: 0x6e3b7420, 0x31417: 0x6e3f2820,\n\t0x31418: 0x6c8ab020, 0x31419: 0x6cb73620, 0x3141a: 0x6d45e620, 0x3141b: 0x6d72e220,\n\t0x3141c: 0x6ddcda20, 0x3141d: 0x6e256420, 0x3141e: 0x6e2ef820, 0x3141f: 0x6c8ab220,\n\t0x31420: 0x6ce84620, 0x31421: 0x6d177820, 0x31422: 0x6d177a20, 0x31423: 0x6d460620,\n\t0x31424: 0x6d460820, 0x31425: 0x6d460a20, 0x31426: 0x6d460c20, 0x31427: 0x6d460e20,\n\t0x31428: 0x6d461020, 0x31429: 0x6d461220, 0x3142a: 0x6d461420, 0x3142b: 0x6d72f220,\n\t0x3142c: 0x6d72f420, 0x3142d: 0x6d9c7a20, 0x3142e: 0x6d72f620, 0x3142f: 0x6d72f820,\n\t0x31430: 0x6d72fa20, 0x31431: 0x6d72fc20, 0x31432: 0x6d72fe20, 0x31433: 0x6d730020,\n\t0x31434: 0x6d730220, 0x31435: 0x6d9c8020, 0x31436: 0x6d9c8220, 0x31437: 0x6d9c8420,\n\t0x31438: 0x6d9c8620, 0x31439: 0x6d9c8820, 0x3143a: 0x6d9c8a20, 0x3143b: 0x6d9c8c20,\n\t0x3143c: 0x6dbf1420, 0x3143d: 0x6dbf1620, 0x3143e: 0x6dbf1820, 0x3143f: 0x6dbf1a20,\n\t// Block 0xc51, offset 0x31440\n\t0x31440: 0x6dbf1c20, 0x31441: 0x6dbf1e20, 0x31442: 0x6dbf2020, 0x31443: 0x6ddcf220,\n\t0x31444: 0x6ddcf420, 0x31445: 0x6ddcf620, 0x31446: 0x6ddcf820, 0x31447: 0x6d9c8e20,\n\t0x31448: 0x6ddcfa20, 0x31449: 0x6df4b220, 0x3144a: 0x6df4b420, 0x3144b: 0x6df4b620,\n\t0x3144c: 0x6df4b820, 0x3144d: 0x6df4ba20, 0x3144e: 0x6df4bc20, 0x3144f: 0x6df4be20,\n\t0x31450: 0x6e08b220, 0x31451: 0x6e08b420, 0x31452: 0x6e08b620, 0x31453: 0x6e08b820,\n\t0x31454: 0x6e18b420, 0x31455: 0x6e18b620, 0x31456: 0x6e18b820, 0x31457: 0x6e18ba20,\n\t0x31458: 0x6e18bc20, 0x31459: 0x6e256c20, 0x3145a: 0x6e256e20, 0x3145b: 0x6e257020,\n\t0x3145c: 0x6e257220, 0x3145d: 0x6e256820, 0x3145e: 0x6e2f0020, 0x3145f: 0x6e2f0220,\n\t0x31460: 0x6e2f0420, 0x31461: 0x6e365c20, 0x31462: 0x6e365e20, 0x31463: 0x6e3b8620,\n\t0x31464: 0x6e41be20, 0x31465: 0x6c8ab420, 0x31466: 0x6d463c20, 0x31467: 0x6d734420,\n\t0x31468: 0x6d9cc020, 0x31469: 0x6ddd3820, 0x3146a: 0x6e08ee20, 0x3146b: 0x6e25a420,\n\t0x3146c: 0x6e367420, 0x3146d: 0x6e367620, 0x3146e: 0x6e41c820, 0x3146f: 0x6c8aba20,\n\t0x31470: 0x6e41ca20, 0x31471: 0x6e44ca20, 0x31472: 0x6c8abc20, 0x31473: 0x6d9cc820,\n\t0x31474: 0x6dbf5620, 0x31475: 0x6ddd4020, 0x31476: 0x6ddd4220, 0x31477: 0x6df4fa20,\n\t0x31478: 0x6e08f420, 0x31479: 0x6e18f420, 0x3147a: 0x6e18f620, 0x3147b: 0x6e25ae20,\n\t0x3147c: 0x6c8abe20, 0x3147d: 0x6d179220, 0x3147e: 0x6d465020, 0x3147f: 0x6d465220,\n\t// Block 0xc52, offset 0x31480\n\t0x31480: 0x6d465420, 0x31481: 0x6d465620, 0x31482: 0x6d465820, 0x31483: 0x6d735820,\n\t0x31484: 0x6d735a20, 0x31485: 0x6d735c20, 0x31486: 0x6d735e20, 0x31487: 0x6d9cde20,\n\t0x31488: 0x6dbf6220, 0x31489: 0x6dbf6420, 0x3148a: 0x6ddd5620, 0x3148b: 0x6ddd5820,\n\t0x3148c: 0x6ddd5a20, 0x3148d: 0x6ddd5c20, 0x3148e: 0x6ddd5e20, 0x3148f: 0x6ddd6020,\n\t0x31490: 0x6e090220, 0x31491: 0x6e190620, 0x31492: 0x6e190820, 0x31493: 0x6e190a20,\n\t0x31494: 0x6e190c20, 0x31495: 0x6e25be20, 0x31496: 0x6e25c020, 0x31497: 0x6e368a20,\n\t0x31498: 0x6e368c20, 0x31499: 0x6e368e20, 0x3149a: 0x6cb74420, 0x3149b: 0x6d17c620,\n\t0x3149c: 0x6d17c820, 0x3149d: 0x6d17ca20, 0x3149e: 0x6d17cc20, 0x3149f: 0x6d469220,\n\t0x314a0: 0x6d469420, 0x314a1: 0x6d469620, 0x314a2: 0x6d469820, 0x314a3: 0x6d739620,\n\t0x314a4: 0x6d739820, 0x314a5: 0x6d739a20, 0x314a6: 0x6d739c20, 0x314a7: 0x6d739e20,\n\t0x314a8: 0x6d73a020, 0x314a9: 0x6d73a220, 0x314aa: 0x6d73a420, 0x314ab: 0x6d73a620,\n\t0x314ac: 0x6d73a820, 0x314ad: 0x6d73aa20, 0x314ae: 0x6d73ac20, 0x314af: 0x6d73ae20,\n\t0x314b0: 0x6d73b020, 0x314b1: 0x6d73b220, 0x314b2: 0x6d73b420, 0x314b3: 0x6d73b620,\n\t0x314b4: 0x6d73b820, 0x314b5: 0x6d73ba20, 0x314b6: 0x6d73bc20, 0x314b7: 0x6d73be20,\n\t0x314b8: 0x6d73c020, 0x314b9: 0x6d73c220, 0x314ba: 0x6d9d2420, 0x314bb: 0x6d9d2620,\n\t0x314bc: 0x6d9d2820, 0x314bd: 0x6d9d2a20, 0x314be: 0x6d9d2c20, 0x314bf: 0x6d9d2e20,\n\t// Block 0xc53, offset 0x314c0\n\t0x314c0: 0x6d9d3020, 0x314c1: 0x6d9d3220, 0x314c2: 0x6d9d3420, 0x314c3: 0x6d9d3620,\n\t0x314c4: 0x6d9d3820, 0x314c5: 0x6d9d3a20, 0x314c6: 0x6dbf9020, 0x314c7: 0x6d9d3c20,\n\t0x314c8: 0x6d9d3e20, 0x314c9: 0x6d9d4020, 0x314ca: 0x6d9d4220, 0x314cb: 0x6d9d4420,\n\t0x314cc: 0x6d9d4620, 0x314cd: 0x6d9d4820, 0x314ce: 0x6d9d4a20, 0x314cf: 0x6d9d4c20,\n\t0x314d0: 0x6d9d4e20, 0x314d1: 0x6d9d5020, 0x314d2: 0x6d9d5220, 0x314d3: 0x6d9d5420,\n\t0x314d4: 0x6d9d5620, 0x314d5: 0x6d9d5820, 0x314d6: 0x6d9d5a20, 0x314d7: 0x6d9d5c20,\n\t0x314d8: 0x6d9d5e20, 0x314d9: 0x6dbf9c20, 0x314da: 0x6dbf9e20, 0x314db: 0x6dbfa020,\n\t0x314dc: 0x6dbfa220, 0x314dd: 0x6dbfa420, 0x314de: 0x6dbfa620, 0x314df: 0x6dbfa820,\n\t0x314e0: 0x6dbfaa20, 0x314e1: 0x6dbfac20, 0x314e2: 0x6dbfae20, 0x314e3: 0x6d9d6020,\n\t0x314e4: 0x6dbfb020, 0x314e5: 0x6dbfb220, 0x314e6: 0x6dbfb420, 0x314e7: 0x6dbfb620,\n\t0x314e8: 0x6dbfb820, 0x314e9: 0x6dbfba20, 0x314ea: 0x6dbfbc20, 0x314eb: 0x6dbfbe20,\n\t0x314ec: 0x6dbfc020, 0x314ed: 0x6dbfc220, 0x314ee: 0x6dbfc420, 0x314ef: 0x6dbfc620,\n\t0x314f0: 0x6dbfc820, 0x314f1: 0x6dbfca20, 0x314f2: 0x6dbfcc20, 0x314f3: 0x6dbfce20,\n\t0x314f4: 0x6dbfd020, 0x314f5: 0x6ddd9820, 0x314f6: 0x6ddd9a20, 0x314f7: 0x6ddd9c20,\n\t0x314f8: 0x6ddd9e20, 0x314f9: 0x6ddda020, 0x314fa: 0x6dbfd220, 0x314fb: 0x6ddda220,\n\t0x314fc: 0x6ddda420, 0x314fd: 0x6ddda620, 0x314fe: 0x6ddda820, 0x314ff: 0x6dddaa20,\n\t// Block 0xc54, offset 0x31500\n\t0x31500: 0x6dddac20, 0x31501: 0x6dddae20, 0x31502: 0x6dddb020, 0x31503: 0x6dddb220,\n\t0x31504: 0x6dddb420, 0x31505: 0x6df51c20, 0x31506: 0x6dddb620, 0x31507: 0x6dddb820,\n\t0x31508: 0x6dddba20, 0x31509: 0x6dddbc20, 0x3150a: 0x6dddbe20, 0x3150b: 0x6dddc020,\n\t0x3150c: 0x6dddc220, 0x3150d: 0x6dddc420, 0x3150e: 0x6dc03a20, 0x3150f: 0x6dddc620,\n\t0x31510: 0x6dddc820, 0x31511: 0x6dddca20, 0x31512: 0x6dddcc20, 0x31513: 0x6dddce20,\n\t0x31514: 0x6df54220, 0x31515: 0x6df54420, 0x31516: 0x6df54620, 0x31517: 0x6df54820,\n\t0x31518: 0x6df54a20, 0x31519: 0x6df54c20, 0x3151a: 0x6df54e20, 0x3151b: 0x6df55020,\n\t0x3151c: 0x6df55220, 0x3151d: 0x6df55420, 0x3151e: 0x6df55620, 0x3151f: 0x6df55820,\n\t0x31520: 0x6df55a20, 0x31521: 0x6df55c20, 0x31522: 0x6df55e20, 0x31523: 0x6df56020,\n\t0x31524: 0x6df56220, 0x31525: 0x6df56420, 0x31526: 0x6df56620, 0x31527: 0x6df56820,\n\t0x31528: 0x6df56a20, 0x31529: 0x6df56c20, 0x3152a: 0x6df56e20, 0x3152b: 0x6df57020,\n\t0x3152c: 0x6df57220, 0x3152d: 0x6df57420, 0x3152e: 0x6df57620, 0x3152f: 0x6df57820,\n\t0x31530: 0x6df57a20, 0x31531: 0x6df57c20, 0x31532: 0x6df57e20, 0x31533: 0x6df58020,\n\t0x31534: 0x6df58220, 0x31535: 0x6df58420, 0x31536: 0x6e093220, 0x31537: 0x6e093420,\n\t0x31538: 0x6e093620, 0x31539: 0x6e093820, 0x3153a: 0x6df61c20, 0x3153b: 0x6e091c20,\n\t0x3153c: 0x6e093a20, 0x3153d: 0x6dddd020, 0x3153e: 0x6e093c20, 0x3153f: 0x6e093e20,\n\t// Block 0xc55, offset 0x31540\n\t0x31540: 0x6e094020, 0x31541: 0x6e094220, 0x31542: 0x6e094420, 0x31543: 0x6e094620,\n\t0x31544: 0x6e094820, 0x31545: 0x6e094a20, 0x31546: 0x6e094c20, 0x31547: 0x6e094e20,\n\t0x31548: 0x6e095020, 0x31549: 0x6e095220, 0x3154a: 0x6e095420, 0x3154b: 0x6e095620,\n\t0x3154c: 0x6e095820, 0x3154d: 0x6e095a20, 0x3154e: 0x6e095c20, 0x3154f: 0x6e095e20,\n\t0x31550: 0x6e096020, 0x31551: 0x6e096220, 0x31552: 0x6e096420, 0x31553: 0x6e096620,\n\t0x31554: 0x6e096820, 0x31555: 0x6e096a20, 0x31556: 0x6e096c20, 0x31557: 0x6e096e20,\n\t0x31558: 0x6e097020, 0x31559: 0x6e097220, 0x3155a: 0x6e097420, 0x3155b: 0x6e097620,\n\t0x3155c: 0x6e194620, 0x3155d: 0x6e194820, 0x3155e: 0x6e194a20, 0x3155f: 0x6e194c20,\n\t0x31560: 0x6e097820, 0x31561: 0x6e194e20, 0x31562: 0x6e195020, 0x31563: 0x6e195220,\n\t0x31564: 0x6e195420, 0x31565: 0x6e195620, 0x31566: 0x6e195820, 0x31567: 0x6e195a20,\n\t0x31568: 0x6e195c20, 0x31569: 0x6e195e20, 0x3156a: 0x6e196020, 0x3156b: 0x6e196220,\n\t0x3156c: 0x6e196420, 0x3156d: 0x6e196620, 0x3156e: 0x6e196820, 0x3156f: 0x6e196a20,\n\t0x31570: 0x6e196c20, 0x31571: 0x6e25de20, 0x31572: 0x6e25e020, 0x31573: 0x6e25e220,\n\t0x31574: 0x6e25e420, 0x31575: 0x6e25e620, 0x31576: 0x6e25e820, 0x31577: 0x6e25ea20,\n\t0x31578: 0x6e25ec20, 0x31579: 0x6e25ee20, 0x3157a: 0x6e25f020, 0x3157b: 0x6e25f220,\n\t0x3157c: 0x6e25f420, 0x3157d: 0x6e25f620, 0x3157e: 0x6e25f820, 0x3157f: 0x6e25fa20,\n\t// Block 0xc56, offset 0x31580\n\t0x31580: 0x6e09e620, 0x31581: 0x6e25fc20, 0x31582: 0x6e25fe20, 0x31583: 0x6e260020,\n\t0x31584: 0x6e260220, 0x31585: 0x6e260420, 0x31586: 0x6e260620, 0x31587: 0x6e260820,\n\t0x31588: 0x6e260a20, 0x31589: 0x6e267220, 0x3158a: 0x6e2f5620, 0x3158b: 0x6e2f5820,\n\t0x3158c: 0x6e2f5a20, 0x3158d: 0x6e2f5c20, 0x3158e: 0x6e2f5e20, 0x3158f: 0x6e2f6020,\n\t0x31590: 0x6e2f6220, 0x31591: 0x6e2f6420, 0x31592: 0x6e2f6620, 0x31593: 0x6e2f6820,\n\t0x31594: 0x6e2f6a20, 0x31595: 0x6e2f6c20, 0x31596: 0x6e2f6e20, 0x31597: 0x6e2f7020,\n\t0x31598: 0x6e2f7220, 0x31599: 0x6e2f7420, 0x3159a: 0x6e2f7620, 0x3159b: 0x6e2f7820,\n\t0x3159c: 0x6e36a620, 0x3159d: 0x6e36a820, 0x3159e: 0x6e36aa20, 0x3159f: 0x6e36ac20,\n\t0x315a0: 0x6e36ae20, 0x315a1: 0x6e36b020, 0x315a2: 0x6e36b220, 0x315a3: 0x6e36b420,\n\t0x315a4: 0x6e36b620, 0x315a5: 0x6e36b820, 0x315a6: 0x6e36ba20, 0x315a7: 0x6e36bc20,\n\t0x315a8: 0x6e3bac20, 0x315a9: 0x6e36be20, 0x315aa: 0x6e2fda20, 0x315ab: 0x6e36c020,\n\t0x315ac: 0x6e3bae20, 0x315ad: 0x6e3bb020, 0x315ae: 0x6e3bb220, 0x315af: 0x6e3bb420,\n\t0x315b0: 0x6e371420, 0x315b1: 0x6e3f5420, 0x315b2: 0x6e3f5620, 0x315b3: 0x6e3f5820,\n\t0x315b4: 0x6e3f5a20, 0x315b5: 0x6e3f5c20, 0x315b6: 0x6e3f5e20, 0x315b7: 0x6e41da20,\n\t0x315b8: 0x6e41dc20, 0x315b9: 0x6e44d220, 0x315ba: 0x6e458220, 0x315bb: 0x6e469a20,\n\t0x315bc: 0x6c42dc20, 0x315bd: 0x6c8ac020, 0x315be: 0x6cb74a20, 0x315bf: 0x6ce86e20,\n\t// Block 0xc57, offset 0x315c0\n\t0x315c0: 0x6ce87020, 0x315c1: 0x6ce87220, 0x315c2: 0x6ce87420, 0x315c3: 0x6ce87620,\n\t0x315c4: 0x6d17e020, 0x315c5: 0x6d17e220, 0x315c6: 0x6d17e420, 0x315c7: 0x6d17e620,\n\t0x315c8: 0x6d17e820, 0x315c9: 0x6d17ea20, 0x315ca: 0x6d17ec20, 0x315cb: 0x6d17ee20,\n\t0x315cc: 0x6d17f020, 0x315cd: 0x6d17f220, 0x315ce: 0x6d17f420, 0x315cf: 0x6d17f620,\n\t0x315d0: 0x6d17f820, 0x315d1: 0x6d46b620, 0x315d2: 0x6d46b820, 0x315d3: 0x6d46ba20,\n\t0x315d4: 0x6d46bc20, 0x315d5: 0x6d46be20, 0x315d6: 0x6d46c020, 0x315d7: 0x6d46c220,\n\t0x315d8: 0x6d46c420, 0x315d9: 0x6d46c620, 0x315da: 0x6d46c820, 0x315db: 0x6d46ca20,\n\t0x315dc: 0x6d46cc20, 0x315dd: 0x6d46ce20, 0x315de: 0x6d46d020, 0x315df: 0x6d46d220,\n\t0x315e0: 0x6d740c20, 0x315e1: 0x6d740e20, 0x315e2: 0x6d741020, 0x315e3: 0x6d741220,\n\t0x315e4: 0x6d741420, 0x315e5: 0x6d741620, 0x315e6: 0x6d741820, 0x315e7: 0x6d741a20,\n\t0x315e8: 0x6d741c20, 0x315e9: 0x6d741e20, 0x315ea: 0x6d742020, 0x315eb: 0x6d742220,\n\t0x315ec: 0x6d742420, 0x315ed: 0x6d9db020, 0x315ee: 0x6d9db220, 0x315ef: 0x6d9db420,\n\t0x315f0: 0x6d9db620, 0x315f1: 0x6d9db820, 0x315f2: 0x6d9dba20, 0x315f3: 0x6d9dbc20,\n\t0x315f4: 0x6d9dbe20, 0x315f5: 0x6d9dc020, 0x315f6: 0x6d9dc220, 0x315f7: 0x6d9dc420,\n\t0x315f8: 0x6d9dc620, 0x315f9: 0x6d9dc820, 0x315fa: 0x6d9dca20, 0x315fb: 0x6d9dcc20,\n\t0x315fc: 0x6dc03c20, 0x315fd: 0x6dc03e20, 0x315fe: 0x6dc06820, 0x315ff: 0x6dc04020,\n\t// Block 0xc58, offset 0x31600\n\t0x31600: 0x6dc04220, 0x31601: 0x6dc04420, 0x31602: 0x6dc04620, 0x31603: 0x6dc04820,\n\t0x31604: 0x6dc04a20, 0x31605: 0x6dc04c20, 0x31606: 0x6dc04e20, 0x31607: 0x6dc05020,\n\t0x31608: 0x6dc05220, 0x31609: 0x6dc05420, 0x3160a: 0x6dc05620, 0x3160b: 0x6dc05820,\n\t0x3160c: 0x6dde2e20, 0x3160d: 0x6dde3020, 0x3160e: 0x6dde3220, 0x3160f: 0x6dde3420,\n\t0x31610: 0x6dde3620, 0x31611: 0x6dde3820, 0x31612: 0x6dde3a20, 0x31613: 0x6df61e20,\n\t0x31614: 0x6df62020, 0x31615: 0x6df62220, 0x31616: 0x6df62420, 0x31617: 0x6df62620,\n\t0x31618: 0x6df62820, 0x31619: 0x6df62a20, 0x3161a: 0x6df62c20, 0x3161b: 0x6df62e20,\n\t0x3161c: 0x6e09ec20, 0x3161d: 0x6e09ee20, 0x3161e: 0x6e09f020, 0x3161f: 0x6e09f220,\n\t0x31620: 0x6e19f820, 0x31621: 0x6e19fa20, 0x31622: 0x6e19fc20, 0x31623: 0x6e19fe20,\n\t0x31624: 0x6e267420, 0x31625: 0x6cb75220, 0x31626: 0x6ce88620, 0x31627: 0x6d180820,\n\t0x31628: 0x6d180a20, 0x31629: 0x6d180c20, 0x3162a: 0x6d180e20, 0x3162b: 0x6d181020,\n\t0x3162c: 0x6c63ac20, 0x3162d: 0x6d181220, 0x3162e: 0x6d181420, 0x3162f: 0x6d181620,\n\t0x31630: 0x6d181820, 0x31631: 0x6d46f420, 0x31632: 0x6d46f620, 0x31633: 0x6d46f820,\n\t0x31634: 0x6d46fa20, 0x31635: 0x6d46fc20, 0x31636: 0x6d46fe20, 0x31637: 0x6d745020,\n\t0x31638: 0x6d745220, 0x31639: 0x6d745420, 0x3163a: 0x6d745620, 0x3163b: 0x6d745820,\n\t0x3163c: 0x6d745a20, 0x3163d: 0x6d745c20, 0x3163e: 0x6d745e20, 0x3163f: 0x6d746020,\n\t// Block 0xc59, offset 0x31640\n\t0x31640: 0x6d746220, 0x31641: 0x6d746420, 0x31642: 0x6d746620, 0x31643: 0x6d746820,\n\t0x31644: 0x6d746a20, 0x31645: 0x6d746c20, 0x31646: 0x6d746e20, 0x31647: 0x6d747020,\n\t0x31648: 0x6d747220, 0x31649: 0x6d747420, 0x3164a: 0x6d9e0620, 0x3164b: 0x6d747620,\n\t0x3164c: 0x6d747820, 0x3164d: 0x6d747a20, 0x3164e: 0x6d747c20, 0x3164f: 0x6d9e0820,\n\t0x31650: 0x6d9e0a20, 0x31651: 0x6d9e0c20, 0x31652: 0x6d9e0e20, 0x31653: 0x6d9e1020,\n\t0x31654: 0x6d9e1220, 0x31655: 0x6d9e1420, 0x31656: 0x6d9e1620, 0x31657: 0x6d9e1820,\n\t0x31658: 0x6d9e1a20, 0x31659: 0x6d9e1c20, 0x3165a: 0x6d9e1e20, 0x3165b: 0x6d9e2020,\n\t0x3165c: 0x6dc06a20, 0x3165d: 0x6d9e2220, 0x3165e: 0x6d9e2420, 0x3165f: 0x6d9e2620,\n\t0x31660: 0x6d9e2820, 0x31661: 0x6d9e2a20, 0x31662: 0x6d9e2c20, 0x31663: 0x6d9e2e20,\n\t0x31664: 0x6d9e3020, 0x31665: 0x6d9e3220, 0x31666: 0x6d9e3420, 0x31667: 0x6d9e3620,\n\t0x31668: 0x6d9e3820, 0x31669: 0x6d9e3a20, 0x3166a: 0x6d9e3c20, 0x3166b: 0x6d9e3e20,\n\t0x3166c: 0x6d9e4020, 0x3166d: 0x6dc08020, 0x3166e: 0x6dc08220, 0x3166f: 0x6dc08420,\n\t0x31670: 0x6dc08620, 0x31671: 0x6dc08820, 0x31672: 0x6dc08a20, 0x31673: 0x6dc08c20,\n\t0x31674: 0x6dc08e20, 0x31675: 0x6dc09020, 0x31676: 0x6dc09220, 0x31677: 0x6dc09420,\n\t0x31678: 0x6dc09620, 0x31679: 0x6dc09820, 0x3167a: 0x6dc09a20, 0x3167b: 0x6dc09c20,\n\t0x3167c: 0x6dc09e20, 0x3167d: 0x6dc0a020, 0x3167e: 0x6dc0a220, 0x3167f: 0x6dc0a420,\n\t// Block 0xc5a, offset 0x31680\n\t0x31680: 0x6dc0a620, 0x31681: 0x6dc0a820, 0x31682: 0x6dc0aa20, 0x31683: 0x6dc0ac20,\n\t0x31684: 0x6dc0ae20, 0x31685: 0x6dc0b020, 0x31686: 0x6dc0b220, 0x31687: 0x6dc0b420,\n\t0x31688: 0x6dc0b620, 0x31689: 0x6dc0b820, 0x3168a: 0x6dde4e20, 0x3168b: 0x6dde5020,\n\t0x3168c: 0x6dde5220, 0x3168d: 0x6dde5420, 0x3168e: 0x6dde5620, 0x3168f: 0x6dde5820,\n\t0x31690: 0x6dde5a20, 0x31691: 0x6dde5c20, 0x31692: 0x6dde5e20, 0x31693: 0x6dde6020,\n\t0x31694: 0x6dde6220, 0x31695: 0x6dde6420, 0x31696: 0x6dde6620, 0x31697: 0x6dde6820,\n\t0x31698: 0x6dde6a20, 0x31699: 0x6dde6c20, 0x3169a: 0x6dde6e20, 0x3169b: 0x6dde7020,\n\t0x3169c: 0x6dde7220, 0x3169d: 0x6dde7420, 0x3169e: 0x6dde7620, 0x3169f: 0x6dde7820,\n\t0x316a0: 0x6dde7a20, 0x316a1: 0x6df63820, 0x316a2: 0x6dde7c20, 0x316a3: 0x6dde7e20,\n\t0x316a4: 0x6dd43a20, 0x316a5: 0x6dde8020, 0x316a6: 0x6df64c20, 0x316a7: 0x6dc13220,\n\t0x316a8: 0x6df64e20, 0x316a9: 0x6df65020, 0x316aa: 0x6df65220, 0x316ab: 0x6df65420,\n\t0x316ac: 0x6df65620, 0x316ad: 0x6df65820, 0x316ae: 0x6df65a20, 0x316af: 0x6df65c20,\n\t0x316b0: 0x6df65e20, 0x316b1: 0x6df66020, 0x316b2: 0x6df66220, 0x316b3: 0x6df66420,\n\t0x316b4: 0x6df66620, 0x316b5: 0x6df66820, 0x316b6: 0x6df66a20, 0x316b7: 0x6df66c20,\n\t0x316b8: 0x6df66e20, 0x316b9: 0x6df67020, 0x316ba: 0x6df67220, 0x316bb: 0x6df67420,\n\t0x316bc: 0x6df67620, 0x316bd: 0x6df67820, 0x316be: 0x6df67a20, 0x316bf: 0x6df67c20,\n\t// Block 0xc5b, offset 0x316c0\n\t0x316c0: 0x6df67e20, 0x316c1: 0x6df68020, 0x316c2: 0x6df68220, 0x316c3: 0x6df68420,\n\t0x316c4: 0x6df68620, 0x316c5: 0x6df68820, 0x316c6: 0x6df68a20, 0x316c7: 0x6df68c20,\n\t0x316c8: 0x6df68e20, 0x316c9: 0x6df69020, 0x316ca: 0x6df69220, 0x316cb: 0x6df69420,\n\t0x316cc: 0x6df69620, 0x316cd: 0x6df69820, 0x316ce: 0x6df69a20, 0x316cf: 0x6df69c20,\n\t0x316d0: 0x6e0a0e20, 0x316d1: 0x6df69e20, 0x316d2: 0x6e0a1020, 0x316d3: 0x6e0a1220,\n\t0x316d4: 0x6e0a1420, 0x316d5: 0x6e0a1620, 0x316d6: 0x6e0a1820, 0x316d7: 0x6e0a1a20,\n\t0x316d8: 0x6e0a1c20, 0x316d9: 0x6e0a1e20, 0x316da: 0x6e0a2020, 0x316db: 0x6e0a2220,\n\t0x316dc: 0x6e0a2420, 0x316dd: 0x6e0a2620, 0x316de: 0x6e0a2820, 0x316df: 0x6e0a2a20,\n\t0x316e0: 0x6e0a2c20, 0x316e1: 0x6e0a2e20, 0x316e2: 0x6e0a3020, 0x316e3: 0x6e0a3220,\n\t0x316e4: 0x6e0a3420, 0x316e5: 0x6e0a3620, 0x316e6: 0x6e0a3820, 0x316e7: 0x6e0a3a20,\n\t0x316e8: 0x6e0a3c20, 0x316e9: 0x6e0a3e20, 0x316ea: 0x6e0a4020, 0x316eb: 0x6e0a4220,\n\t0x316ec: 0x6e1a1020, 0x316ed: 0x6e1a1220, 0x316ee: 0x6e1a1420, 0x316ef: 0x6e1a1620,\n\t0x316f0: 0x6e1a1820, 0x316f1: 0x6e1a1a20, 0x316f2: 0x6e1a1c20, 0x316f3: 0x6e1a1e20,\n\t0x316f4: 0x6e1a2020, 0x316f5: 0x6e1a2220, 0x316f6: 0x6e1a2420, 0x316f7: 0x6e1a2620,\n\t0x316f8: 0x6e1a2820, 0x316f9: 0x6e1a2a20, 0x316fa: 0x6e1a2c20, 0x316fb: 0x6e1a2e20,\n\t0x316fc: 0x6e1a3020, 0x316fd: 0x6e1a3220, 0x316fe: 0x6e1a3420, 0x316ff: 0x6e0ad220,\n\t// Block 0xc5c, offset 0x31700\n\t0x31700: 0x6e1a3620, 0x31701: 0x6e1a3820, 0x31702: 0x6e1a3a20, 0x31703: 0x6e1a3c20,\n\t0x31704: 0x6e1a3e20, 0x31705: 0x6e1a4020, 0x31706: 0x6e1a4220, 0x31707: 0x6e1a4420,\n\t0x31708: 0x6e1a4620, 0x31709: 0x6e1a4820, 0x3170a: 0x6e1a4a20, 0x3170b: 0x6e268620,\n\t0x3170c: 0x6e1a4c20, 0x3170d: 0x6e1a4e20, 0x3170e: 0x6e1a5020, 0x3170f: 0x6e1a5220,\n\t0x31710: 0x6e268820, 0x31711: 0x6e268a20, 0x31712: 0x6e268c20, 0x31713: 0x6e268e20,\n\t0x31714: 0x6e269020, 0x31715: 0x6e269220, 0x31716: 0x6e269420, 0x31717: 0x6e269620,\n\t0x31718: 0x6e269820, 0x31719: 0x6e269a20, 0x3171a: 0x6e269c20, 0x3171b: 0x6e269e20,\n\t0x3171c: 0x6e26a020, 0x3171d: 0x6e26a220, 0x3171e: 0x6e26a420, 0x3171f: 0x6e26a620,\n\t0x31720: 0x6e260c20, 0x31721: 0x6e2ff220, 0x31722: 0x6e2ff420, 0x31723: 0x6e2ff620,\n\t0x31724: 0x6e2ff820, 0x31725: 0x6e2ffa20, 0x31726: 0x6e2ffc20, 0x31727: 0x6e2ffe20,\n\t0x31728: 0x6e300020, 0x31729: 0x6e273020, 0x3172a: 0x6e300220, 0x3172b: 0x6e300420,\n\t0x3172c: 0x6e300620, 0x3172d: 0x6e300820, 0x3172e: 0x6e300a20, 0x3172f: 0x6e300c20,\n\t0x31730: 0x6e300e20, 0x31731: 0x6e301020, 0x31732: 0x6e301220, 0x31733: 0x6e301420,\n\t0x31734: 0x6e301620, 0x31735: 0x6e273220, 0x31736: 0x6e301820, 0x31737: 0x6e301a20,\n\t0x31738: 0x6e301c20, 0x31739: 0x6e372220, 0x3173a: 0x6e371620, 0x3173b: 0x6e301e20,\n\t0x3173c: 0x6e302020, 0x3173d: 0x6e372420, 0x3173e: 0x6e372620, 0x3173f: 0x6e372820,\n\t// Block 0xc5d, offset 0x31740\n\t0x31740: 0x6e372a20, 0x31741: 0x6e372c20, 0x31742: 0x6e372e20, 0x31743: 0x6e373020,\n\t0x31744: 0x6e373220, 0x31745: 0x6e373420, 0x31746: 0x6e373620, 0x31747: 0x6e373820,\n\t0x31748: 0x6e373a20, 0x31749: 0x6e373c20, 0x3174a: 0x6e373e20, 0x3174b: 0x6e3bea20,\n\t0x3174c: 0x6e3bec20, 0x3174d: 0x6e3bee20, 0x3174e: 0x6e3bf020, 0x3174f: 0x6e3bf220,\n\t0x31750: 0x6e3bf420, 0x31751: 0x6e3bf620, 0x31752: 0x6e3bf820, 0x31753: 0x6e3f8820,\n\t0x31754: 0x6e3f8a20, 0x31755: 0x6e41fa20, 0x31756: 0x6e41fc20, 0x31757: 0x6e41fe20,\n\t0x31758: 0x6e43c020, 0x31759: 0x6e43c220, 0x3175a: 0x6e43c420, 0x3175b: 0x6e44e620,\n\t0x3175c: 0x6e44e820, 0x3175d: 0x6e458c20, 0x3175e: 0x6e458e20, 0x3175f: 0x6c0ac820,\n\t0x31760: 0x6c28a620, 0x31761: 0x6c28a820, 0x31762: 0x6c42de20, 0x31763: 0x6c42e020,\n\t0x31764: 0x6c42e220, 0x31765: 0x6c63ae20, 0x31766: 0x6c63b020, 0x31767: 0x6c63b220,\n\t0x31768: 0x6c63b420, 0x31769: 0x6c63b620, 0x3176a: 0x6c8ac420, 0x3176b: 0x6c8ac620,\n\t0x3176c: 0x6c8ac820, 0x3176d: 0x6c8aca20, 0x3176e: 0x6c8acc20, 0x3176f: 0x6c8ace20,\n\t0x31770: 0x6c8ad020, 0x31771: 0x6c8ad220, 0x31772: 0x6c8ad420, 0x31773: 0x6c8ad620,\n\t0x31774: 0x6c8ad820, 0x31775: 0x6c8ada20, 0x31776: 0x6c8adc20, 0x31777: 0x6cb75620,\n\t0x31778: 0x6cb75820, 0x31779: 0x6cb75a20, 0x3177a: 0x6cb75c20, 0x3177b: 0x6cb75e20,\n\t0x3177c: 0x6cb76020, 0x3177d: 0x6cb76220, 0x3177e: 0x6cb76420, 0x3177f: 0x6cb76620,\n\t// Block 0xc5e, offset 0x31780\n\t0x31780: 0x6ce89020, 0x31781: 0x6ce89220, 0x31782: 0x6ce89420, 0x31783: 0x6ce89620,\n\t0x31784: 0x6ce89820, 0x31785: 0x6ce89a20, 0x31786: 0x6ce89c20, 0x31787: 0x6ce89e20,\n\t0x31788: 0x6ce8a020, 0x31789: 0x6d183020, 0x3178a: 0x6d183220, 0x3178b: 0x6d183420,\n\t0x3178c: 0x6d183620, 0x3178d: 0x6d183820, 0x3178e: 0x6d183a20, 0x3178f: 0x6d183c20,\n\t0x31790: 0x6d183e20, 0x31791: 0x6d184020, 0x31792: 0x6d184220, 0x31793: 0x6d184420,\n\t0x31794: 0x6d184620, 0x31795: 0x6d472620, 0x31796: 0x6d472820, 0x31797: 0x6d472a20,\n\t0x31798: 0x6d74e020, 0x31799: 0x6d472c20, 0x3179a: 0x6d472e20, 0x3179b: 0x6d473020,\n\t0x3179c: 0x6d473220, 0x3179d: 0x6d74e220, 0x3179e: 0x6d74e420, 0x3179f: 0x6d74e620,\n\t0x317a0: 0x6d74e820, 0x317a1: 0x6d74ea20, 0x317a2: 0x6d74ec20, 0x317a3: 0x6d74ee20,\n\t0x317a4: 0x6d74f020, 0x317a5: 0x6d9eba20, 0x317a6: 0x6d9ebc20, 0x317a7: 0x6d9ebe20,\n\t0x317a8: 0x6d9ec020, 0x317a9: 0x6dc13820, 0x317aa: 0x6dc13a20, 0x317ab: 0x6dc13c20,\n\t0x317ac: 0x6dc13e20, 0x317ad: 0x6ddee620, 0x317ae: 0x6ddee820, 0x317af: 0x6ddeea20,\n\t0x317b0: 0x6ddeec20, 0x317b1: 0x6df73020, 0x317b2: 0x6df73220, 0x317b3: 0x6e273420,\n\t0x317b4: 0x6e273620, 0x317b5: 0x6cb78220, 0x317b6: 0x6d750020, 0x317b7: 0x6d9eca20,\n\t0x317b8: 0x6df73620, 0x317b9: 0x6e0ad820, 0x317ba: 0x6e1ac620, 0x317bb: 0x6e1ac820,\n\t0x317bc: 0x6e378c20, 0x317bd: 0x6e378e20, 0x317be: 0x6d9ed820, 0x317bf: 0x6cb78620,\n\t// Block 0xc5f, offset 0x317c0\n\t0x317c0: 0x6d185620, 0x317c1: 0x6d185820, 0x317c2: 0x6d185a20, 0x317c3: 0x6d751220,\n\t0x317c4: 0x6d751420, 0x317c5: 0x6d9ee220, 0x317c6: 0x6d9ee420, 0x317c7: 0x6d9ee620,\n\t0x317c8: 0x6d9ee820, 0x317c9: 0x6dc14820, 0x317ca: 0x6dc14a20, 0x317cb: 0x6dc14c20,\n\t0x317cc: 0x6ddefc20, 0x317cd: 0x6ddefe20, 0x317ce: 0x6ddf0020, 0x317cf: 0x6ddf0220,\n\t0x317d0: 0x6ddf0420, 0x317d1: 0x6df74820, 0x317d2: 0x6df74a20, 0x317d3: 0x6df74c20,\n\t0x317d4: 0x6df74e20, 0x317d5: 0x6df75020, 0x317d6: 0x6df75220, 0x317d7: 0x6df75420,\n\t0x317d8: 0x6e0aec20, 0x317d9: 0x6e0aee20, 0x317da: 0x6e0af020, 0x317db: 0x6e0af220,\n\t0x317dc: 0x6e1ad620, 0x317dd: 0x6e1ad820, 0x317de: 0x6e274420, 0x317df: 0x6e30b220,\n\t0x317e0: 0x6e379a20, 0x317e1: 0x6e3c3820, 0x317e2: 0x6e43e220, 0x317e3: 0x6e460a20,\n\t0x317e4: 0x6e46a220, 0x317e5: 0x6cb78a20, 0x317e6: 0x6c28aa20, 0x317e7: 0x6d475620,\n\t0x317e8: 0x6d753420, 0x317e9: 0x6d753620, 0x317ea: 0x6d753820, 0x317eb: 0x6d753a20,\n\t0x317ec: 0x6d9f0620, 0x317ed: 0x6d9f0820, 0x317ee: 0x6d9f0a20, 0x317ef: 0x6dc17020,\n\t0x317f0: 0x6dc17220, 0x317f1: 0x6ddf2e20, 0x317f2: 0x6ddf3020, 0x317f3: 0x6df77420,\n\t0x317f4: 0x6df77620, 0x317f5: 0x6e0b0620, 0x317f6: 0x6e275620, 0x317f7: 0x6e44fe20,\n\t0x317f8: 0x6cb78c20, 0x317f9: 0x6d755a20, 0x317fa: 0x6d9f2620, 0x317fb: 0x6cb79420,\n\t0x317fc: 0x6d476420, 0x317fd: 0x6d476620, 0x317fe: 0x6d756420, 0x317ff: 0x6ddf5220,\n\t// Block 0xc60, offset 0x31800\n\t0x31800: 0x6df79a20, 0x31801: 0x6e0b2a20, 0x31802: 0x6e30dc20, 0x31803: 0x6ce8b420,\n\t0x31804: 0x6ce8b620, 0x31805: 0x6d9f3420, 0x31806: 0x6d9f3620, 0x31807: 0x6dc19420,\n\t0x31808: 0x6dc19620, 0x31809: 0x6dc19820, 0x3180a: 0x6ddf5a20, 0x3180b: 0x6ddf5c20,\n\t0x3180c: 0x6e3c4c20, 0x3180d: 0x6ce8b820, 0x3180e: 0x6d758020, 0x3180f: 0x6dc1a820,\n\t0x31810: 0x6e278420, 0x31811: 0x6ce8ba20, 0x31812: 0x6cb79620, 0x31813: 0x6d758a20,\n\t0x31814: 0x6d9f4c20, 0x31815: 0x6d9f4e20, 0x31816: 0x6d9f5020, 0x31817: 0x6d9f5220,\n\t0x31818: 0x6d9f5420, 0x31819: 0x6d585420, 0x3181a: 0x6dc1c220, 0x3181b: 0x6dc1c420,\n\t0x3181c: 0x6dc1c620, 0x3181d: 0x6dc1c820, 0x3181e: 0x6dc1ca20, 0x3181f: 0x6ddf7220,\n\t0x31820: 0x6ddf7420, 0x31821: 0x6ddf7620, 0x31822: 0x6df7c620, 0x31823: 0x6df7c820,\n\t0x31824: 0x6e0b5420, 0x31825: 0x6e0b5620, 0x31826: 0x6e0b5820, 0x31827: 0x6e0b5a20,\n\t0x31828: 0x6e0b5c20, 0x31829: 0x6e0b5e20, 0x3182a: 0x6e0b6020, 0x3182b: 0x6e1b2020,\n\t0x3182c: 0x6e1b2220, 0x3182d: 0x6e1b2420, 0x3182e: 0x6e1b2620, 0x3182f: 0x6e1b2820,\n\t0x31830: 0x6e278820, 0x31831: 0x6e278a20, 0x31832: 0x6e30f220, 0x31833: 0x6e30f420,\n\t0x31834: 0x6e30f620, 0x31835: 0x6e3c5820, 0x31836: 0x6e3fc820, 0x31837: 0x6e423420,\n\t0x31838: 0x6e43f420, 0x31839: 0x6ce8be20, 0x3183a: 0x6d9f7220, 0x3183b: 0x6dc1e620,\n\t0x3183c: 0x6df7e020, 0x3183d: 0x6d187420, 0x3183e: 0x6c42e420, 0x3183f: 0x6dc1e820,\n\t// Block 0xc61, offset 0x31840\n\t0x31840: 0x6ddf8e20, 0x31841: 0x6ddf9020, 0x31842: 0x6ddf9220, 0x31843: 0x6df7e420,\n\t0x31844: 0x6df7e620, 0x31845: 0x6e1b6620, 0x31846: 0x6e310c20, 0x31847: 0x6e310e20,\n\t0x31848: 0x6e3c7020, 0x31849: 0x6e3c7220, 0x3184a: 0x6e3fd420, 0x3184b: 0x6ce8c020,\n\t0x3184c: 0x6d187620, 0x3184d: 0x6e0b9620, 0x3184e: 0x6d187820, 0x3184f: 0x6d75a020,\n\t0x31850: 0x6d75a220, 0x31851: 0x6d75a420, 0x31852: 0x6d9f7820, 0x31853: 0x6d187a20,\n\t0x31854: 0x6d187c20, 0x31855: 0x6ddfaa20, 0x31856: 0x6ddfac20, 0x31857: 0x6df7f820,\n\t0x31858: 0x6e1b6e20, 0x31859: 0x6e1b7020, 0x3185a: 0x6e1b7220, 0x3185b: 0x6e1b7420,\n\t0x3185c: 0x6e311420, 0x3185d: 0x6e3c7a20, 0x3185e: 0x6e37ec20, 0x3185f: 0x6e3c7c20,\n\t0x31860: 0x6d188020, 0x31861: 0x6c42e620, 0x31862: 0x6dc20220, 0x31863: 0x6dc20420,\n\t0x31864: 0x6dc20620, 0x31865: 0x6ddfb820, 0x31866: 0x6ddfba20, 0x31867: 0x6ddfbc20,\n\t0x31868: 0x6ddfbe20, 0x31869: 0x6ddfc020, 0x3186a: 0x6ddfc220, 0x3186b: 0x6ddfc420,\n\t0x3186c: 0x6ddfc620, 0x3186d: 0x6df80c20, 0x3186e: 0x6e0ba420, 0x3186f: 0x6e0ba620,\n\t0x31870: 0x6e0ba820, 0x31871: 0x6e1b8020, 0x31872: 0x6e27d820, 0x31873: 0x6e27da20,\n\t0x31874: 0x6e27dc20, 0x31875: 0x6e27de20, 0x31876: 0x6e311c20, 0x31877: 0x6e311e20,\n\t0x31878: 0x6e312020, 0x31879: 0x6e312220, 0x3187a: 0x6e440020, 0x3187b: 0x6d478020,\n\t0x3187c: 0x6d9f8820, 0x3187d: 0x6d9f8a20, 0x3187e: 0x6dc22020, 0x3187f: 0x6dc22220,\n\t// Block 0xc62, offset 0x31880\n\t0x31880: 0x6df82220, 0x31881: 0x6df82420, 0x31882: 0x6e27f420, 0x31883: 0x6e313820,\n\t0x31884: 0x6e313a20, 0x31885: 0x6e380020, 0x31886: 0x6e380220, 0x31887: 0x6e3c9220,\n\t0x31888: 0x6e424e20, 0x31889: 0x6e46fc20, 0x3188a: 0x6d478220, 0x3188b: 0x6dc22c20,\n\t0x3188c: 0x6ddfec20, 0x3188d: 0x6df83420, 0x3188e: 0x6e1b9a20, 0x3188f: 0x6e314420,\n\t0x31890: 0x6c15e220, 0x31891: 0x6d75b420, 0x31892: 0x6d75b620, 0x31893: 0x6d9f9220,\n\t0x31894: 0x6dc23020, 0x31895: 0x6ddff620, 0x31896: 0x6df83e20, 0x31897: 0x6df84020,\n\t0x31898: 0x6df84220, 0x31899: 0x6e0bda20, 0x3189a: 0x6e0bdc20, 0x3189b: 0x6e0bde20,\n\t0x3189c: 0x6e1b9e20, 0x3189d: 0x6e0be020, 0x3189e: 0x6e0be220, 0x3189f: 0x6e0be420,\n\t0x318a0: 0x6e0be620, 0x318a1: 0x6e0be820, 0x318a2: 0x6dc23a20, 0x318a3: 0x6e0bea20,\n\t0x318a4: 0x6e1ba420, 0x318a5: 0x6e1ba620, 0x318a6: 0x6e1ba820, 0x318a7: 0x6e1baa20,\n\t0x318a8: 0x6e1bac20, 0x318a9: 0x6e1bae20, 0x318aa: 0x6e280020, 0x318ab: 0x6e280220,\n\t0x318ac: 0x6e280420, 0x318ad: 0x6e314a20, 0x318ae: 0x6e314c20, 0x318af: 0x6e314e20,\n\t0x318b0: 0x6e315020, 0x318b1: 0x6e315220, 0x318b2: 0x6e381220, 0x318b3: 0x6e381420,\n\t0x318b4: 0x6e381620, 0x318b5: 0x6e381820, 0x318b6: 0x6e381a20, 0x318b7: 0x6e381c20,\n\t0x318b8: 0x6e3ca820, 0x318b9: 0x6e3caa20, 0x318ba: 0x6e3cac20, 0x318bb: 0x6e3cae20,\n\t0x318bc: 0x6e440620, 0x318bd: 0x6e440820, 0x318be: 0x6e46dc20, 0x318bf: 0x6c42e820,\n\t// Block 0xc63, offset 0x318c0\n\t0x318c0: 0x6c8aee20, 0x318c1: 0x6cb79820, 0x318c2: 0x6ce8c420, 0x318c3: 0x6d188220,\n\t0x318c4: 0x6d188420, 0x318c5: 0x6d188620, 0x318c6: 0x6d188820, 0x318c7: 0x6d478620,\n\t0x318c8: 0x6d478820, 0x318c9: 0x6d75ba20, 0x318ca: 0x6d75bc20, 0x318cb: 0x6dc23c20,\n\t0x318cc: 0x6dc23e20, 0x318cd: 0x6d9f9c20, 0x318ce: 0x6de00020, 0x318cf: 0x6df85a20,\n\t0x318d0: 0x6de23620, 0x318d1: 0x6e0c1220, 0x318d2: 0x6e1be220, 0x318d3: 0x6e283820,\n\t0x318d4: 0x6e283a20, 0x318d5: 0x6e283c20, 0x318d6: 0x6e467820, 0x318d7: 0x6e46a820,\n\t0x318d8: 0x6e473c20, 0x318d9: 0x6c0aca20, 0x318da: 0x6cb79a20, 0x318db: 0x6cb79c20,\n\t0x318dc: 0x6d9f9e20, 0x318dd: 0x6e1bea20, 0x318de: 0x6e441620, 0x318df: 0x6c28ac20,\n\t0x318e0: 0x6dc24220, 0x318e1: 0x6e1c0020, 0x318e2: 0x6e284620, 0x318e3: 0x6e3cda20,\n\t0x318e4: 0x6e3ffc20, 0x318e5: 0x6e3ffe20, 0x318e6: 0x6d585620, 0x318e7: 0x6d7e6e20,\n\t0x318e8: 0x6c670020, 0x318e9: 0x6db26c20, 0x318ea: 0x6c610620, 0x318eb: 0x6ce29e20,\n\t0x318ec: 0x6d974220, 0x318ed: 0x6e186020, 0x318ee: 0x6e41aa20, 0x318ef: 0x6d135620,\n\t0x318f0: 0x6c04aa20, 0x318f1: 0x6c079420, 0x318f2: 0x6dd85820, 0x318f3: 0x6d789a20,\n\t0x318f4: 0x6c006420, 0x318f5: 0x6c01f820, 0x318f6: 0x6c03d220, 0x318f7: 0x6c0a5820,\n\t0x318f8: 0x6c083c20, 0x318f9: 0x6c0c7020, 0x318fa: 0x6c2bb820, 0x318fb: 0x6ded8620,\n\t0x318fc: 0x6da1a620, 0x318fd: 0x6d585820, 0x318fe: 0x6d00ea20, 0x318ff: 0x6cae1c20,\n\t// Block 0xc64, offset 0x31900\n\t0x31900: 0x6e134020, 0x31901: 0x6d0e4820, 0x31902: 0x6dd6dc20, 0x31903: 0x6cd37020,\n\t0x31904: 0x6c749620, 0x31905: 0x6daca820, 0x31906: 0x6c3cfa20, 0x31907: 0x6c29c820,\n\t0x31908: 0x6c1efa20, 0x31909: 0x6c1efc20, 0x3190a: 0x6cad0e20, 0x3190b: 0x6db51620,\n\t// Block 0xc65, offset 0x31940\n\t0x31940: 0x6c86d020, 0x31941: 0x6c219c20, 0x31942: 0x6c270e20, 0x31943: 0x6d0f3a20,\n\t0x31944: 0x6cfa9420, 0x31945: 0x6c160020, 0x31946: 0x6c073820, 0x31947: 0x6d9f9e20,\n\t0x31948: 0x6d9f9e20, 0x31949: 0x6c490c20, 0x3194a: 0x6c41dc20, 0x3194b: 0x6cbab020,\n\t0x3194c: 0x6c2eb020, 0x3194d: 0x6de28c20, 0x3194e: 0x6e102820, 0x3194f: 0x6de9ba20,\n\t0x31950: 0x6e2b8e20, 0x31951: 0x6db3f420, 0x31952: 0x6d3b6a20, 0x31953: 0x6e2d0820,\n\t0x31954: 0x6d540620, 0x31955: 0x6c542820, 0x31956: 0x6c782020, 0x31957: 0x6c79ee20,\n\t0x31958: 0x6d09ae20, 0x31959: 0x6d128020, 0x3195a: 0x6d9bda20, 0x3195b: 0x6ce8d220,\n\t0x3195c: 0x6c18d820, 0x3195d: 0x6e0e7820, 0x3195e: 0x6e0f8220, 0x3195f: 0x6e12b420,\n\t0x31960: 0x6e458e20, 0x31961: 0x6cc0c020, 0x31962: 0x6da7c620, 0x31963: 0x6dd18820,\n\t0x31964: 0x6e01ee20, 0x31965: 0x6c348020, 0x31966: 0x6dea2c20, 0x31967: 0x6e135e20,\n\t0x31968: 0x6cc21820, 0x31969: 0x6c73be20, 0x3196a: 0x6c769c20, 0x3196b: 0x6c795620,\n\t0x3196c: 0x6c620220, 0x3196d: 0x6c297820, 0x3196e: 0x6c179420, 0x3196f: 0x6cb9b220,\n\t0x31970: 0x6d7cd420, 0x31971: 0x6de3da20, 0x31972: 0x6dfc5620, 0x31973: 0x6d868620,\n\t0x31974: 0x6c144420, 0x31975: 0x6e008a20, 0x31976: 0x6d0bc020, 0x31977: 0x6d103820,\n\t0x31978: 0x6e16b020, 0x31979: 0x6d73ae20, 0x3197a: 0x6e371620, 0x3197b: 0x6d027820,\n\t0x3197c: 0x6d032420, 0x3197d: 0x6d33d820, 0x3197e: 0x6cdb3420, 0x3197f: 0x6d96bc20,\n\t// Block 0xc66, offset 0x31980\n\t0x31980: 0x6cb78620, 0x31981: 0x6d68ec20, 0x31982: 0x6de11020, 0x31983: 0x6c1e9220,\n\t0x31984: 0x6e1f9e20, 0x31985: 0x6e206020, 0x31986: 0x6c23f020, 0x31987: 0x6d5d2420,\n\t0x31988: 0x6d0f2e20, 0x31989: 0x6d152020, 0x3198a: 0x6dc3e620, 0x3198b: 0x6d1fe020,\n\t0x3198c: 0x6d542620, 0x3198d: 0x6c9f4220, 0x3198e: 0x6d295820, 0x3198f: 0x6ca91620,\n\t0x31990: 0x6daf5020, 0x31991: 0x6c62d820, 0x31992: 0x6c8d4420, 0x31993: 0x6c145c20,\n\t0x31994: 0x6d487e20, 0x31995: 0x6c65d820, 0x31996: 0x6d03ae20, 0x31997: 0x6d341420,\n\t0x31998: 0x6cdb8220, 0x31999: 0x6cb5fc20, 0x3199a: 0x6e21cc20, 0x3199b: 0x6c4ef420,\n\t0x3199c: 0x6d540620, 0x3199d: 0x6d927c20, 0x3199e: 0x6c024220, 0x3199f: 0x6d1f5620,\n\t0x319a0: 0x6c4d8620, 0x319a1: 0x6ca2d620, 0x319a2: 0x6ca3e620, 0x319a3: 0x6c06c620,\n\t0x319a4: 0x6dac3420, 0x319a5: 0x6c438020, 0x319a6: 0x6cc2d420, 0x319a7: 0x6c021a20,\n\t0x319a8: 0x6c38c420, 0x319a9: 0x6d527e20, 0x319aa: 0x6c803a20, 0x319ab: 0x6c8de620,\n\t0x319ac: 0x6ced8620, 0x319ad: 0x6c599e20, 0x319ae: 0x6d09c620, 0x319af: 0x6d3c9420,\n\t0x319b0: 0x6c9e2620, 0x319b1: 0x6c272020, 0x319b2: 0x6c22fc20, 0x319b3: 0x6c4f3820,\n\t0x319b4: 0x6c5eb420, 0x319b5: 0x6c997820, 0x319b6: 0x6ca3de20, 0x319b7: 0x6c433620,\n\t0x319b8: 0x6c2a4c20, 0x319b9: 0x6c65d220, 0x319ba: 0x6c9c8020, 0x319bb: 0x6dce7a20,\n\t0x319bc: 0x6c263620, 0x319bd: 0x6d68e420, 0x319be: 0x6ce47020, 0x319bf: 0x6da05e20,\n\t// Block 0xc67, offset 0x319c0\n\t0x319c0: 0x6c199220, 0x319c1: 0x6c019420, 0x319c2: 0x6de23220, 0x319c3: 0x6c72c420,\n\t0x319c4: 0x6dc8dc20, 0x319c5: 0x6dfe0220, 0x319c6: 0x6d6f2820, 0x319c7: 0x6e44c220,\n\t0x319c8: 0x6df75420, 0x319c9: 0x6d758020, 0x319ca: 0x6c00a820, 0x319cb: 0x6d7e5e20,\n\t0x319cc: 0x6d80f220, 0x319cd: 0x6e22bc20, 0x319ce: 0x6c10da20, 0x319cf: 0x6d4fbc20,\n\t0x319d0: 0x6e28d020, 0x319d1: 0x6d515420, 0x319d2: 0x6d297c20, 0x319d3: 0x6cfc0c20,\n\t0x319d4: 0x6d5a3c20, 0x319d5: 0x6c3d4620, 0x319d6: 0x6d60c620, 0x319d7: 0x6db0a020,\n\t0x319d8: 0x6d6bf020, 0x319d9: 0x6d642020, 0x319da: 0x6cb37e20, 0x319db: 0x6db9b220,\n\t0x319dc: 0x6c0cfc20, 0x319dd: 0x6c0d4020, 0x319de: 0x6c46c420, 0x319df: 0x6c77fe20,\n\t0x319e0: 0x6cde9a20, 0x319e1: 0x6d3c9420, 0x319e2: 0x6cf17420, 0x319e3: 0x6c32f220,\n\t0x319e4: 0x6c993220, 0x319e5: 0x6da72420, 0x319e6: 0x6de83e20, 0x319e7: 0x6dca5a20,\n\t0x319e8: 0x6c05e820, 0x319e9: 0x6c2d8820, 0x319ea: 0x6d1f5620, 0x319eb: 0x6da2f220,\n\t0x319ec: 0x6c333420, 0x319ed: 0x6c573a20, 0x319ee: 0x6d5a0620, 0x319ef: 0x6caa3420,\n\t0x319f0: 0x6caada20, 0x319f1: 0x6d12d220, 0x319f2: 0x6d151e20, 0x319f3: 0x6e359c20,\n\t0x319f4: 0x6d442e20, 0x319f5: 0x6c298220, 0x319f6: 0x6dcca820, 0x319f7: 0x6e043820,\n\t0x319f8: 0x6dbbb220, 0x319f9: 0x6cc32e20, 0x319fa: 0x6c006a20, 0x319fb: 0x6d18e420,\n\t0x319fc: 0x6d4cd620, 0x319fd: 0x6c1cfc20, 0x319fe: 0x6c729c20, 0x319ff: 0x6d540620,\n\t// Block 0xc68, offset 0x31a00\n\t0x31a00: 0x6d834420, 0x31a01: 0x6daa7820, 0x31a02: 0x6d643a20, 0x31a03: 0x6d95ae20,\n\t0x31a04: 0x6d9f9c20, 0x31a05: 0x6cf5f820, 0x31a06: 0x6c283820, 0x31a07: 0x6d48a020,\n\t0x31a08: 0x6c368e20, 0x31a09: 0x6c521a20, 0x31a0a: 0x6c546e20, 0x31a0b: 0x6cfa3020,\n\t0x31a0c: 0x6c7a1820, 0x31a0d: 0x6c7ac820, 0x31a0e: 0x6cd45220, 0x31a0f: 0x6c801620,\n\t0x31a10: 0x6df30020, 0x31a11: 0x6c02d820, 0x31a12: 0x6d50c420, 0x31a13: 0x6cb60220,\n\t0x31a14: 0x6c64a820, 0x31a15: 0x6c945a20, 0x31a16: 0x6c9f6220, 0x31a17: 0x6d6bf820,\n\t0x31a18: 0x6c4d5820, 0x31a19: 0x6cf2a220, 0x31a1a: 0x6c73f020, 0x31a1b: 0x6ca2d620,\n\t0x31a1c: 0x6ce61620, 0x31a1d: 0x6c17f820, 0x31a1e: 0x6c0e4220, 0x31a1f: 0x6d4d6420,\n\t0x31a20: 0x6c35ea20, 0x31a21: 0x6c21ce20, 0x31a22: 0x6c9cce20, 0x31a23: 0x6c38f420,\n\t0x31a24: 0x6ca30c20, 0x31a25: 0x6cd24620, 0x31a26: 0x6d8bbe20, 0x31a27: 0x6d0cea20,\n\t0x31a28: 0x6d0d0c20, 0x31a29: 0x6c27f020, 0x31a2a: 0x6dd9bc20, 0x31a2b: 0x6c8d9420,\n\t0x31a2c: 0x6cfa6c20, 0x31a2d: 0x6c194820, 0x31a2e: 0x6d834820, 0x31a2f: 0x6d84e820,\n\t0x31a30: 0x6e007220, 0x31a31: 0x6d6f9220, 0x31a32: 0x6e2f7020, 0x31a33: 0x6e30b220,\n\t0x31a34: 0x6c36c420, 0x31a35: 0x6c9f2420, 0x31a36: 0x6db16420, 0x31a37: 0x6c0a4420,\n\t0x31a38: 0x6ca80e20, 0x31a39: 0x6ca89c20, 0x31a3a: 0x6c3ab620, 0x31a3b: 0x6c39cc20,\n\t0x31a3c: 0x6ded7c20, 0x31a3d: 0x6c029620, 0x31a3e: 0x6c83b820, 0x31a3f: 0x6c2ae020,\n\t// Block 0xc69, offset 0x31a40\n\t0x31a40: 0x6c032820, 0x31a41: 0x6c4c8220, 0x31a42: 0x6c349220, 0x31a43: 0x6d8a6620,\n\t0x31a44: 0x6c0fbc20, 0x31a45: 0x6c542c20, 0x31a46: 0x6d531620, 0x31a47: 0x6d952420,\n\t0x31a48: 0x6c14d020, 0x31a49: 0x6c62dc20, 0x31a4a: 0x6c26a020, 0x31a4b: 0x6d212a20,\n\t0x31a4c: 0x6c014620, 0x31a4d: 0x6ceb7220, 0x31a4e: 0x6ceb3420, 0x31a4f: 0x6c69d820,\n\t0x31a50: 0x6ced7e20, 0x31a51: 0x6cc0dc20, 0x31a52: 0x6cc79a20, 0x31a53: 0x6cf79a20,\n\t0x31a54: 0x6d26f820, 0x31a55: 0x6d769020, 0x31a56: 0x6ca29820, 0x31a57: 0x6c7bf820,\n\t0x31a58: 0x6c13f620, 0x31a59: 0x6c7de220, 0x31a5a: 0x6ca69620, 0x31a5b: 0x6d30ce20,\n\t0x31a5c: 0x6d155620, 0x31a5d: 0x6d335420, 0x31a5e: 0x6c144220, 0x31a5f: 0x6deabe20,\n\t0x31a60: 0x6e015420, 0x31a61: 0x6caea820, 0x31a62: 0x6d697820, 0x31a63: 0x6cb20820,\n\t0x31a64: 0x6c412e20, 0x31a65: 0x6ce32420, 0x31a66: 0x6cb42820, 0x31a67: 0x6d6e4820,\n\t0x31a68: 0x6d974420, 0x31a69: 0x6d149c20, 0x31a6a: 0x6ce7aa20, 0x31a6b: 0x6d16a820,\n\t0x31a6c: 0x6d9b2420, 0x31a6d: 0x6e1a2020, 0x31a6e: 0x6c888620, 0x31a6f: 0x6d98c020,\n\t0x31a70: 0x6c435e20, 0x31a71: 0x6d18fe20, 0x31a72: 0x6c173820, 0x31a73: 0x6c456020,\n\t0x31a74: 0x6cea9c20, 0x31a75: 0x6c2bac20, 0x31a76: 0x6cbada20, 0x31a77: 0x6d1b7220,\n\t0x31a78: 0x6d773620, 0x31a79: 0x6cbcc820, 0x31a7a: 0x6d758820, 0x31a7b: 0x6d4d6220,\n\t0x31a7c: 0x6c01b620, 0x31a7d: 0x6c6fc020, 0x31a7e: 0x6cc3aa20, 0x31a7f: 0x6d4fb820,\n\t// Block 0xc6a, offset 0x31a80\n\t0x31a80: 0x6de28220, 0x31a81: 0x6c9ab020, 0x31a82: 0x6c50ac20, 0x31a83: 0x6cc7b820,\n\t0x31a84: 0x6c9c8820, 0x31a85: 0x6c76b620, 0x31a86: 0x6c9fb820, 0x31a87: 0x6d297a20,\n\t0x31a88: 0x6cce4620, 0x31a89: 0x6c04d820, 0x31a8a: 0x6cd0a820, 0x31a8b: 0x6d028220,\n\t0x31a8c: 0x6c3cee20, 0x31a8d: 0x6c5ad020, 0x31a8e: 0x6c5ace20, 0x31a8f: 0x6c7dc620,\n\t0x31a90: 0x6c7dd220, 0x31a91: 0x6c7de020, 0x31a92: 0x6d30ca20, 0x31a93: 0x6d30cc20,\n\t0x31a94: 0x6d5e0420, 0x31a95: 0x6c5ba420, 0x31a96: 0x6d051020, 0x31a97: 0x6d60c620,\n\t0x31a98: 0x6d8abc20, 0x31a99: 0x6daf6420, 0x31a9a: 0x6d071220, 0x31a9b: 0x6c3e3620,\n\t0x31a9c: 0x6c82de20, 0x31a9d: 0x6c020420, 0x31a9e: 0x6c020420, 0x31a9f: 0x6cdbee20,\n\t0x31aa0: 0x6d678620, 0x31aa1: 0x6ca6aa20, 0x31aa2: 0x6d928220, 0x31aa3: 0x6dd48e20,\n\t0x31aa4: 0x6d3d8420, 0x31aa5: 0x6dee3c20, 0x31aa6: 0x6c051e20, 0x31aa7: 0x6ce32420,\n\t0x31aa8: 0x6df1b220, 0x31aa9: 0x6e06f620, 0x31aaa: 0x6d9a4a20, 0x31aab: 0x6c6f8420,\n\t0x31aac: 0x6cfce020, 0x31aad: 0x6d8d8a20,\n\t0x31ab0: 0x6c28ae20, 0x31ab1: 0x6c179020, 0x31ab2: 0x6c0c5a20, 0x31ab3: 0x6c296c20,\n\t0x31ab4: 0x6c061420, 0x31ab5: 0x6d767a20, 0x31ab6: 0x6c455c20, 0x31ab7: 0x6c016420,\n\t0x31ab8: 0x6cbada20, 0x31ab9: 0x6c8e9a20, 0x31aba: 0x6cbad220, 0x31abb: 0x6cebb420,\n\t0x31abc: 0x6ced7e20, 0x31abd: 0x6d4b0420, 0x31abe: 0x6c2ea820, 0x31abf: 0x6c2ef220,\n\t// Block 0xc6b, offset 0x31ac0\n\t0x31ac0: 0x6c924620, 0x31ac1: 0x6d79de20, 0x31ac2: 0x6d212820, 0x31ac3: 0x6d216c20,\n\t0x31ac4: 0x6c96ac20, 0x31ac5: 0x6cf1fa20, 0x31ac6: 0x6c97b620, 0x31ac7: 0x6cf2b020,\n\t0x31ac8: 0x6cf25620, 0x31ac9: 0x6d4fb820, 0x31aca: 0x6d224e20, 0x31acb: 0x6de28220,\n\t0x31acc: 0x6da46c20, 0x31acd: 0x6cc4ee20, 0x31ace: 0x6cf40620, 0x31acf: 0x6cc56820,\n\t0x31ad0: 0x6c9abe20, 0x31ad1: 0x6cc79a20, 0x31ad2: 0x6c73be20, 0x31ad3: 0x6c9c2220,\n\t0x31ad4: 0x6c21de20, 0x31ad5: 0x6c04ae20, 0x31ad6: 0x6c9e2620, 0x31ad7: 0x6c546e20,\n\t0x31ad8: 0x6cfaa420, 0x31ad9: 0x6cccf220, 0x31ada: 0x6d297a20, 0x31adb: 0x6de4d620,\n\t0x31adc: 0x6cce4620, 0x31add: 0x6dab6420, 0x31ade: 0x6da93020, 0x31adf: 0x6c09de20,\n\t0x31ae0: 0x6ca29820, 0x31ae1: 0x6d2d0620, 0x31ae2: 0x6d2dac20, 0x31ae3: 0x6c3be220,\n\t0x31ae4: 0x6d5b5220, 0x31ae5: 0x6d5b3020, 0x31ae6: 0x6c7bf820, 0x31ae7: 0x6ca4d020,\n\t0x31ae8: 0x6c3c8820, 0x31ae9: 0x6cd36020, 0x31aea: 0x6ca59220, 0x31aeb: 0x6d5d2820,\n\t0x31aec: 0x6d5e7620, 0x31aed: 0x6d051020, 0x31aee: 0x6c5c3a20, 0x31aef: 0x6d061420,\n\t0x31af0: 0x6d60c620, 0x31af1: 0x6cd85420, 0x31af2: 0x6c3e3620, 0x31af3: 0x6c83e820,\n\t0x31af4: 0x6cdb7e20, 0x31af5: 0x6d900a20, 0x31af6: 0x6db50820, 0x31af7: 0x6dd40e20,\n\t0x31af8: 0x6ca6aa20, 0x31af9: 0x6d68be20, 0x31afa: 0x6d697820, 0x31afb: 0x6d68d620,\n\t0x31afc: 0x6d928220, 0x31afd: 0x6d927c20, 0x31afe: 0x6d925c20, 0x31aff: 0x6dd48e20,\n\t// Block 0xc6c, offset 0x31b00\n\t0x31b00: 0x6e2c4c20, 0x31b01: 0x6dee3c20, 0x31b02: 0x6d951e20, 0x31b03: 0x6d959e20,\n\t0x31b04: 0x6db93e20, 0x31b05: 0x6d40e620, 0x31b06: 0x6cb60820, 0x31b07: 0x6df1b220,\n\t0x31b08: 0x6d155620, 0x31b09: 0x6e06d420, 0x31b0a: 0x6e06f620, 0x31b0b: 0x6d15fc20,\n\t0x31b0c: 0x6d9a4a20, 0x31b0d: 0x6e08b620, 0x31b0e: 0x6d9f9e20, 0x31b0f: 0x6d502220,\n\t0x31b10: 0x6d501620, 0x31b11: 0x6c36f420, 0x31b12: 0x6cf6d620, 0x31b13: 0x6c597a20,\n\t0x31b14: 0x6cd34020, 0x31b15: 0x6d5c7220, 0x31b16: 0x6dcdba20, 0x31b17: 0x6d0fcc20,\n\t0x31b18: 0x6e313820, 0x31b19: 0x6de00020,\n\t// Block 0xc6d, offset 0x31b40\n\t0x31b40: 0xf0001c1c, 0x31b41: 0xf0001c1c, 0x31b42: 0x00658c9c,\n\t0x31b50: 0x2c047483, 0x31b51: 0x2c0faa83, 0x31b52: 0x2c03a483, 0x31b53: 0xf0001c1c,\n\t0x31b54: 0x2c007483, 0x31b55: 0x2c0f1e83, 0x31b56: 0x2d0dc083, 0x31b57: 0x2c03de83,\n\t0x31b58: 0x2c0b5483, 0x31b59: 0x2c50d083, 0x31b5a: 0x2cce0683, 0x31b5b: 0x2c729c83,\n\t0x31b5c: 0x2c44fc83, 0x31b5d: 0x2c4d5a83, 0x31b5e: 0x2c0c7883, 0x31b5f: 0x2cf5a283,\n\t0x31b60: 0x2c17e083, 0x31b61: 0x2ca93c83, 0x31b62: 0x2c0a0283, 0x31b63: 0x2cb1a083,\n\t0x31b64: 0x2c1b6883, 0x31b65: 0x2c198083, 0x31b66: 0x2d295e83, 0x31b67: 0x2c208683,\n\t0x31b68: 0x2c714283, 0x31b69: 0x2c000283, 0x31b6a: 0x2c00dc83, 0x31b6b: 0x2d118683,\n\t0x31b6c: 0x2c089283, 0x31b6d: 0x2c023683, 0x31b6e: 0x2c075483, 0x31b6f: 0x2c4f4883,\n\t0x31b70: 0x2c26fc83, 0x31b71: 0x2c093e83, 0x31b72: 0x2d032883, 0x31b73: 0x2c3d6e83,\n\t0x31b74: 0x2c0e3483, 0x31b75: 0x2cccd883, 0x31b76: 0x2c127483, 0x31b77: 0x2c049c83,\n\t0x31b78: 0x2c0a1083, 0x31b79: 0x2cb95283, 0x31b7a: 0x2c901a83,\n\t// Block 0xc6e, offset 0x31b80\n\t0x31b80: 0xe000b653, 0x31b81: 0xe000b64b, 0x31b82: 0xe000b647, 0x31b83: 0xe000b657,\n\t0x31b84: 0xe000b65b, 0x31b85: 0xe000b64f, 0x31b86: 0xe000b663, 0x31b87: 0xe000b667,\n\t0x31b88: 0xe000b65f,\n\t0x31b90: 0x2c96d483, 0x31b91: 0x2c074c83,\n\t// Block 0xc6f, offset 0x31bc0\n\t0x31bc0: 0x6c003e20, 0x31bc1: 0x6c004020, 0x31bc2: 0x6c004220, 0x31bc3: 0x6c00e820,\n\t0x31bc4: 0x6c00ea20, 0x31bc5: 0x6c00ec20, 0x31bc6: 0x6c00ee20, 0x31bc7: 0x6c022820,\n\t0x31bc8: 0x6c022a20, 0x31bc9: 0x6c022c20, 0x31bca: 0x6c022e20, 0x31bcb: 0x6c023020,\n\t0x31bcc: 0x6c023220, 0x31bcd: 0x6c055220, 0x31bce: 0x6c055420, 0x31bcf: 0x6c055620,\n\t0x31bd0: 0x6c055820, 0x31bd1: 0x6c055a20, 0x31bd2: 0x6c055c20, 0x31bd3: 0x6c055e20,\n\t0x31bd4: 0x6c056020, 0x31bd5: 0x6c056220, 0x31bd6: 0x6c056420, 0x31bd7: 0x6c056620,\n\t0x31bd8: 0x6c0ada20, 0x31bd9: 0x6c0adc20, 0x31bda: 0x6c0ade20, 0x31bdb: 0x6c0f4220,\n\t0x31bdc: 0x6c0ae020, 0x31bdd: 0x6c0dac20, 0x31bde: 0x6c0ae220, 0x31bdf: 0x6c0ae420,\n\t0x31be0: 0x6c0ae620, 0x31be1: 0x6c15ec20, 0x31be2: 0x6c15ee20, 0x31be3: 0x6c15f020,\n\t0x31be4: 0x6c15f220, 0x31be5: 0x6c162c20, 0x31be6: 0x6c15f420, 0x31be7: 0x6c15f620,\n\t0x31be8: 0x6c15f820, 0x31be9: 0x6c0b3a20, 0x31bea: 0x6c15fa20, 0x31beb: 0x6c15fc20,\n\t0x31bec: 0x6c28b220, 0x31bed: 0x6c28b420, 0x31bee: 0x6c28b620, 0x31bef: 0x6c2d9420,\n\t0x31bf0: 0x6c28b820, 0x31bf1: 0x6c28ba20, 0x31bf2: 0x6c28bc20, 0x31bf3: 0x6c28be20,\n\t0x31bf4: 0x6c28c020, 0x31bf5: 0x6c42ea20, 0x31bf6: 0x6c42ec20, 0x31bf7: 0x6c470a20,\n\t0x31bf8: 0x6c42ee20, 0x31bf9: 0x6c470c20, 0x31bfa: 0x6c42f020, 0x31bfb: 0x6c42f220,\n\t0x31bfc: 0x6c6a8820, 0x31bfd: 0x6c63cc20, 0x31bfe: 0x6c63ce20, 0x31bff: 0x6c63d020,\n\t// Block 0xc70, offset 0x31c00\n\t0x31c00: 0x6c63d220, 0x31c01: 0x6c8af020, 0x31c02: 0x6c8af220, 0x31c03: 0x6c8af420,\n\t0x31c04: 0x6c8af620, 0x31c05: 0x6c8af820, 0x31c06: 0x6cb79e20, 0x31c07: 0x6cb7a020,\n\t0x31c08: 0x6cb7a220, 0x31c09: 0x6cb93420, 0x31c0a: 0x6cb7a420, 0x31c0b: 0x6cb7a620,\n\t0x31c0c: 0x6ce8ca20, 0x31c0d: 0x6ce8cc20, 0x31c0e: 0x6d188c20, 0x31c0f: 0x6d188e20,\n\t0x31c10: 0x6d189020, 0x31c11: 0x6d189220, 0x31c12: 0x6d189420, 0x31c13: 0x6d479020,\n\t0x31c14: 0x6d479220, 0x31c15: 0x6d75c220, 0x31c16: 0x6d9fa420, 0x31c17: 0x6d75c420,\n\t0x31c18: 0x6d75c620, 0x31c19: 0x6d75c820, 0x31c1a: 0x6d75ca20, 0x31c1b: 0x6d75cc20,\n\t0x31c1c: 0x6da01620, 0x31c1d: 0x6d75ce20, 0x31c1e: 0x6da57820, 0x31c1f: 0x6dc24420,\n\t0x31c20: 0x6df86a20, 0x31c21: 0x6c004620, 0x31c22: 0x6c004820, 0x31c23: 0x6c023e20,\n\t0x31c24: 0x6c079620, 0x31c25: 0x6c056a20, 0x31c26: 0x6c0aea20, 0x31c27: 0x6c160220,\n\t0x31c28: 0x6c160420, 0x31c29: 0x6c28c620, 0x31c2a: 0x6c28c820, 0x31c2b: 0x6c28ca20,\n\t0x31c2c: 0x6c28cc20, 0x31c2d: 0x6c42f820, 0x31c2e: 0x6c42fa20, 0x31c2f: 0x6c42fc20,\n\t0x31c30: 0x6c63da20, 0x31c31: 0x6c63dc20, 0x31c32: 0x6c15ae20, 0x31c33: 0x6c8afc20,\n\t0x31c34: 0x6cb7a820, 0x31c35: 0x6cb7aa20, 0x31c36: 0x6d189820, 0x31c37: 0x6d1bb420,\n\t0x31c38: 0x6d479420, 0x31c39: 0x6dc24620, 0x31c3a: 0x6de00420, 0x31c3b: 0x6e1c0420,\n\t0x31c3c: 0x6c010220, 0x31c3d: 0x6c010420, 0x31c3e: 0x6c026420, 0x31c3f: 0x6c024620,\n\t// Block 0xc71, offset 0x31c40\n\t0x31c40: 0x6c057020, 0x31c41: 0x6c057220, 0x31c42: 0x6c0aec20, 0x31c43: 0x6c63de20,\n\t0x31c44: 0x6ce8ce20, 0x31c45: 0x6d75d420, 0x31c46: 0x6c005620, 0x31c47: 0x6c005820,\n\t0x31c48: 0x6c005a20, 0x31c49: 0x6c005c20, 0x31c4a: 0x6c005e20, 0x31c4b: 0x6c011020,\n\t0x31c4c: 0x6c011220, 0x31c4d: 0x6c011420, 0x31c4e: 0x6c011620, 0x31c4f: 0x6c024e20,\n\t0x31c50: 0x6c025020, 0x31c51: 0x6c025220, 0x31c52: 0x6c025420, 0x31c53: 0x6c025620,\n\t0x31c54: 0x6c057c20, 0x31c55: 0x6c057e20, 0x31c56: 0x6c058020, 0x31c57: 0x6c058220,\n\t0x31c58: 0x6c058420, 0x31c59: 0x6c058620, 0x31c5a: 0x6c058820, 0x31c5b: 0x6c058a20,\n\t0x31c5c: 0x6c058c20, 0x31c5d: 0x6c058e20, 0x31c5e: 0x6c059020, 0x31c5f: 0x6c059220,\n\t0x31c60: 0x6c059420, 0x31c61: 0x6c059620, 0x31c62: 0x6c0af820, 0x31c63: 0x6c0afa20,\n\t0x31c64: 0x6c0afc20, 0x31c65: 0x6c0afe20, 0x31c66: 0x6c0b0020, 0x31c67: 0x6c0b0220,\n\t0x31c68: 0x6c149620, 0x31c69: 0x6c0b0420, 0x31c6a: 0x6c0b0620, 0x31c6b: 0x6c0b0820,\n\t0x31c6c: 0x6c0dd620, 0x31c6d: 0x6c0b0a20, 0x31c6e: 0x6c0dd820, 0x31c6f: 0x6c160820,\n\t0x31c70: 0x6c18ea20, 0x31c71: 0x6c227c20, 0x31c72: 0x6c28d220, 0x31c73: 0x6c28d420,\n\t0x31c74: 0x6c430420, 0x31c75: 0x6c3bd820, 0x31c76: 0x6c28d620, 0x31c77: 0x6c430620,\n\t0x31c78: 0x6c431c20, 0x31c79: 0x6c63e220, 0x31c7a: 0x6c63e420, 0x31c7b: 0x6c63e620,\n\t0x31c7c: 0x6c63e820, 0x31c7d: 0x6c63ea20, 0x31c7e: 0x6c63ec20, 0x31c7f: 0x6c8afe20,\n\t// Block 0xc72, offset 0x31c80\n\t0x31c80: 0x6c8b0020, 0x31c81: 0x6c8b0220, 0x31c82: 0x6c8b0420, 0x31c83: 0x6cb7ac20,\n\t0x31c84: 0x6cb7ae20, 0x31c85: 0x6d189a20, 0x31c86: 0x6ce8d020, 0x31c87: 0x6d479620,\n\t0x31c88: 0x6e284820, 0x31c89: 0x6c001620, 0x31c8a: 0x6c001820, 0x31c8b: 0x6c001a20,\n\t0x31c8c: 0x6c001c20, 0x31c8d: 0x6c001e20, 0x31c8e: 0x6c002020, 0x31c8f: 0x6c006620,\n\t0x31c90: 0x6c006820, 0x31c91: 0x6c002220, 0x31c92: 0x6c012620, 0x31c93: 0x6c012820,\n\t0x31c94: 0x6c012a20, 0x31c95: 0x6c026620, 0x31c96: 0x6c026820, 0x31c97: 0x6c026a20,\n\t0x31c98: 0x6c026c20, 0x31c99: 0x6c026e20, 0x31c9a: 0x6c027020, 0x31c9b: 0x6c027220,\n\t0x31c9c: 0x6c027420, 0x31c9d: 0x6c027620, 0x31c9e: 0x6c05a220, 0x31c9f: 0x6c05a420,\n\t0x31ca0: 0x6c05a620, 0x31ca1: 0x6c05a820, 0x31ca2: 0x6c05aa20, 0x31ca3: 0x6c05ac20,\n\t0x31ca4: 0x6c0b2c20, 0x31ca5: 0x6c0b2e20, 0x31ca6: 0x6c0b3020, 0x31ca7: 0x6c0b3220,\n\t0x31ca8: 0x6c0b3420, 0x31ca9: 0x6c161420, 0x31caa: 0x6c161620, 0x31cab: 0x6c24c020,\n\t0x31cac: 0x6c161820, 0x31cad: 0x6c28ea20, 0x31cae: 0x6c28ec20, 0x31caf: 0x6c28ee20,\n\t0x31cb0: 0x6c3bda20, 0x31cb1: 0x6c2fdc20, 0x31cb2: 0x6c431e20, 0x31cb3: 0x6c432020,\n\t0x31cb4: 0x6c432220, 0x31cb5: 0x6c432420, 0x31cb6: 0x6c432620, 0x31cb7: 0x6c432820,\n\t0x31cb8: 0x6c63f420, 0x31cb9: 0x6c63f620, 0x31cba: 0x6c63f820, 0x31cbb: 0x6c63fa20,\n\t0x31cbc: 0x6c8b1220, 0x31cbd: 0x6c8b1420, 0x31cbe: 0x6c8b1620, 0x31cbf: 0x6c8b1820,\n\t// Block 0xc73, offset 0x31cc0\n\t0x31cc0: 0x6c8b1a20, 0x31cc1: 0x6c8b1c20, 0x31cc2: 0x6c8b1e20, 0x31cc3: 0x6ce8d820,\n\t0x31cc4: 0x6ce8da20, 0x31cc5: 0x6d189c20, 0x31cc6: 0x6d189e20, 0x31cc7: 0x6d18a020,\n\t0x31cc8: 0x6d18a220, 0x31cc9: 0x6d9fa620, 0x31cca: 0x6de00820, 0x31ccb: 0x6df86c20,\n\t0x31ccc: 0x6c002620, 0x31ccd: 0x6c006c20, 0x31cce: 0x6c006e20, 0x31ccf: 0x6c007020,\n\t0x31cd0: 0x6c007220, 0x31cd1: 0x6c012e20, 0x31cd2: 0x6c027c20, 0x31cd3: 0x6c027e20,\n\t0x31cd4: 0x6c028020, 0x31cd5: 0x6c0b3c20, 0x31cd6: 0x6c162220, 0x31cd7: 0x6c162420,\n\t0x31cd8: 0x6c162620, 0x31cd9: 0x6c28f620, 0x31cda: 0x6c8b2220, 0x31cdb: 0x6cb7ba20,\n\t0x31cdc: 0x6d479820, 0x31cdd: 0x6d75d820, 0x31cde: 0x6c007620, 0x31cdf: 0x6c007820,\n\t0x31ce0: 0x6c007a20, 0x31ce1: 0x6c028e20, 0x31ce2: 0x6c0b4420, 0x31ce3: 0x6c0b4620,\n\t0x31ce4: 0x6c0b4820, 0x31ce5: 0x6c0b4a20, 0x31ce6: 0x6c0b4c20, 0x31ce7: 0x6c0b4e20,\n\t0x31ce8: 0x6c162e20, 0x31ce9: 0x6c163020, 0x31cea: 0x6c163220, 0x31ceb: 0x6c290220,\n\t0x31cec: 0x6c290420, 0x31ced: 0x6c290620, 0x31cee: 0x6c290820, 0x31cef: 0x6c290a20,\n\t0x31cf0: 0x6c432c20, 0x31cf1: 0x6c432e20, 0x31cf2: 0x6c433020, 0x31cf3: 0x6c433220,\n\t0x31cf4: 0x6c4d0220, 0x31cf5: 0x6c640220, 0x31cf6: 0x6c640420, 0x31cf7: 0x6c640620,\n\t0x31cf8: 0x6c640820, 0x31cf9: 0x6c8b2420, 0x31cfa: 0x6c8b2620, 0x31cfb: 0x6cb7be20,\n\t0x31cfc: 0x6ce8de20, 0x31cfd: 0x6ce8e020, 0x31cfe: 0x6ce8e220, 0x31cff: 0x6d18a620,\n\t// Block 0xc74, offset 0x31d00\n\t0x31d00: 0x6d479a20, 0x31d01: 0x6c029420, 0x31d02: 0x6c05b220, 0x31d03: 0x6c0b5c20,\n\t0x31d04: 0x6c0b5e20, 0x31d05: 0x6c0b6020, 0x31d06: 0x6c0b6220, 0x31d07: 0x6c0b6420,\n\t0x31d08: 0x6c163c20, 0x31d09: 0x6c163e20, 0x31d0a: 0x6c164020, 0x31d0b: 0x6c164220,\n\t0x31d0c: 0x6c291220, 0x31d0d: 0x6c291420, 0x31d0e: 0x6c291620, 0x31d0f: 0x6c291820,\n\t0x31d10: 0x6c291a20, 0x31d11: 0x6c291c20, 0x31d12: 0x6c291e20, 0x31d13: 0x6c434020,\n\t0x31d14: 0x6c434220, 0x31d15: 0x6c434420, 0x31d16: 0x6c640c20, 0x31d17: 0x6c6a8e20,\n\t0x31d18: 0x6c640e20, 0x31d19: 0x6c641020, 0x31d1a: 0x6c641220, 0x31d1b: 0x6c641420,\n\t0x31d1c: 0x6c641620, 0x31d1d: 0x6c641820, 0x31d1e: 0x6c8b2820, 0x31d1f: 0x6c8b2a20,\n\t0x31d20: 0x6c8b2c20, 0x31d21: 0x6c8b2e20, 0x31d22: 0x6c8b3020, 0x31d23: 0x6c8b3220,\n\t0x31d24: 0x6c8b3420, 0x31d25: 0x6c8b3620, 0x31d26: 0x6c8b3820, 0x31d27: 0x6c8b3a20,\n\t0x31d28: 0x6cb7c420, 0x31d29: 0x6cb7c620, 0x31d2a: 0x6cb7c820, 0x31d2b: 0x6cb7ca20,\n\t0x31d2c: 0x6cb7cc20, 0x31d2d: 0x6cb7ce20, 0x31d2e: 0x6cb7d020, 0x31d2f: 0x6cb7d220,\n\t0x31d30: 0x6cd41020, 0x31d31: 0x6cbd9c20, 0x31d32: 0x6cb7d420, 0x31d33: 0x6ce8ea20,\n\t0x31d34: 0x6ce8ec20, 0x31d35: 0x6ce8ee20, 0x31d36: 0x6ce8f020, 0x31d37: 0x6ce8f220,\n\t0x31d38: 0x6ce8f420, 0x31d39: 0x6cf16620, 0x31d3a: 0x6ce8f620, 0x31d3b: 0x6ce8f820,\n\t0x31d3c: 0x6ce8fa20, 0x31d3d: 0x6cf00420, 0x31d3e: 0x6d18aa20, 0x31d3f: 0x6d18ac20,\n\t// Block 0xc75, offset 0x31d40\n\t0x31d40: 0x6ce8fc20, 0x31d41: 0x6d479e20, 0x31d42: 0x6d47a020, 0x31d43: 0x6d47a220,\n\t0x31d44: 0x6d47a420, 0x31d45: 0x6d47a620, 0x31d46: 0x6d47a820, 0x31d47: 0x6d47aa20,\n\t0x31d48: 0x6d47ac20, 0x31d49: 0x6d47ae20, 0x31d4a: 0x6d49c820, 0x31d4b: 0x6d75dc20,\n\t0x31d4c: 0x6d75de20, 0x31d4d: 0x6d75e020, 0x31d4e: 0x6d75e220, 0x31d4f: 0x6d75e420,\n\t0x31d50: 0x6d75e620, 0x31d51: 0x6d75e820, 0x31d52: 0x6d75ea20, 0x31d53: 0x6d790e20,\n\t0x31d54: 0x6d75ec20, 0x31d55: 0x6d791020, 0x31d56: 0x6d75ee20, 0x31d57: 0x6d75f020,\n\t0x31d58: 0x6d75f220, 0x31d59: 0x6da20a20, 0x31d5a: 0x6dc24820, 0x31d5b: 0x6dc70c20,\n\t0x31d5c: 0x6ddfee20, 0x31d5d: 0x6de00a20, 0x31d5e: 0x6e0c3c20, 0x31d5f: 0x6e318620,\n\t0x31d60: 0x6e428220, 0x31d61: 0x6e442020, 0x31d62: 0x6c008220, 0x31d63: 0x6c014020,\n\t0x31d64: 0x6c014220, 0x31d65: 0x6c014420, 0x31d66: 0x6c02be20, 0x31d67: 0x6c02c020,\n\t0x31d68: 0x6c02c220, 0x31d69: 0x6c05fc20, 0x31d6a: 0x6c05fe20, 0x31d6b: 0x6c060020,\n\t0x31d6c: 0x6c060220, 0x31d6d: 0x6c060420, 0x31d6e: 0x6c06ac20, 0x31d6f: 0x6c060620,\n\t0x31d70: 0x6c060820, 0x31d71: 0x6c06d820, 0x31d72: 0x6c08d020, 0x31d73: 0x6c060a20,\n\t0x31d74: 0x6c0bfa20, 0x31d75: 0x6c0bfc20, 0x31d76: 0x6c0bfe20, 0x31d77: 0x6c0c0020,\n\t0x31d78: 0x6c0c0220, 0x31d79: 0x6c0c0420, 0x31d7a: 0x6c0c0620, 0x31d7b: 0x6c0c0820,\n\t0x31d7c: 0x6c0c0a20, 0x31d7d: 0x6c0c0c20, 0x31d7e: 0x6c0c0e20, 0x31d7f: 0x6c0c1020,\n\t// Block 0xc76, offset 0x31d80\n\t0x31d80: 0x6c0c1220, 0x31d81: 0x6c0c1420, 0x31d82: 0x6c0c1620, 0x31d83: 0x6c0c1820,\n\t0x31d84: 0x6c0c1a20, 0x31d85: 0x6c0c1c20, 0x31d86: 0x6c0c1e20, 0x31d87: 0x6c0c2020,\n\t0x31d88: 0x6c0c2220, 0x31d89: 0x6c0c2420, 0x31d8a: 0x6c0c2620, 0x31d8b: 0x6c0c2820,\n\t0x31d8c: 0x6c0c2a20, 0x31d8d: 0x6c0c2c20, 0x31d8e: 0x6c0c2e20, 0x31d8f: 0x6c0c3020,\n\t0x31d90: 0x6c0c3220, 0x31d91: 0x6c0c3420, 0x31d92: 0x6c0c5e20, 0x31d93: 0x6c0c3620,\n\t0x31d94: 0x6c0c3820, 0x31d95: 0x6c0c3a20, 0x31d96: 0x6c16ca20, 0x31d97: 0x6c16cc20,\n\t0x31d98: 0x6c16ce20, 0x31d99: 0x6c16d020, 0x31d9a: 0x6c16d220, 0x31d9b: 0x6c16d420,\n\t0x31d9c: 0x6c16d620, 0x31d9d: 0x6c16d820, 0x31d9e: 0x6c16da20, 0x31d9f: 0x6c16dc20,\n\t0x31da0: 0x6c16de20, 0x31da1: 0x6c16e020, 0x31da2: 0x6c16e220, 0x31da3: 0x6c16e420,\n\t0x31da4: 0x6c16e620, 0x31da5: 0x6c16e820, 0x31da6: 0x6c16ea20, 0x31da7: 0x6c16ec20,\n\t0x31da8: 0x6c16ee20, 0x31da9: 0x6c16f020, 0x31daa: 0x6c16f220, 0x31dab: 0x6c16f420,\n\t0x31dac: 0x6c16f620, 0x31dad: 0x6c16f820, 0x31dae: 0x6c16fa20, 0x31daf: 0x6c16fc20,\n\t0x31db0: 0x6c16fe20, 0x31db1: 0x6c170020, 0x31db2: 0x6c170220, 0x31db3: 0x6c170420,\n\t0x31db4: 0x6c170620, 0x31db5: 0x6c170820, 0x31db6: 0x6c170a20, 0x31db7: 0x6c170c20,\n\t0x31db8: 0x6c170e20, 0x31db9: 0x6c171020, 0x31dba: 0x6c171220, 0x31dbb: 0x6c171420,\n\t0x31dbc: 0x6c171620, 0x31dbd: 0x6c171820, 0x31dbe: 0x6c171a20, 0x31dbf: 0x6c171c20,\n\t// Block 0xc77, offset 0x31dc0\n\t0x31dc0: 0x6c171e20, 0x31dc1: 0x6c172020, 0x31dc2: 0x6c19c820, 0x31dc3: 0x6c29ca20,\n\t0x31dc4: 0x6c29cc20, 0x31dc5: 0x6c29ce20, 0x31dc6: 0x6c29d020, 0x31dc7: 0x6c29d220,\n\t0x31dc8: 0x6c29d420, 0x31dc9: 0x6c29d620, 0x31dca: 0x6c29d820, 0x31dcb: 0x6c29da20,\n\t0x31dcc: 0x6c29dc20, 0x31dcd: 0x6c29de20, 0x31dce: 0x6c29e020, 0x31dcf: 0x6c29e220,\n\t0x31dd0: 0x6c29e420, 0x31dd1: 0x6c29e620, 0x31dd2: 0x6c29e820, 0x31dd3: 0x6c29ea20,\n\t0x31dd4: 0x6c29ec20, 0x31dd5: 0x6c29ee20, 0x31dd6: 0x6c29f020, 0x31dd7: 0x6c29f220,\n\t0x31dd8: 0x6c29f420, 0x31dd9: 0x6c29f620, 0x31dda: 0x6c29f820, 0x31ddb: 0x6c29fa20,\n\t0x31ddc: 0x6c29fc20, 0x31ddd: 0x6c29fe20, 0x31dde: 0x6c2a0020, 0x31ddf: 0x6c2a0220,\n\t0x31de0: 0x6c2a0420, 0x31de1: 0x6c2a0620, 0x31de2: 0x6c2a0820, 0x31de3: 0x6c2a0a20,\n\t0x31de4: 0x6c305c20, 0x31de5: 0x6c2a0c20, 0x31de6: 0x6c2a0e20, 0x31de7: 0x6c2a1020,\n\t0x31de8: 0x6c2a1220, 0x31de9: 0x6c2a1420, 0x31dea: 0x6c2a1620, 0x31deb: 0x6c2a1820,\n\t0x31dec: 0x6c2a1a20, 0x31ded: 0x6c43de20, 0x31dee: 0x6c43e020, 0x31def: 0x6c43e220,\n\t0x31df0: 0x6c43e420, 0x31df1: 0x6c43e620, 0x31df2: 0x6c43e820, 0x31df3: 0x6c43ea20,\n\t0x31df4: 0x6c43ec20, 0x31df5: 0x6c43ee20, 0x31df6: 0x6c43f020, 0x31df7: 0x6c43f220,\n\t0x31df8: 0x6c43f420, 0x31df9: 0x6c43f620, 0x31dfa: 0x6c43f820, 0x31dfb: 0x6c43fa20,\n\t0x31dfc: 0x6c43fc20, 0x31dfd: 0x6c43fe20, 0x31dfe: 0x6c440020, 0x31dff: 0x6c440220,\n\t// Block 0xc78, offset 0x31e00\n\t0x31e00: 0x6c440420, 0x31e01: 0x6c440620, 0x31e02: 0x6c440820, 0x31e03: 0x6c440a20,\n\t0x31e04: 0x6c440c20, 0x31e05: 0x6c440e20, 0x31e06: 0x6c441020, 0x31e07: 0x6c441220,\n\t0x31e08: 0x6c441420, 0x31e09: 0x6c441620, 0x31e0a: 0x6c441820, 0x31e0b: 0x6c441a20,\n\t0x31e0c: 0x6c441c20, 0x31e0d: 0x6c441e20, 0x31e0e: 0x6c442020, 0x31e0f: 0x6c442220,\n\t0x31e10: 0x6c442420, 0x31e11: 0x6c442620, 0x31e12: 0x6c442820, 0x31e13: 0x6c442a20,\n\t0x31e14: 0x6c442c20, 0x31e15: 0x6c442e20, 0x31e16: 0x6c443020, 0x31e17: 0x6c443220,\n\t0x31e18: 0x6c443420, 0x31e19: 0x6c443620, 0x31e1a: 0x6c443820, 0x31e1b: 0x6c443a20,\n\t0x31e1c: 0x6c443c20, 0x31e1d: 0x6c443e20, 0x31e1e: 0x6c444020, 0x31e1f: 0x6c444220,\n\t0x31e20: 0x6c444420, 0x31e21: 0x6c444620, 0x31e22: 0x6c444820, 0x31e23: 0x6c64d220,\n\t0x31e24: 0x6c64d420, 0x31e25: 0x6c64d620, 0x31e26: 0x6c64d820, 0x31e27: 0x6c64da20,\n\t0x31e28: 0x6c64dc20, 0x31e29: 0x6c64de20, 0x31e2a: 0x6c64e020, 0x31e2b: 0x6c64e220,\n\t0x31e2c: 0x6c64e420, 0x31e2d: 0x6c64e620, 0x31e2e: 0x6c64e820, 0x31e2f: 0x6c64ea20,\n\t0x31e30: 0x6c64ec20, 0x31e31: 0x6c64ee20, 0x31e32: 0x6c64f020, 0x31e33: 0x6c64f220,\n\t0x31e34: 0x6c64f420, 0x31e35: 0x6c64f620, 0x31e36: 0x6c64f820, 0x31e37: 0x6c64fa20,\n\t0x31e38: 0x6c64fc20, 0x31e39: 0x6c64fe20, 0x31e3a: 0x6c650020, 0x31e3b: 0x6c650220,\n\t0x31e3c: 0x6c650420, 0x31e3d: 0x6c650620, 0x31e3e: 0x6c650820, 0x31e3f: 0x6c650a20,\n\t// Block 0xc79, offset 0x31e40\n\t0x31e40: 0x6c650c20, 0x31e41: 0x6c650e20, 0x31e42: 0x6c651020, 0x31e43: 0x6c651220,\n\t0x31e44: 0x6c651420, 0x31e45: 0x6c651620, 0x31e46: 0x6c651820, 0x31e47: 0x6c651a20,\n\t0x31e48: 0x6c651c20, 0x31e49: 0x6c651e20, 0x31e4a: 0x6c652020, 0x31e4b: 0x6c652220,\n\t0x31e4c: 0x6c652420, 0x31e4d: 0x6c652620, 0x31e4e: 0x6c652820, 0x31e4f: 0x6c652a20,\n\t0x31e50: 0x6c652c20, 0x31e51: 0x6c652e20, 0x31e52: 0x6c653020, 0x31e53: 0x6c653220,\n\t0x31e54: 0x6c653420, 0x31e55: 0x6c653620, 0x31e56: 0x6c653820, 0x31e57: 0x6c653a20,\n\t0x31e58: 0x6c653c20, 0x31e59: 0x6c653e20, 0x31e5a: 0x6c654020, 0x31e5b: 0x6c654220,\n\t0x31e5c: 0x6c654420, 0x31e5d: 0x6c654620, 0x31e5e: 0x6c654820, 0x31e5f: 0x6c654a20,\n\t0x31e60: 0x6c654c20, 0x31e61: 0x6c654e20, 0x31e62: 0x6c655020, 0x31e63: 0x6c655220,\n\t0x31e64: 0x6c655420, 0x31e65: 0x6c655620, 0x31e66: 0x6c655820, 0x31e67: 0x6c8bc620,\n\t0x31e68: 0x6c8bc820, 0x31e69: 0x6c8bca20, 0x31e6a: 0x6c8bcc20, 0x31e6b: 0x6c8bce20,\n\t0x31e6c: 0x6c8bd020, 0x31e6d: 0x6c8bd220, 0x31e6e: 0x6c8bd420, 0x31e6f: 0x6c8bd620,\n\t0x31e70: 0x6c8bd820, 0x31e71: 0x6c8bda20, 0x31e72: 0x6c8bdc20, 0x31e73: 0x6c8bde20,\n\t0x31e74: 0x6c8be020, 0x31e75: 0x6c8be220, 0x31e76: 0x6c8be420, 0x31e77: 0x6c8be620,\n\t0x31e78: 0x6c8be820, 0x31e79: 0x6c8bea20, 0x31e7a: 0x6c8bec20, 0x31e7b: 0x6c8bee20,\n\t0x31e7c: 0x6c8bf020, 0x31e7d: 0x6c8bf220, 0x31e7e: 0x6c8bf420, 0x31e7f: 0x6c8bf620,\n\t// Block 0xc7a, offset 0x31e80\n\t0x31e80: 0x6c8bf820, 0x31e81: 0x6c8bfa20, 0x31e82: 0x6c8bfc20, 0x31e83: 0x6c8bfe20,\n\t0x31e84: 0x6c8c0020, 0x31e85: 0x6c8c0220, 0x31e86: 0x6c8c0420, 0x31e87: 0x6c8c0620,\n\t0x31e88: 0x6c8c0820, 0x31e89: 0x6c8c0a20, 0x31e8a: 0x6c8c0c20, 0x31e8b: 0x6c8c0e20,\n\t0x31e8c: 0x6c8c1020, 0x31e8d: 0x6c8c1220, 0x31e8e: 0x6c8c1420, 0x31e8f: 0x6c8c1620,\n\t0x31e90: 0x6c8c1820, 0x31e91: 0x6c428e20, 0x31e92: 0x6c8c1a20, 0x31e93: 0x6c8c1c20,\n\t0x31e94: 0x6c8c1e20, 0x31e95: 0x6c8c2020, 0x31e96: 0x6c8c2220, 0x31e97: 0x6c8c2420,\n\t0x31e98: 0x6c8c2620, 0x31e99: 0x6c8c2820, 0x31e9a: 0x6c8c2a20, 0x31e9b: 0x6c8c2c20,\n\t0x31e9c: 0x6c8c2e20, 0x31e9d: 0x6c8c3020, 0x31e9e: 0x6c8c3220, 0x31e9f: 0x6c655a20,\n\t0x31ea0: 0x6c8c3420, 0x31ea1: 0x6c8c3620, 0x31ea2: 0x6c8c3820, 0x31ea3: 0x6c8c3a20,\n\t0x31ea4: 0x6c8c3c20, 0x31ea5: 0x6c8c3e20, 0x31ea6: 0x6c8c4020, 0x31ea7: 0x6c8c4220,\n\t0x31ea8: 0x6c8c4420, 0x31ea9: 0x6c8c4620, 0x31eaa: 0x6c8c4820, 0x31eab: 0x6c8c4a20,\n\t0x31eac: 0x6c8c4c20, 0x31ead: 0x6cb83e20, 0x31eae: 0x6cb84020, 0x31eaf: 0x6cb84220,\n\t0x31eb0: 0x6cb84420, 0x31eb1: 0x6cb84620, 0x31eb2: 0x6cb84820, 0x31eb3: 0x6cb84a20,\n\t0x31eb4: 0x6cb84c20, 0x31eb5: 0x6cb84e20, 0x31eb6: 0x6cb85020, 0x31eb7: 0x6cb85220,\n\t0x31eb8: 0x6cb85420, 0x31eb9: 0x6cb85620, 0x31eba: 0x6cb85820, 0x31ebb: 0x6cb85a20,\n\t0x31ebc: 0x6cb85c20, 0x31ebd: 0x6cb85e20, 0x31ebe: 0x6cb86020, 0x31ebf: 0x6cb86220,\n\t// Block 0xc7b, offset 0x31ec0\n\t0x31ec0: 0x6cb86420, 0x31ec1: 0x6cb86620, 0x31ec2: 0x6cb86820, 0x31ec3: 0x6cb86a20,\n\t0x31ec4: 0x6cb86c20, 0x31ec5: 0x6cb86e20, 0x31ec6: 0x6cb8d620, 0x31ec7: 0x6cb87020,\n\t0x31ec8: 0x6cb87220, 0x31ec9: 0x6cb87420, 0x31eca: 0x6cb87620, 0x31ecb: 0x6cb87820,\n\t0x31ecc: 0x6cb87a20, 0x31ecd: 0x6cb87c20, 0x31ece: 0x6cb87e20, 0x31ecf: 0x6cb88020,\n\t0x31ed0: 0x6cb88220, 0x31ed1: 0x6cb88420, 0x31ed2: 0x6cb88620, 0x31ed3: 0x6cb88820,\n\t0x31ed4: 0x6cb88a20, 0x31ed5: 0x6cb88c20, 0x31ed6: 0x6cb88e20, 0x31ed7: 0x6cb89020,\n\t0x31ed8: 0x6cb89220, 0x31ed9: 0x6cb89420, 0x31eda: 0x6cb89620, 0x31edb: 0x6cb89820,\n\t0x31edc: 0x6cb89a20, 0x31edd: 0x6cb89c20, 0x31ede: 0x6cbd9420, 0x31edf: 0x6cd2ce20,\n\t0x31ee0: 0x6cb89e20, 0x31ee1: 0x6cb8a020, 0x31ee2: 0x6cb8a220, 0x31ee3: 0x6cb8a420,\n\t0x31ee4: 0x6cb8a620, 0x31ee5: 0x6cb8a820, 0x31ee6: 0x6cb8aa20, 0x31ee7: 0x6cb8ac20,\n\t0x31ee8: 0x6cb8ae20, 0x31ee9: 0x6cb8b020, 0x31eea: 0x6ca52820, 0x31eeb: 0x6ce95420,\n\t0x31eec: 0x6ce95620, 0x31eed: 0x6ce95820, 0x31eee: 0x6ce95a20, 0x31eef: 0x6ce95c20,\n\t0x31ef0: 0x6ce95e20, 0x31ef1: 0x6ce96020, 0x31ef2: 0x6ce96220, 0x31ef3: 0x6ce96420,\n\t0x31ef4: 0x6ce96620, 0x31ef5: 0x6ce96820, 0x31ef6: 0x6ce96a20, 0x31ef7: 0x6ce96c20,\n\t0x31ef8: 0x6ce96e20, 0x31ef9: 0x6ce97020, 0x31efa: 0x6ce97220, 0x31efb: 0x6ce97420,\n\t0x31efc: 0x6ce97620, 0x31efd: 0x6ce97820, 0x31efe: 0x6ce97a20, 0x31eff: 0x6ce97c20,\n\t// Block 0xc7c, offset 0x31f00\n\t0x31f00: 0x6ce97e20, 0x31f01: 0x6ce98020, 0x31f02: 0x6ce98220, 0x31f03: 0x6ce98420,\n\t0x31f04: 0x6ce98620, 0x31f05: 0x6ce98820, 0x31f06: 0x6ce98a20, 0x31f07: 0x6ce98c20,\n\t0x31f08: 0x6ce98e20, 0x31f09: 0x6ce99020, 0x31f0a: 0x6ce99220, 0x31f0b: 0x6ce99420,\n\t0x31f0c: 0x6ce99620, 0x31f0d: 0x6ce99820, 0x31f0e: 0x6ce99a20, 0x31f0f: 0x6ce99c20,\n\t0x31f10: 0x6ce99e20, 0x31f11: 0x6ce9a020, 0x31f12: 0x6ce9a220, 0x31f13: 0x6ce9a420,\n\t0x31f14: 0x6ce9a620, 0x31f15: 0x6ce9a820, 0x31f16: 0x6ce9aa20, 0x31f17: 0x6ce9ac20,\n\t0x31f18: 0x6ce9ae20, 0x31f19: 0x6ce9b020, 0x31f1a: 0x6ce9b220, 0x31f1b: 0x6ce9b420,\n\t0x31f1c: 0x6ce9b620, 0x31f1d: 0x6ce9b820, 0x31f1e: 0x6ce9ba20, 0x31f1f: 0x6ce9bc20,\n\t0x31f20: 0x6ce9be20, 0x31f21: 0x6ce9c020, 0x31f22: 0x6d01fc20, 0x31f23: 0x6ce9c220,\n\t0x31f24: 0x6ce9c420, 0x31f25: 0x6d191a20, 0x31f26: 0x6ce9c620, 0x31f27: 0x6ce9c820,\n\t0x31f28: 0x6ce9ca20, 0x31f29: 0x6ce9cc20, 0x31f2a: 0x6ce9ce20, 0x31f2b: 0x6ce9d020,\n\t0x31f2c: 0x6ce9d220, 0x31f2d: 0x6d191c20, 0x31f2e: 0x6d191e20, 0x31f2f: 0x6d192020,\n\t0x31f30: 0x6d192220, 0x31f31: 0x6d192420, 0x31f32: 0x6d192620, 0x31f33: 0x6d192820,\n\t0x31f34: 0x6d192a20, 0x31f35: 0x6d192c20, 0x31f36: 0x6d192e20, 0x31f37: 0x6d193020,\n\t0x31f38: 0x6d193220, 0x31f39: 0x6d193420, 0x31f3a: 0x6d193620, 0x31f3b: 0x6d193820,\n\t0x31f3c: 0x6d193a20, 0x31f3d: 0x6d193c20, 0x31f3e: 0x6d193e20, 0x31f3f: 0x6d194020,\n\t// Block 0xc7d, offset 0x31f40\n\t0x31f40: 0x6d194220, 0x31f41: 0x6d194420, 0x31f42: 0x6d194620, 0x31f43: 0x6d194820,\n\t0x31f44: 0x6d194a20, 0x31f45: 0x6d194c20, 0x31f46: 0x6d194e20, 0x31f47: 0x6d195020,\n\t0x31f48: 0x6d195220, 0x31f49: 0x6d195420, 0x31f4a: 0x6d195620, 0x31f4b: 0x6d195820,\n\t0x31f4c: 0x6d195a20, 0x31f4d: 0x6d195c20, 0x31f4e: 0x6d195e20, 0x31f4f: 0x6d196020,\n\t0x31f50: 0x6d196220, 0x31f51: 0x6d196420, 0x31f52: 0x6d196620, 0x31f53: 0x6d196820,\n\t0x31f54: 0x6d196a20, 0x31f55: 0x6d196c20, 0x31f56: 0x6d196e20, 0x31f57: 0x6d197020,\n\t0x31f58: 0x6d311420, 0x31f59: 0x6d197220, 0x31f5a: 0x6d197420, 0x31f5b: 0x6d2bee20,\n\t0x31f5c: 0x6e0bec20, 0x31f5d: 0x6d197620, 0x31f5e: 0x6d197820, 0x31f5f: 0x6d197a20,\n\t0x31f60: 0x6d197c20, 0x31f61: 0x6d197e20, 0x31f62: 0x6d198020, 0x31f63: 0x6d198220,\n\t0x31f64: 0x6d198420, 0x31f65: 0x6d198620, 0x31f66: 0x6d198820, 0x31f67: 0x6d198a20,\n\t0x31f68: 0x6d198c20, 0x31f69: 0x6d198e20, 0x31f6a: 0x6d199020, 0x31f6b: 0x6d199220,\n\t0x31f6c: 0x6d199420, 0x31f6d: 0x6d199620, 0x31f6e: 0x6d199820, 0x31f6f: 0x6d199a20,\n\t0x31f70: 0x6d199c20, 0x31f71: 0x6d199e20, 0x31f72: 0x6d19a020, 0x31f73: 0x6d19a220,\n\t0x31f74: 0x6d19a420, 0x31f75: 0x6ce9d420, 0x31f76: 0x6d234020, 0x31f77: 0x6d47f620,\n\t0x31f78: 0x6d47f820, 0x31f79: 0x6d47fa20, 0x31f7a: 0x6d47fc20, 0x31f7b: 0x6d47fe20,\n\t0x31f7c: 0x6d480020, 0x31f7d: 0x6d480220, 0x31f7e: 0x6d480420, 0x31f7f: 0x6d480620,\n\t// Block 0xc7e, offset 0x31f80\n\t0x31f80: 0x6d480820, 0x31f81: 0x6d480a20, 0x31f82: 0x6d480c20, 0x31f83: 0x6d480e20,\n\t0x31f84: 0x6d481020, 0x31f85: 0x6d481220, 0x31f86: 0x6d481420, 0x31f87: 0x6d481620,\n\t0x31f88: 0x6d481820, 0x31f89: 0x6d481a20, 0x31f8a: 0x6d481c20, 0x31f8b: 0x6d481e20,\n\t0x31f8c: 0x6d482020, 0x31f8d: 0x6d482220, 0x31f8e: 0x6d482420, 0x31f8f: 0x6d482620,\n\t0x31f90: 0x6d19a620, 0x31f91: 0x6d482820, 0x31f92: 0x6d761c20, 0x31f93: 0x6d49ca20,\n\t0x31f94: 0x6d482a20, 0x31f95: 0x6d482c20, 0x31f96: 0x6d482e20, 0x31f97: 0x6d483020,\n\t0x31f98: 0x6d483220, 0x31f99: 0x6d483420, 0x31f9a: 0x6d483620, 0x31f9b: 0x6d483820,\n\t0x31f9c: 0x6d483a20, 0x31f9d: 0x6d483c20, 0x31f9e: 0x6d483e20, 0x31f9f: 0x6d484020,\n\t0x31fa0: 0x6d484220, 0x31fa1: 0x6d484420, 0x31fa2: 0x6d484620, 0x31fa3: 0x6d484820,\n\t0x31fa4: 0x6d484a20, 0x31fa5: 0x6d484c20, 0x31fa6: 0x6d484e20, 0x31fa7: 0x6d49cc20,\n\t0x31fa8: 0x6d761e20, 0x31fa9: 0x6d762020, 0x31faa: 0x6d762220, 0x31fab: 0x6d762420,\n\t0x31fac: 0x6d762620, 0x31fad: 0x6d762820, 0x31fae: 0x6d762a20, 0x31faf: 0x6d762c20,\n\t0x31fb0: 0x6d762e20, 0x31fb1: 0x6d763020, 0x31fb2: 0x6d763220, 0x31fb3: 0x6d763420,\n\t0x31fb4: 0x6d763620, 0x31fb5: 0x6d763820, 0x31fb6: 0x6d763a20, 0x31fb7: 0x6d763c20,\n\t0x31fb8: 0x6d763e20, 0x31fb9: 0x6d764020, 0x31fba: 0x6d764220, 0x31fbb: 0x6d764420,\n\t0x31fbc: 0x6d764620, 0x31fbd: 0x6d764820, 0x31fbe: 0x6d764a20, 0x31fbf: 0x6d764c20,\n\t// Block 0xc7f, offset 0x31fc0\n\t0x31fc0: 0x6d764e20, 0x31fc1: 0x6d765020, 0x31fc2: 0x6d765220, 0x31fc3: 0x6d765420,\n\t0x31fc4: 0x6d765620, 0x31fc5: 0x6d765820, 0x31fc6: 0x6d765a20, 0x31fc7: 0x6d765c20,\n\t0x31fc8: 0x6d9fc820, 0x31fc9: 0x6d9fca20, 0x31fca: 0x6d9fcc20, 0x31fcb: 0x6d9fce20,\n\t0x31fcc: 0x6d9fd020, 0x31fcd: 0x6d9fd220, 0x31fce: 0x6d9fd420, 0x31fcf: 0x6d9fd620,\n\t0x31fd0: 0x6d9fd820, 0x31fd1: 0x6d9fda20, 0x31fd2: 0x6d9fdc20, 0x31fd3: 0x6d9fde20,\n\t0x31fd4: 0x6d9fe020, 0x31fd5: 0x6d9fe220, 0x31fd6: 0x6d9fe420, 0x31fd7: 0x6d9fe620,\n\t0x31fd8: 0x6d9fe820, 0x31fd9: 0x6d9fea20, 0x31fda: 0x6d9fec20, 0x31fdb: 0x6d9fee20,\n\t0x31fdc: 0x6db61c20, 0x31fdd: 0x6d9ff020, 0x31fde: 0x6d9ff220, 0x31fdf: 0x6d9ff420,\n\t0x31fe0: 0x6d9ff620, 0x31fe1: 0x6d9ff820, 0x31fe2: 0x6d9ffa20, 0x31fe3: 0x6dc25620,\n\t0x31fe4: 0x6dc25820, 0x31fe5: 0x6dc25a20, 0x31fe6: 0x6dc25c20, 0x31fe7: 0x6dc25e20,\n\t0x31fe8: 0x6dc26020, 0x31fe9: 0x6dc26220, 0x31fea: 0x6dc26420, 0x31feb: 0x6dc26620,\n\t0x31fec: 0x6dc26820, 0x31fed: 0x6dc26a20, 0x31fee: 0x6dc26c20, 0x31fef: 0x6dc26e20,\n\t0x31ff0: 0x6dc27020, 0x31ff1: 0x6dc27220, 0x31ff2: 0x6dc27420, 0x31ff3: 0x6dc27620,\n\t0x31ff4: 0x6dc27820, 0x31ff5: 0x6dc27a20, 0x31ff6: 0x6dc27c20, 0x31ff7: 0x6dc27e20,\n\t0x31ff8: 0x6dc28020, 0x31ff9: 0x6dc28220, 0x31ffa: 0x6dc28420, 0x31ffb: 0x6de01a20,\n\t0x31ffc: 0x6de01c20, 0x31ffd: 0x6de01e20, 0x31ffe: 0x6de02020, 0x31fff: 0x6de02220,\n\t// Block 0xc80, offset 0x32000\n\t0x32000: 0x6de02420, 0x32001: 0x6de02620, 0x32002: 0x6de5da20, 0x32003: 0x6de02820,\n\t0x32004: 0x6de02a20, 0x32005: 0x6de02c20, 0x32006: 0x6de02e20, 0x32007: 0x6de03020,\n\t0x32008: 0x6de03220, 0x32009: 0x6de03420, 0x3200a: 0x6de03620, 0x3200b: 0x6de03820,\n\t0x3200c: 0x6de03a20, 0x3200d: 0x6df87620, 0x3200e: 0x6df87820, 0x3200f: 0x6df87a20,\n\t0x32010: 0x6df87c20, 0x32011: 0x6df87e20, 0x32012: 0x6df88020, 0x32013: 0x6df88220,\n\t0x32014: 0x6df88420, 0x32015: 0x6df88620, 0x32016: 0x6df88820, 0x32017: 0x6e0c4a20,\n\t0x32018: 0x6e0c4c20, 0x32019: 0x6e0c4e20, 0x3201a: 0x6e0c5020, 0x3201b: 0x6e0c5220,\n\t0x3201c: 0x6e0c5420, 0x3201d: 0x6e0c5620, 0x3201e: 0x6df88a20, 0x3201f: 0x6e0c5820,\n\t0x32020: 0x6e0c5a20, 0x32021: 0x6e0c5c20, 0x32022: 0x6e0c5e20, 0x32023: 0x6e0c6020,\n\t0x32024: 0x6e1c0c20, 0x32025: 0x6e1c0e20, 0x32026: 0x6e1c1020, 0x32027: 0x6e1c1220,\n\t0x32028: 0x6e1c1420, 0x32029: 0x6e1c1620, 0x3202a: 0x6e284e20, 0x3202b: 0x6e285020,\n\t0x3202c: 0x6e285220, 0x3202d: 0x6e285420, 0x3202e: 0x6e285620, 0x3202f: 0x6e285820,\n\t0x32030: 0x6e318a20, 0x32031: 0x6e38ae20, 0x32032: 0x6e3ce420, 0x32033: 0x6e3ce620,\n\t0x32034: 0x6e446c20, 0x32035: 0x6e442220, 0x32036: 0x6c02cc20, 0x32037: 0x6c061020,\n\t0x32038: 0x6c061220, 0x32039: 0x6c0c5020, 0x3203a: 0x6c0c5220, 0x3203b: 0x6c0c5420,\n\t0x3203c: 0x6c0c5620, 0x3203d: 0x6c174220, 0x3203e: 0x6c174420, 0x3203f: 0x6c174620,\n\t// Block 0xc81, offset 0x32040\n\t0x32040: 0x6c174820, 0x32041: 0x6c174a20, 0x32042: 0x6c174c20, 0x32043: 0x6c2a3820,\n\t0x32044: 0x6c2a3a20, 0x32045: 0x6c2a3c20, 0x32046: 0x6c2a3e20, 0x32047: 0x6c2a4020,\n\t0x32048: 0x6c2a4220, 0x32049: 0x6c2a4420, 0x3204a: 0x6c2a4620, 0x3204b: 0x6c2a4820,\n\t0x3204c: 0x6c446020, 0x3204d: 0x6c446220, 0x3204e: 0x6c446420, 0x3204f: 0x6c446620,\n\t0x32050: 0x6c657620, 0x32051: 0x6c657820, 0x32052: 0x6c657a20, 0x32053: 0x6c657c20,\n\t0x32054: 0x6c657e20, 0x32055: 0x6c658020, 0x32056: 0x6c658220, 0x32057: 0x6c8c6e20,\n\t0x32058: 0x6c8c7020, 0x32059: 0x6c8c7220, 0x3205a: 0x6c8c7420, 0x3205b: 0x6c8c7620,\n\t0x3205c: 0x6c8c7820, 0x3205d: 0x6c8c7a20, 0x3205e: 0x6cb8ca20, 0x3205f: 0x6cb8cc20,\n\t0x32060: 0x6cb8ce20, 0x32061: 0x6cb8d020, 0x32062: 0x6cb8d220, 0x32063: 0x6cb8d420,\n\t0x32064: 0x6ce9e420, 0x32065: 0x6ce9e620, 0x32066: 0x6ce9e820, 0x32067: 0x6d19b820,\n\t0x32068: 0x6d19ba20, 0x32069: 0x6d19bc20, 0x3206a: 0x6d19be20, 0x3206b: 0x6d19c020,\n\t0x3206c: 0x6d19c220, 0x3206d: 0x6d19c420, 0x3206e: 0x6d19c620, 0x3206f: 0x6d19c820,\n\t0x32070: 0x6d485c20, 0x32071: 0x6d485e20, 0x32072: 0x6d486020, 0x32073: 0x6d766820,\n\t0x32074: 0x6d486220, 0x32075: 0x6d486420, 0x32076: 0x6d486620, 0x32077: 0x6d486820,\n\t0x32078: 0x6d766a20, 0x32079: 0x6d766c20, 0x3207a: 0x6d766e20, 0x3207b: 0x6d767020,\n\t0x3207c: 0x6d767220, 0x3207d: 0x6d767420, 0x3207e: 0x6d767620, 0x3207f: 0x6da00420,\n\t// Block 0xc82, offset 0x32080\n\t0x32080: 0x6da00620, 0x32081: 0x6da00820, 0x32082: 0x6da00a20, 0x32083: 0x6da00c20,\n\t0x32084: 0x6da00e20, 0x32085: 0x6da01020, 0x32086: 0x6dc28e20, 0x32087: 0x6da01220,\n\t0x32088: 0x6dc29020, 0x32089: 0x6dc29220, 0x3208a: 0x6dc29420, 0x3208b: 0x6de04220,\n\t0x3208c: 0x6de23820, 0x3208d: 0x6df88e20, 0x3208e: 0x6de04420, 0x3208f: 0x6df89020,\n\t0x32090: 0x6df89220, 0x32091: 0x6e0c6620, 0x32092: 0x6e0c6820, 0x32093: 0x6e1c1820,\n\t0x32094: 0x6e1c1a20, 0x32095: 0x6e285a20, 0x32096: 0x6e285c20, 0x32097: 0x6e318c20,\n\t0x32098: 0x6e318e20, 0x32099: 0x6e319020, 0x3209a: 0x6e3ce820, 0x3209b: 0x6c014a20,\n\t0x3209c: 0x6c02d020, 0x3209d: 0x6c02d220, 0x3209e: 0x6c02d420, 0x3209f: 0x6c061a20,\n\t0x320a0: 0x6c0c6020, 0x320a1: 0x6c0c6220, 0x320a2: 0x6c0c6420, 0x320a3: 0x6c0c6620,\n\t0x320a4: 0x6c175220, 0x320a5: 0x6c175420, 0x320a6: 0x6c175620, 0x320a7: 0x6c175820,\n\t0x320a8: 0x6c175a20, 0x320a9: 0x6c2a4e20, 0x320aa: 0x6c446e20, 0x320ab: 0x6c447020,\n\t0x320ac: 0x6c447220, 0x320ad: 0x6c658620, 0x320ae: 0x6c658820, 0x320af: 0x6c658a20,\n\t0x320b0: 0x6c658c20, 0x320b1: 0x6c8c7c20, 0x320b2: 0x6cb8d820, 0x320b3: 0x6cb8da20,\n\t0x320b4: 0x6ce9ec20, 0x320b5: 0x6ce9ee20, 0x320b6: 0x6ce9f020, 0x320b7: 0x6ce9f220,\n\t0x320b8: 0x6d19ca20, 0x320b9: 0x6d19cc20, 0x320ba: 0x6d19ce20, 0x320bb: 0x6d19d020,\n\t0x320bc: 0x6d767820, 0x320bd: 0x6da01420, 0x320be: 0x6dc29620, 0x320bf: 0x6df89420,\n\t// Block 0xc83, offset 0x320c0\n\t0x320c0: 0x6c014c20, 0x320c1: 0x6c02de20, 0x320c2: 0x6c02e020, 0x320c3: 0x6c02e220,\n\t0x320c4: 0x6c02e420, 0x320c5: 0x6c061e20, 0x320c6: 0x6c062020, 0x320c7: 0x6c020820,\n\t0x320c8: 0x6c0c7220, 0x320c9: 0x6c0c7420, 0x320ca: 0x6c176420, 0x320cb: 0x6c176620,\n\t0x320cc: 0x6c176820, 0x320cd: 0x6c176a20, 0x320ce: 0x6c176c20, 0x320cf: 0x6c176e20,\n\t0x320d0: 0x6c2a5620, 0x320d1: 0x6c2a5820, 0x320d2: 0x6c447a20, 0x320d3: 0x6c447c20,\n\t0x320d4: 0x6c447e20, 0x320d5: 0x6c448020, 0x320d6: 0x6c448220, 0x320d7: 0x6c448420,\n\t0x320d8: 0x6c4d0420, 0x320d9: 0x6c659420, 0x320da: 0x6c659620, 0x320db: 0x6c659820,\n\t0x320dc: 0x6c8c8020, 0x320dd: 0x6c8c8220, 0x320de: 0x6cb8dc20, 0x320df: 0x6cb8de20,\n\t0x320e0: 0x6cb8e020, 0x320e1: 0x6cb8e220, 0x320e2: 0x6cb8e420, 0x320e3: 0x6cb8e620,\n\t0x320e4: 0x6cb8e820, 0x320e5: 0x6cb8ea20, 0x320e6: 0x6cb8ec20, 0x320e7: 0x6cb8ee20,\n\t0x320e8: 0x6ce9f820, 0x320e9: 0x6ce9fa20, 0x320ea: 0x6ce9fc20, 0x320eb: 0x6ce9fe20,\n\t0x320ec: 0x6cea0020, 0x320ed: 0x6cea0220, 0x320ee: 0x6cea0420, 0x320ef: 0x6d19d220,\n\t0x320f0: 0x6d19d420, 0x320f1: 0x6d19d620, 0x320f2: 0x6d1b1620, 0x320f3: 0x6d767c20,\n\t0x320f4: 0x6d767e20, 0x320f5: 0x6d768020, 0x320f6: 0x6dc29a20, 0x320f7: 0x6dc29c20,\n\t0x320f8: 0x6de04820, 0x320f9: 0x6de04a20, 0x320fa: 0x6de04c20, 0x320fb: 0x6e474020,\n\t0x320fc: 0x6c014e20, 0x320fd: 0x6c02f220, 0x320fe: 0x6c02f420, 0x320ff: 0x6c02f620,\n\t// Block 0xc84, offset 0x32100\n\t0x32100: 0x6c02f820, 0x32101: 0x6c062a20, 0x32102: 0x6c062c20, 0x32103: 0x6c062e20,\n\t0x32104: 0x6c063020, 0x32105: 0x6c063220, 0x32106: 0x6c063420, 0x32107: 0x6c063620,\n\t0x32108: 0x6c063820, 0x32109: 0x6c063a20, 0x3210a: 0x6c063c20, 0x3210b: 0x6c0c7c20,\n\t0x3210c: 0x6c0c7e20, 0x3210d: 0x6c0c8020, 0x3210e: 0x6c0c8220, 0x3210f: 0x6c0c8420,\n\t0x32110: 0x6c177220, 0x32111: 0x6c177420, 0x32112: 0x6c177620, 0x32113: 0x6c177820,\n\t0x32114: 0x6c177a20, 0x32115: 0x6c177c20, 0x32116: 0x6c2a6020, 0x32117: 0x6c2a6220,\n\t0x32118: 0x6c2a6420, 0x32119: 0x6c2a6620, 0x3211a: 0x6c2a6820, 0x3211b: 0x6c448a20,\n\t0x3211c: 0x6c448c20, 0x3211d: 0x6c659e20, 0x3211e: 0x6c65a020, 0x3211f: 0x6c65a220,\n\t0x32120: 0x6c8c8a20, 0x32121: 0x6c8c8c20, 0x32122: 0x6c8c8e20, 0x32123: 0x6cb8f620,\n\t0x32124: 0x6cb8f820, 0x32125: 0x6cb8fa20, 0x32126: 0x6cea0a20, 0x32127: 0x6cea0c20,\n\t0x32128: 0x6d19dc20, 0x32129: 0x6d19de20, 0x3212a: 0x6d487220, 0x3212b: 0x6d227a20,\n\t0x3212c: 0x6d487420, 0x3212d: 0x6d768420, 0x3212e: 0x6d768620, 0x3212f: 0x6dc29e20,\n\t0x32130: 0x6dc2a020, 0x32131: 0x6df89820, 0x32132: 0x6e1c1e20, 0x32133: 0x6c030220,\n\t0x32134: 0x6c030420, 0x32135: 0x6c064220, 0x32136: 0x6c064420, 0x32137: 0x6c064620,\n\t0x32138: 0x6c064820, 0x32139: 0x6c0c8a20, 0x3213a: 0x6c0c8c20, 0x3213b: 0x6c0c8e20,\n\t0x3213c: 0x6c0c9020, 0x3213d: 0x6c0c9220, 0x3213e: 0x6c0c9420, 0x3213f: 0x6c0c9620,\n\t// Block 0xc85, offset 0x32140\n\t0x32140: 0x6c178220, 0x32141: 0x6c178420, 0x32142: 0x6c178620, 0x32143: 0x6c178820,\n\t0x32144: 0x6c2a6c20, 0x32145: 0x6c2a6e20, 0x32146: 0x6c2a7020, 0x32147: 0x6c449620,\n\t0x32148: 0x6c449820, 0x32149: 0x6c449a20, 0x3214a: 0x6c449c20, 0x3214b: 0x6c449e20,\n\t0x3214c: 0x6c65b220, 0x3214d: 0x6c65b420, 0x3214e: 0x6c65b620, 0x3214f: 0x6c65b820,\n\t0x32150: 0x6c65ba20, 0x32151: 0x6c65bc20, 0x32152: 0x6c65be20, 0x32153: 0x6c8c9220,\n\t0x32154: 0x6cb8fe20, 0x32155: 0x6cb90020, 0x32156: 0x6cb90220, 0x32157: 0x6cb90420,\n\t0x32158: 0x6cb90620, 0x32159: 0x6cb90820, 0x3215a: 0x6cea0e20, 0x3215b: 0x6cea1020,\n\t0x3215c: 0x6d19e220, 0x3215d: 0x6d19e420, 0x3215e: 0x6d19e620, 0x3215f: 0x6d30e420,\n\t0x32160: 0x6d768a20, 0x32161: 0x6d768c20, 0x32162: 0x6da01820, 0x32163: 0x6dc2a220,\n\t0x32164: 0x6dc2a420, 0x32165: 0x6dc2a620, 0x32166: 0x6df89a20, 0x32167: 0x6df89c20,\n\t0x32168: 0x6df89e20, 0x32169: 0x6e0c6a20, 0x3216a: 0x6e1c2020, 0x3216b: 0x6e285e20,\n\t0x3216c: 0x6c015020, 0x3216d: 0x6c030820, 0x3216e: 0x6c065220, 0x3216f: 0x6c065420,\n\t0x32170: 0x6c065620, 0x32171: 0x6c0ca620, 0x32172: 0x6c0ca820, 0x32173: 0x6c0caa20,\n\t0x32174: 0x6c0cac20, 0x32175: 0x6c0cae20, 0x32176: 0x6c0cb020, 0x32177: 0x6c179e20,\n\t0x32178: 0x6c17a020, 0x32179: 0x6c17a220, 0x3217a: 0x6c17a420, 0x3217b: 0x6c17a620,\n\t0x3217c: 0x6c17a820, 0x3217d: 0x6c17aa20, 0x3217e: 0x6c17ac20, 0x3217f: 0x6c17ae20,\n\t// Block 0xc86, offset 0x32180\n\t0x32180: 0x6c2a8820, 0x32181: 0x6c17b020, 0x32182: 0x6c2a8a20, 0x32183: 0x6c2a8c20,\n\t0x32184: 0x6c2a8e20, 0x32185: 0x6c2a9020, 0x32186: 0x6c2a9220, 0x32187: 0x6c2a9420,\n\t0x32188: 0x6c44aa20, 0x32189: 0x6c44ac20, 0x3218a: 0x6c44ae20, 0x3218b: 0x6c44b020,\n\t0x3218c: 0x6c44b220, 0x3218d: 0x6c44b420, 0x3218e: 0x6c44b620, 0x3218f: 0x6c44b820,\n\t0x32190: 0x6c44ba20, 0x32191: 0x6c44bc20, 0x32192: 0x6c44be20, 0x32193: 0x6c44c020,\n\t0x32194: 0x6c44c220, 0x32195: 0x6c44c420, 0x32196: 0x6c44c620, 0x32197: 0x6c44c820,\n\t0x32198: 0x6c65de20, 0x32199: 0x6c65e020, 0x3219a: 0x6c65e220, 0x3219b: 0x6c65e420,\n\t0x3219c: 0x6c65e620, 0x3219d: 0x6c65e820, 0x3219e: 0x6c65ea20, 0x3219f: 0x6c65ec20,\n\t0x321a0: 0x6c65ee20, 0x321a1: 0x6c65f020, 0x321a2: 0x6c65f220, 0x321a3: 0x6c65f420,\n\t0x321a4: 0x6c65f620, 0x321a5: 0x6c8c9e20, 0x321a6: 0x6c8ca020, 0x321a7: 0x6c8ca220,\n\t0x321a8: 0x6c8ca420, 0x321a9: 0x6c8ca620, 0x321aa: 0x6c8ca820, 0x321ab: 0x6c8caa20,\n\t0x321ac: 0x6c8cac20, 0x321ad: 0x6c8cae20, 0x321ae: 0x6c8cb020, 0x321af: 0x6c8cb220,\n\t0x321b0: 0x6c8cb420, 0x321b1: 0x6cb91a20, 0x321b2: 0x6cb91c20, 0x321b3: 0x6cb91e20,\n\t0x321b4: 0x6cb92020, 0x321b5: 0x6cb92220, 0x321b6: 0x6cb92420, 0x321b7: 0x6cb92620,\n\t0x321b8: 0x6cb92820, 0x321b9: 0x6cb92a20, 0x321ba: 0x6cea1620, 0x321bb: 0x6cea1820,\n\t0x321bc: 0x6cea1a20, 0x321bd: 0x6cea1c20, 0x321be: 0x6cea1e20, 0x321bf: 0x6cea2020,\n\t// Block 0xc87, offset 0x321c0\n\t0x321c0: 0x6cea2220, 0x321c1: 0x6cea2420, 0x321c2: 0x6cea2620, 0x321c3: 0x6cea2820,\n\t0x321c4: 0x6d19ee20, 0x321c5: 0x6d19f020, 0x321c6: 0x6d19f220, 0x321c7: 0x6d19f420,\n\t0x321c8: 0x6d19f620, 0x321c9: 0x6d19f820, 0x321ca: 0x6d488020, 0x321cb: 0x6d488220,\n\t0x321cc: 0x6d488420, 0x321cd: 0x6d488620, 0x321ce: 0x6d488820, 0x321cf: 0x6d488a20,\n\t0x321d0: 0x6d488c20, 0x321d1: 0x6d488e20, 0x321d2: 0x6d769220, 0x321d3: 0x6d19fa20,\n\t0x321d4: 0x6d769420, 0x321d5: 0x6d769620, 0x321d6: 0x6da01c20, 0x321d7: 0x6da01e20,\n\t0x321d8: 0x6da02020, 0x321d9: 0x6da02220, 0x321da: 0x6da02420, 0x321db: 0x6da02620,\n\t0x321dc: 0x6da02820, 0x321dd: 0x6dc2a820, 0x321de: 0x6dc2aa20, 0x321df: 0x6dc2ac20,\n\t0x321e0: 0x6dc2ae20, 0x321e1: 0x6dc2b020, 0x321e2: 0x6de04e20, 0x321e3: 0x6de05020,\n\t0x321e4: 0x6e0c6c20, 0x321e5: 0x6e1c2220, 0x321e6: 0x6e3cea20, 0x321e7: 0x6c009620,\n\t0x321e8: 0x6c009820, 0x321e9: 0x6c030c20, 0x321ea: 0x6c030e20, 0x321eb: 0x6c031020,\n\t0x321ec: 0x6c031220, 0x321ed: 0x6c031420, 0x321ee: 0x6c031620, 0x321ef: 0x6c031820,\n\t0x321f0: 0x6c031a20, 0x321f1: 0x6c066020, 0x321f2: 0x6c066220, 0x321f3: 0x6c066420,\n\t0x321f4: 0x6c066620, 0x321f5: 0x6c0cc220, 0x321f6: 0x6c0cc420, 0x321f7: 0x6c0cc620,\n\t0x321f8: 0x6c0cc820, 0x321f9: 0x6c0cca20, 0x321fa: 0x6c0ccc20, 0x321fb: 0x6c0cce20,\n\t0x321fc: 0x6c17ba20, 0x321fd: 0x6c17bc20, 0x321fe: 0x6c17be20, 0x321ff: 0x6c17c020,\n\t// Block 0xc88, offset 0x32200\n\t0x32200: 0x6c17c220, 0x32201: 0x6c17c420, 0x32202: 0x6c17c620, 0x32203: 0x6c17c820,\n\t0x32204: 0x6c17ca20, 0x32205: 0x6c17cc20, 0x32206: 0x6c2a9e20, 0x32207: 0x6c2aa020,\n\t0x32208: 0x6c2aa220, 0x32209: 0x6c2aa420, 0x3220a: 0x6c2aa620, 0x3220b: 0x6c2aa820,\n\t0x3220c: 0x6c2aaa20, 0x3220d: 0x6c2aac20, 0x3220e: 0x6c2aae20, 0x3220f: 0x6c44d220,\n\t0x32210: 0x6c44d420, 0x32211: 0x6c44d620, 0x32212: 0x6c660020, 0x32213: 0x6c660220,\n\t0x32214: 0x6c660420, 0x32215: 0x6c660620, 0x32216: 0x6c660820, 0x32217: 0x6c6de220,\n\t0x32218: 0x6c8cc220, 0x32219: 0x6c8cc420, 0x3221a: 0x6c916e20, 0x3221b: 0x6c8cc620,\n\t0x3221c: 0x6c8cc820, 0x3221d: 0x6c8cca20, 0x3221e: 0x6c8ccc20, 0x3221f: 0x6cb93620,\n\t0x32220: 0x6cb93820, 0x32221: 0x6cb93a20, 0x32222: 0x6cb93c20, 0x32223: 0x6cb93e20,\n\t0x32224: 0x6cea2e20, 0x32225: 0x6cea3020, 0x32226: 0x6cea3220, 0x32227: 0x6cea3420,\n\t0x32228: 0x6d1a0220, 0x32229: 0x6d1a0420, 0x3222a: 0x6d1a0620, 0x3222b: 0x6d489220,\n\t0x3222c: 0x6d717420, 0x3222d: 0x6d769a20, 0x3222e: 0x6d769c20, 0x3222f: 0x6d769e20,\n\t0x32230: 0x6d76a020, 0x32231: 0x6da02c20, 0x32232: 0x6df8a220, 0x32233: 0x6e0c6e20,\n\t0x32234: 0x6c009c20, 0x32235: 0x6c015820, 0x32236: 0x6c031e20, 0x32237: 0x6c032020,\n\t0x32238: 0x6c032220, 0x32239: 0x6c067220, 0x3223a: 0x6c067420, 0x3223b: 0x6c067620,\n\t0x3223c: 0x6c076c20, 0x3223d: 0x6c067820, 0x3223e: 0x6c0cd620, 0x3223f: 0x6c0cd820,\n\t// Block 0xc89, offset 0x32240\n\t0x32240: 0x6c0cda20, 0x32241: 0x6c0cdc20, 0x32242: 0x6c0cde20, 0x32243: 0x6c0ce020,\n\t0x32244: 0x6c0ce220, 0x32245: 0x6c0ce420, 0x32246: 0x6c17d020, 0x32247: 0x6c17d220,\n\t0x32248: 0x6c17d420, 0x32249: 0x6c17d620, 0x3224a: 0x6c17d820, 0x3224b: 0x6c2ab420,\n\t0x3224c: 0x6c2ab620, 0x3224d: 0x6c2ab820, 0x3224e: 0x6c44da20, 0x3224f: 0x6c44dc20,\n\t0x32250: 0x6c44de20, 0x32251: 0x6c633020, 0x32252: 0x6c660c20, 0x32253: 0x6c660e20,\n\t0x32254: 0x6c8cd020, 0x32255: 0x6c8cd220, 0x32256: 0x6c8cd420, 0x32257: 0x6c8cd620,\n\t0x32258: 0x6cb94220, 0x32259: 0x6d1a0820, 0x3225a: 0x6d1a0a20, 0x3225b: 0x6d4b1220,\n\t0x3225c: 0x6d489420, 0x3225d: 0x6d76a220, 0x3225e: 0x6da02e20, 0x3225f: 0x6de05220,\n\t0x32260: 0x6df8a420, 0x32261: 0x6e0c7020, 0x32262: 0x6e319220, 0x32263: 0x6c00a620,\n\t0x32264: 0x6c015e20, 0x32265: 0x6c032c20, 0x32266: 0x6c032e20, 0x32267: 0x6c033020,\n\t0x32268: 0x6c033220, 0x32269: 0x6c033420, 0x3226a: 0x6c033620, 0x3226b: 0x6c033820,\n\t0x3226c: 0x6c033a20, 0x3226d: 0x6c068c20, 0x3226e: 0x6c068e20, 0x3226f: 0x6c069020,\n\t0x32270: 0x6c069220, 0x32271: 0x6c069420, 0x32272: 0x6c069620, 0x32273: 0x6c069820,\n\t0x32274: 0x6c069a20, 0x32275: 0x6c0d0620, 0x32276: 0x6c069c20, 0x32277: 0x6c0d0820,\n\t0x32278: 0x6c0d0a20, 0x32279: 0x6c0d0c20, 0x3227a: 0x6c0d0e20, 0x3227b: 0x6c069e20,\n\t0x3227c: 0x6c0d1020, 0x3227d: 0x6c0d1220, 0x3227e: 0x6c0d1420, 0x3227f: 0x6c0d1620,\n\t// Block 0xc8a, offset 0x32280\n\t0x32280: 0x6c0d1820, 0x32281: 0x6c0d1a20, 0x32282: 0x6c0d1c20, 0x32283: 0x6c0d1e20,\n\t0x32284: 0x6c0d2020, 0x32285: 0x6c0d2220, 0x32286: 0x6c0d2420, 0x32287: 0x6c0d2620,\n\t0x32288: 0x6c0d2820, 0x32289: 0x6c0d2a20, 0x3228a: 0x6c0d2c20, 0x3228b: 0x6c0d2e20,\n\t0x3228c: 0x6c0d3020, 0x3228d: 0x6c0d3220, 0x3228e: 0x6c180220, 0x3228f: 0x6c180420,\n\t0x32290: 0x6c180620, 0x32291: 0x6c180820, 0x32292: 0x6c180a20, 0x32293: 0x6c180c20,\n\t0x32294: 0x6c180e20, 0x32295: 0x6c181020, 0x32296: 0x6c181220, 0x32297: 0x6c181420,\n\t0x32298: 0x6c181620, 0x32299: 0x6c181820, 0x3229a: 0x6c181a20, 0x3229b: 0x6c181c20,\n\t0x3229c: 0x6c181e20, 0x3229d: 0x6c182020, 0x3229e: 0x6c182220, 0x3229f: 0x6c182420,\n\t0x322a0: 0x6c182620, 0x322a1: 0x6c182820, 0x322a2: 0x6c182a20, 0x322a3: 0x6c182c20,\n\t0x322a4: 0x6c182e20, 0x322a5: 0x6c183020, 0x322a6: 0x6c183220, 0x322a7: 0x6c2af220,\n\t0x322a8: 0x6c2af420, 0x322a9: 0x6c2af620, 0x322aa: 0x6c2af820, 0x322ab: 0x6c2afa20,\n\t0x322ac: 0x6c2afc20, 0x322ad: 0x6c2afe20, 0x322ae: 0x6c2b0020, 0x322af: 0x6c2b0220,\n\t0x322b0: 0x6c2b0420, 0x322b1: 0x6c2b0620, 0x322b2: 0x6c2b0820, 0x322b3: 0x6c2b0a20,\n\t0x322b4: 0x6c2b0c20, 0x322b5: 0x6c2b0e20, 0x322b6: 0x6c2b1020, 0x322b7: 0x6c2b1220,\n\t0x322b8: 0x6c2b1420, 0x322b9: 0x6c2b1620, 0x322ba: 0x6c2b1820, 0x322bb: 0x6c2b1a20,\n\t0x322bc: 0x6c2b1c20, 0x322bd: 0x6c2b1e20, 0x322be: 0x6c2b2020, 0x322bf: 0x6c2b2220,\n\t// Block 0xc8b, offset 0x322c0\n\t0x322c0: 0x6c2b2420, 0x322c1: 0x6c2b2620, 0x322c2: 0x6c2b2820, 0x322c3: 0x6c2b2a20,\n\t0x322c4: 0x6c2b2c20, 0x322c5: 0x6c2b2e20, 0x322c6: 0x6c2b3020, 0x322c7: 0x6c2b3220,\n\t0x322c8: 0x6c2b3420, 0x322c9: 0x6c2b3620, 0x322ca: 0x6c2b3820, 0x322cb: 0x6c2b3a20,\n\t0x322cc: 0x6c2b3c20, 0x322cd: 0x6c2b3e20, 0x322ce: 0x6c2b4020, 0x322cf: 0x6c2b4220,\n\t0x322d0: 0x6c450620, 0x322d1: 0x6c450820, 0x322d2: 0x6c450a20, 0x322d3: 0x6c450c20,\n\t0x322d4: 0x6c450e20, 0x322d5: 0x6c451020, 0x322d6: 0x6c451220, 0x322d7: 0x6c451420,\n\t0x322d8: 0x6c451620, 0x322d9: 0x6c451820, 0x322da: 0x6c451a20, 0x322db: 0x6c451c20,\n\t0x322dc: 0x6c451e20, 0x322dd: 0x6c452020, 0x322de: 0x6c452220, 0x322df: 0x6c452420,\n\t0x322e0: 0x6c452620, 0x322e1: 0x6c452820, 0x322e2: 0x6c452a20, 0x322e3: 0x6c452c20,\n\t0x322e4: 0x6c452e20, 0x322e5: 0x6c453020, 0x322e6: 0x6c453220, 0x322e7: 0x6c453420,\n\t0x322e8: 0x6c453620, 0x322e9: 0x6c453820, 0x322ea: 0x6c453a20, 0x322eb: 0x6c453c20,\n\t0x322ec: 0x6c453e20, 0x322ed: 0x6c454020, 0x322ee: 0x6c454220, 0x322ef: 0x6c454420,\n\t0x322f0: 0x6c454620, 0x322f1: 0x6c664820, 0x322f2: 0x6c664a20, 0x322f3: 0x6c664c20,\n\t0x322f4: 0x6c664e20, 0x322f5: 0x6c665020, 0x322f6: 0x6c665220, 0x322f7: 0x6c665420,\n\t0x322f8: 0x6c665620, 0x322f9: 0x6c665820, 0x322fa: 0x6c665a20, 0x322fb: 0x6c665c20,\n\t0x322fc: 0x6c665e20, 0x322fd: 0x6c666020, 0x322fe: 0x6c666220, 0x322ff: 0x6c666420,\n\t// Block 0xc8c, offset 0x32300\n\t0x32300: 0x6c666620, 0x32301: 0x6c666820, 0x32302: 0x6c666a20, 0x32303: 0x6c666c20,\n\t0x32304: 0x6c666e20, 0x32305: 0x6c667020, 0x32306: 0x6c667220, 0x32307: 0x6c667420,\n\t0x32308: 0x6c667620, 0x32309: 0x6c667820, 0x3230a: 0x6c667a20, 0x3230b: 0x6c667c20,\n\t0x3230c: 0x6c667e20, 0x3230d: 0x6c668020, 0x3230e: 0x6c668220, 0x3230f: 0x6c668420,\n\t0x32310: 0x6c668620, 0x32311: 0x6c668820, 0x32312: 0x6c668a20, 0x32313: 0x6c668c20,\n\t0x32314: 0x6c668e20, 0x32315: 0x6c669020, 0x32316: 0x6c669220, 0x32317: 0x6c669420,\n\t0x32318: 0x6c669620, 0x32319: 0x6c669820, 0x3231a: 0x6c669a20, 0x3231b: 0x6c669c20,\n\t0x3231c: 0x6c669e20, 0x3231d: 0x6c8cf820, 0x3231e: 0x6c8cfa20, 0x3231f: 0x6c8cfc20,\n\t0x32320: 0x6c8cfe20, 0x32321: 0x6c8d0020, 0x32322: 0x6c8d0220, 0x32323: 0x6c8d0420,\n\t0x32324: 0x6c8d0620, 0x32325: 0x6c8d0820, 0x32326: 0x6c8d0a20, 0x32327: 0x6c8d0c20,\n\t0x32328: 0x6c8d0e20, 0x32329: 0x6c8d1020, 0x3232a: 0x6c8d1220, 0x3232b: 0x6c8d1420,\n\t0x3232c: 0x6c8d1620, 0x3232d: 0x6c8d1820, 0x3232e: 0x6c8d1a20, 0x3232f: 0x6c8d1c20,\n\t0x32330: 0x6c8d1e20, 0x32331: 0x6c8d2020, 0x32332: 0x6c8d2220, 0x32333: 0x6c8d2420,\n\t0x32334: 0x6c8d2620, 0x32335: 0x6c8d2820, 0x32336: 0x6c66a020, 0x32337: 0x6c8d2a20,\n\t0x32338: 0x6c8d2c20, 0x32339: 0x6c8d2e20, 0x3233a: 0x6c8d3020, 0x3233b: 0x6c8d3220,\n\t0x3233c: 0x6c8d3420, 0x3233d: 0x6c8d3620, 0x3233e: 0x6c8d3820, 0x3233f: 0x6cb95a20,\n\t// Block 0xc8d, offset 0x32340\n\t0x32340: 0x6cb95c20, 0x32341: 0x6cb95e20, 0x32342: 0x6cb96020, 0x32343: 0x6cb96220,\n\t0x32344: 0x6cb96420, 0x32345: 0x6cb96620, 0x32346: 0x6cb96820, 0x32347: 0x6cb96a20,\n\t0x32348: 0x6cb96c20, 0x32349: 0x6cb96e20, 0x3234a: 0x6cb97020, 0x3234b: 0x6cb97220,\n\t0x3234c: 0x6cb97420, 0x3234d: 0x6cb97620, 0x3234e: 0x6cb97820, 0x3234f: 0x6cb97a20,\n\t0x32350: 0x6cb97c20, 0x32351: 0x6cb97e20, 0x32352: 0x6cb98020, 0x32353: 0x6cb98220,\n\t0x32354: 0x6cb98420, 0x32355: 0x6cb98620, 0x32356: 0x6cb98820, 0x32357: 0x6cb98a20,\n\t0x32358: 0x6cb98c20, 0x32359: 0x6cb98e20, 0x3235a: 0x6cb99020, 0x3235b: 0x6cb99220,\n\t0x3235c: 0x6cd55e20, 0x3235d: 0x6cb99420, 0x3235e: 0x6cb99620, 0x3235f: 0x6cb99820,\n\t0x32360: 0x6cb99a20, 0x32361: 0x6cb99c20, 0x32362: 0x6cb99e20, 0x32363: 0x6cb9a020,\n\t0x32364: 0x6cb9a220, 0x32365: 0x6cea5220, 0x32366: 0x6cea5420, 0x32367: 0x6cea5620,\n\t0x32368: 0x6cea5820, 0x32369: 0x6cea5a20, 0x3236a: 0x6cea5c20, 0x3236b: 0x6cea5e20,\n\t0x3236c: 0x6cea6020, 0x3236d: 0x6cea6220, 0x3236e: 0x6cea6420, 0x3236f: 0x6cea6620,\n\t0x32370: 0x6cea6820, 0x32371: 0x6cea6a20, 0x32372: 0x6cea6c20, 0x32373: 0x6cea6e20,\n\t0x32374: 0x6cea7020, 0x32375: 0x6cea7220, 0x32376: 0x6cea7420, 0x32377: 0x6cea7620,\n\t0x32378: 0x6cea7820, 0x32379: 0x6cea7a20, 0x3237a: 0x6cea7c20, 0x3237b: 0x6cea7e20,\n\t0x3237c: 0x6cea8020, 0x3237d: 0x6cea8220, 0x3237e: 0x6cea8420, 0x3237f: 0x6cea8620,\n\t// Block 0xc8e, offset 0x32380\n\t0x32380: 0x6cea8820, 0x32381: 0x6cea8a20, 0x32382: 0x6d1a3020, 0x32383: 0x6d1a3220,\n\t0x32384: 0x6d1a3420, 0x32385: 0x6d1a3620, 0x32386: 0x6d1a3820, 0x32387: 0x6d1a3a20,\n\t0x32388: 0x6d1a3c20, 0x32389: 0x6d1a3e20, 0x3238a: 0x6d1a4020, 0x3238b: 0x6d1a4220,\n\t0x3238c: 0x6d1a4420, 0x3238d: 0x6d1a4620, 0x3238e: 0x6d1a4820, 0x3238f: 0x6d1a4a20,\n\t0x32390: 0x6d1a4c20, 0x32391: 0x6d1a4e20, 0x32392: 0x6d1a5020, 0x32393: 0x6d1a5220,\n\t0x32394: 0x6d1a5420, 0x32395: 0x6d1a5620, 0x32396: 0x6d1a5820, 0x32397: 0x6d1a5a20,\n\t0x32398: 0x6d1a5c20, 0x32399: 0x6d1a5e20, 0x3239a: 0x6d1a6020, 0x3239b: 0x6d1a6220,\n\t0x3239c: 0x6d1a6420, 0x3239d: 0x6d1a6620, 0x3239e: 0x6d1a6820, 0x3239f: 0x6d1a6a20,\n\t0x323a0: 0x6d48ae20, 0x323a1: 0x6d1a6c20, 0x323a2: 0x6d1a6e20, 0x323a3: 0x6d1a7020,\n\t0x323a4: 0x6d1a7220, 0x323a5: 0x6d1a7420, 0x323a6: 0x6d48b020, 0x323a7: 0x6d48b220,\n\t0x323a8: 0x6d48b420, 0x323a9: 0x6d48b620, 0x323aa: 0x6d48b820, 0x323ab: 0x6d48ba20,\n\t0x323ac: 0x6d48bc20, 0x323ad: 0x6d48be20, 0x323ae: 0x6d48c020, 0x323af: 0x6d48c220,\n\t0x323b0: 0x6d48c420, 0x323b1: 0x6d48c620, 0x323b2: 0x6d48c820, 0x323b3: 0x6d48ca20,\n\t0x323b4: 0x6d48cc20, 0x323b5: 0x6d48ce20, 0x323b6: 0x6d48d020, 0x323b7: 0x6d48d220,\n\t0x323b8: 0x6d48d420, 0x323b9: 0x6d48d620, 0x323ba: 0x6d76b420, 0x323bb: 0x6d76b620,\n\t0x323bc: 0x6d76b820, 0x323bd: 0x6d76ba20, 0x323be: 0x6d76bc20, 0x323bf: 0x6d76be20,\n\t// Block 0xc8f, offset 0x323c0\n\t0x323c0: 0x6d76c020, 0x323c1: 0x6d76c220, 0x323c2: 0x6d76c420, 0x323c3: 0x6d76c620,\n\t0x323c4: 0x6d76c820, 0x323c5: 0x6d76ca20, 0x323c6: 0x6d76cc20, 0x323c7: 0x6d76ce20,\n\t0x323c8: 0x6d76d020, 0x323c9: 0x6d76d220, 0x323ca: 0x6d76d420, 0x323cb: 0x6d938220,\n\t0x323cc: 0x6da03620, 0x323cd: 0x6da03820, 0x323ce: 0x6da03a20, 0x323cf: 0x6da03c20,\n\t0x323d0: 0x6da03e20, 0x323d1: 0x6da04020, 0x323d2: 0x6da04220, 0x323d3: 0x6da04420,\n\t0x323d4: 0x6da04620, 0x323d5: 0x6da04820, 0x323d6: 0x6da04a20, 0x323d7: 0x6da04c20,\n\t0x323d8: 0x6da04e20, 0x323d9: 0x6da05020, 0x323da: 0x6da05220, 0x323db: 0x6dc2b820,\n\t0x323dc: 0x6dc2ba20, 0x323dd: 0x6dc2bc20, 0x323de: 0x6dc2be20, 0x323df: 0x6dc2c020,\n\t0x323e0: 0x6dc2c220, 0x323e1: 0x6de05a20, 0x323e2: 0x6de05c20, 0x323e3: 0x6de05e20,\n\t0x323e4: 0x6df8a820, 0x323e5: 0x6e0c7620, 0x323e6: 0x6df8aa20, 0x323e7: 0x6df8ac20,\n\t0x323e8: 0x6df8ae20, 0x323e9: 0x6df8b020, 0x323ea: 0x6e0c7820, 0x323eb: 0x6e0c7a20,\n\t0x323ec: 0x6e0c7c20, 0x323ed: 0x6e0c7e20, 0x323ee: 0x6e286420, 0x323ef: 0x6e319420,\n\t0x323f0: 0x6e3cec20, 0x323f1: 0x6e3cee20, 0x323f2: 0x6c016220, 0x323f3: 0x6c034020,\n\t0x323f4: 0x6c034220, 0x323f5: 0x6c034420, 0x323f6: 0x6c06ae20, 0x323f7: 0x6c06b020,\n\t0x323f8: 0x6c06b220, 0x323f9: 0x6c0d4c20, 0x323fa: 0x6c0d4e20, 0x323fb: 0x6c0d5020,\n\t0x323fc: 0x6c0d5220, 0x323fd: 0x6c0d5420, 0x323fe: 0x6c0d5620, 0x323ff: 0x6c0d5820,\n\t// Block 0xc90, offset 0x32400\n\t0x32400: 0x6c0d5a20, 0x32401: 0x6c0d5c20, 0x32402: 0x6c185420, 0x32403: 0x6c185620,\n\t0x32404: 0x6c185820, 0x32405: 0x6c185a20, 0x32406: 0x6c185c20, 0x32407: 0x6c185e20,\n\t0x32408: 0x6c186020, 0x32409: 0x6c186220, 0x3240a: 0x6c186420, 0x3240b: 0x6c186620,\n\t0x3240c: 0x6c186820, 0x3240d: 0x6c186a20, 0x3240e: 0x6c186c20, 0x3240f: 0x6c186e20,\n\t0x32410: 0x6c187020, 0x32411: 0x6c2b6820, 0x32412: 0x6c2b6a20, 0x32413: 0x6c2b6c20,\n\t0x32414: 0x6c2b6e20, 0x32415: 0x6c2b7020, 0x32416: 0x6c2b7220, 0x32417: 0x6c2b7420,\n\t0x32418: 0x6c2b7620, 0x32419: 0x6c2b7820, 0x3241a: 0x6c2b7a20, 0x3241b: 0x6c2b7c20,\n\t0x3241c: 0x6c2b7e20, 0x3241d: 0x6c2b8020, 0x3241e: 0x6c456620, 0x3241f: 0x6c456820,\n\t0x32420: 0x6c456a20, 0x32421: 0x6c456c20, 0x32422: 0x6c456e20, 0x32423: 0x6c457020,\n\t0x32424: 0x6c457220, 0x32425: 0x6c457420, 0x32426: 0x6c457620, 0x32427: 0x6c457820,\n\t0x32428: 0x6c457a20, 0x32429: 0x6c457c20, 0x3242a: 0x6c457e20, 0x3242b: 0x6c66b820,\n\t0x3242c: 0x6c66ba20, 0x3242d: 0x6c66bc20, 0x3242e: 0x6c66be20, 0x3242f: 0x6c66c020,\n\t0x32430: 0x6c66c220, 0x32431: 0x6c66c420, 0x32432: 0x6c66c620, 0x32433: 0x6c66c820,\n\t0x32434: 0x6c66ca20, 0x32435: 0x6c66cc20, 0x32436: 0x6c66ce20, 0x32437: 0x6c66d020,\n\t0x32438: 0x6c66d220, 0x32439: 0x6c66d420, 0x3243a: 0x6c66d620, 0x3243b: 0x6c8d5420,\n\t0x3243c: 0x6c8d5620, 0x3243d: 0x6c8d5820, 0x3243e: 0x6c8d5a20, 0x3243f: 0x6c8d5c20,\n\t// Block 0xc91, offset 0x32440\n\t0x32440: 0x6c8d5e20, 0x32441: 0x6c8d6020, 0x32442: 0x6c8d6220, 0x32443: 0x6c8d6420,\n\t0x32444: 0x6c8d6620, 0x32445: 0x6cb9b420, 0x32446: 0x6cb9b620, 0x32447: 0x6cb9b820,\n\t0x32448: 0x6cb9ba20, 0x32449: 0x6cb9bc20, 0x3244a: 0x6cb9be20, 0x3244b: 0x6cb9c020,\n\t0x3244c: 0x6cb9c220, 0x3244d: 0x6cb9c420, 0x3244e: 0x6cb9c620, 0x3244f: 0x6cb9c820,\n\t0x32450: 0x6cb9ca20, 0x32451: 0x6cb9cc20, 0x32452: 0x6cb9ce20, 0x32453: 0x6ceaa420,\n\t0x32454: 0x6ceaa620, 0x32455: 0x6ceaa820, 0x32456: 0x6ceaaa20, 0x32457: 0x6ceaac20,\n\t0x32458: 0x6ceaae20, 0x32459: 0x6ceab020, 0x3245a: 0x6ceab220, 0x3245b: 0x6ceab420,\n\t0x3245c: 0x6ceab620, 0x3245d: 0x6ceab820, 0x3245e: 0x6ceaba20, 0x3245f: 0x6ceabc20,\n\t0x32460: 0x6d1a8420, 0x32461: 0x6d1a8620, 0x32462: 0x6d1a8820, 0x32463: 0x6d1a8a20,\n\t0x32464: 0x6d1a8c20, 0x32465: 0x6d1a8e20, 0x32466: 0x6d1a9020, 0x32467: 0x6d1a9220,\n\t0x32468: 0x6d1a9420, 0x32469: 0x6d1a9620, 0x3246a: 0x6d1a9820, 0x3246b: 0x6d1a9a20,\n\t0x3246c: 0x6d1a9c20, 0x3246d: 0x6d1a9e20, 0x3246e: 0x6d1aa020, 0x3246f: 0x6d1aa220,\n\t0x32470: 0x6d48e420, 0x32471: 0x6d48e620, 0x32472: 0x6d48e820, 0x32473: 0x6d48ea20,\n\t0x32474: 0x6d48ec20, 0x32475: 0x6d48ee20, 0x32476: 0x6d76dc20, 0x32477: 0x6d76de20,\n\t0x32478: 0x6d76e020, 0x32479: 0x6da06220, 0x3247a: 0x6da06420, 0x3247b: 0x6da06620,\n\t0x3247c: 0x6da06820, 0x3247d: 0x6da06a20, 0x3247e: 0x6da06c20, 0x3247f: 0x6da06e20,\n\t// Block 0xc92, offset 0x32480\n\t0x32480: 0x6dc2c620, 0x32481: 0x6dc2c820, 0x32482: 0x6dc2ca20, 0x32483: 0x6dc2cc20,\n\t0x32484: 0x6de06220, 0x32485: 0x6de06420, 0x32486: 0x6df8b220, 0x32487: 0x6e0c8020,\n\t0x32488: 0x6e286620, 0x32489: 0x6e286820, 0x3248a: 0x6e384220, 0x3248b: 0x6e46ae20,\n\t0x3248c: 0x6c035620, 0x3248d: 0x6c06be20, 0x3248e: 0x6c06c020, 0x3248f: 0x6c06c220,\n\t0x32490: 0x6c06c420, 0x32491: 0x6c0d6020, 0x32492: 0x6c0d6220, 0x32493: 0x6c0d6420,\n\t0x32494: 0x6c187a20, 0x32495: 0x6c187c20, 0x32496: 0x6c187e20, 0x32497: 0x6c188020,\n\t0x32498: 0x6c2b8e20, 0x32499: 0x6c2b9020, 0x3249a: 0x6c2b9220, 0x3249b: 0x6c2b9420,\n\t0x3249c: 0x6c2b9620, 0x3249d: 0x6c2b9820, 0x3249e: 0x6c458420, 0x3249f: 0x6c458620,\n\t0x324a0: 0x6c458820, 0x324a1: 0x6c458a20, 0x324a2: 0x6c458c20, 0x324a3: 0x6c458e20,\n\t0x324a4: 0x6c66e020, 0x324a5: 0x6c66e220, 0x324a6: 0x6c66e420, 0x324a7: 0x6c66e620,\n\t0x324a8: 0x6c66e820, 0x324a9: 0x6c66ea20, 0x324aa: 0x6c66ec20, 0x324ab: 0x6c66ee20,\n\t0x324ac: 0x6c66f020, 0x324ad: 0x6c66f220, 0x324ae: 0x6c8d7020, 0x324af: 0x6c8d7220,\n\t0x324b0: 0x6c8d7420, 0x324b1: 0x6c8d7620, 0x324b2: 0x6c8d7820, 0x324b3: 0x6c8d7a20,\n\t0x324b4: 0x6c8d7c20, 0x324b5: 0x6cb9da20, 0x324b6: 0x6cb9dc20, 0x324b7: 0x6cb9de20,\n\t0x324b8: 0x6ceac420, 0x324b9: 0x6ceac620, 0x324ba: 0x6ceac820, 0x324bb: 0x6ceaca20,\n\t0x324bc: 0x6ceacc20, 0x324bd: 0x6d1aa820, 0x324be: 0x6d1aaa20, 0x324bf: 0x6d1aac20,\n\t// Block 0xc93, offset 0x324c0\n\t0x324c0: 0x6d1aae20, 0x324c1: 0x6d1ab020, 0x324c2: 0x6d1ab220, 0x324c3: 0x6d48f420,\n\t0x324c4: 0x6d76e220, 0x324c5: 0x6d76e420, 0x324c6: 0x6d76e620, 0x324c7: 0x6d76e820,\n\t0x324c8: 0x6da07020, 0x324c9: 0x6da07220, 0x324ca: 0x6da07420, 0x324cb: 0x6df8b420,\n\t0x324cc: 0x6df8b620, 0x324cd: 0x6df8b820, 0x324ce: 0x6c00ae20, 0x324cf: 0x6c035c20,\n\t0x324d0: 0x6c06c820, 0x324d1: 0x6c188220, 0x324d2: 0x6c188420, 0x324d3: 0x6c188620,\n\t0x324d4: 0x6c188820, 0x324d5: 0x6c188a20, 0x324d6: 0x6c2b9c20, 0x324d7: 0x6c459020,\n\t0x324d8: 0x6c459220, 0x324d9: 0x6c459420, 0x324da: 0x6c459620, 0x324db: 0x6c459820,\n\t0x324dc: 0x6c459a20, 0x324dd: 0x6c459c20, 0x324de: 0x6c66f420, 0x324df: 0x6c66f620,\n\t0x324e0: 0x6c66f820, 0x324e1: 0x6c66fa20, 0x324e2: 0x6c63d420, 0x324e3: 0x6cb9e020,\n\t0x324e4: 0x6cb9e220, 0x324e5: 0x6ceace20, 0x324e6: 0x6d1ab420, 0x324e7: 0x6d1ab620,\n\t0x324e8: 0x6d1ab820, 0x324e9: 0x6da07620, 0x324ea: 0x6dc2ce20, 0x324eb: 0x6dea7420,\n\t0x324ec: 0x6c00b220, 0x324ed: 0x6c035e20, 0x324ee: 0x6c0d7020, 0x324ef: 0x6c0d7220,\n\t0x324f0: 0x6c0d7420, 0x324f1: 0x6c0d7620, 0x324f2: 0x6c0d7a20, 0x324f3: 0x6c189620,\n\t0x324f4: 0x6c189820, 0x324f5: 0x6c189a20, 0x324f6: 0x6c189c20, 0x324f7: 0x6c189e20,\n\t0x324f8: 0x6c2ba020, 0x324f9: 0x6c2ba220, 0x324fa: 0x6c2ba420, 0x324fb: 0x6c2ba620,\n\t0x324fc: 0x6c45a620, 0x324fd: 0x6c45a820, 0x324fe: 0x6c45aa20, 0x324ff: 0x6c45ac20,\n\t// Block 0xc94, offset 0x32500\n\t0x32500: 0x6c45ae20, 0x32501: 0x6c45b020, 0x32502: 0x6c45b220, 0x32503: 0x6c45c220,\n\t0x32504: 0x6c45b420, 0x32505: 0x6c45b620, 0x32506: 0x6c45b820, 0x32507: 0x6c45ba20,\n\t0x32508: 0x6c45bc20, 0x32509: 0x6c670220, 0x3250a: 0x6c670420, 0x3250b: 0x6c670620,\n\t0x3250c: 0x6c670820, 0x3250d: 0x6c670a20, 0x3250e: 0x6c8d8e20, 0x3250f: 0x6c8d9020,\n\t0x32510: 0x6cb9e420, 0x32511: 0x6cb9e620, 0x32512: 0x6cb9e820, 0x32513: 0x6cb9ea20,\n\t0x32514: 0x6cb9ec20, 0x32515: 0x6cb9ee20, 0x32516: 0x6ceada20, 0x32517: 0x6ceadc20,\n\t0x32518: 0x6ceade20, 0x32519: 0x6d1ac220, 0x3251a: 0x6d1ac420, 0x3251b: 0x6d1ac620,\n\t0x3251c: 0x6d48f820, 0x3251d: 0x6d48fa20, 0x3251e: 0x6d48fc20, 0x3251f: 0x6d48fe20,\n\t0x32520: 0x6d490020, 0x32521: 0x6d490220, 0x32522: 0x6d76ec20, 0x32523: 0x6d76ee20,\n\t0x32524: 0x6dc2d020, 0x32525: 0x6dc2d220, 0x32526: 0x6de06a20, 0x32527: 0x6de06c20,\n\t0x32528: 0x6df8bc20, 0x32529: 0x6df8be20, 0x3252a: 0x6e1c2420, 0x3252b: 0x6e3cf220,\n\t0x3252c: 0x6e451420, 0x3252d: 0x6c036420, 0x3252e: 0x6c0d7c20, 0x3252f: 0x6c0d7e20,\n\t0x32530: 0x6c18a820, 0x32531: 0x6c18aa20, 0x32532: 0x6c18ac20, 0x32533: 0x6c2baa20,\n\t0x32534: 0x6c45c420, 0x32535: 0x6c45c620, 0x32536: 0x6c670e20, 0x32537: 0x6d1aca20,\n\t0x32538: 0x6df8c220, 0x32539: 0x6e1c2620, 0x3253a: 0x6e1c2820, 0x3253b: 0x6c037020,\n\t0x3253c: 0x6c037220, 0x3253d: 0x6c06da20, 0x3253e: 0x6c06dc20, 0x3253f: 0x6c037420,\n\t// Block 0xc95, offset 0x32540\n\t0x32540: 0x6c06de20, 0x32541: 0x6c06e020, 0x32542: 0x6c0d8e20, 0x32543: 0x6c0d9020,\n\t0x32544: 0x6c0d9220, 0x32545: 0x6c0d9420, 0x32546: 0x6c0d9620, 0x32547: 0x6c0d9820,\n\t0x32548: 0x6c0d9a20, 0x32549: 0x6c0d9c20, 0x3254a: 0x6c0d9e20, 0x3254b: 0x6c0da020,\n\t0x3254c: 0x6c0da220, 0x3254d: 0x6c0da420, 0x3254e: 0x6c0da620, 0x3254f: 0x6c0da820,\n\t0x32550: 0x6c0daa20, 0x32551: 0x6c18ae20, 0x32552: 0x6c18b020, 0x32553: 0x6c18b220,\n\t0x32554: 0x6c18b420, 0x32555: 0x6c18b620, 0x32556: 0x6c18b820, 0x32557: 0x6c18ba20,\n\t0x32558: 0x6c2bba20, 0x32559: 0x6c2bbc20, 0x3255a: 0x6c2bbe20, 0x3255b: 0x6c2bc020,\n\t0x3255c: 0x6c2bc220, 0x3255d: 0x6c2bc420, 0x3255e: 0x6c2bc620, 0x3255f: 0x6c2bc820,\n\t0x32560: 0x6c2bca20, 0x32561: 0x6c2bcc20, 0x32562: 0x6c2bce20, 0x32563: 0x6c671020,\n\t0x32564: 0x6c671220, 0x32565: 0x6c671420, 0x32566: 0x6c671620, 0x32567: 0x6c671820,\n\t0x32568: 0x6c671a20, 0x32569: 0x6c671c20, 0x3256a: 0x6c8d9a20, 0x3256b: 0x6c8d9c20,\n\t0x3256c: 0x6c8d9e20, 0x3256d: 0x6c8da020, 0x3256e: 0x6c8da220, 0x3256f: 0x6c8da420,\n\t0x32570: 0x6cb9f420, 0x32571: 0x6cb9f620, 0x32572: 0x6cb9f820, 0x32573: 0x6cb9fa20,\n\t0x32574: 0x6ceae220, 0x32575: 0x6ceae420, 0x32576: 0x6ceae620, 0x32577: 0x6ceae820,\n\t0x32578: 0x6ceaea20, 0x32579: 0x6ceaec20, 0x3257a: 0x6ceaee20, 0x3257b: 0x6ceaf020,\n\t0x3257c: 0x6ceaf220, 0x3257d: 0x6d1acc20, 0x3257e: 0x6d1ace20, 0x3257f: 0x6d1ad020,\n\t// Block 0xc96, offset 0x32580\n\t0x32580: 0x6d490420, 0x32581: 0x6d490620, 0x32582: 0x6d490820, 0x32583: 0x6d490a20,\n\t0x32584: 0x6d490c20, 0x32585: 0x6da07a20, 0x32586: 0x6da07c20, 0x32587: 0x6da07e20,\n\t0x32588: 0x6da08020, 0x32589: 0x6dc2d420, 0x3258a: 0x6dc2d620, 0x3258b: 0x6dc2d820,\n\t0x3258c: 0x6dc2da20, 0x3258d: 0x6dc2dc20, 0x3258e: 0x6de06e20, 0x3258f: 0x6e0c8620,\n\t0x32590: 0x6e384420, 0x32591: 0x6e3cf420, 0x32592: 0x6c016c20, 0x32593: 0x6c06ea20,\n\t0x32594: 0x6c0dae20, 0x32595: 0x6c0db020, 0x32596: 0x6c0db220, 0x32597: 0x6c0db420,\n\t0x32598: 0x6c0db620, 0x32599: 0x6c18c420, 0x3259a: 0x6c18c620, 0x3259b: 0x6c18c820,\n\t0x3259c: 0x6c18ca20, 0x3259d: 0x6c161a20, 0x3259e: 0x6c2bdc20, 0x3259f: 0x6c2bde20,\n\t0x325a0: 0x6c2be020, 0x325a1: 0x6c2be220, 0x325a2: 0x6c2be420, 0x325a3: 0x6c2be620,\n\t0x325a4: 0x6c2be820, 0x325a5: 0x6c2bea20, 0x325a6: 0x6c2bec20, 0x325a7: 0x6c2bee20,\n\t0x325a8: 0x6c2bf020, 0x325a9: 0x6c45ce20, 0x325aa: 0x6c45d020, 0x325ab: 0x6c45d220,\n\t0x325ac: 0x6c45d420, 0x325ad: 0x6c45d620, 0x325ae: 0x6c45d820, 0x325af: 0x6c45da20,\n\t0x325b0: 0x6c45dc20, 0x325b1: 0x6c45de20, 0x325b2: 0x6c45e020, 0x325b3: 0x6c672020,\n\t0x325b4: 0x6c672220, 0x325b5: 0x6c672420, 0x325b6: 0x6c672620, 0x325b7: 0x6c672820,\n\t0x325b8: 0x6cb78420, 0x325b9: 0x6c672a20, 0x325ba: 0x6c8daa20, 0x325bb: 0x6c8dac20,\n\t0x325bc: 0x6c8dae20, 0x325bd: 0x6c8db020, 0x325be: 0x6c8db220, 0x325bf: 0x6c8db420,\n\t// Block 0xc97, offset 0x325c0\n\t0x325c0: 0x6cb9fc20, 0x325c1: 0x6cb9fe20, 0x325c2: 0x6cba0020, 0x325c3: 0x6cbd9e20,\n\t0x325c4: 0x6cba0220, 0x325c5: 0x6ceaf620, 0x325c6: 0x6d1ad420, 0x325c7: 0x6d1ad620,\n\t0x325c8: 0x6d491220, 0x325c9: 0x6d491420, 0x325ca: 0x6d491620, 0x325cb: 0x6e400820,\n\t0x325cc: 0x6e467a20, 0x325cd: 0x6c037e20, 0x325ce: 0x6c038020, 0x325cf: 0x6c038220,\n\t0x325d0: 0x6c038420, 0x325d1: 0x6c06f220, 0x325d2: 0x6c0dbc20, 0x325d3: 0x6c0dbe20,\n\t0x325d4: 0x6c0dc020, 0x325d5: 0x6c0dc220, 0x325d6: 0x6c0dc420, 0x325d7: 0x6c0dc620,\n\t0x325d8: 0x6c18da20, 0x325d9: 0x6c45ea20, 0x325da: 0x6c45ec20, 0x325db: 0x6c45ee20,\n\t0x325dc: 0x6c45f020, 0x325dd: 0x6c45f220, 0x325de: 0x6c672e20, 0x325df: 0x6cba0420,\n\t0x325e0: 0x6cba0620, 0x325e1: 0x6cba0820, 0x325e2: 0x6ceafc20, 0x325e3: 0x6ceafe20,\n\t0x325e4: 0x6ceb0020, 0x325e5: 0x6d1ada20, 0x325e6: 0x6da08420, 0x325e7: 0x6dc2e020,\n\t0x325e8: 0x6dc2e220, 0x325e9: 0x6dc2e420, 0x325ea: 0x6dc2e620, 0x325eb: 0x6e3cf620,\n\t0x325ec: 0x6c038e20, 0x325ed: 0x6c06fa20, 0x325ee: 0x6c06fc20, 0x325ef: 0x6c06fe20,\n\t0x325f0: 0x6c070020, 0x325f1: 0x6c070220, 0x325f2: 0x6c070420, 0x325f3: 0x6c070620,\n\t0x325f4: 0x6c0dda20, 0x325f5: 0x6c0ddc20, 0x325f6: 0x6c0dde20, 0x325f7: 0x6c0de020,\n\t0x325f8: 0x6c0de220, 0x325f9: 0x6c0de420, 0x325fa: 0x6c0de620, 0x325fb: 0x6c0de820,\n\t0x325fc: 0x6c0dea20, 0x325fd: 0x6c0dec20, 0x325fe: 0x6c0dee20, 0x325ff: 0x6c0df020,\n\t// Block 0xc98, offset 0x32600\n\t0x32600: 0x6c18ec20, 0x32601: 0x6c18ee20, 0x32602: 0x6c18f020, 0x32603: 0x6c18f220,\n\t0x32604: 0x6c18f420, 0x32605: 0x6c18f620, 0x32606: 0x6c18f820, 0x32607: 0x6c18fa20,\n\t0x32608: 0x6c18fc20, 0x32609: 0x6c18fe20, 0x3260a: 0x6c2c0c20, 0x3260b: 0x6c2c0e20,\n\t0x3260c: 0x6c2c1020, 0x3260d: 0x6c2c1220, 0x3260e: 0x6c2c1420, 0x3260f: 0x6c2c1620,\n\t0x32610: 0x6c2c1820, 0x32611: 0x6c2c1a20, 0x32612: 0x6c2c1c20, 0x32613: 0x6c2c1e20,\n\t0x32614: 0x6c2c2020, 0x32615: 0x6c2c2220, 0x32616: 0x6c2a5a20, 0x32617: 0x6c460420,\n\t0x32618: 0x6c460620, 0x32619: 0x6c460820, 0x3261a: 0x6c460a20, 0x3261b: 0x6c460c20,\n\t0x3261c: 0x6c460e20, 0x3261d: 0x6c461020, 0x3261e: 0x6c461220, 0x3261f: 0x6c461420,\n\t0x32620: 0x6c461620, 0x32621: 0x6c461820, 0x32622: 0x6c461a20, 0x32623: 0x6c461c20,\n\t0x32624: 0x6c461e20, 0x32625: 0x6c462020, 0x32626: 0x6c462220, 0x32627: 0x6c674220,\n\t0x32628: 0x6c674420, 0x32629: 0x6c674620, 0x3262a: 0x6c674820, 0x3262b: 0x6c674a20,\n\t0x3262c: 0x6c674c20, 0x3262d: 0x6c674e20, 0x3262e: 0x6c675020, 0x3262f: 0x6c675220,\n\t0x32630: 0x6c675420, 0x32631: 0x6c675620, 0x32632: 0x6c675820, 0x32633: 0x6c675a20,\n\t0x32634: 0x6c675c20, 0x32635: 0x6c675e20, 0x32636: 0x6c676020, 0x32637: 0x6c676220,\n\t0x32638: 0x6c8dc220, 0x32639: 0x6c8dc420, 0x3263a: 0x6c8dc620, 0x3263b: 0x6c8dc820,\n\t0x3263c: 0x6c8dca20, 0x3263d: 0x6c8dcc20, 0x3263e: 0x6c8dce20, 0x3263f: 0x6ceb0820,\n\t// Block 0xc99, offset 0x32640\n\t0x32640: 0x6c8dd020, 0x32641: 0x6c8dd220, 0x32642: 0x6c8dd420, 0x32643: 0x6c8dd620,\n\t0x32644: 0x6c8dd820, 0x32645: 0x6c8dda20, 0x32646: 0x6c8ddc20, 0x32647: 0x6cba1620,\n\t0x32648: 0x6cba1820, 0x32649: 0x6cba1a20, 0x3264a: 0x6cba1c20, 0x3264b: 0x6cba1e20,\n\t0x3264c: 0x6cba2020, 0x3264d: 0x6cba2220, 0x3264e: 0x6cba2420, 0x3264f: 0x6cba2620,\n\t0x32650: 0x6cba2820, 0x32651: 0x6ceb0a20, 0x32652: 0x6ceb0c20, 0x32653: 0x6ceb0e20,\n\t0x32654: 0x6ceb1020, 0x32655: 0x6ceb1220, 0x32656: 0x6ceb1420, 0x32657: 0x6ceb1620,\n\t0x32658: 0x6ceb1820, 0x32659: 0x6d1ae820, 0x3265a: 0x6d1aea20, 0x3265b: 0x6d1aec20,\n\t0x3265c: 0x6d1aee20, 0x3265d: 0x6d1af020, 0x3265e: 0x6d1af220, 0x3265f: 0x6d1af420,\n\t0x32660: 0x6d1af620, 0x32661: 0x6d1af820, 0x32662: 0x6d1afa20, 0x32663: 0x6d1afc20,\n\t0x32664: 0x6d1afe20, 0x32665: 0x6d1b0020, 0x32666: 0x6d1b0220, 0x32667: 0x6d1b0420,\n\t0x32668: 0x6d1b0620, 0x32669: 0x6d1b0820, 0x3266a: 0x6d1b0a20, 0x3266b: 0x6d1b0c20,\n\t0x3266c: 0x6d1b0e20, 0x3266d: 0x6d491e20, 0x3266e: 0x6d492020, 0x3266f: 0x6d492220,\n\t0x32670: 0x6d492420, 0x32671: 0x6d492620, 0x32672: 0x6d492820, 0x32673: 0x6d492a20,\n\t0x32674: 0x6d492c20, 0x32675: 0x6d492e20, 0x32676: 0x6d493020, 0x32677: 0x6d493220,\n\t0x32678: 0x6d493420, 0x32679: 0x6d5ad220, 0x3267a: 0x6d76f020, 0x3267b: 0x6d76f220,\n\t0x3267c: 0x6d76f420, 0x3267d: 0x6d76f620, 0x3267e: 0x6d76f820, 0x3267f: 0x6da08a20,\n\t// Block 0xc9a, offset 0x32680\n\t0x32680: 0x6dc2e820, 0x32681: 0x6dc2ea20, 0x32682: 0x6dc2ec20, 0x32683: 0x6dc2ee20,\n\t0x32684: 0x6dc2f020, 0x32685: 0x6dc2f220, 0x32686: 0x6dc2f420, 0x32687: 0x6df8c620,\n\t0x32688: 0x6dfbb620, 0x32689: 0x6e0c8820, 0x3268a: 0x6e0c8a20, 0x3268b: 0x6e1c2a20,\n\t0x3268c: 0x6e286a20, 0x3268d: 0x6e286c20, 0x3268e: 0x6e286e20, 0x3268f: 0x6e319820,\n\t0x32690: 0x6e442420, 0x32691: 0x6e462220, 0x32692: 0x6e467c20, 0x32693: 0x6c017620,\n\t0x32694: 0x6c017820, 0x32695: 0x6c017a20, 0x32696: 0x6c017c20, 0x32697: 0x6c039820,\n\t0x32698: 0x6c039a20, 0x32699: 0x6c071020, 0x3269a: 0x6c071220, 0x3269b: 0x6c071420,\n\t0x3269c: 0x6c071620, 0x3269d: 0x6c071820, 0x3269e: 0x6c0df620, 0x3269f: 0x6c0df820,\n\t0x326a0: 0x6c0dfa20, 0x326a1: 0x6c0dfc20, 0x326a2: 0x6c0dfe20, 0x326a3: 0x6c0e0020,\n\t0x326a4: 0x6c0e0220, 0x326a5: 0x6c0e0420, 0x326a6: 0x6c190620, 0x326a7: 0x6c190820,\n\t0x326a8: 0x6c190a20, 0x326a9: 0x6c2c2e20, 0x326aa: 0x6c2c3020, 0x326ab: 0x6c2c3220,\n\t0x326ac: 0x6c2c3420, 0x326ad: 0x6c2c3620, 0x326ae: 0x6c2ab020, 0x326af: 0x6c2c3820,\n\t0x326b0: 0x6c462c20, 0x326b1: 0x6c462e20, 0x326b2: 0x6c463020, 0x326b3: 0x6c464a20,\n\t0x326b4: 0x6c463220, 0x326b5: 0x6c463420, 0x326b6: 0x6c463620, 0x326b7: 0x6c463820,\n\t0x326b8: 0x6c463a20, 0x326b9: 0x6c677220, 0x326ba: 0x6c677420, 0x326bb: 0x6c677620,\n\t0x326bc: 0x6c677820, 0x326bd: 0x6c8dea20, 0x326be: 0x6c8dec20, 0x326bf: 0x6cba3020,\n\t// Block 0xc9b, offset 0x326c0\n\t0x326c0: 0x6cba3220, 0x326c1: 0x6cba3420, 0x326c2: 0x6cba3620, 0x326c3: 0x6cba3820,\n\t0x326c4: 0x6cba3a20, 0x326c5: 0x6cba3c20, 0x326c6: 0x6ceb2220, 0x326c7: 0x6ceb2420,\n\t0x326c8: 0x6ceb2620, 0x326c9: 0x6ceb2820, 0x326ca: 0x6ceb2a20, 0x326cb: 0x6ceb2c20,\n\t0x326cc: 0x6ceb2e20, 0x326cd: 0x6d1b1820, 0x326ce: 0x6d1b1a20, 0x326cf: 0x6d1b1c20,\n\t0x326d0: 0x6d1b1e20, 0x326d1: 0x6d493e20, 0x326d2: 0x6d494020, 0x326d3: 0x6d76fa20,\n\t0x326d4: 0x6de07220, 0x326d5: 0x6da08e20, 0x326d6: 0x6da09020, 0x326d7: 0x6da09220,\n\t0x326d8: 0x6de07420, 0x326d9: 0x6de07620, 0x326da: 0x6c03aa20, 0x326db: 0x6c03ac20,\n\t0x326dc: 0x6c03ae20, 0x326dd: 0x6c03b020, 0x326de: 0x6c03b220, 0x326df: 0x6c03b420,\n\t0x326e0: 0x6c03b620, 0x326e1: 0x6c072020, 0x326e2: 0x6c072220, 0x326e3: 0x6c072420,\n\t0x326e4: 0x6c072620, 0x326e5: 0x6c072820, 0x326e6: 0x6c072a20, 0x326e7: 0x6c072c20,\n\t0x326e8: 0x6c072e20, 0x326e9: 0x6c0e0a20, 0x326ea: 0x6c0e0c20, 0x326eb: 0x6c0e0e20,\n\t0x326ec: 0x6c0e1020, 0x326ed: 0x6c0e1220, 0x326ee: 0x6c0e1420, 0x326ef: 0x6c0e1620,\n\t0x326f0: 0x6c0e1820, 0x326f1: 0x6c191020, 0x326f2: 0x6c191220, 0x326f3: 0x6c191420,\n\t0x326f4: 0x6c191620, 0x326f5: 0x6c191820, 0x326f6: 0x6c191a20, 0x326f7: 0x6c191c20,\n\t0x326f8: 0x6c191e20, 0x326f9: 0x6c2c4620, 0x326fa: 0x6c2c4820, 0x326fb: 0x6c2c4a20,\n\t0x326fc: 0x6c2c4c20, 0x326fd: 0x6c2c4e20, 0x326fe: 0x6c2c5020, 0x326ff: 0x6c464c20,\n\t// Block 0xc9c, offset 0x32700\n\t0x32700: 0x6c464e20, 0x32701: 0x6c465020, 0x32702: 0x6c465220, 0x32703: 0x6c465420,\n\t0x32704: 0x6c465620, 0x32705: 0x6c465820, 0x32706: 0x6c465a20, 0x32707: 0x6c465c20,\n\t0x32708: 0x6c465e20, 0x32709: 0x6c45e220, 0x3270a: 0x6c678020, 0x3270b: 0x6c678220,\n\t0x3270c: 0x6c678420, 0x3270d: 0x6c678620, 0x3270e: 0x6c678820, 0x3270f: 0x6c678a20,\n\t0x32710: 0x6c678c20, 0x32711: 0x6c678e20, 0x32712: 0x6c679020, 0x32713: 0x6c679220,\n\t0x32714: 0x6c679420, 0x32715: 0x6c8df020, 0x32716: 0x6c8df220, 0x32717: 0x6c8df420,\n\t0x32718: 0x6c8df620, 0x32719: 0x6c8df820, 0x3271a: 0x6c8dfa20, 0x3271b: 0x6c8dfc20,\n\t0x3271c: 0x6c8dfe20, 0x3271d: 0x6c8e0020, 0x3271e: 0x6c8e0220, 0x3271f: 0x6c8e0420,\n\t0x32720: 0x6c8e0620, 0x32721: 0x6c8e0820, 0x32722: 0x6c8e0a20, 0x32723: 0x6c8e0c20,\n\t0x32724: 0x6c8e0e20, 0x32725: 0x6cba4420, 0x32726: 0x6cba4620, 0x32727: 0x6cba4820,\n\t0x32728: 0x6cba4a20, 0x32729: 0x6cba4c20, 0x3272a: 0x6cba4e20, 0x3272b: 0x6cba5020,\n\t0x3272c: 0x6cba5220, 0x3272d: 0x6cba5420, 0x3272e: 0x6cba5620, 0x3272f: 0x6ceb3620,\n\t0x32730: 0x6ceb3820, 0x32731: 0x6ceb3a20, 0x32732: 0x6ceb3c20, 0x32733: 0x6ceb3e20,\n\t0x32734: 0x6ceb4020, 0x32735: 0x6ceb4220, 0x32736: 0x6cee5e20, 0x32737: 0x6ceb4420,\n\t0x32738: 0x6ceb4620, 0x32739: 0x6ceb4820, 0x3273a: 0x6ceb4a20, 0x3273b: 0x6d19d820,\n\t0x3273c: 0x6d1b2220, 0x3273d: 0x6d1b2420, 0x3273e: 0x6d1b2620, 0x3273f: 0x6d1b2820,\n\t// Block 0xc9d, offset 0x32740\n\t0x32740: 0x6d1b2a20, 0x32741: 0x6d1b2c20, 0x32742: 0x6d1b2e20, 0x32743: 0x6d494420,\n\t0x32744: 0x6d494620, 0x32745: 0x6d494820, 0x32746: 0x6d494a20, 0x32747: 0x6d76fe20,\n\t0x32748: 0x6d770020, 0x32749: 0x6d770220, 0x3274a: 0x6d770420, 0x3274b: 0x6d770620,\n\t0x3274c: 0x6d770820, 0x3274d: 0x6da09420, 0x3274e: 0x6da09620, 0x3274f: 0x6da09820,\n\t0x32750: 0x6dc2f820, 0x32751: 0x6de07a20, 0x32752: 0x6de07c20, 0x32753: 0x6e0c8c20,\n\t0x32754: 0x6e0c8e20, 0x32755: 0x6e1c2c20, 0x32756: 0x6e287020, 0x32757: 0x6e319a20,\n\t0x32758: 0x6e319c20, 0x32759: 0x6c03bc20, 0x3275a: 0x6c03be20, 0x3275b: 0x6c03c020,\n\t0x3275c: 0x6c03c220, 0x3275d: 0x6c03c420, 0x3275e: 0x6c03c620, 0x3275f: 0x6c076e20,\n\t0x32760: 0x6c077020, 0x32761: 0x6c077220, 0x32762: 0x6c077420, 0x32763: 0x6c077620,\n\t0x32764: 0x6c077820, 0x32765: 0x6c077a20, 0x32766: 0x6c077c20, 0x32767: 0x6c077e20,\n\t0x32768: 0x6c078020, 0x32769: 0x6c078220, 0x3276a: 0x6c078420, 0x3276b: 0x6c0e5420,\n\t0x3276c: 0x6c0e5620, 0x3276d: 0x6c0e5820, 0x3276e: 0x6c0e5a20, 0x3276f: 0x6c0e5c20,\n\t0x32770: 0x6c0e5e20, 0x32771: 0x6c0e6020, 0x32772: 0x6c0e6220, 0x32773: 0x6c0e6420,\n\t0x32774: 0x6c0e6620, 0x32775: 0x6c0e6820, 0x32776: 0x6c0e6a20, 0x32777: 0x6c0e6c20,\n\t0x32778: 0x6c0e6e20, 0x32779: 0x6c0e7020, 0x3277a: 0x6c0e7220, 0x3277b: 0x6c0e7420,\n\t0x3277c: 0x6c0e7620, 0x3277d: 0x6c0e7820, 0x3277e: 0x6c0e7a20, 0x3277f: 0x6c0e7c20,\n\t// Block 0xc9e, offset 0x32780\n\t0x32780: 0x6c0e7e20, 0x32781: 0x6c0e8020, 0x32782: 0x6c0e8220, 0x32783: 0x6c0e8420,\n\t0x32784: 0x6c0e8620, 0x32785: 0x6c0e8820, 0x32786: 0x6c0e8a20, 0x32787: 0x6c0e8c20,\n\t0x32788: 0x6c0e8e20, 0x32789: 0x6c0e9020, 0x3278a: 0x6c0e9220, 0x3278b: 0x6c19ca20,\n\t0x3278c: 0x6c19cc20, 0x3278d: 0x6c19ce20, 0x3278e: 0x6c19d020, 0x3278f: 0x6c19d220,\n\t0x32790: 0x6c19d420, 0x32791: 0x6c19d620, 0x32792: 0x6c19d820, 0x32793: 0x6c19da20,\n\t0x32794: 0x6c19dc20, 0x32795: 0x6c19de20, 0x32796: 0x6c19e020, 0x32797: 0x6c19e220,\n\t0x32798: 0x6c19e420, 0x32799: 0x6c19e620, 0x3279a: 0x6c19e820, 0x3279b: 0x6c19ea20,\n\t0x3279c: 0x6c19ec20, 0x3279d: 0x6c19ee20, 0x3279e: 0x6c19f020, 0x3279f: 0x6c19f220,\n\t0x327a0: 0x6c19f420, 0x327a1: 0x6c19f620, 0x327a2: 0x6c19f820, 0x327a3: 0x6c19fa20,\n\t0x327a4: 0x6c19fc20, 0x327a5: 0x6c19fe20, 0x327a6: 0x6c1a0020, 0x327a7: 0x6c1a0220,\n\t0x327a8: 0x6c1a0420, 0x327a9: 0x6c1a0620, 0x327aa: 0x6c1a0820, 0x327ab: 0x6c1a0a20,\n\t0x327ac: 0x6c1a0c20, 0x327ad: 0x6c1a0e20, 0x327ae: 0x6c1a1020, 0x327af: 0x6c1a1220,\n\t0x327b0: 0x6c1a1420, 0x327b1: 0x6c1a1620, 0x327b2: 0x6c1a1820, 0x327b3: 0x6c1a1a20,\n\t0x327b4: 0x6c1a1c20, 0x327b5: 0x6c1a1e20, 0x327b6: 0x6c1a2020, 0x327b7: 0x6c1a2220,\n\t0x327b8: 0x6c1a2420, 0x327b9: 0x6c1a2620, 0x327ba: 0x6c1a2820, 0x327bb: 0x6c1a2a20,\n\t0x327bc: 0x6c1a2c20, 0x327bd: 0x6c1a2e20, 0x327be: 0x6c1a3020, 0x327bf: 0x6c1a3220,\n\t// Block 0xc9f, offset 0x327c0\n\t0x327c0: 0x6c1a3420, 0x327c1: 0x6c1a3620, 0x327c2: 0x6c1a3820, 0x327c3: 0x6c1a3a20,\n\t0x327c4: 0x6c1a3c20, 0x327c5: 0x6c1a3e20, 0x327c6: 0x6c1a4020, 0x327c7: 0x6c1a4220,\n\t0x327c8: 0x6c2ce620, 0x327c9: 0x6c2ce820, 0x327ca: 0x6c2cea20, 0x327cb: 0x6c2cec20,\n\t0x327cc: 0x6c2cee20, 0x327cd: 0x6c2cf020, 0x327ce: 0x6c2cf220, 0x327cf: 0x6c2cf420,\n\t0x327d0: 0x6c2cf620, 0x327d1: 0x6c2cf820, 0x327d2: 0x6c2cfa20, 0x327d3: 0x6c2cfc20,\n\t0x327d4: 0x6c2cfe20, 0x327d5: 0x6c2d0020, 0x327d6: 0x6c2d0220, 0x327d7: 0x6c2d0420,\n\t0x327d8: 0x6c2d0620, 0x327d9: 0x6c2d0820, 0x327da: 0x6c2d0a20, 0x327db: 0x6c2d0c20,\n\t0x327dc: 0x6c2d0e20, 0x327dd: 0x6c2d1020, 0x327de: 0x6c2d1220, 0x327df: 0x6c2d1420,\n\t0x327e0: 0x6c2d1620, 0x327e1: 0x6c2d1820, 0x327e2: 0x6c2d1a20, 0x327e3: 0x6c2d1c20,\n\t0x327e4: 0x6c2d1e20, 0x327e5: 0x6c2d2020, 0x327e6: 0x6c2d2220, 0x327e7: 0x6c2d2420,\n\t0x327e8: 0x6c2d2620, 0x327e9: 0x6c2d2820, 0x327ea: 0x6c2d2a20, 0x327eb: 0x6c2d2c20,\n\t0x327ec: 0x6c2d2e20, 0x327ed: 0x6c2d3020, 0x327ee: 0x6c2d3220, 0x327ef: 0x6c2d3420,\n\t0x327f0: 0x6c2d3620, 0x327f1: 0x6c2d3820, 0x327f2: 0x6c2d3a20, 0x327f3: 0x6c2d3c20,\n\t0x327f4: 0x6c2d3e20, 0x327f5: 0x6c2d4020, 0x327f6: 0x6c2d4220, 0x327f7: 0x6c2d4420,\n\t0x327f8: 0x6c2d4620, 0x327f9: 0x6c2d4820, 0x327fa: 0x6c2d4a20, 0x327fb: 0x6c2d4c20,\n\t0x327fc: 0x6c2d4e20, 0x327fd: 0x6c2d5020, 0x327fe: 0x6c2d5220, 0x327ff: 0x6c2d5420,\n\t// Block 0xca0, offset 0x32800\n\t0x32800: 0x6c2d5620, 0x32801: 0x6c2d5820, 0x32802: 0x6c2d5a20, 0x32803: 0x6c2d5c20,\n\t0x32804: 0x6c2d5e20, 0x32805: 0x6c2d6020, 0x32806: 0x6c2d6220, 0x32807: 0x6c2d6420,\n\t0x32808: 0x6c2d6620, 0x32809: 0x6c2d6820, 0x3280a: 0x6c2d6a20, 0x3280b: 0x6c2d6c20,\n\t0x3280c: 0x6c2d6e20, 0x3280d: 0x6c2d7020, 0x3280e: 0x6c2d7220, 0x3280f: 0x6c2d7420,\n\t0x32810: 0x6c470e20, 0x32811: 0x6c471020, 0x32812: 0x6c471220, 0x32813: 0x6c471420,\n\t0x32814: 0x6c471620, 0x32815: 0x6c471820, 0x32816: 0x6c471a20, 0x32817: 0x6c471c20,\n\t0x32818: 0x6c471e20, 0x32819: 0x6c472020, 0x3281a: 0x6c472220, 0x3281b: 0x6c472420,\n\t0x3281c: 0x6c472620, 0x3281d: 0x6c472820, 0x3281e: 0x6c472a20, 0x3281f: 0x6c472c20,\n\t0x32820: 0x6c472e20, 0x32821: 0x6c473020, 0x32822: 0x6c473220, 0x32823: 0x6c473420,\n\t0x32824: 0x6c473620, 0x32825: 0x6c473820, 0x32826: 0x6c473a20, 0x32827: 0x6c473c20,\n\t0x32828: 0x6c473e20, 0x32829: 0x6c474020, 0x3282a: 0x6c474220, 0x3282b: 0x6c474420,\n\t0x3282c: 0x6c474620, 0x3282d: 0x6c474820, 0x3282e: 0x6c474a20, 0x3282f: 0x6c474c20,\n\t0x32830: 0x6c474e20, 0x32831: 0x6c475020, 0x32832: 0x6c475220, 0x32833: 0x6c475420,\n\t0x32834: 0x6c475620, 0x32835: 0x6c475820, 0x32836: 0x6c475a20, 0x32837: 0x6c475c20,\n\t0x32838: 0x6c475e20, 0x32839: 0x6c476020, 0x3283a: 0x6c476220, 0x3283b: 0x6c476420,\n\t0x3283c: 0x6c476620, 0x3283d: 0x6c476820, 0x3283e: 0x6c476a20, 0x3283f: 0x6c476c20,\n\t// Block 0xca1, offset 0x32840\n\t0x32840: 0x6c476e20, 0x32841: 0x6c477020, 0x32842: 0x6c477220, 0x32843: 0x6c477420,\n\t0x32844: 0x6c477620, 0x32845: 0x6c477820, 0x32846: 0x6c477a20, 0x32847: 0x6c477c20,\n\t0x32848: 0x6c477e20, 0x32849: 0x6c478020, 0x3284a: 0x6c478220, 0x3284b: 0x6c478420,\n\t0x3284c: 0x6c478620, 0x3284d: 0x6c478820, 0x3284e: 0x6c478a20, 0x3284f: 0x6c478c20,\n\t0x32850: 0x6c478e20, 0x32851: 0x6c479020, 0x32852: 0x6c479220, 0x32853: 0x6c479420,\n\t0x32854: 0x6c479620, 0x32855: 0x6c479820, 0x32856: 0x6c479a20, 0x32857: 0x6c479c20,\n\t0x32858: 0x6c479e20, 0x32859: 0x6c47a020, 0x3285a: 0x6c47a220, 0x3285b: 0x6c47a420,\n\t0x3285c: 0x6c47a620, 0x3285d: 0x6c47a820, 0x3285e: 0x6c47aa20, 0x3285f: 0x6c47ac20,\n\t0x32860: 0x6c47ae20, 0x32861: 0x6c47b020, 0x32862: 0x6c47b220, 0x32863: 0x6c47b420,\n\t0x32864: 0x6c47b620, 0x32865: 0x6c47b820, 0x32866: 0x6c47ba20, 0x32867: 0x6c47bc20,\n\t0x32868: 0x6c47be20, 0x32869: 0x6c47c020, 0x3286a: 0x6c47c220, 0x3286b: 0x6c47c420,\n\t0x3286c: 0x6c684820, 0x3286d: 0x6c684a20, 0x3286e: 0x6c684c20, 0x3286f: 0x6c684e20,\n\t0x32870: 0x6c685020, 0x32871: 0x6c685220, 0x32872: 0x6c685420, 0x32873: 0x6c685620,\n\t0x32874: 0x6c685820, 0x32875: 0x6c685a20, 0x32876: 0x6c685c20, 0x32877: 0x6c685e20,\n\t0x32878: 0x6c686020, 0x32879: 0x6c686220, 0x3287a: 0x6c686420, 0x3287b: 0x6c686620,\n\t0x3287c: 0x6c686820, 0x3287d: 0x6c686a20, 0x3287e: 0x6c686c20, 0x3287f: 0x6c686e20,\n\t// Block 0xca2, offset 0x32880\n\t0x32880: 0x6c687020, 0x32881: 0x6c687220, 0x32882: 0x6c687420, 0x32883: 0x6c687620,\n\t0x32884: 0x6c687820, 0x32885: 0x6c687a20, 0x32886: 0x6c687c20, 0x32887: 0x6c687e20,\n\t0x32888: 0x6c688020, 0x32889: 0x6c688220, 0x3288a: 0x6c688420, 0x3288b: 0x6c688620,\n\t0x3288c: 0x6c688820, 0x3288d: 0x6c688a20, 0x3288e: 0x6c688c20, 0x3288f: 0x6c688e20,\n\t0x32890: 0x6c689020, 0x32891: 0x6c689220, 0x32892: 0x6c689420, 0x32893: 0x6c689620,\n\t0x32894: 0x6c689820, 0x32895: 0x6c689a20, 0x32896: 0x6c689c20, 0x32897: 0x6c689e20,\n\t0x32898: 0x6c68a020, 0x32899: 0x6c68a220, 0x3289a: 0x6c68a420, 0x3289b: 0x6c68a620,\n\t0x3289c: 0x6c68a820, 0x3289d: 0x6c68aa20, 0x3289e: 0x6c68ac20, 0x3289f: 0x6c68ae20,\n\t0x328a0: 0x6c68b020, 0x328a1: 0x6c68b220, 0x328a2: 0x6c68b420, 0x328a3: 0x6c68b620,\n\t0x328a4: 0x6c68b820, 0x328a5: 0x6c8ede20, 0x328a6: 0x6c68ba20, 0x328a7: 0x6c68bc20,\n\t0x328a8: 0x6c68be20, 0x328a9: 0x6c68c020, 0x328aa: 0x6c68c220, 0x328ab: 0x6c7ab620,\n\t0x328ac: 0x6c68c420, 0x328ad: 0x6c68c620, 0x328ae: 0x6c68c820, 0x328af: 0x6c68ca20,\n\t0x328b0: 0x6c68cc20, 0x328b1: 0x6c68ce20, 0x328b2: 0x6c68d020, 0x328b3: 0x6c68d220,\n\t0x328b4: 0x6c68d420, 0x328b5: 0x6c68d620, 0x328b6: 0x6c68d820, 0x328b7: 0x6c68da20,\n\t0x328b8: 0x6c68dc20, 0x328b9: 0x6c68de20, 0x328ba: 0x6c68e020, 0x328bb: 0x6c68e220,\n\t0x328bc: 0x6c68e420, 0x328bd: 0x6c68e620, 0x328be: 0x6c68e820, 0x328bf: 0x6c68ea20,\n\t// Block 0xca3, offset 0x328c0\n\t0x328c0: 0x6c68ec20, 0x328c1: 0x6c68ee20, 0x328c2: 0x6c68f020, 0x328c3: 0x6c68f220,\n\t0x328c4: 0x6c68f420, 0x328c5: 0x6c68f620, 0x328c6: 0x6c68f820, 0x328c7: 0x6c68fa20,\n\t0x328c8: 0x6c68fc20, 0x328c9: 0x6c68fe20, 0x328ca: 0x6c690020, 0x328cb: 0x6c690220,\n\t0x328cc: 0x6c690420, 0x328cd: 0x6c690620, 0x328ce: 0x6c690820, 0x328cf: 0x6c690a20,\n\t0x328d0: 0x6c690c20, 0x328d1: 0x6c690e20, 0x328d2: 0x6c691020, 0x328d3: 0x6c691220,\n\t0x328d4: 0x6c691420, 0x328d5: 0x6c691620, 0x328d6: 0x6c691820, 0x328d7: 0x6c691a20,\n\t0x328d8: 0x6c691c20, 0x328d9: 0x6c691e20, 0x328da: 0x6c692020, 0x328db: 0x6c692220,\n\t0x328dc: 0x6c692420, 0x328dd: 0x6c692620, 0x328de: 0x6c692820, 0x328df: 0x6c692a20,\n\t0x328e0: 0x6c692c20, 0x328e1: 0x6c692e20, 0x328e2: 0x6c693020, 0x328e3: 0x6c693220,\n\t0x328e4: 0x6c693420, 0x328e5: 0x6c693620, 0x328e6: 0x6c7a1a20, 0x328e7: 0x6c8ee020,\n\t0x328e8: 0x6c8ee220, 0x328e9: 0x6c8ee420, 0x328ea: 0x6c8ee620, 0x328eb: 0x6c8ee820,\n\t0x328ec: 0x6c8eea20, 0x328ed: 0x6c8eec20, 0x328ee: 0x6c8eee20, 0x328ef: 0x6c8ef020,\n\t0x328f0: 0x6c8ef220, 0x328f1: 0x6c8ef420, 0x328f2: 0x6c8ef620, 0x328f3: 0x6c8ef820,\n\t0x328f4: 0x6c8efa20, 0x328f5: 0x6c8efc20, 0x328f6: 0x6c8efe20, 0x328f7: 0x6c8f0020,\n\t0x328f8: 0x6c8f0220, 0x328f9: 0x6c8f0420, 0x328fa: 0x6c8f0620, 0x328fb: 0x6c8f0820,\n\t0x328fc: 0x6c8f0a20, 0x328fd: 0x6c8f0c20, 0x328fe: 0x6c8f0e20, 0x328ff: 0x6c8f1020,\n\t// Block 0xca4, offset 0x32900\n\t0x32900: 0x6c8f1220, 0x32901: 0x6c8f1420, 0x32902: 0x6c8f1620, 0x32903: 0x6c8f1820,\n\t0x32904: 0x6c8f1a20, 0x32905: 0x6c8f1c20, 0x32906: 0x6c8f1e20, 0x32907: 0x6c8f2020,\n\t0x32908: 0x6c8f2220, 0x32909: 0x6c8f2420, 0x3290a: 0x6c8f2620, 0x3290b: 0x6c8f2820,\n\t0x3290c: 0x6c8f2a20, 0x3290d: 0x6c8f2c20, 0x3290e: 0x6c8f2e20, 0x3290f: 0x6c8f3020,\n\t0x32910: 0x6c8f3220, 0x32911: 0x6c8f3420, 0x32912: 0x6c8f3620, 0x32913: 0x6c8f3820,\n\t0x32914: 0x6c8f3a20, 0x32915: 0x6c8f3c20, 0x32916: 0x6c8f3e20, 0x32917: 0x6c8f4020,\n\t0x32918: 0x6c8f4220, 0x32919: 0x6c8f4420, 0x3291a: 0x6c8f4620, 0x3291b: 0x6c8f4820,\n\t0x3291c: 0x6c8f4a20, 0x3291d: 0x6c8f4c20, 0x3291e: 0x6c8f4e20, 0x3291f: 0x6c8f5020,\n\t0x32920: 0x6c8f5220, 0x32921: 0x6c8f5420, 0x32922: 0x6c8f5620, 0x32923: 0x6c8f5820,\n\t0x32924: 0x6c8f5a20, 0x32925: 0x6c8f5c20, 0x32926: 0x6c8f5e20, 0x32927: 0x6c8f6020,\n\t0x32928: 0x6c8f6220, 0x32929: 0x6c8f6420, 0x3292a: 0x6c8f6620, 0x3292b: 0x6c8f6820,\n\t0x3292c: 0x6c8f6a20, 0x3292d: 0x6c8f6c20, 0x3292e: 0x6c8f6e20, 0x3292f: 0x6c8f7020,\n\t0x32930: 0x6c8f7220, 0x32931: 0x6c8f7420, 0x32932: 0x6c8f7620, 0x32933: 0x6c8f7820,\n\t0x32934: 0x6c8f7a20, 0x32935: 0x6c8f7c20, 0x32936: 0x6c8f7e20, 0x32937: 0x6c8f8020,\n\t0x32938: 0x6c8f8220, 0x32939: 0x6c8f8420, 0x3293a: 0x6c8f8620, 0x3293b: 0x6c8f8820,\n\t0x3293c: 0x6c8f8a20, 0x3293d: 0x6c8f8c20, 0x3293e: 0x6c8f8e20, 0x3293f: 0x6c8f9020,\n\t// Block 0xca5, offset 0x32940\n\t0x32940: 0x6c8f9220, 0x32941: 0x6c8f9420, 0x32942: 0x6c8f9620, 0x32943: 0x6c8f9820,\n\t0x32944: 0x6c8f9a20, 0x32945: 0x6c8f9c20, 0x32946: 0x6c8f9e20, 0x32947: 0x6c8fa020,\n\t0x32948: 0x6c8fa220, 0x32949: 0x6c8fa420, 0x3294a: 0x6c8fa620, 0x3294b: 0x6c8fa820,\n\t0x3294c: 0x6c8faa20, 0x3294d: 0x6c8fac20, 0x3294e: 0x6c8fae20, 0x3294f: 0x6c8fb020,\n\t0x32950: 0x6c8fb220, 0x32951: 0x6c8fb420, 0x32952: 0x6c8fb620, 0x32953: 0x6c8fb820,\n\t0x32954: 0x6c8fba20, 0x32955: 0x6c8fbc20, 0x32956: 0x6c8fbe20, 0x32957: 0x6c8fc020,\n\t0x32958: 0x6c8fc220, 0x32959: 0x6c8fc420, 0x3295a: 0x6c8fc620, 0x3295b: 0x6c8fc820,\n\t0x3295c: 0x6c8fca20, 0x3295d: 0x6c8fcc20, 0x3295e: 0x6c8fce20, 0x3295f: 0x6c8fd020,\n\t0x32960: 0x6c8fd220, 0x32961: 0x6c8fd420, 0x32962: 0x6c8fd620, 0x32963: 0x6c8fd820,\n\t0x32964: 0x6c8fda20, 0x32965: 0x6c8fdc20, 0x32966: 0x6c8fde20, 0x32967: 0x6c8fe020,\n\t0x32968: 0x6c8fe220, 0x32969: 0x6c8fe420, 0x3296a: 0x6c8fe620, 0x3296b: 0x6c8fe820,\n\t0x3296c: 0x6c8fea20, 0x3296d: 0x6c8fec20, 0x3296e: 0x6c8fee20, 0x3296f: 0x6c8ff020,\n\t0x32970: 0x6c8ff220, 0x32971: 0x6c8ff420, 0x32972: 0x6c8ff620, 0x32973: 0x6c8ff820,\n\t0x32974: 0x6c8ffa20, 0x32975: 0x6c8ffc20, 0x32976: 0x6c8ffe20, 0x32977: 0x6cbb1e20,\n\t0x32978: 0x6cbb2020, 0x32979: 0x6cbb2220, 0x3297a: 0x6cbb2420, 0x3297b: 0x6cbb2620,\n\t0x3297c: 0x6cbb2820, 0x3297d: 0x6cbb2a20, 0x3297e: 0x6cbb2c20, 0x3297f: 0x6cbb2e20,\n\t// Block 0xca6, offset 0x32980\n\t0x32980: 0x6cbb3020, 0x32981: 0x6cbb3220, 0x32982: 0x6cbb3420, 0x32983: 0x6cbb3620,\n\t0x32984: 0x6cbb3820, 0x32985: 0x6cbb3a20, 0x32986: 0x6cbb3c20, 0x32987: 0x6cbb3e20,\n\t0x32988: 0x6cbb4020, 0x32989: 0x6cbb4220, 0x3298a: 0x6cbb4420, 0x3298b: 0x6cbb4620,\n\t0x3298c: 0x6cbb4820, 0x3298d: 0x6cbb4a20, 0x3298e: 0x6cbb4c20, 0x3298f: 0x6cbb4e20,\n\t0x32990: 0x6cbb5020, 0x32991: 0x6cbb5220, 0x32992: 0x6cbb5420, 0x32993: 0x6cbb5620,\n\t0x32994: 0x6cbb5820, 0x32995: 0x6cbb5a20, 0x32996: 0x6cbb5c20, 0x32997: 0x6cbb5e20,\n\t0x32998: 0x6cbb6020, 0x32999: 0x6cbb6220, 0x3299a: 0x6cbb6420, 0x3299b: 0x6cbb6620,\n\t0x3299c: 0x6cbb6820, 0x3299d: 0x6cbb6a20, 0x3299e: 0x6cbb6c20, 0x3299f: 0x6cbb6e20,\n\t0x329a0: 0x6cbb7020, 0x329a1: 0x6cbb7220, 0x329a2: 0x6cebdc20, 0x329a3: 0x6cbb7420,\n\t0x329a4: 0x6cbb7620, 0x329a5: 0x6cbb7820, 0x329a6: 0x6cbb7a20, 0x329a7: 0x6cbb7c20,\n\t0x329a8: 0x6cbb7e20, 0x329a9: 0x6cbb8020, 0x329aa: 0x6cbb8220, 0x329ab: 0x6cbb8420,\n\t0x329ac: 0x6cbb8620, 0x329ad: 0x6cbb8820, 0x329ae: 0x6cbb8a20, 0x329af: 0x6cbb8c20,\n\t0x329b0: 0x6cbb8e20, 0x329b1: 0x6cbb9020, 0x329b2: 0x6cbb9220, 0x329b3: 0x6cbb9420,\n\t0x329b4: 0x6cbb9620, 0x329b5: 0x6cbb9820, 0x329b6: 0x6cbb9a20, 0x329b7: 0x6cbb9c20,\n\t0x329b8: 0x6cbb9e20, 0x329b9: 0x6cbba020, 0x329ba: 0x6cbba220, 0x329bb: 0x6cbba420,\n\t0x329bc: 0x6cbba620, 0x329bd: 0x6cbba820, 0x329be: 0x6cbbaa20, 0x329bf: 0x6cbbac20,\n\t// Block 0xca7, offset 0x329c0\n\t0x329c0: 0x6cbbae20, 0x329c1: 0x6cbbb020, 0x329c2: 0x6cbbb220, 0x329c3: 0x6cbbb420,\n\t0x329c4: 0x6cbbb620, 0x329c5: 0x6cbbb820, 0x329c6: 0x6cbbba20, 0x329c7: 0x6cbbbc20,\n\t0x329c8: 0x6cbbbe20, 0x329c9: 0x6cbbc020, 0x329ca: 0x6cbbc220, 0x329cb: 0x6cbbc420,\n\t0x329cc: 0x6cbbc620, 0x329cd: 0x6cbbc820, 0x329ce: 0x6cbbca20, 0x329cf: 0x6cbbcc20,\n\t0x329d0: 0x6cbbce20, 0x329d1: 0x6cbbd020, 0x329d2: 0x6cbbd220, 0x329d3: 0x6cbbd420,\n\t0x329d4: 0x6cbbd620, 0x329d5: 0x6cbbd820, 0x329d6: 0x6cbbda20, 0x329d7: 0x6cbbdc20,\n\t0x329d8: 0x6cbbde20, 0x329d9: 0x6cbbe020, 0x329da: 0x6cbbe220, 0x329db: 0x6cbbe420,\n\t0x329dc: 0x6cbbe620, 0x329dd: 0x6cbbe820, 0x329de: 0x6cbbea20, 0x329df: 0x6cbbec20,\n\t0x329e0: 0x6cbbee20, 0x329e1: 0x6cbbf020, 0x329e2: 0x6cbbf220, 0x329e3: 0x6cbbf420,\n\t0x329e4: 0x6cbbf620, 0x329e5: 0x6cbbf820, 0x329e6: 0x6cbbfa20, 0x329e7: 0x6cbbfc20,\n\t0x329e8: 0x6cbbfe20, 0x329e9: 0x6cbc0020, 0x329ea: 0x6cbc0220, 0x329eb: 0x6cbc0420,\n\t0x329ec: 0x6cbc0620, 0x329ed: 0x6cbc0820, 0x329ee: 0x6cbc0a20, 0x329ef: 0x6cbc0c20,\n\t0x329f0: 0x6cbc0e20, 0x329f1: 0x6cbc1020, 0x329f2: 0x6cbc1220, 0x329f3: 0x6cbc1420,\n\t0x329f4: 0x6cbc1620, 0x329f5: 0x6cbc1820, 0x329f6: 0x6cebde20, 0x329f7: 0x6cebe020,\n\t0x329f8: 0x6cebe220, 0x329f9: 0x6cebe420, 0x329fa: 0x6cebe620, 0x329fb: 0x6cbc1a20,\n\t0x329fc: 0x6cbc1c20, 0x329fd: 0x6cbc1e20, 0x329fe: 0x6cbc2020, 0x329ff: 0x6cebe820,\n\t// Block 0xca8, offset 0x32a00\n\t0x32a00: 0x6cebea20, 0x32a01: 0x6cebec20, 0x32a02: 0x6cebee20, 0x32a03: 0x6cebf020,\n\t0x32a04: 0x6cebf220, 0x32a05: 0x6cebf420, 0x32a06: 0x6cebf620, 0x32a07: 0x6cebf820,\n\t0x32a08: 0x6cebfa20, 0x32a09: 0x6cebfc20, 0x32a0a: 0x6cebfe20, 0x32a0b: 0x6cec0020,\n\t0x32a0c: 0x6cec0220, 0x32a0d: 0x6cec0420, 0x32a0e: 0x6cec0620, 0x32a0f: 0x6cec0820,\n\t0x32a10: 0x6cec0a20, 0x32a11: 0x6cec0c20, 0x32a12: 0x6cec0e20, 0x32a13: 0x6cec1020,\n\t0x32a14: 0x6cec1220, 0x32a15: 0x6cec1420, 0x32a16: 0x6cec1620, 0x32a17: 0x6cec1820,\n\t0x32a18: 0x6cec1a20, 0x32a19: 0x6cec1c20, 0x32a1a: 0x6cec1e20, 0x32a1b: 0x6cec2020,\n\t0x32a1c: 0x6cec2220, 0x32a1d: 0x6cec2420, 0x32a1e: 0x6cec2620, 0x32a1f: 0x6cec2820,\n\t0x32a20: 0x6cec2a20, 0x32a21: 0x6cec2c20, 0x32a22: 0x6cec2e20, 0x32a23: 0x6cec3020,\n\t0x32a24: 0x6cec3220, 0x32a25: 0x6cec3420, 0x32a26: 0x6cec3620, 0x32a27: 0x6cec3820,\n\t0x32a28: 0x6cec3a20, 0x32a29: 0x6cec3c20, 0x32a2a: 0x6cec3e20, 0x32a2b: 0x6cec4020,\n\t0x32a2c: 0x6cec4220, 0x32a2d: 0x6cec4420, 0x32a2e: 0x6cec4620, 0x32a2f: 0x6cec4820,\n\t0x32a30: 0x6d49ce20, 0x32a31: 0x6d49d020, 0x32a32: 0x6d49d220, 0x32a33: 0x6cec4a20,\n\t0x32a34: 0x6cec4c20, 0x32a35: 0x6cec4e20, 0x32a36: 0x6cec5020, 0x32a37: 0x6cec5220,\n\t0x32a38: 0x6cec5420, 0x32a39: 0x6cec5620, 0x32a3a: 0x6cec5820, 0x32a3b: 0x6cec5a20,\n\t0x32a3c: 0x6cec5c20, 0x32a3d: 0x6cec5e20, 0x32a3e: 0x6cec6020, 0x32a3f: 0x6cec6220,\n\t// Block 0xca9, offset 0x32a40\n\t0x32a40: 0x6cec6420, 0x32a41: 0x6cec6620, 0x32a42: 0x6cec6820, 0x32a43: 0x6cec6a20,\n\t0x32a44: 0x6cec6c20, 0x32a45: 0x6cec6e20, 0x32a46: 0x6cec7020, 0x32a47: 0x6cec7220,\n\t0x32a48: 0x6cec7420, 0x32a49: 0x6cec7620, 0x32a4a: 0x6cec7820, 0x32a4b: 0x6cec7a20,\n\t0x32a4c: 0x6cec7c20, 0x32a4d: 0x6cec7e20, 0x32a4e: 0x6cec8020, 0x32a4f: 0x6cec8220,\n\t0x32a50: 0x6cec8420, 0x32a51: 0x6cec8620, 0x32a52: 0x6cec8820, 0x32a53: 0x6cec8a20,\n\t0x32a54: 0x6cec8c20, 0x32a55: 0x6cec8e20, 0x32a56: 0x6cec9020, 0x32a57: 0x6cec9220,\n\t0x32a58: 0x6cec9420, 0x32a59: 0x6cec9620, 0x32a5a: 0x6cec9820, 0x32a5b: 0x6cec9a20,\n\t0x32a5c: 0x6cec9c20, 0x32a5d: 0x6cec9e20, 0x32a5e: 0x6ceca020, 0x32a5f: 0x6ceca220,\n\t0x32a60: 0x6ceca420, 0x32a61: 0x6ceca620, 0x32a62: 0x6ceca820, 0x32a63: 0x6cecaa20,\n\t0x32a64: 0x6cecac20, 0x32a65: 0x6cecae20, 0x32a66: 0x6cecb020, 0x32a67: 0x6cecb220,\n\t0x32a68: 0x6cecb420, 0x32a69: 0x6cecb620, 0x32a6a: 0x6cecb820, 0x32a6b: 0x6cecba20,\n\t0x32a6c: 0x6cecbc20, 0x32a6d: 0x6cecbe20, 0x32a6e: 0x6cecc020, 0x32a6f: 0x6cecc220,\n\t0x32a70: 0x6cecc420, 0x32a71: 0x6cecc620, 0x32a72: 0x6cecc820, 0x32a73: 0x6cecca20,\n\t0x32a74: 0x6ceccc20, 0x32a75: 0x6cecce20, 0x32a76: 0x6cecd020, 0x32a77: 0x6cecd220,\n\t0x32a78: 0x6cecd420, 0x32a79: 0x6cecd620, 0x32a7a: 0x6cecd820, 0x32a7b: 0x6cecda20,\n\t0x32a7c: 0x6cecdc20, 0x32a7d: 0x6cecde20, 0x32a7e: 0x6cece020, 0x32a7f: 0x6cece220,\n\t// Block 0xcaa, offset 0x32a80\n\t0x32a80: 0x6cece420, 0x32a81: 0x6cece620, 0x32a82: 0x6cece820, 0x32a83: 0x6cecea20,\n\t0x32a84: 0x6cecec20, 0x32a85: 0x6cecee20, 0x32a86: 0x6cecf020, 0x32a87: 0x6cecf220,\n\t0x32a88: 0x6cecf420, 0x32a89: 0x6cecf620, 0x32a8a: 0x6cecf820, 0x32a8b: 0x6cecfa20,\n\t0x32a8c: 0x6cecfc20, 0x32a8d: 0x6cecfe20, 0x32a8e: 0x6ced0020, 0x32a8f: 0x6ced0220,\n\t0x32a90: 0x6ced0420, 0x32a91: 0x6ced0620, 0x32a92: 0x6ced0820, 0x32a93: 0x6ced0a20,\n\t0x32a94: 0x6d1bb620, 0x32a95: 0x6d1bb820, 0x32a96: 0x6d1bba20, 0x32a97: 0x6d1bbc20,\n\t0x32a98: 0x6d1bbe20, 0x32a99: 0x6d1bc020, 0x32a9a: 0x6d1bc220, 0x32a9b: 0x6d1bc420,\n\t0x32a9c: 0x6d1bc620, 0x32a9d: 0x6d1bc820, 0x32a9e: 0x6d1bca20, 0x32a9f: 0x6d1bcc20,\n\t0x32aa0: 0x6d1bce20, 0x32aa1: 0x6d1bd020, 0x32aa2: 0x6d1bd220, 0x32aa3: 0x6d1bd420,\n\t0x32aa4: 0x6d1bd620, 0x32aa5: 0x6d1bd820, 0x32aa6: 0x6d1bda20, 0x32aa7: 0x6d1bdc20,\n\t0x32aa8: 0x6d1bde20, 0x32aa9: 0x6d1be020, 0x32aaa: 0x6d1be220, 0x32aab: 0x6d1be420,\n\t0x32aac: 0x6d1be620, 0x32aad: 0x6d1be820, 0x32aae: 0x6d1bea20, 0x32aaf: 0x6d1bec20,\n\t0x32ab0: 0x6d1bee20, 0x32ab1: 0x6d1bf020, 0x32ab2: 0x6d1bf220, 0x32ab3: 0x6d1bf420,\n\t0x32ab4: 0x6d1bf620, 0x32ab5: 0x6d1bf820, 0x32ab6: 0x6d1bfa20, 0x32ab7: 0x6d1bfc20,\n\t0x32ab8: 0x6d1bfe20, 0x32ab9: 0x6d1c0020, 0x32aba: 0x6d1c0220, 0x32abb: 0x6d1c0420,\n\t0x32abc: 0x6d1c0620, 0x32abd: 0x6d1c0820, 0x32abe: 0x6d1c0a20, 0x32abf: 0x6d1c0c20,\n\t// Block 0xcab, offset 0x32ac0\n\t0x32ac0: 0x6d1c0e20, 0x32ac1: 0x6d1c1020, 0x32ac2: 0x6d1c1220, 0x32ac3: 0x6d1c1420,\n\t0x32ac4: 0x6d1c1620, 0x32ac5: 0x6d1c1820, 0x32ac6: 0x6d1c1a20, 0x32ac7: 0x6d1c1c20,\n\t0x32ac8: 0x6d1c1e20, 0x32ac9: 0x6d1c2020, 0x32aca: 0x6d1c2220, 0x32acb: 0x6d1c2420,\n\t0x32acc: 0x6d1c2620, 0x32acd: 0x6d1c2820, 0x32ace: 0x6d1c2a20, 0x32acf: 0x6d1c2c20,\n\t0x32ad0: 0x6d1c2e20, 0x32ad1: 0x6d1c3020, 0x32ad2: 0x6d1c3220, 0x32ad3: 0x6d1c3420,\n\t0x32ad4: 0x6d1c3620, 0x32ad5: 0x6d1c3820, 0x32ad6: 0x6d1c3a20, 0x32ad7: 0x6d1c3c20,\n\t0x32ad8: 0x6d1c3e20, 0x32ad9: 0x6d1c4020, 0x32ada: 0x6d1c4220, 0x32adb: 0x6d1c4420,\n\t0x32adc: 0x6d1c4620, 0x32add: 0x6d1c4820, 0x32ade: 0x6d1c4a20, 0x32adf: 0x6d1c4c20,\n\t0x32ae0: 0x6d1c4e20, 0x32ae1: 0x6d1c5020, 0x32ae2: 0x6d1c5220, 0x32ae3: 0x6d1c5420,\n\t0x32ae4: 0x6d1c5620, 0x32ae5: 0x6d1c5820, 0x32ae6: 0x6d1c5a20, 0x32ae7: 0x6d1c5c20,\n\t0x32ae8: 0x6d1c5e20, 0x32ae9: 0x6d1c6020, 0x32aea: 0x6d1c6220, 0x32aeb: 0x6d1c6420,\n\t0x32aec: 0x6d1c6620, 0x32aed: 0x6d1c6820, 0x32aee: 0x6d1c6a20, 0x32aef: 0x6d1c6c20,\n\t0x32af0: 0x6d1c6e20, 0x32af1: 0x6d1c7020, 0x32af2: 0x6d1c7220, 0x32af3: 0x6d1c7420,\n\t0x32af4: 0x6d1c7620, 0x32af5: 0x6d1c7820, 0x32af6: 0x6d1c7a20, 0x32af7: 0x6d1c7c20,\n\t0x32af8: 0x6d1c7e20, 0x32af9: 0x6d1c8020, 0x32afa: 0x6d1c8220, 0x32afb: 0x6d1c8420,\n\t0x32afc: 0x6d1c8620, 0x32afd: 0x6d1c8820, 0x32afe: 0x6d1c8a20, 0x32aff: 0x6d1c8c20,\n\t// Block 0xcac, offset 0x32b00\n\t0x32b00: 0x6d1c8e20, 0x32b01: 0x6d1c9020, 0x32b02: 0x6d1c9220, 0x32b03: 0x6d1c9420,\n\t0x32b04: 0x6d1c9620, 0x32b05: 0x6d1c9820, 0x32b06: 0x6d1c9a20, 0x32b07: 0x6d1c9c20,\n\t0x32b08: 0x6d1c9e20, 0x32b09: 0x6d1ca020, 0x32b0a: 0x6d1ca220, 0x32b0b: 0x6d1ca420,\n\t0x32b0c: 0x6d1ca620, 0x32b0d: 0x6d1ca820, 0x32b0e: 0x6d1caa20, 0x32b0f: 0x6d1cac20,\n\t0x32b10: 0x6d1cae20, 0x32b11: 0x6d1cb020, 0x32b12: 0x6d1cb220, 0x32b13: 0x6d1cb420,\n\t0x32b14: 0x6d1cb620, 0x32b15: 0x6d1cb820, 0x32b16: 0x6d1cba20, 0x32b17: 0x6d1cbc20,\n\t0x32b18: 0x6d1cbe20, 0x32b19: 0x6d1cc020, 0x32b1a: 0x6d1cc220, 0x32b1b: 0x6d1cc420,\n\t0x32b1c: 0x6d1cc620, 0x32b1d: 0x6d1cc820, 0x32b1e: 0x6d1cca20, 0x32b1f: 0x6d1ccc20,\n\t0x32b20: 0x6d1cce20, 0x32b21: 0x6d49d420, 0x32b22: 0x6d49d620, 0x32b23: 0x6d49d820,\n\t0x32b24: 0x6d49da20, 0x32b25: 0x6d49dc20, 0x32b26: 0x6d49de20, 0x32b27: 0x6d49e020,\n\t0x32b28: 0x6d49e220, 0x32b29: 0x6d49e420, 0x32b2a: 0x6d49e620, 0x32b2b: 0x6d49e820,\n\t0x32b2c: 0x6d49ea20, 0x32b2d: 0x6d49ec20, 0x32b2e: 0x6d49ee20, 0x32b2f: 0x6d49f020,\n\t0x32b30: 0x6d49f220, 0x32b31: 0x6d49f420, 0x32b32: 0x6d49f620, 0x32b33: 0x6d49f820,\n\t0x32b34: 0x6d49fa20, 0x32b35: 0x6d49fc20, 0x32b36: 0x6d49fe20, 0x32b37: 0x6d4a0020,\n\t0x32b38: 0x6d4a0220, 0x32b39: 0x6d4a0420, 0x32b3a: 0x6d4a0620, 0x32b3b: 0x6d4a0820,\n\t0x32b3c: 0x6d4a0a20, 0x32b3d: 0x6d4a0c20, 0x32b3e: 0x6d4a0e20, 0x32b3f: 0x6d4a1020,\n\t// Block 0xcad, offset 0x32b40\n\t0x32b40: 0x6d4a1220, 0x32b41: 0x6d4a1420, 0x32b42: 0x6d4a1620, 0x32b43: 0x6d4a1820,\n\t0x32b44: 0x6d4a1a20, 0x32b45: 0x6d4a1c20, 0x32b46: 0x6d4a1e20, 0x32b47: 0x6d4a2020,\n\t0x32b48: 0x6d4a2220, 0x32b49: 0x6d4a2420, 0x32b4a: 0x6d4a2620, 0x32b4b: 0x6d4a2820,\n\t0x32b4c: 0x6d4a2a20, 0x32b4d: 0x6d4a2c20, 0x32b4e: 0x6d4a2e20, 0x32b4f: 0x6d4a3020,\n\t0x32b50: 0x6d4a3220, 0x32b51: 0x6d4a3420, 0x32b52: 0x6d4a3620, 0x32b53: 0x6d4a3820,\n\t0x32b54: 0x6d4a3a20, 0x32b55: 0x6d4a3c20, 0x32b56: 0x6d4a3e20, 0x32b57: 0x6d4a4020,\n\t0x32b58: 0x6d4a4220, 0x32b59: 0x6d4a4420, 0x32b5a: 0x6d4a4620, 0x32b5b: 0x6d4a4820,\n\t0x32b5c: 0x6d4a4a20, 0x32b5d: 0x6d4a4c20, 0x32b5e: 0x6d4a4e20, 0x32b5f: 0x6d4a5020,\n\t0x32b60: 0x6d4a5220, 0x32b61: 0x6d4a5420, 0x32b62: 0x6d4a5620, 0x32b63: 0x6d4a5820,\n\t0x32b64: 0x6d4a5a20, 0x32b65: 0x6d4a5c20, 0x32b66: 0x6d4a5e20, 0x32b67: 0x6d311620,\n\t0x32b68: 0x6d4a6020, 0x32b69: 0x6d4a6220, 0x32b6a: 0x6d4a6420, 0x32b6b: 0x6d4a6620,\n\t0x32b6c: 0x6d4a6820, 0x32b6d: 0x6d4a6a20, 0x32b6e: 0x6d4a6c20, 0x32b6f: 0x6d4a6e20,\n\t0x32b70: 0x6d4a7020, 0x32b71: 0x6d4a7220, 0x32b72: 0x6d4a7420, 0x32b73: 0x6d4a7620,\n\t0x32b74: 0x6d4a7820, 0x32b75: 0x6d4a7a20, 0x32b76: 0x6d4a7c20, 0x32b77: 0x6d4a7e20,\n\t0x32b78: 0x6d4a8020, 0x32b79: 0x6d4a8220, 0x32b7a: 0x6d4a8420, 0x32b7b: 0x6d4a8620,\n\t0x32b7c: 0x6d4a8820, 0x32b7d: 0x6d4a8a20, 0x32b7e: 0x6d4a8c20, 0x32b7f: 0x6d4a8e20,\n\t// Block 0xcae, offset 0x32b80\n\t0x32b80: 0x6d4a9020, 0x32b81: 0x6d4a9220, 0x32b82: 0x6d4a9420, 0x32b83: 0x6d4a9620,\n\t0x32b84: 0x6d4a9820, 0x32b85: 0x6d4a9a20, 0x32b86: 0x6d4a9c20, 0x32b87: 0x6d775e20,\n\t0x32b88: 0x6d776020, 0x32b89: 0x6d776220, 0x32b8a: 0x6d776420, 0x32b8b: 0x6d776620,\n\t0x32b8c: 0x6d776820, 0x32b8d: 0x6d776a20, 0x32b8e: 0x6d776c20, 0x32b8f: 0x6d776e20,\n\t0x32b90: 0x6d777020, 0x32b91: 0x6d777220, 0x32b92: 0x6d777420, 0x32b93: 0x6d777620,\n\t0x32b94: 0x6d777820, 0x32b95: 0x6d777a20, 0x32b96: 0x6d777c20, 0x32b97: 0x6d777e20,\n\t0x32b98: 0x6d778020, 0x32b99: 0x6d778220, 0x32b9a: 0x6d778420, 0x32b9b: 0x6d778620,\n\t0x32b9c: 0x6d778820, 0x32b9d: 0x6d778a20, 0x32b9e: 0x6d778c20, 0x32b9f: 0x6d778e20,\n\t0x32ba0: 0x6d779020, 0x32ba1: 0x6d779220, 0x32ba2: 0x6d779420, 0x32ba3: 0x6d779620,\n\t0x32ba4: 0x6d779820, 0x32ba5: 0x6d779a20, 0x32ba6: 0x6d779c20, 0x32ba7: 0x6d779e20,\n\t0x32ba8: 0x6d77a020, 0x32ba9: 0x6d77a220, 0x32baa: 0x6d77a420, 0x32bab: 0x6d77a620,\n\t0x32bac: 0x6d77a820, 0x32bad: 0x6d77aa20, 0x32bae: 0x6d77ac20, 0x32baf: 0x6d77ae20,\n\t0x32bb0: 0x6d77b020, 0x32bb1: 0x6d77b220, 0x32bb2: 0x6d77b420, 0x32bb3: 0x6d77b620,\n\t0x32bb4: 0x6d77b820, 0x32bb5: 0x6d77ba20, 0x32bb6: 0x6d77bc20, 0x32bb7: 0x6d77be20,\n\t0x32bb8: 0x6d77c020, 0x32bb9: 0x6d77c220, 0x32bba: 0x6d77c420, 0x32bbb: 0x6d77c620,\n\t0x32bbc: 0x6d77c820, 0x32bbd: 0x6d77ca20, 0x32bbe: 0x6d77cc20, 0x32bbf: 0x6d77ce20,\n\t// Block 0xcaf, offset 0x32bc0\n\t0x32bc0: 0x6d77d020, 0x32bc1: 0x6d77d220, 0x32bc2: 0x6d77d420, 0x32bc3: 0x6d77d620,\n\t0x32bc4: 0x6d77d820, 0x32bc5: 0x6d77da20, 0x32bc6: 0x6d77dc20, 0x32bc7: 0x6d77de20,\n\t0x32bc8: 0x6d77e020, 0x32bc9: 0x6d77e220, 0x32bca: 0x6d77e420, 0x32bcb: 0x6d77e620,\n\t0x32bcc: 0x6d77e820, 0x32bcd: 0x6d77ea20, 0x32bce: 0x6d77ec20, 0x32bcf: 0x6d77ee20,\n\t0x32bd0: 0x6d77f020, 0x32bd1: 0x6d77f220, 0x32bd2: 0x6d77f420, 0x32bd3: 0x6d77f620,\n\t0x32bd4: 0x6d4a9e20, 0x32bd5: 0x6d77f820, 0x32bd6: 0x6d77fa20, 0x32bd7: 0x6d77fc20,\n\t0x32bd8: 0x6d77fe20, 0x32bd9: 0x6d780020, 0x32bda: 0x6d780220, 0x32bdb: 0x6d780420,\n\t0x32bdc: 0x6d780620, 0x32bdd: 0x6d780820, 0x32bde: 0x6d780a20, 0x32bdf: 0x6d780c20,\n\t0x32be0: 0x6d780e20, 0x32be1: 0x6d781020, 0x32be2: 0x6d781220, 0x32be3: 0x6d781420,\n\t0x32be4: 0x6d781620, 0x32be5: 0x6d781820, 0x32be6: 0x6d4aa020, 0x32be7: 0x6d781a20,\n\t0x32be8: 0x6d781c20, 0x32be9: 0x6d781e20, 0x32bea: 0x6d782020, 0x32beb: 0x6d782220,\n\t0x32bec: 0x6d782420, 0x32bed: 0x6d782620, 0x32bee: 0x6d782820, 0x32bef: 0x6d782a20,\n\t0x32bf0: 0x6d782c20, 0x32bf1: 0x6d782e20, 0x32bf2: 0x6d783020, 0x32bf3: 0x6d783220,\n\t0x32bf4: 0x6d783420, 0x32bf5: 0x6d783620, 0x32bf6: 0x6d783820, 0x32bf7: 0x6d783a20,\n\t0x32bf8: 0x6d783c20, 0x32bf9: 0x6d783e20, 0x32bfa: 0x6d784020, 0x32bfb: 0x6d784220,\n\t0x32bfc: 0x6d784420, 0x32bfd: 0x6da0d020, 0x32bfe: 0x6da0d220, 0x32bff: 0x6da0d420,\n\t// Block 0xcb0, offset 0x32c00\n\t0x32c00: 0x6da0d620, 0x32c01: 0x6da0d820, 0x32c02: 0x6da0da20, 0x32c03: 0x6da0dc20,\n\t0x32c04: 0x6da0de20, 0x32c05: 0x6da0e020, 0x32c06: 0x6da0e220, 0x32c07: 0x6da0e420,\n\t0x32c08: 0x6da0e620, 0x32c09: 0x6da0e820, 0x32c0a: 0x6da0ea20, 0x32c0b: 0x6da0ec20,\n\t0x32c0c: 0x6da0ee20, 0x32c0d: 0x6da0f020, 0x32c0e: 0x6da0f220, 0x32c0f: 0x6da0f420,\n\t0x32c10: 0x6da0f620, 0x32c11: 0x6da0f820, 0x32c12: 0x6da0fa20, 0x32c13: 0x6da0fc20,\n\t0x32c14: 0x6da0fe20, 0x32c15: 0x6da10020, 0x32c16: 0x6da10220, 0x32c17: 0x6da10420,\n\t0x32c18: 0x6da10620, 0x32c19: 0x6da10820, 0x32c1a: 0x6da10a20, 0x32c1b: 0x6da10c20,\n\t0x32c1c: 0x6da10e20, 0x32c1d: 0x6da11020, 0x32c1e: 0x6da11220, 0x32c1f: 0x6da11420,\n\t0x32c20: 0x6da11620, 0x32c21: 0x6da11820, 0x32c22: 0x6da11a20, 0x32c23: 0x6da11c20,\n\t0x32c24: 0x6da11e20, 0x32c25: 0x6da12020, 0x32c26: 0x6da12220, 0x32c27: 0x6da12420,\n\t0x32c28: 0x6da12620, 0x32c29: 0x6da12820, 0x32c2a: 0x6da12a20, 0x32c2b: 0x6da12c20,\n\t0x32c2c: 0x6da12e20, 0x32c2d: 0x6da13020, 0x32c2e: 0x6da13220, 0x32c2f: 0x6da13420,\n\t0x32c30: 0x6da13620, 0x32c31: 0x6da13820, 0x32c32: 0x6da13a20, 0x32c33: 0x6da13c20,\n\t0x32c34: 0x6da13e20, 0x32c35: 0x6da14020, 0x32c36: 0x6da14220, 0x32c37: 0x6da14420,\n\t0x32c38: 0x6da14620, 0x32c39: 0x6da14820, 0x32c3a: 0x6da14a20, 0x32c3b: 0x6da14c20,\n\t0x32c3c: 0x6da14e20, 0x32c3d: 0x6da15020, 0x32c3e: 0x6da15220, 0x32c3f: 0x6da15420,\n\t// Block 0xcb1, offset 0x32c40\n\t0x32c40: 0x6da15620, 0x32c41: 0x6da15820, 0x32c42: 0x6da15a20, 0x32c43: 0x6da15c20,\n\t0x32c44: 0x6da15e20, 0x32c45: 0x6da16020, 0x32c46: 0x6da16220, 0x32c47: 0x6da16420,\n\t0x32c48: 0x6da16620, 0x32c49: 0x6da16820, 0x32c4a: 0x6da16a20, 0x32c4b: 0x6da16c20,\n\t0x32c4c: 0x6da16e20, 0x32c4d: 0x6da17020, 0x32c4e: 0x6da17220, 0x32c4f: 0x6dc32a20,\n\t0x32c50: 0x6dc32c20, 0x32c51: 0x6dc32e20, 0x32c52: 0x6dc33020, 0x32c53: 0x6dc33220,\n\t0x32c54: 0x6dc33420, 0x32c55: 0x6dc33620, 0x32c56: 0x6dc33820, 0x32c57: 0x6dc33a20,\n\t0x32c58: 0x6dc33c20, 0x32c59: 0x6dc33e20, 0x32c5a: 0x6dc34020, 0x32c5b: 0x6dc34220,\n\t0x32c5c: 0x6dc34420, 0x32c5d: 0x6dc34620, 0x32c5e: 0x6dc34820, 0x32c5f: 0x6dc34a20,\n\t0x32c60: 0x6dc34c20, 0x32c61: 0x6dc34e20, 0x32c62: 0x6dc35020, 0x32c63: 0x6dc35220,\n\t0x32c64: 0x6dc35420, 0x32c65: 0x6dc35620, 0x32c66: 0x6dc35820, 0x32c67: 0x6dc35a20,\n\t0x32c68: 0x6dc35c20, 0x32c69: 0x6dc35e20, 0x32c6a: 0x6dc36020, 0x32c6b: 0x6dc36220,\n\t0x32c6c: 0x6dc36420, 0x32c6d: 0x6dc36620, 0x32c6e: 0x6dc36820, 0x32c6f: 0x6dc36a20,\n\t0x32c70: 0x6dc36c20, 0x32c71: 0x6dc36e20, 0x32c72: 0x6dc37020, 0x32c73: 0x6dc37220,\n\t0x32c74: 0x6dc37420, 0x32c75: 0x6dc37620, 0x32c76: 0x6dc37820, 0x32c77: 0x6dc37a20,\n\t0x32c78: 0x6dc37c20, 0x32c79: 0x6dc37e20, 0x32c7a: 0x6dc38020, 0x32c7b: 0x6dc38220,\n\t0x32c7c: 0x6dc38420, 0x32c7d: 0x6dc38620, 0x32c7e: 0x6dc38820, 0x32c7f: 0x6dc38a20,\n\t// Block 0xcb2, offset 0x32c80\n\t0x32c80: 0x6dc38c20, 0x32c81: 0x6dc38e20, 0x32c82: 0x6dc39020, 0x32c83: 0x6dc39220,\n\t0x32c84: 0x6dc39420, 0x32c85: 0x6dc39620, 0x32c86: 0x6dc39820, 0x32c87: 0x6dc39a20,\n\t0x32c88: 0x6dc39c20, 0x32c89: 0x6dc39e20, 0x32c8a: 0x6dc3a020, 0x32c8b: 0x6dc3a220,\n\t0x32c8c: 0x6dc3a420, 0x32c8d: 0x6dc3a620, 0x32c8e: 0x6dc3a820, 0x32c8f: 0x6dc3aa20,\n\t0x32c90: 0x6dc3ac20, 0x32c91: 0x6dc3ae20, 0x32c92: 0x6dc3b020, 0x32c93: 0x6dc3b220,\n\t0x32c94: 0x6dc3b420, 0x32c95: 0x6dc3b620, 0x32c96: 0x6dc3b820, 0x32c97: 0x6dc3ba20,\n\t0x32c98: 0x6dc3bc20, 0x32c99: 0x6dc3be20, 0x32c9a: 0x6dc3c020, 0x32c9b: 0x6dc3c220,\n\t0x32c9c: 0x6dc3c420, 0x32c9d: 0x6dc3c620, 0x32c9e: 0x6dc3c820, 0x32c9f: 0x6dc3ca20,\n\t0x32ca0: 0x6de09a20, 0x32ca1: 0x6de09c20, 0x32ca2: 0x6de09e20, 0x32ca3: 0x6de0a020,\n\t0x32ca4: 0x6de0a220, 0x32ca5: 0x6de0a420, 0x32ca6: 0x6de0a620, 0x32ca7: 0x6de0a820,\n\t0x32ca8: 0x6de0aa20, 0x32ca9: 0x6de0ac20, 0x32caa: 0x6de0ae20, 0x32cab: 0x6de0b020,\n\t0x32cac: 0x6de0b220, 0x32cad: 0x6de0b420, 0x32cae: 0x6de0b620, 0x32caf: 0x6de0b820,\n\t0x32cb0: 0x6dc3cc20, 0x32cb1: 0x6de0ba20, 0x32cb2: 0x6de0bc20, 0x32cb3: 0x6de0be20,\n\t0x32cb4: 0x6de0c020, 0x32cb5: 0x6de0c220, 0x32cb6: 0x6de0c420, 0x32cb7: 0x6de0c620,\n\t0x32cb8: 0x6de0c820, 0x32cb9: 0x6de0ca20, 0x32cba: 0x6de0cc20, 0x32cbb: 0x6de0ce20,\n\t0x32cbc: 0x6de0d020, 0x32cbd: 0x6de0d220, 0x32cbe: 0x6de0d420, 0x32cbf: 0x6de0d620,\n\t// Block 0xcb3, offset 0x32cc0\n\t0x32cc0: 0x6de0d820, 0x32cc1: 0x6de0da20, 0x32cc2: 0x6de0dc20, 0x32cc3: 0x6de0de20,\n\t0x32cc4: 0x6de0e020, 0x32cc5: 0x6de0e220, 0x32cc6: 0x6de0e420, 0x32cc7: 0x6de0e620,\n\t0x32cc8: 0x6de0e820, 0x32cc9: 0x6de5dc20, 0x32cca: 0x6de0ea20, 0x32ccb: 0x6de0ec20,\n\t0x32ccc: 0x6de0ee20, 0x32ccd: 0x6de0f020, 0x32cce: 0x6de0f220, 0x32ccf: 0x6de0f420,\n\t0x32cd0: 0x6de0f620, 0x32cd1: 0x6df8e220, 0x32cd2: 0x6df8e420, 0x32cd3: 0x6df8e620,\n\t0x32cd4: 0x6df8e820, 0x32cd5: 0x6df8ea20, 0x32cd6: 0x6df8ec20, 0x32cd7: 0x6df8ee20,\n\t0x32cd8: 0x6df8f020, 0x32cd9: 0x6df8f220, 0x32cda: 0x6df8f420, 0x32cdb: 0x6df8f620,\n\t0x32cdc: 0x6df8f820, 0x32cdd: 0x6df8fa20, 0x32cde: 0x6df8fc20, 0x32cdf: 0x6df8fe20,\n\t0x32ce0: 0x6df90020, 0x32ce1: 0x6df90220, 0x32ce2: 0x6df90420, 0x32ce3: 0x6df90620,\n\t0x32ce4: 0x6df90820, 0x32ce5: 0x6df90a20, 0x32ce6: 0x6df90c20, 0x32ce7: 0x6df90e20,\n\t0x32ce8: 0x6df91020, 0x32ce9: 0x6df91220, 0x32cea: 0x6df91420, 0x32ceb: 0x6df91620,\n\t0x32cec: 0x6df91820, 0x32ced: 0x6df91a20, 0x32cee: 0x6df91c20, 0x32cef: 0x6df91e20,\n\t0x32cf0: 0x6df92020, 0x32cf1: 0x6e0cac20, 0x32cf2: 0x6e0cae20, 0x32cf3: 0x6e0cb020,\n\t0x32cf4: 0x6e0cb220, 0x32cf5: 0x6e0cb420, 0x32cf6: 0x6e0cb620, 0x32cf7: 0x6e0cb820,\n\t0x32cf8: 0x6e0cba20, 0x32cf9: 0x6e0cbc20, 0x32cfa: 0x6e0cbe20, 0x32cfb: 0x6e0cc020,\n\t0x32cfc: 0x6e0cc220, 0x32cfd: 0x6e0cc420, 0x32cfe: 0x6e0cc620, 0x32cff: 0x6e0cc820,\n\t// Block 0xcb4, offset 0x32d00\n\t0x32d00: 0x6e0cca20, 0x32d01: 0x6e0ccc20, 0x32d02: 0x6e0cce20, 0x32d03: 0x6e0cd020,\n\t0x32d04: 0x6e0cd220, 0x32d05: 0x6e0cd420, 0x32d06: 0x6e0cd620, 0x32d07: 0x6e0cd820,\n\t0x32d08: 0x6e0cda20, 0x32d09: 0x6e0cdc20, 0x32d0a: 0x6e0cde20, 0x32d0b: 0x6e0ce020,\n\t0x32d0c: 0x6e0ce220, 0x32d0d: 0x6e0ce420, 0x32d0e: 0x6e0ce620, 0x32d0f: 0x6e0ce820,\n\t0x32d10: 0x6e0cea20, 0x32d11: 0x6e0cec20, 0x32d12: 0x6e0cee20, 0x32d13: 0x6e0cf020,\n\t0x32d14: 0x6e0cf220, 0x32d15: 0x6e0d1c20, 0x32d16: 0x6e121420, 0x32d17: 0x6e1c4020,\n\t0x32d18: 0x6e1c4220, 0x32d19: 0x6e1c4420, 0x32d1a: 0x6e1c4620, 0x32d1b: 0x6e1c4820,\n\t0x32d1c: 0x6e1c4a20, 0x32d1d: 0x6e1c4c20, 0x32d1e: 0x6e1c4e20, 0x32d1f: 0x6e1c5020,\n\t0x32d20: 0x6e1c5220, 0x32d21: 0x6e1c5420, 0x32d22: 0x6e1c5620, 0x32d23: 0x6e0cf420,\n\t0x32d24: 0x6e1c5820, 0x32d25: 0x6e1c5a20, 0x32d26: 0x6e1c5c20, 0x32d27: 0x6e1c5e20,\n\t0x32d28: 0x6e1c6020, 0x32d29: 0x6e1c6220, 0x32d2a: 0x6e1c6420, 0x32d2b: 0x6e1c6620,\n\t0x32d2c: 0x6e1c6820, 0x32d2d: 0x6e1c6a20, 0x32d2e: 0x6e1c6c20, 0x32d2f: 0x6e1c6e20,\n\t0x32d30: 0x6e287c20, 0x32d31: 0x6e287e20, 0x32d32: 0x6e288020, 0x32d33: 0x6e288220,\n\t0x32d34: 0x6e288420, 0x32d35: 0x6e288620, 0x32d36: 0x6e288820, 0x32d37: 0x6e288a20,\n\t0x32d38: 0x6e288c20, 0x32d39: 0x6e31a420, 0x32d3a: 0x6e31a620, 0x32d3b: 0x6e31a820,\n\t0x32d3c: 0x6e31aa20, 0x32d3d: 0x6e31ac20, 0x32d3e: 0x6e31ae20, 0x32d3f: 0x6e31b020,\n\t// Block 0xcb5, offset 0x32d40\n\t0x32d40: 0x6e31b220, 0x32d41: 0x6e31b420, 0x32d42: 0x6e31b620, 0x32d43: 0x6e31b820,\n\t0x32d44: 0x6e31ba20, 0x32d45: 0x6e31bc20, 0x32d46: 0x6e384c20, 0x32d47: 0x6e384e20,\n\t0x32d48: 0x6e385020, 0x32d49: 0x6e385220, 0x32d4a: 0x6e385420, 0x32d4b: 0x6e385620,\n\t0x32d4c: 0x6e385820, 0x32d4d: 0x6e385a20, 0x32d4e: 0x6e385c20, 0x32d4f: 0x6e3cfa20,\n\t0x32d50: 0x6e3cfc20, 0x32d51: 0x6e3cfe20, 0x32d52: 0x6e3d0020, 0x32d53: 0x6e3d0220,\n\t0x32d54: 0x6e3d0420, 0x32d55: 0x6e3d0620, 0x32d56: 0x6e3d0820, 0x32d57: 0x6e3d0a20,\n\t0x32d58: 0x6e3d0c20, 0x32d59: 0x6e400a20, 0x32d5a: 0x6e400c20, 0x32d5b: 0x6e428620,\n\t0x32d5c: 0x6e428820, 0x32d5d: 0x6e428a20, 0x32d5e: 0x6e400e20, 0x32d5f: 0x6e45bc20,\n\t0x32d60: 0x6c03c820, 0x32d61: 0x6c03ca20, 0x32d62: 0x6c03cc20, 0x32d63: 0x6c079820,\n\t0x32d64: 0x6c079a20, 0x32d65: 0x6c079c20, 0x32d66: 0x6c079e20, 0x32d67: 0x6c0ea620,\n\t0x32d68: 0x6c0ea820, 0x32d69: 0x6c0eaa20, 0x32d6a: 0x6c0eac20, 0x32d6b: 0x6c0eae20,\n\t0x32d6c: 0x6c0eb020, 0x32d6d: 0x6c0eb220, 0x32d6e: 0x6c0eb420, 0x32d6f: 0x6c0eb620,\n\t0x32d70: 0x6c0eb820, 0x32d71: 0x6c0eba20, 0x32d72: 0x6c0ebc20, 0x32d73: 0x6c0ebe20,\n\t0x32d74: 0x6c1a6e20, 0x32d75: 0x6c1a7020, 0x32d76: 0x6c1a7220, 0x32d77: 0x6c1a7420,\n\t0x32d78: 0x6c1a7620, 0x32d79: 0x6c1a7820, 0x32d7a: 0x6c1a7a20, 0x32d7b: 0x6c1a7c20,\n\t0x32d7c: 0x6c1a7e20, 0x32d7d: 0x6c1a8020, 0x32d7e: 0x6c1a8220, 0x32d7f: 0x6c1a8420,\n\t// Block 0xcb6, offset 0x32d80\n\t0x32d80: 0x6c1a8620, 0x32d81: 0x6c1a8820, 0x32d82: 0x6c1a8a20, 0x32d83: 0x6c1a8c20,\n\t0x32d84: 0x6c1a8e20, 0x32d85: 0x6c1a9020, 0x32d86: 0x6c1a9220, 0x32d87: 0x6c1a9420,\n\t0x32d88: 0x6c2d9620, 0x32d89: 0x6c2d9820, 0x32d8a: 0x6c2d9a20, 0x32d8b: 0x6c2d9c20,\n\t0x32d8c: 0x6c2d9e20, 0x32d8d: 0x6c3bf620, 0x32d8e: 0x6c2da020, 0x32d8f: 0x6c2da220,\n\t0x32d90: 0x6c2da420, 0x32d91: 0x6c2da620, 0x32d92: 0x6c47e220, 0x32d93: 0x6c47e420,\n\t0x32d94: 0x6c47e620, 0x32d95: 0x6c47e820, 0x32d96: 0x6c47ea20, 0x32d97: 0x6c47ec20,\n\t0x32d98: 0x6c47ee20, 0x32d99: 0x6c47f020, 0x32d9a: 0x6c47f220, 0x32d9b: 0x6c47f420,\n\t0x32d9c: 0x6c47f620, 0x32d9d: 0x6c47f820, 0x32d9e: 0x6c47fa20, 0x32d9f: 0x6c47fc20,\n\t0x32da0: 0x6c695c20, 0x32da1: 0x6c695e20, 0x32da2: 0x6c696020, 0x32da3: 0x6c696220,\n\t0x32da4: 0x6c696420, 0x32da5: 0x6c696620, 0x32da6: 0x6c696820, 0x32da7: 0x6c696a20,\n\t0x32da8: 0x6c696c20, 0x32da9: 0x6c696e20, 0x32daa: 0x6c697020, 0x32dab: 0x6c697220,\n\t0x32dac: 0x6c697420, 0x32dad: 0x6c697620, 0x32dae: 0x6c697820, 0x32daf: 0x6c697a20,\n\t0x32db0: 0x6c902820, 0x32db1: 0x6c902a20, 0x32db2: 0x6c902c20, 0x32db3: 0x6c902e20,\n\t0x32db4: 0x6c903020, 0x32db5: 0x6c903220, 0x32db6: 0x6c903420, 0x32db7: 0x6c903620,\n\t0x32db8: 0x6c903820, 0x32db9: 0x6c903a20, 0x32dba: 0x6c903c20, 0x32dbb: 0x6c903e20,\n\t0x32dbc: 0x6cbc4820, 0x32dbd: 0x6cbc4a20, 0x32dbe: 0x6cbc4c20, 0x32dbf: 0x6cbc4e20,\n\t// Block 0xcb7, offset 0x32dc0\n\t0x32dc0: 0x6c904020, 0x32dc1: 0x6cbc5020, 0x32dc2: 0x6cbc5220, 0x32dc3: 0x6cbc5420,\n\t0x32dc4: 0x6cbc5620, 0x32dc5: 0x6cbc5820, 0x32dc6: 0x6cbc5a20, 0x32dc7: 0x6cbc5c20,\n\t0x32dc8: 0x6cbc5e20, 0x32dc9: 0x6cbc6020, 0x32dca: 0x6ced3220, 0x32dcb: 0x6ced3420,\n\t0x32dcc: 0x6ced3620, 0x32dcd: 0x6ced3820, 0x32dce: 0x6ced3a20, 0x32dcf: 0x6ced3c20,\n\t0x32dd0: 0x6ced3e20, 0x32dd1: 0x6ced4020, 0x32dd2: 0x6ced4220, 0x32dd3: 0x6ced4420,\n\t0x32dd4: 0x6ced4620, 0x32dd5: 0x6d1cfa20, 0x32dd6: 0x6d1cfc20, 0x32dd7: 0x6d1cfe20,\n\t0x32dd8: 0x6d1d0020, 0x32dd9: 0x6d1d0220, 0x32dda: 0x6d1d0420, 0x32ddb: 0x6d1d0620,\n\t0x32ddc: 0x6d1d0820, 0x32ddd: 0x6d1d0a20, 0x32dde: 0x6d1d0c20, 0x32ddf: 0x6d1d0e20,\n\t0x32de0: 0x6d1d1020, 0x32de1: 0x6d1d1220, 0x32de2: 0x6d4ab820, 0x32de3: 0x6d4aba20,\n\t0x32de4: 0x6d4abc20, 0x32de5: 0x6d785c20, 0x32de6: 0x6d4abe20, 0x32de7: 0x6d4ac020,\n\t0x32de8: 0x6d4ac220, 0x32de9: 0x6d4ac420, 0x32dea: 0x6d785e20, 0x32deb: 0x6d786020,\n\t0x32dec: 0x6d786220, 0x32ded: 0x6da17e20, 0x32dee: 0x6da18020, 0x32def: 0x6da18220,\n\t0x32df0: 0x6da18420, 0x32df1: 0x6da18620, 0x32df2: 0x6dc3de20, 0x32df3: 0x6de0fe20,\n\t0x32df4: 0x6de10020, 0x32df5: 0x6df92c20, 0x32df6: 0x6df92e20, 0x32df7: 0x6df93020,\n\t0x32df8: 0x6e0cf620, 0x32df9: 0x6e0cf820, 0x32dfa: 0x6e0cfa20, 0x32dfb: 0x6e3d1020,\n\t0x32dfc: 0x6c03d420, 0x32dfd: 0x6c03d620, 0x32dfe: 0x6c03d820, 0x32dff: 0x6c07ae20,\n\t// Block 0xcb8, offset 0x32e00\n\t0x32e00: 0x6c07b020, 0x32e01: 0x6c07b220, 0x32e02: 0x6c07b420, 0x32e03: 0x6c07b620,\n\t0x32e04: 0x6c07b820, 0x32e05: 0x6c07ba20, 0x32e06: 0x6c07bc20, 0x32e07: 0x6c07be20,\n\t0x32e08: 0x6c0ee620, 0x32e09: 0x6c0ee820, 0x32e0a: 0x6c0eea20, 0x32e0b: 0x6c0eec20,\n\t0x32e0c: 0x6c0eee20, 0x32e0d: 0x6c0ef020, 0x32e0e: 0x6c0ef220, 0x32e0f: 0x6c0ef420,\n\t0x32e10: 0x6c0ef620, 0x32e11: 0x6c0ef820, 0x32e12: 0x6c0efa20, 0x32e13: 0x6c0efc20,\n\t0x32e14: 0x6c0efe20, 0x32e15: 0x6c0f0020, 0x32e16: 0x6c0f0220, 0x32e17: 0x6c0fb020,\n\t0x32e18: 0x6c1af820, 0x32e19: 0x6c1afa20, 0x32e1a: 0x6c1afc20, 0x32e1b: 0x6c1afe20,\n\t0x32e1c: 0x6c1b0020, 0x32e1d: 0x6c1b0220, 0x32e1e: 0x6c1b0420, 0x32e1f: 0x6c1b0620,\n\t0x32e20: 0x6c1b0820, 0x32e21: 0x6c1b0a20, 0x32e22: 0x6c1b0c20, 0x32e23: 0x6c1b0e20,\n\t0x32e24: 0x6c1b1020, 0x32e25: 0x6c1b1220, 0x32e26: 0x6c1b1420, 0x32e27: 0x6c1b1620,\n\t0x32e28: 0x6c1b1820, 0x32e29: 0x6c1b1a20, 0x32e2a: 0x6c1b1c20, 0x32e2b: 0x6c1b1e20,\n\t0x32e2c: 0x6c1b2020, 0x32e2d: 0x6c1b2220, 0x32e2e: 0x6c1b2420, 0x32e2f: 0x6c1b2620,\n\t0x32e30: 0x6c1b2820, 0x32e31: 0x6c1b2a20, 0x32e32: 0x6c1b2c20, 0x32e33: 0x6c1b2e20,\n\t0x32e34: 0x6c1b3020, 0x32e35: 0x6c1b3220, 0x32e36: 0x6c1b3420, 0x32e37: 0x6c1b3620,\n\t0x32e38: 0x6c1b3820, 0x32e39: 0x6c1b3a20, 0x32e3a: 0x6c1b3c20, 0x32e3b: 0x6c1b3e20,\n\t0x32e3c: 0x6c1b4020, 0x32e3d: 0x6c1b4220, 0x32e3e: 0x6c1b4420, 0x32e3f: 0x6c1b4620,\n\t// Block 0xcb9, offset 0x32e40\n\t0x32e40: 0x6c1b4820, 0x32e41: 0x6c1b4a20, 0x32e42: 0x6c1b4c20, 0x32e43: 0x6c1b4e20,\n\t0x32e44: 0x6c2e0820, 0x32e45: 0x6c2e0a20, 0x32e46: 0x6c2e0c20, 0x32e47: 0x6c2e0e20,\n\t0x32e48: 0x6c2e1020, 0x32e49: 0x6c2e1220, 0x32e4a: 0x6c2e1420, 0x32e4b: 0x6c2e1620,\n\t0x32e4c: 0x6c2e1820, 0x32e4d: 0x6c2e1a20, 0x32e4e: 0x6c2e1c20, 0x32e4f: 0x6c2e1e20,\n\t0x32e50: 0x6c2e2020, 0x32e51: 0x6c2e2220, 0x32e52: 0x6c2e2420, 0x32e53: 0x6c2e2620,\n\t0x32e54: 0x6c2e2820, 0x32e55: 0x6c2e2a20, 0x32e56: 0x6c2e2c20, 0x32e57: 0x6c2e2e20,\n\t0x32e58: 0x6c2e3020, 0x32e59: 0x6c2e3220, 0x32e5a: 0x6c2e3420, 0x32e5b: 0x6c2e3620,\n\t0x32e5c: 0x6c2e3820, 0x32e5d: 0x6c2e3a20, 0x32e5e: 0x6c2e3c20, 0x32e5f: 0x6c2e3e20,\n\t0x32e60: 0x6c2e4020, 0x32e61: 0x6c2e4220, 0x32e62: 0x6c2e4420, 0x32e63: 0x6c2e4620,\n\t0x32e64: 0x6c2e4820, 0x32e65: 0x6c2e4a20, 0x32e66: 0x6c2e4c20, 0x32e67: 0x6c2e4e20,\n\t0x32e68: 0x6c2e5020, 0x32e69: 0x6c2e5220, 0x32e6a: 0x6c2e5420, 0x32e6b: 0x6c2e5620,\n\t0x32e6c: 0x6c2e5820, 0x32e6d: 0x6c2e5a20, 0x32e6e: 0x6c2e5c20, 0x32e6f: 0x6c2e5e20,\n\t0x32e70: 0x6c2e6020, 0x32e71: 0x6c2e6220, 0x32e72: 0x6c2e6420, 0x32e73: 0x6c2e6620,\n\t0x32e74: 0x6c2e6820, 0x32e75: 0x6c2e6a20, 0x32e76: 0x6c2e6c20, 0x32e77: 0x6c486a20,\n\t0x32e78: 0x6c486c20, 0x32e79: 0x6c486e20, 0x32e7a: 0x6c487020, 0x32e7b: 0x6c487220,\n\t0x32e7c: 0x6c487420, 0x32e7d: 0x6c487620, 0x32e7e: 0x6c487820, 0x32e7f: 0x6c487a20,\n\t// Block 0xcba, offset 0x32e80\n\t0x32e80: 0x6c487c20, 0x32e81: 0x6c487e20, 0x32e82: 0x6c488020, 0x32e83: 0x6c488220,\n\t0x32e84: 0x6c488420, 0x32e85: 0x6c488620, 0x32e86: 0x6c488820, 0x32e87: 0x6c488a20,\n\t0x32e88: 0x6c488c20, 0x32e89: 0x6c488e20, 0x32e8a: 0x6c489020, 0x32e8b: 0x6c489220,\n\t0x32e8c: 0x6c489420, 0x32e8d: 0x6c489620, 0x32e8e: 0x6c489820, 0x32e8f: 0x6c489a20,\n\t0x32e90: 0x6c489c20, 0x32e91: 0x6c489e20, 0x32e92: 0x6c48a020, 0x32e93: 0x6c48a220,\n\t0x32e94: 0x6c48a420, 0x32e95: 0x6c48a620, 0x32e96: 0x6c48a820, 0x32e97: 0x6c48aa20,\n\t0x32e98: 0x6c48ac20, 0x32e99: 0x6c48ae20, 0x32e9a: 0x6c48b020, 0x32e9b: 0x6c48b220,\n\t0x32e9c: 0x6c5dc620, 0x32e9d: 0x6c48b420, 0x32e9e: 0x6c48b620, 0x32e9f: 0x6c48b820,\n\t0x32ea0: 0x6c48ba20, 0x32ea1: 0x6c48bc20, 0x32ea2: 0x6c48be20, 0x32ea3: 0x6c48c020,\n\t0x32ea4: 0x6c48c220, 0x32ea5: 0x6c48c420, 0x32ea6: 0x6c48c620, 0x32ea7: 0x6c48c820,\n\t0x32ea8: 0x6c48ca20, 0x32ea9: 0x6c48cc20, 0x32eaa: 0x6c48ce20, 0x32eab: 0x6c48d020,\n\t0x32eac: 0x6c48d220, 0x32ead: 0x6c69da20, 0x32eae: 0x6c69dc20, 0x32eaf: 0x6c69de20,\n\t0x32eb0: 0x6c69e020, 0x32eb1: 0x6c69e220, 0x32eb2: 0x6c69e420, 0x32eb3: 0x6c69e620,\n\t0x32eb4: 0x6c69e820, 0x32eb5: 0x6c69ea20, 0x32eb6: 0x6c69ec20, 0x32eb7: 0x6c69ee20,\n\t0x32eb8: 0x6c69f020, 0x32eb9: 0x6c69f220, 0x32eba: 0x6c69f420, 0x32ebb: 0x6c69f620,\n\t0x32ebc: 0x6c69f820, 0x32ebd: 0x6c69fa20, 0x32ebe: 0x6c69fc20, 0x32ebf: 0x6c69fe20,\n\t// Block 0xcbb, offset 0x32ec0\n\t0x32ec0: 0x6c6a0020, 0x32ec1: 0x6c6a0220, 0x32ec2: 0x6c6a0420, 0x32ec3: 0x6c6a0620,\n\t0x32ec4: 0x6c6a0820, 0x32ec5: 0x6c6a0a20, 0x32ec6: 0x6c6a0c20, 0x32ec7: 0x6c6a0e20,\n\t0x32ec8: 0x6c6a1020, 0x32ec9: 0x6c6a1220, 0x32eca: 0x6c6a1420, 0x32ecb: 0x6c6a1620,\n\t0x32ecc: 0x6c6a1820, 0x32ecd: 0x6c6a1a20, 0x32ece: 0x6c6a1c20, 0x32ecf: 0x6c6a1e20,\n\t0x32ed0: 0x6c6a2020, 0x32ed1: 0x6c6a2220, 0x32ed2: 0x6c6a2420, 0x32ed3: 0x6c6a2620,\n\t0x32ed4: 0x6c6a2820, 0x32ed5: 0x6c6a2a20, 0x32ed6: 0x6c6a2c20, 0x32ed7: 0x6c6a2e20,\n\t0x32ed8: 0x6c6a3020, 0x32ed9: 0x6c6a3220, 0x32eda: 0x6c6a3420, 0x32edb: 0x6c6a3620,\n\t0x32edc: 0x6c6a3820, 0x32edd: 0x6c6a3a20, 0x32ede: 0x6c6a3c20, 0x32edf: 0x6c6a3e20,\n\t0x32ee0: 0x6c6a4020, 0x32ee1: 0x6c6a4220, 0x32ee2: 0x6c6a4420, 0x32ee3: 0x6c6a4620,\n\t0x32ee4: 0x6c6a4820, 0x32ee5: 0x6c6a4a20, 0x32ee6: 0x6c90c620, 0x32ee7: 0x6c90c820,\n\t0x32ee8: 0x6c90ca20, 0x32ee9: 0x6c90cc20, 0x32eea: 0x6c90ce20, 0x32eeb: 0x6c90d020,\n\t0x32eec: 0x6c90d220, 0x32eed: 0x6c90d420, 0x32eee: 0x6c90d620, 0x32eef: 0x6c90d820,\n\t0x32ef0: 0x6c90da20, 0x32ef1: 0x6c90dc20, 0x32ef2: 0x6c90de20, 0x32ef3: 0x6c90e020,\n\t0x32ef4: 0x6c90e220, 0x32ef5: 0x6c90e420, 0x32ef6: 0x6c90e620, 0x32ef7: 0x6c90e820,\n\t0x32ef8: 0x6c90ea20, 0x32ef9: 0x6c90ec20, 0x32efa: 0x6c90ee20, 0x32efb: 0x6c90f020,\n\t0x32efc: 0x6c90f220, 0x32efd: 0x6c90f420, 0x32efe: 0x6c90f620, 0x32eff: 0x6c90f820,\n\t// Block 0xcbc, offset 0x32f00\n\t0x32f00: 0x6c90fa20, 0x32f01: 0x6c90fc20, 0x32f02: 0x6c90fe20, 0x32f03: 0x6c910020,\n\t0x32f04: 0x6c910220, 0x32f05: 0x6c910420, 0x32f06: 0x6c910620, 0x32f07: 0x6c910820,\n\t0x32f08: 0x6c910a20, 0x32f09: 0x6c910c20, 0x32f0a: 0x6c910e20, 0x32f0b: 0x6c911020,\n\t0x32f0c: 0x6c911220, 0x32f0d: 0x6c911420, 0x32f0e: 0x6c911620, 0x32f0f: 0x6c911820,\n\t0x32f10: 0x6c911a20, 0x32f11: 0x6c911c20, 0x32f12: 0x6c911e20, 0x32f13: 0x6c912020,\n\t0x32f14: 0x6c912220, 0x32f15: 0x6c912420, 0x32f16: 0x6c912620, 0x32f17: 0x6c912820,\n\t0x32f18: 0x6c912a20, 0x32f19: 0x6c912c20, 0x32f1a: 0x6c912e20, 0x32f1b: 0x6c913020,\n\t0x32f1c: 0x6c913220, 0x32f1d: 0x6c913420, 0x32f1e: 0x6c913620, 0x32f1f: 0x6c913820,\n\t0x32f20: 0x6c913a20, 0x32f21: 0x6c913c20, 0x32f22: 0x6c913e20, 0x32f23: 0x6c914020,\n\t0x32f24: 0x6cbcd820, 0x32f25: 0x6cbcda20, 0x32f26: 0x6cbcdc20, 0x32f27: 0x6cbcde20,\n\t0x32f28: 0x6cbce020, 0x32f29: 0x6cbce220, 0x32f2a: 0x6cbce420, 0x32f2b: 0x6cbce620,\n\t0x32f2c: 0x6cbce820, 0x32f2d: 0x6cbcea20, 0x32f2e: 0x6cbcec20, 0x32f2f: 0x6cbcee20,\n\t0x32f30: 0x6cbcf020, 0x32f31: 0x6cbcf220, 0x32f32: 0x6cbcf420, 0x32f33: 0x6cbcf620,\n\t0x32f34: 0x6cbcf820, 0x32f35: 0x6cbcfa20, 0x32f36: 0x6cbcfc20, 0x32f37: 0x6cbcfe20,\n\t0x32f38: 0x6cbd0020, 0x32f39: 0x6cbd0220, 0x32f3a: 0x6cbd0420, 0x32f3b: 0x6cbd0620,\n\t0x32f3c: 0x6cbd0820, 0x32f3d: 0x6cbd0a20, 0x32f3e: 0x6cbd0c20, 0x32f3f: 0x6cbd0e20,\n\t// Block 0xcbd, offset 0x32f40\n\t0x32f40: 0x6cbd1020, 0x32f41: 0x6cbd1220, 0x32f42: 0x6cbd1420, 0x32f43: 0x6cbd1620,\n\t0x32f44: 0x6cbd1820, 0x32f45: 0x6cbd1a20, 0x32f46: 0x6cbd1c20, 0x32f47: 0x6cbd1e20,\n\t0x32f48: 0x6cbd2020, 0x32f49: 0x6cbd2220, 0x32f4a: 0x6cbd2420, 0x32f4b: 0x6cbd2620,\n\t0x32f4c: 0x6cbd2820, 0x32f4d: 0x6cbd2a20, 0x32f4e: 0x6cbd2c20, 0x32f4f: 0x6cbd2e20,\n\t0x32f50: 0x6cbd3020, 0x32f51: 0x6cbd3220, 0x32f52: 0x6cbd3420, 0x32f53: 0x6cbd3620,\n\t0x32f54: 0x6cbd3820, 0x32f55: 0x6cbd3a20, 0x32f56: 0x6cbd3c20, 0x32f57: 0x6cbd3e20,\n\t0x32f58: 0x6cbd4020, 0x32f59: 0x6cbd4220, 0x32f5a: 0x6cbd4420, 0x32f5b: 0x6cbd4620,\n\t0x32f5c: 0x6cbd4820, 0x32f5d: 0x6cbd4a20, 0x32f5e: 0x6cbd4c20, 0x32f5f: 0x6cbd4e20,\n\t0x32f60: 0x6cbd5020, 0x32f61: 0x6cbd5220, 0x32f62: 0x6cbd5420, 0x32f63: 0x6cbd5620,\n\t0x32f64: 0x6cbd5820, 0x32f65: 0x6cbd5a20, 0x32f66: 0x6cbd5c20, 0x32f67: 0x6cbd5e20,\n\t0x32f68: 0x6cbd6020, 0x32f69: 0x6cbd6220, 0x32f6a: 0x6cbd6420, 0x32f6b: 0x6cbd6620,\n\t0x32f6c: 0x6cbd6820, 0x32f6d: 0x6cbd6a20, 0x32f6e: 0x6cedae20, 0x32f6f: 0x6cedb020,\n\t0x32f70: 0x6cedb220, 0x32f71: 0x6cedb420, 0x32f72: 0x6cedb620, 0x32f73: 0x6cedb820,\n\t0x32f74: 0x6cedba20, 0x32f75: 0x6cedbc20, 0x32f76: 0x6cedbe20, 0x32f77: 0x6cedc020,\n\t0x32f78: 0x6cedc220, 0x32f79: 0x6cedc420, 0x32f7a: 0x6cedc620, 0x32f7b: 0x6cedc820,\n\t0x32f7c: 0x6cedca20, 0x32f7d: 0x6cedcc20, 0x32f7e: 0x6cedce20, 0x32f7f: 0x6cedd020,\n\t// Block 0xcbe, offset 0x32f80\n\t0x32f80: 0x6cedd220, 0x32f81: 0x6cedd420, 0x32f82: 0x6cedd620, 0x32f83: 0x6cedd820,\n\t0x32f84: 0x6cedda20, 0x32f85: 0x6ceddc20, 0x32f86: 0x6cedde20, 0x32f87: 0x6cede020,\n\t0x32f88: 0x6cede220, 0x32f89: 0x6cede420, 0x32f8a: 0x6cede620, 0x32f8b: 0x6cede820,\n\t0x32f8c: 0x6cedea20, 0x32f8d: 0x6cedec20, 0x32f8e: 0x6cedee20, 0x32f8f: 0x6cedf020,\n\t0x32f90: 0x6cedf220, 0x32f91: 0x6cedf420, 0x32f92: 0x6cedf620, 0x32f93: 0x6cedf820,\n\t0x32f94: 0x6cedfa20, 0x32f95: 0x6cedfc20, 0x32f96: 0x6cedfe20, 0x32f97: 0x6cee0020,\n\t0x32f98: 0x6cee0220, 0x32f99: 0x6cee0420, 0x32f9a: 0x6cee0620, 0x32f9b: 0x6cee0820,\n\t0x32f9c: 0x6cee0a20, 0x32f9d: 0x6cee0c20, 0x32f9e: 0x6cee0e20, 0x32f9f: 0x6cee1020,\n\t0x32fa0: 0x6cee1220, 0x32fa1: 0x6cee1420, 0x32fa2: 0x6cee1620, 0x32fa3: 0x6cee1820,\n\t0x32fa4: 0x6cee1a20, 0x32fa5: 0x6cee1c20, 0x32fa6: 0x6cee1e20, 0x32fa7: 0x6cee2020,\n\t0x32fa8: 0x6cee2220, 0x32fa9: 0x6cee2420, 0x32faa: 0x6cee2620, 0x32fab: 0x6cee2820,\n\t0x32fac: 0x6cee2a20, 0x32fad: 0x6d1d7620, 0x32fae: 0x6d1d7820, 0x32faf: 0x6d1d7a20,\n\t0x32fb0: 0x6d1d7c20, 0x32fb1: 0x6d1d7e20, 0x32fb2: 0x6d1d8020, 0x32fb3: 0x6d1d8220,\n\t0x32fb4: 0x6d1d8420, 0x32fb5: 0x6d1d8620, 0x32fb6: 0x6d1d8820, 0x32fb7: 0x6d1d8a20,\n\t0x32fb8: 0x6d1d8c20, 0x32fb9: 0x6d1d8e20, 0x32fba: 0x6d1d9020, 0x32fbb: 0x6d1d9220,\n\t0x32fbc: 0x6d1d9420, 0x32fbd: 0x6d1d9620, 0x32fbe: 0x6d1d9820, 0x32fbf: 0x6d1d9a20,\n\t// Block 0xcbf, offset 0x32fc0\n\t0x32fc0: 0x6d1d9c20, 0x32fc1: 0x6d1d9e20, 0x32fc2: 0x6d1da020, 0x32fc3: 0x6d1da220,\n\t0x32fc4: 0x6d1da420, 0x32fc5: 0x6d1da620, 0x32fc6: 0x6d1da820, 0x32fc7: 0x6d1daa20,\n\t0x32fc8: 0x6d1dac20, 0x32fc9: 0x6d1dae20, 0x32fca: 0x6d1db020, 0x32fcb: 0x6d1db220,\n\t0x32fcc: 0x6d1db420, 0x32fcd: 0x6d1db620, 0x32fce: 0x6d1db820, 0x32fcf: 0x6d1dba20,\n\t0x32fd0: 0x6d1dbc20, 0x32fd1: 0x6d1dbe20, 0x32fd2: 0x6d1dc020, 0x32fd3: 0x6d1dc220,\n\t0x32fd4: 0x6d1dc420, 0x32fd5: 0x6d1dc620, 0x32fd6: 0x6d1dc820, 0x32fd7: 0x6d1dca20,\n\t0x32fd8: 0x6d1dcc20, 0x32fd9: 0x6d1dce20, 0x32fda: 0x6d1dd020, 0x32fdb: 0x6d1dd220,\n\t0x32fdc: 0x6d1dd420, 0x32fdd: 0x6d1dd620, 0x32fde: 0x6d4b1420, 0x32fdf: 0x6d4b1620,\n\t0x32fe0: 0x6d4b1820, 0x32fe1: 0x6d4b1a20, 0x32fe2: 0x6d4b1c20, 0x32fe3: 0x6d4b1e20,\n\t0x32fe4: 0x6d4b2020, 0x32fe5: 0x6d4b2220, 0x32fe6: 0x6d4b2420, 0x32fe7: 0x6d4b2620,\n\t0x32fe8: 0x6d4b2820, 0x32fe9: 0x6d4b2a20, 0x32fea: 0x6d4b2c20, 0x32feb: 0x6d4b2e20,\n\t0x32fec: 0x6d4b3020, 0x32fed: 0x6d4b3220, 0x32fee: 0x6d4b3420, 0x32fef: 0x6d4b3620,\n\t0x32ff0: 0x6d4b3820, 0x32ff1: 0x6d4b3a20, 0x32ff2: 0x6d4b3c20, 0x32ff3: 0x6d4b3e20,\n\t0x32ff4: 0x6d4b4020, 0x32ff5: 0x6d4b4220, 0x32ff6: 0x6d4b4420, 0x32ff7: 0x6d4b4620,\n\t0x32ff8: 0x6d4b4820, 0x32ff9: 0x6d4b4a20, 0x32ffa: 0x6d4b4c20, 0x32ffb: 0x6d4b4e20,\n\t0x32ffc: 0x6d4b5020, 0x32ffd: 0x6d4b5220, 0x32ffe: 0x6d4b5420, 0x32fff: 0x6d4b5620,\n\t// Block 0xcc0, offset 0x33000\n\t0x33000: 0x6d4b5820, 0x33001: 0x6d4b5a20, 0x33002: 0x6d4b5c20, 0x33003: 0x6d4b5e20,\n\t0x33004: 0x6d4b6020, 0x33005: 0x6d4b6220, 0x33006: 0x6d4b6420, 0x33007: 0x6d4b6620,\n\t0x33008: 0x6d4b6820, 0x33009: 0x6d4b6a20, 0x3300a: 0x6d4b6c20, 0x3300b: 0x6d4b6e20,\n\t0x3300c: 0x6d4b7020, 0x3300d: 0x6d4b7220, 0x3300e: 0x6d4b7420, 0x3300f: 0x6d4b7620,\n\t0x33010: 0x6d4b7820, 0x33011: 0x6d4b7a20, 0x33012: 0x6d4b7c20, 0x33013: 0x6d4b7e20,\n\t0x33014: 0x6d4b8020, 0x33015: 0x6d4b8220, 0x33016: 0x6d4b8420, 0x33017: 0x6d4b8620,\n\t0x33018: 0x6d4b8820, 0x33019: 0x6d4b8a20, 0x3301a: 0x6d4b8c20, 0x3301b: 0x6d4b8e20,\n\t0x3301c: 0x6d4b9020, 0x3301d: 0x6d4b9220, 0x3301e: 0x6d789c20, 0x3301f: 0x6d789e20,\n\t0x33020: 0x6d78a020, 0x33021: 0x6d78a220, 0x33022: 0x6d78a420, 0x33023: 0x6d78a620,\n\t0x33024: 0x6d78a820, 0x33025: 0x6d78aa20, 0x33026: 0x6d78ac20, 0x33027: 0x6d78ae20,\n\t0x33028: 0x6d78b020, 0x33029: 0x6d78b220, 0x3302a: 0x6d78b420, 0x3302b: 0x6d78b620,\n\t0x3302c: 0x6d78b820, 0x3302d: 0x6d78ba20, 0x3302e: 0x6d78bc20, 0x3302f: 0x6d78be20,\n\t0x33030: 0x6d78c020, 0x33031: 0x6d78c220, 0x33032: 0x6d78c420, 0x33033: 0x6d78c620,\n\t0x33034: 0x6d78c820, 0x33035: 0x6d78ca20, 0x33036: 0x6d78cc20, 0x33037: 0x6d78ce20,\n\t0x33038: 0x6d78d020, 0x33039: 0x6d78d220, 0x3303a: 0x6d980c20, 0x3303b: 0x6d78d420,\n\t0x3303c: 0x6d78d620, 0x3303d: 0x6d78d820, 0x3303e: 0x6d78da20, 0x3303f: 0x6d78dc20,\n\t// Block 0xcc1, offset 0x33040\n\t0x33040: 0x6d78de20, 0x33041: 0x6d78e020, 0x33042: 0x6d78e220, 0x33043: 0x6d78e420,\n\t0x33044: 0x6d78e620, 0x33045: 0x6d78e820, 0x33046: 0x6d78ea20, 0x33047: 0x6d78ec20,\n\t0x33048: 0x6d78ee20, 0x33049: 0x6da1a820, 0x3304a: 0x6da1aa20, 0x3304b: 0x6da1ac20,\n\t0x3304c: 0x6da1ae20, 0x3304d: 0x6da1b020, 0x3304e: 0x6da1b220, 0x3304f: 0x6da1b420,\n\t0x33050: 0x6da1b620, 0x33051: 0x6da1b820, 0x33052: 0x6da1ba20, 0x33053: 0x6da1bc20,\n\t0x33054: 0x6da1be20, 0x33055: 0x6da1c020, 0x33056: 0x6da1c220, 0x33057: 0x6da1c420,\n\t0x33058: 0x6da1c620, 0x33059: 0x6da1c820, 0x3305a: 0x6da1ca20, 0x3305b: 0x6da1cc20,\n\t0x3305c: 0x6da1ce20, 0x3305d: 0x6da1d020, 0x3305e: 0x6da1d220, 0x3305f: 0x6da1d420,\n\t0x33060: 0x6da1d620, 0x33061: 0x6dc1f820, 0x33062: 0x6da1d820, 0x33063: 0x6da1da20,\n\t0x33064: 0x6da1dc20, 0x33065: 0x6da1de20, 0x33066: 0x6da1e020, 0x33067: 0x6da1e220,\n\t0x33068: 0x6da1e420, 0x33069: 0x6da1e620, 0x3306a: 0x6da1e820, 0x3306b: 0x6da1ea20,\n\t0x3306c: 0x6da1ec20, 0x3306d: 0x6da1ee20, 0x3306e: 0x6da1f020, 0x3306f: 0x6da1f220,\n\t0x33070: 0x6dc3ea20, 0x33071: 0x6dc3ec20, 0x33072: 0x6dc3ee20, 0x33073: 0x6dc3f020,\n\t0x33074: 0x6dc3f220, 0x33075: 0x6dc3f420, 0x33076: 0x6dc3f620, 0x33077: 0x6dc3f820,\n\t0x33078: 0x6dc3fa20, 0x33079: 0x6dc3fc20, 0x3307a: 0x6dc3fe20, 0x3307b: 0x6dc40020,\n\t0x3307c: 0x6dc40220, 0x3307d: 0x6dc40420, 0x3307e: 0x6dc40620, 0x3307f: 0x6dc40820,\n\t// Block 0xcc2, offset 0x33080\n\t0x33080: 0x6de11620, 0x33081: 0x6dc40a20, 0x33082: 0x6dc40c20, 0x33083: 0x6dc40e20,\n\t0x33084: 0x6dc41020, 0x33085: 0x6dc41220, 0x33086: 0x6dc41420, 0x33087: 0x6dc41620,\n\t0x33088: 0x6dc41820, 0x33089: 0x6dc41a20, 0x3308a: 0x6dc41c20, 0x3308b: 0x6dc41e20,\n\t0x3308c: 0x6dc42020, 0x3308d: 0x6dc42220, 0x3308e: 0x6dc42420, 0x3308f: 0x6dc42620,\n\t0x33090: 0x6de11820, 0x33091: 0x6de11a20, 0x33092: 0x6de11c20, 0x33093: 0x6de11e20,\n\t0x33094: 0x6de12020, 0x33095: 0x6de12220, 0x33096: 0x6de12420, 0x33097: 0x6de12620,\n\t0x33098: 0x6de12820, 0x33099: 0x6de12a20, 0x3309a: 0x6de12c20, 0x3309b: 0x6dede420,\n\t0x3309c: 0x6de12e20, 0x3309d: 0x6de13020, 0x3309e: 0x6de13220, 0x3309f: 0x6de13420,\n\t0x330a0: 0x6de13620, 0x330a1: 0x6de13820, 0x330a2: 0x6de13a20, 0x330a3: 0x6de13c20,\n\t0x330a4: 0x6de13e20, 0x330a5: 0x6de14020, 0x330a6: 0x6df93a20, 0x330a7: 0x6df93c20,\n\t0x330a8: 0x6df93e20, 0x330a9: 0x6df94020, 0x330aa: 0x6df94220, 0x330ab: 0x6df94420,\n\t0x330ac: 0x6df94620, 0x330ad: 0x6df94820, 0x330ae: 0x6df94a20, 0x330af: 0x6df94c20,\n\t0x330b0: 0x6df94e20, 0x330b1: 0x6e0cfe20, 0x330b2: 0x6e0d0020, 0x330b3: 0x6e0d0220,\n\t0x330b4: 0x6e0d0420, 0x330b5: 0x6e0d0620, 0x330b6: 0x6e0d0820, 0x330b7: 0x6e078620,\n\t0x330b8: 0x6e0d0a20, 0x330b9: 0x6e0d0c20, 0x330ba: 0x6e1c7620, 0x330bb: 0x6e0d0e20,\n\t0x330bc: 0x6e0d1020, 0x330bd: 0x6e0d1220, 0x330be: 0x6e0d1420, 0x330bf: 0x6e0d1620,\n\t// Block 0xcc3, offset 0x330c0\n\t0x330c0: 0x6e0d1820, 0x330c1: 0x6e0d1a20, 0x330c2: 0x6e1c7820, 0x330c3: 0x6e1c7a20,\n\t0x330c4: 0x6e1c7c20, 0x330c5: 0x6e1c7e20, 0x330c6: 0x6e1c8020, 0x330c7: 0x6e1c8220,\n\t0x330c8: 0x6e1c8420, 0x330c9: 0x6e1c8620, 0x330ca: 0x6e289220, 0x330cb: 0x6e289420,\n\t0x330cc: 0x6e289620, 0x330cd: 0x6e289820, 0x330ce: 0x6e289a20, 0x330cf: 0x6e31c620,\n\t0x330d0: 0x6e31c820, 0x330d1: 0x6e31ca20, 0x330d2: 0x6e31cc20, 0x330d3: 0x6e31ce20,\n\t0x330d4: 0x6e31d020, 0x330d5: 0x6e31d220, 0x330d6: 0x6e3d1220, 0x330d7: 0x6e442620,\n\t0x330d8: 0x6e451820, 0x330d9: 0x6e46e220, 0x330da: 0x6e471e20, 0x330db: 0x6c07c620,\n\t0x330dc: 0x6c0f1020, 0x330dd: 0x6c1b7020, 0x330de: 0x6c1b7220, 0x330df: 0x6c2e7e20,\n\t0x330e0: 0x6c48ea20, 0x330e1: 0x6c48ec20, 0x330e2: 0x6c48ee20, 0x330e3: 0x6c6a7220,\n\t0x330e4: 0x6c6a7420, 0x330e5: 0x6c6a7620, 0x330e6: 0x6c6a7820, 0x330e7: 0x6c6a7a20,\n\t0x330e8: 0x6c6a7c20, 0x330e9: 0x6c6a7e20, 0x330ea: 0x6c916620, 0x330eb: 0x6c916820,\n\t0x330ec: 0x6c916a20, 0x330ed: 0x6c916c20, 0x330ee: 0x6cbd8e20, 0x330ef: 0x6cbd9020,\n\t0x330f0: 0x6cee5020, 0x330f1: 0x6cbdc220, 0x330f2: 0x6cee5220, 0x330f3: 0x6cee5420,\n\t0x330f4: 0x6cee5620, 0x330f5: 0x6cee5820, 0x330f6: 0x6d1df820, 0x330f7: 0x6d187e20,\n\t0x330f8: 0x6d1dfa20, 0x330f9: 0x6d1dfc20, 0x330fa: 0x6d1dfe20, 0x330fb: 0x6d1e0020,\n\t0x330fc: 0x6d4ba620, 0x330fd: 0x6d4ba820, 0x330fe: 0x6d790220, 0x330ff: 0x6d790420,\n\t// Block 0xcc4, offset 0x33100\n\t0x33100: 0x6d790620, 0x33101: 0x6da20020, 0x33102: 0x6da20220, 0x33103: 0x6da20420,\n\t0x33104: 0x6da20620, 0x33105: 0x6dc43020, 0x33106: 0x6dd50620, 0x33107: 0x6dc43220,\n\t0x33108: 0x6dc43420, 0x33109: 0x6dc43620, 0x3310a: 0x6dc43820, 0x3310b: 0x6de14420,\n\t0x3310c: 0x6de14620, 0x3310d: 0x6df95220, 0x3310e: 0x6dfe0820, 0x3310f: 0x6e1c8820,\n\t0x33110: 0x6e1c8a20, 0x33111: 0x6e1c8c20, 0x33112: 0x6c018a20, 0x33113: 0x6c07ca20,\n\t0x33114: 0x6c07cc20, 0x33115: 0x6c0f1420, 0x33116: 0x6c0f1620, 0x33117: 0x6c1b7620,\n\t0x33118: 0x6c1b7820, 0x33119: 0x6c1b7a20, 0x3311a: 0x6c6a8220, 0x3311b: 0x6c917020,\n\t0x3311c: 0x6c917220, 0x3311d: 0x6cee5c20, 0x3311e: 0x6c0f1820, 0x3311f: 0x6c0f1a20,\n\t0x33120: 0x6c1b7e20, 0x33121: 0x6c1b8020, 0x33122: 0x6c2e8420, 0x33123: 0x6c2e8620,\n\t0x33124: 0x6c2e8820, 0x33125: 0x6c2e8a20, 0x33126: 0x6c6a8a20, 0x33127: 0x6c917420,\n\t0x33128: 0x6c917620, 0x33129: 0x6c917820, 0x3312a: 0x6c917a20, 0x3312b: 0x6c917c20,\n\t0x3312c: 0x6c917e20, 0x3312d: 0x6cbd9620, 0x3312e: 0x6cee6020, 0x3312f: 0x6cee6220,\n\t0x33130: 0x6cee6420, 0x33131: 0x6cee6620, 0x33132: 0x6d1e0420, 0x33133: 0x6d1e0620,\n\t0x33134: 0x6d1e0820, 0x33135: 0x6d1e0a20, 0x33136: 0x6d4baa20, 0x33137: 0x6d4bac20,\n\t0x33138: 0x6d790820, 0x33139: 0x6d790a20, 0x3313a: 0x6d790c20, 0x3313b: 0x6da20820,\n\t0x3313c: 0x6dc43e20, 0x3313d: 0x6dc44020, 0x3313e: 0x6dc44220, 0x3313f: 0x6dc44420,\n\t// Block 0xcc5, offset 0x33140\n\t0x33140: 0x6de14a20, 0x33141: 0x6df95620, 0x33142: 0x6e289c20, 0x33143: 0x6e451a20,\n\t0x33144: 0x6c07d620, 0x33145: 0x6c07d820, 0x33146: 0x6c07da20, 0x33147: 0x6c0f2220,\n\t0x33148: 0x6c0f2420, 0x33149: 0x6c0f2620, 0x3314a: 0x6c1b8220, 0x3314b: 0x6c1b8420,\n\t0x3314c: 0x6c1b8620, 0x3314d: 0x6c2e9220, 0x3314e: 0x6c2e9420, 0x3314f: 0x6c2e9620,\n\t0x33150: 0x6c48fc20, 0x33151: 0x6c48fe20, 0x33152: 0x6c6a9020, 0x33153: 0x6c6a9220,\n\t0x33154: 0x6c6a9420, 0x33155: 0x6c6a9620, 0x33156: 0x6c6a9820, 0x33157: 0x6c6a9a20,\n\t0x33158: 0x6c6a9c20, 0x33159: 0x6c6a9e20, 0x3315a: 0x6c6aa020, 0x3315b: 0x6c6aa220,\n\t0x3315c: 0x6c6aa420, 0x3315d: 0x6c918420, 0x3315e: 0x6c918620, 0x3315f: 0x6c918820,\n\t0x33160: 0x6c918a20, 0x33161: 0x6c918c20, 0x33162: 0x6c918e20, 0x33163: 0x6c919020,\n\t0x33164: 0x6c919220, 0x33165: 0x6c919420, 0x33166: 0x6cbda020, 0x33167: 0x6cbda220,\n\t0x33168: 0x6cbda420, 0x33169: 0x6cbda620, 0x3316a: 0x6cbda820, 0x3316b: 0x6cbdaa20,\n\t0x3316c: 0x6cbdac20, 0x3316d: 0x6cbdae20, 0x3316e: 0x6cbdb020, 0x3316f: 0x6cee6a20,\n\t0x33170: 0x6cbdb220, 0x33171: 0x6cee6c20, 0x33172: 0x6cee6e20, 0x33173: 0x6cee7020,\n\t0x33174: 0x6cee7220, 0x33175: 0x6cee7420, 0x33176: 0x6d1e1820, 0x33177: 0x6d1e1a20,\n\t0x33178: 0x6d1e1c20, 0x33179: 0x6d1e1e20, 0x3317a: 0x6d1e2020, 0x3317b: 0x6d1e2220,\n\t0x3317c: 0x6d1e2420, 0x3317d: 0x6d1e2620, 0x3317e: 0x6d1e2820, 0x3317f: 0x6d4bb020,\n\t// Block 0xcc6, offset 0x33180\n\t0x33180: 0x6d4bb220, 0x33181: 0x6d4bb420, 0x33182: 0x6d791220, 0x33183: 0x6d791420,\n\t0x33184: 0x6d791620, 0x33185: 0x6d791820, 0x33186: 0x6da20c20, 0x33187: 0x6da20e20,\n\t0x33188: 0x6da21020, 0x33189: 0x6dc44820, 0x3318a: 0x6dc44a20, 0x3318b: 0x6de14c20,\n\t0x3318c: 0x6de14e20, 0x3318d: 0x6e0d2020, 0x3318e: 0x6e0d2220, 0x3318f: 0x6e3d1420,\n\t0x33190: 0x6de15020, 0x33191: 0x6e45be20, 0x33192: 0x6c03e820, 0x33193: 0x6c03ea20,\n\t0x33194: 0x6c03ec20, 0x33195: 0x6c07ec20, 0x33196: 0x6c07ee20, 0x33197: 0x6c07f020,\n\t0x33198: 0x6c07f220, 0x33199: 0x6c07f420, 0x3319a: 0x6c07f620, 0x3319b: 0x6c07f820,\n\t0x3319c: 0x6c04f620, 0x3319d: 0x6c0f4420, 0x3319e: 0x6c0f4620, 0x3319f: 0x6c0f4820,\n\t0x331a0: 0x6c0f4a20, 0x331a1: 0x6c0f4c20, 0x331a2: 0x6c0f4e20, 0x331a3: 0x6c0f5020,\n\t0x331a4: 0x6c0f5220, 0x331a5: 0x6c1b9a20, 0x331a6: 0x6c1b9c20, 0x331a7: 0x6c1b9e20,\n\t0x331a8: 0x6c1ba020, 0x331a9: 0x6c1ba220, 0x331aa: 0x6c1ba420, 0x331ab: 0x6c1ba620,\n\t0x331ac: 0x6c1ba820, 0x331ad: 0x6c1baa20, 0x331ae: 0x6c1bac20, 0x331af: 0x6c1bae20,\n\t0x331b0: 0x6c1bb020, 0x331b1: 0x6c1bb220, 0x331b2: 0x6c1bb420, 0x331b3: 0x6c1bb620,\n\t0x331b4: 0x6c1bb820, 0x331b5: 0x6c1bba20, 0x331b6: 0x6c1bbc20, 0x331b7: 0x6c2eba20,\n\t0x331b8: 0x6c2ebc20, 0x331b9: 0x6c2ebe20, 0x331ba: 0x6c2ec020, 0x331bb: 0x6c2ec220,\n\t0x331bc: 0x6c2ec420, 0x331bd: 0x6c2ec620, 0x331be: 0x6c2ec820, 0x331bf: 0x6c2eca20,\n\t// Block 0xcc7, offset 0x331c0\n\t0x331c0: 0x6c2ecc20, 0x331c1: 0x6c2ece20, 0x331c2: 0x6c2ed020, 0x331c3: 0x6c2ed220,\n\t0x331c4: 0x6c2ed420, 0x331c5: 0x6c2ed620, 0x331c6: 0x6c2ed820, 0x331c7: 0x6c2eda20,\n\t0x331c8: 0x6c2edc20, 0x331c9: 0x6c2ede20, 0x331ca: 0x6c2ee020, 0x331cb: 0x6c2ee220,\n\t0x331cc: 0x6c2ee420, 0x331cd: 0x6c491620, 0x331ce: 0x6c491820, 0x331cf: 0x6c491a20,\n\t0x331d0: 0x6c491c20, 0x331d1: 0x6c491e20, 0x331d2: 0x6c492020, 0x331d3: 0x6c492220,\n\t0x331d4: 0x6c492420, 0x331d5: 0x6c492620, 0x331d6: 0x6c492820, 0x331d7: 0x6c492a20,\n\t0x331d8: 0x6c492c20, 0x331d9: 0x6c492e20, 0x331da: 0x6c493020, 0x331db: 0x6c493220,\n\t0x331dc: 0x6c493420, 0x331dd: 0x6c6ab420, 0x331de: 0x6c6ab620, 0x331df: 0x6c6ab820,\n\t0x331e0: 0x6c6aba20, 0x331e1: 0x6c6abc20, 0x331e2: 0x6c6abe20, 0x331e3: 0x6c6ac020,\n\t0x331e4: 0x6c6ac220, 0x331e5: 0x6c6ac420, 0x331e6: 0x6c6ac620, 0x331e7: 0x6c6ac820,\n\t0x331e8: 0x6c6aca20, 0x331e9: 0x6c6acc20, 0x331ea: 0x6c6ace20, 0x331eb: 0x6c6ad020,\n\t0x331ec: 0x6c6ad220, 0x331ed: 0x6c6ad420, 0x331ee: 0x6c6ad620, 0x331ef: 0x6c6ad820,\n\t0x331f0: 0x6c6ada20, 0x331f1: 0x6c6adc20, 0x331f2: 0x6c6ade20, 0x331f3: 0x6c6ae020,\n\t0x331f4: 0x6c91a620, 0x331f5: 0x6c91a820, 0x331f6: 0x6c91aa20, 0x331f7: 0x6c91ac20,\n\t0x331f8: 0x6c91ae20, 0x331f9: 0x6c91b020, 0x331fa: 0x6c91b220, 0x331fb: 0x6c91b420,\n\t0x331fc: 0x6c91b620, 0x331fd: 0x6c91b820, 0x331fe: 0x6c91ba20, 0x331ff: 0x6c91bc20,\n\t// Block 0xcc8, offset 0x33200\n\t0x33200: 0x6c91be20, 0x33201: 0x6c91c020, 0x33202: 0x6c91c220, 0x33203: 0x6c91c420,\n\t0x33204: 0x6c91c620, 0x33205: 0x6c91c820, 0x33206: 0x6c91ca20, 0x33207: 0x6cbdc420,\n\t0x33208: 0x6cbdc620, 0x33209: 0x6cbdc820, 0x3320a: 0x6cbdca20, 0x3320b: 0x6cbdcc20,\n\t0x3320c: 0x6cbdce20, 0x3320d: 0x6cbdd020, 0x3320e: 0x6cbdd220, 0x3320f: 0x6cbdd420,\n\t0x33210: 0x6cbdd620, 0x33211: 0x6cbdd820, 0x33212: 0x6cbdda20, 0x33213: 0x6cbddc20,\n\t0x33214: 0x6cbdde20, 0x33215: 0x6cbde020, 0x33216: 0x6cbde220, 0x33217: 0x6cbde420,\n\t0x33218: 0x6cbde620, 0x33219: 0x6cbde820, 0x3321a: 0x6cbdea20, 0x3321b: 0x6cee7e20,\n\t0x3321c: 0x6cee8020, 0x3321d: 0x6cee8220, 0x3321e: 0x6cee8420, 0x3321f: 0x6cee8620,\n\t0x33220: 0x6cee8820, 0x33221: 0x6cee8a20, 0x33222: 0x6cee8c20, 0x33223: 0x6cee8e20,\n\t0x33224: 0x6cee9020, 0x33225: 0x6cee9220, 0x33226: 0x6cee9420, 0x33227: 0x6cee9620,\n\t0x33228: 0x6cee9820, 0x33229: 0x6cee9a20, 0x3322a: 0x6cee9c20, 0x3322b: 0x6cee9e20,\n\t0x3322c: 0x6d1e3620, 0x3322d: 0x6d1e3820, 0x3322e: 0x6d1e3a20, 0x3322f: 0x6d1e3c20,\n\t0x33230: 0x6d1e3e20, 0x33231: 0x6d1e4020, 0x33232: 0x6d1e4220, 0x33233: 0x6d1e4420,\n\t0x33234: 0x6d1e4620, 0x33235: 0x6d1e4820, 0x33236: 0x6d1e4a20, 0x33237: 0x6d4bba20,\n\t0x33238: 0x6d4bbc20, 0x33239: 0x6d4bbe20, 0x3323a: 0x6d4bc020, 0x3323b: 0x6d4bc220,\n\t0x3323c: 0x6d4bc420, 0x3323d: 0x6d4bc620, 0x3323e: 0x6d4bc820, 0x3323f: 0x6d4bca20,\n\t// Block 0xcc9, offset 0x33240\n\t0x33240: 0x6d4bcc20, 0x33241: 0x6d4bce20, 0x33242: 0x6d4bd020, 0x33243: 0x6d4bd220,\n\t0x33244: 0x6d4bd420, 0x33245: 0x6d4bd620, 0x33246: 0x6d792220, 0x33247: 0x6d792420,\n\t0x33248: 0x6d792620, 0x33249: 0x6d792820, 0x3324a: 0x6d792a20, 0x3324b: 0x6d792c20,\n\t0x3324c: 0x6d792e20, 0x3324d: 0x6d793020, 0x3324e: 0x6d793220, 0x3324f: 0x6da21220,\n\t0x33250: 0x6da21420, 0x33251: 0x6da21620, 0x33252: 0x6da21820, 0x33253: 0x6da21a20,\n\t0x33254: 0x6da21c20, 0x33255: 0x6da21e20, 0x33256: 0x6da22020, 0x33257: 0x6dc44e20,\n\t0x33258: 0x6de15220, 0x33259: 0x6de15420, 0x3325a: 0x6de15620, 0x3325b: 0x6df95820,\n\t0x3325c: 0x6e0d2420, 0x3325d: 0x6e0d2620, 0x3325e: 0x6e1c9420, 0x3325f: 0x6e1c9620,\n\t0x33260: 0x6e289e20, 0x33261: 0x6e28a020, 0x33262: 0x6e28a220, 0x33263: 0x6e31d420,\n\t0x33264: 0x6e31d620, 0x33265: 0x6e401220, 0x33266: 0x6c03f020, 0x33267: 0x6c080420,\n\t0x33268: 0x6c080620, 0x33269: 0x6c080820, 0x3326a: 0x6c080a20, 0x3326b: 0x6c080c20,\n\t0x3326c: 0x6c080e20, 0x3326d: 0x6c081020, 0x3326e: 0x6c0f8620, 0x3326f: 0x6c0f8820,\n\t0x33270: 0x6c0f8a20, 0x33271: 0x6c0f8c20, 0x33272: 0x6c0f8e20, 0x33273: 0x6c0f9020,\n\t0x33274: 0x6c0f9220, 0x33275: 0x6c0f9420, 0x33276: 0x6c0f9620, 0x33277: 0x6c0f9820,\n\t0x33278: 0x6c0f9a20, 0x33279: 0x6c0f9c20, 0x3327a: 0x6c0f9e20, 0x3327b: 0x6c0fa020,\n\t0x3327c: 0x6c1c1820, 0x3327d: 0x6c1c1a20, 0x3327e: 0x6c1c1c20, 0x3327f: 0x6c1c1e20,\n\t// Block 0xcca, offset 0x33280\n\t0x33280: 0x6c1c2020, 0x33281: 0x6c1c2220, 0x33282: 0x6c1c2420, 0x33283: 0x6c1c2620,\n\t0x33284: 0x6c1c2820, 0x33285: 0x6c1c2a20, 0x33286: 0x6c1c2c20, 0x33287: 0x6c1c2e20,\n\t0x33288: 0x6c1c3020, 0x33289: 0x6c1c3220, 0x3328a: 0x6c1c3420, 0x3328b: 0x6c1c3620,\n\t0x3328c: 0x6c1c3820, 0x3328d: 0x6c1c3a20, 0x3328e: 0x6c1c3c20, 0x3328f: 0x6c1c3e20,\n\t0x33290: 0x6c1c4020, 0x33291: 0x6c1c4220, 0x33292: 0x6c1c4420, 0x33293: 0x6c1c4620,\n\t0x33294: 0x6c1c4820, 0x33295: 0x6c1c4a20, 0x33296: 0x6c1c4c20, 0x33297: 0x6c1c4e20,\n\t0x33298: 0x6c1c5020, 0x33299: 0x6c2f6e20, 0x3329a: 0x6c2f7020, 0x3329b: 0x6c2f7220,\n\t0x3329c: 0x6c2f7420, 0x3329d: 0x6c2f7620, 0x3329e: 0x6c2f7820, 0x3329f: 0x6c2f7a20,\n\t0x332a0: 0x6c2f7c20, 0x332a1: 0x6c2f7e20, 0x332a2: 0x6c2f8020, 0x332a3: 0x6c2f8220,\n\t0x332a4: 0x6c2f8420, 0x332a5: 0x6c2f8620, 0x332a6: 0x6c2f8820, 0x332a7: 0x6c2f8a20,\n\t0x332a8: 0x6c2f8c20, 0x332a9: 0x6c2f8e20, 0x332aa: 0x6c2f9020, 0x332ab: 0x6c2f9220,\n\t0x332ac: 0x6c2f9420, 0x332ad: 0x6c2f9620, 0x332ae: 0x6c2f9820, 0x332af: 0x6c2f9a20,\n\t0x332b0: 0x6c2f9c20, 0x332b1: 0x6c2f9e20, 0x332b2: 0x6c2fa020, 0x332b3: 0x6c2fa220,\n\t0x332b4: 0x6c2fa420, 0x332b5: 0x6c2fa620, 0x332b6: 0x6c2fa820, 0x332b7: 0x6c2faa20,\n\t0x332b8: 0x6c2fac20, 0x332b9: 0x6c2fae20, 0x332ba: 0x6c2fb020, 0x332bb: 0x6c2fb220,\n\t0x332bc: 0x6c2fb420, 0x332bd: 0x6c2fb620, 0x332be: 0x6c2fb820, 0x332bf: 0x6c2fba20,\n\t// Block 0xccb, offset 0x332c0\n\t0x332c0: 0x6c2fbc20, 0x332c1: 0x6c2fbe20, 0x332c2: 0x6c49b420, 0x332c3: 0x6c49b620,\n\t0x332c4: 0x6c49b820, 0x332c5: 0x6c49ba20, 0x332c6: 0x6c49bc20, 0x332c7: 0x6c49be20,\n\t0x332c8: 0x6c49c020, 0x332c9: 0x6c49c220, 0x332ca: 0x6c49c420, 0x332cb: 0x6c49c620,\n\t0x332cc: 0x6c49c820, 0x332cd: 0x6c49ca20, 0x332ce: 0x6c49cc20, 0x332cf: 0x6c49ce20,\n\t0x332d0: 0x6c49d020, 0x332d1: 0x6c49d220, 0x332d2: 0x6c49d420, 0x332d3: 0x6c49d620,\n\t0x332d4: 0x6c49d820, 0x332d5: 0x6c49da20, 0x332d6: 0x6c49dc20, 0x332d7: 0x6c49de20,\n\t0x332d8: 0x6c49e020, 0x332d9: 0x6c49e220, 0x332da: 0x6c49e420, 0x332db: 0x6c49e620,\n\t0x332dc: 0x6c49e820, 0x332dd: 0x6c49ea20, 0x332de: 0x6c49ec20, 0x332df: 0x6c49ee20,\n\t0x332e0: 0x6c49f020, 0x332e1: 0x6c49f220, 0x332e2: 0x6c49f420, 0x332e3: 0x6c49f620,\n\t0x332e4: 0x6c49f820, 0x332e5: 0x6c49fa20, 0x332e6: 0x6c49fc20, 0x332e7: 0x6c49fe20,\n\t0x332e8: 0x6c4a0020, 0x332e9: 0x6c4a0220, 0x332ea: 0x6c4a0420, 0x332eb: 0x6c4a0620,\n\t0x332ec: 0x6c4a0820, 0x332ed: 0x6c4a0a20, 0x332ee: 0x6c6b6c20, 0x332ef: 0x6c6b6e20,\n\t0x332f0: 0x6c6b7020, 0x332f1: 0x6c6b7220, 0x332f2: 0x6c6b7420, 0x332f3: 0x6c6b7620,\n\t0x332f4: 0x6c6b7820, 0x332f5: 0x6c6b7a20, 0x332f6: 0x6c6b7c20, 0x332f7: 0x6c6b7e20,\n\t0x332f8: 0x6c6b8020, 0x332f9: 0x6c6b8220, 0x332fa: 0x6c6b8420, 0x332fb: 0x6c6b8620,\n\t0x332fc: 0x6c6b8820, 0x332fd: 0x6c6b8a20, 0x332fe: 0x6c6b8c20, 0x332ff: 0x6c6b8e20,\n\t// Block 0xccc, offset 0x33300\n\t0x33300: 0x6c6b9020, 0x33301: 0x6c6b9220, 0x33302: 0x6c6b9420, 0x33303: 0x6c6b9620,\n\t0x33304: 0x6c6b9820, 0x33305: 0x6c6b9a20, 0x33306: 0x6c6b9c20, 0x33307: 0x6c6b9e20,\n\t0x33308: 0x6c6ba020, 0x33309: 0x6c6ba220, 0x3330a: 0x6c6ba420, 0x3330b: 0x6c6ba620,\n\t0x3330c: 0x6c6ba820, 0x3330d: 0x6c6baa20, 0x3330e: 0x6c6bac20, 0x3330f: 0x6c6bae20,\n\t0x33310: 0x6c6bb020, 0x33311: 0x6c6bb220, 0x33312: 0x6c6bb420, 0x33313: 0x6c6bb620,\n\t0x33314: 0x6c6bb820, 0x33315: 0x6c6bba20, 0x33316: 0x6c6bbc20, 0x33317: 0x6c6bbe20,\n\t0x33318: 0x6c6bc020, 0x33319: 0x6c6bc220, 0x3331a: 0x6c6bc420, 0x3331b: 0x6c6bc620,\n\t0x3331c: 0x6c6bc820, 0x3331d: 0x6c6bca20, 0x3331e: 0x6c927020, 0x3331f: 0x6c927220,\n\t0x33320: 0x6c927420, 0x33321: 0x6c927620, 0x33322: 0x6c927820, 0x33323: 0x6c927a20,\n\t0x33324: 0x6c927c20, 0x33325: 0x6c927e20, 0x33326: 0x6c928020, 0x33327: 0x6c928220,\n\t0x33328: 0x6c928420, 0x33329: 0x6c928620, 0x3332a: 0x6c928820, 0x3332b: 0x6c928a20,\n\t0x3332c: 0x6c928c20, 0x3332d: 0x6c928e20, 0x3332e: 0x6c929020, 0x3332f: 0x6c929220,\n\t0x33330: 0x6c929420, 0x33331: 0x6c929620, 0x33332: 0x6c929820, 0x33333: 0x6c929a20,\n\t0x33334: 0x6c929c20, 0x33335: 0x6c929e20, 0x33336: 0x6c92a020, 0x33337: 0x6c92a220,\n\t0x33338: 0x6c92a420, 0x33339: 0x6c92a620, 0x3333a: 0x6c92a820, 0x3333b: 0x6c92aa20,\n\t0x3333c: 0x6c92ac20, 0x3333d: 0x6c92ae20, 0x3333e: 0x6c92b020, 0x3333f: 0x6c92b220,\n\t// Block 0xccd, offset 0x33340\n\t0x33340: 0x6c92b420, 0x33341: 0x6c92b620, 0x33342: 0x6c92b820, 0x33343: 0x6c92ba20,\n\t0x33344: 0x6c92bc20, 0x33345: 0x6c92be20, 0x33346: 0x6c92c020, 0x33347: 0x6c92c220,\n\t0x33348: 0x6c92c420, 0x33349: 0x6c92c620, 0x3334a: 0x6c92c820, 0x3334b: 0x6c92ca20,\n\t0x3334c: 0x6c92cc20, 0x3334d: 0x6c92ce20, 0x3334e: 0x6c92d020, 0x3334f: 0x6c92d220,\n\t0x33350: 0x6c92d420, 0x33351: 0x6c92d620, 0x33352: 0x6c92d820, 0x33353: 0x6c92da20,\n\t0x33354: 0x6c92dc20, 0x33355: 0x6c92de20, 0x33356: 0x6c92e020, 0x33357: 0x6c92e220,\n\t0x33358: 0x6c92e420, 0x33359: 0x6c92e620, 0x3335a: 0x6c92e820, 0x3335b: 0x6c92ea20,\n\t0x3335c: 0x6cbe9020, 0x3335d: 0x6cbe9220, 0x3335e: 0x6cbe9420, 0x3335f: 0x6cbe9620,\n\t0x33360: 0x6cbe9820, 0x33361: 0x6cbe9a20, 0x33362: 0x6cbe9c20, 0x33363: 0x6cbe9e20,\n\t0x33364: 0x6cbea020, 0x33365: 0x6cbea220, 0x33366: 0x6cbea420, 0x33367: 0x6cbea620,\n\t0x33368: 0x6cbea820, 0x33369: 0x6cbeaa20, 0x3336a: 0x6cbeac20, 0x3336b: 0x6cbeae20,\n\t0x3336c: 0x6cbeb020, 0x3336d: 0x6cbeb220, 0x3336e: 0x6cbeb420, 0x3336f: 0x6cbeb620,\n\t0x33370: 0x6cbeb820, 0x33371: 0x6cbeba20, 0x33372: 0x6cbebc20, 0x33373: 0x6cbebe20,\n\t0x33374: 0x6cbec020, 0x33375: 0x6cbec220, 0x33376: 0x6cbec420, 0x33377: 0x6cbec620,\n\t0x33378: 0x6cbec820, 0x33379: 0x6cbeca20, 0x3337a: 0x6cbecc20, 0x3337b: 0x6cbece20,\n\t0x3337c: 0x6cbed020, 0x3337d: 0x6cbed220, 0x3337e: 0x6cbed420, 0x3337f: 0x6cbed620,\n\t// Block 0xcce, offset 0x33380\n\t0x33380: 0x6cbed820, 0x33381: 0x6cbeda20, 0x33382: 0x6cbedc20, 0x33383: 0x6cbede20,\n\t0x33384: 0x6cbee020, 0x33385: 0x6cbee220, 0x33386: 0x6cbee420, 0x33387: 0x6cbee620,\n\t0x33388: 0x6cbee820, 0x33389: 0x6cbeea20, 0x3338a: 0x6cbeec20, 0x3338b: 0x6cbeee20,\n\t0x3338c: 0x6cbef020, 0x3338d: 0x6cbef220, 0x3338e: 0x6cbef420, 0x3338f: 0x6cbef620,\n\t0x33390: 0x6cbef820, 0x33391: 0x6cbefa20, 0x33392: 0x6cbefc20, 0x33393: 0x6cbefe20,\n\t0x33394: 0x6cbf0020, 0x33395: 0x6cbf0220, 0x33396: 0x6cbf0420, 0x33397: 0x6cbf0620,\n\t0x33398: 0x6cbf0820, 0x33399: 0x6cbf0a20, 0x3339a: 0x6cbf0c20, 0x3339b: 0x6cbf0e20,\n\t0x3339c: 0x6cbf1020, 0x3339d: 0x6cbf1220, 0x3339e: 0x6cbf1420, 0x3339f: 0x6cbf1620,\n\t0x333a0: 0x6cbf1820, 0x333a1: 0x6cbf1a20, 0x333a2: 0x6cbf1c20, 0x333a3: 0x6cbf1e20,\n\t0x333a4: 0x6cbf2020, 0x333a5: 0x6cbf2220, 0x333a6: 0x6cbf2420, 0x333a7: 0x6cbf2620,\n\t0x333a8: 0x6cef1020, 0x333a9: 0x6cef1220, 0x333aa: 0x6cef1420, 0x333ab: 0x6cef1620,\n\t0x333ac: 0x6cef1820, 0x333ad: 0x6cef1a20, 0x333ae: 0x6cef1c20, 0x333af: 0x6cef1e20,\n\t0x333b0: 0x6cef2020, 0x333b1: 0x6cef2220, 0x333b2: 0x6cef2420, 0x333b3: 0x6cef2620,\n\t0x333b4: 0x6cef2820, 0x333b5: 0x6cef2a20, 0x333b6: 0x6cef2c20, 0x333b7: 0x6cef2e20,\n\t0x333b8: 0x6cef3020, 0x333b9: 0x6cef3220, 0x333ba: 0x6cef3420, 0x333bb: 0x6cef3620,\n\t0x333bc: 0x6cef3820, 0x333bd: 0x6cef3a20, 0x333be: 0x6cef3c20, 0x333bf: 0x6cef3e20,\n\t// Block 0xccf, offset 0x333c0\n\t0x333c0: 0x6cef4020, 0x333c1: 0x6cef4220, 0x333c2: 0x6cef4420, 0x333c3: 0x6cef4620,\n\t0x333c4: 0x6cef4820, 0x333c5: 0x6cef4a20, 0x333c6: 0x6cef4c20, 0x333c7: 0x6cef4e20,\n\t0x333c8: 0x6cef5020, 0x333c9: 0x6cef5220, 0x333ca: 0x6cef5420, 0x333cb: 0x6cef5620,\n\t0x333cc: 0x6cef5820, 0x333cd: 0x6cef5a20, 0x333ce: 0x6cef5c20, 0x333cf: 0x6cef5e20,\n\t0x333d0: 0x6cef6020, 0x333d1: 0x6cef6220, 0x333d2: 0x6cef6420, 0x333d3: 0x6cef6620,\n\t0x333d4: 0x6cef6820, 0x333d5: 0x6cef6a20, 0x333d6: 0x6d4c2220, 0x333d7: 0x6d1eaa20,\n\t0x333d8: 0x6d4c2420, 0x333d9: 0x6d1eac20, 0x333da: 0x6d1eae20, 0x333db: 0x6d1eb020,\n\t0x333dc: 0x6d1eb220, 0x333dd: 0x6d1eb420, 0x333de: 0x6d1eb620, 0x333df: 0x6d1eb820,\n\t0x333e0: 0x6d1eba20, 0x333e1: 0x6d1ebc20, 0x333e2: 0x6d1ebe20, 0x333e3: 0x6cbf2820,\n\t0x333e4: 0x6d1ec020, 0x333e5: 0x6d1ec220, 0x333e6: 0x6d1ec420, 0x333e7: 0x6d1ec620,\n\t0x333e8: 0x6d1ec820, 0x333e9: 0x6d1eca20, 0x333ea: 0x6d1ecc20, 0x333eb: 0x6d1ece20,\n\t0x333ec: 0x6d1ed020, 0x333ed: 0x6d1ed220, 0x333ee: 0x6d1ed420, 0x333ef: 0x6d1ed620,\n\t0x333f0: 0x6d1ed820, 0x333f1: 0x6d1eda20, 0x333f2: 0x6d4c2620, 0x333f3: 0x6d1edc20,\n\t0x333f4: 0x6d1ede20, 0x333f5: 0x6d1ee020, 0x333f6: 0x6d1ee220, 0x333f7: 0x6d1ee420,\n\t0x333f8: 0x6d1ee620, 0x333f9: 0x6d1ee820, 0x333fa: 0x6d1eea20, 0x333fb: 0x6d1eec20,\n\t0x333fc: 0x6d1eee20, 0x333fd: 0x6d1ef020, 0x333fe: 0x6d1ef220, 0x333ff: 0x6d1ef420,\n\t// Block 0xcd0, offset 0x33400\n\t0x33400: 0x6d1ef620, 0x33401: 0x6d1ef820, 0x33402: 0x6d1efa20, 0x33403: 0x6d1efc20,\n\t0x33404: 0x6d1efe20, 0x33405: 0x6d1f0020, 0x33406: 0x6d1f0220, 0x33407: 0x6d1f0420,\n\t0x33408: 0x6d1f0620, 0x33409: 0x6d1f0820, 0x3340a: 0x6d1f0a20, 0x3340b: 0x6d1f0c20,\n\t0x3340c: 0x6d1f0e20, 0x3340d: 0x6d1f1020, 0x3340e: 0x6d1f1220, 0x3340f: 0x6d4c2820,\n\t0x33410: 0x6d4c2a20, 0x33411: 0x6d4c2c20, 0x33412: 0x6d4c2e20, 0x33413: 0x6d4c3020,\n\t0x33414: 0x6d4c3220, 0x33415: 0x6d4c3420, 0x33416: 0x6d4c3620, 0x33417: 0x6d4c3820,\n\t0x33418: 0x6d4c3a20, 0x33419: 0x6d4c3c20, 0x3341a: 0x6d4c3e20, 0x3341b: 0x6d4c4020,\n\t0x3341c: 0x6d4c4220, 0x3341d: 0x6d4c4420, 0x3341e: 0x6d4c4620, 0x3341f: 0x6d4c4820,\n\t0x33420: 0x6d4c4a20, 0x33421: 0x6d4c4c20, 0x33422: 0x6d4c4e20, 0x33423: 0x6d4c5020,\n\t0x33424: 0x6d4c5220, 0x33425: 0x6d4c5420, 0x33426: 0x6d4c5620, 0x33427: 0x6d4c5820,\n\t0x33428: 0x6d4c5a20, 0x33429: 0x6d4c5c20, 0x3342a: 0x6d4c5e20, 0x3342b: 0x6d4c6020,\n\t0x3342c: 0x6d4c6220, 0x3342d: 0x6d4c6420, 0x3342e: 0x6d4c6620, 0x3342f: 0x6d4c6820,\n\t0x33430: 0x6d4c6a20, 0x33431: 0x6d4c6c20, 0x33432: 0x6d4c6e20, 0x33433: 0x6d4c7020,\n\t0x33434: 0x6d4c7220, 0x33435: 0x6d4c7420, 0x33436: 0x6d4c7620, 0x33437: 0x6d4c7820,\n\t0x33438: 0x6d4c7a20, 0x33439: 0x6d4c7c20, 0x3343a: 0x6d4c7e20, 0x3343b: 0x6d4c8020,\n\t0x3343c: 0x6d4c8220, 0x3343d: 0x6d4c8420, 0x3343e: 0x6d4c8620, 0x3343f: 0x6d4c8820,\n\t// Block 0xcd1, offset 0x33440\n\t0x33440: 0x6d4c8a20, 0x33441: 0x6d4c8c20, 0x33442: 0x6d4c8e20, 0x33443: 0x6d4c9020,\n\t0x33444: 0x6d4c9220, 0x33445: 0x6d4c9420, 0x33446: 0x6d4c9620, 0x33447: 0x6d4c9820,\n\t0x33448: 0x6d4c9a20, 0x33449: 0x6d4c9c20, 0x3344a: 0x6d4c9e20, 0x3344b: 0x6d4ca020,\n\t0x3344c: 0x6d4ca220, 0x3344d: 0x6d4ca420, 0x3344e: 0x6d796a20, 0x3344f: 0x6d601620,\n\t0x33450: 0x6d4ca620, 0x33451: 0x6d796c20, 0x33452: 0x6d796e20, 0x33453: 0x6d797020,\n\t0x33454: 0x6d797220, 0x33455: 0x6d797420, 0x33456: 0x6d797620, 0x33457: 0x6d797820,\n\t0x33458: 0x6d797a20, 0x33459: 0x6d797c20, 0x3345a: 0x6d797e20, 0x3345b: 0x6d798020,\n\t0x3345c: 0x6d798220, 0x3345d: 0x6d798420, 0x3345e: 0x6d798620, 0x3345f: 0x6d798820,\n\t0x33460: 0x6d798a20, 0x33461: 0x6d798c20, 0x33462: 0x6d798e20, 0x33463: 0x6d799020,\n\t0x33464: 0x6d799220, 0x33465: 0x6d799420, 0x33466: 0x6d799620, 0x33467: 0x6d799820,\n\t0x33468: 0x6d799a20, 0x33469: 0x6d799c20, 0x3346a: 0x6d799e20, 0x3346b: 0x6d79a020,\n\t0x3346c: 0x6d79a220, 0x3346d: 0x6d79a420, 0x3346e: 0x6d79a620, 0x3346f: 0x6d79a820,\n\t0x33470: 0x6d79aa20, 0x33471: 0x6d79ac20, 0x33472: 0x6d79ae20, 0x33473: 0x6d79b020,\n\t0x33474: 0x6d79b220, 0x33475: 0x6d79b420, 0x33476: 0x6d79b620, 0x33477: 0x6d79b820,\n\t0x33478: 0x6d79ba20, 0x33479: 0x6d79bc20, 0x3347a: 0x6d79be20, 0x3347b: 0x6d79c020,\n\t0x3347c: 0x6d79c220, 0x3347d: 0x6d79c420, 0x3347e: 0x6d79c620, 0x3347f: 0x6d79c820,\n\t// Block 0xcd2, offset 0x33480\n\t0x33480: 0x6d79ca20, 0x33481: 0x6d79cc20, 0x33482: 0x6d79ce20, 0x33483: 0x6d79d020,\n\t0x33484: 0x6d79d220, 0x33485: 0x6da24c20, 0x33486: 0x6da24e20, 0x33487: 0x6da25020,\n\t0x33488: 0x6da25220, 0x33489: 0x6da25420, 0x3348a: 0x6da25620, 0x3348b: 0x6da25820,\n\t0x3348c: 0x6da25a20, 0x3348d: 0x6da25c20, 0x3348e: 0x6da25e20, 0x3348f: 0x6da26020,\n\t0x33490: 0x6da26220, 0x33491: 0x6da26420, 0x33492: 0x6da26620, 0x33493: 0x6da26820,\n\t0x33494: 0x6da26a20, 0x33495: 0x6da26c20, 0x33496: 0x6da26e20, 0x33497: 0x6da27020,\n\t0x33498: 0x6da27220, 0x33499: 0x6da27420, 0x3349a: 0x6da27620, 0x3349b: 0x6da27820,\n\t0x3349c: 0x6da27a20, 0x3349d: 0x6da27c20, 0x3349e: 0x6da27e20, 0x3349f: 0x6da28020,\n\t0x334a0: 0x6da28220, 0x334a1: 0x6da28420, 0x334a2: 0x6db99820, 0x334a3: 0x6da28620,\n\t0x334a4: 0x6da28820, 0x334a5: 0x6da28a20, 0x334a6: 0x6da28c20, 0x334a7: 0x6da28e20,\n\t0x334a8: 0x6da29020, 0x334a9: 0x6da29220, 0x334aa: 0x6dc46020, 0x334ab: 0x6dc46220,\n\t0x334ac: 0x6dc46420, 0x334ad: 0x6dc46620, 0x334ae: 0x6dc46820, 0x334af: 0x6dc46a20,\n\t0x334b0: 0x6dc46c20, 0x334b1: 0x6dc46e20, 0x334b2: 0x6dc47020, 0x334b3: 0x6dc47220,\n\t0x334b4: 0x6dc47420, 0x334b5: 0x6dc47620, 0x334b6: 0x6dc47820, 0x334b7: 0x6dc47a20,\n\t0x334b8: 0x6dc47c20, 0x334b9: 0x6dc47e20, 0x334ba: 0x6dc48020, 0x334bb: 0x6dc48220,\n\t0x334bc: 0x6dc48420, 0x334bd: 0x6de16820, 0x334be: 0x6de16a20, 0x334bf: 0x6de16c20,\n\t// Block 0xcd3, offset 0x334c0\n\t0x334c0: 0x6de16e20, 0x334c1: 0x6de17020, 0x334c2: 0x6de17220, 0x334c3: 0x6de17420,\n\t0x334c4: 0x6de17620, 0x334c5: 0x6de17820, 0x334c6: 0x6de17a20, 0x334c7: 0x6de17c20,\n\t0x334c8: 0x6de17e20, 0x334c9: 0x6de18020, 0x334ca: 0x6de18220, 0x334cb: 0x6de18420,\n\t0x334cc: 0x6de18620, 0x334cd: 0x6de18820, 0x334ce: 0x6df97020, 0x334cf: 0x6df97220,\n\t0x334d0: 0x6df97420, 0x334d1: 0x6df97620, 0x334d2: 0x6df97820, 0x334d3: 0x6df97a20,\n\t0x334d4: 0x6df97c20, 0x334d5: 0x6df97e20, 0x334d6: 0x6df98020, 0x334d7: 0x6df98220,\n\t0x334d8: 0x6e0d3020, 0x334d9: 0x6e0d3220, 0x334da: 0x6e0d3420, 0x334db: 0x6e0d3620,\n\t0x334dc: 0x6e0d3820, 0x334dd: 0x6e0d3a20, 0x334de: 0x6de18a20, 0x334df: 0x6e0d3c20,\n\t0x334e0: 0x6e0d3e20, 0x334e1: 0x6e1ca020, 0x334e2: 0x6e1ca220, 0x334e3: 0x6e1ca420,\n\t0x334e4: 0x6e1ca620, 0x334e5: 0x6e1ca820, 0x334e6: 0x6e1caa20, 0x334e7: 0x6e1cac20,\n\t0x334e8: 0x6e1cae20, 0x334e9: 0x6e1cb020, 0x334ea: 0x6e1cb220, 0x334eb: 0x6e28a820,\n\t0x334ec: 0x6e28aa20, 0x334ed: 0x6e28ac20, 0x334ee: 0x6e31dc20, 0x334ef: 0x6e31de20,\n\t0x334f0: 0x6e31e020, 0x334f1: 0x6e31e220, 0x334f2: 0x6e31e420, 0x334f3: 0x6e31e620,\n\t0x334f4: 0x6e386220, 0x334f5: 0x6e386420, 0x334f6: 0x6e386620, 0x334f7: 0x6e401420,\n\t0x334f8: 0x6e401620, 0x334f9: 0x6e401820, 0x334fa: 0x6e401a20, 0x334fb: 0x6e467e20,\n\t0x334fc: 0x6c019e20, 0x334fd: 0x6c03f420, 0x334fe: 0x6c081420, 0x334ff: 0x6c081620,\n\t// Block 0xcd4, offset 0x33500\n\t0x33500: 0x6c081820, 0x33501: 0x6c081a20, 0x33502: 0x6c081c20, 0x33503: 0x6c0fb220,\n\t0x33504: 0x6c0fb420, 0x33505: 0x6c0fb620, 0x33506: 0x6c1c7020, 0x33507: 0x6c1c7220,\n\t0x33508: 0x6c1c7420, 0x33509: 0x6c1c7620, 0x3350a: 0x6c1c7820, 0x3350b: 0x6c18cc20,\n\t0x3350c: 0x6c1c7a20, 0x3350d: 0x6c1c7c20, 0x3350e: 0x6c2fde20, 0x3350f: 0x6c2fe020,\n\t0x33510: 0x6c2fe220, 0x33511: 0x6c2fe420, 0x33512: 0x6c2fe620, 0x33513: 0x6c2fe820,\n\t0x33514: 0x6c2fea20, 0x33515: 0x6c2fec20, 0x33516: 0x6c2fee20, 0x33517: 0x6c2ff020,\n\t0x33518: 0x6c2ff220, 0x33519: 0x6c2ff420, 0x3351a: 0x6c2ff620, 0x3351b: 0x6c4a2420,\n\t0x3351c: 0x6c4a2620, 0x3351d: 0x6c4a2820, 0x3351e: 0x6c4a2a20, 0x3351f: 0x6c4a2c20,\n\t0x33520: 0x6c4a2e20, 0x33521: 0x6c4a3020, 0x33522: 0x6c4a3220, 0x33523: 0x6c4a3420,\n\t0x33524: 0x6c4a3620, 0x33525: 0x6c4a3820, 0x33526: 0x6c4a3a20, 0x33527: 0x6c4a3c20,\n\t0x33528: 0x6c6be620, 0x33529: 0x6c6be820, 0x3352a: 0x6c6bea20, 0x3352b: 0x6c6bec20,\n\t0x3352c: 0x6c6bee20, 0x3352d: 0x6c6bf020, 0x3352e: 0x6c930c20, 0x3352f: 0x6c930e20,\n\t0x33530: 0x6c931020, 0x33531: 0x6c931220, 0x33532: 0x6c931420, 0x33533: 0x6c931620,\n\t0x33534: 0x6c931820, 0x33535: 0x6c931a20, 0x33536: 0x6cbf4620, 0x33537: 0x6cbf4820,\n\t0x33538: 0x6cbf4a20, 0x33539: 0x6cbf4c20, 0x3353a: 0x6cbf4e20, 0x3353b: 0x6cbf5020,\n\t0x3353c: 0x6cbf5220, 0x3353d: 0x6cbf5420, 0x3353e: 0x6cbf5620, 0x3353f: 0x6cbf5820,\n\t// Block 0xcd5, offset 0x33540\n\t0x33540: 0x6cbf5a20, 0x33541: 0x6cbf5c20, 0x33542: 0x6cbf5e20, 0x33543: 0x6cef7c20,\n\t0x33544: 0x6cef7e20, 0x33545: 0x6cef8020, 0x33546: 0x6cef8220, 0x33547: 0x6cef8420,\n\t0x33548: 0x6cef8620, 0x33549: 0x6cef8820, 0x3354a: 0x6cef8a20, 0x3354b: 0x6cef8c20,\n\t0x3354c: 0x6cef8e20, 0x3354d: 0x6cef9020, 0x3354e: 0x6cef9220, 0x3354f: 0x6cef9420,\n\t0x33550: 0x6cef9620, 0x33551: 0x6d1f2e20, 0x33552: 0x6d1f3020, 0x33553: 0x6d1f3220,\n\t0x33554: 0x6d1f3420, 0x33555: 0x6d1f3620, 0x33556: 0x6d1f3820, 0x33557: 0x6d4cb820,\n\t0x33558: 0x6d4cba20, 0x33559: 0x6d4cbc20, 0x3355a: 0x6d4cbe20, 0x3355b: 0x6d4cc020,\n\t0x3355c: 0x6d4cc220, 0x3355d: 0x6d4cc420, 0x3355e: 0x6d79e620, 0x3355f: 0x6d79e820,\n\t0x33560: 0x6d79ea20, 0x33561: 0x6d79ec20, 0x33562: 0x6d79ee20, 0x33563: 0x6d79f020,\n\t0x33564: 0x6d79f220, 0x33565: 0x6d79f420, 0x33566: 0x6d79f620, 0x33567: 0x6d79f820,\n\t0x33568: 0x6d79fa20, 0x33569: 0x6da29a20, 0x3356a: 0x6dc48e20, 0x3356b: 0x6dc49020,\n\t0x3356c: 0x6dc49220, 0x3356d: 0x6de19220, 0x3356e: 0x6de19420, 0x3356f: 0x6de19620,\n\t0x33570: 0x6de19820, 0x33571: 0x6df98a20, 0x33572: 0x6df98c20, 0x33573: 0x6df98e20,\n\t0x33574: 0x6df99020, 0x33575: 0x6df99220, 0x33576: 0x6df99420, 0x33577: 0x6e1cb620,\n\t0x33578: 0x6e401c20, 0x33579: 0x6c03f820, 0x3357a: 0x6c082a20, 0x3357b: 0x6c082c20,\n\t0x3357c: 0x6c082e20, 0x3357d: 0x6c0fc620, 0x3357e: 0x6c0fc820, 0x3357f: 0x6c0fca20,\n\t// Block 0xcd6, offset 0x33580\n\t0x33580: 0x6c0fcc20, 0x33581: 0x6c0fce20, 0x33582: 0x6c0fd020, 0x33583: 0x6c0fd220,\n\t0x33584: 0x6c0fd420, 0x33585: 0x6c0fd620, 0x33586: 0x6c0fd820, 0x33587: 0x6c0fda20,\n\t0x33588: 0x6c0fdc20, 0x33589: 0x6c0fde20, 0x3358a: 0x6c0fe020, 0x3358b: 0x6c1ca020,\n\t0x3358c: 0x6c1ca220, 0x3358d: 0x6c1ca420, 0x3358e: 0x6c1ca620, 0x3358f: 0x6c1ca820,\n\t0x33590: 0x6c1caa20, 0x33591: 0x6c1cac20, 0x33592: 0x6c1cae20, 0x33593: 0x6c1cb020,\n\t0x33594: 0x6c1cb220, 0x33595: 0x6c1cb420, 0x33596: 0x6c301a20, 0x33597: 0x6c301c20,\n\t0x33598: 0x6c301e20, 0x33599: 0x6c302020, 0x3359a: 0x6c302220, 0x3359b: 0x6c302420,\n\t0x3359c: 0x6c302620, 0x3359d: 0x6c302820, 0x3359e: 0x6c302a20, 0x3359f: 0x6c302c20,\n\t0x335a0: 0x6c302e20, 0x335a1: 0x6c303020, 0x335a2: 0x6c303220, 0x335a3: 0x6c303420,\n\t0x335a4: 0x6c303620, 0x335a5: 0x6c303820, 0x335a6: 0x6c303a20, 0x335a7: 0x6c303c20,\n\t0x335a8: 0x6c303e20, 0x335a9: 0x6c4a5a20, 0x335aa: 0x6c4a5c20, 0x335ab: 0x6c4a5e20,\n\t0x335ac: 0x6c4a6020, 0x335ad: 0x6c4a6220, 0x335ae: 0x6c4a6420, 0x335af: 0x6c4a6620,\n\t0x335b0: 0x6c4a6820, 0x335b1: 0x6c4a6a20, 0x335b2: 0x6c4a6c20, 0x335b3: 0x6c4a6e20,\n\t0x335b4: 0x6c4a7020, 0x335b5: 0x6c4a7220, 0x335b6: 0x6c4a7420, 0x335b7: 0x6c4a7620,\n\t0x335b8: 0x6c4a7820, 0x335b9: 0x6c4a7a20, 0x335ba: 0x6c4a7c20, 0x335bb: 0x6c4a7e20,\n\t0x335bc: 0x6c4a8020, 0x335bd: 0x6c4a8220, 0x335be: 0x6c4a8420, 0x335bf: 0x6c4a8620,\n\t// Block 0xcd7, offset 0x335c0\n\t0x335c0: 0x6c6c2620, 0x335c1: 0x6c6c2820, 0x335c2: 0x6c6c2a20, 0x335c3: 0x6c6c2c20,\n\t0x335c4: 0x6c6c2e20, 0x335c5: 0x6c6c3020, 0x335c6: 0x6c6c3220, 0x335c7: 0x6c6c3420,\n\t0x335c8: 0x6c6c3620, 0x335c9: 0x6c6c3820, 0x335ca: 0x6c6c3a20, 0x335cb: 0x6c6c3c20,\n\t0x335cc: 0x6c6c3e20, 0x335cd: 0x6c6c4020, 0x335ce: 0x6c6c4220, 0x335cf: 0x6c6c4420,\n\t0x335d0: 0x6c6c4620, 0x335d1: 0x6c6c4820, 0x335d2: 0x6c6c4a20, 0x335d3: 0x6c6c4c20,\n\t0x335d4: 0x6c6c4e20, 0x335d5: 0x6c6c5020, 0x335d6: 0x6c6c5220, 0x335d7: 0x6c6c5420,\n\t0x335d8: 0x6c6c5620, 0x335d9: 0x6c6c5820, 0x335da: 0x6c6c5a20, 0x335db: 0x6c6c5c20,\n\t0x335dc: 0x6c6c5e20, 0x335dd: 0x6c6c6020, 0x335de: 0x6c6c6220, 0x335df: 0x6c6c6420,\n\t0x335e0: 0x6c6c6620, 0x335e1: 0x6c6c6820, 0x335e2: 0x6c934620, 0x335e3: 0x6c934820,\n\t0x335e4: 0x6c934a20, 0x335e5: 0x6c934c20, 0x335e6: 0x6c934e20, 0x335e7: 0x6c935020,\n\t0x335e8: 0x6c935220, 0x335e9: 0x6c935420, 0x335ea: 0x6c935620, 0x335eb: 0x6c935820,\n\t0x335ec: 0x6c935a20, 0x335ed: 0x6c935c20, 0x335ee: 0x6c935e20, 0x335ef: 0x6c936020,\n\t0x335f0: 0x6c936220, 0x335f1: 0x6c936420, 0x335f2: 0x6c936620, 0x335f3: 0x6c936820,\n\t0x335f4: 0x6c936a20, 0x335f5: 0x6c936c20, 0x335f6: 0x6c936e20, 0x335f7: 0x6c937020,\n\t0x335f8: 0x6c937220, 0x335f9: 0x6c937420, 0x335fa: 0x6c937620, 0x335fb: 0x6c937820,\n\t0x335fc: 0x6c937a20, 0x335fd: 0x6cbf8220, 0x335fe: 0x6cbf8420, 0x335ff: 0x6cbf8620,\n\t// Block 0xcd8, offset 0x33600\n\t0x33600: 0x6cbf8820, 0x33601: 0x6cbf8a20, 0x33602: 0x6cbf8c20, 0x33603: 0x6cbf8e20,\n\t0x33604: 0x6cbf9020, 0x33605: 0x6cbf9220, 0x33606: 0x6cbf9420, 0x33607: 0x6cbf9620,\n\t0x33608: 0x6cbf9820, 0x33609: 0x6cbf9a20, 0x3360a: 0x6cbf9c20, 0x3360b: 0x6cbf9e20,\n\t0x3360c: 0x6cbfa020, 0x3360d: 0x6cbfa220, 0x3360e: 0x6cbfa420, 0x3360f: 0x6cbfa620,\n\t0x33610: 0x6cbfa820, 0x33611: 0x6cbfaa20, 0x33612: 0x6cbfac20, 0x33613: 0x6cbfae20,\n\t0x33614: 0x6cbfb020, 0x33615: 0x6cbfb220, 0x33616: 0x6cbfb420, 0x33617: 0x6cbfb620,\n\t0x33618: 0x6cbfb820, 0x33619: 0x6cbfba20, 0x3361a: 0x6cbfbc20, 0x3361b: 0x6cbfbe20,\n\t0x3361c: 0x6cbfc020, 0x3361d: 0x6cbfc220, 0x3361e: 0x6cbfc420, 0x3361f: 0x6cefb420,\n\t0x33620: 0x6cefb620, 0x33621: 0x6cefb820, 0x33622: 0x6cefba20, 0x33623: 0x6cefbc20,\n\t0x33624: 0x6cefbe20, 0x33625: 0x6cefc020, 0x33626: 0x6cefc220, 0x33627: 0x6cefc420,\n\t0x33628: 0x6cefc620, 0x33629: 0x6cefc820, 0x3362a: 0x6cefca20, 0x3362b: 0x6cefcc20,\n\t0x3362c: 0x6cefce20, 0x3362d: 0x6cefd020, 0x3362e: 0x6cefd220, 0x3362f: 0x6cefd420,\n\t0x33630: 0x6cefd620, 0x33631: 0x6cefd820, 0x33632: 0x6cefda20, 0x33633: 0x6cefdc20,\n\t0x33634: 0x6cefde20, 0x33635: 0x6cefe020, 0x33636: 0x6cefe220, 0x33637: 0x6cefe420,\n\t0x33638: 0x6cefe620, 0x33639: 0x6cefe820, 0x3363a: 0x6cefea20, 0x3363b: 0x6d1f5a20,\n\t0x3363c: 0x6d1f5c20, 0x3363d: 0x6d1f5e20, 0x3363e: 0x6d1f6020, 0x3363f: 0x6d1f6220,\n\t// Block 0xcd9, offset 0x33640\n\t0x33640: 0x6d1f6420, 0x33641: 0x6d1f6620, 0x33642: 0x6d1f6820, 0x33643: 0x6d1f6a20,\n\t0x33644: 0x6d1f6c20, 0x33645: 0x6d1f6e20, 0x33646: 0x6d1f7020, 0x33647: 0x6d1f7220,\n\t0x33648: 0x6d1f7420, 0x33649: 0x6d1f7620, 0x3364a: 0x6d1f7820, 0x3364b: 0x6d1f7a20,\n\t0x3364c: 0x6d1f7c20, 0x3364d: 0x6d1f7e20, 0x3364e: 0x6d1f8020, 0x3364f: 0x6d1f8220,\n\t0x33650: 0x6d1f8420, 0x33651: 0x6d1f8620, 0x33652: 0x6d1f8820, 0x33653: 0x6d1f8a20,\n\t0x33654: 0x6d1f8c20, 0x33655: 0x6d1f8e20, 0x33656: 0x6d1f9020, 0x33657: 0x6d1f9220,\n\t0x33658: 0x6d1f9420, 0x33659: 0x6d1f9620, 0x3365a: 0x6d1f9820, 0x3365b: 0x6d1f9a20,\n\t0x3365c: 0x6d1f9c20, 0x3365d: 0x6d1f9e20, 0x3365e: 0x6d1b3020, 0x3365f: 0x6d4cd820,\n\t0x33660: 0x6d4cda20, 0x33661: 0x6d4cdc20, 0x33662: 0x6d4cde20, 0x33663: 0x6d4ce020,\n\t0x33664: 0x6d4ce220, 0x33665: 0x6d4ce420, 0x33666: 0x6d4ce620, 0x33667: 0x6d4ce820,\n\t0x33668: 0x6d4cea20, 0x33669: 0x6d4cec20, 0x3366a: 0x6d4cee20, 0x3366b: 0x6d4cf020,\n\t0x3366c: 0x6d4cf220, 0x3366d: 0x6d4cf420, 0x3366e: 0x6d4cf620, 0x3366f: 0x6d4cf820,\n\t0x33670: 0x6d4cfa20, 0x33671: 0x6d4cfc20, 0x33672: 0x6d4cfe20, 0x33673: 0x6d4d0020,\n\t0x33674: 0x6d4d0220, 0x33675: 0x6d4d0420, 0x33676: 0x6d4d0620, 0x33677: 0x6d4d0820,\n\t0x33678: 0x6d4d0a20, 0x33679: 0x6d4d0c20, 0x3367a: 0x6d4d0e20, 0x3367b: 0x6d4d1020,\n\t0x3367c: 0x6d4d1220, 0x3367d: 0x6d4d1420, 0x3367e: 0x6d7a0220, 0x3367f: 0x6d7a0420,\n\t// Block 0xcda, offset 0x33680\n\t0x33680: 0x6d7a0620, 0x33681: 0x6d7a0820, 0x33682: 0x6d7a0a20, 0x33683: 0x6d7a0c20,\n\t0x33684: 0x6d7a0e20, 0x33685: 0x6d7a1020, 0x33686: 0x6d7a1220, 0x33687: 0x6d7a1420,\n\t0x33688: 0x6d7a1620, 0x33689: 0x6d7a1820, 0x3368a: 0x6d7a1a20, 0x3368b: 0x6d7a1c20,\n\t0x3368c: 0x6d7a1e20, 0x3368d: 0x6d7a2020, 0x3368e: 0x6d7a2220, 0x3368f: 0x6d7a2420,\n\t0x33690: 0x6d7a2620, 0x33691: 0x6da2a420, 0x33692: 0x6da2a620, 0x33693: 0x6da2a820,\n\t0x33694: 0x6da2aa20, 0x33695: 0x6da2ac20, 0x33696: 0x6da2ae20, 0x33697: 0x6da2b020,\n\t0x33698: 0x6da2b220, 0x33699: 0x6da2b420, 0x3369a: 0x6da2b620, 0x3369b: 0x6da2b820,\n\t0x3369c: 0x6da2ba20, 0x3369d: 0x6da2bc20, 0x3369e: 0x6dc49620, 0x3369f: 0x6dc49820,\n\t0x336a0: 0x6dc49a20, 0x336a1: 0x6dc49c20, 0x336a2: 0x6dc49e20, 0x336a3: 0x6dc4a020,\n\t0x336a4: 0x6dc4a220, 0x336a5: 0x6dc4a420, 0x336a6: 0x6dc4a620, 0x336a7: 0x6dc4a820,\n\t0x336a8: 0x6dc4aa20, 0x336a9: 0x6dc4ac20, 0x336aa: 0x6dc4ae20, 0x336ab: 0x6dc4b020,\n\t0x336ac: 0x6de1a020, 0x336ad: 0x6de1a220, 0x336ae: 0x6de1a420, 0x336af: 0x6de1a620,\n\t0x336b0: 0x6de1a820, 0x336b1: 0x6de1aa20, 0x336b2: 0x6de1ac20, 0x336b3: 0x6de1ae20,\n\t0x336b4: 0x6de1b020, 0x336b5: 0x6de1b220, 0x336b6: 0x6de1b420, 0x336b7: 0x6df99820,\n\t0x336b8: 0x6df99a20, 0x336b9: 0x6df99c20, 0x336ba: 0x6df99e20, 0x336bb: 0x6df9a020,\n\t0x336bc: 0x6e0d4a20, 0x336bd: 0x6e0d4c20, 0x336be: 0x6e0d4e20, 0x336bf: 0x6e0d5020,\n\t// Block 0xcdb, offset 0x336c0\n\t0x336c0: 0x6e0d5220, 0x336c1: 0x6e0d5420, 0x336c2: 0x6e0d5620, 0x336c3: 0x6e0d5820,\n\t0x336c4: 0x6e1cb820, 0x336c5: 0x6e1cba20, 0x336c6: 0x6e1cbc20, 0x336c7: 0x6e1cbe20,\n\t0x336c8: 0x6e1cc020, 0x336c9: 0x6e1cc220, 0x336ca: 0x6e1cc420, 0x336cb: 0x6e1cc620,\n\t0x336cc: 0x6e28b020, 0x336cd: 0x6e31e820, 0x336ce: 0x6e401e20, 0x336cf: 0x6e31ea20,\n\t0x336d0: 0x6e31ec20, 0x336d1: 0x6e386a20, 0x336d2: 0x6e428e20, 0x336d3: 0x6e386c20,\n\t0x336d4: 0x6e386e20, 0x336d5: 0x6e387020, 0x336d6: 0x6e3d1c20, 0x336d7: 0x6e3d1e20,\n\t0x336d8: 0x6e3d2020, 0x336d9: 0x6e402020, 0x336da: 0x6e402220, 0x336db: 0x6e442820,\n\t0x336dc: 0x6e46e420, 0x336dd: 0x6c03fa20, 0x336de: 0x6c0fe820, 0x336df: 0x6c304820,\n\t0x336e0: 0x6c304a20, 0x336e1: 0x6c304c20, 0x336e2: 0x6c304e20, 0x336e3: 0x6c305020,\n\t0x336e4: 0x6c305220, 0x336e5: 0x6c305420, 0x336e6: 0x6c305620, 0x336e7: 0x6c4a9420,\n\t0x336e8: 0x6c4a9620, 0x336e9: 0x6c4a9820, 0x336ea: 0x6c4a9a20, 0x336eb: 0x6c4a9c20,\n\t0x336ec: 0x6c4a9e20, 0x336ed: 0x6c6c7a20, 0x336ee: 0x6c938820, 0x336ef: 0x6c938a20,\n\t0x336f0: 0x6c938c20, 0x336f1: 0x6c938e20, 0x336f2: 0x6c939020, 0x336f3: 0x6cbfdc20,\n\t0x336f4: 0x6cbfde20, 0x336f5: 0x6cbfe020, 0x336f6: 0x6cbfe220, 0x336f7: 0x6cbfe420,\n\t0x336f8: 0x6cbfe620, 0x336f9: 0x6ceff820, 0x336fa: 0x6ceffa20, 0x336fb: 0x6ceffc20,\n\t0x336fc: 0x6ceffe20, 0x336fd: 0x6d1fae20, 0x336fe: 0x6d1fb020, 0x336ff: 0x6d1fb220,\n\t// Block 0xcdc, offset 0x33700\n\t0x33700: 0x6d1fb420, 0x33701: 0x6d1fb620, 0x33702: 0x6d1fb820, 0x33703: 0x6d4d2420,\n\t0x33704: 0x6d4d2620, 0x33705: 0x6d4d2820, 0x33706: 0x6d4d2a20, 0x33707: 0x6d4d2c20,\n\t0x33708: 0x6d4d2e20, 0x33709: 0x6d4d3020, 0x3370a: 0x6d7a3020, 0x3370b: 0x6d7a3220,\n\t0x3370c: 0x6d7a3420, 0x3370d: 0x6da2c020, 0x3370e: 0x6da2c220, 0x3370f: 0x6da2c420,\n\t0x33710: 0x6dc4b820, 0x33711: 0x6de1b620, 0x33712: 0x6df9a620, 0x33713: 0x6e0d5c20,\n\t0x33714: 0x6c01aa20, 0x33715: 0x6c040020, 0x33716: 0x6c040220, 0x33717: 0x6c083e20,\n\t0x33718: 0x6c084020, 0x33719: 0x6c0ff220, 0x3371a: 0x6c0ff420, 0x3371b: 0x6c0ff620,\n\t0x3371c: 0x6c0ff820, 0x3371d: 0x6c1cc420, 0x3371e: 0x6c1cc620, 0x3371f: 0x6c1cc820,\n\t0x33720: 0x6c1cca20, 0x33721: 0x6c1ccc20, 0x33722: 0x6c1cce20, 0x33723: 0x6c1cd020,\n\t0x33724: 0x6c1cd220, 0x33725: 0x6c305e20, 0x33726: 0x6c306020, 0x33727: 0x6c306220,\n\t0x33728: 0x6c306420, 0x33729: 0x6c306620, 0x3372a: 0x6c4aa620, 0x3372b: 0x6c4aa820,\n\t0x3372c: 0x6c4aaa20, 0x3372d: 0x6c4aac20, 0x3372e: 0x6c4aae20, 0x3372f: 0x6c4ab020,\n\t0x33730: 0x6c4ab220, 0x33731: 0x6c4ab420, 0x33732: 0x6c4ab620, 0x33733: 0x6c4ab820,\n\t0x33734: 0x6c6c7e20, 0x33735: 0x6c6c8020, 0x33736: 0x6c6c8220, 0x33737: 0x6c6c8420,\n\t0x33738: 0x6c6c8620, 0x33739: 0x6c6c8820, 0x3373a: 0x6c6c8a20, 0x3373b: 0x6c6c8c20,\n\t0x3373c: 0x6c6c8e20, 0x3373d: 0x6c939620, 0x3373e: 0x6c939820, 0x3373f: 0x6c939a20,\n\t// Block 0xcdd, offset 0x33740\n\t0x33740: 0x6c939c20, 0x33741: 0x6c939e20, 0x33742: 0x6c93a020, 0x33743: 0x6c93a220,\n\t0x33744: 0x6c93a420, 0x33745: 0x6c93a620, 0x33746: 0x6c93a820, 0x33747: 0x6c93aa20,\n\t0x33748: 0x6c93ac20, 0x33749: 0x6c93ae20, 0x3374a: 0x6c93b020, 0x3374b: 0x6c93b220,\n\t0x3374c: 0x6c93b420, 0x3374d: 0x6c93b620, 0x3374e: 0x6cbfee20, 0x3374f: 0x6cbff020,\n\t0x33750: 0x6cbff220, 0x33751: 0x6cbff420, 0x33752: 0x6cbff620, 0x33753: 0x6cbff820,\n\t0x33754: 0x6cbffa20, 0x33755: 0x6cbffc20, 0x33756: 0x6cbffe20, 0x33757: 0x6cc00020,\n\t0x33758: 0x6cf00620, 0x33759: 0x6cf00820, 0x3375a: 0x6cf00a20, 0x3375b: 0x6cf00c20,\n\t0x3375c: 0x6cf00e20, 0x3375d: 0x6cf01020, 0x3375e: 0x6d1fbe20, 0x3375f: 0x6d1fc020,\n\t0x33760: 0x6d1fc220, 0x33761: 0x6d1fc420, 0x33762: 0x6d1fc620, 0x33763: 0x6d1fc820,\n\t0x33764: 0x6d1fca20, 0x33765: 0x6d1fcc20, 0x33766: 0x6d4d3a20, 0x33767: 0x6d4d3c20,\n\t0x33768: 0x6d4d3e20, 0x33769: 0x6d4d4020, 0x3376a: 0x6d4d4220, 0x3376b: 0x6d4d4420,\n\t0x3376c: 0x6d4d4620, 0x3376d: 0x6d4d4820, 0x3376e: 0x6d4d4a20, 0x3376f: 0x6d4d4c20,\n\t0x33770: 0x6d7a3820, 0x33771: 0x6d7a3a20, 0x33772: 0x6d7a3c20, 0x33773: 0x6d7a3e20,\n\t0x33774: 0x6da2c820, 0x33775: 0x6da2ca20, 0x33776: 0x6da2cc20, 0x33777: 0x6dc4ba20,\n\t0x33778: 0x6dc4bc20, 0x33779: 0x6dc4be20, 0x3377a: 0x6dc4c020, 0x3377b: 0x6dc4c220,\n\t0x3377c: 0x6de1b820, 0x3377d: 0x6de1ba20, 0x3377e: 0x6de1bc20, 0x3377f: 0x6e0d5e20,\n\t// Block 0xcde, offset 0x33780\n\t0x33780: 0x6e462420, 0x33781: 0x6c01ae20, 0x33782: 0x6c01b020, 0x33783: 0x6c040820,\n\t0x33784: 0x6c084220, 0x33785: 0x6c084420, 0x33786: 0x6c084620, 0x33787: 0x6c084820,\n\t0x33788: 0x6c084a20, 0x33789: 0x6c084c20, 0x3378a: 0x6c084e20, 0x3378b: 0x6c100220,\n\t0x3378c: 0x6c100420, 0x3378d: 0x6c100620, 0x3378e: 0x6c100820, 0x3378f: 0x6c1ce220,\n\t0x33790: 0x6c1ce420, 0x33791: 0x6c1ce620, 0x33792: 0x6c1ce820, 0x33793: 0x6c1cea20,\n\t0x33794: 0x6c1cec20, 0x33795: 0x6c1cee20, 0x33796: 0x6c1cf020, 0x33797: 0x6c1cf220,\n\t0x33798: 0x6c1cf420, 0x33799: 0x6c1cf620, 0x3379a: 0x6c307020, 0x3379b: 0x6c307220,\n\t0x3379c: 0x6c307420, 0x3379d: 0x6c307620, 0x3379e: 0x6c307820, 0x3379f: 0x6c307a20,\n\t0x337a0: 0x6c307c20, 0x337a1: 0x6c307e20, 0x337a2: 0x6c4ac220, 0x337a3: 0x6c4ac420,\n\t0x337a4: 0x6c4ac620, 0x337a5: 0x6c5fca20, 0x337a6: 0x6c4ac820, 0x337a7: 0x6c4aca20,\n\t0x337a8: 0x6c6c9620, 0x337a9: 0x6c6c9820, 0x337aa: 0x6c6c9a20, 0x337ab: 0x6c6c9c20,\n\t0x337ac: 0x6c6c9e20, 0x337ad: 0x6c6ca020, 0x337ae: 0x6c6ca220, 0x337af: 0x6c6ca420,\n\t0x337b0: 0x6c6ca620, 0x337b1: 0x6c6ca820, 0x337b2: 0x6c6caa20, 0x337b3: 0x6c93c020,\n\t0x337b4: 0x6c93c220, 0x337b5: 0x6c93c420, 0x337b6: 0x6c93c620, 0x337b7: 0x6c93c820,\n\t0x337b8: 0x6c93ca20, 0x337b9: 0x6cc00a20, 0x337ba: 0x6cc00c20, 0x337bb: 0x6cc00e20,\n\t0x337bc: 0x6cc01020, 0x337bd: 0x6cc01220, 0x337be: 0x6cc01420, 0x337bf: 0x6cc01620,\n\t// Block 0xcdf, offset 0x337c0\n\t0x337c0: 0x6cc01820, 0x337c1: 0x6cc01a20, 0x337c2: 0x6cc01c20, 0x337c3: 0x6cf01c20,\n\t0x337c4: 0x6cf01e20, 0x337c5: 0x6cf02020, 0x337c6: 0x6cf02220, 0x337c7: 0x6cf02420,\n\t0x337c8: 0x6cf02620, 0x337c9: 0x6cf02820, 0x337ca: 0x6cf02a20, 0x337cb: 0x6d1fd020,\n\t0x337cc: 0x6d1fd220, 0x337cd: 0x6d1fd420, 0x337ce: 0x6d1fd620, 0x337cf: 0x6d1fd820,\n\t0x337d0: 0x6d4d5220, 0x337d1: 0x6d4d5420, 0x337d2: 0x6d4d5620, 0x337d3: 0x6d4d5820,\n\t0x337d4: 0x6d4d5a20, 0x337d5: 0x6d4d5c20, 0x337d6: 0x6d7a4220, 0x337d7: 0x6d7a4420,\n\t0x337d8: 0x6d7a4620, 0x337d9: 0x6d7a4820, 0x337da: 0x6d7a4a20, 0x337db: 0x6da2d620,\n\t0x337dc: 0x6da2d820, 0x337dd: 0x6e0d6020, 0x337de: 0x6e0d6220, 0x337df: 0x6e1cc820,\n\t0x337e0: 0x6e1cca20, 0x337e1: 0x6e387220, 0x337e2: 0x6e387420, 0x337e3: 0x6c01b420,\n\t0x337e4: 0x6c085620, 0x337e5: 0x6c085820, 0x337e6: 0x6c085a20, 0x337e7: 0x6c085c20,\n\t0x337e8: 0x6c085e20, 0x337e9: 0x6c101020, 0x337ea: 0x6c101220, 0x337eb: 0x6c101420,\n\t0x337ec: 0x6c101620, 0x337ed: 0x6c101820, 0x337ee: 0x6c101a20, 0x337ef: 0x6c101c20,\n\t0x337f0: 0x6c101e20, 0x337f1: 0x6c102020, 0x337f2: 0x6c102220, 0x337f3: 0x6c102420,\n\t0x337f4: 0x6c086020, 0x337f5: 0x6c1d0620, 0x337f6: 0x6c1d0820, 0x337f7: 0x6c1d0a20,\n\t0x337f8: 0x6c1d0c20, 0x337f9: 0x6c1d0e20, 0x337fa: 0x6c1d1020, 0x337fb: 0x6c1d1220,\n\t0x337fc: 0x6c1d1420, 0x337fd: 0x6c1d1620, 0x337fe: 0x6c309420, 0x337ff: 0x6c309620,\n\t// Block 0xce0, offset 0x33800\n\t0x33800: 0x6c309820, 0x33801: 0x6c309a20, 0x33802: 0x6c309c20, 0x33803: 0x6c309e20,\n\t0x33804: 0x6c30a020, 0x33805: 0x6c30a220, 0x33806: 0x6c30a420, 0x33807: 0x6c30a620,\n\t0x33808: 0x6c30a820, 0x33809: 0x6c30aa20, 0x3380a: 0x6c30ac20, 0x3380b: 0x6c30ae20,\n\t0x3380c: 0x6c4ae020, 0x3380d: 0x6c4ae220, 0x3380e: 0x6c4ae420, 0x3380f: 0x6c4ae620,\n\t0x33810: 0x6c4ae820, 0x33811: 0x6c4aea20, 0x33812: 0x6c4aec20, 0x33813: 0x6c4aee20,\n\t0x33814: 0x6c4af020, 0x33815: 0x6c4af220, 0x33816: 0x6c4af420, 0x33817: 0x6c4af620,\n\t0x33818: 0x6c4af820, 0x33819: 0x6c4afa20, 0x3381a: 0x6c4afc20, 0x3381b: 0x6c4afe20,\n\t0x3381c: 0x6c4b0020, 0x3381d: 0x6c4b0220, 0x3381e: 0x6c4b0420, 0x3381f: 0x6c4b0620,\n\t0x33820: 0x6c4b0820, 0x33821: 0x6c4b0a20, 0x33822: 0x6c6cc020, 0x33823: 0x6c6cc220,\n\t0x33824: 0x6c6cc420, 0x33825: 0x6c6cc620, 0x33826: 0x6c6cc820, 0x33827: 0x6c6cca20,\n\t0x33828: 0x6c6ccc20, 0x33829: 0x6c6cce20, 0x3382a: 0x6c6cd020, 0x3382b: 0x6c6cd220,\n\t0x3382c: 0x6c6cd420, 0x3382d: 0x6c6cd620, 0x3382e: 0x6c6cd820, 0x3382f: 0x6c6cda20,\n\t0x33830: 0x6c6cdc20, 0x33831: 0x6c6cde20, 0x33832: 0x6c6ce020, 0x33833: 0x6c6ce220,\n\t0x33834: 0x6c6ce420, 0x33835: 0x6c6ce620, 0x33836: 0x6c6ce820, 0x33837: 0x6c6cea20,\n\t0x33838: 0x6c6cec20, 0x33839: 0x6c6cee20, 0x3383a: 0x6c93da20, 0x3383b: 0x6c93dc20,\n\t0x3383c: 0x6c93de20, 0x3383d: 0x6c93e020, 0x3383e: 0x6c93e220, 0x3383f: 0x6c93e420,\n\t// Block 0xce1, offset 0x33840\n\t0x33840: 0x6c93e620, 0x33841: 0x6c93e820, 0x33842: 0x6c93ea20, 0x33843: 0x6c93ec20,\n\t0x33844: 0x6c93ee20, 0x33845: 0x6c93f020, 0x33846: 0x6c93f220, 0x33847: 0x6c93f420,\n\t0x33848: 0x6c93f620, 0x33849: 0x6c93f820, 0x3384a: 0x6c93fa20, 0x3384b: 0x6c93fc20,\n\t0x3384c: 0x6c93fe20, 0x3384d: 0x6c940020, 0x3384e: 0x6c940220, 0x3384f: 0x6c940420,\n\t0x33850: 0x6c940620, 0x33851: 0x6c940820, 0x33852: 0x6c940a20, 0x33853: 0x6c940c20,\n\t0x33854: 0x6cc02a20, 0x33855: 0x6cc02c20, 0x33856: 0x6cc02e20, 0x33857: 0x6cc03020,\n\t0x33858: 0x6cc03220, 0x33859: 0x6cc03420, 0x3385a: 0x6cc03620, 0x3385b: 0x6cc03820,\n\t0x3385c: 0x6cc03a20, 0x3385d: 0x6cc03c20, 0x3385e: 0x6cc03e20, 0x3385f: 0x6cc04020,\n\t0x33860: 0x6cc04220, 0x33861: 0x6cc04420, 0x33862: 0x6cc04620, 0x33863: 0x6cc04820,\n\t0x33864: 0x6cc04a20, 0x33865: 0x6cc04c20, 0x33866: 0x6cc04e20, 0x33867: 0x6cc05020,\n\t0x33868: 0x6cc05220, 0x33869: 0x6cc05420, 0x3386a: 0x6cc05620, 0x3386b: 0x6cc05820,\n\t0x3386c: 0x6cf02e20, 0x3386d: 0x6cf03020, 0x3386e: 0x6cf03220, 0x3386f: 0x6cf03420,\n\t0x33870: 0x6cf03620, 0x33871: 0x6cf03820, 0x33872: 0x6cf03a20, 0x33873: 0x6cf03c20,\n\t0x33874: 0x6cf03e20, 0x33875: 0x6cf04020, 0x33876: 0x6cf04220, 0x33877: 0x6cf04420,\n\t0x33878: 0x6cf04620, 0x33879: 0x6cf04820, 0x3387a: 0x6cf04a20, 0x3387b: 0x6cf04c20,\n\t0x3387c: 0x6cf04e20, 0x3387d: 0x6cf05020, 0x3387e: 0x6cf05220, 0x3387f: 0x6cf05420,\n\t// Block 0xce2, offset 0x33880\n\t0x33880: 0x6cf05620, 0x33881: 0x6cf05820, 0x33882: 0x6cf05a20, 0x33883: 0x6cf05c20,\n\t0x33884: 0x6d1fe420, 0x33885: 0x6d1fe620, 0x33886: 0x6d1fe820, 0x33887: 0x6d1fea20,\n\t0x33888: 0x6d1fec20, 0x33889: 0x6d1fee20, 0x3388a: 0x6d1ff020, 0x3388b: 0x6d1ff220,\n\t0x3388c: 0x6d1ff420, 0x3388d: 0x6d1ff620, 0x3388e: 0x6d1ff820, 0x3388f: 0x6d1ffa20,\n\t0x33890: 0x6d4d6a20, 0x33891: 0x6d4d6c20, 0x33892: 0x6d4d6e20, 0x33893: 0x6d4d7020,\n\t0x33894: 0x6d4d7220, 0x33895: 0x6d4d7420, 0x33896: 0x6d4d7620, 0x33897: 0x6d4d7820,\n\t0x33898: 0x6d4d7a20, 0x33899: 0x6d4d7c20, 0x3389a: 0x6d4d7e20, 0x3389b: 0x6d4d8020,\n\t0x3389c: 0x6d4d8220, 0x3389d: 0x6d4d8420, 0x3389e: 0x6d4d8620, 0x3389f: 0x6d7a4c20,\n\t0x338a0: 0x6d7a4e20, 0x338a1: 0x6d7a5020, 0x338a2: 0x6d7a5220, 0x338a3: 0x6d7a5420,\n\t0x338a4: 0x6d7a5620, 0x338a5: 0x6d7a5820, 0x338a6: 0x6d7a5a20, 0x338a7: 0x6d7a5c20,\n\t0x338a8: 0x6da2dc20, 0x338a9: 0x6da2de20, 0x338aa: 0x6dc4ca20, 0x338ab: 0x6dc4cc20,\n\t0x338ac: 0x6de1c220, 0x338ad: 0x6de1c420, 0x338ae: 0x6de1c620, 0x338af: 0x6de1c820,\n\t0x338b0: 0x6de1ca20, 0x338b1: 0x6df9a820, 0x338b2: 0x6df9aa20, 0x338b3: 0x6df9ac20,\n\t0x338b4: 0x6df9ae20, 0x338b5: 0x6e0d6620, 0x338b6: 0x6e0d6820, 0x338b7: 0x6e0d6a20,\n\t0x338b8: 0x6e1ccc20, 0x338b9: 0x6e1cce20, 0x338ba: 0x6e1cd020, 0x338bb: 0x6e31f220,\n\t0x338bc: 0x6e387620, 0x338bd: 0x6e387820, 0x338be: 0x6c01b820, 0x338bf: 0x6c086220,\n\t// Block 0xce3, offset 0x338c0\n\t0x338c0: 0x6c102a20, 0x338c1: 0x6c102c20, 0x338c2: 0x6c102e20, 0x338c3: 0x6c103020,\n\t0x338c4: 0x6c103220, 0x338c5: 0x6c103420, 0x338c6: 0x6c1d2220, 0x338c7: 0x6c1d2420,\n\t0x338c8: 0x6c1d2620, 0x338c9: 0x6c1d2820, 0x338ca: 0x6c1d2a20, 0x338cb: 0x6c30b220,\n\t0x338cc: 0x6c30b420, 0x338cd: 0x6c30b620, 0x338ce: 0x6c4b1220, 0x338cf: 0x6c4b1420,\n\t0x338d0: 0x6c4b1620, 0x338d1: 0x6c4b1820, 0x338d2: 0x6c4b1a20, 0x338d3: 0x6c4b1c20,\n\t0x338d4: 0x6c4b1e20, 0x338d5: 0x6c6cf420, 0x338d6: 0x6c6cf620, 0x338d7: 0x6c6cf820,\n\t0x338d8: 0x6c6cfa20, 0x338d9: 0x6c6cfc20, 0x338da: 0x6c6cfe20, 0x338db: 0x6c941220,\n\t0x338dc: 0x6c941420, 0x338dd: 0x6cc06220, 0x338de: 0x6cc06420, 0x338df: 0x6cc06620,\n\t0x338e0: 0x6cc06820, 0x338e1: 0x6cc06a20, 0x338e2: 0x6cc06c20, 0x338e3: 0x6cc06e20,\n\t0x338e4: 0x6cf06420, 0x338e5: 0x6cf06620, 0x338e6: 0x6d4d8c20, 0x338e7: 0x6d4d8e20,\n\t0x338e8: 0x6d4d9020, 0x338e9: 0x6d4d9220, 0x338ea: 0x6dc4ce20, 0x338eb: 0x6e0d6c20,\n\t0x338ec: 0x6e1cd420, 0x338ed: 0x6c041420, 0x338ee: 0x6c041620, 0x338ef: 0x6c041820,\n\t0x338f0: 0x6c087620, 0x338f1: 0x6c087820, 0x338f2: 0x6c087a20, 0x338f3: 0x6c087c20,\n\t0x338f4: 0x6c087e20, 0x338f5: 0x6c088020, 0x338f6: 0x6c088220, 0x338f7: 0x6c088420,\n\t0x338f8: 0x6c088620, 0x338f9: 0x6c088820, 0x338fa: 0x6c088a20, 0x338fb: 0x6c088c20,\n\t0x338fc: 0x6c088e20, 0x338fd: 0x6c089020, 0x338fe: 0x6c105e20, 0x338ff: 0x6c106020,\n\t// Block 0xce4, offset 0x33900\n\t0x33900: 0x6c106220, 0x33901: 0x6c106420, 0x33902: 0x6c106620, 0x33903: 0x6c106820,\n\t0x33904: 0x6c106a20, 0x33905: 0x6c106c20, 0x33906: 0x6c106e20, 0x33907: 0x6c107020,\n\t0x33908: 0x6c107220, 0x33909: 0x6c107420, 0x3390a: 0x6c107620, 0x3390b: 0x6c107820,\n\t0x3390c: 0x6c107a20, 0x3390d: 0x6c107c20, 0x3390e: 0x6c107e20, 0x3390f: 0x6c108020,\n\t0x33910: 0x6c108220, 0x33911: 0x6c108420, 0x33912: 0x6c108620, 0x33913: 0x6c1d6c20,\n\t0x33914: 0x6c1d6e20, 0x33915: 0x6c1d7020, 0x33916: 0x6c1d7220, 0x33917: 0x6c1d7420,\n\t0x33918: 0x6c1d7620, 0x33919: 0x6c1d7820, 0x3391a: 0x6c1d7a20, 0x3391b: 0x6c1d7c20,\n\t0x3391c: 0x6c1d7e20, 0x3391d: 0x6c1d8020, 0x3391e: 0x6c1d8220, 0x3391f: 0x6c1d8420,\n\t0x33920: 0x6c1d8620, 0x33921: 0x6c1d8820, 0x33922: 0x6c1d8a20, 0x33923: 0x6c1d8c20,\n\t0x33924: 0x6c1d8e20, 0x33925: 0x6c1d9020, 0x33926: 0x6c1d9220, 0x33927: 0x6c1d9420,\n\t0x33928: 0x6c1d9620, 0x33929: 0x6c1d9820, 0x3392a: 0x6c1d9a20, 0x3392b: 0x6c1d9c20,\n\t0x3392c: 0x6c1d9e20, 0x3392d: 0x6c1da020, 0x3392e: 0x6c1da220, 0x3392f: 0x6c1da420,\n\t0x33930: 0x6c1da620, 0x33931: 0x6c1da820, 0x33932: 0x6c1daa20, 0x33933: 0x6c1dac20,\n\t0x33934: 0x6c1dae20, 0x33935: 0x6c1db020, 0x33936: 0x6c1db220, 0x33937: 0x6c1db420,\n\t0x33938: 0x6c1db620, 0x33939: 0x6c1db820, 0x3393a: 0x6c1dba20, 0x3393b: 0x6c1dbc20,\n\t0x3393c: 0x6c1dbe20, 0x3393d: 0x6c1dc020, 0x3393e: 0x6c1dc220, 0x3393f: 0x6c1dc420,\n\t// Block 0xce5, offset 0x33940\n\t0x33940: 0x6c1dc620, 0x33941: 0x6c1dc820, 0x33942: 0x6c1dca20, 0x33943: 0x6c312020,\n\t0x33944: 0x6c312220, 0x33945: 0x6c312420, 0x33946: 0x6c312620, 0x33947: 0x6c312820,\n\t0x33948: 0x6c312a20, 0x33949: 0x6c312c20, 0x3394a: 0x6c312e20, 0x3394b: 0x6c313020,\n\t0x3394c: 0x6c313220, 0x3394d: 0x6c313420, 0x3394e: 0x6c313620, 0x3394f: 0x6c313820,\n\t0x33950: 0x6c313a20, 0x33951: 0x6c313c20, 0x33952: 0x6c313e20, 0x33953: 0x6c314020,\n\t0x33954: 0x6c314220, 0x33955: 0x6c314420, 0x33956: 0x6c314620, 0x33957: 0x6c314820,\n\t0x33958: 0x6c314a20, 0x33959: 0x6c314c20, 0x3395a: 0x6c314e20, 0x3395b: 0x6c315020,\n\t0x3395c: 0x6c315220, 0x3395d: 0x6c315420, 0x3395e: 0x6c315620, 0x3395f: 0x6c315820,\n\t0x33960: 0x6c315a20, 0x33961: 0x6c315c20, 0x33962: 0x6c315e20, 0x33963: 0x6c316020,\n\t0x33964: 0x6c3bdc20, 0x33965: 0x6c316220, 0x33966: 0x6c316420, 0x33967: 0x6c316620,\n\t0x33968: 0x6c316820, 0x33969: 0x6c316a20, 0x3396a: 0x6c316c20, 0x3396b: 0x6c4b6a20,\n\t0x3396c: 0x6c4b6c20, 0x3396d: 0x6c4b6e20, 0x3396e: 0x6c4b7020, 0x3396f: 0x6c4b7220,\n\t0x33970: 0x6c4b7420, 0x33971: 0x6c4b7620, 0x33972: 0x6c4b7820, 0x33973: 0x6c4b7a20,\n\t0x33974: 0x6c4b7c20, 0x33975: 0x6c4b7e20, 0x33976: 0x6c4b8020, 0x33977: 0x6c4b8220,\n\t0x33978: 0x6c4b8420, 0x33979: 0x6c4b8620, 0x3397a: 0x6c4b8820, 0x3397b: 0x6c4b8a20,\n\t0x3397c: 0x6c4b8c20, 0x3397d: 0x6c4b8e20, 0x3397e: 0x6c4b9020, 0x3397f: 0x6c4b9220,\n\t// Block 0xce6, offset 0x33980\n\t0x33980: 0x6c4b9420, 0x33981: 0x6c4b9620, 0x33982: 0x6c4b9820, 0x33983: 0x6c4b9a20,\n\t0x33984: 0x6c4b9c20, 0x33985: 0x6c4b9e20, 0x33986: 0x6c4ba020, 0x33987: 0x6c4ba220,\n\t0x33988: 0x6c4ba420, 0x33989: 0x6c4ba620, 0x3398a: 0x6c4ba820, 0x3398b: 0x6c4baa20,\n\t0x3398c: 0x6c4bac20, 0x3398d: 0x6c4bae20, 0x3398e: 0x6c4bb020, 0x3398f: 0x6c4bb220,\n\t0x33990: 0x6c4bb420, 0x33991: 0x6c4bb620, 0x33992: 0x6c4bb820, 0x33993: 0x6c4bba20,\n\t0x33994: 0x6c4bbc20, 0x33995: 0x6c6d5a20, 0x33996: 0x6c6d5c20, 0x33997: 0x6c6d5e20,\n\t0x33998: 0x6c6d6020, 0x33999: 0x6c6d6220, 0x3399a: 0x6c6d6420, 0x3399b: 0x6c6d6620,\n\t0x3399c: 0x6c6d6820, 0x3399d: 0x6c6d6a20, 0x3399e: 0x6c6d6c20, 0x3399f: 0x6c6d6e20,\n\t0x339a0: 0x6c6d7020, 0x339a1: 0x6c6d7220, 0x339a2: 0x6c6d7420, 0x339a3: 0x6c6d7620,\n\t0x339a4: 0x6c6d7820, 0x339a5: 0x6c6d7a20, 0x339a6: 0x6c6d7c20, 0x339a7: 0x6c6d7e20,\n\t0x339a8: 0x6c6d8020, 0x339a9: 0x6c6d8220, 0x339aa: 0x6c6d8420, 0x339ab: 0x6c6d8620,\n\t0x339ac: 0x6c6d8820, 0x339ad: 0x6c6d8a20, 0x339ae: 0x6c6d8c20, 0x339af: 0x6c6d8e20,\n\t0x339b0: 0x6c6d9020, 0x339b1: 0x6c6d9220, 0x339b2: 0x6c6d9420, 0x339b3: 0x6c6d9620,\n\t0x339b4: 0x6c6d9820, 0x339b5: 0x6c6d9a20, 0x339b6: 0x6c6d9c20, 0x339b7: 0x6c6d9e20,\n\t0x339b8: 0x6c6da020, 0x339b9: 0x6c6da220, 0x339ba: 0x6c6da420, 0x339bb: 0x6c6da620,\n\t0x339bc: 0x6c6da820, 0x339bd: 0x6c6daa20, 0x339be: 0x6c6dac20, 0x339bf: 0x6c6dae20,\n\t// Block 0xce7, offset 0x339c0\n\t0x339c0: 0x6c6db020, 0x339c1: 0x6c6db220, 0x339c2: 0x6c6db420, 0x339c3: 0x6c6db620,\n\t0x339c4: 0x6c6db820, 0x339c5: 0x6c6dba20, 0x339c6: 0x6c6dbc20, 0x339c7: 0x6c6dbe20,\n\t0x339c8: 0x6c6dc020, 0x339c9: 0x6c6dc220, 0x339ca: 0x6c6dc420, 0x339cb: 0x6c6dc620,\n\t0x339cc: 0x6c6dc820, 0x339cd: 0x6c6dca20, 0x339ce: 0x6c6dcc20, 0x339cf: 0x6c6dce20,\n\t0x339d0: 0x6c6dd020, 0x339d1: 0x6c948a20, 0x339d2: 0x6c948c20, 0x339d3: 0x6c948e20,\n\t0x339d4: 0x6c949020, 0x339d5: 0x6c949220, 0x339d6: 0x6c949420, 0x339d7: 0x6c949620,\n\t0x339d8: 0x6c949820, 0x339d9: 0x6c949a20, 0x339da: 0x6c949c20, 0x339db: 0x6c949e20,\n\t0x339dc: 0x6c94a020, 0x339dd: 0x6c94a220, 0x339de: 0x6c94a420, 0x339df: 0x6c94a620,\n\t0x339e0: 0x6c94a820, 0x339e1: 0x6c94aa20, 0x339e2: 0x6c94ac20, 0x339e3: 0x6c94ae20,\n\t0x339e4: 0x6c94b020, 0x339e5: 0x6c94b220, 0x339e6: 0x6c94b420, 0x339e7: 0x6c94b620,\n\t0x339e8: 0x6c94b820, 0x339e9: 0x6c94ba20, 0x339ea: 0x6c94bc20, 0x339eb: 0x6c94be20,\n\t0x339ec: 0x6c94c020, 0x339ed: 0x6c94c220, 0x339ee: 0x6c94c420, 0x339ef: 0x6c94c620,\n\t0x339f0: 0x6c94c820, 0x339f1: 0x6c94ca20, 0x339f2: 0x6c94cc20, 0x339f3: 0x6c94ce20,\n\t0x339f4: 0x6c94d020, 0x339f5: 0x6c94d220, 0x339f6: 0x6c94d420, 0x339f7: 0x6c94d620,\n\t0x339f8: 0x6c94d820, 0x339f9: 0x6c94da20, 0x339fa: 0x6c94dc20, 0x339fb: 0x6c94de20,\n\t0x339fc: 0x6c94e020, 0x339fd: 0x6c94e220, 0x339fe: 0x6c94e420, 0x339ff: 0x6c94e620,\n\t// Block 0xce8, offset 0x33a00\n\t0x33a00: 0x6c94e820, 0x33a01: 0x6c94ea20, 0x33a02: 0x6c94ec20, 0x33a03: 0x6c94ee20,\n\t0x33a04: 0x6c94f020, 0x33a05: 0x6c94f220, 0x33a06: 0x6c94f420, 0x33a07: 0x6c94f620,\n\t0x33a08: 0x6c94f820, 0x33a09: 0x6c94fa20, 0x33a0a: 0x6c94fc20, 0x33a0b: 0x6c94fe20,\n\t0x33a0c: 0x6c950020, 0x33a0d: 0x6c950220, 0x33a0e: 0x6c950420, 0x33a0f: 0x6c950620,\n\t0x33a10: 0x6c950820, 0x33a11: 0x6c950a20, 0x33a12: 0x6c950c20, 0x33a13: 0x6c950e20,\n\t0x33a14: 0x6c951020, 0x33a15: 0x6c951220, 0x33a16: 0x6c951420, 0x33a17: 0x6c951620,\n\t0x33a18: 0x6c951820, 0x33a19: 0x6c951a20, 0x33a1a: 0x6c951c20, 0x33a1b: 0x6c951e20,\n\t0x33a1c: 0x6c952020, 0x33a1d: 0x6c952220, 0x33a1e: 0x6c952420, 0x33a1f: 0x6c952620,\n\t0x33a20: 0x6c952820, 0x33a21: 0x6c952a20, 0x33a22: 0x6c952c20, 0x33a23: 0x6c952e20,\n\t0x33a24: 0x6c953020, 0x33a25: 0x6c953220, 0x33a26: 0x6c953420, 0x33a27: 0x6c953620,\n\t0x33a28: 0x6c953820, 0x33a29: 0x6c953a20, 0x33a2a: 0x6cc0de20, 0x33a2b: 0x6cc0e020,\n\t0x33a2c: 0x6cc0e220, 0x33a2d: 0x6cc0e420, 0x33a2e: 0x6cc0e620, 0x33a2f: 0x6cc0e820,\n\t0x33a30: 0x6cc0ea20, 0x33a31: 0x6cc0ec20, 0x33a32: 0x6cc0ee20, 0x33a33: 0x6cc0f020,\n\t0x33a34: 0x6cc0f220, 0x33a35: 0x6cc0f420, 0x33a36: 0x6cc0f620, 0x33a37: 0x6cc0f820,\n\t0x33a38: 0x6cc0fa20, 0x33a39: 0x6cc0fc20, 0x33a3a: 0x6cc0fe20, 0x33a3b: 0x6cc10020,\n\t0x33a3c: 0x6cc10220, 0x33a3d: 0x6cc10420, 0x33a3e: 0x6cc10620, 0x33a3f: 0x6cc10820,\n\t// Block 0xce9, offset 0x33a40\n\t0x33a40: 0x6cc10a20, 0x33a41: 0x6cc10c20, 0x33a42: 0x6cc10e20, 0x33a43: 0x6cc11020,\n\t0x33a44: 0x6cc11220, 0x33a45: 0x6cc11420, 0x33a46: 0x6cc11620, 0x33a47: 0x6cc11820,\n\t0x33a48: 0x6cc11a20, 0x33a49: 0x6cc11c20, 0x33a4a: 0x6cc11e20, 0x33a4b: 0x6cc12020,\n\t0x33a4c: 0x6cc12220, 0x33a4d: 0x6cc12420, 0x33a4e: 0x6cc12620, 0x33a4f: 0x6cc12820,\n\t0x33a50: 0x6cc12a20, 0x33a51: 0x6cc12c20, 0x33a52: 0x6cc12e20, 0x33a53: 0x6cc13020,\n\t0x33a54: 0x6cc13220, 0x33a55: 0x6cc13420, 0x33a56: 0x6cc13620, 0x33a57: 0x6cc13820,\n\t0x33a58: 0x6cc13a20, 0x33a59: 0x6cc13c20, 0x33a5a: 0x6cc13e20, 0x33a5b: 0x6cc14020,\n\t0x33a5c: 0x6cc14220, 0x33a5d: 0x6cc14420, 0x33a5e: 0x6cc14620, 0x33a5f: 0x6cc14820,\n\t0x33a60: 0x6cc14a20, 0x33a61: 0x6cc14c20, 0x33a62: 0x6cc14e20, 0x33a63: 0x6cc15020,\n\t0x33a64: 0x6cc15220, 0x33a65: 0x6cc15420, 0x33a66: 0x6cc15620, 0x33a67: 0x6cc15820,\n\t0x33a68: 0x6cc15a20, 0x33a69: 0x6cc15c20, 0x33a6a: 0x6cf0ac20, 0x33a6b: 0x6cf0ae20,\n\t0x33a6c: 0x6cf0b020, 0x33a6d: 0x6cf0b220, 0x33a6e: 0x6cf0b420, 0x33a6f: 0x6cf0b620,\n\t0x33a70: 0x6cf0b820, 0x33a71: 0x6cf0ba20, 0x33a72: 0x6cf0bc20, 0x33a73: 0x6cf0be20,\n\t0x33a74: 0x6cf0c020, 0x33a75: 0x6cf0c220, 0x33a76: 0x6cf0c420, 0x33a77: 0x6cf0c620,\n\t0x33a78: 0x6cf0c820, 0x33a79: 0x6cf0ca20, 0x33a7a: 0x6cf0cc20, 0x33a7b: 0x6cf0ce20,\n\t0x33a7c: 0x6cf0d020, 0x33a7d: 0x6cf0d220, 0x33a7e: 0x6cf0d420, 0x33a7f: 0x6cf0d620,\n\t// Block 0xcea, offset 0x33a80\n\t0x33a80: 0x6cf0d820, 0x33a81: 0x6cf0da20, 0x33a82: 0x6cf0dc20, 0x33a83: 0x6cf0de20,\n\t0x33a84: 0x6cf0e020, 0x33a85: 0x6cf0e220, 0x33a86: 0x6cf0e420, 0x33a87: 0x6cf0e620,\n\t0x33a88: 0x6cf0e820, 0x33a89: 0x6cf0ea20, 0x33a8a: 0x6cf0ec20, 0x33a8b: 0x6cf0ee20,\n\t0x33a8c: 0x6cf0f020, 0x33a8d: 0x6cf0f220, 0x33a8e: 0x6cf0f420, 0x33a8f: 0x6cf0f620,\n\t0x33a90: 0x6cf0f820, 0x33a91: 0x6cf0fa20, 0x33a92: 0x6cf0fc20, 0x33a93: 0x6cf0fe20,\n\t0x33a94: 0x6cf10020, 0x33a95: 0x6cf10220, 0x33a96: 0x6cf10420, 0x33a97: 0x6cf10620,\n\t0x33a98: 0x6d204820, 0x33a99: 0x6d204a20, 0x33a9a: 0x6d204c20, 0x33a9b: 0x6d204e20,\n\t0x33a9c: 0x6d205020, 0x33a9d: 0x6d205220, 0x33a9e: 0x6d205420, 0x33a9f: 0x6d205620,\n\t0x33aa0: 0x6d205820, 0x33aa1: 0x6d205a20, 0x33aa2: 0x6d205c20, 0x33aa3: 0x6d205e20,\n\t0x33aa4: 0x6d206020, 0x33aa5: 0x6d206220, 0x33aa6: 0x6d206420, 0x33aa7: 0x6d206620,\n\t0x33aa8: 0x6d206820, 0x33aa9: 0x6d206a20, 0x33aaa: 0x6d206c20, 0x33aab: 0x6d206e20,\n\t0x33aac: 0x6d207020, 0x33aad: 0x6d207220, 0x33aae: 0x6d207420, 0x33aaf: 0x6d207620,\n\t0x33ab0: 0x6d207820, 0x33ab1: 0x6d207a20, 0x33ab2: 0x6d207c20, 0x33ab3: 0x6d207e20,\n\t0x33ab4: 0x6d208020, 0x33ab5: 0x6d208220, 0x33ab6: 0x6d208420, 0x33ab7: 0x6d208620,\n\t0x33ab8: 0x6d208820, 0x33ab9: 0x6d208a20, 0x33aba: 0x6d208c20, 0x33abb: 0x6d208e20,\n\t0x33abc: 0x6d209020, 0x33abd: 0x6d209220, 0x33abe: 0x6d209420, 0x33abf: 0x6d209620,\n\t// Block 0xceb, offset 0x33ac0\n\t0x33ac0: 0x6d209820, 0x33ac1: 0x6d209a20, 0x33ac2: 0x6d209c20, 0x33ac3: 0x6d209e20,\n\t0x33ac4: 0x6d20a020, 0x33ac5: 0x6d20a220, 0x33ac6: 0x6d20a420, 0x33ac7: 0x6d20a620,\n\t0x33ac8: 0x6d20a820, 0x33ac9: 0x6d20aa20, 0x33aca: 0x6d4dda20, 0x33acb: 0x6d4ddc20,\n\t0x33acc: 0x6d4dde20, 0x33acd: 0x6d4de020, 0x33ace: 0x6d4de220, 0x33acf: 0x6d4de420,\n\t0x33ad0: 0x6d4de620, 0x33ad1: 0x6d4de820, 0x33ad2: 0x6d4dea20, 0x33ad3: 0x6d4dec20,\n\t0x33ad4: 0x6d4dee20, 0x33ad5: 0x6d4df020, 0x33ad6: 0x6d4df220, 0x33ad7: 0x6d4df420,\n\t0x33ad8: 0x6d4df620, 0x33ad9: 0x6d4df820, 0x33ada: 0x6d4dfa20, 0x33adb: 0x6d4dfc20,\n\t0x33adc: 0x6d4dfe20, 0x33add: 0x6d4e0020, 0x33ade: 0x6d4e0220, 0x33adf: 0x6d4e0420,\n\t0x33ae0: 0x6d4e0620, 0x33ae1: 0x6d4e0820, 0x33ae2: 0x6d4e0a20, 0x33ae3: 0x6d4e0c20,\n\t0x33ae4: 0x6d4e0e20, 0x33ae5: 0x6d4e1020, 0x33ae6: 0x6d4e1220, 0x33ae7: 0x6d4e1420,\n\t0x33ae8: 0x6d4e1620, 0x33ae9: 0x6d4e1820, 0x33aea: 0x6d4e1a20, 0x33aeb: 0x6d4e1c20,\n\t0x33aec: 0x6d4e1e20, 0x33aed: 0x6d4e2020, 0x33aee: 0x6d4e2220, 0x33aef: 0x6d4e2420,\n\t0x33af0: 0x6d4e2620, 0x33af1: 0x6d4e2820, 0x33af2: 0x6d4e2a20, 0x33af3: 0x6d4e2c20,\n\t0x33af4: 0x6d4e2e20, 0x33af5: 0x6d4e3020, 0x33af6: 0x6d4e3220, 0x33af7: 0x6d4e3420,\n\t0x33af8: 0x6d4e3620, 0x33af9: 0x6d4e3820, 0x33afa: 0x6d4e3a20, 0x33afb: 0x6d4e3c20,\n\t0x33afc: 0x6d4e3e20, 0x33afd: 0x6d7a9020, 0x33afe: 0x6d7a9220, 0x33aff: 0x6d7a9420,\n\t// Block 0xcec, offset 0x33b00\n\t0x33b00: 0x6d7a9620, 0x33b01: 0x6d7a9820, 0x33b02: 0x6d7a9a20, 0x33b03: 0x6d7a9c20,\n\t0x33b04: 0x6d7a9e20, 0x33b05: 0x6d7aa020, 0x33b06: 0x6d7aa220, 0x33b07: 0x6d7aa420,\n\t0x33b08: 0x6d7aa620, 0x33b09: 0x6da2fc20, 0x33b0a: 0x6d7aa820, 0x33b0b: 0x6d7aaa20,\n\t0x33b0c: 0x6d7aac20, 0x33b0d: 0x6d7aae20, 0x33b0e: 0x6d7ab020, 0x33b0f: 0x6d7ab220,\n\t0x33b10: 0x6d7ab420, 0x33b11: 0x6d7ab620, 0x33b12: 0x6d7ab820, 0x33b13: 0x6d7aba20,\n\t0x33b14: 0x6d7abc20, 0x33b15: 0x6d7abe20, 0x33b16: 0x6d7ac020, 0x33b17: 0x6d7ac220,\n\t0x33b18: 0x6d7ac420, 0x33b19: 0x6d7ac620, 0x33b1a: 0x6d7ac820, 0x33b1b: 0x6d7aca20,\n\t0x33b1c: 0x6da2fe20, 0x33b1d: 0x6da30020, 0x33b1e: 0x6da30220, 0x33b1f: 0x6da30420,\n\t0x33b20: 0x6da30620, 0x33b21: 0x6da30820, 0x33b22: 0x6da30a20, 0x33b23: 0x6da30c20,\n\t0x33b24: 0x6da30e20, 0x33b25: 0x6da31020, 0x33b26: 0x6da31220, 0x33b27: 0x6da31420,\n\t0x33b28: 0x6da31620, 0x33b29: 0x6da31820, 0x33b2a: 0x6da31a20, 0x33b2b: 0x6da31c20,\n\t0x33b2c: 0x6da31e20, 0x33b2d: 0x6da32020, 0x33b2e: 0x6da32220, 0x33b2f: 0x6da32420,\n\t0x33b30: 0x6da32620, 0x33b31: 0x6da32820, 0x33b32: 0x6da32a20, 0x33b33: 0x6da32c20,\n\t0x33b34: 0x6da32e20, 0x33b35: 0x6da33020, 0x33b36: 0x6da33220, 0x33b37: 0x6da33420,\n\t0x33b38: 0x6da33620, 0x33b39: 0x6da33820, 0x33b3a: 0x6da33a20, 0x33b3b: 0x6da33c20,\n\t0x33b3c: 0x6da33e20, 0x33b3d: 0x6da34020, 0x33b3e: 0x6da34220, 0x33b3f: 0x6da34420,\n\t// Block 0xced, offset 0x33b40\n\t0x33b40: 0x6da34620, 0x33b41: 0x6da34820, 0x33b42: 0x6dc4dc20, 0x33b43: 0x6dc4de20,\n\t0x33b44: 0x6dc4e020, 0x33b45: 0x6dc4e220, 0x33b46: 0x6dc4e420, 0x33b47: 0x6dc4e620,\n\t0x33b48: 0x6dc4e820, 0x33b49: 0x6dc4ea20, 0x33b4a: 0x6dc4ec20, 0x33b4b: 0x6dc4ee20,\n\t0x33b4c: 0x6dc4f020, 0x33b4d: 0x6dc4f220, 0x33b4e: 0x6dc4f420, 0x33b4f: 0x6dc4f620,\n\t0x33b50: 0x6dc4f820, 0x33b51: 0x6dc4fa20, 0x33b52: 0x6dc4fc20, 0x33b53: 0x6dc4fe20,\n\t0x33b54: 0x6dc50020, 0x33b55: 0x6dc50220, 0x33b56: 0x6dc50420, 0x33b57: 0x6dc45020,\n\t0x33b58: 0x6de1de20, 0x33b59: 0x6de1e020, 0x33b5a: 0x6de1e220, 0x33b5b: 0x6de1e420,\n\t0x33b5c: 0x6de1e620, 0x33b5d: 0x6de1e820, 0x33b5e: 0x6de1ea20, 0x33b5f: 0x6de1ec20,\n\t0x33b60: 0x6dc50620, 0x33b61: 0x6de1ee20, 0x33b62: 0x6de1f020, 0x33b63: 0x6de1f220,\n\t0x33b64: 0x6de1f420, 0x33b65: 0x6de1f620, 0x33b66: 0x6de1f820, 0x33b67: 0x6de1fa20,\n\t0x33b68: 0x6de1fc20, 0x33b69: 0x6de1fe20, 0x33b6a: 0x6de20020, 0x33b6b: 0x6de20220,\n\t0x33b6c: 0x6de20420, 0x33b6d: 0x6de20620, 0x33b6e: 0x6df9be20, 0x33b6f: 0x6df9c020,\n\t0x33b70: 0x6df9c220, 0x33b71: 0x6df9c420, 0x33b72: 0x6df9c620, 0x33b73: 0x6df9c820,\n\t0x33b74: 0x6df9ca20, 0x33b75: 0x6df9cc20, 0x33b76: 0x6df9ce20, 0x33b77: 0x6df9d020,\n\t0x33b78: 0x6df9d220, 0x33b79: 0x6df9d420, 0x33b7a: 0x6df9d620, 0x33b7b: 0x6da34a20,\n\t0x33b7c: 0x6e0d7a20, 0x33b7d: 0x6e0d7c20, 0x33b7e: 0x6e0d7e20, 0x33b7f: 0x6e0d8020,\n\t// Block 0xcee, offset 0x33b80\n\t0x33b80: 0x6e0d8220, 0x33b81: 0x6e0d8420, 0x33b82: 0x6e0d8620, 0x33b83: 0x6e0d8820,\n\t0x33b84: 0x6e0d8a20, 0x33b85: 0x6e0d8c20, 0x33b86: 0x6e0d8e20, 0x33b87: 0x6e1ce620,\n\t0x33b88: 0x6e1ce820, 0x33b89: 0x6e1cea20, 0x33b8a: 0x6e1cec20, 0x33b8b: 0x6e1cee20,\n\t0x33b8c: 0x6e1cf020, 0x33b8d: 0x6e1cf220, 0x33b8e: 0x6e1cf420, 0x33b8f: 0x6e1cf620,\n\t0x33b90: 0x6e1cf820, 0x33b91: 0x6e1cfa20, 0x33b92: 0x6e28b820, 0x33b93: 0x6e28ba20,\n\t0x33b94: 0x6e31f620, 0x33b95: 0x6e31f820, 0x33b96: 0x6e31fa20, 0x33b97: 0x6e31fc20,\n\t0x33b98: 0x6e31fe20, 0x33b99: 0x6e320020, 0x33b9a: 0x6e320220, 0x33b9b: 0x6e320420,\n\t0x33b9c: 0x6e320620, 0x33b9d: 0x6e387a20, 0x33b9e: 0x6e387c20, 0x33b9f: 0x6e387e20,\n\t0x33ba0: 0x6e402420, 0x33ba1: 0x6e402620, 0x33ba2: 0x6e429220, 0x33ba3: 0x6e402820,\n\t0x33ba4: 0x6e402a20, 0x33ba5: 0x6e462620, 0x33ba6: 0x6c01c020, 0x33ba7: 0x6c041a20,\n\t0x33ba8: 0x6c01c220, 0x33ba9: 0x6c109820, 0x33baa: 0x6c109a20, 0x33bab: 0x6c109c20,\n\t0x33bac: 0x6c109e20, 0x33bad: 0x6c10a020, 0x33bae: 0x6c1dd620, 0x33baf: 0x6c1dd820,\n\t0x33bb0: 0x6c1dda20, 0x33bb1: 0x6c317a20, 0x33bb2: 0x6c317c20, 0x33bb3: 0x6c317e20,\n\t0x33bb4: 0x6c318020, 0x33bb5: 0x6c318220, 0x33bb6: 0x6c318420, 0x33bb7: 0x6c4bce20,\n\t0x33bb8: 0x6c4bd020, 0x33bb9: 0x6c4bd220, 0x33bba: 0x6c4bd420, 0x33bbb: 0x6c4bd620,\n\t0x33bbc: 0x6c6de420, 0x33bbd: 0x6c6de620, 0x33bbe: 0x6c954e20, 0x33bbf: 0x6c955020,\n\t// Block 0xcef, offset 0x33bc0\n\t0x33bc0: 0x6c955220, 0x33bc1: 0x6cc16c20, 0x33bc2: 0x6d20ba20, 0x33bc3: 0x6d4e4a20,\n\t0x33bc4: 0x6d7ad420, 0x33bc5: 0x6d7ad620, 0x33bc6: 0x6d7ad820, 0x33bc7: 0x6da35420,\n\t0x33bc8: 0x6dc50820, 0x33bc9: 0x6de20c20, 0x33bca: 0x6de20e20, 0x33bcb: 0x6df9d820,\n\t0x33bcc: 0x6e1cfe20, 0x33bcd: 0x6e1d0020, 0x33bce: 0x6e320820, 0x33bcf: 0x6e402c20,\n\t0x33bd0: 0x6e442a20, 0x33bd1: 0x6c041e20, 0x33bd2: 0x6c042020, 0x33bd3: 0x6c042220,\n\t0x33bd4: 0x6c042420, 0x33bd5: 0x6c042620, 0x33bd6: 0x6c089820, 0x33bd7: 0x6c089a20,\n\t0x33bd8: 0x6c089c20, 0x33bd9: 0x6c089e20, 0x33bda: 0x6c10a620, 0x33bdb: 0x6c10a820,\n\t0x33bdc: 0x6c1de020, 0x33bdd: 0x6c1de220, 0x33bde: 0x6c1de420, 0x33bdf: 0x6c318620,\n\t0x33be0: 0x6c4bde20, 0x33be1: 0x6c6dee20, 0x33be2: 0x6c6df020, 0x33be3: 0x6c955420,\n\t0x33be4: 0x6cc17220, 0x33be5: 0x6cc17420, 0x33be6: 0x6cf11220, 0x33be7: 0x6cf11420,\n\t0x33be8: 0x6d4e4e20, 0x33be9: 0x6d4e5020, 0x33bea: 0x6d4e5220, 0x33beb: 0x6d4e5420,\n\t0x33bec: 0x6d7ada20, 0x33bed: 0x6da35620, 0x33bee: 0x6dc50a20, 0x33bef: 0x6de21020,\n\t0x33bf0: 0x6e0d9220, 0x33bf1: 0x6e0d9420, 0x33bf2: 0x6e0d9620, 0x33bf3: 0x6c042a20,\n\t0x33bf4: 0x6c08a220, 0x33bf5: 0x6c08a420, 0x33bf6: 0x6c10ac20, 0x33bf7: 0x6c318c20,\n\t0x33bf8: 0x6c318e20, 0x33bf9: 0x6c4bea20, 0x33bfa: 0x6c4bec20, 0x33bfb: 0x6c4bee20,\n\t0x33bfc: 0x6c6df420, 0x33bfd: 0x6c6df620, 0x33bfe: 0x6c6df820, 0x33bff: 0x6c6dfa20,\n\t// Block 0xcf0, offset 0x33c00\n\t0x33c00: 0x6c955a20, 0x33c01: 0x6c955c20, 0x33c02: 0x6c955e20, 0x33c03: 0x6c956020,\n\t0x33c04: 0x6c956220, 0x33c05: 0x6cc17a20, 0x33c06: 0x6cc17c20, 0x33c07: 0x6cc17e20,\n\t0x33c08: 0x6cc18020, 0x33c09: 0x6cc18220, 0x33c0a: 0x6cf11820, 0x33c0b: 0x6d4e5620,\n\t0x33c0c: 0x6d4e5820, 0x33c0d: 0x6d7ae020, 0x33c0e: 0x6da35a20, 0x33c0f: 0x6d7ae220,\n\t0x33c10: 0x6dc50e20, 0x33c11: 0x6df9da20, 0x33c12: 0x6c08b220, 0x33c13: 0x6c08b420,\n\t0x33c14: 0x6c08b620, 0x33c15: 0x6c10ba20, 0x33c16: 0x6c10bc20, 0x33c17: 0x6c10be20,\n\t0x33c18: 0x6c10c020, 0x33c19: 0x6c10c220, 0x33c1a: 0x6c10c420, 0x33c1b: 0x6c10c620,\n\t0x33c1c: 0x6c10c820, 0x33c1d: 0x6c10ca20, 0x33c1e: 0x6c10cc20, 0x33c1f: 0x6c10ce20,\n\t0x33c20: 0x6c10d020, 0x33c21: 0x6c10d220, 0x33c22: 0x6c10d420, 0x33c23: 0x6c10d620,\n\t0x33c24: 0x6c10d820, 0x33c25: 0x6c1e0620, 0x33c26: 0x6c1e0820, 0x33c27: 0x6c1e0a20,\n\t0x33c28: 0x6c1e0c20, 0x33c29: 0x6c1e0e20, 0x33c2a: 0x6c1e1020, 0x33c2b: 0x6c1e1220,\n\t0x33c2c: 0x6c1e1420, 0x33c2d: 0x6c1e1620, 0x33c2e: 0x6c1e1820, 0x33c2f: 0x6c1e1a20,\n\t0x33c30: 0x6c1e1c20, 0x33c31: 0x6c1e1e20, 0x33c32: 0x6c1e2020, 0x33c33: 0x6c1e2220,\n\t0x33c34: 0x6c1e2420, 0x33c35: 0x6c1e2620, 0x33c36: 0x6c1e2820, 0x33c37: 0x6c1e2a20,\n\t0x33c38: 0x6c1e2c20, 0x33c39: 0x6c1e2e20, 0x33c3a: 0x6c1e3020, 0x33c3b: 0x6c31b220,\n\t0x33c3c: 0x6c31b420, 0x33c3d: 0x6c31b620, 0x33c3e: 0x6c31b820, 0x33c3f: 0x6c31ba20,\n\t// Block 0xcf1, offset 0x33c40\n\t0x33c40: 0x6c31bc20, 0x33c41: 0x6c31be20, 0x33c42: 0x6c31c020, 0x33c43: 0x6c31c220,\n\t0x33c44: 0x6c31c420, 0x33c45: 0x6c31c620, 0x33c46: 0x6c31c820, 0x33c47: 0x6c31ca20,\n\t0x33c48: 0x6c31cc20, 0x33c49: 0x6c31ce20, 0x33c4a: 0x6c31d020, 0x33c4b: 0x6c31d220,\n\t0x33c4c: 0x6c31d420, 0x33c4d: 0x6c31d620, 0x33c4e: 0x6c31d820, 0x33c4f: 0x6c31da20,\n\t0x33c50: 0x6c4c1220, 0x33c51: 0x6c4c1420, 0x33c52: 0x6c4c1620, 0x33c53: 0x6c4c1820,\n\t0x33c54: 0x6c4c1a20, 0x33c55: 0x6c4c1c20, 0x33c56: 0x6c4c1e20, 0x33c57: 0x6c4c2020,\n\t0x33c58: 0x6c4c2220, 0x33c59: 0x6c4c2420, 0x33c5a: 0x6c4c2620, 0x33c5b: 0x6c4c2820,\n\t0x33c5c: 0x6c4c2a20, 0x33c5d: 0x6c4c2c20, 0x33c5e: 0x6c4c2e20, 0x33c5f: 0x6c4c3020,\n\t0x33c60: 0x6c4c3220, 0x33c61: 0x6c4c3420, 0x33c62: 0x6c4c3620, 0x33c63: 0x6c4c3820,\n\t0x33c64: 0x6c4c3a20, 0x33c65: 0x6c4c3c20, 0x33c66: 0x6c4c3e20, 0x33c67: 0x6c4c4020,\n\t0x33c68: 0x6c4c4220, 0x33c69: 0x6c4c4420, 0x33c6a: 0x6c4c4620, 0x33c6b: 0x6c4c4820,\n\t0x33c6c: 0x6c4c4a20, 0x33c6d: 0x6c4c4c20, 0x33c6e: 0x6c4c4e20, 0x33c6f: 0x6c4c5020,\n\t0x33c70: 0x6c4c5220, 0x33c71: 0x6c6e1420, 0x33c72: 0x6c6e1620, 0x33c73: 0x6c6e1820,\n\t0x33c74: 0x6c6e1a20, 0x33c75: 0x6c6e1c20, 0x33c76: 0x6c6e1e20, 0x33c77: 0x6c6e2020,\n\t0x33c78: 0x6c6e2220, 0x33c79: 0x6c6e2420, 0x33c7a: 0x6c6e2620, 0x33c7b: 0x6c6e2820,\n\t0x33c7c: 0x6c6e2a20, 0x33c7d: 0x6c6e2c20, 0x33c7e: 0x6c6e2e20, 0x33c7f: 0x6c6e3020,\n\t// Block 0xcf2, offset 0x33c80\n\t0x33c80: 0x6c6e3220, 0x33c81: 0x6c6e3420, 0x33c82: 0x6c6e3620, 0x33c83: 0x6c6e3820,\n\t0x33c84: 0x6c6e3a20, 0x33c85: 0x6c6e3c20, 0x33c86: 0x6c6e3e20, 0x33c87: 0x6c6e4020,\n\t0x33c88: 0x6c6e4220, 0x33c89: 0x6c6e4420, 0x33c8a: 0x6c6e4620, 0x33c8b: 0x6c6e4820,\n\t0x33c8c: 0x6c6e4a20, 0x33c8d: 0x6c958620, 0x33c8e: 0x6c958820, 0x33c8f: 0x6c958a20,\n\t0x33c90: 0x6c958c20, 0x33c91: 0x6c958e20, 0x33c92: 0x6c959020, 0x33c93: 0x6c959220,\n\t0x33c94: 0x6c959420, 0x33c95: 0x6c959620, 0x33c96: 0x6c959820, 0x33c97: 0x6c959a20,\n\t0x33c98: 0x6c959c20, 0x33c99: 0x6c959e20, 0x33c9a: 0x6c95a020, 0x33c9b: 0x6c95a220,\n\t0x33c9c: 0x6c95a420, 0x33c9d: 0x6c95a620, 0x33c9e: 0x6c95a820, 0x33c9f: 0x6c95aa20,\n\t0x33ca0: 0x6c95ac20, 0x33ca1: 0x6c95ae20, 0x33ca2: 0x6c95b020, 0x33ca3: 0x6c95b220,\n\t0x33ca4: 0x6c95b420, 0x33ca5: 0x6c95b620, 0x33ca6: 0x6c95b820, 0x33ca7: 0x6c95ba20,\n\t0x33ca8: 0x6c95bc20, 0x33ca9: 0x6c95be20, 0x33caa: 0x6c95c020, 0x33cab: 0x6cc1ae20,\n\t0x33cac: 0x6cc1b020, 0x33cad: 0x6cc1b220, 0x33cae: 0x6cc1b420, 0x33caf: 0x6cc1b620,\n\t0x33cb0: 0x6cc1b820, 0x33cb1: 0x6cc1ba20, 0x33cb2: 0x6cc1bc20, 0x33cb3: 0x6cc1be20,\n\t0x33cb4: 0x6cc1c020, 0x33cb5: 0x6cc1c220, 0x33cb6: 0x6cc1c420, 0x33cb7: 0x6cc1c620,\n\t0x33cb8: 0x6cc1c820, 0x33cb9: 0x6cc1ca20, 0x33cba: 0x6cc1cc20, 0x33cbb: 0x6cc1ce20,\n\t0x33cbc: 0x6cc1d020, 0x33cbd: 0x6cc1d220, 0x33cbe: 0x6cc1d420, 0x33cbf: 0x6cc1d620,\n\t// Block 0xcf3, offset 0x33cc0\n\t0x33cc0: 0x6cc1d820, 0x33cc1: 0x6cc1da20, 0x33cc2: 0x6cc1dc20, 0x33cc3: 0x6cc1de20,\n\t0x33cc4: 0x6cc1e020, 0x33cc5: 0x6cc1e220, 0x33cc6: 0x6cc1e420, 0x33cc7: 0x6cc1e620,\n\t0x33cc8: 0x6cc1e820, 0x33cc9: 0x6cc1ea20, 0x33cca: 0x6cf13020, 0x33ccb: 0x6cf13220,\n\t0x33ccc: 0x6cf13420, 0x33ccd: 0x6cf13620, 0x33cce: 0x6cf13820, 0x33ccf: 0x6cf13a20,\n\t0x33cd0: 0x6cf13c20, 0x33cd1: 0x6cf13e20, 0x33cd2: 0x6cf14020, 0x33cd3: 0x6cf14220,\n\t0x33cd4: 0x6cf14420, 0x33cd5: 0x6cf14620, 0x33cd6: 0x6cf14820, 0x33cd7: 0x6cf14a20,\n\t0x33cd8: 0x6cf14c20, 0x33cd9: 0x6cf14e20, 0x33cda: 0x6cf15020, 0x33cdb: 0x6cf15220,\n\t0x33cdc: 0x6cf15420, 0x33cdd: 0x6cf15620, 0x33cde: 0x6cf15820, 0x33cdf: 0x6d20dc20,\n\t0x33ce0: 0x6d20de20, 0x33ce1: 0x6d20e020, 0x33ce2: 0x6d20e220, 0x33ce3: 0x6d20e420,\n\t0x33ce4: 0x6d20e620, 0x33ce5: 0x6d20e820, 0x33ce6: 0x6d20ea20, 0x33ce7: 0x6d20ec20,\n\t0x33ce8: 0x6d20ee20, 0x33ce9: 0x6d20f020, 0x33cea: 0x6d20f220, 0x33ceb: 0x6d20f420,\n\t0x33cec: 0x6d20f620, 0x33ced: 0x6d20f820, 0x33cee: 0x6d20fa20, 0x33cef: 0x6d20fc20,\n\t0x33cf0: 0x6d20fe20, 0x33cf1: 0x6d210020, 0x33cf2: 0x6d210220, 0x33cf3: 0x6d4e7220,\n\t0x33cf4: 0x6d4e7420, 0x33cf5: 0x6d4e7620, 0x33cf6: 0x6d4e7820, 0x33cf7: 0x6d4e7a20,\n\t0x33cf8: 0x6d4e7c20, 0x33cf9: 0x6d4e7e20, 0x33cfa: 0x6d4e8020, 0x33cfb: 0x6d4e8220,\n\t0x33cfc: 0x6d4e8420, 0x33cfd: 0x6d4e8620, 0x33cfe: 0x6d4e8820, 0x33cff: 0x6d4e8a20,\n\t// Block 0xcf4, offset 0x33d00\n\t0x33d00: 0x6d4e8c20, 0x33d01: 0x6d4e8e20, 0x33d02: 0x6d4e9020, 0x33d03: 0x6d4e9220,\n\t0x33d04: 0x6d4e9420, 0x33d05: 0x6d4e9620, 0x33d06: 0x6d4e9820, 0x33d07: 0x6d4e9a20,\n\t0x33d08: 0x6d4e9c20, 0x33d09: 0x6d4e9e20, 0x33d0a: 0x6d4ea020, 0x33d0b: 0x6d4ea220,\n\t0x33d0c: 0x6d4ea420, 0x33d0d: 0x6d7af420, 0x33d0e: 0x6d7af620, 0x33d0f: 0x6d7af820,\n\t0x33d10: 0x6d7afa20, 0x33d11: 0x6d7afc20, 0x33d12: 0x6d7afe20, 0x33d13: 0x6d7b0020,\n\t0x33d14: 0x6d7b0220, 0x33d15: 0x6d7b0420, 0x33d16: 0x6d7b0620, 0x33d17: 0x6d7b0820,\n\t0x33d18: 0x6d7b0a20, 0x33d19: 0x6d7b0c20, 0x33d1a: 0x6d7b0e20, 0x33d1b: 0x6d7b1020,\n\t0x33d1c: 0x6d7b1220, 0x33d1d: 0x6d7b1420, 0x33d1e: 0x6d7b1620, 0x33d1f: 0x6da36620,\n\t0x33d20: 0x6da36820, 0x33d21: 0x6da36a20, 0x33d22: 0x6da36c20, 0x33d23: 0x6da36e20,\n\t0x33d24: 0x6da37020, 0x33d25: 0x6da37220, 0x33d26: 0x6da37420, 0x33d27: 0x6da37620,\n\t0x33d28: 0x6da37820, 0x33d29: 0x6dc51420, 0x33d2a: 0x6dc51620, 0x33d2b: 0x6dc51820,\n\t0x33d2c: 0x6dc51a20, 0x33d2d: 0x6de21420, 0x33d2e: 0x6de21620, 0x33d2f: 0x6de21820,\n\t0x33d30: 0x6de21a20, 0x33d31: 0x6de21c20, 0x33d32: 0x6de21e20, 0x33d33: 0x6de22020,\n\t0x33d34: 0x6de22220, 0x33d35: 0x6de22420, 0x33d36: 0x6de22620, 0x33d37: 0x6de22820,\n\t0x33d38: 0x6df9e220, 0x33d39: 0x6df9e420, 0x33d3a: 0x6df9e620, 0x33d3b: 0x6e0d9820,\n\t0x33d3c: 0x6e0d9a20, 0x33d3d: 0x6e0d9c20, 0x33d3e: 0x6e1d0820, 0x33d3f: 0x6e1d0a20,\n\t// Block 0xcf5, offset 0x33d40\n\t0x33d40: 0x6e1d0c20, 0x33d41: 0x6e1d0e20, 0x33d42: 0x6e28bc20, 0x33d43: 0x6e320a20,\n\t0x33d44: 0x6e320c20, 0x33d45: 0x6e320e20, 0x33d46: 0x6e321020, 0x33d47: 0x6e402e20,\n\t0x33d48: 0x6e403020, 0x33d49: 0x6c08bc20, 0x33d4a: 0x6c1e3220, 0x33d4b: 0x6c1e3420,\n\t0x33d4c: 0x6c1e3620, 0x33d4d: 0x6c31e020, 0x33d4e: 0x6c31e220, 0x33d4f: 0x6c31e420,\n\t0x33d50: 0x6c31e620, 0x33d51: 0x6c4c5420, 0x33d52: 0x6c4c5620, 0x33d53: 0x6c4c5820,\n\t0x33d54: 0x6c4c5a20, 0x33d55: 0x6c4c5c20, 0x33d56: 0x6c6e4e20, 0x33d57: 0x6c6e5020,\n\t0x33d58: 0x6c6e5220, 0x33d59: 0x6c6e5420, 0x33d5a: 0x6c95cc20, 0x33d5b: 0x6cc1f420,\n\t0x33d5c: 0x6cc1f620, 0x33d5d: 0x6cc1f820, 0x33d5e: 0x6cf15c20, 0x33d5f: 0x6cf15e20,\n\t0x33d60: 0x6cf16020, 0x33d61: 0x6d18a420, 0x33d62: 0x6d210820, 0x33d63: 0x6d1e2a20,\n\t0x33d64: 0x6d210a20, 0x33d65: 0x6d4eaa20, 0x33d66: 0x6d7b1c20, 0x33d67: 0x6d7b1e20,\n\t0x33d68: 0x6d7b2020, 0x33d69: 0x6d7b2220, 0x33d6a: 0x6dc51c20, 0x33d6b: 0x6de22c20,\n\t0x33d6c: 0x6df9ea20, 0x33d6d: 0x6e0d9e20, 0x33d6e: 0x6e28be20, 0x33d6f: 0x6c043420,\n\t0x33d70: 0x6c043620, 0x33d71: 0x6c043820, 0x33d72: 0x6c08c020, 0x33d73: 0x6c08c220,\n\t0x33d74: 0x6c08c420, 0x33d75: 0x6c08c620, 0x33d76: 0x6c10e020, 0x33d77: 0x6c1e3a20,\n\t0x33d78: 0x6c1e3c20, 0x33d79: 0x6c1e3e20, 0x33d7a: 0x6c1e4020, 0x33d7b: 0x6c31e820,\n\t0x33d7c: 0x6c31ea20, 0x33d7d: 0x6c31ec20, 0x33d7e: 0x6c31ee20, 0x33d7f: 0x6c4c6020,\n\t// Block 0xcf6, offset 0x33d80\n\t0x33d80: 0x6c4b0c20, 0x33d81: 0x6c6e5620, 0x33d82: 0x6c4c6220, 0x33d83: 0x6c6e5820,\n\t0x33d84: 0x6c6e5a20, 0x33d85: 0x6c6e5c20, 0x33d86: 0x6c6e5e20, 0x33d87: 0x6c95d220,\n\t0x33d88: 0x6c95d420, 0x33d89: 0x6c95d620, 0x33d8a: 0x6cc20220, 0x33d8b: 0x6cf16820,\n\t0x33d8c: 0x6d210e20, 0x33d8d: 0x6d211020, 0x33d8e: 0x6d211220, 0x33d8f: 0x6d211420,\n\t0x33d90: 0x6d4eae20, 0x33d91: 0x6d4eb020, 0x33d92: 0x6d4eb220, 0x33d93: 0x6d4eb420,\n\t0x33d94: 0x6da2ce20, 0x33d95: 0x6dc2b220, 0x33d96: 0x6e1d1020, 0x33d97: 0x6c10f020,\n\t0x33d98: 0x6c10f220, 0x33d99: 0x6c10f420, 0x33d9a: 0x6c10f620, 0x33d9b: 0x6c10f820,\n\t0x33d9c: 0x6c10fa20, 0x33d9d: 0x6c10fc20, 0x33d9e: 0x6c10fe20, 0x33d9f: 0x6c110020,\n\t0x33da0: 0x6c110220, 0x33da1: 0x6c110420, 0x33da2: 0x6c110620, 0x33da3: 0x6c1e6220,\n\t0x33da4: 0x6c1e6420, 0x33da5: 0x6c1e6620, 0x33da6: 0x6c1e6820, 0x33da7: 0x6c1e6a20,\n\t0x33da8: 0x6c1e6c20, 0x33da9: 0x6c1e6e20, 0x33daa: 0x6c1e7020, 0x33dab: 0x6c1e7220,\n\t0x33dac: 0x6c1e7420, 0x33dad: 0x6c1e7620, 0x33dae: 0x6c1e7820, 0x33daf: 0x6c1e7a20,\n\t0x33db0: 0x6c1e7c20, 0x33db1: 0x6c1e7e20, 0x33db2: 0x6c321420, 0x33db3: 0x6c321620,\n\t0x33db4: 0x6c321820, 0x33db5: 0x6c321a20, 0x33db6: 0x6c321c20, 0x33db7: 0x6c321e20,\n\t0x33db8: 0x6c322020, 0x33db9: 0x6c322220, 0x33dba: 0x6c322420, 0x33dbb: 0x6c322620,\n\t0x33dbc: 0x6c322820, 0x33dbd: 0x6c322a20, 0x33dbe: 0x6c322c20, 0x33dbf: 0x6c322e20,\n\t// Block 0xcf7, offset 0x33dc0\n\t0x33dc0: 0x6c323020, 0x33dc1: 0x6c323220, 0x33dc2: 0x6c323420, 0x33dc3: 0x6c323620,\n\t0x33dc4: 0x6c323820, 0x33dc5: 0x6c323a20, 0x33dc6: 0x6c323c20, 0x33dc7: 0x6c4c8420,\n\t0x33dc8: 0x6c4c8620, 0x33dc9: 0x6c4c8820, 0x33dca: 0x6c4c8a20, 0x33dcb: 0x6c4c8c20,\n\t0x33dcc: 0x6c4c8e20, 0x33dcd: 0x6c4c9020, 0x33dce: 0x6c4c9220, 0x33dcf: 0x6c4c9420,\n\t0x33dd0: 0x6c4c9620, 0x33dd1: 0x6c4c9820, 0x33dd2: 0x6c4c9a20, 0x33dd3: 0x6c4c9c20,\n\t0x33dd4: 0x6c4c9e20, 0x33dd5: 0x6c4ca020, 0x33dd6: 0x6c4ca220, 0x33dd7: 0x6c4ca420,\n\t0x33dd8: 0x6c4ca620, 0x33dd9: 0x6c6e7c20, 0x33dda: 0x6c6e7e20, 0x33ddb: 0x6c6e8020,\n\t0x33ddc: 0x6c6e8220, 0x33ddd: 0x6c6e8420, 0x33dde: 0x6c6e8620, 0x33ddf: 0x6c6e8820,\n\t0x33de0: 0x6c6e8a20, 0x33de1: 0x6c6e8c20, 0x33de2: 0x6c6e8e20, 0x33de3: 0x6c6e9020,\n\t0x33de4: 0x6c6e9220, 0x33de5: 0x6c6e9420, 0x33de6: 0x6c6e9620, 0x33de7: 0x6c6e9820,\n\t0x33de8: 0x6c6e9a20, 0x33de9: 0x6c6e9c20, 0x33dea: 0x6c6e9e20, 0x33deb: 0x6c6ea020,\n\t0x33dec: 0x6c6ea220, 0x33ded: 0x6c6ea420, 0x33dee: 0x6c6ea620, 0x33def: 0x6c6ea820,\n\t0x33df0: 0x6c6eaa20, 0x33df1: 0x6c6eac20, 0x33df2: 0x6c6bf220, 0x33df3: 0x6c95fa20,\n\t0x33df4: 0x6c95fc20, 0x33df5: 0x6c95fe20, 0x33df6: 0x6c960020, 0x33df7: 0x6c960220,\n\t0x33df8: 0x6c960420, 0x33df9: 0x6c960620, 0x33dfa: 0x6c960820, 0x33dfb: 0x6c960a20,\n\t0x33dfc: 0x6c960c20, 0x33dfd: 0x6c960e20, 0x33dfe: 0x6c961020, 0x33dff: 0x6c961220,\n\t// Block 0xcf8, offset 0x33e00\n\t0x33e00: 0x6c961420, 0x33e01: 0x6c961620, 0x33e02: 0x6c961820, 0x33e03: 0x6c961a20,\n\t0x33e04: 0x6c961c20, 0x33e05: 0x6c961e20, 0x33e06: 0x6c962020, 0x33e07: 0x6c962220,\n\t0x33e08: 0x6c962420, 0x33e09: 0x6c962620, 0x33e0a: 0x6c962820, 0x33e0b: 0x6c962a20,\n\t0x33e0c: 0x6c962c20, 0x33e0d: 0x6c962e20, 0x33e0e: 0x6c963020, 0x33e0f: 0x6c963220,\n\t0x33e10: 0x6c963420, 0x33e11: 0x6c963620, 0x33e12: 0x6c963820, 0x33e13: 0x6c963a20,\n\t0x33e14: 0x6c963c20, 0x33e15: 0x6c963e20, 0x33e16: 0x6cb78820, 0x33e17: 0x6c964020,\n\t0x33e18: 0x6c964220, 0x33e19: 0x6c964420, 0x33e1a: 0x6c964620, 0x33e1b: 0x6cc21a20,\n\t0x33e1c: 0x6cc21c20, 0x33e1d: 0x6cc21e20, 0x33e1e: 0x6cc22020, 0x33e1f: 0x6cc22220,\n\t0x33e20: 0x6cc22420, 0x33e21: 0x6cc22620, 0x33e22: 0x6cc22820, 0x33e23: 0x6cc22a20,\n\t0x33e24: 0x6cc22c20, 0x33e25: 0x6cc22e20, 0x33e26: 0x6cc23020, 0x33e27: 0x6cc23220,\n\t0x33e28: 0x6cc23420, 0x33e29: 0x6cc23620, 0x33e2a: 0x6cc23820, 0x33e2b: 0x6cc23a20,\n\t0x33e2c: 0x6cc23c20, 0x33e2d: 0x6cc23e20, 0x33e2e: 0x6cc24020, 0x33e2f: 0x6cc24220,\n\t0x33e30: 0x6cc24420, 0x33e31: 0x6cc24620, 0x33e32: 0x6cc24820, 0x33e33: 0x6cc24a20,\n\t0x33e34: 0x6cc24c20, 0x33e35: 0x6cc24e20, 0x33e36: 0x6cc25020, 0x33e37: 0x6cc25220,\n\t0x33e38: 0x6cc25420, 0x33e39: 0x6cc25620, 0x33e3a: 0x6cc25820, 0x33e3b: 0x6cc25a20,\n\t0x33e3c: 0x6cf17a20, 0x33e3d: 0x6cc25c20, 0x33e3e: 0x6cc25e20, 0x33e3f: 0x6cf17c20,\n\t// Block 0xcf9, offset 0x33e40\n\t0x33e40: 0x6cf17e20, 0x33e41: 0x6cf18020, 0x33e42: 0x6cf18220, 0x33e43: 0x6cf18420,\n\t0x33e44: 0x6cf18620, 0x33e45: 0x6cf18820, 0x33e46: 0x6cf18a20, 0x33e47: 0x6cf18c20,\n\t0x33e48: 0x6cf18e20, 0x33e49: 0x6cf19020, 0x33e4a: 0x6cf19220, 0x33e4b: 0x6cf19420,\n\t0x33e4c: 0x6cf19620, 0x33e4d: 0x6cf19820, 0x33e4e: 0x6cf19a20, 0x33e4f: 0x6cf19c20,\n\t0x33e50: 0x6cf19e20, 0x33e51: 0x6cf1a020, 0x33e52: 0x6cf1a220, 0x33e53: 0x6cf1a420,\n\t0x33e54: 0x6cf1a620, 0x33e55: 0x6d213620, 0x33e56: 0x6d213820, 0x33e57: 0x6d213a20,\n\t0x33e58: 0x6d213c20, 0x33e59: 0x6d213e20, 0x33e5a: 0x6d214020, 0x33e5b: 0x6d214220,\n\t0x33e5c: 0x6d214420, 0x33e5d: 0x6d214620, 0x33e5e: 0x6d214820, 0x33e5f: 0x6d214a20,\n\t0x33e60: 0x6d214c20, 0x33e61: 0x6d214e20, 0x33e62: 0x6d215020, 0x33e63: 0x6d215220,\n\t0x33e64: 0x6d215420, 0x33e65: 0x6d215620, 0x33e66: 0x6d215820, 0x33e67: 0x6d215a20,\n\t0x33e68: 0x6d215c20, 0x33e69: 0x6d215e20, 0x33e6a: 0x6d216020, 0x33e6b: 0x6d216220,\n\t0x33e6c: 0x6d216420, 0x33e6d: 0x6d4ed020, 0x33e6e: 0x6d4ed220, 0x33e6f: 0x6d4ed420,\n\t0x33e70: 0x6d4ed620, 0x33e71: 0x6d4ed820, 0x33e72: 0x6d4eda20, 0x33e73: 0x6d4edc20,\n\t0x33e74: 0x6d4ede20, 0x33e75: 0x6d4ee020, 0x33e76: 0x6d4ee220, 0x33e77: 0x6d4ee420,\n\t0x33e78: 0x6d4ee620, 0x33e79: 0x6d4ee820, 0x33e7a: 0x6d4eea20, 0x33e7b: 0x6d4eec20,\n\t0x33e7c: 0x6d4eee20, 0x33e7d: 0x6d4ef020, 0x33e7e: 0x6d4ef220, 0x33e7f: 0x6d4ef420,\n\t// Block 0xcfa, offset 0x33e80\n\t0x33e80: 0x6d4ef620, 0x33e81: 0x6d4ef820, 0x33e82: 0x6d7b3a20, 0x33e83: 0x6d7b3c20,\n\t0x33e84: 0x6d7b3e20, 0x33e85: 0x6d7b4020, 0x33e86: 0x6d7b4220, 0x33e87: 0x6d7b4420,\n\t0x33e88: 0x6d7b4620, 0x33e89: 0x6d7b4820, 0x33e8a: 0x6d7b4a20, 0x33e8b: 0x6d7b4c20,\n\t0x33e8c: 0x6d7b4e20, 0x33e8d: 0x6d7b5020, 0x33e8e: 0x6d7b5220, 0x33e8f: 0x6d7b5420,\n\t0x33e90: 0x6d7b5620, 0x33e91: 0x6da37c20, 0x33e92: 0x6da37e20, 0x33e93: 0x6da38020,\n\t0x33e94: 0x6da38220, 0x33e95: 0x6da38420, 0x33e96: 0x6da38620, 0x33e97: 0x6da38820,\n\t0x33e98: 0x6da38a20, 0x33e99: 0x6da38c20, 0x33e9a: 0x6da38e20, 0x33e9b: 0x6da39020,\n\t0x33e9c: 0x6db42620, 0x33e9d: 0x6da39220, 0x33e9e: 0x6da39420, 0x33e9f: 0x6da39620,\n\t0x33ea0: 0x6da39820, 0x33ea1: 0x6dc52220, 0x33ea2: 0x6dc52420, 0x33ea3: 0x6dc52620,\n\t0x33ea4: 0x6dc52820, 0x33ea5: 0x6dc52a20, 0x33ea6: 0x6dc52c20, 0x33ea7: 0x6dc52e20,\n\t0x33ea8: 0x6dc53020, 0x33ea9: 0x6dc53220, 0x33eaa: 0x6dc53420, 0x33eab: 0x6dc53620,\n\t0x33eac: 0x6dc53820, 0x33ead: 0x6dc53a20, 0x33eae: 0x6de23a20, 0x33eaf: 0x6de23c20,\n\t0x33eb0: 0x6de23e20, 0x33eb1: 0x6de24020, 0x33eb2: 0x6de24220, 0x33eb3: 0x6de24420,\n\t0x33eb4: 0x6de24620, 0x33eb5: 0x6de24820, 0x33eb6: 0x6de24a20, 0x33eb7: 0x6de24c20,\n\t0x33eb8: 0x6de24e20, 0x33eb9: 0x6de25020, 0x33eba: 0x6de25220, 0x33ebb: 0x6df9f420,\n\t0x33ebc: 0x6df9f620, 0x33ebd: 0x6df9f820, 0x33ebe: 0x6df9fa20, 0x33ebf: 0x6df9fc20,\n\t// Block 0xcfb, offset 0x33ec0\n\t0x33ec0: 0x6df9fe20, 0x33ec1: 0x6dfa0020, 0x33ec2: 0x6dfa0220, 0x33ec3: 0x6dfa0420,\n\t0x33ec4: 0x6e0da220, 0x33ec5: 0x6e0da420, 0x33ec6: 0x6e0da620, 0x33ec7: 0x6e0f2020,\n\t0x33ec8: 0x6e1d1420, 0x33ec9: 0x6e1d1620, 0x33eca: 0x6e1d1820, 0x33ecb: 0x6e1d1a20,\n\t0x33ecc: 0x6e1d1c20, 0x33ecd: 0x6e28c020, 0x33ece: 0x6e28c220, 0x33ecf: 0x6e28c420,\n\t0x33ed0: 0x6e28c620, 0x33ed1: 0x6e28c820, 0x33ed2: 0x6e321220, 0x33ed3: 0x6e3d2220,\n\t0x33ed4: 0x6e403220, 0x33ed5: 0x6e403420, 0x33ed6: 0x6e429420, 0x33ed7: 0x6c043a20,\n\t0x33ed8: 0x6c08d220, 0x33ed9: 0x6c08d420, 0x33eda: 0x6c08d620, 0x33edb: 0x6c1e8620,\n\t0x33edc: 0x6c110c20, 0x33edd: 0x6c1e8820, 0x33ede: 0x6c1e8a20, 0x33edf: 0x6c324a20,\n\t0x33ee0: 0x6c4cb420, 0x33ee1: 0x6c4cb620, 0x33ee2: 0x6c4cb820, 0x33ee3: 0x6c4cba20,\n\t0x33ee4: 0x6c4cbc20, 0x33ee5: 0x6c4cbe20, 0x33ee6: 0x6c6ebc20, 0x33ee7: 0x6c6ebe20,\n\t0x33ee8: 0x6c965220, 0x33ee9: 0x6c965420, 0x33eea: 0x6c965620, 0x33eeb: 0x6cc26620,\n\t0x33eec: 0x6c01da20, 0x33eed: 0x6c044020, 0x33eee: 0x6c08dc20, 0x33eef: 0x6c08de20,\n\t0x33ef0: 0x6c111020, 0x33ef1: 0x6c111220, 0x33ef2: 0x6c111420, 0x33ef3: 0x6c1e9620,\n\t0x33ef4: 0x6c4cc620, 0x33ef5: 0x6c1e9820, 0x33ef6: 0x6c1e9a20, 0x33ef7: 0x6c1e9c20,\n\t0x33ef8: 0x6c1e9e20, 0x33ef9: 0x6c1ea020, 0x33efa: 0x6c1ea220, 0x33efb: 0x6c324e20,\n\t0x33efc: 0x6c4cc820, 0x33efd: 0x6c325020, 0x33efe: 0x6c325220, 0x33eff: 0x6c325420,\n\t// Block 0xcfc, offset 0x33f00\n\t0x33f00: 0x6c325620, 0x33f01: 0x6c325820, 0x33f02: 0x6c4cca20, 0x33f03: 0x6c4ccc20,\n\t0x33f04: 0x6c4cce20, 0x33f05: 0x6c4cd020, 0x33f06: 0x6c4cd220, 0x33f07: 0x6c4cd420,\n\t0x33f08: 0x6c4cd620, 0x33f09: 0x6c4cd820, 0x33f0a: 0x6c4cda20, 0x33f0b: 0x6c4cdc20,\n\t0x33f0c: 0x6c4cde20, 0x33f0d: 0x6c6ec420, 0x33f0e: 0x6c6ec620, 0x33f0f: 0x6c6ec820,\n\t0x33f10: 0x6c6eca20, 0x33f11: 0x6c6ecc20, 0x33f12: 0x6c6ece20, 0x33f13: 0x6c6ed020,\n\t0x33f14: 0x6c965a20, 0x33f15: 0x6c965c20, 0x33f16: 0x6c965e20, 0x33f17: 0x6c966020,\n\t0x33f18: 0x6c966220, 0x33f19: 0x6c966420, 0x33f1a: 0x6cc26820, 0x33f1b: 0x6cc26a20,\n\t0x33f1c: 0x6cc26c20, 0x33f1d: 0x6cc26e20, 0x33f1e: 0x6cc27020, 0x33f1f: 0x6cc27220,\n\t0x33f20: 0x6cc27420, 0x33f21: 0x6cc27620, 0x33f22: 0x6cf1ae20, 0x33f23: 0x6cf1b020,\n\t0x33f24: 0x6cf1b220, 0x33f25: 0x6cf1b420, 0x33f26: 0x6d217620, 0x33f27: 0x6d217820,\n\t0x33f28: 0x6d217a20, 0x33f29: 0x6d217c20, 0x33f2a: 0x6d217e20, 0x33f2b: 0x6d218020,\n\t0x33f2c: 0x6d4f0220, 0x33f2d: 0x6d1a0c20, 0x33f2e: 0x6d7b5e20, 0x33f2f: 0x6d7b6020,\n\t0x33f30: 0x6d7b6220, 0x33f31: 0x6d7b6420, 0x33f32: 0x6da3a020, 0x33f33: 0x6da3a220,\n\t0x33f34: 0x6da3a420, 0x33f35: 0x6de25620, 0x33f36: 0x6e1d1e20, 0x33f37: 0x6e403620,\n\t0x33f38: 0x6e403820, 0x33f39: 0x6e442c20, 0x33f3a: 0x6c01de20, 0x33f3b: 0x6c044420,\n\t0x33f3c: 0x6c044620, 0x33f3d: 0x6c111c20, 0x33f3e: 0x6c111e20, 0x33f3f: 0x6c1ea820,\n\t// Block 0xcfd, offset 0x33f40\n\t0x33f40: 0x6c1eaa20, 0x33f41: 0x6c1eac20, 0x33f42: 0x6c1eae20, 0x33f43: 0x6c1eb020,\n\t0x33f44: 0x6c325c20, 0x33f45: 0x6c325e20, 0x33f46: 0x6c4ce220, 0x33f47: 0x6c4ce420,\n\t0x33f48: 0x6c4ce620, 0x33f49: 0x6c4ce820, 0x33f4a: 0x6c4cea20, 0x33f4b: 0x6c6ed420,\n\t0x33f4c: 0x6c6ed620, 0x33f4d: 0x6c966620, 0x33f4e: 0x6cc27c20, 0x33f4f: 0x6cf1bc20,\n\t0x33f50: 0x6cf1be20, 0x33f51: 0x6d4f0420, 0x33f52: 0x6d4f0620, 0x33f53: 0x6d7b6620,\n\t0x33f54: 0x6da3a820, 0x33f55: 0x6dc53e20, 0x33f56: 0x6e0daa20, 0x33f57: 0x6c01e220,\n\t0x33f58: 0x6c01e420, 0x33f59: 0x6c045020, 0x33f5a: 0x6c045220, 0x33f5b: 0x6c045420,\n\t0x33f5c: 0x6c045620, 0x33f5d: 0x6c045820, 0x33f5e: 0x6c045a20, 0x33f5f: 0x6c045c20,\n\t0x33f60: 0x6c045e20, 0x33f61: 0x6c046020, 0x33f62: 0x6c08e620, 0x33f63: 0x6c08e820,\n\t0x33f64: 0x6c08ea20, 0x33f65: 0x6c08ec20, 0x33f66: 0x6c08ee20, 0x33f67: 0x6c08f020,\n\t0x33f68: 0x6c08f220, 0x33f69: 0x6c08f420, 0x33f6a: 0x6c08f620, 0x33f6b: 0x6c113020,\n\t0x33f6c: 0x6c113220, 0x33f6d: 0x6c113420, 0x33f6e: 0x6c113620, 0x33f6f: 0x6c113820,\n\t0x33f70: 0x6c113a20, 0x33f71: 0x6c113c20, 0x33f72: 0x6c113e20, 0x33f73: 0x6c114020,\n\t0x33f74: 0x6c114220, 0x33f75: 0x6c114420, 0x33f76: 0x6c114620, 0x33f77: 0x6c1ebe20,\n\t0x33f78: 0x6c1ec020, 0x33f79: 0x6c1ec220, 0x33f7a: 0x6c1ec420, 0x33f7b: 0x6c1ec620,\n\t0x33f7c: 0x6c1ec820, 0x33f7d: 0x6c1eca20, 0x33f7e: 0x6c1ecc20, 0x33f7f: 0x6c1ece20,\n\t// Block 0xcfe, offset 0x33f80\n\t0x33f80: 0x6c1ed020, 0x33f81: 0x6c1ed220, 0x33f82: 0x6c1ed420, 0x33f83: 0x6c1ed620,\n\t0x33f84: 0x6c1ed820, 0x33f85: 0x6c1eda20, 0x33f86: 0x6c327c20, 0x33f87: 0x6c327e20,\n\t0x33f88: 0x6c328020, 0x33f89: 0x6c328220, 0x33f8a: 0x6c328420, 0x33f8b: 0x6c328620,\n\t0x33f8c: 0x6c328820, 0x33f8d: 0x6c328a20, 0x33f8e: 0x6c328c20, 0x33f8f: 0x6c328e20,\n\t0x33f90: 0x6c329020, 0x33f91: 0x6c329220, 0x33f92: 0x6c329420, 0x33f93: 0x6c329620,\n\t0x33f94: 0x6c4d0620, 0x33f95: 0x6c4d0820, 0x33f96: 0x6c4d0a20, 0x33f97: 0x6c4d0c20,\n\t0x33f98: 0x6c4d0e20, 0x33f99: 0x6c4d1020, 0x33f9a: 0x6c4d1220, 0x33f9b: 0x6c4d1420,\n\t0x33f9c: 0x6c4d1620, 0x33f9d: 0x6c4d1820, 0x33f9e: 0x6c4d1a20, 0x33f9f: 0x6c4d1c20,\n\t0x33fa0: 0x6c4d1e20, 0x33fa1: 0x6c4d2020, 0x33fa2: 0x6c4d2220, 0x33fa3: 0x6c4d2420,\n\t0x33fa4: 0x6c6ee420, 0x33fa5: 0x6c6ee620, 0x33fa6: 0x6c6ee820, 0x33fa7: 0x6c6eea20,\n\t0x33fa8: 0x6c6eec20, 0x33fa9: 0x6c6eee20, 0x33faa: 0x6c6ef020, 0x33fab: 0x6c6ef220,\n\t0x33fac: 0x6c6ef420, 0x33fad: 0x6c6ef620, 0x33fae: 0x6c967a20, 0x33faf: 0x6c967c20,\n\t0x33fb0: 0x6c967e20, 0x33fb1: 0x6c968020, 0x33fb2: 0x6c968220, 0x33fb3: 0x6c968420,\n\t0x33fb4: 0x6c968620, 0x33fb5: 0x6c968820, 0x33fb6: 0x6c968a20, 0x33fb7: 0x6c968c20,\n\t0x33fb8: 0x6c968e20, 0x33fb9: 0x6c969020, 0x33fba: 0x6c969220, 0x33fbb: 0x6c969420,\n\t0x33fbc: 0x6c969620, 0x33fbd: 0x6c969820, 0x33fbe: 0x6c969a20, 0x33fbf: 0x6c969c20,\n\t// Block 0xcff, offset 0x33fc0\n\t0x33fc0: 0x6cc28e20, 0x33fc1: 0x6cc29020, 0x33fc2: 0x6cc29220, 0x33fc3: 0x6cc29420,\n\t0x33fc4: 0x6cc29620, 0x33fc5: 0x6cc29820, 0x33fc6: 0x6cc29a20, 0x33fc7: 0x6cc29c20,\n\t0x33fc8: 0x6cc29e20, 0x33fc9: 0x6cc2a020, 0x33fca: 0x6cf1d020, 0x33fcb: 0x6cf1d220,\n\t0x33fcc: 0x6cf1d420, 0x33fcd: 0x6cf1d620, 0x33fce: 0x6cf1d820, 0x33fcf: 0x6cf1da20,\n\t0x33fd0: 0x6cf1dc20, 0x33fd1: 0x6cf1de20, 0x33fd2: 0x6d218c20, 0x33fd3: 0x6d218e20,\n\t0x33fd4: 0x6d219020, 0x33fd5: 0x6d219220, 0x33fd6: 0x6d219420, 0x33fd7: 0x6d219620,\n\t0x33fd8: 0x6d219820, 0x33fd9: 0x6d219a20, 0x33fda: 0x6d219c20, 0x33fdb: 0x6d219e20,\n\t0x33fdc: 0x6d21a020, 0x33fdd: 0x6d21a220, 0x33fde: 0x6d4f1220, 0x33fdf: 0x6d4f1420,\n\t0x33fe0: 0x6d4f1620, 0x33fe1: 0x6d4f1820, 0x33fe2: 0x6d4f1a20, 0x33fe3: 0x6d4f1c20,\n\t0x33fe4: 0x6d4f1e20, 0x33fe5: 0x6d7b6c20, 0x33fe6: 0x6d7b6e20, 0x33fe7: 0x6d7b7020,\n\t0x33fe8: 0x6d7b7220, 0x33fe9: 0x6d7b7420, 0x33fea: 0x6d7b7620, 0x33feb: 0x6d8a6c20,\n\t0x33fec: 0x6da3ac20, 0x33fed: 0x6da3ae20, 0x33fee: 0x6da3b020, 0x33fef: 0x6da3b220,\n\t0x33ff0: 0x6da3b420, 0x33ff1: 0x6da3b620, 0x33ff2: 0x6dc54220, 0x33ff3: 0x6dc54420,\n\t0x33ff4: 0x6dc54620, 0x33ff5: 0x6dc54820, 0x33ff6: 0x6dc54a20, 0x33ff7: 0x6dc54c20,\n\t0x33ff8: 0x6de25820, 0x33ff9: 0x6de25a20, 0x33ffa: 0x6de25c20, 0x33ffb: 0x6de25e20,\n\t0x33ffc: 0x6de26020, 0x33ffd: 0x6de26220, 0x33ffe: 0x6de26420, 0x33fff: 0x6dfa0620,\n\t// Block 0xd00, offset 0x34000\n\t0x34000: 0x6dfa0820, 0x34001: 0x6dfa0a20, 0x34002: 0x6dfa0c20, 0x34003: 0x6dfa0e20,\n\t0x34004: 0x6dfa1020, 0x34005: 0x6dfa1220, 0x34006: 0x6e0dae20, 0x34007: 0x6e0db020,\n\t0x34008: 0x6e0db220, 0x34009: 0x6e0db420, 0x3400a: 0x6e1d2420, 0x3400b: 0x6e321420,\n\t0x3400c: 0x6e388220, 0x3400d: 0x6e429620, 0x3400e: 0x6e462820, 0x3400f: 0x6c114c20,\n\t0x34010: 0x6c114e20, 0x34011: 0x6c115020, 0x34012: 0x6c115220, 0x34013: 0x6c1edc20,\n\t0x34014: 0x6c32a020, 0x34015: 0x6c32a220, 0x34016: 0x6c3bf820, 0x34017: 0x6c4d2c20,\n\t0x34018: 0x6c4d2e20, 0x34019: 0x6c4d3020, 0x3401a: 0x6c4d3220, 0x3401b: 0x6c6efa20,\n\t0x3401c: 0x6c6efc20, 0x3401d: 0x6c6efe20, 0x3401e: 0x6c96a220, 0x3401f: 0x6c96a420,\n\t0x34020: 0x6c96a620, 0x34021: 0x6c96a820, 0x34022: 0x6cc2a820, 0x34023: 0x6cc2aa20,\n\t0x34024: 0x6cc2ac20, 0x34025: 0x6cf1e420, 0x34026: 0x6cf1e620, 0x34027: 0x6cf1e820,\n\t0x34028: 0x6d21a820, 0x34029: 0x6d21aa20, 0x3402a: 0x6d21ac20, 0x3402b: 0x6d21ae20,\n\t0x3402c: 0x6d21b020, 0x3402d: 0x6d4f2020, 0x3402e: 0x6d4f2220, 0x3402f: 0x6d7b7e20,\n\t0x34030: 0x6d7adc20, 0x34031: 0x6d7b8020, 0x34032: 0x6da3ba20, 0x34033: 0x6dc55220,\n\t0x34034: 0x6dc55420, 0x34035: 0x6dc55620, 0x34036: 0x6dc55820, 0x34037: 0x6de26a20,\n\t0x34038: 0x6de26c20, 0x34039: 0x6de26e20, 0x3403a: 0x6de27020, 0x3403b: 0x6dfa1420,\n\t0x3403c: 0x6dfa1620, 0x3403d: 0x6e1d2620, 0x3403e: 0x6e28cc20, 0x3403f: 0x6e3d2620,\n\t// Block 0xd01, offset 0x34040\n\t0x34040: 0x6c08fa20, 0x34041: 0x6c08fc20, 0x34042: 0x6c08fe20, 0x34043: 0x6c115820,\n\t0x34044: 0x6c115a20, 0x34045: 0x6c115c20, 0x34046: 0x6c115e20, 0x34047: 0x6c1ee620,\n\t0x34048: 0x6c1ee820, 0x34049: 0x6c32aa20, 0x3404a: 0x6c32ac20, 0x3404b: 0x6c32ae20,\n\t0x3404c: 0x6c32b020, 0x3404d: 0x6c32b220, 0x3404e: 0x6c4d3820, 0x3404f: 0x6c6f0420,\n\t0x34050: 0x6c6f0620, 0x34051: 0x6c6f0820, 0x34052: 0x6c6f0a20, 0x34053: 0x6c6f0c20,\n\t0x34054: 0x6c96b220, 0x34055: 0x6c96b420, 0x34056: 0x6c96b620, 0x34057: 0x6c96b820,\n\t0x34058: 0x6c96ba20, 0x34059: 0x6c96bc20, 0x3405a: 0x6c96be20, 0x3405b: 0x6c96c020,\n\t0x3405c: 0x6c96c220, 0x3405d: 0x6c96c420, 0x3405e: 0x6cc2b420, 0x3405f: 0x6cc2b620,\n\t0x34060: 0x6cc2b820, 0x34061: 0x6cc2ba20, 0x34062: 0x6cc2bc20, 0x34063: 0x6cc2be20,\n\t0x34064: 0x6cf1ec20, 0x34065: 0x6cf1ee20, 0x34066: 0x6cf1f020, 0x34067: 0x6cf1f220,\n\t0x34068: 0x6cf1f420, 0x34069: 0x6d21b820, 0x3406a: 0x6d21ba20, 0x3406b: 0x6d4f2a20,\n\t0x3406c: 0x6d4f2c20, 0x3406d: 0x6d4f2e20, 0x3406e: 0x6d4f3020, 0x3406f: 0x6d4f3220,\n\t0x34070: 0x6d7b8420, 0x34071: 0x6d7b8620, 0x34072: 0x6d7b8820, 0x34073: 0x6d7b8a20,\n\t0x34074: 0x6da3bc20, 0x34075: 0x6dc55c20, 0x34076: 0x6e0db820, 0x34077: 0x6dfa1820,\n\t0x34078: 0x6e1d2a20, 0x34079: 0x6e1d2c20, 0x3407a: 0x6e1d2e20, 0x3407b: 0x6e388620,\n\t0x3407c: 0x6c046220, 0x3407d: 0x6c046420, 0x3407e: 0x6c090220, 0x3407f: 0x6c090420,\n\t// Block 0xd02, offset 0x34080\n\t0x34080: 0x6c116620, 0x34081: 0x6c116820, 0x34082: 0x6c116a20, 0x34083: 0x6c116c20,\n\t0x34084: 0x6c1efe20, 0x34085: 0x6c1f0020, 0x34086: 0x6c1f0220, 0x34087: 0x6c1f0420,\n\t0x34088: 0x6c1f0620, 0x34089: 0x6c1f0820, 0x3408a: 0x6c1f0a20, 0x3408b: 0x6c1f0c20,\n\t0x3408c: 0x6c1f0e20, 0x3408d: 0x6c1f1020, 0x3408e: 0x6c1f1220, 0x3408f: 0x6c1f1420,\n\t0x34090: 0x6c1f1620, 0x34091: 0x6c1f1820, 0x34092: 0x6c32ca20, 0x34093: 0x6c32cc20,\n\t0x34094: 0x6c32ce20, 0x34095: 0x6c32d020, 0x34096: 0x6c32d220, 0x34097: 0x6c32d420,\n\t0x34098: 0x6c32d620, 0x34099: 0x6c32d820, 0x3409a: 0x6c32da20, 0x3409b: 0x6c32dc20,\n\t0x3409c: 0x6c4d6020, 0x3409d: 0x6c4d6220, 0x3409e: 0x6c4d6420, 0x3409f: 0x6c4d6620,\n\t0x340a0: 0x6c4d6820, 0x340a1: 0x6c4d6a20, 0x340a2: 0x6c4d6c20, 0x340a3: 0x6c4d6e20,\n\t0x340a4: 0x6c4d7020, 0x340a5: 0x6c4d7220, 0x340a6: 0x6c4d7420, 0x340a7: 0x6c4d7620,\n\t0x340a8: 0x6c4d7820, 0x340a9: 0x6c4d7a20, 0x340aa: 0x6c6f2420, 0x340ab: 0x6c6f2620,\n\t0x340ac: 0x6c6f2820, 0x340ad: 0x6c6f2a20, 0x340ae: 0x6c6f2c20, 0x340af: 0x6c6f2e20,\n\t0x340b0: 0x6c6f3020, 0x340b1: 0x6c6f3220, 0x340b2: 0x6c6f3420, 0x340b3: 0x6c6f3620,\n\t0x340b4: 0x6c6f3820, 0x340b5: 0x6c6f3a20, 0x340b6: 0x6c6f3c20, 0x340b7: 0x6c6f3e20,\n\t0x340b8: 0x6c6f4020, 0x340b9: 0x6c6f4220, 0x340ba: 0x6c6f4420, 0x340bb: 0x6c6f4620,\n\t0x340bc: 0x6c6f4820, 0x340bd: 0x6c6f4a20, 0x340be: 0x6c6f4c20, 0x340bf: 0x6c6f4e20,\n\t// Block 0xd03, offset 0x340c0\n\t0x340c0: 0x6c6f5020, 0x340c1: 0x6c96ee20, 0x340c2: 0x6c96f020, 0x340c3: 0x6c96f220,\n\t0x340c4: 0x6c96f420, 0x340c5: 0x6c96f620, 0x340c6: 0x6c96f820, 0x340c7: 0x6c96fa20,\n\t0x340c8: 0x6c96fc20, 0x340c9: 0x6c96fe20, 0x340ca: 0x6c970020, 0x340cb: 0x6c970220,\n\t0x340cc: 0x6c970420, 0x340cd: 0x6c970620, 0x340ce: 0x6c970820, 0x340cf: 0x6c970a20,\n\t0x340d0: 0x6c970c20, 0x340d1: 0x6c970e20, 0x340d2: 0x6c971020, 0x340d3: 0x6c971220,\n\t0x340d4: 0x6c971420, 0x340d5: 0x6c971620, 0x340d6: 0x6c971820, 0x340d7: 0x6c971a20,\n\t0x340d8: 0x6c971c20, 0x340d9: 0x6c971e20, 0x340da: 0x6c972020, 0x340db: 0x6c972220,\n\t0x340dc: 0x6c972420, 0x340dd: 0x6c972620, 0x340de: 0x6c972820, 0x340df: 0x6cc2da20,\n\t0x340e0: 0x6cc2dc20, 0x340e1: 0x6cc2de20, 0x340e2: 0x6cc2e020, 0x340e3: 0x6cc2e220,\n\t0x340e4: 0x6cc2e420, 0x340e5: 0x6cc2e620, 0x340e6: 0x6cc2e820, 0x340e7: 0x6cc2ea20,\n\t0x340e8: 0x6cc2ec20, 0x340e9: 0x6cc2ee20, 0x340ea: 0x6cc2f020, 0x340eb: 0x6cc2f220,\n\t0x340ec: 0x6cde5820, 0x340ed: 0x6cc2f420, 0x340ee: 0x6cc2f620, 0x340ef: 0x6cc2f820,\n\t0x340f0: 0x6cc2fa20, 0x340f1: 0x6cc2fc20, 0x340f2: 0x6cf20220, 0x340f3: 0x6cf20420,\n\t0x340f4: 0x6cf20620, 0x340f5: 0x6cf20820, 0x340f6: 0x6cf20a20, 0x340f7: 0x6cf20c20,\n\t0x340f8: 0x6cf20e20, 0x340f9: 0x6cf21020, 0x340fa: 0x6cf21220, 0x340fb: 0x6cf21420,\n\t0x340fc: 0x6cf21620, 0x340fd: 0x6cf21820, 0x340fe: 0x6cf21a20, 0x340ff: 0x6cf21c20,\n\t// Block 0xd04, offset 0x34100\n\t0x34100: 0x6cf21e20, 0x34101: 0x6cf22020, 0x34102: 0x6cf22220, 0x34103: 0x6cf22420,\n\t0x34104: 0x6cf22620, 0x34105: 0x6cf22820, 0x34106: 0x6cf22a20, 0x34107: 0x6cf22c20,\n\t0x34108: 0x6cf22e20, 0x34109: 0x6cf23020, 0x3410a: 0x6cf23220, 0x3410b: 0x6cf23420,\n\t0x3410c: 0x6cf23620, 0x3410d: 0x6cf23820, 0x3410e: 0x6cf23a20, 0x3410f: 0x6d21c820,\n\t0x34110: 0x6d21ca20, 0x34111: 0x6d21cc20, 0x34112: 0x6d21ce20, 0x34113: 0x6d21d020,\n\t0x34114: 0x6d21d220, 0x34115: 0x6d21d420, 0x34116: 0x6d21d620, 0x34117: 0x6d21d820,\n\t0x34118: 0x6d21da20, 0x34119: 0x6d21dc20, 0x3411a: 0x6d21de20, 0x3411b: 0x6d21e020,\n\t0x3411c: 0x6d21e220, 0x3411d: 0x6d21e420, 0x3411e: 0x6d21e620, 0x3411f: 0x6d21e820,\n\t0x34120: 0x6d21ea20, 0x34121: 0x6d21ec20, 0x34122: 0x6d21ee20, 0x34123: 0x6d21f020,\n\t0x34124: 0x6d21f220, 0x34125: 0x6d21f420, 0x34126: 0x6d21f620, 0x34127: 0x6cf23c20,\n\t0x34128: 0x6d21f820, 0x34129: 0x6d21fa20, 0x3412a: 0x6d4f4620, 0x3412b: 0x6d4f4820,\n\t0x3412c: 0x6d4f4a20, 0x3412d: 0x6d4f4c20, 0x3412e: 0x6d4f4e20, 0x3412f: 0x6d4f5020,\n\t0x34130: 0x6d4f5220, 0x34131: 0x6d4f5420, 0x34132: 0x6d4f5620, 0x34133: 0x6d4f5820,\n\t0x34134: 0x6d4f5a20, 0x34135: 0x6d4f5c20, 0x34136: 0x6d4f5e20, 0x34137: 0x6d4f6020,\n\t0x34138: 0x6d4f6220, 0x34139: 0x6d7b9420, 0x3413a: 0x6d7b9620, 0x3413b: 0x6d7b9820,\n\t0x3413c: 0x6d7b9a20, 0x3413d: 0x6d7b9c20, 0x3413e: 0x6d7b9e20, 0x3413f: 0x6d7ba020,\n\t// Block 0xd05, offset 0x34140\n\t0x34140: 0x6d7ba220, 0x34141: 0x6d7ba420, 0x34142: 0x6d7ba620, 0x34143: 0x6d7ba820,\n\t0x34144: 0x6d7baa20, 0x34145: 0x6d912c20, 0x34146: 0x6d7bac20, 0x34147: 0x6d7bae20,\n\t0x34148: 0x6da3c620, 0x34149: 0x6da3c820, 0x3414a: 0x6da3ca20, 0x3414b: 0x6db4d020,\n\t0x3414c: 0x6da3cc20, 0x3414d: 0x6da3ce20, 0x3414e: 0x6da3d020, 0x3414f: 0x6dc55e20,\n\t0x34150: 0x6dc56020, 0x34151: 0x6dc56220, 0x34152: 0x6dc56420, 0x34153: 0x6dc56620,\n\t0x34154: 0x6dc56820, 0x34155: 0x6dc56a20, 0x34156: 0x6dc56c20, 0x34157: 0x6dc56e20,\n\t0x34158: 0x6de27620, 0x34159: 0x6de27820, 0x3415a: 0x6de27a20, 0x3415b: 0x6df7ca20,\n\t0x3415c: 0x6de27c20, 0x3415d: 0x6dfa2020, 0x3415e: 0x6dfa2220, 0x3415f: 0x6dfa2420,\n\t0x34160: 0x6dfa2620, 0x34161: 0x6e01e220, 0x34162: 0x6dfa2820, 0x34163: 0x6e0dbc20,\n\t0x34164: 0x6e0dbe20, 0x34165: 0x6e1d3020, 0x34166: 0x6e28ce20, 0x34167: 0x6e388820,\n\t0x34168: 0x6e403a20, 0x34169: 0x6c01f220, 0x3416a: 0x6c046a20, 0x3416b: 0x6c091020,\n\t0x3416c: 0x6c091220, 0x3416d: 0x6c091420, 0x3416e: 0x6c091620, 0x3416f: 0x6c091820,\n\t0x34170: 0x6c091a20, 0x34171: 0x6c091c20, 0x34172: 0x6c118a20, 0x34173: 0x6c118c20,\n\t0x34174: 0x6c118e20, 0x34175: 0x6c119020, 0x34176: 0x6c119220, 0x34177: 0x6c119420,\n\t0x34178: 0x6c119620, 0x34179: 0x6c119820, 0x3417a: 0x6c119a20, 0x3417b: 0x6c119c20,\n\t0x3417c: 0x6c119e20, 0x3417d: 0x6c11a020, 0x3417e: 0x6c11a220, 0x3417f: 0x6c11a420,\n\t// Block 0xd06, offset 0x34180\n\t0x34180: 0x6c11a620, 0x34181: 0x6c11a820, 0x34182: 0x6c11aa20, 0x34183: 0x6c11ac20,\n\t0x34184: 0x6c11ae20, 0x34185: 0x6c11b020, 0x34186: 0x6c11b220, 0x34187: 0x6c11b420,\n\t0x34188: 0x6c11b620, 0x34189: 0x6c1f8020, 0x3418a: 0x6c1f8220, 0x3418b: 0x6c1f8420,\n\t0x3418c: 0x6c1f8620, 0x3418d: 0x6c1f8820, 0x3418e: 0x6c1f8a20, 0x3418f: 0x6c1f8c20,\n\t0x34190: 0x6c1f8e20, 0x34191: 0x6c1f9020, 0x34192: 0x6c1f9220, 0x34193: 0x6c1f9420,\n\t0x34194: 0x6c1f9620, 0x34195: 0x6c1f9820, 0x34196: 0x6c1f9a20, 0x34197: 0x6c1f9c20,\n\t0x34198: 0x6c1f9e20, 0x34199: 0x6c1fa020, 0x3419a: 0x6c1fa220, 0x3419b: 0x6c1fa420,\n\t0x3419c: 0x6c1fa620, 0x3419d: 0x6c1fa820, 0x3419e: 0x6c1faa20, 0x3419f: 0x6c1fac20,\n\t0x341a0: 0x6c1fae20, 0x341a1: 0x6c1fb020, 0x341a2: 0x6c1fb220, 0x341a3: 0x6c1fb420,\n\t0x341a4: 0x6c1fb620, 0x341a5: 0x6c1fb820, 0x341a6: 0x6c1fba20, 0x341a7: 0x6c1fbc20,\n\t0x341a8: 0x6c1fbe20, 0x341a9: 0x6c1fc020, 0x341aa: 0x6c1fc220, 0x341ab: 0x6c1fc420,\n\t0x341ac: 0x6c1fc620, 0x341ad: 0x6c1fc820, 0x341ae: 0x6c1fca20, 0x341af: 0x6c1fcc20,\n\t0x341b0: 0x6c1fce20, 0x341b1: 0x6c1fd020, 0x341b2: 0x6c1fd220, 0x341b3: 0x6c1fd420,\n\t0x341b4: 0x6c1fd620, 0x341b5: 0x6c1fd820, 0x341b6: 0x6c1fda20, 0x341b7: 0x6c1fdc20,\n\t0x341b8: 0x6c1fde20, 0x341b9: 0x6c1fe020, 0x341ba: 0x6c1fe220, 0x341bb: 0x6c1fe420,\n\t0x341bc: 0x6c1fe620, 0x341bd: 0x6c1fe820, 0x341be: 0x6c1fea20, 0x341bf: 0x6c336420,\n\t// Block 0xd07, offset 0x341c0\n\t0x341c0: 0x6c336620, 0x341c1: 0x6c336820, 0x341c2: 0x6c336a20, 0x341c3: 0x6c336c20,\n\t0x341c4: 0x6c336e20, 0x341c5: 0x6c337020, 0x341c6: 0x6c337220, 0x341c7: 0x6c337420,\n\t0x341c8: 0x6c337620, 0x341c9: 0x6c337820, 0x341ca: 0x6c337a20, 0x341cb: 0x6c337c20,\n\t0x341cc: 0x6c337e20, 0x341cd: 0x6c338020, 0x341ce: 0x6c338220, 0x341cf: 0x6c338420,\n\t0x341d0: 0x6c338620, 0x341d1: 0x6c338820, 0x341d2: 0x6c338a20, 0x341d3: 0x6c338c20,\n\t0x341d4: 0x6c338e20, 0x341d5: 0x6c339020, 0x341d6: 0x6c339220, 0x341d7: 0x6c339420,\n\t0x341d8: 0x6c339620, 0x341d9: 0x6c339820, 0x341da: 0x6c339a20, 0x341db: 0x6c339c20,\n\t0x341dc: 0x6c339e20, 0x341dd: 0x6c33a020, 0x341de: 0x6c33a220, 0x341df: 0x6c33a420,\n\t0x341e0: 0x6c33a620, 0x341e1: 0x6c33a820, 0x341e2: 0x6c33aa20, 0x341e3: 0x6c33ac20,\n\t0x341e4: 0x6c33ae20, 0x341e5: 0x6c33b020, 0x341e6: 0x6c33b220, 0x341e7: 0x6c33b420,\n\t0x341e8: 0x6c33b620, 0x341e9: 0x6c33b820, 0x341ea: 0x6c33ba20, 0x341eb: 0x6c33bc20,\n\t0x341ec: 0x6c33be20, 0x341ed: 0x6c33c020, 0x341ee: 0x6c33c220, 0x341ef: 0x6c33c420,\n\t0x341f0: 0x6c33c620, 0x341f1: 0x6c33c820, 0x341f2: 0x6c33ca20, 0x341f3: 0x6c33cc20,\n\t0x341f4: 0x6c4e1420, 0x341f5: 0x6c4e1620, 0x341f6: 0x6c4e1820, 0x341f7: 0x6c4e1a20,\n\t0x341f8: 0x6c4e1c20, 0x341f9: 0x6c4e1e20, 0x341fa: 0x6c4e2020, 0x341fb: 0x6c4e2220,\n\t0x341fc: 0x6c4e2420, 0x341fd: 0x6c4e2620, 0x341fe: 0x6c4e2820, 0x341ff: 0x6c4e2a20,\n\t// Block 0xd08, offset 0x34200\n\t0x34200: 0x6c4e2c20, 0x34201: 0x6c4e2e20, 0x34202: 0x6c4e3020, 0x34203: 0x6c4e3220,\n\t0x34204: 0x6c4e3420, 0x34205: 0x6c4e3620, 0x34206: 0x6c4e3820, 0x34207: 0x6c4e3a20,\n\t0x34208: 0x6c4e3c20, 0x34209: 0x6c4e3e20, 0x3420a: 0x6c4e4020, 0x3420b: 0x6c4e4220,\n\t0x3420c: 0x6c4e4420, 0x3420d: 0x6c4e4620, 0x3420e: 0x6c4e4820, 0x3420f: 0x6c4e4a20,\n\t0x34210: 0x6c4e4c20, 0x34211: 0x6c4e4e20, 0x34212: 0x6c4e5020, 0x34213: 0x6c4e5220,\n\t0x34214: 0x6c4e5420, 0x34215: 0x6c4e5620, 0x34216: 0x6c4e5820, 0x34217: 0x6c4e5a20,\n\t0x34218: 0x6c4e5c20, 0x34219: 0x6c4e5e20, 0x3421a: 0x6c4e6020, 0x3421b: 0x6c4e6220,\n\t0x3421c: 0x6c4e6420, 0x3421d: 0x6c4e6620, 0x3421e: 0x6c4e6820, 0x3421f: 0x6c4e6a20,\n\t0x34220: 0x6c4e6c20, 0x34221: 0x6c4e6e20, 0x34222: 0x6c4e7020, 0x34223: 0x6c4e7220,\n\t0x34224: 0x6c4e7420, 0x34225: 0x6c4e7620, 0x34226: 0x6c4e7820, 0x34227: 0x6c4e7a20,\n\t0x34228: 0x6c4e7c20, 0x34229: 0x6c4e7e20, 0x3422a: 0x6c4e8020, 0x3422b: 0x6c4e8220,\n\t0x3422c: 0x6c4e8420, 0x3422d: 0x6c4e8620, 0x3422e: 0x6c4e8820, 0x3422f: 0x6c4e8a20,\n\t0x34230: 0x6c4e8c20, 0x34231: 0x6c6fe420, 0x34232: 0x6c6fe620, 0x34233: 0x6c6fe820,\n\t0x34234: 0x6c6fea20, 0x34235: 0x6c6fec20, 0x34236: 0x6c6fee20, 0x34237: 0x6c6ff020,\n\t0x34238: 0x6c6ff220, 0x34239: 0x6c6ff420, 0x3423a: 0x6c6ff620, 0x3423b: 0x6c6ff820,\n\t0x3423c: 0x6c6ffa20, 0x3423d: 0x6c6ffc20, 0x3423e: 0x6c6ffe20, 0x3423f: 0x6c700020,\n\t// Block 0xd09, offset 0x34240\n\t0x34240: 0x6c700220, 0x34241: 0x6c700420, 0x34242: 0x6c700620, 0x34243: 0x6c700820,\n\t0x34244: 0x6c700a20, 0x34245: 0x6c700c20, 0x34246: 0x6c700e20, 0x34247: 0x6c701020,\n\t0x34248: 0x6c701220, 0x34249: 0x6c701420, 0x3424a: 0x6c701620, 0x3424b: 0x6c701820,\n\t0x3424c: 0x6c701a20, 0x3424d: 0x6c701c20, 0x3424e: 0x6c701e20, 0x3424f: 0x6c702020,\n\t0x34250: 0x6c702220, 0x34251: 0x6c702420, 0x34252: 0x6c702620, 0x34253: 0x6c702820,\n\t0x34254: 0x6c702a20, 0x34255: 0x6c702c20, 0x34256: 0x6c702e20, 0x34257: 0x6c703020,\n\t0x34258: 0x6c703220, 0x34259: 0x6c703420, 0x3425a: 0x6c703620, 0x3425b: 0x6c703820,\n\t0x3425c: 0x6c703a20, 0x3425d: 0x6c703c20, 0x3425e: 0x6c703e20, 0x3425f: 0x6c704020,\n\t0x34260: 0x6c704220, 0x34261: 0x6c704420, 0x34262: 0x6c704620, 0x34263: 0x6c704820,\n\t0x34264: 0x6c704a20, 0x34265: 0x6c704c20, 0x34266: 0x6c704e20, 0x34267: 0x6c705020,\n\t0x34268: 0x6c705220, 0x34269: 0x6c705420, 0x3426a: 0x6c705620, 0x3426b: 0x6c705820,\n\t0x3426c: 0x6c705a20, 0x3426d: 0x6c705c20, 0x3426e: 0x6c705e20, 0x3426f: 0x6c706020,\n\t0x34270: 0x6c706220, 0x34271: 0x6c706420, 0x34272: 0x6c706620, 0x34273: 0x6c706820,\n\t0x34274: 0x6c706a20, 0x34275: 0x6c706c20, 0x34276: 0x6c706e20, 0x34277: 0x6c707020,\n\t0x34278: 0x6c707220, 0x34279: 0x6c707420, 0x3427a: 0x6c707620, 0x3427b: 0x6c707820,\n\t0x3427c: 0x6c707a20, 0x3427d: 0x6c707c20, 0x3427e: 0x6c707e20, 0x3427f: 0x6c708020,\n\t// Block 0xd0a, offset 0x34280\n\t0x34280: 0x6c97d620, 0x34281: 0x6c97d820, 0x34282: 0x6c97da20, 0x34283: 0x6c97dc20,\n\t0x34284: 0x6c97de20, 0x34285: 0x6c97e020, 0x34286: 0x6c97e220, 0x34287: 0x6c97e420,\n\t0x34288: 0x6c97e620, 0x34289: 0x6c97e820, 0x3428a: 0x6c97ea20, 0x3428b: 0x6c97ec20,\n\t0x3428c: 0x6c97ee20, 0x3428d: 0x6c97f020, 0x3428e: 0x6c97f220, 0x3428f: 0x6c97f420,\n\t0x34290: 0x6c97f620, 0x34291: 0x6c97f820, 0x34292: 0x6c97fa20, 0x34293: 0x6c97fc20,\n\t0x34294: 0x6c97fe20, 0x34295: 0x6c980020, 0x34296: 0x6c980220, 0x34297: 0x6c980420,\n\t0x34298: 0x6c980620, 0x34299: 0x6c980820, 0x3429a: 0x6c980a20, 0x3429b: 0x6c980c20,\n\t0x3429c: 0x6c980e20, 0x3429d: 0x6c981020, 0x3429e: 0x6c981220, 0x3429f: 0x6c981420,\n\t0x342a0: 0x6c981620, 0x342a1: 0x6c981820, 0x342a2: 0x6c981a20, 0x342a3: 0x6c981c20,\n\t0x342a4: 0x6c981e20, 0x342a5: 0x6c982020, 0x342a6: 0x6c982220, 0x342a7: 0x6c982420,\n\t0x342a8: 0x6c982620, 0x342a9: 0x6c982820, 0x342aa: 0x6c982a20, 0x342ab: 0x6c982c20,\n\t0x342ac: 0x6c982e20, 0x342ad: 0x6c983020, 0x342ae: 0x6c983220, 0x342af: 0x6c983420,\n\t0x342b0: 0x6c983620, 0x342b1: 0x6c983820, 0x342b2: 0x6c983a20, 0x342b3: 0x6c983c20,\n\t0x342b4: 0x6c983e20, 0x342b5: 0x6c984020, 0x342b6: 0x6c984220, 0x342b7: 0x6c984420,\n\t0x342b8: 0x6c984620, 0x342b9: 0x6c984820, 0x342ba: 0x6c984a20, 0x342bb: 0x6c984c20,\n\t0x342bc: 0x6c984e20, 0x342bd: 0x6c985020, 0x342be: 0x6c985220, 0x342bf: 0x6c985420,\n\t// Block 0xd0b, offset 0x342c0\n\t0x342c0: 0x6c985620, 0x342c1: 0x6c985820, 0x342c2: 0x6c985a20, 0x342c3: 0x6c985c20,\n\t0x342c4: 0x6c985e20, 0x342c5: 0x6c986020, 0x342c6: 0x6c986220, 0x342c7: 0x6c986420,\n\t0x342c8: 0x6c986620, 0x342c9: 0x6c986820, 0x342ca: 0x6c986a20, 0x342cb: 0x6c986c20,\n\t0x342cc: 0x6c986e20, 0x342cd: 0x6c987020, 0x342ce: 0x6c987220, 0x342cf: 0x6c987420,\n\t0x342d0: 0x6c987620, 0x342d1: 0x6c987820, 0x342d2: 0x6c987a20, 0x342d3: 0x6c987c20,\n\t0x342d4: 0x6c987e20, 0x342d5: 0x6c988020, 0x342d6: 0x6c988220, 0x342d7: 0x6c988420,\n\t0x342d8: 0x6c988620, 0x342d9: 0x6c988820, 0x342da: 0x6c988a20, 0x342db: 0x6c988c20,\n\t0x342dc: 0x6c988e20, 0x342dd: 0x6c989020, 0x342de: 0x6c989220, 0x342df: 0x6c989420,\n\t0x342e0: 0x6c989620, 0x342e1: 0x6c989820, 0x342e2: 0x6c989a20, 0x342e3: 0x6c989c20,\n\t0x342e4: 0x6c989e20, 0x342e5: 0x6c98a020, 0x342e6: 0x6c98a220, 0x342e7: 0x6c98a420,\n\t0x342e8: 0x6cc3ac20, 0x342e9: 0x6cc3ae20, 0x342ea: 0x6cc3b020, 0x342eb: 0x6cc3b220,\n\t0x342ec: 0x6cc3b420, 0x342ed: 0x6cc3b620, 0x342ee: 0x6cc3b820, 0x342ef: 0x6cc3ba20,\n\t0x342f0: 0x6cc3bc20, 0x342f1: 0x6cc3be20, 0x342f2: 0x6cc3c020, 0x342f3: 0x6cc3c220,\n\t0x342f4: 0x6cc3c420, 0x342f5: 0x6cc3c620, 0x342f6: 0x6cc3c820, 0x342f7: 0x6cc3ca20,\n\t0x342f8: 0x6cc3cc20, 0x342f9: 0x6cc3ce20, 0x342fa: 0x6cc3d020, 0x342fb: 0x6cc3d220,\n\t0x342fc: 0x6cc3d420, 0x342fd: 0x6cc3d620, 0x342fe: 0x6cc3d820, 0x342ff: 0x6cc3da20,\n\t// Block 0xd0c, offset 0x34300\n\t0x34300: 0x6cc3dc20, 0x34301: 0x6cc3de20, 0x34302: 0x6cc3e020, 0x34303: 0x6cc3e220,\n\t0x34304: 0x6cc3e420, 0x34305: 0x6cc3e620, 0x34306: 0x6cc3e820, 0x34307: 0x6cc3ea20,\n\t0x34308: 0x6cc3ec20, 0x34309: 0x6cc3ee20, 0x3430a: 0x6cc3f020, 0x3430b: 0x6cc3f220,\n\t0x3430c: 0x6cc3f420, 0x3430d: 0x6cc3f620, 0x3430e: 0x6cc3f820, 0x3430f: 0x6cc3fa20,\n\t0x34310: 0x6cc3fc20, 0x34311: 0x6cc3fe20, 0x34312: 0x6cc40020, 0x34313: 0x6cc40220,\n\t0x34314: 0x6cc40420, 0x34315: 0x6cc40620, 0x34316: 0x6cc40820, 0x34317: 0x6cc40a20,\n\t0x34318: 0x6cc40c20, 0x34319: 0x6cc40e20, 0x3431a: 0x6cc41020, 0x3431b: 0x6cc41220,\n\t0x3431c: 0x6cc41420, 0x3431d: 0x6cc41620, 0x3431e: 0x6cc41820, 0x3431f: 0x6cc41a20,\n\t0x34320: 0x6cc41c20, 0x34321: 0x6cc41e20, 0x34322: 0x6cc42020, 0x34323: 0x6cc42220,\n\t0x34324: 0x6cc42420, 0x34325: 0x6cc42620, 0x34326: 0x6cc42820, 0x34327: 0x6cc42a20,\n\t0x34328: 0x6cc42c20, 0x34329: 0x6cc42e20, 0x3432a: 0x6cc43020, 0x3432b: 0x6cc43220,\n\t0x3432c: 0x6cc43420, 0x3432d: 0x6cc43620, 0x3432e: 0x6cc43820, 0x3432f: 0x6cc43a20,\n\t0x34330: 0x6cc43c20, 0x34331: 0x6cc43e20, 0x34332: 0x6cc44020, 0x34333: 0x6cc44220,\n\t0x34334: 0x6cc44420, 0x34335: 0x6cc44620, 0x34336: 0x6cc44820, 0x34337: 0x6cc44a20,\n\t0x34338: 0x6cc44c20, 0x34339: 0x6cc44e20, 0x3433a: 0x6cc45020, 0x3433b: 0x6cc45220,\n\t0x3433c: 0x6cc45420, 0x3433d: 0x6cc45620, 0x3433e: 0x6cc45820, 0x3433f: 0x6cc45a20,\n\t// Block 0xd0d, offset 0x34340\n\t0x34340: 0x6cc45c20, 0x34341: 0x6cc45e20, 0x34342: 0x6cc46020, 0x34343: 0x6cc46220,\n\t0x34344: 0x6cc46420, 0x34345: 0x6cc46620, 0x34346: 0x6cc46820, 0x34347: 0x6cc46a20,\n\t0x34348: 0x6cc46c20, 0x34349: 0x6cc46e20, 0x3434a: 0x6cc47020, 0x3434b: 0x6cc47220,\n\t0x3434c: 0x6cc47420, 0x3434d: 0x6cf2b620, 0x3434e: 0x6cf2b820, 0x3434f: 0x6cf2ba20,\n\t0x34350: 0x6cf2bc20, 0x34351: 0x6cf2be20, 0x34352: 0x6cf2c020, 0x34353: 0x6cf2c220,\n\t0x34354: 0x6cf2c420, 0x34355: 0x6cf2c620, 0x34356: 0x6cf2c820, 0x34357: 0x6cf2ca20,\n\t0x34358: 0x6cf2cc20, 0x34359: 0x6cf2ce20, 0x3435a: 0x6cf2d020, 0x3435b: 0x6cf2d220,\n\t0x3435c: 0x6cf2d420, 0x3435d: 0x6cf2d620, 0x3435e: 0x6cf2d820, 0x3435f: 0x6cf2da20,\n\t0x34360: 0x6cf2dc20, 0x34361: 0x6cf2de20, 0x34362: 0x6cf2e020, 0x34363: 0x6cf2e220,\n\t0x34364: 0x6cf2e420, 0x34365: 0x6cf2e620, 0x34366: 0x6cf2e820, 0x34367: 0x6cf2ea20,\n\t0x34368: 0x6cf2ec20, 0x34369: 0x6cf2ee20, 0x3436a: 0x6cf2f020, 0x3436b: 0x6cf2f220,\n\t0x3436c: 0x6cf2f420, 0x3436d: 0x6cf2f620, 0x3436e: 0x6cf2f820, 0x3436f: 0x6cf2fa20,\n\t0x34370: 0x6cf2fc20, 0x34371: 0x6cf2fe20, 0x34372: 0x6cf30020, 0x34373: 0x6cf30220,\n\t0x34374: 0x6cf30420, 0x34375: 0x6cf30620, 0x34376: 0x6cf30820, 0x34377: 0x6cf30a20,\n\t0x34378: 0x6cf30c20, 0x34379: 0x6cf30e20, 0x3437a: 0x6cf31020, 0x3437b: 0x6cf31220,\n\t0x3437c: 0x6cf31420, 0x3437d: 0x6cf31620, 0x3437e: 0x6cf31820, 0x3437f: 0x6cf31a20,\n\t// Block 0xd0e, offset 0x34380\n\t0x34380: 0x6cf31c20, 0x34381: 0x6cf31e20, 0x34382: 0x6cf32020, 0x34383: 0x6cf32220,\n\t0x34384: 0x6cf32420, 0x34385: 0x6cf32620, 0x34386: 0x6cf32820, 0x34387: 0x6cf32a20,\n\t0x34388: 0x6cf32c20, 0x34389: 0x6cf32e20, 0x3438a: 0x6cf33020, 0x3438b: 0x6cf33220,\n\t0x3438c: 0x6cf33420, 0x3438d: 0x6cf33620, 0x3438e: 0x6cf33820, 0x3438f: 0x6cf33a20,\n\t0x34390: 0x6cf33c20, 0x34391: 0x6cf33e20, 0x34392: 0x6cf34020, 0x34393: 0x6cf34220,\n\t0x34394: 0x6cf34420, 0x34395: 0x6cf34620, 0x34396: 0x6cf34820, 0x34397: 0x6cf34a20,\n\t0x34398: 0x6cf34c20, 0x34399: 0x6cf34e20, 0x3439a: 0x6cf35020, 0x3439b: 0x6cf35220,\n\t0x3439c: 0x6cf35420, 0x3439d: 0x6cf35620, 0x3439e: 0x6cf35820, 0x3439f: 0x6cf35a20,\n\t0x343a0: 0x6d227c20, 0x343a1: 0x6d227e20, 0x343a2: 0x6d228020, 0x343a3: 0x6d228220,\n\t0x343a4: 0x6d228420, 0x343a5: 0x6d228620, 0x343a6: 0x6d228820, 0x343a7: 0x6d228a20,\n\t0x343a8: 0x6d228c20, 0x343a9: 0x6d228e20, 0x343aa: 0x6d229020, 0x343ab: 0x6d229220,\n\t0x343ac: 0x6d229420, 0x343ad: 0x6d229620, 0x343ae: 0x6d229820, 0x343af: 0x6d229a20,\n\t0x343b0: 0x6d229c20, 0x343b1: 0x6d229e20, 0x343b2: 0x6d22a020, 0x343b3: 0x6d22a220,\n\t0x343b4: 0x6d22a420, 0x343b5: 0x6d22a620, 0x343b6: 0x6d22a820, 0x343b7: 0x6d22aa20,\n\t0x343b8: 0x6d22ac20, 0x343b9: 0x6d22ae20, 0x343ba: 0x6d22b020, 0x343bb: 0x6d22b220,\n\t0x343bc: 0x6d22b420, 0x343bd: 0x6d22b620, 0x343be: 0x6d22b820, 0x343bf: 0x6d22ba20,\n\t// Block 0xd0f, offset 0x343c0\n\t0x343c0: 0x6d22bc20, 0x343c1: 0x6d22be20, 0x343c2: 0x6d22c020, 0x343c3: 0x6d22c220,\n\t0x343c4: 0x6d22c420, 0x343c5: 0x6d22c620, 0x343c6: 0x6d22c820, 0x343c7: 0x6d22ca20,\n\t0x343c8: 0x6d22cc20, 0x343c9: 0x6d22ce20, 0x343ca: 0x6d22d020, 0x343cb: 0x6d22d220,\n\t0x343cc: 0x6d22d420, 0x343cd: 0x6d22d620, 0x343ce: 0x6d22d820, 0x343cf: 0x6d22da20,\n\t0x343d0: 0x6d22dc20, 0x343d1: 0x6d22de20, 0x343d2: 0x6d22e020, 0x343d3: 0x6d22e220,\n\t0x343d4: 0x6d22e420, 0x343d5: 0x6d22e620, 0x343d6: 0x6d22e820, 0x343d7: 0x6d22ea20,\n\t0x343d8: 0x6d22ec20, 0x343d9: 0x6d22ee20, 0x343da: 0x6d22f020, 0x343db: 0x6d22f220,\n\t0x343dc: 0x6d22f420, 0x343dd: 0x6d22f620, 0x343de: 0x6d22f820, 0x343df: 0x6d22fa20,\n\t0x343e0: 0x6d22fc20, 0x343e1: 0x6d22fe20, 0x343e2: 0x6d230020, 0x343e3: 0x6d230220,\n\t0x343e4: 0x6d230420, 0x343e5: 0x6d230620, 0x343e6: 0x6d230820, 0x343e7: 0x6d230a20,\n\t0x343e8: 0x6d230c20, 0x343e9: 0x6d230e20, 0x343ea: 0x6d231020, 0x343eb: 0x6d231220,\n\t0x343ec: 0x6d231420, 0x343ed: 0x6d231620, 0x343ee: 0x6d231820, 0x343ef: 0x6d231a20,\n\t0x343f0: 0x6d231c20, 0x343f1: 0x6d4ff020, 0x343f2: 0x6d4ff220, 0x343f3: 0x6d4ff420,\n\t0x343f4: 0x6d4ff620, 0x343f5: 0x6d4ff820, 0x343f6: 0x6d4ffa20, 0x343f7: 0x6d4ffc20,\n\t0x343f8: 0x6d4ffe20, 0x343f9: 0x6d500020, 0x343fa: 0x6d500220, 0x343fb: 0x6d500420,\n\t0x343fc: 0x6d500620, 0x343fd: 0x6d500820, 0x343fe: 0x6d500a20, 0x343ff: 0x6d500c20,\n\t// Block 0xd10, offset 0x34400\n\t0x34400: 0x6d500e20, 0x34401: 0x6d501020, 0x34402: 0x6d501220, 0x34403: 0x6d501420,\n\t0x34404: 0x6d501620, 0x34405: 0x6d501820, 0x34406: 0x6d501a20, 0x34407: 0x6d501c20,\n\t0x34408: 0x6d501e20, 0x34409: 0x6d502020, 0x3440a: 0x6d502220, 0x3440b: 0x6d502420,\n\t0x3440c: 0x6d502620, 0x3440d: 0x6d502820, 0x3440e: 0x6d502a20, 0x3440f: 0x6d502c20,\n\t0x34410: 0x6d502e20, 0x34411: 0x6d503020, 0x34412: 0x6d503220, 0x34413: 0x6d503420,\n\t0x34414: 0x6d503620, 0x34415: 0x6d503820, 0x34416: 0x6d503a20, 0x34417: 0x6d503c20,\n\t0x34418: 0x6d503e20, 0x34419: 0x6d504020, 0x3441a: 0x6d504220, 0x3441b: 0x6d504420,\n\t0x3441c: 0x6d504620, 0x3441d: 0x6d504820, 0x3441e: 0x6d504a20, 0x3441f: 0x6d504c20,\n\t0x34420: 0x6d504e20, 0x34421: 0x6d505020, 0x34422: 0x6d505220, 0x34423: 0x6d505420,\n\t0x34424: 0x6d505620, 0x34425: 0x6d505820, 0x34426: 0x6d505a20, 0x34427: 0x6d505c20,\n\t0x34428: 0x6d505e20, 0x34429: 0x6d506020, 0x3442a: 0x6d506220, 0x3442b: 0x6d506420,\n\t0x3442c: 0x6d506620, 0x3442d: 0x6d506820, 0x3442e: 0x6d506a20, 0x3442f: 0x6d506c20,\n\t0x34430: 0x6d506e20, 0x34431: 0x6d507020, 0x34432: 0x6d507220, 0x34433: 0x6d507420,\n\t0x34434: 0x6d507620, 0x34435: 0x6d507820, 0x34436: 0x6d507a20, 0x34437: 0x6d507c20,\n\t0x34438: 0x6d507e20, 0x34439: 0x6d508020, 0x3443a: 0x6d508220, 0x3443b: 0x6d508420,\n\t0x3443c: 0x6d508620, 0x3443d: 0x6d508820, 0x3443e: 0x6d508a20, 0x3443f: 0x6d508c20,\n\t// Block 0xd11, offset 0x34440\n\t0x34440: 0x6d508e20, 0x34441: 0x6d509020, 0x34442: 0x6d509220, 0x34443: 0x6d509420,\n\t0x34444: 0x6d509620, 0x34445: 0x6d509820, 0x34446: 0x6d509a20, 0x34447: 0x6d509c20,\n\t0x34448: 0x6d509e20, 0x34449: 0x6d50a020, 0x3444a: 0x6d50a220, 0x3444b: 0x6d50a420,\n\t0x3444c: 0x6d50a620, 0x3444d: 0x6d50a820, 0x3444e: 0x6d50aa20, 0x3444f: 0x6d50ac20,\n\t0x34450: 0x6d50ae20, 0x34451: 0x6d50b020, 0x34452: 0x6d7c0220, 0x34453: 0x6d7c0420,\n\t0x34454: 0x6d7c0620, 0x34455: 0x6d7c0820, 0x34456: 0x6d7c0a20, 0x34457: 0x6d7c0c20,\n\t0x34458: 0x6d7c0e20, 0x34459: 0x6d7c1020, 0x3445a: 0x6d7c1220, 0x3445b: 0x6d7c1420,\n\t0x3445c: 0x6d7c1620, 0x3445d: 0x6d7c1820, 0x3445e: 0x6d7c1a20, 0x3445f: 0x6d7c1c20,\n\t0x34460: 0x6d7c1e20, 0x34461: 0x6d7c2020, 0x34462: 0x6d7c2220, 0x34463: 0x6d7c2420,\n\t0x34464: 0x6d7c2620, 0x34465: 0x6d7c2820, 0x34466: 0x6d7c2a20, 0x34467: 0x6d7c2c20,\n\t0x34468: 0x6d7c2e20, 0x34469: 0x6d7c3020, 0x3446a: 0x6d7c3220, 0x3446b: 0x6d7c3420,\n\t0x3446c: 0x6d7c3620, 0x3446d: 0x6d7c3820, 0x3446e: 0x6d7c3a20, 0x3446f: 0x6d7c3c20,\n\t0x34470: 0x6d7c3e20, 0x34471: 0x6d7c4020, 0x34472: 0x6d7c4220, 0x34473: 0x6d7c4420,\n\t0x34474: 0x6d7c4620, 0x34475: 0x6d7c4820, 0x34476: 0x6d7c4a20, 0x34477: 0x6d7c4c20,\n\t0x34478: 0x6d7c4e20, 0x34479: 0x6d7c5020, 0x3447a: 0x6d7c5220, 0x3447b: 0x6d7c5420,\n\t0x3447c: 0x6d7c5620, 0x3447d: 0x6d7c5820, 0x3447e: 0x6d7c5a20, 0x3447f: 0x6d7c5c20,\n\t// Block 0xd12, offset 0x34480\n\t0x34480: 0x6d7c5e20, 0x34481: 0x6d7c6020, 0x34482: 0x6d7c6220, 0x34483: 0x6d7c6420,\n\t0x34484: 0x6d7c6620, 0x34485: 0x6d7c6820, 0x34486: 0x6d7c6a20, 0x34487: 0x6d7c6c20,\n\t0x34488: 0x6d7c6e20, 0x34489: 0x6d7c7020, 0x3448a: 0x6d7c7220, 0x3448b: 0x6d7c7420,\n\t0x3448c: 0x6d7c7620, 0x3448d: 0x6d7c7820, 0x3448e: 0x6da40820, 0x3448f: 0x6da40a20,\n\t0x34490: 0x6da40c20, 0x34491: 0x6da40e20, 0x34492: 0x6da41020, 0x34493: 0x6da41220,\n\t0x34494: 0x6da41420, 0x34495: 0x6da41620, 0x34496: 0x6da41820, 0x34497: 0x6da41a20,\n\t0x34498: 0x6da41c20, 0x34499: 0x6da41e20, 0x3449a: 0x6da42020, 0x3449b: 0x6da42220,\n\t0x3449c: 0x6da42420, 0x3449d: 0x6da42620, 0x3449e: 0x6da42820, 0x3449f: 0x6da42a20,\n\t0x344a0: 0x6da42c20, 0x344a1: 0x6da42e20, 0x344a2: 0x6da43020, 0x344a3: 0x6da43220,\n\t0x344a4: 0x6da43420, 0x344a5: 0x6da43620, 0x344a6: 0x6da43820, 0x344a7: 0x6da43a20,\n\t0x344a8: 0x6da43c20, 0x344a9: 0x6da43e20, 0x344aa: 0x6da44020, 0x344ab: 0x6da44220,\n\t0x344ac: 0x6da44420, 0x344ad: 0x6da44620, 0x344ae: 0x6da44820, 0x344af: 0x6da44a20,\n\t0x344b0: 0x6da44c20, 0x344b1: 0x6da44e20, 0x344b2: 0x6da45020, 0x344b3: 0x6da45220,\n\t0x344b4: 0x6da45420, 0x344b5: 0x6da45620, 0x344b6: 0x6da45820, 0x344b7: 0x6da45a20,\n\t0x344b8: 0x6da45c20, 0x344b9: 0x6da45e20, 0x344ba: 0x6da46020, 0x344bb: 0x6dc59e20,\n\t0x344bc: 0x6dc5a020, 0x344bd: 0x6dc5a220, 0x344be: 0x6dc5a420, 0x344bf: 0x6dc5a620,\n\t// Block 0xd13, offset 0x344c0\n\t0x344c0: 0x6dc5a820, 0x344c1: 0x6dc5aa20, 0x344c2: 0x6dc5ac20, 0x344c3: 0x6dc5ae20,\n\t0x344c4: 0x6dc5b020, 0x344c5: 0x6dc5b220, 0x344c6: 0x6dc5b420, 0x344c7: 0x6dc5b620,\n\t0x344c8: 0x6dc5b820, 0x344c9: 0x6dc5ba20, 0x344ca: 0x6dc5bc20, 0x344cb: 0x6dc5be20,\n\t0x344cc: 0x6dc5c020, 0x344cd: 0x6dc5c220, 0x344ce: 0x6dc5c420, 0x344cf: 0x6dc5c620,\n\t0x344d0: 0x6dc5c820, 0x344d1: 0x6dc5ca20, 0x344d2: 0x6dc5cc20, 0x344d3: 0x6dc5ce20,\n\t0x344d4: 0x6dc5d020, 0x344d5: 0x6dc5d220, 0x344d6: 0x6dc5d420, 0x344d7: 0x6dc5d620,\n\t0x344d8: 0x6dc5d820, 0x344d9: 0x6dc5da20, 0x344da: 0x6dc5dc20, 0x344db: 0x6dc5de20,\n\t0x344dc: 0x6dc5e020, 0x344dd: 0x6dc5e220, 0x344de: 0x6dc5e420, 0x344df: 0x6dc5e620,\n\t0x344e0: 0x6dc5e820, 0x344e1: 0x6dc5ea20, 0x344e2: 0x6dc5ec20, 0x344e3: 0x6dc5ee20,\n\t0x344e4: 0x6dc5f020, 0x344e5: 0x6dc5f220, 0x344e6: 0x6de29020, 0x344e7: 0x6de29220,\n\t0x344e8: 0x6de29420, 0x344e9: 0x6de29620, 0x344ea: 0x6de29820, 0x344eb: 0x6de29a20,\n\t0x344ec: 0x6de29c20, 0x344ed: 0x6de29e20, 0x344ee: 0x6de2a020, 0x344ef: 0x6de2a220,\n\t0x344f0: 0x6de2a420, 0x344f1: 0x6de2a620, 0x344f2: 0x6de2a820, 0x344f3: 0x6de2aa20,\n\t0x344f4: 0x6de2ac20, 0x344f5: 0x6de2ae20, 0x344f6: 0x6de2b020, 0x344f7: 0x6de2b220,\n\t0x344f8: 0x6de2b420, 0x344f9: 0x6de2b620, 0x344fa: 0x6de2b820, 0x344fb: 0x6de2ba20,\n\t0x344fc: 0x6de2bc20, 0x344fd: 0x6de2be20, 0x344fe: 0x6de2c020, 0x344ff: 0x6de2c220,\n\t// Block 0xd14, offset 0x34500\n\t0x34500: 0x6de2c420, 0x34501: 0x6de2c620, 0x34502: 0x6de2c820, 0x34503: 0x6de2ca20,\n\t0x34504: 0x6de2cc20, 0x34505: 0x6de2ce20, 0x34506: 0x6de2d020, 0x34507: 0x6de2d220,\n\t0x34508: 0x6de2d420, 0x34509: 0x6de2d620, 0x3450a: 0x6de2d820, 0x3450b: 0x6dfa3a20,\n\t0x3450c: 0x6dfa3c20, 0x3450d: 0x6dfa3e20, 0x3450e: 0x6dfa4020, 0x3450f: 0x6dfa4220,\n\t0x34510: 0x6dfa4420, 0x34511: 0x6dfa4620, 0x34512: 0x6dfa4820, 0x34513: 0x6dfa4a20,\n\t0x34514: 0x6dfa4c20, 0x34515: 0x6dfa4e20, 0x34516: 0x6dfa5020, 0x34517: 0x6e0dc620,\n\t0x34518: 0x6e0dc820, 0x34519: 0x6e0dca20, 0x3451a: 0x6e0dcc20, 0x3451b: 0x6e0dce20,\n\t0x3451c: 0x6e0dd020, 0x3451d: 0x6e0dd220, 0x3451e: 0x6e0dd420, 0x3451f: 0x6e0dd620,\n\t0x34520: 0x6e0dd820, 0x34521: 0x6e0dda20, 0x34522: 0x6e0ddc20, 0x34523: 0x6e0dde20,\n\t0x34524: 0x6e0de020, 0x34525: 0x6e1d3a20, 0x34526: 0x6e1d3c20, 0x34527: 0x6e1d3e20,\n\t0x34528: 0x6e1d4020, 0x34529: 0x6e1d4220, 0x3452a: 0x6e1d4420, 0x3452b: 0x6e1d4620,\n\t0x3452c: 0x6e1d4820, 0x3452d: 0x6e1d4a20, 0x3452e: 0x6e1d4c20, 0x3452f: 0x6e28d820,\n\t0x34530: 0x6e28da20, 0x34531: 0x6e28dc20, 0x34532: 0x6e28de20, 0x34533: 0x6e28e020,\n\t0x34534: 0x6e28e220, 0x34535: 0x6e28e420, 0x34536: 0x6e28e620, 0x34537: 0x6e28e820,\n\t0x34538: 0x6e28ea20, 0x34539: 0x6e28ec20, 0x3453a: 0x6e28ee20, 0x3453b: 0x6e321620,\n\t0x3453c: 0x6e321820, 0x3453d: 0x6e321a20, 0x3453e: 0x6e321c20, 0x3453f: 0x6e321e20,\n\t// Block 0xd15, offset 0x34540\n\t0x34540: 0x6e322020, 0x34541: 0x6e322220, 0x34542: 0x6e322420, 0x34543: 0x6e3d2820,\n\t0x34544: 0x6e3d2a20, 0x34545: 0x6e403e20, 0x34546: 0x6e404020, 0x34547: 0x6e404220,\n\t0x34548: 0x6e429a20, 0x34549: 0x6e429c20, 0x3454a: 0x6e451c20, 0x3454b: 0x6e45c020,\n\t0x3454c: 0x6c092620, 0x3454d: 0x6c092820, 0x3454e: 0x6c11c420, 0x3454f: 0x6c11c620,\n\t0x34550: 0x6c11c820, 0x34551: 0x6c11ca20, 0x34552: 0x6c200620, 0x34553: 0x6c200820,\n\t0x34554: 0x6c200a20, 0x34555: 0x6c200c20, 0x34556: 0x6c200e20, 0x34557: 0x6c201020,\n\t0x34558: 0x6c201220, 0x34559: 0x6c201420, 0x3455a: 0x6c33ea20, 0x3455b: 0x6c33ec20,\n\t0x3455c: 0x6c33ee20, 0x3455d: 0x6c33f020, 0x3455e: 0x6c33f220, 0x3455f: 0x6c33f420,\n\t0x34560: 0x6c33f620, 0x34561: 0x6c33f820, 0x34562: 0x6c33fa20, 0x34563: 0x6c33fc20,\n\t0x34564: 0x6c33fe20, 0x34565: 0x6c340020, 0x34566: 0x6c4ea220, 0x34567: 0x6c4ea420,\n\t0x34568: 0x6c4ea620, 0x34569: 0x6c4ea820, 0x3456a: 0x6c4eaa20, 0x3456b: 0x6c4eac20,\n\t0x3456c: 0x6c4eae20, 0x3456d: 0x6c4eb020, 0x3456e: 0x6c4eb220, 0x3456f: 0x6c4eb420,\n\t0x34570: 0x6c4eb620, 0x34571: 0x6c4eb820, 0x34572: 0x6c4eba20, 0x34573: 0x6c4ebc20,\n\t0x34574: 0x6c4ebe20, 0x34575: 0x6c4ec020, 0x34576: 0x6c4ec220, 0x34577: 0x6c709e20,\n\t0x34578: 0x6c70a020, 0x34579: 0x6c70a220, 0x3457a: 0x6c70a420, 0x3457b: 0x6c70a620,\n\t0x3457c: 0x6c70a820, 0x3457d: 0x6c70aa20, 0x3457e: 0x6c70ac20, 0x3457f: 0x6c98c020,\n\t// Block 0xd16, offset 0x34580\n\t0x34580: 0x6c98c220, 0x34581: 0x6c98c420, 0x34582: 0x6c98c620, 0x34583: 0x6c98c820,\n\t0x34584: 0x6c98ca20, 0x34585: 0x6c98cc20, 0x34586: 0x6c98ce20, 0x34587: 0x6c98d020,\n\t0x34588: 0x6cc49420, 0x34589: 0x6cc49620, 0x3458a: 0x6cc49820, 0x3458b: 0x6cc49a20,\n\t0x3458c: 0x6cc49c20, 0x3458d: 0x6cc49e20, 0x3458e: 0x6cc4a020, 0x3458f: 0x6cc4a220,\n\t0x34590: 0x6cc4a420, 0x34591: 0x6cc4a620, 0x34592: 0x6cc4a820, 0x34593: 0x6cc4aa20,\n\t0x34594: 0x6cf38420, 0x34595: 0x6cf38620, 0x34596: 0x6cf38820, 0x34597: 0x6cf38a20,\n\t0x34598: 0x6cf38c20, 0x34599: 0x6cf38e20, 0x3459a: 0x6cf39020, 0x3459b: 0x6cf39220,\n\t0x3459c: 0x6cf39420, 0x3459d: 0x6cf39620, 0x3459e: 0x6cf39820, 0x3459f: 0x6cf39a20,\n\t0x345a0: 0x6cf39c20, 0x345a1: 0x6cf39e20, 0x345a2: 0x6d234220, 0x345a3: 0x6d234420,\n\t0x345a4: 0x6d234620, 0x345a5: 0x6d234820, 0x345a6: 0x6d234a20, 0x345a7: 0x6d234c20,\n\t0x345a8: 0x6d50c820, 0x345a9: 0x6d234e20, 0x345aa: 0x6d235020, 0x345ab: 0x6d235220,\n\t0x345ac: 0x6d235420, 0x345ad: 0x6d235620, 0x345ae: 0x6d235820, 0x345af: 0x6d235a20,\n\t0x345b0: 0x6d235c20, 0x345b1: 0x6d235e20, 0x345b2: 0x6d50ca20, 0x345b3: 0x6d50cc20,\n\t0x345b4: 0x6d50ce20, 0x345b5: 0x6d50d020, 0x345b6: 0x6d50d220, 0x345b7: 0x6d50d420,\n\t0x345b8: 0x6d50d620, 0x345b9: 0x6d50d820, 0x345ba: 0x6d50da20, 0x345bb: 0x6d50dc20,\n\t0x345bc: 0x6d50de20, 0x345bd: 0x6d50e020, 0x345be: 0x6d50e220, 0x345bf: 0x6d50e420,\n\t// Block 0xd17, offset 0x345c0\n\t0x345c0: 0x6d50e620, 0x345c1: 0x6d50e820, 0x345c2: 0x6d50ea20, 0x345c3: 0x6d50ec20,\n\t0x345c4: 0x6d50ee20, 0x345c5: 0x6d50f020, 0x345c6: 0x6d50f220, 0x345c7: 0x6d7c9420,\n\t0x345c8: 0x6d7c9620, 0x345c9: 0x6d7c9820, 0x345ca: 0x6d7c9a20, 0x345cb: 0x6d7c9c20,\n\t0x345cc: 0x6d7c9e20, 0x345cd: 0x6d7ca020, 0x345ce: 0x6d7ca220, 0x345cf: 0x6d7ca420,\n\t0x345d0: 0x6d784620, 0x345d1: 0x6d7ca620, 0x345d2: 0x6d7ca820, 0x345d3: 0x6da46e20,\n\t0x345d4: 0x6da47020, 0x345d5: 0x6da47220, 0x345d6: 0x6da47420, 0x345d7: 0x6da47620,\n\t0x345d8: 0x6dc60220, 0x345d9: 0x6dc60420, 0x345da: 0x6de2e020, 0x345db: 0x6de2e220,\n\t0x345dc: 0x6de2e420, 0x345dd: 0x6de2e620, 0x345de: 0x6dfa5620, 0x345df: 0x6dfa5820,\n\t0x345e0: 0x6dfa5a20, 0x345e1: 0x6e0de620, 0x345e2: 0x6e0de820, 0x345e3: 0x6e0dea20,\n\t0x345e4: 0x6c092e20, 0x345e5: 0x6c093020, 0x345e6: 0x6c11ce20, 0x345e7: 0x6c11d020,\n\t0x345e8: 0x6c11d220, 0x345e9: 0x6c11d420, 0x345ea: 0x6c201e20, 0x345eb: 0x6c202020,\n\t0x345ec: 0x6c202220, 0x345ed: 0x6c202420, 0x345ee: 0x6c202620, 0x345ef: 0x6c340e20,\n\t0x345f0: 0x6c341020, 0x345f1: 0x6c341220, 0x345f2: 0x6c341420, 0x345f3: 0x6c341620,\n\t0x345f4: 0x6c341820, 0x345f5: 0x6c341a20, 0x345f6: 0x6c4ed220, 0x345f7: 0x6c4ed420,\n\t0x345f8: 0x6c4ed620, 0x345f9: 0x6c4ed820, 0x345fa: 0x6c4eda20, 0x345fb: 0x6c4edc20,\n\t0x345fc: 0x6c4ede20, 0x345fd: 0x6c4ee020, 0x345fe: 0x6c4ee220, 0x345ff: 0x6c4ee420,\n\t// Block 0xd18, offset 0x34600\n\t0x34600: 0x6c4ee620, 0x34601: 0x6c4ee820, 0x34602: 0x6c4eea20, 0x34603: 0x6c4eec20,\n\t0x34604: 0x6c4eee20, 0x34605: 0x6c70ba20, 0x34606: 0x6c70bc20, 0x34607: 0x6c70be20,\n\t0x34608: 0x6c70c020, 0x34609: 0x6c70c220, 0x3460a: 0x6c70c420, 0x3460b: 0x6c70c620,\n\t0x3460c: 0x6c70c820, 0x3460d: 0x6c98d820, 0x3460e: 0x6c98da20, 0x3460f: 0x6c98dc20,\n\t0x34610: 0x6c98de20, 0x34611: 0x6cc4b220, 0x34612: 0x6cc4b420, 0x34613: 0x6cc4b620,\n\t0x34614: 0x6cc4b820, 0x34615: 0x6cc4ba20, 0x34616: 0x6cf3a220, 0x34617: 0x6cf3a420,\n\t0x34618: 0x6d236220, 0x34619: 0x6d236420, 0x3461a: 0x6d236620, 0x3461b: 0x6d236820,\n\t0x3461c: 0x6d50f420, 0x3461d: 0x6d50f620, 0x3461e: 0x6d50f820, 0x3461f: 0x6d7cb020,\n\t0x34620: 0x6da47820, 0x34621: 0x6dc60620, 0x34622: 0x6e0dec20, 0x34623: 0x6e28f220,\n\t0x34624: 0x6e28f420, 0x34625: 0x6c047820, 0x34626: 0x6c047a20, 0x34627: 0x6c047c20,\n\t0x34628: 0x6c094620, 0x34629: 0x6c094820, 0x3462a: 0x6c094a20, 0x3462b: 0x6c094c20,\n\t0x3462c: 0x6c094e20, 0x3462d: 0x6c120620, 0x3462e: 0x6c120820, 0x3462f: 0x6c120a20,\n\t0x34630: 0x6c120c20, 0x34631: 0x6c120e20, 0x34632: 0x6c121020, 0x34633: 0x6c121220,\n\t0x34634: 0x6c121420, 0x34635: 0x6c121620, 0x34636: 0x6c121820, 0x34637: 0x6c121a20,\n\t0x34638: 0x6c121c20, 0x34639: 0x6c121e20, 0x3463a: 0x6c122020, 0x3463b: 0x6c122220,\n\t0x3463c: 0x6c122420, 0x3463d: 0x6c122620, 0x3463e: 0x6c122820, 0x3463f: 0x6c122a20,\n\t// Block 0xd19, offset 0x34640\n\t0x34640: 0x6c122c20, 0x34641: 0x6c122e20, 0x34642: 0x6c123020, 0x34643: 0x6c20a820,\n\t0x34644: 0x6c20aa20, 0x34645: 0x6c20ac20, 0x34646: 0x6c20ae20, 0x34647: 0x6c20b020,\n\t0x34648: 0x6c20b220, 0x34649: 0x6c20b420, 0x3464a: 0x6c20b620, 0x3464b: 0x6c20b820,\n\t0x3464c: 0x6c20ba20, 0x3464d: 0x6c20bc20, 0x3464e: 0x6c20be20, 0x3464f: 0x6c20c020,\n\t0x34650: 0x6c20c220, 0x34651: 0x6c20c420, 0x34652: 0x6c20c620, 0x34653: 0x6c20c820,\n\t0x34654: 0x6c20ca20, 0x34655: 0x6c20cc20, 0x34656: 0x6c20ce20, 0x34657: 0x6c20d020,\n\t0x34658: 0x6c20d220, 0x34659: 0x6c20d420, 0x3465a: 0x6c20d620, 0x3465b: 0x6c20d820,\n\t0x3465c: 0x6c20da20, 0x3465d: 0x6c20dc20, 0x3465e: 0x6c20de20, 0x3465f: 0x6c20e020,\n\t0x34660: 0x6c20e220, 0x34661: 0x6c20e420, 0x34662: 0x6c20e620, 0x34663: 0x6c20e820,\n\t0x34664: 0x6c20ea20, 0x34665: 0x6c20ec20, 0x34666: 0x6c20ee20, 0x34667: 0x6c20f020,\n\t0x34668: 0x6c20f220, 0x34669: 0x6c20f420, 0x3466a: 0x6c20f620, 0x3466b: 0x6c20f820,\n\t0x3466c: 0x6c20fa20, 0x3466d: 0x6c20fc20, 0x3466e: 0x6c20fe20, 0x3466f: 0x6c210020,\n\t0x34670: 0x6c210220, 0x34671: 0x6c210420, 0x34672: 0x6c210620, 0x34673: 0x6c210820,\n\t0x34674: 0x6c34be20, 0x34675: 0x6c34c020, 0x34676: 0x6c34c220, 0x34677: 0x6c34c420,\n\t0x34678: 0x6c34c620, 0x34679: 0x6c34c820, 0x3467a: 0x6c34ca20, 0x3467b: 0x6c34cc20,\n\t0x3467c: 0x6c34ce20, 0x3467d: 0x6c34d020, 0x3467e: 0x6c34d220, 0x3467f: 0x6c34d420,\n\t// Block 0xd1a, offset 0x34680\n\t0x34680: 0x6c34d620, 0x34681: 0x6c34d820, 0x34682: 0x6c34da20, 0x34683: 0x6c34dc20,\n\t0x34684: 0x6c34de20, 0x34685: 0x6c34e020, 0x34686: 0x6c34e220, 0x34687: 0x6c34e420,\n\t0x34688: 0x6c34e620, 0x34689: 0x6c34e820, 0x3468a: 0x6c34ea20, 0x3468b: 0x6c34ec20,\n\t0x3468c: 0x6c34ee20, 0x3468d: 0x6c34f020, 0x3468e: 0x6c34f220, 0x3468f: 0x6c34f420,\n\t0x34690: 0x6c34f620, 0x34691: 0x6c34f820, 0x34692: 0x6c34fa20, 0x34693: 0x6c34fc20,\n\t0x34694: 0x6c34fe20, 0x34695: 0x6c350020, 0x34696: 0x6c350220, 0x34697: 0x6c350420,\n\t0x34698: 0x6c350620, 0x34699: 0x6c350820, 0x3469a: 0x6c350a20, 0x3469b: 0x6c350c20,\n\t0x3469c: 0x6c350e20, 0x3469d: 0x6c351020, 0x3469e: 0x6c351220, 0x3469f: 0x6c351420,\n\t0x346a0: 0x6c351620, 0x346a1: 0x6c351820, 0x346a2: 0x6c351a20, 0x346a3: 0x6c351c20,\n\t0x346a4: 0x6c4f8020, 0x346a5: 0x6c4f8220, 0x346a6: 0x6c4f8420, 0x346a7: 0x6c4f8620,\n\t0x346a8: 0x6c4f8820, 0x346a9: 0x6c4f8a20, 0x346aa: 0x6c4f8c20, 0x346ab: 0x6c4f8e20,\n\t0x346ac: 0x6c4f9020, 0x346ad: 0x6c4f9220, 0x346ae: 0x6c4f9420, 0x346af: 0x6c4f9620,\n\t0x346b0: 0x6c4f9820, 0x346b1: 0x6c4f9a20, 0x346b2: 0x6c4f9c20, 0x346b3: 0x6c4f9e20,\n\t0x346b4: 0x6c4fa020, 0x346b5: 0x6c4fa220, 0x346b6: 0x6c4fa420, 0x346b7: 0x6c4fa620,\n\t0x346b8: 0x6c4fa820, 0x346b9: 0x6c4faa20, 0x346ba: 0x6c4fac20, 0x346bb: 0x6c4fae20,\n\t0x346bc: 0x6c4fb020, 0x346bd: 0x6c4fb220, 0x346be: 0x6c4fb420, 0x346bf: 0x6c4fb620,\n\t// Block 0xd1b, offset 0x346c0\n\t0x346c0: 0x6c4fb820, 0x346c1: 0x6c4fba20, 0x346c2: 0x6c4fbc20, 0x346c3: 0x6c4fbe20,\n\t0x346c4: 0x6c4fc020, 0x346c5: 0x6c4fc220, 0x346c6: 0x6c4fc420, 0x346c7: 0x6c4fc620,\n\t0x346c8: 0x6c4fc820, 0x346c9: 0x6c4fca20, 0x346ca: 0x6c4fcc20, 0x346cb: 0x6c4fce20,\n\t0x346cc: 0x6c4fd020, 0x346cd: 0x6c4fd220, 0x346ce: 0x6c4fd420, 0x346cf: 0x6c4fd620,\n\t0x346d0: 0x6c4fd820, 0x346d1: 0x6c4fda20, 0x346d2: 0x6c4fdc20, 0x346d3: 0x6c4fde20,\n\t0x346d4: 0x6c4fe020, 0x346d5: 0x6c4fe220, 0x346d6: 0x6c4fe420, 0x346d7: 0x6c4fe620,\n\t0x346d8: 0x6c4fe820, 0x346d9: 0x6c4fea20, 0x346da: 0x6c4fec20, 0x346db: 0x6c4fee20,\n\t0x346dc: 0x6c4ff020, 0x346dd: 0x6c4ff220, 0x346de: 0x6c4ff420, 0x346df: 0x6c4ff620,\n\t0x346e0: 0x6c4ff820, 0x346e1: 0x6c4ffa20, 0x346e2: 0x6c4ffc20, 0x346e3: 0x6c4ffe20,\n\t0x346e4: 0x6c500020, 0x346e5: 0x6c500220, 0x346e6: 0x6c500420, 0x346e7: 0x6c500620,\n\t0x346e8: 0x6c500820, 0x346e9: 0x6c500a20, 0x346ea: 0x6c500c20, 0x346eb: 0x6c500e20,\n\t0x346ec: 0x6c501020, 0x346ed: 0x6c501220, 0x346ee: 0x6c501420, 0x346ef: 0x6c716220,\n\t0x346f0: 0x6c716420, 0x346f1: 0x6c716620, 0x346f2: 0x6c716820, 0x346f3: 0x6c716a20,\n\t0x346f4: 0x6c716c20, 0x346f5: 0x6c716e20, 0x346f6: 0x6c717020, 0x346f7: 0x6c717220,\n\t0x346f8: 0x6c717420, 0x346f9: 0x6c717620, 0x346fa: 0x6c717820, 0x346fb: 0x6c717a20,\n\t0x346fc: 0x6c717c20, 0x346fd: 0x6c717e20, 0x346fe: 0x6c718020, 0x346ff: 0x6c718220,\n\t// Block 0xd1c, offset 0x34700\n\t0x34700: 0x6c718420, 0x34701: 0x6c718620, 0x34702: 0x6c718820, 0x34703: 0x6c718a20,\n\t0x34704: 0x6c718c20, 0x34705: 0x6c718e20, 0x34706: 0x6c719020, 0x34707: 0x6c719220,\n\t0x34708: 0x6c719420, 0x34709: 0x6c719620, 0x3470a: 0x6c719820, 0x3470b: 0x6c719a20,\n\t0x3470c: 0x6c719c20, 0x3470d: 0x6c719e20, 0x3470e: 0x6c71a020, 0x3470f: 0x6c71a220,\n\t0x34710: 0x6c71a420, 0x34711: 0x6c71a620, 0x34712: 0x6c71a820, 0x34713: 0x6c71aa20,\n\t0x34714: 0x6c71ac20, 0x34715: 0x6c71ae20, 0x34716: 0x6c71b020, 0x34717: 0x6c71b220,\n\t0x34718: 0x6c71b420, 0x34719: 0x6c71b620, 0x3471a: 0x6c71b820, 0x3471b: 0x6c71ba20,\n\t0x3471c: 0x6c71bc20, 0x3471d: 0x6c71be20, 0x3471e: 0x6c71c020, 0x3471f: 0x6c71c220,\n\t0x34720: 0x6c71c420, 0x34721: 0x6c71c620, 0x34722: 0x6c71c820, 0x34723: 0x6c71ca20,\n\t0x34724: 0x6c71cc20, 0x34725: 0x6c71ce20, 0x34726: 0x6c71d020, 0x34727: 0x6c71d220,\n\t0x34728: 0x6c71d420, 0x34729: 0x6c71d620, 0x3472a: 0x6c71d820, 0x3472b: 0x6c71da20,\n\t0x3472c: 0x6c71dc20, 0x3472d: 0x6c71de20, 0x3472e: 0x6c71e020, 0x3472f: 0x6c71e220,\n\t0x34730: 0x6c71e420, 0x34731: 0x6c71e620, 0x34732: 0x6c71e820, 0x34733: 0x6c71ea20,\n\t0x34734: 0x6c71ec20, 0x34735: 0x6c71ee20, 0x34736: 0x6c71f020, 0x34737: 0x6c71f220,\n\t0x34738: 0x6c71f420, 0x34739: 0x6c71f620, 0x3473a: 0x6c71f820, 0x3473b: 0x6c71fa20,\n\t0x3473c: 0x6c71fc20, 0x3473d: 0x6c71fe20, 0x3473e: 0x6c720020, 0x3473f: 0x6c720220,\n\t// Block 0xd1d, offset 0x34740\n\t0x34740: 0x6c720420, 0x34741: 0x6c99ac20, 0x34742: 0x6c99ae20, 0x34743: 0x6c99b020,\n\t0x34744: 0x6c99b220, 0x34745: 0x6c99b420, 0x34746: 0x6c99b620, 0x34747: 0x6c99b820,\n\t0x34748: 0x6c99ba20, 0x34749: 0x6c99bc20, 0x3474a: 0x6c99be20, 0x3474b: 0x6c99c020,\n\t0x3474c: 0x6c99c220, 0x3474d: 0x6c99c420, 0x3474e: 0x6c99c620, 0x3474f: 0x6c99c820,\n\t0x34750: 0x6c99ca20, 0x34751: 0x6c99cc20, 0x34752: 0x6c99ce20, 0x34753: 0x6c99d020,\n\t0x34754: 0x6c99d220, 0x34755: 0x6c99d420, 0x34756: 0x6c99d620, 0x34757: 0x6c99d820,\n\t0x34758: 0x6c99da20, 0x34759: 0x6c99dc20, 0x3475a: 0x6c99de20, 0x3475b: 0x6c99e020,\n\t0x3475c: 0x6c99e220, 0x3475d: 0x6c99e420, 0x3475e: 0x6c99e620, 0x3475f: 0x6c99e820,\n\t0x34760: 0x6c99ea20, 0x34761: 0x6c99ec20, 0x34762: 0x6c99ee20, 0x34763: 0x6c99f020,\n\t0x34764: 0x6c99f220, 0x34765: 0x6c99f420, 0x34766: 0x6c99f620, 0x34767: 0x6c99f820,\n\t0x34768: 0x6c99fa20, 0x34769: 0x6c99fc20, 0x3476a: 0x6c99fe20, 0x3476b: 0x6c9a0020,\n\t0x3476c: 0x6c9a0220, 0x3476d: 0x6c9a0420, 0x3476e: 0x6c9a0620, 0x3476f: 0x6c9a0820,\n\t0x34770: 0x6c9a0a20, 0x34771: 0x6c9a0c20, 0x34772: 0x6c9a0e20, 0x34773: 0x6c9a1020,\n\t0x34774: 0x6c9a1220, 0x34775: 0x6c9a1420, 0x34776: 0x6c9a1620, 0x34777: 0x6c9a1820,\n\t0x34778: 0x6c9a1a20, 0x34779: 0x6c9a1c20, 0x3477a: 0x6c9a1e20, 0x3477b: 0x6c9a2020,\n\t0x3477c: 0x6c9a2220, 0x3477d: 0x6c9a2420, 0x3477e: 0x6c9a2620, 0x3477f: 0x6c9a2820,\n\t// Block 0xd1e, offset 0x34780\n\t0x34780: 0x6c9a2a20, 0x34781: 0x6c9a2c20, 0x34782: 0x6c9a2e20, 0x34783: 0x6c9a3020,\n\t0x34784: 0x6c9a3220, 0x34785: 0x6c9a3420, 0x34786: 0x6c9a3620, 0x34787: 0x6c9a3820,\n\t0x34788: 0x6c9a3a20, 0x34789: 0x6c9a3c20, 0x3478a: 0x6c9a3e20, 0x3478b: 0x6c9a4020,\n\t0x3478c: 0x6c9a4220, 0x3478d: 0x6c9a4420, 0x3478e: 0x6c9a4620, 0x3478f: 0x6c9a4820,\n\t0x34790: 0x6c9a4a20, 0x34791: 0x6c9a4c20, 0x34792: 0x6c9a4e20, 0x34793: 0x6c9a5020,\n\t0x34794: 0x6c9a5220, 0x34795: 0x6c9a5420, 0x34796: 0x6c9a5620, 0x34797: 0x6c9a5820,\n\t0x34798: 0x6c9a5a20, 0x34799: 0x6c9a5c20, 0x3479a: 0x6c9a5e20, 0x3479b: 0x6c9a6020,\n\t0x3479c: 0x6c9a6220, 0x3479d: 0x6c9a6420, 0x3479e: 0x6c9a6620, 0x3479f: 0x6c9a6820,\n\t0x347a0: 0x6c9a6a20, 0x347a1: 0x6c9a6c20, 0x347a2: 0x6c9a6e20, 0x347a3: 0x6c9a7020,\n\t0x347a4: 0x6c9a7220, 0x347a5: 0x6c9a7420, 0x347a6: 0x6c9a7620, 0x347a7: 0x6c9a7820,\n\t0x347a8: 0x6c9a7a20, 0x347a9: 0x6cc56a20, 0x347aa: 0x6cc56c20, 0x347ab: 0x6cc56e20,\n\t0x347ac: 0x6cc57020, 0x347ad: 0x6cc57220, 0x347ae: 0x6cc57420, 0x347af: 0x6cc57620,\n\t0x347b0: 0x6cc57820, 0x347b1: 0x6cc57a20, 0x347b2: 0x6cc57c20, 0x347b3: 0x6cc57e20,\n\t0x347b4: 0x6cc58020, 0x347b5: 0x6cc58220, 0x347b6: 0x6cc58420, 0x347b7: 0x6cc58620,\n\t0x347b8: 0x6cc58820, 0x347b9: 0x6cc58a20, 0x347ba: 0x6cc58c20, 0x347bb: 0x6cc58e20,\n\t0x347bc: 0x6cc59020, 0x347bd: 0x6cc59220, 0x347be: 0x6cc59420, 0x347bf: 0x6cc59620,\n\t// Block 0xd1f, offset 0x347c0\n\t0x347c0: 0x6cc59820, 0x347c1: 0x6cc59a20, 0x347c2: 0x6cc59c20, 0x347c3: 0x6cc59e20,\n\t0x347c4: 0x6cc5a020, 0x347c5: 0x6cc5a220, 0x347c6: 0x6cc5a420, 0x347c7: 0x6cc5a620,\n\t0x347c8: 0x6cc5a820, 0x347c9: 0x6cc5aa20, 0x347ca: 0x6cc5ac20, 0x347cb: 0x6cc5ae20,\n\t0x347cc: 0x6cc5b020, 0x347cd: 0x6cc5b220, 0x347ce: 0x6cc5b420, 0x347cf: 0x6cc5b620,\n\t0x347d0: 0x6cc5b820, 0x347d1: 0x6cc5ba20, 0x347d2: 0x6cc5bc20, 0x347d3: 0x6cc5be20,\n\t0x347d4: 0x6cc5c020, 0x347d5: 0x6cc5c220, 0x347d6: 0x6cc5c420, 0x347d7: 0x6cc5c620,\n\t0x347d8: 0x6cc5c820, 0x347d9: 0x6cc5ca20, 0x347da: 0x6cc5cc20, 0x347db: 0x6cc5ce20,\n\t0x347dc: 0x6cc5d020, 0x347dd: 0x6cc5d220, 0x347de: 0x6cc5d420, 0x347df: 0x6cc5d620,\n\t0x347e0: 0x6cc5d820, 0x347e1: 0x6cc5da20, 0x347e2: 0x6cc5dc20, 0x347e3: 0x6cc5de20,\n\t0x347e4: 0x6cc5e020, 0x347e5: 0x6cc5e220, 0x347e6: 0x6cc5e420, 0x347e7: 0x6cc5e620,\n\t0x347e8: 0x6cc5e820, 0x347e9: 0x6cc5ea20, 0x347ea: 0x6cc5ec20, 0x347eb: 0x6cc5ee20,\n\t0x347ec: 0x6cc5f020, 0x347ed: 0x6cc5f220, 0x347ee: 0x6cc5f420, 0x347ef: 0x6cc5f620,\n\t0x347f0: 0x6cc5f820, 0x347f1: 0x6cc5fa20, 0x347f2: 0x6cc5fc20, 0x347f3: 0x6cc5fe20,\n\t0x347f4: 0x6cc60020, 0x347f5: 0x6cc60220, 0x347f6: 0x6cc60420, 0x347f7: 0x6cc60620,\n\t0x347f8: 0x6cc60820, 0x347f9: 0x6cc60a20, 0x347fa: 0x6cc60c20, 0x347fb: 0x6cc60e20,\n\t0x347fc: 0x6cc61020, 0x347fd: 0x6cc61220, 0x347fe: 0x6cc61420, 0x347ff: 0x6d017820,\n\t// Block 0xd20, offset 0x34800\n\t0x34800: 0x6cc61620, 0x34801: 0x6cc61820, 0x34802: 0x6cc61a20, 0x34803: 0x6cc61c20,\n\t0x34804: 0x6cc61e20, 0x34805: 0x6cc62020, 0x34806: 0x6cc62220, 0x34807: 0x6cc62420,\n\t0x34808: 0x6cc62620, 0x34809: 0x6cc62820, 0x3480a: 0x6cc62a20, 0x3480b: 0x6cc62c20,\n\t0x3480c: 0x6cc62e20, 0x3480d: 0x6cc63020, 0x3480e: 0x6cc63220, 0x3480f: 0x6cc63420,\n\t0x34810: 0x6cc63620, 0x34811: 0x6cc63820, 0x34812: 0x6cc63a20, 0x34813: 0x6cc63c20,\n\t0x34814: 0x6cc63e20, 0x34815: 0x6cc64020, 0x34816: 0x6cc64220, 0x34817: 0x6cc64420,\n\t0x34818: 0x6cc64620, 0x34819: 0x6cc64820, 0x3481a: 0x6cc64a20, 0x3481b: 0x6cc64c20,\n\t0x3481c: 0x6cc64e20, 0x3481d: 0x6cc65020, 0x3481e: 0x6cc65220, 0x3481f: 0x6cf45a20,\n\t0x34820: 0x6cf45c20, 0x34821: 0x6cf45e20, 0x34822: 0x6cf46020, 0x34823: 0x6cf46220,\n\t0x34824: 0x6cf46420, 0x34825: 0x6cf46620, 0x34826: 0x6cf46820, 0x34827: 0x6cf46a20,\n\t0x34828: 0x6cf46c20, 0x34829: 0x6cf46e20, 0x3482a: 0x6cf47020, 0x3482b: 0x6cf47220,\n\t0x3482c: 0x6cf47420, 0x3482d: 0x6cf47620, 0x3482e: 0x6cf47820, 0x3482f: 0x6cf47a20,\n\t0x34830: 0x6cf47c20, 0x34831: 0x6cf47e20, 0x34832: 0x6cf48020, 0x34833: 0x6cf48220,\n\t0x34834: 0x6cf48420, 0x34835: 0x6cf48620, 0x34836: 0x6cf48820, 0x34837: 0x6cf48a20,\n\t0x34838: 0x6cf48c20, 0x34839: 0x6cf48e20, 0x3483a: 0x6cf49020, 0x3483b: 0x6cf49220,\n\t0x3483c: 0x6cf49420, 0x3483d: 0x6cf49620, 0x3483e: 0x6cf49820, 0x3483f: 0x6cf49a20,\n\t// Block 0xd21, offset 0x34840\n\t0x34840: 0x6cf49c20, 0x34841: 0x6cf49e20, 0x34842: 0x6cf4a020, 0x34843: 0x6cf4a220,\n\t0x34844: 0x6cf4a420, 0x34845: 0x6cf4a620, 0x34846: 0x6cf4a820, 0x34847: 0x6cf4aa20,\n\t0x34848: 0x6cf4ac20, 0x34849: 0x6cf4ae20, 0x3484a: 0x6cf4b020, 0x3484b: 0x6cf4b220,\n\t0x3484c: 0x6cf4b420, 0x3484d: 0x6cf4b620, 0x3484e: 0x6cf4b820, 0x3484f: 0x6cf4ba20,\n\t0x34850: 0x6cf4bc20, 0x34851: 0x6cf4be20, 0x34852: 0x6cf4c020, 0x34853: 0x6cf4c220,\n\t0x34854: 0x6cf4c420, 0x34855: 0x6cf4c620, 0x34856: 0x6cf4c820, 0x34857: 0x6cf4ca20,\n\t0x34858: 0x6cf4cc20, 0x34859: 0x6cf4ce20, 0x3485a: 0x6cf4d020, 0x3485b: 0x6cf4d220,\n\t0x3485c: 0x6cf4d420, 0x3485d: 0x6cf4d620, 0x3485e: 0x6cf4d820, 0x3485f: 0x6cf4da20,\n\t0x34860: 0x6cf4dc20, 0x34861: 0x6cf4de20, 0x34862: 0x6cf4e020, 0x34863: 0x6cf4e220,\n\t0x34864: 0x6cf4e420, 0x34865: 0x6cf4e620, 0x34866: 0x6cf4e820, 0x34867: 0x6cf4ea20,\n\t0x34868: 0x6cf4ec20, 0x34869: 0x6cf4ee20, 0x3486a: 0x6cf4f020, 0x3486b: 0x6cf4f220,\n\t0x3486c: 0x6cf4f420, 0x3486d: 0x6cf4f620, 0x3486e: 0x6cf4f820, 0x3486f: 0x6cf4fa20,\n\t0x34870: 0x6cf4fc20, 0x34871: 0x6cf4fe20, 0x34872: 0x6cf50020, 0x34873: 0x6d23fa20,\n\t0x34874: 0x6d23fc20, 0x34875: 0x6d23fe20, 0x34876: 0x6d240020, 0x34877: 0x6d240220,\n\t0x34878: 0x6d240420, 0x34879: 0x6d240620, 0x3487a: 0x6d240820, 0x3487b: 0x6d240a20,\n\t0x3487c: 0x6d240c20, 0x3487d: 0x6d240e20, 0x3487e: 0x6d241020, 0x3487f: 0x6d241220,\n\t// Block 0xd22, offset 0x34880\n\t0x34880: 0x6d241420, 0x34881: 0x6d241620, 0x34882: 0x6d241820, 0x34883: 0x6d241a20,\n\t0x34884: 0x6d241c20, 0x34885: 0x6d241e20, 0x34886: 0x6d242020, 0x34887: 0x6d242220,\n\t0x34888: 0x6d242420, 0x34889: 0x6d242620, 0x3488a: 0x6d242820, 0x3488b: 0x6d242a20,\n\t0x3488c: 0x6d242c20, 0x3488d: 0x6d242e20, 0x3488e: 0x6d243020, 0x3488f: 0x6d243220,\n\t0x34890: 0x6d243420, 0x34891: 0x6d243620, 0x34892: 0x6d243820, 0x34893: 0x6d243a20,\n\t0x34894: 0x6d243c20, 0x34895: 0x6d243e20, 0x34896: 0x6d244020, 0x34897: 0x6d244220,\n\t0x34898: 0x6d244420, 0x34899: 0x6d244620, 0x3489a: 0x6d244820, 0x3489b: 0x6d244a20,\n\t0x3489c: 0x6d244c20, 0x3489d: 0x6d244e20, 0x3489e: 0x6d245020, 0x3489f: 0x6d245220,\n\t0x348a0: 0x6d245420, 0x348a1: 0x6d245620, 0x348a2: 0x6d245820, 0x348a3: 0x6d245a20,\n\t0x348a4: 0x6d245c20, 0x348a5: 0x6d245e20, 0x348a6: 0x6d246020, 0x348a7: 0x6d246220,\n\t0x348a8: 0x6d246420, 0x348a9: 0x6d246620, 0x348aa: 0x6d246820, 0x348ab: 0x6d246a20,\n\t0x348ac: 0x6d246c20, 0x348ad: 0x6d246e20, 0x348ae: 0x6d247020, 0x348af: 0x6d247220,\n\t0x348b0: 0x6d247420, 0x348b1: 0x6d247620, 0x348b2: 0x6d247820, 0x348b3: 0x6d247a20,\n\t0x348b4: 0x6d247c20, 0x348b5: 0x6d247e20, 0x348b6: 0x6d248020, 0x348b7: 0x6d248220,\n\t0x348b8: 0x6d248420, 0x348b9: 0x6d248620, 0x348ba: 0x6d248820, 0x348bb: 0x6d248a20,\n\t0x348bc: 0x6d248c20, 0x348bd: 0x6d248e20, 0x348be: 0x6d249020, 0x348bf: 0x6d249220,\n\t// Block 0xd23, offset 0x348c0\n\t0x348c0: 0x6d249420, 0x348c1: 0x6d249620, 0x348c2: 0x6d249820, 0x348c3: 0x6d249a20,\n\t0x348c4: 0x6d249c20, 0x348c5: 0x6d249e20, 0x348c6: 0x6d24a020, 0x348c7: 0x6d24a220,\n\t0x348c8: 0x6d24a420, 0x348c9: 0x6d24a620, 0x348ca: 0x6d24a820, 0x348cb: 0x6d24aa20,\n\t0x348cc: 0x6d24ac20, 0x348cd: 0x6d24ae20, 0x348ce: 0x6d24b020, 0x348cf: 0x6d24b220,\n\t0x348d0: 0x6d24b420, 0x348d1: 0x6d24b620, 0x348d2: 0x6d24b820, 0x348d3: 0x6d24ba20,\n\t0x348d4: 0x6d24bc20, 0x348d5: 0x6d24be20, 0x348d6: 0x6d24c020, 0x348d7: 0x6d24c220,\n\t0x348d8: 0x6d24c420, 0x348d9: 0x6d24c620, 0x348da: 0x6d24c820, 0x348db: 0x6d24ca20,\n\t0x348dc: 0x6d24cc20, 0x348dd: 0x6d24ce20, 0x348de: 0x6d24d020, 0x348df: 0x6d24d220,\n\t0x348e0: 0x6d519620, 0x348e1: 0x6d519820, 0x348e2: 0x6d519a20, 0x348e3: 0x6d519c20,\n\t0x348e4: 0x6d519e20, 0x348e5: 0x6d51a020, 0x348e6: 0x6d51a220, 0x348e7: 0x6d51a420,\n\t0x348e8: 0x6d51a620, 0x348e9: 0x6d51a820, 0x348ea: 0x6d51aa20, 0x348eb: 0x6d51ac20,\n\t0x348ec: 0x6d51ae20, 0x348ed: 0x6d51b020, 0x348ee: 0x6d51b220, 0x348ef: 0x6d51b420,\n\t0x348f0: 0x6d51b620, 0x348f1: 0x6d51b820, 0x348f2: 0x6d51ba20, 0x348f3: 0x6d51bc20,\n\t0x348f4: 0x6d51be20, 0x348f5: 0x6d51c020, 0x348f6: 0x6d51c220, 0x348f7: 0x6d51c420,\n\t0x348f8: 0x6d51c620, 0x348f9: 0x6d51c820, 0x348fa: 0x6d51ca20, 0x348fb: 0x6d51cc20,\n\t0x348fc: 0x6d51ce20, 0x348fd: 0x6d51d020, 0x348fe: 0x6d51d220, 0x348ff: 0x6d51d420,\n\t// Block 0xd24, offset 0x34900\n\t0x34900: 0x6d51d620, 0x34901: 0x6d51d820, 0x34902: 0x6d51da20, 0x34903: 0x6d51dc20,\n\t0x34904: 0x6d51de20, 0x34905: 0x6d51e020, 0x34906: 0x6d51e220, 0x34907: 0x6d51e420,\n\t0x34908: 0x6d51e620, 0x34909: 0x6d51e820, 0x3490a: 0x6d51ea20, 0x3490b: 0x6d51ec20,\n\t0x3490c: 0x6d51ee20, 0x3490d: 0x6d51f020, 0x3490e: 0x6d51f220, 0x3490f: 0x6d51f420,\n\t0x34910: 0x6d51f620, 0x34911: 0x6d51f820, 0x34912: 0x6d51fa20, 0x34913: 0x6d51fc20,\n\t0x34914: 0x6d51fe20, 0x34915: 0x6d520020, 0x34916: 0x6d520220, 0x34917: 0x6d520420,\n\t0x34918: 0x6d520620, 0x34919: 0x6d520820, 0x3491a: 0x6d520a20, 0x3491b: 0x6d520c20,\n\t0x3491c: 0x6d520e20, 0x3491d: 0x6d521020, 0x3491e: 0x6d521220, 0x3491f: 0x6d521420,\n\t0x34920: 0x6d521620, 0x34921: 0x6d521820, 0x34922: 0x6d521a20, 0x34923: 0x6d521c20,\n\t0x34924: 0x6d521e20, 0x34925: 0x6d522020, 0x34926: 0x6d522220, 0x34927: 0x6d522420,\n\t0x34928: 0x6d522620, 0x34929: 0x6d522820, 0x3492a: 0x6d522a20, 0x3492b: 0x6d522c20,\n\t0x3492c: 0x6d522e20, 0x3492d: 0x6d523020, 0x3492e: 0x6d523220, 0x3492f: 0x6d523420,\n\t0x34930: 0x6d523620, 0x34931: 0x6d523820, 0x34932: 0x6d523a20, 0x34933: 0x6d523c20,\n\t0x34934: 0x6d523e20, 0x34935: 0x6d524020, 0x34936: 0x6d524220, 0x34937: 0x6d524420,\n\t0x34938: 0x6d524620, 0x34939: 0x6d524820, 0x3493a: 0x6d524a20, 0x3493b: 0x6d524c20,\n\t0x3493c: 0x6d524e20, 0x3493d: 0x6d525020, 0x3493e: 0x6d525220, 0x3493f: 0x6d7d0220,\n\t// Block 0xd25, offset 0x34940\n\t0x34940: 0x6d7d0420, 0x34941: 0x6d7d0620, 0x34942: 0x6d7d0820, 0x34943: 0x6d7d0a20,\n\t0x34944: 0x6d7d0c20, 0x34945: 0x6d7d0e20, 0x34946: 0x6d7d1020, 0x34947: 0x6d7d1220,\n\t0x34948: 0x6d7d1420, 0x34949: 0x6d7d1620, 0x3494a: 0x6d7d1820, 0x3494b: 0x6d7d1a20,\n\t0x3494c: 0x6d7d1c20, 0x3494d: 0x6d7d1e20, 0x3494e: 0x6d7d2020, 0x3494f: 0x6d7d2220,\n\t0x34950: 0x6d7d2420, 0x34951: 0x6d7d2620, 0x34952: 0x6d7d2820, 0x34953: 0x6d7d2a20,\n\t0x34954: 0x6d7d2c20, 0x34955: 0x6d7d2e20, 0x34956: 0x6d7d3020, 0x34957: 0x6d7d3220,\n\t0x34958: 0x6d7d3420, 0x34959: 0x6d7d3620, 0x3495a: 0x6d7d3820, 0x3495b: 0x6d7d3a20,\n\t0x3495c: 0x6d7d3c20, 0x3495d: 0x6d7d3e20, 0x3495e: 0x6d7d4020, 0x3495f: 0x6d7d4220,\n\t0x34960: 0x6d7d4420, 0x34961: 0x6d7d4620, 0x34962: 0x6d7d4820, 0x34963: 0x6d7d4a20,\n\t0x34964: 0x6d7d4c20, 0x34965: 0x6d7d4e20, 0x34966: 0x6d7d5020, 0x34967: 0x6d7d5220,\n\t0x34968: 0x6d7d5420, 0x34969: 0x6d7d5620, 0x3496a: 0x6d7d5820, 0x3496b: 0x6d7d5a20,\n\t0x3496c: 0x6d7d5c20, 0x3496d: 0x6d7d5e20, 0x3496e: 0x6d7d6020, 0x3496f: 0x6d7d6220,\n\t0x34970: 0x6d7d6420, 0x34971: 0x6d7d6620, 0x34972: 0x6d7d6820, 0x34973: 0x6d7d6a20,\n\t0x34974: 0x6d7d6c20, 0x34975: 0x6d7d6e20, 0x34976: 0x6d7d7020, 0x34977: 0x6d7d7220,\n\t0x34978: 0x6d7d7420, 0x34979: 0x6d7d7620, 0x3497a: 0x6d7d7820, 0x3497b: 0x6d7d7a20,\n\t0x3497c: 0x6d7d7c20, 0x3497d: 0x6d7d7e20, 0x3497e: 0x6d7d8020, 0x3497f: 0x6d7d8220,\n\t// Block 0xd26, offset 0x34980\n\t0x34980: 0x6d7d8420, 0x34981: 0x6d7d8620, 0x34982: 0x6d7d8820, 0x34983: 0x6d7d8a20,\n\t0x34984: 0x6d7d8c20, 0x34985: 0x6d525420, 0x34986: 0x6d7d8e20, 0x34987: 0x6d7d9020,\n\t0x34988: 0x6d7d9220, 0x34989: 0x6d7d9420, 0x3498a: 0x6d7d9620, 0x3498b: 0x6da4ae20,\n\t0x3498c: 0x6da4b020, 0x3498d: 0x6da4b220, 0x3498e: 0x6da4b420, 0x3498f: 0x6da4b620,\n\t0x34990: 0x6da4b820, 0x34991: 0x6da4ba20, 0x34992: 0x6da4bc20, 0x34993: 0x6da4be20,\n\t0x34994: 0x6da4c020, 0x34995: 0x6da4c220, 0x34996: 0x6da4c420, 0x34997: 0x6da4c620,\n\t0x34998: 0x6da4c820, 0x34999: 0x6da4ca20, 0x3499a: 0x6da4cc20, 0x3499b: 0x6da4ce20,\n\t0x3499c: 0x6da4d020, 0x3499d: 0x6da4d220, 0x3499e: 0x6da4d420, 0x3499f: 0x6da4d620,\n\t0x349a0: 0x6da4d820, 0x349a1: 0x6da4da20, 0x349a2: 0x6da4dc20, 0x349a3: 0x6da4de20,\n\t0x349a4: 0x6da4e020, 0x349a5: 0x6da4e220, 0x349a6: 0x6da4e420, 0x349a7: 0x6da4e620,\n\t0x349a8: 0x6da4e820, 0x349a9: 0x6da4ea20, 0x349aa: 0x6da4ec20, 0x349ab: 0x6da4ee20,\n\t0x349ac: 0x6da4f020, 0x349ad: 0x6da4f220, 0x349ae: 0x6da4f420, 0x349af: 0x6da4f620,\n\t0x349b0: 0x6da4f820, 0x349b1: 0x6da4fa20, 0x349b2: 0x6da4fc20, 0x349b3: 0x6da4fe20,\n\t0x349b4: 0x6da50020, 0x349b5: 0x6da50220, 0x349b6: 0x6dc64e20, 0x349b7: 0x6dc65020,\n\t0x349b8: 0x6dc65220, 0x349b9: 0x6dc65420, 0x349ba: 0x6dc65620, 0x349bb: 0x6dc65820,\n\t0x349bc: 0x6dc65a20, 0x349bd: 0x6dc65c20, 0x349be: 0x6dc65e20, 0x349bf: 0x6dc66020,\n\t// Block 0xd27, offset 0x349c0\n\t0x349c0: 0x6dc66220, 0x349c1: 0x6dc66420, 0x349c2: 0x6dc66620, 0x349c3: 0x6dc66820,\n\t0x349c4: 0x6dc66a20, 0x349c5: 0x6dc66c20, 0x349c6: 0x6dc66e20, 0x349c7: 0x6dc67020,\n\t0x349c8: 0x6dc67220, 0x349c9: 0x6dc67420, 0x349ca: 0x6dc67620, 0x349cb: 0x6dc67820,\n\t0x349cc: 0x6dc67a20, 0x349cd: 0x6dc67c20, 0x349ce: 0x6dc67e20, 0x349cf: 0x6dc68020,\n\t0x349d0: 0x6dc68220, 0x349d1: 0x6dc68420, 0x349d2: 0x6dc68620, 0x349d3: 0x6dc68820,\n\t0x349d4: 0x6dc68a20, 0x349d5: 0x6dc68c20, 0x349d6: 0x6dc68e20, 0x349d7: 0x6dc69020,\n\t0x349d8: 0x6dc69220, 0x349d9: 0x6dc69420, 0x349da: 0x6dc69620, 0x349db: 0x6dc69820,\n\t0x349dc: 0x6dc69a20, 0x349dd: 0x6dc69c20, 0x349de: 0x6dc69e20, 0x349df: 0x6dc6a020,\n\t0x349e0: 0x6dc6a220, 0x349e1: 0x6dc6a420, 0x349e2: 0x6dc6a620, 0x349e3: 0x6de30420,\n\t0x349e4: 0x6de30620, 0x349e5: 0x6de30820, 0x349e6: 0x6de30a20, 0x349e7: 0x6de30c20,\n\t0x349e8: 0x6de30e20, 0x349e9: 0x6de31020, 0x349ea: 0x6de31220, 0x349eb: 0x6de31420,\n\t0x349ec: 0x6de31620, 0x349ed: 0x6de31820, 0x349ee: 0x6de31a20, 0x349ef: 0x6de31c20,\n\t0x349f0: 0x6de31e20, 0x349f1: 0x6de32020, 0x349f2: 0x6de32220, 0x349f3: 0x6de32420,\n\t0x349f4: 0x6de32620, 0x349f5: 0x6de32820, 0x349f6: 0x6de32a20, 0x349f7: 0x6de32c20,\n\t0x349f8: 0x6de32e20, 0x349f9: 0x6de33020, 0x349fa: 0x6de33220, 0x349fb: 0x6de33420,\n\t0x349fc: 0x6de33620, 0x349fd: 0x6de33820, 0x349fe: 0x6de33a20, 0x349ff: 0x6de33c20,\n\t// Block 0xd28, offset 0x34a00\n\t0x34a00: 0x6de33e20, 0x34a01: 0x6de34020, 0x34a02: 0x6de34220, 0x34a03: 0x6de34420,\n\t0x34a04: 0x6de34620, 0x34a05: 0x6de34820, 0x34a06: 0x6de34a20, 0x34a07: 0x6de34c20,\n\t0x34a08: 0x6de34e20, 0x34a09: 0x6de35020, 0x34a0a: 0x6de35220, 0x34a0b: 0x6de35420,\n\t0x34a0c: 0x6de35620, 0x34a0d: 0x6dfa7220, 0x34a0e: 0x6dfa7420, 0x34a0f: 0x6dfa7620,\n\t0x34a10: 0x6dfa7820, 0x34a11: 0x6dfa7a20, 0x34a12: 0x6dfa7c20, 0x34a13: 0x6dfa7e20,\n\t0x34a14: 0x6dfa8020, 0x34a15: 0x6dfa8220, 0x34a16: 0x6dfa8420, 0x34a17: 0x6dfa8620,\n\t0x34a18: 0x6dfa8820, 0x34a19: 0x6dfa8a20, 0x34a1a: 0x6dfa8c20, 0x34a1b: 0x6dfa8e20,\n\t0x34a1c: 0x6dfa9020, 0x34a1d: 0x6dfa9220, 0x34a1e: 0x6dfa9420, 0x34a1f: 0x6dfa9620,\n\t0x34a20: 0x6dfa9820, 0x34a21: 0x6dfa9a20, 0x34a22: 0x6e0dfe20, 0x34a23: 0x6dfa9c20,\n\t0x34a24: 0x6dfa9e20, 0x34a25: 0x6dfaa020, 0x34a26: 0x6dfaa220, 0x34a27: 0x6dfaa420,\n\t0x34a28: 0x6dfaa620, 0x34a29: 0x6dfaa820, 0x34a2a: 0x6dfaaa20, 0x34a2b: 0x6dfaac20,\n\t0x34a2c: 0x6e0e0020, 0x34a2d: 0x6e0e0220, 0x34a2e: 0x6e0e0420, 0x34a2f: 0x6e0e0620,\n\t0x34a30: 0x6e0e0820, 0x34a31: 0x6e0e0a20, 0x34a32: 0x6e0e0c20, 0x34a33: 0x6e0e0e20,\n\t0x34a34: 0x6e0e1020, 0x34a35: 0x6e0e1220, 0x34a36: 0x6e0e1420, 0x34a37: 0x6e0e1620,\n\t0x34a38: 0x6e0e1820, 0x34a39: 0x6e0e1a20, 0x34a3a: 0x6e0e1c20, 0x34a3b: 0x6e0e1e20,\n\t0x34a3c: 0x6e0e2020, 0x34a3d: 0x6e0e2220, 0x34a3e: 0x6e0e2420, 0x34a3f: 0x6e0e2620,\n\t// Block 0xd29, offset 0x34a40\n\t0x34a40: 0x6e0e2820, 0x34a41: 0x6e0e2a20, 0x34a42: 0x6e1d6620, 0x34a43: 0x6e1d6820,\n\t0x34a44: 0x6e1d6a20, 0x34a45: 0x6e1d6c20, 0x34a46: 0x6e1d6e20, 0x34a47: 0x6e1d7020,\n\t0x34a48: 0x6e1d7220, 0x34a49: 0x6e1d7420, 0x34a4a: 0x6e1d7620, 0x34a4b: 0x6e1d7820,\n\t0x34a4c: 0x6e1d7a20, 0x34a4d: 0x6e1d7c20, 0x34a4e: 0x6e1d7e20, 0x34a4f: 0x6e1d8020,\n\t0x34a50: 0x6e1d8220, 0x34a51: 0x6e1d8420, 0x34a52: 0x6e1d8620, 0x34a53: 0x6e1d8820,\n\t0x34a54: 0x6e1d8a20, 0x34a55: 0x6e1d8c20, 0x34a56: 0x6e290820, 0x34a57: 0x6e290a20,\n\t0x34a58: 0x6e290c20, 0x34a59: 0x6e290e20, 0x34a5a: 0x6e291020, 0x34a5b: 0x6e291220,\n\t0x34a5c: 0x6e291420, 0x34a5d: 0x6e291620, 0x34a5e: 0x6e322a20, 0x34a5f: 0x6e322c20,\n\t0x34a60: 0x6e322e20, 0x34a61: 0x6e323020, 0x34a62: 0x6e323220, 0x34a63: 0x6e323420,\n\t0x34a64: 0x6e323620, 0x34a65: 0x6e323820, 0x34a66: 0x6e323a20, 0x34a67: 0x6e323c20,\n\t0x34a68: 0x6e323e20, 0x34a69: 0x6e324020, 0x34a6a: 0x6e324220, 0x34a6b: 0x6e324420,\n\t0x34a6c: 0x6e389620, 0x34a6d: 0x6e389820, 0x34a6e: 0x6e389a20, 0x34a6f: 0x6e389c20,\n\t0x34a70: 0x6e404420, 0x34a71: 0x6e404620, 0x34a72: 0x6e404820, 0x34a73: 0x6e429e20,\n\t0x34a74: 0x6e462a20, 0x34a75: 0x6c123820, 0x34a76: 0x6c211a20, 0x34a77: 0x6c353020,\n\t0x34a78: 0x6c353220, 0x34a79: 0x6c353420, 0x34a7a: 0x6c353620, 0x34a7b: 0x6c353820,\n\t0x34a7c: 0x6c353a20, 0x34a7d: 0x6c353c20, 0x34a7e: 0x6c502c20, 0x34a7f: 0x6c502e20,\n\t// Block 0xd2a, offset 0x34a80\n\t0x34a80: 0x6c503020, 0x34a81: 0x6c722620, 0x34a82: 0x6c722820, 0x34a83: 0x6c722a20,\n\t0x34a84: 0x6c722c20, 0x34a85: 0x6c722e20, 0x34a86: 0x6c723020, 0x34a87: 0x6c723220,\n\t0x34a88: 0x6c6aa620, 0x34a89: 0x6c723420, 0x34a8a: 0x6c9a9620, 0x34a8b: 0x6c9a9820,\n\t0x34a8c: 0x6c9a9a20, 0x34a8d: 0x6c9a9c20, 0x34a8e: 0x6cc67420, 0x34a8f: 0x6cc67620,\n\t0x34a90: 0x6cc67820, 0x34a91: 0x6cc67a20, 0x34a92: 0x6cc67c20, 0x34a93: 0x6cc67e20,\n\t0x34a94: 0x6cc68020, 0x34a95: 0x6cf52020, 0x34a96: 0x6cf52220, 0x34a97: 0x6cf52420,\n\t0x34a98: 0x6cf52620, 0x34a99: 0x6cf52820, 0x34a9a: 0x6d24ea20, 0x34a9b: 0x6d24ec20,\n\t0x34a9c: 0x6d24ee20, 0x34a9d: 0x6d526a20, 0x34a9e: 0x6d526c20, 0x34a9f: 0x6d526e20,\n\t0x34aa0: 0x6d7da220, 0x34aa1: 0x6d7da420, 0x34aa2: 0x6d7da620, 0x34aa3: 0x6d7da820,\n\t0x34aa4: 0x6d7daa20, 0x34aa5: 0x6da50a20, 0x34aa6: 0x6da50c20, 0x34aa7: 0x6da50e20,\n\t0x34aa8: 0x6da51020, 0x34aa9: 0x6da51220, 0x34aaa: 0x6dfab020, 0x34aab: 0x6c212a20,\n\t0x34aac: 0x6c212c20, 0x34aad: 0x6c212e20, 0x34aae: 0x6c213020, 0x34aaf: 0x6c213220,\n\t0x34ab0: 0x6c213420, 0x34ab1: 0x6c213620, 0x34ab2: 0x6c213820, 0x34ab3: 0x6c354820,\n\t0x34ab4: 0x6c354a20, 0x34ab5: 0x6c354c20, 0x34ab6: 0x6c354e20, 0x34ab7: 0x6c355020,\n\t0x34ab8: 0x6c355220, 0x34ab9: 0x6c355420, 0x34aba: 0x6c355620, 0x34abb: 0x6c355820,\n\t0x34abc: 0x6c355a20, 0x34abd: 0x6c355c20, 0x34abe: 0x6c355e20, 0x34abf: 0x6c356020,\n\t// Block 0xd2b, offset 0x34ac0\n\t0x34ac0: 0x6c356220, 0x34ac1: 0x6c356420, 0x34ac2: 0x6c356620, 0x34ac3: 0x6c356820,\n\t0x34ac4: 0x6c356a20, 0x34ac5: 0x6c356c20, 0x34ac6: 0x6c356e20, 0x34ac7: 0x6c357020,\n\t0x34ac8: 0x6c357220, 0x34ac9: 0x6c504820, 0x34aca: 0x6c504a20, 0x34acb: 0x6c504c20,\n\t0x34acc: 0x6c504e20, 0x34acd: 0x6c505020, 0x34ace: 0x6c505220, 0x34acf: 0x6c505420,\n\t0x34ad0: 0x6c505620, 0x34ad1: 0x6c505820, 0x34ad2: 0x6c505a20, 0x34ad3: 0x6c505c20,\n\t0x34ad4: 0x6c505e20, 0x34ad5: 0x6c506020, 0x34ad6: 0x6c506220, 0x34ad7: 0x6c506420,\n\t0x34ad8: 0x6c506620, 0x34ad9: 0x6c506820, 0x34ada: 0x6c506a20, 0x34adb: 0x6c724a20,\n\t0x34adc: 0x6c724c20, 0x34add: 0x6c724e20, 0x34ade: 0x6c725020, 0x34adf: 0x6c725220,\n\t0x34ae0: 0x6c725420, 0x34ae1: 0x6c725620, 0x34ae2: 0x6c725820, 0x34ae3: 0x6c725a20,\n\t0x34ae4: 0x6c725c20, 0x34ae5: 0x6c725e20, 0x34ae6: 0x6c726020, 0x34ae7: 0x6c726220,\n\t0x34ae8: 0x6c726420, 0x34ae9: 0x6c726620, 0x34aea: 0x6c726820, 0x34aeb: 0x6c726a20,\n\t0x34aec: 0x6c726c20, 0x34aed: 0x6c726e20, 0x34aee: 0x6c727020, 0x34aef: 0x6c727220,\n\t0x34af0: 0x6c727420, 0x34af1: 0x6c727620, 0x34af2: 0x6c727820, 0x34af3: 0x6c727a20,\n\t0x34af4: 0x6c727c20, 0x34af5: 0x6c727e20, 0x34af6: 0x6c728020, 0x34af7: 0x6c728220,\n\t0x34af8: 0x6c728420, 0x34af9: 0x6c9aca20, 0x34afa: 0x6c9acc20, 0x34afb: 0x6c9ace20,\n\t0x34afc: 0x6c9ad020, 0x34afd: 0x6c9ad220, 0x34afe: 0x6c9ad420, 0x34aff: 0x6c9ad620,\n\t// Block 0xd2c, offset 0x34b00\n\t0x34b00: 0x6c9ad820, 0x34b01: 0x6c9ada20, 0x34b02: 0x6c9adc20, 0x34b03: 0x6c9ade20,\n\t0x34b04: 0x6c9ae020, 0x34b05: 0x6c9ae220, 0x34b06: 0x6c9ae420, 0x34b07: 0x6c9ae620,\n\t0x34b08: 0x6c9ae820, 0x34b09: 0x6c9aea20, 0x34b0a: 0x6c9aec20, 0x34b0b: 0x6c9aee20,\n\t0x34b0c: 0x6c9af020, 0x34b0d: 0x6c9af220, 0x34b0e: 0x6c9af420, 0x34b0f: 0x6c9af620,\n\t0x34b10: 0x6c9af820, 0x34b11: 0x6c9afa20, 0x34b12: 0x6c9afc20, 0x34b13: 0x6c9afe20,\n\t0x34b14: 0x6c9b0020, 0x34b15: 0x6c9b0220, 0x34b16: 0x6c9b0420, 0x34b17: 0x6c9b0620,\n\t0x34b18: 0x6c9b0820, 0x34b19: 0x6c9b0a20, 0x34b1a: 0x6cc6b620, 0x34b1b: 0x6cc6b820,\n\t0x34b1c: 0x6c9b0c20, 0x34b1d: 0x6cc6ba20, 0x34b1e: 0x6cc6bc20, 0x34b1f: 0x6cc6be20,\n\t0x34b20: 0x6cc6c020, 0x34b21: 0x6cc6c220, 0x34b22: 0x6cc6c420, 0x34b23: 0x6cc6c620,\n\t0x34b24: 0x6cc6c820, 0x34b25: 0x6cc6ca20, 0x34b26: 0x6cc6cc20, 0x34b27: 0x6cc6ce20,\n\t0x34b28: 0x6cc6d020, 0x34b29: 0x6cc6d220, 0x34b2a: 0x6cc6d420, 0x34b2b: 0x6cc6d620,\n\t0x34b2c: 0x6cc6d820, 0x34b2d: 0x6cc6da20, 0x34b2e: 0x6cc6dc20, 0x34b2f: 0x6cc6de20,\n\t0x34b30: 0x6cc6e020, 0x34b31: 0x6cc6e220, 0x34b32: 0x6cc6e420, 0x34b33: 0x6cc6e620,\n\t0x34b34: 0x6cc6e820, 0x34b35: 0x6cc6ea20, 0x34b36: 0x6cc6ec20, 0x34b37: 0x6c9b0e20,\n\t0x34b38: 0x6cc6ee20, 0x34b39: 0x6cc6f020, 0x34b3a: 0x6cc6f220, 0x34b3b: 0x6cc6f420,\n\t0x34b3c: 0x6cc6f620, 0x34b3d: 0x6cc6f820, 0x34b3e: 0x6cc6fa20, 0x34b3f: 0x6cf54020,\n\t// Block 0xd2d, offset 0x34b40\n\t0x34b40: 0x6cf54220, 0x34b41: 0x6cf54420, 0x34b42: 0x6cf54620, 0x34b43: 0x6cf54820,\n\t0x34b44: 0x6cf54a20, 0x34b45: 0x6cf54c20, 0x34b46: 0x6cf54e20, 0x34b47: 0x6cf55020,\n\t0x34b48: 0x6cf55220, 0x34b49: 0x6cf55420, 0x34b4a: 0x6cf55620, 0x34b4b: 0x6cf55820,\n\t0x34b4c: 0x6cf55a20, 0x34b4d: 0x6cf55c20, 0x34b4e: 0x6cf55e20, 0x34b4f: 0x6cf56020,\n\t0x34b50: 0x6cf56220, 0x34b51: 0x6cf56420, 0x34b52: 0x6cf56620, 0x34b53: 0x6cf56820,\n\t0x34b54: 0x6cf56a20, 0x34b55: 0x6cf56c20, 0x34b56: 0x6cf56e20, 0x34b57: 0x6cf57020,\n\t0x34b58: 0x6cf57220, 0x34b59: 0x6cf57420, 0x34b5a: 0x6cf57620, 0x34b5b: 0x6cf57820,\n\t0x34b5c: 0x6cf57a20, 0x34b5d: 0x6cf57c20, 0x34b5e: 0x6cf57e20, 0x34b5f: 0x6cf58020,\n\t0x34b60: 0x6cf58220, 0x34b61: 0x6cf58420, 0x34b62: 0x6cf58620, 0x34b63: 0x6cc6fc20,\n\t0x34b64: 0x6cf58820, 0x34b65: 0x6d017a20, 0x34b66: 0x6d24fe20, 0x34b67: 0x6d250020,\n\t0x34b68: 0x6d250220, 0x34b69: 0x6d250420, 0x34b6a: 0x6d250620, 0x34b6b: 0x6d250820,\n\t0x34b6c: 0x6d250a20, 0x34b6d: 0x6d250c20, 0x34b6e: 0x6d250e20, 0x34b6f: 0x6d251020,\n\t0x34b70: 0x6d251220, 0x34b71: 0x6d251420, 0x34b72: 0x6d251620, 0x34b73: 0x6d251820,\n\t0x34b74: 0x6d251a20, 0x34b75: 0x6d251c20, 0x34b76: 0x6d251e20, 0x34b77: 0x6d252020,\n\t0x34b78: 0x6d252220, 0x34b79: 0x6d252420, 0x34b7a: 0x6d252620, 0x34b7b: 0x6d252820,\n\t0x34b7c: 0x6d252a20, 0x34b7d: 0x6d252c20, 0x34b7e: 0x6d252e20, 0x34b7f: 0x6d253020,\n\t// Block 0xd2e, offset 0x34b80\n\t0x34b80: 0x6d253220, 0x34b81: 0x6d253420, 0x34b82: 0x6d253620, 0x34b83: 0x6d253820,\n\t0x34b84: 0x6d253a20, 0x34b85: 0x6d253c20, 0x34b86: 0x6d033220, 0x34b87: 0x6d528620,\n\t0x34b88: 0x6d528820, 0x34b89: 0x6d528a20, 0x34b8a: 0x6d528c20, 0x34b8b: 0x6d528e20,\n\t0x34b8c: 0x6d529020, 0x34b8d: 0x6d529220, 0x34b8e: 0x6d529420, 0x34b8f: 0x6d529620,\n\t0x34b90: 0x6d529820, 0x34b91: 0x6d529a20, 0x34b92: 0x6d529c20, 0x34b93: 0x6d529e20,\n\t0x34b94: 0x6d52a020, 0x34b95: 0x6d52a220, 0x34b96: 0x6d52a420, 0x34b97: 0x6d52a620,\n\t0x34b98: 0x6d52a820, 0x34b99: 0x6d52aa20, 0x34b9a: 0x6d52ac20, 0x34b9b: 0x6d52ae20,\n\t0x34b9c: 0x6d52b020, 0x34b9d: 0x6d52b220, 0x34b9e: 0x6d7dbe20, 0x34b9f: 0x6d7dc020,\n\t0x34ba0: 0x6d7dc220, 0x34ba1: 0x6d7dc420, 0x34ba2: 0x6d7dc620, 0x34ba3: 0x6d7dc820,\n\t0x34ba4: 0x6d7dca20, 0x34ba5: 0x6d7dcc20, 0x34ba6: 0x6d7dce20, 0x34ba7: 0x6d7dd020,\n\t0x34ba8: 0x6d7dd220, 0x34ba9: 0x6d7dd420, 0x34baa: 0x6d7dd620, 0x34bab: 0x6d7dd820,\n\t0x34bac: 0x6d7dda20, 0x34bad: 0x6d7ddc20, 0x34bae: 0x6d7dde20, 0x34baf: 0x6d7de020,\n\t0x34bb0: 0x6d7de220, 0x34bb1: 0x6d7de420, 0x34bb2: 0x6d7de620, 0x34bb3: 0x6d7de820,\n\t0x34bb4: 0x6d7dea20, 0x34bb5: 0x6d7dec20, 0x34bb6: 0x6d7dee20, 0x34bb7: 0x6d7df020,\n\t0x34bb8: 0x6d7df220, 0x34bb9: 0x6d7df420, 0x34bba: 0x6d7df620, 0x34bbb: 0x6d7df820,\n\t0x34bbc: 0x6d7dfa20, 0x34bbd: 0x6d7dfc20, 0x34bbe: 0x6da51a20, 0x34bbf: 0x6da51c20,\n\t// Block 0xd2f, offset 0x34bc0\n\t0x34bc0: 0x6da51e20, 0x34bc1: 0x6da52020, 0x34bc2: 0x6da52220, 0x34bc3: 0x6da52420,\n\t0x34bc4: 0x6dc6bc20, 0x34bc5: 0x6da52620, 0x34bc6: 0x6da52820, 0x34bc7: 0x6da52a20,\n\t0x34bc8: 0x6da52c20, 0x34bc9: 0x6da52e20, 0x34bca: 0x6da53020, 0x34bcb: 0x6da53220,\n\t0x34bcc: 0x6da53420, 0x34bcd: 0x6da53620, 0x34bce: 0x6da53820, 0x34bcf: 0x6da53a20,\n\t0x34bd0: 0x6dc6be20, 0x34bd1: 0x6dc6c020, 0x34bd2: 0x6dc6c220, 0x34bd3: 0x6dc6c420,\n\t0x34bd4: 0x6dc6c620, 0x34bd5: 0x6dc6c820, 0x34bd6: 0x6dc6ca20, 0x34bd7: 0x6dc6cc20,\n\t0x34bd8: 0x6dc6ce20, 0x34bd9: 0x6dc6d020, 0x34bda: 0x6dc6d220, 0x34bdb: 0x6de35c20,\n\t0x34bdc: 0x6de35e20, 0x34bdd: 0x6de36020, 0x34bde: 0x6de36220, 0x34bdf: 0x6de36420,\n\t0x34be0: 0x6de36620, 0x34be1: 0x6de36820, 0x34be2: 0x6de36a20, 0x34be3: 0x6dfab820,\n\t0x34be4: 0x6dfaba20, 0x34be5: 0x6dfabc20, 0x34be6: 0x6dfabe20, 0x34be7: 0x6dfac020,\n\t0x34be8: 0x6dfac220, 0x34be9: 0x6dfac420, 0x34bea: 0x6dfac620, 0x34beb: 0x6dfac820,\n\t0x34bec: 0x6dfaca20, 0x34bed: 0x6dfacc20, 0x34bee: 0x6e0e2e20, 0x34bef: 0x6e0e3020,\n\t0x34bf0: 0x6e0e3220, 0x34bf1: 0x6e0e3420, 0x34bf2: 0x6e0e3620, 0x34bf3: 0x6e1d9020,\n\t0x34bf4: 0x6e1d9220, 0x34bf5: 0x6e291a20, 0x34bf6: 0x6e291c20, 0x34bf7: 0x6e291e20,\n\t0x34bf8: 0x6e292020, 0x34bf9: 0x6e292220, 0x34bfa: 0x6e292420, 0x34bfb: 0x6e389e20,\n\t0x34bfc: 0x6e38a020, 0x34bfd: 0x6e404a20, 0x34bfe: 0x6e404c20, 0x34bff: 0x6e42a020,\n\t// Block 0xd30, offset 0x34c00\n\t0x34c00: 0x6e442e20, 0x34c01: 0x6c123e20, 0x34c02: 0x6c213e20, 0x34c03: 0x6c357820,\n\t0x34c04: 0x6c357a20, 0x34c05: 0x6c357c20, 0x34c06: 0x6c507020, 0x34c07: 0x6c507220,\n\t0x34c08: 0x6c507420, 0x34c09: 0x6c507620, 0x34c0a: 0x6c729220, 0x34c0b: 0x6c728620,\n\t0x34c0c: 0x6c729420, 0x34c0d: 0x6c729620, 0x34c0e: 0x6c9b1c20, 0x34c0f: 0x6c9b1e20,\n\t0x34c10: 0x6c9b2020, 0x34c11: 0x6c9b2220, 0x34c12: 0x6c9b2420, 0x34c13: 0x6c9b2620,\n\t0x34c14: 0x6cc70820, 0x34c15: 0x6cc70a20, 0x34c16: 0x6cc70c20, 0x34c17: 0x6cf59020,\n\t0x34c18: 0x6cf59220, 0x34c19: 0x6cf59420, 0x34c1a: 0x6d52b420, 0x34c1b: 0x6d52be20,\n\t0x34c1c: 0x6d52c020, 0x34c1d: 0x6d52c220, 0x34c1e: 0x6d52c420, 0x34c1f: 0x6d52c620,\n\t0x34c20: 0x6d52c820, 0x34c21: 0x6d52ca20, 0x34c22: 0x6d7e0620, 0x34c23: 0x6d7e0820,\n\t0x34c24: 0x6da54020, 0x34c25: 0x6dc6d820, 0x34c26: 0x6dc6da20, 0x34c27: 0x6de36e20,\n\t0x34c28: 0x6dfad020, 0x34c29: 0x6e0e3e20, 0x34c2a: 0x6e0e4020, 0x34c2b: 0x6e292820,\n\t0x34c2c: 0x6c048820, 0x34c2d: 0x6c214420, 0x34c2e: 0x6c358420, 0x34c2f: 0x6c358620,\n\t0x34c30: 0x6c358820, 0x34c31: 0x6c507c20, 0x34c32: 0x6c507e20, 0x34c33: 0x6c72a020,\n\t0x34c34: 0x6c72a220, 0x34c35: 0x6c72a420, 0x34c36: 0x6c72a620, 0x34c37: 0x6c9b2e20,\n\t0x34c38: 0x6c9b3020, 0x34c39: 0x6c9b3220, 0x34c3a: 0x6c9b3420, 0x34c3b: 0x6c9b3620,\n\t0x34c3c: 0x6cc71820, 0x34c3d: 0x6cc71a20, 0x34c3e: 0x6cc71c20, 0x34c3f: 0x6cc71e20,\n\t// Block 0xd31, offset 0x34c40\n\t0x34c40: 0x6cc72020, 0x34c41: 0x6cf59a20, 0x34c42: 0x6d254c20, 0x34c43: 0x6cf59c20,\n\t0x34c44: 0x6cf59e20, 0x34c45: 0x6cf5a020, 0x34c46: 0x6d254e20, 0x34c47: 0x6d255020,\n\t0x34c48: 0x6d255220, 0x34c49: 0x6d52ce20, 0x34c4a: 0x6d52d020, 0x34c4b: 0x6d52d220,\n\t0x34c4c: 0x6da54620, 0x34c4d: 0x6da54820, 0x34c4e: 0x6dc6de20, 0x34c4f: 0x6de37020,\n\t0x34c50: 0x6dfad220, 0x34c51: 0x6c048c20, 0x34c52: 0x6c124420, 0x34c53: 0x6c214620,\n\t0x34c54: 0x6c359220, 0x34c55: 0x6c359420, 0x34c56: 0x6c359620, 0x34c57: 0x6c359820,\n\t0x34c58: 0x6c359a20, 0x34c59: 0x6c508a20, 0x34c5a: 0x6c508c20, 0x34c5b: 0x6c72ae20,\n\t0x34c5c: 0x6c72b020, 0x34c5d: 0x6c72b220, 0x34c5e: 0x6c9b3c20, 0x34c5f: 0x6c9b3e20,\n\t0x34c60: 0x6c9b4020, 0x34c61: 0x6cc72a20, 0x34c62: 0x6cc72c20, 0x34c63: 0x6cc72e20,\n\t0x34c64: 0x6cc73020, 0x34c65: 0x6cc73220, 0x34c66: 0x6cc73420, 0x34c67: 0x6cc73620,\n\t0x34c68: 0x6cc73820, 0x34c69: 0x6cc73a20, 0x34c6a: 0x6cc73c20, 0x34c6b: 0x6ca6ac20,\n\t0x34c6c: 0x6cc73e20, 0x34c6d: 0x6cc74020, 0x34c6e: 0x6cf5a420, 0x34c6f: 0x6cf5a620,\n\t0x34c70: 0x6cf5a820, 0x34c71: 0x6cf5aa20, 0x34c72: 0x6cf5ac20, 0x34c73: 0x6cf5ae20,\n\t0x34c74: 0x6cf5b020, 0x34c75: 0x6cf5b220, 0x34c76: 0x6d255a20, 0x34c77: 0x6d255c20,\n\t0x34c78: 0x6d255e20, 0x34c79: 0x6d256020, 0x34c7a: 0x6d256220, 0x34c7b: 0x6d52da20,\n\t0x34c7c: 0x6d52dc20, 0x34c7d: 0x6d52de20, 0x34c7e: 0x6d52e020, 0x34c7f: 0x6d52e220,\n\t// Block 0xd32, offset 0x34c80\n\t0x34c80: 0x6d7e0e20, 0x34c81: 0x6d7e1020, 0x34c82: 0x6d7e1220, 0x34c83: 0x6d7e1420,\n\t0x34c84: 0x6d7e1620, 0x34c85: 0x6d7e1820, 0x34c86: 0x6d7e1a20, 0x34c87: 0x6da55020,\n\t0x34c88: 0x6da55220, 0x34c89: 0x6da55420, 0x34c8a: 0x6da55620, 0x34c8b: 0x6da55820,\n\t0x34c8c: 0x6dc6e220, 0x34c8d: 0x6dc6e420, 0x34c8e: 0x6dc6e620, 0x34c8f: 0x6dc6e820,\n\t0x34c90: 0x6dc6ea20, 0x34c91: 0x6de37220, 0x34c92: 0x6de37420, 0x34c93: 0x6de37620,\n\t0x34c94: 0x6dfad420, 0x34c95: 0x6dfad620, 0x34c96: 0x6e1d9420, 0x34c97: 0x6c124820,\n\t0x34c98: 0x6c214820, 0x34c99: 0x6c214a20, 0x34c9a: 0x6c35a620, 0x34c9b: 0x6c35a820,\n\t0x34c9c: 0x6c35aa20, 0x34c9d: 0x6c509820, 0x34c9e: 0x6c509a20, 0x34c9f: 0x6c509c20,\n\t0x34ca0: 0x6c509e20, 0x34ca1: 0x6c50a020, 0x34ca2: 0x6c50a220, 0x34ca3: 0x6c50a420,\n\t0x34ca4: 0x6c50a620, 0x34ca5: 0x6c50a820, 0x34ca6: 0x6c72ca20, 0x34ca7: 0x6c72cc20,\n\t0x34ca8: 0x6c72ce20, 0x34ca9: 0x6c72d020, 0x34caa: 0x6c72d220, 0x34cab: 0x6c72d420,\n\t0x34cac: 0x6c72d620, 0x34cad: 0x6c72d820, 0x34cae: 0x6c72da20, 0x34caf: 0x6c72dc20,\n\t0x34cb0: 0x6c72de20, 0x34cb1: 0x6c72e020, 0x34cb2: 0x6c72e220, 0x34cb3: 0x6c9b5820,\n\t0x34cb4: 0x6c9b5a20, 0x34cb5: 0x6c9b5c20, 0x34cb6: 0x6c9b5e20, 0x34cb7: 0x6c9b6020,\n\t0x34cb8: 0x6c9b6220, 0x34cb9: 0x6c9b6420, 0x34cba: 0x6c9b6620, 0x34cbb: 0x6c9b6820,\n\t0x34cbc: 0x6cc74a20, 0x34cbd: 0x6cc74c20, 0x34cbe: 0x6cc74e20, 0x34cbf: 0x6cc75020,\n\t// Block 0xd33, offset 0x34cc0\n\t0x34cc0: 0x6cc75220, 0x34cc1: 0x6cc75420, 0x34cc2: 0x6cc75620, 0x34cc3: 0x6cc75820,\n\t0x34cc4: 0x6cc75a20, 0x34cc5: 0x6cc75c20, 0x34cc6: 0x6cc75e20, 0x34cc7: 0x6cc76020,\n\t0x34cc8: 0x6cf5be20, 0x34cc9: 0x6cf5c020, 0x34cca: 0x6cf5c220, 0x34ccb: 0x6cf5c420,\n\t0x34ccc: 0x6cf5c620, 0x34ccd: 0x6cf5c820, 0x34cce: 0x6d256820, 0x34ccf: 0x6d256a20,\n\t0x34cd0: 0x6d256c20, 0x34cd1: 0x6d256e20, 0x34cd2: 0x6d257020, 0x34cd3: 0x6d257220,\n\t0x34cd4: 0x6d52e820, 0x34cd5: 0x6d52ea20, 0x34cd6: 0x6d52ec20, 0x34cd7: 0x6d7e2020,\n\t0x34cd8: 0x6d7e2220, 0x34cd9: 0x6d7e2420, 0x34cda: 0x6d7e2620, 0x34cdb: 0x6d7e2820,\n\t0x34cdc: 0x6d7e2a20, 0x34cdd: 0x6da55c20, 0x34cde: 0x6dc6ee20, 0x34cdf: 0x6dc6f020,\n\t0x34ce0: 0x6dc6f220, 0x34ce1: 0x6dc6f420, 0x34ce2: 0x6dc6f620, 0x34ce3: 0x6dc6f820,\n\t0x34ce4: 0x6de37e20, 0x34ce5: 0x6dfada20, 0x34ce6: 0x6e0e4420, 0x34ce7: 0x6e1d9620,\n\t0x34ce8: 0x6e1d9820, 0x34ce9: 0x6e292c20, 0x34cea: 0x6e324820, 0x34ceb: 0x6e38a420,\n\t0x34cec: 0x6e3d2e20, 0x34ced: 0x6c124a20, 0x34cee: 0x6c214c20, 0x34cef: 0x6c214e20,\n\t0x34cf0: 0x6c50ae20, 0x34cf1: 0x6c72ea20, 0x34cf2: 0x6c72ec20, 0x34cf3: 0x6c72ee20,\n\t0x34cf4: 0x6cc76a20, 0x34cf5: 0x6cc76c20, 0x34cf6: 0x6cf5d020, 0x34cf7: 0x6cf5d220,\n\t0x34cf8: 0x6cf5d420, 0x34cf9: 0x6d52f220, 0x34cfa: 0x6d7e3020, 0x34cfb: 0x6c095820,\n\t0x34cfc: 0x6c095a20, 0x34cfd: 0x6c095c20, 0x34cfe: 0x6c126020, 0x34cff: 0x6c126220,\n\t// Block 0xd34, offset 0x34d00\n\t0x34d00: 0x6c126420, 0x34d01: 0x6c126620, 0x34d02: 0x6c126820, 0x34d03: 0x6c126a20,\n\t0x34d04: 0x6c216e20, 0x34d05: 0x6c126c20, 0x34d06: 0x6c217020, 0x34d07: 0x6c217220,\n\t0x34d08: 0x6c217420, 0x34d09: 0x6c217620, 0x34d0a: 0x6c217820, 0x34d0b: 0x6c217a20,\n\t0x34d0c: 0x6c217c20, 0x34d0d: 0x6c217e20, 0x34d0e: 0x6c218020, 0x34d0f: 0x6c218220,\n\t0x34d10: 0x6c218420, 0x34d11: 0x6c218620, 0x34d12: 0x6c218820, 0x34d13: 0x6c218a20,\n\t0x34d14: 0x6c218c20, 0x34d15: 0x6c218e20, 0x34d16: 0x6c219020, 0x34d17: 0x6c219220,\n\t0x34d18: 0x6c219420, 0x34d19: 0x6c219620, 0x34d1a: 0x6c35f820, 0x34d1b: 0x6c35fa20,\n\t0x34d1c: 0x6c35fc20, 0x34d1d: 0x6c35fe20, 0x34d1e: 0x6c360020, 0x34d1f: 0x6c360220,\n\t0x34d20: 0x6c360420, 0x34d21: 0x6c360620, 0x34d22: 0x6c360820, 0x34d23: 0x6c360a20,\n\t0x34d24: 0x6c360c20, 0x34d25: 0x6c360e20, 0x34d26: 0x6c361020, 0x34d27: 0x6c361220,\n\t0x34d28: 0x6c361420, 0x34d29: 0x6c361620, 0x34d2a: 0x6c361820, 0x34d2b: 0x6c361a20,\n\t0x34d2c: 0x6c361c20, 0x34d2d: 0x6c361e20, 0x34d2e: 0x6c362020, 0x34d2f: 0x6c362220,\n\t0x34d30: 0x6c362420, 0x34d31: 0x6c362620, 0x34d32: 0x6c362820, 0x34d33: 0x6c362a20,\n\t0x34d34: 0x6c362c20, 0x34d35: 0x6c362e20, 0x34d36: 0x6c363020, 0x34d37: 0x6c511020,\n\t0x34d38: 0x6c511220, 0x34d39: 0x6c511420, 0x34d3a: 0x6c511620, 0x34d3b: 0x6c511820,\n\t0x34d3c: 0x6c511a20, 0x34d3d: 0x6c511c20, 0x34d3e: 0x6c511e20, 0x34d3f: 0x6c512020,\n\t// Block 0xd35, offset 0x34d40\n\t0x34d40: 0x6c512220, 0x34d41: 0x6c512420, 0x34d42: 0x6c512620, 0x34d43: 0x6c512820,\n\t0x34d44: 0x6c512a20, 0x34d45: 0x6c512c20, 0x34d46: 0x6c512e20, 0x34d47: 0x6c513020,\n\t0x34d48: 0x6c513220, 0x34d49: 0x6c515e20, 0x34d4a: 0x6c513420, 0x34d4b: 0x6c513620,\n\t0x34d4c: 0x6c513820, 0x34d4d: 0x6c513a20, 0x34d4e: 0x6c513c20, 0x34d4f: 0x6c513e20,\n\t0x34d50: 0x6c514020, 0x34d51: 0x6c514220, 0x34d52: 0x6c733220, 0x34d53: 0x6c733420,\n\t0x34d54: 0x6c733620, 0x34d55: 0x6c733820, 0x34d56: 0x6c733a20, 0x34d57: 0x6c733c20,\n\t0x34d58: 0x6c733e20, 0x34d59: 0x6c734020, 0x34d5a: 0x6c734220, 0x34d5b: 0x6c734420,\n\t0x34d5c: 0x6c734620, 0x34d5d: 0x6c734820, 0x34d5e: 0x6c734a20, 0x34d5f: 0x6c734c20,\n\t0x34d60: 0x6c734e20, 0x34d61: 0x6c735020, 0x34d62: 0x6c735220, 0x34d63: 0x6c735420,\n\t0x34d64: 0x6c735620, 0x34d65: 0x6c735820, 0x34d66: 0x6c735a20, 0x34d67: 0x6c735c20,\n\t0x34d68: 0x6c735e20, 0x34d69: 0x6c736020, 0x34d6a: 0x6c736220, 0x34d6b: 0x6c736420,\n\t0x34d6c: 0x6c736620, 0x34d6d: 0x6c736820, 0x34d6e: 0x6c736a20, 0x34d6f: 0x6c736c20,\n\t0x34d70: 0x6c736e20, 0x34d71: 0x6c737020, 0x34d72: 0x6c9ba220, 0x34d73: 0x6c9ba420,\n\t0x34d74: 0x6c9ba620, 0x34d75: 0x6c9ba820, 0x34d76: 0x6c9baa20, 0x34d77: 0x6c9bac20,\n\t0x34d78: 0x6c9bae20, 0x34d79: 0x6c9bb020, 0x34d7a: 0x6c9bb220, 0x34d7b: 0x6c9bb420,\n\t0x34d7c: 0x6c9bb620, 0x34d7d: 0x6c9bb820, 0x34d7e: 0x6c9bba20, 0x34d7f: 0x6c9bbc20,\n\t// Block 0xd36, offset 0x34d80\n\t0x34d80: 0x6c9bbe20, 0x34d81: 0x6c9bc020, 0x34d82: 0x6c9bc220, 0x34d83: 0x6c9bc420,\n\t0x34d84: 0x6c9bc620, 0x34d85: 0x6c9bc820, 0x34d86: 0x6c9bca20, 0x34d87: 0x6c9bcc20,\n\t0x34d88: 0x6c9bce20, 0x34d89: 0x6c9bd020, 0x34d8a: 0x6c9bd220, 0x34d8b: 0x6c9bd420,\n\t0x34d8c: 0x6c9bd620, 0x34d8d: 0x6c9bd820, 0x34d8e: 0x6c9bda20, 0x34d8f: 0x6c9bdc20,\n\t0x34d90: 0x6c9bde20, 0x34d91: 0x6c9be020, 0x34d92: 0x6c9be220, 0x34d93: 0x6c9be420,\n\t0x34d94: 0x6c9be620, 0x34d95: 0x6c9be820, 0x34d96: 0x6c9bea20, 0x34d97: 0x6c9bec20,\n\t0x34d98: 0x6c9bee20, 0x34d99: 0x6c9bf020, 0x34d9a: 0x6c9bf220, 0x34d9b: 0x6c9bf420,\n\t0x34d9c: 0x6c9bf620, 0x34d9d: 0x6c9bf820, 0x34d9e: 0x6c9bfa20, 0x34d9f: 0x6c9bfc20,\n\t0x34da0: 0x6c9bfe20, 0x34da1: 0x6c9c0020, 0x34da2: 0x6cc7ba20, 0x34da3: 0x6cc7bc20,\n\t0x34da4: 0x6cc7be20, 0x34da5: 0x6cc7c020, 0x34da6: 0x6cc7c220, 0x34da7: 0x6cc7c420,\n\t0x34da8: 0x6cc7c620, 0x34da9: 0x6cc7c820, 0x34daa: 0x6cc7ca20, 0x34dab: 0x6cc7cc20,\n\t0x34dac: 0x6cc7ce20, 0x34dad: 0x6cc7d020, 0x34dae: 0x6cc7d220, 0x34daf: 0x6cc7d420,\n\t0x34db0: 0x6cc7d620, 0x34db1: 0x6cc7d820, 0x34db2: 0x6cc7da20, 0x34db3: 0x6cc7dc20,\n\t0x34db4: 0x6cc7de20, 0x34db5: 0x6cc7e020, 0x34db6: 0x6cc7e220, 0x34db7: 0x6cc7e420,\n\t0x34db8: 0x6cc7e620, 0x34db9: 0x6cc7e820, 0x34dba: 0x6cc7ea20, 0x34dbb: 0x6cc7ec20,\n\t0x34dbc: 0x6cc7ee20, 0x34dbd: 0x6cc7f020, 0x34dbe: 0x6cc7f220, 0x34dbf: 0x6cc7f420,\n\t// Block 0xd37, offset 0x34dc0\n\t0x34dc0: 0x6cc7f620, 0x34dc1: 0x6cc7f820, 0x34dc2: 0x6cc7fa20, 0x34dc3: 0x6cc7fc20,\n\t0x34dc4: 0x6cc7fe20, 0x34dc5: 0x6cc80020, 0x34dc6: 0x6cc80220, 0x34dc7: 0x6cc80420,\n\t0x34dc8: 0x6cc80620, 0x34dc9: 0x6cc80820, 0x34dca: 0x6cc80a20, 0x34dcb: 0x6cc80c20,\n\t0x34dcc: 0x6cc80e20, 0x34dcd: 0x6cc81020, 0x34dce: 0x6cc81220, 0x34dcf: 0x6cc81420,\n\t0x34dd0: 0x6cc81620, 0x34dd1: 0x6cc81820, 0x34dd2: 0x6cc81a20, 0x34dd3: 0x6cc81c20,\n\t0x34dd4: 0x6cc81e20, 0x34dd5: 0x6cc82020, 0x34dd6: 0x6cc82220, 0x34dd7: 0x6cc82420,\n\t0x34dd8: 0x6cc82620, 0x34dd9: 0x6cc82820, 0x34dda: 0x6cc82a20, 0x34ddb: 0x6cc82c20,\n\t0x34ddc: 0x6cc82e20, 0x34ddd: 0x6cc83020, 0x34dde: 0x6cc83220, 0x34ddf: 0x6cc83420,\n\t0x34de0: 0x6cc83620, 0x34de1: 0x6cc83820, 0x34de2: 0x6cc83a20, 0x34de3: 0x6cc83c20,\n\t0x34de4: 0x6cf61a20, 0x34de5: 0x6cf61c20, 0x34de6: 0x6cf61e20, 0x34de7: 0x6cf62020,\n\t0x34de8: 0x6cf62220, 0x34de9: 0x6cf62420, 0x34dea: 0x6cf62620, 0x34deb: 0x6cf62820,\n\t0x34dec: 0x6cf62a20, 0x34ded: 0x6cf62c20, 0x34dee: 0x6cf62e20, 0x34def: 0x6cf63020,\n\t0x34df0: 0x6cf63220, 0x34df1: 0x6cf63420, 0x34df2: 0x6cf63620, 0x34df3: 0x6cf63820,\n\t0x34df4: 0x6cf63a20, 0x34df5: 0x6cf63c20, 0x34df6: 0x6cf63e20, 0x34df7: 0x6cf64020,\n\t0x34df8: 0x6cf64220, 0x34df9: 0x6cf64420, 0x34dfa: 0x6cf64620, 0x34dfb: 0x6cf64820,\n\t0x34dfc: 0x6cf64a20, 0x34dfd: 0x6cf64c20, 0x34dfe: 0x6cf64e20, 0x34dff: 0x6cf65020,\n\t// Block 0xd38, offset 0x34e00\n\t0x34e00: 0x6cf65220, 0x34e01: 0x6cf65420, 0x34e02: 0x6cf65620, 0x34e03: 0x6cf65820,\n\t0x34e04: 0x6cf65a20, 0x34e05: 0x6cf65c20, 0x34e06: 0x6cf65e20, 0x34e07: 0x6cf66020,\n\t0x34e08: 0x6cf66220, 0x34e09: 0x6cf66420, 0x34e0a: 0x6cf66620, 0x34e0b: 0x6cf66820,\n\t0x34e0c: 0x6cf66a20, 0x34e0d: 0x6cf66c20, 0x34e0e: 0x6cf66e20, 0x34e0f: 0x6cf67020,\n\t0x34e10: 0x6cf67220, 0x34e11: 0x6cf67420, 0x34e12: 0x6d259c20, 0x34e13: 0x6d259e20,\n\t0x34e14: 0x6d25a020, 0x34e15: 0x6d25a220, 0x34e16: 0x6d25a420, 0x34e17: 0x6d25a620,\n\t0x34e18: 0x6d25a820, 0x34e19: 0x6d25aa20, 0x34e1a: 0x6d25ac20, 0x34e1b: 0x6d25ae20,\n\t0x34e1c: 0x6d25b020, 0x34e1d: 0x6d25b220, 0x34e1e: 0x6d25b420, 0x34e1f: 0x6d25b620,\n\t0x34e20: 0x6d25b820, 0x34e21: 0x6cf1ac20, 0x34e22: 0x6d25ba20, 0x34e23: 0x6d25bc20,\n\t0x34e24: 0x6d25be20, 0x34e25: 0x6d25c020, 0x34e26: 0x6d25c220, 0x34e27: 0x6d25c420,\n\t0x34e28: 0x6d25c620, 0x34e29: 0x6d25c820, 0x34e2a: 0x6d25ca20, 0x34e2b: 0x6d25cc20,\n\t0x34e2c: 0x6d25ce20, 0x34e2d: 0x6d25d020, 0x34e2e: 0x6d25d220, 0x34e2f: 0x6d25d420,\n\t0x34e30: 0x6d25d620, 0x34e31: 0x6d25d820, 0x34e32: 0x6d25da20, 0x34e33: 0x6d25dc20,\n\t0x34e34: 0x6d25de20, 0x34e35: 0x6d25e020, 0x34e36: 0x6d25e220, 0x34e37: 0x6d25e420,\n\t0x34e38: 0x6d25e620, 0x34e39: 0x6d25e820, 0x34e3a: 0x6d25ea20, 0x34e3b: 0x6d531e20,\n\t0x34e3c: 0x6d532020, 0x34e3d: 0x6d532220, 0x34e3e: 0x6d532420, 0x34e3f: 0x6d532620,\n\t// Block 0xd39, offset 0x34e40\n\t0x34e40: 0x6d532820, 0x34e41: 0x6d532a20, 0x34e42: 0x6d532c20, 0x34e43: 0x6d532e20,\n\t0x34e44: 0x6d533020, 0x34e45: 0x6d533220, 0x34e46: 0x6d533420, 0x34e47: 0x6d533620,\n\t0x34e48: 0x6d533820, 0x34e49: 0x6d7e7020, 0x34e4a: 0x6d533a20, 0x34e4b: 0x6d533c20,\n\t0x34e4c: 0x6d533e20, 0x34e4d: 0x6d534020, 0x34e4e: 0x6d534220, 0x34e4f: 0x6d534420,\n\t0x34e50: 0x6d534620, 0x34e51: 0x6d534820, 0x34e52: 0x6d4d3220, 0x34e53: 0x6d534a20,\n\t0x34e54: 0x6d534c20, 0x34e55: 0x6d534e20, 0x34e56: 0x6d535020, 0x34e57: 0x6d535220,\n\t0x34e58: 0x6d535420, 0x34e59: 0x6d535620, 0x34e5a: 0x6d535820, 0x34e5b: 0x6d535a20,\n\t0x34e5c: 0x6d535c20, 0x34e5d: 0x6d535e20, 0x34e5e: 0x6d7e7220, 0x34e5f: 0x6d7e7420,\n\t0x34e60: 0x6d7e7620, 0x34e61: 0x6d7e7820, 0x34e62: 0x6d7e7a20, 0x34e63: 0x6d7e7c20,\n\t0x34e64: 0x6d7e7e20, 0x34e65: 0x6d7e8020, 0x34e66: 0x6d7e8220, 0x34e67: 0x6d7e8420,\n\t0x34e68: 0x6d7e8620, 0x34e69: 0x6d7e8820, 0x34e6a: 0x6d7e8a20, 0x34e6b: 0x6d7e8c20,\n\t0x34e6c: 0x6d7e8e20, 0x34e6d: 0x6d7e9020, 0x34e6e: 0x6d7e9220, 0x34e6f: 0x6d7e9420,\n\t0x34e70: 0x6d7e9620, 0x34e71: 0x6d7e9820, 0x34e72: 0x6d7e9a20, 0x34e73: 0x6d7e9c20,\n\t0x34e74: 0x6d7e9e20, 0x34e75: 0x6d7ea020, 0x34e76: 0x6d7ea220, 0x34e77: 0x6d7ea420,\n\t0x34e78: 0x6d7ea620, 0x34e79: 0x6d7ea820, 0x34e7a: 0x6d7eaa20, 0x34e7b: 0x6d7eac20,\n\t0x34e7c: 0x6d7eae20, 0x34e7d: 0x6d7eb020, 0x34e7e: 0x6d7eb220, 0x34e7f: 0x6d7eb420,\n\t// Block 0xd3a, offset 0x34e80\n\t0x34e80: 0x6d7eb620, 0x34e81: 0x6d7eb820, 0x34e82: 0x6d7eba20, 0x34e83: 0x6d7ebc20,\n\t0x34e84: 0x6d7ebe20, 0x34e85: 0x6d7ec020, 0x34e86: 0x6d7ec220, 0x34e87: 0x6d536020,\n\t0x34e88: 0x6d7ec420, 0x34e89: 0x6da57a20, 0x34e8a: 0x6da57c20, 0x34e8b: 0x6da57e20,\n\t0x34e8c: 0x6da58020, 0x34e8d: 0x6da58220, 0x34e8e: 0x6da58420, 0x34e8f: 0x6da58620,\n\t0x34e90: 0x6da58820, 0x34e91: 0x6da58a20, 0x34e92: 0x6da58c20, 0x34e93: 0x6da58e20,\n\t0x34e94: 0x6da59020, 0x34e95: 0x6da59220, 0x34e96: 0x6da59420, 0x34e97: 0x6da59620,\n\t0x34e98: 0x6da59820, 0x34e99: 0x6da59a20, 0x34e9a: 0x6da59c20, 0x34e9b: 0x6da59e20,\n\t0x34e9c: 0x6da5a020, 0x34e9d: 0x6da5a220, 0x34e9e: 0x6dc70e20, 0x34e9f: 0x6dc71020,\n\t0x34ea0: 0x6dc71220, 0x34ea1: 0x6dc71420, 0x34ea2: 0x6dc71620, 0x34ea3: 0x6dc71820,\n\t0x34ea4: 0x6dc71a20, 0x34ea5: 0x6dc71c20, 0x34ea6: 0x6dc71e20, 0x34ea7: 0x6dc72020,\n\t0x34ea8: 0x6dc72220, 0x34ea9: 0x6dc72420, 0x34eaa: 0x6dc72620, 0x34eab: 0x6dc72820,\n\t0x34eac: 0x6dc72a20, 0x34ead: 0x6dc72c20, 0x34eae: 0x6dc72e20, 0x34eaf: 0x6dc73020,\n\t0x34eb0: 0x6dc73220, 0x34eb1: 0x6dc73420, 0x34eb2: 0x6de39420, 0x34eb3: 0x6de39620,\n\t0x34eb4: 0x6de39820, 0x34eb5: 0x6de39a20, 0x34eb6: 0x6de39c20, 0x34eb7: 0x6de39e20,\n\t0x34eb8: 0x6de3a020, 0x34eb9: 0x6de3a220, 0x34eba: 0x6de3a420, 0x34ebb: 0x6de3a620,\n\t0x34ebc: 0x6de3a820, 0x34ebd: 0x6de3aa20, 0x34ebe: 0x6de3ac20, 0x34ebf: 0x6dfaec20,\n\t// Block 0xd3b, offset 0x34ec0\n\t0x34ec0: 0x6dfaee20, 0x34ec1: 0x6dfaf020, 0x34ec2: 0x6dfaf220, 0x34ec3: 0x6dfaf420,\n\t0x34ec4: 0x6dfaf620, 0x34ec5: 0x6dfaf820, 0x34ec6: 0x6dfafa20, 0x34ec7: 0x6dfafc20,\n\t0x34ec8: 0x6e0e4820, 0x34ec9: 0x6e0e4a20, 0x34eca: 0x6e0e4c20, 0x34ecb: 0x6e0e4e20,\n\t0x34ecc: 0x6e0e5020, 0x34ecd: 0x6e1d9e20, 0x34ece: 0x6e1da020, 0x34ecf: 0x6e1da220,\n\t0x34ed0: 0x6e1da420, 0x34ed1: 0x6e1da620, 0x34ed2: 0x6e1da820, 0x34ed3: 0x6e1daa20,\n\t0x34ed4: 0x6e1dac20, 0x34ed5: 0x6e1dae20, 0x34ed6: 0x6e293620, 0x34ed7: 0x6e324e20,\n\t0x34ed8: 0x6e325020, 0x34ed9: 0x6e325220, 0x34eda: 0x6e348820, 0x34edb: 0x6e325420,\n\t0x34edc: 0x6e38aa20, 0x34edd: 0x6e38ac20, 0x34ede: 0x6e40ba20, 0x34edf: 0x6e42a220,\n\t0x34ee0: 0x6e46e620, 0x34ee1: 0x6c21a020, 0x34ee2: 0x6c21a220, 0x34ee3: 0x6c364220,\n\t0x34ee4: 0x6c364420, 0x34ee5: 0x6c364620, 0x34ee6: 0x6c364820, 0x34ee7: 0x6c516020,\n\t0x34ee8: 0x6c516220, 0x34ee9: 0x6c516420, 0x34eea: 0x6c516620, 0x34eeb: 0x6c516820,\n\t0x34eec: 0x6c516a20, 0x34eed: 0x6c739420, 0x34eee: 0x6c739620, 0x34eef: 0x6c739820,\n\t0x34ef0: 0x6c739a20, 0x34ef1: 0x6c739c20, 0x34ef2: 0x6c739e20, 0x34ef3: 0x6c73a020,\n\t0x34ef4: 0x6c73a220, 0x34ef5: 0x6c73a420, 0x34ef6: 0x6c73a620, 0x34ef7: 0x6c9c0e20,\n\t0x34ef8: 0x6c9c1020, 0x34ef9: 0x6c9c1220, 0x34efa: 0x6c9c1420, 0x34efb: 0x6cc85220,\n\t0x34efc: 0x6cc85420, 0x34efd: 0x6cc85620, 0x34efe: 0x6cf68a20, 0x34eff: 0x6cf68c20,\n\t// Block 0xd3c, offset 0x34f00\n\t0x34f00: 0x6cf68e20, 0x34f01: 0x6cf69020, 0x34f02: 0x6cf69220, 0x34f03: 0x6d25fc20,\n\t0x34f04: 0x6d25fe20, 0x34f05: 0x6d260020, 0x34f06: 0x6d537420, 0x34f07: 0x6d537620,\n\t0x34f08: 0x6d537820, 0x34f09: 0x6d537a20, 0x34f0a: 0x6d537c20, 0x34f0b: 0x6d7ed820,\n\t0x34f0c: 0x6d7eda20, 0x34f0d: 0x6d7edc20, 0x34f0e: 0x6d7ede20, 0x34f0f: 0x6da5ac20,\n\t0x34f10: 0x6da5ae20, 0x34f11: 0x6dc73e20, 0x34f12: 0x6dc74020, 0x34f13: 0x6dc74220,\n\t0x34f14: 0x6dc74420, 0x34f15: 0x6dc74620, 0x34f16: 0x6de3ae20, 0x34f17: 0x6de3b020,\n\t0x34f18: 0x6dfafe20, 0x34f19: 0x6dfb0020, 0x34f1a: 0x6e325820, 0x34f1b: 0x6e42a420,\n\t0x34f1c: 0x6e46c620, 0x34f1d: 0x6c096020, 0x34f1e: 0x6c127620, 0x34f1f: 0x6c21a420,\n\t0x34f20: 0x6c21a620, 0x34f21: 0x6c21a820, 0x34f22: 0x6c21aa20, 0x34f23: 0x6c21ac20,\n\t0x34f24: 0x6c365420, 0x34f25: 0x6c517420, 0x34f26: 0x6c517620, 0x34f27: 0x6c517820,\n\t0x34f28: 0x6c5dc820, 0x34f29: 0x6c517a20, 0x34f2a: 0x6c517c20, 0x34f2b: 0x6c517e20,\n\t0x34f2c: 0x6c518020, 0x34f2d: 0x6c73b620, 0x34f2e: 0x6c73b820, 0x34f2f: 0x6c825c20,\n\t0x34f30: 0x6c825e20, 0x34f31: 0x6c9c2420, 0x34f32: 0x6c9c2620, 0x34f33: 0x6c9c2820,\n\t0x34f34: 0x6c9c2a20, 0x34f35: 0x6c9c2c20, 0x34f36: 0x6c9c2e20, 0x34f37: 0x6cc86220,\n\t0x34f38: 0x6cc86420, 0x34f39: 0x6cc86620, 0x34f3a: 0x6cc86820, 0x34f3b: 0x6cc86a20,\n\t0x34f3c: 0x6cc86c20, 0x34f3d: 0x6cc86e20, 0x34f3e: 0x6cc87020, 0x34f3f: 0x6cc87220,\n\t// Block 0xd3d, offset 0x34f40\n\t0x34f40: 0x6cc87420, 0x34f41: 0x6cc87620, 0x34f42: 0x6cc87820, 0x34f43: 0x6cc87a20,\n\t0x34f44: 0x6cf69820, 0x34f45: 0x6cf69a20, 0x34f46: 0x6cf69c20, 0x34f47: 0x6cf69e20,\n\t0x34f48: 0x6cf6a020, 0x34f49: 0x6cf6a220, 0x34f4a: 0x6cf6a420, 0x34f4b: 0x6cf6a620,\n\t0x34f4c: 0x6cf6a820, 0x34f4d: 0x6d260820, 0x34f4e: 0x6d260a20, 0x34f4f: 0x6d260c20,\n\t0x34f50: 0x6d260e20, 0x34f51: 0x6d261020, 0x34f52: 0x6d538820, 0x34f53: 0x6d538a20,\n\t0x34f54: 0x6d538c20, 0x34f55: 0x6d538e20, 0x34f56: 0x6d539020, 0x34f57: 0x6d539220,\n\t0x34f58: 0x6d539420, 0x34f59: 0x6d539620, 0x34f5a: 0x6d7eec20, 0x34f5b: 0x6d7eee20,\n\t0x34f5c: 0x6da5b220, 0x34f5d: 0x6d7ef020, 0x34f5e: 0x6d7ef220, 0x34f5f: 0x6d7ef420,\n\t0x34f60: 0x6d7ef620, 0x34f61: 0x6d7ef820, 0x34f62: 0x6d7efa20, 0x34f63: 0x6da5b420,\n\t0x34f64: 0x6da5b620, 0x34f65: 0x6da5b820, 0x34f66: 0x6da5ba20, 0x34f67: 0x6da5bc20,\n\t0x34f68: 0x6da5be20, 0x34f69: 0x6dc74a20, 0x34f6a: 0x6dc74c20, 0x34f6b: 0x6dc74e20,\n\t0x34f6c: 0x6dc75020, 0x34f6d: 0x6dc75220, 0x34f6e: 0x6dfb0420, 0x34f6f: 0x6dfb0620,\n\t0x34f70: 0x6e1db020, 0x34f71: 0x6e293820, 0x34f72: 0x6e325a20, 0x34f73: 0x6c04a220,\n\t0x34f74: 0x6c04a420, 0x34f75: 0x6c097020, 0x34f76: 0x6c097220, 0x34f77: 0x6c097420,\n\t0x34f78: 0x6c12a220, 0x34f79: 0x6c12a420, 0x34f7a: 0x6c12a620, 0x34f7b: 0x6c12a820,\n\t0x34f7c: 0x6c12aa20, 0x34f7d: 0x6c12ac20, 0x34f7e: 0x6c12ae20, 0x34f7f: 0x6c12b020,\n\t// Block 0xd3e, offset 0x34f80\n\t0x34f80: 0x6c12b220, 0x34f81: 0x6c220820, 0x34f82: 0x6c220a20, 0x34f83: 0x6c220c20,\n\t0x34f84: 0x6c220e20, 0x34f85: 0x6c221020, 0x34f86: 0x6c221220, 0x34f87: 0x6c221420,\n\t0x34f88: 0x6c221620, 0x34f89: 0x6c221820, 0x34f8a: 0x6c221a20, 0x34f8b: 0x6c221c20,\n\t0x34f8c: 0x6c221e20, 0x34f8d: 0x6c222020, 0x34f8e: 0x6c222220, 0x34f8f: 0x6c222420,\n\t0x34f90: 0x6c222620, 0x34f91: 0x6c222820, 0x34f92: 0x6c222a20, 0x34f93: 0x6c222c20,\n\t0x34f94: 0x6c36f220, 0x34f95: 0x6c36f420, 0x34f96: 0x6c36f620, 0x34f97: 0x6c36f820,\n\t0x34f98: 0x6c36fa20, 0x34f99: 0x6c36fc20, 0x34f9a: 0x6c36fe20, 0x34f9b: 0x6c370020,\n\t0x34f9c: 0x6c370220, 0x34f9d: 0x6c370420, 0x34f9e: 0x6c370620, 0x34f9f: 0x6c370820,\n\t0x34fa0: 0x6c370a20, 0x34fa1: 0x6c370c20, 0x34fa2: 0x6c370e20, 0x34fa3: 0x6c371020,\n\t0x34fa4: 0x6c371220, 0x34fa5: 0x6c371420, 0x34fa6: 0x6c371620, 0x34fa7: 0x6c371820,\n\t0x34fa8: 0x6c371a20, 0x34fa9: 0x6c371c20, 0x34faa: 0x6c371e20, 0x34fab: 0x6c372020,\n\t0x34fac: 0x6c372220, 0x34fad: 0x6c372420, 0x34fae: 0x6c372620, 0x34faf: 0x6c372820,\n\t0x34fb0: 0x6c372a20, 0x34fb1: 0x6c372c20, 0x34fb2: 0x6c372e20, 0x34fb3: 0x6c373020,\n\t0x34fb4: 0x6c373220, 0x34fb5: 0x6c373420, 0x34fb6: 0x6c373620, 0x34fb7: 0x6c373820,\n\t0x34fb8: 0x6c373a20, 0x34fb9: 0x6c373c20, 0x34fba: 0x6c373e20, 0x34fbb: 0x6c374020,\n\t0x34fbc: 0x6c374220, 0x34fbd: 0x6c374420, 0x34fbe: 0x6c374620, 0x34fbf: 0x6c374820,\n\t// Block 0xd3f, offset 0x34fc0\n\t0x34fc0: 0x6c374a20, 0x34fc1: 0x6c374c20, 0x34fc2: 0x6c374e20, 0x34fc3: 0x6c375020,\n\t0x34fc4: 0x6c375220, 0x34fc5: 0x6c375420, 0x34fc6: 0x6c375620, 0x34fc7: 0x6c375820,\n\t0x34fc8: 0x6c525420, 0x34fc9: 0x6c525620, 0x34fca: 0x6c525820, 0x34fcb: 0x6c525a20,\n\t0x34fcc: 0x6c525c20, 0x34fcd: 0x6c525e20, 0x34fce: 0x6c526020, 0x34fcf: 0x6c526220,\n\t0x34fd0: 0x6c526420, 0x34fd1: 0x6c526620, 0x34fd2: 0x6c526820, 0x34fd3: 0x6c526a20,\n\t0x34fd4: 0x6c526c20, 0x34fd5: 0x6c526e20, 0x34fd6: 0x6c527020, 0x34fd7: 0x6c527220,\n\t0x34fd8: 0x6c527420, 0x34fd9: 0x6c527620, 0x34fda: 0x6c527820, 0x34fdb: 0x6c527a20,\n\t0x34fdc: 0x6c527c20, 0x34fdd: 0x6c527e20, 0x34fde: 0x6c528020, 0x34fdf: 0x6c528220,\n\t0x34fe0: 0x6c528420, 0x34fe1: 0x6c528620, 0x34fe2: 0x6c528820, 0x34fe3: 0x6c528a20,\n\t0x34fe4: 0x6c528c20, 0x34fe5: 0x6c528e20, 0x34fe6: 0x6c529020, 0x34fe7: 0x6c529220,\n\t0x34fe8: 0x6c529420, 0x34fe9: 0x6c529620, 0x34fea: 0x6c529820, 0x34feb: 0x6c529a20,\n\t0x34fec: 0x6c529c20, 0x34fed: 0x6c529e20, 0x34fee: 0x6c52a020, 0x34fef: 0x6c52a220,\n\t0x34ff0: 0x6c52a420, 0x34ff1: 0x6c52a620, 0x34ff2: 0x6c52a820, 0x34ff3: 0x6c52aa20,\n\t0x34ff4: 0x6c52ac20, 0x34ff5: 0x6c749820, 0x34ff6: 0x6c749a20, 0x34ff7: 0x6c749c20,\n\t0x34ff8: 0x6c749e20, 0x34ff9: 0x6c74a020, 0x34ffa: 0x6c74a220, 0x34ffb: 0x6c74a420,\n\t0x34ffc: 0x6c74a620, 0x34ffd: 0x6c74a820, 0x34ffe: 0x6c74aa20, 0x34fff: 0x6c74ac20,\n\t// Block 0xd40, offset 0x35000\n\t0x35000: 0x6c74ae20, 0x35001: 0x6c74b020, 0x35002: 0x6c74b220, 0x35003: 0x6c74b420,\n\t0x35004: 0x6c74b620, 0x35005: 0x6c74b820, 0x35006: 0x6c74ba20, 0x35007: 0x6c74bc20,\n\t0x35008: 0x6c74be20, 0x35009: 0x6c74c020, 0x3500a: 0x6c74c220, 0x3500b: 0x6c74c420,\n\t0x3500c: 0x6c74c620, 0x3500d: 0x6c74c820, 0x3500e: 0x6c74ca20, 0x3500f: 0x6c74cc20,\n\t0x35010: 0x6c74ce20, 0x35011: 0x6c74d020, 0x35012: 0x6c74d220, 0x35013: 0x6c74d420,\n\t0x35014: 0x6c74d620, 0x35015: 0x6c74d820, 0x35016: 0x6c74da20, 0x35017: 0x6c74dc20,\n\t0x35018: 0x6c74de20, 0x35019: 0x6c74e020, 0x3501a: 0x6c74e220, 0x3501b: 0x6c74e420,\n\t0x3501c: 0x6c74e620, 0x3501d: 0x6c74e820, 0x3501e: 0x6c74ea20, 0x3501f: 0x6c74ec20,\n\t0x35020: 0x6c74ee20, 0x35021: 0x6c74f020, 0x35022: 0x6c74f220, 0x35023: 0x6c74f420,\n\t0x35024: 0x6c74f620, 0x35025: 0x6c74f820, 0x35026: 0x6c74fa20, 0x35027: 0x6c6a4c20,\n\t0x35028: 0x6c74fc20, 0x35029: 0x6c74fe20, 0x3502a: 0x6c750020, 0x3502b: 0x6c750220,\n\t0x3502c: 0x6c750420, 0x3502d: 0x6c750620, 0x3502e: 0x6c750820, 0x3502f: 0x6c750a20,\n\t0x35030: 0x6c750c20, 0x35031: 0x6c750e20, 0x35032: 0x6c751020, 0x35033: 0x6c751220,\n\t0x35034: 0x6c751420, 0x35035: 0x6c751620, 0x35036: 0x6c751820, 0x35037: 0x6c751a20,\n\t0x35038: 0x6c751c20, 0x35039: 0x6c751e20, 0x3503a: 0x6c752020, 0x3503b: 0x6c752220,\n\t0x3503c: 0x6c752420, 0x3503d: 0x6c752620, 0x3503e: 0x6c752820, 0x3503f: 0x6c9d0220,\n\t// Block 0xd41, offset 0x35040\n\t0x35040: 0x6c9d0420, 0x35041: 0x6c9d0620, 0x35042: 0x6c9d0820, 0x35043: 0x6c9d0a20,\n\t0x35044: 0x6c9d0c20, 0x35045: 0x6c9d0e20, 0x35046: 0x6c9d1020, 0x35047: 0x6c9d1220,\n\t0x35048: 0x6c9d1420, 0x35049: 0x6c9d1620, 0x3504a: 0x6c9d1820, 0x3504b: 0x6c9d1a20,\n\t0x3504c: 0x6c9d1c20, 0x3504d: 0x6c9d1e20, 0x3504e: 0x6c9d2020, 0x3504f: 0x6c9d2220,\n\t0x35050: 0x6c9d2420, 0x35051: 0x6c9d2620, 0x35052: 0x6c9d2820, 0x35053: 0x6c9d2a20,\n\t0x35054: 0x6c9d2c20, 0x35055: 0x6c9d2e20, 0x35056: 0x6c9d3020, 0x35057: 0x6c9d3220,\n\t0x35058: 0x6c9d3420, 0x35059: 0x6c9d3620, 0x3505a: 0x6c9d3820, 0x3505b: 0x6c9d3a20,\n\t0x3505c: 0x6c9d3c20, 0x3505d: 0x6c9d3e20, 0x3505e: 0x6c9d4020, 0x3505f: 0x6c9d4220,\n\t0x35060: 0x6c9d4420, 0x35061: 0x6c9d4620, 0x35062: 0x6c9d4820, 0x35063: 0x6c9d4a20,\n\t0x35064: 0x6c9d4c20, 0x35065: 0x6c9d4e20, 0x35066: 0x6c9d5020, 0x35067: 0x6c9d5220,\n\t0x35068: 0x6c9d5420, 0x35069: 0x6c9d5620, 0x3506a: 0x6c9d5820, 0x3506b: 0x6c9d5a20,\n\t0x3506c: 0x6c9d5c20, 0x3506d: 0x6c9d5e20, 0x3506e: 0x6c9d6020, 0x3506f: 0x6c9d6220,\n\t0x35070: 0x6c9d6420, 0x35071: 0x6c9d6620, 0x35072: 0x6c9d6820, 0x35073: 0x6c9d6a20,\n\t0x35074: 0x6c9d6c20, 0x35075: 0x6c9d6e20, 0x35076: 0x6c9d7020, 0x35077: 0x6c9d7220,\n\t0x35078: 0x6c9d7420, 0x35079: 0x6c9d7620, 0x3507a: 0x6c9d7820, 0x3507b: 0x6c9d7a20,\n\t0x3507c: 0x6c9d7c20, 0x3507d: 0x6c9d7e20, 0x3507e: 0x6c9d8020, 0x3507f: 0x6c9d8220,\n\t// Block 0xd42, offset 0x35080\n\t0x35080: 0x6c9d8420, 0x35081: 0x6cc98620, 0x35082: 0x6cc98820, 0x35083: 0x6cc98a20,\n\t0x35084: 0x6cc98c20, 0x35085: 0x6cc98e20, 0x35086: 0x6cc99020, 0x35087: 0x6cc99220,\n\t0x35088: 0x6cc99420, 0x35089: 0x6cc99620, 0x3508a: 0x6cc99820, 0x3508b: 0x6cc99a20,\n\t0x3508c: 0x6cc99c20, 0x3508d: 0x6cc99e20, 0x3508e: 0x6cc9a020, 0x3508f: 0x6cc9a220,\n\t0x35090: 0x6cc9a420, 0x35091: 0x6cc9a620, 0x35092: 0x6cc9a820, 0x35093: 0x6cc9aa20,\n\t0x35094: 0x6cc9ac20, 0x35095: 0x6cc9ae20, 0x35096: 0x6cc9b020, 0x35097: 0x6cc9b220,\n\t0x35098: 0x6cc9b420, 0x35099: 0x6cc9b620, 0x3509a: 0x6cc9b820, 0x3509b: 0x6cc9ba20,\n\t0x3509c: 0x6cc9bc20, 0x3509d: 0x6cc9be20, 0x3509e: 0x6cc9c020, 0x3509f: 0x6cc9c220,\n\t0x350a0: 0x6cc9c420, 0x350a1: 0x6cc9c620, 0x350a2: 0x6cc9c820, 0x350a3: 0x6cc9ca20,\n\t0x350a4: 0x6cc9cc20, 0x350a5: 0x6cc9ce20, 0x350a6: 0x6cc9d020, 0x350a7: 0x6cc9d220,\n\t0x350a8: 0x6cc9d420, 0x350a9: 0x6cc9d620, 0x350aa: 0x6cc9d820, 0x350ab: 0x6cc9da20,\n\t0x350ac: 0x6cc9dc20, 0x350ad: 0x6cc9de20, 0x350ae: 0x6cc9e020, 0x350af: 0x6cc9e220,\n\t0x350b0: 0x6cc9e420, 0x350b1: 0x6cc9e620, 0x350b2: 0x6cc9e820, 0x350b3: 0x6cc9ea20,\n\t0x350b4: 0x6cc9ec20, 0x350b5: 0x6cc9ee20, 0x350b6: 0x6cc9f020, 0x350b7: 0x6cc9f220,\n\t0x350b8: 0x6cc9f420, 0x350b9: 0x6cc9f620, 0x350ba: 0x6cc9f820, 0x350bb: 0x6cc9fa20,\n\t0x350bc: 0x6cc9fc20, 0x350bd: 0x6cc9fe20, 0x350be: 0x6cca0020, 0x350bf: 0x6cca0220,\n\t// Block 0xd43, offset 0x350c0\n\t0x350c0: 0x6cca0420, 0x350c1: 0x6cca0620, 0x350c2: 0x6cca0820, 0x350c3: 0x6cca0a20,\n\t0x350c4: 0x6cca0c20, 0x350c5: 0x6cca0e20, 0x350c6: 0x6cca1020, 0x350c7: 0x6cca1220,\n\t0x350c8: 0x6cca1420, 0x350c9: 0x6cca1620, 0x350ca: 0x6cca1820, 0x350cb: 0x6cca1a20,\n\t0x350cc: 0x6cca1c20, 0x350cd: 0x6cca1e20, 0x350ce: 0x6cca2020, 0x350cf: 0x6cca2220,\n\t0x350d0: 0x6cca2420, 0x350d1: 0x6cca2620, 0x350d2: 0x6cca2820, 0x350d3: 0x6cca2a20,\n\t0x350d4: 0x6cca2c20, 0x350d5: 0x6cca2e20, 0x350d6: 0x6cca3020, 0x350d7: 0x6cca3220,\n\t0x350d8: 0x6cca3420, 0x350d9: 0x6cca3620, 0x350da: 0x6cca3820, 0x350db: 0x6cca3a20,\n\t0x350dc: 0x6cca3c20, 0x350dd: 0x6cca3e20, 0x350de: 0x6cca4020, 0x350df: 0x6cca4220,\n\t0x350e0: 0x6cca4420, 0x350e1: 0x6cca4620, 0x350e2: 0x6cca4820, 0x350e3: 0x6cca4a20,\n\t0x350e4: 0x6cca4c20, 0x350e5: 0x6cca4e20, 0x350e6: 0x6cca5020, 0x350e7: 0x6cca5220,\n\t0x350e8: 0x6cca5420, 0x350e9: 0x6cca5620, 0x350ea: 0x6cca5820, 0x350eb: 0x6cca5a20,\n\t0x350ec: 0x6cca5c20, 0x350ed: 0x6cca5e20, 0x350ee: 0x6cca6020, 0x350ef: 0x6cca6220,\n\t0x350f0: 0x6cca6420, 0x350f1: 0x6cf79c20, 0x350f2: 0x6cf79e20, 0x350f3: 0x6cf7a020,\n\t0x350f4: 0x6cf7a220, 0x350f5: 0x6cf7a420, 0x350f6: 0x6cf7a620, 0x350f7: 0x6cf7a820,\n\t0x350f8: 0x6cf7aa20, 0x350f9: 0x6cf7ac20, 0x350fa: 0x6cf7ae20, 0x350fb: 0x6cf7b020,\n\t0x350fc: 0x6cf7b220, 0x350fd: 0x6cf7b420, 0x350fe: 0x6cf7b620, 0x350ff: 0x6cf7b820,\n\t// Block 0xd44, offset 0x35100\n\t0x35100: 0x6cf7ba20, 0x35101: 0x6cf7bc20, 0x35102: 0x6cf7be20, 0x35103: 0x6cf7c020,\n\t0x35104: 0x6cf7c220, 0x35105: 0x6cf7c420, 0x35106: 0x6cf7c620, 0x35107: 0x6cf7c820,\n\t0x35108: 0x6cf7ca20, 0x35109: 0x6cf7cc20, 0x3510a: 0x6cf7ce20, 0x3510b: 0x6cf7d020,\n\t0x3510c: 0x6cf7d220, 0x3510d: 0x6cf7d420, 0x3510e: 0x6cf7d620, 0x3510f: 0x6cf7d820,\n\t0x35110: 0x6cf7da20, 0x35111: 0x6cf7dc20, 0x35112: 0x6cf7de20, 0x35113: 0x6cf7e020,\n\t0x35114: 0x6cf7e220, 0x35115: 0x6cf7e420, 0x35116: 0x6cf7e620, 0x35117: 0x6cf7e820,\n\t0x35118: 0x6cf7ea20, 0x35119: 0x6cf7ec20, 0x3511a: 0x6cf7ee20, 0x3511b: 0x6cf7f020,\n\t0x3511c: 0x6cf7f220, 0x3511d: 0x6cf7f420, 0x3511e: 0x6cf7f620, 0x3511f: 0x6cf7f820,\n\t0x35120: 0x6cf7fa20, 0x35121: 0x6cf7fc20, 0x35122: 0x6cf7fe20, 0x35123: 0x6cf80020,\n\t0x35124: 0x6d26fa20, 0x35125: 0x6cf80220, 0x35126: 0x6cf80420, 0x35127: 0x6cf80620,\n\t0x35128: 0x6cf80820, 0x35129: 0x6cf80a20, 0x3512a: 0x6cf80c20, 0x3512b: 0x6cf80e20,\n\t0x3512c: 0x6cf81020, 0x3512d: 0x6cf81220, 0x3512e: 0x6cf81420, 0x3512f: 0x6cf81620,\n\t0x35130: 0x6cf81820, 0x35131: 0x6cf81a20, 0x35132: 0x6cf81c20, 0x35133: 0x6cf81e20,\n\t0x35134: 0x6cf82020, 0x35135: 0x6cf82220, 0x35136: 0x6cf82420, 0x35137: 0x6cf82620,\n\t0x35138: 0x6cf82820, 0x35139: 0x6cf82a20, 0x3513a: 0x6cf82c20, 0x3513b: 0x6cf82e20,\n\t0x3513c: 0x6cf83020, 0x3513d: 0x6cf83220, 0x3513e: 0x6cf83420, 0x3513f: 0x6cf83620,\n\t// Block 0xd45, offset 0x35140\n\t0x35140: 0x6cf83820, 0x35141: 0x6cf83a20, 0x35142: 0x6cf83c20, 0x35143: 0x6cf83e20,\n\t0x35144: 0x6cf84020, 0x35145: 0x6cf84220, 0x35146: 0x6cf84420, 0x35147: 0x6cf84620,\n\t0x35148: 0x6cf84820, 0x35149: 0x6cf84a20, 0x3514a: 0x6cf84c20, 0x3514b: 0x6cf84e20,\n\t0x3514c: 0x6cf85020, 0x3514d: 0x6cf85220, 0x3514e: 0x6cf85420, 0x3514f: 0x6cf85620,\n\t0x35150: 0x6cf85820, 0x35151: 0x6cf85a20, 0x35152: 0x6cf85c20, 0x35153: 0x6cf85e20,\n\t0x35154: 0x6cf86020, 0x35155: 0x6cf86220, 0x35156: 0x6cf86420, 0x35157: 0x6cf86620,\n\t0x35158: 0x6cf86820, 0x35159: 0x6cf86a20, 0x3515a: 0x6cf86c20, 0x3515b: 0x6cf86e20,\n\t0x3515c: 0x6cf87020, 0x3515d: 0x6cf87220, 0x3515e: 0x6cf87420, 0x3515f: 0x6cf87620,\n\t0x35160: 0x6cf87820, 0x35161: 0x6cf87a20, 0x35162: 0x6cf87c20, 0x35163: 0x6cf87e20,\n\t0x35164: 0x6cf88020, 0x35165: 0x6cf88220, 0x35166: 0x6cf88420, 0x35167: 0x6cf88620,\n\t0x35168: 0x6cf88820, 0x35169: 0x6cf88a20, 0x3516a: 0x6d26fc20, 0x3516b: 0x6d26fe20,\n\t0x3516c: 0x6d270020, 0x3516d: 0x6d270220, 0x3516e: 0x6d270420, 0x3516f: 0x6d270620,\n\t0x35170: 0x6d270820, 0x35171: 0x6d270a20, 0x35172: 0x6d270c20, 0x35173: 0x6d270e20,\n\t0x35174: 0x6d271020, 0x35175: 0x6d271220, 0x35176: 0x6d271420, 0x35177: 0x6d271620,\n\t0x35178: 0x6d271820, 0x35179: 0x6d271a20, 0x3517a: 0x6d271c20, 0x3517b: 0x6d271e20,\n\t0x3517c: 0x6d272020, 0x3517d: 0x6d272220, 0x3517e: 0x6d272420, 0x3517f: 0x6d272620,\n\t// Block 0xd46, offset 0x35180\n\t0x35180: 0x6d272820, 0x35181: 0x6d272a20, 0x35182: 0x6d272c20, 0x35183: 0x6d272e20,\n\t0x35184: 0x6d273020, 0x35185: 0x6d273220, 0x35186: 0x6d273420, 0x35187: 0x6d273620,\n\t0x35188: 0x6d273820, 0x35189: 0x6d273a20, 0x3518a: 0x6d273c20, 0x3518b: 0x6d273e20,\n\t0x3518c: 0x6d274020, 0x3518d: 0x6d274220, 0x3518e: 0x6d274420, 0x3518f: 0x6d274620,\n\t0x35190: 0x6d274820, 0x35191: 0x6d274a20, 0x35192: 0x6d274c20, 0x35193: 0x6d274e20,\n\t0x35194: 0x6d275020, 0x35195: 0x6d275220, 0x35196: 0x6d275420, 0x35197: 0x6d275620,\n\t0x35198: 0x6d275820, 0x35199: 0x6d275a20, 0x3519a: 0x6d275c20, 0x3519b: 0x6d275e20,\n\t0x3519c: 0x6d276020, 0x3519d: 0x6d276220, 0x3519e: 0x6d276420, 0x3519f: 0x6d276620,\n\t0x351a0: 0x6d276820, 0x351a1: 0x6d276a20, 0x351a2: 0x6d276c20, 0x351a3: 0x6d276e20,\n\t0x351a4: 0x6d277020, 0x351a5: 0x6d277220, 0x351a6: 0x6d277420, 0x351a7: 0x6d277620,\n\t0x351a8: 0x6d277820, 0x351a9: 0x6d277a20, 0x351aa: 0x6d277c20, 0x351ab: 0x6d277e20,\n\t0x351ac: 0x6d278020, 0x351ad: 0x6d278220, 0x351ae: 0x6d278420, 0x351af: 0x6d278620,\n\t0x351b0: 0x6d278820, 0x351b1: 0x6d278a20, 0x351b2: 0x6d278c20, 0x351b3: 0x6d278e20,\n\t0x351b4: 0x6d279020, 0x351b5: 0x6d279220, 0x351b6: 0x6d279420, 0x351b7: 0x6d279620,\n\t0x351b8: 0x6d279820, 0x351b9: 0x6d279a20, 0x351ba: 0x6d279c20, 0x351bb: 0x6d279e20,\n\t0x351bc: 0x6d27a020, 0x351bd: 0x6d27a220, 0x351be: 0x6d27a420, 0x351bf: 0x6d27a620,\n\t// Block 0xd47, offset 0x351c0\n\t0x351c0: 0x6d27a820, 0x351c1: 0x6d27aa20, 0x351c2: 0x6d27ac20, 0x351c3: 0x6d27ae20,\n\t0x351c4: 0x6d27b020, 0x351c5: 0x6d27b220, 0x351c6: 0x6d27b420, 0x351c7: 0x6d27b620,\n\t0x351c8: 0x6d27b820, 0x351c9: 0x6d27ba20, 0x351ca: 0x6d27bc20, 0x351cb: 0x6d27be20,\n\t0x351cc: 0x6d27c020, 0x351cd: 0x6d27c220, 0x351ce: 0x6d27c420, 0x351cf: 0x6d27c620,\n\t0x351d0: 0x6d27c820, 0x351d1: 0x6d27ca20, 0x351d2: 0x6d27cc20, 0x351d3: 0x6d27ce20,\n\t0x351d4: 0x6d27d020, 0x351d5: 0x6d546220, 0x351d6: 0x6d546420, 0x351d7: 0x6d546620,\n\t0x351d8: 0x6d546820, 0x351d9: 0x6d546a20, 0x351da: 0x6d546c20, 0x351db: 0x6d546e20,\n\t0x351dc: 0x6d547020, 0x351dd: 0x6d547220, 0x351de: 0x6d547420, 0x351df: 0x6d547620,\n\t0x351e0: 0x6d547820, 0x351e1: 0x6d547a20, 0x351e2: 0x6d547c20, 0x351e3: 0x6d547e20,\n\t0x351e4: 0x6d548020, 0x351e5: 0x6d548220, 0x351e6: 0x6d548420, 0x351e7: 0x6d548620,\n\t0x351e8: 0x6d548820, 0x351e9: 0x6d548a20, 0x351ea: 0x6d548c20, 0x351eb: 0x6d548e20,\n\t0x351ec: 0x6d549020, 0x351ed: 0x6d549220, 0x351ee: 0x6d549420, 0x351ef: 0x6d549620,\n\t0x351f0: 0x6d549820, 0x351f1: 0x6d549a20, 0x351f2: 0x6d549c20, 0x351f3: 0x6d549e20,\n\t0x351f4: 0x6d54a020, 0x351f5: 0x6d54a220, 0x351f6: 0x6d54a420, 0x351f7: 0x6d54a620,\n\t0x351f8: 0x6d54a820, 0x351f9: 0x6d54aa20, 0x351fa: 0x6d54ac20, 0x351fb: 0x6d54ae20,\n\t0x351fc: 0x6d54b020, 0x351fd: 0x6d54b220, 0x351fe: 0x6d54b420, 0x351ff: 0x6d54b620,\n\t// Block 0xd48, offset 0x35200\n\t0x35200: 0x6d54b820, 0x35201: 0x6d54ba20, 0x35202: 0x6d54bc20, 0x35203: 0x6d54be20,\n\t0x35204: 0x6d54c020, 0x35205: 0x6d54c220, 0x35206: 0x6d54c420, 0x35207: 0x6d54c620,\n\t0x35208: 0x6d54c820, 0x35209: 0x6d54ca20, 0x3520a: 0x6d54cc20, 0x3520b: 0x6d54ce20,\n\t0x3520c: 0x6d54d020, 0x3520d: 0x6d54d220, 0x3520e: 0x6d54d420, 0x3520f: 0x6d54d620,\n\t0x35210: 0x6d54d820, 0x35211: 0x6d54da20, 0x35212: 0x6d7fc220, 0x35213: 0x6d54dc20,\n\t0x35214: 0x6d54de20, 0x35215: 0x6d54e020, 0x35216: 0x6d54e220, 0x35217: 0x6d54e420,\n\t0x35218: 0x6d54e620, 0x35219: 0x6d54e820, 0x3521a: 0x6d54ea20, 0x3521b: 0x6d54ec20,\n\t0x3521c: 0x6d54ee20, 0x3521d: 0x6d54f020, 0x3521e: 0x6d54f220, 0x3521f: 0x6d54f420,\n\t0x35220: 0x6d54f620, 0x35221: 0x6d54f820, 0x35222: 0x6d54fa20, 0x35223: 0x6d54fc20,\n\t0x35224: 0x6d54fe20, 0x35225: 0x6d550020, 0x35226: 0x6d550220, 0x35227: 0x6d550420,\n\t0x35228: 0x6d550620, 0x35229: 0x6d550820, 0x3522a: 0x6d550a20, 0x3522b: 0x6d550c20,\n\t0x3522c: 0x6d550e20, 0x3522d: 0x6d551020, 0x3522e: 0x6d551220, 0x3522f: 0x6d551420,\n\t0x35230: 0x6d551620, 0x35231: 0x6d551820, 0x35232: 0x6d551a20, 0x35233: 0x6d551c20,\n\t0x35234: 0x6d551e20, 0x35235: 0x6d552020, 0x35236: 0x6d552220, 0x35237: 0x6d552420,\n\t0x35238: 0x6d552620, 0x35239: 0x6d552820, 0x3523a: 0x6d552a20, 0x3523b: 0x6d7fc420,\n\t0x3523c: 0x6d7fc620, 0x3523d: 0x6d7fc820, 0x3523e: 0x6d7fca20, 0x3523f: 0x6d7fcc20,\n\t// Block 0xd49, offset 0x35240\n\t0x35240: 0x6d7fce20, 0x35241: 0x6d7fd020, 0x35242: 0x6d7fd220, 0x35243: 0x6d7fd420,\n\t0x35244: 0x6d7fd620, 0x35245: 0x6d7fd820, 0x35246: 0x6d7fda20, 0x35247: 0x6d7fdc20,\n\t0x35248: 0x6d7fde20, 0x35249: 0x6d7fe020, 0x3524a: 0x6d7fe220, 0x3524b: 0x6d7fe420,\n\t0x3524c: 0x6d7fe620, 0x3524d: 0x6d7fe820, 0x3524e: 0x6d7fea20, 0x3524f: 0x6d7fec20,\n\t0x35250: 0x6d7fee20, 0x35251: 0x6d7ff020, 0x35252: 0x6d7ff220, 0x35253: 0x6d7ff420,\n\t0x35254: 0x6d7ff620, 0x35255: 0x6d7ff820, 0x35256: 0x6d7ffa20, 0x35257: 0x6d7ffc20,\n\t0x35258: 0x6d7ffe20, 0x35259: 0x6d800020, 0x3525a: 0x6d800220, 0x3525b: 0x6d800420,\n\t0x3525c: 0x6d800620, 0x3525d: 0x6d800820, 0x3525e: 0x6d800a20, 0x3525f: 0x6d800c20,\n\t0x35260: 0x6d800e20, 0x35261: 0x6d801020, 0x35262: 0x6d801220, 0x35263: 0x6d801420,\n\t0x35264: 0x6d801620, 0x35265: 0x6d801820, 0x35266: 0x6d801a20, 0x35267: 0x6d801c20,\n\t0x35268: 0x6d801e20, 0x35269: 0x6d802020, 0x3526a: 0x6d802220, 0x3526b: 0x6d802420,\n\t0x3526c: 0x6d802620, 0x3526d: 0x6d802820, 0x3526e: 0x6d802a20, 0x3526f: 0x6d802c20,\n\t0x35270: 0x6d802e20, 0x35271: 0x6d803020, 0x35272: 0x6d803220, 0x35273: 0x6d803420,\n\t0x35274: 0x6d803620, 0x35275: 0x6d803820, 0x35276: 0x6d803a20, 0x35277: 0x6d803c20,\n\t0x35278: 0x6d803e20, 0x35279: 0x6d804020, 0x3527a: 0x6d804220, 0x3527b: 0x6d804420,\n\t0x3527c: 0x6d804620, 0x3527d: 0x6d804820, 0x3527e: 0x6d804a20, 0x3527f: 0x6d804c20,\n\t// Block 0xd4a, offset 0x35280\n\t0x35280: 0x6d804e20, 0x35281: 0x6d805020, 0x35282: 0x6d805220, 0x35283: 0x6d805420,\n\t0x35284: 0x6d805620, 0x35285: 0x6d805820, 0x35286: 0x6d805a20, 0x35287: 0x6d805c20,\n\t0x35288: 0x6d805e20, 0x35289: 0x6d806020, 0x3528a: 0x6d806220, 0x3528b: 0x6d806420,\n\t0x3528c: 0x6d806620, 0x3528d: 0x6d806820, 0x3528e: 0x6d806a20, 0x3528f: 0x6d806c20,\n\t0x35290: 0x6d806e20, 0x35291: 0x6d807020, 0x35292: 0x6d807220, 0x35293: 0x6d807420,\n\t0x35294: 0x6d807620, 0x35295: 0x6d807820, 0x35296: 0x6d807a20, 0x35297: 0x6d807c20,\n\t0x35298: 0x6d807e20, 0x35299: 0x6d808020, 0x3529a: 0x6d808220, 0x3529b: 0x6d808420,\n\t0x3529c: 0x6d808620, 0x3529d: 0x6d808820, 0x3529e: 0x6d808a20, 0x3529f: 0x6d808c20,\n\t0x352a0: 0x6d808e20, 0x352a1: 0x6d809020, 0x352a2: 0x6d809220, 0x352a3: 0x6d809420,\n\t0x352a4: 0x6d809620, 0x352a5: 0x6d809820, 0x352a6: 0x6d809a20, 0x352a7: 0x6d809c20,\n\t0x352a8: 0x6d809e20, 0x352a9: 0x6d80a020, 0x352aa: 0x6d80a220, 0x352ab: 0x6d80a420,\n\t0x352ac: 0x6d80a620, 0x352ad: 0x6d80a820, 0x352ae: 0x6d80aa20, 0x352af: 0x6d80ac20,\n\t0x352b0: 0x6da63820, 0x352b1: 0x6da63a20, 0x352b2: 0x6da63c20, 0x352b3: 0x6da63e20,\n\t0x352b4: 0x6da64020, 0x352b5: 0x6da64220, 0x352b6: 0x6da64420, 0x352b7: 0x6da64620,\n\t0x352b8: 0x6da64820, 0x352b9: 0x6da64a20, 0x352ba: 0x6da64c20, 0x352bb: 0x6da64e20,\n\t0x352bc: 0x6da65020, 0x352bd: 0x6da65220, 0x352be: 0x6da65420, 0x352bf: 0x6da65620,\n\t// Block 0xd4b, offset 0x352c0\n\t0x352c0: 0x6da65820, 0x352c1: 0x6da65a20, 0x352c2: 0x6da65c20, 0x352c3: 0x6da65e20,\n\t0x352c4: 0x6da66020, 0x352c5: 0x6da66220, 0x352c6: 0x6da66420, 0x352c7: 0x6da66620,\n\t0x352c8: 0x6da66820, 0x352c9: 0x6da66a20, 0x352ca: 0x6da66c20, 0x352cb: 0x6da66e20,\n\t0x352cc: 0x6da67020, 0x352cd: 0x6da67220, 0x352ce: 0x6da67420, 0x352cf: 0x6da67620,\n\t0x352d0: 0x6da67820, 0x352d1: 0x6da67a20, 0x352d2: 0x6da67c20, 0x352d3: 0x6da67e20,\n\t0x352d4: 0x6da68020, 0x352d5: 0x6da68220, 0x352d6: 0x6da68420, 0x352d7: 0x6da68620,\n\t0x352d8: 0x6da68820, 0x352d9: 0x6da68a20, 0x352da: 0x6da68c20, 0x352db: 0x6da68e20,\n\t0x352dc: 0x6da69020, 0x352dd: 0x6da69220, 0x352de: 0x6da69420, 0x352df: 0x6da69620,\n\t0x352e0: 0x6da69820, 0x352e1: 0x6da69a20, 0x352e2: 0x6d883220, 0x352e3: 0x6da69c20,\n\t0x352e4: 0x6da69e20, 0x352e5: 0x6da6a020, 0x352e6: 0x6da6a220, 0x352e7: 0x6da6a420,\n\t0x352e8: 0x6da6a620, 0x352e9: 0x6da6a820, 0x352ea: 0x6da6aa20, 0x352eb: 0x6da6ac20,\n\t0x352ec: 0x6da6ae20, 0x352ed: 0x6da6b020, 0x352ee: 0x6da6b220, 0x352ef: 0x6da6b420,\n\t0x352f0: 0x6da6b620, 0x352f1: 0x6da6b820, 0x352f2: 0x6da6ba20, 0x352f3: 0x6da6bc20,\n\t0x352f4: 0x6da6be20, 0x352f5: 0x6da6c020, 0x352f6: 0x6da6c220, 0x352f7: 0x6da6c420,\n\t0x352f8: 0x6da6c620, 0x352f9: 0x6da6c820, 0x352fa: 0x6da6ca20, 0x352fb: 0x6da6cc20,\n\t0x352fc: 0x6da6ce20, 0x352fd: 0x6da6d020, 0x352fe: 0x6da6d220, 0x352ff: 0x6da6d420,\n\t// Block 0xd4c, offset 0x35300\n\t0x35300: 0x6da6d620, 0x35301: 0x6dc7a220, 0x35302: 0x6dc7a420, 0x35303: 0x6dc7a620,\n\t0x35304: 0x6dc7a820, 0x35305: 0x6dc7aa20, 0x35306: 0x6dc7ac20, 0x35307: 0x6dc7ae20,\n\t0x35308: 0x6dc7b020, 0x35309: 0x6dc7b220, 0x3530a: 0x6dc7b420, 0x3530b: 0x6dc7b620,\n\t0x3530c: 0x6dc7b820, 0x3530d: 0x6dc7ba20, 0x3530e: 0x6dc7bc20, 0x3530f: 0x6dc7be20,\n\t0x35310: 0x6dc7c020, 0x35311: 0x6dc7c220, 0x35312: 0x6dc7c420, 0x35313: 0x6dc7c620,\n\t0x35314: 0x6dc7c820, 0x35315: 0x6dc7ca20, 0x35316: 0x6dc7cc20, 0x35317: 0x6dc7ce20,\n\t0x35318: 0x6dc7d020, 0x35319: 0x6de40020, 0x3531a: 0x6dc7d220, 0x3531b: 0x6dc7d420,\n\t0x3531c: 0x6dc7d620, 0x3531d: 0x6dc7d820, 0x3531e: 0x6dc7da20, 0x3531f: 0x6dc7dc20,\n\t0x35320: 0x6dc7de20, 0x35321: 0x6dc7e020, 0x35322: 0x6dc7e220, 0x35323: 0x6dc7e420,\n\t0x35324: 0x6dc7e620, 0x35325: 0x6dc7e820, 0x35326: 0x6dc7ea20, 0x35327: 0x6dc7ec20,\n\t0x35328: 0x6dc7ee20, 0x35329: 0x6dc7f020, 0x3532a: 0x6dc7f220, 0x3532b: 0x6dc7f420,\n\t0x3532c: 0x6dc7f620, 0x3532d: 0x6dc7f820, 0x3532e: 0x6dc7fa20, 0x3532f: 0x6dc7fc20,\n\t0x35330: 0x6dc7fe20, 0x35331: 0x6dc80020, 0x35332: 0x6dc80220, 0x35333: 0x6dc80420,\n\t0x35334: 0x6dc80620, 0x35335: 0x6dc80820, 0x35336: 0x6dc80a20, 0x35337: 0x6dc80c20,\n\t0x35338: 0x6dc80e20, 0x35339: 0x6dc81020, 0x3533a: 0x6dc81220, 0x3533b: 0x6dc81420,\n\t0x3533c: 0x6dc81620, 0x3533d: 0x6dc81820, 0x3533e: 0x6dc81a20, 0x3533f: 0x6dc81c20,\n\t// Block 0xd4d, offset 0x35340\n\t0x35340: 0x6dc81e20, 0x35341: 0x6dc82020, 0x35342: 0x6dc82220, 0x35343: 0x6dc82420,\n\t0x35344: 0x6dc82620, 0x35345: 0x6dc82820, 0x35346: 0x6dc82a20, 0x35347: 0x6dc82c20,\n\t0x35348: 0x6dc82e20, 0x35349: 0x6dc83020, 0x3534a: 0x6dc83220, 0x3534b: 0x6dc83420,\n\t0x3534c: 0x6dc83620, 0x3534d: 0x6dc83820, 0x3534e: 0x6dc83a20, 0x3534f: 0x6dcc7220,\n\t0x35350: 0x6de40220, 0x35351: 0x6de40420, 0x35352: 0x6de40620, 0x35353: 0x6de40820,\n\t0x35354: 0x6de40a20, 0x35355: 0x6de40c20, 0x35356: 0x6de40e20, 0x35357: 0x6de41020,\n\t0x35358: 0x6de41220, 0x35359: 0x6de41420, 0x3535a: 0x6de41620, 0x3535b: 0x6de41820,\n\t0x3535c: 0x6de41a20, 0x3535d: 0x6de41c20, 0x3535e: 0x6de41e20, 0x3535f: 0x6de42020,\n\t0x35360: 0x6de42220, 0x35361: 0x6de42420, 0x35362: 0x6de42620, 0x35363: 0x6de42820,\n\t0x35364: 0x6de42a20, 0x35365: 0x6de42c20, 0x35366: 0x6de42e20, 0x35367: 0x6de43020,\n\t0x35368: 0x6de43220, 0x35369: 0x6de43420, 0x3536a: 0x6de43620, 0x3536b: 0x6de43820,\n\t0x3536c: 0x6de43a20, 0x3536d: 0x6de43c20, 0x3536e: 0x6de43e20, 0x3536f: 0x6de44020,\n\t0x35370: 0x6de44220, 0x35371: 0x6de44420, 0x35372: 0x6de44620, 0x35373: 0x6de44820,\n\t0x35374: 0x6de44a20, 0x35375: 0x6de44c20, 0x35376: 0x6de44e20, 0x35377: 0x6de45020,\n\t0x35378: 0x6de45220, 0x35379: 0x6de45420, 0x3537a: 0x6de45620, 0x3537b: 0x6de45820,\n\t0x3537c: 0x6de45a20, 0x3537d: 0x6de45c20, 0x3537e: 0x6de45e20, 0x3537f: 0x6de46020,\n\t// Block 0xd4e, offset 0x35380\n\t0x35380: 0x6de46220, 0x35381: 0x6de46420, 0x35382: 0x6de46620, 0x35383: 0x6de46820,\n\t0x35384: 0x6dfb3a20, 0x35385: 0x6dfb3c20, 0x35386: 0x6dfb3e20, 0x35387: 0x6dfb4020,\n\t0x35388: 0x6dfb4220, 0x35389: 0x6dfb4420, 0x3538a: 0x6dfb4620, 0x3538b: 0x6dfb4820,\n\t0x3538c: 0x6dfb4a20, 0x3538d: 0x6dfb4c20, 0x3538e: 0x6dfb4e20, 0x3538f: 0x6dfb5020,\n\t0x35390: 0x6dfb5220, 0x35391: 0x6de46a20, 0x35392: 0x6dfb5420, 0x35393: 0x6dfb5620,\n\t0x35394: 0x6dfb5820, 0x35395: 0x6dfb5a20, 0x35396: 0x6dfb5c20, 0x35397: 0x6dfb5e20,\n\t0x35398: 0x6dfb6020, 0x35399: 0x6dfb6220, 0x3539a: 0x6dfb6420, 0x3539b: 0x6dfb6620,\n\t0x3539c: 0x6dfb6820, 0x3539d: 0x6dfb6a20, 0x3539e: 0x6dfb6c20, 0x3539f: 0x6dfb6e20,\n\t0x353a0: 0x6dfb7020, 0x353a1: 0x6dfb7220, 0x353a2: 0x6dfb7420, 0x353a3: 0x6dfb7620,\n\t0x353a4: 0x6dfb7820, 0x353a5: 0x6dfb7a20, 0x353a6: 0x6dfb7c20, 0x353a7: 0x6dfb7e20,\n\t0x353a8: 0x6dfb8020, 0x353a9: 0x6dfb8220, 0x353aa: 0x6dfb8420, 0x353ab: 0x6dfb8620,\n\t0x353ac: 0x6dfb8820, 0x353ad: 0x6dfb8a20, 0x353ae: 0x6dfb8c20, 0x353af: 0x6e0e7e20,\n\t0x353b0: 0x6e0e8020, 0x353b1: 0x6e0e8220, 0x353b2: 0x6e0e8420, 0x353b3: 0x6e0e8620,\n\t0x353b4: 0x6e0e8820, 0x353b5: 0x6e0e8a20, 0x353b6: 0x6e0e8c20, 0x353b7: 0x6e0e8e20,\n\t0x353b8: 0x6e0e9020, 0x353b9: 0x6e0e9220, 0x353ba: 0x6e0e9420, 0x353bb: 0x6e0e9620,\n\t0x353bc: 0x6e0e9820, 0x353bd: 0x6e0e9a20, 0x353be: 0x6e0e9c20, 0x353bf: 0x6e0e9e20,\n\t// Block 0xd4f, offset 0x353c0\n\t0x353c0: 0x6e0ea020, 0x353c1: 0x6e0ea220, 0x353c2: 0x6e1dc820, 0x353c3: 0x6e0ea420,\n\t0x353c4: 0x6e0ea620, 0x353c5: 0x6e0ea820, 0x353c6: 0x6e0eaa20, 0x353c7: 0x6e0eac20,\n\t0x353c8: 0x6e0eae20, 0x353c9: 0x6e0eb020, 0x353ca: 0x6e0eb220, 0x353cb: 0x6e0eb420,\n\t0x353cc: 0x6e0eb620, 0x353cd: 0x6e0eb820, 0x353ce: 0x6e0eba20, 0x353cf: 0x6e0ebc20,\n\t0x353d0: 0x6e0ebe20, 0x353d1: 0x6e0ec020, 0x353d2: 0x6e0ec220, 0x353d3: 0x6e0ec420,\n\t0x353d4: 0x6e0ec620, 0x353d5: 0x6e0ec820, 0x353d6: 0x6e0eca20, 0x353d7: 0x6e0ecc20,\n\t0x353d8: 0x6e0ece20, 0x353d9: 0x6e1dca20, 0x353da: 0x6e1dcc20, 0x353db: 0x6e1dce20,\n\t0x353dc: 0x6e1dd020, 0x353dd: 0x6e1dd220, 0x353de: 0x6e1dd420, 0x353df: 0x6e1dd620,\n\t0x353e0: 0x6e1dd820, 0x353e1: 0x6e1dda20, 0x353e2: 0x6e1ddc20, 0x353e3: 0x6e1dde20,\n\t0x353e4: 0x6e1de020, 0x353e5: 0x6e1de220, 0x353e6: 0x6e1de420, 0x353e7: 0x6e1de620,\n\t0x353e8: 0x6e1de820, 0x353e9: 0x6e1dea20, 0x353ea: 0x6e1dec20, 0x353eb: 0x6e1dee20,\n\t0x353ec: 0x6e1df020, 0x353ed: 0x6e1df220, 0x353ee: 0x6e1df420, 0x353ef: 0x6e1df620,\n\t0x353f0: 0x6e1df820, 0x353f1: 0x6e1dfa20, 0x353f2: 0x6e1dfc20, 0x353f3: 0x6e1dfe20,\n\t0x353f4: 0x6e1e0020, 0x353f5: 0x6e1e0220, 0x353f6: 0x6e1e0420, 0x353f7: 0x6e294a20,\n\t0x353f8: 0x6e294c20, 0x353f9: 0x6e294e20, 0x353fa: 0x6e295020, 0x353fb: 0x6e295220,\n\t0x353fc: 0x6e295420, 0x353fd: 0x6e295620, 0x353fe: 0x6e295820, 0x353ff: 0x6e295a20,\n\t// Block 0xd50, offset 0x35400\n\t0x35400: 0x6e295c20, 0x35401: 0x6e295e20, 0x35402: 0x6e296020, 0x35403: 0x6e296220,\n\t0x35404: 0x6e296420, 0x35405: 0x6e296620, 0x35406: 0x6e296820, 0x35407: 0x6e296a20,\n\t0x35408: 0x6e296c20, 0x35409: 0x6e296e20, 0x3540a: 0x6e297020, 0x3540b: 0x6e326420,\n\t0x3540c: 0x6e326620, 0x3540d: 0x6e326820, 0x3540e: 0x6e326a20, 0x3540f: 0x6e326c20,\n\t0x35410: 0x6e326e20, 0x35411: 0x6e327020, 0x35412: 0x6e327220, 0x35413: 0x6e327420,\n\t0x35414: 0x6e327620, 0x35415: 0x6e327820, 0x35416: 0x6e327a20, 0x35417: 0x6e327c20,\n\t0x35418: 0x6e327e20, 0x35419: 0x6e328020, 0x3541a: 0x6e328220, 0x3541b: 0x6e328420,\n\t0x3541c: 0x6e328620, 0x3541d: 0x6e328820, 0x3541e: 0x6e38bc20, 0x3541f: 0x6e38be20,\n\t0x35420: 0x6e38c020, 0x35421: 0x6e38c220, 0x35422: 0x6e38c420, 0x35423: 0x6e38c620,\n\t0x35424: 0x6e38c820, 0x35425: 0x6e38ca20, 0x35426: 0x6e38cc20, 0x35427: 0x6e38ce20,\n\t0x35428: 0x6e38d020, 0x35429: 0x6e3d3220, 0x3542a: 0x6e3d3420, 0x3542b: 0x6e3d3620,\n\t0x3542c: 0x6e3d3820, 0x3542d: 0x6e3d3a20, 0x3542e: 0x6e3d3c20, 0x3542f: 0x6e3d3e20,\n\t0x35430: 0x6e3d4020, 0x35431: 0x6e3d4220, 0x35432: 0x6e404e20, 0x35433: 0x6e401020,\n\t0x35434: 0x6e405020, 0x35435: 0x6e405220, 0x35436: 0x6e42aa20, 0x35437: 0x6e42ac20,\n\t0x35438: 0x6e42ae20, 0x35439: 0x6e443020, 0x3543a: 0x6e451e20, 0x3543b: 0x6e452020,\n\t0x3543c: 0x6e45c220, 0x3543d: 0x6e462c20, 0x3543e: 0x6e462e20, 0x3543f: 0x6e46b020,\n\t// Block 0xd51, offset 0x35440\n\t0x35440: 0x6c12b820, 0x35441: 0x6c223e20, 0x35442: 0x6c224020, 0x35443: 0x6c224220,\n\t0x35444: 0x6c224420, 0x35445: 0x6c224620, 0x35446: 0x6c224820, 0x35447: 0x6c224a20,\n\t0x35448: 0x6c224c20, 0x35449: 0x6c377620, 0x3544a: 0x6c377820, 0x3544b: 0x6c377a20,\n\t0x3544c: 0x6c377c20, 0x3544d: 0x6c377e20, 0x3544e: 0x6c378020, 0x3544f: 0x6c378220,\n\t0x35450: 0x6c378420, 0x35451: 0x6c378620, 0x35452: 0x6c378820, 0x35453: 0x6c378a20,\n\t0x35454: 0x6c378c20, 0x35455: 0x6c378e20, 0x35456: 0x6c379020, 0x35457: 0x6c52d420,\n\t0x35458: 0x6c52d620, 0x35459: 0x6c52d820, 0x3545a: 0x6c52da20, 0x3545b: 0x6c52dc20,\n\t0x3545c: 0x6c52de20, 0x3545d: 0x6c52e020, 0x3545e: 0x6c52e220, 0x3545f: 0x6c52e420,\n\t0x35460: 0x6c52e620, 0x35461: 0x6c52e820, 0x35462: 0x6c52ea20, 0x35463: 0x6c52ec20,\n\t0x35464: 0x6c52ee20, 0x35465: 0x6c52f020, 0x35466: 0x6c52f220, 0x35467: 0x6c756020,\n\t0x35468: 0x6c756220, 0x35469: 0x6c756420, 0x3546a: 0x6c756620, 0x3546b: 0x6c756820,\n\t0x3546c: 0x6c756a20, 0x3546d: 0x6c756c20, 0x3546e: 0x6c756e20, 0x3546f: 0x6c757020,\n\t0x35470: 0x6c757220, 0x35471: 0x6c757420, 0x35472: 0x6c757620, 0x35473: 0x6c757820,\n\t0x35474: 0x6c757a20, 0x35475: 0x6c757c20, 0x35476: 0x6c757e20, 0x35477: 0x6c758020,\n\t0x35478: 0x6c758220, 0x35479: 0x6c758420, 0x3547a: 0x6c9dba20, 0x3547b: 0x6c9dbc20,\n\t0x3547c: 0x6c9dbe20, 0x3547d: 0x6c9dc020, 0x3547e: 0x6c9dc220, 0x3547f: 0x6c9dc420,\n\t// Block 0xd52, offset 0x35480\n\t0x35480: 0x6c9dc620, 0x35481: 0x6c9dc820, 0x35482: 0x6c9dca20, 0x35483: 0x6c9dcc20,\n\t0x35484: 0x6c9dce20, 0x35485: 0x6c9dd020, 0x35486: 0x6c9dd220, 0x35487: 0x6c9dd420,\n\t0x35488: 0x6ccaa620, 0x35489: 0x6ccaa820, 0x3548a: 0x6ccaaa20, 0x3548b: 0x6ccaac20,\n\t0x3548c: 0x6ccaae20, 0x3548d: 0x6ccab020, 0x3548e: 0x6ccab220, 0x3548f: 0x6ccab420,\n\t0x35490: 0x6ccab620, 0x35491: 0x6ccab820, 0x35492: 0x6ccaba20, 0x35493: 0x6ccabc20,\n\t0x35494: 0x6ccabe20, 0x35495: 0x6ccac020, 0x35496: 0x6ccac220, 0x35497: 0x6ccac420,\n\t0x35498: 0x6ccac620, 0x35499: 0x6ccac820, 0x3549a: 0x6ccaca20, 0x3549b: 0x6ccacc20,\n\t0x3549c: 0x6ccace20, 0x3549d: 0x6cf8da20, 0x3549e: 0x6cf8dc20, 0x3549f: 0x6cf8de20,\n\t0x354a0: 0x6cf8e020, 0x354a1: 0x6cf8e220, 0x354a2: 0x6cf8e420, 0x354a3: 0x6cf8e620,\n\t0x354a4: 0x6cf8e820, 0x354a5: 0x6cf8ea20, 0x354a6: 0x6cf8ec20, 0x354a7: 0x6cf8ee20,\n\t0x354a8: 0x6cf8f020, 0x354a9: 0x6cf8f220, 0x354aa: 0x6cf8f420, 0x354ab: 0x6cf8f620,\n\t0x354ac: 0x6d0f4820, 0x354ad: 0x6cf8f820, 0x354ae: 0x6cf8fa20, 0x354af: 0x6cf8fc20,\n\t0x354b0: 0x6cf8fe20, 0x354b1: 0x6cf90020, 0x354b2: 0x6d281220, 0x354b3: 0x6d281420,\n\t0x354b4: 0x6d281620, 0x354b5: 0x6d281820, 0x354b6: 0x6d281a20, 0x354b7: 0x6d281c20,\n\t0x354b8: 0x6d281e20, 0x354b9: 0x6d282020, 0x354ba: 0x6d282220, 0x354bb: 0x6d282420,\n\t0x354bc: 0x6d282620, 0x354bd: 0x6d282820, 0x354be: 0x6d282a20, 0x354bf: 0x6d282c20,\n\t// Block 0xd53, offset 0x354c0\n\t0x354c0: 0x6d282e20, 0x354c1: 0x6d283020, 0x354c2: 0x6d283220, 0x354c3: 0x6d283420,\n\t0x354c4: 0x6d283620, 0x354c5: 0x6d283820, 0x354c6: 0x6d283a20, 0x354c7: 0x6d283c20,\n\t0x354c8: 0x6d556220, 0x354c9: 0x6d556420, 0x354ca: 0x6d556620, 0x354cb: 0x6d556820,\n\t0x354cc: 0x6d556a20, 0x354cd: 0x6d556c20, 0x354ce: 0x6d556e20, 0x354cf: 0x6d557020,\n\t0x354d0: 0x6d557220, 0x354d1: 0x6d557420, 0x354d2: 0x6d557620, 0x354d3: 0x6d557820,\n\t0x354d4: 0x6d557a20, 0x354d5: 0x6d557c20, 0x354d6: 0x6d557e20, 0x354d7: 0x6d558020,\n\t0x354d8: 0x6d80e220, 0x354d9: 0x6d80e420, 0x354da: 0x6d80e620, 0x354db: 0x6d80e820,\n\t0x354dc: 0x6d80ea20, 0x354dd: 0x6d80ec20, 0x354de: 0x6d80ee20, 0x354df: 0x6d80f020,\n\t0x354e0: 0x6da70220, 0x354e1: 0x6da70420, 0x354e2: 0x6da70620, 0x354e3: 0x6da70820,\n\t0x354e4: 0x6da70a20, 0x354e5: 0x6da70c20, 0x354e6: 0x6da70e20, 0x354e7: 0x6da71020,\n\t0x354e8: 0x6dc85420, 0x354e9: 0x6dc85620, 0x354ea: 0x6dc85820, 0x354eb: 0x6dc85a20,\n\t0x354ec: 0x6de47e20, 0x354ed: 0x6de48020, 0x354ee: 0x6de48220, 0x354ef: 0x6de48420,\n\t0x354f0: 0x6de48620, 0x354f1: 0x6dfb9c20, 0x354f2: 0x6dfb9e20, 0x354f3: 0x6dfba020,\n\t0x354f4: 0x6e0ed820, 0x354f5: 0x6e0eda20, 0x354f6: 0x6e1e1020, 0x354f7: 0x6e0edc20,\n\t0x354f8: 0x6e0ede20, 0x354f9: 0x6e1e1220, 0x354fa: 0x6e1e1420, 0x354fb: 0x6e1e1620,\n\t0x354fc: 0x6e1e1820, 0x354fd: 0x6e297820, 0x354fe: 0x6e329020, 0x354ff: 0x6e38d820,\n\t// Block 0xd54, offset 0x35500\n\t0x35500: 0x6e38da20, 0x35501: 0x6e3d4620, 0x35502: 0x6c04ac20, 0x35503: 0x6c097820,\n\t0x35504: 0x6c097a20, 0x35505: 0x6c12be20, 0x35506: 0x6c12c020, 0x35507: 0x6c225420,\n\t0x35508: 0x6c225620, 0x35509: 0x6c379c20, 0x3550a: 0x6c225820, 0x3550b: 0x6c225a20,\n\t0x3550c: 0x6c225c20, 0x3550d: 0x6c379e20, 0x3550e: 0x6c37a020, 0x3550f: 0x6c37a220,\n\t0x35510: 0x6c37a420, 0x35511: 0x6c37a620, 0x35512: 0x6c37a820, 0x35513: 0x6c37aa20,\n\t0x35514: 0x6c37ac20, 0x35515: 0x6c37ae20, 0x35516: 0x6c37b020, 0x35517: 0x6c37b220,\n\t0x35518: 0x6c37b420, 0x35519: 0x6c37b620, 0x3551a: 0x6c37b820, 0x3551b: 0x6c37ba20,\n\t0x3551c: 0x6c37bc20, 0x3551d: 0x6c37be20, 0x3551e: 0x6c37c020, 0x3551f: 0x6c37c220,\n\t0x35520: 0x6c37c420, 0x35521: 0x6c37c620, 0x35522: 0x6c530220, 0x35523: 0x6c530420,\n\t0x35524: 0x6c530620, 0x35525: 0x6c2bd020, 0x35526: 0x6c758c20, 0x35527: 0x6c758e20,\n\t0x35528: 0x6c759020, 0x35529: 0x6c759220, 0x3552a: 0x6c759420, 0x3552b: 0x6c759620,\n\t0x3552c: 0x6c759820, 0x3552d: 0x6c759a20, 0x3552e: 0x6c759c20, 0x3552f: 0x6c759e20,\n\t0x35530: 0x6c75a020, 0x35531: 0x6c75a220, 0x35532: 0x6c6f0e20, 0x35533: 0x6c9dda20,\n\t0x35534: 0x6c9ddc20, 0x35535: 0x6c9dde20, 0x35536: 0x6c9de020, 0x35537: 0x6c9de220,\n\t0x35538: 0x6c9de420, 0x35539: 0x6ccada20, 0x3553a: 0x6ccadc20, 0x3553b: 0x6ccade20,\n\t0x3553c: 0x6ccae020, 0x3553d: 0x6ccae220, 0x3553e: 0x6ccae420, 0x3553f: 0x6ccae620,\n\t// Block 0xd55, offset 0x35540\n\t0x35540: 0x6ccae820, 0x35541: 0x6ccaea20, 0x35542: 0x6ccaec20, 0x35543: 0x6ccaee20,\n\t0x35544: 0x6ccaf020, 0x35545: 0x6ccaf220, 0x35546: 0x6ccaf420, 0x35547: 0x6cf90c20,\n\t0x35548: 0x6cf90e20, 0x35549: 0x6cf91020, 0x3554a: 0x6cf91220, 0x3554b: 0x6d75b820,\n\t0x3554c: 0x6cf91420, 0x3554d: 0x6cf91620, 0x3554e: 0x6cf91820, 0x3554f: 0x6cf1c020,\n\t0x35550: 0x6d284620, 0x35551: 0x6d284820, 0x35552: 0x6d284a20, 0x35553: 0x6d284c20,\n\t0x35554: 0x6d558820, 0x35555: 0x6d558a20, 0x35556: 0x6d558c20, 0x35557: 0x6d558e20,\n\t0x35558: 0x6d559020, 0x35559: 0x6d559220, 0x3555a: 0x6d559420, 0x3555b: 0x6d559620,\n\t0x3555c: 0x6d80f420, 0x3555d: 0x6d80f620, 0x3555e: 0x6d80f820, 0x3555f: 0x6d80fa20,\n\t0x35560: 0x6d80fc20, 0x35561: 0x6da71220, 0x35562: 0x6da71420, 0x35563: 0x6da71620,\n\t0x35564: 0x6da71820, 0x35565: 0x6da71a20, 0x35566: 0x6dc86020, 0x35567: 0x6dc86220,\n\t0x35568: 0x6dc86420, 0x35569: 0x6dc86620, 0x3556a: 0x6dc86820, 0x3556b: 0x6dc86a20,\n\t0x3556c: 0x6de48820, 0x3556d: 0x6de20820, 0x3556e: 0x6e0ee020, 0x3556f: 0x6e1e1a20,\n\t0x35570: 0x6e1e1c20, 0x35571: 0x6e297a20, 0x35572: 0x6e297c20, 0x35573: 0x6e329420,\n\t0x35574: 0x6e329620, 0x35575: 0x6c04b020, 0x35576: 0x6c04b220, 0x35577: 0x6c097e20,\n\t0x35578: 0x6c12c620, 0x35579: 0x6c12c820, 0x3557a: 0x6c12ca20, 0x3557b: 0x6c12cc20,\n\t0x3557c: 0x6c12ce20, 0x3557d: 0x6c12d020, 0x3557e: 0x6c12d220, 0x3557f: 0x6c226020,\n\t// Block 0xd56, offset 0x35580\n\t0x35580: 0x6c226220, 0x35581: 0x6c226420, 0x35582: 0x6c226620, 0x35583: 0x6c226820,\n\t0x35584: 0x6c226a20, 0x35585: 0x6c226c20, 0x35586: 0x6c226e20, 0x35587: 0x6c227020,\n\t0x35588: 0x6c227220, 0x35589: 0x6c37dc20, 0x3558a: 0x6c37de20, 0x3558b: 0x6c37e020,\n\t0x3558c: 0x6c37e220, 0x3558d: 0x6c37e420, 0x3558e: 0x6c37e620, 0x3558f: 0x6c37e820,\n\t0x35590: 0x6c37ea20, 0x35591: 0x6c37ec20, 0x35592: 0x6c37ee20, 0x35593: 0x6c37f020,\n\t0x35594: 0x6c37f220, 0x35595: 0x6c37f420, 0x35596: 0x6c37f620, 0x35597: 0x6c37f820,\n\t0x35598: 0x6c37fa20, 0x35599: 0x6c37fc20, 0x3559a: 0x6c37fe20, 0x3559b: 0x6c380020,\n\t0x3559c: 0x6c380220, 0x3559d: 0x6c531a20, 0x3559e: 0x6c531c20, 0x3559f: 0x6c531e20,\n\t0x355a0: 0x6c532020, 0x355a1: 0x6c532220, 0x355a2: 0x6c532420, 0x355a3: 0x6c532620,\n\t0x355a4: 0x6c532820, 0x355a5: 0x6c532a20, 0x355a6: 0x6c532c20, 0x355a7: 0x6c532e20,\n\t0x355a8: 0x6c533020, 0x355a9: 0x6c533220, 0x355aa: 0x6c533420, 0x355ab: 0x6c533620,\n\t0x355ac: 0x6c533820, 0x355ad: 0x6c533a20, 0x355ae: 0x6c533c20, 0x355af: 0x6c533e20,\n\t0x355b0: 0x6c534020, 0x355b1: 0x6c534220, 0x355b2: 0x6c75b220, 0x355b3: 0x6c75b420,\n\t0x355b4: 0x6c75b620, 0x355b5: 0x6c75b820, 0x355b6: 0x6c75ba20, 0x355b7: 0x6c75bc20,\n\t0x355b8: 0x6c75be20, 0x355b9: 0x6c75c020, 0x355ba: 0x6c75c220, 0x355bb: 0x6c75c420,\n\t0x355bc: 0x6c75c620, 0x355bd: 0x6c75c820, 0x355be: 0x6c75ca20, 0x355bf: 0x6c75cc20,\n\t// Block 0xd57, offset 0x355c0\n\t0x355c0: 0x6c75ce20, 0x355c1: 0x6c75d020, 0x355c2: 0x6c75d220, 0x355c3: 0x6c75d420,\n\t0x355c4: 0x6c75d620, 0x355c5: 0x6c9dfc20, 0x355c6: 0x6c9dfe20, 0x355c7: 0x6c9e0020,\n\t0x355c8: 0x6c9e0220, 0x355c9: 0x6c9e0420, 0x355ca: 0x6c9e0620, 0x355cb: 0x6c9e0820,\n\t0x355cc: 0x6c9e0a20, 0x355cd: 0x6c9e0c20, 0x355ce: 0x6c9e0e20, 0x355cf: 0x6c9e1020,\n\t0x355d0: 0x6c9e1220, 0x355d1: 0x6c9e1420, 0x355d2: 0x6c9e1620, 0x355d3: 0x6c9e1820,\n\t0x355d4: 0x6c9e1a20, 0x355d5: 0x6c9e1c20, 0x355d6: 0x6ccb1220, 0x355d7: 0x6ccb1420,\n\t0x355d8: 0x6ccb1620, 0x355d9: 0x6ccb1820, 0x355da: 0x6ccb1a20, 0x355db: 0x6ccb1c20,\n\t0x355dc: 0x6ccb1e20, 0x355dd: 0x6ccb2020, 0x355de: 0x6ccb2220, 0x355df: 0x6ccb2420,\n\t0x355e0: 0x6ccb2620, 0x355e1: 0x6ccb2820, 0x355e2: 0x6ccb2a20, 0x355e3: 0x6ccb2c20,\n\t0x355e4: 0x6ccb2e20, 0x355e5: 0x6ccb3020, 0x355e6: 0x6ccb3220, 0x355e7: 0x6ccb3420,\n\t0x355e8: 0x6ccb3620, 0x355e9: 0x6ccb3820, 0x355ea: 0x6ccb3a20, 0x355eb: 0x6ccb3c20,\n\t0x355ec: 0x6ccb3e20, 0x355ed: 0x6ccb4020, 0x355ee: 0x6ccb4220, 0x355ef: 0x6ccb4420,\n\t0x355f0: 0x6ccb4620, 0x355f1: 0x6cf93020, 0x355f2: 0x6cf93220, 0x355f3: 0x6cf93420,\n\t0x355f4: 0x6cf93620, 0x355f5: 0x6cf93820, 0x355f6: 0x6cf93a20, 0x355f7: 0x6cf93c20,\n\t0x355f8: 0x6cf93e20, 0x355f9: 0x6cf94020, 0x355fa: 0x6cf94220, 0x355fb: 0x6cf94420,\n\t0x355fc: 0x6cf94620, 0x355fd: 0x6cf94820, 0x355fe: 0x6cf94a20, 0x355ff: 0x6cf94c20,\n\t// Block 0xd58, offset 0x35600\n\t0x35600: 0x6cf94e20, 0x35601: 0x6cf95020, 0x35602: 0x6cf95220, 0x35603: 0x6cf95420,\n\t0x35604: 0x6d286220, 0x35605: 0x6d286420, 0x35606: 0x6d286620, 0x35607: 0x6d286820,\n\t0x35608: 0x6d286a20, 0x35609: 0x6d286c20, 0x3560a: 0x6d286e20, 0x3560b: 0x6d287020,\n\t0x3560c: 0x6d287220, 0x3560d: 0x6d55a820, 0x3560e: 0x6d55aa20, 0x3560f: 0x6d55ac20,\n\t0x35610: 0x6d55ae20, 0x35611: 0x6d55b020, 0x35612: 0x6d55b220, 0x35613: 0x6d55b420,\n\t0x35614: 0x6d55b620, 0x35615: 0x6d55b820, 0x35616: 0x6d55ba20, 0x35617: 0x6d55bc20,\n\t0x35618: 0x6d55be20, 0x35619: 0x6d55c020, 0x3561a: 0x6d55c220, 0x3561b: 0x6d55c420,\n\t0x3561c: 0x6d55c620, 0x3561d: 0x6d811220, 0x3561e: 0x6d811420, 0x3561f: 0x6d811620,\n\t0x35620: 0x6d811820, 0x35621: 0x6d811a20, 0x35622: 0x6d811c20, 0x35623: 0x6d811e20,\n\t0x35624: 0x6d812020, 0x35625: 0x6d812220, 0x35626: 0x6d812420, 0x35627: 0x6d812620,\n\t0x35628: 0x6da72620, 0x35629: 0x6da72820, 0x3562a: 0x6da72a20, 0x3562b: 0x6da72c20,\n\t0x3562c: 0x6da72e20, 0x3562d: 0x6da73020, 0x3562e: 0x6da73220, 0x3562f: 0x6dc86e20,\n\t0x35630: 0x6dc87020, 0x35631: 0x6dc87220, 0x35632: 0x6dc87420, 0x35633: 0x6dc87620,\n\t0x35634: 0x6dc87820, 0x35635: 0x6dc87a20, 0x35636: 0x6dc87c20, 0x35637: 0x6de48e20,\n\t0x35638: 0x6de49020, 0x35639: 0x6dfba820, 0x3563a: 0x6dfbaa20, 0x3563b: 0x6dfbac20,\n\t0x3563c: 0x6e0ee420, 0x3563d: 0x6e0ee620, 0x3563e: 0x6e1e1e20, 0x3563f: 0x6e298020,\n\t// Block 0xd59, offset 0x35640\n\t0x35640: 0x6e298220, 0x35641: 0x6e298420, 0x35642: 0x6c380820, 0x35643: 0x6c380a20,\n\t0x35644: 0x6c380c20, 0x35645: 0x6c534c20, 0x35646: 0x6c534e20, 0x35647: 0x6c535020,\n\t0x35648: 0x6c75e220, 0x35649: 0x6c75e420, 0x3564a: 0x6c75e620, 0x3564b: 0x6c9e2a20,\n\t0x3564c: 0x6c9e2c20, 0x3564d: 0x6c9e2e20, 0x3564e: 0x6c9e3020, 0x3564f: 0x6c9e3220,\n\t0x35650: 0x6c9e3420, 0x35651: 0x6c9e3620, 0x35652: 0x6c9e3820, 0x35653: 0x6c9e3a20,\n\t0x35654: 0x6c9e3c20, 0x35655: 0x6c9e3e20, 0x35656: 0x6c9e4020, 0x35657: 0x6c9e4220,\n\t0x35658: 0x6c9e4420, 0x35659: 0x6ccb5420, 0x3565a: 0x6ccb5620, 0x3565b: 0x6ccb5820,\n\t0x3565c: 0x6ccb5a20, 0x3565d: 0x6ccb5c20, 0x3565e: 0x6ccb5e20, 0x3565f: 0x6ccb6020,\n\t0x35660: 0x6cf96020, 0x35661: 0x6cf96220, 0x35662: 0x6cf96420, 0x35663: 0x6cf96620,\n\t0x35664: 0x6cf96820, 0x35665: 0x6cf96a20, 0x35666: 0x6cf96c20, 0x35667: 0x6cf96e20,\n\t0x35668: 0x6cf97020, 0x35669: 0x6cf97220, 0x3566a: 0x6cf97420, 0x3566b: 0x6cf97620,\n\t0x3566c: 0x6cf97820, 0x3566d: 0x6d017c20, 0x3566e: 0x6d287c20, 0x3566f: 0x6d287e20,\n\t0x35670: 0x6d288020, 0x35671: 0x6d288220, 0x35672: 0x6d288420, 0x35673: 0x6d288620,\n\t0x35674: 0x6d288820, 0x35675: 0x6d288a20, 0x35676: 0x6d55ce20, 0x35677: 0x6d55d020,\n\t0x35678: 0x6d55d220, 0x35679: 0x6d55d420, 0x3567a: 0x6d55d620, 0x3567b: 0x6d813220,\n\t0x3567c: 0x6d813420, 0x3567d: 0x6d813620, 0x3567e: 0x6d813820, 0x3567f: 0x6d813a20,\n\t// Block 0xd5a, offset 0x35680\n\t0x35680: 0x6d813c20, 0x35681: 0x6d813e20, 0x35682: 0x6d814020, 0x35683: 0x6d814220,\n\t0x35684: 0x6d814420, 0x35685: 0x6d814620, 0x35686: 0x6d814820, 0x35687: 0x6d814a20,\n\t0x35688: 0x6d814c20, 0x35689: 0x6d814e20, 0x3568a: 0x6d815020, 0x3568b: 0x6d815220,\n\t0x3568c: 0x6da73820, 0x3568d: 0x6da73a20, 0x3568e: 0x6da73c20, 0x3568f: 0x6da73e20,\n\t0x35690: 0x6dc88020, 0x35691: 0x6dc88220, 0x35692: 0x6dc88420, 0x35693: 0x6dc88620,\n\t0x35694: 0x6dc88820, 0x35695: 0x6dc88a20, 0x35696: 0x6dc88c20, 0x35697: 0x6dc88e20,\n\t0x35698: 0x6de49220, 0x35699: 0x6de49420, 0x3569a: 0x6de49620, 0x3569b: 0x6de49820,\n\t0x3569c: 0x6de49a20, 0x3569d: 0x6de49c20, 0x3569e: 0x6dfbae20, 0x3569f: 0x6dfbb020,\n\t0x356a0: 0x6e0ee820, 0x356a1: 0x6e0eea20, 0x356a2: 0x6e298820, 0x356a3: 0x6e298a20,\n\t0x356a4: 0x6e298c20, 0x356a5: 0x6e298e20, 0x356a6: 0x6e329820, 0x356a7: 0x6e329a20,\n\t0x356a8: 0x6e329c20, 0x356a9: 0x6e38dc20, 0x356aa: 0x6e405620, 0x356ab: 0x6e405820,\n\t0x356ac: 0x6c04ba20, 0x356ad: 0x6c12d620, 0x356ae: 0x6c227a20, 0x356af: 0x6c381020,\n\t0x356b0: 0x6c381220, 0x356b1: 0x6c381420, 0x356b2: 0x6c381620, 0x356b3: 0x6c535420,\n\t0x356b4: 0x6c75ec20, 0x356b5: 0x6c9e4820, 0x356b6: 0x6c9e4a20, 0x356b7: 0x6c9e4c20,\n\t0x356b8: 0x6c9e4e20, 0x356b9: 0x6cf97e20, 0x356ba: 0x6d288c20, 0x356bb: 0x6d288e20,\n\t0x356bc: 0x6d289020, 0x356bd: 0x6d815420, 0x356be: 0x6d815620, 0x356bf: 0x6da74420,\n\t// Block 0xd5b, offset 0x356c0\n\t0x356c0: 0x6de49e20, 0x356c1: 0x6e1e2020, 0x356c2: 0x6c227e20, 0x356c3: 0x6c228020,\n\t0x356c4: 0x6c381820, 0x356c5: 0x6c381a20, 0x356c6: 0x6c381c20, 0x356c7: 0x6c381e20,\n\t0x356c8: 0x6c75f020, 0x356c9: 0x6c75f220, 0x356ca: 0x6c75f420, 0x356cb: 0x6c9e5020,\n\t0x356cc: 0x6c9e5220, 0x356cd: 0x6cf98020, 0x356ce: 0x6d289420, 0x356cf: 0x6d289620,\n\t0x356d0: 0x6d289820, 0x356d1: 0x6d289a20, 0x356d2: 0x6d55dc20, 0x356d3: 0x6d815820,\n\t0x356d4: 0x6d815a20, 0x356d5: 0x6da74820, 0x356d6: 0x6de4a020, 0x356d7: 0x6dfbb220,\n\t0x356d8: 0x6dfbb420, 0x356d9: 0x6e1e2220, 0x356da: 0x6e405a20, 0x356db: 0x6c04c020,\n\t0x356dc: 0x6c12dc20, 0x356dd: 0x6c12de20, 0x356de: 0x6c12e020, 0x356df: 0x6c12e220,\n\t0x356e0: 0x6c12e420, 0x356e1: 0x6c228620, 0x356e2: 0x6c228820, 0x356e3: 0x6c228a20,\n\t0x356e4: 0x6c228c20, 0x356e5: 0x6c228e20, 0x356e6: 0x6c229020, 0x356e7: 0x6c229220,\n\t0x356e8: 0x6c229420, 0x356e9: 0x6c382e20, 0x356ea: 0x6c383020, 0x356eb: 0x6c383220,\n\t0x356ec: 0x6c383420, 0x356ed: 0x6c383620, 0x356ee: 0x6c383820, 0x356ef: 0x6c383a20,\n\t0x356f0: 0x6c383c20, 0x356f1: 0x6c383e20, 0x356f2: 0x6c384020, 0x356f3: 0x6c384220,\n\t0x356f4: 0x6c384420, 0x356f5: 0x6c384620, 0x356f6: 0x6c384820, 0x356f7: 0x6c384a20,\n\t0x356f8: 0x6c536420, 0x356f9: 0x6c536620, 0x356fa: 0x6c536820, 0x356fb: 0x6c536a20,\n\t0x356fc: 0x6c536c20, 0x356fd: 0x6c536e20, 0x356fe: 0x6c537020, 0x356ff: 0x6c537220,\n\t// Block 0xd5c, offset 0x35700\n\t0x35700: 0x6c537420, 0x35701: 0x6c537620, 0x35702: 0x6c537820, 0x35703: 0x6c537a20,\n\t0x35704: 0x6c537c20, 0x35705: 0x6c537e20, 0x35706: 0x6c538020, 0x35707: 0x6c538220,\n\t0x35708: 0x6c538420, 0x35709: 0x6c538620, 0x3570a: 0x6c538820, 0x3570b: 0x6c538a20,\n\t0x3570c: 0x6c538c20, 0x3570d: 0x6c538e20, 0x3570e: 0x6c539020, 0x3570f: 0x6c539220,\n\t0x35710: 0x6c539420, 0x35711: 0x6c539620, 0x35712: 0x6c539820, 0x35713: 0x6c539a20,\n\t0x35714: 0x6c539c20, 0x35715: 0x6c539e20, 0x35716: 0x6c53a020, 0x35717: 0x6c53a220,\n\t0x35718: 0x6c53a420, 0x35719: 0x6c53a620, 0x3571a: 0x6c53a820, 0x3571b: 0x6c53aa20,\n\t0x3571c: 0x6c760a20, 0x3571d: 0x6c760c20, 0x3571e: 0x6c760e20, 0x3571f: 0x6c761020,\n\t0x35720: 0x6c761220, 0x35721: 0x6c761420, 0x35722: 0x6c761620, 0x35723: 0x6c761820,\n\t0x35724: 0x6c761a20, 0x35725: 0x6c761c20, 0x35726: 0x6c761e20, 0x35727: 0x6c762020,\n\t0x35728: 0x6c762220, 0x35729: 0x6c762420, 0x3572a: 0x6c762620, 0x3572b: 0x6c762820,\n\t0x3572c: 0x6c762a20, 0x3572d: 0x6c762c20, 0x3572e: 0x6c762e20, 0x3572f: 0x6c763020,\n\t0x35730: 0x6c763220, 0x35731: 0x6c9e6a20, 0x35732: 0x6c9e6c20, 0x35733: 0x6c9e6e20,\n\t0x35734: 0x6c9e7020, 0x35735: 0x6c9e7220, 0x35736: 0x6c9e7420, 0x35737: 0x6c9e7620,\n\t0x35738: 0x6c9e7820, 0x35739: 0x6c9e7a20, 0x3573a: 0x6c9e7c20, 0x3573b: 0x6c9e7e20,\n\t0x3573c: 0x6c9e8020, 0x3573d: 0x6c9e8220, 0x3573e: 0x6c9e8420, 0x3573f: 0x6c9e8620,\n\t// Block 0xd5d, offset 0x35740\n\t0x35740: 0x6c9e8820, 0x35741: 0x6c9e8a20, 0x35742: 0x6c9e8c20, 0x35743: 0x6c9e8e20,\n\t0x35744: 0x6c9e9020, 0x35745: 0x6c9e9220, 0x35746: 0x6c9e9420, 0x35747: 0x6c9e9620,\n\t0x35748: 0x6ccb8220, 0x35749: 0x6ccb8420, 0x3574a: 0x6ccb8620, 0x3574b: 0x6ccb8820,\n\t0x3574c: 0x6ccb8a20, 0x3574d: 0x6ccb8c20, 0x3574e: 0x6ccb8e20, 0x3574f: 0x6ccb9020,\n\t0x35750: 0x6ccb9220, 0x35751: 0x6ccb9420, 0x35752: 0x6ccb9620, 0x35753: 0x6ccb9820,\n\t0x35754: 0x6ccb9a20, 0x35755: 0x6ccb9c20, 0x35756: 0x6ccb9e20, 0x35757: 0x6ccba020,\n\t0x35758: 0x6ccba220, 0x35759: 0x6ccba420, 0x3575a: 0x6ccba620, 0x3575b: 0x6ccba820,\n\t0x3575c: 0x6ccbaa20, 0x3575d: 0x6ccbac20, 0x3575e: 0x6ccbae20, 0x3575f: 0x6ccbb020,\n\t0x35760: 0x6ccbb220, 0x35761: 0x6ccbb420, 0x35762: 0x6ccbb620, 0x35763: 0x6ccbb820,\n\t0x35764: 0x6ccbba20, 0x35765: 0x6ccbbc20, 0x35766: 0x6ccbbe20, 0x35767: 0x6ccbc020,\n\t0x35768: 0x6cf99a20, 0x35769: 0x6cf99c20, 0x3576a: 0x6cf99e20, 0x3576b: 0x6cf9a020,\n\t0x3576c: 0x6cf9a220, 0x3576d: 0x6cf9a420, 0x3576e: 0x6cf9a620, 0x3576f: 0x6cf9a820,\n\t0x35770: 0x6cf9aa20, 0x35771: 0x6cf9ac20, 0x35772: 0x6cf9ae20, 0x35773: 0x6cf9b020,\n\t0x35774: 0x6cf9b220, 0x35775: 0x6cf9b420, 0x35776: 0x6cf9b620, 0x35777: 0x6cf9b820,\n\t0x35778: 0x6cf9ba20, 0x35779: 0x6cf9bc20, 0x3577a: 0x6cf9be20, 0x3577b: 0x6cf9c020,\n\t0x3577c: 0x6cf9c220, 0x3577d: 0x6cf9c420, 0x3577e: 0x6cf9c620, 0x3577f: 0x6cf9c820,\n\t// Block 0xd5e, offset 0x35780\n\t0x35780: 0x6cf9ca20, 0x35781: 0x6cf9cc20, 0x35782: 0x6cf9ce20, 0x35783: 0x6cf9d020,\n\t0x35784: 0x6cf9d220, 0x35785: 0x6d28ac20, 0x35786: 0x6d28ae20, 0x35787: 0x6d28b020,\n\t0x35788: 0x6d28b220, 0x35789: 0x6d28b420, 0x3578a: 0x6d28b620, 0x3578b: 0x6d28b820,\n\t0x3578c: 0x6d28ba20, 0x3578d: 0x6d28bc20, 0x3578e: 0x6d28be20, 0x3578f: 0x6d28c020,\n\t0x35790: 0x6d28c220, 0x35791: 0x6d28c420, 0x35792: 0x6d28c620, 0x35793: 0x6d28c820,\n\t0x35794: 0x6d28ca20, 0x35795: 0x6d28cc20, 0x35796: 0x6d28ce20, 0x35797: 0x6d28d020,\n\t0x35798: 0x6d28d220, 0x35799: 0x6d28d420, 0x3579a: 0x6d28d620, 0x3579b: 0x6d28d820,\n\t0x3579c: 0x6d28da20, 0x3579d: 0x6d28dc20, 0x3579e: 0x6d28de20, 0x3579f: 0x6d28e020,\n\t0x357a0: 0x6d28e220, 0x357a1: 0x6d28e420, 0x357a2: 0x6d28e620, 0x357a3: 0x6d55e620,\n\t0x357a4: 0x6d55e820, 0x357a5: 0x6d55ea20, 0x357a6: 0x6d55ec20, 0x357a7: 0x6d55ee20,\n\t0x357a8: 0x6d55f020, 0x357a9: 0x6d55f220, 0x357aa: 0x6d55f420, 0x357ab: 0x6d55f620,\n\t0x357ac: 0x6d55f820, 0x357ad: 0x6d55fa20, 0x357ae: 0x6d55fc20, 0x357af: 0x6d55fe20,\n\t0x357b0: 0x6d560020, 0x357b1: 0x6d560220, 0x357b2: 0x6d560420, 0x357b3: 0x6d560620,\n\t0x357b4: 0x6d560820, 0x357b5: 0x6d560a20, 0x357b6: 0x6d560c20, 0x357b7: 0x6d560e20,\n\t0x357b8: 0x6d817020, 0x357b9: 0x6d817220, 0x357ba: 0x6d817420, 0x357bb: 0x6d817620,\n\t0x357bc: 0x6d817820, 0x357bd: 0x6d817a20, 0x357be: 0x6d817c20, 0x357bf: 0x6d817e20,\n\t// Block 0xd5f, offset 0x357c0\n\t0x357c0: 0x6d818020, 0x357c1: 0x6d818220, 0x357c2: 0x6d818420, 0x357c3: 0x6d818620,\n\t0x357c4: 0x6d818820, 0x357c5: 0x6d818a20, 0x357c6: 0x6d818c20, 0x357c7: 0x6d818e20,\n\t0x357c8: 0x6d819020, 0x357c9: 0x6d819220, 0x357ca: 0x6da75020, 0x357cb: 0x6da75220,\n\t0x357cc: 0x6da75420, 0x357cd: 0x6da75620, 0x357ce: 0x6da75820, 0x357cf: 0x6da75a20,\n\t0x357d0: 0x6da75c20, 0x357d1: 0x6da75e20, 0x357d2: 0x6da76020, 0x357d3: 0x6da76220,\n\t0x357d4: 0x6da76420, 0x357d5: 0x6da76620, 0x357d6: 0x6da76820, 0x357d7: 0x6da76a20,\n\t0x357d8: 0x6da76c20, 0x357d9: 0x6da76e20, 0x357da: 0x6dc89820, 0x357db: 0x6dc89a20,\n\t0x357dc: 0x6dc89c20, 0x357dd: 0x6dc89e20, 0x357de: 0x6dc8a020, 0x357df: 0x6dc8a220,\n\t0x357e0: 0x6dc8a420, 0x357e1: 0x6dc8a620, 0x357e2: 0x6dc8a820, 0x357e3: 0x6dc8aa20,\n\t0x357e4: 0x6dc8ac20, 0x357e5: 0x6dc8ae20, 0x357e6: 0x6dc8b020, 0x357e7: 0x6dc8b220,\n\t0x357e8: 0x6dc8b420, 0x357e9: 0x6dc8b620, 0x357ea: 0x6dc8b820, 0x357eb: 0x6de4a620,\n\t0x357ec: 0x6de4a820, 0x357ed: 0x6de4aa20, 0x357ee: 0x6de4ac20, 0x357ef: 0x6de4ae20,\n\t0x357f0: 0x6de4b020, 0x357f1: 0x6dfbb820, 0x357f2: 0x6dfbba20, 0x357f3: 0x6dfbbc20,\n\t0x357f4: 0x6dfbbe20, 0x357f5: 0x6dfbc020, 0x357f6: 0x6e0eec20, 0x357f7: 0x6e0eee20,\n\t0x357f8: 0x6e0ef020, 0x357f9: 0x6e0ef220, 0x357fa: 0x6e0ef420, 0x357fb: 0x6e1e2620,\n\t0x357fc: 0x6e1e2820, 0x357fd: 0x6e1e2a20, 0x357fe: 0x6e1e2c20, 0x357ff: 0x6e299020,\n\t// Block 0xd60, offset 0x35800\n\t0x35800: 0x6e299220, 0x35801: 0x6e299420, 0x35802: 0x6e3d4c20, 0x35803: 0x6e3d4e20,\n\t0x35804: 0x6e42b020, 0x35805: 0x6c385220, 0x35806: 0x6c385420, 0x35807: 0x6c53b020,\n\t0x35808: 0x6c53b220, 0x35809: 0x6c53b420, 0x3580a: 0x6c53b620, 0x3580b: 0x6c9e9820,\n\t0x3580c: 0x6c9e9a20, 0x3580d: 0x6c9e9c20, 0x3580e: 0x6c9e9e20, 0x3580f: 0x6cf9d620,\n\t0x35810: 0x6d28ea20, 0x35811: 0x6d819420, 0x35812: 0x6da77020, 0x35813: 0x6dc8bc20,\n\t0x35814: 0x6dc8be20, 0x35815: 0x6c12f020, 0x35816: 0x6c12f220, 0x35817: 0x6c229a20,\n\t0x35818: 0x6c229c20, 0x35819: 0x6c385e20, 0x3581a: 0x6c386020, 0x3581b: 0x6c386220,\n\t0x3581c: 0x6c53c220, 0x3581d: 0x6c53c420, 0x3581e: 0x6c53c620, 0x3581f: 0x6c53c820,\n\t0x35820: 0x6c53ca20, 0x35821: 0x6c764820, 0x35822: 0x6ccbd020, 0x35823: 0x6c9ea620,\n\t0x35824: 0x6ccbd220, 0x35825: 0x6ccbd420, 0x35826: 0x6cf9da20, 0x35827: 0x6cf9dc20,\n\t0x35828: 0x6cf9de20, 0x35829: 0x6d28f020, 0x3582a: 0x6d561420, 0x3582b: 0x6d561620,\n\t0x3582c: 0x6da77220, 0x3582d: 0x6da77420, 0x3582e: 0x6dc8c020, 0x3582f: 0x6e0ef620,\n\t0x35830: 0x6e0ef820, 0x35831: 0x6c01fc20, 0x35832: 0x6c04ca20, 0x35833: 0x6c04cc20,\n\t0x35834: 0x6c04ce20, 0x35835: 0x6c09b220, 0x35836: 0x6c09b420, 0x35837: 0x6c09b620,\n\t0x35838: 0x6c09b820, 0x35839: 0x6c09ba20, 0x3583a: 0x6c09bc20, 0x3583b: 0x6c09be20,\n\t0x3583c: 0x6c09c020, 0x3583d: 0x6c09c220, 0x3583e: 0x6c09c420, 0x3583f: 0x6c09c620,\n\t// Block 0xd61, offset 0x35840\n\t0x35840: 0x6c133020, 0x35841: 0x6c133220, 0x35842: 0x6c133420, 0x35843: 0x6c133620,\n\t0x35844: 0x6c133820, 0x35845: 0x6c133a20, 0x35846: 0x6c133c20, 0x35847: 0x6c133e20,\n\t0x35848: 0x6c134020, 0x35849: 0x6c134220, 0x3584a: 0x6c134420, 0x3584b: 0x6c134620,\n\t0x3584c: 0x6c134820, 0x3584d: 0x6c134a20, 0x3584e: 0x6c233a20, 0x3584f: 0x6c233c20,\n\t0x35850: 0x6c233e20, 0x35851: 0x6c234020, 0x35852: 0x6c234220, 0x35853: 0x6c234420,\n\t0x35854: 0x6c234620, 0x35855: 0x6c234820, 0x35856: 0x6c234a20, 0x35857: 0x6c234c20,\n\t0x35858: 0x6c234e20, 0x35859: 0x6c235020, 0x3585a: 0x6c235220, 0x3585b: 0x6c235420,\n\t0x3585c: 0x6c235620, 0x3585d: 0x6c235820, 0x3585e: 0x6c235a20, 0x3585f: 0x6c235c20,\n\t0x35860: 0x6c235e20, 0x35861: 0x6c236020, 0x35862: 0x6c236220, 0x35863: 0x6c236420,\n\t0x35864: 0x6c236620, 0x35865: 0x6c236820, 0x35866: 0x6c236a20, 0x35867: 0x6c236c20,\n\t0x35868: 0x6c236e20, 0x35869: 0x6c237020, 0x3586a: 0x6c237220, 0x3586b: 0x6c237420,\n\t0x3586c: 0x6c237620, 0x3586d: 0x6c237820, 0x3586e: 0x6c237a20, 0x3586f: 0x6c237c20,\n\t0x35870: 0x6c237e20, 0x35871: 0x6c238020, 0x35872: 0x6c392020, 0x35873: 0x6c392220,\n\t0x35874: 0x6c392420, 0x35875: 0x6c392620, 0x35876: 0x6c392820, 0x35877: 0x6c392a20,\n\t0x35878: 0x6c392c20, 0x35879: 0x6c392e20, 0x3587a: 0x6c393020, 0x3587b: 0x6c393220,\n\t0x3587c: 0x6c393420, 0x3587d: 0x6c393620, 0x3587e: 0x6c393820, 0x3587f: 0x6c393a20,\n\t// Block 0xd62, offset 0x35880\n\t0x35880: 0x6c393c20, 0x35881: 0x6c393e20, 0x35882: 0x6c394020, 0x35883: 0x6c394220,\n\t0x35884: 0x6c394420, 0x35885: 0x6c394620, 0x35886: 0x6c394820, 0x35887: 0x6c394a20,\n\t0x35888: 0x6c394c20, 0x35889: 0x6c394e20, 0x3588a: 0x6c395020, 0x3588b: 0x6c395220,\n\t0x3588c: 0x6c395420, 0x3588d: 0x6c395620, 0x3588e: 0x6c395820, 0x3588f: 0x6c395a20,\n\t0x35890: 0x6c395c20, 0x35891: 0x6c395e20, 0x35892: 0x6c396020, 0x35893: 0x6c396220,\n\t0x35894: 0x6c396420, 0x35895: 0x6c396620, 0x35896: 0x6c396820, 0x35897: 0x6c396a20,\n\t0x35898: 0x6c396c20, 0x35899: 0x6c396e20, 0x3589a: 0x6c397020, 0x3589b: 0x6c397220,\n\t0x3589c: 0x6c397420, 0x3589d: 0x6c397620, 0x3589e: 0x6c397820, 0x3589f: 0x6c397a20,\n\t0x358a0: 0x6c397c20, 0x358a1: 0x6c397e20, 0x358a2: 0x6c398020, 0x358a3: 0x6c398220,\n\t0x358a4: 0x6c549620, 0x358a5: 0x6c549820, 0x358a6: 0x6c549a20, 0x358a7: 0x6c549c20,\n\t0x358a8: 0x6c549e20, 0x358a9: 0x6c54a020, 0x358aa: 0x6c54a220, 0x358ab: 0x6c54a420,\n\t0x358ac: 0x6c54a620, 0x358ad: 0x6c54a820, 0x358ae: 0x6c54aa20, 0x358af: 0x6c54ac20,\n\t0x358b0: 0x6c54ae20, 0x358b1: 0x6c54b020, 0x358b2: 0x6c54b220, 0x358b3: 0x6c54b420,\n\t0x358b4: 0x6c54b620, 0x358b5: 0x6c54b820, 0x358b6: 0x6c54ba20, 0x358b7: 0x6c54bc20,\n\t0x358b8: 0x6c54be20, 0x358b9: 0x6c54c020, 0x358ba: 0x6c54c220, 0x358bb: 0x6c54c420,\n\t0x358bc: 0x6c54c620, 0x358bd: 0x6c54c820, 0x358be: 0x6c54ca20, 0x358bf: 0x6c54cc20,\n\t// Block 0xd63, offset 0x358c0\n\t0x358c0: 0x6c54ce20, 0x358c1: 0x6c54d020, 0x358c2: 0x6c54d220, 0x358c3: 0x6c54d420,\n\t0x358c4: 0x6c54d620, 0x358c5: 0x6c54d820, 0x358c6: 0x6c54da20, 0x358c7: 0x6c54dc20,\n\t0x358c8: 0x6c54de20, 0x358c9: 0x6c54e020, 0x358ca: 0x6c54e220, 0x358cb: 0x6c54e420,\n\t0x358cc: 0x6c54e620, 0x358cd: 0x6c54e820, 0x358ce: 0x6c54ea20, 0x358cf: 0x6c54ec20,\n\t0x358d0: 0x6c54ee20, 0x358d1: 0x6c54f020, 0x358d2: 0x6c54f220, 0x358d3: 0x6c54f420,\n\t0x358d4: 0x6c54f620, 0x358d5: 0x6c54f820, 0x358d6: 0x6c54fa20, 0x358d7: 0x6c54fc20,\n\t0x358d8: 0x6c54fe20, 0x358d9: 0x6c550020, 0x358da: 0x6c550220, 0x358db: 0x6c550420,\n\t0x358dc: 0x6c550620, 0x358dd: 0x6c550820, 0x358de: 0x6c771820, 0x358df: 0x6c771a20,\n\t0x358e0: 0x6c771c20, 0x358e1: 0x6c771e20, 0x358e2: 0x6c772020, 0x358e3: 0x6c772220,\n\t0x358e4: 0x6c772420, 0x358e5: 0x6c772620, 0x358e6: 0x6c772820, 0x358e7: 0x6c772a20,\n\t0x358e8: 0x6c772c20, 0x358e9: 0x6c772e20, 0x358ea: 0x6c773020, 0x358eb: 0x6c773220,\n\t0x358ec: 0x6c773420, 0x358ed: 0x6c773620, 0x358ee: 0x6c773820, 0x358ef: 0x6c773a20,\n\t0x358f0: 0x6c773c20, 0x358f1: 0x6c773e20, 0x358f2: 0x6c774020, 0x358f3: 0x6c774220,\n\t0x358f4: 0x6c774420, 0x358f5: 0x6c774620, 0x358f6: 0x6c774820, 0x358f7: 0x6c774a20,\n\t0x358f8: 0x6c774c20, 0x358f9: 0x6c774e20, 0x358fa: 0x6c775020, 0x358fb: 0x6c775220,\n\t0x358fc: 0x6c775420, 0x358fd: 0x6c775620, 0x358fe: 0x6c775820, 0x358ff: 0x6c775a20,\n\t// Block 0xd64, offset 0x35900\n\t0x35900: 0x6c775c20, 0x35901: 0x6c775e20, 0x35902: 0x6c776020, 0x35903: 0x6c776220,\n\t0x35904: 0x6c776420, 0x35905: 0x6c776620, 0x35906: 0x6c776820, 0x35907: 0x6c776a20,\n\t0x35908: 0x6c776c20, 0x35909: 0x6c776e20, 0x3590a: 0x6c777020, 0x3590b: 0x6c777220,\n\t0x3590c: 0x6c777420, 0x3590d: 0x6c777620, 0x3590e: 0x6c777820, 0x3590f: 0x6c777a20,\n\t0x35910: 0x6c777c20, 0x35911: 0x6c777e20, 0x35912: 0x6c778020, 0x35913: 0x6c778220,\n\t0x35914: 0x6c778420, 0x35915: 0x6c778620, 0x35916: 0x6c778820, 0x35917: 0x6c778a20,\n\t0x35918: 0x6c778c20, 0x35919: 0x6c778e20, 0x3591a: 0x6c779020, 0x3591b: 0x6c779220,\n\t0x3591c: 0x6c779420, 0x3591d: 0x6c779620, 0x3591e: 0x6c779820, 0x3591f: 0x6c779a20,\n\t0x35920: 0x6c779c20, 0x35921: 0x6c779e20, 0x35922: 0x6c77a020, 0x35923: 0x6c77a220,\n\t0x35924: 0x6c77a420, 0x35925: 0x6c77a620, 0x35926: 0x6c77a820, 0x35927: 0x6c77aa20,\n\t0x35928: 0x6c77ac20, 0x35929: 0x6c77ae20, 0x3592a: 0x6c77b020, 0x3592b: 0x6c77b220,\n\t0x3592c: 0x6c77b420, 0x3592d: 0x6c77b620, 0x3592e: 0x6c77b820, 0x3592f: 0x6c77ba20,\n\t0x35930: 0x6c77bc20, 0x35931: 0x6c77be20, 0x35932: 0x6c77c020, 0x35933: 0x6c77c220,\n\t0x35934: 0x6c77c420, 0x35935: 0x6c77c620, 0x35936: 0x6c77c820, 0x35937: 0x6c9fbc20,\n\t0x35938: 0x6c9fbe20, 0x35939: 0x6c9fc020, 0x3593a: 0x6c9fc220, 0x3593b: 0x6c9fc420,\n\t0x3593c: 0x6c9fc620, 0x3593d: 0x6c9fc820, 0x3593e: 0x6c9fca20, 0x3593f: 0x6c9fcc20,\n\t// Block 0xd65, offset 0x35940\n\t0x35940: 0x6c9fce20, 0x35941: 0x6c9fd020, 0x35942: 0x6c9fd220, 0x35943: 0x6c9fd420,\n\t0x35944: 0x6c9fd620, 0x35945: 0x6c9fd820, 0x35946: 0x6c9fda20, 0x35947: 0x6c9fdc20,\n\t0x35948: 0x6c9fde20, 0x35949: 0x6c9fe020, 0x3594a: 0x6c9fe220, 0x3594b: 0x6c9fe420,\n\t0x3594c: 0x6c9fe620, 0x3594d: 0x6c9fe820, 0x3594e: 0x6c9fea20, 0x3594f: 0x6c9fec20,\n\t0x35950: 0x6c9fee20, 0x35951: 0x6c9ff020, 0x35952: 0x6c9ff220, 0x35953: 0x6c9ff420,\n\t0x35954: 0x6c9ff620, 0x35955: 0x6c9ff820, 0x35956: 0x6c9ffa20, 0x35957: 0x6c9ffc20,\n\t0x35958: 0x6c9ffe20, 0x35959: 0x6ca00020, 0x3595a: 0x6ca00220, 0x3595b: 0x6ca00420,\n\t0x3595c: 0x6ca00620, 0x3595d: 0x6ca00820, 0x3595e: 0x6ca00a20, 0x3595f: 0x6ca00c20,\n\t0x35960: 0x6ca00e20, 0x35961: 0x6ca01020, 0x35962: 0x6ca01220, 0x35963: 0x6ca01420,\n\t0x35964: 0x6ca01620, 0x35965: 0x6ca01820, 0x35966: 0x6ca01a20, 0x35967: 0x6ca01c20,\n\t0x35968: 0x6ca01e20, 0x35969: 0x6ca02020, 0x3596a: 0x6ca02220, 0x3596b: 0x6ca02420,\n\t0x3596c: 0x6ca02620, 0x3596d: 0x6ca02820, 0x3596e: 0x6ca02a20, 0x3596f: 0x6ca02c20,\n\t0x35970: 0x6ca02e20, 0x35971: 0x6ca03020, 0x35972: 0x6ca03220, 0x35973: 0x6ca03420,\n\t0x35974: 0x6ca03620, 0x35975: 0x6ca03820, 0x35976: 0x6ca03a20, 0x35977: 0x6ca03c20,\n\t0x35978: 0x6ca03e20, 0x35979: 0x6ca04020, 0x3597a: 0x6ca04220, 0x3597b: 0x6ca04420,\n\t0x3597c: 0x6ca04620, 0x3597d: 0x6ca04820, 0x3597e: 0x6ca04a20, 0x3597f: 0x6ca04c20,\n\t// Block 0xd66, offset 0x35980\n\t0x35980: 0x6ca04e20, 0x35981: 0x6ca05020, 0x35982: 0x6ca05220, 0x35983: 0x6ca05420,\n\t0x35984: 0x6ca05620, 0x35985: 0x6ca05820, 0x35986: 0x6ca05a20, 0x35987: 0x6ca05c20,\n\t0x35988: 0x6ca05e20, 0x35989: 0x6ca06020, 0x3598a: 0x6ca06220, 0x3598b: 0x6ca06420,\n\t0x3598c: 0x6ca06620, 0x3598d: 0x6ca06820, 0x3598e: 0x6ca06a20, 0x3598f: 0x6ca06c20,\n\t0x35990: 0x6ca06e20, 0x35991: 0x6ca07020, 0x35992: 0x6ca07220, 0x35993: 0x6ca07420,\n\t0x35994: 0x6ca07620, 0x35995: 0x6ca07820, 0x35996: 0x6ca07a20, 0x35997: 0x6ca07c20,\n\t0x35998: 0x6ca07e20, 0x35999: 0x6ca08020, 0x3599a: 0x6c77ca20, 0x3599b: 0x6ca08220,\n\t0x3599c: 0x6ca08420, 0x3599d: 0x6ca08620, 0x3599e: 0x6ca08820, 0x3599f: 0x6ca08a20,\n\t0x359a0: 0x6ca08c20, 0x359a1: 0x6ca08e20, 0x359a2: 0x6ca09020, 0x359a3: 0x6ca09220,\n\t0x359a4: 0x6ca09420, 0x359a5: 0x6ca09620, 0x359a6: 0x6ca09820, 0x359a7: 0x6ca09a20,\n\t0x359a8: 0x6ca09c20, 0x359a9: 0x6ca09e20, 0x359aa: 0x6ca0a020, 0x359ab: 0x6ca0a220,\n\t0x359ac: 0x6ca0a420, 0x359ad: 0x6ca0a620, 0x359ae: 0x6ca0a820, 0x359af: 0x6ca0aa20,\n\t0x359b0: 0x6ca0ac20, 0x359b1: 0x6ca0ae20, 0x359b2: 0x6ca0b020, 0x359b3: 0x6ca0b220,\n\t0x359b4: 0x6ca0b420, 0x359b5: 0x6ca0b620, 0x359b6: 0x6ca0b820, 0x359b7: 0x6ca0ba20,\n\t0x359b8: 0x6ca0bc20, 0x359b9: 0x6ca0be20, 0x359ba: 0x6ca0c020, 0x359bb: 0x6ca0c220,\n\t0x359bc: 0x6cccf620, 0x359bd: 0x6cccf820, 0x359be: 0x6cccfa20, 0x359bf: 0x6cccfc20,\n\t// Block 0xd67, offset 0x359c0\n\t0x359c0: 0x6cccfe20, 0x359c1: 0x6ccd0020, 0x359c2: 0x6ccd0220, 0x359c3: 0x6ccd0420,\n\t0x359c4: 0x6ccd0620, 0x359c5: 0x6ccd0820, 0x359c6: 0x6ccd0a20, 0x359c7: 0x6ccd0c20,\n\t0x359c8: 0x6ccd0e20, 0x359c9: 0x6ccd1020, 0x359ca: 0x6ca0c420, 0x359cb: 0x6ccd1220,\n\t0x359cc: 0x6ccd1420, 0x359cd: 0x6ccd1620, 0x359ce: 0x6ccd1820, 0x359cf: 0x6ccd1a20,\n\t0x359d0: 0x6ccd1c20, 0x359d1: 0x6ccd1e20, 0x359d2: 0x6ccd2020, 0x359d3: 0x6ccd2220,\n\t0x359d4: 0x6ccd2420, 0x359d5: 0x6ccd2620, 0x359d6: 0x6ccd2820, 0x359d7: 0x6ccd2a20,\n\t0x359d8: 0x6ccd2c20, 0x359d9: 0x6ccd2e20, 0x359da: 0x6ccd3020, 0x359db: 0x6ccd3220,\n\t0x359dc: 0x6ccd3420, 0x359dd: 0x6ccd3620, 0x359de: 0x6ccd3820, 0x359df: 0x6ccd3a20,\n\t0x359e0: 0x6ccd3c20, 0x359e1: 0x6ccd3e20, 0x359e2: 0x6ccd4020, 0x359e3: 0x6ccd4220,\n\t0x359e4: 0x6ccd4420, 0x359e5: 0x6ccd4620, 0x359e6: 0x6ccd4820, 0x359e7: 0x6ccd4a20,\n\t0x359e8: 0x6ccd4c20, 0x359e9: 0x6ccd4e20, 0x359ea: 0x6ccd5020, 0x359eb: 0x6ccd5220,\n\t0x359ec: 0x6ccd5420, 0x359ed: 0x6ccd5620, 0x359ee: 0x6ccd5820, 0x359ef: 0x6ccd5a20,\n\t0x359f0: 0x6ccd5c20, 0x359f1: 0x6ccd5e20, 0x359f2: 0x6ccd6020, 0x359f3: 0x6ccd6220,\n\t0x359f4: 0x6ccd6420, 0x359f5: 0x6ccd6620, 0x359f6: 0x6ccd6820, 0x359f7: 0x6ccd6a20,\n\t0x359f8: 0x6ccd6c20, 0x359f9: 0x6ccd6e20, 0x359fa: 0x6ccd7020, 0x359fb: 0x6ccd7220,\n\t0x359fc: 0x6ccd7420, 0x359fd: 0x6ccd7620, 0x359fe: 0x6ccd7820, 0x359ff: 0x6ccd7a20,\n\t// Block 0xd68, offset 0x35a00\n\t0x35a00: 0x6ccd7c20, 0x35a01: 0x6ccd7e20, 0x35a02: 0x6ccd8020, 0x35a03: 0x6ccd8220,\n\t0x35a04: 0x6ccd8420, 0x35a05: 0x6ccd8620, 0x35a06: 0x6ccd8820, 0x35a07: 0x6ccd8a20,\n\t0x35a08: 0x6ccd8c20, 0x35a09: 0x6ccd8e20, 0x35a0a: 0x6ccd9020, 0x35a0b: 0x6ccd9220,\n\t0x35a0c: 0x6ccd9420, 0x35a0d: 0x6ccd9620, 0x35a0e: 0x6ccd9820, 0x35a0f: 0x6ccd9a20,\n\t0x35a10: 0x6ccd9c20, 0x35a11: 0x6ccd9e20, 0x35a12: 0x6ccda020, 0x35a13: 0x6ccda220,\n\t0x35a14: 0x6ccda420, 0x35a15: 0x6ccda620, 0x35a16: 0x6ccda820, 0x35a17: 0x6ccdaa20,\n\t0x35a18: 0x6ccdac20, 0x35a19: 0x6ccdae20, 0x35a1a: 0x6ccdb020, 0x35a1b: 0x6ccdb220,\n\t0x35a1c: 0x6ccdb420, 0x35a1d: 0x6cfac420, 0x35a1e: 0x6cfac620, 0x35a1f: 0x6cfac820,\n\t0x35a20: 0x6cfaca20, 0x35a21: 0x6cfacc20, 0x35a22: 0x6cface20, 0x35a23: 0x6cfad020,\n\t0x35a24: 0x6cfad220, 0x35a25: 0x6cfad420, 0x35a26: 0x6cfad620, 0x35a27: 0x6cfad820,\n\t0x35a28: 0x6cfada20, 0x35a29: 0x6cfadc20, 0x35a2a: 0x6cfade20, 0x35a2b: 0x6cfae020,\n\t0x35a2c: 0x6cfae220, 0x35a2d: 0x6cfae420, 0x35a2e: 0x6cfae620, 0x35a2f: 0x6cfae820,\n\t0x35a30: 0x6cfaea20, 0x35a31: 0x6cfaec20, 0x35a32: 0x6cfaee20, 0x35a33: 0x6cfaf020,\n\t0x35a34: 0x6cfaf220, 0x35a35: 0x6cfaf420, 0x35a36: 0x6cfaf620, 0x35a37: 0x6cfaf820,\n\t0x35a38: 0x6cfafa20, 0x35a39: 0x6cfafc20, 0x35a3a: 0x6cfafe20, 0x35a3b: 0x6cfb0020,\n\t0x35a3c: 0x6cfb0220, 0x35a3d: 0x6cfb0420, 0x35a3e: 0x6cfb0620, 0x35a3f: 0x6cfb0820,\n\t// Block 0xd69, offset 0x35a40\n\t0x35a40: 0x6cfb0a20, 0x35a41: 0x6cfb0c20, 0x35a42: 0x6cfb0e20, 0x35a43: 0x6cfb1020,\n\t0x35a44: 0x6cfb1220, 0x35a45: 0x6cfb1420, 0x35a46: 0x6cfb1620, 0x35a47: 0x6cfb1820,\n\t0x35a48: 0x6cfb1a20, 0x35a49: 0x6cfb1c20, 0x35a4a: 0x6cfb1e20, 0x35a4b: 0x6cfb2020,\n\t0x35a4c: 0x6cfb2220, 0x35a4d: 0x6cfb2420, 0x35a4e: 0x6cfb2620, 0x35a4f: 0x6cfb2820,\n\t0x35a50: 0x6cfb2a20, 0x35a51: 0x6cfb2c20, 0x35a52: 0x6cfb2e20, 0x35a53: 0x6cfb3020,\n\t0x35a54: 0x6cfb3220, 0x35a55: 0x6cfb3420, 0x35a56: 0x6cfb3620, 0x35a57: 0x6cfb3820,\n\t0x35a58: 0x6cfb3a20, 0x35a59: 0x6cfb3c20, 0x35a5a: 0x6cfb3e20, 0x35a5b: 0x6cfb4020,\n\t0x35a5c: 0x6cfb4220, 0x35a5d: 0x6cfb4420, 0x35a5e: 0x6cfb4620, 0x35a5f: 0x6cfb4820,\n\t0x35a60: 0x6cfb4a20, 0x35a61: 0x6cfb4c20, 0x35a62: 0x6cfb4e20, 0x35a63: 0x6cfb5020,\n\t0x35a64: 0x6cfb5220, 0x35a65: 0x6cfb5420, 0x35a66: 0x6cfb5620, 0x35a67: 0x6cfb5820,\n\t0x35a68: 0x6cfb5a20, 0x35a69: 0x6cfb5c20, 0x35a6a: 0x6cfb5e20, 0x35a6b: 0x6cfb6020,\n\t0x35a6c: 0x6cfb6220, 0x35a6d: 0x6cfb6420, 0x35a6e: 0x6cfb6620, 0x35a6f: 0x6cfb6820,\n\t0x35a70: 0x6cfb6a20, 0x35a71: 0x6cfb6c20, 0x35a72: 0x6cfb6e20, 0x35a73: 0x6cfb7020,\n\t0x35a74: 0x6cfb7220, 0x35a75: 0x6cfb7420, 0x35a76: 0x6cfb7620, 0x35a77: 0x6cfb7820,\n\t0x35a78: 0x6cfb7a20, 0x35a79: 0x6cfb7c20, 0x35a7a: 0x6cfb7e20, 0x35a7b: 0x6cfb8020,\n\t0x35a7c: 0x6cfb8220, 0x35a7d: 0x6cfb8420, 0x35a7e: 0x6cfb8620, 0x35a7f: 0x6cfb8820,\n\t// Block 0xd6a, offset 0x35a80\n\t0x35a80: 0x6cfb8a20, 0x35a81: 0x6cfb8c20, 0x35a82: 0x6cfb8e20, 0x35a83: 0x6cfb9020,\n\t0x35a84: 0x6cfb9220, 0x35a85: 0x6cfb9420, 0x35a86: 0x6cfb9620, 0x35a87: 0x6cfb9820,\n\t0x35a88: 0x6cfb9a20, 0x35a89: 0x6cfb9c20, 0x35a8a: 0x6cfb9e20, 0x35a8b: 0x6cfba020,\n\t0x35a8c: 0x6cfba220, 0x35a8d: 0x6d29ca20, 0x35a8e: 0x6d29cc20, 0x35a8f: 0x6d29ce20,\n\t0x35a90: 0x6d29d020, 0x35a91: 0x6d29d220, 0x35a92: 0x6d29d420, 0x35a93: 0x6d29d620,\n\t0x35a94: 0x6d29d820, 0x35a95: 0x6d29da20, 0x35a96: 0x6d29dc20, 0x35a97: 0x6d29de20,\n\t0x35a98: 0x6d29e020, 0x35a99: 0x6d29e220, 0x35a9a: 0x6d29e420, 0x35a9b: 0x6d29e620,\n\t0x35a9c: 0x6d29e820, 0x35a9d: 0x6d29ea20, 0x35a9e: 0x6d29ec20, 0x35a9f: 0x6d29ee20,\n\t0x35aa0: 0x6d29f020, 0x35aa1: 0x6d29f220, 0x35aa2: 0x6d29f420, 0x35aa3: 0x6d29f620,\n\t0x35aa4: 0x6d29f820, 0x35aa5: 0x6d29fa20, 0x35aa6: 0x6d29fc20, 0x35aa7: 0x6d29fe20,\n\t0x35aa8: 0x6d2a0020, 0x35aa9: 0x6d2a0220, 0x35aaa: 0x6d2a0420, 0x35aab: 0x6d2a0620,\n\t0x35aac: 0x6d2a0820, 0x35aad: 0x6d2a0a20, 0x35aae: 0x6d2a0c20, 0x35aaf: 0x6d2a0e20,\n\t0x35ab0: 0x6d2a1020, 0x35ab1: 0x6d2a1220, 0x35ab2: 0x6d2a1420, 0x35ab3: 0x6d2a1620,\n\t0x35ab4: 0x6d56e220, 0x35ab5: 0x6d2a1820, 0x35ab6: 0x6d2a1a20, 0x35ab7: 0x6d2a1c20,\n\t0x35ab8: 0x6d2a1e20, 0x35ab9: 0x6d2a2020, 0x35aba: 0x6d2a2220, 0x35abb: 0x6d2a2420,\n\t0x35abc: 0x6d2a2620, 0x35abd: 0x6d2a2820, 0x35abe: 0x6d2a2a20, 0x35abf: 0x6d2a2c20,\n\t// Block 0xd6b, offset 0x35ac0\n\t0x35ac0: 0x6d2a2e20, 0x35ac1: 0x6d2a3020, 0x35ac2: 0x6d2a3220, 0x35ac3: 0x6d2a3420,\n\t0x35ac4: 0x6d2a3620, 0x35ac5: 0x6d2a3820, 0x35ac6: 0x6d2a3a20, 0x35ac7: 0x6d2a3c20,\n\t0x35ac8: 0x6d2a3e20, 0x35ac9: 0x6d2a4020, 0x35aca: 0x6d2a4220, 0x35acb: 0x6d2a4420,\n\t0x35acc: 0x6d2a4620, 0x35acd: 0x6d2a4820, 0x35ace: 0x6d2a4a20, 0x35acf: 0x6d2a4c20,\n\t0x35ad0: 0x6d2a4e20, 0x35ad1: 0x6d2a5020, 0x35ad2: 0x6d2a5220, 0x35ad3: 0x6d2a5420,\n\t0x35ad4: 0x6d2a5620, 0x35ad5: 0x6d2a5820, 0x35ad6: 0x6d2a5a20, 0x35ad7: 0x6d2a5c20,\n\t0x35ad8: 0x6d2a5e20, 0x35ad9: 0x6d4f2420, 0x35ada: 0x6d2a6020, 0x35adb: 0x6d2a6220,\n\t0x35adc: 0x6d2a6420, 0x35add: 0x6d2a6620, 0x35ade: 0x6d2a6820, 0x35adf: 0x6d2a6a20,\n\t0x35ae0: 0x6d2a6c20, 0x35ae1: 0x6d2a6e20, 0x35ae2: 0x6d2a7020, 0x35ae3: 0x6d2a7220,\n\t0x35ae4: 0x6d2a7420, 0x35ae5: 0x6d2a7620, 0x35ae6: 0x6d2a7820, 0x35ae7: 0x6d2a7a20,\n\t0x35ae8: 0x6d2a7c20, 0x35ae9: 0x6d2a7e20, 0x35aea: 0x6d2a8020, 0x35aeb: 0x6d2a8220,\n\t0x35aec: 0x6d2a8420, 0x35aed: 0x6d2a8620, 0x35aee: 0x6d2a8820, 0x35aef: 0x6d2a8a20,\n\t0x35af0: 0x6d2a8c20, 0x35af1: 0x6d2a8e20, 0x35af2: 0x6d2a9020, 0x35af3: 0x6d2a9220,\n\t0x35af4: 0x6d2a9420, 0x35af5: 0x6d2a9620, 0x35af6: 0x6d2a9820, 0x35af7: 0x6d2a9a20,\n\t0x35af8: 0x6d2a9c20, 0x35af9: 0x6d2a9e20, 0x35afa: 0x6d2aa020, 0x35afb: 0x6d2aa220,\n\t0x35afc: 0x6d2aa420, 0x35afd: 0x6d2aa620, 0x35afe: 0x6d2aa820, 0x35aff: 0x6d2aaa20,\n\t// Block 0xd6c, offset 0x35b00\n\t0x35b00: 0x6d2aac20, 0x35b01: 0x6d2aae20, 0x35b02: 0x6d2ab020, 0x35b03: 0x6d56e420,\n\t0x35b04: 0x6d56e620, 0x35b05: 0x6d56e820, 0x35b06: 0x6d56ea20, 0x35b07: 0x6d56ec20,\n\t0x35b08: 0x6d56ee20, 0x35b09: 0x6d56f020, 0x35b0a: 0x6d56f220, 0x35b0b: 0x6d56f420,\n\t0x35b0c: 0x6d56f620, 0x35b0d: 0x6d56f820, 0x35b0e: 0x6d56fa20, 0x35b0f: 0x6d56fc20,\n\t0x35b10: 0x6d56fe20, 0x35b11: 0x6d570020, 0x35b12: 0x6d570220, 0x35b13: 0x6d570420,\n\t0x35b14: 0x6d570620, 0x35b15: 0x6d570820, 0x35b16: 0x6d570a20, 0x35b17: 0x6d570c20,\n\t0x35b18: 0x6d570e20, 0x35b19: 0x6d571020, 0x35b1a: 0x6d571220, 0x35b1b: 0x6d571420,\n\t0x35b1c: 0x6d571620, 0x35b1d: 0x6d571820, 0x35b1e: 0x6d571a20, 0x35b1f: 0x6d571c20,\n\t0x35b20: 0x6d571e20, 0x35b21: 0x6d572020, 0x35b22: 0x6d572220, 0x35b23: 0x6d572420,\n\t0x35b24: 0x6d572620, 0x35b25: 0x6d572820, 0x35b26: 0x6d572a20, 0x35b27: 0x6d572c20,\n\t0x35b28: 0x6d572e20, 0x35b29: 0x6d573020, 0x35b2a: 0x6d573220, 0x35b2b: 0x6d573420,\n\t0x35b2c: 0x6d573620, 0x35b2d: 0x6d573820, 0x35b2e: 0x6d573a20, 0x35b2f: 0x6d573c20,\n\t0x35b30: 0x6d573e20, 0x35b31: 0x6d574020, 0x35b32: 0x6d574220, 0x35b33: 0x6d574420,\n\t0x35b34: 0x6d574620, 0x35b35: 0x6d574820, 0x35b36: 0x6d574a20, 0x35b37: 0x6d574c20,\n\t0x35b38: 0x6d574e20, 0x35b39: 0x6d575020, 0x35b3a: 0x6d575220, 0x35b3b: 0x6d575420,\n\t0x35b3c: 0x6d575620, 0x35b3d: 0x6d575820, 0x35b3e: 0x6d575a20, 0x35b3f: 0x6d575c20,\n\t// Block 0xd6d, offset 0x35b40\n\t0x35b40: 0x6d575e20, 0x35b41: 0x6d576020, 0x35b42: 0x6d576220, 0x35b43: 0x6d576420,\n\t0x35b44: 0x6d576620, 0x35b45: 0x6d576820, 0x35b46: 0x6d576a20, 0x35b47: 0x6d576c20,\n\t0x35b48: 0x6d576e20, 0x35b49: 0x6d577020, 0x35b4a: 0x6d577220, 0x35b4b: 0x6d577420,\n\t0x35b4c: 0x6d577620, 0x35b4d: 0x6d577820, 0x35b4e: 0x6d577a20, 0x35b4f: 0x6d577c20,\n\t0x35b50: 0x6d577e20, 0x35b51: 0x6d578020, 0x35b52: 0x6d578220, 0x35b53: 0x6d578420,\n\t0x35b54: 0x6d578620, 0x35b55: 0x6d578820, 0x35b56: 0x6d578a20, 0x35b57: 0x6d578c20,\n\t0x35b58: 0x6d578e20, 0x35b59: 0x6d579020, 0x35b5a: 0x6d579220, 0x35b5b: 0x6d579420,\n\t0x35b5c: 0x6d579620, 0x35b5d: 0x6d579820, 0x35b5e: 0x6d579a20, 0x35b5f: 0x6d579c20,\n\t0x35b60: 0x6d579e20, 0x35b61: 0x6d57a020, 0x35b62: 0x6d57a220, 0x35b63: 0x6d57a420,\n\t0x35b64: 0x6d57a620, 0x35b65: 0x6d57a820, 0x35b66: 0x6d57aa20, 0x35b67: 0x6d57ac20,\n\t0x35b68: 0x6d57ae20, 0x35b69: 0x6d822820, 0x35b6a: 0x6d57b020, 0x35b6b: 0x6d57b220,\n\t0x35b6c: 0x6d57b420, 0x35b6d: 0x6d57b620, 0x35b6e: 0x6d57b820, 0x35b6f: 0x6d57ba20,\n\t0x35b70: 0x6d57bc20, 0x35b71: 0x6d57be20, 0x35b72: 0x6d57c020, 0x35b73: 0x6d57c220,\n\t0x35b74: 0x6d57c420, 0x35b75: 0x6d57c620, 0x35b76: 0x6d57c820, 0x35b77: 0x6d57ca20,\n\t0x35b78: 0x6d57cc20, 0x35b79: 0x6d57ce20, 0x35b7a: 0x6d57d020, 0x35b7b: 0x6d57d220,\n\t0x35b7c: 0x6d57d420, 0x35b7d: 0x6d57d620, 0x35b7e: 0x6d57d820, 0x35b7f: 0x6d57da20,\n\t// Block 0xd6e, offset 0x35b80\n\t0x35b80: 0x6da7de20, 0x35b81: 0x6d57dc20, 0x35b82: 0x6d57de20, 0x35b83: 0x6d57e020,\n\t0x35b84: 0x6d57e220, 0x35b85: 0x6d822a20, 0x35b86: 0x6d822c20, 0x35b87: 0x6d822e20,\n\t0x35b88: 0x6d823020, 0x35b89: 0x6d823220, 0x35b8a: 0x6d823420, 0x35b8b: 0x6d823620,\n\t0x35b8c: 0x6d823820, 0x35b8d: 0x6d823a20, 0x35b8e: 0x6d823c20, 0x35b8f: 0x6d823e20,\n\t0x35b90: 0x6d824020, 0x35b91: 0x6d824220, 0x35b92: 0x6d824420, 0x35b93: 0x6d824620,\n\t0x35b94: 0x6d824820, 0x35b95: 0x6d824a20, 0x35b96: 0x6d824c20, 0x35b97: 0x6d824e20,\n\t0x35b98: 0x6d825020, 0x35b99: 0x6d825220, 0x35b9a: 0x6d825420, 0x35b9b: 0x6d825620,\n\t0x35b9c: 0x6d825820, 0x35b9d: 0x6d825a20, 0x35b9e: 0x6d825c20, 0x35b9f: 0x6d825e20,\n\t0x35ba0: 0x6d826020, 0x35ba1: 0x6d826220, 0x35ba2: 0x6d826420, 0x35ba3: 0x6d826620,\n\t0x35ba4: 0x6d826820, 0x35ba5: 0x6d826a20, 0x35ba6: 0x6d826c20, 0x35ba7: 0x6d826e20,\n\t0x35ba8: 0x6d827020, 0x35ba9: 0x6d827220, 0x35baa: 0x6d827420, 0x35bab: 0x6d827620,\n\t0x35bac: 0x6d827820, 0x35bad: 0x6d827a20, 0x35bae: 0x6d827c20, 0x35baf: 0x6d827e20,\n\t0x35bb0: 0x6d828020, 0x35bb1: 0x6d828220, 0x35bb2: 0x6d828420, 0x35bb3: 0x6d828620,\n\t0x35bb4: 0x6d828820, 0x35bb5: 0x6d828a20, 0x35bb6: 0x6d828c20, 0x35bb7: 0x6d828e20,\n\t0x35bb8: 0x6d829020, 0x35bb9: 0x6d829220, 0x35bba: 0x6d829420, 0x35bbb: 0x6d829620,\n\t0x35bbc: 0x6d829820, 0x35bbd: 0x6d829a20, 0x35bbe: 0x6d829c20, 0x35bbf: 0x6d829e20,\n\t// Block 0xd6f, offset 0x35bc0\n\t0x35bc0: 0x6d82a020, 0x35bc1: 0x6d82a220, 0x35bc2: 0x6d82a420, 0x35bc3: 0x6d82a620,\n\t0x35bc4: 0x6d82a820, 0x35bc5: 0x6d82aa20, 0x35bc6: 0x6d82ac20, 0x35bc7: 0x6d82ae20,\n\t0x35bc8: 0x6d82b020, 0x35bc9: 0x6d82b220, 0x35bca: 0x6d82b420, 0x35bcb: 0x6d82b620,\n\t0x35bcc: 0x6d82b820, 0x35bcd: 0x6d82ba20, 0x35bce: 0x6d82bc20, 0x35bcf: 0x6d82be20,\n\t0x35bd0: 0x6d82c020, 0x35bd1: 0x6d82c220, 0x35bd2: 0x6d82c420, 0x35bd3: 0x6d82c620,\n\t0x35bd4: 0x6d82c820, 0x35bd5: 0x6d82ca20, 0x35bd6: 0x6d82cc20, 0x35bd7: 0x6d82ce20,\n\t0x35bd8: 0x6d82d020, 0x35bd9: 0x6d82d220, 0x35bda: 0x6d82d420, 0x35bdb: 0x6d82d620,\n\t0x35bdc: 0x6d82d820, 0x35bdd: 0x6d82da20, 0x35bde: 0x6d82dc20, 0x35bdf: 0x6d82de20,\n\t0x35be0: 0x6d82e020, 0x35be1: 0x6d82e220, 0x35be2: 0x6d7ade20, 0x35be3: 0x6da7e020,\n\t0x35be4: 0x6da7e220, 0x35be5: 0x6da7e420, 0x35be6: 0x6da7e620, 0x35be7: 0x6da7e820,\n\t0x35be8: 0x6da7ea20, 0x35be9: 0x6da7ec20, 0x35bea: 0x6da7ee20, 0x35beb: 0x6da7f020,\n\t0x35bec: 0x6da7f220, 0x35bed: 0x6da7f420, 0x35bee: 0x6da7f620, 0x35bef: 0x6da7f820,\n\t0x35bf0: 0x6da7fa20, 0x35bf1: 0x6da7fc20, 0x35bf2: 0x6da7fe20, 0x35bf3: 0x6da80020,\n\t0x35bf4: 0x6da80220, 0x35bf5: 0x6da80420, 0x35bf6: 0x6da80620, 0x35bf7: 0x6da80820,\n\t0x35bf8: 0x6da80a20, 0x35bf9: 0x6da80c20, 0x35bfa: 0x6da80e20, 0x35bfb: 0x6da81020,\n\t0x35bfc: 0x6da81220, 0x35bfd: 0x6da81420, 0x35bfe: 0x6da81620, 0x35bff: 0x6da81820,\n\t// Block 0xd70, offset 0x35c00\n\t0x35c00: 0x6da81a20, 0x35c01: 0x6da81c20, 0x35c02: 0x6da81e20, 0x35c03: 0x6da82020,\n\t0x35c04: 0x6da82220, 0x35c05: 0x6da82420, 0x35c06: 0x6da82620, 0x35c07: 0x6da82820,\n\t0x35c08: 0x6da82a20, 0x35c09: 0x6da82c20, 0x35c0a: 0x6da82e20, 0x35c0b: 0x6da83020,\n\t0x35c0c: 0x6da83220, 0x35c0d: 0x6da83420, 0x35c0e: 0x6da83620, 0x35c0f: 0x6da83820,\n\t0x35c10: 0x6da83a20, 0x35c11: 0x6da83c20, 0x35c12: 0x6da83e20, 0x35c13: 0x6da84020,\n\t0x35c14: 0x6da84220, 0x35c15: 0x6da84420, 0x35c16: 0x6da84620, 0x35c17: 0x6da84820,\n\t0x35c18: 0x6da84a20, 0x35c19: 0x6da84c20, 0x35c1a: 0x6da84e20, 0x35c1b: 0x6da85020,\n\t0x35c1c: 0x6da85220, 0x35c1d: 0x6da85420, 0x35c1e: 0x6dc90820, 0x35c1f: 0x6da85620,\n\t0x35c20: 0x6da85820, 0x35c21: 0x6dc90a20, 0x35c22: 0x6dc90c20, 0x35c23: 0x6dc90e20,\n\t0x35c24: 0x6dc91020, 0x35c25: 0x6dc91220, 0x35c26: 0x6dc91420, 0x35c27: 0x6dc91620,\n\t0x35c28: 0x6dc91820, 0x35c29: 0x6dc91a20, 0x35c2a: 0x6dc91c20, 0x35c2b: 0x6dc91e20,\n\t0x35c2c: 0x6dc92020, 0x35c2d: 0x6dc92220, 0x35c2e: 0x6dc92420, 0x35c2f: 0x6dc92620,\n\t0x35c30: 0x6dc92820, 0x35c31: 0x6dc92a20, 0x35c32: 0x6dc92c20, 0x35c33: 0x6dc92e20,\n\t0x35c34: 0x6dc93020, 0x35c35: 0x6dc93220, 0x35c36: 0x6dc93420, 0x35c37: 0x6dc93620,\n\t0x35c38: 0x6dc93820, 0x35c39: 0x6dc93a20, 0x35c3a: 0x6dc93c20, 0x35c3b: 0x6dc93e20,\n\t0x35c3c: 0x6dc94020, 0x35c3d: 0x6dc94220, 0x35c3e: 0x6dc94420, 0x35c3f: 0x6dc94620,\n\t// Block 0xd71, offset 0x35c40\n\t0x35c40: 0x6dc94820, 0x35c41: 0x6dc94a20, 0x35c42: 0x6dc94c20, 0x35c43: 0x6dc94e20,\n\t0x35c44: 0x6dc95020, 0x35c45: 0x6dc95220, 0x35c46: 0x6dc95420, 0x35c47: 0x6dc95620,\n\t0x35c48: 0x6dc95820, 0x35c49: 0x6dc95a20, 0x35c4a: 0x6dc95c20, 0x35c4b: 0x6dc95e20,\n\t0x35c4c: 0x6dc96020, 0x35c4d: 0x6dc96220, 0x35c4e: 0x6dc96420, 0x35c4f: 0x6dc96620,\n\t0x35c50: 0x6dc96820, 0x35c51: 0x6dc96a20, 0x35c52: 0x6dc96c20, 0x35c53: 0x6dc96e20,\n\t0x35c54: 0x6dc97020, 0x35c55: 0x6dc97220, 0x35c56: 0x6dc97420, 0x35c57: 0x6dc97620,\n\t0x35c58: 0x6dc97820, 0x35c59: 0x6dc97a20, 0x35c5a: 0x6dc97c20, 0x35c5b: 0x6dc97e20,\n\t0x35c5c: 0x6dc98020, 0x35c5d: 0x6de4f420, 0x35c5e: 0x6dc98220, 0x35c5f: 0x6dc98420,\n\t0x35c60: 0x6dc98620, 0x35c61: 0x6de4f620, 0x35c62: 0x6dc98820, 0x35c63: 0x6dc98a20,\n\t0x35c64: 0x6dc98c20, 0x35c65: 0x6dc98e20, 0x35c66: 0x6dc99020, 0x35c67: 0x6dc99220,\n\t0x35c68: 0x6dc99420, 0x35c69: 0x6dc99620, 0x35c6a: 0x6dc99820, 0x35c6b: 0x6dc99a20,\n\t0x35c6c: 0x6dc99c20, 0x35c6d: 0x6dc99e20, 0x35c6e: 0x6dc9a020, 0x35c6f: 0x6dc9a220,\n\t0x35c70: 0x6dc9a420, 0x35c71: 0x6dc9a620, 0x35c72: 0x6dc9a820, 0x35c73: 0x6de4f820,\n\t0x35c74: 0x6de4fa20, 0x35c75: 0x6de4fc20, 0x35c76: 0x6de4fe20, 0x35c77: 0x6de50020,\n\t0x35c78: 0x6de50220, 0x35c79: 0x6de50420, 0x35c7a: 0x6de50620, 0x35c7b: 0x6de50820,\n\t0x35c7c: 0x6de50a20, 0x35c7d: 0x6de50c20, 0x35c7e: 0x6de50e20, 0x35c7f: 0x6de51020,\n\t// Block 0xd72, offset 0x35c80\n\t0x35c80: 0x6de51220, 0x35c81: 0x6de51420, 0x35c82: 0x6de51620, 0x35c83: 0x6de51820,\n\t0x35c84: 0x6de51a20, 0x35c85: 0x6de51c20, 0x35c86: 0x6de51e20, 0x35c87: 0x6de52020,\n\t0x35c88: 0x6de52220, 0x35c89: 0x6de52420, 0x35c8a: 0x6de52620, 0x35c8b: 0x6de52820,\n\t0x35c8c: 0x6de52a20, 0x35c8d: 0x6de52c20, 0x35c8e: 0x6de52e20, 0x35c8f: 0x6de53020,\n\t0x35c90: 0x6de53220, 0x35c91: 0x6de53420, 0x35c92: 0x6de53620, 0x35c93: 0x6de53820,\n\t0x35c94: 0x6de53a20, 0x35c95: 0x6de53c20, 0x35c96: 0x6de53e20, 0x35c97: 0x6de54020,\n\t0x35c98: 0x6de54220, 0x35c99: 0x6de54420, 0x35c9a: 0x6de54620, 0x35c9b: 0x6de54820,\n\t0x35c9c: 0x6de54a20, 0x35c9d: 0x6de54c20, 0x35c9e: 0x6de54e20, 0x35c9f: 0x6de55020,\n\t0x35ca0: 0x6de55220, 0x35ca1: 0x6de55420, 0x35ca2: 0x6de55620, 0x35ca3: 0x6de55820,\n\t0x35ca4: 0x6de55a20, 0x35ca5: 0x6de55c20, 0x35ca6: 0x6de55e20, 0x35ca7: 0x6de56020,\n\t0x35ca8: 0x6dfbf620, 0x35ca9: 0x6dfbf820, 0x35caa: 0x6dfbfa20, 0x35cab: 0x6dfbfc20,\n\t0x35cac: 0x6dfbfe20, 0x35cad: 0x6dfc0020, 0x35cae: 0x6dfc0220, 0x35caf: 0x6dfc0420,\n\t0x35cb0: 0x6dfc0620, 0x35cb1: 0x6dfc0820, 0x35cb2: 0x6dfc0a20, 0x35cb3: 0x6dfc0c20,\n\t0x35cb4: 0x6dfc0e20, 0x35cb5: 0x6dfc1020, 0x35cb6: 0x6dfc1220, 0x35cb7: 0x6dfc1420,\n\t0x35cb8: 0x6dfc1620, 0x35cb9: 0x6dfc1820, 0x35cba: 0x6dfc1a20, 0x35cbb: 0x6dfc1c20,\n\t0x35cbc: 0x6dfc1e20, 0x35cbd: 0x6dfc2020, 0x35cbe: 0x6dfc2220, 0x35cbf: 0x6dfc2420,\n\t// Block 0xd73, offset 0x35cc0\n\t0x35cc0: 0x6dfc2620, 0x35cc1: 0x6dfc2820, 0x35cc2: 0x6dfc2a20, 0x35cc3: 0x6dfc2c20,\n\t0x35cc4: 0x6dfc2e20, 0x35cc5: 0x6dfc3020, 0x35cc6: 0x6dfc3220, 0x35cc7: 0x6dfc3420,\n\t0x35cc8: 0x6dfc3620, 0x35cc9: 0x6dfc3820, 0x35cca: 0x6dfc3a20, 0x35ccb: 0x6dfc3c20,\n\t0x35ccc: 0x6dfc3e20, 0x35ccd: 0x6dfc4020, 0x35cce: 0x6e0f2220, 0x35ccf: 0x6e0f2420,\n\t0x35cd0: 0x6e0f2620, 0x35cd1: 0x6e0f2820, 0x35cd2: 0x6e0f2a20, 0x35cd3: 0x6e0f2c20,\n\t0x35cd4: 0x6e0f2e20, 0x35cd5: 0x6e0f3020, 0x35cd6: 0x6e0f3220, 0x35cd7: 0x6e0f3420,\n\t0x35cd8: 0x6e0f3620, 0x35cd9: 0x6e0f3820, 0x35cda: 0x6e0f3a20, 0x35cdb: 0x6e0f3c20,\n\t0x35cdc: 0x6e0f3e20, 0x35cdd: 0x6e0f4020, 0x35cde: 0x6e0f4220, 0x35cdf: 0x6e0f4420,\n\t0x35ce0: 0x6e0f4620, 0x35ce1: 0x6e0f4820, 0x35ce2: 0x6e0f4a20, 0x35ce3: 0x6e0f4c20,\n\t0x35ce4: 0x6e0f4e20, 0x35ce5: 0x6e0f5020, 0x35ce6: 0x6e0f5220, 0x35ce7: 0x6e0f5420,\n\t0x35ce8: 0x6e0f5620, 0x35ce9: 0x6e0f5820, 0x35cea: 0x6e0f5a20, 0x35ceb: 0x6e0f5c20,\n\t0x35cec: 0x6e0f5e20, 0x35ced: 0x6e0f6020, 0x35cee: 0x6e0f6220, 0x35cef: 0x6e0f6420,\n\t0x35cf0: 0x6e0f6620, 0x35cf1: 0x6e0f6820, 0x35cf2: 0x6e0f6a20, 0x35cf3: 0x6e0f6c20,\n\t0x35cf4: 0x6e0f6e20, 0x35cf5: 0x6e0f7020, 0x35cf6: 0x6e1e4220, 0x35cf7: 0x6e1e4420,\n\t0x35cf8: 0x6e1e4620, 0x35cf9: 0x6e1e4820, 0x35cfa: 0x6e1e4a20, 0x35cfb: 0x6e1e4c20,\n\t0x35cfc: 0x6e1e4e20, 0x35cfd: 0x6e1e5020, 0x35cfe: 0x6e1e5220, 0x35cff: 0x6e1e5420,\n\t// Block 0xd74, offset 0x35d00\n\t0x35d00: 0x6e1e5620, 0x35d01: 0x6e1e5820, 0x35d02: 0x6e1e5a20, 0x35d03: 0x6e1e5c20,\n\t0x35d04: 0x6e1e5e20, 0x35d05: 0x6e1e6020, 0x35d06: 0x6e1e6220, 0x35d07: 0x6e1e6420,\n\t0x35d08: 0x6e1e6620, 0x35d09: 0x6e1e6820, 0x35d0a: 0x6e29a620, 0x35d0b: 0x6e29a820,\n\t0x35d0c: 0x6e29aa20, 0x35d0d: 0x6e29ac20, 0x35d0e: 0x6e29ae20, 0x35d0f: 0x6e29b020,\n\t0x35d10: 0x6e29b220, 0x35d11: 0x6e29b420, 0x35d12: 0x6e29b620, 0x35d13: 0x6e29b820,\n\t0x35d14: 0x6e29ba20, 0x35d15: 0x6e29bc20, 0x35d16: 0x6e29be20, 0x35d17: 0x6e29c020,\n\t0x35d18: 0x6e29c220, 0x35d19: 0x6e29c420, 0x35d1a: 0x6e29c620, 0x35d1b: 0x6e29c820,\n\t0x35d1c: 0x6e29ca20, 0x35d1d: 0x6e29cc20, 0x35d1e: 0x6e29ce20, 0x35d1f: 0x6e29d020,\n\t0x35d20: 0x6e32ac20, 0x35d21: 0x6e32ae20, 0x35d22: 0x6e32b020, 0x35d23: 0x6e32b220,\n\t0x35d24: 0x6e32b420, 0x35d25: 0x6e32b620, 0x35d26: 0x6e32b820, 0x35d27: 0x6e32ba20,\n\t0x35d28: 0x6e32bc20, 0x35d29: 0x6e38e420, 0x35d2a: 0x6e38e620, 0x35d2b: 0x6e38e820,\n\t0x35d2c: 0x6e38ea20, 0x35d2d: 0x6e38ec20, 0x35d2e: 0x6e38ee20, 0x35d2f: 0x6e38f020,\n\t0x35d30: 0x6e3d5820, 0x35d31: 0x6e3d5a20, 0x35d32: 0x6e3d5c20, 0x35d33: 0x6e3d5e20,\n\t0x35d34: 0x6e3d6020, 0x35d35: 0x6e3d6220, 0x35d36: 0x6e3d6420, 0x35d37: 0x6e406220,\n\t0x35d38: 0x6e406420, 0x35d39: 0x6e406620, 0x35d3a: 0x6e406820, 0x35d3b: 0x6e406a20,\n\t0x35d3c: 0x6e42b220, 0x35d3d: 0x6e42b420, 0x35d3e: 0x6e443220, 0x35d3f: 0x6e452220,\n\t// Block 0xd75, offset 0x35d40\n\t0x35d40: 0x6e468020, 0x35d41: 0x6e46c820, 0x35d42: 0x6c09cc20, 0x35d43: 0x6c136620,\n\t0x35d44: 0x6c136820, 0x35d45: 0x6c136a20, 0x35d46: 0x6c136c20, 0x35d47: 0x6c136e20,\n\t0x35d48: 0x6c137020, 0x35d49: 0x6c137220, 0x35d4a: 0x6c137420, 0x35d4b: 0x6c137620,\n\t0x35d4c: 0x6c137820, 0x35d4d: 0x6c23aa20, 0x35d4e: 0x6c23ac20, 0x35d4f: 0x6c23ae20,\n\t0x35d50: 0x6c23b020, 0x35d51: 0x6c23b220, 0x35d52: 0x6c23b420, 0x35d53: 0x6c23b620,\n\t0x35d54: 0x6c23b820, 0x35d55: 0x6c23ba20, 0x35d56: 0x6c23bc20, 0x35d57: 0x6c23be20,\n\t0x35d58: 0x6c23c020, 0x35d59: 0x6c23c220, 0x35d5a: 0x6c23c420, 0x35d5b: 0x6c23c620,\n\t0x35d5c: 0x6c23c820, 0x35d5d: 0x6c39d820, 0x35d5e: 0x6c39da20, 0x35d5f: 0x6c39dc20,\n\t0x35d60: 0x6c39de20, 0x35d61: 0x6c39e020, 0x35d62: 0x6c39e220, 0x35d63: 0x6c39e420,\n\t0x35d64: 0x6c39e620, 0x35d65: 0x6c39e820, 0x35d66: 0x6c39ea20, 0x35d67: 0x6c39ec20,\n\t0x35d68: 0x6c39ee20, 0x35d69: 0x6c39f020, 0x35d6a: 0x6c39f220, 0x35d6b: 0x6c39f420,\n\t0x35d6c: 0x6c39f620, 0x35d6d: 0x6c39f820, 0x35d6e: 0x6c39fa20, 0x35d6f: 0x6c39fc20,\n\t0x35d70: 0x6c39fe20, 0x35d71: 0x6c3a0020, 0x35d72: 0x6c3a0220, 0x35d73: 0x6c3a0420,\n\t0x35d74: 0x6c3a0620, 0x35d75: 0x6c3a0820, 0x35d76: 0x6c3a0a20, 0x35d77: 0x6c3a0c20,\n\t0x35d78: 0x6c3a0e20, 0x35d79: 0x6c3a1020, 0x35d7a: 0x6c3a1220, 0x35d7b: 0x6c3a1420,\n\t0x35d7c: 0x6c557220, 0x35d7d: 0x6c557420, 0x35d7e: 0x6c557620, 0x35d7f: 0x6c557820,\n\t// Block 0xd76, offset 0x35d80\n\t0x35d80: 0x6c557a20, 0x35d81: 0x6c557c20, 0x35d82: 0x6c557e20, 0x35d83: 0x6c558020,\n\t0x35d84: 0x6c558220, 0x35d85: 0x6c558420, 0x35d86: 0x6c558620, 0x35d87: 0x6c558820,\n\t0x35d88: 0x6c558a20, 0x35d89: 0x6c558c20, 0x35d8a: 0x6c558e20, 0x35d8b: 0x6c559020,\n\t0x35d8c: 0x6c559220, 0x35d8d: 0x6c559420, 0x35d8e: 0x6c559620, 0x35d8f: 0x6c559820,\n\t0x35d90: 0x6c559a20, 0x35d91: 0x6c559c20, 0x35d92: 0x6c559e20, 0x35d93: 0x6c55a020,\n\t0x35d94: 0x6c55a220, 0x35d95: 0x6c55a420, 0x35d96: 0x6c55a620, 0x35d97: 0x6c55a820,\n\t0x35d98: 0x6c55aa20, 0x35d99: 0x6c55ac20, 0x35d9a: 0x6c55ae20, 0x35d9b: 0x6c55b020,\n\t0x35d9c: 0x6c55b220, 0x35d9d: 0x6c55b420, 0x35d9e: 0x6c55b620, 0x35d9f: 0x6c55b820,\n\t0x35da0: 0x6c55ba20, 0x35da1: 0x6c55bc20, 0x35da2: 0x6c55be20, 0x35da3: 0x6c55c020,\n\t0x35da4: 0x6c55c220, 0x35da5: 0x6c55c420, 0x35da6: 0x6c55c620, 0x35da7: 0x6c55c820,\n\t0x35da8: 0x6c55ca20, 0x35da9: 0x6c55cc20, 0x35daa: 0x6c55ce20, 0x35dab: 0x6c55d020,\n\t0x35dac: 0x6c55d220, 0x35dad: 0x6c55d420, 0x35dae: 0x6c55d620, 0x35daf: 0x6c784c20,\n\t0x35db0: 0x6c784e20, 0x35db1: 0x6c785020, 0x35db2: 0x6c785220, 0x35db3: 0x6c785420,\n\t0x35db4: 0x6c785620, 0x35db5: 0x6c785820, 0x35db6: 0x6c785a20, 0x35db7: 0x6c785c20,\n\t0x35db8: 0x6c785e20, 0x35db9: 0x6c786020, 0x35dba: 0x6c786220, 0x35dbb: 0x6c786420,\n\t0x35dbc: 0x6c786620, 0x35dbd: 0x6c786820, 0x35dbe: 0x6c786a20, 0x35dbf: 0x6c786c20,\n\t// Block 0xd77, offset 0x35dc0\n\t0x35dc0: 0x6c786e20, 0x35dc1: 0x6c787020, 0x35dc2: 0x6c787220, 0x35dc3: 0x6c787420,\n\t0x35dc4: 0x6c787620, 0x35dc5: 0x6c787820, 0x35dc6: 0x6c787a20, 0x35dc7: 0x6c787c20,\n\t0x35dc8: 0x6c787e20, 0x35dc9: 0x6c788020, 0x35dca: 0x6c788220, 0x35dcb: 0x6c788420,\n\t0x35dcc: 0x6c788620, 0x35dcd: 0x6c788820, 0x35dce: 0x6c788a20, 0x35dcf: 0x6c788c20,\n\t0x35dd0: 0x6c788e20, 0x35dd1: 0x6c789020, 0x35dd2: 0x6c789220, 0x35dd3: 0x6c789420,\n\t0x35dd4: 0x6c789620, 0x35dd5: 0x6c789820, 0x35dd6: 0x6c789a20, 0x35dd7: 0x6c789c20,\n\t0x35dd8: 0x6c789e20, 0x35dd9: 0x6c78a020, 0x35dda: 0x6c78a220, 0x35ddb: 0x6c78a420,\n\t0x35ddc: 0x6c78a620, 0x35ddd: 0x6c78a820, 0x35dde: 0x6c78aa20, 0x35ddf: 0x6c78ac20,\n\t0x35de0: 0x6c78ae20, 0x35de1: 0x6c78b020, 0x35de2: 0x6c78b220, 0x35de3: 0x6c78b420,\n\t0x35de4: 0x6c78b620, 0x35de5: 0x6ca14020, 0x35de6: 0x6ca14220, 0x35de7: 0x6ca14420,\n\t0x35de8: 0x6ca14620, 0x35de9: 0x6ca14820, 0x35dea: 0x6ca14a20, 0x35deb: 0x6ca14c20,\n\t0x35dec: 0x6ca14e20, 0x35ded: 0x6ca15020, 0x35dee: 0x6ca15220, 0x35def: 0x6ca15420,\n\t0x35df0: 0x6ca15620, 0x35df1: 0x6ca15820, 0x35df2: 0x6ca15a20, 0x35df3: 0x6ca15c20,\n\t0x35df4: 0x6ca15e20, 0x35df5: 0x6ca16020, 0x35df6: 0x6ca16220, 0x35df7: 0x6ca16420,\n\t0x35df8: 0x6ca16620, 0x35df9: 0x6ca16820, 0x35dfa: 0x6ca16a20, 0x35dfb: 0x6ca16c20,\n\t0x35dfc: 0x6ca16e20, 0x35dfd: 0x6ca17020, 0x35dfe: 0x6ca17220, 0x35dff: 0x6ca17420,\n\t// Block 0xd78, offset 0x35e00\n\t0x35e00: 0x6ca17620, 0x35e01: 0x6ca17820, 0x35e02: 0x6ca17a20, 0x35e03: 0x6ca17c20,\n\t0x35e04: 0x6ca17e20, 0x35e05: 0x6ca18020, 0x35e06: 0x6ca18220, 0x35e07: 0x6ca18420,\n\t0x35e08: 0x6ca18620, 0x35e09: 0x6ca18820, 0x35e0a: 0x6ca18a20, 0x35e0b: 0x6ca18c20,\n\t0x35e0c: 0x6ca18e20, 0x35e0d: 0x6ca19020, 0x35e0e: 0x6ca19220, 0x35e0f: 0x6ca19420,\n\t0x35e10: 0x6ca19620, 0x35e11: 0x6ca19820, 0x35e12: 0x6ca19a20, 0x35e13: 0x6ca19c20,\n\t0x35e14: 0x6ca19e20, 0x35e15: 0x6ca1a020, 0x35e16: 0x6ca1a220, 0x35e17: 0x6ca1a420,\n\t0x35e18: 0x6ca1a620, 0x35e19: 0x6ca1a820, 0x35e1a: 0x6ca1aa20, 0x35e1b: 0x6ca1ac20,\n\t0x35e1c: 0x6ca1ae20, 0x35e1d: 0x6ca1b020, 0x35e1e: 0x6ca1b220, 0x35e1f: 0x6ca1b420,\n\t0x35e20: 0x6ca1b620, 0x35e21: 0x6ca1b820, 0x35e22: 0x6cce4820, 0x35e23: 0x6cce4a20,\n\t0x35e24: 0x6cce4c20, 0x35e25: 0x6cce4e20, 0x35e26: 0x6cce5020, 0x35e27: 0x6cce5220,\n\t0x35e28: 0x6cce5420, 0x35e29: 0x6cce5620, 0x35e2a: 0x6cce5820, 0x35e2b: 0x6cce5a20,\n\t0x35e2c: 0x6cce5c20, 0x35e2d: 0x6cce5e20, 0x35e2e: 0x6cce6020, 0x35e2f: 0x6cce6220,\n\t0x35e30: 0x6cce6420, 0x35e31: 0x6cce6620, 0x35e32: 0x6cce6820, 0x35e33: 0x6cce6a20,\n\t0x35e34: 0x6cce6c20, 0x35e35: 0x6cce6e20, 0x35e36: 0x6cce7020, 0x35e37: 0x6cce7220,\n\t0x35e38: 0x6cce7420, 0x35e39: 0x6cce7620, 0x35e3a: 0x6cce7820, 0x35e3b: 0x6cce7a20,\n\t0x35e3c: 0x6cce7c20, 0x35e3d: 0x6cce7e20, 0x35e3e: 0x6cce8020, 0x35e3f: 0x6cce8220,\n\t// Block 0xd79, offset 0x35e40\n\t0x35e40: 0x6cce8420, 0x35e41: 0x6cce8620, 0x35e42: 0x6cce8820, 0x35e43: 0x6cce8a20,\n\t0x35e44: 0x6cce8c20, 0x35e45: 0x6cce8e20, 0x35e46: 0x6cce9020, 0x35e47: 0x6cce9220,\n\t0x35e48: 0x6cce9420, 0x35e49: 0x6cce9620, 0x35e4a: 0x6cce9820, 0x35e4b: 0x6cce9a20,\n\t0x35e4c: 0x6cce9c20, 0x35e4d: 0x6cce9e20, 0x35e4e: 0x6ccea020, 0x35e4f: 0x6ccea220,\n\t0x35e50: 0x6ccea420, 0x35e51: 0x6ccea620, 0x35e52: 0x6ccea820, 0x35e53: 0x6cceaa20,\n\t0x35e54: 0x6cceac20, 0x35e55: 0x6cceae20, 0x35e56: 0x6cceb020, 0x35e57: 0x6cceb220,\n\t0x35e58: 0x6cceb420, 0x35e59: 0x6cceb620, 0x35e5a: 0x6cceb820, 0x35e5b: 0x6cceba20,\n\t0x35e5c: 0x6ccebc20, 0x35e5d: 0x6ccebe20, 0x35e5e: 0x6ccec020, 0x35e5f: 0x6ccec220,\n\t0x35e60: 0x6ccec420, 0x35e61: 0x6ccec620, 0x35e62: 0x6ccec820, 0x35e63: 0x6cceca20,\n\t0x35e64: 0x6ccecc20, 0x35e65: 0x6ccece20, 0x35e66: 0x6cced020, 0x35e67: 0x6cced220,\n\t0x35e68: 0x6cced420, 0x35e69: 0x6cced620, 0x35e6a: 0x6cced820, 0x35e6b: 0x6cceda20,\n\t0x35e6c: 0x6ccedc20, 0x35e6d: 0x6ccede20, 0x35e6e: 0x6ccee020, 0x35e6f: 0x6ccee220,\n\t0x35e70: 0x6ccee420, 0x35e71: 0x6ccee620, 0x35e72: 0x6cfc6820, 0x35e73: 0x6cfc6a20,\n\t0x35e74: 0x6cfc6c20, 0x35e75: 0x6cfc6e20, 0x35e76: 0x6cfc7020, 0x35e77: 0x6cfc7220,\n\t0x35e78: 0x6cfc7420, 0x35e79: 0x6cfc7620, 0x35e7a: 0x6cfc7820, 0x35e7b: 0x6cfc7a20,\n\t0x35e7c: 0x6cfc7c20, 0x35e7d: 0x6cfc7e20, 0x35e7e: 0x6cfc8020, 0x35e7f: 0x6cfc8220,\n\t// Block 0xd7a, offset 0x35e80\n\t0x35e80: 0x6cfc8420, 0x35e81: 0x6cfc8620, 0x35e82: 0x6cfc8820, 0x35e83: 0x6cfc8a20,\n\t0x35e84: 0x6cfc8c20, 0x35e85: 0x6cfc8e20, 0x35e86: 0x6cfc9020, 0x35e87: 0x6cfc9220,\n\t0x35e88: 0x6cfc9420, 0x35e89: 0x6cfc9620, 0x35e8a: 0x6cfc9820, 0x35e8b: 0x6cfc9a20,\n\t0x35e8c: 0x6cfc9c20, 0x35e8d: 0x6cfc9e20, 0x35e8e: 0x6cfca020, 0x35e8f: 0x6cfca220,\n\t0x35e90: 0x6cfca420, 0x35e91: 0x6cfca620, 0x35e92: 0x6cfca820, 0x35e93: 0x6cfcaa20,\n\t0x35e94: 0x6cfcac20, 0x35e95: 0x6cfcae20, 0x35e96: 0x6cfcb020, 0x35e97: 0x6cfcb220,\n\t0x35e98: 0x6cfcb420, 0x35e99: 0x6cfcb620, 0x35e9a: 0x6cfcb820, 0x35e9b: 0x6cfcba20,\n\t0x35e9c: 0x6cfcbc20, 0x35e9d: 0x6cfcbe20, 0x35e9e: 0x6cfcc020, 0x35e9f: 0x6cfcc220,\n\t0x35ea0: 0x6cfcc420, 0x35ea1: 0x6cfcc620, 0x35ea2: 0x6cfcc820, 0x35ea3: 0x6cfcca20,\n\t0x35ea4: 0x6cfccc20, 0x35ea5: 0x6cfcce20, 0x35ea6: 0x6cfcd020, 0x35ea7: 0x6cfcd220,\n\t0x35ea8: 0x6cfcd420, 0x35ea9: 0x6cfcd620, 0x35eaa: 0x6cfcd820, 0x35eab: 0x6cfcda20,\n\t0x35eac: 0x6cfcdc20, 0x35ead: 0x6cfcde20, 0x35eae: 0x6cfce020, 0x35eaf: 0x6cfce220,\n\t0x35eb0: 0x6cfce420, 0x35eb1: 0x6cfce620, 0x35eb2: 0x6cfce820, 0x35eb3: 0x6cb74620,\n\t0x35eb4: 0x6cfcea20, 0x35eb5: 0x6cfcec20, 0x35eb6: 0x6cfcee20, 0x35eb7: 0x6cfcf020,\n\t0x35eb8: 0x6cfcf220, 0x35eb9: 0x6cfcf420, 0x35eba: 0x6cfcf620, 0x35ebb: 0x6cfcf820,\n\t0x35ebc: 0x6cfcfa20, 0x35ebd: 0x6cfcfc20, 0x35ebe: 0x6cfcfe20, 0x35ebf: 0x6cfd0020,\n\t// Block 0xd7b, offset 0x35ec0\n\t0x35ec0: 0x6cfd0220, 0x35ec1: 0x6cfd0420, 0x35ec2: 0x6cfd0620, 0x35ec3: 0x6cfd0820,\n\t0x35ec4: 0x6cfd0a20, 0x35ec5: 0x6cfd0c20, 0x35ec6: 0x6cfd0e20, 0x35ec7: 0x6d2b2c20,\n\t0x35ec8: 0x6d2b2e20, 0x35ec9: 0x6d2b3020, 0x35eca: 0x6d2b3220, 0x35ecb: 0x6d2b3420,\n\t0x35ecc: 0x6d2b3620, 0x35ecd: 0x6d2b3820, 0x35ece: 0x6d2b3a20, 0x35ecf: 0x6d2b3c20,\n\t0x35ed0: 0x6d2b3e20, 0x35ed1: 0x6d2b4020, 0x35ed2: 0x6d2b4220, 0x35ed3: 0x6d2b4420,\n\t0x35ed4: 0x6d2b4620, 0x35ed5: 0x6d2b4820, 0x35ed6: 0x6d2b4a20, 0x35ed7: 0x6d2b4c20,\n\t0x35ed8: 0x6d2b4e20, 0x35ed9: 0x6d2b5020, 0x35eda: 0x6d2b5220, 0x35edb: 0x6d2b5420,\n\t0x35edc: 0x6d2b5620, 0x35edd: 0x6d2b5820, 0x35ede: 0x6d2b5a20, 0x35edf: 0x6d2b5c20,\n\t0x35ee0: 0x6d2b5e20, 0x35ee1: 0x6d2b6020, 0x35ee2: 0x6d2b6220, 0x35ee3: 0x6d2b6420,\n\t0x35ee4: 0x6d2b6620, 0x35ee5: 0x6d2b6820, 0x35ee6: 0x6d2b6a20, 0x35ee7: 0x6d2b6c20,\n\t0x35ee8: 0x6d2b6e20, 0x35ee9: 0x6d2b7020, 0x35eea: 0x6d2b7220, 0x35eeb: 0x6d2b7420,\n\t0x35eec: 0x6d2b7620, 0x35eed: 0x6d2b7820, 0x35eee: 0x6d2b7a20, 0x35eef: 0x6d2b7c20,\n\t0x35ef0: 0x6d2b7e20, 0x35ef1: 0x6d2b8020, 0x35ef2: 0x6d585a20, 0x35ef3: 0x6d2b8220,\n\t0x35ef4: 0x6d2b8420, 0x35ef5: 0x6d2b8620, 0x35ef6: 0x6d2b8820, 0x35ef7: 0x6d2b8a20,\n\t0x35ef8: 0x6d2b8c20, 0x35ef9: 0x6d2b8e20, 0x35efa: 0x6d2b9020, 0x35efb: 0x6d2b9220,\n\t0x35efc: 0x6d2b9420, 0x35efd: 0x6d2b9620, 0x35efe: 0x6d2b9820, 0x35eff: 0x6d2b9a20,\n\t// Block 0xd7c, offset 0x35f00\n\t0x35f00: 0x6d2b9c20, 0x35f01: 0x6d2b9e20, 0x35f02: 0x6d2ba020, 0x35f03: 0x6d2ba220,\n\t0x35f04: 0x6d2ba420, 0x35f05: 0x6d2ba620, 0x35f06: 0x6d2ba820, 0x35f07: 0x6d2baa20,\n\t0x35f08: 0x6d2bac20, 0x35f09: 0x6d2bae20, 0x35f0a: 0x6d2bb020, 0x35f0b: 0x6d2bb220,\n\t0x35f0c: 0x6d2bb420, 0x35f0d: 0x6d2bb620, 0x35f0e: 0x6d2bb820, 0x35f0f: 0x6cfd1020,\n\t0x35f10: 0x6d585c20, 0x35f11: 0x6d585e20, 0x35f12: 0x6d586020, 0x35f13: 0x6d586220,\n\t0x35f14: 0x6d586420, 0x35f15: 0x6d586620, 0x35f16: 0x6d586820, 0x35f17: 0x6d586a20,\n\t0x35f18: 0x6d586c20, 0x35f19: 0x6d586e20, 0x35f1a: 0x6d587020, 0x35f1b: 0x6d587220,\n\t0x35f1c: 0x6d587420, 0x35f1d: 0x6d587620, 0x35f1e: 0x6d587820, 0x35f1f: 0x6d587a20,\n\t0x35f20: 0x6d587c20, 0x35f21: 0x6d587e20, 0x35f22: 0x6d588020, 0x35f23: 0x6d588220,\n\t0x35f24: 0x6d588420, 0x35f25: 0x6d588620, 0x35f26: 0x6d588820, 0x35f27: 0x6d588a20,\n\t0x35f28: 0x6d588c20, 0x35f29: 0x6d836620, 0x35f2a: 0x6d588e20, 0x35f2b: 0x6d589020,\n\t0x35f2c: 0x6d589220, 0x35f2d: 0x6d589420, 0x35f2e: 0x6d589620, 0x35f2f: 0x6d589820,\n\t0x35f30: 0x6d589a20, 0x35f31: 0x6d589c20, 0x35f32: 0x6d589e20, 0x35f33: 0x6d58a020,\n\t0x35f34: 0x6d58a220, 0x35f35: 0x6d58a420, 0x35f36: 0x6d58a620, 0x35f37: 0x6d58a820,\n\t0x35f38: 0x6d58aa20, 0x35f39: 0x6d58ac20, 0x35f3a: 0x6d58ae20, 0x35f3b: 0x6d58b020,\n\t0x35f3c: 0x6d58b220, 0x35f3d: 0x6d58b420, 0x35f3e: 0x6d58b620, 0x35f3f: 0x6d58b820,\n\t// Block 0xd7d, offset 0x35f40\n\t0x35f40: 0x6d385220, 0x35f41: 0x6d58ba20, 0x35f42: 0x6d705e20, 0x35f43: 0x6d58bc20,\n\t0x35f44: 0x6d58be20, 0x35f45: 0x6d58c020, 0x35f46: 0x6d58c220, 0x35f47: 0x6d58c420,\n\t0x35f48: 0x6d58c620, 0x35f49: 0x6d58c820, 0x35f4a: 0x6d58ca20, 0x35f4b: 0x6d58cc20,\n\t0x35f4c: 0x6d58ce20, 0x35f4d: 0x6d58d020, 0x35f4e: 0x6d58d220, 0x35f4f: 0x6d58d420,\n\t0x35f50: 0x6d58d620, 0x35f51: 0x6d58d820, 0x35f52: 0x6d58da20, 0x35f53: 0x6d58dc20,\n\t0x35f54: 0x6d58de20, 0x35f55: 0x6d58e020, 0x35f56: 0x6d58e220, 0x35f57: 0x6d58e420,\n\t0x35f58: 0x6d58e620, 0x35f59: 0x6d58e820, 0x35f5a: 0x6d58ea20, 0x35f5b: 0x6d58ec20,\n\t0x35f5c: 0x6d58ee20, 0x35f5d: 0x6d836820, 0x35f5e: 0x6d836a20, 0x35f5f: 0x6d836c20,\n\t0x35f60: 0x6d836e20, 0x35f61: 0x6d837020, 0x35f62: 0x6d837220, 0x35f63: 0x6d837420,\n\t0x35f64: 0x6d837620, 0x35f65: 0x6d837820, 0x35f66: 0x6d837a20, 0x35f67: 0x6d837c20,\n\t0x35f68: 0x6d837e20, 0x35f69: 0x6d838020, 0x35f6a: 0x6d838220, 0x35f6b: 0x6d838420,\n\t0x35f6c: 0x6d838620, 0x35f6d: 0x6d838820, 0x35f6e: 0x6d838a20, 0x35f6f: 0x6d838c20,\n\t0x35f70: 0x6d838e20, 0x35f71: 0x6d839020, 0x35f72: 0x6d839220, 0x35f73: 0x6d839420,\n\t0x35f74: 0x6d839620, 0x35f75: 0x6d839820, 0x35f76: 0x6d839a20, 0x35f77: 0x6d839c20,\n\t0x35f78: 0x6d839e20, 0x35f79: 0x6d83a020, 0x35f7a: 0x6d83a220, 0x35f7b: 0x6d83a420,\n\t0x35f7c: 0x6d83a620, 0x35f7d: 0x6d83a820, 0x35f7e: 0x6d83aa20, 0x35f7f: 0x6d83ac20,\n\t// Block 0xd7e, offset 0x35f80\n\t0x35f80: 0x6d83ae20, 0x35f81: 0x6d83b020, 0x35f82: 0x6d83b220, 0x35f83: 0x6d83b420,\n\t0x35f84: 0x6d83b620, 0x35f85: 0x6d83b820, 0x35f86: 0x6d83ba20, 0x35f87: 0x6d83bc20,\n\t0x35f88: 0x6d83be20, 0x35f89: 0x6d83c020, 0x35f8a: 0x6d83c220, 0x35f8b: 0x6d83c420,\n\t0x35f8c: 0x6d83c620, 0x35f8d: 0x6d83c820, 0x35f8e: 0x6d83ca20, 0x35f8f: 0x6d83cc20,\n\t0x35f90: 0x6d83ce20, 0x35f91: 0x6d83d020, 0x35f92: 0x6d83d220, 0x35f93: 0x6d83d420,\n\t0x35f94: 0x6d83d620, 0x35f95: 0x6d83d820, 0x35f96: 0x6d83da20, 0x35f97: 0x6d83dc20,\n\t0x35f98: 0x6d83de20, 0x35f99: 0x6d83e020, 0x35f9a: 0x6d83e220, 0x35f9b: 0x6d83e420,\n\t0x35f9c: 0x6d83e620, 0x35f9d: 0x6d83e820, 0x35f9e: 0x6d83ea20, 0x35f9f: 0x6d83ec20,\n\t0x35fa0: 0x6d793420, 0x35fa1: 0x6d83ee20, 0x35fa2: 0x6d83f020, 0x35fa3: 0x6d83f220,\n\t0x35fa4: 0x6d83f420, 0x35fa5: 0x6d83f620, 0x35fa6: 0x6d83f820, 0x35fa7: 0x6d83fa20,\n\t0x35fa8: 0x6d83fc20, 0x35fa9: 0x6d83fe20, 0x35faa: 0x6d840020, 0x35fab: 0x6d840220,\n\t0x35fac: 0x6d840420, 0x35fad: 0x6d840620, 0x35fae: 0x6d840820, 0x35faf: 0x6d840a20,\n\t0x35fb0: 0x6d840c20, 0x35fb1: 0x6d840e20, 0x35fb2: 0x6d841020, 0x35fb3: 0x6d841220,\n\t0x35fb4: 0x6d841420, 0x35fb5: 0x6da8ae20, 0x35fb6: 0x6da8b020, 0x35fb7: 0x6da8b220,\n\t0x35fb8: 0x6da8b420, 0x35fb9: 0x6da8b620, 0x35fba: 0x6da8b820, 0x35fbb: 0x6da8ba20,\n\t0x35fbc: 0x6da8bc20, 0x35fbd: 0x6da8be20, 0x35fbe: 0x6da8c020, 0x35fbf: 0x6da8c220,\n\t// Block 0xd7f, offset 0x35fc0\n\t0x35fc0: 0x6da8c420, 0x35fc1: 0x6da8c620, 0x35fc2: 0x6da8c820, 0x35fc3: 0x6da8ca20,\n\t0x35fc4: 0x6da8cc20, 0x35fc5: 0x6da8ce20, 0x35fc6: 0x6da8d020, 0x35fc7: 0x6da8d220,\n\t0x35fc8: 0x6da8d420, 0x35fc9: 0x6da8d620, 0x35fca: 0x6da8d820, 0x35fcb: 0x6da8da20,\n\t0x35fcc: 0x6da8dc20, 0x35fcd: 0x6da8de20, 0x35fce: 0x6da8e020, 0x35fcf: 0x6da8e220,\n\t0x35fd0: 0x6da8e420, 0x35fd1: 0x6da8e620, 0x35fd2: 0x6da8e820, 0x35fd3: 0x6da8ea20,\n\t0x35fd4: 0x6da8ec20, 0x35fd5: 0x6da8ee20, 0x35fd6: 0x6da8f020, 0x35fd7: 0x6da8f220,\n\t0x35fd8: 0x6da8f420, 0x35fd9: 0x6da8f620, 0x35fda: 0x6da8f820, 0x35fdb: 0x6da8fa20,\n\t0x35fdc: 0x6da8fc20, 0x35fdd: 0x6da8fe20, 0x35fde: 0x6da90020, 0x35fdf: 0x6da90220,\n\t0x35fe0: 0x6da90420, 0x35fe1: 0x6da90620, 0x35fe2: 0x6da90820, 0x35fe3: 0x6da90a20,\n\t0x35fe4: 0x6dc9d420, 0x35fe5: 0x6dc9d620, 0x35fe6: 0x6dc9d820, 0x35fe7: 0x6dc9da20,\n\t0x35fe8: 0x6dc9dc20, 0x35fe9: 0x6dc9de20, 0x35fea: 0x6dc9e020, 0x35feb: 0x6dc9e220,\n\t0x35fec: 0x6dc9e420, 0x35fed: 0x6dc9e620, 0x35fee: 0x6dc9e820, 0x35fef: 0x6dc9ea20,\n\t0x35ff0: 0x6dc9ec20, 0x35ff1: 0x6dc9ee20, 0x35ff2: 0x6dc9f020, 0x35ff3: 0x6dc9f220,\n\t0x35ff4: 0x6dc9f420, 0x35ff5: 0x6dc9f620, 0x35ff6: 0x6dc9f820, 0x35ff7: 0x6dc9fa20,\n\t0x35ff8: 0x6dc9fc20, 0x35ff9: 0x6dc9fe20, 0x35ffa: 0x6dca0020, 0x35ffb: 0x6dca0220,\n\t0x35ffc: 0x6dca0420, 0x35ffd: 0x6dca0620, 0x35ffe: 0x6dca0820, 0x35fff: 0x6dca0a20,\n\t// Block 0xd80, offset 0x36000\n\t0x36000: 0x6dca0c20, 0x36001: 0x6dca0e20, 0x36002: 0x6dca1020, 0x36003: 0x6dd07420,\n\t0x36004: 0x6dca1220, 0x36005: 0x6dca1420, 0x36006: 0x6dca1620, 0x36007: 0x6dca1820,\n\t0x36008: 0x6dca1a20, 0x36009: 0x6dca1c20, 0x3600a: 0x6dca1e20, 0x3600b: 0x6dca2020,\n\t0x3600c: 0x6dca2220, 0x3600d: 0x6dca2420, 0x3600e: 0x6dca2620, 0x3600f: 0x6dca2820,\n\t0x36010: 0x6dca2a20, 0x36011: 0x6dca2c20, 0x36012: 0x6de58e20, 0x36013: 0x6de59020,\n\t0x36014: 0x6de59220, 0x36015: 0x6de59420, 0x36016: 0x6de59620, 0x36017: 0x6de59820,\n\t0x36018: 0x6de59a20, 0x36019: 0x6de59c20, 0x3601a: 0x6de59e20, 0x3601b: 0x6de5a020,\n\t0x3601c: 0x6de5a220, 0x3601d: 0x6de5a420, 0x3601e: 0x6de5a620, 0x3601f: 0x6de5a820,\n\t0x36020: 0x6de5aa20, 0x36021: 0x6de5ac20, 0x36022: 0x6de5ae20, 0x36023: 0x6de5b020,\n\t0x36024: 0x6de5b220, 0x36025: 0x6de5b420, 0x36026: 0x6de5b620, 0x36027: 0x6de5b820,\n\t0x36028: 0x6de5ba20, 0x36029: 0x6de5bc20, 0x3602a: 0x6de5be20, 0x3602b: 0x6de5c020,\n\t0x3602c: 0x6de5c220, 0x3602d: 0x6de5c420, 0x3602e: 0x6de5c620, 0x3602f: 0x6de5c820,\n\t0x36030: 0x6de5ca20, 0x36031: 0x6de5cc20, 0x36032: 0x6de5ce20, 0x36033: 0x6dfc6620,\n\t0x36034: 0x6dfc6820, 0x36035: 0x6dfc6a20, 0x36036: 0x6dfc6c20, 0x36037: 0x6dfc6e20,\n\t0x36038: 0x6dfc7020, 0x36039: 0x6dfc7220, 0x3603a: 0x6dfc7420, 0x3603b: 0x6dfc7620,\n\t0x3603c: 0x6dfc7820, 0x3603d: 0x6dfc7a20, 0x3603e: 0x6dfc7c20, 0x3603f: 0x6dfc7e20,\n\t// Block 0xd81, offset 0x36040\n\t0x36040: 0x6dfc8020, 0x36041: 0x6dfc8220, 0x36042: 0x6dfc8420, 0x36043: 0x6dfc8620,\n\t0x36044: 0x6dfc8820, 0x36045: 0x6dfc8a20, 0x36046: 0x6dfc8c20, 0x36047: 0x6dfc8e20,\n\t0x36048: 0x6dfc9020, 0x36049: 0x6dfc9220, 0x3604a: 0x6dfc9420, 0x3604b: 0x6dfc9620,\n\t0x3604c: 0x6dfc9820, 0x3604d: 0x6dfc9a20, 0x3604e: 0x6dfc9c20, 0x3604f: 0x6dfc9e20,\n\t0x36050: 0x6dfca020, 0x36051: 0x6dfca220, 0x36052: 0x6dfca420, 0x36053: 0x6dfca620,\n\t0x36054: 0x6dfca820, 0x36055: 0x6dfcaa20, 0x36056: 0x6dfcac20, 0x36057: 0x6dfcae20,\n\t0x36058: 0x6dfcb020, 0x36059: 0x6dfcb220, 0x3605a: 0x6dfcb420, 0x3605b: 0x6dfcb620,\n\t0x3605c: 0x6dfcb820, 0x3605d: 0x6dfcba20, 0x3605e: 0x6dfcbc20, 0x3605f: 0x6dfcbe20,\n\t0x36060: 0x6dfcc020, 0x36061: 0x6e0f8420, 0x36062: 0x6e0f8620, 0x36063: 0x6e0f8820,\n\t0x36064: 0x6e0f8a20, 0x36065: 0x6e0f8c20, 0x36066: 0x6e0f8e20, 0x36067: 0x6e0f9020,\n\t0x36068: 0x6dfcc220, 0x36069: 0x6e1e7820, 0x3606a: 0x6e0f9220, 0x3606b: 0x6e0f9420,\n\t0x3606c: 0x6e0f9620, 0x3606d: 0x6e0f9820, 0x3606e: 0x6e0f9a20, 0x3606f: 0x6e0f9c20,\n\t0x36070: 0x6e0f9e20, 0x36071: 0x6e0fa020, 0x36072: 0x6e0fa220, 0x36073: 0x6e0fa420,\n\t0x36074: 0x6e0fa620, 0x36075: 0x6e0fa820, 0x36076: 0x6e0faa20, 0x36077: 0x6e0fac20,\n\t0x36078: 0x6e0fae20, 0x36079: 0x6e0fb020, 0x3607a: 0x6e1e7a20, 0x3607b: 0x6e1e7c20,\n\t0x3607c: 0x6e29de20, 0x3607d: 0x6e1e7e20, 0x3607e: 0x6e1e8020, 0x3607f: 0x6e1e8220,\n\t// Block 0xd82, offset 0x36080\n\t0x36080: 0x6e1e8420, 0x36081: 0x6e1e8620, 0x36082: 0x6e1e8820, 0x36083: 0x6e1e8a20,\n\t0x36084: 0x6e1e8c20, 0x36085: 0x6e1e8e20, 0x36086: 0x6e1e9020, 0x36087: 0x6e1e9220,\n\t0x36088: 0x6e29e020, 0x36089: 0x6e29e220, 0x3608a: 0x6e29e420, 0x3608b: 0x6e29e620,\n\t0x3608c: 0x6e29e820, 0x3608d: 0x6e29ea20, 0x3608e: 0x6e29ec20, 0x3608f: 0x6e2b4a20,\n\t0x36090: 0x6e29ee20, 0x36091: 0x6e29f020, 0x36092: 0x6e29f220, 0x36093: 0x6e29f420,\n\t0x36094: 0x6e29f620, 0x36095: 0x6e29f820, 0x36096: 0x6e29fa20, 0x36097: 0x6e32c220,\n\t0x36098: 0x6e32c420, 0x36099: 0x6e32c620, 0x3609a: 0x6e32c820, 0x3609b: 0x6e32ca20,\n\t0x3609c: 0x6e38f820, 0x3609d: 0x6e38fa20, 0x3609e: 0x6e38fc20, 0x3609f: 0x6e33dc20,\n\t0x360a0: 0x6e38fe20, 0x360a1: 0x6e390020, 0x360a2: 0x6e390220, 0x360a3: 0x6e390420,\n\t0x360a4: 0x6e3d6820, 0x360a5: 0x6e3d6a20, 0x360a6: 0x6e406c20, 0x360a7: 0x6e406e20,\n\t0x360a8: 0x6e407020, 0x360a9: 0x6e407220, 0x360aa: 0x6e42b820, 0x360ab: 0x6e443620,\n\t0x360ac: 0x6e42ba20, 0x360ad: 0x6e452420, 0x360ae: 0x6e468420, 0x360af: 0x6c04da20,\n\t0x360b0: 0x6c04dc20, 0x360b1: 0x6c09d020, 0x360b2: 0x6c23d020, 0x360b3: 0x6c23d220,\n\t0x360b4: 0x6c23d420, 0x360b5: 0x6c23d620, 0x360b6: 0x6c3a2c20, 0x360b7: 0x6c3a2e20,\n\t0x360b8: 0x6c3a3020, 0x360b9: 0x6c3a3220, 0x360ba: 0x6c3a3420, 0x360bb: 0x6c3a3620,\n\t0x360bc: 0x6c3a3820, 0x360bd: 0x6c55f420, 0x360be: 0x6c55f620, 0x360bf: 0x6c55f820,\n\t// Block 0xd83, offset 0x360c0\n\t0x360c0: 0x6c55fa20, 0x360c1: 0x6c55fc20, 0x360c2: 0x6c55fe20, 0x360c3: 0x6c560020,\n\t0x360c4: 0x6c560220, 0x360c5: 0x6c560420, 0x360c6: 0x6c560620, 0x360c7: 0x6c560820,\n\t0x360c8: 0x6c560a20, 0x360c9: 0x6c560c20, 0x360ca: 0x6c560e20, 0x360cb: 0x6c561020,\n\t0x360cc: 0x6c78cc20, 0x360cd: 0x6c78ce20, 0x360ce: 0x6c78d020, 0x360cf: 0x6c78d220,\n\t0x360d0: 0x6ca1d020, 0x360d1: 0x6ca1d220, 0x360d2: 0x6ca1d420, 0x360d3: 0x6ca1d620,\n\t0x360d4: 0x6ccf0c20, 0x360d5: 0x6ccf0e20, 0x360d6: 0x6ccf1020, 0x360d7: 0x6cbc6220,\n\t0x360d8: 0x6ccf1220, 0x360d9: 0x6ccf1420, 0x360da: 0x6ccf1620, 0x360db: 0x6ccf1820,\n\t0x360dc: 0x6cfd2e20, 0x360dd: 0x6cfd3020, 0x360de: 0x6cfd3220, 0x360df: 0x6cfd3420,\n\t0x360e0: 0x6cfd3620, 0x360e1: 0x6cfd3820, 0x360e2: 0x6d2bde20, 0x360e3: 0x6d2be020,\n\t0x360e4: 0x6d2be220, 0x360e5: 0x6d2be420, 0x360e6: 0x6d2be620, 0x360e7: 0x6d590620,\n\t0x360e8: 0x6d590820, 0x360e9: 0x6d590a20, 0x360ea: 0x6d590c20, 0x360eb: 0x6d590e20,\n\t0x360ec: 0x6d591020, 0x360ed: 0x6d591220, 0x360ee: 0x6d842a20, 0x360ef: 0x6d842c20,\n\t0x360f0: 0x6d842e20, 0x360f1: 0x6d843020, 0x360f2: 0x6da91c20, 0x360f3: 0x6da91e20,\n\t0x360f4: 0x6da92020, 0x360f5: 0x6da92220, 0x360f6: 0x6da92420, 0x360f7: 0x6da92620,\n\t0x360f8: 0x6da92820, 0x360f9: 0x6dca3a20, 0x360fa: 0x6de5d420, 0x360fb: 0x6dca3c20,\n\t0x360fc: 0x6da92a20, 0x360fd: 0x6dca3e20, 0x360fe: 0x6dca4020, 0x360ff: 0x6de5d620,\n\t// Block 0xd84, offset 0x36100\n\t0x36100: 0x6de5d820, 0x36101: 0x6de9a820, 0x36102: 0x6dfcca20, 0x36103: 0x6dfccc20,\n\t0x36104: 0x6dfcce20, 0x36105: 0x6dfcd020, 0x36106: 0x6dfcd220, 0x36107: 0x6e0fb420,\n\t0x36108: 0x6e29fe20, 0x36109: 0x6e2a0020, 0x3610a: 0x6e2a0220, 0x3610b: 0x6e32ce20,\n\t0x3610c: 0x6e390a20, 0x3610d: 0x6e390c20, 0x3610e: 0x6c23da20, 0x3610f: 0x6c23dc20,\n\t0x36110: 0x6c3a3c20, 0x36111: 0x6c3a3e20, 0x36112: 0x6c561620, 0x36113: 0x6c78d820,\n\t0x36114: 0x6c78da20, 0x36115: 0x6ca1dc20, 0x36116: 0x6ccf2220, 0x36117: 0x6ccf2420,\n\t0x36118: 0x6cfd4220, 0x36119: 0x6d2be820, 0x3611a: 0x6d2bea20, 0x3611b: 0x6d843220,\n\t0x3611c: 0x6c09d220, 0x3611d: 0x6c3a4220, 0x3611e: 0x6c561a20, 0x3611f: 0x6c561c20,\n\t0x36120: 0x6c78de20, 0x36121: 0x6c78e020, 0x36122: 0x6ca1e220, 0x36123: 0x6ccf2620,\n\t0x36124: 0x6cfd4420, 0x36125: 0x6cfd4620, 0x36126: 0x6d591820, 0x36127: 0x6d591a20,\n\t0x36128: 0x6d591c20, 0x36129: 0x6d843420, 0x3612a: 0x6c04e620, 0x3612b: 0x6c09d420,\n\t0x3612c: 0x6c09d620, 0x3612d: 0x6c137c20, 0x3612e: 0x6c23de20, 0x3612f: 0x6c3a4820,\n\t0x36130: 0x6c3a4a20, 0x36131: 0x6c3a4c20, 0x36132: 0x6c562220, 0x36133: 0x6c562420,\n\t0x36134: 0x6c562620, 0x36135: 0x6c562820, 0x36136: 0x6c78e420, 0x36137: 0x6c78e620,\n\t0x36138: 0x6c78e820, 0x36139: 0x6c78ea20, 0x3613a: 0x6c78ec20, 0x3613b: 0x6ca1e420,\n\t0x3613c: 0x6ca1e620, 0x3613d: 0x6ca1e820, 0x3613e: 0x6ca1ea20, 0x3613f: 0x6ca1ec20,\n\t// Block 0xd85, offset 0x36140\n\t0x36140: 0x6ca1ee20, 0x36141: 0x6ca1f020, 0x36142: 0x6ca1f220, 0x36143: 0x6ca1f420,\n\t0x36144: 0x6ccf2a20, 0x36145: 0x6ccf2c20, 0x36146: 0x6ccf2e20, 0x36147: 0x6ccf3020,\n\t0x36148: 0x6ccf3220, 0x36149: 0x6ccf3420, 0x3614a: 0x6ccf3620, 0x3614b: 0x6ccf3820,\n\t0x3614c: 0x6cfd4a20, 0x3614d: 0x6cfd4c20, 0x3614e: 0x6cfd4e20, 0x3614f: 0x6d2bf220,\n\t0x36150: 0x6d2bf420, 0x36151: 0x6d2bf620, 0x36152: 0x6d2bf820, 0x36153: 0x6d592020,\n\t0x36154: 0x6d592220, 0x36155: 0x6d592420, 0x36156: 0x6d843620, 0x36157: 0x6d843820,\n\t0x36158: 0x6d843a20, 0x36159: 0x6d843c20, 0x3615a: 0x6d843e20, 0x3615b: 0x6d844020,\n\t0x3615c: 0x6da93420, 0x3615d: 0x6da93620, 0x3615e: 0x6da93820, 0x3615f: 0x6da93a20,\n\t0x36160: 0x6de5de20, 0x36161: 0x6de5e020, 0x36162: 0x6dfcd420, 0x36163: 0x6e1e9820,\n\t0x36164: 0x6e2a0420, 0x36165: 0x6e407620, 0x36166: 0x6e42bc20, 0x36167: 0x6e42be20,\n\t0x36168: 0x6c09d820, 0x36169: 0x6c23e020, 0x3616a: 0x6c23e220, 0x3616b: 0x6c23e420,\n\t0x3616c: 0x6c3a5420, 0x3616d: 0x6c3a5620, 0x3616e: 0x6c3a5820, 0x3616f: 0x6c3a5a20,\n\t0x36170: 0x6c3a5c20, 0x36171: 0x6c562e20, 0x36172: 0x6c563020, 0x36173: 0x6c563220,\n\t0x36174: 0x6c563420, 0x36175: 0x6c563620, 0x36176: 0x6c563820, 0x36177: 0x6c563a20,\n\t0x36178: 0x6c563c20, 0x36179: 0x6c563e20, 0x3617a: 0x6c78f420, 0x3617b: 0x6c78f620,\n\t0x3617c: 0x6c78f820, 0x3617d: 0x6c78fa20, 0x3617e: 0x6c78fc20, 0x3617f: 0x6c78fe20,\n\t// Block 0xd86, offset 0x36180\n\t0x36180: 0x6ca1f820, 0x36181: 0x6ca1fa20, 0x36182: 0x6ca1fc20, 0x36183: 0x6ca1fe20,\n\t0x36184: 0x6ca20020, 0x36185: 0x6ca20220, 0x36186: 0x6ca20420, 0x36187: 0x6ccf4220,\n\t0x36188: 0x6ccf4420, 0x36189: 0x6ccf4620, 0x3618a: 0x6ccf4820, 0x3618b: 0x6ccf4a20,\n\t0x3618c: 0x6ccf4c20, 0x3618d: 0x6ccf4e20, 0x3618e: 0x6ccf5020, 0x3618f: 0x6ccf5220,\n\t0x36190: 0x6ccf5420, 0x36191: 0x6ccf5620, 0x36192: 0x6ccf5820, 0x36193: 0x6ccf5a20,\n\t0x36194: 0x6ccf5c20, 0x36195: 0x6ccf5e20, 0x36196: 0x6ccf6020, 0x36197: 0x6ccf6220,\n\t0x36198: 0x6cfd5a20, 0x36199: 0x6cfd5c20, 0x3619a: 0x6cfd5e20, 0x3619b: 0x6cfd6020,\n\t0x3619c: 0x6cfd6220, 0x3619d: 0x6cfd6420, 0x3619e: 0x6cfd6620, 0x3619f: 0x6cfd6820,\n\t0x361a0: 0x6cfd6a20, 0x361a1: 0x6cfd6c20, 0x361a2: 0x6d2c0020, 0x361a3: 0x6d2c0220,\n\t0x361a4: 0x6d2c0420, 0x361a5: 0x6d2c0620, 0x361a6: 0x6d2c0820, 0x361a7: 0x6d2c0a20,\n\t0x361a8: 0x6d592e20, 0x361a9: 0x6d593020, 0x361aa: 0x6d593220, 0x361ab: 0x6d593420,\n\t0x361ac: 0x6d593620, 0x361ad: 0x6d593820, 0x361ae: 0x6d593a20, 0x361af: 0x6d593c20,\n\t0x361b0: 0x6d593e20, 0x361b1: 0x6d594020, 0x361b2: 0x6d594220, 0x361b3: 0x6d844220,\n\t0x361b4: 0x6d844420, 0x361b5: 0x6d844620, 0x361b6: 0x6d844820, 0x361b7: 0x6d844a20,\n\t0x361b8: 0x6d844c20, 0x361b9: 0x6d844e20, 0x361ba: 0x6da93e20, 0x361bb: 0x6da94020,\n\t0x361bc: 0x6da94220, 0x361bd: 0x6da94420, 0x361be: 0x6da94620, 0x361bf: 0x6dca4620,\n\t// Block 0xd87, offset 0x361c0\n\t0x361c0: 0x6dca4820, 0x361c1: 0x6dca4a20, 0x361c2: 0x6dca4c20, 0x361c3: 0x6dfcd620,\n\t0x361c4: 0x6e0fb820, 0x361c5: 0x6c23e620, 0x361c6: 0x6c3a5e20, 0x361c7: 0x6c564020,\n\t0x361c8: 0x6c790420, 0x361c9: 0x6c790620, 0x361ca: 0x6ca20a20, 0x361cb: 0x6ca20c20,\n\t0x361cc: 0x6ccf6820, 0x361cd: 0x6ccf6a20, 0x361ce: 0x6ccf6c20, 0x361cf: 0x6ccf6e20,\n\t0x361d0: 0x6cfd6e20, 0x361d1: 0x6d2c0c20, 0x361d2: 0x6d594420, 0x361d3: 0x6dca4e20,\n\t0x361d4: 0x6c09da20, 0x361d5: 0x6c138620, 0x361d6: 0x6c138820, 0x361d7: 0x6c138a20,\n\t0x361d8: 0x6c23f620, 0x361d9: 0x6c23f820, 0x361da: 0x6c23fa20, 0x361db: 0x6c23fc20,\n\t0x361dc: 0x6c3a7c20, 0x361dd: 0x6c3a7e20, 0x361de: 0x6c3a8020, 0x361df: 0x6c3a8220,\n\t0x361e0: 0x6c3a8420, 0x361e1: 0x6c3a8620, 0x361e2: 0x6c3a8820, 0x361e3: 0x6c3a8a20,\n\t0x361e4: 0x6c3a8c20, 0x361e5: 0x6c3a8e20, 0x361e6: 0x6c3a9020, 0x361e7: 0x6c3a9220,\n\t0x361e8: 0x6c3a9420, 0x361e9: 0x6c3a9620, 0x361ea: 0x6c3a9820, 0x361eb: 0x6c3a9a20,\n\t0x361ec: 0x6c3a9c20, 0x361ed: 0x6c3a9e20, 0x361ee: 0x6c3aa020, 0x361ef: 0x6c3aa220,\n\t0x361f0: 0x6c3aa420, 0x361f1: 0x6c3aa620, 0x361f2: 0x6c3aa820, 0x361f3: 0x6c3aaa20,\n\t0x361f4: 0x6c3aac20, 0x361f5: 0x6c3aae20, 0x361f6: 0x6c3ab020, 0x361f7: 0x6c3ab220,\n\t0x361f8: 0x6c565e20, 0x361f9: 0x6c566020, 0x361fa: 0x6c566220, 0x361fb: 0x6c566420,\n\t0x361fc: 0x6c566620, 0x361fd: 0x6c566820, 0x361fe: 0x6c566a20, 0x361ff: 0x6c566c20,\n\t// Block 0xd88, offset 0x36200\n\t0x36200: 0x6c566e20, 0x36201: 0x6c567020, 0x36202: 0x6c567220, 0x36203: 0x6c567420,\n\t0x36204: 0x6c567620, 0x36205: 0x6c567820, 0x36206: 0x6c567a20, 0x36207: 0x6c567c20,\n\t0x36208: 0x6c567e20, 0x36209: 0x6c568020, 0x3620a: 0x6c568220, 0x3620b: 0x6c568420,\n\t0x3620c: 0x6c568620, 0x3620d: 0x6c568820, 0x3620e: 0x6c568a20, 0x3620f: 0x6c568c20,\n\t0x36210: 0x6c568e20, 0x36211: 0x6c791a20, 0x36212: 0x6c791c20, 0x36213: 0x6c791e20,\n\t0x36214: 0x6c792020, 0x36215: 0x6c792220, 0x36216: 0x6c792420, 0x36217: 0x6c792620,\n\t0x36218: 0x6c792820, 0x36219: 0x6c792a20, 0x3621a: 0x6c792c20, 0x3621b: 0x6ca22a20,\n\t0x3621c: 0x6ca22c20, 0x3621d: 0x6ca22e20, 0x3621e: 0x6ca23020, 0x3621f: 0x6ca23220,\n\t0x36220: 0x6ca23420, 0x36221: 0x6ca23620, 0x36222: 0x6ca23820, 0x36223: 0x6ca23a20,\n\t0x36224: 0x6ca23c20, 0x36225: 0x6ca23e20, 0x36226: 0x6ca24020, 0x36227: 0x6ca24220,\n\t0x36228: 0x6ca24420, 0x36229: 0x6ca24620, 0x3622a: 0x6ca24820, 0x3622b: 0x6ca24a20,\n\t0x3622c: 0x6ca24c20, 0x3622d: 0x6ca24e20, 0x3622e: 0x6ca25020, 0x3622f: 0x6ccf8e20,\n\t0x36230: 0x6ccf9020, 0x36231: 0x6ccf9220, 0x36232: 0x6ccf9420, 0x36233: 0x6ccf9620,\n\t0x36234: 0x6ccf9820, 0x36235: 0x6ccf9a20, 0x36236: 0x6ccf9c20, 0x36237: 0x6ccf9e20,\n\t0x36238: 0x6ccfa020, 0x36239: 0x6ccfa220, 0x3623a: 0x6ccfa420, 0x3623b: 0x6ccfa620,\n\t0x3623c: 0x6ccfa820, 0x3623d: 0x6ccfaa20, 0x3623e: 0x6ccfac20, 0x3623f: 0x6ccfae20,\n\t// Block 0xd89, offset 0x36240\n\t0x36240: 0x6ccfb020, 0x36241: 0x6ccfb220, 0x36242: 0x6ccfb420, 0x36243: 0x6ccfb620,\n\t0x36244: 0x6ccfb820, 0x36245: 0x6ccfba20, 0x36246: 0x6ccfbc20, 0x36247: 0x6ccfbe20,\n\t0x36248: 0x6ccfc020, 0x36249: 0x6ccfc220, 0x3624a: 0x6ccfc420, 0x3624b: 0x6ccfc620,\n\t0x3624c: 0x6ccfc820, 0x3624d: 0x6cfd8420, 0x3624e: 0x6cfd8620, 0x3624f: 0x6cfd8820,\n\t0x36250: 0x6cfd8a20, 0x36251: 0x6cfd8c20, 0x36252: 0x6cfd8e20, 0x36253: 0x6cfd9020,\n\t0x36254: 0x6cfd9220, 0x36255: 0x6cfd9420, 0x36256: 0x6cfd9620, 0x36257: 0x6cfd9820,\n\t0x36258: 0x6cfd9a20, 0x36259: 0x6cfd9c20, 0x3625a: 0x6cfd9e20, 0x3625b: 0x6cfda020,\n\t0x3625c: 0x6cf91a20, 0x3625d: 0x6cfda220, 0x3625e: 0x6cfda420, 0x3625f: 0x6cfda620,\n\t0x36260: 0x6cfda820, 0x36261: 0x6cfdaa20, 0x36262: 0x6cfdac20, 0x36263: 0x6cfdae20,\n\t0x36264: 0x6cfdb020, 0x36265: 0x6cfdb220, 0x36266: 0x6cfdb420, 0x36267: 0x6cfdb620,\n\t0x36268: 0x6cfdb820, 0x36269: 0x6d2c2220, 0x3626a: 0x6d2c2420, 0x3626b: 0x6d2c2620,\n\t0x3626c: 0x6d2c2820, 0x3626d: 0x6d2c2a20, 0x3626e: 0x6d2c2c20, 0x3626f: 0x6d2c2e20,\n\t0x36270: 0x6d2c3020, 0x36271: 0x6d2c3220, 0x36272: 0x6d2c3420, 0x36273: 0x6d2c3620,\n\t0x36274: 0x6d2c3820, 0x36275: 0x6d2c3a20, 0x36276: 0x6d2c3c20, 0x36277: 0x6d2c3e20,\n\t0x36278: 0x6d2c4020, 0x36279: 0x6d2c4220, 0x3627a: 0x6d2c4420, 0x3627b: 0x6d2c4620,\n\t0x3627c: 0x6d2c4820, 0x3627d: 0x6d2c4a20, 0x3627e: 0x6d2c4c20, 0x3627f: 0x6cfdba20,\n\t// Block 0xd8a, offset 0x36280\n\t0x36280: 0x6d2c4e20, 0x36281: 0x6d2c5020, 0x36282: 0x6d2c5220, 0x36283: 0x6d2c5420,\n\t0x36284: 0x6d2c5620, 0x36285: 0x6d2c5820, 0x36286: 0x6d2c5a20, 0x36287: 0x6d2c5c20,\n\t0x36288: 0x6d2c5e20, 0x36289: 0x6d2c6020, 0x3628a: 0x6d595820, 0x3628b: 0x6d595a20,\n\t0x3628c: 0x6d595c20, 0x3628d: 0x6d595e20, 0x3628e: 0x6d596020, 0x3628f: 0x6d596220,\n\t0x36290: 0x6d596420, 0x36291: 0x6d596620, 0x36292: 0x6d596820, 0x36293: 0x6d596a20,\n\t0x36294: 0x6d596c20, 0x36295: 0x6d596e20, 0x36296: 0x6d597020, 0x36297: 0x6d55d820,\n\t0x36298: 0x6d597220, 0x36299: 0x6d597420, 0x3629a: 0x6d597620, 0x3629b: 0x6d597820,\n\t0x3629c: 0x6d597a20, 0x3629d: 0x6d597c20, 0x3629e: 0x6d597e20, 0x3629f: 0x6d598020,\n\t0x362a0: 0x6d598220, 0x362a1: 0x6d846020, 0x362a2: 0x6d846220, 0x362a3: 0x6d846420,\n\t0x362a4: 0x6d846620, 0x362a5: 0x6d846820, 0x362a6: 0x6d846a20, 0x362a7: 0x6d846c20,\n\t0x362a8: 0x6d846e20, 0x362a9: 0x6d847020, 0x362aa: 0x6d847220, 0x362ab: 0x6d847420,\n\t0x362ac: 0x6d847620, 0x362ad: 0x6d847820, 0x362ae: 0x6d847a20, 0x362af: 0x6da95020,\n\t0x362b0: 0x6da95220, 0x362b1: 0x6da95420, 0x362b2: 0x6da95620, 0x362b3: 0x6da95820,\n\t0x362b4: 0x6da95a20, 0x362b5: 0x6da95c20, 0x362b6: 0x6da95e20, 0x362b7: 0x6da96020,\n\t0x362b8: 0x6da96220, 0x362b9: 0x6dca5420, 0x362ba: 0x6dca5620, 0x362bb: 0x6de5f220,\n\t0x362bc: 0x6de5f420, 0x362bd: 0x6de5f620, 0x362be: 0x6de5f820, 0x362bf: 0x6de5fa20,\n\t// Block 0xd8b, offset 0x362c0\n\t0x362c0: 0x6de5fc20, 0x362c1: 0x6de5fe20, 0x362c2: 0x6dfcdc20, 0x362c3: 0x6dfcde20,\n\t0x362c4: 0x6dfce020, 0x362c5: 0x6dfce220, 0x362c6: 0x6dfce420, 0x362c7: 0x6e0fbc20,\n\t0x362c8: 0x6e0fbe20, 0x362c9: 0x6e0fc020, 0x362ca: 0x6e0fc220, 0x362cb: 0x6e0fc420,\n\t0x362cc: 0x6e1e9e20, 0x362cd: 0x6e1ea020, 0x362ce: 0x6e1ea220, 0x362cf: 0x6e1ea420,\n\t0x362d0: 0x6e1ea620, 0x362d1: 0x6e2a0620, 0x362d2: 0x6e2a0820, 0x362d3: 0x6e2a0a20,\n\t0x362d4: 0x6e32d020, 0x362d5: 0x6e32d220, 0x362d6: 0x6e391020, 0x362d7: 0x6e391220,\n\t0x362d8: 0x6e391420, 0x362d9: 0x6e42c020, 0x362da: 0x6c04f820, 0x362db: 0x6c09e220,\n\t0x362dc: 0x6c09e420, 0x362dd: 0x6c09e620, 0x362de: 0x6c09e820, 0x362df: 0x6c09ea20,\n\t0x362e0: 0x6c09ec20, 0x362e1: 0x6c139a20, 0x362e2: 0x6c139c20, 0x362e3: 0x6c139e20,\n\t0x362e4: 0x6c13a020, 0x362e5: 0x6c13a220, 0x362e6: 0x6c13a420, 0x362e7: 0x6c13a620,\n\t0x362e8: 0x6c13a820, 0x362e9: 0x6c13aa20, 0x362ea: 0x6c13ac20, 0x362eb: 0x6c13ae20,\n\t0x362ec: 0x6c13b020, 0x362ed: 0x6c13b220, 0x362ee: 0x6c13b420, 0x362ef: 0x6c242820,\n\t0x362f0: 0x6c242a20, 0x362f1: 0x6c242c20, 0x362f2: 0x6c242e20, 0x362f3: 0x6c243020,\n\t0x362f4: 0x6c243220, 0x362f5: 0x6c243420, 0x362f6: 0x6c243620, 0x362f7: 0x6c243820,\n\t0x362f8: 0x6c243a20, 0x362f9: 0x6c243c20, 0x362fa: 0x6c243e20, 0x362fb: 0x6c244020,\n\t0x362fc: 0x6c244220, 0x362fd: 0x6c244420, 0x362fe: 0x6c244620, 0x362ff: 0x6c244820,\n\t// Block 0xd8c, offset 0x36300\n\t0x36300: 0x6c244a20, 0x36301: 0x6c244c20, 0x36302: 0x6c244e20, 0x36303: 0x6c245020,\n\t0x36304: 0x6c245220, 0x36305: 0x6c245420, 0x36306: 0x6c245620, 0x36307: 0x6c245820,\n\t0x36308: 0x6c245a20, 0x36309: 0x6c245c20, 0x3630a: 0x6c245e20, 0x3630b: 0x6c246020,\n\t0x3630c: 0x6c246220, 0x3630d: 0x6c246420, 0x3630e: 0x6c246620, 0x3630f: 0x6c3af620,\n\t0x36310: 0x6c3af820, 0x36311: 0x6c3afa20, 0x36312: 0x6c3afc20, 0x36313: 0x6c3afe20,\n\t0x36314: 0x6c3b0020, 0x36315: 0x6c3b0220, 0x36316: 0x6c3b0420, 0x36317: 0x6c3b0620,\n\t0x36318: 0x6c3b0820, 0x36319: 0x6c3b0a20, 0x3631a: 0x6c3b0c20, 0x3631b: 0x6c3b0e20,\n\t0x3631c: 0x6c3b1020, 0x3631d: 0x6c3b1220, 0x3631e: 0x6c3b1420, 0x3631f: 0x6c3b1620,\n\t0x36320: 0x6c3b1820, 0x36321: 0x6c3b1a20, 0x36322: 0x6c3b1c20, 0x36323: 0x6c3b1e20,\n\t0x36324: 0x6c3b2020, 0x36325: 0x6c3b2220, 0x36326: 0x6c3b2420, 0x36327: 0x6c3b2620,\n\t0x36328: 0x6c3b2820, 0x36329: 0x6c3b2a20, 0x3632a: 0x6c3b2c20, 0x3632b: 0x6c3b2e20,\n\t0x3632c: 0x6c3b3020, 0x3632d: 0x6c3b3220, 0x3632e: 0x6c246820, 0x3632f: 0x6c56cc20,\n\t0x36330: 0x6c56ce20, 0x36331: 0x6c56d020, 0x36332: 0x6c56d220, 0x36333: 0x6c56d420,\n\t0x36334: 0x6c56d620, 0x36335: 0x6c56d820, 0x36336: 0x6c56da20, 0x36337: 0x6c56dc20,\n\t0x36338: 0x6c56de20, 0x36339: 0x6c56e020, 0x3633a: 0x6c56e220, 0x3633b: 0x6c56e420,\n\t0x3633c: 0x6c56e620, 0x3633d: 0x6c56e820, 0x3633e: 0x6c56ea20, 0x3633f: 0x6c56ec20,\n\t// Block 0xd8d, offset 0x36340\n\t0x36340: 0x6c56ee20, 0x36341: 0x6c56f020, 0x36342: 0x6c56f220, 0x36343: 0x6c56f420,\n\t0x36344: 0x6c56f620, 0x36345: 0x6c56f820, 0x36346: 0x6c56fa20, 0x36347: 0x6c56fc20,\n\t0x36348: 0x6c56fe20, 0x36349: 0x6c570020, 0x3634a: 0x6c570220, 0x3634b: 0x6c570420,\n\t0x3634c: 0x6c570620, 0x3634d: 0x6c570820, 0x3634e: 0x6c570a20, 0x3634f: 0x6c570c20,\n\t0x36350: 0x6c570e20, 0x36351: 0x6c571020, 0x36352: 0x6c571220, 0x36353: 0x6c571420,\n\t0x36354: 0x6c571620, 0x36355: 0x6c571820, 0x36356: 0x6c571a20, 0x36357: 0x6c571c20,\n\t0x36358: 0x6c571e20, 0x36359: 0x6c796420, 0x3635a: 0x6c796620, 0x3635b: 0x6c796820,\n\t0x3635c: 0x6c796a20, 0x3635d: 0x6c796c20, 0x3635e: 0x6c796e20, 0x3635f: 0x6c797020,\n\t0x36360: 0x6c797220, 0x36361: 0x6c797420, 0x36362: 0x6c797620, 0x36363: 0x6c572020,\n\t0x36364: 0x6c797820, 0x36365: 0x6c797a20, 0x36366: 0x6c797c20, 0x36367: 0x6c797e20,\n\t0x36368: 0x6c798020, 0x36369: 0x6c798220, 0x3636a: 0x6c798420, 0x3636b: 0x6c798620,\n\t0x3636c: 0x6c798820, 0x3636d: 0x6c798a20, 0x3636e: 0x6c798c20, 0x3636f: 0x6c798e20,\n\t0x36370: 0x6c799020, 0x36371: 0x6c799220, 0x36372: 0x6c799420, 0x36373: 0x6c799620,\n\t0x36374: 0x6c799820, 0x36375: 0x6c799a20, 0x36376: 0x6c799c20, 0x36377: 0x6c799e20,\n\t0x36378: 0x6c79a020, 0x36379: 0x6c79a220, 0x3637a: 0x6c79a420, 0x3637b: 0x6c79a620,\n\t0x3637c: 0x6c79a820, 0x3637d: 0x6c79aa20, 0x3637e: 0x6c79ac20, 0x3637f: 0x6c79ae20,\n\t// Block 0xd8e, offset 0x36380\n\t0x36380: 0x6c79b020, 0x36381: 0x6c79b220, 0x36382: 0x6c79b420, 0x36383: 0x6ca29a20,\n\t0x36384: 0x6ca29c20, 0x36385: 0x6ca29e20, 0x36386: 0x6ca2a020, 0x36387: 0x6ca2a220,\n\t0x36388: 0x6ca2a420, 0x36389: 0x6ca2a620, 0x3638a: 0x6ca2a820, 0x3638b: 0x6ca2aa20,\n\t0x3638c: 0x6ca2ac20, 0x3638d: 0x6ca2ae20, 0x3638e: 0x6ca2b020, 0x3638f: 0x6ca2b220,\n\t0x36390: 0x6ca2b420, 0x36391: 0x6ca2b620, 0x36392: 0x6ca2b820, 0x36393: 0x6ca2ba20,\n\t0x36394: 0x6ca2bc20, 0x36395: 0x6ca2be20, 0x36396: 0x6ca2c020, 0x36397: 0x6ca2c220,\n\t0x36398: 0x6ca2c420, 0x36399: 0x6ca2c620, 0x3639a: 0x6ca2c820, 0x3639b: 0x6ca2ca20,\n\t0x3639c: 0x6cd00c20, 0x3639d: 0x6cd00e20, 0x3639e: 0x6cd01020, 0x3639f: 0x6cd01220,\n\t0x363a0: 0x6cd01420, 0x363a1: 0x6cd01620, 0x363a2: 0x6cd01820, 0x363a3: 0x6cd01a20,\n\t0x363a4: 0x6cd01c20, 0x363a5: 0x6cd01e20, 0x363a6: 0x6cd02020, 0x363a7: 0x6cd02220,\n\t0x363a8: 0x6cd02420, 0x363a9: 0x6cd02620, 0x363aa: 0x6cd02820, 0x363ab: 0x6cd02a20,\n\t0x363ac: 0x6cd02c20, 0x363ad: 0x6cd02e20, 0x363ae: 0x6cd03020, 0x363af: 0x6cd03220,\n\t0x363b0: 0x6cd03420, 0x363b1: 0x6cd03620, 0x363b2: 0x6cd03820, 0x363b3: 0x6cd03a20,\n\t0x363b4: 0x6cd03c20, 0x363b5: 0x6cf3a620, 0x363b6: 0x6cd03e20, 0x363b7: 0x6cd04020,\n\t0x363b8: 0x6cd04220, 0x363b9: 0x6cd04420, 0x363ba: 0x6cd04620, 0x363bb: 0x6cd04820,\n\t0x363bc: 0x6cd04a20, 0x363bd: 0x6cd04c20, 0x363be: 0x6cd04e20, 0x363bf: 0x6cd05020,\n\t// Block 0xd8f, offset 0x363c0\n\t0x363c0: 0x6cd05220, 0x363c1: 0x6cd05420, 0x363c2: 0x6cd05620, 0x363c3: 0x6cd05820,\n\t0x363c4: 0x6cd05a20, 0x363c5: 0x6cd05c20, 0x363c6: 0x6cd05e20, 0x363c7: 0x6cd06020,\n\t0x363c8: 0x6cd06220, 0x363c9: 0x6cd06420, 0x363ca: 0x6cd06620, 0x363cb: 0x6cd06820,\n\t0x363cc: 0x6cd06a20, 0x363cd: 0x6cfdee20, 0x363ce: 0x6cfdf020, 0x363cf: 0x6cfdf220,\n\t0x363d0: 0x6cfdf420, 0x363d1: 0x6cfdf620, 0x363d2: 0x6cfdf820, 0x363d3: 0x6cfdfa20,\n\t0x363d4: 0x6cfdfc20, 0x363d5: 0x6cfdfe20, 0x363d6: 0x6cfe0020, 0x363d7: 0x6cfe0220,\n\t0x363d8: 0x6cfe0420, 0x363d9: 0x6cfe0620, 0x363da: 0x6cfe0820, 0x363db: 0x6cfe0a20,\n\t0x363dc: 0x6cfe0c20, 0x363dd: 0x6cfe0e20, 0x363de: 0x6cfe1020, 0x363df: 0x6cfe1220,\n\t0x363e0: 0x6cfe1420, 0x363e1: 0x6cfe1620, 0x363e2: 0x6cfe1820, 0x363e3: 0x6cfe1a20,\n\t0x363e4: 0x6cfe1c20, 0x363e5: 0x6cfe1e20, 0x363e6: 0x6cfe2020, 0x363e7: 0x6cfe2220,\n\t0x363e8: 0x6cfe2420, 0x363e9: 0x6cfe2620, 0x363ea: 0x6cfe2820, 0x363eb: 0x6cfe2a20,\n\t0x363ec: 0x6cfe2c20, 0x363ed: 0x6cfe2e20, 0x363ee: 0x6cfe3020, 0x363ef: 0x6cfe3220,\n\t0x363f0: 0x6cfe3420, 0x363f1: 0x6cfe3620, 0x363f2: 0x6cfe3820, 0x363f3: 0x6cfe3a20,\n\t0x363f4: 0x6cfe3c20, 0x363f5: 0x6cfe3e20, 0x363f6: 0x6cfe4020, 0x363f7: 0x6cfe4220,\n\t0x363f8: 0x6cfe4420, 0x363f9: 0x6d2c8a20, 0x363fa: 0x6d2c8c20, 0x363fb: 0x6d2c8e20,\n\t0x363fc: 0x6d2c9020, 0x363fd: 0x6d2c9220, 0x363fe: 0x6d2c9420, 0x363ff: 0x6d2c9620,\n\t// Block 0xd90, offset 0x36400\n\t0x36400: 0x6d2c9820, 0x36401: 0x6d2c9a20, 0x36402: 0x6d2c9c20, 0x36403: 0x6d2c9e20,\n\t0x36404: 0x6d2ca020, 0x36405: 0x6d2ca220, 0x36406: 0x6d2ca420, 0x36407: 0x6d2ca620,\n\t0x36408: 0x6d2ca820, 0x36409: 0x6d2caa20, 0x3640a: 0x6d2cac20, 0x3640b: 0x6d2cae20,\n\t0x3640c: 0x6d2cb020, 0x3640d: 0x6d2cb220, 0x3640e: 0x6d2cb420, 0x3640f: 0x6d2cb620,\n\t0x36410: 0x6d2cb820, 0x36411: 0x6d2cba20, 0x36412: 0x6d2cbc20, 0x36413: 0x6d2cbe20,\n\t0x36414: 0x6d2cc020, 0x36415: 0x6d2cc220, 0x36416: 0x6d2cc420, 0x36417: 0x6d2cc620,\n\t0x36418: 0x6d2cc820, 0x36419: 0x6d2cca20, 0x3641a: 0x6d2ccc20, 0x3641b: 0x6d2cce20,\n\t0x3641c: 0x6d2cd020, 0x3641d: 0x6d2cd220, 0x3641e: 0x6d2cd420, 0x3641f: 0x6d2cd620,\n\t0x36420: 0x6d2cd820, 0x36421: 0x6d2cda20, 0x36422: 0x6d2cdc20, 0x36423: 0x6d59b220,\n\t0x36424: 0x6d59b420, 0x36425: 0x6d59b620, 0x36426: 0x6d59b820, 0x36427: 0x6d59ba20,\n\t0x36428: 0x6d59bc20, 0x36429: 0x6d59be20, 0x3642a: 0x6d59c020, 0x3642b: 0x6d59c220,\n\t0x3642c: 0x6d59c420, 0x3642d: 0x6d59c620, 0x3642e: 0x6d59c820, 0x3642f: 0x6d59ca20,\n\t0x36430: 0x6d59cc20, 0x36431: 0x6d59ce20, 0x36432: 0x6d59d020, 0x36433: 0x6d59d220,\n\t0x36434: 0x6d59d420, 0x36435: 0x6d59d620, 0x36436: 0x6d59d820, 0x36437: 0x6d59da20,\n\t0x36438: 0x6d59dc20, 0x36439: 0x6d59de20, 0x3643a: 0x6d59e020, 0x3643b: 0x6d59e220,\n\t0x3643c: 0x6d59e420, 0x3643d: 0x6d59e620, 0x3643e: 0x6d59e820, 0x3643f: 0x6d59ea20,\n\t// Block 0xd91, offset 0x36440\n\t0x36440: 0x6d59ec20, 0x36441: 0x6d59ee20, 0x36442: 0x6d59f020, 0x36443: 0x6d59f220,\n\t0x36444: 0x6d59f420, 0x36445: 0x6d59f620, 0x36446: 0x6d59f820, 0x36447: 0x6d59fa20,\n\t0x36448: 0x6d59fc20, 0x36449: 0x6d59fe20, 0x3644a: 0x6d5a0020, 0x3644b: 0x6d5a0220,\n\t0x3644c: 0x6d849820, 0x3644d: 0x6d849a20, 0x3644e: 0x6d849c20, 0x3644f: 0x6d849e20,\n\t0x36450: 0x6d84a020, 0x36451: 0x6d84a220, 0x36452: 0x6d84a420, 0x36453: 0x6d84a620,\n\t0x36454: 0x6d84a820, 0x36455: 0x6d84aa20, 0x36456: 0x6d84ac20, 0x36457: 0x6d84ae20,\n\t0x36458: 0x6d84b020, 0x36459: 0x6d84b220, 0x3645a: 0x6d84b420, 0x3645b: 0x6d84b620,\n\t0x3645c: 0x6d84b820, 0x3645d: 0x6d84ba20, 0x3645e: 0x6d84bc20, 0x3645f: 0x6d84be20,\n\t0x36460: 0x6d84c020, 0x36461: 0x6d84c220, 0x36462: 0x6d84c420, 0x36463: 0x6d84c620,\n\t0x36464: 0x6d84c820, 0x36465: 0x6d84ca20, 0x36466: 0x6da97820, 0x36467: 0x6da97a20,\n\t0x36468: 0x6da97c20, 0x36469: 0x6da97e20, 0x3646a: 0x6da98020, 0x3646b: 0x6da98220,\n\t0x3646c: 0x6da98420, 0x3646d: 0x6da98620, 0x3646e: 0x6da98820, 0x3646f: 0x6da98a20,\n\t0x36470: 0x6da98c20, 0x36471: 0x6da98e20, 0x36472: 0x6da99020, 0x36473: 0x6da99220,\n\t0x36474: 0x6dca6020, 0x36475: 0x6dca6220, 0x36476: 0x6dca6420, 0x36477: 0x6dca6620,\n\t0x36478: 0x6dca6820, 0x36479: 0x6dca6a20, 0x3647a: 0x6dca6c20, 0x3647b: 0x6dca6e20,\n\t0x3647c: 0x6dca7020, 0x3647d: 0x6dca7220, 0x3647e: 0x6dca7420, 0x3647f: 0x6dca7620,\n\t// Block 0xd92, offset 0x36480\n\t0x36480: 0x6dca7820, 0x36481: 0x6dca7a20, 0x36482: 0x6dca7c20, 0x36483: 0x6dca7e20,\n\t0x36484: 0x6dca8020, 0x36485: 0x6de60a20, 0x36486: 0x6de60c20, 0x36487: 0x6de60e20,\n\t0x36488: 0x6de61020, 0x36489: 0x6de61220, 0x3648a: 0x6de61420, 0x3648b: 0x6de61620,\n\t0x3648c: 0x6de61820, 0x3648d: 0x6dfcf420, 0x3648e: 0x6dfcf620, 0x3648f: 0x6dfcf820,\n\t0x36490: 0x6dfcfa20, 0x36491: 0x6e0fca20, 0x36492: 0x6e0fcc20, 0x36493: 0x6e0fce20,\n\t0x36494: 0x6e0fd020, 0x36495: 0x6e0fd220, 0x36496: 0x6e0fd420, 0x36497: 0x6e1eac20,\n\t0x36498: 0x6e1eae20, 0x36499: 0x6e1eb020, 0x3649a: 0x6e1eb220, 0x3649b: 0x6e2a1220,\n\t0x3649c: 0x6e2a1420, 0x3649d: 0x6e2a1620, 0x3649e: 0x6e2a1820, 0x3649f: 0x6e32d620,\n\t0x364a0: 0x6e32d820, 0x364a1: 0x6e32da20, 0x364a2: 0x6e32dc20, 0x364a3: 0x6e391620,\n\t0x364a4: 0x6e407a20, 0x364a5: 0x6c09f020, 0x364a6: 0x6c572820, 0x364a7: 0x6cd07420,\n\t0x364a8: 0x6d2ce020, 0x364a9: 0x6c04fc20, 0x364aa: 0x6c13c620, 0x364ab: 0x6c13c820,\n\t0x364ac: 0x6c13ca20, 0x364ad: 0x6c248820, 0x364ae: 0x6c248a20, 0x364af: 0x6c248c20,\n\t0x364b0: 0x6c248e20, 0x364b1: 0x6c249020, 0x364b2: 0x6c249220, 0x364b3: 0x6c249420,\n\t0x364b4: 0x6c249620, 0x364b5: 0x6c249820, 0x364b6: 0x6c249a20, 0x364b7: 0x6c249c20,\n\t0x364b8: 0x6c249e20, 0x364b9: 0x6c3b7020, 0x364ba: 0x6c3b7220, 0x364bb: 0x6c3b7420,\n\t0x364bc: 0x6c3b7620, 0x364bd: 0x6c3b7820, 0x364be: 0x6c3b7a20, 0x364bf: 0x6c3b7c20,\n\t// Block 0xd93, offset 0x364c0\n\t0x364c0: 0x6c3b7e20, 0x364c1: 0x6c3b8020, 0x364c2: 0x6c3b8220, 0x364c3: 0x6c3b8420,\n\t0x364c4: 0x6c3b8620, 0x364c5: 0x6c3b8820, 0x364c6: 0x6c3b8a20, 0x364c7: 0x6c3b8c20,\n\t0x364c8: 0x6c3b8e20, 0x364c9: 0x6c3b9020, 0x364ca: 0x6c3b9220, 0x364cb: 0x6c3b9420,\n\t0x364cc: 0x6c3b9620, 0x364cd: 0x6c3b9820, 0x364ce: 0x6c3b9a20, 0x364cf: 0x6c577620,\n\t0x364d0: 0x6c577820, 0x364d1: 0x6c577a20, 0x364d2: 0x6c577c20, 0x364d3: 0x6c577e20,\n\t0x364d4: 0x6c578020, 0x364d5: 0x6c578220, 0x364d6: 0x6c578420, 0x364d7: 0x6c578620,\n\t0x364d8: 0x6c578820, 0x364d9: 0x6c578a20, 0x364da: 0x6c578c20, 0x364db: 0x6c578e20,\n\t0x364dc: 0x6c579020, 0x364dd: 0x6c579220, 0x364de: 0x6c579420, 0x364df: 0x6c579620,\n\t0x364e0: 0x6c579820, 0x364e1: 0x6c579a20, 0x364e2: 0x6c579c20, 0x364e3: 0x6c579e20,\n\t0x364e4: 0x6c57a020, 0x364e5: 0x6c57a220, 0x364e6: 0x6c57a420, 0x364e7: 0x6c57a620,\n\t0x364e8: 0x6c57a820, 0x364e9: 0x6c57aa20, 0x364ea: 0x6c57ac20, 0x364eb: 0x6c57ae20,\n\t0x364ec: 0x6c57b020, 0x364ed: 0x6c57b220, 0x364ee: 0x6c57b420, 0x364ef: 0x6c57b620,\n\t0x364f0: 0x6c57b820, 0x364f1: 0x6c57ba20, 0x364f2: 0x6c57bc20, 0x364f3: 0x6c57be20,\n\t0x364f4: 0x6c57c020, 0x364f5: 0x6c7a1c20, 0x364f6: 0x6c7a1e20, 0x364f7: 0x6c7a2020,\n\t0x364f8: 0x6c7a2220, 0x364f9: 0x6c7a2420, 0x364fa: 0x6c7a2620, 0x364fb: 0x6c7a2820,\n\t0x364fc: 0x6c7a2a20, 0x364fd: 0x6c7a2c20, 0x364fe: 0x6c7a2e20, 0x364ff: 0x6c7a3020,\n\t// Block 0xd94, offset 0x36500\n\t0x36500: 0x6c7a3220, 0x36501: 0x6c7a3420, 0x36502: 0x6c7a3620, 0x36503: 0x6c7a3820,\n\t0x36504: 0x6c7a3a20, 0x36505: 0x6c7a3c20, 0x36506: 0x6c7a3e20, 0x36507: 0x6c7a4020,\n\t0x36508: 0x6c7a4220, 0x36509: 0x6c7a4420, 0x3650a: 0x6c7a4620, 0x3650b: 0x6c7a4820,\n\t0x3650c: 0x6c7a4a20, 0x3650d: 0x6c7a4c20, 0x3650e: 0x6c7a4e20, 0x3650f: 0x6c7a5020,\n\t0x36510: 0x6c7a5220, 0x36511: 0x6c7a5420, 0x36512: 0x6c7a5620, 0x36513: 0x6c7a5820,\n\t0x36514: 0x6c7a5a20, 0x36515: 0x6c7a5c20, 0x36516: 0x6ca32620, 0x36517: 0x6ca32820,\n\t0x36518: 0x6ca32a20, 0x36519: 0x6ca32c20, 0x3651a: 0x6ca32e20, 0x3651b: 0x6ca33020,\n\t0x3651c: 0x6ca33220, 0x3651d: 0x6ca33420, 0x3651e: 0x6ca33620, 0x3651f: 0x6ca33820,\n\t0x36520: 0x6ca33a20, 0x36521: 0x6ca33c20, 0x36522: 0x6ca33e20, 0x36523: 0x6ca34020,\n\t0x36524: 0x6ca34220, 0x36525: 0x6ca34420, 0x36526: 0x6ca34620, 0x36527: 0x6ca34820,\n\t0x36528: 0x6ca34a20, 0x36529: 0x6ca34c20, 0x3652a: 0x6ca34e20, 0x3652b: 0x6ca35020,\n\t0x3652c: 0x6ca35220, 0x3652d: 0x6ca35420, 0x3652e: 0x6ca35620, 0x3652f: 0x6ca35820,\n\t0x36530: 0x6ca35a20, 0x36531: 0x6ca35c20, 0x36532: 0x6ca35e20, 0x36533: 0x6ca36020,\n\t0x36534: 0x6ca36220, 0x36535: 0x6ca36420, 0x36536: 0x6ca36620, 0x36537: 0x6ca36820,\n\t0x36538: 0x6ca36a20, 0x36539: 0x6ca36c20, 0x3653a: 0x6ca36e20, 0x3653b: 0x6cd0dc20,\n\t0x3653c: 0x6cd0de20, 0x3653d: 0x6cd0e020, 0x3653e: 0x6cd0e220, 0x3653f: 0x6cd0e420,\n\t// Block 0xd95, offset 0x36540\n\t0x36540: 0x6cd0e620, 0x36541: 0x6cd0e820, 0x36542: 0x6cd0ea20, 0x36543: 0x6cd0ec20,\n\t0x36544: 0x6cd0ee20, 0x36545: 0x6cd0f020, 0x36546: 0x6cd0f220, 0x36547: 0x6cd0f420,\n\t0x36548: 0x6cd0f620, 0x36549: 0x6cd0f820, 0x3654a: 0x6cd0fa20, 0x3654b: 0x6cd0fc20,\n\t0x3654c: 0x6cd0fe20, 0x3654d: 0x6cd10020, 0x3654e: 0x6cd10220, 0x3654f: 0x6cd10420,\n\t0x36550: 0x6cd10620, 0x36551: 0x6cd10820, 0x36552: 0x6cd10a20, 0x36553: 0x6cd10c20,\n\t0x36554: 0x6cd10e20, 0x36555: 0x6cd11020, 0x36556: 0x6cd11220, 0x36557: 0x6cd11420,\n\t0x36558: 0x6cd11620, 0x36559: 0x6cd11820, 0x3655a: 0x6cd11a20, 0x3655b: 0x6cd11c20,\n\t0x3655c: 0x6cd11e20, 0x3655d: 0x6cd12020, 0x3655e: 0x6cd12220, 0x3655f: 0x6cd12420,\n\t0x36560: 0x6cd12620, 0x36561: 0x6cd12820, 0x36562: 0x6cd12a20, 0x36563: 0x6cd12c20,\n\t0x36564: 0x6cd12e20, 0x36565: 0x6cd13020, 0x36566: 0x6cd13220, 0x36567: 0x6cd13420,\n\t0x36568: 0x6cd13620, 0x36569: 0x6cd13820, 0x3656a: 0x6cd13a20, 0x3656b: 0x6cd13c20,\n\t0x3656c: 0x6cd13e20, 0x3656d: 0x6cd14020, 0x3656e: 0x6cd14220, 0x3656f: 0x6cfeaa20,\n\t0x36570: 0x6cfeac20, 0x36571: 0x6cfeae20, 0x36572: 0x6cfeb020, 0x36573: 0x6cfeb220,\n\t0x36574: 0x6cfeb420, 0x36575: 0x6cfeb620, 0x36576: 0x6cfeb820, 0x36577: 0x6cfeba20,\n\t0x36578: 0x6cfebc20, 0x36579: 0x6cfebe20, 0x3657a: 0x6cfec020, 0x3657b: 0x6cfec220,\n\t0x3657c: 0x6cfec420, 0x3657d: 0x6cfec620, 0x3657e: 0x6cfec820, 0x3657f: 0x6cfeca20,\n\t// Block 0xd96, offset 0x36580\n\t0x36580: 0x6cfecc20, 0x36581: 0x6cfece20, 0x36582: 0x6cfed020, 0x36583: 0x6cfed220,\n\t0x36584: 0x6cfed420, 0x36585: 0x6cfed620, 0x36586: 0x6cfed820, 0x36587: 0x6cfeda20,\n\t0x36588: 0x6cfedc20, 0x36589: 0x6cfede20, 0x3658a: 0x6cfee020, 0x3658b: 0x6cfee220,\n\t0x3658c: 0x6cfee420, 0x3658d: 0x6cfee620, 0x3658e: 0x6cfee820, 0x3658f: 0x6cfeea20,\n\t0x36590: 0x6cfeec20, 0x36591: 0x6cfeee20, 0x36592: 0x6cfef020, 0x36593: 0x6cfef220,\n\t0x36594: 0x6cfef420, 0x36595: 0x6cfef620, 0x36596: 0x6cfef820, 0x36597: 0x6cfefa20,\n\t0x36598: 0x6cfefc20, 0x36599: 0x6cfefe20, 0x3659a: 0x6cff0020, 0x3659b: 0x6cff0220,\n\t0x3659c: 0x6cff0420, 0x3659d: 0x6cff0620, 0x3659e: 0x6cff0820, 0x3659f: 0x6cff0a20,\n\t0x365a0: 0x6cff0c20, 0x365a1: 0x6cff0e20, 0x365a2: 0x6cff1020, 0x365a3: 0x6cff1220,\n\t0x365a4: 0x6cff1420, 0x365a5: 0x6cff1620, 0x365a6: 0x6cff1820, 0x365a7: 0x6cff1a20,\n\t0x365a8: 0x6cff1c20, 0x365a9: 0x6cff1e20, 0x365aa: 0x6d2d1620, 0x365ab: 0x6d2d1820,\n\t0x365ac: 0x6d2d1a20, 0x365ad: 0x6d2d1c20, 0x365ae: 0x6d2d1e20, 0x365af: 0x6d2d2020,\n\t0x365b0: 0x6d2d2220, 0x365b1: 0x6d2d2420, 0x365b2: 0x6d2d2620, 0x365b3: 0x6d2d2820,\n\t0x365b4: 0x6d2d2a20, 0x365b5: 0x6d2d2c20, 0x365b6: 0x6d2d2e20, 0x365b7: 0x6d2d3020,\n\t0x365b8: 0x6d2d3220, 0x365b9: 0x6d2d3420, 0x365ba: 0x6d2d3620, 0x365bb: 0x6d2d3820,\n\t0x365bc: 0x6d2d3a20, 0x365bd: 0x6d2d3c20, 0x365be: 0x6d2d3e20, 0x365bf: 0x6d2d4020,\n\t// Block 0xd97, offset 0x365c0\n\t0x365c0: 0x6d2d4220, 0x365c1: 0x6d2d4420, 0x365c2: 0x6d2d4620, 0x365c3: 0x6d2d4820,\n\t0x365c4: 0x6d2d4a20, 0x365c5: 0x6d2d4c20, 0x365c6: 0x6d2d4e20, 0x365c7: 0x6d2d5020,\n\t0x365c8: 0x6d2d5220, 0x365c9: 0x6d2d5420, 0x365ca: 0x6d2d5620, 0x365cb: 0x6d2d5820,\n\t0x365cc: 0x6d2d5a20, 0x365cd: 0x6d2d5c20, 0x365ce: 0x6d2d5e20, 0x365cf: 0x6d2d6020,\n\t0x365d0: 0x6d2d6220, 0x365d1: 0x6d2d6420, 0x365d2: 0x6d2d6620, 0x365d3: 0x6d2d6820,\n\t0x365d4: 0x6d5a4820, 0x365d5: 0x6d5a4a20, 0x365d6: 0x6d5a4c20, 0x365d7: 0x6d5a4e20,\n\t0x365d8: 0x6d5a5020, 0x365d9: 0x6d5a5220, 0x365da: 0x6d5a5420, 0x365db: 0x6d5a5620,\n\t0x365dc: 0x6d5a5820, 0x365dd: 0x6d5a5a20, 0x365de: 0x6d5a5c20, 0x365df: 0x6d5a5e20,\n\t0x365e0: 0x6d5a6020, 0x365e1: 0x6d5a6220, 0x365e2: 0x6d5a6420, 0x365e3: 0x6d5a6620,\n\t0x365e4: 0x6d5a6820, 0x365e5: 0x6d5a6a20, 0x365e6: 0x6d5a6c20, 0x365e7: 0x6d5a6e20,\n\t0x365e8: 0x6d5a7020, 0x365e9: 0x6d5a7220, 0x365ea: 0x6d5a7420, 0x365eb: 0x6d5a7620,\n\t0x365ec: 0x6d5a7820, 0x365ed: 0x6d5a7a20, 0x365ee: 0x6d5a7c20, 0x365ef: 0x6d5a7e20,\n\t0x365f0: 0x6d5a8020, 0x365f1: 0x6d5a8220, 0x365f2: 0x6d5a8420, 0x365f3: 0x6d5a8620,\n\t0x365f4: 0x6d5a8820, 0x365f5: 0x6d5a8a20, 0x365f6: 0x6d5a8c20, 0x365f7: 0x6d5a8e20,\n\t0x365f8: 0x6d5a9020, 0x365f9: 0x6d5a9220, 0x365fa: 0x6d5a9420, 0x365fb: 0x6d5a9620,\n\t0x365fc: 0x6d5a9820, 0x365fd: 0x6d5a9a20, 0x365fe: 0x6d5a9c20, 0x365ff: 0x6d5a9e20,\n\t// Block 0xd98, offset 0x36600\n\t0x36600: 0x6d850020, 0x36601: 0x6d5aa020, 0x36602: 0x6d850220, 0x36603: 0x6d850420,\n\t0x36604: 0x6d850620, 0x36605: 0x6d850820, 0x36606: 0x6d850a20, 0x36607: 0x6d850c20,\n\t0x36608: 0x6d850e20, 0x36609: 0x6d851020, 0x3660a: 0x6d851220, 0x3660b: 0x6d851420,\n\t0x3660c: 0x6d851620, 0x3660d: 0x6d851820, 0x3660e: 0x6d851a20, 0x3660f: 0x6d851c20,\n\t0x36610: 0x6d851e20, 0x36611: 0x6d852020, 0x36612: 0x6d852220, 0x36613: 0x6d852420,\n\t0x36614: 0x6d852620, 0x36615: 0x6d852820, 0x36616: 0x6d852a20, 0x36617: 0x6d852c20,\n\t0x36618: 0x6d852e20, 0x36619: 0x6d853020, 0x3661a: 0x6d853220, 0x3661b: 0x6d853420,\n\t0x3661c: 0x6d853620, 0x3661d: 0x6d853820, 0x3661e: 0x6d853a20, 0x3661f: 0x6d853c20,\n\t0x36620: 0x6d853e20, 0x36621: 0x6d854020, 0x36622: 0x6d854220, 0x36623: 0x6d854420,\n\t0x36624: 0x6d854620, 0x36625: 0x6d854820, 0x36626: 0x6d854a20, 0x36627: 0x6d854c20,\n\t0x36628: 0x6d854e20, 0x36629: 0x6d855020, 0x3662a: 0x6d855220, 0x3662b: 0x6da9c420,\n\t0x3662c: 0x6da9c620, 0x3662d: 0x6da9c820, 0x3662e: 0x6da9ca20, 0x3662f: 0x6da9cc20,\n\t0x36630: 0x6da9ce20, 0x36631: 0x6da9d020, 0x36632: 0x6da9d220, 0x36633: 0x6da9d420,\n\t0x36634: 0x6da9d620, 0x36635: 0x6da9d820, 0x36636: 0x6da9da20, 0x36637: 0x6da9dc20,\n\t0x36638: 0x6da9de20, 0x36639: 0x6da9e020, 0x3663a: 0x6da9e220, 0x3663b: 0x6da9e420,\n\t0x3663c: 0x6da9e620, 0x3663d: 0x6da9e820, 0x3663e: 0x6da9ea20, 0x3663f: 0x6da9ec20,\n\t// Block 0xd99, offset 0x36640\n\t0x36640: 0x6da9ee20, 0x36641: 0x6da9f020, 0x36642: 0x6da9f220, 0x36643: 0x6da9f420,\n\t0x36644: 0x6da9f620, 0x36645: 0x6da9f820, 0x36646: 0x6da9fa20, 0x36647: 0x6da9fc20,\n\t0x36648: 0x6da9fe20, 0x36649: 0x6daa0020, 0x3664a: 0x6daa0220, 0x3664b: 0x6dcaa020,\n\t0x3664c: 0x6dcaa220, 0x3664d: 0x6dcaa420, 0x3664e: 0x6dcaa620, 0x3664f: 0x6dcaa820,\n\t0x36650: 0x6dcaaa20, 0x36651: 0x6dcaac20, 0x36652: 0x6dcaae20, 0x36653: 0x6dcab020,\n\t0x36654: 0x6dcab220, 0x36655: 0x6dcab420, 0x36656: 0x6dcab620, 0x36657: 0x6dcab820,\n\t0x36658: 0x6dcaba20, 0x36659: 0x6dcabc20, 0x3665a: 0x6dcabe20, 0x3665b: 0x6dcac020,\n\t0x3665c: 0x6dcac220, 0x3665d: 0x6dcac420, 0x3665e: 0x6dcac620, 0x3665f: 0x6dcac820,\n\t0x36660: 0x6dcaca20, 0x36661: 0x6dcacc20, 0x36662: 0x6dcace20, 0x36663: 0x6dcad020,\n\t0x36664: 0x6dcad220, 0x36665: 0x6dcad420, 0x36666: 0x6dcad620, 0x36667: 0x6dcad820,\n\t0x36668: 0x6dcada20, 0x36669: 0x6de63a20, 0x3666a: 0x6de63c20, 0x3666b: 0x6de63e20,\n\t0x3666c: 0x6de64020, 0x3666d: 0x6de64220, 0x3666e: 0x6de64420, 0x3666f: 0x6de64620,\n\t0x36670: 0x6de64820, 0x36671: 0x6de64a20, 0x36672: 0x6de64c20, 0x36673: 0x6de64e20,\n\t0x36674: 0x6dcadc20, 0x36675: 0x6de65020, 0x36676: 0x6de65220, 0x36677: 0x6de65420,\n\t0x36678: 0x6de65620, 0x36679: 0x6de65820, 0x3667a: 0x6de65a20, 0x3667b: 0x6de65c20,\n\t0x3667c: 0x6de65e20, 0x3667d: 0x6de66020, 0x3667e: 0x6dfd0e20, 0x3667f: 0x6dfd1020,\n\t// Block 0xd9a, offset 0x36680\n\t0x36680: 0x6dfd1220, 0x36681: 0x6dfd1420, 0x36682: 0x6dfd1620, 0x36683: 0x6dfd1820,\n\t0x36684: 0x6dfd1a20, 0x36685: 0x6dfd1c20, 0x36686: 0x6dfd1e20, 0x36687: 0x6dfd2020,\n\t0x36688: 0x6dfd2220, 0x36689: 0x6e0fdc20, 0x3668a: 0x6e0fde20, 0x3668b: 0x6e0fe020,\n\t0x3668c: 0x6e0fe220, 0x3668d: 0x6e0fe420, 0x3668e: 0x6e0fe620, 0x3668f: 0x6e0fe820,\n\t0x36690: 0x6e0fea20, 0x36691: 0x6e0fec20, 0x36692: 0x6e0fee20, 0x36693: 0x6e0ff020,\n\t0x36694: 0x6e1ebc20, 0x36695: 0x6e1ebe20, 0x36696: 0x6e1ec020, 0x36697: 0x6e1ec220,\n\t0x36698: 0x6e1ec420, 0x36699: 0x6e2a1e20, 0x3669a: 0x6e2a2020, 0x3669b: 0x6e2a2220,\n\t0x3669c: 0x6e2a2420, 0x3669d: 0x6e2a2620, 0x3669e: 0x6e2a2820, 0x3669f: 0x6e2a2a20,\n\t0x366a0: 0x6e32e020, 0x366a1: 0x6e33a820, 0x366a2: 0x6e3d6c20, 0x366a3: 0x6e391820,\n\t0x366a4: 0x6e391a20, 0x366a5: 0x6e391c20, 0x366a6: 0x6e391e20, 0x366a7: 0x6e392020,\n\t0x366a8: 0x6e3d6e20, 0x366a9: 0x6e42c220, 0x366aa: 0x6c3bae20, 0x366ab: 0x6c57ca20,\n\t0x366ac: 0x6c57cc20, 0x366ad: 0x6c57ce20, 0x366ae: 0x6c57d020, 0x366af: 0x6c57d220,\n\t0x366b0: 0x6c7a7c20, 0x366b1: 0x6c7a7e20, 0x366b2: 0x6c7a8020, 0x366b3: 0x6c7a8220,\n\t0x366b4: 0x6c7a8420, 0x366b5: 0x6ca38220, 0x366b6: 0x6ca38420, 0x366b7: 0x6ca38620,\n\t0x366b8: 0x6ca38820, 0x366b9: 0x6ca38a20, 0x366ba: 0x6cd16220, 0x366bb: 0x6cd16420,\n\t0x366bc: 0x6cd16620, 0x366bd: 0x6cd16820, 0x366be: 0x6cd16a20, 0x366bf: 0x6cd16c20,\n\t// Block 0xd9b, offset 0x366c0\n\t0x366c0: 0x6cd16e20, 0x366c1: 0x6cff4420, 0x366c2: 0x6cff4620, 0x366c3: 0x6cff4820,\n\t0x366c4: 0x6cff4a20, 0x366c5: 0x6cff4c20, 0x366c6: 0x6cff4e20, 0x366c7: 0x6d5ab620,\n\t0x366c8: 0x6d2d8c20, 0x366c9: 0x6d2d8e20, 0x366ca: 0x6d2d9020, 0x366cb: 0x6d2d9220,\n\t0x366cc: 0x6d2d9420, 0x366cd: 0x6d5ab820, 0x366ce: 0x6d856c20, 0x366cf: 0x6d856e20,\n\t0x366d0: 0x6d5aba20, 0x366d1: 0x6d5abc20, 0x366d2: 0x6d5abe20, 0x366d3: 0x6d5ac020,\n\t0x366d4: 0x6d5ac220, 0x366d5: 0x6d5ac420, 0x366d6: 0x6d857020, 0x366d7: 0x6daa1020,\n\t0x366d8: 0x6dcae420, 0x366d9: 0x6dcae620, 0x366da: 0x6dcae820, 0x366db: 0x6e0ff420,\n\t0x366dc: 0x6e0ff620, 0x366dd: 0x6e0ff820, 0x366de: 0x6e1ec820, 0x366df: 0x6e1eca20,\n\t0x366e0: 0x6e2a2e20, 0x366e1: 0x6e2a3020, 0x366e2: 0x6e32e620, 0x366e3: 0x6e3d7220,\n\t0x366e4: 0x6e3d7420, 0x366e5: 0x6e452620, 0x366e6: 0x6c24a420, 0x366e7: 0x6c24a620,\n\t0x366e8: 0x6c3bba20, 0x366e9: 0x6c3bbc20, 0x366ea: 0x6c3bbe20, 0x366eb: 0x6c3bc020,\n\t0x366ec: 0x6c57ec20, 0x366ed: 0x6c57ee20, 0x366ee: 0x6c57f020, 0x366ef: 0x6c57f220,\n\t0x366f0: 0x6c57f420, 0x366f1: 0x6c57f620, 0x366f2: 0x6c57f820, 0x366f3: 0x6c7a9620,\n\t0x366f4: 0x6c7a9820, 0x366f5: 0x6c7a9a20, 0x366f6: 0x6c7a9c20, 0x366f7: 0x6c7a9e20,\n\t0x366f8: 0x6c7aa020, 0x366f9: 0x6c7aa220, 0x366fa: 0x6c7aa420, 0x366fb: 0x6c7aa620,\n\t0x366fc: 0x6c7aa820, 0x366fd: 0x6c7aaa20, 0x366fe: 0x6ca39e20, 0x366ff: 0x6ca3a020,\n\t// Block 0xd9c, offset 0x36700\n\t0x36700: 0x6ca3a220, 0x36701: 0x6ca3a420, 0x36702: 0x6ca3a620, 0x36703: 0x6ca3a820,\n\t0x36704: 0x6ca3aa20, 0x36705: 0x6ca3ac20, 0x36706: 0x6ca3ae20, 0x36707: 0x6ca3b020,\n\t0x36708: 0x6ca3b220, 0x36709: 0x6ca3b420, 0x3670a: 0x6ca3b620, 0x3670b: 0x6ca3b820,\n\t0x3670c: 0x6cd18020, 0x3670d: 0x6cd18220, 0x3670e: 0x6cd18420, 0x3670f: 0x6cd18620,\n\t0x36710: 0x6cd18820, 0x36711: 0x6cd18a20, 0x36712: 0x6cd18c20, 0x36713: 0x6cd18e20,\n\t0x36714: 0x6cd19020, 0x36715: 0x6cd19220, 0x36716: 0x6cd19420, 0x36717: 0x6cd19620,\n\t0x36718: 0x6cd19820, 0x36719: 0x6cd19a20, 0x3671a: 0x6cd19c20, 0x3671b: 0x6cff6820,\n\t0x3671c: 0x6cff6a20, 0x3671d: 0x6cff6c20, 0x3671e: 0x6cff6e20, 0x3671f: 0x6cff7020,\n\t0x36720: 0x6cff7220, 0x36721: 0x6cff7420, 0x36722: 0x6cff7620, 0x36723: 0x6cff7820,\n\t0x36724: 0x6cff7a20, 0x36725: 0x6cff7c20, 0x36726: 0x6cff7e20, 0x36727: 0x6d2dae20,\n\t0x36728: 0x6d2db020, 0x36729: 0x6d2db220, 0x3672a: 0x6d2db420, 0x3672b: 0x6d2db620,\n\t0x3672c: 0x6d2db820, 0x3672d: 0x6d2dba20, 0x3672e: 0x6d2dbc20, 0x3672f: 0x6d2dbe20,\n\t0x36730: 0x6d2dc020, 0x36731: 0x6d2dc220, 0x36732: 0x6cff8020, 0x36733: 0x6d2dc420,\n\t0x36734: 0x6d2dc620, 0x36735: 0x6d2dc820, 0x36736: 0x6d2dca20, 0x36737: 0x6d2dcc20,\n\t0x36738: 0x6d2dce20, 0x36739: 0x6d5ad420, 0x3673a: 0x6d5ad620, 0x3673b: 0x6d5ad820,\n\t0x3673c: 0x6d5ada20, 0x3673d: 0x6d5adc20, 0x3673e: 0x6d5ade20, 0x3673f: 0x6d5ae020,\n\t// Block 0xd9d, offset 0x36740\n\t0x36740: 0x6d5ae220, 0x36741: 0x6d5ae420, 0x36742: 0x6d5ae620, 0x36743: 0x6d5ae820,\n\t0x36744: 0x6d5aea20, 0x36745: 0x6d858420, 0x36746: 0x6d858620, 0x36747: 0x6d858820,\n\t0x36748: 0x6d858a20, 0x36749: 0x6d858c20, 0x3674a: 0x6d858e20, 0x3674b: 0x6d859020,\n\t0x3674c: 0x6d859220, 0x3674d: 0x6d859420, 0x3674e: 0x6daa2820, 0x3674f: 0x6daa2a20,\n\t0x36750: 0x6daa2c20, 0x36751: 0x6daa2e20, 0x36752: 0x6daa3020, 0x36753: 0x6daa3220,\n\t0x36754: 0x6daa3420, 0x36755: 0x6daa3620, 0x36756: 0x6cff8220, 0x36757: 0x6daa3820,\n\t0x36758: 0x6dcaf420, 0x36759: 0x6dcaf620, 0x3675a: 0x6dcaf820, 0x3675b: 0x6dcafa20,\n\t0x3675c: 0x6dcafc20, 0x3675d: 0x6dcafe20, 0x3675e: 0x6dcb0020, 0x3675f: 0x6dcb0220,\n\t0x36760: 0x6de67020, 0x36761: 0x6de67220, 0x36762: 0x6dfd2c20, 0x36763: 0x6dfd2e20,\n\t0x36764: 0x6dfd3020, 0x36765: 0x6dfd3220, 0x36766: 0x6e0ffc20, 0x36767: 0x6e0ffe20,\n\t0x36768: 0x6e100020, 0x36769: 0x6e100220, 0x3676a: 0x6e100420, 0x3676b: 0x6e100620,\n\t0x3676c: 0x6e100820, 0x3676d: 0x6e1ece20, 0x3676e: 0x6e1ed020, 0x3676f: 0x6e1ed220,\n\t0x36770: 0x6e2a3220, 0x36771: 0x6e2a3420, 0x36772: 0x6e2a3620, 0x36773: 0x6e2a3820,\n\t0x36774: 0x6e2a3a20, 0x36775: 0x6e2a3c20, 0x36776: 0x6e32ea20, 0x36777: 0x6e392420,\n\t0x36778: 0x6e407c20, 0x36779: 0x6e443820, 0x3677a: 0x6c0a0020, 0x3677b: 0x6c3bc620,\n\t0x3677c: 0x6c3bc820, 0x3677d: 0x6c3bca20, 0x3677e: 0x6c3bcc20, 0x3677f: 0x6c3bce20,\n\t// Block 0xd9e, offset 0x36780\n\t0x36780: 0x6c3bd020, 0x36781: 0x6c580020, 0x36782: 0x6c580220, 0x36783: 0x6c580420,\n\t0x36784: 0x6c580620, 0x36785: 0x6c7ab020, 0x36786: 0x6cd19e20, 0x36787: 0x6cff8e20,\n\t0x36788: 0x6d2dd420, 0x36789: 0x6d5af220, 0x3678a: 0x6d5af420, 0x3678b: 0x6d859620,\n\t0x3678c: 0x6d859820, 0x3678d: 0x6daa3c20, 0x3678e: 0x6dcb0420, 0x3678f: 0x6dc4c420,\n\t0x36790: 0x6e100a20, 0x36791: 0x6e1ed620, 0x36792: 0x6e42c420, 0x36793: 0x6c0a0420,\n\t0x36794: 0x6c13ce20, 0x36795: 0x6c3bd220, 0x36796: 0x6c3bd420, 0x36797: 0x6c3bd620,\n\t0x36798: 0x6c580c20, 0x36799: 0x6c580e20, 0x3679a: 0x6c581020, 0x3679b: 0x6c581220,\n\t0x3679c: 0x6c581420, 0x3679d: 0x6c581620, 0x3679e: 0x6c581820, 0x3679f: 0x6c7ab420,\n\t0x367a0: 0x6ca3c220, 0x367a1: 0x6ca3c420, 0x367a2: 0x6ca3c620, 0x367a3: 0x6ca3c820,\n\t0x367a4: 0x6ca3ca20, 0x367a5: 0x6ca3cc20, 0x367a6: 0x6cd1aa20, 0x367a7: 0x6cd1ac20,\n\t0x367a8: 0x6cd1ae20, 0x367a9: 0x6cd1b020, 0x367aa: 0x6cd1b220, 0x367ab: 0x6cd1b420,\n\t0x367ac: 0x6cff9020, 0x367ad: 0x6cff9220, 0x367ae: 0x6cff9420, 0x367af: 0x6cff9620,\n\t0x367b0: 0x6cff9820, 0x367b1: 0x6cff9a20, 0x367b2: 0x6d2dd820, 0x367b3: 0x6d2dda20,\n\t0x367b4: 0x6d2ddc20, 0x367b5: 0x6d5af820, 0x367b6: 0x6d859c20, 0x367b7: 0x6daa3e20,\n\t0x367b8: 0x6daa4020, 0x367b9: 0x6daa4220, 0x367ba: 0x6dcb0620, 0x367bb: 0x6de67420,\n\t0x367bc: 0x6de67620, 0x367bd: 0x6de26620, 0x367be: 0x6de67820, 0x367bf: 0x6de67a20,\n\t// Block 0xd9f, offset 0x367c0\n\t0x367c0: 0x6e100c20, 0x367c1: 0x6e1ed820, 0x367c2: 0x6e1eda20, 0x367c3: 0x6c13d220,\n\t0x367c4: 0x6c24ae20, 0x367c5: 0x6c3bde20, 0x367c6: 0x6c3be020, 0x367c7: 0x6c7ab820,\n\t0x367c8: 0x6ca3d020, 0x367c9: 0x6cd1b820, 0x367ca: 0x6d2dde20, 0x367cb: 0x6d5afa20,\n\t0x367cc: 0x6d5afc20, 0x367cd: 0x6dcb0820, 0x367ce: 0x6de67c20, 0x367cf: 0x6e1edc20,\n\t0x367d0: 0x6e392620, 0x367d1: 0x6e2a3e20, 0x367d2: 0x6c0a1620, 0x367d3: 0x6c13d820,\n\t0x367d4: 0x6c13da20, 0x367d5: 0x6c24c220, 0x367d6: 0x6c24c420, 0x367d7: 0x6c24c620,\n\t0x367d8: 0x6c24c820, 0x367d9: 0x6c24ca20, 0x367da: 0x6c24cc20, 0x367db: 0x6c24ce20,\n\t0x367dc: 0x6c24d020, 0x367dd: 0x6c3bfa20, 0x367de: 0x6c3bfc20, 0x367df: 0x6c3bfe20,\n\t0x367e0: 0x6c3c0020, 0x367e1: 0x6c3c0220, 0x367e2: 0x6c3c0420, 0x367e3: 0x6c3c0620,\n\t0x367e4: 0x6c3c0820, 0x367e5: 0x6c3c0a20, 0x367e6: 0x6c3c0c20, 0x367e7: 0x6c3c0e20,\n\t0x367e8: 0x6c3c1020, 0x367e9: 0x6c584020, 0x367ea: 0x6c584220, 0x367eb: 0x6c584420,\n\t0x367ec: 0x6c584620, 0x367ed: 0x6c584820, 0x367ee: 0x6c584a20, 0x367ef: 0x6c584c20,\n\t0x367f0: 0x6c584e20, 0x367f1: 0x6c585020, 0x367f2: 0x6c585220, 0x367f3: 0x6c585420,\n\t0x367f4: 0x6c585620, 0x367f5: 0x6c585820, 0x367f6: 0x6c585a20, 0x367f7: 0x6c585c20,\n\t0x367f8: 0x6c585e20, 0x367f9: 0x6c586020, 0x367fa: 0x6c586220, 0x367fb: 0x6c586420,\n\t0x367fc: 0x6c586620, 0x367fd: 0x6c586820, 0x367fe: 0x6c586a20, 0x367ff: 0x6c586c20,\n\t// Block 0xda0, offset 0x36800\n\t0x36800: 0x6c586e20, 0x36801: 0x6c587020, 0x36802: 0x6c587220, 0x36803: 0x6c587420,\n\t0x36804: 0x6c587620, 0x36805: 0x6c587820, 0x36806: 0x6c587a20, 0x36807: 0x6c587c20,\n\t0x36808: 0x6c587e20, 0x36809: 0x6c588020, 0x3680a: 0x6c588220, 0x3680b: 0x6c588420,\n\t0x3680c: 0x6c7ad620, 0x3680d: 0x6c7ad820, 0x3680e: 0x6c7ada20, 0x3680f: 0x6c7adc20,\n\t0x36810: 0x6c7ade20, 0x36811: 0x6c7ae020, 0x36812: 0x6c7ae220, 0x36813: 0x6c7ae420,\n\t0x36814: 0x6c7ae620, 0x36815: 0x6c7ae820, 0x36816: 0x6c7aea20, 0x36817: 0x6c7aec20,\n\t0x36818: 0x6c7aee20, 0x36819: 0x6c7af020, 0x3681a: 0x6c7af220, 0x3681b: 0x6c7af420,\n\t0x3681c: 0x6c7af620, 0x3681d: 0x6c7af820, 0x3681e: 0x6c7afa20, 0x3681f: 0x6c7afc20,\n\t0x36820: 0x6c7afe20, 0x36821: 0x6c63fc20, 0x36822: 0x6c7b0020, 0x36823: 0x6c7b0220,\n\t0x36824: 0x6c7b0420, 0x36825: 0x6ca3e820, 0x36826: 0x6ca3ea20, 0x36827: 0x6ca3ec20,\n\t0x36828: 0x6ca3ee20, 0x36829: 0x6ca3f020, 0x3682a: 0x6ca3f220, 0x3682b: 0x6ca3f420,\n\t0x3682c: 0x6ca3f620, 0x3682d: 0x6ca3f820, 0x3682e: 0x6ca3fa20, 0x3682f: 0x6ca3fc20,\n\t0x36830: 0x6ca3fe20, 0x36831: 0x6ca40020, 0x36832: 0x6ca40220, 0x36833: 0x6ca40420,\n\t0x36834: 0x6ca40620, 0x36835: 0x6ca40820, 0x36836: 0x6ca40a20, 0x36837: 0x6ca40c20,\n\t0x36838: 0x6ca40e20, 0x36839: 0x6ca41020, 0x3683a: 0x6ca41220, 0x3683b: 0x6cd1d020,\n\t0x3683c: 0x6cd1d220, 0x3683d: 0x6cd1d420, 0x3683e: 0x6cd1d620, 0x3683f: 0x6cd1d820,\n\t// Block 0xda1, offset 0x36840\n\t0x36840: 0x6cd1da20, 0x36841: 0x6cd1dc20, 0x36842: 0x6cd1de20, 0x36843: 0x6cd1e020,\n\t0x36844: 0x6cd1e220, 0x36845: 0x6cd1e420, 0x36846: 0x6cd1e620, 0x36847: 0x6cd1e820,\n\t0x36848: 0x6cd1ea20, 0x36849: 0x6cd1ec20, 0x3684a: 0x6cd1ee20, 0x3684b: 0x6cd1f020,\n\t0x3684c: 0x6cd1f220, 0x3684d: 0x6cd1f420, 0x3684e: 0x6cd1f620, 0x3684f: 0x6cd1f820,\n\t0x36850: 0x6cd1fa20, 0x36851: 0x6cffb620, 0x36852: 0x6cffb820, 0x36853: 0x6cffba20,\n\t0x36854: 0x6cffbc20, 0x36855: 0x6cffbe20, 0x36856: 0x6cffc020, 0x36857: 0x6cffc220,\n\t0x36858: 0x6cffc420, 0x36859: 0x6cffc620, 0x3685a: 0x6cffc820, 0x3685b: 0x6cffca20,\n\t0x3685c: 0x6cffcc20, 0x3685d: 0x6cffce20, 0x3685e: 0x6cffd020, 0x3685f: 0x6cffd220,\n\t0x36860: 0x6cffd420, 0x36861: 0x6cffd620, 0x36862: 0x6cffd820, 0x36863: 0x6cffda20,\n\t0x36864: 0x6cffdc20, 0x36865: 0x6cffde20, 0x36866: 0x6cffe020, 0x36867: 0x6cffe220,\n\t0x36868: 0x6cffe420, 0x36869: 0x6cffe620, 0x3686a: 0x6cffe820, 0x3686b: 0x6d2de820,\n\t0x3686c: 0x6d2dea20, 0x3686d: 0x6d2dec20, 0x3686e: 0x6d2dee20, 0x3686f: 0x6d2df020,\n\t0x36870: 0x6d2df220, 0x36871: 0x6d2df420, 0x36872: 0x6d2df620, 0x36873: 0x6d2df820,\n\t0x36874: 0x6d2dfa20, 0x36875: 0x6d2dfc20, 0x36876: 0x6d2dfe20, 0x36877: 0x6d5b0820,\n\t0x36878: 0x6d5b0a20, 0x36879: 0x6d5b0c20, 0x3687a: 0x6d5b0e20, 0x3687b: 0x6d5b1020,\n\t0x3687c: 0x6d5b1220, 0x3687d: 0x6d5b1420, 0x3687e: 0x6d5b1620, 0x3687f: 0x6d5b1820,\n\t// Block 0xda2, offset 0x36880\n\t0x36880: 0x6d5b1a20, 0x36881: 0x6d5b1c20, 0x36882: 0x6d5b1e20, 0x36883: 0x6d5b2020,\n\t0x36884: 0x6d5b2220, 0x36885: 0x6d5b2420, 0x36886: 0x6d5b2620, 0x36887: 0x6d5b2820,\n\t0x36888: 0x6d85a620, 0x36889: 0x6d85a820, 0x3688a: 0x6d85aa20, 0x3688b: 0x6d85ac20,\n\t0x3688c: 0x6d85ae20, 0x3688d: 0x6d85b020, 0x3688e: 0x6d85b220, 0x3688f: 0x6d75d020,\n\t0x36890: 0x6d85b420, 0x36891: 0x6d85b620, 0x36892: 0x6daa4a20, 0x36893: 0x6daa4c20,\n\t0x36894: 0x6daa4e20, 0x36895: 0x6daa5020, 0x36896: 0x6daa5220, 0x36897: 0x6daa5420,\n\t0x36898: 0x6daa5620, 0x36899: 0x6daa5820, 0x3689a: 0x6daa5a20, 0x3689b: 0x6db99020,\n\t0x3689c: 0x6daa5c20, 0x3689d: 0x6daa5e20, 0x3689e: 0x6daa6020, 0x3689f: 0x6daa6220,\n\t0x368a0: 0x6daa6420, 0x368a1: 0x6daa6620, 0x368a2: 0x6daa6820, 0x368a3: 0x6daa6a20,\n\t0x368a4: 0x6dcb1020, 0x368a5: 0x6dcb1220, 0x368a6: 0x6dcb1420, 0x368a7: 0x6dcb1620,\n\t0x368a8: 0x6dcb1820, 0x368a9: 0x6de68420, 0x368aa: 0x6de68620, 0x368ab: 0x6de68820,\n\t0x368ac: 0x6de68a20, 0x368ad: 0x6de68c20, 0x368ae: 0x6de68e20, 0x368af: 0x6de69020,\n\t0x368b0: 0x6de69220, 0x368b1: 0x6dfd3820, 0x368b2: 0x6de69420, 0x368b3: 0x6dfd3a20,\n\t0x368b4: 0x6dfd3c20, 0x368b5: 0x6dfd3e20, 0x368b6: 0x6dfd4020, 0x368b7: 0x6dfd4220,\n\t0x368b8: 0x6dfd4420, 0x368b9: 0x6e100e20, 0x368ba: 0x6e101020, 0x368bb: 0x6e101220,\n\t0x368bc: 0x6e101420, 0x368bd: 0x6e101620, 0x368be: 0x6e101820, 0x368bf: 0x6e1ee020,\n\t// Block 0xda3, offset 0x368c0\n\t0x368c0: 0x6e1ee220, 0x368c1: 0x6e1ee420, 0x368c2: 0x6e2a4220, 0x368c3: 0x6e2a4420,\n\t0x368c4: 0x6e2a4620, 0x368c5: 0x6e32ec20, 0x368c6: 0x6e392820, 0x368c7: 0x6e3d7620,\n\t0x368c8: 0x6e3d7820, 0x368c9: 0x6e3d7a20, 0x368ca: 0x6e3d7c20, 0x368cb: 0x6e3d7e20,\n\t0x368cc: 0x6e407e20, 0x368cd: 0x6e408020, 0x368ce: 0x6e42c620, 0x368cf: 0x6e452820,\n\t0x368d0: 0x6e463220, 0x368d1: 0x6e468620, 0x368d2: 0x6e46e820, 0x368d3: 0x6c0a1c20,\n\t0x368d4: 0x6c0a1e20, 0x368d5: 0x6c13dc20, 0x368d6: 0x6c3c1620, 0x368d7: 0x6c7b1020,\n\t0x368d8: 0x6c588e20, 0x368d9: 0x6cd20c20, 0x368da: 0x6cd20e20, 0x368db: 0x6cd21020,\n\t0x368dc: 0x6cfff220, 0x368dd: 0x6cfff420, 0x368de: 0x6d5b2e20, 0x368df: 0x6d85be20,\n\t0x368e0: 0x6d85c020, 0x368e1: 0x6d85c220, 0x368e2: 0x6d85c420, 0x368e3: 0x6dcb1e20,\n\t0x368e4: 0x6e1ee620, 0x368e5: 0x6c13de20, 0x368e6: 0x6c24e220, 0x368e7: 0x6c24e420,\n\t0x368e8: 0x6c24e620, 0x368e9: 0x6c24e820, 0x368ea: 0x6c24ea20, 0x368eb: 0x6c24ec20,\n\t0x368ec: 0x6c24ee20, 0x368ed: 0x6c24f020, 0x368ee: 0x6c24f220, 0x368ef: 0x6c3c3220,\n\t0x368f0: 0x6c3c3420, 0x368f1: 0x6c3c3620, 0x368f2: 0x6c3c3820, 0x368f3: 0x6c3c3a20,\n\t0x368f4: 0x6c3c3c20, 0x368f5: 0x6c3c3e20, 0x368f6: 0x6c3c4020, 0x368f7: 0x6c58ba20,\n\t0x368f8: 0x6c58bc20, 0x368f9: 0x6c58be20, 0x368fa: 0x6c58c020, 0x368fb: 0x6c58c220,\n\t0x368fc: 0x6c58c420, 0x368fd: 0x6c58c620, 0x368fe: 0x6c58c820, 0x368ff: 0x6c58ca20,\n\t// Block 0xda4, offset 0x36900\n\t0x36900: 0x6c58cc20, 0x36901: 0x6c58ce20, 0x36902: 0x6c58d020, 0x36903: 0x6c58d220,\n\t0x36904: 0x6c58d420, 0x36905: 0x6c58d620, 0x36906: 0x6c58d820, 0x36907: 0x6c58da20,\n\t0x36908: 0x6c58dc20, 0x36909: 0x6c58de20, 0x3690a: 0x6c58e020, 0x3690b: 0x6c58e220,\n\t0x3690c: 0x6c58e420, 0x3690d: 0x6c58e620, 0x3690e: 0x6c58e820, 0x3690f: 0x6c58ea20,\n\t0x36910: 0x6c58ec20, 0x36911: 0x6c58ee20, 0x36912: 0x6c58f020, 0x36913: 0x6c58f220,\n\t0x36914: 0x6c58f420, 0x36915: 0x6c58f620, 0x36916: 0x6c58f820, 0x36917: 0x6c7b5c20,\n\t0x36918: 0x6c7b5e20, 0x36919: 0x6c7b6020, 0x3691a: 0x6c7b6220, 0x3691b: 0x6c7b6420,\n\t0x3691c: 0x6c7b6620, 0x3691d: 0x6c7b6820, 0x3691e: 0x6c7b6a20, 0x3691f: 0x6c7b6c20,\n\t0x36920: 0x6c7b6e20, 0x36921: 0x6c7b7020, 0x36922: 0x6c7b7220, 0x36923: 0x6c7b7420,\n\t0x36924: 0x6c7b7620, 0x36925: 0x6c7b7820, 0x36926: 0x6c7b7a20, 0x36927: 0x6c7b7c20,\n\t0x36928: 0x6c7b7e20, 0x36929: 0x6c7b8020, 0x3692a: 0x6c7b8220, 0x3692b: 0x6c7b8420,\n\t0x3692c: 0x6c7b8620, 0x3692d: 0x6c7b8820, 0x3692e: 0x6c7b8a20, 0x3692f: 0x6c7b8c20,\n\t0x36930: 0x6c7b8e20, 0x36931: 0x6c7b9020, 0x36932: 0x6c7b9220, 0x36933: 0x6c7b9420,\n\t0x36934: 0x6c7b9620, 0x36935: 0x6c7b9820, 0x36936: 0x6c7b9a20, 0x36937: 0x6ca44820,\n\t0x36938: 0x6ca44a20, 0x36939: 0x6ca44c20, 0x3693a: 0x6ca44e20, 0x3693b: 0x6ca45020,\n\t0x3693c: 0x6ca45220, 0x3693d: 0x6ca45420, 0x3693e: 0x6ca45620, 0x3693f: 0x6ca45820,\n\t// Block 0xda5, offset 0x36940\n\t0x36940: 0x6ca45a20, 0x36941: 0x6ca45c20, 0x36942: 0x6ca45e20, 0x36943: 0x6ca46020,\n\t0x36944: 0x6ca46220, 0x36945: 0x6ca46420, 0x36946: 0x6ca46620, 0x36947: 0x6ca46820,\n\t0x36948: 0x6ca46a20, 0x36949: 0x6ca46c20, 0x3694a: 0x6ca46e20, 0x3694b: 0x6ca47020,\n\t0x3694c: 0x6ca47220, 0x3694d: 0x6ca47420, 0x3694e: 0x6ca47620, 0x3694f: 0x6ca47820,\n\t0x36950: 0x6ca47a20, 0x36951: 0x6ca47c20, 0x36952: 0x6ca47e20, 0x36953: 0x6ca48020,\n\t0x36954: 0x6ca48220, 0x36955: 0x6cd25a20, 0x36956: 0x6cd25c20, 0x36957: 0x6cd25e20,\n\t0x36958: 0x6cd26020, 0x36959: 0x6cd26220, 0x3695a: 0x6cd26420, 0x3695b: 0x6cd26620,\n\t0x3695c: 0x6cd26820, 0x3695d: 0x6cd26a20, 0x3695e: 0x6cd26c20, 0x3695f: 0x6cd26e20,\n\t0x36960: 0x6cd27020, 0x36961: 0x6cd27220, 0x36962: 0x6cd27420, 0x36963: 0x6cd27620,\n\t0x36964: 0x6cd27820, 0x36965: 0x6cd27a20, 0x36966: 0x6cd27c20, 0x36967: 0x6cd27e20,\n\t0x36968: 0x6cd28020, 0x36969: 0x6cd28220, 0x3696a: 0x6cd28420, 0x3696b: 0x6cd28620,\n\t0x3696c: 0x6cd28820, 0x3696d: 0x6cd28a20, 0x3696e: 0x6cd28c20, 0x3696f: 0x6cd28e20,\n\t0x36970: 0x6cd29020, 0x36971: 0x6cd29220, 0x36972: 0x6cd29420, 0x36973: 0x6cd29620,\n\t0x36974: 0x6cd29820, 0x36975: 0x6cd29a20, 0x36976: 0x6cd29c20, 0x36977: 0x6cd29e20,\n\t0x36978: 0x6cd2a020, 0x36979: 0x6cd2a220, 0x3697a: 0x6cd2a420, 0x3697b: 0x6cd2a620,\n\t0x3697c: 0x6cd2a820, 0x3697d: 0x6cd2aa20, 0x3697e: 0x6cd2ac20, 0x3697f: 0x6cd2ae20,\n\t// Block 0xda6, offset 0x36980\n\t0x36980: 0x6cd2b020, 0x36981: 0x6cd2b220, 0x36982: 0x6d003c20, 0x36983: 0x6d003e20,\n\t0x36984: 0x6d004020, 0x36985: 0x6d004220, 0x36986: 0x6d004420, 0x36987: 0x6d004620,\n\t0x36988: 0x6d004820, 0x36989: 0x6d004a20, 0x3698a: 0x6d004c20, 0x3698b: 0x6d004e20,\n\t0x3698c: 0x6d005020, 0x3698d: 0x6d005220, 0x3698e: 0x6d005420, 0x3698f: 0x6d005620,\n\t0x36990: 0x6d005820, 0x36991: 0x6d005a20, 0x36992: 0x6d005c20, 0x36993: 0x6d005e20,\n\t0x36994: 0x6d006020, 0x36995: 0x6d006220, 0x36996: 0x6d006420, 0x36997: 0x6d006620,\n\t0x36998: 0x6d006820, 0x36999: 0x6d006a20, 0x3699a: 0x6d006c20, 0x3699b: 0x6d006e20,\n\t0x3699c: 0x6d007020, 0x3699d: 0x6d007220, 0x3699e: 0x6d007420, 0x3699f: 0x6d007620,\n\t0x369a0: 0x6d007820, 0x369a1: 0x6d007a20, 0x369a2: 0x6d007c20, 0x369a3: 0x6d007e20,\n\t0x369a4: 0x6d008020, 0x369a5: 0x6d008220, 0x369a6: 0x6d008420, 0x369a7: 0x6d008620,\n\t0x369a8: 0x6d008820, 0x369a9: 0x6d008a20, 0x369aa: 0x6d008c20, 0x369ab: 0x6d008e20,\n\t0x369ac: 0x6d009020, 0x369ad: 0x6d009220, 0x369ae: 0x6d009420, 0x369af: 0x6d009620,\n\t0x369b0: 0x6d009820, 0x369b1: 0x6d009a20, 0x369b2: 0x6d009c20, 0x369b3: 0x6d009e20,\n\t0x369b4: 0x6d00a020, 0x369b5: 0x6d00a220, 0x369b6: 0x6d00a420, 0x369b7: 0x6d00a620,\n\t0x369b8: 0x6d00a820, 0x369b9: 0x6d00aa20, 0x369ba: 0x6d00ac20, 0x369bb: 0x6d2e4220,\n\t0x369bc: 0x6d2e4420, 0x369bd: 0x6d2e4620, 0x369be: 0x6d2e4820, 0x369bf: 0x6d2e4a20,\n\t// Block 0xda7, offset 0x369c0\n\t0x369c0: 0x6d2e4c20, 0x369c1: 0x6d2e4e20, 0x369c2: 0x6d2e5020, 0x369c3: 0x6d2e5220,\n\t0x369c4: 0x6d2e5420, 0x369c5: 0x6d2e5620, 0x369c6: 0x6d2e5820, 0x369c7: 0x6d2e5a20,\n\t0x369c8: 0x6d2e5c20, 0x369c9: 0x6d2e5e20, 0x369ca: 0x6d2e6020, 0x369cb: 0x6d2e6220,\n\t0x369cc: 0x6d2e6420, 0x369cd: 0x6d2e6620, 0x369ce: 0x6d2e6820, 0x369cf: 0x6d2e6a20,\n\t0x369d0: 0x6d2e6c20, 0x369d1: 0x6d2e6e20, 0x369d2: 0x6d2e7020, 0x369d3: 0x6d2e7220,\n\t0x369d4: 0x6d2e7420, 0x369d5: 0x6d2e7620, 0x369d6: 0x6d2e7820, 0x369d7: 0x6d2e7a20,\n\t0x369d8: 0x6d2e7c20, 0x369d9: 0x6d2e7e20, 0x369da: 0x6d2e8020, 0x369db: 0x6d2e8220,\n\t0x369dc: 0x6d2e8420, 0x369dd: 0x6d2e8620, 0x369de: 0x6d2e8820, 0x369df: 0x6d2e8a20,\n\t0x369e0: 0x6d2e8c20, 0x369e1: 0x6d2e8e20, 0x369e2: 0x6d2e9020, 0x369e3: 0x6d2e9220,\n\t0x369e4: 0x6d2e9420, 0x369e5: 0x6d2e9620, 0x369e6: 0x6d2e9820, 0x369e7: 0x6d2e9a20,\n\t0x369e8: 0x6d2e9c20, 0x369e9: 0x6d2e9e20, 0x369ea: 0x6d5b6c20, 0x369eb: 0x6d5b6e20,\n\t0x369ec: 0x6d5b7020, 0x369ed: 0x6d5b7220, 0x369ee: 0x6d5b7420, 0x369ef: 0x6d5b7620,\n\t0x369f0: 0x6d5b7820, 0x369f1: 0x6d5b7a20, 0x369f2: 0x6d5b7c20, 0x369f3: 0x6d5b7e20,\n\t0x369f4: 0x6d5b8020, 0x369f5: 0x6d5b8220, 0x369f6: 0x6d5b8420, 0x369f7: 0x6d5b8620,\n\t0x369f8: 0x6d5b8820, 0x369f9: 0x6d5b8a20, 0x369fa: 0x6d5b8c20, 0x369fb: 0x6d5b8e20,\n\t0x369fc: 0x6d5b9020, 0x369fd: 0x6d5b9220, 0x369fe: 0x6d5b9420, 0x369ff: 0x6d5b9620,\n\t// Block 0xda8, offset 0x36a00\n\t0x36a00: 0x6d5b9820, 0x36a01: 0x6d5b9a20, 0x36a02: 0x6d5b9c20, 0x36a03: 0x6d5b9e20,\n\t0x36a04: 0x6d5ba020, 0x36a05: 0x6d5ba220, 0x36a06: 0x6d5ba420, 0x36a07: 0x6d5ba620,\n\t0x36a08: 0x6d5ba820, 0x36a09: 0x6d5baa20, 0x36a0a: 0x6d5bac20, 0x36a0b: 0x6d5bae20,\n\t0x36a0c: 0x6d5bb020, 0x36a0d: 0x6d5bb220, 0x36a0e: 0x6d5bb420, 0x36a0f: 0x6d5bb620,\n\t0x36a10: 0x6d5bb820, 0x36a11: 0x6d5bba20, 0x36a12: 0x6d5bbc20, 0x36a13: 0x6d5bbe20,\n\t0x36a14: 0x6d5bc020, 0x36a15: 0x6d5bc220, 0x36a16: 0x6d5bc420, 0x36a17: 0x6d5bc620,\n\t0x36a18: 0x6d5bc820, 0x36a19: 0x6d5bca20, 0x36a1a: 0x6d5bcc20, 0x36a1b: 0x6d5bce20,\n\t0x36a1c: 0x6d5bd020, 0x36a1d: 0x6d85fe20, 0x36a1e: 0x6d860020, 0x36a1f: 0x6d860220,\n\t0x36a20: 0x6d860420, 0x36a21: 0x6d860620, 0x36a22: 0x6d860820, 0x36a23: 0x6d860a20,\n\t0x36a24: 0x6d860c20, 0x36a25: 0x6d860e20, 0x36a26: 0x6d861020, 0x36a27: 0x6d861220,\n\t0x36a28: 0x6d861420, 0x36a29: 0x6d861620, 0x36a2a: 0x6d861820, 0x36a2b: 0x6d861a20,\n\t0x36a2c: 0x6d861c20, 0x36a2d: 0x6d861e20, 0x36a2e: 0x6d862020, 0x36a2f: 0x6d862220,\n\t0x36a30: 0x6d862420, 0x36a31: 0x6d862620, 0x36a32: 0x6d862820, 0x36a33: 0x6d862a20,\n\t0x36a34: 0x6d862c20, 0x36a35: 0x6d862e20, 0x36a36: 0x6d863020, 0x36a37: 0x6d863220,\n\t0x36a38: 0x6d863420, 0x36a39: 0x6d863620, 0x36a3a: 0x6d863820, 0x36a3b: 0x6d863a20,\n\t0x36a3c: 0x6d863c20, 0x36a3d: 0x6d863e20, 0x36a3e: 0x6d864020, 0x36a3f: 0x6d864220,\n\t// Block 0xda9, offset 0x36a40\n\t0x36a40: 0x6d864420, 0x36a41: 0x6d864620, 0x36a42: 0x6d864820, 0x36a43: 0x6daa9020,\n\t0x36a44: 0x6daa9220, 0x36a45: 0x6daa9420, 0x36a46: 0x6daa9620, 0x36a47: 0x6daa9820,\n\t0x36a48: 0x6daa9a20, 0x36a49: 0x6daa9c20, 0x36a4a: 0x6daa9e20, 0x36a4b: 0x6daaa020,\n\t0x36a4c: 0x6daaa220, 0x36a4d: 0x6daaa420, 0x36a4e: 0x6daaa620, 0x36a4f: 0x6daaa820,\n\t0x36a50: 0x6daaaa20, 0x36a51: 0x6daaac20, 0x36a52: 0x6daaae20, 0x36a53: 0x6daab020,\n\t0x36a54: 0x6daab220, 0x36a55: 0x6daab420, 0x36a56: 0x6daab620, 0x36a57: 0x6daab820,\n\t0x36a58: 0x6daaba20, 0x36a59: 0x6daabc20, 0x36a5a: 0x6daabe20, 0x36a5b: 0x6daac020,\n\t0x36a5c: 0x6daac220, 0x36a5d: 0x6daac420, 0x36a5e: 0x6d864a20, 0x36a5f: 0x6daac620,\n\t0x36a60: 0x6daac820, 0x36a61: 0x6daaca20, 0x36a62: 0x6daacc20, 0x36a63: 0x6daace20,\n\t0x36a64: 0x6daad020, 0x36a65: 0x6daad220, 0x36a66: 0x6daad420, 0x36a67: 0x6daad620,\n\t0x36a68: 0x6daad820, 0x36a69: 0x6daada20, 0x36a6a: 0x6daadc20, 0x36a6b: 0x6daade20,\n\t0x36a6c: 0x6daae020, 0x36a6d: 0x6daae220, 0x36a6e: 0x6daae420, 0x36a6f: 0x6daae620,\n\t0x36a70: 0x6daae820, 0x36a71: 0x6daaea20, 0x36a72: 0x6daaec20, 0x36a73: 0x6daaee20,\n\t0x36a74: 0x6daaf020, 0x36a75: 0x6daaf220, 0x36a76: 0x6daaf420, 0x36a77: 0x6daaf620,\n\t0x36a78: 0x6daaf820, 0x36a79: 0x6daafa20, 0x36a7a: 0x6dcb4c20, 0x36a7b: 0x6dcb4e20,\n\t0x36a7c: 0x6dcb5020, 0x36a7d: 0x6dcb5220, 0x36a7e: 0x6dcb5420, 0x36a7f: 0x6dcb5620,\n\t// Block 0xdaa, offset 0x36a80\n\t0x36a80: 0x6dcb5820, 0x36a81: 0x6dcb5a20, 0x36a82: 0x6dcb5c20, 0x36a83: 0x6dcb5e20,\n\t0x36a84: 0x6dcb6020, 0x36a85: 0x6dcb6220, 0x36a86: 0x6dcb6420, 0x36a87: 0x6dcb6620,\n\t0x36a88: 0x6dcb6820, 0x36a89: 0x6dcb6a20, 0x36a8a: 0x6dcb6c20, 0x36a8b: 0x6dcb6e20,\n\t0x36a8c: 0x6dcb7020, 0x36a8d: 0x6dcb7220, 0x36a8e: 0x6dcb7420, 0x36a8f: 0x6dcb7620,\n\t0x36a90: 0x6dcb7820, 0x36a91: 0x6dcb7a20, 0x36a92: 0x6dcb7c20, 0x36a93: 0x6dcb7e20,\n\t0x36a94: 0x6dcb8020, 0x36a95: 0x6de6a420, 0x36a96: 0x6de6a620, 0x36a97: 0x6de6a820,\n\t0x36a98: 0x6de6aa20, 0x36a99: 0x6de6ac20, 0x36a9a: 0x6de6ae20, 0x36a9b: 0x6de6b020,\n\t0x36a9c: 0x6de6b220, 0x36a9d: 0x6de6b420, 0x36a9e: 0x6de6b620, 0x36a9f: 0x6de6b820,\n\t0x36aa0: 0x6de6ba20, 0x36aa1: 0x6de6bc20, 0x36aa2: 0x6de6be20, 0x36aa3: 0x6de6c020,\n\t0x36aa4: 0x6de6c220, 0x36aa5: 0x6de6c420, 0x36aa6: 0x6de6c620, 0x36aa7: 0x6de6c820,\n\t0x36aa8: 0x6de6ca20, 0x36aa9: 0x6de6cc20, 0x36aaa: 0x6de6ce20, 0x36aab: 0x6de6d020,\n\t0x36aac: 0x6de6d220, 0x36aad: 0x6de6d420, 0x36aae: 0x6de6d620, 0x36aaf: 0x6de6d820,\n\t0x36ab0: 0x6dfd5220, 0x36ab1: 0x6dfd5420, 0x36ab2: 0x6dfd5620, 0x36ab3: 0x6dfd5820,\n\t0x36ab4: 0x6dfd5a20, 0x36ab5: 0x6dfd5c20, 0x36ab6: 0x6dfd5e20, 0x36ab7: 0x6dfd6020,\n\t0x36ab8: 0x6dfd6220, 0x36ab9: 0x6dfd6420, 0x36aba: 0x6dfd6620, 0x36abb: 0x6dfd6820,\n\t0x36abc: 0x6dfd6a20, 0x36abd: 0x6dfd6c20, 0x36abe: 0x6dfd6e20, 0x36abf: 0x6dfd7020,\n\t// Block 0xdab, offset 0x36ac0\n\t0x36ac0: 0x6e102e20, 0x36ac1: 0x6e103020, 0x36ac2: 0x6e103220, 0x36ac3: 0x6e103420,\n\t0x36ac4: 0x6e103620, 0x36ac5: 0x6e103820, 0x36ac6: 0x6e103a20, 0x36ac7: 0x6e103c20,\n\t0x36ac8: 0x6e103e20, 0x36ac9: 0x6e104020, 0x36aca: 0x6e104220, 0x36acb: 0x6e1ef020,\n\t0x36acc: 0x6e1ef220, 0x36acd: 0x6e1ef420, 0x36ace: 0x6e1ef620, 0x36acf: 0x6e1ef820,\n\t0x36ad0: 0x6e2a4e20, 0x36ad1: 0x6e2a5020, 0x36ad2: 0x6e2a5220, 0x36ad3: 0x6e2a5420,\n\t0x36ad4: 0x6e2a5620, 0x36ad5: 0x6e2a5820, 0x36ad6: 0x6e2a5a20, 0x36ad7: 0x6e2a5c20,\n\t0x36ad8: 0x6e32f620, 0x36ad9: 0x6e32f820, 0x36ada: 0x6e32fa20, 0x36adb: 0x6e32fc20,\n\t0x36adc: 0x6e392a20, 0x36add: 0x6e392c20, 0x36ade: 0x6e392e20, 0x36adf: 0x6e3d8220,\n\t0x36ae0: 0x6e3d8420, 0x36ae1: 0x6e3d8620, 0x36ae2: 0x6e408220, 0x36ae3: 0x6e42cc20,\n\t0x36ae4: 0x6e443a20, 0x36ae5: 0x6c24f420, 0x36ae6: 0x6c24f620, 0x36ae7: 0x6c590820,\n\t0x36ae8: 0x6c590a20, 0x36ae9: 0x6c7ba420, 0x36aea: 0x6c7ba620, 0x36aeb: 0x6c7ba820,\n\t0x36aec: 0x6ca48620, 0x36aed: 0x6ca48820, 0x36aee: 0x6ca48a20, 0x36aef: 0x6cd2bc20,\n\t0x36af0: 0x6cd2be20, 0x36af1: 0x6cd2c020, 0x36af2: 0x6cd2c220, 0x36af3: 0x6d00b420,\n\t0x36af4: 0x6d00b620, 0x36af5: 0x6d00b820, 0x36af6: 0x6d2ea620, 0x36af7: 0x6d5bd820,\n\t0x36af8: 0x6d5bda20, 0x36af9: 0x6d864c20, 0x36afa: 0x6d864e20, 0x36afb: 0x6dfd7220,\n\t0x36afc: 0x6d865020, 0x36afd: 0x6c13e420, 0x36afe: 0x6c13e620, 0x36aff: 0x6c250220,\n\t// Block 0xdac, offset 0x36b00\n\t0x36b00: 0x6c250420, 0x36b01: 0x6c250620, 0x36b02: 0x6c3c4820, 0x36b03: 0x6c3c4a20,\n\t0x36b04: 0x6c3c4c20, 0x36b05: 0x6c3c4e20, 0x36b06: 0x6c3c5020, 0x36b07: 0x6c3c5220,\n\t0x36b08: 0x6c591620, 0x36b09: 0x6c591820, 0x36b0a: 0x6c591a20, 0x36b0b: 0x6c591c20,\n\t0x36b0c: 0x6c591e20, 0x36b0d: 0x6c592020, 0x36b0e: 0x6c592220, 0x36b0f: 0x6c592420,\n\t0x36b10: 0x6c592620, 0x36b11: 0x6c592820, 0x36b12: 0x6c592a20, 0x36b13: 0x6c592c20,\n\t0x36b14: 0x6c592e20, 0x36b15: 0x6c593020, 0x36b16: 0x6c593220, 0x36b17: 0x6c593420,\n\t0x36b18: 0x6c7bb620, 0x36b19: 0x6c7bb820, 0x36b1a: 0x6c7bba20, 0x36b1b: 0x6c7bbc20,\n\t0x36b1c: 0x6c7bbe20, 0x36b1d: 0x6c7bc020, 0x36b1e: 0x6c7bc220, 0x36b1f: 0x6c7bc420,\n\t0x36b20: 0x6c7bc620, 0x36b21: 0x6c7bc820, 0x36b22: 0x6c7bca20, 0x36b23: 0x6c7bcc20,\n\t0x36b24: 0x6c7bce20, 0x36b25: 0x6ca49a20, 0x36b26: 0x6ca49c20, 0x36b27: 0x6ca49e20,\n\t0x36b28: 0x6ca4a020, 0x36b29: 0x6ca4a220, 0x36b2a: 0x6ca4a420, 0x36b2b: 0x6ca4a620,\n\t0x36b2c: 0x6cd2d020, 0x36b2d: 0x6cd2d220, 0x36b2e: 0x6cd2d420, 0x36b2f: 0x6cd2d620,\n\t0x36b30: 0x6cd2d820, 0x36b31: 0x6cd2da20, 0x36b32: 0x6cd2dc20, 0x36b33: 0x6cd2de20,\n\t0x36b34: 0x6cd2e020, 0x36b35: 0x6cd2e220, 0x36b36: 0x6cd2e420, 0x36b37: 0x6cd2e620,\n\t0x36b38: 0x6cd2e820, 0x36b39: 0x6d00c220, 0x36b3a: 0x6d00c420, 0x36b3b: 0x6d00c620,\n\t0x36b3c: 0x6d00c820, 0x36b3d: 0x6d00ca20, 0x36b3e: 0x6d00cc20, 0x36b3f: 0x6d00ce20,\n\t// Block 0xdad, offset 0x36b40\n\t0x36b40: 0x6d00d020, 0x36b41: 0x6d00d220, 0x36b42: 0x6d00d420, 0x36b43: 0x6d00d620,\n\t0x36b44: 0x6d00d820, 0x36b45: 0x6d00da20, 0x36b46: 0x6d00dc20, 0x36b47: 0x6d00de20,\n\t0x36b48: 0x6d2eac20, 0x36b49: 0x6d2eae20, 0x36b4a: 0x6d2eb020, 0x36b4b: 0x6d2eb220,\n\t0x36b4c: 0x6d2eb420, 0x36b4d: 0x6d2eb620, 0x36b4e: 0x6d2eb820, 0x36b4f: 0x6d2eba20,\n\t0x36b50: 0x6d2ebc20, 0x36b51: 0x6d2ebe20, 0x36b52: 0x6d2ec020, 0x36b53: 0x6d2ec220,\n\t0x36b54: 0x6d5be820, 0x36b55: 0x6d5bea20, 0x36b56: 0x6d5bec20, 0x36b57: 0x6d5bee20,\n\t0x36b58: 0x6d5bf020, 0x36b59: 0x6d5bf220, 0x36b5a: 0x6d5bf420, 0x36b5b: 0x6d865a20,\n\t0x36b5c: 0x6d865c20, 0x36b5d: 0x6d865e20, 0x36b5e: 0x6d866020, 0x36b5f: 0x6d866220,\n\t0x36b60: 0x6dab0820, 0x36b61: 0x6dab0a20, 0x36b62: 0x6dab0c20, 0x36b63: 0x6dab0e20,\n\t0x36b64: 0x6dab1020, 0x36b65: 0x6dab1220, 0x36b66: 0x6dab1420, 0x36b67: 0x6dcb8a20,\n\t0x36b68: 0x6dcb8c20, 0x36b69: 0x6dcb8e20, 0x36b6a: 0x6dcb9020, 0x36b6b: 0x6de6e020,\n\t0x36b6c: 0x6de6e220, 0x36b6d: 0x6de6e420, 0x36b6e: 0x6de6e620, 0x36b6f: 0x6de6e820,\n\t0x36b70: 0x6de6ea20, 0x36b71: 0x6de6ec20, 0x36b72: 0x6de6ee20, 0x36b73: 0x6de6f020,\n\t0x36b74: 0x6dfd7820, 0x36b75: 0x6dfd7a20, 0x36b76: 0x6dfd7c20, 0x36b77: 0x6dfd7e20,\n\t0x36b78: 0x6e104820, 0x36b79: 0x6e104a20, 0x36b7a: 0x6e104c20, 0x36b7b: 0x6e1efa20,\n\t0x36b7c: 0x6e1efc20, 0x36b7d: 0x6e1efe20, 0x36b7e: 0x6e2a5e20, 0x36b7f: 0x6e2a6020,\n\t// Block 0xdae, offset 0x36b80\n\t0x36b80: 0x6e32fe20, 0x36b81: 0x6e330020, 0x36b82: 0x6e330220, 0x36b83: 0x6e330420,\n\t0x36b84: 0x6e393220, 0x36b85: 0x6e443c20, 0x36b86: 0x6c250820, 0x36b87: 0x6c250a20,\n\t0x36b88: 0x6c3c5820, 0x36b89: 0x6c3c5a20, 0x36b8a: 0x6c3c5c20, 0x36b8b: 0x6c3c5e20,\n\t0x36b8c: 0x6c3c6020, 0x36b8d: 0x6c3c6220, 0x36b8e: 0x6c593e20, 0x36b8f: 0x6c594020,\n\t0x36b90: 0x6c594220, 0x36b91: 0x6c594420, 0x36b92: 0x6c594620, 0x36b93: 0x6c594820,\n\t0x36b94: 0x6c594a20, 0x36b95: 0x6c7bdc20, 0x36b96: 0x6c7bde20, 0x36b97: 0x6c7be020,\n\t0x36b98: 0x6c7be220, 0x36b99: 0x6c7be420, 0x36b9a: 0x6c7be620, 0x36b9b: 0x6c7be820,\n\t0x36b9c: 0x6c7bea20, 0x36b9d: 0x6c7bec20, 0x36b9e: 0x6c7bee20, 0x36b9f: 0x6ca4ae20,\n\t0x36ba0: 0x6ca4b020, 0x36ba1: 0x6ca4b220, 0x36ba2: 0x6ca4b420, 0x36ba3: 0x6ca4b620,\n\t0x36ba4: 0x6ca4b820, 0x36ba5: 0x6ca4ba20, 0x36ba6: 0x6ca4bc20, 0x36ba7: 0x6cd2f420,\n\t0x36ba8: 0x6cd2f620, 0x36ba9: 0x6cd2f820, 0x36baa: 0x6cd2fa20, 0x36bab: 0x6cd2fc20,\n\t0x36bac: 0x6cd2fe20, 0x36bad: 0x6cd30020, 0x36bae: 0x6cd30220, 0x36baf: 0x6d00ec20,\n\t0x36bb0: 0x6cd30420, 0x36bb1: 0x6cd30620, 0x36bb2: 0x6cd30820, 0x36bb3: 0x6d00ee20,\n\t0x36bb4: 0x6d00f020, 0x36bb5: 0x6d00f220, 0x36bb6: 0x6d00f420, 0x36bb7: 0x6d00f620,\n\t0x36bb8: 0x6d00f820, 0x36bb9: 0x6d00fa20, 0x36bba: 0x6d00fc20, 0x36bbb: 0x6d00fe20,\n\t0x36bbc: 0x6d010020, 0x36bbd: 0x6d010220, 0x36bbe: 0x6d010420, 0x36bbf: 0x6d010620,\n\t// Block 0xdaf, offset 0x36bc0\n\t0x36bc0: 0x6d2ed420, 0x36bc1: 0x6d2ed620, 0x36bc2: 0x6d2ed820, 0x36bc3: 0x6d2eda20,\n\t0x36bc4: 0x6d2edc20, 0x36bc5: 0x6d2ede20, 0x36bc6: 0x6d2ee020, 0x36bc7: 0x6d2ee220,\n\t0x36bc8: 0x6d2ee420, 0x36bc9: 0x6d2ee620, 0x36bca: 0x6d2ee820, 0x36bcb: 0x6d2eea20,\n\t0x36bcc: 0x6d2eec20, 0x36bcd: 0x6d5bfe20, 0x36bce: 0x6d5c0020, 0x36bcf: 0x6d5c0220,\n\t0x36bd0: 0x6d5c0420, 0x36bd1: 0x6d5c0620, 0x36bd2: 0x6d5c0820, 0x36bd3: 0x6d5c0a20,\n\t0x36bd4: 0x6d866820, 0x36bd5: 0x6d866a20, 0x36bd6: 0x6d866c20, 0x36bd7: 0x6d866e20,\n\t0x36bd8: 0x6d867020, 0x36bd9: 0x6d867220, 0x36bda: 0x6d867420, 0x36bdb: 0x6d867620,\n\t0x36bdc: 0x6d867820, 0x36bdd: 0x6d867a20, 0x36bde: 0x6d867c20, 0x36bdf: 0x6dab1820,\n\t0x36be0: 0x6dab1a20, 0x36be1: 0x6dab1c20, 0x36be2: 0x6dcb9620, 0x36be3: 0x6dcb9820,\n\t0x36be4: 0x6dcb9a20, 0x36be5: 0x6dcb9c20, 0x36be6: 0x6dcb9e20, 0x36be7: 0x6dcba020,\n\t0x36be8: 0x6dcba220, 0x36be9: 0x6dcba420, 0x36bea: 0x6dcba620, 0x36beb: 0x6de6f220,\n\t0x36bec: 0x6de6f420, 0x36bed: 0x6de6f620, 0x36bee: 0x6de6f820, 0x36bef: 0x6dfd8420,\n\t0x36bf0: 0x6dfd8620, 0x36bf1: 0x6dfd8820, 0x36bf2: 0x6dfd8a20, 0x36bf3: 0x6dfd8c20,\n\t0x36bf4: 0x6e105020, 0x36bf5: 0x6e105220, 0x36bf6: 0x6e1f0220, 0x36bf7: 0x6e1f0420,\n\t0x36bf8: 0x6e1f0620, 0x36bf9: 0x6e330620, 0x36bfa: 0x6e330820, 0x36bfb: 0x6e3c7e20,\n\t0x36bfc: 0x6e3fda20, 0x36bfd: 0x6e450420, 0x36bfe: 0x6e46a420, 0x36bff: 0x6c251020,\n\t// Block 0xdb0, offset 0x36c00\n\t0x36c00: 0x6c251220, 0x36c01: 0x6c3c6a20, 0x36c02: 0x6c3c6c20, 0x36c03: 0x6c3c6e20,\n\t0x36c04: 0x6c3c7020, 0x36c05: 0x6c3c7220, 0x36c06: 0x6c595e20, 0x36c07: 0x6c596020,\n\t0x36c08: 0x6c596220, 0x36c09: 0x6c596420, 0x36c0a: 0x6c596620, 0x36c0b: 0x6c596820,\n\t0x36c0c: 0x6c596a20, 0x36c0d: 0x6c596c20, 0x36c0e: 0x6c7c0820, 0x36c0f: 0x6c7c0a20,\n\t0x36c10: 0x6c7c0c20, 0x36c11: 0x6c7c0e20, 0x36c12: 0x6c7c1020, 0x36c13: 0x6c7c1220,\n\t0x36c14: 0x6c7c1420, 0x36c15: 0x6c7c1620, 0x36c16: 0x6c7c1820, 0x36c17: 0x6c7c1a20,\n\t0x36c18: 0x6c7c1c20, 0x36c19: 0x6c7c1e20, 0x36c1a: 0x6c7c2020, 0x36c1b: 0x6c7c2220,\n\t0x36c1c: 0x6c7c2420, 0x36c1d: 0x6c7c2620, 0x36c1e: 0x6ca4d220, 0x36c1f: 0x6ca4d420,\n\t0x36c20: 0x6ca4d620, 0x36c21: 0x6ca4d820, 0x36c22: 0x6ca4da20, 0x36c23: 0x6ca4dc20,\n\t0x36c24: 0x6ca4de20, 0x36c25: 0x6ca4e020, 0x36c26: 0x6ca4e220, 0x36c27: 0x6ca4e420,\n\t0x36c28: 0x6ca4e620, 0x36c29: 0x6ca4e820, 0x36c2a: 0x6ca4ea20, 0x36c2b: 0x6c7c2820,\n\t0x36c2c: 0x6cd31220, 0x36c2d: 0x6cd31420, 0x36c2e: 0x6cd31620, 0x36c2f: 0x6cd31820,\n\t0x36c30: 0x6cd31a20, 0x36c31: 0x6cd31c20, 0x36c32: 0x6cd31e20, 0x36c33: 0x6cd32020,\n\t0x36c34: 0x6cd32220, 0x36c35: 0x6cd32420, 0x36c36: 0x6cd32620, 0x36c37: 0x6d011220,\n\t0x36c38: 0x6d011420, 0x36c39: 0x6d011620, 0x36c3a: 0x6d011820, 0x36c3b: 0x6d011a20,\n\t0x36c3c: 0x6d011c20, 0x36c3d: 0x6d011e20, 0x36c3e: 0x6d012020, 0x36c3f: 0x6d012220,\n\t// Block 0xdb1, offset 0x36c40\n\t0x36c40: 0x6d012420, 0x36c41: 0x6d012620, 0x36c42: 0x6d012820, 0x36c43: 0x6d2efc20,\n\t0x36c44: 0x6d2efe20, 0x36c45: 0x6d2f0020, 0x36c46: 0x6d2f0220, 0x36c47: 0x6d5c0e20,\n\t0x36c48: 0x6d5c1020, 0x36c49: 0x6d5c1220, 0x36c4a: 0x6d5c1420, 0x36c4b: 0x6d5c1620,\n\t0x36c4c: 0x6d5c1820, 0x36c4d: 0x6d5c1a20, 0x36c4e: 0x6d5c1c20, 0x36c4f: 0x6d5c1e20,\n\t0x36c50: 0x6d5c2020, 0x36c51: 0x6d5c2220, 0x36c52: 0x6d5c2420, 0x36c53: 0x6d868820,\n\t0x36c54: 0x6d868a20, 0x36c55: 0x6d868c20, 0x36c56: 0x6d868e20, 0x36c57: 0x6d869020,\n\t0x36c58: 0x6d869220, 0x36c59: 0x6d869420, 0x36c5a: 0x6d869620, 0x36c5b: 0x6d869820,\n\t0x36c5c: 0x6d869a20, 0x36c5d: 0x6d869c20, 0x36c5e: 0x6d869e20, 0x36c5f: 0x6d86a020,\n\t0x36c60: 0x6d86a220, 0x36c61: 0x6d86a420, 0x36c62: 0x6d86a620, 0x36c63: 0x6d86a820,\n\t0x36c64: 0x6d86aa20, 0x36c65: 0x6dab2620, 0x36c66: 0x6dab2820, 0x36c67: 0x6dab2a20,\n\t0x36c68: 0x6dab2c20, 0x36c69: 0x6dab2e20, 0x36c6a: 0x6dab3020, 0x36c6b: 0x6dab3220,\n\t0x36c6c: 0x6dab3420, 0x36c6d: 0x6dab3620, 0x36c6e: 0x6dab3820, 0x36c6f: 0x6dab3a20,\n\t0x36c70: 0x6dab3c20, 0x36c71: 0x6dab3e20, 0x36c72: 0x6dab4020, 0x36c73: 0x6da02a20,\n\t0x36c74: 0x6dab4220, 0x36c75: 0x6dab4420, 0x36c76: 0x6dab4620, 0x36c77: 0x6dab4820,\n\t0x36c78: 0x6dcbac20, 0x36c79: 0x6dcbae20, 0x36c7a: 0x6dcbb020, 0x36c7b: 0x6de6fc20,\n\t0x36c7c: 0x6dcbb220, 0x36c7d: 0x6dcbb420, 0x36c7e: 0x6dcbb620, 0x36c7f: 0x6dcbb820,\n\t// Block 0xdb2, offset 0x36c80\n\t0x36c80: 0x6dcbba20, 0x36c81: 0x6de6fe20, 0x36c82: 0x6de70020, 0x36c83: 0x6de70220,\n\t0x36c84: 0x6de70420, 0x36c85: 0x6de70620, 0x36c86: 0x6de70820, 0x36c87: 0x6dfd9020,\n\t0x36c88: 0x6dfd9220, 0x36c89: 0x6dfd9420, 0x36c8a: 0x6dfd9620, 0x36c8b: 0x6dfd9820,\n\t0x36c8c: 0x6dfd9a20, 0x36c8d: 0x6dfd9c20, 0x36c8e: 0x6dfd9e20, 0x36c8f: 0x6dfda020,\n\t0x36c90: 0x6dfda220, 0x36c91: 0x6dfda420, 0x36c92: 0x6e105620, 0x36c93: 0x6e1f0a20,\n\t0x36c94: 0x6e1f0c20, 0x36c95: 0x6e1f0e20, 0x36c96: 0x6e1f1020, 0x36c97: 0x6e1f1220,\n\t0x36c98: 0x6e2a6220, 0x36c99: 0x6e2a6420, 0x36c9a: 0x6e330a20, 0x36c9b: 0x6e330c20,\n\t0x36c9c: 0x6e330e20, 0x36c9d: 0x6e331020, 0x36c9e: 0x6e2a6620, 0x36c9f: 0x6e393420,\n\t0x36ca0: 0x6e393620, 0x36ca1: 0x6e3d8820, 0x36ca2: 0x6e452c20, 0x36ca3: 0x6e468820,\n\t0x36ca4: 0x6c13e820, 0x36ca5: 0x6c13ea20, 0x36ca6: 0x6c251a20, 0x36ca7: 0x6c251c20,\n\t0x36ca8: 0x6c251e20, 0x36ca9: 0x6c252020, 0x36caa: 0x6c252220, 0x36cab: 0x6c252420,\n\t0x36cac: 0x6c252620, 0x36cad: 0x6c252820, 0x36cae: 0x6c252a20, 0x36caf: 0x6c252c20,\n\t0x36cb0: 0x6c252e20, 0x36cb1: 0x6c253020, 0x36cb2: 0x6c3c8c20, 0x36cb3: 0x6c3c8e20,\n\t0x36cb4: 0x6c3c9020, 0x36cb5: 0x6c3c9220, 0x36cb6: 0x6c3c9420, 0x36cb7: 0x6c3c9620,\n\t0x36cb8: 0x6c3c9820, 0x36cb9: 0x6c3c9a20, 0x36cba: 0x6c3c9c20, 0x36cbb: 0x6c3c9e20,\n\t0x36cbc: 0x6c3ca020, 0x36cbd: 0x6c3ca220, 0x36cbe: 0x6c3ca420, 0x36cbf: 0x6c3ca620,\n\t// Block 0xdb3, offset 0x36cc0\n\t0x36cc0: 0x6c3ca820, 0x36cc1: 0x6c3caa20, 0x36cc2: 0x6c3cac20, 0x36cc3: 0x6c59b820,\n\t0x36cc4: 0x6c59ba20, 0x36cc5: 0x6c59bc20, 0x36cc6: 0x6c59be20, 0x36cc7: 0x6c59c020,\n\t0x36cc8: 0x6c59c220, 0x36cc9: 0x6c59c420, 0x36cca: 0x6c59c620, 0x36ccb: 0x6c59c820,\n\t0x36ccc: 0x6c59ca20, 0x36ccd: 0x6c59cc20, 0x36cce: 0x6c59ce20, 0x36ccf: 0x6c59d020,\n\t0x36cd0: 0x6c59d220, 0x36cd1: 0x6c59d420, 0x36cd2: 0x6c59d620, 0x36cd3: 0x6c59d820,\n\t0x36cd4: 0x6c59da20, 0x36cd5: 0x6c59dc20, 0x36cd6: 0x6c59de20, 0x36cd7: 0x6c59e020,\n\t0x36cd8: 0x6c59e220, 0x36cd9: 0x6c59e420, 0x36cda: 0x6c59e620, 0x36cdb: 0x6c59e820,\n\t0x36cdc: 0x6c59ea20, 0x36cdd: 0x6c59ec20, 0x36cde: 0x6c59ee20, 0x36cdf: 0x6c59f020,\n\t0x36ce0: 0x6c59f220, 0x36ce1: 0x6c59f420, 0x36ce2: 0x6c59f620, 0x36ce3: 0x6c59f820,\n\t0x36ce4: 0x6c59fa20, 0x36ce5: 0x6c59fc20, 0x36ce6: 0x6c59fe20, 0x36ce7: 0x6c5a0020,\n\t0x36ce8: 0x6c5a0220, 0x36ce9: 0x6c5a0420, 0x36cea: 0x6c5a0620, 0x36ceb: 0x6c5a0820,\n\t0x36cec: 0x6c5a0a20, 0x36ced: 0x6c5a0c20, 0x36cee: 0x6c5a0e20, 0x36cef: 0x6c5a1020,\n\t0x36cf0: 0x6c5a1220, 0x36cf1: 0x6c7c7a20, 0x36cf2: 0x6c7c7c20, 0x36cf3: 0x6c7c7e20,\n\t0x36cf4: 0x6c7c8020, 0x36cf5: 0x6c7c8220, 0x36cf6: 0x6c7c8420, 0x36cf7: 0x6c7c8620,\n\t0x36cf8: 0x6c7c8820, 0x36cf9: 0x6c7c8a20, 0x36cfa: 0x6c7c8c20, 0x36cfb: 0x6c7c8e20,\n\t0x36cfc: 0x6c7c9020, 0x36cfd: 0x6c7c9220, 0x36cfe: 0x6c7c9420, 0x36cff: 0x6c7c9620,\n\t// Block 0xdb4, offset 0x36d00\n\t0x36d00: 0x6c7c9820, 0x36d01: 0x6c7c9a20, 0x36d02: 0x6c7c9c20, 0x36d03: 0x6c7c9e20,\n\t0x36d04: 0x6c7ca020, 0x36d05: 0x6c7ca220, 0x36d06: 0x6c7ca420, 0x36d07: 0x6c7ca620,\n\t0x36d08: 0x6c7ca820, 0x36d09: 0x6c7caa20, 0x36d0a: 0x6c7cac20, 0x36d0b: 0x6c7cae20,\n\t0x36d0c: 0x6c7cb020, 0x36d0d: 0x6c7cb220, 0x36d0e: 0x6c7cb420, 0x36d0f: 0x6c7cb620,\n\t0x36d10: 0x6c7cb820, 0x36d11: 0x6c7cba20, 0x36d12: 0x6c7cbc20, 0x36d13: 0x6c7cbe20,\n\t0x36d14: 0x6c7cc020, 0x36d15: 0x6c7cc220, 0x36d16: 0x6c7cc420, 0x36d17: 0x6c7cc620,\n\t0x36d18: 0x6c7cc820, 0x36d19: 0x6c7cca20, 0x36d1a: 0x6ca52a20, 0x36d1b: 0x6ca52c20,\n\t0x36d1c: 0x6ca52e20, 0x36d1d: 0x6ca53020, 0x36d1e: 0x6ca53220, 0x36d1f: 0x6ca53420,\n\t0x36d20: 0x6ca53620, 0x36d21: 0x6ca53820, 0x36d22: 0x6ca53a20, 0x36d23: 0x6ca53c20,\n\t0x36d24: 0x6ca53e20, 0x36d25: 0x6ca54020, 0x36d26: 0x6ca54220, 0x36d27: 0x6ca54420,\n\t0x36d28: 0x6ca54620, 0x36d29: 0x6ca54820, 0x36d2a: 0x6ca54a20, 0x36d2b: 0x6ca54c20,\n\t0x36d2c: 0x6ca54e20, 0x36d2d: 0x6ca55020, 0x36d2e: 0x6ca55220, 0x36d2f: 0x6ca55420,\n\t0x36d30: 0x6ca55620, 0x36d31: 0x6ca55820, 0x36d32: 0x6ca55a20, 0x36d33: 0x6ca55c20,\n\t0x36d34: 0x6ca55e20, 0x36d35: 0x6ca56020, 0x36d36: 0x6ca56220, 0x36d37: 0x6ca56420,\n\t0x36d38: 0x6ca56620, 0x36d39: 0x6ca56820, 0x36d3a: 0x6ca56a20, 0x36d3b: 0x6ca56c20,\n\t0x36d3c: 0x6ca56e20, 0x36d3d: 0x6ca57020, 0x36d3e: 0x6ca57220, 0x36d3f: 0x6ca57420,\n\t// Block 0xdb5, offset 0x36d40\n\t0x36d40: 0x6ca57620, 0x36d41: 0x6ca57820, 0x36d42: 0x6ca57a20, 0x36d43: 0x6ca57c20,\n\t0x36d44: 0x6ca57e20, 0x36d45: 0x6ca58020, 0x36d46: 0x6ca58220, 0x36d47: 0x6ca58420,\n\t0x36d48: 0x6ca58620, 0x36d49: 0x6ca58820, 0x36d4a: 0x6cd37220, 0x36d4b: 0x6cd37420,\n\t0x36d4c: 0x6cd37620, 0x36d4d: 0x6cd37820, 0x36d4e: 0x6cd37a20, 0x36d4f: 0x6cd37c20,\n\t0x36d50: 0x6cd37e20, 0x36d51: 0x6cd38020, 0x36d52: 0x6cd38220, 0x36d53: 0x6cd38420,\n\t0x36d54: 0x6cd38620, 0x36d55: 0x6cd38820, 0x36d56: 0x6cd38a20, 0x36d57: 0x6cd38c20,\n\t0x36d58: 0x6cd38e20, 0x36d59: 0x6cd39020, 0x36d5a: 0x6cd39220, 0x36d5b: 0x6cd39420,\n\t0x36d5c: 0x6cd39620, 0x36d5d: 0x6cd39820, 0x36d5e: 0x6cd39a20, 0x36d5f: 0x6cd39c20,\n\t0x36d60: 0x6cd39e20, 0x36d61: 0x6cd3a020, 0x36d62: 0x6cd3a220, 0x36d63: 0x6cd3a420,\n\t0x36d64: 0x6cd3a620, 0x36d65: 0x6cd3a820, 0x36d66: 0x6cd3aa20, 0x36d67: 0x6cd3ac20,\n\t0x36d68: 0x6cd3ae20, 0x36d69: 0x6cd3b020, 0x36d6a: 0x6cd3b220, 0x36d6b: 0x6cd3b420,\n\t0x36d6c: 0x6cd3b620, 0x36d6d: 0x6cd3b820, 0x36d6e: 0x6cd3ba20, 0x36d6f: 0x6cd3bc20,\n\t0x36d70: 0x6cd3be20, 0x36d71: 0x6cd3c020, 0x36d72: 0x6cd3c220, 0x36d73: 0x6cd3c420,\n\t0x36d74: 0x6cd3c620, 0x36d75: 0x6cd3c820, 0x36d76: 0x6cd3ca20, 0x36d77: 0x6cd3cc20,\n\t0x36d78: 0x6cd3ce20, 0x36d79: 0x6cd3d020, 0x36d7a: 0x6cd3d220, 0x36d7b: 0x6cd3d420,\n\t0x36d7c: 0x6cd3d620, 0x36d7d: 0x6cd3d820, 0x36d7e: 0x6cd3da20, 0x36d7f: 0x6cd3dc20,\n\t// Block 0xdb6, offset 0x36d80\n\t0x36d80: 0x6cd3de20, 0x36d81: 0x6cd3e020, 0x36d82: 0x6cd3e220, 0x36d83: 0x6cd3e420,\n\t0x36d84: 0x6cd3e620, 0x36d85: 0x6d017e20, 0x36d86: 0x6cd3e820, 0x36d87: 0x6cd3ea20,\n\t0x36d88: 0x6cd3ec20, 0x36d89: 0x6d018020, 0x36d8a: 0x6d018220, 0x36d8b: 0x6d018420,\n\t0x36d8c: 0x6d018620, 0x36d8d: 0x6d018820, 0x36d8e: 0x6d018a20, 0x36d8f: 0x6d018c20,\n\t0x36d90: 0x6d018e20, 0x36d91: 0x6d019020, 0x36d92: 0x6d019220, 0x36d93: 0x6d019420,\n\t0x36d94: 0x6d019620, 0x36d95: 0x6d019820, 0x36d96: 0x6d019a20, 0x36d97: 0x6d019c20,\n\t0x36d98: 0x6d019e20, 0x36d99: 0x6d01a020, 0x36d9a: 0x6d01a220, 0x36d9b: 0x6d01a420,\n\t0x36d9c: 0x6d01a620, 0x36d9d: 0x6d01a820, 0x36d9e: 0x6d01aa20, 0x36d9f: 0x6d01ac20,\n\t0x36da0: 0x6d01ae20, 0x36da1: 0x6d01b020, 0x36da2: 0x6d01b220, 0x36da3: 0x6d01b420,\n\t0x36da4: 0x6d01b620, 0x36da5: 0x6d01b820, 0x36da6: 0x6d01ba20, 0x36da7: 0x6d01bc20,\n\t0x36da8: 0x6d01be20, 0x36da9: 0x6d01c020, 0x36daa: 0x6d01c220, 0x36dab: 0x6cd3ee20,\n\t0x36dac: 0x6d01c420, 0x36dad: 0x6d01c620, 0x36dae: 0x6d01c820, 0x36daf: 0x6d01ca20,\n\t0x36db0: 0x6d01cc20, 0x36db1: 0x6d01ce20, 0x36db2: 0x6d01d020, 0x36db3: 0x6d01d220,\n\t0x36db4: 0x6cf5b420, 0x36db5: 0x6d01d420, 0x36db6: 0x6d01d620, 0x36db7: 0x6d01d820,\n\t0x36db8: 0x6d01da20, 0x36db9: 0x6d01dc20, 0x36dba: 0x6d01de20, 0x36dbb: 0x6d01e020,\n\t0x36dbc: 0x6d01e220, 0x36dbd: 0x6d01e420, 0x36dbe: 0x6d01e620, 0x36dbf: 0x6d01e820,\n\t// Block 0xdb7, offset 0x36dc0\n\t0x36dc0: 0x6d01ea20, 0x36dc1: 0x6d01ec20, 0x36dc2: 0x6d2f5220, 0x36dc3: 0x6d2f5420,\n\t0x36dc4: 0x6d2f5620, 0x36dc5: 0x6d2f5820, 0x36dc6: 0x6d2f5a20, 0x36dc7: 0x6d2f5c20,\n\t0x36dc8: 0x6d2f5e20, 0x36dc9: 0x6d2f6020, 0x36dca: 0x6d2f6220, 0x36dcb: 0x6d2f6420,\n\t0x36dcc: 0x6d2f6620, 0x36dcd: 0x6d2f6820, 0x36dce: 0x6d2f6a20, 0x36dcf: 0x6d2f6c20,\n\t0x36dd0: 0x6d2f6e20, 0x36dd1: 0x6d2f7020, 0x36dd2: 0x6d2f7220, 0x36dd3: 0x6d2f7420,\n\t0x36dd4: 0x6d2f7620, 0x36dd5: 0x6d2f7820, 0x36dd6: 0x6d2f7a20, 0x36dd7: 0x6d2f7c20,\n\t0x36dd8: 0x6d2f7e20, 0x36dd9: 0x6d2f8020, 0x36dda: 0x6d2f8220, 0x36ddb: 0x6d2f8420,\n\t0x36ddc: 0x6d2f8620, 0x36ddd: 0x6d2f8820, 0x36dde: 0x6d2f8a20, 0x36ddf: 0x6d2f8c20,\n\t0x36de0: 0x6d2f8e20, 0x36de1: 0x6d2f9020, 0x36de2: 0x6d2f9220, 0x36de3: 0x6d2f9420,\n\t0x36de4: 0x6d2f9620, 0x36de5: 0x6d2f9820, 0x36de6: 0x6d2f9a20, 0x36de7: 0x6d2f9c20,\n\t0x36de8: 0x6d2f9e20, 0x36de9: 0x6d2fa020, 0x36dea: 0x6d2fa220, 0x36deb: 0x6d2fa420,\n\t0x36dec: 0x6d2fa620, 0x36ded: 0x6d2fa820, 0x36dee: 0x6d2faa20, 0x36def: 0x6d2fac20,\n\t0x36df0: 0x6d2fae20, 0x36df1: 0x6d2fb020, 0x36df2: 0x6d2fb220, 0x36df3: 0x6d2fb420,\n\t0x36df4: 0x6d2fb620, 0x36df5: 0x6d2fb820, 0x36df6: 0x6d2fba20, 0x36df7: 0x6d2fbc20,\n\t0x36df8: 0x6d2fbe20, 0x36df9: 0x6d2fc020, 0x36dfa: 0x6d2fc220, 0x36dfb: 0x6d2fc420,\n\t0x36dfc: 0x6d5c5820, 0x36dfd: 0x6d5c5a20, 0x36dfe: 0x6d5c5c20, 0x36dff: 0x6d5c5e20,\n\t// Block 0xdb8, offset 0x36e00\n\t0x36e00: 0x6d5c6020, 0x36e01: 0x6d5c6220, 0x36e02: 0x6d5c6420, 0x36e03: 0x6d5c6620,\n\t0x36e04: 0x6d5c6820, 0x36e05: 0x6d5c6a20, 0x36e06: 0x6d5c6c20, 0x36e07: 0x6d5c6e20,\n\t0x36e08: 0x6d5c7020, 0x36e09: 0x6d5c7220, 0x36e0a: 0x6d5c7420, 0x36e0b: 0x6d5c7620,\n\t0x36e0c: 0x6d5c7820, 0x36e0d: 0x6d5c7a20, 0x36e0e: 0x6d5c7c20, 0x36e0f: 0x6d5c7e20,\n\t0x36e10: 0x6d5c8020, 0x36e11: 0x6d5c8220, 0x36e12: 0x6d5c8420, 0x36e13: 0x6d5c8620,\n\t0x36e14: 0x6d5c8820, 0x36e15: 0x6d5c8a20, 0x36e16: 0x6d5c8c20, 0x36e17: 0x6d5c8e20,\n\t0x36e18: 0x6d5c9020, 0x36e19: 0x6d5c9220, 0x36e1a: 0x6d5c9420, 0x36e1b: 0x6d5c9620,\n\t0x36e1c: 0x6d5c9820, 0x36e1d: 0x6d5c9a20, 0x36e1e: 0x6d5c9c20, 0x36e1f: 0x6d5c9e20,\n\t0x36e20: 0x6d5ca020, 0x36e21: 0x6d5ca220, 0x36e22: 0x6d5ca420, 0x36e23: 0x6d5ca620,\n\t0x36e24: 0x6d5ca820, 0x36e25: 0x6d5caa20, 0x36e26: 0x6d5cac20, 0x36e27: 0x6d5cae20,\n\t0x36e28: 0x6d5cb020, 0x36e29: 0x6d5cb220, 0x36e2a: 0x6d5cb420, 0x36e2b: 0x6d5cb620,\n\t0x36e2c: 0x6d5cb820, 0x36e2d: 0x6d5cba20, 0x36e2e: 0x6d5cbc20, 0x36e2f: 0x6d5cbe20,\n\t0x36e30: 0x6d5cc020, 0x36e31: 0x6d5cc220, 0x36e32: 0x6d5cc420, 0x36e33: 0x6d5cc620,\n\t0x36e34: 0x6d86e020, 0x36e35: 0x6d86e220, 0x36e36: 0x6d86e420, 0x36e37: 0x6d86e620,\n\t0x36e38: 0x6d86e820, 0x36e39: 0x6d86ea20, 0x36e3a: 0x6d86ec20, 0x36e3b: 0x6d86ee20,\n\t0x36e3c: 0x6d86f020, 0x36e3d: 0x6d86f220, 0x36e3e: 0x6d86f420, 0x36e3f: 0x6d86f620,\n\t// Block 0xdb9, offset 0x36e40\n\t0x36e40: 0x6d86f820, 0x36e41: 0x6d86fa20, 0x36e42: 0x6d86fc20, 0x36e43: 0x6d86fe20,\n\t0x36e44: 0x6d870020, 0x36e45: 0x6d870220, 0x36e46: 0x6d870420, 0x36e47: 0x6d5cc820,\n\t0x36e48: 0x6d870620, 0x36e49: 0x6d870820, 0x36e4a: 0x6d870a20, 0x36e4b: 0x6d870c20,\n\t0x36e4c: 0x6d870e20, 0x36e4d: 0x6d871020, 0x36e4e: 0x6d871220, 0x36e4f: 0x6d871420,\n\t0x36e50: 0x6d871620, 0x36e51: 0x6d871820, 0x36e52: 0x6d871a20, 0x36e53: 0x6d871c20,\n\t0x36e54: 0x6d871e20, 0x36e55: 0x6d872020, 0x36e56: 0x6d872220, 0x36e57: 0x6d872420,\n\t0x36e58: 0x6d872620, 0x36e59: 0x6d872820, 0x36e5a: 0x6d872a20, 0x36e5b: 0x6d872c20,\n\t0x36e5c: 0x6d872e20, 0x36e5d: 0x6d873020, 0x36e5e: 0x6d873220, 0x36e5f: 0x6d873420,\n\t0x36e60: 0x6d873620, 0x36e61: 0x6d873820, 0x36e62: 0x6d873a20, 0x36e63: 0x6d873c20,\n\t0x36e64: 0x6d873e20, 0x36e65: 0x6d874020, 0x36e66: 0x6d874220, 0x36e67: 0x6d874420,\n\t0x36e68: 0x6d874620, 0x36e69: 0x6d874820, 0x36e6a: 0x6dab8620, 0x36e6b: 0x6dab8820,\n\t0x36e6c: 0x6dab8a20, 0x36e6d: 0x6dab8c20, 0x36e6e: 0x6dab8e20, 0x36e6f: 0x6dab9020,\n\t0x36e70: 0x6dab9220, 0x36e71: 0x6dab9420, 0x36e72: 0x6dab9620, 0x36e73: 0x6dab9820,\n\t0x36e74: 0x6dab9a20, 0x36e75: 0x6dab9c20, 0x36e76: 0x6dab9e20, 0x36e77: 0x6daba020,\n\t0x36e78: 0x6daba220, 0x36e79: 0x6daba420, 0x36e7a: 0x6daba620, 0x36e7b: 0x6daba820,\n\t0x36e7c: 0x6dabaa20, 0x36e7d: 0x6dabac20, 0x36e7e: 0x6dabae20, 0x36e7f: 0x6dabb020,\n\t// Block 0xdba, offset 0x36e80\n\t0x36e80: 0x6dabb220, 0x36e81: 0x6dabb420, 0x36e82: 0x6dabb620, 0x36e83: 0x6dabb820,\n\t0x36e84: 0x6dabba20, 0x36e85: 0x6dabbc20, 0x36e86: 0x6dabbe20, 0x36e87: 0x6dabc020,\n\t0x36e88: 0x6dabc220, 0x36e89: 0x6dabc420, 0x36e8a: 0x6dabc620, 0x36e8b: 0x6dabc820,\n\t0x36e8c: 0x6dabca20, 0x36e8d: 0x6dabcc20, 0x36e8e: 0x6dabce20, 0x36e8f: 0x6dabd020,\n\t0x36e90: 0x6dabd220, 0x36e91: 0x6dabd420, 0x36e92: 0x6dabd620, 0x36e93: 0x6dabd820,\n\t0x36e94: 0x6dabda20, 0x36e95: 0x6dabdc20, 0x36e96: 0x6d874a20, 0x36e97: 0x6dabde20,\n\t0x36e98: 0x6dcbe220, 0x36e99: 0x6dcbe420, 0x36e9a: 0x6dcbe620, 0x36e9b: 0x6dcbe820,\n\t0x36e9c: 0x6dcbea20, 0x36e9d: 0x6dcbec20, 0x36e9e: 0x6dcbee20, 0x36e9f: 0x6dcbf020,\n\t0x36ea0: 0x6dcbf220, 0x36ea1: 0x6dcbf420, 0x36ea2: 0x6dcbf620, 0x36ea3: 0x6dcbf820,\n\t0x36ea4: 0x6dcbfa20, 0x36ea5: 0x6dcbfc20, 0x36ea6: 0x6dcbfe20, 0x36ea7: 0x6dcc0020,\n\t0x36ea8: 0x6dcc0220, 0x36ea9: 0x6dcc0420, 0x36eaa: 0x6dcc0620, 0x36eab: 0x6dcc0820,\n\t0x36eac: 0x6dcc0a20, 0x36ead: 0x6dcc0c20, 0x36eae: 0x6dcc0e20, 0x36eaf: 0x6dcc1020,\n\t0x36eb0: 0x6dcc1220, 0x36eb1: 0x6dcc1420, 0x36eb2: 0x6dcc1620, 0x36eb3: 0x6dcc1820,\n\t0x36eb4: 0x6dcc1a20, 0x36eb5: 0x6dcc1c20, 0x36eb6: 0x6dcc1e20, 0x36eb7: 0x6dcc2020,\n\t0x36eb8: 0x6dcc2220, 0x36eb9: 0x6dcc2420, 0x36eba: 0x6dcc2620, 0x36ebb: 0x6dcc2820,\n\t0x36ebc: 0x6dcc2a20, 0x36ebd: 0x6dcc2c20, 0x36ebe: 0x6dcc2e20, 0x36ebf: 0x6de71c20,\n\t// Block 0xdbb, offset 0x36ec0\n\t0x36ec0: 0x6de71e20, 0x36ec1: 0x6de72020, 0x36ec2: 0x6de72220, 0x36ec3: 0x6de72420,\n\t0x36ec4: 0x6de72620, 0x36ec5: 0x6de72820, 0x36ec6: 0x6de72a20, 0x36ec7: 0x6de72c20,\n\t0x36ec8: 0x6de72e20, 0x36ec9: 0x6de73020, 0x36eca: 0x6de73220, 0x36ecb: 0x6de73420,\n\t0x36ecc: 0x6de73620, 0x36ecd: 0x6de73820, 0x36ece: 0x6de73a20, 0x36ecf: 0x6de73c20,\n\t0x36ed0: 0x6de73e20, 0x36ed1: 0x6de74020, 0x36ed2: 0x6de74220, 0x36ed3: 0x6de74420,\n\t0x36ed4: 0x6de74620, 0x36ed5: 0x6df25c20, 0x36ed6: 0x6de74820, 0x36ed7: 0x6de74a20,\n\t0x36ed8: 0x6de74c20, 0x36ed9: 0x6de74e20, 0x36eda: 0x6dfdb820, 0x36edb: 0x6dfdba20,\n\t0x36edc: 0x6dfdbc20, 0x36edd: 0x6dfdbe20, 0x36ede: 0x6dfdc020, 0x36edf: 0x6dfdc220,\n\t0x36ee0: 0x6dfdc420, 0x36ee1: 0x6dfdc620, 0x36ee2: 0x6dfdc820, 0x36ee3: 0x6dfdca20,\n\t0x36ee4: 0x6dfdcc20, 0x36ee5: 0x6dfdce20, 0x36ee6: 0x6dfdd020, 0x36ee7: 0x6dfdd220,\n\t0x36ee8: 0x6dfdd420, 0x36ee9: 0x6dfdd620, 0x36eea: 0x6dfdd820, 0x36eeb: 0x6dfdda20,\n\t0x36eec: 0x6dfddc20, 0x36eed: 0x6e106820, 0x36eee: 0x6e106a20, 0x36eef: 0x6e106c20,\n\t0x36ef0: 0x6e106e20, 0x36ef1: 0x6e107020, 0x36ef2: 0x6e107220, 0x36ef3: 0x6e107420,\n\t0x36ef4: 0x6e107620, 0x36ef5: 0x6e107820, 0x36ef6: 0x6e107a20, 0x36ef7: 0x6e107c20,\n\t0x36ef8: 0x6e107e20, 0x36ef9: 0x6e108020, 0x36efa: 0x6e1f1820, 0x36efb: 0x6e1f1a20,\n\t0x36efc: 0x6e1f1c20, 0x36efd: 0x6e1f1e20, 0x36efe: 0x6e1f2020, 0x36eff: 0x6e1f2220,\n\t// Block 0xdbc, offset 0x36f00\n\t0x36f00: 0x6e1f2420, 0x36f01: 0x6e1f2620, 0x36f02: 0x6e108220, 0x36f03: 0x6e1f2820,\n\t0x36f04: 0x6e21a620, 0x36f05: 0x6e1f2a20, 0x36f06: 0x6e1f2c20, 0x36f07: 0x6e1f2e20,\n\t0x36f08: 0x6e2a6e20, 0x36f09: 0x6e2a7020, 0x36f0a: 0x6e2a7220, 0x36f0b: 0x6e2a7420,\n\t0x36f0c: 0x6e2a7620, 0x36f0d: 0x6e2a7820, 0x36f0e: 0x6e2a7a20, 0x36f0f: 0x6e331820,\n\t0x36f10: 0x6e331a20, 0x36f11: 0x6e331c20, 0x36f12: 0x6e331e20, 0x36f13: 0x6e393e20,\n\t0x36f14: 0x6e3d8c20, 0x36f15: 0x6e3d8e20, 0x36f16: 0x6e3d9020, 0x36f17: 0x6e3d9220,\n\t0x36f18: 0x6e3d9420, 0x36f19: 0x6e408420, 0x36f1a: 0x6e408620, 0x36f1b: 0x6e42ce20,\n\t0x36f1c: 0x6e444220, 0x36f1d: 0x6c13ec20, 0x36f1e: 0x6c3cb420, 0x36f1f: 0x6c5a1e20,\n\t0x36f20: 0x6c5a2020, 0x36f21: 0x6c7cd820, 0x36f22: 0x6c7cda20, 0x36f23: 0x6c7cdc20,\n\t0x36f24: 0x6c7cde20, 0x36f25: 0x6c7ce020, 0x36f26: 0x6c7ce220, 0x36f27: 0x6ca59620,\n\t0x36f28: 0x6ca59820, 0x36f29: 0x6ca59a20, 0x36f2a: 0x6cd3f820, 0x36f2b: 0x6cd3fa20,\n\t0x36f2c: 0x6cd3fc20, 0x36f2d: 0x6cd3fe20, 0x36f2e: 0x6cd40020, 0x36f2f: 0x6cd40220,\n\t0x36f30: 0x6cd40420, 0x36f31: 0x6cd40620, 0x36f32: 0x6d01fe20, 0x36f33: 0x6d020020,\n\t0x36f34: 0x6d020220, 0x36f35: 0x6d020420, 0x36f36: 0x6d2fd020, 0x36f37: 0x6d2fd220,\n\t0x36f38: 0x6d2fd420, 0x36f39: 0x6d2fd620, 0x36f3a: 0x6d2fd820, 0x36f3b: 0x6d2fda20,\n\t0x36f3c: 0x6d2fdc20, 0x36f3d: 0x6d2fde20, 0x36f3e: 0x6d2fe020, 0x36f3f: 0x6d2fe220,\n\t// Block 0xdbd, offset 0x36f40\n\t0x36f40: 0x6d2fe420, 0x36f41: 0x6d2fe620, 0x36f42: 0x6d5cd220, 0x36f43: 0x6d5cd420,\n\t0x36f44: 0x6d5cd620, 0x36f45: 0x6d5cd820, 0x36f46: 0x6d5cda20, 0x36f47: 0x6d5cdc20,\n\t0x36f48: 0x6d5cde20, 0x36f49: 0x6d5ce020, 0x36f4a: 0x6d875420, 0x36f4b: 0x6d875620,\n\t0x36f4c: 0x6d875820, 0x36f4d: 0x6d875a20, 0x36f4e: 0x6dcc3020, 0x36f4f: 0x6dabf020,\n\t0x36f50: 0x6dabf220, 0x36f51: 0x6dabf420, 0x36f52: 0x6dabf620, 0x36f53: 0x6dcc3220,\n\t0x36f54: 0x6dcc3420, 0x36f55: 0x6dcc3620, 0x36f56: 0x6de75220, 0x36f57: 0x6de75420,\n\t0x36f58: 0x6de75620, 0x36f59: 0x6de75820, 0x36f5a: 0x6de75a20, 0x36f5b: 0x6de75c20,\n\t0x36f5c: 0x6de75e20, 0x36f5d: 0x6e108820, 0x36f5e: 0x6dfde220, 0x36f5f: 0x6dfde420,\n\t0x36f60: 0x6dfde620, 0x36f61: 0x6e2a7c20, 0x36f62: 0x6e2a7e20, 0x36f63: 0x6e2a8020,\n\t0x36f64: 0x6e46ca20, 0x36f65: 0x6e46ea20, 0x36f66: 0x6c253420, 0x36f67: 0x6c253620,\n\t0x36f68: 0x6c3cba20, 0x36f69: 0x6c5a2a20, 0x36f6a: 0x6c5a2c20, 0x36f6b: 0x6c5a2e20,\n\t0x36f6c: 0x6c5a3020, 0x36f6d: 0x6c5a3220, 0x36f6e: 0x6c5a3420, 0x36f6f: 0x6c5a3620,\n\t0x36f70: 0x6c7cea20, 0x36f71: 0x6c7cec20, 0x36f72: 0x6c7cee20, 0x36f73: 0x6c7cf020,\n\t0x36f74: 0x6c7cf220, 0x36f75: 0x6c7cf420, 0x36f76: 0x6c7cf620, 0x36f77: 0x6c7cf820,\n\t0x36f78: 0x6c7cfa20, 0x36f79: 0x6ca5a220, 0x36f7a: 0x6ca5a420, 0x36f7b: 0x6ca5a620,\n\t0x36f7c: 0x6ca5a820, 0x36f7d: 0x6ca5aa20, 0x36f7e: 0x6ca5ac20, 0x36f7f: 0x6ca5ae20,\n\t// Block 0xdbe, offset 0x36f80\n\t0x36f80: 0x6ca5b020, 0x36f81: 0x6ca5b220, 0x36f82: 0x6ca5b420, 0x36f83: 0x6ca5b620,\n\t0x36f84: 0x6ca5b820, 0x36f85: 0x6ca5ba20, 0x36f86: 0x6ca5bc20, 0x36f87: 0x6ca5be20,\n\t0x36f88: 0x6ca5c020, 0x36f89: 0x6ca5c220, 0x36f8a: 0x6ca5c420, 0x36f8b: 0x6ca5c620,\n\t0x36f8c: 0x6ca5c820, 0x36f8d: 0x6ca5ca20, 0x36f8e: 0x6cd41220, 0x36f8f: 0x6cd41420,\n\t0x36f90: 0x6cd41620, 0x36f91: 0x6cd41820, 0x36f92: 0x6cd41a20, 0x36f93: 0x6cd41c20,\n\t0x36f94: 0x6cd41e20, 0x36f95: 0x6cd42020, 0x36f96: 0x6cd42220, 0x36f97: 0x6cd42420,\n\t0x36f98: 0x6d020a20, 0x36f99: 0x6d020c20, 0x36f9a: 0x6d020e20, 0x36f9b: 0x6d021020,\n\t0x36f9c: 0x6d021220, 0x36f9d: 0x6d021420, 0x36f9e: 0x6d021620, 0x36f9f: 0x6d021820,\n\t0x36fa0: 0x6d021a20, 0x36fa1: 0x6d021c20, 0x36fa2: 0x6d021e20, 0x36fa3: 0x6d022020,\n\t0x36fa4: 0x6d022220, 0x36fa5: 0x6d022420, 0x36fa6: 0x6d022620, 0x36fa7: 0x6d022820,\n\t0x36fa8: 0x6d022a20, 0x36fa9: 0x6d022c20, 0x36faa: 0x6d2fea20, 0x36fab: 0x6d2fec20,\n\t0x36fac: 0x6d2fee20, 0x36fad: 0x6d2ff020, 0x36fae: 0x6d2ff220, 0x36faf: 0x6d2ff420,\n\t0x36fb0: 0x6d2ff620, 0x36fb1: 0x6d2ff820, 0x36fb2: 0x6d5ce220, 0x36fb3: 0x6d5ce420,\n\t0x36fb4: 0x6d5ce620, 0x36fb5: 0x6d5ce820, 0x36fb6: 0x6d5cea20, 0x36fb7: 0x6d5cec20,\n\t0x36fb8: 0x6d5cee20, 0x36fb9: 0x6d5cf020, 0x36fba: 0x6d5cf220, 0x36fbb: 0x6d875c20,\n\t0x36fbc: 0x6d875e20, 0x36fbd: 0x6d876020, 0x36fbe: 0x6d876220, 0x36fbf: 0x6d876420,\n\t// Block 0xdbf, offset 0x36fc0\n\t0x36fc0: 0x6dabfc20, 0x36fc1: 0x6dabfe20, 0x36fc2: 0x6dac0020, 0x36fc3: 0x6dac0220,\n\t0x36fc4: 0x6dac0420, 0x36fc5: 0x6dac0620, 0x36fc6: 0x6dac0820, 0x36fc7: 0x6dcc3820,\n\t0x36fc8: 0x6dcc3a20, 0x36fc9: 0x6dcc3c20, 0x36fca: 0x6dcc3e20, 0x36fcb: 0x6dcc4020,\n\t0x36fcc: 0x6de76220, 0x36fcd: 0x6de76420, 0x36fce: 0x6de76620, 0x36fcf: 0x6de76820,\n\t0x36fd0: 0x6e2a8220, 0x36fd1: 0x6e1f3020, 0x36fd2: 0x6e1f3220, 0x36fd3: 0x6e2a8420,\n\t0x36fd4: 0x6e2a8620, 0x36fd5: 0x6c13f020, 0x36fd6: 0x6c13f220, 0x36fd7: 0x6c254020,\n\t0x36fd8: 0x6c254220, 0x36fd9: 0x6c254420, 0x36fda: 0x6c254620, 0x36fdb: 0x6c254820,\n\t0x36fdc: 0x6c254a20, 0x36fdd: 0x6c3cd620, 0x36fde: 0x6c3cd820, 0x36fdf: 0x6c3cda20,\n\t0x36fe0: 0x6c3cdc20, 0x36fe1: 0x6c3cde20, 0x36fe2: 0x6c3ce020, 0x36fe3: 0x6c3ce220,\n\t0x36fe4: 0x6c3ce420, 0x36fe5: 0x6c3ce620, 0x36fe6: 0x6c3ce820, 0x36fe7: 0x6c3cea20,\n\t0x36fe8: 0x6c3cec20, 0x36fe9: 0x6c5a7e20, 0x36fea: 0x6c5a8020, 0x36feb: 0x6c5a8220,\n\t0x36fec: 0x6c5a8420, 0x36fed: 0x6c5a8620, 0x36fee: 0x6c5a8820, 0x36fef: 0x6c5a8a20,\n\t0x36ff0: 0x6c5a8c20, 0x36ff1: 0x6c5a8e20, 0x36ff2: 0x6c5a9020, 0x36ff3: 0x6c5a9220,\n\t0x36ff4: 0x6c5a9420, 0x36ff5: 0x6c5a9620, 0x36ff6: 0x6c5a9820, 0x36ff7: 0x6c5a9a20,\n\t0x36ff8: 0x6c5a9c20, 0x36ff9: 0x6c5a9e20, 0x36ffa: 0x6c5aa020, 0x36ffb: 0x6c5aa220,\n\t0x36ffc: 0x6c5aa420, 0x36ffd: 0x6c5aa620, 0x36ffe: 0x6c5aa820, 0x36fff: 0x6c5aaa20,\n\t// Block 0xdc0, offset 0x37000\n\t0x37000: 0x6c5aac20, 0x37001: 0x6c5aae20, 0x37002: 0x6c5ab020, 0x37003: 0x6c5ab220,\n\t0x37004: 0x6c5ab420, 0x37005: 0x6c5ab620, 0x37006: 0x6c7d5a20, 0x37007: 0x6c7d5c20,\n\t0x37008: 0x6c7d5e20, 0x37009: 0x6c7d6020, 0x3700a: 0x6c7d6220, 0x3700b: 0x6c7d6420,\n\t0x3700c: 0x6c7d6620, 0x3700d: 0x6c7d6820, 0x3700e: 0x6c7d6a20, 0x3700f: 0x6c7d6c20,\n\t0x37010: 0x6c7d6e20, 0x37011: 0x6c7d7020, 0x37012: 0x6c7d7220, 0x37013: 0x6c7d7420,\n\t0x37014: 0x6c7d7620, 0x37015: 0x6c7d7820, 0x37016: 0x6c7d7a20, 0x37017: 0x6c7d7c20,\n\t0x37018: 0x6c7d7e20, 0x37019: 0x6c7d8020, 0x3701a: 0x6c7d8220, 0x3701b: 0x6c7d8420,\n\t0x3701c: 0x6c7d8620, 0x3701d: 0x6c7d8820, 0x3701e: 0x6c7d8a20, 0x3701f: 0x6c7d8c20,\n\t0x37020: 0x6c7d8e20, 0x37021: 0x6c7d9020, 0x37022: 0x6c7d9220, 0x37023: 0x6c7d9420,\n\t0x37024: 0x6c7d9620, 0x37025: 0x6c7d9820, 0x37026: 0x6c7d9a20, 0x37027: 0x6c7d9c20,\n\t0x37028: 0x6c7d9e20, 0x37029: 0x6c7da020, 0x3702a: 0x6c7da220, 0x3702b: 0x6c7da420,\n\t0x3702c: 0x6c7da620, 0x3702d: 0x6c7da820, 0x3702e: 0x6c7daa20, 0x3702f: 0x6c7dac20,\n\t0x37030: 0x6c7dae20, 0x37031: 0x6c7db020, 0x37032: 0x6c7db220, 0x37033: 0x6ca61220,\n\t0x37034: 0x6ca61420, 0x37035: 0x6ca61620, 0x37036: 0x6ca61820, 0x37037: 0x6ca61a20,\n\t0x37038: 0x6ca61c20, 0x37039: 0x6ca61e20, 0x3703a: 0x6ca62020, 0x3703b: 0x6ca62220,\n\t0x3703c: 0x6ca62420, 0x3703d: 0x6ca62620, 0x3703e: 0x6ca62820, 0x3703f: 0x6ca62a20,\n\t// Block 0xdc1, offset 0x37040\n\t0x37040: 0x6ca62c20, 0x37041: 0x6ca62e20, 0x37042: 0x6ca63020, 0x37043: 0x6ca63220,\n\t0x37044: 0x6ca63420, 0x37045: 0x6ca63620, 0x37046: 0x6ca63820, 0x37047: 0x6ca63a20,\n\t0x37048: 0x6ca63c20, 0x37049: 0x6ca63e20, 0x3704a: 0x6ca64020, 0x3704b: 0x6ca64220,\n\t0x3704c: 0x6ca64420, 0x3704d: 0x6ca64620, 0x3704e: 0x6ca64820, 0x3704f: 0x6ca64a20,\n\t0x37050: 0x6ca64c20, 0x37051: 0x6ca64e20, 0x37052: 0x6ca65020, 0x37053: 0x6ca65220,\n\t0x37054: 0x6ca65420, 0x37055: 0x6ca65620, 0x37056: 0x6ca65820, 0x37057: 0x6ca65a20,\n\t0x37058: 0x6ca65c20, 0x37059: 0x6ca65e20, 0x3705a: 0x6ca66020, 0x3705b: 0x6ca66220,\n\t0x3705c: 0x6ca66420, 0x3705d: 0x6ca66620, 0x3705e: 0x6ca66820, 0x3705f: 0x6ca66a20,\n\t0x37060: 0x6ca66c20, 0x37061: 0x6ca66e20, 0x37062: 0x6ca67020, 0x37063: 0x6ca67220,\n\t0x37064: 0x6ca67420, 0x37065: 0x6ca67620, 0x37066: 0x6ca67820, 0x37067: 0x6ca67a20,\n\t0x37068: 0x6ca67c20, 0x37069: 0x6ca67e20, 0x3706a: 0x6cd46c20, 0x3706b: 0x6cd46e20,\n\t0x3706c: 0x6cd47020, 0x3706d: 0x6cd47220, 0x3706e: 0x6cd47420, 0x3706f: 0x6cd47620,\n\t0x37070: 0x6cd47820, 0x37071: 0x6cd47a20, 0x37072: 0x6cd47c20, 0x37073: 0x6cd47e20,\n\t0x37074: 0x6cd48020, 0x37075: 0x6cd48220, 0x37076: 0x6cd48420, 0x37077: 0x6cd48620,\n\t0x37078: 0x6cd48820, 0x37079: 0x6cd48a20, 0x3707a: 0x6cd48c20, 0x3707b: 0x6cd48e20,\n\t0x3707c: 0x6cd49020, 0x3707d: 0x6cd49220, 0x3707e: 0x6cd49420, 0x3707f: 0x6cd49620,\n\t// Block 0xdc2, offset 0x37080\n\t0x37080: 0x6cd49820, 0x37081: 0x6cd49a20, 0x37082: 0x6cd49c20, 0x37083: 0x6cd49e20,\n\t0x37084: 0x6cd4a020, 0x37085: 0x6cd4a220, 0x37086: 0x6cd4a420, 0x37087: 0x6cd4a620,\n\t0x37088: 0x6cd4a820, 0x37089: 0x6cd4aa20, 0x3708a: 0x6d029c20, 0x3708b: 0x6d029e20,\n\t0x3708c: 0x6d02a020, 0x3708d: 0x6d02a220, 0x3708e: 0x6d02a420, 0x3708f: 0x6d02a620,\n\t0x37090: 0x6d02a820, 0x37091: 0x6d02aa20, 0x37092: 0x6d02ac20, 0x37093: 0x6d02ae20,\n\t0x37094: 0x6d02b020, 0x37095: 0x6d02b220, 0x37096: 0x6d02b420, 0x37097: 0x6d02b620,\n\t0x37098: 0x6d02b820, 0x37099: 0x6d02ba20, 0x3709a: 0x6d02bc20, 0x3709b: 0x6d02be20,\n\t0x3709c: 0x6d02c020, 0x3709d: 0x6d02c220, 0x3709e: 0x6d02c420, 0x3709f: 0x6d02c620,\n\t0x370a0: 0x6d02c820, 0x370a1: 0x6d02ca20, 0x370a2: 0x6d02cc20, 0x370a3: 0x6d02ce20,\n\t0x370a4: 0x6d02d020, 0x370a5: 0x6d02d220, 0x370a6: 0x6d02d420, 0x370a7: 0x6d02d620,\n\t0x370a8: 0x6d02d820, 0x370a9: 0x6d02da20, 0x370aa: 0x6d02dc20, 0x370ab: 0x6d02de20,\n\t0x370ac: 0x6d02e020, 0x370ad: 0x6d02e220, 0x370ae: 0x6d02e420, 0x370af: 0x6d02e620,\n\t0x370b0: 0x6d02e820, 0x370b1: 0x6d02ea20, 0x370b2: 0x6d02ec20, 0x370b3: 0x6d02ee20,\n\t0x370b4: 0x6d02f020, 0x370b5: 0x6d02f220, 0x370b6: 0x6d02f420, 0x370b7: 0x6d02f620,\n\t0x370b8: 0x6d02f820, 0x370b9: 0x6d02fa20, 0x370ba: 0x6d304a20, 0x370bb: 0x6d304c20,\n\t0x370bc: 0x6d304e20, 0x370bd: 0x6d305020, 0x370be: 0x6d305220, 0x370bf: 0x6d305420,\n\t// Block 0xdc3, offset 0x370c0\n\t0x370c0: 0x6d305620, 0x370c1: 0x6d305820, 0x370c2: 0x6d305a20, 0x370c3: 0x6d305c20,\n\t0x370c4: 0x6d305e20, 0x370c5: 0x6d306020, 0x370c6: 0x6d306220, 0x370c7: 0x6d306420,\n\t0x370c8: 0x6d306620, 0x370c9: 0x6d306820, 0x370ca: 0x6d306a20, 0x370cb: 0x6d306c20,\n\t0x370cc: 0x6d306e20, 0x370cd: 0x6d307020, 0x370ce: 0x6d307220, 0x370cf: 0x6d307420,\n\t0x370d0: 0x6d307620, 0x370d1: 0x6d307820, 0x370d2: 0x6d307a20, 0x370d3: 0x6d307c20,\n\t0x370d4: 0x6d307e20, 0x370d5: 0x6d308020, 0x370d6: 0x6d308220, 0x370d7: 0x6d308420,\n\t0x370d8: 0x6d308620, 0x370d9: 0x6d308820, 0x370da: 0x6d308a20, 0x370db: 0x6d308c20,\n\t0x370dc: 0x6d308e20, 0x370dd: 0x6d309020, 0x370de: 0x6d309220, 0x370df: 0x6d309420,\n\t0x370e0: 0x6d309620, 0x370e1: 0x6d309820, 0x370e2: 0x6d309a20, 0x370e3: 0x6d309c20,\n\t0x370e4: 0x6d309e20, 0x370e5: 0x6d30a020, 0x370e6: 0x6d30a220, 0x370e7: 0x6d30a420,\n\t0x370e8: 0x6d30a620, 0x370e9: 0x6d30a820, 0x370ea: 0x6d30aa20, 0x370eb: 0x6d30ac20,\n\t0x370ec: 0x6d30ae20, 0x370ed: 0x6d5d4420, 0x370ee: 0x6d5d4620, 0x370ef: 0x6d5d4820,\n\t0x370f0: 0x6d5d4a20, 0x370f1: 0x6d5d4c20, 0x370f2: 0x6d5d4e20, 0x370f3: 0x6d5d5020,\n\t0x370f4: 0x6d5d5220, 0x370f5: 0x6d5d5420, 0x370f6: 0x6d5d5620, 0x370f7: 0x6d5d5820,\n\t0x370f8: 0x6d5d5a20, 0x370f9: 0x6d5d5c20, 0x370fa: 0x6d5d5e20, 0x370fb: 0x6d5d6020,\n\t0x370fc: 0x6d5d6220, 0x370fd: 0x6d5d6420, 0x370fe: 0x6d5d6620, 0x370ff: 0x6d5d6820,\n\t// Block 0xdc4, offset 0x37100\n\t0x37100: 0x6d5d6a20, 0x37101: 0x6d5d6c20, 0x37102: 0x6d5d6e20, 0x37103: 0x6d5d7020,\n\t0x37104: 0x6d5d7220, 0x37105: 0x6d5d7420, 0x37106: 0x6d5d7620, 0x37107: 0x6d5d7820,\n\t0x37108: 0x6d5d7a20, 0x37109: 0x6d5d7c20, 0x3710a: 0x6d5d7e20, 0x3710b: 0x6d5d8020,\n\t0x3710c: 0x6d87a020, 0x3710d: 0x6d87a220, 0x3710e: 0x6d87a420, 0x3710f: 0x6d87a620,\n\t0x37110: 0x6d87a820, 0x37111: 0x6d87aa20, 0x37112: 0x6d87ac20, 0x37113: 0x6d87ae20,\n\t0x37114: 0x6d87b020, 0x37115: 0x6d87b220, 0x37116: 0x6d87b420, 0x37117: 0x6d87b620,\n\t0x37118: 0x6d87b820, 0x37119: 0x6d87ba20, 0x3711a: 0x6d87bc20, 0x3711b: 0x6d87be20,\n\t0x3711c: 0x6d87c020, 0x3711d: 0x6d87c220, 0x3711e: 0x6d87c420, 0x3711f: 0x6d87c620,\n\t0x37120: 0x6d87c820, 0x37121: 0x6d87ca20, 0x37122: 0x6d87cc20, 0x37123: 0x6d87ce20,\n\t0x37124: 0x6d87d020, 0x37125: 0x6d87d220, 0x37126: 0x6d87d420, 0x37127: 0x6d87d620,\n\t0x37128: 0x6d87d820, 0x37129: 0x6d87da20, 0x3712a: 0x6d87dc20, 0x3712b: 0x6d87de20,\n\t0x3712c: 0x6d87e020, 0x3712d: 0x6d87e220, 0x3712e: 0x6d87e420, 0x3712f: 0x6d87e620,\n\t0x37130: 0x6dac4a20, 0x37131: 0x6dac4c20, 0x37132: 0x6dac4e20, 0x37133: 0x6dac5020,\n\t0x37134: 0x6dac5220, 0x37135: 0x6dac5420, 0x37136: 0x6dac5620, 0x37137: 0x6dac5820,\n\t0x37138: 0x6dac5a20, 0x37139: 0x6dac5c20, 0x3713a: 0x6dac5e20, 0x3713b: 0x6dac6020,\n\t0x3713c: 0x6dac6220, 0x3713d: 0x6dac6420, 0x3713e: 0x6dac6620, 0x3713f: 0x6dac6820,\n\t// Block 0xdc5, offset 0x37140\n\t0x37140: 0x6dac6a20, 0x37141: 0x6dac6c20, 0x37142: 0x6dac6e20, 0x37143: 0x6dac7020,\n\t0x37144: 0x6dac7220, 0x37145: 0x6dac7420, 0x37146: 0x6dac7620, 0x37147: 0x6dac7820,\n\t0x37148: 0x6dac7a20, 0x37149: 0x6dac7c20, 0x3714a: 0x6dac7e20, 0x3714b: 0x6dac8020,\n\t0x3714c: 0x6dac8220, 0x3714d: 0x6dac8420, 0x3714e: 0x6dac8620, 0x3714f: 0x6dac8820,\n\t0x37150: 0x6dac8a20, 0x37151: 0x6dac8c20, 0x37152: 0x6dac8e20, 0x37153: 0x6dac9020,\n\t0x37154: 0x6dac9220, 0x37155: 0x6dac9420, 0x37156: 0x6dac9620, 0x37157: 0x6dcc7420,\n\t0x37158: 0x6dcc7620, 0x37159: 0x6dcc7820, 0x3715a: 0x6dcc7a20, 0x3715b: 0x6dcc7c20,\n\t0x3715c: 0x6dcc7e20, 0x3715d: 0x6dcc8020, 0x3715e: 0x6dcc8220, 0x3715f: 0x6dcc8420,\n\t0x37160: 0x6dcc8620, 0x37161: 0x6dcc8820, 0x37162: 0x6dcc8a20, 0x37163: 0x6dcc8c20,\n\t0x37164: 0x6dcc8e20, 0x37165: 0x6dcc9020, 0x37166: 0x6dcc9220, 0x37167: 0x6dcc9420,\n\t0x37168: 0x6dcc9620, 0x37169: 0x6dcc9820, 0x3716a: 0x6de78220, 0x3716b: 0x6de78420,\n\t0x3716c: 0x6de78620, 0x3716d: 0x6de78820, 0x3716e: 0x6de78a20, 0x3716f: 0x6de78c20,\n\t0x37170: 0x6de78e20, 0x37171: 0x6de79020, 0x37172: 0x6de79220, 0x37173: 0x6de79420,\n\t0x37174: 0x6de79620, 0x37175: 0x6de79820, 0x37176: 0x6de79a20, 0x37177: 0x6de79c20,\n\t0x37178: 0x6de79e20, 0x37179: 0x6de7a020, 0x3717a: 0x6de7a220, 0x3717b: 0x6dfe0a20,\n\t0x3717c: 0x6dfe0c20, 0x3717d: 0x6dfe0e20, 0x3717e: 0x6dfe1020, 0x3717f: 0x6dfe1220,\n\t// Block 0xdc6, offset 0x37180\n\t0x37180: 0x6dfe1420, 0x37181: 0x6dfe1620, 0x37182: 0x6dfe1820, 0x37183: 0x6dfe1a20,\n\t0x37184: 0x6dfe1c20, 0x37185: 0x6dfe1e20, 0x37186: 0x6dfe2020, 0x37187: 0x6dfe2220,\n\t0x37188: 0x6dfe2420, 0x37189: 0x6dfe2620, 0x3718a: 0x6dfe2820, 0x3718b: 0x6dfe2a20,\n\t0x3718c: 0x6dfe2c20, 0x3718d: 0x6dfe2e20, 0x3718e: 0x6dfe3020, 0x3718f: 0x6dfe3220,\n\t0x37190: 0x6dfe3420, 0x37191: 0x6dfe3620, 0x37192: 0x6e10a420, 0x37193: 0x6e10a620,\n\t0x37194: 0x6e10a820, 0x37195: 0x6e10aa20, 0x37196: 0x6e10ac20, 0x37197: 0x6e10ae20,\n\t0x37198: 0x6e10b020, 0x37199: 0x6e10b220, 0x3719a: 0x6e10b420, 0x3719b: 0x6e10b620,\n\t0x3719c: 0x6e10b820, 0x3719d: 0x6e1f3a20, 0x3719e: 0x6e1f3c20, 0x3719f: 0x6e1f3e20,\n\t0x371a0: 0x6e1f4020, 0x371a1: 0x6e1f4220, 0x371a2: 0x6e1f4420, 0x371a3: 0x6e1f4620,\n\t0x371a4: 0x6e1f4820, 0x371a5: 0x6e1f4a20, 0x371a6: 0x6e1f4c20, 0x371a7: 0x6e1f4e20,\n\t0x371a8: 0x6e1f5020, 0x371a9: 0x6e1f5220, 0x371aa: 0x6e1f5420, 0x371ab: 0x6e2a8c20,\n\t0x371ac: 0x6e2a8e20, 0x371ad: 0x6e2a9020, 0x371ae: 0x6e2a9220, 0x371af: 0x6e2a9420,\n\t0x371b0: 0x6e2a9620, 0x371b1: 0x6e2a9820, 0x371b2: 0x6e2a9a20, 0x371b3: 0x6e2a9c20,\n\t0x371b4: 0x6e332820, 0x371b5: 0x6e332a20, 0x371b6: 0x6e361a20, 0x371b7: 0x6e332c20,\n\t0x371b8: 0x6e332e20, 0x371b9: 0x6e394420, 0x371ba: 0x6e3d9820, 0x371bb: 0x6e3d9a20,\n\t0x371bc: 0x6e3d9c20, 0x371bd: 0x6e3d9e20, 0x371be: 0x6e408820, 0x371bf: 0x6e408a20,\n\t// Block 0xdc7, offset 0x371c0\n\t0x371c0: 0x6e408c20, 0x371c1: 0x6e42d020, 0x371c2: 0x6e42d220, 0x371c3: 0x6e444620,\n\t0x371c4: 0x6e46b220, 0x371c5: 0x6c050020, 0x371c6: 0x6c0a3620, 0x371c7: 0x6c13f820,\n\t0x371c8: 0x6c13fa20, 0x371c9: 0x6c13fc20, 0x371ca: 0x6c13fe20, 0x371cb: 0x6c140020,\n\t0x371cc: 0x6c140220, 0x371cd: 0x6c255020, 0x371ce: 0x6c255220, 0x371cf: 0x6c255420,\n\t0x371d0: 0x6c255620, 0x371d1: 0x6c255820, 0x371d2: 0x6c255a20, 0x371d3: 0x6c255c20,\n\t0x371d4: 0x6c255e20, 0x371d5: 0x6c3cfc20, 0x371d6: 0x6c3cfe20, 0x371d7: 0x6c3d0020,\n\t0x371d8: 0x6c3d0220, 0x371d9: 0x6c3d0420, 0x371da: 0x6c3d0620, 0x371db: 0x6c3d0820,\n\t0x371dc: 0x6c3d0a20, 0x371dd: 0x6c3d0c20, 0x371de: 0x6c3d0e20, 0x371df: 0x6c3d1020,\n\t0x371e0: 0x6c3d1220, 0x371e1: 0x6c3d1420, 0x371e2: 0x6c3d1620, 0x371e3: 0x6c3d1820,\n\t0x371e4: 0x6c3d1a20, 0x371e5: 0x6c3d1c20, 0x371e6: 0x6c3d1e20, 0x371e7: 0x6c3d2020,\n\t0x371e8: 0x6c3d2220, 0x371e9: 0x6c3d2420, 0x371ea: 0x6c3d2620, 0x371eb: 0x6c5ade20,\n\t0x371ec: 0x6c5ae020, 0x371ed: 0x6c5ae220, 0x371ee: 0x6c5ae420, 0x371ef: 0x6c5ae620,\n\t0x371f0: 0x6c5ae820, 0x371f1: 0x6c5aea20, 0x371f2: 0x6c5aec20, 0x371f3: 0x6c5aee20,\n\t0x371f4: 0x6c5af020, 0x371f5: 0x6c5af220, 0x371f6: 0x6c5af420, 0x371f7: 0x6c5af620,\n\t0x371f8: 0x6c5af820, 0x371f9: 0x6c5afa20, 0x371fa: 0x6c5afc20, 0x371fb: 0x6c5afe20,\n\t0x371fc: 0x6c5b0020, 0x371fd: 0x6c5b0220, 0x371fe: 0x6c5b0420, 0x371ff: 0x6c5b0620,\n\t// Block 0xdc8, offset 0x37200\n\t0x37200: 0x6c5b0820, 0x37201: 0x6c5b0a20, 0x37202: 0x6c5b0c20, 0x37203: 0x6c5b0e20,\n\t0x37204: 0x6c5b1020, 0x37205: 0x6c5b1220, 0x37206: 0x6c5b1420, 0x37207: 0x6c5b1620,\n\t0x37208: 0x6c5b1820, 0x37209: 0x6c5b1a20, 0x3720a: 0x6c5b1c20, 0x3720b: 0x6c5b1e20,\n\t0x3720c: 0x6c5b2020, 0x3720d: 0x6c5b2220, 0x3720e: 0x6c7dea20, 0x3720f: 0x6c7dec20,\n\t0x37210: 0x6c7dee20, 0x37211: 0x6c7df020, 0x37212: 0x6c7df220, 0x37213: 0x6c7df420,\n\t0x37214: 0x6c7df620, 0x37215: 0x6c7df820, 0x37216: 0x6c7dfa20, 0x37217: 0x6c7dfc20,\n\t0x37218: 0x6c7dfe20, 0x37219: 0x6c7e0020, 0x3721a: 0x6c7e0220, 0x3721b: 0x6c7e0420,\n\t0x3721c: 0x6c7e0620, 0x3721d: 0x6c7e0820, 0x3721e: 0x6c7e0a20, 0x3721f: 0x6c7e0c20,\n\t0x37220: 0x6c7e0e20, 0x37221: 0x6c7e1020, 0x37222: 0x6c7e1220, 0x37223: 0x6c7e1420,\n\t0x37224: 0x6c7e1620, 0x37225: 0x6c7e1820, 0x37226: 0x6c7e1a20, 0x37227: 0x6c7e1c20,\n\t0x37228: 0x6c7e1e20, 0x37229: 0x6c7e2020, 0x3722a: 0x6c7e2220, 0x3722b: 0x6ca6ae20,\n\t0x3722c: 0x6ca6b020, 0x3722d: 0x6ca6b220, 0x3722e: 0x6ca6b420, 0x3722f: 0x6ca6b620,\n\t0x37230: 0x6ca6b820, 0x37231: 0x6ca6ba20, 0x37232: 0x6ca6bc20, 0x37233: 0x6ca6be20,\n\t0x37234: 0x6ca6c020, 0x37235: 0x6ca6c220, 0x37236: 0x6ca6c420, 0x37237: 0x6ca6c620,\n\t0x37238: 0x6ca6c820, 0x37239: 0x6ca6ca20, 0x3723a: 0x6ca6cc20, 0x3723b: 0x6ca6ce20,\n\t0x3723c: 0x6ca6d020, 0x3723d: 0x6ca6d220, 0x3723e: 0x6ca6d420, 0x3723f: 0x6ca6d620,\n\t// Block 0xdc9, offset 0x37240\n\t0x37240: 0x6ca6d820, 0x37241: 0x6ca6da20, 0x37242: 0x6ca6dc20, 0x37243: 0x6ca6de20,\n\t0x37244: 0x6ca6e020, 0x37245: 0x6ca6e220, 0x37246: 0x6ca6e420, 0x37247: 0x6ca6e620,\n\t0x37248: 0x6cd4d620, 0x37249: 0x6cd4d820, 0x3724a: 0x6cd4da20, 0x3724b: 0x6cd4dc20,\n\t0x3724c: 0x6cd4de20, 0x3724d: 0x6cd4e020, 0x3724e: 0x6cd4e220, 0x3724f: 0x6cd4e420,\n\t0x37250: 0x6cd4e620, 0x37251: 0x6cd4e820, 0x37252: 0x6cd4ea20, 0x37253: 0x6cd4ec20,\n\t0x37254: 0x6cd4ee20, 0x37255: 0x6cd4f020, 0x37256: 0x6cd4f220, 0x37257: 0x6cd4f420,\n\t0x37258: 0x6cd4f620, 0x37259: 0x6cd4f820, 0x3725a: 0x6cd4fa20, 0x3725b: 0x6cd4fc20,\n\t0x3725c: 0x6cd4fe20, 0x3725d: 0x6cd50020, 0x3725e: 0x6cd50220, 0x3725f: 0x6cd50420,\n\t0x37260: 0x6cd50620, 0x37261: 0x6cd50820, 0x37262: 0x6cd50a20, 0x37263: 0x6cd50c20,\n\t0x37264: 0x6cd50e20, 0x37265: 0x6cd51020, 0x37266: 0x6d033420, 0x37267: 0x6d033620,\n\t0x37268: 0x6d033820, 0x37269: 0x6d033a20, 0x3726a: 0x6d033c20, 0x3726b: 0x6d033e20,\n\t0x3726c: 0x6d034020, 0x3726d: 0x6d034220, 0x3726e: 0x6d034420, 0x3726f: 0x6d034620,\n\t0x37270: 0x6d034820, 0x37271: 0x6d034a20, 0x37272: 0x6d034c20, 0x37273: 0x6d034e20,\n\t0x37274: 0x6d035020, 0x37275: 0x6d035220, 0x37276: 0x6d035420, 0x37277: 0x6d035620,\n\t0x37278: 0x6d035820, 0x37279: 0x6d035a20, 0x3727a: 0x6d035c20, 0x3727b: 0x6d035e20,\n\t0x3727c: 0x6d036020, 0x3727d: 0x6d036220, 0x3727e: 0x6d036420, 0x3727f: 0x6d036620,\n\t// Block 0xdca, offset 0x37280\n\t0x37280: 0x6d036820, 0x37281: 0x6d036a20, 0x37282: 0x6d036c20, 0x37283: 0x6d036e20,\n\t0x37284: 0x6d037020, 0x37285: 0x6d30e620, 0x37286: 0x6d30e820, 0x37287: 0x6d30ea20,\n\t0x37288: 0x6d30ec20, 0x37289: 0x6d30ee20, 0x3728a: 0x6d30f020, 0x3728b: 0x6d30f220,\n\t0x3728c: 0x6d30f420, 0x3728d: 0x6d30f620, 0x3728e: 0x6d30f820, 0x3728f: 0x6d30fa20,\n\t0x37290: 0x6d30fc20, 0x37291: 0x6d30fe20, 0x37292: 0x6d310020, 0x37293: 0x6d310220,\n\t0x37294: 0x6d310420, 0x37295: 0x6d310620, 0x37296: 0x6d310820, 0x37297: 0x6d310a20,\n\t0x37298: 0x6d5da020, 0x37299: 0x6d5da220, 0x3729a: 0x6d5da420, 0x3729b: 0x6d5da620,\n\t0x3729c: 0x6d5da820, 0x3729d: 0x6d5daa20, 0x3729e: 0x6d5dac20, 0x3729f: 0x6d5dae20,\n\t0x372a0: 0x6d5db020, 0x372a1: 0x6d5db220, 0x372a2: 0x6d5db420, 0x372a3: 0x6d5db620,\n\t0x372a4: 0x6d5db820, 0x372a5: 0x6d5dba20, 0x372a6: 0x6d5dbc20, 0x372a7: 0x6d5dbe20,\n\t0x372a8: 0x6d5dc020, 0x372a9: 0x6d5dc220, 0x372aa: 0x6d5dc420, 0x372ab: 0x6d5dc620,\n\t0x372ac: 0x6d5dc820, 0x372ad: 0x6d5dca20, 0x372ae: 0x6d880620, 0x372af: 0x6d880820,\n\t0x372b0: 0x6d880a20, 0x372b1: 0x6d880c20, 0x372b2: 0x6d880e20, 0x372b3: 0x6d881020,\n\t0x372b4: 0x6d881220, 0x372b5: 0x6d881420, 0x372b6: 0x6d881620, 0x372b7: 0x6d881820,\n\t0x372b8: 0x6d881a20, 0x372b9: 0x6d881c20, 0x372ba: 0x6d881e20, 0x372bb: 0x6d882020,\n\t0x372bc: 0x6d882220, 0x372bd: 0x6d882420, 0x372be: 0x6d882620, 0x372bf: 0x6d882820,\n\t// Block 0xdcb, offset 0x372c0\n\t0x372c0: 0x6d882a20, 0x372c1: 0x6d882c20, 0x372c2: 0x6d882e20, 0x372c3: 0x6dacaa20,\n\t0x372c4: 0x6dacac20, 0x372c5: 0x6dacae20, 0x372c6: 0x6dacb020, 0x372c7: 0x6dacb220,\n\t0x372c8: 0x6dacb420, 0x372c9: 0x6dacb620, 0x372ca: 0x6dacb820, 0x372cb: 0x6dacba20,\n\t0x372cc: 0x6dacbc20, 0x372cd: 0x6dacbe20, 0x372ce: 0x6dacc020, 0x372cf: 0x6dacc220,\n\t0x372d0: 0x6dacc420, 0x372d1: 0x6dacc620, 0x372d2: 0x6dccac20, 0x372d3: 0x6dccae20,\n\t0x372d4: 0x6dccb020, 0x372d5: 0x6dccb220, 0x372d6: 0x6dccb420, 0x372d7: 0x6dccb620,\n\t0x372d8: 0x6dccb820, 0x372d9: 0x6dccba20, 0x372da: 0x6de7b020, 0x372db: 0x6de7b220,\n\t0x372dc: 0x6de7b420, 0x372dd: 0x6de7b620, 0x372de: 0x6de7b820, 0x372df: 0x6de7ba20,\n\t0x372e0: 0x6dfe3c20, 0x372e1: 0x6dfe3e20, 0x372e2: 0x6dfe4020, 0x372e3: 0x6dfe4220,\n\t0x372e4: 0x6dfe4420, 0x372e5: 0x6e10be20, 0x372e6: 0x6e10c020, 0x372e7: 0x6e10c220,\n\t0x372e8: 0x6e10c420, 0x372e9: 0x6e10c620, 0x372ea: 0x6e1f5a20, 0x372eb: 0x6e1f5c20,\n\t0x372ec: 0x6e1f5e20, 0x372ed: 0x6e1f6020, 0x372ee: 0x6e1f6220, 0x372ef: 0x6e1f6420,\n\t0x372f0: 0x6e2aa220, 0x372f1: 0x6e2aa420, 0x372f2: 0x6e2aa620, 0x372f3: 0x6e2aa820,\n\t0x372f4: 0x6e333420, 0x372f5: 0x6e333620, 0x372f6: 0x6e394620, 0x372f7: 0x6e394820,\n\t0x372f8: 0x6e394a20, 0x372f9: 0x6e3da020, 0x372fa: 0x6e3da220, 0x372fb: 0x6c0a3a20,\n\t0x372fc: 0x6c3d2c20, 0x372fd: 0x6c7e2e20, 0x372fe: 0x6ca6f620, 0x372ff: 0x6cd52820,\n\t// Block 0xdcc, offset 0x37300\n\t0x37300: 0x6cb7b420, 0x37301: 0x6cd52a20, 0x37302: 0x6cd52c20, 0x37303: 0x6d037a20,\n\t0x37304: 0x6d311820, 0x37305: 0x6d5dd020, 0x37306: 0x6d5dd220, 0x37307: 0x6d5dd420,\n\t0x37308: 0x6dacca20, 0x37309: 0x6daccc20, 0x3730a: 0x6e10c820, 0x3730b: 0x6e333a20,\n\t0x3730c: 0x6c0a3e20, 0x3730d: 0x6c140420, 0x3730e: 0x6c140620, 0x3730f: 0x6c140820,\n\t0x37310: 0x6c257220, 0x37311: 0x6c257420, 0x37312: 0x6c257620, 0x37313: 0x6c257820,\n\t0x37314: 0x6c3d4820, 0x37315: 0x6c3d4a20, 0x37316: 0x6c3d4c20, 0x37317: 0x6c3d4e20,\n\t0x37318: 0x6c3d5020, 0x37319: 0x6c3d5220, 0x3731a: 0x6c3d5420, 0x3731b: 0x6c3d5620,\n\t0x3731c: 0x6c3d5820, 0x3731d: 0x6c3d5a20, 0x3731e: 0x6c3d5c20, 0x3731f: 0x6c3d5e20,\n\t0x37320: 0x6c3d6020, 0x37321: 0x6c3d6220, 0x37322: 0x6c3d6420, 0x37323: 0x6c5b5820,\n\t0x37324: 0x6c5b5a20, 0x37325: 0x6c5b5c20, 0x37326: 0x6c5b5e20, 0x37327: 0x6c5b6020,\n\t0x37328: 0x6c5b6220, 0x37329: 0x6c5b6420, 0x3732a: 0x6c5b6620, 0x3732b: 0x6c5b6820,\n\t0x3732c: 0x6c5b6a20, 0x3732d: 0x6c5b6c20, 0x3732e: 0x6c5b6e20, 0x3732f: 0x6c5b7020,\n\t0x37330: 0x6c5b7220, 0x37331: 0x6c5b7420, 0x37332: 0x6c5b7620, 0x37333: 0x6c5b7820,\n\t0x37334: 0x6c5b7a20, 0x37335: 0x6c5b7c20, 0x37336: 0x6c5b7e20, 0x37337: 0x6c5b8020,\n\t0x37338: 0x6c5b8220, 0x37339: 0x6c5b8420, 0x3733a: 0x6c5b8620, 0x3733b: 0x6c5b8820,\n\t0x3733c: 0x6c5b8a20, 0x3733d: 0x6c5b8c20, 0x3733e: 0x6c7e6a20, 0x3733f: 0x6c7e6c20,\n\t// Block 0xdcd, offset 0x37340\n\t0x37340: 0x6c7e6e20, 0x37341: 0x6c7e7020, 0x37342: 0x6c7e7220, 0x37343: 0x6c7e7420,\n\t0x37344: 0x6c7e7620, 0x37345: 0x6c7e7820, 0x37346: 0x6c7e7a20, 0x37347: 0x6c7e7c20,\n\t0x37348: 0x6c7e7e20, 0x37349: 0x6c7e8020, 0x3734a: 0x6c7e8220, 0x3734b: 0x6c7e8420,\n\t0x3734c: 0x6c7e8620, 0x3734d: 0x6c7e8820, 0x3734e: 0x6c7e8a20, 0x3734f: 0x6c7e8c20,\n\t0x37350: 0x6c7e8e20, 0x37351: 0x6c7e9020, 0x37352: 0x6c7e9220, 0x37353: 0x6c7e9420,\n\t0x37354: 0x6c7e9620, 0x37355: 0x6c7e9820, 0x37356: 0x6c7e9a20, 0x37357: 0x6c7e9c20,\n\t0x37358: 0x6ca73820, 0x37359: 0x6ca73a20, 0x3735a: 0x6ca73c20, 0x3735b: 0x6ca73e20,\n\t0x3735c: 0x6ca74020, 0x3735d: 0x6ca74220, 0x3735e: 0x6ca74420, 0x3735f: 0x6ca74620,\n\t0x37360: 0x6ca74820, 0x37361: 0x6ca74a20, 0x37362: 0x6ca74c20, 0x37363: 0x6ca74e20,\n\t0x37364: 0x6ca75020, 0x37365: 0x6ca75220, 0x37366: 0x6ca75420, 0x37367: 0x6ca75620,\n\t0x37368: 0x6ca75820, 0x37369: 0x6ca75a20, 0x3736a: 0x6ca75c20, 0x3736b: 0x6ca75e20,\n\t0x3736c: 0x6ca76020, 0x3736d: 0x6ca76220, 0x3736e: 0x6ca76420, 0x3736f: 0x6ca76620,\n\t0x37370: 0x6ca76820, 0x37371: 0x6ca76a20, 0x37372: 0x6cd56020, 0x37373: 0x6cd56220,\n\t0x37374: 0x6cd56420, 0x37375: 0x6cd56620, 0x37376: 0x6cd56820, 0x37377: 0x6cd56a20,\n\t0x37378: 0x6cd56c20, 0x37379: 0x6cd56e20, 0x3737a: 0x6cd57020, 0x3737b: 0x6cd57220,\n\t0x3737c: 0x6cd57420, 0x3737d: 0x6cd57620, 0x3737e: 0x6cd57820, 0x3737f: 0x6cd57a20,\n\t// Block 0xdce, offset 0x37380\n\t0x37380: 0x6cd57c20, 0x37381: 0x6cd57e20, 0x37382: 0x6cd58020, 0x37383: 0x6cd58220,\n\t0x37384: 0x6cd58420, 0x37385: 0x6ca76c20, 0x37386: 0x6cd58620, 0x37387: 0x6cd58820,\n\t0x37388: 0x6cd58a20, 0x37389: 0x6cd58c20, 0x3738a: 0x6cd58e20, 0x3738b: 0x6cd59020,\n\t0x3738c: 0x6cd59220, 0x3738d: 0x6d03c220, 0x3738e: 0x6d03c420, 0x3738f: 0x6d03c620,\n\t0x37390: 0x6d03c820, 0x37391: 0x6d03ca20, 0x37392: 0x6d03cc20, 0x37393: 0x6d03ce20,\n\t0x37394: 0x6d03d020, 0x37395: 0x6d03d220, 0x37396: 0x6d03d420, 0x37397: 0x6d03d620,\n\t0x37398: 0x6d03d820, 0x37399: 0x6d03da20, 0x3739a: 0x6d03dc20, 0x3739b: 0x6d03de20,\n\t0x3739c: 0x6d03e020, 0x3739d: 0x6d03e220, 0x3739e: 0x6d03e420, 0x3739f: 0x6d03e620,\n\t0x373a0: 0x6d03e820, 0x373a1: 0x6d03ea20, 0x373a2: 0x6d03ec20, 0x373a3: 0x6d03ee20,\n\t0x373a4: 0x6d03f020, 0x373a5: 0x6d03f220, 0x373a6: 0x6d03f420, 0x373a7: 0x6d03f620,\n\t0x373a8: 0x6d03f820, 0x373a9: 0x6d03fa20, 0x373aa: 0x6d03fc20, 0x373ab: 0x6d03fe20,\n\t0x373ac: 0x6d040020, 0x373ad: 0x6d040220, 0x373ae: 0x6d040420, 0x373af: 0x6d040620,\n\t0x373b0: 0x6d040820, 0x373b1: 0x6d040a20, 0x373b2: 0x6d040c20, 0x373b3: 0x6d040e20,\n\t0x373b4: 0x6d041020, 0x373b5: 0x6d041220, 0x373b6: 0x6d041420, 0x373b7: 0x6d041620,\n\t0x373b8: 0x6d041820, 0x373b9: 0x6d041a20, 0x373ba: 0x6d041c20, 0x373bb: 0x6d041e20,\n\t0x373bc: 0x6d042020, 0x373bd: 0x6d315020, 0x373be: 0x6d315220, 0x373bf: 0x6d315420,\n\t// Block 0xdcf, offset 0x373c0\n\t0x373c0: 0x6d315620, 0x373c1: 0x6d315820, 0x373c2: 0x6d315a20, 0x373c3: 0x6d315c20,\n\t0x373c4: 0x6d315e20, 0x373c5: 0x6d316020, 0x373c6: 0x6d316220, 0x373c7: 0x6d316420,\n\t0x373c8: 0x6d316620, 0x373c9: 0x6d316820, 0x373ca: 0x6d316a20, 0x373cb: 0x6d316c20,\n\t0x373cc: 0x6d316e20, 0x373cd: 0x6d317020, 0x373ce: 0x6d317220, 0x373cf: 0x6d317420,\n\t0x373d0: 0x6d317620, 0x373d1: 0x6d317820, 0x373d2: 0x6d317a20, 0x373d3: 0x6d317c20,\n\t0x373d4: 0x6d317e20, 0x373d5: 0x6d318020, 0x373d6: 0x6d318220, 0x373d7: 0x6d318420,\n\t0x373d8: 0x6d318620, 0x373d9: 0x6d318820, 0x373da: 0x6d318a20, 0x373db: 0x6d318c20,\n\t0x373dc: 0x6d318e20, 0x373dd: 0x6d319020, 0x373de: 0x6d319220, 0x373df: 0x6d319420,\n\t0x373e0: 0x6d319620, 0x373e1: 0x6d319820, 0x373e2: 0x6d319a20, 0x373e3: 0x6d319c20,\n\t0x373e4: 0x6d319e20, 0x373e5: 0x6d31a020, 0x373e6: 0x6d31a220, 0x373e7: 0x6d31a420,\n\t0x373e8: 0x6d31a620, 0x373e9: 0x6d31a820, 0x373ea: 0x6d31aa20, 0x373eb: 0x6d31ac20,\n\t0x373ec: 0x6d31ae20, 0x373ed: 0x6d31b020, 0x373ee: 0x6d31b220, 0x373ef: 0x6d31b420,\n\t0x373f0: 0x6d31b620, 0x373f1: 0x6d5e0c20, 0x373f2: 0x6d5e0e20, 0x373f3: 0x6d5e1020,\n\t0x373f4: 0x6d5e1220, 0x373f5: 0x6d5e1420, 0x373f6: 0x6d5e1620, 0x373f7: 0x6d5e1820,\n\t0x373f8: 0x6d5e1a20, 0x373f9: 0x6d5e1c20, 0x373fa: 0x6d5e1e20, 0x373fb: 0x6d5e2020,\n\t0x373fc: 0x6d5e2220, 0x373fd: 0x6d5e2420, 0x373fe: 0x6d5e2620, 0x373ff: 0x6d5e2820,\n\t// Block 0xdd0, offset 0x37400\n\t0x37400: 0x6d5e2a20, 0x37401: 0x6d5e2c20, 0x37402: 0x6d5e2e20, 0x37403: 0x6d5e3020,\n\t0x37404: 0x6d5e3220, 0x37405: 0x6d5e3420, 0x37406: 0x6d5e3620, 0x37407: 0x6d5e3820,\n\t0x37408: 0x6d5e3a20, 0x37409: 0x6d5e3c20, 0x3740a: 0x6d5e3e20, 0x3740b: 0x6d5e4020,\n\t0x3740c: 0x6d5e4220, 0x3740d: 0x6d5e4420, 0x3740e: 0x6d5e4620, 0x3740f: 0x6d5e4820,\n\t0x37410: 0x6d5e4a20, 0x37411: 0x6d5e4c20, 0x37412: 0x6d5e4e20, 0x37413: 0x6d5e5020,\n\t0x37414: 0x6d5e5220, 0x37415: 0x6d5e5420, 0x37416: 0x6d5e5620, 0x37417: 0x6d5e5820,\n\t0x37418: 0x6d5e5a20, 0x37419: 0x6d5e5c20, 0x3741a: 0x6d5e5e20, 0x3741b: 0x6d5e6020,\n\t0x3741c: 0x6d885c20, 0x3741d: 0x6d885e20, 0x3741e: 0x6d886020, 0x3741f: 0x6d886220,\n\t0x37420: 0x6d886420, 0x37421: 0x6d886620, 0x37422: 0x6d886820, 0x37423: 0x6d886a20,\n\t0x37424: 0x6d886c20, 0x37425: 0x6d886e20, 0x37426: 0x6d887020, 0x37427: 0x6d887220,\n\t0x37428: 0x6d887420, 0x37429: 0x6d887620, 0x3742a: 0x6d887820, 0x3742b: 0x6d887a20,\n\t0x3742c: 0x6d887c20, 0x3742d: 0x6d887e20, 0x3742e: 0x6d888020, 0x3742f: 0x6d888220,\n\t0x37430: 0x6d888420, 0x37431: 0x6d888620, 0x37432: 0x6d888820, 0x37433: 0x6d888a20,\n\t0x37434: 0x6d888c20, 0x37435: 0x6d888e20, 0x37436: 0x6d889020, 0x37437: 0x6d889220,\n\t0x37438: 0x6d889420, 0x37439: 0x6d889620, 0x3743a: 0x6d889820, 0x3743b: 0x6d889a20,\n\t0x3743c: 0x6d889c20, 0x3743d: 0x6d889e20, 0x3743e: 0x6d88a020, 0x3743f: 0x6d88a220,\n\t// Block 0xdd1, offset 0x37440\n\t0x37440: 0x6d88a420, 0x37441: 0x6d88a620, 0x37442: 0x6d88a820, 0x37443: 0x6d88aa20,\n\t0x37444: 0x6d88ac20, 0x37445: 0x6d88ae20, 0x37446: 0x6d88b020, 0x37447: 0x6d88b220,\n\t0x37448: 0x6d88b420, 0x37449: 0x6d88b620, 0x3744a: 0x6dacec20, 0x3744b: 0x6dacee20,\n\t0x3744c: 0x6dacf020, 0x3744d: 0x6dacf220, 0x3744e: 0x6dacf420, 0x3744f: 0x6dacf620,\n\t0x37450: 0x6dacf820, 0x37451: 0x6dacfa20, 0x37452: 0x6dacfc20, 0x37453: 0x6dacfe20,\n\t0x37454: 0x6dad0020, 0x37455: 0x6dad0220, 0x37456: 0x6dad0420, 0x37457: 0x6dad0620,\n\t0x37458: 0x6dad0820, 0x37459: 0x6dad0a20, 0x3745a: 0x6dad0c20, 0x3745b: 0x6dad0e20,\n\t0x3745c: 0x6dad1020, 0x3745d: 0x6dad1220, 0x3745e: 0x6dad1420, 0x3745f: 0x6dad1620,\n\t0x37460: 0x6dad1820, 0x37461: 0x6dad1a20, 0x37462: 0x6dad1c20, 0x37463: 0x6dad1e20,\n\t0x37464: 0x6dad2020, 0x37465: 0x6dad2220, 0x37466: 0x6dad2420, 0x37467: 0x6dad2620,\n\t0x37468: 0x6dad2820, 0x37469: 0x6dad2a20, 0x3746a: 0x6dad2c20, 0x3746b: 0x6dad2e20,\n\t0x3746c: 0x6dad3020, 0x3746d: 0x6dad3220, 0x3746e: 0x6dad3420, 0x3746f: 0x6dad3620,\n\t0x37470: 0x6dad3820, 0x37471: 0x6dad3a20, 0x37472: 0x6dad3c20, 0x37473: 0x6dad3e20,\n\t0x37474: 0x6dccd820, 0x37475: 0x6dccda20, 0x37476: 0x6dccdc20, 0x37477: 0x6dccde20,\n\t0x37478: 0x6dcce020, 0x37479: 0x6dcce220, 0x3747a: 0x6dcce420, 0x3747b: 0x6dcce620,\n\t0x3747c: 0x6dcce820, 0x3747d: 0x6dccea20, 0x3747e: 0x6dccec20, 0x3747f: 0x6dccee20,\n\t// Block 0xdd2, offset 0x37480\n\t0x37480: 0x6dccf020, 0x37481: 0x6dccf220, 0x37482: 0x6dccf420, 0x37483: 0x6dccf620,\n\t0x37484: 0x6dccf820, 0x37485: 0x6dccfa20, 0x37486: 0x6dccfc20, 0x37487: 0x6dccfe20,\n\t0x37488: 0x6dcd0020, 0x37489: 0x6dcd0220, 0x3748a: 0x6de7cc20, 0x3748b: 0x6dcd0420,\n\t0x3748c: 0x6dcd0620, 0x3748d: 0x6dcd0820, 0x3748e: 0x6dcd0a20, 0x3748f: 0x6dcd0c20,\n\t0x37490: 0x6dcd0e20, 0x37491: 0x6dcd1020, 0x37492: 0x6dcd1220, 0x37493: 0x6dcd1420,\n\t0x37494: 0x6dcd1620, 0x37495: 0x6de7ce20, 0x37496: 0x6de7d020, 0x37497: 0x6de7d220,\n\t0x37498: 0x6de7d420, 0x37499: 0x6de7d620, 0x3749a: 0x6de7d820, 0x3749b: 0x6de7da20,\n\t0x3749c: 0x6de7dc20, 0x3749d: 0x6de7de20, 0x3749e: 0x6de7e020, 0x3749f: 0x6de7e220,\n\t0x374a0: 0x6de7e420, 0x374a1: 0x6de7e620, 0x374a2: 0x6dfe5220, 0x374a3: 0x6de7e820,\n\t0x374a4: 0x6de7ea20, 0x374a5: 0x6de7ec20, 0x374a6: 0x6de7ee20, 0x374a7: 0x6de7f020,\n\t0x374a8: 0x6dfe5420, 0x374a9: 0x6dfe5620, 0x374aa: 0x6dfe5820, 0x374ab: 0x6dfe5a20,\n\t0x374ac: 0x6dfe5c20, 0x374ad: 0x6dfe5e20, 0x374ae: 0x6dfe6020, 0x374af: 0x6dfe6220,\n\t0x374b0: 0x6dfe6420, 0x374b1: 0x6dfe6620, 0x374b2: 0x6dfe6820, 0x374b3: 0x6dfe6a20,\n\t0x374b4: 0x6dfe6c20, 0x374b5: 0x6dfe6e20, 0x374b6: 0x6dfe7020, 0x374b7: 0x6e046620,\n\t0x374b8: 0x6dfe7220, 0x374b9: 0x6dfe7420, 0x374ba: 0x6dfe7620, 0x374bb: 0x6dfe7820,\n\t0x374bc: 0x6dfe7a20, 0x374bd: 0x6dfe7c20, 0x374be: 0x6dfe7e20, 0x374bf: 0x6dfe8020,\n\t// Block 0xdd3, offset 0x374c0\n\t0x374c0: 0x6e10d220, 0x374c1: 0x6e10d420, 0x374c2: 0x6e10d620, 0x374c3: 0x6e10d820,\n\t0x374c4: 0x6e10da20, 0x374c5: 0x6e10dc20, 0x374c6: 0x6e1f6c20, 0x374c7: 0x6e1f6e20,\n\t0x374c8: 0x6e1f7020, 0x374c9: 0x6e1f7220, 0x374ca: 0x6e2aaa20, 0x374cb: 0x6e2aac20,\n\t0x374cc: 0x6e2aae20, 0x374cd: 0x6e2ab020, 0x374ce: 0x6e2ab220, 0x374cf: 0x6e2ab420,\n\t0x374d0: 0x6e2ab620, 0x374d1: 0x6e2ab820, 0x374d2: 0x6e2aba20, 0x374d3: 0x6e334020,\n\t0x374d4: 0x6e328a20, 0x374d5: 0x6e334220, 0x374d6: 0x6e334420, 0x374d7: 0x6e394e20,\n\t0x374d8: 0x6e395020, 0x374d9: 0x6e395220, 0x374da: 0x6e395420, 0x374db: 0x6e3da420,\n\t0x374dc: 0x6e3da620, 0x374dd: 0x6e3da820, 0x374de: 0x6e444a20, 0x374df: 0x6e444c20,\n\t0x374e0: 0x6e463420, 0x374e1: 0x6e46cc20, 0x374e2: 0x6c0a4220, 0x374e3: 0x6c258020,\n\t0x374e4: 0x6c258220, 0x374e5: 0x6c258420, 0x374e6: 0x6c258620, 0x374e7: 0x6c3d7220,\n\t0x374e8: 0x6c3d7420, 0x374e9: 0x6c3d7620, 0x374ea: 0x6c3d7820, 0x374eb: 0x6c3d7a20,\n\t0x374ec: 0x6c3d7c20, 0x374ed: 0x6c3d7e20, 0x374ee: 0x6c3d8020, 0x374ef: 0x6c3d8220,\n\t0x374f0: 0x6c3d8420, 0x374f1: 0x6c3d8620, 0x374f2: 0x6c3d8820, 0x374f3: 0x6c3d8a20,\n\t0x374f4: 0x6c5baa20, 0x374f5: 0x6c5bac20, 0x374f6: 0x6c5bae20, 0x374f7: 0x6c5bb020,\n\t0x374f8: 0x6c5bb220, 0x374f9: 0x6c5bb420, 0x374fa: 0x6c5bb620, 0x374fb: 0x6c5bb820,\n\t0x374fc: 0x6c5bba20, 0x374fd: 0x6c5bbc20, 0x374fe: 0x6c5bbe20, 0x374ff: 0x6c5bc020,\n\t// Block 0xdd4, offset 0x37500\n\t0x37500: 0x6c5bc220, 0x37501: 0x6c5bc420, 0x37502: 0x6c5bc620, 0x37503: 0x6c5bc820,\n\t0x37504: 0x6c5bca20, 0x37505: 0x6c5bcc20, 0x37506: 0x6c5bce20, 0x37507: 0x6c7ec220,\n\t0x37508: 0x6c7ec420, 0x37509: 0x6c7ec620, 0x3750a: 0x6c7ec820, 0x3750b: 0x6c7eca20,\n\t0x3750c: 0x6c7ecc20, 0x3750d: 0x6c7ece20, 0x3750e: 0x6c7ed020, 0x3750f: 0x6c7ed220,\n\t0x37510: 0x6c7ed420, 0x37511: 0x6c7ed620, 0x37512: 0x6c7ed820, 0x37513: 0x6c7eda20,\n\t0x37514: 0x6c7edc20, 0x37515: 0x6c7ede20, 0x37516: 0x6c7ee020, 0x37517: 0x6c7ee220,\n\t0x37518: 0x6c7ee420, 0x37519: 0x6c7ee620, 0x3751a: 0x6c7ee820, 0x3751b: 0x6c7eea20,\n\t0x3751c: 0x6c7eec20, 0x3751d: 0x6c7eee20, 0x3751e: 0x6c7ef020, 0x3751f: 0x6c7ef220,\n\t0x37520: 0x6ca79420, 0x37521: 0x6ca79620, 0x37522: 0x6ca79820, 0x37523: 0x6ca79a20,\n\t0x37524: 0x6ca79c20, 0x37525: 0x6ca79e20, 0x37526: 0x6ca7a020, 0x37527: 0x6ca7a220,\n\t0x37528: 0x6ca7a420, 0x37529: 0x6ca7a620, 0x3752a: 0x6ca7a820, 0x3752b: 0x6ca7aa20,\n\t0x3752c: 0x6ca7ac20, 0x3752d: 0x6ca7ae20, 0x3752e: 0x6ca7b020, 0x3752f: 0x6ca7b220,\n\t0x37530: 0x6ca7b420, 0x37531: 0x6ca7b620, 0x37532: 0x6ca7b820, 0x37533: 0x6ca7ba20,\n\t0x37534: 0x6ca7bc20, 0x37535: 0x6ca7be20, 0x37536: 0x6cd5ba20, 0x37537: 0x6cd5bc20,\n\t0x37538: 0x6cd5be20, 0x37539: 0x6cd5c020, 0x3753a: 0x6cd5c220, 0x3753b: 0x6cd5c420,\n\t0x3753c: 0x6cd5c620, 0x3753d: 0x6cd5c820, 0x3753e: 0x6cd5ca20, 0x3753f: 0x6cd5cc20,\n\t// Block 0xdd5, offset 0x37540\n\t0x37540: 0x6cd5ce20, 0x37541: 0x6cd5d020, 0x37542: 0x6cd5d220, 0x37543: 0x6cd5d420,\n\t0x37544: 0x6cd5d620, 0x37545: 0x6cd5d820, 0x37546: 0x6cd5da20, 0x37547: 0x6cd5dc20,\n\t0x37548: 0x6cd5de20, 0x37549: 0x6cd5e020, 0x3754a: 0x6cd5e220, 0x3754b: 0x6cd5e420,\n\t0x3754c: 0x6cd5e620, 0x3754d: 0x6cd5e820, 0x3754e: 0x6cd5ea20, 0x3754f: 0x6cd5ec20,\n\t0x37550: 0x6cd5ee20, 0x37551: 0x6cd5f020, 0x37552: 0x6cd5f220, 0x37553: 0x6cd5f420,\n\t0x37554: 0x6cd5f620, 0x37555: 0x6cd5f820, 0x37556: 0x6cd5fa20, 0x37557: 0x6cd5fc20,\n\t0x37558: 0x6cd5fe20, 0x37559: 0x6cd60020, 0x3755a: 0x6cd60220, 0x3755b: 0x6d044620,\n\t0x3755c: 0x6d044820, 0x3755d: 0x6d044a20, 0x3755e: 0x6d044c20, 0x3755f: 0x6d044e20,\n\t0x37560: 0x6d045020, 0x37561: 0x6d045220, 0x37562: 0x6d045420, 0x37563: 0x6d045620,\n\t0x37564: 0x6d045820, 0x37565: 0x6d045a20, 0x37566: 0x6d045c20, 0x37567: 0x6d045e20,\n\t0x37568: 0x6d046020, 0x37569: 0x6d046220, 0x3756a: 0x6d046420, 0x3756b: 0x6d046620,\n\t0x3756c: 0x6d046820, 0x3756d: 0x6d046a20, 0x3756e: 0x6d046c20, 0x3756f: 0x6d046e20,\n\t0x37570: 0x6d047020, 0x37571: 0x6d047220, 0x37572: 0x6d047420, 0x37573: 0x6d047620,\n\t0x37574: 0x6d047820, 0x37575: 0x6d047a20, 0x37576: 0x6d047c20, 0x37577: 0x6d047e20,\n\t0x37578: 0x6d31d420, 0x37579: 0x6d31d620, 0x3757a: 0x6d31d820, 0x3757b: 0x6d31da20,\n\t0x3757c: 0x6d31dc20, 0x3757d: 0x6d31de20, 0x3757e: 0x6d31e020, 0x3757f: 0x6d31e220,\n\t// Block 0xdd6, offset 0x37580\n\t0x37580: 0x6d31e420, 0x37581: 0x6d31e620, 0x37582: 0x6d31e820, 0x37583: 0x6d31ea20,\n\t0x37584: 0x6d31ec20, 0x37585: 0x6d31ee20, 0x37586: 0x6d31f020, 0x37587: 0x6d31f220,\n\t0x37588: 0x6d31f420, 0x37589: 0x6d31f620, 0x3758a: 0x6d31f820, 0x3758b: 0x6d31fa20,\n\t0x3758c: 0x6d31fc20, 0x3758d: 0x6d31fe20, 0x3758e: 0x6d320020, 0x3758f: 0x6d320220,\n\t0x37590: 0x6d5e7e20, 0x37591: 0x6d5e8020, 0x37592: 0x6d5e8220, 0x37593: 0x6d5e8420,\n\t0x37594: 0x6d5e8620, 0x37595: 0x6d5e8820, 0x37596: 0x6d5e8a20, 0x37597: 0x6d5e8c20,\n\t0x37598: 0x6d5e8e20, 0x37599: 0x6d5e9020, 0x3759a: 0x6d5e9220, 0x3759b: 0x6d5e9420,\n\t0x3759c: 0x6d5e9620, 0x3759d: 0x6d5e9820, 0x3759e: 0x6d5e9a20, 0x3759f: 0x6d5e9c20,\n\t0x375a0: 0x6d5e9e20, 0x375a1: 0x6d5ea020, 0x375a2: 0x6d627c20, 0x375a3: 0x6d5ea220,\n\t0x375a4: 0x6d5ea420, 0x375a5: 0x6d5ea620, 0x375a6: 0x6d5ea820, 0x375a7: 0x6d5eaa20,\n\t0x375a8: 0x6d5eac20, 0x375a9: 0x6d5eae20, 0x375aa: 0x6d5eb020, 0x375ab: 0x6d5eb220,\n\t0x375ac: 0x6d88da20, 0x375ad: 0x6d88dc20, 0x375ae: 0x6d88de20, 0x375af: 0x6d88e020,\n\t0x375b0: 0x6d88e220, 0x375b1: 0x6d88e420, 0x375b2: 0x6d88e620, 0x375b3: 0x6d88e820,\n\t0x375b4: 0x6d88ea20, 0x375b5: 0x6d88ec20, 0x375b6: 0x6d88ee20, 0x375b7: 0x6d88f020,\n\t0x375b8: 0x6d88f220, 0x375b9: 0x6d88f420, 0x375ba: 0x6d88f620, 0x375bb: 0x6d88f820,\n\t0x375bc: 0x6dad5a20, 0x375bd: 0x6d88fa20, 0x375be: 0x6d88fc20, 0x375bf: 0x6d88fe20,\n\t// Block 0xdd7, offset 0x375c0\n\t0x375c0: 0x6d890020, 0x375c1: 0x6d890220, 0x375c2: 0x6d890420, 0x375c3: 0x6d890620,\n\t0x375c4: 0x6d890820, 0x375c5: 0x6d890a20, 0x375c6: 0x6d890c20, 0x375c7: 0x6d890e20,\n\t0x375c8: 0x6d891020, 0x375c9: 0x6d891220, 0x375ca: 0x6d891420, 0x375cb: 0x6d891620,\n\t0x375cc: 0x6dad5c20, 0x375cd: 0x6dad5e20, 0x375ce: 0x6dad6020, 0x375cf: 0x6dad6220,\n\t0x375d0: 0x6dad6420, 0x375d1: 0x6dad6620, 0x375d2: 0x6dad6820, 0x375d3: 0x6dad6a20,\n\t0x375d4: 0x6dad6c20, 0x375d5: 0x6dad6e20, 0x375d6: 0x6dad7020, 0x375d7: 0x6dad7220,\n\t0x375d8: 0x6dad7420, 0x375d9: 0x6dad7620, 0x375da: 0x6dad7820, 0x375db: 0x6dad7a20,\n\t0x375dc: 0x6dad7c20, 0x375dd: 0x6dad7e20, 0x375de: 0x6dad8020, 0x375df: 0x6dad8220,\n\t0x375e0: 0x6dcd2420, 0x375e1: 0x6dcd2620, 0x375e2: 0x6dcd2820, 0x375e3: 0x6dcd2a20,\n\t0x375e4: 0x6dcd2c20, 0x375e5: 0x6dcd2e20, 0x375e6: 0x6dcd3020, 0x375e7: 0x6dcd3220,\n\t0x375e8: 0x6dcd3420, 0x375e9: 0x6dad8420, 0x375ea: 0x6de7f820, 0x375eb: 0x6de7fa20,\n\t0x375ec: 0x6de7fc20, 0x375ed: 0x6de7fe20, 0x375ee: 0x6de80020, 0x375ef: 0x6de80220,\n\t0x375f0: 0x6dfe8820, 0x375f1: 0x6dfe8a20, 0x375f2: 0x6de80420, 0x375f3: 0x6dfe8c20,\n\t0x375f4: 0x6dfe8e20, 0x375f5: 0x6e10e420, 0x375f6: 0x6dfe9020, 0x375f7: 0x6dfe9220,\n\t0x375f8: 0x6dfe9420, 0x375f9: 0x6dfe9620, 0x375fa: 0x6dfe9820, 0x375fb: 0x6e10e620,\n\t0x375fc: 0x6e10e820, 0x375fd: 0x6e10ea20, 0x375fe: 0x6e10ec20, 0x375ff: 0x6e10ee20,\n\t// Block 0xdd8, offset 0x37600\n\t0x37600: 0x6e10f020, 0x37601: 0x6e10f220, 0x37602: 0x6e10f420, 0x37603: 0x6e10f620,\n\t0x37604: 0x6e10f820, 0x37605: 0x6e10fa20, 0x37606: 0x6e10fc20, 0x37607: 0x6e10fe20,\n\t0x37608: 0x6e110020, 0x37609: 0x6e1f7a20, 0x3760a: 0x6e2abc20, 0x3760b: 0x6e2abe20,\n\t0x3760c: 0x6e334620, 0x3760d: 0x6e334820, 0x3760e: 0x6e395620, 0x3760f: 0x6e334a20,\n\t0x37610: 0x6e334c20, 0x37611: 0x6e334e20, 0x37612: 0x6e395820, 0x37613: 0x6e3daa20,\n\t0x37614: 0x6e444e20, 0x37615: 0x6c258e20, 0x37616: 0x6c259020, 0x37617: 0x6c3d9420,\n\t0x37618: 0x6c3d9620, 0x37619: 0x6c5be620, 0x3761a: 0x6c5be820, 0x3761b: 0x6c5bea20,\n\t0x3761c: 0x6c5bec20, 0x3761d: 0x6c5bee20, 0x3761e: 0x6c5bf020, 0x3761f: 0x6c5bf220,\n\t0x37620: 0x6c7f0c20, 0x37621: 0x6c7f0e20, 0x37622: 0x6c7f1020, 0x37623: 0x6c7f1220,\n\t0x37624: 0x6c7f1420, 0x37625: 0x6c7f1620, 0x37626: 0x6c7f1820, 0x37627: 0x6c7f1a20,\n\t0x37628: 0x6c7f1c20, 0x37629: 0x6c7f1e20, 0x3762a: 0x6c7f2020, 0x3762b: 0x6c7f2220,\n\t0x3762c: 0x6c7f2420, 0x3762d: 0x6c7f2620, 0x3762e: 0x6c7f2820, 0x3762f: 0x6c7f2a20,\n\t0x37630: 0x6c7f2c20, 0x37631: 0x6ca7ca20, 0x37632: 0x6ca7cc20, 0x37633: 0x6ca7ce20,\n\t0x37634: 0x6ca7d020, 0x37635: 0x6ca7d220, 0x37636: 0x6ca7d420, 0x37637: 0x6ca7d620,\n\t0x37638: 0x6ca7d820, 0x37639: 0x6ca7da20, 0x3763a: 0x6ca7dc20, 0x3763b: 0x6ca7de20,\n\t0x3763c: 0x6ca7e020, 0x3763d: 0x6ca7e220, 0x3763e: 0x6cd61a20, 0x3763f: 0x6cd61c20,\n\t// Block 0xdd9, offset 0x37640\n\t0x37640: 0x6cd61e20, 0x37641: 0x6cd62020, 0x37642: 0x6cd62220, 0x37643: 0x6cd62420,\n\t0x37644: 0x6cd62620, 0x37645: 0x6cd62820, 0x37646: 0x6cd62a20, 0x37647: 0x6cd62c20,\n\t0x37648: 0x6cd62e20, 0x37649: 0x6cd63020, 0x3764a: 0x6d049620, 0x3764b: 0x6d049820,\n\t0x3764c: 0x6d049a20, 0x3764d: 0x6d049c20, 0x3764e: 0x6d049e20, 0x3764f: 0x6d04a020,\n\t0x37650: 0x6d04a220, 0x37651: 0x6d04a420, 0x37652: 0x6d04a620, 0x37653: 0x6d04a820,\n\t0x37654: 0x6d04aa20, 0x37655: 0x6d04ac20, 0x37656: 0x6d04ae20, 0x37657: 0x6d04b020,\n\t0x37658: 0x6d321020, 0x37659: 0x6d321220, 0x3765a: 0x6d321420, 0x3765b: 0x6d321620,\n\t0x3765c: 0x6d321820, 0x3765d: 0x6d321a20, 0x3765e: 0x6d321c20, 0x3765f: 0x6d321e20,\n\t0x37660: 0x6d322020, 0x37661: 0x6d322220, 0x37662: 0x6d322420, 0x37663: 0x6d322620,\n\t0x37664: 0x6d322820, 0x37665: 0x6d5eb620, 0x37666: 0x6d5eb820, 0x37667: 0x6d5eba20,\n\t0x37668: 0x6d5ebc20, 0x37669: 0x6d5ebe20, 0x3766a: 0x6d5ec020, 0x3766b: 0x6d5ec220,\n\t0x3766c: 0x6d5ec420, 0x3766d: 0x6d892420, 0x3766e: 0x6d892620, 0x3766f: 0x6dad9020,\n\t0x37670: 0x6d892820, 0x37671: 0x6d892a20, 0x37672: 0x6dad9220, 0x37673: 0x6dad9420,\n\t0x37674: 0x6dad9620, 0x37675: 0x6dad9820, 0x37676: 0x6dad9a20, 0x37677: 0x6dad9c20,\n\t0x37678: 0x6dad9e20, 0x37679: 0x6dada020, 0x3767a: 0x6de80820, 0x3767b: 0x6dada220,\n\t0x3767c: 0x6dcd3c20, 0x3767d: 0x6dcd3e20, 0x3767e: 0x6dcd4020, 0x3767f: 0x6dcd4220,\n\t// Block 0xdda, offset 0x37680\n\t0x37680: 0x6dcd4420, 0x37681: 0x6dcd4620, 0x37682: 0x6dc73620, 0x37683: 0x6dcd4820,\n\t0x37684: 0x6dcd4a20, 0x37685: 0x6de80a20, 0x37686: 0x6de80c20, 0x37687: 0x6de80e20,\n\t0x37688: 0x6dfe9e20, 0x37689: 0x6dfea020, 0x3768a: 0x6dfea220, 0x3768b: 0x6dfea420,\n\t0x3768c: 0x6dfea620, 0x3768d: 0x6dfea820, 0x3768e: 0x6e110220, 0x3768f: 0x6e110420,\n\t0x37690: 0x6e1f8020, 0x37691: 0x6e1f8220, 0x37692: 0x6e395a20, 0x37693: 0x6e2ac220,\n\t0x37694: 0x6e335020, 0x37695: 0x6e395c20, 0x37696: 0x6e395e20, 0x37697: 0x6c141220,\n\t0x37698: 0x6c259420, 0x37699: 0x6c3d9e20, 0x3769a: 0x6c3da020, 0x3769b: 0x6c3da220,\n\t0x3769c: 0x6c3da420, 0x3769d: 0x6c5c0820, 0x3769e: 0x6c5c0a20, 0x3769f: 0x6c5c0c20,\n\t0x376a0: 0x6c5c0e20, 0x376a1: 0x6c5c1020, 0x376a2: 0x6c5c1220, 0x376a3: 0x6c5c1420,\n\t0x376a4: 0x6c5c1620, 0x376a5: 0x6c5c1820, 0x376a6: 0x6c5c1a20, 0x376a7: 0x6c5c1c20,\n\t0x376a8: 0x6c5c1e20, 0x376a9: 0x6c5c2020, 0x376aa: 0x6c5c2220, 0x376ab: 0x6c5c2420,\n\t0x376ac: 0x6c5c2620, 0x376ad: 0x6c5c2820, 0x376ae: 0x6c5c2a20, 0x376af: 0x6c7f6220,\n\t0x376b0: 0x6c7f6420, 0x376b1: 0x6c7f6620, 0x376b2: 0x6c7f6820, 0x376b3: 0x6c7f6a20,\n\t0x376b4: 0x6c7f6c20, 0x376b5: 0x6c7f6e20, 0x376b6: 0x6c7f7020, 0x376b7: 0x6c7f7220,\n\t0x376b8: 0x6c7f7420, 0x376b9: 0x6c7f7620, 0x376ba: 0x6c7f7820, 0x376bb: 0x6c7f7a20,\n\t0x376bc: 0x6c7f7c20, 0x376bd: 0x6c7f7e20, 0x376be: 0x6c7f8020, 0x376bf: 0x6c7f8220,\n\t// Block 0xddb, offset 0x376c0\n\t0x376c0: 0x6c7f8420, 0x376c1: 0x6c7f8620, 0x376c2: 0x6c7f8820, 0x376c3: 0x6c7f8a20,\n\t0x376c4: 0x6c7f8c20, 0x376c5: 0x6c7f8e20, 0x376c6: 0x6c7f9020, 0x376c7: 0x6c7f9220,\n\t0x376c8: 0x6c7f9420, 0x376c9: 0x6c7f9620, 0x376ca: 0x6c7f9820, 0x376cb: 0x6c7f9a20,\n\t0x376cc: 0x6ca84c20, 0x376cd: 0x6ca84e20, 0x376ce: 0x6ca85020, 0x376cf: 0x6ca85220,\n\t0x376d0: 0x6ca85420, 0x376d1: 0x6ca85620, 0x376d2: 0x6ca85820, 0x376d3: 0x6ca85a20,\n\t0x376d4: 0x6ca85c20, 0x376d5: 0x6ca85e20, 0x376d6: 0x6ca86020, 0x376d7: 0x6ca86220,\n\t0x376d8: 0x6ca86420, 0x376d9: 0x6ca86620, 0x376da: 0x6ca86820, 0x376db: 0x6ca86a20,\n\t0x376dc: 0x6ca86c20, 0x376dd: 0x6ca86e20, 0x376de: 0x6ca87020, 0x376df: 0x6ca87220,\n\t0x376e0: 0x6ca87420, 0x376e1: 0x6ca87620, 0x376e2: 0x6ca87820, 0x376e3: 0x6ca87a20,\n\t0x376e4: 0x6ca87c20, 0x376e5: 0x6ca87e20, 0x376e6: 0x6ca88020, 0x376e7: 0x6ca88220,\n\t0x376e8: 0x6ca88420, 0x376e9: 0x6ca88620, 0x376ea: 0x6cd69020, 0x376eb: 0x6cd69220,\n\t0x376ec: 0x6cd69420, 0x376ed: 0x6cd69620, 0x376ee: 0x6cd69820, 0x376ef: 0x6cd69a20,\n\t0x376f0: 0x6cd69c20, 0x376f1: 0x6cd69e20, 0x376f2: 0x6cd6a020, 0x376f3: 0x6cd6a220,\n\t0x376f4: 0x6cd6a420, 0x376f5: 0x6cd6a620, 0x376f6: 0x6cd6a820, 0x376f7: 0x6cd6aa20,\n\t0x376f8: 0x6cd6ac20, 0x376f9: 0x6cd6ae20, 0x376fa: 0x6cd6b020, 0x376fb: 0x6cd6b220,\n\t0x376fc: 0x6cd6b420, 0x376fd: 0x6cd6b620, 0x376fe: 0x6cd6b820, 0x376ff: 0x6ca88820,\n\t// Block 0xddc, offset 0x37700\n\t0x37700: 0x6cd6ba20, 0x37701: 0x6cd6bc20, 0x37702: 0x6cd6be20, 0x37703: 0x6cd6c020,\n\t0x37704: 0x6cd6c220, 0x37705: 0x6cd6c420, 0x37706: 0x6cd6c620, 0x37707: 0x6cd6c820,\n\t0x37708: 0x6cd6ca20, 0x37709: 0x6cd6cc20, 0x3770a: 0x6cd6ce20, 0x3770b: 0x6cd6d020,\n\t0x3770c: 0x6cd6d220, 0x3770d: 0x6cd6d420, 0x3770e: 0x6cd6d620, 0x3770f: 0x6cd6d820,\n\t0x37710: 0x6d051220, 0x37711: 0x6d051420, 0x37712: 0x6d051620, 0x37713: 0x6d051820,\n\t0x37714: 0x6d051a20, 0x37715: 0x6d051c20, 0x37716: 0x6d051e20, 0x37717: 0x6d052020,\n\t0x37718: 0x6d052220, 0x37719: 0x6d052420, 0x3771a: 0x6d052620, 0x3771b: 0x6d052820,\n\t0x3771c: 0x6d052a20, 0x3771d: 0x6d052c20, 0x3771e: 0x6d052e20, 0x3771f: 0x6d053020,\n\t0x37720: 0x6d053220, 0x37721: 0x6d053420, 0x37722: 0x6d053620, 0x37723: 0x6d053820,\n\t0x37724: 0x6d053a20, 0x37725: 0x6d053c20, 0x37726: 0x6d053e20, 0x37727: 0x6d054020,\n\t0x37728: 0x6d054220, 0x37729: 0x6d054420, 0x3772a: 0x6d054620, 0x3772b: 0x6d054820,\n\t0x3772c: 0x6d054a20, 0x3772d: 0x6d054c20, 0x3772e: 0x6d054e20, 0x3772f: 0x6d055020,\n\t0x37730: 0x6d055220, 0x37731: 0x6d055420, 0x37732: 0x6d055620, 0x37733: 0x6d055820,\n\t0x37734: 0x6d055a20, 0x37735: 0x6d055c20, 0x37736: 0x6d055e20, 0x37737: 0x6d056020,\n\t0x37738: 0x6d056220, 0x37739: 0x6d056420, 0x3773a: 0x6d056620, 0x3773b: 0x6d056820,\n\t0x3773c: 0x6d056a20, 0x3773d: 0x6d056c20, 0x3773e: 0x6d056e20, 0x3773f: 0x6d057020,\n\t// Block 0xddd, offset 0x37740\n\t0x37740: 0x6d057220, 0x37741: 0x6d057420, 0x37742: 0x6d057620, 0x37743: 0x6d057820,\n\t0x37744: 0x6d057a20, 0x37745: 0x6d057c20, 0x37746: 0x6d057e20, 0x37747: 0x6d058020,\n\t0x37748: 0x6d058220, 0x37749: 0x6d058420, 0x3774a: 0x6d058620, 0x3774b: 0x6d058820,\n\t0x3774c: 0x6d058a20, 0x3774d: 0x6d32a220, 0x3774e: 0x6d32a420, 0x3774f: 0x6d32a620,\n\t0x37750: 0x6d32a820, 0x37751: 0x6d32aa20, 0x37752: 0x6d32ac20, 0x37753: 0x6d32ae20,\n\t0x37754: 0x6d32b020, 0x37755: 0x6d32b220, 0x37756: 0x6d32b420, 0x37757: 0x6d32b620,\n\t0x37758: 0x6d32b820, 0x37759: 0x6d32ba20, 0x3775a: 0x6d32bc20, 0x3775b: 0x6d32be20,\n\t0x3775c: 0x6d32c020, 0x3775d: 0x6d32c220, 0x3775e: 0x6d32c420, 0x3775f: 0x6d32c620,\n\t0x37760: 0x6d32c820, 0x37761: 0x6d32ca20, 0x37762: 0x6d32cc20, 0x37763: 0x6d32ce20,\n\t0x37764: 0x6d32d020, 0x37765: 0x6d32d220, 0x37766: 0x6d32d420, 0x37767: 0x6d32d620,\n\t0x37768: 0x6d32d820, 0x37769: 0x6d32da20, 0x3776a: 0x6d32dc20, 0x3776b: 0x6d32de20,\n\t0x3776c: 0x6d32e020, 0x3776d: 0x6d32e220, 0x3776e: 0x6d32e420, 0x3776f: 0x6d32e620,\n\t0x37770: 0x6d32e820, 0x37771: 0x6d32ea20, 0x37772: 0x6d32ec20, 0x37773: 0x6d32ee20,\n\t0x37774: 0x6d32f020, 0x37775: 0x6d32f220, 0x37776: 0x6d32f420, 0x37777: 0x6d32f620,\n\t0x37778: 0x6d32f820, 0x37779: 0x6d32fa20, 0x3777a: 0x6d32fc20, 0x3777b: 0x6d32fe20,\n\t0x3777c: 0x6d330020, 0x3777d: 0x6d330220, 0x3777e: 0x6d330420, 0x3777f: 0x6d330620,\n\t// Block 0xdde, offset 0x37780\n\t0x37780: 0x6d330820, 0x37781: 0x6d330a20, 0x37782: 0x6d330c20, 0x37783: 0x6d330e20,\n\t0x37784: 0x6d331020, 0x37785: 0x6d331220, 0x37786: 0x6d331420, 0x37787: 0x6d331620,\n\t0x37788: 0x6d331820, 0x37789: 0x6d331a20, 0x3778a: 0x6d331c20, 0x3778b: 0x6d331e20,\n\t0x3778c: 0x6d332020, 0x3778d: 0x6d332220, 0x3778e: 0x6d332420, 0x3778f: 0x6d332620,\n\t0x37790: 0x6d332820, 0x37791: 0x6d5f4e20, 0x37792: 0x6d5f5020, 0x37793: 0x6d5f5220,\n\t0x37794: 0x6d5f5420, 0x37795: 0x6d5f5620, 0x37796: 0x6d5f5820, 0x37797: 0x6d5f5a20,\n\t0x37798: 0x6d5f5c20, 0x37799: 0x6d5f5e20, 0x3779a: 0x6d5f6020, 0x3779b: 0x6d5f6220,\n\t0x3779c: 0x6d5f6420, 0x3779d: 0x6d5f6620, 0x3779e: 0x6d5f6820, 0x3779f: 0x6d5f6a20,\n\t0x377a0: 0x6d5f6c20, 0x377a1: 0x6d5f6e20, 0x377a2: 0x6d5f7020, 0x377a3: 0x6d5f7220,\n\t0x377a4: 0x6d5f7420, 0x377a5: 0x6d5f7620, 0x377a6: 0x6d5f7820, 0x377a7: 0x6d5f7a20,\n\t0x377a8: 0x6d5f7c20, 0x377a9: 0x6d5f7e20, 0x377aa: 0x6d5f8020, 0x377ab: 0x6d5f8220,\n\t0x377ac: 0x6d5f8420, 0x377ad: 0x6d5f8620, 0x377ae: 0x6d5f8820, 0x377af: 0x6d5f8a20,\n\t0x377b0: 0x6d5f8c20, 0x377b1: 0x6d5f8e20, 0x377b2: 0x6d5f9020, 0x377b3: 0x6d5f9220,\n\t0x377b4: 0x6d5f9420, 0x377b5: 0x6d5f9620, 0x377b6: 0x6d5f9820, 0x377b7: 0x6d5f9a20,\n\t0x377b8: 0x6d5f9c20, 0x377b9: 0x6d5f9e20, 0x377ba: 0x6d5fa020, 0x377bb: 0x6d5fa220,\n\t0x377bc: 0x6d5fa420, 0x377bd: 0x6d5fa620, 0x377be: 0x6d5fa820, 0x377bf: 0x6d5faa20,\n\t// Block 0xddf, offset 0x377c0\n\t0x377c0: 0x6d5fac20, 0x377c1: 0x6d5fae20, 0x377c2: 0x6d5fb020, 0x377c3: 0x6d5fb220,\n\t0x377c4: 0x6d5fb420, 0x377c5: 0x6d5fb620, 0x377c6: 0x6d5fb820, 0x377c7: 0x6d5fba20,\n\t0x377c8: 0x6d5fbc20, 0x377c9: 0x6d5fbe20, 0x377ca: 0x6d5fc020, 0x377cb: 0x6d5fc220,\n\t0x377cc: 0x6d5fc420, 0x377cd: 0x6d5fc620, 0x377ce: 0x6d5fc820, 0x377cf: 0x6d5fca20,\n\t0x377d0: 0x6d5fcc20, 0x377d1: 0x6d5fce20, 0x377d2: 0x6d5fd020, 0x377d3: 0x6d5fd220,\n\t0x377d4: 0x6d5fd420, 0x377d5: 0x6d5fd620, 0x377d6: 0x6d5fd820, 0x377d7: 0x6d5fda20,\n\t0x377d8: 0x6d898620, 0x377d9: 0x6d898820, 0x377da: 0x6d898a20, 0x377db: 0x6d898c20,\n\t0x377dc: 0x6d898e20, 0x377dd: 0x6d899020, 0x377de: 0x6d899220, 0x377df: 0x6d899420,\n\t0x377e0: 0x6d899620, 0x377e1: 0x6d899820, 0x377e2: 0x6d899a20, 0x377e3: 0x6d899c20,\n\t0x377e4: 0x6d899e20, 0x377e5: 0x6d89a020, 0x377e6: 0x6d89a220, 0x377e7: 0x6d89a420,\n\t0x377e8: 0x6d89a620, 0x377e9: 0x6d89a820, 0x377ea: 0x6d89aa20, 0x377eb: 0x6d89ac20,\n\t0x377ec: 0x6d89ae20, 0x377ed: 0x6d89b020, 0x377ee: 0x6d89b220, 0x377ef: 0x6d89b420,\n\t0x377f0: 0x6d89b620, 0x377f1: 0x6d89b820, 0x377f2: 0x6d89ba20, 0x377f3: 0x6d89bc20,\n\t0x377f4: 0x6d89be20, 0x377f5: 0x6d89c020, 0x377f6: 0x6d89c220, 0x377f7: 0x6d89c420,\n\t0x377f8: 0x6d89c620, 0x377f9: 0x6d89c820, 0x377fa: 0x6d89ca20, 0x377fb: 0x6d89cc20,\n\t0x377fc: 0x6d89ce20, 0x377fd: 0x6d89d020, 0x377fe: 0x6d89d220, 0x377ff: 0x6d89d420,\n\t// Block 0xde0, offset 0x37800\n\t0x37800: 0x6d89d620, 0x37801: 0x6d89d820, 0x37802: 0x6d89da20, 0x37803: 0x6d89dc20,\n\t0x37804: 0x6d89de20, 0x37805: 0x6d89e020, 0x37806: 0x6d89e220, 0x37807: 0x6d89e420,\n\t0x37808: 0x6d89e620, 0x37809: 0x6d89e820, 0x3780a: 0x6d89ea20, 0x3780b: 0x6d89ec20,\n\t0x3780c: 0x6d89ee20, 0x3780d: 0x6d89f020, 0x3780e: 0x6d89f220, 0x3780f: 0x6d89f420,\n\t0x37810: 0x6d89f620, 0x37811: 0x6d89f820, 0x37812: 0x6d89fa20, 0x37813: 0x6d89fc20,\n\t0x37814: 0x6d89fe20, 0x37815: 0x6d8a0020, 0x37816: 0x6d8a0220, 0x37817: 0x6d8a0420,\n\t0x37818: 0x6d8a0620, 0x37819: 0x6d8a0820, 0x3781a: 0x6d8a0a20, 0x3781b: 0x6d8a0c20,\n\t0x3781c: 0x6d8a0e20, 0x3781d: 0x6d8a1020, 0x3781e: 0x6d8a1220, 0x3781f: 0x6d8a1420,\n\t0x37820: 0x6d8a1620, 0x37821: 0x6d8a1820, 0x37822: 0x6d8a1a20, 0x37823: 0x6d8a1c20,\n\t0x37824: 0x6d8a1e20, 0x37825: 0x6d8a2020, 0x37826: 0x6d8a2220, 0x37827: 0x6d8a2420,\n\t0x37828: 0x6d8a2620, 0x37829: 0x6d8a2820, 0x3782a: 0x6d8a2a20, 0x3782b: 0x6d8a2c20,\n\t0x3782c: 0x6d8a2e20, 0x3782d: 0x6d8a3020, 0x3782e: 0x6d8a3220, 0x3782f: 0x6d8a3420,\n\t0x37830: 0x6d8a3620, 0x37831: 0x6d8a3820, 0x37832: 0x6d8a3a20, 0x37833: 0x6d8a3c20,\n\t0x37834: 0x6d8a3e20, 0x37835: 0x6dae1220, 0x37836: 0x6dae1420, 0x37837: 0x6dae1620,\n\t0x37838: 0x6dae1820, 0x37839: 0x6dae1a20, 0x3783a: 0x6dae1c20, 0x3783b: 0x6dae1e20,\n\t0x3783c: 0x6dae2020, 0x3783d: 0x6dae2220, 0x3783e: 0x6dae2420, 0x3783f: 0x6dae2620,\n\t// Block 0xde1, offset 0x37840\n\t0x37840: 0x6dae2820, 0x37841: 0x6dae2a20, 0x37842: 0x6dae2c20, 0x37843: 0x6dae2e20,\n\t0x37844: 0x6dae3020, 0x37845: 0x6dae3220, 0x37846: 0x6dae3420, 0x37847: 0x6dae3620,\n\t0x37848: 0x6dae3820, 0x37849: 0x6dae3a20, 0x3784a: 0x6dae3c20, 0x3784b: 0x6dae3e20,\n\t0x3784c: 0x6dae4020, 0x3784d: 0x6dae4220, 0x3784e: 0x6dae4420, 0x3784f: 0x6dae4620,\n\t0x37850: 0x6dae4820, 0x37851: 0x6dae4a20, 0x37852: 0x6dae4c20, 0x37853: 0x6dae4e20,\n\t0x37854: 0x6dae5020, 0x37855: 0x6dae5220, 0x37856: 0x6dae5420, 0x37857: 0x6dae5620,\n\t0x37858: 0x6dae5820, 0x37859: 0x6dae5a20, 0x3785a: 0x6dae5c20, 0x3785b: 0x6dae5e20,\n\t0x3785c: 0x6dae6020, 0x3785d: 0x6dae6220, 0x3785e: 0x6dae6420, 0x3785f: 0x6dae6620,\n\t0x37860: 0x6dae6820, 0x37861: 0x6dae6a20, 0x37862: 0x6dae6c20, 0x37863: 0x6dae6e20,\n\t0x37864: 0x6dae7020, 0x37865: 0x6dae7220, 0x37866: 0x6dae7420, 0x37867: 0x6dae7620,\n\t0x37868: 0x6dae7820, 0x37869: 0x6dae7a20, 0x3786a: 0x6dae7c20, 0x3786b: 0x6dae7e20,\n\t0x3786c: 0x6dae8020, 0x3786d: 0x6dae8220, 0x3786e: 0x6dae8420, 0x3786f: 0x6dae8620,\n\t0x37870: 0x6dae8820, 0x37871: 0x6dae8a20, 0x37872: 0x6dae8c20, 0x37873: 0x6dae8e20,\n\t0x37874: 0x6dae9020, 0x37875: 0x6dae9220, 0x37876: 0x6dae9420, 0x37877: 0x6dae9620,\n\t0x37878: 0x6dae9820, 0x37879: 0x6dae9a20, 0x3787a: 0x6dae9c20, 0x3787b: 0x6dae9e20,\n\t0x3787c: 0x6daea020, 0x3787d: 0x6daea220, 0x3787e: 0x6daea420, 0x3787f: 0x6daea620,\n\t// Block 0xde2, offset 0x37880\n\t0x37880: 0x6daea820, 0x37881: 0x6dcda420, 0x37882: 0x6daeaa20, 0x37883: 0x6daeac20,\n\t0x37884: 0x6daeae20, 0x37885: 0x6daeb020, 0x37886: 0x6dcda620, 0x37887: 0x6dcda820,\n\t0x37888: 0x6dcdaa20, 0x37889: 0x6dcdac20, 0x3788a: 0x6dcdae20, 0x3788b: 0x6dcdb020,\n\t0x3788c: 0x6dcdb220, 0x3788d: 0x6dcdb420, 0x3788e: 0x6dcdb620, 0x3788f: 0x6dcdb820,\n\t0x37890: 0x6dcdba20, 0x37891: 0x6dcdbc20, 0x37892: 0x6dcdbe20, 0x37893: 0x6dcdc020,\n\t0x37894: 0x6dcdc220, 0x37895: 0x6dcdc420, 0x37896: 0x6dcdc620, 0x37897: 0x6dcdc820,\n\t0x37898: 0x6dcdca20, 0x37899: 0x6dcdcc20, 0x3789a: 0x6dcdce20, 0x3789b: 0x6dcdd020,\n\t0x3789c: 0x6dcdd220, 0x3789d: 0x6dcdd420, 0x3789e: 0x6dcdd620, 0x3789f: 0x6dcdd820,\n\t0x378a0: 0x6dcdda20, 0x378a1: 0x6dcddc20, 0x378a2: 0x6dcdde20, 0x378a3: 0x6dcde020,\n\t0x378a4: 0x6dcde220, 0x378a5: 0x6dcde420, 0x378a6: 0x6dcde620, 0x378a7: 0x6dcde820,\n\t0x378a8: 0x6dcdea20, 0x378a9: 0x6dcdec20, 0x378aa: 0x6dcdee20, 0x378ab: 0x6dcdf020,\n\t0x378ac: 0x6dcdf220, 0x378ad: 0x6dcdf420, 0x378ae: 0x6dcdf620, 0x378af: 0x6dcdf820,\n\t0x378b0: 0x6dcdfa20, 0x378b1: 0x6dcdfc20, 0x378b2: 0x6dcdfe20, 0x378b3: 0x6dce0020,\n\t0x378b4: 0x6dce0220, 0x378b5: 0x6dce0420, 0x378b6: 0x6dce0620, 0x378b7: 0x6dce0820,\n\t0x378b8: 0x6dce0a20, 0x378b9: 0x6dce0c20, 0x378ba: 0x6dce0e20, 0x378bb: 0x6dce1020,\n\t0x378bc: 0x6dce1220, 0x378bd: 0x6dce1420, 0x378be: 0x6dce1620, 0x378bf: 0x6dce1820,\n\t// Block 0xde3, offset 0x378c0\n\t0x378c0: 0x6dce1a20, 0x378c1: 0x6dce1c20, 0x378c2: 0x6dce1e20, 0x378c3: 0x6dce2020,\n\t0x378c4: 0x6dce2220, 0x378c5: 0x6dce2420, 0x378c6: 0x6dce2620, 0x378c7: 0x6dce2820,\n\t0x378c8: 0x6dce2a20, 0x378c9: 0x6dce2c20, 0x378ca: 0x6dce2e20, 0x378cb: 0x6dce3020,\n\t0x378cc: 0x6dce3220, 0x378cd: 0x6dce3420, 0x378ce: 0x6daeb220, 0x378cf: 0x6dce3620,\n\t0x378d0: 0x6dce3820, 0x378d1: 0x6dce3a20, 0x378d2: 0x6dce3c20, 0x378d3: 0x6dce3e20,\n\t0x378d4: 0x6dce4020, 0x378d5: 0x6dce4220, 0x378d6: 0x6dce4420, 0x378d7: 0x6dce4620,\n\t0x378d8: 0x6dce4820, 0x378d9: 0x6dce4a20, 0x378da: 0x6dce4c20, 0x378db: 0x6dce4e20,\n\t0x378dc: 0x6dce5020, 0x378dd: 0x6dce5220, 0x378de: 0x6dce5420, 0x378df: 0x6dce5620,\n\t0x378e0: 0x6dce5820, 0x378e1: 0x6de84820, 0x378e2: 0x6de84a20, 0x378e3: 0x6de84c20,\n\t0x378e4: 0x6de84e20, 0x378e5: 0x6de85020, 0x378e6: 0x6de85220, 0x378e7: 0x6de85420,\n\t0x378e8: 0x6de85620, 0x378e9: 0x6de85820, 0x378ea: 0x6de85a20, 0x378eb: 0x6de85c20,\n\t0x378ec: 0x6de85e20, 0x378ed: 0x6de86020, 0x378ee: 0x6de86220, 0x378ef: 0x6de86420,\n\t0x378f0: 0x6de86620, 0x378f1: 0x6de86820, 0x378f2: 0x6de86a20, 0x378f3: 0x6de86c20,\n\t0x378f4: 0x6de86e20, 0x378f5: 0x6de87020, 0x378f6: 0x6de87220, 0x378f7: 0x6de87420,\n\t0x378f8: 0x6de87620, 0x378f9: 0x6de87820, 0x378fa: 0x6de87a20, 0x378fb: 0x6de87c20,\n\t0x378fc: 0x6de87e20, 0x378fd: 0x6de88020, 0x378fe: 0x6de88220, 0x378ff: 0x6de88420,\n\t// Block 0xde4, offset 0x37900\n\t0x37900: 0x6de88620, 0x37901: 0x6de88820, 0x37902: 0x6de88a20, 0x37903: 0x6de88c20,\n\t0x37904: 0x6de88e20, 0x37905: 0x6de89020, 0x37906: 0x6de89220, 0x37907: 0x6de89420,\n\t0x37908: 0x6de89620, 0x37909: 0x6de89820, 0x3790a: 0x6de89a20, 0x3790b: 0x6de89c20,\n\t0x3790c: 0x6de89e20, 0x3790d: 0x6de8a020, 0x3790e: 0x6de8a220, 0x3790f: 0x6de8a420,\n\t0x37910: 0x6de8a620, 0x37911: 0x6de8a820, 0x37912: 0x6de8aa20, 0x37913: 0x6de8ac20,\n\t0x37914: 0x6de8ae20, 0x37915: 0x6de8b020, 0x37916: 0x6de8b220, 0x37917: 0x6de8b420,\n\t0x37918: 0x6de8b620, 0x37919: 0x6de8b820, 0x3791a: 0x6de8ba20, 0x3791b: 0x6de8bc20,\n\t0x3791c: 0x6dfec820, 0x3791d: 0x6dfeca20, 0x3791e: 0x6dfecc20, 0x3791f: 0x6dfece20,\n\t0x37920: 0x6dfed020, 0x37921: 0x6dfed220, 0x37922: 0x6dfed420, 0x37923: 0x6dfed620,\n\t0x37924: 0x6dfed820, 0x37925: 0x6dfeda20, 0x37926: 0x6dfedc20, 0x37927: 0x6dfede20,\n\t0x37928: 0x6dfee020, 0x37929: 0x6dfee220, 0x3792a: 0x6dfee420, 0x3792b: 0x6dfee620,\n\t0x3792c: 0x6dfee820, 0x3792d: 0x6dfeea20, 0x3792e: 0x6dfeec20, 0x3792f: 0x6dfeee20,\n\t0x37930: 0x6dfef020, 0x37931: 0x6dfef220, 0x37932: 0x6dfef420, 0x37933: 0x6dfef620,\n\t0x37934: 0x6dfef820, 0x37935: 0x6dfefa20, 0x37936: 0x6dfefc20, 0x37937: 0x6dfefe20,\n\t0x37938: 0x6dff0020, 0x37939: 0x6dff0220, 0x3793a: 0x6dff0420, 0x3793b: 0x6dff0620,\n\t0x3793c: 0x6dff0820, 0x3793d: 0x6dff0a20, 0x3793e: 0x6dff0c20, 0x3793f: 0x6dff0e20,\n\t// Block 0xde5, offset 0x37940\n\t0x37940: 0x6dff1020, 0x37941: 0x6dff1220, 0x37942: 0x6dff1420, 0x37943: 0x6dff1620,\n\t0x37944: 0x6dff1820, 0x37945: 0x6e112220, 0x37946: 0x6e112420, 0x37947: 0x6e112620,\n\t0x37948: 0x6e112820, 0x37949: 0x6e112a20, 0x3794a: 0x6e112c20, 0x3794b: 0x6e112e20,\n\t0x3794c: 0x6e113020, 0x3794d: 0x6e113220, 0x3794e: 0x6e113420, 0x3794f: 0x6e113620,\n\t0x37950: 0x6e113820, 0x37951: 0x6e113a20, 0x37952: 0x6e113c20, 0x37953: 0x6e113e20,\n\t0x37954: 0x6e114020, 0x37955: 0x6e114220, 0x37956: 0x6e114420, 0x37957: 0x6e114620,\n\t0x37958: 0x6e114820, 0x37959: 0x6e114a20, 0x3795a: 0x6e114c20, 0x3795b: 0x6e114e20,\n\t0x3795c: 0x6e115020, 0x3795d: 0x6e115220, 0x3795e: 0x6e115420, 0x3795f: 0x6e115620,\n\t0x37960: 0x6e115820, 0x37961: 0x6e115a20, 0x37962: 0x6e115c20, 0x37963: 0x6e115e20,\n\t0x37964: 0x6e116020, 0x37965: 0x6e116220, 0x37966: 0x6e116420, 0x37967: 0x6e116620,\n\t0x37968: 0x6e116820, 0x37969: 0x6e116a20, 0x3796a: 0x6e116c20, 0x3796b: 0x6e116e20,\n\t0x3796c: 0x6e117020, 0x3796d: 0x6e117220, 0x3796e: 0x6e117420, 0x3796f: 0x6e117620,\n\t0x37970: 0x6e117820, 0x37971: 0x6e117a20, 0x37972: 0x6e117c20, 0x37973: 0x6e117e20,\n\t0x37974: 0x6e118020, 0x37975: 0x6e1fa220, 0x37976: 0x6e1fa420, 0x37977: 0x6e1fa620,\n\t0x37978: 0x6e1fa820, 0x37979: 0x6e1faa20, 0x3797a: 0x6e1fac20, 0x3797b: 0x6e1fae20,\n\t0x3797c: 0x6e1fb020, 0x3797d: 0x6e1fb220, 0x3797e: 0x6e1fb420, 0x3797f: 0x6e1fb620,\n\t// Block 0xde6, offset 0x37980\n\t0x37980: 0x6e1fb820, 0x37981: 0x6e1fba20, 0x37982: 0x6e1fbc20, 0x37983: 0x6e1fbe20,\n\t0x37984: 0x6e1fc020, 0x37985: 0x6e1fc220, 0x37986: 0x6e1fc420, 0x37987: 0x6e1fc620,\n\t0x37988: 0x6e1fc820, 0x37989: 0x6e1fca20, 0x3798a: 0x6e1fcc20, 0x3798b: 0x6e1fce20,\n\t0x3798c: 0x6e1fd020, 0x3798d: 0x6e1fd220, 0x3798e: 0x6e1fd420, 0x3798f: 0x6e1fd620,\n\t0x37990: 0x6e1fd820, 0x37991: 0x6e1fda20, 0x37992: 0x6e1fdc20, 0x37993: 0x6e1fde20,\n\t0x37994: 0x6e2ada20, 0x37995: 0x6e2adc20, 0x37996: 0x6e2ade20, 0x37997: 0x6e2ae020,\n\t0x37998: 0x6e2ae220, 0x37999: 0x6e2ae420, 0x3799a: 0x6e2ae620, 0x3799b: 0x6e2ae820,\n\t0x3799c: 0x6e2aea20, 0x3799d: 0x6e2aec20, 0x3799e: 0x6e2aee20, 0x3799f: 0x6e2af020,\n\t0x379a0: 0x6e2af220, 0x379a1: 0x6e2af420, 0x379a2: 0x6e2af620, 0x379a3: 0x6e2af820,\n\t0x379a4: 0x6e2afa20, 0x379a5: 0x6e2afc20, 0x379a6: 0x6e2afe20, 0x379a7: 0x6e2b0020,\n\t0x379a8: 0x6e335620, 0x379a9: 0x6e335820, 0x379aa: 0x6e335a20, 0x379ab: 0x6e335c20,\n\t0x379ac: 0x6e335e20, 0x379ad: 0x6e336020, 0x379ae: 0x6e336220, 0x379af: 0x6e336420,\n\t0x379b0: 0x6e336620, 0x379b1: 0x6e336820, 0x379b2: 0x6e336a20, 0x379b3: 0x6e336c20,\n\t0x379b4: 0x6e336e20, 0x379b5: 0x6e337020, 0x379b6: 0x6e337220, 0x379b7: 0x6e337420,\n\t0x379b8: 0x6e337620, 0x379b9: 0x6e337820, 0x379ba: 0x6e337a20, 0x379bb: 0x6e337c20,\n\t0x379bc: 0x6e396a20, 0x379bd: 0x6e396c20, 0x379be: 0x6e396e20, 0x379bf: 0x6e397020,\n\t// Block 0xde7, offset 0x379c0\n\t0x379c0: 0x6e397220, 0x379c1: 0x6e397420, 0x379c2: 0x6e397620, 0x379c3: 0x6e397820,\n\t0x379c4: 0x6e397a20, 0x379c5: 0x6e397c20, 0x379c6: 0x6e397e20, 0x379c7: 0x6e398020,\n\t0x379c8: 0x6e3db220, 0x379c9: 0x6e3db420, 0x379ca: 0x6e3db620, 0x379cb: 0x6e3db820,\n\t0x379cc: 0x6e3dba20, 0x379cd: 0x6e3dbc20, 0x379ce: 0x6e3dbe20, 0x379cf: 0x6e3dc020,\n\t0x379d0: 0x6e409020, 0x379d1: 0x6e409220, 0x379d2: 0x6e409420, 0x379d3: 0x6e409620,\n\t0x379d4: 0x6e409820, 0x379d5: 0x6e409a20, 0x379d6: 0x6e409c20, 0x379d7: 0x6e42d420,\n\t0x379d8: 0x6e445020, 0x379d9: 0x6e445220, 0x379da: 0x6e42d620, 0x379db: 0x6e42d820,\n\t0x379dc: 0x6e42da20, 0x379dd: 0x6e42dc20, 0x379de: 0x6e445420, 0x379df: 0x6e445620,\n\t0x379e0: 0x6e445820, 0x379e1: 0x6e453620, 0x379e2: 0x6e453820, 0x379e3: 0x6e45c620,\n\t0x379e4: 0x6e463820, 0x379e5: 0x6c259620, 0x379e6: 0x6c259820, 0x379e7: 0x6c3dae20,\n\t0x379e8: 0x6c3db020, 0x379e9: 0x6c3db220, 0x379ea: 0x6c3db420, 0x379eb: 0x6c5c4a20,\n\t0x379ec: 0x6c5c4c20, 0x379ed: 0x6c5c4e20, 0x379ee: 0x6c5c5020, 0x379ef: 0x6c5c5220,\n\t0x379f0: 0x6c5c5420, 0x379f1: 0x6c5c5620, 0x379f2: 0x6c5c5820, 0x379f3: 0x6c7fcc20,\n\t0x379f4: 0x6c7fce20, 0x379f5: 0x6c7fd020, 0x379f6: 0x6c7fd220, 0x379f7: 0x6c7fd420,\n\t0x379f8: 0x6c7fd620, 0x379f9: 0x6c7fd820, 0x379fa: 0x6c7fda20, 0x379fb: 0x6c7fdc20,\n\t0x379fc: 0x6c7fde20, 0x379fd: 0x6c7fe020, 0x379fe: 0x6c7fe220, 0x379ff: 0x6c7fe420,\n\t// Block 0xde8, offset 0x37a00\n\t0x37a00: 0x6c7fe620, 0x37a01: 0x6ca8b620, 0x37a02: 0x6ca8b820, 0x37a03: 0x6ca8ba20,\n\t0x37a04: 0x6ca8bc20, 0x37a05: 0x6ca8be20, 0x37a06: 0x6ca8c020, 0x37a07: 0x6ca8c220,\n\t0x37a08: 0x6ca8c420, 0x37a09: 0x6ca8c620, 0x37a0a: 0x6ca8c820, 0x37a0b: 0x6ca8ca20,\n\t0x37a0c: 0x6ca8cc20, 0x37a0d: 0x6ca8ce20, 0x37a0e: 0x6ca8d020, 0x37a0f: 0x6ca8d220,\n\t0x37a10: 0x6ca8d420, 0x37a11: 0x6ca8d620, 0x37a12: 0x6ca8d820, 0x37a13: 0x6ca8da20,\n\t0x37a14: 0x6ca8dc20, 0x37a15: 0x6ca8de20, 0x37a16: 0x6ca8e020, 0x37a17: 0x6cd70a20,\n\t0x37a18: 0x6ca8e220, 0x37a19: 0x6ca8e420, 0x37a1a: 0x6cd70c20, 0x37a1b: 0x6cd70e20,\n\t0x37a1c: 0x6cd71020, 0x37a1d: 0x6cd71220, 0x37a1e: 0x6cd71420, 0x37a1f: 0x6cd71620,\n\t0x37a20: 0x6cd71820, 0x37a21: 0x6cd71a20, 0x37a22: 0x6cd71c20, 0x37a23: 0x6cd71e20,\n\t0x37a24: 0x6cd72020, 0x37a25: 0x6cd72220, 0x37a26: 0x6cd72420, 0x37a27: 0x6cd72620,\n\t0x37a28: 0x6cd72820, 0x37a29: 0x6cd72a20, 0x37a2a: 0x6cd72c20, 0x37a2b: 0x6cd72e20,\n\t0x37a2c: 0x6cd73020, 0x37a2d: 0x6cd73220, 0x37a2e: 0x6cd73420, 0x37a2f: 0x6cd73620,\n\t0x37a30: 0x6cd73820, 0x37a31: 0x6ca8e620, 0x37a32: 0x6d05b620, 0x37a33: 0x6d05b820,\n\t0x37a34: 0x6d05ba20, 0x37a35: 0x6d05bc20, 0x37a36: 0x6d05be20, 0x37a37: 0x6d05c020,\n\t0x37a38: 0x6d05c220, 0x37a39: 0x6d05c420, 0x37a3a: 0x6d05c620, 0x37a3b: 0x6d05c820,\n\t0x37a3c: 0x6d05ca20, 0x37a3d: 0x6d05cc20, 0x37a3e: 0x6d05ce20, 0x37a3f: 0x6d05d020,\n\t// Block 0xde9, offset 0x37a40\n\t0x37a40: 0x6d05d220, 0x37a41: 0x6d05d420, 0x37a42: 0x6d05d620, 0x37a43: 0x6d05d820,\n\t0x37a44: 0x6d05da20, 0x37a45: 0x6d05dc20, 0x37a46: 0x6d05de20, 0x37a47: 0x6d05e020,\n\t0x37a48: 0x6d05e220, 0x37a49: 0x6d05e420, 0x37a4a: 0x6d05e620, 0x37a4b: 0x6d05e820,\n\t0x37a4c: 0x6d05ea20, 0x37a4d: 0x6d05ec20, 0x37a4e: 0x6d05ee20, 0x37a4f: 0x6d05f020,\n\t0x37a50: 0x6d05f220, 0x37a51: 0x6d05f420, 0x37a52: 0x6d05f620, 0x37a53: 0x6d05f820,\n\t0x37a54: 0x6d05fa20, 0x37a55: 0x6d05fc20, 0x37a56: 0x6d05fe20, 0x37a57: 0x6d060020,\n\t0x37a58: 0x6d335a20, 0x37a59: 0x6d335c20, 0x37a5a: 0x6d335e20, 0x37a5b: 0x6d336020,\n\t0x37a5c: 0x6d336220, 0x37a5d: 0x6d336420, 0x37a5e: 0x6d336620, 0x37a5f: 0x6d336820,\n\t0x37a60: 0x6d336a20, 0x37a61: 0x6d336c20, 0x37a62: 0x6d336e20, 0x37a63: 0x6d337020,\n\t0x37a64: 0x6d337220, 0x37a65: 0x6d337420, 0x37a66: 0x6d337620, 0x37a67: 0x6d337820,\n\t0x37a68: 0x6d337a20, 0x37a69: 0x6d337c20, 0x37a6a: 0x6d337e20, 0x37a6b: 0x6d338020,\n\t0x37a6c: 0x6d338220, 0x37a6d: 0x6d338420, 0x37a6e: 0x6d338620, 0x37a6f: 0x6d338820,\n\t0x37a70: 0x6d338a20, 0x37a71: 0x6d338c20, 0x37a72: 0x6d338e20, 0x37a73: 0x6d339020,\n\t0x37a74: 0x6d339220, 0x37a75: 0x6d339420, 0x37a76: 0x6d339620, 0x37a77: 0x6d339820,\n\t0x37a78: 0x6d339a20, 0x37a79: 0x6d339c20, 0x37a7a: 0x6d339e20, 0x37a7b: 0x6d33a020,\n\t0x37a7c: 0x6d33a220, 0x37a7d: 0x6d33a420, 0x37a7e: 0x6d33a620, 0x37a7f: 0x6d33a820,\n\t// Block 0xdea, offset 0x37a80\n\t0x37a80: 0x6d33aa20, 0x37a81: 0x6d601820, 0x37a82: 0x6d601a20, 0x37a83: 0x6d601c20,\n\t0x37a84: 0x6d601e20, 0x37a85: 0x6d602020, 0x37a86: 0x6d602220, 0x37a87: 0x6d602420,\n\t0x37a88: 0x6d602620, 0x37a89: 0x6d602820, 0x37a8a: 0x6d602a20, 0x37a8b: 0x6d602c20,\n\t0x37a8c: 0x6d602e20, 0x37a8d: 0x6d603020, 0x37a8e: 0x6d603220, 0x37a8f: 0x6d603420,\n\t0x37a90: 0x6d603620, 0x37a91: 0x6d603820, 0x37a92: 0x6d603a20, 0x37a93: 0x6d603c20,\n\t0x37a94: 0x6d603e20, 0x37a95: 0x6d604020, 0x37a96: 0x6d604220, 0x37a97: 0x6d604420,\n\t0x37a98: 0x6d604620, 0x37a99: 0x6d604820, 0x37a9a: 0x6d604a20, 0x37a9b: 0x6d604c20,\n\t0x37a9c: 0x6d604e20, 0x37a9d: 0x6d605020, 0x37a9e: 0x6d605220, 0x37a9f: 0x6d605420,\n\t0x37aa0: 0x6d605620, 0x37aa1: 0x6d605820, 0x37aa2: 0x6d605a20, 0x37aa3: 0x6d605c20,\n\t0x37aa4: 0x6d8a6e20, 0x37aa5: 0x6d8a7020, 0x37aa6: 0x6d8a7220, 0x37aa7: 0x6d8a7420,\n\t0x37aa8: 0x6d8a7620, 0x37aa9: 0x6d8a7820, 0x37aaa: 0x6d8a7a20, 0x37aab: 0x6d8a7c20,\n\t0x37aac: 0x6d8a7e20, 0x37aad: 0x6d8a8020, 0x37aae: 0x6d8a8220, 0x37aaf: 0x6d8a8420,\n\t0x37ab0: 0x6d8a8620, 0x37ab1: 0x6d8a8820, 0x37ab2: 0x6d8a8a20, 0x37ab3: 0x6d8a8c20,\n\t0x37ab4: 0x6d8a8e20, 0x37ab5: 0x6d8a9020, 0x37ab6: 0x6d8a9220, 0x37ab7: 0x6d8a9420,\n\t0x37ab8: 0x6d8a9620, 0x37ab9: 0x6d8a9820, 0x37aba: 0x6d8a9a20, 0x37abb: 0x6d8a9c20,\n\t0x37abc: 0x6d8a9e20, 0x37abd: 0x6d8aa020, 0x37abe: 0x6d8aa220, 0x37abf: 0x6daeea20,\n\t// Block 0xdeb, offset 0x37ac0\n\t0x37ac0: 0x6daeec20, 0x37ac1: 0x6daeee20, 0x37ac2: 0x6daef020, 0x37ac3: 0x6daef220,\n\t0x37ac4: 0x6daef420, 0x37ac5: 0x6daef620, 0x37ac6: 0x6daef820, 0x37ac7: 0x6daefa20,\n\t0x37ac8: 0x6daefc20, 0x37ac9: 0x6daefe20, 0x37aca: 0x6daf0020, 0x37acb: 0x6daf0220,\n\t0x37acc: 0x6daf0420, 0x37acd: 0x6daf0620, 0x37ace: 0x6daf0820, 0x37acf: 0x6daf0a20,\n\t0x37ad0: 0x6daf0c20, 0x37ad1: 0x6daf0e20, 0x37ad2: 0x6daf1020, 0x37ad3: 0x6daf1220,\n\t0x37ad4: 0x6daf1420, 0x37ad5: 0x6daf1620, 0x37ad6: 0x6daf1820, 0x37ad7: 0x6dce7c20,\n\t0x37ad8: 0x6dce7e20, 0x37ad9: 0x6dce8020, 0x37ada: 0x6dce8220, 0x37adb: 0x6dce8420,\n\t0x37adc: 0x6dce8620, 0x37add: 0x6dce8820, 0x37ade: 0x6dce8a20, 0x37adf: 0x6dce8c20,\n\t0x37ae0: 0x6dce8e20, 0x37ae1: 0x6dce9020, 0x37ae2: 0x6dce9220, 0x37ae3: 0x6dce9420,\n\t0x37ae4: 0x6dce9620, 0x37ae5: 0x6dce9820, 0x37ae6: 0x6dce9a20, 0x37ae7: 0x6dce9c20,\n\t0x37ae8: 0x6dce9e20, 0x37ae9: 0x6dcea020, 0x37aea: 0x6dcea220, 0x37aeb: 0x6dcea420,\n\t0x37aec: 0x6dcea620, 0x37aed: 0x6dcea820, 0x37aee: 0x6dceaa20, 0x37aef: 0x6dceac20,\n\t0x37af0: 0x6dceae20, 0x37af1: 0x6dceb020, 0x37af2: 0x6dceb220, 0x37af3: 0x6dceb420,\n\t0x37af4: 0x6dceb620, 0x37af5: 0x6dceb820, 0x37af6: 0x6de8d220, 0x37af7: 0x6de8d420,\n\t0x37af8: 0x6de8d620, 0x37af9: 0x6de8d820, 0x37afa: 0x6de8da20, 0x37afb: 0x6de8dc20,\n\t0x37afc: 0x6de8de20, 0x37afd: 0x6de8e020, 0x37afe: 0x6de8e220, 0x37aff: 0x6de8e420,\n\t// Block 0xdec, offset 0x37b00\n\t0x37b00: 0x6de8e620, 0x37b01: 0x6de8e820, 0x37b02: 0x6de8ea20, 0x37b03: 0x6de8ec20,\n\t0x37b04: 0x6de8ee20, 0x37b05: 0x6de8f020, 0x37b06: 0x6de8f220, 0x37b07: 0x6de8f420,\n\t0x37b08: 0x6de8f620, 0x37b09: 0x6de8f820, 0x37b0a: 0x6de8fa20, 0x37b0b: 0x6de8fc20,\n\t0x37b0c: 0x6de8fe20, 0x37b0d: 0x6de90020, 0x37b0e: 0x6de90220, 0x37b0f: 0x6dff2620,\n\t0x37b10: 0x6dff2820, 0x37b11: 0x6dff2a20, 0x37b12: 0x6dff2c20, 0x37b13: 0x6dff2e20,\n\t0x37b14: 0x6dff3020, 0x37b15: 0x6dff3220, 0x37b16: 0x6dff3420, 0x37b17: 0x6e118e20,\n\t0x37b18: 0x6e119020, 0x37b19: 0x6e119220, 0x37b1a: 0x6e119420, 0x37b1b: 0x6e119620,\n\t0x37b1c: 0x6e119820, 0x37b1d: 0x6e119a20, 0x37b1e: 0x6e119c20, 0x37b1f: 0x6e119e20,\n\t0x37b20: 0x6e11a020, 0x37b21: 0x6e1fe820, 0x37b22: 0x6e11a220, 0x37b23: 0x6e11a420,\n\t0x37b24: 0x6e1fea20, 0x37b25: 0x6e1fec20, 0x37b26: 0x6e1fee20, 0x37b27: 0x6e1ff020,\n\t0x37b28: 0x6e1ff220, 0x37b29: 0x6e1ff420, 0x37b2a: 0x6e1ff620, 0x37b2b: 0x6e1ff820,\n\t0x37b2c: 0x6e2b0a20, 0x37b2d: 0x6e2b0c20, 0x37b2e: 0x6e2b0e20, 0x37b2f: 0x6e2b1020,\n\t0x37b30: 0x6e2b1220, 0x37b31: 0x6e338020, 0x37b32: 0x6e338220, 0x37b33: 0x6e338420,\n\t0x37b34: 0x6e338620, 0x37b35: 0x6e338820, 0x37b36: 0x6e398a20, 0x37b37: 0x6e398c20,\n\t0x37b38: 0x6e398e20, 0x37b39: 0x6e399020, 0x37b3a: 0x6e399220, 0x37b3b: 0x6e3dc420,\n\t0x37b3c: 0x6e3dc620, 0x37b3d: 0x6e3dc820, 0x37b3e: 0x6e3dca20, 0x37b3f: 0x6e3dcc20,\n\t// Block 0xded, offset 0x37b40\n\t0x37b40: 0x6e40a020, 0x37b41: 0x6e40a220, 0x37b42: 0x6e453a20, 0x37b43: 0x6e45c820,\n\t0x37b44: 0x6e468a20, 0x37b45: 0x6c3dc420, 0x37b46: 0x6c3dc620, 0x37b47: 0x6c3dc820,\n\t0x37b48: 0x6c3dca20, 0x37b49: 0x6c3dcc20, 0x37b4a: 0x6c3dce20, 0x37b4b: 0x6c3dd020,\n\t0x37b4c: 0x6c5c7a20, 0x37b4d: 0x6c5c7c20, 0x37b4e: 0x6c5c7e20, 0x37b4f: 0x6c5c8020,\n\t0x37b50: 0x6c5c8220, 0x37b51: 0x6c5c8420, 0x37b52: 0x6c5c8620, 0x37b53: 0x6c5c8820,\n\t0x37b54: 0x6c5c8a20, 0x37b55: 0x6c5c8c20, 0x37b56: 0x6c5c8e20, 0x37b57: 0x6c5c9020,\n\t0x37b58: 0x6c5c9220, 0x37b59: 0x6c804620, 0x37b5a: 0x6c804820, 0x37b5b: 0x6c804a20,\n\t0x37b5c: 0x6c804c20, 0x37b5d: 0x6c804e20, 0x37b5e: 0x6c805020, 0x37b5f: 0x6c805220,\n\t0x37b60: 0x6c805420, 0x37b61: 0x6c805620, 0x37b62: 0x6c805820, 0x37b63: 0x6c805a20,\n\t0x37b64: 0x6c805c20, 0x37b65: 0x6c805e20, 0x37b66: 0x6c806020, 0x37b67: 0x6c806220,\n\t0x37b68: 0x6c806420, 0x37b69: 0x6c806620, 0x37b6a: 0x6c806820, 0x37b6b: 0x6c806a20,\n\t0x37b6c: 0x6c806c20, 0x37b6d: 0x6c806e20, 0x37b6e: 0x6c807020, 0x37b6f: 0x6c807220,\n\t0x37b70: 0x6c807420, 0x37b71: 0x6c807620, 0x37b72: 0x6c807820, 0x37b73: 0x6c807a20,\n\t0x37b74: 0x6c807c20, 0x37b75: 0x6c807e20, 0x37b76: 0x6c808020, 0x37b77: 0x6c808220,\n\t0x37b78: 0x6c808420, 0x37b79: 0x6c808620, 0x37b7a: 0x6c808820, 0x37b7b: 0x6c808a20,\n\t0x37b7c: 0x6c808c20, 0x37b7d: 0x6c808e20, 0x37b7e: 0x6c809020, 0x37b7f: 0x6c809220,\n\t// Block 0xdee, offset 0x37b80\n\t0x37b80: 0x6c809420, 0x37b81: 0x6c809620, 0x37b82: 0x6c809820, 0x37b83: 0x6ca95220,\n\t0x37b84: 0x6ca95420, 0x37b85: 0x6ca95620, 0x37b86: 0x6ca95820, 0x37b87: 0x6ca95a20,\n\t0x37b88: 0x6ca95c20, 0x37b89: 0x6ca95e20, 0x37b8a: 0x6ca96020, 0x37b8b: 0x6ca96220,\n\t0x37b8c: 0x6ca96420, 0x37b8d: 0x6ca96620, 0x37b8e: 0x6ca96820, 0x37b8f: 0x6ca96a20,\n\t0x37b90: 0x6ca96c20, 0x37b91: 0x6ca96e20, 0x37b92: 0x6ca97020, 0x37b93: 0x6ca97220,\n\t0x37b94: 0x6ca97420, 0x37b95: 0x6ca97620, 0x37b96: 0x6ca97820, 0x37b97: 0x6ca97a20,\n\t0x37b98: 0x6ca97c20, 0x37b99: 0x6ca97e20, 0x37b9a: 0x6ca98020, 0x37b9b: 0x6ca98220,\n\t0x37b9c: 0x6ca98420, 0x37b9d: 0x6ca98620, 0x37b9e: 0x6ca98820, 0x37b9f: 0x6ca98a20,\n\t0x37ba0: 0x6ca98c20, 0x37ba1: 0x6ca98e20, 0x37ba2: 0x6ca99020, 0x37ba3: 0x6ca99220,\n\t0x37ba4: 0x6ca99420, 0x37ba5: 0x6ca99620, 0x37ba6: 0x6cd7ae20, 0x37ba7: 0x6cd7b020,\n\t0x37ba8: 0x6cd7b220, 0x37ba9: 0x6cd7b420, 0x37baa: 0x6cd7b620, 0x37bab: 0x6cd7b820,\n\t0x37bac: 0x6cd7ba20, 0x37bad: 0x6cd7bc20, 0x37bae: 0x6cd7be20, 0x37baf: 0x6cd7c020,\n\t0x37bb0: 0x6cd7c220, 0x37bb1: 0x6cd7c420, 0x37bb2: 0x6cd7c620, 0x37bb3: 0x6cd7c820,\n\t0x37bb4: 0x6cd7ca20, 0x37bb5: 0x6cd7cc20, 0x37bb6: 0x6cd7ce20, 0x37bb7: 0x6cd7d020,\n\t0x37bb8: 0x6cd7d220, 0x37bb9: 0x6cd7d420, 0x37bba: 0x6cd7d620, 0x37bbb: 0x6cd7d820,\n\t0x37bbc: 0x6cd7da20, 0x37bbd: 0x6cd7dc20, 0x37bbe: 0x6cd7de20, 0x37bbf: 0x6cd7e020,\n\t// Block 0xdef, offset 0x37bc0\n\t0x37bc0: 0x6cd7e220, 0x37bc1: 0x6cd7e420, 0x37bc2: 0x6cd7e620, 0x37bc3: 0x6cd7e820,\n\t0x37bc4: 0x6cd7ea20, 0x37bc5: 0x6cd7ec20, 0x37bc6: 0x6cd7ee20, 0x37bc7: 0x6cd7f020,\n\t0x37bc8: 0x6cd7f220, 0x37bc9: 0x6cd7f420, 0x37bca: 0x6cd7f620, 0x37bcb: 0x6cd7f820,\n\t0x37bcc: 0x6cd7fa20, 0x37bcd: 0x6cd7fc20, 0x37bce: 0x6cd7fe20, 0x37bcf: 0x6cd80020,\n\t0x37bd0: 0x6cd80220, 0x37bd1: 0x6cd80420, 0x37bd2: 0x6d065a20, 0x37bd3: 0x6d065c20,\n\t0x37bd4: 0x6d065e20, 0x37bd5: 0x6d066020, 0x37bd6: 0x6d066220, 0x37bd7: 0x6d066420,\n\t0x37bd8: 0x6d066620, 0x37bd9: 0x6d066820, 0x37bda: 0x6d066a20, 0x37bdb: 0x6d066c20,\n\t0x37bdc: 0x6d066e20, 0x37bdd: 0x6d067020, 0x37bde: 0x6d067220, 0x37bdf: 0x6d067420,\n\t0x37be0: 0x6d067620, 0x37be1: 0x6d067820, 0x37be2: 0x6d067a20, 0x37be3: 0x6d067c20,\n\t0x37be4: 0x6d067e20, 0x37be5: 0x6d068020, 0x37be6: 0x6d068220, 0x37be7: 0x6d068420,\n\t0x37be8: 0x6d068620, 0x37be9: 0x6d068820, 0x37bea: 0x6d068a20, 0x37beb: 0x6d068c20,\n\t0x37bec: 0x6d068e20, 0x37bed: 0x6d069020, 0x37bee: 0x6d069220, 0x37bef: 0x6d069420,\n\t0x37bf0: 0x6d069620, 0x37bf1: 0x6d069820, 0x37bf2: 0x6d069a20, 0x37bf3: 0x6d069c20,\n\t0x37bf4: 0x6d069e20, 0x37bf5: 0x6d06a020, 0x37bf6: 0x6d06a220, 0x37bf7: 0x6d06a420,\n\t0x37bf8: 0x6d06a620, 0x37bf9: 0x6d06a820, 0x37bfa: 0x6d06aa20, 0x37bfb: 0x6d06ac20,\n\t0x37bfc: 0x6d06ae20, 0x37bfd: 0x6d06b020, 0x37bfe: 0x6d06b220, 0x37bff: 0x6d06b420,\n\t// Block 0xdf0, offset 0x37c00\n\t0x37c00: 0x6d06b620, 0x37c01: 0x6d06b820, 0x37c02: 0x6d06ba20, 0x37c03: 0x6d06bc20,\n\t0x37c04: 0x6d06be20, 0x37c05: 0x6d06c020, 0x37c06: 0x6d344020, 0x37c07: 0x6d344220,\n\t0x37c08: 0x6d344420, 0x37c09: 0x6d344620, 0x37c0a: 0x6d344820, 0x37c0b: 0x6d344a20,\n\t0x37c0c: 0x6d344c20, 0x37c0d: 0x6d344e20, 0x37c0e: 0x6d345020, 0x37c0f: 0x6d345220,\n\t0x37c10: 0x6d345420, 0x37c11: 0x6d345620, 0x37c12: 0x6d345820, 0x37c13: 0x6d345a20,\n\t0x37c14: 0x6d345c20, 0x37c15: 0x6d345e20, 0x37c16: 0x6d346020, 0x37c17: 0x6d346220,\n\t0x37c18: 0x6d346420, 0x37c19: 0x6d346620, 0x37c1a: 0x6d346820, 0x37c1b: 0x6d346a20,\n\t0x37c1c: 0x6d346c20, 0x37c1d: 0x6d346e20, 0x37c1e: 0x6d347020, 0x37c1f: 0x6d347220,\n\t0x37c20: 0x6d347420, 0x37c21: 0x6d347620, 0x37c22: 0x6d347820, 0x37c23: 0x6d347a20,\n\t0x37c24: 0x6d347c20, 0x37c25: 0x6d347e20, 0x37c26: 0x6d348020, 0x37c27: 0x6d348220,\n\t0x37c28: 0x6d348420, 0x37c29: 0x6d348620, 0x37c2a: 0x6d348820, 0x37c2b: 0x6d348a20,\n\t0x37c2c: 0x6d348c20, 0x37c2d: 0x6d348e20, 0x37c2e: 0x6d349020, 0x37c2f: 0x6d349220,\n\t0x37c30: 0x6d349420, 0x37c31: 0x6d349620, 0x37c32: 0x6d349820, 0x37c33: 0x6d349a20,\n\t0x37c34: 0x6d349c20, 0x37c35: 0x6d349e20, 0x37c36: 0x6d34a020, 0x37c37: 0x6d34a220,\n\t0x37c38: 0x6d34a420, 0x37c39: 0x6d34a620, 0x37c3a: 0x6d34a820, 0x37c3b: 0x6d34aa20,\n\t0x37c3c: 0x6d34ac20, 0x37c3d: 0x6d34ae20, 0x37c3e: 0x6d34b020, 0x37c3f: 0x6d34b220,\n\t// Block 0xdf1, offset 0x37c40\n\t0x37c40: 0x6d60ee20, 0x37c41: 0x6d60f020, 0x37c42: 0x6d60f220, 0x37c43: 0x6d60f420,\n\t0x37c44: 0x6d60f620, 0x37c45: 0x6d60f820, 0x37c46: 0x6d60fa20, 0x37c47: 0x6d60fc20,\n\t0x37c48: 0x6d60fe20, 0x37c49: 0x6d610020, 0x37c4a: 0x6d610220, 0x37c4b: 0x6d610420,\n\t0x37c4c: 0x6d610620, 0x37c4d: 0x6d610820, 0x37c4e: 0x6d610a20, 0x37c4f: 0x6d610c20,\n\t0x37c50: 0x6d610e20, 0x37c51: 0x6d611020, 0x37c52: 0x6d611220, 0x37c53: 0x6d611420,\n\t0x37c54: 0x6d611620, 0x37c55: 0x6d611820, 0x37c56: 0x6d611a20, 0x37c57: 0x6d611c20,\n\t0x37c58: 0x6d611e20, 0x37c59: 0x6d612020, 0x37c5a: 0x6d612220, 0x37c5b: 0x6d612420,\n\t0x37c5c: 0x6d612620, 0x37c5d: 0x6d612820, 0x37c5e: 0x6d612a20, 0x37c5f: 0x6d612c20,\n\t0x37c60: 0x6d612e20, 0x37c61: 0x6d613020, 0x37c62: 0x6d613220, 0x37c63: 0x6d613420,\n\t0x37c64: 0x6d613620, 0x37c65: 0x6d613820, 0x37c66: 0x6d613a20, 0x37c67: 0x6d8afc20,\n\t0x37c68: 0x6d613c20, 0x37c69: 0x6d613e20, 0x37c6a: 0x6d614020, 0x37c6b: 0x6d614220,\n\t0x37c6c: 0x6d614420, 0x37c6d: 0x6d614620, 0x37c6e: 0x6d614820, 0x37c6f: 0x6d614a20,\n\t0x37c70: 0x6d614c20, 0x37c71: 0x6d614e20, 0x37c72: 0x6d615020, 0x37c73: 0x6d615220,\n\t0x37c74: 0x6d615420, 0x37c75: 0x6d615620, 0x37c76: 0x6d615820, 0x37c77: 0x6d615a20,\n\t0x37c78: 0x6d615c20, 0x37c79: 0x6d615e20, 0x37c7a: 0x6d616020, 0x37c7b: 0x6d616220,\n\t0x37c7c: 0x6d616420, 0x37c7d: 0x6d616620, 0x37c7e: 0x6d616820, 0x37c7f: 0x6d616a20,\n\t// Block 0xdf2, offset 0x37c80\n\t0x37c80: 0x6d616c20, 0x37c81: 0x6d616e20, 0x37c82: 0x6d8afe20, 0x37c83: 0x6d8b0020,\n\t0x37c84: 0x6d8b0220, 0x37c85: 0x6d8b0420, 0x37c86: 0x6d8b0620, 0x37c87: 0x6d8b0820,\n\t0x37c88: 0x6d8b0a20, 0x37c89: 0x6d8b0c20, 0x37c8a: 0x6d8b0e20, 0x37c8b: 0x6d8b1020,\n\t0x37c8c: 0x6d8b1220, 0x37c8d: 0x6d8b1420, 0x37c8e: 0x6d8b1620, 0x37c8f: 0x6d8b1820,\n\t0x37c90: 0x6d8b1a20, 0x37c91: 0x6d8b1c20, 0x37c92: 0x6d8b1e20, 0x37c93: 0x6d8b2020,\n\t0x37c94: 0x6d8b2220, 0x37c95: 0x6d8b2420, 0x37c96: 0x6d8b2620, 0x37c97: 0x6d8b2820,\n\t0x37c98: 0x6d8b2a20, 0x37c99: 0x6d8b2c20, 0x37c9a: 0x6d8b2e20, 0x37c9b: 0x6d8b3020,\n\t0x37c9c: 0x6d8b3220, 0x37c9d: 0x6d8b3420, 0x37c9e: 0x6d8b3620, 0x37c9f: 0x6d8b3820,\n\t0x37ca0: 0x6d8b3a20, 0x37ca1: 0x6d8b3c20, 0x37ca2: 0x6d8b3e20, 0x37ca3: 0x6d8b4020,\n\t0x37ca4: 0x6d8b4220, 0x37ca5: 0x6d8b4420, 0x37ca6: 0x6d8b4620, 0x37ca7: 0x6d8b4820,\n\t0x37ca8: 0x6d8b4a20, 0x37ca9: 0x6d8b4c20, 0x37caa: 0x6d8b4e20, 0x37cab: 0x6d8b5020,\n\t0x37cac: 0x6d8b5220, 0x37cad: 0x6d8b5420, 0x37cae: 0x6d8b5620, 0x37caf: 0x6d8b5820,\n\t0x37cb0: 0x6d8b5a20, 0x37cb1: 0x6d8b5c20, 0x37cb2: 0x6d8b5e20, 0x37cb3: 0x6d8b6020,\n\t0x37cb4: 0x6d8b6220, 0x37cb5: 0x6d8b6420, 0x37cb6: 0x6d8b6620, 0x37cb7: 0x6d8b6820,\n\t0x37cb8: 0x6d8b6a20, 0x37cb9: 0x6d8b6c20, 0x37cba: 0x6d8b6e20, 0x37cbb: 0x6d8b7020,\n\t0x37cbc: 0x6d8b7220, 0x37cbd: 0x6d8b7420, 0x37cbe: 0x6d8b7620, 0x37cbf: 0x6d8b7820,\n\t// Block 0xdf3, offset 0x37cc0\n\t0x37cc0: 0x6d8b7a20, 0x37cc1: 0x6d8b7c20, 0x37cc2: 0x6daf7a20, 0x37cc3: 0x6d8b7e20,\n\t0x37cc4: 0x6d8b8020, 0x37cc5: 0x6d8b8220, 0x37cc6: 0x6d8b8420, 0x37cc7: 0x6d8b8620,\n\t0x37cc8: 0x6d8b8820, 0x37cc9: 0x6daf7c20, 0x37cca: 0x6daf7e20, 0x37ccb: 0x6daf8020,\n\t0x37ccc: 0x6daf8220, 0x37ccd: 0x6daf8420, 0x37cce: 0x6daf8620, 0x37ccf: 0x6daf8820,\n\t0x37cd0: 0x6daf8a20, 0x37cd1: 0x6daf8c20, 0x37cd2: 0x6daf8e20, 0x37cd3: 0x6daf9020,\n\t0x37cd4: 0x6daf9220, 0x37cd5: 0x6daf9420, 0x37cd6: 0x6daf9620, 0x37cd7: 0x6daf9820,\n\t0x37cd8: 0x6daf9a20, 0x37cd9: 0x6daf9c20, 0x37cda: 0x6daf9e20, 0x37cdb: 0x6dafa020,\n\t0x37cdc: 0x6dafa220, 0x37cdd: 0x6dafa420, 0x37cde: 0x6dafa620, 0x37cdf: 0x6dafa820,\n\t0x37ce0: 0x6dafaa20, 0x37ce1: 0x6dafac20, 0x37ce2: 0x6dafae20, 0x37ce3: 0x6dafb020,\n\t0x37ce4: 0x6dafb220, 0x37ce5: 0x6dafb420, 0x37ce6: 0x6dafb620, 0x37ce7: 0x6dafb820,\n\t0x37ce8: 0x6dafba20, 0x37ce9: 0x6dafbc20, 0x37cea: 0x6dafbe20, 0x37ceb: 0x6dafc020,\n\t0x37cec: 0x6dafc220, 0x37ced: 0x6dafc420, 0x37cee: 0x6dafc620, 0x37cef: 0x6dafc820,\n\t0x37cf0: 0x6dafca20, 0x37cf1: 0x6dafcc20, 0x37cf2: 0x6dafce20, 0x37cf3: 0x6dafd020,\n\t0x37cf4: 0x6dafd220, 0x37cf5: 0x6dafd420, 0x37cf6: 0x6dafd620, 0x37cf7: 0x6dafd820,\n\t0x37cf8: 0x6dafda20, 0x37cf9: 0x6dafdc20, 0x37cfa: 0x6dafde20, 0x37cfb: 0x6dafe020,\n\t0x37cfc: 0x6dcf0020, 0x37cfd: 0x6dcf0220, 0x37cfe: 0x6dcf0420, 0x37cff: 0x6dcf0620,\n\t// Block 0xdf4, offset 0x37d00\n\t0x37d00: 0x6dcf0820, 0x37d01: 0x6dcf0a20, 0x37d02: 0x6dcf0c20, 0x37d03: 0x6dcf0e20,\n\t0x37d04: 0x6dcf1020, 0x37d05: 0x6dcf1220, 0x37d06: 0x6dcf1420, 0x37d07: 0x6dcf1620,\n\t0x37d08: 0x6dcf1820, 0x37d09: 0x6dcf1a20, 0x37d0a: 0x6dcf1c20, 0x37d0b: 0x6dcf1e20,\n\t0x37d0c: 0x6dcf2020, 0x37d0d: 0x6dcf2220, 0x37d0e: 0x6dcf2420, 0x37d0f: 0x6dcf2620,\n\t0x37d10: 0x6dcf2820, 0x37d11: 0x6dcf2a20, 0x37d12: 0x6dcf2c20, 0x37d13: 0x6dcf2e20,\n\t0x37d14: 0x6dcf3020, 0x37d15: 0x6dcf3220, 0x37d16: 0x6dcf3420, 0x37d17: 0x6dcf3620,\n\t0x37d18: 0x6dcf3820, 0x37d19: 0x6dcf3a20, 0x37d1a: 0x6dcf3c20, 0x37d1b: 0x6dcf3e20,\n\t0x37d1c: 0x6dcf4020, 0x37d1d: 0x6dcf4220, 0x37d1e: 0x6dcf4420, 0x37d1f: 0x6dcf4620,\n\t0x37d20: 0x6dcf4820, 0x37d21: 0x6dcf4a20, 0x37d22: 0x6dcf4c20, 0x37d23: 0x6dcf4e20,\n\t0x37d24: 0x6dcf5020, 0x37d25: 0x6dcf5220, 0x37d26: 0x6dcf5420, 0x37d27: 0x6dcf5620,\n\t0x37d28: 0x6dcf5820, 0x37d29: 0x6dcf5a20, 0x37d2a: 0x6dcf5c20, 0x37d2b: 0x6dcf5e20,\n\t0x37d2c: 0x6dcf6020, 0x37d2d: 0x6dcf6220, 0x37d2e: 0x6dcf6420, 0x37d2f: 0x6dcf6620,\n\t0x37d30: 0x6dcf6820, 0x37d31: 0x6dcf6a20, 0x37d32: 0x6dcf6c20, 0x37d33: 0x6dcf6e20,\n\t0x37d34: 0x6dcf7020, 0x37d35: 0x6de94220, 0x37d36: 0x6de94420, 0x37d37: 0x6de94620,\n\t0x37d38: 0x6de94820, 0x37d39: 0x6de94a20, 0x37d3a: 0x6de94c20, 0x37d3b: 0x6de94e20,\n\t0x37d3c: 0x6de95020, 0x37d3d: 0x6de95220, 0x37d3e: 0x6de95420, 0x37d3f: 0x6de95620,\n\t// Block 0xdf5, offset 0x37d40\n\t0x37d40: 0x6de95820, 0x37d41: 0x6de95a20, 0x37d42: 0x6de95c20, 0x37d43: 0x6de95e20,\n\t0x37d44: 0x6de96020, 0x37d45: 0x6de96220, 0x37d46: 0x6de96420, 0x37d47: 0x6de96620,\n\t0x37d48: 0x6de96820, 0x37d49: 0x6de96a20, 0x37d4a: 0x6de96c20, 0x37d4b: 0x6de96e20,\n\t0x37d4c: 0x6de97020, 0x37d4d: 0x6de97220, 0x37d4e: 0x6de97420, 0x37d4f: 0x6de97620,\n\t0x37d50: 0x6de97820, 0x37d51: 0x6de97a20, 0x37d52: 0x6de97c20, 0x37d53: 0x6de97e20,\n\t0x37d54: 0x6de98020, 0x37d55: 0x6de98220, 0x37d56: 0x6de98420, 0x37d57: 0x6de98620,\n\t0x37d58: 0x6de98820, 0x37d59: 0x6de98a20, 0x37d5a: 0x6de98c20, 0x37d5b: 0x6de98e20,\n\t0x37d5c: 0x6dff5420, 0x37d5d: 0x6dff5620, 0x37d5e: 0x6dff5820, 0x37d5f: 0x6dff5a20,\n\t0x37d60: 0x6dff5c20, 0x37d61: 0x6dff5e20, 0x37d62: 0x6dff6020, 0x37d63: 0x6dff6220,\n\t0x37d64: 0x6e11c420, 0x37d65: 0x6de99020, 0x37d66: 0x6dff6420, 0x37d67: 0x6dff6620,\n\t0x37d68: 0x6e11c620, 0x37d69: 0x6dff6820, 0x37d6a: 0x6dff6a20, 0x37d6b: 0x6e11c820,\n\t0x37d6c: 0x6dff6c20, 0x37d6d: 0x6dff6e20, 0x37d6e: 0x6dff7020, 0x37d6f: 0x6dff7220,\n\t0x37d70: 0x6dff7420, 0x37d71: 0x6dff7620, 0x37d72: 0x6dff7820, 0x37d73: 0x6dff7a20,\n\t0x37d74: 0x6dff7c20, 0x37d75: 0x6dff7e20, 0x37d76: 0x6dff8020, 0x37d77: 0x6dff8220,\n\t0x37d78: 0x6dff8420, 0x37d79: 0x6dff8620, 0x37d7a: 0x6dff8820, 0x37d7b: 0x6e11ca20,\n\t0x37d7c: 0x6e11cc20, 0x37d7d: 0x6e11ce20, 0x37d7e: 0x6e11d020, 0x37d7f: 0x6e11d220,\n\t// Block 0xdf6, offset 0x37d80\n\t0x37d80: 0x6e11d420, 0x37d81: 0x6e11d620, 0x37d82: 0x6e200c20, 0x37d83: 0x6e11d820,\n\t0x37d84: 0x6e11da20, 0x37d85: 0x6e11dc20, 0x37d86: 0x6e11de20, 0x37d87: 0x6e11e020,\n\t0x37d88: 0x6e11e220, 0x37d89: 0x6e11e420, 0x37d8a: 0x6e11e620, 0x37d8b: 0x6e11e820,\n\t0x37d8c: 0x6e11ea20, 0x37d8d: 0x6e11ec20, 0x37d8e: 0x6e11ee20, 0x37d8f: 0x6e11f020,\n\t0x37d90: 0x6e11f220, 0x37d91: 0x6e11f420, 0x37d92: 0x6e11f620, 0x37d93: 0x6e11f820,\n\t0x37d94: 0x6e200e20, 0x37d95: 0x6e201020, 0x37d96: 0x6e201220, 0x37d97: 0x6e201420,\n\t0x37d98: 0x6e201620, 0x37d99: 0x6e201820, 0x37d9a: 0x6e201a20, 0x37d9b: 0x6e201c20,\n\t0x37d9c: 0x6e201e20, 0x37d9d: 0x6e202020, 0x37d9e: 0x6e202220, 0x37d9f: 0x6e202420,\n\t0x37da0: 0x6e202620, 0x37da1: 0x6e202820, 0x37da2: 0x6e202a20, 0x37da3: 0x6e202c20,\n\t0x37da4: 0x6e202e20, 0x37da5: 0x6e203020, 0x37da6: 0x6e203220, 0x37da7: 0x6e2b1e20,\n\t0x37da8: 0x6e2b2020, 0x37da9: 0x6e2b2220, 0x37daa: 0x6e2b2420, 0x37dab: 0x6e2b2620,\n\t0x37dac: 0x6e2b2820, 0x37dad: 0x6e2b2a20, 0x37dae: 0x6e2b2c20, 0x37daf: 0x6e2b2e20,\n\t0x37db0: 0x6e339420, 0x37db1: 0x6e339620, 0x37db2: 0x6e339820, 0x37db3: 0x6e339a20,\n\t0x37db4: 0x6e339c20, 0x37db5: 0x6e339e20, 0x37db6: 0x6e33a020, 0x37db7: 0x6e33a220,\n\t0x37db8: 0x6e39a020, 0x37db9: 0x6e33a420, 0x37dba: 0x6e39a220, 0x37dbb: 0x6e39a420,\n\t0x37dbc: 0x6e3dce20, 0x37dbd: 0x6e3dd020, 0x37dbe: 0x6e40aa20, 0x37dbf: 0x6e40ac20,\n\t// Block 0xdf7, offset 0x37dc0\n\t0x37dc0: 0x6e40ae20, 0x37dc1: 0x6e40b020, 0x37dc2: 0x6e40b220, 0x37dc3: 0x6e42e020,\n\t0x37dc4: 0x6e42e220, 0x37dc5: 0x6e445c20, 0x37dc6: 0x6e453c20, 0x37dc7: 0x6e45ca20,\n\t0x37dc8: 0x6c3dfa20, 0x37dc9: 0x6c5cb820, 0x37dca: 0x6c80b020, 0x37dcb: 0x6c80b220,\n\t0x37dcc: 0x6c80b420, 0x37dcd: 0x6ca9d420, 0x37dce: 0x6ca9d620, 0x37dcf: 0x6ca9d820,\n\t0x37dd0: 0x6ca9da20, 0x37dd1: 0x6cd84020, 0x37dd2: 0x6cd84220, 0x37dd3: 0x6cd84420,\n\t0x37dd4: 0x6cd84620, 0x37dd5: 0x6cd84820, 0x37dd6: 0x6d06e620, 0x37dd7: 0x6d06e820,\n\t0x37dd8: 0x6d06ea20, 0x37dd9: 0x6d06ec20, 0x37dda: 0x6d34d620, 0x37ddb: 0x6d618820,\n\t0x37ddc: 0x6d618a20, 0x37ddd: 0x6d618c20, 0x37dde: 0x6d8ba020, 0x37ddf: 0x6d8ba220,\n\t0x37de0: 0x6dafec20, 0x37de1: 0x6dafee20, 0x37de2: 0x6c143220, 0x37de3: 0x6c5cc820,\n\t0x37de4: 0x6c5cca20, 0x37de5: 0x6c5ccc20, 0x37de6: 0x6c80cc20, 0x37de7: 0x6c80ce20,\n\t0x37de8: 0x6c80d020, 0x37de9: 0x6ca9f220, 0x37dea: 0x6ca9f420, 0x37deb: 0x6ca9f620,\n\t0x37dec: 0x6ca9f820, 0x37ded: 0x6ca9fa20, 0x37dee: 0x6ca9fc20, 0x37def: 0x6cd85a20,\n\t0x37df0: 0x6cd85c20, 0x37df1: 0x6cd85e20, 0x37df2: 0x6cd86020, 0x37df3: 0x6cd86220,\n\t0x37df4: 0x6d06f220, 0x37df5: 0x6d06f420, 0x37df6: 0x6d06f620, 0x37df7: 0x6d06f820,\n\t0x37df8: 0x6d34e820, 0x37df9: 0x6d34ea20, 0x37dfa: 0x6d34ec20, 0x37dfb: 0x6d34ee20,\n\t0x37dfc: 0x6d34f020, 0x37dfd: 0x6d34f220, 0x37dfe: 0x6d34f420, 0x37dff: 0x6d34f620,\n\t// Block 0xdf8, offset 0x37e00\n\t0x37e00: 0x6d34f820, 0x37e01: 0x6d619220, 0x37e02: 0x6d619420, 0x37e03: 0x6d619620,\n\t0x37e04: 0x6d619820, 0x37e05: 0x6d619a20, 0x37e06: 0x6d619c20, 0x37e07: 0x6d619e20,\n\t0x37e08: 0x6d8baa20, 0x37e09: 0x6d8bac20, 0x37e0a: 0x6d8bae20, 0x37e0b: 0x6d8bb020,\n\t0x37e0c: 0x6d8bb220, 0x37e0d: 0x6d8bb420, 0x37e0e: 0x6d8bb620, 0x37e0f: 0x6daffa20,\n\t0x37e10: 0x6daffc20, 0x37e11: 0x6daffe20, 0x37e12: 0x6db00020, 0x37e13: 0x6db00220,\n\t0x37e14: 0x6db00420, 0x37e15: 0x6dcf8220, 0x37e16: 0x6dcf8420, 0x37e17: 0x6dcf8620,\n\t0x37e18: 0x6dcf8820, 0x37e19: 0x6de9aa20, 0x37e1a: 0x6de9ac20, 0x37e1b: 0x6de9ae20,\n\t0x37e1c: 0x6de9b020, 0x37e1d: 0x6dff9220, 0x37e1e: 0x6dff9420, 0x37e1f: 0x6e120420,\n\t0x37e20: 0x6e120620, 0x37e21: 0x6e203e20, 0x37e22: 0x6e2b3420, 0x37e23: 0x6e2b3620,\n\t0x37e24: 0x6e2b3820, 0x37e25: 0x6e33aa20, 0x37e26: 0x6e33ac20, 0x37e27: 0x6e3dd420,\n\t0x37e28: 0x6e40b620, 0x37e29: 0x6e45cc20, 0x37e2a: 0x6c0a4c20, 0x37e2b: 0x6c0a4e20,\n\t0x37e2c: 0x6c25cc20, 0x37e2d: 0x6c0a5020, 0x37e2e: 0x6c25ce20, 0x37e2f: 0x6c143620,\n\t0x37e30: 0x6c0a5220, 0x37e31: 0x6c25d020, 0x37e32: 0x6c25d220, 0x37e33: 0x6c25d420,\n\t0x37e34: 0x6c25d620, 0x37e35: 0x6c25d820, 0x37e36: 0x6c25da20, 0x37e37: 0x6c3e0a20,\n\t0x37e38: 0x6c3e0c20, 0x37e39: 0x6c3e0e20, 0x37e3a: 0x6c3e1020, 0x37e3b: 0x6c3e1220,\n\t0x37e3c: 0x6c3e1420, 0x37e3d: 0x6c3e1620, 0x37e3e: 0x6c3e1820, 0x37e3f: 0x6c3e1a20,\n\t// Block 0xdf9, offset 0x37e40\n\t0x37e40: 0x6c3e1c20, 0x37e41: 0x6c5cda20, 0x37e42: 0x6c5cdc20, 0x37e43: 0x6c5cde20,\n\t0x37e44: 0x6c5ce020, 0x37e45: 0x6c5ce220, 0x37e46: 0x6c5ce420, 0x37e47: 0x6c5ce620,\n\t0x37e48: 0x6c5ce820, 0x37e49: 0x6c5cea20, 0x37e4a: 0x6c5cec20, 0x37e4b: 0x6c5cee20,\n\t0x37e4c: 0x6c5cf020, 0x37e4d: 0x6c5cf220, 0x37e4e: 0x6c80e820, 0x37e4f: 0x6c80ea20,\n\t0x37e50: 0x6c80ec20, 0x37e51: 0x6c80ee20, 0x37e52: 0x6c80f020, 0x37e53: 0x6c80f220,\n\t0x37e54: 0x6c80f420, 0x37e55: 0x6c80f620, 0x37e56: 0x6c80f820, 0x37e57: 0x6c80fa20,\n\t0x37e58: 0x6c80fc20, 0x37e59: 0x6c80fe20, 0x37e5a: 0x6c810020, 0x37e5b: 0x6c810220,\n\t0x37e5c: 0x6c810420, 0x37e5d: 0x6c810620, 0x37e5e: 0x6c810820, 0x37e5f: 0x6c810a20,\n\t0x37e60: 0x6c810c20, 0x37e61: 0x6c810e20, 0x37e62: 0x6c811020, 0x37e63: 0x6c811220,\n\t0x37e64: 0x6c6dd220, 0x37e65: 0x6c811420, 0x37e66: 0x6c811620, 0x37e67: 0x6c811820,\n\t0x37e68: 0x6c811a20, 0x37e69: 0x6c811c20, 0x37e6a: 0x6caa0220, 0x37e6b: 0x6caa0420,\n\t0x37e6c: 0x6caa0620, 0x37e6d: 0x6caa0820, 0x37e6e: 0x6caa0a20, 0x37e6f: 0x6caa0c20,\n\t0x37e70: 0x6caa0e20, 0x37e71: 0x6caa1020, 0x37e72: 0x6caa1220, 0x37e73: 0x6c811e20,\n\t0x37e74: 0x6caa1420, 0x37e75: 0x6caa1620, 0x37e76: 0x6caa1820, 0x37e77: 0x6caa1a20,\n\t0x37e78: 0x6caa1c20, 0x37e79: 0x6caa1e20, 0x37e7a: 0x6caa2020, 0x37e7b: 0x6caa2220,\n\t0x37e7c: 0x6cd86e20, 0x37e7d: 0x6cd87020, 0x37e7e: 0x6cd87220, 0x37e7f: 0x6cd87420,\n\t// Block 0xdfa, offset 0x37e80\n\t0x37e80: 0x6cd87620, 0x37e81: 0x6cd87820, 0x37e82: 0x6cd87a20, 0x37e83: 0x6cd87c20,\n\t0x37e84: 0x6cd87e20, 0x37e85: 0x6d071420, 0x37e86: 0x6d071620, 0x37e87: 0x6d071820,\n\t0x37e88: 0x6d071a20, 0x37e89: 0x6d071c20, 0x37e8a: 0x6d071e20, 0x37e8b: 0x6d072020,\n\t0x37e8c: 0x6d072220, 0x37e8d: 0x6d072420, 0x37e8e: 0x6d072620, 0x37e8f: 0x6d072820,\n\t0x37e90: 0x6d072a20, 0x37e91: 0x6cd88020, 0x37e92: 0x6d072c20, 0x37e93: 0x6d072e20,\n\t0x37e94: 0x6d073020, 0x37e95: 0x6d073220, 0x37e96: 0x6d073420, 0x37e97: 0x6d073620,\n\t0x37e98: 0x6d073820, 0x37e99: 0x6d073a20, 0x37e9a: 0x6d073c20, 0x37e9b: 0x6d073e20,\n\t0x37e9c: 0x6d074020, 0x37e9d: 0x6d350a20, 0x37e9e: 0x6d350c20, 0x37e9f: 0x6d350e20,\n\t0x37ea0: 0x6d351020, 0x37ea1: 0x6d351220, 0x37ea2: 0x6d351420, 0x37ea3: 0x6d351620,\n\t0x37ea4: 0x6d351820, 0x37ea5: 0x6d351a20, 0x37ea6: 0x6d351c20, 0x37ea7: 0x6d351e20,\n\t0x37ea8: 0x6d352020, 0x37ea9: 0x6d352220, 0x37eaa: 0x6d217020, 0x37eab: 0x6d352420,\n\t0x37eac: 0x6d352620, 0x37ead: 0x6d352820, 0x37eae: 0x6d352a20, 0x37eaf: 0x6d61ac20,\n\t0x37eb0: 0x6d61ae20, 0x37eb1: 0x6d61b020, 0x37eb2: 0x6d61b220, 0x37eb3: 0x6d61b420,\n\t0x37eb4: 0x6d61b620, 0x37eb5: 0x6d61b820, 0x37eb6: 0x6d61ba20, 0x37eb7: 0x6d61bc20,\n\t0x37eb8: 0x6d61be20, 0x37eb9: 0x6d61c020, 0x37eba: 0x6d61c220, 0x37ebb: 0x6d61c420,\n\t0x37ebc: 0x6d61c620, 0x37ebd: 0x6d8bc620, 0x37ebe: 0x6d8bc820, 0x37ebf: 0x6d8bca20,\n\t// Block 0xdfb, offset 0x37ec0\n\t0x37ec0: 0x6d8bcc20, 0x37ec1: 0x6d8bce20, 0x37ec2: 0x6d8bd020, 0x37ec3: 0x6d8bd220,\n\t0x37ec4: 0x6d8bd420, 0x37ec5: 0x6d8bd620, 0x37ec6: 0x6d8bd820, 0x37ec7: 0x6d8bda20,\n\t0x37ec8: 0x6d8bdc20, 0x37ec9: 0x6d8bde20, 0x37eca: 0x6d8be020, 0x37ecb: 0x6d8be220,\n\t0x37ecc: 0x6d8be420, 0x37ecd: 0x6d8be620, 0x37ece: 0x6d8be820, 0x37ecf: 0x6d8bea20,\n\t0x37ed0: 0x6d8bec20, 0x37ed1: 0x6d8bee20, 0x37ed2: 0x6db01020, 0x37ed3: 0x6db01220,\n\t0x37ed4: 0x6db01420, 0x37ed5: 0x6db01620, 0x37ed6: 0x6db01820, 0x37ed7: 0x6db01a20,\n\t0x37ed8: 0x6db01c20, 0x37ed9: 0x6db01e20, 0x37eda: 0x6db02020, 0x37edb: 0x6db02220,\n\t0x37edc: 0x6db02420, 0x37edd: 0x6db02620, 0x37ede: 0x6db02820, 0x37edf: 0x6dcf9020,\n\t0x37ee0: 0x6dcf9220, 0x37ee1: 0x6dcf9420, 0x37ee2: 0x6dcf9620, 0x37ee3: 0x6dcf9820,\n\t0x37ee4: 0x6dcf9a20, 0x37ee5: 0x6dcf9c20, 0x37ee6: 0x6dcf9e20, 0x37ee7: 0x6dcfa020,\n\t0x37ee8: 0x6dcfa220, 0x37ee9: 0x6dcfb220, 0x37eea: 0x6de9be20, 0x37eeb: 0x6de9c020,\n\t0x37eec: 0x6de9c220, 0x37eed: 0x6de9c420, 0x37eee: 0x6de9c620, 0x37eef: 0x6de9c820,\n\t0x37ef0: 0x6de9ca20, 0x37ef1: 0x6de9cc20, 0x37ef2: 0x6de9ce20, 0x37ef3: 0x6de9d020,\n\t0x37ef4: 0x6de9d220, 0x37ef5: 0x6dff9620, 0x37ef6: 0x6dff9820, 0x37ef7: 0x6dff9a20,\n\t0x37ef8: 0x6dff9c20, 0x37ef9: 0x6dff9e20, 0x37efa: 0x6dffa020, 0x37efb: 0x6e120a20,\n\t0x37efc: 0x6e120c20, 0x37efd: 0x6e2b3a20, 0x37efe: 0x6e33b420, 0x37eff: 0x6e33b620,\n\t// Block 0xdfc, offset 0x37f00\n\t0x37f00: 0x6e33b820, 0x37f01: 0x6e33ba20, 0x37f02: 0x6e33bc20, 0x37f03: 0x6e33be20,\n\t0x37f04: 0x6e33c020, 0x37f05: 0x6e33c220, 0x37f06: 0x6e3dd620, 0x37f07: 0x6e40b820,\n\t0x37f08: 0x6e42e420, 0x37f09: 0x6e42e620, 0x37f0a: 0x6e42e820, 0x37f0b: 0x6c143c20,\n\t0x37f0c: 0x6c143e20, 0x37f0d: 0x6c144020, 0x37f0e: 0x6c3e2620, 0x37f0f: 0x6c3e2820,\n\t0x37f10: 0x6c3e2a20, 0x37f11: 0x6c5cfe20, 0x37f12: 0x6c5d0020, 0x37f13: 0x6c5d0220,\n\t0x37f14: 0x6c5d0420, 0x37f15: 0x6c5d0620, 0x37f16: 0x6c5d0820, 0x37f17: 0x6c813820,\n\t0x37f18: 0x6c813a20, 0x37f19: 0x6c813c20, 0x37f1a: 0x6c813e20, 0x37f1b: 0x6c814020,\n\t0x37f1c: 0x6c814220, 0x37f1d: 0x6c814420, 0x37f1e: 0x6c814620, 0x37f1f: 0x6c814820,\n\t0x37f20: 0x6c814a20, 0x37f21: 0x6c814c20, 0x37f22: 0x6c814e20, 0x37f23: 0x6c815020,\n\t0x37f24: 0x6c815220, 0x37f25: 0x6caa4020, 0x37f26: 0x6caa4220, 0x37f27: 0x6caa4420,\n\t0x37f28: 0x6caa4620, 0x37f29: 0x6caa4820, 0x37f2a: 0x6caa4a20, 0x37f2b: 0x6caa4c20,\n\t0x37f2c: 0x6caa4e20, 0x37f2d: 0x6caa5020, 0x37f2e: 0x6c815420, 0x37f2f: 0x6caa5220,\n\t0x37f30: 0x6caa5420, 0x37f31: 0x6caa5620, 0x37f32: 0x6caa5820, 0x37f33: 0x6caa5a20,\n\t0x37f34: 0x6caa5c20, 0x37f35: 0x6caa5e20, 0x37f36: 0x6caa6020, 0x37f37: 0x6caa6220,\n\t0x37f38: 0x6caa6420, 0x37f39: 0x6cd88e20, 0x37f3a: 0x6cd89020, 0x37f3b: 0x6cd89220,\n\t0x37f3c: 0x6cd89420, 0x37f3d: 0x6cd89620, 0x37f3e: 0x6cd89820, 0x37f3f: 0x6cd89a20,\n\t// Block 0xdfd, offset 0x37f40\n\t0x37f40: 0x6cd89c20, 0x37f41: 0x6cd89e20, 0x37f42: 0x6cd8a020, 0x37f43: 0x6cd8a220,\n\t0x37f44: 0x6cd8a420, 0x37f45: 0x6cba3e20, 0x37f46: 0x6d075820, 0x37f47: 0x6d075a20,\n\t0x37f48: 0x6d075c20, 0x37f49: 0x6d075e20, 0x37f4a: 0x6d076020, 0x37f4b: 0x6d076220,\n\t0x37f4c: 0x6d076420, 0x37f4d: 0x6d076620, 0x37f4e: 0x6d076820, 0x37f4f: 0x6d076a20,\n\t0x37f50: 0x6d076c20, 0x37f51: 0x6d076e20, 0x37f52: 0x6d077020, 0x37f53: 0x6d077220,\n\t0x37f54: 0x6d077420, 0x37f55: 0x6d077620, 0x37f56: 0x6d077820, 0x37f57: 0x6d353a20,\n\t0x37f58: 0x6d353c20, 0x37f59: 0x6d353e20, 0x37f5a: 0x6d354020, 0x37f5b: 0x6d354220,\n\t0x37f5c: 0x6d354420, 0x37f5d: 0x6d354620, 0x37f5e: 0x6d354820, 0x37f5f: 0x6d354a20,\n\t0x37f60: 0x6d354c20, 0x37f61: 0x6d354e20, 0x37f62: 0x6d61d620, 0x37f63: 0x6d61d820,\n\t0x37f64: 0x6d61da20, 0x37f65: 0x6d61dc20, 0x37f66: 0x6d61de20, 0x37f67: 0x6d61e020,\n\t0x37f68: 0x6d61e220, 0x37f69: 0x6d61e420, 0x37f6a: 0x6d61e620, 0x37f6b: 0x6d61e820,\n\t0x37f6c: 0x6d61ea20, 0x37f6d: 0x6d61ec20, 0x37f6e: 0x6d61ee20, 0x37f6f: 0x6d8bfa20,\n\t0x37f70: 0x6d8bfc20, 0x37f71: 0x6d8bfe20, 0x37f72: 0x6d8c0020, 0x37f73: 0x6d8c0220,\n\t0x37f74: 0x6d8c0420, 0x37f75: 0x6d8c0620, 0x37f76: 0x6d8c0820, 0x37f77: 0x6db02e20,\n\t0x37f78: 0x6db03020, 0x37f79: 0x6db03220, 0x37f7a: 0x6db03420, 0x37f7b: 0x6db03620,\n\t0x37f7c: 0x6db03820, 0x37f7d: 0x6db03a20, 0x37f7e: 0x6db03c20, 0x37f7f: 0x6db03e20,\n\t// Block 0xdfe, offset 0x37f80\n\t0x37f80: 0x6db04020, 0x37f81: 0x6db04220, 0x37f82: 0x6db04420, 0x37f83: 0x6db04620,\n\t0x37f84: 0x6db04820, 0x37f85: 0x6dcfb420, 0x37f86: 0x6dcfb620, 0x37f87: 0x6dcfb820,\n\t0x37f88: 0x6dcfba20, 0x37f89: 0x6dcfbc20, 0x37f8a: 0x6dcfbe20, 0x37f8b: 0x6dcfc020,\n\t0x37f8c: 0x6dcfc220, 0x37f8d: 0x6dcfc420, 0x37f8e: 0x6dcfc620, 0x37f8f: 0x6dcfc820,\n\t0x37f90: 0x6dcfca20, 0x37f91: 0x6dcfcc20, 0x37f92: 0x6dcfce20, 0x37f93: 0x6dcfd020,\n\t0x37f94: 0x6dcfd220, 0x37f95: 0x6de9de20, 0x37f96: 0x6de9e020, 0x37f97: 0x6de9e220,\n\t0x37f98: 0x6de9e420, 0x37f99: 0x6de9e620, 0x37f9a: 0x6de9e820, 0x37f9b: 0x6de9ea20,\n\t0x37f9c: 0x6dffa420, 0x37f9d: 0x6dffa620, 0x37f9e: 0x6dffa820, 0x37f9f: 0x6dffaa20,\n\t0x37fa0: 0x6dffac20, 0x37fa1: 0x6dffae20, 0x37fa2: 0x6e121620, 0x37fa3: 0x6e121820,\n\t0x37fa4: 0x6e121a20, 0x37fa5: 0x6e121c20, 0x37fa6: 0x6e121e20, 0x37fa7: 0x6e122020,\n\t0x37fa8: 0x6e204420, 0x37fa9: 0x6e204620, 0x37faa: 0x6e2b3c20, 0x37fab: 0x6e2b3e20,\n\t0x37fac: 0x6e33c420, 0x37fad: 0x6e39a820, 0x37fae: 0x6e3dd820, 0x37faf: 0x6e40bc20,\n\t0x37fb0: 0x6e453e20, 0x37fb1: 0x6e454020, 0x37fb2: 0x6c3e2e20, 0x37fb3: 0x6c25de20,\n\t0x37fb4: 0x6c5d1020, 0x37fb5: 0x6c5d1220, 0x37fb6: 0x6c5d1420, 0x37fb7: 0x6c5d1620,\n\t0x37fb8: 0x6c5d1820, 0x37fb9: 0x6c5d1a20, 0x37fba: 0x6c5d1c20, 0x37fbb: 0x6c5d1e20,\n\t0x37fbc: 0x6c5d2020, 0x37fbd: 0x6c5d2220, 0x37fbe: 0x6c5d2420, 0x37fbf: 0x6c5d2620,\n\t// Block 0xdff, offset 0x37fc0\n\t0x37fc0: 0x6c5d2820, 0x37fc1: 0x6c5d2a20, 0x37fc2: 0x6c816820, 0x37fc3: 0x6c816a20,\n\t0x37fc4: 0x6c816c20, 0x37fc5: 0x6c816e20, 0x37fc6: 0x6c817020, 0x37fc7: 0x6c817220,\n\t0x37fc8: 0x6c817420, 0x37fc9: 0x6c817620, 0x37fca: 0x6c817820, 0x37fcb: 0x6c817a20,\n\t0x37fcc: 0x6c817c20, 0x37fcd: 0x6c817e20, 0x37fce: 0x6c818020, 0x37fcf: 0x6c818220,\n\t0x37fd0: 0x6c818420, 0x37fd1: 0x6c818620, 0x37fd2: 0x6c818820, 0x37fd3: 0x6c818a20,\n\t0x37fd4: 0x6c818c20, 0x37fd5: 0x6caa9420, 0x37fd6: 0x6caa9620, 0x37fd7: 0x6caa9820,\n\t0x37fd8: 0x6caa9a20, 0x37fd9: 0x6caa9c20, 0x37fda: 0x6caa9e20, 0x37fdb: 0x6caaa020,\n\t0x37fdc: 0x6caaa220, 0x37fdd: 0x6caaa420, 0x37fde: 0x6caaa620, 0x37fdf: 0x6caaa820,\n\t0x37fe0: 0x6caaaa20, 0x37fe1: 0x6caaac20, 0x37fe2: 0x6caaae20, 0x37fe3: 0x6cd8c220,\n\t0x37fe4: 0x6cd8c420, 0x37fe5: 0x6cd8c620, 0x37fe6: 0x6cd8c820, 0x37fe7: 0x6cd8ca20,\n\t0x37fe8: 0x6cd8cc20, 0x37fe9: 0x6cd8ce20, 0x37fea: 0x6cd8d020, 0x37feb: 0x6cd8d220,\n\t0x37fec: 0x6cd8d420, 0x37fed: 0x6cd8d620, 0x37fee: 0x6cd8d820, 0x37fef: 0x6cd8da20,\n\t0x37ff0: 0x6cd8dc20, 0x37ff1: 0x6cd8de20, 0x37ff2: 0x6cd8e020, 0x37ff3: 0x6cd8e220,\n\t0x37ff4: 0x6cd8e420, 0x37ff5: 0x6cd8e620, 0x37ff6: 0x6cd8e820, 0x37ff7: 0x6cd8ea20,\n\t0x37ff8: 0x6d078a20, 0x37ff9: 0x6d078c20, 0x37ffa: 0x6d078e20, 0x37ffb: 0x6d079020,\n\t0x37ffc: 0x6d079220, 0x37ffd: 0x6d079420, 0x37ffe: 0x6d079620, 0x37fff: 0x6d079820,\n\t// Block 0xe00, offset 0x38000\n\t0x38000: 0x6d079a20, 0x38001: 0x6d079c20, 0x38002: 0x6d079e20, 0x38003: 0x6d07a020,\n\t0x38004: 0x6d07a220, 0x38005: 0x6d356820, 0x38006: 0x6d07a420, 0x38007: 0x6d356a20,\n\t0x38008: 0x6d356c20, 0x38009: 0x6d356e20, 0x3800a: 0x6d357020, 0x3800b: 0x6d357220,\n\t0x3800c: 0x6d357420, 0x3800d: 0x6d357620, 0x3800e: 0x6d357820, 0x3800f: 0x6d357a20,\n\t0x38010: 0x6d357c20, 0x38011: 0x6d231e20, 0x38012: 0x6d357e20, 0x38013: 0x6d358020,\n\t0x38014: 0x6d358220, 0x38015: 0x6d358420, 0x38016: 0x6d358620, 0x38017: 0x6d358820,\n\t0x38018: 0x6d620620, 0x38019: 0x6d620820, 0x3801a: 0x6d620a20, 0x3801b: 0x6d620c20,\n\t0x3801c: 0x6d620e20, 0x3801d: 0x6d621020, 0x3801e: 0x6d621220, 0x3801f: 0x6d621420,\n\t0x38020: 0x6d621620, 0x38021: 0x6d621820, 0x38022: 0x6d621a20, 0x38023: 0x6d621c20,\n\t0x38024: 0x6d621e20, 0x38025: 0x6d622020, 0x38026: 0x6d622220, 0x38027: 0x6d622420,\n\t0x38028: 0x6d622620, 0x38029: 0x6d622820, 0x3802a: 0x6d622a20, 0x3802b: 0x6d622c20,\n\t0x3802c: 0x6d622e20, 0x3802d: 0x6d623020, 0x3802e: 0x6d623220, 0x3802f: 0x6d623420,\n\t0x38030: 0x6d8c1820, 0x38031: 0x6d8c1a20, 0x38032: 0x6d8c1c20, 0x38033: 0x6d8c1e20,\n\t0x38034: 0x6d8c2020, 0x38035: 0x6d8c2220, 0x38036: 0x6d8c2420, 0x38037: 0x6d8c2620,\n\t0x38038: 0x6d8c2820, 0x38039: 0x6d8c2a20, 0x3803a: 0x6d8c2c20, 0x3803b: 0x6d623620,\n\t0x3803c: 0x6d8c2e20, 0x3803d: 0x6d8c3020, 0x3803e: 0x6d8c3220, 0x3803f: 0x6d8c3420,\n\t// Block 0xe01, offset 0x38040\n\t0x38040: 0x6d8c3620, 0x38041: 0x6d8c3820, 0x38042: 0x6d8c3a20, 0x38043: 0x6db05c20,\n\t0x38044: 0x6db05e20, 0x38045: 0x6db06020, 0x38046: 0x6db06220, 0x38047: 0x6db06420,\n\t0x38048: 0x6db06620, 0x38049: 0x6db06820, 0x3804a: 0x6db06a20, 0x3804b: 0x6db06c20,\n\t0x3804c: 0x6db06e20, 0x3804d: 0x6dcfe820, 0x3804e: 0x6dcfea20, 0x3804f: 0x6dcfec20,\n\t0x38050: 0x6dcfee20, 0x38051: 0x6dcff020, 0x38052: 0x6dcff220, 0x38053: 0x6dcff420,\n\t0x38054: 0x6dcff620, 0x38055: 0x6dcff820, 0x38056: 0x6dcffa20, 0x38057: 0x6dcffc20,\n\t0x38058: 0x6dcffe20, 0x38059: 0x6dd00020, 0x3805a: 0x6dd00220, 0x3805b: 0x6dd00420,\n\t0x3805c: 0x6de9f020, 0x3805d: 0x6de9f220, 0x3805e: 0x6d8c3c20, 0x3805f: 0x6dd00620,\n\t0x38060: 0x6de9f420, 0x38061: 0x6de9f620, 0x38062: 0x6dffb820, 0x38063: 0x6dffba20,\n\t0x38064: 0x6dffbc20, 0x38065: 0x6dffbe20, 0x38066: 0x6e122420, 0x38067: 0x6e204c20,\n\t0x38068: 0x6e122620, 0x38069: 0x6e122820, 0x3806a: 0x6dffc020, 0x3806b: 0x6dffc220,\n\t0x3806c: 0x6e122a20, 0x3806d: 0x6e204e20, 0x3806e: 0x6e205020, 0x3806f: 0x6e205220,\n\t0x38070: 0x6e33c620, 0x38071: 0x6c25e020, 0x38072: 0x6c25e220, 0x38073: 0x6c3e3020,\n\t0x38074: 0x6c3e3220, 0x38075: 0x6c3e3420, 0x38076: 0x6c5d3020, 0x38077: 0x6c5d3220,\n\t0x38078: 0x6c5d3420, 0x38079: 0x6c5d3620, 0x3807a: 0x6c819420, 0x3807b: 0x6c819620,\n\t0x3807c: 0x6c819820, 0x3807d: 0x6c819a20, 0x3807e: 0x6c819c20, 0x3807f: 0x6c819e20,\n\t// Block 0xe02, offset 0x38080\n\t0x38080: 0x6caab620, 0x38081: 0x6d07aa20, 0x38082: 0x6d358e20, 0x38083: 0x6db07220,\n\t0x38084: 0x6d623c20, 0x38085: 0x6d623e20, 0x38086: 0x6d8c4220, 0x38087: 0x6d8c4420,\n\t0x38088: 0x6db07420, 0x38089: 0x6db07620, 0x3808a: 0x6dd00c20, 0x3808b: 0x6e2b4020,\n\t0x3808c: 0x6e2b4220, 0x3808d: 0x6e3dda20, 0x3808e: 0x6c3e3820, 0x3808f: 0x6c3e3a20,\n\t0x38090: 0x6c144a20, 0x38091: 0x6c3e3c20, 0x38092: 0x6c81a820, 0x38093: 0x6caab820,\n\t0x38094: 0x6cd8fa20, 0x38095: 0x6cd8fc20, 0x38096: 0x6d07ae20, 0x38097: 0x6d359220,\n\t0x38098: 0x6d624220, 0x38099: 0x6d624420, 0x3809a: 0x6d624620, 0x3809b: 0x6d624820,\n\t0x3809c: 0x6d624a20, 0x3809d: 0x6d8c4620, 0x3809e: 0x6d8c4820, 0x3809f: 0x6db07820,\n\t0x380a0: 0x6db07a20, 0x380a1: 0x6db07c20, 0x380a2: 0x6e205620, 0x380a3: 0x6e33c820,\n\t0x380a4: 0x6c144e20, 0x380a5: 0x6c3e4020, 0x380a6: 0x6c3e4220, 0x380a7: 0x6c3e4420,\n\t0x380a8: 0x6c5d4c20, 0x380a9: 0x6c5d4e20, 0x380aa: 0x6c5d5020, 0x380ab: 0x6c81b420,\n\t0x380ac: 0x6caac820, 0x380ad: 0x6caaca20, 0x380ae: 0x6caacc20, 0x380af: 0x6cd90020,\n\t0x380b0: 0x6cd90220, 0x380b1: 0x6cd90420, 0x380b2: 0x6cd90620, 0x380b3: 0x6cd90820,\n\t0x380b4: 0x6d07b820, 0x380b5: 0x6d07ba20, 0x380b6: 0x6d07bc20, 0x380b7: 0x6d35a420,\n\t0x380b8: 0x6d35a620, 0x380b9: 0x6d35a820, 0x380ba: 0x6d35aa20, 0x380bb: 0x6d35ac20,\n\t0x380bc: 0x6d35ae20, 0x380bd: 0x6d35b020, 0x380be: 0x6d35b220, 0x380bf: 0x6d35b420,\n\t// Block 0xe03, offset 0x380c0\n\t0x380c0: 0x6d35b620, 0x380c1: 0x6d35b820, 0x380c2: 0x6d625420, 0x380c3: 0x6d625620,\n\t0x380c4: 0x6d625820, 0x380c5: 0x6d625a20, 0x380c6: 0x6d625c20, 0x380c7: 0x6d625e20,\n\t0x380c8: 0x6d626020, 0x380c9: 0x6d626220, 0x380ca: 0x6d626420, 0x380cb: 0x6d8c5020,\n\t0x380cc: 0x6d8c5220, 0x380cd: 0x6d8c5420, 0x380ce: 0x6d8c5620, 0x380cf: 0x6d8c5820,\n\t0x380d0: 0x6d8c5a20, 0x380d1: 0x6d8c5c20, 0x380d2: 0x6d8c5e20, 0x380d3: 0x6db08820,\n\t0x380d4: 0x6db08a20, 0x380d5: 0x6db08c20, 0x380d6: 0x6db08e20, 0x380d7: 0x6db09020,\n\t0x380d8: 0x6db09220, 0x380d9: 0x6db09420, 0x380da: 0x6db09620, 0x380db: 0x6dd01620,\n\t0x380dc: 0x6dd01820, 0x380dd: 0x6dd01a20, 0x380de: 0x6dd01c20, 0x380df: 0x6de9f820,\n\t0x380e0: 0x6dd01e20, 0x380e1: 0x6dd02020, 0x380e2: 0x6dd02220, 0x380e3: 0x6dd02420,\n\t0x380e4: 0x6dd02620, 0x380e5: 0x6de9fa20, 0x380e6: 0x6de9fc20, 0x380e7: 0x6de9fe20,\n\t0x380e8: 0x6dea0020, 0x380e9: 0x6e123020, 0x380ea: 0x6e123220, 0x380eb: 0x6e33ca20,\n\t0x380ec: 0x6e33cc20, 0x380ed: 0x6e39aa20, 0x380ee: 0x6c25e820, 0x380ef: 0x6c3e4820,\n\t0x380f0: 0x6c3e4a20, 0x380f1: 0x6c3e4c20, 0x380f2: 0x6c3e4e20, 0x380f3: 0x6c3e5020,\n\t0x380f4: 0x6c3e5220, 0x380f5: 0x6c3e5420, 0x380f6: 0x6c3e5620, 0x380f7: 0x6c5d5620,\n\t0x380f8: 0x6c5d5820, 0x380f9: 0x6c5d5a20, 0x380fa: 0x6c5d5c20, 0x380fb: 0x6c5d5e20,\n\t0x380fc: 0x6c81d020, 0x380fd: 0x6c81d220, 0x380fe: 0x6c81d420, 0x380ff: 0x6c81d620,\n\t// Block 0xe04, offset 0x38100\n\t0x38100: 0x6c81d820, 0x38101: 0x6c81da20, 0x38102: 0x6c81dc20, 0x38103: 0x6c81de20,\n\t0x38104: 0x6c81e020, 0x38105: 0x6c81e220, 0x38106: 0x6c81e420, 0x38107: 0x6c81e620,\n\t0x38108: 0x6c81e820, 0x38109: 0x6c81ea20, 0x3810a: 0x6c81ec20, 0x3810b: 0x6c81ee20,\n\t0x3810c: 0x6c81f020, 0x3810d: 0x6c81f220, 0x3810e: 0x6c81f420, 0x3810f: 0x6c81f620,\n\t0x38110: 0x6caaea20, 0x38111: 0x6caaec20, 0x38112: 0x6caaee20, 0x38113: 0x6caaf020,\n\t0x38114: 0x6caaf220, 0x38115: 0x6caaf420, 0x38116: 0x6caaf620, 0x38117: 0x6caaf820,\n\t0x38118: 0x6caafa20, 0x38119: 0x6caafc20, 0x3811a: 0x6caafe20, 0x3811b: 0x6cab0020,\n\t0x3811c: 0x6cab0220, 0x3811d: 0x6cab0420, 0x3811e: 0x6cab0620, 0x3811f: 0x6cab0820,\n\t0x38120: 0x6cd92020, 0x38121: 0x6cd92220, 0x38122: 0x6cd92420, 0x38123: 0x6d07cc20,\n\t0x38124: 0x6cd92620, 0x38125: 0x6cd92820, 0x38126: 0x6cd92a20, 0x38127: 0x6cd92c20,\n\t0x38128: 0x6cd92e20, 0x38129: 0x6cd93020, 0x3812a: 0x6cd93220, 0x3812b: 0x6cd93420,\n\t0x3812c: 0x6cd93620, 0x3812d: 0x6cd93820, 0x3812e: 0x6cd93a20, 0x3812f: 0x6cd93c20,\n\t0x38130: 0x6cd93e20, 0x38131: 0x6cd94020, 0x38132: 0x6cd94220, 0x38133: 0x6cd94420,\n\t0x38134: 0x6cd94620, 0x38135: 0x6d07ce20, 0x38136: 0x6d07d020, 0x38137: 0x6d07d220,\n\t0x38138: 0x6d07d420, 0x38139: 0x6d07d620, 0x3813a: 0x6d07d820, 0x3813b: 0x6d07da20,\n\t0x3813c: 0x6d07dc20, 0x3813d: 0x6d07de20, 0x3813e: 0x6d07e020, 0x3813f: 0x6d07e220,\n\t// Block 0xe05, offset 0x38140\n\t0x38140: 0x6d07e420, 0x38141: 0x6d07e620, 0x38142: 0x6d07e820, 0x38143: 0x6d07ea20,\n\t0x38144: 0x6d07ec20, 0x38145: 0x6d07ee20, 0x38146: 0x6d07f020, 0x38147: 0x6d07f220,\n\t0x38148: 0x6d35d820, 0x38149: 0x6d35da20, 0x3814a: 0x6d35dc20, 0x3814b: 0x6d35de20,\n\t0x3814c: 0x6d35e020, 0x3814d: 0x6d35e220, 0x3814e: 0x6d35e420, 0x3814f: 0x6d35e620,\n\t0x38150: 0x6d35e820, 0x38151: 0x6d35ea20, 0x38152: 0x6d35ec20, 0x38153: 0x6d35ee20,\n\t0x38154: 0x6d35f020, 0x38155: 0x6d35f220, 0x38156: 0x6d35f420, 0x38157: 0x6d07f420,\n\t0x38158: 0x6d35f620, 0x38159: 0x6d35f820, 0x3815a: 0x6d35fa20, 0x3815b: 0x6d35fc20,\n\t0x3815c: 0x6d35fe20, 0x3815d: 0x6d360020, 0x3815e: 0x6d360220, 0x3815f: 0x6d360420,\n\t0x38160: 0x6d360620, 0x38161: 0x6d360820, 0x38162: 0x6d627e20, 0x38163: 0x6d628020,\n\t0x38164: 0x6d628220, 0x38165: 0x6d628420, 0x38166: 0x6d628620, 0x38167: 0x6d628820,\n\t0x38168: 0x6d628a20, 0x38169: 0x6d628c20, 0x3816a: 0x6d628e20, 0x3816b: 0x6d629020,\n\t0x3816c: 0x6d629220, 0x3816d: 0x6d629420, 0x3816e: 0x6d629620, 0x3816f: 0x6d629820,\n\t0x38170: 0x6d629a20, 0x38171: 0x6d629c20, 0x38172: 0x6d629e20, 0x38173: 0x6d62a020,\n\t0x38174: 0x6d62a220, 0x38175: 0x6d62a420, 0x38176: 0x6d62a620, 0x38177: 0x6d62a820,\n\t0x38178: 0x6d62aa20, 0x38179: 0x6d62ac20, 0x3817a: 0x6d62ae20, 0x3817b: 0x6d62b020,\n\t0x3817c: 0x6d8c6c20, 0x3817d: 0x6d8c6e20, 0x3817e: 0x6d8c7020, 0x3817f: 0x6d8c7220,\n\t// Block 0xe06, offset 0x38180\n\t0x38180: 0x6d8c7420, 0x38181: 0x6d8c7620, 0x38182: 0x6d8c7820, 0x38183: 0x6d8c7a20,\n\t0x38184: 0x6d8c7c20, 0x38185: 0x6d8c7e20, 0x38186: 0x6d8c8020, 0x38187: 0x6d62b220,\n\t0x38188: 0x6d8c8220, 0x38189: 0x6d8c8420, 0x3818a: 0x6d8c8620, 0x3818b: 0x6d8c8820,\n\t0x3818c: 0x6d8c8a20, 0x3818d: 0x6d8c8c20, 0x3818e: 0x6d8c8e20, 0x3818f: 0x6d8c9020,\n\t0x38190: 0x6db0aa20, 0x38191: 0x6db0ac20, 0x38192: 0x6db0ae20, 0x38193: 0x6db0b020,\n\t0x38194: 0x6db0b220, 0x38195: 0x6db0b420, 0x38196: 0x6db0b620, 0x38197: 0x6db0b820,\n\t0x38198: 0x6db0ba20, 0x38199: 0x6db0bc20, 0x3819a: 0x6db0be20, 0x3819b: 0x6db0c020,\n\t0x3819c: 0x6db0c220, 0x3819d: 0x6db0c420, 0x3819e: 0x6db0c620, 0x3819f: 0x6dd03220,\n\t0x381a0: 0x6dd03420, 0x381a1: 0x6dd03620, 0x381a2: 0x6dd03820, 0x381a3: 0x6dd03a20,\n\t0x381a4: 0x6dd03c20, 0x381a5: 0x6dd03e20, 0x381a6: 0x6dd04020, 0x381a7: 0x6dd04220,\n\t0x381a8: 0x6dd04420, 0x381a9: 0x6dd04620, 0x381aa: 0x6dd04820, 0x381ab: 0x6dd04a20,\n\t0x381ac: 0x6dd04c20, 0x381ad: 0x6dd04e20, 0x381ae: 0x6dd05020, 0x381af: 0x6dd05220,\n\t0x381b0: 0x6dd05420, 0x381b1: 0x6dd05620, 0x381b2: 0x6dd05820, 0x381b3: 0x6dea0420,\n\t0x381b4: 0x6dea0620, 0x381b5: 0x6dea0820, 0x381b6: 0x6dea0a20, 0x381b7: 0x6dea0c20,\n\t0x381b8: 0x6dea0e20, 0x381b9: 0x6dea1020, 0x381ba: 0x6dea1220, 0x381bb: 0x6dea1420,\n\t0x381bc: 0x6dea1620, 0x381bd: 0x6dea1820, 0x381be: 0x6dffd020, 0x381bf: 0x6dffd220,\n\t// Block 0xe07, offset 0x381c0\n\t0x381c0: 0x6dffd420, 0x381c1: 0x6dffd620, 0x381c2: 0x6dffd820, 0x381c3: 0x6dffda20,\n\t0x381c4: 0x6dffdc20, 0x381c5: 0x6e123420, 0x381c6: 0x6e123620, 0x381c7: 0x6e123820,\n\t0x381c8: 0x6e123a20, 0x381c9: 0x6e123c20, 0x381ca: 0x6e206220, 0x381cb: 0x6e206420,\n\t0x381cc: 0x6e206620, 0x381cd: 0x6e2b4420, 0x381ce: 0x6e2b4620, 0x381cf: 0x6e33ce20,\n\t0x381d0: 0x6e39ac20, 0x381d1: 0x6e3ddc20, 0x381d2: 0x6c145420, 0x381d3: 0x6c3e5c20,\n\t0x381d4: 0x6c5d6020, 0x381d5: 0x6cab0a20, 0x381d6: 0x6cab0c20, 0x381d7: 0x6cab0e20,\n\t0x381d8: 0x6cd94c20, 0x381d9: 0x6cd94e20, 0x381da: 0x6cd95020, 0x381db: 0x6d080420,\n\t0x381dc: 0x6d080620, 0x381dd: 0x6d361220, 0x381de: 0x6d361420, 0x381df: 0x6d361620,\n\t0x381e0: 0x6d62b620, 0x381e1: 0x6d62b820, 0x381e2: 0x6d62ba20, 0x381e3: 0x6d8c9c20,\n\t0x381e4: 0x6db0ce20, 0x381e5: 0x6db0d020, 0x381e6: 0x6db0d220, 0x381e7: 0x6dea1c20,\n\t0x381e8: 0x6dffde20, 0x381e9: 0x6c146420, 0x381ea: 0x6c146620, 0x381eb: 0x6c146820,\n\t0x381ec: 0x6c146a20, 0x381ed: 0x6c146c20, 0x381ee: 0x6c146e20, 0x381ef: 0x6c147020,\n\t0x381f0: 0x6c147220, 0x381f1: 0x6c147420, 0x381f2: 0x6c147620, 0x381f3: 0x6c147820,\n\t0x381f4: 0x6c261020, 0x381f5: 0x6c261220, 0x381f6: 0x6c261420, 0x381f7: 0x6c261620,\n\t0x381f8: 0x6c261820, 0x381f9: 0x6c261a20, 0x381fa: 0x6c261c20, 0x381fb: 0x6c261e20,\n\t0x381fc: 0x6c262020, 0x381fd: 0x6c262220, 0x381fe: 0x6c262420, 0x381ff: 0x6c3ebe20,\n\t// Block 0xe08, offset 0x38200\n\t0x38200: 0x6c3ec020, 0x38201: 0x6c3ec220, 0x38202: 0x6c3ec420, 0x38203: 0x6c3ec620,\n\t0x38204: 0x6c3ec820, 0x38205: 0x6c3eca20, 0x38206: 0x6c3ecc20, 0x38207: 0x6c3ece20,\n\t0x38208: 0x6c3ed020, 0x38209: 0x6c3ed220, 0x3820a: 0x6c3ed420, 0x3820b: 0x6c3ed620,\n\t0x3820c: 0x6c3ed820, 0x3820d: 0x6c3eda20, 0x3820e: 0x6c3edc20, 0x3820f: 0x6c3ede20,\n\t0x38210: 0x6c3ee020, 0x38211: 0x6c3ee220, 0x38212: 0x6c3ee420, 0x38213: 0x6c3ee620,\n\t0x38214: 0x6c3ee820, 0x38215: 0x6c3eea20, 0x38216: 0x6c3eec20, 0x38217: 0x6c3eee20,\n\t0x38218: 0x6c3ef020, 0x38219: 0x6c3ef220, 0x3821a: 0x6c3ef420, 0x3821b: 0x6c3ef620,\n\t0x3821c: 0x6c3ef820, 0x3821d: 0x6c3efa20, 0x3821e: 0x6c3efc20, 0x3821f: 0x6c3efe20,\n\t0x38220: 0x6c3f0020, 0x38221: 0x6c3f0220, 0x38222: 0x6c3f0420, 0x38223: 0x6c3f0620,\n\t0x38224: 0x6c3f0820, 0x38225: 0x6c3f0a20, 0x38226: 0x6c3f0c20, 0x38227: 0x6c3f0e20,\n\t0x38228: 0x6c3f1020, 0x38229: 0x6c3f1220, 0x3822a: 0x6c5dca20, 0x3822b: 0x6c5dcc20,\n\t0x3822c: 0x6c5dce20, 0x3822d: 0x6c5dd020, 0x3822e: 0x6c5dd220, 0x3822f: 0x6c5dd420,\n\t0x38230: 0x6c5dd620, 0x38231: 0x6c5dd820, 0x38232: 0x6c5dda20, 0x38233: 0x6c5ddc20,\n\t0x38234: 0x6c5dde20, 0x38235: 0x6c5de020, 0x38236: 0x6c5de220, 0x38237: 0x6c5de420,\n\t0x38238: 0x6c5de620, 0x38239: 0x6c5de820, 0x3823a: 0x6c5dea20, 0x3823b: 0x6c5dec20,\n\t0x3823c: 0x6c5dee20, 0x3823d: 0x6c5df020, 0x3823e: 0x6c5df220, 0x3823f: 0x6c5df420,\n\t// Block 0xe09, offset 0x38240\n\t0x38240: 0x6c5df620, 0x38241: 0x6c5df820, 0x38242: 0x6c5dfa20, 0x38243: 0x6c5dfc20,\n\t0x38244: 0x6c5dfe20, 0x38245: 0x6c5e0020, 0x38246: 0x6c5e0220, 0x38247: 0x6c5e0420,\n\t0x38248: 0x6c5e0620, 0x38249: 0x6c5e0820, 0x3824a: 0x6c5e0a20, 0x3824b: 0x6c5e0c20,\n\t0x3824c: 0x6c5e0e20, 0x3824d: 0x6c5e1020, 0x3824e: 0x6c5e1220, 0x3824f: 0x6c5e1420,\n\t0x38250: 0x6c5e1620, 0x38251: 0x6c5e1820, 0x38252: 0x6c5e1a20, 0x38253: 0x6c5e1c20,\n\t0x38254: 0x6c5e1e20, 0x38255: 0x6c5e2020, 0x38256: 0x6c5e2220, 0x38257: 0x6c5e2420,\n\t0x38258: 0x6c5e2620, 0x38259: 0x6c5e2820, 0x3825a: 0x6c5e2a20, 0x3825b: 0x6c5e2c20,\n\t0x3825c: 0x6c5e2e20, 0x3825d: 0x6c826020, 0x3825e: 0x6c826220, 0x3825f: 0x6c826420,\n\t0x38260: 0x6c826620, 0x38261: 0x6c826820, 0x38262: 0x6c826a20, 0x38263: 0x6c826c20,\n\t0x38264: 0x6c826e20, 0x38265: 0x6c827020, 0x38266: 0x6c827220, 0x38267: 0x6c827420,\n\t0x38268: 0x6c827620, 0x38269: 0x6c827820, 0x3826a: 0x6c827a20, 0x3826b: 0x6c827c20,\n\t0x3826c: 0x6c827e20, 0x3826d: 0x6c828020, 0x3826e: 0x6c828220, 0x3826f: 0x6c828420,\n\t0x38270: 0x6c828620, 0x38271: 0x6c828820, 0x38272: 0x6c828a20, 0x38273: 0x6c828c20,\n\t0x38274: 0x6c828e20, 0x38275: 0x6c829020, 0x38276: 0x6c829220, 0x38277: 0x6c829420,\n\t0x38278: 0x6c829620, 0x38279: 0x6c829820, 0x3827a: 0x6c829a20, 0x3827b: 0x6c829c20,\n\t0x3827c: 0x6c829e20, 0x3827d: 0x6c82a020, 0x3827e: 0x6c82a220, 0x3827f: 0x6c82a420,\n\t// Block 0xe0a, offset 0x38280\n\t0x38280: 0x6c82a620, 0x38281: 0x6c82a820, 0x38282: 0x6c82aa20, 0x38283: 0x6c82ac20,\n\t0x38284: 0x6c82ae20, 0x38285: 0x6c82b020, 0x38286: 0x6c82b220, 0x38287: 0x6c82b420,\n\t0x38288: 0x6c82b620, 0x38289: 0x6c82b820, 0x3828a: 0x6c82ba20, 0x3828b: 0x6c82bc20,\n\t0x3828c: 0x6c82be20, 0x3828d: 0x6c82c020, 0x3828e: 0x6c82c220, 0x3828f: 0x6c82c420,\n\t0x38290: 0x6c82c620, 0x38291: 0x6c82c820, 0x38292: 0x6c82ca20, 0x38293: 0x6c82cc20,\n\t0x38294: 0x6cab7220, 0x38295: 0x6cab7420, 0x38296: 0x6cab7620, 0x38297: 0x6cab7820,\n\t0x38298: 0x6cab7a20, 0x38299: 0x6cab7c20, 0x3829a: 0x6cab7e20, 0x3829b: 0x6cab8020,\n\t0x3829c: 0x6cab8220, 0x3829d: 0x6cab8420, 0x3829e: 0x6cab8620, 0x3829f: 0x6cab8820,\n\t0x382a0: 0x6cab8a20, 0x382a1: 0x6cab8c20, 0x382a2: 0x6cab8e20, 0x382a3: 0x6cab9020,\n\t0x382a4: 0x6cab9220, 0x382a5: 0x6cab9420, 0x382a6: 0x6cab9620, 0x382a7: 0x6cab9820,\n\t0x382a8: 0x6cab9a20, 0x382a9: 0x6cab9c20, 0x382aa: 0x6cab9e20, 0x382ab: 0x6caba020,\n\t0x382ac: 0x6caba220, 0x382ad: 0x6caba420, 0x382ae: 0x6caba620, 0x382af: 0x6caba820,\n\t0x382b0: 0x6cabaa20, 0x382b1: 0x6cabac20, 0x382b2: 0x6cabae20, 0x382b3: 0x6cabb020,\n\t0x382b4: 0x6cabb220, 0x382b5: 0x6cabb420, 0x382b6: 0x6cabb620, 0x382b7: 0x6cabb820,\n\t0x382b8: 0x6cabba20, 0x382b9: 0x6cabbc20, 0x382ba: 0x6cabbe20, 0x382bb: 0x6cabc020,\n\t0x382bc: 0x6cabc220, 0x382bd: 0x6cabc420, 0x382be: 0x6cabc620, 0x382bf: 0x6cabc820,\n\t// Block 0xe0b, offset 0x382c0\n\t0x382c0: 0x6cabca20, 0x382c1: 0x6cabcc20, 0x382c2: 0x6cabce20, 0x382c3: 0x6cabd020,\n\t0x382c4: 0x6cabd220, 0x382c5: 0x6cabd420, 0x382c6: 0x6cd9c020, 0x382c7: 0x6cd9c220,\n\t0x382c8: 0x6cd9c420, 0x382c9: 0x6cd9c620, 0x382ca: 0x6cd9c820, 0x382cb: 0x6cd9ca20,\n\t0x382cc: 0x6cd9cc20, 0x382cd: 0x6cd9ce20, 0x382ce: 0x6cd9d020, 0x382cf: 0x6cd9d220,\n\t0x382d0: 0x6cd9d420, 0x382d1: 0x6cd9d620, 0x382d2: 0x6cd9d820, 0x382d3: 0x6cd9da20,\n\t0x382d4: 0x6cd9dc20, 0x382d5: 0x6cd9de20, 0x382d6: 0x6cd9e020, 0x382d7: 0x6cd9e220,\n\t0x382d8: 0x6cd9e420, 0x382d9: 0x6cd9e620, 0x382da: 0x6cd9e820, 0x382db: 0x6cd9ea20,\n\t0x382dc: 0x6cd9ec20, 0x382dd: 0x6cd9ee20, 0x382de: 0x6cd9f020, 0x382df: 0x6cd9f220,\n\t0x382e0: 0x6cd9f420, 0x382e1: 0x6cd9f620, 0x382e2: 0x6cd9f820, 0x382e3: 0x6cd9fa20,\n\t0x382e4: 0x6cd9fc20, 0x382e5: 0x6cd9fe20, 0x382e6: 0x6cda0020, 0x382e7: 0x6cda0220,\n\t0x382e8: 0x6cda0420, 0x382e9: 0x6cda0620, 0x382ea: 0x6cda0820, 0x382eb: 0x6cda0a20,\n\t0x382ec: 0x6cda0c20, 0x382ed: 0x6cda0e20, 0x382ee: 0x6cda1020, 0x382ef: 0x6cda1220,\n\t0x382f0: 0x6cda1420, 0x382f1: 0x6cda1620, 0x382f2: 0x6cda1820, 0x382f3: 0x6cc87c20,\n\t0x382f4: 0x6cda1a20, 0x382f5: 0x6cda1c20, 0x382f6: 0x6cda1e20, 0x382f7: 0x6cda2020,\n\t0x382f8: 0x6cda2220, 0x382f9: 0x6cda2420, 0x382fa: 0x6cda2620, 0x382fb: 0x6cda2820,\n\t0x382fc: 0x6cda2a20, 0x382fd: 0x6cda2c20, 0x382fe: 0x6cda2e20, 0x382ff: 0x6cda3020,\n\t// Block 0xe0c, offset 0x38300\n\t0x38300: 0x6cda3220, 0x38301: 0x6cda3420, 0x38302: 0x6cda3620, 0x38303: 0x6cda3820,\n\t0x38304: 0x6cda3a20, 0x38305: 0x6cda3c20, 0x38306: 0x6cda3e20, 0x38307: 0x6cda4020,\n\t0x38308: 0x6cda4220, 0x38309: 0x6cda4420, 0x3830a: 0x6cda4620, 0x3830b: 0x6cda4820,\n\t0x3830c: 0x6cda4a20, 0x3830d: 0x6cda4c20, 0x3830e: 0x6cda4e20, 0x3830f: 0x6cda5020,\n\t0x38310: 0x6cda5220, 0x38311: 0x6cda5420, 0x38312: 0x6cda5620, 0x38313: 0x6cda5820,\n\t0x38314: 0x6cda5a20, 0x38315: 0x6cda5c20, 0x38316: 0x6cda5e20, 0x38317: 0x6cda6020,\n\t0x38318: 0x6cda6220, 0x38319: 0x6cda6420, 0x3831a: 0x6d087020, 0x3831b: 0x6d087220,\n\t0x3831c: 0x6d087420, 0x3831d: 0x6d087620, 0x3831e: 0x6d087820, 0x3831f: 0x6d087a20,\n\t0x38320: 0x6d087c20, 0x38321: 0x6d087e20, 0x38322: 0x6d088020, 0x38323: 0x6d088220,\n\t0x38324: 0x6d088420, 0x38325: 0x6d088620, 0x38326: 0x6d088820, 0x38327: 0x6d088a20,\n\t0x38328: 0x6d088c20, 0x38329: 0x6d088e20, 0x3832a: 0x6d089020, 0x3832b: 0x6d089220,\n\t0x3832c: 0x6d089420, 0x3832d: 0x6d089620, 0x3832e: 0x6d089820, 0x3832f: 0x6d089a20,\n\t0x38330: 0x6d089c20, 0x38331: 0x6d089e20, 0x38332: 0x6d08a020, 0x38333: 0x6d08a220,\n\t0x38334: 0x6d08a420, 0x38335: 0x6d08a620, 0x38336: 0x6d08a820, 0x38337: 0x6d08aa20,\n\t0x38338: 0x6d08ac20, 0x38339: 0x6d08ae20, 0x3833a: 0x6d08b020, 0x3833b: 0x6d08b220,\n\t0x3833c: 0x6d08b420, 0x3833d: 0x6d08b620, 0x3833e: 0x6d08b820, 0x3833f: 0x6d08ba20,\n\t// Block 0xe0d, offset 0x38340\n\t0x38340: 0x6d08bc20, 0x38341: 0x6d08be20, 0x38342: 0x6d08c020, 0x38343: 0x6d08c220,\n\t0x38344: 0x6d08c420, 0x38345: 0x6d08c620, 0x38346: 0x6d08c820, 0x38347: 0x6d08ca20,\n\t0x38348: 0x6d08cc20, 0x38349: 0x6d08ce20, 0x3834a: 0x6d08d020, 0x3834b: 0x6d08d220,\n\t0x3834c: 0x6d08d420, 0x3834d: 0x6d08d620, 0x3834e: 0x6d08d820, 0x3834f: 0x6d08da20,\n\t0x38350: 0x6d08dc20, 0x38351: 0x6d08de20, 0x38352: 0x6d08e020, 0x38353: 0x6d08e220,\n\t0x38354: 0x6d08e420, 0x38355: 0x6d08e620, 0x38356: 0x6d08e820, 0x38357: 0x6d08ea20,\n\t0x38358: 0x6d08ec20, 0x38359: 0x6d365c20, 0x3835a: 0x6d365e20, 0x3835b: 0x6d366020,\n\t0x3835c: 0x6d366220, 0x3835d: 0x6d366420, 0x3835e: 0x6d366620, 0x3835f: 0x6d366820,\n\t0x38360: 0x6d366a20, 0x38361: 0x6d366c20, 0x38362: 0x6d366e20, 0x38363: 0x6d367020,\n\t0x38364: 0x6d367220, 0x38365: 0x6d367420, 0x38366: 0x6d367620, 0x38367: 0x6d367820,\n\t0x38368: 0x6d367a20, 0x38369: 0x6d367c20, 0x3836a: 0x6d367e20, 0x3836b: 0x6d368020,\n\t0x3836c: 0x6d368220, 0x3836d: 0x6d368420, 0x3836e: 0x6d368620, 0x3836f: 0x6d368820,\n\t0x38370: 0x6d368a20, 0x38371: 0x6d368c20, 0x38372: 0x6d368e20, 0x38373: 0x6d369020,\n\t0x38374: 0x6d369220, 0x38375: 0x6d369420, 0x38376: 0x6d369620, 0x38377: 0x6d369820,\n\t0x38378: 0x6d369a20, 0x38379: 0x6d369c20, 0x3837a: 0x6d369e20, 0x3837b: 0x6d36a020,\n\t0x3837c: 0x6d36a220, 0x3837d: 0x6d36a420, 0x3837e: 0x6d36a620, 0x3837f: 0x6d36a820,\n\t// Block 0xe0e, offset 0x38380\n\t0x38380: 0x6d36aa20, 0x38381: 0x6d36ac20, 0x38382: 0x6d36ae20, 0x38383: 0x6d36b020,\n\t0x38384: 0x6d36b220, 0x38385: 0x6d36b420, 0x38386: 0x6d36b620, 0x38387: 0x6d36b820,\n\t0x38388: 0x6d36ba20, 0x38389: 0x6d36bc20, 0x3838a: 0x6d36be20, 0x3838b: 0x6d36c020,\n\t0x3838c: 0x6d36c220, 0x3838d: 0x6d36c420, 0x3838e: 0x6d36c620, 0x3838f: 0x6d36c820,\n\t0x38390: 0x6d36ca20, 0x38391: 0x6d36cc20, 0x38392: 0x6d36ce20, 0x38393: 0x6d08ee20,\n\t0x38394: 0x6d08f020, 0x38395: 0x6d36d020, 0x38396: 0x6d36d220, 0x38397: 0x6d36d420,\n\t0x38398: 0x6d62f420, 0x38399: 0x6d62f620, 0x3839a: 0x6d62f820, 0x3839b: 0x6d62fa20,\n\t0x3839c: 0x6d62fc20, 0x3839d: 0x6d62fe20, 0x3839e: 0x6d630020, 0x3839f: 0x6d630220,\n\t0x383a0: 0x6d630420, 0x383a1: 0x6d630620, 0x383a2: 0x6d630820, 0x383a3: 0x6d630a20,\n\t0x383a4: 0x6d630c20, 0x383a5: 0x6d630e20, 0x383a6: 0x6d631020, 0x383a7: 0x6d631220,\n\t0x383a8: 0x6d631420, 0x383a9: 0x6d631620, 0x383aa: 0x6d631820, 0x383ab: 0x6d631a20,\n\t0x383ac: 0x6d631c20, 0x383ad: 0x6d631e20, 0x383ae: 0x6d632020, 0x383af: 0x6d632220,\n\t0x383b0: 0x6d632420, 0x383b1: 0x6d632620, 0x383b2: 0x6d632820, 0x383b3: 0x6d632a20,\n\t0x383b4: 0x6d632c20, 0x383b5: 0x6d632e20, 0x383b6: 0x6d633020, 0x383b7: 0x6d633220,\n\t0x383b8: 0x6d633420, 0x383b9: 0x6d633620, 0x383ba: 0x6d633820, 0x383bb: 0x6d633a20,\n\t0x383bc: 0x6d633c20, 0x383bd: 0x6d633e20, 0x383be: 0x6d634020, 0x383bf: 0x6d634220,\n\t// Block 0xe0f, offset 0x383c0\n\t0x383c0: 0x6d634420, 0x383c1: 0x6d634620, 0x383c2: 0x6d634820, 0x383c3: 0x6d8cd620,\n\t0x383c4: 0x6d8cd820, 0x383c5: 0x6d8cda20, 0x383c6: 0x6d8cdc20, 0x383c7: 0x6d8cde20,\n\t0x383c8: 0x6d8ce020, 0x383c9: 0x6d8ce220, 0x383ca: 0x6d8ce420, 0x383cb: 0x6d8ce620,\n\t0x383cc: 0x6d8ce820, 0x383cd: 0x6d8cea20, 0x383ce: 0x6d8cec20, 0x383cf: 0x6d8cee20,\n\t0x383d0: 0x6d8cf020, 0x383d1: 0x6d8cf220, 0x383d2: 0x6d8cf420, 0x383d3: 0x6d8cf620,\n\t0x383d4: 0x6d8cf820, 0x383d5: 0x6d8cfa20, 0x383d6: 0x6d8cfc20, 0x383d7: 0x6d8cfe20,\n\t0x383d8: 0x6d8d0020, 0x383d9: 0x6d8d0220, 0x383da: 0x6d8d0420, 0x383db: 0x6d8d0620,\n\t0x383dc: 0x6d8d0820, 0x383dd: 0x6d8d0a20, 0x383de: 0x6d8d0c20, 0x383df: 0x6d8d0e20,\n\t0x383e0: 0x6d8d1020, 0x383e1: 0x6d8d1220, 0x383e2: 0x6d8d1420, 0x383e3: 0x6d8d1620,\n\t0x383e4: 0x6d8d1820, 0x383e5: 0x6d8d1a20, 0x383e6: 0x6d8d1c20, 0x383e7: 0x6d8d1e20,\n\t0x383e8: 0x6d8d2020, 0x383e9: 0x6d8d2220, 0x383ea: 0x6d8d2420, 0x383eb: 0x6d8d2620,\n\t0x383ec: 0x6d8d2820, 0x383ed: 0x6d8d2a20, 0x383ee: 0x6d8d2c20, 0x383ef: 0x6d8d2e20,\n\t0x383f0: 0x6d8d3020, 0x383f1: 0x6d8d3220, 0x383f2: 0x6d8d3420, 0x383f3: 0x6d8d3620,\n\t0x383f4: 0x6d8d3820, 0x383f5: 0x6d8d3a20, 0x383f6: 0x6d8d3c20, 0x383f7: 0x6d8d3e20,\n\t0x383f8: 0x6d8d4020, 0x383f9: 0x6d8d4220, 0x383fa: 0x6d8d4420, 0x383fb: 0x6d8d4620,\n\t0x383fc: 0x6d8d4820, 0x383fd: 0x6d8d4a20, 0x383fe: 0x6db10420, 0x383ff: 0x6db10620,\n\t// Block 0xe10, offset 0x38400\n\t0x38400: 0x6db10820, 0x38401: 0x6db10a20, 0x38402: 0x6db10c20, 0x38403: 0x6db10e20,\n\t0x38404: 0x6d8d4c20, 0x38405: 0x6db11020, 0x38406: 0x6db11220, 0x38407: 0x6db11420,\n\t0x38408: 0x6db11620, 0x38409: 0x6db11820, 0x3840a: 0x6db11a20, 0x3840b: 0x6db11c20,\n\t0x3840c: 0x6db11e20, 0x3840d: 0x6db12020, 0x3840e: 0x6dd07620, 0x3840f: 0x6db12220,\n\t0x38410: 0x6db12420, 0x38411: 0x6db12620, 0x38412: 0x6db12820, 0x38413: 0x6db12a20,\n\t0x38414: 0x6db12c20, 0x38415: 0x6db12e20, 0x38416: 0x6da5c020, 0x38417: 0x6d7c7a20,\n\t0x38418: 0x6db13020, 0x38419: 0x6db13220, 0x3841a: 0x6db13420, 0x3841b: 0x6db13620,\n\t0x3841c: 0x6db13820, 0x3841d: 0x6db13a20, 0x3841e: 0x6db13c20, 0x3841f: 0x6db13e20,\n\t0x38420: 0x6db14020, 0x38421: 0x6db14220, 0x38422: 0x6db14420, 0x38423: 0x6db14620,\n\t0x38424: 0x6db14820, 0x38425: 0x6db14a20, 0x38426: 0x6db14c20, 0x38427: 0x6db14e20,\n\t0x38428: 0x6db15020, 0x38429: 0x6db15220, 0x3842a: 0x6db15420, 0x3842b: 0x6db15620,\n\t0x3842c: 0x6db15820, 0x3842d: 0x6db15a20, 0x3842e: 0x6d8d4e20, 0x3842f: 0x6db15c20,\n\t0x38430: 0x6dd07820, 0x38431: 0x6dd07a20, 0x38432: 0x6dd07c20, 0x38433: 0x6dd07e20,\n\t0x38434: 0x6dd08020, 0x38435: 0x6dd08220, 0x38436: 0x6dd08420, 0x38437: 0x6dd08620,\n\t0x38438: 0x6dd08820, 0x38439: 0x6dd08a20, 0x3843a: 0x6dd08c20, 0x3843b: 0x6dd08e20,\n\t0x3843c: 0x6dd09020, 0x3843d: 0x6dd09220, 0x3843e: 0x6dd09420, 0x3843f: 0x6dd09620,\n\t// Block 0xe11, offset 0x38440\n\t0x38440: 0x6dd09820, 0x38441: 0x6dd09a20, 0x38442: 0x6dd09c20, 0x38443: 0x6dd09e20,\n\t0x38444: 0x6dd0a020, 0x38445: 0x6dd0a220, 0x38446: 0x6dd0a420, 0x38447: 0x6dd0a620,\n\t0x38448: 0x6dd0a820, 0x38449: 0x6dd0aa20, 0x3844a: 0x6dea2e20, 0x3844b: 0x6dea3020,\n\t0x3844c: 0x6dea3220, 0x3844d: 0x6dea3420, 0x3844e: 0x6dea3620, 0x3844f: 0x6dea3820,\n\t0x38450: 0x6dea3a20, 0x38451: 0x6dea3c20, 0x38452: 0x6dea3e20, 0x38453: 0x6dea4020,\n\t0x38454: 0x6dea4220, 0x38455: 0x6dea4420, 0x38456: 0x6dea4620, 0x38457: 0x6dea4820,\n\t0x38458: 0x6dea4a20, 0x38459: 0x6dea4c20, 0x3845a: 0x6dea4e20, 0x3845b: 0x6dea5020,\n\t0x3845c: 0x6dea5220, 0x3845d: 0x6dea5420, 0x3845e: 0x6dea5620, 0x3845f: 0x6dea5820,\n\t0x38460: 0x6dea5a20, 0x38461: 0x6dea5c20, 0x38462: 0x6dea5e20, 0x38463: 0x6dea6020,\n\t0x38464: 0x6dea6220, 0x38465: 0x6dffee20, 0x38466: 0x6dfff020, 0x38467: 0x6dfff220,\n\t0x38468: 0x6dfff420, 0x38469: 0x6dfff620, 0x3846a: 0x6dfff820, 0x3846b: 0x6dfffa20,\n\t0x3846c: 0x6dfffc20, 0x3846d: 0x6dfffe20, 0x3846e: 0x6e000020, 0x3846f: 0x6e000220,\n\t0x38470: 0x6e000420, 0x38471: 0x6e000620, 0x38472: 0x6e000820, 0x38473: 0x6e000a20,\n\t0x38474: 0x6e000c20, 0x38475: 0x6e000e20, 0x38476: 0x6e001020, 0x38477: 0x6e001220,\n\t0x38478: 0x6e124a20, 0x38479: 0x6e124c20, 0x3847a: 0x6e124e20, 0x3847b: 0x6e125020,\n\t0x3847c: 0x6e125220, 0x3847d: 0x6e125420, 0x3847e: 0x6e125620, 0x3847f: 0x6e206e20,\n\t// Block 0xe12, offset 0x38480\n\t0x38480: 0x6e207020, 0x38481: 0x6e207220, 0x38482: 0x6e207420, 0x38483: 0x6e207620,\n\t0x38484: 0x6e207820, 0x38485: 0x6e207a20, 0x38486: 0x6e2b4c20, 0x38487: 0x6e2b4e20,\n\t0x38488: 0x6e2b5020, 0x38489: 0x6e2b5220, 0x3848a: 0x6e2b5420, 0x3848b: 0x6e2b5620,\n\t0x3848c: 0x6e2b5820, 0x3848d: 0x6e2b5a20, 0x3848e: 0x6e2b5c20, 0x3848f: 0x6e2b5e20,\n\t0x38490: 0x6e2b6020, 0x38491: 0x6e33d020, 0x38492: 0x6e33d220, 0x38493: 0x6e33d420,\n\t0x38494: 0x6e33d620, 0x38495: 0x6e33d820, 0x38496: 0x6e39b220, 0x38497: 0x6e39b420,\n\t0x38498: 0x6e3dde20, 0x38499: 0x6e3de020, 0x3849a: 0x6e3de220, 0x3849b: 0x6e40be20,\n\t0x3849c: 0x6e42ec20, 0x3849d: 0x6c262620, 0x3849e: 0x6c147c20, 0x3849f: 0x6c5e3820,\n\t0x384a0: 0x6c82d220, 0x384a1: 0x6c82d420, 0x384a2: 0x6c82d620, 0x384a3: 0x6c82d820,\n\t0x384a4: 0x6cabde20, 0x384a5: 0x6cabe020, 0x384a6: 0x6cda7220, 0x384a7: 0x6cda7420,\n\t0x384a8: 0x6cda7620, 0x384a9: 0x6cda7820, 0x384aa: 0x6d8d5c20, 0x384ab: 0x6d36e620,\n\t0x384ac: 0x6d36e820, 0x384ad: 0x6d635620, 0x384ae: 0x6d36ea20, 0x384af: 0x6d635820,\n\t0x384b0: 0x6db16820, 0x384b1: 0x6db16a20, 0x384b2: 0x6dd0b220, 0x384b3: 0x6dd0b420,\n\t0x384b4: 0x6e125a20, 0x384b5: 0x6e125c20, 0x384b6: 0x6e207e20, 0x384b7: 0x6e445e20,\n\t0x384b8: 0x6e45ce20, 0x384b9: 0x6c148020, 0x384ba: 0x6c262a20, 0x384bb: 0x6c262c20,\n\t0x384bc: 0x6c262e20, 0x384bd: 0x6c3f1e20, 0x384be: 0x6c5e3a20, 0x384bf: 0x6c5e3c20,\n\t// Block 0xe13, offset 0x384c0\n\t0x384c0: 0x6c5e3e20, 0x384c1: 0x6c82e020, 0x384c2: 0x6c82e220, 0x384c3: 0x6c82e420,\n\t0x384c4: 0x6c82e620, 0x384c5: 0x6c82e820, 0x384c6: 0x6c82ea20, 0x384c7: 0x6c82ec20,\n\t0x384c8: 0x6c82ee20, 0x384c9: 0x6c82f020, 0x384ca: 0x6c82f220, 0x384cb: 0x6c82f420,\n\t0x384cc: 0x6cabe220, 0x384cd: 0x6cabe420, 0x384ce: 0x6cabe620, 0x384cf: 0x6cabe820,\n\t0x384d0: 0x6cda8220, 0x384d1: 0x6cda8420, 0x384d2: 0x6cda8620, 0x384d3: 0x6cda8820,\n\t0x384d4: 0x6d08fa20, 0x384d5: 0x6d36ee20, 0x384d6: 0x6d36f020, 0x384d7: 0x6d36f220,\n\t0x384d8: 0x6d635c20, 0x384d9: 0x6d635e20, 0x384da: 0x6d636020, 0x384db: 0x6d636220,\n\t0x384dc: 0x6d636420, 0x384dd: 0x6d636620, 0x384de: 0x6d8d6020, 0x384df: 0x6d8d6220,\n\t0x384e0: 0x6d8d6420, 0x384e1: 0x6db16c20, 0x384e2: 0x6db16e20, 0x384e3: 0x6db17020,\n\t0x384e4: 0x6db17220, 0x384e5: 0x6dd0b820, 0x384e6: 0x6dea6820, 0x384e7: 0x6dea6a20,\n\t0x384e8: 0x6dea6c20, 0x384e9: 0x6dea6e20, 0x384ea: 0x6dea7020, 0x384eb: 0x6e001620,\n\t0x384ec: 0x6e001820, 0x384ed: 0x6e001a20, 0x384ee: 0x6e001c20, 0x384ef: 0x6e125e20,\n\t0x384f0: 0x6e126020, 0x384f1: 0x6e33da20, 0x384f2: 0x6e3de420, 0x384f3: 0x6c148420,\n\t0x384f4: 0x6c148620, 0x384f5: 0x6c3f2020, 0x384f6: 0x6c5e4420, 0x384f7: 0x6c5e4620,\n\t0x384f8: 0x6c5e4820, 0x384f9: 0x6c82f620, 0x384fa: 0x6c82f820, 0x384fb: 0x6cabea20,\n\t0x384fc: 0x6cabec20, 0x384fd: 0x6cabee20, 0x384fe: 0x6cabf020, 0x384ff: 0x6cda9420,\n\t// Block 0xe14, offset 0x38500\n\t0x38500: 0x6cda9620, 0x38501: 0x6d08fe20, 0x38502: 0x6d36f620, 0x38503: 0x6d36f820,\n\t0x38504: 0x6d36fa20, 0x38505: 0x6d636a20, 0x38506: 0x6d636c20, 0x38507: 0x6d636e20,\n\t0x38508: 0x6d1dd820, 0x38509: 0x6d8d6820, 0x3850a: 0x6d8d6a20, 0x3850b: 0x6d8d6c20,\n\t0x3850c: 0x6d8d6e20, 0x3850d: 0x6d8d7020, 0x3850e: 0x6db17420, 0x3850f: 0x6dd0bc20,\n\t0x38510: 0x6dd0be20, 0x38511: 0x6c148a20, 0x38512: 0x6c148c20, 0x38513: 0x6c148e20,\n\t0x38514: 0x6c263020, 0x38515: 0x6c3f2620, 0x38516: 0x6c3f2820, 0x38517: 0x6c5e4c20,\n\t0x38518: 0x6c5e4e20, 0x38519: 0x6c3f2a20, 0x3851a: 0x6c5e5020, 0x3851b: 0x6c5e5220,\n\t0x3851c: 0x6c5e5420, 0x3851d: 0x6c830020, 0x3851e: 0x6c830220, 0x3851f: 0x6c830420,\n\t0x38520: 0x6c830620, 0x38521: 0x6c830820, 0x38522: 0x6c830a20, 0x38523: 0x6c830c20,\n\t0x38524: 0x6c830e20, 0x38525: 0x6cabf620, 0x38526: 0x6cabf820, 0x38527: 0x6c5e5620,\n\t0x38528: 0x6cabfa20, 0x38529: 0x6cabfc20, 0x3852a: 0x6cabfe20, 0x3852b: 0x6cac0020,\n\t0x3852c: 0x6cac0220, 0x3852d: 0x6cda9e20, 0x3852e: 0x6cdaa020, 0x3852f: 0x6cdaa220,\n\t0x38530: 0x6cdaa420, 0x38531: 0x6cdaa620, 0x38532: 0x6cdaa820, 0x38533: 0x6d090420,\n\t0x38534: 0x6d090620, 0x38535: 0x6d090820, 0x38536: 0x6d090a20, 0x38537: 0x6d090c20,\n\t0x38538: 0x6d090e20, 0x38539: 0x6d091020, 0x3853a: 0x6d091220, 0x3853b: 0x6d370420,\n\t0x3853c: 0x6d370620, 0x3853d: 0x6d370820, 0x3853e: 0x6d370a20, 0x3853f: 0x6d370c20,\n\t// Block 0xe15, offset 0x38540\n\t0x38540: 0x6d370e20, 0x38541: 0x6d371020, 0x38542: 0x6d371220, 0x38543: 0x6d371420,\n\t0x38544: 0x6d371620, 0x38545: 0x6d637220, 0x38546: 0x6d637420, 0x38547: 0x6d637620,\n\t0x38548: 0x6d637820, 0x38549: 0x6d637a20, 0x3854a: 0x6d637c20, 0x3854b: 0x6d637e20,\n\t0x3854c: 0x6d638020, 0x3854d: 0x6d638220, 0x3854e: 0x6d638420, 0x3854f: 0x6d8d7a20,\n\t0x38550: 0x6d8d7c20, 0x38551: 0x6d8d7e20, 0x38552: 0x6d8d8020, 0x38553: 0x6d8d8220,\n\t0x38554: 0x6d5dd620, 0x38555: 0x6d8d8420, 0x38556: 0x6d8d8620, 0x38557: 0x6d8d8820,\n\t0x38558: 0x6db17620, 0x38559: 0x6db17820, 0x3855a: 0x6db17a20, 0x3855b: 0x6db17c20,\n\t0x3855c: 0x6db17e20, 0x3855d: 0x6db18020, 0x3855e: 0x6db18220, 0x3855f: 0x6db18420,\n\t0x38560: 0x6db18620, 0x38561: 0x6dd0c220, 0x38562: 0x6dd0c420, 0x38563: 0x6dd0c620,\n\t0x38564: 0x6dd0c820, 0x38565: 0x6dd0ca20, 0x38566: 0x6dd0cc20, 0x38567: 0x6dd0ce20,\n\t0x38568: 0x6dca2e20, 0x38569: 0x6dea7620, 0x3856a: 0x6dea7820, 0x3856b: 0x6dea7a20,\n\t0x3856c: 0x6dea7c20, 0x3856d: 0x6e002020, 0x3856e: 0x6e002220, 0x3856f: 0x6dea7e20,\n\t0x38570: 0x6e002420, 0x38571: 0x6e002620, 0x38572: 0x6e002820, 0x38573: 0x6e002a20,\n\t0x38574: 0x6e002c20, 0x38575: 0x6e002e20, 0x38576: 0x6e126220, 0x38577: 0x6e126420,\n\t0x38578: 0x6e126620, 0x38579: 0x6e208020, 0x3857a: 0x6e2b6420, 0x3857b: 0x6e2b6620,\n\t0x3857c: 0x6e33de20, 0x3857d: 0x6e39b620, 0x3857e: 0x6e39b820, 0x3857f: 0x6e39ba20,\n\t// Block 0xe16, offset 0x38580\n\t0x38580: 0x6e3de820, 0x38581: 0x6e40c020, 0x38582: 0x6e40c220, 0x38583: 0x6e454420,\n\t0x38584: 0x6e472c20, 0x38585: 0x6e473620, 0x38586: 0x6c263220, 0x38587: 0x6c5e5820,\n\t0x38588: 0x6c831620, 0x38589: 0x6c831820, 0x3858a: 0x6c831a20, 0x3858b: 0x6c831c20,\n\t0x3858c: 0x6c831e20, 0x3858d: 0x6c832020, 0x3858e: 0x6c832220, 0x3858f: 0x6c832420,\n\t0x38590: 0x6c832620, 0x38591: 0x6cac0820, 0x38592: 0x6cac0a20, 0x38593: 0x6cac0c20,\n\t0x38594: 0x6cac0e20, 0x38595: 0x6cdaae20, 0x38596: 0x6cdab020, 0x38597: 0x6cdab220,\n\t0x38598: 0x6cdab420, 0x38599: 0x6cdab620, 0x3859a: 0x6cdab820, 0x3859b: 0x6cdaba20,\n\t0x3859c: 0x6cdabc20, 0x3859d: 0x6d091420, 0x3859e: 0x6d091620, 0x3859f: 0x6d371e20,\n\t0x385a0: 0x6d372020, 0x385a1: 0x6d372220, 0x385a2: 0x6d372420, 0x385a3: 0x6d372620,\n\t0x385a4: 0x6d372820, 0x385a5: 0x6d372a20, 0x385a6: 0x6d372c20, 0x385a7: 0x6d638c20,\n\t0x385a8: 0x6d638e20, 0x385a9: 0x6d639020, 0x385aa: 0x6d639220, 0x385ab: 0x6d639420,\n\t0x385ac: 0x6d639620, 0x385ad: 0x6d8d8c20, 0x385ae: 0x6d8d8e20, 0x385af: 0x6d8d9020,\n\t0x385b0: 0x6d8d9220, 0x385b1: 0x6db18820, 0x385b2: 0x6db18a20, 0x385b3: 0x6db18c20,\n\t0x385b4: 0x6dd0d420, 0x385b5: 0x6dd0d620, 0x385b6: 0x6dd0d820, 0x385b7: 0x6dea8220,\n\t0x385b8: 0x6e003020, 0x385b9: 0x6e126820, 0x385ba: 0x6e208220, 0x385bb: 0x6e2b6820,\n\t0x385bc: 0x6e2b6a20, 0x385bd: 0x6e3dec20, 0x385be: 0x6d639820, 0x385bf: 0x6d639a20,\n\t// Block 0xe17, offset 0x385c0\n\t0x385c0: 0x6dd0da20, 0x385c1: 0x6e003220, 0x385c2: 0x6e2b6c20, 0x385c3: 0x6e208620,\n\t0x385c4: 0x6e33e020, 0x385c5: 0x6e39bc20, 0x385c6: 0x6e40c420, 0x385c7: 0x6c263420,\n\t0x385c8: 0x6c3f3820, 0x385c9: 0x6c3f3a20, 0x385ca: 0x6c3f3c20, 0x385cb: 0x6c3f3e20,\n\t0x385cc: 0x6c3f4020, 0x385cd: 0x6c3f4220, 0x385ce: 0x6c5e6820, 0x385cf: 0x6c5e6a20,\n\t0x385d0: 0x6c5e6c20, 0x385d1: 0x6c5e6e20, 0x385d2: 0x6c5e7020, 0x385d3: 0x6c5e7220,\n\t0x385d4: 0x6c5e7420, 0x385d5: 0x6c834620, 0x385d6: 0x6c834820, 0x385d7: 0x6c834a20,\n\t0x385d8: 0x6c834c20, 0x385d9: 0x6c834e20, 0x385da: 0x6c835020, 0x385db: 0x6c835220,\n\t0x385dc: 0x6c835420, 0x385dd: 0x6c835620, 0x385de: 0x6c835820, 0x385df: 0x6c835a20,\n\t0x385e0: 0x6c835c20, 0x385e1: 0x6cac2c20, 0x385e2: 0x6cac2e20, 0x385e3: 0x6cac3020,\n\t0x385e4: 0x6cac3220, 0x385e5: 0x6cac3420, 0x385e6: 0x6cac3620, 0x385e7: 0x6cac3820,\n\t0x385e8: 0x6cac3a20, 0x385e9: 0x6cac3c20, 0x385ea: 0x6cac3e20, 0x385eb: 0x6cac4020,\n\t0x385ec: 0x6cac4220, 0x385ed: 0x6cac4420, 0x385ee: 0x6cac4620, 0x385ef: 0x6cdad220,\n\t0x385f0: 0x6cdad420, 0x385f1: 0x6cdad620, 0x385f2: 0x6cdad820, 0x385f3: 0x6d093620,\n\t0x385f4: 0x6cdada20, 0x385f5: 0x6cdadc20, 0x385f6: 0x6cdade20, 0x385f7: 0x6cdae020,\n\t0x385f8: 0x6cdae220, 0x385f9: 0x6cdae420, 0x385fa: 0x6cdae620, 0x385fb: 0x6cdae820,\n\t0x385fc: 0x6cdaea20, 0x385fd: 0x6d093820, 0x385fe: 0x6d093a20, 0x385ff: 0x6d093c20,\n\t// Block 0xe18, offset 0x38600\n\t0x38600: 0x6d093e20, 0x38601: 0x6d094020, 0x38602: 0x6d094220, 0x38603: 0x6d094420,\n\t0x38604: 0x6d094620, 0x38605: 0x6d094820, 0x38606: 0x6d094a20, 0x38607: 0x6d094c20,\n\t0x38608: 0x6d094e20, 0x38609: 0x6d095020, 0x3860a: 0x6d374a20, 0x3860b: 0x6d374c20,\n\t0x3860c: 0x6d374e20, 0x3860d: 0x6d375020, 0x3860e: 0x6d375220, 0x3860f: 0x6d375420,\n\t0x38610: 0x6d375620, 0x38611: 0x6d375820, 0x38612: 0x6d375a20, 0x38613: 0x6d375c20,\n\t0x38614: 0x6d375e20, 0x38615: 0x6d376020, 0x38616: 0x6d376220, 0x38617: 0x6d376420,\n\t0x38618: 0x6d376620, 0x38619: 0x6d376820, 0x3861a: 0x6d376a20, 0x3861b: 0x6d376c20,\n\t0x3861c: 0x6d376e20, 0x3861d: 0x6d63b020, 0x3861e: 0x6d63b220, 0x3861f: 0x6d63b420,\n\t0x38620: 0x6d63b620, 0x38621: 0x6d63b820, 0x38622: 0x6d63ba20, 0x38623: 0x6d63bc20,\n\t0x38624: 0x6d63be20, 0x38625: 0x6d63c020, 0x38626: 0x6d63c220, 0x38627: 0x6d63c420,\n\t0x38628: 0x6d63c620, 0x38629: 0x6d63c820, 0x3862a: 0x6d63ca20, 0x3862b: 0x6d63cc20,\n\t0x3862c: 0x6d63ce20, 0x3862d: 0x6d63d020, 0x3862e: 0x6d63d220, 0x3862f: 0x6d63d420,\n\t0x38630: 0x6d63d620, 0x38631: 0x6d63d820, 0x38632: 0x6d63da20, 0x38633: 0x6d63dc20,\n\t0x38634: 0x6d8da820, 0x38635: 0x6d8daa20, 0x38636: 0x6d8dac20, 0x38637: 0x6d8dae20,\n\t0x38638: 0x6d8db020, 0x38639: 0x6d8db220, 0x3863a: 0x6d8db420, 0x3863b: 0x6d8db620,\n\t0x3863c: 0x6d8db820, 0x3863d: 0x6d8dba20, 0x3863e: 0x6d8dbc20, 0x3863f: 0x6d63de20,\n\t// Block 0xe19, offset 0x38640\n\t0x38640: 0x6d8dbe20, 0x38641: 0x6d8dc020, 0x38642: 0x6d8dc220, 0x38643: 0x6d8dc420,\n\t0x38644: 0x6d8dc620, 0x38645: 0x6d8dc820, 0x38646: 0x6db1a420, 0x38647: 0x6db1a620,\n\t0x38648: 0x6db1a820, 0x38649: 0x6db1aa20, 0x3864a: 0x6db1ac20, 0x3864b: 0x6db1ae20,\n\t0x3864c: 0x6db1b020, 0x3864d: 0x6db1b220, 0x3864e: 0x6db1b420, 0x3864f: 0x6db1b620,\n\t0x38650: 0x6db1b820, 0x38651: 0x6dd0e820, 0x38652: 0x6dd0ea20, 0x38653: 0x6dd0ec20,\n\t0x38654: 0x6dd0ee20, 0x38655: 0x6dd0f020, 0x38656: 0x6dd0f220, 0x38657: 0x6dd0f420,\n\t0x38658: 0x6dd0f620, 0x38659: 0x6dd0f820, 0x3865a: 0x6dd0fa20, 0x3865b: 0x6dd0fc20,\n\t0x3865c: 0x6dd0fe20, 0x3865d: 0x6dd10020, 0x3865e: 0x6dd10220, 0x3865f: 0x6dd10420,\n\t0x38660: 0x6dd10620, 0x38661: 0x6dd10820, 0x38662: 0x6dd10a20, 0x38663: 0x6dd10c20,\n\t0x38664: 0x6dd10e20, 0x38665: 0x6dd11020, 0x38666: 0x6dd11220, 0x38667: 0x6dd11420,\n\t0x38668: 0x6dea9020, 0x38669: 0x6dea9220, 0x3866a: 0x6dea9420, 0x3866b: 0x6dea9620,\n\t0x3866c: 0x6dea9820, 0x3866d: 0x6dea9a20, 0x3866e: 0x6dea9c20, 0x3866f: 0x6dea9e20,\n\t0x38670: 0x6deaa020, 0x38671: 0x6e003e20, 0x38672: 0x6e004020, 0x38673: 0x6e004220,\n\t0x38674: 0x6e004420, 0x38675: 0x6e004620, 0x38676: 0x6e126e20, 0x38677: 0x6e127020,\n\t0x38678: 0x6e127220, 0x38679: 0x6e105820, 0x3867a: 0x6e127420, 0x3867b: 0x6e127620,\n\t0x3867c: 0x6e127820, 0x3867d: 0x6e208a20, 0x3867e: 0x6e208c20, 0x3867f: 0x6e208e20,\n\t// Block 0xe1a, offset 0x38680\n\t0x38680: 0x6e209020, 0x38681: 0x6e209220, 0x38682: 0x6e209420, 0x38683: 0x6e2b7020,\n\t0x38684: 0x6e2b7220, 0x38685: 0x6e39be20, 0x38686: 0x6e39c020, 0x38687: 0x6e3dee20,\n\t0x38688: 0x6e40c620, 0x38689: 0x6e3df020, 0x3868a: 0x6e454620, 0x3868b: 0x6c5e7820,\n\t0x3868c: 0x6cac4820, 0x3868d: 0x6cac4a20, 0x3868e: 0x6cdaec20, 0x3868f: 0x6d095220,\n\t0x38690: 0x6d63e420, 0x38691: 0x6db1be20, 0x38692: 0x6e004a20, 0x38693: 0x6c5e7c20,\n\t0x38694: 0x6cac5020, 0x38695: 0x6cac5220, 0x38696: 0x6cac5420, 0x38697: 0x6cac5620,\n\t0x38698: 0x6cac5820, 0x38699: 0x6cac5a20, 0x3869a: 0x6cdaee20, 0x3869b: 0x6d095420,\n\t0x3869c: 0x6d095620, 0x3869d: 0x6d095820, 0x3869e: 0x6d377420, 0x3869f: 0x6d377620,\n\t0x386a0: 0x6d377820, 0x386a1: 0x6d377a20, 0x386a2: 0x6d377c20, 0x386a3: 0x6d377e20,\n\t0x386a4: 0x6d63e620, 0x386a5: 0x6d63e820, 0x386a6: 0x6d63ea20, 0x386a7: 0x6d63ec20,\n\t0x386a8: 0x6d63ee20, 0x386a9: 0x6d63f020, 0x386aa: 0x6d8dce20, 0x386ab: 0x6d8dd020,\n\t0x386ac: 0x6d8dd220, 0x386ad: 0x6d8dd420, 0x386ae: 0x6d8dd620, 0x386af: 0x6e004c20,\n\t0x386b0: 0x6e004e20, 0x386b1: 0x6e005020, 0x386b2: 0x6e39c220, 0x386b3: 0x6c0a5a20,\n\t0x386b4: 0x6c0a5c20, 0x386b5: 0x6c0a5e20, 0x386b6: 0x6c14b020, 0x386b7: 0x6c14b220,\n\t0x386b8: 0x6c14b420, 0x386b9: 0x6c14b620, 0x386ba: 0x6c14b820, 0x386bb: 0x6c14ba20,\n\t0x386bc: 0x6c14bc20, 0x386bd: 0x6c14be20, 0x386be: 0x6c14c020, 0x386bf: 0x6c14c220,\n\t// Block 0xe1b, offset 0x386c0\n\t0x386c0: 0x6c14c420, 0x386c1: 0x6c266020, 0x386c2: 0x6c266220, 0x386c3: 0x6c266420,\n\t0x386c4: 0x6c266620, 0x386c5: 0x6c266820, 0x386c6: 0x6c266a20, 0x386c7: 0x6c266c20,\n\t0x386c8: 0x6c266e20, 0x386c9: 0x6c267020, 0x386ca: 0x6c267220, 0x386cb: 0x6c267420,\n\t0x386cc: 0x6c267620, 0x386cd: 0x6c267820, 0x386ce: 0x6c267a20, 0x386cf: 0x6c267c20,\n\t0x386d0: 0x6c267e20, 0x386d1: 0x6c268020, 0x386d2: 0x6c268220, 0x386d3: 0x6c3fba20,\n\t0x386d4: 0x6c3fbc20, 0x386d5: 0x6c3fbe20, 0x386d6: 0x6c3fc020, 0x386d7: 0x6c3fc220,\n\t0x386d8: 0x6c3fc420, 0x386d9: 0x6c3fc620, 0x386da: 0x6c3fc820, 0x386db: 0x6c3fca20,\n\t0x386dc: 0x6c3fcc20, 0x386dd: 0x6c3fce20, 0x386de: 0x6c3fd020, 0x386df: 0x6c3fd220,\n\t0x386e0: 0x6c3fd420, 0x386e1: 0x6c3fd620, 0x386e2: 0x6c3fd820, 0x386e3: 0x6c3fda20,\n\t0x386e4: 0x6c3fdc20, 0x386e5: 0x6c3fde20, 0x386e6: 0x6c3fe020, 0x386e7: 0x6c3fe220,\n\t0x386e8: 0x6c3fe420, 0x386e9: 0x6c3fe620, 0x386ea: 0x6c3fe820, 0x386eb: 0x6c3fea20,\n\t0x386ec: 0x6c3fec20, 0x386ed: 0x6c3fee20, 0x386ee: 0x6c3ff020, 0x386ef: 0x6c3ff220,\n\t0x386f0: 0x6c3ff420, 0x386f1: 0x6c3ff620, 0x386f2: 0x6c3ff820, 0x386f3: 0x6c3ffa20,\n\t0x386f4: 0x6c3ffc20, 0x386f5: 0x6c3ffe20, 0x386f6: 0x6c400020, 0x386f7: 0x6c5f1220,\n\t0x386f8: 0x6c5f1420, 0x386f9: 0x6c5f1620, 0x386fa: 0x6c5f1820, 0x386fb: 0x6c5f1a20,\n\t0x386fc: 0x6c5f1c20, 0x386fd: 0x6c5f1e20, 0x386fe: 0x6c5f2020, 0x386ff: 0x6c5f2220,\n\t// Block 0xe1c, offset 0x38700\n\t0x38700: 0x6c5f2420, 0x38701: 0x6c5f2620, 0x38702: 0x6c5f2820, 0x38703: 0x6c5f2a20,\n\t0x38704: 0x6c5f2c20, 0x38705: 0x6c5f2e20, 0x38706: 0x6c5f3020, 0x38707: 0x6c5f3220,\n\t0x38708: 0x6c5f3420, 0x38709: 0x6c5f3620, 0x3870a: 0x6c5f3820, 0x3870b: 0x6c5f3a20,\n\t0x3870c: 0x6c5f3c20, 0x3870d: 0x6c5f3e20, 0x3870e: 0x6c5f4020, 0x3870f: 0x6c5f4220,\n\t0x38710: 0x6c5f4420, 0x38711: 0x6c5f4620, 0x38712: 0x6c5f4820, 0x38713: 0x6c5f4a20,\n\t0x38714: 0x6c5f4c20, 0x38715: 0x6c5f4e20, 0x38716: 0x6c5f5020, 0x38717: 0x6c5f5220,\n\t0x38718: 0x6c5f5420, 0x38719: 0x6c5f5620, 0x3871a: 0x6c5f5820, 0x3871b: 0x6c5f5a20,\n\t0x3871c: 0x6c5f5c20, 0x3871d: 0x6c5f5e20, 0x3871e: 0x6c5f6020, 0x3871f: 0x6c5f6220,\n\t0x38720: 0x6c5f6420, 0x38721: 0x6c5f6620, 0x38722: 0x6c5f6820, 0x38723: 0x6c5f6a20,\n\t0x38724: 0x6c5f6c20, 0x38725: 0x6c5f6e20, 0x38726: 0x6c5f7020, 0x38727: 0x6c5f7220,\n\t0x38728: 0x6c5f7420, 0x38729: 0x6c5f7620, 0x3872a: 0x6c5f7820, 0x3872b: 0x6c5f7a20,\n\t0x3872c: 0x6c5f7c20, 0x3872d: 0x6c841e20, 0x3872e: 0x6c842020, 0x3872f: 0x6c842220,\n\t0x38730: 0x6c842420, 0x38731: 0x6c842620, 0x38732: 0x6c842820, 0x38733: 0x6c842a20,\n\t0x38734: 0x6c842c20, 0x38735: 0x6c842e20, 0x38736: 0x6c843020, 0x38737: 0x6c843220,\n\t0x38738: 0x6c843420, 0x38739: 0x6c843620, 0x3873a: 0x6c843820, 0x3873b: 0x6c843a20,\n\t0x3873c: 0x6c843c20, 0x3873d: 0x6c843e20, 0x3873e: 0x6c844020, 0x3873f: 0x6c844220,\n\t// Block 0xe1d, offset 0x38740\n\t0x38740: 0x6c844420, 0x38741: 0x6c844620, 0x38742: 0x6c844820, 0x38743: 0x6c844a20,\n\t0x38744: 0x6c844c20, 0x38745: 0x6c844e20, 0x38746: 0x6c845020, 0x38747: 0x6c845220,\n\t0x38748: 0x6c845420, 0x38749: 0x6c845620, 0x3874a: 0x6c845820, 0x3874b: 0x6c845a20,\n\t0x3874c: 0x6c845c20, 0x3874d: 0x6c845e20, 0x3874e: 0x6c846020, 0x3874f: 0x6c846220,\n\t0x38750: 0x6c846420, 0x38751: 0x6c846620, 0x38752: 0x6c846820, 0x38753: 0x6c846a20,\n\t0x38754: 0x6c846c20, 0x38755: 0x6c846e20, 0x38756: 0x6c847020, 0x38757: 0x6c847220,\n\t0x38758: 0x6c847420, 0x38759: 0x6c847620, 0x3875a: 0x6c847820, 0x3875b: 0x6c847a20,\n\t0x3875c: 0x6c847c20, 0x3875d: 0x6c847e20, 0x3875e: 0x6c848020, 0x3875f: 0x6c848220,\n\t0x38760: 0x6c848420, 0x38761: 0x6c848620, 0x38762: 0x6c848820, 0x38763: 0x6c848a20,\n\t0x38764: 0x6c848c20, 0x38765: 0x6c848e20, 0x38766: 0x6c849020, 0x38767: 0x6c849220,\n\t0x38768: 0x6c849420, 0x38769: 0x6c849620, 0x3876a: 0x6c849820, 0x3876b: 0x6c849a20,\n\t0x3876c: 0x6c849c20, 0x3876d: 0x6c849e20, 0x3876e: 0x6c84a020, 0x3876f: 0x6c84a220,\n\t0x38770: 0x6c84a420, 0x38771: 0x6c84a620, 0x38772: 0x6c84a820, 0x38773: 0x6c84aa20,\n\t0x38774: 0x6c84ac20, 0x38775: 0x6c84ae20, 0x38776: 0x6cad1020, 0x38777: 0x6cad1220,\n\t0x38778: 0x6cad1420, 0x38779: 0x6cad1620, 0x3877a: 0x6cad1820, 0x3877b: 0x6cad1a20,\n\t0x3877c: 0x6cad1c20, 0x3877d: 0x6cad1e20, 0x3877e: 0x6cad2020, 0x3877f: 0x6cad2220,\n\t// Block 0xe1e, offset 0x38780\n\t0x38780: 0x6cad2420, 0x38781: 0x6cad2620, 0x38782: 0x6cad2820, 0x38783: 0x6cad2a20,\n\t0x38784: 0x6cad2c20, 0x38785: 0x6cad2e20, 0x38786: 0x6cad3020, 0x38787: 0x6cad3220,\n\t0x38788: 0x6cad3420, 0x38789: 0x6cad3620, 0x3878a: 0x6cad3820, 0x3878b: 0x6cad3a20,\n\t0x3878c: 0x6cad3c20, 0x3878d: 0x6cad3e20, 0x3878e: 0x6cad4020, 0x3878f: 0x6cad4220,\n\t0x38790: 0x6cad4420, 0x38791: 0x6cad4620, 0x38792: 0x6cad4820, 0x38793: 0x6cad4a20,\n\t0x38794: 0x6cad4c20, 0x38795: 0x6cad4e20, 0x38796: 0x6cad5020, 0x38797: 0x6cad5220,\n\t0x38798: 0x6cad5420, 0x38799: 0x6cad5620, 0x3879a: 0x6cad5820, 0x3879b: 0x6cad5a20,\n\t0x3879c: 0x6cad5c20, 0x3879d: 0x6cad5e20, 0x3879e: 0x6cad6020, 0x3879f: 0x6cad6220,\n\t0x387a0: 0x6cad6420, 0x387a1: 0x6cad6620, 0x387a2: 0x6cad6820, 0x387a3: 0x6cad6a20,\n\t0x387a4: 0x6cad6c20, 0x387a5: 0x6cad6e20, 0x387a6: 0x6cad7020, 0x387a7: 0x6cad7220,\n\t0x387a8: 0x6cad7420, 0x387a9: 0x6cad7620, 0x387aa: 0x6cad7820, 0x387ab: 0x6cad7a20,\n\t0x387ac: 0x6cad7c20, 0x387ad: 0x6cad7e20, 0x387ae: 0x6cad8020, 0x387af: 0x6cad8220,\n\t0x387b0: 0x6cad8420, 0x387b1: 0x6cdbf020, 0x387b2: 0x6cad8620, 0x387b3: 0x6cad8820,\n\t0x387b4: 0x6cad8a20, 0x387b5: 0x6cad8c20, 0x387b6: 0x6cad8e20, 0x387b7: 0x6cad9020,\n\t0x387b8: 0x6cad9220, 0x387b9: 0x6cad9420, 0x387ba: 0x6cad9620, 0x387bb: 0x6cad9820,\n\t0x387bc: 0x6cad9a20, 0x387bd: 0x6cad9c20, 0x387be: 0x6cad9e20, 0x387bf: 0x6cada020,\n\t// Block 0xe1f, offset 0x387c0\n\t0x387c0: 0x6cada220, 0x387c1: 0x6cada420, 0x387c2: 0x6cada620, 0x387c3: 0x6cada820,\n\t0x387c4: 0x6cadaa20, 0x387c5: 0x6cadac20, 0x387c6: 0x6cadae20, 0x387c7: 0x6cadb020,\n\t0x387c8: 0x6cadb220, 0x387c9: 0x6cadb420, 0x387ca: 0x6cadb620, 0x387cb: 0x6cadb820,\n\t0x387cc: 0x6cadba20, 0x387cd: 0x6cadbc20, 0x387ce: 0x6cadbe20, 0x387cf: 0x6cadc020,\n\t0x387d0: 0x6cadc220, 0x387d1: 0x6cadc420, 0x387d2: 0x6cadc620, 0x387d3: 0x6cadc820,\n\t0x387d4: 0x6cadca20, 0x387d5: 0x6cadcc20, 0x387d6: 0x6cdbf220, 0x387d7: 0x6cadce20,\n\t0x387d8: 0x6cadd020, 0x387d9: 0x6cadd220, 0x387da: 0x6cadd420, 0x387db: 0x6cadd620,\n\t0x387dc: 0x6cadd820, 0x387dd: 0x6cadda20, 0x387de: 0x6caddc20, 0x387df: 0x6cadde20,\n\t0x387e0: 0x6cade020, 0x387e1: 0x6cade220, 0x387e2: 0x6cade420, 0x387e3: 0x6cade620,\n\t0x387e4: 0x6cade820, 0x387e5: 0x6cadea20, 0x387e6: 0x6cadec20, 0x387e7: 0x6cadee20,\n\t0x387e8: 0x6cadf020, 0x387e9: 0x6cadf220, 0x387ea: 0x6cdbf420, 0x387eb: 0x6cdbf620,\n\t0x387ec: 0x6cdbf820, 0x387ed: 0x6cdbfa20, 0x387ee: 0x6cdbfc20, 0x387ef: 0x6cdbfe20,\n\t0x387f0: 0x6cdc0020, 0x387f1: 0x6cdc0220, 0x387f2: 0x6cdc0420, 0x387f3: 0x6cdc0620,\n\t0x387f4: 0x6cdc0820, 0x387f5: 0x6cdc0a20, 0x387f6: 0x6cdc0c20, 0x387f7: 0x6cdc0e20,\n\t0x387f8: 0x6cdc1020, 0x387f9: 0x6cdc1220, 0x387fa: 0x6cdc1420, 0x387fb: 0x6cdc1620,\n\t0x387fc: 0x6cdc1820, 0x387fd: 0x6cdc1a20, 0x387fe: 0x6cdc1c20, 0x387ff: 0x6cdc1e20,\n\t// Block 0xe20, offset 0x38800\n\t0x38800: 0x6cdc2020, 0x38801: 0x6cdc2220, 0x38802: 0x6cdc2420, 0x38803: 0x6cdc2620,\n\t0x38804: 0x6cdc2820, 0x38805: 0x6cdc2a20, 0x38806: 0x6cdc2c20, 0x38807: 0x6cdc2e20,\n\t0x38808: 0x6cdc3020, 0x38809: 0x6cdc3220, 0x3880a: 0x6cdc3420, 0x3880b: 0x6cdc3620,\n\t0x3880c: 0x6cdc3820, 0x3880d: 0x6cdc3a20, 0x3880e: 0x6cdc3c20, 0x3880f: 0x6cdc3e20,\n\t0x38810: 0x6cdc4020, 0x38811: 0x6cdc4220, 0x38812: 0x6cdc4420, 0x38813: 0x6cdc4620,\n\t0x38814: 0x6cdc4820, 0x38815: 0x6cdc4a20, 0x38816: 0x6cdc4c20, 0x38817: 0x6cdc4e20,\n\t0x38818: 0x6cdc5020, 0x38819: 0x6cdc5220, 0x3881a: 0x6cdc5420, 0x3881b: 0x6cdc5620,\n\t0x3881c: 0x6cdc5820, 0x3881d: 0x6cdc5a20, 0x3881e: 0x6cdc5c20, 0x3881f: 0x6cdc5e20,\n\t0x38820: 0x6cdc6020, 0x38821: 0x6cdc6220, 0x38822: 0x6cdc6420, 0x38823: 0x6cdc6620,\n\t0x38824: 0x6cdc6820, 0x38825: 0x6cdc6a20, 0x38826: 0x6cdc6c20, 0x38827: 0x6cdc6e20,\n\t0x38828: 0x6cdc7020, 0x38829: 0x6cdc7220, 0x3882a: 0x6cdc7420, 0x3882b: 0x6cdc7620,\n\t0x3882c: 0x6cdc7820, 0x3882d: 0x6cdc7a20, 0x3882e: 0x6cdc7c20, 0x3882f: 0x6cdc7e20,\n\t0x38830: 0x6cdc8020, 0x38831: 0x6cdc8220, 0x38832: 0x6cdc8420, 0x38833: 0x6cdc8620,\n\t0x38834: 0x6cdc8820, 0x38835: 0x6cdc8a20, 0x38836: 0x6cdc8c20, 0x38837: 0x6cdc8e20,\n\t0x38838: 0x6cdc9020, 0x38839: 0x6cdc9220, 0x3883a: 0x6cdc9420, 0x3883b: 0x6cdc9620,\n\t0x3883c: 0x6cdc9820, 0x3883d: 0x6cdc9a20, 0x3883e: 0x6cdc9c20, 0x3883f: 0x6cdc9e20,\n\t// Block 0xe21, offset 0x38840\n\t0x38840: 0x6cdca020, 0x38841: 0x6cdca220, 0x38842: 0x6cdca420, 0x38843: 0x6cdca620,\n\t0x38844: 0x6cdca820, 0x38845: 0x6cdcaa20, 0x38846: 0x6cdcac20, 0x38847: 0x6cdcae20,\n\t0x38848: 0x6cdcb020, 0x38849: 0x6cdcb220, 0x3884a: 0x6cdcb420, 0x3884b: 0x6cdcb620,\n\t0x3884c: 0x6cdcb820, 0x3884d: 0x6cdcba20, 0x3884e: 0x6cdcbc20, 0x3884f: 0x6cdcbe20,\n\t0x38850: 0x6cdcc020, 0x38851: 0x6cdcc220, 0x38852: 0x6cdcc420, 0x38853: 0x6cdcc620,\n\t0x38854: 0x6cdcc820, 0x38855: 0x6cdcca20, 0x38856: 0x6cdccc20, 0x38857: 0x6cdcce20,\n\t0x38858: 0x6cdcd020, 0x38859: 0x6cdcd220, 0x3885a: 0x6cdcd420, 0x3885b: 0x6cdcd620,\n\t0x3885c: 0x6cdcd820, 0x3885d: 0x6cdcda20, 0x3885e: 0x6cdcdc20, 0x3885f: 0x6cdcde20,\n\t0x38860: 0x6cdce020, 0x38861: 0x6cdce220, 0x38862: 0x6cdce420, 0x38863: 0x6cdce620,\n\t0x38864: 0x6cdce820, 0x38865: 0x6cdcea20, 0x38866: 0x6cdcec20, 0x38867: 0x6cdcee20,\n\t0x38868: 0x6cdcf020, 0x38869: 0x6cdcf220, 0x3886a: 0x6cdcf420, 0x3886b: 0x6cdcf620,\n\t0x3886c: 0x6cdcf820, 0x3886d: 0x6cdcfa20, 0x3886e: 0x6cdcfc20, 0x3886f: 0x6cdcfe20,\n\t0x38870: 0x6cdd0020, 0x38871: 0x6cdd0220, 0x38872: 0x6cdd0420, 0x38873: 0x6cdd0620,\n\t0x38874: 0x6cdd0820, 0x38875: 0x6cdd0a20, 0x38876: 0x6cdd0c20, 0x38877: 0x6cdd0e20,\n\t0x38878: 0x6cdd1020, 0x38879: 0x6cdd1220, 0x3887a: 0x6cdd1420, 0x3887b: 0x6cdd1620,\n\t0x3887c: 0x6cdd1820, 0x3887d: 0x6cdd1a20, 0x3887e: 0x6cdd1c20, 0x3887f: 0x6cdd1e20,\n\t// Block 0xe22, offset 0x38880\n\t0x38880: 0x6cdd2020, 0x38881: 0x6d0a5020, 0x38882: 0x6d0a5220, 0x38883: 0x6d0a5420,\n\t0x38884: 0x6d0a5620, 0x38885: 0x6d0a5820, 0x38886: 0x6d0a5a20, 0x38887: 0x6d0a5c20,\n\t0x38888: 0x6d0a5e20, 0x38889: 0x6d0a6020, 0x3888a: 0x6d0a6220, 0x3888b: 0x6d0a6420,\n\t0x3888c: 0x6d0a6620, 0x3888d: 0x6d0a6820, 0x3888e: 0x6d0a6a20, 0x3888f: 0x6d0a6c20,\n\t0x38890: 0x6d0a6e20, 0x38891: 0x6d0a7020, 0x38892: 0x6d0a7220, 0x38893: 0x6d0a7420,\n\t0x38894: 0x6d0a7620, 0x38895: 0x6d0a7820, 0x38896: 0x6d0a7a20, 0x38897: 0x6d0a7c20,\n\t0x38898: 0x6d0a7e20, 0x38899: 0x6d0a8020, 0x3889a: 0x6d0a8220, 0x3889b: 0x6d0a8420,\n\t0x3889c: 0x6d0a8620, 0x3889d: 0x6d0a8820, 0x3889e: 0x6d0a8a20, 0x3889f: 0x6d0a8c20,\n\t0x388a0: 0x6d0a8e20, 0x388a1: 0x6d0a9020, 0x388a2: 0x6d0a9220, 0x388a3: 0x6d0a9420,\n\t0x388a4: 0x6d0a9620, 0x388a5: 0x6d0a9820, 0x388a6: 0x6d0a9a20, 0x388a7: 0x6d0a9c20,\n\t0x388a8: 0x6d0a9e20, 0x388a9: 0x6d0aa020, 0x388aa: 0x6d0aa220, 0x388ab: 0x6d0aa420,\n\t0x388ac: 0x6d0aa620, 0x388ad: 0x6d0aa820, 0x388ae: 0x6d0aaa20, 0x388af: 0x6d0aac20,\n\t0x388b0: 0x6d0aae20, 0x388b1: 0x6d0ab020, 0x388b2: 0x6d0ab220, 0x388b3: 0x6d0ab420,\n\t0x388b4: 0x6d0ab620, 0x388b5: 0x6d0ab820, 0x388b6: 0x6d0aba20, 0x388b7: 0x6d0abc20,\n\t0x388b8: 0x6d0abe20, 0x388b9: 0x6d0ac020, 0x388ba: 0x6d0ac220, 0x388bb: 0x6d0ac420,\n\t0x388bc: 0x6d0ac620, 0x388bd: 0x6d0ac820, 0x388be: 0x6d0aca20, 0x388bf: 0x6d0acc20,\n\t// Block 0xe23, offset 0x388c0\n\t0x388c0: 0x6d0ace20, 0x388c1: 0x6d0ad020, 0x388c2: 0x6d0ad220, 0x388c3: 0x6d0ad420,\n\t0x388c4: 0x6d0ad620, 0x388c5: 0x6d0ad820, 0x388c6: 0x6d0ada20, 0x388c7: 0x6d0adc20,\n\t0x388c8: 0x6d0ade20, 0x388c9: 0x6d0ae020, 0x388ca: 0x6d0ae220, 0x388cb: 0x6d0ae420,\n\t0x388cc: 0x6d0ae620, 0x388cd: 0x6d0ae820, 0x388ce: 0x6d0aea20, 0x388cf: 0x6d0aec20,\n\t0x388d0: 0x6d0aee20, 0x388d1: 0x6d0af020, 0x388d2: 0x6d0af220, 0x388d3: 0x6d0af420,\n\t0x388d4: 0x6d0af620, 0x388d5: 0x6d0af820, 0x388d6: 0x6d0afa20, 0x388d7: 0x6d0afc20,\n\t0x388d8: 0x6d0afe20, 0x388d9: 0x6d0b0020, 0x388da: 0x6d0b0220, 0x388db: 0x6d0b0420,\n\t0x388dc: 0x6d0b0620, 0x388dd: 0x6d0b0820, 0x388de: 0x6d0b0a20, 0x388df: 0x6d0b0c20,\n\t0x388e0: 0x6d0b0e20, 0x388e1: 0x6d0b1020, 0x388e2: 0x6d0b1220, 0x388e3: 0x6d0b1420,\n\t0x388e4: 0x6d0b1620, 0x388e5: 0x6d0b1820, 0x388e6: 0x6d0b1a20, 0x388e7: 0x6d0b1c20,\n\t0x388e8: 0x6d0b1e20, 0x388e9: 0x6d0b2020, 0x388ea: 0x6d0b2220, 0x388eb: 0x6d0b2420,\n\t0x388ec: 0x6d0b2620, 0x388ed: 0x6d0b2820, 0x388ee: 0x6d0b2a20, 0x388ef: 0x6d0b2c20,\n\t0x388f0: 0x6d0b2e20, 0x388f1: 0x6d0b3020, 0x388f2: 0x6d0b3220, 0x388f3: 0x6d0b3420,\n\t0x388f4: 0x6d0b3620, 0x388f5: 0x6d0b3820, 0x388f6: 0x6cfba420, 0x388f7: 0x6d0b3a20,\n\t0x388f8: 0x6d0b3c20, 0x388f9: 0x6d0b3e20, 0x388fa: 0x6d0b4020, 0x388fb: 0x6d0b4220,\n\t0x388fc: 0x6d0b4420, 0x388fd: 0x6d0b4620, 0x388fe: 0x6d0b4820, 0x388ff: 0x6d0b4a20,\n\t// Block 0xe24, offset 0x38900\n\t0x38900: 0x6d0b4c20, 0x38901: 0x6d0b4e20, 0x38902: 0x6d0b5020, 0x38903: 0x6d0b5220,\n\t0x38904: 0x6d0b5420, 0x38905: 0x6d0b5620, 0x38906: 0x6d0b5820, 0x38907: 0x6d385420,\n\t0x38908: 0x6d0b5a20, 0x38909: 0x6d0b5c20, 0x3890a: 0x6d0b5e20, 0x3890b: 0x6d0b6020,\n\t0x3890c: 0x6d0b6220, 0x3890d: 0x6d0b6420, 0x3890e: 0x6d0b6620, 0x3890f: 0x6d0b6820,\n\t0x38910: 0x6d0b6a20, 0x38911: 0x6d0b6c20, 0x38912: 0x6d0b6e20, 0x38913: 0x6d0b7020,\n\t0x38914: 0x6d0b7220, 0x38915: 0x6d0b7420, 0x38916: 0x6d0b7620, 0x38917: 0x6d0b7820,\n\t0x38918: 0x6d0b7a20, 0x38919: 0x6d0b7c20, 0x3891a: 0x6d0b7e20, 0x3891b: 0x6d0b8020,\n\t0x3891c: 0x6d0b8220, 0x3891d: 0x6d0b8420, 0x3891e: 0x6d0b8620, 0x3891f: 0x6d0b8820,\n\t0x38920: 0x6d0b8a20, 0x38921: 0x6d385620, 0x38922: 0x6d385820, 0x38923: 0x6d385a20,\n\t0x38924: 0x6d385c20, 0x38925: 0x6d385e20, 0x38926: 0x6d386020, 0x38927: 0x6d386220,\n\t0x38928: 0x6d386420, 0x38929: 0x6d386620, 0x3892a: 0x6d386820, 0x3892b: 0x6d386a20,\n\t0x3892c: 0x6d386c20, 0x3892d: 0x6d386e20, 0x3892e: 0x6d387020, 0x3892f: 0x6d387220,\n\t0x38930: 0x6d387420, 0x38931: 0x6d387620, 0x38932: 0x6d387820, 0x38933: 0x6d387a20,\n\t0x38934: 0x6d387c20, 0x38935: 0x6d387e20, 0x38936: 0x6d388020, 0x38937: 0x6d388220,\n\t0x38938: 0x6d388420, 0x38939: 0x6d388620, 0x3893a: 0x6d388820, 0x3893b: 0x6d388a20,\n\t0x3893c: 0x6d388c20, 0x3893d: 0x6d388e20, 0x3893e: 0x6d389020, 0x3893f: 0x6d389220,\n\t// Block 0xe25, offset 0x38940\n\t0x38940: 0x6d389420, 0x38941: 0x6d389620, 0x38942: 0x6d389820, 0x38943: 0x6d389a20,\n\t0x38944: 0x6d389c20, 0x38945: 0x6d389e20, 0x38946: 0x6d38a020, 0x38947: 0x6d38a220,\n\t0x38948: 0x6d38a420, 0x38949: 0x6d38a620, 0x3894a: 0x6d38a820, 0x3894b: 0x6d38aa20,\n\t0x3894c: 0x6d38ac20, 0x3894d: 0x6d38ae20, 0x3894e: 0x6d38b020, 0x3894f: 0x6d38b220,\n\t0x38950: 0x6d38b420, 0x38951: 0x6d38b620, 0x38952: 0x6d38b820, 0x38953: 0x6d38ba20,\n\t0x38954: 0x6d38bc20, 0x38955: 0x6d38be20, 0x38956: 0x6d38c020, 0x38957: 0x6d38c220,\n\t0x38958: 0x6d38c420, 0x38959: 0x6d38c620, 0x3895a: 0x6d38c820, 0x3895b: 0x6d38ca20,\n\t0x3895c: 0x6d38cc20, 0x3895d: 0x6d38ce20, 0x3895e: 0x6d38d020, 0x3895f: 0x6d38d220,\n\t0x38960: 0x6d38d420, 0x38961: 0x6d38d620, 0x38962: 0x6d38d820, 0x38963: 0x6d38da20,\n\t0x38964: 0x6d38dc20, 0x38965: 0x6d38de20, 0x38966: 0x6d38e020, 0x38967: 0x6d38e220,\n\t0x38968: 0x6d38e420, 0x38969: 0x6d38e620, 0x3896a: 0x6d38e820, 0x3896b: 0x6d38ea20,\n\t0x3896c: 0x6d38ec20, 0x3896d: 0x6d38ee20, 0x3896e: 0x6d38f020, 0x3896f: 0x6d38f220,\n\t0x38970: 0x6d38f420, 0x38971: 0x6d38f620, 0x38972: 0x6d38f820, 0x38973: 0x6d38fa20,\n\t0x38974: 0x6d38fc20, 0x38975: 0x6d38fe20, 0x38976: 0x6d390020, 0x38977: 0x6d390220,\n\t0x38978: 0x6d390420, 0x38979: 0x6d390620, 0x3897a: 0x6d390820, 0x3897b: 0x6d390a20,\n\t0x3897c: 0x6d390c20, 0x3897d: 0x6d390e20, 0x3897e: 0x6d391020, 0x3897f: 0x6d391220,\n\t// Block 0xe26, offset 0x38980\n\t0x38980: 0x6d391420, 0x38981: 0x6d391620, 0x38982: 0x6d391820, 0x38983: 0x6d391a20,\n\t0x38984: 0x6d391c20, 0x38985: 0x6d391e20, 0x38986: 0x6d392020, 0x38987: 0x6d392220,\n\t0x38988: 0x6d392420, 0x38989: 0x6d392620, 0x3898a: 0x6d392820, 0x3898b: 0x6d392a20,\n\t0x3898c: 0x6d392c20, 0x3898d: 0x6d392e20, 0x3898e: 0x6d393020, 0x3898f: 0x6d393220,\n\t0x38990: 0x6d393420, 0x38991: 0x6d393620, 0x38992: 0x6d393820, 0x38993: 0x6d393a20,\n\t0x38994: 0x6d393c20, 0x38995: 0x6d393e20, 0x38996: 0x6d394020, 0x38997: 0x6d394220,\n\t0x38998: 0x6d394420, 0x38999: 0x6d394620, 0x3899a: 0x6d394820, 0x3899b: 0x6d394a20,\n\t0x3899c: 0x6d394c20, 0x3899d: 0x6d394e20, 0x3899e: 0x6d395020, 0x3899f: 0x6d395220,\n\t0x389a0: 0x6d395420, 0x389a1: 0x6d395620, 0x389a2: 0x6d395820, 0x389a3: 0x6d395a20,\n\t0x389a4: 0x6d395c20, 0x389a5: 0x6d395e20, 0x389a6: 0x6d396020, 0x389a7: 0x6d396220,\n\t0x389a8: 0x6d396420, 0x389a9: 0x6d396620, 0x389aa: 0x6d396820, 0x389ab: 0x6d396a20,\n\t0x389ac: 0x6d396c20, 0x389ad: 0x6d396e20, 0x389ae: 0x6d397020, 0x389af: 0x6d397220,\n\t0x389b0: 0x6d397420, 0x389b1: 0x6d397620, 0x389b2: 0x6d397820, 0x389b3: 0x6d397a20,\n\t0x389b4: 0x6d397c20, 0x389b5: 0x6d397e20, 0x389b6: 0x6d398020, 0x389b7: 0x6d398220,\n\t0x389b8: 0x6d398420, 0x389b9: 0x6d398620, 0x389ba: 0x6d398820, 0x389bb: 0x6d398a20,\n\t0x389bc: 0x6d398c20, 0x389bd: 0x6d398e20, 0x389be: 0x6d399020, 0x389bf: 0x6d64ba20,\n\t// Block 0xe27, offset 0x389c0\n\t0x389c0: 0x6d64bc20, 0x389c1: 0x6d64be20, 0x389c2: 0x6d64c020, 0x389c3: 0x6d64c220,\n\t0x389c4: 0x6d64c420, 0x389c5: 0x6d64c620, 0x389c6: 0x6d64c820, 0x389c7: 0x6d64ca20,\n\t0x389c8: 0x6d64cc20, 0x389c9: 0x6d64ce20, 0x389ca: 0x6d64d020, 0x389cb: 0x6d64d220,\n\t0x389cc: 0x6d64d420, 0x389cd: 0x6d64d620, 0x389ce: 0x6d64d820, 0x389cf: 0x6d64da20,\n\t0x389d0: 0x6d64dc20, 0x389d1: 0x6d64de20, 0x389d2: 0x6d64e020, 0x389d3: 0x6d64e220,\n\t0x389d4: 0x6d64e420, 0x389d5: 0x6d64e620, 0x389d6: 0x6d64e820, 0x389d7: 0x6d64ea20,\n\t0x389d8: 0x6d64ec20, 0x389d9: 0x6d64ee20, 0x389da: 0x6d64f020, 0x389db: 0x6d64f220,\n\t0x389dc: 0x6d64f420, 0x389dd: 0x6d64f620, 0x389de: 0x6d64f820, 0x389df: 0x6d64fa20,\n\t0x389e0: 0x6d64fc20, 0x389e1: 0x6d64fe20, 0x389e2: 0x6d650020, 0x389e3: 0x6d650220,\n\t0x389e4: 0x6d650420, 0x389e5: 0x6d650620, 0x389e6: 0x6d650820, 0x389e7: 0x6d650a20,\n\t0x389e8: 0x6d650c20, 0x389e9: 0x6d650e20, 0x389ea: 0x6d651020, 0x389eb: 0x6d651220,\n\t0x389ec: 0x6d651420, 0x389ed: 0x6d651620, 0x389ee: 0x6d651820, 0x389ef: 0x6d651a20,\n\t0x389f0: 0x6d651c20, 0x389f1: 0x6d651e20, 0x389f2: 0x6d652020, 0x389f3: 0x6d652220,\n\t0x389f4: 0x6d652420, 0x389f5: 0x6d652620, 0x389f6: 0x6d652820, 0x389f7: 0x6d652a20,\n\t0x389f8: 0x6d652c20, 0x389f9: 0x6d652e20, 0x389fa: 0x6d653020, 0x389fb: 0x6d653220,\n\t0x389fc: 0x6d653420, 0x389fd: 0x6d8e6c20, 0x389fe: 0x6d653620, 0x389ff: 0x6d653820,\n\t// Block 0xe28, offset 0x38a00\n\t0x38a00: 0x6d653a20, 0x38a01: 0x6d653c20, 0x38a02: 0x6d653e20, 0x38a03: 0x6d654020,\n\t0x38a04: 0x6d654220, 0x38a05: 0x6d654420, 0x38a06: 0x6d654620, 0x38a07: 0x6d654820,\n\t0x38a08: 0x6d654a20, 0x38a09: 0x6d654c20, 0x38a0a: 0x6d654e20, 0x38a0b: 0x6d655020,\n\t0x38a0c: 0x6d655220, 0x38a0d: 0x6d655420, 0x38a0e: 0x6d655620, 0x38a0f: 0x6d655820,\n\t0x38a10: 0x6d655a20, 0x38a11: 0x6d655c20, 0x38a12: 0x6d655e20, 0x38a13: 0x6d656020,\n\t0x38a14: 0x6d656220, 0x38a15: 0x6d656420, 0x38a16: 0x6d656620, 0x38a17: 0x6d656820,\n\t0x38a18: 0x6d656a20, 0x38a19: 0x6d656c20, 0x38a1a: 0x6d656e20, 0x38a1b: 0x6d657020,\n\t0x38a1c: 0x6d657220, 0x38a1d: 0x6d657420, 0x38a1e: 0x6d657620, 0x38a1f: 0x6d657820,\n\t0x38a20: 0x6d657a20, 0x38a21: 0x6d657c20, 0x38a22: 0x6d657e20, 0x38a23: 0x6d658020,\n\t0x38a24: 0x6d658220, 0x38a25: 0x6d658420, 0x38a26: 0x6d658620, 0x38a27: 0x6d658820,\n\t0x38a28: 0x6d658a20, 0x38a29: 0x6d658c20, 0x38a2a: 0x6d658e20, 0x38a2b: 0x6d659020,\n\t0x38a2c: 0x6d659220, 0x38a2d: 0x6d659420, 0x38a2e: 0x6d659620, 0x38a2f: 0x6d659820,\n\t0x38a30: 0x6d659a20, 0x38a31: 0x6d659c20, 0x38a32: 0x6d659e20, 0x38a33: 0x6d65a020,\n\t0x38a34: 0x6d65a220, 0x38a35: 0x6d65a420, 0x38a36: 0x6d65a620, 0x38a37: 0x6d65a820,\n\t0x38a38: 0x6d65aa20, 0x38a39: 0x6d65ac20, 0x38a3a: 0x6d65ae20, 0x38a3b: 0x6d65b020,\n\t0x38a3c: 0x6d65b220, 0x38a3d: 0x6d65b420, 0x38a3e: 0x6d65b620, 0x38a3f: 0x6d65b820,\n\t// Block 0xe29, offset 0x38a40\n\t0x38a40: 0x6d65ba20, 0x38a41: 0x6d65bc20, 0x38a42: 0x6d65be20, 0x38a43: 0x6d65c020,\n\t0x38a44: 0x6d65c220, 0x38a45: 0x6e454c20, 0x38a46: 0x6d8e6e20, 0x38a47: 0x6d8e7020,\n\t0x38a48: 0x6d8e7220, 0x38a49: 0x6d8e7420, 0x38a4a: 0x6d8e7620, 0x38a4b: 0x6d8e7820,\n\t0x38a4c: 0x6d8e7a20, 0x38a4d: 0x6d8e7c20, 0x38a4e: 0x6d8e7e20, 0x38a4f: 0x6d8e8020,\n\t0x38a50: 0x6d8e8220, 0x38a51: 0x6d8e8420, 0x38a52: 0x6d8e8620, 0x38a53: 0x6d8e8820,\n\t0x38a54: 0x6d8e8a20, 0x38a55: 0x6d8e8c20, 0x38a56: 0x6d8e8e20, 0x38a57: 0x6d8e9020,\n\t0x38a58: 0x6d8e9220, 0x38a59: 0x6d8e9420, 0x38a5a: 0x6d8e9620, 0x38a5b: 0x6d8e9820,\n\t0x38a5c: 0x6d8e9a20, 0x38a5d: 0x6d8e9c20, 0x38a5e: 0x6d8e9e20, 0x38a5f: 0x6d8ea020,\n\t0x38a60: 0x6d8ea220, 0x38a61: 0x6d8ea420, 0x38a62: 0x6d8ea620, 0x38a63: 0x6d8ea820,\n\t0x38a64: 0x6d8eaa20, 0x38a65: 0x6d8eac20, 0x38a66: 0x6d8eae20, 0x38a67: 0x6d8eb020,\n\t0x38a68: 0x6d8eb220, 0x38a69: 0x6d8eb420, 0x38a6a: 0x6d8eb620, 0x38a6b: 0x6d8eb820,\n\t0x38a6c: 0x6d8eba20, 0x38a6d: 0x6d8ebc20, 0x38a6e: 0x6d8ebe20, 0x38a6f: 0x6d8ec020,\n\t0x38a70: 0x6d8ec220, 0x38a71: 0x6d8ec420, 0x38a72: 0x6d8ec620, 0x38a73: 0x6d8ec820,\n\t0x38a74: 0x6d8eca20, 0x38a75: 0x6d8ecc20, 0x38a76: 0x6d8ece20, 0x38a77: 0x6d8ed020,\n\t0x38a78: 0x6d8ed220, 0x38a79: 0x6d8ed420, 0x38a7a: 0x6d8ed620, 0x38a7b: 0x6d8ed820,\n\t0x38a7c: 0x6d8eda20, 0x38a7d: 0x6d8edc20, 0x38a7e: 0x6d8ede20, 0x38a7f: 0x6d8ee020,\n\t// Block 0xe2a, offset 0x38a80\n\t0x38a80: 0x6d8ee220, 0x38a81: 0x6d8ee420, 0x38a82: 0x6d8ee620, 0x38a83: 0x6d8ee820,\n\t0x38a84: 0x6d8eea20, 0x38a85: 0x6d8eec20, 0x38a86: 0x6d8eee20, 0x38a87: 0x6dc5f420,\n\t0x38a88: 0x6d8ef020, 0x38a89: 0x6d8ef220, 0x38a8a: 0x6d8ef420, 0x38a8b: 0x6d8ef620,\n\t0x38a8c: 0x6d8ef820, 0x38a8d: 0x6d8efa20, 0x38a8e: 0x6d8efc20, 0x38a8f: 0x6d8efe20,\n\t0x38a90: 0x6d8f0020, 0x38a91: 0x6d8f0220, 0x38a92: 0x6d8f0420, 0x38a93: 0x6d8f0620,\n\t0x38a94: 0x6d8f0820, 0x38a95: 0x6d8f0a20, 0x38a96: 0x6d8f0c20, 0x38a97: 0x6d8f0e20,\n\t0x38a98: 0x6d8f1020, 0x38a99: 0x6d8f1220, 0x38a9a: 0x6d8f1420, 0x38a9b: 0x6d8f1620,\n\t0x38a9c: 0x6d8f1820, 0x38a9d: 0x6d8f1a20, 0x38a9e: 0x6d8f1c20, 0x38a9f: 0x6d8f1e20,\n\t0x38aa0: 0x6d8f2020, 0x38aa1: 0x6d8f2220, 0x38aa2: 0x6d8f2420, 0x38aa3: 0x6d8f2620,\n\t0x38aa4: 0x6d8f2820, 0x38aa5: 0x6d8f2a20, 0x38aa6: 0x6d8f2c20, 0x38aa7: 0x6d8f2e20,\n\t0x38aa8: 0x6d8f3020, 0x38aa9: 0x6d8f3220, 0x38aaa: 0x6d8f3420, 0x38aab: 0x6d8f3620,\n\t0x38aac: 0x6d8f3820, 0x38aad: 0x6d8f3a20, 0x38aae: 0x6d8f3c20, 0x38aaf: 0x6d8f3e20,\n\t0x38ab0: 0x6d8f4020, 0x38ab1: 0x6d8f4220, 0x38ab2: 0x6d8f4420, 0x38ab3: 0x6d8f4620,\n\t0x38ab4: 0x6d8f4820, 0x38ab5: 0x6d8f4a20, 0x38ab6: 0x6d8f4c20, 0x38ab7: 0x6d8f4e20,\n\t0x38ab8: 0x6d8f5020, 0x38ab9: 0x6d8f5220, 0x38aba: 0x6d8f5420, 0x38abb: 0x6d8f5620,\n\t0x38abc: 0x6d8f5820, 0x38abd: 0x6d8f5a20, 0x38abe: 0x6db26e20, 0x38abf: 0x6d8f5c20,\n\t// Block 0xe2b, offset 0x38ac0\n\t0x38ac0: 0x6d8f5e20, 0x38ac1: 0x6d8f6020, 0x38ac2: 0x6d8f6220, 0x38ac3: 0x6d8f6420,\n\t0x38ac4: 0x6d8f6620, 0x38ac5: 0x6d8f6820, 0x38ac6: 0x6d8f6a20, 0x38ac7: 0x6d8f6c20,\n\t0x38ac8: 0x6d8f6e20, 0x38ac9: 0x6d8f7020, 0x38aca: 0x6d8f7220, 0x38acb: 0x6d8f7420,\n\t0x38acc: 0x6d8f7620, 0x38acd: 0x6d8f7820, 0x38ace: 0x6d8f7a20, 0x38acf: 0x6d8f7c20,\n\t0x38ad0: 0x6d8f7e20, 0x38ad1: 0x6d8f8020, 0x38ad2: 0x6d8f8220, 0x38ad3: 0x6d8f8420,\n\t0x38ad4: 0x6d8f8620, 0x38ad5: 0x6d8f8820, 0x38ad6: 0x6d8f8a20, 0x38ad7: 0x6d8f8c20,\n\t0x38ad8: 0x6d8f8e20, 0x38ad9: 0x6d8f9020, 0x38ada: 0x6d8f9220, 0x38adb: 0x6d8f9420,\n\t0x38adc: 0x6d8f9620, 0x38add: 0x6d8f9820, 0x38ade: 0x6d8f9a20, 0x38adf: 0x6d8f9c20,\n\t0x38ae0: 0x6d8f9e20, 0x38ae1: 0x6d8fa020, 0x38ae2: 0x6d8fa220, 0x38ae3: 0x6d8fa420,\n\t0x38ae4: 0x6d8fa620, 0x38ae5: 0x6d8fa820, 0x38ae6: 0x6d8faa20, 0x38ae7: 0x6d8fac20,\n\t0x38ae8: 0x6d8fae20, 0x38ae9: 0x6db27020, 0x38aea: 0x6db27220, 0x38aeb: 0x6db27420,\n\t0x38aec: 0x6db27620, 0x38aed: 0x6db27820, 0x38aee: 0x6db27a20, 0x38aef: 0x6db27c20,\n\t0x38af0: 0x6db27e20, 0x38af1: 0x6db28020, 0x38af2: 0x6db28220, 0x38af3: 0x6db28420,\n\t0x38af4: 0x6db28620, 0x38af5: 0x6db28820, 0x38af6: 0x6db28a20, 0x38af7: 0x6db28c20,\n\t0x38af8: 0x6db28e20, 0x38af9: 0x6db29020, 0x38afa: 0x6db29220, 0x38afb: 0x6db29420,\n\t0x38afc: 0x6db29620, 0x38afd: 0x6db29820, 0x38afe: 0x6db29a20, 0x38aff: 0x6db29c20,\n\t// Block 0xe2c, offset 0x38b00\n\t0x38b00: 0x6db29e20, 0x38b01: 0x6db2a020, 0x38b02: 0x6db2a220, 0x38b03: 0x6db2a420,\n\t0x38b04: 0x6db2a620, 0x38b05: 0x6db2a820, 0x38b06: 0x6db2aa20, 0x38b07: 0x6db2ac20,\n\t0x38b08: 0x6db2ae20, 0x38b09: 0x6db2b020, 0x38b0a: 0x6db2b220, 0x38b0b: 0x6db2b420,\n\t0x38b0c: 0x6db2b620, 0x38b0d: 0x6db2b820, 0x38b0e: 0x6db2ba20, 0x38b0f: 0x6db2bc20,\n\t0x38b10: 0x6db2be20, 0x38b11: 0x6db2c020, 0x38b12: 0x6db2c220, 0x38b13: 0x6db2c420,\n\t0x38b14: 0x6db2c620, 0x38b15: 0x6db2c820, 0x38b16: 0x6db2ca20, 0x38b17: 0x6db2cc20,\n\t0x38b18: 0x6db2ce20, 0x38b19: 0x6db2d020, 0x38b1a: 0x6db2d220, 0x38b1b: 0x6db2d420,\n\t0x38b1c: 0x6db2d620, 0x38b1d: 0x6db2d820, 0x38b1e: 0x6db2da20, 0x38b1f: 0x6db2dc20,\n\t0x38b20: 0x6db2de20, 0x38b21: 0x6db2e020, 0x38b22: 0x6db2e220, 0x38b23: 0x6db2e420,\n\t0x38b24: 0x6db2e620, 0x38b25: 0x6db2e820, 0x38b26: 0x6db2ea20, 0x38b27: 0x6db2ec20,\n\t0x38b28: 0x6db2ee20, 0x38b29: 0x6db2f020, 0x38b2a: 0x6db2f220, 0x38b2b: 0x6db2f420,\n\t0x38b2c: 0x6db2f620, 0x38b2d: 0x6d8fb020, 0x38b2e: 0x6db2f820, 0x38b2f: 0x6db2fa20,\n\t0x38b30: 0x6db2fc20, 0x38b31: 0x6db2fe20, 0x38b32: 0x6db30020, 0x38b33: 0x6db30220,\n\t0x38b34: 0x6db30420, 0x38b35: 0x6db30620, 0x38b36: 0x6db30820, 0x38b37: 0x6db30a20,\n\t0x38b38: 0x6db30c20, 0x38b39: 0x6db30e20, 0x38b3a: 0x6db31020, 0x38b3b: 0x6db31220,\n\t0x38b3c: 0x6db31420, 0x38b3d: 0x6db31620, 0x38b3e: 0x6db31820, 0x38b3f: 0x6db31a20,\n\t// Block 0xe2d, offset 0x38b40\n\t0x38b40: 0x6db31c20, 0x38b41: 0x6db31e20, 0x38b42: 0x6db32020, 0x38b43: 0x6db32220,\n\t0x38b44: 0x6db32420, 0x38b45: 0x6db32620, 0x38b46: 0x6db32820, 0x38b47: 0x6db32a20,\n\t0x38b48: 0x6db32c20, 0x38b49: 0x6db32e20, 0x38b4a: 0x6db33020, 0x38b4b: 0x6db33220,\n\t0x38b4c: 0x6db33420, 0x38b4d: 0x6db33620, 0x38b4e: 0x6db33820, 0x38b4f: 0x6db33a20,\n\t0x38b50: 0x6db33c20, 0x38b51: 0x6db33e20, 0x38b52: 0x6db34020, 0x38b53: 0x6db34220,\n\t0x38b54: 0x6db34420, 0x38b55: 0x6db34620, 0x38b56: 0x6db34820, 0x38b57: 0x6db34a20,\n\t0x38b58: 0x6db34c20, 0x38b59: 0x6db34e20, 0x38b5a: 0x6db35020, 0x38b5b: 0x6db35220,\n\t0x38b5c: 0x6db35420, 0x38b5d: 0x6db35620, 0x38b5e: 0x6db35820, 0x38b5f: 0x6db35a20,\n\t0x38b60: 0x6db35c20, 0x38b61: 0x6db35e20, 0x38b62: 0x6db36020, 0x38b63: 0x6db36220,\n\t0x38b64: 0x6db36420, 0x38b65: 0x6db36620, 0x38b66: 0x6db36820, 0x38b67: 0x6db36a20,\n\t0x38b68: 0x6db36c20, 0x38b69: 0x6db36e20, 0x38b6a: 0x6dd19420, 0x38b6b: 0x6dd19620,\n\t0x38b6c: 0x6dd19820, 0x38b6d: 0x6dd19a20, 0x38b6e: 0x6dd19c20, 0x38b6f: 0x6dd19e20,\n\t0x38b70: 0x6dd1a020, 0x38b71: 0x6dd1a220, 0x38b72: 0x6dd1a420, 0x38b73: 0x6dd1a620,\n\t0x38b74: 0x6dd1a820, 0x38b75: 0x6dd1aa20, 0x38b76: 0x6dd1ac20, 0x38b77: 0x6dd1ae20,\n\t0x38b78: 0x6dd1b020, 0x38b79: 0x6dd1b220, 0x38b7a: 0x6dd1b420, 0x38b7b: 0x6dd1b620,\n\t0x38b7c: 0x6dd1b820, 0x38b7d: 0x6dd1ba20, 0x38b7e: 0x6dd1bc20, 0x38b7f: 0x6dd1be20,\n\t// Block 0xe2e, offset 0x38b80\n\t0x38b80: 0x6dd1c020, 0x38b81: 0x6dd1c220, 0x38b82: 0x6dd1c420, 0x38b83: 0x6dd1c620,\n\t0x38b84: 0x6dd1c820, 0x38b85: 0x6dd1ca20, 0x38b86: 0x6dd1cc20, 0x38b87: 0x6dd1ce20,\n\t0x38b88: 0x6dd1d020, 0x38b89: 0x6dd1d220, 0x38b8a: 0x6dd1d420, 0x38b8b: 0x6dd1d620,\n\t0x38b8c: 0x6dd1d820, 0x38b8d: 0x6dd1da20, 0x38b8e: 0x6dd1dc20, 0x38b8f: 0x6dd1de20,\n\t0x38b90: 0x6dd1e020, 0x38b91: 0x6dd1e220, 0x38b92: 0x6dd1e420, 0x38b93: 0x6dd1e620,\n\t0x38b94: 0x6deb0220, 0x38b95: 0x6deb0420, 0x38b96: 0x6dd1e820, 0x38b97: 0x6dd1ea20,\n\t0x38b98: 0x6dd1ec20, 0x38b99: 0x6dd1ee20, 0x38b9a: 0x6dd1f020, 0x38b9b: 0x6dd1f220,\n\t0x38b9c: 0x6dd1f420, 0x38b9d: 0x6deb0620, 0x38b9e: 0x6dd1f620, 0x38b9f: 0x6dd1f820,\n\t0x38ba0: 0x6dd1fa20, 0x38ba1: 0x6db37020, 0x38ba2: 0x6dd1fc20, 0x38ba3: 0x6dd1fe20,\n\t0x38ba4: 0x6dd20020, 0x38ba5: 0x6dd20220, 0x38ba6: 0x6dd20420, 0x38ba7: 0x6dd20620,\n\t0x38ba8: 0x6dd20820, 0x38ba9: 0x6dd20a20, 0x38baa: 0x6dd20c20, 0x38bab: 0x6dd20e20,\n\t0x38bac: 0x6dd21020, 0x38bad: 0x6dd21220, 0x38bae: 0x6dd21420, 0x38baf: 0x6dd21620,\n\t0x38bb0: 0x6dd21820, 0x38bb1: 0x6dd21a20, 0x38bb2: 0x6dd21c20, 0x38bb3: 0x6dd21e20,\n\t0x38bb4: 0x6dd22020, 0x38bb5: 0x6dd22220, 0x38bb6: 0x6dd22420, 0x38bb7: 0x6dd22620,\n\t0x38bb8: 0x6db37220, 0x38bb9: 0x6dd22820, 0x38bba: 0x6dd22a20, 0x38bbb: 0x6dd22c20,\n\t0x38bbc: 0x6dd22e20, 0x38bbd: 0x6dd23020, 0x38bbe: 0x6dd23220, 0x38bbf: 0x6dd23420,\n\t// Block 0xe2f, offset 0x38bc0\n\t0x38bc0: 0x6dd23620, 0x38bc1: 0x6dd23820, 0x38bc2: 0x6dd23a20, 0x38bc3: 0x6dd23c20,\n\t0x38bc4: 0x6dd23e20, 0x38bc5: 0x6dd24020, 0x38bc6: 0x6dd24220, 0x38bc7: 0x6dd24420,\n\t0x38bc8: 0x6dd24620, 0x38bc9: 0x6dd24820, 0x38bca: 0x6dd24a20, 0x38bcb: 0x6dd24c20,\n\t0x38bcc: 0x6dd24e20, 0x38bcd: 0x6dd25020, 0x38bce: 0x6dd25220, 0x38bcf: 0x6dd25420,\n\t0x38bd0: 0x6dd25620, 0x38bd1: 0x6dd25820, 0x38bd2: 0x6dd25a20, 0x38bd3: 0x6dd25c20,\n\t0x38bd4: 0x6dd25e20, 0x38bd5: 0x6dd26020, 0x38bd6: 0x6dd26220, 0x38bd7: 0x6dd26420,\n\t0x38bd8: 0x6dd26620, 0x38bd9: 0x6dd26820, 0x38bda: 0x6dd26a20, 0x38bdb: 0x6dd26c20,\n\t0x38bdc: 0x6dd26e20, 0x38bdd: 0x6dd27020, 0x38bde: 0x6dd27220, 0x38bdf: 0x6dd27420,\n\t0x38be0: 0x6deb0820, 0x38be1: 0x6deb0a20, 0x38be2: 0x6deb0c20, 0x38be3: 0x6deb0e20,\n\t0x38be4: 0x6deb1020, 0x38be5: 0x6deb1220, 0x38be6: 0x6deb1420, 0x38be7: 0x6deb1620,\n\t0x38be8: 0x6deb1820, 0x38be9: 0x6deb1a20, 0x38bea: 0x6deb1c20, 0x38beb: 0x6deb1e20,\n\t0x38bec: 0x6deb2020, 0x38bed: 0x6deb2220, 0x38bee: 0x6deb2420, 0x38bef: 0x6deb2620,\n\t0x38bf0: 0x6deb2820, 0x38bf1: 0x6deb2a20, 0x38bf2: 0x6deb2c20, 0x38bf3: 0x6deb2e20,\n\t0x38bf4: 0x6deb3020, 0x38bf5: 0x6deb3220, 0x38bf6: 0x6deb3420, 0x38bf7: 0x6deb3620,\n\t0x38bf8: 0x6deb3820, 0x38bf9: 0x6deb3a20, 0x38bfa: 0x6deb3c20, 0x38bfb: 0x6deb3e20,\n\t0x38bfc: 0x6deb4020, 0x38bfd: 0x6deb4220, 0x38bfe: 0x6deb4420, 0x38bff: 0x6deb4620,\n\t// Block 0xe30, offset 0x38c00\n\t0x38c00: 0x6deb4820, 0x38c01: 0x6deb4a20, 0x38c02: 0x6deb4c20, 0x38c03: 0x6deb4e20,\n\t0x38c04: 0x6deb5020, 0x38c05: 0x6deb5220, 0x38c06: 0x6deb5420, 0x38c07: 0x6deb5620,\n\t0x38c08: 0x6deb5820, 0x38c09: 0x6deb5a20, 0x38c0a: 0x6deb5c20, 0x38c0b: 0x6deb5e20,\n\t0x38c0c: 0x6deb6020, 0x38c0d: 0x6deb6220, 0x38c0e: 0x6deb6420, 0x38c0f: 0x6deb6620,\n\t0x38c10: 0x6deb6820, 0x38c11: 0x6deb6a20, 0x38c12: 0x6deb6c20, 0x38c13: 0x6deb6e20,\n\t0x38c14: 0x6deb7020, 0x38c15: 0x6deb7220, 0x38c16: 0x6deb7420, 0x38c17: 0x6deb7620,\n\t0x38c18: 0x6deb7820, 0x38c19: 0x6deb7a20, 0x38c1a: 0x6deb7c20, 0x38c1b: 0x6deb7e20,\n\t0x38c1c: 0x6deb8020, 0x38c1d: 0x6deb8220, 0x38c1e: 0x6deb8420, 0x38c1f: 0x6deb8620,\n\t0x38c20: 0x6deb8820, 0x38c21: 0x6deb8a20, 0x38c22: 0x6deb8c20, 0x38c23: 0x6deb8e20,\n\t0x38c24: 0x6deb9020, 0x38c25: 0x6deb9220, 0x38c26: 0x6deb9420, 0x38c27: 0x6deb9620,\n\t0x38c28: 0x6deb9820, 0x38c29: 0x6deb9a20, 0x38c2a: 0x6deb9c20, 0x38c2b: 0x6deb9e20,\n\t0x38c2c: 0x6deba020, 0x38c2d: 0x6deba220, 0x38c2e: 0x6deba420, 0x38c2f: 0x6deba620,\n\t0x38c30: 0x6deba820, 0x38c31: 0x6debaa20, 0x38c32: 0x6debac20, 0x38c33: 0x6debae20,\n\t0x38c34: 0x6debb020, 0x38c35: 0x6debb220, 0x38c36: 0x6debb420, 0x38c37: 0x6debb620,\n\t0x38c38: 0x6debb820, 0x38c39: 0x6debba20, 0x38c3a: 0x6debbc20, 0x38c3b: 0x6e00a820,\n\t0x38c3c: 0x6e00aa20, 0x38c3d: 0x6e00ac20, 0x38c3e: 0x6e00ae20, 0x38c3f: 0x6e00b020,\n\t// Block 0xe31, offset 0x38c40\n\t0x38c40: 0x6e00b220, 0x38c41: 0x6e00b420, 0x38c42: 0x6e00b620, 0x38c43: 0x6e00b820,\n\t0x38c44: 0x6e00ba20, 0x38c45: 0x6e00bc20, 0x38c46: 0x6e00be20, 0x38c47: 0x6e00c020,\n\t0x38c48: 0x6e00c220, 0x38c49: 0x6e00c420, 0x38c4a: 0x6e00c620, 0x38c4b: 0x6e00c820,\n\t0x38c4c: 0x6e00ca20, 0x38c4d: 0x6e00cc20, 0x38c4e: 0x6e00ce20, 0x38c4f: 0x6e00d020,\n\t0x38c50: 0x6e00d220, 0x38c51: 0x6e00d420, 0x38c52: 0x6e00d620, 0x38c53: 0x6e00d820,\n\t0x38c54: 0x6e00da20, 0x38c55: 0x6e00dc20, 0x38c56: 0x6e00de20, 0x38c57: 0x6e00e020,\n\t0x38c58: 0x6e00e220, 0x38c59: 0x6e00e420, 0x38c5a: 0x6e00e620, 0x38c5b: 0x6e00e820,\n\t0x38c5c: 0x6e00ea20, 0x38c5d: 0x6e00ec20, 0x38c5e: 0x6e00ee20, 0x38c5f: 0x6e00f020,\n\t0x38c60: 0x6e00f220, 0x38c61: 0x6e00f420, 0x38c62: 0x6e00f620, 0x38c63: 0x6e00f820,\n\t0x38c64: 0x6e00fa20, 0x38c65: 0x6e00fc20, 0x38c66: 0x6e00fe20, 0x38c67: 0x6e010020,\n\t0x38c68: 0x6e010220, 0x38c69: 0x6e010420, 0x38c6a: 0x6e010620, 0x38c6b: 0x6e010820,\n\t0x38c6c: 0x6e010a20, 0x38c6d: 0x6e010c20, 0x38c6e: 0x6e010e20, 0x38c6f: 0x6e011020,\n\t0x38c70: 0x6e011220, 0x38c71: 0x6e011420, 0x38c72: 0x6e011620, 0x38c73: 0x6e011820,\n\t0x38c74: 0x6e011a20, 0x38c75: 0x6e011c20, 0x38c76: 0x6e011e20, 0x38c77: 0x6e012020,\n\t0x38c78: 0x6e012220, 0x38c79: 0x6e012420, 0x38c7a: 0x6e012620, 0x38c7b: 0x6e012820,\n\t0x38c7c: 0x6e012a20, 0x38c7d: 0x6e012c20, 0x38c7e: 0x6e012e20, 0x38c7f: 0x6e013020,\n\t// Block 0xe32, offset 0x38c80\n\t0x38c80: 0x6e013220, 0x38c81: 0x6e013420, 0x38c82: 0x6e013620, 0x38c83: 0x6e013820,\n\t0x38c84: 0x6e013a20, 0x38c85: 0x6e013c20, 0x38c86: 0x6e013e20, 0x38c87: 0x6e014020,\n\t0x38c88: 0x6e014220, 0x38c89: 0x6e014420, 0x38c8a: 0x6e014620, 0x38c8b: 0x6e014820,\n\t0x38c8c: 0x6debbe20, 0x38c8d: 0x6e12ba20, 0x38c8e: 0x6e014a20, 0x38c8f: 0x6e12bc20,\n\t0x38c90: 0x6e12be20, 0x38c91: 0x6e12c020, 0x38c92: 0x6e12c220, 0x38c93: 0x6e12c420,\n\t0x38c94: 0x6e12c620, 0x38c95: 0x6e12c820, 0x38c96: 0x6e12ca20, 0x38c97: 0x6e12cc20,\n\t0x38c98: 0x6e12ce20, 0x38c99: 0x6e12d020, 0x38c9a: 0x6e12d220, 0x38c9b: 0x6e12d420,\n\t0x38c9c: 0x6e12d620, 0x38c9d: 0x6e12d820, 0x38c9e: 0x6e12da20, 0x38c9f: 0x6e12dc20,\n\t0x38ca0: 0x6e12de20, 0x38ca1: 0x6e12e020, 0x38ca2: 0x6e12e220, 0x38ca3: 0x6e12e420,\n\t0x38ca4: 0x6e12e620, 0x38ca5: 0x6e12e820, 0x38ca6: 0x6e12ea20, 0x38ca7: 0x6e12ec20,\n\t0x38ca8: 0x6e12ee20, 0x38ca9: 0x6e12f020, 0x38caa: 0x6e12f220, 0x38cab: 0x6e12f420,\n\t0x38cac: 0x6e12f620, 0x38cad: 0x6e12f820, 0x38cae: 0x6e12fa20, 0x38caf: 0x6e12fc20,\n\t0x38cb0: 0x6e12fe20, 0x38cb1: 0x6e130020, 0x38cb2: 0x6e130220, 0x38cb3: 0x6e130420,\n\t0x38cb4: 0x6e130620, 0x38cb5: 0x6e130820, 0x38cb6: 0x6e130a20, 0x38cb7: 0x6e130c20,\n\t0x38cb8: 0x6e130e20, 0x38cb9: 0x6e131020, 0x38cba: 0x6e131220, 0x38cbb: 0x6e131420,\n\t0x38cbc: 0x6e131620, 0x38cbd: 0x6e131820, 0x38cbe: 0x6e131a20, 0x38cbf: 0x6e131c20,\n\t// Block 0xe33, offset 0x38cc0\n\t0x38cc0: 0x6e131e20, 0x38cc1: 0x6e132020, 0x38cc2: 0x6e132220, 0x38cc3: 0x6e132420,\n\t0x38cc4: 0x6e132620, 0x38cc5: 0x6e132820, 0x38cc6: 0x6e132a20, 0x38cc7: 0x6e132c20,\n\t0x38cc8: 0x6e132e20, 0x38cc9: 0x6e133020, 0x38cca: 0x6e133220, 0x38ccb: 0x6e133420,\n\t0x38ccc: 0x6e133620, 0x38ccd: 0x6e20c620, 0x38cce: 0x6e20c820, 0x38ccf: 0x6e20ca20,\n\t0x38cd0: 0x6e20cc20, 0x38cd1: 0x6e20ce20, 0x38cd2: 0x6e20d020, 0x38cd3: 0x6e20d220,\n\t0x38cd4: 0x6e20d420, 0x38cd5: 0x6e20d620, 0x38cd6: 0x6e20d820, 0x38cd7: 0x6e20da20,\n\t0x38cd8: 0x6e20dc20, 0x38cd9: 0x6e20de20, 0x38cda: 0x6e20e020, 0x38cdb: 0x6e20e220,\n\t0x38cdc: 0x6e20e420, 0x38cdd: 0x6e20e620, 0x38cde: 0x6e20e820, 0x38cdf: 0x6e20ea20,\n\t0x38ce0: 0x6e20ec20, 0x38ce1: 0x6e20ee20, 0x38ce2: 0x6e20f020, 0x38ce3: 0x6e20f220,\n\t0x38ce4: 0x6e20f420, 0x38ce5: 0x6e20f620, 0x38ce6: 0x6e20f820, 0x38ce7: 0x6e20fa20,\n\t0x38ce8: 0x6e20fc20, 0x38ce9: 0x6e20fe20, 0x38cea: 0x6e210020, 0x38ceb: 0x6e210220,\n\t0x38cec: 0x6e210420, 0x38ced: 0x6e210620, 0x38cee: 0x6e210820, 0x38cef: 0x6e210a20,\n\t0x38cf0: 0x6e210c20, 0x38cf1: 0x6e210e20, 0x38cf2: 0x6e211020, 0x38cf3: 0x6e211220,\n\t0x38cf4: 0x6e211420, 0x38cf5: 0x6e211620, 0x38cf6: 0x6e2b9420, 0x38cf7: 0x6e2b9620,\n\t0x38cf8: 0x6e2b9820, 0x38cf9: 0x6e2b9a20, 0x38cfa: 0x6e2b9c20, 0x38cfb: 0x6e2b9e20,\n\t0x38cfc: 0x6e2ba020, 0x38cfd: 0x6e2ba220, 0x38cfe: 0x6e2ba420, 0x38cff: 0x6e2ba620,\n\t// Block 0xe34, offset 0x38d00\n\t0x38d00: 0x6e2ba820, 0x38d01: 0x6e2baa20, 0x38d02: 0x6e2bac20, 0x38d03: 0x6e2bae20,\n\t0x38d04: 0x6e2bb020, 0x38d05: 0x6e2bb220, 0x38d06: 0x6e2bb420, 0x38d07: 0x6e2bb620,\n\t0x38d08: 0x6e2bb820, 0x38d09: 0x6e2bba20, 0x38d0a: 0x6e2bbc20, 0x38d0b: 0x6e2bbe20,\n\t0x38d0c: 0x6e2bc020, 0x38d0d: 0x6e2bc220, 0x38d0e: 0x6e2bc420, 0x38d0f: 0x6e2bc620,\n\t0x38d10: 0x6e2bc820, 0x38d11: 0x6e2bca20, 0x38d12: 0x6e2bcc20, 0x38d13: 0x6e2bce20,\n\t0x38d14: 0x6e2bd020, 0x38d15: 0x6e2bd220, 0x38d16: 0x6e33f020, 0x38d17: 0x6e33f220,\n\t0x38d18: 0x6e33f420, 0x38d19: 0x6e33f620, 0x38d1a: 0x6e33f820, 0x38d1b: 0x6e33fa20,\n\t0x38d1c: 0x6e33fc20, 0x38d1d: 0x6e33fe20, 0x38d1e: 0x6e340020, 0x38d1f: 0x6e340220,\n\t0x38d20: 0x6e340420, 0x38d21: 0x6e340620, 0x38d22: 0x6e340820, 0x38d23: 0x6e340a20,\n\t0x38d24: 0x6e340c20, 0x38d25: 0x6e340e20, 0x38d26: 0x6e341020, 0x38d27: 0x6e341220,\n\t0x38d28: 0x6e341420, 0x38d29: 0x6e341620, 0x38d2a: 0x6e341820, 0x38d2b: 0x6e341a20,\n\t0x38d2c: 0x6e341c20, 0x38d2d: 0x6e341e20, 0x38d2e: 0x6e39d420, 0x38d2f: 0x6e39d620,\n\t0x38d30: 0x6e39d820, 0x38d31: 0x6e39da20, 0x38d32: 0x6e39dc20, 0x38d33: 0x6e39de20,\n\t0x38d34: 0x6e39e020, 0x38d35: 0x6e42f020, 0x38d36: 0x6e39e220, 0x38d37: 0x6e39e420,\n\t0x38d38: 0x6e39e620, 0x38d39: 0x6e39e820, 0x38d3a: 0x6e3df620, 0x38d3b: 0x6e3df820,\n\t0x38d3c: 0x6e3dfa20, 0x38d3d: 0x6e3dfc20, 0x38d3e: 0x6e3dfe20, 0x38d3f: 0x6e3e0020,\n\t// Block 0xe35, offset 0x38d40\n\t0x38d40: 0x6e3e0220, 0x38d41: 0x6e3e0420, 0x38d42: 0x6e3e0620, 0x38d43: 0x6e3e0820,\n\t0x38d44: 0x6e3e0a20, 0x38d45: 0x6e3e0c20, 0x38d46: 0x6e394c20, 0x38d47: 0x6e40ce20,\n\t0x38d48: 0x6e40d020, 0x38d49: 0x6e40d220, 0x38d4a: 0x6e40d420, 0x38d4b: 0x6e40d620,\n\t0x38d4c: 0x6e40d820, 0x38d4d: 0x6e40da20, 0x38d4e: 0x6e40dc20, 0x38d4f: 0x6e42f220,\n\t0x38d50: 0x6e42f420, 0x38d51: 0x6e42f620, 0x38d52: 0x6e42f820, 0x38d53: 0x6e470220,\n\t0x38d54: 0x6e446820, 0x38d55: 0x6e446a20, 0x38d56: 0x6e454e20, 0x38d57: 0x6e45d020,\n\t0x38d58: 0x6e472e20, 0x38d59: 0x6e468c20, 0x38d5a: 0x6e455020, 0x38d5b: 0x6c401420,\n\t0x38d5c: 0x6c5f9820, 0x38d5d: 0x6c5f9a20, 0x38d5e: 0x6c5f9c20, 0x38d5f: 0x6c84d420,\n\t0x38d60: 0x6c84d620, 0x38d61: 0x6c84d820, 0x38d62: 0x6c84da20, 0x38d63: 0x6cae3220,\n\t0x38d64: 0x6cae3420, 0x38d65: 0x6cae3620, 0x38d66: 0x6cae3820, 0x38d67: 0x6cae3a20,\n\t0x38d68: 0x6cae3c20, 0x38d69: 0x6cae3e20, 0x38d6a: 0x6cae4020, 0x38d6b: 0x6cae4220,\n\t0x38d6c: 0x6cae4420, 0x38d6d: 0x6cae4620, 0x38d6e: 0x6cae4820, 0x38d6f: 0x6cae4a20,\n\t0x38d70: 0x6cae4c20, 0x38d71: 0x6cdd5020, 0x38d72: 0x6cdd5220, 0x38d73: 0x6cdd5420,\n\t0x38d74: 0x6cdd5620, 0x38d75: 0x6cdd5820, 0x38d76: 0x6cdd5a20, 0x38d77: 0x6cdd5c20,\n\t0x38d78: 0x6cdd5e20, 0x38d79: 0x6cdd6020, 0x38d7a: 0x6d0bd020, 0x38d7b: 0x6d0bd220,\n\t0x38d7c: 0x6d0bd420, 0x38d7d: 0x6d0bd620, 0x38d7e: 0x6d0bd820, 0x38d7f: 0x6d0bda20,\n\t// Block 0xe36, offset 0x38d80\n\t0x38d80: 0x6d0bdc20, 0x38d81: 0x6d39be20, 0x38d82: 0x6d39c020, 0x38d83: 0x6d39c220,\n\t0x38d84: 0x6d39c420, 0x38d85: 0x6d39c620, 0x38d86: 0x6d39c820, 0x38d87: 0x6d39ca20,\n\t0x38d88: 0x6d39cc20, 0x38d89: 0x6d39ce20, 0x38d8a: 0x6d39d020, 0x38d8b: 0x6d39d220,\n\t0x38d8c: 0x6d39d420, 0x38d8d: 0x6d39d620, 0x38d8e: 0x6d39d820, 0x38d8f: 0x6d65f820,\n\t0x38d90: 0x6d65fa20, 0x38d91: 0x6d65fc20, 0x38d92: 0x6d65fe20, 0x38d93: 0x6d660020,\n\t0x38d94: 0x6d660220, 0x38d95: 0x6d660420, 0x38d96: 0x6d660620, 0x38d97: 0x6d660820,\n\t0x38d98: 0x6d660a20, 0x38d99: 0x6d660c20, 0x38d9a: 0x6d660e20, 0x38d9b: 0x6d661020,\n\t0x38d9c: 0x6d8fd020, 0x38d9d: 0x6d8fd220, 0x38d9e: 0x6d8fd420, 0x38d9f: 0x6d8fd620,\n\t0x38da0: 0x6d8fd820, 0x38da1: 0x6d8fda20, 0x38da2: 0x6d8fdc20, 0x38da3: 0x6d8fde20,\n\t0x38da4: 0x6d8fe020, 0x38da5: 0x6d8fe220, 0x38da6: 0x6d8fe420, 0x38da7: 0x6d8fe620,\n\t0x38da8: 0x6d8fe820, 0x38da9: 0x6d8fea20, 0x38daa: 0x6d8fec20, 0x38dab: 0x6d8fee20,\n\t0x38dac: 0x6d8ff020, 0x38dad: 0x6d8ff220, 0x38dae: 0x6d8ff420, 0x38daf: 0x6d8ff620,\n\t0x38db0: 0x6d8ff820, 0x38db1: 0x6db39e20, 0x38db2: 0x6db3a020, 0x38db3: 0x6db3a220,\n\t0x38db4: 0x6db3a420, 0x38db5: 0x6db3a620, 0x38db6: 0x6db3a820, 0x38db7: 0x6db3aa20,\n\t0x38db8: 0x6db3ac20, 0x38db9: 0x6db3ae20, 0x38dba: 0x6db3b020, 0x38dbb: 0x6dd29c20,\n\t0x38dbc: 0x6dd29e20, 0x38dbd: 0x6dd2a020, 0x38dbe: 0x6dd2a220, 0x38dbf: 0x6dd2a420,\n\t// Block 0xe37, offset 0x38dc0\n\t0x38dc0: 0x6dd2a620, 0x38dc1: 0x6dd2a820, 0x38dc2: 0x6debd420, 0x38dc3: 0x6dd2aa20,\n\t0x38dc4: 0x6dd2ac20, 0x38dc5: 0x6debd620, 0x38dc6: 0x6debd820, 0x38dc7: 0x6debda20,\n\t0x38dc8: 0x6debdc20, 0x38dc9: 0x6debde20, 0x38dca: 0x6debe020, 0x38dcb: 0x6e015a20,\n\t0x38dcc: 0x6e015c20, 0x38dcd: 0x6e015e20, 0x38dce: 0x6e016020, 0x38dcf: 0x6e016220,\n\t0x38dd0: 0x6df39420, 0x38dd1: 0x6e134220, 0x38dd2: 0x6e134420, 0x38dd3: 0x6e134620,\n\t0x38dd4: 0x6e134820, 0x38dd5: 0x6e134a20, 0x38dd6: 0x6e134c20, 0x38dd7: 0x6e134e20,\n\t0x38dd8: 0x6e211e20, 0x38dd9: 0x6e212020, 0x38dda: 0x6e2bd620, 0x38ddb: 0x6e2bd820,\n\t0x38ddc: 0x6e3e1420, 0x38ddd: 0x6c268c20, 0x38dde: 0x6c268e20, 0x38ddf: 0x6c402220,\n\t0x38de0: 0x6c402420, 0x38de1: 0x6c402620, 0x38de2: 0x6c402820, 0x38de3: 0x6c402a20,\n\t0x38de4: 0x6c402c20, 0x38de5: 0x6c402e20, 0x38de6: 0x6c403020, 0x38de7: 0x6c403220,\n\t0x38de8: 0x6c5fcc20, 0x38de9: 0x6c5fce20, 0x38dea: 0x6c5fd020, 0x38deb: 0x6c5fd220,\n\t0x38dec: 0x6c5fd420, 0x38ded: 0x6c5fd620, 0x38dee: 0x6c5fd820, 0x38def: 0x6c5fda20,\n\t0x38df0: 0x6c5fdc20, 0x38df1: 0x6c5fde20, 0x38df2: 0x6c5fe020, 0x38df3: 0x6c5fe220,\n\t0x38df4: 0x6c5fe420, 0x38df5: 0x6c5fe620, 0x38df6: 0x6c5fe820, 0x38df7: 0x6c5fea20,\n\t0x38df8: 0x6c5fec20, 0x38df9: 0x6c5fee20, 0x38dfa: 0x6c5ff020, 0x38dfb: 0x6c853220,\n\t0x38dfc: 0x6c853420, 0x38dfd: 0x6c853620, 0x38dfe: 0x6c853820, 0x38dff: 0x6c853a20,\n\t// Block 0xe38, offset 0x38e00\n\t0x38e00: 0x6c853c20, 0x38e01: 0x6c853e20, 0x38e02: 0x6c854020, 0x38e03: 0x6c854220,\n\t0x38e04: 0x6c854420, 0x38e05: 0x6c854620, 0x38e06: 0x6c854820, 0x38e07: 0x6c854a20,\n\t0x38e08: 0x6c854c20, 0x38e09: 0x6c854e20, 0x38e0a: 0x6c855020, 0x38e0b: 0x6c855220,\n\t0x38e0c: 0x6c855420, 0x38e0d: 0x6c855620, 0x38e0e: 0x6c855820, 0x38e0f: 0x6c855a20,\n\t0x38e10: 0x6c855c20, 0x38e11: 0x6c855e20, 0x38e12: 0x6c856020, 0x38e13: 0x6c856220,\n\t0x38e14: 0x6c856420, 0x38e15: 0x6c856620, 0x38e16: 0x6c856820, 0x38e17: 0x6c856a20,\n\t0x38e18: 0x6c856c20, 0x38e19: 0x6c856e20, 0x38e1a: 0x6c857020, 0x38e1b: 0x6c857220,\n\t0x38e1c: 0x6c857420, 0x38e1d: 0x6c857620, 0x38e1e: 0x6caeaa20, 0x38e1f: 0x6caeac20,\n\t0x38e20: 0x6caeae20, 0x38e21: 0x6caeb020, 0x38e22: 0x6caeb220, 0x38e23: 0x6caeb420,\n\t0x38e24: 0x6caeb620, 0x38e25: 0x6caeb820, 0x38e26: 0x6caeba20, 0x38e27: 0x6caebc20,\n\t0x38e28: 0x6caebe20, 0x38e29: 0x6caec020, 0x38e2a: 0x6caec220, 0x38e2b: 0x6caec420,\n\t0x38e2c: 0x6caec620, 0x38e2d: 0x6caec820, 0x38e2e: 0x6caeca20, 0x38e2f: 0x6caecc20,\n\t0x38e30: 0x6caece20, 0x38e31: 0x6caed020, 0x38e32: 0x6caed220, 0x38e33: 0x6caed420,\n\t0x38e34: 0x6caed620, 0x38e35: 0x6caed820, 0x38e36: 0x6caeda20, 0x38e37: 0x6caedc20,\n\t0x38e38: 0x6caede20, 0x38e39: 0x6caee020, 0x38e3a: 0x6caee220, 0x38e3b: 0x6caee420,\n\t0x38e3c: 0x6caee620, 0x38e3d: 0x6caee820, 0x38e3e: 0x6caeea20, 0x38e3f: 0x6caeec20,\n\t// Block 0xe39, offset 0x38e40\n\t0x38e40: 0x6caeee20, 0x38e41: 0x6caef020, 0x38e42: 0x6caef220, 0x38e43: 0x6caef420,\n\t0x38e44: 0x6caef620, 0x38e45: 0x6caef820, 0x38e46: 0x6caefa20, 0x38e47: 0x6caefc20,\n\t0x38e48: 0x6caefe20, 0x38e49: 0x6caf0020, 0x38e4a: 0x6caf0220, 0x38e4b: 0x6caf0420,\n\t0x38e4c: 0x6caf0620, 0x38e4d: 0x6caf0820, 0x38e4e: 0x6caf0a20, 0x38e4f: 0x6cddc220,\n\t0x38e50: 0x6cddc420, 0x38e51: 0x6cddc620, 0x38e52: 0x6cddc820, 0x38e53: 0x6cddca20,\n\t0x38e54: 0x6cddcc20, 0x38e55: 0x6cddce20, 0x38e56: 0x6cddd020, 0x38e57: 0x6cddd220,\n\t0x38e58: 0x6cddd420, 0x38e59: 0x6cddd620, 0x38e5a: 0x6cddd820, 0x38e5b: 0x6cddda20,\n\t0x38e5c: 0x6cdddc20, 0x38e5d: 0x6cddde20, 0x38e5e: 0x6cdde020, 0x38e5f: 0x6cdde220,\n\t0x38e60: 0x6cdde420, 0x38e61: 0x6cdde620, 0x38e62: 0x6cdde820, 0x38e63: 0x6cddea20,\n\t0x38e64: 0x6cddec20, 0x38e65: 0x6cddee20, 0x38e66: 0x6cddf020, 0x38e67: 0x6cddf220,\n\t0x38e68: 0x6cddf420, 0x38e69: 0x6cddf620, 0x38e6a: 0x6cddf820, 0x38e6b: 0x6d0c3620,\n\t0x38e6c: 0x6cddfa20, 0x38e6d: 0x6cddfc20, 0x38e6e: 0x6d0c3820, 0x38e6f: 0x6cddfe20,\n\t0x38e70: 0x6cde0020, 0x38e71: 0x6cde0220, 0x38e72: 0x6cde0420, 0x38e73: 0x6cde0620,\n\t0x38e74: 0x6cde0820, 0x38e75: 0x6cde0a20, 0x38e76: 0x6cde0c20, 0x38e77: 0x6cde0e20,\n\t0x38e78: 0x6cde1020, 0x38e79: 0x6cde1220, 0x38e7a: 0x6cde1420, 0x38e7b: 0x6cde1620,\n\t0x38e7c: 0x6cde1820, 0x38e7d: 0x6cde1a20, 0x38e7e: 0x6cde1c20, 0x38e7f: 0x6cde1e20,\n\t// Block 0xe3a, offset 0x38e80\n\t0x38e80: 0x6cde2020, 0x38e81: 0x6cde2220, 0x38e82: 0x6cde2420, 0x38e83: 0x6cde2620,\n\t0x38e84: 0x6cde2820, 0x38e85: 0x6cde2a20, 0x38e86: 0x6cde2c20, 0x38e87: 0x6cde2e20,\n\t0x38e88: 0x6d0c3a20, 0x38e89: 0x6d0c3c20, 0x38e8a: 0x6d0c3e20, 0x38e8b: 0x6d0c4020,\n\t0x38e8c: 0x6d0c4220, 0x38e8d: 0x6d0c4420, 0x38e8e: 0x6d0c4620, 0x38e8f: 0x6d0c4820,\n\t0x38e90: 0x6d0c4a20, 0x38e91: 0x6d0c4c20, 0x38e92: 0x6d0c4e20, 0x38e93: 0x6d0c5020,\n\t0x38e94: 0x6d0c5220, 0x38e95: 0x6d0c5420, 0x38e96: 0x6d0c5620, 0x38e97: 0x6d0c5820,\n\t0x38e98: 0x6d0c5a20, 0x38e99: 0x6d0c5c20, 0x38e9a: 0x6d0c5e20, 0x38e9b: 0x6d0c6020,\n\t0x38e9c: 0x6d0c6220, 0x38e9d: 0x6d0c6420, 0x38e9e: 0x6d3a6020, 0x38e9f: 0x6d0c6620,\n\t0x38ea0: 0x6d0c6820, 0x38ea1: 0x6d0c6a20, 0x38ea2: 0x6d0c6c20, 0x38ea3: 0x6d0c6e20,\n\t0x38ea4: 0x6d0c7020, 0x38ea5: 0x6d0c7220, 0x38ea6: 0x6d0c7420, 0x38ea7: 0x6d0c7620,\n\t0x38ea8: 0x6d0c7820, 0x38ea9: 0x6d0c7a20, 0x38eaa: 0x6d0c7c20, 0x38eab: 0x6d0c7e20,\n\t0x38eac: 0x6d0c8020, 0x38ead: 0x6d0c8220, 0x38eae: 0x6d0c8420, 0x38eaf: 0x6d0c8620,\n\t0x38eb0: 0x6d0c8820, 0x38eb1: 0x6d0c8a20, 0x38eb2: 0x6d0c8c20, 0x38eb3: 0x6d0c8e20,\n\t0x38eb4: 0x6d0c9020, 0x38eb5: 0x6d0c9220, 0x38eb6: 0x6d0c9420, 0x38eb7: 0x6d0c9620,\n\t0x38eb8: 0x6d0c9820, 0x38eb9: 0x6d0c9a20, 0x38eba: 0x6d0c9c20, 0x38ebb: 0x6d0c9e20,\n\t0x38ebc: 0x6d0ca020, 0x38ebd: 0x6d0ca220, 0x38ebe: 0x6d0ca420, 0x38ebf: 0x6d0ca620,\n\t// Block 0xe3b, offset 0x38ec0\n\t0x38ec0: 0x6d0ca820, 0x38ec1: 0x6d0caa20, 0x38ec2: 0x6d0cac20, 0x38ec3: 0x6d3a6220,\n\t0x38ec4: 0x6d3a6420, 0x38ec5: 0x6d3a6620, 0x38ec6: 0x6d3a6820, 0x38ec7: 0x6d3a6a20,\n\t0x38ec8: 0x6d3a6c20, 0x38ec9: 0x6d3a6e20, 0x38eca: 0x6d3a7020, 0x38ecb: 0x6d3a7220,\n\t0x38ecc: 0x6d3a7420, 0x38ecd: 0x6d3a7620, 0x38ece: 0x6d3a7820, 0x38ecf: 0x6d3a7a20,\n\t0x38ed0: 0x6d3a7c20, 0x38ed1: 0x6d3a7e20, 0x38ed2: 0x6d3a8020, 0x38ed3: 0x6d3a8220,\n\t0x38ed4: 0x6d3a8420, 0x38ed5: 0x6d3a8620, 0x38ed6: 0x6d3a8820, 0x38ed7: 0x6d3a8a20,\n\t0x38ed8: 0x6d3a8c20, 0x38ed9: 0x6d3a8e20, 0x38eda: 0x6d3a9020, 0x38edb: 0x6d3a9220,\n\t0x38edc: 0x6d3a9420, 0x38edd: 0x6d3a9620, 0x38ede: 0x6d0cae20, 0x38edf: 0x6d3a9820,\n\t0x38ee0: 0x6d3a9a20, 0x38ee1: 0x6d3a9c20, 0x38ee2: 0x6d3a9e20, 0x38ee3: 0x6d3aa020,\n\t0x38ee4: 0x6d3aa220, 0x38ee5: 0x6d3aa420, 0x38ee6: 0x6d3aa620, 0x38ee7: 0x6d3aa820,\n\t0x38ee8: 0x6d3aaa20, 0x38ee9: 0x6d3aac20, 0x38eea: 0x6d3aae20, 0x38eeb: 0x6d3ab020,\n\t0x38eec: 0x6d3ab220, 0x38eed: 0x6d3ab420, 0x38eee: 0x6d3ab620, 0x38eef: 0x6d3ab820,\n\t0x38ef0: 0x6d668c20, 0x38ef1: 0x6d3aba20, 0x38ef2: 0x6d3abc20, 0x38ef3: 0x6d3abe20,\n\t0x38ef4: 0x6d3ac020, 0x38ef5: 0x6d3ac220, 0x38ef6: 0x6d3ac420, 0x38ef7: 0x6d3ac620,\n\t0x38ef8: 0x6d3ac820, 0x38ef9: 0x6d3aca20, 0x38efa: 0x6d3acc20, 0x38efb: 0x6d3ace20,\n\t0x38efc: 0x6d3ad020, 0x38efd: 0x6d3ad220, 0x38efe: 0x6d3ad420, 0x38eff: 0x6d3ad620,\n\t// Block 0xe3c, offset 0x38f00\n\t0x38f00: 0x6d3ad820, 0x38f01: 0x6d3ada20, 0x38f02: 0x6d3adc20, 0x38f03: 0x6d3ade20,\n\t0x38f04: 0x6d3ae020, 0x38f05: 0x6d3ae220, 0x38f06: 0x6d3ae420, 0x38f07: 0x6d3ae620,\n\t0x38f08: 0x6d3ae820, 0x38f09: 0x6d3aea20, 0x38f0a: 0x6d3aec20, 0x38f0b: 0x6d3aee20,\n\t0x38f0c: 0x6d3af020, 0x38f0d: 0x6d3af220, 0x38f0e: 0x6d3af420, 0x38f0f: 0x6d3af620,\n\t0x38f10: 0x6d3af820, 0x38f11: 0x6d3afa20, 0x38f12: 0x6d668e20, 0x38f13: 0x6d669020,\n\t0x38f14: 0x6d669220, 0x38f15: 0x6d669420, 0x38f16: 0x6d669620, 0x38f17: 0x6d669820,\n\t0x38f18: 0x6d669a20, 0x38f19: 0x6d669c20, 0x38f1a: 0x6d669e20, 0x38f1b: 0x6d66a020,\n\t0x38f1c: 0x6d66a220, 0x38f1d: 0x6d66a420, 0x38f1e: 0x6d66a620, 0x38f1f: 0x6d66a820,\n\t0x38f20: 0x6d66aa20, 0x38f21: 0x6d66ac20, 0x38f22: 0x6d66ae20, 0x38f23: 0x6d66b020,\n\t0x38f24: 0x6d66b220, 0x38f25: 0x6d66b420, 0x38f26: 0x6d66b620, 0x38f27: 0x6d66b820,\n\t0x38f28: 0x6d66ba20, 0x38f29: 0x6d66bc20, 0x38f2a: 0x6d66be20, 0x38f2b: 0x6d66c020,\n\t0x38f2c: 0x6d66c220, 0x38f2d: 0x6d66c420, 0x38f2e: 0x6d66c620, 0x38f2f: 0x6d66c820,\n\t0x38f30: 0x6d66ca20, 0x38f31: 0x6d66cc20, 0x38f32: 0x6d66ce20, 0x38f33: 0x6d66d020,\n\t0x38f34: 0x6d66d220, 0x38f35: 0x6d66d420, 0x38f36: 0x6d66d620, 0x38f37: 0x6d66d820,\n\t0x38f38: 0x6d66da20, 0x38f39: 0x6d66dc20, 0x38f3a: 0x6d66de20, 0x38f3b: 0x6d66e020,\n\t0x38f3c: 0x6d66e220, 0x38f3d: 0x6d66e420, 0x38f3e: 0x6d66e620, 0x38f3f: 0x6d66e820,\n\t// Block 0xe3d, offset 0x38f40\n\t0x38f40: 0x6d66ea20, 0x38f41: 0x6d66ec20, 0x38f42: 0x6d66ee20, 0x38f43: 0x6d66f020,\n\t0x38f44: 0x6d66f220, 0x38f45: 0x6d66f420, 0x38f46: 0x6d66f620, 0x38f47: 0x6d66f820,\n\t0x38f48: 0x6d66fa20, 0x38f49: 0x6d66fc20, 0x38f4a: 0x6d66fe20, 0x38f4b: 0x6d670020,\n\t0x38f4c: 0x6d670220, 0x38f4d: 0x6d670420, 0x38f4e: 0x6d670620, 0x38f4f: 0x6d670820,\n\t0x38f50: 0x6d670a20, 0x38f51: 0x6d670c20, 0x38f52: 0x6d670e20, 0x38f53: 0x6d671020,\n\t0x38f54: 0x6d671220, 0x38f55: 0x6d671420, 0x38f56: 0x6d671620, 0x38f57: 0x6d671820,\n\t0x38f58: 0x6d671a20, 0x38f59: 0x6d671c20, 0x38f5a: 0x6d671e20, 0x38f5b: 0x6d672020,\n\t0x38f5c: 0x6d672220, 0x38f5d: 0x6d672420, 0x38f5e: 0x6d672620, 0x38f5f: 0x6d672820,\n\t0x38f60: 0x6d672a20, 0x38f61: 0x6d905c20, 0x38f62: 0x6d905e20, 0x38f63: 0x6d906020,\n\t0x38f64: 0x6d906220, 0x38f65: 0x6d906420, 0x38f66: 0x6d906620, 0x38f67: 0x6d906820,\n\t0x38f68: 0x6d906a20, 0x38f69: 0x6d906c20, 0x38f6a: 0x6d906e20, 0x38f6b: 0x6d907020,\n\t0x38f6c: 0x6d907220, 0x38f6d: 0x6d907420, 0x38f6e: 0x6d907620, 0x38f6f: 0x6d907820,\n\t0x38f70: 0x6d907a20, 0x38f71: 0x6d907c20, 0x38f72: 0x6d907e20, 0x38f73: 0x6d908020,\n\t0x38f74: 0x6d908220, 0x38f75: 0x6d908420, 0x38f76: 0x6d908620, 0x38f77: 0x6d908820,\n\t0x38f78: 0x6d908a20, 0x38f79: 0x6d908c20, 0x38f7a: 0x6d908e20, 0x38f7b: 0x6d909020,\n\t0x38f7c: 0x6d909220, 0x38f7d: 0x6d909420, 0x38f7e: 0x6d909620, 0x38f7f: 0x6d909820,\n\t// Block 0xe3e, offset 0x38f80\n\t0x38f80: 0x6d909a20, 0x38f81: 0x6d909c20, 0x38f82: 0x6d909e20, 0x38f83: 0x6d90a020,\n\t0x38f84: 0x6d90a220, 0x38f85: 0x6d90a420, 0x38f86: 0x6d90a620, 0x38f87: 0x6d672c20,\n\t0x38f88: 0x6d90a820, 0x38f89: 0x6d90aa20, 0x38f8a: 0x6d90ac20, 0x38f8b: 0x6d90ae20,\n\t0x38f8c: 0x6d90b020, 0x38f8d: 0x6d90b220, 0x38f8e: 0x6d90b420, 0x38f8f: 0x6d90b620,\n\t0x38f90: 0x6d90b820, 0x38f91: 0x6d90ba20, 0x38f92: 0x6d90bc20, 0x38f93: 0x6d90be20,\n\t0x38f94: 0x6d90c020, 0x38f95: 0x6d90c220, 0x38f96: 0x6d90c420, 0x38f97: 0x6d90c620,\n\t0x38f98: 0x6d90c820, 0x38f99: 0x6d90ca20, 0x38f9a: 0x6d90cc20, 0x38f9b: 0x6d90ce20,\n\t0x38f9c: 0x6d90d020, 0x38f9d: 0x6d90d220, 0x38f9e: 0x6d90d420, 0x38f9f: 0x6d90d620,\n\t0x38fa0: 0x6d90d820, 0x38fa1: 0x6d90da20, 0x38fa2: 0x6d90dc20, 0x38fa3: 0x6d90de20,\n\t0x38fa4: 0x6d90e020, 0x38fa5: 0x6d90e220, 0x38fa6: 0x6d90e420, 0x38fa7: 0x6d90e620,\n\t0x38fa8: 0x6d90e820, 0x38fa9: 0x6d90ea20, 0x38faa: 0x6d90ec20, 0x38fab: 0x6d90ee20,\n\t0x38fac: 0x6d90f020, 0x38fad: 0x6d90f220, 0x38fae: 0x6d90f420, 0x38faf: 0x6d90f620,\n\t0x38fb0: 0x6d90f820, 0x38fb1: 0x6d90fa20, 0x38fb2: 0x6d90fc20, 0x38fb3: 0x6d90fe20,\n\t0x38fb4: 0x6d910020, 0x38fb5: 0x6d910220, 0x38fb6: 0x6d910420, 0x38fb7: 0x6d910620,\n\t0x38fb8: 0x6db42820, 0x38fb9: 0x6db42a20, 0x38fba: 0x6db42c20, 0x38fbb: 0x6db42e20,\n\t0x38fbc: 0x6db43020, 0x38fbd: 0x6db43220, 0x38fbe: 0x6db43420, 0x38fbf: 0x6db43620,\n\t// Block 0xe3f, offset 0x38fc0\n\t0x38fc0: 0x6db43820, 0x38fc1: 0x6db43a20, 0x38fc2: 0x6db43c20, 0x38fc3: 0x6db43e20,\n\t0x38fc4: 0x6db44020, 0x38fc5: 0x6db44220, 0x38fc6: 0x6db44420, 0x38fc7: 0x6db44620,\n\t0x38fc8: 0x6db44820, 0x38fc9: 0x6db44a20, 0x38fca: 0x6db44c20, 0x38fcb: 0x6db44e20,\n\t0x38fcc: 0x6db45020, 0x38fcd: 0x6db45220, 0x38fce: 0x6db45420, 0x38fcf: 0x6db45620,\n\t0x38fd0: 0x6db45820, 0x38fd1: 0x6db45a20, 0x38fd2: 0x6db45c20, 0x38fd3: 0x6db45e20,\n\t0x38fd4: 0x6db46020, 0x38fd5: 0x6db46220, 0x38fd6: 0x6db46420, 0x38fd7: 0x6db46620,\n\t0x38fd8: 0x6db46820, 0x38fd9: 0x6db46a20, 0x38fda: 0x6db46c20, 0x38fdb: 0x6db46e20,\n\t0x38fdc: 0x6db47020, 0x38fdd: 0x6db47220, 0x38fde: 0x6db47420, 0x38fdf: 0x6db47620,\n\t0x38fe0: 0x6db47820, 0x38fe1: 0x6db47a20, 0x38fe2: 0x6db47c20, 0x38fe3: 0x6db47e20,\n\t0x38fe4: 0x6db48020, 0x38fe5: 0x6db48220, 0x38fe6: 0x6db48420, 0x38fe7: 0x6db48620,\n\t0x38fe8: 0x6db48820, 0x38fe9: 0x6db48a20, 0x38fea: 0x6db48c20, 0x38feb: 0x6db48e20,\n\t0x38fec: 0x6db49020, 0x38fed: 0x6db49220, 0x38fee: 0x6db49420, 0x38fef: 0x6db49620,\n\t0x38ff0: 0x6dcfa420, 0x38ff1: 0x6db49820, 0x38ff2: 0x6db49a20, 0x38ff3: 0x6db49c20,\n\t0x38ff4: 0x6db49e20, 0x38ff5: 0x6db4a020, 0x38ff6: 0x6db4a220, 0x38ff7: 0x6db4a420,\n\t0x38ff8: 0x6db4a620, 0x38ff9: 0x6db4a820, 0x38ffa: 0x6db4aa20, 0x38ffb: 0x6db4ac20,\n\t0x38ffc: 0x6db4ae20, 0x38ffd: 0x6db4b020, 0x38ffe: 0x6db4b220, 0x38fff: 0x6db4b420,\n\t// Block 0xe40, offset 0x39000\n\t0x39000: 0x6db4b620, 0x39001: 0x6db4b820, 0x39002: 0x6db4ba20, 0x39003: 0x6db4bc20,\n\t0x39004: 0x6dd2fa20, 0x39005: 0x6dd2fc20, 0x39006: 0x6dd2fe20, 0x39007: 0x6dd30020,\n\t0x39008: 0x6dd30220, 0x39009: 0x6dd30420, 0x3900a: 0x6dd30620, 0x3900b: 0x6dd30820,\n\t0x3900c: 0x6dd30a20, 0x3900d: 0x6dd30c20, 0x3900e: 0x6dd30e20, 0x3900f: 0x6dd31020,\n\t0x39010: 0x6dd31220, 0x39011: 0x6dd31420, 0x39012: 0x6dd31620, 0x39013: 0x6dd31820,\n\t0x39014: 0x6dd31a20, 0x39015: 0x6dd31c20, 0x39016: 0x6dd31e20, 0x39017: 0x6dd32020,\n\t0x39018: 0x6dd32220, 0x39019: 0x6dd32420, 0x3901a: 0x6dd32620, 0x3901b: 0x6dd32820,\n\t0x3901c: 0x6dd32a20, 0x3901d: 0x6dd32c20, 0x3901e: 0x6dd32e20, 0x3901f: 0x6dd33020,\n\t0x39020: 0x6dd33220, 0x39021: 0x6dd33420, 0x39022: 0x6dd33620, 0x39023: 0x6dd33820,\n\t0x39024: 0x6dd33a20, 0x39025: 0x6dd33c20, 0x39026: 0x6dd33e20, 0x39027: 0x6dd34020,\n\t0x39028: 0x6dd34220, 0x39029: 0x6dd34420, 0x3902a: 0x6dd34620, 0x3902b: 0x6dd34820,\n\t0x3902c: 0x6dd34a20, 0x3902d: 0x6dd34c20, 0x3902e: 0x6dd34e20, 0x3902f: 0x6dd35020,\n\t0x39030: 0x6dd35220, 0x39031: 0x6dd35420, 0x39032: 0x6dd35620, 0x39033: 0x6dd35820,\n\t0x39034: 0x6dd35a20, 0x39035: 0x6dd35c20, 0x39036: 0x6dd35e20, 0x39037: 0x6dd36020,\n\t0x39038: 0x6dd36220, 0x39039: 0x6dd36420, 0x3903a: 0x6dd36620, 0x3903b: 0x6dd36820,\n\t0x3903c: 0x6dd36a20, 0x3903d: 0x6dd36c20, 0x3903e: 0x6dd36e20, 0x3903f: 0x6dd37020,\n\t// Block 0xe41, offset 0x39040\n\t0x39040: 0x6dd37220, 0x39041: 0x6dd37420, 0x39042: 0x6dd37620, 0x39043: 0x6dd37820,\n\t0x39044: 0x6dd37a20, 0x39045: 0x6dd37c20, 0x39046: 0x6dd37e20, 0x39047: 0x6dd38020,\n\t0x39048: 0x6dd38220, 0x39049: 0x6dd38420, 0x3904a: 0x6dd38620, 0x3904b: 0x6dd38820,\n\t0x3904c: 0x6dd38a20, 0x3904d: 0x6dd38c20, 0x3904e: 0x6dec2620, 0x3904f: 0x6dec2820,\n\t0x39050: 0x6dec2a20, 0x39051: 0x6dec2c20, 0x39052: 0x6dec2e20, 0x39053: 0x6dec3020,\n\t0x39054: 0x6dec3220, 0x39055: 0x6dec3420, 0x39056: 0x6dec3620, 0x39057: 0x6dec3820,\n\t0x39058: 0x6dec3a20, 0x39059: 0x6dec3c20, 0x3905a: 0x6dec3e20, 0x3905b: 0x6dec4020,\n\t0x3905c: 0x6dec4220, 0x3905d: 0x6dec4420, 0x3905e: 0x6dec4620, 0x3905f: 0x6dec4820,\n\t0x39060: 0x6dec4a20, 0x39061: 0x6dec4c20, 0x39062: 0x6dec4e20, 0x39063: 0x6dec5020,\n\t0x39064: 0x6dec5220, 0x39065: 0x6dec5420, 0x39066: 0x6dec5620, 0x39067: 0x6dec5820,\n\t0x39068: 0x6dec5a20, 0x39069: 0x6dec5c20, 0x3906a: 0x6dec5e20, 0x3906b: 0x6dec6020,\n\t0x3906c: 0x6dec6220, 0x3906d: 0x6dec6420, 0x3906e: 0x6dec6620, 0x3906f: 0x6dec6820,\n\t0x39070: 0x6dec6a20, 0x39071: 0x6dec6c20, 0x39072: 0x6dec6e20, 0x39073: 0x6dec7020,\n\t0x39074: 0x6dec7220, 0x39075: 0x6dec7420, 0x39076: 0x6dec7620, 0x39077: 0x6dec7820,\n\t0x39078: 0x6dec7a20, 0x39079: 0x6dec7c20, 0x3907a: 0x6dec7e20, 0x3907b: 0x6dec8020,\n\t0x3907c: 0x6dec8220, 0x3907d: 0x6dec8420, 0x3907e: 0x6dec8620, 0x3907f: 0x6dec8820,\n\t// Block 0xe42, offset 0x39080\n\t0x39080: 0x6dec8a20, 0x39081: 0x6dec8c20, 0x39082: 0x6dec8e20, 0x39083: 0x6dec9020,\n\t0x39084: 0x6dec9220, 0x39085: 0x6dec9420, 0x39086: 0x6dec9620, 0x39087: 0x6dec9820,\n\t0x39088: 0x6dec9a20, 0x39089: 0x6e018420, 0x3908a: 0x6e018620, 0x3908b: 0x6e018820,\n\t0x3908c: 0x6e018a20, 0x3908d: 0x6e018c20, 0x3908e: 0x6e018e20, 0x3908f: 0x6e019020,\n\t0x39090: 0x6e019220, 0x39091: 0x6e019420, 0x39092: 0x6e019620, 0x39093: 0x6e019820,\n\t0x39094: 0x6e019a20, 0x39095: 0x6e019c20, 0x39096: 0x6e019e20, 0x39097: 0x6e01a020,\n\t0x39098: 0x6e01a220, 0x39099: 0x6e01a420, 0x3909a: 0x6e01a620, 0x3909b: 0x6e01a820,\n\t0x3909c: 0x6e01aa20, 0x3909d: 0x6e01ac20, 0x3909e: 0x6e01ae20, 0x3909f: 0x6e01b020,\n\t0x390a0: 0x6e01b220, 0x390a1: 0x6e01b420, 0x390a2: 0x6e01b620, 0x390a3: 0x6e01b820,\n\t0x390a4: 0x6e01ba20, 0x390a5: 0x6e01bc20, 0x390a6: 0x6e01be20, 0x390a7: 0x6e01c020,\n\t0x390a8: 0x6e01c220, 0x390a9: 0x6e01c420, 0x390aa: 0x6e01c620, 0x390ab: 0x6e01c820,\n\t0x390ac: 0x6e01ca20, 0x390ad: 0x6e01cc20, 0x390ae: 0x6e01ce20, 0x390af: 0x6e01d020,\n\t0x390b0: 0x6e01d220, 0x390b1: 0x6e136a20, 0x390b2: 0x6e136c20, 0x390b3: 0x6e136e20,\n\t0x390b4: 0x6e137020, 0x390b5: 0x6e137220, 0x390b6: 0x6e137420, 0x390b7: 0x6e137620,\n\t0x390b8: 0x6e137820, 0x390b9: 0x6e137a20, 0x390ba: 0x6e137c20, 0x390bb: 0x6e137e20,\n\t0x390bc: 0x6e138020, 0x390bd: 0x6e138220, 0x390be: 0x6e138420, 0x390bf: 0x6e138620,\n\t// Block 0xe43, offset 0x390c0\n\t0x390c0: 0x6e138820, 0x390c1: 0x6e138a20, 0x390c2: 0x6e138c20, 0x390c3: 0x6e138e20,\n\t0x390c4: 0x6e139020, 0x390c5: 0x6e139220, 0x390c6: 0x6e139420, 0x390c7: 0x6e139620,\n\t0x390c8: 0x6e139820, 0x390c9: 0x6e139a20, 0x390ca: 0x6e139c20, 0x390cb: 0x6e139e20,\n\t0x390cc: 0x6e13a020, 0x390cd: 0x6e13a220, 0x390ce: 0x6e13a420, 0x390cf: 0x6e13a620,\n\t0x390d0: 0x6e13a820, 0x390d1: 0x6e13aa20, 0x390d2: 0x6e13ac20, 0x390d3: 0x6e13ae20,\n\t0x390d4: 0x6e13b020, 0x390d5: 0x6e13b220, 0x390d6: 0x6e13b420, 0x390d7: 0x6e13b620,\n\t0x390d8: 0x6e13b820, 0x390d9: 0x6e13ba20, 0x390da: 0x6e13bc20, 0x390db: 0x6e13be20,\n\t0x390dc: 0x6e13c020, 0x390dd: 0x6e213820, 0x390de: 0x6e213a20, 0x390df: 0x6e213c20,\n\t0x390e0: 0x6e213e20, 0x390e1: 0x6e214020, 0x390e2: 0x6e214220, 0x390e3: 0x6e214420,\n\t0x390e4: 0x6e214620, 0x390e5: 0x6e214820, 0x390e6: 0x6e214a20, 0x390e7: 0x6e214c20,\n\t0x390e8: 0x6e214e20, 0x390e9: 0x6e215020, 0x390ea: 0x6e215220, 0x390eb: 0x6e215420,\n\t0x390ec: 0x6e215620, 0x390ed: 0x6e215820, 0x390ee: 0x6e215a20, 0x390ef: 0x6e215c20,\n\t0x390f0: 0x6e215e20, 0x390f1: 0x6e216020, 0x390f2: 0x6e216220, 0x390f3: 0x6e216420,\n\t0x390f4: 0x6e216620, 0x390f5: 0x6e216820, 0x390f6: 0x6e216a20, 0x390f7: 0x6e216c20,\n\t0x390f8: 0x6e216e20, 0x390f9: 0x6e217020, 0x390fa: 0x6e217220, 0x390fb: 0x6e217420,\n\t0x390fc: 0x6e217620, 0x390fd: 0x6e217820, 0x390fe: 0x6e217a20, 0x390ff: 0x6e217c20,\n\t// Block 0xe44, offset 0x39100\n\t0x39100: 0x6e217e20, 0x39101: 0x6e218020, 0x39102: 0x6e218220, 0x39103: 0x6e2bf020,\n\t0x39104: 0x6e2bf220, 0x39105: 0x6e2bf420, 0x39106: 0x6e2bf620, 0x39107: 0x6e2bf820,\n\t0x39108: 0x6e2bfa20, 0x39109: 0x6e2bfc20, 0x3910a: 0x6e2bfe20, 0x3910b: 0x6e2c0020,\n\t0x3910c: 0x6e2c0220, 0x3910d: 0x6e2c0420, 0x3910e: 0x6e2c0620, 0x3910f: 0x6e2c0820,\n\t0x39110: 0x6e2c0a20, 0x39111: 0x6e2c0c20, 0x39112: 0x6e2c0e20, 0x39113: 0x6e343220,\n\t0x39114: 0x6e2c1020, 0x39115: 0x6e2c1220, 0x39116: 0x6e2c1420, 0x39117: 0x6e2c1620,\n\t0x39118: 0x6e2c1820, 0x39119: 0x6e2c1a20, 0x3911a: 0x6e2c1c20, 0x3911b: 0x6e343420,\n\t0x3911c: 0x6e343620, 0x3911d: 0x6e343820, 0x3911e: 0x6e343a20, 0x3911f: 0x6e343c20,\n\t0x39120: 0x6e343e20, 0x39121: 0x6e344020, 0x39122: 0x6e344220, 0x39123: 0x6e344420,\n\t0x39124: 0x6e344620, 0x39125: 0x6e344820, 0x39126: 0x6e344a20, 0x39127: 0x6e344c20,\n\t0x39128: 0x6e344e20, 0x39129: 0x6e345020, 0x3912a: 0x6e345220, 0x3912b: 0x6e345420,\n\t0x3912c: 0x6e345620, 0x3912d: 0x6e345820, 0x3912e: 0x6e345a20, 0x3912f: 0x6e39ee20,\n\t0x39130: 0x6e39f020, 0x39131: 0x6e39f220, 0x39132: 0x6e39f420, 0x39133: 0x6e39f620,\n\t0x39134: 0x6e39f820, 0x39135: 0x6e39fa20, 0x39136: 0x6e39fc20, 0x39137: 0x6e39fe20,\n\t0x39138: 0x6e3a0020, 0x39139: 0x6e3a0220, 0x3913a: 0x6e3a0420, 0x3913b: 0x6e3a0620,\n\t0x3913c: 0x6e3a0820, 0x3913d: 0x6e3e1820, 0x3913e: 0x6e3e1a20, 0x3913f: 0x6e3e1c20,\n\t// Block 0xe45, offset 0x39140\n\t0x39140: 0x6e3e1e20, 0x39141: 0x6e3e2020, 0x39142: 0x6e3e2220, 0x39143: 0x6e3e2420,\n\t0x39144: 0x6e40e220, 0x39145: 0x6e40e420, 0x39146: 0x6e40e620, 0x39147: 0x6e40e820,\n\t0x39148: 0x6e40ea20, 0x39149: 0x6e40ec20, 0x3914a: 0x6e3e2620, 0x3914b: 0x6e40ee20,\n\t0x3914c: 0x6e40f020, 0x3914d: 0x6e40f220, 0x3914e: 0x6e40f420, 0x3914f: 0x6e40f620,\n\t0x39150: 0x6e40f820, 0x39151: 0x6e42fe20, 0x39152: 0x6e430020, 0x39153: 0x6e430220,\n\t0x39154: 0x6e430420, 0x39155: 0x6e430620, 0x39156: 0x6e430820, 0x39157: 0x6e430a20,\n\t0x39158: 0x6e446e20, 0x39159: 0x6e447020, 0x3915a: 0x6e447220, 0x3915b: 0x6e447420,\n\t0x3915c: 0x6e455220, 0x3915d: 0x6e455420, 0x3915e: 0x6e455620, 0x3915f: 0x6e455820,\n\t0x39160: 0x6e459020, 0x39161: 0x6e455a20, 0x39162: 0x6e45d220, 0x39163: 0x6e45d420,\n\t0x39164: 0x6e463a20, 0x39165: 0x6e463c20, 0x39166: 0x6e463e20, 0x39167: 0x6c403620,\n\t0x39168: 0x6c403820, 0x39169: 0x6c403a20, 0x3916a: 0x6c5ffc20, 0x3916b: 0x6c858820,\n\t0x3916c: 0x6c858a20, 0x3916d: 0x6c858c20, 0x3916e: 0x6c858e20, 0x3916f: 0x6c859020,\n\t0x39170: 0x6caf1e20, 0x39171: 0x6caf2020, 0x39172: 0x6caf2220, 0x39173: 0x6cde4c20,\n\t0x39174: 0x6cde4e20, 0x39175: 0x6d0cbe20, 0x39176: 0x6d0cc020, 0x39177: 0x6d0cc220,\n\t0x39178: 0x6d0cc420, 0x39179: 0x6d0cc620, 0x3917a: 0x6d3b1220, 0x3917b: 0x6d3b1420,\n\t0x3917c: 0x6d3b1620, 0x3917d: 0x6d3b1820, 0x3917e: 0x6d3b1a20, 0x3917f: 0x6d3b1c20,\n\t// Block 0xe46, offset 0x39180\n\t0x39180: 0x6d673c20, 0x39181: 0x6d673e20, 0x39182: 0x6d674020, 0x39183: 0x6d674220,\n\t0x39184: 0x6d3b1e20, 0x39185: 0x6d674420, 0x39186: 0x6d911620, 0x39187: 0x6d911820,\n\t0x39188: 0x6d911a20, 0x39189: 0x6d911c20, 0x3918a: 0x6d911e20, 0x3918b: 0x6db4c820,\n\t0x3918c: 0x6db4ca20, 0x3918d: 0x6db4cc20, 0x3918e: 0x6dd39820, 0x3918f: 0x6dd39a20,\n\t0x39190: 0x6dd39c20, 0x39191: 0x6dd39e20, 0x39192: 0x6dd3a020, 0x39193: 0x6dd3a220,\n\t0x39194: 0x6deca620, 0x39195: 0x6deca820, 0x39196: 0x6e01dc20, 0x39197: 0x6e01de20,\n\t0x39198: 0x6e13cc20, 0x39199: 0x6e218620, 0x3919a: 0x6e218820, 0x3919b: 0x6e2c1e20,\n\t0x3919c: 0x6e455c20, 0x3919d: 0x6c403c20, 0x3919e: 0x6c403e20, 0x3919f: 0x6c404020,\n\t0x391a0: 0x6c404220, 0x391a1: 0x6c600220, 0x391a2: 0x6c600420, 0x391a3: 0x6c600620,\n\t0x391a4: 0x6c600820, 0x391a5: 0x6c600a20, 0x391a6: 0x6c859820, 0x391a7: 0x6c859a20,\n\t0x391a8: 0x6c859c20, 0x391a9: 0x6c859e20, 0x391aa: 0x6caf3020, 0x391ab: 0x6cde5a20,\n\t0x391ac: 0x6cde5c20, 0x391ad: 0x6cde5e20, 0x391ae: 0x6cde6020, 0x391af: 0x6cde6220,\n\t0x391b0: 0x6cde6420, 0x391b1: 0x6cde6620, 0x391b2: 0x6d0ccc20, 0x391b3: 0x6d0cce20,\n\t0x391b4: 0x6d0cd020, 0x391b5: 0x6d0cd220, 0x391b6: 0x6d0cd420, 0x391b7: 0x6d0cd620,\n\t0x391b8: 0x6d3b2020, 0x391b9: 0x6d674e20, 0x391ba: 0x6d3b2220, 0x391bb: 0x6d3b2420,\n\t0x391bc: 0x6d675020, 0x391bd: 0x6d675220, 0x391be: 0x6d912e20, 0x391bf: 0x6db4d220,\n\t// Block 0xe47, offset 0x391c0\n\t0x391c0: 0x6db4d420, 0x391c1: 0x6db4d620, 0x391c2: 0x6dd3a420, 0x391c3: 0x6dd3a620,\n\t0x391c4: 0x6decaa20, 0x391c5: 0x6e13ce20, 0x391c6: 0x6e218a20, 0x391c7: 0x6c0a6220,\n\t0x391c8: 0x6c269020, 0x391c9: 0x6c269220, 0x391ca: 0x6c269420, 0x391cb: 0x6c269620,\n\t0x391cc: 0x6c269820, 0x391cd: 0x6c404c20, 0x391ce: 0x6c404e20, 0x391cf: 0x6c405020,\n\t0x391d0: 0x6c405220, 0x391d1: 0x6c405420, 0x391d2: 0x6c405620, 0x391d3: 0x6c405820,\n\t0x391d4: 0x6c405a20, 0x391d5: 0x6c405c20, 0x391d6: 0x6c405e20, 0x391d7: 0x6c406020,\n\t0x391d8: 0x6c406220, 0x391d9: 0x6c406420, 0x391da: 0x6c406620, 0x391db: 0x6c406820,\n\t0x391dc: 0x6c406a20, 0x391dd: 0x6c601e20, 0x391de: 0x6c602020, 0x391df: 0x6c602220,\n\t0x391e0: 0x6c602420, 0x391e1: 0x6c602620, 0x391e2: 0x6c602820, 0x391e3: 0x6c602a20,\n\t0x391e4: 0x6c602c20, 0x391e5: 0x6c602e20, 0x391e6: 0x6c603020, 0x391e7: 0x6c603220,\n\t0x391e8: 0x6c603420, 0x391e9: 0x6c603620, 0x391ea: 0x6c603820, 0x391eb: 0x6c603a20,\n\t0x391ec: 0x6c603c20, 0x391ed: 0x6c603e20, 0x391ee: 0x6c604020, 0x391ef: 0x6c604220,\n\t0x391f0: 0x6c604420, 0x391f1: 0x6c604620, 0x391f2: 0x6c604820, 0x391f3: 0x6c604a20,\n\t0x391f4: 0x6c604c20, 0x391f5: 0x6c604e20, 0x391f6: 0x6c605020, 0x391f7: 0x6c605220,\n\t0x391f8: 0x6c605420, 0x391f9: 0x6c605620, 0x391fa: 0x6c605820, 0x391fb: 0x6c605a20,\n\t0x391fc: 0x6c605c20, 0x391fd: 0x6c85dc20, 0x391fe: 0x6caf9220, 0x391ff: 0x6c85de20,\n\t// Block 0xe48, offset 0x39200\n\t0x39200: 0x6c85e020, 0x39201: 0x6c85e220, 0x39202: 0x6c85e420, 0x39203: 0x6c85e620,\n\t0x39204: 0x6c85e820, 0x39205: 0x6c85ea20, 0x39206: 0x6c85ec20, 0x39207: 0x6c85ee20,\n\t0x39208: 0x6c85f020, 0x39209: 0x6c85f220, 0x3920a: 0x6c85f420, 0x3920b: 0x6c85f620,\n\t0x3920c: 0x6c85f820, 0x3920d: 0x6c85fa20, 0x3920e: 0x6c85fc20, 0x3920f: 0x6c85fe20,\n\t0x39210: 0x6c860020, 0x39211: 0x6c860220, 0x39212: 0x6c860420, 0x39213: 0x6c860620,\n\t0x39214: 0x6c860820, 0x39215: 0x6c860a20, 0x39216: 0x6c860c20, 0x39217: 0x6c860e20,\n\t0x39218: 0x6c861020, 0x39219: 0x6c861220, 0x3921a: 0x6c861420, 0x3921b: 0x6c861620,\n\t0x3921c: 0x6c861820, 0x3921d: 0x6c861a20, 0x3921e: 0x6caf9420, 0x3921f: 0x6caf9620,\n\t0x39220: 0x6caf9820, 0x39221: 0x6caf9a20, 0x39222: 0x6caf9c20, 0x39223: 0x6caf9e20,\n\t0x39224: 0x6cafa020, 0x39225: 0x6cafa220, 0x39226: 0x6cafa420, 0x39227: 0x6cafa620,\n\t0x39228: 0x6cafa820, 0x39229: 0x6cafaa20, 0x3922a: 0x6cafac20, 0x3922b: 0x6cafae20,\n\t0x3922c: 0x6cafb020, 0x3922d: 0x6cafb220, 0x3922e: 0x6cafb420, 0x3922f: 0x6cafb620,\n\t0x39230: 0x6cafb820, 0x39231: 0x6cafba20, 0x39232: 0x6cafbc20, 0x39233: 0x6cafbe20,\n\t0x39234: 0x6cafc020, 0x39235: 0x6cafc220, 0x39236: 0x6cafc420, 0x39237: 0x6cafc620,\n\t0x39238: 0x6cafc820, 0x39239: 0x6cafca20, 0x3923a: 0x6cafcc20, 0x3923b: 0x6cafce20,\n\t0x3923c: 0x6cafd020, 0x3923d: 0x6cafd220, 0x3923e: 0x6cafd420, 0x3923f: 0x6cafd620,\n\t// Block 0xe49, offset 0x39240\n\t0x39240: 0x6cdeac20, 0x39241: 0x6cdeae20, 0x39242: 0x6cdeb020, 0x39243: 0x6cdeb220,\n\t0x39244: 0x6cdeb420, 0x39245: 0x6cdeb620, 0x39246: 0x6cdeb820, 0x39247: 0x6cdeba20,\n\t0x39248: 0x6cdebc20, 0x39249: 0x6cdebe20, 0x3924a: 0x6cdec020, 0x3924b: 0x6cdec220,\n\t0x3924c: 0x6cdec420, 0x3924d: 0x6cdec620, 0x3924e: 0x6cdec820, 0x3924f: 0x6cdeca20,\n\t0x39250: 0x6cdecc20, 0x39251: 0x6cdece20, 0x39252: 0x6cded020, 0x39253: 0x6cded220,\n\t0x39254: 0x6cded420, 0x39255: 0x6cded620, 0x39256: 0x6cded820, 0x39257: 0x6cdeda20,\n\t0x39258: 0x6cdedc20, 0x39259: 0x6cdede20, 0x3925a: 0x6cdee020, 0x3925b: 0x6cdee220,\n\t0x3925c: 0x6cdee420, 0x3925d: 0x6cdee620, 0x3925e: 0x6cdee820, 0x3925f: 0x6cdeea20,\n\t0x39260: 0x6cdeec20, 0x39261: 0x6cdeee20, 0x39262: 0x6cdef020, 0x39263: 0x6cdef220,\n\t0x39264: 0x6d0d1420, 0x39265: 0x6d0d1620, 0x39266: 0x6d0d1820, 0x39267: 0x6d0d1a20,\n\t0x39268: 0x6d0d1c20, 0x39269: 0x6d0d1e20, 0x3926a: 0x6d0d2020, 0x3926b: 0x6d0d2220,\n\t0x3926c: 0x6d0d2420, 0x3926d: 0x6d0d2620, 0x3926e: 0x6d0d2820, 0x3926f: 0x6d0d2a20,\n\t0x39270: 0x6d0d2c20, 0x39271: 0x6d0d2e20, 0x39272: 0x6d0d3020, 0x39273: 0x6d0d3220,\n\t0x39274: 0x6d0d3420, 0x39275: 0x6d0d3620, 0x39276: 0x6d0d3820, 0x39277: 0x6d0d3a20,\n\t0x39278: 0x6d0d3c20, 0x39279: 0x6d0d3e20, 0x3927a: 0x6d0d4020, 0x3927b: 0x6d3b8420,\n\t0x3927c: 0x6d0d4220, 0x3927d: 0x6d0d4420, 0x3927e: 0x6d0d4620, 0x3927f: 0x6d0d4820,\n\t// Block 0xe4a, offset 0x39280\n\t0x39280: 0x6d0d4a20, 0x39281: 0x6d0d4c20, 0x39282: 0x6d0d4e20, 0x39283: 0x6d0d5020,\n\t0x39284: 0x6d0d5220, 0x39285: 0x6d0d5420, 0x39286: 0x6d0d5620, 0x39287: 0x6d0d5820,\n\t0x39288: 0x6d0d5a20, 0x39289: 0x6d0d5c20, 0x3928a: 0x6d0d5e20, 0x3928b: 0x6d0d6020,\n\t0x3928c: 0x6d0d6220, 0x3928d: 0x6d0d6420, 0x3928e: 0x6d0d6620, 0x3928f: 0x6d3b8620,\n\t0x39290: 0x6d3b8820, 0x39291: 0x6d3b8a20, 0x39292: 0x6d3b8c20, 0x39293: 0x6d3b8e20,\n\t0x39294: 0x6d3b9020, 0x39295: 0x6d3b9220, 0x39296: 0x6d3b9420, 0x39297: 0x6d3b9620,\n\t0x39298: 0x6d3b9820, 0x39299: 0x6d3b9a20, 0x3929a: 0x6d3b9c20, 0x3929b: 0x6d3b9e20,\n\t0x3929c: 0x6d3ba020, 0x3929d: 0x6d3ba220, 0x3929e: 0x6d3ba420, 0x3929f: 0x6d3ba620,\n\t0x392a0: 0x6d3ba820, 0x392a1: 0x6d3baa20, 0x392a2: 0x6d3bac20, 0x392a3: 0x6d3bae20,\n\t0x392a4: 0x6d3bb020, 0x392a5: 0x6d3bb220, 0x392a6: 0x6d3bb420, 0x392a7: 0x6d3bb620,\n\t0x392a8: 0x6d3bb820, 0x392a9: 0x6d3bba20, 0x392aa: 0x6d3bbc20, 0x392ab: 0x6d3bbe20,\n\t0x392ac: 0x6d3bc020, 0x392ad: 0x6d3bc220, 0x392ae: 0x6d3bc420, 0x392af: 0x6d3bc620,\n\t0x392b0: 0x6d3bc820, 0x392b1: 0x6d3bca20, 0x392b2: 0x6d3bcc20, 0x392b3: 0x6d3bce20,\n\t0x392b4: 0x6d3bd020, 0x392b5: 0x6d3bd220, 0x392b6: 0x6d3bd420, 0x392b7: 0x6d3bd620,\n\t0x392b8: 0x6d67a020, 0x392b9: 0x6d67a220, 0x392ba: 0x6d67a420, 0x392bb: 0x6d67a620,\n\t0x392bc: 0x6d67a820, 0x392bd: 0x6d67aa20, 0x392be: 0x6d67ac20, 0x392bf: 0x6d67ae20,\n\t// Block 0xe4b, offset 0x392c0\n\t0x392c0: 0x6d67b020, 0x392c1: 0x6d67b220, 0x392c2: 0x6d67b420, 0x392c3: 0x6d67b620,\n\t0x392c4: 0x6d67b820, 0x392c5: 0x6d67ba20, 0x392c6: 0x6d67bc20, 0x392c7: 0x6d67be20,\n\t0x392c8: 0x6d67c020, 0x392c9: 0x6d67c220, 0x392ca: 0x6d67c420, 0x392cb: 0x6d67c620,\n\t0x392cc: 0x6d67c820, 0x392cd: 0x6d67ca20, 0x392ce: 0x6d67cc20, 0x392cf: 0x6d67ce20,\n\t0x392d0: 0x6d67d020, 0x392d1: 0x6d67d220, 0x392d2: 0x6d67d420, 0x392d3: 0x6d67d620,\n\t0x392d4: 0x6d67d820, 0x392d5: 0x6d67da20, 0x392d6: 0x6d67dc20, 0x392d7: 0x6d67de20,\n\t0x392d8: 0x6d67e020, 0x392d9: 0x6d67e220, 0x392da: 0x6d67e420, 0x392db: 0x6d67e620,\n\t0x392dc: 0x6d67e820, 0x392dd: 0x6d916820, 0x392de: 0x6d916a20, 0x392df: 0x6d916c20,\n\t0x392e0: 0x6d916e20, 0x392e1: 0x6d917020, 0x392e2: 0x6d917220, 0x392e3: 0x6d917420,\n\t0x392e4: 0x6d917620, 0x392e5: 0x6d917820, 0x392e6: 0x6d917a20, 0x392e7: 0x6d917c20,\n\t0x392e8: 0x6d67ea20, 0x392e9: 0x6d917e20, 0x392ea: 0x6d918020, 0x392eb: 0x6d918220,\n\t0x392ec: 0x6d918420, 0x392ed: 0x6db51820, 0x392ee: 0x6d918620, 0x392ef: 0x6d918820,\n\t0x392f0: 0x6d918a20, 0x392f1: 0x6d918c20, 0x392f2: 0x6d918e20, 0x392f3: 0x6d919020,\n\t0x392f4: 0x6d919220, 0x392f5: 0x6d919420, 0x392f6: 0x6d919620, 0x392f7: 0x6d919820,\n\t0x392f8: 0x6d919a20, 0x392f9: 0x6d919c20, 0x392fa: 0x6d919e20, 0x392fb: 0x6d91a020,\n\t0x392fc: 0x6d91a220, 0x392fd: 0x6d91a420, 0x392fe: 0x6d91a620, 0x392ff: 0x6d91a820,\n\t// Block 0xe4c, offset 0x39300\n\t0x39300: 0x6d91aa20, 0x39301: 0x6d91ac20, 0x39302: 0x6db51a20, 0x39303: 0x6db51c20,\n\t0x39304: 0x6db51e20, 0x39305: 0x6db52020, 0x39306: 0x6db52220, 0x39307: 0x6db52420,\n\t0x39308: 0x6db52620, 0x39309: 0x6db52820, 0x3930a: 0x6db52a20, 0x3930b: 0x6db52c20,\n\t0x3930c: 0x6db52e20, 0x3930d: 0x6db53020, 0x3930e: 0x6db53220, 0x3930f: 0x6db53420,\n\t0x39310: 0x6db53620, 0x39311: 0x6db53820, 0x39312: 0x6db53a20, 0x39313: 0x6db53c20,\n\t0x39314: 0x6db53e20, 0x39315: 0x6db54020, 0x39316: 0x6db54220, 0x39317: 0x6db54420,\n\t0x39318: 0x6db54620, 0x39319: 0x6db54820, 0x3931a: 0x6db54a20, 0x3931b: 0x6db54c20,\n\t0x3931c: 0x6db54e20, 0x3931d: 0x6db55020, 0x3931e: 0x6db55220, 0x3931f: 0x6db55420,\n\t0x39320: 0x6db55620, 0x39321: 0x6db55820, 0x39322: 0x6db55a20, 0x39323: 0x6db55c20,\n\t0x39324: 0x6db55e20, 0x39325: 0x6db56020, 0x39326: 0x6db56220, 0x39327: 0x6db56420,\n\t0x39328: 0x6db56620, 0x39329: 0x6db56820, 0x3932a: 0x6db56a20, 0x3932b: 0x6db56c20,\n\t0x3932c: 0x6db56e20, 0x3932d: 0x6db57020, 0x3932e: 0x6db57220, 0x3932f: 0x6db57420,\n\t0x39330: 0x6db57620, 0x39331: 0x6dd3d220, 0x39332: 0x6dd3d420, 0x39333: 0x6dd3d620,\n\t0x39334: 0x6dd3d820, 0x39335: 0x6dd3da20, 0x39336: 0x6dd3dc20, 0x39337: 0x6dd3de20,\n\t0x39338: 0x6dd3e020, 0x39339: 0x6dd3e220, 0x3933a: 0x6dd3e420, 0x3933b: 0x6dd3e620,\n\t0x3933c: 0x6dd3e820, 0x3933d: 0x6dd3ea20, 0x3933e: 0x6dd3ec20, 0x3933f: 0x6dd3ee20,\n\t// Block 0xe4d, offset 0x39340\n\t0x39340: 0x6dd3f020, 0x39341: 0x6dd3f220, 0x39342: 0x6dd3f420, 0x39343: 0x6dd3f620,\n\t0x39344: 0x6dd3f820, 0x39345: 0x6dd3fa20, 0x39346: 0x6dd3fc20, 0x39347: 0x6dd3fe20,\n\t0x39348: 0x6dd40020, 0x39349: 0x6dd40220, 0x3934a: 0x6dd40420, 0x3934b: 0x6dd40620,\n\t0x3934c: 0x6dd40820, 0x3934d: 0x6decca20, 0x3934e: 0x6deccc20, 0x3934f: 0x6decce20,\n\t0x39350: 0x6decd020, 0x39351: 0x6decd220, 0x39352: 0x6decd420, 0x39353: 0x6decd620,\n\t0x39354: 0x6decd820, 0x39355: 0x6decda20, 0x39356: 0x6decdc20, 0x39357: 0x6e01f820,\n\t0x39358: 0x6decde20, 0x39359: 0x6dece020, 0x3935a: 0x6dece220, 0x3935b: 0x6dece420,\n\t0x3935c: 0x6dece620, 0x3935d: 0x6dece820, 0x3935e: 0x6decea20, 0x3935f: 0x6decec20,\n\t0x39360: 0x6decee20, 0x39361: 0x6decf020, 0x39362: 0x6decf220, 0x39363: 0x6decf420,\n\t0x39364: 0x6decf620, 0x39365: 0x6decf820, 0x39366: 0x6decfa20, 0x39367: 0x6e01fa20,\n\t0x39368: 0x6e01fc20, 0x39369: 0x6e01fe20, 0x3936a: 0x6e020020, 0x3936b: 0x6e020220,\n\t0x3936c: 0x6e020420, 0x3936d: 0x6e020620, 0x3936e: 0x6e020820, 0x3936f: 0x6e020a20,\n\t0x39370: 0x6e020c20, 0x39371: 0x6e020e20, 0x39372: 0x6e13de20, 0x39373: 0x6e021020,\n\t0x39374: 0x6e021220, 0x39375: 0x6e021420, 0x39376: 0x6e13e020, 0x39377: 0x6e13e220,\n\t0x39378: 0x6e13e420, 0x39379: 0x6e13e620, 0x3937a: 0x6e13e820, 0x3937b: 0x6e13ea20,\n\t0x3937c: 0x6e13ec20, 0x3937d: 0x6e13ee20, 0x3937e: 0x6e13f020, 0x3937f: 0x6e13f220,\n\t// Block 0xe4e, offset 0x39380\n\t0x39380: 0x6e13f420, 0x39381: 0x6e13f620, 0x39382: 0x6e13f820, 0x39383: 0x6e219620,\n\t0x39384: 0x6e219820, 0x39385: 0x6e219a20, 0x39386: 0x6e219c20, 0x39387: 0x6e219e20,\n\t0x39388: 0x6e2c2c20, 0x39389: 0x6e2c2e20, 0x3938a: 0x6e2c3020, 0x3938b: 0x6e2c3220,\n\t0x3938c: 0x6e346820, 0x3938d: 0x6e346a20, 0x3938e: 0x6e346c20, 0x3938f: 0x6e346e20,\n\t0x39390: 0x6e3a1620, 0x39391: 0x6e3a1820, 0x39392: 0x6e3a1a20, 0x39393: 0x6e3a1c20,\n\t0x39394: 0x6e3a1e20, 0x39395: 0x6e3e2820, 0x39396: 0x6e3e2a20, 0x39397: 0x6e3e2c20,\n\t0x39398: 0x6e410020, 0x39399: 0x6e447820, 0x3939a: 0x6e447a20, 0x3939b: 0x6e45d620,\n\t0x3939c: 0x6e468e20, 0x3939d: 0x6e469020, 0x3939e: 0x6e470420, 0x3939f: 0x6e470620,\n\t0x393a0: 0x6c269a20, 0x393a1: 0x6c269c20, 0x393a2: 0x6c269e20, 0x393a3: 0x6c406c20,\n\t0x393a4: 0x6c606820, 0x393a5: 0x6c606a20, 0x393a6: 0x6c606c20, 0x393a7: 0x6c862420,\n\t0x393a8: 0x6c862620, 0x393a9: 0x6c862820, 0x393aa: 0x6cafe620, 0x393ab: 0x6cafe820,\n\t0x393ac: 0x6cafea20, 0x393ad: 0x6cdf0220, 0x393ae: 0x6cdf0420, 0x393af: 0x6d0d7820,\n\t0x393b0: 0x6d0d7a20, 0x393b1: 0x6d3bdc20, 0x393b2: 0x6d3bde20, 0x393b3: 0x6d3be020,\n\t0x393b4: 0x6d3be220, 0x393b5: 0x6d3be420, 0x393b6: 0x6d3be620, 0x393b7: 0x6d3be820,\n\t0x393b8: 0x6d3bea20, 0x393b9: 0x6d67f220, 0x393ba: 0x6d67f420, 0x393bb: 0x6d67f620,\n\t0x393bc: 0x6d91ba20, 0x393bd: 0x6d91bc20, 0x393be: 0x6d91be20, 0x393bf: 0x6db57e20,\n\t// Block 0xe4f, offset 0x393c0\n\t0x393c0: 0x6dd41020, 0x393c1: 0x6dd41220, 0x393c2: 0x6ded0220, 0x393c3: 0x6e021820,\n\t0x393c4: 0x6e13fa20, 0x393c5: 0x6e3a2220, 0x393c6: 0x6c406e20, 0x393c7: 0x6c407020,\n\t0x393c8: 0x6c607020, 0x393c9: 0x6c863220, 0x393ca: 0x6c863420, 0x393cb: 0x6c863620,\n\t0x393cc: 0x6c863820, 0x393cd: 0x6c863a20, 0x393ce: 0x6cb00020, 0x393cf: 0x6cb00220,\n\t0x393d0: 0x6cb00420, 0x393d1: 0x6cb00620, 0x393d2: 0x6cb00820, 0x393d3: 0x6cb00a20,\n\t0x393d4: 0x6cb00c20, 0x393d5: 0x6cb00e20, 0x393d6: 0x6cb01020, 0x393d7: 0x6cb01220,\n\t0x393d8: 0x6cb01420, 0x393d9: 0x6cb01620, 0x393da: 0x6cb01820, 0x393db: 0x6cb01a20,\n\t0x393dc: 0x6cdf1a20, 0x393dd: 0x6cdf1c20, 0x393de: 0x6cdf1e20, 0x393df: 0x6cdf2020,\n\t0x393e0: 0x6cdf2220, 0x393e1: 0x6cdf2420, 0x393e2: 0x6cdf2620, 0x393e3: 0x6cdf2820,\n\t0x393e4: 0x6cdf2a20, 0x393e5: 0x6cdf2c20, 0x393e6: 0x6cdf2e20, 0x393e7: 0x6cdf3020,\n\t0x393e8: 0x6d0d8420, 0x393e9: 0x6d0d8620, 0x393ea: 0x6d0d8820, 0x393eb: 0x6d0d8a20,\n\t0x393ec: 0x6d0d8c20, 0x393ed: 0x6d0d8e20, 0x393ee: 0x6d0d9020, 0x393ef: 0x6d0d9220,\n\t0x393f0: 0x6d0d9420, 0x393f1: 0x6d0d9620, 0x393f2: 0x6d0d9820, 0x393f3: 0x6d0d9a20,\n\t0x393f4: 0x6d0d9c20, 0x393f5: 0x6d0d9e20, 0x393f6: 0x6d0da020, 0x393f7: 0x6d0da220,\n\t0x393f8: 0x6d0da420, 0x393f9: 0x6d0da620, 0x393fa: 0x6d0da820, 0x393fb: 0x6d3bfa20,\n\t0x393fc: 0x6d3bfc20, 0x393fd: 0x6d3bfe20, 0x393fe: 0x6d3c0020, 0x393ff: 0x6d3c0220,\n\t// Block 0xe50, offset 0x39400\n\t0x39400: 0x6d3c0420, 0x39401: 0x6d3c0620, 0x39402: 0x6d3c0820, 0x39403: 0x6d3c0a20,\n\t0x39404: 0x6d3c0c20, 0x39405: 0x6d3c0e20, 0x39406: 0x6d3c1020, 0x39407: 0x6d3c1220,\n\t0x39408: 0x6d3c1420, 0x39409: 0x6d3c1620, 0x3940a: 0x6d3c1820, 0x3940b: 0x6d680420,\n\t0x3940c: 0x6d680620, 0x3940d: 0x6d680820, 0x3940e: 0x6d680a20, 0x3940f: 0x6d680c20,\n\t0x39410: 0x6d680e20, 0x39411: 0x6d681020, 0x39412: 0x6d681220, 0x39413: 0x6d681420,\n\t0x39414: 0x6d681620, 0x39415: 0x6d681820, 0x39416: 0x6d681a20, 0x39417: 0x6d681c20,\n\t0x39418: 0x6d681e20, 0x39419: 0x6d682020, 0x3941a: 0x6d682220, 0x3941b: 0x6d682420,\n\t0x3941c: 0x6d682620, 0x3941d: 0x6d682820, 0x3941e: 0x6d682a20, 0x3941f: 0x6d682c20,\n\t0x39420: 0x6d682e20, 0x39421: 0x6d91d220, 0x39422: 0x6d91d420, 0x39423: 0x6d91d620,\n\t0x39424: 0x6d91d820, 0x39425: 0x6d91da20, 0x39426: 0x6d91dc20, 0x39427: 0x6d91de20,\n\t0x39428: 0x6d91e020, 0x39429: 0x6d91e220, 0x3942a: 0x6d91e420, 0x3942b: 0x6d91e620,\n\t0x3942c: 0x6d91e820, 0x3942d: 0x6d91ea20, 0x3942e: 0x6d91ec20, 0x3942f: 0x6d91ee20,\n\t0x39430: 0x6d91f020, 0x39431: 0x6d91f220, 0x39432: 0x6d91f420, 0x39433: 0x6d91f620,\n\t0x39434: 0x6d91f820, 0x39435: 0x6d91fa20, 0x39436: 0x6d91fc20, 0x39437: 0x6db59020,\n\t0x39438: 0x6db59220, 0x39439: 0x6db59420, 0x3943a: 0x6db59620, 0x3943b: 0x6db59820,\n\t0x3943c: 0x6db59a20, 0x3943d: 0x6db59c20, 0x3943e: 0x6db59e20, 0x3943f: 0x6db5a020,\n\t// Block 0xe51, offset 0x39440\n\t0x39440: 0x6db5a220, 0x39441: 0x6db5a420, 0x39442: 0x6dd42020, 0x39443: 0x6dd42220,\n\t0x39444: 0x6dd42420, 0x39445: 0x6dd42620, 0x39446: 0x6dd42820, 0x39447: 0x6dd42a20,\n\t0x39448: 0x6dd42c20, 0x39449: 0x6dd42e20, 0x3944a: 0x6dd43020, 0x3944b: 0x6dd43220,\n\t0x3944c: 0x6ded1820, 0x3944d: 0x6ded1a20, 0x3944e: 0x6ded1c20, 0x3944f: 0x6ded1e20,\n\t0x39450: 0x6ded2020, 0x39451: 0x6ded2220, 0x39452: 0x6e022020, 0x39453: 0x6e022220,\n\t0x39454: 0x6e022420, 0x39455: 0x6e022620, 0x39456: 0x6e022820, 0x39457: 0x6e022a20,\n\t0x39458: 0x6e140220, 0x39459: 0x6e140420, 0x3945a: 0x6e140620, 0x3945b: 0x6e140820,\n\t0x3945c: 0x6e21a820, 0x3945d: 0x6e21aa20, 0x3945e: 0x6e21ac20, 0x3945f: 0x6e21ae20,\n\t0x39460: 0x6e21b020, 0x39461: 0x6e21b220, 0x39462: 0x6e347020, 0x39463: 0x6e347220,\n\t0x39464: 0x6e347420, 0x39465: 0x6e347620, 0x39466: 0x6e3a2620, 0x39467: 0x6e3a2820,\n\t0x39468: 0x6e3a2a20, 0x39469: 0x6e3a2c20, 0x3946a: 0x6e3a2e20, 0x3946b: 0x6e3a3020,\n\t0x3946c: 0x6e3e3020, 0x3946d: 0x6e410220, 0x3946e: 0x6e430c20, 0x3946f: 0x6e46b420,\n\t0x39470: 0x6e470820, 0x39471: 0x6e473020, 0x39472: 0x6c26a820, 0x39473: 0x6c407620,\n\t0x39474: 0x6c608020, 0x39475: 0x6c608220, 0x39476: 0x6c608420, 0x39477: 0x6c864220,\n\t0x39478: 0x6c864420, 0x39479: 0x6c864620, 0x3947a: 0x6c864820, 0x3947b: 0x6cb02a20,\n\t0x3947c: 0x6cb02c20, 0x3947d: 0x6cb02e20, 0x3947e: 0x6cb03020, 0x3947f: 0x6cb03220,\n\t// Block 0xe52, offset 0x39480\n\t0x39480: 0x6cb03420, 0x39481: 0x6cb03620, 0x39482: 0x6cb03820, 0x39483: 0x6cb03a20,\n\t0x39484: 0x6cb03c20, 0x39485: 0x6cb03e20, 0x39486: 0x6cb04020, 0x39487: 0x6cb04220,\n\t0x39488: 0x6cb04420, 0x39489: 0x6cb04620, 0x3948a: 0x6cb04820, 0x3948b: 0x6cb04a20,\n\t0x3948c: 0x6cb04c20, 0x3948d: 0x6cb04e20, 0x3948e: 0x6cb05020, 0x3948f: 0x6cb05220,\n\t0x39490: 0x6cb05420, 0x39491: 0x6cdf4020, 0x39492: 0x6cdf4220, 0x39493: 0x6cdf4420,\n\t0x39494: 0x6cdf4620, 0x39495: 0x6cdf4820, 0x39496: 0x6cdf4a20, 0x39497: 0x6cdf4c20,\n\t0x39498: 0x6cdf4e20, 0x39499: 0x6cdf5020, 0x3949a: 0x6cdf5220, 0x3949b: 0x6cdf5420,\n\t0x3949c: 0x6cdf5620, 0x3949d: 0x6cdf5820, 0x3949e: 0x6cdf5a20, 0x3949f: 0x6cdf5c20,\n\t0x394a0: 0x6cdf5e20, 0x394a1: 0x6d0dca20, 0x394a2: 0x6d0dcc20, 0x394a3: 0x6d0dce20,\n\t0x394a4: 0x6d0dd020, 0x394a5: 0x6d0dd220, 0x394a6: 0x6d0dd420, 0x394a7: 0x6d0dd620,\n\t0x394a8: 0x6d3c2a20, 0x394a9: 0x6d3c2c20, 0x394aa: 0x6d3c2e20, 0x394ab: 0x6d3c3020,\n\t0x394ac: 0x6d3c3220, 0x394ad: 0x6d3c3420, 0x394ae: 0x6d3c3620, 0x394af: 0x6d3c3820,\n\t0x394b0: 0x6d3c3a20, 0x394b1: 0x6d3c3c20, 0x394b2: 0x6d3c3e20, 0x394b3: 0x6d3c4020,\n\t0x394b4: 0x6d684c20, 0x394b5: 0x6d684e20, 0x394b6: 0x6d685020, 0x394b7: 0x6d685220,\n\t0x394b8: 0x6d685420, 0x394b9: 0x6d685620, 0x394ba: 0x6d685820, 0x394bb: 0x6d685a20,\n\t0x394bc: 0x6d685c20, 0x394bd: 0x6d685e20, 0x394be: 0x6d686020, 0x394bf: 0x6d686220,\n\t// Block 0xe53, offset 0x394c0\n\t0x394c0: 0x6d686420, 0x394c1: 0x6d686620, 0x394c2: 0x6d686820, 0x394c3: 0x6d686a20,\n\t0x394c4: 0x6d686c20, 0x394c5: 0x6d686e20, 0x394c6: 0x6d687020, 0x394c7: 0x6d687220,\n\t0x394c8: 0x6d687420, 0x394c9: 0x6d687620, 0x394ca: 0x6d687820, 0x394cb: 0x6d920c20,\n\t0x394cc: 0x6d920e20, 0x394cd: 0x6d921020, 0x394ce: 0x6d921220, 0x394cf: 0x6d921420,\n\t0x394d0: 0x6d921620, 0x394d1: 0x6d921820, 0x394d2: 0x6d921a20, 0x394d3: 0x6d921c20,\n\t0x394d4: 0x6d921e20, 0x394d5: 0x6d922020, 0x394d6: 0x6d922220, 0x394d7: 0x6d922420,\n\t0x394d8: 0x6d922620, 0x394d9: 0x6d922820, 0x394da: 0x6d922a20, 0x394db: 0x6db5b020,\n\t0x394dc: 0x6db5b220, 0x394dd: 0x6db5b420, 0x394de: 0x6db5b620, 0x394df: 0x6db5b820,\n\t0x394e0: 0x6db5ba20, 0x394e1: 0x6db5bc20, 0x394e2: 0x6d922c20, 0x394e3: 0x6db5be20,\n\t0x394e4: 0x6db5c020, 0x394e5: 0x6db5c220, 0x394e6: 0x6db5c420, 0x394e7: 0x6db5c620,\n\t0x394e8: 0x6db5c820, 0x394e9: 0x6db5ca20, 0x394ea: 0x6db5cc20, 0x394eb: 0x6db5ce20,\n\t0x394ec: 0x6db5d020, 0x394ed: 0x6db5d220, 0x394ee: 0x6db5d420, 0x394ef: 0x6dd43c20,\n\t0x394f0: 0x6dd43e20, 0x394f1: 0x6dd44020, 0x394f2: 0x6dd44220, 0x394f3: 0x6dd44420,\n\t0x394f4: 0x6dd44620, 0x394f5: 0x6dd44820, 0x394f6: 0x6dd44a20, 0x394f7: 0x6dd44c20,\n\t0x394f8: 0x6dd44e20, 0x394f9: 0x6dd45020, 0x394fa: 0x6ded2e20, 0x394fb: 0x6ded3020,\n\t0x394fc: 0x6ded3220, 0x394fd: 0x6ded3420, 0x394fe: 0x6ded3620, 0x394ff: 0x6ded3820,\n\t// Block 0xe54, offset 0x39500\n\t0x39500: 0x6ded3a20, 0x39501: 0x6ded3c20, 0x39502: 0x6ded3e20, 0x39503: 0x6ded4020,\n\t0x39504: 0x6e023820, 0x39505: 0x6e023a20, 0x39506: 0x6e023c20, 0x39507: 0x6e023e20,\n\t0x39508: 0x6e140c20, 0x39509: 0x6e140e20, 0x3950a: 0x6e141020, 0x3950b: 0x6e141220,\n\t0x3950c: 0x6e21b820, 0x3950d: 0x6e21ba20, 0x3950e: 0x6e21bc20, 0x3950f: 0x6e21be20,\n\t0x39510: 0x6e21c020, 0x39511: 0x6e2c4020, 0x39512: 0x6e2c4220, 0x39513: 0x6e347820,\n\t0x39514: 0x6e347a20, 0x39515: 0x6e3a3a20, 0x39516: 0x6e3e3220, 0x39517: 0x6e430e20,\n\t0x39518: 0x6e431020, 0x39519: 0x6e447c20, 0x3951a: 0x6e447e20, 0x3951b: 0x6c26ae20,\n\t0x3951c: 0x6c26b020, 0x3951d: 0x6c407820, 0x3951e: 0x6c407a20, 0x3951f: 0x6c407c20,\n\t0x39520: 0x6c609a20, 0x39521: 0x6c867220, 0x39522: 0x6c867420, 0x39523: 0x6c867620,\n\t0x39524: 0x6c867820, 0x39525: 0x6c867a20, 0x39526: 0x6c867c20, 0x39527: 0x6c867e20,\n\t0x39528: 0x6c868020, 0x39529: 0x6c868220, 0x3952a: 0x6c868420, 0x3952b: 0x6c868620,\n\t0x3952c: 0x6c868820, 0x3952d: 0x6c868a20, 0x3952e: 0x6cb0aa20, 0x3952f: 0x6cb0ac20,\n\t0x39530: 0x6cb0ae20, 0x39531: 0x6cb0b020, 0x39532: 0x6cb0b220, 0x39533: 0x6cb0b420,\n\t0x39534: 0x6cb0b620, 0x39535: 0x6cb0b820, 0x39536: 0x6cb0ba20, 0x39537: 0x6cb0bc20,\n\t0x39538: 0x6cb0be20, 0x39539: 0x6cb0c020, 0x3953a: 0x6cb0c220, 0x3953b: 0x6cb0c420,\n\t0x3953c: 0x6cb0c620, 0x3953d: 0x6cb0c820, 0x3953e: 0x6cb0ca20, 0x3953f: 0x6cb0cc20,\n\t// Block 0xe55, offset 0x39540\n\t0x39540: 0x6cb0ce20, 0x39541: 0x6cb0d020, 0x39542: 0x6cb0d220, 0x39543: 0x6cb0d420,\n\t0x39544: 0x6cb0d620, 0x39545: 0x6cb0d820, 0x39546: 0x6cb0da20, 0x39547: 0x6cb0dc20,\n\t0x39548: 0x6cb0de20, 0x39549: 0x6cb0e020, 0x3954a: 0x6cb0e220, 0x3954b: 0x6cb0e420,\n\t0x3954c: 0x6cb0e620, 0x3954d: 0x6cb0e820, 0x3954e: 0x6cb0ea20, 0x3954f: 0x6cb0ec20,\n\t0x39550: 0x6cb0ee20, 0x39551: 0x6cb0f020, 0x39552: 0x6cb0f220, 0x39553: 0x6cb0f420,\n\t0x39554: 0x6cb0f620, 0x39555: 0x6cb0f820, 0x39556: 0x6cb0fa20, 0x39557: 0x6cb0fc20,\n\t0x39558: 0x6cb0fe20, 0x39559: 0x6cb10020, 0x3955a: 0x6cb10220, 0x3955b: 0x6cb10420,\n\t0x3955c: 0x6cdfd620, 0x3955d: 0x6cdfd820, 0x3955e: 0x6cdfda20, 0x3955f: 0x6cdfdc20,\n\t0x39560: 0x6cdfde20, 0x39561: 0x6cdfe020, 0x39562: 0x6cdfe220, 0x39563: 0x6cdfe420,\n\t0x39564: 0x6cdfe620, 0x39565: 0x6cdfe820, 0x39566: 0x6cdfea20, 0x39567: 0x6cdfec20,\n\t0x39568: 0x6cdfee20, 0x39569: 0x6cdff020, 0x3956a: 0x6cdff220, 0x3956b: 0x6cdff420,\n\t0x3956c: 0x6cdff620, 0x3956d: 0x6cdff820, 0x3956e: 0x6cdffa20, 0x3956f: 0x6cdffc20,\n\t0x39570: 0x6cdffe20, 0x39571: 0x6ce00020, 0x39572: 0x6ce00220, 0x39573: 0x6ce00420,\n\t0x39574: 0x6ce00620, 0x39575: 0x6ce00820, 0x39576: 0x6ce00a20, 0x39577: 0x6ce00c20,\n\t0x39578: 0x6ce00e20, 0x39579: 0x6ce01020, 0x3957a: 0x6ce01220, 0x3957b: 0x6ce01420,\n\t0x3957c: 0x6ce01620, 0x3957d: 0x6ce01820, 0x3957e: 0x6ce01a20, 0x3957f: 0x6ce01c20,\n\t// Block 0xe56, offset 0x39580\n\t0x39580: 0x6ce01e20, 0x39581: 0x6ce02020, 0x39582: 0x6ce02220, 0x39583: 0x6d0e4a20,\n\t0x39584: 0x6d0e4c20, 0x39585: 0x6d0e4e20, 0x39586: 0x6d0e5020, 0x39587: 0x6d0e5220,\n\t0x39588: 0x6d0e5420, 0x39589: 0x6d0e5620, 0x3958a: 0x6d0e5820, 0x3958b: 0x6d0e5a20,\n\t0x3958c: 0x6d0e5c20, 0x3958d: 0x6d0e5e20, 0x3958e: 0x6d0e6020, 0x3958f: 0x6d0e6220,\n\t0x39590: 0x6d0e6420, 0x39591: 0x6d0e6620, 0x39592: 0x6d0e6820, 0x39593: 0x6d0e6a20,\n\t0x39594: 0x6d0e6c20, 0x39595: 0x6d0e6e20, 0x39596: 0x6d0e7020, 0x39597: 0x6d0e7220,\n\t0x39598: 0x6d0e7420, 0x39599: 0x6d0e7620, 0x3959a: 0x6d0e7820, 0x3959b: 0x6d0e7a20,\n\t0x3959c: 0x6d0e7c20, 0x3959d: 0x6d0e7e20, 0x3959e: 0x6d0e8020, 0x3959f: 0x6d0e8220,\n\t0x395a0: 0x6d0e8420, 0x395a1: 0x6d0e8620, 0x395a2: 0x6d0e8820, 0x395a3: 0x6d0e8a20,\n\t0x395a4: 0x6d0e8c20, 0x395a5: 0x6d0e8e20, 0x395a6: 0x6d0e9020, 0x395a7: 0x6d0e9220,\n\t0x395a8: 0x6d0e9420, 0x395a9: 0x6d0e9620, 0x395aa: 0x6d0e9820, 0x395ab: 0x6d0e9a20,\n\t0x395ac: 0x6d0e9c20, 0x395ad: 0x6d0e9e20, 0x395ae: 0x6d0ea020, 0x395af: 0x6d0ea220,\n\t0x395b0: 0x6d0ea420, 0x395b1: 0x6d0ea620, 0x395b2: 0x6d0ea820, 0x395b3: 0x6d0eaa20,\n\t0x395b4: 0x6d3c9e20, 0x395b5: 0x6d3ca020, 0x395b6: 0x6d3ca220, 0x395b7: 0x6d3ca420,\n\t0x395b8: 0x6d3ca620, 0x395b9: 0x6d3ca820, 0x395ba: 0x6d3caa20, 0x395bb: 0x6d3cac20,\n\t0x395bc: 0x6d3cae20, 0x395bd: 0x6d3cb020, 0x395be: 0x6d3cb220, 0x395bf: 0x6d3cb420,\n\t// Block 0xe57, offset 0x395c0\n\t0x395c0: 0x6d3cb620, 0x395c1: 0x6d3cb820, 0x395c2: 0x6d3cba20, 0x395c3: 0x6d3cbc20,\n\t0x395c4: 0x6d3cbe20, 0x395c5: 0x6d3cc020, 0x395c6: 0x6d3cc220, 0x395c7: 0x6d3cc420,\n\t0x395c8: 0x6d3cc620, 0x395c9: 0x6d3cc820, 0x395ca: 0x6d3cca20, 0x395cb: 0x6d3ccc20,\n\t0x395cc: 0x6d3cce20, 0x395cd: 0x6d3cd020, 0x395ce: 0x6d3cd220, 0x395cf: 0x6d3cd420,\n\t0x395d0: 0x6d3cd620, 0x395d1: 0x6d3cd820, 0x395d2: 0x6d3cda20, 0x395d3: 0x6d3cdc20,\n\t0x395d4: 0x6d3cde20, 0x395d5: 0x6d3ce020, 0x395d6: 0x6d3ce220, 0x395d7: 0x6d3ce420,\n\t0x395d8: 0x6d3ce620, 0x395d9: 0x6d3ce820, 0x395da: 0x6d3cea20, 0x395db: 0x6d3cec20,\n\t0x395dc: 0x6d0eac20, 0x395dd: 0x6d3cee20, 0x395de: 0x6d3cf020, 0x395df: 0x6d3cf220,\n\t0x395e0: 0x6d3cf420, 0x395e1: 0x6d3cf620, 0x395e2: 0x6d3cf820, 0x395e3: 0x6d3cfa20,\n\t0x395e4: 0x6d3cfc20, 0x395e5: 0x6d3cfe20, 0x395e6: 0x6d68f820, 0x395e7: 0x6d68fa20,\n\t0x395e8: 0x6d68fc20, 0x395e9: 0x6d68fe20, 0x395ea: 0x6d690020, 0x395eb: 0x6d690220,\n\t0x395ec: 0x6d690420, 0x395ed: 0x6d690620, 0x395ee: 0x6d690820, 0x395ef: 0x6d690a20,\n\t0x395f0: 0x6d690c20, 0x395f1: 0x6d690e20, 0x395f2: 0x6d691020, 0x395f3: 0x6d691220,\n\t0x395f4: 0x6d691420, 0x395f5: 0x6d691620, 0x395f6: 0x6d691820, 0x395f7: 0x6d691a20,\n\t0x395f8: 0x6d691c20, 0x395f9: 0x6d691e20, 0x395fa: 0x6d692020, 0x395fb: 0x6d692220,\n\t0x395fc: 0x6d692420, 0x395fd: 0x6d692620, 0x395fe: 0x6d692820, 0x395ff: 0x6d692a20,\n\t// Block 0xe58, offset 0x39600\n\t0x39600: 0x6d692c20, 0x39601: 0x6d692e20, 0x39602: 0x6d693020, 0x39603: 0x6d693220,\n\t0x39604: 0x6d693420, 0x39605: 0x6d693620, 0x39606: 0x6d693820, 0x39607: 0x6d693a20,\n\t0x39608: 0x6d693c20, 0x39609: 0x6d693e20, 0x3960a: 0x6d694020, 0x3960b: 0x6d694220,\n\t0x3960c: 0x6d694420, 0x3960d: 0x6d694620, 0x3960e: 0x6d694820, 0x3960f: 0x6d694a20,\n\t0x39610: 0x6d694c20, 0x39611: 0x6d694e20, 0x39612: 0x6d695020, 0x39613: 0x6d695220,\n\t0x39614: 0x6d695420, 0x39615: 0x6d695620, 0x39616: 0x6d695820, 0x39617: 0x6d695a20,\n\t0x39618: 0x6d695c20, 0x39619: 0x6d695e20, 0x3961a: 0x6d696020, 0x3961b: 0x6d696220,\n\t0x3961c: 0x6d696420, 0x3961d: 0x6d696620, 0x3961e: 0x6d696820, 0x3961f: 0x6d696a20,\n\t0x39620: 0x6d696c20, 0x39621: 0x6d696e20, 0x39622: 0x6d697020, 0x39623: 0x6d928820,\n\t0x39624: 0x6d928a20, 0x39625: 0x6d928c20, 0x39626: 0x6d928e20, 0x39627: 0x6d929020,\n\t0x39628: 0x6d929220, 0x39629: 0x6d929420, 0x3962a: 0x6d929620, 0x3962b: 0x6d929820,\n\t0x3962c: 0x6d929a20, 0x3962d: 0x6d929c20, 0x3962e: 0x6d929e20, 0x3962f: 0x6d92a020,\n\t0x39630: 0x6d92a220, 0x39631: 0x6d92a420, 0x39632: 0x6d92a620, 0x39633: 0x6d92a820,\n\t0x39634: 0x6d92aa20, 0x39635: 0x6d92ac20, 0x39636: 0x6d92ae20, 0x39637: 0x6d92b020,\n\t0x39638: 0x6d92b220, 0x39639: 0x6d92b420, 0x3963a: 0x6d92b620, 0x3963b: 0x6d92b820,\n\t0x3963c: 0x6d92ba20, 0x3963d: 0x6d92bc20, 0x3963e: 0x6d92be20, 0x3963f: 0x6d92c020,\n\t// Block 0xe59, offset 0x39640\n\t0x39640: 0x6d92c220, 0x39641: 0x6d92c420, 0x39642: 0x6d92c620, 0x39643: 0x6d92c820,\n\t0x39644: 0x6d92ca20, 0x39645: 0x6d92cc20, 0x39646: 0x6d92ce20, 0x39647: 0x6d92d020,\n\t0x39648: 0x6d92d220, 0x39649: 0x6d92d420, 0x3964a: 0x6d92d620, 0x3964b: 0x6d92d820,\n\t0x3964c: 0x6d92da20, 0x3964d: 0x6d92dc20, 0x3964e: 0x6d92de20, 0x3964f: 0x6d92e020,\n\t0x39650: 0x6d92e220, 0x39651: 0x6d92e420, 0x39652: 0x6d92e620, 0x39653: 0x6d92e820,\n\t0x39654: 0x6d92ea20, 0x39655: 0x6d92ec20, 0x39656: 0x6d92ee20, 0x39657: 0x6d92f020,\n\t0x39658: 0x6db61e20, 0x39659: 0x6db62020, 0x3965a: 0x6db62220, 0x3965b: 0x6db62420,\n\t0x3965c: 0x6db62620, 0x3965d: 0x6db62820, 0x3965e: 0x6db62a20, 0x3965f: 0x6db62c20,\n\t0x39660: 0x6db62e20, 0x39661: 0x6db63020, 0x39662: 0x6db63220, 0x39663: 0x6db63420,\n\t0x39664: 0x6db63620, 0x39665: 0x6db63820, 0x39666: 0x6db63a20, 0x39667: 0x6db63c20,\n\t0x39668: 0x6db63e20, 0x39669: 0x6db64020, 0x3966a: 0x6db64220, 0x3966b: 0x6db64420,\n\t0x3966c: 0x6db64620, 0x3966d: 0x6db64820, 0x3966e: 0x6db64a20, 0x3966f: 0x6db64c20,\n\t0x39670: 0x6db64e20, 0x39671: 0x6db65020, 0x39672: 0x6db65220, 0x39673: 0x6db65420,\n\t0x39674: 0x6db65620, 0x39675: 0x6db65820, 0x39676: 0x6db65a20, 0x39677: 0x6db65c20,\n\t0x39678: 0x6db65e20, 0x39679: 0x6db66020, 0x3967a: 0x6db66220, 0x3967b: 0x6db66420,\n\t0x3967c: 0x6db66620, 0x3967d: 0x6db66820, 0x3967e: 0x6db66a20, 0x3967f: 0x6db66c20,\n\t// Block 0xe5a, offset 0x39680\n\t0x39680: 0x6db66e20, 0x39681: 0x6db67020, 0x39682: 0x6db67220, 0x39683: 0x6db67420,\n\t0x39684: 0x6db67620, 0x39685: 0x6db67820, 0x39686: 0x6db67a20, 0x39687: 0x6db67c20,\n\t0x39688: 0x6db67e20, 0x39689: 0x6db68020, 0x3968a: 0x6db68220, 0x3968b: 0x6db68420,\n\t0x3968c: 0x6db68620, 0x3968d: 0x6db68820, 0x3968e: 0x6db68a20, 0x3968f: 0x6db68c20,\n\t0x39690: 0x6db68e20, 0x39691: 0x6db69020, 0x39692: 0x6dd49a20, 0x39693: 0x6dd49c20,\n\t0x39694: 0x6dd49e20, 0x39695: 0x6dd4a020, 0x39696: 0x6dd4a220, 0x39697: 0x6dd4a420,\n\t0x39698: 0x6dd4a620, 0x39699: 0x6dd4a820, 0x3969a: 0x6dd4aa20, 0x3969b: 0x6dd4ac20,\n\t0x3969c: 0x6dd4ae20, 0x3969d: 0x6dd4b020, 0x3969e: 0x6dd4b220, 0x3969f: 0x6dd4b420,\n\t0x396a0: 0x6dd4b620, 0x396a1: 0x6dd4b820, 0x396a2: 0x6dd4ba20, 0x396a3: 0x6dd4bc20,\n\t0x396a4: 0x6dd4be20, 0x396a5: 0x6dd4c020, 0x396a6: 0x6dd4c220, 0x396a7: 0x6dd4c420,\n\t0x396a8: 0x6dd4c620, 0x396a9: 0x6dd4c820, 0x396aa: 0x6dd4ca20, 0x396ab: 0x6dd4cc20,\n\t0x396ac: 0x6dd4ce20, 0x396ad: 0x6dd4d020, 0x396ae: 0x6dd4d220, 0x396af: 0x6dd4d420,\n\t0x396b0: 0x6dd4d620, 0x396b1: 0x6dd4d820, 0x396b2: 0x6dd4da20, 0x396b3: 0x6dd4dc20,\n\t0x396b4: 0x6dd4de20, 0x396b5: 0x6dd4e020, 0x396b6: 0x6dd4e220, 0x396b7: 0x6dd4e420,\n\t0x396b8: 0x6dd4e620, 0x396b9: 0x6dd4e820, 0x396ba: 0x6dd4ea20, 0x396bb: 0x6dd4ec20,\n\t0x396bc: 0x6dd4ee20, 0x396bd: 0x6dd4f020, 0x396be: 0x6ded8820, 0x396bf: 0x6ded8a20,\n\t// Block 0xe5b, offset 0x396c0\n\t0x396c0: 0x6ded8c20, 0x396c1: 0x6ded8e20, 0x396c2: 0x6ded9020, 0x396c3: 0x6ded9220,\n\t0x396c4: 0x6ded9420, 0x396c5: 0x6ded9620, 0x396c6: 0x6ded9820, 0x396c7: 0x6ded9a20,\n\t0x396c8: 0x6ded9c20, 0x396c9: 0x6ded9e20, 0x396ca: 0x6deda020, 0x396cb: 0x6deda220,\n\t0x396cc: 0x6deda420, 0x396cd: 0x6deda620, 0x396ce: 0x6deda820, 0x396cf: 0x6dedaa20,\n\t0x396d0: 0x6dedac20, 0x396d1: 0x6dedae20, 0x396d2: 0x6dedb020, 0x396d3: 0x6dedb220,\n\t0x396d4: 0x6dedb420, 0x396d5: 0x6dedb620, 0x396d6: 0x6dedb820, 0x396d7: 0x6dedba20,\n\t0x396d8: 0x6dedbc20, 0x396d9: 0x6dedbe20, 0x396da: 0x6dedc020, 0x396db: 0x6dedc220,\n\t0x396dc: 0x6dedc420, 0x396dd: 0x6dedc620, 0x396de: 0x6dedc820, 0x396df: 0x6dedca20,\n\t0x396e0: 0x6dedcc20, 0x396e1: 0x6dedce20, 0x396e2: 0x6dedd020, 0x396e3: 0x6dedd220,\n\t0x396e4: 0x6dedd420, 0x396e5: 0x6dedd620, 0x396e6: 0x6dedd820, 0x396e7: 0x6e027c20,\n\t0x396e8: 0x6e027e20, 0x396e9: 0x6e028020, 0x396ea: 0x6e028220, 0x396eb: 0x6e028420,\n\t0x396ec: 0x6e028620, 0x396ed: 0x6e028820, 0x396ee: 0x6e028a20, 0x396ef: 0x6e028c20,\n\t0x396f0: 0x6e028e20, 0x396f1: 0x6e029020, 0x396f2: 0x6e029220, 0x396f3: 0x6e029420,\n\t0x396f4: 0x6e029620, 0x396f5: 0x6e029820, 0x396f6: 0x6e029a20, 0x396f7: 0x6e029c20,\n\t0x396f8: 0x6e029e20, 0x396f9: 0x6e02a020, 0x396fa: 0x6e02a220, 0x396fb: 0x6e02a420,\n\t0x396fc: 0x6e02a620, 0x396fd: 0x6e02a820, 0x396fe: 0x6e02aa20, 0x396ff: 0x6e02ac20,\n\t// Block 0xe5c, offset 0x39700\n\t0x39700: 0x6e02ae20, 0x39701: 0x6e02b020, 0x39702: 0x6e143820, 0x39703: 0x6e143a20,\n\t0x39704: 0x6e143c20, 0x39705: 0x6e143e20, 0x39706: 0x6e144020, 0x39707: 0x6e144220,\n\t0x39708: 0x6e144420, 0x39709: 0x6e144620, 0x3970a: 0x6e144820, 0x3970b: 0x6e144a20,\n\t0x3970c: 0x6e144c20, 0x3970d: 0x6e144e20, 0x3970e: 0x6e145020, 0x3970f: 0x6e145220,\n\t0x39710: 0x6e145420, 0x39711: 0x6e21d820, 0x39712: 0x6e145620, 0x39713: 0x6e145820,\n\t0x39714: 0x6e145a20, 0x39715: 0x6e145c20, 0x39716: 0x6e145e20, 0x39717: 0x6e146020,\n\t0x39718: 0x6e146220, 0x39719: 0x6e146420, 0x3971a: 0x6e146620, 0x3971b: 0x6e146820,\n\t0x3971c: 0x6e21da20, 0x3971d: 0x6e21dc20, 0x3971e: 0x6e21de20, 0x3971f: 0x6e21e020,\n\t0x39720: 0x6e21e220, 0x39721: 0x6e21e420, 0x39722: 0x6e21e620, 0x39723: 0x6e21e820,\n\t0x39724: 0x6e21ea20, 0x39725: 0x6e21ec20, 0x39726: 0x6e21ee20, 0x39727: 0x6e21f020,\n\t0x39728: 0x6e21f220, 0x39729: 0x6e21f420, 0x3972a: 0x6e21f620, 0x3972b: 0x6e21f820,\n\t0x3972c: 0x6e21fa20, 0x3972d: 0x6e21fc20, 0x3972e: 0x6e21fe20, 0x3972f: 0x6e220020,\n\t0x39730: 0x6e220220, 0x39731: 0x6e220420, 0x39732: 0x6e220620, 0x39733: 0x6e220820,\n\t0x39734: 0x6e220a20, 0x39735: 0x6e220c20, 0x39736: 0x6e220e20, 0x39737: 0x6e221020,\n\t0x39738: 0x6e2c5a20, 0x39739: 0x6e2c5c20, 0x3973a: 0x6e2c5e20, 0x3973b: 0x6e2c6020,\n\t0x3973c: 0x6e2c6220, 0x3973d: 0x6e2c6420, 0x3973e: 0x6e2c6620, 0x3973f: 0x6e2c6820,\n\t// Block 0xe5d, offset 0x39740\n\t0x39740: 0x6e2c6a20, 0x39741: 0x6e2c6c20, 0x39742: 0x6e2c6e20, 0x39743: 0x6e2c7020,\n\t0x39744: 0x6e2c7220, 0x39745: 0x6e348a20, 0x39746: 0x6e348c20, 0x39747: 0x6e348e20,\n\t0x39748: 0x6e349020, 0x39749: 0x6e349220, 0x3974a: 0x6e349420, 0x3974b: 0x6e349620,\n\t0x3974c: 0x6e349820, 0x3974d: 0x6e349a20, 0x3974e: 0x6e349c20, 0x3974f: 0x6e349e20,\n\t0x39750: 0x6e34a020, 0x39751: 0x6e3a4220, 0x39752: 0x6e3a4420, 0x39753: 0x6e3a4620,\n\t0x39754: 0x6e3a4820, 0x39755: 0x6e3a4a20, 0x39756: 0x6e3a4c20, 0x39757: 0x6e3a4e20,\n\t0x39758: 0x6e3a5020, 0x39759: 0x6e3e3820, 0x3975a: 0x6e3e3a20, 0x3975b: 0x6e3e3c20,\n\t0x3975c: 0x6e3e3e20, 0x3975d: 0x6e3e4020, 0x3975e: 0x6e410a20, 0x3975f: 0x6e410c20,\n\t0x39760: 0x6e410e20, 0x39761: 0x6e411020, 0x39762: 0x6e431220, 0x39763: 0x6e431420,\n\t0x39764: 0x6e431620, 0x39765: 0x6e428c20, 0x39766: 0x6e431820, 0x39767: 0x6e431a20,\n\t0x39768: 0x6e448220, 0x39769: 0x6e472020, 0x3976a: 0x6c26d620, 0x3976b: 0x6c26e820,\n\t0x3976c: 0x6c86c820, 0x3976d: 0x6c86ca20, 0x3976e: 0x6c86cc20, 0x3976f: 0x6cb14620,\n\t0x39770: 0x6cb14820, 0x39771: 0x6cb14a20, 0x39772: 0x6cb14c20, 0x39773: 0x6ce04c20,\n\t0x39774: 0x6ce04e20, 0x39775: 0x6d0ec420, 0x39776: 0x6d0ec620, 0x39777: 0x6d0ec820,\n\t0x39778: 0x6d3d1a20, 0x39779: 0x6d3d1c20, 0x3977a: 0x6d698820, 0x3977b: 0x6d698a20,\n\t0x3977c: 0x6d698c20, 0x3977d: 0x6d698e20, 0x3977e: 0x6d699020, 0x3977f: 0x6d699220,\n\t// Block 0xe5e, offset 0x39780\n\t0x39780: 0x6d930020, 0x39781: 0x6d930220, 0x39782: 0x6d930420, 0x39783: 0x6d930620,\n\t0x39784: 0x6d930820, 0x39785: 0x6d930a20, 0x39786: 0x6db6a620, 0x39787: 0x6db6a820,\n\t0x39788: 0x6db6aa20, 0x39789: 0x6db6ac20, 0x3978a: 0x6dd50220, 0x3978b: 0x6dede620,\n\t0x3978c: 0x6dede820, 0x3978d: 0x6dedea20, 0x3978e: 0x6dedec20, 0x3978f: 0x6dedee20,\n\t0x39790: 0x6dedf020, 0x39791: 0x6dedf220, 0x39792: 0x6dedf420, 0x39793: 0x6e02b620,\n\t0x39794: 0x6e02b820, 0x39795: 0x6e146c20, 0x39796: 0x6e146e20, 0x39797: 0x6e3a5220,\n\t0x39798: 0x6e411220, 0x39799: 0x6e45da20, 0x3979a: 0x6c60c220, 0x3979b: 0x6c86d220,\n\t0x3979c: 0x6c86d420, 0x3979d: 0x6c86d620, 0x3979e: 0x6cb15420, 0x3979f: 0x6cb15620,\n\t0x397a0: 0x6ce05220, 0x397a1: 0x6ce05420, 0x397a2: 0x6ce05620, 0x397a3: 0x6ce05820,\n\t0x397a4: 0x6ce05a20, 0x397a5: 0x6d0ed020, 0x397a6: 0x6d0ed220, 0x397a7: 0x6cee2c20,\n\t0x397a8: 0x6d0ed420, 0x397a9: 0x6d3d2420, 0x397aa: 0x6d3d2620, 0x397ab: 0x6d3d2820,\n\t0x397ac: 0x6d3d2a20, 0x397ad: 0x6d699e20, 0x397ae: 0x6d69a020, 0x397af: 0x6d69a220,\n\t0x397b0: 0x6d69a420, 0x397b1: 0x6d69a620, 0x397b2: 0x6d69a820, 0x397b3: 0x6d69aa20,\n\t0x397b4: 0x6d69ac20, 0x397b5: 0x6d69ae20, 0x397b6: 0x6d69b020, 0x397b7: 0x6d931620,\n\t0x397b8: 0x6d931820, 0x397b9: 0x6d931a20, 0x397ba: 0x6d931c20, 0x397bb: 0x6d931e20,\n\t0x397bc: 0x6db6b620, 0x397bd: 0x6db6b820, 0x397be: 0x6db6ba20, 0x397bf: 0x6db6bc20,\n\t// Block 0xe5f, offset 0x397c0\n\t0x397c0: 0x6db6be20, 0x397c1: 0x6db6c020, 0x397c2: 0x6db6c220, 0x397c3: 0x6dd50820,\n\t0x397c4: 0x6dd50a20, 0x397c5: 0x6dd50c20, 0x397c6: 0x6dd50e20, 0x397c7: 0x6dd51020,\n\t0x397c8: 0x6db6c420, 0x397c9: 0x6dedf620, 0x397ca: 0x6dedf820, 0x397cb: 0x6dedfa20,\n\t0x397cc: 0x6dedfc20, 0x397cd: 0x6dedfe20, 0x397ce: 0x6dee0020, 0x397cf: 0x6dee0220,\n\t0x397d0: 0x6dee0420, 0x397d1: 0x6e02bc20, 0x397d2: 0x6e02be20, 0x397d3: 0x6e02c020,\n\t0x397d4: 0x6e02c220, 0x397d5: 0x6e02c420, 0x397d6: 0x6e02c620, 0x397d7: 0x6e147220,\n\t0x397d8: 0x6e147420, 0x397d9: 0x6e221a20, 0x397da: 0x6e221c20, 0x397db: 0x6e221e20,\n\t0x397dc: 0x6e222020, 0x397dd: 0x6e2c7a20, 0x397de: 0x6e2c7c20, 0x397df: 0x6e2c7e20,\n\t0x397e0: 0x6e34a820, 0x397e1: 0x6e3a5820, 0x397e2: 0x6e3a5a20, 0x397e3: 0x6e411620,\n\t0x397e4: 0x6e411820, 0x397e5: 0x6e448420, 0x397e6: 0x6c40ba20, 0x397e7: 0x6c26ee20,\n\t0x397e8: 0x6c26f020, 0x397e9: 0x6c60c420, 0x397ea: 0x6c86dc20, 0x397eb: 0x6c86de20,\n\t0x397ec: 0x6c86e020, 0x397ed: 0x6c86e220, 0x397ee: 0x6cb16820, 0x397ef: 0x6cb16a20,\n\t0x397f0: 0x6cb16c20, 0x397f1: 0x6cb16e20, 0x397f2: 0x6cb17020, 0x397f3: 0x6cb17220,\n\t0x397f4: 0x6cb17420, 0x397f5: 0x6ce06620, 0x397f6: 0x6ce06820, 0x397f7: 0x6ce06a20,\n\t0x397f8: 0x6ce06c20, 0x397f9: 0x6ce06e20, 0x397fa: 0x6ce07020, 0x397fb: 0x6ce07220,\n\t0x397fc: 0x6ce07420, 0x397fd: 0x6ce07620, 0x397fe: 0x6ce07820, 0x397ff: 0x6d0ee220,\n\t// Block 0xe60, offset 0x39800\n\t0x39800: 0x6d0ee420, 0x39801: 0x6d0ee620, 0x39802: 0x6d0ee820, 0x39803: 0x6d0eea20,\n\t0x39804: 0x6d0eec20, 0x39805: 0x6d0eee20, 0x39806: 0x6d0ef020, 0x39807: 0x6d0ef220,\n\t0x39808: 0x6d0ef420, 0x39809: 0x6d0ef620, 0x3980a: 0x6d0ef820, 0x3980b: 0x6d0efa20,\n\t0x3980c: 0x6d0efc20, 0x3980d: 0x6d3d3420, 0x3980e: 0x6d3d3620, 0x3980f: 0x6d3d3820,\n\t0x39810: 0x6d3d3a20, 0x39811: 0x6d3d3c20, 0x39812: 0x6d3d3e20, 0x39813: 0x6d3d4020,\n\t0x39814: 0x6d3d4220, 0x39815: 0x6d3d4420, 0x39816: 0x6d3d4620, 0x39817: 0x6d3d4820,\n\t0x39818: 0x6d69ba20, 0x39819: 0x6d69bc20, 0x3981a: 0x6d69be20, 0x3981b: 0x6d69c020,\n\t0x3981c: 0x6d69c220, 0x3981d: 0x6d69c420, 0x3981e: 0x6d69c620, 0x3981f: 0x6d69c820,\n\t0x39820: 0x6d69ca20, 0x39821: 0x6d69cc20, 0x39822: 0x6d69ce20, 0x39823: 0x6d69d020,\n\t0x39824: 0x6d69d220, 0x39825: 0x6d69d420, 0x39826: 0x6d69d620, 0x39827: 0x6d69d820,\n\t0x39828: 0x6d932a20, 0x39829: 0x6d932c20, 0x3982a: 0x6d932e20, 0x3982b: 0x6d933020,\n\t0x3982c: 0x6d933220, 0x3982d: 0x6d933420, 0x3982e: 0x6d933620, 0x3982f: 0x6d933820,\n\t0x39830: 0x6d933a20, 0x39831: 0x6d933c20, 0x39832: 0x6db6d020, 0x39833: 0x6db6d220,\n\t0x39834: 0x6db6d420, 0x39835: 0x6db6d620, 0x39836: 0x6db6d820, 0x39837: 0x6db6da20,\n\t0x39838: 0x6db6dc20, 0x39839: 0x6db6de20, 0x3983a: 0x6db6e020, 0x3983b: 0x6dd51a20,\n\t0x3983c: 0x6dd51c20, 0x3983d: 0x6dd51e20, 0x3983e: 0x6dd52020, 0x3983f: 0x6dd52220,\n\t// Block 0xe61, offset 0x39840\n\t0x39840: 0x6dd52420, 0x39841: 0x6dd52620, 0x39842: 0x6dee0c20, 0x39843: 0x6dee0e20,\n\t0x39844: 0x6dee1020, 0x39845: 0x6dee1220, 0x39846: 0x6dee1420, 0x39847: 0x6e02c820,\n\t0x39848: 0x6e02ca20, 0x39849: 0x6e02cc20, 0x3984a: 0x6e02ce20, 0x3984b: 0x6e02d020,\n\t0x3984c: 0x6e147820, 0x3984d: 0x6e147a20, 0x3984e: 0x6e147c20, 0x3984f: 0x6e147e20,\n\t0x39850: 0x6e222420, 0x39851: 0x6e222620, 0x39852: 0x6e222820, 0x39853: 0x6e222a20,\n\t0x39854: 0x6e2c8020, 0x39855: 0x6e2c8220, 0x39856: 0x6e2c8420, 0x39857: 0x6e222c20,\n\t0x39858: 0x6e34aa20, 0x39859: 0x6e34ac20, 0x3985a: 0x6e3a6020, 0x3985b: 0x6e3a6220,\n\t0x3985c: 0x6e3a6420, 0x3985d: 0x6e411a20, 0x3985e: 0x6e448620, 0x3985f: 0x6e46ec20,\n\t0x39860: 0x6c40be20, 0x39861: 0x6c60c620, 0x39862: 0x6c86ea20, 0x39863: 0x6c86ec20,\n\t0x39864: 0x6cb18420, 0x39865: 0x6cb18620, 0x39866: 0x6cb18820, 0x39867: 0x6cb18a20,\n\t0x39868: 0x6cb18c20, 0x39869: 0x6cb18e20, 0x3986a: 0x6cb19020, 0x3986b: 0x6cb19220,\n\t0x3986c: 0x6ce08a20, 0x3986d: 0x6ce08c20, 0x3986e: 0x6ce08e20, 0x3986f: 0x6ce09020,\n\t0x39870: 0x6ce09220, 0x39871: 0x6ce09420, 0x39872: 0x6ce09620, 0x39873: 0x6ce09820,\n\t0x39874: 0x6ce09a20, 0x39875: 0x6ce09c20, 0x39876: 0x6ce09e20, 0x39877: 0x6ce0a020,\n\t0x39878: 0x6ce0a220, 0x39879: 0x6ce0a420, 0x3987a: 0x6ce0a620, 0x3987b: 0x6ce0a820,\n\t0x3987c: 0x6ce0aa20, 0x3987d: 0x6ce0ac20, 0x3987e: 0x6d0f0c20, 0x3987f: 0x6d0f0e20,\n\t// Block 0xe62, offset 0x39880\n\t0x39880: 0x6d0f1020, 0x39881: 0x6d0f1220, 0x39882: 0x6d0f1420, 0x39883: 0x6d0f1620,\n\t0x39884: 0x6d0f1820, 0x39885: 0x6d0f1a20, 0x39886: 0x6d0f1c20, 0x39887: 0x6d0f1e20,\n\t0x39888: 0x6d0f2020, 0x39889: 0x6d0f2220, 0x3988a: 0x6d3d5620, 0x3988b: 0x6d3d5820,\n\t0x3988c: 0x6d3d5a20, 0x3988d: 0x6d3d5c20, 0x3988e: 0x6d3d5e20, 0x3988f: 0x6d3d6020,\n\t0x39890: 0x6d3d6220, 0x39891: 0x6d3d6420, 0x39892: 0x6d3d6620, 0x39893: 0x6d3d6820,\n\t0x39894: 0x6d3d6a20, 0x39895: 0x6d3d6c20, 0x39896: 0x6d3d6e20, 0x39897: 0x6d3d7020,\n\t0x39898: 0x6d3d7220, 0x39899: 0x6d69e420, 0x3989a: 0x6d69e620, 0x3989b: 0x6d69e820,\n\t0x3989c: 0x6d69ea20, 0x3989d: 0x6d69ec20, 0x3989e: 0x6d69ee20, 0x3989f: 0x6d69f020,\n\t0x398a0: 0x6d69f220, 0x398a1: 0x6d69f420, 0x398a2: 0x6d69f620, 0x398a3: 0x6d69f820,\n\t0x398a4: 0x6d69fa20, 0x398a5: 0x6d69fc20, 0x398a6: 0x6d934a20, 0x398a7: 0x6d934c20,\n\t0x398a8: 0x6d934e20, 0x398a9: 0x6d935020, 0x398aa: 0x6d935220, 0x398ab: 0x6d935420,\n\t0x398ac: 0x6d935620, 0x398ad: 0x6d935820, 0x398ae: 0x6d935a20, 0x398af: 0x6d935c20,\n\t0x398b0: 0x6d935e20, 0x398b1: 0x6d69fe20, 0x398b2: 0x6d936020, 0x398b3: 0x6d936220,\n\t0x398b4: 0x6d936420, 0x398b5: 0x6db6ea20, 0x398b6: 0x6db6ec20, 0x398b7: 0x6db6ee20,\n\t0x398b8: 0x6db6f020, 0x398b9: 0x6db6f220, 0x398ba: 0x6db6f420, 0x398bb: 0x6db6f620,\n\t0x398bc: 0x6db6f820, 0x398bd: 0x6db6fa20, 0x398be: 0x6db6fc20, 0x398bf: 0x6db6fe20,\n\t// Block 0xe63, offset 0x398c0\n\t0x398c0: 0x6db70020, 0x398c1: 0x6dd53220, 0x398c2: 0x6dd53420, 0x398c3: 0x6dd53620,\n\t0x398c4: 0x6dd53820, 0x398c5: 0x6dd53a20, 0x398c6: 0x6dee2220, 0x398c7: 0x6dd53c20,\n\t0x398c8: 0x6dd53e20, 0x398c9: 0x6dd54020, 0x398ca: 0x6dd54220, 0x398cb: 0x6dd54420,\n\t0x398cc: 0x6dee2420, 0x398cd: 0x6dee2620, 0x398ce: 0x6dee2820, 0x398cf: 0x6dee2a20,\n\t0x398d0: 0x6e02d220, 0x398d1: 0x6dee2c20, 0x398d2: 0x6dee2e20, 0x398d3: 0x6dee3020,\n\t0x398d4: 0x6dee3220, 0x398d5: 0x6dee3420, 0x398d6: 0x6e02d420, 0x398d7: 0x6e02d620,\n\t0x398d8: 0x6e02d820, 0x398d9: 0x6e02da20, 0x398da: 0x6e02dc20, 0x398db: 0x6e02de20,\n\t0x398dc: 0x6e02e020, 0x398dd: 0x6e148020, 0x398de: 0x6e148220, 0x398df: 0x6e222e20,\n\t0x398e0: 0x6e2c8620, 0x398e1: 0x6e2c8820, 0x398e2: 0x6e34ae20, 0x398e3: 0x6e411e20,\n\t0x398e4: 0x6c60ce20, 0x398e5: 0x6c60d020, 0x398e6: 0x6c60d220, 0x398e7: 0x6c60d420,\n\t0x398e8: 0x6c60d620, 0x398e9: 0x6c60d820, 0x398ea: 0x6c86f820, 0x398eb: 0x6c86fa20,\n\t0x398ec: 0x6c86fc20, 0x398ed: 0x6c86fe20, 0x398ee: 0x6c870020, 0x398ef: 0x6c870220,\n\t0x398f0: 0x6c870420, 0x398f1: 0x6c870620, 0x398f2: 0x6c870820, 0x398f3: 0x6cb1ac20,\n\t0x398f4: 0x6cb1ae20, 0x398f5: 0x6cb1b020, 0x398f6: 0x6cb1b220, 0x398f7: 0x6cb1b420,\n\t0x398f8: 0x6cb1b620, 0x398f9: 0x6cb1b820, 0x398fa: 0x6cb1ba20, 0x398fb: 0x6cb1bc20,\n\t0x398fc: 0x6cb1be20, 0x398fd: 0x6cb1c020, 0x398fe: 0x6cb1c220, 0x398ff: 0x6cb1c420,\n\t// Block 0xe64, offset 0x39900\n\t0x39900: 0x6cb1c620, 0x39901: 0x6cb1c820, 0x39902: 0x6cb1ca20, 0x39903: 0x6cb1cc20,\n\t0x39904: 0x6cb1ce20, 0x39905: 0x6cb1d020, 0x39906: 0x6cb1d220, 0x39907: 0x6cb1d420,\n\t0x39908: 0x6cb1d620, 0x39909: 0x6ce0e020, 0x3990a: 0x6ce0e220, 0x3990b: 0x6ce0e420,\n\t0x3990c: 0x6ce0e620, 0x3990d: 0x6ce0e820, 0x3990e: 0x6ce0ea20, 0x3990f: 0x6ce0ec20,\n\t0x39910: 0x6ce0ee20, 0x39911: 0x6ce0f020, 0x39912: 0x6ce0f220, 0x39913: 0x6ce0f420,\n\t0x39914: 0x6ce0f620, 0x39915: 0x6ce0f820, 0x39916: 0x6ce0fa20, 0x39917: 0x6ce0fc20,\n\t0x39918: 0x6ce0fe20, 0x39919: 0x6ce10020, 0x3991a: 0x6ce10220, 0x3991b: 0x6ce10420,\n\t0x3991c: 0x6ce10620, 0x3991d: 0x6ce10820, 0x3991e: 0x6ce10a20, 0x3991f: 0x6ce10c20,\n\t0x39920: 0x6ce10e20, 0x39921: 0x6ce11020, 0x39922: 0x6ce11220, 0x39923: 0x6d0f4a20,\n\t0x39924: 0x6d0f4c20, 0x39925: 0x6d0f4e20, 0x39926: 0x6d0f5020, 0x39927: 0x6d0f5220,\n\t0x39928: 0x6d0f5420, 0x39929: 0x6d0f5620, 0x3992a: 0x6d0f5820, 0x3992b: 0x6d0f5a20,\n\t0x3992c: 0x6d0f5c20, 0x3992d: 0x6d0f5e20, 0x3992e: 0x6d0f6020, 0x3992f: 0x6d0f6220,\n\t0x39930: 0x6d0f6420, 0x39931: 0x6d0f6620, 0x39932: 0x6d0f6820, 0x39933: 0x6d0f6a20,\n\t0x39934: 0x6d0f6c20, 0x39935: 0x6d0f6e20, 0x39936: 0x6d0f7020, 0x39937: 0x6d0f7220,\n\t0x39938: 0x6d0f7420, 0x39939: 0x6d0f7620, 0x3993a: 0x6d0f7820, 0x3993b: 0x6d0f7a20,\n\t0x3993c: 0x6d0f7c20, 0x3993d: 0x6d0f7e20, 0x3993e: 0x6d0f8020, 0x3993f: 0x6d0f8220,\n\t// Block 0xe65, offset 0x39940\n\t0x39940: 0x6d0f8420, 0x39941: 0x6d0f8620, 0x39942: 0x6d0f8820, 0x39943: 0x6d0f8a20,\n\t0x39944: 0x6d0f8c20, 0x39945: 0x6d3d9020, 0x39946: 0x6d3d9220, 0x39947: 0x6d3d9420,\n\t0x39948: 0x6d3d9620, 0x39949: 0x6d3d9820, 0x3994a: 0x6d3d9a20, 0x3994b: 0x6d3d9c20,\n\t0x3994c: 0x6d3d9e20, 0x3994d: 0x6d3da020, 0x3994e: 0x6d3da220, 0x3994f: 0x6d3da420,\n\t0x39950: 0x6d3da620, 0x39951: 0x6d3da820, 0x39952: 0x6d3daa20, 0x39953: 0x6d3dac20,\n\t0x39954: 0x6d3dae20, 0x39955: 0x6d3db020, 0x39956: 0x6d3db220, 0x39957: 0x6d3db420,\n\t0x39958: 0x6d3db620, 0x39959: 0x6d3db820, 0x3995a: 0x6d3dba20, 0x3995b: 0x6d6a3c20,\n\t0x3995c: 0x6d6a3e20, 0x3995d: 0x6d6a4020, 0x3995e: 0x6d6a4220, 0x3995f: 0x6d6a4420,\n\t0x39960: 0x6d6a4620, 0x39961: 0x6d6a4820, 0x39962: 0x6d6a4a20, 0x39963: 0x6d6a4c20,\n\t0x39964: 0x6d6a4e20, 0x39965: 0x6d6a5020, 0x39966: 0x6d6a5220, 0x39967: 0x6d6a5420,\n\t0x39968: 0x6d6a5620, 0x39969: 0x6d6a5820, 0x3996a: 0x6d6a5a20, 0x3996b: 0x6d6a5c20,\n\t0x3996c: 0x6d6a5e20, 0x3996d: 0x6d6a6020, 0x3996e: 0x6d6a6220, 0x3996f: 0x6d6a6420,\n\t0x39970: 0x6d6a6620, 0x39971: 0x6d938420, 0x39972: 0x6d938620, 0x39973: 0x6d938820,\n\t0x39974: 0x6d938a20, 0x39975: 0x6d938c20, 0x39976: 0x6d938e20, 0x39977: 0x6d939020,\n\t0x39978: 0x6d939220, 0x39979: 0x6d939420, 0x3997a: 0x6d939620, 0x3997b: 0x6d939820,\n\t0x3997c: 0x6d939a20, 0x3997d: 0x6d939c20, 0x3997e: 0x6d939e20, 0x3997f: 0x6d93a020,\n\t// Block 0xe66, offset 0x39980\n\t0x39980: 0x6d93a220, 0x39981: 0x6d93a420, 0x39982: 0x6d93a620, 0x39983: 0x6d93a820,\n\t0x39984: 0x6d93aa20, 0x39985: 0x6db02a20, 0x39986: 0x6d93ac20, 0x39987: 0x6d93ae20,\n\t0x39988: 0x6d93b020, 0x39989: 0x6d93b220, 0x3998a: 0x6d93b420, 0x3998b: 0x6d93b620,\n\t0x3998c: 0x6db71820, 0x3998d: 0x6db71a20, 0x3998e: 0x6db71c20, 0x3998f: 0x6db71e20,\n\t0x39990: 0x6db72020, 0x39991: 0x6db72220, 0x39992: 0x6db72420, 0x39993: 0x6db72620,\n\t0x39994: 0x6db72820, 0x39995: 0x6db72a20, 0x39996: 0x6db72c20, 0x39997: 0x6db72e20,\n\t0x39998: 0x6db73020, 0x39999: 0x6db73220, 0x3999a: 0x6db73420, 0x3999b: 0x6db73620,\n\t0x3999c: 0x6db73820, 0x3999d: 0x6db73a20, 0x3999e: 0x6dd55620, 0x3999f: 0x6dd55820,\n\t0x399a0: 0x6dd55a20, 0x399a1: 0x6dd55c20, 0x399a2: 0x6dd55e20, 0x399a3: 0x6dd56020,\n\t0x399a4: 0x6dd56220, 0x399a5: 0x6dd56420, 0x399a6: 0x6dd56620, 0x399a7: 0x6dd56820,\n\t0x399a8: 0x6dd56a20, 0x399a9: 0x6dd56c20, 0x399aa: 0x6dd56e20, 0x399ab: 0x6dd57020,\n\t0x399ac: 0x6dd57220, 0x399ad: 0x6dd57420, 0x399ae: 0x6dd57620, 0x399af: 0x6dd57820,\n\t0x399b0: 0x6dd57a20, 0x399b1: 0x6dd57c20, 0x399b2: 0x6dd57e20, 0x399b3: 0x6dd58020,\n\t0x399b4: 0x6dd58220, 0x399b5: 0x6dd58420, 0x399b6: 0x6dd58620, 0x399b7: 0x6dd58820,\n\t0x399b8: 0x6dd58a20, 0x399b9: 0x6dd58c20, 0x399ba: 0x6dd58e20, 0x399bb: 0x6dd59020,\n\t0x399bc: 0x6dee4620, 0x399bd: 0x6dee4820, 0x399be: 0x6dee4a20, 0x399bf: 0x6dee4c20,\n\t// Block 0xe67, offset 0x399c0\n\t0x399c0: 0x6dee4e20, 0x399c1: 0x6dee5020, 0x399c2: 0x6dee5220, 0x399c3: 0x6dee5420,\n\t0x399c4: 0x6dee5620, 0x399c5: 0x6dee5820, 0x399c6: 0x6dee5a20, 0x399c7: 0x6dee5c20,\n\t0x399c8: 0x6dee5e20, 0x399c9: 0x6dee6020, 0x399ca: 0x6dee6220, 0x399cb: 0x6dee6420,\n\t0x399cc: 0x6dee6620, 0x399cd: 0x6dee6820, 0x399ce: 0x6dee6a20, 0x399cf: 0x6dee6c20,\n\t0x399d0: 0x6dee6e20, 0x399d1: 0x6dee7020, 0x399d2: 0x6dee7220, 0x399d3: 0x6dee7420,\n\t0x399d4: 0x6dee7620, 0x399d5: 0x6dee7820, 0x399d6: 0x6e02ea20, 0x399d7: 0x6e02ec20,\n\t0x399d8: 0x6e02ee20, 0x399d9: 0x6e02f020, 0x399da: 0x6e02f220, 0x399db: 0x6e02f420,\n\t0x399dc: 0x6e02f620, 0x399dd: 0x6e02f820, 0x399de: 0x6e02fa20, 0x399df: 0x6e02fc20,\n\t0x399e0: 0x6e02fe20, 0x399e1: 0x6e030020, 0x399e2: 0x6e030220, 0x399e3: 0x6e030420,\n\t0x399e4: 0x6e030620, 0x399e5: 0x6e030820, 0x399e6: 0x6e148e20, 0x399e7: 0x6e149020,\n\t0x399e8: 0x6e149220, 0x399e9: 0x6e149420, 0x399ea: 0x6e149620, 0x399eb: 0x6e149820,\n\t0x399ec: 0x6e149a20, 0x399ed: 0x6e149c20, 0x399ee: 0x6e149e20, 0x399ef: 0x6e14a020,\n\t0x399f0: 0x6e14a220, 0x399f1: 0x6e223a20, 0x399f2: 0x6e223c20, 0x399f3: 0x6e223e20,\n\t0x399f4: 0x6e224020, 0x399f5: 0x6e224220, 0x399f6: 0x6e224420, 0x399f7: 0x6e224620,\n\t0x399f8: 0x6e224820, 0x399f9: 0x6e224a20, 0x399fa: 0x6e224c20, 0x399fb: 0x6e224e20,\n\t0x399fc: 0x6e225020, 0x399fd: 0x6e2c9020, 0x399fe: 0x6e2c9220, 0x399ff: 0x6e225220,\n\t// Block 0xe68, offset 0x39a00\n\t0x39a00: 0x6e2c9420, 0x39a01: 0x6e2c9620, 0x39a02: 0x6e2c9820, 0x39a03: 0x6e2c9a20,\n\t0x39a04: 0x6e2c9c20, 0x39a05: 0x6e2c9e20, 0x39a06: 0x6e2ca020, 0x39a07: 0x6e2ca220,\n\t0x39a08: 0x6e34b220, 0x39a09: 0x6e34b420, 0x39a0a: 0x6e34b620, 0x39a0b: 0x6e34b820,\n\t0x39a0c: 0x6e3a6a20, 0x39a0d: 0x6e3a6c20, 0x39a0e: 0x6e3e4420, 0x39a0f: 0x6e3e4620,\n\t0x39a10: 0x6e3e4820, 0x39a11: 0x6c40da20, 0x39a12: 0x6c60f420, 0x39a13: 0x6cb1e420,\n\t0x39a14: 0x6ce12e20, 0x39a15: 0x6ce13020, 0x39a16: 0x6ce13220, 0x39a17: 0x6d6a7420,\n\t0x39a18: 0x6c40dc20, 0x39a19: 0x6c60fa20, 0x39a1a: 0x6c60fc20, 0x39a1b: 0x6cb1ee20,\n\t0x39a1c: 0x6cb1f020, 0x39a1d: 0x6ce13620, 0x39a1e: 0x6ce13820, 0x39a1f: 0x6ce13a20,\n\t0x39a20: 0x6d0fa020, 0x39a21: 0x6d0fa220, 0x39a22: 0x6d0fa420, 0x39a23: 0x6d3dd020,\n\t0x39a24: 0x6d3dd220, 0x39a25: 0x6d3dd420, 0x39a26: 0x6d3dd620, 0x39a27: 0x6d6a7620,\n\t0x39a28: 0x6d6a7820, 0x39a29: 0x6d6a7a20, 0x39a2a: 0x6d6a7c20, 0x39a2b: 0x6d6a7e20,\n\t0x39a2c: 0x6d93d020, 0x39a2d: 0x6d93d220, 0x39a2e: 0x6d93d420, 0x39a2f: 0x6d93d620,\n\t0x39a30: 0x6d93d820, 0x39a31: 0x6d93da20, 0x39a32: 0x6db74620, 0x39a33: 0x6db74820,\n\t0x39a34: 0x6db74a20, 0x39a35: 0x6db74c20, 0x39a36: 0x6dd59620, 0x39a37: 0x6dd59820,\n\t0x39a38: 0x6dee7c20, 0x39a39: 0x6dee7e20, 0x39a3a: 0x6dee8020, 0x39a3b: 0x6dee8220,\n\t0x39a3c: 0x6dee8420, 0x39a3d: 0x6e14a820, 0x39a3e: 0x6e14aa20, 0x39a3f: 0x6e14ac20,\n\t// Block 0xe69, offset 0x39a40\n\t0x39a40: 0x6e225820, 0x39a41: 0x6e225a20, 0x39a42: 0x6e2ca620, 0x39a43: 0x6e2ca820,\n\t0x39a44: 0x6e2caa20, 0x39a45: 0x6e2cac20, 0x39a46: 0x6c26fe20, 0x39a47: 0x6c40de20,\n\t0x39a48: 0x6c610820, 0x39a49: 0x6c610a20, 0x39a4a: 0x6c610c20, 0x39a4b: 0x6c610e20,\n\t0x39a4c: 0x6c611020, 0x39a4d: 0x6c611220, 0x39a4e: 0x6c611420, 0x39a4f: 0x6c873420,\n\t0x39a50: 0x6c873620, 0x39a51: 0x6c873820, 0x39a52: 0x6c873a20, 0x39a53: 0x6c873c20,\n\t0x39a54: 0x6c873e20, 0x39a55: 0x6c874020, 0x39a56: 0x6c874220, 0x39a57: 0x6c874420,\n\t0x39a58: 0x6c874620, 0x39a59: 0x6c874820, 0x39a5a: 0x6c874a20, 0x39a5b: 0x6c874c20,\n\t0x39a5c: 0x6c874e20, 0x39a5d: 0x6cb20a20, 0x39a5e: 0x6cb20c20, 0x39a5f: 0x6cb20e20,\n\t0x39a60: 0x6cb21020, 0x39a61: 0x6cb21220, 0x39a62: 0x6cb21420, 0x39a63: 0x6cb21620,\n\t0x39a64: 0x6cb21820, 0x39a65: 0x6cb21a20, 0x39a66: 0x6cb21c20, 0x39a67: 0x6cb21e20,\n\t0x39a68: 0x6cb22020, 0x39a69: 0x6cb22220, 0x39a6a: 0x6cb22420, 0x39a6b: 0x6cb22620,\n\t0x39a6c: 0x6cb22820, 0x39a6d: 0x6cb22a20, 0x39a6e: 0x6cb22c20, 0x39a6f: 0x6cb22e20,\n\t0x39a70: 0x6cb23020, 0x39a71: 0x6cb23220, 0x39a72: 0x6cb23420, 0x39a73: 0x6cb23620,\n\t0x39a74: 0x6cb23820, 0x39a75: 0x6cb23a20, 0x39a76: 0x6ce16620, 0x39a77: 0x6ce16820,\n\t0x39a78: 0x6ce16a20, 0x39a79: 0x6ce16c20, 0x39a7a: 0x6ce16e20, 0x39a7b: 0x6ce17020,\n\t0x39a7c: 0x6ce17220, 0x39a7d: 0x6ce17420, 0x39a7e: 0x6ce17620, 0x39a7f: 0x6ce17820,\n\t// Block 0xe6a, offset 0x39a80\n\t0x39a80: 0x6ce17a20, 0x39a81: 0x6ce17c20, 0x39a82: 0x6ce17e20, 0x39a83: 0x6ce18020,\n\t0x39a84: 0x6ce18220, 0x39a85: 0x6ce18420, 0x39a86: 0x6ce18620, 0x39a87: 0x6ce18820,\n\t0x39a88: 0x6ce18a20, 0x39a89: 0x6ce18c20, 0x39a8a: 0x6ce18e20, 0x39a8b: 0x6ce19020,\n\t0x39a8c: 0x6ce19220, 0x39a8d: 0x6ce19420, 0x39a8e: 0x6ce19620, 0x39a8f: 0x6ce19820,\n\t0x39a90: 0x6d0fc620, 0x39a91: 0x6d0fc820, 0x39a92: 0x6d0fca20, 0x39a93: 0x6d0fcc20,\n\t0x39a94: 0x6d0fce20, 0x39a95: 0x6d0fd020, 0x39a96: 0x6d0fd220, 0x39a97: 0x6d0fd420,\n\t0x39a98: 0x6d0fd620, 0x39a99: 0x6d0fd820, 0x39a9a: 0x6d0fda20, 0x39a9b: 0x6d0fdc20,\n\t0x39a9c: 0x6d0fde20, 0x39a9d: 0x6d0fe020, 0x39a9e: 0x6d0fe220, 0x39a9f: 0x6d0fe420,\n\t0x39aa0: 0x6d0fe620, 0x39aa1: 0x6d0fe820, 0x39aa2: 0x6d0fea20, 0x39aa3: 0x6d0fec20,\n\t0x39aa4: 0x6d0fee20, 0x39aa5: 0x6d0ff020, 0x39aa6: 0x6d0ff220, 0x39aa7: 0x6d0ff420,\n\t0x39aa8: 0x6d0ff620, 0x39aa9: 0x6d0ff820, 0x39aaa: 0x6d0ffa20, 0x39aab: 0x6d0ffc20,\n\t0x39aac: 0x6d0ffe20, 0x39aad: 0x6d100020, 0x39aae: 0x6d100220, 0x39aaf: 0x6d3df420,\n\t0x39ab0: 0x6d3df620, 0x39ab1: 0x6d3df820, 0x39ab2: 0x6d3dfa20, 0x39ab3: 0x6d3dfc20,\n\t0x39ab4: 0x6d3dfe20, 0x39ab5: 0x6d3e0020, 0x39ab6: 0x6d3e0220, 0x39ab7: 0x6d3e0420,\n\t0x39ab8: 0x6d3e0620, 0x39ab9: 0x6d3e0820, 0x39aba: 0x6d3e0a20, 0x39abb: 0x6d3e0c20,\n\t0x39abc: 0x6d3e0e20, 0x39abd: 0x6d3e1020, 0x39abe: 0x6d3e1220, 0x39abf: 0x6d3e1420,\n\t// Block 0xe6b, offset 0x39ac0\n\t0x39ac0: 0x6d3e1620, 0x39ac1: 0x6d3e1820, 0x39ac2: 0x6d3e1a20, 0x39ac3: 0x6d3e1c20,\n\t0x39ac4: 0x6d3e1e20, 0x39ac5: 0x6d3e2020, 0x39ac6: 0x6d3e2220, 0x39ac7: 0x6d3e2420,\n\t0x39ac8: 0x6d3e2620, 0x39ac9: 0x6d3e2820, 0x39aca: 0x6d3e2a20, 0x39acb: 0x6d3e2c20,\n\t0x39acc: 0x6d3e2e20, 0x39acd: 0x6d3e3020, 0x39ace: 0x6d6aa420, 0x39acf: 0x6d6aa620,\n\t0x39ad0: 0x6d6aa820, 0x39ad1: 0x6d6aaa20, 0x39ad2: 0x6d6aac20, 0x39ad3: 0x6d6aae20,\n\t0x39ad4: 0x6d6ab020, 0x39ad5: 0x6d6ab220, 0x39ad6: 0x6d6ab420, 0x39ad7: 0x6d6ab620,\n\t0x39ad8: 0x6d6ab820, 0x39ad9: 0x6d6aba20, 0x39ada: 0x6d6abc20, 0x39adb: 0x6d6abe20,\n\t0x39adc: 0x6d6ac020, 0x39add: 0x6d3e3220, 0x39ade: 0x6d6ac220, 0x39adf: 0x6d93ea20,\n\t0x39ae0: 0x6d6ac420, 0x39ae1: 0x6d6ac620, 0x39ae2: 0x6d6ac820, 0x39ae3: 0x6d6aca20,\n\t0x39ae4: 0x6d6acc20, 0x39ae5: 0x6d6ace20, 0x39ae6: 0x6d6ad020, 0x39ae7: 0x6d6ad220,\n\t0x39ae8: 0x6d93ec20, 0x39ae9: 0x6d93ee20, 0x39aea: 0x6d93f020, 0x39aeb: 0x6d93f220,\n\t0x39aec: 0x6d93f420, 0x39aed: 0x6d93f620, 0x39aee: 0x6d93f820, 0x39aef: 0x6d93fa20,\n\t0x39af0: 0x6d93fc20, 0x39af1: 0x6d93fe20, 0x39af2: 0x6d940020, 0x39af3: 0x6d940220,\n\t0x39af4: 0x6d940420, 0x39af5: 0x6d940620, 0x39af6: 0x6d940820, 0x39af7: 0x6d940a20,\n\t0x39af8: 0x6d940c20, 0x39af9: 0x6d940e20, 0x39afa: 0x6d941020, 0x39afb: 0x6d941220,\n\t0x39afc: 0x6d941420, 0x39afd: 0x6d941620, 0x39afe: 0x6d941820, 0x39aff: 0x6d941a20,\n\t// Block 0xe6c, offset 0x39b00\n\t0x39b00: 0x6d941c20, 0x39b01: 0x6d941e20, 0x39b02: 0x6d942020, 0x39b03: 0x6d942220,\n\t0x39b04: 0x6d942420, 0x39b05: 0x6d942620, 0x39b06: 0x6d942820, 0x39b07: 0x6d942a20,\n\t0x39b08: 0x6d942c20, 0x39b09: 0x6db75820, 0x39b0a: 0x6db75a20, 0x39b0b: 0x6db75c20,\n\t0x39b0c: 0x6db75e20, 0x39b0d: 0x6db76020, 0x39b0e: 0x6db76220, 0x39b0f: 0x6db76420,\n\t0x39b10: 0x6db76620, 0x39b11: 0x6db76820, 0x39b12: 0x6db76a20, 0x39b13: 0x6db76c20,\n\t0x39b14: 0x6db76e20, 0x39b15: 0x6db77020, 0x39b16: 0x6db77220, 0x39b17: 0x6db77420,\n\t0x39b18: 0x6db77620, 0x39b19: 0x6db77820, 0x39b1a: 0x6db77a20, 0x39b1b: 0x6db77c20,\n\t0x39b1c: 0x6db77e20, 0x39b1d: 0x6db78020, 0x39b1e: 0x6dd5a820, 0x39b1f: 0x6dd5aa20,\n\t0x39b20: 0x6dd5ac20, 0x39b21: 0x6dd5ae20, 0x39b22: 0x6dd5b020, 0x39b23: 0x6dd5b220,\n\t0x39b24: 0x6dd5b420, 0x39b25: 0x6dd5b620, 0x39b26: 0x6dd5b820, 0x39b27: 0x6dd5ba20,\n\t0x39b28: 0x6dd5bc20, 0x39b29: 0x6dd5be20, 0x39b2a: 0x6dd5c020, 0x39b2b: 0x6dd5c220,\n\t0x39b2c: 0x6dd5c420, 0x39b2d: 0x6dd5c620, 0x39b2e: 0x6dd5c820, 0x39b2f: 0x6dd5ca20,\n\t0x39b30: 0x6dd5cc20, 0x39b31: 0x6dd5ce20, 0x39b32: 0x6dd5d020, 0x39b33: 0x6dd5d220,\n\t0x39b34: 0x6dd5d420, 0x39b35: 0x6dd5d620, 0x39b36: 0x6dee9020, 0x39b37: 0x6dee9220,\n\t0x39b38: 0x6dee9420, 0x39b39: 0x6dee9620, 0x39b3a: 0x6dee9820, 0x39b3b: 0x6dee9a20,\n\t0x39b3c: 0x6dee9c20, 0x39b3d: 0x6dee9e20, 0x39b3e: 0x6deea020, 0x39b3f: 0x6deea220,\n\t// Block 0xe6d, offset 0x39b40\n\t0x39b40: 0x6deea420, 0x39b41: 0x6deea620, 0x39b42: 0x6deea820, 0x39b43: 0x6deeaa20,\n\t0x39b44: 0x6deeac20, 0x39b45: 0x6deeae20, 0x39b46: 0x6deeb020, 0x39b47: 0x6deeb220,\n\t0x39b48: 0x6deeb420, 0x39b49: 0x6deeb620, 0x39b4a: 0x6deeb820, 0x39b4b: 0x6deeba20,\n\t0x39b4c: 0x6deebc20, 0x39b4d: 0x6e031420, 0x39b4e: 0x6e031620, 0x39b4f: 0x6e031820,\n\t0x39b50: 0x6e031a20, 0x39b51: 0x6e031c20, 0x39b52: 0x6e031e20, 0x39b53: 0x6e032020,\n\t0x39b54: 0x6e032220, 0x39b55: 0x6e032420, 0x39b56: 0x6e032620, 0x39b57: 0x6e032820,\n\t0x39b58: 0x6e032a20, 0x39b59: 0x6e14b420, 0x39b5a: 0x6e14b620, 0x39b5b: 0x6e14b820,\n\t0x39b5c: 0x6e14ba20, 0x39b5d: 0x6e14bc20, 0x39b5e: 0x6e14be20, 0x39b5f: 0x6e14c020,\n\t0x39b60: 0x6e14c220, 0x39b61: 0x6e226220, 0x39b62: 0x6e226420, 0x39b63: 0x6e226620,\n\t0x39b64: 0x6e226820, 0x39b65: 0x6e226a20, 0x39b66: 0x6e226c20, 0x39b67: 0x6e226e20,\n\t0x39b68: 0x6e2cb220, 0x39b69: 0x6e2cb420, 0x39b6a: 0x6e2cb620, 0x39b6b: 0x6e2cb820,\n\t0x39b6c: 0x6e2cba20, 0x39b6d: 0x6e2cbc20, 0x39b6e: 0x6e34bc20, 0x39b6f: 0x6e34be20,\n\t0x39b70: 0x6e3a7020, 0x39b71: 0x6e3a7220, 0x39b72: 0x6e3a7420, 0x39b73: 0x6e3a7620,\n\t0x39b74: 0x6e3a7820, 0x39b75: 0x6e412020, 0x39b76: 0x6e432020, 0x39b77: 0x6c270420,\n\t0x39b78: 0x6c40e020, 0x39b79: 0x6c40e220, 0x39b7a: 0x6c611c20, 0x39b7b: 0x6c611e20,\n\t0x39b7c: 0x6c612020, 0x39b7d: 0x6c612220, 0x39b7e: 0x6c612420, 0x39b7f: 0x6c612620,\n\t// Block 0xe6e, offset 0x39b80\n\t0x39b80: 0x6c612820, 0x39b81: 0x6c875c20, 0x39b82: 0x6c875e20, 0x39b83: 0x6c876020,\n\t0x39b84: 0x6c876220, 0x39b85: 0x6c876420, 0x39b86: 0x6c876620, 0x39b87: 0x6c876820,\n\t0x39b88: 0x6c876a20, 0x39b89: 0x6c876c20, 0x39b8a: 0x6c876e20, 0x39b8b: 0x6c877020,\n\t0x39b8c: 0x6c877220, 0x39b8d: 0x6c877420, 0x39b8e: 0x6c877620, 0x39b8f: 0x6c877820,\n\t0x39b90: 0x6c877a20, 0x39b91: 0x6c877c20, 0x39b92: 0x6cb26420, 0x39b93: 0x6cb26620,\n\t0x39b94: 0x6cb26820, 0x39b95: 0x6cb26a20, 0x39b96: 0x6cb26c20, 0x39b97: 0x6cb26e20,\n\t0x39b98: 0x6cb27020, 0x39b99: 0x6cb27220, 0x39b9a: 0x6cb27420, 0x39b9b: 0x6cb27620,\n\t0x39b9c: 0x6cb27820, 0x39b9d: 0x6cb27a20, 0x39b9e: 0x6cb27c20, 0x39b9f: 0x6cb27e20,\n\t0x39ba0: 0x6cb28020, 0x39ba1: 0x6cb28220, 0x39ba2: 0x6cb28420, 0x39ba3: 0x6cb28620,\n\t0x39ba4: 0x6cb28820, 0x39ba5: 0x6cb28a20, 0x39ba6: 0x6cb28c20, 0x39ba7: 0x6cb28e20,\n\t0x39ba8: 0x6cb29020, 0x39ba9: 0x6cb29220, 0x39baa: 0x6cb29420, 0x39bab: 0x6cb29620,\n\t0x39bac: 0x6cb29820, 0x39bad: 0x6cb29a20, 0x39bae: 0x6cb29c20, 0x39baf: 0x6cb29e20,\n\t0x39bb0: 0x6cb2a020, 0x39bb1: 0x6cb2a220, 0x39bb2: 0x6ce1ee20, 0x39bb3: 0x6ce1f020,\n\t0x39bb4: 0x6ce1f220, 0x39bb5: 0x6ce1f420, 0x39bb6: 0x6ce1f620, 0x39bb7: 0x6ce1f820,\n\t0x39bb8: 0x6ce1fa20, 0x39bb9: 0x6ce1fc20, 0x39bba: 0x6ce1fe20, 0x39bbb: 0x6ce20020,\n\t0x39bbc: 0x6ce20220, 0x39bbd: 0x6ce20420, 0x39bbe: 0x6ce20620, 0x39bbf: 0x6ce20820,\n\t// Block 0xe6f, offset 0x39bc0\n\t0x39bc0: 0x6ce20a20, 0x39bc1: 0x6ce20c20, 0x39bc2: 0x6ce20e20, 0x39bc3: 0x6ce21020,\n\t0x39bc4: 0x6ce21220, 0x39bc5: 0x6ce21420, 0x39bc6: 0x6ce21620, 0x39bc7: 0x6ce21820,\n\t0x39bc8: 0x6ce21a20, 0x39bc9: 0x6ce21c20, 0x39bca: 0x6ce21e20, 0x39bcb: 0x6ce22020,\n\t0x39bcc: 0x6ce22220, 0x39bcd: 0x6ce22420, 0x39bce: 0x6ce22620, 0x39bcf: 0x6ce22820,\n\t0x39bd0: 0x6ce22a20, 0x39bd1: 0x6ce22c20, 0x39bd2: 0x6ce22e20, 0x39bd3: 0x6ce23020,\n\t0x39bd4: 0x6ce23220, 0x39bd5: 0x6d105020, 0x39bd6: 0x6d105220, 0x39bd7: 0x6d105420,\n\t0x39bd8: 0x6d105620, 0x39bd9: 0x6d105820, 0x39bda: 0x6d105a20, 0x39bdb: 0x6d105c20,\n\t0x39bdc: 0x6d105e20, 0x39bdd: 0x6d106020, 0x39bde: 0x6d106220, 0x39bdf: 0x6d106420,\n\t0x39be0: 0x6d106620, 0x39be1: 0x6d106820, 0x39be2: 0x6d106a20, 0x39be3: 0x6d106c20,\n\t0x39be4: 0x6d106e20, 0x39be5: 0x6d107020, 0x39be6: 0x6d107220, 0x39be7: 0x6d107420,\n\t0x39be8: 0x6d107620, 0x39be9: 0x6d107820, 0x39bea: 0x6d107a20, 0x39beb: 0x6d107c20,\n\t0x39bec: 0x6d107e20, 0x39bed: 0x6d108020, 0x39bee: 0x6d108220, 0x39bef: 0x6d108420,\n\t0x39bf0: 0x6d108620, 0x39bf1: 0x6d108820, 0x39bf2: 0x6d108a20, 0x39bf3: 0x6d108c20,\n\t0x39bf4: 0x6d108e20, 0x39bf5: 0x6d109020, 0x39bf6: 0x6d109220, 0x39bf7: 0x6d109420,\n\t0x39bf8: 0x6d109620, 0x39bf9: 0x6d109820, 0x39bfa: 0x6d109a20, 0x39bfb: 0x6d109c20,\n\t0x39bfc: 0x6d109e20, 0x39bfd: 0x6d10a020, 0x39bfe: 0x6d10a220, 0x39bff: 0x6d10a420,\n\t// Block 0xe70, offset 0x39c00\n\t0x39c00: 0x6d3e7220, 0x39c01: 0x6d3e7420, 0x39c02: 0x6d3e7620, 0x39c03: 0x6d3e7820,\n\t0x39c04: 0x6d3e7a20, 0x39c05: 0x6d3e7c20, 0x39c06: 0x6d3e7e20, 0x39c07: 0x6d3e8020,\n\t0x39c08: 0x6d3e8220, 0x39c09: 0x6d3e8420, 0x39c0a: 0x6d3e8620, 0x39c0b: 0x6d3e8820,\n\t0x39c0c: 0x6d3e8a20, 0x39c0d: 0x6d3e8c20, 0x39c0e: 0x6d3e8e20, 0x39c0f: 0x6d3e9020,\n\t0x39c10: 0x6d3e9220, 0x39c11: 0x6d3e9420, 0x39c12: 0x6d3e9620, 0x39c13: 0x6d3e9820,\n\t0x39c14: 0x6d3e9a20, 0x39c15: 0x6d3e9c20, 0x39c16: 0x6d3e9e20, 0x39c17: 0x6d3ea020,\n\t0x39c18: 0x6d3ea220, 0x39c19: 0x6d3ea420, 0x39c1a: 0x6d3ea620, 0x39c1b: 0x6d3ea820,\n\t0x39c1c: 0x6d3eaa20, 0x39c1d: 0x6d3eac20, 0x39c1e: 0x6d3eae20, 0x39c1f: 0x6d3eb020,\n\t0x39c20: 0x6d3eb220, 0x39c21: 0x6d3eb420, 0x39c22: 0x6d3eb620, 0x39c23: 0x6d3eb820,\n\t0x39c24: 0x6d3eba20, 0x39c25: 0x6d3ebc20, 0x39c26: 0x6d3ebe20, 0x39c27: 0x6d3ec020,\n\t0x39c28: 0x6d3ec220, 0x39c29: 0x6d3ec420, 0x39c2a: 0x6d3ec620, 0x39c2b: 0x6d3ec820,\n\t0x39c2c: 0x6d3eca20, 0x39c2d: 0x6d3ecc20, 0x39c2e: 0x6d3ece20, 0x39c2f: 0x6d3ed020,\n\t0x39c30: 0x6d3ed220, 0x39c31: 0x6d3ed420, 0x39c32: 0x6d3ed620, 0x39c33: 0x6d3ed820,\n\t0x39c34: 0x6d3eda20, 0x39c35: 0x6d6b3c20, 0x39c36: 0x6d6b3e20, 0x39c37: 0x6d6b4020,\n\t0x39c38: 0x6d6b4220, 0x39c39: 0x6d6b4420, 0x39c3a: 0x6d6b4620, 0x39c3b: 0x6d6b4820,\n\t0x39c3c: 0x6d6b4a20, 0x39c3d: 0x6d6b4c20, 0x39c3e: 0x6d6b4e20, 0x39c3f: 0x6d6b5020,\n\t// Block 0xe71, offset 0x39c40\n\t0x39c40: 0x6d6b5220, 0x39c41: 0x6d6b5420, 0x39c42: 0x6d6b5620, 0x39c43: 0x6d6b5820,\n\t0x39c44: 0x6d6b5a20, 0x39c45: 0x6d6b5c20, 0x39c46: 0x6d6b5e20, 0x39c47: 0x6d6b6020,\n\t0x39c48: 0x6d6b6220, 0x39c49: 0x6d6b6420, 0x39c4a: 0x6d6b6620, 0x39c4b: 0x6d6b6820,\n\t0x39c4c: 0x6d6b6a20, 0x39c4d: 0x6d6b6c20, 0x39c4e: 0x6d6b6e20, 0x39c4f: 0x6d6b7020,\n\t0x39c50: 0x6d6b7220, 0x39c51: 0x6d6b7420, 0x39c52: 0x6d6b7620, 0x39c53: 0x6d6b7820,\n\t0x39c54: 0x6d6b7a20, 0x39c55: 0x6d6b7c20, 0x39c56: 0x6d6b7e20, 0x39c57: 0x6d6b8020,\n\t0x39c58: 0x6d6b8220, 0x39c59: 0x6d6b8420, 0x39c5a: 0x6d6b8620, 0x39c5b: 0x6d6b8820,\n\t0x39c5c: 0x6d6b8a20, 0x39c5d: 0x6d946e20, 0x39c5e: 0x6d947020, 0x39c5f: 0x6d6b8c20,\n\t0x39c60: 0x6d947220, 0x39c61: 0x6d947420, 0x39c62: 0x6d947620, 0x39c63: 0x6d947820,\n\t0x39c64: 0x6d947a20, 0x39c65: 0x6d947c20, 0x39c66: 0x6d947e20, 0x39c67: 0x6d948020,\n\t0x39c68: 0x6d948220, 0x39c69: 0x6d948420, 0x39c6a: 0x6d948620, 0x39c6b: 0x6d948820,\n\t0x39c6c: 0x6d948a20, 0x39c6d: 0x6d948c20, 0x39c6e: 0x6d948e20, 0x39c6f: 0x6d949020,\n\t0x39c70: 0x6d949220, 0x39c71: 0x6d949420, 0x39c72: 0x6d949620, 0x39c73: 0x6d949820,\n\t0x39c74: 0x6d949a20, 0x39c75: 0x6d949c20, 0x39c76: 0x6d949e20, 0x39c77: 0x6d94a020,\n\t0x39c78: 0x6d94a220, 0x39c79: 0x6d94a420, 0x39c7a: 0x6d94a620, 0x39c7b: 0x6d94a820,\n\t0x39c7c: 0x6d94aa20, 0x39c7d: 0x6d94ac20, 0x39c7e: 0x6d94ae20, 0x39c7f: 0x6d94b020,\n\t// Block 0xe72, offset 0x39c80\n\t0x39c80: 0x6d94b220, 0x39c81: 0x6d94b420, 0x39c82: 0x6d94b620, 0x39c83: 0x6d94b820,\n\t0x39c84: 0x6d94ba20, 0x39c85: 0x6d94bc20, 0x39c86: 0x6d94be20, 0x39c87: 0x6d94c020,\n\t0x39c88: 0x6d94c220, 0x39c89: 0x6d94c420, 0x39c8a: 0x6d94c620, 0x39c8b: 0x6d94c820,\n\t0x39c8c: 0x6d94ca20, 0x39c8d: 0x6d94cc20, 0x39c8e: 0x6d94ce20, 0x39c8f: 0x6d94d020,\n\t0x39c90: 0x6d94d220, 0x39c91: 0x6d94d420, 0x39c92: 0x6d94d620, 0x39c93: 0x6db7ae20,\n\t0x39c94: 0x6db7b020, 0x39c95: 0x6db7b220, 0x39c96: 0x6db7b420, 0x39c97: 0x6db7b620,\n\t0x39c98: 0x6db7b820, 0x39c99: 0x6db7ba20, 0x39c9a: 0x6db7bc20, 0x39c9b: 0x6db7be20,\n\t0x39c9c: 0x6db7c020, 0x39c9d: 0x6db7c220, 0x39c9e: 0x6db7c420, 0x39c9f: 0x6db7c620,\n\t0x39ca0: 0x6db7c820, 0x39ca1: 0x6db7ca20, 0x39ca2: 0x6db7cc20, 0x39ca3: 0x6db7ce20,\n\t0x39ca4: 0x6db7d020, 0x39ca5: 0x6db7d220, 0x39ca6: 0x6db7d420, 0x39ca7: 0x6db7d620,\n\t0x39ca8: 0x6db7d820, 0x39ca9: 0x6db7da20, 0x39caa: 0x6db7dc20, 0x39cab: 0x6db7de20,\n\t0x39cac: 0x6db7e020, 0x39cad: 0x6db7e220, 0x39cae: 0x6db7e420, 0x39caf: 0x6db7e620,\n\t0x39cb0: 0x6db7e820, 0x39cb1: 0x6db7ea20, 0x39cb2: 0x6db7ec20, 0x39cb3: 0x6db7ee20,\n\t0x39cb4: 0x6db7f020, 0x39cb5: 0x6db7f220, 0x39cb6: 0x6db7f420, 0x39cb7: 0x6db7f620,\n\t0x39cb8: 0x6db7f820, 0x39cb9: 0x6db7fa20, 0x39cba: 0x6db7fc20, 0x39cbb: 0x6db7fe20,\n\t0x39cbc: 0x6db80020, 0x39cbd: 0x6db80220, 0x39cbe: 0x6db80420, 0x39cbf: 0x6db80620,\n\t// Block 0xe73, offset 0x39cc0\n\t0x39cc0: 0x6db80820, 0x39cc1: 0x6db80a20, 0x39cc2: 0x6db80c20, 0x39cc3: 0x6dd61420,\n\t0x39cc4: 0x6db80e20, 0x39cc5: 0x6dd61620, 0x39cc6: 0x6dd61820, 0x39cc7: 0x6dd61a20,\n\t0x39cc8: 0x6dd61c20, 0x39cc9: 0x6dd61e20, 0x39cca: 0x6dd62020, 0x39ccb: 0x6dd62220,\n\t0x39ccc: 0x6dd62420, 0x39ccd: 0x6dd62620, 0x39cce: 0x6dd62820, 0x39ccf: 0x6dd62a20,\n\t0x39cd0: 0x6dd62c20, 0x39cd1: 0x6dd62e20, 0x39cd2: 0x6dd63020, 0x39cd3: 0x6dd63220,\n\t0x39cd4: 0x6dd63420, 0x39cd5: 0x6dd63620, 0x39cd6: 0x6dd63820, 0x39cd7: 0x6dd63a20,\n\t0x39cd8: 0x6dd63c20, 0x39cd9: 0x6dd63e20, 0x39cda: 0x6dd64020, 0x39cdb: 0x6dd64220,\n\t0x39cdc: 0x6dd64420, 0x39cdd: 0x6dd64620, 0x39cde: 0x6dd64820, 0x39cdf: 0x6dd64a20,\n\t0x39ce0: 0x6dd64c20, 0x39ce1: 0x6dd64e20, 0x39ce2: 0x6dd65020, 0x39ce3: 0x6dd65220,\n\t0x39ce4: 0x6dd65420, 0x39ce5: 0x6dd65620, 0x39ce6: 0x6dd65820, 0x39ce7: 0x6dd65a20,\n\t0x39ce8: 0x6dd65c20, 0x39ce9: 0x6dd65e20, 0x39cea: 0x6dd66020, 0x39ceb: 0x6dd66220,\n\t0x39cec: 0x6dd66420, 0x39ced: 0x6dd66620, 0x39cee: 0x6dd66820, 0x39cef: 0x6dd66a20,\n\t0x39cf0: 0x6dd66c20, 0x39cf1: 0x6dd66e20, 0x39cf2: 0x6dd67020, 0x39cf3: 0x6dd67220,\n\t0x39cf4: 0x6dd67420, 0x39cf5: 0x6dd67620, 0x39cf6: 0x6dd67820, 0x39cf7: 0x6dd67a20,\n\t0x39cf8: 0x6dd67c20, 0x39cf9: 0x6dd67e20, 0x39cfa: 0x6dd68020, 0x39cfb: 0x6dd68220,\n\t0x39cfc: 0x6dd68420, 0x39cfd: 0x6dd68620, 0x39cfe: 0x6dd68820, 0x39cff: 0x6dd68a20,\n\t// Block 0xe74, offset 0x39d00\n\t0x39d00: 0x6dd68c20, 0x39d01: 0x6dd68e20, 0x39d02: 0x6dd69020, 0x39d03: 0x6dd69220,\n\t0x39d04: 0x6dd69420, 0x39d05: 0x6dd69620, 0x39d06: 0x6dd69820, 0x39d07: 0x6dd69a20,\n\t0x39d08: 0x6dd69c20, 0x39d09: 0x6dd69e20, 0x39d0a: 0x6deef420, 0x39d0b: 0x6deef620,\n\t0x39d0c: 0x6deef820, 0x39d0d: 0x6deefa20, 0x39d0e: 0x6deefc20, 0x39d0f: 0x6deefe20,\n\t0x39d10: 0x6def0020, 0x39d11: 0x6def0220, 0x39d12: 0x6def0420, 0x39d13: 0x6def0620,\n\t0x39d14: 0x6def0820, 0x39d15: 0x6def0a20, 0x39d16: 0x6def0c20, 0x39d17: 0x6def0e20,\n\t0x39d18: 0x6def1020, 0x39d19: 0x6def1220, 0x39d1a: 0x6dd6a020, 0x39d1b: 0x6def1420,\n\t0x39d1c: 0x6def1620, 0x39d1d: 0x6def1820, 0x39d1e: 0x6def1a20, 0x39d1f: 0x6def1c20,\n\t0x39d20: 0x6def1e20, 0x39d21: 0x6def2020, 0x39d22: 0x6def2220, 0x39d23: 0x6def2420,\n\t0x39d24: 0x6def2620, 0x39d25: 0x6def2820, 0x39d26: 0x6def2a20, 0x39d27: 0x6def2c20,\n\t0x39d28: 0x6def2e20, 0x39d29: 0x6def3020, 0x39d2a: 0x6def3220, 0x39d2b: 0x6def3420,\n\t0x39d2c: 0x6def3620, 0x39d2d: 0x6def3820, 0x39d2e: 0x6def3a20, 0x39d2f: 0x6def3c20,\n\t0x39d30: 0x6def3e20, 0x39d31: 0x6def4020, 0x39d32: 0x6def4220, 0x39d33: 0x6def4420,\n\t0x39d34: 0x6def4620, 0x39d35: 0x6def4820, 0x39d36: 0x6def4a20, 0x39d37: 0x6def4c20,\n\t0x39d38: 0x6def4e20, 0x39d39: 0x6def5020, 0x39d3a: 0x6def5220, 0x39d3b: 0x6def5420,\n\t0x39d3c: 0x6def5620, 0x39d3d: 0x6def5820, 0x39d3e: 0x6def5a20, 0x39d3f: 0x6def5c20,\n\t// Block 0xe75, offset 0x39d40\n\t0x39d40: 0x6def5e20, 0x39d41: 0x6e034020, 0x39d42: 0x6e034220, 0x39d43: 0x6e034420,\n\t0x39d44: 0x6e034620, 0x39d45: 0x6e034820, 0x39d46: 0x6e034a20, 0x39d47: 0x6e034c20,\n\t0x39d48: 0x6e034e20, 0x39d49: 0x6e035020, 0x39d4a: 0x6e035220, 0x39d4b: 0x6e035420,\n\t0x39d4c: 0x6e035620, 0x39d4d: 0x6e035820, 0x39d4e: 0x6e035a20, 0x39d4f: 0x6e035c20,\n\t0x39d50: 0x6e035e20, 0x39d51: 0x6e036020, 0x39d52: 0x6e036220, 0x39d53: 0x6e036420,\n\t0x39d54: 0x6e036620, 0x39d55: 0x6e036820, 0x39d56: 0x6e036a20, 0x39d57: 0x6e036c20,\n\t0x39d58: 0x6e036e20, 0x39d59: 0x6e037020, 0x39d5a: 0x6e037220, 0x39d5b: 0x6e037420,\n\t0x39d5c: 0x6e037620, 0x39d5d: 0x6e037820, 0x39d5e: 0x6e037a20, 0x39d5f: 0x6e037c20,\n\t0x39d60: 0x6e037e20, 0x39d61: 0x6e038020, 0x39d62: 0x6e038220, 0x39d63: 0x6e038420,\n\t0x39d64: 0x6e038620, 0x39d65: 0x6e038820, 0x39d66: 0x6e038a20, 0x39d67: 0x6e038c20,\n\t0x39d68: 0x6e038e20, 0x39d69: 0x6e039020, 0x39d6a: 0x6e14d420, 0x39d6b: 0x6e14d620,\n\t0x39d6c: 0x6e14d820, 0x39d6d: 0x6e14da20, 0x39d6e: 0x6e14dc20, 0x39d6f: 0x6e14de20,\n\t0x39d70: 0x6e14e020, 0x39d71: 0x6e14e220, 0x39d72: 0x6e14e420, 0x39d73: 0x6e14e620,\n\t0x39d74: 0x6e14e820, 0x39d75: 0x6e14ea20, 0x39d76: 0x6e14ec20, 0x39d77: 0x6e14ee20,\n\t0x39d78: 0x6e14f020, 0x39d79: 0x6e14f220, 0x39d7a: 0x6e14f420, 0x39d7b: 0x6e14f620,\n\t0x39d7c: 0x6e14f820, 0x39d7d: 0x6e14fa20, 0x39d7e: 0x6e14fc20, 0x39d7f: 0x6e14fe20,\n\t// Block 0xe76, offset 0x39d80\n\t0x39d80: 0x6e150020, 0x39d81: 0x6e228020, 0x39d82: 0x6e228220, 0x39d83: 0x6e228420,\n\t0x39d84: 0x6e228620, 0x39d85: 0x6e228820, 0x39d86: 0x6e228a20, 0x39d87: 0x6e228c20,\n\t0x39d88: 0x6e228e20, 0x39d89: 0x6e229020, 0x39d8a: 0x6e229220, 0x39d8b: 0x6e229420,\n\t0x39d8c: 0x6e229620, 0x39d8d: 0x6e229820, 0x39d8e: 0x6e229a20, 0x39d8f: 0x6e229c20,\n\t0x39d90: 0x6e229e20, 0x39d91: 0x6e22a020, 0x39d92: 0x6e22a220, 0x39d93: 0x6e22a420,\n\t0x39d94: 0x6e22a620, 0x39d95: 0x6e22a820, 0x39d96: 0x6e2cca20, 0x39d97: 0x6e2ccc20,\n\t0x39d98: 0x6e2cce20, 0x39d99: 0x6e2cd020, 0x39d9a: 0x6e2cd220, 0x39d9b: 0x6e2cd420,\n\t0x39d9c: 0x6e2cd620, 0x39d9d: 0x6e2cd820, 0x39d9e: 0x6e2cda20, 0x39d9f: 0x6e2cdc20,\n\t0x39da0: 0x6e2cde20, 0x39da1: 0x6e2ce020, 0x39da2: 0x6e2ce220, 0x39da3: 0x6e2ce420,\n\t0x39da4: 0x6e34ca20, 0x39da5: 0x6e34cc20, 0x39da6: 0x6e34ce20, 0x39da7: 0x6e34d020,\n\t0x39da8: 0x6e34d220, 0x39da9: 0x6e34d420, 0x39daa: 0x6e34d620, 0x39dab: 0x6e34d820,\n\t0x39dac: 0x6e34da20, 0x39dad: 0x6e34dc20, 0x39dae: 0x6e3a8620, 0x39daf: 0x6e3a8820,\n\t0x39db0: 0x6e3a8a20, 0x39db1: 0x6e3a8c20, 0x39db2: 0x6e3a8e20, 0x39db3: 0x6e3a9020,\n\t0x39db4: 0x6e3a9220, 0x39db5: 0x6e3a9420, 0x39db6: 0x6e3a9620, 0x39db7: 0x6e3a9820,\n\t0x39db8: 0x6e3a9a20, 0x39db9: 0x6e3a9c20, 0x39dba: 0x6e3a9e20, 0x39dbb: 0x6e3e5020,\n\t0x39dbc: 0x6e3e5220, 0x39dbd: 0x6e3e5420, 0x39dbe: 0x6e3e5620, 0x39dbf: 0x6e3e5820,\n\t// Block 0xe77, offset 0x39dc0\n\t0x39dc0: 0x6e3e5a20, 0x39dc1: 0x6e412620, 0x39dc2: 0x6e412820, 0x39dc3: 0x6e412a20,\n\t0x39dc4: 0x6e432620, 0x39dc5: 0x6e432820, 0x39dc6: 0x6e432a20, 0x39dc7: 0x6e432c20,\n\t0x39dc8: 0x6e448820, 0x39dc9: 0x6e448a20, 0x39dca: 0x6e448c20, 0x39dcb: 0x6e455e20,\n\t0x39dcc: 0x6e456020, 0x39dcd: 0x6e45dc20, 0x39dce: 0x6e470a20, 0x39dcf: 0x6c270820,\n\t0x39dd0: 0x6c270a20, 0x39dd1: 0x6c270c20, 0x39dd2: 0x6c612a20, 0x39dd3: 0x6c878220,\n\t0x39dd4: 0x6c878420, 0x39dd5: 0x6c878620, 0x39dd6: 0x6c878820, 0x39dd7: 0x6c878a20,\n\t0x39dd8: 0x6cb2b020, 0x39dd9: 0x6cb2b220, 0x39dda: 0x6cb2b420, 0x39ddb: 0x6cb2b620,\n\t0x39ddc: 0x6cb2b820, 0x39ddd: 0x6cb2ba20, 0x39dde: 0x6cb2bc20, 0x39ddf: 0x6cb2be20,\n\t0x39de0: 0x6cb2c020, 0x39de1: 0x6cb2c220, 0x39de2: 0x6cb2c420, 0x39de3: 0x6cb2c620,\n\t0x39de4: 0x6cb2c820, 0x39de5: 0x6cb2ca20, 0x39de6: 0x6cb2cc20, 0x39de7: 0x6cb2ce20,\n\t0x39de8: 0x6cb2d020, 0x39de9: 0x6ce24620, 0x39dea: 0x6ce24820, 0x39deb: 0x6ce24a20,\n\t0x39dec: 0x6ce24c20, 0x39ded: 0x6ce24e20, 0x39dee: 0x6ce25020, 0x39def: 0x6ce25220,\n\t0x39df0: 0x6ce25420, 0x39df1: 0x6ce25620, 0x39df2: 0x6ce25820, 0x39df3: 0x6ce25a20,\n\t0x39df4: 0x6ce25c20, 0x39df5: 0x6ce25e20, 0x39df6: 0x6ce26020, 0x39df7: 0x6ce26220,\n\t0x39df8: 0x6d10bc20, 0x39df9: 0x6d10be20, 0x39dfa: 0x6d10c020, 0x39dfb: 0x6d10c220,\n\t0x39dfc: 0x6d10c420, 0x39dfd: 0x6d10c620, 0x39dfe: 0x6d10c820, 0x39dff: 0x6d10ca20,\n\t// Block 0xe78, offset 0x39e00\n\t0x39e00: 0x6d10cc20, 0x39e01: 0x6d10ce20, 0x39e02: 0x6d10d020, 0x39e03: 0x6d10d220,\n\t0x39e04: 0x6d10d420, 0x39e05: 0x6d10d620, 0x39e06: 0x6d10d820, 0x39e07: 0x6d10da20,\n\t0x39e08: 0x6d3ee820, 0x39e09: 0x6d3eea20, 0x39e0a: 0x6d3eec20, 0x39e0b: 0x6d3eee20,\n\t0x39e0c: 0x6d3ef020, 0x39e0d: 0x6d3ef220, 0x39e0e: 0x6d3ef420, 0x39e0f: 0x6d3ef620,\n\t0x39e10: 0x6d3ef820, 0x39e11: 0x6d3efa20, 0x39e12: 0x6d3efc20, 0x39e13: 0x6d3efe20,\n\t0x39e14: 0x6d6bac20, 0x39e15: 0x6d6bae20, 0x39e16: 0x6d6bb020, 0x39e17: 0x6d6bb220,\n\t0x39e18: 0x6d6bb420, 0x39e19: 0x6d6bb620, 0x39e1a: 0x6d6bb820, 0x39e1b: 0x6d6bba20,\n\t0x39e1c: 0x6d6bbc20, 0x39e1d: 0x6d6bbe20, 0x39e1e: 0x6d6bc020, 0x39e1f: 0x6d6bc220,\n\t0x39e20: 0x6d6bc420, 0x39e21: 0x6d6bc620, 0x39e22: 0x6d94e820, 0x39e23: 0x6d94ea20,\n\t0x39e24: 0x6d94ec20, 0x39e25: 0x6d94ee20, 0x39e26: 0x6db81a20, 0x39e27: 0x6d94f020,\n\t0x39e28: 0x6d94f220, 0x39e29: 0x6d94f420, 0x39e2a: 0x6d94f620, 0x39e2b: 0x6d94f820,\n\t0x39e2c: 0x6d94fa20, 0x39e2d: 0x6d94fc20, 0x39e2e: 0x6db81c20, 0x39e2f: 0x6db81e20,\n\t0x39e30: 0x6db82020, 0x39e31: 0x6db82220, 0x39e32: 0x6db82420, 0x39e33: 0x6db82620,\n\t0x39e34: 0x6db82820, 0x39e35: 0x6db82a20, 0x39e36: 0x6db82c20, 0x39e37: 0x6db82e20,\n\t0x39e38: 0x6db83020, 0x39e39: 0x6dd6b220, 0x39e3a: 0x6dd6b420, 0x39e3b: 0x6dd6b620,\n\t0x39e3c: 0x6dd6b820, 0x39e3d: 0x6dd6ba20, 0x39e3e: 0x6dd6bc20, 0x39e3f: 0x6def7420,\n\t// Block 0xe79, offset 0x39e40\n\t0x39e40: 0x6def7620, 0x39e41: 0x6def7820, 0x39e42: 0x6def7a20, 0x39e43: 0x6def7c20,\n\t0x39e44: 0x6def7e20, 0x39e45: 0x6def8020, 0x39e46: 0x6def8220, 0x39e47: 0x6def8420,\n\t0x39e48: 0x6def8620, 0x39e49: 0x6def8820, 0x39e4a: 0x6def8a20, 0x39e4b: 0x6def8c20,\n\t0x39e4c: 0x6def8e20, 0x39e4d: 0x6e039e20, 0x39e4e: 0x6e03a020, 0x39e4f: 0x6e03a220,\n\t0x39e50: 0x6e03a420, 0x39e51: 0x6e03a620, 0x39e52: 0x6e03a820, 0x39e53: 0x6e150820,\n\t0x39e54: 0x6e150a20, 0x39e55: 0x6e150c20, 0x39e56: 0x6e150e20, 0x39e57: 0x6e151020,\n\t0x39e58: 0x6e22ae20, 0x39e59: 0x6e22b020, 0x39e5a: 0x6e22b220, 0x39e5b: 0x6e2cea20,\n\t0x39e5c: 0x6e2cec20, 0x39e5d: 0x6e3aa020, 0x39e5e: 0x6e3aa220, 0x39e5f: 0x6e3e5c20,\n\t0x39e60: 0x6c613620, 0x39e61: 0x6c613820, 0x39e62: 0x6c613a20, 0x39e63: 0x6c613c20,\n\t0x39e64: 0x6c613e20, 0x39e65: 0x6c614020, 0x39e66: 0x6c614220, 0x39e67: 0x6c879e20,\n\t0x39e68: 0x6c87a020, 0x39e69: 0x6c87a220, 0x39e6a: 0x6c87a420, 0x39e6b: 0x6c87a620,\n\t0x39e6c: 0x6c87a820, 0x39e6d: 0x6c87aa20, 0x39e6e: 0x6c87ac20, 0x39e6f: 0x6c87ae20,\n\t0x39e70: 0x6c87b020, 0x39e71: 0x6c87b220, 0x39e72: 0x6c87b420, 0x39e73: 0x6cb30020,\n\t0x39e74: 0x6cb30220, 0x39e75: 0x6cb30420, 0x39e76: 0x6cb30620, 0x39e77: 0x6cb30820,\n\t0x39e78: 0x6cb30a20, 0x39e79: 0x6cb30c20, 0x39e7a: 0x6cb30e20, 0x39e7b: 0x6cb31020,\n\t0x39e7c: 0x6cb31220, 0x39e7d: 0x6cb31420, 0x39e7e: 0x6cb31620, 0x39e7f: 0x6cb31820,\n\t// Block 0xe7a, offset 0x39e80\n\t0x39e80: 0x6cb31a20, 0x39e81: 0x6cb31c20, 0x39e82: 0x6cb31e20, 0x39e83: 0x6cb32020,\n\t0x39e84: 0x6cb32220, 0x39e85: 0x6cb32420, 0x39e86: 0x6cb32620, 0x39e87: 0x6cb32820,\n\t0x39e88: 0x6cb32a20, 0x39e89: 0x6cb32c20, 0x39e8a: 0x6cb32e20, 0x39e8b: 0x6cb33020,\n\t0x39e8c: 0x6cb33220, 0x39e8d: 0x6cb33420, 0x39e8e: 0x6ce2a020, 0x39e8f: 0x6ce2a220,\n\t0x39e90: 0x6ce2a420, 0x39e91: 0x6ce2a620, 0x39e92: 0x6ce2a820, 0x39e93: 0x6ce2aa20,\n\t0x39e94: 0x6ce2ac20, 0x39e95: 0x6ce2ae20, 0x39e96: 0x6ce2b020, 0x39e97: 0x6ce2b220,\n\t0x39e98: 0x6ce2b420, 0x39e99: 0x6ce2b620, 0x39e9a: 0x6ce2b820, 0x39e9b: 0x6ce2ba20,\n\t0x39e9c: 0x6ce2bc20, 0x39e9d: 0x6ce2be20, 0x39e9e: 0x6ce2c020, 0x39e9f: 0x6ce2c220,\n\t0x39ea0: 0x6ce2c420, 0x39ea1: 0x6ce2c620, 0x39ea2: 0x6ce2c820, 0x39ea3: 0x6ce2ca20,\n\t0x39ea4: 0x6ce2cc20, 0x39ea5: 0x6ce2ce20, 0x39ea6: 0x6ce2d020, 0x39ea7: 0x6ce2d220,\n\t0x39ea8: 0x6d110a20, 0x39ea9: 0x6d110c20, 0x39eaa: 0x6d110e20, 0x39eab: 0x6d111020,\n\t0x39eac: 0x6d111220, 0x39ead: 0x6d111420, 0x39eae: 0x6d111620, 0x39eaf: 0x6d111820,\n\t0x39eb0: 0x6d111a20, 0x39eb1: 0x6d111c20, 0x39eb2: 0x6d111e20, 0x39eb3: 0x6d112020,\n\t0x39eb4: 0x6d112220, 0x39eb5: 0x6d112420, 0x39eb6: 0x6d112620, 0x39eb7: 0x6d112820,\n\t0x39eb8: 0x6d112a20, 0x39eb9: 0x6d112c20, 0x39eba: 0x6d112e20, 0x39ebb: 0x6d113020,\n\t0x39ebc: 0x6d113220, 0x39ebd: 0x6d113420, 0x39ebe: 0x6d113620, 0x39ebf: 0x6d113820,\n\t// Block 0xe7b, offset 0x39ec0\n\t0x39ec0: 0x6d113a20, 0x39ec1: 0x6d113c20, 0x39ec2: 0x6d3f1c20, 0x39ec3: 0x6d3f1e20,\n\t0x39ec4: 0x6d3f2020, 0x39ec5: 0x6d3f2220, 0x39ec6: 0x6d3f2420, 0x39ec7: 0x6d3f2620,\n\t0x39ec8: 0x6d3f2820, 0x39ec9: 0x6d3f2a20, 0x39eca: 0x6d3f2c20, 0x39ecb: 0x6d3f2e20,\n\t0x39ecc: 0x6d3f3020, 0x39ecd: 0x6d3f3220, 0x39ece: 0x6d3f3420, 0x39ecf: 0x6d3f3620,\n\t0x39ed0: 0x6d3f3820, 0x39ed1: 0x6d3f3a20, 0x39ed2: 0x6d3f3c20, 0x39ed3: 0x6d3f3e20,\n\t0x39ed4: 0x6d3f4020, 0x39ed5: 0x6d3f4220, 0x39ed6: 0x6d3f4420, 0x39ed7: 0x6d3f4620,\n\t0x39ed8: 0x6d3f4820, 0x39ed9: 0x6d3f4a20, 0x39eda: 0x6d3f4c20, 0x39edb: 0x6d3f4e20,\n\t0x39edc: 0x6d3f5020, 0x39edd: 0x6d3f5220, 0x39ede: 0x6d3f5420, 0x39edf: 0x6d3f5620,\n\t0x39ee0: 0x6d6bfe20, 0x39ee1: 0x6d6c0020, 0x39ee2: 0x6d6c0220, 0x39ee3: 0x6d6c0420,\n\t0x39ee4: 0x6d6c0620, 0x39ee5: 0x6d6c0820, 0x39ee6: 0x6d6c0a20, 0x39ee7: 0x6d6c0c20,\n\t0x39ee8: 0x6d6c0e20, 0x39ee9: 0x6d6c1020, 0x39eea: 0x6d6c1220, 0x39eeb: 0x6d6c1420,\n\t0x39eec: 0x6d6c1620, 0x39eed: 0x6d6c1820, 0x39eee: 0x6d6c1a20, 0x39eef: 0x6d6c1c20,\n\t0x39ef0: 0x6d6c1e20, 0x39ef1: 0x6d6c2020, 0x39ef2: 0x6d6c2220, 0x39ef3: 0x6d6c2420,\n\t0x39ef4: 0x6d6c2620, 0x39ef5: 0x6d6c2820, 0x39ef6: 0x6d6c2a20, 0x39ef7: 0x6d6c2c20,\n\t0x39ef8: 0x6d6c2e20, 0x39ef9: 0x6d6c3020, 0x39efa: 0x6d6c3220, 0x39efb: 0x6d6c3420,\n\t0x39efc: 0x6d6c3620, 0x39efd: 0x6d6c3820, 0x39efe: 0x6d6c3a20, 0x39eff: 0x6d6c3c20,\n\t// Block 0xe7c, offset 0x39f00\n\t0x39f00: 0x6d6c3e20, 0x39f01: 0x6d6c4020, 0x39f02: 0x6d6c4220, 0x39f03: 0x6d6c4420,\n\t0x39f04: 0x6d6c4620, 0x39f05: 0x6d6c4820, 0x39f06: 0x6d6c4a20, 0x39f07: 0x6d952820,\n\t0x39f08: 0x6d952a20, 0x39f09: 0x6d952c20, 0x39f0a: 0x6d952e20, 0x39f0b: 0x6d953020,\n\t0x39f0c: 0x6d953220, 0x39f0d: 0x6d953420, 0x39f0e: 0x6d953620, 0x39f0f: 0x6d953820,\n\t0x39f10: 0x6d953a20, 0x39f11: 0x6d953c20, 0x39f12: 0x6d953e20, 0x39f13: 0x6d954020,\n\t0x39f14: 0x6d954220, 0x39f15: 0x6d954420, 0x39f16: 0x6d954620, 0x39f17: 0x6d954820,\n\t0x39f18: 0x6d954a20, 0x39f19: 0x6d954c20, 0x39f1a: 0x6d954e20, 0x39f1b: 0x6d955020,\n\t0x39f1c: 0x6d955220, 0x39f1d: 0x6d955420, 0x39f1e: 0x6d955620, 0x39f1f: 0x6d955820,\n\t0x39f20: 0x6d955a20, 0x39f21: 0x6d955c20, 0x39f22: 0x6d955e20, 0x39f23: 0x6d956020,\n\t0x39f24: 0x6d956220, 0x39f25: 0x6d956420, 0x39f26: 0x6d956620, 0x39f27: 0x6d956820,\n\t0x39f28: 0x6d956a20, 0x39f29: 0x6db85420, 0x39f2a: 0x6db85620, 0x39f2b: 0x6db85820,\n\t0x39f2c: 0x6db85a20, 0x39f2d: 0x6db85c20, 0x39f2e: 0x6db85e20, 0x39f2f: 0x6db86020,\n\t0x39f30: 0x6db86220, 0x39f31: 0x6db86420, 0x39f32: 0x6db86620, 0x39f33: 0x6db86820,\n\t0x39f34: 0x6db86a20, 0x39f35: 0x6db86c20, 0x39f36: 0x6db86e20, 0x39f37: 0x6db87020,\n\t0x39f38: 0x6db87220, 0x39f39: 0x6db87420, 0x39f3a: 0x6db87620, 0x39f3b: 0x6db87820,\n\t0x39f3c: 0x6db87a20, 0x39f3d: 0x6db87c20, 0x39f3e: 0x6db87e20, 0x39f3f: 0x6db88020,\n\t// Block 0xe7d, offset 0x39f40\n\t0x39f40: 0x6db88220, 0x39f41: 0x6db88420, 0x39f42: 0x6db88620, 0x39f43: 0x6db88820,\n\t0x39f44: 0x6db88a20, 0x39f45: 0x6db88c20, 0x39f46: 0x6db88e20, 0x39f47: 0x6db89020,\n\t0x39f48: 0x6db89220, 0x39f49: 0x6db89420, 0x39f4a: 0x6dd6de20, 0x39f4b: 0x6dd6e020,\n\t0x39f4c: 0x6dd6e220, 0x39f4d: 0x6dd6e420, 0x39f4e: 0x6dd6e620, 0x39f4f: 0x6dd6e820,\n\t0x39f50: 0x6dd6ea20, 0x39f51: 0x6dd6ec20, 0x39f52: 0x6dd6ee20, 0x39f53: 0x6dd6f020,\n\t0x39f54: 0x6dd6f220, 0x39f55: 0x6dd6f420, 0x39f56: 0x6dd6f620, 0x39f57: 0x6dd6f820,\n\t0x39f58: 0x6dd6fa20, 0x39f59: 0x6dd6fc20, 0x39f5a: 0x6dd6fe20, 0x39f5b: 0x6dd70020,\n\t0x39f5c: 0x6dd70220, 0x39f5d: 0x6dd70420, 0x39f5e: 0x6dd70620, 0x39f5f: 0x6dd70820,\n\t0x39f60: 0x6dd70a20, 0x39f61: 0x6dd70c20, 0x39f62: 0x6dd70e20, 0x39f63: 0x6dd71020,\n\t0x39f64: 0x6defaa20, 0x39f65: 0x6defac20, 0x39f66: 0x6defae20, 0x39f67: 0x6defb020,\n\t0x39f68: 0x6defb220, 0x39f69: 0x6defb420, 0x39f6a: 0x6defb620, 0x39f6b: 0x6defb820,\n\t0x39f6c: 0x6defba20, 0x39f6d: 0x6defbc20, 0x39f6e: 0x6defbe20, 0x39f6f: 0x6defc020,\n\t0x39f70: 0x6defc220, 0x39f71: 0x6defc420, 0x39f72: 0x6e03ba20, 0x39f73: 0x6e03bc20,\n\t0x39f74: 0x6e03be20, 0x39f75: 0x6e03c020, 0x39f76: 0x6e03c220, 0x39f77: 0x6e03c420,\n\t0x39f78: 0x6e03c620, 0x39f79: 0x6e03c820, 0x39f7a: 0x6e03ca20, 0x39f7b: 0x6e03cc20,\n\t0x39f7c: 0x6e03ce20, 0x39f7d: 0x6e03d020, 0x39f7e: 0x6e03d220, 0x39f7f: 0x6e03d420,\n\t// Block 0xe7e, offset 0x39f80\n\t0x39f80: 0x6e03d620, 0x39f81: 0x6e03d820, 0x39f82: 0x6e03da20, 0x39f83: 0x6e03dc20,\n\t0x39f84: 0x6e03de20, 0x39f85: 0x6e03e020, 0x39f86: 0x6e03e220, 0x39f87: 0x6e03e420,\n\t0x39f88: 0x6e152220, 0x39f89: 0x6e152420, 0x39f8a: 0x6e152620, 0x39f8b: 0x6e152820,\n\t0x39f8c: 0x6e152a20, 0x39f8d: 0x6e152c20, 0x39f8e: 0x6e152e20, 0x39f8f: 0x6e153020,\n\t0x39f90: 0x6e153220, 0x39f91: 0x6e22be20, 0x39f92: 0x6e22c020, 0x39f93: 0x6e22c220,\n\t0x39f94: 0x6e22c420, 0x39f95: 0x6e22c620, 0x39f96: 0x6e22c820, 0x39f97: 0x6e22ca20,\n\t0x39f98: 0x6e22cc20, 0x39f99: 0x6e22ce20, 0x39f9a: 0x6e22d020, 0x39f9b: 0x6e22d220,\n\t0x39f9c: 0x6e22d420, 0x39f9d: 0x6e22d620, 0x39f9e: 0x6e2cf220, 0x39f9f: 0x6e2cf420,\n\t0x39fa0: 0x6e2cf620, 0x39fa1: 0x6e2cf820, 0x39fa2: 0x6e2cfa20, 0x39fa3: 0x6e2cfc20,\n\t0x39fa4: 0x6e2cfe20, 0x39fa5: 0x6e2d0020, 0x39fa6: 0x6e2d0220, 0x39fa7: 0x6e2d0420,\n\t0x39fa8: 0x6e2d0620, 0x39fa9: 0x6e34e220, 0x39faa: 0x6e34e420, 0x39fab: 0x6e34e620,\n\t0x39fac: 0x6e34e820, 0x39fad: 0x6e34ea20, 0x39fae: 0x6e34ec20, 0x39faf: 0x6e34ee20,\n\t0x39fb0: 0x6e34f020, 0x39fb1: 0x6e34f220, 0x39fb2: 0x6e34f420, 0x39fb3: 0x6e3aa420,\n\t0x39fb4: 0x6e3aa620, 0x39fb5: 0x6e3e6020, 0x39fb6: 0x6e3e6220, 0x39fb7: 0x6e3e6420,\n\t0x39fb8: 0x6e3e6620, 0x39fb9: 0x6e413220, 0x39fba: 0x6e432e20, 0x39fbb: 0x6e413420,\n\t0x39fbc: 0x6e433020, 0x39fbd: 0x6e3e6820, 0x39fbe: 0x6e413620, 0x39fbf: 0x6e433220,\n\t// Block 0xe7f, offset 0x39fc0\n\t0x39fc0: 0x6e433420, 0x39fc1: 0x6e448e20, 0x39fc2: 0x6e456220, 0x39fc3: 0x6e45e020,\n\t0x39fc4: 0x6e471420, 0x39fc5: 0x6c40f020, 0x39fc6: 0x6c40f220, 0x39fc7: 0x6c615c20,\n\t0x39fc8: 0x6c87ca20, 0x39fc9: 0x6d957420, 0x39fca: 0x6e03ea20, 0x39fcb: 0x6c271e20,\n\t0x39fcc: 0x6c40f620, 0x39fcd: 0x6c87d220, 0x39fce: 0x6c87d420, 0x39fcf: 0x6cb34220,\n\t0x39fd0: 0x6cb34420, 0x39fd1: 0x6cb34620, 0x39fd2: 0x6ce2f420, 0x39fd3: 0x6ce2f620,\n\t0x39fd4: 0x6d115220, 0x39fd5: 0x6d115420, 0x39fd6: 0x6d115620, 0x39fd7: 0x6d115820,\n\t0x39fd8: 0x6d3f6e20, 0x39fd9: 0x6d3f7020, 0x39fda: 0x6d3f7220, 0x39fdb: 0x6d3f7420,\n\t0x39fdc: 0x6d6c5820, 0x39fdd: 0x6d6c5a20, 0x39fde: 0x6d6c5c20, 0x39fdf: 0x6d6c5e20,\n\t0x39fe0: 0x6d958420, 0x39fe1: 0x6d958620, 0x39fe2: 0x6d958820, 0x39fe3: 0x6d958a20,\n\t0x39fe4: 0x6d958c20, 0x39fe5: 0x6d958e20, 0x39fe6: 0x6d959020, 0x39fe7: 0x6d959220,\n\t0x39fe8: 0x6db8a020, 0x39fe9: 0x6db8a220, 0x39fea: 0x6db8a420, 0x39feb: 0x6db8a620,\n\t0x39fec: 0x6db8a820, 0x39fed: 0x6db8aa20, 0x39fee: 0x6db8ac20, 0x39fef: 0x6db8ae20,\n\t0x39ff0: 0x6dd71820, 0x39ff1: 0x6dd71a20, 0x39ff2: 0x6dd71c20, 0x39ff3: 0x6dc60820,\n\t0x39ff4: 0x6dcb1a20, 0x39ff5: 0x6defcc20, 0x39ff6: 0x6defce20, 0x39ff7: 0x6defd020,\n\t0x39ff8: 0x6defd220, 0x39ff9: 0x6defd420, 0x39ffa: 0x6e03f020, 0x39ffb: 0x6e03f220,\n\t0x39ffc: 0x6e03f420, 0x39ffd: 0x6e153820, 0x39ffe: 0x6e22d820, 0x39fff: 0x6e22da20,\n\t// Block 0xe80, offset 0x3a000\n\t0x3a000: 0x6e34f620, 0x3a001: 0x6e449020, 0x3a002: 0x6e456420, 0x3a003: 0x6c272220,\n\t0x3a004: 0x6c272420, 0x3a005: 0x6d116220, 0x3a006: 0x6d116420, 0x3a007: 0x6d116620,\n\t0x3a008: 0x6d6c6420, 0x3a009: 0x6d959420, 0x3a00a: 0x6defd820, 0x3a00b: 0x6e153a20,\n\t0x3a00c: 0x6e22dc20, 0x3a00d: 0x6c0a8220, 0x3a00e: 0x6c0a8420, 0x3a00f: 0x6c0a8620,\n\t0x3a010: 0x6c0a8820, 0x3a011: 0x6c151620, 0x3a012: 0x6c151820, 0x3a013: 0x6c151a20,\n\t0x3a014: 0x6c151c20, 0x3a015: 0x6c151e20, 0x3a016: 0x6c152020, 0x3a017: 0x6c152220,\n\t0x3a018: 0x6c152420, 0x3a019: 0x6c152620, 0x3a01a: 0x6c152820, 0x3a01b: 0x6c152a20,\n\t0x3a01c: 0x6c152c20, 0x3a01d: 0x6c152e20, 0x3a01e: 0x6c153020, 0x3a01f: 0x6c153220,\n\t0x3a020: 0x6c153420, 0x3a021: 0x6c153620, 0x3a022: 0x6c274620, 0x3a023: 0x6c274820,\n\t0x3a024: 0x6c274a20, 0x3a025: 0x6c274c20, 0x3a026: 0x6c274e20, 0x3a027: 0x6c275020,\n\t0x3a028: 0x6c275220, 0x3a029: 0x6c275420, 0x3a02a: 0x6c275620, 0x3a02b: 0x6c275820,\n\t0x3a02c: 0x6c275a20, 0x3a02d: 0x6c275c20, 0x3a02e: 0x6c275e20, 0x3a02f: 0x6c276020,\n\t0x3a030: 0x6c276220, 0x3a031: 0x6c276420, 0x3a032: 0x6c276620, 0x3a033: 0x6c276820,\n\t0x3a034: 0x6c276a20, 0x3a035: 0x6c276c20, 0x3a036: 0x6c276e20, 0x3a037: 0x6c277020,\n\t0x3a038: 0x6c277220, 0x3a039: 0x6c277420, 0x3a03a: 0x6c277620, 0x3a03b: 0x6c277820,\n\t0x3a03c: 0x6c277a20, 0x3a03d: 0x6c277c20, 0x3a03e: 0x6c277e20, 0x3a03f: 0x6c278020,\n\t// Block 0xe81, offset 0x3a040\n\t0x3a040: 0x6c278220, 0x3a041: 0x6c278420, 0x3a042: 0x6c413020, 0x3a043: 0x6c413220,\n\t0x3a044: 0x6c413420, 0x3a045: 0x6c413620, 0x3a046: 0x6c413820, 0x3a047: 0x6c413a20,\n\t0x3a048: 0x6c413c20, 0x3a049: 0x6c413e20, 0x3a04a: 0x6c414020, 0x3a04b: 0x6c414220,\n\t0x3a04c: 0x6c414420, 0x3a04d: 0x6c414620, 0x3a04e: 0x6c414820, 0x3a04f: 0x6c414a20,\n\t0x3a050: 0x6c414c20, 0x3a051: 0x6c414e20, 0x3a052: 0x6c415020, 0x3a053: 0x6c415220,\n\t0x3a054: 0x6c415420, 0x3a055: 0x6c415620, 0x3a056: 0x6c415820, 0x3a057: 0x6c415a20,\n\t0x3a058: 0x6c415c20, 0x3a059: 0x6c415e20, 0x3a05a: 0x6c416020, 0x3a05b: 0x6c416220,\n\t0x3a05c: 0x6c416420, 0x3a05d: 0x6c416620, 0x3a05e: 0x6c416820, 0x3a05f: 0x6c416a20,\n\t0x3a060: 0x6c416c20, 0x3a061: 0x6c416e20, 0x3a062: 0x6c417020, 0x3a063: 0x6c417220,\n\t0x3a064: 0x6c417420, 0x3a065: 0x6c619020, 0x3a066: 0x6c619220, 0x3a067: 0x6c619420,\n\t0x3a068: 0x6c619620, 0x3a069: 0x6c619820, 0x3a06a: 0x6c619a20, 0x3a06b: 0x6c619c20,\n\t0x3a06c: 0x6c619e20, 0x3a06d: 0x6c61a020, 0x3a06e: 0x6c61a220, 0x3a06f: 0x6c61a420,\n\t0x3a070: 0x6c61a620, 0x3a071: 0x6c61a820, 0x3a072: 0x6c61aa20, 0x3a073: 0x6c61ac20,\n\t0x3a074: 0x6c61ae20, 0x3a075: 0x6c61b020, 0x3a076: 0x6c61b220, 0x3a077: 0x6c61b420,\n\t0x3a078: 0x6c61b620, 0x3a079: 0x6c61b820, 0x3a07a: 0x6c61ba20, 0x3a07b: 0x6c61bc20,\n\t0x3a07c: 0x6c61be20, 0x3a07d: 0x6c61c020, 0x3a07e: 0x6c61c220, 0x3a07f: 0x6c61c420,\n\t// Block 0xe82, offset 0x3a080\n\t0x3a080: 0x6c61c620, 0x3a081: 0x6c61c820, 0x3a082: 0x6c61ca20, 0x3a083: 0x6c61cc20,\n\t0x3a084: 0x6c61ce20, 0x3a085: 0x6c881420, 0x3a086: 0x6c881620, 0x3a087: 0x6c881820,\n\t0x3a088: 0x6c881a20, 0x3a089: 0x6c881c20, 0x3a08a: 0x6c881e20, 0x3a08b: 0x6c882020,\n\t0x3a08c: 0x6c882220, 0x3a08d: 0x6c882420, 0x3a08e: 0x6c882620, 0x3a08f: 0x6c882820,\n\t0x3a090: 0x6c882a20, 0x3a091: 0x6c882c20, 0x3a092: 0x6c882e20, 0x3a093: 0x6c883020,\n\t0x3a094: 0x6c883220, 0x3a095: 0x6c883420, 0x3a096: 0x6c883620, 0x3a097: 0x6c883820,\n\t0x3a098: 0x6c883a20, 0x3a099: 0x6c883c20, 0x3a09a: 0x6c883e20, 0x3a09b: 0x6c884020,\n\t0x3a09c: 0x6c884220, 0x3a09d: 0x6c884420, 0x3a09e: 0x6c884620, 0x3a09f: 0x6c884820,\n\t0x3a0a0: 0x6c884a20, 0x3a0a1: 0x6c884c20, 0x3a0a2: 0x6c884e20, 0x3a0a3: 0x6c885020,\n\t0x3a0a4: 0x6c885220, 0x3a0a5: 0x6c885420, 0x3a0a6: 0x6c885620, 0x3a0a7: 0x6c885820,\n\t0x3a0a8: 0x6c885a20, 0x3a0a9: 0x6c885c20, 0x3a0aa: 0x6c885e20, 0x3a0ab: 0x6cb38820,\n\t0x3a0ac: 0x6cb38a20, 0x3a0ad: 0x6cb38c20, 0x3a0ae: 0x6cb38e20, 0x3a0af: 0x6cb39020,\n\t0x3a0b0: 0x6cb39220, 0x3a0b1: 0x6cb39420, 0x3a0b2: 0x6cb39620, 0x3a0b3: 0x6cb39820,\n\t0x3a0b4: 0x6cb39a20, 0x3a0b5: 0x6cb39c20, 0x3a0b6: 0x6cb39e20, 0x3a0b7: 0x6cb3a020,\n\t0x3a0b8: 0x6cb3a220, 0x3a0b9: 0x6cb3a420, 0x3a0ba: 0x6cb3a620, 0x3a0bb: 0x6cb3a820,\n\t0x3a0bc: 0x6cb3aa20, 0x3a0bd: 0x6cb3ac20, 0x3a0be: 0x6cb3ae20, 0x3a0bf: 0x6cb3b020,\n\t// Block 0xe83, offset 0x3a0c0\n\t0x3a0c0: 0x6cb3b220, 0x3a0c1: 0x6cb3b420, 0x3a0c2: 0x6cb3b620, 0x3a0c3: 0x6cb3b820,\n\t0x3a0c4: 0x6cb3ba20, 0x3a0c5: 0x6cb3bc20, 0x3a0c6: 0x6cb3be20, 0x3a0c7: 0x6cb3c020,\n\t0x3a0c8: 0x6cb3c220, 0x3a0c9: 0x6cb3c420, 0x3a0ca: 0x6cb3c620, 0x3a0cb: 0x6cb3c820,\n\t0x3a0cc: 0x6cb3ca20, 0x3a0cd: 0x6cb3cc20, 0x3a0ce: 0x6ce32c20, 0x3a0cf: 0x6cb3ce20,\n\t0x3a0d0: 0x6cb3d020, 0x3a0d1: 0x6cb3d220, 0x3a0d2: 0x6cb3d420, 0x3a0d3: 0x6cb3d620,\n\t0x3a0d4: 0x6cb3d820, 0x3a0d5: 0x6cb3da20, 0x3a0d6: 0x6cb3dc20, 0x3a0d7: 0x6cb3de20,\n\t0x3a0d8: 0x6cb3e020, 0x3a0d9: 0x6cb3e220, 0x3a0da: 0x6cb3e420, 0x3a0db: 0x6cb3e620,\n\t0x3a0dc: 0x6cb3e820, 0x3a0dd: 0x6ce32e20, 0x3a0de: 0x6ce33020, 0x3a0df: 0x6ce33220,\n\t0x3a0e0: 0x6cb3ea20, 0x3a0e1: 0x6ce33420, 0x3a0e2: 0x6ce33620, 0x3a0e3: 0x6ce33820,\n\t0x3a0e4: 0x6ce33a20, 0x3a0e5: 0x6ce33c20, 0x3a0e6: 0x6ce33e20, 0x3a0e7: 0x6ce34020,\n\t0x3a0e8: 0x6ce34220, 0x3a0e9: 0x6ce34420, 0x3a0ea: 0x6ce34620, 0x3a0eb: 0x6ce34820,\n\t0x3a0ec: 0x6ce34a20, 0x3a0ed: 0x6ce34c20, 0x3a0ee: 0x6ce34e20, 0x3a0ef: 0x6ce35020,\n\t0x3a0f0: 0x6ce35220, 0x3a0f1: 0x6ce35420, 0x3a0f2: 0x6ce35620, 0x3a0f3: 0x6ce35820,\n\t0x3a0f4: 0x6ce35a20, 0x3a0f5: 0x6ce35c20, 0x3a0f6: 0x6ce35e20, 0x3a0f7: 0x6ce36020,\n\t0x3a0f8: 0x6ce36220, 0x3a0f9: 0x6ce36420, 0x3a0fa: 0x6ce36620, 0x3a0fb: 0x6ce36820,\n\t0x3a0fc: 0x6ce36a20, 0x3a0fd: 0x6ce36c20, 0x3a0fe: 0x6ce36e20, 0x3a0ff: 0x6ce37020,\n\t// Block 0xe84, offset 0x3a100\n\t0x3a100: 0x6ce37220, 0x3a101: 0x6ce37420, 0x3a102: 0x6ce37620, 0x3a103: 0x6ce37820,\n\t0x3a104: 0x6ce37a20, 0x3a105: 0x6ce37c20, 0x3a106: 0x6ce37e20, 0x3a107: 0x6ce38020,\n\t0x3a108: 0x6ce38220, 0x3a109: 0x6ce38420, 0x3a10a: 0x6ce38620, 0x3a10b: 0x6ce38820,\n\t0x3a10c: 0x6ce38a20, 0x3a10d: 0x6ce38c20, 0x3a10e: 0x6ce38e20, 0x3a10f: 0x6ce39020,\n\t0x3a110: 0x6ce39220, 0x3a111: 0x6ce39420, 0x3a112: 0x6ce39620, 0x3a113: 0x6ce39820,\n\t0x3a114: 0x6ce39a20, 0x3a115: 0x6ce39c20, 0x3a116: 0x6ce39e20, 0x3a117: 0x6ce3a020,\n\t0x3a118: 0x6ce3a220, 0x3a119: 0x6ce3a420, 0x3a11a: 0x6ce3a620, 0x3a11b: 0x6ce3a820,\n\t0x3a11c: 0x6ce3aa20, 0x3a11d: 0x6d11a220, 0x3a11e: 0x6d11a420, 0x3a11f: 0x6d11a620,\n\t0x3a120: 0x6d11a820, 0x3a121: 0x6d11aa20, 0x3a122: 0x6d11ac20, 0x3a123: 0x6d11ae20,\n\t0x3a124: 0x6d11b020, 0x3a125: 0x6d11b220, 0x3a126: 0x6d11b420, 0x3a127: 0x6d11b620,\n\t0x3a128: 0x6d11b820, 0x3a129: 0x6d11ba20, 0x3a12a: 0x6d11bc20, 0x3a12b: 0x6d11be20,\n\t0x3a12c: 0x6d11c020, 0x3a12d: 0x6d11c220, 0x3a12e: 0x6d11c420, 0x3a12f: 0x6d11c620,\n\t0x3a130: 0x6d11c820, 0x3a131: 0x6d11ca20, 0x3a132: 0x6d11cc20, 0x3a133: 0x6d11ce20,\n\t0x3a134: 0x6d11d020, 0x3a135: 0x6d11d220, 0x3a136: 0x6d11d420, 0x3a137: 0x6d11d620,\n\t0x3a138: 0x6d11d820, 0x3a139: 0x6d11da20, 0x3a13a: 0x6d11dc20, 0x3a13b: 0x6d11de20,\n\t0x3a13c: 0x6d11e020, 0x3a13d: 0x6d11e220, 0x3a13e: 0x6d11e420, 0x3a13f: 0x6d11e620,\n\t// Block 0xe85, offset 0x3a140\n\t0x3a140: 0x6d11e820, 0x3a141: 0x6d11ea20, 0x3a142: 0x6d11ec20, 0x3a143: 0x6d11ee20,\n\t0x3a144: 0x6d11f020, 0x3a145: 0x6d11f220, 0x3a146: 0x6d3f9c20, 0x3a147: 0x6d3f9e20,\n\t0x3a148: 0x6d3fa020, 0x3a149: 0x6d3fa220, 0x3a14a: 0x6d3fa420, 0x3a14b: 0x6d3fa620,\n\t0x3a14c: 0x6d3fa820, 0x3a14d: 0x6d3faa20, 0x3a14e: 0x6d3fac20, 0x3a14f: 0x6d3fae20,\n\t0x3a150: 0x6d3fb020, 0x3a151: 0x6d3fb220, 0x3a152: 0x6d3fb420, 0x3a153: 0x6d3fb620,\n\t0x3a154: 0x6d3fb820, 0x3a155: 0x6d3fba20, 0x3a156: 0x6d3fbc20, 0x3a157: 0x6d3fbe20,\n\t0x3a158: 0x6d3fc020, 0x3a159: 0x6d3fc220, 0x3a15a: 0x6d3fc420, 0x3a15b: 0x6d3fc620,\n\t0x3a15c: 0x6d3fc820, 0x3a15d: 0x6d3fca20, 0x3a15e: 0x6d3fcc20, 0x3a15f: 0x6d3fce20,\n\t0x3a160: 0x6d3fd020, 0x3a161: 0x6d3fd220, 0x3a162: 0x6d3fd420, 0x3a163: 0x6d3fd620,\n\t0x3a164: 0x6d3fd820, 0x3a165: 0x6d3fda20, 0x3a166: 0x6d3fdc20, 0x3a167: 0x6d3fde20,\n\t0x3a168: 0x6d3fe020, 0x3a169: 0x6d3fe220, 0x3a16a: 0x6d3fe420, 0x3a16b: 0x6d3fe620,\n\t0x3a16c: 0x6d3fe820, 0x3a16d: 0x6d3fea20, 0x3a16e: 0x6d3fec20, 0x3a16f: 0x6d3fee20,\n\t0x3a170: 0x6d3ff020, 0x3a171: 0x6d3ff220, 0x3a172: 0x6d3ff420, 0x3a173: 0x6d3ff620,\n\t0x3a174: 0x6d6c8a20, 0x3a175: 0x6d6c8c20, 0x3a176: 0x6d6c8e20, 0x3a177: 0x6d6c9020,\n\t0x3a178: 0x6d6c9220, 0x3a179: 0x6d6c9420, 0x3a17a: 0x6d6c9620, 0x3a17b: 0x6d6c9820,\n\t0x3a17c: 0x6d6c9a20, 0x3a17d: 0x6d6c9c20, 0x3a17e: 0x6d6c9e20, 0x3a17f: 0x6d6ca020,\n\t// Block 0xe86, offset 0x3a180\n\t0x3a180: 0x6d6ca220, 0x3a181: 0x6d6ca420, 0x3a182: 0x6d6ca620, 0x3a183: 0x6d6ca820,\n\t0x3a184: 0x6d6caa20, 0x3a185: 0x6d6cac20, 0x3a186: 0x6d6cae20, 0x3a187: 0x6d6cb020,\n\t0x3a188: 0x6d6cb220, 0x3a189: 0x6d6cb420, 0x3a18a: 0x6d6cb620, 0x3a18b: 0x6d6cb820,\n\t0x3a18c: 0x6d6cba20, 0x3a18d: 0x6d6cbc20, 0x3a18e: 0x6d6cbe20, 0x3a18f: 0x6d6cc020,\n\t0x3a190: 0x6d6cc220, 0x3a191: 0x6d6cc420, 0x3a192: 0x6d6cc620, 0x3a193: 0x6d784820,\n\t0x3a194: 0x6d6cc820, 0x3a195: 0x6d6cca20, 0x3a196: 0x6d6ccc20, 0x3a197: 0x6d6cce20,\n\t0x3a198: 0x6d6cd020, 0x3a199: 0x6d6cd220, 0x3a19a: 0x6d6cd420, 0x3a19b: 0x6d6cd620,\n\t0x3a19c: 0x6d6cd820, 0x3a19d: 0x6d6cda20, 0x3a19e: 0x6d6cdc20, 0x3a19f: 0x6d6cde20,\n\t0x3a1a0: 0x6d6ce020, 0x3a1a1: 0x6d6ce220, 0x3a1a2: 0x6d6ce420, 0x3a1a3: 0x6d6ce620,\n\t0x3a1a4: 0x6d6ce820, 0x3a1a5: 0x6d95b220, 0x3a1a6: 0x6d95b420, 0x3a1a7: 0x6d95b620,\n\t0x3a1a8: 0x6d95b820, 0x3a1a9: 0x6d95ba20, 0x3a1aa: 0x6d95bc20, 0x3a1ab: 0x6d95be20,\n\t0x3a1ac: 0x6d95c020, 0x3a1ad: 0x6d95c220, 0x3a1ae: 0x6d95c420, 0x3a1af: 0x6d95c620,\n\t0x3a1b0: 0x6d95c820, 0x3a1b1: 0x6d95ca20, 0x3a1b2: 0x6d95cc20, 0x3a1b3: 0x6d95ce20,\n\t0x3a1b4: 0x6d95d020, 0x3a1b5: 0x6d95d220, 0x3a1b6: 0x6d95d420, 0x3a1b7: 0x6d95d620,\n\t0x3a1b8: 0x6d95d820, 0x3a1b9: 0x6d95da20, 0x3a1ba: 0x6d95dc20, 0x3a1bb: 0x6d95de20,\n\t0x3a1bc: 0x6d95e020, 0x3a1bd: 0x6d95e220, 0x3a1be: 0x6d95e420, 0x3a1bf: 0x6d95e620,\n\t// Block 0xe87, offset 0x3a1c0\n\t0x3a1c0: 0x6d95e820, 0x3a1c1: 0x6d95ea20, 0x3a1c2: 0x6d95ec20, 0x3a1c3: 0x6d95ee20,\n\t0x3a1c4: 0x6d95f020, 0x3a1c5: 0x6d95f220, 0x3a1c6: 0x6d95f420, 0x3a1c7: 0x6db8c620,\n\t0x3a1c8: 0x6db8c820, 0x3a1c9: 0x6db8ca20, 0x3a1ca: 0x6db8cc20, 0x3a1cb: 0x6db8ce20,\n\t0x3a1cc: 0x6db8d020, 0x3a1cd: 0x6db8d220, 0x3a1ce: 0x6db8d420, 0x3a1cf: 0x6db8d620,\n\t0x3a1d0: 0x6db8d820, 0x3a1d1: 0x6db8da20, 0x3a1d2: 0x6db8dc20, 0x3a1d3: 0x6db8de20,\n\t0x3a1d4: 0x6db8e020, 0x3a1d5: 0x6db8e220, 0x3a1d6: 0x6db8e420, 0x3a1d7: 0x6db8e620,\n\t0x3a1d8: 0x6db8e820, 0x3a1d9: 0x6db8ea20, 0x3a1da: 0x6db8ec20, 0x3a1db: 0x6db8ee20,\n\t0x3a1dc: 0x6db8f020, 0x3a1dd: 0x6db8f220, 0x3a1de: 0x6db8f420, 0x3a1df: 0x6db8f620,\n\t0x3a1e0: 0x6db8f820, 0x3a1e1: 0x6dd72620, 0x3a1e2: 0x6dd72820, 0x3a1e3: 0x6dd72a20,\n\t0x3a1e4: 0x6dd72c20, 0x3a1e5: 0x6dd72e20, 0x3a1e6: 0x6dd73020, 0x3a1e7: 0x6dd73220,\n\t0x3a1e8: 0x6dd73420, 0x3a1e9: 0x6dd73620, 0x3a1ea: 0x6dd73820, 0x3a1eb: 0x6dd73a20,\n\t0x3a1ec: 0x6dd73c20, 0x3a1ed: 0x6dd73e20, 0x3a1ee: 0x6dd74020, 0x3a1ef: 0x6dd74220,\n\t0x3a1f0: 0x6dd74420, 0x3a1f1: 0x6dd74620, 0x3a1f2: 0x6dd74820, 0x3a1f3: 0x6dd74a20,\n\t0x3a1f4: 0x6dd74c20, 0x3a1f5: 0x6dd74e20, 0x3a1f6: 0x6dd75020, 0x3a1f7: 0x6defe220,\n\t0x3a1f8: 0x6defe420, 0x3a1f9: 0x6defe620, 0x3a1fa: 0x6defe820, 0x3a1fb: 0x6defea20,\n\t0x3a1fc: 0x6e03e620, 0x3a1fd: 0x6defec20, 0x3a1fe: 0x6defee20, 0x3a1ff: 0x6deff020,\n\t// Block 0xe88, offset 0x3a200\n\t0x3a200: 0x6deff220, 0x3a201: 0x6deff420, 0x3a202: 0x6e03fe20, 0x3a203: 0x6e040020,\n\t0x3a204: 0x6e040220, 0x3a205: 0x6e040420, 0x3a206: 0x6e040620, 0x3a207: 0x6e040820,\n\t0x3a208: 0x6e040a20, 0x3a209: 0x6e040c20, 0x3a20a: 0x6e040e20, 0x3a20b: 0x6e041020,\n\t0x3a20c: 0x6e041220, 0x3a20d: 0x6e041420, 0x3a20e: 0x6e041620, 0x3a20f: 0x6e041820,\n\t0x3a210: 0x6e041a20, 0x3a211: 0x6e041c20, 0x3a212: 0x6e153e20, 0x3a213: 0x6e154020,\n\t0x3a214: 0x6e154220, 0x3a215: 0x6e154420, 0x3a216: 0x6e154620, 0x3a217: 0x6e154820,\n\t0x3a218: 0x6e154a20, 0x3a219: 0x6e22de20, 0x3a21a: 0x6e22e020, 0x3a21b: 0x6e22e220,\n\t0x3a21c: 0x6e22e420, 0x3a21d: 0x6e22e620, 0x3a21e: 0x6e22e820, 0x3a21f: 0x6e2d0c20,\n\t0x3a220: 0x6e2d0e20, 0x3a221: 0x6e2d1020, 0x3a222: 0x6e2d1220, 0x3a223: 0x6e2d1420,\n\t0x3a224: 0x6e34fa20, 0x3a225: 0x6e34fc20, 0x3a226: 0x6e3aa820, 0x3a227: 0x6e3e6a20,\n\t0x3a228: 0x6c00ca20, 0x3a229: 0x6c052220, 0x3a22a: 0x6c052420, 0x3a22b: 0x6c0a9220,\n\t0x3a22c: 0x6c0a9420, 0x3a22d: 0x6c0a9620, 0x3a22e: 0x6c0a9820, 0x3a22f: 0x6c0a9a20,\n\t0x3a230: 0x6c0a9c20, 0x3a231: 0x6c0a9e20, 0x3a232: 0x6c0aa020, 0x3a233: 0x6c0aa220,\n\t0x3a234: 0x6c0aa420, 0x3a235: 0x6c0aa620, 0x3a236: 0x6c154e20, 0x3a237: 0x6c155020,\n\t0x3a238: 0x6c155220, 0x3a239: 0x6c155420, 0x3a23a: 0x6c155620, 0x3a23b: 0x6c155820,\n\t0x3a23c: 0x6c155a20, 0x3a23d: 0x6c155c20, 0x3a23e: 0x6c155e20, 0x3a23f: 0x6c156020,\n\t// Block 0xe89, offset 0x3a240\n\t0x3a240: 0x6c156220, 0x3a241: 0x6c156420, 0x3a242: 0x6c156620, 0x3a243: 0x6c156820,\n\t0x3a244: 0x6c156a20, 0x3a245: 0x6c156c20, 0x3a246: 0x6c156e20, 0x3a247: 0x6c157020,\n\t0x3a248: 0x6c157220, 0x3a249: 0x6c157420, 0x3a24a: 0x6c157620, 0x3a24b: 0x6c157820,\n\t0x3a24c: 0x6c157a20, 0x3a24d: 0x6c157c20, 0x3a24e: 0x6c157e20, 0x3a24f: 0x6c158020,\n\t0x3a250: 0x6c158220, 0x3a251: 0x6c158420, 0x3a252: 0x6c158620, 0x3a253: 0x6c27ae20,\n\t0x3a254: 0x6c27b020, 0x3a255: 0x6c27b220, 0x3a256: 0x6c27b420, 0x3a257: 0x6c27b620,\n\t0x3a258: 0x6c27b820, 0x3a259: 0x6c27ba20, 0x3a25a: 0x6c27bc20, 0x3a25b: 0x6c27be20,\n\t0x3a25c: 0x6c27c020, 0x3a25d: 0x6c27c220, 0x3a25e: 0x6c27c420, 0x3a25f: 0x6c27c620,\n\t0x3a260: 0x6c27c820, 0x3a261: 0x6c27ca20, 0x3a262: 0x6c27cc20, 0x3a263: 0x6c27ce20,\n\t0x3a264: 0x6c27d020, 0x3a265: 0x6c27d220, 0x3a266: 0x6c27d420, 0x3a267: 0x6c27d620,\n\t0x3a268: 0x6c27d820, 0x3a269: 0x6c27da20, 0x3a26a: 0x6c27dc20, 0x3a26b: 0x6c27de20,\n\t0x3a26c: 0x6c27e020, 0x3a26d: 0x6c27e220, 0x3a26e: 0x6c27e420, 0x3a26f: 0x6c41a020,\n\t0x3a270: 0x6c41a220, 0x3a271: 0x6c41a420, 0x3a272: 0x6c41a620, 0x3a273: 0x6c41a820,\n\t0x3a274: 0x6c41aa20, 0x3a275: 0x6c41ac20, 0x3a276: 0x6c41ae20, 0x3a277: 0x6c41b020,\n\t0x3a278: 0x6c41b220, 0x3a279: 0x6c41b420, 0x3a27a: 0x6c41b620, 0x3a27b: 0x6c41b820,\n\t0x3a27c: 0x6c41ba20, 0x3a27d: 0x6c41bc20, 0x3a27e: 0x6c41be20, 0x3a27f: 0x6c41c020,\n\t// Block 0xe8a, offset 0x3a280\n\t0x3a280: 0x6c41c220, 0x3a281: 0x6c41c420, 0x3a282: 0x6c41c620, 0x3a283: 0x6c41c820,\n\t0x3a284: 0x6c41ca20, 0x3a285: 0x6c41cc20, 0x3a286: 0x6c41ce20, 0x3a287: 0x6c41d020,\n\t0x3a288: 0x6c41d220, 0x3a289: 0x6c41d420, 0x3a28a: 0x6c41d620, 0x3a28b: 0x6c620e20,\n\t0x3a28c: 0x6c621020, 0x3a28d: 0x6c621220, 0x3a28e: 0x6c621420, 0x3a28f: 0x6c621620,\n\t0x3a290: 0x6c621820, 0x3a291: 0x6c621a20, 0x3a292: 0x6c621c20, 0x3a293: 0x6c621e20,\n\t0x3a294: 0x6c622020, 0x3a295: 0x6c622220, 0x3a296: 0x6c622420, 0x3a297: 0x6c622620,\n\t0x3a298: 0x6c622820, 0x3a299: 0x6c622a20, 0x3a29a: 0x6c622c20, 0x3a29b: 0x6c622e20,\n\t0x3a29c: 0x6c623020, 0x3a29d: 0x6c623220, 0x3a29e: 0x6c623420, 0x3a29f: 0x6c623620,\n\t0x3a2a0: 0x6c623820, 0x3a2a1: 0x6c623a20, 0x3a2a2: 0x6c623c20, 0x3a2a3: 0x6c623e20,\n\t0x3a2a4: 0x6c624020, 0x3a2a5: 0x6c624220, 0x3a2a6: 0x6c624420, 0x3a2a7: 0x6c624620,\n\t0x3a2a8: 0x6c624820, 0x3a2a9: 0x6c624a20, 0x3a2aa: 0x6c624c20, 0x3a2ab: 0x6c889a20,\n\t0x3a2ac: 0x6c889c20, 0x3a2ad: 0x6c889e20, 0x3a2ae: 0x6c88a020, 0x3a2af: 0x6c88a220,\n\t0x3a2b0: 0x6c88a420, 0x3a2b1: 0x6c88a620, 0x3a2b2: 0x6c88a820, 0x3a2b3: 0x6c88aa20,\n\t0x3a2b4: 0x6c88ac20, 0x3a2b5: 0x6c88ae20, 0x3a2b6: 0x6c88b020, 0x3a2b7: 0x6c88b220,\n\t0x3a2b8: 0x6c88b420, 0x3a2b9: 0x6c88b620, 0x3a2ba: 0x6c88b820, 0x3a2bb: 0x6c88ba20,\n\t0x3a2bc: 0x6c88bc20, 0x3a2bd: 0x6c88be20, 0x3a2be: 0x6c88c020, 0x3a2bf: 0x6c88c220,\n\t// Block 0xe8b, offset 0x3a2c0\n\t0x3a2c0: 0x6c88c420, 0x3a2c1: 0x6c88c620, 0x3a2c2: 0x6c88c820, 0x3a2c3: 0x6c88ca20,\n\t0x3a2c4: 0x6c88cc20, 0x3a2c5: 0x6c88ce20, 0x3a2c6: 0x6c88d020, 0x3a2c7: 0x6c88d220,\n\t0x3a2c8: 0x6c88d420, 0x3a2c9: 0x6c88d620, 0x3a2ca: 0x6c88d820, 0x3a2cb: 0x6c88da20,\n\t0x3a2cc: 0x6c88dc20, 0x3a2cd: 0x6c88de20, 0x3a2ce: 0x6c88e020, 0x3a2cf: 0x6cb42a20,\n\t0x3a2d0: 0x6cb42c20, 0x3a2d1: 0x6cb42e20, 0x3a2d2: 0x6cb43020, 0x3a2d3: 0x6cb43220,\n\t0x3a2d4: 0x6cb43420, 0x3a2d5: 0x6cb43620, 0x3a2d6: 0x6cb43820, 0x3a2d7: 0x6ce3e620,\n\t0x3a2d8: 0x6cb43a20, 0x3a2d9: 0x6cb43c20, 0x3a2da: 0x6cb43e20, 0x3a2db: 0x6cb44020,\n\t0x3a2dc: 0x6cb44220, 0x3a2dd: 0x6cb44420, 0x3a2de: 0x6cb44620, 0x3a2df: 0x6cb44820,\n\t0x3a2e0: 0x6cb44a20, 0x3a2e1: 0x6cb44c20, 0x3a2e2: 0x6cb44e20, 0x3a2e3: 0x6cb45020,\n\t0x3a2e4: 0x6cb45220, 0x3a2e5: 0x6cb45420, 0x3a2e6: 0x6cb45620, 0x3a2e7: 0x6cb45820,\n\t0x3a2e8: 0x6cb45a20, 0x3a2e9: 0x6cb45c20, 0x3a2ea: 0x6cb45e20, 0x3a2eb: 0x6cb46020,\n\t0x3a2ec: 0x6cb46220, 0x3a2ed: 0x6cb46420, 0x3a2ee: 0x6cb46620, 0x3a2ef: 0x6cb46820,\n\t0x3a2f0: 0x6cb46a20, 0x3a2f1: 0x6cb46c20, 0x3a2f2: 0x6ce3e820, 0x3a2f3: 0x6ce3ea20,\n\t0x3a2f4: 0x6ce3ec20, 0x3a2f5: 0x6ce3ee20, 0x3a2f6: 0x6ce3f020, 0x3a2f7: 0x6ce3f220,\n\t0x3a2f8: 0x6ce3f420, 0x3a2f9: 0x6ce3f620, 0x3a2fa: 0x6ce3f820, 0x3a2fb: 0x6ce3fa20,\n\t0x3a2fc: 0x6ce3fc20, 0x3a2fd: 0x6ce3fe20, 0x3a2fe: 0x6ce40020, 0x3a2ff: 0x6ce40220,\n\t// Block 0xe8c, offset 0x3a300\n\t0x3a300: 0x6ce40420, 0x3a301: 0x6ce40620, 0x3a302: 0x6ce40820, 0x3a303: 0x6ce40a20,\n\t0x3a304: 0x6ce40c20, 0x3a305: 0x6ce40e20, 0x3a306: 0x6ce41020, 0x3a307: 0x6ce41220,\n\t0x3a308: 0x6ce41420, 0x3a309: 0x6ce41620, 0x3a30a: 0x6ce41820, 0x3a30b: 0x6d122220,\n\t0x3a30c: 0x6d122420, 0x3a30d: 0x6d122620, 0x3a30e: 0x6d122820, 0x3a30f: 0x6d122a20,\n\t0x3a310: 0x6d122c20, 0x3a311: 0x6d122e20, 0x3a312: 0x6d123020, 0x3a313: 0x6d123220,\n\t0x3a314: 0x6d123420, 0x3a315: 0x6d123620, 0x3a316: 0x6d123820, 0x3a317: 0x6d123a20,\n\t0x3a318: 0x6d123c20, 0x3a319: 0x6d123e20, 0x3a31a: 0x6d124020, 0x3a31b: 0x6d124220,\n\t0x3a31c: 0x6d124420, 0x3a31d: 0x6d124620, 0x3a31e: 0x6d124820, 0x3a31f: 0x6d124a20,\n\t0x3a320: 0x6d124c20, 0x3a321: 0x6d124e20, 0x3a322: 0x6d125020, 0x3a323: 0x6d125220,\n\t0x3a324: 0x6d125420, 0x3a325: 0x6d125620, 0x3a326: 0x6d125820, 0x3a327: 0x6d125a20,\n\t0x3a328: 0x6d125c20, 0x3a329: 0x6d125e20, 0x3a32a: 0x6d126020, 0x3a32b: 0x6d403020,\n\t0x3a32c: 0x6d403220, 0x3a32d: 0x6d403420, 0x3a32e: 0x6d403620, 0x3a32f: 0x6d403820,\n\t0x3a330: 0x6d403a20, 0x3a331: 0x6d403c20, 0x3a332: 0x6d403e20, 0x3a333: 0x6d404020,\n\t0x3a334: 0x6d404220, 0x3a335: 0x6d404420, 0x3a336: 0x6d404620, 0x3a337: 0x6d404820,\n\t0x3a338: 0x6d404a20, 0x3a339: 0x6d126220, 0x3a33a: 0x6d404c20, 0x3a33b: 0x6d404e20,\n\t0x3a33c: 0x6d405020, 0x3a33d: 0x6d405220, 0x3a33e: 0x6d405420, 0x3a33f: 0x6d405620,\n\t// Block 0xe8d, offset 0x3a340\n\t0x3a340: 0x6d405820, 0x3a341: 0x6d405a20, 0x3a342: 0x6d405c20, 0x3a343: 0x6d405e20,\n\t0x3a344: 0x6d406020, 0x3a345: 0x6d406220, 0x3a346: 0x6d406420, 0x3a347: 0x6d406620,\n\t0x3a348: 0x6d406820, 0x3a349: 0x6d406a20, 0x3a34a: 0x6d406c20, 0x3a34b: 0x6d406e20,\n\t0x3a34c: 0x6d407020, 0x3a34d: 0x6d407220, 0x3a34e: 0x6d407420, 0x3a34f: 0x6d407620,\n\t0x3a350: 0x6d407820, 0x3a351: 0x6d6d1820, 0x3a352: 0x6d6d1a20, 0x3a353: 0x6d6d1c20,\n\t0x3a354: 0x6d6d1e20, 0x3a355: 0x6d6d2020, 0x3a356: 0x6d6d2220, 0x3a357: 0x6d6d2420,\n\t0x3a358: 0x6d6d2620, 0x3a359: 0x6d6d2820, 0x3a35a: 0x6d6d2a20, 0x3a35b: 0x6d6d2c20,\n\t0x3a35c: 0x6d6d2e20, 0x3a35d: 0x6d6d3020, 0x3a35e: 0x6d6d3220, 0x3a35f: 0x6d6d3420,\n\t0x3a360: 0x6d6d3620, 0x3a361: 0x6d6d3820, 0x3a362: 0x6d6d3a20, 0x3a363: 0x6d6d3c20,\n\t0x3a364: 0x6d6d3e20, 0x3a365: 0x6d6d4020, 0x3a366: 0x6d6d4220, 0x3a367: 0x6d960820,\n\t0x3a368: 0x6d960a20, 0x3a369: 0x6d960c20, 0x3a36a: 0x6d960e20, 0x3a36b: 0x6d961020,\n\t0x3a36c: 0x6d961220, 0x3a36d: 0x6d961420, 0x3a36e: 0x6d961620, 0x3a36f: 0x6d961820,\n\t0x3a370: 0x6d961a20, 0x3a371: 0x6d961c20, 0x3a372: 0x6d961e20, 0x3a373: 0x6d962020,\n\t0x3a374: 0x6d962220, 0x3a375: 0x6d962420, 0x3a376: 0x6d962620, 0x3a377: 0x6d962820,\n\t0x3a378: 0x6d962a20, 0x3a379: 0x6d962c20, 0x3a37a: 0x6db90c20, 0x3a37b: 0x6db90e20,\n\t0x3a37c: 0x6db91020, 0x3a37d: 0x6db91220, 0x3a37e: 0x6db91420, 0x3a37f: 0x6db91620,\n\t// Block 0xe8e, offset 0x3a380\n\t0x3a380: 0x6db91820, 0x3a381: 0x6db91a20, 0x3a382: 0x6db91c20, 0x3a383: 0x6db91e20,\n\t0x3a384: 0x6db92020, 0x3a385: 0x6db92220, 0x3a386: 0x6db92420, 0x3a387: 0x6db92620,\n\t0x3a388: 0x6db92820, 0x3a389: 0x6db92a20, 0x3a38a: 0x6db92c20, 0x3a38b: 0x6db92e20,\n\t0x3a38c: 0x6db93020, 0x3a38d: 0x6dd76220, 0x3a38e: 0x6dd76420, 0x3a38f: 0x6dd76620,\n\t0x3a390: 0x6dd76820, 0x3a391: 0x6dd76a20, 0x3a392: 0x6dd76c20, 0x3a393: 0x6dd76e20,\n\t0x3a394: 0x6dd77020, 0x3a395: 0x6dd77220, 0x3a396: 0x6dd77420, 0x3a397: 0x6dd77620,\n\t0x3a398: 0x6dd77820, 0x3a399: 0x6deffc20, 0x3a39a: 0x6deffe20, 0x3a39b: 0x6df00020,\n\t0x3a39c: 0x6df00220, 0x3a39d: 0x6df00420, 0x3a39e: 0x6df00620, 0x3a39f: 0x6df00820,\n\t0x3a3a0: 0x6e042a20, 0x3a3a1: 0x6e042c20, 0x3a3a2: 0x6e042e20, 0x3a3a3: 0x6e043020,\n\t0x3a3a4: 0x6e155420, 0x3a3a5: 0x6e155620, 0x3a3a6: 0x6e155820, 0x3a3a7: 0x6e155a20,\n\t0x3a3a8: 0x6e22ee20, 0x3a3a9: 0x6e2d1a20, 0x3a3aa: 0x6e2d1c20, 0x3a3ab: 0x6e2d1e20,\n\t0x3a3ac: 0x6e2d2020, 0x3a3ad: 0x6e2d2220, 0x3a3ae: 0x6e2d2420, 0x3a3af: 0x6e3e6c20,\n\t0x3a3b0: 0x6c88fc20, 0x3a3b1: 0x6c88fe20, 0x3a3b2: 0x6c890020, 0x3a3b3: 0x6c890220,\n\t0x3a3b4: 0x6cb49620, 0x3a3b5: 0x6cb49820, 0x3a3b6: 0x6cb49a20, 0x3a3b7: 0x6cb49c20,\n\t0x3a3b8: 0x6cb49e20, 0x3a3b9: 0x6cb4a020, 0x3a3ba: 0x6cb4a220, 0x3a3bb: 0x6cb4a420,\n\t0x3a3bc: 0x6cb4a620, 0x3a3bd: 0x6cb4a820, 0x3a3be: 0x6cb4aa20, 0x3a3bf: 0x6cb4ac20,\n\t// Block 0xe8f, offset 0x3a3c0\n\t0x3a3c0: 0x6cb4ae20, 0x3a3c1: 0x6cb4b020, 0x3a3c2: 0x6cb4b220, 0x3a3c3: 0x6cb4b420,\n\t0x3a3c4: 0x6cb4b620, 0x3a3c5: 0x6cb4b820, 0x3a3c6: 0x6cb4ba20, 0x3a3c7: 0x6cb4bc20,\n\t0x3a3c8: 0x6cb4be20, 0x3a3c9: 0x6cb4c020, 0x3a3ca: 0x6cb4c220, 0x3a3cb: 0x6ce43820,\n\t0x3a3cc: 0x6ce43a20, 0x3a3cd: 0x6ce43c20, 0x3a3ce: 0x6ce43e20, 0x3a3cf: 0x6ce44020,\n\t0x3a3d0: 0x6ce44220, 0x3a3d1: 0x6ce44420, 0x3a3d2: 0x6ce44620, 0x3a3d3: 0x6ce44820,\n\t0x3a3d4: 0x6ce44a20, 0x3a3d5: 0x6ce44c20, 0x3a3d6: 0x6ce44e20, 0x3a3d7: 0x6ce45020,\n\t0x3a3d8: 0x6ce45220, 0x3a3d9: 0x6ce45420, 0x3a3da: 0x6ce45620, 0x3a3db: 0x6ce45820,\n\t0x3a3dc: 0x6ce45a20, 0x3a3dd: 0x6ce45c20, 0x3a3de: 0x6ce45e20, 0x3a3df: 0x6ce46020,\n\t0x3a3e0: 0x6ce46220, 0x3a3e1: 0x6ce46420, 0x3a3e2: 0x6ce46620, 0x3a3e3: 0x6ce46820,\n\t0x3a3e4: 0x6d129020, 0x3a3e5: 0x6d129220, 0x3a3e6: 0x6d129420, 0x3a3e7: 0x6d129620,\n\t0x3a3e8: 0x6d129820, 0x3a3e9: 0x6d129a20, 0x3a3ea: 0x6d129c20, 0x3a3eb: 0x6d129e20,\n\t0x3a3ec: 0x6d12a020, 0x3a3ed: 0x6d12a220, 0x3a3ee: 0x6d12a420, 0x3a3ef: 0x6d12a620,\n\t0x3a3f0: 0x6d12a820, 0x3a3f1: 0x6d12aa20, 0x3a3f2: 0x6d12ac20, 0x3a3f3: 0x6d12ae20,\n\t0x3a3f4: 0x6d12b020, 0x3a3f5: 0x6d12b220, 0x3a3f6: 0x6d12b420, 0x3a3f7: 0x6d409a20,\n\t0x3a3f8: 0x6d409c20, 0x3a3f9: 0x6d409e20, 0x3a3fa: 0x6d40a020, 0x3a3fb: 0x6d40a220,\n\t0x3a3fc: 0x6d40a420, 0x3a3fd: 0x6d40a620, 0x3a3fe: 0x6d40a820, 0x3a3ff: 0x6d40aa20,\n\t// Block 0xe90, offset 0x3a400\n\t0x3a400: 0x6d40ac20, 0x3a401: 0x6d40ae20, 0x3a402: 0x6d40b020, 0x3a403: 0x6d40b220,\n\t0x3a404: 0x6d40b420, 0x3a405: 0x6d40b620, 0x3a406: 0x6d40b820, 0x3a407: 0x6d40ba20,\n\t0x3a408: 0x6d40bc20, 0x3a409: 0x6d40be20, 0x3a40a: 0x6d40c020, 0x3a40b: 0x6d40c220,\n\t0x3a40c: 0x6d6d6a20, 0x3a40d: 0x6d6d6c20, 0x3a40e: 0x6d6d6e20, 0x3a40f: 0x6d6d7020,\n\t0x3a410: 0x6d6d7220, 0x3a411: 0x6d6d7420, 0x3a412: 0x6d6d7620, 0x3a413: 0x6d6d7820,\n\t0x3a414: 0x6d6d7a20, 0x3a415: 0x6d6d7c20, 0x3a416: 0x6d6d7e20, 0x3a417: 0x6d6d8020,\n\t0x3a418: 0x6d6d8220, 0x3a419: 0x6d6d8420, 0x3a41a: 0x6d6d8620, 0x3a41b: 0x6d6d8820,\n\t0x3a41c: 0x6d6d8a20, 0x3a41d: 0x6d6d8c20, 0x3a41e: 0x6d6d8e20, 0x3a41f: 0x6d6d9020,\n\t0x3a420: 0x6d6d9220, 0x3a421: 0x6d6d9420, 0x3a422: 0x6d6d9620, 0x3a423: 0x6d6d9820,\n\t0x3a424: 0x6d6d9a20, 0x3a425: 0x6d6d9c20, 0x3a426: 0x6d6d9e20, 0x3a427: 0x6d6da020,\n\t0x3a428: 0x6d6da220, 0x3a429: 0x6d965820, 0x3a42a: 0x6d965a20, 0x3a42b: 0x6d965c20,\n\t0x3a42c: 0x6d965e20, 0x3a42d: 0x6d966020, 0x3a42e: 0x6d966220, 0x3a42f: 0x6d966420,\n\t0x3a430: 0x6d966620, 0x3a431: 0x6d966820, 0x3a432: 0x6d966a20, 0x3a433: 0x6d966c20,\n\t0x3a434: 0x6d966e20, 0x3a435: 0x6d967020, 0x3a436: 0x6d967220, 0x3a437: 0x6d967420,\n\t0x3a438: 0x6d967620, 0x3a439: 0x6d967820, 0x3a43a: 0x6d967a20, 0x3a43b: 0x6d967c20,\n\t0x3a43c: 0x6d967e20, 0x3a43d: 0x6d968020, 0x3a43e: 0x6d968220, 0x3a43f: 0x6d968420,\n\t// Block 0xe91, offset 0x3a440\n\t0x3a440: 0x6d968620, 0x3a441: 0x6d968820, 0x3a442: 0x6d968a20, 0x3a443: 0x6d968c20,\n\t0x3a444: 0x6d968e20, 0x3a445: 0x6db95620, 0x3a446: 0x6db95820, 0x3a447: 0x6db95a20,\n\t0x3a448: 0x6db95c20, 0x3a449: 0x6db95e20, 0x3a44a: 0x6db96020, 0x3a44b: 0x6db96220,\n\t0x3a44c: 0x6db96420, 0x3a44d: 0x6db96620, 0x3a44e: 0x6db96820, 0x3a44f: 0x6db96a20,\n\t0x3a450: 0x6db96c20, 0x3a451: 0x6db96e20, 0x3a452: 0x6db97020, 0x3a453: 0x6db97220,\n\t0x3a454: 0x6db97420, 0x3a455: 0x6db97620, 0x3a456: 0x6db97820, 0x3a457: 0x6db97a20,\n\t0x3a458: 0x6db97c20, 0x3a459: 0x6db97e20, 0x3a45a: 0x6db98020, 0x3a45b: 0x6db98220,\n\t0x3a45c: 0x6db98420, 0x3a45d: 0x6db98620, 0x3a45e: 0x6db98820, 0x3a45f: 0x6db98a20,\n\t0x3a460: 0x6db98c20, 0x3a461: 0x6dd79220, 0x3a462: 0x6dd79420, 0x3a463: 0x6dd79620,\n\t0x3a464: 0x6dd79820, 0x3a465: 0x6dd79a20, 0x3a466: 0x6dd79c20, 0x3a467: 0x6dd79e20,\n\t0x3a468: 0x6dd7a020, 0x3a469: 0x6dd7a220, 0x3a46a: 0x6dd7a420, 0x3a46b: 0x6dd7a620,\n\t0x3a46c: 0x6dd7a820, 0x3a46d: 0x6dd7aa20, 0x3a46e: 0x6dd7ac20, 0x3a46f: 0x6dd7ae20,\n\t0x3a470: 0x6dd7b020, 0x3a471: 0x6dd7b220, 0x3a472: 0x6dd7b420, 0x3a473: 0x6dd7b620,\n\t0x3a474: 0x6dd7b820, 0x3a475: 0x6dd7ba20, 0x3a476: 0x6dd7bc20, 0x3a477: 0x6dd7be20,\n\t0x3a478: 0x6dd7c020, 0x3a479: 0x6dd7c220, 0x3a47a: 0x6dd7c420, 0x3a47b: 0x6dd7c620,\n\t0x3a47c: 0x6dd7c820, 0x3a47d: 0x6df01e20, 0x3a47e: 0x6df02020, 0x3a47f: 0x6df02220,\n\t// Block 0xe92, offset 0x3a480\n\t0x3a480: 0x6df02420, 0x3a481: 0x6df02620, 0x3a482: 0x6df02820, 0x3a483: 0x6df02a20,\n\t0x3a484: 0x6df02c20, 0x3a485: 0x6df02e20, 0x3a486: 0x6df03020, 0x3a487: 0x6df03220,\n\t0x3a488: 0x6df03420, 0x3a489: 0x6df03620, 0x3a48a: 0x6df03820, 0x3a48b: 0x6df03a20,\n\t0x3a48c: 0x6df03c20, 0x3a48d: 0x6df03e20, 0x3a48e: 0x6df04020, 0x3a48f: 0x6df04220,\n\t0x3a490: 0x6df04420, 0x3a491: 0x6df04620, 0x3a492: 0x6df04820, 0x3a493: 0x6df04a20,\n\t0x3a494: 0x6df04c20, 0x3a495: 0x6df04e20, 0x3a496: 0x6e044220, 0x3a497: 0x6e044420,\n\t0x3a498: 0x6e044620, 0x3a499: 0x6e044820, 0x3a49a: 0x6e044a20, 0x3a49b: 0x6e044c20,\n\t0x3a49c: 0x6e044e20, 0x3a49d: 0x6e045020, 0x3a49e: 0x6e045220, 0x3a49f: 0x6e045420,\n\t0x3a4a0: 0x6e045620, 0x3a4a1: 0x6e045820, 0x3a4a2: 0x6e045a20, 0x3a4a3: 0x6e045c20,\n\t0x3a4a4: 0x6e045e20, 0x3a4a5: 0x6e046020, 0x3a4a6: 0x6e156620, 0x3a4a7: 0x6e156820,\n\t0x3a4a8: 0x6e156a20, 0x3a4a9: 0x6e156c20, 0x3a4aa: 0x6e156e20, 0x3a4ab: 0x6e157020,\n\t0x3a4ac: 0x6e157220, 0x3a4ad: 0x6e157420, 0x3a4ae: 0x6e22f420, 0x3a4af: 0x6e22f620,\n\t0x3a4b0: 0x6e22f820, 0x3a4b1: 0x6e22fa20, 0x3a4b2: 0x6e22fc20, 0x3a4b3: 0x6e22fe20,\n\t0x3a4b4: 0x6e230020, 0x3a4b5: 0x6e230220, 0x3a4b6: 0x6e2d2820, 0x3a4b7: 0x6e2d2a20,\n\t0x3a4b8: 0x6e2d2c20, 0x3a4b9: 0x6e2d2e20, 0x3a4ba: 0x6e2d3020, 0x3a4bb: 0x6e2d3220,\n\t0x3a4bc: 0x6e2d3420, 0x3a4bd: 0x6e2d3620, 0x3a4be: 0x6e350a20, 0x3a4bf: 0x6e350c20,\n\t// Block 0xe93, offset 0x3a4c0\n\t0x3a4c0: 0x6e350e20, 0x3a4c1: 0x6e351020, 0x3a4c2: 0x6e351220, 0x3a4c3: 0x6e3aac20,\n\t0x3a4c4: 0x6e3aae20, 0x3a4c5: 0x6e3e7220, 0x3a4c6: 0x6e3e7420, 0x3a4c7: 0x6e413a20,\n\t0x3a4c8: 0x6e413c20, 0x3a4c9: 0x6e413e20, 0x3a4ca: 0x6e433a20, 0x3a4cb: 0x6e433c20,\n\t0x3a4cc: 0x6e433e20, 0x3a4cd: 0x6e45e220, 0x3a4ce: 0x6e45e420, 0x3a4cf: 0x6c890620,\n\t0x3a4d0: 0x6cb4c620, 0x3a4d1: 0x6cb4c820, 0x3a4d2: 0x6d40ca20, 0x3a4d3: 0x6d40cc20,\n\t0x3a4d4: 0x6d40ce20, 0x3a4d5: 0x6d6da620, 0x3a4d6: 0x6d6da820, 0x3a4d7: 0x6d6daa20,\n\t0x3a4d8: 0x6d969020, 0x3a4d9: 0x6d969220, 0x3a4da: 0x6db99220, 0x3a4db: 0x6db99420,\n\t0x3a4dc: 0x6db99620, 0x3a4dd: 0x6dd7cc20, 0x3a4de: 0x6e046420, 0x3a4df: 0x6e157820,\n\t0x3a4e0: 0x6e157a20, 0x3a4e1: 0x6e230420, 0x3a4e2: 0x6cb4ce20, 0x3a4e3: 0x6c890820,\n\t0x3a4e4: 0x6c890a20, 0x3a4e5: 0x6cb4d020, 0x3a4e6: 0x6ce47220, 0x3a4e7: 0x6ce47420,\n\t0x3a4e8: 0x6ce47620, 0x3a4e9: 0x6ce47820, 0x3a4ea: 0x6d12bc20, 0x3a4eb: 0x6d12be20,\n\t0x3a4ec: 0x6d40d020, 0x3a4ed: 0x6d6dac20, 0x3a4ee: 0x6d6dae20, 0x3a4ef: 0x6d6db020,\n\t0x3a4f0: 0x6d969420, 0x3a4f1: 0x6d969620, 0x3a4f2: 0x6db99a20, 0x3a4f3: 0x6db99c20,\n\t0x3a4f4: 0x6dd7d020, 0x3a4f5: 0x6dd7d220, 0x3a4f6: 0x6dd7d420, 0x3a4f7: 0x6dd7d620,\n\t0x3a4f8: 0x6e046820, 0x3a4f9: 0x6e157c20, 0x3a4fa: 0x6e157e20, 0x3a4fb: 0x6e3ab020,\n\t0x3a4fc: 0x6e456620, 0x3a4fd: 0x6c892a20, 0x3a4fe: 0x6c892c20, 0x3a4ff: 0x6c892e20,\n\t// Block 0xe94, offset 0x3a500\n\t0x3a500: 0x6c893020, 0x3a501: 0x6c893220, 0x3a502: 0x6cb50a20, 0x3a503: 0x6cb50c20,\n\t0x3a504: 0x6cb50e20, 0x3a505: 0x6cb51020, 0x3a506: 0x6cb51220, 0x3a507: 0x6cb51420,\n\t0x3a508: 0x6cb51620, 0x3a509: 0x6cb51820, 0x3a50a: 0x6ce4e420, 0x3a50b: 0x6ce4e620,\n\t0x3a50c: 0x6ce4e820, 0x3a50d: 0x6ce4ea20, 0x3a50e: 0x6ce4ec20, 0x3a50f: 0x6ce4ee20,\n\t0x3a510: 0x6ce4f020, 0x3a511: 0x6ce4f220, 0x3a512: 0x6ce4f420, 0x3a513: 0x6ce4f620,\n\t0x3a514: 0x6ce4f820, 0x3a515: 0x6ce4fa20, 0x3a516: 0x6ce4fc20, 0x3a517: 0x6ce4fe20,\n\t0x3a518: 0x6ce50020, 0x3a519: 0x6ce50220, 0x3a51a: 0x6ce50420, 0x3a51b: 0x6ce50620,\n\t0x3a51c: 0x6ce50820, 0x3a51d: 0x6ce50a20, 0x3a51e: 0x6ce50c20, 0x3a51f: 0x6ce50e20,\n\t0x3a520: 0x6ce51020, 0x3a521: 0x6ce51220, 0x3a522: 0x6ce51420, 0x3a523: 0x6ce51620,\n\t0x3a524: 0x6ce51820, 0x3a525: 0x6d135820, 0x3a526: 0x6d135a20, 0x3a527: 0x6d135c20,\n\t0x3a528: 0x6d135e20, 0x3a529: 0x6d136020, 0x3a52a: 0x6d136220, 0x3a52b: 0x6d136420,\n\t0x3a52c: 0x6d136620, 0x3a52d: 0x6d136820, 0x3a52e: 0x6d136a20, 0x3a52f: 0x6d136c20,\n\t0x3a530: 0x6d136e20, 0x3a531: 0x6d137020, 0x3a532: 0x6d137220, 0x3a533: 0x6d137420,\n\t0x3a534: 0x6d137620, 0x3a535: 0x6d137820, 0x3a536: 0x6d137a20, 0x3a537: 0x6d137c20,\n\t0x3a538: 0x6d137e20, 0x3a539: 0x6d138020, 0x3a53a: 0x6d138220, 0x3a53b: 0x6d138420,\n\t0x3a53c: 0x6d138620, 0x3a53d: 0x6d138820, 0x3a53e: 0x6d138a20, 0x3a53f: 0x6d138c20,\n\t// Block 0xe95, offset 0x3a540\n\t0x3a540: 0x6d138e20, 0x3a541: 0x6d139020, 0x3a542: 0x6d415a20, 0x3a543: 0x6d415c20,\n\t0x3a544: 0x6d415e20, 0x3a545: 0x6d416020, 0x3a546: 0x6d416220, 0x3a547: 0x6d416420,\n\t0x3a548: 0x6d416620, 0x3a549: 0x6d416820, 0x3a54a: 0x6d416a20, 0x3a54b: 0x6d416c20,\n\t0x3a54c: 0x6d416e20, 0x3a54d: 0x6d417020, 0x3a54e: 0x6d417220, 0x3a54f: 0x6d417420,\n\t0x3a550: 0x6d417620, 0x3a551: 0x6d417820, 0x3a552: 0x6d417a20, 0x3a553: 0x6d417c20,\n\t0x3a554: 0x6d417e20, 0x3a555: 0x6d418020, 0x3a556: 0x6d418220, 0x3a557: 0x6d418420,\n\t0x3a558: 0x6d418620, 0x3a559: 0x6d418820, 0x3a55a: 0x6d418a20, 0x3a55b: 0x6d418c20,\n\t0x3a55c: 0x6d418e20, 0x3a55d: 0x6d419020, 0x3a55e: 0x6d377020, 0x3a55f: 0x6d419220,\n\t0x3a560: 0x6d419420, 0x3a561: 0x6d419620, 0x3a562: 0x6d419820, 0x3a563: 0x6d419a20,\n\t0x3a564: 0x6d419c20, 0x3a565: 0x6d419e20, 0x3a566: 0x6d41a020, 0x3a567: 0x6d41a220,\n\t0x3a568: 0x6d41a420, 0x3a569: 0x6d41a620, 0x3a56a: 0x6d41a820, 0x3a56b: 0x6d41aa20,\n\t0x3a56c: 0x6d6e4a20, 0x3a56d: 0x6d6e4c20, 0x3a56e: 0x6d6e4e20, 0x3a56f: 0x6d6e5020,\n\t0x3a570: 0x6d6e5220, 0x3a571: 0x6d6e5420, 0x3a572: 0x6d6e5620, 0x3a573: 0x6d6e5820,\n\t0x3a574: 0x6d6e5a20, 0x3a575: 0x6d6e5c20, 0x3a576: 0x6d6e5e20, 0x3a577: 0x6d6e6020,\n\t0x3a578: 0x6d6e6220, 0x3a579: 0x6d6e6420, 0x3a57a: 0x6d6e6620, 0x3a57b: 0x6d6e6820,\n\t0x3a57c: 0x6d6e6a20, 0x3a57d: 0x6d6e6c20, 0x3a57e: 0x6d6e6e20, 0x3a57f: 0x6d6e7020,\n\t// Block 0xe96, offset 0x3a580\n\t0x3a580: 0x6d6e7220, 0x3a581: 0x6d6e7420, 0x3a582: 0x6d6e7620, 0x3a583: 0x6d6e7820,\n\t0x3a584: 0x6d6e7a20, 0x3a585: 0x6d6e7c20, 0x3a586: 0x6d6e7e20, 0x3a587: 0x6d6e8020,\n\t0x3a588: 0x6d6e8220, 0x3a589: 0x6d6e8420, 0x3a58a: 0x6d6e8620, 0x3a58b: 0x6d6e8820,\n\t0x3a58c: 0x6d6e8a20, 0x3a58d: 0x6d6e8c20, 0x3a58e: 0x6d6e8e20, 0x3a58f: 0x6d6e9020,\n\t0x3a590: 0x6d6e9220, 0x3a591: 0x6d6e9420, 0x3a592: 0x6d6e9620, 0x3a593: 0x6d6e9820,\n\t0x3a594: 0x6d6e9a20, 0x3a595: 0x6d6e9c20, 0x3a596: 0x6d6e9e20, 0x3a597: 0x6d6ea020,\n\t0x3a598: 0x6d6ea220, 0x3a599: 0x6d6ea420, 0x3a59a: 0x6d6ea620, 0x3a59b: 0x6d6ea820,\n\t0x3a59c: 0x6d6eaa20, 0x3a59d: 0x6d6eac20, 0x3a59e: 0x6d6eae20, 0x3a59f: 0x6d6eb020,\n\t0x3a5a0: 0x6d6eb220, 0x3a5a1: 0x6d6eb420, 0x3a5a2: 0x6d6eb620, 0x3a5a3: 0x6d6eb820,\n\t0x3a5a4: 0x6d6eba20, 0x3a5a5: 0x6d6ebc20, 0x3a5a6: 0x6d974620, 0x3a5a7: 0x6d974820,\n\t0x3a5a8: 0x6d974a20, 0x3a5a9: 0x6d974c20, 0x3a5aa: 0x6d974e20, 0x3a5ab: 0x6d975020,\n\t0x3a5ac: 0x6d975220, 0x3a5ad: 0x6d975420, 0x3a5ae: 0x6d975620, 0x3a5af: 0x6d975820,\n\t0x3a5b0: 0x6d975a20, 0x3a5b1: 0x6d975c20, 0x3a5b2: 0x6d975e20, 0x3a5b3: 0x6d976020,\n\t0x3a5b4: 0x6d976220, 0x3a5b5: 0x6d976420, 0x3a5b6: 0x6d976620, 0x3a5b7: 0x6d976820,\n\t0x3a5b8: 0x6d976a20, 0x3a5b9: 0x6d976c20, 0x3a5ba: 0x6d976e20, 0x3a5bb: 0x6d977020,\n\t0x3a5bc: 0x6d977220, 0x3a5bd: 0x6d977420, 0x3a5be: 0x6d977620, 0x3a5bf: 0x6d977820,\n\t// Block 0xe97, offset 0x3a5c0\n\t0x3a5c0: 0x6d977a20, 0x3a5c1: 0x6d977c20, 0x3a5c2: 0x6d977e20, 0x3a5c3: 0x6d978020,\n\t0x3a5c4: 0x6d978220, 0x3a5c5: 0x6d978420, 0x3a5c6: 0x6d978620, 0x3a5c7: 0x6d978820,\n\t0x3a5c8: 0x6d978a20, 0x3a5c9: 0x6d978c20, 0x3a5ca: 0x6d978e20, 0x3a5cb: 0x6d979020,\n\t0x3a5cc: 0x6d979220, 0x3a5cd: 0x6d979420, 0x3a5ce: 0x6d979620, 0x3a5cf: 0x6d979820,\n\t0x3a5d0: 0x6d979a20, 0x3a5d1: 0x6d979c20, 0x3a5d2: 0x6d979e20, 0x3a5d3: 0x6d97a020,\n\t0x3a5d4: 0x6d97a220, 0x3a5d5: 0x6d97a420, 0x3a5d6: 0x6d97a620, 0x3a5d7: 0x6d97a820,\n\t0x3a5d8: 0x6d97aa20, 0x3a5d9: 0x6d97ac20, 0x3a5da: 0x6d97ae20, 0x3a5db: 0x6d97b020,\n\t0x3a5dc: 0x6d97b220, 0x3a5dd: 0x6d97b420, 0x3a5de: 0x6d97b620, 0x3a5df: 0x6d97b820,\n\t0x3a5e0: 0x6d97ba20, 0x3a5e1: 0x6d97bc20, 0x3a5e2: 0x6d97be20, 0x3a5e3: 0x6d97c020,\n\t0x3a5e4: 0x6d97c220, 0x3a5e5: 0x6d97c420, 0x3a5e6: 0x6d97c620, 0x3a5e7: 0x6d97c820,\n\t0x3a5e8: 0x6d97ca20, 0x3a5e9: 0x6d97cc20, 0x3a5ea: 0x6d97ce20, 0x3a5eb: 0x6d97d020,\n\t0x3a5ec: 0x6d97d220, 0x3a5ed: 0x6d97d420, 0x3a5ee: 0x6d97d620, 0x3a5ef: 0x6dba2c20,\n\t0x3a5f0: 0x6dba2e20, 0x3a5f1: 0x6dba3020, 0x3a5f2: 0x6dba3220, 0x3a5f3: 0x6dba3420,\n\t0x3a5f4: 0x6dba3620, 0x3a5f5: 0x6dba3820, 0x3a5f6: 0x6dba3a20, 0x3a5f7: 0x6dba3c20,\n\t0x3a5f8: 0x6dba3e20, 0x3a5f9: 0x6dba4020, 0x3a5fa: 0x6dba4220, 0x3a5fb: 0x6dba4420,\n\t0x3a5fc: 0x6dba4620, 0x3a5fd: 0x6dba4820, 0x3a5fe: 0x6dba4a20, 0x3a5ff: 0x6dba4c20,\n\t// Block 0xe98, offset 0x3a600\n\t0x3a600: 0x6dba4e20, 0x3a601: 0x6dba5020, 0x3a602: 0x6dba5220, 0x3a603: 0x6dba5420,\n\t0x3a604: 0x6dba5620, 0x3a605: 0x6dba5820, 0x3a606: 0x6dba5a20, 0x3a607: 0x6dba5c20,\n\t0x3a608: 0x6dba5e20, 0x3a609: 0x6dba6020, 0x3a60a: 0x6dba6220, 0x3a60b: 0x6dba6420,\n\t0x3a60c: 0x6dba6620, 0x3a60d: 0x6dba6820, 0x3a60e: 0x6dba6a20, 0x3a60f: 0x6dba6c20,\n\t0x3a610: 0x6dba6e20, 0x3a611: 0x6dba7020, 0x3a612: 0x6dba7220, 0x3a613: 0x6dba7420,\n\t0x3a614: 0x6dba7620, 0x3a615: 0x6dba7820, 0x3a616: 0x6dba7a20, 0x3a617: 0x6dba7c20,\n\t0x3a618: 0x6dba7e20, 0x3a619: 0x6dba8020, 0x3a61a: 0x6dba8220, 0x3a61b: 0x6dba8420,\n\t0x3a61c: 0x6dba8620, 0x3a61d: 0x6dba8820, 0x3a61e: 0x6dba8a20, 0x3a61f: 0x6dba8c20,\n\t0x3a620: 0x6dba8e20, 0x3a621: 0x6dba9020, 0x3a622: 0x6dba9220, 0x3a623: 0x6dba9420,\n\t0x3a624: 0x6dba9620, 0x3a625: 0x6dba9820, 0x3a626: 0x6dba9a20, 0x3a627: 0x6dba9c20,\n\t0x3a628: 0x6dba9e20, 0x3a629: 0x6dbaa020, 0x3a62a: 0x6dbaa220, 0x3a62b: 0x6dbaa420,\n\t0x3a62c: 0x6dbaa620, 0x3a62d: 0x6dbaa820, 0x3a62e: 0x6dbaaa20, 0x3a62f: 0x6dbaac20,\n\t0x3a630: 0x6dbaae20, 0x3a631: 0x6dbab020, 0x3a632: 0x6dbab220, 0x3a633: 0x6dbab420,\n\t0x3a634: 0x6dbab620, 0x3a635: 0x6dbab820, 0x3a636: 0x6dbaba20, 0x3a637: 0x6dbabc20,\n\t0x3a638: 0x6dbabe20, 0x3a639: 0x6dbac020, 0x3a63a: 0x6dbac220, 0x3a63b: 0x6dbac420,\n\t0x3a63c: 0x6dbac620, 0x3a63d: 0x6dbac820, 0x3a63e: 0x6dbaca20, 0x3a63f: 0x6dbacc20,\n\t// Block 0xe99, offset 0x3a640\n\t0x3a640: 0x6dbace20, 0x3a641: 0x6dbad020, 0x3a642: 0x6dbad220, 0x3a643: 0x6dbad420,\n\t0x3a644: 0x6dbad620, 0x3a645: 0x6dbad820, 0x3a646: 0x6dbada20, 0x3a647: 0x6dd85a20,\n\t0x3a648: 0x6dd85c20, 0x3a649: 0x6dd85e20, 0x3a64a: 0x6dd86020, 0x3a64b: 0x6dd86220,\n\t0x3a64c: 0x6dd86420, 0x3a64d: 0x6dd86620, 0x3a64e: 0x6dd86820, 0x3a64f: 0x6dd86a20,\n\t0x3a650: 0x6dd86c20, 0x3a651: 0x6dd86e20, 0x3a652: 0x6dd87020, 0x3a653: 0x6dd87220,\n\t0x3a654: 0x6dd87420, 0x3a655: 0x6dd87620, 0x3a656: 0x6dd87820, 0x3a657: 0x6dd87a20,\n\t0x3a658: 0x6dd87c20, 0x3a659: 0x6dd87e20, 0x3a65a: 0x6dd88020, 0x3a65b: 0x6dd88220,\n\t0x3a65c: 0x6dd88420, 0x3a65d: 0x6dd88620, 0x3a65e: 0x6dd88820, 0x3a65f: 0x6dd88a20,\n\t0x3a660: 0x6dd88c20, 0x3a661: 0x6dd88e20, 0x3a662: 0x6dd89020, 0x3a663: 0x6dd89220,\n\t0x3a664: 0x6dd89420, 0x3a665: 0x6dd89620, 0x3a666: 0x6dd89820, 0x3a667: 0x6dd89a20,\n\t0x3a668: 0x6dd89c20, 0x3a669: 0x6dd89e20, 0x3a66a: 0x6dd8a020, 0x3a66b: 0x6dd8a220,\n\t0x3a66c: 0x6dd8a420, 0x3a66d: 0x6dd8a620, 0x3a66e: 0x6dd8a820, 0x3a66f: 0x6dd8aa20,\n\t0x3a670: 0x6dd8ac20, 0x3a671: 0x6dd8ae20, 0x3a672: 0x6dd8b020, 0x3a673: 0x6dd8b220,\n\t0x3a674: 0x6dd8b420, 0x3a675: 0x6dd8b620, 0x3a676: 0x6dd8b820, 0x3a677: 0x6dd8ba20,\n\t0x3a678: 0x6dd8bc20, 0x3a679: 0x6dd8be20, 0x3a67a: 0x6dd8c020, 0x3a67b: 0x6dd8c220,\n\t0x3a67c: 0x6dd8c420, 0x3a67d: 0x6dd8c620, 0x3a67e: 0x6dd8c820, 0x3a67f: 0x6dd8ca20,\n\t// Block 0xe9a, offset 0x3a680\n\t0x3a680: 0x6dd8cc20, 0x3a681: 0x6dd8ce20, 0x3a682: 0x6dd8d020, 0x3a683: 0x6dd8d220,\n\t0x3a684: 0x6dd8d420, 0x3a685: 0x6dd8d620, 0x3a686: 0x6dd8d820, 0x3a687: 0x6dd8da20,\n\t0x3a688: 0x6dd8dc20, 0x3a689: 0x6dd8de20, 0x3a68a: 0x6dd8e020, 0x3a68b: 0x6dd8e220,\n\t0x3a68c: 0x6dd8e420, 0x3a68d: 0x6dd8e620, 0x3a68e: 0x6dd8e820, 0x3a68f: 0x6df0d820,\n\t0x3a690: 0x6df0da20, 0x3a691: 0x6df0dc20, 0x3a692: 0x6df0de20, 0x3a693: 0x6df0e020,\n\t0x3a694: 0x6df0e220, 0x3a695: 0x6df0e420, 0x3a696: 0x6df0e620, 0x3a697: 0x6df0e820,\n\t0x3a698: 0x6df0ea20, 0x3a699: 0x6df0ec20, 0x3a69a: 0x6df0ee20, 0x3a69b: 0x6df0f020,\n\t0x3a69c: 0x6df0f220, 0x3a69d: 0x6df0f420, 0x3a69e: 0x6df0f620, 0x3a69f: 0x6df0f820,\n\t0x3a6a0: 0x6df0fa20, 0x3a6a1: 0x6df0fc20, 0x3a6a2: 0x6df0fe20, 0x3a6a3: 0x6df10020,\n\t0x3a6a4: 0x6df10220, 0x3a6a5: 0x6df10420, 0x3a6a6: 0x6df10620, 0x3a6a7: 0x6df10820,\n\t0x3a6a8: 0x6df10a20, 0x3a6a9: 0x6df10c20, 0x3a6aa: 0x6df10e20, 0x3a6ab: 0x6df11020,\n\t0x3a6ac: 0x6df11220, 0x3a6ad: 0x6df11420, 0x3a6ae: 0x6df11620, 0x3a6af: 0x6df11820,\n\t0x3a6b0: 0x6df11a20, 0x3a6b1: 0x6df11c20, 0x3a6b2: 0x6df11e20, 0x3a6b3: 0x6df12020,\n\t0x3a6b4: 0x6df12220, 0x3a6b5: 0x6df12420, 0x3a6b6: 0x6df12620, 0x3a6b7: 0x6df12820,\n\t0x3a6b8: 0x6df12a20, 0x3a6b9: 0x6df12c20, 0x3a6ba: 0x6df12e20, 0x3a6bb: 0x6df13020,\n\t0x3a6bc: 0x6df13220, 0x3a6bd: 0x6df13420, 0x3a6be: 0x6df13620, 0x3a6bf: 0x6df13820,\n\t// Block 0xe9b, offset 0x3a6c0\n\t0x3a6c0: 0x6df13a20, 0x3a6c1: 0x6df13c20, 0x3a6c2: 0x6df13e20, 0x3a6c3: 0x6df14020,\n\t0x3a6c4: 0x6df14220, 0x3a6c5: 0x6df14420, 0x3a6c6: 0x6df14620, 0x3a6c7: 0x6df14820,\n\t0x3a6c8: 0x6df14a20, 0x3a6c9: 0x6df14c20, 0x3a6ca: 0x6df14e20, 0x3a6cb: 0x6df15020,\n\t0x3a6cc: 0x6df15220, 0x3a6cd: 0x6e04e420, 0x3a6ce: 0x6e04e620, 0x3a6cf: 0x6e04e820,\n\t0x3a6d0: 0x6e04ea20, 0x3a6d1: 0x6e04ec20, 0x3a6d2: 0x6e04ee20, 0x3a6d3: 0x6e04f020,\n\t0x3a6d4: 0x6e04f220, 0x3a6d5: 0x6e15c420, 0x3a6d6: 0x6e04f420, 0x3a6d7: 0x6e04f620,\n\t0x3a6d8: 0x6e04f820, 0x3a6d9: 0x6e04fa20, 0x3a6da: 0x6e04fc20, 0x3a6db: 0x6e04fe20,\n\t0x3a6dc: 0x6e050020, 0x3a6dd: 0x6e050220, 0x3a6de: 0x6e050420, 0x3a6df: 0x6e050620,\n\t0x3a6e0: 0x6e050820, 0x3a6e1: 0x6e050a20, 0x3a6e2: 0x6e050c20, 0x3a6e3: 0x6e050e20,\n\t0x3a6e4: 0x6e051020, 0x3a6e5: 0x6e051220, 0x3a6e6: 0x6e051420, 0x3a6e7: 0x6e051620,\n\t0x3a6e8: 0x6e051820, 0x3a6e9: 0x6e051a20, 0x3a6ea: 0x6e051c20, 0x3a6eb: 0x6e051e20,\n\t0x3a6ec: 0x6e052020, 0x3a6ed: 0x6e052220, 0x3a6ee: 0x6e052420, 0x3a6ef: 0x6e052620,\n\t0x3a6f0: 0x6e052820, 0x3a6f1: 0x6e052a20, 0x3a6f2: 0x6e052c20, 0x3a6f3: 0x6e052e20,\n\t0x3a6f4: 0x6e053020, 0x3a6f5: 0x6e053220, 0x3a6f6: 0x6e053420, 0x3a6f7: 0x6e053620,\n\t0x3a6f8: 0x6e053820, 0x3a6f9: 0x6e053a20, 0x3a6fa: 0x6e053c20, 0x3a6fb: 0x6e053e20,\n\t0x3a6fc: 0x6e054020, 0x3a6fd: 0x6e054220, 0x3a6fe: 0x6e054420, 0x3a6ff: 0x6e054620,\n\t// Block 0xe9c, offset 0x3a700\n\t0x3a700: 0x6e054820, 0x3a701: 0x6e054a20, 0x3a702: 0x6e054c20, 0x3a703: 0x6e054e20,\n\t0x3a704: 0x6e055020, 0x3a705: 0x6e055220, 0x3a706: 0x6e055420, 0x3a707: 0x6e055620,\n\t0x3a708: 0x6e055820, 0x3a709: 0x6e055a20, 0x3a70a: 0x6e055c20, 0x3a70b: 0x6e055e20,\n\t0x3a70c: 0x6e056020, 0x3a70d: 0x6e056220, 0x3a70e: 0x6e056420, 0x3a70f: 0x6e056620,\n\t0x3a710: 0x6e056820, 0x3a711: 0x6e056a20, 0x3a712: 0x6e056c20, 0x3a713: 0x6e056e20,\n\t0x3a714: 0x6e057020, 0x3a715: 0x6e15c620, 0x3a716: 0x6e15c820, 0x3a717: 0x6e15ca20,\n\t0x3a718: 0x6e15cc20, 0x3a719: 0x6e15ce20, 0x3a71a: 0x6e15d020, 0x3a71b: 0x6e15d220,\n\t0x3a71c: 0x6e15d420, 0x3a71d: 0x6e15d620, 0x3a71e: 0x6e15d820, 0x3a71f: 0x6e15da20,\n\t0x3a720: 0x6e15dc20, 0x3a721: 0x6e15de20, 0x3a722: 0x6e15e020, 0x3a723: 0x6e15e220,\n\t0x3a724: 0x6e15e420, 0x3a725: 0x6e15e620, 0x3a726: 0x6e15e820, 0x3a727: 0x6e15ea20,\n\t0x3a728: 0x6e15ec20, 0x3a729: 0x6e15ee20, 0x3a72a: 0x6e15f020, 0x3a72b: 0x6e15f220,\n\t0x3a72c: 0x6e15f420, 0x3a72d: 0x6e15f620, 0x3a72e: 0x6e15f820, 0x3a72f: 0x6e15fa20,\n\t0x3a730: 0x6e15fc20, 0x3a731: 0x6e15fe20, 0x3a732: 0x6e160020, 0x3a733: 0x6e160220,\n\t0x3a734: 0x6e160420, 0x3a735: 0x6e160620, 0x3a736: 0x6e160820, 0x3a737: 0x6e160a20,\n\t0x3a738: 0x6e160c20, 0x3a739: 0x6e160e20, 0x3a73a: 0x6e161020, 0x3a73b: 0x6e161220,\n\t0x3a73c: 0x6e161420, 0x3a73d: 0x6e161620, 0x3a73e: 0x6e161820, 0x3a73f: 0x6e161a20,\n\t// Block 0xe9d, offset 0x3a740\n\t0x3a740: 0x6e161c20, 0x3a741: 0x6e161e20, 0x3a742: 0x6e162020, 0x3a743: 0x6e162220,\n\t0x3a744: 0x6e162420, 0x3a745: 0x6e162620, 0x3a746: 0x6e162820, 0x3a747: 0x6e162a20,\n\t0x3a748: 0x6e162c20, 0x3a749: 0x6e162e20, 0x3a74a: 0x6e163020, 0x3a74b: 0x6e163220,\n\t0x3a74c: 0x6e163420, 0x3a74d: 0x6e163620, 0x3a74e: 0x6e163820, 0x3a74f: 0x6e163a20,\n\t0x3a750: 0x6e163c20, 0x3a751: 0x6e163e20, 0x3a752: 0x6e233e20, 0x3a753: 0x6e234020,\n\t0x3a754: 0x6e234220, 0x3a755: 0x6e234420, 0x3a756: 0x6e234620, 0x3a757: 0x6e234820,\n\t0x3a758: 0x6e234a20, 0x3a759: 0x6e234c20, 0x3a75a: 0x6e234e20, 0x3a75b: 0x6e235020,\n\t0x3a75c: 0x6e235220, 0x3a75d: 0x6e235420, 0x3a75e: 0x6e235620, 0x3a75f: 0x6e235820,\n\t0x3a760: 0x6e235a20, 0x3a761: 0x6e235c20, 0x3a762: 0x6e235e20, 0x3a763: 0x6e236020,\n\t0x3a764: 0x6e236220, 0x3a765: 0x6e236420, 0x3a766: 0x6e236620, 0x3a767: 0x6e236820,\n\t0x3a768: 0x6e236a20, 0x3a769: 0x6e236c20, 0x3a76a: 0x6e236e20, 0x3a76b: 0x6e237020,\n\t0x3a76c: 0x6e237220, 0x3a76d: 0x6e237420, 0x3a76e: 0x6e237620, 0x3a76f: 0x6e237820,\n\t0x3a770: 0x6e237a20, 0x3a771: 0x6e237c20, 0x3a772: 0x6e237e20, 0x3a773: 0x6e238020,\n\t0x3a774: 0x6e238220, 0x3a775: 0x6e238420, 0x3a776: 0x6e238620, 0x3a777: 0x6e238820,\n\t0x3a778: 0x6e2d6a20, 0x3a779: 0x6e2d6c20, 0x3a77a: 0x6e2d6e20, 0x3a77b: 0x6e2d7020,\n\t0x3a77c: 0x6e2d7220, 0x3a77d: 0x6e2d7420, 0x3a77e: 0x6e2d7620, 0x3a77f: 0x6e2d7820,\n\t// Block 0xe9e, offset 0x3a780\n\t0x3a780: 0x6e2d7a20, 0x3a781: 0x6e2d7c20, 0x3a782: 0x6e2d7e20, 0x3a783: 0x6e2d8020,\n\t0x3a784: 0x6e2d8220, 0x3a785: 0x6e2d8420, 0x3a786: 0x6e2d8620, 0x3a787: 0x6e2d8820,\n\t0x3a788: 0x6e2d8a20, 0x3a789: 0x6e2d8c20, 0x3a78a: 0x6e2d8e20, 0x3a78b: 0x6e2d9020,\n\t0x3a78c: 0x6e2d9220, 0x3a78d: 0x6e2d9420, 0x3a78e: 0x6e2d9620, 0x3a78f: 0x6e2d9820,\n\t0x3a790: 0x6e2d9a20, 0x3a791: 0x6e2d9c20, 0x3a792: 0x6e2d9e20, 0x3a793: 0x6e2da020,\n\t0x3a794: 0x6e2da220, 0x3a795: 0x6e2da420, 0x3a796: 0x6e2da620, 0x3a797: 0x6e2da820,\n\t0x3a798: 0x6e2daa20, 0x3a799: 0x6e2dac20, 0x3a79a: 0x6e2dae20, 0x3a79b: 0x6e2db020,\n\t0x3a79c: 0x6e2db220, 0x3a79d: 0x6e352620, 0x3a79e: 0x6e352820, 0x3a79f: 0x6e352a20,\n\t0x3a7a0: 0x6e352c20, 0x3a7a1: 0x6e352e20, 0x3a7a2: 0x6e353020, 0x3a7a3: 0x6e353220,\n\t0x3a7a4: 0x6e353420, 0x3a7a5: 0x6e353620, 0x3a7a6: 0x6e353820, 0x3a7a7: 0x6e353a20,\n\t0x3a7a8: 0x6e353c20, 0x3a7a9: 0x6e353e20, 0x3a7aa: 0x6e354020, 0x3a7ab: 0x6e354220,\n\t0x3a7ac: 0x6e354420, 0x3a7ad: 0x6e354620, 0x3a7ae: 0x6e354820, 0x3a7af: 0x6e354a20,\n\t0x3a7b0: 0x6e354c20, 0x3a7b1: 0x6e354e20, 0x3a7b2: 0x6e355020, 0x3a7b3: 0x6e355220,\n\t0x3a7b4: 0x6e355420, 0x3a7b5: 0x6e355620, 0x3a7b6: 0x6e355820, 0x3a7b7: 0x6e355a20,\n\t0x3a7b8: 0x6e355c20, 0x3a7b9: 0x6e355e20, 0x3a7ba: 0x6e3ac220, 0x3a7bb: 0x6e3ac420,\n\t0x3a7bc: 0x6e3ac620, 0x3a7bd: 0x6e3ac820, 0x3a7be: 0x6e3aca20, 0x3a7bf: 0x6e3acc20,\n\t// Block 0xe9f, offset 0x3a7c0\n\t0x3a7c0: 0x6e3ace20, 0x3a7c1: 0x6e3ad020, 0x3a7c2: 0x6e3ad220, 0x3a7c3: 0x6e3ad420,\n\t0x3a7c4: 0x6e3ad620, 0x3a7c5: 0x6e3ad820, 0x3a7c6: 0x6e3ada20, 0x3a7c7: 0x6e3adc20,\n\t0x3a7c8: 0x6e3ade20, 0x3a7c9: 0x6e3e8420, 0x3a7ca: 0x6e3e8620, 0x3a7cb: 0x6e3e8820,\n\t0x3a7cc: 0x6e3e8a20, 0x3a7cd: 0x6e3e8c20, 0x3a7ce: 0x6e3e8e20, 0x3a7cf: 0x6e3e9020,\n\t0x3a7d0: 0x6e3e9220, 0x3a7d1: 0x6e3e9420, 0x3a7d2: 0x6e3e9620, 0x3a7d3: 0x6e3e9820,\n\t0x3a7d4: 0x6e3e9a20, 0x3a7d5: 0x6e3e9c20, 0x3a7d6: 0x6e3e9e20, 0x3a7d7: 0x6e3ea020,\n\t0x3a7d8: 0x6e3ea220, 0x3a7d9: 0x6e3ea420, 0x3a7da: 0x6e3ea620, 0x3a7db: 0x6e3ea820,\n\t0x3a7dc: 0x6e3eaa20, 0x3a7dd: 0x6e3eac20, 0x3a7de: 0x6e414820, 0x3a7df: 0x6e414a20,\n\t0x3a7e0: 0x6e414c20, 0x3a7e1: 0x6e414e20, 0x3a7e2: 0x6e415020, 0x3a7e3: 0x6e415220,\n\t0x3a7e4: 0x6e415420, 0x3a7e5: 0x6e415620, 0x3a7e6: 0x6e415820, 0x3a7e7: 0x6e415a20,\n\t0x3a7e8: 0x6e415c20, 0x3a7e9: 0x6e434820, 0x3a7ea: 0x6e434a20, 0x3a7eb: 0x6e434c20,\n\t0x3a7ec: 0x6e434e20, 0x3a7ed: 0x6e435020, 0x3a7ee: 0x6e435220, 0x3a7ef: 0x6e435420,\n\t0x3a7f0: 0x6e435620, 0x3a7f1: 0x6e3ae020, 0x3a7f2: 0x6e449820, 0x3a7f3: 0x6e449a20,\n\t0x3a7f4: 0x6e449c20, 0x3a7f5: 0x6e449e20, 0x3a7f6: 0x6e44a020, 0x3a7f7: 0x6e456820,\n\t0x3a7f8: 0x6e456a20, 0x3a7f9: 0x6e456c20, 0x3a7fa: 0x6e45e620, 0x3a7fb: 0x6e464020,\n\t0x3a7fc: 0x6e46d020, 0x3a7fd: 0x6e471620, 0x3a7fe: 0x6c41f620, 0x3a7ff: 0x6c41f820,\n\t// Block 0xea0, offset 0x3a800\n\t0x3a800: 0x6c629620, 0x3a801: 0x6c629820, 0x3a802: 0x6c629a20, 0x3a803: 0x6c897220,\n\t0x3a804: 0x6c897420, 0x3a805: 0x6c897620, 0x3a806: 0x6c897820, 0x3a807: 0x6ce56620,\n\t0x3a808: 0x6ce56820, 0x3a809: 0x6d13dc20, 0x3a80a: 0x6d13de20, 0x3a80b: 0x6d13e020,\n\t0x3a80c: 0x6d13e220, 0x3a80d: 0x6d6ef220, 0x3a80e: 0x6d41ec20, 0x3a80f: 0x6d6ef420,\n\t0x3a810: 0x6d980420, 0x3a811: 0x6dbb0620, 0x3a812: 0x6d980620, 0x3a813: 0x6dbb0820,\n\t0x3a814: 0x6dbb0a20, 0x3a815: 0x6dd90820, 0x3a816: 0x6dd90a20, 0x3a817: 0x6c280020,\n\t0x3a818: 0x6c280220, 0x3a819: 0x6c62aa20, 0x3a81a: 0x6cb58e20, 0x3a81b: 0x6cb59020,\n\t0x3a81c: 0x6cb59220, 0x3a81d: 0x6cb59420, 0x3a81e: 0x6cb59620, 0x3a81f: 0x6cb59820,\n\t0x3a820: 0x6cb59a20, 0x3a821: 0x6cb59c20, 0x3a822: 0x6cb59e20, 0x3a823: 0x6cb5a020,\n\t0x3a824: 0x6cb5a220, 0x3a825: 0x6cb5a420, 0x3a826: 0x6ce57420, 0x3a827: 0x6ce57620,\n\t0x3a828: 0x6ce57820, 0x3a829: 0x6ce57a20, 0x3a82a: 0x6ce57c20, 0x3a82b: 0x6ce57e20,\n\t0x3a82c: 0x6ce58020, 0x3a82d: 0x6ce58220, 0x3a82e: 0x6ce58420, 0x3a82f: 0x6ce58620,\n\t0x3a830: 0x6ce58820, 0x3a831: 0x6ce58a20, 0x3a832: 0x6d13fa20, 0x3a833: 0x6d13fc20,\n\t0x3a834: 0x6d13fe20, 0x3a835: 0x6d140020, 0x3a836: 0x6d140220, 0x3a837: 0x6d140420,\n\t0x3a838: 0x6d140620, 0x3a839: 0x6d140820, 0x3a83a: 0x6d140a20, 0x3a83b: 0x6d140c20,\n\t0x3a83c: 0x6d140e20, 0x3a83d: 0x6d141020, 0x3a83e: 0x6d141220, 0x3a83f: 0x6d141420,\n\t// Block 0xea1, offset 0x3a840\n\t0x3a840: 0x6d41fe20, 0x3a841: 0x6d420020, 0x3a842: 0x6d420220, 0x3a843: 0x6d420420,\n\t0x3a844: 0x6d420620, 0x3a845: 0x6d420820, 0x3a846: 0x6d420a20, 0x3a847: 0x6d6f0220,\n\t0x3a848: 0x6d6f0420, 0x3a849: 0x6d6f0620, 0x3a84a: 0x6d6f0820, 0x3a84b: 0x6d6f0a20,\n\t0x3a84c: 0x6d6f0c20, 0x3a84d: 0x6d6f0e20, 0x3a84e: 0x6d6f1020, 0x3a84f: 0x6d6f1220,\n\t0x3a850: 0x6d6f1420, 0x3a851: 0x6d6f1620, 0x3a852: 0x6d6f1820, 0x3a853: 0x6d980e20,\n\t0x3a854: 0x6d981020, 0x3a855: 0x6d981220, 0x3a856: 0x6d981420, 0x3a857: 0x6d981620,\n\t0x3a858: 0x6d981820, 0x3a859: 0x6d981a20, 0x3a85a: 0x6d981c20, 0x3a85b: 0x6d981e20,\n\t0x3a85c: 0x6d982020, 0x3a85d: 0x6d982220, 0x3a85e: 0x6dbb1620, 0x3a85f: 0x6dbb1820,\n\t0x3a860: 0x6dbb1a20, 0x3a861: 0x6dbb1c20, 0x3a862: 0x6dbb1e20, 0x3a863: 0x6dbb2020,\n\t0x3a864: 0x6dbb2220, 0x3a865: 0x6dd91020, 0x3a866: 0x6dd91220, 0x3a867: 0x6dd91420,\n\t0x3a868: 0x6dd91620, 0x3a869: 0x6dd91820, 0x3a86a: 0x6dd91a20, 0x3a86b: 0x6dd91c20,\n\t0x3a86c: 0x6dd91e20, 0x3a86d: 0x6df16820, 0x3a86e: 0x6df16a20, 0x3a86f: 0x6df16c20,\n\t0x3a870: 0x6df16e20, 0x3a871: 0x6df17020, 0x3a872: 0x6df17220, 0x3a873: 0x6e059620,\n\t0x3a874: 0x6e059820, 0x3a875: 0x6e059a20, 0x3a876: 0x6e059c20, 0x3a877: 0x6e059e20,\n\t0x3a878: 0x6e165020, 0x3a879: 0x6e165220, 0x3a87a: 0x6e165420, 0x3a87b: 0x6e239a20,\n\t0x3a87c: 0x6e239c20, 0x3a87d: 0x6e239e20, 0x3a87e: 0x6e23a020, 0x3a87f: 0x6e23a220,\n\t// Block 0xea2, offset 0x3a880\n\t0x3a880: 0x6e2dba20, 0x3a881: 0x6e2dbc20, 0x3a882: 0x6e356820, 0x3a883: 0x6e356a20,\n\t0x3a884: 0x6e3eb020, 0x3a885: 0x6e435a20, 0x3a886: 0x6e44a220, 0x3a887: 0x6c420420,\n\t0x3a888: 0x6c420620, 0x3a889: 0x6c62b020, 0x3a88a: 0x6c898a20, 0x3a88b: 0x6c898c20,\n\t0x3a88c: 0x6c898e20, 0x3a88d: 0x6c899020, 0x3a88e: 0x6c899220, 0x3a88f: 0x6c899420,\n\t0x3a890: 0x6cb5b420, 0x3a891: 0x6cb5b620, 0x3a892: 0x6cb5b820, 0x3a893: 0x6cb5ba20,\n\t0x3a894: 0x6cb5bc20, 0x3a895: 0x6cb5be20, 0x3a896: 0x6cb5c020, 0x3a897: 0x6ce5ae20,\n\t0x3a898: 0x6ce5b020, 0x3a899: 0x6ce5b220, 0x3a89a: 0x6ce5b420, 0x3a89b: 0x6ce5b620,\n\t0x3a89c: 0x6ce5b820, 0x3a89d: 0x6ce5ba20, 0x3a89e: 0x6ce5bc20, 0x3a89f: 0x6ce5be20,\n\t0x3a8a0: 0x6ce5c020, 0x3a8a1: 0x6ce5c220, 0x3a8a2: 0x6ce5c420, 0x3a8a3: 0x6ce5c620,\n\t0x3a8a4: 0x6ce5c820, 0x3a8a5: 0x6ce5ca20, 0x3a8a6: 0x6ce5cc20, 0x3a8a7: 0x6ce5ce20,\n\t0x3a8a8: 0x6ce5d020, 0x3a8a9: 0x6ce5d220, 0x3a8aa: 0x6ce5d420, 0x3a8ab: 0x6ce5d620,\n\t0x3a8ac: 0x6ce5d820, 0x3a8ad: 0x6ce5da20, 0x3a8ae: 0x6ce5dc20, 0x3a8af: 0x6ce5de20,\n\t0x3a8b0: 0x6ce5e020, 0x3a8b1: 0x6ce5e220, 0x3a8b2: 0x6ce5e420, 0x3a8b3: 0x6d143020,\n\t0x3a8b4: 0x6d143220, 0x3a8b5: 0x6d143420, 0x3a8b6: 0x6d143620, 0x3a8b7: 0x6d143820,\n\t0x3a8b8: 0x6d143a20, 0x3a8b9: 0x6d143c20, 0x3a8ba: 0x6d143e20, 0x3a8bb: 0x6d144020,\n\t0x3a8bc: 0x6d144220, 0x3a8bd: 0x6d144420, 0x3a8be: 0x6d144620, 0x3a8bf: 0x6d144820,\n\t// Block 0xea3, offset 0x3a8c0\n\t0x3a8c0: 0x6d144a20, 0x3a8c1: 0x6d144c20, 0x3a8c2: 0x6d144e20, 0x3a8c3: 0x6d145020,\n\t0x3a8c4: 0x6d145220, 0x3a8c5: 0x6d145420, 0x3a8c6: 0x6d145620, 0x3a8c7: 0x6d145820,\n\t0x3a8c8: 0x6d145a20, 0x3a8c9: 0x6d145c20, 0x3a8ca: 0x6d145e20, 0x3a8cb: 0x6d146020,\n\t0x3a8cc: 0x6d146220, 0x3a8cd: 0x6d422e20, 0x3a8ce: 0x6d423020, 0x3a8cf: 0x6d423220,\n\t0x3a8d0: 0x6d423420, 0x3a8d1: 0x6d423620, 0x3a8d2: 0x6d423820, 0x3a8d3: 0x6d423a20,\n\t0x3a8d4: 0x6d423c20, 0x3a8d5: 0x6d423e20, 0x3a8d6: 0x6d424020, 0x3a8d7: 0x6d424220,\n\t0x3a8d8: 0x6d424420, 0x3a8d9: 0x6d424620, 0x3a8da: 0x6d424820, 0x3a8db: 0x6d424a20,\n\t0x3a8dc: 0x6d424c20, 0x3a8dd: 0x6d424e20, 0x3a8de: 0x6d425020, 0x3a8df: 0x6d425220,\n\t0x3a8e0: 0x6d425420, 0x3a8e1: 0x6d425620, 0x3a8e2: 0x6d425820, 0x3a8e3: 0x6d425a20,\n\t0x3a8e4: 0x6d425c20, 0x3a8e5: 0x6d425e20, 0x3a8e6: 0x6d426020, 0x3a8e7: 0x6d6f3820,\n\t0x3a8e8: 0x6d6f3a20, 0x3a8e9: 0x6d6f3c20, 0x3a8ea: 0x6d6f3e20, 0x3a8eb: 0x6d6f4020,\n\t0x3a8ec: 0x6d6f4220, 0x3a8ed: 0x6d6f4420, 0x3a8ee: 0x6d6f4620, 0x3a8ef: 0x6d6f4820,\n\t0x3a8f0: 0x6d6f4a20, 0x3a8f1: 0x6d6f4c20, 0x3a8f2: 0x6d6f4e20, 0x3a8f3: 0x6d6f5020,\n\t0x3a8f4: 0x6d6f5220, 0x3a8f5: 0x6d6f5420, 0x3a8f6: 0x6d6f5620, 0x3a8f7: 0x6d6f5820,\n\t0x3a8f8: 0x6d6f5a20, 0x3a8f9: 0x6d6f5c20, 0x3a8fa: 0x6d6f5e20, 0x3a8fb: 0x6d6f6020,\n\t0x3a8fc: 0x6d6f6220, 0x3a8fd: 0x6d6f6420, 0x3a8fe: 0x6d6f6620, 0x3a8ff: 0x6d6f6820,\n\t// Block 0xea4, offset 0x3a900\n\t0x3a900: 0x6d6f6a20, 0x3a901: 0x6d6f6c20, 0x3a902: 0x6d6f6e20, 0x3a903: 0x6d6f7020,\n\t0x3a904: 0x6d6f7220, 0x3a905: 0x6d6f7420, 0x3a906: 0x6d6f7620, 0x3a907: 0x6d6f7820,\n\t0x3a908: 0x6d984e20, 0x3a909: 0x6d985020, 0x3a90a: 0x6d985220, 0x3a90b: 0x6d985420,\n\t0x3a90c: 0x6d985620, 0x3a90d: 0x6d985820, 0x3a90e: 0x6d985a20, 0x3a90f: 0x6d985c20,\n\t0x3a910: 0x6d985e20, 0x3a911: 0x6d986020, 0x3a912: 0x6d986220, 0x3a913: 0x6d986420,\n\t0x3a914: 0x6d986620, 0x3a915: 0x6d986820, 0x3a916: 0x6d986a20, 0x3a917: 0x6d986c20,\n\t0x3a918: 0x6d986e20, 0x3a919: 0x6d987020, 0x3a91a: 0x6d987220, 0x3a91b: 0x6d987420,\n\t0x3a91c: 0x6d987620, 0x3a91d: 0x6d987820, 0x3a91e: 0x6d987a20, 0x3a91f: 0x6d987c20,\n\t0x3a920: 0x6d987e20, 0x3a921: 0x6d988020, 0x3a922: 0x6d988220, 0x3a923: 0x6d988420,\n\t0x3a924: 0x6d988620, 0x3a925: 0x6dbb4e20, 0x3a926: 0x6dbb5020, 0x3a927: 0x6dbb5220,\n\t0x3a928: 0x6dbb5420, 0x3a929: 0x6dbb5620, 0x3a92a: 0x6dbb5820, 0x3a92b: 0x6dbb5a20,\n\t0x3a92c: 0x6dbb5c20, 0x3a92d: 0x6dbb5e20, 0x3a92e: 0x6dbb6020, 0x3a92f: 0x6dbb6220,\n\t0x3a930: 0x6dbb6420, 0x3a931: 0x6dbb6620, 0x3a932: 0x6dbb6820, 0x3a933: 0x6dbb6a20,\n\t0x3a934: 0x6dbb6c20, 0x3a935: 0x6dbb6e20, 0x3a936: 0x6dbb7020, 0x3a937: 0x6dbb7220,\n\t0x3a938: 0x6dbb7420, 0x3a939: 0x6dbb7620, 0x3a93a: 0x6dbb7820, 0x3a93b: 0x6dbb7a20,\n\t0x3a93c: 0x6dbb7c20, 0x3a93d: 0x6dbb7e20, 0x3a93e: 0x6dbb8020, 0x3a93f: 0x6dbb8220,\n\t// Block 0xea5, offset 0x3a940\n\t0x3a940: 0x6dd93220, 0x3a941: 0x6dd93420, 0x3a942: 0x6dd93620, 0x3a943: 0x6dd93820,\n\t0x3a944: 0x6dd93a20, 0x3a945: 0x6dd93c20, 0x3a946: 0x6dd93e20, 0x3a947: 0x6dd94020,\n\t0x3a948: 0x6dd94220, 0x3a949: 0x6dd94420, 0x3a94a: 0x6dd94620, 0x3a94b: 0x6dd94820,\n\t0x3a94c: 0x6dd94a20, 0x3a94d: 0x6dd94c20, 0x3a94e: 0x6dd94e20, 0x3a94f: 0x6dd95020,\n\t0x3a950: 0x6dd95220, 0x3a951: 0x6dd95420, 0x3a952: 0x6dd95620, 0x3a953: 0x6dd95820,\n\t0x3a954: 0x6dd95a20, 0x3a955: 0x6dd95c20, 0x3a956: 0x6dd95e20, 0x3a957: 0x6dd96020,\n\t0x3a958: 0x6dd96220, 0x3a959: 0x6dd96420, 0x3a95a: 0x6dd96620, 0x3a95b: 0x6dd96820,\n\t0x3a95c: 0x6df18020, 0x3a95d: 0x6df18220, 0x3a95e: 0x6df18420, 0x3a95f: 0x6df18620,\n\t0x3a960: 0x6df18820, 0x3a961: 0x6df18a20, 0x3a962: 0x6df18c20, 0x3a963: 0x6df18e20,\n\t0x3a964: 0x6df19020, 0x3a965: 0x6df19220, 0x3a966: 0x6df19420, 0x3a967: 0x6df19620,\n\t0x3a968: 0x6df19820, 0x3a969: 0x6df19a20, 0x3a96a: 0x6df19c20, 0x3a96b: 0x6df19e20,\n\t0x3a96c: 0x6e05aa20, 0x3a96d: 0x6e05ac20, 0x3a96e: 0x6e05ae20, 0x3a96f: 0x6e05b020,\n\t0x3a970: 0x6e05b220, 0x3a971: 0x6e05b420, 0x3a972: 0x6e05b620, 0x3a973: 0x6e05b820,\n\t0x3a974: 0x6e05ba20, 0x3a975: 0x6e05bc20, 0x3a976: 0x6e05be20, 0x3a977: 0x6e05c020,\n\t0x3a978: 0x6e05c220, 0x3a979: 0x6e05c420, 0x3a97a: 0x6e05c620, 0x3a97b: 0x6e05c820,\n\t0x3a97c: 0x6e05ca20, 0x3a97d: 0x6e05cc20, 0x3a97e: 0x6e05ce20, 0x3a97f: 0x6e05d020,\n\t// Block 0xea6, offset 0x3a980\n\t0x3a980: 0x6e05d220, 0x3a981: 0x6e05d420, 0x3a982: 0x6e05d620, 0x3a983: 0x6e166620,\n\t0x3a984: 0x6e166820, 0x3a985: 0x6e166a20, 0x3a986: 0x6e166c20, 0x3a987: 0x6e166e20,\n\t0x3a988: 0x6e167020, 0x3a989: 0x6e167220, 0x3a98a: 0x6e167420, 0x3a98b: 0x6e167620,\n\t0x3a98c: 0x6e167820, 0x3a98d: 0x6e167a20, 0x3a98e: 0x6e167c20, 0x3a98f: 0x6e167e20,\n\t0x3a990: 0x6e168020, 0x3a991: 0x6e168220, 0x3a992: 0x6e168420, 0x3a993: 0x6e168620,\n\t0x3a994: 0x6e23a820, 0x3a995: 0x6e168820, 0x3a996: 0x6e168a20, 0x3a997: 0x6e168c20,\n\t0x3a998: 0x6e23aa20, 0x3a999: 0x6e23ac20, 0x3a99a: 0x6e23ae20, 0x3a99b: 0x6e23b020,\n\t0x3a99c: 0x6e23b220, 0x3a99d: 0x6e23b420, 0x3a99e: 0x6e23b620, 0x3a99f: 0x6e2dbe20,\n\t0x3a9a0: 0x6e2dc020, 0x3a9a1: 0x6e2dc220, 0x3a9a2: 0x6e2dc420, 0x3a9a3: 0x6e2dc620,\n\t0x3a9a4: 0x6e2dc820, 0x3a9a5: 0x6e2dca20, 0x3a9a6: 0x6e356c20, 0x3a9a7: 0x6e356e20,\n\t0x3a9a8: 0x6e357020, 0x3a9a9: 0x6e357220, 0x3a9aa: 0x6e357420, 0x3a9ab: 0x6e357620,\n\t0x3a9ac: 0x6e357820, 0x3a9ad: 0x6e357a20, 0x3a9ae: 0x6e357c20, 0x3a9af: 0x6e3ae820,\n\t0x3a9b0: 0x6e3aea20, 0x3a9b1: 0x6e3aec20, 0x3a9b2: 0x6e3aee20, 0x3a9b3: 0x6e3af020,\n\t0x3a9b4: 0x6e3af220, 0x3a9b5: 0x6e3af420, 0x3a9b6: 0x6e357e20, 0x3a9b7: 0x6e3eb220,\n\t0x3a9b8: 0x6e3af620, 0x3a9b9: 0x6e3eb420, 0x3a9ba: 0x6e3eb620, 0x3a9bb: 0x6e416020,\n\t0x3a9bc: 0x6e44a420, 0x3a9bd: 0x6e464220, 0x3a9be: 0x6e464420, 0x3a9bf: 0x6c159a20,\n\t// Block 0xea7, offset 0x3a9c0\n\t0x3a9c0: 0x6c159c20, 0x3a9c1: 0x6c159e20, 0x3a9c2: 0x6c281420, 0x3a9c3: 0x6c281620,\n\t0x3a9c4: 0x6c62c620, 0x3a9c5: 0x6c62c820, 0x3a9c6: 0x6ce5f420, 0x3a9c7: 0x6ce5f620,\n\t0x3a9c8: 0x6ce5f820, 0x3a9c9: 0x6d147620, 0x3a9ca: 0x6d147820, 0x3a9cb: 0x6d6f8420,\n\t0x3a9cc: 0x6d6f8620, 0x3a9cd: 0x6dbb8820, 0x3a9ce: 0x6e05d820, 0x3a9cf: 0x6c00d020,\n\t0x3a9d0: 0x6c052820, 0x3a9d1: 0x6c052a20, 0x3a9d2: 0x6c052c20, 0x3a9d3: 0x6c052e20,\n\t0x3a9d4: 0x6c053020, 0x3a9d5: 0x6c053220, 0x3a9d6: 0x6c0ab820, 0x3a9d7: 0x6c0aba20,\n\t0x3a9d8: 0x6c0abc20, 0x3a9d9: 0x6c0abe20, 0x3a9da: 0x6c15b020, 0x3a9db: 0x6c15b220,\n\t0x3a9dc: 0x6c15b420, 0x3a9dd: 0x6c15b620, 0x3a9de: 0x6c15b820, 0x3a9df: 0x6c15ba20,\n\t0x3a9e0: 0x6c15bc20, 0x3a9e1: 0x6c15be20, 0x3a9e2: 0x6c15c020, 0x3a9e3: 0x6c15c220,\n\t0x3a9e4: 0x6c15c420, 0x3a9e5: 0x6c15c620, 0x3a9e6: 0x6c15c820, 0x3a9e7: 0x6c15ca20,\n\t0x3a9e8: 0x6c15cc20, 0x3a9e9: 0x6c15ce20, 0x3a9ea: 0x6c284a20, 0x3a9eb: 0x6c284c20,\n\t0x3a9ec: 0x6c284e20, 0x3a9ed: 0x6c285020, 0x3a9ee: 0x6c285220, 0x3a9ef: 0x6c285420,\n\t0x3a9f0: 0x6c285620, 0x3a9f1: 0x6c285820, 0x3a9f2: 0x6c285a20, 0x3a9f3: 0x6c285c20,\n\t0x3a9f4: 0x6c285e20, 0x3a9f5: 0x6c286020, 0x3a9f6: 0x6c286220, 0x3a9f7: 0x6c286420,\n\t0x3a9f8: 0x6c286620, 0x3a9f9: 0x6c286820, 0x3a9fa: 0x6c286a20, 0x3a9fb: 0x6c286c20,\n\t0x3a9fc: 0x6c286e20, 0x3a9fd: 0x6c287020, 0x3a9fe: 0x6c287220, 0x3a9ff: 0x6c287420,\n\t// Block 0xea8, offset 0x3aa00\n\t0x3aa00: 0x6c287620, 0x3aa01: 0x6c423e20, 0x3aa02: 0x6c424020, 0x3aa03: 0x6c424220,\n\t0x3aa04: 0x6c424420, 0x3aa05: 0x6c424620, 0x3aa06: 0x6c424820, 0x3aa07: 0x6c424a20,\n\t0x3aa08: 0x6c424c20, 0x3aa09: 0x6c424e20, 0x3aa0a: 0x6c425020, 0x3aa0b: 0x6c425220,\n\t0x3aa0c: 0x6c425420, 0x3aa0d: 0x6c425620, 0x3aa0e: 0x6c425820, 0x3aa0f: 0x6c425a20,\n\t0x3aa10: 0x6c425c20, 0x3aa11: 0x6c425e20, 0x3aa12: 0x6c426020, 0x3aa13: 0x6c426220,\n\t0x3aa14: 0x6c426420, 0x3aa15: 0x6c426620, 0x3aa16: 0x6c426820, 0x3aa17: 0x6c426a20,\n\t0x3aa18: 0x6c62ee20, 0x3aa19: 0x6c62f020, 0x3aa1a: 0x6c62f220, 0x3aa1b: 0x6c62f420,\n\t0x3aa1c: 0x6c62f620, 0x3aa1d: 0x6c62f820, 0x3aa1e: 0x6c62fa20, 0x3aa1f: 0x6c62fc20,\n\t0x3aa20: 0x6c62fe20, 0x3aa21: 0x6c630020, 0x3aa22: 0x6c630220, 0x3aa23: 0x6c630420,\n\t0x3aa24: 0x6c630620, 0x3aa25: 0x6c630820, 0x3aa26: 0x6c630a20, 0x3aa27: 0x6c630c20,\n\t0x3aa28: 0x6c630e20, 0x3aa29: 0x6c631020, 0x3aa2a: 0x6c631220, 0x3aa2b: 0x6c631420,\n\t0x3aa2c: 0x6c631620, 0x3aa2d: 0x6c631820, 0x3aa2e: 0x6c631a20, 0x3aa2f: 0x6c631c20,\n\t0x3aa30: 0x6c631e20, 0x3aa31: 0x6c632020, 0x3aa32: 0x6c632220, 0x3aa33: 0x6c632420,\n\t0x3aa34: 0x6c6bf420, 0x3aa35: 0x6c89da20, 0x3aa36: 0x6c89dc20, 0x3aa37: 0x6c89de20,\n\t0x3aa38: 0x6c89e020, 0x3aa39: 0x6c89e220, 0x3aa3a: 0x6c89e420, 0x3aa3b: 0x6c89e620,\n\t0x3aa3c: 0x6c89e820, 0x3aa3d: 0x6c89ea20, 0x3aa3e: 0x6c89ec20, 0x3aa3f: 0x6c89ee20,\n\t// Block 0xea9, offset 0x3aa40\n\t0x3aa40: 0x6c89f020, 0x3aa41: 0x6c89f220, 0x3aa42: 0x6c89f420, 0x3aa43: 0x6c89f620,\n\t0x3aa44: 0x6c89f820, 0x3aa45: 0x6c89fa20, 0x3aa46: 0x6c89fc20, 0x3aa47: 0x6c89fe20,\n\t0x3aa48: 0x6c8a0020, 0x3aa49: 0x6c8a0220, 0x3aa4a: 0x6c8a0420, 0x3aa4b: 0x6c8a0620,\n\t0x3aa4c: 0x6c8a0820, 0x3aa4d: 0x6c8a0a20, 0x3aa4e: 0x6c8a0c20, 0x3aa4f: 0x6c8a0e20,\n\t0x3aa50: 0x6c8a1020, 0x3aa51: 0x6c8a1220, 0x3aa52: 0x6c8a1420, 0x3aa53: 0x6c8a1620,\n\t0x3aa54: 0x6c8a1820, 0x3aa55: 0x6c8a1a20, 0x3aa56: 0x6c8a1c20, 0x3aa57: 0x6c8a1e20,\n\t0x3aa58: 0x6c8a2020, 0x3aa59: 0x6c8a2220, 0x3aa5a: 0x6c8a2420, 0x3aa5b: 0x6c8a2620,\n\t0x3aa5c: 0x6c8a2820, 0x3aa5d: 0x6c8a2a20, 0x3aa5e: 0x6cb60a20, 0x3aa5f: 0x6cb60c20,\n\t0x3aa60: 0x6cb60e20, 0x3aa61: 0x6cb61020, 0x3aa62: 0x6cb61220, 0x3aa63: 0x6cb61420,\n\t0x3aa64: 0x6cb61620, 0x3aa65: 0x6cb61820, 0x3aa66: 0x6cb61a20, 0x3aa67: 0x6cb61c20,\n\t0x3aa68: 0x6cb61e20, 0x3aa69: 0x6cb62020, 0x3aa6a: 0x6cb62220, 0x3aa6b: 0x6cb62420,\n\t0x3aa6c: 0x6cb62620, 0x3aa6d: 0x6cb62820, 0x3aa6e: 0x6cb62a20, 0x3aa6f: 0x6cb62c20,\n\t0x3aa70: 0x6cb62e20, 0x3aa71: 0x6cb63020, 0x3aa72: 0x6cb63220, 0x3aa73: 0x6cb63420,\n\t0x3aa74: 0x6cb63620, 0x3aa75: 0x6cb63820, 0x3aa76: 0x6cb63a20, 0x3aa77: 0x6cb63c20,\n\t0x3aa78: 0x6cb63e20, 0x3aa79: 0x6cb64020, 0x3aa7a: 0x6cb64220, 0x3aa7b: 0x6cb64420,\n\t0x3aa7c: 0x6cb64620, 0x3aa7d: 0x6cb64820, 0x3aa7e: 0x6cb64a20, 0x3aa7f: 0x6cb64c20,\n\t// Block 0xeaa, offset 0x3aa80\n\t0x3aa80: 0x6ce62a20, 0x3aa81: 0x6ce62c20, 0x3aa82: 0x6ce62e20, 0x3aa83: 0x6ce63020,\n\t0x3aa84: 0x6ce63220, 0x3aa85: 0x6ce63420, 0x3aa86: 0x6ce63620, 0x3aa87: 0x6ce63820,\n\t0x3aa88: 0x6ce63a20, 0x3aa89: 0x6ce63c20, 0x3aa8a: 0x6ce63e20, 0x3aa8b: 0x6ce64020,\n\t0x3aa8c: 0x6ce64220, 0x3aa8d: 0x6ce64420, 0x3aa8e: 0x6ce64620, 0x3aa8f: 0x6ce64820,\n\t0x3aa90: 0x6ce64a20, 0x3aa91: 0x6ce64c20, 0x3aa92: 0x6ce64e20, 0x3aa93: 0x6ce65020,\n\t0x3aa94: 0x6ce65220, 0x3aa95: 0x6ce65420, 0x3aa96: 0x6ce65620, 0x3aa97: 0x6ce65820,\n\t0x3aa98: 0x6ce65a20, 0x3aa99: 0x6ce65c20, 0x3aa9a: 0x6ce65e20, 0x3aa9b: 0x6ce66020,\n\t0x3aa9c: 0x6ce66220, 0x3aa9d: 0x6ce66420, 0x3aa9e: 0x6ce66620, 0x3aa9f: 0x6ce66820,\n\t0x3aaa0: 0x6ce66a20, 0x3aaa1: 0x6ce66c20, 0x3aaa2: 0x6ce66e20, 0x3aaa3: 0x6ce67020,\n\t0x3aaa4: 0x6ce67220, 0x3aaa5: 0x6ce67420, 0x3aaa6: 0x6ce67620, 0x3aaa7: 0x6ce67820,\n\t0x3aaa8: 0x6ce67a20, 0x3aaa9: 0x6ce67c20, 0x3aaaa: 0x6ce67e20, 0x3aaab: 0x6ce68020,\n\t0x3aaac: 0x6ce68220, 0x3aaad: 0x6ce68420, 0x3aaae: 0x6d149e20, 0x3aaaf: 0x6d14a020,\n\t0x3aab0: 0x6d14a220, 0x3aab1: 0x6d14a420, 0x3aab2: 0x6d14a620, 0x3aab3: 0x6d14a820,\n\t0x3aab4: 0x6d14aa20, 0x3aab5: 0x6d14ac20, 0x3aab6: 0x6d14ae20, 0x3aab7: 0x6d14b020,\n\t0x3aab8: 0x6d14b220, 0x3aab9: 0x6d14b420, 0x3aaba: 0x6d14b620, 0x3aabb: 0x6d14b820,\n\t0x3aabc: 0x6d14ba20, 0x3aabd: 0x6d14bc20, 0x3aabe: 0x6d14be20, 0x3aabf: 0x6d14c020,\n\t// Block 0xeab, offset 0x3aac0\n\t0x3aac0: 0x6d14c220, 0x3aac1: 0x6d14c420, 0x3aac2: 0x6d14c620, 0x3aac3: 0x6d14c820,\n\t0x3aac4: 0x6d14ca20, 0x3aac5: 0x6d14cc20, 0x3aac6: 0x6d14ce20, 0x3aac7: 0x6d14d020,\n\t0x3aac8: 0x6d14d220, 0x3aac9: 0x6d14d420, 0x3aaca: 0x6d428420, 0x3aacb: 0x6d428620,\n\t0x3aacc: 0x6d428820, 0x3aacd: 0x6d428a20, 0x3aace: 0x6d428c20, 0x3aacf: 0x6d428e20,\n\t0x3aad0: 0x6d429020, 0x3aad1: 0x6d429220, 0x3aad2: 0x6d429420, 0x3aad3: 0x6d429620,\n\t0x3aad4: 0x6d429820, 0x3aad5: 0x6d429a20, 0x3aad6: 0x6d429c20, 0x3aad7: 0x6d429e20,\n\t0x3aad8: 0x6d42a020, 0x3aad9: 0x6d42a220, 0x3aada: 0x6d42a420, 0x3aadb: 0x6d42a620,\n\t0x3aadc: 0x6d42a820, 0x3aadd: 0x6d42aa20, 0x3aade: 0x6d42ac20, 0x3aadf: 0x6d42ae20,\n\t0x3aae0: 0x6d42b020, 0x3aae1: 0x6d42b220, 0x3aae2: 0x6d42b420, 0x3aae3: 0x6d42b620,\n\t0x3aae4: 0x6d42b820, 0x3aae5: 0x6d42ba20, 0x3aae6: 0x6d42bc20, 0x3aae7: 0x6d42be20,\n\t0x3aae8: 0x6d42c020, 0x3aae9: 0x6d42c220, 0x3aaea: 0x6d6f9820, 0x3aaeb: 0x6d6f9a20,\n\t0x3aaec: 0x6d6f9c20, 0x3aaed: 0x6d6f9e20, 0x3aaee: 0x6d6fa020, 0x3aaef: 0x6d6fa220,\n\t0x3aaf0: 0x6d6fa420, 0x3aaf1: 0x6d6fa620, 0x3aaf2: 0x6d6fa820, 0x3aaf3: 0x6d6faa20,\n\t0x3aaf4: 0x6d6fac20, 0x3aaf5: 0x6d6fae20, 0x3aaf6: 0x6d6fb020, 0x3aaf7: 0x6d6fb220,\n\t0x3aaf8: 0x6d6fb420, 0x3aaf9: 0x6d6fb620, 0x3aafa: 0x6d6fb820, 0x3aafb: 0x6d6fba20,\n\t0x3aafc: 0x6d6fbc20, 0x3aafd: 0x6d6fbe20, 0x3aafe: 0x6d6fc020, 0x3aaff: 0x6d98a420,\n\t// Block 0xeac, offset 0x3ab00\n\t0x3ab00: 0x6d98a620, 0x3ab01: 0x6d98a820, 0x3ab02: 0x6d98aa20, 0x3ab03: 0x6d98ac20,\n\t0x3ab04: 0x6d98ae20, 0x3ab05: 0x6d98b020, 0x3ab06: 0x6d98b220, 0x3ab07: 0x6d98b420,\n\t0x3ab08: 0x6d98b620, 0x3ab09: 0x6d98b820, 0x3ab0a: 0x6d98ba20, 0x3ab0b: 0x6d98bc20,\n\t0x3ab0c: 0x6d98be20, 0x3ab0d: 0x6dbba020, 0x3ab0e: 0x6dbba220, 0x3ab0f: 0x6dbba420,\n\t0x3ab10: 0x6dbba620, 0x3ab11: 0x6dbba820, 0x3ab12: 0x6dbbaa20, 0x3ab13: 0x6dbbac20,\n\t0x3ab14: 0x6dbbae20, 0x3ab15: 0x6dbbb020, 0x3ab16: 0x6dd96c20, 0x3ab17: 0x6dd96e20,\n\t0x3ab18: 0x6dd97020, 0x3ab19: 0x6dd97220, 0x3ab1a: 0x6dd97420, 0x3ab1b: 0x6dd97620,\n\t0x3ab1c: 0x6dd97820, 0x3ab1d: 0x6dd97a20, 0x3ab1e: 0x6dd97c20, 0x3ab1f: 0x6dd97e20,\n\t0x3ab20: 0x6dd98020, 0x3ab21: 0x6dd98220, 0x3ab22: 0x6df1a620, 0x3ab23: 0x6df1a820,\n\t0x3ab24: 0x6df1aa20, 0x3ab25: 0x6df1ac20, 0x3ab26: 0x6e05de20, 0x3ab27: 0x6e05e020,\n\t0x3ab28: 0x6e05e220, 0x3ab29: 0x6e05e420, 0x3ab2a: 0x6e05e620, 0x3ab2b: 0x6e05e820,\n\t0x3ab2c: 0x6e169220, 0x3ab2d: 0x6e169420, 0x3ab2e: 0x6e23b820, 0x3ab2f: 0x6e23ba20,\n\t0x3ab30: 0x6e2dcc20, 0x3ab31: 0x6e2dce20, 0x3ab32: 0x6e3eb820, 0x3ab33: 0x6e3eba20,\n\t0x3ab34: 0x6e416220, 0x3ab35: 0x6e416420, 0x3ab36: 0x6d14de20, 0x3ab37: 0x6d42cc20,\n\t0x3ab38: 0x6d6fc220, 0x3ab39: 0x6d6fc420, 0x3ab3a: 0x6d6fc620, 0x3ab3b: 0x6d6fc820,\n\t0x3ab3c: 0x6d98c220, 0x3ab3d: 0x6d98c420, 0x3ab3e: 0x6d98c620, 0x3ab3f: 0x6dbbb420,\n\t// Block 0xead, offset 0x3ab40\n\t0x3ab40: 0x6dd98620, 0x3ab41: 0x6dd98820, 0x3ab42: 0x6e05ea20, 0x3ab43: 0x6e05ec20,\n\t0x3ab44: 0x6e23bc20, 0x3ab45: 0x6c8a3c20, 0x3ab46: 0x6c8a3e20, 0x3ab47: 0x6c8a4020,\n\t0x3ab48: 0x6cb66820, 0x3ab49: 0x6cb66a20, 0x3ab4a: 0x6cb66c20, 0x3ab4b: 0x6cb66e20,\n\t0x3ab4c: 0x6cb67020, 0x3ab4d: 0x6cb67220, 0x3ab4e: 0x6cb67420, 0x3ab4f: 0x6cb67620,\n\t0x3ab50: 0x6cb67820, 0x3ab51: 0x6cb67a20, 0x3ab52: 0x6ce6a020, 0x3ab53: 0x6ce6a220,\n\t0x3ab54: 0x6ce6a420, 0x3ab55: 0x6ce6a620, 0x3ab56: 0x6ce6a820, 0x3ab57: 0x6ce6aa20,\n\t0x3ab58: 0x6ce6ac20, 0x3ab59: 0x6ce6ae20, 0x3ab5a: 0x6ce6b020, 0x3ab5b: 0x6ce6b220,\n\t0x3ab5c: 0x6ce6b420, 0x3ab5d: 0x6ce6b620, 0x3ab5e: 0x6ce6b820, 0x3ab5f: 0x6ce6ba20,\n\t0x3ab60: 0x6d14f420, 0x3ab61: 0x6d14f620, 0x3ab62: 0x6d14f820, 0x3ab63: 0x6d14fa20,\n\t0x3ab64: 0x6d14fc20, 0x3ab65: 0x6d14fe20, 0x3ab66: 0x6d150020, 0x3ab67: 0x6d150220,\n\t0x3ab68: 0x6d150420, 0x3ab69: 0x6d150620, 0x3ab6a: 0x6d150820, 0x3ab6b: 0x6d150a20,\n\t0x3ab6c: 0x6d150c20, 0x3ab6d: 0x6d150e20, 0x3ab6e: 0x6d151020, 0x3ab6f: 0x6d151220,\n\t0x3ab70: 0x6d151420, 0x3ab71: 0x6d151620, 0x3ab72: 0x6d42d820, 0x3ab73: 0x6d42da20,\n\t0x3ab74: 0x6d42dc20, 0x3ab75: 0x6d42de20, 0x3ab76: 0x6d42e020, 0x3ab77: 0x6d42e220,\n\t0x3ab78: 0x6d42e420, 0x3ab79: 0x6d42e620, 0x3ab7a: 0x6d42e820, 0x3ab7b: 0x6d42ea20,\n\t0x3ab7c: 0x6d42ec20, 0x3ab7d: 0x6d42ee20, 0x3ab7e: 0x6d42f020, 0x3ab7f: 0x6d42f220,\n\t// Block 0xeae, offset 0x3ab80\n\t0x3ab80: 0x6d42f420, 0x3ab81: 0x6d42f620, 0x3ab82: 0x6d42f820, 0x3ab83: 0x6d42fa20,\n\t0x3ab84: 0x6d42fc20, 0x3ab85: 0x6d42fe20, 0x3ab86: 0x6d430020, 0x3ab87: 0x6d430220,\n\t0x3ab88: 0x6d430420, 0x3ab89: 0x6d430620, 0x3ab8a: 0x6d430820, 0x3ab8b: 0x6d6fd220,\n\t0x3ab8c: 0x6d6fd420, 0x3ab8d: 0x6d6fd620, 0x3ab8e: 0x6d6fd820, 0x3ab8f: 0x6d6fda20,\n\t0x3ab90: 0x6d6fdc20, 0x3ab91: 0x6d6fde20, 0x3ab92: 0x6d6fe020, 0x3ab93: 0x6d6fe220,\n\t0x3ab94: 0x6d6fe420, 0x3ab95: 0x6d6fe620, 0x3ab96: 0x6d6fe820, 0x3ab97: 0x6d6fea20,\n\t0x3ab98: 0x6d6fec20, 0x3ab99: 0x6d6fee20, 0x3ab9a: 0x6d6ff020, 0x3ab9b: 0x6d6ff220,\n\t0x3ab9c: 0x6d6ff420, 0x3ab9d: 0x6d6ff620, 0x3ab9e: 0x6d6ff820, 0x3ab9f: 0x6d6ffa20,\n\t0x3aba0: 0x6d98d020, 0x3aba1: 0x6d98d220, 0x3aba2: 0x6d98d420, 0x3aba3: 0x6d98d620,\n\t0x3aba4: 0x6d98d820, 0x3aba5: 0x6d98da20, 0x3aba6: 0x6d98dc20, 0x3aba7: 0x6d98de20,\n\t0x3aba8: 0x6d98e020, 0x3aba9: 0x6d98e220, 0x3abaa: 0x6d98e420, 0x3abab: 0x6d98e620,\n\t0x3abac: 0x6d98e820, 0x3abad: 0x6d98ea20, 0x3abae: 0x6d98ec20, 0x3abaf: 0x6d98ee20,\n\t0x3abb0: 0x6d98f020, 0x3abb1: 0x6d98f220, 0x3abb2: 0x6d98f420, 0x3abb3: 0x6d98f620,\n\t0x3abb4: 0x6d98f820, 0x3abb5: 0x6d98fa20, 0x3abb6: 0x6d98fc20, 0x3abb7: 0x6d98fe20,\n\t0x3abb8: 0x6d990020, 0x3abb9: 0x6d990220, 0x3abba: 0x6d990420, 0x3abbb: 0x6d990620,\n\t0x3abbc: 0x6d990820, 0x3abbd: 0x6d990a20, 0x3abbe: 0x6d990c20, 0x3abbf: 0x6dbbbc20,\n\t// Block 0xeaf, offset 0x3abc0\n\t0x3abc0: 0x6dbbbe20, 0x3abc1: 0x6dbbc020, 0x3abc2: 0x6dbbc220, 0x3abc3: 0x6dbbc420,\n\t0x3abc4: 0x6dbbc620, 0x3abc5: 0x6dbbc820, 0x3abc6: 0x6dbbca20, 0x3abc7: 0x6dbbcc20,\n\t0x3abc8: 0x6dbbce20, 0x3abc9: 0x6dbbd020, 0x3abca: 0x6dbbd220, 0x3abcb: 0x6dbbd420,\n\t0x3abcc: 0x6dbbd620, 0x3abcd: 0x6dbbd820, 0x3abce: 0x6dbbda20, 0x3abcf: 0x6dbbdc20,\n\t0x3abd0: 0x6dbbde20, 0x3abd1: 0x6dbbe020, 0x3abd2: 0x6dbbe220, 0x3abd3: 0x6dbbe420,\n\t0x3abd4: 0x6dbbe620, 0x3abd5: 0x6dbbe820, 0x3abd6: 0x6dbbea20, 0x3abd7: 0x6dd9a020,\n\t0x3abd8: 0x6dd9a220, 0x3abd9: 0x6dd9a420, 0x3abda: 0x6dd9a620, 0x3abdb: 0x6dd9a820,\n\t0x3abdc: 0x6dd9aa20, 0x3abdd: 0x6dd9ac20, 0x3abde: 0x6dd9ae20, 0x3abdf: 0x6dd9b020,\n\t0x3abe0: 0x6dd9b220, 0x3abe1: 0x6dd9b420, 0x3abe2: 0x6dd9b620, 0x3abe3: 0x6dd9b820,\n\t0x3abe4: 0x6df1b420, 0x3abe5: 0x6df1b620, 0x3abe6: 0x6df1b820, 0x3abe7: 0x6df1ba20,\n\t0x3abe8: 0x6df1bc20, 0x3abe9: 0x6df1be20, 0x3abea: 0x6df1c020, 0x3abeb: 0x6df1c220,\n\t0x3abec: 0x6df1c420, 0x3abed: 0x6df1c620, 0x3abee: 0x6df1c820, 0x3abef: 0x6df1ca20,\n\t0x3abf0: 0x6df1cc20, 0x3abf1: 0x6df1ce20, 0x3abf2: 0x6df1d020, 0x3abf3: 0x6df1d220,\n\t0x3abf4: 0x6e05f420, 0x3abf5: 0x6e05f620, 0x3abf6: 0x6e05f820, 0x3abf7: 0x6e05fa20,\n\t0x3abf8: 0x6e05fc20, 0x3abf9: 0x6e05fe20, 0x3abfa: 0x6e060020, 0x3abfb: 0x6e060220,\n\t0x3abfc: 0x6e060420, 0x3abfd: 0x6e060620, 0x3abfe: 0x6e060820, 0x3abff: 0x6e060a20,\n\t// Block 0xeb0, offset 0x3ac00\n\t0x3ac00: 0x6e060c20, 0x3ac01: 0x6e060e20, 0x3ac02: 0x6e061020, 0x3ac03: 0x6e061220,\n\t0x3ac04: 0x6e061420, 0x3ac05: 0x6e061620, 0x3ac06: 0x6e061820, 0x3ac07: 0x6e169820,\n\t0x3ac08: 0x6e169a20, 0x3ac09: 0x6e169c20, 0x3ac0a: 0x6e169e20, 0x3ac0b: 0x6e16a020,\n\t0x3ac0c: 0x6e16a220, 0x3ac0d: 0x6e16a420, 0x3ac0e: 0x6e16a620, 0x3ac0f: 0x6e16a820,\n\t0x3ac10: 0x6e16aa20, 0x3ac11: 0x6e16ac20, 0x3ac12: 0x6e16ae20, 0x3ac13: 0x6e23c020,\n\t0x3ac14: 0x6e23c220, 0x3ac15: 0x6e23c420, 0x3ac16: 0x6e23c620, 0x3ac17: 0x6e23c820,\n\t0x3ac18: 0x6e23ca20, 0x3ac19: 0x6e23cc20, 0x3ac1a: 0x6e23ce20, 0x3ac1b: 0x6e23d020,\n\t0x3ac1c: 0x6e2dd020, 0x3ac1d: 0x6e2dd220, 0x3ac1e: 0x6e2dd420, 0x3ac1f: 0x6e2dd620,\n\t0x3ac20: 0x6e2dd820, 0x3ac21: 0x6e2dda20, 0x3ac22: 0x6e2ddc20, 0x3ac23: 0x6e2dde20,\n\t0x3ac24: 0x6e2de020, 0x3ac25: 0x6e2de220, 0x3ac26: 0x6e2de420, 0x3ac27: 0x6e358420,\n\t0x3ac28: 0x6e358620, 0x3ac29: 0x6e358820, 0x3ac2a: 0x6e358a20, 0x3ac2b: 0x6e358c20,\n\t0x3ac2c: 0x6e3afc20, 0x3ac2d: 0x6e3afe20, 0x3ac2e: 0x6e3b0020, 0x3ac2f: 0x6e3ebc20,\n\t0x3ac30: 0x6e3ebe20, 0x3ac31: 0x6e3ec020, 0x3ac32: 0x6e435e20, 0x3ac33: 0x6e436020,\n\t0x3ac34: 0x6e464820, 0x3ac35: 0x6e46ee20, 0x3ac36: 0x6c632c20, 0x3ac37: 0x6c8a4220,\n\t0x3ac38: 0x6c8a4420, 0x3ac39: 0x6cb68420, 0x3ac3a: 0x6cb68620, 0x3ac3b: 0x6cb68820,\n\t0x3ac3c: 0x6cb68a20, 0x3ac3d: 0x6cb68c20, 0x3ac3e: 0x6cb68e20, 0x3ac3f: 0x6cb69020,\n\t// Block 0xeb1, offset 0x3ac40\n\t0x3ac40: 0x6cb69220, 0x3ac41: 0x6cb69420, 0x3ac42: 0x6ce6d220, 0x3ac43: 0x6ce6d420,\n\t0x3ac44: 0x6ce6d620, 0x3ac45: 0x6ce6d820, 0x3ac46: 0x6ce6da20, 0x3ac47: 0x6ce6dc20,\n\t0x3ac48: 0x6ce6de20, 0x3ac49: 0x6ce6e020, 0x3ac4a: 0x6ce6e220, 0x3ac4b: 0x6ce6e420,\n\t0x3ac4c: 0x6ce6e620, 0x3ac4d: 0x6ce6e820, 0x3ac4e: 0x6ce6ea20, 0x3ac4f: 0x6ce6ec20,\n\t0x3ac50: 0x6ce6ee20, 0x3ac51: 0x6ce6f020, 0x3ac52: 0x6d153020, 0x3ac53: 0x6d153220,\n\t0x3ac54: 0x6d153420, 0x3ac55: 0x6d153620, 0x3ac56: 0x6d153820, 0x3ac57: 0x6d153a20,\n\t0x3ac58: 0x6d153c20, 0x3ac59: 0x6d153e20, 0x3ac5a: 0x6d154020, 0x3ac5b: 0x6d154220,\n\t0x3ac5c: 0x6d154420, 0x3ac5d: 0x6d154620, 0x3ac5e: 0x6d154820, 0x3ac5f: 0x6d154a20,\n\t0x3ac60: 0x6d154c20, 0x3ac61: 0x6d154e20, 0x3ac62: 0x6d432220, 0x3ac63: 0x6d432420,\n\t0x3ac64: 0x6d432620, 0x3ac65: 0x6d432820, 0x3ac66: 0x6d432a20, 0x3ac67: 0x6d432c20,\n\t0x3ac68: 0x6d432e20, 0x3ac69: 0x6d433020, 0x3ac6a: 0x6d433220, 0x3ac6b: 0x6d433420,\n\t0x3ac6c: 0x6d433620, 0x3ac6d: 0x6d433820, 0x3ac6e: 0x6d433a20, 0x3ac6f: 0x6d433c20,\n\t0x3ac70: 0x6d433e20, 0x3ac71: 0x6d434020, 0x3ac72: 0x6d434220, 0x3ac73: 0x6d434420,\n\t0x3ac74: 0x6d434620, 0x3ac75: 0x6d434820, 0x3ac76: 0x6d434a20, 0x3ac77: 0x6d701420,\n\t0x3ac78: 0x6d701620, 0x3ac79: 0x6d701820, 0x3ac7a: 0x6d701a20, 0x3ac7b: 0x6d701c20,\n\t0x3ac7c: 0x6d701e20, 0x3ac7d: 0x6d702020, 0x3ac7e: 0x6d702220, 0x3ac7f: 0x6d702420,\n\t// Block 0xeb2, offset 0x3ac80\n\t0x3ac80: 0x6d702620, 0x3ac81: 0x6d702820, 0x3ac82: 0x6d702a20, 0x3ac83: 0x6d702c20,\n\t0x3ac84: 0x6d702e20, 0x3ac85: 0x6d703020, 0x3ac86: 0x6d703220, 0x3ac87: 0x6d703420,\n\t0x3ac88: 0x6d703620, 0x3ac89: 0x6d703820, 0x3ac8a: 0x6d703a20, 0x3ac8b: 0x6d703c20,\n\t0x3ac8c: 0x6d703e20, 0x3ac8d: 0x6d704020, 0x3ac8e: 0x6d704220, 0x3ac8f: 0x6d704420,\n\t0x3ac90: 0x6d704620, 0x3ac91: 0x6d704820, 0x3ac92: 0x6d993020, 0x3ac93: 0x6d993220,\n\t0x3ac94: 0x6d993420, 0x3ac95: 0x6d993620, 0x3ac96: 0x6d993820, 0x3ac97: 0x6d993a20,\n\t0x3ac98: 0x6d993c20, 0x3ac99: 0x6d993e20, 0x3ac9a: 0x6d994020, 0x3ac9b: 0x6d994220,\n\t0x3ac9c: 0x6d994420, 0x3ac9d: 0x6d994620, 0x3ac9e: 0x6d994820, 0x3ac9f: 0x6d994a20,\n\t0x3aca0: 0x6d994c20, 0x3aca1: 0x6d994e20, 0x3aca2: 0x6d995020, 0x3aca3: 0x6d995220,\n\t0x3aca4: 0x6d995420, 0x3aca5: 0x6d995620, 0x3aca6: 0x6d995820, 0x3aca7: 0x6d995a20,\n\t0x3aca8: 0x6d995c20, 0x3aca9: 0x6d995e20, 0x3acaa: 0x6d996020, 0x3acab: 0x6d996220,\n\t0x3acac: 0x6d996420, 0x3acad: 0x6d996620, 0x3acae: 0x6d996820, 0x3acaf: 0x6d996a20,\n\t0x3acb0: 0x6d996c20, 0x3acb1: 0x6d996e20, 0x3acb2: 0x6d997020, 0x3acb3: 0x6d997220,\n\t0x3acb4: 0x6d997420, 0x3acb5: 0x6dbc0c20, 0x3acb6: 0x6dbc0e20, 0x3acb7: 0x6dbc1020,\n\t0x3acb8: 0x6dbc1220, 0x3acb9: 0x6dbc1420, 0x3acba: 0x6dbc1620, 0x3acbb: 0x6dbc1820,\n\t0x3acbc: 0x6dbc1a20, 0x3acbd: 0x6dbc1c20, 0x3acbe: 0x6dd9d220, 0x3acbf: 0x6dbc1e20,\n\t// Block 0xeb3, offset 0x3acc0\n\t0x3acc0: 0x6dbc2020, 0x3acc1: 0x6dbc2220, 0x3acc2: 0x6dbc2420, 0x3acc3: 0x6dbc2620,\n\t0x3acc4: 0x6dbc2820, 0x3acc5: 0x6dbc2a20, 0x3acc6: 0x6dbc2c20, 0x3acc7: 0x6dbc2e20,\n\t0x3acc8: 0x6dbc3020, 0x3acc9: 0x6dbc3220, 0x3acca: 0x6dbc3420, 0x3accb: 0x6dbc3620,\n\t0x3accc: 0x6dbc3820, 0x3accd: 0x6dbc3a20, 0x3acce: 0x6dbc3c20, 0x3accf: 0x6dbc3e20,\n\t0x3acd0: 0x6dbc4020, 0x3acd1: 0x6dbc4220, 0x3acd2: 0x6dbc4420, 0x3acd3: 0x6dbc4620,\n\t0x3acd4: 0x6dbc4820, 0x3acd5: 0x6dbc4a20, 0x3acd6: 0x6dbc4c20, 0x3acd7: 0x6dd9d420,\n\t0x3acd8: 0x6dd9d620, 0x3acd9: 0x6dd9d820, 0x3acda: 0x6dd9da20, 0x3acdb: 0x6dd9dc20,\n\t0x3acdc: 0x6dd9de20, 0x3acdd: 0x6dd9e020, 0x3acde: 0x6dd9e220, 0x3acdf: 0x6dd9e420,\n\t0x3ace0: 0x6dd9e620, 0x3ace1: 0x6dd9e820, 0x3ace2: 0x6dd9ea20, 0x3ace3: 0x6dd9ec20,\n\t0x3ace4: 0x6dd9ee20, 0x3ace5: 0x6dd9f020, 0x3ace6: 0x6dd9f220, 0x3ace7: 0x6dd9f420,\n\t0x3ace8: 0x6dd9f620, 0x3ace9: 0x6dd9f820, 0x3acea: 0x6dd9fa20, 0x3aceb: 0x6dd9fc20,\n\t0x3acec: 0x6dd9fe20, 0x3aced: 0x6dda0020, 0x3acee: 0x6db8fa20, 0x3acef: 0x6dda0220,\n\t0x3acf0: 0x6dda0420, 0x3acf1: 0x6dda0620, 0x3acf2: 0x6dda0820, 0x3acf3: 0x6dda0a20,\n\t0x3acf4: 0x6dda0c20, 0x3acf5: 0x6dda0e20, 0x3acf6: 0x6dda1020, 0x3acf7: 0x6dda1220,\n\t0x3acf8: 0x6dda1420, 0x3acf9: 0x6dda1620, 0x3acfa: 0x6dda1820, 0x3acfb: 0x6df1ee20,\n\t0x3acfc: 0x6df1f020, 0x3acfd: 0x6df1f220, 0x3acfe: 0x6df1f420, 0x3acff: 0x6df1f620,\n\t// Block 0xeb4, offset 0x3ad00\n\t0x3ad00: 0x6df1f820, 0x3ad01: 0x6df1fa20, 0x3ad02: 0x6df1fc20, 0x3ad03: 0x6df1fe20,\n\t0x3ad04: 0x6df20020, 0x3ad05: 0x6df20220, 0x3ad06: 0x6df20420, 0x3ad07: 0x6df20620,\n\t0x3ad08: 0x6df20820, 0x3ad09: 0x6df20a20, 0x3ad0a: 0x6df20c20, 0x3ad0b: 0x6df20e20,\n\t0x3ad0c: 0x6df21020, 0x3ad0d: 0x6df21220, 0x3ad0e: 0x6df21420, 0x3ad0f: 0x6df21620,\n\t0x3ad10: 0x6df21820, 0x3ad11: 0x6df21a20, 0x3ad12: 0x6df21c20, 0x3ad13: 0x6df21e20,\n\t0x3ad14: 0x6df22020, 0x3ad15: 0x6df22220, 0x3ad16: 0x6df22420, 0x3ad17: 0x6df22620,\n\t0x3ad18: 0x6df22820, 0x3ad19: 0x6df22a20, 0x3ad1a: 0x6df22c20, 0x3ad1b: 0x6df22e20,\n\t0x3ad1c: 0x6df23020, 0x3ad1d: 0x6e062a20, 0x3ad1e: 0x6e062c20, 0x3ad1f: 0x6e062e20,\n\t0x3ad20: 0x6e063020, 0x3ad21: 0x6e063220, 0x3ad22: 0x6e063420, 0x3ad23: 0x6e063620,\n\t0x3ad24: 0x6e063820, 0x3ad25: 0x6e063a20, 0x3ad26: 0x6e063c20, 0x3ad27: 0x6e063e20,\n\t0x3ad28: 0x6e064020, 0x3ad29: 0x6e064220, 0x3ad2a: 0x6e064420, 0x3ad2b: 0x6e064620,\n\t0x3ad2c: 0x6e064820, 0x3ad2d: 0x6e064a20, 0x3ad2e: 0x6e064c20, 0x3ad2f: 0x6e064e20,\n\t0x3ad30: 0x6e065020, 0x3ad31: 0x6e065220, 0x3ad32: 0x6e065420, 0x3ad33: 0x6e065620,\n\t0x3ad34: 0x6e065820, 0x3ad35: 0x6e065a20, 0x3ad36: 0x6e065c20, 0x3ad37: 0x6e065e20,\n\t0x3ad38: 0x6e066020, 0x3ad39: 0x6e066220, 0x3ad3a: 0x6e066420, 0x3ad3b: 0x6e066620,\n\t0x3ad3c: 0x6e16c020, 0x3ad3d: 0x6e16c220, 0x3ad3e: 0x6e16c420, 0x3ad3f: 0x6e16c620,\n\t// Block 0xeb5, offset 0x3ad40\n\t0x3ad40: 0x6e16c820, 0x3ad41: 0x6e16ca20, 0x3ad42: 0x6e16cc20, 0x3ad43: 0x6e16ce20,\n\t0x3ad44: 0x6e16d020, 0x3ad45: 0x6e16d220, 0x3ad46: 0x6e16d420, 0x3ad47: 0x6e16d620,\n\t0x3ad48: 0x6e16d820, 0x3ad49: 0x6e16da20, 0x3ad4a: 0x6e16dc20, 0x3ad4b: 0x6e16de20,\n\t0x3ad4c: 0x6e16e020, 0x3ad4d: 0x6e16e220, 0x3ad4e: 0x6e16e420, 0x3ad4f: 0x6e16e620,\n\t0x3ad50: 0x6e16e820, 0x3ad51: 0x6e23e220, 0x3ad52: 0x6e23e420, 0x3ad53: 0x6e23e620,\n\t0x3ad54: 0x6e23e820, 0x3ad55: 0x6e23ea20, 0x3ad56: 0x6e23ec20, 0x3ad57: 0x6e23ee20,\n\t0x3ad58: 0x6e23f020, 0x3ad59: 0x6e23f220, 0x3ad5a: 0x6e23f420, 0x3ad5b: 0x6e23f620,\n\t0x3ad5c: 0x6e23f820, 0x3ad5d: 0x6e23fa20, 0x3ad5e: 0x6e23fc20, 0x3ad5f: 0x6e23fe20,\n\t0x3ad60: 0x6e240020, 0x3ad61: 0x6e240220, 0x3ad62: 0x6e240420, 0x3ad63: 0x6e240620,\n\t0x3ad64: 0x6e2dec20, 0x3ad65: 0x6e2dee20, 0x3ad66: 0x6e2df020, 0x3ad67: 0x6e2df220,\n\t0x3ad68: 0x6e2df420, 0x3ad69: 0x6e2df620, 0x3ad6a: 0x6e2df820, 0x3ad6b: 0x6e2dfa20,\n\t0x3ad6c: 0x6e2dfc20, 0x3ad6d: 0x6e359e20, 0x3ad6e: 0x6e35a020, 0x3ad6f: 0x6e35a220,\n\t0x3ad70: 0x6e35a420, 0x3ad71: 0x6e35a620, 0x3ad72: 0x6e35a820, 0x3ad73: 0x6e35aa20,\n\t0x3ad74: 0x6e35ac20, 0x3ad75: 0x6e3b0620, 0x3ad76: 0x6e3b0820, 0x3ad77: 0x6e3b0a20,\n\t0x3ad78: 0x6e3b0c20, 0x3ad79: 0x6e3b0e20, 0x3ad7a: 0x6e3b1020, 0x3ad7b: 0x6e3b1220,\n\t0x3ad7c: 0x6e3b1420, 0x3ad7d: 0x6e3b1620, 0x3ad7e: 0x6e3b1820, 0x3ad7f: 0x6e3ec420,\n\t// Block 0xeb6, offset 0x3ad80\n\t0x3ad80: 0x6e3ec620, 0x3ad81: 0x6e3ec820, 0x3ad82: 0x6e3eca20, 0x3ad83: 0x6e3ecc20,\n\t0x3ad84: 0x6e3ece20, 0x3ad85: 0x6e3ed020, 0x3ad86: 0x6e3ed220, 0x3ad87: 0x6e3ed420,\n\t0x3ad88: 0x6e436220, 0x3ad89: 0x6e436420, 0x3ad8a: 0x6e44a820, 0x3ad8b: 0x6e44aa20,\n\t0x3ad8c: 0x6e44ac20, 0x3ad8d: 0x6e44ae20, 0x3ad8e: 0x6e44b020, 0x3ad8f: 0x6e45e820,\n\t0x3ad90: 0x6e464a20, 0x3ad91: 0x6e464c20, 0x3ad92: 0x6e471820, 0x3ad93: 0x6e472420,\n\t0x3ad94: 0x6e473820, 0x3ad95: 0x6cb69820, 0x3ad96: 0x6ce6fa20, 0x3ad97: 0x6ce6fc20,\n\t0x3ad98: 0x6d155820, 0x3ad99: 0x6d155a20, 0x3ad9a: 0x6d155c20, 0x3ad9b: 0x6d155e20,\n\t0x3ad9c: 0x6d435620, 0x3ad9d: 0x6d997e20, 0x3ad9e: 0x6d998020, 0x3ad9f: 0x6dbc5420,\n\t0x3ada0: 0x6dda1e20, 0x3ada1: 0x6df23620, 0x3ada2: 0x6e067020, 0x3ada3: 0x6e16ec20,\n\t0x3ada4: 0x6e35b220, 0x3ada5: 0x6e3b1a20, 0x3ada6: 0x6c8a4820, 0x3ada7: 0x6c8a4a20,\n\t0x3ada8: 0x6c8a4c20, 0x3ada9: 0x6cb6a020, 0x3adaa: 0x6cb6a220, 0x3adab: 0x6cb6a420,\n\t0x3adac: 0x6cb6a620, 0x3adad: 0x6ce70220, 0x3adae: 0x6ce70420, 0x3adaf: 0x6ce70620,\n\t0x3adb0: 0x6ce70820, 0x3adb1: 0x6ce70a20, 0x3adb2: 0x6ce70c20, 0x3adb3: 0x6ce70e20,\n\t0x3adb4: 0x6ce71020, 0x3adb5: 0x6d156420, 0x3adb6: 0x6d156620, 0x3adb7: 0x6d435820,\n\t0x3adb8: 0x6d705420, 0x3adb9: 0x6d705620, 0x3adba: 0x6d705820, 0x3adbb: 0x6d705a20,\n\t0x3adbc: 0x6d998420, 0x3adbd: 0x6dda2020, 0x3adbe: 0x6e067420, 0x3adbf: 0x6e067620,\n\t// Block 0xeb7, offset 0x3adc0\n\t0x3adc0: 0x6e067820, 0x3adc1: 0x6e067a20, 0x3adc2: 0x6e3ed620, 0x3adc3: 0x6ce71220,\n\t0x3adc4: 0x6ce71420, 0x3adc5: 0x6ce71620, 0x3adc6: 0x6d156e20, 0x3adc7: 0x6d157020,\n\t0x3adc8: 0x6d157220, 0x3adc9: 0x6d157420, 0x3adca: 0x6d157620, 0x3adcb: 0x6d157820,\n\t0x3adcc: 0x6d157a20, 0x3adcd: 0x6d436420, 0x3adce: 0x6d436620, 0x3adcf: 0x6d436820,\n\t0x3add0: 0x6d436a20, 0x3add1: 0x6d436c20, 0x3add2: 0x6d436e20, 0x3add3: 0x6d437020,\n\t0x3add4: 0x6d437220, 0x3add5: 0x6d437420, 0x3add6: 0x6d437620, 0x3add7: 0x6d437820,\n\t0x3add8: 0x6d437a20, 0x3add9: 0x6d706020, 0x3adda: 0x6d706220, 0x3addb: 0x6d706420,\n\t0x3addc: 0x6d706620, 0x3addd: 0x6d706820, 0x3adde: 0x6d706a20, 0x3addf: 0x6d706c20,\n\t0x3ade0: 0x6d706e20, 0x3ade1: 0x6d998c20, 0x3ade2: 0x6d998e20, 0x3ade3: 0x6d999020,\n\t0x3ade4: 0x6d999220, 0x3ade5: 0x6d999420, 0x3ade6: 0x6d999620, 0x3ade7: 0x6d999820,\n\t0x3ade8: 0x6d999a20, 0x3ade9: 0x6d999c20, 0x3adea: 0x6d999e20, 0x3adeb: 0x6dbc5820,\n\t0x3adec: 0x6dbc5a20, 0x3aded: 0x6dbc5c20, 0x3adee: 0x6dbc5e20, 0x3adef: 0x6dbc6020,\n\t0x3adf0: 0x6dbc6220, 0x3adf1: 0x6dbc6420, 0x3adf2: 0x6dda2220, 0x3adf3: 0x6dda2420,\n\t0x3adf4: 0x6dda2620, 0x3adf5: 0x6dda2820, 0x3adf6: 0x6dda2a20, 0x3adf7: 0x6dda2c20,\n\t0x3adf8: 0x6df23c20, 0x3adf9: 0x6df23e20, 0x3adfa: 0x6df24020, 0x3adfb: 0x6e067e20,\n\t0x3adfc: 0x6e068020, 0x3adfd: 0x6e068220, 0x3adfe: 0x6e068420, 0x3adff: 0x6e068620,\n\t// Block 0xeb8, offset 0x3ae00\n\t0x3ae00: 0x6e068820, 0x3ae01: 0x6e16f620, 0x3ae02: 0x6e16f820, 0x3ae03: 0x6e16fa20,\n\t0x3ae04: 0x6e16fc20, 0x3ae05: 0x6e16fe20, 0x3ae06: 0x6e170020, 0x3ae07: 0x6e170220,\n\t0x3ae08: 0x6e170420, 0x3ae09: 0x6e170620, 0x3ae0a: 0x6e241020, 0x3ae0b: 0x6e241220,\n\t0x3ae0c: 0x6e2e0020, 0x3ae0d: 0x6e2e0220, 0x3ae0e: 0x6e2e0420, 0x3ae0f: 0x6e2e0620,\n\t0x3ae10: 0x6e2e0820, 0x3ae11: 0x6e35b620, 0x3ae12: 0x6e35b820, 0x3ae13: 0x6e3b1e20,\n\t0x3ae14: 0x6e3ed820, 0x3ae15: 0x6e3eda20, 0x3ae16: 0x6e417020, 0x3ae17: 0x6e417220,\n\t0x3ae18: 0x6e417420, 0x3ae19: 0x6e436620, 0x3ae1a: 0x6e436820, 0x3ae1b: 0x6cb6aa20,\n\t0x3ae1c: 0x6cb6ac20, 0x3ae1d: 0x6ce72c20, 0x3ae1e: 0x6ce72e20, 0x3ae1f: 0x6ce73020,\n\t0x3ae20: 0x6ce73220, 0x3ae21: 0x6d159820, 0x3ae22: 0x6d159a20, 0x3ae23: 0x6d159c20,\n\t0x3ae24: 0x6d159e20, 0x3ae25: 0x6d15a020, 0x3ae26: 0x6d15a220, 0x3ae27: 0x6d15a420,\n\t0x3ae28: 0x6d15a620, 0x3ae29: 0x6d15a820, 0x3ae2a: 0x6d15aa20, 0x3ae2b: 0x6d15ac20,\n\t0x3ae2c: 0x6d15ae20, 0x3ae2d: 0x6d15b020, 0x3ae2e: 0x6d15b220, 0x3ae2f: 0x6d15b420,\n\t0x3ae30: 0x6d15b620, 0x3ae31: 0x6d15b820, 0x3ae32: 0x6d15ba20, 0x3ae33: 0x6d15bc20,\n\t0x3ae34: 0x6d15be20, 0x3ae35: 0x6d15c020, 0x3ae36: 0x6d15c220, 0x3ae37: 0x6d15c420,\n\t0x3ae38: 0x6d43a420, 0x3ae39: 0x6d43a620, 0x3ae3a: 0x6d43a820, 0x3ae3b: 0x6d43aa20,\n\t0x3ae3c: 0x6d43ac20, 0x3ae3d: 0x6d43ae20, 0x3ae3e: 0x6d43b020, 0x3ae3f: 0x6d43b220,\n\t// Block 0xeb9, offset 0x3ae40\n\t0x3ae40: 0x6d43b420, 0x3ae41: 0x6d43b620, 0x3ae42: 0x6d43b820, 0x3ae43: 0x6d43ba20,\n\t0x3ae44: 0x6d43bc20, 0x3ae45: 0x6d43be20, 0x3ae46: 0x6d43c020, 0x3ae47: 0x6d43c220,\n\t0x3ae48: 0x6d43c420, 0x3ae49: 0x6d43c620, 0x3ae4a: 0x6d43c820, 0x3ae4b: 0x6d43ca20,\n\t0x3ae4c: 0x6d43cc20, 0x3ae4d: 0x6d43ce20, 0x3ae4e: 0x6d43d020, 0x3ae4f: 0x6d43d220,\n\t0x3ae50: 0x6d708c20, 0x3ae51: 0x6d708e20, 0x3ae52: 0x6d709020, 0x3ae53: 0x6d709220,\n\t0x3ae54: 0x6d709420, 0x3ae55: 0x6d709620, 0x3ae56: 0x6d709820, 0x3ae57: 0x6d709a20,\n\t0x3ae58: 0x6d709c20, 0x3ae59: 0x6d709e20, 0x3ae5a: 0x6d70a020, 0x3ae5b: 0x6d70a220,\n\t0x3ae5c: 0x6d70a420, 0x3ae5d: 0x6d70a620, 0x3ae5e: 0x6d70a820, 0x3ae5f: 0x6d70aa20,\n\t0x3ae60: 0x6d70ac20, 0x3ae61: 0x6d70ae20, 0x3ae62: 0x6d70b020, 0x3ae63: 0x6d70b220,\n\t0x3ae64: 0x6d70b420, 0x3ae65: 0x6d70b620, 0x3ae66: 0x6d70b820, 0x3ae67: 0x6d70ba20,\n\t0x3ae68: 0x6d70bc20, 0x3ae69: 0x6d99c020, 0x3ae6a: 0x6d99c220, 0x3ae6b: 0x6d99c420,\n\t0x3ae6c: 0x6d99c620, 0x3ae6d: 0x6d99c820, 0x3ae6e: 0x6d99ca20, 0x3ae6f: 0x6d99cc20,\n\t0x3ae70: 0x6d99ce20, 0x3ae71: 0x6d99d020, 0x3ae72: 0x6d99d220, 0x3ae73: 0x6d99d420,\n\t0x3ae74: 0x6d99d620, 0x3ae75: 0x6d99d820, 0x3ae76: 0x6d99da20, 0x3ae77: 0x6d99dc20,\n\t0x3ae78: 0x6d99de20, 0x3ae79: 0x6d99e020, 0x3ae7a: 0x6d99e220, 0x3ae7b: 0x6d99e420,\n\t0x3ae7c: 0x6d99e620, 0x3ae7d: 0x6d99e820, 0x3ae7e: 0x6d99ea20, 0x3ae7f: 0x6dbc8420,\n\t// Block 0xeba, offset 0x3ae80\n\t0x3ae80: 0x6dbc8620, 0x3ae81: 0x6dbc8820, 0x3ae82: 0x6dbc8a20, 0x3ae83: 0x6dbc8c20,\n\t0x3ae84: 0x6dbc8e20, 0x3ae85: 0x6dbc9020, 0x3ae86: 0x6dbc9220, 0x3ae87: 0x6dbc9420,\n\t0x3ae88: 0x6dbc9620, 0x3ae89: 0x6dbc9820, 0x3ae8a: 0x6dbc9a20, 0x3ae8b: 0x6dbc9c20,\n\t0x3ae8c: 0x6dbc9e20, 0x3ae8d: 0x6dbca020, 0x3ae8e: 0x6dbca220, 0x3ae8f: 0x6dbca420,\n\t0x3ae90: 0x6dbca620, 0x3ae91: 0x6dbca820, 0x3ae92: 0x6dbcaa20, 0x3ae93: 0x6dbcac20,\n\t0x3ae94: 0x6dbcae20, 0x3ae95: 0x6dbcb020, 0x3ae96: 0x6dbcb220, 0x3ae97: 0x6dbcb420,\n\t0x3ae98: 0x6dbcb620, 0x3ae99: 0x6dbcb820, 0x3ae9a: 0x6dbcba20, 0x3ae9b: 0x6dbcbc20,\n\t0x3ae9c: 0x6dbcbe20, 0x3ae9d: 0x6dbcc020, 0x3ae9e: 0x6dbcc220, 0x3ae9f: 0x6dda5c20,\n\t0x3aea0: 0x6dda5e20, 0x3aea1: 0x6dda6020, 0x3aea2: 0x6dda6220, 0x3aea3: 0x6dda6420,\n\t0x3aea4: 0x6dda6620, 0x3aea5: 0x6dda6820, 0x3aea6: 0x6dda6a20, 0x3aea7: 0x6dda6c20,\n\t0x3aea8: 0x6dda6e20, 0x3aea9: 0x6dda7020, 0x3aeaa: 0x6dda7220, 0x3aeab: 0x6dda7420,\n\t0x3aeac: 0x6dda7620, 0x3aead: 0x6dda7820, 0x3aeae: 0x6dda7a20, 0x3aeaf: 0x6dda7c20,\n\t0x3aeb0: 0x6dda7e20, 0x3aeb1: 0x6dda8020, 0x3aeb2: 0x6dda8220, 0x3aeb3: 0x6dda8420,\n\t0x3aeb4: 0x6dda8620, 0x3aeb5: 0x6dda8820, 0x3aeb6: 0x6dda8a20, 0x3aeb7: 0x6dda8c20,\n\t0x3aeb8: 0x6dda8e20, 0x3aeb9: 0x6dda9020, 0x3aeba: 0x6dda9220, 0x3aebb: 0x6dda9420,\n\t0x3aebc: 0x6dda9620, 0x3aebd: 0x6dda9820, 0x3aebe: 0x6dda9a20, 0x3aebf: 0x6dda9c20,\n\t// Block 0xebb, offset 0x3aec0\n\t0x3aec0: 0x6dda9e20, 0x3aec1: 0x6ddaa020, 0x3aec2: 0x6ddaa220, 0x3aec3: 0x6df25e20,\n\t0x3aec4: 0x6df26020, 0x3aec5: 0x6df26220, 0x3aec6: 0x6df26420, 0x3aec7: 0x6df26620,\n\t0x3aec8: 0x6df26820, 0x3aec9: 0x6df26a20, 0x3aeca: 0x6df26c20, 0x3aecb: 0x6df26e20,\n\t0x3aecc: 0x6df27020, 0x3aecd: 0x6df27220, 0x3aece: 0x6df27420, 0x3aecf: 0x6df27620,\n\t0x3aed0: 0x6df27820, 0x3aed1: 0x6df27a20, 0x3aed2: 0x6df27c20, 0x3aed3: 0x6df27e20,\n\t0x3aed4: 0x6df28020, 0x3aed5: 0x6df28220, 0x3aed6: 0x6df28420, 0x3aed7: 0x6df28620,\n\t0x3aed8: 0x6df28820, 0x3aed9: 0x6df28a20, 0x3aeda: 0x6df28c20, 0x3aedb: 0x6df28e20,\n\t0x3aedc: 0x6df29020, 0x3aedd: 0x6df29220, 0x3aede: 0x6df29420, 0x3aedf: 0x6df29620,\n\t0x3aee0: 0x6df29820, 0x3aee1: 0x6df29a20, 0x3aee2: 0x6df29c20, 0x3aee3: 0x6df29e20,\n\t0x3aee4: 0x6df2a020, 0x3aee5: 0x6df2a220, 0x3aee6: 0x6e069820, 0x3aee7: 0x6e069a20,\n\t0x3aee8: 0x6e069c20, 0x3aee9: 0x6e069e20, 0x3aeea: 0x6e06a020, 0x3aeeb: 0x6e06a220,\n\t0x3aeec: 0x6e06a420, 0x3aeed: 0x6e06a620, 0x3aeee: 0x6e06a820, 0x3aeef: 0x6e06aa20,\n\t0x3aef0: 0x6e06ac20, 0x3aef1: 0x6e06ae20, 0x3aef2: 0x6e06b020, 0x3aef3: 0x6e06b220,\n\t0x3aef4: 0x6e06b420, 0x3aef5: 0x6e06b620, 0x3aef6: 0x6e06b820, 0x3aef7: 0x6e06ba20,\n\t0x3aef8: 0x6e06bc20, 0x3aef9: 0x6e06be20, 0x3aefa: 0x6e06c020, 0x3aefb: 0x6e06c220,\n\t0x3aefc: 0x6e06c420, 0x3aefd: 0x6e06c620, 0x3aefe: 0x6e06c820, 0x3aeff: 0x6e06ca20,\n\t// Block 0xebc, offset 0x3af00\n\t0x3af00: 0x6e06cc20, 0x3af01: 0x6e06ce20, 0x3af02: 0x6e06d020, 0x3af03: 0x6e171e20,\n\t0x3af04: 0x6e172020, 0x3af05: 0x6e172220, 0x3af06: 0x6e172420, 0x3af07: 0x6e172620,\n\t0x3af08: 0x6e172820, 0x3af09: 0x6e172a20, 0x3af0a: 0x6e172c20, 0x3af0b: 0x6e172e20,\n\t0x3af0c: 0x6e173020, 0x3af0d: 0x6e173220, 0x3af0e: 0x6e173420, 0x3af0f: 0x6e173620,\n\t0x3af10: 0x6e173820, 0x3af11: 0x6e173a20, 0x3af12: 0x6e173c20, 0x3af13: 0x6e242020,\n\t0x3af14: 0x6e242220, 0x3af15: 0x6e242420, 0x3af16: 0x6e242620, 0x3af17: 0x6e242820,\n\t0x3af18: 0x6e242a20, 0x3af19: 0x6e242c20, 0x3af1a: 0x6e242e20, 0x3af1b: 0x6e243020,\n\t0x3af1c: 0x6e243220, 0x3af1d: 0x6e243420, 0x3af1e: 0x6e243620, 0x3af1f: 0x6e243820,\n\t0x3af20: 0x6e243a20, 0x3af21: 0x6e243c20, 0x3af22: 0x6e243e20, 0x3af23: 0x6e244020,\n\t0x3af24: 0x6e244220, 0x3af25: 0x6e2e1220, 0x3af26: 0x6e2e1420, 0x3af27: 0x6e2e1620,\n\t0x3af28: 0x6e2e1820, 0x3af29: 0x6e2e1a20, 0x3af2a: 0x6e2e1c20, 0x3af2b: 0x6e2e1e20,\n\t0x3af2c: 0x6e2e2020, 0x3af2d: 0x6e2e2220, 0x3af2e: 0x6e2e2420, 0x3af2f: 0x6e2e2620,\n\t0x3af30: 0x6e2e2820, 0x3af31: 0x6e2e2a20, 0x3af32: 0x6e35c220, 0x3af33: 0x6e35c420,\n\t0x3af34: 0x6e35c620, 0x3af35: 0x6e35c820, 0x3af36: 0x6e35ca20, 0x3af37: 0x6e35cc20,\n\t0x3af38: 0x6e3b2420, 0x3af39: 0x6e3b2620, 0x3af3a: 0x6e3b2820, 0x3af3b: 0x6e3b9e20,\n\t0x3af3c: 0x6e3b2a20, 0x3af3d: 0x6e3b2c20, 0x3af3e: 0x6e3b2e20, 0x3af3f: 0x6e3ee220,\n\t// Block 0xebd, offset 0x3af40\n\t0x3af40: 0x6e3ee420, 0x3af41: 0x6e3ee620, 0x3af42: 0x6e3ee820, 0x3af43: 0x6e3eea20,\n\t0x3af44: 0x6e3eec20, 0x3af45: 0x6e3eee20, 0x3af46: 0x6e3ef020, 0x3af47: 0x6e417820,\n\t0x3af48: 0x6e436a20, 0x3af49: 0x6e436c20, 0x3af4a: 0x6e436e20, 0x3af4b: 0x6e457020,\n\t0x3af4c: 0x6e464e20, 0x3af4d: 0x6e465020, 0x3af4e: 0x6e469420, 0x3af4f: 0x6e469620,\n\t0x3af50: 0x6e46b620, 0x3af51: 0x6e471a20, 0x3af52: 0x6ce73620, 0x3af53: 0x6d15c820,\n\t0x3af54: 0x6d15ca20, 0x3af55: 0x6d15cc20, 0x3af56: 0x6d15ce20, 0x3af57: 0x6d15d020,\n\t0x3af58: 0x6d43e420, 0x3af59: 0x6d43e620, 0x3af5a: 0x6d43e820, 0x3af5b: 0x6d43ea20,\n\t0x3af5c: 0x6d43ec20, 0x3af5d: 0x6d43ee20, 0x3af5e: 0x6d43f020, 0x3af5f: 0x6d43f220,\n\t0x3af60: 0x6d43f420, 0x3af61: 0x6d43f620, 0x3af62: 0x6d43f820, 0x3af63: 0x6d43fa20,\n\t0x3af64: 0x6d70c820, 0x3af65: 0x6d70ca20, 0x3af66: 0x6d70cc20, 0x3af67: 0x6d70ce20,\n\t0x3af68: 0x6d70d020, 0x3af69: 0x6d70d220, 0x3af6a: 0x6d70d420, 0x3af6b: 0x6d70d620,\n\t0x3af6c: 0x6d70d820, 0x3af6d: 0x6d70da20, 0x3af6e: 0x6d70dc20, 0x3af6f: 0x6d99f020,\n\t0x3af70: 0x6d99f220, 0x3af71: 0x6d99f420, 0x3af72: 0x6d99f620, 0x3af73: 0x6d99f820,\n\t0x3af74: 0x6d99fa20, 0x3af75: 0x6d99fc20, 0x3af76: 0x6d99fe20, 0x3af77: 0x6d9a0020,\n\t0x3af78: 0x6dbccc20, 0x3af79: 0x6dbcce20, 0x3af7a: 0x6dbcd020, 0x3af7b: 0x6dbcd220,\n\t0x3af7c: 0x6dbcd420, 0x3af7d: 0x6dbcd620, 0x3af7e: 0x6dbcd820, 0x3af7f: 0x6dbcda20,\n\t// Block 0xebe, offset 0x3af80\n\t0x3af80: 0x6dbcdc20, 0x3af81: 0x6dbcde20, 0x3af82: 0x6dbce020, 0x3af83: 0x6dbce220,\n\t0x3af84: 0x6dbce420, 0x3af85: 0x6ddab420, 0x3af86: 0x6ddab620, 0x3af87: 0x6ddab820,\n\t0x3af88: 0x6ddaba20, 0x3af89: 0x6ddabc20, 0x3af8a: 0x6ddabe20, 0x3af8b: 0x6ddac020,\n\t0x3af8c: 0x6ddac220, 0x3af8d: 0x6ddac420, 0x3af8e: 0x6ddac620, 0x3af8f: 0x6df2b020,\n\t0x3af90: 0x6df2b220, 0x3af91: 0x6df2b420, 0x3af92: 0x6df2b620, 0x3af93: 0x6df2b820,\n\t0x3af94: 0x6df2ba20, 0x3af95: 0x6df2bc20, 0x3af96: 0x6df2be20, 0x3af97: 0x6df2c020,\n\t0x3af98: 0x6e06d820, 0x3af99: 0x6e06da20, 0x3af9a: 0x6e06dc20, 0x3af9b: 0x6e06de20,\n\t0x3af9c: 0x6e06e020, 0x3af9d: 0x6e06e220, 0x3af9e: 0x6e06e420, 0x3af9f: 0x6e06e620,\n\t0x3afa0: 0x6e174620, 0x3afa1: 0x6e174820, 0x3afa2: 0x6e174a20, 0x3afa3: 0x6e174c20,\n\t0x3afa4: 0x6e174e20, 0x3afa5: 0x6e175020, 0x3afa6: 0x6e175220, 0x3afa7: 0x6e175420,\n\t0x3afa8: 0x6e244a20, 0x3afa9: 0x6e244c20, 0x3afaa: 0x6e244e20, 0x3afab: 0x6e245020,\n\t0x3afac: 0x6e245220, 0x3afad: 0x6e245420, 0x3afae: 0x6e2e2e20, 0x3afaf: 0x6e2e3020,\n\t0x3afb0: 0x6e2e3220, 0x3afb1: 0x6e2e3420, 0x3afb2: 0x6e35d220, 0x3afb3: 0x6e35d420,\n\t0x3afb4: 0x6e3b3020, 0x3afb5: 0x6e3ef220, 0x3afb6: 0x6e417a20, 0x3afb7: 0x6e417c20,\n\t0x3afb8: 0x6e417e20, 0x3afb9: 0x6e437020, 0x3afba: 0x6e44b420, 0x3afbb: 0x6e44b620,\n\t0x3afbc: 0x6c428220, 0x3afbd: 0x6c633820, 0x3afbe: 0x6c633a20, 0x3afbf: 0x6d15d820,\n\t// Block 0xebf, offset 0x3afc0\n\t0x3afc0: 0x6d15da20, 0x3afc1: 0x6d15e220, 0x3afc2: 0x6d15e420, 0x3afc3: 0x6d70e420,\n\t0x3afc4: 0x6d9a0620, 0x3afc5: 0x6dbcec20, 0x3afc6: 0x6dbcee20, 0x3afc7: 0x6dbcf020,\n\t0x3afc8: 0x6ddac820, 0x3afc9: 0x6df2c820, 0x3afca: 0x6df2ca20, 0x3afcb: 0x6e06ec20,\n\t0x3afcc: 0x6e175820, 0x3afcd: 0x6e06ee20, 0x3afce: 0x6e06f020, 0x3afcf: 0x6e175a20,\n\t0x3afd0: 0x6e175c20, 0x3afd1: 0x6e245620, 0x3afd2: 0x6e245820, 0x3afd3: 0x6e245a20,\n\t0x3afd4: 0x6e2e3820, 0x3afd5: 0x6e2e3a20, 0x3afd6: 0x6e3b3220, 0x3afd7: 0x6ce74220,\n\t0x3afd8: 0x6d15ec20, 0x3afd9: 0x6d15ee20, 0x3afda: 0x6d440820, 0x3afdb: 0x6d440a20,\n\t0x3afdc: 0x6d440c20, 0x3afdd: 0x6d440e20, 0x3afde: 0x6d70e620, 0x3afdf: 0x6d70e820,\n\t0x3afe0: 0x6d70ea20, 0x3afe1: 0x6d70ec20, 0x3afe2: 0x6d70ee20, 0x3afe3: 0x6d70f020,\n\t0x3afe4: 0x6d70f220, 0x3afe5: 0x6d70f420, 0x3afe6: 0x6d70f620, 0x3afe7: 0x6d9a0e20,\n\t0x3afe8: 0x6d9a1020, 0x3afe9: 0x6d9a1220, 0x3afea: 0x6d9a1420, 0x3afeb: 0x6d9a1620,\n\t0x3afec: 0x6d9a1820, 0x3afed: 0x6dbcf220, 0x3afee: 0x6dbcf420, 0x3afef: 0x6dbcf620,\n\t0x3aff0: 0x6dbcf820, 0x3aff1: 0x6ddad020, 0x3aff2: 0x6ddad220, 0x3aff3: 0x6ddad420,\n\t0x3aff4: 0x6ddad620, 0x3aff5: 0x6df2d420, 0x3aff6: 0x6df2d620, 0x3aff7: 0x6df2d820,\n\t0x3aff8: 0x6df2da20, 0x3aff9: 0x6e06f820, 0x3affa: 0x6e06fa20, 0x3affb: 0x6e06fc20,\n\t0x3affc: 0x6e06fe20, 0x3affd: 0x6e070020, 0x3affe: 0x6e070220, 0x3afff: 0x6e175e20,\n\t// Block 0xec0, offset 0x3b000\n\t0x3b000: 0x6e176020, 0x3b001: 0x6e176220, 0x3b002: 0x6e245e20, 0x3b003: 0x6e246020,\n\t0x3b004: 0x6e246220, 0x3b005: 0x6e246420, 0x3b006: 0x6e246620, 0x3b007: 0x6e2e3e20,\n\t0x3b008: 0x6e35d820, 0x3b009: 0x6e418020, 0x3b00a: 0x6e469820, 0x3b00b: 0x6c634220,\n\t0x3b00c: 0x6cb6b820, 0x3b00d: 0x6cb6ba20, 0x3b00e: 0x6cb6bc20, 0x3b00f: 0x6cb6be20,\n\t0x3b010: 0x6ce75020, 0x3b011: 0x6ce75220, 0x3b012: 0x6ce75420, 0x3b013: 0x6ce75620,\n\t0x3b014: 0x6ce75820, 0x3b015: 0x6ce75a20, 0x3b016: 0x6ce75c20, 0x3b017: 0x6ce75e20,\n\t0x3b018: 0x6ce76020, 0x3b019: 0x6d160e20, 0x3b01a: 0x6d161020, 0x3b01b: 0x6d161220,\n\t0x3b01c: 0x6d161420, 0x3b01d: 0x6d161620, 0x3b01e: 0x6d161820, 0x3b01f: 0x6d161a20,\n\t0x3b020: 0x6d161c20, 0x3b021: 0x6d161e20, 0x3b022: 0x6d162020, 0x3b023: 0x6d162220,\n\t0x3b024: 0x6d162420, 0x3b025: 0x6d162620, 0x3b026: 0x6d162820, 0x3b027: 0x6d162a20,\n\t0x3b028: 0x6d162c20, 0x3b029: 0x6d162e20, 0x3b02a: 0x6d163020, 0x3b02b: 0x6d163220,\n\t0x3b02c: 0x6d163420, 0x3b02d: 0x6d163620, 0x3b02e: 0x6d163820, 0x3b02f: 0x6d163a20,\n\t0x3b030: 0x6d443220, 0x3b031: 0x6d443420, 0x3b032: 0x6d443620, 0x3b033: 0x6d443820,\n\t0x3b034: 0x6d443a20, 0x3b035: 0x6d443c20, 0x3b036: 0x6d443e20, 0x3b037: 0x6d444020,\n\t0x3b038: 0x6d444220, 0x3b039: 0x6d444420, 0x3b03a: 0x6d444620, 0x3b03b: 0x6d444820,\n\t0x3b03c: 0x6d444a20, 0x3b03d: 0x6d444c20, 0x3b03e: 0x6d444e20, 0x3b03f: 0x6d445020,\n\t// Block 0xec1, offset 0x3b040\n\t0x3b040: 0x6d445220, 0x3b041: 0x6d445420, 0x3b042: 0x6d445620, 0x3b043: 0x6d445820,\n\t0x3b044: 0x6d445a20, 0x3b045: 0x6d445c20, 0x3b046: 0x6d445e20, 0x3b047: 0x6d446020,\n\t0x3b048: 0x6d446220, 0x3b049: 0x6d446420, 0x3b04a: 0x6d446620, 0x3b04b: 0x6d446820,\n\t0x3b04c: 0x6d446a20, 0x3b04d: 0x6d446c20, 0x3b04e: 0x6d446e20, 0x3b04f: 0x6d712020,\n\t0x3b050: 0x6d712220, 0x3b051: 0x6d712420, 0x3b052: 0x6d712620, 0x3b053: 0x6d712820,\n\t0x3b054: 0x6d712a20, 0x3b055: 0x6d712c20, 0x3b056: 0x6d712e20, 0x3b057: 0x6d713020,\n\t0x3b058: 0x6d713220, 0x3b059: 0x6d713420, 0x3b05a: 0x6d713620, 0x3b05b: 0x6d713820,\n\t0x3b05c: 0x6d713a20, 0x3b05d: 0x6d713c20, 0x3b05e: 0x6d713e20, 0x3b05f: 0x6d714020,\n\t0x3b060: 0x6d714220, 0x3b061: 0x6d714420, 0x3b062: 0x6d714620, 0x3b063: 0x6d714820,\n\t0x3b064: 0x6d714a20, 0x3b065: 0x6d714c20, 0x3b066: 0x6d714e20, 0x3b067: 0x6d715020,\n\t0x3b068: 0x6d715220, 0x3b069: 0x6d715420, 0x3b06a: 0x6d715620, 0x3b06b: 0x6d715820,\n\t0x3b06c: 0x6d715a20, 0x3b06d: 0x6d715c20, 0x3b06e: 0x6d9a5020, 0x3b06f: 0x6d9a5220,\n\t0x3b070: 0x6d9a5420, 0x3b071: 0x6d9a5620, 0x3b072: 0x6d9a5820, 0x3b073: 0x6d9a5a20,\n\t0x3b074: 0x6d9a5c20, 0x3b075: 0x6d9a5e20, 0x3b076: 0x6d9a6020, 0x3b077: 0x6d9a6220,\n\t0x3b078: 0x6d9a6420, 0x3b079: 0x6d9a6620, 0x3b07a: 0x6d9a6820, 0x3b07b: 0x6d9a6a20,\n\t0x3b07c: 0x6d9a6c20, 0x3b07d: 0x6d9a6e20, 0x3b07e: 0x6d9a7020, 0x3b07f: 0x6d9a7220,\n\t// Block 0xec2, offset 0x3b080\n\t0x3b080: 0x6d9a7420, 0x3b081: 0x6d9a7620, 0x3b082: 0x6d9a7820, 0x3b083: 0x6d9a7a20,\n\t0x3b084: 0x6d9a7c20, 0x3b085: 0x6d9a7e20, 0x3b086: 0x6d9a8020, 0x3b087: 0x6d9a8220,\n\t0x3b088: 0x6d9a8420, 0x3b089: 0x6d9a8620, 0x3b08a: 0x6d9a8820, 0x3b08b: 0x6d9a8a20,\n\t0x3b08c: 0x6d9a8c20, 0x3b08d: 0x6d9a8e20, 0x3b08e: 0x6d9a9020, 0x3b08f: 0x6d9a9220,\n\t0x3b090: 0x6d9a9420, 0x3b091: 0x6d9a9620, 0x3b092: 0x6d9a9820, 0x3b093: 0x6d9a9a20,\n\t0x3b094: 0x6d9a9c20, 0x3b095: 0x6d9a9e20, 0x3b096: 0x6d9aa020, 0x3b097: 0x6d9aa220,\n\t0x3b098: 0x6d9aa420, 0x3b099: 0x6d9aa620, 0x3b09a: 0x6d9aa820, 0x3b09b: 0x6d9aaa20,\n\t0x3b09c: 0x6d9aac20, 0x3b09d: 0x6dbd2220, 0x3b09e: 0x6dbd2420, 0x3b09f: 0x6dbd2620,\n\t0x3b0a0: 0x6dbd2820, 0x3b0a1: 0x6dbd2a20, 0x3b0a2: 0x6dbd2c20, 0x3b0a3: 0x6dbd2e20,\n\t0x3b0a4: 0x6dbd3020, 0x3b0a5: 0x6dbd3220, 0x3b0a6: 0x6dbd3420, 0x3b0a7: 0x6dbd3620,\n\t0x3b0a8: 0x6dbd3820, 0x3b0a9: 0x6dbd3a20, 0x3b0aa: 0x6dbd3c20, 0x3b0ab: 0x6dbd3e20,\n\t0x3b0ac: 0x6dbd4020, 0x3b0ad: 0x6dbd4220, 0x3b0ae: 0x6dbd4420, 0x3b0af: 0x6dbd4620,\n\t0x3b0b0: 0x6dbd4820, 0x3b0b1: 0x6dbd4a20, 0x3b0b2: 0x6dbd4c20, 0x3b0b3: 0x6dbd4e20,\n\t0x3b0b4: 0x6dbd5020, 0x3b0b5: 0x6dbd5220, 0x3b0b6: 0x6dbd5420, 0x3b0b7: 0x6dbd5620,\n\t0x3b0b8: 0x6dbd5820, 0x3b0b9: 0x6dbd5a20, 0x3b0ba: 0x6dbd5c20, 0x3b0bb: 0x6dbd5e20,\n\t0x3b0bc: 0x6dbd6020, 0x3b0bd: 0x6dbd6220, 0x3b0be: 0x6dbd6420, 0x3b0bf: 0x6dbd6620,\n\t// Block 0xec3, offset 0x3b0c0\n\t0x3b0c0: 0x6ddb0820, 0x3b0c1: 0x6ddb0a20, 0x3b0c2: 0x6ddb0c20, 0x3b0c3: 0x6ddb0e20,\n\t0x3b0c4: 0x6ddb1020, 0x3b0c5: 0x6ddb1220, 0x3b0c6: 0x6ddb1420, 0x3b0c7: 0x6ddb1620,\n\t0x3b0c8: 0x6ddb1820, 0x3b0c9: 0x6ddb1a20, 0x3b0ca: 0x6ddb1c20, 0x3b0cb: 0x6ddb1e20,\n\t0x3b0cc: 0x6ddb2020, 0x3b0cd: 0x6ddb2220, 0x3b0ce: 0x6ddb2420, 0x3b0cf: 0x6ddb2620,\n\t0x3b0d0: 0x6ddb2820, 0x3b0d1: 0x6ddb2a20, 0x3b0d2: 0x6ddb2c20, 0x3b0d3: 0x6ddb2e20,\n\t0x3b0d4: 0x6ddb3020, 0x3b0d5: 0x6ddb3220, 0x3b0d6: 0x6ddb3420, 0x3b0d7: 0x6ddb3620,\n\t0x3b0d8: 0x6ddb3820, 0x3b0d9: 0x6df30220, 0x3b0da: 0x6df30420, 0x3b0db: 0x6df30620,\n\t0x3b0dc: 0x6df30820, 0x3b0dd: 0x6df30a20, 0x3b0de: 0x6df30c20, 0x3b0df: 0x6df30e20,\n\t0x3b0e0: 0x6df31020, 0x3b0e1: 0x6df31220, 0x3b0e2: 0x6df31420, 0x3b0e3: 0x6df31620,\n\t0x3b0e4: 0x6df31820, 0x3b0e5: 0x6df31a20, 0x3b0e6: 0x6df31c20, 0x3b0e7: 0x6df31e20,\n\t0x3b0e8: 0x6df32020, 0x3b0e9: 0x6df32220, 0x3b0ea: 0x6df32420, 0x3b0eb: 0x6df32620,\n\t0x3b0ec: 0x6df32820, 0x3b0ed: 0x6df32a20, 0x3b0ee: 0x6df32c20, 0x3b0ef: 0x6df32e20,\n\t0x3b0f0: 0x6df33020, 0x3b0f1: 0x6df33220, 0x3b0f2: 0x6df33420, 0x3b0f3: 0x6e071820,\n\t0x3b0f4: 0x6e071a20, 0x3b0f5: 0x6e071c20, 0x3b0f6: 0x6e071e20, 0x3b0f7: 0x6e072020,\n\t0x3b0f8: 0x6e072220, 0x3b0f9: 0x6e072420, 0x3b0fa: 0x6e072620, 0x3b0fb: 0x6e072820,\n\t0x3b0fc: 0x6e072a20, 0x3b0fd: 0x6e072c20, 0x3b0fe: 0x6e072e20, 0x3b0ff: 0x6e073020,\n\t// Block 0xec4, offset 0x3b100\n\t0x3b100: 0x6e073220, 0x3b101: 0x6e073420, 0x3b102: 0x6e073620, 0x3b103: 0x6e073820,\n\t0x3b104: 0x6e073a20, 0x3b105: 0x6e073c20, 0x3b106: 0x6e073e20, 0x3b107: 0x6e074020,\n\t0x3b108: 0x6e074220, 0x3b109: 0x6e177c20, 0x3b10a: 0x6e177e20, 0x3b10b: 0x6e178020,\n\t0x3b10c: 0x6e178220, 0x3b10d: 0x6e178420, 0x3b10e: 0x6e178620, 0x3b10f: 0x6e178820,\n\t0x3b110: 0x6e178a20, 0x3b111: 0x6e178c20, 0x3b112: 0x6e178e20, 0x3b113: 0x6e179020,\n\t0x3b114: 0x6e179220, 0x3b115: 0x6e179420, 0x3b116: 0x6e179620, 0x3b117: 0x6e179820,\n\t0x3b118: 0x6e179a20, 0x3b119: 0x6e179c20, 0x3b11a: 0x6e179e20, 0x3b11b: 0x6e17a020,\n\t0x3b11c: 0x6e17a220, 0x3b11d: 0x6e17a420, 0x3b11e: 0x6e17a620, 0x3b11f: 0x6e247420,\n\t0x3b120: 0x6e247620, 0x3b121: 0x6e247820, 0x3b122: 0x6e247a20, 0x3b123: 0x6e247c20,\n\t0x3b124: 0x6e247e20, 0x3b125: 0x6e248020, 0x3b126: 0x6e248220, 0x3b127: 0x6e248420,\n\t0x3b128: 0x6e248620, 0x3b129: 0x6e248820, 0x3b12a: 0x6e248a20, 0x3b12b: 0x6e248c20,\n\t0x3b12c: 0x6e2e4820, 0x3b12d: 0x6e2e4a20, 0x3b12e: 0x6e2e4c20, 0x3b12f: 0x6e2e4e20,\n\t0x3b130: 0x6e2e5020, 0x3b131: 0x6e2e5220, 0x3b132: 0x6e2e5420, 0x3b133: 0x6e2e5620,\n\t0x3b134: 0x6e2e5820, 0x3b135: 0x6e2e5a20, 0x3b136: 0x6e2e5c20, 0x3b137: 0x6e2e5e20,\n\t0x3b138: 0x6e2e6020, 0x3b139: 0x6e2e6220, 0x3b13a: 0x6e2e6420, 0x3b13b: 0x6e2e6620,\n\t0x3b13c: 0x6e2e6820, 0x3b13d: 0x6e2e6a20, 0x3b13e: 0x6e35e020, 0x3b13f: 0x6e35e220,\n\t// Block 0xec5, offset 0x3b140\n\t0x3b140: 0x6e35e420, 0x3b141: 0x6e35e620, 0x3b142: 0x6e35e820, 0x3b143: 0x6e35ea20,\n\t0x3b144: 0x6e35ec20, 0x3b145: 0x6e35ee20, 0x3b146: 0x6e3b3c20, 0x3b147: 0x6e3b3e20,\n\t0x3b148: 0x6e3b4020, 0x3b149: 0x6e3ef420, 0x3b14a: 0x6e3ef620, 0x3b14b: 0x6e3ef820,\n\t0x3b14c: 0x6e3efa20, 0x3b14d: 0x6e3efc20, 0x3b14e: 0x6e3efe20, 0x3b14f: 0x6e418620,\n\t0x3b150: 0x6e418820, 0x3b151: 0x6e418a20, 0x3b152: 0x6e44b820, 0x3b153: 0x6e44ba20,\n\t0x3b154: 0x6e460020, 0x3b155: 0x6d447420, 0x3b156: 0x6d447620, 0x3b157: 0x6df33a20,\n\t0x3b158: 0x6cb6ce20, 0x3b159: 0x6cb6d020, 0x3b15a: 0x6ce77e20, 0x3b15b: 0x6ce78020,\n\t0x3b15c: 0x6ce78220, 0x3b15d: 0x6ce78420, 0x3b15e: 0x6ce78620, 0x3b15f: 0x6ce78820,\n\t0x3b160: 0x6ce78a20, 0x3b161: 0x6ce78c20, 0x3b162: 0x6d165c20, 0x3b163: 0x6d165e20,\n\t0x3b164: 0x6d166020, 0x3b165: 0x6d166220, 0x3b166: 0x6d166420, 0x3b167: 0x6d166620,\n\t0x3b168: 0x6d166820, 0x3b169: 0x6d166a20, 0x3b16a: 0x6d166c20, 0x3b16b: 0x6d166e20,\n\t0x3b16c: 0x6d167020, 0x3b16d: 0x6d167220, 0x3b16e: 0x6d167420, 0x3b16f: 0x6d167620,\n\t0x3b170: 0x6cf59620, 0x3b171: 0x6d167820, 0x3b172: 0x6d167a20, 0x3b173: 0x6d167c20,\n\t0x3b174: 0x6d449420, 0x3b175: 0x6d449620, 0x3b176: 0x6d449820, 0x3b177: 0x6d449a20,\n\t0x3b178: 0x6d449c20, 0x3b179: 0x6d449e20, 0x3b17a: 0x6d44a020, 0x3b17b: 0x6d44a220,\n\t0x3b17c: 0x6d44a420, 0x3b17d: 0x6d44a620, 0x3b17e: 0x6d44a820, 0x3b17f: 0x6d44aa20,\n\t// Block 0xec6, offset 0x3b180\n\t0x3b180: 0x6d44ac20, 0x3b181: 0x6d44ae20, 0x3b182: 0x6d44b020, 0x3b183: 0x6d44b220,\n\t0x3b184: 0x6d717620, 0x3b185: 0x6d717820, 0x3b186: 0x6d717a20, 0x3b187: 0x6d717c20,\n\t0x3b188: 0x6d717e20, 0x3b189: 0x6d718020, 0x3b18a: 0x6d718220, 0x3b18b: 0x6d718420,\n\t0x3b18c: 0x6d718620, 0x3b18d: 0x6d718820, 0x3b18e: 0x6d718a20, 0x3b18f: 0x6d718c20,\n\t0x3b190: 0x6d718e20, 0x3b191: 0x6d719020, 0x3b192: 0x6d719220, 0x3b193: 0x6d9aca20,\n\t0x3b194: 0x6d9acc20, 0x3b195: 0x6d9ace20, 0x3b196: 0x6d9ad020, 0x3b197: 0x6d9ad220,\n\t0x3b198: 0x6d9ad420, 0x3b199: 0x6d9ad620, 0x3b19a: 0x6d9ad820, 0x3b19b: 0x6d9ada20,\n\t0x3b19c: 0x6d9adc20, 0x3b19d: 0x6d9ade20, 0x3b19e: 0x6d9ae020, 0x3b19f: 0x6d9ae220,\n\t0x3b1a0: 0x6d9ae420, 0x3b1a1: 0x6d9ae620, 0x3b1a2: 0x6d9ae820, 0x3b1a3: 0x6d9aea20,\n\t0x3b1a4: 0x6d9aec20, 0x3b1a5: 0x6d9aee20, 0x3b1a6: 0x6d9af020, 0x3b1a7: 0x6d9af220,\n\t0x3b1a8: 0x6dbd7c20, 0x3b1a9: 0x6dbd7e20, 0x3b1aa: 0x6dbd8020, 0x3b1ab: 0x6dbd8220,\n\t0x3b1ac: 0x6dbd8420, 0x3b1ad: 0x6dbd8620, 0x3b1ae: 0x6dbd8820, 0x3b1af: 0x6dbd8a20,\n\t0x3b1b0: 0x6dbd8c20, 0x3b1b1: 0x6dbd8e20, 0x3b1b2: 0x6dbd9020, 0x3b1b3: 0x6dbd9220,\n\t0x3b1b4: 0x6dbd9420, 0x3b1b5: 0x6dbd9620, 0x3b1b6: 0x6dbd9820, 0x3b1b7: 0x6dbd9a20,\n\t0x3b1b8: 0x6dbd9c20, 0x3b1b9: 0x6dbd9e20, 0x3b1ba: 0x6dbda020, 0x3b1bb: 0x6dbda220,\n\t0x3b1bc: 0x6dbda420, 0x3b1bd: 0x6dbda620, 0x3b1be: 0x6dbda820, 0x3b1bf: 0x6dbdaa20,\n\t// Block 0xec7, offset 0x3b1c0\n\t0x3b1c0: 0x6dbdac20, 0x3b1c1: 0x6dbdae20, 0x3b1c2: 0x6dbdb020, 0x3b1c3: 0x6dbdb220,\n\t0x3b1c4: 0x6dbdb420, 0x3b1c5: 0x6ddb5620, 0x3b1c6: 0x6ddb5820, 0x3b1c7: 0x6ddb5a20,\n\t0x3b1c8: 0x6ddb5c20, 0x3b1c9: 0x6ddb5e20, 0x3b1ca: 0x6ddb6020, 0x3b1cb: 0x6ddb6220,\n\t0x3b1cc: 0x6ddb6420, 0x3b1cd: 0x6ddb6620, 0x3b1ce: 0x6df34e20, 0x3b1cf: 0x6ddb6820,\n\t0x3b1d0: 0x6ddb6a20, 0x3b1d1: 0x6ddb6c20, 0x3b1d2: 0x6ddb6e20, 0x3b1d3: 0x6ddb7020,\n\t0x3b1d4: 0x6ddb7220, 0x3b1d5: 0x6ddb7420, 0x3b1d6: 0x6ddb7620, 0x3b1d7: 0x6ddb7820,\n\t0x3b1d8: 0x6ddb7a20, 0x3b1d9: 0x6ddb7c20, 0x3b1da: 0x6ddb7e20, 0x3b1db: 0x6ddb8020,\n\t0x3b1dc: 0x6df35020, 0x3b1dd: 0x6df35220, 0x3b1de: 0x6df35420, 0x3b1df: 0x6df35620,\n\t0x3b1e0: 0x6df35820, 0x3b1e1: 0x6df35a20, 0x3b1e2: 0x6df35c20, 0x3b1e3: 0x6df35e20,\n\t0x3b1e4: 0x6df36020, 0x3b1e5: 0x6df36220, 0x3b1e6: 0x6df36420, 0x3b1e7: 0x6df36620,\n\t0x3b1e8: 0x6df36820, 0x3b1e9: 0x6df36a20, 0x3b1ea: 0x6df36c20, 0x3b1eb: 0x6df36e20,\n\t0x3b1ec: 0x6df37020, 0x3b1ed: 0x6e075620, 0x3b1ee: 0x6e075820, 0x3b1ef: 0x6e075a20,\n\t0x3b1f0: 0x6e075c20, 0x3b1f1: 0x6e075e20, 0x3b1f2: 0x6e076020, 0x3b1f3: 0x6e076220,\n\t0x3b1f4: 0x6e076420, 0x3b1f5: 0x6e076620, 0x3b1f6: 0x6e076820, 0x3b1f7: 0x6e076a20,\n\t0x3b1f8: 0x6e17bc20, 0x3b1f9: 0x6e17be20, 0x3b1fa: 0x6e17c020, 0x3b1fb: 0x6e17c220,\n\t0x3b1fc: 0x6e17c420, 0x3b1fd: 0x6e17c620, 0x3b1fe: 0x6e17c820, 0x3b1ff: 0x6e17ca20,\n\t// Block 0xec8, offset 0x3b200\n\t0x3b200: 0x6e17cc20, 0x3b201: 0x6e17ce20, 0x3b202: 0x6e17d020, 0x3b203: 0x6e17d220,\n\t0x3b204: 0x6e17d420, 0x3b205: 0x6e17d620, 0x3b206: 0x6e17d820, 0x3b207: 0x6e17da20,\n\t0x3b208: 0x6e249220, 0x3b209: 0x6e249420, 0x3b20a: 0x6e249620, 0x3b20b: 0x6e249820,\n\t0x3b20c: 0x6e249a20, 0x3b20d: 0x6e249c20, 0x3b20e: 0x6e2e7020, 0x3b20f: 0x6e2e7220,\n\t0x3b210: 0x6e2e7420, 0x3b211: 0x6e35f420, 0x3b212: 0x6e35f620, 0x3b213: 0x6e35f820,\n\t0x3b214: 0x6e35fa20, 0x3b215: 0x6e35fc20, 0x3b216: 0x6e3b4220, 0x3b217: 0x6e3b4420,\n\t0x3b218: 0x6e3b4620, 0x3b219: 0x6e3b4820, 0x3b21a: 0x6e3b4a20, 0x3b21b: 0x6e3f0020,\n\t0x3b21c: 0x6e3f0220, 0x3b21d: 0x6e419020, 0x3b21e: 0x6e419220, 0x3b21f: 0x6e437220,\n\t0x3b220: 0x6e46d220, 0x3b221: 0x6e46f220, 0x3b222: 0x6e470c20, 0x3b223: 0x6e473420,\n\t0x3b224: 0x6e473a20, 0x3b225: 0x6c635620, 0x3b226: 0x6c635820, 0x3b227: 0x6cb6d220,\n\t0x3b228: 0x6ce79020, 0x3b229: 0x6ce79220, 0x3b22a: 0x6ce79420, 0x3b22b: 0x6d168220,\n\t0x3b22c: 0x6d168420, 0x3b22d: 0x6d44bc20, 0x3b22e: 0x6d44be20, 0x3b22f: 0x6d9af820,\n\t0x3b230: 0x6dbdb820, 0x3b231: 0x6c635e20, 0x3b232: 0x6d168820, 0x3b233: 0x6d44c020,\n\t0x3b234: 0x6d719620, 0x3b235: 0x6ddb8820, 0x3b236: 0x6df37820, 0x3b237: 0x6df37a20,\n\t0x3b238: 0x6df37c20, 0x3b239: 0x6e076c20, 0x3b23a: 0x6e17de20, 0x3b23b: 0x6e17e020,\n\t0x3b23c: 0x6e24a220, 0x3b23d: 0x6e24a420, 0x3b23e: 0x6e45ea20, 0x3b23f: 0x6c429020,\n\t// Block 0xec9, offset 0x3b240\n\t0x3b240: 0x6c429220, 0x3b241: 0x6c429420, 0x3b242: 0x6c636620, 0x3b243: 0x6c429620,\n\t0x3b244: 0x6c8a6e20, 0x3b245: 0x6c8a7020, 0x3b246: 0x6c8a7220, 0x3b247: 0x6cb6de20,\n\t0x3b248: 0x6cb6e020, 0x3b249: 0x6cb6e220, 0x3b24a: 0x6cb6e420, 0x3b24b: 0x6cb6e620,\n\t0x3b24c: 0x6cb6e820, 0x3b24d: 0x6cb6ea20, 0x3b24e: 0x6cb6ec20, 0x3b24f: 0x6cb6ee20,\n\t0x3b250: 0x6cb6f020, 0x3b251: 0x6cb6f220, 0x3b252: 0x6cb6f420, 0x3b253: 0x6cb6f620,\n\t0x3b254: 0x6cb6f820, 0x3b255: 0x6ce7b020, 0x3b256: 0x6ce7b220, 0x3b257: 0x6ce7b420,\n\t0x3b258: 0x6ce7b620, 0x3b259: 0x6ce7b820, 0x3b25a: 0x6ce7ba20, 0x3b25b: 0x6ce7bc20,\n\t0x3b25c: 0x6ce7be20, 0x3b25d: 0x6ce7c020, 0x3b25e: 0x6ce7c220, 0x3b25f: 0x6ce7c420,\n\t0x3b260: 0x6ce7c620, 0x3b261: 0x6ce7c820, 0x3b262: 0x6ce7ca20, 0x3b263: 0x6ce7cc20,\n\t0x3b264: 0x6ce7ce20, 0x3b265: 0x6ce7d020, 0x3b266: 0x6ce7d220, 0x3b267: 0x6ce7d420,\n\t0x3b268: 0x6d16b020, 0x3b269: 0x6d16b220, 0x3b26a: 0x6d16b420, 0x3b26b: 0x6d16b620,\n\t0x3b26c: 0x6d16b820, 0x3b26d: 0x6d16ba20, 0x3b26e: 0x6d16bc20, 0x3b26f: 0x6d16be20,\n\t0x3b270: 0x6d16c020, 0x3b271: 0x6d16c220, 0x3b272: 0x6d16c420, 0x3b273: 0x6d16c620,\n\t0x3b274: 0x6d16c820, 0x3b275: 0x6d16ca20, 0x3b276: 0x6d16cc20, 0x3b277: 0x6d16ce20,\n\t0x3b278: 0x6d16d020, 0x3b279: 0x6d16d220, 0x3b27a: 0x6d16d420, 0x3b27b: 0x6d16d620,\n\t0x3b27c: 0x6d16d820, 0x3b27d: 0x6d16da20, 0x3b27e: 0x6d16dc20, 0x3b27f: 0x6d16de20,\n\t// Block 0xeca, offset 0x3b280\n\t0x3b280: 0x6d16e020, 0x3b281: 0x6d16e220, 0x3b282: 0x6d16e420, 0x3b283: 0x6d16e620,\n\t0x3b284: 0x6d16e820, 0x3b285: 0x6d16ea20, 0x3b286: 0x6d16ec20, 0x3b287: 0x6d16ee20,\n\t0x3b288: 0x6d16f020, 0x3b289: 0x6d44f020, 0x3b28a: 0x6d44f220, 0x3b28b: 0x6d44f420,\n\t0x3b28c: 0x6d44f620, 0x3b28d: 0x6d44f820, 0x3b28e: 0x6d44fa20, 0x3b28f: 0x6d44fc20,\n\t0x3b290: 0x6d44fe20, 0x3b291: 0x6d450020, 0x3b292: 0x6d450220, 0x3b293: 0x6d450420,\n\t0x3b294: 0x6d450620, 0x3b295: 0x6d450820, 0x3b296: 0x6d450a20, 0x3b297: 0x6d450c20,\n\t0x3b298: 0x6d450e20, 0x3b299: 0x6d451020, 0x3b29a: 0x6d451220, 0x3b29b: 0x6d451420,\n\t0x3b29c: 0x6d451620, 0x3b29d: 0x6d71c220, 0x3b29e: 0x6d71c420, 0x3b29f: 0x6d71c620,\n\t0x3b2a0: 0x6d71c820, 0x3b2a1: 0x6d71ca20, 0x3b2a2: 0x6d71cc20, 0x3b2a3: 0x6d71ce20,\n\t0x3b2a4: 0x6d71d020, 0x3b2a5: 0x6d71d220, 0x3b2a6: 0x6d71d420, 0x3b2a7: 0x6d71d620,\n\t0x3b2a8: 0x6d71d820, 0x3b2a9: 0x6d71da20, 0x3b2aa: 0x6d71dc20, 0x3b2ab: 0x6d71de20,\n\t0x3b2ac: 0x6d71e020, 0x3b2ad: 0x6d71e220, 0x3b2ae: 0x6d71e420, 0x3b2af: 0x6d71e620,\n\t0x3b2b0: 0x6d71e820, 0x3b2b1: 0x6d71ea20, 0x3b2b2: 0x6d71ec20, 0x3b2b3: 0x6d71ee20,\n\t0x3b2b4: 0x6d71f020, 0x3b2b5: 0x6d71f220, 0x3b2b6: 0x6d71f420, 0x3b2b7: 0x6d71f620,\n\t0x3b2b8: 0x6d71f820, 0x3b2b9: 0x6d71fa20, 0x3b2ba: 0x6d9b2820, 0x3b2bb: 0x6d9b2a20,\n\t0x3b2bc: 0x6d9b2c20, 0x3b2bd: 0x6d9b2e20, 0x3b2be: 0x6d9b3020, 0x3b2bf: 0x6d9b3220,\n\t// Block 0xecb, offset 0x3b2c0\n\t0x3b2c0: 0x6d9b3420, 0x3b2c1: 0x6d9b3620, 0x3b2c2: 0x6d9b3820, 0x3b2c3: 0x6d9b3a20,\n\t0x3b2c4: 0x6d9b3c20, 0x3b2c5: 0x6d9b3e20, 0x3b2c6: 0x6d9b4020, 0x3b2c7: 0x6d9b4220,\n\t0x3b2c8: 0x6d9b4420, 0x3b2c9: 0x6d9b4620, 0x3b2ca: 0x6d9b4820, 0x3b2cb: 0x6d9b4a20,\n\t0x3b2cc: 0x6d9b4c20, 0x3b2cd: 0x6d9b4e20, 0x3b2ce: 0x6d9b5020, 0x3b2cf: 0x6d9b5220,\n\t0x3b2d0: 0x6d9b5420, 0x3b2d1: 0x6d9b5620, 0x3b2d2: 0x6d9b5820, 0x3b2d3: 0x6d9b5a20,\n\t0x3b2d4: 0x6d9b5c20, 0x3b2d5: 0x6d9b5e20, 0x3b2d6: 0x6d9b6020, 0x3b2d7: 0x6d9b6220,\n\t0x3b2d8: 0x6d9b6420, 0x3b2d9: 0x6d9b6620, 0x3b2da: 0x6d9b6820, 0x3b2db: 0x6d9b6a20,\n\t0x3b2dc: 0x6d9b6c20, 0x3b2dd: 0x6d9b6e20, 0x3b2de: 0x6d9b7020, 0x3b2df: 0x6d9b7220,\n\t0x3b2e0: 0x6d9b7420, 0x3b2e1: 0x6d9b7620, 0x3b2e2: 0x6d9b7820, 0x3b2e3: 0x6dbde220,\n\t0x3b2e4: 0x6d9b7a20, 0x3b2e5: 0x6d9b7c20, 0x3b2e6: 0x6d9b7e20, 0x3b2e7: 0x6d9b8020,\n\t0x3b2e8: 0x6d9b8220, 0x3b2e9: 0x6d9b8420, 0x3b2ea: 0x6d9b8620, 0x3b2eb: 0x6d9b8820,\n\t0x3b2ec: 0x6d9b8a20, 0x3b2ed: 0x6dbde420, 0x3b2ee: 0x6dbde620, 0x3b2ef: 0x6dbde820,\n\t0x3b2f0: 0x6dbdea20, 0x3b2f1: 0x6dbdec20, 0x3b2f2: 0x6dbdee20, 0x3b2f3: 0x6dbdf020,\n\t0x3b2f4: 0x6dbdf220, 0x3b2f5: 0x6dbdf420, 0x3b2f6: 0x6dbdf620, 0x3b2f7: 0x6dbdf820,\n\t0x3b2f8: 0x6dbdfa20, 0x3b2f9: 0x6dbdfc20, 0x3b2fa: 0x6dbdfe20, 0x3b2fb: 0x6dbe0020,\n\t0x3b2fc: 0x6dbe0220, 0x3b2fd: 0x6dbe0420, 0x3b2fe: 0x6dbe0620, 0x3b2ff: 0x6dbe0820,\n\t// Block 0xecc, offset 0x3b300\n\t0x3b300: 0x6dbe0a20, 0x3b301: 0x6dbe0c20, 0x3b302: 0x6dbe0e20, 0x3b303: 0x6dbe1020,\n\t0x3b304: 0x6dbe1220, 0x3b305: 0x6dbe1420, 0x3b306: 0x6dbe1620, 0x3b307: 0x6dbe1820,\n\t0x3b308: 0x6dbe1a20, 0x3b309: 0x6dbe1c20, 0x3b30a: 0x6dbe1e20, 0x3b30b: 0x6dbe2020,\n\t0x3b30c: 0x6dbe2220, 0x3b30d: 0x6dbe2420, 0x3b30e: 0x6dbe2620, 0x3b30f: 0x6dbe2820,\n\t0x3b310: 0x6dbe2a20, 0x3b311: 0x6dbe2c20, 0x3b312: 0x6dbe2e20, 0x3b313: 0x6dbe3020,\n\t0x3b314: 0x6dbe3220, 0x3b315: 0x6dbe3420, 0x3b316: 0x6dbe3620, 0x3b317: 0x6dbe3820,\n\t0x3b318: 0x6dbe3a20, 0x3b319: 0x6ddbb220, 0x3b31a: 0x6ddbb420, 0x3b31b: 0x6ddbb620,\n\t0x3b31c: 0x6ddbb820, 0x3b31d: 0x6ddbba20, 0x3b31e: 0x6ddbbc20, 0x3b31f: 0x6ddbbe20,\n\t0x3b320: 0x6ddbc020, 0x3b321: 0x6ddbc220, 0x3b322: 0x6ddbc420, 0x3b323: 0x6ddbc620,\n\t0x3b324: 0x6ddbc820, 0x3b325: 0x6ddbca20, 0x3b326: 0x6ddbcc20, 0x3b327: 0x6ddbce20,\n\t0x3b328: 0x6ddbd020, 0x3b329: 0x6ddbd220, 0x3b32a: 0x6ddbd420, 0x3b32b: 0x6ddbd620,\n\t0x3b32c: 0x6ddbd820, 0x3b32d: 0x6ddbda20, 0x3b32e: 0x6ddbdc20, 0x3b32f: 0x6ddbde20,\n\t0x3b330: 0x6ddbe020, 0x3b331: 0x6ddbe220, 0x3b332: 0x6ddbe420, 0x3b333: 0x6ddbe620,\n\t0x3b334: 0x6df39620, 0x3b335: 0x6ddbe820, 0x3b336: 0x6ddbea20, 0x3b337: 0x6ddbec20,\n\t0x3b338: 0x6ddbee20, 0x3b339: 0x6ddbf020, 0x3b33a: 0x6ddbf220, 0x3b33b: 0x6ddbf420,\n\t0x3b33c: 0x6ddbf620, 0x3b33d: 0x6df39820, 0x3b33e: 0x6df39a20, 0x3b33f: 0x6df39c20,\n\t// Block 0xecd, offset 0x3b340\n\t0x3b340: 0x6df39e20, 0x3b341: 0x6df3a020, 0x3b342: 0x6df3a220, 0x3b343: 0x6df3a420,\n\t0x3b344: 0x6df3a620, 0x3b345: 0x6df3a820, 0x3b346: 0x6df3aa20, 0x3b347: 0x6df3ac20,\n\t0x3b348: 0x6df3ae20, 0x3b349: 0x6df3b020, 0x3b34a: 0x6df3b220, 0x3b34b: 0x6df3b420,\n\t0x3b34c: 0x6df3b620, 0x3b34d: 0x6df3b820, 0x3b34e: 0x6df3ba20, 0x3b34f: 0x6df3bc20,\n\t0x3b350: 0x6df3be20, 0x3b351: 0x6df3c020, 0x3b352: 0x6df3c220, 0x3b353: 0x6df3c420,\n\t0x3b354: 0x6df3c620, 0x3b355: 0x6df3c820, 0x3b356: 0x6df3ca20, 0x3b357: 0x6df3cc20,\n\t0x3b358: 0x6df3ce20, 0x3b359: 0x6df3d020, 0x3b35a: 0x6df3d220, 0x3b35b: 0x6df3d420,\n\t0x3b35c: 0x6df3d620, 0x3b35d: 0x6df3d820, 0x3b35e: 0x6df3da20, 0x3b35f: 0x6df3dc20,\n\t0x3b360: 0x6df3de20, 0x3b361: 0x6e078820, 0x3b362: 0x6e078a20, 0x3b363: 0x6e078c20,\n\t0x3b364: 0x6e078e20, 0x3b365: 0x6e079020, 0x3b366: 0x6e079220, 0x3b367: 0x6e079420,\n\t0x3b368: 0x6e079620, 0x3b369: 0x6e079820, 0x3b36a: 0x6e079a20, 0x3b36b: 0x6e079c20,\n\t0x3b36c: 0x6e079e20, 0x3b36d: 0x6e07a020, 0x3b36e: 0x6e07a220, 0x3b36f: 0x6e07a420,\n\t0x3b370: 0x6e07a620, 0x3b371: 0x6e07a820, 0x3b372: 0x6e07aa20, 0x3b373: 0x6e07ac20,\n\t0x3b374: 0x6e07ae20, 0x3b375: 0x6e07b020, 0x3b376: 0x6e17f420, 0x3b377: 0x6e07b220,\n\t0x3b378: 0x6e07b420, 0x3b379: 0x6e07b620, 0x3b37a: 0x6e07b820, 0x3b37b: 0x6e07ba20,\n\t0x3b37c: 0x6e07bc20, 0x3b37d: 0x6e07be20, 0x3b37e: 0x6e17f620, 0x3b37f: 0x6e17f820,\n\t// Block 0xece, offset 0x3b380\n\t0x3b380: 0x6e17fa20, 0x3b381: 0x6e17fc20, 0x3b382: 0x6e17fe20, 0x3b383: 0x6e180020,\n\t0x3b384: 0x6e180220, 0x3b385: 0x6e180420, 0x3b386: 0x6e180620, 0x3b387: 0x6e180820,\n\t0x3b388: 0x6e180a20, 0x3b389: 0x6e180c20, 0x3b38a: 0x6e180e20, 0x3b38b: 0x6e181020,\n\t0x3b38c: 0x6e181220, 0x3b38d: 0x6e181420, 0x3b38e: 0x6e181620, 0x3b38f: 0x6e181820,\n\t0x3b390: 0x6e181a20, 0x3b391: 0x6e181c20, 0x3b392: 0x6e181e20, 0x3b393: 0x6e24b620,\n\t0x3b394: 0x6e24b820, 0x3b395: 0x6e24ba20, 0x3b396: 0x6e24bc20, 0x3b397: 0x6e24be20,\n\t0x3b398: 0x6e24c020, 0x3b399: 0x6e24c220, 0x3b39a: 0x6e24c420, 0x3b39b: 0x6e24c620,\n\t0x3b39c: 0x6e24c820, 0x3b39d: 0x6e24ca20, 0x3b39e: 0x6e24cc20, 0x3b39f: 0x6e24ce20,\n\t0x3b3a0: 0x6e24d020, 0x3b3a1: 0x6e24d220, 0x3b3a2: 0x6e24d420, 0x3b3a3: 0x6e24d620,\n\t0x3b3a4: 0x6e2e8420, 0x3b3a5: 0x6e2e8620, 0x3b3a6: 0x6e2e8820, 0x3b3a7: 0x6e2e8a20,\n\t0x3b3a8: 0x6e2e8c20, 0x3b3a9: 0x6e2e8e20, 0x3b3aa: 0x6e2e9020, 0x3b3ab: 0x6e2e9220,\n\t0x3b3ac: 0x6e2e9420, 0x3b3ad: 0x6e360420, 0x3b3ae: 0x6e360620, 0x3b3af: 0x6e360820,\n\t0x3b3b0: 0x6e360a20, 0x3b3b1: 0x6e360c20, 0x3b3b2: 0x6e360e20, 0x3b3b3: 0x6e361020,\n\t0x3b3b4: 0x6e361220, 0x3b3b5: 0x6e361420, 0x3b3b6: 0x6e3b5020, 0x3b3b7: 0x6e3f0820,\n\t0x3b3b8: 0x6e3f0a20, 0x3b3b9: 0x6e3f0c20, 0x3b3ba: 0x6e3f0e20, 0x3b3bb: 0x6e44bc20,\n\t0x3b3bc: 0x6e457420, 0x3b3bd: 0x6e465220, 0x3b3be: 0x6c288e20, 0x3b3bf: 0x6c289020,\n\t// Block 0xecf, offset 0x3b3c0\n\t0x3b3c0: 0x6c289220, 0x3b3c1: 0x6c42a420, 0x3b3c2: 0x6c42a620, 0x3b3c3: 0x6c637820,\n\t0x3b3c4: 0x6c8a8020, 0x3b3c5: 0x6c8a8220, 0x3b3c6: 0x6cb70220, 0x3b3c7: 0x6c8a8420,\n\t0x3b3c8: 0x6cb70420, 0x3b3c9: 0x6cb70620, 0x3b3ca: 0x6ce7e020, 0x3b3cb: 0x6ce7e220,\n\t0x3b3cc: 0x6d170020, 0x3b3cd: 0x6d452420, 0x3b3ce: 0x6d452620, 0x3b3cf: 0x6d720220,\n\t0x3b3d0: 0x6c638020, 0x3b3d1: 0x6cb70e20, 0x3b3d2: 0x6cb71020, 0x3b3d3: 0x6ce7ee20,\n\t0x3b3d4: 0x6d170620, 0x3b3d5: 0x6d452820, 0x3b3d6: 0x6d452a20, 0x3b3d7: 0x6d452c20,\n\t0x3b3d8: 0x6d452e20, 0x3b3d9: 0x6d453020, 0x3b3da: 0x6d720c20, 0x3b3db: 0x6d720e20,\n\t0x3b3dc: 0x6d721020, 0x3b3dd: 0x6d721220, 0x3b3de: 0x6d721420, 0x3b3df: 0x6d721620,\n\t0x3b3e0: 0x6d721820, 0x3b3e1: 0x6d9b9020, 0x3b3e2: 0x6d9b9220, 0x3b3e3: 0x6d9b9420,\n\t0x3b3e4: 0x6d9b9620, 0x3b3e5: 0x6d9b9820, 0x3b3e6: 0x6d9b9a20, 0x3b3e7: 0x6d9b9c20,\n\t0x3b3e8: 0x6dbe4a20, 0x3b3e9: 0x6dbe4c20, 0x3b3ea: 0x6ddbfc20, 0x3b3eb: 0x6ddbfe20,\n\t0x3b3ec: 0x6ddc0020, 0x3b3ed: 0x6ddc0220, 0x3b3ee: 0x6de36c20, 0x3b3ef: 0x6df3e620,\n\t0x3b3f0: 0x6dface20, 0x3b3f1: 0x6df3e820, 0x3b3f2: 0x6e07c620, 0x3b3f3: 0x6e182220,\n\t0x3b3f4: 0x6e24dc20, 0x3b3f5: 0x6e2e9620, 0x3b3f6: 0x6e2e9820, 0x3b3f7: 0x6e361620,\n\t0x3b3f8: 0x6e3b5420, 0x3b3f9: 0x6e419c20, 0x3b3fa: 0x6c8a8c20, 0x3b3fb: 0x6d170a20,\n\t0x3b3fc: 0x6d170c20, 0x3b3fd: 0x6d170e20, 0x3b3fe: 0x6d453c20, 0x3b3ff: 0x6d453e20,\n\t// Block 0xed0, offset 0x3b400\n\t0x3b400: 0x6d454020, 0x3b401: 0x6d454220, 0x3b402: 0x6d721a20, 0x3b403: 0x6d454420,\n\t0x3b404: 0x6d454620, 0x3b405: 0x6d721c20, 0x3b406: 0x6d721e20, 0x3b407: 0x6d9ba620,\n\t0x3b408: 0x6d9ba820, 0x3b409: 0x6dbe5c20, 0x3b40a: 0x6dbe5e20, 0x3b40b: 0x6dbe6020,\n\t0x3b40c: 0x6ddc0820, 0x3b40d: 0x6ddc0a20, 0x3b40e: 0x6ddc0c20, 0x3b40f: 0x6dbe6220,\n\t0x3b410: 0x6ddc0e20, 0x3b411: 0x6ddc1020, 0x3b412: 0x6ddc1220, 0x3b413: 0x6df3f020,\n\t0x3b414: 0x6df3f220, 0x3b415: 0x6df3f420, 0x3b416: 0x6df3f620, 0x3b417: 0x6df3f820,\n\t0x3b418: 0x6df3fa20, 0x3b419: 0x6e07cc20, 0x3b41a: 0x6e07ce20, 0x3b41b: 0x6e07d020,\n\t0x3b41c: 0x6e07d220, 0x3b41d: 0x6e182620, 0x3b41e: 0x6e182820, 0x3b41f: 0x6e182a20,\n\t0x3b420: 0x6e182c20, 0x3b421: 0x6e182e20, 0x3b422: 0x6e24de20, 0x3b423: 0x6e24e020,\n\t0x3b424: 0x6e2e9c20, 0x3b425: 0x6e3f1020, 0x3b426: 0x6e437620, 0x3b427: 0x6c8a9020,\n\t0x3b428: 0x6cb71220, 0x3b429: 0x6ce7f620, 0x3b42a: 0x6ce7f820, 0x3b42b: 0x6ce7fa20,\n\t0x3b42c: 0x6ce7fc20, 0x3b42d: 0x6ce7fe20, 0x3b42e: 0x6ce80020, 0x3b42f: 0x6ce80220,\n\t0x3b430: 0x6d172220, 0x3b431: 0x6d172420, 0x3b432: 0x6d172620, 0x3b433: 0x6d172820,\n\t0x3b434: 0x6d172a20, 0x3b435: 0x6d172c20, 0x3b436: 0x6d172e20, 0x3b437: 0x6d457c20,\n\t0x3b438: 0x6d457e20, 0x3b439: 0x6d458020, 0x3b43a: 0x6d458220, 0x3b43b: 0x6d458420,\n\t0x3b43c: 0x6d458620, 0x3b43d: 0x6d458820, 0x3b43e: 0x6d458a20, 0x3b43f: 0x6d726420,\n\t// Block 0xed1, offset 0x3b440\n\t0x3b440: 0x6d458c20, 0x3b441: 0x6d458e20, 0x3b442: 0x6d459020, 0x3b443: 0x6d459220,\n\t0x3b444: 0x6d459420, 0x3b445: 0x6d459620, 0x3b446: 0x6d726620, 0x3b447: 0x6d459820,\n\t0x3b448: 0x6d459a20, 0x3b449: 0x6d459c20, 0x3b44a: 0x6d459e20, 0x3b44b: 0x6d45a020,\n\t0x3b44c: 0x6d45a220, 0x3b44d: 0x6d726820, 0x3b44e: 0x6d726a20, 0x3b44f: 0x6d726c20,\n\t0x3b450: 0x6d726e20, 0x3b451: 0x6d727020, 0x3b452: 0x6d727220, 0x3b453: 0x6d727420,\n\t0x3b454: 0x6d727620, 0x3b455: 0x6d727820, 0x3b456: 0x6d727a20, 0x3b457: 0x6d727c20,\n\t0x3b458: 0x6d727e20, 0x3b459: 0x6d728020, 0x3b45a: 0x6d728220, 0x3b45b: 0x6d728420,\n\t0x3b45c: 0x6d728620, 0x3b45d: 0x6d728820, 0x3b45e: 0x6d728a20, 0x3b45f: 0x6d728c20,\n\t0x3b460: 0x6d728e20, 0x3b461: 0x6d729020, 0x3b462: 0x6d729220, 0x3b463: 0x6d729420,\n\t0x3b464: 0x6d729620, 0x3b465: 0x6d729820, 0x3b466: 0x6d729a20, 0x3b467: 0x6d729c20,\n\t0x3b468: 0x6d729e20, 0x3b469: 0x6d72a020, 0x3b46a: 0x6d72a220, 0x3b46b: 0x6d72a420,\n\t0x3b46c: 0x6d72a620, 0x3b46d: 0x6d72a820, 0x3b46e: 0x6d9bde20, 0x3b46f: 0x6d9be020,\n\t0x3b470: 0x6d9be220, 0x3b471: 0x6d9be420, 0x3b472: 0x6d9be620, 0x3b473: 0x6d9be820,\n\t0x3b474: 0x6d9bea20, 0x3b475: 0x6d9bec20, 0x3b476: 0x6d9bee20, 0x3b477: 0x6d9bf020,\n\t0x3b478: 0x6d9bf220, 0x3b479: 0x6d9bf420, 0x3b47a: 0x6d9bf620, 0x3b47b: 0x6d9bf820,\n\t0x3b47c: 0x6d9bfa20, 0x3b47d: 0x6d9bfc20, 0x3b47e: 0x6d9bfe20, 0x3b47f: 0x6d9c0020,\n\t// Block 0xed2, offset 0x3b480\n\t0x3b480: 0x6d9c0220, 0x3b481: 0x6d9c0420, 0x3b482: 0x6d9c0620, 0x3b483: 0x6d9c0820,\n\t0x3b484: 0x6d9c0a20, 0x3b485: 0x6d9c0c20, 0x3b486: 0x6d9c0e20, 0x3b487: 0x6d9c1020,\n\t0x3b488: 0x6d9c1220, 0x3b489: 0x6d9c1420, 0x3b48a: 0x6d9c1620, 0x3b48b: 0x6d9c1820,\n\t0x3b48c: 0x6d9c1a20, 0x3b48d: 0x6d9c1c20, 0x3b48e: 0x6d9c1e20, 0x3b48f: 0x6d9c2020,\n\t0x3b490: 0x6d9c2220, 0x3b491: 0x6d9c2420, 0x3b492: 0x6d9c2620, 0x3b493: 0x6d9c2820,\n\t0x3b494: 0x6d9c2a20, 0x3b495: 0x6d9c2c20, 0x3b496: 0x6dbe9020, 0x3b497: 0x6dbe9220,\n\t0x3b498: 0x6dbe9420, 0x3b499: 0x6dbe9620, 0x3b49a: 0x6dbe9820, 0x3b49b: 0x6dbe9a20,\n\t0x3b49c: 0x6dbe9c20, 0x3b49d: 0x6dbe9e20, 0x3b49e: 0x6dbea020, 0x3b49f: 0x6dbea220,\n\t0x3b4a0: 0x6dbea420, 0x3b4a1: 0x6dbea620, 0x3b4a2: 0x6dbea820, 0x3b4a3: 0x6dbeaa20,\n\t0x3b4a4: 0x6dbeac20, 0x3b4a5: 0x6dbeae20, 0x3b4a6: 0x6dbeb020, 0x3b4a7: 0x6dbeb220,\n\t0x3b4a8: 0x6dbeb420, 0x3b4a9: 0x6dbeb620, 0x3b4aa: 0x6dbeb820, 0x3b4ab: 0x6dbeba20,\n\t0x3b4ac: 0x6dbebc20, 0x3b4ad: 0x6ddc4820, 0x3b4ae: 0x6ddc4a20, 0x3b4af: 0x6ddc4c20,\n\t0x3b4b0: 0x6ddc4e20, 0x3b4b1: 0x6ddc5020, 0x3b4b2: 0x6ddc5220, 0x3b4b3: 0x6ddc5420,\n\t0x3b4b4: 0x6ddc5620, 0x3b4b5: 0x6ddc5820, 0x3b4b6: 0x6ddc5a20, 0x3b4b7: 0x6ddc5c20,\n\t0x3b4b8: 0x6ddc5e20, 0x3b4b9: 0x6ddc6020, 0x3b4ba: 0x6ddc6220, 0x3b4bb: 0x6ddc6420,\n\t0x3b4bc: 0x6ddc6620, 0x3b4bd: 0x6ddc6820, 0x3b4be: 0x6ddc6a20, 0x3b4bf: 0x6ddc6c20,\n\t// Block 0xed3, offset 0x3b4c0\n\t0x3b4c0: 0x6ddc6e20, 0x3b4c1: 0x6ddc7020, 0x3b4c2: 0x6ddc7220, 0x3b4c3: 0x6ddc7420,\n\t0x3b4c4: 0x6ddc7620, 0x3b4c5: 0x6ddc7820, 0x3b4c6: 0x6ddc7a20, 0x3b4c7: 0x6ddc7c20,\n\t0x3b4c8: 0x6ddc7e20, 0x3b4c9: 0x6ddc8020, 0x3b4ca: 0x6ddc8220, 0x3b4cb: 0x6ddc8420,\n\t0x3b4cc: 0x6ddc8620, 0x3b4cd: 0x6ddc8820, 0x3b4ce: 0x6ddc8a20, 0x3b4cf: 0x6ddc8c20,\n\t0x3b4d0: 0x6ddc8e20, 0x3b4d1: 0x6ddc9020, 0x3b4d2: 0x6ddc9220, 0x3b4d3: 0x6ddc9420,\n\t0x3b4d4: 0x6ddc9620, 0x3b4d5: 0x6ddc9820, 0x3b4d6: 0x6ddc9a20, 0x3b4d7: 0x6df43420,\n\t0x3b4d8: 0x6df43620, 0x3b4d9: 0x6df43820, 0x3b4da: 0x6df43a20, 0x3b4db: 0x6df43c20,\n\t0x3b4dc: 0x6df43e20, 0x3b4dd: 0x6df44020, 0x3b4de: 0x6ddc9c20, 0x3b4df: 0x6df44220,\n\t0x3b4e0: 0x6df44420, 0x3b4e1: 0x6df44620, 0x3b4e2: 0x6df44820, 0x3b4e3: 0x6df44a20,\n\t0x3b4e4: 0x6df44c20, 0x3b4e5: 0x6df44e20, 0x3b4e6: 0x6df45020, 0x3b4e7: 0x6df45220,\n\t0x3b4e8: 0x6df45420, 0x3b4e9: 0x6df45620, 0x3b4ea: 0x6df45820, 0x3b4eb: 0x6df45a20,\n\t0x3b4ec: 0x6df45c20, 0x3b4ed: 0x6df45e20, 0x3b4ee: 0x6df46020, 0x3b4ef: 0x6df46220,\n\t0x3b4f0: 0x6df46420, 0x3b4f1: 0x6df46620, 0x3b4f2: 0x6df46820, 0x3b4f3: 0x6df46a20,\n\t0x3b4f4: 0x6df46c20, 0x3b4f5: 0x6df46e20, 0x3b4f6: 0x6df47020, 0x3b4f7: 0x6dbebe20,\n\t0x3b4f8: 0x6df47220, 0x3b4f9: 0x6df47420, 0x3b4fa: 0x6df47620, 0x3b4fb: 0x6df47820,\n\t0x3b4fc: 0x6df47a20, 0x3b4fd: 0x6e080620, 0x3b4fe: 0x6e080820, 0x3b4ff: 0x6e080a20,\n\t// Block 0xed4, offset 0x3b500\n\t0x3b500: 0x6e080c20, 0x3b501: 0x6e080e20, 0x3b502: 0x6e081020, 0x3b503: 0x6e081220,\n\t0x3b504: 0x6e081420, 0x3b505: 0x6e081620, 0x3b506: 0x6e081820, 0x3b507: 0x6e081a20,\n\t0x3b508: 0x6e081c20, 0x3b509: 0x6e081e20, 0x3b50a: 0x6e082020, 0x3b50b: 0x6e082220,\n\t0x3b50c: 0x6e082420, 0x3b50d: 0x6e082620, 0x3b50e: 0x6e082820, 0x3b50f: 0x6e082a20,\n\t0x3b510: 0x6e082c20, 0x3b511: 0x6e082e20, 0x3b512: 0x6e083020, 0x3b513: 0x6e083220,\n\t0x3b514: 0x6e083420, 0x3b515: 0x6e083620, 0x3b516: 0x6e083820, 0x3b517: 0x6e083a20,\n\t0x3b518: 0x6e083c20, 0x3b519: 0x6e083e20, 0x3b51a: 0x6e084020, 0x3b51b: 0x6e084220,\n\t0x3b51c: 0x6e084420, 0x3b51d: 0x6e084620, 0x3b51e: 0x6e084820, 0x3b51f: 0x6e084a20,\n\t0x3b520: 0x6e084c20, 0x3b521: 0x6e084e20, 0x3b522: 0x6e085020, 0x3b523: 0x6e085220,\n\t0x3b524: 0x6e085420, 0x3b525: 0x6e085620, 0x3b526: 0x6e085820, 0x3b527: 0x6e085a20,\n\t0x3b528: 0x6e085c20, 0x3b529: 0x6e085e20, 0x3b52a: 0x6e086020, 0x3b52b: 0x6e186220,\n\t0x3b52c: 0x6e186420, 0x3b52d: 0x6e186620, 0x3b52e: 0x6e186820, 0x3b52f: 0x6e186a20,\n\t0x3b530: 0x6e186c20, 0x3b531: 0x6e186e20, 0x3b532: 0x6e187020, 0x3b533: 0x6e187220,\n\t0x3b534: 0x6e187420, 0x3b535: 0x6e187620, 0x3b536: 0x6e187820, 0x3b537: 0x6e187a20,\n\t0x3b538: 0x6e187c20, 0x3b539: 0x6e187e20, 0x3b53a: 0x6e188020, 0x3b53b: 0x6e188220,\n\t0x3b53c: 0x6e188420, 0x3b53d: 0x6e188620, 0x3b53e: 0x6e188820, 0x3b53f: 0x6e188a20,\n\t// Block 0xed5, offset 0x3b540\n\t0x3b540: 0x6e188c20, 0x3b541: 0x6e188e20, 0x3b542: 0x6e250a20, 0x3b543: 0x6e250c20,\n\t0x3b544: 0x6e250e20, 0x3b545: 0x6e251020, 0x3b546: 0x6e251220, 0x3b547: 0x6e251420,\n\t0x3b548: 0x6e251620, 0x3b549: 0x6e251820, 0x3b54a: 0x6e251a20, 0x3b54b: 0x6e251c20,\n\t0x3b54c: 0x6e251e20, 0x3b54d: 0x6e252020, 0x3b54e: 0x6e252220, 0x3b54f: 0x6e252420,\n\t0x3b550: 0x6e252620, 0x3b551: 0x6e252820, 0x3b552: 0x6e252a20, 0x3b553: 0x6e252c20,\n\t0x3b554: 0x6e252e20, 0x3b555: 0x6e253020, 0x3b556: 0x6e253220, 0x3b557: 0x6e253420,\n\t0x3b558: 0x6e253620, 0x3b559: 0x6e253820, 0x3b55a: 0x6e253a20, 0x3b55b: 0x6e253c20,\n\t0x3b55c: 0x6e253e20, 0x3b55d: 0x6e254020, 0x3b55e: 0x6e2eb220, 0x3b55f: 0x6e2eb420,\n\t0x3b560: 0x6e2eb620, 0x3b561: 0x6e2eb820, 0x3b562: 0x6e2eba20, 0x3b563: 0x6e2ebc20,\n\t0x3b564: 0x6e2ebe20, 0x3b565: 0x6e2ec020, 0x3b566: 0x6e2ec220, 0x3b567: 0x6e2ec420,\n\t0x3b568: 0x6e2ec620, 0x3b569: 0x6e2ec820, 0x3b56a: 0x6e2eca20, 0x3b56b: 0x6e2ecc20,\n\t0x3b56c: 0x6e2ece20, 0x3b56d: 0x6e2ed020, 0x3b56e: 0x6e2ed220, 0x3b56f: 0x6e2ed420,\n\t0x3b570: 0x6e2ed620, 0x3b571: 0x6e2ed820, 0x3b572: 0x6e2eda20, 0x3b573: 0x6e2edc20,\n\t0x3b574: 0x6e2ede20, 0x3b575: 0x6e2ee020, 0x3b576: 0x6e362820, 0x3b577: 0x6e362a20,\n\t0x3b578: 0x6e362c20, 0x3b579: 0x6e362e20, 0x3b57a: 0x6e363020, 0x3b57b: 0x6e363220,\n\t0x3b57c: 0x6e363420, 0x3b57d: 0x6e363620, 0x3b57e: 0x6e363820, 0x3b57f: 0x6e363a20,\n\t// Block 0xed6, offset 0x3b580\n\t0x3b580: 0x6e363c20, 0x3b581: 0x6e363e20, 0x3b582: 0x6e3b5820, 0x3b583: 0x6e3b5a20,\n\t0x3b584: 0x6e3b5c20, 0x3b585: 0x6e3b5e20, 0x3b586: 0x6e3b6020, 0x3b587: 0x6e3b6220,\n\t0x3b588: 0x6e3b6420, 0x3b589: 0x6e3b6620, 0x3b58a: 0x6e3b6820, 0x3b58b: 0x6e3b6a20,\n\t0x3b58c: 0x6e3b6c20, 0x3b58d: 0x6e3b6e20, 0x3b58e: 0x6e3b7020, 0x3b58f: 0x6e3f1c20,\n\t0x3b590: 0x6e3f1e20, 0x3b591: 0x6e3f2020, 0x3b592: 0x6e3f2220, 0x3b593: 0x6e3f2420,\n\t0x3b594: 0x6e41ac20, 0x3b595: 0x6e41ae20, 0x3b596: 0x6e41b020, 0x3b597: 0x6e41b220,\n\t0x3b598: 0x6e437e20, 0x3b599: 0x6e438020, 0x3b59a: 0x6e438220, 0x3b59b: 0x6e438420,\n\t0x3b59c: 0x6e438620, 0x3b59d: 0x6e438820, 0x3b59e: 0x6e438a20, 0x3b59f: 0x6e44c420,\n\t0x3b5a0: 0x6e44c620, 0x3b5a1: 0x6e457820, 0x3b5a2: 0x6e457a20, 0x3b5a3: 0x6e45ec20,\n\t0x3b5a4: 0x6e45ee20, 0x3b5a5: 0x6e46f420, 0x3b5a6: 0x6c28a020, 0x3b5a7: 0x6c42c620,\n\t0x3b5a8: 0x6c42c820, 0x3b5a9: 0x6c42ca20, 0x3b5aa: 0x6c42cc20, 0x3b5ab: 0x6c42ce20,\n\t0x3b5ac: 0x6c42d020, 0x3b5ad: 0x6c42d220, 0x3b5ae: 0x6c639620, 0x3b5af: 0x6c42d420,\n\t0x3b5b0: 0x6c639820, 0x3b5b1: 0x6c639a20, 0x3b5b2: 0x6c639c20, 0x3b5b3: 0x6c639e20,\n\t0x3b5b4: 0x6c63a020, 0x3b5b5: 0x6c63a220, 0x3b5b6: 0x6c63a420, 0x3b5b7: 0x6c8aa020,\n\t0x3b5b8: 0x6c8aa220, 0x3b5b9: 0x6c8aa420, 0x3b5ba: 0x6c8aa620, 0x3b5bb: 0x6cb72220,\n\t0x3b5bc: 0x6cb72420, 0x3b5bd: 0x6cb72620, 0x3b5be: 0x6ce80e20, 0x3b5bf: 0x6ce81020,\n\t// Block 0xed7, offset 0x3b5c0\n\t0x3b5c0: 0x6ce81220, 0x3b5c1: 0x6ce81420, 0x3b5c2: 0x6ce81620, 0x3b5c3: 0x6ce81820,\n\t0x3b5c4: 0x6d173a20, 0x3b5c5: 0x6ce81a20, 0x3b5c6: 0x6ce81c20, 0x3b5c7: 0x6ce81e20,\n\t0x3b5c8: 0x6ce82020, 0x3b5c9: 0x6ce82220, 0x3b5ca: 0x6ce82420, 0x3b5cb: 0x6d173c20,\n\t0x3b5cc: 0x6d173e20, 0x3b5cd: 0x6d174020, 0x3b5ce: 0x6d72ac20, 0x3b5cf: 0x6d72ae20,\n\t0x3b5d0: 0x6ddca620, 0x3b5d1: 0x6cb73020, 0x3b5d2: 0x6cb73220, 0x3b5d3: 0x6cb73420,\n\t0x3b5d4: 0x6ce82e20, 0x3b5d5: 0x6ce83020, 0x3b5d6: 0x6ce83220, 0x3b5d7: 0x6ce83420,\n\t0x3b5d8: 0x6ce83620, 0x3b5d9: 0x6ce83820, 0x3b5da: 0x6ce83a20, 0x3b5db: 0x6ce83c20,\n\t0x3b5dc: 0x6d175220, 0x3b5dd: 0x6d175420, 0x3b5de: 0x6d175620, 0x3b5df: 0x6d175820,\n\t0x3b5e0: 0x6d175a20, 0x3b5e1: 0x6d175c20, 0x3b5e2: 0x6d175e20, 0x3b5e3: 0x6d176020,\n\t0x3b5e4: 0x6d176220, 0x3b5e5: 0x6d176420, 0x3b5e6: 0x6d176620, 0x3b5e7: 0x6d176820,\n\t0x3b5e8: 0x6d176a20, 0x3b5e9: 0x6d176c20, 0x3b5ea: 0x6d176e20, 0x3b5eb: 0x6d177020,\n\t0x3b5ec: 0x6d45c220, 0x3b5ed: 0x6d45c420, 0x3b5ee: 0x6d45c620, 0x3b5ef: 0x6d45c820,\n\t0x3b5f0: 0x6d45ca20, 0x3b5f1: 0x6d45cc20, 0x3b5f2: 0x6d45ce20, 0x3b5f3: 0x6d45d020,\n\t0x3b5f4: 0x6d45d220, 0x3b5f5: 0x6d45d420, 0x3b5f6: 0x6d45d620, 0x3b5f7: 0x6d45d820,\n\t0x3b5f8: 0x6d45da20, 0x3b5f9: 0x6d45dc20, 0x3b5fa: 0x6d45de20, 0x3b5fb: 0x6d45e020,\n\t0x3b5fc: 0x6d45e220, 0x3b5fd: 0x6d72c820, 0x3b5fe: 0x6d72ca20, 0x3b5ff: 0x6d72cc20,\n\t// Block 0xed8, offset 0x3b600\n\t0x3b600: 0x6d72ce20, 0x3b601: 0x6d72d020, 0x3b602: 0x6d72d220, 0x3b603: 0x6d72d420,\n\t0x3b604: 0x6d72d620, 0x3b605: 0x6d72d820, 0x3b606: 0x6d72da20, 0x3b607: 0x6d72dc20,\n\t0x3b608: 0x6d72de20, 0x3b609: 0x6d9c4c20, 0x3b60a: 0x6d9c4e20, 0x3b60b: 0x6d9c5020,\n\t0x3b60c: 0x6d9c5220, 0x3b60d: 0x6d9c5420, 0x3b60e: 0x6d9c5620, 0x3b60f: 0x6d9c5820,\n\t0x3b610: 0x6d9c5a20, 0x3b611: 0x6d9c5c20, 0x3b612: 0x6d9c5e20, 0x3b613: 0x6d9c6020,\n\t0x3b614: 0x6d9c6220, 0x3b615: 0x6d9c6420, 0x3b616: 0x6d9c6620, 0x3b617: 0x6dbed620,\n\t0x3b618: 0x6dbed820, 0x3b619: 0x6dbeda20, 0x3b61a: 0x6dbedc20, 0x3b61b: 0x6dbede20,\n\t0x3b61c: 0x6dbee020, 0x3b61d: 0x6dbee220, 0x3b61e: 0x6dbee420, 0x3b61f: 0x6dbee620,\n\t0x3b620: 0x6dbee820, 0x3b621: 0x6dbeea20, 0x3b622: 0x6dbeec20, 0x3b623: 0x6dbeee20,\n\t0x3b624: 0x6dbef020, 0x3b625: 0x6dbef220, 0x3b626: 0x6dbef420, 0x3b627: 0x6dbef620,\n\t0x3b628: 0x6dbef820, 0x3b629: 0x6dbefa20, 0x3b62a: 0x6dbefc20, 0x3b62b: 0x6dbefe20,\n\t0x3b62c: 0x6dbf0020, 0x3b62d: 0x6ddcb020, 0x3b62e: 0x6ddcb220, 0x3b62f: 0x6ddcb420,\n\t0x3b630: 0x6ddcb620, 0x3b631: 0x6ddcb820, 0x3b632: 0x6ddcba20, 0x3b633: 0x6ddcbc20,\n\t0x3b634: 0x6ddcbe20, 0x3b635: 0x6ddcc020, 0x3b636: 0x6ddcc220, 0x3b637: 0x6ddcc420,\n\t0x3b638: 0x6ddcc620, 0x3b639: 0x6ddcc820, 0x3b63a: 0x6ddcca20, 0x3b63b: 0x6ddccc20,\n\t0x3b63c: 0x6ddcce20, 0x3b63d: 0x6ddcd020, 0x3b63e: 0x6ddcd220, 0x3b63f: 0x6ddcd420,\n\t// Block 0xed9, offset 0x3b640\n\t0x3b640: 0x6df49220, 0x3b641: 0x6df49420, 0x3b642: 0x6df49620, 0x3b643: 0x6df49820,\n\t0x3b644: 0x6df49a20, 0x3b645: 0x6df49c20, 0x3b646: 0x6df49e20, 0x3b647: 0x6df4a020,\n\t0x3b648: 0x6df4a220, 0x3b649: 0x6e088420, 0x3b64a: 0x6e088620, 0x3b64b: 0x6e088820,\n\t0x3b64c: 0x6e088a20, 0x3b64d: 0x6e088c20, 0x3b64e: 0x6e088e20, 0x3b64f: 0x6e089020,\n\t0x3b650: 0x6e089220, 0x3b651: 0x6e089420, 0x3b652: 0x6e089620, 0x3b653: 0x6e089820,\n\t0x3b654: 0x6e089a20, 0x3b655: 0x6e089c20, 0x3b656: 0x6e089e20, 0x3b657: 0x6e189a20,\n\t0x3b658: 0x6e189c20, 0x3b659: 0x6e189e20, 0x3b65a: 0x6e18a020, 0x3b65b: 0x6e18a220,\n\t0x3b65c: 0x6e18a420, 0x3b65d: 0x6e18a620, 0x3b65e: 0x6e18a820, 0x3b65f: 0x6e18aa20,\n\t0x3b660: 0x6e254a20, 0x3b661: 0x6e254c20, 0x3b662: 0x6e254e20, 0x3b663: 0x6e255020,\n\t0x3b664: 0x6e255220, 0x3b665: 0x6e255420, 0x3b666: 0x6e255620, 0x3b667: 0x6e255820,\n\t0x3b668: 0x6e255a20, 0x3b669: 0x6e255c20, 0x3b66a: 0x6e255e20, 0x3b66b: 0x6e256020,\n\t0x3b66c: 0x6e2eec20, 0x3b66d: 0x6e2eee20, 0x3b66e: 0x6e2ef020, 0x3b66f: 0x6e2ef220,\n\t0x3b670: 0x6e2ef420, 0x3b671: 0x6e2ef620, 0x3b672: 0x6e364620, 0x3b673: 0x6e364820,\n\t0x3b674: 0x6e364a20, 0x3b675: 0x6e364c20, 0x3b676: 0x6e364e20, 0x3b677: 0x6e3b7620,\n\t0x3b678: 0x6e3b7820, 0x3b679: 0x6e3b7a20, 0x3b67a: 0x6e3b7c20, 0x3b67b: 0x6e3f2a20,\n\t0x3b67c: 0x6e41b620, 0x3b67d: 0x6e41b820, 0x3b67e: 0x6e438c20, 0x3b67f: 0x6d177420,\n\t// Block 0xeda, offset 0x3b680\n\t0x3b680: 0x6d177620, 0x3b681: 0x6d45e820, 0x3b682: 0x6d45ea20, 0x3b683: 0x6d45ec20,\n\t0x3b684: 0x6d45ee20, 0x3b685: 0x6d45f020, 0x3b686: 0x6d45f220, 0x3b687: 0x6d45f420,\n\t0x3b688: 0x6d45f620, 0x3b689: 0x6d45f820, 0x3b68a: 0x6d72e420, 0x3b68b: 0x6d72e620,\n\t0x3b68c: 0x6d72e820, 0x3b68d: 0x6d72ea20, 0x3b68e: 0x6d9c6a20, 0x3b68f: 0x6d9c6c20,\n\t0x3b690: 0x6d9c6e20, 0x3b691: 0x6d9c7020, 0x3b692: 0x6d9c7220, 0x3b693: 0x6d9c7420,\n\t0x3b694: 0x6d9c7620, 0x3b695: 0x6dbf0220, 0x3b696: 0x6dbf0420, 0x3b697: 0x6dbf0620,\n\t0x3b698: 0x6dbf0820, 0x3b699: 0x6dbf0a20, 0x3b69a: 0x6ddcdc20, 0x3b69b: 0x6ddcde20,\n\t0x3b69c: 0x6ddce020, 0x3b69d: 0x6ddce220, 0x3b69e: 0x6df4a620, 0x3b69f: 0x6df4a820,\n\t0x3b6a0: 0x6e08a020, 0x3b6a1: 0x6e08a220, 0x3b6a2: 0x6e08a420, 0x3b6a3: 0x6e08a620,\n\t0x3b6a4: 0x6e08a820, 0x3b6a5: 0x6e18ac20, 0x3b6a6: 0x6e18ae20, 0x3b6a7: 0x6e256620,\n\t0x3b6a8: 0x6e2efa20, 0x3b6a9: 0x6e2efc20, 0x3b6aa: 0x6e2efe20, 0x3b6ab: 0x6e365020,\n\t0x3b6ac: 0x6e365220, 0x3b6ad: 0x6e3b8020, 0x3b6ae: 0x6e3f2c20, 0x3b6af: 0x6e3f2e20,\n\t0x3b6b0: 0x6e41ba20, 0x3b6b1: 0x6e41bc20, 0x3b6b2: 0x6e438e20, 0x3b6b3: 0x6e45f020,\n\t0x3b6b4: 0x6ce84820, 0x3b6b5: 0x6ce84a20, 0x3b6b6: 0x6ce84c20, 0x3b6b7: 0x6ce84e20,\n\t0x3b6b8: 0x6ce85020, 0x3b6b9: 0x6d177c20, 0x3b6ba: 0x6d177e20, 0x3b6bb: 0x6d178020,\n\t0x3b6bc: 0x6d178220, 0x3b6bd: 0x6d178420, 0x3b6be: 0x6d178620, 0x3b6bf: 0x6d461620,\n\t// Block 0xedb, offset 0x3b6c0\n\t0x3b6c0: 0x6d461820, 0x3b6c1: 0x6d461a20, 0x3b6c2: 0x6d461c20, 0x3b6c3: 0x6d461e20,\n\t0x3b6c4: 0x6d462020, 0x3b6c5: 0x6d462220, 0x3b6c6: 0x6d462420, 0x3b6c7: 0x6d462620,\n\t0x3b6c8: 0x6d462820, 0x3b6c9: 0x6d462a20, 0x3b6ca: 0x6d462c20, 0x3b6cb: 0x6d462e20,\n\t0x3b6cc: 0x6d463020, 0x3b6cd: 0x6d463220, 0x3b6ce: 0x6d463420, 0x3b6cf: 0x6d463620,\n\t0x3b6d0: 0x6d463820, 0x3b6d1: 0x6d730420, 0x3b6d2: 0x6d730620, 0x3b6d3: 0x6d730820,\n\t0x3b6d4: 0x6d730a20, 0x3b6d5: 0x6d730c20, 0x3b6d6: 0x6d730e20, 0x3b6d7: 0x6d731020,\n\t0x3b6d8: 0x6d731220, 0x3b6d9: 0x6d731420, 0x3b6da: 0x6d731620, 0x3b6db: 0x6d731820,\n\t0x3b6dc: 0x6d731a20, 0x3b6dd: 0x6d731c20, 0x3b6de: 0x6d731e20, 0x3b6df: 0x6d732020,\n\t0x3b6e0: 0x6d732220, 0x3b6e1: 0x6d732420, 0x3b6e2: 0x6d732620, 0x3b6e3: 0x6d732820,\n\t0x3b6e4: 0x6d732a20, 0x3b6e5: 0x6d732c20, 0x3b6e6: 0x6d732e20, 0x3b6e7: 0x6d733020,\n\t0x3b6e8: 0x6d733220, 0x3b6e9: 0x6d733420, 0x3b6ea: 0x6d733620, 0x3b6eb: 0x6d733820,\n\t0x3b6ec: 0x6d733a20, 0x3b6ed: 0x6d733c20, 0x3b6ee: 0x6d733e20, 0x3b6ef: 0x6d734020,\n\t0x3b6f0: 0x6d9c9020, 0x3b6f1: 0x6d9c9220, 0x3b6f2: 0x6d9c9420, 0x3b6f3: 0x6d9c9620,\n\t0x3b6f4: 0x6d9c9820, 0x3b6f5: 0x6d9c9a20, 0x3b6f6: 0x6d9c9c20, 0x3b6f7: 0x6d9c9e20,\n\t0x3b6f8: 0x6d9ca020, 0x3b6f9: 0x6d9ca220, 0x3b6fa: 0x6d9ca420, 0x3b6fb: 0x6d9ca620,\n\t0x3b6fc: 0x6d9ca820, 0x3b6fd: 0x6d9caa20, 0x3b6fe: 0x6d9cac20, 0x3b6ff: 0x6d9cae20,\n\t// Block 0xedc, offset 0x3b700\n\t0x3b700: 0x6d9cb020, 0x3b701: 0x6d9cb220, 0x3b702: 0x6d9cb420, 0x3b703: 0x6d9cb620,\n\t0x3b704: 0x6d9cb820, 0x3b705: 0x6d9cba20, 0x3b706: 0x6d9cbc20, 0x3b707: 0x6dbf2220,\n\t0x3b708: 0x6dbf2420, 0x3b709: 0x6dbf2620, 0x3b70a: 0x6dbf2820, 0x3b70b: 0x6dbf2a20,\n\t0x3b70c: 0x6dbf2c20, 0x3b70d: 0x6dbf2e20, 0x3b70e: 0x6dbf3020, 0x3b70f: 0x6dbf3220,\n\t0x3b710: 0x6dbf3420, 0x3b711: 0x6dbf3620, 0x3b712: 0x6dbf3820, 0x3b713: 0x6dbf3a20,\n\t0x3b714: 0x6dbf3c20, 0x3b715: 0x6dbf3e20, 0x3b716: 0x6dbf4020, 0x3b717: 0x6dbf4220,\n\t0x3b718: 0x6dbf4420, 0x3b719: 0x6dbf4620, 0x3b71a: 0x6dbf4820, 0x3b71b: 0x6dbf4a20,\n\t0x3b71c: 0x6dbf4c20, 0x3b71d: 0x6dbf4e20, 0x3b71e: 0x6ddcfc20, 0x3b71f: 0x6ddcfe20,\n\t0x3b720: 0x6ddd0020, 0x3b721: 0x6ddd0220, 0x3b722: 0x6ddd0420, 0x3b723: 0x6ddd0620,\n\t0x3b724: 0x6ddd0820, 0x3b725: 0x6ddd0a20, 0x3b726: 0x6ddd0c20, 0x3b727: 0x6ddd0e20,\n\t0x3b728: 0x6ddd1020, 0x3b729: 0x6ddd1220, 0x3b72a: 0x6ddd1420, 0x3b72b: 0x6ddd1620,\n\t0x3b72c: 0x6ddd1820, 0x3b72d: 0x6ddd1a20, 0x3b72e: 0x6ddd1c20, 0x3b72f: 0x6ddd1e20,\n\t0x3b730: 0x6ddd2020, 0x3b731: 0x6ddd2220, 0x3b732: 0x6ddd2420, 0x3b733: 0x6ddd2620,\n\t0x3b734: 0x6ddd2820, 0x3b735: 0x6ddd2a20, 0x3b736: 0x6ddd2c20, 0x3b737: 0x6ddd2e20,\n\t0x3b738: 0x6ddd3020, 0x3b739: 0x6ddd3220, 0x3b73a: 0x6df4c020, 0x3b73b: 0x6df4c220,\n\t0x3b73c: 0x6df4c420, 0x3b73d: 0x6df4c620, 0x3b73e: 0x6df4c820, 0x3b73f: 0x6df4ca20,\n\t// Block 0xedd, offset 0x3b740\n\t0x3b740: 0x6df4cc20, 0x3b741: 0x6df4ce20, 0x3b742: 0x6df4d020, 0x3b743: 0x6df4d220,\n\t0x3b744: 0x6df4d420, 0x3b745: 0x6df4d620, 0x3b746: 0x6df4d820, 0x3b747: 0x6df4da20,\n\t0x3b748: 0x6df4dc20, 0x3b749: 0x6df4de20, 0x3b74a: 0x6df4e020, 0x3b74b: 0x6df4e220,\n\t0x3b74c: 0x6df4e420, 0x3b74d: 0x6df4e620, 0x3b74e: 0x6df4e820, 0x3b74f: 0x6df4ea20,\n\t0x3b750: 0x6df4ec20, 0x3b751: 0x6df4ee20, 0x3b752: 0x6df4f020, 0x3b753: 0x6df4f220,\n\t0x3b754: 0x6df4f420, 0x3b755: 0x6df4f620, 0x3b756: 0x6e08ba20, 0x3b757: 0x6e08bc20,\n\t0x3b758: 0x6e08be20, 0x3b759: 0x6e08c020, 0x3b75a: 0x6e08c220, 0x3b75b: 0x6e08c420,\n\t0x3b75c: 0x6e08c620, 0x3b75d: 0x6e08c820, 0x3b75e: 0x6e08ca20, 0x3b75f: 0x6e08cc20,\n\t0x3b760: 0x6e08ce20, 0x3b761: 0x6e08d020, 0x3b762: 0x6e08d220, 0x3b763: 0x6e08d420,\n\t0x3b764: 0x6e08d620, 0x3b765: 0x6e08d820, 0x3b766: 0x6e08da20, 0x3b767: 0x6e08dc20,\n\t0x3b768: 0x6e08de20, 0x3b769: 0x6e08e020, 0x3b76a: 0x6e08e220, 0x3b76b: 0x6e08e420,\n\t0x3b76c: 0x6e08e620, 0x3b76d: 0x6e08e820, 0x3b76e: 0x6e08ea20, 0x3b76f: 0x6e18be20,\n\t0x3b770: 0x6e18c020, 0x3b771: 0x6e18c220, 0x3b772: 0x6e18c420, 0x3b773: 0x6e18c620,\n\t0x3b774: 0x6e18c820, 0x3b775: 0x6e18ca20, 0x3b776: 0x6e18cc20, 0x3b777: 0x6e18ce20,\n\t0x3b778: 0x6e18d020, 0x3b779: 0x6e18d220, 0x3b77a: 0x6e18d420, 0x3b77b: 0x6e18d620,\n\t0x3b77c: 0x6e18d820, 0x3b77d: 0x6e18da20, 0x3b77e: 0x6e18dc20, 0x3b77f: 0x6e18de20,\n\t// Block 0xede, offset 0x3b780\n\t0x3b780: 0x6e18e020, 0x3b781: 0x6e18e220, 0x3b782: 0x6e18e420, 0x3b783: 0x6e257420,\n\t0x3b784: 0x6e257620, 0x3b785: 0x6e257820, 0x3b786: 0x6e257a20, 0x3b787: 0x6e257c20,\n\t0x3b788: 0x6e257e20, 0x3b789: 0x6e258020, 0x3b78a: 0x6e258220, 0x3b78b: 0x6e258420,\n\t0x3b78c: 0x6e258620, 0x3b78d: 0x6e258820, 0x3b78e: 0x6e258a20, 0x3b78f: 0x6e258c20,\n\t0x3b790: 0x6e258e20, 0x3b791: 0x6e259020, 0x3b792: 0x6e259220, 0x3b793: 0x6e259420,\n\t0x3b794: 0x6e259620, 0x3b795: 0x6e259820, 0x3b796: 0x6e259a20, 0x3b797: 0x6e259c20,\n\t0x3b798: 0x6e259e20, 0x3b799: 0x6e25a020, 0x3b79a: 0x6e25a220, 0x3b79b: 0x6e2f0620,\n\t0x3b79c: 0x6e2f0820, 0x3b79d: 0x6e2f0a20, 0x3b79e: 0x6e2f0c20, 0x3b79f: 0x6e2f0e20,\n\t0x3b7a0: 0x6e2f1020, 0x3b7a1: 0x6e2f1220, 0x3b7a2: 0x6e2f1420, 0x3b7a3: 0x6e2f1620,\n\t0x3b7a4: 0x6e2f1820, 0x3b7a5: 0x6e2f1a20, 0x3b7a6: 0x6e366020, 0x3b7a7: 0x6e366220,\n\t0x3b7a8: 0x6e366420, 0x3b7a9: 0x6e366620, 0x3b7aa: 0x6e366820, 0x3b7ab: 0x6e366a20,\n\t0x3b7ac: 0x6e366c20, 0x3b7ad: 0x6e366e20, 0x3b7ae: 0x6e367020, 0x3b7af: 0x6e367220,\n\t0x3b7b0: 0x6e3b8820, 0x3b7b1: 0x6e3b8a20, 0x3b7b2: 0x6e3b8c20, 0x3b7b3: 0x6e3b8e20,\n\t0x3b7b4: 0x6e3b9020, 0x3b7b5: 0x6e3b9220, 0x3b7b6: 0x6e3b9420, 0x3b7b7: 0x6e3b9620,\n\t0x3b7b8: 0x6e3b9820, 0x3b7b9: 0x6e3b9a20, 0x3b7ba: 0x6e3f3220, 0x3b7bb: 0x6e3f3420,\n\t0x3b7bc: 0x6e3f3620, 0x3b7bd: 0x6e3f3820, 0x3b7be: 0x6e3f3a20, 0x3b7bf: 0x6e3f3c20,\n\t// Block 0xedf, offset 0x3b7c0\n\t0x3b7c0: 0x6e3f3e20, 0x3b7c1: 0x6e41c020, 0x3b7c2: 0x6e41c220, 0x3b7c3: 0x6e41c420,\n\t0x3b7c4: 0x6e41c620, 0x3b7c5: 0x6e439020, 0x3b7c6: 0x6e439220, 0x3b7c7: 0x6e439420,\n\t0x3b7c8: 0x6e45f220, 0x3b7c9: 0x6e465420, 0x3b7ca: 0x6c8ab620, 0x3b7cb: 0x6c8ab820,\n\t0x3b7cc: 0x6d178c20, 0x3b7cd: 0x6d463e20, 0x3b7ce: 0x6d464020, 0x3b7cf: 0x6d464220,\n\t0x3b7d0: 0x6d734620, 0x3b7d1: 0x6d9cc220, 0x3b7d2: 0x6dbf5420, 0x3b7d3: 0x6ddd3a20,\n\t0x3b7d4: 0x6ddd3c20, 0x3b7d5: 0x6e08f020, 0x3b7d6: 0x6e18ea20, 0x3b7d7: 0x6e18ec20,\n\t0x3b7d8: 0x6e18ee20, 0x3b7d9: 0x6e25a620, 0x3b7da: 0x6e25a820, 0x3b7db: 0x6e2f1c20,\n\t0x3b7dc: 0x6e367820, 0x3b7dd: 0x6e367a20, 0x3b7de: 0x6e367c20, 0x3b7df: 0x6e439620,\n\t0x3b7e0: 0x6d734820, 0x3b7e1: 0x6d734a20, 0x3b7e2: 0x6d9cc420, 0x3b7e3: 0x6ddd3e20,\n\t0x3b7e4: 0x6e08f220, 0x3b7e5: 0x6e18f020, 0x3b7e6: 0x6e18f220, 0x3b7e7: 0x6e25aa20,\n\t0x3b7e8: 0x6e2f1e20, 0x3b7e9: 0x6e41cc20, 0x3b7ea: 0x6e439820, 0x3b7eb: 0x6d178e20,\n\t0x3b7ec: 0x6d179020, 0x3b7ed: 0x6d464820, 0x3b7ee: 0x6d464a20, 0x3b7ef: 0x6d734e20,\n\t0x3b7f0: 0x6d735020, 0x3b7f1: 0x6d9cca20, 0x3b7f2: 0x6d9ccc20, 0x3b7f3: 0x6d9cce20,\n\t0x3b7f4: 0x6d9cd020, 0x3b7f5: 0x6d9cd220, 0x3b7f6: 0x6d9cd420, 0x3b7f7: 0x6d9cd620,\n\t0x3b7f8: 0x6d9cd820, 0x3b7f9: 0x6dbf5820, 0x3b7fa: 0x6dbf5a20, 0x3b7fb: 0x6dbf5c20,\n\t0x3b7fc: 0x6dbf5e20, 0x3b7fd: 0x6dbf6020, 0x3b7fe: 0x6ddd4420, 0x3b7ff: 0x6ddd4620,\n\t// Block 0xee0, offset 0x3b800\n\t0x3b800: 0x6ddd4820, 0x3b801: 0x6ddd4a20, 0x3b802: 0x6ddd4c20, 0x3b803: 0x6df4fc20,\n\t0x3b804: 0x6df4fe20, 0x3b805: 0x6df50020, 0x3b806: 0x6df50220, 0x3b807: 0x6e08f620,\n\t0x3b808: 0x6e08f820, 0x3b809: 0x6e08fa20, 0x3b80a: 0x6e08fc20, 0x3b80b: 0x6e08fe20,\n\t0x3b80c: 0x6e18f820, 0x3b80d: 0x6e18fa20, 0x3b80e: 0x6e18fc20, 0x3b80f: 0x6e18fe20,\n\t0x3b810: 0x6e190020, 0x3b811: 0x6e190220, 0x3b812: 0x6e25b020, 0x3b813: 0x6e25b220,\n\t0x3b814: 0x6e25b420, 0x3b815: 0x6e25b620, 0x3b816: 0x6e2f2020, 0x3b817: 0x6e2f2220,\n\t0x3b818: 0x6e2f2420, 0x3b819: 0x6e2f2620, 0x3b81a: 0x6e2f2820, 0x3b81b: 0x6e2f2a20,\n\t0x3b81c: 0x6e2f2c20, 0x3b81d: 0x6e2f2e20, 0x3b81e: 0x6e2f3020, 0x3b81f: 0x6e2f3220,\n\t0x3b820: 0x6e367e20, 0x3b821: 0x6e368020, 0x3b822: 0x6e368220, 0x3b823: 0x6e368420,\n\t0x3b824: 0x6e3ba020, 0x3b825: 0x6e3ba220, 0x3b826: 0x6e3f4020, 0x3b827: 0x6e3f4220,\n\t0x3b828: 0x6e3f4420, 0x3b829: 0x6e3f4620, 0x3b82a: 0x6e3f4820, 0x3b82b: 0x6e41ce20,\n\t0x3b82c: 0x6e41d020, 0x3b82d: 0x6e439a20, 0x3b82e: 0x6e439c20, 0x3b82f: 0x6e44cc20,\n\t0x3b830: 0x6e44ce20, 0x3b831: 0x6e457c20, 0x3b832: 0x6e457e20, 0x3b833: 0x6e458020,\n\t0x3b834: 0x6e45f420, 0x3b835: 0x6e45f620, 0x3b836: 0x6e465620, 0x3b837: 0x6e470e20,\n\t0x3b838: 0x6e471020, 0x3b839: 0x6cb73a20, 0x3b83a: 0x6cb73c20, 0x3b83b: 0x6cb73e20,\n\t0x3b83c: 0x6cb74020, 0x3b83d: 0x6ce85220, 0x3b83e: 0x6ce85420, 0x3b83f: 0x6ce85620,\n\t// Block 0xee1, offset 0x3b840\n\t0x3b840: 0x6ce85820, 0x3b841: 0x6ce85a20, 0x3b842: 0x6ce85c20, 0x3b843: 0x6ce85e20,\n\t0x3b844: 0x6ce86020, 0x3b845: 0x6ce86220, 0x3b846: 0x6ce86420, 0x3b847: 0x6ce86620,\n\t0x3b848: 0x6ce86820, 0x3b849: 0x6ce86a20, 0x3b84a: 0x6d179420, 0x3b84b: 0x6d179620,\n\t0x3b84c: 0x6d179820, 0x3b84d: 0x6d179a20, 0x3b84e: 0x6d179c20, 0x3b84f: 0x6d179e20,\n\t0x3b850: 0x6d17a020, 0x3b851: 0x6d17a220, 0x3b852: 0x6d17a420, 0x3b853: 0x6d17a620,\n\t0x3b854: 0x6d17a820, 0x3b855: 0x6d17aa20, 0x3b856: 0x6d17ac20, 0x3b857: 0x6d17ae20,\n\t0x3b858: 0x6d17b020, 0x3b859: 0x6d17b220, 0x3b85a: 0x6d17b420, 0x3b85b: 0x6d17b620,\n\t0x3b85c: 0x6d17b820, 0x3b85d: 0x6d17ba20, 0x3b85e: 0x6d17bc20, 0x3b85f: 0x6d17be20,\n\t0x3b860: 0x6d17c020, 0x3b861: 0x6d465a20, 0x3b862: 0x6d465c20, 0x3b863: 0x6d465e20,\n\t0x3b864: 0x6d466020, 0x3b865: 0x6d466220, 0x3b866: 0x6d466420, 0x3b867: 0x6d466620,\n\t0x3b868: 0x6d466820, 0x3b869: 0x6d466a20, 0x3b86a: 0x6d466c20, 0x3b86b: 0x6d466e20,\n\t0x3b86c: 0x6d467020, 0x3b86d: 0x6d467220, 0x3b86e: 0x6d467420, 0x3b86f: 0x6d467620,\n\t0x3b870: 0x6d467820, 0x3b871: 0x6d467a20, 0x3b872: 0x6d467c20, 0x3b873: 0x6d467e20,\n\t0x3b874: 0x6d468020, 0x3b875: 0x6d468220, 0x3b876: 0x6d468420, 0x3b877: 0x6d468620,\n\t0x3b878: 0x6d468820, 0x3b879: 0x6d468a20, 0x3b87a: 0x6d736020, 0x3b87b: 0x6d736220,\n\t0x3b87c: 0x6d736420, 0x3b87d: 0x6d736620, 0x3b87e: 0x6d736820, 0x3b87f: 0x6d736a20,\n\t// Block 0xee2, offset 0x3b880\n\t0x3b880: 0x6d736c20, 0x3b881: 0x6d736e20, 0x3b882: 0x6d737020, 0x3b883: 0x6d737220,\n\t0x3b884: 0x6d737420, 0x3b885: 0x6d737620, 0x3b886: 0x6d737820, 0x3b887: 0x6d737a20,\n\t0x3b888: 0x6d737c20, 0x3b889: 0x6d737e20, 0x3b88a: 0x6d738020, 0x3b88b: 0x6d738220,\n\t0x3b88c: 0x6d9ce020, 0x3b88d: 0x6d9ce220, 0x3b88e: 0x6d9ce420, 0x3b88f: 0x6d9ce620,\n\t0x3b890: 0x6d9ce820, 0x3b891: 0x6d9cea20, 0x3b892: 0x6d9cec20, 0x3b893: 0x6d9cee20,\n\t0x3b894: 0x6d9cf020, 0x3b895: 0x6d9cf220, 0x3b896: 0x6d9cf420, 0x3b897: 0x6d9cf620,\n\t0x3b898: 0x6d9cf820, 0x3b899: 0x6d9cfa20, 0x3b89a: 0x6d9cfc20, 0x3b89b: 0x6d9cfe20,\n\t0x3b89c: 0x6d9d0020, 0x3b89d: 0x6d9d0220, 0x3b89e: 0x6d9d0420, 0x3b89f: 0x6d9d0620,\n\t0x3b8a0: 0x6d9d0820, 0x3b8a1: 0x6d9d0a20, 0x3b8a2: 0x6dbf6620, 0x3b8a3: 0x6dbf6820,\n\t0x3b8a4: 0x6dbf6a20, 0x3b8a5: 0x6dbf6c20, 0x3b8a6: 0x6dbf6e20, 0x3b8a7: 0x6dbf7020,\n\t0x3b8a8: 0x6dbf7220, 0x3b8a9: 0x6dbf7420, 0x3b8aa: 0x6dbf7620, 0x3b8ab: 0x6dbf7820,\n\t0x3b8ac: 0x6dbf7a20, 0x3b8ad: 0x6dbf7c20, 0x3b8ae: 0x6dbf7e20, 0x3b8af: 0x6dbf8020,\n\t0x3b8b0: 0x6dbf8220, 0x3b8b1: 0x6dbf8420, 0x3b8b2: 0x6dbf8620, 0x3b8b3: 0x6dbf8820,\n\t0x3b8b4: 0x6dbf8a20, 0x3b8b5: 0x6ddd6220, 0x3b8b6: 0x6ddd6420, 0x3b8b7: 0x6ddd6620,\n\t0x3b8b8: 0x6ddd6820, 0x3b8b9: 0x6ddd6a20, 0x3b8ba: 0x6ddd6c20, 0x3b8bb: 0x6ddd6e20,\n\t0x3b8bc: 0x6ddd7020, 0x3b8bd: 0x6ddd7220, 0x3b8be: 0x6ddd7420, 0x3b8bf: 0x6ddd7620,\n\t// Block 0xee3, offset 0x3b8c0\n\t0x3b8c0: 0x6ddd7820, 0x3b8c1: 0x6ddd7a20, 0x3b8c2: 0x6ddd7c20, 0x3b8c3: 0x6ddd7e20,\n\t0x3b8c4: 0x6ddd8020, 0x3b8c5: 0x6ddd8220, 0x3b8c6: 0x6df50820, 0x3b8c7: 0x6df50a20,\n\t0x3b8c8: 0x6df50c20, 0x3b8c9: 0x6df50e20, 0x3b8ca: 0x6df51020, 0x3b8cb: 0x6df51220,\n\t0x3b8cc: 0x6df51420, 0x3b8cd: 0x6df51620, 0x3b8ce: 0x6df51820, 0x3b8cf: 0x6df51a20,\n\t0x3b8d0: 0x6e090420, 0x3b8d1: 0x6e090620, 0x3b8d2: 0x6e090820, 0x3b8d3: 0x6e090a20,\n\t0x3b8d4: 0x6e090c20, 0x3b8d5: 0x6e090e20, 0x3b8d6: 0x6e091020, 0x3b8d7: 0x6e091220,\n\t0x3b8d8: 0x6e091420, 0x3b8d9: 0x6e091620, 0x3b8da: 0x6e091820, 0x3b8db: 0x6e091a20,\n\t0x3b8dc: 0x6e190e20, 0x3b8dd: 0x6e191020, 0x3b8de: 0x6e191220, 0x3b8df: 0x6e191420,\n\t0x3b8e0: 0x6e191620, 0x3b8e1: 0x6e191820, 0x3b8e2: 0x6e191a20, 0x3b8e3: 0x6e191c20,\n\t0x3b8e4: 0x6e191e20, 0x3b8e5: 0x6e192020, 0x3b8e6: 0x6e192220, 0x3b8e7: 0x6e192420,\n\t0x3b8e8: 0x6e192620, 0x3b8e9: 0x6e192820, 0x3b8ea: 0x6e192a20, 0x3b8eb: 0x6e192c20,\n\t0x3b8ec: 0x6e192e20, 0x3b8ed: 0x6e193020, 0x3b8ee: 0x6e25c220, 0x3b8ef: 0x6e25c420,\n\t0x3b8f0: 0x6e25c620, 0x3b8f1: 0x6e2f3620, 0x3b8f2: 0x6e2f3820, 0x3b8f3: 0x6e2f3a20,\n\t0x3b8f4: 0x6e2f3c20, 0x3b8f5: 0x6e2f3e20, 0x3b8f6: 0x6e2f4020, 0x3b8f7: 0x6e2f4220,\n\t0x3b8f8: 0x6e2f4420, 0x3b8f9: 0x6e2f4620, 0x3b8fa: 0x6e369020, 0x3b8fb: 0x6e369220,\n\t0x3b8fc: 0x6e369420, 0x3b8fd: 0x6e369620, 0x3b8fe: 0x6e369820, 0x3b8ff: 0x6e3ba420,\n\t// Block 0xee4, offset 0x3b900\n\t0x3b900: 0x6e3f4a20, 0x3b901: 0x6e3f4c20, 0x3b902: 0x6e3f4e20, 0x3b903: 0x6e3f5020,\n\t0x3b904: 0x6e41d220, 0x3b905: 0x6e41d420, 0x3b906: 0x6e43a020, 0x3b907: 0x6e43a220,\n\t0x3b908: 0x6e44d020, 0x3b909: 0x6e45f820, 0x3b90a: 0x6e465820, 0x3b90b: 0x6cb74820,\n\t0x3b90c: 0x6d17ce20, 0x3b90d: 0x6d17d020, 0x3b90e: 0x6d17d220, 0x3b90f: 0x6d17d420,\n\t0x3b910: 0x6d17d620, 0x3b911: 0x6d17d820, 0x3b912: 0x6d17da20, 0x3b913: 0x6d17dc20,\n\t0x3b914: 0x6d469a20, 0x3b915: 0x6d469c20, 0x3b916: 0x6d469e20, 0x3b917: 0x6d46a020,\n\t0x3b918: 0x6d46a220, 0x3b919: 0x6d46a420, 0x3b91a: 0x6d46a620, 0x3b91b: 0x6d46a820,\n\t0x3b91c: 0x6d46aa20, 0x3b91d: 0x6d46ac20, 0x3b91e: 0x6d46ae20, 0x3b91f: 0x6d46b020,\n\t0x3b920: 0x6d73c420, 0x3b921: 0x6d73c620, 0x3b922: 0x6d73c820, 0x3b923: 0x6d73ca20,\n\t0x3b924: 0x6d73cc20, 0x3b925: 0x6d73ce20, 0x3b926: 0x6d73d020, 0x3b927: 0x6d73d220,\n\t0x3b928: 0x6d73d420, 0x3b929: 0x6d73d620, 0x3b92a: 0x6d73d820, 0x3b92b: 0x6d73da20,\n\t0x3b92c: 0x6d73dc20, 0x3b92d: 0x6d73de20, 0x3b92e: 0x6d73e020, 0x3b92f: 0x6d73e220,\n\t0x3b930: 0x6d73e420, 0x3b931: 0x6d73e620, 0x3b932: 0x6d73e820, 0x3b933: 0x6d73ea20,\n\t0x3b934: 0x6d73ec20, 0x3b935: 0x6d73ee20, 0x3b936: 0x6d73f020, 0x3b937: 0x6d73f220,\n\t0x3b938: 0x6d73f420, 0x3b939: 0x6d73f620, 0x3b93a: 0x6d73f820, 0x3b93b: 0x6d73fa20,\n\t0x3b93c: 0x6d73fc20, 0x3b93d: 0x6d73fe20, 0x3b93e: 0x6d740020, 0x3b93f: 0x6d740220,\n\t// Block 0xee5, offset 0x3b940\n\t0x3b940: 0x6d740420, 0x3b941: 0x6d9d6220, 0x3b942: 0x6d9d6420, 0x3b943: 0x6d9d6620,\n\t0x3b944: 0x6d9d6820, 0x3b945: 0x6d9d6a20, 0x3b946: 0x6d9d6c20, 0x3b947: 0x6d9d6e20,\n\t0x3b948: 0x6d9d7020, 0x3b949: 0x6d9d7220, 0x3b94a: 0x6d9d7420, 0x3b94b: 0x6d9d7620,\n\t0x3b94c: 0x6d9d7820, 0x3b94d: 0x6d9d7a20, 0x3b94e: 0x6d9d7c20, 0x3b94f: 0x6d9d7e20,\n\t0x3b950: 0x6d9d8020, 0x3b951: 0x6d9d8220, 0x3b952: 0x6d9d8420, 0x3b953: 0x6d9d8620,\n\t0x3b954: 0x6d9d8820, 0x3b955: 0x6d9d8a20, 0x3b956: 0x6d9d8c20, 0x3b957: 0x6d9d8e20,\n\t0x3b958: 0x6d9d9020, 0x3b959: 0x6d9d9220, 0x3b95a: 0x6d9d9420, 0x3b95b: 0x6d9d9620,\n\t0x3b95c: 0x6d9d9820, 0x3b95d: 0x6d9d9a20, 0x3b95e: 0x6d9d9c20, 0x3b95f: 0x6d9d9e20,\n\t0x3b960: 0x6d9da020, 0x3b961: 0x6dbfd420, 0x3b962: 0x6dbfd620, 0x3b963: 0x6dbfd820,\n\t0x3b964: 0x6dbfda20, 0x3b965: 0x6dbfdc20, 0x3b966: 0x6dbfde20, 0x3b967: 0x6dbfe020,\n\t0x3b968: 0x6dbfe220, 0x3b969: 0x6dbfe420, 0x3b96a: 0x6dbfe620, 0x3b96b: 0x6dbfe820,\n\t0x3b96c: 0x6dbfea20, 0x3b96d: 0x6dbfec20, 0x3b96e: 0x6dbfee20, 0x3b96f: 0x6dbff020,\n\t0x3b970: 0x6dbff220, 0x3b971: 0x6dbff420, 0x3b972: 0x6dbff620, 0x3b973: 0x6dbff820,\n\t0x3b974: 0x6dbffa20, 0x3b975: 0x6dbffc20, 0x3b976: 0x6dbffe20, 0x3b977: 0x6d46b220,\n\t0x3b978: 0x6dc00020, 0x3b979: 0x6dc00220, 0x3b97a: 0x6dc00420, 0x3b97b: 0x6dc00620,\n\t0x3b97c: 0x6dc00820, 0x3b97d: 0x6dc00a20, 0x3b97e: 0x6dc00c20, 0x3b97f: 0x6dc00e20,\n\t// Block 0xee6, offset 0x3b980\n\t0x3b980: 0x6dc01020, 0x3b981: 0x6dc01220, 0x3b982: 0x6dc01420, 0x3b983: 0x6dc01620,\n\t0x3b984: 0x6dc01820, 0x3b985: 0x6dc01a20, 0x3b986: 0x6dc01c20, 0x3b987: 0x6dc01e20,\n\t0x3b988: 0x6dc02020, 0x3b989: 0x6dc02220, 0x3b98a: 0x6dc02420, 0x3b98b: 0x6dc02620,\n\t0x3b98c: 0x6dc02820, 0x3b98d: 0x6dddd220, 0x3b98e: 0x6dddd420, 0x3b98f: 0x6dddd620,\n\t0x3b990: 0x6dddd820, 0x3b991: 0x6dddda20, 0x3b992: 0x6ddddc20, 0x3b993: 0x6dddde20,\n\t0x3b994: 0x6ddde020, 0x3b995: 0x6ddde220, 0x3b996: 0x6ddde420, 0x3b997: 0x6ddde620,\n\t0x3b998: 0x6ddde820, 0x3b999: 0x6dddea20, 0x3b99a: 0x6dddec20, 0x3b99b: 0x6dddee20,\n\t0x3b99c: 0x6dddf020, 0x3b99d: 0x6dddf220, 0x3b99e: 0x6dddf420, 0x3b99f: 0x6dddf620,\n\t0x3b9a0: 0x6dddf820, 0x3b9a1: 0x6dddfa20, 0x3b9a2: 0x6dddfc20, 0x3b9a3: 0x6dddfe20,\n\t0x3b9a4: 0x6dde0020, 0x3b9a5: 0x6dde0220, 0x3b9a6: 0x6dde0420, 0x3b9a7: 0x6dde0620,\n\t0x3b9a8: 0x6dde0820, 0x3b9a9: 0x6dde0a20, 0x3b9aa: 0x6dde0c20, 0x3b9ab: 0x6dde0e20,\n\t0x3b9ac: 0x6dde1020, 0x3b9ad: 0x6dde1220, 0x3b9ae: 0x6dde1420, 0x3b9af: 0x6dde1620,\n\t0x3b9b0: 0x6dde1820, 0x3b9b1: 0x6dde1a20, 0x3b9b2: 0x6dde1c20, 0x3b9b3: 0x6dde1e20,\n\t0x3b9b4: 0x6dde2020, 0x3b9b5: 0x6dde2220, 0x3b9b6: 0x6dde2420, 0x3b9b7: 0x6df58620,\n\t0x3b9b8: 0x6df58820, 0x3b9b9: 0x6df58a20, 0x3b9ba: 0x6df58c20, 0x3b9bb: 0x6df58e20,\n\t0x3b9bc: 0x6df59020, 0x3b9bd: 0x6df59220, 0x3b9be: 0x6df59420, 0x3b9bf: 0x6df59620,\n\t// Block 0xee7, offset 0x3b9c0\n\t0x3b9c0: 0x6df59820, 0x3b9c1: 0x6df59a20, 0x3b9c2: 0x6df59c20, 0x3b9c3: 0x6df59e20,\n\t0x3b9c4: 0x6df5a020, 0x3b9c5: 0x6df5a220, 0x3b9c6: 0x6df5a420, 0x3b9c7: 0x6df5a620,\n\t0x3b9c8: 0x6df5a820, 0x3b9c9: 0x6df5aa20, 0x3b9ca: 0x6df5ac20, 0x3b9cb: 0x6df5ae20,\n\t0x3b9cc: 0x6df5b020, 0x3b9cd: 0x6df5b220, 0x3b9ce: 0x6df5b420, 0x3b9cf: 0x6df5b620,\n\t0x3b9d0: 0x6df5b820, 0x3b9d1: 0x6df5ba20, 0x3b9d2: 0x6df5bc20, 0x3b9d3: 0x6df5be20,\n\t0x3b9d4: 0x6df5c020, 0x3b9d5: 0x6df5c220, 0x3b9d6: 0x6df5c420, 0x3b9d7: 0x6df5c620,\n\t0x3b9d8: 0x6df5c820, 0x3b9d9: 0x6df5ca20, 0x3b9da: 0x6df5cc20, 0x3b9db: 0x6df5ce20,\n\t0x3b9dc: 0x6df5d020, 0x3b9dd: 0x6df5d220, 0x3b9de: 0x6df5d420, 0x3b9df: 0x6df5d620,\n\t0x3b9e0: 0x6df5d820, 0x3b9e1: 0x6df5da20, 0x3b9e2: 0x6df5dc20, 0x3b9e3: 0x6df5de20,\n\t0x3b9e4: 0x6df5e020, 0x3b9e5: 0x6df5e220, 0x3b9e6: 0x6df5e420, 0x3b9e7: 0x6df5e620,\n\t0x3b9e8: 0x6df5e820, 0x3b9e9: 0x6df5ea20, 0x3b9ea: 0x6df5ec20, 0x3b9eb: 0x6df5ee20,\n\t0x3b9ec: 0x6df5f020, 0x3b9ed: 0x6df5f220, 0x3b9ee: 0x6df5f420, 0x3b9ef: 0x6df5f620,\n\t0x3b9f0: 0x6df5f820, 0x3b9f1: 0x6df5fa20, 0x3b9f2: 0x6df5fc20, 0x3b9f3: 0x6df5fe20,\n\t0x3b9f4: 0x6df60020, 0x3b9f5: 0x6df60220, 0x3b9f6: 0x6df60420, 0x3b9f7: 0x6df60620,\n\t0x3b9f8: 0x6df60820, 0x3b9f9: 0x6df60a20, 0x3b9fa: 0x6df60c20, 0x3b9fb: 0x6df60e20,\n\t0x3b9fc: 0x6df61020, 0x3b9fd: 0x6df61220, 0x3b9fe: 0x6e097a20, 0x3b9ff: 0x6e097c20,\n\t// Block 0xee8, offset 0x3ba00\n\t0x3ba00: 0x6e097e20, 0x3ba01: 0x6e098020, 0x3ba02: 0x6e098220, 0x3ba03: 0x6e098420,\n\t0x3ba04: 0x6e098620, 0x3ba05: 0x6e098820, 0x3ba06: 0x6e098a20, 0x3ba07: 0x6e098c20,\n\t0x3ba08: 0x6e098e20, 0x3ba09: 0x6e099020, 0x3ba0a: 0x6e099220, 0x3ba0b: 0x6e099420,\n\t0x3ba0c: 0x6e099620, 0x3ba0d: 0x6e099820, 0x3ba0e: 0x6e099a20, 0x3ba0f: 0x6e099c20,\n\t0x3ba10: 0x6e099e20, 0x3ba11: 0x6e09a020, 0x3ba12: 0x6e09a220, 0x3ba13: 0x6e09a420,\n\t0x3ba14: 0x6e09a620, 0x3ba15: 0x6e09a820, 0x3ba16: 0x6e09aa20, 0x3ba17: 0x6e09ac20,\n\t0x3ba18: 0x6e09ae20, 0x3ba19: 0x6e09b020, 0x3ba1a: 0x6e09b220, 0x3ba1b: 0x6e09b420,\n\t0x3ba1c: 0x6e09b620, 0x3ba1d: 0x6e09b820, 0x3ba1e: 0x6e09ba20, 0x3ba1f: 0x6e09bc20,\n\t0x3ba20: 0x6e09be20, 0x3ba21: 0x6e09c020, 0x3ba22: 0x6e09c220, 0x3ba23: 0x6e09c420,\n\t0x3ba24: 0x6e09c620, 0x3ba25: 0x6e09c820, 0x3ba26: 0x6e09ca20, 0x3ba27: 0x6e09cc20,\n\t0x3ba28: 0x6e09ce20, 0x3ba29: 0x6e09d020, 0x3ba2a: 0x6e09d220, 0x3ba2b: 0x6e09d420,\n\t0x3ba2c: 0x6e09d620, 0x3ba2d: 0x6e09d820, 0x3ba2e: 0x6e09da20, 0x3ba2f: 0x6e09dc20,\n\t0x3ba30: 0x6e09de20, 0x3ba31: 0x6e196e20, 0x3ba32: 0x6e197020, 0x3ba33: 0x6e197220,\n\t0x3ba34: 0x6e197420, 0x3ba35: 0x6e197620, 0x3ba36: 0x6e197820, 0x3ba37: 0x6e197a20,\n\t0x3ba38: 0x6e197c20, 0x3ba39: 0x6e197e20, 0x3ba3a: 0x6e198020, 0x3ba3b: 0x6e198220,\n\t0x3ba3c: 0x6e198420, 0x3ba3d: 0x6e198620, 0x3ba3e: 0x6e198820, 0x3ba3f: 0x6e198a20,\n\t// Block 0xee9, offset 0x3ba40\n\t0x3ba40: 0x6e198c20, 0x3ba41: 0x6e198e20, 0x3ba42: 0x6e199020, 0x3ba43: 0x6e199220,\n\t0x3ba44: 0x6e199420, 0x3ba45: 0x6e199620, 0x3ba46: 0x6e199820, 0x3ba47: 0x6e199a20,\n\t0x3ba48: 0x6e199c20, 0x3ba49: 0x6e199e20, 0x3ba4a: 0x6e19a020, 0x3ba4b: 0x6e19a220,\n\t0x3ba4c: 0x6e19a420, 0x3ba4d: 0x6e19a620, 0x3ba4e: 0x6e19a820, 0x3ba4f: 0x6e19aa20,\n\t0x3ba50: 0x6e19ac20, 0x3ba51: 0x6e19ae20, 0x3ba52: 0x6e19b020, 0x3ba53: 0x6e19b220,\n\t0x3ba54: 0x6e19b420, 0x3ba55: 0x6e19b620, 0x3ba56: 0x6e19b820, 0x3ba57: 0x6e19ba20,\n\t0x3ba58: 0x6e19bc20, 0x3ba59: 0x6e19be20, 0x3ba5a: 0x6e19c020, 0x3ba5b: 0x6e19c220,\n\t0x3ba5c: 0x6e19c420, 0x3ba5d: 0x6e19c620, 0x3ba5e: 0x6e19c820, 0x3ba5f: 0x6e19ca20,\n\t0x3ba60: 0x6e19cc20, 0x3ba61: 0x6e19ce20, 0x3ba62: 0x6e19d020, 0x3ba63: 0x6e19d220,\n\t0x3ba64: 0x6e19d420, 0x3ba65: 0x6e19d620, 0x3ba66: 0x6e19d820, 0x3ba67: 0x6e19da20,\n\t0x3ba68: 0x6e19dc20, 0x3ba69: 0x6e19de20, 0x3ba6a: 0x6e19e020, 0x3ba6b: 0x6e19e220,\n\t0x3ba6c: 0x6e19e420, 0x3ba6d: 0x6e260e20, 0x3ba6e: 0x6e261020, 0x3ba6f: 0x6e261220,\n\t0x3ba70: 0x6e261420, 0x3ba71: 0x6e261620, 0x3ba72: 0x6e261820, 0x3ba73: 0x6e261a20,\n\t0x3ba74: 0x6e261c20, 0x3ba75: 0x6e261e20, 0x3ba76: 0x6e262020, 0x3ba77: 0x6e262220,\n\t0x3ba78: 0x6e262420, 0x3ba79: 0x6e262620, 0x3ba7a: 0x6e262820, 0x3ba7b: 0x6e262a20,\n\t0x3ba7c: 0x6e262c20, 0x3ba7d: 0x6e262e20, 0x3ba7e: 0x6e263020, 0x3ba7f: 0x6e263220,\n\t// Block 0xeea, offset 0x3ba80\n\t0x3ba80: 0x6e263420, 0x3ba81: 0x6e263620, 0x3ba82: 0x6e263820, 0x3ba83: 0x6e263a20,\n\t0x3ba84: 0x6e263c20, 0x3ba85: 0x6e263e20, 0x3ba86: 0x6e264020, 0x3ba87: 0x6e264220,\n\t0x3ba88: 0x6e264420, 0x3ba89: 0x6e264620, 0x3ba8a: 0x6e264820, 0x3ba8b: 0x6e264a20,\n\t0x3ba8c: 0x6e264c20, 0x3ba8d: 0x6e264e20, 0x3ba8e: 0x6e265020, 0x3ba8f: 0x6e265220,\n\t0x3ba90: 0x6e265420, 0x3ba91: 0x6e265620, 0x3ba92: 0x6e265820, 0x3ba93: 0x6e265a20,\n\t0x3ba94: 0x6e265c20, 0x3ba95: 0x6e265e20, 0x3ba96: 0x6e266020, 0x3ba97: 0x6e266220,\n\t0x3ba98: 0x6e2f7a20, 0x3ba99: 0x6e2f7c20, 0x3ba9a: 0x6e2f7e20, 0x3ba9b: 0x6e2f8020,\n\t0x3ba9c: 0x6e2f8220, 0x3ba9d: 0x6e2f8420, 0x3ba9e: 0x6e2f8620, 0x3ba9f: 0x6e2f8820,\n\t0x3baa0: 0x6e2f8a20, 0x3baa1: 0x6e2f8c20, 0x3baa2: 0x6e2f8e20, 0x3baa3: 0x6e2f9020,\n\t0x3baa4: 0x6e2f9220, 0x3baa5: 0x6e2f9420, 0x3baa6: 0x6e2f9620, 0x3baa7: 0x6e2f9820,\n\t0x3baa8: 0x6e2f9a20, 0x3baa9: 0x6e2f9c20, 0x3baaa: 0x6e2f9e20, 0x3baab: 0x6e2fa020,\n\t0x3baac: 0x6e2fa220, 0x3baad: 0x6e2fa420, 0x3baae: 0x6e2fa620, 0x3baaf: 0x6e2fa820,\n\t0x3bab0: 0x6e2faa20, 0x3bab1: 0x6e2fac20, 0x3bab2: 0x6e2fae20, 0x3bab3: 0x6e2fb020,\n\t0x3bab4: 0x6e2fb220, 0x3bab5: 0x6e2fb420, 0x3bab6: 0x6e2fb620, 0x3bab7: 0x6e2fb820,\n\t0x3bab8: 0x6e2fba20, 0x3bab9: 0x6e2fbc20, 0x3baba: 0x6e2fbe20, 0x3babb: 0x6e2fc020,\n\t0x3babc: 0x6e2fc220, 0x3babd: 0x6e2fc420, 0x3babe: 0x6e2fc620, 0x3babf: 0x6e2fc820,\n\t// Block 0xeeb, offset 0x3bac0\n\t0x3bac0: 0x6e2fca20, 0x3bac1: 0x6e2fcc20, 0x3bac2: 0x6e36c220, 0x3bac3: 0x6e36c420,\n\t0x3bac4: 0x6e36c620, 0x3bac5: 0x6e36c820, 0x3bac6: 0x6e36ca20, 0x3bac7: 0x6e36cc20,\n\t0x3bac8: 0x6e36ce20, 0x3bac9: 0x6e36d020, 0x3baca: 0x6e36d220, 0x3bacb: 0x6e36d420,\n\t0x3bacc: 0x6e36d620, 0x3bacd: 0x6e36d820, 0x3bace: 0x6e36da20, 0x3bacf: 0x6e36dc20,\n\t0x3bad0: 0x6e36de20, 0x3bad1: 0x6e36e020, 0x3bad2: 0x6e36e220, 0x3bad3: 0x6e36e420,\n\t0x3bad4: 0x6e36e620, 0x3bad5: 0x6e36e820, 0x3bad6: 0x6e36ea20, 0x3bad7: 0x6e36ec20,\n\t0x3bad8: 0x6e36ee20, 0x3bad9: 0x6e36f020, 0x3bada: 0x6e36f220, 0x3badb: 0x6e36f420,\n\t0x3badc: 0x6e36f620, 0x3badd: 0x6e36f820, 0x3bade: 0x6e36fa20, 0x3badf: 0x6e36fc20,\n\t0x3bae0: 0x6e36fe20, 0x3bae1: 0x6e370020, 0x3bae2: 0x6e370220, 0x3bae3: 0x6e370420,\n\t0x3bae4: 0x6e370620, 0x3bae5: 0x6e3bb620, 0x3bae6: 0x6e3bb820, 0x3bae7: 0x6e3bba20,\n\t0x3bae8: 0x6e3bbc20, 0x3bae9: 0x6e3bbe20, 0x3baea: 0x6e3bc020, 0x3baeb: 0x6e3bc220,\n\t0x3baec: 0x6e3bc420, 0x3baed: 0x6e3bc620, 0x3baee: 0x6e3bc820, 0x3baef: 0x6e3bca20,\n\t0x3baf0: 0x6e3bcc20, 0x3baf1: 0x6e3bce20, 0x3baf2: 0x6e3bd020, 0x3baf3: 0x6e3bd220,\n\t0x3baf4: 0x6e3bd420, 0x3baf5: 0x6e3bd620, 0x3baf6: 0x6e3bd820, 0x3baf7: 0x6e3bda20,\n\t0x3baf8: 0x6e3bdc20, 0x3baf9: 0x6e3bde20, 0x3bafa: 0x6e3be020, 0x3bafb: 0x6e3f6020,\n\t0x3bafc: 0x6e3f6220, 0x3bafd: 0x6e3f6420, 0x3bafe: 0x6e3f6620, 0x3baff: 0x6e3f6820,\n\t// Block 0xeec, offset 0x3bb00\n\t0x3bb00: 0x6e3f6a20, 0x3bb01: 0x6e3f6c20, 0x3bb02: 0x6e3f6e20, 0x3bb03: 0x6e3f7020,\n\t0x3bb04: 0x6e3f7220, 0x3bb05: 0x6e3f7420, 0x3bb06: 0x6e3f7620, 0x3bb07: 0x6e3f7820,\n\t0x3bb08: 0x6e3f7a20, 0x3bb09: 0x6e3f7c20, 0x3bb0a: 0x6e3f7e20, 0x3bb0b: 0x6e3f8020,\n\t0x3bb0c: 0x6e3f8220, 0x3bb0d: 0x6e41de20, 0x3bb0e: 0x6e41e020, 0x3bb0f: 0x6e41e220,\n\t0x3bb10: 0x6e41e420, 0x3bb11: 0x6e41e620, 0x3bb12: 0x6e41e820, 0x3bb13: 0x6e41ea20,\n\t0x3bb14: 0x6e41ec20, 0x3bb15: 0x6e41ee20, 0x3bb16: 0x6e41f020, 0x3bb17: 0x6e41f220,\n\t0x3bb18: 0x6e41f420, 0x3bb19: 0x6e41f620, 0x3bb1a: 0x6e43a420, 0x3bb1b: 0x6e43a620,\n\t0x3bb1c: 0x6e43a820, 0x3bb1d: 0x6e43aa20, 0x3bb1e: 0x6e43ac20, 0x3bb1f: 0x6e43ae20,\n\t0x3bb20: 0x6e43b020, 0x3bb21: 0x6e43b220, 0x3bb22: 0x6e43b420, 0x3bb23: 0x6e43b620,\n\t0x3bb24: 0x6e43b820, 0x3bb25: 0x6e43ba20, 0x3bb26: 0x6e43bc20, 0x3bb27: 0x6e44d420,\n\t0x3bb28: 0x6e44d620, 0x3bb29: 0x6e44d820, 0x3bb2a: 0x6e44da20, 0x3bb2b: 0x6e44dc20,\n\t0x3bb2c: 0x6e44de20, 0x3bb2d: 0x6e44e020, 0x3bb2e: 0x6e44e220, 0x3bb2f: 0x6e44e420,\n\t0x3bb30: 0x6e458420, 0x3bb31: 0x6e458620, 0x3bb32: 0x6e458820, 0x3bb33: 0x6e45fa20,\n\t0x3bb34: 0x6e45fc20, 0x3bb35: 0x6e465a20, 0x3bb36: 0x6e465c20, 0x3bb37: 0x6e465e20,\n\t0x3bb38: 0x6e466020, 0x3bb39: 0x6ce87820, 0x3bb3a: 0x6ce87a20, 0x3bb3b: 0x6ce87c20,\n\t0x3bb3c: 0x6d46d420, 0x3bb3d: 0x6d46d620, 0x3bb3e: 0x6d46d820, 0x3bb3f: 0x6d46da20,\n\t// Block 0xeed, offset 0x3bb40\n\t0x3bb40: 0x6d17fa20, 0x3bb41: 0x6d742620, 0x3bb42: 0x6d742820, 0x3bb43: 0x6d742a20,\n\t0x3bb44: 0x6d742c20, 0x3bb45: 0x6d9dce20, 0x3bb46: 0x6d9dd020, 0x3bb47: 0x6d9dd220,\n\t0x3bb48: 0x6d9dd420, 0x3bb49: 0x6d742e20, 0x3bb4a: 0x6dc05a20, 0x3bb4b: 0x6dc05c20,\n\t0x3bb4c: 0x6df63020, 0x3bb4d: 0x6e1a0020, 0x3bb4e: 0x6e2fdc20, 0x3bb4f: 0x6ce88820,\n\t0x3bb50: 0x6ce88a20, 0x3bb51: 0x6ce88c20, 0x3bb52: 0x6d181a20, 0x3bb53: 0x6d181c20,\n\t0x3bb54: 0x6d181e20, 0x3bb55: 0x6d182020, 0x3bb56: 0x6d182220, 0x3bb57: 0x6d182420,\n\t0x3bb58: 0x6d182620, 0x3bb59: 0x6d182820, 0x3bb5a: 0x6d182a20, 0x3bb5b: 0x6d182c20,\n\t0x3bb5c: 0x6d182e20, 0x3bb5d: 0x6d470020, 0x3bb5e: 0x6d470220, 0x3bb5f: 0x6d470420,\n\t0x3bb60: 0x6d470620, 0x3bb61: 0x6d470820, 0x3bb62: 0x6d470a20, 0x3bb63: 0x6d470c20,\n\t0x3bb64: 0x6d470e20, 0x3bb65: 0x6d471020, 0x3bb66: 0x6d471220, 0x3bb67: 0x6d471420,\n\t0x3bb68: 0x6d471620, 0x3bb69: 0x6d471820, 0x3bb6a: 0x6d471a20, 0x3bb6b: 0x6d471c20,\n\t0x3bb6c: 0x6d471e20, 0x3bb6d: 0x6d472020, 0x3bb6e: 0x6d472220, 0x3bb6f: 0x6d472420,\n\t0x3bb70: 0x6d747e20, 0x3bb71: 0x6d748020, 0x3bb72: 0x6d748220, 0x3bb73: 0x6d748420,\n\t0x3bb74: 0x6d748620, 0x3bb75: 0x6d748820, 0x3bb76: 0x6d748a20, 0x3bb77: 0x6d748c20,\n\t0x3bb78: 0x6d748e20, 0x3bb79: 0x6d749020, 0x3bb7a: 0x6d749220, 0x3bb7b: 0x6d749420,\n\t0x3bb7c: 0x6d749620, 0x3bb7d: 0x6d749820, 0x3bb7e: 0x6d749a20, 0x3bb7f: 0x6d749c20,\n\t// Block 0xeee, offset 0x3bb80\n\t0x3bb80: 0x6d749e20, 0x3bb81: 0x6d74a020, 0x3bb82: 0x6d74a220, 0x3bb83: 0x6d74a420,\n\t0x3bb84: 0x6d74a620, 0x3bb85: 0x6d74a820, 0x3bb86: 0x6d74aa20, 0x3bb87: 0x6d74ac20,\n\t0x3bb88: 0x6d74ae20, 0x3bb89: 0x6d74b020, 0x3bb8a: 0x6d74b220, 0x3bb8b: 0x6d74b420,\n\t0x3bb8c: 0x6d74b620, 0x3bb8d: 0x6d74b820, 0x3bb8e: 0x6d74ba20, 0x3bb8f: 0x6d74bc20,\n\t0x3bb90: 0x6d74be20, 0x3bb91: 0x6d74c020, 0x3bb92: 0x6d74c220, 0x3bb93: 0x6d74c420,\n\t0x3bb94: 0x6d74c620, 0x3bb95: 0x6d74c820, 0x3bb96: 0x6d74ca20, 0x3bb97: 0x6d74cc20,\n\t0x3bb98: 0x6d74ce20, 0x3bb99: 0x6d74d020, 0x3bb9a: 0x6d74d220, 0x3bb9b: 0x6d74d420,\n\t0x3bb9c: 0x6d9e4220, 0x3bb9d: 0x6d9e4420, 0x3bb9e: 0x6d9e4620, 0x3bb9f: 0x6d9e4820,\n\t0x3bba0: 0x6d9e4a20, 0x3bba1: 0x6d9e4c20, 0x3bba2: 0x6d9e4e20, 0x3bba3: 0x6d9e5020,\n\t0x3bba4: 0x6d9e5220, 0x3bba5: 0x6d9e5420, 0x3bba6: 0x6d9e5620, 0x3bba7: 0x6d9e5820,\n\t0x3bba8: 0x6d9e5a20, 0x3bba9: 0x6d9e5c20, 0x3bbaa: 0x6d9e5e20, 0x3bbab: 0x6d9e6020,\n\t0x3bbac: 0x6d9e6220, 0x3bbad: 0x6d9e6420, 0x3bbae: 0x6d9e6620, 0x3bbaf: 0x6d9e6820,\n\t0x3bbb0: 0x6d9e6a20, 0x3bbb1: 0x6d9e6c20, 0x3bbb2: 0x6d9e6e20, 0x3bbb3: 0x6d9e7020,\n\t0x3bbb4: 0x6d9e7220, 0x3bbb5: 0x6d9e7420, 0x3bbb6: 0x6d9e7620, 0x3bbb7: 0x6d9e7820,\n\t0x3bbb8: 0x6d9e7a20, 0x3bbb9: 0x6d9e7c20, 0x3bbba: 0x6d9e7e20, 0x3bbbb: 0x6d9e8020,\n\t0x3bbbc: 0x6d9e8220, 0x3bbbd: 0x6d9e8420, 0x3bbbe: 0x6d9e8620, 0x3bbbf: 0x6d9e8820,\n\t// Block 0xeef, offset 0x3bbc0\n\t0x3bbc0: 0x6d9e8a20, 0x3bbc1: 0x6d9e8c20, 0x3bbc2: 0x6d9e8e20, 0x3bbc3: 0x6d9e9020,\n\t0x3bbc4: 0x6d9e9220, 0x3bbc5: 0x6d9e9420, 0x3bbc6: 0x6d9e9620, 0x3bbc7: 0x6d9e9820,\n\t0x3bbc8: 0x6d9e9a20, 0x3bbc9: 0x6d9e9c20, 0x3bbca: 0x6d9e9e20, 0x3bbcb: 0x6d9ea020,\n\t0x3bbcc: 0x6d9ea220, 0x3bbcd: 0x6d9ea420, 0x3bbce: 0x6d9ea620, 0x3bbcf: 0x6d9ea820,\n\t0x3bbd0: 0x6d9eaa20, 0x3bbd1: 0x6d9eac20, 0x3bbd2: 0x6dc0ba20, 0x3bbd3: 0x6dc0bc20,\n\t0x3bbd4: 0x6dc0be20, 0x3bbd5: 0x6dc0c020, 0x3bbd6: 0x6dc0c220, 0x3bbd7: 0x6dc0c420,\n\t0x3bbd8: 0x6dc0c620, 0x3bbd9: 0x6dc0c820, 0x3bbda: 0x6dc0ca20, 0x3bbdb: 0x6dc0cc20,\n\t0x3bbdc: 0x6dc0ce20, 0x3bbdd: 0x6dc0d020, 0x3bbde: 0x6dc0d220, 0x3bbdf: 0x6dc0d420,\n\t0x3bbe0: 0x6dc0d620, 0x3bbe1: 0x6dc0d820, 0x3bbe2: 0x6dc0da20, 0x3bbe3: 0x6dc0dc20,\n\t0x3bbe4: 0x6dc0de20, 0x3bbe5: 0x6dc0e020, 0x3bbe6: 0x6dc0e220, 0x3bbe7: 0x6dc0e420,\n\t0x3bbe8: 0x6dc0e620, 0x3bbe9: 0x6dc0e820, 0x3bbea: 0x6dc0ea20, 0x3bbeb: 0x6dc0ec20,\n\t0x3bbec: 0x6dc0ee20, 0x3bbed: 0x6dc0f020, 0x3bbee: 0x6dc0f220, 0x3bbef: 0x6dc0f420,\n\t0x3bbf0: 0x6dc0f620, 0x3bbf1: 0x6dc0f820, 0x3bbf2: 0x6dc0fa20, 0x3bbf3: 0x6dc0fc20,\n\t0x3bbf4: 0x6dc0fe20, 0x3bbf5: 0x6dc10020, 0x3bbf6: 0x6dc10220, 0x3bbf7: 0x6dc10420,\n\t0x3bbf8: 0x6dc10620, 0x3bbf9: 0x6dc10820, 0x3bbfa: 0x6dc10a20, 0x3bbfb: 0x6dc10c20,\n\t0x3bbfc: 0x6dc10e20, 0x3bbfd: 0x6dc11020, 0x3bbfe: 0x6dc11220, 0x3bbff: 0x6dc11420,\n\t// Block 0xef0, offset 0x3bc00\n\t0x3bc00: 0x6dc11620, 0x3bc01: 0x6dc11820, 0x3bc02: 0x6dc11a20, 0x3bc03: 0x6dc11c20,\n\t0x3bc04: 0x6dc11e20, 0x3bc05: 0x6dc12020, 0x3bc06: 0x6dc12220, 0x3bc07: 0x6dc12420,\n\t0x3bc08: 0x6dc12620, 0x3bc09: 0x6dc12820, 0x3bc0a: 0x6dde8220, 0x3bc0b: 0x6dde8420,\n\t0x3bc0c: 0x6dde8620, 0x3bc0d: 0x6dde8820, 0x3bc0e: 0x6dde8a20, 0x3bc0f: 0x6dde8c20,\n\t0x3bc10: 0x6dde8e20, 0x3bc11: 0x6dde9020, 0x3bc12: 0x6dde9220, 0x3bc13: 0x6dde9420,\n\t0x3bc14: 0x6dde9620, 0x3bc15: 0x6dde9820, 0x3bc16: 0x6dde9a20, 0x3bc17: 0x6dde9c20,\n\t0x3bc18: 0x6dde9e20, 0x3bc19: 0x6ddea020, 0x3bc1a: 0x6ddea220, 0x3bc1b: 0x6ddea420,\n\t0x3bc1c: 0x6ddea620, 0x3bc1d: 0x6ddea820, 0x3bc1e: 0x6ddeaa20, 0x3bc1f: 0x6ddeac20,\n\t0x3bc20: 0x6ddeae20, 0x3bc21: 0x6ddeb020, 0x3bc22: 0x6ddeb220, 0x3bc23: 0x6ddeb420,\n\t0x3bc24: 0x6ddeb620, 0x3bc25: 0x6ddeb820, 0x3bc26: 0x6ddeba20, 0x3bc27: 0x6ddebc20,\n\t0x3bc28: 0x6ddebe20, 0x3bc29: 0x6ddec020, 0x3bc2a: 0x6ddec220, 0x3bc2b: 0x6ddec420,\n\t0x3bc2c: 0x6ddec620, 0x3bc2d: 0x6ddec820, 0x3bc2e: 0x6ddeca20, 0x3bc2f: 0x6ddecc20,\n\t0x3bc30: 0x6ddece20, 0x3bc31: 0x6dded020, 0x3bc32: 0x6dded220, 0x3bc33: 0x6dded420,\n\t0x3bc34: 0x6dded620, 0x3bc35: 0x6dded820, 0x3bc36: 0x6ddeda20, 0x3bc37: 0x6df6a020,\n\t0x3bc38: 0x6df6a220, 0x3bc39: 0x6df6a420, 0x3bc3a: 0x6df6a620, 0x3bc3b: 0x6df6a820,\n\t0x3bc3c: 0x6df6aa20, 0x3bc3d: 0x6df6ac20, 0x3bc3e: 0x6df6ae20, 0x3bc3f: 0x6df6b020,\n\t// Block 0xef1, offset 0x3bc40\n\t0x3bc40: 0x6df6b220, 0x3bc41: 0x6df6b420, 0x3bc42: 0x6df6b620, 0x3bc43: 0x6df6b820,\n\t0x3bc44: 0x6df6ba20, 0x3bc45: 0x6df6bc20, 0x3bc46: 0x6df6be20, 0x3bc47: 0x6df6c020,\n\t0x3bc48: 0x6df6c220, 0x3bc49: 0x6df6c420, 0x3bc4a: 0x6df6c620, 0x3bc4b: 0x6df6c820,\n\t0x3bc4c: 0x6df6ca20, 0x3bc4d: 0x6df6cc20, 0x3bc4e: 0x6df6ce20, 0x3bc4f: 0x6df6d020,\n\t0x3bc50: 0x6df6d220, 0x3bc51: 0x6df6d420, 0x3bc52: 0x6df6d620, 0x3bc53: 0x6df6d820,\n\t0x3bc54: 0x6df6da20, 0x3bc55: 0x6df6dc20, 0x3bc56: 0x6df6de20, 0x3bc57: 0x6df6e020,\n\t0x3bc58: 0x6df6e220, 0x3bc59: 0x6df6e420, 0x3bc5a: 0x6df6e620, 0x3bc5b: 0x6df6e820,\n\t0x3bc5c: 0x6df6ea20, 0x3bc5d: 0x6df6ec20, 0x3bc5e: 0x6df6ee20, 0x3bc5f: 0x6df6f020,\n\t0x3bc60: 0x6df6f220, 0x3bc61: 0x6df6f420, 0x3bc62: 0x6df6f620, 0x3bc63: 0x6df6f820,\n\t0x3bc64: 0x6df6fa20, 0x3bc65: 0x6df6fc20, 0x3bc66: 0x6df6fe20, 0x3bc67: 0x6df70020,\n\t0x3bc68: 0x6df70220, 0x3bc69: 0x6df70420, 0x3bc6a: 0x6df70620, 0x3bc6b: 0x6df70820,\n\t0x3bc6c: 0x6df70a20, 0x3bc6d: 0x6df70c20, 0x3bc6e: 0x6df70e20, 0x3bc6f: 0x6df71020,\n\t0x3bc70: 0x6df71220, 0x3bc71: 0x6df71420, 0x3bc72: 0x6df71620, 0x3bc73: 0x6df71820,\n\t0x3bc74: 0x6df71a20, 0x3bc75: 0x6df71c20, 0x3bc76: 0x6e0a4420, 0x3bc77: 0x6e0a4620,\n\t0x3bc78: 0x6e0a4820, 0x3bc79: 0x6e0a4a20, 0x3bc7a: 0x6e0a4c20, 0x3bc7b: 0x6e0a4e20,\n\t0x3bc7c: 0x6e0a5020, 0x3bc7d: 0x6e0a5220, 0x3bc7e: 0x6e0a5420, 0x3bc7f: 0x6e0a5620,\n\t// Block 0xef2, offset 0x3bc80\n\t0x3bc80: 0x6e0a5820, 0x3bc81: 0x6e0a5a20, 0x3bc82: 0x6e0a5c20, 0x3bc83: 0x6e0a5e20,\n\t0x3bc84: 0x6e0a6020, 0x3bc85: 0x6e0a6220, 0x3bc86: 0x6e0a6420, 0x3bc87: 0x6e0a6620,\n\t0x3bc88: 0x6e0a6820, 0x3bc89: 0x6e0a6a20, 0x3bc8a: 0x6e0a6c20, 0x3bc8b: 0x6e0a6e20,\n\t0x3bc8c: 0x6e0a7020, 0x3bc8d: 0x6e0a7220, 0x3bc8e: 0x6e0a7420, 0x3bc8f: 0x6e0a7620,\n\t0x3bc90: 0x6e0a7820, 0x3bc91: 0x6e0a7a20, 0x3bc92: 0x6e0a7c20, 0x3bc93: 0x6e0a7e20,\n\t0x3bc94: 0x6e0a8020, 0x3bc95: 0x6e0a8220, 0x3bc96: 0x6e0a8420, 0x3bc97: 0x6e0a8620,\n\t0x3bc98: 0x6e0a8820, 0x3bc99: 0x6e0a8a20, 0x3bc9a: 0x6e0a8c20, 0x3bc9b: 0x6e0a8e20,\n\t0x3bc9c: 0x6e0a9020, 0x3bc9d: 0x6e0a9220, 0x3bc9e: 0x6e0a9420, 0x3bc9f: 0x6e0a9620,\n\t0x3bca0: 0x6e0a9820, 0x3bca1: 0x6e0a9a20, 0x3bca2: 0x6e0a9c20, 0x3bca3: 0x6e0a9e20,\n\t0x3bca4: 0x6e0aa020, 0x3bca5: 0x6e0aa220, 0x3bca6: 0x6e0aa420, 0x3bca7: 0x6e0aa620,\n\t0x3bca8: 0x6e0aa820, 0x3bca9: 0x6e0aaa20, 0x3bcaa: 0x6e0aac20, 0x3bcab: 0x6e0aae20,\n\t0x3bcac: 0x6e0ab020, 0x3bcad: 0x6e0ab220, 0x3bcae: 0x6e0ab420, 0x3bcaf: 0x6e0ab620,\n\t0x3bcb0: 0x6e0ab820, 0x3bcb1: 0x6e0aba20, 0x3bcb2: 0x6e0abc20, 0x3bcb3: 0x6e0abe20,\n\t0x3bcb4: 0x6e0ac020, 0x3bcb5: 0x6e0ac220, 0x3bcb6: 0x6e0ac420, 0x3bcb7: 0x6e0ac620,\n\t0x3bcb8: 0x6e0ac820, 0x3bcb9: 0x6e0aca20, 0x3bcba: 0x6e1a5420, 0x3bcbb: 0x6e1a5620,\n\t0x3bcbc: 0x6e1a5820, 0x3bcbd: 0x6e1a5a20, 0x3bcbe: 0x6e1a5c20, 0x3bcbf: 0x6e1a5e20,\n\t// Block 0xef3, offset 0x3bcc0\n\t0x3bcc0: 0x6e1a6020, 0x3bcc1: 0x6e1a6220, 0x3bcc2: 0x6e1a6420, 0x3bcc3: 0x6e1a6620,\n\t0x3bcc4: 0x6e1a6820, 0x3bcc5: 0x6e1a6a20, 0x3bcc6: 0x6e1a6c20, 0x3bcc7: 0x6e1a6e20,\n\t0x3bcc8: 0x6e1a7020, 0x3bcc9: 0x6e1a7220, 0x3bcca: 0x6e1a7420, 0x3bccb: 0x6e1a7620,\n\t0x3bccc: 0x6e1a7820, 0x3bccd: 0x6e1a7a20, 0x3bcce: 0x6e1a7c20, 0x3bccf: 0x6e1a7e20,\n\t0x3bcd0: 0x6e1a8020, 0x3bcd1: 0x6e1a8220, 0x3bcd2: 0x6e1a8420, 0x3bcd3: 0x6e1a8620,\n\t0x3bcd4: 0x6e1a8820, 0x3bcd5: 0x6e1a8a20, 0x3bcd6: 0x6e1a8c20, 0x3bcd7: 0x6e1a8e20,\n\t0x3bcd8: 0x6e1a9020, 0x3bcd9: 0x6e1a9220, 0x3bcda: 0x6e1a9420, 0x3bcdb: 0x6e1a9620,\n\t0x3bcdc: 0x6e1a9820, 0x3bcdd: 0x6e1a9a20, 0x3bcde: 0x6e1a9c20, 0x3bcdf: 0x6e1a9e20,\n\t0x3bce0: 0x6e1aa020, 0x3bce1: 0x6e1aa220, 0x3bce2: 0x6e1aa420, 0x3bce3: 0x6e1aa620,\n\t0x3bce4: 0x6e1aa820, 0x3bce5: 0x6e1aaa20, 0x3bce6: 0x6e1aac20, 0x3bce7: 0x6e1aae20,\n\t0x3bce8: 0x6e1ab020, 0x3bce9: 0x6e1ab220, 0x3bcea: 0x6e1ab420, 0x3bceb: 0x6e1ab620,\n\t0x3bcec: 0x6e1ab820, 0x3bced: 0x6e26a820, 0x3bcee: 0x6e26aa20, 0x3bcef: 0x6e26ac20,\n\t0x3bcf0: 0x6e26ae20, 0x3bcf1: 0x6e26b020, 0x3bcf2: 0x6e26b220, 0x3bcf3: 0x6e26b420,\n\t0x3bcf4: 0x6e26b620, 0x3bcf5: 0x6e26b820, 0x3bcf6: 0x6e26ba20, 0x3bcf7: 0x6e26bc20,\n\t0x3bcf8: 0x6e26be20, 0x3bcf9: 0x6e26c020, 0x3bcfa: 0x6e26c220, 0x3bcfb: 0x6e26c420,\n\t0x3bcfc: 0x6e26c620, 0x3bcfd: 0x6e26c820, 0x3bcfe: 0x6e26ca20, 0x3bcff: 0x6e26cc20,\n\t// Block 0xef4, offset 0x3bd00\n\t0x3bd00: 0x6e26ce20, 0x3bd01: 0x6e26d020, 0x3bd02: 0x6e26d220, 0x3bd03: 0x6e26d420,\n\t0x3bd04: 0x6e26d620, 0x3bd05: 0x6e26d820, 0x3bd06: 0x6e26da20, 0x3bd07: 0x6e26dc20,\n\t0x3bd08: 0x6e26de20, 0x3bd09: 0x6e26e020, 0x3bd0a: 0x6e26e220, 0x3bd0b: 0x6e26e420,\n\t0x3bd0c: 0x6e26e620, 0x3bd0d: 0x6e26e820, 0x3bd0e: 0x6e26ea20, 0x3bd0f: 0x6e26ec20,\n\t0x3bd10: 0x6e26ee20, 0x3bd11: 0x6e26f020, 0x3bd12: 0x6e26f220, 0x3bd13: 0x6e26f420,\n\t0x3bd14: 0x6e26f620, 0x3bd15: 0x6e26f820, 0x3bd16: 0x6e26fa20, 0x3bd17: 0x6e26fc20,\n\t0x3bd18: 0x6e26fe20, 0x3bd19: 0x6e270020, 0x3bd1a: 0x6e270220, 0x3bd1b: 0x6e270420,\n\t0x3bd1c: 0x6e270620, 0x3bd1d: 0x6e270820, 0x3bd1e: 0x6e270a20, 0x3bd1f: 0x6e270c20,\n\t0x3bd20: 0x6e270e20, 0x3bd21: 0x6e271020, 0x3bd22: 0x6e271220, 0x3bd23: 0x6e271420,\n\t0x3bd24: 0x6e271620, 0x3bd25: 0x6e271820, 0x3bd26: 0x6e271a20, 0x3bd27: 0x6e271c20,\n\t0x3bd28: 0x6e271e20, 0x3bd29: 0x6e272020, 0x3bd2a: 0x6e272220, 0x3bd2b: 0x6e272420,\n\t0x3bd2c: 0x6e272620, 0x3bd2d: 0x6e272820, 0x3bd2e: 0x6e272a20, 0x3bd2f: 0x6e302220,\n\t0x3bd30: 0x6e302420, 0x3bd31: 0x6e302620, 0x3bd32: 0x6e302820, 0x3bd33: 0x6e302a20,\n\t0x3bd34: 0x6e302c20, 0x3bd35: 0x6e302e20, 0x3bd36: 0x6e303020, 0x3bd37: 0x6e303220,\n\t0x3bd38: 0x6e303420, 0x3bd39: 0x6e303620, 0x3bd3a: 0x6e303820, 0x3bd3b: 0x6e303a20,\n\t0x3bd3c: 0x6e303c20, 0x3bd3d: 0x6e303e20, 0x3bd3e: 0x6e304020, 0x3bd3f: 0x6e304220,\n\t// Block 0xef5, offset 0x3bd40\n\t0x3bd40: 0x6e304420, 0x3bd41: 0x6e304620, 0x3bd42: 0x6e304820, 0x3bd43: 0x6e304a20,\n\t0x3bd44: 0x6e304c20, 0x3bd45: 0x6e304e20, 0x3bd46: 0x6e305020, 0x3bd47: 0x6e305220,\n\t0x3bd48: 0x6e305420, 0x3bd49: 0x6e305620, 0x3bd4a: 0x6e305820, 0x3bd4b: 0x6e305a20,\n\t0x3bd4c: 0x6e305c20, 0x3bd4d: 0x6e305e20, 0x3bd4e: 0x6e306020, 0x3bd4f: 0x6e306220,\n\t0x3bd50: 0x6e306420, 0x3bd51: 0x6e306620, 0x3bd52: 0x6e306820, 0x3bd53: 0x6e306a20,\n\t0x3bd54: 0x6e306c20, 0x3bd55: 0x6e306e20, 0x3bd56: 0x6e307020, 0x3bd57: 0x6e307220,\n\t0x3bd58: 0x6e307420, 0x3bd59: 0x6e307620, 0x3bd5a: 0x6e307820, 0x3bd5b: 0x6e307a20,\n\t0x3bd5c: 0x6e307c20, 0x3bd5d: 0x6e307e20, 0x3bd5e: 0x6e308020, 0x3bd5f: 0x6e308220,\n\t0x3bd60: 0x6e308420, 0x3bd61: 0x6e308620, 0x3bd62: 0x6e308820, 0x3bd63: 0x6e308a20,\n\t0x3bd64: 0x6e308c20, 0x3bd65: 0x6e308e20, 0x3bd66: 0x6e309020, 0x3bd67: 0x6e309220,\n\t0x3bd68: 0x6e309420, 0x3bd69: 0x6e309620, 0x3bd6a: 0x6e309820, 0x3bd6b: 0x6e309a20,\n\t0x3bd6c: 0x6e374020, 0x3bd6d: 0x6e309c20, 0x3bd6e: 0x6e374220, 0x3bd6f: 0x6e374420,\n\t0x3bd70: 0x6e374620, 0x3bd71: 0x6e374820, 0x3bd72: 0x6e374a20, 0x3bd73: 0x6e374c20,\n\t0x3bd74: 0x6e374e20, 0x3bd75: 0x6e375020, 0x3bd76: 0x6e375220, 0x3bd77: 0x6e375420,\n\t0x3bd78: 0x6e375620, 0x3bd79: 0x6e375820, 0x3bd7a: 0x6e375a20, 0x3bd7b: 0x6e375c20,\n\t0x3bd7c: 0x6e375e20, 0x3bd7d: 0x6e376020, 0x3bd7e: 0x6e376220, 0x3bd7f: 0x6e376420,\n\t// Block 0xef6, offset 0x3bd80\n\t0x3bd80: 0x6e376620, 0x3bd81: 0x6e376820, 0x3bd82: 0x6e376a20, 0x3bd83: 0x6e376c20,\n\t0x3bd84: 0x6e376e20, 0x3bd85: 0x6e377020, 0x3bd86: 0x6e377220, 0x3bd87: 0x6e377420,\n\t0x3bd88: 0x6e377620, 0x3bd89: 0x6e377820, 0x3bd8a: 0x6e377a20, 0x3bd8b: 0x6e377c20,\n\t0x3bd8c: 0x6e377e20, 0x3bd8d: 0x6e378020, 0x3bd8e: 0x6e378220, 0x3bd8f: 0x6e378420,\n\t0x3bd90: 0x6e378620, 0x3bd91: 0x6e3bfa20, 0x3bd92: 0x6e3bfc20, 0x3bd93: 0x6e3bfe20,\n\t0x3bd94: 0x6e3c0020, 0x3bd95: 0x6e3c0220, 0x3bd96: 0x6e3c0420, 0x3bd97: 0x6e3c0620,\n\t0x3bd98: 0x6e3c0820, 0x3bd99: 0x6e3c0a20, 0x3bd9a: 0x6e3c0c20, 0x3bd9b: 0x6e3c0e20,\n\t0x3bd9c: 0x6e3c1020, 0x3bd9d: 0x6e3c1220, 0x3bd9e: 0x6e3c8020, 0x3bd9f: 0x6e3c1420,\n\t0x3bda0: 0x6e3c1620, 0x3bda1: 0x6e3c1820, 0x3bda2: 0x6e3c1a20, 0x3bda3: 0x6e3c1c20,\n\t0x3bda4: 0x6e3c1e20, 0x3bda5: 0x6e3c2020, 0x3bda6: 0x6e3c2220, 0x3bda7: 0x6e3c2420,\n\t0x3bda8: 0x6e3c2620, 0x3bda9: 0x6e3c2820, 0x3bdaa: 0x6e3c2a20, 0x3bdab: 0x6e3c2c20,\n\t0x3bdac: 0x6e3c2e20, 0x3bdad: 0x6e3f8c20, 0x3bdae: 0x6e3f8e20, 0x3bdaf: 0x6e3f9020,\n\t0x3bdb0: 0x6e3f9220, 0x3bdb1: 0x6e3f9420, 0x3bdb2: 0x6e3f9620, 0x3bdb3: 0x6e3f9820,\n\t0x3bdb4: 0x6e3f9a20, 0x3bdb5: 0x6e3f9c20, 0x3bdb6: 0x6e3f9e20, 0x3bdb7: 0x6e3fa020,\n\t0x3bdb8: 0x6e3fa220, 0x3bdb9: 0x6e3fa420, 0x3bdba: 0x6e3fa620, 0x3bdbb: 0x6e3fa820,\n\t0x3bdbc: 0x6e3faa20, 0x3bdbd: 0x6e3fac20, 0x3bdbe: 0x6e3fae20, 0x3bdbf: 0x6e3fb020,\n\t// Block 0xef7, offset 0x3bdc0\n\t0x3bdc0: 0x6e3fb220, 0x3bdc1: 0x6e3fb420, 0x3bdc2: 0x6e3fb620, 0x3bdc3: 0x6e420020,\n\t0x3bdc4: 0x6e420220, 0x3bdc5: 0x6e420420, 0x3bdc6: 0x6e420620, 0x3bdc7: 0x6e420820,\n\t0x3bdc8: 0x6e420a20, 0x3bdc9: 0x6e420c20, 0x3bdca: 0x6e420e20, 0x3bdcb: 0x6e421020,\n\t0x3bdcc: 0x6e421220, 0x3bdcd: 0x6e421420, 0x3bdce: 0x6e421620, 0x3bdcf: 0x6e421820,\n\t0x3bdd0: 0x6e421a20, 0x3bdd1: 0x6e421c20, 0x3bdd2: 0x6e421e20, 0x3bdd3: 0x6e422020,\n\t0x3bdd4: 0x6e422220, 0x3bdd5: 0x6e422420, 0x3bdd6: 0x6e422620, 0x3bdd7: 0x6e422820,\n\t0x3bdd8: 0x6e43c620, 0x3bdd9: 0x6e43c820, 0x3bdda: 0x6e43ca20, 0x3bddb: 0x6e43cc20,\n\t0x3bddc: 0x6e43ce20, 0x3bddd: 0x6e43d020, 0x3bdde: 0x6e43d220, 0x3bddf: 0x6e43d420,\n\t0x3bde0: 0x6e43d620, 0x3bde1: 0x6e43d820, 0x3bde2: 0x6e43da20, 0x3bde3: 0x6e43dc20,\n\t0x3bde4: 0x6e43de20, 0x3bde5: 0x6e44ea20, 0x3bde6: 0x6e44ec20, 0x3bde7: 0x6e44ee20,\n\t0x3bde8: 0x6e44f020, 0x3bde9: 0x6e44f220, 0x3bdea: 0x6e44f420, 0x3bdeb: 0x6e44f620,\n\t0x3bdec: 0x6e44f820, 0x3bded: 0x6e44fa20, 0x3bdee: 0x6e459220, 0x3bdef: 0x6e459420,\n\t0x3bdf0: 0x6e459620, 0x3bdf1: 0x6e459820, 0x3bdf2: 0x6e459a20, 0x3bdf3: 0x6e459c20,\n\t0x3bdf4: 0x6e460220, 0x3bdf5: 0x6e460420, 0x3bdf6: 0x6e460620, 0x3bdf7: 0x6e460820,\n\t0x3bdf8: 0x6e466420, 0x3bdf9: 0x6e466620, 0x3bdfa: 0x6e466820, 0x3bdfb: 0x6e469c20,\n\t0x3bdfc: 0x6e469e20, 0x3bdfd: 0x6e46a020, 0x3bdfe: 0x6e46d620, 0x3bdff: 0x6e46f620,\n\t// Block 0xef8, offset 0x3be00\n\t0x3be00: 0x6e46f820, 0x3be01: 0x6c63b820, 0x3be02: 0x6c63ba20, 0x3be03: 0x6c63bc20,\n\t0x3be04: 0x6c8ade20, 0x3be05: 0x6cb76820, 0x3be06: 0x6cb76a20, 0x3be07: 0x6cb76c20,\n\t0x3be08: 0x6cb76e20, 0x3be09: 0x6cb77020, 0x3be0a: 0x6cb77220, 0x3be0b: 0x6cb77420,\n\t0x3be0c: 0x6ce8a220, 0x3be0d: 0x6ce8a420, 0x3be0e: 0x6d184820, 0x3be0f: 0x6d473420,\n\t0x3be10: 0x6d473620, 0x3be11: 0x6d74f220, 0x3be12: 0x6d74f420, 0x3be13: 0x6d74f620,\n\t0x3be14: 0x6d74f820, 0x3be15: 0x6e0ad620, 0x3be16: 0x6d474620, 0x3be17: 0x6d474820,\n\t0x3be18: 0x6d750220, 0x3be19: 0x6d750420, 0x3be1a: 0x6d750620, 0x3be1b: 0x6d750820,\n\t0x3be1c: 0x6d9ecc20, 0x3be1d: 0x6d9ece20, 0x3be1e: 0x6d9ed020, 0x3be1f: 0x6d9ed220,\n\t0x3be20: 0x6d9ed420, 0x3be21: 0x6d9ed620, 0x3be22: 0x6dc14420, 0x3be23: 0x6ddef220,\n\t0x3be24: 0x6ddef420, 0x3be25: 0x6ddef620, 0x3be26: 0x6df73820, 0x3be27: 0x6df73a20,\n\t0x3be28: 0x6df73c20, 0x3be29: 0x6df73e20, 0x3be2a: 0x6df74020, 0x3be2b: 0x6df74220,\n\t0x3be2c: 0x6df74420, 0x3be2d: 0x6e0ada20, 0x3be2e: 0x6e0adc20, 0x3be2f: 0x6e0ade20,\n\t0x3be30: 0x6e0ae020, 0x3be31: 0x6e0ae220, 0x3be32: 0x6e0ae420, 0x3be33: 0x6e0ae620,\n\t0x3be34: 0x6e0ae820, 0x3be35: 0x6e1aca20, 0x3be36: 0x6e1acc20, 0x3be37: 0x6e1ace20,\n\t0x3be38: 0x6e1ad020, 0x3be39: 0x6e1ad220, 0x3be3a: 0x6e273820, 0x3be3b: 0x6e273a20,\n\t0x3be3c: 0x6e273c20, 0x3be3d: 0x6e273e20, 0x3be3e: 0x6e274020, 0x3be3f: 0x6e30aa20,\n\t// Block 0xef9, offset 0x3be40\n\t0x3be40: 0x6e30ac20, 0x3be41: 0x6e30ae20, 0x3be42: 0x6e30b020, 0x3be43: 0x6e379020,\n\t0x3be44: 0x6e379220, 0x3be45: 0x6e379420, 0x3be46: 0x6e3c3420, 0x3be47: 0x6e3c3620,\n\t0x3be48: 0x6e3fba20, 0x3be49: 0x6e422a20, 0x3be4a: 0x6e43e020, 0x3be4b: 0x6d185c20,\n\t0x3be4c: 0x6d185e20, 0x3be4d: 0x6d474c20, 0x3be4e: 0x6d474e20, 0x3be4f: 0x6d751620,\n\t0x3be50: 0x6d751820, 0x3be51: 0x6d751a20, 0x3be52: 0x6d751c20, 0x3be53: 0x6d751e20,\n\t0x3be54: 0x6d752020, 0x3be55: 0x6d752220, 0x3be56: 0x6d752420, 0x3be57: 0x6d752620,\n\t0x3be58: 0x6d752820, 0x3be59: 0x6d752a20, 0x3be5a: 0x6d752c20, 0x3be5b: 0x6d9eea20,\n\t0x3be5c: 0x6d9eec20, 0x3be5d: 0x6d9eee20, 0x3be5e: 0x6d9ef020, 0x3be5f: 0x6d9ef220,\n\t0x3be60: 0x6d9ef420, 0x3be61: 0x6d9ef620, 0x3be62: 0x6d9ef820, 0x3be63: 0x6d9efa20,\n\t0x3be64: 0x6d9efc20, 0x3be65: 0x6dc14e20, 0x3be66: 0x6dc15020, 0x3be67: 0x6dc15220,\n\t0x3be68: 0x6dc15420, 0x3be69: 0x6dc15620, 0x3be6a: 0x6dc15820, 0x3be6b: 0x6dc15a20,\n\t0x3be6c: 0x6dc15c20, 0x3be6d: 0x6dc15e20, 0x3be6e: 0x6dc16020, 0x3be6f: 0x6dc16220,\n\t0x3be70: 0x6dc16420, 0x3be71: 0x6dc16620, 0x3be72: 0x6dc16820, 0x3be73: 0x6dc16a20,\n\t0x3be74: 0x6ddf0620, 0x3be75: 0x6ddf0820, 0x3be76: 0x6ddf0a20, 0x3be77: 0x6ddf0c20,\n\t0x3be78: 0x6ddf0e20, 0x3be79: 0x6ddf1020, 0x3be7a: 0x6ddf1220, 0x3be7b: 0x6ddf1420,\n\t0x3be7c: 0x6ddf1620, 0x3be7d: 0x6ddf1820, 0x3be7e: 0x6ddf1a20, 0x3be7f: 0x6ddf1c20,\n\t// Block 0xefa, offset 0x3be80\n\t0x3be80: 0x6ddf1e20, 0x3be81: 0x6ddf2020, 0x3be82: 0x6ddf2220, 0x3be83: 0x6ddf2420,\n\t0x3be84: 0x6df75620, 0x3be85: 0x6df75820, 0x3be86: 0x6df75a20, 0x3be87: 0x6df75c20,\n\t0x3be88: 0x6df75e20, 0x3be89: 0x6df76020, 0x3be8a: 0x6df76220, 0x3be8b: 0x6df76420,\n\t0x3be8c: 0x6df76620, 0x3be8d: 0x6df76820, 0x3be8e: 0x6e0af420, 0x3be8f: 0x6e0af620,\n\t0x3be90: 0x6e0af820, 0x3be91: 0x6e0afa20, 0x3be92: 0x6e0afc20, 0x3be93: 0x6e0afe20,\n\t0x3be94: 0x6e0b0020, 0x3be95: 0x6e0b0220, 0x3be96: 0x6e0b0420, 0x3be97: 0x6e1ada20,\n\t0x3be98: 0x6e1adc20, 0x3be99: 0x6e1ade20, 0x3be9a: 0x6e1ae020, 0x3be9b: 0x6e1ae220,\n\t0x3be9c: 0x6e274620, 0x3be9d: 0x6e274820, 0x3be9e: 0x6e274a20, 0x3be9f: 0x6e274c20,\n\t0x3bea0: 0x6e274e20, 0x3bea1: 0x6e30b420, 0x3bea2: 0x6e30b620, 0x3bea3: 0x6e30b820,\n\t0x3bea4: 0x6e30ba20, 0x3bea5: 0x6e30bc20, 0x3bea6: 0x6e30be20, 0x3bea7: 0x6e30c020,\n\t0x3bea8: 0x6e30c220, 0x3bea9: 0x6e30c420, 0x3beaa: 0x6e379c20, 0x3beab: 0x6e379e20,\n\t0x3beac: 0x6e37a020, 0x3bead: 0x6e37a220, 0x3beae: 0x6e3c3a20, 0x3beaf: 0x6e3c3c20,\n\t0x3beb0: 0x6e3c3e20, 0x3beb1: 0x6e3c4020, 0x3beb2: 0x6e3c4220, 0x3beb3: 0x6e3c4420,\n\t0x3beb4: 0x6e3c4620, 0x3beb5: 0x6e422c20, 0x3beb6: 0x6e43e420, 0x3beb7: 0x6e43e620,\n\t0x3beb8: 0x6e44fc20, 0x3beb9: 0x6e460c20, 0x3beba: 0x6e46d820, 0x3bebb: 0x6e46fa20,\n\t0x3bebc: 0x6d186220, 0x3bebd: 0x6d186420, 0x3bebe: 0x6d186620, 0x3bebf: 0x6d186820,\n\t// Block 0xefb, offset 0x3bec0\n\t0x3bec0: 0x6d186a20, 0x3bec1: 0x6d475820, 0x3bec2: 0x6d475a20, 0x3bec3: 0x6d475c20,\n\t0x3bec4: 0x6d475e20, 0x3bec5: 0x6d753c20, 0x3bec6: 0x6d753e20, 0x3bec7: 0x6d754020,\n\t0x3bec8: 0x6d754220, 0x3bec9: 0x6d754420, 0x3beca: 0x6d754620, 0x3becb: 0x6d754820,\n\t0x3becc: 0x6d754a20, 0x3becd: 0x6d754c20, 0x3bece: 0x6d754e20, 0x3becf: 0x6d755020,\n\t0x3bed0: 0x6d755220, 0x3bed1: 0x6d755420, 0x3bed2: 0x6d755620, 0x3bed3: 0x6d755820,\n\t0x3bed4: 0x6d9f0c20, 0x3bed5: 0x6d9f0e20, 0x3bed6: 0x6d9f1020, 0x3bed7: 0x6d9f1220,\n\t0x3bed8: 0x6d9f1420, 0x3bed9: 0x6d9f1620, 0x3beda: 0x6d9f1820, 0x3bedb: 0x6cbd9220,\n\t0x3bedc: 0x6d9f1a20, 0x3bedd: 0x6d9f1c20, 0x3bede: 0x6d9f1e20, 0x3bedf: 0x6d9f2020,\n\t0x3bee0: 0x6d9f2220, 0x3bee1: 0x6d9f2420, 0x3bee2: 0x6dc17420, 0x3bee3: 0x6dc17620,\n\t0x3bee4: 0x6dc17820, 0x3bee5: 0x6dc17a20, 0x3bee6: 0x6dc17c20, 0x3bee7: 0x6dc17e20,\n\t0x3bee8: 0x6dc18020, 0x3bee9: 0x6dc18220, 0x3beea: 0x6dc18420, 0x3beeb: 0x6dc18620,\n\t0x3beec: 0x6dc18820, 0x3beed: 0x6ddf3220, 0x3beee: 0x6ddf3420, 0x3beef: 0x6ddf3620,\n\t0x3bef0: 0x6ddf3820, 0x3bef1: 0x6ddf3a20, 0x3bef2: 0x6ddf3c20, 0x3bef3: 0x6ddf3e20,\n\t0x3bef4: 0x6ddf4020, 0x3bef5: 0x6ddf4220, 0x3bef6: 0x6ddf4420, 0x3bef7: 0x6ddf4620,\n\t0x3bef8: 0x6ddf4820, 0x3bef9: 0x6ddf4a20, 0x3befa: 0x6ddf4c20, 0x3befb: 0x6ddf4e20,\n\t0x3befc: 0x6df77820, 0x3befd: 0x6df77a20, 0x3befe: 0x6df77c20, 0x3beff: 0x6df77e20,\n\t// Block 0xefc, offset 0x3bf00\n\t0x3bf00: 0x6df78020, 0x3bf01: 0x6df78220, 0x3bf02: 0x6df78420, 0x3bf03: 0x6df78620,\n\t0x3bf04: 0x6df78820, 0x3bf05: 0x6df78a20, 0x3bf06: 0x6df78c20, 0x3bf07: 0x6df78e20,\n\t0x3bf08: 0x6df79020, 0x3bf09: 0x6df79220, 0x3bf0a: 0x6df79420, 0x3bf0b: 0x6df79620,\n\t0x3bf0c: 0x6e0b0820, 0x3bf0d: 0x6e0b0a20, 0x3bf0e: 0x6e0b0c20, 0x3bf0f: 0x6e0b0e20,\n\t0x3bf10: 0x6e0b1020, 0x3bf11: 0x6e0b1220, 0x3bf12: 0x6e0b1420, 0x3bf13: 0x6e0b1620,\n\t0x3bf14: 0x6e0b1820, 0x3bf15: 0x6e0b1a20, 0x3bf16: 0x6e0b1c20, 0x3bf17: 0x6e0b1e20,\n\t0x3bf18: 0x6e0b2020, 0x3bf19: 0x6e0b2220, 0x3bf1a: 0x6e0b2420, 0x3bf1b: 0x6e1aea20,\n\t0x3bf1c: 0x6e1aec20, 0x3bf1d: 0x6e1aee20, 0x3bf1e: 0x6e1af020, 0x3bf1f: 0x6e1af220,\n\t0x3bf20: 0x6e1af420, 0x3bf21: 0x6e1af620, 0x3bf22: 0x6e1af820, 0x3bf23: 0x6e275820,\n\t0x3bf24: 0x6e275a20, 0x3bf25: 0x6e275c20, 0x3bf26: 0x6e275e20, 0x3bf27: 0x6e276020,\n\t0x3bf28: 0x6e276220, 0x3bf29: 0x6e276420, 0x3bf2a: 0x6e276620, 0x3bf2b: 0x6e276820,\n\t0x3bf2c: 0x6e276a20, 0x3bf2d: 0x6e276c20, 0x3bf2e: 0x6e276e20, 0x3bf2f: 0x6e277020,\n\t0x3bf30: 0x6e277220, 0x3bf31: 0x6e277420, 0x3bf32: 0x6e30ca20, 0x3bf33: 0x6e30cc20,\n\t0x3bf34: 0x6e30ce20, 0x3bf35: 0x6e30d020, 0x3bf36: 0x6e30d220, 0x3bf37: 0x6e30d420,\n\t0x3bf38: 0x6e37a620, 0x3bf39: 0x6e37a820, 0x3bf3a: 0x6e37aa20, 0x3bf3b: 0x6e37ac20,\n\t0x3bf3c: 0x6e37ae20, 0x3bf3d: 0x6e37b020, 0x3bf3e: 0x6e37b220, 0x3bf3f: 0x6e3fbc20,\n\t// Block 0xefd, offset 0x3bf40\n\t0x3bf40: 0x6e3fbe20, 0x3bf41: 0x6e422e20, 0x3bf42: 0x6e423020, 0x3bf43: 0x6e43e820,\n\t0x3bf44: 0x6e43ea20, 0x3bf45: 0x6e43ec20, 0x3bf46: 0x6e45a020, 0x3bf47: 0x6e460e20,\n\t0x3bf48: 0x6c8aec20, 0x3bf49: 0x6cb78e20, 0x3bf4a: 0x6cb79020, 0x3bf4b: 0x6ce8b020,\n\t0x3bf4c: 0x6d476020, 0x3bf4d: 0x6c63ca20, 0x3bf4e: 0x6d755c20, 0x3bf4f: 0x6d755e20,\n\t0x3bf50: 0x6ddf5020, 0x3bf51: 0x6d186c20, 0x3bf52: 0x6d476820, 0x3bf53: 0x6d476a20,\n\t0x3bf54: 0x6d476c20, 0x3bf55: 0x6d756620, 0x3bf56: 0x6d756820, 0x3bf57: 0x6d756a20,\n\t0x3bf58: 0x6d756c20, 0x3bf59: 0x6d756e20, 0x3bf5a: 0x6d757020, 0x3bf5b: 0x6d9f2820,\n\t0x3bf5c: 0x6d9f2a20, 0x3bf5d: 0x6d9f2c20, 0x3bf5e: 0x6d9f2e20, 0x3bf5f: 0x6d9f3020,\n\t0x3bf60: 0x6dc18c20, 0x3bf61: 0x6dc18e20, 0x3bf62: 0x6dc19020, 0x3bf63: 0x6ddf5420,\n\t0x3bf64: 0x6ddf5620, 0x3bf65: 0x6df79c20, 0x3bf66: 0x6df79e20, 0x3bf67: 0x6df7a020,\n\t0x3bf68: 0x6e0b2c20, 0x3bf69: 0x6e0b2e20, 0x3bf6a: 0x6e1afa20, 0x3bf6b: 0x6e1afc20,\n\t0x3bf6c: 0x6e277620, 0x3bf6d: 0x6e30d620, 0x3bf6e: 0x6e30d820, 0x3bf6f: 0x6e30da20,\n\t0x3bf70: 0x6e37b420, 0x3bf71: 0x6e3c4a20, 0x3bf72: 0x6e461020, 0x3bf73: 0x6d186e20,\n\t0x3bf74: 0x6d476e20, 0x3bf75: 0x6d757220, 0x3bf76: 0x6d757420, 0x3bf77: 0x6d757620,\n\t0x3bf78: 0x6d757820, 0x3bf79: 0x6d757a20, 0x3bf7a: 0x6d9f3820, 0x3bf7b: 0x6dc19a20,\n\t0x3bf7c: 0x6dc19c20, 0x3bf7d: 0x6dc19e20, 0x3bf7e: 0x6dc1a020, 0x3bf7f: 0x6dc1a220,\n\t// Block 0xefe, offset 0x3bf80\n\t0x3bf80: 0x6dc1a420, 0x3bf81: 0x6dc1a620, 0x3bf82: 0x6ddf5e20, 0x3bf83: 0x6ddf6020,\n\t0x3bf84: 0x6ddf6220, 0x3bf85: 0x6ddf6420, 0x3bf86: 0x6df7a620, 0x3bf87: 0x6df7a820,\n\t0x3bf88: 0x6df7aa20, 0x3bf89: 0x6df7ac20, 0x3bf8a: 0x6df7ae20, 0x3bf8b: 0x6df7b020,\n\t0x3bf8c: 0x6df7b220, 0x3bf8d: 0x6df7b420, 0x3bf8e: 0x6df7b620, 0x3bf8f: 0x6df7b820,\n\t0x3bf90: 0x6df7ba20, 0x3bf91: 0x6df7bc20, 0x3bf92: 0x6df7be20, 0x3bf93: 0x6e0b3220,\n\t0x3bf94: 0x6e0b3420, 0x3bf95: 0x6e0b3620, 0x3bf96: 0x6e0b3820, 0x3bf97: 0x6e0b3a20,\n\t0x3bf98: 0x6e0b3c20, 0x3bf99: 0x6e1b0020, 0x3bf9a: 0x6e1b0220, 0x3bf9b: 0x6e1b0420,\n\t0x3bf9c: 0x6e1b0620, 0x3bf9d: 0x6e1b0820, 0x3bf9e: 0x6e1b0a20, 0x3bf9f: 0x6e277820,\n\t0x3bfa0: 0x6e277a20, 0x3bfa1: 0x6e277c20, 0x3bfa2: 0x6e277e20, 0x3bfa3: 0x6e278020,\n\t0x3bfa4: 0x6e30e020, 0x3bfa5: 0x6e30e220, 0x3bfa6: 0x6e30e420, 0x3bfa7: 0x6e37b820,\n\t0x3bfa8: 0x6e37ba20, 0x3bfa9: 0x6e37bc20, 0x3bfaa: 0x6e3fc020, 0x3bfab: 0x6e423220,\n\t0x3bfac: 0x6e461220, 0x3bfad: 0x6d477020, 0x3bfae: 0x6d758220, 0x3bfaf: 0x6d758420,\n\t0x3bfb0: 0x6d9f3e20, 0x3bfb1: 0x6d9f4020, 0x3bfb2: 0x6d9f4220, 0x3bfb3: 0x6d9f4420,\n\t0x3bfb4: 0x6d9f4620, 0x3bfb5: 0x6d9f4820, 0x3bfb6: 0x6dc1aa20, 0x3bfb7: 0x6dc1ac20,\n\t0x3bfb8: 0x6dc1ae20, 0x3bfb9: 0x6dc1b020, 0x3bfba: 0x6dc1b220, 0x3bfbb: 0x6dc1b420,\n\t0x3bfbc: 0x6dc1b620, 0x3bfbd: 0x6dc1b820, 0x3bfbe: 0x6dc1ba20, 0x3bfbf: 0x6ddf6620,\n\t// Block 0xeff, offset 0x3bfc0\n\t0x3bfc0: 0x6ddf6820, 0x3bfc1: 0x6df7c020, 0x3bfc2: 0x6e0b4420, 0x3bfc3: 0x6e0b4620,\n\t0x3bfc4: 0x6e0b4820, 0x3bfc5: 0x6e0b4a20, 0x3bfc6: 0x6e0b4c20, 0x3bfc7: 0x6e1b1220,\n\t0x3bfc8: 0x6e1b1420, 0x3bfc9: 0x6e1b1620, 0x3bfca: 0x6e1b1820, 0x3bfcb: 0x6e278620,\n\t0x3bfcc: 0x6e30e820, 0x3bfcd: 0x6e30ea20, 0x3bfce: 0x6e30ec20, 0x3bfcf: 0x6e30ee20,\n\t0x3bfd0: 0x6e37be20, 0x3bfd1: 0x6e3fc220, 0x3bfd2: 0x6e3c5020, 0x3bfd3: 0x6e3fc420,\n\t0x3bfd4: 0x6e43ee20, 0x3bfd5: 0x6e43f020, 0x3bfd6: 0x6e43f220, 0x3bfd7: 0x6ce8bc20,\n\t0x3bfd8: 0x6d187220, 0x3bfd9: 0x6d477420, 0x3bfda: 0x6d477620, 0x3bfdb: 0x6d477820,\n\t0x3bfdc: 0x6d758c20, 0x3bfdd: 0x6d758e20, 0x3bfde: 0x6d759020, 0x3bfdf: 0x6d759220,\n\t0x3bfe0: 0x6d759420, 0x3bfe1: 0x6d759620, 0x3bfe2: 0x6d759820, 0x3bfe3: 0x6d759a20,\n\t0x3bfe4: 0x6d9f5620, 0x3bfe5: 0x6d9f5820, 0x3bfe6: 0x6d9f5a20, 0x3bfe7: 0x6d9f5c20,\n\t0x3bfe8: 0x6d9f5e20, 0x3bfe9: 0x6d9f6020, 0x3bfea: 0x6d9f6220, 0x3bfeb: 0x6d9f6420,\n\t0x3bfec: 0x6d9f6620, 0x3bfed: 0x6d9f6820, 0x3bfee: 0x6d9f6a20, 0x3bfef: 0x6d9f6c20,\n\t0x3bff0: 0x6d9f6e20, 0x3bff1: 0x6d9f7020, 0x3bff2: 0x6dc1cc20, 0x3bff3: 0x6dc1ce20,\n\t0x3bff4: 0x6dc1d020, 0x3bff5: 0x6dc1d220, 0x3bff6: 0x6dc1d420, 0x3bff7: 0x6dc1d620,\n\t0x3bff8: 0x6dc1d820, 0x3bff9: 0x6dc1da20, 0x3bffa: 0x6dc1dc20, 0x3bffb: 0x6dc1de20,\n\t0x3bffc: 0x6dc1e020, 0x3bffd: 0x6dc1e220, 0x3bffe: 0x6dc1e420, 0x3bfff: 0x6ddf7820,\n\t// Block 0xf00, offset 0x3c000\n\t0x3c000: 0x6ddf7a20, 0x3c001: 0x6ddf7c20, 0x3c002: 0x6ddf7e20, 0x3c003: 0x6ddf8020,\n\t0x3c004: 0x6ddf8220, 0x3c005: 0x6ddf8420, 0x3c006: 0x6ddf8620, 0x3c007: 0x6ddf8820,\n\t0x3c008: 0x6df7cc20, 0x3c009: 0x6df7ce20, 0x3c00a: 0x6df7d020, 0x3c00b: 0x6df7d220,\n\t0x3c00c: 0x6df7d420, 0x3c00d: 0x6df7d620, 0x3c00e: 0x6df7d820, 0x3c00f: 0x6df7da20,\n\t0x3c010: 0x6df7dc20, 0x3c011: 0x6df7de20, 0x3c012: 0x6e0b6220, 0x3c013: 0x6e0b6420,\n\t0x3c014: 0x6e0b6620, 0x3c015: 0x6e0b6820, 0x3c016: 0x6e0b6a20, 0x3c017: 0x6e0b6c20,\n\t0x3c018: 0x6e0b6e20, 0x3c019: 0x6e0b7020, 0x3c01a: 0x6e0b7220, 0x3c01b: 0x6e0b7420,\n\t0x3c01c: 0x6e0b7620, 0x3c01d: 0x6e0b7820, 0x3c01e: 0x6e0b7a20, 0x3c01f: 0x6e0b7c20,\n\t0x3c020: 0x6e0b7e20, 0x3c021: 0x6e0b8020, 0x3c022: 0x6e0b8220, 0x3c023: 0x6e1b2a20,\n\t0x3c024: 0x6e0b8420, 0x3c025: 0x6e1b2c20, 0x3c026: 0x6e1b2e20, 0x3c027: 0x6e1b3020,\n\t0x3c028: 0x6e1b3220, 0x3c029: 0x6e1b3420, 0x3c02a: 0x6e1b3620, 0x3c02b: 0x6e1b3820,\n\t0x3c02c: 0x6e1b3a20, 0x3c02d: 0x6e1b3c20, 0x3c02e: 0x6e1b3e20, 0x3c02f: 0x6e1b4020,\n\t0x3c030: 0x6e1b4220, 0x3c031: 0x6e1b4420, 0x3c032: 0x6e1b4620, 0x3c033: 0x6e1b4820,\n\t0x3c034: 0x6e1b4a20, 0x3c035: 0x6e1b4c20, 0x3c036: 0x6e1b4e20, 0x3c037: 0x6e1b5020,\n\t0x3c038: 0x6e1b5220, 0x3c039: 0x6e1b5420, 0x3c03a: 0x6e1b5620, 0x3c03b: 0x6e1b5820,\n\t0x3c03c: 0x6e1b5a20, 0x3c03d: 0x6e1b5c20, 0x3c03e: 0x6e278c20, 0x3c03f: 0x6e278e20,\n\t// Block 0xf01, offset 0x3c040\n\t0x3c040: 0x6e279020, 0x3c041: 0x6e279220, 0x3c042: 0x6e279420, 0x3c043: 0x6e279620,\n\t0x3c044: 0x6e279820, 0x3c045: 0x6e279a20, 0x3c046: 0x6e279c20, 0x3c047: 0x6e279e20,\n\t0x3c048: 0x6e27a020, 0x3c049: 0x6e27a220, 0x3c04a: 0x6e27a420, 0x3c04b: 0x6e27a620,\n\t0x3c04c: 0x6e27a820, 0x3c04d: 0x6e27aa20, 0x3c04e: 0x6e27ac20, 0x3c04f: 0x6e30f820,\n\t0x3c050: 0x6e30fa20, 0x3c051: 0x6e30fc20, 0x3c052: 0x6e30fe20, 0x3c053: 0x6e310020,\n\t0x3c054: 0x6e310220, 0x3c055: 0x6e310420, 0x3c056: 0x6e310620, 0x3c057: 0x6e310820,\n\t0x3c058: 0x6e37c220, 0x3c059: 0x6e37c420, 0x3c05a: 0x6e37c620, 0x3c05b: 0x6e37c820,\n\t0x3c05c: 0x6e37ca20, 0x3c05d: 0x6e37cc20, 0x3c05e: 0x6e37ce20, 0x3c05f: 0x6e37d020,\n\t0x3c060: 0x6e37d220, 0x3c061: 0x6e37d420, 0x3c062: 0x6e37d620, 0x3c063: 0x6e37d820,\n\t0x3c064: 0x6e37da20, 0x3c065: 0x6e37dc20, 0x3c066: 0x6e37de20, 0x3c067: 0x6e37e020,\n\t0x3c068: 0x6e37e220, 0x3c069: 0x6e3c5a20, 0x3c06a: 0x6e3c5c20, 0x3c06b: 0x6e3c5e20,\n\t0x3c06c: 0x6e3c6020, 0x3c06d: 0x6e3c6220, 0x3c06e: 0x6e3c6420, 0x3c06f: 0x6e3c6620,\n\t0x3c070: 0x6e3c6820, 0x3c071: 0x6e3c6a20, 0x3c072: 0x6e3c6c20, 0x3c073: 0x6e3c6e20,\n\t0x3c074: 0x6e3fca20, 0x3c075: 0x6e3fcc20, 0x3c076: 0x6e3fce20, 0x3c077: 0x6e3fd020,\n\t0x3c078: 0x6e3fd220, 0x3c079: 0x6e423620, 0x3c07a: 0x6e423820, 0x3c07b: 0x6e423a20,\n\t0x3c07c: 0x6e423c20, 0x3c07d: 0x6e423e20, 0x3c07e: 0x6e424020, 0x3c07f: 0x6e43f620,\n\t// Block 0xf02, offset 0x3c080\n\t0x3c080: 0x6e43f820, 0x3c081: 0x6e43fa20, 0x3c082: 0x6e43fc20, 0x3c083: 0x6e450020,\n\t0x3c084: 0x6e450220, 0x3c085: 0x6e45a220, 0x3c086: 0x6e45a420, 0x3c087: 0x6e466a20,\n\t0x3c088: 0x6e466c20, 0x3c089: 0x6e471c20, 0x3c08a: 0x6e472a20, 0x3c08b: 0x6ddf8a20,\n\t0x3c08c: 0x6e0b8a20, 0x3c08d: 0x6e1b6020, 0x3c08e: 0x6e1b6220, 0x3c08f: 0x6e1b6420,\n\t0x3c090: 0x6e310a20, 0x3c091: 0x6d477a20, 0x3c092: 0x6d759c20, 0x3c093: 0x6d759e20,\n\t0x3c094: 0x6dc1ea20, 0x3c095: 0x6dc1ec20, 0x3c096: 0x6dc1ee20, 0x3c097: 0x6dc1f020,\n\t0x3c098: 0x6dc1f220, 0x3c099: 0x6dc1f420, 0x3c09a: 0x6ddf9420, 0x3c09b: 0x6ddf9620,\n\t0x3c09c: 0x6ddf9820, 0x3c09d: 0x6ddf9a20, 0x3c09e: 0x6ddf9c20, 0x3c09f: 0x6ddf9e20,\n\t0x3c0a0: 0x6ddfa020, 0x3c0a1: 0x6df7e820, 0x3c0a2: 0x6df7ea20, 0x3c0a3: 0x6df7ec20,\n\t0x3c0a4: 0x6df7ee20, 0x3c0a5: 0x6df7f020, 0x3c0a6: 0x6df7f220, 0x3c0a7: 0x6e0b8c20,\n\t0x3c0a8: 0x6e0b8e20, 0x3c0a9: 0x6e0b9020, 0x3c0aa: 0x6e0b9220, 0x3c0ab: 0x6e0b9420,\n\t0x3c0ac: 0x6e1b6820, 0x3c0ad: 0x6e1b6a20, 0x3c0ae: 0x6e27b020, 0x3c0af: 0x6e27b220,\n\t0x3c0b0: 0x6e27b420, 0x3c0b1: 0x6e27b620, 0x3c0b2: 0x6e27b820, 0x3c0b3: 0x6e27ba20,\n\t0x3c0b4: 0x6e27bc20, 0x3c0b5: 0x6e27be20, 0x3c0b6: 0x6e27c020, 0x3c0b7: 0x6e311020,\n\t0x3c0b8: 0x6e311220, 0x3c0b9: 0x6e37e620, 0x3c0ba: 0x6e3c7420, 0x3c0bb: 0x6e3cd420,\n\t0x3c0bc: 0x6e3fd620, 0x3c0bd: 0x6e3c7620, 0x3c0be: 0x6e3fd820, 0x3c0bf: 0x6e424220,\n\t// Block 0xf03, offset 0x3c0c0\n\t0x3c0c0: 0x6e424420, 0x3c0c1: 0x6e43fe20, 0x3c0c2: 0x6ce8c220, 0x3c0c3: 0x6d477c20,\n\t0x3c0c4: 0x6d75a620, 0x3c0c5: 0x6d75a820, 0x3c0c6: 0x6d75aa20, 0x3c0c7: 0x6d9f7a20,\n\t0x3c0c8: 0x6ddfa220, 0x3c0c9: 0x6e27c220, 0x3c0ca: 0x6e424620, 0x3c0cb: 0x6d9f7c20,\n\t0x3c0cc: 0x6d9f7e20, 0x3c0cd: 0x6dc1fa20, 0x3c0ce: 0x6dc1fc20, 0x3c0cf: 0x6dc1fe20,\n\t0x3c0d0: 0x6ddfae20, 0x3c0d1: 0x6ddfb020, 0x3c0d2: 0x6ddfb220, 0x3c0d3: 0x6ddfb420,\n\t0x3c0d4: 0x6df7fa20, 0x3c0d5: 0x6df7fc20, 0x3c0d6: 0x6df7fe20, 0x3c0d7: 0x6df80020,\n\t0x3c0d8: 0x6df80220, 0x3c0d9: 0x6df80420, 0x3c0da: 0x6df80620, 0x3c0db: 0x6df80820,\n\t0x3c0dc: 0x6e0b9820, 0x3c0dd: 0x6e0b9a20, 0x3c0de: 0x6e0b9c20, 0x3c0df: 0x6e0b9e20,\n\t0x3c0e0: 0x6e0ba020, 0x3c0e1: 0x6e0ba220, 0x3c0e2: 0x6e1b7620, 0x3c0e3: 0x6e1b7820,\n\t0x3c0e4: 0x6e1b7a20, 0x3c0e5: 0x6e1b7c20, 0x3c0e6: 0x6e27c620, 0x3c0e7: 0x6e27c820,\n\t0x3c0e8: 0x6e27ca20, 0x3c0e9: 0x6e27cc20, 0x3c0ea: 0x6e27ce20, 0x3c0eb: 0x6e27d020,\n\t0x3c0ec: 0x6e27d220, 0x3c0ed: 0x6e27d420, 0x3c0ee: 0x6e311620, 0x3c0ef: 0x6e37ee20,\n\t0x3c0f0: 0x6e37f020, 0x3c0f1: 0x6e37f220, 0x3c0f2: 0x6e37f420, 0x3c0f3: 0x6e3c8220,\n\t0x3c0f4: 0x6e3c8420, 0x3c0f5: 0x6e3fdc20, 0x3c0f6: 0x6e424820, 0x3c0f7: 0x6e450620,\n\t0x3c0f8: 0x6d75ae20, 0x3c0f9: 0x6d75b020, 0x3c0fa: 0x6d9f8220, 0x3c0fb: 0x6d9f8420,\n\t0x3c0fc: 0x6d9f8620, 0x3c0fd: 0x6dc20820, 0x3c0fe: 0x6dc20a20, 0x3c0ff: 0x6dc20c20,\n\t// Block 0xf04, offset 0x3c100\n\t0x3c100: 0x6dc20e20, 0x3c101: 0x6dc21020, 0x3c102: 0x6dc21220, 0x3c103: 0x6dc21420,\n\t0x3c104: 0x6dc21620, 0x3c105: 0x6dc21820, 0x3c106: 0x6dc21a20, 0x3c107: 0x6dc21c20,\n\t0x3c108: 0x6dc21e20, 0x3c109: 0x6ddfc820, 0x3c10a: 0x6ddfca20, 0x3c10b: 0x6ddfcc20,\n\t0x3c10c: 0x6ddfce20, 0x3c10d: 0x6ddfd020, 0x3c10e: 0x6ddfd220, 0x3c10f: 0x6ddfd420,\n\t0x3c110: 0x6ddfd620, 0x3c111: 0x6ddfd820, 0x3c112: 0x6df80e20, 0x3c113: 0x6df81020,\n\t0x3c114: 0x6df81220, 0x3c115: 0x6df81420, 0x3c116: 0x6df81620, 0x3c117: 0x6df81820,\n\t0x3c118: 0x6df81a20, 0x3c119: 0x6df81c20, 0x3c11a: 0x6e0baa20, 0x3c11b: 0x6e0bac20,\n\t0x3c11c: 0x6e0bae20, 0x3c11d: 0x6e0bb020, 0x3c11e: 0x6e0bb220, 0x3c11f: 0x6df81e20,\n\t0x3c120: 0x6e0bb420, 0x3c121: 0x6e0bb620, 0x3c122: 0x6e0bb820, 0x3c123: 0x6e0bba20,\n\t0x3c124: 0x6e0bbc20, 0x3c125: 0x6e0bbe20, 0x3c126: 0x6e0bc020, 0x3c127: 0x6e0bc220,\n\t0x3c128: 0x6e1b8220, 0x3c129: 0x6e1b8420, 0x3c12a: 0x6e1b8620, 0x3c12b: 0x6e27e020,\n\t0x3c12c: 0x6e27e220, 0x3c12d: 0x6e27e420, 0x3c12e: 0x6e27e620, 0x3c12f: 0x6e27e820,\n\t0x3c130: 0x6e27ea20, 0x3c131: 0x6e27ec20, 0x3c132: 0x6e27ee20, 0x3c133: 0x6e27f020,\n\t0x3c134: 0x6e27f220, 0x3c135: 0x6e312420, 0x3c136: 0x6e312620, 0x3c137: 0x6e312820,\n\t0x3c138: 0x6e312a20, 0x3c139: 0x6e312c20, 0x3c13a: 0x6e312e20, 0x3c13b: 0x6e313020,\n\t0x3c13c: 0x6e313220, 0x3c13d: 0x6e313420, 0x3c13e: 0x6e313620, 0x3c13f: 0x6e380420,\n\t// Block 0xf05, offset 0x3c140\n\t0x3c140: 0x6e37f620, 0x3c141: 0x6e37f820, 0x3c142: 0x6e37fa20, 0x3c143: 0x6e37fc20,\n\t0x3c144: 0x6e37fe20, 0x3c145: 0x6e3c8620, 0x3c146: 0x6e3c8820, 0x3c147: 0x6e3c8a20,\n\t0x3c148: 0x6e3c8c20, 0x3c149: 0x6e3c8e20, 0x3c14a: 0x6e3fde20, 0x3c14b: 0x6e424a20,\n\t0x3c14c: 0x6e450820, 0x3c14d: 0x6e450a20, 0x3c14e: 0x6e45a620, 0x3c14f: 0x6e461420,\n\t0x3c150: 0x6d75b220, 0x3c151: 0x6d9f8c20, 0x3c152: 0x6d9f8e20, 0x3c153: 0x6dc22420,\n\t0x3c154: 0x6dc22620, 0x3c155: 0x6ddfe020, 0x3c156: 0x6ddfe220, 0x3c157: 0x6ddfe420,\n\t0x3c158: 0x6ddfe620, 0x3c159: 0x6ddfe820, 0x3c15a: 0x6df82620, 0x3c15b: 0x6df82820,\n\t0x3c15c: 0x6df82a20, 0x3c15d: 0x6df82c20, 0x3c15e: 0x6df82e20, 0x3c15f: 0x6df83020,\n\t0x3c160: 0x6df83220, 0x3c161: 0x6e0bc820, 0x3c162: 0x6e0bca20, 0x3c163: 0x6e0bcc20,\n\t0x3c164: 0x6e0bce20, 0x3c165: 0x6e1b8a20, 0x3c166: 0x6e1b8c20, 0x3c167: 0x6e1b8e20,\n\t0x3c168: 0x6e1b9020, 0x3c169: 0x6e1b9220, 0x3c16a: 0x6e1b9420, 0x3c16b: 0x6e1b9620,\n\t0x3c16c: 0x6e1b9820, 0x3c16d: 0x6e27f620, 0x3c16e: 0x6e27f820, 0x3c16f: 0x6e313c20,\n\t0x3c170: 0x6e313e20, 0x3c171: 0x6e314020, 0x3c172: 0x6e314220, 0x3c173: 0x6e380620,\n\t0x3c174: 0x6e380820, 0x3c175: 0x6e380a20, 0x3c176: 0x6e3c9420, 0x3c177: 0x6e3c9620,\n\t0x3c178: 0x6e3c9820, 0x3c179: 0x6e3c9a20, 0x3c17a: 0x6e3c9c20, 0x3c17b: 0x6e3fe020,\n\t0x3c17c: 0x6e3fe220, 0x3c17d: 0x6e3fe420, 0x3c17e: 0x6e425020, 0x3c17f: 0x6e425220,\n\t// Block 0xf06, offset 0x3c180\n\t0x3c180: 0x6e425420, 0x3c181: 0x6e45aa20, 0x3c182: 0x6e461620, 0x3c183: 0x6e466e20,\n\t0x3c184: 0x6d478420, 0x3c185: 0x6d9f9020, 0x3c186: 0x6dc22e20, 0x3c187: 0x6ddff020,\n\t0x3c188: 0x6ddff220, 0x3c189: 0x6df83620, 0x3c18a: 0x6df83820, 0x3c18b: 0x6e0bd020,\n\t0x3c18c: 0x6e0bd220, 0x3c18d: 0x6e27fa20, 0x3c18e: 0x6e1b9c20, 0x3c18f: 0x6e3c9e20,\n\t0x3c190: 0x6e3ca020, 0x3c191: 0x6e3ca220, 0x3c192: 0x6e440220, 0x3c193: 0x6e45ac20,\n\t0x3c194: 0x6dc23220, 0x3c195: 0x6dc23420, 0x3c196: 0x6dc23620, 0x3c197: 0x6dc23820,\n\t0x3c198: 0x6ddff820, 0x3c199: 0x6ddffa20, 0x3c19a: 0x6ddffc20, 0x3c19b: 0x6df84420,\n\t0x3c19c: 0x6df84620, 0x3c19d: 0x6df84820, 0x3c19e: 0x6df84a20, 0x3c19f: 0x6df84c20,\n\t0x3c1a0: 0x6df84e20, 0x3c1a1: 0x6df85020, 0x3c1a2: 0x6df85220, 0x3c1a3: 0x6df85420,\n\t0x3c1a4: 0x6df85620, 0x3c1a5: 0x6e0bee20, 0x3c1a6: 0x6e0bf020, 0x3c1a7: 0x6e0bf220,\n\t0x3c1a8: 0x6e0bf420, 0x3c1a9: 0x6e0bf620, 0x3c1aa: 0x6e0bf820, 0x3c1ab: 0x6e0bfa20,\n\t0x3c1ac: 0x6e0bfc20, 0x3c1ad: 0x6e0bfe20, 0x3c1ae: 0x6e0c0020, 0x3c1af: 0x6e0c0220,\n\t0x3c1b0: 0x6e0c0420, 0x3c1b1: 0x6e0c0620, 0x3c1b2: 0x6e0c0820, 0x3c1b3: 0x6e0c0a20,\n\t0x3c1b4: 0x6e0c0c20, 0x3c1b5: 0x6e0c0e20, 0x3c1b6: 0x6e0c1020, 0x3c1b7: 0x6e1bb020,\n\t0x3c1b8: 0x6e1bb220, 0x3c1b9: 0x6e1bb420, 0x3c1ba: 0x6e1bb620, 0x3c1bb: 0x6e1bb820,\n\t0x3c1bc: 0x6e1bba20, 0x3c1bd: 0x6e1bbc20, 0x3c1be: 0x6e1bbe20, 0x3c1bf: 0x6e1bc020,\n\t// Block 0xf07, offset 0x3c1c0\n\t0x3c1c0: 0x6e1bc220, 0x3c1c1: 0x6e1bc420, 0x3c1c2: 0x6e1bc620, 0x3c1c3: 0x6e1bc820,\n\t0x3c1c4: 0x6e1bca20, 0x3c1c5: 0x6e1bcc20, 0x3c1c6: 0x6e1bce20, 0x3c1c7: 0x6e1bd020,\n\t0x3c1c8: 0x6e1bd220, 0x3c1c9: 0x6e1bd420, 0x3c1ca: 0x6e1bd620, 0x3c1cb: 0x6e1bd820,\n\t0x3c1cc: 0x6e1bda20, 0x3c1cd: 0x6e1bdc20, 0x3c1ce: 0x6e280620, 0x3c1cf: 0x6e280820,\n\t0x3c1d0: 0x6e280a20, 0x3c1d1: 0x6e280c20, 0x3c1d2: 0x6e280e20, 0x3c1d3: 0x6e281020,\n\t0x3c1d4: 0x6e281220, 0x3c1d5: 0x6e281420, 0x3c1d6: 0x6e281620, 0x3c1d7: 0x6e281820,\n\t0x3c1d8: 0x6e281a20, 0x3c1d9: 0x6e281c20, 0x3c1da: 0x6e281e20, 0x3c1db: 0x6e282020,\n\t0x3c1dc: 0x6e282220, 0x3c1dd: 0x6e282420, 0x3c1de: 0x6e282620, 0x3c1df: 0x6e282820,\n\t0x3c1e0: 0x6e282a20, 0x3c1e1: 0x6e282c20, 0x3c1e2: 0x6e282e20, 0x3c1e3: 0x6e283020,\n\t0x3c1e4: 0x6e283220, 0x3c1e5: 0x6e315420, 0x3c1e6: 0x6e315620, 0x3c1e7: 0x6e315820,\n\t0x3c1e8: 0x6e315a20, 0x3c1e9: 0x6e315c20, 0x3c1ea: 0x6e315e20, 0x3c1eb: 0x6e316020,\n\t0x3c1ec: 0x6e316220, 0x3c1ed: 0x6e316420, 0x3c1ee: 0x6e316620, 0x3c1ef: 0x6e316820,\n\t0x3c1f0: 0x6e316a20, 0x3c1f1: 0x6e316c20, 0x3c1f2: 0x6e316e20, 0x3c1f3: 0x6e317020,\n\t0x3c1f4: 0x6e317220, 0x3c1f5: 0x6e317420, 0x3c1f6: 0x6e317620, 0x3c1f7: 0x6e317820,\n\t0x3c1f8: 0x6e317a20, 0x3c1f9: 0x6e381e20, 0x3c1fa: 0x6e382020, 0x3c1fb: 0x6e382220,\n\t0x3c1fc: 0x6e382420, 0x3c1fd: 0x6e382620, 0x3c1fe: 0x6e382820, 0x3c1ff: 0x6e382a20,\n\t// Block 0xf08, offset 0x3c200\n\t0x3c200: 0x6e382c20, 0x3c201: 0x6e382e20, 0x3c202: 0x6e383020, 0x3c203: 0x6e383220,\n\t0x3c204: 0x6e383420, 0x3c205: 0x6e383620, 0x3c206: 0x6e383820, 0x3c207: 0x6e383a20,\n\t0x3c208: 0x6e383c20, 0x3c209: 0x6e3cb020, 0x3c20a: 0x6e3cb220, 0x3c20b: 0x6e3cb420,\n\t0x3c20c: 0x6e3cb620, 0x3c20d: 0x6e3cb820, 0x3c20e: 0x6e3cba20, 0x3c20f: 0x6e3cbc20,\n\t0x3c210: 0x6e3cbe20, 0x3c211: 0x6e3cc020, 0x3c212: 0x6e3cc220, 0x3c213: 0x6e3cc420,\n\t0x3c214: 0x6e3cc620, 0x3c215: 0x6e3cc820, 0x3c216: 0x6e3cca20, 0x3c217: 0x6e3ccc20,\n\t0x3c218: 0x6e3cce20, 0x3c219: 0x6e3cd020, 0x3c21a: 0x6e3fea20, 0x3c21b: 0x6e3fec20,\n\t0x3c21c: 0x6e3fee20, 0x3c21d: 0x6e3ff020, 0x3c21e: 0x6e3ff220, 0x3c21f: 0x6e3ff420,\n\t0x3c220: 0x6e3ff620, 0x3c221: 0x6e3ff820, 0x3c222: 0x6e3ffa20, 0x3c223: 0x6e425820,\n\t0x3c224: 0x6e425a20, 0x3c225: 0x6e425c20, 0x3c226: 0x6e425e20, 0x3c227: 0x6e426020,\n\t0x3c228: 0x6e426220, 0x3c229: 0x6e426420, 0x3c22a: 0x6e426620, 0x3c22b: 0x6e426820,\n\t0x3c22c: 0x6e426a20, 0x3c22d: 0x6e426c20, 0x3c22e: 0x6e426e20, 0x3c22f: 0x6e427020,\n\t0x3c230: 0x6e440a20, 0x3c231: 0x6e440c20, 0x3c232: 0x6e440e20, 0x3c233: 0x6e441020,\n\t0x3c234: 0x6e441220, 0x3c235: 0x6e441420, 0x3c236: 0x6e451020, 0x3c237: 0x6e45ae20,\n\t0x3c238: 0x6e45b020, 0x3c239: 0x6e45b220, 0x3c23a: 0x6e45b420, 0x3c23b: 0x6e45b620,\n\t0x3c23c: 0x6e45b820, 0x3c23d: 0x6e461820, 0x3c23e: 0x6e461a20, 0x3c23f: 0x6e461c20,\n\t// Block 0xf09, offset 0x3c240\n\t0x3c240: 0x6e461e20, 0x3c241: 0x6e467020, 0x3c242: 0x6e467220, 0x3c243: 0x6e467420,\n\t0x3c244: 0x6e467620, 0x3c245: 0x6e46a620, 0x3c246: 0x6e46be20, 0x3c247: 0x6e46c020,\n\t0x3c248: 0x6e46c220, 0x3c249: 0x6e46c420, 0x3c24a: 0x6e46de20, 0x3c24b: 0x6e46e020,\n\t0x3c24c: 0x6e46fe20, 0x3c24d: 0x6e472620, 0x3c24e: 0x6e472820, 0x3c24f: 0x6d478a20,\n\t0x3c250: 0x6d9f9420, 0x3c251: 0x6df85c20, 0x3c252: 0x6df85e20, 0x3c253: 0x6df86020,\n\t0x3c254: 0x6df86220, 0x3c255: 0x6e0c1420, 0x3c256: 0x6e0c1620, 0x3c257: 0x6e0c1820,\n\t0x3c258: 0x6e0c1a20, 0x3c259: 0x6e1be420, 0x3c25a: 0x6e0c1c20, 0x3c25b: 0x6e0c1e20,\n\t0x3c25c: 0x6e283e20, 0x3c25d: 0x6e284020, 0x3c25e: 0x6e284220, 0x3c25f: 0x6e284420,\n\t0x3c260: 0x6e317c20, 0x3c261: 0x6e317e20, 0x3c262: 0x6e3cd220, 0x3c263: 0x6e427420,\n\t0x3c264: 0x6e427620, 0x3c265: 0x6e474220, 0x3c266: 0x6d9fa020, 0x3c267: 0x6e1bec20,\n\t0x3c268: 0x6de00220, 0x3c269: 0x6df86620, 0x3c26a: 0x6df86820, 0x3c26b: 0x6e0c2620,\n\t0x3c26c: 0x6e0c2820, 0x3c26d: 0x6e0c2a20, 0x3c26e: 0x6e0c2c20, 0x3c26f: 0x6e0c2e20,\n\t0x3c270: 0x6e0c3020, 0x3c271: 0x6e0c3220, 0x3c272: 0x6e0c3420, 0x3c273: 0x6e0c3620,\n\t0x3c274: 0x6e0c3820, 0x3c275: 0x6e0c3a20, 0x3c276: 0x6e1bee20, 0x3c277: 0x6e1bf020,\n\t0x3c278: 0x6e1bf220, 0x3c279: 0x6e1bf420, 0x3c27a: 0x6e1bf620, 0x3c27b: 0x6e1bf820,\n\t0x3c27c: 0x6e1bfa20, 0x3c27d: 0x6e1bfc20, 0x3c27e: 0x6e318220, 0x3c27f: 0x6e318420,\n\t// Block 0xf0a, offset 0x3c280\n\t0x3c280: 0x6e384020, 0x3c281: 0x6e3cd620, 0x3c282: 0x6e427820, 0x3c283: 0x6e427a20,\n\t0x3c284: 0x6e427c20, 0x3c285: 0x6e441820, 0x3c286: 0x6e441a20, 0x3c287: 0x6e45ba20,\n\t0x3c288: 0x6e46aa20, 0x3c289: 0x6d9fa220, 0x3c28a: 0x6e1c0220, 0x3c28b: 0x6e3cdc20,\n\t0x3c28c: 0x6e3cde20, 0x3c28d: 0x6e3ce020, 0x3c28e: 0x6e400020, 0x3c28f: 0x6e400220,\n\t0x3c290: 0x6e400420, 0x3c291: 0x6e400620, 0x3c292: 0x6e428020, 0x3c293: 0x6e441e20,\n\t0x3c294: 0x6e462020, 0x3c295: 0x6e46ac20, 0x3c296: 0x6e471220,\n\t// Block 0xf0b, offset 0x3c2c0\n\t0x3c2c0: 0x6c00f020, 0x3c2c1: 0x6c00f220, 0x3c2c2: 0x6c023420, 0x3c2c3: 0x6c28c220,\n\t0x3c2c4: 0x6c42f420, 0x3c2c5: 0x6c63d620, 0x3c2c6: 0x6c8afa20, 0x3c2c7: 0x6d75d220,\n\t0x3c2c8: 0x6c024020, 0x3c2c9: 0x6c42fe20, 0x3c2ca: 0x6c004c20, 0x3c2cb: 0x6c28ce20,\n\t0x3c2cc: 0x6c0b0c20, 0x3c2cd: 0x6c430820, 0x3c2ce: 0x6c63ee20, 0x3c2cf: 0x6c63f020,\n\t0x3c2d0: 0x6c05ae20, 0x3c2d1: 0x6c0b3620, 0x3c2d2: 0x6c161c20, 0x3c2d3: 0x6c161e20,\n\t0x3c2d4: 0x6c28f020, 0x3c2d5: 0x6c432a20, 0x3c2d6: 0x6c63fe20, 0x3c2d7: 0x6c640020,\n\t0x3c2d8: 0x6c8b2020, 0x3c2d9: 0x6cb7b620, 0x3c2da: 0x6cb7b820, 0x3c2db: 0x6ce8dc20,\n\t0x3c2dc: 0x6c162820, 0x3c2dd: 0x6cb7bc20, 0x3c2de: 0x6d18a820, 0x3c2df: 0x6d479c20,\n\t0x3c2e0: 0x6c05b420, 0x3c2e1: 0x6c05b620, 0x3c2e2: 0x6c164420, 0x3c2e3: 0x6c8b3c20,\n\t0x3c2e4: 0x6cb7d620, 0x3c2e5: 0x6d47b020, 0x3c2e6: 0x6de00c20, 0x3c2e7: 0x6c02c420,\n\t0x3c2e8: 0x6c0c3c20, 0x3c2e9: 0x6c0c3e20, 0x3c2ea: 0x6c0c4020, 0x3c2eb: 0x6c0c4220,\n\t0x3c2ec: 0x6c172220, 0x3c2ed: 0x6c172420, 0x3c2ee: 0x6c172620, 0x3c2ef: 0x6c172820,\n\t0x3c2f0: 0x6c172a20, 0x3c2f1: 0x6c172c20, 0x3c2f2: 0x6c172e20, 0x3c2f3: 0x6c173020,\n\t0x3c2f4: 0x6c173220, 0x3c2f5: 0x6c2a1c20, 0x3c2f6: 0x6c2a1e20, 0x3c2f7: 0x6c2a2020,\n\t0x3c2f8: 0x6c2a2220, 0x3c2f9: 0x6c2a2420, 0x3c2fa: 0x6c2a2620, 0x3c2fb: 0x6c444a20,\n\t0x3c2fc: 0x6c444c20, 0x3c2fd: 0x6c444e20, 0x3c2fe: 0x6c445020, 0x3c2ff: 0x6c445220,\n\t// Block 0xf0c, offset 0x3c300\n\t0x3c300: 0x6c445420, 0x3c301: 0x6c445620, 0x3c302: 0x6c445820, 0x3c303: 0x6c655c20,\n\t0x3c304: 0x6c655e20, 0x3c305: 0x6c656020, 0x3c306: 0x6c656220, 0x3c307: 0x6c656420,\n\t0x3c308: 0x6c656620, 0x3c309: 0x6c656820, 0x3c30a: 0x6c656a20, 0x3c30b: 0x6c8c4e20,\n\t0x3c30c: 0x6c8c5020, 0x3c30d: 0x6c8c5220, 0x3c30e: 0x6c8c5420, 0x3c30f: 0x6c8c5620,\n\t0x3c310: 0x6c8c5820, 0x3c311: 0x6c8c5a20, 0x3c312: 0x6c8c5c20, 0x3c313: 0x6c8c5e20,\n\t0x3c314: 0x6c8c6020, 0x3c315: 0x6c8c6220, 0x3c316: 0x6cb8b220, 0x3c317: 0x6cb8b420,\n\t0x3c318: 0x6cb8b620, 0x3c319: 0x6cb8b820, 0x3c31a: 0x6cb8ba20, 0x3c31b: 0x6cb8bc20,\n\t0x3c31c: 0x6cb8be20, 0x3c31d: 0x6cb8c020, 0x3c31e: 0x6cb8c220, 0x3c31f: 0x6cb8c420,\n\t0x3c320: 0x6ce9d620, 0x3c321: 0x6ce9d820, 0x3c322: 0x6ce9da20, 0x3c323: 0x6ce9dc20,\n\t0x3c324: 0x6ce9de20, 0x3c325: 0x6d19a820, 0x3c326: 0x6d19aa20, 0x3c327: 0x6d19ac20,\n\t0x3c328: 0x6d19ae20, 0x3c329: 0x6d19b020, 0x3c32a: 0x6d19b220, 0x3c32b: 0x6d485020,\n\t0x3c32c: 0x6d485220, 0x3c32d: 0x6d485420, 0x3c32e: 0x6d485620, 0x3c32f: 0x6d485820,\n\t0x3c330: 0x6d765e20, 0x3c331: 0x6d766020, 0x3c332: 0x6d766220, 0x3c333: 0x6d766420,\n\t0x3c334: 0x6d9ffc20, 0x3c335: 0x6d9ffe20, 0x3c336: 0x6da00020, 0x3c337: 0x6dc28620,\n\t0x3c338: 0x6dc28820, 0x3c339: 0x6dc28a20, 0x3c33a: 0x6de03c20, 0x3c33b: 0x6de03e20,\n\t0x3c33c: 0x6de04020, 0x3c33d: 0x6df88c20, 0x3c33e: 0x6e0c6220, 0x3c33f: 0x6c2a4a20,\n\t// Block 0xf0d, offset 0x3c340\n\t0x3c340: 0x6c446820, 0x3c341: 0x6c658420, 0x3c342: 0x6ce9ea20, 0x3c343: 0x6d486a20,\n\t0x3c344: 0x6d486c20, 0x3c345: 0x6d486e20, 0x3c346: 0x6de04620, 0x3c347: 0x6c658e20,\n\t0x3c348: 0x6c0c7620, 0x3c349: 0x6cb8f020, 0x3c34a: 0x6cea0620, 0x3c34b: 0x6d19da20,\n\t0x3c34c: 0x6d487020, 0x3c34d: 0x6d768220, 0x3c34e: 0x6c177e20, 0x3c34f: 0x6c178a20,\n\t0x3c350: 0x6c178c20, 0x3c351: 0x6c2a7220, 0x3c352: 0x6c65c020, 0x3c353: 0x6c8c9420,\n\t0x3c354: 0x6cb90a20, 0x3c355: 0x6d19e820, 0x3c356: 0x6c065820, 0x3c357: 0x6c0cb220,\n\t0x3c358: 0x6c0cb420, 0x3c359: 0x6c0cb620, 0x3c35a: 0x6c0cb820, 0x3c35b: 0x6c17b220,\n\t0x3c35c: 0x6c17b420, 0x3c35d: 0x6c17b620, 0x3c35e: 0x6c2a9620, 0x3c35f: 0x6c44ca20,\n\t0x3c360: 0x6c44cc20, 0x3c361: 0x6c44ce20, 0x3c362: 0x6c65f820, 0x3c363: 0x6c65fa20,\n\t0x3c364: 0x6c65fc20, 0x3c365: 0x6c65fe20, 0x3c366: 0x6c8cb620, 0x3c367: 0x6c8cb820,\n\t0x3c368: 0x6c8cba20, 0x3c369: 0x6cb92c20, 0x3c36a: 0x6cb92e20, 0x3c36b: 0x6cea2a20,\n\t0x3c36c: 0x6cea2c20, 0x3c36d: 0x6d19fc20, 0x3c36e: 0x6d489020, 0x3c36f: 0x6d769820,\n\t0x3c370: 0x6df8a020, 0x3c371: 0x6c0cd020, 0x3c372: 0x6c17ce20, 0x3c373: 0x6c660a20,\n\t0x3c374: 0x6c8cce20, 0x3c375: 0x6cea3620, 0x3c376: 0x6c067a20, 0x3c377: 0x6c2aba20,\n\t0x3c378: 0x6c661020, 0x3c379: 0x6cb94420, 0x3c37a: 0x6cea3820, 0x3c37b: 0x6cea3a20,\n\t0x3c37c: 0x6dc2b420, 0x3c37d: 0x6de05420, 0x3c37e: 0x6c0d3420, 0x3c37f: 0x6c0d3620,\n\t// Block 0xf0e, offset 0x3c380\n\t0x3c380: 0x6c0d3820, 0x3c381: 0x6c183420, 0x3c382: 0x6c183620, 0x3c383: 0x6c2b4420,\n\t0x3c384: 0x6c2b4620, 0x3c385: 0x6c2b4820, 0x3c386: 0x6c454820, 0x3c387: 0x6c454a20,\n\t0x3c388: 0x6c66a220, 0x3c389: 0x6c66a420, 0x3c38a: 0x6c8d3a20, 0x3c38b: 0x6c8d3c20,\n\t0x3c38c: 0x6c8d3e20, 0x3c38d: 0x6c8d4020, 0x3c38e: 0x6cb9a420, 0x3c38f: 0x6cb9a620,\n\t0x3c390: 0x6cb9a820, 0x3c391: 0x6cea8c20, 0x3c392: 0x6cea8e20, 0x3c393: 0x6cea9020,\n\t0x3c394: 0x6d48d820, 0x3c395: 0x6d76d620, 0x3c396: 0x6d76d820, 0x3c397: 0x6c187220,\n\t0x3c398: 0x6c187420, 0x3c399: 0x6c187620, 0x3c39a: 0x6c2b8220, 0x3c39b: 0x6c2b8420,\n\t0x3c39c: 0x6c458020, 0x3c39d: 0x6c66d820, 0x3c39e: 0x6c66da20, 0x3c39f: 0x6c66dc20,\n\t0x3c3a0: 0x6c8d6820, 0x3c3a1: 0x6cb9d020, 0x3c3a2: 0x6cb9d220, 0x3c3a3: 0x6ceabe20,\n\t0x3c3a4: 0x6d1aa420, 0x3c3a5: 0x6d1aa620, 0x3c3a6: 0x6d48f020, 0x3c3a7: 0x6e0c8220,\n\t0x3c3a8: 0x6c016620, 0x3c3a9: 0x6c0d6620, 0x3c3aa: 0x6c459e20, 0x3c3ab: 0x6cead020,\n\t0x3c3ac: 0x6c0d7820, 0x3c3ad: 0x6c18a020, 0x3c3ae: 0x6c18a220, 0x3c3af: 0x6c45be20,\n\t0x3c3b0: 0x6c670c20, 0x3c3b1: 0x6d1ac820, 0x3c3b2: 0x6df8c020, 0x3c3b3: 0x6c18bc20,\n\t0x3c3b4: 0x6c671e20, 0x3c3b5: 0x6c8da620, 0x3c3b6: 0x6ceaf420, 0x3c3b7: 0x6d1ad220,\n\t0x3c3b8: 0x6d490e20, 0x3c3b9: 0x6d491020, 0x3c3ba: 0x6da08220, 0x3c3bb: 0x6dc2de20,\n\t0x3c3bc: 0x6df8c420, 0x3c3bd: 0x6c037a20, 0x3c3be: 0x6c18ce20, 0x3c3bf: 0x6c672c20,\n\t// Block 0xf0f, offset 0x3c3c0\n\t0x3c3c0: 0x6d1ad820, 0x3c3c1: 0x6c2bfe20, 0x3c3c2: 0x6c45f420, 0x3c3c3: 0x6c070820,\n\t0x3c3c4: 0x6c190020, 0x3c3c5: 0x6c2c2420, 0x3c3c6: 0x6c2c2620, 0x3c3c7: 0x6c462420,\n\t0x3c3c8: 0x6c462620, 0x3c3c9: 0x6c462820, 0x3c3ca: 0x6c462a20, 0x3c3cb: 0x6c676420,\n\t0x3c3cc: 0x6c676620, 0x3c3cd: 0x6c676820, 0x3c3ce: 0x6c676a20, 0x3c3cf: 0x6c8dde20,\n\t0x3c3d0: 0x6c8de020, 0x3c3d1: 0x6cba2a20, 0x3c3d2: 0x6cba2c20, 0x3c3d3: 0x6ceb1a20,\n\t0x3c3d4: 0x6ceb1c20, 0x3c3d5: 0x6ceb1e20, 0x3c3d6: 0x6d1b1020, 0x3c3d7: 0x6d1b1220,\n\t0x3c3d8: 0x6d493620, 0x3c3d9: 0x6d493820, 0x3c3da: 0x6da08c20, 0x3c3db: 0x6df8c820,\n\t0x3c3dc: 0x6c463c20, 0x3c3dd: 0x6c677a20, 0x3c3de: 0x6c8dee20, 0x3c3df: 0x6cba4020,\n\t0x3c3e0: 0x6ceb3020, 0x3c3e1: 0x6d494220, 0x3c3e2: 0x6df8ca20, 0x3c3e3: 0x6c03b820,\n\t0x3c3e4: 0x6c03ba20, 0x3c3e5: 0x6c0e1a20, 0x3c3e6: 0x6c192020, 0x3c3e7: 0x6c2c5220,\n\t0x3c3e8: 0x6c2c5420, 0x3c3e9: 0x6c466020, 0x3c3ea: 0x6c466220, 0x3c3eb: 0x6c679620,\n\t0x3c3ec: 0x6c679820, 0x3c3ed: 0x6cba5820, 0x3c3ee: 0x6cba5a20, 0x3c3ef: 0x6ceb4c20,\n\t0x3c3f0: 0x6d1b3220, 0x3c3f1: 0x6d770a20, 0x3c3f2: 0x6c078620, 0x3c3f3: 0x6c1a4420,\n\t0x3c3f4: 0x6c1a4620, 0x3c3f5: 0x6c1a4820, 0x3c3f6: 0x6c2d7620, 0x3c3f7: 0x6c2d7820,\n\t0x3c3f8: 0x6c2d7a20, 0x3c3f9: 0x6c2d7c20, 0x3c3fa: 0x6c47c620, 0x3c3fb: 0x6c47c820,\n\t0x3c3fc: 0x6c47ca20, 0x3c3fd: 0x6c47cc20, 0x3c3fe: 0x6c47ce20, 0x3c3ff: 0x6c47d020,\n\t// Block 0xf10, offset 0x3c400\n\t0x3c400: 0x6c47d220, 0x3c401: 0x6c47d420, 0x3c402: 0x6c47d620, 0x3c403: 0x6c47d820,\n\t0x3c404: 0x6c693820, 0x3c405: 0x6c693a20, 0x3c406: 0x6c693c20, 0x3c407: 0x6c693e20,\n\t0x3c408: 0x6c694020, 0x3c409: 0x6c694220, 0x3c40a: 0x6c694420, 0x3c40b: 0x6c694620,\n\t0x3c40c: 0x6c694820, 0x3c40d: 0x6c694a20, 0x3c40e: 0x6c694c20, 0x3c40f: 0x6d770c20,\n\t0x3c410: 0x6c900020, 0x3c411: 0x6c900220, 0x3c412: 0x6c900420, 0x3c413: 0x6c900620,\n\t0x3c414: 0x6c900820, 0x3c415: 0x6c900a20, 0x3c416: 0x6c900c20, 0x3c417: 0x6c900e20,\n\t0x3c418: 0x6c901020, 0x3c419: 0x6c901220, 0x3c41a: 0x6c901420, 0x3c41b: 0x6c901620,\n\t0x3c41c: 0x6cbc2220, 0x3c41d: 0x6cbc2420, 0x3c41e: 0x6cbc2620, 0x3c41f: 0x6cbc2820,\n\t0x3c420: 0x6cbc2a20, 0x3c421: 0x6cbc2c20, 0x3c422: 0x6cbc2e20, 0x3c423: 0x6cbc3020,\n\t0x3c424: 0x6cbc3220, 0x3c425: 0x6cbc3420, 0x3c426: 0x6cbc3620, 0x3c427: 0x6cbc3820,\n\t0x3c428: 0x6cbc3a20, 0x3c429: 0x6cbc3c20, 0x3c42a: 0x6ced0c20, 0x3c42b: 0x6ced0e20,\n\t0x3c42c: 0x6ced1020, 0x3c42d: 0x6ced1220, 0x3c42e: 0x6ced1420, 0x3c42f: 0x6ced1620,\n\t0x3c430: 0x6ced1820, 0x3c431: 0x6ced1a20, 0x3c432: 0x6ced1c20, 0x3c433: 0x6ced1e20,\n\t0x3c434: 0x6ced2020, 0x3c435: 0x6ced2220, 0x3c436: 0x6ced2420, 0x3c437: 0x6ced2620,\n\t0x3c438: 0x6d1cd020, 0x3c439: 0x6d1cd220, 0x3c43a: 0x6d1cd420, 0x3c43b: 0x6d1cd620,\n\t0x3c43c: 0x6d1cd820, 0x3c43d: 0x6d1cda20, 0x3c43e: 0x6d1cdc20, 0x3c43f: 0x6d1cde20,\n\t// Block 0xf11, offset 0x3c440\n\t0x3c440: 0x6d1ce020, 0x3c441: 0x6d1ce220, 0x3c442: 0x6d1ce420, 0x3c443: 0x6d1ce620,\n\t0x3c444: 0x6d1ce820, 0x3c445: 0x6d4aa220, 0x3c446: 0x6d4aa420, 0x3c447: 0x6d4aa620,\n\t0x3c448: 0x6d4aa820, 0x3c449: 0x6d4aaa20, 0x3c44a: 0x6d4aac20, 0x3c44b: 0x6d4aae20,\n\t0x3c44c: 0x6d4ab020, 0x3c44d: 0x6d4ab220, 0x3c44e: 0x6d784a20, 0x3c44f: 0x6d784c20,\n\t0x3c450: 0x6d784e20, 0x3c451: 0x6d785020, 0x3c452: 0x6d785220, 0x3c453: 0x6d785420,\n\t0x3c454: 0x6d785620, 0x3c455: 0x6da17420, 0x3c456: 0x6da17620, 0x3c457: 0x6da17820,\n\t0x3c458: 0x6da17a20, 0x3c459: 0x6dc3ce20, 0x3c45a: 0x6dc3d020, 0x3c45b: 0x6dc3d220,\n\t0x3c45c: 0x6dc3d420, 0x3c45d: 0x6dc3d620, 0x3c45e: 0x6dc3d820, 0x3c45f: 0x6de0f820,\n\t0x3c460: 0x6de0fa20, 0x3c461: 0x6de0fc20, 0x3c462: 0x6df92220, 0x3c463: 0x6df92420,\n\t0x3c464: 0x6df92620, 0x3c465: 0x6e1c7020, 0x3c466: 0x6e31be20, 0x3c467: 0x6e31c020,\n\t0x3c468: 0x6c1a9620, 0x3c469: 0x6c2da820, 0x3c46a: 0x6c47fe20, 0x3c46b: 0x6c697c20,\n\t0x3c46c: 0x6c904220, 0x3c46d: 0x6c904420, 0x3c46e: 0x6ced4820, 0x3c46f: 0x6d1d1420,\n\t0x3c470: 0x6d786420, 0x3c471: 0x6c07c020, 0x3c472: 0x6c07c220, 0x3c473: 0x6c0f0420,\n\t0x3c474: 0x6c0f0620, 0x3c475: 0x6c0f0820, 0x3c476: 0x6c0f0a20, 0x3c477: 0x6c0f0c20,\n\t0x3c478: 0x6c1b5020, 0x3c479: 0x6c1b5220, 0x3c47a: 0x6c1b5420, 0x3c47b: 0x6c1b5620,\n\t0x3c47c: 0x6c1b5820, 0x3c47d: 0x6c1b5a20, 0x3c47e: 0x6c1b5c20, 0x3c47f: 0x6c1b5e20,\n\t// Block 0xf12, offset 0x3c480\n\t0x3c480: 0x6c1b6020, 0x3c481: 0x6c1b6220, 0x3c482: 0x6c1b6420, 0x3c483: 0x6c2e6e20,\n\t0x3c484: 0x6c2e7020, 0x3c485: 0x6c2e7220, 0x3c486: 0x6c2e7420, 0x3c487: 0x6c2e7620,\n\t0x3c488: 0x6c2e7820, 0x3c489: 0x6c2e7a20, 0x3c48a: 0x6c2e7c20, 0x3c48b: 0x6c48d420,\n\t0x3c48c: 0x6c48d620, 0x3c48d: 0x6c48d820, 0x3c48e: 0x6c48da20, 0x3c48f: 0x6c48dc20,\n\t0x3c490: 0x6c48de20, 0x3c491: 0x6c48e020, 0x3c492: 0x6c48e220, 0x3c493: 0x6c48e420,\n\t0x3c494: 0x6c6a4e20, 0x3c495: 0x6c6a5020, 0x3c496: 0x6c6a5220, 0x3c497: 0x6c6a5420,\n\t0x3c498: 0x6c6a5620, 0x3c499: 0x6c6a5820, 0x3c49a: 0x6c6a5a20, 0x3c49b: 0x6c6a5c20,\n\t0x3c49c: 0x6c6a5e20, 0x3c49d: 0x6c6a6020, 0x3c49e: 0x6c6a6220, 0x3c49f: 0x6c6a6420,\n\t0x3c4a0: 0x6c6a6620, 0x3c4a1: 0x6c6a6820, 0x3c4a2: 0x6c6a6a20, 0x3c4a3: 0x6c6a6c20,\n\t0x3c4a4: 0x6c914220, 0x3c4a5: 0x6c914420, 0x3c4a6: 0x6c914620, 0x3c4a7: 0x6c914820,\n\t0x3c4a8: 0x6c914a20, 0x3c4a9: 0x6c914c20, 0x3c4aa: 0x6c914e20, 0x3c4ab: 0x6c915020,\n\t0x3c4ac: 0x6c915220, 0x3c4ad: 0x6c915420, 0x3c4ae: 0x6c915620, 0x3c4af: 0x6c915820,\n\t0x3c4b0: 0x6c915a20, 0x3c4b1: 0x6c915c20, 0x3c4b2: 0x6cbd6c20, 0x3c4b3: 0x6cbd6e20,\n\t0x3c4b4: 0x6cbd7020, 0x3c4b5: 0x6cbd7220, 0x3c4b6: 0x6cbd7420, 0x3c4b7: 0x6cbd7620,\n\t0x3c4b8: 0x6cbd7820, 0x3c4b9: 0x6cbd7a20, 0x3c4ba: 0x6cbd7c20, 0x3c4bb: 0x6cbd7e20,\n\t0x3c4bc: 0x6cbd8020, 0x3c4bd: 0x6cbd8220, 0x3c4be: 0x6cee2e20, 0x3c4bf: 0x6cee3020,\n\t// Block 0xf13, offset 0x3c4c0\n\t0x3c4c0: 0x6cee3220, 0x3c4c1: 0x6cee3420, 0x3c4c2: 0x6cee3620, 0x3c4c3: 0x6cee3820,\n\t0x3c4c4: 0x6cee3a20, 0x3c4c5: 0x6cee3c20, 0x3c4c6: 0x6cee3e20, 0x3c4c7: 0x6cee4020,\n\t0x3c4c8: 0x6cee4220, 0x3c4c9: 0x6cee4420, 0x3c4ca: 0x6cee4620, 0x3c4cb: 0x6cee4820,\n\t0x3c4cc: 0x6cee4a20, 0x3c4cd: 0x6cee4c20, 0x3c4ce: 0x6d1dda20, 0x3c4cf: 0x6d1ddc20,\n\t0x3c4d0: 0x6d1dde20, 0x3c4d1: 0x6d1de020, 0x3c4d2: 0x6d1de220, 0x3c4d3: 0x6d1de420,\n\t0x3c4d4: 0x6d1de620, 0x3c4d5: 0x6d1de820, 0x3c4d6: 0x6d1dea20, 0x3c4d7: 0x6d1dec20,\n\t0x3c4d8: 0x6d1dee20, 0x3c4d9: 0x6d4b9420, 0x3c4da: 0x6d4b9620, 0x3c4db: 0x6d4b9820,\n\t0x3c4dc: 0x6d4b9a20, 0x3c4dd: 0x6d4b9c20, 0x3c4de: 0x6d4b9e20, 0x3c4df: 0x6d78f020,\n\t0x3c4e0: 0x6d78f220, 0x3c4e1: 0x6d78f420, 0x3c4e2: 0x6d78f620, 0x3c4e3: 0x6d78f820,\n\t0x3c4e4: 0x6d78fa20, 0x3c4e5: 0x6d78fc20, 0x3c4e6: 0x6da1f420, 0x3c4e7: 0x6da1f620,\n\t0x3c4e8: 0x6da1f820, 0x3c4e9: 0x6da1fa20, 0x3c4ea: 0x6da1fc20, 0x3c4eb: 0x6da1fe20,\n\t0x3c4ec: 0x6dc42820, 0x3c4ed: 0x6dc42a20, 0x3c4ee: 0x6dc42c20, 0x3c4ef: 0x6dc42e20,\n\t0x3c4f0: 0x6de14220, 0x3c4f1: 0x6df95020, 0x3c4f2: 0x6c6a8020, 0x3c4f3: 0x6cee5a20,\n\t0x3c4f4: 0x6e1c8e20, 0x3c4f5: 0x6df95420, 0x3c4f6: 0x6cee6820, 0x3c4f7: 0x6c0f2820,\n\t0x3c4f8: 0x6c2e9820, 0x3c4f9: 0x6c490020, 0x3c4fa: 0x6c6aa820, 0x3c4fb: 0x6c919620,\n\t0x3c4fc: 0x6cbdb420, 0x3c4fd: 0x6d1e2c20, 0x3c4fe: 0x6d4bb620, 0x3c4ff: 0x6d791a20,\n\t// Block 0xf14, offset 0x3c500\n\t0x3c500: 0x6e1c9020, 0x3c501: 0x6c03ee20, 0x3c502: 0x6c07fa20, 0x3c503: 0x6c0f5420,\n\t0x3c504: 0x6c1bbe20, 0x3c505: 0x6c1bc020, 0x3c506: 0x6c1bc220, 0x3c507: 0x6c2ee620,\n\t0x3c508: 0x6c2ee820, 0x3c509: 0x6c2eea20, 0x3c50a: 0x6c2eec20, 0x3c50b: 0x6c2eee20,\n\t0x3c50c: 0x6c2ef020, 0x3c50d: 0x6c493620, 0x3c50e: 0x6c493820, 0x3c50f: 0x6c493a20,\n\t0x3c510: 0x6c6ae220, 0x3c511: 0x6c6ae420, 0x3c512: 0x6c6ae620, 0x3c513: 0x6c91cc20,\n\t0x3c514: 0x6c91ce20, 0x3c515: 0x6c91d020, 0x3c516: 0x6cbdec20, 0x3c517: 0x6cbdee20,\n\t0x3c518: 0x6cbdf020, 0x3c519: 0x6ceea020, 0x3c51a: 0x6ceea220, 0x3c51b: 0x6ceea420,\n\t0x3c51c: 0x6d1e4c20, 0x3c51d: 0x6d1e4e20, 0x3c51e: 0x6d1e5020, 0x3c51f: 0x6d4bd820,\n\t0x3c520: 0x6d4bda20, 0x3c521: 0x6d4bdc20, 0x3c522: 0x6dc45220, 0x3c523: 0x6df95a20,\n\t0x3c524: 0x6c0fa220, 0x3c525: 0x6c0fa420, 0x3c526: 0x6c1c5220, 0x3c527: 0x6c1c5420,\n\t0x3c528: 0x6c1c5620, 0x3c529: 0x6c1c5820, 0x3c52a: 0x6c1c5a20, 0x3c52b: 0x6c1c5c20,\n\t0x3c52c: 0x6c1c5e20, 0x3c52d: 0x6c2fc020, 0x3c52e: 0x6c2fc220, 0x3c52f: 0x6c2fc420,\n\t0x3c530: 0x6c2fc620, 0x3c531: 0x6c4a0c20, 0x3c532: 0x6c4a0e20, 0x3c533: 0x6c4a1020,\n\t0x3c534: 0x6c4a1220, 0x3c535: 0x6c4a1420, 0x3c536: 0x6c6bcc20, 0x3c537: 0x6c6bce20,\n\t0x3c538: 0x6c6bd020, 0x3c539: 0x6c6bd220, 0x3c53a: 0x6c6bd420, 0x3c53b: 0x6c92ec20,\n\t0x3c53c: 0x6c92ee20, 0x3c53d: 0x6c92f020, 0x3c53e: 0x6c92f220, 0x3c53f: 0x6c92f420,\n\t// Block 0xf15, offset 0x3c540\n\t0x3c540: 0x6c92f620, 0x3c541: 0x6c92f820, 0x3c542: 0x6c92fa20, 0x3c543: 0x6c92fc20,\n\t0x3c544: 0x6c92fe20, 0x3c545: 0x6c930020, 0x3c546: 0x6cbf2a20, 0x3c547: 0x6cbf2c20,\n\t0x3c548: 0x6cbf2e20, 0x3c549: 0x6cbf3020, 0x3c54a: 0x6cbf3220, 0x3c54b: 0x6cbf3420,\n\t0x3c54c: 0x6cbf3620, 0x3c54d: 0x6cbf3820, 0x3c54e: 0x6cbf3a20, 0x3c54f: 0x6cbf3c20,\n\t0x3c550: 0x6cbf3e20, 0x3c551: 0x6cef6c20, 0x3c552: 0x6cef6e20, 0x3c553: 0x6cef7020,\n\t0x3c554: 0x6cef7220, 0x3c555: 0x6cef7420, 0x3c556: 0x6cef7620, 0x3c557: 0x6d1f1420,\n\t0x3c558: 0x6d1f1620, 0x3c559: 0x6d1f1820, 0x3c55a: 0x6d1f1a20, 0x3c55b: 0x6d1f1c20,\n\t0x3c55c: 0x6d1f1e20, 0x3c55d: 0x6d1f2020, 0x3c55e: 0x6d1f2220, 0x3c55f: 0x6d1f2420,\n\t0x3c560: 0x6d4ca820, 0x3c561: 0x6d4caa20, 0x3c562: 0x6d4cac20, 0x3c563: 0x6d4cae20,\n\t0x3c564: 0x6d4cb020, 0x3c565: 0x6d4cb220, 0x3c566: 0x6d79d420, 0x3c567: 0x6d79d620,\n\t0x3c568: 0x6d79d820, 0x3c569: 0x6d79da20, 0x3c56a: 0x6d79dc20, 0x3c56b: 0x6da29420,\n\t0x3c56c: 0x6dc48620, 0x3c56d: 0x6dc48820, 0x3c56e: 0x6dc48a20, 0x3c56f: 0x6dc48c20,\n\t0x3c570: 0x6de18c20, 0x3c571: 0x6de18e20, 0x3c572: 0x6df98420, 0x3c573: 0x6e0d4020,\n\t0x3c574: 0x6e0d4220, 0x3c575: 0x6e28ae20, 0x3c576: 0x6c1c7e20, 0x3c577: 0x6c1c8020,\n\t0x3c578: 0x6c1c8220, 0x3c579: 0x6c1c8420, 0x3c57a: 0x6c2ff820, 0x3c57b: 0x6c4a3e20,\n\t0x3c57c: 0x6c931c20, 0x3c57d: 0x6c931e20, 0x3c57e: 0x6c932020, 0x3c57f: 0x6cbf6020,\n\t// Block 0xf16, offset 0x3c580\n\t0x3c580: 0x6d1f3a20, 0x3c581: 0x6d79fc20, 0x3c582: 0x6da29c20, 0x3c583: 0x6da29e20,\n\t0x3c584: 0x6e0d4420, 0x3c585: 0x6c1cb620, 0x3c586: 0x6c1cb820, 0x3c587: 0x6c1cba20,\n\t0x3c588: 0x6c304020, 0x3c589: 0x6c304220, 0x3c58a: 0x6c4a8820, 0x3c58b: 0x6c4a8a20,\n\t0x3c58c: 0x6c4a8c20, 0x3c58d: 0x6c6c6a20, 0x3c58e: 0x6c6c6c20, 0x3c58f: 0x6c6c6e20,\n\t0x3c590: 0x6c6c7020, 0x3c591: 0x6c937c20, 0x3c592: 0x6c937e20, 0x3c593: 0x6c938020,\n\t0x3c594: 0x6cbfc620, 0x3c595: 0x6cbfc820, 0x3c596: 0x6cbfca20, 0x3c597: 0x6cbfcc20,\n\t0x3c598: 0x6cbfce20, 0x3c599: 0x6cbfd020, 0x3c59a: 0x6cbfd220, 0x3c59b: 0x6cefec20,\n\t0x3c59c: 0x6cefee20, 0x3c59d: 0x6ceff020, 0x3c59e: 0x6ceff220, 0x3c59f: 0x6ceff420,\n\t0x3c5a0: 0x6ceff620, 0x3c5a1: 0x6d1fa020, 0x3c5a2: 0x6d1fa220, 0x3c5a3: 0x6d1fa420,\n\t0x3c5a4: 0x6d1fa620, 0x3c5a5: 0x6d1fa820, 0x3c5a6: 0x6d4d1620, 0x3c5a7: 0x6d4d1820,\n\t0x3c5a8: 0x6d4d1a20, 0x3c5a9: 0x6d4d1c20, 0x3c5aa: 0x6d4d1e20, 0x3c5ab: 0x6d7a2820,\n\t0x3c5ac: 0x6d7a2a20, 0x3c5ad: 0x6d7a2c20, 0x3c5ae: 0x6d7a2e20, 0x3c5af: 0x6da2be20,\n\t0x3c5b0: 0x6dc4b220, 0x3c5b1: 0x6dc4b420, 0x3c5b2: 0x6dc4b620, 0x3c5b3: 0x6df9a220,\n\t0x3c5b4: 0x6df9a420, 0x3c5b5: 0x6e0d5a20, 0x3c5b6: 0x6e31ee20, 0x3c5b7: 0x6c0fea20,\n\t0x3c5b8: 0x6c939220, 0x3c5b9: 0x6c939420, 0x3c5ba: 0x6cbfe820, 0x3c5bb: 0x6d4d3420,\n\t0x3c5bc: 0x6d4d3620, 0x3c5bd: 0x6d7a3620, 0x3c5be: 0x6da2c620, 0x3c5bf: 0x6c1cd420,\n\t// Block 0xf17, offset 0x3c5c0\n\t0x3c5c0: 0x6c306820, 0x3c5c1: 0x6c6c9020, 0x3c5c2: 0x6c6c9220, 0x3c5c3: 0x6d1fce20,\n\t0x3c5c4: 0x6d4d4e20, 0x3c5c5: 0x6d7a4020, 0x3c5c6: 0x6da2d020, 0x3c5c7: 0x6cc01e20,\n\t0x3c5c8: 0x6cf02c20, 0x3c5c9: 0x6c1d1820, 0x3c5ca: 0x6c1d1a20, 0x3c5cb: 0x6c1d1c20,\n\t0x3c5cc: 0x6c30b020, 0x3c5cd: 0x6c4b0e20, 0x3c5ce: 0x6c4b1020, 0x3c5cf: 0x6c6cf020,\n\t0x3c5d0: 0x6c6cf220, 0x3c5d1: 0x6c940e20, 0x3c5d2: 0x6cf05e20, 0x3c5d3: 0x6cf06020,\n\t0x3c5d4: 0x6cf06220, 0x3c5d5: 0x6cc05a20, 0x3c5d6: 0x6cc05c20, 0x3c5d7: 0x6cc05e20,\n\t0x3c5d8: 0x6cc06020, 0x3c5d9: 0x6d1ffc20, 0x3c5da: 0x6d1ffe20, 0x3c5db: 0x6d4d8820,\n\t0x3c5dc: 0x6d4d8a20, 0x3c5dd: 0x6d7a5e20, 0x3c5de: 0x6da2e020, 0x3c5df: 0x6de1cc20,\n\t0x3c5e0: 0x6de1ce20, 0x3c5e1: 0x6e1cd220, 0x3c5e2: 0x6c108820, 0x3c5e3: 0x6c108a20,\n\t0x3c5e4: 0x6c108c20, 0x3c5e5: 0x6c108e20, 0x3c5e6: 0x6c1dcc20, 0x3c5e7: 0x6c1dce20,\n\t0x3c5e8: 0x6c1dd020, 0x3c5e9: 0x6c316e20, 0x3c5ea: 0x6c317020, 0x3c5eb: 0x6c317220,\n\t0x3c5ec: 0x6c317420, 0x3c5ed: 0x6c317620, 0x3c5ee: 0x6c317820, 0x3c5ef: 0x6c4bbe20,\n\t0x3c5f0: 0x6c4bc020, 0x3c5f1: 0x6c4bc220, 0x3c5f2: 0x6c4bc420, 0x3c5f3: 0x6c4bc620,\n\t0x3c5f4: 0x6c4bc820, 0x3c5f5: 0x6c6dd420, 0x3c5f6: 0x6c6dd620, 0x3c5f7: 0x6c6dd820,\n\t0x3c5f8: 0x6c6dda20, 0x3c5f9: 0x6c6ddc20, 0x3c5fa: 0x6c6dde20, 0x3c5fb: 0x6c953c20,\n\t0x3c5fc: 0x6c953e20, 0x3c5fd: 0x6c954020, 0x3c5fe: 0x6c954220, 0x3c5ff: 0x6c954420,\n\t// Block 0xf18, offset 0x3c600\n\t0x3c600: 0x6c954620, 0x3c601: 0x6c954820, 0x3c602: 0x6cc15e20, 0x3c603: 0x6cc16020,\n\t0x3c604: 0x6cc16220, 0x3c605: 0x6cc16420, 0x3c606: 0x6cc16620, 0x3c607: 0x6cc16820,\n\t0x3c608: 0x6cf10820, 0x3c609: 0x6cf10a20, 0x3c60a: 0x6cf10c20, 0x3c60b: 0x6cf10e20,\n\t0x3c60c: 0x6d20ac20, 0x3c60d: 0x6d20ae20, 0x3c60e: 0x6d20b020, 0x3c60f: 0x6d20b220,\n\t0x3c610: 0x6d20b420, 0x3c611: 0x6d20b620, 0x3c612: 0x6d20b820, 0x3c613: 0x6d4e4020,\n\t0x3c614: 0x6d4e4220, 0x3c615: 0x6d4e4420, 0x3c616: 0x6d4e4620, 0x3c617: 0x6d7acc20,\n\t0x3c618: 0x6d7ace20, 0x3c619: 0x6d7ad020, 0x3c61a: 0x6d7ad220, 0x3c61b: 0x6da34c20,\n\t0x3c61c: 0x6da34e20, 0x3c61d: 0x6da35020, 0x3c61e: 0x6de20a20, 0x3c61f: 0x6e0d9020,\n\t0x3c620: 0x6e1cfc20, 0x3c621: 0x6c1ddc20, 0x3c622: 0x6c4bd820, 0x3c623: 0x6c10aa20,\n\t0x3c624: 0x6c955620, 0x3c625: 0x6cc17620, 0x3c626: 0x6cf11620, 0x3c627: 0x6d20bc20,\n\t0x3c628: 0x6da35820, 0x3c629: 0x6dc50c20, 0x3c62a: 0x6e1d0220, 0x3c62b: 0x6c319020,\n\t0x3c62c: 0x6c1de820, 0x3c62d: 0x6cc18420, 0x3c62e: 0x6cc18620, 0x3c62f: 0x6d20be20,\n\t0x3c630: 0x6d7ae420, 0x3c631: 0x6d7ae620, 0x3c632: 0x6c08b820, 0x3c633: 0x6c6e4c20,\n\t0x3c634: 0x6c95c220, 0x3c635: 0x6c95c420, 0x3c636: 0x6c95c620, 0x3c637: 0x6c95c820,\n\t0x3c638: 0x6cc1ec20, 0x3c639: 0x6cc1ee20, 0x3c63a: 0x6cc1f020, 0x3c63b: 0x6d210420,\n\t0x3c63c: 0x6d4ea620, 0x3c63d: 0x6d7b1820, 0x3c63e: 0x6da37a20, 0x3c63f: 0x6de22a20,\n\t// Block 0xf19, offset 0x3c640\n\t0x3c640: 0x6df9e820, 0x3c641: 0x6c1e3820, 0x3c642: 0x6c95ce20, 0x3c643: 0x6c95d020,\n\t0x3c644: 0x6cc1fa20, 0x3c645: 0x6cf16220, 0x3c646: 0x6cf16420, 0x3c647: 0x6d4eac20,\n\t0x3c648: 0x6dc51e20, 0x3c649: 0x6de22e20, 0x3c64a: 0x6c10e220, 0x3c64b: 0x6c4c6420,\n\t0x3c64c: 0x6c1e8020, 0x3c64d: 0x6c1e8220, 0x3c64e: 0x6c323e20, 0x3c64f: 0x6c324020,\n\t0x3c650: 0x6c4ca820, 0x3c651: 0x6c4caa20, 0x3c652: 0x6c6eae20, 0x3c653: 0x6c6eb020,\n\t0x3c654: 0x6c6eb220, 0x3c655: 0x6c6eb420, 0x3c656: 0x6c6eb620, 0x3c657: 0x6c6eb820,\n\t0x3c658: 0x6c964820, 0x3c659: 0x6c964a20, 0x3c65a: 0x6cc26020, 0x3c65b: 0x6cc26220,\n\t0x3c65c: 0x6cf1a820, 0x3c65d: 0x6cf1aa20, 0x3c65e: 0x6d216620, 0x3c65f: 0x6d216820,\n\t0x3c660: 0x6d216a20, 0x3c661: 0x6d4efa20, 0x3c662: 0x6d4efc20, 0x3c663: 0x6d4efe20,\n\t0x3c664: 0x6d7b5820, 0x3c665: 0x6d7b5a20, 0x3c666: 0x6da39a20, 0x3c667: 0x6da39c20,\n\t0x3c668: 0x6da39e20, 0x3c669: 0x6dc53c20, 0x3c66a: 0x6de25420, 0x3c66b: 0x6e0da820,\n\t0x3c66c: 0x6c08d820, 0x3c66d: 0x6c1e8c20, 0x3c66e: 0x6c1e8e20, 0x3c66f: 0x6c4cc020,\n\t0x3c670: 0x6c6ec020, 0x3c671: 0x6c965820, 0x3c672: 0x6d217220, 0x3c673: 0x6c1ea420,\n\t0x3c674: 0x6c325a20, 0x3c675: 0x6c6ed220, 0x3c676: 0x6cc27820, 0x3c677: 0x6cf1b620,\n\t0x3c678: 0x6da3a620, 0x3c679: 0x6e1d2020, 0x3c67a: 0x6c114820, 0x3c67b: 0x6c329820,\n\t0x3c67c: 0x6c4d2620, 0x3c67d: 0x6c4d2820, 0x3c67e: 0x6c6ef820, 0x3c67f: 0x6c969e20,\n\t// Block 0xf1a, offset 0x3c680\n\t0x3c680: 0x6cc2a220, 0x3c681: 0x6cc2a420, 0x3c682: 0x6d21a420, 0x3c683: 0x6da3b820,\n\t0x3c684: 0x6e0db620, 0x3c685: 0x6e388420, 0x3c686: 0x6c115420, 0x3c687: 0x6dc55a20,\n\t0x3c688: 0x6c6f1020, 0x3c689: 0x6d4f3420, 0x3c68a: 0x6da3be20, 0x3c68b: 0x6c1f1a20,\n\t0x3c68c: 0x6c32de20, 0x3c68d: 0x6c6f5220, 0x3c68e: 0x6c6f5420, 0x3c68f: 0x6c972a20,\n\t0x3c690: 0x6c972c20, 0x3c691: 0x6cc2fe20, 0x3c692: 0x6cc30020, 0x3c693: 0x6cc30220,\n\t0x3c694: 0x6cf23e20, 0x3c695: 0x6cf24020, 0x3c696: 0x6d21fc20, 0x3c697: 0x6d21fe20,\n\t0x3c698: 0x6d220020, 0x3c699: 0x6d7bb020, 0x3c69a: 0x6da3d220, 0x3c69b: 0x6dc57020,\n\t0x3c69c: 0x6dc57220, 0x3c69d: 0x6c091e20, 0x3c69e: 0x6c11b820, 0x3c69f: 0x6c1fec20,\n\t0x3c6a0: 0x6c1fee20, 0x3c6a1: 0x6c1ff020, 0x3c6a2: 0x6c1ff220, 0x3c6a3: 0x6c1ff420,\n\t0x3c6a4: 0x6c1ff620, 0x3c6a5: 0x6c1ff820, 0x3c6a6: 0x6c33ce20, 0x3c6a7: 0x6c33d020,\n\t0x3c6a8: 0x6c33d220, 0x3c6a9: 0x6c33d420, 0x3c6aa: 0x6c33d620, 0x3c6ab: 0x6c33d820,\n\t0x3c6ac: 0x6c33da20, 0x3c6ad: 0x6c4e8e20, 0x3c6ae: 0x6c4e9020, 0x3c6af: 0x6c4e9220,\n\t0x3c6b0: 0x6c4e9420, 0x3c6b1: 0x6c4e9620, 0x3c6b2: 0x6c4e9820, 0x3c6b3: 0x6c4e9a20,\n\t0x3c6b4: 0x6c4e9c20, 0x3c6b5: 0x6c708220, 0x3c6b6: 0x6c708420, 0x3c6b7: 0x6c708620,\n\t0x3c6b8: 0x6c708820, 0x3c6b9: 0x6c708a20, 0x3c6ba: 0x6c708c20, 0x3c6bb: 0x6c708e20,\n\t0x3c6bc: 0x6c709020, 0x3c6bd: 0x6c709220, 0x3c6be: 0x6c709420, 0x3c6bf: 0x6c98a620,\n\t// Block 0xf1b, offset 0x3c6c0\n\t0x3c6c0: 0x6c98a820, 0x3c6c1: 0x6c98aa20, 0x3c6c2: 0x6c98ac20, 0x3c6c3: 0x6c98ae20,\n\t0x3c6c4: 0x6c98b020, 0x3c6c5: 0x6c98b220, 0x3c6c6: 0x6c98b420, 0x3c6c7: 0x6cc47620,\n\t0x3c6c8: 0x6cc47820, 0x3c6c9: 0x6cc47a20, 0x3c6ca: 0x6cc47c20, 0x3c6cb: 0x6cc47e20,\n\t0x3c6cc: 0x6cc48020, 0x3c6cd: 0x6cc48220, 0x3c6ce: 0x6cc48420, 0x3c6cf: 0x6cc48620,\n\t0x3c6d0: 0x6cc48820, 0x3c6d1: 0x6cc48a20, 0x3c6d2: 0x6cc48c20, 0x3c6d3: 0x6cf35c20,\n\t0x3c6d4: 0x6cf35e20, 0x3c6d5: 0x6cf36020, 0x3c6d6: 0x6cf36220, 0x3c6d7: 0x6cf36420,\n\t0x3c6d8: 0x6cf36620, 0x3c6d9: 0x6cf36820, 0x3c6da: 0x6cf36a20, 0x3c6db: 0x6cf36c20,\n\t0x3c6dc: 0x6cf36e20, 0x3c6dd: 0x6cf37020, 0x3c6de: 0x6cf37220, 0x3c6df: 0x6d232020,\n\t0x3c6e0: 0x6d232220, 0x3c6e1: 0x6d232420, 0x3c6e2: 0x6d232620, 0x3c6e3: 0x6d232820,\n\t0x3c6e4: 0x6d232a20, 0x3c6e5: 0x6d232c20, 0x3c6e6: 0x6d232e20, 0x3c6e7: 0x6d233020,\n\t0x3c6e8: 0x6d50b220, 0x3c6e9: 0x6d50b420, 0x3c6ea: 0x6d50b620, 0x3c6eb: 0x6d50b820,\n\t0x3c6ec: 0x6d50ba20, 0x3c6ed: 0x6d50bc20, 0x3c6ee: 0x6d7c7c20, 0x3c6ef: 0x6d7c7e20,\n\t0x3c6f0: 0x6d7c8020, 0x3c6f1: 0x6d7c8220, 0x3c6f2: 0x6d7c8420, 0x3c6f3: 0x6d7c8620,\n\t0x3c6f4: 0x6d7c8820, 0x3c6f5: 0x6d7c8a20, 0x3c6f6: 0x6d7c8c20, 0x3c6f7: 0x6da46220,\n\t0x3c6f8: 0x6da46420, 0x3c6f9: 0x6da46620, 0x3c6fa: 0x6dc5f620, 0x3c6fb: 0x6dc5f820,\n\t0x3c6fc: 0x6dc5fa20, 0x3c6fd: 0x6dc5fc20, 0x3c6fe: 0x6dc5fe20, 0x3c6ff: 0x6de2da20,\n\t// Block 0xf1c, offset 0x3c700\n\t0x3c700: 0x6de2dc20, 0x3c701: 0x6dfa5220, 0x3c702: 0x6dfa5420, 0x3c703: 0x6e0de220,\n\t0x3c704: 0x6e0de420, 0x3c705: 0x6e1d4e20, 0x3c706: 0x6e1d5020, 0x3c707: 0x6e28f020,\n\t0x3c708: 0x6e388e20, 0x3c709: 0x6c092a20, 0x3c70a: 0x6c11cc20, 0x3c70b: 0x6c4ec420,\n\t0x3c70c: 0x6c4ec620, 0x3c70d: 0x6c70ae20, 0x3c70e: 0x6c70b020, 0x3c70f: 0x6c98d220,\n\t0x3c710: 0x6c98d420, 0x3c711: 0x6cc4ac20, 0x3c712: 0x6cf3a020, 0x3c713: 0x6d236020,\n\t0x3c714: 0x6d7caa20, 0x3c715: 0x6d7cac20, 0x3c716: 0x6d7cae20, 0x3c717: 0x6e3d2c20,\n\t0x3c718: 0x6c4ef020, 0x3c719: 0x6c98e020, 0x3c71a: 0x6d50fa20, 0x3c71b: 0x6e1d5420,\n\t0x3c71c: 0x6c123220, 0x3c71d: 0x6c210a20, 0x3c71e: 0x6c210c20, 0x3c71f: 0x6c210e20,\n\t0x3c720: 0x6c211020, 0x3c721: 0x6c211220, 0x3c722: 0x6c211420, 0x3c723: 0x6c211620,\n\t0x3c724: 0x6c351e20, 0x3c725: 0x6c352020, 0x3c726: 0x6c352220, 0x3c727: 0x6c352420,\n\t0x3c728: 0x6c352620, 0x3c729: 0x6c352820, 0x3c72a: 0x6c352a20, 0x3c72b: 0x6c501620,\n\t0x3c72c: 0x6c501820, 0x3c72d: 0x6c501a20, 0x3c72e: 0x6c501c20, 0x3c72f: 0x6c501e20,\n\t0x3c730: 0x6c502020, 0x3c731: 0x6c502220, 0x3c732: 0x6c502420, 0x3c733: 0x6c502620,\n\t0x3c734: 0x6c720620, 0x3c735: 0x6c720820, 0x3c736: 0x6c720a20, 0x3c737: 0x6c720c20,\n\t0x3c738: 0x6c720e20, 0x3c739: 0x6c721020, 0x3c73a: 0x6c721220, 0x3c73b: 0x6c721420,\n\t0x3c73c: 0x6c721620, 0x3c73d: 0x6c721820, 0x3c73e: 0x6c721a20, 0x3c73f: 0x6c721c20,\n\t// Block 0xf1d, offset 0x3c740\n\t0x3c740: 0x6c721e20, 0x3c741: 0x6c9a7c20, 0x3c742: 0x6c9a7e20, 0x3c743: 0x6c9a8020,\n\t0x3c744: 0x6c9a8220, 0x3c745: 0x6c9a8420, 0x3c746: 0x6c9a8620, 0x3c747: 0x6c9a8820,\n\t0x3c748: 0x6c9a8a20, 0x3c749: 0x6c9a8c20, 0x3c74a: 0x6c9a8e20, 0x3c74b: 0x6c9a9020,\n\t0x3c74c: 0x6cc65420, 0x3c74d: 0x6cc65620, 0x3c74e: 0x6cc65820, 0x3c74f: 0x6cc65a20,\n\t0x3c750: 0x6cc65c20, 0x3c751: 0x6cc65e20, 0x3c752: 0x6cc66020, 0x3c753: 0x6cc66220,\n\t0x3c754: 0x6cc66420, 0x3c755: 0x6cc66620, 0x3c756: 0x6cc66820, 0x3c757: 0x6cf50220,\n\t0x3c758: 0x6cf50420, 0x3c759: 0x6cf50620, 0x3c75a: 0x6cf50820, 0x3c75b: 0x6cf50a20,\n\t0x3c75c: 0x6cf50c20, 0x3c75d: 0x6cf50e20, 0x3c75e: 0x6cf51020, 0x3c75f: 0x6cf51220,\n\t0x3c760: 0x6cf51420, 0x3c761: 0x6cf51620, 0x3c762: 0x6cf51820, 0x3c763: 0x6d24d420,\n\t0x3c764: 0x6d24d620, 0x3c765: 0x6d24d820, 0x3c766: 0x6d24da20, 0x3c767: 0x6d24dc20,\n\t0x3c768: 0x6d24de20, 0x3c769: 0x6d24e020, 0x3c76a: 0x6d24e220, 0x3c76b: 0x6d525620,\n\t0x3c76c: 0x6d525820, 0x3c76d: 0x6d525a20, 0x3c76e: 0x6d525c20, 0x3c76f: 0x6d525e20,\n\t0x3c770: 0x6d526020, 0x3c771: 0x6d526220, 0x3c772: 0x6d526420, 0x3c773: 0x6d526620,\n\t0x3c774: 0x6d526820, 0x3c775: 0x6d7d9820, 0x3c776: 0x6d7d9a20, 0x3c777: 0x6d7d9c20,\n\t0x3c778: 0x6da50420, 0x3c779: 0x6da50620, 0x3c77a: 0x6da50820, 0x3c77b: 0x6dc6a820,\n\t0x3c77c: 0x6dc6aa20, 0x3c77d: 0x6dc6ac20, 0x3c77e: 0x6dc6ae20, 0x3c77f: 0x6dc6b020,\n\t// Block 0xf1e, offset 0x3c780\n\t0x3c780: 0x6dc6b220, 0x3c781: 0x6de35820, 0x3c782: 0x6dfaae20, 0x3c783: 0x6e1d8e20,\n\t0x3c784: 0x6e291820, 0x3c785: 0x6c9a9e20, 0x3c786: 0x6c353e20, 0x3c787: 0x6d527020,\n\t0x3c788: 0x6c357420, 0x3c789: 0x6c506c20, 0x3c78a: 0x6c506e20, 0x3c78b: 0x6c728820,\n\t0x3c78c: 0x6c728a20, 0x3c78d: 0x6c9b1020, 0x3c78e: 0x6cc6fe20, 0x3c78f: 0x6cc70020,\n\t0x3c790: 0x6cf58a20, 0x3c791: 0x6d253e20, 0x3c792: 0x6d254020, 0x3c793: 0x6d52b620,\n\t0x3c794: 0x6d52b820, 0x3c795: 0x6d52ba20, 0x3c796: 0x6d52bc20, 0x3c797: 0x6d7dfe20,\n\t0x3c798: 0x6d7e0020, 0x3c799: 0x6d7e0220, 0x3c79a: 0x6da53c20, 0x3c79b: 0x6dc6d420,\n\t0x3c79c: 0x6dc6d620, 0x3c79d: 0x6e0e3820, 0x3c79e: 0x6e0e3a20, 0x3c79f: 0x6e324620,\n\t0x3c7a0: 0x6c214020, 0x3c7a1: 0x6c357e20, 0x3c7a2: 0x6c358020, 0x3c7a3: 0x6c507820,\n\t0x3c7a4: 0x6c729820, 0x3c7a5: 0x6cc70e20, 0x3c7a6: 0x6cc71020, 0x3c7a7: 0x6cc71220,\n\t0x3c7a8: 0x6d254220, 0x3c7a9: 0x6d254420, 0x3c7aa: 0x6d254620, 0x3c7ab: 0x6c508020,\n\t0x3c7ac: 0x6c72a820, 0x3c7ad: 0x6d255420, 0x3c7ae: 0x6d52d420, 0x3c7af: 0x6da54a20,\n\t0x3c7b0: 0x6e0e4220, 0x3c7b1: 0x6c359c20, 0x3c7b2: 0x6c35ac20, 0x3c7b3: 0x6c35ae20,\n\t0x3c7b4: 0x6c50aa20, 0x3c7b5: 0x6c72e420, 0x3c7b6: 0x6c72e620, 0x3c7b7: 0x6c72e820,\n\t0x3c7b8: 0x6c9b6a20, 0x3c7b9: 0x6cc76220, 0x3c7ba: 0x6cc76420, 0x3c7bb: 0x6cc76620,\n\t0x3c7bc: 0x6cc76820, 0x3c7bd: 0x6cf5ca20, 0x3c7be: 0x6d257420, 0x3c7bf: 0x6d52ee20,\n\t// Block 0xf1f, offset 0x3c7c0\n\t0x3c7c0: 0x6d52f020, 0x3c7c1: 0x6d7e2c20, 0x3c7c2: 0x6d7e2e20, 0x3c7c3: 0x6de38020,\n\t0x3c7c4: 0x6de38220, 0x3c7c5: 0x6dfadc20, 0x3c7c6: 0x6c219820, 0x3c7c7: 0x6c219a20,\n\t0x3c7c8: 0x6c363220, 0x3c7c9: 0x6c363420, 0x3c7ca: 0x6c363620, 0x3c7cb: 0x6c363820,\n\t0x3c7cc: 0x6c363a20, 0x3c7cd: 0x6c363c20, 0x3c7ce: 0x6c363e20, 0x3c7cf: 0x6c514420,\n\t0x3c7d0: 0x6c514620, 0x3c7d1: 0x6c514820, 0x3c7d2: 0x6c514a20, 0x3c7d3: 0x6c514c20,\n\t0x3c7d4: 0x6c514e20, 0x3c7d5: 0x6c515020, 0x3c7d6: 0x6c515220, 0x3c7d7: 0x6c515420,\n\t0x3c7d8: 0x6c515620, 0x3c7d9: 0x6c737220, 0x3c7da: 0x6c737420, 0x3c7db: 0x6c737620,\n\t0x3c7dc: 0x6c737820, 0x3c7dd: 0x6c737a20, 0x3c7de: 0x6c737c20, 0x3c7df: 0x6c737e20,\n\t0x3c7e0: 0x6c738020, 0x3c7e1: 0x6c738220, 0x3c7e2: 0x6c738420, 0x3c7e3: 0x6c738620,\n\t0x3c7e4: 0x6c738820, 0x3c7e5: 0x6c9c0220, 0x3c7e6: 0x6c9c0420, 0x3c7e7: 0x6c9c0620,\n\t0x3c7e8: 0x6c9c0820, 0x3c7e9: 0x6cc83e20, 0x3c7ea: 0x6cc84020, 0x3c7eb: 0x6cc84220,\n\t0x3c7ec: 0x6cc84420, 0x3c7ed: 0x6cc84620, 0x3c7ee: 0x6cc84820, 0x3c7ef: 0x6cf67620,\n\t0x3c7f0: 0x6cf67820, 0x3c7f1: 0x6cf67a20, 0x3c7f2: 0x6cf67c20, 0x3c7f3: 0x6cf67e20,\n\t0x3c7f4: 0x6cf68020, 0x3c7f5: 0x6cf68220, 0x3c7f6: 0x6cf68420, 0x3c7f7: 0x6cf68620,\n\t0x3c7f8: 0x6d25ec20, 0x3c7f9: 0x6d25ee20, 0x3c7fa: 0x6d25f020, 0x3c7fb: 0x6d25f220,\n\t0x3c7fc: 0x6d25f420, 0x3c7fd: 0x6d25f620, 0x3c7fe: 0x6d536220, 0x3c7ff: 0x6d536420,\n\t// Block 0xf20, offset 0x3c800\n\t0x3c800: 0x6d536620, 0x3c801: 0x6d536820, 0x3c802: 0x6d536a20, 0x3c803: 0x6d536c20,\n\t0x3c804: 0x6d536e20, 0x3c805: 0x6d537020, 0x3c806: 0x6da5a420, 0x3c807: 0x6d7ec620,\n\t0x3c808: 0x6d7ec820, 0x3c809: 0x6d7eca20, 0x3c80a: 0x6d7ecc20, 0x3c80b: 0x6d7ece20,\n\t0x3c80c: 0x6d7ed020, 0x3c80d: 0x6da5a620, 0x3c80e: 0x6dc73820, 0x3c80f: 0x6dc73a20,\n\t0x3c810: 0x6dc73c20, 0x3c811: 0x6e0e5220, 0x3c812: 0x6e0e5420, 0x3c813: 0x6e0e5620,\n\t0x3c814: 0x6e325620, 0x3c815: 0x6d537e20, 0x3c816: 0x6d7ee020, 0x3c817: 0x6d7ee220,\n\t0x3c818: 0x6de3b220, 0x3c819: 0x6c127820, 0x3c81a: 0x6c21ae20, 0x3c81b: 0x6c365620,\n\t0x3c81c: 0x6c518220, 0x3c81d: 0x6c518420, 0x3c81e: 0x6c73ba20, 0x3c81f: 0x6d261220,\n\t0x3c820: 0x6c9c3020, 0x3c821: 0x6c9c3220, 0x3c822: 0x6c9c3420, 0x3c823: 0x6cc87e20,\n\t0x3c824: 0x6cf6aa20, 0x3c825: 0x6cf6ac20, 0x3c826: 0x6cf6ae20, 0x3c827: 0x6cf6b020,\n\t0x3c828: 0x6d261420, 0x3c829: 0x6d261620, 0x3c82a: 0x6d261820, 0x3c82b: 0x6d539820,\n\t0x3c82c: 0x6d539a20, 0x3c82d: 0x6d7efc20, 0x3c82e: 0x6e0e5a20, 0x3c82f: 0x6e0e5c20,\n\t0x3c830: 0x6e325c20, 0x3c831: 0x6c222e20, 0x3c832: 0x6c223020, 0x3c833: 0x6c223220,\n\t0x3c834: 0x6c223420, 0x3c835: 0x6c223620, 0x3c836: 0x6c375a20, 0x3c837: 0x6c375c20,\n\t0x3c838: 0x6c375e20, 0x3c839: 0x6c376020, 0x3c83a: 0x6c52ae20, 0x3c83b: 0x6c52b020,\n\t0x3c83c: 0x6c52b220, 0x3c83d: 0x6c52b420, 0x3c83e: 0x6c52b620, 0x3c83f: 0x6c52b820,\n\t// Block 0xf21, offset 0x3c840\n\t0x3c840: 0x6c52ba20, 0x3c841: 0x6c52bc20, 0x3c842: 0x6c52be20, 0x3c843: 0x6c752a20,\n\t0x3c844: 0x6c752c20, 0x3c845: 0x6c752e20, 0x3c846: 0x6c753020, 0x3c847: 0x6c753220,\n\t0x3c848: 0x6c753420, 0x3c849: 0x6c753620, 0x3c84a: 0x6c753820, 0x3c84b: 0x6c753a20,\n\t0x3c84c: 0x6c753c20, 0x3c84d: 0x6c753e20, 0x3c84e: 0x6c754020, 0x3c84f: 0x6c754220,\n\t0x3c850: 0x6c9d8620, 0x3c851: 0x6c9d8820, 0x3c852: 0x6c9d8a20, 0x3c853: 0x6c9d8c20,\n\t0x3c854: 0x6c9d8e20, 0x3c855: 0x6c9d9020, 0x3c856: 0x6c9d9220, 0x3c857: 0x6c9d9420,\n\t0x3c858: 0x6c9d9620, 0x3c859: 0x6c9d9820, 0x3c85a: 0x6c9d9a20, 0x3c85b: 0x6c9d9c20,\n\t0x3c85c: 0x6c9d9e20, 0x3c85d: 0x6c9da020, 0x3c85e: 0x6c9da220, 0x3c85f: 0x6cca6620,\n\t0x3c860: 0x6cca6820, 0x3c861: 0x6cca6a20, 0x3c862: 0x6cca6c20, 0x3c863: 0x6cca6e20,\n\t0x3c864: 0x6cca7020, 0x3c865: 0x6cca7220, 0x3c866: 0x6cca7420, 0x3c867: 0x6cca7620,\n\t0x3c868: 0x6cca7820, 0x3c869: 0x6cca7a20, 0x3c86a: 0x6cca7c20, 0x3c86b: 0x6cca7e20,\n\t0x3c86c: 0x6cca8020, 0x3c86d: 0x6cca8220, 0x3c86e: 0x6cca8420, 0x3c86f: 0x6cca8620,\n\t0x3c870: 0x6cf88c20, 0x3c871: 0x6cf88e20, 0x3c872: 0x6cf89020, 0x3c873: 0x6cf89220,\n\t0x3c874: 0x6cf89420, 0x3c875: 0x6cf89620, 0x3c876: 0x6cf89820, 0x3c877: 0x6cf89a20,\n\t0x3c878: 0x6cf89c20, 0x3c879: 0x6cf89e20, 0x3c87a: 0x6cf8a020, 0x3c87b: 0x6cf8a220,\n\t0x3c87c: 0x6cf8a420, 0x3c87d: 0x6cf8a620, 0x3c87e: 0x6cf8a820, 0x3c87f: 0x6cf8aa20,\n\t// Block 0xf22, offset 0x3c880\n\t0x3c880: 0x6cf8ac20, 0x3c881: 0x6cf8ae20, 0x3c882: 0x6cf8b020, 0x3c883: 0x6cf8b220,\n\t0x3c884: 0x6cf8b420, 0x3c885: 0x6cf8b620, 0x3c886: 0x6cf8b820, 0x3c887: 0x6cf8ba20,\n\t0x3c888: 0x6d27d220, 0x3c889: 0x6d27d420, 0x3c88a: 0x6d27d620, 0x3c88b: 0x6d27d820,\n\t0x3c88c: 0x6d27da20, 0x3c88d: 0x6d27dc20, 0x3c88e: 0x6d27de20, 0x3c88f: 0x6d27e020,\n\t0x3c890: 0x6d27e220, 0x3c891: 0x6d27e420, 0x3c892: 0x6d27e620, 0x3c893: 0x6d27e820,\n\t0x3c894: 0x6d27ea20, 0x3c895: 0x6d27ec20, 0x3c896: 0x6d27ee20, 0x3c897: 0x6d27f020,\n\t0x3c898: 0x6d27f220, 0x3c899: 0x6d27f420, 0x3c89a: 0x6d27f620, 0x3c89b: 0x6d27f820,\n\t0x3c89c: 0x6d27fa20, 0x3c89d: 0x6d552c20, 0x3c89e: 0x6d552e20, 0x3c89f: 0x6d553020,\n\t0x3c8a0: 0x6d553220, 0x3c8a1: 0x6d553420, 0x3c8a2: 0x6d553620, 0x3c8a3: 0x6d553820,\n\t0x3c8a4: 0x6d553a20, 0x3c8a5: 0x6d553c20, 0x3c8a6: 0x6d553e20, 0x3c8a7: 0x6d554020,\n\t0x3c8a8: 0x6d554220, 0x3c8a9: 0x6d554420, 0x3c8aa: 0x6d554620, 0x3c8ab: 0x6d554820,\n\t0x3c8ac: 0x6d554a20, 0x3c8ad: 0x6d80ae20, 0x3c8ae: 0x6d80b020, 0x3c8af: 0x6d80b220,\n\t0x3c8b0: 0x6d80b420, 0x3c8b1: 0x6d80b620, 0x3c8b2: 0x6d80b820, 0x3c8b3: 0x6d80ba20,\n\t0x3c8b4: 0x6d80bc20, 0x3c8b5: 0x6d80be20, 0x3c8b6: 0x6d80c020, 0x3c8b7: 0x6d80c220,\n\t0x3c8b8: 0x6d80c420, 0x3c8b9: 0x6d80c620, 0x3c8ba: 0x6d80c820, 0x3c8bb: 0x6d80ca20,\n\t0x3c8bc: 0x6d80cc20, 0x3c8bd: 0x6da6d820, 0x3c8be: 0x6da6da20, 0x3c8bf: 0x6da6dc20,\n\t// Block 0xf23, offset 0x3c8c0\n\t0x3c8c0: 0x6da6de20, 0x3c8c1: 0x6da6e020, 0x3c8c2: 0x6da6e220, 0x3c8c3: 0x6da6e420,\n\t0x3c8c4: 0x6da6e620, 0x3c8c5: 0x6da6e820, 0x3c8c6: 0x6da6ea20, 0x3c8c7: 0x6da6ec20,\n\t0x3c8c8: 0x6da6ee20, 0x3c8c9: 0x6dc83c20, 0x3c8ca: 0x6dc83e20, 0x3c8cb: 0x6dc84020,\n\t0x3c8cc: 0x6dc84220, 0x3c8cd: 0x6dc84420, 0x3c8ce: 0x6dc84620, 0x3c8cf: 0x6dc84820,\n\t0x3c8d0: 0x6de46c20, 0x3c8d1: 0x6de46e20, 0x3c8d2: 0x6de47020, 0x3c8d3: 0x6de47220,\n\t0x3c8d4: 0x6de47420, 0x3c8d5: 0x6de47620, 0x3c8d6: 0x6dfb8e20, 0x3c8d7: 0x6dfb9020,\n\t0x3c8d8: 0x6dfb9220, 0x3c8d9: 0x6dfb9420, 0x3c8da: 0x6dfb9620, 0x3c8db: 0x6e0ed020,\n\t0x3c8dc: 0x6e0ed220, 0x3c8dd: 0x6e0ed420, 0x3c8de: 0x6e0ed620, 0x3c8df: 0x6e1e0620,\n\t0x3c8e0: 0x6e1e0820, 0x3c8e1: 0x6e1e0a20, 0x3c8e2: 0x6e297220, 0x3c8e3: 0x6e297420,\n\t0x3c8e4: 0x6e328c20, 0x3c8e5: 0x6e328e20, 0x3c8e6: 0x6e38d220, 0x3c8e7: 0x6e405420,\n\t0x3c8e8: 0x6e3d4420, 0x3c8e9: 0x6c379220, 0x3c8ea: 0x6c52f420, 0x3c8eb: 0x6c52f620,\n\t0x3c8ec: 0x6c9dd620, 0x3c8ed: 0x6c9dd820, 0x3c8ee: 0x6ccad020, 0x3c8ef: 0x6cf90220,\n\t0x3c8f0: 0x6cf90420, 0x3c8f1: 0x6d283e20, 0x3c8f2: 0x6d558220, 0x3c8f3: 0x6dfba220,\n\t0x3c8f4: 0x6e329220, 0x3c8f5: 0x6c37c820, 0x3c8f6: 0x6c75a420, 0x3c8f7: 0x6c9de620,\n\t0x3c8f8: 0x6ccaf620, 0x3c8f9: 0x6cf91c20, 0x3c8fa: 0x6cf91e20, 0x3c8fb: 0x6d284e20,\n\t0x3c8fc: 0x6d559820, 0x3c8fd: 0x6d80fe20, 0x3c8fe: 0x6d810020, 0x3c8ff: 0x6da71c20,\n\t// Block 0xf24, offset 0x3c900\n\t0x3c900: 0x6c534420, 0x3c901: 0x6c534620, 0x3c902: 0x6c75d820, 0x3c903: 0x6c75da20,\n\t0x3c904: 0x6c9e1e20, 0x3c905: 0x6ccb4820, 0x3c906: 0x6d287420, 0x3c907: 0x6da73420,\n\t0x3c908: 0x6c75e820, 0x3c909: 0x6c75ea20, 0x3c90a: 0x6c9b1220, 0x3c90b: 0x6c9e4620,\n\t0x3c90c: 0x6ccb6220, 0x3c90d: 0x6ccb6420, 0x3c90e: 0x6ccb6620, 0x3c90f: 0x6cf97a20,\n\t0x3c910: 0x6d55da20, 0x3c911: 0x6da74020, 0x3c912: 0x6da74220, 0x3c913: 0x6e38de20,\n\t0x3c914: 0x6d289220, 0x3c915: 0x6d289c20, 0x3c916: 0x6c098220, 0x3c917: 0x6c384c20,\n\t0x3c918: 0x6c384e20, 0x3c919: 0x6c53ac20, 0x3c91a: 0x6c53ae20, 0x3c91b: 0x6c763420,\n\t0x3c91c: 0x6c763620, 0x3c91d: 0x6ccbc220, 0x3c91e: 0x6ccbc420, 0x3c91f: 0x6cf9d420,\n\t0x3c920: 0x6d28e820, 0x3c921: 0x6d561020, 0x3c922: 0x6dc8ba20, 0x3c923: 0x6c386420,\n\t0x3c924: 0x6c53cc20, 0x3c925: 0x6c9ea820, 0x3c926: 0x6cf9e020, 0x3c927: 0x6d28f220,\n\t0x3c928: 0x6c09c820, 0x3c929: 0x6c134c20, 0x3c92a: 0x6c134e20, 0x3c92b: 0x6c135020,\n\t0x3c92c: 0x6c135220, 0x3c92d: 0x6c238220, 0x3c92e: 0x6c238420, 0x3c92f: 0x6c238620,\n\t0x3c930: 0x6c238820, 0x3c931: 0x6c398420, 0x3c932: 0x6c398620, 0x3c933: 0x6c398820,\n\t0x3c934: 0x6c398a20, 0x3c935: 0x6c398c20, 0x3c936: 0x6c398e20, 0x3c937: 0x6c550a20,\n\t0x3c938: 0x6c550c20, 0x3c939: 0x6c550e20, 0x3c93a: 0x6c551020, 0x3c93b: 0x6c551220,\n\t0x3c93c: 0x6c551420, 0x3c93d: 0x6c551620, 0x3c93e: 0x6c77cc20, 0x3c93f: 0x6c77ce20,\n\t// Block 0xf25, offset 0x3c940\n\t0x3c940: 0x6c77d020, 0x3c941: 0x6c77d220, 0x3c942: 0x6c77d420, 0x3c943: 0x6c77d620,\n\t0x3c944: 0x6c77d820, 0x3c945: 0x6c77da20, 0x3c946: 0x6c77dc20, 0x3c947: 0x6c77de20,\n\t0x3c948: 0x6c77e020, 0x3c949: 0x6c77e220, 0x3c94a: 0x6c77e420, 0x3c94b: 0x6c77e620,\n\t0x3c94c: 0x6ca0c620, 0x3c94d: 0x6ca0c820, 0x3c94e: 0x6ca0ca20, 0x3c94f: 0x6ca0cc20,\n\t0x3c950: 0x6ca0ce20, 0x3c951: 0x6ca0d020, 0x3c952: 0x6ca0d220, 0x3c953: 0x6ca0d420,\n\t0x3c954: 0x6ca0d620, 0x3c955: 0x6ca0d820, 0x3c956: 0x6ca0da20, 0x3c957: 0x6ccdb620,\n\t0x3c958: 0x6ccdb820, 0x3c959: 0x6ccdba20, 0x3c95a: 0x6ccdbc20, 0x3c95b: 0x6ccdbe20,\n\t0x3c95c: 0x6ccdc020, 0x3c95d: 0x6ccdc220, 0x3c95e: 0x6ccdc420, 0x3c95f: 0x6ccdc620,\n\t0x3c960: 0x6ccdc820, 0x3c961: 0x6ccdca20, 0x3c962: 0x6ccdcc20, 0x3c963: 0x6ccdce20,\n\t0x3c964: 0x6ccdd020, 0x3c965: 0x6ccdd220, 0x3c966: 0x6ccdd420, 0x3c967: 0x6ccdd620,\n\t0x3c968: 0x6ccdd820, 0x3c969: 0x6ccdda20, 0x3c96a: 0x6cfba620, 0x3c96b: 0x6cfba820,\n\t0x3c96c: 0x6cfbaa20, 0x3c96d: 0x6cfbac20, 0x3c96e: 0x6cfbae20, 0x3c96f: 0x6cfbb020,\n\t0x3c970: 0x6cfbb220, 0x3c971: 0x6cfbb420, 0x3c972: 0x6cfbb620, 0x3c973: 0x6cfbb820,\n\t0x3c974: 0x6cfbba20, 0x3c975: 0x6cfbbc20, 0x3c976: 0x6cfbbe20, 0x3c977: 0x6cfbc020,\n\t0x3c978: 0x6cfbc220, 0x3c979: 0x6cfbc420, 0x3c97a: 0x6cfbc620, 0x3c97b: 0x6cfbc820,\n\t0x3c97c: 0x6cfbca20, 0x3c97d: 0x6cfbcc20, 0x3c97e: 0x6cfbce20, 0x3c97f: 0x6d2ab220,\n\t// Block 0xf26, offset 0x3c980\n\t0x3c980: 0x6d2ab420, 0x3c981: 0x6d2ab620, 0x3c982: 0x6d2ab820, 0x3c983: 0x6d2aba20,\n\t0x3c984: 0x6d2abc20, 0x3c985: 0x6d2abe20, 0x3c986: 0x6d2ac020, 0x3c987: 0x6d2ac220,\n\t0x3c988: 0x6d2ac420, 0x3c989: 0x6d2ac620, 0x3c98a: 0x6d2ac820, 0x3c98b: 0x6d57e420,\n\t0x3c98c: 0x6d57e620, 0x3c98d: 0x6d57e820, 0x3c98e: 0x6d57ea20, 0x3c98f: 0x6d57ec20,\n\t0x3c990: 0x6d57ee20, 0x3c991: 0x6d57f020, 0x3c992: 0x6d57f220, 0x3c993: 0x6d57f420,\n\t0x3c994: 0x6d57f620, 0x3c995: 0x6d57f820, 0x3c996: 0x6d57fa20, 0x3c997: 0x6d57fc20,\n\t0x3c998: 0x6d57fe20, 0x3c999: 0x6d580020, 0x3c99a: 0x6d580220, 0x3c99b: 0x6d580420,\n\t0x3c99c: 0x6d580620, 0x3c99d: 0x6d82e420, 0x3c99e: 0x6d82e620, 0x3c99f: 0x6d82e820,\n\t0x3c9a0: 0x6d82ea20, 0x3c9a1: 0x6d82ec20, 0x3c9a2: 0x6d82ee20, 0x3c9a3: 0x6d82f020,\n\t0x3c9a4: 0x6d82f220, 0x3c9a5: 0x6d82f420, 0x3c9a6: 0x6d82f620, 0x3c9a7: 0x6d82f820,\n\t0x3c9a8: 0x6da85a20, 0x3c9a9: 0x6da85c20, 0x3c9aa: 0x6da85e20, 0x3c9ab: 0x6da86020,\n\t0x3c9ac: 0x6da86220, 0x3c9ad: 0x6da86420, 0x3c9ae: 0x6da86620, 0x3c9af: 0x6da86820,\n\t0x3c9b0: 0x6da86a20, 0x3c9b1: 0x6da86c20, 0x3c9b2: 0x6da86e20, 0x3c9b3: 0x6dc9aa20,\n\t0x3c9b4: 0x6dc9ac20, 0x3c9b5: 0x6dc9ae20, 0x3c9b6: 0x6dc9b020, 0x3c9b7: 0x6dc9b220,\n\t0x3c9b8: 0x6dc9b420, 0x3c9b9: 0x6dc9b620, 0x3c9ba: 0x6de56220, 0x3c9bb: 0x6de56420,\n\t0x3c9bc: 0x6de56620, 0x3c9bd: 0x6de56820, 0x3c9be: 0x6de56a20, 0x3c9bf: 0x6de56c20,\n\t// Block 0xf27, offset 0x3c9c0\n\t0x3c9c0: 0x6dfc4220, 0x3c9c1: 0x6dfc4420, 0x3c9c2: 0x6dfc4620, 0x3c9c3: 0x6e0f7220,\n\t0x3c9c4: 0x6e0f7420, 0x3c9c5: 0x6e0f7620, 0x3c9c6: 0x6e0f7820, 0x3c9c7: 0x6e0f7a20,\n\t0x3c9c8: 0x6e1e6a20, 0x3c9c9: 0x6e1e6c20, 0x3c9ca: 0x6e29d220, 0x3c9cb: 0x6e29d420,\n\t0x3c9cc: 0x6e32be20, 0x3c9cd: 0x6c09ce20, 0x3c9ce: 0x6c23ca20, 0x3c9cf: 0x6c23cc20,\n\t0x3c9d0: 0x6c23ce20, 0x3c9d1: 0x6c3a1620, 0x3c9d2: 0x6c3a1820, 0x3c9d3: 0x6c3a1a20,\n\t0x3c9d4: 0x6c3a1c20, 0x3c9d5: 0x6c3a1e20, 0x3c9d6: 0x6c3a2020, 0x3c9d7: 0x6c3a2220,\n\t0x3c9d8: 0x6c55d820, 0x3c9d9: 0x6c55da20, 0x3c9da: 0x6c55dc20, 0x3c9db: 0x6c55de20,\n\t0x3c9dc: 0x6c55e020, 0x3c9dd: 0x6c55e220, 0x3c9de: 0x6c55e420, 0x3c9df: 0x6c55e620,\n\t0x3c9e0: 0x6c55e820, 0x3c9e1: 0x6c55ea20, 0x3c9e2: 0x6c55ec20, 0x3c9e3: 0x6c78b820,\n\t0x3c9e4: 0x6c78ba20, 0x3c9e5: 0x6c78bc20, 0x3c9e6: 0x6c78be20, 0x3c9e7: 0x6c78c020,\n\t0x3c9e8: 0x6c78c220, 0x3c9e9: 0x6c78c420, 0x3c9ea: 0x6c78c620, 0x3c9eb: 0x6ca1ba20,\n\t0x3c9ec: 0x6ca1bc20, 0x3c9ed: 0x6ca1be20, 0x3c9ee: 0x6ca1c020, 0x3c9ef: 0x6ca1c220,\n\t0x3c9f0: 0x6ca1c420, 0x3c9f1: 0x6ca1c620, 0x3c9f2: 0x6ca1c820, 0x3c9f3: 0x6ccee820,\n\t0x3c9f4: 0x6cceea20, 0x3c9f5: 0x6cceec20, 0x3c9f6: 0x6cceee20, 0x3c9f7: 0x6ccef020,\n\t0x3c9f8: 0x6ccef220, 0x3c9f9: 0x6ccef420, 0x3c9fa: 0x6ccef620, 0x3c9fb: 0x6ccef820,\n\t0x3c9fc: 0x6ccefa20, 0x3c9fd: 0x6ccefc20, 0x3c9fe: 0x6ccefe20, 0x3c9ff: 0x6ccf0020,\n\t// Block 0xf28, offset 0x3ca00\n\t0x3ca00: 0x6ccf0220, 0x3ca01: 0x6ccf0420, 0x3ca02: 0x6ccf0620, 0x3ca03: 0x6ccf0820,\n\t0x3ca04: 0x6cfd1220, 0x3ca05: 0x6cfd1420, 0x3ca06: 0x6cfd1620, 0x3ca07: 0x6cfd1820,\n\t0x3ca08: 0x6cfd1a20, 0x3ca09: 0x6cfd1c20, 0x3ca0a: 0x6cfd1e20, 0x3ca0b: 0x6cfd2020,\n\t0x3ca0c: 0x6cfd2220, 0x3ca0d: 0x6cfd2420, 0x3ca0e: 0x6cfd2620, 0x3ca0f: 0x6cfd2820,\n\t0x3ca10: 0x6cfd2a20, 0x3ca11: 0x6cfd2c20, 0x3ca12: 0x6d2bba20, 0x3ca13: 0x6d2bbc20,\n\t0x3ca14: 0x6d2bbe20, 0x3ca15: 0x6d2bc020, 0x3ca16: 0x6d2bc220, 0x3ca17: 0x6d2bc420,\n\t0x3ca18: 0x6d2bc620, 0x3ca19: 0x6d2bc820, 0x3ca1a: 0x6d2bca20, 0x3ca1b: 0x6d2bcc20,\n\t0x3ca1c: 0x6d2bce20, 0x3ca1d: 0x6d2bd020, 0x3ca1e: 0x6d2bd220, 0x3ca1f: 0x6d2bd420,\n\t0x3ca20: 0x6d2bd620, 0x3ca21: 0x6d58f020, 0x3ca22: 0x6d58f220, 0x3ca23: 0x6d58f420,\n\t0x3ca24: 0x6d58f620, 0x3ca25: 0x6d58f820, 0x3ca26: 0x6d58fa20, 0x3ca27: 0x6d58fc20,\n\t0x3ca28: 0x6d58fe20, 0x3ca29: 0x6d590020, 0x3ca2a: 0x6d841620, 0x3ca2b: 0x6d841820,\n\t0x3ca2c: 0x6d841a20, 0x3ca2d: 0x6d841c20, 0x3ca2e: 0x6d841e20, 0x3ca2f: 0x6d842020,\n\t0x3ca30: 0x6d842220, 0x3ca31: 0x6d842420, 0x3ca32: 0x6d842620, 0x3ca33: 0x6d842820,\n\t0x3ca34: 0x6da90c20, 0x3ca35: 0x6da90e20, 0x3ca36: 0x6da91020, 0x3ca37: 0x6da91220,\n\t0x3ca38: 0x6da91420, 0x3ca39: 0x6da91620, 0x3ca3a: 0x6da91820, 0x3ca3b: 0x6da91a20,\n\t0x3ca3c: 0x6dca3020, 0x3ca3d: 0x6dca3220, 0x3ca3e: 0x6dca3420, 0x3ca3f: 0x6dca3620,\n\t// Block 0xf29, offset 0x3ca40\n\t0x3ca40: 0x6dca3820, 0x3ca41: 0x6de5d020, 0x3ca42: 0x6de5d220, 0x3ca43: 0x6dfcc420,\n\t0x3ca44: 0x6dfcc620, 0x3ca45: 0x6dfcc820, 0x3ca46: 0x6e1e9420, 0x3ca47: 0x6e1e9620,\n\t0x3ca48: 0x6e29fc20, 0x3ca49: 0x6e32cc20, 0x3ca4a: 0x6e390620, 0x3ca4b: 0x6e390820,\n\t0x3ca4c: 0x6e407420, 0x3ca4d: 0x6c23d820, 0x3ca4e: 0x6c561220, 0x3ca4f: 0x6ca1d820,\n\t0x3ca50: 0x6ccf1a20, 0x3ca51: 0x6ccf1c20, 0x3ca52: 0x6ccf1e20, 0x3ca53: 0x6ccf2020,\n\t0x3ca54: 0x6cfd3a20, 0x3ca55: 0x6cfd3c20, 0x3ca56: 0x6d591420, 0x3ca57: 0x6d591620,\n\t0x3ca58: 0x6da92c20, 0x3ca59: 0x6da92e20, 0x3ca5a: 0x6e470020, 0x3ca5b: 0x6c78dc20,\n\t0x3ca5c: 0x6ca1de20, 0x3ca5d: 0x6c3a4420, 0x3ca5e: 0x6ca1f620, 0x3ca5f: 0x6ccf3a20,\n\t0x3ca60: 0x6d592620, 0x3ca61: 0x6dca4220, 0x3ca62: 0x6c790020, 0x3ca63: 0x6ca20620,\n\t0x3ca64: 0x6ca20820, 0x3ca65: 0x6ccf6420, 0x3ca66: 0x6d845020, 0x3ca67: 0x6c3a6020,\n\t0x3ca68: 0x6ccf7020, 0x3ca69: 0x6c23fe20, 0x3ca6a: 0x6c569020, 0x3ca6b: 0x6c569220,\n\t0x3ca6c: 0x6c792e20, 0x3ca6d: 0x6c793020, 0x3ca6e: 0x6c793220, 0x3ca6f: 0x6ccfca20,\n\t0x3ca70: 0x6cfdbc20, 0x3ca71: 0x6d2c6220, 0x3ca72: 0x6d2c6420, 0x3ca73: 0x6d2c6620,\n\t0x3ca74: 0x6d598420, 0x3ca75: 0x6d847c20, 0x3ca76: 0x6e0fc620, 0x3ca77: 0x6c246a20,\n\t0x3ca78: 0x6c3b3420, 0x3ca79: 0x6ccfcc20, 0x3ca7a: 0x6c572220, 0x3ca7b: 0x6c572420,\n\t0x3ca7c: 0x6c79b620, 0x3ca7d: 0x6c79b820, 0x3ca7e: 0x6ca2cc20, 0x3ca7f: 0x6ca2ce20,\n\t// Block 0xf2a, offset 0x3ca80\n\t0x3ca80: 0x6ca2d020, 0x3ca81: 0x6ca2d220, 0x3ca82: 0x6cd06c20, 0x3ca83: 0x6cd06e20,\n\t0x3ca84: 0x6cd07020, 0x3ca85: 0x6cd07220, 0x3ca86: 0x6cfe4620, 0x3ca87: 0x6cfe4820,\n\t0x3ca88: 0x6d2cde20, 0x3ca89: 0x6d5a0420, 0x3ca8a: 0x6da99420, 0x3ca8b: 0x6dca8220,\n\t0x3ca8c: 0x6de61a20, 0x3ca8d: 0x6c13cc20, 0x3ca8e: 0x6c3b9c20, 0x3ca8f: 0x6c3b9e20,\n\t0x3ca90: 0x6c3ba020, 0x3ca91: 0x6c3ba220, 0x3ca92: 0x6c3ba420, 0x3ca93: 0x6c3ba620,\n\t0x3ca94: 0x6c3ba820, 0x3ca95: 0x6c57c220, 0x3ca96: 0x6c57c420, 0x3ca97: 0x6c7a5e20,\n\t0x3ca98: 0x6c7a6020, 0x3ca99: 0x6c7a6220, 0x3ca9a: 0x6c7a6420, 0x3ca9b: 0x6c7a6620,\n\t0x3ca9c: 0x6c7a6820, 0x3ca9d: 0x6c7a6a20, 0x3ca9e: 0x6c7a6c20, 0x3ca9f: 0x6c7a6e20,\n\t0x3caa0: 0x6ca37020, 0x3caa1: 0x6ca37220, 0x3caa2: 0x6ca37420, 0x3caa3: 0x6ca37620,\n\t0x3caa4: 0x6ca37820, 0x3caa5: 0x6ca37a20, 0x3caa6: 0x6cd14420, 0x3caa7: 0x6cd14620,\n\t0x3caa8: 0x6cd14820, 0x3caa9: 0x6cd14a20, 0x3caaa: 0x6cd14c20, 0x3caab: 0x6cd14e20,\n\t0x3caac: 0x6cd15020, 0x3caad: 0x6cd15220, 0x3caae: 0x6cd15420, 0x3caaf: 0x6cd15620,\n\t0x3cab0: 0x6cd15820, 0x3cab1: 0x6cd15a20, 0x3cab2: 0x6cd15c20, 0x3cab3: 0x6cff2020,\n\t0x3cab4: 0x6cff2220, 0x3cab5: 0x6cff2420, 0x3cab6: 0x6cff2620, 0x3cab7: 0x6cff2820,\n\t0x3cab8: 0x6cff2a20, 0x3cab9: 0x6cff2c20, 0x3caba: 0x6cff2e20, 0x3cabb: 0x6cff3020,\n\t0x3cabc: 0x6cff3220, 0x3cabd: 0x6cff3420, 0x3cabe: 0x6cff3620, 0x3cabf: 0x6cff3820,\n\t// Block 0xf2b, offset 0x3cac0\n\t0x3cac0: 0x6cff3a20, 0x3cac1: 0x6cff3c20, 0x3cac2: 0x6cff3e20, 0x3cac3: 0x6d2d6a20,\n\t0x3cac4: 0x6d2d6c20, 0x3cac5: 0x6d2d6e20, 0x3cac6: 0x6d2d7020, 0x3cac7: 0x6d2d7220,\n\t0x3cac8: 0x6d2d7420, 0x3cac9: 0x6d2d7620, 0x3caca: 0x6d2d7820, 0x3cacb: 0x6d2d7a20,\n\t0x3cacc: 0x6d2d7c20, 0x3cacd: 0x6d2d7e20, 0x3cace: 0x6d2d8020, 0x3cacf: 0x6d2d8220,\n\t0x3cad0: 0x6d5aa220, 0x3cad1: 0x6d5aa420, 0x3cad2: 0x6d5aa620, 0x3cad3: 0x6d5aa820,\n\t0x3cad4: 0x6d5aaa20, 0x3cad5: 0x6d5aac20, 0x3cad6: 0x6d5aae20, 0x3cad7: 0x6d855420,\n\t0x3cad8: 0x6d855620, 0x3cad9: 0x6d855820, 0x3cada: 0x6d855a20, 0x3cadb: 0x6d855c20,\n\t0x3cadc: 0x6d855e20, 0x3cadd: 0x6d856020, 0x3cade: 0x6d856220, 0x3cadf: 0x6d856420,\n\t0x3cae0: 0x6d856620, 0x3cae1: 0x6daa0420, 0x3cae2: 0x6daa0620, 0x3cae3: 0x6daa0820,\n\t0x3cae4: 0x6daa0a20, 0x3cae5: 0x6daa0c20, 0x3cae6: 0x6daa0e20, 0x3cae7: 0x6dcade20,\n\t0x3cae8: 0x6dcae020, 0x3cae9: 0x6de66220, 0x3caea: 0x6de66420, 0x3caeb: 0x6de66620,\n\t0x3caec: 0x6dfd2420, 0x3caed: 0x6dfd2620, 0x3caee: 0x6dfd2820, 0x3caef: 0x6dfd2a20,\n\t0x3caf0: 0x6e0ff220, 0x3caf1: 0x6e2a2c20, 0x3caf2: 0x6e32e220, 0x3caf3: 0x6c3bb020,\n\t0x3caf4: 0x6c57d420, 0x3caf5: 0x6cff5020, 0x3caf6: 0x6c3bc220, 0x3caf7: 0x6c57fa20,\n\t0x3caf8: 0x6c57fc20, 0x3caf9: 0x6c7aac20, 0x3cafa: 0x6cff8420, 0x3cafb: 0x6cff8620,\n\t0x3cafc: 0x6d2dd020, 0x3cafd: 0x6d5aec20, 0x3cafe: 0x6d5aee20, 0x3caff: 0x6e1ed420,\n\t// Block 0xf2c, offset 0x3cb00\n\t0x3cb00: 0x6cd1a020, 0x3cb01: 0x6c24a820, 0x3cb02: 0x6ca3ce20, 0x3cb03: 0x6cff9c20,\n\t0x3cb04: 0x6cff9e20, 0x3cb05: 0x6cffa020, 0x3cb06: 0x6c13d420, 0x3cb07: 0x6c24d220,\n\t0x3cb08: 0x6c3c1220, 0x3cb09: 0x6c588620, 0x3cb0a: 0x6c588820, 0x3cb0b: 0x6c588a20,\n\t0x3cb0c: 0x6c588c20, 0x3cb0d: 0x6c7b0620, 0x3cb0e: 0x6c7b0820, 0x3cb0f: 0x6c7b0a20,\n\t0x3cb10: 0x6c7b0c20, 0x3cb11: 0x6ca41420, 0x3cb12: 0x6ca41620, 0x3cb13: 0x6cd1fc20,\n\t0x3cb14: 0x6cd1fe20, 0x3cb15: 0x6cd20020, 0x3cb16: 0x6cd20220, 0x3cb17: 0x6cd20420,\n\t0x3cb18: 0x6cffea20, 0x3cb19: 0x6cffec20, 0x3cb1a: 0x6cffee20, 0x3cb1b: 0x6d2e0020,\n\t0x3cb1c: 0x6d2e0220, 0x3cb1d: 0x6d5b2a20, 0x3cb1e: 0x6d5b2c20, 0x3cb1f: 0x6d85b820,\n\t0x3cb20: 0x6d85ba20, 0x3cb21: 0x6d85bc20, 0x3cb22: 0x6daa6c20, 0x3cb23: 0x6dcb1c20,\n\t0x3cb24: 0x6dfd4620, 0x3cb25: 0x6e101a20, 0x3cb26: 0x6e101c20, 0x3cb27: 0x6daa6e20,\n\t0x3cb28: 0x6c58fa20, 0x3cb29: 0x6c58fc20, 0x3cb2a: 0x6c58fe20, 0x3cb2b: 0x6c590020,\n\t0x3cb2c: 0x6c7b9c20, 0x3cb2d: 0x6c7b9e20, 0x3cb2e: 0x6c7ba020, 0x3cb2f: 0x6ca48420,\n\t0x3cb30: 0x6cd2b420, 0x3cb31: 0x6cd2b620, 0x3cb32: 0x6d00ae20, 0x3cb33: 0x6d2ea020,\n\t0x3cb34: 0x6d2ea220, 0x3cb35: 0x6d2ea420, 0x3cb36: 0x6d5bd220, 0x3cb37: 0x6d5bd420,\n\t0x3cb38: 0x6daafc20, 0x3cb39: 0x6daafe20, 0x3cb3a: 0x6de6da20, 0x3cb3b: 0x6c593620,\n\t0x3cb3c: 0x6c593820, 0x3cb3d: 0x6c7bd020, 0x3cb3e: 0x6cd2ea20, 0x3cb3f: 0x6cd2ec20,\n\t// Block 0xf2d, offset 0x3cb40\n\t0x3cb40: 0x6d00e020, 0x3cb41: 0x6d00e220, 0x3cb42: 0x6d2ec420, 0x3cb43: 0x6d2ec620,\n\t0x3cb44: 0x6d5bf620, 0x3cb45: 0x6e104e20, 0x3cb46: 0x6c3c6420, 0x3cb47: 0x6c594c20,\n\t0x3cb48: 0x6d2eee20, 0x3cb49: 0x6d2ef020, 0x3cb4a: 0x6c596e20, 0x3cb4b: 0x6c597020,\n\t0x3cb4c: 0x6c7c2a20, 0x3cb4d: 0x6c7c2c20, 0x3cb4e: 0x6ca4ec20, 0x3cb4f: 0x6cd32820,\n\t0x3cb50: 0x6cd32a20, 0x3cb51: 0x6d012a20, 0x3cb52: 0x6d012c20, 0x3cb53: 0x6d2f0420,\n\t0x3cb54: 0x6d2f0620, 0x3cb55: 0x6d5c2620, 0x3cb56: 0x6d86ac20, 0x3cb57: 0x6dab4a20,\n\t0x3cb58: 0x6dab4c20, 0x3cb59: 0x6dcbbc20, 0x3cb5a: 0x6de70a20, 0x3cb5b: 0x6e105a20,\n\t0x3cb5c: 0x6e1f1420, 0x3cb5d: 0x6e331220, 0x3cb5e: 0x6e444020, 0x3cb5f: 0x6c3cae20,\n\t0x3cb60: 0x6c3cb020, 0x3cb61: 0x6c5a1420, 0x3cb62: 0x6c5a1620, 0x3cb63: 0x6c5a1820,\n\t0x3cb64: 0x6c7ccc20, 0x3cb65: 0x6c7cce20, 0x3cb66: 0x6c7cd020, 0x3cb67: 0x6c7cd220,\n\t0x3cb68: 0x6ca58a20, 0x3cb69: 0x6ca58c20, 0x3cb6a: 0x6ca58e20, 0x3cb6b: 0x6cd3f020,\n\t0x3cb6c: 0x6cd3f220, 0x3cb6d: 0x6d01ee20, 0x3cb6e: 0x6d01f020, 0x3cb6f: 0x6d01f220,\n\t0x3cb70: 0x6d01f420, 0x3cb71: 0x6d2fc620, 0x3cb72: 0x6d2fc820, 0x3cb73: 0x6d2fca20,\n\t0x3cb74: 0x6d2fcc20, 0x3cb75: 0x6d5cca20, 0x3cb76: 0x6d5ccc20, 0x3cb77: 0x6d5cce20,\n\t0x3cb78: 0x6d5cd020, 0x3cb79: 0x6d874c20, 0x3cb7a: 0x6d874e20, 0x3cb7b: 0x6d875020,\n\t0x3cb7c: 0x6dabe020, 0x3cb7d: 0x6dabe220, 0x3cb7e: 0x6dabe420, 0x3cb7f: 0x6dabe620,\n\t// Block 0xf2e, offset 0x3cb80\n\t0x3cb80: 0x6dabe820, 0x3cb81: 0x6de75020, 0x3cb82: 0x6dfdde20, 0x3cb83: 0x6e108420,\n\t0x3cb84: 0x6e108620, 0x3cb85: 0x6e444420, 0x3cb86: 0x6c5a2220, 0x3cb87: 0x6cd40820,\n\t0x3cb88: 0x6c5a3820, 0x3cb89: 0x6c5a3a20, 0x3cb8a: 0x6ca5cc20, 0x3cb8b: 0x6d022e20,\n\t0x3cb8c: 0x6d2ffa20, 0x3cb8d: 0x6d5cf420, 0x3cb8e: 0x6d5cf620, 0x3cb8f: 0x6dfdea20,\n\t0x3cb90: 0x6e108a20, 0x3cb91: 0x6c5ab820, 0x3cb92: 0x6c5aba20, 0x3cb93: 0x6c5abc20,\n\t0x3cb94: 0x6c7db420, 0x3cb95: 0x6c7db620, 0x3cb96: 0x6c7db820, 0x3cb97: 0x6c7dba20,\n\t0x3cb98: 0x6c7dbc20, 0x3cb99: 0x6ca68020, 0x3cb9a: 0x6ca68220, 0x3cb9b: 0x6ca68420,\n\t0x3cb9c: 0x6ca68620, 0x3cb9d: 0x6ca68820, 0x3cb9e: 0x6cd4ac20, 0x3cb9f: 0x6cd4ae20,\n\t0x3cba0: 0x6cd4b020, 0x3cba1: 0x6cd4b220, 0x3cba2: 0x6cd4b420, 0x3cba3: 0x6cd4b620,\n\t0x3cba4: 0x6d02fc20, 0x3cba5: 0x6d02fe20, 0x3cba6: 0x6d030020, 0x3cba7: 0x6d030220,\n\t0x3cba8: 0x6d030420, 0x3cba9: 0x6d030620, 0x3cbaa: 0x6d30b020, 0x3cbab: 0x6d30b220,\n\t0x3cbac: 0x6d5d8220, 0x3cbad: 0x6d5d8420, 0x3cbae: 0x6d5d8620, 0x3cbaf: 0x6d87e820,\n\t0x3cbb0: 0x6d87ea20, 0x3cbb1: 0x6d87ec20, 0x3cbb2: 0x6d87ee20, 0x3cbb3: 0x6d87f020,\n\t0x3cbb4: 0x6d87f220, 0x3cbb5: 0x6dac9820, 0x3cbb6: 0x6dac9a20, 0x3cbb7: 0x6dac9c20,\n\t0x3cbb8: 0x6dcc9a20, 0x3cbb9: 0x6dcc9c20, 0x3cbba: 0x6dcc9e20, 0x3cbbb: 0x6de7a420,\n\t0x3cbbc: 0x6de7a620, 0x3cbbd: 0x6de7a820, 0x3cbbe: 0x6e10ba20, 0x3cbbf: 0x6e2a9e20,\n\t// Block 0xf2f, offset 0x3cbc0\n\t0x3cbc0: 0x6c256020, 0x3cbc1: 0x6c256220, 0x3cbc2: 0x6c3d2820, 0x3cbc3: 0x6c3d2a20,\n\t0x3cbc4: 0x6c5b2420, 0x3cbc5: 0x6c5b2620, 0x3cbc6: 0x6c5b2820, 0x3cbc7: 0x6c7e2420,\n\t0x3cbc8: 0x6c7e2620, 0x3cbc9: 0x6c7e2820, 0x3cbca: 0x6c7e2a20, 0x3cbcb: 0x6ca6e820,\n\t0x3cbcc: 0x6ca6ea20, 0x3cbcd: 0x6ca6ec20, 0x3cbce: 0x6ca6ee20, 0x3cbcf: 0x6ca6f020,\n\t0x3cbd0: 0x6cd51220, 0x3cbd1: 0x6cd51420, 0x3cbd2: 0x6cd51620, 0x3cbd3: 0x6cd51820,\n\t0x3cbd4: 0x6cd51a20, 0x3cbd5: 0x6cd51c20, 0x3cbd6: 0x6cd51e20, 0x3cbd7: 0x6cd52020,\n\t0x3cbd8: 0x6cd52220, 0x3cbd9: 0x6cd52420, 0x3cbda: 0x6d037220, 0x3cbdb: 0x6d037420,\n\t0x3cbdc: 0x6d310c20, 0x3cbdd: 0x6d310e20, 0x3cbde: 0x6d311020, 0x3cbdf: 0x6d311220,\n\t0x3cbe0: 0x6d5dcc20, 0x3cbe1: 0x6d5dce20, 0x3cbe2: 0x6dacc820, 0x3cbe3: 0x6dccbc20,\n\t0x3cbe4: 0x6e333820, 0x3cbe5: 0x6dccbe20, 0x3cbe6: 0x6c140a20, 0x3cbe7: 0x6c3d6620,\n\t0x3cbe8: 0x6c5b8e20, 0x3cbe9: 0x6c5b9020, 0x3cbea: 0x6c7e9e20, 0x3cbeb: 0x6c7ea020,\n\t0x3cbec: 0x6c7ea220, 0x3cbed: 0x6c7ea420, 0x3cbee: 0x6ca76e20, 0x3cbef: 0x6ca77020,\n\t0x3cbf0: 0x6ca77220, 0x3cbf1: 0x6ca77420, 0x3cbf2: 0x6cd59420, 0x3cbf3: 0x6cd59620,\n\t0x3cbf4: 0x6cd59820, 0x3cbf5: 0x6cd59a20, 0x3cbf6: 0x6cd59c20, 0x3cbf7: 0x6cd59e20,\n\t0x3cbf8: 0x6cd5a020, 0x3cbf9: 0x6d042220, 0x3cbfa: 0x6d042420, 0x3cbfb: 0x6d042620,\n\t0x3cbfc: 0x6d31b820, 0x3cbfd: 0x6d31ba20, 0x3cbfe: 0x6d31bc20, 0x3cbff: 0x6d31be20,\n\t// Block 0xf30, offset 0x3cc00\n\t0x3cc00: 0x6d31c020, 0x3cc01: 0x6d5e6220, 0x3cc02: 0x6d5e6420, 0x3cc03: 0x6d5e6620,\n\t0x3cc04: 0x6d5e6820, 0x3cc05: 0x6d88b820, 0x3cc06: 0x6dad4020, 0x3cc07: 0x6dcd1820,\n\t0x3cc08: 0x6dcd1a20, 0x3cc09: 0x6dfe8220, 0x3cc0a: 0x6c5bd020, 0x3cc0b: 0x6c7ef420,\n\t0x3cc0c: 0x6ca7c020, 0x3cc0d: 0x6ca7c220, 0x3cc0e: 0x6cd60420, 0x3cc0f: 0x6cd60620,\n\t0x3cc10: 0x6cd60820, 0x3cc11: 0x6d048020, 0x3cc12: 0x6d048220, 0x3cc13: 0x6d048420,\n\t0x3cc14: 0x6d320420, 0x3cc15: 0x6d320620, 0x3cc16: 0x6d5eb420, 0x3cc17: 0x6d891820,\n\t0x3cc18: 0x6d891a20, 0x3cc19: 0x6d891c20, 0x3cc1a: 0x6d891e20, 0x3cc1b: 0x6dad8620,\n\t0x3cc1c: 0x6dcd3620, 0x3cc1d: 0x6e2ac020, 0x3cc1e: 0x6c3d9820, 0x3cc1f: 0x6c5bf420,\n\t0x3cc20: 0x6c7f2e20, 0x3cc21: 0x6c7f3020, 0x3cc22: 0x6ca7e420, 0x3cc23: 0x6cd63220,\n\t0x3cc24: 0x6cd63420, 0x3cc25: 0x6d04b220, 0x3cc26: 0x6d04b420, 0x3cc27: 0x6d322a20,\n\t0x3cc28: 0x6d322c20, 0x3cc29: 0x6d5ec620, 0x3cc2a: 0x6d5ec820, 0x3cc2b: 0x6d5eca20,\n\t0x3cc2c: 0x6d892c20, 0x3cc2d: 0x6dada420, 0x3cc2e: 0x6de81020, 0x3cc2f: 0x6e1f8420,\n\t0x3cc30: 0x6c3da620, 0x3cc31: 0x6c5c2c20, 0x3cc32: 0x6c7f9c20, 0x3cc33: 0x6c7f9e20,\n\t0x3cc34: 0x6c7fa020, 0x3cc35: 0x6c7fa220, 0x3cc36: 0x6c7fa420, 0x3cc37: 0x6c7fa620,\n\t0x3cc38: 0x6ca88a20, 0x3cc39: 0x6ca88c20, 0x3cc3a: 0x6ca88e20, 0x3cc3b: 0x6ca89020,\n\t0x3cc3c: 0x6cd6da20, 0x3cc3d: 0x6cd6dc20, 0x3cc3e: 0x6d058c20, 0x3cc3f: 0x6d058e20,\n\t// Block 0xf31, offset 0x3cc40\n\t0x3cc40: 0x6d059020, 0x3cc41: 0x6d059220, 0x3cc42: 0x6d059420, 0x3cc43: 0x6d059620,\n\t0x3cc44: 0x6d332a20, 0x3cc45: 0x6d332c20, 0x3cc46: 0x6d332e20, 0x3cc47: 0x6d333020,\n\t0x3cc48: 0x6d333220, 0x3cc49: 0x6d333420, 0x3cc4a: 0x6d5fdc20, 0x3cc4b: 0x6d5fde20,\n\t0x3cc4c: 0x6d5fe020, 0x3cc4d: 0x6d5fe220, 0x3cc4e: 0x6d5fe420, 0x3cc4f: 0x6d5fe620,\n\t0x3cc50: 0x6d8a4020, 0x3cc51: 0x6d8a4220, 0x3cc52: 0x6d8a4420, 0x3cc53: 0x6d8a4620,\n\t0x3cc54: 0x6d8a4820, 0x3cc55: 0x6d8a4a20, 0x3cc56: 0x6d8a4c20, 0x3cc57: 0x6d8a4e20,\n\t0x3cc58: 0x6daeb420, 0x3cc59: 0x6daeb620, 0x3cc5a: 0x6daeb820, 0x3cc5b: 0x6daeba20,\n\t0x3cc5c: 0x6daebc20, 0x3cc5d: 0x6daebe20, 0x3cc5e: 0x6daec020, 0x3cc5f: 0x6daec220,\n\t0x3cc60: 0x6dce5a20, 0x3cc61: 0x6dce5c20, 0x3cc62: 0x6dce5e20, 0x3cc63: 0x6dce6020,\n\t0x3cc64: 0x6dce6220, 0x3cc65: 0x6de8be20, 0x3cc66: 0x6de8c020, 0x3cc67: 0x6dff1a20,\n\t0x3cc68: 0x6e118220, 0x3cc69: 0x6e118420, 0x3cc6a: 0x6e118620, 0x3cc6b: 0x6e118820,\n\t0x3cc6c: 0x6e1fe020, 0x3cc6d: 0x6e2b0220, 0x3cc6e: 0x6e337e20, 0x3cc6f: 0x6e398220,\n\t0x3cc70: 0x6e42de20, 0x3cc71: 0x6c3db620, 0x3cc72: 0x6c3db820, 0x3cc73: 0x6c5c5a20,\n\t0x3cc74: 0x6c5c5c20, 0x3cc75: 0x6c7fe820, 0x3cc76: 0x6c7fea20, 0x3cc77: 0x6c7fec20,\n\t0x3cc78: 0x6ca8e820, 0x3cc79: 0x6ca8ea20, 0x3cc7a: 0x6ca8ec20, 0x3cc7b: 0x6ca8ee20,\n\t0x3cc7c: 0x6ca8f020, 0x3cc7d: 0x6cd73a20, 0x3cc7e: 0x6cd73c20, 0x3cc7f: 0x6cd73e20,\n\t// Block 0xf32, offset 0x3cc80\n\t0x3cc80: 0x6cd74020, 0x3cc81: 0x6d060220, 0x3cc82: 0x6d33ac20, 0x3cc83: 0x6d33ae20,\n\t0x3cc84: 0x6d33b020, 0x3cc85: 0x6d33b220, 0x3cc86: 0x6d605e20, 0x3cc87: 0x6d606020,\n\t0x3cc88: 0x6d606220, 0x3cc89: 0x6d8aa420, 0x3cc8a: 0x6d8aa620, 0x3cc8b: 0x6d8aa820,\n\t0x3cc8c: 0x6d8aaa20, 0x3cc8d: 0x6daf1a20, 0x3cc8e: 0x6daf1c20, 0x3cc8f: 0x6dceba20,\n\t0x3cc90: 0x6dcebc20, 0x3cc91: 0x6dcebe20, 0x3cc92: 0x6de90420, 0x3cc93: 0x6de90620,\n\t0x3cc94: 0x6de90820, 0x3cc95: 0x6de90a20, 0x3cc96: 0x6dff3620, 0x3cc97: 0x6e1ffa20,\n\t0x3cc98: 0x6e1ffc20, 0x3cc99: 0x6e1ffe20, 0x3cc9a: 0x6c3dd220, 0x3cc9b: 0x6c3dd420,\n\t0x3cc9c: 0x6c5c9420, 0x3cc9d: 0x6c5c9620, 0x3cc9e: 0x6c809a20, 0x3cc9f: 0x6ca99820,\n\t0x3cca0: 0x6ca99a20, 0x3cca1: 0x6ca99c20, 0x3cca2: 0x6cd80620, 0x3cca3: 0x6cd80820,\n\t0x3cca4: 0x6cd80a20, 0x3cca5: 0x6d06c220, 0x3cca6: 0x6d06c420, 0x3cca7: 0x6d06c620,\n\t0x3cca8: 0x6d06c820, 0x3cca9: 0x6d06ca20, 0x3ccaa: 0x6d34b420, 0x3ccab: 0x6d34b620,\n\t0x3ccac: 0x6d34b820, 0x3ccad: 0x6d34ba20, 0x3ccae: 0x6d34bc20, 0x3ccaf: 0x6d34be20,\n\t0x3ccb0: 0x6d34c020, 0x3ccb1: 0x6d34c220, 0x3ccb2: 0x6d34c420, 0x3ccb3: 0x6d617020,\n\t0x3ccb4: 0x6d617220, 0x3ccb5: 0x6d617420, 0x3ccb6: 0x6d617620, 0x3ccb7: 0x6d617820,\n\t0x3ccb8: 0x6d8b8a20, 0x3ccb9: 0x6d8b8c20, 0x3ccba: 0x6d8b8e20, 0x3ccbb: 0x6d8b9020,\n\t0x3ccbc: 0x6d8b9220, 0x3ccbd: 0x6dafe220, 0x3ccbe: 0x6dafe420, 0x3ccbf: 0x6dafe620,\n\t// Block 0xf33, offset 0x3ccc0\n\t0x3ccc0: 0x6dafe820, 0x3ccc1: 0x6dcf7220, 0x3ccc2: 0x6dcf7420, 0x3ccc3: 0x6dcf7620,\n\t0x3ccc4: 0x6dcf7820, 0x3ccc5: 0x6de99220, 0x3ccc6: 0x6de99420, 0x3ccc7: 0x6de99620,\n\t0x3ccc8: 0x6de99820, 0x3ccc9: 0x6de99a20, 0x3ccca: 0x6de99c20, 0x3cccb: 0x6de99e20,\n\t0x3cccc: 0x6dff8a20, 0x3cccd: 0x6dff8c20, 0x3ccce: 0x6dff8e20, 0x3cccf: 0x6e11fa20,\n\t0x3ccd0: 0x6e11fc20, 0x3ccd1: 0x6e11fe20, 0x3ccd2: 0x6e203420, 0x3ccd3: 0x6e203620,\n\t0x3ccd4: 0x6e203820, 0x3ccd5: 0x6e2b3020, 0x3ccd6: 0x6e39a620, 0x3ccd7: 0x6e3dd220,\n\t0x3ccd8: 0x6e40b420, 0x3ccd9: 0x6c050220, 0x3ccda: 0x6c25c420, 0x3ccdb: 0x6c25c620,\n\t0x3ccdc: 0x6c25c820, 0x3ccdd: 0x6c25ca20, 0x3ccde: 0x6c3dfc20, 0x3ccdf: 0x6c3dfe20,\n\t0x3cce0: 0x6c5cba20, 0x3cce1: 0x6c5cbc20, 0x3cce2: 0x6c5cbe20, 0x3cce3: 0x6c5cc020,\n\t0x3cce4: 0x6c80b620, 0x3cce5: 0x6c80b820, 0x3cce6: 0x6c80ba20, 0x3cce7: 0x6c80bc20,\n\t0x3cce8: 0x6c80be20, 0x3cce9: 0x6c80c020, 0x3ccea: 0x6ca9dc20, 0x3cceb: 0x6ca9de20,\n\t0x3ccec: 0x6cd84a20, 0x3cced: 0x6cd84c20, 0x3ccee: 0x6cd84e20, 0x3ccef: 0x6d06ee20,\n\t0x3ccf0: 0x6d06f020, 0x3ccf1: 0x6d34d820, 0x3ccf2: 0x6d34da20, 0x3ccf3: 0x6d34dc20,\n\t0x3ccf4: 0x6d34de20, 0x3ccf5: 0x6d618e20, 0x3ccf6: 0x6d619020, 0x3ccf7: 0x6d8ba420,\n\t0x3ccf8: 0x6daff020, 0x3ccf9: 0x6e120020, 0x3ccfa: 0x6d06fa20, 0x3ccfb: 0x6d34fa20,\n\t0x3ccfc: 0x6d61a020, 0x3ccfd: 0x6d61a220, 0x3ccfe: 0x6d8bb820, 0x3ccff: 0x6de9b220,\n\t// Block 0xf34, offset 0x3cd00\n\t0x3cd00: 0x6c3e1e20, 0x3cd01: 0x6c5cf420, 0x3cd02: 0x6c812020, 0x3cd03: 0x6caa2420,\n\t0x3cd04: 0x6caa2620, 0x3cd05: 0x6caa2820, 0x3cd06: 0x6d074220, 0x3cd07: 0x6d074420,\n\t0x3cd08: 0x6d352c20, 0x3cd09: 0x6d61c820, 0x3cd0a: 0x6d8bf020, 0x3cd0b: 0x6dcfa620,\n\t0x3cd0c: 0x6de9d420, 0x3cd0d: 0x6e120e20, 0x3cd0e: 0x6c3e2c20, 0x3cd0f: 0x6caa6620,\n\t0x3cd10: 0x6caa6820, 0x3cd11: 0x6caa6a20, 0x3cd12: 0x6caa6c20, 0x3cd13: 0x6cd8a620,\n\t0x3cd14: 0x6cd8a820, 0x3cd15: 0x6d077a20, 0x3cd16: 0x6d61f020, 0x3cd17: 0x6d61f220,\n\t0x3cd18: 0x6d61f420, 0x3cd19: 0x6d8c0a20, 0x3cd1a: 0x6db04a20, 0x3cd1b: 0x6db04c20,\n\t0x3cd1c: 0x6db04e20, 0x3cd1d: 0x6dcfd420, 0x3cd1e: 0x6dcfd620, 0x3cd1f: 0x6dffb020,\n\t0x3cd20: 0x6e204820, 0x3cd21: 0x6e204a20, 0x3cd22: 0x6c5d2c20, 0x3cd23: 0x6c818e20,\n\t0x3cd24: 0x6caab020, 0x3cd25: 0x6cd8ec20, 0x3cd26: 0x6cd8ee20, 0x3cd27: 0x6cd8f020,\n\t0x3cd28: 0x6d07a620, 0x3cd29: 0x6d07a820, 0x3cd2a: 0x6d358a20, 0x3cd2b: 0x6d623820,\n\t0x3cd2c: 0x6d623a20, 0x3cd2d: 0x6d8c3e20, 0x3cd2e: 0x6d8c4020, 0x3cd2f: 0x6db07020,\n\t0x3cd30: 0x6dd00820, 0x3cd31: 0x6dd00a20, 0x3cd32: 0x6e205420, 0x3cd33: 0x6c81a020,\n\t0x3cd34: 0x6c81a220, 0x3cd35: 0x6d07ac20, 0x3cd36: 0x6d359020, 0x3cd37: 0x6d624020,\n\t0x3cd38: 0x6dd00e20, 0x3cd39: 0x6caace20, 0x3cd3a: 0x6cd90a20, 0x3cd3b: 0x6cd90c20,\n\t0x3cd3c: 0x6d07be20, 0x3cd3d: 0x6d626620, 0x3cd3e: 0x6d8c6020, 0x3cd3f: 0x6dd02820,\n\t// Block 0xf35, offset 0x3cd40\n\t0x3cd40: 0x6c3e5820, 0x3cd41: 0x6c81f820, 0x3cd42: 0x6cd94820, 0x3cd43: 0x6cd94a20,\n\t0x3cd44: 0x6d07f620, 0x3cd45: 0x6d07f820, 0x3cd46: 0x6d07fa20, 0x3cd47: 0x6d360a20,\n\t0x3cd48: 0x6d360c20, 0x3cd49: 0x6d62b420, 0x3cd4a: 0x6d8c9220, 0x3cd4b: 0x6d8c9420,\n\t0x3cd4c: 0x6d8c9620, 0x3cd4d: 0x6d8c9820, 0x3cd4e: 0x6db0c820, 0x3cd4f: 0x6db0ca20,\n\t0x3cd50: 0x6dd05a20, 0x3cd51: 0x6dd05c20, 0x3cd52: 0x6dea1a20, 0x3cd53: 0x6e42ea20,\n\t0x3cd54: 0x6d080820, 0x3cd55: 0x6d361820, 0x3cd56: 0x6c3f1420, 0x3cd57: 0x6c3f1620,\n\t0x3cd58: 0x6c3f1820, 0x3cd59: 0x6c5e3020, 0x3cd5a: 0x6c5e3220, 0x3cd5b: 0x6c5e3420,\n\t0x3cd5c: 0x6c5e3620, 0x3cd5d: 0x6c82ce20, 0x3cd5e: 0x6c82d020, 0x3cd5f: 0x6cabd620,\n\t0x3cd60: 0x6cabd820, 0x3cd61: 0x6cabda20, 0x3cd62: 0x6cda6620, 0x3cd63: 0x6cda6820,\n\t0x3cd64: 0x6cda6a20, 0x3cd65: 0x6cda6c20, 0x3cd66: 0x6d08f220, 0x3cd67: 0x6d08f420,\n\t0x3cd68: 0x6d08f620, 0x3cd69: 0x6d36d620, 0x3cd6a: 0x6d36d820, 0x3cd6b: 0x6d36da20,\n\t0x3cd6c: 0x6d36dc20, 0x3cd6d: 0x6d36de20, 0x3cd6e: 0x6d36e020, 0x3cd6f: 0x6d634a20,\n\t0x3cd70: 0x6d634c20, 0x3cd71: 0x6d634e20, 0x3cd72: 0x6d635020, 0x3cd73: 0x6d635220,\n\t0x3cd74: 0x6d635420, 0x3cd75: 0x6d8d5020, 0x3cd76: 0x6d8d5220, 0x3cd77: 0x6d8d5420,\n\t0x3cd78: 0x6d8d5620, 0x3cd79: 0x6db15e20, 0x3cd7a: 0x6db16020, 0x3cd7b: 0x6db16220,\n\t0x3cd7c: 0x6dd0ac20, 0x3cd7d: 0x6dd0ae20, 0x3cd7e: 0x6dea6420, 0x3cd7f: 0x6dea6620,\n\t// Block 0xf36, offset 0x3cd80\n\t0x3cd80: 0x6e001420, 0x3cd81: 0x6e125820, 0x3cd82: 0x6e207c20, 0x3cd83: 0x6e2b6220,\n\t0x3cd84: 0x6e454220, 0x3cd85: 0x6c82da20, 0x3cd86: 0x6cda7a20, 0x3cd87: 0x6d08f820,\n\t0x3cd88: 0x6d36ec20, 0x3cd89: 0x6dd0b620, 0x3cd8a: 0x6cda8a20, 0x3cd8b: 0x6d636820,\n\t0x3cd8c: 0x6dd0ba20, 0x3cd8d: 0x6e3de620, 0x3cd8e: 0x6d090020, 0x3cd8f: 0x6d36fc20,\n\t0x3cd90: 0x6d36fe20, 0x3cd91: 0x6e001e20, 0x3cd92: 0x6dd0d020, 0x3cd93: 0x6e3dea20,\n\t0x3cd94: 0x6c3f3220, 0x3cd95: 0x6d091820, 0x3cd96: 0x6d091a20, 0x3cd97: 0x6d8d9420,\n\t0x3cd98: 0x6dea8420, 0x3cd99: 0x6e208420, 0x3cd9a: 0x6c5e7620, 0x3cd9b: 0x6d377220,\n\t0x3cd9c: 0x6d63e020, 0x3cd9d: 0x6d63e220, 0x3cd9e: 0x6db1ba20, 0x3cd9f: 0x6dd11620,\n\t0x3cda0: 0x6e004820, 0x3cda1: 0x6e209620, 0x3cda2: 0x6e209820, 0x3cda3: 0x6e209a20,\n\t0x3cda4: 0x6d8dd820, 0x3cda5: 0x6c14c620, 0x3cda6: 0x6c14c820, 0x3cda7: 0x6c268420,\n\t0x3cda8: 0x6c268620, 0x3cda9: 0x6c400220, 0x3cdaa: 0x6c400420, 0x3cdab: 0x6c400620,\n\t0x3cdac: 0x6c400820, 0x3cdad: 0x6c400a20, 0x3cdae: 0x6c5f7e20, 0x3cdaf: 0x6c5f8020,\n\t0x3cdb0: 0x6c5f8220, 0x3cdb1: 0x6c5f8420, 0x3cdb2: 0x6c5f8620, 0x3cdb3: 0x6c5f8820,\n\t0x3cdb4: 0x6c5f8a20, 0x3cdb5: 0x6c5f8c20, 0x3cdb6: 0x6c84b020, 0x3cdb7: 0x6c84b220,\n\t0x3cdb8: 0x6c84b420, 0x3cdb9: 0x6c84b620, 0x3cdba: 0x6c84b820, 0x3cdbb: 0x6c84ba20,\n\t0x3cdbc: 0x6c84bc20, 0x3cdbd: 0x6c84be20, 0x3cdbe: 0x6c84c020, 0x3cdbf: 0x6cadf420,\n\t// Block 0xf37, offset 0x3cdc0\n\t0x3cdc0: 0x6cadf620, 0x3cdc1: 0x6cadf820, 0x3cdc2: 0x6cadfa20, 0x3cdc3: 0x6cadfc20,\n\t0x3cdc4: 0x6cadfe20, 0x3cdc5: 0x6cae0020, 0x3cdc6: 0x6cae0220, 0x3cdc7: 0x6cae0420,\n\t0x3cdc8: 0x6cae0620, 0x3cdc9: 0x6cae0820, 0x3cdca: 0x6cae0a20, 0x3cdcb: 0x6cae0c20,\n\t0x3cdcc: 0x6cae0e20, 0x3cdcd: 0x6cae1020, 0x3cdce: 0x6cae1220, 0x3cdcf: 0x6cae1420,\n\t0x3cdd0: 0x6cdd2220, 0x3cdd1: 0x6cdd2420, 0x3cdd2: 0x6cdd2620, 0x3cdd3: 0x6cdd2820,\n\t0x3cdd4: 0x6cdd2a20, 0x3cdd5: 0x6cdd2c20, 0x3cdd6: 0x6cdd2e20, 0x3cdd7: 0x6cdd3020,\n\t0x3cdd8: 0x6cdd3220, 0x3cdd9: 0x6cdd3420, 0x3cdda: 0x6cdd3620, 0x3cddb: 0x6cdd3820,\n\t0x3cddc: 0x6cdd3a20, 0x3cddd: 0x6cdd3c20, 0x3cdde: 0x6cdd3e20, 0x3cddf: 0x6cdd4020,\n\t0x3cde0: 0x6cdd4220, 0x3cde1: 0x6d0b8c20, 0x3cde2: 0x6d0b8e20, 0x3cde3: 0x6d0b9020,\n\t0x3cde4: 0x6d0b9220, 0x3cde5: 0x6d0b9420, 0x3cde6: 0x6d0b9620, 0x3cde7: 0x6d0b9820,\n\t0x3cde8: 0x6d0b9a20, 0x3cde9: 0x6d0b9c20, 0x3cdea: 0x6d0b9e20, 0x3cdeb: 0x6d0ba020,\n\t0x3cdec: 0x6d0ba220, 0x3cded: 0x6d0ba420, 0x3cdee: 0x6d0ba620, 0x3cdef: 0x6d0ba820,\n\t0x3cdf0: 0x6cdd4620, 0x3cdf1: 0x6d0baa20, 0x3cdf2: 0x6d0bac20, 0x3cdf3: 0x6d0bae20,\n\t0x3cdf4: 0x6d0bb020, 0x3cdf5: 0x6d0bb220, 0x3cdf6: 0x6d399220, 0x3cdf7: 0x6d399420,\n\t0x3cdf8: 0x6d399620, 0x3cdf9: 0x6d399820, 0x3cdfa: 0x6d399a20, 0x3cdfb: 0x6d399c20,\n\t0x3cdfc: 0x6d399e20, 0x3cdfd: 0x6d39a020, 0x3cdfe: 0x6d39a220, 0x3cdff: 0x6d39a420,\n\t// Block 0xf38, offset 0x3ce00\n\t0x3ce00: 0x6d39a620, 0x3ce01: 0x6d39a820, 0x3ce02: 0x6d39aa20, 0x3ce03: 0x6d39ac20,\n\t0x3ce04: 0x6d39ae20, 0x3ce05: 0x6d39b020, 0x3ce06: 0x6d39b220, 0x3ce07: 0x6d39b420,\n\t0x3ce08: 0x6d65c420, 0x3ce09: 0x6d65c620, 0x3ce0a: 0x6d65c820, 0x3ce0b: 0x6d65ca20,\n\t0x3ce0c: 0x6d65cc20, 0x3ce0d: 0x6d65ce20, 0x3ce0e: 0x6d65d020, 0x3ce0f: 0x6d65d220,\n\t0x3ce10: 0x6d65d420, 0x3ce11: 0x6d65d620, 0x3ce12: 0x6d65d820, 0x3ce13: 0x6d65da20,\n\t0x3ce14: 0x6d65dc20, 0x3ce15: 0x6d65de20, 0x3ce16: 0x6d65e020, 0x3ce17: 0x6d65e220,\n\t0x3ce18: 0x6d65e420, 0x3ce19: 0x6d65e620, 0x3ce1a: 0x6d65e820, 0x3ce1b: 0x6d65ea20,\n\t0x3ce1c: 0x6d65ec20, 0x3ce1d: 0x6d8fb220, 0x3ce1e: 0x6d8fb420, 0x3ce1f: 0x6d8fb620,\n\t0x3ce20: 0x6d8fb820, 0x3ce21: 0x6d8fba20, 0x3ce22: 0x6d8fbc20, 0x3ce23: 0x6d8fbe20,\n\t0x3ce24: 0x6d8fc020, 0x3ce25: 0x6db37420, 0x3ce26: 0x6db37620, 0x3ce27: 0x6db37820,\n\t0x3ce28: 0x6db37a20, 0x3ce29: 0x6db37c20, 0x3ce2a: 0x6db37e20, 0x3ce2b: 0x6db38020,\n\t0x3ce2c: 0x6db38220, 0x3ce2d: 0x6db38420, 0x3ce2e: 0x6db38620, 0x3ce2f: 0x6db38820,\n\t0x3ce30: 0x6db38a20, 0x3ce31: 0x6db38c20, 0x3ce32: 0x6db38e20, 0x3ce33: 0x6db39020,\n\t0x3ce34: 0x6db39220, 0x3ce35: 0x6dd27620, 0x3ce36: 0x6dd27820, 0x3ce37: 0x6dd27a20,\n\t0x3ce38: 0x6dd27c20, 0x3ce39: 0x6dd27e20, 0x3ce3a: 0x6dd28020, 0x3ce3b: 0x6dd28220,\n\t0x3ce3c: 0x6dd28420, 0x3ce3d: 0x6dd28620, 0x3ce3e: 0x6dd28820, 0x3ce3f: 0x6dd28a20,\n\t// Block 0xf39, offset 0x3ce40\n\t0x3ce40: 0x6dd28c20, 0x3ce41: 0x6dd28e20, 0x3ce42: 0x6dd29020, 0x3ce43: 0x6dd29220,\n\t0x3ce44: 0x6dd29420, 0x3ce45: 0x6debc020, 0x3ce46: 0x6debc220, 0x3ce47: 0x6debc420,\n\t0x3ce48: 0x6debc620, 0x3ce49: 0x6debc820, 0x3ce4a: 0x6debca20, 0x3ce4b: 0x6debcc20,\n\t0x3ce4c: 0x6e014c20, 0x3ce4d: 0x6e014e20, 0x3ce4e: 0x6e015020, 0x3ce4f: 0x6e015220,\n\t0x3ce50: 0x6e133820, 0x3ce51: 0x6e133a20, 0x3ce52: 0x6e133c20, 0x3ce53: 0x6e133e20,\n\t0x3ce54: 0x6e211820, 0x3ce55: 0x6e211a20, 0x3ce56: 0x6e211c20, 0x3ce57: 0x6e2bd420,\n\t0x3ce58: 0x6e342020, 0x3ce59: 0x6e342220, 0x3ce5a: 0x6e342420, 0x3ce5b: 0x6e3e0e20,\n\t0x3ce5c: 0x6e3e1020, 0x3ce5d: 0x6c5f9e20, 0x3ce5e: 0x6c5fa020, 0x3ce5f: 0x6c84dc20,\n\t0x3ce60: 0x6cdd6220, 0x3ce61: 0x6cdd6420, 0x3ce62: 0x6d39da20, 0x3ce63: 0x6db3b220,\n\t0x3ce64: 0x6c403420, 0x3ce65: 0x6c5ff220, 0x3ce66: 0x6c5ff420, 0x3ce67: 0x6c857820,\n\t0x3ce68: 0x6c857a20, 0x3ce69: 0x6c857c20, 0x3ce6a: 0x6c857e20, 0x3ce6b: 0x6c858020,\n\t0x3ce6c: 0x6caf0c20, 0x3ce6d: 0x6caf0e20, 0x3ce6e: 0x6caf1020, 0x3ce6f: 0x6caf1220,\n\t0x3ce70: 0x6caf1420, 0x3ce71: 0x6caf1620, 0x3ce72: 0x6caf1820, 0x3ce73: 0x6cde3020,\n\t0x3ce74: 0x6cde3220, 0x3ce75: 0x6cde3420, 0x3ce76: 0x6cde3620, 0x3ce77: 0x6cde3820,\n\t0x3ce78: 0x6cde3a20, 0x3ce79: 0x6cde3c20, 0x3ce7a: 0x6cde3e20, 0x3ce7b: 0x6cde4020,\n\t0x3ce7c: 0x6cde4220, 0x3ce7d: 0x6d0cb020, 0x3ce7e: 0x6d0cb220, 0x3ce7f: 0x6d0cb420,\n\t// Block 0xf3a, offset 0x3ce80\n\t0x3ce80: 0x6d0cb620, 0x3ce81: 0x6d0cb820, 0x3ce82: 0x6d3afc20, 0x3ce83: 0x6d3afe20,\n\t0x3ce84: 0x6d3b0020, 0x3ce85: 0x6d3b0220, 0x3ce86: 0x6d3b0420, 0x3ce87: 0x6d3b0620,\n\t0x3ce88: 0x6d3b0820, 0x3ce89: 0x6d3b0a20, 0x3ce8a: 0x6d672e20, 0x3ce8b: 0x6d673020,\n\t0x3ce8c: 0x6d673220, 0x3ce8d: 0x6d673420, 0x3ce8e: 0x6d673620, 0x3ce8f: 0x6d910820,\n\t0x3ce90: 0x6d910a20, 0x3ce91: 0x6d910c20, 0x3ce92: 0x6d910e20, 0x3ce93: 0x6d911020,\n\t0x3ce94: 0x6d911220, 0x3ce95: 0x6d911420, 0x3ce96: 0x6db4be20, 0x3ce97: 0x6db4c020,\n\t0x3ce98: 0x6db4c220, 0x3ce99: 0x6db4c420, 0x3ce9a: 0x6dd38e20, 0x3ce9b: 0x6dd39020,\n\t0x3ce9c: 0x6dd39220, 0x3ce9d: 0x6dd39420, 0x3ce9e: 0x6dd39620, 0x3ce9f: 0x6dec9c20,\n\t0x3cea0: 0x6dec9e20, 0x3cea1: 0x6deca020, 0x3cea2: 0x6deca220, 0x3cea3: 0x6e01d420,\n\t0x3cea4: 0x6e01d620, 0x3cea5: 0x6e01d820, 0x3cea6: 0x6e13c220, 0x3cea7: 0x6e13c420,\n\t0x3cea8: 0x6e218420, 0x3cea9: 0x6e447620, 0x3ceaa: 0x6c859220, 0x3ceab: 0x6caf2420,\n\t0x3ceac: 0x6db4ce20, 0x3cead: 0x6caf3220, 0x3ceae: 0x6cde6820, 0x3ceaf: 0x6d675420,\n\t0x3ceb0: 0x6dd3a820, 0x3ceb1: 0x6e2c2020, 0x3ceb2: 0x6c605e20, 0x3ceb3: 0x6c606020,\n\t0x3ceb4: 0x6c606220, 0x3ceb5: 0x6c861c20, 0x3ceb6: 0x6c861e20, 0x3ceb7: 0x6c862020,\n\t0x3ceb8: 0x6cafd820, 0x3ceb9: 0x6cafda20, 0x3ceba: 0x6cafdc20, 0x3cebb: 0x6cafde20,\n\t0x3cebc: 0x6cafe020, 0x3cebd: 0x6cdef420, 0x3cebe: 0x6d0d6820, 0x3cebf: 0x6d0d6a20,\n\t// Block 0xf3b, offset 0x3cec0\n\t0x3cec0: 0x6d0d6c20, 0x3cec1: 0x6d0d6e20, 0x3cec2: 0x6d0d7020, 0x3cec3: 0x6d0d7220,\n\t0x3cec4: 0x6d0d7420, 0x3cec5: 0x6d3bd820, 0x3cec6: 0x6d3bda20, 0x3cec7: 0x6d67ec20,\n\t0x3cec8: 0x6d67ee20, 0x3cec9: 0x6d67f020, 0x3ceca: 0x6d91ae20, 0x3cecb: 0x6d91b020,\n\t0x3cecc: 0x6d91b220, 0x3cecd: 0x6d91b420, 0x3cece: 0x6d91b620, 0x3cecf: 0x6d91b820,\n\t0x3ced0: 0x6db57820, 0x3ced1: 0x6db57a20, 0x3ced2: 0x6db57c20, 0x3ced3: 0x6dd40a20,\n\t0x3ced4: 0x6dd40c20, 0x3ced5: 0x6decfc20, 0x3ced6: 0x6e021620, 0x3ced7: 0x6e21a020,\n\t0x3ced8: 0x6e2c3420, 0x3ced9: 0x6e2c3620, 0x3ceda: 0x6cafec20, 0x3cedb: 0x6d91c020,\n\t0x3cedc: 0x6c863c20, 0x3cedd: 0x6cdf3220, 0x3cede: 0x6d0daa20, 0x3cedf: 0x6d3c1a20,\n\t0x3cee0: 0x6d3c1c20, 0x3cee1: 0x6d683020, 0x3cee2: 0x6d91fe20, 0x3cee3: 0x6d920020,\n\t0x3cee4: 0x6dd43420, 0x3cee5: 0x6e022c20, 0x3cee6: 0x6e3a3220, 0x3cee7: 0x6e3a3420,\n\t0x3cee8: 0x6c607820, 0x3cee9: 0x6c607a20, 0x3ceea: 0x6c864020, 0x3ceeb: 0x6d0dae20,\n\t0x3ceec: 0x6d683820, 0x3ceed: 0x6db5a620, 0x3ceee: 0x6d0dd820, 0x3ceef: 0x6d0dda20,\n\t0x3cef0: 0x6d922e20, 0x3cef1: 0x6d923020, 0x3cef2: 0x6c868c20, 0x3cef3: 0x6c868e20,\n\t0x3cef4: 0x6cb10620, 0x3cef5: 0x6cb10820, 0x3cef6: 0x6ce02420, 0x3cef7: 0x6ce02620,\n\t0x3cef8: 0x6ce02820, 0x3cef9: 0x6ce02a20, 0x3cefa: 0x6d0eae20, 0x3cefb: 0x6d0eb020,\n\t0x3cefc: 0x6d3d0020, 0x3cefd: 0x6d3d0220, 0x3cefe: 0x6d3d0420, 0x3ceff: 0x6d697220,\n\t// Block 0xf3c, offset 0x3cf00\n\t0x3cf00: 0x6d697420, 0x3cf01: 0x6d92f220, 0x3cf02: 0x6d92f420, 0x3cf03: 0x6d92f620,\n\t0x3cf04: 0x6d92f820, 0x3cf05: 0x6d92fa20, 0x3cf06: 0x6db69220, 0x3cf07: 0x6db69420,\n\t0x3cf08: 0x6db69620, 0x3cf09: 0x6dd4f220, 0x3cf0a: 0x6dd4f420, 0x3cf0b: 0x6dd4f620,\n\t0x3cf0c: 0x6dd4f820, 0x3cf0d: 0x6dedda20, 0x3cf0e: 0x6deddc20, 0x3cf0f: 0x6dedde20,\n\t0x3cf10: 0x6e02b220, 0x3cf11: 0x6e02b420, 0x3cf12: 0x6e146a20, 0x3cf13: 0x6e2c7420,\n\t0x3cf14: 0x6e34a220, 0x3cf15: 0x6e34a420, 0x3cf16: 0x6e34a620, 0x3cf17: 0x6e3e4220,\n\t0x3cf18: 0x6e431c20, 0x3cf19: 0x6c0a7c20, 0x3cf1a: 0x6c14fa20, 0x3cf1b: 0x6c14fc20,\n\t0x3cf1c: 0x6c26d820, 0x3cf1d: 0x6c26da20, 0x3cf1e: 0x6c26dc20, 0x3cf1f: 0x6c26de20,\n\t0x3cf20: 0x6c26e020, 0x3cf21: 0x6c26e220, 0x3cf22: 0x6c40ac20, 0x3cf23: 0x6c40ae20,\n\t0x3cf24: 0x6c40b020, 0x3cf25: 0x6c40b220, 0x3cf26: 0x6c40b420, 0x3cf27: 0x6c60b620,\n\t0x3cf28: 0x6c60b820, 0x3cf29: 0x6c60ba20, 0x3cf2a: 0x6c60bc20, 0x3cf2b: 0x6c86b820,\n\t0x3cf2c: 0x6c86ba20, 0x3cf2d: 0x6c86bc20, 0x3cf2e: 0x6c86be20, 0x3cf2f: 0x6cb13420,\n\t0x3cf30: 0x6cb13620, 0x3cf31: 0x6cb13820, 0x3cf32: 0x6cb13a20, 0x3cf33: 0x6cb13c20,\n\t0x3cf34: 0x6cb13e20, 0x3cf35: 0x6ce03e20, 0x3cf36: 0x6ce04020, 0x3cf37: 0x6ce04220,\n\t0x3cf38: 0x6ce04420, 0x3cf39: 0x6d0ebe20, 0x3cf3a: 0x6d0ec020, 0x3cf3b: 0x6d3d1220,\n\t0x3cf3c: 0x6d3d1420, 0x3cf3d: 0x6d698220, 0x3cf3e: 0x6d92fe20, 0x3cf3f: 0x6db69c20,\n\t// Block 0xf3d, offset 0x3cf40\n\t0x3cf40: 0x6c60c020, 0x3cf41: 0x6cb14e20, 0x3cf42: 0x6d699420, 0x3cf43: 0x6d69b220,\n\t0x3cf44: 0x6dd51220, 0x3cf45: 0x6c40bc20, 0x3cf46: 0x6cb17620, 0x3cf47: 0x6d3d4a20,\n\t0x3cf48: 0x6d3d4c20, 0x3cf49: 0x6d933e20, 0x3cf4a: 0x6c86ee20, 0x3cf4b: 0x6d0f2420,\n\t0x3cf4c: 0x6d936620, 0x3cf4d: 0x6db70220, 0x3cf4e: 0x6c60da20, 0x3cf4f: 0x6c870a20,\n\t0x3cf50: 0x6c870c20, 0x3cf51: 0x6c870e20, 0x3cf52: 0x6cb1d820, 0x3cf53: 0x6cb1da20,\n\t0x3cf54: 0x6ce11420, 0x3cf55: 0x6ce11620, 0x3cf56: 0x6d0f8e20, 0x3cf57: 0x6d3dbc20,\n\t0x3cf58: 0x6d3dbe20, 0x3cf59: 0x6d3dc020, 0x3cf5a: 0x6d6a6820, 0x3cf5b: 0x6d6a6a20,\n\t0x3cf5c: 0x6d93b820, 0x3cf5d: 0x6d93ba20, 0x3cf5e: 0x6d93bc20, 0x3cf5f: 0x6db73c20,\n\t0x3cf60: 0x6db73e20, 0x3cf61: 0x6dd59220, 0x3cf62: 0x6dee7a20, 0x3cf63: 0x6e225420,\n\t0x3cf64: 0x6e225620, 0x3cf65: 0x6e2ca420, 0x3cf66: 0x6c60f620, 0x3cf67: 0x6c60f820,\n\t0x3cf68: 0x6cb1e620, 0x3cf69: 0x6ce13420, 0x3cf6a: 0x6d0f9620, 0x3cf6b: 0x6d93ca20,\n\t0x3cf6c: 0x6dd59420, 0x3cf6d: 0x6ce13c20, 0x3cf6e: 0x6d0fa620, 0x3cf6f: 0x6d6a8020,\n\t0x3cf70: 0x6dd59a20, 0x3cf71: 0x6cb23c20, 0x3cf72: 0x6ce19a20, 0x3cf73: 0x6d100420,\n\t0x3cf74: 0x6d100620, 0x3cf75: 0x6d3e3420, 0x3cf76: 0x6d3e3620, 0x3cf77: 0x6d3e3820,\n\t0x3cf78: 0x6d6ad420, 0x3cf79: 0x6d6ad620, 0x3cf7a: 0x6d6ad820, 0x3cf7b: 0x6d942e20,\n\t0x3cf7c: 0x6d943020, 0x3cf7d: 0x6db78220, 0x3cf7e: 0x6dd5d820, 0x3cf7f: 0x6dd5da20,\n\t// Block 0xf3e, offset 0x3cf80\n\t0x3cf80: 0x6c877e20, 0x3cf81: 0x6cb2a420, 0x3cf82: 0x6cb2a620, 0x3cf83: 0x6cb2a820,\n\t0x3cf84: 0x6ce23420, 0x3cf85: 0x6ce23620, 0x3cf86: 0x6ce23820, 0x3cf87: 0x6d10a620,\n\t0x3cf88: 0x6d10a820, 0x3cf89: 0x6d10aa20, 0x3cf8a: 0x6d10ac20, 0x3cf8b: 0x6d10ae20,\n\t0x3cf8c: 0x6d3edc20, 0x3cf8d: 0x6d3ede20, 0x3cf8e: 0x6d3ee020, 0x3cf8f: 0x6d6b8e20,\n\t0x3cf90: 0x6d6b9020, 0x3cf91: 0x6d6b9220, 0x3cf92: 0x6d6b9420, 0x3cf93: 0x6d6b9620,\n\t0x3cf94: 0x6d94d820, 0x3cf95: 0x6d94da20, 0x3cf96: 0x6d94dc20, 0x3cf97: 0x6d94de20,\n\t0x3cf98: 0x6d94e020, 0x3cf99: 0x6db81020, 0x3cf9a: 0x6db81220, 0x3cf9b: 0x6db81420,\n\t0x3cf9c: 0x6dd6a220, 0x3cf9d: 0x6dd6a420, 0x3cf9e: 0x6dd6a620, 0x3cf9f: 0x6dd6a820,\n\t0x3cfa0: 0x6def6020, 0x3cfa1: 0x6def6220, 0x3cfa2: 0x6def6420, 0x3cfa3: 0x6e039220,\n\t0x3cfa4: 0x6e039420, 0x3cfa5: 0x6e039620, 0x3cfa6: 0x6e039820, 0x3cfa7: 0x6e150220,\n\t0x3cfa8: 0x6e150420, 0x3cfa9: 0x6e2ce620, 0x3cfaa: 0x6d10dc20, 0x3cfab: 0x6d10de20,\n\t0x3cfac: 0x6d3f0020, 0x3cfad: 0x6db83220, 0x3cfae: 0x6db83420, 0x3cfaf: 0x6dd6be20,\n\t0x3cfb0: 0x6def9020, 0x3cfb1: 0x6e03aa20, 0x3cfb2: 0x6c87b620, 0x3cfb3: 0x6cb33620,\n\t0x3cfb4: 0x6ce2d420, 0x3cfb5: 0x6ce2d620, 0x3cfb6: 0x6d3f5820, 0x3cfb7: 0x6d3f5a20,\n\t0x3cfb8: 0x6d3f5c20, 0x3cfb9: 0x6d6c4c20, 0x3cfba: 0x6d956c20, 0x3cfbb: 0x6d956e20,\n\t0x3cfbc: 0x6db89620, 0x3cfbd: 0x6db89820, 0x3cfbe: 0x6dd71220, 0x3cfbf: 0x6dd71420,\n\t// Block 0xf3f, offset 0x3cfc0\n\t0x3cfc0: 0x6defc620, 0x3cfc1: 0x6e03e820, 0x3cfc2: 0x6e153420, 0x3cfc3: 0x6e469220,\n\t0x3cfc4: 0x6c271620, 0x3cfc5: 0x6c271820, 0x3cfc6: 0x6c271a20, 0x3cfc7: 0x6c40f420,\n\t0x3cfc8: 0x6c615e20, 0x3cfc9: 0x6c616020, 0x3cfca: 0x6c616220, 0x3cfcb: 0x6c87cc20,\n\t0x3cfcc: 0x6c87ce20, 0x3cfcd: 0x6cb34020, 0x3cfce: 0x6ce2e820, 0x3cfcf: 0x6ce2ea20,\n\t0x3cfd0: 0x6ce2ec20, 0x3cfd1: 0x6ce2ee20, 0x3cfd2: 0x6d114a20, 0x3cfd3: 0x6c87d020,\n\t0x3cfd4: 0x6d3f6420, 0x3cfd5: 0x6d6c5020, 0x3cfd6: 0x6d6c5220, 0x3cfd7: 0x6d957620,\n\t0x3cfd8: 0x6db89a20, 0x3cfd9: 0x6defc820, 0x3cfda: 0x6ce2f820, 0x3cfdb: 0x6d115a20,\n\t0x3cfdc: 0x6d115c20, 0x3cfdd: 0x6e03f620, 0x3cfde: 0x6c052020, 0x3cfdf: 0x6c153820,\n\t0x3cfe0: 0x6c278620, 0x3cfe1: 0x6c278820, 0x3cfe2: 0x6c417620, 0x3cfe3: 0x6c417820,\n\t0x3cfe4: 0x6c417a20, 0x3cfe5: 0x6c61d020, 0x3cfe6: 0x6c886020, 0x3cfe7: 0x6c886220,\n\t0x3cfe8: 0x6c886420, 0x3cfe9: 0x6c886620, 0x3cfea: 0x6c886820, 0x3cfeb: 0x6cb3ec20,\n\t0x3cfec: 0x6cb3ee20, 0x3cfed: 0x6cb3f020, 0x3cfee: 0x6cb3f220, 0x3cfef: 0x6cb3f420,\n\t0x3cff0: 0x6cb3f620, 0x3cff1: 0x6cb3f820, 0x3cff2: 0x6cb3fa20, 0x3cff3: 0x6ce3ac20,\n\t0x3cff4: 0x6ce3ae20, 0x3cff5: 0x6ce3b020, 0x3cff6: 0x6ce3b220, 0x3cff7: 0x6ce3b420,\n\t0x3cff8: 0x6ce3b620, 0x3cff9: 0x6ce3b820, 0x3cffa: 0x6d11f420, 0x3cffb: 0x6d11f620,\n\t0x3cffc: 0x6d11f820, 0x3cffd: 0x6d11fa20, 0x3cffe: 0x6d3ff820, 0x3cfff: 0x6d3ffa20,\n\t// Block 0xf40, offset 0x3d000\n\t0x3d000: 0x6d3ffc20, 0x3d001: 0x6d3ffe20, 0x3d002: 0x6d400020, 0x3d003: 0x6d400220,\n\t0x3d004: 0x6d6cea20, 0x3d005: 0x6d6cec20, 0x3d006: 0x6d6cee20, 0x3d007: 0x6d6cf020,\n\t0x3d008: 0x6d6cf220, 0x3d009: 0x6d6cf420, 0x3d00a: 0x6d6cf620, 0x3d00b: 0x6d95f620,\n\t0x3d00c: 0x6db8fc20, 0x3d00d: 0x6db8fe20, 0x3d00e: 0x6db90020, 0x3d00f: 0x6db90220,\n\t0x3d010: 0x6dd75220, 0x3d011: 0x6dd75420, 0x3d012: 0x6e041e20, 0x3d013: 0x6e042020,\n\t0x3d014: 0x6e042220, 0x3d015: 0x6e042420, 0x3d016: 0x6e154c20, 0x3d017: 0x6c0aa820,\n\t0x3d018: 0x6c158820, 0x3d019: 0x6c158a20, 0x3d01a: 0x6c27e620, 0x3d01b: 0x6c27e820,\n\t0x3d01c: 0x6c41d820, 0x3d01d: 0x6c624e20, 0x3d01e: 0x6c625020, 0x3d01f: 0x6c625220,\n\t0x3d020: 0x6c88e220, 0x3d021: 0x6c88e420, 0x3d022: 0x6c88e620, 0x3d023: 0x6cb46e20,\n\t0x3d024: 0x6cb47020, 0x3d025: 0x6ce41a20, 0x3d026: 0x6ce41c20, 0x3d027: 0x6d126420,\n\t0x3d028: 0x6d126620, 0x3d029: 0x6d126820, 0x3d02a: 0x6d6d4420, 0x3d02b: 0x6d6d4620,\n\t0x3d02c: 0x6d962e20, 0x3d02d: 0x6db93220, 0x3d02e: 0x6dd77a20, 0x3d02f: 0x6dd77c20,\n\t0x3d030: 0x6dd77e20, 0x3d031: 0x6e043220, 0x3d032: 0x6e433620, 0x3d033: 0x6c890420,\n\t0x3d034: 0x6d12b620, 0x3d035: 0x6d12b820, 0x3d036: 0x6d40c420, 0x3d037: 0x6d40c620,\n\t0x3d038: 0x6d40c820, 0x3d039: 0x6d6da420, 0x3d03a: 0x6db98e20, 0x3d03b: 0x6dd7ca20,\n\t0x3d03c: 0x6df05020, 0x3d03d: 0x6df05220, 0x3d03e: 0x6e157620, 0x3d03f: 0x6e2d3820,\n\t// Block 0xf41, offset 0x3d040\n\t0x3d040: 0x6ce46e20, 0x3d041: 0x6cb4d220, 0x3d042: 0x6ce47a20, 0x3d043: 0x6d40d220,\n\t0x3d044: 0x6db99e20, 0x3d045: 0x6df05420, 0x3d046: 0x6cb51a20, 0x3d047: 0x6cb51c20,\n\t0x3d048: 0x6cb51e20, 0x3d049: 0x6cb52020, 0x3d04a: 0x6ce51a20, 0x3d04b: 0x6ce51c20,\n\t0x3d04c: 0x6ce51e20, 0x3d04d: 0x6ce52020, 0x3d04e: 0x6ce52220, 0x3d04f: 0x6d139220,\n\t0x3d050: 0x6d139420, 0x3d051: 0x6d139620, 0x3d052: 0x6d139820, 0x3d053: 0x6d139a20,\n\t0x3d054: 0x6d139c20, 0x3d055: 0x6d41ac20, 0x3d056: 0x6d41ae20, 0x3d057: 0x6d41b020,\n\t0x3d058: 0x6d41b220, 0x3d059: 0x6d41b420, 0x3d05a: 0x6d41b620, 0x3d05b: 0x6d41b820,\n\t0x3d05c: 0x6d41ba20, 0x3d05d: 0x6d6ebe20, 0x3d05e: 0x6d6ec020, 0x3d05f: 0x6d6ec220,\n\t0x3d060: 0x6d6ec420, 0x3d061: 0x6d6ec620, 0x3d062: 0x6d6ec820, 0x3d063: 0x6d6eca20,\n\t0x3d064: 0x6d6ecc20, 0x3d065: 0x6d6ece20, 0x3d066: 0x6d97d820, 0x3d067: 0x6d97da20,\n\t0x3d068: 0x6d97dc20, 0x3d069: 0x6d97de20, 0x3d06a: 0x6d97e020, 0x3d06b: 0x6d97e220,\n\t0x3d06c: 0x6d97e420, 0x3d06d: 0x6d97e620, 0x3d06e: 0x6d97e820, 0x3d06f: 0x6d97ea20,\n\t0x3d070: 0x6dbadc20, 0x3d071: 0x6dbade20, 0x3d072: 0x6dbae020, 0x3d073: 0x6dbae220,\n\t0x3d074: 0x6dbae420, 0x3d075: 0x6dbae620, 0x3d076: 0x6dbae820, 0x3d077: 0x6dbaea20,\n\t0x3d078: 0x6dd8ea20, 0x3d079: 0x6dd8ec20, 0x3d07a: 0x6dd8ee20, 0x3d07b: 0x6dd8f020,\n\t0x3d07c: 0x6dd8f220, 0x3d07d: 0x6dd8f420, 0x3d07e: 0x6dd8f620, 0x3d07f: 0x6df15420,\n\t// Block 0xf42, offset 0x3d080\n\t0x3d080: 0x6df15620, 0x3d081: 0x6df15820, 0x3d082: 0x6df15a20, 0x3d083: 0x6df15c20,\n\t0x3d084: 0x6e057220, 0x3d085: 0x6e057420, 0x3d086: 0x6e057620, 0x3d087: 0x6e057820,\n\t0x3d088: 0x6e057a20, 0x3d089: 0x6e057c20, 0x3d08a: 0x6e057e20, 0x3d08b: 0x6e058020,\n\t0x3d08c: 0x6e058220, 0x3d08d: 0x6e058420, 0x3d08e: 0x6e058620, 0x3d08f: 0x6e164020,\n\t0x3d090: 0x6e164220, 0x3d091: 0x6e164420, 0x3d092: 0x6e164620, 0x3d093: 0x6e164820,\n\t0x3d094: 0x6e164a20, 0x3d095: 0x6e164c20, 0x3d096: 0x6e238a20, 0x3d097: 0x6e238c20,\n\t0x3d098: 0x6e238e20, 0x3d099: 0x6e239020, 0x3d09a: 0x6e239220, 0x3d09b: 0x6e2db420,\n\t0x3d09c: 0x6e2db620, 0x3d09d: 0x6e356020, 0x3d09e: 0x6e356220, 0x3d09f: 0x6e356420,\n\t0x3d0a0: 0x6e3ae220, 0x3d0a1: 0x6e3ae420, 0x3d0a2: 0x6e3ae620, 0x3d0a3: 0x6e3eae20,\n\t0x3d0a4: 0x6e415e20, 0x3d0a5: 0x6c27fc20, 0x3d0a6: 0x6c41fa20, 0x3d0a7: 0x6c629c20,\n\t0x3d0a8: 0x6c629e20, 0x3d0a9: 0x6c62a020, 0x3d0aa: 0x6c62a220, 0x3d0ab: 0x6c62a420,\n\t0x3d0ac: 0x6c897a20, 0x3d0ad: 0x6c897c20, 0x3d0ae: 0x6c897e20, 0x3d0af: 0x6cb57420,\n\t0x3d0b0: 0x6cb57620, 0x3d0b1: 0x6cb57820, 0x3d0b2: 0x6cb57a20, 0x3d0b3: 0x6cb57c20,\n\t0x3d0b4: 0x6cb57e20, 0x3d0b5: 0x6ce56a20, 0x3d0b6: 0x6ce56c20, 0x3d0b7: 0x6ce56e20,\n\t0x3d0b8: 0x6d13e420, 0x3d0b9: 0x6d13e620, 0x3d0ba: 0x6d13e820, 0x3d0bb: 0x6d13ea20,\n\t0x3d0bc: 0x6d13ec20, 0x3d0bd: 0x6d13ee20, 0x3d0be: 0x6d13f020, 0x3d0bf: 0x6d13f220,\n\t// Block 0xf43, offset 0x3d0c0\n\t0x3d0c0: 0x6d41ee20, 0x3d0c1: 0x6d41f020, 0x3d0c2: 0x6d41f220, 0x3d0c3: 0x6d41f420,\n\t0x3d0c4: 0x6d41f620, 0x3d0c5: 0x6d6ef620, 0x3d0c6: 0x6d6ef820, 0x3d0c7: 0x6d6efa20,\n\t0x3d0c8: 0x6d6efc20, 0x3d0c9: 0x6d980820, 0x3d0ca: 0x6d980a20, 0x3d0cb: 0x6dbb0c20,\n\t0x3d0cc: 0x6dbb0e20, 0x3d0cd: 0x6dbb1020, 0x3d0ce: 0x6dbb1220, 0x3d0cf: 0x6dbb1420,\n\t0x3d0d0: 0x6dd90c20, 0x3d0d1: 0x6dd90e20, 0x3d0d2: 0x6df16020, 0x3d0d3: 0x6e164e20,\n\t0x3d0d4: 0x6e2db820, 0x3d0d5: 0x6e356620, 0x3d0d6: 0x6d141620, 0x3d0d7: 0x6d6f1a20,\n\t0x3d0d8: 0x6c62b220, 0x3d0d9: 0x6cb5c220, 0x3d0da: 0x6ce5e620, 0x3d0db: 0x6ce5e820,\n\t0x3d0dc: 0x6d146420, 0x3d0dd: 0x6d146620, 0x3d0de: 0x6d146820, 0x3d0df: 0x6d146a20,\n\t0x3d0e0: 0x6d146c20, 0x3d0e1: 0x6d6f7a20, 0x3d0e2: 0x6d6f7c20, 0x3d0e3: 0x6d6f7e20,\n\t0x3d0e4: 0x6d6f8020, 0x3d0e5: 0x6d988820, 0x3d0e6: 0x6d988a20, 0x3d0e7: 0x6d988c20,\n\t0x3d0e8: 0x6dbb8420, 0x3d0e9: 0x6df1a020, 0x3d0ea: 0x6e168e20, 0x3d0eb: 0x6e3af820,\n\t0x3d0ec: 0x6c15a020, 0x3d0ed: 0x6c281820, 0x3d0ee: 0x6c281a20, 0x3d0ef: 0x6c281c20,\n\t0x3d0f0: 0x6c420c20, 0x3d0f1: 0x6c62ca20, 0x3d0f2: 0x6c899e20, 0x3d0f3: 0x6c89a020,\n\t0x3d0f4: 0x6cb5d820, 0x3d0f5: 0x6d147a20, 0x3d0f6: 0x6d147c20, 0x3d0f7: 0x6d426620,\n\t0x3d0f8: 0x6d426820, 0x3d0f9: 0x6dbb8a20, 0x3d0fa: 0x6c0ac020, 0x3d0fb: 0x6c15d020,\n\t0x3d0fc: 0x6c287820, 0x3d0fd: 0x6c287a20, 0x3d0fe: 0x6c426c20, 0x3d0ff: 0x6c426e20,\n\t// Block 0xf44, offset 0x3d100\n\t0x3d100: 0x6c427020, 0x3d101: 0x6c632620, 0x3d102: 0x6c632820, 0x3d103: 0x6c632a20,\n\t0x3d104: 0x6c8a2c20, 0x3d105: 0x6c8a2e20, 0x3d106: 0x6cb64e20, 0x3d107: 0x6cb65020,\n\t0x3d108: 0x6cb65220, 0x3d109: 0x6cb65420, 0x3d10a: 0x6cb65620, 0x3d10b: 0x6cb65820,\n\t0x3d10c: 0x6cb65a20, 0x3d10d: 0x6cb65c20, 0x3d10e: 0x6ce68620, 0x3d10f: 0x6ce68820,\n\t0x3d110: 0x6d14d620, 0x3d111: 0x6d14d820, 0x3d112: 0x6d14da20, 0x3d113: 0x6d14dc20,\n\t0x3d114: 0x6d42c420, 0x3d115: 0x6d42c620, 0x3d116: 0x6d42c820, 0x3d117: 0x6d42ca20,\n\t0x3d118: 0x6dd98420, 0x3d119: 0x6d6fca20, 0x3d11a: 0x6ce6bc20, 0x3d11b: 0x6d430a20,\n\t0x3d11c: 0x6dd9ba20, 0x3d11d: 0x6c8a4620, 0x3d11e: 0x6cb69620, 0x3d11f: 0x6ce6f220,\n\t0x3d120: 0x6ce6f420, 0x3d121: 0x6d155020, 0x3d122: 0x6d155220, 0x3d123: 0x6d434c20,\n\t0x3d124: 0x6d434e20, 0x3d125: 0x6d704a20, 0x3d126: 0x6d704c20, 0x3d127: 0x6d997620,\n\t0x3d128: 0x6d997820, 0x3d129: 0x6dbc4e20, 0x3d12a: 0x6dbc5020, 0x3d12b: 0x6dda1a20,\n\t0x3d12c: 0x6df23220, 0x3d12d: 0x6df23420, 0x3d12e: 0x6e066820, 0x3d12f: 0x6e066a20,\n\t0x3d130: 0x6e066c20, 0x3d131: 0x6e066e20, 0x3d132: 0x6e16ea20, 0x3d133: 0x6e240820,\n\t0x3d134: 0x6e240a20, 0x3d135: 0x6e35ae20, 0x3d136: 0x6e35b020, 0x3d137: 0x6e44b220,\n\t0x3d138: 0x6cb69a20, 0x3d139: 0x6d156020, 0x3d13a: 0x6d156220, 0x3d13b: 0x6d998220,\n\t0x3d13c: 0x6df23820, 0x3d13d: 0x6d435a20, 0x3d13e: 0x6e16ee20, 0x3d13f: 0x6e3b1c20,\n\t// Block 0xf45, offset 0x3d140\n\t0x3d140: 0x6d437c20, 0x3d141: 0x6d707020, 0x3d142: 0x6d99a020, 0x3d143: 0x6dda2e20,\n\t0x3d144: 0x6e170820, 0x3d145: 0x6d43d420, 0x3d146: 0x6d43d620, 0x3d147: 0x6d70be20,\n\t0x3d148: 0x6d70c020, 0x3d149: 0x6e06d220, 0x3d14a: 0x6e173e20, 0x3d14b: 0x6e244420,\n\t0x3d14c: 0x6c8a4e20, 0x3d14d: 0x6d15d220, 0x3d14e: 0x6dbce620, 0x3d14f: 0x6e06e820,\n\t0x3d150: 0x6e35d620, 0x3d151: 0x6c428420, 0x3d152: 0x6c8a5020, 0x3d153: 0x6ce73a20,\n\t0x3d154: 0x6d43fe20, 0x3d155: 0x6d440020, 0x3d156: 0x6d9a0220, 0x3d157: 0x6d15f020,\n\t0x3d158: 0x6d441020, 0x3d159: 0x6ddad820, 0x3d15a: 0x6e070420, 0x3d15b: 0x6e176420,\n\t0x3d15c: 0x6e3b3420, 0x3d15d: 0x6d163c20, 0x3d15e: 0x6d447020, 0x3d15f: 0x6d9aae20,\n\t0x3d160: 0x6d9ab020, 0x3d161: 0x6dbd6820, 0x3d162: 0x6ddb3a20, 0x3d163: 0x6ddb3c20,\n\t0x3d164: 0x6df33620, 0x3d165: 0x6e074420, 0x3d166: 0x6e074620, 0x3d167: 0x6e17a820,\n\t0x3d168: 0x6e248e20, 0x3d169: 0x6e35f020, 0x3d16a: 0x6c634c20, 0x3d16b: 0x6c8a6420,\n\t0x3d16c: 0x6cb6c820, 0x3d16d: 0x6cb6ca20, 0x3d16e: 0x6ce77020, 0x3d16f: 0x6ce77220,\n\t0x3d170: 0x6ce77420, 0x3d171: 0x6ce77620, 0x3d172: 0x6d164c20, 0x3d173: 0x6d164e20,\n\t0x3d174: 0x6d447820, 0x3d175: 0x6d447a20, 0x3d176: 0x6d447c20, 0x3d177: 0x6d716a20,\n\t0x3d178: 0x6d9aba20, 0x3d179: 0x6dbd6a20, 0x3d17a: 0x6e17ac20, 0x3d17b: 0x6d167e20,\n\t0x3d17c: 0x6d44b420, 0x3d17d: 0x6dbdb620, 0x3d17e: 0x6ddb8220, 0x3d17f: 0x6ddb8420,\n\t// Block 0xf46, offset 0x3d180\n\t0x3d180: 0x6df37220, 0x3d181: 0x6df37420, 0x3d182: 0x6df37620, 0x3d183: 0x6e249e20,\n\t0x3d184: 0x6e24a020, 0x3d185: 0x6e2e7620, 0x3d186: 0x6e35fe20, 0x3d187: 0x6c428a20,\n\t0x3d188: 0x6cb6d420, 0x3d189: 0x6ce79620, 0x3d18a: 0x6d168620, 0x3d18b: 0x6dbdba20,\n\t0x3d18c: 0x6dbdbe20, 0x3d18d: 0x6ce7d620, 0x3d18e: 0x6d16f220, 0x3d18f: 0x6d451820,\n\t0x3d190: 0x6d451a20, 0x3d191: 0x6d451c20, 0x3d192: 0x6d451e20, 0x3d193: 0x6d71fc20,\n\t0x3d194: 0x6dbe3c20, 0x3d195: 0x6dbe3e20, 0x3d196: 0x6dbe4020, 0x3d197: 0x6dbe4220,\n\t0x3d198: 0x6ddbf820, 0x3d199: 0x6df3e020, 0x3d19a: 0x6df3e220, 0x3d19b: 0x6e07c020,\n\t0x3d19c: 0x6e24d820, 0x3d19d: 0x6e24da20, 0x3d19e: 0x6c15d820, 0x3d19f: 0x6c289420,\n\t0x3d1a0: 0x6c289620, 0x3d1a1: 0x6c42a820, 0x3d1a2: 0x6c42aa20, 0x3d1a3: 0x6c42ac20,\n\t0x3d1a4: 0x6c637a20, 0x3d1a5: 0x6c637c20, 0x3d1a6: 0x6c8a8620, 0x3d1a7: 0x6c8a8820,\n\t0x3d1a8: 0x6c8a8a20, 0x3d1a9: 0x6cb70820, 0x3d1aa: 0x6cb70a20, 0x3d1ab: 0x6ce7e420,\n\t0x3d1ac: 0x6ce7e620, 0x3d1ad: 0x6ce7e820, 0x3d1ae: 0x6ce7ea20, 0x3d1af: 0x6ce7ec20,\n\t0x3d1b0: 0x6d170220, 0x3d1b1: 0x6d170420, 0x3d1b2: 0x6d720420, 0x3d1b3: 0x6d720620,\n\t0x3d1b4: 0x6d9b8e20, 0x3d1b5: 0x6e07c420, 0x3d1b6: 0x6d453220, 0x3d1b7: 0x6d9b9e20,\n\t0x3d1b8: 0x6dbe4e20, 0x3d1b9: 0x6df3ea20, 0x3d1ba: 0x6e07c820, 0x3d1bb: 0x6e361820,\n\t0x3d1bc: 0x6d722020, 0x3d1bd: 0x6d722220, 0x3d1be: 0x6dbe6420, 0x3d1bf: 0x6ddc1420,\n\t// Block 0xf47, offset 0x3d1c0\n\t0x3d1c0: 0x6e07d420, 0x3d1c1: 0x6e07d620, 0x3d1c2: 0x6e183020, 0x3d1c3: 0x6e24e220,\n\t0x3d1c4: 0x6e44be20, 0x3d1c5: 0x6d173020, 0x3d1c6: 0x6d45a420, 0x3d1c7: 0x6d45a620,\n\t0x3d1c8: 0x6d45a820, 0x3d1c9: 0x6d45aa20, 0x3d1ca: 0x6d9c2e20, 0x3d1cb: 0x6ddc9e20,\n\t0x3d1cc: 0x6ddca020, 0x3d1cd: 0x6ddca220, 0x3d1ce: 0x6ddca420, 0x3d1cf: 0x6df47c20,\n\t0x3d1d0: 0x6df47e20, 0x3d1d1: 0x6df48020, 0x3d1d2: 0x6e086220, 0x3d1d3: 0x6e086420,\n\t0x3d1d4: 0x6e086620, 0x3d1d5: 0x6e086820, 0x3d1d6: 0x6e086a20, 0x3d1d7: 0x6e254220,\n\t0x3d1d8: 0x6e2ee220, 0x3d1d9: 0x6e364020, 0x3d1da: 0x6e41b420, 0x3d1db: 0x6c15e020,\n\t0x3d1dc: 0x6c28a220, 0x3d1dd: 0x6c28a420, 0x3d1de: 0x6c42d620, 0x3d1df: 0x6c42d820,\n\t0x3d1e0: 0x6c63a620, 0x3d1e1: 0x6c63a820, 0x3d1e2: 0x6c8aa820, 0x3d1e3: 0x6c8aaa20,\n\t0x3d1e4: 0x6c8aac20, 0x3d1e5: 0x6cb72820, 0x3d1e6: 0x6cb72a20, 0x3d1e7: 0x6cb72c20,\n\t0x3d1e8: 0x6ce82620, 0x3d1e9: 0x6ce82820, 0x3d1ea: 0x6d174220, 0x3d1eb: 0x6d174420,\n\t0x3d1ec: 0x6d174620, 0x3d1ed: 0x6d45b220, 0x3d1ee: 0x6d45b420, 0x3d1ef: 0x6d72b020,\n\t0x3d1f0: 0x6d9c3220, 0x3d1f1: 0x6e189020, 0x3d1f2: 0x6d72e020, 0x3d1f3: 0x6ddcd620,\n\t0x3d1f4: 0x6ddcd820, 0x3d1f5: 0x6ce84020, 0x3d1f6: 0x6d72ec20, 0x3d1f7: 0x6d9c7820,\n\t0x3d1f8: 0x6cb73820, 0x3d1f9: 0x6d178820, 0x3d1fa: 0x6d178a20, 0x3d1fb: 0x6d463a20,\n\t0x3d1fc: 0x6d734220, 0x3d1fd: 0x6d9cbe20, 0x3d1fe: 0x6dbf5020, 0x3d1ff: 0x6dbf5220,\n\t// Block 0xf48, offset 0x3d200\n\t0x3d200: 0x6ddd3420, 0x3d201: 0x6ddd3620, 0x3d202: 0x6df4f820, 0x3d203: 0x6e18e620,\n\t0x3d204: 0x6d464c20, 0x3d205: 0x6d735220, 0x3d206: 0x6e190420, 0x3d207: 0x6e439e20,\n\t0x3d208: 0x6cb74220, 0x3d209: 0x6d17c220, 0x3d20a: 0x6d738420, 0x3d20b: 0x6d9d0c20,\n\t0x3d20c: 0x6dbf8c20, 0x3d20d: 0x6dbf8e20, 0x3d20e: 0x6e193220, 0x3d20f: 0x6d17de20,\n\t0x3d210: 0x6d46b420, 0x3d211: 0x6d740620, 0x3d212: 0x6d740820, 0x3d213: 0x6d9da220,\n\t0x3d214: 0x6d9da420, 0x3d215: 0x6d9da620, 0x3d216: 0x6d9da820, 0x3d217: 0x6d9daa20,\n\t0x3d218: 0x6dc02a20, 0x3d219: 0x6dc02c20, 0x3d21a: 0x6dc02e20, 0x3d21b: 0x6dc03020,\n\t0x3d21c: 0x6dc03220, 0x3d21d: 0x6dc03420, 0x3d21e: 0x6dc03620, 0x3d21f: 0x6dc03820,\n\t0x3d220: 0x6dde2620, 0x3d221: 0x6dde2820, 0x3d222: 0x6dde2a20, 0x3d223: 0x6dde2c20,\n\t0x3d224: 0x6df61420, 0x3d225: 0x6df61620, 0x3d226: 0x6df61820, 0x3d227: 0x6df61a20,\n\t0x3d228: 0x6e09e020, 0x3d229: 0x6e09e220, 0x3d22a: 0x6e09e420, 0x3d22b: 0x6e19e620,\n\t0x3d22c: 0x6e19e820, 0x3d22d: 0x6e19ea20, 0x3d22e: 0x6e19ec20, 0x3d22f: 0x6e19ee20,\n\t0x3d230: 0x6e266420, 0x3d231: 0x6e266620, 0x3d232: 0x6e266820, 0x3d233: 0x6e266a20,\n\t0x3d234: 0x6e266c20, 0x3d235: 0x6e266e20, 0x3d236: 0x6e267020, 0x3d237: 0x6e2fce20,\n\t0x3d238: 0x6e2fd020, 0x3d239: 0x6e2fd220, 0x3d23a: 0x6e2fd420, 0x3d23b: 0x6e2fd620,\n\t0x3d23c: 0x6e2fd820, 0x3d23d: 0x6e370820, 0x3d23e: 0x6e370a20, 0x3d23f: 0x6e370c20,\n\t// Block 0xf49, offset 0x3d240\n\t0x3d240: 0x6e370e20, 0x3d241: 0x6e371020, 0x3d242: 0x6e3be220, 0x3d243: 0x6e3be420,\n\t0x3d244: 0x6e3f8420, 0x3d245: 0x6e43be20, 0x3d246: 0x6e458a20, 0x3d247: 0x6e466220,\n\t0x3d248: 0x6cb74c20, 0x3d249: 0x6cb74e20, 0x3d24a: 0x6cb75020, 0x3d24b: 0x6ce87e20,\n\t0x3d24c: 0x6ce88020, 0x3d24d: 0x6ce88220, 0x3d24e: 0x6d17fc20, 0x3d24f: 0x6d17fe20,\n\t0x3d250: 0x6d180020, 0x3d251: 0x6d180220, 0x3d252: 0x6c8ac220, 0x3d253: 0x6d46dc20,\n\t0x3d254: 0x6d46de20, 0x3d255: 0x6d46e020, 0x3d256: 0x6d46e220, 0x3d257: 0x6d46e420,\n\t0x3d258: 0x6d46e620, 0x3d259: 0x6d743020, 0x3d25a: 0x6d743220, 0x3d25b: 0x6d743420,\n\t0x3d25c: 0x6d9dd620, 0x3d25d: 0x6d9dd820, 0x3d25e: 0x6d9dda20, 0x3d25f: 0x6d9ddc20,\n\t0x3d260: 0x6d9dde20, 0x3d261: 0x6d9de020, 0x3d262: 0x6dc05e20, 0x3d263: 0x6dc06020,\n\t0x3d264: 0x6dc06220, 0x3d265: 0x6dc06420, 0x3d266: 0x6dde3c20, 0x3d267: 0x6df63220,\n\t0x3d268: 0x6df63420, 0x3d269: 0x6e09f420, 0x3d26a: 0x6e09f620, 0x3d26b: 0x6e1a0220,\n\t0x3d26c: 0x6e267620, 0x3d26d: 0x6e2fde20, 0x3d26e: 0x6ce88e20, 0x3d26f: 0x6d74d620,\n\t0x3d270: 0x6d74d820, 0x3d271: 0x6d74da20, 0x3d272: 0x6d74dc20, 0x3d273: 0x6d9eae20,\n\t0x3d274: 0x6d9eb020, 0x3d275: 0x6d9eb220, 0x3d276: 0x6d9eb420, 0x3d277: 0x6d9eb620,\n\t0x3d278: 0x6dc12a20, 0x3d279: 0x6dc12c20, 0x3d27a: 0x6dc12e20, 0x3d27b: 0x6dc13020,\n\t0x3d27c: 0x6ddedc20, 0x3d27d: 0x6ddede20, 0x3d27e: 0x6ddee020, 0x3d27f: 0x6ddee220,\n\t// Block 0xf4a, offset 0x3d280\n\t0x3d280: 0x6ddee420, 0x3d281: 0x6df71e20, 0x3d282: 0x6df72020, 0x3d283: 0x6df72220,\n\t0x3d284: 0x6df72420, 0x3d285: 0x6df72620, 0x3d286: 0x6df72820, 0x3d287: 0x6df72a20,\n\t0x3d288: 0x6df72c20, 0x3d289: 0x6e0acc20, 0x3d28a: 0x6e0ace20, 0x3d28b: 0x6e0ad020,\n\t0x3d28c: 0x6e1aba20, 0x3d28d: 0x6e1abc20, 0x3d28e: 0x6e1abe20, 0x3d28f: 0x6e1ac020,\n\t0x3d290: 0x6e272c20, 0x3d291: 0x6e309e20, 0x3d292: 0x6e30a020, 0x3d293: 0x6e30a220,\n\t0x3d294: 0x6e30a420, 0x3d295: 0x6e30a620, 0x3d296: 0x6e378820, 0x3d297: 0x6e3c3020,\n\t0x3d298: 0x6e3fb820, 0x3d299: 0x6e459e20, 0x3d29a: 0x6c63be20, 0x3d29b: 0x6c63c020,\n\t0x3d29c: 0x6c63c220, 0x3d29d: 0x6c63c420, 0x3d29e: 0x6c63c620, 0x3d29f: 0x6c8ae020,\n\t0x3d2a0: 0x6c8ae220, 0x3d2a1: 0x6c8ae420, 0x3d2a2: 0x6c8ae620, 0x3d2a3: 0x6c8ae820,\n\t0x3d2a4: 0x6c8aea20, 0x3d2a5: 0x6cb77620, 0x3d2a6: 0x6cb77820, 0x3d2a7: 0x6cb77a20,\n\t0x3d2a8: 0x6cb77c20, 0x3d2a9: 0x6cb77e20, 0x3d2aa: 0x6cb78020, 0x3d2ab: 0x6ce8a620,\n\t0x3d2ac: 0x6ce8a820, 0x3d2ad: 0x6ce8aa20, 0x3d2ae: 0x6ce8ac20, 0x3d2af: 0x6ce8ae20,\n\t0x3d2b0: 0x6d184a20, 0x3d2b1: 0x6d184c20, 0x3d2b2: 0x6d184e20, 0x3d2b3: 0x6d185020,\n\t0x3d2b4: 0x6d185220, 0x3d2b5: 0x6d185420, 0x3d2b6: 0x6d473820, 0x3d2b7: 0x6d473a20,\n\t0x3d2b8: 0x6d473c20, 0x3d2b9: 0x6d473e20, 0x3d2ba: 0x6d474020, 0x3d2bb: 0x6d474220,\n\t0x3d2bc: 0x6d474420, 0x3d2bd: 0x6d74fa20, 0x3d2be: 0x6d74fc20, 0x3d2bf: 0x6d9ec220,\n\t// Block 0xf4b, offset 0x3d2c0\n\t0x3d2c0: 0x6d9ec420, 0x3d2c1: 0x6d9ec620, 0x3d2c2: 0x6d9ec820, 0x3d2c3: 0x6dc14020,\n\t0x3d2c4: 0x6dc14220, 0x3d2c5: 0x6ddeee20, 0x3d2c6: 0x6df73420, 0x3d2c7: 0x6dc14620,\n\t0x3d2c8: 0x6ddef820, 0x3d2c9: 0x6e0aea20, 0x3d2ca: 0x6d9eda20, 0x3d2cb: 0x6d186020,\n\t0x3d2cc: 0x6d752e20, 0x3d2cd: 0x6dc16c20, 0x3d2ce: 0x6ddf2620, 0x3d2cf: 0x6e30c620,\n\t0x3d2d0: 0x6df79820, 0x3d2d1: 0x6cb79220, 0x3d2d2: 0x6ce8b220, 0x3d2d3: 0x6d476220,\n\t0x3d2d4: 0x6d756020, 0x3d2d5: 0x6dc18a20, 0x3d2d6: 0x6dc19220, 0x3d2d7: 0x6df7a220,\n\t0x3d2d8: 0x6d757c20, 0x3d2d9: 0x6e0b8620, 0x3d2da: 0x6e0b8820, 0x3d2db: 0x6e1b5e20,\n\t0x3d2dc: 0x6d9f7420, 0x3d2dd: 0x6df7f420, 0x3d2de: 0x6e3c7820, 0x3d2df: 0x6dc1f620,\n\t0x3d2e0: 0x6d75ac20, 0x3d2e1: 0x6e27c420, 0x3d2e2: 0x6d477e20, 0x3d2e3: 0x6e3c9020,\n\t0x3d2e4: 0x6ddfea20, 0x3d2e5: 0x6e1bde20, 0x3d2e6: 0x6e283420, 0x3d2e7: 0x6e427220,\n\t0x3d2e8: 0x6ce8c620, 0x3d2e9: 0x6d478c20, 0x3d2ea: 0x6d478e20, 0x3d2eb: 0x6d75be20,\n\t0x3d2ec: 0x6d9f9620, 0x3d2ed: 0x6d9f9820, 0x3d2ee: 0x6dc24020, 0x3d2ef: 0x6ddffe20,\n\t0x3d2f0: 0x6e1be020, 0x3d2f1: 0x6e318020, 0x3d2f2: 0x6d75c020, 0x3d2f3: 0x6ce8c820,\n\t0x3d2f4: 0x6e451220,\n\t// Block 0xf4c, offset 0x3d300\n\t0x3d300: 0x6c00f420, 0x3d301: 0x6c0ae820, 0x3d302: 0x6c15fe20, 0x3d303: 0x6d189620,\n\t0x3d304: 0x6c011820, 0x3d305: 0x6c0b6620, 0x3d306: 0x6c060c20, 0x3d307: 0x6c2a2820,\n\t0x3d308: 0x6c2a2a20, 0x3d309: 0x6c656c20, 0x3d30a: 0x6c8c6420, 0x3d30b: 0x6ce9e020,\n\t0x3d30c: 0x6c446a20, 0x3d30d: 0x6c448e20, 0x3d30e: 0x6c44d020, 0x3d30f: 0x6c8cbc20,\n\t0x3d310: 0x6c454c20, 0x3d311: 0x6ceac020, 0x3d312: 0x6c18be20, 0x3d313: 0x6c2bd220,\n\t0x3d314: 0x6c45cc20, 0x3d315: 0x6c190220, 0x3d316: 0x6c676c20, 0x3d317: 0x6c676e20,\n\t0x3d318: 0x6c0e9420, 0x3d319: 0x6c47da20, 0x3d31a: 0x6d1cea20, 0x3d31b: 0x6d4ab420,\n\t0x3d31c: 0x6da17c20, 0x3d31d: 0x6dc3da20, 0x3d31e: 0x6e1c7220, 0x3d31f: 0x6cbd8420,\n\t0x3d320: 0x6d1df020, 0x3d321: 0x6d78fe20, 0x3d322: 0x6c0f2a20, 0x3d323: 0x6c1b8820,\n\t0x3d324: 0x6c6ae820, 0x3d325: 0x6d793620, 0x3d326: 0x6c1c6020, 0x3d327: 0x6c4a1620,\n\t0x3d328: 0x6c4a1820, 0x3d329: 0x6c6bd620, 0x3d32a: 0x6c6bd820, 0x3d32b: 0x6c6bda20,\n\t0x3d32c: 0x6cbf4020, 0x3d32d: 0x6d1f2620, 0x3d32e: 0x6d4cb420, 0x3d32f: 0x6d4cc620,\n\t0x3d330: 0x6d1faa20, 0x3d331: 0x6d4d2020, 0x3d332: 0x6c102620, 0x3d333: 0x6c109020,\n\t0x3d334: 0x6c4bca20, 0x3d335: 0x6c6de020, 0x3d336: 0x6c964c20, 0x3d337: 0x6c964e20,\n\t0x3d338: 0x6c4d3a20, 0x3d339: 0x6c1ffa20, 0x3d33a: 0x6c352c20, 0x3d33b: 0x6c502820,\n\t0x3d33c: 0x6cc66a20, 0x3d33d: 0x6cf51a20, 0x3d33e: 0x6d24e420, 0x3d33f: 0x6dc6b420,\n\t// Block 0xf4d, offset 0x3d340\n\t0x3d340: 0x6c9b6c20, 0x3d341: 0x6cf5cc20, 0x3d342: 0x6c515820, 0x3d343: 0x6c515a20,\n\t0x3d344: 0x6c738a20, 0x3d345: 0x6c73bc20, 0x3d346: 0x6cc88020, 0x3d347: 0x6cc88220,\n\t0x3d348: 0x6c376220, 0x3d349: 0x6c754420, 0x3d34a: 0x6c754620, 0x3d34b: 0x6d27fc20,\n\t0x3d34c: 0x6d27fe20, 0x3d34d: 0x6d554c20, 0x3d34e: 0x6d554e20, 0x3d34f: 0x6d555020,\n\t0x3d350: 0x6d80ce20, 0x3d351: 0x6da6f020, 0x3d352: 0x6dc84a20, 0x3d353: 0x6cf92020,\n\t0x3d354: 0x6d55c820, 0x3d355: 0x6c098820, 0x3d356: 0x6c12e820, 0x3d357: 0x6c77e820,\n\t0x3d358: 0x6ca0dc20, 0x3d359: 0x6cfbd020, 0x3d35a: 0x6cfbd220, 0x3d35b: 0x6cfbd420,\n\t0x3d35c: 0x6d580820, 0x3d35d: 0x6d82fa20, 0x3d35e: 0x6de56e20, 0x3d35f: 0x6c78c820,\n\t0x3d360: 0x6ca1ca20, 0x3d361: 0x6d2bd820, 0x3d362: 0x6c569420, 0x3d363: 0x6c3b3620,\n\t0x3d364: 0x6ca2d420, 0x3d365: 0x6c3baa20, 0x3d366: 0x6c7a7020, 0x3d367: 0x6cd15e20,\n\t0x3d368: 0x6d2d8420, 0x3d369: 0x6d5ab020, 0x3d36a: 0x6c580820, 0x3d36b: 0x6ca41820,\n\t0x3d36c: 0x6c7ba220, 0x3d36d: 0x6d5bd620, 0x3d36e: 0x6c7bd220, 0x3d36f: 0x6c3c7420,\n\t0x3d370: 0x6c597220, 0x3d371: 0x6d012e20, 0x3d372: 0x6c7cd420, 0x3d373: 0x6ca59020,\n\t0x3d374: 0x6c7e2c20, 0x3d375: 0x6ca6f220, 0x3d376: 0x6d883020, 0x3d377: 0x6ca77620,\n\t0x3d378: 0x6d042820, 0x3d379: 0x6c258820, 0x3d37a: 0x6e1f7c20, 0x3d37b: 0x6c259220,\n\t0x3d37c: 0x6ca7e620, 0x3d37d: 0x6d5fe820, 0x3d37e: 0x6d5fea20, 0x3d37f: 0x6d5fec20,\n\t// Block 0xf4e, offset 0x3d380\n\t0x3d380: 0x6daf1e20, 0x3d381: 0x6d617a20, 0x3d382: 0x6dcf7a20, 0x3d383: 0x6c5cc220,\n\t0x3d384: 0x6c80c220, 0x3d385: 0x6ca9e020, 0x3d386: 0x6cd85020, 0x3d387: 0x6daff220,\n\t0x3d388: 0x6c5d0a20, 0x3d389: 0x6c3e5a20, 0x3d38a: 0x6d36e220, 0x3d38b: 0x6cdaaa20,\n\t0x3d38c: 0x6c5f8e20, 0x3d38d: 0x6c5f9020, 0x3d38e: 0x6c84c220, 0x3d38f: 0x6cae1620,\n\t0x3d390: 0x6cae1820, 0x3d391: 0x6cae1a20, 0x3d392: 0x6d0bb420, 0x3d393: 0x6d0bb620,\n\t0x3d394: 0x6d39b620, 0x3d395: 0x6d65ee20, 0x3d396: 0x6d8fc220, 0x3d397: 0x6e01da20,\n\t0x3d398: 0x6d675620, 0x3d399: 0x6db4d820, 0x3d39a: 0x6cdef620, 0x3d39b: 0x6cdf0620,\n\t0x3d39c: 0x6e2c3a20, 0x3d39d: 0x6e221220, 0x3d39e: 0x6c14fe20, 0x3d39f: 0x6c26e420,\n\t0x3d3a0: 0x6c86c020, 0x3d3a1: 0x6c86c220, 0x3d3a2: 0x6ce04620, 0x3d3a3: 0x6def6620,\n\t0x3d3a4: 0x6c616420, 0x3d3a5: 0x6d3f6620, 0x3d3a6: 0x6db89c20, 0x3d3a7: 0x6c0a8a20,\n\t0x3d3a8: 0x6ce3ba20, 0x3d3a9: 0x6ce3bc20, 0x3d3aa: 0x6d95f820, 0x3d3ab: 0x6c27ea20,\n\t0x3d3ac: 0x6c88e820, 0x3d3ad: 0x6cb47220, 0x3d3ae: 0x6d12ba20, 0x3d3af: 0x6c626020,\n\t0x3d3b0: 0x6d41bc20, 0x3d3b1: 0x6dd8f820, 0x3d3b2: 0x6c27fe20, 0x3d3b3: 0x6c41fc20,\n\t0x3d3b4: 0x6c62a620, 0x3d3b5: 0x6c62a820, 0x3d3b6: 0x6c898020, 0x3d3b7: 0x6c898220,\n\t0x3d3b8: 0x6cb58020, 0x3d3b9: 0x6cb58220, 0x3d3ba: 0x6cb58420, 0x3d3bb: 0x6cb58620,\n\t0x3d3bc: 0x6ce57020, 0x3d3bd: 0x6d13f420, 0x3d3be: 0x6d41f820, 0x3d3bf: 0x6d41fa20,\n\t// Block 0xf4f, offset 0x3d3c0\n\t0x3d3c0: 0x6d6efe20, 0x3d3c1: 0x6df16220, 0x3d3c2: 0x6c420e20, 0x3d3c3: 0x6cb65e20,\n\t0x3d3c4: 0x6d70de20, 0x3d3c5: 0x6d15dc20, 0x3d3c6: 0x6c8a6620, 0x3d3c7: 0x6c428c20,\n\t0x3d3c8: 0x6c635a20, 0x3d3c9: 0x6c8a9220, 0x3d3ca: 0x6c42da20, 0x3d3cb: 0x6d45b620,\n\t0x3d3cc: 0x6d9c3420, 0x3d3cd: 0x6e19f020, 0x3d3ce: 0x6e371220, 0x3d3cf: 0x6ce88420,\n\t0x3d3d0: 0x6d180420, 0x3d3d1: 0x6dc06620, 0x3d3d2: 0x6df63620, 0x3d3d3: 0x6cb75420,\n\t0x3d3d4: 0x6d9eb820, 0x3d3d5: 0x6e272e20, 0x3d3d6: 0x6c63c820, 0x3d3d7: 0x6d750a20,\n\t0x3d3d8: 0x6ddfda20, 0x3d3d9: 0x6df85820, 0x3d3da: 0x6d188a20, 0x3d3db: 0x6e383e20,\n\t0x3d3dc: 0x6d9f9a20, 0x3d3dd: 0x6e441c20,\n\t// Block 0xf50, offset 0x3d400\n\t0x3d400: 0x6c15ea20, 0x3d401: 0x6c00fe20, 0x3d402: 0x6c000c20, 0x3d403: 0x6c0b4420,\n\t0x3d404: 0x6c16ba20, 0x3d405: 0x6c435e20, 0x3d406: 0x6c437820, 0x3d407: 0x6c645620,\n\t0x3d408: 0x6c8bba20, 0x3d409: 0x6cb81c20, 0x3d40a: 0x6d18fe20, 0x3d40b: 0x6d18ce20,\n\t0x3d40c: 0x6d9fac20, 0x3d40d: 0x6c0ccc20, 0x3d40e: 0x6c173820, 0x3d40f: 0x6c2a3220,\n\t0x3d410: 0x6e0c6420, 0x3d411: 0x6c2a5220, 0x3d412: 0x6c8c8020, 0x3d413: 0x6df89620,\n\t0x3d414: 0x6c02ce20, 0x3d415: 0x6c0c7820, 0x3d416: 0x6c0c7c20, 0x3d417: 0x6c02fe20,\n\t0x3d418: 0x6c65aa20, 0x3d419: 0x6c02ae20, 0x3d41a: 0x6c064a20, 0x3d41b: 0x6c179020,\n\t0x3d41c: 0x6dbc5420, 0x3d41d: 0x6c009a20, 0x3d41e: 0x6c015a20, 0x3d41f: 0x6c17da20,\n\t0x3d420: 0x6c2ae220, 0x3d421: 0x6c2b4a20, 0x3d422: 0x6cb95220, 0x3d423: 0x6cea4020,\n\t0x3d424: 0x6c0d3c20, 0x3d425: 0x6c455c20, 0x3d426: 0x6c456020, 0x3d427: 0x6cea9c20,\n\t0x3d428: 0x6c016420, 0x3d429: 0x6c06b820, 0x3d42a: 0x6c06ba20, 0x3d42b: 0x6c06c620,\n\t0x3d42c: 0x6c06d220, 0x3d42d: 0x6c2bac20, 0x3d42e: 0x6cb9f220, 0x3d42f: 0x6c18d420,\n\t0x3d430: 0x6c45e820, 0x3d431: 0x6c673020, 0x3d432: 0x6c673020, 0x3d433: 0x6c673020,\n\t0x3d434: 0x6c038e20, 0x3d435: 0x6c135e20, 0x3d436: 0x6c03a020, 0x3d437: 0x6c677e20,\n\t0x3d438: 0x6c8e0c20, 0x3d439: 0x6c074420, 0x3d43a: 0x6c075020, 0x3d43b: 0x6c0e3020,\n\t0x3d43c: 0x6c468620, 0x3d43d: 0x6c197e20, 0x3d43e: 0x6c199e20, 0x3d43f: 0x6c2c7e20,\n\t// Block 0xf51, offset 0x3d440\n\t0x3d440: 0x6c468e20, 0x3d441: 0x6c67e620, 0x3d442: 0x6c681820, 0x3d443: 0x6c8e9620,\n\t0x3d444: 0x6c8eb220, 0x3d445: 0x6cbaaa20, 0x3d446: 0x6cbaaa20, 0x3d447: 0x6cbad220,\n\t0x3d448: 0x6cbaf620, 0x3d449: 0x6cbb0620, 0x3d44a: 0x6ceb7620, 0x3d44b: 0x6d1cf220,\n\t0x3d44c: 0x6d1b7220, 0x3d44d: 0x6d1cf420, 0x3d44e: 0x6d1bb220, 0x3d44f: 0x6d49c620,\n\t0x3d450: 0x6c032820, 0x3d451: 0x6c0f0e20, 0x3d452: 0x6c486820, 0x3d453: 0x6c908220,\n\t0x3d454: 0x6c90b420, 0x3d455: 0x6c481220, 0x3d456: 0x6c6a6e20, 0x3d457: 0x6cbcb020,\n\t0x3d458: 0x6d4af820, 0x3d459: 0x6de13e20, 0x3d45a: 0x6c1b6c20, 0x3d45b: 0x6c916220,\n\t0x3d45c: 0x6c1b7420, 0x3d45d: 0x6c0f1e20, 0x3d45e: 0x6d1e1020, 0x3d45f: 0x6c91d420,\n\t0x3d460: 0x6c080620, 0x3d461: 0x6c2f9020, 0x3d462: 0x6c6b1820, 0x3d463: 0x6c6b3c20,\n\t0x3d464: 0x6c6b5420, 0x3d465: 0x6c495620, 0x3d466: 0x6c924e20, 0x3d467: 0x6cbdf220,\n\t0x3d468: 0x6cbe0e20, 0x3d469: 0x6d4c1220, 0x3d46a: 0x6de16420, 0x3d46b: 0x6de16420,\n\t0x3d46c: 0x6c0fdc20, 0x3d46d: 0x6c933820, 0x3d46e: 0x6cefa820, 0x3d46f: 0x6d1f5620,\n\t0x3d470: 0x6de19a20, 0x3d471: 0x6e3d2020, 0x3d472: 0x6c1cc220, 0x3d473: 0x6c4a9220,\n\t0x3d474: 0x6c114a20, 0x3d475: 0x6c01ac20, 0x3d476: 0x6c4abc20, 0x3d477: 0x6c941020,\n\t0x3d478: 0x6c01b620, 0x3d479: 0x6c311420, 0x3d47a: 0x6c1dd220, 0x3d47b: 0x6c6d7820,\n\t0x3d47c: 0x6cc0a820, 0x3d47d: 0x6c6d7c20, 0x3d47e: 0x6cf09a20, 0x3d47f: 0x6cc16a20,\n\t// Block 0xf52, offset 0x3d480\n\t0x3d480: 0x6d202220, 0x3d481: 0x6c272c20, 0x3d482: 0x6c954a20, 0x3d483: 0x6c08a020,\n\t0x3d484: 0x6cc17820, 0x3d485: 0x6c6e0020, 0x3d486: 0x6cc19820, 0x3d487: 0x6d4ea820,\n\t0x3d488: 0x6d7ae820, 0x3d489: 0x6e320a20, 0x3d48a: 0x6c4c6820, 0x3d48b: 0x6c4cac20,\n\t0x3d48c: 0x6c95e620, 0x3d48d: 0x6c95ec20, 0x3d48e: 0x6cc21820, 0x3d48f: 0x6d476820,\n\t0x3d490: 0x6c01d820, 0x3d491: 0x6c111220, 0x3d492: 0x6c111220, 0x3d493: 0x6c82fe20,\n\t0x3d494: 0x6c326a20, 0x3d495: 0x6c326a20, 0x3d496: 0x6c329a20, 0x3d497: 0x6d7ea620,\n\t0x3d498: 0x6e201a20, 0x3d499: 0x6c1ee020, 0x3d49a: 0x6c96ae20, 0x3d49b: 0x6c6f1420,\n\t0x3d49c: 0x6cc2ca20, 0x3d49d: 0x6c1f2220, 0x3d49e: 0x6c1f2c20, 0x3d49f: 0x6c1f6c20,\n\t0x3d4a0: 0x6c6fa220, 0x3d4a1: 0x6c4dbe20, 0x3d4a2: 0x6c4da620, 0x3d4a3: 0x6c6fc020,\n\t0x3d4a4: 0x6c97fe20, 0x3d4a5: 0x6c97a020, 0x3d4a6: 0x6d222420, 0x3d4a7: 0x6cf2ac20,\n\t0x3d4a8: 0x6cf2b020, 0x3d4a9: 0x6cf2ac20, 0x3d4aa: 0x6d226c20, 0x3d4ab: 0x6d4fb820,\n\t0x3d4ac: 0x6d7bcc20, 0x3d4ad: 0x6d4fd820, 0x3d4ae: 0x6d4fe820, 0x3d4af: 0x6da3f620,\n\t0x3d4b0: 0x6de28220, 0x3d4b1: 0x6de28c20, 0x3d4b2: 0x6c11c220, 0x3d4b3: 0x6c98ba20,\n\t0x3d4b4: 0x6c11e820, 0x3d4b5: 0x6c345020, 0x3d4b6: 0x6c349420, 0x3d4b7: 0x6c713820,\n\t0x3d4b8: 0x6c4fd020, 0x3d4b9: 0x6c711220, 0x3d4ba: 0x6c4f3420, 0x3d4bb: 0x6c990c20,\n\t0x3d4bc: 0x6c994220, 0x3d4bd: 0x6c722020, 0x3d4be: 0x6cc57a20, 0x3d4bf: 0x6cf41220,\n\t// Block 0xf53, offset 0x3d4c0\n\t0x3d4c0: 0x6cf51c20, 0x3d4c1: 0x6c998820, 0x3d4c2: 0x6d237420, 0x3d4c3: 0x6d510220,\n\t0x3d4c4: 0x6d23ee20, 0x3d4c5: 0x6d515a20, 0x3d4c6: 0x6d23e220, 0x3d4c7: 0x6de2ea20,\n\t0x3d4c8: 0x6c9ab020, 0x3d4c9: 0x6cf53820, 0x3d4ca: 0x6da53020, 0x3d4cb: 0x6c9b6e20,\n\t0x3d4cc: 0x6c739020, 0x3d4cd: 0x6c731620, 0x3d4ce: 0x6d7e3620, 0x3d4cf: 0x6cc7b820,\n\t0x3d4d0: 0x6cf5e620, 0x3d4d1: 0x6c50c220, 0x3d4d2: 0x6c448820, 0x3d4d3: 0x6c8c8820,\n\t0x3d4d4: 0x6cb8f420, 0x3d4d5: 0x6d258220, 0x3d4d6: 0x6c3e9420, 0x3d4d7: 0x6c3e7220,\n\t0x3d4d8: 0x6c73be20, 0x3d4d9: 0x6c9c2220, 0x3d4da: 0x6cf69620, 0x3d4db: 0x6c21ee20,\n\t0x3d4dc: 0x6c21d820, 0x3d4dd: 0x6c220c20, 0x3d4de: 0x6c365c20, 0x3d4df: 0x6c522420,\n\t0x3d4e0: 0x6c36a020, 0x3d4e1: 0x6c52c020, 0x3d4e2: 0x6c9c8820, 0x3d4e3: 0x6c750620,\n\t0x3d4e4: 0x6c9c9a20, 0x3d4e5: 0x6c740020, 0x3d4e6: 0x6cc95020, 0x3d4e7: 0x6cf6d620,\n\t0x3d4e8: 0x6cf70820, 0x3d4e9: 0x6d267820, 0x3d4ea: 0x6d53d620, 0x3d4eb: 0x6da63220,\n\t0x3d4ec: 0x6d801420, 0x3d4ed: 0x6da6f220, 0x3d4ee: 0x6e1db420, 0x3d4ef: 0x6c12b420,\n\t0x3d4f0: 0x6c756020, 0x3d4f1: 0x6d80d420, 0x3d4f2: 0x6e38d620, 0x3d4f3: 0x6cf90820,\n\t0x3d4f4: 0x6d285c20, 0x3d4f5: 0x6c9e2620, 0x3d4f6: 0x6c9e2820, 0x3d4f7: 0x6c9e2e20,\n\t0x3d4f8: 0x6c30b220, 0x3d4f9: 0x6d288c20, 0x3d4fa: 0x6c130620, 0x3d4fb: 0x6c393420,\n\t0x3d4fc: 0x6c38ac20, 0x3d4fd: 0x6c38c620, 0x3d4fe: 0x6c22c020, 0x3d4ff: 0x6c767220,\n\t// Block 0xf54, offset 0x3d500\n\t0x3d500: 0x6c546820, 0x3d501: 0x6c76b620, 0x3d502: 0x6c546e20, 0x3d503: 0x6c769a20,\n\t0x3d504: 0x6c76b820, 0x3d505: 0x6c76d220, 0x3d506: 0x6c771820, 0x3d507: 0x6c545420,\n\t0x3d508: 0x6ccc3a20, 0x3d509: 0x6cccb620, 0x3d50a: 0x6cfa0020, 0x3d50b: 0x6cccf220,\n\t0x3d50c: 0x6cfa8620, 0x3d50d: 0x6d29d220, 0x3d50e: 0x6c9f8020, 0x3d50f: 0x6d568820,\n\t0x3d510: 0x6d571a20, 0x3d511: 0x6d577a20, 0x3d512: 0x6d580a20, 0x3d513: 0x6dfbe420,\n\t0x3d514: 0x6de4d620, 0x3d515: 0x6de4d020, 0x3d516: 0x6e0f0220, 0x3d517: 0x6e0f1420,\n\t0x3d518: 0x6c23a220, 0x3d519: 0x6c239620, 0x3d51a: 0x6c554420, 0x3d51b: 0x6cb8ea20,\n\t0x3d51c: 0x6cfc0420, 0x3d51d: 0x6cce4a20, 0x3d51e: 0x6d582220, 0x3d51f: 0x6d838420,\n\t0x3d520: 0x6e443420, 0x3d521: 0x6da93020, 0x3d522: 0x6cfd5420, 0x3d523: 0x6c790420,\n\t0x3d524: 0x6ccf7820, 0x3d525: 0x6d2c1c20, 0x3d526: 0x6c243420, 0x3d527: 0x6cfdfc20,\n\t0x3d528: 0x6de60820, 0x3d529: 0x6c04fa20, 0x3d52a: 0x6c246c20, 0x3d52b: 0x6c3b5620,\n\t0x3d52c: 0x6c79bc20, 0x3d52d: 0x6c79bc20, 0x3d52e: 0x6cfe7820, 0x3d52f: 0x6cfea220,\n\t0x3d530: 0x6d2d0620, 0x3d531: 0x6d5a3420, 0x3d532: 0x6de63620, 0x3d533: 0x6c57d820,\n\t0x3d534: 0x6cd1a420, 0x3d535: 0x6c585a20, 0x3d536: 0x6c3be620, 0x3d537: 0x6cffb820,\n\t0x3d538: 0x6ca3e620, 0x3d539: 0x6cf15e20, 0x3d53a: 0x6d00b220, 0x3d53b: 0x6dab0a20,\n\t0x3d53c: 0x6e104820, 0x3d53d: 0x6c3c7020, 0x3d53e: 0x6c594e20, 0x3d53f: 0x6d868020,\n\t// Block 0xf55, offset 0x3d540\n\t0x3d540: 0x6c3c8820, 0x3d541: 0x6c3c8e20, 0x3d542: 0x6c3c8c20, 0x3d543: 0x6c59e420,\n\t0x3d544: 0x6c7c7e20, 0x3d545: 0x6c7c5e20, 0x3d546: 0x6c7c6020, 0x3d547: 0x6c7c6020,\n\t0x3d548: 0x6cd36020, 0x3d549: 0x6cd34020, 0x3d54a: 0x6d5c4620, 0x3d54b: 0x6d013a20,\n\t0x3d54c: 0x6c13ee20, 0x3d54d: 0x6c3cd620, 0x3d54e: 0x6ca5f620, 0x3d54f: 0x6d027820,\n\t0x3d550: 0x6d5d2820, 0x3d551: 0x6dac1020, 0x3d552: 0x6c3d1e20, 0x3d553: 0x6c7dd220,\n\t0x3d554: 0x6cd4fa20, 0x3d555: 0x6d30e620, 0x3d556: 0x6d30ce20, 0x3d557: 0x6c7e5e20,\n\t0x3d558: 0x6c5b3020, 0x3d559: 0x6d5e0420, 0x3d55a: 0x6d314e20, 0x3d55b: 0x6d885420,\n\t0x3d55c: 0x6cd5c620, 0x3d55d: 0x6d5eba20, 0x3d55e: 0x6d5eba20, 0x3d55f: 0x6d322e20,\n\t0x3d560: 0x6d323420, 0x3d561: 0x6d32de20, 0x3d562: 0x6d5f3420, 0x3d563: 0x6d894a20,\n\t0x3d564: 0x6d5efe20, 0x3d565: 0x6dae2820, 0x3d566: 0x6d8a5e20, 0x3d567: 0x6daece20,\n\t0x3d568: 0x6daee820, 0x3d569: 0x6dce7220, 0x3d56a: 0x6c5c6620, 0x3d56b: 0x6c3dc620,\n\t0x3d56c: 0x6cd78420, 0x3d56d: 0x6d608020, 0x3d56e: 0x6d342620, 0x3d56f: 0x6d60e220,\n\t0x3d570: 0x6daf6c20, 0x3d571: 0x6e399620, 0x3d572: 0x6c80d020, 0x3d573: 0x6d619e20,\n\t0x3d574: 0x6cd86420, 0x3d575: 0x6d073a20, 0x3d576: 0x6d8bc020, 0x3d577: 0x6e33b420,\n\t0x3d578: 0x6caa3220, 0x3d579: 0x6dcfe420, 0x3d57a: 0x6c3e3620, 0x3d57b: 0x6d624620,\n\t0x3d57c: 0x6dd02420, 0x3d57d: 0x6cd91e20, 0x3d57e: 0x6d628a20, 0x3d57f: 0x6db0a220,\n\t// Block 0xf56, offset 0x3d580\n\t0x3d580: 0x6c21a420, 0x3d581: 0x6c3e6a20, 0x3d582: 0x6c3e9e20, 0x3d583: 0x6c823c20,\n\t0x3d584: 0x6cd97a20, 0x3d585: 0x6cd98820, 0x3d586: 0x6ceed220, 0x3d587: 0x6d367820,\n\t0x3d588: 0x6d369420, 0x3d589: 0x6d538a20, 0x3d58a: 0x6da5b220, 0x3d58b: 0x6c82fe20,\n\t0x3d58c: 0x6cda9c20, 0x3d58d: 0x6d114c20, 0x3d58e: 0x6cdac220, 0x3d58f: 0x6c265420,\n\t0x3d590: 0x6c264820, 0x3d591: 0x6c3f5620, 0x3d592: 0x6c185020, 0x3d593: 0x6c3f7e20,\n\t0x3d594: 0x6c3f8220, 0x3d595: 0x6c3f9420, 0x3d596: 0x6c5eb620, 0x3d597: 0x6c5f1c20,\n\t0x3d598: 0x6c5eb420, 0x3d599: 0x6cac7420, 0x3d59a: 0x6c840620, 0x3d59b: 0x6cae1e20,\n\t0x3d59c: 0x6cac7620, 0x3d59d: 0x6cad0c20, 0x3d59e: 0x6cdb6e20, 0x3d59f: 0x6cdbee20,\n\t0x3d5a0: 0x6c84c420, 0x3d5a1: 0x6cdb3620, 0x3d5a2: 0x6cdb3a20, 0x3d5a3: 0x6cdb5820,\n\t0x3d5a4: 0x6cdc0c20, 0x3d5a5: 0x6d386a20, 0x3d5a6: 0x6d0a7820, 0x3d5a7: 0x6db1fa20,\n\t0x3d5a8: 0x6d0bbc20, 0x3d5a9: 0x6d642820, 0x3d5aa: 0x6d646c20, 0x3d5ab: 0x6d90ac20,\n\t0x3d5ac: 0x6d8e4820, 0x3d5ad: 0x6db27620, 0x3d5ae: 0x6e006820, 0x3d5af: 0x6e128020,\n\t0x3d5b0: 0x6dd1a220, 0x3d5b1: 0x6e12c220, 0x3d5b2: 0x6e20a820, 0x3d5b3: 0x6c5f9620,\n\t0x3d5b4: 0x6d0bc020, 0x3d5b5: 0x6db39a20, 0x3d5b6: 0x6dd29a20, 0x3d5b7: 0x6c852c20,\n\t0x3d5b8: 0x6cdd7820, 0x3d5b9: 0x6d0c2420, 0x3d5ba: 0x6cdd9c20, 0x3d5bb: 0x6d900a20,\n\t0x3d5bc: 0x6d3a1c20, 0x3d5bd: 0x6d3b0e20, 0x3d5be: 0x6d901420, 0x3d5bf: 0x6d8ffa20,\n\t// Block 0xf57, offset 0x3d5c0\n\t0x3d5c0: 0x6d668a20, 0x3d5c1: 0x6debe220, 0x3d5c2: 0x6debf020, 0x3d5c3: 0x6d912820,\n\t0x3d5c4: 0x6c14d220, 0x3d5c5: 0x6cafa620, 0x3d5c6: 0x6cdeaa20, 0x3d5c7: 0x6d0d0620,\n\t0x3d5c8: 0x6d3b2c20, 0x3d5c9: 0x6d3b6e20, 0x3d5ca: 0x6c8c8420, 0x3d5cb: 0x6e430c20,\n\t0x3d5cc: 0x6c867c20, 0x3d5cd: 0x6cb06c20, 0x3d5ce: 0x6cdf6620, 0x3d5cf: 0x6d0e4620,\n\t0x3d5d0: 0x6d925c20, 0x3d5d1: 0x6e2c4c20, 0x3d5d2: 0x6c26ec20, 0x3d5d3: 0x6cb18c20,\n\t0x3d5d4: 0x6cb1a420, 0x3d5d5: 0x6ce0de20, 0x3d5d6: 0x6e34b020, 0x3d5d7: 0x6c873020,\n\t0x3d5d8: 0x6d93fa20, 0x3d5d9: 0x6d76c820, 0x3d5da: 0x6ce1c620, 0x3d5db: 0x6d101620,\n\t0x3d5dc: 0x6d103a20, 0x3d5dd: 0x6c458420, 0x3d5de: 0x6c879a20, 0x3d5df: 0x6d951e20,\n\t0x3d5e0: 0x6d6cc620, 0x3d5e1: 0x6d95c220, 0x3d5e2: 0x6c153c20, 0x3d5e3: 0x6c625420,\n\t0x3d5e4: 0x6d121420, 0x3d5e5: 0x6cb46620, 0x3d5e6: 0x6d401a20, 0x3d5e7: 0x6d12da20,\n\t0x3d5e8: 0x6d6e0a20, 0x3d5e9: 0x6d6e0c20, 0x3d5ea: 0x6d41c020, 0x3d5eb: 0x6df0d620,\n\t0x3d5ec: 0x6e04bc20, 0x3d5ed: 0x6e3ac220, 0x3d5ee: 0x6ce59420, 0x3d5ef: 0x6d420c20,\n\t0x3d5f0: 0x6dbb3420, 0x3d5f1: 0x6dbb7220, 0x3d5f2: 0x6d6f8c20, 0x3d5f3: 0x6ce69420,\n\t0x3d5f4: 0x6d7a8620, 0x3d5f5: 0x6dd9cc20, 0x3d5f6: 0x6df20220, 0x3d5f7: 0x6d706220,\n\t0x3d5f8: 0x6dbc7220, 0x3d5f9: 0x6df24220, 0x3d5fa: 0x6e06d620, 0x3d5fb: 0x6df2ca20,\n\t0x3d5fc: 0x6ce74620, 0x3d5fd: 0x6d712e20, 0x3d5fe: 0x6d15fc20, 0x3d5ff: 0x6d15fc20,\n\t// Block 0xf58, offset 0x3d600\n\t0x3d600: 0x6d711820, 0x3d601: 0x6d449820, 0x3d602: 0x6c8a6820, 0x3d603: 0x6d44d220,\n\t0x3d604: 0x6d9b2620, 0x3d605: 0x6df3ee20, 0x3d606: 0x6d457020, 0x3d607: 0x6dbe8420,\n\t0x3d608: 0x6d72ba20, 0x3d609: 0x6d9c9020, 0x3d60a: 0x6e08b620, 0x3d60b: 0x6e09e620,\n\t0x3d60c: 0x6d745c20, 0x3d60d: 0x6dc07220, 0x3d60e: 0x6e0a0620, 0x3d60f: 0x6dc13220,\n\t0x3d610: 0x6e0a7420, 0x3d611: 0x6e267a20, 0x3d612: 0x6e1a6a20, 0x3d613: 0x6e421620,\n\t0x3d614: 0x6d751a20, 0x3d615: 0x6cb79420, 0x3d616: 0x6e0b4220, 0x3d617: 0x6ce8be20,\n\t0x3d618: 0x6c42e420, 0x3d619: 0x6e1b6620, 0x3d61a: 0x6d75a020, 0x3d61b: 0x6ddfac20,\n\t0x3d61c: 0x6d478020, 0x3d61d: 0x6e1bc220,\n}\n\n// mainLookup: 16576 entries, 33152 bytes\n// Block 0 is the null block.\nvar mainLookup = [16576]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0x0e0: 0x1f, 0x0e1: 0x20, 0x0e2: 0x21, 0x0e3: 0x22, 0x0e4: 0x23, 0x0e5: 0x24, 0x0e6: 0x25, 0x0e7: 0x26,\n\t0x0e8: 0x27, 0x0e9: 0x28, 0x0ea: 0x29, 0x0eb: 0x2a, 0x0ec: 0x2b, 0x0ed: 0x2c, 0x0ee: 0x2d, 0x0ef: 0x2e,\n\t0x0f0: 0x2f, 0x0f1: 0x30, 0x0f2: 0x31, 0x0f3: 0x32, 0x0f4: 0x33, 0x0f5: 0x34, 0x0f6: 0x35, 0x0f7: 0x36,\n\t0x0f8: 0x37, 0x0f9: 0x38, 0x0fa: 0x39, 0x0fb: 0x3a, 0x0fc: 0x3b, 0x0fd: 0x3c, 0x0fe: 0x3d, 0x0ff: 0x3e,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x3f, 0x101: 0x40, 0x102: 0x41, 0x103: 0x42, 0x104: 0x43, 0x105: 0x44, 0x106: 0x45, 0x107: 0x46,\n\t0x108: 0x47, 0x109: 0x48, 0x10a: 0x49, 0x10b: 0x4a, 0x10c: 0x4b, 0x10d: 0x4c, 0x10e: 0x4d, 0x10f: 0x4e,\n\t0x110: 0x4f, 0x111: 0x50, 0x112: 0x51, 0x113: 0x52, 0x114: 0x53, 0x115: 0x54, 0x116: 0x55, 0x117: 0x56,\n\t0x118: 0x57, 0x119: 0x58, 0x11a: 0x59, 0x11b: 0x5a, 0x11c: 0x5b, 0x11d: 0x5c, 0x11e: 0x5d, 0x11f: 0x5e,\n\t0x120: 0x5f, 0x121: 0x60, 0x122: 0x61, 0x123: 0x62, 0x124: 0x63, 0x125: 0x64, 0x126: 0x65, 0x127: 0x66,\n\t0x128: 0x67, 0x129: 0x68, 0x12a: 0x69, 0x12c: 0x6a, 0x12d: 0x6b, 0x12e: 0x6c, 0x12f: 0x6d,\n\t0x130: 0x6e, 0x131: 0x6f, 0x133: 0x70, 0x134: 0x71, 0x135: 0x72, 0x136: 0x73, 0x137: 0x74,\n\t0x138: 0x75, 0x139: 0x76, 0x13a: 0x77, 0x13b: 0x78, 0x13c: 0x79, 0x13d: 0x7a, 0x13e: 0x7b, 0x13f: 0x7c,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x7d, 0x141: 0x7e, 0x142: 0x7f, 0x143: 0x80, 0x144: 0x81, 0x145: 0x82, 0x146: 0x83, 0x147: 0x84,\n\t0x148: 0x85, 0x149: 0x86, 0x14a: 0x87, 0x14b: 0x88, 0x14c: 0x89, 0x14d: 0x8a, 0x14e: 0x8b, 0x14f: 0x8c,\n\t0x150: 0x8d, 0x151: 0x8e, 0x152: 0x8f, 0x153: 0x90, 0x154: 0x91, 0x155: 0x92, 0x156: 0x93, 0x157: 0x94,\n\t0x158: 0x95, 0x159: 0x96, 0x15a: 0x97, 0x15b: 0x98, 0x15c: 0x99, 0x15d: 0x9a, 0x15e: 0x9b, 0x15f: 0x9c,\n\t0x160: 0x9d, 0x161: 0x9e, 0x162: 0x9f, 0x163: 0xa0, 0x164: 0xa1, 0x165: 0xa2, 0x166: 0xa3, 0x167: 0xa4,\n\t0x168: 0xa5, 0x169: 0xa6, 0x16a: 0xa7, 0x16b: 0xa8, 0x16c: 0xa9, 0x16d: 0xaa,\n\t0x170: 0xab, 0x171: 0xac, 0x172: 0xad, 0x173: 0xae, 0x174: 0xaf, 0x175: 0xb0, 0x176: 0xb1, 0x177: 0xb2,\n\t0x178: 0xb3, 0x17a: 0xb4, 0x17b: 0xb5, 0x17c: 0xb6, 0x17d: 0xb7, 0x17e: 0xb8, 0x17f: 0xb9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0xba, 0x181: 0xbb, 0x182: 0xbc, 0x183: 0xbd, 0x184: 0xbe, 0x185: 0xbf, 0x186: 0xc0, 0x187: 0xc1,\n\t0x188: 0xc2, 0x189: 0xc3, 0x18a: 0xc4, 0x18b: 0xc5, 0x18c: 0xc6, 0x18d: 0xc7, 0x18e: 0xc8, 0x18f: 0xc9,\n\t// Block 0x7, offset 0x1c0\n\t0x1f7: 0xca,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xcb, 0x201: 0xcc, 0x202: 0xcd, 0x203: 0xce, 0x204: 0xcf, 0x205: 0xd0, 0x206: 0xd1, 0x207: 0xd2,\n\t0x208: 0xd3, 0x209: 0xd4, 0x20a: 0xd5, 0x20b: 0xd6, 0x20c: 0xd7, 0x20d: 0xd8, 0x20e: 0xd9, 0x20f: 0xda,\n\t0x210: 0xdb, 0x211: 0xdc, 0x212: 0xdd, 0x213: 0xde, 0x214: 0xdf, 0x215: 0xe0, 0x216: 0xe1, 0x217: 0xe2,\n\t0x218: 0xe3, 0x219: 0xe4, 0x21a: 0xe5, 0x21b: 0xe6, 0x21c: 0xe7, 0x21d: 0xe8, 0x21e: 0xe9, 0x21f: 0xea,\n\t0x220: 0xeb, 0x221: 0xec, 0x222: 0xed, 0x223: 0xee, 0x224: 0xef, 0x225: 0xf0, 0x226: 0xf1, 0x227: 0xf2,\n\t0x228: 0xf3, 0x229: 0xf4, 0x22a: 0xf5, 0x22b: 0xf6, 0x22c: 0xf7, 0x22f: 0xf8,\n\t// Block 0x9, offset 0x240\n\t0x25e: 0xf9, 0x25f: 0xfa,\n\t// Block 0xa, offset 0x280\n\t0x2a4: 0xfb, 0x2a5: 0xfc, 0x2a6: 0xfd, 0x2a7: 0xfe,\n\t0x2a8: 0xff, 0x2a9: 0x100, 0x2aa: 0x101, 0x2ab: 0x102, 0x2ac: 0x103, 0x2ad: 0x104, 0x2ae: 0x105, 0x2af: 0x106,\n\t0x2b0: 0x107, 0x2b1: 0x108, 0x2b2: 0x109, 0x2b3: 0x10a, 0x2b4: 0x10b, 0x2b5: 0x10c, 0x2b6: 0x10d, 0x2b7: 0x10e,\n\t0x2b8: 0x10f, 0x2b9: 0x110, 0x2ba: 0x111, 0x2bb: 0x112, 0x2bc: 0x113, 0x2bd: 0x114, 0x2be: 0x115, 0x2bf: 0x116,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x117, 0x2c1: 0x118, 0x2c2: 0x119, 0x2c3: 0x11a, 0x2c4: 0x11b, 0x2c5: 0x11c, 0x2c6: 0x11d, 0x2c7: 0x11e,\n\t0x2ca: 0x11f, 0x2cb: 0x120, 0x2cc: 0x121, 0x2cd: 0x122, 0x2ce: 0x123, 0x2cf: 0x124,\n\t0x2d0: 0x125, 0x2d1: 0x126, 0x2d2: 0x127,\n\t0x2e0: 0x128, 0x2e1: 0x129, 0x2e4: 0x12a, 0x2e6: 0x12b,\n\t0x2e8: 0x12c, 0x2e9: 0x12d, 0x2ec: 0x12e, 0x2ed: 0x12f,\n\t0x2f0: 0x130, 0x2f1: 0x131,\n\t0x2f9: 0x132,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x133, 0x301: 0x134, 0x302: 0x135, 0x303: 0x136, 0x304: 0x137, 0x305: 0x138, 0x306: 0x139, 0x307: 0x13a,\n\t0x31a: 0x13b, 0x31b: 0x13c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x13d, 0x341: 0x13e, 0x342: 0x13f, 0x343: 0x140, 0x344: 0x141, 0x345: 0x142, 0x346: 0x143, 0x347: 0x144,\n\t0x348: 0x145, 0x349: 0x146, 0x34a: 0x147, 0x34b: 0x148, 0x34c: 0x149, 0x34d: 0x14a,\n\t0x350: 0x14b, 0x351: 0x14c,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x14d, 0x381: 0x14e, 0x382: 0x14f, 0x383: 0x150, 0x384: 0x151, 0x385: 0x152, 0x386: 0x153, 0x387: 0x154,\n\t0x388: 0x155, 0x389: 0x156, 0x38a: 0x157, 0x38b: 0x158, 0x38c: 0x159, 0x38d: 0x15a, 0x38e: 0x15b, 0x38f: 0x15c,\n\t0x390: 0x15d,\n\t// Block 0xf, offset 0x3c0\n\t0x3e0: 0x15e, 0x3e1: 0x15f, 0x3e2: 0x160, 0x3e3: 0x161, 0x3e4: 0x162, 0x3e5: 0x163, 0x3e6: 0x164, 0x3e7: 0x165,\n\t0x3e8: 0x166,\n\t0x3fc: 0x167, 0x3fd: 0x168, 0x3fe: 0x169,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x16a,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x16b, 0x441: 0x16c, 0x442: 0x16d, 0x443: 0x16e, 0x444: 0x16f, 0x445: 0x170, 0x446: 0x171, 0x447: 0x172,\n\t0x448: 0x173, 0x449: 0x174, 0x44c: 0x175, 0x44d: 0x176,\n\t0x450: 0x177, 0x451: 0x178, 0x452: 0x179, 0x453: 0x17a, 0x454: 0x17b, 0x455: 0x17c, 0x456: 0x17d, 0x457: 0x17e,\n\t0x458: 0x17f, 0x459: 0x180, 0x45a: 0x181, 0x45b: 0x182, 0x45c: 0x183, 0x45d: 0x184, 0x45e: 0x185, 0x45f: 0x186,\n\t// Block 0x12, offset 0x480\n\t0x4b8: 0x187, 0x4b9: 0x188, 0x4ba: 0x189, 0x4bb: 0x18a,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x18b, 0x4c1: 0x18c, 0x4c2: 0x18d, 0x4c3: 0x18e, 0x4c4: 0x18f, 0x4c5: 0x190, 0x4c6: 0x191, 0x4c7: 0x192,\n\t0x4c8: 0x193, 0x4c9: 0x194, 0x4cc: 0x195, 0x4cd: 0x196, 0x4ce: 0x197, 0x4cf: 0x198,\n\t0x4d0: 0x199, 0x4d1: 0x19a, 0x4d2: 0x19b, 0x4d3: 0x19c, 0x4d4: 0x19d, 0x4d5: 0x19e, 0x4d7: 0x19f,\n\t0x4d8: 0x1a0, 0x4d9: 0x1a1, 0x4da: 0x1a2, 0x4db: 0x1a3, 0x4dc: 0x1a4, 0x4dd: 0x1a5,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x1a6, 0x521: 0x1a7, 0x522: 0x1a8, 0x523: 0x1a9, 0x524: 0x1aa, 0x525: 0x1ab, 0x526: 0x1ac, 0x527: 0x1ad,\n\t0x528: 0x1ae,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x09, 0x551: 0x0a, 0x552: 0x0b, 0x553: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x1af, 0x581: 0x1b0, 0x584: 0x1b0, 0x585: 0x1b0, 0x586: 0x1b0, 0x587: 0x1b1,\n\t// Block 0x17, offset 0x5c0\n\t0x5e0: 0x14,\n\t// Block 0x18, offset 0x600\n\t0x602: 0x01, 0x603: 0x02, 0x604: 0x03, 0x605: 0x04, 0x606: 0x05, 0x607: 0x06,\n\t0x608: 0x07, 0x609: 0x08, 0x60a: 0x09, 0x60b: 0x0a, 0x60c: 0x0b, 0x60d: 0x0c, 0x60e: 0x0d, 0x60f: 0x0e,\n\t0x610: 0x0f, 0x611: 0x10, 0x612: 0x11, 0x613: 0x12, 0x614: 0x13, 0x615: 0x14, 0x616: 0x15, 0x617: 0x16,\n\t0x618: 0x17, 0x619: 0x18, 0x61a: 0x19, 0x61b: 0x1a, 0x61c: 0x1b, 0x61d: 0x1c, 0x61e: 0x1d, 0x61f: 0x1e,\n\t0x620: 0x01, 0x621: 0x02, 0x622: 0x03, 0x623: 0x04, 0x624: 0x05,\n\t0x62a: 0x06, 0x62d: 0x07, 0x62f: 0x08,\n\t0x630: 0x13, 0x633: 0x15,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3f, 0x641: 0x40, 0x642: 0x41, 0x643: 0x42, 0x644: 0x43, 0x645: 0x44, 0x646: 0x45, 0x647: 0x46,\n\t0x648: 0x47, 0x649: 0x48, 0x64a: 0x49, 0x64b: 0x4a, 0x64c: 0x4b, 0x64d: 0x4c, 0x64e: 0x4d, 0x64f: 0x4e,\n\t0x650: 0x4f, 0x651: 0x50, 0x652: 0x51, 0x653: 0x52, 0x654: 0x53, 0x655: 0x54, 0x656: 0x55, 0x657: 0x56,\n\t0x658: 0x57, 0x659: 0x58, 0x65a: 0x59, 0x65b: 0x5a, 0x65c: 0x5b, 0x65d: 0x5c, 0x65e: 0x5d, 0x65f: 0x5e,\n\t0x660: 0x5f, 0x661: 0x60, 0x662: 0x61, 0x663: 0x62, 0x664: 0x63, 0x665: 0x64, 0x666: 0x65, 0x667: 0x66,\n\t0x668: 0x67, 0x669: 0x68, 0x66a: 0x69, 0x66c: 0x6a, 0x66d: 0x6b, 0x66e: 0x6c, 0x66f: 0x6d,\n\t0x670: 0x6e, 0x671: 0x6f, 0x673: 0x70, 0x674: 0x71, 0x675: 0x72, 0x676: 0x73, 0x677: 0x74,\n\t0x678: 0x1ba, 0x679: 0x1bb, 0x67a: 0x1bc, 0x67b: 0x1bd, 0x67c: 0x79, 0x67d: 0x7a, 0x67e: 0x7b, 0x67f: 0x7c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x7d, 0x681: 0x7e, 0x682: 0x7f, 0x683: 0x80, 0x684: 0x1be, 0x685: 0x1bf, 0x686: 0x83, 0x687: 0x84,\n\t0x688: 0x85, 0x689: 0x86, 0x68a: 0x87, 0x68b: 0x88, 0x68c: 0x89, 0x68d: 0x8a, 0x68e: 0x8b, 0x68f: 0x8c,\n\t0x690: 0x8d, 0x691: 0x8e, 0x692: 0x1c0, 0x693: 0x90, 0x694: 0x91, 0x695: 0x92, 0x696: 0x93, 0x697: 0x94,\n\t0x698: 0x95, 0x699: 0x96, 0x69a: 0x97, 0x69b: 0x98, 0x69c: 0x99, 0x69d: 0x9a, 0x69e: 0x9b, 0x69f: 0x9c,\n\t0x6a0: 0x9d, 0x6a1: 0x9e, 0x6a2: 0x9f, 0x6a3: 0xa0, 0x6a4: 0xa1, 0x6a5: 0xa2, 0x6a6: 0xa3, 0x6a7: 0xa4,\n\t0x6a8: 0xa5, 0x6a9: 0xa6, 0x6aa: 0xa7, 0x6ab: 0xa8, 0x6ac: 0xa9, 0x6ad: 0xaa,\n\t0x6b0: 0xab, 0x6b1: 0xac, 0x6b2: 0xad, 0x6b3: 0xae, 0x6b4: 0xaf, 0x6b5: 0xb0, 0x6b6: 0xb1, 0x6b7: 0xb2,\n\t0x6b8: 0xb3, 0x6ba: 0xb4, 0x6bb: 0xb5, 0x6bc: 0xb6, 0x6bd: 0xb7, 0x6be: 0xb8, 0x6bf: 0xb9,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0xba, 0x6c1: 0xbb, 0x6c2: 0xbc, 0x6c3: 0xbd, 0x6c4: 0xbe, 0x6c5: 0xbf, 0x6c6: 0xc0, 0x6c7: 0xc1,\n\t0x6c8: 0xc2, 0x6c9: 0xc3, 0x6ca: 0xc4, 0x6cb: 0x1c1, 0x6cc: 0xc6, 0x6cd: 0x1c2, 0x6ce: 0x1c3, 0x6cf: 0x1c4,\n\t// Block 0x1c, offset 0x700\n\t0x724: 0xfb, 0x725: 0xfc, 0x726: 0xfd, 0x727: 0xfe,\n\t0x728: 0xff, 0x729: 0x100, 0x72a: 0x101, 0x72b: 0x102, 0x72c: 0x1c5, 0x72d: 0x104, 0x72e: 0x105, 0x72f: 0x106,\n\t0x730: 0x107, 0x731: 0x108, 0x732: 0x109, 0x733: 0x10a, 0x734: 0x10b, 0x735: 0x10c, 0x736: 0x10d, 0x737: 0x10e,\n\t0x738: 0x10f, 0x739: 0x110, 0x73a: 0x111, 0x73b: 0x112, 0x73c: 0x113, 0x73d: 0x114, 0x73e: 0x115, 0x73f: 0x116,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x18b, 0x741: 0x18c, 0x742: 0x18d, 0x743: 0x18e, 0x744: 0x1c6, 0x745: 0x1c7, 0x746: 0x191, 0x747: 0x192,\n\t0x748: 0x193, 0x749: 0x194, 0x74c: 0x195, 0x74d: 0x196, 0x74e: 0x197, 0x74f: 0x198,\n\t0x750: 0x199, 0x751: 0x19a, 0x752: 0x19b, 0x753: 0x19c, 0x754: 0x19d, 0x755: 0x19e, 0x757: 0x19f,\n\t0x758: 0x1a0, 0x759: 0x1a1, 0x75a: 0x1a2, 0x75b: 0x1a3, 0x75c: 0x1a4, 0x75d: 0x1a5,\n\t// Block 0x1e, offset 0x780\n\t0x790: 0x09, 0x791: 0x0a, 0x792: 0x0b, 0x793: 0x0c, 0x796: 0x0d,\n\t0x79b: 0x0e, 0x79d: 0x0f, 0x79e: 0x10, 0x79f: 0x1b,\n\t0x7af: 0x12,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c2: 0x01, 0x7c3: 0x1b4, 0x7c4: 0x1b5, 0x7c5: 0x1b6, 0x7c6: 0x1b7, 0x7c7: 0x1b8,\n\t0x7c8: 0x1b9, 0x7c9: 0x08, 0x7ca: 0x09, 0x7cb: 0x0a, 0x7cc: 0x0b, 0x7cd: 0x0c, 0x7ce: 0x0d, 0x7cf: 0x0e,\n\t0x7d0: 0x0f, 0x7d1: 0x10, 0x7d2: 0x11, 0x7d3: 0x12, 0x7d4: 0x13, 0x7d5: 0x14, 0x7d6: 0x15, 0x7d7: 0x16,\n\t0x7d8: 0x17, 0x7d9: 0x18, 0x7da: 0x19, 0x7db: 0x1a, 0x7dc: 0x1b, 0x7dd: 0x1c, 0x7de: 0x1d, 0x7df: 0x1e,\n\t0x7e0: 0x01, 0x7e1: 0x17, 0x7e2: 0x18, 0x7e3: 0x19, 0x7e4: 0x05,\n\t0x7ea: 0x06, 0x7ed: 0x07, 0x7ef: 0x1a,\n\t0x7f0: 0x1c, 0x7f3: 0x15,\n\t// Block 0x20, offset 0x800\n\t0x802: 0x01, 0x803: 0x02, 0x804: 0x03, 0x805: 0x1c8, 0x806: 0x05, 0x807: 0x06,\n\t0x808: 0x07, 0x809: 0x08, 0x80a: 0x09, 0x80b: 0x0a, 0x80c: 0x0b, 0x80d: 0x0c, 0x80e: 0x0d, 0x80f: 0x0e,\n\t0x810: 0x0f, 0x811: 0x10, 0x812: 0x11, 0x813: 0x12, 0x814: 0x13, 0x815: 0x14, 0x816: 0x15, 0x817: 0x16,\n\t0x818: 0x17, 0x819: 0x18, 0x81a: 0x19, 0x81b: 0x1a, 0x81c: 0x1b, 0x81d: 0x1c, 0x81e: 0x1d, 0x81f: 0x1e,\n\t0x820: 0x01, 0x821: 0x02, 0x822: 0x03, 0x823: 0x04, 0x824: 0x05,\n\t0x82a: 0x06, 0x82d: 0x07, 0x82f: 0x08,\n\t0x830: 0x13, 0x833: 0x15,\n\t// Block 0x21, offset 0x840\n\t0x864: 0xfb, 0x865: 0xfc, 0x866: 0xfd, 0x867: 0xfe,\n\t0x868: 0xff, 0x869: 0x100, 0x86a: 0x101, 0x86b: 0x102, 0x86c: 0x103, 0x86d: 0x104, 0x86e: 0x105, 0x86f: 0x1cb,\n\t0x870: 0x1cc, 0x871: 0x1cd, 0x872: 0x1ce, 0x873: 0x1cf, 0x874: 0x1d0, 0x875: 0x10c, 0x876: 0x10d, 0x877: 0x10e,\n\t0x878: 0x10f, 0x879: 0x110, 0x87a: 0x1d1, 0x87b: 0x1d2, 0x87c: 0x113, 0x87d: 0x114, 0x87e: 0x115, 0x87f: 0x116,\n\t// Block 0x22, offset 0x880\n\t0x882: 0x01, 0x883: 0x02, 0x884: 0x03, 0x885: 0x04, 0x886: 0x05, 0x887: 0x06,\n\t0x888: 0x07, 0x889: 0x08, 0x88a: 0x09, 0x88b: 0x0a, 0x88c: 0x0b, 0x88d: 0x0c, 0x88e: 0x0d, 0x88f: 0x0e,\n\t0x890: 0x0f, 0x891: 0x10, 0x892: 0x11, 0x893: 0x12, 0x894: 0x13, 0x895: 0x14, 0x896: 0x15, 0x897: 0x16,\n\t0x898: 0x1c9, 0x899: 0x1ca, 0x89a: 0x19, 0x89b: 0x1a, 0x89c: 0x1b, 0x89d: 0x1c, 0x89e: 0x1d, 0x89f: 0x1e,\n\t0x8a0: 0x01, 0x8a1: 0x02, 0x8a2: 0x03, 0x8a3: 0x04, 0x8a4: 0x05,\n\t0x8aa: 0x06, 0x8ad: 0x07, 0x8af: 0x1f,\n\t0x8b0: 0x13, 0x8b3: 0x15,\n\t// Block 0x23, offset 0x8c0\n\t0x8e0: 0x1f, 0x8e1: 0x20, 0x8e2: 0x21, 0x8e3: 0x22, 0x8e4: 0x23, 0x8e5: 0x24, 0x8e6: 0x1d3, 0x8e7: 0x1d4,\n\t0x8e8: 0x27, 0x8e9: 0x28, 0x8ea: 0x29, 0x8eb: 0x2a, 0x8ec: 0x2b, 0x8ed: 0x2c, 0x8ee: 0x2d, 0x8ef: 0x2e,\n\t0x8f0: 0x2f, 0x8f1: 0x30, 0x8f2: 0x31, 0x8f3: 0x32, 0x8f4: 0x33, 0x8f5: 0x34, 0x8f6: 0x35, 0x8f7: 0x36,\n\t0x8f8: 0x37, 0x8f9: 0x38, 0x8fa: 0x39, 0x8fb: 0x3a, 0x8fc: 0x3b, 0x8fd: 0x3c, 0x8fe: 0x3d, 0x8ff: 0x3e,\n\t// Block 0x24, offset 0x900\n\t0x902: 0x01, 0x903: 0x02, 0x904: 0x03, 0x905: 0x04, 0x906: 0x05, 0x907: 0x06,\n\t0x908: 0x07, 0x909: 0x08, 0x90a: 0x09, 0x90b: 0x0a, 0x90c: 0x0b, 0x90d: 0x0c, 0x90e: 0x0d, 0x90f: 0x0e,\n\t0x910: 0x0f, 0x911: 0x10, 0x912: 0x11, 0x913: 0x12, 0x914: 0x13, 0x915: 0x14, 0x916: 0x15, 0x917: 0x16,\n\t0x918: 0x17, 0x919: 0x18, 0x91a: 0x19, 0x91b: 0x1a, 0x91c: 0x1b, 0x91d: 0x1c, 0x91e: 0x1d, 0x91f: 0x1e,\n\t0x920: 0x21, 0x921: 0x02, 0x922: 0x03, 0x923: 0x04, 0x924: 0x05,\n\t0x92a: 0x06, 0x92d: 0x07, 0x92f: 0x08,\n\t0x930: 0x13, 0x933: 0x15,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x3f, 0x941: 0x40, 0x942: 0x41, 0x943: 0x42, 0x944: 0x43, 0x945: 0x44, 0x946: 0x45, 0x947: 0x46,\n\t0x948: 0x47, 0x949: 0x48, 0x94a: 0x49, 0x94b: 0x4a, 0x94c: 0x4b, 0x94d: 0x4c, 0x94e: 0x4d, 0x94f: 0x4e,\n\t0x950: 0x4f, 0x951: 0x50, 0x952: 0x51, 0x953: 0x52, 0x954: 0x53, 0x955: 0x54, 0x956: 0x55, 0x957: 0x56,\n\t0x958: 0x57, 0x959: 0x58, 0x95a: 0x59, 0x95b: 0x5a, 0x95c: 0x5b, 0x95d: 0x5c, 0x95e: 0x5d, 0x95f: 0x5e,\n\t0x960: 0x5f, 0x961: 0x60, 0x962: 0x61, 0x963: 0x62, 0x964: 0x63, 0x965: 0x64, 0x966: 0x65, 0x967: 0x66,\n\t0x968: 0x67, 0x969: 0x68, 0x96a: 0x69, 0x96c: 0x6a, 0x96d: 0x6b, 0x96e: 0x6c, 0x96f: 0x6d,\n\t0x970: 0x6e, 0x971: 0x6f, 0x973: 0x70, 0x974: 0x71, 0x975: 0x72, 0x976: 0x73, 0x977: 0x74,\n\t0x978: 0x1de, 0x979: 0x1df, 0x97a: 0x1e0, 0x97b: 0x1e1, 0x97c: 0x79, 0x97d: 0x7a, 0x97e: 0x7b, 0x97f: 0x7c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x7d, 0x981: 0x7e, 0x982: 0x7f, 0x983: 0x80, 0x984: 0x81, 0x985: 0x1e2, 0x986: 0x83, 0x987: 0x84,\n\t0x988: 0x85, 0x989: 0x86, 0x98a: 0x87, 0x98b: 0x88, 0x98c: 0x89, 0x98d: 0x8a, 0x98e: 0x8b, 0x98f: 0x8c,\n\t0x990: 0x8d, 0x991: 0x8e, 0x992: 0x1e3, 0x993: 0x90, 0x994: 0x91, 0x995: 0x92, 0x996: 0x93, 0x997: 0x94,\n\t0x998: 0x95, 0x999: 0x96, 0x99a: 0x97, 0x99b: 0x98, 0x99c: 0x99, 0x99d: 0x9a, 0x99e: 0x9b, 0x99f: 0x9c,\n\t0x9a0: 0x9d, 0x9a1: 0x9e, 0x9a2: 0x9f, 0x9a3: 0xa0, 0x9a4: 0xa1, 0x9a5: 0xa2, 0x9a6: 0xa3, 0x9a7: 0xa4,\n\t0x9a8: 0xa5, 0x9a9: 0xa6, 0x9aa: 0xa7, 0x9ab: 0xa8, 0x9ac: 0xa9, 0x9ad: 0xaa,\n\t0x9b0: 0xab, 0x9b1: 0xac, 0x9b2: 0xad, 0x9b3: 0xae, 0x9b4: 0xaf, 0x9b5: 0xb0, 0x9b6: 0xb1, 0x9b7: 0xb2,\n\t0x9b8: 0xb3, 0x9ba: 0xb4, 0x9bb: 0xb5, 0x9bc: 0xb6, 0x9bd: 0xb7, 0x9be: 0xb8, 0x9bf: 0xb9,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0xba, 0x9c1: 0xbb, 0x9c2: 0xbc, 0x9c3: 0xbd, 0x9c4: 0xbe, 0x9c5: 0xbf, 0x9c6: 0xc0, 0x9c7: 0xc1,\n\t0x9c8: 0xc2, 0x9c9: 0xc3, 0x9ca: 0xc4, 0x9cb: 0xc5, 0x9cc: 0xc6, 0x9cd: 0x1e4, 0x9ce: 0xc8, 0x9cf: 0x1e5,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x18b, 0xa01: 0x18c, 0xa02: 0x18d, 0xa03: 0x18e, 0xa04: 0x1e6, 0xa05: 0x190, 0xa06: 0x191, 0xa07: 0x192,\n\t0xa08: 0x193, 0xa09: 0x194, 0xa0c: 0x195, 0xa0d: 0x196, 0xa0e: 0x197, 0xa0f: 0x198,\n\t0xa10: 0x199, 0xa11: 0x19a, 0xa12: 0x19b, 0xa13: 0x19c, 0xa14: 0x19d, 0xa15: 0x19e, 0xa17: 0x19f,\n\t0xa18: 0x1a0, 0xa19: 0x1a1, 0xa1a: 0x1a2, 0xa1b: 0x1a3, 0xa1c: 0x1a4, 0xa1d: 0x1a5,\n\t// Block 0x29, offset 0xa40\n\t0xa50: 0x09, 0xa51: 0x0a, 0xa52: 0x0b, 0xa53: 0x0c, 0xa56: 0x0d,\n\t0xa5b: 0x0e, 0xa5d: 0x0f, 0xa5e: 0x10, 0xa5f: 0x26,\n\t0xa6f: 0x12,\n\t// Block 0x2a, offset 0xa80\n\t0xa82: 0x01, 0xa83: 0x1d7, 0xa84: 0x1d8, 0xa85: 0x1d9, 0xa86: 0x1da, 0xa87: 0x1db,\n\t0xa88: 0x1dc, 0xa89: 0x1dd, 0xa8a: 0x09, 0xa8b: 0x0a, 0xa8c: 0x0b, 0xa8d: 0x0c, 0xa8e: 0x0d, 0xa8f: 0x0e,\n\t0xa90: 0x0f, 0xa91: 0x10, 0xa92: 0x11, 0xa93: 0x12, 0xa94: 0x13, 0xa95: 0x14, 0xa96: 0x15, 0xa97: 0x16,\n\t0xa98: 0x17, 0xa99: 0x18, 0xa9a: 0x19, 0xa9b: 0x1a, 0xa9c: 0x1b, 0xa9d: 0x1c, 0xa9e: 0x1d, 0xa9f: 0x1e,\n\t0xaa0: 0x01, 0xaa1: 0x23, 0xaa2: 0x24, 0xaa3: 0x25, 0xaa4: 0x05,\n\t0xaaa: 0x06, 0xaad: 0x07, 0xaaf: 0x08,\n\t0xab0: 0x27, 0xab3: 0x15,\n\t// Block 0x2b, offset 0xac0\n\t0xac2: 0x01, 0xac3: 0x02, 0xac4: 0x03, 0xac5: 0x04, 0xac6: 0x05, 0xac7: 0x06,\n\t0xac8: 0x07, 0xac9: 0x08, 0xaca: 0x09, 0xacb: 0x0a, 0xacc: 0x0b, 0xacd: 0x0c, 0xace: 0x0d, 0xacf: 0x0e,\n\t0xad0: 0x1e7, 0xad1: 0x1e8, 0xad2: 0x11, 0xad3: 0x12, 0xad4: 0x13, 0xad5: 0x14, 0xad6: 0x15, 0xad7: 0x16,\n\t0xad8: 0x17, 0xad9: 0x18, 0xada: 0x19, 0xadb: 0x1a, 0xadc: 0x1b, 0xadd: 0x1c, 0xade: 0x1d, 0xadf: 0x1e,\n\t0xae0: 0x01, 0xae1: 0x02, 0xae2: 0x03, 0xae3: 0x04, 0xae4: 0x05,\n\t0xaea: 0x06, 0xaed: 0x07, 0xaef: 0x08,\n\t0xaf0: 0x13, 0xaf3: 0x15,\n\t// Block 0x2c, offset 0xb00\n\t0xb20: 0x1f, 0xb21: 0x20, 0xb22: 0x21, 0xb23: 0x22, 0xb24: 0x23, 0xb25: 0x24, 0xb26: 0x1e9, 0xb27: 0x26,\n\t0xb28: 0x27, 0xb29: 0x28, 0xb2a: 0x29, 0xb2b: 0x2a, 0xb2c: 0x2b, 0xb2d: 0x2c, 0xb2e: 0x2d, 0xb2f: 0x2e,\n\t0xb30: 0x2f, 0xb31: 0x30, 0xb32: 0x31, 0xb33: 0x32, 0xb34: 0x33, 0xb35: 0x34, 0xb36: 0x35, 0xb37: 0x36,\n\t0xb38: 0x37, 0xb39: 0x38, 0xb3a: 0x39, 0xb3b: 0x3a, 0xb3c: 0x3b, 0xb3d: 0x3c, 0xb3e: 0x3d, 0xb3f: 0x3e,\n\t// Block 0x2d, offset 0xb40\n\t0xb42: 0x01, 0xb43: 0x02, 0xb44: 0x03, 0xb45: 0x04, 0xb46: 0x05, 0xb47: 0x06,\n\t0xb48: 0x07, 0xb49: 0x08, 0xb4a: 0x09, 0xb4b: 0x0a, 0xb4c: 0x0b, 0xb4d: 0x0c, 0xb4e: 0x0d, 0xb4f: 0x0e,\n\t0xb50: 0x0f, 0xb51: 0x10, 0xb52: 0x11, 0xb53: 0x12, 0xb54: 0x13, 0xb55: 0x14, 0xb56: 0x15, 0xb57: 0x16,\n\t0xb58: 0x17, 0xb59: 0x18, 0xb5a: 0x19, 0xb5b: 0x1a, 0xb5c: 0x1b, 0xb5d: 0x1c, 0xb5e: 0x1d, 0xb5f: 0x1e,\n\t0xb60: 0x2a, 0xb61: 0x02, 0xb62: 0x03, 0xb63: 0x04, 0xb64: 0x05,\n\t0xb6a: 0x06, 0xb6d: 0x07, 0xb6f: 0x08,\n\t0xb70: 0x13, 0xb73: 0x15,\n\t// Block 0x2e, offset 0xb80\n\t0xb82: 0x01, 0xb83: 0x02, 0xb84: 0x1ec, 0xb85: 0x1ed, 0xb86: 0x05, 0xb87: 0x06,\n\t0xb88: 0x07, 0xb89: 0x08, 0xb8a: 0x09, 0xb8b: 0x0a, 0xb8c: 0x0b, 0xb8d: 0x0c, 0xb8e: 0x0d, 0xb8f: 0x0e,\n\t0xb90: 0x0f, 0xb91: 0x10, 0xb92: 0x11, 0xb93: 0x12, 0xb94: 0x13, 0xb95: 0x14, 0xb96: 0x15, 0xb97: 0x16,\n\t0xb98: 0x17, 0xb99: 0x18, 0xb9a: 0x19, 0xb9b: 0x1a, 0xb9c: 0x1b, 0xb9d: 0x1c, 0xb9e: 0x1d, 0xb9f: 0x1e,\n\t0xba0: 0x01, 0xba1: 0x02, 0xba2: 0x03, 0xba3: 0x04, 0xba4: 0x05,\n\t0xbaa: 0x06, 0xbad: 0x07, 0xbaf: 0x08,\n\t0xbb0: 0x13, 0xbb3: 0x15,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x3f, 0xbc1: 0x40, 0xbc2: 0x41, 0xbc3: 0x42, 0xbc4: 0x43, 0xbc5: 0x44, 0xbc6: 0x45, 0xbc7: 0x46,\n\t0xbc8: 0x47, 0xbc9: 0x48, 0xbca: 0x49, 0xbcb: 0x4a, 0xbcc: 0x4b, 0xbcd: 0x4c, 0xbce: 0x4d, 0xbcf: 0x4e,\n\t0xbd0: 0x4f, 0xbd1: 0x50, 0xbd2: 0x51, 0xbd3: 0x52, 0xbd4: 0x53, 0xbd5: 0x54, 0xbd6: 0x55, 0xbd7: 0x56,\n\t0xbd8: 0x57, 0xbd9: 0x58, 0xbda: 0x59, 0xbdb: 0x5a, 0xbdc: 0x5b, 0xbdd: 0x5c, 0xbde: 0x5d, 0xbdf: 0x5e,\n\t0xbe0: 0x5f, 0xbe1: 0x60, 0xbe2: 0x61, 0xbe3: 0x62, 0xbe4: 0x63, 0xbe5: 0x64, 0xbe6: 0x65, 0xbe7: 0x66,\n\t0xbe8: 0x67, 0xbe9: 0x68, 0xbea: 0x69, 0xbec: 0x6a, 0xbed: 0x6b, 0xbee: 0x6c, 0xbef: 0x6d,\n\t0xbf0: 0x6e, 0xbf1: 0x6f, 0xbf3: 0x70, 0xbf4: 0x71, 0xbf5: 0x72, 0xbf6: 0x73, 0xbf7: 0x74,\n\t0xbf8: 0x75, 0xbf9: 0x1f2, 0xbfa: 0x77, 0xbfb: 0x78, 0xbfc: 0x79, 0xbfd: 0x7a, 0xbfe: 0x7b, 0xbff: 0x7c,\n\t// Block 0x30, offset 0xc00\n\t0xc02: 0x01, 0xc03: 0x02, 0xc04: 0x1f0, 0xc05: 0x1f1, 0xc06: 0x05, 0xc07: 0x06,\n\t0xc08: 0x07, 0xc09: 0x08, 0xc0a: 0x09, 0xc0b: 0x0a, 0xc0c: 0x0b, 0xc0d: 0x0c, 0xc0e: 0x0d, 0xc0f: 0x0e,\n\t0xc10: 0x0f, 0xc11: 0x10, 0xc12: 0x11, 0xc13: 0x12, 0xc14: 0x13, 0xc15: 0x14, 0xc16: 0x15, 0xc17: 0x16,\n\t0xc18: 0x17, 0xc19: 0x18, 0xc1a: 0x19, 0xc1b: 0x1a, 0xc1c: 0x1b, 0xc1d: 0x1c, 0xc1e: 0x1d, 0xc1f: 0x1e,\n\t0xc20: 0x01, 0xc21: 0x2d, 0xc22: 0x03, 0xc23: 0x04, 0xc24: 0x05,\n\t0xc2a: 0x06, 0xc2d: 0x07, 0xc2f: 0x08,\n\t0xc30: 0x13, 0xc33: 0x15,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x3f, 0xc41: 0x40, 0xc42: 0x41, 0xc43: 0x42, 0xc44: 0x43, 0xc45: 0x44, 0xc46: 0x45, 0xc47: 0x46,\n\t0xc48: 0x47, 0xc49: 0x48, 0xc4a: 0x49, 0xc4b: 0x4a, 0xc4c: 0x4b, 0xc4d: 0x4c, 0xc4e: 0x4d, 0xc4f: 0x4e,\n\t0xc50: 0x4f, 0xc51: 0x50, 0xc52: 0x51, 0xc53: 0x52, 0xc54: 0x53, 0xc55: 0x54, 0xc56: 0x55, 0xc57: 0x56,\n\t0xc58: 0x57, 0xc59: 0x58, 0xc5a: 0x59, 0xc5b: 0x5a, 0xc5c: 0x5b, 0xc5d: 0x5c, 0xc5e: 0x5d, 0xc5f: 0x5e,\n\t0xc60: 0x5f, 0xc61: 0x60, 0xc62: 0x61, 0xc63: 0x62, 0xc64: 0x63, 0xc65: 0x64, 0xc66: 0x65, 0xc67: 0x66,\n\t0xc68: 0x67, 0xc69: 0x68, 0xc6a: 0x69, 0xc6c: 0x6a, 0xc6d: 0x6b, 0xc6e: 0x6c, 0xc6f: 0x6d,\n\t0xc70: 0x6e, 0xc71: 0x6f, 0xc73: 0x70, 0xc74: 0x71, 0xc75: 0x72, 0xc76: 0x1fc, 0xc77: 0x74,\n\t0xc78: 0x75, 0xc79: 0x1fd, 0xc7a: 0x77, 0xc7b: 0x78, 0xc7c: 0x79, 0xc7d: 0x7a, 0xc7e: 0x7b, 0xc7f: 0x7c,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x7d, 0xc81: 0x7e, 0xc82: 0x7f, 0xc83: 0x80, 0xc84: 0x1fe, 0xc85: 0x82, 0xc86: 0x83, 0xc87: 0x84,\n\t0xc88: 0x85, 0xc89: 0x86, 0xc8a: 0x87, 0xc8b: 0x88, 0xc8c: 0x89, 0xc8d: 0x8a, 0xc8e: 0x8b, 0xc8f: 0x8c,\n\t0xc90: 0x8d, 0xc91: 0x8e, 0xc92: 0x8f, 0xc93: 0x90, 0xc94: 0x91, 0xc95: 0x92, 0xc96: 0x93, 0xc97: 0x94,\n\t0xc98: 0x95, 0xc99: 0x96, 0xc9a: 0x97, 0xc9b: 0x98, 0xc9c: 0x99, 0xc9d: 0x9a, 0xc9e: 0x9b, 0xc9f: 0x9c,\n\t0xca0: 0x9d, 0xca1: 0x9e, 0xca2: 0x9f, 0xca3: 0xa0, 0xca4: 0xa1, 0xca5: 0xa2, 0xca6: 0xa3, 0xca7: 0xa4,\n\t0xca8: 0xa5, 0xca9: 0xa6, 0xcaa: 0xa7, 0xcab: 0xa8, 0xcac: 0xa9, 0xcad: 0xaa,\n\t0xcb0: 0xab, 0xcb1: 0xac, 0xcb2: 0xad, 0xcb3: 0xae, 0xcb4: 0xaf, 0xcb5: 0xb0, 0xcb6: 0xb1, 0xcb7: 0xb2,\n\t0xcb8: 0xb3, 0xcba: 0xb4, 0xcbb: 0xb5, 0xcbc: 0xb6, 0xcbd: 0xb7, 0xcbe: 0xb8, 0xcbf: 0xb9,\n\t// Block 0x33, offset 0xcc0\n\t0xcc2: 0x01, 0xcc3: 0x1f7, 0xcc4: 0x1f8, 0xcc5: 0x1f9, 0xcc6: 0x05, 0xcc7: 0x1fa,\n\t0xcc8: 0x1fb, 0xcc9: 0x08, 0xcca: 0x09, 0xccb: 0x0a, 0xccc: 0x0b, 0xccd: 0x0c, 0xcce: 0x0d, 0xccf: 0x0e,\n\t0xcd0: 0x0f, 0xcd1: 0x10, 0xcd2: 0x11, 0xcd3: 0x12, 0xcd4: 0x13, 0xcd5: 0x14, 0xcd6: 0x15, 0xcd7: 0x16,\n\t0xcd8: 0x17, 0xcd9: 0x18, 0xcda: 0x19, 0xcdb: 0x1a, 0xcdc: 0x1b, 0xcdd: 0x1c, 0xcde: 0x1d, 0xcdf: 0x1e,\n\t0xce0: 0x01, 0xce1: 0x2f, 0xce2: 0x30, 0xce3: 0x04, 0xce4: 0x05,\n\t0xcea: 0x06, 0xced: 0x07, 0xcef: 0x08,\n\t0xcf0: 0x13, 0xcf3: 0x15,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x3f, 0xd01: 0x40, 0xd02: 0x41, 0xd03: 0x42, 0xd04: 0x43, 0xd05: 0x44, 0xd06: 0x45, 0xd07: 0x46,\n\t0xd08: 0x47, 0xd09: 0x48, 0xd0a: 0x49, 0xd0b: 0x4a, 0xd0c: 0x4b, 0xd0d: 0x4c, 0xd0e: 0x4d, 0xd0f: 0x4e,\n\t0xd10: 0x4f, 0xd11: 0x50, 0xd12: 0x51, 0xd13: 0x52, 0xd14: 0x53, 0xd15: 0x54, 0xd16: 0x55, 0xd17: 0x56,\n\t0xd18: 0x57, 0xd19: 0x58, 0xd1a: 0x59, 0xd1b: 0x5a, 0xd1c: 0x5b, 0xd1d: 0x5c, 0xd1e: 0x5d, 0xd1f: 0x5e,\n\t0xd20: 0x5f, 0xd21: 0x60, 0xd22: 0x61, 0xd23: 0x62, 0xd24: 0x63, 0xd25: 0x64, 0xd26: 0x65, 0xd27: 0x66,\n\t0xd28: 0x67, 0xd29: 0x68, 0xd2a: 0x69, 0xd2c: 0x6a, 0xd2d: 0x6b, 0xd2e: 0x6c, 0xd2f: 0x6d,\n\t0xd30: 0x6e, 0xd31: 0x6f, 0xd33: 0x70, 0xd34: 0x71, 0xd35: 0x72, 0xd36: 0x73, 0xd37: 0x74,\n\t0xd38: 0x75, 0xd39: 0x204, 0xd3a: 0x77, 0xd3b: 0x78, 0xd3c: 0x79, 0xd3d: 0x7a, 0xd3e: 0x7b, 0xd3f: 0x7c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x01, 0xd43: 0x201, 0xd44: 0x03, 0xd45: 0x04, 0xd46: 0x05, 0xd47: 0x202,\n\t0xd48: 0x203, 0xd49: 0x08, 0xd4a: 0x09, 0xd4b: 0x0a, 0xd4c: 0x0b, 0xd4d: 0x0c, 0xd4e: 0x0d, 0xd4f: 0x0e,\n\t0xd50: 0x0f, 0xd51: 0x10, 0xd52: 0x11, 0xd53: 0x12, 0xd54: 0x13, 0xd55: 0x14, 0xd56: 0x15, 0xd57: 0x16,\n\t0xd58: 0x17, 0xd59: 0x18, 0xd5a: 0x19, 0xd5b: 0x1a, 0xd5c: 0x1b, 0xd5d: 0x1c, 0xd5e: 0x1d, 0xd5f: 0x1e,\n\t0xd60: 0x01, 0xd61: 0x32, 0xd62: 0x03, 0xd63: 0x04, 0xd64: 0x05,\n\t0xd6a: 0x06, 0xd6d: 0x07, 0xd6f: 0x08,\n\t0xd70: 0x13, 0xd73: 0x15,\n\t// Block 0x36, offset 0xd80\n\t0xda0: 0x1f, 0xda1: 0x20, 0xda2: 0x21, 0xda3: 0x22, 0xda4: 0x23, 0xda5: 0x24, 0xda6: 0x25, 0xda7: 0x26,\n\t0xda8: 0x27, 0xda9: 0x28, 0xdaa: 0x29, 0xdab: 0x2a, 0xdac: 0x2b, 0xdad: 0x2c, 0xdae: 0x2d, 0xdaf: 0x2e,\n\t0xdb0: 0x2f, 0xdb1: 0x30, 0xdb2: 0x31, 0xdb3: 0x32, 0xdb4: 0x33, 0xdb5: 0x34, 0xdb6: 0x35, 0xdb7: 0x36,\n\t0xdb8: 0x37, 0xdb9: 0x38, 0xdba: 0x39, 0xdbb: 0x3a, 0xdbc: 0x205, 0xdbd: 0x206, 0xdbe: 0x207, 0xdbf: 0x3e,\n\t// Block 0x37, offset 0xdc0\n\t0xdc2: 0x01, 0xdc3: 0x02, 0xdc4: 0x03, 0xdc5: 0x04, 0xdc6: 0x05, 0xdc7: 0x06,\n\t0xdc8: 0x07, 0xdc9: 0x08, 0xdca: 0x09, 0xdcb: 0x0a, 0xdcc: 0x0b, 0xdcd: 0x0c, 0xdce: 0x0d, 0xdcf: 0x0e,\n\t0xdd0: 0x0f, 0xdd1: 0x10, 0xdd2: 0x11, 0xdd3: 0x12, 0xdd4: 0x13, 0xdd5: 0x14, 0xdd6: 0x15, 0xdd7: 0x16,\n\t0xdd8: 0x17, 0xdd9: 0x18, 0xdda: 0x19, 0xddb: 0x1a, 0xddc: 0x1b, 0xddd: 0x1c, 0xdde: 0x1d, 0xddf: 0x1e,\n\t0xde0: 0x34, 0xde1: 0x02, 0xde2: 0x03, 0xde3: 0x04, 0xde4: 0x05,\n\t0xdea: 0x06, 0xded: 0x07, 0xdef: 0x08,\n\t0xdf0: 0x13, 0xdf3: 0x15,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x3f, 0xe01: 0x40, 0xe02: 0x41, 0xe03: 0x42, 0xe04: 0x43, 0xe05: 0x44, 0xe06: 0x45, 0xe07: 0x46,\n\t0xe08: 0x47, 0xe09: 0x48, 0xe0a: 0x49, 0xe0b: 0x4a, 0xe0c: 0x4b, 0xe0d: 0x4c, 0xe0e: 0x4d, 0xe0f: 0x4e,\n\t0xe10: 0x4f, 0xe11: 0x50, 0xe12: 0x51, 0xe13: 0x52, 0xe14: 0x53, 0xe15: 0x54, 0xe16: 0x55, 0xe17: 0x56,\n\t0xe18: 0x57, 0xe19: 0x58, 0xe1a: 0x59, 0xe1b: 0x5a, 0xe1c: 0x5b, 0xe1d: 0x5c, 0xe1e: 0x5d, 0xe1f: 0x5e,\n\t0xe20: 0x5f, 0xe21: 0x60, 0xe22: 0x61, 0xe23: 0x62, 0xe24: 0x63, 0xe25: 0x64, 0xe26: 0x65, 0xe27: 0x66,\n\t0xe28: 0x67, 0xe29: 0x68, 0xe2a: 0x69, 0xe2c: 0x6a, 0xe2d: 0x6b, 0xe2e: 0x6c, 0xe2f: 0x6d,\n\t0xe30: 0x6e, 0xe31: 0x6f, 0xe33: 0x70, 0xe34: 0x71, 0xe35: 0x72, 0xe36: 0x73, 0xe37: 0x74,\n\t0xe38: 0x75, 0xe39: 0x76, 0xe3a: 0x211, 0xe3b: 0x212, 0xe3c: 0x79, 0xe3d: 0x7a, 0xe3e: 0x7b, 0xe3f: 0x7c,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x7d, 0xe41: 0x7e, 0xe42: 0x7f, 0xe43: 0x80, 0xe44: 0x81, 0xe45: 0x213, 0xe46: 0x83, 0xe47: 0x84,\n\t0xe48: 0x85, 0xe49: 0x86, 0xe4a: 0x87, 0xe4b: 0x88, 0xe4c: 0x89, 0xe4d: 0x8a, 0xe4e: 0x8b, 0xe4f: 0x8c,\n\t0xe50: 0x8d, 0xe51: 0x8e, 0xe52: 0x214, 0xe53: 0x90, 0xe54: 0x91, 0xe55: 0x92, 0xe56: 0x93, 0xe57: 0x94,\n\t0xe58: 0x95, 0xe59: 0x96, 0xe5a: 0x97, 0xe5b: 0x98, 0xe5c: 0x99, 0xe5d: 0x9a, 0xe5e: 0x9b, 0xe5f: 0x9c,\n\t0xe60: 0x9d, 0xe61: 0x9e, 0xe62: 0x9f, 0xe63: 0xa0, 0xe64: 0xa1, 0xe65: 0xa2, 0xe66: 0xa3, 0xe67: 0xa4,\n\t0xe68: 0xa5, 0xe69: 0xa6, 0xe6a: 0xa7, 0xe6b: 0xa8, 0xe6c: 0xa9, 0xe6d: 0xaa,\n\t0xe70: 0xab, 0xe71: 0xac, 0xe72: 0xad, 0xe73: 0xae, 0xe74: 0xaf, 0xe75: 0xb0, 0xe76: 0xb1, 0xe77: 0xb2,\n\t0xe78: 0xb3, 0xe7a: 0xb4, 0xe7b: 0xb5, 0xe7c: 0xb6, 0xe7d: 0xb7, 0xe7e: 0xb8, 0xe7f: 0xb9,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0xba, 0xe81: 0xbb, 0xe82: 0xbc, 0xe83: 0xbd, 0xe84: 0xbe, 0xe85: 0xbf, 0xe86: 0xc0, 0xe87: 0xc1,\n\t0xe88: 0xc2, 0xe89: 0xc3, 0xe8a: 0xc4, 0xe8b: 0xc5, 0xe8c: 0xc6, 0xe8d: 0xc7, 0xe8e: 0xc8, 0xe8f: 0x215,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x18b, 0xec1: 0x18c, 0xec2: 0x18d, 0xec3: 0x18e, 0xec4: 0x216, 0xec5: 0x190, 0xec6: 0x191, 0xec7: 0x192,\n\t0xec8: 0x193, 0xec9: 0x194, 0xecc: 0x195, 0xecd: 0x196, 0xece: 0x197, 0xecf: 0x198,\n\t0xed0: 0x199, 0xed1: 0x19a, 0xed2: 0x19b, 0xed3: 0x19c, 0xed4: 0x19d, 0xed5: 0x19e, 0xed7: 0x19f,\n\t0xed8: 0x1a0, 0xed9: 0x1a1, 0xeda: 0x1a2, 0xedb: 0x1a3, 0xedc: 0x1a4, 0xedd: 0x1a5,\n\t// Block 0x3c, offset 0xf00\n\t0xf10: 0x09, 0xf11: 0x0a, 0xf12: 0x0b, 0xf13: 0x0c, 0xf16: 0x0d,\n\t0xf1b: 0x0e, 0xf1d: 0x0f, 0xf1e: 0x10, 0xf1f: 0x39,\n\t0xf2f: 0x12,\n\t// Block 0x3d, offset 0xf40\n\t0xf42: 0x01, 0xf43: 0x20a, 0xf44: 0x20b, 0xf45: 0x20c, 0xf46: 0x20d, 0xf47: 0x06,\n\t0xf48: 0x07, 0xf49: 0x20e, 0xf4a: 0x20f, 0xf4b: 0x0a, 0xf4c: 0x210, 0xf4d: 0x0c, 0xf4e: 0x0d, 0xf4f: 0x0e,\n\t0xf50: 0x0f, 0xf51: 0x10, 0xf52: 0x11, 0xf53: 0x12, 0xf54: 0x13, 0xf55: 0x14, 0xf56: 0x15, 0xf57: 0x16,\n\t0xf58: 0x17, 0xf59: 0x18, 0xf5a: 0x19, 0xf5b: 0x1a, 0xf5c: 0x1b, 0xf5d: 0x1c, 0xf5e: 0x1d, 0xf5f: 0x1e,\n\t0xf60: 0x01, 0xf61: 0x36, 0xf62: 0x37, 0xf63: 0x38, 0xf64: 0x05,\n\t0xf6a: 0x06, 0xf6d: 0x07, 0xf6f: 0x08,\n\t0xf70: 0x3a, 0xf73: 0x15,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x3f, 0xf81: 0x40, 0xf82: 0x41, 0xf83: 0x42, 0xf84: 0x43, 0xf85: 0x44, 0xf86: 0x45, 0xf87: 0x46,\n\t0xf88: 0x47, 0xf89: 0x48, 0xf8a: 0x49, 0xf8b: 0x4a, 0xf8c: 0x4b, 0xf8d: 0x4c, 0xf8e: 0x4d, 0xf8f: 0x4e,\n\t0xf90: 0x4f, 0xf91: 0x50, 0xf92: 0x51, 0xf93: 0x52, 0xf94: 0x53, 0xf95: 0x54, 0xf96: 0x55, 0xf97: 0x56,\n\t0xf98: 0x57, 0xf99: 0x58, 0xf9a: 0x59, 0xf9b: 0x5a, 0xf9c: 0x5b, 0xf9d: 0x5c, 0xf9e: 0x5d, 0xf9f: 0x5e,\n\t0xfa0: 0x5f, 0xfa1: 0x60, 0xfa2: 0x61, 0xfa3: 0x62, 0xfa4: 0x63, 0xfa5: 0x64, 0xfa6: 0x65, 0xfa7: 0x66,\n\t0xfa8: 0x67, 0xfa9: 0x68, 0xfaa: 0x69, 0xfac: 0x6a, 0xfad: 0x6b, 0xfae: 0x6c, 0xfaf: 0x6d,\n\t0xfb0: 0x6e, 0xfb1: 0x6f, 0xfb3: 0x70, 0xfb4: 0x71, 0xfb5: 0x72, 0xfb6: 0x73, 0xfb7: 0x74,\n\t0xfb8: 0x220, 0xfb9: 0x221, 0xfba: 0x222, 0xfbb: 0x223, 0xfbc: 0x79, 0xfbd: 0x7a, 0xfbe: 0x7b, 0xfbf: 0x224,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x225, 0xfc1: 0x226, 0xfc2: 0x7f, 0xfc3: 0x80, 0xfc4: 0x227, 0xfc5: 0x228, 0xfc6: 0x83, 0xfc7: 0x84,\n\t0xfc8: 0x85, 0xfc9: 0x229, 0xfca: 0x87, 0xfcb: 0x88, 0xfcc: 0x89, 0xfcd: 0x8a, 0xfce: 0x8b, 0xfcf: 0x8c,\n\t0xfd0: 0x8d, 0xfd1: 0x22a, 0xfd2: 0x22b, 0xfd3: 0x90, 0xfd4: 0x91, 0xfd5: 0x92, 0xfd6: 0x93, 0xfd7: 0x94,\n\t0xfd8: 0x95, 0xfd9: 0x96, 0xfda: 0x97, 0xfdb: 0x98, 0xfdc: 0x99, 0xfdd: 0x9a, 0xfde: 0x9b, 0xfdf: 0x9c,\n\t0xfe0: 0x9d, 0xfe1: 0x9e, 0xfe2: 0x9f, 0xfe3: 0xa0, 0xfe4: 0xa1, 0xfe5: 0xa2, 0xfe6: 0xa3, 0xfe7: 0xa4,\n\t0xfe8: 0xa5, 0xfe9: 0x22c, 0xfea: 0xa7, 0xfeb: 0xa8, 0xfec: 0xa9, 0xfed: 0xaa,\n\t0xff0: 0xab, 0xff1: 0xac, 0xff2: 0xad, 0xff3: 0xae, 0xff4: 0xaf, 0xff5: 0xb0, 0xff6: 0xb1, 0xff7: 0xb2,\n\t0xff8: 0xb3, 0xffa: 0xb4, 0xffb: 0xb5, 0xffc: 0xb6, 0xffd: 0xb7, 0xffe: 0xb8, 0xfff: 0xb9,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0xba, 0x1001: 0xbb, 0x1002: 0xbc, 0x1003: 0xbd, 0x1004: 0xbe, 0x1005: 0xbf, 0x1006: 0xc0, 0x1007: 0xc1,\n\t0x1008: 0x22d, 0x1009: 0x22e, 0x100a: 0x22f, 0x100b: 0x230, 0x100c: 0xc6, 0x100d: 0x231, 0x100e: 0x232, 0x100f: 0x233,\n\t// Block 0x41, offset 0x1040\n\t0x1064: 0xfb, 0x1065: 0xfc, 0x1066: 0xfd, 0x1067: 0xfe,\n\t0x1068: 0xff, 0x1069: 0x100, 0x106a: 0x101, 0x106b: 0x102, 0x106c: 0x234, 0x106d: 0x104, 0x106e: 0x105, 0x106f: 0x106,\n\t0x1070: 0x107, 0x1071: 0x108, 0x1072: 0x109, 0x1073: 0x10a, 0x1074: 0x10b, 0x1075: 0x10c, 0x1076: 0x10d, 0x1077: 0x10e,\n\t0x1078: 0x235, 0x1079: 0x110, 0x107a: 0x111, 0x107b: 0x112, 0x107c: 0x113, 0x107d: 0x114, 0x107e: 0x115, 0x107f: 0x116,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x18b, 0x1081: 0x18c, 0x1082: 0x18d, 0x1083: 0x18e, 0x1084: 0x236, 0x1085: 0x237, 0x1086: 0x238, 0x1087: 0x192,\n\t0x1088: 0x193, 0x1089: 0x194, 0x108c: 0x195, 0x108d: 0x196, 0x108e: 0x197, 0x108f: 0x198,\n\t0x1090: 0x199, 0x1091: 0x19a, 0x1092: 0x19b, 0x1093: 0x19c, 0x1094: 0x19d, 0x1095: 0x19e, 0x1097: 0x19f,\n\t0x1098: 0x1a0, 0x1099: 0x1a1, 0x109a: 0x1a2, 0x109b: 0x1a3, 0x109c: 0x1a4, 0x109d: 0x1a5,\n\t// Block 0x43, offset 0x10c0\n\t0x10d0: 0x09, 0x10d1: 0x0a, 0x10d2: 0x0b, 0x10d3: 0x0c, 0x10d6: 0x0d,\n\t0x10db: 0x0e, 0x10dd: 0x0f, 0x10de: 0x10, 0x10df: 0x40,\n\t0x10ef: 0x12,\n\t// Block 0x44, offset 0x1100\n\t0x1102: 0x01, 0x1103: 0x219, 0x1104: 0x21a, 0x1105: 0x21b, 0x1106: 0x21c, 0x1107: 0x21d,\n\t0x1108: 0x21e, 0x1109: 0x08, 0x110a: 0x09, 0x110b: 0x0a, 0x110c: 0x0b, 0x110d: 0x21f, 0x110e: 0x0d, 0x110f: 0x0e,\n\t0x1110: 0x0f, 0x1111: 0x10, 0x1112: 0x11, 0x1113: 0x12, 0x1114: 0x13, 0x1115: 0x14, 0x1116: 0x15, 0x1117: 0x16,\n\t0x1118: 0x17, 0x1119: 0x18, 0x111a: 0x19, 0x111b: 0x1a, 0x111c: 0x1b, 0x111d: 0x1c, 0x111e: 0x1d, 0x111f: 0x1e,\n\t0x1120: 0x01, 0x1121: 0x3c, 0x1122: 0x3d, 0x1123: 0x3e, 0x1124: 0x05,\n\t0x112a: 0x06, 0x112d: 0x07, 0x112f: 0x3f,\n\t0x1130: 0x41, 0x1133: 0x15,\n\t// Block 0x45, offset 0x1140\n\t0x1142: 0x01, 0x1143: 0x02, 0x1144: 0x23b, 0x1145: 0x23c, 0x1146: 0x05, 0x1147: 0x06,\n\t0x1148: 0x07, 0x1149: 0x08, 0x114a: 0x09, 0x114b: 0x0a, 0x114c: 0x0b, 0x114d: 0x0c, 0x114e: 0x0d, 0x114f: 0x0e,\n\t0x1150: 0x0f, 0x1151: 0x10, 0x1152: 0x11, 0x1153: 0x12, 0x1154: 0x13, 0x1155: 0x14, 0x1156: 0x15, 0x1157: 0x16,\n\t0x1158: 0x17, 0x1159: 0x18, 0x115a: 0x19, 0x115b: 0x1a, 0x115c: 0x1b, 0x115d: 0x1c, 0x115e: 0x1d, 0x115f: 0x1e,\n\t0x1160: 0x01, 0x1161: 0x02, 0x1162: 0x03, 0x1163: 0x04, 0x1164: 0x05,\n\t0x116a: 0x06, 0x116d: 0x07, 0x116f: 0x08,\n\t0x1170: 0x13, 0x1173: 0x15,\n\t// Block 0x46, offset 0x1180\n\t0x1182: 0x01, 0x1183: 0x23f, 0x1184: 0x03, 0x1185: 0x04, 0x1186: 0x05, 0x1187: 0x06,\n\t0x1188: 0x07, 0x1189: 0x08, 0x118a: 0x09, 0x118b: 0x0a, 0x118c: 0x0b, 0x118d: 0x0c, 0x118e: 0x0d, 0x118f: 0x0e,\n\t0x1190: 0x0f, 0x1191: 0x10, 0x1192: 0x11, 0x1193: 0x12, 0x1194: 0x13, 0x1195: 0x14, 0x1196: 0x15, 0x1197: 0x16,\n\t0x1198: 0x17, 0x1199: 0x18, 0x119a: 0x19, 0x119b: 0x1a, 0x119c: 0x1b, 0x119d: 0x1c, 0x119e: 0x1d, 0x119f: 0x1e,\n\t0x11a0: 0x01, 0x11a1: 0x02, 0x11a2: 0x03, 0x11a3: 0x04, 0x11a4: 0x05,\n\t0x11aa: 0x06, 0x11ad: 0x07, 0x11af: 0x08,\n\t0x11b0: 0x13, 0x11b3: 0x15,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x3f, 0x11c1: 0x40, 0x11c2: 0x41, 0x11c3: 0x42, 0x11c4: 0x43, 0x11c5: 0x44, 0x11c6: 0x45, 0x11c7: 0x46,\n\t0x11c8: 0x47, 0x11c9: 0x48, 0x11ca: 0x49, 0x11cb: 0x4a, 0x11cc: 0x4b, 0x11cd: 0x4c, 0x11ce: 0x4d, 0x11cf: 0x4e,\n\t0x11d0: 0x4f, 0x11d1: 0x50, 0x11d2: 0x51, 0x11d3: 0x52, 0x11d4: 0x53, 0x11d5: 0x54, 0x11d6: 0x55, 0x11d7: 0x56,\n\t0x11d8: 0x57, 0x11d9: 0x58, 0x11da: 0x59, 0x11db: 0x5a, 0x11dc: 0x5b, 0x11dd: 0x5c, 0x11de: 0x5d, 0x11df: 0x5e,\n\t0x11e0: 0x5f, 0x11e1: 0x60, 0x11e2: 0x61, 0x11e3: 0x62, 0x11e4: 0x63, 0x11e5: 0x64, 0x11e6: 0x65, 0x11e7: 0x66,\n\t0x11e8: 0x67, 0x11e9: 0x68, 0x11ea: 0x69, 0x11ec: 0x6a, 0x11ed: 0x6b, 0x11ee: 0x6c, 0x11ef: 0x6d,\n\t0x11f0: 0x6e, 0x11f1: 0x6f, 0x11f3: 0x70, 0x11f4: 0x71, 0x11f5: 0x72, 0x11f6: 0x73, 0x11f7: 0x74,\n\t0x11f8: 0x75, 0x11f9: 0x246, 0x11fa: 0x247, 0x11fb: 0x248, 0x11fc: 0x79, 0x11fd: 0x7a, 0x11fe: 0x7b, 0x11ff: 0x7c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x7d, 0x1201: 0x7e, 0x1202: 0x7f, 0x1203: 0x80, 0x1204: 0x81, 0x1205: 0x82, 0x1206: 0x83, 0x1207: 0x84,\n\t0x1208: 0x85, 0x1209: 0x86, 0x120a: 0x87, 0x120b: 0x88, 0x120c: 0x89, 0x120d: 0x8a, 0x120e: 0x8b, 0x120f: 0x8c,\n\t0x1210: 0x8d, 0x1211: 0x8e, 0x1212: 0x249, 0x1213: 0x90, 0x1214: 0x91, 0x1215: 0x92, 0x1216: 0x93, 0x1217: 0x94,\n\t0x1218: 0x95, 0x1219: 0x96, 0x121a: 0x97, 0x121b: 0x98, 0x121c: 0x99, 0x121d: 0x9a, 0x121e: 0x9b, 0x121f: 0x9c,\n\t0x1220: 0x9d, 0x1221: 0x9e, 0x1222: 0x9f, 0x1223: 0xa0, 0x1224: 0xa1, 0x1225: 0xa2, 0x1226: 0xa3, 0x1227: 0xa4,\n\t0x1228: 0xa5, 0x1229: 0xa6, 0x122a: 0xa7, 0x122b: 0xa8, 0x122c: 0xa9, 0x122d: 0xaa,\n\t0x1230: 0xab, 0x1231: 0xac, 0x1232: 0xad, 0x1233: 0xae, 0x1234: 0xaf, 0x1235: 0xb0, 0x1236: 0xb1, 0x1237: 0xb2,\n\t0x1238: 0xb3, 0x123a: 0xb4, 0x123b: 0xb5, 0x123c: 0xb6, 0x123d: 0xb7, 0x123e: 0xb8, 0x123f: 0xb9,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0xba, 0x1241: 0xbb, 0x1242: 0xbc, 0x1243: 0xbd, 0x1244: 0xbe, 0x1245: 0xbf, 0x1246: 0xc0, 0x1247: 0xc1,\n\t0x1248: 0xc2, 0x1249: 0xc3, 0x124a: 0xc4, 0x124b: 0xc5, 0x124c: 0xc6, 0x124d: 0xc7, 0x124e: 0x24a, 0x124f: 0x24b,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x18b, 0x1281: 0x18c, 0x1282: 0x18d, 0x1283: 0x18e, 0x1284: 0x24c, 0x1285: 0x24d, 0x1286: 0x191, 0x1287: 0x192,\n\t0x1288: 0x193, 0x1289: 0x194, 0x128c: 0x195, 0x128d: 0x196, 0x128e: 0x197, 0x128f: 0x198,\n\t0x1290: 0x199, 0x1291: 0x19a, 0x1292: 0x19b, 0x1293: 0x19c, 0x1294: 0x19d, 0x1295: 0x19e, 0x1297: 0x19f,\n\t0x1298: 0x1a0, 0x1299: 0x1a1, 0x129a: 0x1a2, 0x129b: 0x1a3, 0x129c: 0x1a4, 0x129d: 0x1a5,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x09, 0x12d1: 0x0a, 0x12d2: 0x0b, 0x12d3: 0x0c, 0x12d6: 0x0d,\n\t0x12db: 0x0e, 0x12dd: 0x0f, 0x12de: 0x10, 0x12df: 0x48,\n\t0x12ef: 0x12,\n\t// Block 0x4c, offset 0x1300\n\t0x1302: 0x01, 0x1303: 0x242, 0x1304: 0x03, 0x1305: 0x243, 0x1306: 0x05, 0x1307: 0x244,\n\t0x1308: 0x245, 0x1309: 0x08, 0x130a: 0x09, 0x130b: 0x0a, 0x130c: 0x0b, 0x130d: 0x0c, 0x130e: 0x0d, 0x130f: 0x0e,\n\t0x1310: 0x0f, 0x1311: 0x10, 0x1312: 0x11, 0x1313: 0x12, 0x1314: 0x13, 0x1315: 0x14, 0x1316: 0x15, 0x1317: 0x16,\n\t0x1318: 0x17, 0x1319: 0x18, 0x131a: 0x19, 0x131b: 0x1a, 0x131c: 0x1b, 0x131d: 0x1c, 0x131e: 0x1d, 0x131f: 0x1e,\n\t0x1320: 0x01, 0x1321: 0x45, 0x1322: 0x46, 0x1323: 0x47, 0x1324: 0x05,\n\t0x132a: 0x06, 0x132d: 0x07, 0x132f: 0x08,\n\t0x1330: 0x49, 0x1333: 0x15,\n\t// Block 0x4d, offset 0x1340\n\t0x1364: 0xfb, 0x1365: 0xfc, 0x1366: 0xfd, 0x1367: 0xfe,\n\t0x1368: 0xff, 0x1369: 0x100, 0x136a: 0x101, 0x136b: 0x102, 0x136c: 0x103, 0x136d: 0x104, 0x136e: 0x252, 0x136f: 0x106,\n\t0x1370: 0x253, 0x1371: 0x254, 0x1372: 0x255, 0x1373: 0x256, 0x1374: 0x257, 0x1375: 0x10c, 0x1376: 0x10d, 0x1377: 0x10e,\n\t0x1378: 0x10f, 0x1379: 0x110, 0x137a: 0x111, 0x137b: 0x112, 0x137c: 0x113, 0x137d: 0x114, 0x137e: 0x115, 0x137f: 0x116,\n\t// Block 0x4e, offset 0x1380\n\t0x1382: 0x01, 0x1383: 0x02, 0x1384: 0x03, 0x1385: 0x04, 0x1386: 0x05, 0x1387: 0x06,\n\t0x1388: 0x07, 0x1389: 0x08, 0x138a: 0x09, 0x138b: 0x0a, 0x138c: 0x0b, 0x138d: 0x0c, 0x138e: 0x0d, 0x138f: 0x0e,\n\t0x1390: 0x0f, 0x1391: 0x10, 0x1392: 0x11, 0x1393: 0x12, 0x1394: 0x13, 0x1395: 0x14, 0x1396: 0x15, 0x1397: 0x16,\n\t0x1398: 0x24e, 0x1399: 0x24f, 0x139a: 0x250, 0x139b: 0x251, 0x139c: 0x1b, 0x139d: 0x1c, 0x139e: 0x1d, 0x139f: 0x1e,\n\t0x13a0: 0x01, 0x13a1: 0x02, 0x13a2: 0x03, 0x13a3: 0x04, 0x13a4: 0x05,\n\t0x13aa: 0x06, 0x13ad: 0x07, 0x13af: 0x4b,\n\t0x13b0: 0x13, 0x13b3: 0x15,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x3f, 0x13c1: 0x40, 0x13c2: 0x41, 0x13c3: 0x42, 0x13c4: 0x43, 0x13c5: 0x44, 0x13c6: 0x45, 0x13c7: 0x46,\n\t0x13c8: 0x47, 0x13c9: 0x48, 0x13ca: 0x49, 0x13cb: 0x4a, 0x13cc: 0x4b, 0x13cd: 0x4c, 0x13ce: 0x4d, 0x13cf: 0x4e,\n\t0x13d0: 0x4f, 0x13d1: 0x50, 0x13d2: 0x51, 0x13d3: 0x52, 0x13d4: 0x53, 0x13d5: 0x54, 0x13d6: 0x55, 0x13d7: 0x56,\n\t0x13d8: 0x57, 0x13d9: 0x58, 0x13da: 0x59, 0x13db: 0x5a, 0x13dc: 0x5b, 0x13dd: 0x5c, 0x13de: 0x5d, 0x13df: 0x5e,\n\t0x13e0: 0x5f, 0x13e1: 0x60, 0x13e2: 0x61, 0x13e3: 0x62, 0x13e4: 0x63, 0x13e5: 0x64, 0x13e6: 0x65, 0x13e7: 0x66,\n\t0x13e8: 0x67, 0x13e9: 0x68, 0x13ea: 0x69, 0x13ec: 0x6a, 0x13ed: 0x6b, 0x13ee: 0x6c, 0x13ef: 0x6d,\n\t0x13f0: 0x6e, 0x13f1: 0x6f, 0x13f3: 0x70, 0x13f4: 0x71, 0x13f5: 0x72, 0x13f6: 0x73, 0x13f7: 0x74,\n\t0x13f8: 0x75, 0x13f9: 0x261, 0x13fa: 0x77, 0x13fb: 0x78, 0x13fc: 0x79, 0x13fd: 0x7a, 0x13fe: 0x7b, 0x13ff: 0x7c,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x7d, 0x1401: 0x7e, 0x1402: 0x7f, 0x1403: 0x80, 0x1404: 0x262, 0x1405: 0x82, 0x1406: 0x83, 0x1407: 0x84,\n\t0x1408: 0x85, 0x1409: 0x86, 0x140a: 0x87, 0x140b: 0x88, 0x140c: 0x89, 0x140d: 0x8a, 0x140e: 0x8b, 0x140f: 0x8c,\n\t0x1410: 0x8d, 0x1411: 0x8e, 0x1412: 0x8f, 0x1413: 0x90, 0x1414: 0x91, 0x1415: 0x92, 0x1416: 0x93, 0x1417: 0x94,\n\t0x1418: 0x95, 0x1419: 0x96, 0x141a: 0x97, 0x141b: 0x98, 0x141c: 0x99, 0x141d: 0x9a, 0x141e: 0x9b, 0x141f: 0x9c,\n\t0x1420: 0x9d, 0x1421: 0x9e, 0x1422: 0x9f, 0x1423: 0xa0, 0x1424: 0xa1, 0x1425: 0xa2, 0x1426: 0xa3, 0x1427: 0xa4,\n\t0x1428: 0xa5, 0x1429: 0xa6, 0x142a: 0xa7, 0x142b: 0xa8, 0x142c: 0xa9, 0x142d: 0xaa,\n\t0x1430: 0xab, 0x1431: 0xac, 0x1432: 0xad, 0x1433: 0xae, 0x1434: 0xaf, 0x1435: 0xb0, 0x1436: 0xb1, 0x1437: 0xb2,\n\t0x1438: 0xb3, 0x143a: 0xb4, 0x143b: 0xb5, 0x143c: 0xb6, 0x143d: 0xb7, 0x143e: 0xb8, 0x143f: 0xb9,\n\t// Block 0x51, offset 0x1440\n\t0x1442: 0x01, 0x1443: 0x25a, 0x1444: 0x25b, 0x1445: 0x25c, 0x1446: 0x25d, 0x1447: 0x25e,\n\t0x1448: 0x25f, 0x1449: 0x08, 0x144a: 0x260, 0x144b: 0x0a, 0x144c: 0x0b, 0x144d: 0x0c, 0x144e: 0x0d, 0x144f: 0x0e,\n\t0x1450: 0x0f, 0x1451: 0x10, 0x1452: 0x11, 0x1453: 0x12, 0x1454: 0x13, 0x1455: 0x14, 0x1456: 0x15, 0x1457: 0x16,\n\t0x1458: 0x17, 0x1459: 0x18, 0x145a: 0x19, 0x145b: 0x1a, 0x145c: 0x1b, 0x145d: 0x1c, 0x145e: 0x1d, 0x145f: 0x1e,\n\t0x1460: 0x01, 0x1461: 0x4d, 0x1462: 0x4e, 0x1463: 0x04, 0x1464: 0x05,\n\t0x146a: 0x06, 0x146d: 0x07, 0x146f: 0x08,\n\t0x1470: 0x13, 0x1473: 0x15,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x3f, 0x1481: 0x40, 0x1482: 0x41, 0x1483: 0x42, 0x1484: 0x43, 0x1485: 0x44, 0x1486: 0x45, 0x1487: 0x46,\n\t0x1488: 0x47, 0x1489: 0x48, 0x148a: 0x49, 0x148b: 0x4a, 0x148c: 0x4b, 0x148d: 0x4c, 0x148e: 0x4d, 0x148f: 0x4e,\n\t0x1490: 0x4f, 0x1491: 0x50, 0x1492: 0x51, 0x1493: 0x52, 0x1494: 0x53, 0x1495: 0x54, 0x1496: 0x55, 0x1497: 0x56,\n\t0x1498: 0x57, 0x1499: 0x58, 0x149a: 0x59, 0x149b: 0x5a, 0x149c: 0x5b, 0x149d: 0x5c, 0x149e: 0x5d, 0x149f: 0x5e,\n\t0x14a0: 0x5f, 0x14a1: 0x60, 0x14a2: 0x61, 0x14a3: 0x62, 0x14a4: 0x63, 0x14a5: 0x64, 0x14a6: 0x65, 0x14a7: 0x66,\n\t0x14a8: 0x67, 0x14a9: 0x68, 0x14aa: 0x69, 0x14ac: 0x6a, 0x14ad: 0x6b, 0x14ae: 0x6c, 0x14af: 0x6d,\n\t0x14b0: 0x6e, 0x14b1: 0x6f, 0x14b3: 0x70, 0x14b4: 0x71, 0x14b5: 0x72, 0x14b6: 0x1fc, 0x14b7: 0x74,\n\t0x14b8: 0x75, 0x14b9: 0x26a, 0x14ba: 0x26b, 0x14bb: 0x26c, 0x14bc: 0x79, 0x14bd: 0x7a, 0x14be: 0x7b, 0x14bf: 0x7c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x7d, 0x14c1: 0x7e, 0x14c2: 0x7f, 0x14c3: 0x80, 0x14c4: 0x262, 0x14c5: 0x82, 0x14c6: 0x83, 0x14c7: 0x84,\n\t0x14c8: 0x85, 0x14c9: 0x86, 0x14ca: 0x87, 0x14cb: 0x88, 0x14cc: 0x89, 0x14cd: 0x8a, 0x14ce: 0x8b, 0x14cf: 0x8c,\n\t0x14d0: 0x8d, 0x14d1: 0x8e, 0x14d2: 0x26d, 0x14d3: 0x90, 0x14d4: 0x91, 0x14d5: 0x92, 0x14d6: 0x93, 0x14d7: 0x94,\n\t0x14d8: 0x95, 0x14d9: 0x96, 0x14da: 0x97, 0x14db: 0x98, 0x14dc: 0x99, 0x14dd: 0x9a, 0x14de: 0x9b, 0x14df: 0x9c,\n\t0x14e0: 0x9d, 0x14e1: 0x9e, 0x14e2: 0x9f, 0x14e3: 0xa0, 0x14e4: 0xa1, 0x14e5: 0xa2, 0x14e6: 0xa3, 0x14e7: 0xa4,\n\t0x14e8: 0xa5, 0x14e9: 0xa6, 0x14ea: 0xa7, 0x14eb: 0xa8, 0x14ec: 0xa9, 0x14ed: 0xaa,\n\t0x14f0: 0xab, 0x14f1: 0xac, 0x14f2: 0xad, 0x14f3: 0xae, 0x14f4: 0xaf, 0x14f5: 0xb0, 0x14f6: 0xb1, 0x14f7: 0xb2,\n\t0x14f8: 0xb3, 0x14fa: 0xb4, 0x14fb: 0xb5, 0x14fc: 0xb6, 0x14fd: 0xb7, 0x14fe: 0xb8, 0x14ff: 0xb9,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xba, 0x1501: 0xbb, 0x1502: 0xbc, 0x1503: 0xbd, 0x1504: 0xbe, 0x1505: 0xbf, 0x1506: 0xc0, 0x1507: 0xc1,\n\t0x1508: 0xc2, 0x1509: 0xc3, 0x150a: 0xc4, 0x150b: 0xc5, 0x150c: 0xc6, 0x150d: 0xc7, 0x150e: 0x26e, 0x150f: 0x24b,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x18b, 0x1541: 0x18c, 0x1542: 0x18d, 0x1543: 0x18e, 0x1544: 0x26f, 0x1545: 0x24d, 0x1546: 0x191, 0x1547: 0x192,\n\t0x1548: 0x193, 0x1549: 0x194, 0x154c: 0x195, 0x154d: 0x196, 0x154e: 0x197, 0x154f: 0x198,\n\t0x1550: 0x199, 0x1551: 0x19a, 0x1552: 0x19b, 0x1553: 0x19c, 0x1554: 0x19d, 0x1555: 0x19e, 0x1557: 0x19f,\n\t0x1558: 0x1a0, 0x1559: 0x1a1, 0x155a: 0x1a2, 0x155b: 0x1a3, 0x155c: 0x1a4, 0x155d: 0x1a5,\n\t// Block 0x56, offset 0x1580\n\t0x1590: 0x09, 0x1591: 0x0a, 0x1592: 0x0b, 0x1593: 0x0c, 0x1596: 0x0d,\n\t0x159b: 0x0e, 0x159d: 0x0f, 0x159e: 0x10, 0x159f: 0x53,\n\t0x15af: 0x12,\n\t// Block 0x57, offset 0x15c0\n\t0x15c2: 0x01, 0x15c3: 0x265, 0x15c4: 0x266, 0x15c5: 0x267, 0x15c6: 0x05, 0x15c7: 0x268,\n\t0x15c8: 0x269, 0x15c9: 0x08, 0x15ca: 0x09, 0x15cb: 0x0a, 0x15cc: 0x0b, 0x15cd: 0x0c, 0x15ce: 0x0d, 0x15cf: 0x0e,\n\t0x15d0: 0x0f, 0x15d1: 0x10, 0x15d2: 0x11, 0x15d3: 0x12, 0x15d4: 0x13, 0x15d5: 0x14, 0x15d6: 0x15, 0x15d7: 0x16,\n\t0x15d8: 0x17, 0x15d9: 0x18, 0x15da: 0x19, 0x15db: 0x1a, 0x15dc: 0x1b, 0x15dd: 0x1c, 0x15de: 0x1d, 0x15df: 0x1e,\n\t0x15e0: 0x01, 0x15e1: 0x50, 0x15e2: 0x51, 0x15e3: 0x52, 0x15e4: 0x05,\n\t0x15ea: 0x06, 0x15ed: 0x07, 0x15ef: 0x08,\n\t0x15f0: 0x54, 0x15f3: 0x15,\n\t// Block 0x58, offset 0x1600\n\t0x1620: 0x1f, 0x1621: 0x20, 0x1622: 0x21, 0x1623: 0x22, 0x1624: 0x23, 0x1625: 0x24, 0x1626: 0x25, 0x1627: 0x26,\n\t0x1628: 0x27, 0x1629: 0x28, 0x162a: 0x272, 0x162b: 0x2a, 0x162c: 0x2b, 0x162d: 0x2c, 0x162e: 0x2d, 0x162f: 0x2e,\n\t0x1630: 0x2f, 0x1631: 0x30, 0x1632: 0x31, 0x1633: 0x32, 0x1634: 0x33, 0x1635: 0x34, 0x1636: 0x35, 0x1637: 0x36,\n\t0x1638: 0x37, 0x1639: 0x38, 0x163a: 0x39, 0x163b: 0x3a, 0x163c: 0x3b, 0x163d: 0x3c, 0x163e: 0x3d, 0x163f: 0x3e,\n\t// Block 0x59, offset 0x1640\n\t0x1642: 0x01, 0x1643: 0x02, 0x1644: 0x03, 0x1645: 0x04, 0x1646: 0x05, 0x1647: 0x06,\n\t0x1648: 0x07, 0x1649: 0x08, 0x164a: 0x09, 0x164b: 0x0a, 0x164c: 0x0b, 0x164d: 0x0c, 0x164e: 0x0d, 0x164f: 0x0e,\n\t0x1650: 0x0f, 0x1651: 0x10, 0x1652: 0x11, 0x1653: 0x12, 0x1654: 0x13, 0x1655: 0x14, 0x1656: 0x15, 0x1657: 0x16,\n\t0x1658: 0x17, 0x1659: 0x18, 0x165a: 0x19, 0x165b: 0x1a, 0x165c: 0x1b, 0x165d: 0x1c, 0x165e: 0x1d, 0x165f: 0x1e,\n\t0x1660: 0x56, 0x1661: 0x02, 0x1662: 0x03, 0x1663: 0x04, 0x1664: 0x05,\n\t0x166a: 0x06, 0x166d: 0x07, 0x166f: 0x08,\n\t0x1670: 0x13, 0x1673: 0x15,\n\t// Block 0x5a, offset 0x1680\n\t0x1682: 0x01, 0x1683: 0x02, 0x1684: 0x03, 0x1685: 0x04, 0x1686: 0x275, 0x1687: 0x06,\n\t0x1688: 0x07, 0x1689: 0x276, 0x168a: 0x277, 0x168b: 0x0a, 0x168c: 0x0b, 0x168d: 0x0c, 0x168e: 0x0d, 0x168f: 0x0e,\n\t0x1690: 0x0f, 0x1691: 0x10, 0x1692: 0x11, 0x1693: 0x12, 0x1694: 0x13, 0x1695: 0x14, 0x1696: 0x15, 0x1697: 0x16,\n\t0x1698: 0x17, 0x1699: 0x18, 0x169a: 0x19, 0x169b: 0x1a, 0x169c: 0x1b, 0x169d: 0x1c, 0x169e: 0x1d, 0x169f: 0x1e,\n\t0x16a0: 0x01, 0x16a1: 0x02, 0x16a2: 0x03, 0x16a3: 0x04, 0x16a4: 0x05,\n\t0x16aa: 0x06, 0x16ad: 0x07, 0x16af: 0x08,\n\t0x16b0: 0x13, 0x16b3: 0x15,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x3f, 0x16c1: 0x40, 0x16c2: 0x41, 0x16c3: 0x42, 0x16c4: 0x43, 0x16c5: 0x44, 0x16c6: 0x45, 0x16c7: 0x46,\n\t0x16c8: 0x47, 0x16c9: 0x48, 0x16ca: 0x49, 0x16cb: 0x4a, 0x16cc: 0x4b, 0x16cd: 0x4c, 0x16ce: 0x4d, 0x16cf: 0x4e,\n\t0x16d0: 0x4f, 0x16d1: 0x50, 0x16d2: 0x51, 0x16d3: 0x52, 0x16d4: 0x53, 0x16d5: 0x54, 0x16d6: 0x55, 0x16d7: 0x56,\n\t0x16d8: 0x57, 0x16d9: 0x58, 0x16da: 0x59, 0x16db: 0x5a, 0x16dc: 0x5b, 0x16dd: 0x5c, 0x16de: 0x5d, 0x16df: 0x5e,\n\t0x16e0: 0x5f, 0x16e1: 0x60, 0x16e2: 0x61, 0x16e3: 0x62, 0x16e4: 0x63, 0x16e5: 0x64, 0x16e6: 0x65, 0x16e7: 0x66,\n\t0x16e8: 0x67, 0x16e9: 0x68, 0x16ea: 0x69, 0x16ec: 0x6a, 0x16ed: 0x6b, 0x16ee: 0x6c, 0x16ef: 0x6d,\n\t0x16f0: 0x6e, 0x16f1: 0x6f, 0x16f3: 0x70, 0x16f4: 0x71, 0x16f5: 0x72, 0x16f6: 0x73, 0x16f7: 0x74,\n\t0x16f8: 0x281, 0x16f9: 0x282, 0x16fa: 0x283, 0x16fb: 0x284, 0x16fc: 0x79, 0x16fd: 0x7a, 0x16fe: 0x7b, 0x16ff: 0x7c,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x7d, 0x1701: 0x7e, 0x1702: 0x7f, 0x1703: 0x80, 0x1704: 0x285, 0x1705: 0x1bf, 0x1706: 0x83, 0x1707: 0x84,\n\t0x1708: 0x85, 0x1709: 0x86, 0x170a: 0x87, 0x170b: 0x88, 0x170c: 0x89, 0x170d: 0x8a, 0x170e: 0x8b, 0x170f: 0x8c,\n\t0x1710: 0x8d, 0x1711: 0x8e, 0x1712: 0x286, 0x1713: 0x90, 0x1714: 0x91, 0x1715: 0x92, 0x1716: 0x93, 0x1717: 0x94,\n\t0x1718: 0x95, 0x1719: 0x96, 0x171a: 0x97, 0x171b: 0x98, 0x171c: 0x99, 0x171d: 0x9a, 0x171e: 0x9b, 0x171f: 0x9c,\n\t0x1720: 0x9d, 0x1721: 0x9e, 0x1722: 0x9f, 0x1723: 0xa0, 0x1724: 0xa1, 0x1725: 0xa2, 0x1726: 0xa3, 0x1727: 0xa4,\n\t0x1728: 0xa5, 0x1729: 0xa6, 0x172a: 0xa7, 0x172b: 0xa8, 0x172c: 0xa9, 0x172d: 0xaa,\n\t0x1730: 0xab, 0x1731: 0xac, 0x1732: 0xad, 0x1733: 0xae, 0x1734: 0xaf, 0x1735: 0xb0, 0x1736: 0xb1, 0x1737: 0xb2,\n\t0x1738: 0xb3, 0x173a: 0xb4, 0x173b: 0xb5, 0x173c: 0xb6, 0x173d: 0xb7, 0x173e: 0xb8, 0x173f: 0xb9,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0xba, 0x1741: 0xbb, 0x1742: 0xbc, 0x1743: 0xbd, 0x1744: 0xbe, 0x1745: 0xbf, 0x1746: 0xc0, 0x1747: 0xc1,\n\t0x1748: 0xc2, 0x1749: 0xc3, 0x174a: 0xc4, 0x174b: 0x1c1, 0x174c: 0xc6, 0x174d: 0x287, 0x174e: 0x288, 0x174f: 0x289,\n\t// Block 0x5e, offset 0x1780\n\t0x17a4: 0xfb, 0x17a5: 0xfc, 0x17a6: 0xfd, 0x17a7: 0xfe,\n\t0x17a8: 0xff, 0x17a9: 0x100, 0x17aa: 0x101, 0x17ab: 0x102, 0x17ac: 0x28a, 0x17ad: 0x104, 0x17ae: 0x105, 0x17af: 0x106,\n\t0x17b0: 0x107, 0x17b1: 0x108, 0x17b2: 0x109, 0x17b3: 0x10a, 0x17b4: 0x10b, 0x17b5: 0x10c, 0x17b6: 0x10d, 0x17b7: 0x10e,\n\t0x17b8: 0x10f, 0x17b9: 0x110, 0x17ba: 0x111, 0x17bb: 0x112, 0x17bc: 0x113, 0x17bd: 0x114, 0x17be: 0x115, 0x17bf: 0x116,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x18b, 0x17c1: 0x18c, 0x17c2: 0x18d, 0x17c3: 0x18e, 0x17c4: 0x28b, 0x17c5: 0x28c, 0x17c6: 0x191, 0x17c7: 0x192,\n\t0x17c8: 0x193, 0x17c9: 0x194, 0x17cc: 0x195, 0x17cd: 0x196, 0x17ce: 0x197, 0x17cf: 0x198,\n\t0x17d0: 0x199, 0x17d1: 0x19a, 0x17d2: 0x19b, 0x17d3: 0x19c, 0x17d4: 0x19d, 0x17d5: 0x19e, 0x17d7: 0x19f,\n\t0x17d8: 0x1a0, 0x17d9: 0x1a1, 0x17da: 0x1a2, 0x17db: 0x1a3, 0x17dc: 0x1a4, 0x17dd: 0x1a5,\n\t// Block 0x60, offset 0x1800\n\t0x1810: 0x09, 0x1811: 0x0a, 0x1812: 0x0b, 0x1813: 0x0c, 0x1816: 0x0d,\n\t0x181b: 0x0e, 0x181d: 0x0f, 0x181e: 0x10, 0x181f: 0x5d,\n\t0x182f: 0x12,\n\t// Block 0x61, offset 0x1840\n\t0x1842: 0x01, 0x1843: 0x27a, 0x1844: 0x27b, 0x1845: 0x27c, 0x1846: 0x27d, 0x1847: 0x27e,\n\t0x1848: 0x27f, 0x1849: 0x08, 0x184a: 0x280, 0x184b: 0x0a, 0x184c: 0x0b, 0x184d: 0x0c, 0x184e: 0x0d, 0x184f: 0x0e,\n\t0x1850: 0x0f, 0x1851: 0x10, 0x1852: 0x11, 0x1853: 0x12, 0x1854: 0x13, 0x1855: 0x14, 0x1856: 0x15, 0x1857: 0x16,\n\t0x1858: 0x17, 0x1859: 0x18, 0x185a: 0x19, 0x185b: 0x1a, 0x185c: 0x1b, 0x185d: 0x1c, 0x185e: 0x1d, 0x185f: 0x1e,\n\t0x1860: 0x01, 0x1861: 0x59, 0x1862: 0x5a, 0x1863: 0x5b, 0x1864: 0x05,\n\t0x186a: 0x06, 0x186d: 0x07, 0x186f: 0x5c,\n\t0x1870: 0x5e, 0x1873: 0x15,\n\t// Block 0x62, offset 0x1880\n\t0x1882: 0x01, 0x1883: 0x02, 0x1884: 0x03, 0x1885: 0x04, 0x1886: 0x05, 0x1887: 0x06,\n\t0x1888: 0x07, 0x1889: 0x08, 0x188a: 0x09, 0x188b: 0x0a, 0x188c: 0x0b, 0x188d: 0x0c, 0x188e: 0x0d, 0x188f: 0x0e,\n\t0x1890: 0x0f, 0x1891: 0x10, 0x1892: 0x11, 0x1893: 0x12, 0x1894: 0x13, 0x1895: 0x14, 0x1896: 0x15, 0x1897: 0x28d,\n\t0x1898: 0x17, 0x1899: 0x18, 0x189a: 0x19, 0x189b: 0x1a, 0x189c: 0x1b, 0x189d: 0x1c, 0x189e: 0x1d, 0x189f: 0x1e,\n\t0x18a0: 0x01, 0x18a1: 0x02, 0x18a2: 0x03, 0x18a3: 0x04, 0x18a4: 0x05,\n\t0x18aa: 0x06, 0x18ad: 0x07, 0x18af: 0x08,\n\t0x18b0: 0x13, 0x18b3: 0x15,\n\t// Block 0x63, offset 0x18c0\n\t0x18e0: 0x1f, 0x18e1: 0x20, 0x18e2: 0x21, 0x18e3: 0x22, 0x18e4: 0x28e, 0x18e5: 0x24, 0x18e6: 0x25, 0x18e7: 0x26,\n\t0x18e8: 0x27, 0x18e9: 0x28, 0x18ea: 0x29, 0x18eb: 0x2a, 0x18ec: 0x2b, 0x18ed: 0x2c, 0x18ee: 0x2d, 0x18ef: 0x2e,\n\t0x18f0: 0x2f, 0x18f1: 0x30, 0x18f2: 0x31, 0x18f3: 0x32, 0x18f4: 0x33, 0x18f5: 0x34, 0x18f6: 0x35, 0x18f7: 0x36,\n\t0x18f8: 0x37, 0x18f9: 0x38, 0x18fa: 0x39, 0x18fb: 0x3a, 0x18fc: 0x3b, 0x18fd: 0x3c, 0x18fe: 0x3d, 0x18ff: 0x3e,\n\t// Block 0x64, offset 0x1900\n\t0x1902: 0x01, 0x1903: 0x02, 0x1904: 0x03, 0x1905: 0x04, 0x1906: 0x05, 0x1907: 0x06,\n\t0x1908: 0x07, 0x1909: 0x08, 0x190a: 0x09, 0x190b: 0x0a, 0x190c: 0x0b, 0x190d: 0x0c, 0x190e: 0x0d, 0x190f: 0x0e,\n\t0x1910: 0x0f, 0x1911: 0x10, 0x1912: 0x11, 0x1913: 0x12, 0x1914: 0x13, 0x1915: 0x14, 0x1916: 0x15, 0x1917: 0x16,\n\t0x1918: 0x17, 0x1919: 0x18, 0x191a: 0x19, 0x191b: 0x1a, 0x191c: 0x1b, 0x191d: 0x1c, 0x191e: 0x1d, 0x191f: 0x1e,\n\t0x1920: 0x61, 0x1921: 0x02, 0x1922: 0x03, 0x1923: 0x04, 0x1924: 0x05,\n\t0x192a: 0x06, 0x192d: 0x07, 0x192f: 0x08,\n\t0x1930: 0x13, 0x1933: 0x15,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x3f, 0x1941: 0x40, 0x1942: 0x41, 0x1943: 0x42, 0x1944: 0x43, 0x1945: 0x44, 0x1946: 0x45, 0x1947: 0x46,\n\t0x1948: 0x47, 0x1949: 0x48, 0x194a: 0x49, 0x194b: 0x4a, 0x194c: 0x4b, 0x194d: 0x4c, 0x194e: 0x4d, 0x194f: 0x4e,\n\t0x1950: 0x4f, 0x1951: 0x50, 0x1952: 0x51, 0x1953: 0x52, 0x1954: 0x53, 0x1955: 0x54, 0x1956: 0x55, 0x1957: 0x56,\n\t0x1958: 0x57, 0x1959: 0x58, 0x195a: 0x59, 0x195b: 0x5a, 0x195c: 0x5b, 0x195d: 0x5c, 0x195e: 0x5d, 0x195f: 0x5e,\n\t0x1960: 0x5f, 0x1961: 0x60, 0x1962: 0x61, 0x1963: 0x62, 0x1964: 0x63, 0x1965: 0x64, 0x1966: 0x65, 0x1967: 0x66,\n\t0x1968: 0x67, 0x1969: 0x68, 0x196a: 0x69, 0x196c: 0x6a, 0x196d: 0x6b, 0x196e: 0x6c, 0x196f: 0x6d,\n\t0x1970: 0x6e, 0x1971: 0x6f, 0x1973: 0x70, 0x1974: 0x71, 0x1975: 0x72, 0x1976: 0x73, 0x1977: 0x74,\n\t0x1978: 0x294, 0x1979: 0x1f2, 0x197a: 0x77, 0x197b: 0x78, 0x197c: 0x79, 0x197d: 0x7a, 0x197e: 0x7b, 0x197f: 0x7c,\n\t// Block 0x66, offset 0x1980\n\t0x1982: 0x01, 0x1983: 0x02, 0x1984: 0x291, 0x1985: 0x292, 0x1986: 0x05, 0x1987: 0x293,\n\t0x1988: 0x07, 0x1989: 0x08, 0x198a: 0x09, 0x198b: 0x0a, 0x198c: 0x0b, 0x198d: 0x0c, 0x198e: 0x0d, 0x198f: 0x0e,\n\t0x1990: 0x0f, 0x1991: 0x10, 0x1992: 0x11, 0x1993: 0x12, 0x1994: 0x13, 0x1995: 0x14, 0x1996: 0x15, 0x1997: 0x16,\n\t0x1998: 0x17, 0x1999: 0x18, 0x199a: 0x19, 0x199b: 0x1a, 0x199c: 0x1b, 0x199d: 0x1c, 0x199e: 0x1d, 0x199f: 0x1e,\n\t0x19a0: 0x01, 0x19a1: 0x63, 0x19a2: 0x03, 0x19a3: 0x04, 0x19a4: 0x05,\n\t0x19aa: 0x06, 0x19ad: 0x07, 0x19af: 0x08,\n\t0x19b0: 0x13, 0x19b3: 0x15,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x3f, 0x19c1: 0x40, 0x19c2: 0x41, 0x19c3: 0x42, 0x19c4: 0x43, 0x19c5: 0x44, 0x19c6: 0x45, 0x19c7: 0x46,\n\t0x19c8: 0x47, 0x19c9: 0x48, 0x19ca: 0x49, 0x19cb: 0x4a, 0x19cc: 0x4b, 0x19cd: 0x4c, 0x19ce: 0x4d, 0x19cf: 0x4e,\n\t0x19d0: 0x4f, 0x19d1: 0x50, 0x19d2: 0x51, 0x19d3: 0x52, 0x19d4: 0x53, 0x19d5: 0x54, 0x19d6: 0x55, 0x19d7: 0x56,\n\t0x19d8: 0x57, 0x19d9: 0x58, 0x19da: 0x59, 0x19db: 0x5a, 0x19dc: 0x5b, 0x19dd: 0x5c, 0x19de: 0x5d, 0x19df: 0x5e,\n\t0x19e0: 0x5f, 0x19e1: 0x60, 0x19e2: 0x61, 0x19e3: 0x62, 0x19e4: 0x63, 0x19e5: 0x64, 0x19e6: 0x65, 0x19e7: 0x66,\n\t0x19e8: 0x67, 0x19e9: 0x68, 0x19ea: 0x69, 0x19ec: 0x6a, 0x19ed: 0x6b, 0x19ee: 0x6c, 0x19ef: 0x6d,\n\t0x19f0: 0x6e, 0x19f1: 0x6f, 0x19f3: 0x70, 0x19f4: 0x71, 0x19f5: 0x72, 0x19f6: 0x73, 0x19f7: 0x74,\n\t0x19f8: 0x75, 0x19f9: 0x1df, 0x19fa: 0x77, 0x19fb: 0x78, 0x19fc: 0x79, 0x19fd: 0x7a, 0x19fe: 0x7b, 0x19ff: 0x7c,\n\t// Block 0x68, offset 0x1a00\n\t0x1a02: 0x01, 0x1a03: 0x297, 0x1a04: 0x03, 0x1a05: 0x298, 0x1a06: 0x05, 0x1a07: 0x299,\n\t0x1a08: 0x29a, 0x1a09: 0x08, 0x1a0a: 0x09, 0x1a0b: 0x0a, 0x1a0c: 0x0b, 0x1a0d: 0x0c, 0x1a0e: 0x0d, 0x1a0f: 0x0e,\n\t0x1a10: 0x0f, 0x1a11: 0x10, 0x1a12: 0x11, 0x1a13: 0x12, 0x1a14: 0x13, 0x1a15: 0x14, 0x1a16: 0x15, 0x1a17: 0x16,\n\t0x1a18: 0x17, 0x1a19: 0x18, 0x1a1a: 0x19, 0x1a1b: 0x1a, 0x1a1c: 0x1b, 0x1a1d: 0x1c, 0x1a1e: 0x1d, 0x1a1f: 0x1e,\n\t0x1a20: 0x01, 0x1a21: 0x65, 0x1a22: 0x03, 0x1a23: 0x04, 0x1a24: 0x05,\n\t0x1a2a: 0x06, 0x1a2d: 0x07, 0x1a2f: 0x08,\n\t0x1a30: 0x13, 0x1a33: 0x15,\n\t// Block 0x69, offset 0x1a40\n\t0x1a42: 0x01, 0x1a43: 0x02, 0x1a44: 0x03, 0x1a45: 0x04, 0x1a46: 0x05, 0x1a47: 0x06,\n\t0x1a48: 0x07, 0x1a49: 0x08, 0x1a4a: 0x09, 0x1a4b: 0x0a, 0x1a4c: 0x0b, 0x1a4d: 0x0c, 0x1a4e: 0x0d, 0x1a4f: 0x0e,\n\t0x1a50: 0x0f, 0x1a51: 0x10, 0x1a52: 0x11, 0x1a53: 0x12, 0x1a54: 0x29b, 0x1a55: 0x14, 0x1a56: 0x29c, 0x1a57: 0x16,\n\t0x1a58: 0x17, 0x1a59: 0x18, 0x1a5a: 0x19, 0x1a5b: 0x1a, 0x1a5c: 0x1b, 0x1a5d: 0x1c, 0x1a5e: 0x1d, 0x1a5f: 0x1e,\n\t0x1a60: 0x01, 0x1a61: 0x02, 0x1a62: 0x03, 0x1a63: 0x04, 0x1a64: 0x05,\n\t0x1a6a: 0x06, 0x1a6d: 0x07, 0x1a6f: 0x08,\n\t0x1a70: 0x13, 0x1a73: 0x15,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x3f, 0x1a81: 0x40, 0x1a82: 0x41, 0x1a83: 0x42, 0x1a84: 0x43, 0x1a85: 0x44, 0x1a86: 0x45, 0x1a87: 0x46,\n\t0x1a88: 0x47, 0x1a89: 0x48, 0x1a8a: 0x49, 0x1a8b: 0x4a, 0x1a8c: 0x4b, 0x1a8d: 0x4c, 0x1a8e: 0x4d, 0x1a8f: 0x4e,\n\t0x1a90: 0x4f, 0x1a91: 0x50, 0x1a92: 0x51, 0x1a93: 0x52, 0x1a94: 0x53, 0x1a95: 0x54, 0x1a96: 0x55, 0x1a97: 0x56,\n\t0x1a98: 0x57, 0x1a99: 0x58, 0x1a9a: 0x59, 0x1a9b: 0x5a, 0x1a9c: 0x5b, 0x1a9d: 0x5c, 0x1a9e: 0x5d, 0x1a9f: 0x5e,\n\t0x1aa0: 0x5f, 0x1aa1: 0x60, 0x1aa2: 0x61, 0x1aa3: 0x62, 0x1aa4: 0x63, 0x1aa5: 0x64, 0x1aa6: 0x65, 0x1aa7: 0x66,\n\t0x1aa8: 0x67, 0x1aa9: 0x68, 0x1aaa: 0x69, 0x1aac: 0x6a, 0x1aad: 0x6b, 0x1aae: 0x6c, 0x1aaf: 0x6d,\n\t0x1ab0: 0x6e, 0x1ab1: 0x6f, 0x1ab3: 0x70, 0x1ab4: 0x71, 0x1ab5: 0x72, 0x1ab6: 0x73, 0x1ab7: 0x74,\n\t0x1ab8: 0x75, 0x1ab9: 0x29f, 0x1aba: 0x77, 0x1abb: 0x2a0, 0x1abc: 0x79, 0x1abd: 0x7a, 0x1abe: 0x7b, 0x1abf: 0x7c,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac2: 0x01, 0x1ac3: 0x02, 0x1ac4: 0x03, 0x1ac5: 0x04, 0x1ac6: 0x05, 0x1ac7: 0x06,\n\t0x1ac8: 0x07, 0x1ac9: 0x08, 0x1aca: 0x09, 0x1acb: 0x0a, 0x1acc: 0x0b, 0x1acd: 0x0c, 0x1ace: 0x0d, 0x1acf: 0x0e,\n\t0x1ad0: 0x0f, 0x1ad1: 0x10, 0x1ad2: 0x11, 0x1ad3: 0x12, 0x1ad4: 0x13, 0x1ad5: 0x14, 0x1ad6: 0x15, 0x1ad7: 0x16,\n\t0x1ad8: 0x17, 0x1ad9: 0x18, 0x1ada: 0x19, 0x1adb: 0x1a, 0x1adc: 0x1b, 0x1add: 0x1c, 0x1ade: 0x1d, 0x1adf: 0x1e,\n\t0x1ae0: 0x01, 0x1ae1: 0x68, 0x1ae2: 0x03, 0x1ae3: 0x04, 0x1ae4: 0x05,\n\t0x1aea: 0x06, 0x1aed: 0x07, 0x1aef: 0x08,\n\t0x1af0: 0x13, 0x1af3: 0x15,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x3f, 0x1b01: 0x40, 0x1b02: 0x41, 0x1b03: 0x42, 0x1b04: 0x43, 0x1b05: 0x44, 0x1b06: 0x45, 0x1b07: 0x46,\n\t0x1b08: 0x47, 0x1b09: 0x48, 0x1b0a: 0x49, 0x1b0b: 0x4a, 0x1b0c: 0x4b, 0x1b0d: 0x4c, 0x1b0e: 0x4d, 0x1b0f: 0x4e,\n\t0x1b10: 0x4f, 0x1b11: 0x50, 0x1b12: 0x51, 0x1b13: 0x52, 0x1b14: 0x53, 0x1b15: 0x54, 0x1b16: 0x55, 0x1b17: 0x56,\n\t0x1b18: 0x57, 0x1b19: 0x58, 0x1b1a: 0x59, 0x1b1b: 0x5a, 0x1b1c: 0x5b, 0x1b1d: 0x5c, 0x1b1e: 0x5d, 0x1b1f: 0x5e,\n\t0x1b20: 0x5f, 0x1b21: 0x60, 0x1b22: 0x61, 0x1b23: 0x62, 0x1b24: 0x63, 0x1b25: 0x64, 0x1b26: 0x65, 0x1b27: 0x66,\n\t0x1b28: 0x67, 0x1b29: 0x68, 0x1b2a: 0x69, 0x1b2c: 0x6a, 0x1b2d: 0x6b, 0x1b2e: 0x6c, 0x1b2f: 0x6d,\n\t0x1b30: 0x6e, 0x1b31: 0x6f, 0x1b33: 0x70, 0x1b34: 0x71, 0x1b35: 0x72, 0x1b36: 0x1fc, 0x1b37: 0x74,\n\t0x1b38: 0x2a7, 0x1b39: 0x2a8, 0x1b3a: 0x2a9, 0x1b3b: 0x2aa, 0x1b3c: 0x79, 0x1b3d: 0x7a, 0x1b3e: 0x7b, 0x1b3f: 0x7c,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b42: 0x01, 0x1b43: 0x2a3, 0x1b44: 0x2a4, 0x1b45: 0x04, 0x1b46: 0x05, 0x1b47: 0x2a5,\n\t0x1b48: 0x2a6, 0x1b49: 0x08, 0x1b4a: 0x09, 0x1b4b: 0x0a, 0x1b4c: 0x0b, 0x1b4d: 0x0c, 0x1b4e: 0x0d, 0x1b4f: 0x0e,\n\t0x1b50: 0x0f, 0x1b51: 0x10, 0x1b52: 0x11, 0x1b53: 0x12, 0x1b54: 0x13, 0x1b55: 0x14, 0x1b56: 0x15, 0x1b57: 0x16,\n\t0x1b58: 0x17, 0x1b59: 0x18, 0x1b5a: 0x19, 0x1b5b: 0x1a, 0x1b5c: 0x1b, 0x1b5d: 0x1c, 0x1b5e: 0x1d, 0x1b5f: 0x1e,\n\t0x1b60: 0x01, 0x1b61: 0x6a, 0x1b62: 0x30, 0x1b63: 0x04, 0x1b64: 0x05,\n\t0x1b6a: 0x06, 0x1b6d: 0x07, 0x1b6f: 0x08,\n\t0x1b70: 0x13, 0x1b73: 0x15,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x2ab, 0x1b81: 0x2ac, 0x1b82: 0x2ad, 0x1b83: 0x2ae, 0x1b84: 0x2af, 0x1b85: 0x2b0, 0x1b86: 0xc0, 0x1b87: 0x2b1,\n\t0x1b88: 0x2b2, 0x1b89: 0x2b3, 0x1b8a: 0xc4, 0x1b8b: 0x2b4, 0x1b8c: 0xc6, 0x1b8d: 0x2b5, 0x1b8e: 0xc8, 0x1b8f: 0x2b6,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bf7: 0xca,\n\t0x1bf8: 0x2b7, 0x1bf9: 0x2b8, 0x1bfa: 0x2b9, 0x1bfb: 0x2ba, 0x1bfc: 0x2bb, 0x1bfd: 0x2bc, 0x1bfe: 0x2bd, 0x1bff: 0x2be,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x2bf, 0x1c01: 0x2c0, 0x1c02: 0x2c1, 0x1c03: 0x2c2, 0x1c04: 0x2c3, 0x1c05: 0x2c4, 0x1c06: 0x2c5, 0x1c07: 0x2c6,\n\t0x1c08: 0x2c7, 0x1c09: 0x2c8, 0x1c0a: 0x2c9, 0x1c0b: 0x2ca, 0x1c0c: 0x2cb, 0x1c0d: 0x2cc, 0x1c0e: 0x2cd, 0x1c0f: 0x2ce,\n\t0x1c10: 0x2cf, 0x1c11: 0x2d0, 0x1c12: 0x2d1, 0x1c13: 0x2d2, 0x1c14: 0x2d3, 0x1c15: 0x2d4, 0x1c16: 0x2d5, 0x1c17: 0x2d6,\n\t0x1c18: 0x2d7, 0x1c19: 0x2d8, 0x1c1a: 0x2d9, 0x1c1b: 0x2da, 0x1c1c: 0x2db, 0x1c1d: 0x2dc, 0x1c1e: 0x2dd, 0x1c1f: 0x2de,\n\t0x1c20: 0x2df, 0x1c21: 0x2e0, 0x1c22: 0x2e1, 0x1c23: 0x2e2, 0x1c24: 0x2e3, 0x1c25: 0x2e4, 0x1c26: 0x2e5, 0x1c27: 0x2e6,\n\t0x1c28: 0x2e7, 0x1c29: 0x2e8, 0x1c2a: 0x2e9, 0x1c2b: 0x2ea, 0x1c2c: 0x2eb, 0x1c2d: 0x2ec, 0x1c2e: 0x2ed, 0x1c2f: 0x2ee,\n\t0x1c30: 0x2ef, 0x1c31: 0x2f0, 0x1c32: 0x2f1, 0x1c33: 0x2f2, 0x1c34: 0x2f3, 0x1c35: 0x2f4, 0x1c36: 0x2f5, 0x1c37: 0x2f6,\n\t0x1c38: 0x2f7, 0x1c39: 0x2f8, 0x1c3a: 0x2f9, 0x1c3b: 0x2fa, 0x1c3c: 0x2fb, 0x1c3d: 0x2fc, 0x1c3e: 0x2fd, 0x1c3f: 0x2fe,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x2ff, 0x1c41: 0x300, 0x1c42: 0x301, 0x1c43: 0x302, 0x1c44: 0x303, 0x1c45: 0x304, 0x1c46: 0x305, 0x1c47: 0x306,\n\t0x1c48: 0x307, 0x1c49: 0x308, 0x1c4a: 0x309, 0x1c4b: 0x30a, 0x1c4c: 0x30b, 0x1c4d: 0x30c, 0x1c4e: 0x30d, 0x1c4f: 0x30e,\n\t0x1c50: 0x30f, 0x1c51: 0x310, 0x1c52: 0x311, 0x1c53: 0x312, 0x1c54: 0x313, 0x1c55: 0x314, 0x1c56: 0x315, 0x1c57: 0x316,\n\t0x1c58: 0x317, 0x1c59: 0x318, 0x1c5a: 0x319, 0x1c5b: 0x31a, 0x1c5c: 0x31b, 0x1c5d: 0x31c, 0x1c5e: 0x31d, 0x1c5f: 0x31e,\n\t0x1c60: 0x31f, 0x1c61: 0x320, 0x1c62: 0x321, 0x1c63: 0x322, 0x1c64: 0x323, 0x1c65: 0x324, 0x1c66: 0x325, 0x1c67: 0x326,\n\t0x1c68: 0x327, 0x1c69: 0x328, 0x1c6a: 0x329, 0x1c6b: 0x32a, 0x1c6c: 0x32b, 0x1c6d: 0x32c, 0x1c6e: 0x32d, 0x1c6f: 0x32e,\n\t0x1c70: 0x32f, 0x1c71: 0x330, 0x1c72: 0x331, 0x1c73: 0x332, 0x1c74: 0x333, 0x1c75: 0x334, 0x1c76: 0x335, 0x1c77: 0x336,\n\t0x1c78: 0x337, 0x1c79: 0x338, 0x1c7a: 0x339, 0x1c7b: 0x33a, 0x1c7c: 0x33b, 0x1c7d: 0x33c, 0x1c7e: 0x33d, 0x1c7f: 0x33e,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x33f, 0x1c81: 0x340, 0x1c82: 0x341, 0x1c83: 0x342, 0x1c84: 0x343, 0x1c85: 0x344, 0x1c86: 0x345, 0x1c87: 0x346,\n\t0x1c88: 0x347, 0x1c89: 0x348, 0x1c8a: 0x349, 0x1c8b: 0x34a, 0x1c8c: 0x34b, 0x1c8d: 0x34c, 0x1c8e: 0x34d, 0x1c8f: 0x34e,\n\t0x1c90: 0x34f, 0x1c91: 0x350, 0x1c92: 0x351, 0x1c93: 0x352, 0x1c94: 0x353, 0x1c95: 0x354, 0x1c96: 0x355, 0x1c97: 0x356,\n\t0x1c98: 0x357, 0x1c99: 0x358, 0x1c9a: 0x359, 0x1c9b: 0x35a, 0x1c9c: 0x35b, 0x1c9d: 0x35c, 0x1c9e: 0x35d, 0x1c9f: 0x35e,\n\t0x1ca0: 0x35f, 0x1ca1: 0x360, 0x1ca2: 0x361, 0x1ca3: 0x362, 0x1ca4: 0x363, 0x1ca5: 0x364, 0x1ca6: 0x365, 0x1ca7: 0x366,\n\t0x1ca8: 0x367, 0x1ca9: 0x368, 0x1caa: 0x369, 0x1cab: 0x36a, 0x1cac: 0x36b, 0x1cad: 0x36c, 0x1cae: 0x36d, 0x1caf: 0x36e,\n\t0x1cb0: 0x36f, 0x1cb1: 0x370, 0x1cb2: 0x371, 0x1cb3: 0x372, 0x1cb4: 0x373, 0x1cb5: 0x374, 0x1cb6: 0x375, 0x1cb7: 0x376,\n\t0x1cb8: 0x377, 0x1cb9: 0x378, 0x1cba: 0x379, 0x1cbc: 0x37a, 0x1cbd: 0x37b, 0x1cbe: 0x37c, 0x1cbf: 0x37d,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x37e, 0x1cc1: 0x37f, 0x1cc2: 0x380, 0x1cc3: 0x381, 0x1cc4: 0x382, 0x1cc5: 0x383, 0x1cc6: 0x384, 0x1cc7: 0x385,\n\t0x1cc8: 0x386, 0x1cc9: 0x387, 0x1cca: 0x388, 0x1ccb: 0x389, 0x1ccc: 0x38a, 0x1ccd: 0x38b, 0x1cce: 0x38c, 0x1ccf: 0x38d,\n\t0x1cd0: 0x38e, 0x1cd1: 0x38f, 0x1cd2: 0x390, 0x1cd3: 0x391, 0x1cd4: 0x392, 0x1cd5: 0x393, 0x1cd6: 0x394, 0x1cd7: 0x395,\n\t0x1cd8: 0x396, 0x1cd9: 0x397, 0x1cda: 0x398, 0x1cdb: 0x399, 0x1cdc: 0x39a, 0x1cdd: 0x39b, 0x1cde: 0x39c, 0x1cdf: 0x39d,\n\t0x1ce0: 0x39e, 0x1ce1: 0x39f, 0x1ce2: 0x3a0, 0x1ce3: 0x3a1, 0x1ce4: 0x3a2, 0x1ce5: 0x3a3, 0x1ce6: 0x3a4, 0x1ce7: 0x3a5,\n\t0x1ce8: 0x3a6, 0x1ce9: 0x3a7, 0x1cea: 0x3a8, 0x1ceb: 0x3a9, 0x1cec: 0x3aa, 0x1ced: 0x3ab, 0x1cee: 0x3ac,\n\t0x1cf0: 0x3ad, 0x1cf1: 0x3ae, 0x1cf2: 0x3af, 0x1cf3: 0x3b0, 0x1cf4: 0x3b1, 0x1cf5: 0x3b2, 0x1cf6: 0x3b3, 0x1cf7: 0x3b4,\n\t0x1cf8: 0x3b5, 0x1cf9: 0x3b6, 0x1cfa: 0x3b7, 0x1cfb: 0x3b8, 0x1cfc: 0x3b9, 0x1cfd: 0x3ba, 0x1cfe: 0x3bb, 0x1cff: 0x3bc,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x3bd, 0x1d01: 0x3be, 0x1d02: 0x3bf, 0x1d03: 0x3c0, 0x1d04: 0x3c1, 0x1d05: 0x3c2, 0x1d06: 0x3c3, 0x1d07: 0x3c4,\n\t0x1d08: 0x3c5, 0x1d09: 0x3c6, 0x1d0a: 0x3c7, 0x1d0b: 0x3c8, 0x1d0c: 0x3c9, 0x1d0d: 0x3ca, 0x1d0e: 0x3cb, 0x1d0f: 0x3cc,\n\t0x1d10: 0x3cd, 0x1d11: 0x3ce, 0x1d12: 0x3cf, 0x1d15: 0x3d0, 0x1d16: 0x3d1, 0x1d17: 0x3d2,\n\t0x1d18: 0x3d3, 0x1d19: 0x3d4, 0x1d1a: 0x3d5, 0x1d1b: 0x3d6, 0x1d1c: 0x3d7, 0x1d1d: 0x3d8, 0x1d1e: 0x3d9, 0x1d1f: 0x3da,\n\t0x1d20: 0x3db, 0x1d21: 0x3dc, 0x1d22: 0x3dd, 0x1d23: 0x3de, 0x1d24: 0x3df, 0x1d25: 0x3e0, 0x1d26: 0x3e1, 0x1d27: 0x3e2,\n\t0x1d28: 0x3e3, 0x1d29: 0x3e4, 0x1d2a: 0x3e5, 0x1d2b: 0x3e6, 0x1d2c: 0x3e7, 0x1d2d: 0x3e8, 0x1d2e: 0x3e9, 0x1d2f: 0x3ea,\n\t0x1d30: 0x3eb, 0x1d31: 0x3ec, 0x1d33: 0x3ed, 0x1d34: 0x3ee, 0x1d35: 0x3ef, 0x1d36: 0x3f0, 0x1d37: 0x3f1,\n\t0x1d38: 0x3f2, 0x1d39: 0x3f3, 0x1d3a: 0x3f4, 0x1d3b: 0x3f5, 0x1d3c: 0x3f6, 0x1d3d: 0x3f7, 0x1d3e: 0x3f8,\n\t// Block 0x75, offset 0x1d40\n\t0x1d64: 0x3f9, 0x1d65: 0x3fa, 0x1d66: 0x3fb, 0x1d67: 0x3fc,\n\t0x1d68: 0x3fd, 0x1d69: 0x3fe, 0x1d6a: 0x3ff, 0x1d6b: 0x400, 0x1d6c: 0x103, 0x1d6d: 0x104, 0x1d6e: 0x105, 0x1d6f: 0x106,\n\t0x1d70: 0x107, 0x1d71: 0x108, 0x1d72: 0x109, 0x1d73: 0x10a, 0x1d74: 0x10b, 0x1d75: 0x10c, 0x1d76: 0x10d, 0x1d77: 0x10e,\n\t0x1d78: 0x10f, 0x1d79: 0x110, 0x1d7a: 0x111, 0x1d7b: 0x112, 0x1d7c: 0x401, 0x1d7d: 0x402, 0x1d7e: 0x403, 0x1d7f: 0x404,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x18b, 0x1d81: 0x18c, 0x1d82: 0x18d, 0x1d83: 0x18e, 0x1d84: 0x18f, 0x1d85: 0x190, 0x1d86: 0x191, 0x1d87: 0x192,\n\t0x1d88: 0x193, 0x1d89: 0x405, 0x1d8c: 0x195, 0x1d8d: 0x196, 0x1d8e: 0x197, 0x1d8f: 0x198,\n\t0x1d90: 0x199, 0x1d91: 0x19a, 0x1d92: 0x19b, 0x1d93: 0x19c, 0x1d94: 0x19d, 0x1d95: 0x19e, 0x1d97: 0x19f,\n\t0x1d98: 0x1a0, 0x1d99: 0x1a1, 0x1d9a: 0x1a2, 0x1d9b: 0x1a3, 0x1d9c: 0x1a4, 0x1d9d: 0x1a5,\n\t// Block 0x77, offset 0x1dc0\n\t0x1de0: 0x406, 0x1de1: 0x407, 0x1de2: 0x408, 0x1de3: 0x409, 0x1de4: 0x40a, 0x1de5: 0x40b, 0x1de6: 0x40c, 0x1de7: 0x40d,\n\t0x1de8: 0x40e,\n\t// Block 0x78, offset 0x1e00\n\t0x1e10: 0x09, 0x1e11: 0x0a, 0x1e12: 0x0b, 0x1e13: 0x0c, 0x1e16: 0x0d,\n\t0x1e1b: 0x0e, 0x1e1d: 0x0f, 0x1e1e: 0x10, 0x1e1f: 0x74,\n\t0x1e2f: 0x75,\n\t// Block 0x79, offset 0x1e40\n\t0x1e42: 0x01, 0x1e43: 0x02, 0x1e44: 0x03, 0x1e45: 0x04, 0x1e46: 0x05, 0x1e47: 0x06,\n\t0x1e48: 0x07, 0x1e49: 0x08, 0x1e4a: 0x09, 0x1e4b: 0x0a, 0x1e4c: 0x0b, 0x1e4d: 0x0c, 0x1e4e: 0x0d, 0x1e4f: 0x0e,\n\t0x1e50: 0x0f, 0x1e51: 0x10, 0x1e52: 0x11, 0x1e53: 0x12, 0x1e54: 0x13, 0x1e55: 0x14, 0x1e56: 0x15, 0x1e57: 0x16,\n\t0x1e58: 0x17, 0x1e59: 0x18, 0x1e5a: 0x19, 0x1e5b: 0x1a, 0x1e5c: 0x1b, 0x1e5d: 0x1c, 0x1e5e: 0x1d, 0x1e5f: 0x1e,\n\t0x1e60: 0x01, 0x1e61: 0x02, 0x1e62: 0x03, 0x1e63: 0x6c, 0x1e64: 0x6d, 0x1e65: 0x6e, 0x1e66: 0x6f, 0x1e67: 0x70,\n\t0x1e68: 0x71, 0x1e69: 0x72, 0x1e6a: 0x06, 0x1e6d: 0x07, 0x1e6f: 0x73,\n\t0x1e70: 0x76, 0x1e73: 0x15,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e82: 0x01, 0x1e83: 0x02, 0x1e84: 0x03, 0x1e85: 0x04, 0x1e86: 0x05, 0x1e87: 0x06,\n\t0x1e88: 0x07, 0x1e89: 0x08, 0x1e8a: 0x09, 0x1e8b: 0x0a, 0x1e8c: 0x0b, 0x1e8d: 0x0c, 0x1e8e: 0x0d, 0x1e8f: 0x0e,\n\t0x1e90: 0x40f, 0x1e91: 0x410, 0x1e92: 0x411, 0x1e93: 0x12, 0x1e94: 0x13, 0x1e95: 0x14, 0x1e96: 0x15, 0x1e97: 0x16,\n\t0x1e98: 0x17, 0x1e99: 0x18, 0x1e9a: 0x19, 0x1e9b: 0x1a, 0x1e9c: 0x1b, 0x1e9d: 0x1c, 0x1e9e: 0x1d, 0x1e9f: 0x1e,\n\t0x1ea0: 0x01, 0x1ea1: 0x02, 0x1ea2: 0x03, 0x1ea3: 0x04, 0x1ea4: 0x05,\n\t0x1eaa: 0x06, 0x1ead: 0x07, 0x1eaf: 0x08,\n\t0x1eb0: 0x13, 0x1eb3: 0x15,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec2: 0x01, 0x1ec3: 0x1f7, 0x1ec4: 0x414, 0x1ec5: 0x1f9, 0x1ec6: 0x05, 0x1ec7: 0x1fa,\n\t0x1ec8: 0x1fb, 0x1ec9: 0x08, 0x1eca: 0x09, 0x1ecb: 0x0a, 0x1ecc: 0x0b, 0x1ecd: 0x0c, 0x1ece: 0x0d, 0x1ecf: 0x0e,\n\t0x1ed0: 0x0f, 0x1ed1: 0x10, 0x1ed2: 0x11, 0x1ed3: 0x12, 0x1ed4: 0x13, 0x1ed5: 0x14, 0x1ed6: 0x15, 0x1ed7: 0x16,\n\t0x1ed8: 0x17, 0x1ed9: 0x18, 0x1eda: 0x19, 0x1edb: 0x1a, 0x1edc: 0x1b, 0x1edd: 0x1c, 0x1ede: 0x1d, 0x1edf: 0x1e,\n\t0x1ee0: 0x01, 0x1ee1: 0x2f, 0x1ee2: 0x30, 0x1ee3: 0x04, 0x1ee4: 0x05,\n\t0x1eea: 0x06, 0x1eed: 0x07, 0x1eef: 0x08,\n\t0x1ef0: 0x13, 0x1ef3: 0x15,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0x3f, 0x1f01: 0x40, 0x1f02: 0x41, 0x1f03: 0x42, 0x1f04: 0x43, 0x1f05: 0x44, 0x1f06: 0x45, 0x1f07: 0x46,\n\t0x1f08: 0x47, 0x1f09: 0x48, 0x1f0a: 0x49, 0x1f0b: 0x4a, 0x1f0c: 0x4b, 0x1f0d: 0x4c, 0x1f0e: 0x4d, 0x1f0f: 0x4e,\n\t0x1f10: 0x4f, 0x1f11: 0x50, 0x1f12: 0x51, 0x1f13: 0x52, 0x1f14: 0x53, 0x1f15: 0x54, 0x1f16: 0x55, 0x1f17: 0x56,\n\t0x1f18: 0x57, 0x1f19: 0x58, 0x1f1a: 0x59, 0x1f1b: 0x5a, 0x1f1c: 0x5b, 0x1f1d: 0x5c, 0x1f1e: 0x415, 0x1f1f: 0x416,\n\t0x1f20: 0x5f, 0x1f21: 0x60, 0x1f22: 0x61, 0x1f23: 0x62, 0x1f24: 0x63, 0x1f25: 0x64, 0x1f26: 0x65, 0x1f27: 0x66,\n\t0x1f28: 0x67, 0x1f29: 0x68, 0x1f2a: 0x69, 0x1f2c: 0x6a, 0x1f2d: 0x6b, 0x1f2e: 0x6c, 0x1f2f: 0x6d,\n\t0x1f30: 0x6e, 0x1f31: 0x6f, 0x1f33: 0x70, 0x1f34: 0x71, 0x1f35: 0x72, 0x1f36: 0x73, 0x1f37: 0x74,\n\t0x1f38: 0x75, 0x1f39: 0x76, 0x1f3a: 0x77, 0x1f3b: 0x78, 0x1f3c: 0x79, 0x1f3d: 0x7a, 0x1f3e: 0x7b, 0x1f3f: 0x7c,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f42: 0x01, 0x1f43: 0x02, 0x1f44: 0x03, 0x1f45: 0x04, 0x1f46: 0x05, 0x1f47: 0x06,\n\t0x1f48: 0x07, 0x1f49: 0x08, 0x1f4a: 0x09, 0x1f4b: 0x0a, 0x1f4c: 0x0b, 0x1f4d: 0x0c, 0x1f4e: 0x0d, 0x1f4f: 0x0e,\n\t0x1f50: 0x0f, 0x1f51: 0x10, 0x1f52: 0x11, 0x1f53: 0x12, 0x1f54: 0x13, 0x1f55: 0x14, 0x1f56: 0x15, 0x1f57: 0x16,\n\t0x1f58: 0x17, 0x1f59: 0x18, 0x1f5a: 0x19, 0x1f5b: 0x1a, 0x1f5c: 0x1b, 0x1f5d: 0x1c, 0x1f5e: 0x1d, 0x1f5f: 0x1e,\n\t0x1f60: 0x01, 0x1f61: 0x7a, 0x1f62: 0x03, 0x1f63: 0x04, 0x1f64: 0x05,\n\t0x1f6a: 0x06, 0x1f6d: 0x07, 0x1f6f: 0x08,\n\t0x1f70: 0x13, 0x1f73: 0x15,\n\t// Block 0x7e, offset 0x1f80\n\t0x1fa0: 0x1f, 0x1fa1: 0x20, 0x1fa2: 0x21, 0x1fa3: 0x22, 0x1fa4: 0x23, 0x1fa5: 0x24, 0x1fa6: 0x25, 0x1fa7: 0x26,\n\t0x1fa8: 0x27, 0x1fa9: 0x28, 0x1faa: 0x29, 0x1fab: 0x2a, 0x1fac: 0x2b, 0x1fad: 0x2c, 0x1fae: 0x2d, 0x1faf: 0x2e,\n\t0x1fb0: 0x2f, 0x1fb1: 0x30, 0x1fb2: 0x417, 0x1fb3: 0x418, 0x1fb4: 0x33, 0x1fb5: 0x34, 0x1fb6: 0x35, 0x1fb7: 0x36,\n\t0x1fb8: 0x37, 0x1fb9: 0x38, 0x1fba: 0x39, 0x1fbb: 0x3a, 0x1fbc: 0x3b, 0x1fbd: 0x3c, 0x1fbe: 0x3d, 0x1fbf: 0x3e,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc2: 0x01, 0x1fc3: 0x02, 0x1fc4: 0x03, 0x1fc5: 0x04, 0x1fc6: 0x05, 0x1fc7: 0x06,\n\t0x1fc8: 0x07, 0x1fc9: 0x08, 0x1fca: 0x09, 0x1fcb: 0x0a, 0x1fcc: 0x0b, 0x1fcd: 0x0c, 0x1fce: 0x0d, 0x1fcf: 0x0e,\n\t0x1fd0: 0x0f, 0x1fd1: 0x10, 0x1fd2: 0x11, 0x1fd3: 0x12, 0x1fd4: 0x13, 0x1fd5: 0x14, 0x1fd6: 0x15, 0x1fd7: 0x16,\n\t0x1fd8: 0x17, 0x1fd9: 0x18, 0x1fda: 0x19, 0x1fdb: 0x1a, 0x1fdc: 0x1b, 0x1fdd: 0x1c, 0x1fde: 0x1d, 0x1fdf: 0x1e,\n\t0x1fe0: 0x7c, 0x1fe1: 0x02, 0x1fe2: 0x03, 0x1fe3: 0x04, 0x1fe4: 0x05,\n\t0x1fea: 0x06, 0x1fed: 0x07, 0x1fef: 0x08,\n\t0x1ff0: 0x13, 0x1ff3: 0x15,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0xba, 0x2001: 0xbb, 0x2002: 0xbc, 0x2003: 0xbd, 0x2004: 0xbe, 0x2005: 0xbf, 0x2006: 0xc0, 0x2007: 0xc1,\n\t0x2008: 0x419, 0x2009: 0x2b3, 0x200a: 0xc4, 0x200b: 0x2b4, 0x200c: 0xc6, 0x200d: 0x2b5, 0x200e: 0xc8, 0x200f: 0x2b6,\n\t// Block 0x81, offset 0x2040\n\t0x2077: 0xca,\n\t0x2078: 0x41a, 0x2079: 0x41b, 0x207a: 0x41c, 0x207b: 0x41d, 0x207c: 0x41e, 0x207d: 0x41f, 0x207e: 0x420, 0x207f: 0x421,\n\t// Block 0x82, offset 0x2080\n\t0x2080: 0x422, 0x2081: 0x423, 0x2082: 0x424, 0x2083: 0x425, 0x2084: 0x426, 0x2085: 0x427, 0x2086: 0x428, 0x2087: 0x429,\n\t0x2088: 0x42a, 0x2089: 0x42b, 0x208a: 0x42c, 0x208b: 0x42d, 0x208c: 0x42e, 0x208d: 0x42f, 0x208e: 0x430, 0x208f: 0x431,\n\t0x2090: 0x432, 0x2091: 0x433, 0x2092: 0x434, 0x2093: 0x435, 0x2094: 0x436, 0x2095: 0x437, 0x2096: 0x438, 0x2097: 0x439,\n\t0x2098: 0x43a, 0x2099: 0x43b, 0x209a: 0x43c, 0x209b: 0x43d, 0x209c: 0x43e, 0x209d: 0x43f, 0x209e: 0x440, 0x209f: 0x441,\n\t0x20a0: 0x442, 0x20a1: 0x443, 0x20a2: 0x444, 0x20a3: 0x445, 0x20a4: 0x446, 0x20a5: 0x447, 0x20a6: 0x448, 0x20a7: 0x449,\n\t0x20a8: 0x44a, 0x20a9: 0x44b, 0x20aa: 0x44c, 0x20ab: 0x44d, 0x20ac: 0x44e, 0x20ad: 0x44f, 0x20ae: 0x450, 0x20af: 0x451,\n\t0x20b0: 0x452, 0x20b1: 0x453, 0x20b2: 0x454, 0x20b3: 0x455, 0x20b4: 0x456, 0x20b5: 0x457, 0x20b6: 0x458, 0x20b7: 0x459,\n\t0x20b8: 0x45a, 0x20b9: 0x45b, 0x20ba: 0x45c, 0x20bb: 0x45d, 0x20bc: 0x45e, 0x20bd: 0x45f, 0x20be: 0x460, 0x20bf: 0x461,\n\t// Block 0x83, offset 0x20c0\n\t0x20c0: 0x462, 0x20c1: 0x463, 0x20c2: 0x464, 0x20c3: 0x465, 0x20c4: 0x466, 0x20c5: 0x467, 0x20c6: 0x468, 0x20c7: 0x469,\n\t0x20c8: 0x46a, 0x20c9: 0x46b, 0x20ca: 0x46c, 0x20cb: 0x46d, 0x20cc: 0x46e, 0x20cd: 0x46f, 0x20ce: 0x470, 0x20cf: 0x471,\n\t0x20d0: 0x472, 0x20d1: 0x473, 0x20d2: 0x474, 0x20d3: 0x475, 0x20d4: 0x476, 0x20d5: 0x477, 0x20d6: 0x478, 0x20d7: 0x479,\n\t0x20d8: 0x47a, 0x20d9: 0x47b, 0x20da: 0x47c, 0x20db: 0x47d, 0x20dc: 0x47e, 0x20dd: 0x47f, 0x20de: 0x480, 0x20df: 0x481,\n\t0x20e0: 0x482, 0x20e1: 0x483, 0x20e2: 0x484, 0x20e3: 0x485, 0x20e4: 0x486, 0x20e5: 0x487, 0x20e6: 0x488, 0x20e7: 0x489,\n\t0x20e8: 0x48a, 0x20e9: 0x48b, 0x20ea: 0x48c, 0x20eb: 0x48d, 0x20ec: 0x48e, 0x20ed: 0x48f, 0x20ee: 0x490, 0x20ef: 0x491,\n\t0x20f0: 0x492, 0x20f1: 0x493, 0x20f2: 0x494, 0x20f3: 0x495, 0x20f4: 0x496, 0x20f5: 0x497, 0x20f6: 0x498, 0x20f7: 0x499,\n\t0x20f8: 0x49a, 0x20f9: 0x49b, 0x20fa: 0x49c, 0x20fb: 0x49d, 0x20fc: 0x49e, 0x20fd: 0x49f, 0x20fe: 0x4a0, 0x20ff: 0x4a1,\n\t// Block 0x84, offset 0x2100\n\t0x2100: 0x4a2, 0x2101: 0x4a3, 0x2102: 0x4a4, 0x2103: 0x4a5, 0x2104: 0x4a6, 0x2105: 0x4a7, 0x2106: 0x4a8, 0x2107: 0x4a9,\n\t0x2108: 0x4aa, 0x2109: 0x4ab, 0x210a: 0x4ac, 0x210b: 0x4ad, 0x210c: 0x4ae, 0x210d: 0x4af, 0x210e: 0x4b0, 0x210f: 0x4b1,\n\t0x2110: 0x4b2, 0x2111: 0x4b3, 0x2112: 0x4b4, 0x2113: 0x4b5, 0x2114: 0x4b6, 0x2115: 0x4b7, 0x2116: 0x4b8, 0x2117: 0x4b9,\n\t0x2118: 0x4ba, 0x2119: 0x4bb, 0x211a: 0x4bc, 0x211b: 0x4bd, 0x211c: 0x4be, 0x211d: 0x4bf, 0x211e: 0x4c0, 0x211f: 0x4c1,\n\t0x2120: 0x4c2, 0x2121: 0x4c3, 0x2122: 0x4c4, 0x2123: 0x4c5, 0x2124: 0x4c6, 0x2125: 0x4c7, 0x2126: 0x4c8, 0x2127: 0x4c9,\n\t0x2128: 0x4ca, 0x2129: 0x4cb, 0x212a: 0x4cc, 0x212b: 0x4cd, 0x212c: 0x4ce, 0x212d: 0x4cf, 0x212e: 0x4d0, 0x212f: 0x4d1,\n\t0x2130: 0x4d2, 0x2131: 0x4d3, 0x2132: 0x4d4, 0x2133: 0x4d5, 0x2134: 0x4d6, 0x2135: 0x4d7, 0x2136: 0x4d8, 0x2137: 0x4d9,\n\t0x2138: 0x4da, 0x2139: 0x4db, 0x213a: 0x4dc, 0x213c: 0x4dd, 0x213d: 0x4de, 0x213e: 0x4df, 0x213f: 0x4e0,\n\t// Block 0x85, offset 0x2140\n\t0x2140: 0x4e1, 0x2141: 0x4e2, 0x2142: 0x4e3, 0x2143: 0x4e4, 0x2144: 0x4e5, 0x2145: 0x4e6, 0x2146: 0x4e7, 0x2147: 0x4e8,\n\t0x2148: 0x4e9, 0x2149: 0x4ea, 0x214a: 0x4eb, 0x214b: 0x4ec, 0x214c: 0x4ed, 0x214d: 0x4ee, 0x214e: 0x4ef, 0x214f: 0x4f0,\n\t0x2150: 0x4f1, 0x2151: 0x4f2, 0x2152: 0x4f3, 0x2153: 0x4f4, 0x2154: 0x4f5, 0x2155: 0x4f6, 0x2156: 0x4f7, 0x2157: 0x4f8,\n\t0x2158: 0x4f9, 0x2159: 0x4fa, 0x215a: 0x4fb, 0x215b: 0x4fc, 0x215c: 0x4fd, 0x215d: 0x4fe, 0x215e: 0x4ff, 0x215f: 0x500,\n\t0x2160: 0x501, 0x2161: 0x502, 0x2162: 0x503, 0x2163: 0x504, 0x2164: 0x505, 0x2165: 0x506, 0x2166: 0x507, 0x2167: 0x508,\n\t0x2168: 0x509, 0x2169: 0x50a, 0x216a: 0x50b, 0x216b: 0x50c, 0x216c: 0x50d, 0x216d: 0x50e, 0x216e: 0x50f,\n\t0x2170: 0x510, 0x2171: 0x511, 0x2172: 0x512, 0x2173: 0x513, 0x2174: 0x514, 0x2175: 0x515, 0x2176: 0x516, 0x2177: 0x517,\n\t0x2178: 0x518, 0x2179: 0x519, 0x217a: 0x51a, 0x217b: 0x51b, 0x217c: 0x51c, 0x217d: 0x51d, 0x217e: 0x51e, 0x217f: 0x51f,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x520, 0x2181: 0x521, 0x2182: 0x522, 0x2183: 0x523, 0x2184: 0x524, 0x2185: 0x525, 0x2186: 0x526, 0x2187: 0x527,\n\t0x2188: 0x528, 0x2189: 0x529, 0x218a: 0x52a, 0x218b: 0x52b, 0x218c: 0x52c, 0x218d: 0x52d, 0x218e: 0x52e, 0x218f: 0x52f,\n\t0x2190: 0x530, 0x2191: 0x531, 0x2195: 0x532, 0x2196: 0x533, 0x2197: 0x534,\n\t0x2198: 0x535, 0x2199: 0x536, 0x219a: 0x537, 0x219b: 0x538, 0x219c: 0x539, 0x219d: 0x53a, 0x219e: 0x53b, 0x219f: 0x53c,\n\t0x21a0: 0x53d, 0x21a1: 0x53e, 0x21a2: 0x53f, 0x21a3: 0x540, 0x21a4: 0x541, 0x21a5: 0x542, 0x21a6: 0x543, 0x21a7: 0x544,\n\t0x21a8: 0x545, 0x21a9: 0x546, 0x21aa: 0x547, 0x21ab: 0x548, 0x21ac: 0x549, 0x21ad: 0x54a, 0x21ae: 0x54b, 0x21af: 0x54c,\n\t0x21b0: 0x54d, 0x21b1: 0x54e, 0x21b3: 0x54f, 0x21b4: 0x550, 0x21b5: 0x551, 0x21b6: 0x552, 0x21b7: 0x553,\n\t0x21b8: 0x554, 0x21b9: 0x555, 0x21ba: 0x556, 0x21bb: 0x557, 0x21bc: 0x558, 0x21bd: 0x559, 0x21be: 0x55a,\n\t// Block 0x87, offset 0x21c0\n\t0x21e4: 0x55b, 0x21e5: 0x55c, 0x21e6: 0x55d, 0x21e7: 0x55e,\n\t0x21e8: 0x55f, 0x21e9: 0x560, 0x21ea: 0x561, 0x21eb: 0x562, 0x21ec: 0x103, 0x21ed: 0x104, 0x21ee: 0x105, 0x21ef: 0x106,\n\t0x21f0: 0x107, 0x21f1: 0x108, 0x21f2: 0x109, 0x21f3: 0x10a, 0x21f4: 0x10b, 0x21f5: 0x10c, 0x21f6: 0x10d, 0x21f7: 0x10e,\n\t0x21f8: 0x10f, 0x21f9: 0x110, 0x21fa: 0x111, 0x21fb: 0x112, 0x21fc: 0x113, 0x21fd: 0x114, 0x21fe: 0x115, 0x21ff: 0x116,\n\t// Block 0x88, offset 0x2200\n\t0x2200: 0x18b, 0x2201: 0x18c, 0x2202: 0x18d, 0x2203: 0x18e, 0x2204: 0x18f, 0x2205: 0x190, 0x2206: 0x191, 0x2207: 0x192,\n\t0x2208: 0x193, 0x2209: 0x563, 0x220c: 0x195, 0x220d: 0x196, 0x220e: 0x197, 0x220f: 0x198,\n\t0x2210: 0x199, 0x2211: 0x19a, 0x2212: 0x19b, 0x2213: 0x19c, 0x2214: 0x19d, 0x2215: 0x19e, 0x2217: 0x19f,\n\t0x2218: 0x1a0, 0x2219: 0x1a1, 0x221a: 0x1a2, 0x221b: 0x1a3, 0x221c: 0x1a4, 0x221d: 0x1a5,\n\t// Block 0x89, offset 0x2240\n\t0x2260: 0x564, 0x2261: 0x565, 0x2262: 0x566, 0x2263: 0x567, 0x2264: 0x568, 0x2265: 0x569, 0x2266: 0x56a, 0x2267: 0x56b,\n\t0x2268: 0x56c,\n\t// Block 0x8a, offset 0x2280\n\t0x2290: 0x09, 0x2291: 0x0a, 0x2292: 0x0b, 0x2293: 0x0c, 0x2296: 0x0d,\n\t0x229b: 0x0e, 0x229d: 0x0f, 0x229e: 0x10, 0x229f: 0x86,\n\t0x22af: 0x87,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c2: 0x01, 0x22c3: 0x02, 0x22c4: 0x03, 0x22c5: 0x04, 0x22c6: 0x05, 0x22c7: 0x06,\n\t0x22c8: 0x07, 0x22c9: 0x08, 0x22ca: 0x09, 0x22cb: 0x0a, 0x22cc: 0x0b, 0x22cd: 0x0c, 0x22ce: 0x0d, 0x22cf: 0x0e,\n\t0x22d0: 0x0f, 0x22d1: 0x10, 0x22d2: 0x11, 0x22d3: 0x12, 0x22d4: 0x13, 0x22d5: 0x14, 0x22d6: 0x15, 0x22d7: 0x16,\n\t0x22d8: 0x17, 0x22d9: 0x18, 0x22da: 0x19, 0x22db: 0x1a, 0x22dc: 0x1b, 0x22dd: 0x1c, 0x22de: 0x1d, 0x22df: 0x1e,\n\t0x22e0: 0x01, 0x22e1: 0x02, 0x22e2: 0x03, 0x22e3: 0x7e, 0x22e4: 0x7f, 0x22e5: 0x80, 0x22e6: 0x81, 0x22e7: 0x82,\n\t0x22e8: 0x83, 0x22e9: 0x84, 0x22ea: 0x06, 0x22ed: 0x07, 0x22ef: 0x85,\n\t0x22f0: 0x88, 0x22f3: 0x15,\n\t// Block 0x8c, offset 0x2300\n\t0x2320: 0x1f, 0x2321: 0x20, 0x2322: 0x21, 0x2323: 0x22, 0x2324: 0x56d, 0x2325: 0x24, 0x2326: 0x25, 0x2327: 0x26,\n\t0x2328: 0x27, 0x2329: 0x28, 0x232a: 0x29, 0x232b: 0x2a, 0x232c: 0x2b, 0x232d: 0x2c, 0x232e: 0x2d, 0x232f: 0x2e,\n\t0x2330: 0x2f, 0x2331: 0x30, 0x2332: 0x31, 0x2333: 0x32, 0x2334: 0x33, 0x2335: 0x34, 0x2336: 0x35, 0x2337: 0x36,\n\t0x2338: 0x37, 0x2339: 0x38, 0x233a: 0x39, 0x233b: 0x3a, 0x233c: 0x3b, 0x233d: 0x3c, 0x233e: 0x3d, 0x233f: 0x3e,\n\t// Block 0x8d, offset 0x2340\n\t0x2342: 0x01, 0x2343: 0x02, 0x2344: 0x03, 0x2345: 0x04, 0x2346: 0x05, 0x2347: 0x06,\n\t0x2348: 0x07, 0x2349: 0x08, 0x234a: 0x09, 0x234b: 0x0a, 0x234c: 0x0b, 0x234d: 0x0c, 0x234e: 0x0d, 0x234f: 0x0e,\n\t0x2350: 0x0f, 0x2351: 0x10, 0x2352: 0x11, 0x2353: 0x12, 0x2354: 0x13, 0x2355: 0x14, 0x2356: 0x15, 0x2357: 0x16,\n\t0x2358: 0x17, 0x2359: 0x18, 0x235a: 0x19, 0x235b: 0x1a, 0x235c: 0x1b, 0x235d: 0x1c, 0x235e: 0x1d, 0x235f: 0x1e,\n\t0x2360: 0x8a, 0x2361: 0x02, 0x2362: 0x03, 0x2363: 0x04, 0x2364: 0x05,\n\t0x236a: 0x06, 0x236d: 0x07, 0x236f: 0x08,\n\t0x2370: 0x13, 0x2373: 0x15,\n\t// Block 0x8e, offset 0x2380\n\t0x2382: 0x01, 0x2383: 0x02, 0x2384: 0x03, 0x2385: 0x04, 0x2386: 0x570, 0x2387: 0x06,\n\t0x2388: 0x07, 0x2389: 0x571, 0x238a: 0x09, 0x238b: 0x0a, 0x238c: 0x0b, 0x238d: 0x0c, 0x238e: 0x0d, 0x238f: 0x0e,\n\t0x2390: 0x0f, 0x2391: 0x10, 0x2392: 0x11, 0x2393: 0x12, 0x2394: 0x13, 0x2395: 0x14, 0x2396: 0x15, 0x2397: 0x16,\n\t0x2398: 0x17, 0x2399: 0x18, 0x239a: 0x19, 0x239b: 0x1a, 0x239c: 0x1b, 0x239d: 0x1c, 0x239e: 0x1d, 0x239f: 0x1e,\n\t0x23a0: 0x01, 0x23a1: 0x02, 0x23a2: 0x03, 0x23a3: 0x04, 0x23a4: 0x05,\n\t0x23aa: 0x06, 0x23ad: 0x07, 0x23af: 0x08,\n\t0x23b0: 0x13, 0x23b3: 0x15,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x3f, 0x23c1: 0x40, 0x23c2: 0x41, 0x23c3: 0x42, 0x23c4: 0x43, 0x23c5: 0x44, 0x23c6: 0x45, 0x23c7: 0x46,\n\t0x23c8: 0x47, 0x23c9: 0x48, 0x23ca: 0x49, 0x23cb: 0x4a, 0x23cc: 0x4b, 0x23cd: 0x4c, 0x23ce: 0x4d, 0x23cf: 0x4e,\n\t0x23d0: 0x4f, 0x23d1: 0x50, 0x23d2: 0x51, 0x23d3: 0x52, 0x23d4: 0x53, 0x23d5: 0x54, 0x23d6: 0x55, 0x23d7: 0x56,\n\t0x23d8: 0x57, 0x23d9: 0x58, 0x23da: 0x59, 0x23db: 0x5a, 0x23dc: 0x5b, 0x23dd: 0x5c, 0x23de: 0x5d, 0x23df: 0x5e,\n\t0x23e0: 0x5f, 0x23e1: 0x60, 0x23e2: 0x61, 0x23e3: 0x62, 0x23e4: 0x63, 0x23e5: 0x64, 0x23e6: 0x65, 0x23e7: 0x66,\n\t0x23e8: 0x67, 0x23e9: 0x68, 0x23ea: 0x69, 0x23ec: 0x6a, 0x23ed: 0x6b, 0x23ee: 0x6c, 0x23ef: 0x6d,\n\t0x23f0: 0x6e, 0x23f1: 0x6f, 0x23f3: 0x70, 0x23f4: 0x71, 0x23f5: 0x72, 0x23f6: 0x73, 0x23f7: 0x74,\n\t0x23f8: 0x75, 0x23f9: 0x57a, 0x23fa: 0x57b, 0x23fb: 0x57c, 0x23fc: 0x79, 0x23fd: 0x7a, 0x23fe: 0x7b, 0x23ff: 0x7c,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x7d, 0x2401: 0x7e, 0x2402: 0x7f, 0x2403: 0x80, 0x2404: 0x81, 0x2405: 0x82, 0x2406: 0x83, 0x2407: 0x84,\n\t0x2408: 0x85, 0x2409: 0x86, 0x240a: 0x87, 0x240b: 0x88, 0x240c: 0x89, 0x240d: 0x8a, 0x240e: 0x8b, 0x240f: 0x8c,\n\t0x2410: 0x8d, 0x2411: 0x8e, 0x2412: 0x57d, 0x2413: 0x90, 0x2414: 0x91, 0x2415: 0x92, 0x2416: 0x93, 0x2417: 0x94,\n\t0x2418: 0x95, 0x2419: 0x96, 0x241a: 0x97, 0x241b: 0x98, 0x241c: 0x99, 0x241d: 0x9a, 0x241e: 0x9b, 0x241f: 0x9c,\n\t0x2420: 0x9d, 0x2421: 0x9e, 0x2422: 0x9f, 0x2423: 0xa0, 0x2424: 0xa1, 0x2425: 0xa2, 0x2426: 0xa3, 0x2427: 0xa4,\n\t0x2428: 0xa5, 0x2429: 0xa6, 0x242a: 0xa7, 0x242b: 0xa8, 0x242c: 0xa9, 0x242d: 0xaa,\n\t0x2430: 0xab, 0x2431: 0xac, 0x2432: 0xad, 0x2433: 0xae, 0x2434: 0xaf, 0x2435: 0xb0, 0x2436: 0xb1, 0x2437: 0xb2,\n\t0x2438: 0xb3, 0x243a: 0xb4, 0x243b: 0xb5, 0x243c: 0xb6, 0x243d: 0xb7, 0x243e: 0xb8, 0x243f: 0xb9,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0xba, 0x2441: 0xbb, 0x2442: 0xbc, 0x2443: 0xbd, 0x2444: 0xbe, 0x2445: 0xbf, 0x2446: 0xc0, 0x2447: 0xc1,\n\t0x2448: 0xc2, 0x2449: 0xc3, 0x244a: 0xc4, 0x244b: 0xc5, 0x244c: 0xc6, 0x244d: 0xc7, 0x244e: 0xc8, 0x244f: 0x57e,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x18b, 0x2481: 0x18c, 0x2482: 0x18d, 0x2483: 0x18e, 0x2484: 0x57f, 0x2485: 0x190, 0x2486: 0x191, 0x2487: 0x192,\n\t0x2488: 0x193, 0x2489: 0x194, 0x248c: 0x195, 0x248d: 0x196, 0x248e: 0x197, 0x248f: 0x198,\n\t0x2490: 0x199, 0x2491: 0x19a, 0x2492: 0x19b, 0x2493: 0x19c, 0x2494: 0x19d, 0x2495: 0x19e, 0x2497: 0x19f,\n\t0x2498: 0x1a0, 0x2499: 0x1a1, 0x249a: 0x1a2, 0x249b: 0x1a3, 0x249c: 0x1a4, 0x249d: 0x1a5,\n\t// Block 0x93, offset 0x24c0\n\t0x24d0: 0x09, 0x24d1: 0x0a, 0x24d2: 0x0b, 0x24d3: 0x0c, 0x24d6: 0x0d,\n\t0x24db: 0x0e, 0x24dd: 0x0f, 0x24de: 0x10, 0x24df: 0x90,\n\t0x24ef: 0x12,\n\t// Block 0x94, offset 0x2500\n\t0x2502: 0x01, 0x2503: 0x574, 0x2504: 0x575, 0x2505: 0x576, 0x2506: 0x05, 0x2507: 0x577,\n\t0x2508: 0x578, 0x2509: 0x08, 0x250a: 0x09, 0x250b: 0x0a, 0x250c: 0x579, 0x250d: 0x0c, 0x250e: 0x0d, 0x250f: 0x0e,\n\t0x2510: 0x0f, 0x2511: 0x10, 0x2512: 0x11, 0x2513: 0x12, 0x2514: 0x13, 0x2515: 0x14, 0x2516: 0x15, 0x2517: 0x16,\n\t0x2518: 0x17, 0x2519: 0x18, 0x251a: 0x19, 0x251b: 0x1a, 0x251c: 0x1b, 0x251d: 0x1c, 0x251e: 0x1d, 0x251f: 0x1e,\n\t0x2520: 0x01, 0x2521: 0x8d, 0x2522: 0x8e, 0x2523: 0x8f, 0x2524: 0x05,\n\t0x252a: 0x06, 0x252d: 0x07, 0x252f: 0x08,\n\t0x2530: 0x91, 0x2533: 0x15,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x3f, 0x2541: 0x40, 0x2542: 0x41, 0x2543: 0x42, 0x2544: 0x43, 0x2545: 0x44, 0x2546: 0x45, 0x2547: 0x46,\n\t0x2548: 0x47, 0x2549: 0x48, 0x254a: 0x49, 0x254b: 0x4a, 0x254c: 0x4b, 0x254d: 0x4c, 0x254e: 0x4d, 0x254f: 0x4e,\n\t0x2550: 0x4f, 0x2551: 0x50, 0x2552: 0x51, 0x2553: 0x52, 0x2554: 0x53, 0x2555: 0x54, 0x2556: 0x55, 0x2557: 0x56,\n\t0x2558: 0x57, 0x2559: 0x58, 0x255a: 0x59, 0x255b: 0x5a, 0x255c: 0x5b, 0x255d: 0x5c, 0x255e: 0x5d, 0x255f: 0x5e,\n\t0x2560: 0x5f, 0x2561: 0x60, 0x2562: 0x61, 0x2563: 0x62, 0x2564: 0x63, 0x2565: 0x64, 0x2566: 0x65, 0x2567: 0x66,\n\t0x2568: 0x67, 0x2569: 0x68, 0x256a: 0x69, 0x256c: 0x6a, 0x256d: 0x6b, 0x256e: 0x6c, 0x256f: 0x6d,\n\t0x2570: 0x6e, 0x2571: 0x6f, 0x2573: 0x70, 0x2574: 0x71, 0x2575: 0x72, 0x2576: 0x73, 0x2577: 0x74,\n\t0x2578: 0x75, 0x2579: 0x584, 0x257a: 0x77, 0x257b: 0x78, 0x257c: 0x79, 0x257d: 0x7a, 0x257e: 0x7b, 0x257f: 0x7c,\n\t// Block 0x96, offset 0x2580\n\t0x2582: 0x01, 0x2583: 0x02, 0x2584: 0x582, 0x2585: 0x583, 0x2586: 0x05, 0x2587: 0x06,\n\t0x2588: 0x07, 0x2589: 0x08, 0x258a: 0x09, 0x258b: 0x0a, 0x258c: 0x0b, 0x258d: 0x0c, 0x258e: 0x0d, 0x258f: 0x0e,\n\t0x2590: 0x0f, 0x2591: 0x10, 0x2592: 0x11, 0x2593: 0x12, 0x2594: 0x13, 0x2595: 0x14, 0x2596: 0x15, 0x2597: 0x16,\n\t0x2598: 0x17, 0x2599: 0x18, 0x259a: 0x19, 0x259b: 0x1a, 0x259c: 0x1b, 0x259d: 0x1c, 0x259e: 0x1d, 0x259f: 0x1e,\n\t0x25a0: 0x01, 0x25a1: 0x93, 0x25a2: 0x03, 0x25a3: 0x04, 0x25a4: 0x05,\n\t0x25aa: 0x06, 0x25ad: 0x07, 0x25af: 0x08,\n\t0x25b0: 0x13, 0x25b3: 0x15,\n\t// Block 0x97, offset 0x25c0\n\t0x25e0: 0x1f, 0x25e1: 0x20, 0x25e2: 0x21, 0x25e3: 0x22, 0x25e4: 0x23, 0x25e5: 0x24, 0x25e6: 0x25, 0x25e7: 0x26,\n\t0x25e8: 0x27, 0x25e9: 0x28, 0x25ea: 0x29, 0x25eb: 0x2a, 0x25ec: 0x2b, 0x25ed: 0x2c, 0x25ee: 0x2d, 0x25ef: 0x2e,\n\t0x25f0: 0x2f, 0x25f1: 0x30, 0x25f2: 0x31, 0x25f3: 0x32, 0x25f4: 0x585, 0x25f5: 0x586, 0x25f6: 0x35, 0x25f7: 0x36,\n\t0x25f8: 0x37, 0x25f9: 0x38, 0x25fa: 0x39, 0x25fb: 0x3a, 0x25fc: 0x3b, 0x25fd: 0x3c, 0x25fe: 0x3d, 0x25ff: 0x3e,\n\t// Block 0x98, offset 0x2600\n\t0x2602: 0x01, 0x2603: 0x02, 0x2604: 0x03, 0x2605: 0x04, 0x2606: 0x05, 0x2607: 0x06,\n\t0x2608: 0x07, 0x2609: 0x08, 0x260a: 0x09, 0x260b: 0x0a, 0x260c: 0x0b, 0x260d: 0x0c, 0x260e: 0x0d, 0x260f: 0x0e,\n\t0x2610: 0x0f, 0x2611: 0x10, 0x2612: 0x11, 0x2613: 0x12, 0x2614: 0x13, 0x2615: 0x14, 0x2616: 0x15, 0x2617: 0x16,\n\t0x2618: 0x17, 0x2619: 0x18, 0x261a: 0x19, 0x261b: 0x1a, 0x261c: 0x1b, 0x261d: 0x1c, 0x261e: 0x1d, 0x261f: 0x1e,\n\t0x2620: 0x95, 0x2621: 0x02, 0x2622: 0x03, 0x2623: 0x04, 0x2624: 0x05,\n\t0x262a: 0x06, 0x262d: 0x07, 0x262f: 0x08,\n\t0x2630: 0x13, 0x2633: 0x15,\n\t// Block 0x99, offset 0x2640\n\t0x2660: 0x1f, 0x2661: 0x20, 0x2662: 0x21, 0x2663: 0x22, 0x2664: 0x587, 0x2665: 0x24, 0x2666: 0x25, 0x2667: 0x26,\n\t0x2668: 0x27, 0x2669: 0x28, 0x266a: 0x29, 0x266b: 0x2a, 0x266c: 0x2b, 0x266d: 0x2c, 0x266e: 0x2d, 0x266f: 0x2e,\n\t0x2670: 0x2f, 0x2671: 0x30, 0x2672: 0x31, 0x2673: 0x32, 0x2674: 0x33, 0x2675: 0x34, 0x2676: 0x35, 0x2677: 0x36,\n\t0x2678: 0x37, 0x2679: 0x38, 0x267a: 0x39, 0x267b: 0x3a, 0x267c: 0x3b, 0x267d: 0x3c, 0x267e: 0x3d, 0x267f: 0x3e,\n\t// Block 0x9a, offset 0x2680\n\t0x2682: 0x01, 0x2683: 0x02, 0x2684: 0x03, 0x2685: 0x04, 0x2686: 0x05, 0x2687: 0x06,\n\t0x2688: 0x07, 0x2689: 0x08, 0x268a: 0x09, 0x268b: 0x0a, 0x268c: 0x0b, 0x268d: 0x0c, 0x268e: 0x0d, 0x268f: 0x0e,\n\t0x2690: 0x0f, 0x2691: 0x10, 0x2692: 0x11, 0x2693: 0x12, 0x2694: 0x13, 0x2695: 0x14, 0x2696: 0x15, 0x2697: 0x16,\n\t0x2698: 0x17, 0x2699: 0x18, 0x269a: 0x19, 0x269b: 0x1a, 0x269c: 0x1b, 0x269d: 0x1c, 0x269e: 0x1d, 0x269f: 0x1e,\n\t0x26a0: 0x97, 0x26a1: 0x02, 0x26a2: 0x03, 0x26a3: 0x04, 0x26a4: 0x05,\n\t0x26aa: 0x06, 0x26ad: 0x07, 0x26af: 0x08,\n\t0x26b0: 0x13, 0x26b3: 0x15,\n\t// Block 0x9b, offset 0x26c0\n\t0x26c0: 0x7d, 0x26c1: 0x7e, 0x26c2: 0x7f, 0x26c3: 0x80, 0x26c4: 0x58c, 0x26c5: 0x82, 0x26c6: 0x83, 0x26c7: 0x84,\n\t0x26c8: 0x85, 0x26c9: 0x86, 0x26ca: 0x87, 0x26cb: 0x88, 0x26cc: 0x89, 0x26cd: 0x8a, 0x26ce: 0x8b, 0x26cf: 0x8c,\n\t0x26d0: 0x8d, 0x26d1: 0x8e, 0x26d2: 0x8f, 0x26d3: 0x90, 0x26d4: 0x91, 0x26d5: 0x92, 0x26d6: 0x93, 0x26d7: 0x94,\n\t0x26d8: 0x95, 0x26d9: 0x96, 0x26da: 0x97, 0x26db: 0x98, 0x26dc: 0x99, 0x26dd: 0x9a, 0x26de: 0x9b, 0x26df: 0x9c,\n\t0x26e0: 0x9d, 0x26e1: 0x9e, 0x26e2: 0x9f, 0x26e3: 0xa0, 0x26e4: 0xa1, 0x26e5: 0xa2, 0x26e6: 0xa3, 0x26e7: 0xa4,\n\t0x26e8: 0xa5, 0x26e9: 0xa6, 0x26ea: 0xa7, 0x26eb: 0xa8, 0x26ec: 0xa9, 0x26ed: 0xaa,\n\t0x26f0: 0xab, 0x26f1: 0xac, 0x26f2: 0xad, 0x26f3: 0xae, 0x26f4: 0xaf, 0x26f5: 0xb0, 0x26f6: 0xb1, 0x26f7: 0xb2,\n\t0x26f8: 0xb3, 0x26fa: 0xb4, 0x26fb: 0xb5, 0x26fc: 0xb6, 0x26fd: 0xb7, 0x26fe: 0xb8, 0x26ff: 0xb9,\n\t// Block 0x9c, offset 0x2700\n\t0x2700: 0xcb, 0x2701: 0xcc, 0x2702: 0xcd, 0x2703: 0xce, 0x2704: 0xcf, 0x2705: 0xd0, 0x2706: 0xd1, 0x2707: 0xd2,\n\t0x2708: 0xd3, 0x2709: 0xd4, 0x270a: 0xd5, 0x270b: 0xd6, 0x270c: 0xd7, 0x270d: 0xd8, 0x270e: 0xd9, 0x270f: 0xda,\n\t0x2710: 0xdb, 0x2711: 0xdc, 0x2712: 0xdd, 0x2713: 0xde, 0x2714: 0xdf, 0x2715: 0xe0, 0x2716: 0xe1, 0x2717: 0xe2,\n\t0x2718: 0xe3, 0x2719: 0xe4, 0x271a: 0xe5, 0x271b: 0xe6, 0x271c: 0xe7, 0x271d: 0xe8, 0x271e: 0xe9, 0x271f: 0x58d,\n\t0x2720: 0xeb, 0x2721: 0xec, 0x2722: 0xed, 0x2723: 0xee, 0x2724: 0xef, 0x2725: 0xf0, 0x2726: 0xf1, 0x2727: 0xf2,\n\t0x2728: 0xf3, 0x2729: 0xf4, 0x272a: 0xf5, 0x272b: 0xf6, 0x272c: 0xf7, 0x272f: 0xf8,\n\t// Block 0x9d, offset 0x2740\n\t0x2742: 0x01, 0x2743: 0x02, 0x2744: 0x58a, 0x2745: 0x58b, 0x2746: 0x05, 0x2747: 0x06,\n\t0x2748: 0x07, 0x2749: 0x08, 0x274a: 0x09, 0x274b: 0x0a, 0x274c: 0x0b, 0x274d: 0x0c, 0x274e: 0x0d, 0x274f: 0x0e,\n\t0x2750: 0x0f, 0x2751: 0x10, 0x2752: 0x11, 0x2753: 0x12, 0x2754: 0x13, 0x2755: 0x14, 0x2756: 0x15, 0x2757: 0x16,\n\t0x2758: 0x17, 0x2759: 0x18, 0x275a: 0x19, 0x275b: 0x1a, 0x275c: 0x1b, 0x275d: 0x1c, 0x275e: 0x1d, 0x275f: 0x1e,\n\t0x2760: 0x01, 0x2761: 0x02, 0x2762: 0x99, 0x2763: 0x04, 0x2764: 0x05,\n\t0x276a: 0x9a, 0x276d: 0x07, 0x276f: 0x08,\n\t0x2770: 0x13, 0x2773: 0x15,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x58e, 0x2781: 0x58f, 0x2782: 0x590, 0x2783: 0x42, 0x2784: 0x43, 0x2785: 0x44, 0x2786: 0x45, 0x2787: 0x46,\n\t0x2788: 0x47, 0x2789: 0x48, 0x278a: 0x49, 0x278b: 0x4a, 0x278c: 0x4b, 0x278d: 0x4c, 0x278e: 0x4d, 0x278f: 0x4e,\n\t0x2790: 0x4f, 0x2791: 0x50, 0x2792: 0x51, 0x2793: 0x52, 0x2794: 0x53, 0x2795: 0x54, 0x2796: 0x55, 0x2797: 0x56,\n\t0x2798: 0x57, 0x2799: 0x58, 0x279a: 0x59, 0x279b: 0x5a, 0x279c: 0x5b, 0x279d: 0x5c, 0x279e: 0x5d, 0x279f: 0x5e,\n\t0x27a0: 0x5f, 0x27a1: 0x60, 0x27a2: 0x61, 0x27a3: 0x62, 0x27a4: 0x63, 0x27a5: 0x64, 0x27a6: 0x65, 0x27a7: 0x66,\n\t0x27a8: 0x67, 0x27a9: 0x68, 0x27aa: 0x69, 0x27ac: 0x6a, 0x27ad: 0x6b, 0x27ae: 0x6c, 0x27af: 0x6d,\n\t0x27b0: 0x6e, 0x27b1: 0x6f, 0x27b3: 0x70, 0x27b4: 0x71, 0x27b5: 0x72, 0x27b6: 0x73, 0x27b7: 0x74,\n\t0x27b8: 0x75, 0x27b9: 0x76, 0x27ba: 0x77, 0x27bb: 0x78, 0x27bc: 0x79, 0x27bd: 0x7a, 0x27be: 0x7b, 0x27bf: 0x7c,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c2: 0x01, 0x27c3: 0x02, 0x27c4: 0x03, 0x27c5: 0x04, 0x27c6: 0x05, 0x27c7: 0x06,\n\t0x27c8: 0x07, 0x27c9: 0x08, 0x27ca: 0x09, 0x27cb: 0x0a, 0x27cc: 0x0b, 0x27cd: 0x0c, 0x27ce: 0x0d, 0x27cf: 0x0e,\n\t0x27d0: 0x0f, 0x27d1: 0x10, 0x27d2: 0x11, 0x27d3: 0x12, 0x27d4: 0x13, 0x27d5: 0x14, 0x27d6: 0x15, 0x27d7: 0x16,\n\t0x27d8: 0x17, 0x27d9: 0x18, 0x27da: 0x19, 0x27db: 0x1a, 0x27dc: 0x1b, 0x27dd: 0x1c, 0x27de: 0x1d, 0x27df: 0x1e,\n\t0x27e0: 0x01, 0x27e1: 0x9c, 0x27e2: 0x03, 0x27e3: 0x04, 0x27e4: 0x05,\n\t0x27ea: 0x06, 0x27ed: 0x07, 0x27ef: 0x08,\n\t0x27f0: 0x13, 0x27f3: 0x15,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x3f, 0x2801: 0x40, 0x2802: 0x41, 0x2803: 0x42, 0x2804: 0x43, 0x2805: 0x44, 0x2806: 0x45, 0x2807: 0x46,\n\t0x2808: 0x47, 0x2809: 0x48, 0x280a: 0x49, 0x280b: 0x4a, 0x280c: 0x4b, 0x280d: 0x4c, 0x280e: 0x4d, 0x280f: 0x4e,\n\t0x2810: 0x4f, 0x2811: 0x50, 0x2812: 0x51, 0x2813: 0x52, 0x2814: 0x53, 0x2815: 0x54, 0x2816: 0x55, 0x2817: 0x56,\n\t0x2818: 0x57, 0x2819: 0x58, 0x281a: 0x59, 0x281b: 0x5a, 0x281c: 0x5b, 0x281d: 0x5c, 0x281e: 0x5d, 0x281f: 0x5e,\n\t0x2820: 0x5f, 0x2821: 0x60, 0x2822: 0x61, 0x2823: 0x62, 0x2824: 0x63, 0x2825: 0x64, 0x2826: 0x65, 0x2827: 0x66,\n\t0x2828: 0x67, 0x2829: 0x68, 0x282a: 0x69, 0x282c: 0x6a, 0x282d: 0x6b, 0x282e: 0x6c, 0x282f: 0x6d,\n\t0x2830: 0x6e, 0x2831: 0x6f, 0x2833: 0x70, 0x2834: 0x71, 0x2835: 0x72, 0x2836: 0x73, 0x2837: 0x74,\n\t0x2838: 0x75, 0x2839: 0x1f2, 0x283a: 0x597, 0x283b: 0x598, 0x283c: 0x79, 0x283d: 0x7a, 0x283e: 0x7b, 0x283f: 0x7c,\n\t// Block 0xa1, offset 0x2840\n\t0x2842: 0x01, 0x2843: 0x595, 0x2844: 0x03, 0x2845: 0x596, 0x2846: 0x05, 0x2847: 0x06,\n\t0x2848: 0x07, 0x2849: 0x08, 0x284a: 0x09, 0x284b: 0x0a, 0x284c: 0x0b, 0x284d: 0x0c, 0x284e: 0x0d, 0x284f: 0x0e,\n\t0x2850: 0x0f, 0x2851: 0x10, 0x2852: 0x11, 0x2853: 0x12, 0x2854: 0x13, 0x2855: 0x14, 0x2856: 0x15, 0x2857: 0x16,\n\t0x2858: 0x17, 0x2859: 0x18, 0x285a: 0x19, 0x285b: 0x1a, 0x285c: 0x1b, 0x285d: 0x1c, 0x285e: 0x1d, 0x285f: 0x1e,\n\t0x2860: 0x01, 0x2861: 0x9e, 0x2862: 0x03, 0x2863: 0x04, 0x2864: 0x05,\n\t0x286a: 0x06, 0x286d: 0x07, 0x286f: 0x08,\n\t0x2870: 0x13, 0x2873: 0x15,\n\t// Block 0xa2, offset 0x2880\n\t0x28a0: 0x1f, 0x28a1: 0x20, 0x28a2: 0x21, 0x28a3: 0x22, 0x28a4: 0x23, 0x28a5: 0x24, 0x28a6: 0x25, 0x28a7: 0x26,\n\t0x28a8: 0x27, 0x28a9: 0x28, 0x28aa: 0x29, 0x28ab: 0x2a, 0x28ac: 0x59b, 0x28ad: 0x59c, 0x28ae: 0x2d, 0x28af: 0x2e,\n\t0x28b0: 0x2f, 0x28b1: 0x30, 0x28b2: 0x31, 0x28b3: 0x32, 0x28b4: 0x33, 0x28b5: 0x34, 0x28b6: 0x35, 0x28b7: 0x36,\n\t0x28b8: 0x37, 0x28b9: 0x38, 0x28ba: 0x39, 0x28bb: 0x3a, 0x28bc: 0x3b, 0x28bd: 0x3c, 0x28be: 0x3d, 0x28bf: 0x3e,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c2: 0x01, 0x28c3: 0x02, 0x28c4: 0x03, 0x28c5: 0x04, 0x28c6: 0x05, 0x28c7: 0x06,\n\t0x28c8: 0x07, 0x28c9: 0x08, 0x28ca: 0x09, 0x28cb: 0x0a, 0x28cc: 0x0b, 0x28cd: 0x0c, 0x28ce: 0x0d, 0x28cf: 0x0e,\n\t0x28d0: 0x0f, 0x28d1: 0x10, 0x28d2: 0x11, 0x28d3: 0x12, 0x28d4: 0x13, 0x28d5: 0x14, 0x28d6: 0x15, 0x28d7: 0x16,\n\t0x28d8: 0x17, 0x28d9: 0x18, 0x28da: 0x19, 0x28db: 0x1a, 0x28dc: 0x1b, 0x28dd: 0x1c, 0x28de: 0x1d, 0x28df: 0x1e,\n\t0x28e0: 0xa0, 0x28e1: 0x02, 0x28e2: 0x03, 0x28e3: 0x04, 0x28e4: 0x05,\n\t0x28ea: 0x06, 0x28ed: 0x07, 0x28ef: 0x08,\n\t0x28f0: 0x13, 0x28f3: 0x15,\n\t// Block 0xa4, offset 0x2900\n\t0x2920: 0x1f, 0x2921: 0x20, 0x2922: 0x21, 0x2923: 0x22, 0x2924: 0x23, 0x2925: 0x24, 0x2926: 0x25, 0x2927: 0x26,\n\t0x2928: 0x59d, 0x2929: 0x59e, 0x292a: 0x29, 0x292b: 0x2a, 0x292c: 0x2b, 0x292d: 0x2c, 0x292e: 0x2d, 0x292f: 0x2e,\n\t0x2930: 0x2f, 0x2931: 0x30, 0x2932: 0x31, 0x2933: 0x32, 0x2934: 0x33, 0x2935: 0x34, 0x2936: 0x35, 0x2937: 0x36,\n\t0x2938: 0x37, 0x2939: 0x38, 0x293a: 0x39, 0x293b: 0x3a, 0x293c: 0x3b, 0x293d: 0x3c, 0x293e: 0x3d, 0x293f: 0x3e,\n\t// Block 0xa5, offset 0x2940\n\t0x2942: 0x01, 0x2943: 0x02, 0x2944: 0x03, 0x2945: 0x04, 0x2946: 0x05, 0x2947: 0x06,\n\t0x2948: 0x07, 0x2949: 0x08, 0x294a: 0x09, 0x294b: 0x0a, 0x294c: 0x0b, 0x294d: 0x0c, 0x294e: 0x0d, 0x294f: 0x0e,\n\t0x2950: 0x0f, 0x2951: 0x10, 0x2952: 0x11, 0x2953: 0x12, 0x2954: 0x13, 0x2955: 0x14, 0x2956: 0x15, 0x2957: 0x16,\n\t0x2958: 0x17, 0x2959: 0x18, 0x295a: 0x19, 0x295b: 0x1a, 0x295c: 0x1b, 0x295d: 0x1c, 0x295e: 0x1d, 0x295f: 0x1e,\n\t0x2960: 0xa2, 0x2961: 0x02, 0x2962: 0x03, 0x2963: 0x04, 0x2964: 0x05,\n\t0x296a: 0x06, 0x296d: 0x07, 0x296f: 0x08,\n\t0x2970: 0x13, 0x2973: 0x15,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x3f, 0x2981: 0x40, 0x2982: 0x41, 0x2983: 0x42, 0x2984: 0x43, 0x2985: 0x44, 0x2986: 0x45, 0x2987: 0x46,\n\t0x2988: 0x47, 0x2989: 0x48, 0x298a: 0x49, 0x298b: 0x4a, 0x298c: 0x4b, 0x298d: 0x4c, 0x298e: 0x4d, 0x298f: 0x4e,\n\t0x2990: 0x4f, 0x2991: 0x50, 0x2992: 0x51, 0x2993: 0x52, 0x2994: 0x53, 0x2995: 0x54, 0x2996: 0x55, 0x2997: 0x56,\n\t0x2998: 0x57, 0x2999: 0x58, 0x299a: 0x59, 0x299b: 0x5a, 0x299c: 0x5b, 0x299d: 0x5c, 0x299e: 0x5d, 0x299f: 0x5e,\n\t0x29a0: 0x5f, 0x29a1: 0x60, 0x29a2: 0x61, 0x29a3: 0x62, 0x29a4: 0x63, 0x29a5: 0x64, 0x29a6: 0x65, 0x29a7: 0x66,\n\t0x29a8: 0x67, 0x29a9: 0x68, 0x29aa: 0x69, 0x29ac: 0x6a, 0x29ad: 0x6b, 0x29ae: 0x6c, 0x29af: 0x6d,\n\t0x29b0: 0x6e, 0x29b1: 0x6f, 0x29b3: 0x70, 0x29b4: 0x71, 0x29b5: 0x72, 0x29b6: 0x73, 0x29b7: 0x74,\n\t0x29b8: 0x5a4, 0x29b9: 0x5a5, 0x29ba: 0x77, 0x29bb: 0x5a6, 0x29bc: 0x79, 0x29bd: 0x7a, 0x29be: 0x7b, 0x29bf: 0x7c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c2: 0x01, 0x29c3: 0x5a1, 0x29c4: 0x5a2, 0x29c5: 0x5a3, 0x29c6: 0x05, 0x29c7: 0x06,\n\t0x29c8: 0x07, 0x29c9: 0x08, 0x29ca: 0x09, 0x29cb: 0x0a, 0x29cc: 0x0b, 0x29cd: 0x0c, 0x29ce: 0x0d, 0x29cf: 0x0e,\n\t0x29d0: 0x0f, 0x29d1: 0x10, 0x29d2: 0x11, 0x29d3: 0x12, 0x29d4: 0x13, 0x29d5: 0x14, 0x29d6: 0x15, 0x29d7: 0x16,\n\t0x29d8: 0x17, 0x29d9: 0x18, 0x29da: 0x19, 0x29db: 0x1a, 0x29dc: 0x1b, 0x29dd: 0x1c, 0x29de: 0x1d, 0x29df: 0x1e,\n\t0x29e0: 0x01, 0x29e1: 0xa4, 0x29e2: 0x03, 0x29e3: 0x04, 0x29e4: 0x05,\n\t0x29ea: 0x06, 0x29ed: 0x07, 0x29ef: 0x08,\n\t0x29f0: 0x13, 0x29f3: 0x15,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x5ab, 0x2a01: 0x7e, 0x2a02: 0x7f, 0x2a03: 0x80, 0x2a04: 0x81, 0x2a05: 0x82, 0x2a06: 0x83, 0x2a07: 0x84,\n\t0x2a08: 0x85, 0x2a09: 0x86, 0x2a0a: 0x87, 0x2a0b: 0x88, 0x2a0c: 0x89, 0x2a0d: 0x8a, 0x2a0e: 0x8b, 0x2a0f: 0x8c,\n\t0x2a10: 0x8d, 0x2a11: 0x8e, 0x2a12: 0x8f, 0x2a13: 0x90, 0x2a14: 0x91, 0x2a15: 0x92, 0x2a16: 0x93, 0x2a17: 0x94,\n\t0x2a18: 0x95, 0x2a19: 0x96, 0x2a1a: 0x97, 0x2a1b: 0x98, 0x2a1c: 0x99, 0x2a1d: 0x9a, 0x2a1e: 0x9b, 0x2a1f: 0x9c,\n\t0x2a20: 0x9d, 0x2a21: 0x9e, 0x2a22: 0x9f, 0x2a23: 0xa0, 0x2a24: 0xa1, 0x2a25: 0xa2, 0x2a26: 0xa3, 0x2a27: 0xa4,\n\t0x2a28: 0xa5, 0x2a29: 0xa6, 0x2a2a: 0xa7, 0x2a2b: 0xa8, 0x2a2c: 0xa9, 0x2a2d: 0xaa,\n\t0x2a30: 0xab, 0x2a31: 0xac, 0x2a32: 0xad, 0x2a33: 0xae, 0x2a34: 0xaf, 0x2a35: 0xb0, 0x2a36: 0xb1, 0x2a37: 0xb2,\n\t0x2a38: 0xb3, 0x2a3a: 0xb4, 0x2a3b: 0xb5, 0x2a3c: 0xb6, 0x2a3d: 0xb7, 0x2a3e: 0xb8, 0x2a3f: 0xb9,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a64: 0xfb, 0x2a65: 0xfc, 0x2a66: 0xfd, 0x2a67: 0xfe,\n\t0x2a68: 0xff, 0x2a69: 0x100, 0x2a6a: 0x101, 0x2a6b: 0x102, 0x2a6c: 0x103, 0x2a6d: 0x104, 0x2a6e: 0x252, 0x2a6f: 0x5ac,\n\t0x2a70: 0x253, 0x2a71: 0x5ad, 0x2a72: 0x5ae, 0x2a73: 0x5af, 0x2a74: 0x5b0, 0x2a75: 0x10c, 0x2a76: 0x10d, 0x2a77: 0x10e,\n\t0x2a78: 0x10f, 0x2a79: 0x110, 0x2a7a: 0x111, 0x2a7b: 0x112, 0x2a7c: 0x113, 0x2a7d: 0x114, 0x2a7e: 0x115, 0x2a7f: 0x116,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a82: 0x01, 0x2a83: 0x02, 0x2a84: 0x03, 0x2a85: 0x04, 0x2a86: 0x05, 0x2a87: 0x06,\n\t0x2a88: 0x07, 0x2a89: 0x08, 0x2a8a: 0x09, 0x2a8b: 0x0a, 0x2a8c: 0x0b, 0x2a8d: 0x0c, 0x2a8e: 0x0d, 0x2a8f: 0x0e,\n\t0x2a90: 0x0f, 0x2a91: 0x10, 0x2a92: 0x11, 0x2a93: 0x12, 0x2a94: 0x13, 0x2a95: 0x14, 0x2a96: 0x15, 0x2a97: 0x16,\n\t0x2a98: 0x5a7, 0x2a99: 0x5a8, 0x2a9a: 0x5a9, 0x2a9b: 0x5aa, 0x2a9c: 0x1b, 0x2a9d: 0x1c, 0x2a9e: 0x1d, 0x2a9f: 0x1e,\n\t0x2aa0: 0x01, 0x2aa1: 0x02, 0x2aa2: 0xa6, 0x2aa3: 0x04, 0x2aa4: 0x05,\n\t0x2aaa: 0x06, 0x2aad: 0x07, 0x2aaf: 0xa7,\n\t0x2ab0: 0x13, 0x2ab3: 0x15,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x3f, 0x2ac1: 0x40, 0x2ac2: 0x41, 0x2ac3: 0x42, 0x2ac4: 0x43, 0x2ac5: 0x44, 0x2ac6: 0x45, 0x2ac7: 0x46,\n\t0x2ac8: 0x47, 0x2ac9: 0x48, 0x2aca: 0x49, 0x2acb: 0x4a, 0x2acc: 0x4b, 0x2acd: 0x4c, 0x2ace: 0x4d, 0x2acf: 0x4e,\n\t0x2ad0: 0x4f, 0x2ad1: 0x50, 0x2ad2: 0x51, 0x2ad3: 0x52, 0x2ad4: 0x53, 0x2ad5: 0x54, 0x2ad6: 0x55, 0x2ad7: 0x56,\n\t0x2ad8: 0x57, 0x2ad9: 0x58, 0x2ada: 0x59, 0x2adb: 0x5a, 0x2adc: 0x5b, 0x2add: 0x5c, 0x2ade: 0x5d, 0x2adf: 0x5e,\n\t0x2ae0: 0x5f, 0x2ae1: 0x60, 0x2ae2: 0x61, 0x2ae3: 0x62, 0x2ae4: 0x63, 0x2ae5: 0x64, 0x2ae6: 0x65, 0x2ae7: 0x66,\n\t0x2ae8: 0x67, 0x2ae9: 0x68, 0x2aea: 0x69, 0x2aec: 0x6a, 0x2aed: 0x6b, 0x2aee: 0x6c, 0x2aef: 0x6d,\n\t0x2af0: 0x6e, 0x2af1: 0x6f, 0x2af3: 0x70, 0x2af4: 0x71, 0x2af5: 0x72, 0x2af6: 0x73, 0x2af7: 0x74,\n\t0x2af8: 0x75, 0x2af9: 0x76, 0x2afa: 0x5b7, 0x2afb: 0x78, 0x2afc: 0x79, 0x2afd: 0x7a, 0x2afe: 0x7b, 0x2aff: 0x7c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b02: 0x01, 0x2b03: 0x5b3, 0x2b04: 0x5b4, 0x2b05: 0x5b5, 0x2b06: 0x05, 0x2b07: 0x06,\n\t0x2b08: 0x5b6, 0x2b09: 0x08, 0x2b0a: 0x09, 0x2b0b: 0x0a, 0x2b0c: 0x0b, 0x2b0d: 0x0c, 0x2b0e: 0x0d, 0x2b0f: 0x0e,\n\t0x2b10: 0x0f, 0x2b11: 0x10, 0x2b12: 0x11, 0x2b13: 0x12, 0x2b14: 0x13, 0x2b15: 0x14, 0x2b16: 0x15, 0x2b17: 0x16,\n\t0x2b18: 0x17, 0x2b19: 0x18, 0x2b1a: 0x19, 0x2b1b: 0x1a, 0x2b1c: 0x1b, 0x2b1d: 0x1c, 0x2b1e: 0x1d, 0x2b1f: 0x1e,\n\t0x2b20: 0x01, 0x2b21: 0xa9, 0x2b22: 0x03, 0x2b23: 0x04, 0x2b24: 0x05,\n\t0x2b2a: 0x06, 0x2b2d: 0x07, 0x2b2f: 0x08,\n\t0x2b30: 0x13, 0x2b33: 0x15,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x3f, 0x2b41: 0x40, 0x2b42: 0x41, 0x2b43: 0x42, 0x2b44: 0x43, 0x2b45: 0x44, 0x2b46: 0x45, 0x2b47: 0x46,\n\t0x2b48: 0x47, 0x2b49: 0x48, 0x2b4a: 0x49, 0x2b4b: 0x4a, 0x2b4c: 0x4b, 0x2b4d: 0x4c, 0x2b4e: 0x4d, 0x2b4f: 0x4e,\n\t0x2b50: 0x4f, 0x2b51: 0x50, 0x2b52: 0x51, 0x2b53: 0x52, 0x2b54: 0x53, 0x2b55: 0x54, 0x2b56: 0x55, 0x2b57: 0x56,\n\t0x2b58: 0x57, 0x2b59: 0x58, 0x2b5a: 0x59, 0x2b5b: 0x5a, 0x2b5c: 0x5b, 0x2b5d: 0x5c, 0x2b5e: 0x5d, 0x2b5f: 0x5e,\n\t0x2b60: 0x5f, 0x2b61: 0x60, 0x2b62: 0x61, 0x2b63: 0x62, 0x2b64: 0x63, 0x2b65: 0x64, 0x2b66: 0x65, 0x2b67: 0x66,\n\t0x2b68: 0x67, 0x2b69: 0x68, 0x2b6a: 0x69, 0x2b6c: 0x6a, 0x2b6d: 0x6b, 0x2b6e: 0x6c, 0x2b6f: 0x6d,\n\t0x2b70: 0x6e, 0x2b71: 0x6f, 0x2b73: 0x70, 0x2b74: 0x71, 0x2b75: 0x72, 0x2b76: 0x1fc, 0x2b77: 0x74,\n\t0x2b78: 0x75, 0x2b79: 0x5c1, 0x2b7a: 0x5c2, 0x2b7b: 0x5c3, 0x2b7c: 0x79, 0x2b7d: 0x7a, 0x2b7e: 0x7b, 0x2b7f: 0x7c,\n\t// Block 0xae, offset 0x2b80\n\t0x2b82: 0x01, 0x2b83: 0x5ba, 0x2b84: 0x5bb, 0x2b85: 0x5bc, 0x2b86: 0x5bd, 0x2b87: 0x5be,\n\t0x2b88: 0x5bf, 0x2b89: 0x08, 0x2b8a: 0x5c0, 0x2b8b: 0x0a, 0x2b8c: 0x0b, 0x2b8d: 0x0c, 0x2b8e: 0x0d, 0x2b8f: 0x0e,\n\t0x2b90: 0x0f, 0x2b91: 0x10, 0x2b92: 0x11, 0x2b93: 0x12, 0x2b94: 0x13, 0x2b95: 0x14, 0x2b96: 0x15, 0x2b97: 0x16,\n\t0x2b98: 0x17, 0x2b99: 0x18, 0x2b9a: 0x19, 0x2b9b: 0x1a, 0x2b9c: 0x1b, 0x2b9d: 0x1c, 0x2b9e: 0x1d, 0x2b9f: 0x1e,\n\t0x2ba0: 0x01, 0x2ba1: 0xab, 0x2ba2: 0x4e, 0x2ba3: 0x04, 0x2ba4: 0x05,\n\t0x2baa: 0x06, 0x2bad: 0x07, 0x2baf: 0x08,\n\t0x2bb0: 0x13, 0x2bb3: 0x15,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2be0: 0x1f, 0x2be1: 0x20, 0x2be2: 0x21, 0x2be3: 0x22, 0x2be4: 0x23, 0x2be5: 0x24, 0x2be6: 0x25, 0x2be7: 0x26,\n\t0x2be8: 0x27, 0x2be9: 0x28, 0x2bea: 0x29, 0x2beb: 0x2a, 0x2bec: 0x2b, 0x2bed: 0x2c, 0x2bee: 0x2d, 0x2bef: 0x2e,\n\t0x2bf0: 0x2f, 0x2bf1: 0x30, 0x2bf2: 0x31, 0x2bf3: 0x32, 0x2bf4: 0x33, 0x2bf5: 0x34, 0x2bf6: 0x5c4, 0x2bf7: 0x36,\n\t0x2bf8: 0x37, 0x2bf9: 0x38, 0x2bfa: 0x39, 0x2bfb: 0x3a, 0x2bfc: 0x3b, 0x2bfd: 0x3c, 0x2bfe: 0x3d, 0x2bff: 0x3e,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c02: 0x01, 0x2c03: 0x02, 0x2c04: 0x03, 0x2c05: 0x04, 0x2c06: 0x05, 0x2c07: 0x06,\n\t0x2c08: 0x07, 0x2c09: 0x08, 0x2c0a: 0x09, 0x2c0b: 0x0a, 0x2c0c: 0x0b, 0x2c0d: 0x0c, 0x2c0e: 0x0d, 0x2c0f: 0x0e,\n\t0x2c10: 0x0f, 0x2c11: 0x10, 0x2c12: 0x11, 0x2c13: 0x12, 0x2c14: 0x13, 0x2c15: 0x14, 0x2c16: 0x15, 0x2c17: 0x16,\n\t0x2c18: 0x17, 0x2c19: 0x18, 0x2c1a: 0x19, 0x2c1b: 0x1a, 0x2c1c: 0x1b, 0x2c1d: 0x1c, 0x2c1e: 0x1d, 0x2c1f: 0x1e,\n\t0x2c20: 0xad, 0x2c21: 0x02, 0x2c22: 0x03, 0x2c23: 0x04, 0x2c24: 0x05,\n\t0x2c2a: 0x06, 0x2c2d: 0x07, 0x2c2f: 0x08,\n\t0x2c30: 0x13, 0x2c33: 0x15,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x3f, 0x2c41: 0x40, 0x2c42: 0x41, 0x2c43: 0x42, 0x2c44: 0x43, 0x2c45: 0x44, 0x2c46: 0x45, 0x2c47: 0x46,\n\t0x2c48: 0x47, 0x2c49: 0x48, 0x2c4a: 0x49, 0x2c4b: 0x4a, 0x2c4c: 0x4b, 0x2c4d: 0x4c, 0x2c4e: 0x4d, 0x2c4f: 0x4e,\n\t0x2c50: 0x4f, 0x2c51: 0x50, 0x2c52: 0x51, 0x2c53: 0x52, 0x2c54: 0x53, 0x2c55: 0x54, 0x2c56: 0x55, 0x2c57: 0x56,\n\t0x2c58: 0x57, 0x2c59: 0x58, 0x2c5a: 0x59, 0x2c5b: 0x5a, 0x2c5c: 0x5b, 0x2c5d: 0x5c, 0x2c5e: 0x5d, 0x2c5f: 0x5e,\n\t0x2c60: 0x5f, 0x2c61: 0x60, 0x2c62: 0x61, 0x2c63: 0x62, 0x2c64: 0x63, 0x2c65: 0x64, 0x2c66: 0x65, 0x2c67: 0x66,\n\t0x2c68: 0x67, 0x2c69: 0x68, 0x2c6a: 0x69, 0x2c6c: 0x6a, 0x2c6d: 0x6b, 0x2c6e: 0x6c, 0x2c6f: 0x6d,\n\t0x2c70: 0x6e, 0x2c71: 0x6f, 0x2c73: 0x70, 0x2c74: 0x71, 0x2c75: 0x72, 0x2c76: 0x73, 0x2c77: 0x74,\n\t0x2c78: 0x75, 0x2c79: 0x1f2, 0x2c7a: 0x77, 0x2c7b: 0x5c9, 0x2c7c: 0x79, 0x2c7d: 0x7a, 0x2c7e: 0x7b, 0x2c7f: 0x7c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c82: 0x01, 0x2c83: 0x5c7, 0x2c84: 0x1f0, 0x2c85: 0x1f1, 0x2c86: 0x05, 0x2c87: 0x5c8,\n\t0x2c88: 0x07, 0x2c89: 0x08, 0x2c8a: 0x09, 0x2c8b: 0x0a, 0x2c8c: 0x0b, 0x2c8d: 0x0c, 0x2c8e: 0x0d, 0x2c8f: 0x0e,\n\t0x2c90: 0x0f, 0x2c91: 0x10, 0x2c92: 0x11, 0x2c93: 0x12, 0x2c94: 0x13, 0x2c95: 0x14, 0x2c96: 0x15, 0x2c97: 0x16,\n\t0x2c98: 0x17, 0x2c99: 0x18, 0x2c9a: 0x19, 0x2c9b: 0x1a, 0x2c9c: 0x1b, 0x2c9d: 0x1c, 0x2c9e: 0x1d, 0x2c9f: 0x1e,\n\t0x2ca0: 0x01, 0x2ca1: 0xaf, 0x2ca2: 0x03, 0x2ca3: 0x04, 0x2ca4: 0x05,\n\t0x2caa: 0x06, 0x2cad: 0x07, 0x2caf: 0x08,\n\t0x2cb0: 0x13, 0x2cb3: 0x15,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc2: 0x01, 0x2cc3: 0x02, 0x2cc4: 0x5cc, 0x2cc5: 0x292, 0x2cc6: 0x05, 0x2cc7: 0x06,\n\t0x2cc8: 0x07, 0x2cc9: 0x08, 0x2cca: 0x09, 0x2ccb: 0x0a, 0x2ccc: 0x0b, 0x2ccd: 0x0c, 0x2cce: 0x0d, 0x2ccf: 0x0e,\n\t0x2cd0: 0x0f, 0x2cd1: 0x10, 0x2cd2: 0x11, 0x2cd3: 0x12, 0x2cd4: 0x13, 0x2cd5: 0x14, 0x2cd6: 0x15, 0x2cd7: 0x16,\n\t0x2cd8: 0x17, 0x2cd9: 0x18, 0x2cda: 0x19, 0x2cdb: 0x1a, 0x2cdc: 0x1b, 0x2cdd: 0x1c, 0x2cde: 0x1d, 0x2cdf: 0x1e,\n\t0x2ce0: 0x01, 0x2ce1: 0x63, 0x2ce2: 0x03, 0x2ce3: 0x04, 0x2ce4: 0x05,\n\t0x2cea: 0x06, 0x2ced: 0x07, 0x2cef: 0x08,\n\t0x2cf0: 0x13, 0x2cf3: 0x15,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d00: 0x3f, 0x2d01: 0x40, 0x2d02: 0x41, 0x2d03: 0x42, 0x2d04: 0x43, 0x2d05: 0x44, 0x2d06: 0x45, 0x2d07: 0x46,\n\t0x2d08: 0x47, 0x2d09: 0x48, 0x2d0a: 0x49, 0x2d0b: 0x4a, 0x2d0c: 0x4b, 0x2d0d: 0x4c, 0x2d0e: 0x4d, 0x2d0f: 0x4e,\n\t0x2d10: 0x4f, 0x2d11: 0x50, 0x2d12: 0x51, 0x2d13: 0x52, 0x2d14: 0x53, 0x2d15: 0x54, 0x2d16: 0x55, 0x2d17: 0x56,\n\t0x2d18: 0x57, 0x2d19: 0x58, 0x2d1a: 0x59, 0x2d1b: 0x5a, 0x2d1c: 0x5b, 0x2d1d: 0x5c, 0x2d1e: 0x5d, 0x2d1f: 0x5e,\n\t0x2d20: 0x5f, 0x2d21: 0x60, 0x2d22: 0x61, 0x2d23: 0x62, 0x2d24: 0x63, 0x2d25: 0x64, 0x2d26: 0x65, 0x2d27: 0x66,\n\t0x2d28: 0x67, 0x2d29: 0x68, 0x2d2a: 0x69, 0x2d2c: 0x6a, 0x2d2d: 0x6b, 0x2d2e: 0x6c, 0x2d2f: 0x6d,\n\t0x2d30: 0x6e, 0x2d31: 0x6f, 0x2d33: 0x70, 0x2d34: 0x71, 0x2d35: 0x72, 0x2d36: 0x73, 0x2d37: 0x74,\n\t0x2d38: 0x5d0, 0x2d39: 0x76, 0x2d3a: 0x77, 0x2d3b: 0x78, 0x2d3c: 0x79, 0x2d3d: 0x7a, 0x2d3e: 0x7b, 0x2d3f: 0x7c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d42: 0x01, 0x2d43: 0x5cf, 0x2d44: 0x03, 0x2d45: 0x04, 0x2d46: 0x05, 0x2d47: 0x06,\n\t0x2d48: 0x07, 0x2d49: 0x08, 0x2d4a: 0x09, 0x2d4b: 0x0a, 0x2d4c: 0x0b, 0x2d4d: 0x0c, 0x2d4e: 0x0d, 0x2d4f: 0x0e,\n\t0x2d50: 0x0f, 0x2d51: 0x10, 0x2d52: 0x11, 0x2d53: 0x12, 0x2d54: 0x13, 0x2d55: 0x14, 0x2d56: 0x15, 0x2d57: 0x16,\n\t0x2d58: 0x17, 0x2d59: 0x18, 0x2d5a: 0x19, 0x2d5b: 0x1a, 0x2d5c: 0x1b, 0x2d5d: 0x1c, 0x2d5e: 0x1d, 0x2d5f: 0x1e,\n\t0x2d60: 0x01, 0x2d61: 0xb2, 0x2d62: 0x03, 0x2d63: 0x04, 0x2d64: 0x05,\n\t0x2d6a: 0x06, 0x2d6d: 0x07, 0x2d6f: 0x08,\n\t0x2d70: 0x13, 0x2d73: 0x15,\n\t// Block 0xb6, offset 0x2d80\n\t0x2d80: 0x3f, 0x2d81: 0x40, 0x2d82: 0x41, 0x2d83: 0x42, 0x2d84: 0x43, 0x2d85: 0x44, 0x2d86: 0x45, 0x2d87: 0x46,\n\t0x2d88: 0x47, 0x2d89: 0x48, 0x2d8a: 0x49, 0x2d8b: 0x4a, 0x2d8c: 0x4b, 0x2d8d: 0x4c, 0x2d8e: 0x4d, 0x2d8f: 0x4e,\n\t0x2d90: 0x4f, 0x2d91: 0x50, 0x2d92: 0x51, 0x2d93: 0x52, 0x2d94: 0x53, 0x2d95: 0x54, 0x2d96: 0x55, 0x2d97: 0x56,\n\t0x2d98: 0x57, 0x2d99: 0x58, 0x2d9a: 0x59, 0x2d9b: 0x5a, 0x2d9c: 0x5b, 0x2d9d: 0x5c, 0x2d9e: 0x5d, 0x2d9f: 0x5e,\n\t0x2da0: 0x5f, 0x2da1: 0x60, 0x2da2: 0x61, 0x2da3: 0x62, 0x2da4: 0x63, 0x2da5: 0x64, 0x2da6: 0x65, 0x2da7: 0x66,\n\t0x2da8: 0x67, 0x2da9: 0x68, 0x2daa: 0x69, 0x2dac: 0x6a, 0x2dad: 0x6b, 0x2dae: 0x6c, 0x2daf: 0x6d,\n\t0x2db0: 0x6e, 0x2db1: 0x6f, 0x2db3: 0x70, 0x2db4: 0x71, 0x2db5: 0x72, 0x2db6: 0x1fc, 0x2db7: 0x74,\n\t0x2db8: 0x75, 0x2db9: 0x261, 0x2dba: 0x77, 0x2dbb: 0x5d6, 0x2dbc: 0x79, 0x2dbd: 0x7a, 0x2dbe: 0x7b, 0x2dbf: 0x7c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc2: 0x01, 0x2dc3: 0x5d3, 0x2dc4: 0x5d4, 0x2dc5: 0x5d5, 0x2dc6: 0x05, 0x2dc7: 0x268,\n\t0x2dc8: 0x25f, 0x2dc9: 0x08, 0x2dca: 0x09, 0x2dcb: 0x0a, 0x2dcc: 0x0b, 0x2dcd: 0x0c, 0x2dce: 0x0d, 0x2dcf: 0x0e,\n\t0x2dd0: 0x0f, 0x2dd1: 0x10, 0x2dd2: 0x11, 0x2dd3: 0x12, 0x2dd4: 0x13, 0x2dd5: 0x14, 0x2dd6: 0x15, 0x2dd7: 0x16,\n\t0x2dd8: 0x17, 0x2dd9: 0x18, 0x2dda: 0x19, 0x2ddb: 0x1a, 0x2ddc: 0x1b, 0x2ddd: 0x1c, 0x2dde: 0x1d, 0x2ddf: 0x1e,\n\t0x2de0: 0x01, 0x2de1: 0xb4, 0x2de2: 0x4e, 0x2de3: 0x04, 0x2de4: 0x05,\n\t0x2dea: 0x06, 0x2ded: 0x07, 0x2def: 0x08,\n\t0x2df0: 0x13, 0x2df3: 0x15,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e00: 0x3f, 0x2e01: 0x40, 0x2e02: 0x41, 0x2e03: 0x42, 0x2e04: 0x43, 0x2e05: 0x44, 0x2e06: 0x45, 0x2e07: 0x46,\n\t0x2e08: 0x47, 0x2e09: 0x48, 0x2e0a: 0x49, 0x2e0b: 0x4a, 0x2e0c: 0x4b, 0x2e0d: 0x4c, 0x2e0e: 0x4d, 0x2e0f: 0x4e,\n\t0x2e10: 0x4f, 0x2e11: 0x50, 0x2e12: 0x51, 0x2e13: 0x52, 0x2e14: 0x53, 0x2e15: 0x54, 0x2e16: 0x55, 0x2e17: 0x56,\n\t0x2e18: 0x57, 0x2e19: 0x58, 0x2e1a: 0x59, 0x2e1b: 0x5a, 0x2e1c: 0x5b, 0x2e1d: 0x5c, 0x2e1e: 0x5d, 0x2e1f: 0x5e,\n\t0x2e20: 0x5f, 0x2e21: 0x60, 0x2e22: 0x61, 0x2e23: 0x62, 0x2e24: 0x63, 0x2e25: 0x64, 0x2e26: 0x65, 0x2e27: 0x66,\n\t0x2e28: 0x67, 0x2e29: 0x68, 0x2e2a: 0x69, 0x2e2c: 0x6a, 0x2e2d: 0x6b, 0x2e2e: 0x6c, 0x2e2f: 0x6d,\n\t0x2e30: 0x6e, 0x2e31: 0x6f, 0x2e33: 0x70, 0x2e34: 0x71, 0x2e35: 0x72, 0x2e36: 0x1fc, 0x2e37: 0x74,\n\t0x2e38: 0x75, 0x2e39: 0x5da, 0x2e3a: 0x26b, 0x2e3b: 0x5d6, 0x2e3c: 0x79, 0x2e3d: 0x7a, 0x2e3e: 0x7b, 0x2e3f: 0x7c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e42: 0x01, 0x2e43: 0x5d3, 0x2e44: 0x5d4, 0x2e45: 0x5d9, 0x2e46: 0x05, 0x2e47: 0x268,\n\t0x2e48: 0x25f, 0x2e49: 0x08, 0x2e4a: 0x09, 0x2e4b: 0x0a, 0x2e4c: 0x0b, 0x2e4d: 0x0c, 0x2e4e: 0x0d, 0x2e4f: 0x0e,\n\t0x2e50: 0x0f, 0x2e51: 0x10, 0x2e52: 0x11, 0x2e53: 0x12, 0x2e54: 0x13, 0x2e55: 0x14, 0x2e56: 0x15, 0x2e57: 0x16,\n\t0x2e58: 0x17, 0x2e59: 0x18, 0x2e5a: 0x19, 0x2e5b: 0x1a, 0x2e5c: 0x1b, 0x2e5d: 0x1c, 0x2e5e: 0x1d, 0x2e5f: 0x1e,\n\t0x2e60: 0x01, 0x2e61: 0xb6, 0x2e62: 0x51, 0x2e63: 0x52, 0x2e64: 0x05,\n\t0x2e6a: 0x06, 0x2e6d: 0x07, 0x2e6f: 0x08,\n\t0x2e70: 0x54, 0x2e73: 0x15,\n\t// Block 0xba, offset 0x2e80\n\t0x2ea0: 0x1f, 0x2ea1: 0x20, 0x2ea2: 0x21, 0x2ea3: 0x22, 0x2ea4: 0x23, 0x2ea5: 0x24, 0x2ea6: 0x25, 0x2ea7: 0x26,\n\t0x2ea8: 0x27, 0x2ea9: 0x28, 0x2eaa: 0x29, 0x2eab: 0x2a, 0x2eac: 0x2b, 0x2ead: 0x2c, 0x2eae: 0x5db, 0x2eaf: 0x2e,\n\t0x2eb0: 0x2f, 0x2eb1: 0x30, 0x2eb2: 0x31, 0x2eb3: 0x32, 0x2eb4: 0x33, 0x2eb5: 0x34, 0x2eb6: 0x35, 0x2eb7: 0x36,\n\t0x2eb8: 0x37, 0x2eb9: 0x38, 0x2eba: 0x39, 0x2ebb: 0x3a, 0x2ebc: 0x3b, 0x2ebd: 0x3c, 0x2ebe: 0x3d, 0x2ebf: 0x3e,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec2: 0x01, 0x2ec3: 0x02, 0x2ec4: 0x03, 0x2ec5: 0x04, 0x2ec6: 0x05, 0x2ec7: 0x06,\n\t0x2ec8: 0x07, 0x2ec9: 0x08, 0x2eca: 0x09, 0x2ecb: 0x0a, 0x2ecc: 0x0b, 0x2ecd: 0x0c, 0x2ece: 0x0d, 0x2ecf: 0x0e,\n\t0x2ed0: 0x0f, 0x2ed1: 0x10, 0x2ed2: 0x11, 0x2ed3: 0x12, 0x2ed4: 0x13, 0x2ed5: 0x14, 0x2ed6: 0x15, 0x2ed7: 0x16,\n\t0x2ed8: 0x17, 0x2ed9: 0x18, 0x2eda: 0x19, 0x2edb: 0x1a, 0x2edc: 0x1b, 0x2edd: 0x1c, 0x2ede: 0x1d, 0x2edf: 0x1e,\n\t0x2ee0: 0xb8, 0x2ee1: 0x02, 0x2ee2: 0x03, 0x2ee3: 0x04, 0x2ee4: 0x05,\n\t0x2eea: 0x06, 0x2eed: 0x07, 0x2eef: 0x08,\n\t0x2ef0: 0x13, 0x2ef3: 0x15,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f20: 0x1f, 0x2f21: 0x20, 0x2f22: 0x21, 0x2f23: 0x22, 0x2f24: 0x23, 0x2f25: 0x24, 0x2f26: 0x25, 0x2f27: 0x26,\n\t0x2f28: 0x27, 0x2f29: 0x28, 0x2f2a: 0x29, 0x2f2b: 0x2a, 0x2f2c: 0x2b, 0x2f2d: 0x2c, 0x2f2e: 0x2d, 0x2f2f: 0x2e,\n\t0x2f30: 0x5dc, 0x2f31: 0x30, 0x2f32: 0x31, 0x2f33: 0x32, 0x2f34: 0x33, 0x2f35: 0x34, 0x2f36: 0x35, 0x2f37: 0x36,\n\t0x2f38: 0x37, 0x2f39: 0x38, 0x2f3a: 0x39, 0x2f3b: 0x3a, 0x2f3c: 0x3b, 0x2f3d: 0x3c, 0x2f3e: 0x3d, 0x2f3f: 0x3e,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f42: 0x01, 0x2f43: 0x02, 0x2f44: 0x03, 0x2f45: 0x04, 0x2f46: 0x05, 0x2f47: 0x06,\n\t0x2f48: 0x07, 0x2f49: 0x08, 0x2f4a: 0x09, 0x2f4b: 0x0a, 0x2f4c: 0x0b, 0x2f4d: 0x0c, 0x2f4e: 0x0d, 0x2f4f: 0x0e,\n\t0x2f50: 0x0f, 0x2f51: 0x10, 0x2f52: 0x11, 0x2f53: 0x12, 0x2f54: 0x13, 0x2f55: 0x14, 0x2f56: 0x15, 0x2f57: 0x16,\n\t0x2f58: 0x17, 0x2f59: 0x18, 0x2f5a: 0x19, 0x2f5b: 0x1a, 0x2f5c: 0x1b, 0x2f5d: 0x1c, 0x2f5e: 0x1d, 0x2f5f: 0x1e,\n\t0x2f60: 0xba, 0x2f61: 0x02, 0x2f62: 0x03, 0x2f63: 0x04, 0x2f64: 0x05,\n\t0x2f6a: 0x06, 0x2f6d: 0x07, 0x2f6f: 0x08,\n\t0x2f70: 0x13, 0x2f73: 0x15,\n\t// Block 0xbe, offset 0x2f80\n\t0x2fa0: 0x1f, 0x2fa1: 0x20, 0x2fa2: 0x21, 0x2fa3: 0x22, 0x2fa4: 0x23, 0x2fa5: 0x24, 0x2fa6: 0x25, 0x2fa7: 0x26,\n\t0x2fa8: 0x27, 0x2fa9: 0x28, 0x2faa: 0x29, 0x2fab: 0x2a, 0x2fac: 0x2b, 0x2fad: 0x2c, 0x2fae: 0x2d, 0x2faf: 0x2e,\n\t0x2fb0: 0x2f, 0x2fb1: 0x30, 0x2fb2: 0x31, 0x2fb3: 0x32, 0x2fb4: 0x33, 0x2fb5: 0x34, 0x2fb6: 0x35, 0x2fb7: 0x36,\n\t0x2fb8: 0x5dd, 0x2fb9: 0x5de, 0x2fba: 0x39, 0x2fbb: 0x3a, 0x2fbc: 0x3b, 0x2fbd: 0x3c, 0x2fbe: 0x3d, 0x2fbf: 0x3e,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2fc2: 0x01, 0x2fc3: 0x02, 0x2fc4: 0x03, 0x2fc5: 0x04, 0x2fc6: 0x05, 0x2fc7: 0x06,\n\t0x2fc8: 0x07, 0x2fc9: 0x08, 0x2fca: 0x09, 0x2fcb: 0x0a, 0x2fcc: 0x0b, 0x2fcd: 0x0c, 0x2fce: 0x0d, 0x2fcf: 0x0e,\n\t0x2fd0: 0x0f, 0x2fd1: 0x10, 0x2fd2: 0x11, 0x2fd3: 0x12, 0x2fd4: 0x13, 0x2fd5: 0x14, 0x2fd6: 0x15, 0x2fd7: 0x16,\n\t0x2fd8: 0x17, 0x2fd9: 0x18, 0x2fda: 0x19, 0x2fdb: 0x1a, 0x2fdc: 0x1b, 0x2fdd: 0x1c, 0x2fde: 0x1d, 0x2fdf: 0x1e,\n\t0x2fe0: 0xbc, 0x2fe1: 0x02, 0x2fe2: 0x03, 0x2fe3: 0x04, 0x2fe4: 0x05,\n\t0x2fea: 0x06, 0x2fed: 0x07, 0x2fef: 0x08,\n\t0x2ff0: 0x13, 0x2ff3: 0x15,\n\t// Block 0xc0, offset 0x3000\n\t0x3000: 0x3f, 0x3001: 0x40, 0x3002: 0x41, 0x3003: 0x42, 0x3004: 0x43, 0x3005: 0x44, 0x3006: 0x45, 0x3007: 0x46,\n\t0x3008: 0x47, 0x3009: 0x48, 0x300a: 0x49, 0x300b: 0x4a, 0x300c: 0x4b, 0x300d: 0x4c, 0x300e: 0x4d, 0x300f: 0x4e,\n\t0x3010: 0x4f, 0x3011: 0x50, 0x3012: 0x51, 0x3013: 0x52, 0x3014: 0x53, 0x3015: 0x54, 0x3016: 0x55, 0x3017: 0x56,\n\t0x3018: 0x57, 0x3019: 0x58, 0x301a: 0x59, 0x301b: 0x5a, 0x301c: 0x5b, 0x301d: 0x5c, 0x301e: 0x5d, 0x301f: 0x5e,\n\t0x3020: 0x5f, 0x3021: 0x60, 0x3022: 0x61, 0x3023: 0x62, 0x3024: 0x63, 0x3025: 0x64, 0x3026: 0x65, 0x3027: 0x66,\n\t0x3028: 0x67, 0x3029: 0x68, 0x302a: 0x69, 0x302c: 0x6a, 0x302d: 0x6b, 0x302e: 0x6c, 0x302f: 0x6d,\n\t0x3030: 0x6e, 0x3031: 0x6f, 0x3033: 0x70, 0x3034: 0x71, 0x3035: 0x72, 0x3036: 0x73, 0x3037: 0x74,\n\t0x3038: 0x5e7, 0x3039: 0x5e8, 0x303a: 0x5e9, 0x303b: 0x5ea, 0x303c: 0x79, 0x303d: 0x7a, 0x303e: 0x7b, 0x303f: 0x7c,\n\t// Block 0xc1, offset 0x3040\n\t0x3042: 0x01, 0x3043: 0x5e1, 0x3044: 0x5e2, 0x3045: 0x5e3, 0x3046: 0x05, 0x3047: 0x5e4,\n\t0x3048: 0x5e5, 0x3049: 0x08, 0x304a: 0x5e6, 0x304b: 0x0a, 0x304c: 0x0b, 0x304d: 0x0c, 0x304e: 0x0d, 0x304f: 0x0e,\n\t0x3050: 0x0f, 0x3051: 0x10, 0x3052: 0x11, 0x3053: 0x12, 0x3054: 0x13, 0x3055: 0x14, 0x3056: 0x15, 0x3057: 0x16,\n\t0x3058: 0x17, 0x3059: 0x18, 0x305a: 0x19, 0x305b: 0x1a, 0x305c: 0x1b, 0x305d: 0x1c, 0x305e: 0x1d, 0x305f: 0x1e,\n\t0x3060: 0x01, 0x3061: 0xbe, 0x3062: 0x03, 0x3063: 0x04, 0x3064: 0x05,\n\t0x306a: 0x06, 0x306d: 0x07, 0x306f: 0x08,\n\t0x3070: 0x13, 0x3073: 0x15,\n\t// Block 0xc2, offset 0x3080\n\t0x3080: 0x3f, 0x3081: 0x40, 0x3082: 0x41, 0x3083: 0x42, 0x3084: 0x43, 0x3085: 0x44, 0x3086: 0x45, 0x3087: 0x46,\n\t0x3088: 0x47, 0x3089: 0x48, 0x308a: 0x49, 0x308b: 0x4a, 0x308c: 0x4b, 0x308d: 0x4c, 0x308e: 0x4d, 0x308f: 0x4e,\n\t0x3090: 0x4f, 0x3091: 0x50, 0x3092: 0x51, 0x3093: 0x52, 0x3094: 0x53, 0x3095: 0x54, 0x3096: 0x55, 0x3097: 0x56,\n\t0x3098: 0x57, 0x3099: 0x58, 0x309a: 0x59, 0x309b: 0x5a, 0x309c: 0x5b, 0x309d: 0x5c, 0x309e: 0x5d, 0x309f: 0x5e,\n\t0x30a0: 0x5f, 0x30a1: 0x60, 0x30a2: 0x61, 0x30a3: 0x62, 0x30a4: 0x63, 0x30a5: 0x64, 0x30a6: 0x65, 0x30a7: 0x66,\n\t0x30a8: 0x67, 0x30a9: 0x68, 0x30aa: 0x69, 0x30ac: 0x6a, 0x30ad: 0x6b, 0x30ae: 0x6c, 0x30af: 0x6d,\n\t0x30b0: 0x6e, 0x30b1: 0x6f, 0x30b3: 0x70, 0x30b4: 0x71, 0x30b5: 0x72, 0x30b6: 0x73, 0x30b7: 0x74,\n\t0x30b8: 0x1de, 0x30b9: 0x1df, 0x30ba: 0x77, 0x30bb: 0x1e1, 0x30bc: 0x79, 0x30bd: 0x7a, 0x30be: 0x7b, 0x30bf: 0x7c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30c0: 0x7d, 0x30c1: 0x7e, 0x30c2: 0x7f, 0x30c3: 0x80, 0x30c4: 0x81, 0x30c5: 0x5ed, 0x30c6: 0x83, 0x30c7: 0x84,\n\t0x30c8: 0x85, 0x30c9: 0x86, 0x30ca: 0x87, 0x30cb: 0x88, 0x30cc: 0x89, 0x30cd: 0x8a, 0x30ce: 0x8b, 0x30cf: 0x8c,\n\t0x30d0: 0x8d, 0x30d1: 0x8e, 0x30d2: 0x8f, 0x30d3: 0x90, 0x30d4: 0x91, 0x30d5: 0x92, 0x30d6: 0x93, 0x30d7: 0x94,\n\t0x30d8: 0x95, 0x30d9: 0x96, 0x30da: 0x97, 0x30db: 0x98, 0x30dc: 0x99, 0x30dd: 0x9a, 0x30de: 0x9b, 0x30df: 0x9c,\n\t0x30e0: 0x9d, 0x30e1: 0x9e, 0x30e2: 0x9f, 0x30e3: 0xa0, 0x30e4: 0xa1, 0x30e5: 0xa2, 0x30e6: 0xa3, 0x30e7: 0xa4,\n\t0x30e8: 0xa5, 0x30e9: 0xa6, 0x30ea: 0xa7, 0x30eb: 0xa8, 0x30ec: 0xa9, 0x30ed: 0xaa,\n\t0x30f0: 0xab, 0x30f1: 0xac, 0x30f2: 0xad, 0x30f3: 0xae, 0x30f4: 0xaf, 0x30f5: 0xb0, 0x30f6: 0xb1, 0x30f7: 0xb2,\n\t0x30f8: 0xb3, 0x30fa: 0xb4, 0x30fb: 0xb5, 0x30fc: 0xb6, 0x30fd: 0xb7, 0x30fe: 0xb8, 0x30ff: 0xb9,\n\t// Block 0xc4, offset 0x3100\n\t0x3100: 0xba, 0x3101: 0xbb, 0x3102: 0xbc, 0x3103: 0xbd, 0x3104: 0xbe, 0x3105: 0xbf, 0x3106: 0xc0, 0x3107: 0xc1,\n\t0x3108: 0xc2, 0x3109: 0xc3, 0x310a: 0xc4, 0x310b: 0xc5, 0x310c: 0xc6, 0x310d: 0x1e4, 0x310e: 0xc8, 0x310f: 0xc9,\n\t// Block 0xc5, offset 0x3140\n\t0x3140: 0x18b, 0x3141: 0x18c, 0x3142: 0x18d, 0x3143: 0x18e, 0x3144: 0x5ee, 0x3145: 0x190, 0x3146: 0x191, 0x3147: 0x192,\n\t0x3148: 0x193, 0x3149: 0x194, 0x314c: 0x195, 0x314d: 0x196, 0x314e: 0x197, 0x314f: 0x198,\n\t0x3150: 0x199, 0x3151: 0x19a, 0x3152: 0x19b, 0x3153: 0x19c, 0x3154: 0x19d, 0x3155: 0x19e, 0x3157: 0x19f,\n\t0x3158: 0x1a0, 0x3159: 0x1a1, 0x315a: 0x1a2, 0x315b: 0x1a3, 0x315c: 0x1a4, 0x315d: 0x1a5,\n\t// Block 0xc6, offset 0x3180\n\t0x3190: 0x09, 0x3191: 0x0a, 0x3192: 0x0b, 0x3193: 0x0c, 0x3196: 0x0d,\n\t0x319b: 0x0e, 0x319d: 0x0f, 0x319e: 0x10, 0x319f: 0xc3,\n\t0x31af: 0x12,\n\t// Block 0xc7, offset 0x31c0\n\t0x31c2: 0x01, 0x31c3: 0x1d7, 0x31c4: 0x1d8, 0x31c5: 0x1d9, 0x31c6: 0x05, 0x31c7: 0x1db,\n\t0x31c8: 0x1dc, 0x31c9: 0x08, 0x31ca: 0x09, 0x31cb: 0x0a, 0x31cc: 0x0b, 0x31cd: 0x0c, 0x31ce: 0x0d, 0x31cf: 0x0e,\n\t0x31d0: 0x0f, 0x31d1: 0x10, 0x31d2: 0x11, 0x31d3: 0x12, 0x31d4: 0x13, 0x31d5: 0x14, 0x31d6: 0x15, 0x31d7: 0x16,\n\t0x31d8: 0x17, 0x31d9: 0x18, 0x31da: 0x19, 0x31db: 0x1a, 0x31dc: 0x1b, 0x31dd: 0x1c, 0x31de: 0x1d, 0x31df: 0x1e,\n\t0x31e0: 0x01, 0x31e1: 0xc0, 0x31e2: 0xc1, 0x31e3: 0xc2, 0x31e4: 0x05,\n\t0x31ea: 0x06, 0x31ed: 0x07, 0x31ef: 0x08,\n\t0x31f0: 0xc4, 0x31f3: 0x15,\n\t// Block 0xc8, offset 0x3200\n\t0x3202: 0x01, 0x3203: 0x02, 0x3204: 0x03, 0x3205: 0x04, 0x3206: 0x05, 0x3207: 0x06,\n\t0x3208: 0x07, 0x3209: 0x08, 0x320a: 0x09, 0x320b: 0x0a, 0x320c: 0x0b, 0x320d: 0x0c, 0x320e: 0x0d, 0x320f: 0x0e,\n\t0x3210: 0x0f, 0x3211: 0x10, 0x3212: 0x5ef, 0x3213: 0x12, 0x3214: 0x13, 0x3215: 0x14, 0x3216: 0x15, 0x3217: 0x16,\n\t0x3218: 0x17, 0x3219: 0x18, 0x321a: 0x19, 0x321b: 0x1a, 0x321c: 0x1b, 0x321d: 0x1c, 0x321e: 0x1d, 0x321f: 0x1e,\n\t0x3220: 0x01, 0x3221: 0x02, 0x3222: 0x03, 0x3223: 0x04, 0x3224: 0x05,\n\t0x322a: 0x06, 0x322d: 0x07, 0x322f: 0x08,\n\t0x3230: 0x13, 0x3233: 0x15,\n\t// Block 0xc9, offset 0x3240\n\t0x3264: 0xfb, 0x3265: 0xfc, 0x3266: 0xfd, 0x3267: 0xfe,\n\t0x3268: 0xff, 0x3269: 0x100, 0x326a: 0x101, 0x326b: 0x102, 0x326c: 0x103, 0x326d: 0x104, 0x326e: 0x252, 0x326f: 0x106,\n\t0x3270: 0x5f4, 0x3271: 0x5f5, 0x3272: 0x5f6, 0x3273: 0x5f7, 0x3274: 0x5f8, 0x3275: 0x10c, 0x3276: 0x10d, 0x3277: 0x10e,\n\t0x3278: 0x10f, 0x3279: 0x110, 0x327a: 0x111, 0x327b: 0x5f9, 0x327c: 0x113, 0x327d: 0x114, 0x327e: 0x115, 0x327f: 0x116,\n\t// Block 0xca, offset 0x3280\n\t0x3282: 0x01, 0x3283: 0x02, 0x3284: 0x03, 0x3285: 0x04, 0x3286: 0x05, 0x3287: 0x06,\n\t0x3288: 0x07, 0x3289: 0x08, 0x328a: 0x09, 0x328b: 0x0a, 0x328c: 0x0b, 0x328d: 0x0c, 0x328e: 0x0d, 0x328f: 0x0e,\n\t0x3290: 0x0f, 0x3291: 0x10, 0x3292: 0x11, 0x3293: 0x12, 0x3294: 0x13, 0x3295: 0x14, 0x3296: 0x15, 0x3297: 0x16,\n\t0x3298: 0x5f0, 0x3299: 0x5f1, 0x329a: 0x5f2, 0x329b: 0x5f3, 0x329c: 0x1b, 0x329d: 0x1c, 0x329e: 0x1d, 0x329f: 0x1e,\n\t0x32a0: 0x01, 0x32a1: 0x02, 0x32a2: 0x03, 0x32a3: 0x04, 0x32a4: 0x05,\n\t0x32aa: 0x06, 0x32ad: 0x07, 0x32af: 0xc7,\n\t0x32b0: 0x13, 0x32b3: 0x15,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x3f, 0x32c1: 0x40, 0x32c2: 0x41, 0x32c3: 0x42, 0x32c4: 0x43, 0x32c5: 0x44, 0x32c6: 0x45, 0x32c7: 0x46,\n\t0x32c8: 0x47, 0x32c9: 0x48, 0x32ca: 0x49, 0x32cb: 0x4a, 0x32cc: 0x4b, 0x32cd: 0x4c, 0x32ce: 0x4d, 0x32cf: 0x4e,\n\t0x32d0: 0x4f, 0x32d1: 0x50, 0x32d2: 0x51, 0x32d3: 0x52, 0x32d4: 0x53, 0x32d5: 0x54, 0x32d6: 0x55, 0x32d7: 0x56,\n\t0x32d8: 0x57, 0x32d9: 0x58, 0x32da: 0x59, 0x32db: 0x5a, 0x32dc: 0x5b, 0x32dd: 0x5c, 0x32de: 0x5d, 0x32df: 0x5e,\n\t0x32e0: 0x5f, 0x32e1: 0x60, 0x32e2: 0x61, 0x32e3: 0x62, 0x32e4: 0x63, 0x32e5: 0x64, 0x32e6: 0x65, 0x32e7: 0x66,\n\t0x32e8: 0x67, 0x32e9: 0x68, 0x32ea: 0x69, 0x32ec: 0x6a, 0x32ed: 0x6b, 0x32ee: 0x6c, 0x32ef: 0x6d,\n\t0x32f0: 0x6e, 0x32f1: 0x6f, 0x32f3: 0x70, 0x32f4: 0x71, 0x32f5: 0x72, 0x32f6: 0x73, 0x32f7: 0x74,\n\t0x32f8: 0x606, 0x32f9: 0x607, 0x32fa: 0x608, 0x32fb: 0x609, 0x32fc: 0x60a, 0x32fd: 0x60b, 0x32fe: 0x60c, 0x32ff: 0x60d,\n\t// Block 0xcc, offset 0x3300\n\t0x3302: 0x01, 0x3303: 0x5fc, 0x3304: 0x5fd, 0x3305: 0x5fe, 0x3306: 0x5ff, 0x3307: 0x600,\n\t0x3308: 0x601, 0x3309: 0x08, 0x330a: 0x09, 0x330b: 0x0a, 0x330c: 0x602, 0x330d: 0x603, 0x330e: 0x604, 0x330f: 0x605,\n\t0x3310: 0x0f, 0x3311: 0x10, 0x3312: 0x11, 0x3313: 0x12, 0x3314: 0x13, 0x3315: 0x14, 0x3316: 0x15, 0x3317: 0x16,\n\t0x3318: 0x17, 0x3319: 0x18, 0x331a: 0x19, 0x331b: 0x1a, 0x331c: 0x1b, 0x331d: 0x1c, 0x331e: 0x1d, 0x331f: 0x1e,\n\t0x3320: 0x01, 0x3321: 0xc9, 0x3322: 0x03, 0x3323: 0x04, 0x3324: 0x05,\n\t0x332a: 0x06, 0x332d: 0x07, 0x332f: 0x08,\n\t0x3330: 0x13, 0x3333: 0x15,\n\t// Block 0xcd, offset 0x3340\n\t0x3342: 0x01, 0x3343: 0x610, 0x3344: 0x03, 0x3345: 0x04, 0x3346: 0x05, 0x3347: 0x06,\n\t0x3348: 0x07, 0x3349: 0x08, 0x334a: 0x09, 0x334b: 0x0a, 0x334c: 0x0b, 0x334d: 0x0c, 0x334e: 0x0d, 0x334f: 0x0e,\n\t0x3350: 0x0f, 0x3351: 0x10, 0x3352: 0x11, 0x3353: 0x12, 0x3354: 0x13, 0x3355: 0x14, 0x3356: 0x15, 0x3357: 0x16,\n\t0x3358: 0x17, 0x3359: 0x18, 0x335a: 0x19, 0x335b: 0x1a, 0x335c: 0x1b, 0x335d: 0x1c, 0x335e: 0x1d, 0x335f: 0x1e,\n\t0x3360: 0x01, 0x3361: 0x02, 0x3362: 0x03, 0x3363: 0x04, 0x3364: 0x05,\n\t0x336a: 0x06, 0x336d: 0x07, 0x336f: 0x08,\n\t0x3370: 0x13, 0x3373: 0x15,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x3f, 0x3381: 0x40, 0x3382: 0x41, 0x3383: 0x42, 0x3384: 0x43, 0x3385: 0x44, 0x3386: 0x45, 0x3387: 0x46,\n\t0x3388: 0x47, 0x3389: 0x48, 0x338a: 0x49, 0x338b: 0x4a, 0x338c: 0x4b, 0x338d: 0x4c, 0x338e: 0x4d, 0x338f: 0x4e,\n\t0x3390: 0x4f, 0x3391: 0x50, 0x3392: 0x51, 0x3393: 0x52, 0x3394: 0x53, 0x3395: 0x54, 0x3396: 0x55, 0x3397: 0x56,\n\t0x3398: 0x57, 0x3399: 0x58, 0x339a: 0x59, 0x339b: 0x5a, 0x339c: 0x5b, 0x339d: 0x5c, 0x339e: 0x5d, 0x339f: 0x5e,\n\t0x33a0: 0x5f, 0x33a1: 0x60, 0x33a2: 0x61, 0x33a3: 0x62, 0x33a4: 0x63, 0x33a5: 0x64, 0x33a6: 0x65, 0x33a7: 0x66,\n\t0x33a8: 0x67, 0x33a9: 0x68, 0x33aa: 0x69, 0x33ac: 0x6a, 0x33ad: 0x6b, 0x33ae: 0x6c, 0x33af: 0x6d,\n\t0x33b0: 0x6e, 0x33b1: 0x6f, 0x33b3: 0x70, 0x33b4: 0x71, 0x33b5: 0x72, 0x33b6: 0x73, 0x33b7: 0x74,\n\t0x33b8: 0x75, 0x33b9: 0x613, 0x33ba: 0x614, 0x33bb: 0x615, 0x33bc: 0x79, 0x33bd: 0x7a, 0x33be: 0x7b, 0x33bf: 0x7c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c2: 0x01, 0x33c3: 0x02, 0x33c4: 0x03, 0x33c5: 0x04, 0x33c6: 0x05, 0x33c7: 0x06,\n\t0x33c8: 0x07, 0x33c9: 0x08, 0x33ca: 0x09, 0x33cb: 0x0a, 0x33cc: 0x0b, 0x33cd: 0x0c, 0x33ce: 0x0d, 0x33cf: 0x0e,\n\t0x33d0: 0x0f, 0x33d1: 0x10, 0x33d2: 0x11, 0x33d3: 0x12, 0x33d4: 0x13, 0x33d5: 0x14, 0x33d6: 0x15, 0x33d7: 0x16,\n\t0x33d8: 0x17, 0x33d9: 0x18, 0x33da: 0x19, 0x33db: 0x1a, 0x33dc: 0x1b, 0x33dd: 0x1c, 0x33de: 0x1d, 0x33df: 0x1e,\n\t0x33e0: 0x01, 0x33e1: 0xcc, 0x33e2: 0x03, 0x33e3: 0x04, 0x33e4: 0x05,\n\t0x33ea: 0x06, 0x33ed: 0x07, 0x33ef: 0x08,\n\t0x33f0: 0x13, 0x33f3: 0x15,\n\t// Block 0xd0, offset 0x3400\n\t0x3400: 0x3f, 0x3401: 0x40, 0x3402: 0x41, 0x3403: 0x42, 0x3404: 0x43, 0x3405: 0x44, 0x3406: 0x45, 0x3407: 0x46,\n\t0x3408: 0x47, 0x3409: 0x48, 0x340a: 0x49, 0x340b: 0x4a, 0x340c: 0x4b, 0x340d: 0x4c, 0x340e: 0x4d, 0x340f: 0x4e,\n\t0x3410: 0x4f, 0x3411: 0x50, 0x3412: 0x51, 0x3413: 0x52, 0x3414: 0x53, 0x3415: 0x54, 0x3416: 0x55, 0x3417: 0x56,\n\t0x3418: 0x57, 0x3419: 0x58, 0x341a: 0x59, 0x341b: 0x5a, 0x341c: 0x5b, 0x341d: 0x5c, 0x341e: 0x5d, 0x341f: 0x5e,\n\t0x3420: 0x5f, 0x3421: 0x60, 0x3422: 0x61, 0x3423: 0x62, 0x3424: 0x63, 0x3425: 0x64, 0x3426: 0x65, 0x3427: 0x66,\n\t0x3428: 0x67, 0x3429: 0x68, 0x342a: 0x69, 0x342c: 0x6a, 0x342d: 0x6b, 0x342e: 0x6c, 0x342f: 0x6d,\n\t0x3430: 0x6e, 0x3431: 0x6f, 0x3433: 0x70, 0x3434: 0x71, 0x3435: 0x72, 0x3436: 0x73, 0x3437: 0x74,\n\t0x3438: 0x61d, 0x3439: 0x61e, 0x343a: 0x61f, 0x343b: 0x620, 0x343c: 0x79, 0x343d: 0x7a, 0x343e: 0x7b, 0x343f: 0x7c,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x7d, 0x3441: 0x7e, 0x3442: 0x7f, 0x3443: 0x80, 0x3444: 0x81, 0x3445: 0x82, 0x3446: 0x83, 0x3447: 0x84,\n\t0x3448: 0x85, 0x3449: 0x86, 0x344a: 0x87, 0x344b: 0x88, 0x344c: 0x89, 0x344d: 0x8a, 0x344e: 0x8b, 0x344f: 0x8c,\n\t0x3450: 0x8d, 0x3451: 0x8e, 0x3452: 0x8f, 0x3453: 0x90, 0x3454: 0x91, 0x3455: 0x92, 0x3456: 0x93, 0x3457: 0x94,\n\t0x3458: 0x95, 0x3459: 0x96, 0x345a: 0x97, 0x345b: 0x98, 0x345c: 0x99, 0x345d: 0x9a, 0x345e: 0x9b, 0x345f: 0x9c,\n\t0x3460: 0x9d, 0x3461: 0x9e, 0x3462: 0x9f, 0x3463: 0xa0, 0x3464: 0xa1, 0x3465: 0xa2, 0x3466: 0xa3, 0x3467: 0xa4,\n\t0x3468: 0xa5, 0x3469: 0xa6, 0x346a: 0xa7, 0x346b: 0xa8, 0x346c: 0xa9, 0x346d: 0xaa,\n\t0x3470: 0xab, 0x3471: 0xac, 0x3472: 0xad, 0x3473: 0xae, 0x3474: 0xaf, 0x3475: 0xb0, 0x3476: 0xb1, 0x3477: 0xb2,\n\t0x3478: 0xb3, 0x347a: 0x621, 0x347b: 0x622, 0x347c: 0x623, 0x347d: 0x624, 0x347e: 0x625, 0x347f: 0x626,\n\t// Block 0xd2, offset 0x3480\n\t0x3480: 0x627, 0x3481: 0xbb, 0x3482: 0xbc, 0x3483: 0xbd, 0x3484: 0xbe, 0x3485: 0xbf, 0x3486: 0x628, 0x3487: 0xc1,\n\t0x3488: 0x629, 0x3489: 0x62a, 0x348a: 0x62b, 0x348b: 0x62c, 0x348c: 0xc6, 0x348d: 0x62d, 0x348e: 0xc8, 0x348f: 0x62e,\n\t0x3490: 0x62f, 0x3491: 0x630, 0x3492: 0x631, 0x3493: 0x632, 0x3494: 0x633, 0x3495: 0x634, 0x3496: 0x635, 0x3497: 0x636,\n\t0x3498: 0x637, 0x3499: 0x638, 0x349a: 0x639, 0x349b: 0x63a, 0x349c: 0x63b, 0x349d: 0x63c, 0x349e: 0x63d, 0x349f: 0x63e,\n\t0x34a0: 0x63f, 0x34a1: 0x640, 0x34a2: 0x641, 0x34a3: 0x642, 0x34a4: 0x643, 0x34a5: 0x644, 0x34a6: 0x645, 0x34a7: 0x646,\n\t0x34a8: 0x647, 0x34a9: 0x648, 0x34aa: 0x649, 0x34ab: 0x64a, 0x34ac: 0x64b, 0x34ad: 0x64c, 0x34ae: 0x64d, 0x34af: 0x64e,\n\t0x34b0: 0x64f, 0x34b1: 0x650, 0x34b2: 0x651, 0x34b3: 0x652, 0x34b4: 0x653, 0x34b5: 0x654, 0x34b6: 0x655, 0x34b7: 0x656,\n\t0x34b8: 0x657, 0x34b9: 0x658, 0x34ba: 0x659, 0x34bb: 0x65a, 0x34bc: 0x65b, 0x34bd: 0x65c, 0x34be: 0x65d, 0x34bf: 0x65e,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x65f, 0x34c1: 0x660, 0x34c2: 0x661, 0x34c3: 0x662, 0x34c4: 0x663, 0x34c5: 0x664, 0x34c6: 0x665, 0x34c7: 0x666,\n\t0x34c8: 0x667, 0x34c9: 0x668, 0x34ca: 0x669, 0x34cb: 0x66a, 0x34cc: 0x66b, 0x34cd: 0x66c, 0x34ce: 0x66d, 0x34cf: 0x66e,\n\t0x34d0: 0x66f, 0x34d1: 0x670, 0x34d2: 0x671, 0x34d3: 0x672, 0x34d4: 0x673, 0x34d5: 0x674, 0x34d6: 0x675, 0x34d7: 0x676,\n\t0x34d8: 0x677, 0x34d9: 0x678, 0x34da: 0x679, 0x34db: 0x67a, 0x34dc: 0x67b, 0x34dd: 0x67c, 0x34de: 0x67d, 0x34df: 0x67e,\n\t0x34e0: 0x67f, 0x34e1: 0x680, 0x34e2: 0x681, 0x34e3: 0x682, 0x34e4: 0x683, 0x34e5: 0x684, 0x34e6: 0x685, 0x34e7: 0x686,\n\t0x34e8: 0x687, 0x34e9: 0x688, 0x34ea: 0x689, 0x34eb: 0x68a, 0x34ec: 0x68b, 0x34ed: 0x68c, 0x34ee: 0x68d, 0x34ef: 0x68e,\n\t0x34f0: 0x68f, 0x34f1: 0x690, 0x34f2: 0x691, 0x34f3: 0x692, 0x34f4: 0x693, 0x34f5: 0x694, 0x34f6: 0x695, 0x34f7: 0xca,\n\t0x34f8: 0x696, 0x34f9: 0x697, 0x34fa: 0x698, 0x34fb: 0x699, 0x34fc: 0x69a, 0x34fd: 0x69b, 0x34fe: 0x69c, 0x34ff: 0x69d,\n\t// Block 0xd4, offset 0x3500\n\t0x3500: 0x69e, 0x3501: 0x69f, 0x3502: 0x6a0, 0x3503: 0x6a1, 0x3504: 0x6a2, 0x3505: 0x6a3, 0x3506: 0x6a4, 0x3507: 0x6a5,\n\t0x3508: 0x6a6, 0x3509: 0x6a7, 0x350a: 0x6a8, 0x350b: 0x6a9, 0x350c: 0x6aa, 0x350d: 0x6ab, 0x350e: 0x6ac, 0x350f: 0x6ad,\n\t0x3510: 0x6ae, 0x3511: 0x6af, 0x3512: 0x6b0, 0x3513: 0x6b1, 0x3514: 0x6b2, 0x3515: 0x6b3, 0x3516: 0x6b4, 0x3517: 0x6b5,\n\t0x3518: 0x6b6, 0x3519: 0x6b7, 0x351a: 0x6b8, 0x351b: 0x6b9, 0x351c: 0x6ba, 0x351d: 0x6bb, 0x351e: 0x6bc, 0x351f: 0x6bd,\n\t0x3520: 0x6be, 0x3521: 0x6bf, 0x3522: 0x6c0, 0x3523: 0x6c1, 0x3524: 0x6c2, 0x3525: 0x6c3, 0x3526: 0x6c4, 0x3527: 0x6c5,\n\t0x3528: 0x6c6, 0x3529: 0x6c7, 0x352a: 0x6c8, 0x352b: 0x6c9, 0x352c: 0x6ca, 0x352d: 0x6cb, 0x352e: 0x6cc, 0x352f: 0x6cd,\n\t0x3530: 0x6ce, 0x3531: 0x6cf, 0x3532: 0x6d0, 0x3533: 0x6d1, 0x3534: 0x6d2, 0x3535: 0x6d3, 0x3536: 0x6d4, 0x3537: 0x6d5,\n\t0x3538: 0x6d6, 0x3539: 0x6d7, 0x353a: 0x6d8, 0x353b: 0x6d9, 0x353c: 0x6da, 0x353d: 0x6db, 0x353e: 0x6dc, 0x353f: 0x6dd,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x6de, 0x3541: 0x6df, 0x3542: 0x6e0, 0x3543: 0x6e1, 0x3544: 0x6e2, 0x3545: 0x6e3, 0x3546: 0x6e4, 0x3547: 0x6e5,\n\t0x3548: 0x6e6, 0x3549: 0x6e7, 0x354a: 0x6e8, 0x354b: 0x6e9, 0x354c: 0x6ea, 0x354d: 0x6eb, 0x354e: 0x6ec, 0x354f: 0x6ed,\n\t0x3550: 0x6ee, 0x3551: 0x6ef, 0x3552: 0x6f0, 0x3553: 0x6f1, 0x3554: 0x6f2, 0x3555: 0x6f3, 0x3556: 0x6f4, 0x3557: 0x6f5,\n\t0x3558: 0x6f6, 0x3559: 0x6f7, 0x355a: 0x6f8, 0x355b: 0x6f9, 0x355c: 0x6fa, 0x355d: 0x6fb, 0x355e: 0x6fc, 0x355f: 0x6fd,\n\t0x3560: 0x6fe, 0x3561: 0x6ff, 0x3562: 0x700, 0x3563: 0x701, 0x3564: 0x702, 0x3565: 0x703, 0x3566: 0x704, 0x3567: 0x705,\n\t0x3568: 0x706, 0x3569: 0x707, 0x356a: 0x708, 0x356b: 0x709, 0x356c: 0x70a, 0x356d: 0x70b, 0x356e: 0x70c, 0x356f: 0x70d,\n\t0x3570: 0x70e, 0x3571: 0x70f, 0x3572: 0x710, 0x3573: 0x711, 0x3574: 0x712, 0x3575: 0x713, 0x3576: 0x714, 0x3577: 0x715,\n\t0x3578: 0x716, 0x3579: 0x717, 0x357a: 0x718, 0x357b: 0x719, 0x357c: 0x71a, 0x357d: 0x71b, 0x357e: 0x71c, 0x357f: 0x71d,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x71e, 0x3581: 0x71f, 0x3582: 0x720, 0x3583: 0x721, 0x3584: 0x722, 0x3585: 0x723, 0x3586: 0x724, 0x3587: 0x725,\n\t0x3588: 0x726, 0x3589: 0x727, 0x358a: 0x728, 0x358b: 0x729, 0x358c: 0x72a, 0x358d: 0x72b, 0x358e: 0x72c, 0x358f: 0x72d,\n\t0x3590: 0x72e, 0x3591: 0x72f, 0x3592: 0x730, 0x3593: 0x731, 0x3594: 0x732, 0x3595: 0x733, 0x3596: 0x734, 0x3597: 0x735,\n\t0x3598: 0x736, 0x3599: 0x737, 0x359a: 0x738, 0x359b: 0x739, 0x359c: 0x73a, 0x359d: 0x73b, 0x359e: 0x73c, 0x359f: 0x73d,\n\t0x35a0: 0x73e, 0x35a1: 0x73f, 0x35a2: 0x740, 0x35a3: 0x741, 0x35a4: 0x742, 0x35a5: 0x743, 0x35a6: 0x744, 0x35a7: 0x745,\n\t0x35a8: 0x746, 0x35a9: 0x747, 0x35aa: 0x748, 0x35ab: 0x749, 0x35ac: 0x74a, 0x35ad: 0x74b, 0x35ae: 0x74c, 0x35af: 0x74d,\n\t0x35b0: 0x74e, 0x35b1: 0x74f, 0x35b2: 0x750, 0x35b3: 0x751, 0x35b4: 0x752, 0x35b5: 0x753, 0x35b6: 0x754, 0x35b7: 0x755,\n\t0x35b8: 0x756, 0x35b9: 0x757, 0x35ba: 0x758, 0x35bb: 0x759, 0x35bc: 0x75a, 0x35bd: 0x75b, 0x35be: 0x75c, 0x35bf: 0x75d,\n\t// Block 0xd7, offset 0x35c0\n\t0x35c0: 0x75e, 0x35c1: 0x75f, 0x35c2: 0x760, 0x35c3: 0x761, 0x35c4: 0x762, 0x35c5: 0x763, 0x35c6: 0x764, 0x35c7: 0x765,\n\t0x35c8: 0x766, 0x35c9: 0x767, 0x35ca: 0x768, 0x35cb: 0x769, 0x35cc: 0x76a, 0x35cd: 0x76b, 0x35ce: 0x76c, 0x35cf: 0x76d,\n\t0x35d0: 0x76e, 0x35d1: 0x76f, 0x35d2: 0x770, 0x35d3: 0x771, 0x35d4: 0x772, 0x35d5: 0x773, 0x35d6: 0x774, 0x35d7: 0x775,\n\t0x35d8: 0x776, 0x35d9: 0x777, 0x35da: 0x778, 0x35db: 0x779, 0x35dc: 0x77a, 0x35dd: 0x77b, 0x35de: 0x77c, 0x35df: 0x77d,\n\t0x35e0: 0x77e, 0x35e1: 0x77f, 0x35e2: 0x780, 0x35e3: 0x781, 0x35e4: 0x782, 0x35e5: 0x783, 0x35e6: 0x784, 0x35e7: 0x785,\n\t0x35e8: 0x786, 0x35e9: 0x787, 0x35ea: 0x788, 0x35eb: 0x789, 0x35ec: 0x78a, 0x35ed: 0x78b, 0x35ee: 0x78c, 0x35ef: 0x78d,\n\t0x35f0: 0x78e, 0x35f1: 0x78f, 0x35f2: 0x790, 0x35f3: 0x791, 0x35f4: 0x792, 0x35f5: 0x793, 0x35f6: 0x794, 0x35f7: 0x795,\n\t0x35f8: 0x796, 0x35f9: 0x797, 0x35fa: 0x798, 0x35fb: 0x799, 0x35fc: 0x79a, 0x35fd: 0x79b, 0x35fe: 0x79c, 0x35ff: 0x79d,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x79e, 0x3601: 0x79f, 0x3602: 0x7a0, 0x3603: 0x7a1, 0x3604: 0x7a2, 0x3605: 0x7a3, 0x3606: 0x7a4, 0x3607: 0x7a5,\n\t0x3608: 0x7a6, 0x3609: 0x7a7, 0x360a: 0x7a8, 0x360b: 0x7a9, 0x360c: 0x7aa, 0x360d: 0x7ab, 0x360e: 0x7ac, 0x360f: 0x7ad,\n\t0x3610: 0x7ae, 0x3611: 0x7af, 0x3612: 0x7b0, 0x3613: 0x7b1, 0x3614: 0x7b2, 0x3615: 0x7b3, 0x3616: 0x7b4, 0x3617: 0x7b5,\n\t0x3618: 0x7b6, 0x3619: 0x7b7, 0x361a: 0x7b8, 0x361b: 0x7b9, 0x361c: 0x7ba, 0x361d: 0x7bb, 0x361e: 0x7bc, 0x361f: 0x7bd,\n\t0x3620: 0x7be, 0x3621: 0x7bf, 0x3622: 0x7c0, 0x3623: 0x7c1, 0x3624: 0x7c2, 0x3625: 0x7c3, 0x3626: 0x7c4, 0x3627: 0x7c5,\n\t0x3628: 0x7c6, 0x3629: 0x7c7, 0x362a: 0x7c8, 0x362b: 0x7c9, 0x362c: 0x7ca, 0x362d: 0x7cb, 0x362e: 0x7cc, 0x362f: 0x7cd,\n\t0x3630: 0x7ce, 0x3631: 0x7cf, 0x3632: 0x7d0, 0x3633: 0x7d1, 0x3634: 0x7d2, 0x3635: 0x7d3, 0x3636: 0x7d4, 0x3637: 0x7d5,\n\t0x3638: 0x7d6, 0x3639: 0x7d7, 0x363a: 0x7d8, 0x363b: 0x7d9, 0x363c: 0x7da, 0x363d: 0x7db, 0x363e: 0x7dc, 0x363f: 0x7dd,\n\t// Block 0xd9, offset 0x3640\n\t0x3664: 0x7de, 0x3665: 0x7df, 0x3666: 0x7e0, 0x3667: 0x7e1,\n\t0x3668: 0x7e2, 0x3669: 0x7e3, 0x366a: 0x7e4, 0x366b: 0x7e5, 0x366c: 0x103, 0x366d: 0x104, 0x366e: 0x105, 0x366f: 0x106,\n\t0x3670: 0x107, 0x3671: 0x108, 0x3672: 0x109, 0x3673: 0x10a, 0x3674: 0x10b, 0x3675: 0x10c, 0x3676: 0x10d, 0x3677: 0x10e,\n\t0x3678: 0x10f, 0x3679: 0x110, 0x367a: 0x111, 0x367b: 0x112, 0x367c: 0x113, 0x367d: 0x114, 0x367e: 0x115, 0x367f: 0x116,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x18b, 0x3681: 0x18c, 0x3682: 0x18d, 0x3683: 0x18e, 0x3684: 0x18f, 0x3685: 0x190, 0x3686: 0x191, 0x3687: 0x192,\n\t0x3688: 0x7e6, 0x3689: 0x7e7, 0x368c: 0x195, 0x368d: 0x196, 0x368e: 0x197, 0x368f: 0x198,\n\t0x3690: 0x199, 0x3691: 0x19a, 0x3692: 0x19b, 0x3693: 0x19c, 0x3694: 0x19d, 0x3695: 0x19e, 0x3697: 0x19f,\n\t0x3698: 0x1a0, 0x3699: 0x1a1, 0x369a: 0x1a2, 0x369b: 0x1a3, 0x369c: 0x1a4, 0x369d: 0x1a5,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x7e8, 0x36c1: 0x7e9, 0x36c2: 0x7ea, 0x36c3: 0x7eb, 0x36c4: 0x7ec, 0x36c5: 0x7ed, 0x36c6: 0x7ee, 0x36c7: 0x7ef,\n\t0x36c8: 0x7f0, 0x36c9: 0x7f1, 0x36ca: 0x7f2, 0x36cb: 0x7f3, 0x36cc: 0x7f4, 0x36cd: 0x7f5, 0x36ce: 0x7f6, 0x36cf: 0x7f7,\n\t0x36d0: 0x7f8, 0x36d1: 0x7f9, 0x36d2: 0x7fa, 0x36d3: 0x7fb, 0x36d4: 0x7fc, 0x36d5: 0x7fd, 0x36d6: 0x7fe, 0x36d7: 0x7ff,\n\t0x36d8: 0x800, 0x36d9: 0x801, 0x36da: 0x802, 0x36db: 0x803, 0x36dc: 0x804, 0x36dd: 0x805, 0x36de: 0x806, 0x36df: 0x807,\n\t0x36e0: 0x808, 0x36e1: 0x809, 0x36e2: 0x80a, 0x36e3: 0x80b, 0x36e4: 0x80c, 0x36e5: 0x80d, 0x36e6: 0x80e, 0x36e7: 0x80f,\n\t0x36e8: 0x810, 0x36e9: 0x811, 0x36ea: 0x812, 0x36eb: 0x813, 0x36ec: 0x814, 0x36ed: 0x815, 0x36ee: 0x816, 0x36ef: 0x817,\n\t0x36f0: 0x818, 0x36f1: 0x819, 0x36f2: 0x81a, 0x36f3: 0x81b, 0x36f4: 0x81c, 0x36f5: 0x81d, 0x36f6: 0x81e, 0x36f7: 0x81f,\n\t0x36f8: 0x820, 0x36f9: 0x821, 0x36fa: 0x822, 0x36fb: 0x823, 0x36fc: 0x824, 0x36fd: 0x825, 0x36fe: 0x826, 0x36ff: 0x827,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x828, 0x3701: 0x829, 0x3702: 0x82a, 0x3703: 0x82b, 0x3704: 0x82c, 0x3705: 0x82d, 0x3706: 0x82e, 0x3707: 0x82f,\n\t0x3708: 0x830, 0x3709: 0x831, 0x370a: 0x832, 0x370b: 0x833, 0x370c: 0x834, 0x370d: 0x835, 0x370e: 0x836, 0x370f: 0x837,\n\t0x3710: 0x838, 0x3711: 0x839, 0x3712: 0x83a, 0x3713: 0x83b, 0x3714: 0x83c, 0x3715: 0x83d, 0x3716: 0x83e, 0x3717: 0x83f,\n\t0x3718: 0x840, 0x3719: 0x841, 0x371a: 0x842, 0x371b: 0x843, 0x371c: 0x844, 0x371d: 0x845, 0x371e: 0x846, 0x371f: 0x847,\n\t0x3720: 0x848, 0x3721: 0x849, 0x3722: 0x84a, 0x3723: 0x84b, 0x3724: 0x84c, 0x3725: 0x84d, 0x3726: 0x84e, 0x3727: 0x84f,\n\t0x3728: 0x850, 0x3729: 0x851, 0x372a: 0x852, 0x372b: 0x853, 0x372c: 0x854, 0x372d: 0x855, 0x372e: 0x856, 0x372f: 0x857,\n\t0x3730: 0x858, 0x3731: 0x859, 0x3732: 0x85a, 0x3733: 0x85b, 0x3734: 0x85c, 0x3735: 0x85d, 0x3736: 0x85e, 0x3737: 0x85f,\n\t0x3738: 0x860, 0x3739: 0x861, 0x373a: 0x862, 0x373b: 0x863, 0x373c: 0x864, 0x373d: 0x865, 0x373e: 0x866, 0x373f: 0x867,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x868, 0x3741: 0x869, 0x3742: 0x86a, 0x3743: 0x86b, 0x3744: 0x86c, 0x3745: 0x86d, 0x3746: 0x86e, 0x3747: 0x86f,\n\t0x3748: 0x870, 0x3749: 0x871, 0x374a: 0x872, 0x374b: 0x873, 0x374c: 0x874, 0x374d: 0x875, 0x374e: 0x876, 0x374f: 0x877,\n\t0x3750: 0x878, 0x3751: 0x879, 0x3752: 0x87a, 0x3753: 0x87b, 0x3754: 0x87c, 0x3755: 0x87d, 0x3756: 0x87e, 0x3757: 0x87f,\n\t0x3758: 0x880, 0x3759: 0x881, 0x375a: 0x882, 0x375b: 0x883, 0x375c: 0x884, 0x375d: 0x885, 0x375e: 0x886, 0x375f: 0x887,\n\t0x3760: 0x888, 0x3761: 0x889, 0x3762: 0x88a, 0x3763: 0x88b, 0x3764: 0x88c, 0x3765: 0x88d, 0x3766: 0x88e, 0x3767: 0x88f,\n\t0x3768: 0x890, 0x3769: 0x891, 0x376a: 0x892, 0x376b: 0x893, 0x376c: 0x894, 0x376d: 0x895, 0x376e: 0x896, 0x376f: 0x897,\n\t0x3770: 0x898, 0x3771: 0x899, 0x3772: 0x89a, 0x3773: 0x89b, 0x3774: 0x89c, 0x3775: 0x89d, 0x3776: 0x89e, 0x3777: 0x89f,\n\t0x3778: 0x8a0, 0x3779: 0x8a1, 0x377a: 0x8a2, 0x377b: 0x8a3, 0x377c: 0x8a4, 0x377d: 0x8a5, 0x377e: 0x8a6, 0x377f: 0x8a7,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x8a8, 0x3781: 0x8a9, 0x3782: 0x8aa, 0x3783: 0x8ab, 0x3784: 0x8ac, 0x3785: 0x8ad, 0x3786: 0x8ae, 0x3787: 0x8af,\n\t0x3788: 0x8b0, 0x3789: 0x8b1, 0x378a: 0x8b2, 0x378b: 0x8b3, 0x378c: 0x8b4, 0x378d: 0x8b5, 0x378e: 0x8b6, 0x378f: 0x8b7,\n\t0x3790: 0x8b8, 0x3791: 0x8b9, 0x3792: 0x8ba, 0x3793: 0x8bb, 0x3794: 0x8bc, 0x3795: 0x8bd, 0x3796: 0x8be, 0x3797: 0x8bf,\n\t0x3798: 0x8c0, 0x3799: 0x8c1, 0x379a: 0x8c2, 0x379b: 0x8c3, 0x379c: 0x8c4, 0x379d: 0x8c5, 0x379e: 0x8c6, 0x379f: 0x8c7,\n\t0x37a0: 0x8c8, 0x37a1: 0x8c9, 0x37a2: 0x8ca, 0x37a3: 0x8cb, 0x37a4: 0x8cc, 0x37a5: 0x8cd, 0x37a6: 0x8ce, 0x37a7: 0x8cf,\n\t0x37a8: 0x8d0, 0x37a9: 0x8d1, 0x37aa: 0x8d2, 0x37ab: 0x8d3, 0x37ac: 0x8d4, 0x37ad: 0x8d5, 0x37ae: 0x8d6, 0x37af: 0x8d7,\n\t0x37b0: 0x8d8, 0x37b1: 0x8d9, 0x37b2: 0x8da, 0x37b3: 0x8db, 0x37b4: 0x8dc, 0x37b5: 0x8dd, 0x37b6: 0x8de, 0x37b7: 0x8df,\n\t0x37b8: 0x8e0, 0x37b9: 0x8e1, 0x37ba: 0x8e2, 0x37bb: 0x8e3, 0x37bc: 0x8e4, 0x37bd: 0x8e5, 0x37be: 0x8e6, 0x37bf: 0x8e7,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x8e8, 0x37c1: 0x8e9, 0x37c2: 0x8ea, 0x37c3: 0x8eb, 0x37c4: 0x8ec, 0x37c5: 0x8ed, 0x37c6: 0x8ee, 0x37c7: 0x8ef,\n\t0x37c8: 0x8f0, 0x37c9: 0x8f1, 0x37ca: 0x8f2, 0x37cb: 0x8f3, 0x37cc: 0x8f4, 0x37cd: 0x8f5, 0x37ce: 0x8f6, 0x37cf: 0x8f7,\n\t0x37d0: 0x8f8, 0x37d1: 0x8f9, 0x37d2: 0x8fa, 0x37d3: 0x8fb, 0x37d4: 0x8fc, 0x37d5: 0x8fd, 0x37d6: 0x8fe, 0x37d7: 0x8ff,\n\t0x37d8: 0x900, 0x37d9: 0x901, 0x37da: 0x902, 0x37db: 0x903, 0x37dc: 0x904, 0x37dd: 0x905, 0x37de: 0x906, 0x37df: 0x907,\n\t0x37e0: 0x908, 0x37e1: 0x909, 0x37e2: 0x90a, 0x37e3: 0x90b, 0x37e4: 0x90c, 0x37e5: 0x90d, 0x37e6: 0x90e, 0x37e7: 0x90f,\n\t0x37e8: 0x910, 0x37e9: 0x911, 0x37ea: 0x912, 0x37eb: 0x913, 0x37ec: 0x914, 0x37ed: 0x915, 0x37ee: 0x916, 0x37ef: 0x917,\n\t0x37f0: 0x918, 0x37f1: 0x919, 0x37f2: 0x91a, 0x37f3: 0x91b, 0x37f4: 0x91c, 0x37f5: 0x91d, 0x37f6: 0x91e, 0x37f7: 0x91f,\n\t0x37f8: 0x920, 0x37f9: 0x921, 0x37fa: 0x922, 0x37fb: 0x923, 0x37fc: 0x924, 0x37fd: 0x925, 0x37fe: 0x926, 0x37ff: 0x927,\n\t// Block 0xe0, offset 0x3800\n\t0x3800: 0x928, 0x3801: 0x929, 0x3802: 0x92a, 0x3803: 0x92b, 0x3804: 0x92c, 0x3805: 0x92d, 0x3806: 0x92e, 0x3807: 0x92f,\n\t0x3808: 0x930, 0x3809: 0x931, 0x380a: 0x932, 0x380b: 0x933, 0x380c: 0x934, 0x380d: 0x935, 0x380e: 0x936, 0x380f: 0x937,\n\t0x3810: 0x938, 0x3811: 0x939, 0x3812: 0x93a, 0x3813: 0x93b, 0x3814: 0x93c, 0x3815: 0x93d, 0x3816: 0x93e, 0x3817: 0x93f,\n\t0x3818: 0x940, 0x3819: 0x941, 0x381a: 0x942, 0x381b: 0x943, 0x381c: 0x944, 0x381d: 0x945, 0x381e: 0x946, 0x381f: 0x947,\n\t0x3820: 0x948, 0x3821: 0x949, 0x3822: 0x94a, 0x3823: 0x94b, 0x3824: 0x94c, 0x3825: 0x94d, 0x3826: 0x94e, 0x3827: 0x94f,\n\t0x3828: 0x950, 0x3829: 0x951, 0x382a: 0x952, 0x382b: 0x953, 0x382c: 0x954, 0x382d: 0x955, 0x382e: 0x956, 0x382f: 0x957,\n\t0x3830: 0x958, 0x3831: 0x959, 0x3832: 0x95a, 0x3833: 0x95b, 0x3834: 0x95c, 0x3835: 0x95d, 0x3836: 0x95e, 0x3837: 0x95f,\n\t0x3838: 0x960, 0x3839: 0x961, 0x383a: 0x962, 0x383b: 0x963, 0x383c: 0x964, 0x383d: 0x965, 0x383e: 0x966, 0x383f: 0x967,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x968, 0x3841: 0x969, 0x3842: 0x96a, 0x3843: 0x96b, 0x3844: 0x96c, 0x3845: 0x96d, 0x3846: 0x96e, 0x3847: 0x96f,\n\t0x3848: 0x970, 0x3849: 0x971, 0x384a: 0x972, 0x384b: 0x973, 0x384c: 0x974, 0x384d: 0x975, 0x384e: 0x976, 0x384f: 0x977,\n\t0x3850: 0x978, 0x3851: 0x979, 0x3852: 0x97a, 0x3853: 0x97b, 0x3854: 0x97c, 0x3855: 0x97d, 0x3856: 0x97e, 0x3857: 0x97f,\n\t0x3858: 0x980, 0x3859: 0x981, 0x385a: 0x982, 0x385b: 0x983, 0x385c: 0x984, 0x385d: 0x985, 0x385e: 0x986, 0x385f: 0x987,\n\t0x3860: 0x988, 0x3861: 0x989, 0x3862: 0x98a, 0x3863: 0x98b, 0x3864: 0x98c, 0x3865: 0x98d, 0x3866: 0x98e, 0x3867: 0x98f,\n\t0x3868: 0x990, 0x3869: 0x991, 0x386a: 0x992, 0x386b: 0x993, 0x386c: 0x994, 0x386d: 0x995, 0x386e: 0x996, 0x386f: 0x997,\n\t0x3870: 0x998, 0x3871: 0x999, 0x3872: 0x99a, 0x3873: 0x99b, 0x3874: 0x99c, 0x3875: 0x99d, 0x3876: 0x99e, 0x3877: 0x99f,\n\t0x3878: 0x9a0, 0x3879: 0x9a1, 0x387a: 0x9a2, 0x387b: 0x9a3, 0x387c: 0x9a4, 0x387d: 0x9a5, 0x387e: 0x9a6, 0x387f: 0x9a7,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x9a8, 0x3881: 0x9a9, 0x3882: 0x9aa, 0x3883: 0x9ab, 0x3884: 0x9ac, 0x3885: 0x9ad, 0x3886: 0x9ae, 0x3887: 0x9af,\n\t0x3888: 0x9b0, 0x3889: 0x9b1, 0x388a: 0x9b2, 0x388b: 0x9b3, 0x388c: 0x9b4, 0x388d: 0x9b5, 0x388e: 0x9b6, 0x388f: 0x9b7,\n\t0x3890: 0x9b8, 0x3891: 0x9b9, 0x3892: 0x9ba, 0x3893: 0x9bb, 0x3894: 0x9bc, 0x3895: 0x9bd, 0x3896: 0x9be, 0x3897: 0x9bf,\n\t0x3898: 0x9c0, 0x3899: 0x9c1, 0x389a: 0x9c2, 0x389b: 0x9c3, 0x389c: 0x9c4, 0x389d: 0x9c5, 0x389e: 0x9c6, 0x389f: 0x9c7,\n\t0x38a0: 0x9c8, 0x38a1: 0x9c9, 0x38a2: 0x9ca, 0x38a3: 0x9cb, 0x38a4: 0x9cc, 0x38a5: 0x9cd, 0x38a6: 0x9ce, 0x38a7: 0x9cf,\n\t0x38a8: 0x9d0, 0x38a9: 0x9d1, 0x38aa: 0x9d2, 0x38ab: 0x9d3, 0x38ac: 0x9d4, 0x38ad: 0x9d5, 0x38ae: 0x9d6, 0x38af: 0x9d7,\n\t0x38b0: 0x9d8, 0x38b1: 0x9d9, 0x38b2: 0x9da, 0x38b3: 0x9db, 0x38b4: 0x9dc, 0x38b5: 0x9dd, 0x38b6: 0x9de, 0x38b7: 0x9df,\n\t0x38b8: 0x9e0, 0x38b9: 0x9e1, 0x38ba: 0x9e2, 0x38bb: 0x9e3, 0x38bc: 0x9e4, 0x38bd: 0x9e5, 0x38be: 0x9e6, 0x38bf: 0x9e7,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x9e8, 0x38c1: 0x9e9, 0x38c2: 0x9ea, 0x38c3: 0x9eb, 0x38c4: 0x9ec, 0x38c5: 0x9ed, 0x38c6: 0x9ee, 0x38c7: 0x9ef,\n\t0x38c8: 0x9f0, 0x38c9: 0x9f1, 0x38ca: 0x9f2, 0x38cb: 0x9f3, 0x38cc: 0x9f4, 0x38cd: 0x9f5, 0x38ce: 0x9f6, 0x38cf: 0x9f7,\n\t0x38d0: 0x9f8, 0x38d1: 0x9f9, 0x38d2: 0x9fa, 0x38d3: 0x9fb, 0x38d4: 0x9fc, 0x38d5: 0x9fd, 0x38d6: 0x9fe, 0x38d7: 0x9ff,\n\t0x38d8: 0xa00, 0x38d9: 0xa01, 0x38da: 0xa02, 0x38db: 0xa03, 0x38dc: 0xa04, 0x38dd: 0xa05, 0x38de: 0xa06, 0x38df: 0xa07,\n\t0x38e0: 0xa08, 0x38e1: 0xa09, 0x38e2: 0xa0a, 0x38e3: 0xa0b, 0x38e4: 0xa0c, 0x38e5: 0xa0d, 0x38e6: 0xa0e, 0x38e7: 0xa0f,\n\t0x38e8: 0xa10, 0x38e9: 0xa11, 0x38ea: 0xa12, 0x38eb: 0xa13, 0x38ec: 0xa14, 0x38ed: 0xa15, 0x38ee: 0xa16, 0x38ef: 0xa17,\n\t0x38f0: 0xa18, 0x38f1: 0xa19, 0x38f2: 0xa1a, 0x38f3: 0xa1b, 0x38f4: 0xa1c, 0x38f5: 0xa1d, 0x38f6: 0xa1e, 0x38f7: 0xa1f,\n\t0x38f8: 0xa20, 0x38f9: 0xa21, 0x38fa: 0xa22, 0x38fb: 0xa23, 0x38fc: 0xa24, 0x38fd: 0xa25, 0x38fe: 0xa26, 0x38ff: 0xa27,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0xa28, 0x3901: 0xa29, 0x3902: 0xa2a, 0x3903: 0xa2b, 0x3904: 0xa2c, 0x3905: 0xa2d, 0x3906: 0xa2e, 0x3907: 0xa2f,\n\t0x3908: 0xa30, 0x3909: 0xa31, 0x390a: 0xa32, 0x390b: 0xa33, 0x390c: 0xa34, 0x390d: 0xa35, 0x390e: 0xa36, 0x390f: 0xa37,\n\t0x3910: 0xa38, 0x3911: 0xa39, 0x3912: 0xa3a, 0x3913: 0xa3b, 0x3914: 0xa3c, 0x3915: 0xa3d, 0x3916: 0xa3e, 0x3917: 0xa3f,\n\t0x3918: 0xa40, 0x3919: 0xa41, 0x391a: 0xa42, 0x391b: 0xa43, 0x391c: 0xa44, 0x391d: 0xa45, 0x391e: 0xa46, 0x391f: 0xa47,\n\t0x3920: 0xa48, 0x3921: 0xa49, 0x3922: 0xa4a, 0x3923: 0xa4b, 0x3924: 0xa4c, 0x3925: 0xa4d, 0x3926: 0xa4e, 0x3927: 0xa4f,\n\t0x3928: 0xa50, 0x3929: 0xa51, 0x392a: 0xa52, 0x392b: 0xa53, 0x392c: 0xa54, 0x392d: 0xa55, 0x392e: 0xa56, 0x392f: 0xa57,\n\t0x3930: 0xa58, 0x3931: 0xa59, 0x3932: 0xa5a, 0x3933: 0xa5b, 0x3934: 0xa5c, 0x3935: 0xa5d, 0x3936: 0xa5e, 0x3937: 0xa5f,\n\t0x3938: 0xa60, 0x3939: 0xa61, 0x393a: 0xa62, 0x393b: 0xa63, 0x393c: 0xa64, 0x393d: 0xa65, 0x393e: 0xa66, 0x393f: 0xa67,\n\t// Block 0xe5, offset 0x3940\n\t0x3940: 0xa68, 0x3941: 0xa69, 0x3942: 0xa6a, 0x3943: 0xa6b, 0x3944: 0xa6c, 0x3945: 0xa6d, 0x3946: 0xa6e, 0x3947: 0xa6f,\n\t0x3948: 0xa70, 0x3949: 0xa71, 0x394a: 0xa72, 0x394b: 0xa73, 0x394c: 0xa74, 0x394d: 0xa75, 0x394e: 0xa76, 0x394f: 0xa77,\n\t0x3950: 0xa78, 0x3951: 0xa79, 0x3952: 0xa7a, 0x3953: 0xa7b, 0x3954: 0xa7c, 0x3955: 0xa7d, 0x3956: 0xa7e, 0x3957: 0xa7f,\n\t0x3958: 0xa80, 0x3959: 0xa81, 0x395a: 0xa82, 0x395b: 0xa83, 0x395e: 0xa84,\n\t0x3961: 0xa85, 0x3962: 0xa86,\n\t0x3968: 0xa87, 0x396a: 0xa88,\n\t0x397a: 0xa89, 0x397b: 0xa8a, 0x397e: 0xa8b,\n\t// Block 0xe6, offset 0x3980\n\t0x3981: 0xa8c, 0x3982: 0xa8d, 0x3983: 0xa8e, 0x3984: 0xa8f,\n\t0x3988: 0xa90, 0x398b: 0xa91, 0x398c: 0xa92, 0x398d: 0xa93, 0x398f: 0xa94,\n\t0x3990: 0xa95, 0x3992: 0xa96, 0x3993: 0xa97, 0x3994: 0xa98, 0x3997: 0xa99,\n\t0x3998: 0xa9a, 0x399a: 0xa9b, 0x399b: 0xa9c,\n\t// Block 0xe7, offset 0x39c0\n\t0x39e0: 0xa9d, 0x39e1: 0xa9e, 0x39e2: 0xa9f, 0x39e3: 0xaa0, 0x39e4: 0xaa1, 0x39e5: 0xaa2, 0x39e6: 0xaa3, 0x39e7: 0xaa4,\n\t0x39e8: 0xaa5,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a10: 0x09, 0x3a11: 0x0a, 0x3a12: 0x0b, 0x3a13: 0x0c, 0x3a16: 0x0d,\n\t0x3a1b: 0x0e, 0x3a1d: 0x0f, 0x3a1e: 0x10, 0x3a1f: 0xd8,\n\t0x3a20: 0xd9, 0x3a21: 0xda, 0x3a22: 0xdb, 0x3a23: 0xdc, 0x3a24: 0xdd, 0x3a25: 0xde, 0x3a26: 0xdf, 0x3a27: 0xe0,\n\t0x3a28: 0xe1, 0x3a29: 0xe2, 0x3a2a: 0xe3, 0x3a2b: 0xe4, 0x3a2f: 0xe5,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a42: 0x01, 0x3a43: 0x618, 0x3a44: 0x619, 0x3a45: 0x61a, 0x3a46: 0x05, 0x3a47: 0x61b,\n\t0x3a48: 0x61c, 0x3a49: 0x08, 0x3a4a: 0x09, 0x3a4b: 0x0a, 0x3a4c: 0x0b, 0x3a4d: 0x0c, 0x3a4e: 0x0d, 0x3a4f: 0x0e,\n\t0x3a50: 0x0f, 0x3a51: 0x10, 0x3a52: 0x11, 0x3a53: 0x12, 0x3a54: 0x13, 0x3a55: 0x14, 0x3a56: 0x15, 0x3a57: 0x16,\n\t0x3a58: 0x17, 0x3a59: 0x18, 0x3a5a: 0x19, 0x3a5b: 0x1a, 0x3a5c: 0x1b, 0x3a5d: 0x1c, 0x3a5e: 0x1d, 0x3a5f: 0x1e,\n\t0x3a60: 0x01, 0x3a61: 0xce, 0x3a62: 0xcf, 0x3a63: 0xd0, 0x3a64: 0xd1, 0x3a65: 0xd2, 0x3a66: 0xd3, 0x3a67: 0xd4,\n\t0x3a68: 0xd5, 0x3a69: 0xd6, 0x3a6a: 0x06, 0x3a6d: 0x07, 0x3a6f: 0xd7,\n\t0x3a70: 0xe6, 0x3a73: 0x15,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x7d, 0x3a81: 0x7e, 0x3a82: 0x7f, 0x3a83: 0x80, 0x3a84: 0x81, 0x3a85: 0x82, 0x3a86: 0x83, 0x3a87: 0x84,\n\t0x3a88: 0x85, 0x3a89: 0x86, 0x3a8a: 0x87, 0x3a8b: 0x88, 0x3a8c: 0x89, 0x3a8d: 0x8a, 0x3a8e: 0x8b, 0x3a8f: 0x8c,\n\t0x3a90: 0x8d, 0x3a91: 0x8e, 0x3a92: 0x8f, 0x3a93: 0x90, 0x3a94: 0x91, 0x3a95: 0x92, 0x3a96: 0x93, 0x3a97: 0x94,\n\t0x3a98: 0x95, 0x3a99: 0x96, 0x3a9a: 0x97, 0x3a9b: 0x98, 0x3a9c: 0x99, 0x3a9d: 0x9a, 0x3a9e: 0x9b, 0x3a9f: 0x9c,\n\t0x3aa0: 0x9d, 0x3aa1: 0x9e, 0x3aa2: 0x9f, 0x3aa3: 0xa0, 0x3aa4: 0xa1, 0x3aa5: 0xa2, 0x3aa6: 0xa3, 0x3aa7: 0xa4,\n\t0x3aa8: 0xa5, 0x3aa9: 0xa6, 0x3aaa: 0xa7, 0x3aab: 0xa8, 0x3aac: 0xa9, 0x3aad: 0xaa,\n\t0x3ab0: 0xab, 0x3ab1: 0xac, 0x3ab2: 0xad, 0x3ab3: 0xae, 0x3ab4: 0xaf, 0x3ab5: 0xb0, 0x3ab6: 0xb1, 0x3ab7: 0xb2,\n\t0x3ab8: 0xb3, 0x3aba: 0xaa6, 0x3abb: 0xaa7, 0x3abc: 0xaa8, 0x3abd: 0xaa9, 0x3abe: 0xaaa, 0x3abf: 0xaab,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0xaac, 0x3ac1: 0xbb, 0x3ac2: 0xbc, 0x3ac3: 0xbd, 0x3ac4: 0xbe, 0x3ac5: 0xbf, 0x3ac6: 0xaad, 0x3ac7: 0xc1,\n\t0x3ac8: 0xaae, 0x3ac9: 0xaaf, 0x3aca: 0xab0, 0x3acb: 0xab1, 0x3acc: 0xc6, 0x3acd: 0xab2, 0x3ace: 0xc8, 0x3acf: 0xab3,\n\t0x3ad0: 0xab4, 0x3ad1: 0xab5, 0x3ad2: 0xab6, 0x3ad3: 0xab7, 0x3ad4: 0xab8, 0x3ad5: 0xab9, 0x3ad6: 0xaba, 0x3ad7: 0xabb,\n\t0x3ad8: 0xabc, 0x3ad9: 0xabd, 0x3ada: 0xabe, 0x3adb: 0xabf, 0x3adc: 0xac0, 0x3add: 0xac1, 0x3ade: 0xac2, 0x3adf: 0xac3,\n\t0x3ae0: 0xac4, 0x3ae1: 0xac5, 0x3ae2: 0xac6, 0x3ae3: 0xac7, 0x3ae4: 0xac8, 0x3ae5: 0xac9, 0x3ae6: 0xaca, 0x3ae7: 0xacb,\n\t0x3ae8: 0xacc, 0x3ae9: 0xacd, 0x3aea: 0xace, 0x3aeb: 0xacf, 0x3aec: 0xad0, 0x3aed: 0xad1, 0x3aee: 0xad2, 0x3aef: 0xad3,\n\t0x3af0: 0xad4, 0x3af1: 0xad5, 0x3af2: 0xad6, 0x3af3: 0xad7, 0x3af4: 0xad8, 0x3af5: 0xad9, 0x3af6: 0xada, 0x3af7: 0xadb,\n\t0x3af8: 0xadc, 0x3af9: 0xadd, 0x3afa: 0xade, 0x3afb: 0xadf, 0x3afc: 0xae0, 0x3afd: 0xae1, 0x3afe: 0xae2, 0x3aff: 0xae3,\n\t// Block 0xec, offset 0x3b00\n\t0x3b00: 0xae4, 0x3b01: 0xae5, 0x3b02: 0xae6, 0x3b03: 0xae7, 0x3b04: 0xae8, 0x3b05: 0xae9, 0x3b06: 0xaea, 0x3b07: 0xaeb,\n\t0x3b08: 0xaec, 0x3b09: 0xaed, 0x3b0a: 0xaee, 0x3b0b: 0xaef, 0x3b0c: 0xaf0, 0x3b0d: 0xaf1, 0x3b0e: 0xaf2, 0x3b0f: 0xaf3,\n\t0x3b10: 0xaf4, 0x3b11: 0xaf5, 0x3b12: 0xaf6, 0x3b13: 0xaf7, 0x3b14: 0xaf8, 0x3b15: 0xaf9, 0x3b16: 0xafa, 0x3b17: 0xafb,\n\t0x3b18: 0xafc, 0x3b19: 0xafd, 0x3b1a: 0xafe, 0x3b1b: 0xaff, 0x3b1c: 0xb00, 0x3b1d: 0xb01, 0x3b1e: 0xb02, 0x3b1f: 0xb03,\n\t0x3b20: 0xb04, 0x3b21: 0xb05, 0x3b22: 0xb06, 0x3b23: 0xb07, 0x3b24: 0xb08, 0x3b25: 0xb09, 0x3b26: 0xb0a, 0x3b27: 0xb0b,\n\t0x3b28: 0xb0c, 0x3b29: 0xb0d, 0x3b2a: 0xb0e, 0x3b2b: 0xb0f, 0x3b2c: 0xb10, 0x3b2d: 0xb11, 0x3b2e: 0xb12, 0x3b2f: 0xb13,\n\t0x3b30: 0xb14, 0x3b31: 0xb15, 0x3b32: 0xb16, 0x3b33: 0xb17, 0x3b34: 0xb18, 0x3b35: 0xb19, 0x3b36: 0xb1a, 0x3b37: 0xca,\n\t0x3b38: 0xb1b, 0x3b39: 0xb1c, 0x3b3a: 0xb1d, 0x3b3b: 0xb1e, 0x3b3c: 0xb1f, 0x3b3d: 0xb20, 0x3b3e: 0xb21, 0x3b3f: 0xb22,\n\t// Block 0xed, offset 0x3b40\n\t0x3b40: 0xb23, 0x3b41: 0xb24, 0x3b42: 0xb25, 0x3b43: 0xb26, 0x3b44: 0xb27, 0x3b45: 0xb28, 0x3b46: 0xb29, 0x3b47: 0xb2a,\n\t0x3b48: 0xb2b, 0x3b49: 0xb2c, 0x3b4a: 0xb2d, 0x3b4b: 0xb2e, 0x3b4c: 0xb2f, 0x3b4d: 0xb30, 0x3b4e: 0xb31, 0x3b4f: 0xb32,\n\t0x3b50: 0xb33, 0x3b51: 0xb34, 0x3b52: 0xb35, 0x3b53: 0xb36, 0x3b54: 0xb37, 0x3b55: 0xb38, 0x3b56: 0xb39, 0x3b57: 0xb3a,\n\t0x3b58: 0xb3b, 0x3b59: 0xb3c, 0x3b5a: 0xb3d, 0x3b5b: 0xb3e, 0x3b5c: 0xb3f, 0x3b5d: 0xb40, 0x3b5e: 0xb41, 0x3b5f: 0xb42,\n\t0x3b60: 0xb43, 0x3b61: 0xb44, 0x3b62: 0xb45, 0x3b63: 0xb46, 0x3b64: 0xb47, 0x3b65: 0xb48, 0x3b66: 0xb49, 0x3b67: 0xb4a,\n\t0x3b68: 0xb4b, 0x3b69: 0xb4c, 0x3b6a: 0xb4d, 0x3b6b: 0xb4e, 0x3b6c: 0xb4f, 0x3b6d: 0xb50, 0x3b6e: 0xb51, 0x3b6f: 0xb52,\n\t0x3b70: 0xb53, 0x3b71: 0xb54, 0x3b72: 0xb55, 0x3b73: 0xb56, 0x3b74: 0xb57, 0x3b75: 0xb58, 0x3b76: 0xb59, 0x3b77: 0xb5a,\n\t0x3b78: 0xb5b, 0x3b79: 0xb5c, 0x3b7a: 0xb5d, 0x3b7b: 0xb5e, 0x3b7c: 0xb5f, 0x3b7d: 0xb60, 0x3b7e: 0xb61, 0x3b7f: 0xb62,\n\t// Block 0xee, offset 0x3b80\n\t0x3b80: 0xb63, 0x3b81: 0xb64, 0x3b82: 0xb65, 0x3b83: 0xb66, 0x3b84: 0xb67, 0x3b85: 0xb68, 0x3b86: 0xb69, 0x3b87: 0xb6a,\n\t0x3b88: 0xb6b, 0x3b89: 0xb6c, 0x3b8a: 0xb6d, 0x3b8b: 0xb6e, 0x3b8c: 0xb6f, 0x3b8d: 0xb70, 0x3b8e: 0xb71, 0x3b8f: 0xb72,\n\t0x3b90: 0xb73, 0x3b91: 0xb74, 0x3b92: 0xb75, 0x3b93: 0xb76, 0x3b94: 0xb77, 0x3b95: 0xb78, 0x3b96: 0xb79, 0x3b97: 0xb7a,\n\t0x3b98: 0xb7b, 0x3b99: 0xb7c, 0x3b9a: 0xb7d, 0x3b9b: 0xb7e, 0x3b9c: 0xb7f, 0x3b9d: 0xb80, 0x3b9e: 0xb81, 0x3b9f: 0xb82,\n\t0x3ba0: 0xb83, 0x3ba1: 0xb84, 0x3ba2: 0xb85, 0x3ba3: 0xb86, 0x3ba4: 0xb87, 0x3ba5: 0xb88, 0x3ba6: 0xb89, 0x3ba7: 0xb8a,\n\t0x3ba8: 0xb8b, 0x3ba9: 0xb8c, 0x3baa: 0xb8d, 0x3bab: 0xb8e, 0x3bac: 0xb8f, 0x3bad: 0xb90, 0x3bae: 0xb91, 0x3baf: 0xb92,\n\t0x3bb0: 0xb93, 0x3bb1: 0xb94, 0x3bb2: 0xb95, 0x3bb3: 0xb96, 0x3bb4: 0xb97, 0x3bb5: 0xb98, 0x3bb6: 0xb99, 0x3bb7: 0xb9a,\n\t0x3bb8: 0xb9b, 0x3bb9: 0xb9c, 0x3bba: 0xb9d, 0x3bbb: 0xb9e, 0x3bbc: 0xb9f, 0x3bbd: 0xba0, 0x3bbe: 0xba1, 0x3bbf: 0xba2,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bc0: 0xba3, 0x3bc1: 0xba4, 0x3bc2: 0xba5, 0x3bc3: 0xba6, 0x3bc4: 0xba7, 0x3bc5: 0xba8, 0x3bc6: 0xba9, 0x3bc7: 0xbaa,\n\t0x3bc8: 0xbab, 0x3bc9: 0xbac, 0x3bca: 0xbad, 0x3bcb: 0xbae, 0x3bcc: 0xbaf, 0x3bcd: 0xbb0, 0x3bce: 0xbb1, 0x3bcf: 0xbb2,\n\t0x3bd0: 0xbb3, 0x3bd1: 0xbb4, 0x3bd2: 0xbb5, 0x3bd3: 0xbb6, 0x3bd4: 0xbb7, 0x3bd5: 0xbb8, 0x3bd6: 0xbb9, 0x3bd7: 0xbba,\n\t0x3bd8: 0xbbb, 0x3bd9: 0xbbc, 0x3bda: 0xbbd, 0x3bdb: 0xbbe, 0x3bdc: 0xbbf, 0x3bdd: 0xbc0, 0x3bde: 0xbc1, 0x3bdf: 0xbc2,\n\t0x3be0: 0xbc3, 0x3be1: 0xbc4, 0x3be2: 0xbc5, 0x3be3: 0xbc6, 0x3be4: 0xbc7, 0x3be5: 0xbc8, 0x3be6: 0xbc9, 0x3be7: 0xbca,\n\t0x3be8: 0xbcb, 0x3be9: 0xbcc, 0x3bea: 0xbcd, 0x3beb: 0xbce, 0x3bec: 0xbcf, 0x3bed: 0xbd0, 0x3bee: 0xbd1, 0x3bef: 0xbd2,\n\t0x3bf0: 0xbd3, 0x3bf1: 0xbd4, 0x3bf2: 0xbd5, 0x3bf3: 0xbd6, 0x3bf4: 0xbd7, 0x3bf5: 0xbd8, 0x3bf6: 0xbd9, 0x3bf7: 0xbda,\n\t0x3bf8: 0xbdb, 0x3bf9: 0xbdc, 0x3bfa: 0xbdd, 0x3bfb: 0xbde, 0x3bfc: 0xbdf, 0x3bfd: 0xbe0, 0x3bfe: 0xbe1, 0x3bff: 0xbe2,\n\t// Block 0xf0, offset 0x3c00\n\t0x3c00: 0xbe3, 0x3c01: 0xbe4, 0x3c02: 0xbe5, 0x3c03: 0xbe6, 0x3c04: 0xbe7, 0x3c05: 0xbe8, 0x3c06: 0xbe9, 0x3c07: 0xbea,\n\t0x3c08: 0xbeb, 0x3c09: 0xbec, 0x3c0a: 0xbed, 0x3c0b: 0xbee, 0x3c0c: 0xbef, 0x3c0d: 0xbf0, 0x3c0e: 0xbf1, 0x3c0f: 0xbf2,\n\t0x3c10: 0xbf3, 0x3c11: 0xbf4, 0x3c12: 0xbf5, 0x3c13: 0xbf6, 0x3c14: 0xbf7, 0x3c15: 0xbf8, 0x3c16: 0xbf9, 0x3c17: 0xbfa,\n\t0x3c18: 0xbfb, 0x3c19: 0xbfc, 0x3c1a: 0xbfd, 0x3c1b: 0xbfe, 0x3c1c: 0xbff, 0x3c1d: 0xc00, 0x3c1e: 0xc01, 0x3c1f: 0xc02,\n\t0x3c20: 0xc03, 0x3c21: 0xc04, 0x3c22: 0xc05, 0x3c23: 0xc06, 0x3c24: 0xc07, 0x3c25: 0xc08, 0x3c26: 0xc09, 0x3c27: 0xc0a,\n\t0x3c28: 0xc0b, 0x3c29: 0xc0c, 0x3c2a: 0xc0d, 0x3c2b: 0xc0e, 0x3c2c: 0xc0f, 0x3c2d: 0xc10, 0x3c2e: 0xc11, 0x3c2f: 0xc12,\n\t0x3c30: 0xc13, 0x3c31: 0xc14, 0x3c32: 0xc15, 0x3c33: 0xc16, 0x3c34: 0xc17, 0x3c35: 0xc18, 0x3c36: 0xc19, 0x3c37: 0xc1a,\n\t0x3c38: 0xc1b, 0x3c39: 0xc1c, 0x3c3a: 0xc1d, 0x3c3b: 0xc1e, 0x3c3c: 0xc1f, 0x3c3d: 0xc20, 0x3c3e: 0xc21, 0x3c3f: 0xc22,\n\t// Block 0xf1, offset 0x3c40\n\t0x3c40: 0xc23, 0x3c41: 0xc24, 0x3c42: 0xc25, 0x3c43: 0xc26, 0x3c44: 0xc27, 0x3c45: 0xc28, 0x3c46: 0xc29, 0x3c47: 0xc2a,\n\t0x3c48: 0xc2b, 0x3c49: 0xc2c, 0x3c4a: 0xc2d, 0x3c4b: 0xc2e, 0x3c4c: 0xc2f, 0x3c4d: 0xc30, 0x3c4e: 0xc31, 0x3c4f: 0xc32,\n\t0x3c50: 0xc33, 0x3c51: 0xc34, 0x3c52: 0xc35, 0x3c53: 0xc36, 0x3c54: 0xc37, 0x3c55: 0xc38, 0x3c56: 0xc39, 0x3c57: 0xc3a,\n\t0x3c58: 0xc3b, 0x3c59: 0xc3c, 0x3c5a: 0xc3d, 0x3c5b: 0xc3e, 0x3c5c: 0xc3f, 0x3c5d: 0xc40, 0x3c5e: 0xc41, 0x3c5f: 0xc42,\n\t0x3c60: 0xc43, 0x3c61: 0xc44, 0x3c62: 0xc45, 0x3c63: 0xc46, 0x3c64: 0xc47, 0x3c65: 0xc48, 0x3c66: 0xc49, 0x3c67: 0xc4a,\n\t0x3c68: 0xc4b, 0x3c69: 0xc4c, 0x3c6a: 0xc4d, 0x3c6b: 0xc4e, 0x3c6c: 0xc4f, 0x3c6d: 0xc50, 0x3c6e: 0xc51, 0x3c6f: 0xc52,\n\t0x3c70: 0xc53, 0x3c71: 0xc54, 0x3c72: 0xc55, 0x3c73: 0xc56, 0x3c74: 0xc57, 0x3c75: 0xc58, 0x3c76: 0xc59, 0x3c77: 0xc5a,\n\t0x3c78: 0xc5b, 0x3c79: 0xc5c, 0x3c7a: 0xc5d, 0x3c7b: 0xc5e, 0x3c7c: 0xc5f, 0x3c7d: 0xc60, 0x3c7e: 0xc61, 0x3c7f: 0xc62,\n\t// Block 0xf2, offset 0x3c80\n\t0x3ca4: 0xc63, 0x3ca5: 0xc64, 0x3ca6: 0xc65, 0x3ca7: 0xc66,\n\t0x3ca8: 0xc67, 0x3ca9: 0xc68, 0x3caa: 0xc69, 0x3cab: 0xc6a, 0x3cac: 0x103, 0x3cad: 0x104, 0x3cae: 0x105, 0x3caf: 0x106,\n\t0x3cb0: 0x107, 0x3cb1: 0x108, 0x3cb2: 0x109, 0x3cb3: 0x10a, 0x3cb4: 0x10b, 0x3cb5: 0x10c, 0x3cb6: 0x10d, 0x3cb7: 0x10e,\n\t0x3cb8: 0x10f, 0x3cb9: 0x110, 0x3cba: 0x111, 0x3cbb: 0x112, 0x3cbc: 0x113, 0x3cbd: 0x114, 0x3cbe: 0x115, 0x3cbf: 0x116,\n\t// Block 0xf3, offset 0x3cc0\n\t0x3cc0: 0x18b, 0x3cc1: 0x18c, 0x3cc2: 0x18d, 0x3cc3: 0x18e, 0x3cc4: 0x18f, 0x3cc5: 0x190, 0x3cc6: 0x191, 0x3cc7: 0x192,\n\t0x3cc8: 0xc6b, 0x3cc9: 0xc6c, 0x3ccc: 0x195, 0x3ccd: 0x196, 0x3cce: 0x197, 0x3ccf: 0x198,\n\t0x3cd0: 0x199, 0x3cd1: 0x19a, 0x3cd2: 0x19b, 0x3cd3: 0x19c, 0x3cd4: 0x19d, 0x3cd5: 0x19e, 0x3cd7: 0x19f,\n\t0x3cd8: 0x1a0, 0x3cd9: 0x1a1, 0x3cda: 0x1a2, 0x3cdb: 0x1a3, 0x3cdc: 0x1a4, 0x3cdd: 0x1a5,\n\t// Block 0xf4, offset 0x3d00\n\t0x3d00: 0xc6d, 0x3d01: 0xc6e, 0x3d02: 0xc6f, 0x3d03: 0xc70, 0x3d04: 0xc71, 0x3d05: 0xc72, 0x3d06: 0xc73, 0x3d07: 0xc74,\n\t0x3d08: 0xc75, 0x3d09: 0xc76, 0x3d0a: 0xc77, 0x3d0b: 0xc78, 0x3d0c: 0xc79, 0x3d0d: 0xc7a, 0x3d0e: 0xc7b, 0x3d0f: 0xc7c,\n\t0x3d10: 0xc7d, 0x3d11: 0xc7e, 0x3d12: 0xc7f, 0x3d13: 0xc80, 0x3d14: 0xc81, 0x3d15: 0xc82, 0x3d16: 0xc83, 0x3d17: 0xc84,\n\t0x3d18: 0xc85, 0x3d19: 0xc86, 0x3d1a: 0xc87, 0x3d1b: 0xc88, 0x3d1c: 0xc89, 0x3d1d: 0xc8a, 0x3d1e: 0xc8b, 0x3d1f: 0xc8c,\n\t0x3d20: 0xc8d, 0x3d21: 0xc8e, 0x3d22: 0xc8f, 0x3d23: 0xc90, 0x3d24: 0xc91, 0x3d25: 0xc92, 0x3d26: 0xc93, 0x3d27: 0xc94,\n\t0x3d28: 0xc95, 0x3d29: 0xc96, 0x3d2a: 0xc97, 0x3d2b: 0xc98, 0x3d2c: 0xc99, 0x3d2d: 0xc9a, 0x3d2e: 0xc9b, 0x3d2f: 0xc9c,\n\t0x3d30: 0xc9d, 0x3d31: 0xc9e, 0x3d32: 0xc9f, 0x3d33: 0xca0, 0x3d34: 0xca1, 0x3d35: 0xca2, 0x3d36: 0xca3, 0x3d37: 0xca4,\n\t0x3d38: 0xca5, 0x3d39: 0xca6, 0x3d3a: 0xca7, 0x3d3b: 0xca8, 0x3d3c: 0xca9, 0x3d3d: 0xcaa, 0x3d3e: 0xcab, 0x3d3f: 0xcac,\n\t// Block 0xf5, offset 0x3d40\n\t0x3d40: 0xcad, 0x3d41: 0xcae, 0x3d42: 0xcaf, 0x3d43: 0xcb0, 0x3d44: 0xcb1, 0x3d45: 0xcb2, 0x3d46: 0xcb3, 0x3d47: 0xcb4,\n\t0x3d48: 0xcb5, 0x3d49: 0xcb6, 0x3d4a: 0xcb7, 0x3d4b: 0xcb8, 0x3d4c: 0xcb9, 0x3d4d: 0xcba, 0x3d4e: 0xcbb, 0x3d4f: 0xcbc,\n\t0x3d50: 0xcbd, 0x3d51: 0xcbe, 0x3d52: 0xcbf, 0x3d53: 0xcc0, 0x3d54: 0xcc1, 0x3d55: 0xcc2, 0x3d56: 0xcc3, 0x3d57: 0xcc4,\n\t0x3d58: 0xcc5, 0x3d59: 0xcc6, 0x3d5a: 0xcc7, 0x3d5b: 0xcc8, 0x3d5c: 0xcc9, 0x3d5d: 0xcca, 0x3d5e: 0xccb, 0x3d5f: 0xccc,\n\t0x3d60: 0xccd, 0x3d61: 0xcce, 0x3d62: 0xccf, 0x3d63: 0xcd0, 0x3d64: 0xcd1, 0x3d65: 0xcd2, 0x3d66: 0xcd3, 0x3d67: 0xcd4,\n\t0x3d68: 0xcd5, 0x3d69: 0xcd6, 0x3d6a: 0xcd7, 0x3d6b: 0xcd8, 0x3d6c: 0xcd9, 0x3d6d: 0xcda, 0x3d6e: 0xcdb, 0x3d6f: 0xcdc,\n\t0x3d70: 0xcdd, 0x3d71: 0xcde, 0x3d72: 0xcdf, 0x3d73: 0xce0, 0x3d74: 0xce1, 0x3d75: 0xce2, 0x3d76: 0xce3, 0x3d77: 0xce4,\n\t0x3d78: 0xce5, 0x3d79: 0xce6, 0x3d7a: 0xce7, 0x3d7b: 0xce8, 0x3d7c: 0xce9, 0x3d7d: 0xcea, 0x3d7e: 0xceb, 0x3d7f: 0xcec,\n\t// Block 0xf6, offset 0x3d80\n\t0x3d80: 0xced, 0x3d81: 0xcee, 0x3d82: 0xcef, 0x3d83: 0xcf0, 0x3d84: 0xcf1, 0x3d85: 0xcf2, 0x3d86: 0xcf3, 0x3d87: 0xcf4,\n\t0x3d88: 0xcf5, 0x3d89: 0xcf6, 0x3d8a: 0xcf7, 0x3d8b: 0xcf8, 0x3d8c: 0xcf9, 0x3d8d: 0xcfa, 0x3d8e: 0xcfb, 0x3d8f: 0xcfc,\n\t0x3d90: 0xcfd, 0x3d91: 0xcfe, 0x3d92: 0xcff, 0x3d93: 0xd00, 0x3d94: 0xd01, 0x3d95: 0xd02, 0x3d96: 0xd03, 0x3d97: 0xd04,\n\t0x3d98: 0xd05, 0x3d99: 0xd06, 0x3d9a: 0xd07, 0x3d9b: 0xd08, 0x3d9c: 0xd09, 0x3d9d: 0xd0a, 0x3d9e: 0xd0b, 0x3d9f: 0xd0c,\n\t0x3da0: 0xd0d, 0x3da1: 0xd0e, 0x3da2: 0xd0f, 0x3da3: 0xd10, 0x3da4: 0xd11, 0x3da5: 0xd12, 0x3da6: 0xd13, 0x3da7: 0xd14,\n\t0x3da8: 0xd15, 0x3da9: 0xd16, 0x3daa: 0xd17, 0x3dab: 0xd18, 0x3dac: 0xd19, 0x3dad: 0xd1a, 0x3dae: 0xd1b, 0x3daf: 0xd1c,\n\t0x3db0: 0xd1d, 0x3db1: 0xd1e, 0x3db2: 0xd1f, 0x3db3: 0xd20, 0x3db4: 0xd21, 0x3db5: 0xd22, 0x3db6: 0xd23, 0x3db7: 0xd24,\n\t0x3db8: 0xd25, 0x3db9: 0xd26, 0x3dba: 0xd27, 0x3dbb: 0xd28, 0x3dbc: 0xd29, 0x3dbd: 0xd2a, 0x3dbe: 0xd2b, 0x3dbf: 0xd2c,\n\t// Block 0xf7, offset 0x3dc0\n\t0x3dc0: 0xd2d, 0x3dc1: 0xd2e, 0x3dc2: 0xd2f, 0x3dc3: 0xd30, 0x3dc4: 0xd31, 0x3dc5: 0xd32, 0x3dc6: 0xd33, 0x3dc7: 0xd34,\n\t0x3dc8: 0xd35, 0x3dc9: 0xd36, 0x3dca: 0xd37, 0x3dcb: 0xd38, 0x3dcc: 0xd39, 0x3dcd: 0xd3a, 0x3dce: 0xd3b, 0x3dcf: 0xd3c,\n\t0x3dd0: 0xd3d, 0x3dd1: 0xd3e, 0x3dd2: 0xd3f, 0x3dd3: 0xd40, 0x3dd4: 0xd41, 0x3dd5: 0xd42, 0x3dd6: 0xd43, 0x3dd7: 0xd44,\n\t0x3dd8: 0xd45, 0x3dd9: 0xd46, 0x3dda: 0xd47, 0x3ddb: 0xd48, 0x3ddc: 0xd49, 0x3ddd: 0xd4a, 0x3dde: 0xd4b, 0x3ddf: 0xd4c,\n\t0x3de0: 0xd4d, 0x3de1: 0xd4e, 0x3de2: 0xd4f, 0x3de3: 0xd50, 0x3de4: 0xd51, 0x3de5: 0xd52, 0x3de6: 0xd53, 0x3de7: 0xd54,\n\t0x3de8: 0xd55, 0x3de9: 0xd56, 0x3dea: 0xd57, 0x3deb: 0xd58, 0x3dec: 0xd59, 0x3ded: 0xd5a, 0x3dee: 0xd5b, 0x3def: 0xd5c,\n\t0x3df0: 0xd5d, 0x3df1: 0xd5e, 0x3df2: 0xd5f, 0x3df3: 0xd60, 0x3df4: 0xd61, 0x3df5: 0xd62, 0x3df6: 0xd63, 0x3df7: 0xd64,\n\t0x3df8: 0xd65, 0x3df9: 0xd66, 0x3dfa: 0xd67, 0x3dfb: 0xd68, 0x3dfc: 0xd69, 0x3dfd: 0xd6a, 0x3dfe: 0xd6b, 0x3dff: 0xd6c,\n\t// Block 0xf8, offset 0x3e00\n\t0x3e00: 0xd6d, 0x3e01: 0xd6e, 0x3e02: 0xd6f, 0x3e03: 0xd70, 0x3e04: 0xd71, 0x3e05: 0xd72, 0x3e06: 0xd73, 0x3e07: 0xd74,\n\t0x3e08: 0xd75, 0x3e09: 0xd76, 0x3e0a: 0xd77, 0x3e0b: 0xd78, 0x3e0c: 0xd79, 0x3e0d: 0xd7a, 0x3e0e: 0xd7b, 0x3e0f: 0xd7c,\n\t0x3e10: 0xd7d, 0x3e11: 0xd7e, 0x3e12: 0xd7f, 0x3e13: 0xd80, 0x3e14: 0xd81, 0x3e15: 0xd82, 0x3e16: 0xd83, 0x3e17: 0xd84,\n\t0x3e18: 0xd85, 0x3e19: 0xd86, 0x3e1a: 0xd87, 0x3e1b: 0xd88, 0x3e1c: 0xd89, 0x3e1d: 0xd8a, 0x3e1e: 0xd8b, 0x3e1f: 0xd8c,\n\t0x3e20: 0xd8d, 0x3e21: 0xd8e, 0x3e22: 0xd8f, 0x3e23: 0xd90, 0x3e24: 0xd91, 0x3e25: 0xd92, 0x3e26: 0xd93, 0x3e27: 0xd94,\n\t0x3e28: 0xd95, 0x3e29: 0xd96, 0x3e2a: 0xd97, 0x3e2b: 0xd98, 0x3e2c: 0xd99, 0x3e2d: 0xd9a, 0x3e2e: 0xd9b, 0x3e2f: 0xd9c,\n\t0x3e30: 0xd9d, 0x3e31: 0xd9e, 0x3e32: 0xd9f, 0x3e33: 0xda0, 0x3e34: 0xda1, 0x3e35: 0xda2, 0x3e36: 0xda3, 0x3e37: 0xda4,\n\t0x3e38: 0xda5, 0x3e39: 0xda6, 0x3e3a: 0xda7, 0x3e3b: 0xda8, 0x3e3c: 0xda9, 0x3e3d: 0xdaa, 0x3e3e: 0xdab, 0x3e3f: 0xdac,\n\t// Block 0xf9, offset 0x3e40\n\t0x3e40: 0xdad, 0x3e41: 0xdae, 0x3e42: 0xdaf, 0x3e43: 0xdb0, 0x3e44: 0xdb1, 0x3e45: 0xdb2, 0x3e46: 0xdb3, 0x3e47: 0xdb4,\n\t0x3e48: 0xdb5, 0x3e49: 0xdb6, 0x3e4a: 0xdb7, 0x3e4b: 0xdb8, 0x3e4c: 0xdb9, 0x3e4d: 0xdba, 0x3e4e: 0xdbb, 0x3e4f: 0xdbc,\n\t0x3e50: 0xdbd, 0x3e51: 0xdbe, 0x3e52: 0xdbf, 0x3e53: 0xdc0, 0x3e54: 0xdc1, 0x3e55: 0xdc2, 0x3e56: 0xdc3, 0x3e57: 0xdc4,\n\t0x3e58: 0xdc5, 0x3e59: 0xdc6, 0x3e5a: 0xdc7, 0x3e5b: 0xdc8, 0x3e5c: 0xdc9, 0x3e5d: 0xdca, 0x3e5e: 0xdcb, 0x3e5f: 0xdcc,\n\t0x3e60: 0xdcd, 0x3e61: 0xdce, 0x3e62: 0xdcf, 0x3e63: 0xdd0, 0x3e64: 0xdd1, 0x3e65: 0xdd2, 0x3e66: 0xdd3, 0x3e67: 0xdd4,\n\t0x3e68: 0xdd5, 0x3e69: 0xdd6, 0x3e6a: 0xdd7, 0x3e6b: 0xdd8, 0x3e6c: 0xdd9, 0x3e6d: 0xdda, 0x3e6e: 0xddb, 0x3e6f: 0xddc,\n\t0x3e70: 0xddd, 0x3e71: 0xdde, 0x3e72: 0xddf, 0x3e73: 0xde0, 0x3e74: 0xde1, 0x3e75: 0xde2, 0x3e76: 0xde3, 0x3e77: 0xde4,\n\t0x3e78: 0xde5, 0x3e79: 0xde6, 0x3e7a: 0xde7, 0x3e7b: 0xde8, 0x3e7c: 0xde9, 0x3e7d: 0xdea, 0x3e7e: 0xdeb, 0x3e7f: 0xdec,\n\t// Block 0xfa, offset 0x3e80\n\t0x3e80: 0xded, 0x3e81: 0xdee, 0x3e82: 0xdef, 0x3e83: 0xdf0, 0x3e84: 0xdf1, 0x3e85: 0xdf2, 0x3e86: 0xdf3, 0x3e87: 0xdf4,\n\t0x3e88: 0xdf5, 0x3e89: 0xdf6, 0x3e8a: 0xdf7, 0x3e8b: 0xdf8, 0x3e8c: 0xdf9, 0x3e8d: 0xdfa, 0x3e8e: 0xdfb, 0x3e8f: 0xdfc,\n\t0x3e90: 0xdfd, 0x3e91: 0xdfe, 0x3e92: 0xdff, 0x3e93: 0xe00, 0x3e94: 0xe01, 0x3e95: 0xe02, 0x3e96: 0xe03, 0x3e97: 0xe04,\n\t0x3e98: 0xe05, 0x3e99: 0xe06, 0x3e9a: 0xe07, 0x3e9b: 0xe08, 0x3e9c: 0xe09, 0x3e9d: 0xe0a, 0x3e9e: 0xe0b, 0x3e9f: 0xe0c,\n\t0x3ea0: 0xe0d, 0x3ea1: 0xe0e, 0x3ea2: 0xe0f, 0x3ea3: 0xe10, 0x3ea4: 0xe11, 0x3ea5: 0xe12, 0x3ea6: 0xe13, 0x3ea7: 0xe14,\n\t0x3ea8: 0xe15, 0x3ea9: 0xe16, 0x3eaa: 0xe17, 0x3eab: 0xe18, 0x3eac: 0xe19, 0x3ead: 0xe1a, 0x3eae: 0xe1b, 0x3eaf: 0xe1c,\n\t0x3eb0: 0xe1d, 0x3eb1: 0xe1e, 0x3eb2: 0xe1f, 0x3eb3: 0xe20, 0x3eb4: 0xe21, 0x3eb5: 0xe22, 0x3eb6: 0xe23, 0x3eb7: 0xe24,\n\t0x3eb8: 0xe25, 0x3eb9: 0xe26, 0x3eba: 0xe27, 0x3ebb: 0xe28, 0x3ebc: 0xe29, 0x3ebd: 0xe2a, 0x3ebe: 0xe2b, 0x3ebf: 0xe2c,\n\t// Block 0xfb, offset 0x3ec0\n\t0x3ec0: 0xe2d, 0x3ec1: 0xe2e, 0x3ec2: 0xe2f, 0x3ec3: 0xe30, 0x3ec4: 0xe31, 0x3ec5: 0xe32, 0x3ec6: 0xe33, 0x3ec7: 0xe34,\n\t0x3ec8: 0xe35, 0x3ec9: 0xe36, 0x3eca: 0xe37, 0x3ecb: 0xe38, 0x3ecc: 0xe39, 0x3ecd: 0xe3a, 0x3ece: 0xe3b, 0x3ecf: 0xe3c,\n\t0x3ed0: 0xe3d, 0x3ed1: 0xe3e, 0x3ed2: 0xe3f, 0x3ed3: 0xe40, 0x3ed4: 0xe41, 0x3ed5: 0xe42, 0x3ed6: 0xe43, 0x3ed7: 0xe44,\n\t0x3ed8: 0xe45, 0x3ed9: 0xe46, 0x3eda: 0xe47, 0x3edb: 0xe48, 0x3edc: 0xe49, 0x3edd: 0xe4a, 0x3ede: 0xe4b, 0x3edf: 0xe4c,\n\t0x3ee0: 0xe4d, 0x3ee1: 0xe4e, 0x3ee2: 0xe4f, 0x3ee3: 0xe50, 0x3ee4: 0xe51, 0x3ee5: 0xe52, 0x3ee6: 0xe53, 0x3ee7: 0xe54,\n\t0x3ee8: 0xe55, 0x3ee9: 0xe56, 0x3eea: 0xe57, 0x3eeb: 0xe58, 0x3eec: 0xe59, 0x3eed: 0xe5a, 0x3eee: 0xe5b, 0x3eef: 0xe5c,\n\t0x3ef0: 0xe5d, 0x3ef1: 0xe5e, 0x3ef2: 0xe5f, 0x3ef3: 0xe60, 0x3ef4: 0xe61, 0x3ef5: 0xe62, 0x3ef6: 0xe63, 0x3ef7: 0xe64,\n\t0x3ef8: 0xe65, 0x3ef9: 0xe66, 0x3efa: 0xe67, 0x3efb: 0xe68, 0x3efc: 0xe69, 0x3efd: 0xe6a, 0x3efe: 0xe6b, 0x3eff: 0xe6c,\n\t// Block 0xfc, offset 0x3f00\n\t0x3f00: 0xe6d, 0x3f01: 0xe6e, 0x3f02: 0xe6f, 0x3f03: 0xe70, 0x3f04: 0xe71, 0x3f05: 0xe72, 0x3f06: 0xe73, 0x3f07: 0xe74,\n\t0x3f08: 0xe75, 0x3f09: 0xe76, 0x3f0a: 0xe77, 0x3f0b: 0xe78, 0x3f0c: 0xe79, 0x3f0d: 0xe7a, 0x3f0e: 0xe7b, 0x3f0f: 0xe7c,\n\t0x3f10: 0xe7d, 0x3f11: 0xe7e, 0x3f12: 0xe7f, 0x3f13: 0xe80, 0x3f14: 0xe81, 0x3f15: 0xe82, 0x3f16: 0xe83, 0x3f17: 0xe84,\n\t0x3f18: 0xe85, 0x3f19: 0xe86, 0x3f1a: 0xe87, 0x3f1b: 0xe88, 0x3f1c: 0xe89, 0x3f1d: 0xe8a, 0x3f1e: 0xe8b, 0x3f1f: 0xe8c,\n\t0x3f20: 0xe8d, 0x3f21: 0xe8e, 0x3f22: 0xe8f, 0x3f23: 0xe90, 0x3f24: 0xe91, 0x3f25: 0xe92, 0x3f26: 0xe93, 0x3f27: 0xe94,\n\t0x3f28: 0xe95, 0x3f29: 0xe96, 0x3f2a: 0xe97, 0x3f2b: 0xe98, 0x3f2c: 0xe99, 0x3f2d: 0xe9a, 0x3f2e: 0xe9b, 0x3f2f: 0xe9c,\n\t0x3f30: 0xe9d, 0x3f31: 0xe9e, 0x3f32: 0xe9f, 0x3f33: 0xea0, 0x3f34: 0xea1, 0x3f35: 0xea2, 0x3f36: 0xea3, 0x3f37: 0xea4,\n\t0x3f38: 0xea5, 0x3f39: 0xea6, 0x3f3a: 0xea7, 0x3f3b: 0xea8, 0x3f3c: 0xea9, 0x3f3d: 0xeaa, 0x3f3e: 0xeab, 0x3f3f: 0xeac,\n\t// Block 0xfd, offset 0x3f40\n\t0x3f40: 0xead, 0x3f41: 0xeae, 0x3f42: 0xeaf, 0x3f43: 0xeb0, 0x3f44: 0xeb1, 0x3f45: 0xeb2, 0x3f46: 0xeb3, 0x3f47: 0xeb4,\n\t0x3f48: 0xeb5, 0x3f49: 0xeb6, 0x3f4a: 0xeb7, 0x3f4b: 0xeb8, 0x3f4c: 0xeb9, 0x3f4d: 0xeba, 0x3f4e: 0xebb, 0x3f4f: 0xebc,\n\t0x3f50: 0xebd, 0x3f51: 0xebe, 0x3f52: 0xebf, 0x3f53: 0xec0, 0x3f54: 0xec1, 0x3f55: 0xec2, 0x3f56: 0xec3, 0x3f57: 0xec4,\n\t0x3f58: 0xec5, 0x3f59: 0xec6, 0x3f5a: 0xec7, 0x3f5b: 0xec8, 0x3f5c: 0xec9, 0x3f5d: 0xeca, 0x3f5e: 0xecb, 0x3f5f: 0xecc,\n\t0x3f60: 0xecd, 0x3f61: 0xece, 0x3f62: 0xecf, 0x3f63: 0xed0, 0x3f64: 0xed1, 0x3f65: 0xed2, 0x3f66: 0xed3, 0x3f67: 0xed4,\n\t0x3f68: 0xed5, 0x3f69: 0xed6, 0x3f6a: 0xed7, 0x3f6b: 0xed8, 0x3f6c: 0xed9, 0x3f6d: 0xeda, 0x3f6e: 0xedb, 0x3f6f: 0xedc,\n\t0x3f70: 0xedd, 0x3f71: 0xede, 0x3f72: 0xedf, 0x3f73: 0xee0, 0x3f74: 0xee1, 0x3f75: 0xee2, 0x3f76: 0xee3, 0x3f77: 0xee4,\n\t0x3f78: 0xee5, 0x3f79: 0xee6, 0x3f7a: 0xee7, 0x3f7b: 0xee8, 0x3f7c: 0xee9, 0x3f7d: 0xeea, 0x3f7e: 0xeeb, 0x3f7f: 0xeec,\n\t// Block 0xfe, offset 0x3f80\n\t0x3f80: 0xeed, 0x3f81: 0xeee, 0x3f82: 0xeef, 0x3f83: 0xef0, 0x3f84: 0xef1, 0x3f85: 0xef2, 0x3f86: 0xef3, 0x3f87: 0xef4,\n\t0x3f88: 0xef5, 0x3f89: 0xef6, 0x3f8a: 0xef7, 0x3f8b: 0xef8, 0x3f8c: 0xef9, 0x3f8d: 0xefa, 0x3f8e: 0xefb, 0x3f8f: 0xefc,\n\t0x3f90: 0xefd, 0x3f91: 0xefe, 0x3f92: 0xeff, 0x3f93: 0xf00, 0x3f94: 0xf01, 0x3f95: 0xf02, 0x3f96: 0xf03, 0x3f97: 0xf04,\n\t0x3f98: 0xf05, 0x3f99: 0xf06, 0x3f9a: 0xf07, 0x3f9b: 0xf08, 0x3f9c: 0xf09, 0x3f9d: 0xf0a, 0x3f9e: 0xf0b, 0x3f9f: 0xf0c,\n\t0x3fa0: 0xf0d, 0x3fa1: 0xf0e, 0x3fa2: 0xf0f, 0x3fa3: 0xf10, 0x3fa4: 0xf11, 0x3fa5: 0xf12, 0x3fa6: 0xf13, 0x3fa7: 0xf14,\n\t0x3fa8: 0xf15, 0x3fa9: 0xf16, 0x3faa: 0xf17, 0x3fab: 0xf18, 0x3fac: 0xf19, 0x3fad: 0xf1a, 0x3fae: 0xf1b, 0x3faf: 0xf1c,\n\t0x3fb0: 0xf1d, 0x3fb1: 0xf1e, 0x3fb2: 0xf1f, 0x3fb3: 0xf20, 0x3fb4: 0xf21, 0x3fb5: 0xf22, 0x3fb6: 0xf23, 0x3fb7: 0xf24,\n\t0x3fb8: 0xf25, 0x3fb9: 0xf26, 0x3fba: 0xf27, 0x3fbb: 0xf28, 0x3fbc: 0xf29, 0x3fbd: 0xf2a, 0x3fbe: 0xf2b, 0x3fbf: 0xf2c,\n\t// Block 0xff, offset 0x3fc0\n\t0x3fc0: 0xf2d, 0x3fc1: 0xf2e, 0x3fc2: 0xf2f, 0x3fc3: 0xf30, 0x3fc4: 0xf31, 0x3fc5: 0xf32, 0x3fc6: 0xf33, 0x3fc7: 0xf34,\n\t0x3fc8: 0xf35, 0x3fc9: 0xf36, 0x3fca: 0xf37, 0x3fcb: 0xf38, 0x3fcc: 0xf39, 0x3fcd: 0xf3a, 0x3fce: 0xf3b, 0x3fcf: 0xf3c,\n\t0x3fd0: 0xf3d, 0x3fd1: 0xf3e, 0x3fd2: 0xf3f, 0x3fd3: 0xf40, 0x3fd4: 0xf41, 0x3fd5: 0xf42, 0x3fd6: 0xf43, 0x3fd7: 0xf44,\n\t0x3fd8: 0xf45, 0x3fd9: 0xf46, 0x3fda: 0xf47, 0x3fdb: 0xf48, 0x3fdc: 0xf49, 0x3fdd: 0xf4a, 0x3fde: 0xf4b, 0x3fdf: 0xf4c,\n\t0x3fe0: 0xf4d,\n\t// Block 0x100, offset 0x4000\n\t0x4020: 0xf4e, 0x4021: 0xf4f, 0x4022: 0xf50, 0x4023: 0xf51, 0x4024: 0xf52, 0x4025: 0xf53, 0x4026: 0xf54, 0x4027: 0xf55,\n\t0x4028: 0xf56,\n\t// Block 0x101, offset 0x4040\n\t0x4050: 0x09, 0x4051: 0x0a, 0x4052: 0x0b, 0x4053: 0x0c, 0x4056: 0x0d,\n\t0x405b: 0x0e, 0x405d: 0x0f, 0x405e: 0x10, 0x405f: 0xf1,\n\t0x4060: 0xf2, 0x4061: 0xf3, 0x4062: 0xf4, 0x4063: 0xf5, 0x4064: 0xf6, 0x4065: 0xf7, 0x4066: 0xf8, 0x4067: 0xf9,\n\t0x4068: 0xfa, 0x4069: 0xfb, 0x406a: 0xfc, 0x406b: 0xfd, 0x406f: 0xfe,\n\t// Block 0x102, offset 0x4080\n\t0x4082: 0x01, 0x4083: 0x618, 0x4084: 0x619, 0x4085: 0x61a, 0x4086: 0x05, 0x4087: 0x61b,\n\t0x4088: 0x61c, 0x4089: 0x08, 0x408a: 0x09, 0x408b: 0x0a, 0x408c: 0x0b, 0x408d: 0x0c, 0x408e: 0x0d, 0x408f: 0x0e,\n\t0x4090: 0x0f, 0x4091: 0x10, 0x4092: 0x11, 0x4093: 0x12, 0x4094: 0x13, 0x4095: 0x14, 0x4096: 0x15, 0x4097: 0x16,\n\t0x4098: 0x17, 0x4099: 0x18, 0x409a: 0x19, 0x409b: 0x1a, 0x409c: 0x1b, 0x409d: 0x1c, 0x409e: 0x1d, 0x409f: 0x1e,\n\t0x40a0: 0x01, 0x40a1: 0xce, 0x40a2: 0xe8, 0x40a3: 0xe9, 0x40a4: 0xea, 0x40a5: 0xeb, 0x40a6: 0xec, 0x40a7: 0xed,\n\t0x40a8: 0xee, 0x40a9: 0xef, 0x40aa: 0x06, 0x40ad: 0x07, 0x40af: 0xf0,\n\t0x40b0: 0xff, 0x40b3: 0x15,\n}\n\n// mainCTEntries: 2529 entries, 10116 bytes\nvar mainCTEntries = [2529]struct{ L, H, N, I uint8 }{\n\t{0xCE, 0x1, 1, 255},\n\t{0xC2, 0x0, 1, 255},\n\t{0xB7, 0xB7, 0, 1},\n\t{0x87, 0x87, 0, 2},\n\t{0xCC, 0x0, 2, 255},\n\t{0x88, 0x88, 0, 2},\n\t{0x86, 0x86, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x88, 0x88, 0, 1},\n\t{0xCD, 0x1, 1, 255},\n\t{0xCC, 0x0, 1, 255},\n\t{0x81, 0x81, 0, 1},\n\t{0x81, 0x81, 0, 2},\n\t{0xCC, 0x0, 1, 255},\n\t{0x86, 0x86, 0, 1},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8B, 0x8B, 0, 3},\n\t{0x88, 0x88, 0, 2},\n\t{0x86, 0x86, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x8F, 0x8F, 0, 1},\n\t{0xD9, 0x0, 1, 255},\n\t{0x93, 0x95, 0, 1},\n\t{0xD9, 0x0, 1, 255},\n\t{0x94, 0x94, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xA7, 0x1, 1, 255},\n\t{0xA6, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0x97, 0x97, 0, 2},\n\t{0xE0, 0x0, 2, 255},\n\t{0xAD, 0x1, 1, 255},\n\t{0xAC, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0x96, 0x97, 0, 2},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAF, 0x0, 1, 255},\n\t{0x97, 0x97, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xAF, 0x1, 1, 255},\n\t{0xAE, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0x97, 0x97, 0, 2},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAE, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB1, 0x0, 1, 255},\n\t{0x96, 0x96, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB3, 0x0, 1, 255},\n\t{0x95, 0x95, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB3, 0x0, 2, 255},\n\t{0x95, 0x96, 0, 3},\n\t{0x82, 0x0, 1, 2},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB3, 0x0, 1, 255},\n\t{0x95, 0x95, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xB5, 0x1, 1, 255},\n\t{0xB4, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0x97, 0x97, 0, 2},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB4, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB7, 0x0, 3, 255},\n\t{0x9F, 0x9F, 0, 4},\n\t{0x8F, 0x0, 1, 3},\n\t{0x8A, 0x8A, 0, 2},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB7, 0x0, 1, 255},\n\t{0x8A, 0x8A, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB7, 0x0, 1, 255},\n\t{0x8A, 0x8A, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB8, 0x0, 1, 255},\n\t{0x81, 0xAE, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB8, 0x0, 1, 255},\n\t{0xB2, 0xB2, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBB, 0xC, 1, 255},\n\t{0xBA, 0x0, 12, 255},\n\t{0xAD, 0xAE, 0, 26},\n\t{0xAA, 0xAB, 0, 24},\n\t{0xA7, 0xA7, 0, 23},\n\t{0xA5, 0xA5, 0, 22},\n\t{0xA1, 0xA3, 0, 19},\n\t{0x99, 0x9F, 0, 12},\n\t{0x94, 0x97, 0, 8},\n\t{0x8D, 0x8D, 0, 7},\n\t{0x8A, 0x8A, 0, 6},\n\t{0x87, 0x88, 0, 4},\n\t{0x84, 0x84, 0, 3},\n\t{0x81, 0x82, 0, 1},\n\t{0x9C, 0x9F, 0, 28},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 255},\n\t{0xB2, 0xB2, 0, 1},\n\t{0xEA, 0x0, 1, 255},\n\t{0xAA, 0x0, 1, 255},\n\t{0x80, 0xAF, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x7, 1, 255},\n\t{0xBD, 0x0, 1, 255},\n\t{0xB1, 0x0, 1, 255},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x2, 1, 255},\n\t{0xBD, 0x0, 2, 255},\n\t{0xB4, 0xB4, 0, 2},\n\t{0xB2, 0xB2, 0, 1},\n\t{0x80, 0x80, 0, 3},\n\t{0x80, 0x81, 0, 4},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x2, 1, 255},\n\t{0xBD, 0x0, 2, 255},\n\t{0xB4, 0xB4, 0, 2},\n\t{0xB2, 0xB2, 0, 1},\n\t{0x80, 0x80, 0, 3},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xAE, 0xAE, 0, 1},\n\t{0xF0, 0x0, 1, 255},\n\t{0x91, 0x0, 1, 255},\n\t{0x84, 0x0, 1, 255},\n\t{0xA7, 0xA7, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0xAC, 0x0, 1, 255},\n\t{0xB5, 0xB5, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA7, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE2, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x8D, 0x8D, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA7, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA6, 0x0, 1, 255},\n\t{0xB7, 0xB7, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0xA7, 0xA7, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x87, 0x87, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x68, 0x68, 0, 3},\n\t{0x48, 0x48, 0, 2},\n\t{0x8C, 0x8C, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x8C, 0x8C, 0, 1},\n\t{0x68, 0x68, 0, 1},\n\t{0x68, 0x68, 0, 2},\n\t{0x48, 0x48, 0, 1},\n\t{0x64, 0x64, 0, 1},\n\t{0x64, 0x64, 0, 2},\n\t{0x44, 0x44, 0, 1},\n\t{0x66, 0x66, 0, 1},\n\t{0x66, 0x66, 0, 2},\n\t{0x46, 0x46, 0, 1},\n\t{0x67, 0x67, 0, 1},\n\t{0x67, 0x67, 0, 2},\n\t{0x47, 0x47, 0, 1},\n\t{0xCE, 0x1, 1, 255},\n\t{0xC2, 0x0, 1, 255},\n\t{0x6C, 0x6C, 0, 3},\n\t{0xB7, 0xB7, 0, 1},\n\t{0x87, 0x87, 0, 2},\n\t{0xCE, 0x1, 1, 255},\n\t{0xC2, 0x0, 1, 255},\n\t{0x6C, 0x6C, 0, 4},\n\t{0x4C, 0x4C, 0, 3},\n\t{0xB7, 0xB7, 0, 1},\n\t{0x87, 0x87, 0, 2},\n\t{0xCC, 0x0, 2, 255},\n\t{0x8B, 0x8B, 0, 2},\n\t{0x88, 0x88, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x61, 0x61, 0, 3},\n\t{0x8A, 0x8A, 0, 2},\n\t{0x88, 0x88, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x61, 0x61, 0, 4},\n\t{0x41, 0x41, 0, 3},\n\t{0x8A, 0x8A, 0, 2},\n\t{0x88, 0x88, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0xA8, 0xA8, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 1, 255},\n\t{0x90, 0x91, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 6, 255},\n\t{0x98, 0x42, 1, 255},\n\t{0x96, 0x31, 1, 255},\n\t{0x94, 0x1B, 1, 255},\n\t{0x84, 0x11, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x80, 0x80, 0, 73},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0xD, 1, 255},\n\t{0xBD, 0x0, 13, 255},\n\t{0xBC, 0xBC, 0, 20},\n\t{0xBA, 0xBA, 0, 19},\n\t{0xB4, 0xB4, 0, 18},\n\t{0xA6, 0xA6, 0, 17},\n\t{0xA2, 0xA3, 0, 15},\n\t{0xA0, 0xA0, 0, 14},\n\t{0x9D, 0x9D, 0, 13},\n\t{0x96, 0x96, 0, 12},\n\t{0x91, 0x91, 0, 11},\n\t{0x8C, 0x8C, 0, 10},\n\t{0x8A, 0x8A, 0, 9},\n\t{0x84, 0x84, 0, 8},\n\t{0x82, 0x82, 0, 7},\n\t{0xB1, 0xB2, 0, 21},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 8, 255},\n\t{0xBC, 0xBC, 0, 30},\n\t{0xB4, 0xB4, 0, 29},\n\t{0xA2, 0xA2, 0, 28},\n\t{0x93, 0x93, 0, 27},\n\t{0x8C, 0x8C, 0, 26},\n\t{0x8A, 0x8A, 0, 25},\n\t{0x84, 0x84, 0, 24},\n\t{0x82, 0x82, 0, 23},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x12, 1, 255},\n\t{0xBD, 0x0, 11, 255},\n\t{0xBC, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 41},\n\t{0xB4, 0xB4, 0, 40},\n\t{0xA6, 0xA6, 0, 39},\n\t{0xA2, 0xA3, 0, 37},\n\t{0xA0, 0xA0, 0, 36},\n\t{0x91, 0x91, 0, 35},\n\t{0x8C, 0x8C, 0, 34},\n\t{0x8A, 0x8A, 0, 33},\n\t{0x84, 0x84, 0, 32},\n\t{0x82, 0x82, 0, 31},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 5, 255},\n\t{0xA2, 0xA2, 0, 5},\n\t{0x93, 0x93, 0, 4},\n\t{0x91, 0x91, 0, 3},\n\t{0x84, 0x84, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xB1, 0xB2, 0, 42},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0xD, 1, 255},\n\t{0xBD, 0x0, 13, 255},\n\t{0xBC, 0xBC, 0, 57},\n\t{0xBA, 0xBA, 0, 56},\n\t{0xB4, 0xB4, 0, 55},\n\t{0xA6, 0xA6, 0, 54},\n\t{0xA2, 0xA3, 0, 52},\n\t{0xA0, 0xA0, 0, 51},\n\t{0x96, 0x96, 0, 50},\n\t{0x93, 0x93, 0, 49},\n\t{0x91, 0x91, 0, 48},\n\t{0x8C, 0x8C, 0, 47},\n\t{0x8A, 0x8A, 0, 46},\n\t{0x84, 0x84, 0, 45},\n\t{0x82, 0x82, 0, 44},\n\t{0xB1, 0xB2, 0, 58},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x10, 1, 255},\n\t{0xBD, 0x0, 13, 255},\n\t{0xBC, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 71},\n\t{0xB4, 0xB4, 0, 70},\n\t{0xB2, 0xB2, 0, 69},\n\t{0xA6, 0xA6, 0, 68},\n\t{0xA2, 0xA2, 0, 67},\n\t{0xA0, 0xA0, 0, 66},\n\t{0x9D, 0x9D, 0, 65},\n\t{0x93, 0x93, 0, 64},\n\t{0x8C, 0x8C, 0, 63},\n\t{0x8A, 0x8A, 0, 62},\n\t{0x84, 0x84, 0, 61},\n\t{0x82, 0x82, 0, 60},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 1, 255},\n\t{0x91, 0x91, 0, 6},\n\t{0xB1, 0xB1, 0, 72},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 11, 255},\n\t{0xA6, 0x2E, 1, 255},\n\t{0xA4, 0xA4, 0, 72},\n\t{0xA3, 0x29, 1, 255},\n\t{0xA2, 0x1C, 1, 255},\n\t{0x9E, 0x9F, 0, 70},\n\t{0x99, 0x99, 0, 69},\n\t{0x91, 0xF, 1, 255},\n\t{0x8F, 0x8F, 0, 68},\n\t{0x85, 0x85, 0, 67},\n\t{0x82, 0x0, 1, 255},\n\t{0x80, 0x80, 0, 66},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0xB, 1, 255},\n\t{0xBD, 0x0, 11, 255},\n\t{0xBE, 0xBE, 0, 11},\n\t{0xBC, 0xBC, 0, 10},\n\t{0xBA, 0xBA, 0, 9},\n\t{0xA2, 0xA2, 0, 8},\n\t{0xA0, 0xA0, 0, 7},\n\t{0x9D, 0x9D, 0, 6},\n\t{0x98, 0x98, 0, 5},\n\t{0x91, 0x91, 0, 4},\n\t{0x8C, 0x8C, 0, 3},\n\t{0x8A, 0x8A, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xB1, 0xB3, 0, 12},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 11, 255},\n\t{0xBE, 0xBE, 0, 26},\n\t{0xBC, 0xBC, 0, 25},\n\t{0xBA, 0xBA, 0, 24},\n\t{0xB4, 0xB4, 0, 23},\n\t{0xA6, 0xA6, 0, 22},\n\t{0xA2, 0xA3, 0, 20},\n\t{0xA0, 0xA0, 0, 19},\n\t{0x98, 0x98, 0, 18},\n\t{0x8C, 0x8C, 0, 17},\n\t{0x8A, 0x8A, 0, 16},\n\t{0x82, 0x82, 0, 15},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 11, 255},\n\t{0xB3, 0xB3, 0, 37},\n\t{0xAB, 0xAB, 0, 36},\n\t{0xA9, 0xA9, 0, 35},\n\t{0xA3, 0xA3, 0, 34},\n\t{0xA1, 0xA1, 0, 33},\n\t{0x9F, 0x9F, 0, 32},\n\t{0x99, 0x99, 0, 31},\n\t{0x97, 0x97, 0, 30},\n\t{0x94, 0x94, 0, 29},\n\t{0x92, 0x92, 0, 28},\n\t{0x90, 0x90, 0, 27},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 3, 255},\n\t{0xA1, 0xA1, 0, 40},\n\t{0x9F, 0x9F, 0, 39},\n\t{0x95, 0x95, 0, 38},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0xD, 10, 255},\n\t{0xBD, 0x0, 13, 255},\n\t{0xBE, 0xBE, 0, 54},\n\t{0xBC, 0xBC, 0, 53},\n\t{0xBA, 0xBA, 0, 52},\n\t{0xB4, 0xB4, 0, 51},\n\t{0xB2, 0xB2, 0, 50},\n\t{0xA2, 0xA3, 0, 48},\n\t{0x98, 0x98, 0, 47},\n\t{0x96, 0x96, 0, 46},\n\t{0x91, 0x91, 0, 45},\n\t{0x8C, 0x8C, 0, 44},\n\t{0x8A, 0x8A, 0, 43},\n\t{0x84, 0x84, 0, 42},\n\t{0x82, 0x82, 0, 41},\n\t{0xB2, 0xB3, 0, 64},\n\t{0xAD, 0xAD, 0, 63},\n\t{0xA9, 0xA9, 0, 62},\n\t{0xA3, 0xA3, 0, 61},\n\t{0xA1, 0xA1, 0, 60},\n\t{0x9F, 0x9F, 0, 59},\n\t{0x99, 0x99, 0, 58},\n\t{0x94, 0x94, 0, 57},\n\t{0x92, 0x92, 0, 56},\n\t{0x90, 0x90, 0, 55},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 11, 255},\n\t{0xAB, 0xAB, 0, 12},\n\t{0xA8, 0xA9, 0, 10},\n\t{0xA6, 0xA6, 0, 9},\n\t{0xA3, 0xA3, 0, 8},\n\t{0xA1, 0xA1, 0, 7},\n\t{0x9F, 0x9F, 0, 6},\n\t{0x99, 0x99, 0, 5},\n\t{0x97, 0x97, 0, 4},\n\t{0x94, 0x94, 0, 3},\n\t{0x92, 0x92, 0, 2},\n\t{0x90, 0x90, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 9, 255},\n\t{0xB7, 0xB7, 0, 10},\n\t{0xA6, 0xA6, 0, 9},\n\t{0xA4, 0xA4, 0, 8},\n\t{0xA1, 0xA1, 0, 7},\n\t{0x9F, 0x9F, 0, 6},\n\t{0x97, 0x97, 0, 5},\n\t{0x94, 0x95, 0, 3},\n\t{0x92, 0x92, 0, 2},\n\t{0x90, 0x90, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 9, 255},\n\t{0x9A, 0x9B, 0, 45},\n\t{0x93, 0x1D, 1, 255},\n\t{0x91, 0x11, 1, 255},\n\t{0x90, 0x90, 0, 44},\n\t{0x89, 0x89, 0, 43},\n\t{0x86, 0x87, 0, 41},\n\t{0x84, 0x8, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x81, 0x81, 0, 40},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x4, 1, 255},\n\t{0xBD, 0x0, 4, 255},\n\t{0xBC, 0xBC, 0, 5},\n\t{0xBA, 0xBA, 0, 4},\n\t{0xB4, 0xB4, 0, 3},\n\t{0xA2, 0xA3, 0, 1},\n\t{0xB1, 0xB2, 0, 6},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 7, 255},\n\t{0xBC, 0xBC, 0, 15},\n\t{0xA2, 0xA3, 0, 13},\n\t{0xA0, 0xA0, 0, 12},\n\t{0x93, 0x93, 0, 11},\n\t{0x8C, 0x8C, 0, 10},\n\t{0x8A, 0x8A, 0, 9},\n\t{0x82, 0x82, 0, 8},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 10, 255},\n\t{0xBC, 0xBC, 0, 25},\n\t{0xBA, 0xBA, 0, 24},\n\t{0xB4, 0xB4, 0, 23},\n\t{0xA2, 0xA2, 0, 22},\n\t{0xA0, 0xA0, 0, 21},\n\t{0x93, 0x93, 0, 20},\n\t{0x8C, 0x8C, 0, 19},\n\t{0x8A, 0x8A, 0, 18},\n\t{0x84, 0x84, 0, 17},\n\t{0x82, 0x82, 0, 16},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 13, 255},\n\t{0xBE, 0xBE, 0, 39},\n\t{0xBC, 0xBC, 0, 38},\n\t{0xBA, 0xBA, 0, 37},\n\t{0xB4, 0xB4, 0, 36},\n\t{0xA2, 0xA3, 0, 34},\n\t{0xA0, 0xA0, 0, 33},\n\t{0x98, 0x98, 0, 32},\n\t{0x96, 0x96, 0, 31},\n\t{0x93, 0x93, 0, 30},\n\t{0x8C, 0x8C, 0, 29},\n\t{0x8A, 0x8A, 0, 28},\n\t{0x84, 0x84, 0, 27},\n\t{0x82, 0x82, 0, 26},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 9, 255},\n\t{0xA8, 0xA9, 0, 10},\n\t{0xA6, 0xA6, 0, 9},\n\t{0xA3, 0xA4, 0, 7},\n\t{0xA1, 0xA1, 0, 6},\n\t{0x9F, 0x9F, 0, 5},\n\t{0x99, 0x99, 0, 4},\n\t{0x94, 0x94, 0, 3},\n\t{0x92, 0x92, 0, 2},\n\t{0x90, 0x90, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 8, 255},\n\t{0x9A, 0x9B, 0, 62},\n\t{0x96, 0x29, 1, 255},\n\t{0x95, 0x95, 0, 61},\n\t{0x91, 0x14, 1, 255},\n\t{0x90, 0x90, 0, 60},\n\t{0x86, 0x87, 0, 58},\n\t{0x82, 0x0, 1, 255},\n\t{0x81, 0x81, 0, 57},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x10, 1, 255},\n\t{0xBD, 0x0, 16, 255},\n\t{0xBE, 0xBE, 0, 17},\n\t{0xBC, 0xBC, 0, 16},\n\t{0xBA, 0xBA, 0, 15},\n\t{0xB4, 0xB4, 0, 14},\n\t{0xB2, 0xB2, 0, 13},\n\t{0xA6, 0xA6, 0, 12},\n\t{0xA2, 0xA3, 0, 10},\n\t{0xA0, 0xA0, 0, 9},\n\t{0x98, 0x98, 0, 8},\n\t{0x96, 0x96, 0, 7},\n\t{0x93, 0x93, 0, 6},\n\t{0x91, 0x91, 0, 5},\n\t{0x8C, 0x8C, 0, 4},\n\t{0x8A, 0x8A, 0, 3},\n\t{0x84, 0x84, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xB1, 0xB2, 0, 18},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x11, 1, 255},\n\t{0xBD, 0x0, 17, 255},\n\t{0xBE, 0xBE, 0, 37},\n\t{0xBC, 0xBC, 0, 36},\n\t{0xBA, 0xBA, 0, 35},\n\t{0xB4, 0xB4, 0, 34},\n\t{0xB2, 0xB2, 0, 33},\n\t{0xA6, 0xA6, 0, 32},\n\t{0xA2, 0xA3, 0, 30},\n\t{0xA0, 0xA0, 0, 29},\n\t{0x9D, 0x9D, 0, 28},\n\t{0x98, 0x98, 0, 27},\n\t{0x96, 0x96, 0, 26},\n\t{0x93, 0x93, 0, 25},\n\t{0x91, 0x91, 0, 24},\n\t{0x8C, 0x8C, 0, 23},\n\t{0x8A, 0x8A, 0, 22},\n\t{0x84, 0x84, 0, 21},\n\t{0x82, 0x82, 0, 20},\n\t{0xB2, 0xB2, 0, 38},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0xF, 1, 255},\n\t{0xBD, 0x0, 15, 255},\n\t{0xBE, 0xBE, 0, 54},\n\t{0xBC, 0xBC, 0, 53},\n\t{0xBA, 0xBA, 0, 52},\n\t{0xB4, 0xB4, 0, 51},\n\t{0xB2, 0xB2, 0, 50},\n\t{0xA2, 0xA3, 0, 48},\n\t{0xA0, 0xA0, 0, 47},\n\t{0x98, 0x98, 0, 46},\n\t{0x96, 0x96, 0, 45},\n\t{0x93, 0x93, 0, 44},\n\t{0x91, 0x91, 0, 43},\n\t{0x8C, 0x8C, 0, 42},\n\t{0x8A, 0x8A, 0, 41},\n\t{0x84, 0x84, 0, 40},\n\t{0x82, 0x82, 0, 39},\n\t{0xB1, 0xB2, 0, 55},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 10, 255},\n\t{0xA6, 0x20, 1, 255},\n\t{0xA4, 0xA4, 0, 52},\n\t{0xA1, 0xA1, 0, 51},\n\t{0x9E, 0x9F, 0, 49},\n\t{0x99, 0x99, 0, 48},\n\t{0x93, 0x11, 1, 255},\n\t{0x91, 0x0, 1, 255},\n\t{0x8F, 0x8F, 0, 47},\n\t{0x89, 0x89, 0, 46},\n\t{0x85, 0x85, 0, 45},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 15, 255},\n\t{0xBE, 0xBE, 0, 16},\n\t{0xBC, 0xBC, 0, 15},\n\t{0xBA, 0xBA, 0, 14},\n\t{0xB4, 0xB4, 0, 13},\n\t{0xB2, 0xB2, 0, 12},\n\t{0xA6, 0xA6, 0, 11},\n\t{0xA2, 0xA3, 0, 9},\n\t{0xA0, 0xA0, 0, 8},\n\t{0x98, 0x98, 0, 7},\n\t{0x96, 0x96, 0, 6},\n\t{0x93, 0x93, 0, 5},\n\t{0x8C, 0x8C, 0, 4},\n\t{0x8A, 0x8A, 0, 3},\n\t{0x84, 0x84, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 13, 255},\n\t{0xBE, 0xBE, 0, 29},\n\t{0xBC, 0xBC, 0, 28},\n\t{0xB4, 0xB4, 0, 27},\n\t{0xA6, 0xA6, 0, 26},\n\t{0xA0, 0xA0, 0, 25},\n\t{0x9D, 0x9D, 0, 24},\n\t{0x98, 0x98, 0, 23},\n\t{0x93, 0x93, 0, 22},\n\t{0x91, 0x91, 0, 21},\n\t{0x8C, 0x8C, 0, 20},\n\t{0x8A, 0x8A, 0, 19},\n\t{0x84, 0x84, 0, 18},\n\t{0x82, 0x82, 0, 17},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBD, 0x0, 14, 255},\n\t{0xBC, 0xBC, 0, 44},\n\t{0xBA, 0xBA, 0, 43},\n\t{0xB4, 0xB4, 0, 42},\n\t{0xB2, 0xB2, 0, 41},\n\t{0xA6, 0xA6, 0, 40},\n\t{0xA2, 0xA3, 0, 38},\n\t{0xA0, 0xA0, 0, 37},\n\t{0x96, 0x96, 0, 36},\n\t{0x93, 0x93, 0, 35},\n\t{0x91, 0x91, 0, 34},\n\t{0x8C, 0x8C, 0, 33},\n\t{0x8A, 0x8A, 0, 32},\n\t{0x84, 0x84, 0, 31},\n\t{0x82, 0x82, 0, 30},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xBE, 0x0, 1, 255},\n\t{0xA4, 0xA5, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x9, 1, 255},\n\t{0xBD, 0x0, 3, 255},\n\t{0xB5, 0xB5, 0, 6},\n\t{0xB3, 0xB3, 0, 5},\n\t{0xB1, 0x0, 1, 4},\n\t{0xE0, 0x0, 2, 255},\n\t{0xBE, 0x2, 1, 255},\n\t{0xBD, 0x0, 2, 255},\n\t{0xB4, 0xB4, 0, 2},\n\t{0xB2, 0xB2, 0, 1},\n\t{0x80, 0x80, 0, 3},\n\t{0x80, 0x81, 0, 7},\n\t{0x7A, 0x7A, 0, 1},\n\t{0x7A, 0x7A, 0, 2},\n\t{0x5A, 0x5A, 0, 1},\n\t{0x62, 0x62, 0, 1},\n\t{0x62, 0x62, 0, 2},\n\t{0x42, 0x42, 0, 1},\n\t{0x70, 0x70, 0, 1},\n\t{0x70, 0x70, 0, 2},\n\t{0x50, 0x50, 0, 1},\n\t{0x79, 0x79, 0, 1},\n\t{0x79, 0x79, 0, 2},\n\t{0x59, 0x59, 0, 1},\n\t{0x73, 0x73, 0, 1},\n\t{0x73, 0x73, 0, 2},\n\t{0x53, 0x53, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x82, 0x82, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x83, 0x83, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x88, 0x88, 0, 2},\n\t{0x83, 0x83, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x8A, 0x8A, 0, 2},\n\t{0x88, 0x88, 0, 1},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8B, 0x8B, 0, 3},\n\t{0x88, 0x88, 0, 2},\n\t{0x83, 0x83, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x67, 0x67, 0, 2},\n\t{0x83, 0x83, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x67, 0x67, 0, 3},\n\t{0x47, 0x47, 0, 2},\n\t{0x83, 0x83, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x8C, 0x8C, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xC5, 0x2, 1, 255},\n\t{0x7A, 0x0, 1, 255},\n\t{0xCC, 0x0, 1, 255},\n\t{0x8C, 0x8C, 0, 1},\n\t{0xBE, 0xBE, 0, 2},\n\t{0xC5, 0x4, 1, 255},\n\t{0x7A, 0x2, 1, 255},\n\t{0x5A, 0x0, 1, 255},\n\t{0xCC, 0x0, 1, 255},\n\t{0x8C, 0x8C, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x8C, 0x8C, 0, 2},\n\t{0xBD, 0xBE, 0, 3},\n\t{0xCE, 0x1, 1, 255},\n\t{0xC2, 0x0, 1, 255},\n\t{0x6A, 0x6A, 0, 3},\n\t{0xB7, 0xB7, 0, 1},\n\t{0x87, 0x87, 0, 2},\n\t{0xCE, 0x1, 1, 255},\n\t{0xC2, 0x0, 1, 255},\n\t{0x6A, 0x6A, 0, 4},\n\t{0x4A, 0x4A, 0, 3},\n\t{0xB7, 0xB7, 0, 1},\n\t{0x87, 0x87, 0, 2},\n\t{0x6A, 0x6A, 0, 1},\n\t{0x6A, 0x6A, 0, 2},\n\t{0x4A, 0x4A, 0, 1},\n\t{0x73, 0x73, 0, 2},\n\t{0x63, 0x0, 1, 255},\n\t{0x73, 0x73, 0, 1},\n\t{0x73, 0x73, 0, 4},\n\t{0x63, 0x1, 1, 255},\n\t{0x53, 0x53, 0, 3},\n\t{0x43, 0x0, 1, 255},\n\t{0x53, 0x53, 0, 1},\n\t{0x73, 0x73, 0, 2},\n\t{0x7A, 0x2, 1, 4},\n\t{0x64, 0x0, 1, 255},\n\t{0x7A, 0x0, 1, 2},\n\t{0x73, 0x73, 0, 1},\n\t{0x73, 0x73, 0, 3},\n\t{0x7A, 0x5, 1, 8},\n\t{0x64, 0x3, 1, 255},\n\t{0x5A, 0x2, 1, 7},\n\t{0x44, 0x0, 1, 255},\n\t{0x5A, 0x0, 1, 3},\n\t{0x53, 0x53, 0, 1},\n\t{0x53, 0x53, 0, 4},\n\t{0x7A, 0x0, 1, 5},\n\t{0x73, 0x73, 0, 2},\n\t{0x73, 0x73, 0, 6},\n\t{0x79, 0x79, 0, 2},\n\t{0x67, 0x0, 1, 255},\n\t{0x79, 0x79, 0, 1},\n\t{0x79, 0x79, 0, 4},\n\t{0x67, 0x1, 1, 255},\n\t{0x59, 0x59, 0, 3},\n\t{0x47, 0x0, 1, 255},\n\t{0x59, 0x59, 0, 1},\n\t{0x79, 0x79, 0, 2},\n\t{0xCE, 0x2, 1, 255},\n\t{0xC2, 0x1, 1, 255},\n\t{0x79, 0x79, 0, 4},\n\t{0x6C, 0x0, 1, 255},\n\t{0x79, 0x79, 0, 1},\n\t{0xB7, 0xB7, 0, 2},\n\t{0x87, 0x87, 0, 3},\n\t{0xCE, 0x3, 1, 255},\n\t{0xC2, 0x2, 1, 255},\n\t{0x79, 0x79, 0, 6},\n\t{0x6C, 0x1, 1, 255},\n\t{0x59, 0x59, 0, 5},\n\t{0x4C, 0x0, 1, 255},\n\t{0x59, 0x59, 0, 1},\n\t{0x79, 0x79, 0, 2},\n\t{0xB7, 0xB7, 0, 3},\n\t{0x87, 0x87, 0, 4},\n\t{0x79, 0x79, 0, 2},\n\t{0x6E, 0x0, 1, 255},\n\t{0x79, 0x79, 0, 1},\n\t{0x79, 0x79, 0, 4},\n\t{0x6E, 0x1, 1, 255},\n\t{0x59, 0x59, 0, 3},\n\t{0x4E, 0x0, 1, 255},\n\t{0x59, 0x59, 0, 1},\n\t{0x79, 0x79, 0, 2},\n\t{0x7A, 0x7A, 0, 2},\n\t{0x73, 0x0, 1, 255},\n\t{0x7A, 0x7A, 0, 1},\n\t{0x7A, 0x7A, 0, 4},\n\t{0x73, 0x1, 1, 255},\n\t{0x5A, 0x5A, 0, 3},\n\t{0x53, 0x0, 1, 255},\n\t{0x5A, 0x5A, 0, 1},\n\t{0x7A, 0x7A, 0, 2},\n\t{0x79, 0x79, 0, 2},\n\t{0x74, 0x0, 1, 255},\n\t{0x79, 0x79, 0, 1},\n\t{0x79, 0x79, 0, 4},\n\t{0x74, 0x1, 1, 255},\n\t{0x59, 0x59, 0, 3},\n\t{0x54, 0x0, 1, 255},\n\t{0x59, 0x59, 0, 1},\n\t{0x79, 0x79, 0, 2},\n\t{0x7A, 0x0, 1, 255},\n\t{0x73, 0x73, 0, 2},\n\t{0x73, 0x73, 0, 1},\n\t{0x7A, 0x1, 1, 255},\n\t{0x73, 0x73, 0, 4},\n\t{0x5A, 0x0, 1, 255},\n\t{0x53, 0x53, 0, 3},\n\t{0x53, 0x53, 0, 1},\n\t{0x73, 0x73, 0, 2},\n\t{0xD6, 0x0, 1, 255},\n\t{0x82, 0x82, 0, 1},\n\t{0x77, 0x77, 0, 3},\n\t{0x68, 0x68, 0, 2},\n\t{0x62, 0x62, 0, 1},\n\t{0x77, 0x77, 0, 6},\n\t{0x68, 0x68, 0, 5},\n\t{0x62, 0x62, 0, 4},\n\t{0x57, 0x57, 0, 3},\n\t{0x48, 0x48, 0, 2},\n\t{0x42, 0x42, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0xA3, 0xA3, 0, 1},\n\t{0x77, 0x77, 0, 2},\n\t{0x70, 0x70, 0, 1},\n\t{0x77, 0x77, 0, 4},\n\t{0x70, 0x70, 0, 3},\n\t{0x57, 0x57, 0, 2},\n\t{0x50, 0x50, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x79, 0x79, 0, 3},\n\t{0x77, 0x77, 0, 2},\n\t{0x87, 0x87, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x79, 0x79, 0, 5},\n\t{0x77, 0x77, 0, 4},\n\t{0x59, 0x59, 0, 3},\n\t{0x57, 0x57, 0, 2},\n\t{0x87, 0x87, 0, 1},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8A, 0x8A, 0, 3},\n\t{0x88, 0x88, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x81, 0x81, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x88, 0x88, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x1, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x9D, 0, 1},\n\t{0xBC, 0xBC, 0, 2},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 1, 255},\n\t{0xBC, 0xBD, 0, 1},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x7, 1, 255},\n\t{0x82, 0x0, 2, 255},\n\t{0x9D, 0x9D, 0, 3},\n\t{0x99, 0x0, 1, 255},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x1, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x9D, 0, 1},\n\t{0xBC, 0xBC, 0, 2},\n\t{0xBC, 0xBC, 0, 4},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x4, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x0, 1, 255},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 1, 255},\n\t{0xBC, 0xBD, 0, 1},\n\t{0xBC, 0xBD, 0, 3},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0xE, 1, 255},\n\t{0x82, 0x0, 3, 255},\n\t{0x9E, 0x9E, 0, 6},\n\t{0x9D, 0x8, 1, 5},\n\t{0x99, 0x0, 1, 255},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x4, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x0, 1, 2},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xBC, 0xBC, 0, 3},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 4},\n\t{0xBC, 0xBC, 0, 7},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x8, 2, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x0, 1, 255},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 2, 255},\n\t{0xBD, 0x0, 1, 3},\n\t{0xBC, 0xBD, 0, 2},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xBD, 0x0, 1, 6},\n\t{0xBC, 0xBE, 0, 5},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 4},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 2, 255},\n\t{0xBD, 0x0, 1, 3},\n\t{0xBC, 0xBE, 0, 2},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x1, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x9E, 0, 1},\n\t{0xBC, 0xBC, 0, 3},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 1, 255},\n\t{0xBC, 0xBE, 0, 1},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x17, 1, 255},\n\t{0x82, 0x0, 4, 255},\n\t{0x9E, 0x9E, 0, 9},\n\t{0x9D, 0x10, 1, 8},\n\t{0x9A, 0x8, 1, 255},\n\t{0x99, 0x0, 1, 255},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x4, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x0, 1, 3},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xBC, 0xBC, 0, 4},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x4, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x0, 1, 5},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 2},\n\t{0xBC, 0xBC, 0, 6},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 7},\n\t{0xBC, 0xBC, 0, 10},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x10, 2, 255},\n\t{0x82, 0x0, 2, 255},\n\t{0x9A, 0x7, 1, 255},\n\t{0x99, 0x0, 1, 255},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 2, 255},\n\t{0xBD, 0x0, 1, 4},\n\t{0xBC, 0xBD, 0, 3},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 2, 255},\n\t{0xBD, 0x0, 1, 6},\n\t{0xBC, 0xBD, 0, 5},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 2},\n\t{0xBD, 0x0, 1, 9},\n\t{0xBC, 0xBE, 0, 8},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 7},\n\t{0xE3, 0x0, 2, 255},\n\t{0x83, 0x5, 1, 255},\n\t{0x82, 0x0, 2, 255},\n\t{0x9E, 0x9E, 0, 3},\n\t{0x9D, 0x0, 1, 2},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x99, 0x99, 0, 1},\n\t{0xBC, 0xBC, 0, 4},\n\t{0xE3, 0x0, 1, 255},\n\t{0x82, 0x0, 1, 255},\n\t{0x9D, 0x9D, 0, 1},\n\t{0xE3, 0x0, 1, 255},\n\t{0x83, 0x0, 1, 255},\n\t{0xBD, 0xBD, 0, 1},\n\t{0x27, 0x27, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x9F, 0x0, 1, 255},\n\t{0x8C, 0x8C, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x9F, 0x0, 1, 255},\n\t{0x86, 0x87, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x9F, 0x0, 1, 255},\n\t{0x86, 0x86, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x9F, 0x0, 1, 255},\n\t{0x87, 0x87, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA5, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA4, 0x0, 1, 255},\n\t{0xB7, 0xB7, 0, 1},\n\t{0x76, 0x76, 0, 8},\n\t{0x70, 0x70, 0, 7},\n\t{0x66, 0x66, 0, 6},\n\t{0x62, 0x62, 0, 5},\n\t{0x56, 0x56, 0, 4},\n\t{0x50, 0x50, 0, 3},\n\t{0x46, 0x46, 0, 2},\n\t{0x42, 0x42, 0, 1},\n\t{0x79, 0x7A, 0, 17},\n\t{0x73, 0x74, 0, 15},\n\t{0x6B, 0x6B, 0, 14},\n\t{0x67, 0x2, 2, 13},\n\t{0x64, 0x64, 0, 12},\n\t{0x59, 0x5A, 0, 10},\n\t{0x53, 0x54, 0, 8},\n\t{0x4B, 0x4B, 0, 7},\n\t{0x47, 0x0, 2, 6},\n\t{0x44, 0x44, 0, 5},\n\t{0x62, 0x62, 0, 2},\n\t{0x42, 0x42, 0, 1},\n\t{0x62, 0x62, 0, 4},\n\t{0x42, 0x42, 0, 3},\n\t{0x79, 0x7A, 0, 16},\n\t{0x73, 0x74, 0, 14},\n\t{0x6B, 0x6B, 0, 13},\n\t{0x67, 0x1, 2, 12},\n\t{0x64, 0x64, 0, 11},\n\t{0x59, 0x5A, 0, 9},\n\t{0x53, 0x54, 0, 7},\n\t{0x4B, 0x4B, 0, 6},\n\t{0x47, 0x0, 1, 5},\n\t{0x44, 0x44, 0, 4},\n\t{0x42, 0x42, 0, 1},\n\t{0x62, 0x62, 0, 3},\n\t{0x42, 0x42, 0, 2},\n\t{0xCC, 0x0, 2, 255},\n\t{0x83, 0x83, 0, 3},\n\t{0x80, 0x81, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0xA8, 0xA8, 0, 2},\n\t{0x87, 0x87, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0xA8, 0xA8, 0, 2},\n\t{0x84, 0x84, 0, 1},\n\t{0xCE, 0x2, 1, 255},\n\t{0xCC, 0x1, 1, 255},\n\t{0xC2, 0x0, 1, 255},\n\t{0xB7, 0xB7, 0, 1},\n\t{0xA7, 0xA7, 0, 2},\n\t{0x87, 0x87, 0, 3},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB5, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE2, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x8D, 0x8D, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB5, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE2, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0x20, 0x20, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xB5, 0x0, 1, 255},\n\t{0x8D, 0x8D, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA5, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE0, 0x0, 1, 255},\n\t{0xA4, 0x0, 1, 255},\n\t{0x9E, 0x9E, 0, 1},\n\t{0xCC, 0x1, 1, 255},\n\t{0xC4, 0x0, 1, 255},\n\t{0xA6, 0xA7, 0, 1},\n\t{0x87, 0x87, 0, 3},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 2, 255},\n\t{0xBA, 0xBA, 0, 3},\n\t{0xB9, 0x0, 1, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x99, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x84, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB8, 0xB8, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 2, 255},\n\t{0xBA, 0x0, 1, 3},\n\t{0xB9, 0xBA, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xAF, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x95, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 3, 255},\n\t{0xBA, 0xBA, 0, 4},\n\t{0xB9, 0x9, 1, 3},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBB, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xAC, 0xAC, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x98, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x84, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB8, 0xB8, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 2, 255},\n\t{0xBA, 0xBA, 0, 3},\n\t{0xB9, 0x0, 1, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0x99, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xAE, 0xAE, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 2, 255},\n\t{0xAF, 0x0, 1, 255},\n\t{0xAE, 0xAE, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB6, 0xB6, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 31, 255},\n\t{0xB1, 0x5A, 1, 255},\n\t{0x9F, 0x57, 1, 255},\n\t{0x9E, 0x54, 1, 255},\n\t{0x9C, 0x51, 1, 255},\n\t{0x9B, 0x4E, 1, 255},\n\t{0x9A, 0x4B, 1, 255},\n\t{0x99, 0x48, 1, 255},\n\t{0x98, 0x45, 1, 255},\n\t{0x97, 0x42, 1, 255},\n\t{0x96, 0x3F, 1, 255},\n\t{0x95, 0x3C, 1, 255},\n\t{0x94, 0x39, 1, 255},\n\t{0x93, 0x36, 1, 255},\n\t{0x92, 0x33, 1, 255},\n\t{0x91, 0x30, 1, 255},\n\t{0x90, 0x2D, 1, 255},\n\t{0x8F, 0x2A, 1, 255},\n\t{0x8E, 0x27, 1, 255},\n\t{0x8D, 0x24, 1, 255},\n\t{0x8C, 0x21, 1, 255},\n\t{0x8B, 0x1E, 1, 255},\n\t{0x8A, 0x1B, 1, 255},\n\t{0x89, 0x18, 1, 255},\n\t{0x87, 0x15, 1, 255},\n\t{0x86, 0x12, 1, 255},\n\t{0x85, 0xF, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 61},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 63},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 65},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 67},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 69},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 71},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 73},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 75},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 77},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 79},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 81},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 83},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 85},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 87},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 89},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 91},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 93},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 95},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 97},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 99},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 101},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 103},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 105},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 107},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 109},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 111},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 113},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 115},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 117},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 119},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xAC, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 30, 255},\n\t{0x9F, 0x57, 1, 255},\n\t{0x9E, 0x54, 1, 255},\n\t{0x9C, 0x51, 1, 255},\n\t{0x9B, 0x4E, 1, 255},\n\t{0x9A, 0x4B, 1, 255},\n\t{0x99, 0x48, 1, 255},\n\t{0x98, 0x45, 1, 255},\n\t{0x97, 0x42, 1, 255},\n\t{0x96, 0x3F, 1, 255},\n\t{0x95, 0x3C, 1, 255},\n\t{0x94, 0x39, 1, 255},\n\t{0x93, 0x36, 1, 255},\n\t{0x92, 0x33, 1, 255},\n\t{0x91, 0x30, 1, 255},\n\t{0x90, 0x2D, 1, 255},\n\t{0x8F, 0x2A, 1, 255},\n\t{0x8E, 0x27, 1, 255},\n\t{0x8D, 0x24, 1, 255},\n\t{0x8C, 0x21, 1, 255},\n\t{0x8B, 0x1E, 1, 255},\n\t{0x8A, 0x1B, 1, 255},\n\t{0x89, 0x18, 1, 255},\n\t{0x87, 0x15, 1, 255},\n\t{0x86, 0x12, 1, 255},\n\t{0x85, 0xF, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 3},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 5},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 7},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 9},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 11},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 13},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 15},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 17},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 19},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 21},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 23},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 25},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 27},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 29},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 31},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 33},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 35},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 37},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 39},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 41},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 43},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 45},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 47},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 49},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 51},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 53},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 55},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 57},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 59},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 36, 255},\n\t{0xAC, 0xF7, 1, 197},\n\t{0xAB, 0x69, 1, 196},\n\t{0xA1, 0x66, 1, 255},\n\t{0xA0, 0x63, 1, 255},\n\t{0x9F, 0x60, 1, 255},\n\t{0x9E, 0x5D, 1, 255},\n\t{0x9D, 0x5A, 1, 255},\n\t{0x9C, 0x57, 1, 255},\n\t{0x9B, 0x54, 1, 255},\n\t{0x9A, 0x51, 1, 255},\n\t{0x99, 0x4E, 1, 255},\n\t{0x98, 0x4B, 1, 255},\n\t{0x97, 0x48, 1, 255},\n\t{0x96, 0x45, 1, 255},\n\t{0x95, 0x42, 1, 255},\n\t{0x94, 0x3F, 1, 255},\n\t{0x93, 0x3C, 1, 255},\n\t{0x92, 0x39, 1, 255},\n\t{0x91, 0x36, 1, 255},\n\t{0x90, 0x33, 1, 255},\n\t{0x8F, 0x30, 1, 255},\n\t{0x8E, 0x2D, 1, 255},\n\t{0x8D, 0x2A, 1, 255},\n\t{0x8C, 0x27, 1, 255},\n\t{0x8B, 0x24, 1, 255},\n\t{0x8A, 0x21, 1, 255},\n\t{0x89, 0x1E, 1, 255},\n\t{0x88, 0x1B, 1, 255},\n\t{0x87, 0x18, 1, 255},\n\t{0x86, 0x15, 1, 255},\n\t{0x85, 0x12, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 131},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 133},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 135},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 137},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 139},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 4},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 140},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 142},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 144},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 146},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 147},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 149},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 151},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 153},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 155},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 157},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 159},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 161},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 163},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 165},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 167},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 169},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 171},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 173},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 175},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 177},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 179},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 181},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 183},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 185},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 187},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 188},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 190},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 192},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 193},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 35, 255},\n\t{0xBA, 0xBA, 0, 194},\n\t{0xA1, 0x66, 1, 255},\n\t{0xA0, 0x63, 1, 255},\n\t{0x9F, 0x60, 1, 255},\n\t{0x9E, 0x5D, 1, 255},\n\t{0x9D, 0x5A, 1, 255},\n\t{0x9C, 0x57, 1, 255},\n\t{0x9B, 0x54, 1, 255},\n\t{0x9A, 0x51, 1, 255},\n\t{0x99, 0x4E, 1, 255},\n\t{0x98, 0x4B, 1, 255},\n\t{0x97, 0x48, 1, 255},\n\t{0x96, 0x45, 1, 255},\n\t{0x95, 0x42, 1, 255},\n\t{0x94, 0x3F, 1, 255},\n\t{0x93, 0x3C, 1, 255},\n\t{0x92, 0x39, 1, 255},\n\t{0x91, 0x36, 1, 255},\n\t{0x90, 0x33, 1, 255},\n\t{0x8F, 0x30, 1, 255},\n\t{0x8E, 0x2D, 1, 255},\n\t{0x8D, 0x2A, 1, 255},\n\t{0x8C, 0x27, 1, 255},\n\t{0x8B, 0x24, 1, 255},\n\t{0x8A, 0x21, 1, 255},\n\t{0x89, 0x1E, 1, 255},\n\t{0x88, 0x1B, 1, 255},\n\t{0x87, 0x18, 1, 255},\n\t{0x86, 0x15, 1, 255},\n\t{0x85, 0x12, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 5},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 7},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 9},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 11},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 13},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 14},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 16},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 18},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 20},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 21},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 23},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 25},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 27},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 29},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 31},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 33},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 35},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 37},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 39},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 41},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 43},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 45},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 47},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 49},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 51},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 53},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 55},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 57},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 59},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 61},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 62},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 64},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 66},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 67},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 35, 255},\n\t{0xBA, 0xBA, 0, 195},\n\t{0xA1, 0x6A, 1, 255},\n\t{0xA0, 0x67, 1, 255},\n\t{0x9F, 0x64, 1, 255},\n\t{0x9E, 0x61, 1, 255},\n\t{0x9D, 0x5E, 1, 255},\n\t{0x9C, 0x5B, 1, 255},\n\t{0x9B, 0x58, 1, 255},\n\t{0x9A, 0x55, 1, 255},\n\t{0x99, 0x52, 1, 255},\n\t{0x98, 0x4F, 1, 255},\n\t{0x97, 0x4C, 1, 255},\n\t{0x96, 0x49, 1, 255},\n\t{0x95, 0x46, 1, 255},\n\t{0x94, 0x43, 1, 255},\n\t{0x93, 0x40, 1, 255},\n\t{0x92, 0x3D, 1, 255},\n\t{0x91, 0x3A, 1, 255},\n\t{0x90, 0x37, 1, 255},\n\t{0x8F, 0x34, 1, 255},\n\t{0x8E, 0x31, 1, 255},\n\t{0x8D, 0x2E, 1, 255},\n\t{0x8C, 0x2B, 1, 255},\n\t{0x8B, 0x28, 1, 255},\n\t{0x8A, 0x25, 1, 255},\n\t{0x89, 0x22, 1, 255},\n\t{0x88, 0x1F, 1, 255},\n\t{0x87, 0x1C, 1, 255},\n\t{0x86, 0x19, 1, 255},\n\t{0x85, 0x16, 1, 255},\n\t{0x84, 0x10, 1, 255},\n\t{0x83, 0xD, 1, 255},\n\t{0x82, 0xA, 1, 255},\n\t{0x81, 0x7, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 2, 255},\n\t{0xBA, 0x0, 1, 69},\n\t{0xB9, 0xBA, 0, 68},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBB, 0xBB, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 70},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 72},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 74},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 76},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 3},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 77},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 79},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 81},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 83},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 84},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 86},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 88},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 90},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 92},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 94},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 96},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 98},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 100},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 102},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 104},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 106},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 108},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 110},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 112},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 114},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 116},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 118},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 120},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 122},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 124},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 125},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 127},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 129},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 130},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 36, 255},\n\t{0xB6, 0xFE, 1, 134},\n\t{0xAF, 0x71, 1, 133},\n\t{0xA1, 0x6E, 1, 255},\n\t{0xA0, 0x6B, 1, 255},\n\t{0x9F, 0x68, 1, 255},\n\t{0x9E, 0x65, 1, 255},\n\t{0x9D, 0x62, 1, 255},\n\t{0x9C, 0x5F, 1, 255},\n\t{0x9B, 0x5C, 1, 255},\n\t{0x9A, 0x59, 1, 255},\n\t{0x99, 0x4E, 1, 255},\n\t{0x98, 0x4B, 1, 255},\n\t{0x97, 0x48, 1, 255},\n\t{0x96, 0x45, 1, 255},\n\t{0x95, 0x42, 1, 255},\n\t{0x94, 0x3F, 1, 255},\n\t{0x93, 0x3C, 1, 255},\n\t{0x92, 0x39, 1, 255},\n\t{0x91, 0x36, 1, 255},\n\t{0x90, 0x33, 1, 255},\n\t{0x8F, 0x30, 1, 255},\n\t{0x8E, 0x2D, 1, 255},\n\t{0x8D, 0x2A, 1, 255},\n\t{0x8C, 0x27, 1, 255},\n\t{0x8B, 0x24, 1, 255},\n\t{0x8A, 0x21, 1, 255},\n\t{0x89, 0x1E, 1, 255},\n\t{0x88, 0x1B, 1, 255},\n\t{0x87, 0x18, 1, 255},\n\t{0x86, 0x15, 1, 255},\n\t{0x85, 0x12, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 68},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 70},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 72},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 74},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 76},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 77},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 79},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 81},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 83},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 84},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 86},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 88},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 90},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 92},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 94},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 96},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 98},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 100},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 102},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 104},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 106},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 108},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 110},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 112},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 114},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 3, 255},\n\t{0xBA, 0x3, 1, 117},\n\t{0xB9, 0xBA, 0, 116},\n\t{0xB7, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 3},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB8, 0xB8, 0, 4},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 118},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 120},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 122},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 124},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 125},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 127},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 129},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 130},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 34, 255},\n\t{0xA1, 0x66, 1, 255},\n\t{0xA0, 0x63, 1, 255},\n\t{0x9F, 0x60, 1, 255},\n\t{0x9E, 0x5D, 1, 255},\n\t{0x9D, 0x5A, 1, 255},\n\t{0x9C, 0x57, 1, 255},\n\t{0x9B, 0x54, 1, 255},\n\t{0x9A, 0x51, 1, 255},\n\t{0x99, 0x4E, 1, 255},\n\t{0x98, 0x4B, 1, 255},\n\t{0x97, 0x48, 1, 255},\n\t{0x96, 0x45, 1, 255},\n\t{0x95, 0x42, 1, 255},\n\t{0x94, 0x3F, 1, 255},\n\t{0x93, 0x3C, 1, 255},\n\t{0x92, 0x39, 1, 255},\n\t{0x91, 0x36, 1, 255},\n\t{0x90, 0x33, 1, 255},\n\t{0x8F, 0x30, 1, 255},\n\t{0x8E, 0x2D, 1, 255},\n\t{0x8D, 0x2A, 1, 255},\n\t{0x8C, 0x27, 1, 255},\n\t{0x8B, 0x24, 1, 255},\n\t{0x8A, 0x21, 1, 255},\n\t{0x89, 0x1E, 1, 255},\n\t{0x88, 0x1B, 1, 255},\n\t{0x87, 0x18, 1, 255},\n\t{0x86, 0x15, 1, 255},\n\t{0x85, 0x12, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 5},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 7},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 9},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 11},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 13},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 14},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 16},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 18},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 20},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 21},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 23},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 25},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 27},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 29},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 31},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 33},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 35},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 37},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 39},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 41},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 43},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 45},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 47},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 49},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 51},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 53},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 55},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 57},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 59},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 61},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 62},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 64},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 66},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 67},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB7, 0xB8, 0, 131},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 34, 255},\n\t{0xA1, 0x66, 1, 255},\n\t{0xA0, 0x63, 1, 255},\n\t{0x9F, 0x60, 1, 255},\n\t{0x9E, 0x5D, 1, 255},\n\t{0x9D, 0x5A, 1, 255},\n\t{0x9C, 0x57, 1, 255},\n\t{0x9B, 0x54, 1, 255},\n\t{0x9A, 0x51, 1, 255},\n\t{0x99, 0x4E, 1, 255},\n\t{0x98, 0x4B, 1, 255},\n\t{0x97, 0x48, 1, 255},\n\t{0x96, 0x45, 1, 255},\n\t{0x95, 0x42, 1, 255},\n\t{0x94, 0x3F, 1, 255},\n\t{0x93, 0x3C, 1, 255},\n\t{0x92, 0x39, 1, 255},\n\t{0x91, 0x36, 1, 255},\n\t{0x90, 0x33, 1, 255},\n\t{0x8F, 0x30, 1, 255},\n\t{0x8E, 0x2D, 1, 255},\n\t{0x8D, 0x2A, 1, 255},\n\t{0x8C, 0x27, 1, 255},\n\t{0x8B, 0x24, 1, 255},\n\t{0x8A, 0x21, 1, 255},\n\t{0x89, 0x1E, 1, 255},\n\t{0x88, 0x1B, 1, 255},\n\t{0x87, 0x18, 1, 255},\n\t{0x86, 0x15, 1, 255},\n\t{0x85, 0x12, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 4},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 6},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 8},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 10},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 11},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 13},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 15},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 17},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 18},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 20},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 22},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 24},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 26},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 28},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 30},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 32},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 34},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 36},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 38},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 40},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 42},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 44},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 46},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 48},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 50},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 52},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 54},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 56},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 58},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 59},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 61},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 63},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 64},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 35, 255},\n\t{0xB6, 0x71, 1, 69},\n\t{0xA1, 0x6E, 1, 255},\n\t{0xA0, 0x6B, 1, 255},\n\t{0x9F, 0x68, 1, 255},\n\t{0x9E, 0x65, 1, 255},\n\t{0x9D, 0x62, 1, 255},\n\t{0x9C, 0x5F, 1, 255},\n\t{0x9B, 0x5C, 1, 255},\n\t{0x9A, 0x59, 1, 255},\n\t{0x99, 0x4E, 1, 255},\n\t{0x98, 0x4B, 1, 255},\n\t{0x97, 0x48, 1, 255},\n\t{0x96, 0x45, 1, 255},\n\t{0x95, 0x42, 1, 255},\n\t{0x94, 0x3F, 1, 255},\n\t{0x93, 0x3C, 1, 255},\n\t{0x92, 0x39, 1, 255},\n\t{0x91, 0x36, 1, 255},\n\t{0x90, 0x33, 1, 255},\n\t{0x8F, 0x30, 1, 255},\n\t{0x8E, 0x2D, 1, 255},\n\t{0x8D, 0x2A, 1, 255},\n\t{0x8C, 0x27, 1, 255},\n\t{0x8B, 0x24, 1, 255},\n\t{0x8A, 0x21, 1, 255},\n\t{0x89, 0x1E, 1, 255},\n\t{0x88, 0x1B, 1, 255},\n\t{0x87, 0x18, 1, 255},\n\t{0x86, 0x15, 1, 255},\n\t{0x85, 0x12, 1, 255},\n\t{0x84, 0xC, 1, 255},\n\t{0x83, 0x9, 1, 255},\n\t{0x82, 0x6, 1, 255},\n\t{0x81, 0x3, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 4},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 6},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 8},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 10},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 12},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 13},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 15},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 17},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 19},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 20},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 22},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 24},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 26},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 28},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 30},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 32},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 34},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 36},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 38},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 40},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 42},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 44},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 46},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 48},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 50},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 3, 255},\n\t{0xBA, 0x3, 1, 53},\n\t{0xB9, 0xBA, 0, 52},\n\t{0xB7, 0x0, 1, 255},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB8, 0xB8, 0, 3},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 54},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 56},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 58},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 60},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 61},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xBA, 0, 63},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 65},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 66},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB7, 0xB8, 0, 67},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB8, 0xB8, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0x0, 1, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xB9, 0xB9, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBA, 0xBA, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 2, 255},\n\t{0xBE, 0xBE, 0, 3},\n\t{0xBD, 0x0, 1, 2},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0xE1, 0x0, 1, 255},\n\t{0x80, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAD, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 255},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAC, 0x0, 1, 255},\n\t{0xB7, 0xB7, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x87, 0x87, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x86, 0x86, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0xA6, 0xA7, 0, 1},\n\t{0xCC, 0x0, 4, 255},\n\t{0x8A, 0x8A, 0, 5},\n\t{0x87, 0x88, 0, 3},\n\t{0x83, 0x83, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x83, 0x83, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xCC, 0x0, 4, 255},\n\t{0xA8, 0xA8, 0, 5},\n\t{0x8B, 0x8B, 0, 4},\n\t{0x88, 0x88, 0, 3},\n\t{0x82, 0x83, 0, 1},\n\t{0x72, 0x72, 0, 1},\n\t{0x72, 0x72, 0, 2},\n\t{0x52, 0x52, 0, 1},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8B, 0x8B, 0, 3},\n\t{0x88, 0x88, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAF, 0x0, 1, 255},\n\t{0x8D, 0x0, 1, 3},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAE, 0x0, 1, 255},\n\t{0xB7, 0x0, 1, 2},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAF, 0x0, 1, 255},\n\t{0x8D, 0x8D, 0, 1},\n\t{0xE0, 0x0, 1, 255},\n\t{0xAF, 0x0, 1, 255},\n\t{0x8D, 0x8D, 0, 1},\n\t{0xE0, 0x0, 2, 255},\n\t{0xB9, 0x1, 1, 255},\n\t{0xB8, 0x0, 1, 255},\n\t{0xB2, 0xB2, 0, 1},\n\t{0x85, 0x85, 0, 2},\n\t{0xCC, 0x0, 2, 255},\n\t{0x84, 0x84, 0, 2},\n\t{0x81, 0x81, 0, 1},\n\t{0xDA, 0x0, 1, 255},\n\t{0xBE, 0xBE, 0, 1},\n\t{0xDA, 0x1, 1, 255},\n\t{0xD9, 0x0, 1, 255},\n\t{0x94, 0x94, 0, 1},\n\t{0xBE, 0xBE, 0, 2},\n\t{0xCC, 0x0, 2, 255},\n\t{0x9B, 0x9B, 0, 2},\n\t{0x82, 0x82, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x9B, 0x9B, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x61, 0x61, 0, 2},\n\t{0x88, 0x0, 1, 255},\n\t{0x61, 0x0, 1, 255},\n\t{0xCC, 0x0, 1, 255},\n\t{0x88, 0x88, 0, 1},\n\t{0xC3, 0x0, 1, 255},\n\t{0xA4, 0xA4, 0, 1},\n\t{0x65, 0x65, 0, 1},\n\t{0x69, 0x69, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x6F, 0x6F, 0, 2},\n\t{0x88, 0x0, 1, 255},\n\t{0x6F, 0x0, 1, 255},\n\t{0xCC, 0x0, 1, 255},\n\t{0x88, 0x88, 0, 1},\n\t{0xC3, 0x0, 1, 255},\n\t{0xB6, 0xB6, 0, 1},\n\t{0x63, 0x0, 1, 255},\n\t{0x68, 0x68, 0, 1},\n\t{0xCC, 0x0, 1, 255},\n\t{0x75, 0x75, 0, 2},\n\t{0x88, 0x0, 1, 255},\n\t{0x75, 0x0, 1, 255},\n\t{0xCC, 0x0, 1, 255},\n\t{0x88, 0x88, 0, 1},\n\t{0xC3, 0x0, 1, 255},\n\t{0xBC, 0xBC, 0, 1},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8C, 0x8C, 0, 4},\n\t{0x84, 0x84, 0, 3},\n\t{0x80, 0x81, 0, 1},\n\t{0xCC, 0x0, 4, 255},\n\t{0x8C, 0x8C, 0, 8},\n\t{0x84, 0x84, 0, 7},\n\t{0x82, 0x0, 1, 255},\n\t{0x80, 0x81, 0, 5},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8C, 0x8C, 0, 4},\n\t{0x84, 0x84, 0, 3},\n\t{0x80, 0x81, 0, 1},\n\t{0xCC, 0x0, 2, 255},\n\t{0x8C, 0x8C, 0, 2},\n\t{0x84, 0x84, 0, 1},\n\t{0xCC, 0x0, 4, 255},\n\t{0x8C, 0x8C, 0, 9},\n\t{0x88, 0x0, 1, 8},\n\t{0x84, 0x84, 0, 7},\n\t{0x80, 0x81, 0, 5},\n\t{0xCC, 0x0, 3, 255},\n\t{0x8C, 0x8C, 0, 4},\n\t{0x84, 0x84, 0, 3},\n\t{0x80, 0x81, 0, 1},\n}\n\n// Total size of mainTable is 1253028 bytes\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/collelem.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage colltab\n\nimport (\n\t\"fmt\"\n\t\"unicode\"\n)\n\n// Level identifies the collation comparison level.\n// The primary level corresponds to the basic sorting of text.\n// The secondary level corresponds to accents and related linguistic elements.\n// The tertiary level corresponds to casing and related concepts.\n// The quaternary level is derived from the other levels by the\n// various algorithms for handling variable elements.\ntype Level int\n\nconst (\n\tPrimary Level = iota\n\tSecondary\n\tTertiary\n\tQuaternary\n\tIdentity\n\n\tNumLevels\n)\n\nconst (\n\tdefaultSecondary = 0x20\n\tdefaultTertiary  = 0x2\n\tmaxTertiary      = 0x1F\n\tMaxQuaternary    = 0x1FFFFF // 21 bits.\n)\n\n// Elem is a representation of a collation element. This API provides ways to encode\n// and decode Elems. Implementations of collation tables may use values greater\n// or equal to PrivateUse for their own purposes.  However, these should never be\n// returned by AppendNext.\ntype Elem uint32\n\nconst (\n\tmaxCE       Elem = 0xAFFFFFFF\n\tPrivateUse       = minContract\n\tminContract      = 0xC0000000\n\tmaxContract      = 0xDFFFFFFF\n\tminExpand        = 0xE0000000\n\tmaxExpand        = 0xEFFFFFFF\n\tminDecomp        = 0xF0000000\n)\n\ntype ceType int\n\nconst (\n\tceNormal           ceType = iota // ceNormal includes implicits (ce == 0)\n\tceContractionIndex               // rune can be a start of a contraction\n\tceExpansionIndex                 // rune expands into a sequence of collation elements\n\tceDecompose                      // rune expands using NFKC decomposition\n)\n\nfunc (ce Elem) ctype() ceType {\n\tif ce <= maxCE {\n\t\treturn ceNormal\n\t}\n\tif ce <= maxContract {\n\t\treturn ceContractionIndex\n\t} else {\n\t\tif ce <= maxExpand {\n\t\t\treturn ceExpansionIndex\n\t\t}\n\t\treturn ceDecompose\n\t}\n\tpanic(\"should not reach here\")\n\treturn ceType(-1)\n}\n\n// For normal collation elements, we assume that a collation element either has\n// a primary or non-default secondary value, not both.\n// Collation elements with a primary value are of the form\n// 01pppppp pppppppp ppppppp0 ssssssss\n//   - p* is primary collation value\n//   - s* is the secondary collation value\n// 00pppppp pppppppp ppppppps sssttttt, where\n//   - p* is primary collation value\n//   - s* offset of secondary from default value.\n//   - t* is the tertiary collation value\n// 100ttttt cccccccc pppppppp pppppppp\n//   - t* is the tertiar collation value\n//   - c* is the canonical combining class\n//   - p* is the primary collation value\n// Collation elements with a secondary value are of the form\n// 1010cccc ccccssss ssssssss tttttttt, where\n//   - c* is the canonical combining class\n//   - s* is the secondary collation value\n//   - t* is the tertiary collation value\n// 11qqqqqq qqqqqqqq qqqqqqq0 00000000\n//   - q* quaternary value\nconst (\n\tceTypeMask              = 0xC0000000\n\tceTypeMaskExt           = 0xE0000000\n\tceIgnoreMask            = 0xF00FFFFF\n\tceType1                 = 0x40000000\n\tceType2                 = 0x00000000\n\tceType3or4              = 0x80000000\n\tceType4                 = 0xA0000000\n\tceTypeQ                 = 0xC0000000\n\tIgnore                  = ceType4\n\tfirstNonPrimary         = 0x80000000\n\tlastSpecialPrimary      = 0xA0000000\n\tsecondaryMask           = 0x80000000\n\thasTertiaryMask         = 0x40000000\n\tprimaryValueMask        = 0x3FFFFE00\n\tmaxPrimaryBits          = 21\n\tcompactPrimaryBits      = 16\n\tmaxSecondaryBits        = 12\n\tmaxTertiaryBits         = 8\n\tmaxCCCBits              = 8\n\tmaxSecondaryCompactBits = 8\n\tmaxSecondaryDiffBits    = 4\n\tmaxTertiaryCompactBits  = 5\n\tprimaryShift            = 9\n\tcompactSecondaryShift   = 5\n\tminCompactSecondary     = defaultSecondary - 4\n)\n\nfunc makeImplicitCE(primary int) Elem {\n\treturn ceType1 | Elem(primary<<primaryShift) | defaultSecondary\n}\n\n// MakeElem returns an Elem for the given values.  It will return an error\n// if the given combination of values is invalid.\nfunc MakeElem(primary, secondary, tertiary int, ccc uint8) (Elem, error) {\n\tif w := primary; w >= 1<<maxPrimaryBits || w < 0 {\n\t\treturn 0, fmt.Errorf(\"makeCE: primary weight out of bounds: %x >= %x\", w, 1<<maxPrimaryBits)\n\t}\n\tif w := secondary; w >= 1<<maxSecondaryBits || w < 0 {\n\t\treturn 0, fmt.Errorf(\"makeCE: secondary weight out of bounds: %x >= %x\", w, 1<<maxSecondaryBits)\n\t}\n\tif w := tertiary; w >= 1<<maxTertiaryBits || w < 0 {\n\t\treturn 0, fmt.Errorf(\"makeCE: tertiary weight out of bounds: %x >= %x\", w, 1<<maxTertiaryBits)\n\t}\n\tce := Elem(0)\n\tif primary != 0 {\n\t\tif ccc != 0 {\n\t\t\tif primary >= 1<<compactPrimaryBits {\n\t\t\t\treturn 0, fmt.Errorf(\"makeCE: primary weight with non-zero CCC out of bounds: %x >= %x\", primary, 1<<compactPrimaryBits)\n\t\t\t}\n\t\t\tif secondary != defaultSecondary {\n\t\t\t\treturn 0, fmt.Errorf(\"makeCE: cannot combine non-default secondary value (%x) with non-zero CCC (%x)\", secondary, ccc)\n\t\t\t}\n\t\t\tce = Elem(tertiary << (compactPrimaryBits + maxCCCBits))\n\t\t\tce |= Elem(ccc) << compactPrimaryBits\n\t\t\tce |= Elem(primary)\n\t\t\tce |= ceType3or4\n\t\t} else if tertiary == defaultTertiary {\n\t\t\tif secondary >= 1<<maxSecondaryCompactBits {\n\t\t\t\treturn 0, fmt.Errorf(\"makeCE: secondary weight with non-zero primary out of bounds: %x >= %x\", secondary, 1<<maxSecondaryCompactBits)\n\t\t\t}\n\t\t\tce = Elem(primary<<(maxSecondaryCompactBits+1) + secondary)\n\t\t\tce |= ceType1\n\t\t} else {\n\t\t\td := secondary - defaultSecondary + maxSecondaryDiffBits\n\t\t\tif d >= 1<<maxSecondaryDiffBits || d < 0 {\n\t\t\t\treturn 0, fmt.Errorf(\"makeCE: secondary weight diff out of bounds: %x < 0 || %x > %x\", d, d, 1<<maxSecondaryDiffBits)\n\t\t\t}\n\t\t\tif tertiary >= 1<<maxTertiaryCompactBits {\n\t\t\t\treturn 0, fmt.Errorf(\"makeCE: tertiary weight with non-zero primary out of bounds: %x > %x\", tertiary, 1<<maxTertiaryCompactBits)\n\t\t\t}\n\t\t\tce = Elem(primary<<maxSecondaryDiffBits + d)\n\t\t\tce = ce<<maxTertiaryCompactBits + Elem(tertiary)\n\t\t}\n\t} else {\n\t\tce = Elem(secondary<<maxTertiaryBits + tertiary)\n\t\tce += Elem(ccc) << (maxSecondaryBits + maxTertiaryBits)\n\t\tce |= ceType4\n\t}\n\treturn ce, nil\n}\n\n// MakeQuaternary returns an Elem with the given quaternary value.\nfunc MakeQuaternary(v int) Elem {\n\treturn ceTypeQ | Elem(v<<primaryShift)\n}\n\n// Mask sets weights for any level smaller than l to 0.\n// The resulting Elem can be used to test for equality with\n// other Elems to which the same mask has been applied.\nfunc (ce Elem) Mask(l Level) uint32 {\n\treturn 0\n}\n\n// CCC returns the canonical combining class associated with the underlying character,\n// if applicable, or 0 otherwise.\nfunc (ce Elem) CCC() uint8 {\n\tif ce&ceType3or4 != 0 {\n\t\tif ce&ceType4 == ceType3or4 {\n\t\t\treturn uint8(ce >> 16)\n\t\t}\n\t\treturn uint8(ce >> 20)\n\t}\n\treturn 0\n}\n\n// Primary returns the primary collation weight for ce.\nfunc (ce Elem) Primary() int {\n\tif ce >= firstNonPrimary {\n\t\tif ce > lastSpecialPrimary {\n\t\t\treturn 0\n\t\t}\n\t\treturn int(uint16(ce))\n\t}\n\treturn int(ce&primaryValueMask) >> primaryShift\n}\n\n// Secondary returns the secondary collation weight for ce.\nfunc (ce Elem) Secondary() int {\n\tswitch ce & ceTypeMask {\n\tcase ceType1:\n\t\treturn int(uint8(ce))\n\tcase ceType2:\n\t\treturn minCompactSecondary + int((ce>>compactSecondaryShift)&0xF)\n\tcase ceType3or4:\n\t\tif ce < ceType4 {\n\t\t\treturn defaultSecondary\n\t\t}\n\t\treturn int(ce>>8) & 0xFFF\n\tcase ceTypeQ:\n\t\treturn 0\n\t}\n\tpanic(\"should not reach here\")\n}\n\n// Tertiary returns the tertiary collation weight for ce.\nfunc (ce Elem) Tertiary() uint8 {\n\tif ce&hasTertiaryMask == 0 {\n\t\tif ce&ceType3or4 == 0 {\n\t\t\treturn uint8(ce & 0x1F)\n\t\t}\n\t\tif ce&ceType4 == ceType4 {\n\t\t\treturn uint8(ce)\n\t\t}\n\t\treturn uint8(ce>>24) & 0x1F // type 2\n\t} else if ce&ceTypeMask == ceType1 {\n\t\treturn defaultTertiary\n\t}\n\t// ce is a quaternary value.\n\treturn 0\n}\n\nfunc (ce Elem) updateTertiary(t uint8) Elem {\n\tif ce&ceTypeMask == ceType1 {\n\t\t// convert to type 4\n\t\tnce := ce & primaryValueMask\n\t\tnce |= Elem(uint8(ce)-minCompactSecondary) << compactSecondaryShift\n\t\tce = nce\n\t} else if ce&ceTypeMaskExt == ceType3or4 {\n\t\tce &= ^Elem(maxTertiary << 24)\n\t\treturn ce | (Elem(t) << 24)\n\t} else {\n\t\t// type 2 or 4\n\t\tce &= ^Elem(maxTertiary)\n\t}\n\treturn ce | Elem(t)\n}\n\n// Quaternary returns the quaternary value if explicitly specified,\n// 0 if ce == Ignore, or MaxQuaternary otherwise.\n// Quaternary values are used only for shifted variants.\nfunc (ce Elem) Quaternary() int {\n\tif ce&ceTypeMask == ceTypeQ {\n\t\treturn int(ce&primaryValueMask) >> primaryShift\n\t} else if ce&ceIgnoreMask == Ignore {\n\t\treturn 0\n\t}\n\treturn MaxQuaternary\n}\n\n// Weight returns the collation weight for the given level.\nfunc (ce Elem) Weight(l Level) int {\n\tswitch l {\n\tcase Primary:\n\t\treturn ce.Primary()\n\tcase Secondary:\n\t\treturn ce.Secondary()\n\tcase Tertiary:\n\t\treturn int(ce.Tertiary())\n\tcase Quaternary:\n\t\treturn ce.Quaternary()\n\t}\n\treturn 0 // return 0 (ignore) for undefined levels.\n}\n\n// For contractions, collation elements are of the form\n// 110bbbbb bbbbbbbb iiiiiiii iiiinnnn, where\n//   - n* is the size of the first node in the contraction trie.\n//   - i* is the index of the first node in the contraction trie.\n//   - b* is the offset into the contraction collation element table.\n// See contract.go for details on the contraction trie.\nconst (\n\tmaxNBits              = 4\n\tmaxTrieIndexBits      = 12\n\tmaxContractOffsetBits = 13\n)\n\nfunc splitContractIndex(ce Elem) (index, n, offset int) {\n\tn = int(ce & (1<<maxNBits - 1))\n\tce >>= maxNBits\n\tindex = int(ce & (1<<maxTrieIndexBits - 1))\n\tce >>= maxTrieIndexBits\n\toffset = int(ce & (1<<maxContractOffsetBits - 1))\n\treturn\n}\n\n// For expansions, Elems are of the form 11100000 00000000 bbbbbbbb bbbbbbbb,\n// where b* is the index into the expansion sequence table.\nconst maxExpandIndexBits = 16\n\nfunc splitExpandIndex(ce Elem) (index int) {\n\treturn int(uint16(ce))\n}\n\n// Some runes can be expanded using NFKD decomposition. Instead of storing the full\n// sequence of collation elements, we decompose the rune and lookup the collation\n// elements for each rune in the decomposition and modify the tertiary weights.\n// The Elem, in this case, is of the form 11110000 00000000 wwwwwwww vvvvvvvv, where\n//   - v* is the replacement tertiary weight for the first rune,\n//   - w* is the replacement tertiary weight for the second rune,\n// Tertiary weights of subsequent runes should be replaced with maxTertiary.\n// See http://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.\nfunc splitDecompose(ce Elem) (t1, t2 uint8) {\n\treturn uint8(ce), uint8(ce >> 8)\n}\n\nconst (\n\t// These constants were taken from http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.\n\tminUnified       rune = 0x4E00\n\tmaxUnified            = 0x9FFF\n\tminCompatibility      = 0xF900\n\tmaxCompatibility      = 0xFAFF\n\tminRare               = 0x3400\n\tmaxRare               = 0x4DBF\n)\nconst (\n\tcommonUnifiedOffset = 0x10000\n\trareUnifiedOffset   = 0x20000 // largest rune in common is U+FAFF\n\totherOffset         = 0x50000 // largest rune in rare is U+2FA1D\n\tillegalOffset       = otherOffset + int(unicode.MaxRune)\n\tmaxPrimary          = illegalOffset + 1\n)\n\n// implicitPrimary returns the primary weight for the a rune\n// for which there is no entry for the rune in the collation table.\n// We take a different approach from the one specified in\n// http://unicode.org/reports/tr10/#Implicit_Weights,\n// but preserve the resulting relative ordering of the runes.\nfunc implicitPrimary(r rune) int {\n\tif unicode.Is(unicode.Ideographic, r) {\n\t\tif r >= minUnified && r <= maxUnified {\n\t\t\t// The most common case for CJK.\n\t\t\treturn int(r) + commonUnifiedOffset\n\t\t}\n\t\tif r >= minCompatibility && r <= maxCompatibility {\n\t\t\t// This will typically not hit. The DUCET explicitly specifies mappings\n\t\t\t// for all characters that do not decompose.\n\t\t\treturn int(r) + commonUnifiedOffset\n\t\t}\n\t\treturn int(r) + rareUnifiedOffset\n\t}\n\treturn int(r) + otherOffset\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/colltab.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package colltab contains functionality related to collation tables.\n// It is only to be used by the collate and search packages.\npackage colltab // import \"golang.org/x/text/internal/colltab\"\n\nimport (\n\t\"sort\"\n\n\t\"golang.org/x/text/language\"\n)\n\n// MatchLang finds the index of t in tags, using a matching algorithm used for\n// collation and search. tags[0] must be language.Und, the remaining tags should\n// be sorted alphabetically.\n//\n// Language matching for collation and search is different from the matching\n// defined by language.Matcher: the (inferred) base language must be an exact\n// match for the relevant fields. For example, \"gsw\" should not match \"de\".\n// Also the parent relation is different, as a parent may have a different\n// script. So usually the parent of zh-Hant is und, whereas for MatchLang it is\n// zh.\nfunc MatchLang(t language.Tag, tags []language.Tag) int {\n\t// Canonicalize the values, including collapsing macro languages.\n\tt, _ = language.All.Canonicalize(t)\n\n\tbase, conf := t.Base()\n\t// Estimate the base language, but only use high-confidence values.\n\tif conf < language.High {\n\t\t// The root locale supports \"search\" and \"standard\". We assume that any\n\t\t// implementation will only use one of both.\n\t\treturn 0\n\t}\n\n\t// Maximize base and script and normalize the tag.\n\tif _, s, r := t.Raw(); (r != language.Region{}) {\n\t\tp, _ := language.Raw.Compose(base, s, r)\n\t\t// Taking the parent forces the script to be maximized.\n\t\tp = p.Parent()\n\t\t// Add back region and extensions.\n\t\tt, _ = language.Raw.Compose(p, r, t.Extensions())\n\t} else {\n\t\t// Set the maximized base language.\n\t\tt, _ = language.Raw.Compose(base, s, t.Extensions())\n\t}\n\n\t// Find start index of the language tag.\n\tstart := 1 + sort.Search(len(tags)-1, func(i int) bool {\n\t\tb, _, _ := tags[i+1].Raw()\n\t\treturn base.String() <= b.String()\n\t})\n\tif start < len(tags) {\n\t\tif b, _, _ := tags[start].Raw(); b != base {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\t// Besides the base language, script and region, only the collation type and\n\t// the custom variant defined in the 'u' extension are used to distinguish a\n\t// locale.\n\t// Strip all variants and extensions and add back the custom variant.\n\ttdef, _ := language.Raw.Compose(t.Raw())\n\ttdef, _ = tdef.SetTypeForKey(\"va\", t.TypeForKey(\"va\"))\n\n\t// First search for a specialized collation type, if present.\n\ttry := []language.Tag{tdef}\n\tif co := t.TypeForKey(\"co\"); co != \"\" {\n\t\ttco, _ := tdef.SetTypeForKey(\"co\", co)\n\t\ttry = []language.Tag{tco, tdef}\n\t}\n\n\tfor _, tx := range try {\n\t\tfor ; tx != language.Und; tx = parent(tx) {\n\t\t\tfor i, t := range tags[start:] {\n\t\t\t\tif b, _, _ := t.Raw(); b != base {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif tx == t {\n\t\t\t\t\treturn start + i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn 0\n}\n\n// parent computes the structural parent. This means inheritance may change\n// script. So, unlike the CLDR parent, parent(zh-Hant) == zh.\nfunc parent(t language.Tag) language.Tag {\n\tif t.TypeForKey(\"va\") != \"\" {\n\t\tt, _ = t.SetTypeForKey(\"va\", \"\")\n\t\treturn t\n\t}\n\tresult := language.Und\n\tif b, s, r := t.Raw(); (r != language.Region{}) {\n\t\tresult, _ = language.Raw.Compose(b, s, t.Extensions())\n\t} else if (s != language.Script{}) {\n\t\tresult, _ = language.Raw.Compose(b, t.Extensions())\n\t} else if (b != language.Base{}) {\n\t\tresult, _ = language.Raw.Compose(t.Extensions())\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/contract.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage colltab\n\nimport \"unicode/utf8\"\n\n// For a description of ContractTrieSet, see text/collate/build/contract.go.\n\ntype ContractTrieSet []struct{ L, H, N, I uint8 }\n\n// ctScanner is used to match a trie to an input sequence.\n// A contraction may match a non-contiguous sequence of bytes in an input string.\n// For example, if there is a contraction for <a, combining_ring>, it should match\n// the sequence <a, combining_cedilla, combining_ring>, as combining_cedilla does\n// not block combining_ring.\n// ctScanner does not automatically skip over non-blocking non-starters, but rather\n// retains the state of the last match and leaves it up to the user to continue\n// the match at the appropriate points.\ntype ctScanner struct {\n\tstates ContractTrieSet\n\ts      []byte\n\tn      int\n\tindex  int\n\tpindex int\n\tdone   bool\n}\n\ntype ctScannerString struct {\n\tstates ContractTrieSet\n\ts      string\n\tn      int\n\tindex  int\n\tpindex int\n\tdone   bool\n}\n\nfunc (t ContractTrieSet) scanner(index, n int, b []byte) ctScanner {\n\treturn ctScanner{s: b, states: t[index:], n: n}\n}\n\nfunc (t ContractTrieSet) scannerString(index, n int, str string) ctScannerString {\n\treturn ctScannerString{s: str, states: t[index:], n: n}\n}\n\n// result returns the offset i and bytes consumed p so far.  If no suffix\n// matched, i and p will be 0.\nfunc (s *ctScanner) result() (i, p int) {\n\treturn s.index, s.pindex\n}\n\nfunc (s *ctScannerString) result() (i, p int) {\n\treturn s.index, s.pindex\n}\n\nconst (\n\tfinal   = 0\n\tnoIndex = 0xFF\n)\n\n// scan matches the longest suffix at the current location in the input\n// and returns the number of bytes consumed.\nfunc (s *ctScanner) scan(p int) int {\n\tpr := p // the p at the rune start\n\tstr := s.s\n\tstates, n := s.states, s.n\n\tfor i := 0; i < n && p < len(str); {\n\t\te := states[i]\n\t\tc := str[p]\n\t\t// TODO: a significant number of contractions are of a form that\n\t\t// cannot match discontiguous UTF-8 in a normalized string. We could let\n\t\t// a negative value of e.n mean that we can set s.done = true and avoid\n\t\t// the need for additional matches.\n\t\tif c >= e.L {\n\t\t\tif e.L == c {\n\t\t\t\tp++\n\t\t\t\tif e.I != noIndex {\n\t\t\t\t\ts.index = int(e.I)\n\t\t\t\t\ts.pindex = p\n\t\t\t\t}\n\t\t\t\tif e.N != final {\n\t\t\t\t\ti, states, n = 0, states[int(e.H)+n:], int(e.N)\n\t\t\t\t\tif p >= len(str) || utf8.RuneStart(str[p]) {\n\t\t\t\t\t\ts.states, s.n, pr = states, n, p\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ts.done = true\n\t\t\t\t\treturn p\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else if e.N == final && c <= e.H {\n\t\t\t\tp++\n\t\t\t\ts.done = true\n\t\t\t\ts.index = int(c-e.L) + int(e.I)\n\t\t\t\ts.pindex = p\n\t\t\t\treturn p\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\treturn pr\n}\n\n// scan is a verbatim copy of ctScanner.scan.\nfunc (s *ctScannerString) scan(p int) int {\n\tpr := p // the p at the rune start\n\tstr := s.s\n\tstates, n := s.states, s.n\n\tfor i := 0; i < n && p < len(str); {\n\t\te := states[i]\n\t\tc := str[p]\n\t\t// TODO: a significant number of contractions are of a form that\n\t\t// cannot match discontiguous UTF-8 in a normalized string. We could let\n\t\t// a negative value of e.n mean that we can set s.done = true and avoid\n\t\t// the need for additional matches.\n\t\tif c >= e.L {\n\t\t\tif e.L == c {\n\t\t\t\tp++\n\t\t\t\tif e.I != noIndex {\n\t\t\t\t\ts.index = int(e.I)\n\t\t\t\t\ts.pindex = p\n\t\t\t\t}\n\t\t\t\tif e.N != final {\n\t\t\t\t\ti, states, n = 0, states[int(e.H)+n:], int(e.N)\n\t\t\t\t\tif p >= len(str) || utf8.RuneStart(str[p]) {\n\t\t\t\t\t\ts.states, s.n, pr = states, n, p\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ts.done = true\n\t\t\t\t\treturn p\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else if e.N == final && c <= e.H {\n\t\t\t\tp++\n\t\t\t\ts.done = true\n\t\t\t\ts.index = int(c-e.L) + int(e.I)\n\t\t\t\ts.pindex = p\n\t\t\t\treturn p\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\treturn pr\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/iter.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage colltab\n\n// An Iter incrementally converts chunks of the input text to collation\n// elements, while ensuring that the collation elements are in normalized order\n// (that is, they are in the order as if the input text were normalized first).\ntype Iter struct {\n\tWeighter Weighter\n\tElems    []Elem\n\t// N is the number of elements in Elems that will not be reordered on\n\t// subsequent iterations, N <= len(Elems).\n\tN int\n\n\tbytes []byte\n\tstr   string\n\t// Because the Elems buffer may contain collation elements that are needed\n\t// for look-ahead, we need two positions in the text (bytes or str): one for\n\t// the end position in the text for the current iteration and one for the\n\t// start of the next call to appendNext.\n\tpEnd  int // end position in text corresponding to N.\n\tpNext int // pEnd <= pNext.\n}\n\n// Reset sets the position in the current input text to p and discards any\n// results obtained so far.\nfunc (i *Iter) Reset(p int) {\n\ti.Elems = i.Elems[:0]\n\ti.N = 0\n\ti.pEnd = p\n\ti.pNext = p\n}\n\n// Len returns the length of the input text.\nfunc (i *Iter) Len() int {\n\tif i.bytes != nil {\n\t\treturn len(i.bytes)\n\t}\n\treturn len(i.str)\n}\n\n// Discard removes the collation elements up to N.\nfunc (i *Iter) Discard() {\n\t// TODO: change this such that only modifiers following starters will have\n\t// to be copied.\n\ti.Elems = i.Elems[:copy(i.Elems, i.Elems[i.N:])]\n\ti.N = 0\n}\n\n// End returns the end position of the input text for which Next has returned\n// results.\nfunc (i *Iter) End() int {\n\treturn i.pEnd\n}\n\n// SetInput resets i to input s.\nfunc (i *Iter) SetInput(s []byte) {\n\ti.bytes = s\n\ti.str = \"\"\n\ti.Reset(0)\n}\n\n// SetInputString resets i to input s.\nfunc (i *Iter) SetInputString(s string) {\n\ti.str = s\n\ti.bytes = nil\n\ti.Reset(0)\n}\n\nfunc (i *Iter) done() bool {\n\treturn i.pNext >= len(i.str) && i.pNext >= len(i.bytes)\n}\n\nfunc (i *Iter) appendNext() bool {\n\tif i.done() {\n\t\treturn false\n\t}\n\tvar sz int\n\tif i.bytes == nil {\n\t\ti.Elems, sz = i.Weighter.AppendNextString(i.Elems, i.str[i.pNext:])\n\t} else {\n\t\ti.Elems, sz = i.Weighter.AppendNext(i.Elems, i.bytes[i.pNext:])\n\t}\n\tif sz == 0 {\n\t\tsz = 1\n\t}\n\ti.pNext += sz\n\treturn true\n}\n\n// Next appends Elems to the internal array. On each iteration, it will either\n// add starters or modifiers. In the majority of cases, an Elem with a primary\n// value > 0 will have a CCC of 0. The CCC values of collation elements are also\n// used to detect if the input string was not normalized and to adjust the\n// result accordingly.\nfunc (i *Iter) Next() bool {\n\tif i.N == len(i.Elems) && !i.appendNext() {\n\t\treturn false\n\t}\n\n\t// Check if the current segment starts with a starter.\n\tprevCCC := i.Elems[len(i.Elems)-1].CCC()\n\tif prevCCC == 0 {\n\t\ti.N = len(i.Elems)\n\t\ti.pEnd = i.pNext\n\t\treturn true\n\t} else if i.Elems[i.N].CCC() == 0 {\n\t\t// set i.N to only cover part of i.Elems for which prevCCC == 0 and\n\t\t// use rest for the next call to next.\n\t\tfor i.N++; i.N < len(i.Elems) && i.Elems[i.N].CCC() == 0; i.N++ {\n\t\t}\n\t\ti.pEnd = i.pNext\n\t\treturn true\n\t}\n\n\t// The current (partial) segment starts with modifiers. We need to collect\n\t// all successive modifiers to ensure that they are normalized.\n\tfor {\n\t\tp := len(i.Elems)\n\t\ti.pEnd = i.pNext\n\t\tif !i.appendNext() {\n\t\t\tbreak\n\t\t}\n\n\t\tif ccc := i.Elems[p].CCC(); ccc == 0 || len(i.Elems)-i.N > maxCombiningCharacters {\n\t\t\t// Leave the starter for the next iteration. This ensures that we\n\t\t\t// do not return sequences of collation elements that cross two\n\t\t\t// segments.\n\t\t\t//\n\t\t\t// TODO: handle large number of combining characters by fully\n\t\t\t// normalizing the input segment before iteration. This ensures\n\t\t\t// results are consistent across the text repo.\n\t\t\ti.N = p\n\t\t\treturn true\n\t\t} else if ccc < prevCCC {\n\t\t\ti.doNorm(p, ccc) // should be rare, never occurs for NFD and FCC.\n\t\t} else {\n\t\t\tprevCCC = ccc\n\t\t}\n\t}\n\n\tdone := len(i.Elems) != i.N\n\ti.N = len(i.Elems)\n\treturn done\n}\n\n// nextNoNorm is the same as next, but does not \"normalize\" the collation\n// elements.\nfunc (i *Iter) nextNoNorm() bool {\n\t// TODO: remove this function. Using this instead of next does not seem\n\t// to improve performance in any significant way. We retain this until\n\t// later for evaluation purposes.\n\tif i.done() {\n\t\treturn false\n\t}\n\ti.appendNext()\n\ti.N = len(i.Elems)\n\treturn true\n}\n\nconst maxCombiningCharacters = 30\n\n// doNorm reorders the collation elements in i.Elems.\n// It assumes that blocks of collation elements added with appendNext\n// either start and end with the same CCC or start with CCC == 0.\n// This allows for a single insertion point for the entire block.\n// The correctness of this assumption is verified in builder.go.\nfunc (i *Iter) doNorm(p int, ccc uint8) {\n\tn := len(i.Elems)\n\tk := p\n\tfor p--; p > i.N && ccc < i.Elems[p-1].CCC(); p-- {\n\t}\n\ti.Elems = append(i.Elems, i.Elems[p:k]...)\n\tcopy(i.Elems[p:], i.Elems[k:])\n\ti.Elems = i.Elems[:n]\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/numeric.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage colltab\n\nimport (\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n// NewNumericWeighter wraps w to replace individual digits to sort based on their\n// numeric value.\n//\n// Weighter w must have a free primary weight after the primary weight for 9.\n// If this is not the case, numeric value will sort at the same primary level\n// as the first primary sorting after 9.\nfunc NewNumericWeighter(w Weighter) Weighter {\n\tgetElem := func(s string) Elem {\n\t\telems, _ := w.AppendNextString(nil, s)\n\t\treturn elems[0]\n\t}\n\tnine := getElem(\"9\")\n\n\t// Numbers should order before zero, but the DUCET has no room for this.\n\t// TODO: move before zero once we use fractional collation elements.\n\tns, _ := MakeElem(nine.Primary()+1, nine.Secondary(), int(nine.Tertiary()), 0)\n\n\treturn &numericWeighter{\n\t\tWeighter: w,\n\n\t\t// We assume that w sorts digits of different kinds in order of numeric\n\t\t// value and that the tertiary weight order is preserved.\n\t\t//\n\t\t// TODO: evaluate whether it is worth basing the ranges on the Elem\n\t\t// encoding itself once the move to fractional weights is complete.\n\t\tzero:          getElem(\"0\"),\n\t\tzeroSpecialLo: getElem(\"０\"), // U+FF10 FULLWIDTH DIGIT ZERO\n\t\tzeroSpecialHi: getElem(\"₀\"), // U+2080 SUBSCRIPT ZERO\n\t\tnine:          nine,\n\t\tnineSpecialHi: getElem(\"₉\"), // U+2089 SUBSCRIPT NINE\n\t\tnumberStart:   ns,\n\t}\n}\n\n// A numericWeighter translates a stream of digits into a stream of weights\n// representing the numeric value.\ntype numericWeighter struct {\n\tWeighter\n\n\t// The Elems below all demarcate boundaries of specific ranges. With the\n\t// current element encoding digits are in two ranges: normal (default\n\t// tertiary value) and special. For most languages, digits have collation\n\t// elements in the normal range.\n\t//\n\t// Note: the range tests are very specific for the element encoding used by\n\t// this implementation. The tests in collate_test.go are designed to fail\n\t// if this code is not updated when an encoding has changed.\n\n\tzero          Elem // normal digit zero\n\tzeroSpecialLo Elem // special digit zero, low tertiary value\n\tzeroSpecialHi Elem // special digit zero, high tertiary value\n\tnine          Elem // normal digit nine\n\tnineSpecialHi Elem // special digit nine\n\tnumberStart   Elem\n}\n\n// AppendNext calls the namesake of the underlying weigher, but replaces single\n// digits with weights representing their value.\nfunc (nw *numericWeighter) AppendNext(buf []Elem, s []byte) (ce []Elem, n int) {\n\tce, n = nw.Weighter.AppendNext(buf, s)\n\tnc := numberConverter{\n\t\telems: buf,\n\t\tw:     nw,\n\t\tb:     s,\n\t}\n\tisZero, ok := nc.checkNextDigit(ce)\n\tif !ok {\n\t\treturn ce, n\n\t}\n\t// ce might have been grown already, so take it instead of buf.\n\tnc.init(ce, len(buf), isZero)\n\tfor n < len(s) {\n\t\tce, sz := nw.Weighter.AppendNext(nc.elems, s[n:])\n\t\tnc.b = s\n\t\tn += sz\n\t\tif !nc.update(ce) {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nc.result(), n\n}\n\n// AppendNextString calls the namesake of the underlying weigher, but replaces\n// single digits with weights representing their value.\nfunc (nw *numericWeighter) AppendNextString(buf []Elem, s string) (ce []Elem, n int) {\n\tce, n = nw.Weighter.AppendNextString(buf, s)\n\tnc := numberConverter{\n\t\telems: buf,\n\t\tw:     nw,\n\t\ts:     s,\n\t}\n\tisZero, ok := nc.checkNextDigit(ce)\n\tif !ok {\n\t\treturn ce, n\n\t}\n\tnc.init(ce, len(buf), isZero)\n\tfor n < len(s) {\n\t\tce, sz := nw.Weighter.AppendNextString(nc.elems, s[n:])\n\t\tnc.s = s\n\t\tn += sz\n\t\tif !nc.update(ce) {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nc.result(), n\n}\n\ntype numberConverter struct {\n\tw *numericWeighter\n\n\telems    []Elem\n\tnDigits  int\n\tlenIndex int\n\n\ts string // set if the input was of type string\n\tb []byte // set if the input was of type []byte\n}\n\n// init completes initialization of a numberConverter and prepares it for adding\n// more digits. elems is assumed to have a digit starting at oldLen.\nfunc (nc *numberConverter) init(elems []Elem, oldLen int, isZero bool) {\n\t// Insert a marker indicating the start of a number and and a placeholder\n\t// for the number of digits.\n\tif isZero {\n\t\telems = append(elems[:oldLen], nc.w.numberStart, 0)\n\t} else {\n\t\telems = append(elems, 0, 0)\n\t\tcopy(elems[oldLen+2:], elems[oldLen:])\n\t\telems[oldLen] = nc.w.numberStart\n\t\telems[oldLen+1] = 0\n\n\t\tnc.nDigits = 1\n\t}\n\tnc.elems = elems\n\tnc.lenIndex = oldLen + 1\n}\n\n// checkNextDigit reports whether bufNew adds a single digit relative to the old\n// buffer. If it does, it also reports whether this digit is zero.\nfunc (nc *numberConverter) checkNextDigit(bufNew []Elem) (isZero, ok bool) {\n\tif len(nc.elems) >= len(bufNew) {\n\t\treturn false, false\n\t}\n\te := bufNew[len(nc.elems)]\n\tif e < nc.w.zeroSpecialLo || nc.w.nine < e {\n\t\t// Not a number.\n\t\treturn false, false\n\t}\n\tif e < nc.w.zero {\n\t\tif e > nc.w.nineSpecialHi {\n\t\t\t// Not a number.\n\t\t\treturn false, false\n\t\t}\n\t\tif !nc.isDigit() {\n\t\t\treturn false, false\n\t\t}\n\t\tisZero = e <= nc.w.zeroSpecialHi\n\t} else {\n\t\t// This is the common case if we encounter a digit.\n\t\tisZero = e == nc.w.zero\n\t}\n\t// Test the remaining added collation elements have a zero primary value.\n\tif n := len(bufNew) - len(nc.elems); n > 1 {\n\t\tfor i := len(nc.elems) + 1; i < len(bufNew); i++ {\n\t\t\tif bufNew[i].Primary() != 0 {\n\t\t\t\treturn false, false\n\t\t\t}\n\t\t}\n\t\t// In some rare cases, collation elements will encode runes in\n\t\t// unicode.No as a digit. For example Ethiopic digits (U+1369 - U+1371)\n\t\t// are not in Nd. Also some digits that clearly belong in unicode.No,\n\t\t// like U+0C78 TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR, have\n\t\t// collation elements indistinguishable from normal digits.\n\t\t// Unfortunately, this means we need to make this check for nearly all\n\t\t// non-Latin digits.\n\t\t//\n\t\t// TODO: check the performance impact and find something better if it is\n\t\t// an issue.\n\t\tif !nc.isDigit() {\n\t\t\treturn false, false\n\t\t}\n\t}\n\treturn isZero, true\n}\n\nfunc (nc *numberConverter) isDigit() bool {\n\tif nc.b != nil {\n\t\tr, _ := utf8.DecodeRune(nc.b)\n\t\treturn unicode.In(r, unicode.Nd)\n\t}\n\tr, _ := utf8.DecodeRuneInString(nc.s)\n\treturn unicode.In(r, unicode.Nd)\n}\n\n// We currently support a maximum of about 2M digits (the number of primary\n// values). Such numbers will compare correctly against small numbers, but their\n// comparison against other large numbers is undefined.\n//\n// TODO: define a proper fallback, such as comparing large numbers textually or\n// actually allowing numbers of unlimited length.\n//\n// TODO: cap this to a lower number (like 100) and maybe allow a larger number\n// in an option?\nconst maxDigits = 1<<maxPrimaryBits - 1\n\nfunc (nc *numberConverter) update(elems []Elem) bool {\n\tisZero, ok := nc.checkNextDigit(elems)\n\tif nc.nDigits == 0 && isZero {\n\t\treturn true\n\t}\n\tnc.elems = elems\n\tif !ok {\n\t\treturn false\n\t}\n\tnc.nDigits++\n\treturn nc.nDigits < maxDigits\n}\n\n// result fills in the length element for the digit sequence and returns the\n// completed collation elements.\nfunc (nc *numberConverter) result() []Elem {\n\te, _ := MakeElem(nc.nDigits, defaultSecondary, defaultTertiary, 0)\n\tnc.elems[nc.lenIndex] = e\n\treturn nc.elems\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/table.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage colltab\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// Table holds all collation data for a given collation ordering.\ntype Table struct {\n\tIndex Trie // main trie\n\n\t// expansion info\n\tExpandElem []uint32\n\n\t// contraction info\n\tContractTries  ContractTrieSet\n\tContractElem   []uint32\n\tMaxContractLen int\n\tVariableTop    uint32\n}\n\nfunc (t *Table) AppendNext(w []Elem, b []byte) (res []Elem, n int) {\n\treturn t.appendNext(w, source{bytes: b})\n}\n\nfunc (t *Table) AppendNextString(w []Elem, s string) (res []Elem, n int) {\n\treturn t.appendNext(w, source{str: s})\n}\n\nfunc (t *Table) Start(p int, b []byte) int {\n\t// TODO: implement\n\tpanic(\"not implemented\")\n}\n\nfunc (t *Table) StartString(p int, s string) int {\n\t// TODO: implement\n\tpanic(\"not implemented\")\n}\n\nfunc (t *Table) Domain() []string {\n\t// TODO: implement\n\tpanic(\"not implemented\")\n}\n\nfunc (t *Table) Top() uint32 {\n\treturn t.VariableTop\n}\n\ntype source struct {\n\tstr   string\n\tbytes []byte\n}\n\nfunc (src *source) lookup(t *Table) (ce Elem, sz int) {\n\tif src.bytes == nil {\n\t\treturn t.Index.lookupString(src.str)\n\t}\n\treturn t.Index.lookup(src.bytes)\n}\n\nfunc (src *source) tail(sz int) {\n\tif src.bytes == nil {\n\t\tsrc.str = src.str[sz:]\n\t} else {\n\t\tsrc.bytes = src.bytes[sz:]\n\t}\n}\n\nfunc (src *source) nfd(buf []byte, end int) []byte {\n\tif src.bytes == nil {\n\t\treturn norm.NFD.AppendString(buf[:0], src.str[:end])\n\t}\n\treturn norm.NFD.Append(buf[:0], src.bytes[:end]...)\n}\n\nfunc (src *source) rune() (r rune, sz int) {\n\tif src.bytes == nil {\n\t\treturn utf8.DecodeRuneInString(src.str)\n\t}\n\treturn utf8.DecodeRune(src.bytes)\n}\n\nfunc (src *source) properties(f norm.Form) norm.Properties {\n\tif src.bytes == nil {\n\t\treturn f.PropertiesString(src.str)\n\t}\n\treturn f.Properties(src.bytes)\n}\n\n// appendNext appends the weights corresponding to the next rune or\n// contraction in s.  If a contraction is matched to a discontinuous\n// sequence of runes, the weights for the interstitial runes are\n// appended as well.  It returns a new slice that includes the appended\n// weights and the number of bytes consumed from s.\nfunc (t *Table) appendNext(w []Elem, src source) (res []Elem, n int) {\n\tce, sz := src.lookup(t)\n\ttp := ce.ctype()\n\tif tp == ceNormal {\n\t\tif ce == 0 {\n\t\t\tr, _ := src.rune()\n\t\t\tconst (\n\t\t\t\thangulSize  = 3\n\t\t\t\tfirstHangul = 0xAC00\n\t\t\t\tlastHangul  = 0xD7A3\n\t\t\t)\n\t\t\tif r >= firstHangul && r <= lastHangul {\n\t\t\t\t// TODO: performance can be considerably improved here.\n\t\t\t\tn = sz\n\t\t\t\tvar buf [16]byte // Used for decomposing Hangul.\n\t\t\t\tfor b := src.nfd(buf[:0], hangulSize); len(b) > 0; b = b[sz:] {\n\t\t\t\t\tce, sz = t.Index.lookup(b)\n\t\t\t\t\tw = append(w, ce)\n\t\t\t\t}\n\t\t\t\treturn w, n\n\t\t\t}\n\t\t\tce = makeImplicitCE(implicitPrimary(r))\n\t\t}\n\t\tw = append(w, ce)\n\t} else if tp == ceExpansionIndex {\n\t\tw = t.appendExpansion(w, ce)\n\t} else if tp == ceContractionIndex {\n\t\tn := 0\n\t\tsrc.tail(sz)\n\t\tif src.bytes == nil {\n\t\t\tw, n = t.matchContractionString(w, ce, src.str)\n\t\t} else {\n\t\t\tw, n = t.matchContraction(w, ce, src.bytes)\n\t\t}\n\t\tsz += n\n\t} else if tp == ceDecompose {\n\t\t// Decompose using NFKD and replace tertiary weights.\n\t\tt1, t2 := splitDecompose(ce)\n\t\ti := len(w)\n\t\tnfkd := src.properties(norm.NFKD).Decomposition()\n\t\tfor p := 0; len(nfkd) > 0; nfkd = nfkd[p:] {\n\t\t\tw, p = t.appendNext(w, source{bytes: nfkd})\n\t\t}\n\t\tw[i] = w[i].updateTertiary(t1)\n\t\tif i++; i < len(w) {\n\t\t\tw[i] = w[i].updateTertiary(t2)\n\t\t\tfor i++; i < len(w); i++ {\n\t\t\t\tw[i] = w[i].updateTertiary(maxTertiary)\n\t\t\t}\n\t\t}\n\t}\n\treturn w, sz\n}\n\nfunc (t *Table) appendExpansion(w []Elem, ce Elem) []Elem {\n\ti := splitExpandIndex(ce)\n\tn := int(t.ExpandElem[i])\n\ti++\n\tfor _, ce := range t.ExpandElem[i : i+n] {\n\t\tw = append(w, Elem(ce))\n\t}\n\treturn w\n}\n\nfunc (t *Table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) {\n\tindex, n, offset := splitContractIndex(ce)\n\n\tscan := t.ContractTries.scanner(index, n, suffix)\n\tbuf := [norm.MaxSegmentSize]byte{}\n\tbufp := 0\n\tp := scan.scan(0)\n\n\tif !scan.done && p < len(suffix) && suffix[p] >= utf8.RuneSelf {\n\t\t// By now we should have filtered most cases.\n\t\tp0 := p\n\t\tbufn := 0\n\t\trune := norm.NFD.Properties(suffix[p:])\n\t\tp += rune.Size()\n\t\tif rune.LeadCCC() != 0 {\n\t\t\tprevCC := rune.TrailCCC()\n\t\t\t// A gap may only occur in the last normalization segment.\n\t\t\t// This also ensures that len(scan.s) < norm.MaxSegmentSize.\n\t\t\tif end := norm.NFD.FirstBoundary(suffix[p:]); end != -1 {\n\t\t\t\tscan.s = suffix[:p+end]\n\t\t\t}\n\t\t\tfor p < len(suffix) && !scan.done && suffix[p] >= utf8.RuneSelf {\n\t\t\t\trune = norm.NFD.Properties(suffix[p:])\n\t\t\t\tif ccc := rune.LeadCCC(); ccc == 0 || prevCC >= ccc {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tprevCC = rune.TrailCCC()\n\t\t\t\tif pp := scan.scan(p); pp != p {\n\t\t\t\t\t// Copy the interstitial runes for later processing.\n\t\t\t\t\tbufn += copy(buf[bufn:], suffix[p0:p])\n\t\t\t\t\tif scan.pindex == pp {\n\t\t\t\t\t\tbufp = bufn\n\t\t\t\t\t}\n\t\t\t\t\tp, p0 = pp, pp\n\t\t\t\t} else {\n\t\t\t\t\tp += rune.Size()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Append weights for the matched contraction, which may be an expansion.\n\ti, n := scan.result()\n\tce = Elem(t.ContractElem[i+offset])\n\tif ce.ctype() == ceNormal {\n\t\tw = append(w, ce)\n\t} else {\n\t\tw = t.appendExpansion(w, ce)\n\t}\n\t// Append weights for the runes in the segment not part of the contraction.\n\tfor b, p := buf[:bufp], 0; len(b) > 0; b = b[p:] {\n\t\tw, p = t.appendNext(w, source{bytes: b})\n\t}\n\treturn w, n\n}\n\n// TODO: unify the two implementations. This is best done after first simplifying\n// the algorithm taking into account the inclusion of both NFC and NFD forms\n// in the table.\nfunc (t *Table) matchContractionString(w []Elem, ce Elem, suffix string) ([]Elem, int) {\n\tindex, n, offset := splitContractIndex(ce)\n\n\tscan := t.ContractTries.scannerString(index, n, suffix)\n\tbuf := [norm.MaxSegmentSize]byte{}\n\tbufp := 0\n\tp := scan.scan(0)\n\n\tif !scan.done && p < len(suffix) && suffix[p] >= utf8.RuneSelf {\n\t\t// By now we should have filtered most cases.\n\t\tp0 := p\n\t\tbufn := 0\n\t\trune := norm.NFD.PropertiesString(suffix[p:])\n\t\tp += rune.Size()\n\t\tif rune.LeadCCC() != 0 {\n\t\t\tprevCC := rune.TrailCCC()\n\t\t\t// A gap may only occur in the last normalization segment.\n\t\t\t// This also ensures that len(scan.s) < norm.MaxSegmentSize.\n\t\t\tif end := norm.NFD.FirstBoundaryInString(suffix[p:]); end != -1 {\n\t\t\t\tscan.s = suffix[:p+end]\n\t\t\t}\n\t\t\tfor p < len(suffix) && !scan.done && suffix[p] >= utf8.RuneSelf {\n\t\t\t\trune = norm.NFD.PropertiesString(suffix[p:])\n\t\t\t\tif ccc := rune.LeadCCC(); ccc == 0 || prevCC >= ccc {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tprevCC = rune.TrailCCC()\n\t\t\t\tif pp := scan.scan(p); pp != p {\n\t\t\t\t\t// Copy the interstitial runes for later processing.\n\t\t\t\t\tbufn += copy(buf[bufn:], suffix[p0:p])\n\t\t\t\t\tif scan.pindex == pp {\n\t\t\t\t\t\tbufp = bufn\n\t\t\t\t\t}\n\t\t\t\t\tp, p0 = pp, pp\n\t\t\t\t} else {\n\t\t\t\t\tp += rune.Size()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Append weights for the matched contraction, which may be an expansion.\n\ti, n := scan.result()\n\tce = Elem(t.ContractElem[i+offset])\n\tif ce.ctype() == ceNormal {\n\t\tw = append(w, ce)\n\t} else {\n\t\tw = t.appendExpansion(w, ce)\n\t}\n\t// Append weights for the runes in the segment not part of the contraction.\n\tfor b, p := buf[:bufp], 0; len(b) > 0; b = b[p:] {\n\t\tw, p = t.appendNext(w, source{bytes: b})\n\t}\n\treturn w, n\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/trie.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The trie in this file is used to associate the first full character in an\n// UTF-8 string to a collation element. All but the last byte in a UTF-8 byte\n// sequence are used to lookup offsets in the index table to be used for the\n// next byte. The last byte is used to index into a table of collation elements.\n// For a full description, see go.text/collate/build/trie.go.\n\npackage colltab\n\nconst blockSize = 64\n\ntype Trie struct {\n\tIndex0  []uint16 // index for first byte (0xC0-0xFF)\n\tValues0 []uint32 // index for first byte (0x00-0x7F)\n\tIndex   []uint16\n\tValues  []uint32\n}\n\nconst (\n\tt1 = 0x00 // 0000 0000\n\ttx = 0x80 // 1000 0000\n\tt2 = 0xC0 // 1100 0000\n\tt3 = 0xE0 // 1110 0000\n\tt4 = 0xF0 // 1111 0000\n\tt5 = 0xF8 // 1111 1000\n\tt6 = 0xFC // 1111 1100\n\tte = 0xFE // 1111 1110\n)\n\nfunc (t *Trie) lookupValue(n uint16, b byte) Elem {\n\treturn Elem(t.Values[int(n)<<6+int(b)])\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *Trie) lookup(s []byte) (v Elem, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < tx:\n\t\treturn Elem(t.Values0[c0]), 1\n\tcase c0 < t2:\n\t\treturn 0, 1\n\tcase c0 < t3:\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := t.Index0[c0]\n\t\tc1 := s[1]\n\t\tif c1 < tx || t2 <= c1 {\n\t\t\treturn 0, 1\n\t\t}\n\t\treturn t.lookupValue(i, c1), 2\n\tcase c0 < t4:\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := t.Index0[c0]\n\t\tc1 := s[1]\n\t\tif c1 < tx || t2 <= c1 {\n\t\t\treturn 0, 1\n\t\t}\n\t\to := int(i)<<6 + int(c1)\n\t\ti = t.Index[o]\n\t\tc2 := s[2]\n\t\tif c2 < tx || t2 <= c2 {\n\t\t\treturn 0, 2\n\t\t}\n\t\treturn t.lookupValue(i, c2), 3\n\tcase c0 < t5:\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := t.Index0[c0]\n\t\tc1 := s[1]\n\t\tif c1 < tx || t2 <= c1 {\n\t\t\treturn 0, 1\n\t\t}\n\t\to := int(i)<<6 + int(c1)\n\t\ti = t.Index[o]\n\t\tc2 := s[2]\n\t\tif c2 < tx || t2 <= c2 {\n\t\t\treturn 0, 2\n\t\t}\n\t\to = int(i)<<6 + int(c2)\n\t\ti = t.Index[o]\n\t\tc3 := s[3]\n\t\tif c3 < tx || t2 <= c3 {\n\t\t\treturn 0, 3\n\t\t}\n\t\treturn t.lookupValue(i, c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// The body of lookupString is a verbatim copy of that of lookup.\nfunc (t *Trie) lookupString(s string) (v Elem, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < tx:\n\t\treturn Elem(t.Values0[c0]), 1\n\tcase c0 < t2:\n\t\treturn 0, 1\n\tcase c0 < t3:\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := t.Index0[c0]\n\t\tc1 := s[1]\n\t\tif c1 < tx || t2 <= c1 {\n\t\t\treturn 0, 1\n\t\t}\n\t\treturn t.lookupValue(i, c1), 2\n\tcase c0 < t4:\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := t.Index0[c0]\n\t\tc1 := s[1]\n\t\tif c1 < tx || t2 <= c1 {\n\t\t\treturn 0, 1\n\t\t}\n\t\to := int(i)<<6 + int(c1)\n\t\ti = t.Index[o]\n\t\tc2 := s[2]\n\t\tif c2 < tx || t2 <= c2 {\n\t\t\treturn 0, 2\n\t\t}\n\t\treturn t.lookupValue(i, c2), 3\n\tcase c0 < t5:\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := t.Index0[c0]\n\t\tc1 := s[1]\n\t\tif c1 < tx || t2 <= c1 {\n\t\t\treturn 0, 1\n\t\t}\n\t\to := int(i)<<6 + int(c1)\n\t\ti = t.Index[o]\n\t\tc2 := s[2]\n\t\tif c2 < tx || t2 <= c2 {\n\t\t\treturn 0, 2\n\t\t}\n\t\to = int(i)<<6 + int(c2)\n\t\ti = t.Index[o]\n\t\tc3 := s[3]\n\t\tif c3 < tx || t2 <= c3 {\n\t\t\treturn 0, 3\n\t\t}\n\t\treturn t.lookupValue(i, c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/colltab/weighter.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage colltab // import \"golang.org/x/text/internal/colltab\"\n\n// A Weighter can be used as a source for Collator and Searcher.\ntype Weighter interface {\n\t// Start finds the start of the segment that includes position p.\n\tStart(p int, b []byte) int\n\n\t// StartString finds the start of the segment that includes position p.\n\tStartString(p int, s string) int\n\n\t// AppendNext appends Elems to buf corresponding to the longest match\n\t// of a single character or contraction from the start of s.\n\t// It returns the new buf and the number of bytes consumed.\n\tAppendNext(buf []Elem, s []byte) (ce []Elem, n int)\n\n\t// AppendNextString appends Elems to buf corresponding to the longest match\n\t// of a single character or contraction from the start of s.\n\t// It returns the new buf and the number of bytes consumed.\n\tAppendNextString(buf []Elem, s string) (ce []Elem, n int)\n\n\t// Domain returns a slice of all single characters and contractions for which\n\t// collation elements are defined in this table.\n\tDomain() []string\n\n\t// Top returns the highest variable primary value.\n\tTop() uint32\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/gen/code.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gen\n\nimport (\n\t\"bytes\"\n\t\"encoding/gob\"\n\t\"fmt\"\n\t\"hash\"\n\t\"hash/fnv\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"reflect\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n// This file contains utilities for generating code.\n\n// TODO: other write methods like:\n// - slices, maps, types, etc.\n\n// CodeWriter is a utility for writing structured code. It computes the content\n// hash and size of written content. It ensures there are newlines between\n// written code blocks.\ntype CodeWriter struct {\n\tbuf  bytes.Buffer\n\tSize int\n\tHash hash.Hash32 // content hash\n\tgob  *gob.Encoder\n\t// For comments we skip the usual one-line separator if they are followed by\n\t// a code block.\n\tskipSep bool\n}\n\nfunc (w *CodeWriter) Write(p []byte) (n int, err error) {\n\treturn w.buf.Write(p)\n}\n\n// NewCodeWriter returns a new CodeWriter.\nfunc NewCodeWriter() *CodeWriter {\n\th := fnv.New32()\n\treturn &CodeWriter{Hash: h, gob: gob.NewEncoder(h)}\n}\n\n// WriteGoFile appends the buffer with the total size of all created structures\n// and writes it as a Go file to the the given file with the given package name.\nfunc (w *CodeWriter) WriteGoFile(filename, pkg string) {\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\tlog.Fatalf(\"Could not create file %s: %v\", filename, err)\n\t}\n\tdefer f.Close()\n\tif _, err = w.WriteGo(f, pkg, \"\"); err != nil {\n\t\tlog.Fatalf(\"Error writing file %s: %v\", filename, err)\n\t}\n}\n\n// WriteVersionedGoFile appends the buffer with the total size of all created\n// structures and writes it as a Go file to the the given file with the given\n// package name and build tags for the current Unicode version,\nfunc (w *CodeWriter) WriteVersionedGoFile(filename, pkg string) {\n\ttags := buildTags()\n\tif tags != \"\" {\n\t\tfilename = insertVersion(filename, UnicodeVersion())\n\t}\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\tlog.Fatalf(\"Could not create file %s: %v\", filename, err)\n\t}\n\tdefer f.Close()\n\tif _, err = w.WriteGo(f, pkg, tags); err != nil {\n\t\tlog.Fatalf(\"Error writing file %s: %v\", filename, err)\n\t}\n}\n\n// WriteGo appends the buffer with the total size of all created structures and\n// writes it as a Go file to the the given writer with the given package name.\nfunc (w *CodeWriter) WriteGo(out io.Writer, pkg, tags string) (n int, err error) {\n\tsz := w.Size\n\tw.WriteComment(\"Total table size %d bytes (%dKiB); checksum: %X\\n\", sz, sz/1024, w.Hash.Sum32())\n\tdefer w.buf.Reset()\n\treturn WriteGo(out, pkg, tags, w.buf.Bytes())\n}\n\nfunc (w *CodeWriter) printf(f string, x ...interface{}) {\n\tfmt.Fprintf(w, f, x...)\n}\n\nfunc (w *CodeWriter) insertSep() {\n\tif w.skipSep {\n\t\tw.skipSep = false\n\t\treturn\n\t}\n\t// Use at least two newlines to ensure a blank space between the previous\n\t// block. WriteGoFile will remove extraneous newlines.\n\tw.printf(\"\\n\\n\")\n}\n\n// WriteComment writes a comment block. All line starts are prefixed with \"//\".\n// Initial empty lines are gobbled. The indentation for the first line is\n// stripped from consecutive lines.\nfunc (w *CodeWriter) WriteComment(comment string, args ...interface{}) {\n\ts := fmt.Sprintf(comment, args...)\n\ts = strings.Trim(s, \"\\n\")\n\n\t// Use at least two newlines to ensure a blank space between the previous\n\t// block. WriteGoFile will remove extraneous newlines.\n\tw.printf(\"\\n\\n// \")\n\tw.skipSep = true\n\n\t// strip first indent level.\n\tsep := \"\\n\"\n\tfor ; len(s) > 0 && (s[0] == '\\t' || s[0] == ' '); s = s[1:] {\n\t\tsep += s[:1]\n\t}\n\n\tstrings.NewReplacer(sep, \"\\n// \", \"\\n\", \"\\n// \").WriteString(w, s)\n\n\tw.printf(\"\\n\")\n}\n\nfunc (w *CodeWriter) writeSizeInfo(size int) {\n\tw.printf(\"// Size: %d bytes\\n\", size)\n}\n\n// WriteConst writes a constant of the given name and value.\nfunc (w *CodeWriter) WriteConst(name string, x interface{}) {\n\tw.insertSep()\n\tv := reflect.ValueOf(x)\n\n\tswitch v.Type().Kind() {\n\tcase reflect.String:\n\t\tw.printf(\"const %s %s = \", name, typeName(x))\n\t\tw.WriteString(v.String())\n\t\tw.printf(\"\\n\")\n\tdefault:\n\t\tw.printf(\"const %s = %#v\\n\", name, x)\n\t}\n}\n\n// WriteVar writes a variable of the given name and value.\nfunc (w *CodeWriter) WriteVar(name string, x interface{}) {\n\tw.insertSep()\n\tv := reflect.ValueOf(x)\n\toldSize := w.Size\n\tsz := int(v.Type().Size())\n\tw.Size += sz\n\n\tswitch v.Type().Kind() {\n\tcase reflect.String:\n\t\tw.printf(\"var %s %s = \", name, typeName(x))\n\t\tw.WriteString(v.String())\n\tcase reflect.Struct:\n\t\tw.gob.Encode(x)\n\t\tfallthrough\n\tcase reflect.Slice, reflect.Array:\n\t\tw.printf(\"var %s = \", name)\n\t\tw.writeValue(v)\n\t\tw.writeSizeInfo(w.Size - oldSize)\n\tdefault:\n\t\tw.printf(\"var %s %s = \", name, typeName(x))\n\t\tw.gob.Encode(x)\n\t\tw.writeValue(v)\n\t\tw.writeSizeInfo(w.Size - oldSize)\n\t}\n\tw.printf(\"\\n\")\n}\n\nfunc (w *CodeWriter) writeValue(v reflect.Value) {\n\tx := v.Interface()\n\tswitch v.Kind() {\n\tcase reflect.String:\n\t\tw.WriteString(v.String())\n\tcase reflect.Array:\n\t\t// Don't double count: callers of WriteArray count on the size being\n\t\t// added, so we need to discount it here.\n\t\tw.Size -= int(v.Type().Size())\n\t\tw.writeSlice(x, true)\n\tcase reflect.Slice:\n\t\tw.writeSlice(x, false)\n\tcase reflect.Struct:\n\t\tw.printf(\"%s{\\n\", typeName(v.Interface()))\n\t\tt := v.Type()\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tw.printf(\"%s: \", t.Field(i).Name)\n\t\t\tw.writeValue(v.Field(i))\n\t\t\tw.printf(\",\\n\")\n\t\t}\n\t\tw.printf(\"}\")\n\tdefault:\n\t\tw.printf(\"%#v\", x)\n\t}\n}\n\n// WriteString writes a string literal.\nfunc (w *CodeWriter) WriteString(s string) {\n\ts = strings.Replace(s, `\\`, `\\\\`, -1)\n\tio.WriteString(w.Hash, s) // content hash\n\tw.Size += len(s)\n\n\tconst maxInline = 40\n\tif len(s) <= maxInline {\n\t\tw.printf(\"%q\", s)\n\t\treturn\n\t}\n\n\t// We will render the string as a multi-line string.\n\tconst maxWidth = 80 - 4 - len(`\"`) - len(`\" +`)\n\n\t// When starting on its own line, go fmt indents line 2+ an extra level.\n\tn, max := maxWidth, maxWidth-4\n\n\t// As per https://golang.org/issue/18078, the compiler has trouble\n\t// compiling the concatenation of many strings, s0 + s1 + s2 + ... + sN,\n\t// for large N. We insert redundant, explicit parentheses to work around\n\t// that, lowering the N at any given step: (s0 + s1 + ... + s63) + (s64 +\n\t// ... + s127) + etc + (etc + ... + sN).\n\texplicitParens, extraComment := len(s) > 128*1024, \"\"\n\tif explicitParens {\n\t\tw.printf(`(`)\n\t\textraComment = \"; the redundant, explicit parens are for https://golang.org/issue/18078\"\n\t}\n\n\t// Print \"\" +\\n, if a string does not start on its own line.\n\tb := w.buf.Bytes()\n\tif p := len(bytes.TrimRight(b, \" \\t\")); p > 0 && b[p-1] != '\\n' {\n\t\tw.printf(\"\\\"\\\" + // Size: %d bytes%s\\n\", len(s), extraComment)\n\t\tn, max = maxWidth, maxWidth\n\t}\n\n\tw.printf(`\"`)\n\n\tfor sz, p, nLines := 0, 0, 0; p < len(s); {\n\t\tvar r rune\n\t\tr, sz = utf8.DecodeRuneInString(s[p:])\n\t\tout := s[p : p+sz]\n\t\tchars := 1\n\t\tif !unicode.IsPrint(r) || r == utf8.RuneError || r == '\"' {\n\t\t\tswitch sz {\n\t\t\tcase 1:\n\t\t\t\tout = fmt.Sprintf(\"\\\\x%02x\", s[p])\n\t\t\tcase 2, 3:\n\t\t\t\tout = fmt.Sprintf(\"\\\\u%04x\", r)\n\t\t\tcase 4:\n\t\t\t\tout = fmt.Sprintf(\"\\\\U%08x\", r)\n\t\t\t}\n\t\t\tchars = len(out)\n\t\t}\n\t\tif n -= chars; n < 0 {\n\t\t\tnLines++\n\t\t\tif explicitParens && nLines&63 == 63 {\n\t\t\t\tw.printf(\"\\\") + (\\\"\")\n\t\t\t}\n\t\t\tw.printf(\"\\\" +\\n\\\"\")\n\t\t\tn = max - len(out)\n\t\t}\n\t\tw.printf(\"%s\", out)\n\t\tp += sz\n\t}\n\tw.printf(`\"`)\n\tif explicitParens {\n\t\tw.printf(`)`)\n\t}\n}\n\n// WriteSlice writes a slice value.\nfunc (w *CodeWriter) WriteSlice(x interface{}) {\n\tw.writeSlice(x, false)\n}\n\n// WriteArray writes an array value.\nfunc (w *CodeWriter) WriteArray(x interface{}) {\n\tw.writeSlice(x, true)\n}\n\nfunc (w *CodeWriter) writeSlice(x interface{}, isArray bool) {\n\tv := reflect.ValueOf(x)\n\tw.gob.Encode(v.Len())\n\tw.Size += v.Len() * int(v.Type().Elem().Size())\n\tname := typeName(x)\n\tif isArray {\n\t\tname = fmt.Sprintf(\"[%d]%s\", v.Len(), name[strings.Index(name, \"]\")+1:])\n\t}\n\tif isArray {\n\t\tw.printf(\"%s{\\n\", name)\n\t} else {\n\t\tw.printf(\"%s{ // %d elements\\n\", name, v.Len())\n\t}\n\n\tswitch kind := v.Type().Elem().Kind(); kind {\n\tcase reflect.String:\n\t\tfor _, s := range x.([]string) {\n\t\t\tw.WriteString(s)\n\t\t\tw.printf(\",\\n\")\n\t\t}\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,\n\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t// nLine and nBlock are the number of elements per line and block.\n\t\tnLine, nBlock, format := 8, 64, \"%d,\"\n\t\tswitch kind {\n\t\tcase reflect.Uint8:\n\t\t\tformat = \"%#02x,\"\n\t\tcase reflect.Uint16:\n\t\t\tformat = \"%#04x,\"\n\t\tcase reflect.Uint32:\n\t\t\tnLine, nBlock, format = 4, 32, \"%#08x,\"\n\t\tcase reflect.Uint, reflect.Uint64:\n\t\t\tnLine, nBlock, format = 4, 32, \"%#016x,\"\n\t\tcase reflect.Int8:\n\t\t\tnLine = 16\n\t\t}\n\t\tn := nLine\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tif i%nBlock == 0 && v.Len() > nBlock {\n\t\t\t\tw.printf(\"// Entry %X - %X\\n\", i, i+nBlock-1)\n\t\t\t}\n\t\t\tx := v.Index(i).Interface()\n\t\t\tw.gob.Encode(x)\n\t\t\tw.printf(format, x)\n\t\t\tif n--; n == 0 {\n\t\t\t\tn = nLine\n\t\t\t\tw.printf(\"\\n\")\n\t\t\t}\n\t\t}\n\t\tw.printf(\"\\n\")\n\tcase reflect.Struct:\n\t\tzero := reflect.Zero(v.Type().Elem()).Interface()\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tx := v.Index(i).Interface()\n\t\t\tw.gob.EncodeValue(v)\n\t\t\tif !reflect.DeepEqual(zero, x) {\n\t\t\t\tline := fmt.Sprintf(\"%#v,\\n\", x)\n\t\t\t\tline = line[strings.IndexByte(line, '{'):]\n\t\t\t\tw.printf(\"%d: \", i)\n\t\t\t\tw.printf(line)\n\t\t\t}\n\t\t}\n\tcase reflect.Array:\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tw.printf(\"%d: %#v,\\n\", i, v.Index(i).Interface())\n\t\t}\n\tdefault:\n\t\tpanic(\"gen: slice elem type not supported\")\n\t}\n\tw.printf(\"}\")\n}\n\n// WriteType writes a definition of the type of the given value and returns the\n// type name.\nfunc (w *CodeWriter) WriteType(x interface{}) string {\n\tt := reflect.TypeOf(x)\n\tw.printf(\"type %s struct {\\n\", t.Name())\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tw.printf(\"\\t%s %s\\n\", t.Field(i).Name, t.Field(i).Type)\n\t}\n\tw.printf(\"}\\n\")\n\treturn t.Name()\n}\n\n// typeName returns the name of the go type of x.\nfunc typeName(x interface{}) string {\n\tt := reflect.ValueOf(x).Type()\n\treturn strings.Replace(fmt.Sprint(t), \"main.\", \"\", 1)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/gen/gen.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package gen contains common code for the various code generation tools in the\n// text repository. Its usage ensures consistency between tools.\n//\n// This package defines command line flags that are common to most generation\n// tools. The flags allow for specifying specific Unicode and CLDR versions\n// in the public Unicode data repository (http://www.unicode.org/Public).\n//\n// A local Unicode data mirror can be set through the flag -local or the\n// environment variable UNICODE_DIR. The former takes precedence. The local\n// directory should follow the same structure as the public repository.\n//\n// IANA data can also optionally be mirrored by putting it in the iana directory\n// rooted at the top of the local mirror. Beware, though, that IANA data is not\n// versioned. So it is up to the developer to use the right version.\npackage gen // import \"golang.org/x/text/internal/gen\"\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go/build\"\n\t\"go/format\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\n\t\"golang.org/x/text/unicode/cldr\"\n)\n\nvar (\n\turl = flag.String(\"url\",\n\t\t\"http://www.unicode.org/Public\",\n\t\t\"URL of Unicode database directory\")\n\tiana = flag.String(\"iana\",\n\t\t\"http://www.iana.org\",\n\t\t\"URL of the IANA repository\")\n\tunicodeVersion = flag.String(\"unicode\",\n\t\tgetEnv(\"UNICODE_VERSION\", unicode.Version),\n\t\t\"unicode version to use\")\n\tcldrVersion = flag.String(\"cldr\",\n\t\tgetEnv(\"CLDR_VERSION\", cldr.Version),\n\t\t\"cldr version to use\")\n)\n\nfunc getEnv(name, def string) string {\n\tif v := os.Getenv(name); v != \"\" {\n\t\treturn v\n\t}\n\treturn def\n}\n\n// Init performs common initialization for a gen command. It parses the flags\n// and sets up the standard logging parameters.\nfunc Init() {\n\tlog.SetPrefix(\"\")\n\tlog.SetFlags(log.Lshortfile)\n\tflag.Parse()\n}\n\nconst header = `// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n`\n\n// UnicodeVersion reports the requested Unicode version.\nfunc UnicodeVersion() string {\n\treturn *unicodeVersion\n}\n\n// CLDRVersion reports the requested CLDR version.\nfunc CLDRVersion() string {\n\treturn *cldrVersion\n}\n\nvar tags = []struct{ version, buildTags string }{\n\t{\"10.0.0\", \"go1.10\"},\n\t{\"\", \"!go1.10\"},\n}\n\n// buildTags reports the build tags used for the current Unicode version.\nfunc buildTags() string {\n\tv := UnicodeVersion()\n\tfor _, x := range tags {\n\t\t// We should do a numeric comparison, but including the collate package\n\t\t// would create an import cycle. We approximate it by assuming that\n\t\t// longer version strings are later.\n\t\tif len(x.version) <= len(v) {\n\t\t\treturn x.buildTags\n\t\t}\n\t\tif len(x.version) == len(v) && x.version <= v {\n\t\t\treturn x.buildTags\n\t\t}\n\t}\n\treturn tags[0].buildTags\n}\n\n// IsLocal reports whether data files are available locally.\nfunc IsLocal() bool {\n\tdir, err := localReadmeFile()\n\tif err != nil {\n\t\treturn false\n\t}\n\tif _, err = os.Stat(dir); err != nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// OpenUCDFile opens the requested UCD file. The file is specified relative to\n// the public Unicode root directory. It will call log.Fatal if there are any\n// errors.\nfunc OpenUCDFile(file string) io.ReadCloser {\n\treturn openUnicode(path.Join(*unicodeVersion, \"ucd\", file))\n}\n\n// OpenCLDRCoreZip opens the CLDR core zip file. It will call log.Fatal if there\n// are any errors.\nfunc OpenCLDRCoreZip() io.ReadCloser {\n\treturn OpenUnicodeFile(\"cldr\", *cldrVersion, \"core.zip\")\n}\n\n// OpenUnicodeFile opens the requested file of the requested category from the\n// root of the Unicode data archive. The file is specified relative to the\n// public Unicode root directory. If version is \"\", it will use the default\n// Unicode version. It will call log.Fatal if there are any errors.\nfunc OpenUnicodeFile(category, version, file string) io.ReadCloser {\n\tif version == \"\" {\n\t\tversion = UnicodeVersion()\n\t}\n\treturn openUnicode(path.Join(category, version, file))\n}\n\n// OpenIANAFile opens the requested IANA file. The file is specified relative\n// to the IANA root, which is typically either http://www.iana.org or the\n// iana directory in the local mirror. It will call log.Fatal if there are any\n// errors.\nfunc OpenIANAFile(path string) io.ReadCloser {\n\treturn Open(*iana, \"iana\", path)\n}\n\nvar (\n\tdirMutex sync.Mutex\n\tlocalDir string\n)\n\nconst permissions = 0755\n\nfunc localReadmeFile() (string, error) {\n\tp, err := build.Import(\"golang.org/x/text\", \"\", build.FindOnly)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"Could not locate package: %v\", err)\n\t}\n\treturn filepath.Join(p.Dir, \"DATA\", \"README\"), nil\n}\n\nfunc getLocalDir() string {\n\tdirMutex.Lock()\n\tdefer dirMutex.Unlock()\n\n\treadme, err := localReadmeFile()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdir := filepath.Dir(readme)\n\tif _, err := os.Stat(readme); err != nil {\n\t\tif err := os.MkdirAll(dir, permissions); err != nil {\n\t\t\tlog.Fatalf(\"Could not create directory: %v\", err)\n\t\t}\n\t\tioutil.WriteFile(readme, []byte(readmeTxt), permissions)\n\t}\n\treturn dir\n}\n\nconst readmeTxt = `Generated by golang.org/x/text/internal/gen. DO NOT EDIT.\n\nThis directory contains downloaded files used to generate the various tables\nin the golang.org/x/text subrepo.\n\nNote that the language subtag repo (iana/assignments/language-subtag-registry)\nand all other times in the iana subdirectory are not versioned and will need\nto be periodically manually updated. The easiest way to do this is to remove\nthe entire iana directory. This is mostly of concern when updating the language\npackage.\n`\n\n// Open opens subdir/path if a local directory is specified and the file exists,\n// where subdir is a directory relative to the local root, or fetches it from\n// urlRoot/path otherwise. It will call log.Fatal if there are any errors.\nfunc Open(urlRoot, subdir, path string) io.ReadCloser {\n\tfile := filepath.Join(getLocalDir(), subdir, filepath.FromSlash(path))\n\treturn open(file, urlRoot, path)\n}\n\nfunc openUnicode(path string) io.ReadCloser {\n\tfile := filepath.Join(getLocalDir(), filepath.FromSlash(path))\n\treturn open(file, *url, path)\n}\n\n// TODO: automatically periodically update non-versioned files.\n\nfunc open(file, urlRoot, path string) io.ReadCloser {\n\tif f, err := os.Open(file); err == nil {\n\t\treturn f\n\t}\n\tr := get(urlRoot, path)\n\tdefer r.Close()\n\tb, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\tlog.Fatalf(\"Could not download file: %v\", err)\n\t}\n\tos.MkdirAll(filepath.Dir(file), permissions)\n\tif err := ioutil.WriteFile(file, b, permissions); err != nil {\n\t\tlog.Fatalf(\"Could not create file: %v\", err)\n\t}\n\treturn ioutil.NopCloser(bytes.NewReader(b))\n}\n\nfunc get(root, path string) io.ReadCloser {\n\turl := root + \"/\" + path\n\tfmt.Printf(\"Fetching %s...\", url)\n\tdefer fmt.Println(\" done.\")\n\tresp, err := http.Get(url)\n\tif err != nil {\n\t\tlog.Fatalf(\"HTTP GET: %v\", err)\n\t}\n\tif resp.StatusCode != 200 {\n\t\tlog.Fatalf(\"Bad GET status for %q: %q\", url, resp.Status)\n\t}\n\treturn resp.Body\n}\n\n// TODO: use Write*Version in all applicable packages.\n\n// WriteUnicodeVersion writes a constant for the Unicode version from which the\n// tables are generated.\nfunc WriteUnicodeVersion(w io.Writer) {\n\tfmt.Fprintf(w, \"// UnicodeVersion is the Unicode version from which the tables in this package are derived.\\n\")\n\tfmt.Fprintf(w, \"const UnicodeVersion = %q\\n\\n\", UnicodeVersion())\n}\n\n// WriteCLDRVersion writes a constant for the CLDR version from which the\n// tables are generated.\nfunc WriteCLDRVersion(w io.Writer) {\n\tfmt.Fprintf(w, \"// CLDRVersion is the CLDR version from which the tables in this package are derived.\\n\")\n\tfmt.Fprintf(w, \"const CLDRVersion = %q\\n\\n\", CLDRVersion())\n}\n\n// WriteGoFile prepends a standard file comment and package statement to the\n// given bytes, applies gofmt, and writes them to a file with the given name.\n// It will call log.Fatal if there are any errors.\nfunc WriteGoFile(filename, pkg string, b []byte) {\n\tw, err := os.Create(filename)\n\tif err != nil {\n\t\tlog.Fatalf(\"Could not create file %s: %v\", filename, err)\n\t}\n\tdefer w.Close()\n\tif _, err = WriteGo(w, pkg, \"\", b); err != nil {\n\t\tlog.Fatalf(\"Error writing file %s: %v\", filename, err)\n\t}\n}\n\nfunc insertVersion(filename, version string) string {\n\tsuffix := \".go\"\n\tif strings.HasSuffix(filename, \"_test.go\") {\n\t\tsuffix = \"_test.go\"\n\t}\n\treturn fmt.Sprint(filename[:len(filename)-len(suffix)], version, suffix)\n}\n\n// WriteVersionedGoFile prepends a standard file comment, adds build tags to\n// version the file for the current Unicode version, and package statement to\n// the given bytes, applies gofmt, and writes them to a file with the given\n// name. It will call log.Fatal if there are any errors.\nfunc WriteVersionedGoFile(filename, pkg string, b []byte) {\n\ttags := buildTags()\n\tif tags != \"\" {\n\t\tfilename = insertVersion(filename, UnicodeVersion())\n\t}\n\tw, err := os.Create(filename)\n\tif err != nil {\n\t\tlog.Fatalf(\"Could not create file %s: %v\", filename, err)\n\t}\n\tdefer w.Close()\n\tif _, err = WriteGo(w, pkg, tags, b); err != nil {\n\t\tlog.Fatalf(\"Error writing file %s: %v\", filename, err)\n\t}\n}\n\n// WriteGo prepends a standard file comment and package statement to the given\n// bytes, applies gofmt, and writes them to w.\nfunc WriteGo(w io.Writer, pkg, tags string, b []byte) (n int, err error) {\n\tsrc := []byte(header)\n\tif tags != \"\" {\n\t\tsrc = append(src, fmt.Sprintf(\"// +build %s\\n\\n\", tags)...)\n\t}\n\tsrc = append(src, fmt.Sprintf(\"package %s\\n\\n\", pkg)...)\n\tsrc = append(src, b...)\n\tformatted, err := format.Source(src)\n\tif err != nil {\n\t\t// Print the generated code even in case of an error so that the\n\t\t// returned error can be meaningfully interpreted.\n\t\tn, _ = w.Write(src)\n\t\treturn n, err\n\t}\n\treturn w.Write(formatted)\n}\n\n// Repackage rewrites a Go file from belonging to package main to belonging to\n// the given package.\nfunc Repackage(inFile, outFile, pkg string) {\n\tsrc, err := ioutil.ReadFile(inFile)\n\tif err != nil {\n\t\tlog.Fatalf(\"reading %s: %v\", inFile, err)\n\t}\n\tconst toDelete = \"package main\\n\\n\"\n\ti := bytes.Index(src, []byte(toDelete))\n\tif i < 0 {\n\t\tlog.Fatalf(\"Could not find %q in %s.\", toDelete, inFile)\n\t}\n\tw := &bytes.Buffer{}\n\tw.Write(src[i+len(toDelete):])\n\tWriteGoFile(outFile, pkg, w.Bytes())\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/tag/tag.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package tag contains functionality handling tags and related data.\npackage tag // import \"golang.org/x/text/internal/tag\"\n\nimport \"sort\"\n\n// An Index converts tags to a compact numeric value.\n//\n// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can\n// be used to store additional information about the tag.\ntype Index string\n\n// Elem returns the element data at the given index.\nfunc (s Index) Elem(x int) string {\n\treturn string(s[x*4 : x*4+4])\n}\n\n// Index reports the index of the given key or -1 if it could not be found.\n// Only the first len(key) bytes from the start of the 4-byte entries will be\n// considered for the search and the first match in Index will be returned.\nfunc (s Index) Index(key []byte) int {\n\tn := len(key)\n\t// search the index of the first entry with an equal or higher value than\n\t// key in s.\n\tindex := sort.Search(len(s)/4, func(i int) bool {\n\t\treturn cmp(s[i*4:i*4+n], key) != -1\n\t})\n\ti := index * 4\n\tif cmp(s[i:i+len(key)], key) != 0 {\n\t\treturn -1\n\t}\n\treturn index\n}\n\n// Next finds the next occurrence of key after index x, which must have been\n// obtained from a call to Index using the same key. It returns x+1 or -1.\nfunc (s Index) Next(key []byte, x int) int {\n\tif x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 {\n\t\treturn x\n\t}\n\treturn -1\n}\n\n// cmp returns an integer comparing a and b lexicographically.\nfunc cmp(a Index, b []byte) int {\n\tn := len(a)\n\tif len(b) < n {\n\t\tn = len(b)\n\t}\n\tfor i, c := range b[:n] {\n\t\tswitch {\n\t\tcase a[i] > c:\n\t\t\treturn 1\n\t\tcase a[i] < c:\n\t\t\treturn -1\n\t\t}\n\t}\n\tswitch {\n\tcase len(a) < len(b):\n\t\treturn -1\n\tcase len(a) > len(b):\n\t\treturn 1\n\t}\n\treturn 0\n}\n\n// Compare returns an integer comparing a and b lexicographically.\nfunc Compare(a string, b []byte) int {\n\treturn cmp(Index(a), b)\n}\n\n// FixCase reformats b to the same pattern of cases as form.\n// If returns false if string b is malformed.\nfunc FixCase(form string, b []byte) bool {\n\tif len(form) != len(b) {\n\t\treturn false\n\t}\n\tfor i, c := range b {\n\t\tif form[i] <= 'Z' {\n\t\t\tif c >= 'a' {\n\t\t\t\tc -= 'z' - 'Z'\n\t\t\t}\n\t\t\tif c < 'A' || 'Z' < c {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tif c <= 'Z' {\n\t\t\t\tc += 'z' - 'Z'\n\t\t\t}\n\t\t\tif c < 'a' || 'z' < c {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tb[i] = c\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/triegen/compact.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage triegen\n\n// This file defines Compacter and its implementations.\n\nimport \"io\"\n\n// A Compacter generates an alternative, more space-efficient way to store a\n// trie value block. A trie value block holds all possible values for the last\n// byte of a UTF-8 encoded rune. Excluding ASCII characters, a trie value block\n// always has 64 values, as a UTF-8 encoding ends with a byte in [0x80, 0xC0).\ntype Compacter interface {\n\t// Size returns whether the Compacter could encode the given block as well\n\t// as its size in case it can. len(v) is always 64.\n\tSize(v []uint64) (sz int, ok bool)\n\n\t// Store stores the block using the Compacter's compression method.\n\t// It returns a handle with which the block can be retrieved.\n\t// len(v) is always 64.\n\tStore(v []uint64) uint32\n\n\t// Print writes the data structures associated to the given store to w.\n\tPrint(w io.Writer) error\n\n\t// Handler returns the name of a function that gets called during trie\n\t// lookup for blocks generated by the Compacter. The function should be of\n\t// the form func (n uint32, b byte) uint64, where n is the index returned by\n\t// the Compacter's Store method and b is the last byte of the UTF-8\n\t// encoding, where 0x80 <= b < 0xC0, for which to do the lookup in the\n\t// block.\n\tHandler() string\n}\n\n// simpleCompacter is the default Compacter used by builder. It implements a\n// normal trie block.\ntype simpleCompacter builder\n\nfunc (b *simpleCompacter) Size([]uint64) (sz int, ok bool) {\n\treturn blockSize * b.ValueSize, true\n}\n\nfunc (b *simpleCompacter) Store(v []uint64) uint32 {\n\th := uint32(len(b.ValueBlocks) - blockOffset)\n\tb.ValueBlocks = append(b.ValueBlocks, v)\n\treturn h\n}\n\nfunc (b *simpleCompacter) Print(io.Writer) error {\n\t// Structures are printed in print.go.\n\treturn nil\n}\n\nfunc (b *simpleCompacter) Handler() string {\n\tpanic(\"Handler should be special-cased for this Compacter\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/triegen/print.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage triegen\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"text/template\"\n)\n\n// print writes all the data structures as well as the code necessary to use the\n// trie to w.\nfunc (b *builder) print(w io.Writer) error {\n\tb.Stats.NValueEntries = len(b.ValueBlocks) * blockSize\n\tb.Stats.NValueBytes = len(b.ValueBlocks) * blockSize * b.ValueSize\n\tb.Stats.NIndexEntries = len(b.IndexBlocks) * blockSize\n\tb.Stats.NIndexBytes = len(b.IndexBlocks) * blockSize * b.IndexSize\n\tb.Stats.NHandleBytes = len(b.Trie) * 2 * b.IndexSize\n\n\t// If we only have one root trie, all starter blocks are at position 0 and\n\t// we can access the arrays directly.\n\tif len(b.Trie) == 1 {\n\t\t// At this point we cannot refer to the generated tables directly.\n\t\tb.ASCIIBlock = b.Name + \"Values\"\n\t\tb.StarterBlock = b.Name + \"Index\"\n\t} else {\n\t\t// Otherwise we need to have explicit starter indexes in the trie\n\t\t// structure.\n\t\tb.ASCIIBlock = \"t.ascii\"\n\t\tb.StarterBlock = \"t.utf8Start\"\n\t}\n\n\tb.SourceType = \"[]byte\"\n\tif err := lookupGen.Execute(w, b); err != nil {\n\t\treturn err\n\t}\n\n\tb.SourceType = \"string\"\n\tif err := lookupGen.Execute(w, b); err != nil {\n\t\treturn err\n\t}\n\n\tif err := trieGen.Execute(w, b); err != nil {\n\t\treturn err\n\t}\n\n\tfor _, c := range b.Compactions {\n\t\tif err := c.c.Print(w); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc printValues(n int, values []uint64) string {\n\tw := &bytes.Buffer{}\n\tboff := n * blockSize\n\tfmt.Fprintf(w, \"\\t// Block %#x, offset %#x\", n, boff)\n\tvar newline bool\n\tfor i, v := range values {\n\t\tif i%6 == 0 {\n\t\t\tnewline = true\n\t\t}\n\t\tif v != 0 {\n\t\t\tif newline {\n\t\t\t\tfmt.Fprintf(w, \"\\n\")\n\t\t\t\tnewline = false\n\t\t\t}\n\t\t\tfmt.Fprintf(w, \"\\t%#02x:%#04x, \", boff+i, v)\n\t\t}\n\t}\n\treturn w.String()\n}\n\nfunc printIndex(b *builder, nr int, n *node) string {\n\tw := &bytes.Buffer{}\n\tboff := nr * blockSize\n\tfmt.Fprintf(w, \"\\t// Block %#x, offset %#x\", nr, boff)\n\tvar newline bool\n\tfor i, c := range n.children {\n\t\tif i%8 == 0 {\n\t\t\tnewline = true\n\t\t}\n\t\tif c != nil {\n\t\t\tv := b.Compactions[c.index.compaction].Offset + uint32(c.index.index)\n\t\t\tif v != 0 {\n\t\t\t\tif newline {\n\t\t\t\t\tfmt.Fprintf(w, \"\\n\")\n\t\t\t\t\tnewline = false\n\t\t\t\t}\n\t\t\t\tfmt.Fprintf(w, \"\\t%#02x:%#02x, \", boff+i, v)\n\t\t\t}\n\t\t}\n\t}\n\treturn w.String()\n}\n\nvar (\n\ttrieGen = template.Must(template.New(\"trie\").Funcs(template.FuncMap{\n\t\t\"printValues\": printValues,\n\t\t\"printIndex\":  printIndex,\n\t\t\"title\":       strings.Title,\n\t\t\"dec\":         func(x int) int { return x - 1 },\n\t\t\"psize\": func(n int) string {\n\t\t\treturn fmt.Sprintf(\"%d bytes (%.2f KiB)\", n, float64(n)/1024)\n\t\t},\n\t}).Parse(trieTemplate))\n\tlookupGen = template.Must(template.New(\"lookup\").Parse(lookupTemplate))\n)\n\n// TODO: consider the return type of lookup. It could be uint64, even if the\n// internal value type is smaller. We will have to verify this with the\n// performance of unicode/norm, which is very sensitive to such changes.\nconst trieTemplate = `{{$b := .}}{{$multi := gt (len .Trie) 1}}\n// {{.Name}}Trie. Total size: {{psize .Size}}. Checksum: {{printf \"%08x\" .Checksum}}.\ntype {{.Name}}Trie struct { {{if $multi}}\n\tascii []{{.ValueType}} // index for ASCII bytes\n\tutf8Start  []{{.IndexType}} // index for UTF-8 bytes >= 0xC0\n{{end}}}\n\nfunc new{{title .Name}}Trie(i int) *{{.Name}}Trie { {{if $multi}}\n\th := {{.Name}}TrieHandles[i]\n\treturn &{{.Name}}Trie{ {{.Name}}Values[uint32(h.ascii)<<6:], {{.Name}}Index[uint32(h.multi)<<6:] }\n}\n\ntype {{.Name}}TrieHandle struct {\n\tascii, multi {{.IndexType}}\n}\n\n// {{.Name}}TrieHandles: {{len .Trie}} handles, {{.Stats.NHandleBytes}} bytes\nvar {{.Name}}TrieHandles = [{{len .Trie}}]{{.Name}}TrieHandle{\n{{range .Trie}}\t{ {{.ASCIIIndex}}, {{.StarterIndex}} }, // {{printf \"%08x\" .Checksum}}: {{.Name}}\n{{end}}}{{else}}\n\treturn &{{.Name}}Trie{}\n}\n{{end}}\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *{{.Name}}Trie) lookupValue(n uint32, b byte) {{.ValueType}}{{$last := dec (len .Compactions)}} {\n\tswitch { {{range $i, $c := .Compactions}}\n\t\t{{if eq $i $last}}default{{else}}case n < {{$c.Cutoff}}{{end}}:{{if ne $i 0}}\n\t\t\tn -= {{$c.Offset}}{{end}}\n\t\t\treturn {{print $b.ValueType}}({{$c.Handler}}){{end}}\n\t}\n}\n\n// {{.Name}}Values: {{len .ValueBlocks}} blocks, {{.Stats.NValueEntries}} entries, {{.Stats.NValueBytes}} bytes\n// The third block is the zero block.\nvar {{.Name}}Values = [{{.Stats.NValueEntries}}]{{.ValueType}} {\n{{range $i, $v := .ValueBlocks}}{{printValues $i $v}}\n{{end}}}\n\n// {{.Name}}Index: {{len .IndexBlocks}} blocks, {{.Stats.NIndexEntries}} entries, {{.Stats.NIndexBytes}} bytes\n// Block 0 is the zero block.\nvar {{.Name}}Index = [{{.Stats.NIndexEntries}}]{{.IndexType}} {\n{{range $i, $v := .IndexBlocks}}{{printIndex $b $i $v}}\n{{end}}}\n`\n\n// TODO: consider allowing zero-length strings after evaluating performance with\n// unicode/norm.\nconst lookupTemplate = `\n// lookup{{if eq .SourceType \"string\"}}String{{end}} returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *{{.Name}}Trie) lookup{{if eq .SourceType \"string\"}}String{{end}}(s {{.SourceType}}) (v {{.ValueType}}, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn {{.ASCIIBlock}}[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1  // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := {{.StarterBlock}}[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := {{.StarterBlock}}[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = {{.Name}}Index[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := {{.StarterBlock}}[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = {{.Name}}Index[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = {{.Name}}Index[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookup{{if eq .SourceType \"string\"}}String{{end}}Unsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *{{.Name}}Trie) lookup{{if eq .SourceType \"string\"}}String{{end}}Unsafe(s {{.SourceType}}) {{.ValueType}} {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn {{.ASCIIBlock}}[c0]\n\t}\n\ti := {{.StarterBlock}}[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = {{.Name}}Index[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = {{.Name}}Index[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n`\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/triegen/triegen.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package triegen implements a code generator for a trie for associating\n// unsigned integer values with UTF-8 encoded runes.\n//\n// Many of the go.text packages use tries for storing per-rune information.  A\n// trie is especially useful if many of the runes have the same value. If this\n// is the case, many blocks can be expected to be shared allowing for\n// information on many runes to be stored in little space.\n//\n// As most of the lookups are done directly on []byte slices, the tries use the\n// UTF-8 bytes directly for the lookup. This saves a conversion from UTF-8 to\n// runes and contributes a little bit to better performance. It also naturally\n// provides a fast path for ASCII.\n//\n// Space is also an issue. There are many code points defined in Unicode and as\n// a result tables can get quite large. So every byte counts. The triegen\n// package automatically chooses the smallest integer values to represent the\n// tables. Compacters allow further compression of the trie by allowing for\n// alternative representations of individual trie blocks.\n//\n// triegen allows generating multiple tries as a single structure. This is\n// useful when, for example, one wants to generate tries for several languages\n// that have a lot of values in common. Some existing libraries for\n// internationalization store all per-language data as a dynamically loadable\n// chunk. The go.text packages are designed with the assumption that the user\n// typically wants to compile in support for all supported languages, in line\n// with the approach common to Go to create a single standalone binary. The\n// multi-root trie approach can give significant storage savings in this\n// scenario.\n//\n// triegen generates both tables and code. The code is optimized to use the\n// automatically chosen data types. The following code is generated for a Trie\n// or multiple Tries named \"foo\":\n//\t- type fooTrie\n//\t\tThe trie type.\n//\n//\t- func newFooTrie(x int) *fooTrie\n//\t\tTrie constructor, where x is the index of the trie passed to Gen.\n//\n//\t- func (t *fooTrie) lookup(s []byte) (v uintX, sz int)\n//\t\tThe lookup method, where uintX is automatically chosen.\n//\n//\t- func lookupString, lookupUnsafe and lookupStringUnsafe\n//\t\tVariants of the above.\n//\n//\t- var fooValues and fooIndex and any tables generated by Compacters.\n//\t\tThe core trie data.\n//\n//\t- var fooTrieHandles\n//\t\tIndexes of starter blocks in case of multiple trie roots.\n//\n// It is recommended that users test the generated trie by checking the returned\n// value for every rune. Such exhaustive tests are possible as the the number of\n// runes in Unicode is limited.\npackage triegen // import \"golang.org/x/text/internal/triegen\"\n\n// TODO: Arguably, the internally optimized data types would not have to be\n// exposed in the generated API. We could also investigate not generating the\n// code, but using it through a package. We would have to investigate the impact\n// on performance of making such change, though. For packages like unicode/norm,\n// small changes like this could tank performance.\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"hash/crc64\"\n\t\"io\"\n\t\"log\"\n\t\"unicode/utf8\"\n)\n\n// builder builds a set of tries for associating values with runes. The set of\n// tries can share common index and value blocks.\ntype builder struct {\n\tName string\n\n\t// ValueType is the type of the trie values looked up.\n\tValueType string\n\n\t// ValueSize is the byte size of the ValueType.\n\tValueSize int\n\n\t// IndexType is the type of trie index values used for all UTF-8 bytes of\n\t// a rune except the last one.\n\tIndexType string\n\n\t// IndexSize is the byte size of the IndexType.\n\tIndexSize int\n\n\t// SourceType is used when generating the lookup functions. If the user\n\t// requests StringSupport, all lookup functions will be generated for\n\t// string input as well.\n\tSourceType string\n\n\tTrie []*Trie\n\n\tIndexBlocks []*node\n\tValueBlocks [][]uint64\n\tCompactions []compaction\n\tChecksum    uint64\n\n\tASCIIBlock   string\n\tStarterBlock string\n\n\tindexBlockIdx map[uint64]int\n\tvalueBlockIdx map[uint64]nodeIndex\n\tasciiBlockIdx map[uint64]int\n\n\t// Stats are used to fill out the template.\n\tStats struct {\n\t\tNValueEntries int\n\t\tNValueBytes   int\n\t\tNIndexEntries int\n\t\tNIndexBytes   int\n\t\tNHandleBytes  int\n\t}\n\n\terr error\n}\n\n// A nodeIndex encodes the index of a node, which is defined by the compaction\n// which stores it and an index within the compaction. For internal nodes, the\n// compaction is always 0.\ntype nodeIndex struct {\n\tcompaction int\n\tindex      int\n}\n\n// compaction keeps track of stats used for the compaction.\ntype compaction struct {\n\tc         Compacter\n\tblocks    []*node\n\tmaxHandle uint32\n\ttotalSize int\n\n\t// Used by template-based generator and thus exported.\n\tCutoff  uint32\n\tOffset  uint32\n\tHandler string\n}\n\nfunc (b *builder) setError(err error) {\n\tif b.err == nil {\n\t\tb.err = err\n\t}\n}\n\n// An Option can be passed to Gen.\ntype Option func(b *builder) error\n\n// Compact configures the trie generator to use the given Compacter.\nfunc Compact(c Compacter) Option {\n\treturn func(b *builder) error {\n\t\tb.Compactions = append(b.Compactions, compaction{\n\t\t\tc:       c,\n\t\t\tHandler: c.Handler() + \"(n, b)\"})\n\t\treturn nil\n\t}\n}\n\n// Gen writes Go code for a shared trie lookup structure to w for the given\n// Tries. The generated trie type will be called nameTrie. newNameTrie(x) will\n// return the *nameTrie for tries[x]. A value can be looked up by using one of\n// the various lookup methods defined on nameTrie. It returns the table size of\n// the generated trie.\nfunc Gen(w io.Writer, name string, tries []*Trie, opts ...Option) (sz int, err error) {\n\t// The index contains two dummy blocks, followed by the zero block. The zero\n\t// block is at offset 0x80, so that the offset for the zero block for\n\t// continuation bytes is 0.\n\tb := &builder{\n\t\tName:        name,\n\t\tTrie:        tries,\n\t\tIndexBlocks: []*node{{}, {}, {}},\n\t\tCompactions: []compaction{{\n\t\t\tHandler: name + \"Values[n<<6+uint32(b)]\",\n\t\t}},\n\t\t// The 0 key in indexBlockIdx and valueBlockIdx is the hash of the zero\n\t\t// block.\n\t\tindexBlockIdx: map[uint64]int{0: 0},\n\t\tvalueBlockIdx: map[uint64]nodeIndex{0: {}},\n\t\tasciiBlockIdx: map[uint64]int{},\n\t}\n\tb.Compactions[0].c = (*simpleCompacter)(b)\n\n\tfor _, f := range opts {\n\t\tif err := f(b); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tb.build()\n\tif b.err != nil {\n\t\treturn 0, b.err\n\t}\n\tif err = b.print(w); err != nil {\n\t\treturn 0, err\n\t}\n\treturn b.Size(), nil\n}\n\n// A Trie represents a single root node of a trie. A builder may build several\n// overlapping tries at once.\ntype Trie struct {\n\troot *node\n\n\thiddenTrie\n}\n\n// hiddenTrie contains values we want to be visible to the template generator,\n// but hidden from the API documentation.\ntype hiddenTrie struct {\n\tName         string\n\tChecksum     uint64\n\tASCIIIndex   int\n\tStarterIndex int\n}\n\n// NewTrie returns a new trie root.\nfunc NewTrie(name string) *Trie {\n\treturn &Trie{\n\t\t&node{\n\t\t\tchildren: make([]*node, blockSize),\n\t\t\tvalues:   make([]uint64, utf8.RuneSelf),\n\t\t},\n\t\thiddenTrie{Name: name},\n\t}\n}\n\n// Gen is a convenience wrapper around the Gen func passing t as the only trie\n// and uses the name passed to NewTrie. It returns the size of the generated\n// tables.\nfunc (t *Trie) Gen(w io.Writer, opts ...Option) (sz int, err error) {\n\treturn Gen(w, t.Name, []*Trie{t}, opts...)\n}\n\n// node is a node of the intermediate trie structure.\ntype node struct {\n\t// children holds this node's children. It is always of length 64.\n\t// A child node may be nil.\n\tchildren []*node\n\n\t// values contains the values of this node. If it is non-nil, this node is\n\t// either a root or leaf node:\n\t// For root nodes, len(values) == 128 and it maps the bytes in [0x00, 0x7F].\n\t// For leaf nodes, len(values) ==  64 and it maps the bytes in [0x80, 0xBF].\n\tvalues []uint64\n\n\tindex nodeIndex\n}\n\n// Insert associates value with the given rune. Insert will panic if a non-zero\n// value is passed for an invalid rune.\nfunc (t *Trie) Insert(r rune, value uint64) {\n\tif value == 0 {\n\t\treturn\n\t}\n\ts := string(r)\n\tif []rune(s)[0] != r && value != 0 {\n\t\t// Note: The UCD tables will always assign what amounts to a zero value\n\t\t// to a surrogate. Allowing a zero value for an illegal rune allows\n\t\t// users to iterate over [0..MaxRune] without having to explicitly\n\t\t// exclude surrogates, which would be tedious.\n\t\tpanic(fmt.Sprintf(\"triegen: non-zero value for invalid rune %U\", r))\n\t}\n\tif len(s) == 1 {\n\t\t// It is a root node value (ASCII).\n\t\tt.root.values[s[0]] = value\n\t\treturn\n\t}\n\n\tn := t.root\n\tfor ; len(s) > 1; s = s[1:] {\n\t\tif n.children == nil {\n\t\t\tn.children = make([]*node, blockSize)\n\t\t}\n\t\tp := s[0] % blockSize\n\t\tc := n.children[p]\n\t\tif c == nil {\n\t\t\tc = &node{}\n\t\t\tn.children[p] = c\n\t\t}\n\t\tif len(s) > 2 && c.values != nil {\n\t\t\tlog.Fatalf(\"triegen: insert(%U): found internal node with values\", r)\n\t\t}\n\t\tn = c\n\t}\n\tif n.values == nil {\n\t\tn.values = make([]uint64, blockSize)\n\t}\n\tif n.children != nil {\n\t\tlog.Fatalf(\"triegen: insert(%U): found leaf node that also has child nodes\", r)\n\t}\n\tn.values[s[0]-0x80] = value\n}\n\n// Size returns the number of bytes the generated trie will take to store. It\n// needs to be exported as it is used in the templates.\nfunc (b *builder) Size() int {\n\t// Index blocks.\n\tsz := len(b.IndexBlocks) * blockSize * b.IndexSize\n\n\t// Skip the first compaction, which represents the normal value blocks, as\n\t// its totalSize does not account for the ASCII blocks, which are managed\n\t// separately.\n\tsz += len(b.ValueBlocks) * blockSize * b.ValueSize\n\tfor _, c := range b.Compactions[1:] {\n\t\tsz += c.totalSize\n\t}\n\n\t// TODO: this computation does not account for the fixed overhead of a using\n\t// a compaction, either code or data. As for data, though, the typical\n\t// overhead of data is in the order of bytes (2 bytes for cases). Further,\n\t// the savings of using a compaction should anyway be substantial for it to\n\t// be worth it.\n\n\t// For multi-root tries, we also need to account for the handles.\n\tif len(b.Trie) > 1 {\n\t\tsz += 2 * b.IndexSize * len(b.Trie)\n\t}\n\treturn sz\n}\n\nfunc (b *builder) build() {\n\t// Compute the sizes of the values.\n\tvar vmax uint64\n\tfor _, t := range b.Trie {\n\t\tvmax = maxValue(t.root, vmax)\n\t}\n\tb.ValueType, b.ValueSize = getIntType(vmax)\n\n\t// Compute all block allocations.\n\t// TODO: first compute the ASCII blocks for all tries and then the other\n\t// nodes. ASCII blocks are more restricted in placement, as they require two\n\t// blocks to be placed consecutively. Processing them first may improve\n\t// sharing (at least one zero block can be expected to be saved.)\n\tfor _, t := range b.Trie {\n\t\tb.Checksum += b.buildTrie(t)\n\t}\n\n\t// Compute the offsets for all the Compacters.\n\toffset := uint32(0)\n\tfor i := range b.Compactions {\n\t\tc := &b.Compactions[i]\n\t\tc.Offset = offset\n\t\toffset += c.maxHandle + 1\n\t\tc.Cutoff = offset\n\t}\n\n\t// Compute the sizes of indexes.\n\t// TODO: different byte positions could have different sizes. So far we have\n\t// not found a case where this is beneficial.\n\timax := uint64(b.Compactions[len(b.Compactions)-1].Cutoff)\n\tfor _, ib := range b.IndexBlocks {\n\t\tif x := uint64(ib.index.index); x > imax {\n\t\t\timax = x\n\t\t}\n\t}\n\tb.IndexType, b.IndexSize = getIntType(imax)\n}\n\nfunc maxValue(n *node, max uint64) uint64 {\n\tif n == nil {\n\t\treturn max\n\t}\n\tfor _, c := range n.children {\n\t\tmax = maxValue(c, max)\n\t}\n\tfor _, v := range n.values {\n\t\tif max < v {\n\t\t\tmax = v\n\t\t}\n\t}\n\treturn max\n}\n\nfunc getIntType(v uint64) (string, int) {\n\tswitch {\n\tcase v < 1<<8:\n\t\treturn \"uint8\", 1\n\tcase v < 1<<16:\n\t\treturn \"uint16\", 2\n\tcase v < 1<<32:\n\t\treturn \"uint32\", 4\n\t}\n\treturn \"uint64\", 8\n}\n\nconst (\n\tblockSize = 64\n\n\t// Subtract two blocks to offset 0x80, the first continuation byte.\n\tblockOffset = 2\n\n\t// Subtract three blocks to offset 0xC0, the first non-ASCII starter.\n\trootBlockOffset = 3\n)\n\nvar crcTable = crc64.MakeTable(crc64.ISO)\n\nfunc (b *builder) buildTrie(t *Trie) uint64 {\n\tn := t.root\n\n\t// Get the ASCII offset. For the first trie, the ASCII block will be at\n\t// position 0.\n\thasher := crc64.New(crcTable)\n\tbinary.Write(hasher, binary.BigEndian, n.values)\n\thash := hasher.Sum64()\n\n\tv, ok := b.asciiBlockIdx[hash]\n\tif !ok {\n\t\tv = len(b.ValueBlocks)\n\t\tb.asciiBlockIdx[hash] = v\n\n\t\tb.ValueBlocks = append(b.ValueBlocks, n.values[:blockSize], n.values[blockSize:])\n\t\tif v == 0 {\n\t\t\t// Add the zero block at position 2 so that it will be assigned a\n\t\t\t// zero reference in the lookup blocks.\n\t\t\t// TODO: always do this? This would allow us to remove a check from\n\t\t\t// the trie lookup, but at the expense of extra space. Analyze\n\t\t\t// performance for unicode/norm.\n\t\t\tb.ValueBlocks = append(b.ValueBlocks, make([]uint64, blockSize))\n\t\t}\n\t}\n\tt.ASCIIIndex = v\n\n\t// Compute remaining offsets.\n\tt.Checksum = b.computeOffsets(n, true)\n\t// We already subtracted the normal blockOffset from the index. Subtract the\n\t// difference for starter bytes.\n\tt.StarterIndex = n.index.index - (rootBlockOffset - blockOffset)\n\treturn t.Checksum\n}\n\nfunc (b *builder) computeOffsets(n *node, root bool) uint64 {\n\t// For the first trie, the root lookup block will be at position 3, which is\n\t// the offset for UTF-8 non-ASCII starter bytes.\n\tfirst := len(b.IndexBlocks) == rootBlockOffset\n\tif first {\n\t\tb.IndexBlocks = append(b.IndexBlocks, n)\n\t}\n\n\t// We special-case the cases where all values recursively are 0. This allows\n\t// for the use of a zero block to which all such values can be directed.\n\thash := uint64(0)\n\tif n.children != nil || n.values != nil {\n\t\thasher := crc64.New(crcTable)\n\t\tfor _, c := range n.children {\n\t\t\tvar v uint64\n\t\t\tif c != nil {\n\t\t\t\tv = b.computeOffsets(c, false)\n\t\t\t}\n\t\t\tbinary.Write(hasher, binary.BigEndian, v)\n\t\t}\n\t\tbinary.Write(hasher, binary.BigEndian, n.values)\n\t\thash = hasher.Sum64()\n\t}\n\n\tif first {\n\t\tb.indexBlockIdx[hash] = rootBlockOffset - blockOffset\n\t}\n\n\t// Compacters don't apply to internal nodes.\n\tif n.children != nil {\n\t\tv, ok := b.indexBlockIdx[hash]\n\t\tif !ok {\n\t\t\tv = len(b.IndexBlocks) - blockOffset\n\t\t\tb.IndexBlocks = append(b.IndexBlocks, n)\n\t\t\tb.indexBlockIdx[hash] = v\n\t\t}\n\t\tn.index = nodeIndex{0, v}\n\t} else {\n\t\th, ok := b.valueBlockIdx[hash]\n\t\tif !ok {\n\t\t\tbestI, bestSize := 0, blockSize*b.ValueSize\n\t\t\tfor i, c := range b.Compactions[1:] {\n\t\t\t\tif sz, ok := c.c.Size(n.values); ok && bestSize > sz {\n\t\t\t\t\tbestI, bestSize = i+1, sz\n\t\t\t\t}\n\t\t\t}\n\t\t\tc := &b.Compactions[bestI]\n\t\t\tc.totalSize += bestSize\n\t\t\tv := c.c.Store(n.values)\n\t\t\tif c.maxHandle < v {\n\t\t\t\tc.maxHandle = v\n\t\t\t}\n\t\t\th = nodeIndex{bestI, int(v)}\n\t\t\tb.valueBlockIdx[hash] = h\n\t\t}\n\t\tn.index = h\n\t}\n\treturn hash\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/internal/ucd/ucd.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package ucd provides a parser for Unicode Character Database files, the\n// format of which is defined in http://www.unicode.org/reports/tr44/. See\n// http://www.unicode.org/Public/UCD/latest/ucd/ for example files.\n//\n// It currently does not support substitutions of missing fields.\npackage ucd // import \"golang.org/x/text/internal/ucd\"\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// UnicodeData.txt fields.\nconst (\n\tCodePoint = iota\n\tName\n\tGeneralCategory\n\tCanonicalCombiningClass\n\tBidiClass\n\tDecompMapping\n\tDecimalValue\n\tDigitValue\n\tNumericValue\n\tBidiMirrored\n\tUnicode1Name\n\tISOComment\n\tSimpleUppercaseMapping\n\tSimpleLowercaseMapping\n\tSimpleTitlecaseMapping\n)\n\n// Parse calls f for each entry in the given reader of a UCD file. It will close\n// the reader upon return. It will call log.Fatal if any error occurred.\n//\n// This implements the most common usage pattern of using Parser.\nfunc Parse(r io.ReadCloser, f func(p *Parser)) {\n\tdefer r.Close()\n\n\tp := New(r)\n\tfor p.Next() {\n\t\tf(p)\n\t}\n\tif err := p.Err(); err != nil {\n\t\tr.Close() // os.Exit will cause defers not to be called.\n\t\tlog.Fatal(err)\n\t}\n}\n\n// An Option is used to configure a Parser.\ntype Option func(p *Parser)\n\nfunc keepRanges(p *Parser) {\n\tp.keepRanges = true\n}\n\nvar (\n\t// KeepRanges prevents the expansion of ranges. The raw ranges can be\n\t// obtained by calling Range(0) on the parser.\n\tKeepRanges Option = keepRanges\n)\n\n// The Part option register a handler for lines starting with a '@'. The text\n// after a '@' is available as the first field. Comments are handled as usual.\nfunc Part(f func(p *Parser)) Option {\n\treturn func(p *Parser) {\n\t\tp.partHandler = f\n\t}\n}\n\n// The CommentHandler option passes comments that are on a line by itself to\n// a given handler.\nfunc CommentHandler(f func(s string)) Option {\n\treturn func(p *Parser) {\n\t\tp.commentHandler = f\n\t}\n}\n\n// A Parser parses Unicode Character Database (UCD) files.\ntype Parser struct {\n\tscanner *bufio.Scanner\n\n\tkeepRanges bool // Don't expand rune ranges in field 0.\n\n\terr     error\n\tcomment string\n\tfield   []string\n\t// parsedRange is needed in case Range(0) is called more than once for one\n\t// field. In some cases this requires scanning ahead.\n\tline                 int\n\tparsedRange          bool\n\trangeStart, rangeEnd rune\n\n\tpartHandler    func(p *Parser)\n\tcommentHandler func(s string)\n}\n\nfunc (p *Parser) setError(err error, msg string) {\n\tif p.err == nil && err != nil {\n\t\tif msg == \"\" {\n\t\t\tp.err = fmt.Errorf(\"ucd:line:%d: %v\", p.line, err)\n\t\t} else {\n\t\t\tp.err = fmt.Errorf(\"ucd:line:%d:%s: %v\", p.line, msg, err)\n\t\t}\n\t}\n}\n\nfunc (p *Parser) getField(i int) string {\n\tif i >= len(p.field) {\n\t\treturn \"\"\n\t}\n\treturn p.field[i]\n}\n\n// Err returns a non-nil error if any error occurred during parsing.\nfunc (p *Parser) Err() error {\n\treturn p.err\n}\n\n// New returns a Parser for the given Reader.\nfunc New(r io.Reader, o ...Option) *Parser {\n\tp := &Parser{\n\t\tscanner: bufio.NewScanner(r),\n\t}\n\tfor _, f := range o {\n\t\tf(p)\n\t}\n\treturn p\n}\n\n// Next parses the next line in the file. It returns true if a line was parsed\n// and false if it reached the end of the file.\nfunc (p *Parser) Next() bool {\n\tif !p.keepRanges && p.rangeStart < p.rangeEnd {\n\t\tp.rangeStart++\n\t\treturn true\n\t}\n\tp.comment = \"\"\n\tp.field = p.field[:0]\n\tp.parsedRange = false\n\n\tfor p.scanner.Scan() && p.err == nil {\n\t\tp.line++\n\t\ts := p.scanner.Text()\n\t\tif s == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif s[0] == '#' {\n\t\t\tif p.commentHandler != nil {\n\t\t\t\tp.commentHandler(strings.TrimSpace(s[1:]))\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Parse line\n\t\tif i := strings.IndexByte(s, '#'); i != -1 {\n\t\t\tp.comment = strings.TrimSpace(s[i+1:])\n\t\t\ts = s[:i]\n\t\t}\n\t\tif s[0] == '@' {\n\t\t\tif p.partHandler != nil {\n\t\t\t\tp.field = append(p.field, strings.TrimSpace(s[1:]))\n\t\t\t\tp.partHandler(p)\n\t\t\t\tp.field = p.field[:0]\n\t\t\t}\n\t\t\tp.comment = \"\"\n\t\t\tcontinue\n\t\t}\n\t\tfor {\n\t\t\ti := strings.IndexByte(s, ';')\n\t\t\tif i == -1 {\n\t\t\t\tp.field = append(p.field, strings.TrimSpace(s))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp.field = append(p.field, strings.TrimSpace(s[:i]))\n\t\t\ts = s[i+1:]\n\t\t}\n\t\tif !p.keepRanges {\n\t\t\tp.rangeStart, p.rangeEnd = p.getRange(0)\n\t\t}\n\t\treturn true\n\t}\n\tp.setError(p.scanner.Err(), \"scanner failed\")\n\treturn false\n}\n\nfunc parseRune(b string) (rune, error) {\n\tif len(b) > 2 && b[0] == 'U' && b[1] == '+' {\n\t\tb = b[2:]\n\t}\n\tx, err := strconv.ParseUint(b, 16, 32)\n\treturn rune(x), err\n}\n\nfunc (p *Parser) parseRune(s string) rune {\n\tx, err := parseRune(s)\n\tp.setError(err, \"failed to parse rune\")\n\treturn x\n}\n\n// Rune parses and returns field i as a rune.\nfunc (p *Parser) Rune(i int) rune {\n\tif i > 0 || p.keepRanges {\n\t\treturn p.parseRune(p.getField(i))\n\t}\n\treturn p.rangeStart\n}\n\n// Runes interprets and returns field i as a sequence of runes.\nfunc (p *Parser) Runes(i int) (runes []rune) {\n\tadd := func(s string) {\n\t\tif s = strings.TrimSpace(s); len(s) > 0 {\n\t\t\trunes = append(runes, p.parseRune(s))\n\t\t}\n\t}\n\tfor b := p.getField(i); ; {\n\t\ti := strings.IndexByte(b, ' ')\n\t\tif i == -1 {\n\t\t\tadd(b)\n\t\t\tbreak\n\t\t}\n\t\tadd(b[:i])\n\t\tb = b[i+1:]\n\t}\n\treturn\n}\n\nvar (\n\terrIncorrectLegacyRange = errors.New(\"ucd: unmatched <* First>\")\n\n\t// reRange matches one line of a legacy rune range.\n\treRange = regexp.MustCompile(\"^([0-9A-F]*);<([^,]*), ([^>]*)>(.*)$\")\n)\n\n// Range parses and returns field i as a rune range. A range is inclusive at\n// both ends. If the field only has one rune, first and last will be identical.\n// It supports the legacy format for ranges used in UnicodeData.txt.\nfunc (p *Parser) Range(i int) (first, last rune) {\n\tif !p.keepRanges {\n\t\treturn p.rangeStart, p.rangeStart\n\t}\n\treturn p.getRange(i)\n}\n\nfunc (p *Parser) getRange(i int) (first, last rune) {\n\tb := p.getField(i)\n\tif k := strings.Index(b, \"..\"); k != -1 {\n\t\treturn p.parseRune(b[:k]), p.parseRune(b[k+2:])\n\t}\n\t// The first field may not be a rune, in which case we may ignore any error\n\t// and set the range as 0..0.\n\tx, err := parseRune(b)\n\tif err != nil {\n\t\t// Disable range parsing henceforth. This ensures that an error will be\n\t\t// returned if the user subsequently will try to parse this field as\n\t\t// a Rune.\n\t\tp.keepRanges = true\n\t}\n\t// Special case for UnicodeData that was retained for backwards compatibility.\n\tif i == 0 && len(p.field) > 1 && strings.HasSuffix(p.field[1], \"First>\") {\n\t\tif p.parsedRange {\n\t\t\treturn p.rangeStart, p.rangeEnd\n\t\t}\n\t\tmf := reRange.FindStringSubmatch(p.scanner.Text())\n\t\tp.line++\n\t\tif mf == nil || !p.scanner.Scan() {\n\t\t\tp.setError(errIncorrectLegacyRange, \"\")\n\t\t\treturn x, x\n\t\t}\n\t\t// Using Bytes would be more efficient here, but Text is a lot easier\n\t\t// and this is not a frequent case.\n\t\tml := reRange.FindStringSubmatch(p.scanner.Text())\n\t\tif ml == nil || mf[2] != ml[2] || ml[3] != \"Last\" || mf[4] != ml[4] {\n\t\t\tp.setError(errIncorrectLegacyRange, \"\")\n\t\t\treturn x, x\n\t\t}\n\t\tp.rangeStart, p.rangeEnd = x, p.parseRune(p.scanner.Text()[:len(ml[1])])\n\t\tp.parsedRange = true\n\t\treturn p.rangeStart, p.rangeEnd\n\t}\n\treturn x, x\n}\n\n// bools recognizes all valid UCD boolean values.\nvar bools = map[string]bool{\n\t\"\":      false,\n\t\"N\":     false,\n\t\"No\":    false,\n\t\"F\":     false,\n\t\"False\": false,\n\t\"Y\":     true,\n\t\"Yes\":   true,\n\t\"T\":     true,\n\t\"True\":  true,\n}\n\n// Bool parses and returns field i as a boolean value.\nfunc (p *Parser) Bool(i int) bool {\n\tf := p.getField(i)\n\tfor s, v := range bools {\n\t\tif f == s {\n\t\t\treturn v\n\t\t}\n\t}\n\tp.setError(strconv.ErrSyntax, \"error parsing bool\")\n\treturn false\n}\n\n// Int parses and returns field i as an integer value.\nfunc (p *Parser) Int(i int) int {\n\tx, err := strconv.ParseInt(string(p.getField(i)), 10, 64)\n\tp.setError(err, \"error parsing int\")\n\treturn int(x)\n}\n\n// Uint parses and returns field i as an unsigned integer value.\nfunc (p *Parser) Uint(i int) uint {\n\tx, err := strconv.ParseUint(string(p.getField(i)), 10, 64)\n\tp.setError(err, \"error parsing uint\")\n\treturn uint(x)\n}\n\n// Float parses and returns field i as a decimal value.\nfunc (p *Parser) Float(i int) float64 {\n\tx, err := strconv.ParseFloat(string(p.getField(i)), 64)\n\tp.setError(err, \"error parsing float\")\n\treturn x\n}\n\n// String parses and returns field i as a string value.\nfunc (p *Parser) String(i int) string {\n\treturn string(p.getField(i))\n}\n\n// Strings parses and returns field i as a space-separated list of strings.\nfunc (p *Parser) Strings(i int) []string {\n\tss := strings.Split(string(p.getField(i)), \" \")\n\tfor i, s := range ss {\n\t\tss[i] = strings.TrimSpace(s)\n\t}\n\treturn ss\n}\n\n// Comment returns the comments for the current line.\nfunc (p *Parser) Comment() string {\n\treturn string(p.comment)\n}\n\nvar errUndefinedEnum = errors.New(\"ucd: undefined enum value\")\n\n// Enum interprets and returns field i as a value that must be one of the values\n// in enum.\nfunc (p *Parser) Enum(i int, enum ...string) string {\n\tf := p.getField(i)\n\tfor _, s := range enum {\n\t\tif f == s {\n\t\t\treturn s\n\t\t}\n\t}\n\tp.setError(errUndefinedEnum, \"error parsing enum\")\n\treturn \"\"\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/Makefile",
    "content": "# Copyright 2013 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nCLEANFILES+=maketables\n\nmaketables: maketables.go\n\tgo build $^\n\ntables:\tmaketables\n\t./maketables > tables.go\n\tgofmt -w -s tables.go\n\n# Build (but do not run) maketables during testing,\n# just to make sure it still compiles.\ntestshort: maketables\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/common.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage language\n\n// This file contains code common to the maketables.go and the package code.\n\n// langAliasType is the type of an alias in langAliasMap.\ntype langAliasType int8\n\nconst (\n\tlangDeprecated langAliasType = iota\n\tlangMacro\n\tlangLegacy\n\n\tlangAliasTypeUnknown langAliasType = -1\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/coverage.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// The Coverage interface is used to define the level of coverage of an\n// internationalization service. Note that not all types are supported by all\n// services. As lists may be generated on the fly, it is recommended that users\n// of a Coverage cache the results.\ntype Coverage interface {\n\t// Tags returns the list of supported tags.\n\tTags() []Tag\n\n\t// BaseLanguages returns the list of supported base languages.\n\tBaseLanguages() []Base\n\n\t// Scripts returns the list of supported scripts.\n\tScripts() []Script\n\n\t// Regions returns the list of supported regions.\n\tRegions() []Region\n}\n\nvar (\n\t// Supported defines a Coverage that lists all supported subtags. Tags\n\t// always returns nil.\n\tSupported Coverage = allSubtags{}\n)\n\n// TODO:\n// - Support Variants, numbering systems.\n// - CLDR coverage levels.\n// - Set of common tags defined in this package.\n\ntype allSubtags struct{}\n\n// Regions returns the list of supported regions. As all regions are in a\n// consecutive range, it simply returns a slice of numbers in increasing order.\n// The \"undefined\" region is not returned.\nfunc (s allSubtags) Regions() []Region {\n\treg := make([]Region, numRegions)\n\tfor i := range reg {\n\t\treg[i] = Region{regionID(i + 1)}\n\t}\n\treturn reg\n}\n\n// Scripts returns the list of supported scripts. As all scripts are in a\n// consecutive range, it simply returns a slice of numbers in increasing order.\n// The \"undefined\" script is not returned.\nfunc (s allSubtags) Scripts() []Script {\n\tscr := make([]Script, numScripts)\n\tfor i := range scr {\n\t\tscr[i] = Script{scriptID(i + 1)}\n\t}\n\treturn scr\n}\n\n// BaseLanguages returns the list of all supported base languages. It generates\n// the list by traversing the internal structures.\nfunc (s allSubtags) BaseLanguages() []Base {\n\tbase := make([]Base, 0, numLanguages)\n\tfor i := 0; i < langNoIndexOffset; i++ {\n\t\t// We included \"und\" already for the value 0.\n\t\tif i != nonCanonicalUnd {\n\t\t\tbase = append(base, Base{langID(i)})\n\t\t}\n\t}\n\ti := langNoIndexOffset\n\tfor _, v := range langNoIndex {\n\t\tfor k := 0; k < 8; k++ {\n\t\t\tif v&1 == 1 {\n\t\t\t\tbase = append(base, Base{langID(i)})\n\t\t\t}\n\t\t\tv >>= 1\n\t\t\ti++\n\t\t}\n\t}\n\treturn base\n}\n\n// Tags always returns nil.\nfunc (s allSubtags) Tags() []Tag {\n\treturn nil\n}\n\n// coverage is used used by NewCoverage which is used as a convenient way for\n// creating Coverage implementations for partially defined data. Very often a\n// package will only need to define a subset of slices. coverage provides a\n// convenient way to do this. Moreover, packages using NewCoverage, instead of\n// their own implementation, will not break if later new slice types are added.\ntype coverage struct {\n\ttags    func() []Tag\n\tbases   func() []Base\n\tscripts func() []Script\n\tregions func() []Region\n}\n\nfunc (s *coverage) Tags() []Tag {\n\tif s.tags == nil {\n\t\treturn nil\n\t}\n\treturn s.tags()\n}\n\n// bases implements sort.Interface and is used to sort base languages.\ntype bases []Base\n\nfunc (b bases) Len() int {\n\treturn len(b)\n}\n\nfunc (b bases) Swap(i, j int) {\n\tb[i], b[j] = b[j], b[i]\n}\n\nfunc (b bases) Less(i, j int) bool {\n\treturn b[i].langID < b[j].langID\n}\n\n// BaseLanguages returns the result from calling s.bases if it is specified or\n// otherwise derives the set of supported base languages from tags.\nfunc (s *coverage) BaseLanguages() []Base {\n\tif s.bases == nil {\n\t\ttags := s.Tags()\n\t\tif len(tags) == 0 {\n\t\t\treturn nil\n\t\t}\n\t\ta := make([]Base, len(tags))\n\t\tfor i, t := range tags {\n\t\t\ta[i] = Base{langID(t.lang)}\n\t\t}\n\t\tsort.Sort(bases(a))\n\t\tk := 0\n\t\tfor i := 1; i < len(a); i++ {\n\t\t\tif a[k] != a[i] {\n\t\t\t\tk++\n\t\t\t\ta[k] = a[i]\n\t\t\t}\n\t\t}\n\t\treturn a[:k+1]\n\t}\n\treturn s.bases()\n}\n\nfunc (s *coverage) Scripts() []Script {\n\tif s.scripts == nil {\n\t\treturn nil\n\t}\n\treturn s.scripts()\n}\n\nfunc (s *coverage) Regions() []Region {\n\tif s.regions == nil {\n\t\treturn nil\n\t}\n\treturn s.regions()\n}\n\n// NewCoverage returns a Coverage for the given lists. It is typically used by\n// packages providing internationalization services to define their level of\n// coverage. A list may be of type []T or func() []T, where T is either Tag,\n// Base, Script or Region. The returned Coverage derives the value for Bases\n// from Tags if no func or slice for []Base is specified. For other unspecified\n// types the returned Coverage will return nil for the respective methods.\nfunc NewCoverage(list ...interface{}) Coverage {\n\ts := &coverage{}\n\tfor _, x := range list {\n\t\tswitch v := x.(type) {\n\t\tcase func() []Base:\n\t\t\ts.bases = v\n\t\tcase func() []Script:\n\t\t\ts.scripts = v\n\t\tcase func() []Region:\n\t\t\ts.regions = v\n\t\tcase func() []Tag:\n\t\t\ts.tags = v\n\t\tcase []Base:\n\t\t\ts.bases = func() []Base { return v }\n\t\tcase []Script:\n\t\t\ts.scripts = func() []Script { return v }\n\t\tcase []Region:\n\t\t\ts.regions = func() []Region { return v }\n\t\tcase []Tag:\n\t\t\ts.tags = func() []Tag { return v }\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"language: unsupported set type %T\", v))\n\t\t}\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/doc.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package language implements BCP 47 language tags and related functionality.\n//\n// The most important function of package language is to match a list of\n// user-preferred languages to a list of supported languages.\n// It alleviates the developer of dealing with the complexity of this process\n// and provides the user with the best experience\n// (see https://blog.golang.org/matchlang).\n//\n//\n// Matching preferred against supported languages\n//\n// A Matcher for an application that supports English, Australian English,\n// Danish, and standard Mandarin can be created as follows:\n//\n//    var matcher = language.NewMatcher([]language.Tag{\n//        language.English,   // The first language is used as fallback.\n//        language.MustParse(\"en-AU\"),\n//        language.Danish,\n//        language.Chinese,\n//    })\n//\n// This list of supported languages is typically implied by the languages for\n// which there exists translations of the user interface.\n//\n// User-preferred languages usually come as a comma-separated list of BCP 47\n// language tags.\n// The MatchString finds best matches for such strings:\n//\n//    handler(w http.ResponseWriter, r *http.Request) {\n//        lang, _ := r.Cookie(\"lang\")\n//        accept := r.Header.Get(\"Accept-Language\")\n//        tag, _ := language.MatchStrings(matcher, lang.String(), accept)\n//\n//        // tag should now be used for the initialization of any\n//        // locale-specific service.\n//    }\n//\n// The Matcher's Match method can be used to match Tags directly.\n//\n// Matchers are aware of the intricacies of equivalence between languages, such\n// as deprecated subtags, legacy tags, macro languages, mutual\n// intelligibility between scripts and languages, and transparently passing\n// BCP 47 user configuration.\n// For instance, it will know that a reader of Bokmål Danish can read Norwegian\n// and will know that Cantonese (\"yue\") is a good match for \"zh-HK\".\n//\n//\n// Using match results\n//\n// To guarantee a consistent user experience to the user it is important to\n// use the same language tag for the selection of any locale-specific services.\n// For example, it is utterly confusing to substitute spelled-out numbers\n// or dates in one language in text of another language.\n// More subtly confusing is using the wrong sorting order or casing\n// algorithm for a certain language.\n//\n//    All the packages in x/text that provide locale-specific services\n//    (e.g. collate, cases) should be initialized with the tag that was\n//    obtained at the start of an interaction with the user.\n//\n// Note that Tag that is returned by Match and MatchString may differ from any\n// of the supported languages, as it may contain carried over settings from\n// the user tags.\n// This may be inconvenient when your application has some additional\n// locale-specific data for your supported languages.\n// Match and MatchString both return the index of the matched supported tag\n// to simplify associating such data with the matched tag.\n//\n//\n// Canonicalization\n//\n// If one uses the Matcher to compare languages one does not need to\n// worry about canonicalization.\n//\n// The meaning of a Tag varies per application. The language package\n// therefore delays canonicalization and preserves information as much\n// as possible. The Matcher, however, will always take into account that\n// two different tags may represent the same language.\n//\n// By default, only legacy and deprecated tags are converted into their\n// canonical equivalent. All other information is preserved. This approach makes\n// the confidence scores more accurate and allows matchers to distinguish\n// between variants that are otherwise lost.\n//\n// As a consequence, two tags that should be treated as identical according to\n// BCP 47 or CLDR, like \"en-Latn\" and \"en\", will be represented differently. The\n// Matcher handles such distinctions, though, and is aware of the\n// equivalence relations. The CanonType type can be used to alter the\n// canonicalization form.\n//\n// References\n//\n// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47\n//\npackage language // import \"golang.org/x/text/language\"\n\n// TODO: explanation on how to match languages for your own locale-specific\n// service.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/gen.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n// Language tag table generator.\n// Data read from the web.\n\npackage main\n\nimport (\n\t\"bufio\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"math\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/internal/tag\"\n\t\"golang.org/x/text/unicode/cldr\"\n)\n\nvar (\n\ttest = flag.Bool(\"test\",\n\t\tfalse,\n\t\t\"test existing tables; can be used to compare web data with package data.\")\n\toutputFile = flag.String(\"output\",\n\t\t\"tables.go\",\n\t\t\"output file for generated tables\")\n)\n\nvar comment = []string{\n\t`\nlang holds an alphabetically sorted list of ISO-639 language identifiers.\nAll entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.\nFor 2-byte language identifiers, the two successive bytes have the following meaning:\n    - if the first letter of the 2- and 3-letter ISO codes are the same:\n      the second and third letter of the 3-letter ISO code.\n    - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.\nFor 3-byte language identifiers the 4th byte is 0.`,\n\t`\nlangNoIndex is a bit vector of all 3-letter language codes that are not used as an index\nin lookup tables. The language ids for these language codes are derived directly\nfrom the letters and are not consecutive.`,\n\t`\naltLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives\nto 2-letter language codes that cannot be derived using the method described above.\nEach 3-letter code is followed by its 1-byte langID.`,\n\t`\naltLangIndex is used to convert indexes in altLangISO3 to langIDs.`,\n\t`\nlangAliasMap maps langIDs to their suggested replacements.`,\n\t`\nscript is an alphabetically sorted list of ISO 15924 codes. The index\nof the script in the string, divided by 4, is the internal scriptID.`,\n\t`\nisoRegionOffset needs to be added to the index of regionISO to obtain the regionID\nfor 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for\nthe UN.M49 codes used for groups.)`,\n\t`\nregionISO holds a list of alphabetically sorted 2-letter ISO region codes.\nEach 2-letter codes is followed by two bytes with the following meaning:\n    - [A-Z}{2}: the first letter of the 2-letter code plus these two \n                letters form the 3-letter ISO code.\n    - 0, n:     index into altRegionISO3.`,\n\t`\nregionTypes defines the status of a region for various standards.`,\n\t`\nm49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are\ncodes indicating collections of regions.`,\n\t`\nm49Index gives indexes into fromM49 based on the three most significant bits\nof a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in\n   fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]]\nfor an entry where the first 7 bits match the 7 lsb of the UN.M49 code.\nThe region code is stored in the 9 lsb of the indexed value.`,\n\t`\nfromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.`,\n\t`\naltRegionISO3 holds a list of 3-letter region codes that cannot be\nmapped to 2-letter codes using the default algorithm. This is a short list.`,\n\t`\naltRegionIDs holds a list of regionIDs the positions of which match those\nof the 3-letter ISO codes in altRegionISO3.`,\n\t`\nvariantNumSpecialized is the number of specialized variants in variants.`,\n\t`\nsuppressScript is an index from langID to the dominant script for that language,\nif it exists.  If a script is given, it should be suppressed from the language tag.`,\n\t`\nlikelyLang is a lookup table, indexed by langID, for the most likely\nscripts and regions given incomplete information. If more entries exist for a\ngiven language, region and script are the index and size respectively\nof the list in likelyLangList.`,\n\t`\nlikelyLangList holds lists info associated with likelyLang.`,\n\t`\nlikelyRegion is a lookup table, indexed by regionID, for the most likely\nlanguages and scripts given incomplete information. If more entries exist\nfor a given regionID, lang and script are the index and size respectively\nof the list in likelyRegionList.\nTODO: exclude containers and user-definable regions from the list.`,\n\t`\nlikelyRegionList holds lists info associated with likelyRegion.`,\n\t`\nlikelyScript is a lookup table, indexed by scriptID, for the most likely\nlanguages and regions given a script.`,\n\t`\nmatchLang holds pairs of langIDs of base languages that are typically\nmutually intelligible. Each pair is associated with a confidence and\nwhether the intelligibility goes one or both ways.`,\n\t`\nmatchScript holds pairs of scriptIDs where readers of one script\ncan typically also read the other. Each is associated with a confidence.`,\n\t`\nnRegionGroups is the number of region groups.`,\n\t`\nregionInclusion maps region identifiers to sets of regions in regionInclusionBits,\nwhere each set holds all groupings that are directly connected in a region\ncontainment graph.`,\n\t`\nregionInclusionBits is an array of bit vectors where every vector represents\na set of region groupings.  These sets are used to compute the distance\nbetween two regions for the purpose of language matching.`,\n\t`\nregionInclusionNext marks, for each entry in regionInclusionBits, the set of\nall groups that are reachable from the groups set in the respective entry.`,\n}\n\n// TODO: consider changing some of these structures to tries. This can reduce\n// memory, but may increase the need for memory allocations. This could be\n// mitigated if we can piggyback on language tags for common cases.\n\nfunc failOnError(e error) {\n\tif e != nil {\n\t\tlog.Panic(e)\n\t}\n}\n\ntype setType int\n\nconst (\n\tIndexed setType = 1 + iota // all elements must be of same size\n\tLinear\n)\n\ntype stringSet struct {\n\ts              []string\n\tsorted, frozen bool\n\n\t// We often need to update values after the creation of an index is completed.\n\t// We include a convenience map for keeping track of this.\n\tupdate map[string]string\n\ttyp    setType // used for checking.\n}\n\nfunc (ss *stringSet) clone() stringSet {\n\tc := *ss\n\tc.s = append([]string(nil), c.s...)\n\treturn c\n}\n\nfunc (ss *stringSet) setType(t setType) {\n\tif ss.typ != t && ss.typ != 0 {\n\t\tlog.Panicf(\"type %d cannot be assigned as it was already %d\", t, ss.typ)\n\t}\n}\n\n// parse parses a whitespace-separated string and initializes ss with its\n// components.\nfunc (ss *stringSet) parse(s string) {\n\tscan := bufio.NewScanner(strings.NewReader(s))\n\tscan.Split(bufio.ScanWords)\n\tfor scan.Scan() {\n\t\tss.add(scan.Text())\n\t}\n}\n\nfunc (ss *stringSet) assertChangeable() {\n\tif ss.frozen {\n\t\tlog.Panic(\"attempt to modify a frozen stringSet\")\n\t}\n}\n\nfunc (ss *stringSet) add(s string) {\n\tss.assertChangeable()\n\tss.s = append(ss.s, s)\n\tss.sorted = ss.frozen\n}\n\nfunc (ss *stringSet) freeze() {\n\tss.compact()\n\tss.frozen = true\n}\n\nfunc (ss *stringSet) compact() {\n\tif ss.sorted {\n\t\treturn\n\t}\n\ta := ss.s\n\tsort.Strings(a)\n\tk := 0\n\tfor i := 1; i < len(a); i++ {\n\t\tif a[k] != a[i] {\n\t\t\ta[k+1] = a[i]\n\t\t\tk++\n\t\t}\n\t}\n\tss.s = a[:k+1]\n\tss.sorted = ss.frozen\n}\n\ntype funcSorter struct {\n\tfn func(a, b string) bool\n\tsort.StringSlice\n}\n\nfunc (s funcSorter) Less(i, j int) bool {\n\treturn s.fn(s.StringSlice[i], s.StringSlice[j])\n}\n\nfunc (ss *stringSet) sortFunc(f func(a, b string) bool) {\n\tss.compact()\n\tsort.Sort(funcSorter{f, sort.StringSlice(ss.s)})\n}\n\nfunc (ss *stringSet) remove(s string) {\n\tss.assertChangeable()\n\tif i, ok := ss.find(s); ok {\n\t\tcopy(ss.s[i:], ss.s[i+1:])\n\t\tss.s = ss.s[:len(ss.s)-1]\n\t}\n}\n\nfunc (ss *stringSet) replace(ol, nu string) {\n\tss.s[ss.index(ol)] = nu\n\tss.sorted = ss.frozen\n}\n\nfunc (ss *stringSet) index(s string) int {\n\tss.setType(Indexed)\n\ti, ok := ss.find(s)\n\tif !ok {\n\t\tif i < len(ss.s) {\n\t\t\tlog.Panicf(\"find: item %q is not in list. Closest match is %q.\", s, ss.s[i])\n\t\t}\n\t\tlog.Panicf(\"find: item %q is not in list\", s)\n\n\t}\n\treturn i\n}\n\nfunc (ss *stringSet) find(s string) (int, bool) {\n\tss.compact()\n\ti := sort.SearchStrings(ss.s, s)\n\treturn i, i != len(ss.s) && ss.s[i] == s\n}\n\nfunc (ss *stringSet) slice() []string {\n\tss.compact()\n\treturn ss.s\n}\n\nfunc (ss *stringSet) updateLater(v, key string) {\n\tif ss.update == nil {\n\t\tss.update = map[string]string{}\n\t}\n\tss.update[v] = key\n}\n\n// join joins the string and ensures that all entries are of the same length.\nfunc (ss *stringSet) join() string {\n\tss.setType(Indexed)\n\tn := len(ss.s[0])\n\tfor _, s := range ss.s {\n\t\tif len(s) != n {\n\t\t\tlog.Panicf(\"join: not all entries are of the same length: %q\", s)\n\t\t}\n\t}\n\tss.s = append(ss.s, strings.Repeat(\"\\xff\", n))\n\treturn strings.Join(ss.s, \"\")\n}\n\n// ianaEntry holds information for an entry in the IANA Language Subtag Repository.\n// All types use the same entry.\n// See http://tools.ietf.org/html/bcp47#section-5.1 for a description of the various\n// fields.\ntype ianaEntry struct {\n\ttyp            string\n\tdescription    []string\n\tscope          string\n\tadded          string\n\tpreferred      string\n\tdeprecated     string\n\tsuppressScript string\n\tmacro          string\n\tprefix         []string\n}\n\ntype builder struct {\n\tw    *gen.CodeWriter\n\thw   io.Writer // MultiWriter for w and w.Hash\n\tdata *cldr.CLDR\n\tsupp *cldr.SupplementalData\n\n\t// indices\n\tlocale      stringSet // common locales\n\tlang        stringSet // canonical language ids (2 or 3 letter ISO codes) with data\n\tlangNoIndex stringSet // 3-letter ISO codes with no associated data\n\tscript      stringSet // 4-letter ISO codes\n\tregion      stringSet // 2-letter ISO or 3-digit UN M49 codes\n\tvariant     stringSet // 4-8-alphanumeric variant code.\n\n\t// Region codes that are groups with their corresponding group IDs.\n\tgroups map[int]index\n\n\t// langInfo\n\tregistry map[string]*ianaEntry\n}\n\ntype index uint\n\nfunc newBuilder(w *gen.CodeWriter) *builder {\n\tr := gen.OpenCLDRCoreZip()\n\tdefer r.Close()\n\td := &cldr.Decoder{}\n\tdata, err := d.DecodeZip(r)\n\tfailOnError(err)\n\tb := builder{\n\t\tw:    w,\n\t\thw:   io.MultiWriter(w, w.Hash),\n\t\tdata: data,\n\t\tsupp: data.Supplemental(),\n\t}\n\tb.parseRegistry()\n\treturn &b\n}\n\nfunc (b *builder) parseRegistry() {\n\tr := gen.OpenIANAFile(\"assignments/language-subtag-registry\")\n\tdefer r.Close()\n\tb.registry = make(map[string]*ianaEntry)\n\n\tscan := bufio.NewScanner(r)\n\tscan.Split(bufio.ScanWords)\n\tvar record *ianaEntry\n\tfor more := scan.Scan(); more; {\n\t\tkey := scan.Text()\n\t\tmore = scan.Scan()\n\t\tvalue := scan.Text()\n\t\tswitch key {\n\t\tcase \"Type:\":\n\t\t\trecord = &ianaEntry{typ: value}\n\t\tcase \"Subtag:\", \"Tag:\":\n\t\t\tif s := strings.SplitN(value, \"..\", 2); len(s) > 1 {\n\t\t\t\tfor a := s[0]; a <= s[1]; a = inc(a) {\n\t\t\t\t\tb.addToRegistry(a, record)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tb.addToRegistry(value, record)\n\t\t\t}\n\t\tcase \"Suppress-Script:\":\n\t\t\trecord.suppressScript = value\n\t\tcase \"Added:\":\n\t\t\trecord.added = value\n\t\tcase \"Deprecated:\":\n\t\t\trecord.deprecated = value\n\t\tcase \"Macrolanguage:\":\n\t\t\trecord.macro = value\n\t\tcase \"Preferred-Value:\":\n\t\t\trecord.preferred = value\n\t\tcase \"Prefix:\":\n\t\t\trecord.prefix = append(record.prefix, value)\n\t\tcase \"Scope:\":\n\t\t\trecord.scope = value\n\t\tcase \"Description:\":\n\t\t\tbuf := []byte(value)\n\t\t\tfor more = scan.Scan(); more; more = scan.Scan() {\n\t\t\t\tb := scan.Bytes()\n\t\t\t\tif b[0] == '%' || b[len(b)-1] == ':' {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tbuf = append(buf, ' ')\n\t\t\t\tbuf = append(buf, b...)\n\t\t\t}\n\t\t\trecord.description = append(record.description, string(buf))\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\t\tmore = scan.Scan()\n\t}\n\tif scan.Err() != nil {\n\t\tlog.Panic(scan.Err())\n\t}\n}\n\nfunc (b *builder) addToRegistry(key string, entry *ianaEntry) {\n\tif info, ok := b.registry[key]; ok {\n\t\tif info.typ != \"language\" || entry.typ != \"extlang\" {\n\t\t\tlog.Fatalf(\"parseRegistry: tag %q already exists\", key)\n\t\t}\n\t} else {\n\t\tb.registry[key] = entry\n\t}\n}\n\nvar commentIndex = make(map[string]string)\n\nfunc init() {\n\tfor _, s := range comment {\n\t\tkey := strings.TrimSpace(strings.SplitN(s, \" \", 2)[0])\n\t\tcommentIndex[key] = s\n\t}\n}\n\nfunc (b *builder) comment(name string) {\n\tif s := commentIndex[name]; len(s) > 0 {\n\t\tb.w.WriteComment(s)\n\t} else {\n\t\tfmt.Fprintln(b.w)\n\t}\n}\n\nfunc (b *builder) pf(f string, x ...interface{}) {\n\tfmt.Fprintf(b.hw, f, x...)\n\tfmt.Fprint(b.hw, \"\\n\")\n}\n\nfunc (b *builder) p(x ...interface{}) {\n\tfmt.Fprintln(b.hw, x...)\n}\n\nfunc (b *builder) addSize(s int) {\n\tb.w.Size += s\n\tb.pf(\"// Size: %d bytes\", s)\n}\n\nfunc (b *builder) writeConst(name string, x interface{}) {\n\tb.comment(name)\n\tb.w.WriteConst(name, x)\n}\n\n// writeConsts computes f(v) for all v in values and writes the results\n// as constants named _v to a single constant block.\nfunc (b *builder) writeConsts(f func(string) int, values ...string) {\n\tb.pf(\"const (\")\n\tfor _, v := range values {\n\t\tb.pf(\"\\t_%s = %v\", v, f(v))\n\t}\n\tb.pf(\")\")\n}\n\n// writeType writes the type of the given value, which must be a struct.\nfunc (b *builder) writeType(value interface{}) {\n\tb.comment(reflect.TypeOf(value).Name())\n\tb.w.WriteType(value)\n}\n\nfunc (b *builder) writeSlice(name string, ss interface{}) {\n\tb.writeSliceAddSize(name, 0, ss)\n}\n\nfunc (b *builder) writeSliceAddSize(name string, extraSize int, ss interface{}) {\n\tb.comment(name)\n\tb.w.Size += extraSize\n\tv := reflect.ValueOf(ss)\n\tt := v.Type().Elem()\n\tb.pf(\"// Size: %d bytes, %d elements\", v.Len()*int(t.Size())+extraSize, v.Len())\n\n\tfmt.Fprintf(b.w, \"var %s = \", name)\n\tb.w.WriteArray(ss)\n\tb.p()\n}\n\ntype fromTo struct {\n\tfrom, to uint16\n}\n\nfunc (b *builder) writeSortedMap(name string, ss *stringSet, index func(s string) uint16) {\n\tss.sortFunc(func(a, b string) bool {\n\t\treturn index(a) < index(b)\n\t})\n\tm := []fromTo{}\n\tfor _, s := range ss.s {\n\t\tm = append(m, fromTo{index(s), index(ss.update[s])})\n\t}\n\tb.writeSlice(name, m)\n}\n\nconst base = 'z' - 'a' + 1\n\nfunc strToInt(s string) uint {\n\tv := uint(0)\n\tfor i := 0; i < len(s); i++ {\n\t\tv *= base\n\t\tv += uint(s[i] - 'a')\n\t}\n\treturn v\n}\n\n// converts the given integer to the original ASCII string passed to strToInt.\n// len(s) must match the number of characters obtained.\nfunc intToStr(v uint, s []byte) {\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\ts[i] = byte(v%base) + 'a'\n\t\tv /= base\n\t}\n}\n\nfunc (b *builder) writeBitVector(name string, ss []string) {\n\tvec := make([]uint8, int(math.Ceil(math.Pow(base, float64(len(ss[0])))/8)))\n\tfor _, s := range ss {\n\t\tv := strToInt(s)\n\t\tvec[v/8] |= 1 << (v % 8)\n\t}\n\tb.writeSlice(name, vec)\n}\n\n// TODO: convert this type into a list or two-stage trie.\nfunc (b *builder) writeMapFunc(name string, m map[string]string, f func(string) uint16) {\n\tb.comment(name)\n\tv := reflect.ValueOf(m)\n\tsz := v.Len() * (2 + int(v.Type().Key().Size()))\n\tfor _, k := range m {\n\t\tsz += len(k)\n\t}\n\tb.addSize(sz)\n\tkeys := []string{}\n\tb.pf(`var %s = map[string]uint16{`, name)\n\tfor k := range m {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\tfor _, k := range keys {\n\t\tb.pf(\"\\t%q: %v,\", k, f(m[k]))\n\t}\n\tb.p(\"}\")\n}\n\nfunc (b *builder) writeMap(name string, m interface{}) {\n\tb.comment(name)\n\tv := reflect.ValueOf(m)\n\tsz := v.Len() * (2 + int(v.Type().Key().Size()) + int(v.Type().Elem().Size()))\n\tb.addSize(sz)\n\tf := strings.FieldsFunc(fmt.Sprintf(\"%#v\", m), func(r rune) bool {\n\t\treturn strings.IndexRune(\"{}, \", r) != -1\n\t})\n\tsort.Strings(f[1:])\n\tb.pf(`var %s = %s{`, name, f[0])\n\tfor _, kv := range f[1:] {\n\t\tb.pf(\"\\t%s,\", kv)\n\t}\n\tb.p(\"}\")\n}\n\nfunc (b *builder) langIndex(s string) uint16 {\n\tif s == \"und\" {\n\t\treturn 0\n\t}\n\tif i, ok := b.lang.find(s); ok {\n\t\treturn uint16(i)\n\t}\n\treturn uint16(strToInt(s)) + uint16(len(b.lang.s))\n}\n\n// inc advances the string to its lexicographical successor.\nfunc inc(s string) string {\n\tconst maxTagLength = 4\n\tvar buf [maxTagLength]byte\n\tintToStr(strToInt(strings.ToLower(s))+1, buf[:len(s)])\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] <= 'Z' {\n\t\t\tbuf[i] -= 'a' - 'A'\n\t\t}\n\t}\n\treturn string(buf[:len(s)])\n}\n\nfunc (b *builder) parseIndices() {\n\tmeta := b.supp.Metadata\n\n\tfor k, v := range b.registry {\n\t\tvar ss *stringSet\n\t\tswitch v.typ {\n\t\tcase \"language\":\n\t\t\tif len(k) == 2 || v.suppressScript != \"\" || v.scope == \"special\" {\n\t\t\t\tb.lang.add(k)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tss = &b.langNoIndex\n\t\t\t}\n\t\tcase \"region\":\n\t\t\tss = &b.region\n\t\tcase \"script\":\n\t\t\tss = &b.script\n\t\tcase \"variant\":\n\t\t\tss = &b.variant\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\t\tss.add(k)\n\t}\n\t// Include any language for which there is data.\n\tfor _, lang := range b.data.Locales() {\n\t\tif x := b.data.RawLDML(lang); false ||\n\t\t\tx.LocaleDisplayNames != nil ||\n\t\t\tx.Characters != nil ||\n\t\t\tx.Delimiters != nil ||\n\t\t\tx.Measurement != nil ||\n\t\t\tx.Dates != nil ||\n\t\t\tx.Numbers != nil ||\n\t\t\tx.Units != nil ||\n\t\t\tx.ListPatterns != nil ||\n\t\t\tx.Collations != nil ||\n\t\t\tx.Segmentations != nil ||\n\t\t\tx.Rbnf != nil ||\n\t\t\tx.Annotations != nil ||\n\t\t\tx.Metadata != nil {\n\n\t\t\tfrom := strings.Split(lang, \"_\")\n\t\t\tif lang := from[0]; lang != \"root\" {\n\t\t\t\tb.lang.add(lang)\n\t\t\t}\n\t\t}\n\t}\n\t// Include locales for plural rules, which uses a different structure.\n\tfor _, plurals := range b.data.Supplemental().Plurals {\n\t\tfor _, rules := range plurals.PluralRules {\n\t\t\tfor _, lang := range strings.Split(rules.Locales, \" \") {\n\t\t\t\tif lang = strings.Split(lang, \"_\")[0]; lang != \"root\" {\n\t\t\t\t\tb.lang.add(lang)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Include languages in likely subtags.\n\tfor _, m := range b.supp.LikelySubtags.LikelySubtag {\n\t\tfrom := strings.Split(m.From, \"_\")\n\t\tb.lang.add(from[0])\n\t}\n\t// Include ISO-639 alpha-3 bibliographic entries.\n\tfor _, a := range meta.Alias.LanguageAlias {\n\t\tif a.Reason == \"bibliographic\" {\n\t\t\tb.langNoIndex.add(a.Type)\n\t\t}\n\t}\n\t// Include regions in territoryAlias (not all are in the IANA registry!)\n\tfor _, reg := range b.supp.Metadata.Alias.TerritoryAlias {\n\t\tif len(reg.Type) == 2 {\n\t\t\tb.region.add(reg.Type)\n\t\t}\n\t}\n\n\tfor _, s := range b.lang.s {\n\t\tif len(s) == 3 {\n\t\t\tb.langNoIndex.remove(s)\n\t\t}\n\t}\n\tb.writeConst(\"numLanguages\", len(b.lang.slice())+len(b.langNoIndex.slice()))\n\tb.writeConst(\"numScripts\", len(b.script.slice()))\n\tb.writeConst(\"numRegions\", len(b.region.slice()))\n\n\t// Add dummy codes at the start of each list to represent \"unspecified\".\n\tb.lang.add(\"---\")\n\tb.script.add(\"----\")\n\tb.region.add(\"---\")\n\n\t// common locales\n\tb.locale.parse(meta.DefaultContent.Locales)\n}\n\n// TODO: region inclusion data will probably not be use used in future matchers.\n\nfunc (b *builder) computeRegionGroups() {\n\tb.groups = make(map[int]index)\n\n\t// Create group indices.\n\tfor i := 1; b.region.s[i][0] < 'A'; i++ { // Base M49 indices on regionID.\n\t\tb.groups[i] = index(len(b.groups))\n\t}\n\tfor _, g := range b.supp.TerritoryContainment.Group {\n\t\t// Skip UN and EURO zone as they are flattening the containment\n\t\t// relationship.\n\t\tif g.Type == \"EZ\" || g.Type == \"UN\" {\n\t\t\tcontinue\n\t\t}\n\t\tgroup := b.region.index(g.Type)\n\t\tif _, ok := b.groups[group]; !ok {\n\t\t\tb.groups[group] = index(len(b.groups))\n\t\t}\n\t}\n\tif len(b.groups) > 64 {\n\t\tlog.Fatalf(\"only 64 groups supported, found %d\", len(b.groups))\n\t}\n\tb.writeConst(\"nRegionGroups\", len(b.groups))\n}\n\nvar langConsts = []string{\n\t\"af\", \"am\", \"ar\", \"az\", \"bg\", \"bn\", \"ca\", \"cs\", \"da\", \"de\", \"el\", \"en\", \"es\",\n\t\"et\", \"fa\", \"fi\", \"fil\", \"fr\", \"gu\", \"he\", \"hi\", \"hr\", \"hu\", \"hy\", \"id\", \"is\",\n\t\"it\", \"ja\", \"ka\", \"kk\", \"km\", \"kn\", \"ko\", \"ky\", \"lo\", \"lt\", \"lv\", \"mk\", \"ml\",\n\t\"mn\", \"mo\", \"mr\", \"ms\", \"mul\", \"my\", \"nb\", \"ne\", \"nl\", \"no\", \"pa\", \"pl\", \"pt\",\n\t\"ro\", \"ru\", \"sh\", \"si\", \"sk\", \"sl\", \"sq\", \"sr\", \"sv\", \"sw\", \"ta\", \"te\", \"th\",\n\t\"tl\", \"tn\", \"tr\", \"uk\", \"ur\", \"uz\", \"vi\", \"zh\", \"zu\",\n\n\t// constants for grandfathered tags (if not already defined)\n\t\"jbo\", \"ami\", \"bnn\", \"hak\", \"tlh\", \"lb\", \"nv\", \"pwn\", \"tao\", \"tay\", \"tsu\",\n\t\"nn\", \"sfb\", \"vgt\", \"sgg\", \"cmn\", \"nan\", \"hsn\",\n}\n\n// writeLanguage generates all tables needed for language canonicalization.\nfunc (b *builder) writeLanguage() {\n\tmeta := b.supp.Metadata\n\n\tb.writeConst(\"nonCanonicalUnd\", b.lang.index(\"und\"))\n\tb.writeConsts(func(s string) int { return int(b.langIndex(s)) }, langConsts...)\n\tb.writeConst(\"langPrivateStart\", b.langIndex(\"qaa\"))\n\tb.writeConst(\"langPrivateEnd\", b.langIndex(\"qtz\"))\n\n\t// Get language codes that need to be mapped (overlong 3-letter codes,\n\t// deprecated 2-letter codes, legacy and grandfathered tags.)\n\tlangAliasMap := stringSet{}\n\taliasTypeMap := map[string]langAliasType{}\n\n\t// altLangISO3 get the alternative ISO3 names that need to be mapped.\n\taltLangISO3 := stringSet{}\n\t// Add dummy start to avoid the use of index 0.\n\taltLangISO3.add(\"---\")\n\taltLangISO3.updateLater(\"---\", \"aa\")\n\n\tlang := b.lang.clone()\n\tfor _, a := range meta.Alias.LanguageAlias {\n\t\tif a.Replacement == \"\" {\n\t\t\ta.Replacement = \"und\"\n\t\t}\n\t\t// TODO: support mapping to tags\n\t\trepl := strings.SplitN(a.Replacement, \"_\", 2)[0]\n\t\tif a.Reason == \"overlong\" {\n\t\t\tif len(a.Replacement) == 2 && len(a.Type) == 3 {\n\t\t\t\tlang.updateLater(a.Replacement, a.Type)\n\t\t\t}\n\t\t} else if len(a.Type) <= 3 {\n\t\t\tswitch a.Reason {\n\t\t\tcase \"macrolanguage\":\n\t\t\t\taliasTypeMap[a.Type] = langMacro\n\t\t\tcase \"deprecated\":\n\t\t\t\t// handled elsewhere\n\t\t\t\tcontinue\n\t\t\tcase \"bibliographic\", \"legacy\":\n\t\t\t\tif a.Type == \"no\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\taliasTypeMap[a.Type] = langLegacy\n\t\t\tdefault:\n\t\t\t\tlog.Fatalf(\"new %s alias: %s\", a.Reason, a.Type)\n\t\t\t}\n\t\t\tlangAliasMap.add(a.Type)\n\t\t\tlangAliasMap.updateLater(a.Type, repl)\n\t\t}\n\t}\n\t// Manually add the mapping of \"nb\" (Norwegian) to its macro language.\n\t// This can be removed if CLDR adopts this change.\n\tlangAliasMap.add(\"nb\")\n\tlangAliasMap.updateLater(\"nb\", \"no\")\n\taliasTypeMap[\"nb\"] = langMacro\n\n\tfor k, v := range b.registry {\n\t\t// Also add deprecated values for 3-letter ISO codes, which CLDR omits.\n\t\tif v.typ == \"language\" && v.deprecated != \"\" && v.preferred != \"\" {\n\t\t\tlangAliasMap.add(k)\n\t\t\tlangAliasMap.updateLater(k, v.preferred)\n\t\t\taliasTypeMap[k] = langDeprecated\n\t\t}\n\t}\n\t// Fix CLDR mappings.\n\tlang.updateLater(\"tl\", \"tgl\")\n\tlang.updateLater(\"sh\", \"hbs\")\n\tlang.updateLater(\"mo\", \"mol\")\n\tlang.updateLater(\"no\", \"nor\")\n\tlang.updateLater(\"tw\", \"twi\")\n\tlang.updateLater(\"nb\", \"nob\")\n\tlang.updateLater(\"ak\", \"aka\")\n\tlang.updateLater(\"bh\", \"bih\")\n\n\t// Ensure that each 2-letter code is matched with a 3-letter code.\n\tfor _, v := range lang.s[1:] {\n\t\ts, ok := lang.update[v]\n\t\tif !ok {\n\t\t\tif s, ok = lang.update[langAliasMap.update[v]]; !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlang.update[v] = s\n\t\t}\n\t\tif v[0] != s[0] {\n\t\t\taltLangISO3.add(s)\n\t\t\taltLangISO3.updateLater(s, v)\n\t\t}\n\t}\n\n\t// Complete canonicalized language tags.\n\tlang.freeze()\n\tfor i, v := range lang.s {\n\t\t// We can avoid these manual entries by using the IANA registry directly.\n\t\t// Seems easier to update the list manually, as changes are rare.\n\t\t// The panic in this loop will trigger if we miss an entry.\n\t\tadd := \"\"\n\t\tif s, ok := lang.update[v]; ok {\n\t\t\tif s[0] == v[0] {\n\t\t\t\tadd = s[1:]\n\t\t\t} else {\n\t\t\t\tadd = string([]byte{0, byte(altLangISO3.index(s))})\n\t\t\t}\n\t\t} else if len(v) == 3 {\n\t\t\tadd = \"\\x00\"\n\t\t} else {\n\t\t\tlog.Panicf(\"no data for long form of %q\", v)\n\t\t}\n\t\tlang.s[i] += add\n\t}\n\tb.writeConst(\"lang\", tag.Index(lang.join()))\n\n\tb.writeConst(\"langNoIndexOffset\", len(b.lang.s))\n\n\t// space of all valid 3-letter language identifiers.\n\tb.writeBitVector(\"langNoIndex\", b.langNoIndex.slice())\n\n\taltLangIndex := []uint16{}\n\tfor i, s := range altLangISO3.slice() {\n\t\taltLangISO3.s[i] += string([]byte{byte(len(altLangIndex))})\n\t\tif i > 0 {\n\t\t\tidx := b.lang.index(altLangISO3.update[s])\n\t\t\taltLangIndex = append(altLangIndex, uint16(idx))\n\t\t}\n\t}\n\tb.writeConst(\"altLangISO3\", tag.Index(altLangISO3.join()))\n\tb.writeSlice(\"altLangIndex\", altLangIndex)\n\n\tb.writeSortedMap(\"langAliasMap\", &langAliasMap, b.langIndex)\n\ttypes := make([]langAliasType, len(langAliasMap.s))\n\tfor i, s := range langAliasMap.s {\n\t\ttypes[i] = aliasTypeMap[s]\n\t}\n\tb.writeSlice(\"langAliasTypes\", types)\n}\n\nvar scriptConsts = []string{\n\t\"Latn\", \"Hani\", \"Hans\", \"Hant\", \"Qaaa\", \"Qaai\", \"Qabx\", \"Zinh\", \"Zyyy\",\n\t\"Zzzz\",\n}\n\nfunc (b *builder) writeScript() {\n\tb.writeConsts(b.script.index, scriptConsts...)\n\tb.writeConst(\"script\", tag.Index(b.script.join()))\n\n\tsupp := make([]uint8, len(b.lang.slice()))\n\tfor i, v := range b.lang.slice()[1:] {\n\t\tif sc := b.registry[v].suppressScript; sc != \"\" {\n\t\t\tsupp[i+1] = uint8(b.script.index(sc))\n\t\t}\n\t}\n\tb.writeSlice(\"suppressScript\", supp)\n\n\t// There is only one deprecated script in CLDR. This value is hard-coded.\n\t// We check here if the code must be updated.\n\tfor _, a := range b.supp.Metadata.Alias.ScriptAlias {\n\t\tif a.Type != \"Qaai\" {\n\t\t\tlog.Panicf(\"unexpected deprecated stript %q\", a.Type)\n\t\t}\n\t}\n}\n\nfunc parseM49(s string) int16 {\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tv, err := strconv.ParseUint(s, 10, 10)\n\tfailOnError(err)\n\treturn int16(v)\n}\n\nvar regionConsts = []string{\n\t\"001\", \"419\", \"BR\", \"CA\", \"ES\", \"GB\", \"MD\", \"PT\", \"UK\", \"US\",\n\t\"ZZ\", \"XA\", \"XC\", \"XK\", // Unofficial tag for Kosovo.\n}\n\nfunc (b *builder) writeRegion() {\n\tb.writeConsts(b.region.index, regionConsts...)\n\n\tisoOffset := b.region.index(\"AA\")\n\tm49map := make([]int16, len(b.region.slice()))\n\tfromM49map := make(map[int16]int)\n\taltRegionISO3 := \"\"\n\taltRegionIDs := []uint16{}\n\n\tb.writeConst(\"isoRegionOffset\", isoOffset)\n\n\t// 2-letter region lookup and mapping to numeric codes.\n\tregionISO := b.region.clone()\n\tregionISO.s = regionISO.s[isoOffset:]\n\tregionISO.sorted = false\n\n\tregionTypes := make([]byte, len(b.region.s))\n\n\t// Is the region valid BCP 47?\n\tfor s, e := range b.registry {\n\t\tif len(s) == 2 && s == strings.ToUpper(s) {\n\t\t\ti := b.region.index(s)\n\t\t\tfor _, d := range e.description {\n\t\t\t\tif strings.Contains(d, \"Private use\") {\n\t\t\t\t\tregionTypes[i] = iso3166UserAssigned\n\t\t\t\t}\n\t\t\t}\n\t\t\tregionTypes[i] |= bcp47Region\n\t\t}\n\t}\n\n\t// Is the region a valid ccTLD?\n\tr := gen.OpenIANAFile(\"domains/root/db\")\n\tdefer r.Close()\n\n\tbuf, err := ioutil.ReadAll(r)\n\tfailOnError(err)\n\tre := regexp.MustCompile(`\"/domains/root/db/([a-z]{2}).html\"`)\n\tfor _, m := range re.FindAllSubmatch(buf, -1) {\n\t\ti := b.region.index(strings.ToUpper(string(m[1])))\n\t\tregionTypes[i] |= ccTLD\n\t}\n\n\tb.writeSlice(\"regionTypes\", regionTypes)\n\n\tiso3Set := make(map[string]int)\n\tupdate := func(iso2, iso3 string) {\n\t\ti := regionISO.index(iso2)\n\t\tif j, ok := iso3Set[iso3]; !ok && iso3[0] == iso2[0] {\n\t\t\tregionISO.s[i] += iso3[1:]\n\t\t\tiso3Set[iso3] = -1\n\t\t} else {\n\t\t\tif ok && j >= 0 {\n\t\t\t\tregionISO.s[i] += string([]byte{0, byte(j)})\n\t\t\t} else {\n\t\t\t\tiso3Set[iso3] = len(altRegionISO3)\n\t\t\t\tregionISO.s[i] += string([]byte{0, byte(len(altRegionISO3))})\n\t\t\t\taltRegionISO3 += iso3\n\t\t\t\taltRegionIDs = append(altRegionIDs, uint16(isoOffset+i))\n\t\t\t}\n\t\t}\n\t}\n\tfor _, tc := range b.supp.CodeMappings.TerritoryCodes {\n\t\ti := regionISO.index(tc.Type) + isoOffset\n\t\tif d := m49map[i]; d != 0 {\n\t\t\tlog.Panicf(\"%s found as a duplicate UN.M49 code of %03d\", tc.Numeric, d)\n\t\t}\n\t\tm49 := parseM49(tc.Numeric)\n\t\tm49map[i] = m49\n\t\tif r := fromM49map[m49]; r == 0 {\n\t\t\tfromM49map[m49] = i\n\t\t} else if r != i {\n\t\t\tdep := b.registry[regionISO.s[r-isoOffset]].deprecated\n\t\t\tif t := b.registry[tc.Type]; t != nil && dep != \"\" && (t.deprecated == \"\" || t.deprecated > dep) {\n\t\t\t\tfromM49map[m49] = i\n\t\t\t}\n\t\t}\n\t}\n\tfor _, ta := range b.supp.Metadata.Alias.TerritoryAlias {\n\t\tif len(ta.Type) == 3 && ta.Type[0] <= '9' && len(ta.Replacement) == 2 {\n\t\t\tfrom := parseM49(ta.Type)\n\t\t\tif r := fromM49map[from]; r == 0 {\n\t\t\t\tfromM49map[from] = regionISO.index(ta.Replacement) + isoOffset\n\t\t\t}\n\t\t}\n\t}\n\tfor _, tc := range b.supp.CodeMappings.TerritoryCodes {\n\t\tif len(tc.Alpha3) == 3 {\n\t\t\tupdate(tc.Type, tc.Alpha3)\n\t\t}\n\t}\n\t// This entries are not included in territoryCodes. Mostly 3-letter variants\n\t// of deleted codes and an entry for QU.\n\tfor _, m := range []struct{ iso2, iso3 string }{\n\t\t{\"CT\", \"CTE\"},\n\t\t{\"DY\", \"DHY\"},\n\t\t{\"HV\", \"HVO\"},\n\t\t{\"JT\", \"JTN\"},\n\t\t{\"MI\", \"MID\"},\n\t\t{\"NH\", \"NHB\"},\n\t\t{\"NQ\", \"ATN\"},\n\t\t{\"PC\", \"PCI\"},\n\t\t{\"PU\", \"PUS\"},\n\t\t{\"PZ\", \"PCZ\"},\n\t\t{\"RH\", \"RHO\"},\n\t\t{\"VD\", \"VDR\"},\n\t\t{\"WK\", \"WAK\"},\n\t\t// These three-letter codes are used for others as well.\n\t\t{\"FQ\", \"ATF\"},\n\t} {\n\t\tupdate(m.iso2, m.iso3)\n\t}\n\tfor i, s := range regionISO.s {\n\t\tif len(s) != 4 {\n\t\t\tregionISO.s[i] = s + \"  \"\n\t\t}\n\t}\n\tb.writeConst(\"regionISO\", tag.Index(regionISO.join()))\n\tb.writeConst(\"altRegionISO3\", altRegionISO3)\n\tb.writeSlice(\"altRegionIDs\", altRegionIDs)\n\n\t// Create list of deprecated regions.\n\t// TODO: consider inserting SF -> FI. Not included by CLDR, but is the only\n\t// Transitionally-reserved mapping not included.\n\tregionOldMap := stringSet{}\n\t// Include regions in territoryAlias (not all are in the IANA registry!)\n\tfor _, reg := range b.supp.Metadata.Alias.TerritoryAlias {\n\t\tif len(reg.Type) == 2 && reg.Reason == \"deprecated\" && len(reg.Replacement) == 2 {\n\t\t\tregionOldMap.add(reg.Type)\n\t\t\tregionOldMap.updateLater(reg.Type, reg.Replacement)\n\t\t\ti, _ := regionISO.find(reg.Type)\n\t\t\tj, _ := regionISO.find(reg.Replacement)\n\t\t\tif k := m49map[i+isoOffset]; k == 0 {\n\t\t\t\tm49map[i+isoOffset] = m49map[j+isoOffset]\n\t\t\t}\n\t\t}\n\t}\n\tb.writeSortedMap(\"regionOldMap\", &regionOldMap, func(s string) uint16 {\n\t\treturn uint16(b.region.index(s))\n\t})\n\t// 3-digit region lookup, groupings.\n\tfor i := 1; i < isoOffset; i++ {\n\t\tm := parseM49(b.region.s[i])\n\t\tm49map[i] = m\n\t\tfromM49map[m] = i\n\t}\n\tb.writeSlice(\"m49\", m49map)\n\n\tconst (\n\t\tsearchBits = 7\n\t\tregionBits = 9\n\t)\n\tif len(m49map) >= 1<<regionBits {\n\t\tlog.Fatalf(\"Maximum number of regions exceeded: %d > %d\", len(m49map), 1<<regionBits)\n\t}\n\tm49Index := [9]int16{}\n\tfromM49 := []uint16{}\n\tm49 := []int{}\n\tfor k, _ := range fromM49map {\n\t\tm49 = append(m49, int(k))\n\t}\n\tsort.Ints(m49)\n\tfor _, k := range m49[1:] {\n\t\tval := (k & (1<<searchBits - 1)) << regionBits\n\t\tfromM49 = append(fromM49, uint16(val|fromM49map[int16(k)]))\n\t\tm49Index[1:][k>>searchBits] = int16(len(fromM49))\n\t}\n\tb.writeSlice(\"m49Index\", m49Index)\n\tb.writeSlice(\"fromM49\", fromM49)\n}\n\nconst (\n\t// TODO: put these lists in regionTypes as user data? Could be used for\n\t// various optimizations and refinements and could be exposed in the API.\n\tiso3166Except = \"AC CP DG EA EU FX IC SU TA UK\"\n\tiso3166Trans  = \"AN BU CS NT TP YU ZR\" // SF is not in our set of Regions.\n\t// DY and RH are actually not deleted, but indeterminately reserved.\n\tiso3166DelCLDR = \"CT DD DY FQ HV JT MI NH NQ PC PU PZ RH VD WK YD\"\n)\n\nconst (\n\tiso3166UserAssigned = 1 << iota\n\tccTLD\n\tbcp47Region\n)\n\nfunc find(list []string, s string) int {\n\tfor i, t := range list {\n\t\tif t == s {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// writeVariants generates per-variant information and creates a map from variant\n// name to index value. We assign index values such that sorting multiple\n// variants by index value will result in the correct order.\n// There are two types of variants: specialized and general. Specialized variants\n// are only applicable to certain language or language-script pairs. Generalized\n// variants apply to any language. Generalized variants always sort after\n// specialized variants.  We will therefore always assign a higher index value\n// to a generalized variant than any other variant. Generalized variants are\n// sorted alphabetically among themselves.\n// Specialized variants may also sort after other specialized variants. Such\n// variants will be ordered after any of the variants they may follow.\n// We assume that if a variant x is followed by a variant y, then for any prefix\n// p of x, p-x is a prefix of y. This allows us to order tags based on the\n// maximum of the length of any of its prefixes.\n// TODO: it is possible to define a set of Prefix values on variants such that\n// a total order cannot be defined to the point that this algorithm breaks.\n// In other words, we cannot guarantee the same order of variants for the\n// future using the same algorithm or for non-compliant combinations of\n// variants. For this reason, consider using simple alphabetic sorting\n// of variants and ignore Prefix restrictions altogether.\nfunc (b *builder) writeVariant() {\n\tgeneralized := stringSet{}\n\tspecialized := stringSet{}\n\tspecializedExtend := stringSet{}\n\t// Collate the variants by type and check assumptions.\n\tfor _, v := range b.variant.slice() {\n\t\te := b.registry[v]\n\t\tif len(e.prefix) == 0 {\n\t\t\tgeneralized.add(v)\n\t\t\tcontinue\n\t\t}\n\t\tc := strings.Split(e.prefix[0], \"-\")\n\t\thasScriptOrRegion := false\n\t\tif len(c) > 1 {\n\t\t\t_, hasScriptOrRegion = b.script.find(c[1])\n\t\t\tif !hasScriptOrRegion {\n\t\t\t\t_, hasScriptOrRegion = b.region.find(c[1])\n\n\t\t\t}\n\t\t}\n\t\tif len(c) == 1 || len(c) == 2 && hasScriptOrRegion {\n\t\t\t// Variant is preceded by a language.\n\t\t\tspecialized.add(v)\n\t\t\tcontinue\n\t\t}\n\t\t// Variant is preceded by another variant.\n\t\tspecializedExtend.add(v)\n\t\tprefix := c[0] + \"-\"\n\t\tif hasScriptOrRegion {\n\t\t\tprefix += c[1]\n\t\t}\n\t\tfor _, p := range e.prefix {\n\t\t\t// Verify that the prefix minus the last element is a prefix of the\n\t\t\t// predecessor element.\n\t\t\ti := strings.LastIndex(p, \"-\")\n\t\t\tpred := b.registry[p[i+1:]]\n\t\t\tif find(pred.prefix, p[:i]) < 0 {\n\t\t\t\tlog.Fatalf(\"prefix %q for variant %q not consistent with predecessor spec\", p, v)\n\t\t\t}\n\t\t\t// The sorting used below does not work in the general case. It works\n\t\t\t// if we assume that variants that may be followed by others only have\n\t\t\t// prefixes of the same length. Verify this.\n\t\t\tcount := strings.Count(p[:i], \"-\")\n\t\t\tfor _, q := range pred.prefix {\n\t\t\t\tif c := strings.Count(q, \"-\"); c != count {\n\t\t\t\t\tlog.Fatalf(\"variant %q preceding %q has a prefix %q of size %d; want %d\", p[i+1:], v, q, c, count)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !strings.HasPrefix(p, prefix) {\n\t\t\t\tlog.Fatalf(\"prefix %q of variant %q should start with %q\", p, v, prefix)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort extended variants.\n\ta := specializedExtend.s\n\tless := func(v, w string) bool {\n\t\t// Sort by the maximum number of elements.\n\t\tmaxCount := func(s string) (max int) {\n\t\t\tfor _, p := range b.registry[s].prefix {\n\t\t\t\tif c := strings.Count(p, \"-\"); c > max {\n\t\t\t\t\tmax = c\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tif cv, cw := maxCount(v), maxCount(w); cv != cw {\n\t\t\treturn cv < cw\n\t\t}\n\t\t// Sort by name as tie breaker.\n\t\treturn v < w\n\t}\n\tsort.Sort(funcSorter{less, sort.StringSlice(a)})\n\tspecializedExtend.frozen = true\n\n\t// Create index from variant name to index.\n\tvariantIndex := make(map[string]uint8)\n\tadd := func(s []string) {\n\t\tfor _, v := range s {\n\t\t\tvariantIndex[v] = uint8(len(variantIndex))\n\t\t}\n\t}\n\tadd(specialized.slice())\n\tadd(specializedExtend.s)\n\tnumSpecialized := len(variantIndex)\n\tadd(generalized.slice())\n\tif n := len(variantIndex); n > 255 {\n\t\tlog.Fatalf(\"maximum number of variants exceeded: was %d; want <= 255\", n)\n\t}\n\tb.writeMap(\"variantIndex\", variantIndex)\n\tb.writeConst(\"variantNumSpecialized\", numSpecialized)\n}\n\nfunc (b *builder) writeLanguageInfo() {\n}\n\n// writeLikelyData writes tables that are used both for finding parent relations and for\n// language matching.  Each entry contains additional bits to indicate the status of the\n// data to know when it cannot be used for parent relations.\nfunc (b *builder) writeLikelyData() {\n\tconst (\n\t\tisList = 1 << iota\n\t\tscriptInFrom\n\t\tregionInFrom\n\t)\n\ttype ( // generated types\n\t\tlikelyScriptRegion struct {\n\t\t\tregion uint16\n\t\t\tscript uint8\n\t\t\tflags  uint8\n\t\t}\n\t\tlikelyLangScript struct {\n\t\t\tlang   uint16\n\t\t\tscript uint8\n\t\t\tflags  uint8\n\t\t}\n\t\tlikelyLangRegion struct {\n\t\t\tlang   uint16\n\t\t\tregion uint16\n\t\t}\n\t\t// likelyTag is used for getting likely tags for group regions, where\n\t\t// the likely region might be a region contained in the group.\n\t\tlikelyTag struct {\n\t\t\tlang   uint16\n\t\t\tregion uint16\n\t\t\tscript uint8\n\t\t}\n\t)\n\tvar ( // generated variables\n\t\tlikelyRegionGroup = make([]likelyTag, len(b.groups))\n\t\tlikelyLang        = make([]likelyScriptRegion, len(b.lang.s))\n\t\tlikelyRegion      = make([]likelyLangScript, len(b.region.s))\n\t\tlikelyScript      = make([]likelyLangRegion, len(b.script.s))\n\t\tlikelyLangList    = []likelyScriptRegion{}\n\t\tlikelyRegionList  = []likelyLangScript{}\n\t)\n\ttype fromTo struct {\n\t\tfrom, to []string\n\t}\n\tlangToOther := map[int][]fromTo{}\n\tregionToOther := map[int][]fromTo{}\n\tfor _, m := range b.supp.LikelySubtags.LikelySubtag {\n\t\tfrom := strings.Split(m.From, \"_\")\n\t\tto := strings.Split(m.To, \"_\")\n\t\tif len(to) != 3 {\n\t\t\tlog.Fatalf(\"invalid number of subtags in %q: found %d, want 3\", m.To, len(to))\n\t\t}\n\t\tif len(from) > 3 {\n\t\t\tlog.Fatalf(\"invalid number of subtags: found %d, want 1-3\", len(from))\n\t\t}\n\t\tif from[0] != to[0] && from[0] != \"und\" {\n\t\t\tlog.Fatalf(\"unexpected language change in expansion: %s -> %s\", from, to)\n\t\t}\n\t\tif len(from) == 3 {\n\t\t\tif from[2] != to[2] {\n\t\t\t\tlog.Fatalf(\"unexpected region change in expansion: %s -> %s\", from, to)\n\t\t\t}\n\t\t\tif from[0] != \"und\" {\n\t\t\t\tlog.Fatalf(\"unexpected fully specified from tag: %s -> %s\", from, to)\n\t\t\t}\n\t\t}\n\t\tif len(from) == 1 || from[0] != \"und\" {\n\t\t\tid := 0\n\t\t\tif from[0] != \"und\" {\n\t\t\t\tid = b.lang.index(from[0])\n\t\t\t}\n\t\t\tlangToOther[id] = append(langToOther[id], fromTo{from, to})\n\t\t} else if len(from) == 2 && len(from[1]) == 4 {\n\t\t\tsid := b.script.index(from[1])\n\t\t\tlikelyScript[sid].lang = uint16(b.langIndex(to[0]))\n\t\t\tlikelyScript[sid].region = uint16(b.region.index(to[2]))\n\t\t} else {\n\t\t\tr := b.region.index(from[len(from)-1])\n\t\t\tif id, ok := b.groups[r]; ok {\n\t\t\t\tif from[0] != \"und\" {\n\t\t\t\t\tlog.Fatalf(\"region changed unexpectedly: %s -> %s\", from, to)\n\t\t\t\t}\n\t\t\t\tlikelyRegionGroup[id].lang = uint16(b.langIndex(to[0]))\n\t\t\t\tlikelyRegionGroup[id].script = uint8(b.script.index(to[1]))\n\t\t\t\tlikelyRegionGroup[id].region = uint16(b.region.index(to[2]))\n\t\t\t} else {\n\t\t\t\tregionToOther[r] = append(regionToOther[r], fromTo{from, to})\n\t\t\t}\n\t\t}\n\t}\n\tb.writeType(likelyLangRegion{})\n\tb.writeSlice(\"likelyScript\", likelyScript)\n\n\tfor id := range b.lang.s {\n\t\tlist := langToOther[id]\n\t\tif len(list) == 1 {\n\t\t\tlikelyLang[id].region = uint16(b.region.index(list[0].to[2]))\n\t\t\tlikelyLang[id].script = uint8(b.script.index(list[0].to[1]))\n\t\t} else if len(list) > 1 {\n\t\t\tlikelyLang[id].flags = isList\n\t\t\tlikelyLang[id].region = uint16(len(likelyLangList))\n\t\t\tlikelyLang[id].script = uint8(len(list))\n\t\t\tfor _, x := range list {\n\t\t\t\tflags := uint8(0)\n\t\t\t\tif len(x.from) > 1 {\n\t\t\t\t\tif x.from[1] == x.to[2] {\n\t\t\t\t\t\tflags = regionInFrom\n\t\t\t\t\t} else {\n\t\t\t\t\t\tflags = scriptInFrom\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlikelyLangList = append(likelyLangList, likelyScriptRegion{\n\t\t\t\t\tregion: uint16(b.region.index(x.to[2])),\n\t\t\t\t\tscript: uint8(b.script.index(x.to[1])),\n\t\t\t\t\tflags:  flags,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\t// TODO: merge suppressScript data with this table.\n\tb.writeType(likelyScriptRegion{})\n\tb.writeSlice(\"likelyLang\", likelyLang)\n\tb.writeSlice(\"likelyLangList\", likelyLangList)\n\n\tfor id := range b.region.s {\n\t\tlist := regionToOther[id]\n\t\tif len(list) == 1 {\n\t\t\tlikelyRegion[id].lang = uint16(b.langIndex(list[0].to[0]))\n\t\t\tlikelyRegion[id].script = uint8(b.script.index(list[0].to[1]))\n\t\t\tif len(list[0].from) > 2 {\n\t\t\t\tlikelyRegion[id].flags = scriptInFrom\n\t\t\t}\n\t\t} else if len(list) > 1 {\n\t\t\tlikelyRegion[id].flags = isList\n\t\t\tlikelyRegion[id].lang = uint16(len(likelyRegionList))\n\t\t\tlikelyRegion[id].script = uint8(len(list))\n\t\t\tfor i, x := range list {\n\t\t\t\tif len(x.from) == 2 && i != 0 || i > 0 && len(x.from) != 3 {\n\t\t\t\t\tlog.Fatalf(\"unspecified script must be first in list: %v at %d\", x.from, i)\n\t\t\t\t}\n\t\t\t\tx := likelyLangScript{\n\t\t\t\t\tlang:   uint16(b.langIndex(x.to[0])),\n\t\t\t\t\tscript: uint8(b.script.index(x.to[1])),\n\t\t\t\t}\n\t\t\t\tif len(list[0].from) > 2 {\n\t\t\t\t\tx.flags = scriptInFrom\n\t\t\t\t}\n\t\t\t\tlikelyRegionList = append(likelyRegionList, x)\n\t\t\t}\n\t\t}\n\t}\n\tb.writeType(likelyLangScript{})\n\tb.writeSlice(\"likelyRegion\", likelyRegion)\n\tb.writeSlice(\"likelyRegionList\", likelyRegionList)\n\n\tb.writeType(likelyTag{})\n\tb.writeSlice(\"likelyRegionGroup\", likelyRegionGroup)\n}\n\ntype mutualIntelligibility struct {\n\twant, have uint16\n\tdistance   uint8\n\toneway     bool\n}\n\ntype scriptIntelligibility struct {\n\twantLang, haveLang     uint16\n\twantScript, haveScript uint8\n\tdistance               uint8\n\t// Always oneway\n}\n\ntype regionIntelligibility struct {\n\tlang     uint16 // compact language id\n\tscript   uint8  // 0 means any\n\tgroup    uint8  // 0 means any; if bit 7 is set it means inverse\n\tdistance uint8\n\t// Always twoway.\n}\n\n// writeMatchData writes tables with languages and scripts for which there is\n// mutual intelligibility. The data is based on CLDR's languageMatching data.\n// Note that we use a different algorithm than the one defined by CLDR and that\n// we slightly modify the data. For example, we convert scores to confidence levels.\n// We also drop all region-related data as we use a different algorithm to\n// determine region equivalence.\nfunc (b *builder) writeMatchData() {\n\tlm := b.supp.LanguageMatching.LanguageMatches\n\tcldr.MakeSlice(&lm).SelectAnyOf(\"type\", \"written_new\")\n\n\tregionHierarchy := map[string][]string{}\n\tfor _, g := range b.supp.TerritoryContainment.Group {\n\t\tregions := strings.Split(g.Contains, \" \")\n\t\tregionHierarchy[g.Type] = append(regionHierarchy[g.Type], regions...)\n\t}\n\tregionToGroups := make([]uint8, len(b.region.s))\n\n\tidToIndex := map[string]uint8{}\n\tfor i, mv := range lm[0].MatchVariable {\n\t\tif i > 6 {\n\t\t\tlog.Fatalf(\"Too many groups: %d\", i)\n\t\t}\n\t\tidToIndex[mv.Id] = uint8(i + 1)\n\t\t// TODO: also handle '-'\n\t\tfor _, r := range strings.Split(mv.Value, \"+\") {\n\t\t\ttodo := []string{r}\n\t\t\tfor k := 0; k < len(todo); k++ {\n\t\t\t\tr := todo[k]\n\t\t\t\tregionToGroups[b.region.index(r)] |= 1 << uint8(i)\n\t\t\t\ttodo = append(todo, regionHierarchy[r]...)\n\t\t\t}\n\t\t}\n\t}\n\tb.writeSlice(\"regionToGroups\", regionToGroups)\n\n\t// maps language id to in- and out-of-group region.\n\tparadigmLocales := [][3]uint16{}\n\tlocales := strings.Split(lm[0].ParadigmLocales[0].Locales, \" \")\n\tfor i := 0; i < len(locales); i += 2 {\n\t\tx := [3]uint16{}\n\t\tfor j := 0; j < 2; j++ {\n\t\t\tpc := strings.SplitN(locales[i+j], \"-\", 2)\n\t\t\tx[0] = b.langIndex(pc[0])\n\t\t\tif len(pc) == 2 {\n\t\t\t\tx[1+j] = uint16(b.region.index(pc[1]))\n\t\t\t}\n\t\t}\n\t\tparadigmLocales = append(paradigmLocales, x)\n\t}\n\tb.writeSlice(\"paradigmLocales\", paradigmLocales)\n\n\tb.writeType(mutualIntelligibility{})\n\tb.writeType(scriptIntelligibility{})\n\tb.writeType(regionIntelligibility{})\n\n\tmatchLang := []mutualIntelligibility{}\n\tmatchScript := []scriptIntelligibility{}\n\tmatchRegion := []regionIntelligibility{}\n\t// Convert the languageMatch entries in lists keyed by desired language.\n\tfor _, m := range lm[0].LanguageMatch {\n\t\t// Different versions of CLDR use different separators.\n\t\tdesired := strings.Replace(m.Desired, \"-\", \"_\", -1)\n\t\tsupported := strings.Replace(m.Supported, \"-\", \"_\", -1)\n\t\td := strings.Split(desired, \"_\")\n\t\ts := strings.Split(supported, \"_\")\n\t\tif len(d) != len(s) {\n\t\t\tlog.Fatalf(\"not supported: desired=%q; supported=%q\", desired, supported)\n\t\t\tcontinue\n\t\t}\n\t\tdistance, _ := strconv.ParseInt(m.Distance, 10, 8)\n\t\tswitch len(d) {\n\t\tcase 2:\n\t\t\tif desired == supported && desired == \"*_*\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// language-script pair.\n\t\t\tmatchScript = append(matchScript, scriptIntelligibility{\n\t\t\t\twantLang:   uint16(b.langIndex(d[0])),\n\t\t\t\thaveLang:   uint16(b.langIndex(s[0])),\n\t\t\t\twantScript: uint8(b.script.index(d[1])),\n\t\t\t\thaveScript: uint8(b.script.index(s[1])),\n\t\t\t\tdistance:   uint8(distance),\n\t\t\t})\n\t\t\tif m.Oneway != \"true\" {\n\t\t\t\tmatchScript = append(matchScript, scriptIntelligibility{\n\t\t\t\t\twantLang:   uint16(b.langIndex(s[0])),\n\t\t\t\t\thaveLang:   uint16(b.langIndex(d[0])),\n\t\t\t\t\twantScript: uint8(b.script.index(s[1])),\n\t\t\t\t\thaveScript: uint8(b.script.index(d[1])),\n\t\t\t\t\tdistance:   uint8(distance),\n\t\t\t\t})\n\t\t\t}\n\t\tcase 1:\n\t\t\tif desired == supported && desired == \"*\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif distance == 1 {\n\t\t\t\t// nb == no is already handled by macro mapping. Check there\n\t\t\t\t// really is only this case.\n\t\t\t\tif d[0] != \"no\" || s[0] != \"nb\" {\n\t\t\t\t\tlog.Fatalf(\"unhandled equivalence %s == %s\", s[0], d[0])\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// TODO: consider dropping oneway field and just doubling the entry.\n\t\t\tmatchLang = append(matchLang, mutualIntelligibility{\n\t\t\t\twant:     uint16(b.langIndex(d[0])),\n\t\t\t\thave:     uint16(b.langIndex(s[0])),\n\t\t\t\tdistance: uint8(distance),\n\t\t\t\toneway:   m.Oneway == \"true\",\n\t\t\t})\n\t\tcase 3:\n\t\t\tif desired == supported && desired == \"*_*_*\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif desired != supported {\n\t\t\t\t// This is now supported by CLDR, but only one case, which\n\t\t\t\t// should already be covered by paradigm locales. For instance,\n\t\t\t\t// test case \"und, en, en-GU, en-IN, en-GB ; en-ZA ; en-GB\" in\n\t\t\t\t// testdata/CLDRLocaleMatcherTest.txt tests this.\n\t\t\t\tif supported != \"en_*_GB\" {\n\t\t\t\t\tlog.Fatalf(\"not supported: desired=%q; supported=%q\", desired, supported)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tri := regionIntelligibility{\n\t\t\t\tlang:     b.langIndex(d[0]),\n\t\t\t\tdistance: uint8(distance),\n\t\t\t}\n\t\t\tif d[1] != \"*\" {\n\t\t\t\tri.script = uint8(b.script.index(d[1]))\n\t\t\t}\n\t\t\tswitch {\n\t\t\tcase d[2] == \"*\":\n\t\t\t\tri.group = 0x80 // not contained in anything\n\t\t\tcase strings.HasPrefix(d[2], \"$!\"):\n\t\t\t\tri.group = 0x80\n\t\t\t\td[2] = \"$\" + d[2][len(\"$!\"):]\n\t\t\t\tfallthrough\n\t\t\tcase strings.HasPrefix(d[2], \"$\"):\n\t\t\t\tri.group |= idToIndex[d[2]]\n\t\t\t}\n\t\t\tmatchRegion = append(matchRegion, ri)\n\t\tdefault:\n\t\t\tlog.Fatalf(\"not supported: desired=%q; supported=%q\", desired, supported)\n\t\t}\n\t}\n\tsort.SliceStable(matchLang, func(i, j int) bool {\n\t\treturn matchLang[i].distance < matchLang[j].distance\n\t})\n\tb.writeSlice(\"matchLang\", matchLang)\n\n\tsort.SliceStable(matchScript, func(i, j int) bool {\n\t\treturn matchScript[i].distance < matchScript[j].distance\n\t})\n\tb.writeSlice(\"matchScript\", matchScript)\n\n\tsort.SliceStable(matchRegion, func(i, j int) bool {\n\t\treturn matchRegion[i].distance < matchRegion[j].distance\n\t})\n\tb.writeSlice(\"matchRegion\", matchRegion)\n}\n\nfunc (b *builder) writeRegionInclusionData() {\n\tvar (\n\t\t// mm holds for each group the set of groups with a distance of 1.\n\t\tmm = make(map[int][]index)\n\n\t\t// containment holds for each group the transitive closure of\n\t\t// containment of other groups.\n\t\tcontainment = make(map[index][]index)\n\t)\n\tfor _, g := range b.supp.TerritoryContainment.Group {\n\t\t// Skip UN and EURO zone as they are flattening the containment\n\t\t// relationship.\n\t\tif g.Type == \"EZ\" || g.Type == \"UN\" {\n\t\t\tcontinue\n\t\t}\n\t\tgroup := b.region.index(g.Type)\n\t\tgroupIdx := b.groups[group]\n\t\tfor _, mem := range strings.Split(g.Contains, \" \") {\n\t\t\tr := b.region.index(mem)\n\t\t\tmm[r] = append(mm[r], groupIdx)\n\t\t\tif g, ok := b.groups[r]; ok {\n\t\t\t\tmm[group] = append(mm[group], g)\n\t\t\t\tcontainment[groupIdx] = append(containment[groupIdx], g)\n\t\t\t}\n\t\t}\n\t}\n\n\tregionContainment := make([]uint64, len(b.groups))\n\tfor _, g := range b.groups {\n\t\tl := containment[g]\n\n\t\t// Compute the transitive closure of containment.\n\t\tfor i := 0; i < len(l); i++ {\n\t\t\tl = append(l, containment[l[i]]...)\n\t\t}\n\n\t\t// Compute the bitmask.\n\t\tregionContainment[g] = 1 << g\n\t\tfor _, v := range l {\n\t\t\tregionContainment[g] |= 1 << v\n\t\t}\n\t}\n\tb.writeSlice(\"regionContainment\", regionContainment)\n\n\tregionInclusion := make([]uint8, len(b.region.s))\n\tbvs := make(map[uint64]index)\n\t// Make the first bitvector positions correspond with the groups.\n\tfor r, i := range b.groups {\n\t\tbv := uint64(1 << i)\n\t\tfor _, g := range mm[r] {\n\t\t\tbv |= 1 << g\n\t\t}\n\t\tbvs[bv] = i\n\t\tregionInclusion[r] = uint8(bvs[bv])\n\t}\n\tfor r := 1; r < len(b.region.s); r++ {\n\t\tif _, ok := b.groups[r]; !ok {\n\t\t\tbv := uint64(0)\n\t\t\tfor _, g := range mm[r] {\n\t\t\t\tbv |= 1 << g\n\t\t\t}\n\t\t\tif bv == 0 {\n\t\t\t\t// Pick the world for unspecified regions.\n\t\t\t\tbv = 1 << b.groups[b.region.index(\"001\")]\n\t\t\t}\n\t\t\tif _, ok := bvs[bv]; !ok {\n\t\t\t\tbvs[bv] = index(len(bvs))\n\t\t\t}\n\t\t\tregionInclusion[r] = uint8(bvs[bv])\n\t\t}\n\t}\n\tb.writeSlice(\"regionInclusion\", regionInclusion)\n\tregionInclusionBits := make([]uint64, len(bvs))\n\tfor k, v := range bvs {\n\t\tregionInclusionBits[v] = uint64(k)\n\t}\n\t// Add bit vectors for increasingly large distances until a fixed point is reached.\n\tregionInclusionNext := []uint8{}\n\tfor i := 0; i < len(regionInclusionBits); i++ {\n\t\tbits := regionInclusionBits[i]\n\t\tnext := bits\n\t\tfor i := uint(0); i < uint(len(b.groups)); i++ {\n\t\t\tif bits&(1<<i) != 0 {\n\t\t\t\tnext |= regionInclusionBits[i]\n\t\t\t}\n\t\t}\n\t\tif _, ok := bvs[next]; !ok {\n\t\t\tbvs[next] = index(len(bvs))\n\t\t\tregionInclusionBits = append(regionInclusionBits, next)\n\t\t}\n\t\tregionInclusionNext = append(regionInclusionNext, uint8(bvs[next]))\n\t}\n\tb.writeSlice(\"regionInclusionBits\", regionInclusionBits)\n\tb.writeSlice(\"regionInclusionNext\", regionInclusionNext)\n}\n\ntype parentRel struct {\n\tlang       uint16\n\tscript     uint8\n\tmaxScript  uint8\n\ttoRegion   uint16\n\tfromRegion []uint16\n}\n\nfunc (b *builder) writeParents() {\n\tb.writeType(parentRel{})\n\n\tparents := []parentRel{}\n\n\t// Construct parent overrides.\n\tn := 0\n\tfor _, p := range b.data.Supplemental().ParentLocales.ParentLocale {\n\t\t// Skipping non-standard scripts to root is implemented using addTags.\n\t\tif p.Parent == \"root\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tsub := strings.Split(p.Parent, \"_\")\n\t\tparent := parentRel{lang: b.langIndex(sub[0])}\n\t\tif len(sub) == 2 {\n\t\t\t// TODO: check that all undefined scripts are indeed Latn in these\n\t\t\t// cases.\n\t\t\tparent.maxScript = uint8(b.script.index(\"Latn\"))\n\t\t\tparent.toRegion = uint16(b.region.index(sub[1]))\n\t\t} else {\n\t\t\tparent.script = uint8(b.script.index(sub[1]))\n\t\t\tparent.maxScript = parent.script\n\t\t\tparent.toRegion = uint16(b.region.index(sub[2]))\n\t\t}\n\t\tfor _, c := range strings.Split(p.Locales, \" \") {\n\t\t\tregion := b.region.index(c[strings.LastIndex(c, \"_\")+1:])\n\t\t\tparent.fromRegion = append(parent.fromRegion, uint16(region))\n\t\t}\n\t\tparents = append(parents, parent)\n\t\tn += len(parent.fromRegion)\n\t}\n\tb.writeSliceAddSize(\"parents\", n*2, parents)\n}\n\nfunc main() {\n\tgen.Init()\n\n\tgen.Repackage(\"gen_common.go\", \"common.go\", \"language\")\n\n\tw := gen.NewCodeWriter()\n\tdefer w.WriteGoFile(\"tables.go\", \"language\")\n\n\tfmt.Fprintln(w, `import \"golang.org/x/text/internal/tag\"`)\n\n\tb := newBuilder(w)\n\tgen.WriteCLDRVersion(w)\n\n\tb.parseIndices()\n\tb.writeType(fromTo{})\n\tb.writeLanguage()\n\tb.writeScript()\n\tb.writeRegion()\n\tb.writeVariant()\n\t// TODO: b.writeLocale()\n\tb.computeRegionGroups()\n\tb.writeLikelyData()\n\tb.writeMatchData()\n\tb.writeRegionInclusionData()\n\tb.writeParents()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/gen_common.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\n// This file contains code common to the maketables.go and the package code.\n\n// langAliasType is the type of an alias in langAliasMap.\ntype langAliasType int8\n\nconst (\n\tlangDeprecated langAliasType = iota\n\tlangMacro\n\tlangLegacy\n\n\tlangAliasTypeUnknown langAliasType = -1\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/gen_index.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\n// This file generates derivative tables based on the language package itself.\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/language\"\n\t\"golang.org/x/text/unicode/cldr\"\n)\n\nvar (\n\ttest = flag.Bool(\"test\", false,\n\t\t\"test existing tables; can be used to compare web data with package data.\")\n\n\tdraft = flag.String(\"draft\",\n\t\t\"contributed\",\n\t\t`Minimal draft requirements (approved, contributed, provisional, unconfirmed).`)\n)\n\nfunc main() {\n\tgen.Init()\n\n\t// Read the CLDR zip file.\n\tr := gen.OpenCLDRCoreZip()\n\tdefer r.Close()\n\n\td := &cldr.Decoder{}\n\tdata, err := d.DecodeZip(r)\n\tif err != nil {\n\t\tlog.Fatalf(\"DecodeZip: %v\", err)\n\t}\n\n\tw := gen.NewCodeWriter()\n\tdefer func() {\n\t\tbuf := &bytes.Buffer{}\n\n\t\tif _, err = w.WriteGo(buf, \"language\", \"\"); err != nil {\n\t\t\tlog.Fatalf(\"Error formatting file index.go: %v\", err)\n\t\t}\n\n\t\t// Since we're generating a table for our own package we need to rewrite\n\t\t// doing the equivalent of go fmt -r 'language.b -> b'. Using\n\t\t// bytes.Replace will do.\n\t\tout := bytes.Replace(buf.Bytes(), []byte(\"language.\"), nil, -1)\n\t\tif err := ioutil.WriteFile(\"index.go\", out, 0600); err != nil {\n\t\t\tlog.Fatalf(\"Could not create file index.go: %v\", err)\n\t\t}\n\t}()\n\n\tm := map[language.Tag]bool{}\n\tfor _, lang := range data.Locales() {\n\t\t// We include all locales unconditionally to be consistent with en_US.\n\t\t// We want en_US, even though it has no data associated with it.\n\n\t\t// TODO: put any of the languages for which no data exists at the end\n\t\t// of the index. This allows all components based on ICU to use that\n\t\t// as the cutoff point.\n\t\t// if x := data.RawLDML(lang); false ||\n\t\t// \tx.LocaleDisplayNames != nil ||\n\t\t// \tx.Characters != nil ||\n\t\t// \tx.Delimiters != nil ||\n\t\t// \tx.Measurement != nil ||\n\t\t// \tx.Dates != nil ||\n\t\t// \tx.Numbers != nil ||\n\t\t// \tx.Units != nil ||\n\t\t// \tx.ListPatterns != nil ||\n\t\t// \tx.Collations != nil ||\n\t\t// \tx.Segmentations != nil ||\n\t\t// \tx.Rbnf != nil ||\n\t\t// \tx.Annotations != nil ||\n\t\t// \tx.Metadata != nil {\n\n\t\t// TODO: support POSIX natively, albeit non-standard.\n\t\ttag := language.Make(strings.Replace(lang, \"_POSIX\", \"-u-va-posix\", 1))\n\t\tm[tag] = true\n\t\t// }\n\t}\n\t// Include locales for plural rules, which uses a different structure.\n\tfor _, plurals := range data.Supplemental().Plurals {\n\t\tfor _, rules := range plurals.PluralRules {\n\t\t\tfor _, lang := range strings.Split(rules.Locales, \" \") {\n\t\t\t\tm[language.Make(lang)] = true\n\t\t\t}\n\t\t}\n\t}\n\n\tvar core, special []language.Tag\n\n\tfor t := range m {\n\t\tif x := t.Extensions(); len(x) != 0 && fmt.Sprint(x) != \"[u-va-posix]\" {\n\t\t\tlog.Fatalf(\"Unexpected extension %v in %v\", x, t)\n\t\t}\n\t\tif len(t.Variants()) == 0 && len(t.Extensions()) == 0 {\n\t\t\tcore = append(core, t)\n\t\t} else {\n\t\t\tspecial = append(special, t)\n\t\t}\n\t}\n\n\tw.WriteComment(`\n\tNumCompactTags is the number of common tags. The maximum tag is\n\tNumCompactTags-1.`)\n\tw.WriteConst(\"NumCompactTags\", len(core)+len(special))\n\n\tsort.Sort(byAlpha(special))\n\tw.WriteVar(\"specialTags\", special)\n\n\t// TODO: order by frequency?\n\tsort.Sort(byAlpha(core))\n\n\t// Size computations are just an estimate.\n\tw.Size += int(reflect.TypeOf(map[uint32]uint16{}).Size())\n\tw.Size += len(core) * 6 // size of uint32 and uint16\n\n\tfmt.Fprintln(w)\n\tfmt.Fprintln(w, \"var coreTags = map[uint32]uint16{\")\n\tfmt.Fprintln(w, \"0x0: 0, // und\")\n\ti := len(special) + 1 // Und and special tags already written.\n\tfor _, t := range core {\n\t\tif t == language.Und {\n\t\t\tcontinue\n\t\t}\n\t\tfmt.Fprint(w.Hash, t, i)\n\t\tb, s, r := t.Raw()\n\t\tfmt.Fprintf(w, \"0x%s%s%s: %d, // %s\\n\",\n\t\t\tgetIndex(b, 3), // 3 is enough as it is guaranteed to be a compact number\n\t\t\tgetIndex(s, 2),\n\t\t\tgetIndex(r, 3),\n\t\t\ti, t)\n\t\ti++\n\t}\n\tfmt.Fprintln(w, \"}\")\n}\n\n// getIndex prints the subtag type and extracts its index of size nibble.\n// If the index is less than n nibbles, the result is prefixed with 0s.\nfunc getIndex(x interface{}, n int) string {\n\ts := fmt.Sprintf(\"%#v\", x) // s is of form Type{typeID: 0x00}\n\ts = s[strings.Index(s, \"0x\")+2 : len(s)-1]\n\treturn strings.Repeat(\"0\", n-len(s)) + s\n}\n\ntype byAlpha []language.Tag\n\nfunc (a byAlpha) Len() int           { return len(a) }\nfunc (a byAlpha) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a byAlpha) Less(i, j int) bool { return a[i].String() < a[j].String() }\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/go1_1.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !go1.2\n\npackage language\n\nimport \"sort\"\n\nfunc sortStable(s sort.Interface) {\n\tss := stableSort{\n\t\ts:   s,\n\t\tpos: make([]int, s.Len()),\n\t}\n\tfor i := range ss.pos {\n\t\tss.pos[i] = i\n\t}\n\tsort.Sort(&ss)\n}\n\ntype stableSort struct {\n\ts   sort.Interface\n\tpos []int\n}\n\nfunc (s *stableSort) Len() int {\n\treturn len(s.pos)\n}\n\nfunc (s *stableSort) Less(i, j int) bool {\n\treturn s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j]\n}\n\nfunc (s *stableSort) Swap(i, j int) {\n\ts.s.Swap(i, j)\n\ts.pos[i], s.pos[j] = s.pos[j], s.pos[i]\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/go1_2.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build go1.2\n\npackage language\n\nimport \"sort\"\n\nvar sortStable = sort.Stable\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/index.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage language\n\n// NumCompactTags is the number of common tags. The maximum tag is\n// NumCompactTags-1.\nconst NumCompactTags = 768\n\nvar specialTags = []Tag{ // 2 elements\n\t0: {lang: 0xd7, region: 0x6e, script: 0x0, pVariant: 0x5, pExt: 0xe, str: \"ca-ES-valencia\"},\n\t1: {lang: 0x139, region: 0x135, script: 0x0, pVariant: 0x5, pExt: 0x5, str: \"en-US-u-va-posix\"},\n} // Size: 72 bytes\n\nvar coreTags = map[uint32]uint16{\n\t0x0:        0,   // und\n\t0x01600000: 3,   // af\n\t0x016000d2: 4,   // af-NA\n\t0x01600161: 5,   // af-ZA\n\t0x01c00000: 6,   // agq\n\t0x01c00052: 7,   // agq-CM\n\t0x02100000: 8,   // ak\n\t0x02100080: 9,   // ak-GH\n\t0x02700000: 10,  // am\n\t0x0270006f: 11,  // am-ET\n\t0x03a00000: 12,  // ar\n\t0x03a00001: 13,  // ar-001\n\t0x03a00023: 14,  // ar-AE\n\t0x03a00039: 15,  // ar-BH\n\t0x03a00062: 16,  // ar-DJ\n\t0x03a00067: 17,  // ar-DZ\n\t0x03a0006b: 18,  // ar-EG\n\t0x03a0006c: 19,  // ar-EH\n\t0x03a0006d: 20,  // ar-ER\n\t0x03a00097: 21,  // ar-IL\n\t0x03a0009b: 22,  // ar-IQ\n\t0x03a000a1: 23,  // ar-JO\n\t0x03a000a8: 24,  // ar-KM\n\t0x03a000ac: 25,  // ar-KW\n\t0x03a000b0: 26,  // ar-LB\n\t0x03a000b9: 27,  // ar-LY\n\t0x03a000ba: 28,  // ar-MA\n\t0x03a000c9: 29,  // ar-MR\n\t0x03a000e1: 30,  // ar-OM\n\t0x03a000ed: 31,  // ar-PS\n\t0x03a000f3: 32,  // ar-QA\n\t0x03a00108: 33,  // ar-SA\n\t0x03a0010b: 34,  // ar-SD\n\t0x03a00115: 35,  // ar-SO\n\t0x03a00117: 36,  // ar-SS\n\t0x03a0011c: 37,  // ar-SY\n\t0x03a00120: 38,  // ar-TD\n\t0x03a00128: 39,  // ar-TN\n\t0x03a0015e: 40,  // ar-YE\n\t0x04000000: 41,  // ars\n\t0x04300000: 42,  // as\n\t0x04300099: 43,  // as-IN\n\t0x04400000: 44,  // asa\n\t0x0440012f: 45,  // asa-TZ\n\t0x04800000: 46,  // ast\n\t0x0480006e: 47,  // ast-ES\n\t0x05800000: 48,  // az\n\t0x0581f000: 49,  // az-Cyrl\n\t0x0581f032: 50,  // az-Cyrl-AZ\n\t0x05857000: 51,  // az-Latn\n\t0x05857032: 52,  // az-Latn-AZ\n\t0x05e00000: 53,  // bas\n\t0x05e00052: 54,  // bas-CM\n\t0x07100000: 55,  // be\n\t0x07100047: 56,  // be-BY\n\t0x07500000: 57,  // bem\n\t0x07500162: 58,  // bem-ZM\n\t0x07900000: 59,  // bez\n\t0x0790012f: 60,  // bez-TZ\n\t0x07e00000: 61,  // bg\n\t0x07e00038: 62,  // bg-BG\n\t0x08200000: 63,  // bh\n\t0x0a000000: 64,  // bm\n\t0x0a0000c3: 65,  // bm-ML\n\t0x0a500000: 66,  // bn\n\t0x0a500035: 67,  // bn-BD\n\t0x0a500099: 68,  // bn-IN\n\t0x0a900000: 69,  // bo\n\t0x0a900053: 70,  // bo-CN\n\t0x0a900099: 71,  // bo-IN\n\t0x0b200000: 72,  // br\n\t0x0b200078: 73,  // br-FR\n\t0x0b500000: 74,  // brx\n\t0x0b500099: 75,  // brx-IN\n\t0x0b700000: 76,  // bs\n\t0x0b71f000: 77,  // bs-Cyrl\n\t0x0b71f033: 78,  // bs-Cyrl-BA\n\t0x0b757000: 79,  // bs-Latn\n\t0x0b757033: 80,  // bs-Latn-BA\n\t0x0d700000: 81,  // ca\n\t0x0d700022: 82,  // ca-AD\n\t0x0d70006e: 83,  // ca-ES\n\t0x0d700078: 84,  // ca-FR\n\t0x0d70009e: 85,  // ca-IT\n\t0x0db00000: 86,  // ccp\n\t0x0db00035: 87,  // ccp-BD\n\t0x0db00099: 88,  // ccp-IN\n\t0x0dc00000: 89,  // ce\n\t0x0dc00106: 90,  // ce-RU\n\t0x0df00000: 91,  // cgg\n\t0x0df00131: 92,  // cgg-UG\n\t0x0e500000: 93,  // chr\n\t0x0e500135: 94,  // chr-US\n\t0x0e900000: 95,  // ckb\n\t0x0e90009b: 96,  // ckb-IQ\n\t0x0e90009c: 97,  // ckb-IR\n\t0x0fa00000: 98,  // cs\n\t0x0fa0005e: 99,  // cs-CZ\n\t0x0fe00000: 100, // cu\n\t0x0fe00106: 101, // cu-RU\n\t0x10000000: 102, // cy\n\t0x1000007b: 103, // cy-GB\n\t0x10100000: 104, // da\n\t0x10100063: 105, // da-DK\n\t0x10100082: 106, // da-GL\n\t0x10800000: 107, // dav\n\t0x108000a4: 108, // dav-KE\n\t0x10d00000: 109, // de\n\t0x10d0002e: 110, // de-AT\n\t0x10d00036: 111, // de-BE\n\t0x10d0004e: 112, // de-CH\n\t0x10d00060: 113, // de-DE\n\t0x10d0009e: 114, // de-IT\n\t0x10d000b2: 115, // de-LI\n\t0x10d000b7: 116, // de-LU\n\t0x11700000: 117, // dje\n\t0x117000d4: 118, // dje-NE\n\t0x11f00000: 119, // dsb\n\t0x11f00060: 120, // dsb-DE\n\t0x12400000: 121, // dua\n\t0x12400052: 122, // dua-CM\n\t0x12800000: 123, // dv\n\t0x12b00000: 124, // dyo\n\t0x12b00114: 125, // dyo-SN\n\t0x12d00000: 126, // dz\n\t0x12d00043: 127, // dz-BT\n\t0x12f00000: 128, // ebu\n\t0x12f000a4: 129, // ebu-KE\n\t0x13000000: 130, // ee\n\t0x13000080: 131, // ee-GH\n\t0x13000122: 132, // ee-TG\n\t0x13600000: 133, // el\n\t0x1360005d: 134, // el-CY\n\t0x13600087: 135, // el-GR\n\t0x13900000: 136, // en\n\t0x13900001: 137, // en-001\n\t0x1390001a: 138, // en-150\n\t0x13900025: 139, // en-AG\n\t0x13900026: 140, // en-AI\n\t0x1390002d: 141, // en-AS\n\t0x1390002e: 142, // en-AT\n\t0x1390002f: 143, // en-AU\n\t0x13900034: 144, // en-BB\n\t0x13900036: 145, // en-BE\n\t0x1390003a: 146, // en-BI\n\t0x1390003d: 147, // en-BM\n\t0x13900042: 148, // en-BS\n\t0x13900046: 149, // en-BW\n\t0x13900048: 150, // en-BZ\n\t0x13900049: 151, // en-CA\n\t0x1390004a: 152, // en-CC\n\t0x1390004e: 153, // en-CH\n\t0x13900050: 154, // en-CK\n\t0x13900052: 155, // en-CM\n\t0x1390005c: 156, // en-CX\n\t0x1390005d: 157, // en-CY\n\t0x13900060: 158, // en-DE\n\t0x13900061: 159, // en-DG\n\t0x13900063: 160, // en-DK\n\t0x13900064: 161, // en-DM\n\t0x1390006d: 162, // en-ER\n\t0x13900072: 163, // en-FI\n\t0x13900073: 164, // en-FJ\n\t0x13900074: 165, // en-FK\n\t0x13900075: 166, // en-FM\n\t0x1390007b: 167, // en-GB\n\t0x1390007c: 168, // en-GD\n\t0x1390007f: 169, // en-GG\n\t0x13900080: 170, // en-GH\n\t0x13900081: 171, // en-GI\n\t0x13900083: 172, // en-GM\n\t0x1390008a: 173, // en-GU\n\t0x1390008c: 174, // en-GY\n\t0x1390008d: 175, // en-HK\n\t0x13900096: 176, // en-IE\n\t0x13900097: 177, // en-IL\n\t0x13900098: 178, // en-IM\n\t0x13900099: 179, // en-IN\n\t0x1390009a: 180, // en-IO\n\t0x1390009f: 181, // en-JE\n\t0x139000a0: 182, // en-JM\n\t0x139000a4: 183, // en-KE\n\t0x139000a7: 184, // en-KI\n\t0x139000a9: 185, // en-KN\n\t0x139000ad: 186, // en-KY\n\t0x139000b1: 187, // en-LC\n\t0x139000b4: 188, // en-LR\n\t0x139000b5: 189, // en-LS\n\t0x139000bf: 190, // en-MG\n\t0x139000c0: 191, // en-MH\n\t0x139000c6: 192, // en-MO\n\t0x139000c7: 193, // en-MP\n\t0x139000ca: 194, // en-MS\n\t0x139000cb: 195, // en-MT\n\t0x139000cc: 196, // en-MU\n\t0x139000ce: 197, // en-MW\n\t0x139000d0: 198, // en-MY\n\t0x139000d2: 199, // en-NA\n\t0x139000d5: 200, // en-NF\n\t0x139000d6: 201, // en-NG\n\t0x139000d9: 202, // en-NL\n\t0x139000dd: 203, // en-NR\n\t0x139000df: 204, // en-NU\n\t0x139000e0: 205, // en-NZ\n\t0x139000e6: 206, // en-PG\n\t0x139000e7: 207, // en-PH\n\t0x139000e8: 208, // en-PK\n\t0x139000eb: 209, // en-PN\n\t0x139000ec: 210, // en-PR\n\t0x139000f0: 211, // en-PW\n\t0x13900107: 212, // en-RW\n\t0x13900109: 213, // en-SB\n\t0x1390010a: 214, // en-SC\n\t0x1390010b: 215, // en-SD\n\t0x1390010c: 216, // en-SE\n\t0x1390010d: 217, // en-SG\n\t0x1390010e: 218, // en-SH\n\t0x1390010f: 219, // en-SI\n\t0x13900112: 220, // en-SL\n\t0x13900117: 221, // en-SS\n\t0x1390011b: 222, // en-SX\n\t0x1390011d: 223, // en-SZ\n\t0x1390011f: 224, // en-TC\n\t0x13900125: 225, // en-TK\n\t0x13900129: 226, // en-TO\n\t0x1390012c: 227, // en-TT\n\t0x1390012d: 228, // en-TV\n\t0x1390012f: 229, // en-TZ\n\t0x13900131: 230, // en-UG\n\t0x13900133: 231, // en-UM\n\t0x13900135: 232, // en-US\n\t0x13900139: 233, // en-VC\n\t0x1390013c: 234, // en-VG\n\t0x1390013d: 235, // en-VI\n\t0x1390013f: 236, // en-VU\n\t0x13900142: 237, // en-WS\n\t0x13900161: 238, // en-ZA\n\t0x13900162: 239, // en-ZM\n\t0x13900164: 240, // en-ZW\n\t0x13c00000: 241, // eo\n\t0x13c00001: 242, // eo-001\n\t0x13e00000: 243, // es\n\t0x13e0001f: 244, // es-419\n\t0x13e0002c: 245, // es-AR\n\t0x13e0003f: 246, // es-BO\n\t0x13e00041: 247, // es-BR\n\t0x13e00048: 248, // es-BZ\n\t0x13e00051: 249, // es-CL\n\t0x13e00054: 250, // es-CO\n\t0x13e00056: 251, // es-CR\n\t0x13e00059: 252, // es-CU\n\t0x13e00065: 253, // es-DO\n\t0x13e00068: 254, // es-EA\n\t0x13e00069: 255, // es-EC\n\t0x13e0006e: 256, // es-ES\n\t0x13e00086: 257, // es-GQ\n\t0x13e00089: 258, // es-GT\n\t0x13e0008f: 259, // es-HN\n\t0x13e00094: 260, // es-IC\n\t0x13e000cf: 261, // es-MX\n\t0x13e000d8: 262, // es-NI\n\t0x13e000e2: 263, // es-PA\n\t0x13e000e4: 264, // es-PE\n\t0x13e000e7: 265, // es-PH\n\t0x13e000ec: 266, // es-PR\n\t0x13e000f1: 267, // es-PY\n\t0x13e0011a: 268, // es-SV\n\t0x13e00135: 269, // es-US\n\t0x13e00136: 270, // es-UY\n\t0x13e0013b: 271, // es-VE\n\t0x14000000: 272, // et\n\t0x1400006a: 273, // et-EE\n\t0x14500000: 274, // eu\n\t0x1450006e: 275, // eu-ES\n\t0x14600000: 276, // ewo\n\t0x14600052: 277, // ewo-CM\n\t0x14800000: 278, // fa\n\t0x14800024: 279, // fa-AF\n\t0x1480009c: 280, // fa-IR\n\t0x14e00000: 281, // ff\n\t0x14e00052: 282, // ff-CM\n\t0x14e00084: 283, // ff-GN\n\t0x14e000c9: 284, // ff-MR\n\t0x14e00114: 285, // ff-SN\n\t0x15100000: 286, // fi\n\t0x15100072: 287, // fi-FI\n\t0x15300000: 288, // fil\n\t0x153000e7: 289, // fil-PH\n\t0x15800000: 290, // fo\n\t0x15800063: 291, // fo-DK\n\t0x15800076: 292, // fo-FO\n\t0x15e00000: 293, // fr\n\t0x15e00036: 294, // fr-BE\n\t0x15e00037: 295, // fr-BF\n\t0x15e0003a: 296, // fr-BI\n\t0x15e0003b: 297, // fr-BJ\n\t0x15e0003c: 298, // fr-BL\n\t0x15e00049: 299, // fr-CA\n\t0x15e0004b: 300, // fr-CD\n\t0x15e0004c: 301, // fr-CF\n\t0x15e0004d: 302, // fr-CG\n\t0x15e0004e: 303, // fr-CH\n\t0x15e0004f: 304, // fr-CI\n\t0x15e00052: 305, // fr-CM\n\t0x15e00062: 306, // fr-DJ\n\t0x15e00067: 307, // fr-DZ\n\t0x15e00078: 308, // fr-FR\n\t0x15e0007a: 309, // fr-GA\n\t0x15e0007e: 310, // fr-GF\n\t0x15e00084: 311, // fr-GN\n\t0x15e00085: 312, // fr-GP\n\t0x15e00086: 313, // fr-GQ\n\t0x15e00091: 314, // fr-HT\n\t0x15e000a8: 315, // fr-KM\n\t0x15e000b7: 316, // fr-LU\n\t0x15e000ba: 317, // fr-MA\n\t0x15e000bb: 318, // fr-MC\n\t0x15e000be: 319, // fr-MF\n\t0x15e000bf: 320, // fr-MG\n\t0x15e000c3: 321, // fr-ML\n\t0x15e000c8: 322, // fr-MQ\n\t0x15e000c9: 323, // fr-MR\n\t0x15e000cc: 324, // fr-MU\n\t0x15e000d3: 325, // fr-NC\n\t0x15e000d4: 326, // fr-NE\n\t0x15e000e5: 327, // fr-PF\n\t0x15e000ea: 328, // fr-PM\n\t0x15e00102: 329, // fr-RE\n\t0x15e00107: 330, // fr-RW\n\t0x15e0010a: 331, // fr-SC\n\t0x15e00114: 332, // fr-SN\n\t0x15e0011c: 333, // fr-SY\n\t0x15e00120: 334, // fr-TD\n\t0x15e00122: 335, // fr-TG\n\t0x15e00128: 336, // fr-TN\n\t0x15e0013f: 337, // fr-VU\n\t0x15e00140: 338, // fr-WF\n\t0x15e0015f: 339, // fr-YT\n\t0x16900000: 340, // fur\n\t0x1690009e: 341, // fur-IT\n\t0x16d00000: 342, // fy\n\t0x16d000d9: 343, // fy-NL\n\t0x16e00000: 344, // ga\n\t0x16e00096: 345, // ga-IE\n\t0x17e00000: 346, // gd\n\t0x17e0007b: 347, // gd-GB\n\t0x19000000: 348, // gl\n\t0x1900006e: 349, // gl-ES\n\t0x1a300000: 350, // gsw\n\t0x1a30004e: 351, // gsw-CH\n\t0x1a300078: 352, // gsw-FR\n\t0x1a3000b2: 353, // gsw-LI\n\t0x1a400000: 354, // gu\n\t0x1a400099: 355, // gu-IN\n\t0x1a900000: 356, // guw\n\t0x1ab00000: 357, // guz\n\t0x1ab000a4: 358, // guz-KE\n\t0x1ac00000: 359, // gv\n\t0x1ac00098: 360, // gv-IM\n\t0x1b400000: 361, // ha\n\t0x1b400080: 362, // ha-GH\n\t0x1b4000d4: 363, // ha-NE\n\t0x1b4000d6: 364, // ha-NG\n\t0x1b800000: 365, // haw\n\t0x1b800135: 366, // haw-US\n\t0x1bc00000: 367, // he\n\t0x1bc00097: 368, // he-IL\n\t0x1be00000: 369, // hi\n\t0x1be00099: 370, // hi-IN\n\t0x1d100000: 371, // hr\n\t0x1d100033: 372, // hr-BA\n\t0x1d100090: 373, // hr-HR\n\t0x1d200000: 374, // hsb\n\t0x1d200060: 375, // hsb-DE\n\t0x1d500000: 376, // hu\n\t0x1d500092: 377, // hu-HU\n\t0x1d700000: 378, // hy\n\t0x1d700028: 379, // hy-AM\n\t0x1e100000: 380, // id\n\t0x1e100095: 381, // id-ID\n\t0x1e700000: 382, // ig\n\t0x1e7000d6: 383, // ig-NG\n\t0x1ea00000: 384, // ii\n\t0x1ea00053: 385, // ii-CN\n\t0x1f500000: 386, // io\n\t0x1f800000: 387, // is\n\t0x1f80009d: 388, // is-IS\n\t0x1f900000: 389, // it\n\t0x1f90004e: 390, // it-CH\n\t0x1f90009e: 391, // it-IT\n\t0x1f900113: 392, // it-SM\n\t0x1f900138: 393, // it-VA\n\t0x1fa00000: 394, // iu\n\t0x20000000: 395, // ja\n\t0x200000a2: 396, // ja-JP\n\t0x20300000: 397, // jbo\n\t0x20700000: 398, // jgo\n\t0x20700052: 399, // jgo-CM\n\t0x20a00000: 400, // jmc\n\t0x20a0012f: 401, // jmc-TZ\n\t0x20e00000: 402, // jv\n\t0x21000000: 403, // ka\n\t0x2100007d: 404, // ka-GE\n\t0x21200000: 405, // kab\n\t0x21200067: 406, // kab-DZ\n\t0x21600000: 407, // kaj\n\t0x21700000: 408, // kam\n\t0x217000a4: 409, // kam-KE\n\t0x21f00000: 410, // kcg\n\t0x22300000: 411, // kde\n\t0x2230012f: 412, // kde-TZ\n\t0x22700000: 413, // kea\n\t0x2270005a: 414, // kea-CV\n\t0x23400000: 415, // khq\n\t0x234000c3: 416, // khq-ML\n\t0x23900000: 417, // ki\n\t0x239000a4: 418, // ki-KE\n\t0x24200000: 419, // kk\n\t0x242000ae: 420, // kk-KZ\n\t0x24400000: 421, // kkj\n\t0x24400052: 422, // kkj-CM\n\t0x24500000: 423, // kl\n\t0x24500082: 424, // kl-GL\n\t0x24600000: 425, // kln\n\t0x246000a4: 426, // kln-KE\n\t0x24a00000: 427, // km\n\t0x24a000a6: 428, // km-KH\n\t0x25100000: 429, // kn\n\t0x25100099: 430, // kn-IN\n\t0x25400000: 431, // ko\n\t0x254000aa: 432, // ko-KP\n\t0x254000ab: 433, // ko-KR\n\t0x25600000: 434, // kok\n\t0x25600099: 435, // kok-IN\n\t0x26a00000: 436, // ks\n\t0x26a00099: 437, // ks-IN\n\t0x26b00000: 438, // ksb\n\t0x26b0012f: 439, // ksb-TZ\n\t0x26d00000: 440, // ksf\n\t0x26d00052: 441, // ksf-CM\n\t0x26e00000: 442, // ksh\n\t0x26e00060: 443, // ksh-DE\n\t0x27400000: 444, // ku\n\t0x28100000: 445, // kw\n\t0x2810007b: 446, // kw-GB\n\t0x28a00000: 447, // ky\n\t0x28a000a5: 448, // ky-KG\n\t0x29100000: 449, // lag\n\t0x2910012f: 450, // lag-TZ\n\t0x29500000: 451, // lb\n\t0x295000b7: 452, // lb-LU\n\t0x2a300000: 453, // lg\n\t0x2a300131: 454, // lg-UG\n\t0x2af00000: 455, // lkt\n\t0x2af00135: 456, // lkt-US\n\t0x2b500000: 457, // ln\n\t0x2b50002a: 458, // ln-AO\n\t0x2b50004b: 459, // ln-CD\n\t0x2b50004c: 460, // ln-CF\n\t0x2b50004d: 461, // ln-CG\n\t0x2b800000: 462, // lo\n\t0x2b8000af: 463, // lo-LA\n\t0x2bf00000: 464, // lrc\n\t0x2bf0009b: 465, // lrc-IQ\n\t0x2bf0009c: 466, // lrc-IR\n\t0x2c000000: 467, // lt\n\t0x2c0000b6: 468, // lt-LT\n\t0x2c200000: 469, // lu\n\t0x2c20004b: 470, // lu-CD\n\t0x2c400000: 471, // luo\n\t0x2c4000a4: 472, // luo-KE\n\t0x2c500000: 473, // luy\n\t0x2c5000a4: 474, // luy-KE\n\t0x2c700000: 475, // lv\n\t0x2c7000b8: 476, // lv-LV\n\t0x2d100000: 477, // mas\n\t0x2d1000a4: 478, // mas-KE\n\t0x2d10012f: 479, // mas-TZ\n\t0x2e900000: 480, // mer\n\t0x2e9000a4: 481, // mer-KE\n\t0x2ed00000: 482, // mfe\n\t0x2ed000cc: 483, // mfe-MU\n\t0x2f100000: 484, // mg\n\t0x2f1000bf: 485, // mg-MG\n\t0x2f200000: 486, // mgh\n\t0x2f2000d1: 487, // mgh-MZ\n\t0x2f400000: 488, // mgo\n\t0x2f400052: 489, // mgo-CM\n\t0x2ff00000: 490, // mk\n\t0x2ff000c2: 491, // mk-MK\n\t0x30400000: 492, // ml\n\t0x30400099: 493, // ml-IN\n\t0x30b00000: 494, // mn\n\t0x30b000c5: 495, // mn-MN\n\t0x31b00000: 496, // mr\n\t0x31b00099: 497, // mr-IN\n\t0x31f00000: 498, // ms\n\t0x31f0003e: 499, // ms-BN\n\t0x31f000d0: 500, // ms-MY\n\t0x31f0010d: 501, // ms-SG\n\t0x32000000: 502, // mt\n\t0x320000cb: 503, // mt-MT\n\t0x32500000: 504, // mua\n\t0x32500052: 505, // mua-CM\n\t0x33100000: 506, // my\n\t0x331000c4: 507, // my-MM\n\t0x33a00000: 508, // mzn\n\t0x33a0009c: 509, // mzn-IR\n\t0x34100000: 510, // nah\n\t0x34500000: 511, // naq\n\t0x345000d2: 512, // naq-NA\n\t0x34700000: 513, // nb\n\t0x347000da: 514, // nb-NO\n\t0x34700110: 515, // nb-SJ\n\t0x34e00000: 516, // nd\n\t0x34e00164: 517, // nd-ZW\n\t0x35000000: 518, // nds\n\t0x35000060: 519, // nds-DE\n\t0x350000d9: 520, // nds-NL\n\t0x35100000: 521, // ne\n\t0x35100099: 522, // ne-IN\n\t0x351000db: 523, // ne-NP\n\t0x36700000: 524, // nl\n\t0x36700030: 525, // nl-AW\n\t0x36700036: 526, // nl-BE\n\t0x36700040: 527, // nl-BQ\n\t0x3670005b: 528, // nl-CW\n\t0x367000d9: 529, // nl-NL\n\t0x36700116: 530, // nl-SR\n\t0x3670011b: 531, // nl-SX\n\t0x36800000: 532, // nmg\n\t0x36800052: 533, // nmg-CM\n\t0x36a00000: 534, // nn\n\t0x36a000da: 535, // nn-NO\n\t0x36c00000: 536, // nnh\n\t0x36c00052: 537, // nnh-CM\n\t0x36f00000: 538, // no\n\t0x37500000: 539, // nqo\n\t0x37600000: 540, // nr\n\t0x37a00000: 541, // nso\n\t0x38000000: 542, // nus\n\t0x38000117: 543, // nus-SS\n\t0x38700000: 544, // ny\n\t0x38900000: 545, // nyn\n\t0x38900131: 546, // nyn-UG\n\t0x39000000: 547, // om\n\t0x3900006f: 548, // om-ET\n\t0x390000a4: 549, // om-KE\n\t0x39500000: 550, // or\n\t0x39500099: 551, // or-IN\n\t0x39800000: 552, // os\n\t0x3980007d: 553, // os-GE\n\t0x39800106: 554, // os-RU\n\t0x39d00000: 555, // pa\n\t0x39d05000: 556, // pa-Arab\n\t0x39d050e8: 557, // pa-Arab-PK\n\t0x39d33000: 558, // pa-Guru\n\t0x39d33099: 559, // pa-Guru-IN\n\t0x3a100000: 560, // pap\n\t0x3b300000: 561, // pl\n\t0x3b3000e9: 562, // pl-PL\n\t0x3bd00000: 563, // prg\n\t0x3bd00001: 564, // prg-001\n\t0x3be00000: 565, // ps\n\t0x3be00024: 566, // ps-AF\n\t0x3c000000: 567, // pt\n\t0x3c00002a: 568, // pt-AO\n\t0x3c000041: 569, // pt-BR\n\t0x3c00004e: 570, // pt-CH\n\t0x3c00005a: 571, // pt-CV\n\t0x3c000086: 572, // pt-GQ\n\t0x3c00008b: 573, // pt-GW\n\t0x3c0000b7: 574, // pt-LU\n\t0x3c0000c6: 575, // pt-MO\n\t0x3c0000d1: 576, // pt-MZ\n\t0x3c0000ee: 577, // pt-PT\n\t0x3c000118: 578, // pt-ST\n\t0x3c000126: 579, // pt-TL\n\t0x3c400000: 580, // qu\n\t0x3c40003f: 581, // qu-BO\n\t0x3c400069: 582, // qu-EC\n\t0x3c4000e4: 583, // qu-PE\n\t0x3d400000: 584, // rm\n\t0x3d40004e: 585, // rm-CH\n\t0x3d900000: 586, // rn\n\t0x3d90003a: 587, // rn-BI\n\t0x3dc00000: 588, // ro\n\t0x3dc000bc: 589, // ro-MD\n\t0x3dc00104: 590, // ro-RO\n\t0x3de00000: 591, // rof\n\t0x3de0012f: 592, // rof-TZ\n\t0x3e200000: 593, // ru\n\t0x3e200047: 594, // ru-BY\n\t0x3e2000a5: 595, // ru-KG\n\t0x3e2000ae: 596, // ru-KZ\n\t0x3e2000bc: 597, // ru-MD\n\t0x3e200106: 598, // ru-RU\n\t0x3e200130: 599, // ru-UA\n\t0x3e500000: 600, // rw\n\t0x3e500107: 601, // rw-RW\n\t0x3e600000: 602, // rwk\n\t0x3e60012f: 603, // rwk-TZ\n\t0x3eb00000: 604, // sah\n\t0x3eb00106: 605, // sah-RU\n\t0x3ec00000: 606, // saq\n\t0x3ec000a4: 607, // saq-KE\n\t0x3f300000: 608, // sbp\n\t0x3f30012f: 609, // sbp-TZ\n\t0x3fa00000: 610, // sd\n\t0x3fa000e8: 611, // sd-PK\n\t0x3fc00000: 612, // sdh\n\t0x3fd00000: 613, // se\n\t0x3fd00072: 614, // se-FI\n\t0x3fd000da: 615, // se-NO\n\t0x3fd0010c: 616, // se-SE\n\t0x3ff00000: 617, // seh\n\t0x3ff000d1: 618, // seh-MZ\n\t0x40100000: 619, // ses\n\t0x401000c3: 620, // ses-ML\n\t0x40200000: 621, // sg\n\t0x4020004c: 622, // sg-CF\n\t0x40800000: 623, // shi\n\t0x40857000: 624, // shi-Latn\n\t0x408570ba: 625, // shi-Latn-MA\n\t0x408dc000: 626, // shi-Tfng\n\t0x408dc0ba: 627, // shi-Tfng-MA\n\t0x40c00000: 628, // si\n\t0x40c000b3: 629, // si-LK\n\t0x41200000: 630, // sk\n\t0x41200111: 631, // sk-SK\n\t0x41600000: 632, // sl\n\t0x4160010f: 633, // sl-SI\n\t0x41c00000: 634, // sma\n\t0x41d00000: 635, // smi\n\t0x41e00000: 636, // smj\n\t0x41f00000: 637, // smn\n\t0x41f00072: 638, // smn-FI\n\t0x42200000: 639, // sms\n\t0x42300000: 640, // sn\n\t0x42300164: 641, // sn-ZW\n\t0x42900000: 642, // so\n\t0x42900062: 643, // so-DJ\n\t0x4290006f: 644, // so-ET\n\t0x429000a4: 645, // so-KE\n\t0x42900115: 646, // so-SO\n\t0x43100000: 647, // sq\n\t0x43100027: 648, // sq-AL\n\t0x431000c2: 649, // sq-MK\n\t0x4310014d: 650, // sq-XK\n\t0x43200000: 651, // sr\n\t0x4321f000: 652, // sr-Cyrl\n\t0x4321f033: 653, // sr-Cyrl-BA\n\t0x4321f0bd: 654, // sr-Cyrl-ME\n\t0x4321f105: 655, // sr-Cyrl-RS\n\t0x4321f14d: 656, // sr-Cyrl-XK\n\t0x43257000: 657, // sr-Latn\n\t0x43257033: 658, // sr-Latn-BA\n\t0x432570bd: 659, // sr-Latn-ME\n\t0x43257105: 660, // sr-Latn-RS\n\t0x4325714d: 661, // sr-Latn-XK\n\t0x43700000: 662, // ss\n\t0x43a00000: 663, // ssy\n\t0x43b00000: 664, // st\n\t0x44400000: 665, // sv\n\t0x44400031: 666, // sv-AX\n\t0x44400072: 667, // sv-FI\n\t0x4440010c: 668, // sv-SE\n\t0x44500000: 669, // sw\n\t0x4450004b: 670, // sw-CD\n\t0x445000a4: 671, // sw-KE\n\t0x4450012f: 672, // sw-TZ\n\t0x44500131: 673, // sw-UG\n\t0x44e00000: 674, // syr\n\t0x45000000: 675, // ta\n\t0x45000099: 676, // ta-IN\n\t0x450000b3: 677, // ta-LK\n\t0x450000d0: 678, // ta-MY\n\t0x4500010d: 679, // ta-SG\n\t0x46100000: 680, // te\n\t0x46100099: 681, // te-IN\n\t0x46400000: 682, // teo\n\t0x464000a4: 683, // teo-KE\n\t0x46400131: 684, // teo-UG\n\t0x46700000: 685, // tg\n\t0x46700124: 686, // tg-TJ\n\t0x46b00000: 687, // th\n\t0x46b00123: 688, // th-TH\n\t0x46f00000: 689, // ti\n\t0x46f0006d: 690, // ti-ER\n\t0x46f0006f: 691, // ti-ET\n\t0x47100000: 692, // tig\n\t0x47600000: 693, // tk\n\t0x47600127: 694, // tk-TM\n\t0x48000000: 695, // tn\n\t0x48200000: 696, // to\n\t0x48200129: 697, // to-TO\n\t0x48a00000: 698, // tr\n\t0x48a0005d: 699, // tr-CY\n\t0x48a0012b: 700, // tr-TR\n\t0x48e00000: 701, // ts\n\t0x49400000: 702, // tt\n\t0x49400106: 703, // tt-RU\n\t0x4a400000: 704, // twq\n\t0x4a4000d4: 705, // twq-NE\n\t0x4a900000: 706, // tzm\n\t0x4a9000ba: 707, // tzm-MA\n\t0x4ac00000: 708, // ug\n\t0x4ac00053: 709, // ug-CN\n\t0x4ae00000: 710, // uk\n\t0x4ae00130: 711, // uk-UA\n\t0x4b400000: 712, // ur\n\t0x4b400099: 713, // ur-IN\n\t0x4b4000e8: 714, // ur-PK\n\t0x4bc00000: 715, // uz\n\t0x4bc05000: 716, // uz-Arab\n\t0x4bc05024: 717, // uz-Arab-AF\n\t0x4bc1f000: 718, // uz-Cyrl\n\t0x4bc1f137: 719, // uz-Cyrl-UZ\n\t0x4bc57000: 720, // uz-Latn\n\t0x4bc57137: 721, // uz-Latn-UZ\n\t0x4be00000: 722, // vai\n\t0x4be57000: 723, // vai-Latn\n\t0x4be570b4: 724, // vai-Latn-LR\n\t0x4bee3000: 725, // vai-Vaii\n\t0x4bee30b4: 726, // vai-Vaii-LR\n\t0x4c000000: 727, // ve\n\t0x4c300000: 728, // vi\n\t0x4c30013e: 729, // vi-VN\n\t0x4c900000: 730, // vo\n\t0x4c900001: 731, // vo-001\n\t0x4cc00000: 732, // vun\n\t0x4cc0012f: 733, // vun-TZ\n\t0x4ce00000: 734, // wa\n\t0x4cf00000: 735, // wae\n\t0x4cf0004e: 736, // wae-CH\n\t0x4e500000: 737, // wo\n\t0x4e500114: 738, // wo-SN\n\t0x4f200000: 739, // xh\n\t0x4fb00000: 740, // xog\n\t0x4fb00131: 741, // xog-UG\n\t0x50900000: 742, // yav\n\t0x50900052: 743, // yav-CM\n\t0x51200000: 744, // yi\n\t0x51200001: 745, // yi-001\n\t0x51800000: 746, // yo\n\t0x5180003b: 747, // yo-BJ\n\t0x518000d6: 748, // yo-NG\n\t0x51f00000: 749, // yue\n\t0x51f38000: 750, // yue-Hans\n\t0x51f38053: 751, // yue-Hans-CN\n\t0x51f39000: 752, // yue-Hant\n\t0x51f3908d: 753, // yue-Hant-HK\n\t0x52800000: 754, // zgh\n\t0x528000ba: 755, // zgh-MA\n\t0x52900000: 756, // zh\n\t0x52938000: 757, // zh-Hans\n\t0x52938053: 758, // zh-Hans-CN\n\t0x5293808d: 759, // zh-Hans-HK\n\t0x529380c6: 760, // zh-Hans-MO\n\t0x5293810d: 761, // zh-Hans-SG\n\t0x52939000: 762, // zh-Hant\n\t0x5293908d: 763, // zh-Hant-HK\n\t0x529390c6: 764, // zh-Hant-MO\n\t0x5293912e: 765, // zh-Hant-TW\n\t0x52f00000: 766, // zu\n\t0x52f00161: 767, // zu-ZA\n}\n\n// Total table size 4676 bytes (4KiB); checksum: 17BE3673\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/language.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go gen_common.go -output tables.go\n//go:generate go run gen_index.go\n\npackage language\n\n// TODO: Remove above NOTE after:\n// - verifying that tables are dropped correctly (most notably matcher tables).\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n)\n\nconst (\n\t// maxCoreSize is the maximum size of a BCP 47 tag without variants and\n\t// extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes.\n\tmaxCoreSize = 12\n\n\t// max99thPercentileSize is a somewhat arbitrary buffer size that presumably\n\t// is large enough to hold at least 99% of the BCP 47 tags.\n\tmax99thPercentileSize = 32\n\n\t// maxSimpleUExtensionSize is the maximum size of a -u extension with one\n\t// key-type pair. Equals len(\"-u-\") + key (2) + dash + max value (8).\n\tmaxSimpleUExtensionSize = 14\n)\n\n// Tag represents a BCP 47 language tag. It is used to specify an instance of a\n// specific language or locale. All language tag values are guaranteed to be\n// well-formed.\ntype Tag struct {\n\tlang   langID\n\tregion regionID\n\t// TODO: we will soon run out of positions for script. Idea: instead of\n\t// storing lang, region, and script codes, store only the compact index and\n\t// have a lookup table from this code to its expansion. This greatly speeds\n\t// up table lookup, speed up common variant cases.\n\t// This will also immediately free up 3 extra bytes. Also, the pVariant\n\t// field can now be moved to the lookup table, as the compact index uniquely\n\t// determines the offset of a possible variant.\n\tscript   scriptID\n\tpVariant byte   // offset in str, includes preceding '-'\n\tpExt     uint16 // offset of first extension, includes preceding '-'\n\n\t// str is the string representation of the Tag. It will only be used if the\n\t// tag has variants or extensions.\n\tstr string\n}\n\n// Make is a convenience wrapper for Parse that omits the error.\n// In case of an error, a sensible default is returned.\nfunc Make(s string) Tag {\n\treturn Default.Make(s)\n}\n\n// Make is a convenience wrapper for c.Parse that omits the error.\n// In case of an error, a sensible default is returned.\nfunc (c CanonType) Make(s string) Tag {\n\tt, _ := c.Parse(s)\n\treturn t\n}\n\n// Raw returns the raw base language, script and region, without making an\n// attempt to infer their values.\nfunc (t Tag) Raw() (b Base, s Script, r Region) {\n\treturn Base{t.lang}, Script{t.script}, Region{t.region}\n}\n\n// equalTags compares language, script and region subtags only.\nfunc (t Tag) equalTags(a Tag) bool {\n\treturn t.lang == a.lang && t.script == a.script && t.region == a.region\n}\n\n// IsRoot returns true if t is equal to language \"und\".\nfunc (t Tag) IsRoot() bool {\n\tif int(t.pVariant) < len(t.str) {\n\t\treturn false\n\t}\n\treturn t.equalTags(und)\n}\n\n// private reports whether the Tag consists solely of a private use tag.\nfunc (t Tag) private() bool {\n\treturn t.str != \"\" && t.pVariant == 0\n}\n\n// CanonType can be used to enable or disable various types of canonicalization.\ntype CanonType int\n\nconst (\n\t// Replace deprecated base languages with their preferred replacements.\n\tDeprecatedBase CanonType = 1 << iota\n\t// Replace deprecated scripts with their preferred replacements.\n\tDeprecatedScript\n\t// Replace deprecated regions with their preferred replacements.\n\tDeprecatedRegion\n\t// Remove redundant scripts.\n\tSuppressScript\n\t// Normalize legacy encodings. This includes legacy languages defined in\n\t// CLDR as well as bibliographic codes defined in ISO-639.\n\tLegacy\n\t// Map the dominant language of a macro language group to the macro language\n\t// subtag. For example cmn -> zh.\n\tMacro\n\t// The CLDR flag should be used if full compatibility with CLDR is required.\n\t// There are a few cases where language.Tag may differ from CLDR. To follow all\n\t// of CLDR's suggestions, use All|CLDR.\n\tCLDR\n\n\t// Raw can be used to Compose or Parse without Canonicalization.\n\tRaw CanonType = 0\n\n\t// Replace all deprecated tags with their preferred replacements.\n\tDeprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion\n\n\t// All canonicalizations recommended by BCP 47.\n\tBCP47 = Deprecated | SuppressScript\n\n\t// All canonicalizations.\n\tAll = BCP47 | Legacy | Macro\n\n\t// Default is the canonicalization used by Parse, Make and Compose. To\n\t// preserve as much information as possible, canonicalizations that remove\n\t// potentially valuable information are not included. The Matcher is\n\t// designed to recognize similar tags that would be the same if\n\t// they were canonicalized using All.\n\tDefault = Deprecated | Legacy\n\n\tcanonLang = DeprecatedBase | Legacy | Macro\n\n\t// TODO: LikelyScript, LikelyRegion: suppress similar to ICU.\n)\n\n// canonicalize returns the canonicalized equivalent of the tag and\n// whether there was any change.\nfunc (t Tag) canonicalize(c CanonType) (Tag, bool) {\n\tif c == Raw {\n\t\treturn t, false\n\t}\n\tchanged := false\n\tif c&SuppressScript != 0 {\n\t\tif t.lang < langNoIndexOffset && uint8(t.script) == suppressScript[t.lang] {\n\t\t\tt.script = 0\n\t\t\tchanged = true\n\t\t}\n\t}\n\tif c&canonLang != 0 {\n\t\tfor {\n\t\t\tif l, aliasType := normLang(t.lang); l != t.lang {\n\t\t\t\tswitch aliasType {\n\t\t\t\tcase langLegacy:\n\t\t\t\t\tif c&Legacy != 0 {\n\t\t\t\t\t\tif t.lang == _sh && t.script == 0 {\n\t\t\t\t\t\t\tt.script = _Latn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tt.lang = l\n\t\t\t\t\t\tchanged = true\n\t\t\t\t\t}\n\t\t\t\tcase langMacro:\n\t\t\t\t\tif c&Macro != 0 {\n\t\t\t\t\t\t// We deviate here from CLDR. The mapping \"nb\" -> \"no\"\n\t\t\t\t\t\t// qualifies as a typical Macro language mapping.  However,\n\t\t\t\t\t\t// for legacy reasons, CLDR maps \"no\", the macro language\n\t\t\t\t\t\t// code for Norwegian, to the dominant variant \"nb\". This\n\t\t\t\t\t\t// change is currently under consideration for CLDR as well.\n\t\t\t\t\t\t// See http://unicode.org/cldr/trac/ticket/2698 and also\n\t\t\t\t\t\t// http://unicode.org/cldr/trac/ticket/1790 for some of the\n\t\t\t\t\t\t// practical implications. TODO: this check could be removed\n\t\t\t\t\t\t// if CLDR adopts this change.\n\t\t\t\t\t\tif c&CLDR == 0 || t.lang != _nb {\n\t\t\t\t\t\t\tchanged = true\n\t\t\t\t\t\t\tt.lang = l\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase langDeprecated:\n\t\t\t\t\tif c&DeprecatedBase != 0 {\n\t\t\t\t\t\tif t.lang == _mo && t.region == 0 {\n\t\t\t\t\t\t\tt.region = _MD\n\t\t\t\t\t\t}\n\t\t\t\t\t\tt.lang = l\n\t\t\t\t\t\tchanged = true\n\t\t\t\t\t\t// Other canonicalization types may still apply.\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if c&Legacy != 0 && t.lang == _no && c&CLDR != 0 {\n\t\t\t\tt.lang = _nb\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tif c&DeprecatedScript != 0 {\n\t\tif t.script == _Qaai {\n\t\t\tchanged = true\n\t\t\tt.script = _Zinh\n\t\t}\n\t}\n\tif c&DeprecatedRegion != 0 {\n\t\tif r := normRegion(t.region); r != 0 {\n\t\t\tchanged = true\n\t\t\tt.region = r\n\t\t}\n\t}\n\treturn t, changed\n}\n\n// Canonicalize returns the canonicalized equivalent of the tag.\nfunc (c CanonType) Canonicalize(t Tag) (Tag, error) {\n\tt, changed := t.canonicalize(c)\n\tif changed {\n\t\tt.remakeString()\n\t}\n\treturn t, nil\n}\n\n// Confidence indicates the level of certainty for a given return value.\n// For example, Serbian may be written in Cyrillic or Latin script.\n// The confidence level indicates whether a value was explicitly specified,\n// whether it is typically the only possible value, or whether there is\n// an ambiguity.\ntype Confidence int\n\nconst (\n\tNo    Confidence = iota // full confidence that there was no match\n\tLow                     // most likely value picked out of a set of alternatives\n\tHigh                    // value is generally assumed to be the correct match\n\tExact                   // exact match or explicitly specified value\n)\n\nvar confName = []string{\"No\", \"Low\", \"High\", \"Exact\"}\n\nfunc (c Confidence) String() string {\n\treturn confName[c]\n}\n\n// remakeString is used to update t.str in case lang, script or region changed.\n// It is assumed that pExt and pVariant still point to the start of the\n// respective parts.\nfunc (t *Tag) remakeString() {\n\tif t.str == \"\" {\n\t\treturn\n\t}\n\textra := t.str[t.pVariant:]\n\tif t.pVariant > 0 {\n\t\textra = extra[1:]\n\t}\n\tif t.equalTags(und) && strings.HasPrefix(extra, \"x-\") {\n\t\tt.str = extra\n\t\tt.pVariant = 0\n\t\tt.pExt = 0\n\t\treturn\n\t}\n\tvar buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases.\n\tb := buf[:t.genCoreBytes(buf[:])]\n\tif extra != \"\" {\n\t\tdiff := len(b) - int(t.pVariant)\n\t\tb = append(b, '-')\n\t\tb = append(b, extra...)\n\t\tt.pVariant = uint8(int(t.pVariant) + diff)\n\t\tt.pExt = uint16(int(t.pExt) + diff)\n\t} else {\n\t\tt.pVariant = uint8(len(b))\n\t\tt.pExt = uint16(len(b))\n\t}\n\tt.str = string(b)\n}\n\n// genCoreBytes writes a string for the base languages, script and region tags\n// to the given buffer and returns the number of bytes written. It will never\n// write more than maxCoreSize bytes.\nfunc (t *Tag) genCoreBytes(buf []byte) int {\n\tn := t.lang.stringToBuf(buf[:])\n\tif t.script != 0 {\n\t\tn += copy(buf[n:], \"-\")\n\t\tn += copy(buf[n:], t.script.String())\n\t}\n\tif t.region != 0 {\n\t\tn += copy(buf[n:], \"-\")\n\t\tn += copy(buf[n:], t.region.String())\n\t}\n\treturn n\n}\n\n// String returns the canonical string representation of the language tag.\nfunc (t Tag) String() string {\n\tif t.str != \"\" {\n\t\treturn t.str\n\t}\n\tif t.script == 0 && t.region == 0 {\n\t\treturn t.lang.String()\n\t}\n\tbuf := [maxCoreSize]byte{}\n\treturn string(buf[:t.genCoreBytes(buf[:])])\n}\n\n// MarshalText implements encoding.TextMarshaler.\nfunc (t Tag) MarshalText() (text []byte, err error) {\n\tif t.str != \"\" {\n\t\ttext = append(text, t.str...)\n\t} else if t.script == 0 && t.region == 0 {\n\t\ttext = append(text, t.lang.String()...)\n\t} else {\n\t\tbuf := [maxCoreSize]byte{}\n\t\ttext = buf[:t.genCoreBytes(buf[:])]\n\t}\n\treturn text, nil\n}\n\n// UnmarshalText implements encoding.TextUnmarshaler.\nfunc (t *Tag) UnmarshalText(text []byte) error {\n\ttag, err := Raw.Parse(string(text))\n\t*t = tag\n\treturn err\n}\n\n// Base returns the base language of the language tag. If the base language is\n// unspecified, an attempt will be made to infer it from the context.\n// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.\nfunc (t Tag) Base() (Base, Confidence) {\n\tif t.lang != 0 {\n\t\treturn Base{t.lang}, Exact\n\t}\n\tc := High\n\tif t.script == 0 && !(Region{t.region}).IsCountry() {\n\t\tc = Low\n\t}\n\tif tag, err := addTags(t); err == nil && tag.lang != 0 {\n\t\treturn Base{tag.lang}, c\n\t}\n\treturn Base{0}, No\n}\n\n// Script infers the script for the language tag. If it was not explicitly given, it will infer\n// a most likely candidate.\n// If more than one script is commonly used for a language, the most likely one\n// is returned with a low confidence indication. For example, it returns (Cyrl, Low)\n// for Serbian.\n// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined)\n// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks\n// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts.\n// See http://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for\n// unknown value in CLDR.  (Zzzz, Exact) is returned if Zzzz was explicitly specified.\n// Note that an inferred script is never guaranteed to be the correct one. Latin is\n// almost exclusively used for Afrikaans, but Arabic has been used for some texts\n// in the past.  Also, the script that is commonly used may change over time.\n// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.\nfunc (t Tag) Script() (Script, Confidence) {\n\tif t.script != 0 {\n\t\treturn Script{t.script}, Exact\n\t}\n\tsc, c := scriptID(_Zzzz), No\n\tif t.lang < langNoIndexOffset {\n\t\tif scr := scriptID(suppressScript[t.lang]); scr != 0 {\n\t\t\t// Note: it is not always the case that a language with a suppress\n\t\t\t// script value is only written in one script (e.g. kk, ms, pa).\n\t\t\tif t.region == 0 {\n\t\t\t\treturn Script{scriptID(scr)}, High\n\t\t\t}\n\t\t\tsc, c = scr, High\n\t\t}\n\t}\n\tif tag, err := addTags(t); err == nil {\n\t\tif tag.script != sc {\n\t\t\tsc, c = tag.script, Low\n\t\t}\n\t} else {\n\t\tt, _ = (Deprecated | Macro).Canonicalize(t)\n\t\tif tag, err := addTags(t); err == nil && tag.script != sc {\n\t\t\tsc, c = tag.script, Low\n\t\t}\n\t}\n\treturn Script{sc}, c\n}\n\n// Region returns the region for the language tag. If it was not explicitly given, it will\n// infer a most likely candidate from the context.\n// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.\nfunc (t Tag) Region() (Region, Confidence) {\n\tif t.region != 0 {\n\t\treturn Region{t.region}, Exact\n\t}\n\tif t, err := addTags(t); err == nil {\n\t\treturn Region{t.region}, Low // TODO: differentiate between high and low.\n\t}\n\tt, _ = (Deprecated | Macro).Canonicalize(t)\n\tif tag, err := addTags(t); err == nil {\n\t\treturn Region{tag.region}, Low\n\t}\n\treturn Region{_ZZ}, No // TODO: return world instead of undetermined?\n}\n\n// Variant returns the variants specified explicitly for this language tag.\n// or nil if no variant was specified.\nfunc (t Tag) Variants() []Variant {\n\tv := []Variant{}\n\tif int(t.pVariant) < int(t.pExt) {\n\t\tfor x, str := \"\", t.str[t.pVariant:t.pExt]; str != \"\"; {\n\t\t\tx, str = nextToken(str)\n\t\t\tv = append(v, Variant{x})\n\t\t}\n\t}\n\treturn v\n}\n\n// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a\n// specific language are substituted with fields from the parent language.\n// The parent for a language may change for newer versions of CLDR.\nfunc (t Tag) Parent() Tag {\n\tif t.str != \"\" {\n\t\t// Strip the variants and extensions.\n\t\tt, _ = Raw.Compose(t.Raw())\n\t\tif t.region == 0 && t.script != 0 && t.lang != 0 {\n\t\t\tbase, _ := addTags(Tag{lang: t.lang})\n\t\t\tif base.script == t.script {\n\t\t\t\treturn Tag{lang: t.lang}\n\t\t\t}\n\t\t}\n\t\treturn t\n\t}\n\tif t.lang != 0 {\n\t\tif t.region != 0 {\n\t\t\tmaxScript := t.script\n\t\t\tif maxScript == 0 {\n\t\t\t\tmax, _ := addTags(t)\n\t\t\t\tmaxScript = max.script\n\t\t\t}\n\n\t\t\tfor i := range parents {\n\t\t\t\tif langID(parents[i].lang) == t.lang && scriptID(parents[i].maxScript) == maxScript {\n\t\t\t\t\tfor _, r := range parents[i].fromRegion {\n\t\t\t\t\t\tif regionID(r) == t.region {\n\t\t\t\t\t\t\treturn Tag{\n\t\t\t\t\t\t\t\tlang:   t.lang,\n\t\t\t\t\t\t\t\tscript: scriptID(parents[i].script),\n\t\t\t\t\t\t\t\tregion: regionID(parents[i].toRegion),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Strip the script if it is the default one.\n\t\t\tbase, _ := addTags(Tag{lang: t.lang})\n\t\t\tif base.script != maxScript {\n\t\t\t\treturn Tag{lang: t.lang, script: maxScript}\n\t\t\t}\n\t\t\treturn Tag{lang: t.lang}\n\t\t} else if t.script != 0 {\n\t\t\t// The parent for an base-script pair with a non-default script is\n\t\t\t// \"und\" instead of the base language.\n\t\t\tbase, _ := addTags(Tag{lang: t.lang})\n\t\t\tif base.script != t.script {\n\t\t\t\treturn und\n\t\t\t}\n\t\t\treturn Tag{lang: t.lang}\n\t\t}\n\t}\n\treturn und\n}\n\n// returns token t and the rest of the string.\nfunc nextToken(s string) (t, tail string) {\n\tp := strings.Index(s[1:], \"-\")\n\tif p == -1 {\n\t\treturn s[1:], \"\"\n\t}\n\tp++\n\treturn s[1:p], s[p:]\n}\n\n// Extension is a single BCP 47 extension.\ntype Extension struct {\n\ts string\n}\n\n// String returns the string representation of the extension, including the\n// type tag.\nfunc (e Extension) String() string {\n\treturn e.s\n}\n\n// ParseExtension parses s as an extension and returns it on success.\nfunc ParseExtension(s string) (e Extension, err error) {\n\tscan := makeScannerString(s)\n\tvar end int\n\tif n := len(scan.token); n != 1 {\n\t\treturn Extension{}, errSyntax\n\t}\n\tscan.toLower(0, len(scan.b))\n\tend = parseExtension(&scan)\n\tif end != len(s) {\n\t\treturn Extension{}, errSyntax\n\t}\n\treturn Extension{string(scan.b)}, nil\n}\n\n// Type returns the one-byte extension type of e. It returns 0 for the zero\n// exception.\nfunc (e Extension) Type() byte {\n\tif e.s == \"\" {\n\t\treturn 0\n\t}\n\treturn e.s[0]\n}\n\n// Tokens returns the list of tokens of e.\nfunc (e Extension) Tokens() []string {\n\treturn strings.Split(e.s, \"-\")\n}\n\n// Extension returns the extension of type x for tag t. It will return\n// false for ok if t does not have the requested extension. The returned\n// extension will be invalid in this case.\nfunc (t Tag) Extension(x byte) (ext Extension, ok bool) {\n\tfor i := int(t.pExt); i < len(t.str)-1; {\n\t\tvar ext string\n\t\ti, ext = getExtension(t.str, i)\n\t\tif ext[0] == x {\n\t\t\treturn Extension{ext}, true\n\t\t}\n\t}\n\treturn Extension{}, false\n}\n\n// Extensions returns all extensions of t.\nfunc (t Tag) Extensions() []Extension {\n\te := []Extension{}\n\tfor i := int(t.pExt); i < len(t.str)-1; {\n\t\tvar ext string\n\t\ti, ext = getExtension(t.str, i)\n\t\te = append(e, Extension{ext})\n\t}\n\treturn e\n}\n\n// TypeForKey returns the type associated with the given key, where key and type\n// are of the allowed values defined for the Unicode locale extension ('u') in\n// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// TypeForKey will traverse the inheritance chain to get the correct value.\nfunc (t Tag) TypeForKey(key string) string {\n\tif start, end, _ := t.findTypeForKey(key); end != start {\n\t\treturn t.str[start:end]\n\t}\n\treturn \"\"\n}\n\nvar (\n\terrPrivateUse       = errors.New(\"cannot set a key on a private use tag\")\n\terrInvalidArguments = errors.New(\"invalid key or type\")\n)\n\n// SetTypeForKey returns a new Tag with the key set to type, where key and type\n// are of the allowed values defined for the Unicode locale extension ('u') in\n// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// An empty value removes an existing pair with the same key.\nfunc (t Tag) SetTypeForKey(key, value string) (Tag, error) {\n\tif t.private() {\n\t\treturn t, errPrivateUse\n\t}\n\tif len(key) != 2 {\n\t\treturn t, errInvalidArguments\n\t}\n\n\t// Remove the setting if value is \"\".\n\tif value == \"\" {\n\t\tstart, end, _ := t.findTypeForKey(key)\n\t\tif start != end {\n\t\t\t// Remove key tag and leading '-'.\n\t\t\tstart -= 4\n\n\t\t\t// Remove a possible empty extension.\n\t\t\tif (end == len(t.str) || t.str[end+2] == '-') && t.str[start-2] == '-' {\n\t\t\t\tstart -= 2\n\t\t\t}\n\t\t\tif start == int(t.pVariant) && end == len(t.str) {\n\t\t\t\tt.str = \"\"\n\t\t\t\tt.pVariant, t.pExt = 0, 0\n\t\t\t} else {\n\t\t\t\tt.str = fmt.Sprintf(\"%s%s\", t.str[:start], t.str[end:])\n\t\t\t}\n\t\t}\n\t\treturn t, nil\n\t}\n\n\tif len(value) < 3 || len(value) > 8 {\n\t\treturn t, errInvalidArguments\n\t}\n\n\tvar (\n\t\tbuf    [maxCoreSize + maxSimpleUExtensionSize]byte\n\t\tuStart int // start of the -u extension.\n\t)\n\n\t// Generate the tag string if needed.\n\tif t.str == \"\" {\n\t\tuStart = t.genCoreBytes(buf[:])\n\t\tbuf[uStart] = '-'\n\t\tuStart++\n\t}\n\n\t// Create new key-type pair and parse it to verify.\n\tb := buf[uStart:]\n\tcopy(b, \"u-\")\n\tcopy(b[2:], key)\n\tb[4] = '-'\n\tb = b[:5+copy(b[5:], value)]\n\tscan := makeScanner(b)\n\tif parseExtensions(&scan); scan.err != nil {\n\t\treturn t, scan.err\n\t}\n\n\t// Assemble the replacement string.\n\tif t.str == \"\" {\n\t\tt.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1)\n\t\tt.str = string(buf[:uStart+len(b)])\n\t} else {\n\t\ts := t.str\n\t\tstart, end, hasExt := t.findTypeForKey(key)\n\t\tif start == end {\n\t\t\tif hasExt {\n\t\t\t\tb = b[2:]\n\t\t\t}\n\t\t\tt.str = fmt.Sprintf(\"%s-%s%s\", s[:start], b, s[end:])\n\t\t} else {\n\t\t\tt.str = fmt.Sprintf(\"%s%s%s\", s[:start], value, s[end:])\n\t\t}\n\t}\n\treturn t, nil\n}\n\n// findKeyAndType returns the start and end position for the type corresponding\n// to key or the point at which to insert the key-value pair if the type\n// wasn't found. The hasExt return value reports whether an -u extension was present.\n// Note: the extensions are typically very small and are likely to contain\n// only one key-type pair.\nfunc (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) {\n\tp := int(t.pExt)\n\tif len(key) != 2 || p == len(t.str) || p == 0 {\n\t\treturn p, p, false\n\t}\n\ts := t.str\n\n\t// Find the correct extension.\n\tfor p++; s[p] != 'u'; p++ {\n\t\tif s[p] > 'u' {\n\t\t\tp--\n\t\t\treturn p, p, false\n\t\t}\n\t\tif p = nextExtension(s, p); p == len(s) {\n\t\t\treturn len(s), len(s), false\n\t\t}\n\t}\n\t// Proceed to the hyphen following the extension name.\n\tp++\n\n\t// curKey is the key currently being processed.\n\tcurKey := \"\"\n\n\t// Iterate over keys until we get the end of a section.\n\tfor {\n\t\t// p points to the hyphen preceding the current token.\n\t\tif p3 := p + 3; s[p3] == '-' {\n\t\t\t// Found a key.\n\t\t\t// Check whether we just processed the key that was requested.\n\t\t\tif curKey == key {\n\t\t\t\treturn start, p, true\n\t\t\t}\n\t\t\t// Set to the next key and continue scanning type tokens.\n\t\t\tcurKey = s[p+1 : p3]\n\t\t\tif curKey > key {\n\t\t\t\treturn p, p, true\n\t\t\t}\n\t\t\t// Start of the type token sequence.\n\t\t\tstart = p + 4\n\t\t\t// A type is at least 3 characters long.\n\t\t\tp += 7 // 4 + 3\n\t\t} else {\n\t\t\t// Attribute or type, which is at least 3 characters long.\n\t\t\tp += 4\n\t\t}\n\t\t// p points past the third character of a type or attribute.\n\t\tmax := p + 5 // maximum length of token plus hyphen.\n\t\tif len(s) < max {\n\t\t\tmax = len(s)\n\t\t}\n\t\tfor ; p < max && s[p] != '-'; p++ {\n\t\t}\n\t\t// Bail if we have exhausted all tokens or if the next token starts\n\t\t// a new extension.\n\t\tif p == len(s) || s[p+2] == '-' {\n\t\t\tif curKey == key {\n\t\t\t\treturn start, p, true\n\t\t\t}\n\t\t\treturn p, p, true\n\t\t}\n\t}\n}\n\n// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags\n// for which data exists in the text repository. The index will change over time\n// and should not be stored in persistent storage. Extensions, except for the\n// 'va' type of the 'u' extension, are ignored. It will return 0, false if no\n// compact tag exists, where 0 is the index for the root language (Und).\nfunc CompactIndex(t Tag) (index int, ok bool) {\n\t// TODO: perhaps give more frequent tags a lower index.\n\t// TODO: we could make the indexes stable. This will excluded some\n\t//       possibilities for optimization, so don't do this quite yet.\n\tb, s, r := t.Raw()\n\tif len(t.str) > 0 {\n\t\tif strings.HasPrefix(t.str, \"x-\") {\n\t\t\t// We have no entries for user-defined tags.\n\t\t\treturn 0, false\n\t\t}\n\t\tif uint16(t.pVariant) != t.pExt {\n\t\t\t// There are no tags with variants and an u-va type.\n\t\t\tif t.TypeForKey(\"va\") != \"\" {\n\t\t\t\treturn 0, false\n\t\t\t}\n\t\t\tt, _ = Raw.Compose(b, s, r, t.Variants())\n\t\t} else if _, ok := t.Extension('u'); ok {\n\t\t\t// Strip all but the 'va' entry.\n\t\t\tvariant := t.TypeForKey(\"va\")\n\t\t\tt, _ = Raw.Compose(b, s, r)\n\t\t\tt, _ = t.SetTypeForKey(\"va\", variant)\n\t\t}\n\t\tif len(t.str) > 0 {\n\t\t\t// We have some variants.\n\t\t\tfor i, s := range specialTags {\n\t\t\t\tif s == t {\n\t\t\t\t\treturn i + 1, true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0, false\n\t\t}\n\t}\n\t// No variants specified: just compare core components.\n\t// The key has the form lllssrrr, where l, s, and r are nibbles for\n\t// respectively the langID, scriptID, and regionID.\n\tkey := uint32(b.langID) << (8 + 12)\n\tkey |= uint32(s.scriptID) << 12\n\tkey |= uint32(r.regionID)\n\tx, ok := coreTags[key]\n\treturn int(x), ok\n}\n\n// Base is an ISO 639 language code, used for encoding the base language\n// of a language tag.\ntype Base struct {\n\tlangID\n}\n\n// ParseBase parses a 2- or 3-letter ISO 639 code.\n// It returns a ValueError if s is a well-formed but unknown language identifier\n// or another error if another error occurred.\nfunc ParseBase(s string) (Base, error) {\n\tif n := len(s); n < 2 || 3 < n {\n\t\treturn Base{}, errSyntax\n\t}\n\tvar buf [3]byte\n\tl, err := getLangID(buf[:copy(buf[:], s)])\n\treturn Base{l}, err\n}\n\n// Script is a 4-letter ISO 15924 code for representing scripts.\n// It is idiomatically represented in title case.\ntype Script struct {\n\tscriptID\n}\n\n// ParseScript parses a 4-letter ISO 15924 code.\n// It returns a ValueError if s is a well-formed but unknown script identifier\n// or another error if another error occurred.\nfunc ParseScript(s string) (Script, error) {\n\tif len(s) != 4 {\n\t\treturn Script{}, errSyntax\n\t}\n\tvar buf [4]byte\n\tsc, err := getScriptID(script, buf[:copy(buf[:], s)])\n\treturn Script{sc}, err\n}\n\n// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions.\ntype Region struct {\n\tregionID\n}\n\n// EncodeM49 returns the Region for the given UN M.49 code.\n// It returns an error if r is not a valid code.\nfunc EncodeM49(r int) (Region, error) {\n\trid, err := getRegionM49(r)\n\treturn Region{rid}, err\n}\n\n// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code.\n// It returns a ValueError if s is a well-formed but unknown region identifier\n// or another error if another error occurred.\nfunc ParseRegion(s string) (Region, error) {\n\tif n := len(s); n < 2 || 3 < n {\n\t\treturn Region{}, errSyntax\n\t}\n\tvar buf [3]byte\n\tr, err := getRegionID(buf[:copy(buf[:], s)])\n\treturn Region{r}, err\n}\n\n// IsCountry returns whether this region is a country or autonomous area. This\n// includes non-standard definitions from CLDR.\nfunc (r Region) IsCountry() bool {\n\tif r.regionID == 0 || r.IsGroup() || r.IsPrivateUse() && r.regionID != _XK {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// IsGroup returns whether this region defines a collection of regions. This\n// includes non-standard definitions from CLDR.\nfunc (r Region) IsGroup() bool {\n\tif r.regionID == 0 {\n\t\treturn false\n\t}\n\treturn int(regionInclusion[r.regionID]) < len(regionContainment)\n}\n\n// Contains returns whether Region c is contained by Region r. It returns true\n// if c == r.\nfunc (r Region) Contains(c Region) bool {\n\treturn r.regionID.contains(c.regionID)\n}\n\nfunc (r regionID) contains(c regionID) bool {\n\tif r == c {\n\t\treturn true\n\t}\n\tg := regionInclusion[r]\n\tif g >= nRegionGroups {\n\t\treturn false\n\t}\n\tm := regionContainment[g]\n\n\td := regionInclusion[c]\n\tb := regionInclusionBits[d]\n\n\t// A contained country may belong to multiple disjoint groups. Matching any\n\t// of these indicates containment. If the contained region is a group, it\n\t// must strictly be a subset.\n\tif d >= nRegionGroups {\n\t\treturn b&m != 0\n\t}\n\treturn b&^m == 0\n}\n\nvar errNoTLD = errors.New(\"language: region is not a valid ccTLD\")\n\n// TLD returns the country code top-level domain (ccTLD). UK is returned for GB.\n// In all other cases it returns either the region itself or an error.\n//\n// This method may return an error for a region for which there exists a\n// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The\n// region will already be canonicalized it was obtained from a Tag that was\n// obtained using any of the default methods.\nfunc (r Region) TLD() (Region, error) {\n\t// See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the\n\t// difference between ISO 3166-1 and IANA ccTLD.\n\tif r.regionID == _GB {\n\t\tr = Region{_UK}\n\t}\n\tif (r.typ() & ccTLD) == 0 {\n\t\treturn Region{}, errNoTLD\n\t}\n\treturn r, nil\n}\n\n// Canonicalize returns the region or a possible replacement if the region is\n// deprecated. It will not return a replacement for deprecated regions that\n// are split into multiple regions.\nfunc (r Region) Canonicalize() Region {\n\tif cr := normRegion(r.regionID); cr != 0 {\n\t\treturn Region{cr}\n\t}\n\treturn r\n}\n\n// Variant represents a registered variant of a language as defined by BCP 47.\ntype Variant struct {\n\tvariant string\n}\n\n// ParseVariant parses and returns a Variant. An error is returned if s is not\n// a valid variant.\nfunc ParseVariant(s string) (Variant, error) {\n\ts = strings.ToLower(s)\n\tif _, ok := variantIndex[s]; ok {\n\t\treturn Variant{s}, nil\n\t}\n\treturn Variant{}, mkErrInvalid([]byte(s))\n}\n\n// String returns the string representation of the variant.\nfunc (v Variant) String() string {\n\treturn v.variant\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/lookup.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\n\t\"golang.org/x/text/internal/tag\"\n)\n\n// findIndex tries to find the given tag in idx and returns a standardized error\n// if it could not be found.\nfunc findIndex(idx tag.Index, key []byte, form string) (index int, err error) {\n\tif !tag.FixCase(form, key) {\n\t\treturn 0, errSyntax\n\t}\n\ti := idx.Index(key)\n\tif i == -1 {\n\t\treturn 0, mkErrInvalid(key)\n\t}\n\treturn i, nil\n}\n\nfunc searchUint(imap []uint16, key uint16) int {\n\treturn sort.Search(len(imap), func(i int) bool {\n\t\treturn imap[i] >= key\n\t})\n}\n\ntype langID uint16\n\n// getLangID returns the langID of s if s is a canonical subtag\n// or langUnknown if s is not a canonical subtag.\nfunc getLangID(s []byte) (langID, error) {\n\tif len(s) == 2 {\n\t\treturn getLangISO2(s)\n\t}\n\treturn getLangISO3(s)\n}\n\n// mapLang returns the mapped langID of id according to mapping m.\nfunc normLang(id langID) (langID, langAliasType) {\n\tk := sort.Search(len(langAliasMap), func(i int) bool {\n\t\treturn langAliasMap[i].from >= uint16(id)\n\t})\n\tif k < len(langAliasMap) && langAliasMap[k].from == uint16(id) {\n\t\treturn langID(langAliasMap[k].to), langAliasTypes[k]\n\t}\n\treturn id, langAliasTypeUnknown\n}\n\n// getLangISO2 returns the langID for the given 2-letter ISO language code\n// or unknownLang if this does not exist.\nfunc getLangISO2(s []byte) (langID, error) {\n\tif !tag.FixCase(\"zz\", s) {\n\t\treturn 0, errSyntax\n\t}\n\tif i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 {\n\t\treturn langID(i), nil\n\t}\n\treturn 0, mkErrInvalid(s)\n}\n\nconst base = 'z' - 'a' + 1\n\nfunc strToInt(s []byte) uint {\n\tv := uint(0)\n\tfor i := 0; i < len(s); i++ {\n\t\tv *= base\n\t\tv += uint(s[i] - 'a')\n\t}\n\treturn v\n}\n\n// converts the given integer to the original ASCII string passed to strToInt.\n// len(s) must match the number of characters obtained.\nfunc intToStr(v uint, s []byte) {\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\ts[i] = byte(v%base) + 'a'\n\t\tv /= base\n\t}\n}\n\n// getLangISO3 returns the langID for the given 3-letter ISO language code\n// or unknownLang if this does not exist.\nfunc getLangISO3(s []byte) (langID, error) {\n\tif tag.FixCase(\"und\", s) {\n\t\t// first try to match canonical 3-letter entries\n\t\tfor i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) {\n\t\t\tif e := lang.Elem(i); e[3] == 0 && e[2] == s[2] {\n\t\t\t\t// We treat \"und\" as special and always translate it to \"unspecified\".\n\t\t\t\t// Note that ZZ and Zzzz are private use and are not treated as\n\t\t\t\t// unspecified by default.\n\t\t\t\tid := langID(i)\n\t\t\t\tif id == nonCanonicalUnd {\n\t\t\t\t\treturn 0, nil\n\t\t\t\t}\n\t\t\t\treturn id, nil\n\t\t\t}\n\t\t}\n\t\tif i := altLangISO3.Index(s); i != -1 {\n\t\t\treturn langID(altLangIndex[altLangISO3.Elem(i)[3]]), nil\n\t\t}\n\t\tn := strToInt(s)\n\t\tif langNoIndex[n/8]&(1<<(n%8)) != 0 {\n\t\t\treturn langID(n) + langNoIndexOffset, nil\n\t\t}\n\t\t// Check for non-canonical uses of ISO3.\n\t\tfor i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) {\n\t\t\tif e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] {\n\t\t\t\treturn langID(i), nil\n\t\t\t}\n\t\t}\n\t\treturn 0, mkErrInvalid(s)\n\t}\n\treturn 0, errSyntax\n}\n\n// stringToBuf writes the string to b and returns the number of bytes\n// written.  cap(b) must be >= 3.\nfunc (id langID) stringToBuf(b []byte) int {\n\tif id >= langNoIndexOffset {\n\t\tintToStr(uint(id)-langNoIndexOffset, b[:3])\n\t\treturn 3\n\t} else if id == 0 {\n\t\treturn copy(b, \"und\")\n\t}\n\tl := lang[id<<2:]\n\tif l[3] == 0 {\n\t\treturn copy(b, l[:3])\n\t}\n\treturn copy(b, l[:2])\n}\n\n// String returns the BCP 47 representation of the langID.\n// Use b as variable name, instead of id, to ensure the variable\n// used is consistent with that of Base in which this type is embedded.\nfunc (b langID) String() string {\n\tif b == 0 {\n\t\treturn \"und\"\n\t} else if b >= langNoIndexOffset {\n\t\tb -= langNoIndexOffset\n\t\tbuf := [3]byte{}\n\t\tintToStr(uint(b), buf[:])\n\t\treturn string(buf[:])\n\t}\n\tl := lang.Elem(int(b))\n\tif l[3] == 0 {\n\t\treturn l[:3]\n\t}\n\treturn l[:2]\n}\n\n// ISO3 returns the ISO 639-3 language code.\nfunc (b langID) ISO3() string {\n\tif b == 0 || b >= langNoIndexOffset {\n\t\treturn b.String()\n\t}\n\tl := lang.Elem(int(b))\n\tif l[3] == 0 {\n\t\treturn l[:3]\n\t} else if l[2] == 0 {\n\t\treturn altLangISO3.Elem(int(l[3]))[:3]\n\t}\n\t// This allocation will only happen for 3-letter ISO codes\n\t// that are non-canonical BCP 47 language identifiers.\n\treturn l[0:1] + l[2:4]\n}\n\n// IsPrivateUse reports whether this language code is reserved for private use.\nfunc (b langID) IsPrivateUse() bool {\n\treturn langPrivateStart <= b && b <= langPrivateEnd\n}\n\ntype regionID uint16\n\n// getRegionID returns the region id for s if s is a valid 2-letter region code\n// or unknownRegion.\nfunc getRegionID(s []byte) (regionID, error) {\n\tif len(s) == 3 {\n\t\tif isAlpha(s[0]) {\n\t\t\treturn getRegionISO3(s)\n\t\t}\n\t\tif i, err := strconv.ParseUint(string(s), 10, 10); err == nil {\n\t\t\treturn getRegionM49(int(i))\n\t\t}\n\t}\n\treturn getRegionISO2(s)\n}\n\n// getRegionISO2 returns the regionID for the given 2-letter ISO country code\n// or unknownRegion if this does not exist.\nfunc getRegionISO2(s []byte) (regionID, error) {\n\ti, err := findIndex(regionISO, s, \"ZZ\")\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn regionID(i) + isoRegionOffset, nil\n}\n\n// getRegionISO3 returns the regionID for the given 3-letter ISO country code\n// or unknownRegion if this does not exist.\nfunc getRegionISO3(s []byte) (regionID, error) {\n\tif tag.FixCase(\"ZZZ\", s) {\n\t\tfor i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) {\n\t\t\tif e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] {\n\t\t\t\treturn regionID(i) + isoRegionOffset, nil\n\t\t\t}\n\t\t}\n\t\tfor i := 0; i < len(altRegionISO3); i += 3 {\n\t\t\tif tag.Compare(altRegionISO3[i:i+3], s) == 0 {\n\t\t\t\treturn regionID(altRegionIDs[i/3]), nil\n\t\t\t}\n\t\t}\n\t\treturn 0, mkErrInvalid(s)\n\t}\n\treturn 0, errSyntax\n}\n\nfunc getRegionM49(n int) (regionID, error) {\n\tif 0 < n && n <= 999 {\n\t\tconst (\n\t\t\tsearchBits = 7\n\t\t\tregionBits = 9\n\t\t\tregionMask = 1<<regionBits - 1\n\t\t)\n\t\tidx := n >> searchBits\n\t\tbuf := fromM49[m49Index[idx]:m49Index[idx+1]]\n\t\tval := uint16(n) << regionBits // we rely on bits shifting out\n\t\ti := sort.Search(len(buf), func(i int) bool {\n\t\t\treturn buf[i] >= val\n\t\t})\n\t\tif r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val {\n\t\t\treturn regionID(r & regionMask), nil\n\t\t}\n\t}\n\tvar e ValueError\n\tfmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n)\n\treturn 0, e\n}\n\n// normRegion returns a region if r is deprecated or 0 otherwise.\n// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ).\n// TODO: consider mapping split up regions to new most populous one (like CLDR).\nfunc normRegion(r regionID) regionID {\n\tm := regionOldMap\n\tk := sort.Search(len(m), func(i int) bool {\n\t\treturn m[i].from >= uint16(r)\n\t})\n\tif k < len(m) && m[k].from == uint16(r) {\n\t\treturn regionID(m[k].to)\n\t}\n\treturn 0\n}\n\nconst (\n\tiso3166UserAssigned = 1 << iota\n\tccTLD\n\tbcp47Region\n)\n\nfunc (r regionID) typ() byte {\n\treturn regionTypes[r]\n}\n\n// String returns the BCP 47 representation for the region.\n// It returns \"ZZ\" for an unspecified region.\nfunc (r regionID) String() string {\n\tif r < isoRegionOffset {\n\t\tif r == 0 {\n\t\t\treturn \"ZZ\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%03d\", r.M49())\n\t}\n\tr -= isoRegionOffset\n\treturn regionISO.Elem(int(r))[:2]\n}\n\n// ISO3 returns the 3-letter ISO code of r.\n// Note that not all regions have a 3-letter ISO code.\n// In such cases this method returns \"ZZZ\".\nfunc (r regionID) ISO3() string {\n\tif r < isoRegionOffset {\n\t\treturn \"ZZZ\"\n\t}\n\tr -= isoRegionOffset\n\treg := regionISO.Elem(int(r))\n\tswitch reg[2] {\n\tcase 0:\n\t\treturn altRegionISO3[reg[3]:][:3]\n\tcase ' ':\n\t\treturn \"ZZZ\"\n\t}\n\treturn reg[0:1] + reg[2:4]\n}\n\n// M49 returns the UN M.49 encoding of r, or 0 if this encoding\n// is not defined for r.\nfunc (r regionID) M49() int {\n\treturn int(m49[r])\n}\n\n// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This\n// may include private-use tags that are assigned by CLDR and used in this\n// implementation. So IsPrivateUse and IsCountry can be simultaneously true.\nfunc (r regionID) IsPrivateUse() bool {\n\treturn r.typ()&iso3166UserAssigned != 0\n}\n\ntype scriptID uint8\n\n// getScriptID returns the script id for string s. It assumes that s\n// is of the format [A-Z][a-z]{3}.\nfunc getScriptID(idx tag.Index, s []byte) (scriptID, error) {\n\ti, err := findIndex(idx, s, \"Zzzz\")\n\treturn scriptID(i), err\n}\n\n// String returns the script code in title case.\n// It returns \"Zzzz\" for an unspecified script.\nfunc (s scriptID) String() string {\n\tif s == 0 {\n\t\treturn \"Zzzz\"\n\t}\n\treturn script.Elem(int(s))\n}\n\n// IsPrivateUse reports whether this script code is reserved for private use.\nfunc (s scriptID) IsPrivateUse() bool {\n\treturn _Qaaa <= s && s <= _Qabx\n}\n\nconst (\n\tmaxAltTaglen = len(\"en-US-POSIX\")\n\tmaxLen       = maxAltTaglen\n)\n\nvar (\n\t// grandfatheredMap holds a mapping from legacy and grandfathered tags to\n\t// their base language or index to more elaborate tag.\n\tgrandfatheredMap = map[[maxLen]byte]int16{\n\t\t[maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban\n\t\t[maxLen]byte{'i', '-', 'a', 'm', 'i'}:                          _ami, // i-ami\n\t\t[maxLen]byte{'i', '-', 'b', 'n', 'n'}:                          _bnn, // i-bnn\n\t\t[maxLen]byte{'i', '-', 'h', 'a', 'k'}:                          _hak, // i-hak\n\t\t[maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}:      _tlh, // i-klingon\n\t\t[maxLen]byte{'i', '-', 'l', 'u', 'x'}:                          _lb,  // i-lux\n\t\t[maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}:           _nv,  // i-navajo\n\t\t[maxLen]byte{'i', '-', 'p', 'w', 'n'}:                          _pwn, // i-pwn\n\t\t[maxLen]byte{'i', '-', 't', 'a', 'o'}:                          _tao, // i-tao\n\t\t[maxLen]byte{'i', '-', 't', 'a', 'y'}:                          _tay, // i-tay\n\t\t[maxLen]byte{'i', '-', 't', 's', 'u'}:                          _tsu, // i-tsu\n\t\t[maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}:                     _nb,  // no-bok\n\t\t[maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}:                     _nn,  // no-nyn\n\t\t[maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}:      _sfb, // sgn-BE-FR\n\t\t[maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}:      _vgt, // sgn-BE-NL\n\t\t[maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}:      _sgg, // sgn-CH-DE\n\t\t[maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}:           _cmn, // zh-guoyu\n\t\t[maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}:           _hak, // zh-hakka\n\t\t[maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan\n\t\t[maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}:           _hsn, // zh-xiang\n\n\t\t// Grandfathered tags with no modern replacement will be converted as\n\t\t// follows:\n\t\t[maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish\n\t\t[maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}:           -2, // en-GB-oed\n\t\t[maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}:           -3, // i-default\n\t\t[maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}:      -4, // i-enochian\n\t\t[maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}:                     -5, // i-mingo\n\t\t[maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}:                          -6, // zh-min\n\n\t\t// CLDR-specific tag.\n\t\t[maxLen]byte{'r', 'o', 'o', 't'}:                                    0,  // root\n\t\t[maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX\"\n\t}\n\n\taltTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102}\n\n\taltTags = \"xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix\"\n)\n\nfunc grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) {\n\tif v, ok := grandfatheredMap[s]; ok {\n\t\tif v < 0 {\n\t\t\treturn Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true\n\t\t}\n\t\tt.lang = langID(v)\n\t\treturn t, true\n\t}\n\treturn t, false\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/match.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport \"errors\"\n\n// A MatchOption configures a Matcher.\ntype MatchOption func(*matcher)\n\n// PreferSameScript will, in the absence of a match, result in the first\n// preferred tag with the same script as a supported tag to match this supported\n// tag. The default is currently true, but this may change in the future.\nfunc PreferSameScript(preferSame bool) MatchOption {\n\treturn func(m *matcher) { m.preferSameScript = preferSame }\n}\n\n// TODO(v1.0.0): consider making Matcher a concrete type, instead of interface.\n// There doesn't seem to be too much need for multiple types.\n// Making it a concrete type allows MatchStrings to be a method, which will\n// improve its discoverability.\n\n// MatchStrings parses and matches the given strings until one of them matches\n// the language in the Matcher. A string may be an Accept-Language header as\n// handled by ParseAcceptLanguage. The default language is returned if no\n// other language matched.\nfunc MatchStrings(m Matcher, lang ...string) (tag Tag, index int) {\n\tfor _, accept := range lang {\n\t\tdesired, _, err := ParseAcceptLanguage(accept)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif tag, index, conf := m.Match(desired...); conf != No {\n\t\t\treturn tag, index\n\t\t}\n\t}\n\ttag, index, _ = m.Match()\n\treturn\n}\n\n// Matcher is the interface that wraps the Match method.\n//\n// Match returns the best match for any of the given tags, along with\n// a unique index associated with the returned tag and a confidence\n// score.\ntype Matcher interface {\n\tMatch(t ...Tag) (tag Tag, index int, c Confidence)\n}\n\n// Comprehends reports the confidence score for a speaker of a given language\n// to being able to comprehend the written form of an alternative language.\nfunc Comprehends(speaker, alternative Tag) Confidence {\n\t_, _, c := NewMatcher([]Tag{alternative}).Match(speaker)\n\treturn c\n}\n\n// NewMatcher returns a Matcher that matches an ordered list of preferred tags\n// against a list of supported tags based on written intelligibility, closeness\n// of dialect, equivalence of subtags and various other rules. It is initialized\n// with the list of supported tags. The first element is used as the default\n// value in case no match is found.\n//\n// Its Match method matches the first of the given Tags to reach a certain\n// confidence threshold. The tags passed to Match should therefore be specified\n// in order of preference. Extensions are ignored for matching.\n//\n// The index returned by the Match method corresponds to the index of the\n// matched tag in t, but is augmented with the Unicode extension ('u')of the\n// corresponding preferred tag. This allows user locale options to be passed\n// transparently.\nfunc NewMatcher(t []Tag, options ...MatchOption) Matcher {\n\treturn newMatcher(t, options)\n}\n\nfunc (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) {\n\tmatch, w, c := m.getBest(want...)\n\tif match != nil {\n\t\tt, index = match.tag, match.index\n\t} else {\n\t\t// TODO: this should be an option\n\t\tt = m.default_.tag\n\t\tif m.preferSameScript {\n\t\touter:\n\t\t\tfor _, w := range want {\n\t\t\t\tscript, _ := w.Script()\n\t\t\t\tif script.scriptID == 0 {\n\t\t\t\t\t// Don't do anything if there is no script, such as with\n\t\t\t\t\t// private subtags.\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor i, h := range m.supported {\n\t\t\t\t\tif script.scriptID == h.maxScript {\n\t\t\t\t\t\tt, index = h.tag, i\n\t\t\t\t\t\tbreak outer\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// TODO: select first language tag based on script.\n\t}\n\tif w.region != 0 && t.region != 0 && t.region.contains(w.region) {\n\t\tt, _ = Raw.Compose(t, Region{w.region})\n\t}\n\t// Copy options from the user-provided tag into the result tag. This is hard\n\t// to do after the fact, so we do it here.\n\t// TODO: add in alternative variants to -u-va-.\n\t// TODO: add preferred region to -u-rg-.\n\tif e := w.Extensions(); len(e) > 0 {\n\t\tt, _ = Raw.Compose(t, e)\n\t}\n\treturn t, index, c\n}\n\ntype scriptRegionFlags uint8\n\nconst (\n\tisList = 1 << iota\n\tscriptInFrom\n\tregionInFrom\n)\n\nfunc (t *Tag) setUndefinedLang(id langID) {\n\tif t.lang == 0 {\n\t\tt.lang = id\n\t}\n}\n\nfunc (t *Tag) setUndefinedScript(id scriptID) {\n\tif t.script == 0 {\n\t\tt.script = id\n\t}\n}\n\nfunc (t *Tag) setUndefinedRegion(id regionID) {\n\tif t.region == 0 || t.region.contains(id) {\n\t\tt.region = id\n\t}\n}\n\n// ErrMissingLikelyTagsData indicates no information was available\n// to compute likely values of missing tags.\nvar ErrMissingLikelyTagsData = errors.New(\"missing likely tags data\")\n\n// addLikelySubtags sets subtags to their most likely value, given the locale.\n// In most cases this means setting fields for unknown values, but in some\n// cases it may alter a value.  It returns an ErrMissingLikelyTagsData error\n// if the given locale cannot be expanded.\nfunc (t Tag) addLikelySubtags() (Tag, error) {\n\tid, err := addTags(t)\n\tif err != nil {\n\t\treturn t, err\n\t} else if id.equalTags(t) {\n\t\treturn t, nil\n\t}\n\tid.remakeString()\n\treturn id, nil\n}\n\n// specializeRegion attempts to specialize a group region.\nfunc specializeRegion(t *Tag) bool {\n\tif i := regionInclusion[t.region]; i < nRegionGroups {\n\t\tx := likelyRegionGroup[i]\n\t\tif langID(x.lang) == t.lang && scriptID(x.script) == t.script {\n\t\t\tt.region = regionID(x.region)\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc addTags(t Tag) (Tag, error) {\n\t// We leave private use identifiers alone.\n\tif t.private() {\n\t\treturn t, nil\n\t}\n\tif t.script != 0 && t.region != 0 {\n\t\tif t.lang != 0 {\n\t\t\t// already fully specified\n\t\t\tspecializeRegion(&t)\n\t\t\treturn t, nil\n\t\t}\n\t\t// Search matches for und-script-region. Note that for these cases\n\t\t// region will never be a group so there is no need to check for this.\n\t\tlist := likelyRegion[t.region : t.region+1]\n\t\tif x := list[0]; x.flags&isList != 0 {\n\t\t\tlist = likelyRegionList[x.lang : x.lang+uint16(x.script)]\n\t\t}\n\t\tfor _, x := range list {\n\t\t\t// Deviating from the spec. See match_test.go for details.\n\t\t\tif scriptID(x.script) == t.script {\n\t\t\t\tt.setUndefinedLang(langID(x.lang))\n\t\t\t\treturn t, nil\n\t\t\t}\n\t\t}\n\t}\n\tif t.lang != 0 {\n\t\t// Search matches for lang-script and lang-region, where lang != und.\n\t\tif t.lang < langNoIndexOffset {\n\t\t\tx := likelyLang[t.lang]\n\t\t\tif x.flags&isList != 0 {\n\t\t\t\tlist := likelyLangList[x.region : x.region+uint16(x.script)]\n\t\t\t\tif t.script != 0 {\n\t\t\t\t\tfor _, x := range list {\n\t\t\t\t\t\tif scriptID(x.script) == t.script && x.flags&scriptInFrom != 0 {\n\t\t\t\t\t\t\tt.setUndefinedRegion(regionID(x.region))\n\t\t\t\t\t\t\treturn t, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if t.region != 0 {\n\t\t\t\t\tcount := 0\n\t\t\t\t\tgoodScript := true\n\t\t\t\t\ttt := t\n\t\t\t\t\tfor _, x := range list {\n\t\t\t\t\t\t// We visit all entries for which the script was not\n\t\t\t\t\t\t// defined, including the ones where the region was not\n\t\t\t\t\t\t// defined. This allows for proper disambiguation within\n\t\t\t\t\t\t// regions.\n\t\t\t\t\t\tif x.flags&scriptInFrom == 0 && t.region.contains(regionID(x.region)) {\n\t\t\t\t\t\t\ttt.region = regionID(x.region)\n\t\t\t\t\t\t\ttt.setUndefinedScript(scriptID(x.script))\n\t\t\t\t\t\t\tgoodScript = goodScript && tt.script == scriptID(x.script)\n\t\t\t\t\t\t\tcount++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif count == 1 {\n\t\t\t\t\t\treturn tt, nil\n\t\t\t\t\t}\n\t\t\t\t\t// Even if we fail to find a unique Region, we might have\n\t\t\t\t\t// an unambiguous script.\n\t\t\t\t\tif goodScript {\n\t\t\t\t\t\tt.script = tt.script\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Search matches for und-script.\n\t\tif t.script != 0 {\n\t\t\tx := likelyScript[t.script]\n\t\t\tif x.region != 0 {\n\t\t\t\tt.setUndefinedRegion(regionID(x.region))\n\t\t\t\tt.setUndefinedLang(langID(x.lang))\n\t\t\t\treturn t, nil\n\t\t\t}\n\t\t}\n\t\t// Search matches for und-region. If und-script-region exists, it would\n\t\t// have been found earlier.\n\t\tif t.region != 0 {\n\t\t\tif i := regionInclusion[t.region]; i < nRegionGroups {\n\t\t\t\tx := likelyRegionGroup[i]\n\t\t\t\tif x.region != 0 {\n\t\t\t\t\tt.setUndefinedLang(langID(x.lang))\n\t\t\t\t\tt.setUndefinedScript(scriptID(x.script))\n\t\t\t\t\tt.region = regionID(x.region)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tx := likelyRegion[t.region]\n\t\t\t\tif x.flags&isList != 0 {\n\t\t\t\t\tx = likelyRegionList[x.lang]\n\t\t\t\t}\n\t\t\t\tif x.script != 0 && x.flags != scriptInFrom {\n\t\t\t\t\tt.setUndefinedLang(langID(x.lang))\n\t\t\t\t\tt.setUndefinedScript(scriptID(x.script))\n\t\t\t\t\treturn t, nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Search matches for lang.\n\tif t.lang < langNoIndexOffset {\n\t\tx := likelyLang[t.lang]\n\t\tif x.flags&isList != 0 {\n\t\t\tx = likelyLangList[x.region]\n\t\t}\n\t\tif x.region != 0 {\n\t\t\tt.setUndefinedScript(scriptID(x.script))\n\t\t\tt.setUndefinedRegion(regionID(x.region))\n\t\t}\n\t\tspecializeRegion(&t)\n\t\tif t.lang == 0 {\n\t\t\tt.lang = _en // default language\n\t\t}\n\t\treturn t, nil\n\t}\n\treturn t, ErrMissingLikelyTagsData\n}\n\nfunc (t *Tag) setTagsFrom(id Tag) {\n\tt.lang = id.lang\n\tt.script = id.script\n\tt.region = id.region\n}\n\n// minimize removes the region or script subtags from t such that\n// t.addLikelySubtags() == t.minimize().addLikelySubtags().\nfunc (t Tag) minimize() (Tag, error) {\n\tt, err := minimizeTags(t)\n\tif err != nil {\n\t\treturn t, err\n\t}\n\tt.remakeString()\n\treturn t, nil\n}\n\n// minimizeTags mimics the behavior of the ICU 51 C implementation.\nfunc minimizeTags(t Tag) (Tag, error) {\n\tif t.equalTags(und) {\n\t\treturn t, nil\n\t}\n\tmax, err := addTags(t)\n\tif err != nil {\n\t\treturn t, err\n\t}\n\tfor _, id := range [...]Tag{\n\t\t{lang: t.lang},\n\t\t{lang: t.lang, region: t.region},\n\t\t{lang: t.lang, script: t.script},\n\t} {\n\t\tif x, err := addTags(id); err == nil && max.equalTags(x) {\n\t\t\tt.setTagsFrom(id)\n\t\t\tbreak\n\t\t}\n\t}\n\treturn t, nil\n}\n\n// Tag Matching\n// CLDR defines an algorithm for finding the best match between two sets of language\n// tags. The basic algorithm defines how to score a possible match and then find\n// the match with the best score\n// (see http://www.unicode.org/reports/tr35/#LanguageMatching).\n// Using scoring has several disadvantages. The scoring obfuscates the importance of\n// the various factors considered, making the algorithm harder to understand. Using\n// scoring also requires the full score to be computed for each pair of tags.\n//\n// We will use a different algorithm which aims to have the following properties:\n// - clarity on the precedence of the various selection factors, and\n// - improved performance by allowing early termination of a comparison.\n//\n// Matching algorithm (overview)\n// Input:\n//   - supported: a set of supported tags\n//   - default:   the default tag to return in case there is no match\n//   - desired:   list of desired tags, ordered by preference, starting with\n//                the most-preferred.\n//\n// Algorithm:\n//   1) Set the best match to the lowest confidence level\n//   2) For each tag in \"desired\":\n//     a) For each tag in \"supported\":\n//        1) compute the match between the two tags.\n//        2) if the match is better than the previous best match, replace it\n//           with the new match. (see next section)\n//     b) if the current best match is Exact and pin is true the result will be\n//        frozen to the language found thusfar, although better matches may\n//        still be found for the same language.\n//   3) If the best match so far is below a certain threshold, return \"default\".\n//\n// Ranking:\n// We use two phases to determine whether one pair of tags are a better match\n// than another pair of tags. First, we determine a rough confidence level. If the\n// levels are different, the one with the highest confidence wins.\n// Second, if the rough confidence levels are identical, we use a set of tie-breaker\n// rules.\n//\n// The confidence level of matching a pair of tags is determined by finding the\n// lowest confidence level of any matches of the corresponding subtags (the\n// result is deemed as good as its weakest link).\n// We define the following levels:\n//   Exact    - An exact match of a subtag, before adding likely subtags.\n//   MaxExact - An exact match of a subtag, after adding likely subtags.\n//              [See Note 2].\n//   High     - High level of mutual intelligibility between different subtag\n//              variants.\n//   Low      - Low level of mutual intelligibility between different subtag\n//              variants.\n//   No       - No mutual intelligibility.\n//\n// The following levels can occur for each type of subtag:\n//   Base:    Exact, MaxExact, High, Low, No\n//   Script:  Exact, MaxExact [see Note 3], Low, No\n//   Region:  Exact, MaxExact, High\n//   Variant: Exact, High\n//   Private: Exact, No\n//\n// Any result with a confidence level of Low or higher is deemed a possible match.\n// Once a desired tag matches any of the supported tags with a level of MaxExact\n// or higher, the next desired tag is not considered (see Step 2.b).\n// Note that CLDR provides languageMatching data that defines close equivalence\n// classes for base languages, scripts and regions.\n//\n// Tie-breaking\n// If we get the same confidence level for two matches, we apply a sequence of\n// tie-breaking rules. The first that succeeds defines the result. The rules are\n// applied in the following order.\n//   1) Original language was defined and was identical.\n//   2) Original region was defined and was identical.\n//   3) Distance between two maximized regions was the smallest.\n//   4) Original script was defined and was identical.\n//   5) Distance from want tag to have tag using the parent relation [see Note 5.]\n// If there is still no winner after these rules are applied, the first match\n// found wins.\n//\n// Notes:\n// [2] In practice, as matching of Exact is done in a separate phase from\n//     matching the other levels, we reuse the Exact level to mean MaxExact in\n//     the second phase. As a consequence, we only need the levels defined by\n//     the Confidence type. The MaxExact confidence level is mapped to High in\n//     the public API.\n// [3] We do not differentiate between maximized script values that were derived\n//     from suppressScript versus most likely tag data. We determined that in\n//     ranking the two, one ranks just after the other. Moreover, the two cannot\n//     occur concurrently. As a consequence, they are identical for practical\n//     purposes.\n// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign\n//     the MaxExact level to allow iw vs he to still be a closer match than\n//     en-AU vs en-US, for example.\n// [5] In CLDR a locale inherits fields that are unspecified for this locale\n//     from its parent. Therefore, if a locale is a parent of another locale,\n//     it is a strong measure for closeness, especially when no other tie\n//     breaker rule applies. One could also argue it is inconsistent, for\n//     example, when pt-AO matches pt (which CLDR equates with pt-BR), even\n//     though its parent is pt-PT according to the inheritance rules.\n//\n// Implementation Details:\n// There are several performance considerations worth pointing out. Most notably,\n// we preprocess as much as possible (within reason) at the time of creation of a\n// matcher. This includes:\n//   - creating a per-language map, which includes data for the raw base language\n//     and its canonicalized variant (if applicable),\n//   - expanding entries for the equivalence classes defined in CLDR's\n//     languageMatch data.\n// The per-language map ensures that typically only a very small number of tags\n// need to be considered. The pre-expansion of canonicalized subtags and\n// equivalence classes reduces the amount of map lookups that need to be done at\n// runtime.\n\n// matcher keeps a set of supported language tags, indexed by language.\ntype matcher struct {\n\tdefault_         *haveTag\n\tsupported        []*haveTag\n\tindex            map[langID]*matchHeader\n\tpassSettings     bool\n\tpreferSameScript bool\n}\n\n// matchHeader has the lists of tags for exact matches and matches based on\n// maximized and canonicalized tags for a given language.\ntype matchHeader struct {\n\thaveTags []*haveTag\n\toriginal bool\n}\n\n// haveTag holds a supported Tag and its maximized script and region. The maximized\n// or canonicalized language is not stored as it is not needed during matching.\ntype haveTag struct {\n\ttag Tag\n\n\t// index of this tag in the original list of supported tags.\n\tindex int\n\n\t// conf is the maximum confidence that can result from matching this haveTag.\n\t// When conf < Exact this means it was inserted after applying a CLDR equivalence rule.\n\tconf Confidence\n\n\t// Maximized region and script.\n\tmaxRegion regionID\n\tmaxScript scriptID\n\n\t// altScript may be checked as an alternative match to maxScript. If altScript\n\t// matches, the confidence level for this match is Low. Theoretically there\n\t// could be multiple alternative scripts. This does not occur in practice.\n\taltScript scriptID\n\n\t// nextMax is the index of the next haveTag with the same maximized tags.\n\tnextMax uint16\n}\n\nfunc makeHaveTag(tag Tag, index int) (haveTag, langID) {\n\tmax := tag\n\tif tag.lang != 0 || tag.region != 0 || tag.script != 0 {\n\t\tmax, _ = max.canonicalize(All)\n\t\tmax, _ = addTags(max)\n\t\tmax.remakeString()\n\t}\n\treturn haveTag{tag, index, Exact, max.region, max.script, altScript(max.lang, max.script), 0}, max.lang\n}\n\n// altScript returns an alternative script that may match the given script with\n// a low confidence.  At the moment, the langMatch data allows for at most one\n// script to map to another and we rely on this to keep the code simple.\nfunc altScript(l langID, s scriptID) scriptID {\n\tfor _, alt := range matchScript {\n\t\t// TODO: also match cases where language is not the same.\n\t\tif (langID(alt.wantLang) == l || langID(alt.haveLang) == l) &&\n\t\t\tscriptID(alt.haveScript) == s {\n\t\t\treturn scriptID(alt.wantScript)\n\t\t}\n\t}\n\treturn 0\n}\n\n// addIfNew adds a haveTag to the list of tags only if it is a unique tag.\n// Tags that have the same maximized values are linked by index.\nfunc (h *matchHeader) addIfNew(n haveTag, exact bool) {\n\th.original = h.original || exact\n\t// Don't add new exact matches.\n\tfor _, v := range h.haveTags {\n\t\tif v.tag.equalsRest(n.tag) {\n\t\t\treturn\n\t\t}\n\t}\n\t// Allow duplicate maximized tags, but create a linked list to allow quickly\n\t// comparing the equivalents and bail out.\n\tfor i, v := range h.haveTags {\n\t\tif v.maxScript == n.maxScript &&\n\t\t\tv.maxRegion == n.maxRegion &&\n\t\t\tv.tag.variantOrPrivateTagStr() == n.tag.variantOrPrivateTagStr() {\n\t\t\tfor h.haveTags[i].nextMax != 0 {\n\t\t\t\ti = int(h.haveTags[i].nextMax)\n\t\t\t}\n\t\t\th.haveTags[i].nextMax = uint16(len(h.haveTags))\n\t\t\tbreak\n\t\t}\n\t}\n\th.haveTags = append(h.haveTags, &n)\n}\n\n// header returns the matchHeader for the given language. It creates one if\n// it doesn't already exist.\nfunc (m *matcher) header(l langID) *matchHeader {\n\tif h := m.index[l]; h != nil {\n\t\treturn h\n\t}\n\th := &matchHeader{}\n\tm.index[l] = h\n\treturn h\n}\n\nfunc toConf(d uint8) Confidence {\n\tif d <= 10 {\n\t\treturn High\n\t}\n\tif d < 30 {\n\t\treturn Low\n\t}\n\treturn No\n}\n\n// newMatcher builds an index for the given supported tags and returns it as\n// a matcher. It also expands the index by considering various equivalence classes\n// for a given tag.\nfunc newMatcher(supported []Tag, options []MatchOption) *matcher {\n\tm := &matcher{\n\t\tindex:            make(map[langID]*matchHeader),\n\t\tpreferSameScript: true,\n\t}\n\tfor _, o := range options {\n\t\to(m)\n\t}\n\tif len(supported) == 0 {\n\t\tm.default_ = &haveTag{}\n\t\treturn m\n\t}\n\t// Add supported languages to the index. Add exact matches first to give\n\t// them precedence.\n\tfor i, tag := range supported {\n\t\tpair, _ := makeHaveTag(tag, i)\n\t\tm.header(tag.lang).addIfNew(pair, true)\n\t\tm.supported = append(m.supported, &pair)\n\t}\n\tm.default_ = m.header(supported[0].lang).haveTags[0]\n\t// Keep these in two different loops to support the case that two equivalent\n\t// languages are distinguished, such as iw and he.\n\tfor i, tag := range supported {\n\t\tpair, max := makeHaveTag(tag, i)\n\t\tif max != tag.lang {\n\t\t\tm.header(max).addIfNew(pair, true)\n\t\t}\n\t}\n\n\t// update is used to add indexes in the map for equivalent languages.\n\t// update will only add entries to original indexes, thus not computing any\n\t// transitive relations.\n\tupdate := func(want, have uint16, conf Confidence) {\n\t\tif hh := m.index[langID(have)]; hh != nil {\n\t\t\tif !hh.original {\n\t\t\t\treturn\n\t\t\t}\n\t\t\thw := m.header(langID(want))\n\t\t\tfor _, ht := range hh.haveTags {\n\t\t\t\tv := *ht\n\t\t\t\tif conf < v.conf {\n\t\t\t\t\tv.conf = conf\n\t\t\t\t}\n\t\t\t\tv.nextMax = 0 // this value needs to be recomputed\n\t\t\t\tif v.altScript != 0 {\n\t\t\t\t\tv.altScript = altScript(langID(want), v.maxScript)\n\t\t\t\t}\n\t\t\t\thw.addIfNew(v, conf == Exact && hh.original)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Add entries for languages with mutual intelligibility as defined by CLDR's\n\t// languageMatch data.\n\tfor _, ml := range matchLang {\n\t\tupdate(ml.want, ml.have, toConf(ml.distance))\n\t\tif !ml.oneway {\n\t\t\tupdate(ml.have, ml.want, toConf(ml.distance))\n\t\t}\n\t}\n\n\t// Add entries for possible canonicalizations. This is an optimization to\n\t// ensure that only one map lookup needs to be done at runtime per desired tag.\n\t// First we match deprecated equivalents. If they are perfect equivalents\n\t// (their canonicalization simply substitutes a different language code, but\n\t// nothing else), the match confidence is Exact, otherwise it is High.\n\tfor i, lm := range langAliasMap {\n\t\t// If deprecated codes match and there is no fiddling with the script or\n\t\t// or region, we consider it an exact match.\n\t\tconf := Exact\n\t\tif langAliasTypes[i] != langMacro {\n\t\t\tif !isExactEquivalent(langID(lm.from)) {\n\t\t\t\tconf = High\n\t\t\t}\n\t\t\tupdate(lm.to, lm.from, conf)\n\t\t}\n\t\tupdate(lm.from, lm.to, conf)\n\t}\n\treturn m\n}\n\n// getBest gets the best matching tag in m for any of the given tags, taking into\n// account the order of preference of the given tags.\nfunc (m *matcher) getBest(want ...Tag) (got *haveTag, orig Tag, c Confidence) {\n\tbest := bestMatch{}\n\tfor i, w := range want {\n\t\tvar max Tag\n\t\t// Check for exact match first.\n\t\th := m.index[w.lang]\n\t\tif w.lang != 0 {\n\t\t\tif h == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Base language is defined.\n\t\t\tmax, _ = w.canonicalize(Legacy | Deprecated | Macro)\n\t\t\t// A region that is added through canonicalization is stronger than\n\t\t\t// a maximized region: set it in the original (e.g. mo -> ro-MD).\n\t\t\tif w.region != max.region {\n\t\t\t\tw.region = max.region\n\t\t\t}\n\t\t\t// TODO: should we do the same for scripts?\n\t\t\t// See test case: en, sr, nl ; sh ; sr\n\t\t\tmax, _ = addTags(max)\n\t\t} else {\n\t\t\t// Base language is not defined.\n\t\t\tif h != nil {\n\t\t\t\tfor i := range h.haveTags {\n\t\t\t\t\thave := h.haveTags[i]\n\t\t\t\t\tif have.tag.equalsRest(w) {\n\t\t\t\t\t\treturn have, w, Exact\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif w.script == 0 && w.region == 0 {\n\t\t\t\t// We skip all tags matching und for approximate matching, including\n\t\t\t\t// private tags.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmax, _ = addTags(w)\n\t\t\tif h = m.index[max.lang]; h == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tpin := true\n\t\tfor _, t := range want[i+1:] {\n\t\t\tif w.lang == t.lang {\n\t\t\t\tpin = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for match based on maximized tag.\n\t\tfor i := range h.haveTags {\n\t\t\thave := h.haveTags[i]\n\t\t\tbest.update(have, w, max.script, max.region, pin)\n\t\t\tif best.conf == Exact {\n\t\t\t\tfor have.nextMax != 0 {\n\t\t\t\t\thave = h.haveTags[have.nextMax]\n\t\t\t\t\tbest.update(have, w, max.script, max.region, pin)\n\t\t\t\t}\n\t\t\t\treturn best.have, best.want, best.conf\n\t\t\t}\n\t\t}\n\t}\n\tif best.conf <= No {\n\t\tif len(want) != 0 {\n\t\t\treturn nil, want[0], No\n\t\t}\n\t\treturn nil, Tag{}, No\n\t}\n\treturn best.have, best.want, best.conf\n}\n\n// bestMatch accumulates the best match so far.\ntype bestMatch struct {\n\thave            *haveTag\n\twant            Tag\n\tconf            Confidence\n\tpinnedRegion    regionID\n\tpinLanguage     bool\n\tsameRegionGroup bool\n\t// Cached results from applying tie-breaking rules.\n\torigLang     bool\n\torigReg      bool\n\tparadigmReg  bool\n\tregGroupDist uint8\n\torigScript   bool\n}\n\n// update updates the existing best match if the new pair is considered to be a\n// better match. To determine if the given pair is a better match, it first\n// computes the rough confidence level. If this surpasses the current match, it\n// will replace it and update the tie-breaker rule cache. If there is a tie, it\n// proceeds with applying a series of tie-breaker rules. If there is no\n// conclusive winner after applying the tie-breaker rules, it leaves the current\n// match as the preferred match.\n//\n// If pin is true and have and tag are a strong match, it will henceforth only\n// consider matches for this language. This corresponds to the nothing that most\n// users have a strong preference for the first defined language. A user can\n// still prefer a second language over a dialect of the preferred language by\n// explicitly specifying dialects, e.g. \"en, nl, en-GB\". In this case pin should\n// be false.\nfunc (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion regionID, pin bool) {\n\t// Bail if the maximum attainable confidence is below that of the current best match.\n\tc := have.conf\n\tif c < m.conf {\n\t\treturn\n\t}\n\t// Don't change the language once we already have found an exact match.\n\tif m.pinLanguage && tag.lang != m.want.lang {\n\t\treturn\n\t}\n\t// Pin the region group if we are comparing tags for the same language.\n\tif tag.lang == m.want.lang && m.sameRegionGroup {\n\t\t_, sameGroup := regionGroupDist(m.pinnedRegion, have.maxRegion, have.maxScript, m.want.lang)\n\t\tif !sameGroup {\n\t\t\treturn\n\t\t}\n\t}\n\tif c == Exact && have.maxScript == maxScript {\n\t\t// If there is another language and then another entry of this language,\n\t\t// don't pin anything, otherwise pin the language.\n\t\tm.pinLanguage = pin\n\t}\n\tif have.tag.equalsRest(tag) {\n\t} else if have.maxScript != maxScript {\n\t\t// There is usually very little comprehension between different scripts.\n\t\t// In a few cases there may still be Low comprehension. This possibility\n\t\t// is pre-computed and stored in have.altScript.\n\t\tif Low < m.conf || have.altScript != maxScript {\n\t\t\treturn\n\t\t}\n\t\tc = Low\n\t} else if have.maxRegion != maxRegion {\n\t\tif High < c {\n\t\t\t// There is usually a small difference between languages across regions.\n\t\t\tc = High\n\t\t}\n\t}\n\n\t// We store the results of the computations of the tie-breaker rules along\n\t// with the best match. There is no need to do the checks once we determine\n\t// we have a winner, but we do still need to do the tie-breaker computations.\n\t// We use \"beaten\" to keep track if we still need to do the checks.\n\tbeaten := false // true if the new pair defeats the current one.\n\tif c != m.conf {\n\t\tif c < m.conf {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// Tie-breaker rules:\n\t// We prefer if the pre-maximized language was specified and identical.\n\torigLang := have.tag.lang == tag.lang && tag.lang != 0\n\tif !beaten && m.origLang != origLang {\n\t\tif m.origLang {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// We prefer if the pre-maximized region was specified and identical.\n\torigReg := have.tag.region == tag.region && tag.region != 0\n\tif !beaten && m.origReg != origReg {\n\t\tif m.origReg {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\tregGroupDist, sameGroup := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.lang)\n\tif !beaten && m.regGroupDist != regGroupDist {\n\t\tif regGroupDist > m.regGroupDist {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\tparadigmReg := isParadigmLocale(tag.lang, have.maxRegion)\n\tif !beaten && m.paradigmReg != paradigmReg {\n\t\tif !paradigmReg {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// Next we prefer if the pre-maximized script was specified and identical.\n\torigScript := have.tag.script == tag.script && tag.script != 0\n\tif !beaten && m.origScript != origScript {\n\t\tif m.origScript {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// Update m to the newly found best match.\n\tif beaten {\n\t\tm.have = have\n\t\tm.want = tag\n\t\tm.conf = c\n\t\tm.pinnedRegion = maxRegion\n\t\tm.sameRegionGroup = sameGroup\n\t\tm.origLang = origLang\n\t\tm.origReg = origReg\n\t\tm.paradigmReg = paradigmReg\n\t\tm.origScript = origScript\n\t\tm.regGroupDist = regGroupDist\n\t}\n}\n\nfunc isParadigmLocale(lang langID, r regionID) bool {\n\tfor _, e := range paradigmLocales {\n\t\tif langID(e[0]) == lang && (r == regionID(e[1]) || r == regionID(e[2])) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// regionGroupDist computes the distance between two regions based on their\n// CLDR grouping.\nfunc regionGroupDist(a, b regionID, script scriptID, lang langID) (dist uint8, same bool) {\n\tconst defaultDistance = 4\n\n\taGroup := uint(regionToGroups[a]) << 1\n\tbGroup := uint(regionToGroups[b]) << 1\n\tfor _, ri := range matchRegion {\n\t\tif langID(ri.lang) == lang && (ri.script == 0 || scriptID(ri.script) == script) {\n\t\t\tgroup := uint(1 << (ri.group &^ 0x80))\n\t\t\tif 0x80&ri.group == 0 {\n\t\t\t\tif aGroup&bGroup&group != 0 { // Both regions are in the group.\n\t\t\t\t\treturn ri.distance, ri.distance == defaultDistance\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (aGroup|bGroup)&group == 0 { // Both regions are not in the group.\n\t\t\t\t\treturn ri.distance, ri.distance == defaultDistance\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn defaultDistance, true\n}\n\nfunc (t Tag) variants() string {\n\tif t.pVariant == 0 {\n\t\treturn \"\"\n\t}\n\treturn t.str[t.pVariant:t.pExt]\n}\n\n// variantOrPrivateTagStr returns variants or private use tags.\nfunc (t Tag) variantOrPrivateTagStr() string {\n\tif t.pExt > 0 {\n\t\treturn t.str[t.pVariant:t.pExt]\n\t}\n\treturn t.str[t.pVariant:]\n}\n\n// equalsRest compares everything except the language.\nfunc (a Tag) equalsRest(b Tag) bool {\n\t// TODO: don't include extensions in this comparison. To do this efficiently,\n\t// though, we should handle private tags separately.\n\treturn a.script == b.script && a.region == b.region && a.variantOrPrivateTagStr() == b.variantOrPrivateTagStr()\n}\n\n// isExactEquivalent returns true if canonicalizing the language will not alter\n// the script or region of a tag.\nfunc isExactEquivalent(l langID) bool {\n\tfor _, o := range notEquivalent {\n\t\tif o == l {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nvar notEquivalent []langID\n\nfunc init() {\n\t// Create a list of all languages for which canonicalization may alter the\n\t// script or region.\n\tfor _, lm := range langAliasMap {\n\t\ttag := Tag{lang: langID(lm.from)}\n\t\tif tag, _ = tag.canonicalize(All); tag.script != 0 || tag.region != 0 {\n\t\t\tnotEquivalent = append(notEquivalent, langID(lm.from))\n\t\t}\n\t}\n\t// Maximize undefined regions of paradigm locales.\n\tfor i, v := range paradigmLocales {\n\t\tmax, _ := addTags(Tag{lang: langID(v[0])})\n\t\tif v[1] == 0 {\n\t\t\tparadigmLocales[i][1] = uint16(max.region)\n\t\t}\n\t\tif v[2] == 0 {\n\t\t\tparadigmLocales[i][2] = uint16(max.region)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/parse.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/tag\"\n)\n\n// isAlpha returns true if the byte is not a digit.\n// b must be an ASCII letter or digit.\nfunc isAlpha(b byte) bool {\n\treturn b > '9'\n}\n\n// isAlphaNum returns true if the string contains only ASCII letters or digits.\nfunc isAlphaNum(s []byte) bool {\n\tfor _, c := range s {\n\t\tif !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// errSyntax is returned by any of the parsing functions when the\n// input is not well-formed, according to BCP 47.\n// TODO: return the position at which the syntax error occurred?\nvar errSyntax = errors.New(\"language: tag is not well-formed\")\n\n// ValueError is returned by any of the parsing functions when the\n// input is well-formed but the respective subtag is not recognized\n// as a valid value.\ntype ValueError struct {\n\tv [8]byte\n}\n\nfunc mkErrInvalid(s []byte) error {\n\tvar e ValueError\n\tcopy(e.v[:], s)\n\treturn e\n}\n\nfunc (e ValueError) tag() []byte {\n\tn := bytes.IndexByte(e.v[:], 0)\n\tif n == -1 {\n\t\tn = 8\n\t}\n\treturn e.v[:n]\n}\n\n// Error implements the error interface.\nfunc (e ValueError) Error() string {\n\treturn fmt.Sprintf(\"language: subtag %q is well-formed but unknown\", e.tag())\n}\n\n// Subtag returns the subtag for which the error occurred.\nfunc (e ValueError) Subtag() string {\n\treturn string(e.tag())\n}\n\n// scanner is used to scan BCP 47 tokens, which are separated by _ or -.\ntype scanner struct {\n\tb     []byte\n\tbytes [max99thPercentileSize]byte\n\ttoken []byte\n\tstart int // start position of the current token\n\tend   int // end position of the current token\n\tnext  int // next point for scan\n\terr   error\n\tdone  bool\n}\n\nfunc makeScannerString(s string) scanner {\n\tscan := scanner{}\n\tif len(s) <= len(scan.bytes) {\n\t\tscan.b = scan.bytes[:copy(scan.bytes[:], s)]\n\t} else {\n\t\tscan.b = []byte(s)\n\t}\n\tscan.init()\n\treturn scan\n}\n\n// makeScanner returns a scanner using b as the input buffer.\n// b is not copied and may be modified by the scanner routines.\nfunc makeScanner(b []byte) scanner {\n\tscan := scanner{b: b}\n\tscan.init()\n\treturn scan\n}\n\nfunc (s *scanner) init() {\n\tfor i, c := range s.b {\n\t\tif c == '_' {\n\t\t\ts.b[i] = '-'\n\t\t}\n\t}\n\ts.scan()\n}\n\n// restToLower converts the string between start and end to lower case.\nfunc (s *scanner) toLower(start, end int) {\n\tfor i := start; i < end; i++ {\n\t\tc := s.b[i]\n\t\tif 'A' <= c && c <= 'Z' {\n\t\t\ts.b[i] += 'a' - 'A'\n\t\t}\n\t}\n}\n\nfunc (s *scanner) setError(e error) {\n\tif s.err == nil || (e == errSyntax && s.err != errSyntax) {\n\t\ts.err = e\n\t}\n}\n\n// resizeRange shrinks or grows the array at position oldStart such that\n// a new string of size newSize can fit between oldStart and oldEnd.\n// Sets the scan point to after the resized range.\nfunc (s *scanner) resizeRange(oldStart, oldEnd, newSize int) {\n\ts.start = oldStart\n\tif end := oldStart + newSize; end != oldEnd {\n\t\tdiff := end - oldEnd\n\t\tif end < cap(s.b) {\n\t\t\tb := make([]byte, len(s.b)+diff)\n\t\t\tcopy(b, s.b[:oldStart])\n\t\t\tcopy(b[end:], s.b[oldEnd:])\n\t\t\ts.b = b\n\t\t} else {\n\t\t\ts.b = append(s.b[end:], s.b[oldEnd:]...)\n\t\t}\n\t\ts.next = end + (s.next - s.end)\n\t\ts.end = end\n\t}\n}\n\n// replace replaces the current token with repl.\nfunc (s *scanner) replace(repl string) {\n\ts.resizeRange(s.start, s.end, len(repl))\n\tcopy(s.b[s.start:], repl)\n}\n\n// gobble removes the current token from the input.\n// Caller must call scan after calling gobble.\nfunc (s *scanner) gobble(e error) {\n\ts.setError(e)\n\tif s.start == 0 {\n\t\ts.b = s.b[:+copy(s.b, s.b[s.next:])]\n\t\ts.end = 0\n\t} else {\n\t\ts.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])]\n\t\ts.end = s.start - 1\n\t}\n\ts.next = s.start\n}\n\n// deleteRange removes the given range from s.b before the current token.\nfunc (s *scanner) deleteRange(start, end int) {\n\ts.setError(errSyntax)\n\ts.b = s.b[:start+copy(s.b[start:], s.b[end:])]\n\tdiff := end - start\n\ts.next -= diff\n\ts.start -= diff\n\ts.end -= diff\n}\n\n// scan parses the next token of a BCP 47 string.  Tokens that are larger\n// than 8 characters or include non-alphanumeric characters result in an error\n// and are gobbled and removed from the output.\n// It returns the end position of the last token consumed.\nfunc (s *scanner) scan() (end int) {\n\tend = s.end\n\ts.token = nil\n\tfor s.start = s.next; s.next < len(s.b); {\n\t\ti := bytes.IndexByte(s.b[s.next:], '-')\n\t\tif i == -1 {\n\t\t\ts.end = len(s.b)\n\t\t\ts.next = len(s.b)\n\t\t\ti = s.end - s.start\n\t\t} else {\n\t\t\ts.end = s.next + i\n\t\t\ts.next = s.end + 1\n\t\t}\n\t\ttoken := s.b[s.start:s.end]\n\t\tif i < 1 || i > 8 || !isAlphaNum(token) {\n\t\t\ts.gobble(errSyntax)\n\t\t\tcontinue\n\t\t}\n\t\ts.token = token\n\t\treturn end\n\t}\n\tif n := len(s.b); n > 0 && s.b[n-1] == '-' {\n\t\ts.setError(errSyntax)\n\t\ts.b = s.b[:len(s.b)-1]\n\t}\n\ts.done = true\n\treturn end\n}\n\n// acceptMinSize parses multiple tokens of the given size or greater.\n// It returns the end position of the last token consumed.\nfunc (s *scanner) acceptMinSize(min int) (end int) {\n\tend = s.end\n\ts.scan()\n\tfor ; len(s.token) >= min; s.scan() {\n\t\tend = s.end\n\t}\n\treturn end\n}\n\n// Parse parses the given BCP 47 string and returns a valid Tag. If parsing\n// failed it returns an error and any part of the tag that could be parsed.\n// If parsing succeeded but an unknown value was found, it returns\n// ValueError. The Tag returned in this case is just stripped of the unknown\n// value. All other values are preserved. It accepts tags in the BCP 47 format\n// and extensions to this standard defined in\n// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// The resulting tag is canonicalized using the default canonicalization type.\nfunc Parse(s string) (t Tag, err error) {\n\treturn Default.Parse(s)\n}\n\n// Parse parses the given BCP 47 string and returns a valid Tag. If parsing\n// failed it returns an error and any part of the tag that could be parsed.\n// If parsing succeeded but an unknown value was found, it returns\n// ValueError. The Tag returned in this case is just stripped of the unknown\n// value. All other values are preserved. It accepts tags in the BCP 47 format\n// and extensions to this standard defined in\n// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// The resulting tag is canonicalized using the the canonicalization type c.\nfunc (c CanonType) Parse(s string) (t Tag, err error) {\n\t// TODO: consider supporting old-style locale key-value pairs.\n\tif s == \"\" {\n\t\treturn und, errSyntax\n\t}\n\tif len(s) <= maxAltTaglen {\n\t\tb := [maxAltTaglen]byte{}\n\t\tfor i, c := range s {\n\t\t\t// Generating invalid UTF-8 is okay as it won't match.\n\t\t\tif 'A' <= c && c <= 'Z' {\n\t\t\t\tc += 'a' - 'A'\n\t\t\t} else if c == '_' {\n\t\t\t\tc = '-'\n\t\t\t}\n\t\t\tb[i] = byte(c)\n\t\t}\n\t\tif t, ok := grandfathered(b); ok {\n\t\t\treturn t, nil\n\t\t}\n\t}\n\tscan := makeScannerString(s)\n\tt, err = parse(&scan, s)\n\tt, changed := t.canonicalize(c)\n\tif changed {\n\t\tt.remakeString()\n\t}\n\treturn t, err\n}\n\nfunc parse(scan *scanner, s string) (t Tag, err error) {\n\tt = und\n\tvar end int\n\tif n := len(scan.token); n <= 1 {\n\t\tscan.toLower(0, len(scan.b))\n\t\tif n == 0 || scan.token[0] != 'x' {\n\t\t\treturn t, errSyntax\n\t\t}\n\t\tend = parseExtensions(scan)\n\t} else if n >= 4 {\n\t\treturn und, errSyntax\n\t} else { // the usual case\n\t\tt, end = parseTag(scan)\n\t\tif n := len(scan.token); n == 1 {\n\t\t\tt.pExt = uint16(end)\n\t\t\tend = parseExtensions(scan)\n\t\t} else if end < len(scan.b) {\n\t\t\tscan.setError(errSyntax)\n\t\t\tscan.b = scan.b[:end]\n\t\t}\n\t}\n\tif int(t.pVariant) < len(scan.b) {\n\t\tif end < len(s) {\n\t\t\ts = s[:end]\n\t\t}\n\t\tif len(s) > 0 && tag.Compare(s, scan.b) == 0 {\n\t\t\tt.str = s\n\t\t} else {\n\t\t\tt.str = string(scan.b)\n\t\t}\n\t} else {\n\t\tt.pVariant, t.pExt = 0, 0\n\t}\n\treturn t, scan.err\n}\n\n// parseTag parses language, script, region and variants.\n// It returns a Tag and the end position in the input that was parsed.\nfunc parseTag(scan *scanner) (t Tag, end int) {\n\tvar e error\n\t// TODO: set an error if an unknown lang, script or region is encountered.\n\tt.lang, e = getLangID(scan.token)\n\tscan.setError(e)\n\tscan.replace(t.lang.String())\n\tlangStart := scan.start\n\tend = scan.scan()\n\tfor len(scan.token) == 3 && isAlpha(scan.token[0]) {\n\t\t// From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent\n\t\t// to a tag of the form <extlang>.\n\t\tlang, e := getLangID(scan.token)\n\t\tif lang != 0 {\n\t\t\tt.lang = lang\n\t\t\tcopy(scan.b[langStart:], lang.String())\n\t\t\tscan.b[langStart+3] = '-'\n\t\t\tscan.start = langStart + 4\n\t\t}\n\t\tscan.gobble(e)\n\t\tend = scan.scan()\n\t}\n\tif len(scan.token) == 4 && isAlpha(scan.token[0]) {\n\t\tt.script, e = getScriptID(script, scan.token)\n\t\tif t.script == 0 {\n\t\t\tscan.gobble(e)\n\t\t}\n\t\tend = scan.scan()\n\t}\n\tif n := len(scan.token); n >= 2 && n <= 3 {\n\t\tt.region, e = getRegionID(scan.token)\n\t\tif t.region == 0 {\n\t\t\tscan.gobble(e)\n\t\t} else {\n\t\t\tscan.replace(t.region.String())\n\t\t}\n\t\tend = scan.scan()\n\t}\n\tscan.toLower(scan.start, len(scan.b))\n\tt.pVariant = byte(end)\n\tend = parseVariants(scan, end, t)\n\tt.pExt = uint16(end)\n\treturn t, end\n}\n\nvar separator = []byte{'-'}\n\n// parseVariants scans tokens as long as each token is a valid variant string.\n// Duplicate variants are removed.\nfunc parseVariants(scan *scanner, end int, t Tag) int {\n\tstart := scan.start\n\tvarIDBuf := [4]uint8{}\n\tvariantBuf := [4][]byte{}\n\tvarID := varIDBuf[:0]\n\tvariant := variantBuf[:0]\n\tlast := -1\n\tneedSort := false\n\tfor ; len(scan.token) >= 4; scan.scan() {\n\t\t// TODO: measure the impact of needing this conversion and redesign\n\t\t// the data structure if there is an issue.\n\t\tv, ok := variantIndex[string(scan.token)]\n\t\tif !ok {\n\t\t\t// unknown variant\n\t\t\t// TODO: allow user-defined variants?\n\t\t\tscan.gobble(mkErrInvalid(scan.token))\n\t\t\tcontinue\n\t\t}\n\t\tvarID = append(varID, v)\n\t\tvariant = append(variant, scan.token)\n\t\tif !needSort {\n\t\t\tif last < int(v) {\n\t\t\t\tlast = int(v)\n\t\t\t} else {\n\t\t\t\tneedSort = true\n\t\t\t\t// There is no legal combinations of more than 7 variants\n\t\t\t\t// (and this is by no means a useful sequence).\n\t\t\t\tconst maxVariants = 8\n\t\t\t\tif len(varID) > maxVariants {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tend = scan.end\n\t}\n\tif needSort {\n\t\tsort.Sort(variantsSort{varID, variant})\n\t\tk, l := 0, -1\n\t\tfor i, v := range varID {\n\t\t\tw := int(v)\n\t\t\tif l == w {\n\t\t\t\t// Remove duplicates.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvarID[k] = varID[i]\n\t\t\tvariant[k] = variant[i]\n\t\t\tk++\n\t\t\tl = w\n\t\t}\n\t\tif str := bytes.Join(variant[:k], separator); len(str) == 0 {\n\t\t\tend = start - 1\n\t\t} else {\n\t\t\tscan.resizeRange(start, end, len(str))\n\t\t\tcopy(scan.b[scan.start:], str)\n\t\t\tend = scan.end\n\t\t}\n\t}\n\treturn end\n}\n\ntype variantsSort struct {\n\ti []uint8\n\tv [][]byte\n}\n\nfunc (s variantsSort) Len() int {\n\treturn len(s.i)\n}\n\nfunc (s variantsSort) Swap(i, j int) {\n\ts.i[i], s.i[j] = s.i[j], s.i[i]\n\ts.v[i], s.v[j] = s.v[j], s.v[i]\n}\n\nfunc (s variantsSort) Less(i, j int) bool {\n\treturn s.i[i] < s.i[j]\n}\n\ntype bytesSort [][]byte\n\nfunc (b bytesSort) Len() int {\n\treturn len(b)\n}\n\nfunc (b bytesSort) Swap(i, j int) {\n\tb[i], b[j] = b[j], b[i]\n}\n\nfunc (b bytesSort) Less(i, j int) bool {\n\treturn bytes.Compare(b[i], b[j]) == -1\n}\n\n// parseExtensions parses and normalizes the extensions in the buffer.\n// It returns the last position of scan.b that is part of any extension.\n// It also trims scan.b to remove excess parts accordingly.\nfunc parseExtensions(scan *scanner) int {\n\tstart := scan.start\n\texts := [][]byte{}\n\tprivate := []byte{}\n\tend := scan.end\n\tfor len(scan.token) == 1 {\n\t\textStart := scan.start\n\t\text := scan.token[0]\n\t\tend = parseExtension(scan)\n\t\textension := scan.b[extStart:end]\n\t\tif len(extension) < 3 || (ext != 'x' && len(extension) < 4) {\n\t\t\tscan.setError(errSyntax)\n\t\t\tend = extStart\n\t\t\tcontinue\n\t\t} else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) {\n\t\t\tscan.b = scan.b[:end]\n\t\t\treturn end\n\t\t} else if ext == 'x' {\n\t\t\tprivate = extension\n\t\t\tbreak\n\t\t}\n\t\texts = append(exts, extension)\n\t}\n\tsort.Sort(bytesSort(exts))\n\tif len(private) > 0 {\n\t\texts = append(exts, private)\n\t}\n\tscan.b = scan.b[:start]\n\tif len(exts) > 0 {\n\t\tscan.b = append(scan.b, bytes.Join(exts, separator)...)\n\t} else if start > 0 {\n\t\t// Strip trailing '-'.\n\t\tscan.b = scan.b[:start-1]\n\t}\n\treturn end\n}\n\n// parseExtension parses a single extension and returns the position of\n// the extension end.\nfunc parseExtension(scan *scanner) int {\n\tstart, end := scan.start, scan.end\n\tswitch scan.token[0] {\n\tcase 'u':\n\t\tattrStart := end\n\t\tscan.scan()\n\t\tfor last := []byte{}; len(scan.token) > 2; scan.scan() {\n\t\t\tif bytes.Compare(scan.token, last) != -1 {\n\t\t\t\t// Attributes are unsorted. Start over from scratch.\n\t\t\t\tp := attrStart + 1\n\t\t\t\tscan.next = p\n\t\t\t\tattrs := [][]byte{}\n\t\t\t\tfor scan.scan(); len(scan.token) > 2; scan.scan() {\n\t\t\t\t\tattrs = append(attrs, scan.token)\n\t\t\t\t\tend = scan.end\n\t\t\t\t}\n\t\t\t\tsort.Sort(bytesSort(attrs))\n\t\t\t\tcopy(scan.b[p:], bytes.Join(attrs, separator))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlast = scan.token\n\t\t\tend = scan.end\n\t\t}\n\t\tvar last, key []byte\n\t\tfor attrEnd := end; len(scan.token) == 2; last = key {\n\t\t\tkey = scan.token\n\t\t\tkeyEnd := scan.end\n\t\t\tend = scan.acceptMinSize(3)\n\t\t\t// TODO: check key value validity\n\t\t\tif keyEnd == end || bytes.Compare(key, last) != 1 {\n\t\t\t\t// We have an invalid key or the keys are not sorted.\n\t\t\t\t// Start scanning keys from scratch and reorder.\n\t\t\t\tp := attrEnd + 1\n\t\t\t\tscan.next = p\n\t\t\t\tkeys := [][]byte{}\n\t\t\t\tfor scan.scan(); len(scan.token) == 2; {\n\t\t\t\t\tkeyStart, keyEnd := scan.start, scan.end\n\t\t\t\t\tend = scan.acceptMinSize(3)\n\t\t\t\t\tif keyEnd != end {\n\t\t\t\t\t\tkeys = append(keys, scan.b[keyStart:end])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tscan.setError(errSyntax)\n\t\t\t\t\t\tend = keyStart\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsort.Sort(bytesSort(keys))\n\t\t\t\treordered := bytes.Join(keys, separator)\n\t\t\t\tif e := p + len(reordered); e < end {\n\t\t\t\t\tscan.deleteRange(e, end)\n\t\t\t\t\tend = e\n\t\t\t\t}\n\t\t\t\tcopy(scan.b[p:], bytes.Join(keys, separator))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tcase 't':\n\t\tscan.scan()\n\t\tif n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) {\n\t\t\t_, end = parseTag(scan)\n\t\t\tscan.toLower(start, end)\n\t\t}\n\t\tfor len(scan.token) == 2 && !isAlpha(scan.token[1]) {\n\t\t\tend = scan.acceptMinSize(3)\n\t\t}\n\tcase 'x':\n\t\tend = scan.acceptMinSize(1)\n\tdefault:\n\t\tend = scan.acceptMinSize(2)\n\t}\n\treturn end\n}\n\n// Compose creates a Tag from individual parts, which may be of type Tag, Base,\n// Script, Region, Variant, []Variant, Extension, []Extension or error. If a\n// Base, Script or Region or slice of type Variant or Extension is passed more\n// than once, the latter will overwrite the former. Variants and Extensions are\n// accumulated, but if two extensions of the same type are passed, the latter\n// will replace the former. A Tag overwrites all former values and typically\n// only makes sense as the first argument. The resulting tag is returned after\n// canonicalizing using the Default CanonType. If one or more errors are\n// encountered, one of the errors is returned.\nfunc Compose(part ...interface{}) (t Tag, err error) {\n\treturn Default.Compose(part...)\n}\n\n// Compose creates a Tag from individual parts, which may be of type Tag, Base,\n// Script, Region, Variant, []Variant, Extension, []Extension or error. If a\n// Base, Script or Region or slice of type Variant or Extension is passed more\n// than once, the latter will overwrite the former. Variants and Extensions are\n// accumulated, but if two extensions of the same type are passed, the latter\n// will replace the former. A Tag overwrites all former values and typically\n// only makes sense as the first argument. The resulting tag is returned after\n// canonicalizing using CanonType c. If one or more errors are encountered,\n// one of the errors is returned.\nfunc (c CanonType) Compose(part ...interface{}) (t Tag, err error) {\n\tvar b builder\n\tif err = b.update(part...); err != nil {\n\t\treturn und, err\n\t}\n\tt, _ = b.tag.canonicalize(c)\n\n\tif len(b.ext) > 0 || len(b.variant) > 0 {\n\t\tsort.Sort(sortVariant(b.variant))\n\t\tsort.Strings(b.ext)\n\t\tif b.private != \"\" {\n\t\t\tb.ext = append(b.ext, b.private)\n\t\t}\n\t\tn := maxCoreSize + tokenLen(b.variant...) + tokenLen(b.ext...)\n\t\tbuf := make([]byte, n)\n\t\tp := t.genCoreBytes(buf)\n\t\tt.pVariant = byte(p)\n\t\tp += appendTokens(buf[p:], b.variant...)\n\t\tt.pExt = uint16(p)\n\t\tp += appendTokens(buf[p:], b.ext...)\n\t\tt.str = string(buf[:p])\n\t} else if b.private != \"\" {\n\t\tt.str = b.private\n\t\tt.remakeString()\n\t}\n\treturn\n}\n\ntype builder struct {\n\ttag Tag\n\n\tprivate string // the x extension\n\text     []string\n\tvariant []string\n\n\terr error\n}\n\nfunc (b *builder) addExt(e string) {\n\tif e == \"\" {\n\t} else if e[0] == 'x' {\n\t\tb.private = e\n\t} else {\n\t\tb.ext = append(b.ext, e)\n\t}\n}\n\nvar errInvalidArgument = errors.New(\"invalid Extension or Variant\")\n\nfunc (b *builder) update(part ...interface{}) (err error) {\n\treplace := func(l *[]string, s string, eq func(a, b string) bool) bool {\n\t\tif s == \"\" {\n\t\t\tb.err = errInvalidArgument\n\t\t\treturn true\n\t\t}\n\t\tfor i, v := range *l {\n\t\t\tif eq(v, s) {\n\t\t\t\t(*l)[i] = s\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tfor _, x := range part {\n\t\tswitch v := x.(type) {\n\t\tcase Tag:\n\t\t\tb.tag.lang = v.lang\n\t\t\tb.tag.region = v.region\n\t\t\tb.tag.script = v.script\n\t\t\tif v.str != \"\" {\n\t\t\t\tb.variant = nil\n\t\t\t\tfor x, s := \"\", v.str[v.pVariant:v.pExt]; s != \"\"; {\n\t\t\t\t\tx, s = nextToken(s)\n\t\t\t\t\tb.variant = append(b.variant, x)\n\t\t\t\t}\n\t\t\t\tb.ext, b.private = nil, \"\"\n\t\t\t\tfor i, e := int(v.pExt), \"\"; i < len(v.str); {\n\t\t\t\t\ti, e = getExtension(v.str, i)\n\t\t\t\t\tb.addExt(e)\n\t\t\t\t}\n\t\t\t}\n\t\tcase Base:\n\t\t\tb.tag.lang = v.langID\n\t\tcase Script:\n\t\t\tb.tag.script = v.scriptID\n\t\tcase Region:\n\t\t\tb.tag.region = v.regionID\n\t\tcase Variant:\n\t\t\tif !replace(&b.variant, v.variant, func(a, b string) bool { return a == b }) {\n\t\t\t\tb.variant = append(b.variant, v.variant)\n\t\t\t}\n\t\tcase Extension:\n\t\t\tif !replace(&b.ext, v.s, func(a, b string) bool { return a[0] == b[0] }) {\n\t\t\t\tb.addExt(v.s)\n\t\t\t}\n\t\tcase []Variant:\n\t\t\tb.variant = nil\n\t\t\tfor _, x := range v {\n\t\t\t\tb.update(x)\n\t\t\t}\n\t\tcase []Extension:\n\t\t\tb.ext, b.private = nil, \"\"\n\t\t\tfor _, e := range v {\n\t\t\t\tb.update(e)\n\t\t\t}\n\t\t// TODO: support parsing of raw strings based on morphology or just extensions?\n\t\tcase error:\n\t\t\terr = v\n\t\t}\n\t}\n\treturn\n}\n\nfunc tokenLen(token ...string) (n int) {\n\tfor _, t := range token {\n\t\tn += len(t) + 1\n\t}\n\treturn\n}\n\nfunc appendTokens(b []byte, token ...string) int {\n\tp := 0\n\tfor _, t := range token {\n\t\tb[p] = '-'\n\t\tcopy(b[p+1:], t)\n\t\tp += 1 + len(t)\n\t}\n\treturn p\n}\n\ntype sortVariant []string\n\nfunc (s sortVariant) Len() int {\n\treturn len(s)\n}\n\nfunc (s sortVariant) Swap(i, j int) {\n\ts[j], s[i] = s[i], s[j]\n}\n\nfunc (s sortVariant) Less(i, j int) bool {\n\treturn variantIndex[s[i]] < variantIndex[s[j]]\n}\n\nfunc findExt(list []string, x byte) int {\n\tfor i, e := range list {\n\t\tif e[0] == x {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// getExtension returns the name, body and end position of the extension.\nfunc getExtension(s string, p int) (end int, ext string) {\n\tif s[p] == '-' {\n\t\tp++\n\t}\n\tif s[p] == 'x' {\n\t\treturn len(s), s[p:]\n\t}\n\tend = nextExtension(s, p)\n\treturn end, s[p:end]\n}\n\n// nextExtension finds the next extension within the string, searching\n// for the -<char>- pattern from position p.\n// In the fast majority of cases, language tags will have at most\n// one extension and extensions tend to be small.\nfunc nextExtension(s string, p int) int {\n\tfor n := len(s) - 3; p < n; {\n\t\tif s[p] == '-' {\n\t\t\tif s[p+2] == '-' {\n\t\t\t\treturn p\n\t\t\t}\n\t\t\tp += 3\n\t\t} else {\n\t\t\tp++\n\t\t}\n\t}\n\treturn len(s)\n}\n\nvar errInvalidWeight = errors.New(\"ParseAcceptLanguage: invalid weight\")\n\n// ParseAcceptLanguage parses the contents of an Accept-Language header as\n// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and\n// a list of corresponding quality weights. It is more permissive than RFC 2616\n// and may return non-nil slices even if the input is not valid.\n// The Tags will be sorted by highest weight first and then by first occurrence.\n// Tags with a weight of zero will be dropped. An error will be returned if the\n// input could not be parsed.\nfunc ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) {\n\tvar entry string\n\tfor s != \"\" {\n\t\tif entry, s = split(s, ','); entry == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tentry, weight := split(entry, ';')\n\n\t\t// Scan the language.\n\t\tt, err := Parse(entry)\n\t\tif err != nil {\n\t\t\tid, ok := acceptFallback[entry]\n\t\t\tif !ok {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t\tt = Tag{lang: id}\n\t\t}\n\n\t\t// Scan the optional weight.\n\t\tw := 1.0\n\t\tif weight != \"\" {\n\t\t\tweight = consume(weight, 'q')\n\t\t\tweight = consume(weight, '=')\n\t\t\t// consume returns the empty string when a token could not be\n\t\t\t// consumed, resulting in an error for ParseFloat.\n\t\t\tif w, err = strconv.ParseFloat(weight, 32); err != nil {\n\t\t\t\treturn nil, nil, errInvalidWeight\n\t\t\t}\n\t\t\t// Drop tags with a quality weight of 0.\n\t\t\tif w <= 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\ttag = append(tag, t)\n\t\tq = append(q, float32(w))\n\t}\n\tsortStable(&tagSort{tag, q})\n\treturn tag, q, nil\n}\n\n// consume removes a leading token c from s and returns the result or the empty\n// string if there is no such token.\nfunc consume(s string, c byte) string {\n\tif s == \"\" || s[0] != c {\n\t\treturn \"\"\n\t}\n\treturn strings.TrimSpace(s[1:])\n}\n\nfunc split(s string, c byte) (head, tail string) {\n\tif i := strings.IndexByte(s, c); i >= 0 {\n\t\treturn strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:])\n\t}\n\treturn strings.TrimSpace(s), \"\"\n}\n\n// Add hack mapping to deal with a small number of cases that that occur\n// in Accept-Language (with reasonable frequency).\nvar acceptFallback = map[string]langID{\n\t\"english\": _en,\n\t\"deutsch\": _de,\n\t\"italian\": _it,\n\t\"french\":  _fr,\n\t\"*\":       _mul, // defined in the spec to match all languages.\n}\n\ntype tagSort struct {\n\ttag []Tag\n\tq   []float32\n}\n\nfunc (s *tagSort) Len() int {\n\treturn len(s.q)\n}\n\nfunc (s *tagSort) Less(i, j int) bool {\n\treturn s.q[i] > s.q[j]\n}\n\nfunc (s *tagSort) Swap(i, j int) {\n\ts.tag[i], s.tag[j] = s.tag[j], s.tag[i]\n\ts.q[i], s.q[j] = s.q[j], s.q[i]\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage language\n\nimport \"golang.org/x/text/internal/tag\"\n\n// CLDRVersion is the CLDR version from which the tables in this package are derived.\nconst CLDRVersion = \"32\"\n\nconst numLanguages = 8665\n\nconst numScripts = 242\n\nconst numRegions = 357\n\ntype fromTo struct {\n\tfrom uint16\n\tto   uint16\n}\n\nconst nonCanonicalUnd = 1201\nconst (\n\t_af  = 22\n\t_am  = 39\n\t_ar  = 58\n\t_az  = 88\n\t_bg  = 126\n\t_bn  = 165\n\t_ca  = 215\n\t_cs  = 250\n\t_da  = 257\n\t_de  = 269\n\t_el  = 310\n\t_en  = 313\n\t_es  = 318\n\t_et  = 320\n\t_fa  = 328\n\t_fi  = 337\n\t_fil = 339\n\t_fr  = 350\n\t_gu  = 420\n\t_he  = 444\n\t_hi  = 446\n\t_hr  = 465\n\t_hu  = 469\n\t_hy  = 471\n\t_id  = 481\n\t_is  = 504\n\t_it  = 505\n\t_ja  = 512\n\t_ka  = 528\n\t_kk  = 578\n\t_km  = 586\n\t_kn  = 593\n\t_ko  = 596\n\t_ky  = 650\n\t_lo  = 696\n\t_lt  = 704\n\t_lv  = 711\n\t_mk  = 767\n\t_ml  = 772\n\t_mn  = 779\n\t_mo  = 784\n\t_mr  = 795\n\t_ms  = 799\n\t_mul = 806\n\t_my  = 817\n\t_nb  = 839\n\t_ne  = 849\n\t_nl  = 871\n\t_no  = 879\n\t_pa  = 925\n\t_pl  = 947\n\t_pt  = 960\n\t_ro  = 988\n\t_ru  = 994\n\t_sh  = 1031\n\t_si  = 1036\n\t_sk  = 1042\n\t_sl  = 1046\n\t_sq  = 1073\n\t_sr  = 1074\n\t_sv  = 1092\n\t_sw  = 1093\n\t_ta  = 1104\n\t_te  = 1121\n\t_th  = 1131\n\t_tl  = 1146\n\t_tn  = 1152\n\t_tr  = 1162\n\t_uk  = 1198\n\t_ur  = 1204\n\t_uz  = 1212\n\t_vi  = 1219\n\t_zh  = 1321\n\t_zu  = 1327\n\t_jbo = 515\n\t_ami = 1650\n\t_bnn = 2357\n\t_hak = 438\n\t_tlh = 14467\n\t_lb  = 661\n\t_nv  = 899\n\t_pwn = 12055\n\t_tao = 14188\n\t_tay = 14198\n\t_tsu = 14662\n\t_nn  = 874\n\t_sfb = 13629\n\t_vgt = 15701\n\t_sgg = 13660\n\t_cmn = 3007\n\t_nan = 835\n\t_hsn = 467\n)\n\nconst langPrivateStart = 0x2f72\n\nconst langPrivateEnd = 0x3179\n\n// lang holds an alphabetically sorted list of ISO-639 language identifiers.\n// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.\n// For 2-byte language identifiers, the two successive bytes have the following meaning:\n//     - if the first letter of the 2- and 3-letter ISO codes are the same:\n//       the second and third letter of the 3-letter ISO code.\n//     - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.\n// For 3-byte language identifiers the 4th byte is 0.\nconst lang tag.Index = \"\" + // Size: 5324 bytes\n\t\"---\\x00aaaraai\\x00aak\\x00aau\\x00abbkabi\\x00abq\\x00abr\\x00abt\\x00aby\\x00a\" +\n\t\"cd\\x00ace\\x00ach\\x00ada\\x00ade\\x00adj\\x00ady\\x00adz\\x00aeveaeb\\x00aey\" +\n\t\"\\x00affragc\\x00agd\\x00agg\\x00agm\\x00ago\\x00agq\\x00aha\\x00ahl\\x00aho\\x00a\" +\n\t\"jg\\x00akkaakk\\x00ala\\x00ali\\x00aln\\x00alt\\x00ammhamm\\x00amn\\x00amo\\x00am\" +\n\t\"p\\x00anrganc\\x00ank\\x00ann\\x00any\\x00aoj\\x00aom\\x00aoz\\x00apc\\x00apd\\x00\" +\n\t\"ape\\x00apr\\x00aps\\x00apz\\x00arraarc\\x00arh\\x00arn\\x00aro\\x00arq\\x00ars\" +\n\t\"\\x00ary\\x00arz\\x00assmasa\\x00ase\\x00asg\\x00aso\\x00ast\\x00ata\\x00atg\\x00a\" +\n\t\"tj\\x00auy\\x00avvaavl\\x00avn\\x00avt\\x00avu\\x00awa\\x00awb\\x00awo\\x00awx\" +\n\t\"\\x00ayymayb\\x00azzebaakbal\\x00ban\\x00bap\\x00bar\\x00bas\\x00bav\\x00bax\\x00\" +\n\t\"bba\\x00bbb\\x00bbc\\x00bbd\\x00bbj\\x00bbp\\x00bbr\\x00bcf\\x00bch\\x00bci\\x00bc\" +\n\t\"m\\x00bcn\\x00bco\\x00bcq\\x00bcu\\x00bdd\\x00beelbef\\x00beh\\x00bej\\x00bem\\x00\" +\n\t\"bet\\x00bew\\x00bex\\x00bez\\x00bfd\\x00bfq\\x00bft\\x00bfy\\x00bgulbgc\\x00bgn\" +\n\t\"\\x00bgx\\x00bhihbhb\\x00bhg\\x00bhi\\x00bhk\\x00bhl\\x00bho\\x00bhy\\x00biisbib\" +\n\t\"\\x00big\\x00bik\\x00bim\\x00bin\\x00bio\\x00biq\\x00bjh\\x00bji\\x00bjj\\x00bjn\" +\n\t\"\\x00bjo\\x00bjr\\x00bjt\\x00bjz\\x00bkc\\x00bkm\\x00bkq\\x00bku\\x00bkv\\x00blt\" +\n\t\"\\x00bmambmh\\x00bmk\\x00bmq\\x00bmu\\x00bnenbng\\x00bnm\\x00bnp\\x00boodboj\\x00\" +\n\t\"bom\\x00bon\\x00bpy\\x00bqc\\x00bqi\\x00bqp\\x00bqv\\x00brrebra\\x00brh\\x00brx\" +\n\t\"\\x00brz\\x00bsosbsj\\x00bsq\\x00bss\\x00bst\\x00bto\\x00btt\\x00btv\\x00bua\\x00b\" +\n\t\"uc\\x00bud\\x00bug\\x00buk\\x00bum\\x00buo\\x00bus\\x00buu\\x00bvb\\x00bwd\\x00bwr\" +\n\t\"\\x00bxh\\x00bye\\x00byn\\x00byr\\x00bys\\x00byv\\x00byx\\x00bza\\x00bze\\x00bzf\" +\n\t\"\\x00bzh\\x00bzw\\x00caatcan\\x00cbj\\x00cch\\x00ccp\\x00ceheceb\\x00cfa\\x00cgg\" +\n\t\"\\x00chhachk\\x00chm\\x00cho\\x00chp\\x00chr\\x00cja\\x00cjm\\x00cjv\\x00ckb\\x00c\" +\n\t\"kl\\x00cko\\x00cky\\x00cla\\x00cme\\x00cmg\\x00cooscop\\x00cps\\x00crrecrh\\x00cr\" +\n\t\"j\\x00crk\\x00crl\\x00crm\\x00crs\\x00csescsb\\x00csw\\x00ctd\\x00cuhucvhvcyymda\" +\n\t\"andad\\x00daf\\x00dag\\x00dah\\x00dak\\x00dar\\x00dav\\x00dbd\\x00dbq\\x00dcc\\x00\" +\n\t\"ddn\\x00deeuded\\x00den\\x00dga\\x00dgh\\x00dgi\\x00dgl\\x00dgr\\x00dgz\\x00dia\" +\n\t\"\\x00dje\\x00dnj\\x00dob\\x00doi\\x00dop\\x00dow\\x00dri\\x00drs\\x00dsb\\x00dtm\" +\n\t\"\\x00dtp\\x00dts\\x00dty\\x00dua\\x00duc\\x00dud\\x00dug\\x00dvivdva\\x00dww\\x00d\" +\n\t\"yo\\x00dyu\\x00dzzodzg\\x00ebu\\x00eeweefi\\x00egl\\x00egy\\x00eka\\x00eky\\x00el\" +\n\t\"llema\\x00emi\\x00enngenn\\x00enq\\x00eopoeri\\x00es\\x00\\x05esu\\x00etstetr\" +\n\t\"\\x00ett\\x00etu\\x00etx\\x00euusewo\\x00ext\\x00faasfaa\\x00fab\\x00fag\\x00fai\" +\n\t\"\\x00fan\\x00ffulffi\\x00ffm\\x00fiinfia\\x00fil\\x00fit\\x00fjijflr\\x00fmp\\x00\" +\n\t\"foaofod\\x00fon\\x00for\\x00fpe\\x00fqs\\x00frrafrc\\x00frp\\x00frr\\x00frs\\x00f\" +\n\t\"ub\\x00fud\\x00fue\\x00fuf\\x00fuh\\x00fuq\\x00fur\\x00fuv\\x00fuy\\x00fvr\\x00fyr\" +\n\t\"ygalegaa\\x00gaf\\x00gag\\x00gah\\x00gaj\\x00gam\\x00gan\\x00gaw\\x00gay\\x00gba\" +\n\t\"\\x00gbf\\x00gbm\\x00gby\\x00gbz\\x00gcr\\x00gdlagde\\x00gdn\\x00gdr\\x00geb\\x00g\" +\n\t\"ej\\x00gel\\x00gez\\x00gfk\\x00ggn\\x00ghs\\x00gil\\x00gim\\x00gjk\\x00gjn\\x00gju\" +\n\t\"\\x00gkn\\x00gkp\\x00gllgglk\\x00gmm\\x00gmv\\x00gnrngnd\\x00gng\\x00god\\x00gof\" +\n\t\"\\x00goi\\x00gom\\x00gon\\x00gor\\x00gos\\x00got\\x00grb\\x00grc\\x00grt\\x00grw\" +\n\t\"\\x00gsw\\x00guujgub\\x00guc\\x00gud\\x00gur\\x00guw\\x00gux\\x00guz\\x00gvlvgvf\" +\n\t\"\\x00gvr\\x00gvs\\x00gwc\\x00gwi\\x00gwt\\x00gyi\\x00haauhag\\x00hak\\x00ham\\x00h\" +\n\t\"aw\\x00haz\\x00hbb\\x00hdy\\x00heebhhy\\x00hiinhia\\x00hif\\x00hig\\x00hih\\x00hi\" +\n\t\"l\\x00hla\\x00hlu\\x00hmd\\x00hmt\\x00hnd\\x00hne\\x00hnj\\x00hnn\\x00hno\\x00homo\" +\n\t\"hoc\\x00hoj\\x00hot\\x00hrrvhsb\\x00hsn\\x00htathuunhui\\x00hyyehzerianaian\" +\n\t\"\\x00iar\\x00iba\\x00ibb\\x00iby\\x00ica\\x00ich\\x00idndidd\\x00idi\\x00idu\\x00i\" +\n\t\"eleife\\x00igboigb\\x00ige\\x00iiiiijj\\x00ikpkikk\\x00ikt\\x00ikw\\x00ikx\\x00i\" +\n\t\"lo\\x00imo\\x00inndinh\\x00iodoiou\\x00iri\\x00isslittaiukuiw\\x00\\x03iwm\\x00i\" +\n\t\"ws\\x00izh\\x00izi\\x00japnjab\\x00jam\\x00jbo\\x00jbu\\x00jen\\x00jgk\\x00jgo\" +\n\t\"\\x00ji\\x00\\x06jib\\x00jmc\\x00jml\\x00jra\\x00jut\\x00jvavjwavkaatkaa\\x00kab\" +\n\t\"\\x00kac\\x00kad\\x00kai\\x00kaj\\x00kam\\x00kao\\x00kbd\\x00kbm\\x00kbp\\x00kbq\" +\n\t\"\\x00kbx\\x00kby\\x00kcg\\x00kck\\x00kcl\\x00kct\\x00kde\\x00kdh\\x00kdl\\x00kdt\" +\n\t\"\\x00kea\\x00ken\\x00kez\\x00kfo\\x00kfr\\x00kfy\\x00kgonkge\\x00kgf\\x00kgp\\x00k\" +\n\t\"ha\\x00khb\\x00khn\\x00khq\\x00khs\\x00kht\\x00khw\\x00khz\\x00kiikkij\\x00kiu\" +\n\t\"\\x00kiw\\x00kjuakjd\\x00kjg\\x00kjs\\x00kjy\\x00kkazkkc\\x00kkj\\x00klalkln\\x00\" +\n\t\"klq\\x00klt\\x00klx\\x00kmhmkmb\\x00kmh\\x00kmo\\x00kms\\x00kmu\\x00kmw\\x00knank\" +\n\t\"nf\\x00knp\\x00koorkoi\\x00kok\\x00kol\\x00kos\\x00koz\\x00kpe\\x00kpf\\x00kpo\" +\n\t\"\\x00kpr\\x00kpx\\x00kqb\\x00kqf\\x00kqs\\x00kqy\\x00kraukrc\\x00kri\\x00krj\\x00k\" +\n\t\"rl\\x00krs\\x00kru\\x00ksasksb\\x00ksd\\x00ksf\\x00ksh\\x00ksj\\x00ksr\\x00ktb\" +\n\t\"\\x00ktm\\x00kto\\x00kuurkub\\x00kud\\x00kue\\x00kuj\\x00kum\\x00kun\\x00kup\\x00k\" +\n\t\"us\\x00kvomkvg\\x00kvr\\x00kvx\\x00kw\\x00\\x01kwj\\x00kwo\\x00kxa\\x00kxc\\x00kxm\" +\n\t\"\\x00kxp\\x00kxw\\x00kxz\\x00kyirkye\\x00kyx\\x00kzr\\x00laatlab\\x00lad\\x00lag\" +\n\t\"\\x00lah\\x00laj\\x00las\\x00lbtzlbe\\x00lbu\\x00lbw\\x00lcm\\x00lcp\\x00ldb\\x00l\" +\n\t\"ed\\x00lee\\x00lem\\x00lep\\x00leq\\x00leu\\x00lez\\x00lguglgg\\x00liimlia\\x00li\" +\n\t\"d\\x00lif\\x00lig\\x00lih\\x00lij\\x00lis\\x00ljp\\x00lki\\x00lkt\\x00lle\\x00lln\" +\n\t\"\\x00lmn\\x00lmo\\x00lmp\\x00lninlns\\x00lnu\\x00loaoloj\\x00lok\\x00lol\\x00lor\" +\n\t\"\\x00los\\x00loz\\x00lrc\\x00ltitltg\\x00luublua\\x00luo\\x00luy\\x00luz\\x00lvav\" +\n\t\"lwl\\x00lzh\\x00lzz\\x00mad\\x00maf\\x00mag\\x00mai\\x00mak\\x00man\\x00mas\\x00ma\" +\n\t\"w\\x00maz\\x00mbh\\x00mbo\\x00mbq\\x00mbu\\x00mbw\\x00mci\\x00mcp\\x00mcq\\x00mcr\" +\n\t\"\\x00mcu\\x00mda\\x00mde\\x00mdf\\x00mdh\\x00mdj\\x00mdr\\x00mdx\\x00med\\x00mee\" +\n\t\"\\x00mek\\x00men\\x00mer\\x00met\\x00meu\\x00mfa\\x00mfe\\x00mfn\\x00mfo\\x00mfq\" +\n\t\"\\x00mglgmgh\\x00mgl\\x00mgo\\x00mgp\\x00mgy\\x00mhahmhi\\x00mhl\\x00mirimif\\x00\" +\n\t\"min\\x00mis\\x00miw\\x00mkkdmki\\x00mkl\\x00mkp\\x00mkw\\x00mlalmle\\x00mlp\\x00m\" +\n\t\"ls\\x00mmo\\x00mmu\\x00mmx\\x00mnonmna\\x00mnf\\x00mni\\x00mnw\\x00moolmoa\\x00mo\" +\n\t\"e\\x00moh\\x00mos\\x00mox\\x00mpp\\x00mps\\x00mpt\\x00mpx\\x00mql\\x00mrarmrd\\x00\" +\n\t\"mrj\\x00mro\\x00mssamtltmtc\\x00mtf\\x00mti\\x00mtr\\x00mua\\x00mul\\x00mur\\x00m\" +\n\t\"us\\x00mva\\x00mvn\\x00mvy\\x00mwk\\x00mwr\\x00mwv\\x00mxc\\x00mxm\\x00myyamyk\" +\n\t\"\\x00mym\\x00myv\\x00myw\\x00myx\\x00myz\\x00mzk\\x00mzm\\x00mzn\\x00mzp\\x00mzw\" +\n\t\"\\x00mzz\\x00naaunac\\x00naf\\x00nah\\x00nak\\x00nan\\x00nap\\x00naq\\x00nas\\x00n\" +\n\t\"bobnca\\x00nce\\x00ncf\\x00nch\\x00nco\\x00ncu\\x00nddendc\\x00nds\\x00neepneb\" +\n\t\"\\x00new\\x00nex\\x00nfr\\x00ngdonga\\x00ngb\\x00ngl\\x00nhb\\x00nhe\\x00nhw\\x00n\" +\n\t\"if\\x00nii\\x00nij\\x00nin\\x00niu\\x00niy\\x00niz\\x00njo\\x00nkg\\x00nko\\x00nll\" +\n\t\"dnmg\\x00nmz\\x00nnnonnf\\x00nnh\\x00nnk\\x00nnm\\x00noornod\\x00noe\\x00non\\x00\" +\n\t\"nop\\x00nou\\x00nqo\\x00nrblnrb\\x00nsk\\x00nsn\\x00nso\\x00nss\\x00ntm\\x00ntr\" +\n\t\"\\x00nui\\x00nup\\x00nus\\x00nuv\\x00nux\\x00nvavnwb\\x00nxq\\x00nxr\\x00nyyanym\" +\n\t\"\\x00nyn\\x00nzi\\x00occiogc\\x00ojjiokr\\x00okv\\x00omrmong\\x00onn\\x00ons\\x00\" +\n\t\"opm\\x00orrioro\\x00oru\\x00osssosa\\x00ota\\x00otk\\x00ozm\\x00paanpag\\x00pal\" +\n\t\"\\x00pam\\x00pap\\x00pau\\x00pbi\\x00pcd\\x00pcm\\x00pdc\\x00pdt\\x00ped\\x00peo\" +\n\t\"\\x00pex\\x00pfl\\x00phl\\x00phn\\x00pilipil\\x00pip\\x00pka\\x00pko\\x00plolpla\" +\n\t\"\\x00pms\\x00png\\x00pnn\\x00pnt\\x00pon\\x00ppo\\x00pra\\x00prd\\x00prg\\x00psusp\" +\n\t\"ss\\x00ptorptp\\x00puu\\x00pwa\\x00quuequc\\x00qug\\x00rai\\x00raj\\x00rao\\x00rc\" +\n\t\"f\\x00rej\\x00rel\\x00res\\x00rgn\\x00rhg\\x00ria\\x00rif\\x00rjs\\x00rkt\\x00rmoh\" +\n\t\"rmf\\x00rmo\\x00rmt\\x00rmu\\x00rnunrna\\x00rng\\x00roonrob\\x00rof\\x00roo\\x00r\" +\n\t\"ro\\x00rtm\\x00ruusrue\\x00rug\\x00rw\\x00\\x04rwk\\x00rwo\\x00ryu\\x00saansaf\" +\n\t\"\\x00sah\\x00saq\\x00sas\\x00sat\\x00sav\\x00saz\\x00sba\\x00sbe\\x00sbp\\x00scrds\" +\n\t\"ck\\x00scl\\x00scn\\x00sco\\x00scs\\x00sdndsdc\\x00sdh\\x00semesef\\x00seh\\x00se\" +\n\t\"i\\x00ses\\x00sgagsga\\x00sgs\\x00sgw\\x00sgz\\x00sh\\x00\\x02shi\\x00shk\\x00shn\" +\n\t\"\\x00shu\\x00siinsid\\x00sig\\x00sil\\x00sim\\x00sjr\\x00sklkskc\\x00skr\\x00sks\" +\n\t\"\\x00sllvsld\\x00sli\\x00sll\\x00sly\\x00smmosma\\x00smi\\x00smj\\x00smn\\x00smp\" +\n\t\"\\x00smq\\x00sms\\x00snnasnc\\x00snk\\x00snp\\x00snx\\x00sny\\x00soomsok\\x00soq\" +\n\t\"\\x00sou\\x00soy\\x00spd\\x00spl\\x00sps\\x00sqqisrrpsrb\\x00srn\\x00srr\\x00srx\" +\n\t\"\\x00ssswssd\\x00ssg\\x00ssy\\x00stotstk\\x00stq\\x00suunsua\\x00sue\\x00suk\\x00\" +\n\t\"sur\\x00sus\\x00svweswwaswb\\x00swc\\x00swg\\x00swp\\x00swv\\x00sxn\\x00sxw\\x00s\" +\n\t\"yl\\x00syr\\x00szl\\x00taamtaj\\x00tal\\x00tan\\x00taq\\x00tbc\\x00tbd\\x00tbf\" +\n\t\"\\x00tbg\\x00tbo\\x00tbw\\x00tbz\\x00tci\\x00tcy\\x00tdd\\x00tdg\\x00tdh\\x00teelt\" +\n\t\"ed\\x00tem\\x00teo\\x00tet\\x00tfi\\x00tggktgc\\x00tgo\\x00tgu\\x00thhathl\\x00th\" +\n\t\"q\\x00thr\\x00tiirtif\\x00tig\\x00tik\\x00tim\\x00tio\\x00tiv\\x00tkuktkl\\x00tkr\" +\n\t\"\\x00tkt\\x00tlgltlf\\x00tlx\\x00tly\\x00tmh\\x00tmy\\x00tnsntnh\\x00toontof\\x00\" +\n\t\"tog\\x00toq\\x00tpi\\x00tpm\\x00tpz\\x00tqo\\x00trurtru\\x00trv\\x00trw\\x00tssot\" +\n\t\"sd\\x00tsf\\x00tsg\\x00tsj\\x00tsw\\x00ttatttd\\x00tte\\x00ttj\\x00ttr\\x00tts\" +\n\t\"\\x00ttt\\x00tuh\\x00tul\\x00tum\\x00tuq\\x00tvd\\x00tvl\\x00tvu\\x00twwitwh\\x00t\" +\n\t\"wq\\x00txg\\x00tyahtya\\x00tyv\\x00tzm\\x00ubu\\x00udm\\x00ugiguga\\x00ukkruli\" +\n\t\"\\x00umb\\x00und\\x00unr\\x00unx\\x00urrduri\\x00urt\\x00urw\\x00usa\\x00utr\\x00u\" +\n\t\"vh\\x00uvl\\x00uzzbvag\\x00vai\\x00van\\x00veenvec\\x00vep\\x00viievic\\x00viv\" +\n\t\"\\x00vls\\x00vmf\\x00vmw\\x00voolvot\\x00vro\\x00vun\\x00vut\\x00walnwae\\x00waj\" +\n\t\"\\x00wal\\x00wan\\x00war\\x00wbp\\x00wbq\\x00wbr\\x00wci\\x00wer\\x00wgi\\x00whg\" +\n\t\"\\x00wib\\x00wiu\\x00wiv\\x00wja\\x00wji\\x00wls\\x00wmo\\x00wnc\\x00wni\\x00wnu\" +\n\t\"\\x00woolwob\\x00wos\\x00wrs\\x00wsk\\x00wtm\\x00wuu\\x00wuv\\x00wwa\\x00xav\\x00x\" +\n\t\"bi\\x00xcr\\x00xes\\x00xhhoxla\\x00xlc\\x00xld\\x00xmf\\x00xmn\\x00xmr\\x00xna\" +\n\t\"\\x00xnr\\x00xog\\x00xon\\x00xpr\\x00xrb\\x00xsa\\x00xsi\\x00xsm\\x00xsr\\x00xwe\" +\n\t\"\\x00yam\\x00yao\\x00yap\\x00yas\\x00yat\\x00yav\\x00yay\\x00yaz\\x00yba\\x00ybb\" +\n\t\"\\x00yby\\x00yer\\x00ygr\\x00ygw\\x00yiidyko\\x00yle\\x00ylg\\x00yll\\x00yml\\x00y\" +\n\t\"ooryon\\x00yrb\\x00yre\\x00yrl\\x00yss\\x00yua\\x00yue\\x00yuj\\x00yut\\x00yuw\" +\n\t\"\\x00zahazag\\x00zbl\\x00zdj\\x00zea\\x00zgh\\x00zhhozhx\\x00zia\\x00zlm\\x00zmi\" +\n\t\"\\x00zne\\x00zuulzxx\\x00zza\\x00\\xff\\xff\\xff\\xff\"\n\nconst langNoIndexOffset = 1330\n\n// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index\n// in lookup tables. The language ids for these language codes are derived directly\n// from the letters and are not consecutive.\n// Size: 2197 bytes, 2197 elements\nvar langNoIndex = [2197]uint8{\n\t// Entry 0 - 3F\n\t0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2,\n\t0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57,\n\t0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70,\n\t0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x62,\n\t0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77,\n\t0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2,\n\t0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xb8, 0x0a, 0x6a,\n\t0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 0xff,\n\t// Entry 40 - 7F\n\t0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0,\n\t0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed,\n\t0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35,\n\t0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff,\n\t0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5,\n\t0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3,\n\t0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce,\n\t0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf,\n\t// Entry 80 - BF\n\t0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x2f, 0xff, 0xff,\n\t0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7,\n\t0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba,\n\t0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff,\n\t0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff,\n\t0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5,\n\t0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c,\n\t0x08, 0x20, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80,\n\t// Entry C0 - FF\n\t0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96,\n\t0x1b, 0x14, 0x08, 0xf2, 0x2b, 0xe7, 0x17, 0x56,\n\t0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef,\n\t0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10,\n\t0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35,\n\t0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x00, 0x81, 0x00,\n\t0xb0, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03,\n\t0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d,\n\t// Entry 100 - 13F\n\t0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64,\n\t0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00,\n\t0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3,\n\t0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x01, 0x0c,\n\t0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc5, 0x67, 0x5f,\n\t0x56, 0x89, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00,\n\t0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56,\n\t0x90, 0x69, 0x01, 0x2c, 0x96, 0x69, 0x20, 0xfb,\n\t// Entry 140 - 17F\n\t0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x16,\n\t0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x06,\n\t0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x09,\n\t0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10,\n\t0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x04,\n\t0x08, 0x00, 0x00, 0x04, 0x00, 0x80, 0x28, 0x04,\n\t0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35,\n\t0x24, 0x52, 0xf4, 0xd4, 0xbd, 0x62, 0xc9, 0x03,\n\t// Entry 180 - 1BF\n\t0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98,\n\t0x21, 0x18, 0x81, 0x00, 0x00, 0x01, 0x40, 0x82,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea,\n\t0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n\t// Entry 1C0 - 1FF\n\t0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00,\n\t0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55,\n\t0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40,\n\t0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf,\n\t// Entry 200 - 23F\n\t0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27,\n\t0xcd, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5,\n\t0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe0, 0xdf,\n\t0x03, 0x44, 0x08, 0x10, 0x01, 0x04, 0x01, 0xe3,\n\t0x92, 0x54, 0xdb, 0x28, 0xd1, 0x5f, 0xf6, 0x6d,\n\t0x79, 0xed, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01,\n\t0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f,\n\t0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54,\n\t// Entry 240 - 27F\n\t0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00,\n\t0x20, 0x7b, 0x38, 0x02, 0x05, 0x84, 0x00, 0xf0,\n\t0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00,\n\t0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04,\n\t0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00,\n\t0x11, 0x04, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff,\n\t0x7b, 0x7f, 0x60, 0x00, 0x05, 0x9b, 0xdd, 0x66,\n\t// Entry 280 - 2BF\n\t0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05,\n\t0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51,\n\t0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05,\n\t0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\n\t0x08, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60,\n\t0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80,\n\t0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04,\n\t0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20,\n\t// Entry 2C0 - 2FF\n\t0x02, 0x50, 0x80, 0x11, 0x00, 0x91, 0x6c, 0xe2,\n\t0x50, 0x27, 0x1d, 0x11, 0x29, 0x06, 0x59, 0xe9,\n\t0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00,\n\t0x00, 0x00, 0x50, 0x44, 0x92, 0x49, 0xd6, 0x5d,\n\t0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00,\n\t0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01,\n\t0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x00, 0x08,\n\t0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x89, 0x12, 0x00,\n\t// Entry 300 - 33F\n\t0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0,\n\t0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,\n\t0x04, 0x10, 0xd0, 0x9d, 0x95, 0x13, 0x04, 0x80,\n\t0x00, 0x01, 0xd0, 0x12, 0x40, 0x00, 0x10, 0xb0,\n\t0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00,\n\t0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80,\n\t0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,\n\t0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00,\n\t// Entry 340 - 37F\n\t0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01,\n\t0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xe3,\n\t0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb,\n\t0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6,\n\t0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff,\n\t0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff,\n\t0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f,\n\t0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f,\n\t// Entry 380 - 3BF\n\t0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f,\n\t0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d,\n\t0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf,\n\t0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff,\n\t0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb,\n\t0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe,\n\t0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x3d, 0x1b,\n\t0x06, 0xe6, 0x72, 0x60, 0xd1, 0x3c, 0x7f, 0x44,\n\t// Entry 3C0 - 3FF\n\t0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57,\n\t0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7,\n\t0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x00,\n\t0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xd9, 0x0e, 0x11,\n\t0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01,\n\t0x05, 0xd1, 0x50, 0x58, 0x00, 0x00, 0x00, 0x10,\n\t0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2,\n\t0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe,\n\t// Entry 400 - 43F\n\t0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f,\n\t0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7,\n\t0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f,\n\t0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b,\n\t0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7,\n\t0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe,\n\t0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde,\n\t0xf7, 0xb9, 0xeb, 0x77, 0xff, 0xfb, 0xbf, 0xdf,\n\t// Entry 440 - 47F\n\t0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d,\n\t0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd,\n\t0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf,\n\t0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7,\n\t0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce,\n\t0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xbd,\n\t0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff,\n\t0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4,\n\t// Entry 480 - 4BF\n\t0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xfd, 0x99, 0xfb,\n\t0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20,\n\t0x14, 0x00, 0x55, 0x51, 0x82, 0x65, 0xf5, 0x41,\n\t0xe2, 0xff, 0xfc, 0xdf, 0x00, 0x05, 0xc5, 0x05,\n\t0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x04,\n\t0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00,\n\t0x06, 0x01, 0x20, 0x00, 0x18, 0x01, 0x92, 0xb1,\n\t// Entry 4C0 - 4FF\n\t0xfd, 0x47, 0x49, 0x06, 0x95, 0x06, 0x57, 0xed,\n\t0xfb, 0x4c, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40,\n\t0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83,\n\t0xb8, 0x4f, 0x10, 0x8c, 0x89, 0x46, 0xde, 0xf7,\n\t0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00,\n\t0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d,\n\t0xba, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,\n\t// Entry 500 - 53F\n\t0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49,\n\t0x2d, 0x14, 0x27, 0x57, 0xed, 0xf1, 0x3f, 0xe7,\n\t0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8,\n\t0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe5, 0xf7,\n\t0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10,\n\t0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9,\n\t0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c,\n\t0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40,\n\t// Entry 540 - 57F\n\t0x00, 0x00, 0x01, 0x43, 0x19, 0x00, 0x08, 0x00,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t// Entry 580 - 5BF\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d,\n\t0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80,\n\t0x00, 0x00, 0x00, 0x00, 0xf0, 0xce, 0xfb, 0xbf,\n\t0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,\n\t0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00,\n\t0x11, 0x04, 0x16, 0x00, 0x00, 0x02, 0x00, 0x81,\n\t0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40,\n\t// Entry 5C0 - 5FF\n\t0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0x3e, 0x02,\n\t0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20,\n\t0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02,\n\t0x19, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,\n\t0x31, 0x00, 0x00, 0x00, 0x01, 0x10, 0x02, 0x20,\n\t0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00,\n\t0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f,\n\t0x1f, 0x98, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe,\n\t// Entry 600 - 63F\n\t0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9,\n\t0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1,\n\t0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7,\n\t0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd,\n\t0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x1f,\n\t0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe,\n\t0xbe, 0x5f, 0x46, 0x1b, 0xe9, 0x5f, 0x50, 0x18,\n\t0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f,\n\t// Entry 640 - 67F\n\t0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf1, 0x57, 0x6c,\n\t0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde,\n\t0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x1f, 0x00, 0x98,\n\t0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff,\n\t0xb9, 0xda, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4,\n\t0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7,\n\t0x5f, 0xff, 0xff, 0x9e, 0xdb, 0xf6, 0xd7, 0xb9,\n\t0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3,\n\t// Entry 680 - 6BF\n\t0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37,\n\t0xce, 0x7f, 0x04, 0x1d, 0x53, 0x7f, 0xf8, 0xda,\n\t0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x69, 0xa0,\n\t0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08,\n\t0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00,\n\t0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06,\n\t0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00,\n\t0x04, 0x00, 0x10, 0xcc, 0x58, 0xd5, 0x0d, 0x0f,\n\t// Entry 6C0 - 6FF\n\t0x14, 0x4d, 0xf1, 0x16, 0x44, 0xd1, 0x42, 0x08,\n\t0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00,\n\t0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x08, 0x41,\n\t0x04, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00,\n\t0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab,\n\t0x6d, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00,\n\t// Entry 700 - 73F\n\t0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,\n\t0x80, 0x86, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x01,\n\t0xdf, 0x18, 0x00, 0x00, 0x02, 0xf0, 0xfd, 0x79,\n\t0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,\n\t0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00,\n\t0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 740 - 77F\n\t0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e,\n\t0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x44,\n\t0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04,\n\t0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a,\n\t0x01, 0x00, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55,\n\t0x97, 0x7c, 0x9f, 0x31, 0xcc, 0x68, 0xd1, 0x03,\n\t0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60,\n\t// Entry 780 - 7BF\n\t0x03, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01,\n\t0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00,\n\t0x10, 0x03, 0x11, 0x02, 0x01, 0x00, 0x00, 0xf0,\n\t0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78,\n\t0x78, 0x15, 0x50, 0x01, 0xa4, 0x84, 0xa9, 0x41,\n\t0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x00,\n\t0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02,\n\t0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed,\n\t// Entry 7C0 - 7FF\n\t0xdd, 0xbf, 0x72, 0x19, 0xc7, 0x0c, 0xd5, 0x42,\n\t0x54, 0xdd, 0x77, 0x14, 0x00, 0x80, 0x40, 0x56,\n\t0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff,\n\t0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d,\n\t0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80,\n\t0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60,\n\t0xfe, 0x01, 0x02, 0x88, 0x0a, 0x40, 0x16, 0x01,\n\t0x01, 0x15, 0x2b, 0x3c, 0x01, 0x00, 0x00, 0x10,\n\t// Entry 800 - 83F\n\t0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf,\n\t0xbf, 0x03, 0x00, 0x00, 0x10, 0xd4, 0xa3, 0xd1,\n\t0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3,\n\t0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80,\n\t0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84,\n\t0x2e, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93,\n\t0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10,\n\t0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00,\n\t// Entry 840 - 87F\n\t0xf0, 0xfb, 0xfd, 0x3f, 0x05, 0x00, 0x12, 0x81,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02,\n\t0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28,\n\t0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00,\n\t0x00, 0xcb, 0xe4, 0x3a, 0x42, 0x88, 0x14, 0xf1,\n\t0xef, 0xff, 0x7f, 0x12, 0x01, 0x01, 0x84, 0x50,\n\t0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40,\n\t0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1,\n\t// Entry 880 - 8BF\n\t0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00,\n\t0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24,\n\t0x0a, 0x00, 0x80, 0x00, 0x00,\n}\n\n// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives\n// to 2-letter language codes that cannot be derived using the method described above.\n// Each 3-letter code is followed by its 1-byte langID.\nconst altLangISO3 tag.Index = \"---\\x00cor\\x00hbs\\x01heb\\x02kin\\x03spa\\x04yid\\x05\\xff\\xff\\xff\\xff\"\n\n// altLangIndex is used to convert indexes in altLangISO3 to langIDs.\n// Size: 12 bytes, 6 elements\nvar altLangIndex = [6]uint16{\n\t0x0281, 0x0407, 0x01fb, 0x03e5, 0x013e, 0x0208,\n}\n\n// langAliasMap maps langIDs to their suggested replacements.\n// Size: 656 bytes, 164 elements\nvar langAliasMap = [164]fromTo{\n\t0:   {from: 0x82, to: 0x88},\n\t1:   {from: 0x187, to: 0x1ae},\n\t2:   {from: 0x1f3, to: 0x1e1},\n\t3:   {from: 0x1fb, to: 0x1bc},\n\t4:   {from: 0x208, to: 0x512},\n\t5:   {from: 0x20f, to: 0x20e},\n\t6:   {from: 0x310, to: 0x3dc},\n\t7:   {from: 0x347, to: 0x36f},\n\t8:   {from: 0x407, to: 0x432},\n\t9:   {from: 0x47a, to: 0x153},\n\t10:  {from: 0x490, to: 0x451},\n\t11:  {from: 0x4a2, to: 0x21},\n\t12:  {from: 0x53e, to: 0x544},\n\t13:  {from: 0x58f, to: 0x12d},\n\t14:  {from: 0x630, to: 0x1eb1},\n\t15:  {from: 0x651, to: 0x431},\n\t16:  {from: 0x662, to: 0x431},\n\t17:  {from: 0x6ed, to: 0x3a},\n\t18:  {from: 0x6f8, to: 0x1d7},\n\t19:  {from: 0x73e, to: 0x21a1},\n\t20:  {from: 0x7b3, to: 0x56},\n\t21:  {from: 0x7b9, to: 0x299b},\n\t22:  {from: 0x7c5, to: 0x58},\n\t23:  {from: 0x7e6, to: 0x145},\n\t24:  {from: 0x80c, to: 0x5a},\n\t25:  {from: 0x815, to: 0x8d},\n\t26:  {from: 0x87e, to: 0x810},\n\t27:  {from: 0x8c3, to: 0xee3},\n\t28:  {from: 0x9ef, to: 0x331},\n\t29:  {from: 0xa36, to: 0x2c5},\n\t30:  {from: 0xa3d, to: 0xbf},\n\t31:  {from: 0xabe, to: 0x3322},\n\t32:  {from: 0xb38, to: 0x529},\n\t33:  {from: 0xb75, to: 0x265a},\n\t34:  {from: 0xb7e, to: 0xbc3},\n\t35:  {from: 0xb9b, to: 0x44e},\n\t36:  {from: 0xbbc, to: 0x4229},\n\t37:  {from: 0xbbf, to: 0x529},\n\t38:  {from: 0xbfe, to: 0x2da7},\n\t39:  {from: 0xc2e, to: 0x3181},\n\t40:  {from: 0xcb9, to: 0xf3},\n\t41:  {from: 0xd08, to: 0xfa},\n\t42:  {from: 0xdc8, to: 0x11a},\n\t43:  {from: 0xdd7, to: 0x32d},\n\t44:  {from: 0xdf8, to: 0xdfb},\n\t45:  {from: 0xdfe, to: 0x531},\n\t46:  {from: 0xedf, to: 0x205a},\n\t47:  {from: 0xeee, to: 0x2e9a},\n\t48:  {from: 0xf39, to: 0x367},\n\t49:  {from: 0x10d0, to: 0x140},\n\t50:  {from: 0x1104, to: 0x2d0},\n\t51:  {from: 0x11a0, to: 0x1ec},\n\t52:  {from: 0x1279, to: 0x21},\n\t53:  {from: 0x1424, to: 0x15e},\n\t54:  {from: 0x1470, to: 0x14e},\n\t55:  {from: 0x151f, to: 0xd9b},\n\t56:  {from: 0x1523, to: 0x390},\n\t57:  {from: 0x1532, to: 0x19f},\n\t58:  {from: 0x1580, to: 0x210},\n\t59:  {from: 0x1583, to: 0x10d},\n\t60:  {from: 0x15a3, to: 0x3caf},\n\t61:  {from: 0x166a, to: 0x19b},\n\t62:  {from: 0x16c8, to: 0x136},\n\t63:  {from: 0x1700, to: 0x29f8},\n\t64:  {from: 0x1718, to: 0x194},\n\t65:  {from: 0x1727, to: 0xf3f},\n\t66:  {from: 0x177a, to: 0x178},\n\t67:  {from: 0x1809, to: 0x17b6},\n\t68:  {from: 0x1816, to: 0x18f3},\n\t69:  {from: 0x188a, to: 0x436},\n\t70:  {from: 0x1979, to: 0x1d01},\n\t71:  {from: 0x1a74, to: 0x2bb0},\n\t72:  {from: 0x1a8a, to: 0x1f8},\n\t73:  {from: 0x1b5a, to: 0x1fa},\n\t74:  {from: 0x1b86, to: 0x1515},\n\t75:  {from: 0x1d64, to: 0x2c9b},\n\t76:  {from: 0x2038, to: 0x37b1},\n\t77:  {from: 0x203d, to: 0x20dd},\n\t78:  {from: 0x205a, to: 0x30b},\n\t79:  {from: 0x20e3, to: 0x274},\n\t80:  {from: 0x20ee, to: 0x263},\n\t81:  {from: 0x20f2, to: 0x22d},\n\t82:  {from: 0x20f9, to: 0x256},\n\t83:  {from: 0x210f, to: 0x21eb},\n\t84:  {from: 0x2135, to: 0x27d},\n\t85:  {from: 0x2160, to: 0x913},\n\t86:  {from: 0x2199, to: 0x121},\n\t87:  {from: 0x21ce, to: 0x1561},\n\t88:  {from: 0x21e6, to: 0x504},\n\t89:  {from: 0x21f4, to: 0x49f},\n\t90:  {from: 0x222d, to: 0x121},\n\t91:  {from: 0x2237, to: 0x121},\n\t92:  {from: 0x2262, to: 0x92a},\n\t93:  {from: 0x2316, to: 0x3226},\n\t94:  {from: 0x2382, to: 0x3365},\n\t95:  {from: 0x2472, to: 0x2c7},\n\t96:  {from: 0x24e4, to: 0x2ff},\n\t97:  {from: 0x24f0, to: 0x2fa},\n\t98:  {from: 0x24fa, to: 0x31f},\n\t99:  {from: 0x2550, to: 0xb5b},\n\t100: {from: 0x25a9, to: 0xe2},\n\t101: {from: 0x263e, to: 0x2d0},\n\t102: {from: 0x26c9, to: 0x26b4},\n\t103: {from: 0x26f9, to: 0x3c8},\n\t104: {from: 0x2727, to: 0x3caf},\n\t105: {from: 0x2765, to: 0x26b4},\n\t106: {from: 0x2789, to: 0x4358},\n\t107: {from: 0x28ef, to: 0x2837},\n\t108: {from: 0x2914, to: 0x351},\n\t109: {from: 0x2986, to: 0x2da7},\n\t110: {from: 0x2b1a, to: 0x38d},\n\t111: {from: 0x2bfc, to: 0x395},\n\t112: {from: 0x2c3f, to: 0x3caf},\n\t113: {from: 0x2cfc, to: 0x3be},\n\t114: {from: 0x2d13, to: 0x597},\n\t115: {from: 0x2d47, to: 0x148},\n\t116: {from: 0x2d48, to: 0x148},\n\t117: {from: 0x2dff, to: 0x2f1},\n\t118: {from: 0x2e08, to: 0x19cc},\n\t119: {from: 0x2e1a, to: 0x2d95},\n\t120: {from: 0x2e21, to: 0x292},\n\t121: {from: 0x2e54, to: 0x7d},\n\t122: {from: 0x2e65, to: 0x2282},\n\t123: {from: 0x2ea0, to: 0x2e9b},\n\t124: {from: 0x2eef, to: 0x2ed7},\n\t125: {from: 0x3193, to: 0x3c4},\n\t126: {from: 0x3366, to: 0x338e},\n\t127: {from: 0x342a, to: 0x3dc},\n\t128: {from: 0x34ee, to: 0x18d0},\n\t129: {from: 0x35c8, to: 0x2c9b},\n\t130: {from: 0x35e6, to: 0x412},\n\t131: {from: 0x3658, to: 0x246},\n\t132: {from: 0x3676, to: 0x3f4},\n\t133: {from: 0x36fd, to: 0x445},\n\t134: {from: 0x37c0, to: 0x121},\n\t135: {from: 0x3816, to: 0x38f2},\n\t136: {from: 0x382b, to: 0x2c9b},\n\t137: {from: 0x382f, to: 0xa9},\n\t138: {from: 0x3832, to: 0x3228},\n\t139: {from: 0x386c, to: 0x39a6},\n\t140: {from: 0x3892, to: 0x3fc0},\n\t141: {from: 0x38a5, to: 0x39d7},\n\t142: {from: 0x38b4, to: 0x1fa4},\n\t143: {from: 0x38b5, to: 0x2e9a},\n\t144: {from: 0x395c, to: 0x47e},\n\t145: {from: 0x3b4e, to: 0xd91},\n\t146: {from: 0x3b78, to: 0x137},\n\t147: {from: 0x3c99, to: 0x4bc},\n\t148: {from: 0x3fbd, to: 0x100},\n\t149: {from: 0x4208, to: 0xa91},\n\t150: {from: 0x42be, to: 0x573},\n\t151: {from: 0x42f9, to: 0x3f60},\n\t152: {from: 0x4378, to: 0x25a},\n\t153: {from: 0x43cb, to: 0x36cb},\n\t154: {from: 0x43cd, to: 0x10f},\n\t155: {from: 0x44af, to: 0x3322},\n\t156: {from: 0x44e3, to: 0x512},\n\t157: {from: 0x45ca, to: 0x2409},\n\t158: {from: 0x45dd, to: 0x26dc},\n\t159: {from: 0x4610, to: 0x48ae},\n\t160: {from: 0x46ae, to: 0x46a0},\n\t161: {from: 0x473e, to: 0x4745},\n\t162: {from: 0x4916, to: 0x31f},\n\t163: {from: 0x49a7, to: 0x523},\n}\n\n// Size: 164 bytes, 164 elements\nvar langAliasTypes = [164]langAliasType{\n\t// Entry 0 - 3F\n\t1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2,\n\t1, 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, 0,\n\t2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0,\n\t2, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0,\n\t// Entry 40 - 7F\n\t1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 1, 1,\n\t1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,\n\t2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1,\n\t0, 1, 0, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2,\n\t// Entry 80 - BF\n\t0, 0, 2, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,\n\t1, 1, 0, 1, 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,\n\t0, 1, 1, 1,\n}\n\nconst (\n\t_Latn = 87\n\t_Hani = 54\n\t_Hans = 56\n\t_Hant = 57\n\t_Qaaa = 139\n\t_Qaai = 147\n\t_Qabx = 188\n\t_Zinh = 236\n\t_Zyyy = 241\n\t_Zzzz = 242\n)\n\n// script is an alphabetically sorted list of ISO 15924 codes. The index\n// of the script in the string, divided by 4, is the internal scriptID.\nconst script tag.Index = \"\" + // Size: 976 bytes\n\t\"----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo\" +\n\t\"BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCpmnCprtCyrlCyrsDevaDogrDsrt\" +\n\t\"DuplEgydEgyhEgypElbaEthiGeokGeorGlagGongGonmGothGranGrekGujrGuruHanbHang\" +\n\t\"HaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamoJavaJpanJurc\" +\n\t\"KaliKanaKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepc\" +\n\t\"LimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedfMendMercMeroMlym\" +\n\t\"ModiMongMoonMrooMteiMultMymrNarbNbatNewaNkdbNkgbNkooNshuOgamOlckOrkhOrya\" +\n\t\"OsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaae\" +\n\t\"QaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaaw\" +\n\t\"QaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabkQablQabmQabnQabo\" +\n\t\"QabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSaraSarbSaurSgnwShaw\" +\n\t\"ShrdShuiSiddSindSinhSoraSoyoSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTaml\" +\n\t\"TangTavtTeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWchoWoleXpeoXsux\" +\n\t\"YiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\\xff\\xff\\xff\\xff\"\n\n// suppressScript is an index from langID to the dominant script for that language,\n// if it exists.  If a script is given, it should be suppressed from the language tag.\n// Size: 1330 bytes, 1330 elements\nvar suppressScript = [1330]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 40 - 7F\n\t0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,\n\t// Entry 80 - BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry C0 - FF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 100 - 13F\n\t0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0xde, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x57, 0x00, 0x57, 0x00,\n\t// Entry 140 - 17F\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x57, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 180 - 1BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x57, 0x32, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x21, 0x00,\n\t// Entry 1C0 - 1FF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x57, 0x00, 0x57, 0x57, 0x00, 0x08,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x57, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 200 - 23F\n\t0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 240 - 27F\n\t0x00, 0x00, 0x1f, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x4f, 0x00, 0x00, 0x50, 0x00, 0x21, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 280 - 2BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 2C0 - 2FF\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,\n\t// Entry 300 - 33F\n\t0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x57,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t// Entry 340 - 37F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x57, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x57, 0x00,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 380 - 3BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,\n\t// Entry 3C0 - 3FF\n\t0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x1f, 0x00, 0x00, 0x57, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 400 - 43F\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 440 - 47F\n\t0x00, 0x00, 0x00, 0x00, 0x57, 0x57, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0xda, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x29,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t// Entry 480 - 4BF\n\t0x57, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 4C0 - 4FF\n\t0x57, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 500 - 53F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,\n\t0x00, 0x00,\n}\n\nconst (\n\t_001 = 1\n\t_419 = 31\n\t_BR  = 65\n\t_CA  = 73\n\t_ES  = 110\n\t_GB  = 123\n\t_MD  = 188\n\t_PT  = 238\n\t_UK  = 306\n\t_US  = 309\n\t_ZZ  = 357\n\t_XA  = 323\n\t_XC  = 325\n\t_XK  = 333\n)\n\n// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID\n// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for\n// the UN.M49 codes used for groups.)\nconst isoRegionOffset = 32\n\n// regionTypes defines the status of a region for various standards.\n// Size: 358 bytes, 358 elements\nvar regionTypes = [358]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry 40 - 7F\n\t0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x04,\n\t0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04,\n\t0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06,\n\t0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00,\n\t0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry 80 - BF\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x00, 0x04, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry C0 - FF\n\t0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00,\n\t0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, 0x06,\n\t0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00,\n\t0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t// Entry 100 - 13F\n\t0x05, 0x05, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry 140 - 17F\n\t0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, 0x06,\n\t0x04, 0x06, 0x06, 0x04, 0x06, 0x05,\n}\n\n// regionISO holds a list of alphabetically sorted 2-letter ISO region codes.\n// Each 2-letter codes is followed by two bytes with the following meaning:\n//     - [A-Z}{2}: the first letter of the 2-letter code plus these two\n//                 letters form the 3-letter ISO code.\n//     - 0, n:     index into altRegionISO3.\nconst regionISO tag.Index = \"\" + // Size: 1308 bytes\n\t\"AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA\" +\n\t\"AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN\" +\n\t\"BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT\" +\n\t\"CRRICS\\x00\\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADOOMDY\" +\n\t\"HYDZZAEA  ECCUEESTEGGYEHSHERRIESSPETTHEU\\x00\\x03EZ  FIINFJJIFKLKFMSMFORO\" +\n\t\"FQ\\x00\\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQNQGR\" +\n\t\"RCGS\\x00\\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC  IDDNIERLILSR\" +\n\t\"IMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM\\x00\" +\n\t\"\\x09KNNAKP\\x00\\x0cKRORKWWTKY\\x00\\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSOLTTU\" +\n\t\"LUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNPMQTQ\" +\n\t\"MRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLDNOOR\" +\n\t\"NPPLNQ\\x00\\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM\\x00\" +\n\t\"\\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSSQTTT\" +\n\t\"QU\\x00\\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\\x00\\x15RUUSRWWASAAUSBLBSCYC\" +\n\t\"SDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXMSYYR\" +\n\t\"SZWZTAAATCCATDCDTF\\x00\\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTTTOTV\" +\n\t\"UVTWWNTZZAUAKRUGGAUK  UMMIUN  USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVNNMVU\" +\n\t\"UTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXNNNXO\" +\n\t\"OOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\\x00\\x1bYUUGZAAF\" +\n\t\"ZMMBZRARZWWEZZZZ\\xff\\xff\\xff\\xff\"\n\n// altRegionISO3 holds a list of 3-letter region codes that cannot be\n// mapped to 2-letter codes using the default algorithm. This is a short list.\nconst altRegionISO3 string = \"SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN\"\n\n// altRegionIDs holds a list of regionIDs the positions of which match those\n// of the 3-letter ISO codes in altRegionISO3.\n// Size: 22 bytes, 11 elements\nvar altRegionIDs = [11]uint16{\n\t0x0057, 0x0070, 0x0088, 0x00a8, 0x00aa, 0x00ad, 0x00ea, 0x0105,\n\t0x0121, 0x015f, 0x00dc,\n}\n\n// Size: 80 bytes, 20 elements\nvar regionOldMap = [20]fromTo{\n\t0:  {from: 0x44, to: 0xc4},\n\t1:  {from: 0x58, to: 0xa7},\n\t2:  {from: 0x5f, to: 0x60},\n\t3:  {from: 0x66, to: 0x3b},\n\t4:  {from: 0x79, to: 0x78},\n\t5:  {from: 0x93, to: 0x37},\n\t6:  {from: 0xa3, to: 0x133},\n\t7:  {from: 0xc1, to: 0x133},\n\t8:  {from: 0xd7, to: 0x13f},\n\t9:  {from: 0xdc, to: 0x2b},\n\t10: {from: 0xef, to: 0x133},\n\t11: {from: 0xf2, to: 0xe2},\n\t12: {from: 0xfc, to: 0x70},\n\t13: {from: 0x103, to: 0x164},\n\t14: {from: 0x12a, to: 0x126},\n\t15: {from: 0x132, to: 0x7b},\n\t16: {from: 0x13a, to: 0x13e},\n\t17: {from: 0x141, to: 0x133},\n\t18: {from: 0x15d, to: 0x15e},\n\t19: {from: 0x163, to: 0x4b},\n}\n\n// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are\n// codes indicating collections of regions.\n// Size: 716 bytes, 358 elements\nvar m49 = [358]int16{\n\t// Entry 0 - 3F\n\t0, 1, 2, 3, 5, 9, 11, 13,\n\t14, 15, 17, 18, 19, 21, 29, 30,\n\t34, 35, 39, 53, 54, 57, 61, 142,\n\t143, 145, 150, 151, 154, 155, 202, 419,\n\t958, 0, 20, 784, 4, 28, 660, 8,\n\t51, 530, 24, 10, 32, 16, 40, 36,\n\t533, 248, 31, 70, 52, 50, 56, 854,\n\t100, 48, 108, 204, 652, 60, 96, 68,\n\t// Entry 40 - 7F\n\t535, 76, 44, 64, 104, 74, 72, 112,\n\t84, 124, 166, 180, 140, 178, 756, 384,\n\t184, 152, 120, 156, 170, 0, 188, 891,\n\t296, 192, 132, 531, 162, 196, 203, 278,\n\t276, 0, 262, 208, 212, 214, 204, 12,\n\t0, 218, 233, 818, 732, 232, 724, 231,\n\t967, 0, 246, 242, 238, 583, 234, 0,\n\t250, 249, 266, 826, 308, 268, 254, 831,\n\t// Entry 80 - BF\n\t288, 292, 304, 270, 324, 312, 226, 300,\n\t239, 320, 316, 624, 328, 344, 334, 340,\n\t191, 332, 348, 854, 0, 360, 372, 376,\n\t833, 356, 86, 368, 364, 352, 380, 832,\n\t388, 400, 392, 581, 404, 417, 116, 296,\n\t174, 659, 408, 410, 414, 136, 398, 418,\n\t422, 662, 438, 144, 430, 426, 440, 442,\n\t428, 434, 504, 492, 498, 499, 663, 450,\n\t// Entry C0 - FF\n\t584, 581, 807, 466, 104, 496, 446, 580,\n\t474, 478, 500, 470, 480, 462, 454, 484,\n\t458, 508, 516, 540, 562, 574, 566, 548,\n\t558, 528, 578, 524, 10, 520, 536, 570,\n\t554, 512, 591, 0, 604, 258, 598, 608,\n\t586, 616, 666, 612, 630, 275, 620, 581,\n\t585, 600, 591, 634, 959, 960, 961, 962,\n\t963, 964, 965, 966, 967, 968, 969, 970,\n\t// Entry 100 - 13F\n\t971, 972, 638, 716, 642, 688, 643, 646,\n\t682, 90, 690, 729, 752, 702, 654, 705,\n\t744, 703, 694, 674, 686, 706, 740, 728,\n\t678, 810, 222, 534, 760, 748, 0, 796,\n\t148, 260, 768, 764, 762, 772, 626, 795,\n\t788, 776, 626, 792, 780, 798, 158, 834,\n\t804, 800, 826, 581, 0, 840, 858, 860,\n\t336, 670, 704, 862, 92, 850, 704, 548,\n\t// Entry 140 - 17F\n\t876, 581, 882, 973, 974, 975, 976, 977,\n\t978, 979, 980, 981, 982, 983, 984, 985,\n\t986, 987, 988, 989, 990, 991, 992, 993,\n\t994, 995, 996, 997, 998, 720, 887, 175,\n\t891, 710, 894, 180, 716, 999,\n}\n\n// m49Index gives indexes into fromM49 based on the three most significant bits\n// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in\n//    fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]]\n// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code.\n// The region code is stored in the 9 lsb of the indexed value.\n// Size: 18 bytes, 9 elements\nvar m49Index = [9]int16{\n\t0, 59, 108, 143, 181, 220, 259, 291,\n\t333,\n}\n\n// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.\n// Size: 666 bytes, 333 elements\nvar fromM49 = [333]uint16{\n\t// Entry 0 - 3F\n\t0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b,\n\t0x1606, 0x1867, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b,\n\t0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32,\n\t0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039,\n\t0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d,\n\t0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848,\n\t0xac9a, 0xb509, 0xb93c, 0xc03e, 0xc838, 0xd0c4, 0xd83a, 0xe047,\n\t0xe8a6, 0xf052, 0xf849, 0x085a, 0x10ad, 0x184c, 0x1c17, 0x1e18,\n\t// Entry 40 - 7F\n\t0x20b3, 0x2219, 0x2920, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d,\n\t0x3853, 0x3d2e, 0x445c, 0x4c4a, 0x5454, 0x5ca8, 0x5f5f, 0x644d,\n\t0x684b, 0x7050, 0x7856, 0x7e90, 0x8059, 0x885d, 0x941e, 0x965e,\n\t0x983b, 0xa063, 0xa864, 0xac65, 0xb469, 0xbd1a, 0xc486, 0xcc6f,\n\t0xce6f, 0xd06d, 0xd26a, 0xd476, 0xdc74, 0xde88, 0xe473, 0xec72,\n\t0xf031, 0xf279, 0xf478, 0xfc7e, 0x04e5, 0x0921, 0x0c62, 0x147a,\n\t0x187d, 0x1c83, 0x26ed, 0x2860, 0x2c5f, 0x3060, 0x4080, 0x4881,\n\t0x50a7, 0x5887, 0x6082, 0x687c, 0x7085, 0x788a, 0x8089, 0x8884,\n\t// Entry 80 - BF\n\t0x908c, 0x9891, 0x9c8e, 0xa138, 0xa88f, 0xb08d, 0xb892, 0xc09d,\n\t0xc899, 0xd095, 0xd89c, 0xe09b, 0xe896, 0xf097, 0xf89e, 0x004f,\n\t0x08a0, 0x10a2, 0x1cae, 0x20a1, 0x28a4, 0x30aa, 0x34ab, 0x3cac,\n\t0x42a5, 0x44af, 0x461f, 0x4cb0, 0x54b5, 0x58b8, 0x5cb4, 0x64b9,\n\t0x6cb2, 0x70b6, 0x74b7, 0x7cc6, 0x84bf, 0x8cce, 0x94d0, 0x9ccd,\n\t0xa4c3, 0xaccb, 0xb4c8, 0xbcc9, 0xc0cc, 0xc8cf, 0xd8bb, 0xe0c5,\n\t0xe4bc, 0xe6bd, 0xe8ca, 0xf0ba, 0xf8d1, 0x00e1, 0x08d2, 0x10dd,\n\t0x18db, 0x20d9, 0x2429, 0x265b, 0x2a30, 0x2d1b, 0x2e40, 0x30de,\n\t// Entry C0 - FF\n\t0x38d3, 0x493f, 0x54e0, 0x5cd8, 0x64d4, 0x6cd6, 0x74df, 0x7cd5,\n\t0x84da, 0x88c7, 0x8b33, 0x8e75, 0x90c0, 0x92f0, 0x94e8, 0x9ee2,\n\t0xace6, 0xb0f1, 0xb8e4, 0xc0e7, 0xc8eb, 0xd0e9, 0xd8ee, 0xe08b,\n\t0xe526, 0xecec, 0xf4f3, 0xfd02, 0x0504, 0x0706, 0x0d07, 0x183c,\n\t0x1d0e, 0x26a9, 0x2826, 0x2cb1, 0x2ebe, 0x34ea, 0x3d39, 0x4513,\n\t0x4d18, 0x5508, 0x5d14, 0x6105, 0x650a, 0x6d12, 0x7d0d, 0x7f11,\n\t0x813e, 0x830f, 0x8515, 0x8d61, 0x9964, 0xa15d, 0xa86e, 0xb117,\n\t0xb30b, 0xb86c, 0xc10b, 0xc916, 0xd110, 0xd91d, 0xe10c, 0xe84e,\n\t// Entry 100 - 13F\n\t0xf11c, 0xf524, 0xf923, 0x0122, 0x0925, 0x1129, 0x192c, 0x2023,\n\t0x2928, 0x312b, 0x3727, 0x391f, 0x3d2d, 0x4131, 0x4930, 0x4ec2,\n\t0x5519, 0x646b, 0x747b, 0x7e7f, 0x809f, 0x8298, 0x852f, 0x9135,\n\t0xa53d, 0xac37, 0xb536, 0xb937, 0xbd3b, 0xd940, 0xe542, 0xed5e,\n\t0xef5e, 0xf657, 0xfd62, 0x7c20, 0x7ef4, 0x80f5, 0x82f6, 0x84f7,\n\t0x86f8, 0x88f9, 0x8afa, 0x8cfb, 0x8e70, 0x90fd, 0x92fe, 0x94ff,\n\t0x9700, 0x9901, 0x9b43, 0x9d44, 0x9f45, 0xa146, 0xa347, 0xa548,\n\t0xa749, 0xa94a, 0xab4b, 0xad4c, 0xaf4d, 0xb14e, 0xb34f, 0xb550,\n\t// Entry 140 - 17F\n\t0xb751, 0xb952, 0xbb53, 0xbd54, 0xbf55, 0xc156, 0xc357, 0xc558,\n\t0xc759, 0xc95a, 0xcb5b, 0xcd5c, 0xcf65,\n}\n\n// Size: 1615 bytes\nvar variantIndex = map[string]uint8{\n\t\"1606nict\": 0x0,\n\t\"1694acad\": 0x1,\n\t\"1901\":     0x2,\n\t\"1959acad\": 0x3,\n\t\"1994\":     0x4d,\n\t\"1996\":     0x4,\n\t\"abl1943\":  0x5,\n\t\"akuapem\":  0x6,\n\t\"alalc97\":  0x4f,\n\t\"aluku\":    0x7,\n\t\"ao1990\":   0x8,\n\t\"arevela\":  0x9,\n\t\"arevmda\":  0xa,\n\t\"asante\":   0xb,\n\t\"baku1926\": 0xc,\n\t\"balanka\":  0xd,\n\t\"barla\":    0xe,\n\t\"basiceng\": 0xf,\n\t\"bauddha\":  0x10,\n\t\"biscayan\": 0x11,\n\t\"biske\":    0x48,\n\t\"bohoric\":  0x12,\n\t\"boont\":    0x13,\n\t\"colb1945\": 0x14,\n\t\"cornu\":    0x15,\n\t\"dajnko\":   0x16,\n\t\"ekavsk\":   0x17,\n\t\"emodeng\":  0x18,\n\t\"fonipa\":   0x50,\n\t\"fonnapa\":  0x51,\n\t\"fonupa\":   0x52,\n\t\"fonxsamp\": 0x53,\n\t\"hepburn\":  0x19,\n\t\"heploc\":   0x4e,\n\t\"hognorsk\": 0x1a,\n\t\"hsistemo\": 0x1b,\n\t\"ijekavsk\": 0x1c,\n\t\"itihasa\":  0x1d,\n\t\"jauer\":    0x1e,\n\t\"jyutping\": 0x1f,\n\t\"kkcor\":    0x20,\n\t\"kociewie\": 0x21,\n\t\"kscor\":    0x22,\n\t\"laukika\":  0x23,\n\t\"lipaw\":    0x49,\n\t\"luna1918\": 0x24,\n\t\"metelko\":  0x25,\n\t\"monoton\":  0x26,\n\t\"ndyuka\":   0x27,\n\t\"nedis\":    0x28,\n\t\"newfound\": 0x29,\n\t\"njiva\":    0x4a,\n\t\"nulik\":    0x2a,\n\t\"osojs\":    0x4b,\n\t\"oxendict\": 0x2b,\n\t\"pahawh2\":  0x2c,\n\t\"pahawh3\":  0x2d,\n\t\"pahawh4\":  0x2e,\n\t\"pamaka\":   0x2f,\n\t\"petr1708\": 0x30,\n\t\"pinyin\":   0x31,\n\t\"polyton\":  0x32,\n\t\"puter\":    0x33,\n\t\"rigik\":    0x34,\n\t\"rozaj\":    0x35,\n\t\"rumgr\":    0x36,\n\t\"scotland\": 0x37,\n\t\"scouse\":   0x38,\n\t\"simple\":   0x54,\n\t\"solba\":    0x4c,\n\t\"sotav\":    0x39,\n\t\"spanglis\": 0x3a,\n\t\"surmiran\": 0x3b,\n\t\"sursilv\":  0x3c,\n\t\"sutsilv\":  0x3d,\n\t\"tarask\":   0x3e,\n\t\"uccor\":    0x3f,\n\t\"ucrcor\":   0x40,\n\t\"ulster\":   0x41,\n\t\"unifon\":   0x42,\n\t\"vaidika\":  0x43,\n\t\"valencia\": 0x44,\n\t\"vallader\": 0x45,\n\t\"wadegile\": 0x46,\n\t\"xsistemo\": 0x47,\n}\n\n// variantNumSpecialized is the number of specialized variants in variants.\nconst variantNumSpecialized = 79\n\n// nRegionGroups is the number of region groups.\nconst nRegionGroups = 33\n\ntype likelyLangRegion struct {\n\tlang   uint16\n\tregion uint16\n}\n\n// likelyScript is a lookup table, indexed by scriptID, for the most likely\n// languages and regions given a script.\n// Size: 976 bytes, 244 elements\nvar likelyScript = [244]likelyLangRegion{\n\t1:   {lang: 0x14e, region: 0x84},\n\t3:   {lang: 0x2a2, region: 0x106},\n\t4:   {lang: 0x1f, region: 0x99},\n\t5:   {lang: 0x3a, region: 0x6b},\n\t7:   {lang: 0x3b, region: 0x9c},\n\t8:   {lang: 0x1d7, region: 0x28},\n\t9:   {lang: 0x13, region: 0x9c},\n\t10:  {lang: 0x5b, region: 0x95},\n\t11:  {lang: 0x60, region: 0x52},\n\t12:  {lang: 0xb9, region: 0xb4},\n\t13:  {lang: 0x63, region: 0x95},\n\t14:  {lang: 0xa5, region: 0x35},\n\t15:  {lang: 0x3e9, region: 0x99},\n\t17:  {lang: 0x529, region: 0x12e},\n\t18:  {lang: 0x3b1, region: 0x99},\n\t19:  {lang: 0x15e, region: 0x78},\n\t20:  {lang: 0xc2, region: 0x95},\n\t21:  {lang: 0x9d, region: 0xe7},\n\t22:  {lang: 0xdb, region: 0x35},\n\t23:  {lang: 0xf3, region: 0x49},\n\t24:  {lang: 0x4f0, region: 0x12b},\n\t25:  {lang: 0xe7, region: 0x13e},\n\t26:  {lang: 0xe5, region: 0x135},\n\t28:  {lang: 0xf1, region: 0x6b},\n\t30:  {lang: 0x1a0, region: 0x5d},\n\t31:  {lang: 0x3e2, region: 0x106},\n\t33:  {lang: 0x1be, region: 0x99},\n\t36:  {lang: 0x15e, region: 0x78},\n\t39:  {lang: 0x133, region: 0x6b},\n\t40:  {lang: 0x431, region: 0x27},\n\t41:  {lang: 0x27, region: 0x6f},\n\t43:  {lang: 0x210, region: 0x7d},\n\t44:  {lang: 0xfe, region: 0x38},\n\t46:  {lang: 0x19b, region: 0x99},\n\t47:  {lang: 0x19e, region: 0x130},\n\t48:  {lang: 0x3e9, region: 0x99},\n\t49:  {lang: 0x136, region: 0x87},\n\t50:  {lang: 0x1a4, region: 0x99},\n\t51:  {lang: 0x39d, region: 0x99},\n\t52:  {lang: 0x529, region: 0x12e},\n\t53:  {lang: 0x254, region: 0xab},\n\t54:  {lang: 0x529, region: 0x53},\n\t55:  {lang: 0x1cb, region: 0xe7},\n\t56:  {lang: 0x529, region: 0x53},\n\t57:  {lang: 0x529, region: 0x12e},\n\t58:  {lang: 0x2fd, region: 0x9b},\n\t59:  {lang: 0x1bc, region: 0x97},\n\t60:  {lang: 0x200, region: 0xa2},\n\t61:  {lang: 0x1c5, region: 0x12b},\n\t62:  {lang: 0x1ca, region: 0xaf},\n\t65:  {lang: 0x1d5, region: 0x92},\n\t67:  {lang: 0x142, region: 0x9e},\n\t68:  {lang: 0x254, region: 0xab},\n\t69:  {lang: 0x20e, region: 0x95},\n\t70:  {lang: 0x200, region: 0xa2},\n\t72:  {lang: 0x135, region: 0xc4},\n\t73:  {lang: 0x200, region: 0xa2},\n\t74:  {lang: 0x3bb, region: 0xe8},\n\t75:  {lang: 0x24a, region: 0xa6},\n\t76:  {lang: 0x3fa, region: 0x99},\n\t79:  {lang: 0x251, region: 0x99},\n\t80:  {lang: 0x254, region: 0xab},\n\t82:  {lang: 0x88, region: 0x99},\n\t83:  {lang: 0x370, region: 0x123},\n\t84:  {lang: 0x2b8, region: 0xaf},\n\t89:  {lang: 0x29f, region: 0x99},\n\t90:  {lang: 0x2a8, region: 0x99},\n\t91:  {lang: 0x28f, region: 0x87},\n\t92:  {lang: 0x1a0, region: 0x87},\n\t93:  {lang: 0x2ac, region: 0x53},\n\t95:  {lang: 0x4f4, region: 0x12b},\n\t96:  {lang: 0x4f5, region: 0x12b},\n\t97:  {lang: 0x1be, region: 0x99},\n\t99:  {lang: 0x337, region: 0x9c},\n\t100: {lang: 0x4f7, region: 0x53},\n\t101: {lang: 0xa9, region: 0x53},\n\t104: {lang: 0x2e8, region: 0x112},\n\t105: {lang: 0x4f8, region: 0x10b},\n\t106: {lang: 0x4f8, region: 0x10b},\n\t107: {lang: 0x304, region: 0x99},\n\t108: {lang: 0x31b, region: 0x99},\n\t109: {lang: 0x30b, region: 0x53},\n\t111: {lang: 0x31e, region: 0x35},\n\t112: {lang: 0x30e, region: 0x99},\n\t113: {lang: 0x414, region: 0xe8},\n\t114: {lang: 0x331, region: 0xc4},\n\t115: {lang: 0x4f9, region: 0x108},\n\t116: {lang: 0x3b, region: 0xa1},\n\t117: {lang: 0x353, region: 0xdb},\n\t120: {lang: 0x2d0, region: 0x84},\n\t121: {lang: 0x52a, region: 0x53},\n\t122: {lang: 0x403, region: 0x96},\n\t123: {lang: 0x3ee, region: 0x99},\n\t124: {lang: 0x39b, region: 0xc5},\n\t125: {lang: 0x395, region: 0x99},\n\t126: {lang: 0x399, region: 0x135},\n\t127: {lang: 0x429, region: 0x115},\n\t128: {lang: 0x3b, region: 0x11c},\n\t129: {lang: 0xfd, region: 0xc4},\n\t130: {lang: 0x27d, region: 0x106},\n\t131: {lang: 0x2c9, region: 0x53},\n\t132: {lang: 0x39f, region: 0x9c},\n\t133: {lang: 0x39f, region: 0x53},\n\t135: {lang: 0x3ad, region: 0xb0},\n\t137: {lang: 0x1c6, region: 0x53},\n\t138: {lang: 0x4fd, region: 0x9c},\n\t189: {lang: 0x3cb, region: 0x95},\n\t191: {lang: 0x372, region: 0x10c},\n\t192: {lang: 0x420, region: 0x97},\n\t194: {lang: 0x4ff, region: 0x15e},\n\t195: {lang: 0x3f0, region: 0x99},\n\t196: {lang: 0x45, region: 0x135},\n\t197: {lang: 0x139, region: 0x7b},\n\t198: {lang: 0x3e9, region: 0x99},\n\t200: {lang: 0x3e9, region: 0x99},\n\t201: {lang: 0x3fa, region: 0x99},\n\t202: {lang: 0x40c, region: 0xb3},\n\t203: {lang: 0x433, region: 0x99},\n\t204: {lang: 0xef, region: 0xc5},\n\t205: {lang: 0x43e, region: 0x95},\n\t206: {lang: 0x44d, region: 0x35},\n\t207: {lang: 0x44e, region: 0x9b},\n\t211: {lang: 0x45a, region: 0xe7},\n\t212: {lang: 0x11a, region: 0x99},\n\t213: {lang: 0x45e, region: 0x53},\n\t214: {lang: 0x232, region: 0x53},\n\t215: {lang: 0x450, region: 0x99},\n\t216: {lang: 0x4a5, region: 0x53},\n\t217: {lang: 0x9f, region: 0x13e},\n\t218: {lang: 0x461, region: 0x99},\n\t220: {lang: 0x528, region: 0xba},\n\t221: {lang: 0x153, region: 0xe7},\n\t222: {lang: 0x128, region: 0xcd},\n\t223: {lang: 0x46b, region: 0x123},\n\t224: {lang: 0xa9, region: 0x53},\n\t225: {lang: 0x2ce, region: 0x99},\n\t226: {lang: 0x4ad, region: 0x11c},\n\t227: {lang: 0x4be, region: 0xb4},\n\t229: {lang: 0x1ce, region: 0x99},\n\t232: {lang: 0x3a9, region: 0x9c},\n\t233: {lang: 0x22, region: 0x9b},\n\t234: {lang: 0x1ea, region: 0x53},\n\t235: {lang: 0xef, region: 0xc5},\n}\n\ntype likelyScriptRegion struct {\n\tregion uint16\n\tscript uint8\n\tflags  uint8\n}\n\n// likelyLang is a lookup table, indexed by langID, for the most likely\n// scripts and regions given incomplete information. If more entries exist for a\n// given language, region and script are the index and size respectively\n// of the list in likelyLangList.\n// Size: 5320 bytes, 1330 elements\nvar likelyLang = [1330]likelyScriptRegion{\n\t0:    {region: 0x135, script: 0x57, flags: 0x0},\n\t1:    {region: 0x6f, script: 0x57, flags: 0x0},\n\t2:    {region: 0x165, script: 0x57, flags: 0x0},\n\t3:    {region: 0x165, script: 0x57, flags: 0x0},\n\t4:    {region: 0x165, script: 0x57, flags: 0x0},\n\t5:    {region: 0x7d, script: 0x1f, flags: 0x0},\n\t6:    {region: 0x165, script: 0x57, flags: 0x0},\n\t7:    {region: 0x165, script: 0x1f, flags: 0x0},\n\t8:    {region: 0x80, script: 0x57, flags: 0x0},\n\t9:    {region: 0x165, script: 0x57, flags: 0x0},\n\t10:   {region: 0x165, script: 0x57, flags: 0x0},\n\t11:   {region: 0x165, script: 0x57, flags: 0x0},\n\t12:   {region: 0x95, script: 0x57, flags: 0x0},\n\t13:   {region: 0x131, script: 0x57, flags: 0x0},\n\t14:   {region: 0x80, script: 0x57, flags: 0x0},\n\t15:   {region: 0x165, script: 0x57, flags: 0x0},\n\t16:   {region: 0x165, script: 0x57, flags: 0x0},\n\t17:   {region: 0x106, script: 0x1f, flags: 0x0},\n\t18:   {region: 0x165, script: 0x57, flags: 0x0},\n\t19:   {region: 0x9c, script: 0x9, flags: 0x0},\n\t20:   {region: 0x128, script: 0x5, flags: 0x0},\n\t21:   {region: 0x165, script: 0x57, flags: 0x0},\n\t22:   {region: 0x161, script: 0x57, flags: 0x0},\n\t23:   {region: 0x165, script: 0x57, flags: 0x0},\n\t24:   {region: 0x165, script: 0x57, flags: 0x0},\n\t25:   {region: 0x165, script: 0x57, flags: 0x0},\n\t26:   {region: 0x165, script: 0x57, flags: 0x0},\n\t27:   {region: 0x165, script: 0x57, flags: 0x0},\n\t28:   {region: 0x52, script: 0x57, flags: 0x0},\n\t29:   {region: 0x165, script: 0x57, flags: 0x0},\n\t30:   {region: 0x165, script: 0x57, flags: 0x0},\n\t31:   {region: 0x99, script: 0x4, flags: 0x0},\n\t32:   {region: 0x165, script: 0x57, flags: 0x0},\n\t33:   {region: 0x80, script: 0x57, flags: 0x0},\n\t34:   {region: 0x9b, script: 0xe9, flags: 0x0},\n\t35:   {region: 0x165, script: 0x57, flags: 0x0},\n\t36:   {region: 0x165, script: 0x57, flags: 0x0},\n\t37:   {region: 0x14d, script: 0x57, flags: 0x0},\n\t38:   {region: 0x106, script: 0x1f, flags: 0x0},\n\t39:   {region: 0x6f, script: 0x29, flags: 0x0},\n\t40:   {region: 0x165, script: 0x57, flags: 0x0},\n\t41:   {region: 0x165, script: 0x57, flags: 0x0},\n\t42:   {region: 0xd6, script: 0x57, flags: 0x0},\n\t43:   {region: 0x165, script: 0x57, flags: 0x0},\n\t45:   {region: 0x165, script: 0x57, flags: 0x0},\n\t46:   {region: 0x165, script: 0x57, flags: 0x0},\n\t47:   {region: 0x165, script: 0x57, flags: 0x0},\n\t48:   {region: 0x165, script: 0x57, flags: 0x0},\n\t49:   {region: 0x165, script: 0x57, flags: 0x0},\n\t50:   {region: 0x165, script: 0x57, flags: 0x0},\n\t51:   {region: 0x95, script: 0x57, flags: 0x0},\n\t52:   {region: 0x165, script: 0x5, flags: 0x0},\n\t53:   {region: 0x122, script: 0x5, flags: 0x0},\n\t54:   {region: 0x165, script: 0x57, flags: 0x0},\n\t55:   {region: 0x165, script: 0x57, flags: 0x0},\n\t56:   {region: 0x165, script: 0x57, flags: 0x0},\n\t57:   {region: 0x165, script: 0x57, flags: 0x0},\n\t58:   {region: 0x6b, script: 0x5, flags: 0x0},\n\t59:   {region: 0x0, script: 0x3, flags: 0x1},\n\t60:   {region: 0x165, script: 0x57, flags: 0x0},\n\t61:   {region: 0x51, script: 0x57, flags: 0x0},\n\t62:   {region: 0x3f, script: 0x57, flags: 0x0},\n\t63:   {region: 0x67, script: 0x5, flags: 0x0},\n\t65:   {region: 0xba, script: 0x5, flags: 0x0},\n\t66:   {region: 0x6b, script: 0x5, flags: 0x0},\n\t67:   {region: 0x99, script: 0xe, flags: 0x0},\n\t68:   {region: 0x12f, script: 0x57, flags: 0x0},\n\t69:   {region: 0x135, script: 0xc4, flags: 0x0},\n\t70:   {region: 0x165, script: 0x57, flags: 0x0},\n\t71:   {region: 0x165, script: 0x57, flags: 0x0},\n\t72:   {region: 0x6e, script: 0x57, flags: 0x0},\n\t73:   {region: 0x165, script: 0x57, flags: 0x0},\n\t74:   {region: 0x165, script: 0x57, flags: 0x0},\n\t75:   {region: 0x49, script: 0x57, flags: 0x0},\n\t76:   {region: 0x165, script: 0x57, flags: 0x0},\n\t77:   {region: 0x106, script: 0x1f, flags: 0x0},\n\t78:   {region: 0x165, script: 0x5, flags: 0x0},\n\t79:   {region: 0x165, script: 0x57, flags: 0x0},\n\t80:   {region: 0x165, script: 0x57, flags: 0x0},\n\t81:   {region: 0x165, script: 0x57, flags: 0x0},\n\t82:   {region: 0x99, script: 0x21, flags: 0x0},\n\t83:   {region: 0x165, script: 0x57, flags: 0x0},\n\t84:   {region: 0x165, script: 0x57, flags: 0x0},\n\t85:   {region: 0x165, script: 0x57, flags: 0x0},\n\t86:   {region: 0x3f, script: 0x57, flags: 0x0},\n\t87:   {region: 0x165, script: 0x57, flags: 0x0},\n\t88:   {region: 0x3, script: 0x5, flags: 0x1},\n\t89:   {region: 0x106, script: 0x1f, flags: 0x0},\n\t90:   {region: 0xe8, script: 0x5, flags: 0x0},\n\t91:   {region: 0x95, script: 0x57, flags: 0x0},\n\t92:   {region: 0xdb, script: 0x21, flags: 0x0},\n\t93:   {region: 0x2e, script: 0x57, flags: 0x0},\n\t94:   {region: 0x52, script: 0x57, flags: 0x0},\n\t95:   {region: 0x165, script: 0x57, flags: 0x0},\n\t96:   {region: 0x52, script: 0xb, flags: 0x0},\n\t97:   {region: 0x165, script: 0x57, flags: 0x0},\n\t98:   {region: 0x165, script: 0x57, flags: 0x0},\n\t99:   {region: 0x95, script: 0x57, flags: 0x0},\n\t100:  {region: 0x165, script: 0x57, flags: 0x0},\n\t101:  {region: 0x52, script: 0x57, flags: 0x0},\n\t102:  {region: 0x165, script: 0x57, flags: 0x0},\n\t103:  {region: 0x165, script: 0x57, flags: 0x0},\n\t104:  {region: 0x165, script: 0x57, flags: 0x0},\n\t105:  {region: 0x165, script: 0x57, flags: 0x0},\n\t106:  {region: 0x4f, script: 0x57, flags: 0x0},\n\t107:  {region: 0x165, script: 0x57, flags: 0x0},\n\t108:  {region: 0x165, script: 0x57, flags: 0x0},\n\t109:  {region: 0x165, script: 0x57, flags: 0x0},\n\t110:  {region: 0x165, script: 0x29, flags: 0x0},\n\t111:  {region: 0x165, script: 0x57, flags: 0x0},\n\t112:  {region: 0x165, script: 0x57, flags: 0x0},\n\t113:  {region: 0x47, script: 0x1f, flags: 0x0},\n\t114:  {region: 0x165, script: 0x57, flags: 0x0},\n\t115:  {region: 0x165, script: 0x57, flags: 0x0},\n\t116:  {region: 0x10b, script: 0x5, flags: 0x0},\n\t117:  {region: 0x162, script: 0x57, flags: 0x0},\n\t118:  {region: 0x165, script: 0x57, flags: 0x0},\n\t119:  {region: 0x95, script: 0x57, flags: 0x0},\n\t120:  {region: 0x165, script: 0x57, flags: 0x0},\n\t121:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t122:  {region: 0x52, script: 0x57, flags: 0x0},\n\t123:  {region: 0x99, script: 0xd7, flags: 0x0},\n\t124:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t125:  {region: 0x99, script: 0x21, flags: 0x0},\n\t126:  {region: 0x38, script: 0x1f, flags: 0x0},\n\t127:  {region: 0x99, script: 0x21, flags: 0x0},\n\t128:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t129:  {region: 0x12b, script: 0x31, flags: 0x0},\n\t131:  {region: 0x99, script: 0x21, flags: 0x0},\n\t132:  {region: 0x165, script: 0x57, flags: 0x0},\n\t133:  {region: 0x99, script: 0x21, flags: 0x0},\n\t134:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t135:  {region: 0x165, script: 0x57, flags: 0x0},\n\t136:  {region: 0x99, script: 0x21, flags: 0x0},\n\t137:  {region: 0x165, script: 0x57, flags: 0x0},\n\t138:  {region: 0x13f, script: 0x57, flags: 0x0},\n\t139:  {region: 0x165, script: 0x57, flags: 0x0},\n\t140:  {region: 0x165, script: 0x57, flags: 0x0},\n\t141:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t142:  {region: 0x165, script: 0x57, flags: 0x0},\n\t143:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t144:  {region: 0x165, script: 0x57, flags: 0x0},\n\t145:  {region: 0x165, script: 0x57, flags: 0x0},\n\t146:  {region: 0x165, script: 0x57, flags: 0x0},\n\t147:  {region: 0x165, script: 0x29, flags: 0x0},\n\t148:  {region: 0x99, script: 0x21, flags: 0x0},\n\t149:  {region: 0x95, script: 0x57, flags: 0x0},\n\t150:  {region: 0x165, script: 0x57, flags: 0x0},\n\t151:  {region: 0x165, script: 0x57, flags: 0x0},\n\t152:  {region: 0x114, script: 0x57, flags: 0x0},\n\t153:  {region: 0x165, script: 0x57, flags: 0x0},\n\t154:  {region: 0x165, script: 0x57, flags: 0x0},\n\t155:  {region: 0x52, script: 0x57, flags: 0x0},\n\t156:  {region: 0x165, script: 0x57, flags: 0x0},\n\t157:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t158:  {region: 0x165, script: 0x57, flags: 0x0},\n\t159:  {region: 0x13e, script: 0xd9, flags: 0x0},\n\t160:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t161:  {region: 0x165, script: 0x57, flags: 0x0},\n\t162:  {region: 0x165, script: 0x57, flags: 0x0},\n\t163:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t164:  {region: 0x165, script: 0x57, flags: 0x0},\n\t165:  {region: 0x35, script: 0xe, flags: 0x0},\n\t166:  {region: 0x165, script: 0x57, flags: 0x0},\n\t167:  {region: 0x165, script: 0x57, flags: 0x0},\n\t168:  {region: 0x165, script: 0x57, flags: 0x0},\n\t169:  {region: 0x53, script: 0xe0, flags: 0x0},\n\t170:  {region: 0x165, script: 0x57, flags: 0x0},\n\t171:  {region: 0x165, script: 0x57, flags: 0x0},\n\t172:  {region: 0x165, script: 0x57, flags: 0x0},\n\t173:  {region: 0x99, script: 0xe, flags: 0x0},\n\t174:  {region: 0x165, script: 0x57, flags: 0x0},\n\t175:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t176:  {region: 0x165, script: 0x57, flags: 0x0},\n\t177:  {region: 0x4f, script: 0x57, flags: 0x0},\n\t178:  {region: 0x78, script: 0x57, flags: 0x0},\n\t179:  {region: 0x99, script: 0x21, flags: 0x0},\n\t180:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t181:  {region: 0x99, script: 0x21, flags: 0x0},\n\t182:  {region: 0x165, script: 0x57, flags: 0x0},\n\t183:  {region: 0x33, script: 0x57, flags: 0x0},\n\t184:  {region: 0x165, script: 0x57, flags: 0x0},\n\t185:  {region: 0xb4, script: 0xc, flags: 0x0},\n\t186:  {region: 0x52, script: 0x57, flags: 0x0},\n\t187:  {region: 0x165, script: 0x29, flags: 0x0},\n\t188:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t189:  {region: 0x165, script: 0x57, flags: 0x0},\n\t190:  {region: 0xe8, script: 0x21, flags: 0x0},\n\t191:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t192:  {region: 0x15f, script: 0x57, flags: 0x0},\n\t193:  {region: 0x165, script: 0x57, flags: 0x0},\n\t194:  {region: 0x95, script: 0x57, flags: 0x0},\n\t195:  {region: 0x165, script: 0x57, flags: 0x0},\n\t196:  {region: 0x52, script: 0x57, flags: 0x0},\n\t197:  {region: 0x165, script: 0x57, flags: 0x0},\n\t198:  {region: 0x165, script: 0x57, flags: 0x0},\n\t199:  {region: 0x165, script: 0x57, flags: 0x0},\n\t200:  {region: 0x86, script: 0x57, flags: 0x0},\n\t201:  {region: 0x165, script: 0x57, flags: 0x0},\n\t202:  {region: 0x165, script: 0x57, flags: 0x0},\n\t203:  {region: 0x165, script: 0x57, flags: 0x0},\n\t204:  {region: 0x165, script: 0x57, flags: 0x0},\n\t205:  {region: 0x6d, script: 0x29, flags: 0x0},\n\t206:  {region: 0x165, script: 0x57, flags: 0x0},\n\t207:  {region: 0x165, script: 0x57, flags: 0x0},\n\t208:  {region: 0x52, script: 0x57, flags: 0x0},\n\t209:  {region: 0x165, script: 0x57, flags: 0x0},\n\t210:  {region: 0x165, script: 0x57, flags: 0x0},\n\t211:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t212:  {region: 0x165, script: 0x57, flags: 0x0},\n\t213:  {region: 0x165, script: 0x57, flags: 0x0},\n\t214:  {region: 0x165, script: 0x57, flags: 0x0},\n\t215:  {region: 0x6e, script: 0x57, flags: 0x0},\n\t216:  {region: 0x165, script: 0x57, flags: 0x0},\n\t217:  {region: 0x165, script: 0x57, flags: 0x0},\n\t218:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t219:  {region: 0x35, script: 0x16, flags: 0x0},\n\t220:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t221:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t222:  {region: 0x165, script: 0x57, flags: 0x0},\n\t223:  {region: 0x131, script: 0x57, flags: 0x0},\n\t224:  {region: 0x8a, script: 0x57, flags: 0x0},\n\t225:  {region: 0x75, script: 0x57, flags: 0x0},\n\t226:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t227:  {region: 0x135, script: 0x57, flags: 0x0},\n\t228:  {region: 0x49, script: 0x57, flags: 0x0},\n\t229:  {region: 0x135, script: 0x1a, flags: 0x0},\n\t230:  {region: 0xa6, script: 0x5, flags: 0x0},\n\t231:  {region: 0x13e, script: 0x19, flags: 0x0},\n\t232:  {region: 0x165, script: 0x57, flags: 0x0},\n\t233:  {region: 0x9b, script: 0x5, flags: 0x0},\n\t234:  {region: 0x165, script: 0x57, flags: 0x0},\n\t235:  {region: 0x165, script: 0x57, flags: 0x0},\n\t236:  {region: 0x165, script: 0x57, flags: 0x0},\n\t237:  {region: 0x165, script: 0x57, flags: 0x0},\n\t238:  {region: 0x165, script: 0x57, flags: 0x0},\n\t239:  {region: 0xc5, script: 0xcc, flags: 0x0},\n\t240:  {region: 0x78, script: 0x57, flags: 0x0},\n\t241:  {region: 0x6b, script: 0x1c, flags: 0x0},\n\t242:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t243:  {region: 0x49, script: 0x17, flags: 0x0},\n\t244:  {region: 0x130, script: 0x1f, flags: 0x0},\n\t245:  {region: 0x49, script: 0x17, flags: 0x0},\n\t246:  {region: 0x49, script: 0x17, flags: 0x0},\n\t247:  {region: 0x49, script: 0x17, flags: 0x0},\n\t248:  {region: 0x49, script: 0x17, flags: 0x0},\n\t249:  {region: 0x10a, script: 0x57, flags: 0x0},\n\t250:  {region: 0x5e, script: 0x57, flags: 0x0},\n\t251:  {region: 0xe9, script: 0x57, flags: 0x0},\n\t252:  {region: 0x49, script: 0x17, flags: 0x0},\n\t253:  {region: 0xc4, script: 0x81, flags: 0x0},\n\t254:  {region: 0x8, script: 0x2, flags: 0x1},\n\t255:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t256:  {region: 0x7b, script: 0x57, flags: 0x0},\n\t257:  {region: 0x63, script: 0x57, flags: 0x0},\n\t258:  {region: 0x165, script: 0x57, flags: 0x0},\n\t259:  {region: 0x165, script: 0x57, flags: 0x0},\n\t260:  {region: 0x165, script: 0x57, flags: 0x0},\n\t261:  {region: 0x165, script: 0x57, flags: 0x0},\n\t262:  {region: 0x135, script: 0x57, flags: 0x0},\n\t263:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t264:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t265:  {region: 0x165, script: 0x57, flags: 0x0},\n\t266:  {region: 0x165, script: 0x57, flags: 0x0},\n\t267:  {region: 0x99, script: 0x5, flags: 0x0},\n\t268:  {region: 0x165, script: 0x57, flags: 0x0},\n\t269:  {region: 0x60, script: 0x57, flags: 0x0},\n\t270:  {region: 0x165, script: 0x57, flags: 0x0},\n\t271:  {region: 0x49, script: 0x57, flags: 0x0},\n\t272:  {region: 0x165, script: 0x57, flags: 0x0},\n\t273:  {region: 0x165, script: 0x57, flags: 0x0},\n\t274:  {region: 0x165, script: 0x57, flags: 0x0},\n\t275:  {region: 0x165, script: 0x5, flags: 0x0},\n\t276:  {region: 0x49, script: 0x57, flags: 0x0},\n\t277:  {region: 0x165, script: 0x57, flags: 0x0},\n\t278:  {region: 0x165, script: 0x57, flags: 0x0},\n\t279:  {region: 0xd4, script: 0x57, flags: 0x0},\n\t280:  {region: 0x4f, script: 0x57, flags: 0x0},\n\t281:  {region: 0x165, script: 0x57, flags: 0x0},\n\t282:  {region: 0x99, script: 0x5, flags: 0x0},\n\t283:  {region: 0x165, script: 0x57, flags: 0x0},\n\t284:  {region: 0x165, script: 0x57, flags: 0x0},\n\t285:  {region: 0x165, script: 0x57, flags: 0x0},\n\t286:  {region: 0x165, script: 0x29, flags: 0x0},\n\t287:  {region: 0x60, script: 0x57, flags: 0x0},\n\t288:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t289:  {region: 0xd0, script: 0x57, flags: 0x0},\n\t290:  {region: 0x165, script: 0x57, flags: 0x0},\n\t291:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t292:  {region: 0x52, script: 0x57, flags: 0x0},\n\t293:  {region: 0x165, script: 0x57, flags: 0x0},\n\t294:  {region: 0x165, script: 0x57, flags: 0x0},\n\t295:  {region: 0x165, script: 0x57, flags: 0x0},\n\t296:  {region: 0xcd, script: 0xde, flags: 0x0},\n\t297:  {region: 0x165, script: 0x57, flags: 0x0},\n\t298:  {region: 0x165, script: 0x57, flags: 0x0},\n\t299:  {region: 0x114, script: 0x57, flags: 0x0},\n\t300:  {region: 0x37, script: 0x57, flags: 0x0},\n\t301:  {region: 0x43, script: 0xe0, flags: 0x0},\n\t302:  {region: 0x165, script: 0x57, flags: 0x0},\n\t303:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t304:  {region: 0x80, script: 0x57, flags: 0x0},\n\t305:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t306:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t307:  {region: 0x6b, script: 0x27, flags: 0x0},\n\t308:  {region: 0x165, script: 0x57, flags: 0x0},\n\t309:  {region: 0xc4, script: 0x48, flags: 0x0},\n\t310:  {region: 0x87, script: 0x31, flags: 0x0},\n\t311:  {region: 0x165, script: 0x57, flags: 0x0},\n\t312:  {region: 0x165, script: 0x57, flags: 0x0},\n\t313:  {region: 0xa, script: 0x2, flags: 0x1},\n\t314:  {region: 0x165, script: 0x57, flags: 0x0},\n\t315:  {region: 0x165, script: 0x57, flags: 0x0},\n\t316:  {region: 0x1, script: 0x57, flags: 0x0},\n\t317:  {region: 0x165, script: 0x57, flags: 0x0},\n\t318:  {region: 0x6e, script: 0x57, flags: 0x0},\n\t319:  {region: 0x135, script: 0x57, flags: 0x0},\n\t320:  {region: 0x6a, script: 0x57, flags: 0x0},\n\t321:  {region: 0x165, script: 0x57, flags: 0x0},\n\t322:  {region: 0x9e, script: 0x43, flags: 0x0},\n\t323:  {region: 0x165, script: 0x57, flags: 0x0},\n\t324:  {region: 0x165, script: 0x57, flags: 0x0},\n\t325:  {region: 0x6e, script: 0x57, flags: 0x0},\n\t326:  {region: 0x52, script: 0x57, flags: 0x0},\n\t327:  {region: 0x6e, script: 0x57, flags: 0x0},\n\t328:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t329:  {region: 0x165, script: 0x57, flags: 0x0},\n\t330:  {region: 0x165, script: 0x57, flags: 0x0},\n\t331:  {region: 0x165, script: 0x57, flags: 0x0},\n\t332:  {region: 0x165, script: 0x57, flags: 0x0},\n\t333:  {region: 0x86, script: 0x57, flags: 0x0},\n\t334:  {region: 0xc, script: 0x2, flags: 0x1},\n\t335:  {region: 0x165, script: 0x57, flags: 0x0},\n\t336:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t337:  {region: 0x72, script: 0x57, flags: 0x0},\n\t338:  {region: 0x10b, script: 0x5, flags: 0x0},\n\t339:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t340:  {region: 0x10c, script: 0x57, flags: 0x0},\n\t341:  {region: 0x73, script: 0x57, flags: 0x0},\n\t342:  {region: 0x165, script: 0x57, flags: 0x0},\n\t343:  {region: 0x165, script: 0x57, flags: 0x0},\n\t344:  {region: 0x76, script: 0x57, flags: 0x0},\n\t345:  {region: 0x165, script: 0x57, flags: 0x0},\n\t346:  {region: 0x3b, script: 0x57, flags: 0x0},\n\t347:  {region: 0x165, script: 0x57, flags: 0x0},\n\t348:  {region: 0x165, script: 0x57, flags: 0x0},\n\t349:  {region: 0x165, script: 0x57, flags: 0x0},\n\t350:  {region: 0x78, script: 0x57, flags: 0x0},\n\t351:  {region: 0x135, script: 0x57, flags: 0x0},\n\t352:  {region: 0x78, script: 0x57, flags: 0x0},\n\t353:  {region: 0x60, script: 0x57, flags: 0x0},\n\t354:  {region: 0x60, script: 0x57, flags: 0x0},\n\t355:  {region: 0x52, script: 0x5, flags: 0x0},\n\t356:  {region: 0x140, script: 0x57, flags: 0x0},\n\t357:  {region: 0x165, script: 0x57, flags: 0x0},\n\t358:  {region: 0x84, script: 0x57, flags: 0x0},\n\t359:  {region: 0x165, script: 0x57, flags: 0x0},\n\t360:  {region: 0xd4, script: 0x57, flags: 0x0},\n\t361:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t362:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t363:  {region: 0x165, script: 0x57, flags: 0x0},\n\t364:  {region: 0x10b, script: 0x57, flags: 0x0},\n\t365:  {region: 0xd9, script: 0x57, flags: 0x0},\n\t366:  {region: 0x96, script: 0x57, flags: 0x0},\n\t367:  {region: 0x80, script: 0x57, flags: 0x0},\n\t368:  {region: 0x165, script: 0x57, flags: 0x0},\n\t369:  {region: 0xbc, script: 0x57, flags: 0x0},\n\t370:  {region: 0x165, script: 0x57, flags: 0x0},\n\t371:  {region: 0x165, script: 0x57, flags: 0x0},\n\t372:  {region: 0x165, script: 0x57, flags: 0x0},\n\t373:  {region: 0x53, script: 0x38, flags: 0x0},\n\t374:  {region: 0x165, script: 0x57, flags: 0x0},\n\t375:  {region: 0x95, script: 0x57, flags: 0x0},\n\t376:  {region: 0x165, script: 0x57, flags: 0x0},\n\t377:  {region: 0x165, script: 0x57, flags: 0x0},\n\t378:  {region: 0x99, script: 0x21, flags: 0x0},\n\t379:  {region: 0x165, script: 0x57, flags: 0x0},\n\t380:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t381:  {region: 0x7e, script: 0x57, flags: 0x0},\n\t382:  {region: 0x7b, script: 0x57, flags: 0x0},\n\t383:  {region: 0x165, script: 0x57, flags: 0x0},\n\t384:  {region: 0x165, script: 0x57, flags: 0x0},\n\t385:  {region: 0x165, script: 0x57, flags: 0x0},\n\t386:  {region: 0x165, script: 0x57, flags: 0x0},\n\t387:  {region: 0x165, script: 0x57, flags: 0x0},\n\t388:  {region: 0x165, script: 0x57, flags: 0x0},\n\t389:  {region: 0x6f, script: 0x29, flags: 0x0},\n\t390:  {region: 0x165, script: 0x57, flags: 0x0},\n\t391:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t392:  {region: 0x165, script: 0x57, flags: 0x0},\n\t393:  {region: 0xa7, script: 0x57, flags: 0x0},\n\t394:  {region: 0x165, script: 0x57, flags: 0x0},\n\t395:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t396:  {region: 0x165, script: 0x57, flags: 0x0},\n\t397:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t398:  {region: 0x165, script: 0x57, flags: 0x0},\n\t399:  {region: 0x165, script: 0x57, flags: 0x0},\n\t400:  {region: 0x6e, script: 0x57, flags: 0x0},\n\t401:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t402:  {region: 0x165, script: 0x57, flags: 0x0},\n\t403:  {region: 0x165, script: 0x29, flags: 0x0},\n\t404:  {region: 0xf1, script: 0x57, flags: 0x0},\n\t405:  {region: 0x165, script: 0x57, flags: 0x0},\n\t406:  {region: 0x165, script: 0x57, flags: 0x0},\n\t407:  {region: 0x165, script: 0x57, flags: 0x0},\n\t408:  {region: 0x165, script: 0x29, flags: 0x0},\n\t409:  {region: 0x165, script: 0x57, flags: 0x0},\n\t410:  {region: 0x99, script: 0x21, flags: 0x0},\n\t411:  {region: 0x99, script: 0xda, flags: 0x0},\n\t412:  {region: 0x95, script: 0x57, flags: 0x0},\n\t413:  {region: 0xd9, script: 0x57, flags: 0x0},\n\t414:  {region: 0x130, script: 0x2f, flags: 0x0},\n\t415:  {region: 0x165, script: 0x57, flags: 0x0},\n\t416:  {region: 0xe, script: 0x2, flags: 0x1},\n\t417:  {region: 0x99, script: 0xe, flags: 0x0},\n\t418:  {region: 0x165, script: 0x57, flags: 0x0},\n\t419:  {region: 0x4e, script: 0x57, flags: 0x0},\n\t420:  {region: 0x99, script: 0x32, flags: 0x0},\n\t421:  {region: 0x41, script: 0x57, flags: 0x0},\n\t422:  {region: 0x54, script: 0x57, flags: 0x0},\n\t423:  {region: 0x165, script: 0x57, flags: 0x0},\n\t424:  {region: 0x80, script: 0x57, flags: 0x0},\n\t425:  {region: 0x165, script: 0x57, flags: 0x0},\n\t426:  {region: 0x165, script: 0x57, flags: 0x0},\n\t427:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t428:  {region: 0x98, script: 0x57, flags: 0x0},\n\t429:  {region: 0x165, script: 0x57, flags: 0x0},\n\t430:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t431:  {region: 0x165, script: 0x57, flags: 0x0},\n\t432:  {region: 0x165, script: 0x5, flags: 0x0},\n\t433:  {region: 0x49, script: 0x57, flags: 0x0},\n\t434:  {region: 0x165, script: 0x5, flags: 0x0},\n\t435:  {region: 0x165, script: 0x57, flags: 0x0},\n\t436:  {region: 0x10, script: 0x3, flags: 0x1},\n\t437:  {region: 0x165, script: 0x57, flags: 0x0},\n\t438:  {region: 0x53, script: 0x38, flags: 0x0},\n\t439:  {region: 0x165, script: 0x57, flags: 0x0},\n\t440:  {region: 0x135, script: 0x57, flags: 0x0},\n\t441:  {region: 0x24, script: 0x5, flags: 0x0},\n\t442:  {region: 0x165, script: 0x57, flags: 0x0},\n\t443:  {region: 0x165, script: 0x29, flags: 0x0},\n\t444:  {region: 0x97, script: 0x3b, flags: 0x0},\n\t445:  {region: 0x165, script: 0x57, flags: 0x0},\n\t446:  {region: 0x99, script: 0x21, flags: 0x0},\n\t447:  {region: 0x165, script: 0x57, flags: 0x0},\n\t448:  {region: 0x73, script: 0x57, flags: 0x0},\n\t449:  {region: 0x165, script: 0x57, flags: 0x0},\n\t450:  {region: 0x165, script: 0x57, flags: 0x0},\n\t451:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t452:  {region: 0x165, script: 0x57, flags: 0x0},\n\t453:  {region: 0x12b, script: 0x3d, flags: 0x0},\n\t454:  {region: 0x53, script: 0x89, flags: 0x0},\n\t455:  {region: 0x165, script: 0x57, flags: 0x0},\n\t456:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t457:  {region: 0x99, script: 0x21, flags: 0x0},\n\t458:  {region: 0xaf, script: 0x3e, flags: 0x0},\n\t459:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t460:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t461:  {region: 0xe6, script: 0x57, flags: 0x0},\n\t462:  {region: 0x99, script: 0x21, flags: 0x0},\n\t463:  {region: 0x99, script: 0x21, flags: 0x0},\n\t464:  {region: 0x165, script: 0x57, flags: 0x0},\n\t465:  {region: 0x90, script: 0x57, flags: 0x0},\n\t466:  {region: 0x60, script: 0x57, flags: 0x0},\n\t467:  {region: 0x53, script: 0x38, flags: 0x0},\n\t468:  {region: 0x91, script: 0x57, flags: 0x0},\n\t469:  {region: 0x92, script: 0x57, flags: 0x0},\n\t470:  {region: 0x165, script: 0x57, flags: 0x0},\n\t471:  {region: 0x28, script: 0x8, flags: 0x0},\n\t472:  {region: 0xd2, script: 0x57, flags: 0x0},\n\t473:  {region: 0x78, script: 0x57, flags: 0x0},\n\t474:  {region: 0x165, script: 0x57, flags: 0x0},\n\t475:  {region: 0x165, script: 0x57, flags: 0x0},\n\t476:  {region: 0xd0, script: 0x57, flags: 0x0},\n\t477:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t478:  {region: 0x165, script: 0x57, flags: 0x0},\n\t479:  {region: 0x165, script: 0x57, flags: 0x0},\n\t480:  {region: 0x165, script: 0x57, flags: 0x0},\n\t481:  {region: 0x95, script: 0x57, flags: 0x0},\n\t482:  {region: 0x165, script: 0x57, flags: 0x0},\n\t483:  {region: 0x165, script: 0x57, flags: 0x0},\n\t484:  {region: 0x165, script: 0x57, flags: 0x0},\n\t486:  {region: 0x122, script: 0x57, flags: 0x0},\n\t487:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t488:  {region: 0x165, script: 0x57, flags: 0x0},\n\t489:  {region: 0x165, script: 0x57, flags: 0x0},\n\t490:  {region: 0x53, script: 0xea, flags: 0x0},\n\t491:  {region: 0x165, script: 0x57, flags: 0x0},\n\t492:  {region: 0x135, script: 0x57, flags: 0x0},\n\t493:  {region: 0x165, script: 0x57, flags: 0x0},\n\t494:  {region: 0x49, script: 0x57, flags: 0x0},\n\t495:  {region: 0x165, script: 0x57, flags: 0x0},\n\t496:  {region: 0x165, script: 0x57, flags: 0x0},\n\t497:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t498:  {region: 0x165, script: 0x57, flags: 0x0},\n\t499:  {region: 0x95, script: 0x57, flags: 0x0},\n\t500:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t501:  {region: 0x1, script: 0x57, flags: 0x0},\n\t502:  {region: 0x165, script: 0x57, flags: 0x0},\n\t503:  {region: 0x165, script: 0x57, flags: 0x0},\n\t504:  {region: 0x9d, script: 0x57, flags: 0x0},\n\t505:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t506:  {region: 0x49, script: 0x17, flags: 0x0},\n\t507:  {region: 0x97, script: 0x3b, flags: 0x0},\n\t508:  {region: 0x165, script: 0x57, flags: 0x0},\n\t509:  {region: 0x165, script: 0x57, flags: 0x0},\n\t510:  {region: 0x106, script: 0x57, flags: 0x0},\n\t511:  {region: 0x165, script: 0x57, flags: 0x0},\n\t512:  {region: 0xa2, script: 0x46, flags: 0x0},\n\t513:  {region: 0x165, script: 0x57, flags: 0x0},\n\t514:  {region: 0xa0, script: 0x57, flags: 0x0},\n\t515:  {region: 0x1, script: 0x57, flags: 0x0},\n\t516:  {region: 0x165, script: 0x57, flags: 0x0},\n\t517:  {region: 0x165, script: 0x57, flags: 0x0},\n\t518:  {region: 0x165, script: 0x57, flags: 0x0},\n\t519:  {region: 0x52, script: 0x57, flags: 0x0},\n\t520:  {region: 0x130, script: 0x3b, flags: 0x0},\n\t521:  {region: 0x165, script: 0x57, flags: 0x0},\n\t522:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t523:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t524:  {region: 0x165, script: 0x57, flags: 0x0},\n\t525:  {region: 0x63, script: 0x57, flags: 0x0},\n\t526:  {region: 0x95, script: 0x57, flags: 0x0},\n\t527:  {region: 0x95, script: 0x57, flags: 0x0},\n\t528:  {region: 0x7d, script: 0x2b, flags: 0x0},\n\t529:  {region: 0x137, script: 0x1f, flags: 0x0},\n\t530:  {region: 0x67, script: 0x57, flags: 0x0},\n\t531:  {region: 0xc4, script: 0x57, flags: 0x0},\n\t532:  {region: 0x165, script: 0x57, flags: 0x0},\n\t533:  {region: 0x165, script: 0x57, flags: 0x0},\n\t534:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t535:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t536:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t537:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t538:  {region: 0x165, script: 0x57, flags: 0x0},\n\t539:  {region: 0x165, script: 0x57, flags: 0x0},\n\t540:  {region: 0x165, script: 0x57, flags: 0x0},\n\t541:  {region: 0x165, script: 0x57, flags: 0x0},\n\t542:  {region: 0xd4, script: 0x5, flags: 0x0},\n\t543:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t544:  {region: 0x164, script: 0x57, flags: 0x0},\n\t545:  {region: 0x165, script: 0x57, flags: 0x0},\n\t546:  {region: 0x165, script: 0x57, flags: 0x0},\n\t547:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t548:  {region: 0x122, script: 0x5, flags: 0x0},\n\t549:  {region: 0x165, script: 0x57, flags: 0x0},\n\t550:  {region: 0x123, script: 0xdf, flags: 0x0},\n\t551:  {region: 0x5a, script: 0x57, flags: 0x0},\n\t552:  {region: 0x52, script: 0x57, flags: 0x0},\n\t553:  {region: 0x165, script: 0x57, flags: 0x0},\n\t554:  {region: 0x4f, script: 0x57, flags: 0x0},\n\t555:  {region: 0x99, script: 0x21, flags: 0x0},\n\t556:  {region: 0x99, script: 0x21, flags: 0x0},\n\t557:  {region: 0x4b, script: 0x57, flags: 0x0},\n\t558:  {region: 0x95, script: 0x57, flags: 0x0},\n\t559:  {region: 0x165, script: 0x57, flags: 0x0},\n\t560:  {region: 0x41, script: 0x57, flags: 0x0},\n\t561:  {region: 0x99, script: 0x57, flags: 0x0},\n\t562:  {region: 0x53, script: 0xd6, flags: 0x0},\n\t563:  {region: 0x99, script: 0x21, flags: 0x0},\n\t564:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t565:  {region: 0x165, script: 0x57, flags: 0x0},\n\t566:  {region: 0x99, script: 0x72, flags: 0x0},\n\t567:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t568:  {region: 0x165, script: 0x57, flags: 0x0},\n\t569:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t570:  {region: 0x165, script: 0x57, flags: 0x0},\n\t571:  {region: 0x12b, script: 0x57, flags: 0x0},\n\t572:  {region: 0x165, script: 0x57, flags: 0x0},\n\t573:  {region: 0xd2, script: 0x57, flags: 0x0},\n\t574:  {region: 0x165, script: 0x57, flags: 0x0},\n\t575:  {region: 0xaf, script: 0x54, flags: 0x0},\n\t576:  {region: 0x165, script: 0x57, flags: 0x0},\n\t577:  {region: 0x165, script: 0x57, flags: 0x0},\n\t578:  {region: 0x13, script: 0x6, flags: 0x1},\n\t579:  {region: 0x165, script: 0x57, flags: 0x0},\n\t580:  {region: 0x52, script: 0x57, flags: 0x0},\n\t581:  {region: 0x82, script: 0x57, flags: 0x0},\n\t582:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t583:  {region: 0x165, script: 0x57, flags: 0x0},\n\t584:  {region: 0x165, script: 0x57, flags: 0x0},\n\t585:  {region: 0x165, script: 0x57, flags: 0x0},\n\t586:  {region: 0xa6, script: 0x4b, flags: 0x0},\n\t587:  {region: 0x2a, script: 0x57, flags: 0x0},\n\t588:  {region: 0x165, script: 0x57, flags: 0x0},\n\t589:  {region: 0x165, script: 0x57, flags: 0x0},\n\t590:  {region: 0x165, script: 0x57, flags: 0x0},\n\t591:  {region: 0x165, script: 0x57, flags: 0x0},\n\t592:  {region: 0x165, script: 0x57, flags: 0x0},\n\t593:  {region: 0x99, script: 0x4f, flags: 0x0},\n\t594:  {region: 0x8b, script: 0x57, flags: 0x0},\n\t595:  {region: 0x165, script: 0x57, flags: 0x0},\n\t596:  {region: 0xab, script: 0x50, flags: 0x0},\n\t597:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t598:  {region: 0x99, script: 0x21, flags: 0x0},\n\t599:  {region: 0x165, script: 0x57, flags: 0x0},\n\t600:  {region: 0x75, script: 0x57, flags: 0x0},\n\t601:  {region: 0x165, script: 0x57, flags: 0x0},\n\t602:  {region: 0xb4, script: 0x57, flags: 0x0},\n\t603:  {region: 0x165, script: 0x57, flags: 0x0},\n\t604:  {region: 0x165, script: 0x57, flags: 0x0},\n\t605:  {region: 0x165, script: 0x57, flags: 0x0},\n\t606:  {region: 0x165, script: 0x57, flags: 0x0},\n\t607:  {region: 0x165, script: 0x57, flags: 0x0},\n\t608:  {region: 0x165, script: 0x57, flags: 0x0},\n\t609:  {region: 0x165, script: 0x57, flags: 0x0},\n\t610:  {region: 0x165, script: 0x29, flags: 0x0},\n\t611:  {region: 0x165, script: 0x57, flags: 0x0},\n\t612:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t613:  {region: 0x112, script: 0x57, flags: 0x0},\n\t614:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t615:  {region: 0x106, script: 0x57, flags: 0x0},\n\t616:  {region: 0x165, script: 0x57, flags: 0x0},\n\t617:  {region: 0x99, script: 0x21, flags: 0x0},\n\t618:  {region: 0x99, script: 0x5, flags: 0x0},\n\t619:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t620:  {region: 0x165, script: 0x57, flags: 0x0},\n\t621:  {region: 0x52, script: 0x57, flags: 0x0},\n\t622:  {region: 0x60, script: 0x57, flags: 0x0},\n\t623:  {region: 0x165, script: 0x57, flags: 0x0},\n\t624:  {region: 0x165, script: 0x57, flags: 0x0},\n\t625:  {region: 0x165, script: 0x29, flags: 0x0},\n\t626:  {region: 0x165, script: 0x57, flags: 0x0},\n\t627:  {region: 0x165, script: 0x57, flags: 0x0},\n\t628:  {region: 0x19, script: 0x3, flags: 0x1},\n\t629:  {region: 0x165, script: 0x57, flags: 0x0},\n\t630:  {region: 0x165, script: 0x57, flags: 0x0},\n\t631:  {region: 0x165, script: 0x57, flags: 0x0},\n\t632:  {region: 0x165, script: 0x57, flags: 0x0},\n\t633:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t634:  {region: 0x165, script: 0x57, flags: 0x0},\n\t635:  {region: 0x165, script: 0x57, flags: 0x0},\n\t636:  {region: 0x165, script: 0x57, flags: 0x0},\n\t637:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t638:  {region: 0x165, script: 0x57, flags: 0x0},\n\t639:  {region: 0x95, script: 0x57, flags: 0x0},\n\t640:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t641:  {region: 0x7b, script: 0x57, flags: 0x0},\n\t642:  {region: 0x165, script: 0x57, flags: 0x0},\n\t643:  {region: 0x165, script: 0x57, flags: 0x0},\n\t644:  {region: 0x165, script: 0x57, flags: 0x0},\n\t645:  {region: 0x165, script: 0x29, flags: 0x0},\n\t646:  {region: 0x123, script: 0xdf, flags: 0x0},\n\t647:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t648:  {region: 0x165, script: 0x57, flags: 0x0},\n\t649:  {region: 0x165, script: 0x57, flags: 0x0},\n\t650:  {region: 0x1c, script: 0x5, flags: 0x1},\n\t651:  {region: 0x165, script: 0x57, flags: 0x0},\n\t652:  {region: 0x165, script: 0x57, flags: 0x0},\n\t653:  {region: 0x165, script: 0x57, flags: 0x0},\n\t654:  {region: 0x138, script: 0x57, flags: 0x0},\n\t655:  {region: 0x87, script: 0x5b, flags: 0x0},\n\t656:  {region: 0x97, script: 0x3b, flags: 0x0},\n\t657:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t658:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t659:  {region: 0x131, script: 0x57, flags: 0x0},\n\t660:  {region: 0x165, script: 0x57, flags: 0x0},\n\t661:  {region: 0xb7, script: 0x57, flags: 0x0},\n\t662:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t663:  {region: 0x165, script: 0x57, flags: 0x0},\n\t664:  {region: 0x95, script: 0x57, flags: 0x0},\n\t665:  {region: 0x165, script: 0x57, flags: 0x0},\n\t666:  {region: 0x53, script: 0xdf, flags: 0x0},\n\t667:  {region: 0x165, script: 0x57, flags: 0x0},\n\t668:  {region: 0x165, script: 0x57, flags: 0x0},\n\t669:  {region: 0x165, script: 0x57, flags: 0x0},\n\t670:  {region: 0x165, script: 0x57, flags: 0x0},\n\t671:  {region: 0x99, script: 0x59, flags: 0x0},\n\t672:  {region: 0x165, script: 0x57, flags: 0x0},\n\t673:  {region: 0x165, script: 0x57, flags: 0x0},\n\t674:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t675:  {region: 0x131, script: 0x57, flags: 0x0},\n\t676:  {region: 0x165, script: 0x57, flags: 0x0},\n\t677:  {region: 0xd9, script: 0x57, flags: 0x0},\n\t678:  {region: 0x165, script: 0x57, flags: 0x0},\n\t679:  {region: 0x165, script: 0x57, flags: 0x0},\n\t680:  {region: 0x21, script: 0x2, flags: 0x1},\n\t681:  {region: 0x165, script: 0x57, flags: 0x0},\n\t682:  {region: 0x165, script: 0x57, flags: 0x0},\n\t683:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t684:  {region: 0x53, script: 0x5d, flags: 0x0},\n\t685:  {region: 0x95, script: 0x57, flags: 0x0},\n\t686:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t687:  {region: 0x135, script: 0x57, flags: 0x0},\n\t688:  {region: 0x165, script: 0x57, flags: 0x0},\n\t689:  {region: 0x165, script: 0x57, flags: 0x0},\n\t690:  {region: 0x99, script: 0xda, flags: 0x0},\n\t691:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t692:  {region: 0x165, script: 0x57, flags: 0x0},\n\t693:  {region: 0x4b, script: 0x57, flags: 0x0},\n\t694:  {region: 0x165, script: 0x57, flags: 0x0},\n\t695:  {region: 0x165, script: 0x57, flags: 0x0},\n\t696:  {region: 0xaf, script: 0x54, flags: 0x0},\n\t697:  {region: 0x165, script: 0x57, flags: 0x0},\n\t698:  {region: 0x165, script: 0x57, flags: 0x0},\n\t699:  {region: 0x4b, script: 0x57, flags: 0x0},\n\t700:  {region: 0x165, script: 0x57, flags: 0x0},\n\t701:  {region: 0x165, script: 0x57, flags: 0x0},\n\t702:  {region: 0x162, script: 0x57, flags: 0x0},\n\t703:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t704:  {region: 0xb6, script: 0x57, flags: 0x0},\n\t705:  {region: 0xb8, script: 0x57, flags: 0x0},\n\t706:  {region: 0x4b, script: 0x57, flags: 0x0},\n\t707:  {region: 0x4b, script: 0x57, flags: 0x0},\n\t708:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t709:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t710:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t711:  {region: 0xb8, script: 0x57, flags: 0x0},\n\t712:  {region: 0x123, script: 0xdf, flags: 0x0},\n\t713:  {region: 0x53, script: 0x38, flags: 0x0},\n\t714:  {region: 0x12b, script: 0x57, flags: 0x0},\n\t715:  {region: 0x95, script: 0x57, flags: 0x0},\n\t716:  {region: 0x52, script: 0x57, flags: 0x0},\n\t717:  {region: 0x99, script: 0x21, flags: 0x0},\n\t718:  {region: 0x99, script: 0x21, flags: 0x0},\n\t719:  {region: 0x95, script: 0x57, flags: 0x0},\n\t720:  {region: 0x23, script: 0x3, flags: 0x1},\n\t721:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t722:  {region: 0x165, script: 0x57, flags: 0x0},\n\t723:  {region: 0xcf, script: 0x57, flags: 0x0},\n\t724:  {region: 0x165, script: 0x57, flags: 0x0},\n\t725:  {region: 0x165, script: 0x57, flags: 0x0},\n\t726:  {region: 0x165, script: 0x57, flags: 0x0},\n\t727:  {region: 0x165, script: 0x57, flags: 0x0},\n\t728:  {region: 0x165, script: 0x57, flags: 0x0},\n\t729:  {region: 0x165, script: 0x57, flags: 0x0},\n\t730:  {region: 0x165, script: 0x57, flags: 0x0},\n\t731:  {region: 0x165, script: 0x57, flags: 0x0},\n\t732:  {region: 0x165, script: 0x57, flags: 0x0},\n\t733:  {region: 0x165, script: 0x57, flags: 0x0},\n\t734:  {region: 0x165, script: 0x57, flags: 0x0},\n\t735:  {region: 0x165, script: 0x5, flags: 0x0},\n\t736:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t737:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t738:  {region: 0x165, script: 0x57, flags: 0x0},\n\t739:  {region: 0x95, script: 0x57, flags: 0x0},\n\t740:  {region: 0x165, script: 0x29, flags: 0x0},\n\t741:  {region: 0x165, script: 0x57, flags: 0x0},\n\t742:  {region: 0x165, script: 0x57, flags: 0x0},\n\t743:  {region: 0x165, script: 0x57, flags: 0x0},\n\t744:  {region: 0x112, script: 0x57, flags: 0x0},\n\t745:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t746:  {region: 0x165, script: 0x57, flags: 0x0},\n\t747:  {region: 0x165, script: 0x57, flags: 0x0},\n\t748:  {region: 0x123, script: 0x5, flags: 0x0},\n\t749:  {region: 0xcc, script: 0x57, flags: 0x0},\n\t750:  {region: 0x165, script: 0x57, flags: 0x0},\n\t751:  {region: 0x165, script: 0x57, flags: 0x0},\n\t752:  {region: 0x165, script: 0x57, flags: 0x0},\n\t753:  {region: 0xbf, script: 0x57, flags: 0x0},\n\t754:  {region: 0xd1, script: 0x57, flags: 0x0},\n\t755:  {region: 0x165, script: 0x57, flags: 0x0},\n\t756:  {region: 0x52, script: 0x57, flags: 0x0},\n\t757:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t758:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t759:  {region: 0xc0, script: 0x57, flags: 0x0},\n\t760:  {region: 0x165, script: 0x57, flags: 0x0},\n\t761:  {region: 0x165, script: 0x57, flags: 0x0},\n\t762:  {region: 0xe0, script: 0x57, flags: 0x0},\n\t763:  {region: 0x165, script: 0x57, flags: 0x0},\n\t764:  {region: 0x95, script: 0x57, flags: 0x0},\n\t765:  {region: 0x9b, script: 0x3a, flags: 0x0},\n\t766:  {region: 0x165, script: 0x57, flags: 0x0},\n\t767:  {region: 0xc2, script: 0x1f, flags: 0x0},\n\t768:  {region: 0x165, script: 0x5, flags: 0x0},\n\t769:  {region: 0x165, script: 0x57, flags: 0x0},\n\t770:  {region: 0x165, script: 0x57, flags: 0x0},\n\t771:  {region: 0x165, script: 0x57, flags: 0x0},\n\t772:  {region: 0x99, script: 0x6b, flags: 0x0},\n\t773:  {region: 0x165, script: 0x57, flags: 0x0},\n\t774:  {region: 0x165, script: 0x57, flags: 0x0},\n\t775:  {region: 0x10b, script: 0x57, flags: 0x0},\n\t776:  {region: 0x165, script: 0x57, flags: 0x0},\n\t777:  {region: 0x165, script: 0x57, flags: 0x0},\n\t778:  {region: 0x165, script: 0x57, flags: 0x0},\n\t779:  {region: 0x26, script: 0x3, flags: 0x1},\n\t780:  {region: 0x165, script: 0x57, flags: 0x0},\n\t781:  {region: 0x165, script: 0x57, flags: 0x0},\n\t782:  {region: 0x99, script: 0xe, flags: 0x0},\n\t783:  {region: 0xc4, script: 0x72, flags: 0x0},\n\t785:  {region: 0x165, script: 0x57, flags: 0x0},\n\t786:  {region: 0x49, script: 0x57, flags: 0x0},\n\t787:  {region: 0x49, script: 0x57, flags: 0x0},\n\t788:  {region: 0x37, script: 0x57, flags: 0x0},\n\t789:  {region: 0x165, script: 0x57, flags: 0x0},\n\t790:  {region: 0x165, script: 0x57, flags: 0x0},\n\t791:  {region: 0x165, script: 0x57, flags: 0x0},\n\t792:  {region: 0x165, script: 0x57, flags: 0x0},\n\t793:  {region: 0x165, script: 0x57, flags: 0x0},\n\t794:  {region: 0x165, script: 0x57, flags: 0x0},\n\t795:  {region: 0x99, script: 0x21, flags: 0x0},\n\t796:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t797:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t798:  {region: 0x35, script: 0x6f, flags: 0x0},\n\t799:  {region: 0x29, script: 0x3, flags: 0x1},\n\t800:  {region: 0xcb, script: 0x57, flags: 0x0},\n\t801:  {region: 0x165, script: 0x57, flags: 0x0},\n\t802:  {region: 0x165, script: 0x57, flags: 0x0},\n\t803:  {region: 0x165, script: 0x57, flags: 0x0},\n\t804:  {region: 0x99, script: 0x21, flags: 0x0},\n\t805:  {region: 0x52, script: 0x57, flags: 0x0},\n\t807:  {region: 0x165, script: 0x57, flags: 0x0},\n\t808:  {region: 0x135, script: 0x57, flags: 0x0},\n\t809:  {region: 0x165, script: 0x57, flags: 0x0},\n\t810:  {region: 0x165, script: 0x57, flags: 0x0},\n\t811:  {region: 0xe8, script: 0x5, flags: 0x0},\n\t812:  {region: 0xc3, script: 0x57, flags: 0x0},\n\t813:  {region: 0x99, script: 0x21, flags: 0x0},\n\t814:  {region: 0x95, script: 0x57, flags: 0x0},\n\t815:  {region: 0x164, script: 0x57, flags: 0x0},\n\t816:  {region: 0x165, script: 0x57, flags: 0x0},\n\t817:  {region: 0xc4, script: 0x72, flags: 0x0},\n\t818:  {region: 0x165, script: 0x57, flags: 0x0},\n\t819:  {region: 0x165, script: 0x29, flags: 0x0},\n\t820:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t821:  {region: 0x165, script: 0x57, flags: 0x0},\n\t822:  {region: 0x131, script: 0x57, flags: 0x0},\n\t823:  {region: 0x9c, script: 0x63, flags: 0x0},\n\t824:  {region: 0x165, script: 0x57, flags: 0x0},\n\t825:  {region: 0x165, script: 0x57, flags: 0x0},\n\t826:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t827:  {region: 0x165, script: 0x57, flags: 0x0},\n\t828:  {region: 0x165, script: 0x57, flags: 0x0},\n\t829:  {region: 0x165, script: 0x57, flags: 0x0},\n\t830:  {region: 0xdd, script: 0x57, flags: 0x0},\n\t831:  {region: 0x165, script: 0x57, flags: 0x0},\n\t832:  {region: 0x165, script: 0x57, flags: 0x0},\n\t834:  {region: 0x165, script: 0x57, flags: 0x0},\n\t835:  {region: 0x53, script: 0x38, flags: 0x0},\n\t836:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t837:  {region: 0xd2, script: 0x57, flags: 0x0},\n\t838:  {region: 0x165, script: 0x57, flags: 0x0},\n\t839:  {region: 0xda, script: 0x57, flags: 0x0},\n\t840:  {region: 0x165, script: 0x57, flags: 0x0},\n\t841:  {region: 0x165, script: 0x57, flags: 0x0},\n\t842:  {region: 0x165, script: 0x57, flags: 0x0},\n\t843:  {region: 0xcf, script: 0x57, flags: 0x0},\n\t844:  {region: 0x165, script: 0x57, flags: 0x0},\n\t845:  {region: 0x165, script: 0x57, flags: 0x0},\n\t846:  {region: 0x164, script: 0x57, flags: 0x0},\n\t847:  {region: 0xd1, script: 0x57, flags: 0x0},\n\t848:  {region: 0x60, script: 0x57, flags: 0x0},\n\t849:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t850:  {region: 0x165, script: 0x57, flags: 0x0},\n\t851:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t852:  {region: 0x165, script: 0x57, flags: 0x0},\n\t853:  {region: 0x165, script: 0x57, flags: 0x0},\n\t854:  {region: 0xd2, script: 0x57, flags: 0x0},\n\t855:  {region: 0x165, script: 0x57, flags: 0x0},\n\t856:  {region: 0x165, script: 0x57, flags: 0x0},\n\t857:  {region: 0xd1, script: 0x57, flags: 0x0},\n\t858:  {region: 0x165, script: 0x57, flags: 0x0},\n\t859:  {region: 0xcf, script: 0x57, flags: 0x0},\n\t860:  {region: 0xcf, script: 0x57, flags: 0x0},\n\t861:  {region: 0x165, script: 0x57, flags: 0x0},\n\t862:  {region: 0x165, script: 0x57, flags: 0x0},\n\t863:  {region: 0x95, script: 0x57, flags: 0x0},\n\t864:  {region: 0x165, script: 0x57, flags: 0x0},\n\t865:  {region: 0xdf, script: 0x57, flags: 0x0},\n\t866:  {region: 0x165, script: 0x57, flags: 0x0},\n\t867:  {region: 0x165, script: 0x57, flags: 0x0},\n\t868:  {region: 0x99, script: 0x57, flags: 0x0},\n\t869:  {region: 0x165, script: 0x57, flags: 0x0},\n\t870:  {region: 0x165, script: 0x57, flags: 0x0},\n\t871:  {region: 0xd9, script: 0x57, flags: 0x0},\n\t872:  {region: 0x52, script: 0x57, flags: 0x0},\n\t873:  {region: 0x165, script: 0x57, flags: 0x0},\n\t874:  {region: 0xda, script: 0x57, flags: 0x0},\n\t875:  {region: 0x165, script: 0x57, flags: 0x0},\n\t876:  {region: 0x52, script: 0x57, flags: 0x0},\n\t877:  {region: 0x165, script: 0x57, flags: 0x0},\n\t878:  {region: 0x165, script: 0x57, flags: 0x0},\n\t879:  {region: 0xda, script: 0x57, flags: 0x0},\n\t880:  {region: 0x123, script: 0x53, flags: 0x0},\n\t881:  {region: 0x99, script: 0x21, flags: 0x0},\n\t882:  {region: 0x10c, script: 0xbf, flags: 0x0},\n\t883:  {region: 0x165, script: 0x57, flags: 0x0},\n\t884:  {region: 0x165, script: 0x57, flags: 0x0},\n\t885:  {region: 0x84, script: 0x78, flags: 0x0},\n\t886:  {region: 0x161, script: 0x57, flags: 0x0},\n\t887:  {region: 0x165, script: 0x57, flags: 0x0},\n\t888:  {region: 0x49, script: 0x17, flags: 0x0},\n\t889:  {region: 0x165, script: 0x57, flags: 0x0},\n\t890:  {region: 0x161, script: 0x57, flags: 0x0},\n\t891:  {region: 0x165, script: 0x57, flags: 0x0},\n\t892:  {region: 0x165, script: 0x57, flags: 0x0},\n\t893:  {region: 0x165, script: 0x57, flags: 0x0},\n\t894:  {region: 0x165, script: 0x57, flags: 0x0},\n\t895:  {region: 0x165, script: 0x57, flags: 0x0},\n\t896:  {region: 0x117, script: 0x57, flags: 0x0},\n\t897:  {region: 0x165, script: 0x57, flags: 0x0},\n\t898:  {region: 0x165, script: 0x57, flags: 0x0},\n\t899:  {region: 0x135, script: 0x57, flags: 0x0},\n\t900:  {region: 0x165, script: 0x57, flags: 0x0},\n\t901:  {region: 0x53, script: 0x57, flags: 0x0},\n\t902:  {region: 0x165, script: 0x57, flags: 0x0},\n\t903:  {region: 0xce, script: 0x57, flags: 0x0},\n\t904:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t905:  {region: 0x131, script: 0x57, flags: 0x0},\n\t906:  {region: 0x80, script: 0x57, flags: 0x0},\n\t907:  {region: 0x78, script: 0x57, flags: 0x0},\n\t908:  {region: 0x165, script: 0x57, flags: 0x0},\n\t910:  {region: 0x165, script: 0x57, flags: 0x0},\n\t911:  {region: 0x165, script: 0x57, flags: 0x0},\n\t912:  {region: 0x6f, script: 0x57, flags: 0x0},\n\t913:  {region: 0x165, script: 0x57, flags: 0x0},\n\t914:  {region: 0x165, script: 0x57, flags: 0x0},\n\t915:  {region: 0x165, script: 0x57, flags: 0x0},\n\t916:  {region: 0x165, script: 0x57, flags: 0x0},\n\t917:  {region: 0x99, script: 0x7d, flags: 0x0},\n\t918:  {region: 0x165, script: 0x57, flags: 0x0},\n\t919:  {region: 0x165, script: 0x5, flags: 0x0},\n\t920:  {region: 0x7d, script: 0x1f, flags: 0x0},\n\t921:  {region: 0x135, script: 0x7e, flags: 0x0},\n\t922:  {region: 0x165, script: 0x5, flags: 0x0},\n\t923:  {region: 0xc5, script: 0x7c, flags: 0x0},\n\t924:  {region: 0x165, script: 0x57, flags: 0x0},\n\t925:  {region: 0x2c, script: 0x3, flags: 0x1},\n\t926:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t927:  {region: 0x2f, script: 0x2, flags: 0x1},\n\t928:  {region: 0xe7, script: 0x57, flags: 0x0},\n\t929:  {region: 0x30, script: 0x57, flags: 0x0},\n\t930:  {region: 0xf0, script: 0x57, flags: 0x0},\n\t931:  {region: 0x165, script: 0x57, flags: 0x0},\n\t932:  {region: 0x78, script: 0x57, flags: 0x0},\n\t933:  {region: 0xd6, script: 0x57, flags: 0x0},\n\t934:  {region: 0x135, script: 0x57, flags: 0x0},\n\t935:  {region: 0x49, script: 0x57, flags: 0x0},\n\t936:  {region: 0x165, script: 0x57, flags: 0x0},\n\t937:  {region: 0x9c, script: 0xe8, flags: 0x0},\n\t938:  {region: 0x165, script: 0x57, flags: 0x0},\n\t939:  {region: 0x60, script: 0x57, flags: 0x0},\n\t940:  {region: 0x165, script: 0x5, flags: 0x0},\n\t941:  {region: 0xb0, script: 0x87, flags: 0x0},\n\t943:  {region: 0x165, script: 0x57, flags: 0x0},\n\t944:  {region: 0x165, script: 0x57, flags: 0x0},\n\t945:  {region: 0x99, script: 0x12, flags: 0x0},\n\t946:  {region: 0xa4, script: 0x57, flags: 0x0},\n\t947:  {region: 0xe9, script: 0x57, flags: 0x0},\n\t948:  {region: 0x165, script: 0x57, flags: 0x0},\n\t949:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t950:  {region: 0x165, script: 0x57, flags: 0x0},\n\t951:  {region: 0x165, script: 0x57, flags: 0x0},\n\t952:  {region: 0x87, script: 0x31, flags: 0x0},\n\t953:  {region: 0x75, script: 0x57, flags: 0x0},\n\t954:  {region: 0x165, script: 0x57, flags: 0x0},\n\t955:  {region: 0xe8, script: 0x4a, flags: 0x0},\n\t956:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t957:  {region: 0x1, script: 0x57, flags: 0x0},\n\t958:  {region: 0x24, script: 0x5, flags: 0x0},\n\t959:  {region: 0x165, script: 0x57, flags: 0x0},\n\t960:  {region: 0x41, script: 0x57, flags: 0x0},\n\t961:  {region: 0x165, script: 0x57, flags: 0x0},\n\t962:  {region: 0x7a, script: 0x57, flags: 0x0},\n\t963:  {region: 0x165, script: 0x57, flags: 0x0},\n\t964:  {region: 0xe4, script: 0x57, flags: 0x0},\n\t965:  {region: 0x89, script: 0x57, flags: 0x0},\n\t966:  {region: 0x69, script: 0x57, flags: 0x0},\n\t967:  {region: 0x165, script: 0x57, flags: 0x0},\n\t968:  {region: 0x99, script: 0x21, flags: 0x0},\n\t969:  {region: 0x165, script: 0x57, flags: 0x0},\n\t970:  {region: 0x102, script: 0x57, flags: 0x0},\n\t971:  {region: 0x95, script: 0x57, flags: 0x0},\n\t972:  {region: 0x165, script: 0x57, flags: 0x0},\n\t973:  {region: 0x165, script: 0x57, flags: 0x0},\n\t974:  {region: 0x9e, script: 0x57, flags: 0x0},\n\t975:  {region: 0x165, script: 0x5, flags: 0x0},\n\t976:  {region: 0x99, script: 0x57, flags: 0x0},\n\t977:  {region: 0x31, script: 0x2, flags: 0x1},\n\t978:  {region: 0xdb, script: 0x21, flags: 0x0},\n\t979:  {region: 0x35, script: 0xe, flags: 0x0},\n\t980:  {region: 0x4e, script: 0x57, flags: 0x0},\n\t981:  {region: 0x72, script: 0x57, flags: 0x0},\n\t982:  {region: 0x4e, script: 0x57, flags: 0x0},\n\t983:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t984:  {region: 0x10c, script: 0x57, flags: 0x0},\n\t985:  {region: 0x3a, script: 0x57, flags: 0x0},\n\t986:  {region: 0x165, script: 0x57, flags: 0x0},\n\t987:  {region: 0xd1, script: 0x57, flags: 0x0},\n\t988:  {region: 0x104, script: 0x57, flags: 0x0},\n\t989:  {region: 0x95, script: 0x57, flags: 0x0},\n\t990:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t991:  {region: 0x165, script: 0x57, flags: 0x0},\n\t992:  {region: 0x165, script: 0x57, flags: 0x0},\n\t993:  {region: 0x73, script: 0x57, flags: 0x0},\n\t994:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t995:  {region: 0x130, script: 0x1f, flags: 0x0},\n\t996:  {region: 0x109, script: 0x57, flags: 0x0},\n\t997:  {region: 0x107, script: 0x57, flags: 0x0},\n\t998:  {region: 0x12f, script: 0x57, flags: 0x0},\n\t999:  {region: 0x165, script: 0x57, flags: 0x0},\n\t1000: {region: 0xa2, script: 0x49, flags: 0x0},\n\t1001: {region: 0x99, script: 0x21, flags: 0x0},\n\t1002: {region: 0x80, script: 0x57, flags: 0x0},\n\t1003: {region: 0x106, script: 0x1f, flags: 0x0},\n\t1004: {region: 0xa4, script: 0x57, flags: 0x0},\n\t1005: {region: 0x95, script: 0x57, flags: 0x0},\n\t1006: {region: 0x99, script: 0x57, flags: 0x0},\n\t1007: {region: 0x114, script: 0x57, flags: 0x0},\n\t1008: {region: 0x99, script: 0xc3, flags: 0x0},\n\t1009: {region: 0x165, script: 0x57, flags: 0x0},\n\t1010: {region: 0x165, script: 0x57, flags: 0x0},\n\t1011: {region: 0x12f, script: 0x57, flags: 0x0},\n\t1012: {region: 0x9e, script: 0x57, flags: 0x0},\n\t1013: {region: 0x99, script: 0x21, flags: 0x0},\n\t1014: {region: 0x165, script: 0x5, flags: 0x0},\n\t1015: {region: 0x9e, script: 0x57, flags: 0x0},\n\t1016: {region: 0x7b, script: 0x57, flags: 0x0},\n\t1017: {region: 0x49, script: 0x57, flags: 0x0},\n\t1018: {region: 0x33, script: 0x4, flags: 0x1},\n\t1019: {region: 0x9e, script: 0x57, flags: 0x0},\n\t1020: {region: 0x9c, script: 0x5, flags: 0x0},\n\t1021: {region: 0xda, script: 0x57, flags: 0x0},\n\t1022: {region: 0x4f, script: 0x57, flags: 0x0},\n\t1023: {region: 0xd1, script: 0x57, flags: 0x0},\n\t1024: {region: 0xcf, script: 0x57, flags: 0x0},\n\t1025: {region: 0xc3, script: 0x57, flags: 0x0},\n\t1026: {region: 0x4c, script: 0x57, flags: 0x0},\n\t1027: {region: 0x96, script: 0x7a, flags: 0x0},\n\t1028: {region: 0xb6, script: 0x57, flags: 0x0},\n\t1029: {region: 0x165, script: 0x29, flags: 0x0},\n\t1030: {region: 0x165, script: 0x57, flags: 0x0},\n\t1032: {region: 0xba, script: 0xdc, flags: 0x0},\n\t1033: {region: 0x165, script: 0x57, flags: 0x0},\n\t1034: {region: 0xc4, script: 0x72, flags: 0x0},\n\t1035: {region: 0x165, script: 0x5, flags: 0x0},\n\t1036: {region: 0xb3, script: 0xca, flags: 0x0},\n\t1037: {region: 0x6f, script: 0x57, flags: 0x0},\n\t1038: {region: 0x165, script: 0x57, flags: 0x0},\n\t1039: {region: 0x165, script: 0x57, flags: 0x0},\n\t1040: {region: 0x165, script: 0x57, flags: 0x0},\n\t1041: {region: 0x165, script: 0x57, flags: 0x0},\n\t1042: {region: 0x111, script: 0x57, flags: 0x0},\n\t1043: {region: 0x165, script: 0x57, flags: 0x0},\n\t1044: {region: 0xe8, script: 0x5, flags: 0x0},\n\t1045: {region: 0x165, script: 0x57, flags: 0x0},\n\t1046: {region: 0x10f, script: 0x57, flags: 0x0},\n\t1047: {region: 0x165, script: 0x57, flags: 0x0},\n\t1048: {region: 0xe9, script: 0x57, flags: 0x0},\n\t1049: {region: 0x165, script: 0x57, flags: 0x0},\n\t1050: {region: 0x95, script: 0x57, flags: 0x0},\n\t1051: {region: 0x142, script: 0x57, flags: 0x0},\n\t1052: {region: 0x10c, script: 0x57, flags: 0x0},\n\t1054: {region: 0x10c, script: 0x57, flags: 0x0},\n\t1055: {region: 0x72, script: 0x57, flags: 0x0},\n\t1056: {region: 0x97, script: 0xc0, flags: 0x0},\n\t1057: {region: 0x165, script: 0x57, flags: 0x0},\n\t1058: {region: 0x72, script: 0x57, flags: 0x0},\n\t1059: {region: 0x164, script: 0x57, flags: 0x0},\n\t1060: {region: 0x165, script: 0x57, flags: 0x0},\n\t1061: {region: 0xc3, script: 0x57, flags: 0x0},\n\t1062: {region: 0x165, script: 0x57, flags: 0x0},\n\t1063: {region: 0x165, script: 0x57, flags: 0x0},\n\t1064: {region: 0x165, script: 0x57, flags: 0x0},\n\t1065: {region: 0x115, script: 0x57, flags: 0x0},\n\t1066: {region: 0x165, script: 0x57, flags: 0x0},\n\t1067: {region: 0x165, script: 0x57, flags: 0x0},\n\t1068: {region: 0x123, script: 0xdf, flags: 0x0},\n\t1069: {region: 0x165, script: 0x57, flags: 0x0},\n\t1070: {region: 0x165, script: 0x57, flags: 0x0},\n\t1071: {region: 0x165, script: 0x57, flags: 0x0},\n\t1072: {region: 0x165, script: 0x57, flags: 0x0},\n\t1073: {region: 0x27, script: 0x57, flags: 0x0},\n\t1074: {region: 0x37, script: 0x5, flags: 0x1},\n\t1075: {region: 0x99, script: 0xcb, flags: 0x0},\n\t1076: {region: 0x116, script: 0x57, flags: 0x0},\n\t1077: {region: 0x114, script: 0x57, flags: 0x0},\n\t1078: {region: 0x99, script: 0x21, flags: 0x0},\n\t1079: {region: 0x161, script: 0x57, flags: 0x0},\n\t1080: {region: 0x165, script: 0x57, flags: 0x0},\n\t1081: {region: 0x165, script: 0x57, flags: 0x0},\n\t1082: {region: 0x6d, script: 0x57, flags: 0x0},\n\t1083: {region: 0x161, script: 0x57, flags: 0x0},\n\t1084: {region: 0x165, script: 0x57, flags: 0x0},\n\t1085: {region: 0x60, script: 0x57, flags: 0x0},\n\t1086: {region: 0x95, script: 0x57, flags: 0x0},\n\t1087: {region: 0x165, script: 0x57, flags: 0x0},\n\t1088: {region: 0x165, script: 0x57, flags: 0x0},\n\t1089: {region: 0x12f, script: 0x57, flags: 0x0},\n\t1090: {region: 0x165, script: 0x57, flags: 0x0},\n\t1091: {region: 0x84, script: 0x57, flags: 0x0},\n\t1092: {region: 0x10c, script: 0x57, flags: 0x0},\n\t1093: {region: 0x12f, script: 0x57, flags: 0x0},\n\t1094: {region: 0x15f, script: 0x5, flags: 0x0},\n\t1095: {region: 0x4b, script: 0x57, flags: 0x0},\n\t1096: {region: 0x60, script: 0x57, flags: 0x0},\n\t1097: {region: 0x165, script: 0x57, flags: 0x0},\n\t1098: {region: 0x99, script: 0x21, flags: 0x0},\n\t1099: {region: 0x95, script: 0x57, flags: 0x0},\n\t1100: {region: 0x165, script: 0x57, flags: 0x0},\n\t1101: {region: 0x35, script: 0xe, flags: 0x0},\n\t1102: {region: 0x9b, script: 0xcf, flags: 0x0},\n\t1103: {region: 0xe9, script: 0x57, flags: 0x0},\n\t1104: {region: 0x99, script: 0xd7, flags: 0x0},\n\t1105: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1106: {region: 0x165, script: 0x57, flags: 0x0},\n\t1107: {region: 0x165, script: 0x57, flags: 0x0},\n\t1108: {region: 0x165, script: 0x57, flags: 0x0},\n\t1109: {region: 0x165, script: 0x57, flags: 0x0},\n\t1110: {region: 0x165, script: 0x57, flags: 0x0},\n\t1111: {region: 0x165, script: 0x57, flags: 0x0},\n\t1112: {region: 0x165, script: 0x57, flags: 0x0},\n\t1113: {region: 0x165, script: 0x57, flags: 0x0},\n\t1114: {region: 0xe7, script: 0x57, flags: 0x0},\n\t1115: {region: 0x165, script: 0x57, flags: 0x0},\n\t1116: {region: 0x165, script: 0x57, flags: 0x0},\n\t1117: {region: 0x99, script: 0x4f, flags: 0x0},\n\t1118: {region: 0x53, script: 0xd5, flags: 0x0},\n\t1119: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1120: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1121: {region: 0x99, script: 0xda, flags: 0x0},\n\t1122: {region: 0x165, script: 0x57, flags: 0x0},\n\t1123: {region: 0x112, script: 0x57, flags: 0x0},\n\t1124: {region: 0x131, script: 0x57, flags: 0x0},\n\t1125: {region: 0x126, script: 0x57, flags: 0x0},\n\t1126: {region: 0x165, script: 0x57, flags: 0x0},\n\t1127: {region: 0x3c, script: 0x3, flags: 0x1},\n\t1128: {region: 0x165, script: 0x57, flags: 0x0},\n\t1129: {region: 0x165, script: 0x57, flags: 0x0},\n\t1130: {region: 0x165, script: 0x57, flags: 0x0},\n\t1131: {region: 0x123, script: 0xdf, flags: 0x0},\n\t1132: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1133: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1134: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1135: {region: 0x6f, script: 0x29, flags: 0x0},\n\t1136: {region: 0x165, script: 0x57, flags: 0x0},\n\t1137: {region: 0x6d, script: 0x29, flags: 0x0},\n\t1138: {region: 0x165, script: 0x57, flags: 0x0},\n\t1139: {region: 0x165, script: 0x57, flags: 0x0},\n\t1140: {region: 0x165, script: 0x57, flags: 0x0},\n\t1141: {region: 0xd6, script: 0x57, flags: 0x0},\n\t1142: {region: 0x127, script: 0x57, flags: 0x0},\n\t1143: {region: 0x125, script: 0x57, flags: 0x0},\n\t1144: {region: 0x32, script: 0x57, flags: 0x0},\n\t1145: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1146: {region: 0xe7, script: 0x57, flags: 0x0},\n\t1147: {region: 0x165, script: 0x57, flags: 0x0},\n\t1148: {region: 0x165, script: 0x57, flags: 0x0},\n\t1149: {region: 0x32, script: 0x57, flags: 0x0},\n\t1150: {region: 0xd4, script: 0x57, flags: 0x0},\n\t1151: {region: 0x165, script: 0x57, flags: 0x0},\n\t1152: {region: 0x161, script: 0x57, flags: 0x0},\n\t1153: {region: 0x165, script: 0x57, flags: 0x0},\n\t1154: {region: 0x129, script: 0x57, flags: 0x0},\n\t1155: {region: 0x165, script: 0x57, flags: 0x0},\n\t1156: {region: 0xce, script: 0x57, flags: 0x0},\n\t1157: {region: 0x165, script: 0x57, flags: 0x0},\n\t1158: {region: 0xe6, script: 0x57, flags: 0x0},\n\t1159: {region: 0x165, script: 0x57, flags: 0x0},\n\t1160: {region: 0x165, script: 0x57, flags: 0x0},\n\t1161: {region: 0x165, script: 0x57, flags: 0x0},\n\t1162: {region: 0x12b, script: 0x57, flags: 0x0},\n\t1163: {region: 0x12b, script: 0x57, flags: 0x0},\n\t1164: {region: 0x12e, script: 0x57, flags: 0x0},\n\t1165: {region: 0x165, script: 0x5, flags: 0x0},\n\t1166: {region: 0x161, script: 0x57, flags: 0x0},\n\t1167: {region: 0x87, script: 0x31, flags: 0x0},\n\t1168: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1169: {region: 0xe7, script: 0x57, flags: 0x0},\n\t1170: {region: 0x43, script: 0xe0, flags: 0x0},\n\t1171: {region: 0x165, script: 0x57, flags: 0x0},\n\t1172: {region: 0x106, script: 0x1f, flags: 0x0},\n\t1173: {region: 0x165, script: 0x57, flags: 0x0},\n\t1174: {region: 0x165, script: 0x57, flags: 0x0},\n\t1175: {region: 0x131, script: 0x57, flags: 0x0},\n\t1176: {region: 0x165, script: 0x57, flags: 0x0},\n\t1177: {region: 0x123, script: 0xdf, flags: 0x0},\n\t1178: {region: 0x32, script: 0x57, flags: 0x0},\n\t1179: {region: 0x165, script: 0x57, flags: 0x0},\n\t1180: {region: 0x165, script: 0x57, flags: 0x0},\n\t1181: {region: 0xce, script: 0x57, flags: 0x0},\n\t1182: {region: 0x165, script: 0x57, flags: 0x0},\n\t1183: {region: 0x165, script: 0x57, flags: 0x0},\n\t1184: {region: 0x12d, script: 0x57, flags: 0x0},\n\t1185: {region: 0x165, script: 0x57, flags: 0x0},\n\t1187: {region: 0x165, script: 0x57, flags: 0x0},\n\t1188: {region: 0xd4, script: 0x57, flags: 0x0},\n\t1189: {region: 0x53, script: 0xd8, flags: 0x0},\n\t1190: {region: 0xe5, script: 0x57, flags: 0x0},\n\t1191: {region: 0x165, script: 0x57, flags: 0x0},\n\t1192: {region: 0x106, script: 0x1f, flags: 0x0},\n\t1193: {region: 0xba, script: 0x57, flags: 0x0},\n\t1194: {region: 0x165, script: 0x57, flags: 0x0},\n\t1195: {region: 0x106, script: 0x1f, flags: 0x0},\n\t1196: {region: 0x3f, script: 0x4, flags: 0x1},\n\t1197: {region: 0x11c, script: 0xe2, flags: 0x0},\n\t1198: {region: 0x130, script: 0x1f, flags: 0x0},\n\t1199: {region: 0x75, script: 0x57, flags: 0x0},\n\t1200: {region: 0x2a, script: 0x57, flags: 0x0},\n\t1202: {region: 0x43, script: 0x3, flags: 0x1},\n\t1203: {region: 0x99, script: 0xe, flags: 0x0},\n\t1204: {region: 0xe8, script: 0x5, flags: 0x0},\n\t1205: {region: 0x165, script: 0x57, flags: 0x0},\n\t1206: {region: 0x165, script: 0x57, flags: 0x0},\n\t1207: {region: 0x165, script: 0x57, flags: 0x0},\n\t1208: {region: 0x165, script: 0x57, flags: 0x0},\n\t1209: {region: 0x165, script: 0x57, flags: 0x0},\n\t1210: {region: 0x165, script: 0x57, flags: 0x0},\n\t1211: {region: 0x165, script: 0x57, flags: 0x0},\n\t1212: {region: 0x46, script: 0x4, flags: 0x1},\n\t1213: {region: 0x165, script: 0x57, flags: 0x0},\n\t1214: {region: 0xb4, script: 0xe3, flags: 0x0},\n\t1215: {region: 0x165, script: 0x57, flags: 0x0},\n\t1216: {region: 0x161, script: 0x57, flags: 0x0},\n\t1217: {region: 0x9e, script: 0x57, flags: 0x0},\n\t1218: {region: 0x106, script: 0x57, flags: 0x0},\n\t1219: {region: 0x13e, script: 0x57, flags: 0x0},\n\t1220: {region: 0x11b, script: 0x57, flags: 0x0},\n\t1221: {region: 0x165, script: 0x57, flags: 0x0},\n\t1222: {region: 0x36, script: 0x57, flags: 0x0},\n\t1223: {region: 0x60, script: 0x57, flags: 0x0},\n\t1224: {region: 0xd1, script: 0x57, flags: 0x0},\n\t1225: {region: 0x1, script: 0x57, flags: 0x0},\n\t1226: {region: 0x106, script: 0x57, flags: 0x0},\n\t1227: {region: 0x6a, script: 0x57, flags: 0x0},\n\t1228: {region: 0x12f, script: 0x57, flags: 0x0},\n\t1229: {region: 0x165, script: 0x57, flags: 0x0},\n\t1230: {region: 0x36, script: 0x57, flags: 0x0},\n\t1231: {region: 0x4e, script: 0x57, flags: 0x0},\n\t1232: {region: 0x165, script: 0x57, flags: 0x0},\n\t1233: {region: 0x6f, script: 0x29, flags: 0x0},\n\t1234: {region: 0x165, script: 0x57, flags: 0x0},\n\t1235: {region: 0xe7, script: 0x57, flags: 0x0},\n\t1236: {region: 0x2f, script: 0x57, flags: 0x0},\n\t1237: {region: 0x99, script: 0xda, flags: 0x0},\n\t1238: {region: 0x99, script: 0x21, flags: 0x0},\n\t1239: {region: 0x165, script: 0x57, flags: 0x0},\n\t1240: {region: 0x165, script: 0x57, flags: 0x0},\n\t1241: {region: 0x165, script: 0x57, flags: 0x0},\n\t1242: {region: 0x165, script: 0x57, flags: 0x0},\n\t1243: {region: 0x165, script: 0x57, flags: 0x0},\n\t1244: {region: 0x165, script: 0x57, flags: 0x0},\n\t1245: {region: 0x165, script: 0x57, flags: 0x0},\n\t1246: {region: 0x165, script: 0x57, flags: 0x0},\n\t1247: {region: 0x165, script: 0x57, flags: 0x0},\n\t1248: {region: 0x140, script: 0x57, flags: 0x0},\n\t1249: {region: 0x165, script: 0x57, flags: 0x0},\n\t1250: {region: 0x165, script: 0x57, flags: 0x0},\n\t1251: {region: 0xa8, script: 0x5, flags: 0x0},\n\t1252: {region: 0x165, script: 0x57, flags: 0x0},\n\t1253: {region: 0x114, script: 0x57, flags: 0x0},\n\t1254: {region: 0x165, script: 0x57, flags: 0x0},\n\t1255: {region: 0x165, script: 0x57, flags: 0x0},\n\t1256: {region: 0x165, script: 0x57, flags: 0x0},\n\t1257: {region: 0x165, script: 0x57, flags: 0x0},\n\t1258: {region: 0x99, script: 0x21, flags: 0x0},\n\t1259: {region: 0x53, script: 0x38, flags: 0x0},\n\t1260: {region: 0x165, script: 0x57, flags: 0x0},\n\t1261: {region: 0x165, script: 0x57, flags: 0x0},\n\t1262: {region: 0x41, script: 0x57, flags: 0x0},\n\t1263: {region: 0x165, script: 0x57, flags: 0x0},\n\t1264: {region: 0x12b, script: 0x18, flags: 0x0},\n\t1265: {region: 0x165, script: 0x57, flags: 0x0},\n\t1266: {region: 0x161, script: 0x57, flags: 0x0},\n\t1267: {region: 0x165, script: 0x57, flags: 0x0},\n\t1268: {region: 0x12b, script: 0x5f, flags: 0x0},\n\t1269: {region: 0x12b, script: 0x60, flags: 0x0},\n\t1270: {region: 0x7d, script: 0x2b, flags: 0x0},\n\t1271: {region: 0x53, script: 0x64, flags: 0x0},\n\t1272: {region: 0x10b, script: 0x69, flags: 0x0},\n\t1273: {region: 0x108, script: 0x73, flags: 0x0},\n\t1274: {region: 0x99, script: 0x21, flags: 0x0},\n\t1275: {region: 0x131, script: 0x57, flags: 0x0},\n\t1276: {region: 0x165, script: 0x57, flags: 0x0},\n\t1277: {region: 0x9c, script: 0x8a, flags: 0x0},\n\t1278: {region: 0x165, script: 0x57, flags: 0x0},\n\t1279: {region: 0x15e, script: 0xc2, flags: 0x0},\n\t1280: {region: 0x165, script: 0x57, flags: 0x0},\n\t1281: {region: 0x165, script: 0x57, flags: 0x0},\n\t1282: {region: 0xdb, script: 0x21, flags: 0x0},\n\t1283: {region: 0x165, script: 0x57, flags: 0x0},\n\t1284: {region: 0x165, script: 0x57, flags: 0x0},\n\t1285: {region: 0xd1, script: 0x57, flags: 0x0},\n\t1286: {region: 0x75, script: 0x57, flags: 0x0},\n\t1287: {region: 0x165, script: 0x57, flags: 0x0},\n\t1288: {region: 0x165, script: 0x57, flags: 0x0},\n\t1289: {region: 0x52, script: 0x57, flags: 0x0},\n\t1290: {region: 0x165, script: 0x57, flags: 0x0},\n\t1291: {region: 0x165, script: 0x57, flags: 0x0},\n\t1292: {region: 0x165, script: 0x57, flags: 0x0},\n\t1293: {region: 0x52, script: 0x57, flags: 0x0},\n\t1294: {region: 0x165, script: 0x57, flags: 0x0},\n\t1295: {region: 0x165, script: 0x57, flags: 0x0},\n\t1296: {region: 0x165, script: 0x57, flags: 0x0},\n\t1297: {region: 0x165, script: 0x57, flags: 0x0},\n\t1298: {region: 0x1, script: 0x3b, flags: 0x0},\n\t1299: {region: 0x165, script: 0x57, flags: 0x0},\n\t1300: {region: 0x165, script: 0x57, flags: 0x0},\n\t1301: {region: 0x165, script: 0x57, flags: 0x0},\n\t1302: {region: 0x165, script: 0x57, flags: 0x0},\n\t1303: {region: 0x165, script: 0x57, flags: 0x0},\n\t1304: {region: 0xd6, script: 0x57, flags: 0x0},\n\t1305: {region: 0x165, script: 0x57, flags: 0x0},\n\t1306: {region: 0x165, script: 0x57, flags: 0x0},\n\t1307: {region: 0x165, script: 0x57, flags: 0x0},\n\t1308: {region: 0x41, script: 0x57, flags: 0x0},\n\t1309: {region: 0x165, script: 0x57, flags: 0x0},\n\t1310: {region: 0xcf, script: 0x57, flags: 0x0},\n\t1311: {region: 0x4a, script: 0x3, flags: 0x1},\n\t1312: {region: 0x165, script: 0x57, flags: 0x0},\n\t1313: {region: 0x165, script: 0x57, flags: 0x0},\n\t1314: {region: 0x165, script: 0x57, flags: 0x0},\n\t1315: {region: 0x53, script: 0x57, flags: 0x0},\n\t1316: {region: 0x10b, script: 0x57, flags: 0x0},\n\t1318: {region: 0xa8, script: 0x5, flags: 0x0},\n\t1319: {region: 0xd9, script: 0x57, flags: 0x0},\n\t1320: {region: 0xba, script: 0xdc, flags: 0x0},\n\t1321: {region: 0x4d, script: 0x14, flags: 0x1},\n\t1322: {region: 0x53, script: 0x79, flags: 0x0},\n\t1323: {region: 0x165, script: 0x57, flags: 0x0},\n\t1324: {region: 0x122, script: 0x57, flags: 0x0},\n\t1325: {region: 0xd0, script: 0x57, flags: 0x0},\n\t1326: {region: 0x165, script: 0x57, flags: 0x0},\n\t1327: {region: 0x161, script: 0x57, flags: 0x0},\n\t1329: {region: 0x12b, script: 0x57, flags: 0x0},\n}\n\n// likelyLangList holds lists info associated with likelyLang.\n// Size: 388 bytes, 97 elements\nvar likelyLangList = [97]likelyScriptRegion{\n\t0:  {region: 0x9c, script: 0x7, flags: 0x0},\n\t1:  {region: 0xa1, script: 0x74, flags: 0x2},\n\t2:  {region: 0x11c, script: 0x80, flags: 0x2},\n\t3:  {region: 0x32, script: 0x57, flags: 0x0},\n\t4:  {region: 0x9b, script: 0x5, flags: 0x4},\n\t5:  {region: 0x9c, script: 0x5, flags: 0x4},\n\t6:  {region: 0x106, script: 0x1f, flags: 0x4},\n\t7:  {region: 0x9c, script: 0x5, flags: 0x2},\n\t8:  {region: 0x106, script: 0x1f, flags: 0x0},\n\t9:  {region: 0x38, script: 0x2c, flags: 0x2},\n\t10: {region: 0x135, script: 0x57, flags: 0x0},\n\t11: {region: 0x7b, script: 0xc5, flags: 0x2},\n\t12: {region: 0x114, script: 0x57, flags: 0x0},\n\t13: {region: 0x84, script: 0x1, flags: 0x2},\n\t14: {region: 0x5d, script: 0x1e, flags: 0x0},\n\t15: {region: 0x87, script: 0x5c, flags: 0x2},\n\t16: {region: 0xd6, script: 0x57, flags: 0x0},\n\t17: {region: 0x52, script: 0x5, flags: 0x4},\n\t18: {region: 0x10b, script: 0x5, flags: 0x4},\n\t19: {region: 0xae, script: 0x1f, flags: 0x0},\n\t20: {region: 0x24, script: 0x5, flags: 0x4},\n\t21: {region: 0x53, script: 0x5, flags: 0x4},\n\t22: {region: 0x9c, script: 0x5, flags: 0x4},\n\t23: {region: 0xc5, script: 0x5, flags: 0x4},\n\t24: {region: 0x53, script: 0x5, flags: 0x2},\n\t25: {region: 0x12b, script: 0x57, flags: 0x0},\n\t26: {region: 0xb0, script: 0x5, flags: 0x4},\n\t27: {region: 0x9b, script: 0x5, flags: 0x2},\n\t28: {region: 0xa5, script: 0x1f, flags: 0x0},\n\t29: {region: 0x53, script: 0x5, flags: 0x4},\n\t30: {region: 0x12b, script: 0x57, flags: 0x4},\n\t31: {region: 0x53, script: 0x5, flags: 0x2},\n\t32: {region: 0x12b, script: 0x57, flags: 0x2},\n\t33: {region: 0xdb, script: 0x21, flags: 0x0},\n\t34: {region: 0x99, script: 0x5a, flags: 0x2},\n\t35: {region: 0x83, script: 0x57, flags: 0x0},\n\t36: {region: 0x84, script: 0x78, flags: 0x4},\n\t37: {region: 0x84, script: 0x78, flags: 0x2},\n\t38: {region: 0xc5, script: 0x1f, flags: 0x0},\n\t39: {region: 0x53, script: 0x6d, flags: 0x4},\n\t40: {region: 0x53, script: 0x6d, flags: 0x2},\n\t41: {region: 0xd0, script: 0x57, flags: 0x0},\n\t42: {region: 0x4a, script: 0x5, flags: 0x4},\n\t43: {region: 0x95, script: 0x5, flags: 0x4},\n\t44: {region: 0x99, script: 0x33, flags: 0x0},\n\t45: {region: 0xe8, script: 0x5, flags: 0x4},\n\t46: {region: 0xe8, script: 0x5, flags: 0x2},\n\t47: {region: 0x9c, script: 0x84, flags: 0x0},\n\t48: {region: 0x53, script: 0x85, flags: 0x2},\n\t49: {region: 0xba, script: 0xdc, flags: 0x0},\n\t50: {region: 0xd9, script: 0x57, flags: 0x4},\n\t51: {region: 0xe8, script: 0x5, flags: 0x0},\n\t52: {region: 0x99, script: 0x21, flags: 0x2},\n\t53: {region: 0x99, script: 0x4c, flags: 0x2},\n\t54: {region: 0x99, script: 0xc9, flags: 0x2},\n\t55: {region: 0x105, script: 0x1f, flags: 0x0},\n\t56: {region: 0xbd, script: 0x57, flags: 0x4},\n\t57: {region: 0x104, script: 0x57, flags: 0x4},\n\t58: {region: 0x106, script: 0x57, flags: 0x4},\n\t59: {region: 0x12b, script: 0x57, flags: 0x4},\n\t60: {region: 0x124, script: 0x1f, flags: 0x0},\n\t61: {region: 0xe8, script: 0x5, flags: 0x4},\n\t62: {region: 0xe8, script: 0x5, flags: 0x2},\n\t63: {region: 0x53, script: 0x5, flags: 0x0},\n\t64: {region: 0xae, script: 0x1f, flags: 0x4},\n\t65: {region: 0xc5, script: 0x1f, flags: 0x4},\n\t66: {region: 0xae, script: 0x1f, flags: 0x2},\n\t67: {region: 0x99, script: 0xe, flags: 0x0},\n\t68: {region: 0xdb, script: 0x21, flags: 0x4},\n\t69: {region: 0xdb, script: 0x21, flags: 0x2},\n\t70: {region: 0x137, script: 0x57, flags: 0x0},\n\t71: {region: 0x24, script: 0x5, flags: 0x4},\n\t72: {region: 0x53, script: 0x1f, flags: 0x4},\n\t73: {region: 0x24, script: 0x5, flags: 0x2},\n\t74: {region: 0x8d, script: 0x39, flags: 0x0},\n\t75: {region: 0x53, script: 0x38, flags: 0x4},\n\t76: {region: 0x53, script: 0x38, flags: 0x2},\n\t77: {region: 0x53, script: 0x38, flags: 0x0},\n\t78: {region: 0x2f, script: 0x39, flags: 0x4},\n\t79: {region: 0x3e, script: 0x39, flags: 0x4},\n\t80: {region: 0x7b, script: 0x39, flags: 0x4},\n\t81: {region: 0x7e, script: 0x39, flags: 0x4},\n\t82: {region: 0x8d, script: 0x39, flags: 0x4},\n\t83: {region: 0x95, script: 0x39, flags: 0x4},\n\t84: {region: 0xc6, script: 0x39, flags: 0x4},\n\t85: {region: 0xd0, script: 0x39, flags: 0x4},\n\t86: {region: 0xe2, script: 0x39, flags: 0x4},\n\t87: {region: 0xe5, script: 0x39, flags: 0x4},\n\t88: {region: 0xe7, script: 0x39, flags: 0x4},\n\t89: {region: 0x116, script: 0x39, flags: 0x4},\n\t90: {region: 0x123, script: 0x39, flags: 0x4},\n\t91: {region: 0x12e, script: 0x39, flags: 0x4},\n\t92: {region: 0x135, script: 0x39, flags: 0x4},\n\t93: {region: 0x13e, script: 0x39, flags: 0x4},\n\t94: {region: 0x12e, script: 0x11, flags: 0x2},\n\t95: {region: 0x12e, script: 0x34, flags: 0x2},\n\t96: {region: 0x12e, script: 0x39, flags: 0x2},\n}\n\ntype likelyLangScript struct {\n\tlang   uint16\n\tscript uint8\n\tflags  uint8\n}\n\n// likelyRegion is a lookup table, indexed by regionID, for the most likely\n// languages and scripts given incomplete information. If more entries exist\n// for a given regionID, lang and script are the index and size respectively\n// of the list in likelyRegionList.\n// TODO: exclude containers and user-definable regions from the list.\n// Size: 1432 bytes, 358 elements\nvar likelyRegion = [358]likelyLangScript{\n\t34:  {lang: 0xd7, script: 0x57, flags: 0x0},\n\t35:  {lang: 0x3a, script: 0x5, flags: 0x0},\n\t36:  {lang: 0x0, script: 0x2, flags: 0x1},\n\t39:  {lang: 0x2, script: 0x2, flags: 0x1},\n\t40:  {lang: 0x4, script: 0x2, flags: 0x1},\n\t42:  {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t43:  {lang: 0x0, script: 0x57, flags: 0x0},\n\t44:  {lang: 0x13e, script: 0x57, flags: 0x0},\n\t45:  {lang: 0x41b, script: 0x57, flags: 0x0},\n\t46:  {lang: 0x10d, script: 0x57, flags: 0x0},\n\t48:  {lang: 0x367, script: 0x57, flags: 0x0},\n\t49:  {lang: 0x444, script: 0x57, flags: 0x0},\n\t50:  {lang: 0x58, script: 0x57, flags: 0x0},\n\t51:  {lang: 0x6, script: 0x2, flags: 0x1},\n\t53:  {lang: 0xa5, script: 0xe, flags: 0x0},\n\t54:  {lang: 0x367, script: 0x57, flags: 0x0},\n\t55:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t56:  {lang: 0x7e, script: 0x1f, flags: 0x0},\n\t57:  {lang: 0x3a, script: 0x5, flags: 0x0},\n\t58:  {lang: 0x3d9, script: 0x57, flags: 0x0},\n\t59:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t60:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t62:  {lang: 0x31f, script: 0x57, flags: 0x0},\n\t63:  {lang: 0x13e, script: 0x57, flags: 0x0},\n\t64:  {lang: 0x3a1, script: 0x57, flags: 0x0},\n\t65:  {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t67:  {lang: 0x8, script: 0x2, flags: 0x1},\n\t69:  {lang: 0x0, script: 0x57, flags: 0x0},\n\t71:  {lang: 0x71, script: 0x1f, flags: 0x0},\n\t73:  {lang: 0x512, script: 0x3b, flags: 0x2},\n\t74:  {lang: 0x31f, script: 0x5, flags: 0x2},\n\t75:  {lang: 0x445, script: 0x57, flags: 0x0},\n\t76:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t77:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t78:  {lang: 0x10d, script: 0x57, flags: 0x0},\n\t79:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t81:  {lang: 0x13e, script: 0x57, flags: 0x0},\n\t82:  {lang: 0x15e, script: 0x57, flags: 0x0},\n\t83:  {lang: 0xa, script: 0x4, flags: 0x1},\n\t84:  {lang: 0x13e, script: 0x57, flags: 0x0},\n\t85:  {lang: 0x0, script: 0x57, flags: 0x0},\n\t86:  {lang: 0x13e, script: 0x57, flags: 0x0},\n\t89:  {lang: 0x13e, script: 0x57, flags: 0x0},\n\t90:  {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t91:  {lang: 0x3a1, script: 0x57, flags: 0x0},\n\t93:  {lang: 0xe, script: 0x2, flags: 0x1},\n\t94:  {lang: 0xfa, script: 0x57, flags: 0x0},\n\t96:  {lang: 0x10d, script: 0x57, flags: 0x0},\n\t98:  {lang: 0x1, script: 0x57, flags: 0x0},\n\t99:  {lang: 0x101, script: 0x57, flags: 0x0},\n\t101: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t103: {lang: 0x10, script: 0x2, flags: 0x1},\n\t104: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t105: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t106: {lang: 0x140, script: 0x57, flags: 0x0},\n\t107: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t108: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t109: {lang: 0x46f, script: 0x29, flags: 0x0},\n\t110: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t111: {lang: 0x12, script: 0x2, flags: 0x1},\n\t113: {lang: 0x10d, script: 0x57, flags: 0x0},\n\t114: {lang: 0x151, script: 0x57, flags: 0x0},\n\t115: {lang: 0x1c0, script: 0x21, flags: 0x2},\n\t118: {lang: 0x158, script: 0x57, flags: 0x0},\n\t120: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t122: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t123: {lang: 0x14, script: 0x2, flags: 0x1},\n\t125: {lang: 0x16, script: 0x3, flags: 0x1},\n\t126: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t128: {lang: 0x21, script: 0x57, flags: 0x0},\n\t130: {lang: 0x245, script: 0x57, flags: 0x0},\n\t132: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t133: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t134: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t135: {lang: 0x19, script: 0x2, flags: 0x1},\n\t136: {lang: 0x0, script: 0x57, flags: 0x0},\n\t137: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t139: {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t141: {lang: 0x529, script: 0x39, flags: 0x0},\n\t142: {lang: 0x0, script: 0x57, flags: 0x0},\n\t143: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t144: {lang: 0x1d1, script: 0x57, flags: 0x0},\n\t145: {lang: 0x1d4, script: 0x57, flags: 0x0},\n\t146: {lang: 0x1d5, script: 0x57, flags: 0x0},\n\t148: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t149: {lang: 0x1b, script: 0x2, flags: 0x1},\n\t151: {lang: 0x1bc, script: 0x3b, flags: 0x0},\n\t153: {lang: 0x1d, script: 0x3, flags: 0x1},\n\t155: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t156: {lang: 0x20, script: 0x2, flags: 0x1},\n\t157: {lang: 0x1f8, script: 0x57, flags: 0x0},\n\t158: {lang: 0x1f9, script: 0x57, flags: 0x0},\n\t161: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t162: {lang: 0x200, script: 0x46, flags: 0x0},\n\t164: {lang: 0x445, script: 0x57, flags: 0x0},\n\t165: {lang: 0x28a, script: 0x1f, flags: 0x0},\n\t166: {lang: 0x22, script: 0x3, flags: 0x1},\n\t168: {lang: 0x25, script: 0x2, flags: 0x1},\n\t170: {lang: 0x254, script: 0x50, flags: 0x0},\n\t171: {lang: 0x254, script: 0x50, flags: 0x0},\n\t172: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t174: {lang: 0x3e2, script: 0x1f, flags: 0x0},\n\t175: {lang: 0x27, script: 0x2, flags: 0x1},\n\t176: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t178: {lang: 0x10d, script: 0x57, flags: 0x0},\n\t179: {lang: 0x40c, script: 0xca, flags: 0x0},\n\t181: {lang: 0x43b, script: 0x57, flags: 0x0},\n\t182: {lang: 0x2c0, script: 0x57, flags: 0x0},\n\t183: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t184: {lang: 0x2c7, script: 0x57, flags: 0x0},\n\t185: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t186: {lang: 0x29, script: 0x2, flags: 0x1},\n\t187: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t188: {lang: 0x2b, script: 0x2, flags: 0x1},\n\t189: {lang: 0x432, script: 0x57, flags: 0x0},\n\t190: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t191: {lang: 0x2f1, script: 0x57, flags: 0x0},\n\t194: {lang: 0x2d, script: 0x2, flags: 0x1},\n\t195: {lang: 0xa0, script: 0x57, flags: 0x0},\n\t196: {lang: 0x2f, script: 0x2, flags: 0x1},\n\t197: {lang: 0x31, script: 0x2, flags: 0x1},\n\t198: {lang: 0x33, script: 0x2, flags: 0x1},\n\t200: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t201: {lang: 0x35, script: 0x2, flags: 0x1},\n\t203: {lang: 0x320, script: 0x57, flags: 0x0},\n\t204: {lang: 0x37, script: 0x3, flags: 0x1},\n\t205: {lang: 0x128, script: 0xde, flags: 0x0},\n\t207: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t208: {lang: 0x31f, script: 0x57, flags: 0x0},\n\t209: {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t210: {lang: 0x16, script: 0x57, flags: 0x0},\n\t211: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t212: {lang: 0x1b4, script: 0x57, flags: 0x0},\n\t214: {lang: 0x1b4, script: 0x5, flags: 0x2},\n\t216: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t217: {lang: 0x367, script: 0x57, flags: 0x0},\n\t218: {lang: 0x347, script: 0x57, flags: 0x0},\n\t219: {lang: 0x351, script: 0x21, flags: 0x0},\n\t225: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t226: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t228: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t229: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t230: {lang: 0x486, script: 0x57, flags: 0x0},\n\t231: {lang: 0x153, script: 0x57, flags: 0x0},\n\t232: {lang: 0x3a, script: 0x3, flags: 0x1},\n\t233: {lang: 0x3b3, script: 0x57, flags: 0x0},\n\t234: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t236: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t237: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t238: {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t240: {lang: 0x3a2, script: 0x57, flags: 0x0},\n\t241: {lang: 0x194, script: 0x57, flags: 0x0},\n\t243: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t258: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t260: {lang: 0x3d, script: 0x2, flags: 0x1},\n\t261: {lang: 0x432, script: 0x1f, flags: 0x0},\n\t262: {lang: 0x3f, script: 0x2, flags: 0x1},\n\t263: {lang: 0x3e5, script: 0x57, flags: 0x0},\n\t264: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t266: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t267: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t268: {lang: 0x41, script: 0x2, flags: 0x1},\n\t271: {lang: 0x416, script: 0x57, flags: 0x0},\n\t272: {lang: 0x347, script: 0x57, flags: 0x0},\n\t273: {lang: 0x43, script: 0x2, flags: 0x1},\n\t275: {lang: 0x1f9, script: 0x57, flags: 0x0},\n\t276: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t277: {lang: 0x429, script: 0x57, flags: 0x0},\n\t278: {lang: 0x367, script: 0x57, flags: 0x0},\n\t280: {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t282: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t284: {lang: 0x45, script: 0x2, flags: 0x1},\n\t288: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t289: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t290: {lang: 0x47, script: 0x2, flags: 0x1},\n\t291: {lang: 0x49, script: 0x3, flags: 0x1},\n\t292: {lang: 0x4c, script: 0x2, flags: 0x1},\n\t293: {lang: 0x477, script: 0x57, flags: 0x0},\n\t294: {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t295: {lang: 0x476, script: 0x57, flags: 0x0},\n\t296: {lang: 0x4e, script: 0x2, flags: 0x1},\n\t297: {lang: 0x482, script: 0x57, flags: 0x0},\n\t299: {lang: 0x50, script: 0x4, flags: 0x1},\n\t301: {lang: 0x4a0, script: 0x57, flags: 0x0},\n\t302: {lang: 0x54, script: 0x2, flags: 0x1},\n\t303: {lang: 0x445, script: 0x57, flags: 0x0},\n\t304: {lang: 0x56, script: 0x3, flags: 0x1},\n\t305: {lang: 0x445, script: 0x57, flags: 0x0},\n\t309: {lang: 0x512, script: 0x3b, flags: 0x2},\n\t310: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t311: {lang: 0x4bc, script: 0x57, flags: 0x0},\n\t312: {lang: 0x1f9, script: 0x57, flags: 0x0},\n\t315: {lang: 0x13e, script: 0x57, flags: 0x0},\n\t318: {lang: 0x4c3, script: 0x57, flags: 0x0},\n\t319: {lang: 0x8a, script: 0x57, flags: 0x0},\n\t320: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t322: {lang: 0x41b, script: 0x57, flags: 0x0},\n\t333: {lang: 0x59, script: 0x2, flags: 0x1},\n\t350: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t351: {lang: 0x5b, script: 0x2, flags: 0x1},\n\t356: {lang: 0x423, script: 0x57, flags: 0x0},\n}\n\n// likelyRegionList holds lists info associated with likelyRegion.\n// Size: 372 bytes, 93 elements\nvar likelyRegionList = [93]likelyLangScript{\n\t0:  {lang: 0x148, script: 0x5, flags: 0x0},\n\t1:  {lang: 0x476, script: 0x57, flags: 0x0},\n\t2:  {lang: 0x431, script: 0x57, flags: 0x0},\n\t3:  {lang: 0x2ff, script: 0x1f, flags: 0x0},\n\t4:  {lang: 0x1d7, script: 0x8, flags: 0x0},\n\t5:  {lang: 0x274, script: 0x57, flags: 0x0},\n\t6:  {lang: 0xb7, script: 0x57, flags: 0x0},\n\t7:  {lang: 0x432, script: 0x1f, flags: 0x0},\n\t8:  {lang: 0x12d, script: 0xe0, flags: 0x0},\n\t9:  {lang: 0x351, script: 0x21, flags: 0x0},\n\t10: {lang: 0x529, script: 0x38, flags: 0x0},\n\t11: {lang: 0x4ac, script: 0x5, flags: 0x0},\n\t12: {lang: 0x523, script: 0x57, flags: 0x0},\n\t13: {lang: 0x29a, script: 0xdf, flags: 0x0},\n\t14: {lang: 0x136, script: 0x31, flags: 0x0},\n\t15: {lang: 0x48a, script: 0x57, flags: 0x0},\n\t16: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t17: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t18: {lang: 0x27, script: 0x29, flags: 0x0},\n\t19: {lang: 0x139, script: 0x57, flags: 0x0},\n\t20: {lang: 0x26a, script: 0x5, flags: 0x2},\n\t21: {lang: 0x512, script: 0x3b, flags: 0x2},\n\t22: {lang: 0x210, script: 0x2b, flags: 0x0},\n\t23: {lang: 0x5, script: 0x1f, flags: 0x0},\n\t24: {lang: 0x274, script: 0x57, flags: 0x0},\n\t25: {lang: 0x136, script: 0x31, flags: 0x0},\n\t26: {lang: 0x2ff, script: 0x1f, flags: 0x0},\n\t27: {lang: 0x1e1, script: 0x57, flags: 0x0},\n\t28: {lang: 0x31f, script: 0x5, flags: 0x0},\n\t29: {lang: 0x1be, script: 0x21, flags: 0x0},\n\t30: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t31: {lang: 0x236, script: 0x72, flags: 0x0},\n\t32: {lang: 0x148, script: 0x5, flags: 0x0},\n\t33: {lang: 0x476, script: 0x57, flags: 0x0},\n\t34: {lang: 0x24a, script: 0x4b, flags: 0x0},\n\t35: {lang: 0xe6, script: 0x5, flags: 0x0},\n\t36: {lang: 0x226, script: 0xdf, flags: 0x0},\n\t37: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t38: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t39: {lang: 0x2b8, script: 0x54, flags: 0x0},\n\t40: {lang: 0x226, script: 0xdf, flags: 0x0},\n\t41: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t42: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t43: {lang: 0x3dc, script: 0x57, flags: 0x0},\n\t44: {lang: 0x4ae, script: 0x1f, flags: 0x0},\n\t45: {lang: 0x2ff, script: 0x1f, flags: 0x0},\n\t46: {lang: 0x431, script: 0x57, flags: 0x0},\n\t47: {lang: 0x331, script: 0x72, flags: 0x0},\n\t48: {lang: 0x213, script: 0x57, flags: 0x0},\n\t49: {lang: 0x30b, script: 0x1f, flags: 0x0},\n\t50: {lang: 0x242, script: 0x5, flags: 0x0},\n\t51: {lang: 0x529, script: 0x39, flags: 0x0},\n\t52: {lang: 0x3c0, script: 0x57, flags: 0x0},\n\t53: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t54: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t55: {lang: 0x2ed, script: 0x57, flags: 0x0},\n\t56: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t57: {lang: 0x88, script: 0x21, flags: 0x0},\n\t58: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t59: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t60: {lang: 0xbe, script: 0x21, flags: 0x0},\n\t61: {lang: 0x3dc, script: 0x57, flags: 0x0},\n\t62: {lang: 0x7e, script: 0x1f, flags: 0x0},\n\t63: {lang: 0x3e2, script: 0x1f, flags: 0x0},\n\t64: {lang: 0x267, script: 0x57, flags: 0x0},\n\t65: {lang: 0x444, script: 0x57, flags: 0x0},\n\t66: {lang: 0x512, script: 0x3b, flags: 0x0},\n\t67: {lang: 0x412, script: 0x57, flags: 0x0},\n\t68: {lang: 0x4ae, script: 0x1f, flags: 0x0},\n\t69: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t70: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t71: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t72: {lang: 0x35, script: 0x5, flags: 0x0},\n\t73: {lang: 0x46b, script: 0xdf, flags: 0x0},\n\t74: {lang: 0x2ec, script: 0x5, flags: 0x0},\n\t75: {lang: 0x30f, script: 0x72, flags: 0x0},\n\t76: {lang: 0x467, script: 0x1f, flags: 0x0},\n\t77: {lang: 0x148, script: 0x5, flags: 0x0},\n\t78: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t79: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t80: {lang: 0x48a, script: 0x57, flags: 0x0},\n\t81: {lang: 0x58, script: 0x5, flags: 0x0},\n\t82: {lang: 0x219, script: 0x1f, flags: 0x0},\n\t83: {lang: 0x81, script: 0x31, flags: 0x0},\n\t84: {lang: 0x529, script: 0x39, flags: 0x0},\n\t85: {lang: 0x48c, script: 0x57, flags: 0x0},\n\t86: {lang: 0x4ae, script: 0x1f, flags: 0x0},\n\t87: {lang: 0x512, script: 0x3b, flags: 0x0},\n\t88: {lang: 0x3b3, script: 0x57, flags: 0x0},\n\t89: {lang: 0x431, script: 0x57, flags: 0x0},\n\t90: {lang: 0x432, script: 0x1f, flags: 0x0},\n\t91: {lang: 0x15e, script: 0x57, flags: 0x0},\n\t92: {lang: 0x446, script: 0x5, flags: 0x0},\n}\n\ntype likelyTag struct {\n\tlang   uint16\n\tregion uint16\n\tscript uint8\n}\n\n// Size: 198 bytes, 33 elements\nvar likelyRegionGroup = [33]likelyTag{\n\t1:  {lang: 0x139, region: 0xd6, script: 0x57},\n\t2:  {lang: 0x139, region: 0x135, script: 0x57},\n\t3:  {lang: 0x3c0, region: 0x41, script: 0x57},\n\t4:  {lang: 0x139, region: 0x2f, script: 0x57},\n\t5:  {lang: 0x139, region: 0xd6, script: 0x57},\n\t6:  {lang: 0x13e, region: 0xcf, script: 0x57},\n\t7:  {lang: 0x445, region: 0x12f, script: 0x57},\n\t8:  {lang: 0x3a, region: 0x6b, script: 0x5},\n\t9:  {lang: 0x445, region: 0x4b, script: 0x57},\n\t10: {lang: 0x139, region: 0x161, script: 0x57},\n\t11: {lang: 0x139, region: 0x135, script: 0x57},\n\t12: {lang: 0x139, region: 0x135, script: 0x57},\n\t13: {lang: 0x13e, region: 0x59, script: 0x57},\n\t14: {lang: 0x529, region: 0x53, script: 0x38},\n\t15: {lang: 0x1be, region: 0x99, script: 0x21},\n\t16: {lang: 0x1e1, region: 0x95, script: 0x57},\n\t17: {lang: 0x1f9, region: 0x9e, script: 0x57},\n\t18: {lang: 0x139, region: 0x2f, script: 0x57},\n\t19: {lang: 0x139, region: 0xe6, script: 0x57},\n\t20: {lang: 0x139, region: 0x8a, script: 0x57},\n\t21: {lang: 0x41b, region: 0x142, script: 0x57},\n\t22: {lang: 0x529, region: 0x53, script: 0x38},\n\t23: {lang: 0x4bc, region: 0x137, script: 0x57},\n\t24: {lang: 0x3a, region: 0x108, script: 0x5},\n\t25: {lang: 0x3e2, region: 0x106, script: 0x1f},\n\t26: {lang: 0x3e2, region: 0x106, script: 0x1f},\n\t27: {lang: 0x139, region: 0x7b, script: 0x57},\n\t28: {lang: 0x10d, region: 0x60, script: 0x57},\n\t29: {lang: 0x139, region: 0xd6, script: 0x57},\n\t30: {lang: 0x13e, region: 0x1f, script: 0x57},\n\t31: {lang: 0x139, region: 0x9a, script: 0x57},\n\t32: {lang: 0x139, region: 0x7b, script: 0x57},\n}\n\n// Size: 358 bytes, 358 elements\nvar regionToGroups = [358]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00,\n\t0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04,\n\t// Entry 40 - 7F\n\t0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00,\n\t0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08,\n\t0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00,\n\t// Entry 80 - BF\n\t0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00,\n\t0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04,\n\t0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00,\n\t// Entry C0 - FF\n\t0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,\n\t0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 100 - 13F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,\n\t0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, 0x00,\n\t0x00, 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, 0x00,\n\t// Entry 140 - 17F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n}\n\n// Size: 18 bytes, 3 elements\nvar paradigmLocales = [3][3]uint16{\n\t0: [3]uint16{0x139, 0x0, 0x7b},\n\t1: [3]uint16{0x13e, 0x0, 0x1f},\n\t2: [3]uint16{0x3c0, 0x41, 0xee},\n}\n\ntype mutualIntelligibility struct {\n\twant     uint16\n\thave     uint16\n\tdistance uint8\n\toneway   bool\n}\n\ntype scriptIntelligibility struct {\n\twantLang   uint16\n\thaveLang   uint16\n\twantScript uint8\n\thaveScript uint8\n\tdistance   uint8\n}\n\ntype regionIntelligibility struct {\n\tlang     uint16\n\tscript   uint8\n\tgroup    uint8\n\tdistance uint8\n}\n\n// matchLang holds pairs of langIDs of base languages that are typically\n// mutually intelligible. Each pair is associated with a confidence and\n// whether the intelligibility goes one or both ways.\n// Size: 678 bytes, 113 elements\nvar matchLang = [113]mutualIntelligibility{\n\t0:   {want: 0x1d1, have: 0xb7, distance: 0x4, oneway: false},\n\t1:   {want: 0x407, have: 0xb7, distance: 0x4, oneway: false},\n\t2:   {want: 0x407, have: 0x1d1, distance: 0x4, oneway: false},\n\t3:   {want: 0x407, have: 0x432, distance: 0x4, oneway: false},\n\t4:   {want: 0x43a, have: 0x1, distance: 0x4, oneway: false},\n\t5:   {want: 0x1a3, have: 0x10d, distance: 0x4, oneway: true},\n\t6:   {want: 0x295, have: 0x10d, distance: 0x4, oneway: true},\n\t7:   {want: 0x101, have: 0x36f, distance: 0x8, oneway: false},\n\t8:   {want: 0x101, have: 0x347, distance: 0x8, oneway: false},\n\t9:   {want: 0x5, have: 0x3e2, distance: 0xa, oneway: true},\n\t10:  {want: 0xd, have: 0x139, distance: 0xa, oneway: true},\n\t11:  {want: 0x16, have: 0x367, distance: 0xa, oneway: true},\n\t12:  {want: 0x21, have: 0x139, distance: 0xa, oneway: true},\n\t13:  {want: 0x56, have: 0x13e, distance: 0xa, oneway: true},\n\t14:  {want: 0x58, have: 0x3e2, distance: 0xa, oneway: true},\n\t15:  {want: 0x71, have: 0x3e2, distance: 0xa, oneway: true},\n\t16:  {want: 0x75, have: 0x139, distance: 0xa, oneway: true},\n\t17:  {want: 0x82, have: 0x1be, distance: 0xa, oneway: true},\n\t18:  {want: 0xa5, have: 0x139, distance: 0xa, oneway: true},\n\t19:  {want: 0xb2, have: 0x15e, distance: 0xa, oneway: true},\n\t20:  {want: 0xdd, have: 0x153, distance: 0xa, oneway: true},\n\t21:  {want: 0xe5, have: 0x139, distance: 0xa, oneway: true},\n\t22:  {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true},\n\t23:  {want: 0xf0, have: 0x15e, distance: 0xa, oneway: true},\n\t24:  {want: 0xf9, have: 0x15e, distance: 0xa, oneway: true},\n\t25:  {want: 0x100, have: 0x139, distance: 0xa, oneway: true},\n\t26:  {want: 0x130, have: 0x139, distance: 0xa, oneway: true},\n\t27:  {want: 0x13c, have: 0x139, distance: 0xa, oneway: true},\n\t28:  {want: 0x140, have: 0x151, distance: 0xa, oneway: true},\n\t29:  {want: 0x145, have: 0x13e, distance: 0xa, oneway: true},\n\t30:  {want: 0x158, have: 0x101, distance: 0xa, oneway: true},\n\t31:  {want: 0x16d, have: 0x367, distance: 0xa, oneway: true},\n\t32:  {want: 0x16e, have: 0x139, distance: 0xa, oneway: true},\n\t33:  {want: 0x16f, have: 0x139, distance: 0xa, oneway: true},\n\t34:  {want: 0x17e, have: 0x139, distance: 0xa, oneway: true},\n\t35:  {want: 0x190, have: 0x13e, distance: 0xa, oneway: true},\n\t36:  {want: 0x194, have: 0x13e, distance: 0xa, oneway: true},\n\t37:  {want: 0x1a4, have: 0x1be, distance: 0xa, oneway: true},\n\t38:  {want: 0x1b4, have: 0x139, distance: 0xa, oneway: true},\n\t39:  {want: 0x1b8, have: 0x139, distance: 0xa, oneway: true},\n\t40:  {want: 0x1d4, have: 0x15e, distance: 0xa, oneway: true},\n\t41:  {want: 0x1d7, have: 0x3e2, distance: 0xa, oneway: true},\n\t42:  {want: 0x1d9, have: 0x139, distance: 0xa, oneway: true},\n\t43:  {want: 0x1e7, have: 0x139, distance: 0xa, oneway: true},\n\t44:  {want: 0x1f8, have: 0x139, distance: 0xa, oneway: true},\n\t45:  {want: 0x20e, have: 0x1e1, distance: 0xa, oneway: true},\n\t46:  {want: 0x210, have: 0x139, distance: 0xa, oneway: true},\n\t47:  {want: 0x22d, have: 0x15e, distance: 0xa, oneway: true},\n\t48:  {want: 0x242, have: 0x3e2, distance: 0xa, oneway: true},\n\t49:  {want: 0x24a, have: 0x139, distance: 0xa, oneway: true},\n\t50:  {want: 0x251, have: 0x139, distance: 0xa, oneway: true},\n\t51:  {want: 0x265, have: 0x139, distance: 0xa, oneway: true},\n\t52:  {want: 0x274, have: 0x48a, distance: 0xa, oneway: true},\n\t53:  {want: 0x28a, have: 0x3e2, distance: 0xa, oneway: true},\n\t54:  {want: 0x28e, have: 0x1f9, distance: 0xa, oneway: true},\n\t55:  {want: 0x2a3, have: 0x139, distance: 0xa, oneway: true},\n\t56:  {want: 0x2b5, have: 0x15e, distance: 0xa, oneway: true},\n\t57:  {want: 0x2b8, have: 0x139, distance: 0xa, oneway: true},\n\t58:  {want: 0x2be, have: 0x139, distance: 0xa, oneway: true},\n\t59:  {want: 0x2c3, have: 0x15e, distance: 0xa, oneway: true},\n\t60:  {want: 0x2ed, have: 0x139, distance: 0xa, oneway: true},\n\t61:  {want: 0x2f1, have: 0x15e, distance: 0xa, oneway: true},\n\t62:  {want: 0x2fa, have: 0x139, distance: 0xa, oneway: true},\n\t63:  {want: 0x2ff, have: 0x7e, distance: 0xa, oneway: true},\n\t64:  {want: 0x304, have: 0x139, distance: 0xa, oneway: true},\n\t65:  {want: 0x30b, have: 0x3e2, distance: 0xa, oneway: true},\n\t66:  {want: 0x31b, have: 0x1be, distance: 0xa, oneway: true},\n\t67:  {want: 0x31f, have: 0x1e1, distance: 0xa, oneway: true},\n\t68:  {want: 0x320, have: 0x139, distance: 0xa, oneway: true},\n\t69:  {want: 0x331, have: 0x139, distance: 0xa, oneway: true},\n\t70:  {want: 0x351, have: 0x139, distance: 0xa, oneway: true},\n\t71:  {want: 0x36a, have: 0x347, distance: 0xa, oneway: false},\n\t72:  {want: 0x36a, have: 0x36f, distance: 0xa, oneway: true},\n\t73:  {want: 0x37a, have: 0x139, distance: 0xa, oneway: true},\n\t74:  {want: 0x387, have: 0x139, distance: 0xa, oneway: true},\n\t75:  {want: 0x389, have: 0x139, distance: 0xa, oneway: true},\n\t76:  {want: 0x38b, have: 0x15e, distance: 0xa, oneway: true},\n\t77:  {want: 0x390, have: 0x139, distance: 0xa, oneway: true},\n\t78:  {want: 0x395, have: 0x139, distance: 0xa, oneway: true},\n\t79:  {want: 0x39d, have: 0x139, distance: 0xa, oneway: true},\n\t80:  {want: 0x3a5, have: 0x139, distance: 0xa, oneway: true},\n\t81:  {want: 0x3be, have: 0x139, distance: 0xa, oneway: true},\n\t82:  {want: 0x3c4, have: 0x13e, distance: 0xa, oneway: true},\n\t83:  {want: 0x3d4, have: 0x10d, distance: 0xa, oneway: true},\n\t84:  {want: 0x3d9, have: 0x139, distance: 0xa, oneway: true},\n\t85:  {want: 0x3e5, have: 0x15e, distance: 0xa, oneway: true},\n\t86:  {want: 0x3e9, have: 0x1be, distance: 0xa, oneway: true},\n\t87:  {want: 0x3fa, have: 0x139, distance: 0xa, oneway: true},\n\t88:  {want: 0x40c, have: 0x139, distance: 0xa, oneway: true},\n\t89:  {want: 0x423, have: 0x139, distance: 0xa, oneway: true},\n\t90:  {want: 0x429, have: 0x139, distance: 0xa, oneway: true},\n\t91:  {want: 0x431, have: 0x139, distance: 0xa, oneway: true},\n\t92:  {want: 0x43b, have: 0x139, distance: 0xa, oneway: true},\n\t93:  {want: 0x43e, have: 0x1e1, distance: 0xa, oneway: true},\n\t94:  {want: 0x445, have: 0x139, distance: 0xa, oneway: true},\n\t95:  {want: 0x450, have: 0x139, distance: 0xa, oneway: true},\n\t96:  {want: 0x461, have: 0x139, distance: 0xa, oneway: true},\n\t97:  {want: 0x467, have: 0x3e2, distance: 0xa, oneway: true},\n\t98:  {want: 0x46f, have: 0x139, distance: 0xa, oneway: true},\n\t99:  {want: 0x476, have: 0x3e2, distance: 0xa, oneway: true},\n\t100: {want: 0x3883, have: 0x139, distance: 0xa, oneway: true},\n\t101: {want: 0x480, have: 0x139, distance: 0xa, oneway: true},\n\t102: {want: 0x482, have: 0x139, distance: 0xa, oneway: true},\n\t103: {want: 0x494, have: 0x3e2, distance: 0xa, oneway: true},\n\t104: {want: 0x49d, have: 0x139, distance: 0xa, oneway: true},\n\t105: {want: 0x4ac, have: 0x529, distance: 0xa, oneway: true},\n\t106: {want: 0x4b4, have: 0x139, distance: 0xa, oneway: true},\n\t107: {want: 0x4bc, have: 0x3e2, distance: 0xa, oneway: true},\n\t108: {want: 0x4e5, have: 0x15e, distance: 0xa, oneway: true},\n\t109: {want: 0x4f2, have: 0x139, distance: 0xa, oneway: true},\n\t110: {want: 0x512, have: 0x139, distance: 0xa, oneway: true},\n\t111: {want: 0x518, have: 0x139, distance: 0xa, oneway: true},\n\t112: {want: 0x52f, have: 0x139, distance: 0xa, oneway: true},\n}\n\n// matchScript holds pairs of scriptIDs where readers of one script\n// can typically also read the other. Each is associated with a confidence.\n// Size: 208 bytes, 26 elements\nvar matchScript = [26]scriptIntelligibility{\n\t0:  {wantLang: 0x432, haveLang: 0x432, wantScript: 0x57, haveScript: 0x1f, distance: 0x5},\n\t1:  {wantLang: 0x432, haveLang: 0x432, wantScript: 0x1f, haveScript: 0x57, distance: 0x5},\n\t2:  {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},\n\t3:  {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x57, distance: 0xa},\n\t4:  {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x1f, distance: 0xa},\n\t5:  {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2b, haveScript: 0x57, distance: 0xa},\n\t6:  {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4b, haveScript: 0x57, distance: 0xa},\n\t7:  {wantLang: 0x251, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x57, distance: 0xa},\n\t8:  {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x54, haveScript: 0x57, distance: 0xa},\n\t9:  {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6b, haveScript: 0x57, distance: 0xa},\n\t10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x72, haveScript: 0x57, distance: 0xa},\n\t11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x21, haveScript: 0x57, distance: 0xa},\n\t12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x7d, haveScript: 0x57, distance: 0xa},\n\t13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x33, haveScript: 0x57, distance: 0xa},\n\t14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},\n\t15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},\n\t16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xca, haveScript: 0x57, distance: 0xa},\n\t17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xd7, haveScript: 0x57, distance: 0xa},\n\t18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xda, haveScript: 0x57, distance: 0xa},\n\t19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x29, haveScript: 0x57, distance: 0xa},\n\t20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},\n\t21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},\n\t22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},\n\t23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3b, haveScript: 0x57, distance: 0xa},\n\t24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x38, haveScript: 0x39, distance: 0xf},\n\t25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x39, haveScript: 0x38, distance: 0x13},\n}\n\n// Size: 90 bytes, 15 elements\nvar matchRegion = [15]regionIntelligibility{\n\t0:  {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4},\n\t1:  {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4},\n\t2:  {lang: 0x139, script: 0x0, group: 0x1, distance: 0x4},\n\t3:  {lang: 0x139, script: 0x0, group: 0x81, distance: 0x4},\n\t4:  {lang: 0x13e, script: 0x0, group: 0x3, distance: 0x4},\n\t5:  {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4},\n\t6:  {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4},\n\t7:  {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4},\n\t8:  {lang: 0x529, script: 0x39, group: 0x2, distance: 0x4},\n\t9:  {lang: 0x529, script: 0x39, group: 0x82, distance: 0x4},\n\t10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5},\n\t11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5},\n\t12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5},\n\t13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5},\n\t14: {lang: 0x529, script: 0x39, group: 0x80, distance: 0x5},\n}\n\n// Size: 264 bytes, 33 elements\nvar regionContainment = [33]uint64{\n\t// Entry 0 - 1F\n\t0x00000001ffffffff, 0x00000000200007a2, 0x0000000000003044, 0x0000000000000008,\n\t0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080,\n\t0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c,\n\t0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000,\n\t0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000,\n\t0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000,\n\t0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000,\n\t0x0000000010000000, 0x00000000200006a0, 0x0000000040002048, 0x0000000080000000,\n\t// Entry 20 - 3F\n\t0x0000000100000000,\n}\n\n// regionInclusion maps region identifiers to sets of regions in regionInclusionBits,\n// where each set holds all groupings that are directly connected in a region\n// containment graph.\n// Size: 358 bytes, 358 elements\nvar regionInclusion = [358]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,\n\t0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,\n\t0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n\t0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,\n\t0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23,\n\t0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b,\n\t0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d,\n\t0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28,\n\t// Entry 40 - 7F\n\t0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33,\n\t0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d,\n\t0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x34, 0x23,\n\t0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e, 0x35,\n\t0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21, 0x39,\n\t0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a, 0x2f,\n\t0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c, 0x21,\n\t0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28, 0x2c,\n\t// Entry 80 - BF\n\t0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27, 0x3a,\n\t0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22, 0x34,\n\t0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38, 0x24,\n\t0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a, 0x2c,\n\t0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31, 0x3c,\n\t0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d, 0x31,\n\t0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38, 0x2a,\n\t0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26, 0x2f,\n\t// Entry C0 - FF\n\t0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36, 0x3c,\n\t0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f, 0x34,\n\t0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d, 0x21,\n\t0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24, 0x29,\n\t0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b, 0x31,\n\t0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a, 0x21,\n\t0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,\n\t// Entry 100 - 13F\n\t0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33, 0x2f,\n\t0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d, 0x3a,\n\t0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28, 0x2f,\n\t0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22, 0x26,\n\t0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31, 0x3d,\n\t0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36, 0x2f,\n\t0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28, 0x3d,\n\t0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31, 0x3b,\n\t// Entry 140 - 17F\n\t0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24, 0x2f,\n\t0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21,\n}\n\n// regionInclusionBits is an array of bit vectors where every vector represents\n// a set of region groupings.  These sets are used to compute the distance\n// between two regions for the purpose of language matching.\n// Size: 584 bytes, 73 elements\nvar regionInclusionBits = [73]uint64{\n\t// Entry 0 - 1F\n\t0x0000000102400813, 0x00000000200007a3, 0x0000000000003844, 0x0000000040000808,\n\t0x00000000803c0011, 0x0000000020000022, 0x0000000040000844, 0x0000000020000082,\n\t0x0000000000000102, 0x0000000020000202, 0x0000000020000402, 0x000000004000384d,\n\t0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000,\n\t0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010,\n\t0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000,\n\t0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000,\n\t0x0000000012000000, 0x00000000200006a2, 0x0000000040002848, 0x0000000080000010,\n\t// Entry 20 - 3F\n\t0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000,\n\t0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200,\n\t0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000,\n\t0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080,\n\t0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000,\n\t0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000,\n\t0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000,\n\t0x0000000000100000, 0x0000000000800000, 0x00000001ffffffff, 0x0000000122400fb3,\n\t// Entry 40 - 5F\n\t0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813,\n\t0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001,\n\t0x0000000102020001,\n}\n\n// regionInclusionNext marks, for each entry in regionInclusionBits, the set of\n// all groups that are reachable from the groups set in the respective entry.\n// Size: 73 bytes, 73 elements\nvar regionInclusionNext = [73]uint8{\n\t// Entry 0 - 3F\n\t0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01,\n\t0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16,\n\t0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16,\n\t0x16, 0x43, 0x19, 0x19, 0x19, 0x01, 0x0b, 0x04,\n\t0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09,\n\t0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07,\n\t0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46,\n\t0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e,\n\t// Entry 40 - 7F\n\t0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43,\n\t0x43,\n}\n\ntype parentRel struct {\n\tlang       uint16\n\tscript     uint8\n\tmaxScript  uint8\n\ttoRegion   uint16\n\tfromRegion []uint16\n}\n\n// Size: 414 bytes, 5 elements\nvar parents = [5]parentRel{\n\t0: {lang: 0x139, script: 0x0, maxScript: 0x57, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5c, 0x5d, 0x61, 0x64, 0x6d, 0x73, 0x74, 0x75, 0x7b, 0x7c, 0x7f, 0x80, 0x81, 0x83, 0x8c, 0x8d, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9f, 0xa0, 0xa4, 0xa7, 0xa9, 0xad, 0xb1, 0xb4, 0xb5, 0xbf, 0xc6, 0xca, 0xcb, 0xcc, 0xce, 0xd0, 0xd2, 0xd5, 0xd6, 0xdd, 0xdf, 0xe0, 0xe6, 0xe7, 0xe8, 0xeb, 0xf0, 0x107, 0x109, 0x10a, 0x10b, 0x10d, 0x10e, 0x112, 0x117, 0x11b, 0x11d, 0x11f, 0x125, 0x129, 0x12c, 0x12d, 0x12f, 0x131, 0x139, 0x13c, 0x13f, 0x142, 0x161, 0x162, 0x164}},\n\t1: {lang: 0x139, script: 0x0, maxScript: 0x57, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x60, 0x63, 0x72, 0xd9, 0x10c, 0x10f}},\n\t2: {lang: 0x13e, script: 0x0, maxScript: 0x57, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x56, 0x59, 0x65, 0x69, 0x89, 0x8f, 0xcf, 0xd8, 0xe2, 0xe4, 0xec, 0xf1, 0x11a, 0x135, 0x136, 0x13b}},\n\t3: {lang: 0x3c0, script: 0x0, maxScript: 0x57, toRegion: 0xee, fromRegion: []uint16{0x2a, 0x4e, 0x5a, 0x86, 0x8b, 0xb7, 0xc6, 0xd1, 0x118, 0x126}},\n\t4: {lang: 0x529, script: 0x39, maxScript: 0x39, toRegion: 0x8d, fromRegion: []uint16{0xc6}},\n}\n\n// Total table size 27238 bytes (26KiB); checksum: C9BBE4D5\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/language/tags.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\n// TODO: Various sets of commonly use tags and regions.\n\n// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.\n// It simplifies safe initialization of Tag values.\nfunc MustParse(s string) Tag {\n\tt, err := Parse(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.\n// It simplifies safe initialization of Tag values.\nfunc (c CanonType) MustParse(s string) Tag {\n\tt, err := c.Parse(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// MustParseBase is like ParseBase, but panics if the given base cannot be parsed.\n// It simplifies safe initialization of Base values.\nfunc MustParseBase(s string) Base {\n\tb, err := ParseBase(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn b\n}\n\n// MustParseScript is like ParseScript, but panics if the given script cannot be\n// parsed. It simplifies safe initialization of Script values.\nfunc MustParseScript(s string) Script {\n\tscr, err := ParseScript(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn scr\n}\n\n// MustParseRegion is like ParseRegion, but panics if the given region cannot be\n// parsed. It simplifies safe initialization of Region values.\nfunc MustParseRegion(s string) Region {\n\tr, err := ParseRegion(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn r\n}\n\nvar (\n\tund = Tag{}\n\n\tUnd Tag = Tag{}\n\n\tAfrikaans            Tag = Tag{lang: _af}                //  af\n\tAmharic              Tag = Tag{lang: _am}                //  am\n\tArabic               Tag = Tag{lang: _ar}                //  ar\n\tModernStandardArabic Tag = Tag{lang: _ar, region: _001}  //  ar-001\n\tAzerbaijani          Tag = Tag{lang: _az}                //  az\n\tBulgarian            Tag = Tag{lang: _bg}                //  bg\n\tBengali              Tag = Tag{lang: _bn}                //  bn\n\tCatalan              Tag = Tag{lang: _ca}                //  ca\n\tCzech                Tag = Tag{lang: _cs}                //  cs\n\tDanish               Tag = Tag{lang: _da}                //  da\n\tGerman               Tag = Tag{lang: _de}                //  de\n\tGreek                Tag = Tag{lang: _el}                //  el\n\tEnglish              Tag = Tag{lang: _en}                //  en\n\tAmericanEnglish      Tag = Tag{lang: _en, region: _US}   //  en-US\n\tBritishEnglish       Tag = Tag{lang: _en, region: _GB}   //  en-GB\n\tSpanish              Tag = Tag{lang: _es}                //  es\n\tEuropeanSpanish      Tag = Tag{lang: _es, region: _ES}   //  es-ES\n\tLatinAmericanSpanish Tag = Tag{lang: _es, region: _419}  //  es-419\n\tEstonian             Tag = Tag{lang: _et}                //  et\n\tPersian              Tag = Tag{lang: _fa}                //  fa\n\tFinnish              Tag = Tag{lang: _fi}                //  fi\n\tFilipino             Tag = Tag{lang: _fil}               //  fil\n\tFrench               Tag = Tag{lang: _fr}                //  fr\n\tCanadianFrench       Tag = Tag{lang: _fr, region: _CA}   //  fr-CA\n\tGujarati             Tag = Tag{lang: _gu}                //  gu\n\tHebrew               Tag = Tag{lang: _he}                //  he\n\tHindi                Tag = Tag{lang: _hi}                //  hi\n\tCroatian             Tag = Tag{lang: _hr}                //  hr\n\tHungarian            Tag = Tag{lang: _hu}                //  hu\n\tArmenian             Tag = Tag{lang: _hy}                //  hy\n\tIndonesian           Tag = Tag{lang: _id}                //  id\n\tIcelandic            Tag = Tag{lang: _is}                //  is\n\tItalian              Tag = Tag{lang: _it}                //  it\n\tJapanese             Tag = Tag{lang: _ja}                //  ja\n\tGeorgian             Tag = Tag{lang: _ka}                //  ka\n\tKazakh               Tag = Tag{lang: _kk}                //  kk\n\tKhmer                Tag = Tag{lang: _km}                //  km\n\tKannada              Tag = Tag{lang: _kn}                //  kn\n\tKorean               Tag = Tag{lang: _ko}                //  ko\n\tKirghiz              Tag = Tag{lang: _ky}                //  ky\n\tLao                  Tag = Tag{lang: _lo}                //  lo\n\tLithuanian           Tag = Tag{lang: _lt}                //  lt\n\tLatvian              Tag = Tag{lang: _lv}                //  lv\n\tMacedonian           Tag = Tag{lang: _mk}                //  mk\n\tMalayalam            Tag = Tag{lang: _ml}                //  ml\n\tMongolian            Tag = Tag{lang: _mn}                //  mn\n\tMarathi              Tag = Tag{lang: _mr}                //  mr\n\tMalay                Tag = Tag{lang: _ms}                //  ms\n\tBurmese              Tag = Tag{lang: _my}                //  my\n\tNepali               Tag = Tag{lang: _ne}                //  ne\n\tDutch                Tag = Tag{lang: _nl}                //  nl\n\tNorwegian            Tag = Tag{lang: _no}                //  no\n\tPunjabi              Tag = Tag{lang: _pa}                //  pa\n\tPolish               Tag = Tag{lang: _pl}                //  pl\n\tPortuguese           Tag = Tag{lang: _pt}                //  pt\n\tBrazilianPortuguese  Tag = Tag{lang: _pt, region: _BR}   //  pt-BR\n\tEuropeanPortuguese   Tag = Tag{lang: _pt, region: _PT}   //  pt-PT\n\tRomanian             Tag = Tag{lang: _ro}                //  ro\n\tRussian              Tag = Tag{lang: _ru}                //  ru\n\tSinhala              Tag = Tag{lang: _si}                //  si\n\tSlovak               Tag = Tag{lang: _sk}                //  sk\n\tSlovenian            Tag = Tag{lang: _sl}                //  sl\n\tAlbanian             Tag = Tag{lang: _sq}                //  sq\n\tSerbian              Tag = Tag{lang: _sr}                //  sr\n\tSerbianLatin         Tag = Tag{lang: _sr, script: _Latn} //  sr-Latn\n\tSwedish              Tag = Tag{lang: _sv}                //  sv\n\tSwahili              Tag = Tag{lang: _sw}                //  sw\n\tTamil                Tag = Tag{lang: _ta}                //  ta\n\tTelugu               Tag = Tag{lang: _te}                //  te\n\tThai                 Tag = Tag{lang: _th}                //  th\n\tTurkish              Tag = Tag{lang: _tr}                //  tr\n\tUkrainian            Tag = Tag{lang: _uk}                //  uk\n\tUrdu                 Tag = Tag{lang: _ur}                //  ur\n\tUzbek                Tag = Tag{lang: _uz}                //  uz\n\tVietnamese           Tag = Tag{lang: _vi}                //  vi\n\tChinese              Tag = Tag{lang: _zh}                //  zh\n\tSimplifiedChinese    Tag = Tag{lang: _zh, script: _Hans} //  zh-Hans\n\tTraditionalChinese   Tag = Tag{lang: _zh, script: _Hant} //  zh-Hant\n\tZulu                 Tag = Tag{lang: _zu}                //  zu\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/secure/bidirule/bidirule.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package bidirule implements the Bidi Rule defined by RFC 5893.\n//\n// This package is under development. The API may change without notice and\n// without preserving backward compatibility.\npackage bidirule\n\nimport (\n\t\"errors\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n\t\"golang.org/x/text/unicode/bidi\"\n)\n\n// This file contains an implementation of RFC 5893: Right-to-Left Scripts for\n// Internationalized Domain Names for Applications (IDNA)\n//\n// A label is an individual component of a domain name.  Labels are usually\n// shown separated by dots; for example, the domain name \"www.example.com\" is\n// composed of three labels: \"www\", \"example\", and \"com\".\n//\n// An RTL label is a label that contains at least one character of class R, AL,\n// or AN. An LTR label is any label that is not an RTL label.\n//\n// A \"Bidi domain name\" is a domain name that contains at least one RTL label.\n//\n//  The following guarantees can be made based on the above:\n//\n//  o  In a domain name consisting of only labels that satisfy the rule,\n//     the requirements of Section 3 are satisfied.  Note that even LTR\n//     labels and pure ASCII labels have to be tested.\n//\n//  o  In a domain name consisting of only LDH labels (as defined in the\n//     Definitions document [RFC5890]) and labels that satisfy the rule,\n//     the requirements of Section 3 are satisfied as long as a label\n//     that starts with an ASCII digit does not come after a\n//     right-to-left label.\n//\n//  No guarantee is given for other combinations.\n\n// ErrInvalid indicates a label is invalid according to the Bidi Rule.\nvar ErrInvalid = errors.New(\"bidirule: failed Bidi Rule\")\n\ntype ruleState uint8\n\nconst (\n\truleInitial ruleState = iota\n\truleLTR\n\truleLTRFinal\n\truleRTL\n\truleRTLFinal\n\truleInvalid\n)\n\ntype ruleTransition struct {\n\tnext ruleState\n\tmask uint16\n}\n\nvar transitions = [...][2]ruleTransition{\n\t// [2.1] The first character must be a character with Bidi property L, R, or\n\t// AL. If it has the R or AL property, it is an RTL label; if it has the L\n\t// property, it is an LTR label.\n\truleInitial: {\n\t\t{ruleLTRFinal, 1 << bidi.L},\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL},\n\t},\n\truleRTL: {\n\t\t// [2.3] In an RTL label, the end of the label must be a character with\n\t\t// Bidi property R, AL, EN, or AN, followed by zero or more characters\n\t\t// with Bidi property NSM.\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN},\n\n\t\t// [2.2] In an RTL label, only characters with the Bidi properties R,\n\t\t// AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.3]\n\t\t{ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},\n\t},\n\truleRTLFinal: {\n\t\t// [2.3] In an RTL label, the end of the label must be a character with\n\t\t// Bidi property R, AL, EN, or AN, followed by zero or more characters\n\t\t// with Bidi property NSM.\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN | 1<<bidi.NSM},\n\n\t\t// [2.2] In an RTL label, only characters with the Bidi properties R,\n\t\t// AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.3] and NSM.\n\t\t{ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},\n\t},\n\truleLTR: {\n\t\t// [2.6] In an LTR label, the end of the label must be a character with\n\t\t// Bidi property L or EN, followed by zero or more characters with Bidi\n\t\t// property NSM.\n\t\t{ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN},\n\n\t\t// [2.5] In an LTR label, only characters with the Bidi properties L,\n\t\t// EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.6].\n\t\t{ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},\n\t},\n\truleLTRFinal: {\n\t\t// [2.6] In an LTR label, the end of the label must be a character with\n\t\t// Bidi property L or EN, followed by zero or more characters with Bidi\n\t\t// property NSM.\n\t\t{ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN | 1<<bidi.NSM},\n\n\t\t// [2.5] In an LTR label, only characters with the Bidi properties L,\n\t\t// EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.6].\n\t\t{ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},\n\t},\n\truleInvalid: {\n\t\t{ruleInvalid, 0},\n\t\t{ruleInvalid, 0},\n\t},\n}\n\n// [2.4] In an RTL label, if an EN is present, no AN may be present, and\n// vice versa.\nconst exclusiveRTL = uint16(1<<bidi.EN | 1<<bidi.AN)\n\n// From RFC 5893\n// An RTL label is a label that contains at least one character of type\n// R, AL, or AN.\n//\n// An LTR label is any label that is not an RTL label.\n\n// Direction reports the direction of the given label as defined by RFC 5893.\n// The Bidi Rule does not have to be applied to labels of the category\n// LeftToRight.\nfunc Direction(b []byte) bidi.Direction {\n\tfor i := 0; i < len(b); {\n\t\te, sz := bidi.Lookup(b[i:])\n\t\tif sz == 0 {\n\t\t\ti++\n\t\t}\n\t\tc := e.Class()\n\t\tif c == bidi.R || c == bidi.AL || c == bidi.AN {\n\t\t\treturn bidi.RightToLeft\n\t\t}\n\t\ti += sz\n\t}\n\treturn bidi.LeftToRight\n}\n\n// DirectionString reports the direction of the given label as defined by RFC\n// 5893. The Bidi Rule does not have to be applied to labels of the category\n// LeftToRight.\nfunc DirectionString(s string) bidi.Direction {\n\tfor i := 0; i < len(s); {\n\t\te, sz := bidi.LookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tc := e.Class()\n\t\tif c == bidi.R || c == bidi.AL || c == bidi.AN {\n\t\t\treturn bidi.RightToLeft\n\t\t}\n\t\ti += sz\n\t}\n\treturn bidi.LeftToRight\n}\n\n// Valid reports whether b conforms to the BiDi rule.\nfunc Valid(b []byte) bool {\n\tvar t Transformer\n\tif n, ok := t.advance(b); !ok || n < len(b) {\n\t\treturn false\n\t}\n\treturn t.isFinal()\n}\n\n// ValidString reports whether s conforms to the BiDi rule.\nfunc ValidString(s string) bool {\n\tvar t Transformer\n\tif n, ok := t.advanceString(s); !ok || n < len(s) {\n\t\treturn false\n\t}\n\treturn t.isFinal()\n}\n\n// New returns a Transformer that verifies that input adheres to the Bidi Rule.\nfunc New() *Transformer {\n\treturn &Transformer{}\n}\n\n// Transformer implements transform.Transform.\ntype Transformer struct {\n\tstate  ruleState\n\thasRTL bool\n\tseen   uint16\n}\n\n// A rule can only be violated for \"Bidi Domain names\", meaning if one of the\n// following categories has been observed.\nfunc (t *Transformer) isRTL() bool {\n\tconst isRTL = 1<<bidi.R | 1<<bidi.AL | 1<<bidi.AN\n\treturn t.seen&isRTL != 0\n}\n\n// Reset implements transform.Transformer.\nfunc (t *Transformer) Reset() { *t = Transformer{} }\n\n// Transform implements transform.Transformer. This Transformer has state and\n// needs to be reset between uses.\nfunc (t *Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif len(dst) < len(src) {\n\t\tsrc = src[:len(dst)]\n\t\tatEOF = false\n\t\terr = transform.ErrShortDst\n\t}\n\tn, err1 := t.Span(src, atEOF)\n\tcopy(dst, src[:n])\n\tif err == nil || err1 != nil && err1 != transform.ErrShortSrc {\n\t\terr = err1\n\t}\n\treturn n, n, err\n}\n\n// Span returns the first n bytes of src that conform to the Bidi rule.\nfunc (t *Transformer) Span(src []byte, atEOF bool) (n int, err error) {\n\tif t.state == ruleInvalid && t.isRTL() {\n\t\treturn 0, ErrInvalid\n\t}\n\tn, ok := t.advance(src)\n\tswitch {\n\tcase !ok:\n\t\terr = ErrInvalid\n\tcase n < len(src):\n\t\tif !atEOF {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\t\terr = ErrInvalid\n\tcase !t.isFinal():\n\t\terr = ErrInvalid\n\t}\n\treturn n, err\n}\n\n// Precomputing the ASCII values decreases running time for the ASCII fast path\n// by about 30%.\nvar asciiTable [128]bidi.Properties\n\nfunc init() {\n\tfor i := range asciiTable {\n\t\tp, _ := bidi.LookupRune(rune(i))\n\t\tasciiTable[i] = p\n\t}\n}\n\nfunc (t *Transformer) advance(s []byte) (n int, ok bool) {\n\tvar e bidi.Properties\n\tvar sz int\n\tfor n < len(s) {\n\t\tif s[n] < utf8.RuneSelf {\n\t\t\te, sz = asciiTable[s[n]], 1\n\t\t} else {\n\t\t\te, sz = bidi.Lookup(s[n:])\n\t\t\tif sz <= 1 {\n\t\t\t\tif sz == 1 {\n\t\t\t\t\t// We always consider invalid UTF-8 to be invalid, even if\n\t\t\t\t\t// the string has not yet been determined to be RTL.\n\t\t\t\t\t// TODO: is this correct?\n\t\t\t\t\treturn n, false\n\t\t\t\t}\n\t\t\t\treturn n, true // incomplete UTF-8 encoding\n\t\t\t}\n\t\t}\n\t\t// TODO: using CompactClass would result in noticeable speedup.\n\t\t// See unicode/bidi/prop.go:Properties.CompactClass.\n\t\tc := uint16(1 << e.Class())\n\t\tt.seen |= c\n\t\tif t.seen&exclusiveRTL == exclusiveRTL {\n\t\t\tt.state = ruleInvalid\n\t\t\treturn n, false\n\t\t}\n\t\tswitch tr := transitions[t.state]; {\n\t\tcase tr[0].mask&c != 0:\n\t\t\tt.state = tr[0].next\n\t\tcase tr[1].mask&c != 0:\n\t\t\tt.state = tr[1].next\n\t\tdefault:\n\t\t\tt.state = ruleInvalid\n\t\t\tif t.isRTL() {\n\t\t\t\treturn n, false\n\t\t\t}\n\t\t}\n\t\tn += sz\n\t}\n\treturn n, true\n}\n\nfunc (t *Transformer) advanceString(s string) (n int, ok bool) {\n\tvar e bidi.Properties\n\tvar sz int\n\tfor n < len(s) {\n\t\tif s[n] < utf8.RuneSelf {\n\t\t\te, sz = asciiTable[s[n]], 1\n\t\t} else {\n\t\t\te, sz = bidi.LookupString(s[n:])\n\t\t\tif sz <= 1 {\n\t\t\t\tif sz == 1 {\n\t\t\t\t\treturn n, false // invalid UTF-8\n\t\t\t\t}\n\t\t\t\treturn n, true // incomplete UTF-8 encoding\n\t\t\t}\n\t\t}\n\t\t// TODO: using CompactClass results in noticeable speedup.\n\t\t// See unicode/bidi/prop.go:Properties.CompactClass.\n\t\tc := uint16(1 << e.Class())\n\t\tt.seen |= c\n\t\tif t.seen&exclusiveRTL == exclusiveRTL {\n\t\t\tt.state = ruleInvalid\n\t\t\treturn n, false\n\t\t}\n\t\tswitch tr := transitions[t.state]; {\n\t\tcase tr[0].mask&c != 0:\n\t\t\tt.state = tr[0].next\n\t\tcase tr[1].mask&c != 0:\n\t\t\tt.state = tr[1].next\n\t\tdefault:\n\t\t\tt.state = ruleInvalid\n\t\t\tif t.isRTL() {\n\t\t\t\treturn n, false\n\t\t\t}\n\t\t}\n\t\tn += sz\n\t}\n\treturn n, true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build go1.10\n\npackage bidirule\n\nfunc (t *Transformer) isFinal() bool {\n\treturn t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !go1.10\n\npackage bidirule\n\nfunc (t *Transformer) isFinal() bool {\n\tif !t.isRTL() {\n\t\treturn true\n\t}\n\treturn t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/transform/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package transform provides reader and writer wrappers that transform the\n// bytes passing through as well as various transformations. Example\n// transformations provided by other packages include normalization and\n// conversion between character sets.\npackage transform // import \"golang.org/x/text/transform\"\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"unicode/utf8\"\n)\n\nvar (\n\t// ErrShortDst means that the destination buffer was too short to\n\t// receive all of the transformed bytes.\n\tErrShortDst = errors.New(\"transform: short destination buffer\")\n\n\t// ErrShortSrc means that the source buffer has insufficient data to\n\t// complete the transformation.\n\tErrShortSrc = errors.New(\"transform: short source buffer\")\n\n\t// ErrEndOfSpan means that the input and output (the transformed input)\n\t// are not identical.\n\tErrEndOfSpan = errors.New(\"transform: input and output are not identical\")\n\n\t// errInconsistentByteCount means that Transform returned success (nil\n\t// error) but also returned nSrc inconsistent with the src argument.\n\terrInconsistentByteCount = errors.New(\"transform: inconsistent byte count returned\")\n\n\t// errShortInternal means that an internal buffer is not large enough\n\t// to make progress and the Transform operation must be aborted.\n\terrShortInternal = errors.New(\"transform: short internal buffer\")\n)\n\n// Transformer transforms bytes.\ntype Transformer interface {\n\t// Transform writes to dst the transformed bytes read from src, and\n\t// returns the number of dst bytes written and src bytes read. The\n\t// atEOF argument tells whether src represents the last bytes of the\n\t// input.\n\t//\n\t// Callers should always process the nDst bytes produced and account\n\t// for the nSrc bytes consumed before considering the error err.\n\t//\n\t// A nil error means that all of the transformed bytes (whether freshly\n\t// transformed from src or left over from previous Transform calls)\n\t// were written to dst. A nil error can be returned regardless of\n\t// whether atEOF is true. If err is nil then nSrc must equal len(src);\n\t// the converse is not necessarily true.\n\t//\n\t// ErrShortDst means that dst was too short to receive all of the\n\t// transformed bytes. ErrShortSrc means that src had insufficient data\n\t// to complete the transformation. If both conditions apply, then\n\t// either error may be returned. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\tTransform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)\n\n\t// Reset resets the state and allows a Transformer to be reused.\n\tReset()\n}\n\n// SpanningTransformer extends the Transformer interface with a Span method\n// that determines how much of the input already conforms to the Transformer.\ntype SpanningTransformer interface {\n\tTransformer\n\n\t// Span returns a position in src such that transforming src[:n] results in\n\t// identical output src[:n] for these bytes. It does not necessarily return\n\t// the largest such n. The atEOF argument tells whether src represents the\n\t// last bytes of the input.\n\t//\n\t// Callers should always account for the n bytes consumed before\n\t// considering the error err.\n\t//\n\t// A nil error means that all input bytes are known to be identical to the\n\t// output produced by the Transformer. A nil error can be be returned\n\t// regardless of whether atEOF is true. If err is nil, then then n must\n\t// equal len(src); the converse is not necessarily true.\n\t//\n\t// ErrEndOfSpan means that the Transformer output may differ from the\n\t// input after n bytes. Note that n may be len(src), meaning that the output\n\t// would contain additional bytes after otherwise identical output.\n\t// ErrShortSrc means that src had insufficient data to determine whether the\n\t// remaining bytes would change. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\t//\n\t// Calling Span can modify the Transformer state as a side effect. In\n\t// effect, it does the transformation just as calling Transform would, only\n\t// without copying to a destination buffer and only up to a point it can\n\t// determine the input and output bytes are the same. This is obviously more\n\t// limited than calling Transform, but can be more efficient in terms of\n\t// copying and allocating buffers. Calls to Span and Transform may be\n\t// interleaved.\n\tSpan(src []byte, atEOF bool) (n int, err error)\n}\n\n// NopResetter can be embedded by implementations of Transformer to add a nop\n// Reset method.\ntype NopResetter struct{}\n\n// Reset implements the Reset method of the Transformer interface.\nfunc (NopResetter) Reset() {}\n\n// Reader wraps another io.Reader by transforming the bytes read.\ntype Reader struct {\n\tr   io.Reader\n\tt   Transformer\n\terr error\n\n\t// dst[dst0:dst1] contains bytes that have been transformed by t but\n\t// not yet copied out via Read.\n\tdst        []byte\n\tdst0, dst1 int\n\n\t// src[src0:src1] contains bytes that have been read from r but not\n\t// yet transformed through t.\n\tsrc        []byte\n\tsrc0, src1 int\n\n\t// transformComplete is whether the transformation is complete,\n\t// regardless of whether or not it was successful.\n\ttransformComplete bool\n}\n\nconst defaultBufSize = 4096\n\n// NewReader returns a new Reader that wraps r by transforming the bytes read\n// via t. It calls Reset on t.\nfunc NewReader(r io.Reader, t Transformer) *Reader {\n\tt.Reset()\n\treturn &Reader{\n\t\tr:   r,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Read implements the io.Reader interface.\nfunc (r *Reader) Read(p []byte) (int, error) {\n\tn, err := 0, error(nil)\n\tfor {\n\t\t// Copy out any transformed bytes and return the final error if we are done.\n\t\tif r.dst0 != r.dst1 {\n\t\t\tn = copy(p, r.dst[r.dst0:r.dst1])\n\t\t\tr.dst0 += n\n\t\t\tif r.dst0 == r.dst1 && r.transformComplete {\n\t\t\t\treturn n, r.err\n\t\t\t}\n\t\t\treturn n, nil\n\t\t} else if r.transformComplete {\n\t\t\treturn 0, r.err\n\t\t}\n\n\t\t// Try to transform some source bytes, or to flush the transformer if we\n\t\t// are out of source bytes. We do this even if r.r.Read returned an error.\n\t\t// As the io.Reader documentation says, \"process the n > 0 bytes returned\n\t\t// before considering the error\".\n\t\tif r.src0 != r.src1 || r.err != nil {\n\t\t\tr.dst0 = 0\n\t\t\tr.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF)\n\t\t\tr.src0 += n\n\n\t\t\tswitch {\n\t\t\tcase err == nil:\n\t\t\t\tif r.src0 != r.src1 {\n\t\t\t\t\tr.err = errInconsistentByteCount\n\t\t\t\t}\n\t\t\t\t// The Transform call was successful; we are complete if we\n\t\t\t\t// cannot read more bytes into src.\n\t\t\t\tr.transformComplete = r.err != nil\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortDst && (r.dst1 != 0 || n != 0):\n\t\t\t\t// Make room in dst by copying out, and try again.\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil:\n\t\t\t\t// Read more bytes into src via the code below, and try again.\n\t\t\tdefault:\n\t\t\t\tr.transformComplete = true\n\t\t\t\t// The reader error (r.err) takes precedence over the\n\t\t\t\t// transformer error (err) unless r.err is nil or io.EOF.\n\t\t\t\tif r.err == nil || r.err == io.EOF {\n\t\t\t\t\tr.err = err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Move any untransformed source bytes to the start of the buffer\n\t\t// and read more bytes.\n\t\tif r.src0 != 0 {\n\t\t\tr.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1])\n\t\t}\n\t\tn, r.err = r.r.Read(r.src[r.src1:])\n\t\tr.src1 += n\n\t}\n}\n\n// TODO: implement ReadByte (and ReadRune??).\n\n// Writer wraps another io.Writer by transforming the bytes read.\n// The user needs to call Close to flush unwritten bytes that may\n// be buffered.\ntype Writer struct {\n\tw   io.Writer\n\tt   Transformer\n\tdst []byte\n\n\t// src[:n] contains bytes that have not yet passed through t.\n\tsrc []byte\n\tn   int\n}\n\n// NewWriter returns a new Writer that wraps w by transforming the bytes written\n// via t. It calls Reset on t.\nfunc NewWriter(w io.Writer, t Transformer) *Writer {\n\tt.Reset()\n\treturn &Writer{\n\t\tw:   w,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Write implements the io.Writer interface. If there are not enough\n// bytes available to complete a Transform, the bytes will be buffered\n// for the next write. Call Close to convert the remaining bytes.\nfunc (w *Writer) Write(data []byte) (n int, err error) {\n\tsrc := data\n\tif w.n > 0 {\n\t\t// Append bytes from data to the last remainder.\n\t\t// TODO: limit the amount copied on first try.\n\t\tn = copy(w.src[w.n:], data)\n\t\tw.n += n\n\t\tsrc = w.src[:w.n]\n\t}\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, false)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn n, werr\n\t\t}\n\t\tsrc = src[nSrc:]\n\t\tif w.n == 0 {\n\t\t\tn += nSrc\n\t\t} else if len(src) <= n {\n\t\t\t// Enough bytes from w.src have been consumed. We make src point\n\t\t\t// to data instead to reduce the copying.\n\t\t\tw.n = 0\n\t\t\tn -= len(src)\n\t\t\tsrc = data[n:]\n\t\t\tif n < len(data) && (err == nil || err == ErrShortSrc) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tswitch err {\n\t\tcase ErrShortDst:\n\t\t\t// This error is okay as long as we are making progress.\n\t\t\tif nDst > 0 || nSrc > 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase ErrShortSrc:\n\t\t\tif len(src) < len(w.src) {\n\t\t\t\tm := copy(w.src, src)\n\t\t\t\t// If w.n > 0, bytes from data were already copied to w.src and n\n\t\t\t\t// was already set to the number of bytes consumed.\n\t\t\t\tif w.n == 0 {\n\t\t\t\t\tn += m\n\t\t\t\t}\n\t\t\t\tw.n = m\n\t\t\t\terr = nil\n\t\t\t} else if nDst > 0 || nSrc > 0 {\n\t\t\t\t// Not enough buffer to store the remainder. Keep processing as\n\t\t\t\t// long as there is progress. Without this case, transforms that\n\t\t\t\t// require a lookahead larger than the buffer may result in an\n\t\t\t\t// error. This is not something one may expect to be common in\n\t\t\t\t// practice, but it may occur when buffers are set to small\n\t\t\t\t// sizes during testing.\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase nil:\n\t\t\tif w.n > 0 {\n\t\t\t\terr = errInconsistentByteCount\n\t\t\t}\n\t\t}\n\t\treturn n, err\n\t}\n}\n\n// Close implements the io.Closer interface.\nfunc (w *Writer) Close() error {\n\tsrc := w.src[:w.n]\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, true)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn werr\n\t\t}\n\t\tif err != ErrShortDst {\n\t\t\treturn err\n\t\t}\n\t\tsrc = src[nSrc:]\n\t}\n}\n\ntype nop struct{ NopResetter }\n\nfunc (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tn := copy(dst, src)\n\tif n < len(src) {\n\t\terr = ErrShortDst\n\t}\n\treturn n, n, err\n}\n\nfunc (nop) Span(src []byte, atEOF bool) (n int, err error) {\n\treturn len(src), nil\n}\n\ntype discard struct{ NopResetter }\n\nfunc (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\treturn 0, len(src), nil\n}\n\nvar (\n\t// Discard is a Transformer for which all Transform calls succeed\n\t// by consuming all bytes and writing nothing.\n\tDiscard Transformer = discard{}\n\n\t// Nop is a SpanningTransformer that copies src to dst.\n\tNop SpanningTransformer = nop{}\n)\n\n// chain is a sequence of links. A chain with N Transformers has N+1 links and\n// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst\n// buffers given to chain.Transform and the middle N-1 buffers are intermediate\n// buffers owned by the chain. The i'th link transforms bytes from the i'th\n// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer\n// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N).\ntype chain struct {\n\tlink []link\n\terr  error\n\t// errStart is the index at which the error occurred plus 1. Processing\n\t// errStart at this level at the next call to Transform. As long as\n\t// errStart > 0, chain will not consume any more source bytes.\n\terrStart int\n}\n\nfunc (c *chain) fatalError(errIndex int, err error) {\n\tif i := errIndex + 1; i > c.errStart {\n\t\tc.errStart = i\n\t\tc.err = err\n\t}\n}\n\ntype link struct {\n\tt Transformer\n\t// b[p:n] holds the bytes to be transformed by t.\n\tb []byte\n\tp int\n\tn int\n}\n\nfunc (l *link) src() []byte {\n\treturn l.b[l.p:l.n]\n}\n\nfunc (l *link) dst() []byte {\n\treturn l.b[l.n:]\n}\n\n// Chain returns a Transformer that applies t in sequence.\nfunc Chain(t ...Transformer) Transformer {\n\tif len(t) == 0 {\n\t\treturn nop{}\n\t}\n\tc := &chain{link: make([]link, len(t)+1)}\n\tfor i, tt := range t {\n\t\tc.link[i].t = tt\n\t}\n\t// Allocate intermediate buffers.\n\tb := make([][defaultBufSize]byte, len(t)-1)\n\tfor i := range b {\n\t\tc.link[i+1].b = b[i][:]\n\t}\n\treturn c\n}\n\n// Reset resets the state of Chain. It calls Reset on all the Transformers.\nfunc (c *chain) Reset() {\n\tfor i, l := range c.link {\n\t\tif l.t != nil {\n\t\t\tl.t.Reset()\n\t\t}\n\t\tc.link[i].p, c.link[i].n = 0, 0\n\t}\n}\n\n// TODO: make chain use Span (is going to be fun to implement!)\n\n// Transform applies the transformers of c in sequence.\nfunc (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// Set up src and dst in the chain.\n\tsrcL := &c.link[0]\n\tdstL := &c.link[len(c.link)-1]\n\tsrcL.b, srcL.p, srcL.n = src, 0, len(src)\n\tdstL.b, dstL.n = dst, 0\n\tvar lastFull, needProgress bool // for detecting progress\n\n\t// i is the index of the next Transformer to apply, for i in [low, high].\n\t// low is the lowest index for which c.link[low] may still produce bytes.\n\t// high is the highest index for which c.link[high] has a Transformer.\n\t// The error returned by Transform determines whether to increase or\n\t// decrease i. We try to completely fill a buffer before converting it.\n\tfor low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; {\n\t\tin, out := &c.link[i], &c.link[i+1]\n\t\tnDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i)\n\t\tout.n += nDst\n\t\tin.p += nSrc\n\t\tif i > 0 && in.p == in.n {\n\t\t\tin.p, in.n = 0, 0\n\t\t}\n\t\tneedProgress, lastFull = lastFull, false\n\t\tswitch err0 {\n\t\tcase ErrShortDst:\n\t\t\t// Process the destination buffer next. Return if we are already\n\t\t\t// at the high index.\n\t\t\tif i == high {\n\t\t\t\treturn dstL.n, srcL.p, ErrShortDst\n\t\t\t}\n\t\t\tif out.n != 0 {\n\t\t\t\ti++\n\t\t\t\t// If the Transformer at the next index is not able to process any\n\t\t\t\t// source bytes there is nothing that can be done to make progress\n\t\t\t\t// and the bytes will remain unprocessed. lastFull is used to\n\t\t\t\t// detect this and break out of the loop with a fatal error.\n\t\t\t\tlastFull = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// The destination buffer was too small, but is completely empty.\n\t\t\t// Return a fatal error as this transformation can never complete.\n\t\t\tc.fatalError(i, errShortInternal)\n\t\tcase ErrShortSrc:\n\t\t\tif i == 0 {\n\t\t\t\t// Save ErrShortSrc in err. All other errors take precedence.\n\t\t\t\terr = ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Source bytes were depleted before filling up the destination buffer.\n\t\t\t// Verify we made some progress, move the remaining bytes to the errStart\n\t\t\t// and try to get more source bytes.\n\t\t\tif needProgress && nSrc == 0 || in.n-in.p == len(in.b) {\n\t\t\t\t// There were not enough source bytes to proceed while the source\n\t\t\t\t// buffer cannot hold any more bytes. Return a fatal error as this\n\t\t\t\t// transformation can never complete.\n\t\t\t\tc.fatalError(i, errShortInternal)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// in.b is an internal buffer and we can make progress.\n\t\t\tin.p, in.n = 0, copy(in.b, in.src())\n\t\t\tfallthrough\n\t\tcase nil:\n\t\t\t// if i == low, we have depleted the bytes at index i or any lower levels.\n\t\t\t// In that case we increase low and i. In all other cases we decrease i to\n\t\t\t// fetch more bytes before proceeding to the next index.\n\t\t\tif i > low {\n\t\t\t\ti--\n\t\t\t\tcontinue\n\t\t\t}\n\t\tdefault:\n\t\t\tc.fatalError(i, err0)\n\t\t}\n\t\t// Exhausted level low or fatal error: increase low and continue\n\t\t// to process the bytes accepted so far.\n\t\ti++\n\t\tlow = i\n\t}\n\n\t// If c.errStart > 0, this means we found a fatal error.  We will clear\n\t// all upstream buffers. At this point, no more progress can be made\n\t// downstream, as Transform would have bailed while handling ErrShortDst.\n\tif c.errStart > 0 {\n\t\tfor i := 1; i < c.errStart; i++ {\n\t\t\tc.link[i].p, c.link[i].n = 0, 0\n\t\t}\n\t\terr, c.errStart, c.err = c.err, 0, nil\n\t}\n\treturn dstL.n, srcL.p, err\n}\n\n// Deprecated: use runes.Remove instead.\nfunc RemoveFunc(f func(r rune) bool) Transformer {\n\treturn removeF(f)\n}\n\ntype removeF func(r rune) bool\n\nfunc (removeF) Reset() {}\n\n// Transform implements the Transformer interface.\nfunc (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor r, sz := rune(0), 0; len(src) > 0; src = src[sz:] {\n\n\t\tif r = rune(src[0]); r < utf8.RuneSelf {\n\t\t\tsz = 1\n\t\t} else {\n\t\t\tr, sz = utf8.DecodeRune(src)\n\n\t\t\tif sz == 1 {\n\t\t\t\t// Invalid rune.\n\t\t\t\tif !atEOF && !utf8.FullRune(src) {\n\t\t\t\t\terr = ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// We replace illegal bytes with RuneError. Not doing so might\n\t\t\t\t// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.\n\t\t\t\t// The resulting byte sequence may subsequently contain runes\n\t\t\t\t// for which t(r) is true that were passed unnoticed.\n\t\t\t\tif !t(r) {\n\t\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\t\terr = ErrShortDst\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tnDst += copy(dst[nDst:], \"\\uFFFD\")\n\t\t\t\t}\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif !t(r) {\n\t\t\tif nDst+sz > len(dst) {\n\t\t\t\terr = ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnDst += copy(dst[nDst:], src[:sz])\n\t\t}\n\t\tnSrc += sz\n\t}\n\treturn\n}\n\n// grow returns a new []byte that is longer than b, and copies the first n bytes\n// of b to the start of the new slice.\nfunc grow(b []byte, n int) []byte {\n\tm := len(b)\n\tif m <= 32 {\n\t\tm = 64\n\t} else if m <= 256 {\n\t\tm *= 2\n\t} else {\n\t\tm += m >> 1\n\t}\n\tbuf := make([]byte, m)\n\tcopy(buf, b[:n])\n\treturn buf\n}\n\nconst initialBufSize = 128\n\n// String returns a string with the result of converting s[:n] using t, where\n// n <= len(s). If err == nil, n will be len(s). It calls Reset on t.\nfunc String(t Transformer, s string) (result string, n int, err error) {\n\tt.Reset()\n\tif s == \"\" {\n\t\t// Fast path for the common case for empty input. Results in about a\n\t\t// 86% reduction of running time for BenchmarkStringLowerEmpty.\n\t\tif _, _, err := t.Transform(nil, nil, true); err == nil {\n\t\t\treturn \"\", 0, nil\n\t\t}\n\t}\n\n\t// Allocate only once. Note that both dst and src escape when passed to\n\t// Transform.\n\tbuf := [2 * initialBufSize]byte{}\n\tdst := buf[:initialBufSize:initialBufSize]\n\tsrc := buf[initialBufSize : 2*initialBufSize]\n\n\t// The input string s is transformed in multiple chunks (starting with a\n\t// chunk size of initialBufSize). nDst and nSrc are per-chunk (or\n\t// per-Transform-call) indexes, pDst and pSrc are overall indexes.\n\tnDst, nSrc := 0, 0\n\tpDst, pSrc := 0, 0\n\n\t// pPrefix is the length of a common prefix: the first pPrefix bytes of the\n\t// result will equal the first pPrefix bytes of s. It is not guaranteed to\n\t// be the largest such value, but if pPrefix, len(result) and len(s) are\n\t// all equal after the final transform (i.e. calling Transform with atEOF\n\t// being true returned nil error) then we don't need to allocate a new\n\t// result string.\n\tpPrefix := 0\n\tfor {\n\t\t// Invariant: pDst == pPrefix && pSrc == pPrefix.\n\n\t\tn := copy(src, s[pSrc:])\n\t\tnDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s))\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// TODO:  let transformers implement an optional Spanner interface, akin\n\t\t// to norm's QuickSpan. This would even allow us to avoid any allocation.\n\t\tif !bytes.Equal(dst[:nDst], src[:nSrc]) {\n\t\t\tbreak\n\t\t}\n\t\tpPrefix = pSrc\n\t\tif err == ErrShortDst {\n\t\t\t// A buffer can only be short if a transformer modifies its input.\n\t\t\tbreak\n\t\t} else if err == ErrShortSrc {\n\t\t\tif nSrc == 0 {\n\t\t\t\t// No progress was made.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Equal so far and !atEOF, so continue checking.\n\t\t} else if err != nil || pPrefix == len(s) {\n\t\t\treturn string(s[:pPrefix]), pPrefix, err\n\t\t}\n\t}\n\t// Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc.\n\n\t// We have transformed the first pSrc bytes of the input s to become pDst\n\t// transformed bytes. Those transformed bytes are discontiguous: the first\n\t// pPrefix of them equal s[:pPrefix] and the last nDst of them equal\n\t// dst[:nDst]. We copy them around, into a new dst buffer if necessary, so\n\t// that they become one contiguous slice: dst[:pDst].\n\tif pPrefix != 0 {\n\t\tnewDst := dst\n\t\tif pDst > len(newDst) {\n\t\t\tnewDst = make([]byte, len(s)+nDst-nSrc)\n\t\t}\n\t\tcopy(newDst[pPrefix:pDst], dst[:nDst])\n\t\tcopy(newDst[:pPrefix], s[:pPrefix])\n\t\tdst = newDst\n\t}\n\n\t// Prevent duplicate Transform calls with atEOF being true at the end of\n\t// the input. Also return if we have an unrecoverable error.\n\tif (err == nil && pSrc == len(s)) ||\n\t\t(err != nil && err != ErrShortDst && err != ErrShortSrc) {\n\t\treturn string(dst[:pDst]), pSrc, err\n\t}\n\n\t// Transform the remaining input, growing dst and src buffers as necessary.\n\tfor {\n\t\tn := copy(src, s[pSrc:])\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[:n], pSrc+n == len(s))\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// If we got ErrShortDst or ErrShortSrc, do not grow as long as we can\n\t\t// make progress. This may avoid excessive allocations.\n\t\tif err == ErrShortDst {\n\t\t\tif nDst == 0 {\n\t\t\t\tdst = grow(dst, pDst)\n\t\t\t}\n\t\t} else if err == ErrShortSrc {\n\t\t\tif nSrc == 0 {\n\t\t\t\tsrc = grow(src, 0)\n\t\t\t}\n\t\t} else if err != nil || pSrc == len(s) {\n\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t}\n\t}\n}\n\n// Bytes returns a new byte slice with the result of converting b[:n] using t,\n// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t.\nfunc Bytes(t Transformer, b []byte) (result []byte, n int, err error) {\n\treturn doAppend(t, 0, make([]byte, len(b)), b)\n}\n\n// Append appends the result of converting src[:n] using t to dst, where\n// n <= len(src), If err == nil, n will be len(src). It calls Reset on t.\nfunc Append(t Transformer, dst, src []byte) (result []byte, n int, err error) {\n\tif len(dst) == cap(dst) {\n\t\tn := len(src) + len(dst) // It is okay for this to be 0.\n\t\tb := make([]byte, n)\n\t\tdst = b[:copy(b, dst)]\n\t}\n\treturn doAppend(t, len(dst), dst[:cap(dst)], src)\n}\n\nfunc doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) {\n\tt.Reset()\n\tpSrc := 0\n\tfor {\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\t\tif err != ErrShortDst {\n\t\t\treturn dst[:pDst], pSrc, err\n\t\t}\n\n\t\t// Grow the destination buffer, but do not grow as long as we can make\n\t\t// progress. This may avoid excessive allocations.\n\t\tif nDst == 0 {\n\t\t\tdst = grow(dst, pDst)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/bidi.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go gen_trieval.go gen_ranges.go\n\n// Package bidi contains functionality for bidirectional text support.\n//\n// See http://www.unicode.org/reports/tr9.\n//\n// NOTE: UNDER CONSTRUCTION. This API may change in backwards incompatible ways\n// and without notice.\npackage bidi // import \"golang.org/x/text/unicode/bidi\"\n\n// TODO:\n// The following functionality would not be hard to implement, but hinges on\n// the definition of a Segmenter interface. For now this is up to the user.\n// - Iterate over paragraphs\n// - Segmenter to iterate over runs directly from a given text.\n// Also:\n// - Transformer for reordering?\n// - Transformer (validator, really) for Bidi Rule.\n\n// This API tries to avoid dealing with embedding levels for now. Under the hood\n// these will be computed, but the question is to which extent the user should\n// know they exist. We should at some point allow the user to specify an\n// embedding hierarchy, though.\n\n// A Direction indicates the overall flow of text.\ntype Direction int\n\nconst (\n\t// LeftToRight indicates the text contains no right-to-left characters and\n\t// that either there are some left-to-right characters or the option\n\t// DefaultDirection(LeftToRight) was passed.\n\tLeftToRight Direction = iota\n\n\t// RightToLeft indicates the text contains no left-to-right characters and\n\t// that either there are some right-to-left characters or the option\n\t// DefaultDirection(RightToLeft) was passed.\n\tRightToLeft\n\n\t// Mixed indicates text contains both left-to-right and right-to-left\n\t// characters.\n\tMixed\n\n\t// Neutral means that text contains no left-to-right and right-to-left\n\t// characters and that no default direction has been set.\n\tNeutral\n)\n\ntype options struct{}\n\n// An Option is an option for Bidi processing.\ntype Option func(*options)\n\n// ICU allows the user to define embedding levels. This may be used, for example,\n// to use hierarchical structure of markup languages to define embeddings.\n// The following option may be a way to expose this functionality in this API.\n// // LevelFunc sets a function that associates nesting levels with the given text.\n// // The levels function will be called with monotonically increasing values for p.\n// func LevelFunc(levels func(p int) int) Option {\n// \tpanic(\"unimplemented\")\n// }\n\n// DefaultDirection sets the default direction for a Paragraph. The direction is\n// overridden if the text contains directional characters.\nfunc DefaultDirection(d Direction) Option {\n\tpanic(\"unimplemented\")\n}\n\n// A Paragraph holds a single Paragraph for Bidi processing.\ntype Paragraph struct {\n\t// buffers\n}\n\n// SetBytes configures p for the given paragraph text. It replaces text\n// previously set by SetBytes or SetString. If b contains a paragraph separator\n// it will only process the first paragraph and report the number of bytes\n// consumed from b including this separator. Error may be non-nil if options are\n// given.\nfunc (p *Paragraph) SetBytes(b []byte, opts ...Option) (n int, err error) {\n\tpanic(\"unimplemented\")\n}\n\n// SetString configures p for the given paragraph text. It replaces text\n// previously set by SetBytes or SetString. If b contains a paragraph separator\n// it will only process the first paragraph and report the number of bytes\n// consumed from b including this separator. Error may be non-nil if options are\n// given.\nfunc (p *Paragraph) SetString(s string, opts ...Option) (n int, err error) {\n\tpanic(\"unimplemented\")\n}\n\n// IsLeftToRight reports whether the principle direction of rendering for this\n// paragraphs is left-to-right. If this returns false, the principle direction\n// of rendering is right-to-left.\nfunc (p *Paragraph) IsLeftToRight() bool {\n\tpanic(\"unimplemented\")\n}\n\n// Direction returns the direction of the text of this paragraph.\n//\n// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral.\nfunc (p *Paragraph) Direction() Direction {\n\tpanic(\"unimplemented\")\n}\n\n// RunAt reports the Run at the given position of the input text.\n//\n// This method can be used for computing line breaks on paragraphs.\nfunc (p *Paragraph) RunAt(pos int) Run {\n\tpanic(\"unimplemented\")\n}\n\n// Order computes the visual ordering of all the runs in a Paragraph.\nfunc (p *Paragraph) Order() (Ordering, error) {\n\tpanic(\"unimplemented\")\n}\n\n// Line computes the visual ordering of runs for a single line starting and\n// ending at the given positions in the original text.\nfunc (p *Paragraph) Line(start, end int) (Ordering, error) {\n\tpanic(\"unimplemented\")\n}\n\n// An Ordering holds the computed visual order of runs of a Paragraph. Calling\n// SetBytes or SetString on the originating Paragraph invalidates an Ordering.\n// The methods of an Ordering should only be called by one goroutine at a time.\ntype Ordering struct{}\n\n// Direction reports the directionality of the runs.\n//\n// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral.\nfunc (o *Ordering) Direction() Direction {\n\tpanic(\"unimplemented\")\n}\n\n// NumRuns returns the number of runs.\nfunc (o *Ordering) NumRuns() int {\n\tpanic(\"unimplemented\")\n}\n\n// Run returns the ith run within the ordering.\nfunc (o *Ordering) Run(i int) Run {\n\tpanic(\"unimplemented\")\n}\n\n// TODO: perhaps with options.\n// // Reorder creates a reader that reads the runes in visual order per character.\n// // Modifiers remain after the runes they modify.\n// func (l *Runs) Reorder() io.Reader {\n// \tpanic(\"unimplemented\")\n// }\n\n// A Run is a continuous sequence of characters of a single direction.\ntype Run struct {\n}\n\n// String returns the text of the run in its original order.\nfunc (r *Run) String() string {\n\tpanic(\"unimplemented\")\n}\n\n// Bytes returns the text of the run in its original order.\nfunc (r *Run) Bytes() []byte {\n\tpanic(\"unimplemented\")\n}\n\n// TODO: methods for\n// - Display order\n// - headers and footers\n// - bracket replacement.\n\n// Direction reports the direction of the run.\nfunc (r *Run) Direction() Direction {\n\tpanic(\"unimplemented\")\n}\n\n// Position of the Run within the text passed to SetBytes or SetString of the\n// originating Paragraph value.\nfunc (r *Run) Pos() (start, end int) {\n\tpanic(\"unimplemented\")\n}\n\n// AppendReverse reverses the order of characters of in, appends them to out,\n// and returns the result. Modifiers will still follow the runes they modify.\n// Brackets are replaced with their counterparts.\nfunc AppendReverse(out, in []byte) []byte {\n\tpanic(\"unimplemented\")\n}\n\n// ReverseString reverses the order of characters in s and returns a new string.\n// Modifiers will still follow the runes they modify. Brackets are replaced with\n// their counterparts.\nfunc ReverseString(s string) string {\n\tpanic(\"unimplemented\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/bracket.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport (\n\t\"container/list\"\n\t\"fmt\"\n\t\"sort\"\n)\n\n// This file contains a port of the reference implementation of the\n// Bidi Parentheses Algorithm:\n// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java\n//\n// The implementation in this file covers definitions BD14-BD16 and rule N0\n// of UAX#9.\n//\n// Some preprocessing is done for each rune before data is passed to this\n// algorithm:\n//  - opening and closing brackets are identified\n//  - a bracket pair type, like '(' and ')' is assigned a unique identifier that\n//    is identical for the opening and closing bracket. It is left to do these\n//    mappings.\n//  - The BPA algorithm requires that bracket characters that are canonical\n//    equivalents of each other be able to be substituted for each other.\n//    It is the responsibility of the caller to do this canonicalization.\n//\n// In implementing BD16, this implementation departs slightly from the \"logical\"\n// algorithm defined in UAX#9. In particular, the stack referenced there\n// supports operations that go beyond a \"basic\" stack. An equivalent\n// implementation based on a linked list is used here.\n\n// Bidi_Paired_Bracket_Type\n// BD14. An opening paired bracket is a character whose\n// Bidi_Paired_Bracket_Type property value is Open.\n//\n// BD15. A closing paired bracket is a character whose\n// Bidi_Paired_Bracket_Type property value is Close.\ntype bracketType byte\n\nconst (\n\tbpNone bracketType = iota\n\tbpOpen\n\tbpClose\n)\n\n// bracketPair holds a pair of index values for opening and closing bracket\n// location of a bracket pair.\ntype bracketPair struct {\n\topener int\n\tcloser int\n}\n\nfunc (b *bracketPair) String() string {\n\treturn fmt.Sprintf(\"(%v, %v)\", b.opener, b.closer)\n}\n\n// bracketPairs is a slice of bracketPairs with a sort.Interface implementation.\ntype bracketPairs []bracketPair\n\nfunc (b bracketPairs) Len() int           { return len(b) }\nfunc (b bracketPairs) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }\nfunc (b bracketPairs) Less(i, j int) bool { return b[i].opener < b[j].opener }\n\n// resolvePairedBrackets runs the paired bracket part of the UBA algorithm.\n//\n// For each rune, it takes the indexes into the original string, the class the\n// bracket type (in pairTypes) and the bracket identifier (pairValues). It also\n// takes the direction type for the start-of-sentence and the embedding level.\n//\n// The identifiers for bracket types are the rune of the canonicalized opening\n// bracket for brackets (open or close) or 0 for runes that are not brackets.\nfunc resolvePairedBrackets(s *isolatingRunSequence) {\n\tp := bracketPairer{\n\t\tsos:              s.sos,\n\t\topeners:          list.New(),\n\t\tcodesIsolatedRun: s.types,\n\t\tindexes:          s.indexes,\n\t}\n\tdirEmbed := L\n\tif s.level&1 != 0 {\n\t\tdirEmbed = R\n\t}\n\tp.locateBrackets(s.p.pairTypes, s.p.pairValues)\n\tp.resolveBrackets(dirEmbed, s.p.initialTypes)\n}\n\ntype bracketPairer struct {\n\tsos Class // direction corresponding to start of sequence\n\n\t// The following is a restatement of BD 16 using non-algorithmic language.\n\t//\n\t// A bracket pair is a pair of characters consisting of an opening\n\t// paired bracket and a closing paired bracket such that the\n\t// Bidi_Paired_Bracket property value of the former equals the latter,\n\t// subject to the following constraints.\n\t// - both characters of a pair occur in the same isolating run sequence\n\t// - the closing character of a pair follows the opening character\n\t// - any bracket character can belong at most to one pair, the earliest possible one\n\t// - any bracket character not part of a pair is treated like an ordinary character\n\t// - pairs may nest properly, but their spans may not overlap otherwise\n\n\t// Bracket characters with canonical decompositions are supposed to be\n\t// treated as if they had been normalized, to allow normalized and non-\n\t// normalized text to give the same result. In this implementation that step\n\t// is pushed out to the caller. The caller has to ensure that the pairValue\n\t// slices contain the rune of the opening bracket after normalization for\n\t// any opening or closing bracket.\n\n\topeners *list.List // list of positions for opening brackets\n\n\t// bracket pair positions sorted by location of opening bracket\n\tpairPositions bracketPairs\n\n\tcodesIsolatedRun []Class // directional bidi codes for an isolated run\n\tindexes          []int   // array of index values into the original string\n\n}\n\n// matchOpener reports whether characters at given positions form a matching\n// bracket pair.\nfunc (p *bracketPairer) matchOpener(pairValues []rune, opener, closer int) bool {\n\treturn pairValues[p.indexes[opener]] == pairValues[p.indexes[closer]]\n}\n\nconst maxPairingDepth = 63\n\n// locateBrackets locates matching bracket pairs according to BD16.\n//\n// This implementation uses a linked list instead of a stack, because, while\n// elements are added at the front (like a push) they are not generally removed\n// in atomic 'pop' operations, reducing the benefit of the stack archetype.\nfunc (p *bracketPairer) locateBrackets(pairTypes []bracketType, pairValues []rune) {\n\t// traverse the run\n\t// do that explicitly (not in a for-each) so we can record position\n\tfor i, index := range p.indexes {\n\n\t\t// look at the bracket type for each character\n\t\tif pairTypes[index] == bpNone || p.codesIsolatedRun[i] != ON {\n\t\t\t// continue scanning\n\t\t\tcontinue\n\t\t}\n\t\tswitch pairTypes[index] {\n\t\tcase bpOpen:\n\t\t\t// check if maximum pairing depth reached\n\t\t\tif p.openers.Len() == maxPairingDepth {\n\t\t\t\tp.openers.Init()\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// remember opener location, most recent first\n\t\t\tp.openers.PushFront(i)\n\n\t\tcase bpClose:\n\t\t\t// see if there is a match\n\t\t\tcount := 0\n\t\t\tfor elem := p.openers.Front(); elem != nil; elem = elem.Next() {\n\t\t\t\tcount++\n\t\t\t\topener := elem.Value.(int)\n\t\t\t\tif p.matchOpener(pairValues, opener, i) {\n\t\t\t\t\t// if the opener matches, add nested pair to the ordered list\n\t\t\t\t\tp.pairPositions = append(p.pairPositions, bracketPair{opener, i})\n\t\t\t\t\t// remove up to and including matched opener\n\t\t\t\t\tfor ; count > 0; count-- {\n\t\t\t\t\t\tp.openers.Remove(p.openers.Front())\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsort.Sort(p.pairPositions)\n\t\t\t// if we get here, the closing bracket matched no openers\n\t\t\t// and gets ignored\n\t\t}\n\t}\n}\n\n// Bracket pairs within an isolating run sequence are processed as units so\n// that both the opening and the closing paired bracket in a pair resolve to\n// the same direction.\n//\n// N0. Process bracket pairs in an isolating run sequence sequentially in\n// the logical order of the text positions of the opening paired brackets\n// using the logic given below. Within this scope, bidirectional types EN\n// and AN are treated as R.\n//\n// Identify the bracket pairs in the current isolating run sequence\n// according to BD16. For each bracket-pair element in the list of pairs of\n// text positions:\n//\n// a Inspect the bidirectional types of the characters enclosed within the\n// bracket pair.\n//\n// b If any strong type (either L or R) matching the embedding direction is\n// found, set the type for both brackets in the pair to match the embedding\n// direction.\n//\n// o [ e ] o -> o e e e o\n//\n// o [ o e ] -> o e o e e\n//\n// o [ NI e ] -> o e NI e e\n//\n// c Otherwise, if a strong type (opposite the embedding direction) is\n// found, test for adjacent strong types as follows: 1 First, check\n// backwards before the opening paired bracket until the first strong type\n// (L, R, or sos) is found. If that first preceding strong type is opposite\n// the embedding direction, then set the type for both brackets in the pair\n// to that type. 2 Otherwise, set the type for both brackets in the pair to\n// the embedding direction.\n//\n// o [ o ] e -> o o o o e\n//\n// o [ o NI ] o -> o o o NI o o\n//\n// e [ o ] o -> e e o e o\n//\n// e [ o ] e -> e e o e e\n//\n// e ( o [ o ] NI ) e -> e e o o o o NI e e\n//\n// d Otherwise, do not set the type for the current bracket pair. Note that\n// if the enclosed text contains no strong types the paired brackets will\n// both resolve to the same level when resolved individually using rules N1\n// and N2.\n//\n// e ( NI ) o -> e ( NI ) o\n\n// getStrongTypeN0 maps character's directional code to strong type as required\n// by rule N0.\n//\n// TODO: have separate type for \"strong\" directionality.\nfunc (p *bracketPairer) getStrongTypeN0(index int) Class {\n\tswitch p.codesIsolatedRun[index] {\n\t// in the scope of N0, number types are treated as R\n\tcase EN, AN, AL, R:\n\t\treturn R\n\tcase L:\n\t\treturn L\n\tdefault:\n\t\treturn ON\n\t}\n}\n\n// classifyPairContent reports the strong types contained inside a Bracket Pair,\n// assuming the given embedding direction.\n//\n// It returns ON if no strong type is found. If a single strong type is found,\n// it returns this this type. Otherwise it returns the embedding direction.\n//\n// TODO: use separate type for \"strong\" directionality.\nfunc (p *bracketPairer) classifyPairContent(loc bracketPair, dirEmbed Class) Class {\n\tdirOpposite := ON\n\tfor i := loc.opener + 1; i < loc.closer; i++ {\n\t\tdir := p.getStrongTypeN0(i)\n\t\tif dir == ON {\n\t\t\tcontinue\n\t\t}\n\t\tif dir == dirEmbed {\n\t\t\treturn dir // type matching embedding direction found\n\t\t}\n\t\tdirOpposite = dir\n\t}\n\t// return ON if no strong type found, or class opposite to dirEmbed\n\treturn dirOpposite\n}\n\n// classBeforePair determines which strong types are present before a Bracket\n// Pair. Return R or L if strong type found, otherwise ON.\nfunc (p *bracketPairer) classBeforePair(loc bracketPair) Class {\n\tfor i := loc.opener - 1; i >= 0; i-- {\n\t\tif dir := p.getStrongTypeN0(i); dir != ON {\n\t\t\treturn dir\n\t\t}\n\t}\n\t// no strong types found, return sos\n\treturn p.sos\n}\n\n// assignBracketType implements rule N0 for a single bracket pair.\nfunc (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class, initialTypes []Class) {\n\t// rule \"N0, a\", inspect contents of pair\n\tdirPair := p.classifyPairContent(loc, dirEmbed)\n\n\t// dirPair is now L, R, or N (no strong type found)\n\n\t// the following logical tests are performed out of order compared to\n\t// the statement of the rules but yield the same results\n\tif dirPair == ON {\n\t\treturn // case \"d\" - nothing to do\n\t}\n\n\tif dirPair != dirEmbed {\n\t\t// case \"c\": strong type found, opposite - check before (c.1)\n\t\tdirPair = p.classBeforePair(loc)\n\t\tif dirPair == dirEmbed || dirPair == ON {\n\t\t\t// no strong opposite type found before - use embedding (c.2)\n\t\t\tdirPair = dirEmbed\n\t\t}\n\t}\n\t// else: case \"b\", strong type found matching embedding,\n\t// no explicit action needed, as dirPair is already set to embedding\n\t// direction\n\n\t// set the bracket types to the type found\n\tp.setBracketsToType(loc, dirPair, initialTypes)\n}\n\nfunc (p *bracketPairer) setBracketsToType(loc bracketPair, dirPair Class, initialTypes []Class) {\n\tp.codesIsolatedRun[loc.opener] = dirPair\n\tp.codesIsolatedRun[loc.closer] = dirPair\n\n\tfor i := loc.opener + 1; i < loc.closer; i++ {\n\t\tindex := p.indexes[i]\n\t\tif initialTypes[index] != NSM {\n\t\t\tbreak\n\t\t}\n\t\tp.codesIsolatedRun[i] = dirPair\n\t}\n\n\tfor i := loc.closer + 1; i < len(p.indexes); i++ {\n\t\tindex := p.indexes[i]\n\t\tif initialTypes[index] != NSM {\n\t\t\tbreak\n\t\t}\n\t\tp.codesIsolatedRun[i] = dirPair\n\t}\n}\n\n// resolveBrackets implements rule N0 for a list of pairs.\nfunc (p *bracketPairer) resolveBrackets(dirEmbed Class, initialTypes []Class) {\n\tfor _, loc := range p.pairPositions {\n\t\tp.assignBracketType(loc, dirEmbed, initialTypes)\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/core.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport \"log\"\n\n// This implementation is a port based on the reference implementation found at:\n// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/\n//\n// described in Unicode Bidirectional Algorithm (UAX #9).\n//\n// Input:\n// There are two levels of input to the algorithm, since clients may prefer to\n// supply some information from out-of-band sources rather than relying on the\n// default behavior.\n//\n// - Bidi class array\n// - Bidi class array, with externally supplied base line direction\n//\n// Output:\n// Output is separated into several stages:\n//\n//  - levels array over entire paragraph\n//  - reordering array over entire paragraph\n//  - levels array over line\n//  - reordering array over line\n//\n// Note that for conformance to the Unicode Bidirectional Algorithm,\n// implementations are only required to generate correct reordering and\n// character directionality (odd or even levels) over a line. Generating\n// identical level arrays over a line is not required. Bidi explicit format\n// codes (LRE, RLE, LRO, RLO, PDF) and BN can be assigned arbitrary levels and\n// positions as long as the rest of the input is properly reordered.\n//\n// As the algorithm is defined to operate on a single paragraph at a time, this\n// implementation is written to handle single paragraphs. Thus rule P1 is\n// presumed by this implementation-- the data provided to the implementation is\n// assumed to be a single paragraph, and either contains no 'B' codes, or a\n// single 'B' code at the end of the input. 'B' is allowed as input to\n// illustrate how the algorithm assigns it a level.\n//\n// Also note that rules L3 and L4 depend on the rendering engine that uses the\n// result of the bidi algorithm. This implementation assumes that the rendering\n// engine expects combining marks in visual order (e.g. to the left of their\n// base character in RTL runs) and that it adjusts the glyphs used to render\n// mirrored characters that are in RTL runs so that they render appropriately.\n\n// level is the embedding level of a character. Even embedding levels indicate\n// left-to-right order and odd levels indicate right-to-left order. The special\n// level of -1 is reserved for undefined order.\ntype level int8\n\nconst implicitLevel level = -1\n\n// in returns if x is equal to any of the values in set.\nfunc (c Class) in(set ...Class) bool {\n\tfor _, s := range set {\n\t\tif c == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// A paragraph contains the state of a paragraph.\ntype paragraph struct {\n\tinitialTypes []Class\n\n\t// Arrays of properties needed for paired bracket evaluation in N0\n\tpairTypes  []bracketType // paired Bracket types for paragraph\n\tpairValues []rune        // rune for opening bracket or pbOpen and pbClose; 0 for pbNone\n\n\tembeddingLevel level // default: = implicitLevel;\n\n\t// at the paragraph levels\n\tresultTypes  []Class\n\tresultLevels []level\n\n\t// Index of matching PDI for isolate initiator characters. For other\n\t// characters, the value of matchingPDI will be set to -1. For isolate\n\t// initiators with no matching PDI, matchingPDI will be set to the length of\n\t// the input string.\n\tmatchingPDI []int\n\n\t// Index of matching isolate initiator for PDI characters. For other\n\t// characters, and for PDIs with no matching isolate initiator, the value of\n\t// matchingIsolateInitiator will be set to -1.\n\tmatchingIsolateInitiator []int\n}\n\n// newParagraph initializes a paragraph. The user needs to supply a few arrays\n// corresponding to the preprocessed text input. The types correspond to the\n// Unicode BiDi classes for each rune. pairTypes indicates the bracket type for\n// each rune. pairValues provides a unique bracket class identifier for each\n// rune (suggested is the rune of the open bracket for opening and matching\n// close brackets, after normalization). The embedding levels are optional, but\n// may be supplied to encode embedding levels of styled text.\n//\n// TODO: return an error.\nfunc newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) *paragraph {\n\tvalidateTypes(types)\n\tvalidatePbTypes(pairTypes)\n\tvalidatePbValues(pairValues, pairTypes)\n\tvalidateParagraphEmbeddingLevel(levels)\n\n\tp := &paragraph{\n\t\tinitialTypes:   append([]Class(nil), types...),\n\t\tembeddingLevel: levels,\n\n\t\tpairTypes:  pairTypes,\n\t\tpairValues: pairValues,\n\n\t\tresultTypes: append([]Class(nil), types...),\n\t}\n\tp.run()\n\treturn p\n}\n\nfunc (p *paragraph) Len() int { return len(p.initialTypes) }\n\n// The algorithm. Does not include line-based processing (Rules L1, L2).\n// These are applied later in the line-based phase of the algorithm.\nfunc (p *paragraph) run() {\n\tp.determineMatchingIsolates()\n\n\t// 1) determining the paragraph level\n\t// Rule P1 is the requirement for entering this algorithm.\n\t// Rules P2, P3.\n\t// If no externally supplied paragraph embedding level, use default.\n\tif p.embeddingLevel == implicitLevel {\n\t\tp.embeddingLevel = p.determineParagraphEmbeddingLevel(0, p.Len())\n\t}\n\n\t// Initialize result levels to paragraph embedding level.\n\tp.resultLevels = make([]level, p.Len())\n\tsetLevels(p.resultLevels, p.embeddingLevel)\n\n\t// 2) Explicit levels and directions\n\t// Rules X1-X8.\n\tp.determineExplicitEmbeddingLevels()\n\n\t// Rule X9.\n\t// We do not remove the embeddings, the overrides, the PDFs, and the BNs\n\t// from the string explicitly. But they are not copied into isolating run\n\t// sequences when they are created, so they are removed for all\n\t// practical purposes.\n\n\t// Rule X10.\n\t// Run remainder of algorithm one isolating run sequence at a time\n\tfor _, seq := range p.determineIsolatingRunSequences() {\n\t\t// 3) resolving weak types\n\t\t// Rules W1-W7.\n\t\tseq.resolveWeakTypes()\n\n\t\t// 4a) resolving paired brackets\n\t\t// Rule N0\n\t\tresolvePairedBrackets(seq)\n\n\t\t// 4b) resolving neutral types\n\t\t// Rules N1-N3.\n\t\tseq.resolveNeutralTypes()\n\n\t\t// 5) resolving implicit embedding levels\n\t\t// Rules I1, I2.\n\t\tseq.resolveImplicitLevels()\n\n\t\t// Apply the computed levels and types\n\t\tseq.applyLevelsAndTypes()\n\t}\n\n\t// Assign appropriate levels to 'hide' LREs, RLEs, LROs, RLOs, PDFs, and\n\t// BNs. This is for convenience, so the resulting level array will have\n\t// a value for every character.\n\tp.assignLevelsToCharactersRemovedByX9()\n}\n\n// determineMatchingIsolates determines the matching PDI for each isolate\n// initiator and vice versa.\n//\n// Definition BD9.\n//\n// At the end of this function:\n//\n//  - The member variable matchingPDI is set to point to the index of the\n//    matching PDI character for each isolate initiator character. If there is\n//    no matching PDI, it is set to the length of the input text. For other\n//    characters, it is set to -1.\n//  - The member variable matchingIsolateInitiator is set to point to the\n//    index of the matching isolate initiator character for each PDI character.\n//    If there is no matching isolate initiator, or the character is not a PDI,\n//    it is set to -1.\nfunc (p *paragraph) determineMatchingIsolates() {\n\tp.matchingPDI = make([]int, p.Len())\n\tp.matchingIsolateInitiator = make([]int, p.Len())\n\n\tfor i := range p.matchingIsolateInitiator {\n\t\tp.matchingIsolateInitiator[i] = -1\n\t}\n\n\tfor i := range p.matchingPDI {\n\t\tp.matchingPDI[i] = -1\n\n\t\tif t := p.resultTypes[i]; t.in(LRI, RLI, FSI) {\n\t\t\tdepthCounter := 1\n\t\t\tfor j := i + 1; j < p.Len(); j++ {\n\t\t\t\tif u := p.resultTypes[j]; u.in(LRI, RLI, FSI) {\n\t\t\t\t\tdepthCounter++\n\t\t\t\t} else if u == PDI {\n\t\t\t\t\tif depthCounter--; depthCounter == 0 {\n\t\t\t\t\t\tp.matchingPDI[i] = j\n\t\t\t\t\t\tp.matchingIsolateInitiator[j] = i\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif p.matchingPDI[i] == -1 {\n\t\t\t\tp.matchingPDI[i] = p.Len()\n\t\t\t}\n\t\t}\n\t}\n}\n\n// determineParagraphEmbeddingLevel reports the resolved paragraph direction of\n// the substring limited by the given range [start, end).\n//\n// Determines the paragraph level based on rules P2, P3. This is also used\n// in rule X5c to find if an FSI should resolve to LRI or RLI.\nfunc (p *paragraph) determineParagraphEmbeddingLevel(start, end int) level {\n\tvar strongType Class = unknownClass\n\n\t// Rule P2.\n\tfor i := start; i < end; i++ {\n\t\tif t := p.resultTypes[i]; t.in(L, AL, R) {\n\t\t\tstrongType = t\n\t\t\tbreak\n\t\t} else if t.in(FSI, LRI, RLI) {\n\t\t\ti = p.matchingPDI[i] // skip over to the matching PDI\n\t\t\tif i > end {\n\t\t\t\tlog.Panic(\"assert (i <= end)\")\n\t\t\t}\n\t\t}\n\t}\n\t// Rule P3.\n\tswitch strongType {\n\tcase unknownClass: // none found\n\t\t// default embedding level when no strong types found is 0.\n\t\treturn 0\n\tcase L:\n\t\treturn 0\n\tdefault: // AL, R\n\t\treturn 1\n\t}\n}\n\nconst maxDepth = 125\n\n// This stack will store the embedding levels and override and isolated\n// statuses\ntype directionalStatusStack struct {\n\tstackCounter        int\n\tembeddingLevelStack [maxDepth + 1]level\n\toverrideStatusStack [maxDepth + 1]Class\n\tisolateStatusStack  [maxDepth + 1]bool\n}\n\nfunc (s *directionalStatusStack) empty()     { s.stackCounter = 0 }\nfunc (s *directionalStatusStack) pop()       { s.stackCounter-- }\nfunc (s *directionalStatusStack) depth() int { return s.stackCounter }\n\nfunc (s *directionalStatusStack) push(level level, overrideStatus Class, isolateStatus bool) {\n\ts.embeddingLevelStack[s.stackCounter] = level\n\ts.overrideStatusStack[s.stackCounter] = overrideStatus\n\ts.isolateStatusStack[s.stackCounter] = isolateStatus\n\ts.stackCounter++\n}\n\nfunc (s *directionalStatusStack) lastEmbeddingLevel() level {\n\treturn s.embeddingLevelStack[s.stackCounter-1]\n}\n\nfunc (s *directionalStatusStack) lastDirectionalOverrideStatus() Class {\n\treturn s.overrideStatusStack[s.stackCounter-1]\n}\n\nfunc (s *directionalStatusStack) lastDirectionalIsolateStatus() bool {\n\treturn s.isolateStatusStack[s.stackCounter-1]\n}\n\n// Determine explicit levels using rules X1 - X8\nfunc (p *paragraph) determineExplicitEmbeddingLevels() {\n\tvar stack directionalStatusStack\n\tvar overflowIsolateCount, overflowEmbeddingCount, validIsolateCount int\n\n\t// Rule X1.\n\tstack.push(p.embeddingLevel, ON, false)\n\n\tfor i, t := range p.resultTypes {\n\t\t// Rules X2, X3, X4, X5, X5a, X5b, X5c\n\t\tswitch t {\n\t\tcase RLE, LRE, RLO, LRO, RLI, LRI, FSI:\n\t\t\tisIsolate := t.in(RLI, LRI, FSI)\n\t\t\tisRTL := t.in(RLE, RLO, RLI)\n\n\t\t\t// override if this is an FSI that resolves to RLI\n\t\t\tif t == FSI {\n\t\t\t\tisRTL = (p.determineParagraphEmbeddingLevel(i+1, p.matchingPDI[i]) == 1)\n\t\t\t}\n\t\t\tif isIsolate {\n\t\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\t\t\t\tif stack.lastDirectionalOverrideStatus() != ON {\n\t\t\t\t\tp.resultTypes[i] = stack.lastDirectionalOverrideStatus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar newLevel level\n\t\t\tif isRTL {\n\t\t\t\t// least greater odd\n\t\t\t\tnewLevel = (stack.lastEmbeddingLevel() + 1) | 1\n\t\t\t} else {\n\t\t\t\t// least greater even\n\t\t\t\tnewLevel = (stack.lastEmbeddingLevel() + 2) &^ 1\n\t\t\t}\n\n\t\t\tif newLevel <= maxDepth && overflowIsolateCount == 0 && overflowEmbeddingCount == 0 {\n\t\t\t\tif isIsolate {\n\t\t\t\t\tvalidIsolateCount++\n\t\t\t\t}\n\t\t\t\t// Push new embedding level, override status, and isolated\n\t\t\t\t// status.\n\t\t\t\t// No check for valid stack counter, since the level check\n\t\t\t\t// suffices.\n\t\t\t\tswitch t {\n\t\t\t\tcase LRO:\n\t\t\t\t\tstack.push(newLevel, L, isIsolate)\n\t\t\t\tcase RLO:\n\t\t\t\t\tstack.push(newLevel, R, isIsolate)\n\t\t\t\tdefault:\n\t\t\t\t\tstack.push(newLevel, ON, isIsolate)\n\t\t\t\t}\n\t\t\t\t// Not really part of the spec\n\t\t\t\tif !isIsolate {\n\t\t\t\t\tp.resultLevels[i] = newLevel\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// This is an invalid explicit formatting character,\n\t\t\t\t// so apply the \"Otherwise\" part of rules X2-X5b.\n\t\t\t\tif isIsolate {\n\t\t\t\t\toverflowIsolateCount++\n\t\t\t\t} else { // !isIsolate\n\t\t\t\t\tif overflowIsolateCount == 0 {\n\t\t\t\t\t\toverflowEmbeddingCount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Rule X6a\n\t\tcase PDI:\n\t\t\tif overflowIsolateCount > 0 {\n\t\t\t\toverflowIsolateCount--\n\t\t\t} else if validIsolateCount == 0 {\n\t\t\t\t// do nothing\n\t\t\t} else {\n\t\t\t\toverflowEmbeddingCount = 0\n\t\t\t\tfor !stack.lastDirectionalIsolateStatus() {\n\t\t\t\t\tstack.pop()\n\t\t\t\t}\n\t\t\t\tstack.pop()\n\t\t\t\tvalidIsolateCount--\n\t\t\t}\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\n\t\t// Rule X7\n\t\tcase PDF:\n\t\t\t// Not really part of the spec\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\n\t\t\tif overflowIsolateCount > 0 {\n\t\t\t\t// do nothing\n\t\t\t} else if overflowEmbeddingCount > 0 {\n\t\t\t\toverflowEmbeddingCount--\n\t\t\t} else if !stack.lastDirectionalIsolateStatus() && stack.depth() >= 2 {\n\t\t\t\tstack.pop()\n\t\t\t}\n\n\t\tcase B: // paragraph separator.\n\t\t\t// Rule X8.\n\n\t\t\t// These values are reset for clarity, in this implementation B\n\t\t\t// can only occur as the last code in the array.\n\t\t\tstack.empty()\n\t\t\toverflowIsolateCount = 0\n\t\t\toverflowEmbeddingCount = 0\n\t\t\tvalidIsolateCount = 0\n\t\t\tp.resultLevels[i] = p.embeddingLevel\n\n\t\tdefault:\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\t\t\tif stack.lastDirectionalOverrideStatus() != ON {\n\t\t\t\tp.resultTypes[i] = stack.lastDirectionalOverrideStatus()\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype isolatingRunSequence struct {\n\tp *paragraph\n\n\tindexes []int // indexes to the original string\n\n\ttypes          []Class // type of each character using the index\n\tresolvedLevels []level // resolved levels after application of rules\n\tlevel          level\n\tsos, eos       Class\n}\n\nfunc (i *isolatingRunSequence) Len() int { return len(i.indexes) }\n\nfunc maxLevel(a, b level) level {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\n// Rule X10, second bullet: Determine the start-of-sequence (sos) and end-of-sequence (eos) types,\n// \t\t\t either L or R, for each isolating run sequence.\nfunc (p *paragraph) isolatingRunSequence(indexes []int) *isolatingRunSequence {\n\tlength := len(indexes)\n\ttypes := make([]Class, length)\n\tfor i, x := range indexes {\n\t\ttypes[i] = p.resultTypes[x]\n\t}\n\n\t// assign level, sos and eos\n\tprevChar := indexes[0] - 1\n\tfor prevChar >= 0 && isRemovedByX9(p.initialTypes[prevChar]) {\n\t\tprevChar--\n\t}\n\tprevLevel := p.embeddingLevel\n\tif prevChar >= 0 {\n\t\tprevLevel = p.resultLevels[prevChar]\n\t}\n\n\tvar succLevel level\n\tlastType := types[length-1]\n\tif lastType.in(LRI, RLI, FSI) {\n\t\tsuccLevel = p.embeddingLevel\n\t} else {\n\t\t// the first character after the end of run sequence\n\t\tlimit := indexes[length-1] + 1\n\t\tfor ; limit < p.Len() && isRemovedByX9(p.initialTypes[limit]); limit++ {\n\n\t\t}\n\t\tsuccLevel = p.embeddingLevel\n\t\tif limit < p.Len() {\n\t\t\tsuccLevel = p.resultLevels[limit]\n\t\t}\n\t}\n\tlevel := p.resultLevels[indexes[0]]\n\treturn &isolatingRunSequence{\n\t\tp:       p,\n\t\tindexes: indexes,\n\t\ttypes:   types,\n\t\tlevel:   level,\n\t\tsos:     typeForLevel(maxLevel(prevLevel, level)),\n\t\teos:     typeForLevel(maxLevel(succLevel, level)),\n\t}\n}\n\n// Resolving weak types Rules W1-W7.\n//\n// Note that some weak types (EN, AN) remain after this processing is\n// complete.\nfunc (s *isolatingRunSequence) resolveWeakTypes() {\n\n\t// on entry, only these types remain\n\ts.assertOnly(L, R, AL, EN, ES, ET, AN, CS, B, S, WS, ON, NSM, LRI, RLI, FSI, PDI)\n\n\t// Rule W1.\n\t// Changes all NSMs.\n\tpreceedingCharacterType := s.sos\n\tfor i, t := range s.types {\n\t\tif t == NSM {\n\t\t\ts.types[i] = preceedingCharacterType\n\t\t} else {\n\t\t\tif t.in(LRI, RLI, FSI, PDI) {\n\t\t\t\tpreceedingCharacterType = ON\n\t\t\t}\n\t\t\tpreceedingCharacterType = t\n\t\t}\n\t}\n\n\t// Rule W2.\n\t// EN does not change at the start of the run, because sos != AL.\n\tfor i, t := range s.types {\n\t\tif t == EN {\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tif t := s.types[j]; t.in(L, R, AL) {\n\t\t\t\t\tif t == AL {\n\t\t\t\t\t\ts.types[i] = AN\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule W3.\n\tfor i, t := range s.types {\n\t\tif t == AL {\n\t\t\ts.types[i] = R\n\t\t}\n\t}\n\n\t// Rule W4.\n\t// Since there must be values on both sides for this rule to have an\n\t// effect, the scan skips the first and last value.\n\t//\n\t// Although the scan proceeds left to right, and changes the type\n\t// values in a way that would appear to affect the computations\n\t// later in the scan, there is actually no problem. A change in the\n\t// current value can only affect the value to its immediate right,\n\t// and only affect it if it is ES or CS. But the current value can\n\t// only change if the value to its right is not ES or CS. Thus\n\t// either the current value will not change, or its change will have\n\t// no effect on the remainder of the analysis.\n\n\tfor i := 1; i < s.Len()-1; i++ {\n\t\tt := s.types[i]\n\t\tif t == ES || t == CS {\n\t\t\tprevSepType := s.types[i-1]\n\t\t\tsuccSepType := s.types[i+1]\n\t\t\tif prevSepType == EN && succSepType == EN {\n\t\t\t\ts.types[i] = EN\n\t\t\t} else if s.types[i] == CS && prevSepType == AN && succSepType == AN {\n\t\t\t\ts.types[i] = AN\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule W5.\n\tfor i, t := range s.types {\n\t\tif t == ET {\n\t\t\t// locate end of sequence\n\t\t\trunStart := i\n\t\t\trunEnd := s.findRunLimit(runStart, ET)\n\n\t\t\t// check values at ends of sequence\n\t\t\tt := s.sos\n\t\t\tif runStart > 0 {\n\t\t\t\tt = s.types[runStart-1]\n\t\t\t}\n\t\t\tif t != EN {\n\t\t\t\tt = s.eos\n\t\t\t\tif runEnd < len(s.types) {\n\t\t\t\t\tt = s.types[runEnd]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif t == EN {\n\t\t\t\tsetTypes(s.types[runStart:runEnd], EN)\n\t\t\t}\n\t\t\t// continue at end of sequence\n\t\t\ti = runEnd\n\t\t}\n\t}\n\n\t// Rule W6.\n\tfor i, t := range s.types {\n\t\tif t.in(ES, ET, CS) {\n\t\t\ts.types[i] = ON\n\t\t}\n\t}\n\n\t// Rule W7.\n\tfor i, t := range s.types {\n\t\tif t == EN {\n\t\t\t// set default if we reach start of run\n\t\t\tprevStrongType := s.sos\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tt = s.types[j]\n\t\t\t\tif t == L || t == R { // AL's have been changed to R\n\t\t\t\t\tprevStrongType = t\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif prevStrongType == L {\n\t\t\t\ts.types[i] = L\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 6) resolving neutral types Rules N1-N2.\nfunc (s *isolatingRunSequence) resolveNeutralTypes() {\n\n\t// on entry, only these types can be in resultTypes\n\ts.assertOnly(L, R, EN, AN, B, S, WS, ON, RLI, LRI, FSI, PDI)\n\n\tfor i, t := range s.types {\n\t\tswitch t {\n\t\tcase WS, ON, B, S, RLI, LRI, FSI, PDI:\n\t\t\t// find bounds of run of neutrals\n\t\t\trunStart := i\n\t\t\trunEnd := s.findRunLimit(runStart, B, S, WS, ON, RLI, LRI, FSI, PDI)\n\n\t\t\t// determine effective types at ends of run\n\t\t\tvar leadType, trailType Class\n\n\t\t\t// Note that the character found can only be L, R, AN, or\n\t\t\t// EN.\n\t\t\tif runStart == 0 {\n\t\t\t\tleadType = s.sos\n\t\t\t} else {\n\t\t\t\tleadType = s.types[runStart-1]\n\t\t\t\tif leadType.in(AN, EN) {\n\t\t\t\t\tleadType = R\n\t\t\t\t}\n\t\t\t}\n\t\t\tif runEnd == len(s.types) {\n\t\t\t\ttrailType = s.eos\n\t\t\t} else {\n\t\t\t\ttrailType = s.types[runEnd]\n\t\t\t\tif trailType.in(AN, EN) {\n\t\t\t\t\ttrailType = R\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar resolvedType Class\n\t\t\tif leadType == trailType {\n\t\t\t\t// Rule N1.\n\t\t\t\tresolvedType = leadType\n\t\t\t} else {\n\t\t\t\t// Rule N2.\n\t\t\t\t// Notice the embedding level of the run is used, not\n\t\t\t\t// the paragraph embedding level.\n\t\t\t\tresolvedType = typeForLevel(s.level)\n\t\t\t}\n\n\t\t\tsetTypes(s.types[runStart:runEnd], resolvedType)\n\n\t\t\t// skip over run of (former) neutrals\n\t\t\ti = runEnd\n\t\t}\n\t}\n}\n\nfunc setLevels(levels []level, newLevel level) {\n\tfor i := range levels {\n\t\tlevels[i] = newLevel\n\t}\n}\n\nfunc setTypes(types []Class, newType Class) {\n\tfor i := range types {\n\t\ttypes[i] = newType\n\t}\n}\n\n// 7) resolving implicit embedding levels Rules I1, I2.\nfunc (s *isolatingRunSequence) resolveImplicitLevels() {\n\n\t// on entry, only these types can be in resultTypes\n\ts.assertOnly(L, R, EN, AN)\n\n\ts.resolvedLevels = make([]level, len(s.types))\n\tsetLevels(s.resolvedLevels, s.level)\n\n\tif (s.level & 1) == 0 { // even level\n\t\tfor i, t := range s.types {\n\t\t\t// Rule I1.\n\t\t\tif t == L {\n\t\t\t\t// no change\n\t\t\t} else if t == R {\n\t\t\t\ts.resolvedLevels[i] += 1\n\t\t\t} else { // t == AN || t == EN\n\t\t\t\ts.resolvedLevels[i] += 2\n\t\t\t}\n\t\t}\n\t} else { // odd level\n\t\tfor i, t := range s.types {\n\t\t\t// Rule I2.\n\t\t\tif t == R {\n\t\t\t\t// no change\n\t\t\t} else { // t == L || t == AN || t == EN\n\t\t\t\ts.resolvedLevels[i] += 1\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Applies the levels and types resolved in rules W1-I2 to the\n// resultLevels array.\nfunc (s *isolatingRunSequence) applyLevelsAndTypes() {\n\tfor i, x := range s.indexes {\n\t\ts.p.resultTypes[x] = s.types[i]\n\t\ts.p.resultLevels[x] = s.resolvedLevels[i]\n\t}\n}\n\n// Return the limit of the run consisting only of the types in validSet\n// starting at index. This checks the value at index, and will return\n// index if that value is not in validSet.\nfunc (s *isolatingRunSequence) findRunLimit(index int, validSet ...Class) int {\nloop:\n\tfor ; index < len(s.types); index++ {\n\t\tt := s.types[index]\n\t\tfor _, valid := range validSet {\n\t\t\tif t == valid {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\treturn index // didn't find a match in validSet\n\t}\n\treturn len(s.types)\n}\n\n// Algorithm validation. Assert that all values in types are in the\n// provided set.\nfunc (s *isolatingRunSequence) assertOnly(codes ...Class) {\nloop:\n\tfor i, t := range s.types {\n\t\tfor _, c := range codes {\n\t\t\tif t == c {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\tlog.Panicf(\"invalid bidi code %v present in assertOnly at position %d\", t, s.indexes[i])\n\t}\n}\n\n// determineLevelRuns returns an array of level runs. Each level run is\n// described as an array of indexes into the input string.\n//\n// Determines the level runs. Rule X9 will be applied in determining the\n// runs, in the way that makes sure the characters that are supposed to be\n// removed are not included in the runs.\nfunc (p *paragraph) determineLevelRuns() [][]int {\n\trun := []int{}\n\tallRuns := [][]int{}\n\tcurrentLevel := implicitLevel\n\n\tfor i := range p.initialTypes {\n\t\tif !isRemovedByX9(p.initialTypes[i]) {\n\t\t\tif p.resultLevels[i] != currentLevel {\n\t\t\t\t// we just encountered a new run; wrap up last run\n\t\t\t\tif currentLevel >= 0 { // only wrap it up if there was a run\n\t\t\t\t\tallRuns = append(allRuns, run)\n\t\t\t\t\trun = nil\n\t\t\t\t}\n\t\t\t\t// Start new run\n\t\t\t\tcurrentLevel = p.resultLevels[i]\n\t\t\t}\n\t\t\trun = append(run, i)\n\t\t}\n\t}\n\t// Wrap up the final run, if any\n\tif len(run) > 0 {\n\t\tallRuns = append(allRuns, run)\n\t}\n\treturn allRuns\n}\n\n// Definition BD13. Determine isolating run sequences.\nfunc (p *paragraph) determineIsolatingRunSequences() []*isolatingRunSequence {\n\tlevelRuns := p.determineLevelRuns()\n\n\t// Compute the run that each character belongs to\n\trunForCharacter := make([]int, p.Len())\n\tfor i, run := range levelRuns {\n\t\tfor _, index := range run {\n\t\t\trunForCharacter[index] = i\n\t\t}\n\t}\n\n\tsequences := []*isolatingRunSequence{}\n\n\tvar currentRunSequence []int\n\n\tfor _, run := range levelRuns {\n\t\tfirst := run[0]\n\t\tif p.initialTypes[first] != PDI || p.matchingIsolateInitiator[first] == -1 {\n\t\t\tcurrentRunSequence = nil\n\t\t\t// int run = i;\n\t\t\tfor {\n\t\t\t\t// Copy this level run into currentRunSequence\n\t\t\t\tcurrentRunSequence = append(currentRunSequence, run...)\n\n\t\t\t\tlast := currentRunSequence[len(currentRunSequence)-1]\n\t\t\t\tlastT := p.initialTypes[last]\n\t\t\t\tif lastT.in(LRI, RLI, FSI) && p.matchingPDI[last] != p.Len() {\n\t\t\t\t\trun = levelRuns[runForCharacter[p.matchingPDI[last]]]\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsequences = append(sequences, p.isolatingRunSequence(currentRunSequence))\n\t\t}\n\t}\n\treturn sequences\n}\n\n// Assign level information to characters removed by rule X9. This is for\n// ease of relating the level information to the original input data. Note\n// that the levels assigned to these codes are arbitrary, they're chosen so\n// as to avoid breaking level runs.\nfunc (p *paragraph) assignLevelsToCharactersRemovedByX9() {\n\tfor i, t := range p.initialTypes {\n\t\tif t.in(LRE, RLE, LRO, RLO, PDF, BN) {\n\t\t\tp.resultTypes[i] = t\n\t\t\tp.resultLevels[i] = -1\n\t\t}\n\t}\n\t// now propagate forward the levels information (could have\n\t// propagated backward, the main thing is not to introduce a level\n\t// break where one doesn't already exist).\n\n\tif p.resultLevels[0] == -1 {\n\t\tp.resultLevels[0] = p.embeddingLevel\n\t}\n\tfor i := 1; i < len(p.initialTypes); i++ {\n\t\tif p.resultLevels[i] == -1 {\n\t\t\tp.resultLevels[i] = p.resultLevels[i-1]\n\t\t}\n\t}\n\t// Embedding information is for informational purposes only so need not be\n\t// adjusted.\n}\n\n//\n// Output\n//\n\n// getLevels computes levels array breaking lines at offsets in linebreaks.\n// Rule L1.\n//\n// The linebreaks array must include at least one value. The values must be\n// in strictly increasing order (no duplicates) between 1 and the length of\n// the text, inclusive. The last value must be the length of the text.\nfunc (p *paragraph) getLevels(linebreaks []int) []level {\n\t// Note that since the previous processing has removed all\n\t// P, S, and WS values from resultTypes, the values referred to\n\t// in these rules are the initial types, before any processing\n\t// has been applied (including processing of overrides).\n\t//\n\t// This example implementation has reinserted explicit format codes\n\t// and BN, in order that the levels array correspond to the\n\t// initial text. Their final placement is not normative.\n\t// These codes are treated like WS in this implementation,\n\t// so they don't interrupt sequences of WS.\n\n\tvalidateLineBreaks(linebreaks, p.Len())\n\n\tresult := append([]level(nil), p.resultLevels...)\n\n\t// don't worry about linebreaks since if there is a break within\n\t// a series of WS values preceding S, the linebreak itself\n\t// causes the reset.\n\tfor i, t := range p.initialTypes {\n\t\tif t.in(B, S) {\n\t\t\t// Rule L1, clauses one and two.\n\t\t\tresult[i] = p.embeddingLevel\n\n\t\t\t// Rule L1, clause three.\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tif isWhitespace(p.initialTypes[j]) { // including format codes\n\t\t\t\t\tresult[j] = p.embeddingLevel\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule L1, clause four.\n\tstart := 0\n\tfor _, limit := range linebreaks {\n\t\tfor j := limit - 1; j >= start; j-- {\n\t\t\tif isWhitespace(p.initialTypes[j]) { // including format codes\n\t\t\t\tresult[j] = p.embeddingLevel\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tstart = limit\n\t}\n\n\treturn result\n}\n\n// getReordering returns the reordering of lines from a visual index to a\n// logical index for line breaks at the given offsets.\n//\n// Lines are concatenated from left to right. So for example, the fifth\n// character from the left on the third line is\n//\n// \t\tgetReordering(linebreaks)[linebreaks[1] + 4]\n//\n// (linebreaks[1] is the position after the last character of the second\n// line, which is also the index of the first character on the third line,\n// and adding four gets the fifth character from the left).\n//\n// The linebreaks array must include at least one value. The values must be\n// in strictly increasing order (no duplicates) between 1 and the length of\n// the text, inclusive. The last value must be the length of the text.\nfunc (p *paragraph) getReordering(linebreaks []int) []int {\n\tvalidateLineBreaks(linebreaks, p.Len())\n\n\treturn computeMultilineReordering(p.getLevels(linebreaks), linebreaks)\n}\n\n// Return multiline reordering array for a given level array. Reordering\n// does not occur across a line break.\nfunc computeMultilineReordering(levels []level, linebreaks []int) []int {\n\tresult := make([]int, len(levels))\n\n\tstart := 0\n\tfor _, limit := range linebreaks {\n\t\ttempLevels := make([]level, limit-start)\n\t\tcopy(tempLevels, levels[start:])\n\n\t\tfor j, order := range computeReordering(tempLevels) {\n\t\t\tresult[start+j] = order + start\n\t\t}\n\t\tstart = limit\n\t}\n\treturn result\n}\n\n// Return reordering array for a given level array. This reorders a single\n// line. The reordering is a visual to logical map. For example, the\n// leftmost char is string.charAt(order[0]). Rule L2.\nfunc computeReordering(levels []level) []int {\n\tresult := make([]int, len(levels))\n\t// initialize order\n\tfor i := range result {\n\t\tresult[i] = i\n\t}\n\n\t// locate highest level found on line.\n\t// Note the rules say text, but no reordering across line bounds is\n\t// performed, so this is sufficient.\n\thighestLevel := level(0)\n\tlowestOddLevel := level(maxDepth + 2)\n\tfor _, level := range levels {\n\t\tif level > highestLevel {\n\t\t\thighestLevel = level\n\t\t}\n\t\tif level&1 != 0 && level < lowestOddLevel {\n\t\t\tlowestOddLevel = level\n\t\t}\n\t}\n\n\tfor level := highestLevel; level >= lowestOddLevel; level-- {\n\t\tfor i := 0; i < len(levels); i++ {\n\t\t\tif levels[i] >= level {\n\t\t\t\t// find range of text at or above this level\n\t\t\t\tstart := i\n\t\t\t\tlimit := i + 1\n\t\t\t\tfor limit < len(levels) && levels[limit] >= level {\n\t\t\t\t\tlimit++\n\t\t\t\t}\n\n\t\t\t\tfor j, k := start, limit-1; j < k; j, k = j+1, k-1 {\n\t\t\t\t\tresult[j], result[k] = result[k], result[j]\n\t\t\t\t}\n\t\t\t\t// skip to end of level run\n\t\t\t\ti = limit\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n\n// isWhitespace reports whether the type is considered a whitespace type for the\n// line break rules.\nfunc isWhitespace(c Class) bool {\n\tswitch c {\n\tcase LRE, RLE, LRO, RLO, PDF, LRI, RLI, FSI, PDI, BN, WS:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// isRemovedByX9 reports whether the type is one of the types removed in X9.\nfunc isRemovedByX9(c Class) bool {\n\tswitch c {\n\tcase LRE, RLE, LRO, RLO, PDF, BN:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// typeForLevel reports the strong type (L or R) corresponding to the level.\nfunc typeForLevel(level level) Class {\n\tif (level & 0x1) == 0 {\n\t\treturn L\n\t}\n\treturn R\n}\n\n// TODO: change validation to not panic\n\nfunc validateTypes(types []Class) {\n\tif len(types) == 0 {\n\t\tlog.Panic(\"types is null\")\n\t}\n\tfor i, t := range types[:len(types)-1] {\n\t\tif t == B {\n\t\t\tlog.Panicf(\"B type before end of paragraph at index: %d\", i)\n\t\t}\n\t}\n}\n\nfunc validateParagraphEmbeddingLevel(embeddingLevel level) {\n\tif embeddingLevel != implicitLevel &&\n\t\tembeddingLevel != 0 &&\n\t\tembeddingLevel != 1 {\n\t\tlog.Panicf(\"illegal paragraph embedding level: %d\", embeddingLevel)\n\t}\n}\n\nfunc validateLineBreaks(linebreaks []int, textLength int) {\n\tprev := 0\n\tfor i, next := range linebreaks {\n\t\tif next <= prev {\n\t\t\tlog.Panicf(\"bad linebreak: %d at index: %d\", next, i)\n\t\t}\n\t\tprev = next\n\t}\n\tif prev != textLength {\n\t\tlog.Panicf(\"last linebreak was %d, want %d\", prev, textLength)\n\t}\n}\n\nfunc validatePbTypes(pairTypes []bracketType) {\n\tif len(pairTypes) == 0 {\n\t\tlog.Panic(\"pairTypes is null\")\n\t}\n\tfor i, pt := range pairTypes {\n\t\tswitch pt {\n\t\tcase bpNone, bpOpen, bpClose:\n\t\tdefault:\n\t\t\tlog.Panicf(\"illegal pairType value at %d: %v\", i, pairTypes[i])\n\t\t}\n\t}\n}\n\nfunc validatePbValues(pairValues []rune, pairTypes []bracketType) {\n\tif pairValues == nil {\n\t\tlog.Panic(\"pairValues is null\")\n\t}\n\tif len(pairTypes) != len(pairValues) {\n\t\tlog.Panic(\"pairTypes is different length from pairValues\")\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/gen.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\nimport (\n\t\"flag\"\n\t\"log\"\n\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/internal/triegen\"\n\t\"golang.org/x/text/internal/ucd\"\n)\n\nvar outputFile = flag.String(\"out\", \"tables.go\", \"output file\")\n\nfunc main() {\n\tgen.Init()\n\tgen.Repackage(\"gen_trieval.go\", \"trieval.go\", \"bidi\")\n\tgen.Repackage(\"gen_ranges.go\", \"ranges_test.go\", \"bidi\")\n\n\tgenTables()\n}\n\n// bidiClass names and codes taken from class \"bc\" in\n// http://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt\nvar bidiClass = map[string]Class{\n\t\"AL\":  AL,  // ArabicLetter\n\t\"AN\":  AN,  // ArabicNumber\n\t\"B\":   B,   // ParagraphSeparator\n\t\"BN\":  BN,  // BoundaryNeutral\n\t\"CS\":  CS,  // CommonSeparator\n\t\"EN\":  EN,  // EuropeanNumber\n\t\"ES\":  ES,  // EuropeanSeparator\n\t\"ET\":  ET,  // EuropeanTerminator\n\t\"L\":   L,   // LeftToRight\n\t\"NSM\": NSM, // NonspacingMark\n\t\"ON\":  ON,  // OtherNeutral\n\t\"R\":   R,   // RightToLeft\n\t\"S\":   S,   // SegmentSeparator\n\t\"WS\":  WS,  // WhiteSpace\n\n\t\"FSI\": Control,\n\t\"PDF\": Control,\n\t\"PDI\": Control,\n\t\"LRE\": Control,\n\t\"LRI\": Control,\n\t\"LRO\": Control,\n\t\"RLE\": Control,\n\t\"RLI\": Control,\n\t\"RLO\": Control,\n}\n\nfunc genTables() {\n\tif numClass > 0x0F {\n\t\tlog.Fatalf(\"Too many Class constants (%#x > 0x0F).\", numClass)\n\t}\n\tw := gen.NewCodeWriter()\n\tdefer w.WriteVersionedGoFile(*outputFile, \"bidi\")\n\n\tgen.WriteUnicodeVersion(w)\n\n\tt := triegen.NewTrie(\"bidi\")\n\n\t// Build data about bracket mapping. These bits need to be or-ed with\n\t// any other bits.\n\torMask := map[rune]uint64{}\n\n\txorMap := map[rune]int{}\n\txorMasks := []rune{0} // First value is no-op.\n\n\tucd.Parse(gen.OpenUCDFile(\"BidiBrackets.txt\"), func(p *ucd.Parser) {\n\t\tr1 := p.Rune(0)\n\t\tr2 := p.Rune(1)\n\t\txor := r1 ^ r2\n\t\tif _, ok := xorMap[xor]; !ok {\n\t\t\txorMap[xor] = len(xorMasks)\n\t\t\txorMasks = append(xorMasks, xor)\n\t\t}\n\t\tentry := uint64(xorMap[xor]) << xorMaskShift\n\t\tswitch p.String(2) {\n\t\tcase \"o\":\n\t\t\tentry |= openMask\n\t\tcase \"c\", \"n\":\n\t\tdefault:\n\t\t\tlog.Fatalf(\"Unknown bracket class %q.\", p.String(2))\n\t\t}\n\t\torMask[r1] = entry\n\t})\n\n\tw.WriteComment(`\n\txorMasks contains masks to be xor-ed with brackets to get the reverse\n\tversion.`)\n\tw.WriteVar(\"xorMasks\", xorMasks)\n\n\tdone := map[rune]bool{}\n\n\tinsert := func(r rune, c Class) {\n\t\tif !done[r] {\n\t\t\tt.Insert(r, orMask[r]|uint64(c))\n\t\t\tdone[r] = true\n\t\t}\n\t}\n\n\t// Insert the derived BiDi properties.\n\tucd.Parse(gen.OpenUCDFile(\"extracted/DerivedBidiClass.txt\"), func(p *ucd.Parser) {\n\t\tr := p.Rune(0)\n\t\tclass, ok := bidiClass[p.String(1)]\n\t\tif !ok {\n\t\t\tlog.Fatalf(\"%U: Unknown BiDi class %q\", r, p.String(1))\n\t\t}\n\t\tinsert(r, class)\n\t})\n\tvisitDefaults(insert)\n\n\t// TODO: use sparse blocks. This would reduce table size considerably\n\t// from the looks of it.\n\n\tsz, err := t.Gen(w)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tw.Size += sz\n}\n\n// dummy values to make methods in gen_common compile. The real versions\n// will be generated by this file to tables.go.\nvar (\n\txorMasks []rune\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\nimport (\n\t\"unicode\"\n\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/internal/ucd\"\n\t\"golang.org/x/text/unicode/rangetable\"\n)\n\n// These tables are hand-extracted from:\n// http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt\nfunc visitDefaults(fn func(r rune, c Class)) {\n\t// first write default values for ranges listed above.\n\tvisitRunes(fn, AL, []rune{\n\t\t0x0600, 0x07BF, // Arabic\n\t\t0x08A0, 0x08FF, // Arabic Extended-A\n\t\t0xFB50, 0xFDCF, // Arabic Presentation Forms\n\t\t0xFDF0, 0xFDFF,\n\t\t0xFE70, 0xFEFF,\n\t\t0x0001EE00, 0x0001EEFF, // Arabic Mathematical Alpha Symbols\n\t})\n\tvisitRunes(fn, R, []rune{\n\t\t0x0590, 0x05FF, // Hebrew\n\t\t0x07C0, 0x089F, // Nko et al.\n\t\t0xFB1D, 0xFB4F,\n\t\t0x00010800, 0x00010FFF, // Cypriot Syllabary et. al.\n\t\t0x0001E800, 0x0001EDFF,\n\t\t0x0001EF00, 0x0001EFFF,\n\t})\n\tvisitRunes(fn, ET, []rune{ // European Terminator\n\t\t0x20A0, 0x20Cf, // Currency symbols\n\t})\n\trangetable.Visit(unicode.Noncharacter_Code_Point, func(r rune) {\n\t\tfn(r, BN) // Boundary Neutral\n\t})\n\tucd.Parse(gen.OpenUCDFile(\"DerivedCoreProperties.txt\"), func(p *ucd.Parser) {\n\t\tif p.String(1) == \"Default_Ignorable_Code_Point\" {\n\t\t\tfn(p.Rune(0), BN) // Boundary Neutral\n\t\t}\n\t})\n}\n\nfunc visitRunes(fn func(r rune, c Class), c Class, runes []rune) {\n\tfor i := 0; i < len(runes); i += 2 {\n\t\tlo, hi := runes[i], runes[i+1]\n\t\tfor j := lo; j <= hi; j++ {\n\t\t\tfn(j, c)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\n// Class is the Unicode BiDi class. Each rune has a single class.\ntype Class uint\n\nconst (\n\tL       Class = iota // LeftToRight\n\tR                    // RightToLeft\n\tEN                   // EuropeanNumber\n\tES                   // EuropeanSeparator\n\tET                   // EuropeanTerminator\n\tAN                   // ArabicNumber\n\tCS                   // CommonSeparator\n\tB                    // ParagraphSeparator\n\tS                    // SegmentSeparator\n\tWS                   // WhiteSpace\n\tON                   // OtherNeutral\n\tBN                   // BoundaryNeutral\n\tNSM                  // NonspacingMark\n\tAL                   // ArabicLetter\n\tControl              // Control LRO - PDI\n\n\tnumClass\n\n\tLRO // LeftToRightOverride\n\tRLO // RightToLeftOverride\n\tLRE // LeftToRightEmbedding\n\tRLE // RightToLeftEmbedding\n\tPDF // PopDirectionalFormat\n\tLRI // LeftToRightIsolate\n\tRLI // RightToLeftIsolate\n\tFSI // FirstStrongIsolate\n\tPDI // PopDirectionalIsolate\n\n\tunknownClass = ^Class(0)\n)\n\nvar controlToClass = map[rune]Class{\n\t0x202D: LRO, // LeftToRightOverride,\n\t0x202E: RLO, // RightToLeftOverride,\n\t0x202A: LRE, // LeftToRightEmbedding,\n\t0x202B: RLE, // RightToLeftEmbedding,\n\t0x202C: PDF, // PopDirectionalFormat,\n\t0x2066: LRI, // LeftToRightIsolate,\n\t0x2067: RLI, // RightToLeftIsolate,\n\t0x2068: FSI, // FirstStrongIsolate,\n\t0x2069: PDI, // PopDirectionalIsolate,\n}\n\n// A trie entry has the following bits:\n// 7..5  XOR mask for brackets\n// 4     1: Bracket open, 0: Bracket close\n// 3..0  Class type\n\nconst (\n\topenMask     = 0x10\n\txorMaskShift = 5\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/prop.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport \"unicode/utf8\"\n\n// Properties provides access to BiDi properties of runes.\ntype Properties struct {\n\tentry uint8\n\tlast  uint8\n}\n\nvar trie = newBidiTrie(0)\n\n// TODO: using this for bidirule reduces the running time by about 5%. Consider\n// if this is worth exposing or if we can find a way to speed up the Class\n// method.\n//\n// // CompactClass is like Class, but maps all of the BiDi control classes\n// // (LRO, RLO, LRE, RLE, PDF, LRI, RLI, FSI, PDI) to the class Control.\n// func (p Properties) CompactClass() Class {\n// \treturn Class(p.entry & 0x0F)\n// }\n\n// Class returns the Bidi class for p.\nfunc (p Properties) Class() Class {\n\tc := Class(p.entry & 0x0F)\n\tif c == Control {\n\t\tc = controlByteToClass[p.last&0xF]\n\t}\n\treturn c\n}\n\n// IsBracket reports whether the rune is a bracket.\nfunc (p Properties) IsBracket() bool { return p.entry&0xF0 != 0 }\n\n// IsOpeningBracket reports whether the rune is an opening bracket.\n// IsBracket must return true.\nfunc (p Properties) IsOpeningBracket() bool { return p.entry&openMask != 0 }\n\n// TODO: find a better API and expose.\nfunc (p Properties) reverseBracket(r rune) rune {\n\treturn xorMasks[p.entry>>xorMaskShift] ^ r\n}\n\nvar controlByteToClass = [16]Class{\n\t0xD: LRO, // U+202D LeftToRightOverride,\n\t0xE: RLO, // U+202E RightToLeftOverride,\n\t0xA: LRE, // U+202A LeftToRightEmbedding,\n\t0xB: RLE, // U+202B RightToLeftEmbedding,\n\t0xC: PDF, // U+202C PopDirectionalFormat,\n\t0x6: LRI, // U+2066 LeftToRightIsolate,\n\t0x7: RLI, // U+2067 RightToLeftIsolate,\n\t0x8: FSI, // U+2068 FirstStrongIsolate,\n\t0x9: PDI, // U+2069 PopDirectionalIsolate,\n}\n\n// LookupRune returns properties for r.\nfunc LookupRune(r rune) (p Properties, size int) {\n\tvar buf [4]byte\n\tn := utf8.EncodeRune(buf[:], r)\n\treturn Lookup(buf[:n])\n}\n\n// TODO: these lookup methods are based on the generated trie code. The returned\n// sizes have slightly different semantics from the generated code, in that it\n// always returns size==1 for an illegal UTF-8 byte (instead of the length\n// of the maximum invalid subsequence). Most Transformers, like unicode/norm,\n// leave invalid UTF-8 untouched, in which case it has performance benefits to\n// do so (without changing the semantics). Bidi requires the semantics used here\n// for the bidirule implementation to be compatible with the Go semantics.\n//  They ultimately should perhaps be adopted by all trie implementations, for\n// convenience sake.\n// This unrolled code also boosts performance of the secure/bidirule package by\n// about 30%.\n// So, to remove this code:\n//   - add option to trie generator to define return type.\n//   - always return 1 byte size for ill-formed UTF-8 runes.\n\n// Lookup returns properties for the first rune in s and the width in bytes of\n// its encoding. The size will be 0 if s does not hold enough bytes to complete\n// the encoding.\nfunc Lookup(s []byte) (p Properties, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn Properties{entry: bidiValues[c0]}, 1\n\tcase c0 < 0xC2:\n\t\treturn Properties{}, 1\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c1)}, 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c3)}, 4\n\t}\n\t// Illegal rune\n\treturn Properties{}, 1\n}\n\n// LookupString returns properties for the first rune in s and the width in\n// bytes of its encoding. The size will be 0 if s does not hold enough bytes to\n// complete the encoding.\nfunc LookupString(s string) (p Properties, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn Properties{entry: bidiValues[c0]}, 1\n\tcase c0 < 0xC2:\n\t\treturn Properties{}, 1\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c1)}, 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c3)}, 4\n\t}\n\t// Illegal rune\n\treturn Properties{}, 1\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// +build go1.10\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"10.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 16128 bytes (15.75 KiB). Checksum: 8122d83e461996f.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 228 blocks, 14592 entries, 14592 bytes\n// The third block is the zero block.\nvar bidiValues = [14592]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x0001, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000d, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa8a: 0x000c,\n\t0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c,\n\t0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c,\n\t0xaff: 0x0004,\n\t// Block 0x2c, offset 0xb00\n\t0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c,\n\t0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c,\n\t// Block 0x2d, offset 0xb40\n\t0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c,\n\t0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c,\n\t0xb7c: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c,\n\t0xb8c: 0x000c, 0xb8d: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbd8: 0x000c, 0xbd9: 0x000c,\n\t0xbf5: 0x000c,\n\t0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a,\n\t0xbfc: 0x003a, 0xbfd: 0x002a,\n\t// Block 0x30, offset 0xc00\n\t0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c,\n\t0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c,\n\t0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c,\n\t0xc46: 0x000c, 0xc47: 0x000c,\n\t0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c,\n\t0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c,\n\t0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c,\n\t0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c,\n\t0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c,\n\t0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c,\n\t0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc86: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c,\n\t0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c,\n\t0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c,\n\t0xcfd: 0x000c, 0xcfe: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd18: 0x000c, 0xd19: 0x000c,\n\t0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c,\n\t0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x000c, 0xd45: 0x000c,\n\t0xd46: 0x000c,\n\t0xd4d: 0x000c,\n\t0xd5d: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd9d: 0x000c,\n\t0xd9e: 0x000c, 0xd9f: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xdd0: 0x000a, 0xdd1: 0x000a,\n\t0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a,\n\t0xdd8: 0x000a, 0xdd9: 0x000a,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0009,\n\t0xe5b: 0x007a, 0xe5c: 0x006a,\n\t// Block 0x3a, offset 0xe80\n\t0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c,\n\t0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf34: 0x000c, 0xf35: 0x000c,\n\t0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c,\n\t0xf3c: 0x000c, 0xf3d: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c,\n\t0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c,\n\t0xf52: 0x000c, 0xf53: 0x000c,\n\t0xf5b: 0x0004, 0xf5d: 0x000c,\n\t0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a,\n\t0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a,\n\t0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc5: 0x000c,\n\t0xfc6: 0x000c,\n\t0xfe9: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c,\n\t0x1027: 0x000c, 0x1028: 0x000c,\n\t0x1032: 0x000c,\n\t0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a,\n\t// Block 0x42, offset 0x1080\n\t0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a,\n\t0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a,\n\t0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a,\n\t0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a,\n\t0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a,\n\t0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10d7: 0x000c,\n\t0x10d8: 0x000c, 0x10db: 0x000c,\n\t// Block 0x44, offset 0x1100\n\t0x1116: 0x000c,\n\t0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c,\n\t0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c,\n\t0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c,\n\t0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c,\n\t0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c,\n\t0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c,\n\t0x113c: 0x000c, 0x113f: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c,\n\t0x11b4: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c,\n\t0x11bc: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c2: 0x000c,\n\t0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c,\n\t0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c,\n\t0x1222: 0x000c, 0x1223: 0x000c,\n\t0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c,\n\t0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c,\n\t0x126d: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c,\n\t0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c,\n\t0x12b6: 0x000c, 0x12b7: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x000c, 0x12d1: 0x000c,\n\t0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c,\n\t0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c,\n\t0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c,\n\t0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c,\n\t0x12ed: 0x000c,\n\t0x12f4: 0x000c,\n\t0x12f8: 0x000c, 0x12f9: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c,\n\t0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c,\n\t0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c,\n\t0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c,\n\t0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c,\n\t0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c,\n\t0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c,\n\t0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c, 0x1338: 0x000c, 0x1339: 0x000c, 0x133b: 0x000c,\n\t0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x137d: 0x000a, 0x137f: 0x000a,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000a, 0x1381: 0x000a,\n\t0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a,\n\t0x139d: 0x000a,\n\t0x139e: 0x000a, 0x139f: 0x000a,\n\t0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a,\n\t0x13bd: 0x000a, 0x13be: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009,\n\t0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b,\n\t0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a,\n\t0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a,\n\t0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a,\n\t0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007,\n\t0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006,\n\t0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a,\n\t0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a,\n\t0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a,\n\t0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a,\n\t0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b,\n\t0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e,\n\t0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b,\n\t0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002,\n\t0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003,\n\t0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002,\n\t0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003,\n\t0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a,\n\t0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004,\n\t0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004,\n\t0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004,\n\t0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004,\n\t0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004,\n\t0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004,\n\t0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c,\n\t0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c,\n\t0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c,\n\t0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c,\n\t0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c,\n\t0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c,\n\t0x14b0: 0x000c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a,\n\t0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a,\n\t0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a,\n\t0x14d8: 0x000a,\n\t0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a,\n\t0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a,\n\t0x14ee: 0x0004,\n\t0x14fa: 0x000a, 0x14fb: 0x000a,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a,\n\t0x150a: 0x000a, 0x150b: 0x000a,\n\t0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a,\n\t0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a,\n\t0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a,\n\t0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a,\n\t0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a,\n\t0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a,\n\t0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a,\n\t0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a,\n\t0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a,\n\t0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a,\n\t0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,\n\t0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a,\n\t0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a,\n\t0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a,\n\t0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x0002, 0x1749: 0x0002, 0x174a: 0x0002, 0x174b: 0x0002,\n\t0x174c: 0x0002, 0x174d: 0x0002, 0x174e: 0x0002, 0x174f: 0x0002, 0x1750: 0x0002, 0x1751: 0x0002,\n\t0x1752: 0x0002, 0x1753: 0x0002, 0x1754: 0x0002, 0x1755: 0x0002, 0x1756: 0x0002, 0x1757: 0x0002,\n\t0x1758: 0x0002, 0x1759: 0x0002, 0x175a: 0x0002, 0x175b: 0x0002,\n\t// Block 0x5e, offset 0x1780\n\t0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a,\n\t0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a,\n\t0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a,\n\t0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a,\n\t0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x000a, 0x17c9: 0x000a, 0x17ca: 0x000a, 0x17cb: 0x000a,\n\t0x17cc: 0x000a, 0x17cd: 0x000a, 0x17ce: 0x000a, 0x17cf: 0x000a, 0x17d0: 0x000a, 0x17d1: 0x000a,\n\t0x17d2: 0x000a, 0x17d3: 0x000a, 0x17d4: 0x000a, 0x17d5: 0x000a, 0x17d6: 0x000a, 0x17d7: 0x000a,\n\t0x17d8: 0x000a, 0x17d9: 0x000a, 0x17da: 0x000a, 0x17db: 0x000a, 0x17dc: 0x000a, 0x17dd: 0x000a,\n\t0x17de: 0x000a, 0x17df: 0x000a, 0x17e0: 0x000a, 0x17e1: 0x000a, 0x17e2: 0x000a, 0x17e3: 0x000a,\n\t0x17e4: 0x000a, 0x17e5: 0x000a, 0x17e6: 0x000a, 0x17e7: 0x000a, 0x17e8: 0x000a, 0x17e9: 0x000a,\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x003a, 0x1829: 0x002a,\n\t0x182a: 0x003a, 0x182b: 0x002a, 0x182c: 0x003a, 0x182d: 0x002a, 0x182e: 0x003a, 0x182f: 0x002a,\n\t0x1830: 0x003a, 0x1831: 0x002a, 0x1832: 0x003a, 0x1833: 0x002a, 0x1834: 0x003a, 0x1835: 0x002a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x009a,\n\t0x1846: 0x008a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x003a, 0x1867: 0x002a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x007a, 0x1884: 0x006a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x00ba, 0x1888: 0x00aa, 0x1889: 0x009a, 0x188a: 0x008a, 0x188b: 0x007a,\n\t0x188c: 0x006a, 0x188d: 0x00da, 0x188e: 0x002a, 0x188f: 0x003a, 0x1890: 0x00ca, 0x1891: 0x009a,\n\t0x1892: 0x008a, 0x1893: 0x007a, 0x1894: 0x006a, 0x1895: 0x009a, 0x1896: 0x008a, 0x1897: 0x00ba,\n\t0x1898: 0x00aa, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x000a, 0x18a9: 0x000a,\n\t0x18aa: 0x000a, 0x18ab: 0x000a, 0x18ac: 0x000a, 0x18ad: 0x000a, 0x18ae: 0x000a, 0x18af: 0x000a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x000a,\n\t0x18c6: 0x000a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a,\n\t0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a,\n\t0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a,\n\t0x18d8: 0x003a, 0x18d9: 0x002a, 0x18da: 0x003a, 0x18db: 0x002a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x003a, 0x18fd: 0x002a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x000a, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a,\n\t0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a,\n\t0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,\n\t0x19ea: 0x000a, 0x19ef: 0x000c,\n\t0x19f0: 0x000c, 0x19f1: 0x000c,\n\t0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,\n\t0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c,\n\t0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c,\n\t0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c,\n\t0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c,\n\t0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c,\n\t0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a,\n\t0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a,\n\t0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a,\n\t0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a,\n\t0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a,\n\t0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a,\n\t0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a,\n\t0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a,\n\t0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a,\n\t0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a,\n\t0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a,\n\t0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a,\n\t0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a,\n\t0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a,\n\t0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a,\n\t0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c,\n\t0x1bf0: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a,\n\t0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a,\n\t0x1c20: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c7b: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a,\n\t0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a,\n\t0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a,\n\t0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a,\n\t0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a,\n\t0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cdd: 0x000a,\n\t0x1cde: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d10: 0x000a, 0x1d11: 0x000a,\n\t0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a,\n\t0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a,\n\t0x1d1e: 0x000a, 0x1d1f: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a,\n\t0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a,\n\t0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e50: 0x000a, 0x1e51: 0x000a,\n\t0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a,\n\t0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a,\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a,\n\t0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a,\n\t0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a,\n\t0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a,\n\t0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a,\n\t0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a,\n\t0x1e86: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f2f: 0x000c,\n\t0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c,\n\t0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c,\n\t0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f5e: 0x000c, 0x1f5f: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1fb0: 0x000c, 0x1fb1: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a,\n\t0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a,\n\t0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a,\n\t0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a,\n\t0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a,\n\t0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2008: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2042: 0x000c,\n\t0x2046: 0x000c, 0x204b: 0x000c,\n\t0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a,\n\t0x206a: 0x000a, 0x206b: 0x000a,\n\t0x2078: 0x0004, 0x2079: 0x0004,\n\t// Block 0x82, offset 0x2080\n\t0x20b4: 0x000a, 0x20b5: 0x000a,\n\t0x20b6: 0x000a, 0x20b7: 0x000a,\n\t// Block 0x83, offset 0x20c0\n\t0x20c4: 0x000c, 0x20c5: 0x000c,\n\t0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c,\n\t0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c,\n\t0x20f0: 0x000c, 0x20f1: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c,\n\t0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c,\n\t0x21b3: 0x000c,\n\t0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c,\n\t0x21bc: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e5: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2229: 0x000c,\n\t0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c,\n\t0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c,\n\t0x2236: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2243: 0x000c,\n\t0x224c: 0x000c,\n\t0x227c: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c,\n\t0x22b7: 0x000c, 0x22b8: 0x000c,\n\t0x22be: 0x000c, 0x22bf: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c1: 0x000c,\n\t0x22ec: 0x000c, 0x22ed: 0x000c,\n\t0x22f6: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x2325: 0x000c, 0x2328: 0x000c,\n\t0x232d: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x235d: 0x0001,\n\t0x235e: 0x000c, 0x235f: 0x0001, 0x2360: 0x0001, 0x2361: 0x0001, 0x2362: 0x0001, 0x2363: 0x0001,\n\t0x2364: 0x0001, 0x2365: 0x0001, 0x2366: 0x0001, 0x2367: 0x0001, 0x2368: 0x0001, 0x2369: 0x0003,\n\t0x236a: 0x0001, 0x236b: 0x0001, 0x236c: 0x0001, 0x236d: 0x0001, 0x236e: 0x0001, 0x236f: 0x0001,\n\t0x2370: 0x0001, 0x2371: 0x0001, 0x2372: 0x0001, 0x2373: 0x0001, 0x2374: 0x0001, 0x2375: 0x0001,\n\t0x2376: 0x0001, 0x2377: 0x0001, 0x2378: 0x0001, 0x2379: 0x0001, 0x237a: 0x0001, 0x237b: 0x0001,\n\t0x237c: 0x0001, 0x237d: 0x0001, 0x237e: 0x0001, 0x237f: 0x0001,\n\t// Block 0x8e, offset 0x2380\n\t0x2380: 0x0001, 0x2381: 0x0001, 0x2382: 0x0001, 0x2383: 0x0001, 0x2384: 0x0001, 0x2385: 0x0001,\n\t0x2386: 0x0001, 0x2387: 0x0001, 0x2388: 0x0001, 0x2389: 0x0001, 0x238a: 0x0001, 0x238b: 0x0001,\n\t0x238c: 0x0001, 0x238d: 0x0001, 0x238e: 0x0001, 0x238f: 0x0001, 0x2390: 0x000d, 0x2391: 0x000d,\n\t0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d,\n\t0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d,\n\t0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d,\n\t0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d,\n\t0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d,\n\t0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d,\n\t0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d,\n\t0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000d, 0x23bf: 0x000d,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000d, 0x23c4: 0x000d, 0x23c5: 0x000d,\n\t0x23c6: 0x000d, 0x23c7: 0x000d, 0x23c8: 0x000d, 0x23c9: 0x000d, 0x23ca: 0x000d, 0x23cb: 0x000d,\n\t0x23cc: 0x000d, 0x23cd: 0x000d, 0x23ce: 0x000d, 0x23cf: 0x000d, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000a, 0x23ff: 0x000a,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000b, 0x2411: 0x000b,\n\t0x2412: 0x000b, 0x2413: 0x000b, 0x2414: 0x000b, 0x2415: 0x000b, 0x2416: 0x000b, 0x2417: 0x000b,\n\t0x2418: 0x000b, 0x2419: 0x000b, 0x241a: 0x000b, 0x241b: 0x000b, 0x241c: 0x000b, 0x241d: 0x000b,\n\t0x241e: 0x000b, 0x241f: 0x000b, 0x2420: 0x000b, 0x2421: 0x000b, 0x2422: 0x000b, 0x2423: 0x000b,\n\t0x2424: 0x000b, 0x2425: 0x000b, 0x2426: 0x000b, 0x2427: 0x000b, 0x2428: 0x000b, 0x2429: 0x000b,\n\t0x242a: 0x000b, 0x242b: 0x000b, 0x242c: 0x000b, 0x242d: 0x000b, 0x242e: 0x000b, 0x242f: 0x000b,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000a, 0x243e: 0x000d, 0x243f: 0x000d,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000c, 0x2441: 0x000c, 0x2442: 0x000c, 0x2443: 0x000c, 0x2444: 0x000c, 0x2445: 0x000c,\n\t0x2446: 0x000c, 0x2447: 0x000c, 0x2448: 0x000c, 0x2449: 0x000c, 0x244a: 0x000c, 0x244b: 0x000c,\n\t0x244c: 0x000c, 0x244d: 0x000c, 0x244e: 0x000c, 0x244f: 0x000c, 0x2450: 0x000a, 0x2451: 0x000a,\n\t0x2452: 0x000a, 0x2453: 0x000a, 0x2454: 0x000a, 0x2455: 0x000a, 0x2456: 0x000a, 0x2457: 0x000a,\n\t0x2458: 0x000a, 0x2459: 0x000a,\n\t0x2460: 0x000c, 0x2461: 0x000c, 0x2462: 0x000c, 0x2463: 0x000c,\n\t0x2464: 0x000c, 0x2465: 0x000c, 0x2466: 0x000c, 0x2467: 0x000c, 0x2468: 0x000c, 0x2469: 0x000c,\n\t0x246a: 0x000c, 0x246b: 0x000c, 0x246c: 0x000c, 0x246d: 0x000c, 0x246e: 0x000c, 0x246f: 0x000c,\n\t0x2470: 0x000a, 0x2471: 0x000a, 0x2472: 0x000a, 0x2473: 0x000a, 0x2474: 0x000a, 0x2475: 0x000a,\n\t0x2476: 0x000a, 0x2477: 0x000a, 0x2478: 0x000a, 0x2479: 0x000a, 0x247a: 0x000a, 0x247b: 0x000a,\n\t0x247c: 0x000a, 0x247d: 0x000a, 0x247e: 0x000a, 0x247f: 0x000a,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000a, 0x2481: 0x000a, 0x2482: 0x000a, 0x2483: 0x000a, 0x2484: 0x000a, 0x2485: 0x000a,\n\t0x2486: 0x000a, 0x2487: 0x000a, 0x2488: 0x000a, 0x2489: 0x000a, 0x248a: 0x000a, 0x248b: 0x000a,\n\t0x248c: 0x000a, 0x248d: 0x000a, 0x248e: 0x000a, 0x248f: 0x000a, 0x2490: 0x0006, 0x2491: 0x000a,\n\t0x2492: 0x0006, 0x2494: 0x000a, 0x2495: 0x0006, 0x2496: 0x000a, 0x2497: 0x000a,\n\t0x2498: 0x000a, 0x2499: 0x009a, 0x249a: 0x008a, 0x249b: 0x007a, 0x249c: 0x006a, 0x249d: 0x009a,\n\t0x249e: 0x008a, 0x249f: 0x0004, 0x24a0: 0x000a, 0x24a1: 0x000a, 0x24a2: 0x0003, 0x24a3: 0x0003,\n\t0x24a4: 0x000a, 0x24a5: 0x000a, 0x24a6: 0x000a, 0x24a8: 0x000a, 0x24a9: 0x0004,\n\t0x24aa: 0x0004, 0x24ab: 0x000a,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000d,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000d, 0x24c1: 0x000d, 0x24c2: 0x000d, 0x24c3: 0x000d, 0x24c4: 0x000d, 0x24c5: 0x000d,\n\t0x24c6: 0x000d, 0x24c7: 0x000d, 0x24c8: 0x000d, 0x24c9: 0x000d, 0x24ca: 0x000d, 0x24cb: 0x000d,\n\t0x24cc: 0x000d, 0x24cd: 0x000d, 0x24ce: 0x000d, 0x24cf: 0x000d, 0x24d0: 0x000d, 0x24d1: 0x000d,\n\t0x24d2: 0x000d, 0x24d3: 0x000d, 0x24d4: 0x000d, 0x24d5: 0x000d, 0x24d6: 0x000d, 0x24d7: 0x000d,\n\t0x24d8: 0x000d, 0x24d9: 0x000d, 0x24da: 0x000d, 0x24db: 0x000d, 0x24dc: 0x000d, 0x24dd: 0x000d,\n\t0x24de: 0x000d, 0x24df: 0x000d, 0x24e0: 0x000d, 0x24e1: 0x000d, 0x24e2: 0x000d, 0x24e3: 0x000d,\n\t0x24e4: 0x000d, 0x24e5: 0x000d, 0x24e6: 0x000d, 0x24e7: 0x000d, 0x24e8: 0x000d, 0x24e9: 0x000d,\n\t0x24ea: 0x000d, 0x24eb: 0x000d, 0x24ec: 0x000d, 0x24ed: 0x000d, 0x24ee: 0x000d, 0x24ef: 0x000d,\n\t0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d,\n\t0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d,\n\t0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000b,\n\t// Block 0x94, offset 0x2500\n\t0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x0004, 0x2504: 0x0004, 0x2505: 0x0004,\n\t0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x003a, 0x2509: 0x002a, 0x250a: 0x000a, 0x250b: 0x0003,\n\t0x250c: 0x0006, 0x250d: 0x0003, 0x250e: 0x0006, 0x250f: 0x0006, 0x2510: 0x0002, 0x2511: 0x0002,\n\t0x2512: 0x0002, 0x2513: 0x0002, 0x2514: 0x0002, 0x2515: 0x0002, 0x2516: 0x0002, 0x2517: 0x0002,\n\t0x2518: 0x0002, 0x2519: 0x0002, 0x251a: 0x0006, 0x251b: 0x000a, 0x251c: 0x000a, 0x251d: 0x000a,\n\t0x251e: 0x000a, 0x251f: 0x000a, 0x2520: 0x000a,\n\t0x253b: 0x005a,\n\t0x253c: 0x000a, 0x253d: 0x004a, 0x253e: 0x000a, 0x253f: 0x000a,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000a,\n\t0x255b: 0x005a, 0x255c: 0x000a, 0x255d: 0x004a,\n\t0x255e: 0x000a, 0x255f: 0x00fa, 0x2560: 0x00ea, 0x2561: 0x000a, 0x2562: 0x003a, 0x2563: 0x002a,\n\t0x2564: 0x000a, 0x2565: 0x000a,\n\t// Block 0x96, offset 0x2580\n\t0x25a0: 0x0004, 0x25a1: 0x0004, 0x25a2: 0x000a, 0x25a3: 0x000a,\n\t0x25a4: 0x000a, 0x25a5: 0x0004, 0x25a6: 0x0004, 0x25a8: 0x000a, 0x25a9: 0x000a,\n\t0x25aa: 0x000a, 0x25ab: 0x000a, 0x25ac: 0x000a, 0x25ad: 0x000a, 0x25ae: 0x000a,\n\t0x25b0: 0x000b, 0x25b1: 0x000b, 0x25b2: 0x000b, 0x25b3: 0x000b, 0x25b4: 0x000b, 0x25b5: 0x000b,\n\t0x25b6: 0x000b, 0x25b7: 0x000b, 0x25b8: 0x000b, 0x25b9: 0x000a, 0x25ba: 0x000a, 0x25bb: 0x000a,\n\t0x25bc: 0x000a, 0x25bd: 0x000a, 0x25be: 0x000b, 0x25bf: 0x000b,\n\t// Block 0x97, offset 0x25c0\n\t0x25c1: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2600: 0x000a, 0x2601: 0x000a, 0x2602: 0x000a, 0x2603: 0x000a, 0x2604: 0x000a, 0x2605: 0x000a,\n\t0x2606: 0x000a, 0x2607: 0x000a, 0x2608: 0x000a, 0x2609: 0x000a, 0x260a: 0x000a, 0x260b: 0x000a,\n\t0x260c: 0x000a, 0x2610: 0x000a, 0x2611: 0x000a,\n\t0x2612: 0x000a, 0x2613: 0x000a, 0x2614: 0x000a, 0x2615: 0x000a, 0x2616: 0x000a, 0x2617: 0x000a,\n\t0x2618: 0x000a, 0x2619: 0x000a, 0x261a: 0x000a, 0x261b: 0x000a,\n\t0x2620: 0x000a,\n\t// Block 0x99, offset 0x2640\n\t0x267d: 0x000c,\n\t// Block 0x9a, offset 0x2680\n\t0x26a0: 0x000c, 0x26a1: 0x0002, 0x26a2: 0x0002, 0x26a3: 0x0002,\n\t0x26a4: 0x0002, 0x26a5: 0x0002, 0x26a6: 0x0002, 0x26a7: 0x0002, 0x26a8: 0x0002, 0x26a9: 0x0002,\n\t0x26aa: 0x0002, 0x26ab: 0x0002, 0x26ac: 0x0002, 0x26ad: 0x0002, 0x26ae: 0x0002, 0x26af: 0x0002,\n\t0x26b0: 0x0002, 0x26b1: 0x0002, 0x26b2: 0x0002, 0x26b3: 0x0002, 0x26b4: 0x0002, 0x26b5: 0x0002,\n\t0x26b6: 0x0002, 0x26b7: 0x0002, 0x26b8: 0x0002, 0x26b9: 0x0002, 0x26ba: 0x0002, 0x26bb: 0x0002,\n\t// Block 0x9b, offset 0x26c0\n\t0x26f6: 0x000c, 0x26f7: 0x000c, 0x26f8: 0x000c, 0x26f9: 0x000c, 0x26fa: 0x000c,\n\t// Block 0x9c, offset 0x2700\n\t0x2700: 0x0001, 0x2701: 0x0001, 0x2702: 0x0001, 0x2703: 0x0001, 0x2704: 0x0001, 0x2705: 0x0001,\n\t0x2706: 0x0001, 0x2707: 0x0001, 0x2708: 0x0001, 0x2709: 0x0001, 0x270a: 0x0001, 0x270b: 0x0001,\n\t0x270c: 0x0001, 0x270d: 0x0001, 0x270e: 0x0001, 0x270f: 0x0001, 0x2710: 0x0001, 0x2711: 0x0001,\n\t0x2712: 0x0001, 0x2713: 0x0001, 0x2714: 0x0001, 0x2715: 0x0001, 0x2716: 0x0001, 0x2717: 0x0001,\n\t0x2718: 0x0001, 0x2719: 0x0001, 0x271a: 0x0001, 0x271b: 0x0001, 0x271c: 0x0001, 0x271d: 0x0001,\n\t0x271e: 0x0001, 0x271f: 0x0001, 0x2720: 0x0001, 0x2721: 0x0001, 0x2722: 0x0001, 0x2723: 0x0001,\n\t0x2724: 0x0001, 0x2725: 0x0001, 0x2726: 0x0001, 0x2727: 0x0001, 0x2728: 0x0001, 0x2729: 0x0001,\n\t0x272a: 0x0001, 0x272b: 0x0001, 0x272c: 0x0001, 0x272d: 0x0001, 0x272e: 0x0001, 0x272f: 0x0001,\n\t0x2730: 0x0001, 0x2731: 0x0001, 0x2732: 0x0001, 0x2733: 0x0001, 0x2734: 0x0001, 0x2735: 0x0001,\n\t0x2736: 0x0001, 0x2737: 0x0001, 0x2738: 0x0001, 0x2739: 0x0001, 0x273a: 0x0001, 0x273b: 0x0001,\n\t0x273c: 0x0001, 0x273d: 0x0001, 0x273e: 0x0001, 0x273f: 0x0001,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001,\n\t0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001,\n\t0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001,\n\t0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001,\n\t0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001,\n\t0x275e: 0x0001, 0x275f: 0x000a, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001,\n\t0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001,\n\t0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001,\n\t0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001,\n\t0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001,\n\t0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x000c, 0x2782: 0x000c, 0x2783: 0x000c, 0x2784: 0x0001, 0x2785: 0x000c,\n\t0x2786: 0x000c, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x000c, 0x278d: 0x000c, 0x278e: 0x000c, 0x278f: 0x000c, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x000c, 0x27b9: 0x000c, 0x27ba: 0x000c, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x000c,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x000c, 0x27e6: 0x000c, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001,\n\t0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x000a, 0x283a: 0x000a, 0x283b: 0x000a,\n\t0x283c: 0x000a, 0x283d: 0x000a, 0x283e: 0x000a, 0x283f: 0x000a,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0005, 0x2861: 0x0005, 0x2862: 0x0005, 0x2863: 0x0005,\n\t0x2864: 0x0005, 0x2865: 0x0005, 0x2866: 0x0005, 0x2867: 0x0005, 0x2868: 0x0005, 0x2869: 0x0005,\n\t0x286a: 0x0005, 0x286b: 0x0005, 0x286c: 0x0005, 0x286d: 0x0005, 0x286e: 0x0005, 0x286f: 0x0005,\n\t0x2870: 0x0005, 0x2871: 0x0005, 0x2872: 0x0005, 0x2873: 0x0005, 0x2874: 0x0005, 0x2875: 0x0005,\n\t0x2876: 0x0005, 0x2877: 0x0005, 0x2878: 0x0005, 0x2879: 0x0005, 0x287a: 0x0005, 0x287b: 0x0005,\n\t0x287c: 0x0005, 0x287d: 0x0005, 0x287e: 0x0005, 0x287f: 0x0001,\n\t// Block 0xa2, offset 0x2880\n\t0x2881: 0x000c,\n\t0x28b8: 0x000c, 0x28b9: 0x000c, 0x28ba: 0x000c, 0x28bb: 0x000c,\n\t0x28bc: 0x000c, 0x28bd: 0x000c, 0x28be: 0x000c, 0x28bf: 0x000c,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x000c, 0x28c1: 0x000c, 0x28c2: 0x000c, 0x28c3: 0x000c, 0x28c4: 0x000c, 0x28c5: 0x000c,\n\t0x28c6: 0x000c,\n\t0x28d2: 0x000a, 0x28d3: 0x000a, 0x28d4: 0x000a, 0x28d5: 0x000a, 0x28d6: 0x000a, 0x28d7: 0x000a,\n\t0x28d8: 0x000a, 0x28d9: 0x000a, 0x28da: 0x000a, 0x28db: 0x000a, 0x28dc: 0x000a, 0x28dd: 0x000a,\n\t0x28de: 0x000a, 0x28df: 0x000a, 0x28e0: 0x000a, 0x28e1: 0x000a, 0x28e2: 0x000a, 0x28e3: 0x000a,\n\t0x28e4: 0x000a, 0x28e5: 0x000a,\n\t0x28ff: 0x000c,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x000c, 0x2901: 0x000c,\n\t0x2933: 0x000c, 0x2934: 0x000c, 0x2935: 0x000c,\n\t0x2936: 0x000c, 0x2939: 0x000c, 0x293a: 0x000c,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x000c, 0x2941: 0x000c, 0x2942: 0x000c,\n\t0x2967: 0x000c, 0x2968: 0x000c, 0x2969: 0x000c,\n\t0x296a: 0x000c, 0x296b: 0x000c, 0x296d: 0x000c, 0x296e: 0x000c, 0x296f: 0x000c,\n\t0x2970: 0x000c, 0x2971: 0x000c, 0x2972: 0x000c, 0x2973: 0x000c, 0x2974: 0x000c,\n\t// Block 0xa6, offset 0x2980\n\t0x29b3: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x000c, 0x29c1: 0x000c,\n\t0x29f6: 0x000c, 0x29f7: 0x000c, 0x29f8: 0x000c, 0x29f9: 0x000c, 0x29fa: 0x000c, 0x29fb: 0x000c,\n\t0x29fc: 0x000c, 0x29fd: 0x000c, 0x29fe: 0x000c,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a0a: 0x000c, 0x2a0b: 0x000c,\n\t0x2a0c: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a6f: 0x000c,\n\t0x2a70: 0x000c, 0x2a71: 0x000c, 0x2a74: 0x000c,\n\t0x2a76: 0x000c, 0x2a77: 0x000c,\n\t0x2a7e: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a9f: 0x000c, 0x2aa3: 0x000c,\n\t0x2aa4: 0x000c, 0x2aa5: 0x000c, 0x2aa6: 0x000c, 0x2aa7: 0x000c, 0x2aa8: 0x000c, 0x2aa9: 0x000c,\n\t0x2aaa: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x000c, 0x2ac1: 0x000c,\n\t0x2afc: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x000c,\n\t0x2b26: 0x000c, 0x2b27: 0x000c, 0x2b28: 0x000c, 0x2b29: 0x000c,\n\t0x2b2a: 0x000c, 0x2b2b: 0x000c, 0x2b2c: 0x000c,\n\t0x2b30: 0x000c, 0x2b31: 0x000c, 0x2b32: 0x000c, 0x2b33: 0x000c, 0x2b34: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b78: 0x000c, 0x2b79: 0x000c, 0x2b7a: 0x000c, 0x2b7b: 0x000c,\n\t0x2b7c: 0x000c, 0x2b7d: 0x000c, 0x2b7e: 0x000c, 0x2b7f: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2b82: 0x000c, 0x2b83: 0x000c, 0x2b84: 0x000c,\n\t0x2b86: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bf3: 0x000c, 0x2bf4: 0x000c, 0x2bf5: 0x000c,\n\t0x2bf6: 0x000c, 0x2bf7: 0x000c, 0x2bf8: 0x000c, 0x2bfa: 0x000c,\n\t0x2bff: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c00: 0x000c, 0x2c02: 0x000c, 0x2c03: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c72: 0x000c, 0x2c73: 0x000c, 0x2c74: 0x000c, 0x2c75: 0x000c,\n\t0x2c7c: 0x000c, 0x2c7d: 0x000c, 0x2c7f: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c80: 0x000c,\n\t0x2c9c: 0x000c, 0x2c9d: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cf3: 0x000c, 0x2cf4: 0x000c, 0x2cf5: 0x000c,\n\t0x2cf6: 0x000c, 0x2cf7: 0x000c, 0x2cf8: 0x000c, 0x2cf9: 0x000c, 0x2cfa: 0x000c,\n\t0x2cfd: 0x000c, 0x2cff: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d00: 0x000c,\n\t0x2d20: 0x000a, 0x2d21: 0x000a, 0x2d22: 0x000a, 0x2d23: 0x000a,\n\t0x2d24: 0x000a, 0x2d25: 0x000a, 0x2d26: 0x000a, 0x2d27: 0x000a, 0x2d28: 0x000a, 0x2d29: 0x000a,\n\t0x2d2a: 0x000a, 0x2d2b: 0x000a, 0x2d2c: 0x000a,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d6b: 0x000c, 0x2d6d: 0x000c,\n\t0x2d70: 0x000c, 0x2d71: 0x000c, 0x2d72: 0x000c, 0x2d73: 0x000c, 0x2d74: 0x000c, 0x2d75: 0x000c,\n\t0x2d77: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2d9d: 0x000c,\n\t0x2d9e: 0x000c, 0x2d9f: 0x000c, 0x2da2: 0x000c, 0x2da3: 0x000c,\n\t0x2da4: 0x000c, 0x2da5: 0x000c, 0x2da7: 0x000c, 0x2da8: 0x000c, 0x2da9: 0x000c,\n\t0x2daa: 0x000c, 0x2dab: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc1: 0x000c, 0x2dc2: 0x000c, 0x2dc3: 0x000c, 0x2dc4: 0x000c, 0x2dc5: 0x000c,\n\t0x2dc6: 0x000c, 0x2dc9: 0x000c, 0x2dca: 0x000c,\n\t0x2df3: 0x000c, 0x2df4: 0x000c, 0x2df5: 0x000c,\n\t0x2df6: 0x000c, 0x2df7: 0x000c, 0x2df8: 0x000c, 0x2dfb: 0x000c,\n\t0x2dfc: 0x000c, 0x2dfd: 0x000c, 0x2dfe: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e07: 0x000c,\n\t0x2e11: 0x000c,\n\t0x2e12: 0x000c, 0x2e13: 0x000c, 0x2e14: 0x000c, 0x2e15: 0x000c, 0x2e16: 0x000c,\n\t0x2e19: 0x000c, 0x2e1a: 0x000c, 0x2e1b: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e4a: 0x000c, 0x2e4b: 0x000c,\n\t0x2e4c: 0x000c, 0x2e4d: 0x000c, 0x2e4e: 0x000c, 0x2e4f: 0x000c, 0x2e50: 0x000c, 0x2e51: 0x000c,\n\t0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c,\n\t0x2e58: 0x000c, 0x2e59: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb8: 0x000c, 0x2eb9: 0x000c, 0x2eba: 0x000c, 0x2ebb: 0x000c,\n\t0x2ebc: 0x000c, 0x2ebd: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ed2: 0x000c, 0x2ed3: 0x000c, 0x2ed4: 0x000c, 0x2ed5: 0x000c, 0x2ed6: 0x000c, 0x2ed7: 0x000c,\n\t0x2ed8: 0x000c, 0x2ed9: 0x000c, 0x2eda: 0x000c, 0x2edb: 0x000c, 0x2edc: 0x000c, 0x2edd: 0x000c,\n\t0x2ede: 0x000c, 0x2edf: 0x000c, 0x2ee0: 0x000c, 0x2ee1: 0x000c, 0x2ee2: 0x000c, 0x2ee3: 0x000c,\n\t0x2ee4: 0x000c, 0x2ee5: 0x000c, 0x2ee6: 0x000c, 0x2ee7: 0x000c,\n\t0x2eea: 0x000c, 0x2eeb: 0x000c, 0x2eec: 0x000c, 0x2eed: 0x000c, 0x2eee: 0x000c, 0x2eef: 0x000c,\n\t0x2ef0: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef5: 0x000c,\n\t0x2ef6: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,\n\t0x2f36: 0x000c, 0x2f3a: 0x000c,\n\t0x2f3c: 0x000c, 0x2f3d: 0x000c, 0x2f3f: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f40: 0x000c, 0x2f41: 0x000c, 0x2f42: 0x000c, 0x2f43: 0x000c, 0x2f44: 0x000c, 0x2f45: 0x000c,\n\t0x2f47: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2fb0: 0x000c, 0x2fb1: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb4: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2ff0: 0x000c, 0x2ff1: 0x000c, 0x2ff2: 0x000c, 0x2ff3: 0x000c, 0x2ff4: 0x000c, 0x2ff5: 0x000c,\n\t0x2ff6: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x300f: 0x000c, 0x3010: 0x000c, 0x3011: 0x000c,\n\t0x3012: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x305d: 0x000c,\n\t0x305e: 0x000c, 0x3060: 0x000b, 0x3061: 0x000b, 0x3062: 0x000b, 0x3063: 0x000b,\n\t// Block 0xc2, offset 0x3080\n\t0x30a7: 0x000c, 0x30a8: 0x000c, 0x30a9: 0x000c,\n\t0x30b3: 0x000b, 0x30b4: 0x000b, 0x30b5: 0x000b,\n\t0x30b6: 0x000b, 0x30b7: 0x000b, 0x30b8: 0x000b, 0x30b9: 0x000b, 0x30ba: 0x000b, 0x30bb: 0x000c,\n\t0x30bc: 0x000c, 0x30bd: 0x000c, 0x30be: 0x000c, 0x30bf: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30c0: 0x000c, 0x30c1: 0x000c, 0x30c2: 0x000c, 0x30c5: 0x000c,\n\t0x30c6: 0x000c, 0x30c7: 0x000c, 0x30c8: 0x000c, 0x30c9: 0x000c, 0x30ca: 0x000c, 0x30cb: 0x000c,\n\t0x30ea: 0x000c, 0x30eb: 0x000c, 0x30ec: 0x000c, 0x30ed: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x3100: 0x000a, 0x3101: 0x000a, 0x3102: 0x000c, 0x3103: 0x000c, 0x3104: 0x000c, 0x3105: 0x000a,\n\t// Block 0xc5, offset 0x3140\n\t0x3140: 0x000a, 0x3141: 0x000a, 0x3142: 0x000a, 0x3143: 0x000a, 0x3144: 0x000a, 0x3145: 0x000a,\n\t0x3146: 0x000a, 0x3147: 0x000a, 0x3148: 0x000a, 0x3149: 0x000a, 0x314a: 0x000a, 0x314b: 0x000a,\n\t0x314c: 0x000a, 0x314d: 0x000a, 0x314e: 0x000a, 0x314f: 0x000a, 0x3150: 0x000a, 0x3151: 0x000a,\n\t0x3152: 0x000a, 0x3153: 0x000a, 0x3154: 0x000a, 0x3155: 0x000a, 0x3156: 0x000a,\n\t// Block 0xc6, offset 0x3180\n\t0x319b: 0x000a,\n\t// Block 0xc7, offset 0x31c0\n\t0x31d5: 0x000a,\n\t// Block 0xc8, offset 0x3200\n\t0x320f: 0x000a,\n\t// Block 0xc9, offset 0x3240\n\t0x3249: 0x000a,\n\t// Block 0xca, offset 0x3280\n\t0x3283: 0x000a,\n\t0x328e: 0x0002, 0x328f: 0x0002, 0x3290: 0x0002, 0x3291: 0x0002,\n\t0x3292: 0x0002, 0x3293: 0x0002, 0x3294: 0x0002, 0x3295: 0x0002, 0x3296: 0x0002, 0x3297: 0x0002,\n\t0x3298: 0x0002, 0x3299: 0x0002, 0x329a: 0x0002, 0x329b: 0x0002, 0x329c: 0x0002, 0x329d: 0x0002,\n\t0x329e: 0x0002, 0x329f: 0x0002, 0x32a0: 0x0002, 0x32a1: 0x0002, 0x32a2: 0x0002, 0x32a3: 0x0002,\n\t0x32a4: 0x0002, 0x32a5: 0x0002, 0x32a6: 0x0002, 0x32a7: 0x0002, 0x32a8: 0x0002, 0x32a9: 0x0002,\n\t0x32aa: 0x0002, 0x32ab: 0x0002, 0x32ac: 0x0002, 0x32ad: 0x0002, 0x32ae: 0x0002, 0x32af: 0x0002,\n\t0x32b0: 0x0002, 0x32b1: 0x0002, 0x32b2: 0x0002, 0x32b3: 0x0002, 0x32b4: 0x0002, 0x32b5: 0x0002,\n\t0x32b6: 0x0002, 0x32b7: 0x0002, 0x32b8: 0x0002, 0x32b9: 0x0002, 0x32ba: 0x0002, 0x32bb: 0x0002,\n\t0x32bc: 0x0002, 0x32bd: 0x0002, 0x32be: 0x0002, 0x32bf: 0x0002,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x000c, 0x32c1: 0x000c, 0x32c2: 0x000c, 0x32c3: 0x000c, 0x32c4: 0x000c, 0x32c5: 0x000c,\n\t0x32c6: 0x000c, 0x32c7: 0x000c, 0x32c8: 0x000c, 0x32c9: 0x000c, 0x32ca: 0x000c, 0x32cb: 0x000c,\n\t0x32cc: 0x000c, 0x32cd: 0x000c, 0x32ce: 0x000c, 0x32cf: 0x000c, 0x32d0: 0x000c, 0x32d1: 0x000c,\n\t0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x000c,\n\t0x32d8: 0x000c, 0x32d9: 0x000c, 0x32da: 0x000c, 0x32db: 0x000c, 0x32dc: 0x000c, 0x32dd: 0x000c,\n\t0x32de: 0x000c, 0x32df: 0x000c, 0x32e0: 0x000c, 0x32e1: 0x000c, 0x32e2: 0x000c, 0x32e3: 0x000c,\n\t0x32e4: 0x000c, 0x32e5: 0x000c, 0x32e6: 0x000c, 0x32e7: 0x000c, 0x32e8: 0x000c, 0x32e9: 0x000c,\n\t0x32ea: 0x000c, 0x32eb: 0x000c, 0x32ec: 0x000c, 0x32ed: 0x000c, 0x32ee: 0x000c, 0x32ef: 0x000c,\n\t0x32f0: 0x000c, 0x32f1: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f4: 0x000c, 0x32f5: 0x000c,\n\t0x32f6: 0x000c, 0x32fb: 0x000c,\n\t0x32fc: 0x000c, 0x32fd: 0x000c, 0x32fe: 0x000c, 0x32ff: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x000c, 0x3301: 0x000c, 0x3302: 0x000c, 0x3303: 0x000c, 0x3304: 0x000c, 0x3305: 0x000c,\n\t0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x000c,\n\t0x330c: 0x000c, 0x330d: 0x000c, 0x330e: 0x000c, 0x330f: 0x000c, 0x3310: 0x000c, 0x3311: 0x000c,\n\t0x3312: 0x000c, 0x3313: 0x000c, 0x3314: 0x000c, 0x3315: 0x000c, 0x3316: 0x000c, 0x3317: 0x000c,\n\t0x3318: 0x000c, 0x3319: 0x000c, 0x331a: 0x000c, 0x331b: 0x000c, 0x331c: 0x000c, 0x331d: 0x000c,\n\t0x331e: 0x000c, 0x331f: 0x000c, 0x3320: 0x000c, 0x3321: 0x000c, 0x3322: 0x000c, 0x3323: 0x000c,\n\t0x3324: 0x000c, 0x3325: 0x000c, 0x3326: 0x000c, 0x3327: 0x000c, 0x3328: 0x000c, 0x3329: 0x000c,\n\t0x332a: 0x000c, 0x332b: 0x000c, 0x332c: 0x000c,\n\t0x3335: 0x000c,\n\t// Block 0xcd, offset 0x3340\n\t0x3344: 0x000c,\n\t0x335b: 0x000c, 0x335c: 0x000c, 0x335d: 0x000c,\n\t0x335e: 0x000c, 0x335f: 0x000c, 0x3361: 0x000c, 0x3362: 0x000c, 0x3363: 0x000c,\n\t0x3364: 0x000c, 0x3365: 0x000c, 0x3366: 0x000c, 0x3367: 0x000c, 0x3368: 0x000c, 0x3369: 0x000c,\n\t0x336a: 0x000c, 0x336b: 0x000c, 0x336c: 0x000c, 0x336d: 0x000c, 0x336e: 0x000c, 0x336f: 0x000c,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x000c, 0x3381: 0x000c, 0x3382: 0x000c, 0x3383: 0x000c, 0x3384: 0x000c, 0x3385: 0x000c,\n\t0x3386: 0x000c, 0x3388: 0x000c, 0x3389: 0x000c, 0x338a: 0x000c, 0x338b: 0x000c,\n\t0x338c: 0x000c, 0x338d: 0x000c, 0x338e: 0x000c, 0x338f: 0x000c, 0x3390: 0x000c, 0x3391: 0x000c,\n\t0x3392: 0x000c, 0x3393: 0x000c, 0x3394: 0x000c, 0x3395: 0x000c, 0x3396: 0x000c, 0x3397: 0x000c,\n\t0x3398: 0x000c, 0x339b: 0x000c, 0x339c: 0x000c, 0x339d: 0x000c,\n\t0x339e: 0x000c, 0x339f: 0x000c, 0x33a0: 0x000c, 0x33a1: 0x000c, 0x33a3: 0x000c,\n\t0x33a4: 0x000c, 0x33a6: 0x000c, 0x33a7: 0x000c, 0x33a8: 0x000c, 0x33a9: 0x000c,\n\t0x33aa: 0x000c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c0: 0x0001, 0x33c1: 0x0001, 0x33c2: 0x0001, 0x33c3: 0x0001, 0x33c4: 0x0001, 0x33c5: 0x0001,\n\t0x33c6: 0x0001, 0x33c7: 0x0001, 0x33c8: 0x0001, 0x33c9: 0x0001, 0x33ca: 0x0001, 0x33cb: 0x0001,\n\t0x33cc: 0x0001, 0x33cd: 0x0001, 0x33ce: 0x0001, 0x33cf: 0x0001, 0x33d0: 0x000c, 0x33d1: 0x000c,\n\t0x33d2: 0x000c, 0x33d3: 0x000c, 0x33d4: 0x000c, 0x33d5: 0x000c, 0x33d6: 0x000c, 0x33d7: 0x0001,\n\t0x33d8: 0x0001, 0x33d9: 0x0001, 0x33da: 0x0001, 0x33db: 0x0001, 0x33dc: 0x0001, 0x33dd: 0x0001,\n\t0x33de: 0x0001, 0x33df: 0x0001, 0x33e0: 0x0001, 0x33e1: 0x0001, 0x33e2: 0x0001, 0x33e3: 0x0001,\n\t0x33e4: 0x0001, 0x33e5: 0x0001, 0x33e6: 0x0001, 0x33e7: 0x0001, 0x33e8: 0x0001, 0x33e9: 0x0001,\n\t0x33ea: 0x0001, 0x33eb: 0x0001, 0x33ec: 0x0001, 0x33ed: 0x0001, 0x33ee: 0x0001, 0x33ef: 0x0001,\n\t0x33f0: 0x0001, 0x33f1: 0x0001, 0x33f2: 0x0001, 0x33f3: 0x0001, 0x33f4: 0x0001, 0x33f5: 0x0001,\n\t0x33f6: 0x0001, 0x33f7: 0x0001, 0x33f8: 0x0001, 0x33f9: 0x0001, 0x33fa: 0x0001, 0x33fb: 0x0001,\n\t0x33fc: 0x0001, 0x33fd: 0x0001, 0x33fe: 0x0001, 0x33ff: 0x0001,\n\t// Block 0xd0, offset 0x3400\n\t0x3400: 0x0001, 0x3401: 0x0001, 0x3402: 0x0001, 0x3403: 0x0001, 0x3404: 0x000c, 0x3405: 0x000c,\n\t0x3406: 0x000c, 0x3407: 0x000c, 0x3408: 0x000c, 0x3409: 0x000c, 0x340a: 0x000c, 0x340b: 0x0001,\n\t0x340c: 0x0001, 0x340d: 0x0001, 0x340e: 0x0001, 0x340f: 0x0001, 0x3410: 0x0001, 0x3411: 0x0001,\n\t0x3412: 0x0001, 0x3413: 0x0001, 0x3414: 0x0001, 0x3415: 0x0001, 0x3416: 0x0001, 0x3417: 0x0001,\n\t0x3418: 0x0001, 0x3419: 0x0001, 0x341a: 0x0001, 0x341b: 0x0001, 0x341c: 0x0001, 0x341d: 0x0001,\n\t0x341e: 0x0001, 0x341f: 0x0001, 0x3420: 0x0001, 0x3421: 0x0001, 0x3422: 0x0001, 0x3423: 0x0001,\n\t0x3424: 0x0001, 0x3425: 0x0001, 0x3426: 0x0001, 0x3427: 0x0001, 0x3428: 0x0001, 0x3429: 0x0001,\n\t0x342a: 0x0001, 0x342b: 0x0001, 0x342c: 0x0001, 0x342d: 0x0001, 0x342e: 0x0001, 0x342f: 0x0001,\n\t0x3430: 0x0001, 0x3431: 0x0001, 0x3432: 0x0001, 0x3433: 0x0001, 0x3434: 0x0001, 0x3435: 0x0001,\n\t0x3436: 0x0001, 0x3437: 0x0001, 0x3438: 0x0001, 0x3439: 0x0001, 0x343a: 0x0001, 0x343b: 0x0001,\n\t0x343c: 0x0001, 0x343d: 0x0001, 0x343e: 0x0001, 0x343f: 0x0001,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x000d, 0x3441: 0x000d, 0x3442: 0x000d, 0x3443: 0x000d, 0x3444: 0x000d, 0x3445: 0x000d,\n\t0x3446: 0x000d, 0x3447: 0x000d, 0x3448: 0x000d, 0x3449: 0x000d, 0x344a: 0x000d, 0x344b: 0x000d,\n\t0x344c: 0x000d, 0x344d: 0x000d, 0x344e: 0x000d, 0x344f: 0x000d, 0x3450: 0x000d, 0x3451: 0x000d,\n\t0x3452: 0x000d, 0x3453: 0x000d, 0x3454: 0x000d, 0x3455: 0x000d, 0x3456: 0x000d, 0x3457: 0x000d,\n\t0x3458: 0x000d, 0x3459: 0x000d, 0x345a: 0x000d, 0x345b: 0x000d, 0x345c: 0x000d, 0x345d: 0x000d,\n\t0x345e: 0x000d, 0x345f: 0x000d, 0x3460: 0x000d, 0x3461: 0x000d, 0x3462: 0x000d, 0x3463: 0x000d,\n\t0x3464: 0x000d, 0x3465: 0x000d, 0x3466: 0x000d, 0x3467: 0x000d, 0x3468: 0x000d, 0x3469: 0x000d,\n\t0x346a: 0x000d, 0x346b: 0x000d, 0x346c: 0x000d, 0x346d: 0x000d, 0x346e: 0x000d, 0x346f: 0x000d,\n\t0x3470: 0x000a, 0x3471: 0x000a, 0x3472: 0x000d, 0x3473: 0x000d, 0x3474: 0x000d, 0x3475: 0x000d,\n\t0x3476: 0x000d, 0x3477: 0x000d, 0x3478: 0x000d, 0x3479: 0x000d, 0x347a: 0x000d, 0x347b: 0x000d,\n\t0x347c: 0x000d, 0x347d: 0x000d, 0x347e: 0x000d, 0x347f: 0x000d,\n\t// Block 0xd2, offset 0x3480\n\t0x3480: 0x000a, 0x3481: 0x000a, 0x3482: 0x000a, 0x3483: 0x000a, 0x3484: 0x000a, 0x3485: 0x000a,\n\t0x3486: 0x000a, 0x3487: 0x000a, 0x3488: 0x000a, 0x3489: 0x000a, 0x348a: 0x000a, 0x348b: 0x000a,\n\t0x348c: 0x000a, 0x348d: 0x000a, 0x348e: 0x000a, 0x348f: 0x000a, 0x3490: 0x000a, 0x3491: 0x000a,\n\t0x3492: 0x000a, 0x3493: 0x000a, 0x3494: 0x000a, 0x3495: 0x000a, 0x3496: 0x000a, 0x3497: 0x000a,\n\t0x3498: 0x000a, 0x3499: 0x000a, 0x349a: 0x000a, 0x349b: 0x000a, 0x349c: 0x000a, 0x349d: 0x000a,\n\t0x349e: 0x000a, 0x349f: 0x000a, 0x34a0: 0x000a, 0x34a1: 0x000a, 0x34a2: 0x000a, 0x34a3: 0x000a,\n\t0x34a4: 0x000a, 0x34a5: 0x000a, 0x34a6: 0x000a, 0x34a7: 0x000a, 0x34a8: 0x000a, 0x34a9: 0x000a,\n\t0x34aa: 0x000a, 0x34ab: 0x000a,\n\t0x34b0: 0x000a, 0x34b1: 0x000a, 0x34b2: 0x000a, 0x34b3: 0x000a, 0x34b4: 0x000a, 0x34b5: 0x000a,\n\t0x34b6: 0x000a, 0x34b7: 0x000a, 0x34b8: 0x000a, 0x34b9: 0x000a, 0x34ba: 0x000a, 0x34bb: 0x000a,\n\t0x34bc: 0x000a, 0x34bd: 0x000a, 0x34be: 0x000a, 0x34bf: 0x000a,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a,\n\t0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a,\n\t0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a,\n\t0x34d2: 0x000a, 0x34d3: 0x000a,\n\t0x34e0: 0x000a, 0x34e1: 0x000a, 0x34e2: 0x000a, 0x34e3: 0x000a,\n\t0x34e4: 0x000a, 0x34e5: 0x000a, 0x34e6: 0x000a, 0x34e7: 0x000a, 0x34e8: 0x000a, 0x34e9: 0x000a,\n\t0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a, 0x34ed: 0x000a, 0x34ee: 0x000a,\n\t0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a,\n\t0x34f6: 0x000a, 0x34f7: 0x000a, 0x34f8: 0x000a, 0x34f9: 0x000a, 0x34fa: 0x000a, 0x34fb: 0x000a,\n\t0x34fc: 0x000a, 0x34fd: 0x000a, 0x34fe: 0x000a, 0x34ff: 0x000a,\n\t// Block 0xd4, offset 0x3500\n\t0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a,\n\t0x3506: 0x000a, 0x3507: 0x000a, 0x3508: 0x000a, 0x3509: 0x000a, 0x350a: 0x000a, 0x350b: 0x000a,\n\t0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3511: 0x000a,\n\t0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a, 0x3515: 0x000a, 0x3516: 0x000a, 0x3517: 0x000a,\n\t0x3518: 0x000a, 0x3519: 0x000a, 0x351a: 0x000a, 0x351b: 0x000a, 0x351c: 0x000a, 0x351d: 0x000a,\n\t0x351e: 0x000a, 0x351f: 0x000a, 0x3520: 0x000a, 0x3521: 0x000a, 0x3522: 0x000a, 0x3523: 0x000a,\n\t0x3524: 0x000a, 0x3525: 0x000a, 0x3526: 0x000a, 0x3527: 0x000a, 0x3528: 0x000a, 0x3529: 0x000a,\n\t0x352a: 0x000a, 0x352b: 0x000a, 0x352c: 0x000a, 0x352d: 0x000a, 0x352e: 0x000a, 0x352f: 0x000a,\n\t0x3530: 0x000a, 0x3531: 0x000a, 0x3532: 0x000a, 0x3533: 0x000a, 0x3534: 0x000a, 0x3535: 0x000a,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x0002, 0x3541: 0x0002, 0x3542: 0x0002, 0x3543: 0x0002, 0x3544: 0x0002, 0x3545: 0x0002,\n\t0x3546: 0x0002, 0x3547: 0x0002, 0x3548: 0x0002, 0x3549: 0x0002, 0x354a: 0x0002, 0x354b: 0x000a,\n\t0x354c: 0x000a,\n\t// Block 0xd6, offset 0x3580\n\t0x35aa: 0x000a, 0x35ab: 0x000a,\n\t// Block 0xd7, offset 0x35c0\n\t0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a,\n\t0x35e4: 0x000a, 0x35e5: 0x000a,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x000a, 0x3601: 0x000a, 0x3602: 0x000a, 0x3603: 0x000a, 0x3604: 0x000a, 0x3605: 0x000a,\n\t0x3606: 0x000a, 0x3607: 0x000a, 0x3608: 0x000a, 0x3609: 0x000a, 0x360a: 0x000a, 0x360b: 0x000a,\n\t0x360c: 0x000a, 0x360d: 0x000a, 0x360e: 0x000a, 0x360f: 0x000a, 0x3610: 0x000a, 0x3611: 0x000a,\n\t0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a,\n\t0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a,\n\t0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, 0x3628: 0x000a, 0x3629: 0x000a,\n\t0x362a: 0x000a, 0x362b: 0x000a, 0x362c: 0x000a,\n\t0x3630: 0x000a, 0x3631: 0x000a, 0x3632: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a,\n\t0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x000a, 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a,\n\t0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a,\n\t0x364c: 0x000a, 0x364d: 0x000a, 0x364e: 0x000a, 0x364f: 0x000a, 0x3650: 0x000a, 0x3651: 0x000a,\n\t0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000a, 0x3683: 0x000a, 0x3684: 0x000a, 0x3685: 0x000a,\n\t0x3686: 0x000a, 0x3687: 0x000a, 0x3688: 0x000a, 0x3689: 0x000a, 0x368a: 0x000a, 0x368b: 0x000a,\n\t0x3690: 0x000a, 0x3691: 0x000a,\n\t0x3692: 0x000a, 0x3693: 0x000a, 0x3694: 0x000a, 0x3695: 0x000a, 0x3696: 0x000a, 0x3697: 0x000a,\n\t0x3698: 0x000a, 0x3699: 0x000a, 0x369a: 0x000a, 0x369b: 0x000a, 0x369c: 0x000a, 0x369d: 0x000a,\n\t0x369e: 0x000a, 0x369f: 0x000a, 0x36a0: 0x000a, 0x36a1: 0x000a, 0x36a2: 0x000a, 0x36a3: 0x000a,\n\t0x36a4: 0x000a, 0x36a5: 0x000a, 0x36a6: 0x000a, 0x36a7: 0x000a, 0x36a8: 0x000a, 0x36a9: 0x000a,\n\t0x36aa: 0x000a, 0x36ab: 0x000a, 0x36ac: 0x000a, 0x36ad: 0x000a, 0x36ae: 0x000a, 0x36af: 0x000a,\n\t0x36b0: 0x000a, 0x36b1: 0x000a, 0x36b2: 0x000a, 0x36b3: 0x000a, 0x36b4: 0x000a, 0x36b5: 0x000a,\n\t0x36b6: 0x000a, 0x36b7: 0x000a, 0x36b8: 0x000a, 0x36b9: 0x000a, 0x36ba: 0x000a, 0x36bb: 0x000a,\n\t0x36bc: 0x000a, 0x36bd: 0x000a, 0x36be: 0x000a, 0x36bf: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a,\n\t0x36c6: 0x000a, 0x36c7: 0x000a,\n\t0x36d0: 0x000a, 0x36d1: 0x000a,\n\t0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a, 0x36d6: 0x000a, 0x36d7: 0x000a,\n\t0x36d8: 0x000a, 0x36d9: 0x000a,\n\t0x36e0: 0x000a, 0x36e1: 0x000a, 0x36e2: 0x000a, 0x36e3: 0x000a,\n\t0x36e4: 0x000a, 0x36e5: 0x000a, 0x36e6: 0x000a, 0x36e7: 0x000a, 0x36e8: 0x000a, 0x36e9: 0x000a,\n\t0x36ea: 0x000a, 0x36eb: 0x000a, 0x36ec: 0x000a, 0x36ed: 0x000a, 0x36ee: 0x000a, 0x36ef: 0x000a,\n\t0x36f0: 0x000a, 0x36f1: 0x000a, 0x36f2: 0x000a, 0x36f3: 0x000a, 0x36f4: 0x000a, 0x36f5: 0x000a,\n\t0x36f6: 0x000a, 0x36f7: 0x000a, 0x36f8: 0x000a, 0x36f9: 0x000a, 0x36fa: 0x000a, 0x36fb: 0x000a,\n\t0x36fc: 0x000a, 0x36fd: 0x000a, 0x36fe: 0x000a, 0x36ff: 0x000a,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000a, 0x3701: 0x000a, 0x3702: 0x000a, 0x3703: 0x000a, 0x3704: 0x000a, 0x3705: 0x000a,\n\t0x3706: 0x000a, 0x3707: 0x000a,\n\t0x3710: 0x000a, 0x3711: 0x000a,\n\t0x3712: 0x000a, 0x3713: 0x000a, 0x3714: 0x000a, 0x3715: 0x000a, 0x3716: 0x000a, 0x3717: 0x000a,\n\t0x3718: 0x000a, 0x3719: 0x000a, 0x371a: 0x000a, 0x371b: 0x000a, 0x371c: 0x000a, 0x371d: 0x000a,\n\t0x371e: 0x000a, 0x371f: 0x000a, 0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a,\n\t0x3724: 0x000a, 0x3725: 0x000a, 0x3726: 0x000a, 0x3727: 0x000a, 0x3728: 0x000a, 0x3729: 0x000a,\n\t0x372a: 0x000a, 0x372b: 0x000a, 0x372c: 0x000a, 0x372d: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a,\n\t0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a,\n\t0x3750: 0x000a, 0x3751: 0x000a,\n\t0x3752: 0x000a, 0x3753: 0x000a, 0x3754: 0x000a, 0x3755: 0x000a, 0x3756: 0x000a, 0x3757: 0x000a,\n\t0x3758: 0x000a, 0x3759: 0x000a, 0x375a: 0x000a, 0x375b: 0x000a, 0x375c: 0x000a, 0x375d: 0x000a,\n\t0x375e: 0x000a, 0x375f: 0x000a, 0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a,\n\t0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a,\n\t0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a, 0x376d: 0x000a, 0x376e: 0x000a, 0x376f: 0x000a,\n\t0x3770: 0x000a, 0x3771: 0x000a, 0x3772: 0x000a, 0x3773: 0x000a, 0x3774: 0x000a, 0x3775: 0x000a,\n\t0x3776: 0x000a, 0x3777: 0x000a, 0x3778: 0x000a, 0x3779: 0x000a, 0x377a: 0x000a, 0x377b: 0x000a,\n\t0x377c: 0x000a, 0x377d: 0x000a, 0x377e: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x000a, 0x3781: 0x000a, 0x3782: 0x000a, 0x3783: 0x000a, 0x3784: 0x000a, 0x3785: 0x000a,\n\t0x3786: 0x000a, 0x3787: 0x000a, 0x3788: 0x000a, 0x3789: 0x000a, 0x378a: 0x000a, 0x378b: 0x000a,\n\t0x378c: 0x000a, 0x3790: 0x000a, 0x3791: 0x000a,\n\t0x3792: 0x000a, 0x3793: 0x000a, 0x3794: 0x000a, 0x3795: 0x000a, 0x3796: 0x000a, 0x3797: 0x000a,\n\t0x3798: 0x000a, 0x3799: 0x000a, 0x379a: 0x000a, 0x379b: 0x000a, 0x379c: 0x000a, 0x379d: 0x000a,\n\t0x379e: 0x000a, 0x379f: 0x000a, 0x37a0: 0x000a, 0x37a1: 0x000a, 0x37a2: 0x000a, 0x37a3: 0x000a,\n\t0x37a4: 0x000a, 0x37a5: 0x000a, 0x37a6: 0x000a, 0x37a7: 0x000a, 0x37a8: 0x000a, 0x37a9: 0x000a,\n\t0x37aa: 0x000a, 0x37ab: 0x000a,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x000a, 0x37c1: 0x000a, 0x37c2: 0x000a, 0x37c3: 0x000a, 0x37c4: 0x000a, 0x37c5: 0x000a,\n\t0x37c6: 0x000a, 0x37c7: 0x000a, 0x37c8: 0x000a, 0x37c9: 0x000a, 0x37ca: 0x000a, 0x37cb: 0x000a,\n\t0x37cc: 0x000a, 0x37cd: 0x000a, 0x37ce: 0x000a, 0x37cf: 0x000a, 0x37d0: 0x000a, 0x37d1: 0x000a,\n\t0x37d2: 0x000a, 0x37d3: 0x000a, 0x37d4: 0x000a, 0x37d5: 0x000a, 0x37d6: 0x000a, 0x37d7: 0x000a,\n\t// Block 0xe0, offset 0x3800\n\t0x3800: 0x000a,\n\t0x3810: 0x000a, 0x3811: 0x000a,\n\t0x3812: 0x000a, 0x3813: 0x000a, 0x3814: 0x000a, 0x3815: 0x000a, 0x3816: 0x000a, 0x3817: 0x000a,\n\t0x3818: 0x000a, 0x3819: 0x000a, 0x381a: 0x000a, 0x381b: 0x000a, 0x381c: 0x000a, 0x381d: 0x000a,\n\t0x381e: 0x000a, 0x381f: 0x000a, 0x3820: 0x000a, 0x3821: 0x000a, 0x3822: 0x000a, 0x3823: 0x000a,\n\t0x3824: 0x000a, 0x3825: 0x000a, 0x3826: 0x000a,\n\t// Block 0xe1, offset 0x3840\n\t0x387e: 0x000b, 0x387f: 0x000b,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000b, 0x3881: 0x000b, 0x3882: 0x000b, 0x3883: 0x000b, 0x3884: 0x000b, 0x3885: 0x000b,\n\t0x3886: 0x000b, 0x3887: 0x000b, 0x3888: 0x000b, 0x3889: 0x000b, 0x388a: 0x000b, 0x388b: 0x000b,\n\t0x388c: 0x000b, 0x388d: 0x000b, 0x388e: 0x000b, 0x388f: 0x000b, 0x3890: 0x000b, 0x3891: 0x000b,\n\t0x3892: 0x000b, 0x3893: 0x000b, 0x3894: 0x000b, 0x3895: 0x000b, 0x3896: 0x000b, 0x3897: 0x000b,\n\t0x3898: 0x000b, 0x3899: 0x000b, 0x389a: 0x000b, 0x389b: 0x000b, 0x389c: 0x000b, 0x389d: 0x000b,\n\t0x389e: 0x000b, 0x389f: 0x000b, 0x38a0: 0x000b, 0x38a1: 0x000b, 0x38a2: 0x000b, 0x38a3: 0x000b,\n\t0x38a4: 0x000b, 0x38a5: 0x000b, 0x38a6: 0x000b, 0x38a7: 0x000b, 0x38a8: 0x000b, 0x38a9: 0x000b,\n\t0x38aa: 0x000b, 0x38ab: 0x000b, 0x38ac: 0x000b, 0x38ad: 0x000b, 0x38ae: 0x000b, 0x38af: 0x000b,\n\t0x38b0: 0x000b, 0x38b1: 0x000b, 0x38b2: 0x000b, 0x38b3: 0x000b, 0x38b4: 0x000b, 0x38b5: 0x000b,\n\t0x38b6: 0x000b, 0x38b7: 0x000b, 0x38b8: 0x000b, 0x38b9: 0x000b, 0x38ba: 0x000b, 0x38bb: 0x000b,\n\t0x38bc: 0x000b, 0x38bd: 0x000b, 0x38be: 0x000b, 0x38bf: 0x000b,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x000c, 0x38c1: 0x000c, 0x38c2: 0x000c, 0x38c3: 0x000c, 0x38c4: 0x000c, 0x38c5: 0x000c,\n\t0x38c6: 0x000c, 0x38c7: 0x000c, 0x38c8: 0x000c, 0x38c9: 0x000c, 0x38ca: 0x000c, 0x38cb: 0x000c,\n\t0x38cc: 0x000c, 0x38cd: 0x000c, 0x38ce: 0x000c, 0x38cf: 0x000c, 0x38d0: 0x000c, 0x38d1: 0x000c,\n\t0x38d2: 0x000c, 0x38d3: 0x000c, 0x38d4: 0x000c, 0x38d5: 0x000c, 0x38d6: 0x000c, 0x38d7: 0x000c,\n\t0x38d8: 0x000c, 0x38d9: 0x000c, 0x38da: 0x000c, 0x38db: 0x000c, 0x38dc: 0x000c, 0x38dd: 0x000c,\n\t0x38de: 0x000c, 0x38df: 0x000c, 0x38e0: 0x000c, 0x38e1: 0x000c, 0x38e2: 0x000c, 0x38e3: 0x000c,\n\t0x38e4: 0x000c, 0x38e5: 0x000c, 0x38e6: 0x000c, 0x38e7: 0x000c, 0x38e8: 0x000c, 0x38e9: 0x000c,\n\t0x38ea: 0x000c, 0x38eb: 0x000c, 0x38ec: 0x000c, 0x38ed: 0x000c, 0x38ee: 0x000c, 0x38ef: 0x000c,\n\t0x38f0: 0x000b, 0x38f1: 0x000b, 0x38f2: 0x000b, 0x38f3: 0x000b, 0x38f4: 0x000b, 0x38f5: 0x000b,\n\t0x38f6: 0x000b, 0x38f7: 0x000b, 0x38f8: 0x000b, 0x38f9: 0x000b, 0x38fa: 0x000b, 0x38fb: 0x000b,\n\t0x38fc: 0x000b, 0x38fd: 0x000b, 0x38fe: 0x000b, 0x38ff: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28,\n\t0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x31, 0x141: 0x32, 0x142: 0x33,\n\t0x14d: 0x34, 0x14e: 0x35,\n\t0x150: 0x36,\n\t0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b,\n\t0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40,\n\t0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47,\n\t0x170: 0x48, 0x173: 0x49, 0x177: 0x4a,\n\t0x17e: 0x4b, 0x17f: 0x4c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54,\n\t0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x54,\n\t0x190: 0x59, 0x191: 0x5a, 0x192: 0x5b, 0x193: 0x5c, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54,\n\t0x198: 0x54, 0x199: 0x54, 0x19a: 0x5d, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5e, 0x19e: 0x54, 0x19f: 0x5f,\n\t0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x60, 0x1a7: 0x61,\n\t0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x62, 0x1ae: 0x63, 0x1af: 0x64,\n\t0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67,\n\t0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70,\n\t0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x54,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x77, 0x253: 0x78,\n\t0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e,\n\t0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85,\n\t0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26f: 0x8a,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8b, 0x2ad: 0x8c, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8d, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8e,\n\t0x2b8: 0x8f, 0x2b9: 0x90, 0x2ba: 0x0e, 0x2bb: 0x91, 0x2bc: 0x92, 0x2bd: 0x93, 0x2bf: 0x94,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x95, 0x2c5: 0x54, 0x2c6: 0x96, 0x2c7: 0x97,\n\t0x2cb: 0x98, 0x2cd: 0x99,\n\t0x2e0: 0x9a, 0x2e1: 0x9a, 0x2e2: 0x9a, 0x2e3: 0x9a, 0x2e4: 0x9b, 0x2e5: 0x9a, 0x2e6: 0x9a, 0x2e7: 0x9a,\n\t0x2e8: 0x9c, 0x2e9: 0x9a, 0x2ea: 0x9a, 0x2eb: 0x9d, 0x2ec: 0x9e, 0x2ed: 0x9a, 0x2ee: 0x9a, 0x2ef: 0x9a,\n\t0x2f0: 0x9a, 0x2f1: 0x9a, 0x2f2: 0x9a, 0x2f3: 0x9a, 0x2f4: 0x9a, 0x2f5: 0x9a, 0x2f6: 0x9a, 0x2f7: 0x9a,\n\t0x2f8: 0x9a, 0x2f9: 0x9f, 0x2fa: 0x9a, 0x2fb: 0x9a, 0x2fc: 0x9a, 0x2fd: 0x9a, 0x2fe: 0x9a, 0x2ff: 0x9a,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa0, 0x301: 0xa1, 0x302: 0xa2, 0x304: 0xa3, 0x305: 0xa4, 0x306: 0xa5, 0x307: 0xa6,\n\t0x308: 0xa7, 0x30b: 0xa8, 0x30c: 0xa9, 0x30d: 0xaa,\n\t0x310: 0xab, 0x311: 0xac, 0x312: 0xad, 0x313: 0xae, 0x316: 0xaf, 0x317: 0xb0,\n\t0x318: 0xb1, 0x319: 0xb2, 0x31a: 0xb3, 0x31c: 0xb4,\n\t0x328: 0xb5, 0x329: 0xb6, 0x32a: 0xb7,\n\t0x330: 0xb8, 0x332: 0xb9, 0x334: 0xba, 0x335: 0xbb,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xbc, 0x36c: 0xbd,\n\t0x37e: 0xbe,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xbf,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xc0, 0x3c6: 0xc1,\n\t0x3c8: 0x54, 0x3c9: 0xc2, 0x3cc: 0x54, 0x3cd: 0xc3,\n\t0x3db: 0xc4, 0x3dc: 0xc5, 0x3dd: 0xc6, 0x3de: 0xc7, 0x3df: 0xc8,\n\t0x3e8: 0xc9, 0x3e9: 0xca, 0x3ea: 0xcb,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xcc,\n\t0x420: 0x9a, 0x421: 0x9a, 0x422: 0x9a, 0x423: 0xcd, 0x424: 0x9a, 0x425: 0xce, 0x426: 0x9a, 0x427: 0x9a,\n\t0x428: 0x9a, 0x429: 0x9a, 0x42a: 0x9a, 0x42b: 0x9a, 0x42c: 0x9a, 0x42d: 0x9a, 0x42e: 0x9a, 0x42f: 0x9a,\n\t0x430: 0x9a, 0x431: 0x9a, 0x432: 0x9a, 0x433: 0x9a, 0x434: 0x9a, 0x435: 0x9a, 0x436: 0x9a, 0x437: 0x9a,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcf, 0x43c: 0x9a, 0x43d: 0x9a, 0x43e: 0x9a, 0x43f: 0x9a,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xd0, 0x441: 0x54, 0x442: 0xd1, 0x443: 0xd2, 0x444: 0xd3, 0x445: 0xd4,\n\t0x449: 0xd5, 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54,\n\t0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54,\n\t0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd6, 0x45c: 0x54, 0x45d: 0x6b, 0x45e: 0x54, 0x45f: 0xd7,\n\t0x460: 0xd8, 0x461: 0xd9, 0x462: 0xda, 0x464: 0xdb, 0x465: 0xdc, 0x466: 0xdd, 0x467: 0xde,\n\t0x47f: 0xdf,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xdf,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xe0, 0x541: 0xe0, 0x542: 0xe0, 0x543: 0xe0, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xe1,\n\t0x548: 0xe0, 0x549: 0xe0, 0x54a: 0xe0, 0x54b: 0xe0, 0x54c: 0xe0, 0x54d: 0xe0, 0x54e: 0xe0, 0x54f: 0xe0,\n\t0x550: 0xe0, 0x551: 0xe0, 0x552: 0xe0, 0x553: 0xe0, 0x554: 0xe0, 0x555: 0xe0, 0x556: 0xe0, 0x557: 0xe0,\n\t0x558: 0xe0, 0x559: 0xe0, 0x55a: 0xe0, 0x55b: 0xe0, 0x55c: 0xe0, 0x55d: 0xe0, 0x55e: 0xe0, 0x55f: 0xe0,\n\t0x560: 0xe0, 0x561: 0xe0, 0x562: 0xe0, 0x563: 0xe0, 0x564: 0xe0, 0x565: 0xe0, 0x566: 0xe0, 0x567: 0xe0,\n\t0x568: 0xe0, 0x569: 0xe0, 0x56a: 0xe0, 0x56b: 0xe0, 0x56c: 0xe0, 0x56d: 0xe0, 0x56e: 0xe0, 0x56f: 0xe0,\n\t0x570: 0xe0, 0x571: 0xe0, 0x572: 0xe0, 0x573: 0xe0, 0x574: 0xe0, 0x575: 0xe0, 0x576: 0xe0, 0x577: 0xe0,\n\t0x578: 0xe0, 0x579: 0xe0, 0x57a: 0xe0, 0x57b: 0xe0, 0x57c: 0xe0, 0x57d: 0xe0, 0x57e: 0xe0, 0x57f: 0xe0,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 16184 bytes (15KiB); checksum: F50EF68C\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// +build !go1.10\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"9.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 15744 bytes (15.38 KiB). Checksum: b4c3b70954803b86.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 222 blocks, 14208 entries, 14208 bytes\n// The third block is the zero block.\nvar bidiValues = [14208]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x0001, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x0001, 0x5e1: 0x0001, 0x5e2: 0x0001, 0x5e3: 0x0001,\n\t0x5e4: 0x0001, 0x5e5: 0x0001, 0x5e6: 0x0001, 0x5e7: 0x0001, 0x5e8: 0x0001, 0x5e9: 0x0001,\n\t0x5ea: 0x0001, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000d, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa01: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa8a: 0x000c,\n\t0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c,\n\t0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c,\n\t0xaff: 0x0004,\n\t// Block 0x2c, offset 0xb00\n\t0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c,\n\t0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c,\n\t// Block 0x2d, offset 0xb40\n\t0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c,\n\t0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c,\n\t0xb7c: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c,\n\t0xb8c: 0x000c, 0xb8d: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbd8: 0x000c, 0xbd9: 0x000c,\n\t0xbf5: 0x000c,\n\t0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a,\n\t0xbfc: 0x003a, 0xbfd: 0x002a,\n\t// Block 0x30, offset 0xc00\n\t0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c,\n\t0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c,\n\t0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c,\n\t0xc46: 0x000c, 0xc47: 0x000c,\n\t0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c,\n\t0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c,\n\t0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c,\n\t0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c,\n\t0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c,\n\t0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c,\n\t0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc86: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c,\n\t0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c,\n\t0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c,\n\t0xcfd: 0x000c, 0xcfe: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd18: 0x000c, 0xd19: 0x000c,\n\t0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c,\n\t0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x000c, 0xd45: 0x000c,\n\t0xd46: 0x000c,\n\t0xd4d: 0x000c,\n\t0xd5d: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd9d: 0x000c,\n\t0xd9e: 0x000c, 0xd9f: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xdd0: 0x000a, 0xdd1: 0x000a,\n\t0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a,\n\t0xdd8: 0x000a, 0xdd9: 0x000a,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0009,\n\t0xe5b: 0x007a, 0xe5c: 0x006a,\n\t// Block 0x3a, offset 0xe80\n\t0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c,\n\t0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf34: 0x000c, 0xf35: 0x000c,\n\t0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c,\n\t0xf3c: 0x000c, 0xf3d: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c,\n\t0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c,\n\t0xf52: 0x000c, 0xf53: 0x000c,\n\t0xf5b: 0x0004, 0xf5d: 0x000c,\n\t0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a,\n\t0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a,\n\t0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc5: 0x000c,\n\t0xfc6: 0x000c,\n\t0xfe9: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c,\n\t0x1027: 0x000c, 0x1028: 0x000c,\n\t0x1032: 0x000c,\n\t0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a,\n\t// Block 0x42, offset 0x1080\n\t0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a,\n\t0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a,\n\t0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a,\n\t0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a,\n\t0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a,\n\t0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10d7: 0x000c,\n\t0x10d8: 0x000c, 0x10db: 0x000c,\n\t// Block 0x44, offset 0x1100\n\t0x1116: 0x000c,\n\t0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c,\n\t0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c,\n\t0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c,\n\t0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c,\n\t0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c,\n\t0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c,\n\t0x113c: 0x000c, 0x113f: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c,\n\t0x11b4: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c,\n\t0x11bc: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c2: 0x000c,\n\t0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c,\n\t0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c,\n\t0x1222: 0x000c, 0x1223: 0x000c,\n\t0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c,\n\t0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c,\n\t0x126d: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c,\n\t0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c,\n\t0x12b6: 0x000c, 0x12b7: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x000c, 0x12d1: 0x000c,\n\t0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c,\n\t0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c,\n\t0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c,\n\t0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c,\n\t0x12ed: 0x000c,\n\t0x12f4: 0x000c,\n\t0x12f8: 0x000c, 0x12f9: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c,\n\t0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c,\n\t0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c,\n\t0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c,\n\t0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c,\n\t0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c,\n\t0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c,\n\t0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c,\n\t0x133b: 0x000c,\n\t0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x137d: 0x000a, 0x137f: 0x000a,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000a, 0x1381: 0x000a,\n\t0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a,\n\t0x139d: 0x000a,\n\t0x139e: 0x000a, 0x139f: 0x000a,\n\t0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a,\n\t0x13bd: 0x000a, 0x13be: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009,\n\t0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b,\n\t0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a,\n\t0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a,\n\t0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a,\n\t0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007,\n\t0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006,\n\t0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a,\n\t0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a,\n\t0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a,\n\t0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a,\n\t0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b,\n\t0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e,\n\t0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b,\n\t0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002,\n\t0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003,\n\t0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002,\n\t0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003,\n\t0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a,\n\t0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004,\n\t0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004,\n\t0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004,\n\t0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004,\n\t0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004,\n\t0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004,\n\t0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c,\n\t0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c,\n\t0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c,\n\t0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c,\n\t0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c,\n\t0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c,\n\t0x14b0: 0x000c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a,\n\t0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a,\n\t0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a,\n\t0x14d8: 0x000a,\n\t0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a,\n\t0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a,\n\t0x14ee: 0x0004,\n\t0x14fa: 0x000a, 0x14fb: 0x000a,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a,\n\t0x150a: 0x000a, 0x150b: 0x000a,\n\t0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a,\n\t0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a,\n\t0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a,\n\t0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a,\n\t0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a,\n\t0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a,\n\t0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a,\n\t0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a,\n\t0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a,\n\t0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a,\n\t0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a,\n\t0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a,\n\t0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a,\n\t0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,\n\t0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,\n\t0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,\n\t0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,\n\t0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a,\n\t0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,\n\t0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a,\n\t0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a,\n\t0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a,\n\t0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a,\n\t0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,\n\t0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002,\n\t0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002,\n\t0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002,\n\t0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002,\n\t// Block 0x5f, offset 0x17c0\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a,\n\t0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,\n\t0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,\n\t0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,\n\t0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,\n\t0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,\n\t0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a,\n\t0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a,\n\t0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a,\n\t0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a,\n\t0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba,\n\t0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a,\n\t0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,\n\t0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,\n\t0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a,\n\t0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a,\n\t0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a,\n\t0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a,\n\t0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a,\n\t0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a,\n\t0x1a2a: 0x000a, 0x1a2f: 0x000c,\n\t0x1a30: 0x000c, 0x1a31: 0x000c,\n\t0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a,\n\t0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a,\n\t// Block 0x69, offset 0x1a40\n\t0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c,\n\t0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c,\n\t0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c,\n\t0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c,\n\t0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c,\n\t0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a,\n\t0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a,\n\t0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a,\n\t0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a,\n\t0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a,\n\t0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a,\n\t0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a,\n\t0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a,\n\t0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a,\n\t0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a,\n\t0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a,\n\t0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a,\n\t0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a,\n\t0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a,\n\t0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a,\n\t0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a,\n\t0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a,\n\t0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a,\n\t0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a,\n\t0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a,\n\t0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a,\n\t0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a,\n\t0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c,\n\t0x1c30: 0x000a,\n\t0x1c36: 0x000a, 0x1c37: 0x000a,\n\t0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a,\n\t0x1c60: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1cbb: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a,\n\t0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a,\n\t0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a,\n\t0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a,\n\t0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a,\n\t0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d1d: 0x000a,\n\t0x1d1e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d50: 0x000a, 0x1d51: 0x000a,\n\t0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a,\n\t0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a,\n\t0x1d5e: 0x000a, 0x1d5f: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a,\n\t0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a,\n\t0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a,\n\t0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e90: 0x000a, 0x1e91: 0x000a,\n\t0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a,\n\t0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a,\n\t0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a,\n\t0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a,\n\t0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a,\n\t0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a,\n\t0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a,\n\t0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a,\n\t0x1ec6: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f6f: 0x000c,\n\t0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c,\n\t0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c,\n\t0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f9e: 0x000c, 0x1f9f: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1ff0: 0x000c, 0x1ff1: 0x000c,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a,\n\t0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a,\n\t0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a,\n\t0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a,\n\t0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a,\n\t0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2048: 0x000a,\n\t// Block 0x82, offset 0x2080\n\t0x2082: 0x000c,\n\t0x2086: 0x000c, 0x208b: 0x000c,\n\t0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a,\n\t0x20aa: 0x000a, 0x20ab: 0x000a,\n\t0x20b8: 0x0004, 0x20b9: 0x0004,\n\t// Block 0x83, offset 0x20c0\n\t0x20f4: 0x000a, 0x20f5: 0x000a,\n\t0x20f6: 0x000a, 0x20f7: 0x000a,\n\t// Block 0x84, offset 0x2100\n\t0x2104: 0x000c, 0x2105: 0x000c,\n\t0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c,\n\t0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c,\n\t0x2130: 0x000c, 0x2131: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c,\n\t0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c,\n\t0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c,\n\t0x21f3: 0x000c,\n\t0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c,\n\t0x21fc: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2225: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2269: 0x000c,\n\t0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c,\n\t0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c,\n\t0x2276: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x2283: 0x000c,\n\t0x228c: 0x000c,\n\t0x22bc: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c,\n\t0x22f7: 0x000c, 0x22f8: 0x000c,\n\t0x22fe: 0x000c, 0x22ff: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x2301: 0x000c,\n\t0x232c: 0x000c, 0x232d: 0x000c,\n\t0x2336: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x2365: 0x000c, 0x2368: 0x000c,\n\t0x236d: 0x000c,\n\t// Block 0x8e, offset 0x2380\n\t0x239d: 0x0001,\n\t0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001,\n\t0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003,\n\t0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001,\n\t0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001,\n\t0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001,\n\t0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001,\n\t0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001,\n\t0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d,\n\t0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,\n\t0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,\n\t0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,\n\t0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,\n\t0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d,\n\t0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d,\n\t0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000b, 0x2451: 0x000b,\n\t0x2452: 0x000b, 0x2453: 0x000b, 0x2454: 0x000b, 0x2455: 0x000b, 0x2456: 0x000b, 0x2457: 0x000b,\n\t0x2458: 0x000b, 0x2459: 0x000b, 0x245a: 0x000b, 0x245b: 0x000b, 0x245c: 0x000b, 0x245d: 0x000b,\n\t0x245e: 0x000b, 0x245f: 0x000b, 0x2460: 0x000b, 0x2461: 0x000b, 0x2462: 0x000b, 0x2463: 0x000b,\n\t0x2464: 0x000b, 0x2465: 0x000b, 0x2466: 0x000b, 0x2467: 0x000b, 0x2468: 0x000b, 0x2469: 0x000b,\n\t0x246a: 0x000b, 0x246b: 0x000b, 0x246c: 0x000b, 0x246d: 0x000b, 0x246e: 0x000b, 0x246f: 0x000b,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000a, 0x247e: 0x000d, 0x247f: 0x000d,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000c, 0x2481: 0x000c, 0x2482: 0x000c, 0x2483: 0x000c, 0x2484: 0x000c, 0x2485: 0x000c,\n\t0x2486: 0x000c, 0x2487: 0x000c, 0x2488: 0x000c, 0x2489: 0x000c, 0x248a: 0x000c, 0x248b: 0x000c,\n\t0x248c: 0x000c, 0x248d: 0x000c, 0x248e: 0x000c, 0x248f: 0x000c, 0x2490: 0x000a, 0x2491: 0x000a,\n\t0x2492: 0x000a, 0x2493: 0x000a, 0x2494: 0x000a, 0x2495: 0x000a, 0x2496: 0x000a, 0x2497: 0x000a,\n\t0x2498: 0x000a, 0x2499: 0x000a,\n\t0x24a0: 0x000c, 0x24a1: 0x000c, 0x24a2: 0x000c, 0x24a3: 0x000c,\n\t0x24a4: 0x000c, 0x24a5: 0x000c, 0x24a6: 0x000c, 0x24a7: 0x000c, 0x24a8: 0x000c, 0x24a9: 0x000c,\n\t0x24aa: 0x000c, 0x24ab: 0x000c, 0x24ac: 0x000c, 0x24ad: 0x000c, 0x24ae: 0x000c, 0x24af: 0x000c,\n\t0x24b0: 0x000a, 0x24b1: 0x000a, 0x24b2: 0x000a, 0x24b3: 0x000a, 0x24b4: 0x000a, 0x24b5: 0x000a,\n\t0x24b6: 0x000a, 0x24b7: 0x000a, 0x24b8: 0x000a, 0x24b9: 0x000a, 0x24ba: 0x000a, 0x24bb: 0x000a,\n\t0x24bc: 0x000a, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000a, 0x24c1: 0x000a, 0x24c2: 0x000a, 0x24c3: 0x000a, 0x24c4: 0x000a, 0x24c5: 0x000a,\n\t0x24c6: 0x000a, 0x24c7: 0x000a, 0x24c8: 0x000a, 0x24c9: 0x000a, 0x24ca: 0x000a, 0x24cb: 0x000a,\n\t0x24cc: 0x000a, 0x24cd: 0x000a, 0x24ce: 0x000a, 0x24cf: 0x000a, 0x24d0: 0x0006, 0x24d1: 0x000a,\n\t0x24d2: 0x0006, 0x24d4: 0x000a, 0x24d5: 0x0006, 0x24d6: 0x000a, 0x24d7: 0x000a,\n\t0x24d8: 0x000a, 0x24d9: 0x009a, 0x24da: 0x008a, 0x24db: 0x007a, 0x24dc: 0x006a, 0x24dd: 0x009a,\n\t0x24de: 0x008a, 0x24df: 0x0004, 0x24e0: 0x000a, 0x24e1: 0x000a, 0x24e2: 0x0003, 0x24e3: 0x0003,\n\t0x24e4: 0x000a, 0x24e5: 0x000a, 0x24e6: 0x000a, 0x24e8: 0x000a, 0x24e9: 0x0004,\n\t0x24ea: 0x0004, 0x24eb: 0x000a,\n\t0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d,\n\t0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d,\n\t0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000d,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000d, 0x2501: 0x000d, 0x2502: 0x000d, 0x2503: 0x000d, 0x2504: 0x000d, 0x2505: 0x000d,\n\t0x2506: 0x000d, 0x2507: 0x000d, 0x2508: 0x000d, 0x2509: 0x000d, 0x250a: 0x000d, 0x250b: 0x000d,\n\t0x250c: 0x000d, 0x250d: 0x000d, 0x250e: 0x000d, 0x250f: 0x000d, 0x2510: 0x000d, 0x2511: 0x000d,\n\t0x2512: 0x000d, 0x2513: 0x000d, 0x2514: 0x000d, 0x2515: 0x000d, 0x2516: 0x000d, 0x2517: 0x000d,\n\t0x2518: 0x000d, 0x2519: 0x000d, 0x251a: 0x000d, 0x251b: 0x000d, 0x251c: 0x000d, 0x251d: 0x000d,\n\t0x251e: 0x000d, 0x251f: 0x000d, 0x2520: 0x000d, 0x2521: 0x000d, 0x2522: 0x000d, 0x2523: 0x000d,\n\t0x2524: 0x000d, 0x2525: 0x000d, 0x2526: 0x000d, 0x2527: 0x000d, 0x2528: 0x000d, 0x2529: 0x000d,\n\t0x252a: 0x000d, 0x252b: 0x000d, 0x252c: 0x000d, 0x252d: 0x000d, 0x252e: 0x000d, 0x252f: 0x000d,\n\t0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d,\n\t0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d,\n\t0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000b,\n\t// Block 0x95, offset 0x2540\n\t0x2541: 0x000a, 0x2542: 0x000a, 0x2543: 0x0004, 0x2544: 0x0004, 0x2545: 0x0004,\n\t0x2546: 0x000a, 0x2547: 0x000a, 0x2548: 0x003a, 0x2549: 0x002a, 0x254a: 0x000a, 0x254b: 0x0003,\n\t0x254c: 0x0006, 0x254d: 0x0003, 0x254e: 0x0006, 0x254f: 0x0006, 0x2550: 0x0002, 0x2551: 0x0002,\n\t0x2552: 0x0002, 0x2553: 0x0002, 0x2554: 0x0002, 0x2555: 0x0002, 0x2556: 0x0002, 0x2557: 0x0002,\n\t0x2558: 0x0002, 0x2559: 0x0002, 0x255a: 0x0006, 0x255b: 0x000a, 0x255c: 0x000a, 0x255d: 0x000a,\n\t0x255e: 0x000a, 0x255f: 0x000a, 0x2560: 0x000a,\n\t0x257b: 0x005a,\n\t0x257c: 0x000a, 0x257d: 0x004a, 0x257e: 0x000a, 0x257f: 0x000a,\n\t// Block 0x96, offset 0x2580\n\t0x2580: 0x000a,\n\t0x259b: 0x005a, 0x259c: 0x000a, 0x259d: 0x004a,\n\t0x259e: 0x000a, 0x259f: 0x00fa, 0x25a0: 0x00ea, 0x25a1: 0x000a, 0x25a2: 0x003a, 0x25a3: 0x002a,\n\t0x25a4: 0x000a, 0x25a5: 0x000a,\n\t// Block 0x97, offset 0x25c0\n\t0x25e0: 0x0004, 0x25e1: 0x0004, 0x25e2: 0x000a, 0x25e3: 0x000a,\n\t0x25e4: 0x000a, 0x25e5: 0x0004, 0x25e6: 0x0004, 0x25e8: 0x000a, 0x25e9: 0x000a,\n\t0x25ea: 0x000a, 0x25eb: 0x000a, 0x25ec: 0x000a, 0x25ed: 0x000a, 0x25ee: 0x000a,\n\t0x25f0: 0x000b, 0x25f1: 0x000b, 0x25f2: 0x000b, 0x25f3: 0x000b, 0x25f4: 0x000b, 0x25f5: 0x000b,\n\t0x25f6: 0x000b, 0x25f7: 0x000b, 0x25f8: 0x000b, 0x25f9: 0x000a, 0x25fa: 0x000a, 0x25fb: 0x000a,\n\t0x25fc: 0x000a, 0x25fd: 0x000a, 0x25fe: 0x000b, 0x25ff: 0x000b,\n\t// Block 0x98, offset 0x2600\n\t0x2601: 0x000a,\n\t// Block 0x99, offset 0x2640\n\t0x2640: 0x000a, 0x2641: 0x000a, 0x2642: 0x000a, 0x2643: 0x000a, 0x2644: 0x000a, 0x2645: 0x000a,\n\t0x2646: 0x000a, 0x2647: 0x000a, 0x2648: 0x000a, 0x2649: 0x000a, 0x264a: 0x000a, 0x264b: 0x000a,\n\t0x264c: 0x000a, 0x2650: 0x000a, 0x2651: 0x000a,\n\t0x2652: 0x000a, 0x2653: 0x000a, 0x2654: 0x000a, 0x2655: 0x000a, 0x2656: 0x000a, 0x2657: 0x000a,\n\t0x2658: 0x000a, 0x2659: 0x000a, 0x265a: 0x000a, 0x265b: 0x000a,\n\t0x2660: 0x000a,\n\t// Block 0x9a, offset 0x2680\n\t0x26bd: 0x000c,\n\t// Block 0x9b, offset 0x26c0\n\t0x26e0: 0x000c, 0x26e1: 0x0002, 0x26e2: 0x0002, 0x26e3: 0x0002,\n\t0x26e4: 0x0002, 0x26e5: 0x0002, 0x26e6: 0x0002, 0x26e7: 0x0002, 0x26e8: 0x0002, 0x26e9: 0x0002,\n\t0x26ea: 0x0002, 0x26eb: 0x0002, 0x26ec: 0x0002, 0x26ed: 0x0002, 0x26ee: 0x0002, 0x26ef: 0x0002,\n\t0x26f0: 0x0002, 0x26f1: 0x0002, 0x26f2: 0x0002, 0x26f3: 0x0002, 0x26f4: 0x0002, 0x26f5: 0x0002,\n\t0x26f6: 0x0002, 0x26f7: 0x0002, 0x26f8: 0x0002, 0x26f9: 0x0002, 0x26fa: 0x0002, 0x26fb: 0x0002,\n\t// Block 0x9c, offset 0x2700\n\t0x2736: 0x000c, 0x2737: 0x000c, 0x2738: 0x000c, 0x2739: 0x000c, 0x273a: 0x000c,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001,\n\t0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001,\n\t0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001,\n\t0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001,\n\t0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001,\n\t0x275e: 0x0001, 0x275f: 0x0001, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001,\n\t0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001,\n\t0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001,\n\t0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001,\n\t0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001,\n\t0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,\n\t0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x000a, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x000c, 0x27c2: 0x000c, 0x27c3: 0x000c, 0x27c4: 0x0001, 0x27c5: 0x000c,\n\t0x27c6: 0x000c, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x000c, 0x27cd: 0x000c, 0x27ce: 0x000c, 0x27cf: 0x000c, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x000c, 0x27f9: 0x000c, 0x27fa: 0x000c, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x000c,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001,\n\t0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x000c, 0x2826: 0x000c, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x0001, 0x283a: 0x0001, 0x283b: 0x0001,\n\t0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x0001,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,\n\t0x2864: 0x0001, 0x2865: 0x0001, 0x2866: 0x0001, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,\n\t0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,\n\t0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,\n\t0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x000a, 0x287a: 0x000a, 0x287b: 0x000a,\n\t0x287c: 0x000a, 0x287d: 0x000a, 0x287e: 0x000a, 0x287f: 0x000a,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0005, 0x28a1: 0x0005, 0x28a2: 0x0005, 0x28a3: 0x0005,\n\t0x28a4: 0x0005, 0x28a5: 0x0005, 0x28a6: 0x0005, 0x28a7: 0x0005, 0x28a8: 0x0005, 0x28a9: 0x0005,\n\t0x28aa: 0x0005, 0x28ab: 0x0005, 0x28ac: 0x0005, 0x28ad: 0x0005, 0x28ae: 0x0005, 0x28af: 0x0005,\n\t0x28b0: 0x0005, 0x28b1: 0x0005, 0x28b2: 0x0005, 0x28b3: 0x0005, 0x28b4: 0x0005, 0x28b5: 0x0005,\n\t0x28b6: 0x0005, 0x28b7: 0x0005, 0x28b8: 0x0005, 0x28b9: 0x0005, 0x28ba: 0x0005, 0x28bb: 0x0005,\n\t0x28bc: 0x0005, 0x28bd: 0x0005, 0x28be: 0x0005, 0x28bf: 0x0001,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c1: 0x000c,\n\t0x28f8: 0x000c, 0x28f9: 0x000c, 0x28fa: 0x000c, 0x28fb: 0x000c,\n\t0x28fc: 0x000c, 0x28fd: 0x000c, 0x28fe: 0x000c, 0x28ff: 0x000c,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x000c, 0x2901: 0x000c, 0x2902: 0x000c, 0x2903: 0x000c, 0x2904: 0x000c, 0x2905: 0x000c,\n\t0x2906: 0x000c,\n\t0x2912: 0x000a, 0x2913: 0x000a, 0x2914: 0x000a, 0x2915: 0x000a, 0x2916: 0x000a, 0x2917: 0x000a,\n\t0x2918: 0x000a, 0x2919: 0x000a, 0x291a: 0x000a, 0x291b: 0x000a, 0x291c: 0x000a, 0x291d: 0x000a,\n\t0x291e: 0x000a, 0x291f: 0x000a, 0x2920: 0x000a, 0x2921: 0x000a, 0x2922: 0x000a, 0x2923: 0x000a,\n\t0x2924: 0x000a, 0x2925: 0x000a,\n\t0x293f: 0x000c,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x000c, 0x2941: 0x000c,\n\t0x2973: 0x000c, 0x2974: 0x000c, 0x2975: 0x000c,\n\t0x2976: 0x000c, 0x2979: 0x000c, 0x297a: 0x000c,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x000c, 0x2981: 0x000c, 0x2982: 0x000c,\n\t0x29a7: 0x000c, 0x29a8: 0x000c, 0x29a9: 0x000c,\n\t0x29aa: 0x000c, 0x29ab: 0x000c, 0x29ad: 0x000c, 0x29ae: 0x000c, 0x29af: 0x000c,\n\t0x29b0: 0x000c, 0x29b1: 0x000c, 0x29b2: 0x000c, 0x29b3: 0x000c, 0x29b4: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29f3: 0x000c,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x000c, 0x2a01: 0x000c,\n\t0x2a36: 0x000c, 0x2a37: 0x000c, 0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c,\n\t0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a4a: 0x000c, 0x2a4b: 0x000c,\n\t0x2a4c: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2aaf: 0x000c,\n\t0x2ab0: 0x000c, 0x2ab1: 0x000c, 0x2ab4: 0x000c,\n\t0x2ab6: 0x000c, 0x2ab7: 0x000c,\n\t0x2abe: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2adf: 0x000c, 0x2ae3: 0x000c,\n\t0x2ae4: 0x000c, 0x2ae5: 0x000c, 0x2ae6: 0x000c, 0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c,\n\t0x2aea: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x000c, 0x2b01: 0x000c,\n\t0x2b3c: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c,\n\t0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c,\n\t0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6c: 0x000c,\n\t0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2bb8: 0x000c, 0x2bb9: 0x000c, 0x2bba: 0x000c, 0x2bbb: 0x000c,\n\t0x2bbc: 0x000c, 0x2bbd: 0x000c, 0x2bbe: 0x000c, 0x2bbf: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc2: 0x000c, 0x2bc3: 0x000c, 0x2bc4: 0x000c,\n\t0x2bc6: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c33: 0x000c, 0x2c34: 0x000c, 0x2c35: 0x000c,\n\t0x2c36: 0x000c, 0x2c37: 0x000c, 0x2c38: 0x000c, 0x2c3a: 0x000c,\n\t0x2c3f: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x000c, 0x2c42: 0x000c, 0x2c43: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2cb2: 0x000c, 0x2cb3: 0x000c, 0x2cb4: 0x000c, 0x2cb5: 0x000c,\n\t0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbf: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc0: 0x000c,\n\t0x2cdc: 0x000c, 0x2cdd: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c,\n\t0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c,\n\t0x2d3d: 0x000c, 0x2d3f: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d40: 0x000c,\n\t0x2d60: 0x000a, 0x2d61: 0x000a, 0x2d62: 0x000a, 0x2d63: 0x000a,\n\t0x2d64: 0x000a, 0x2d65: 0x000a, 0x2d66: 0x000a, 0x2d67: 0x000a, 0x2d68: 0x000a, 0x2d69: 0x000a,\n\t0x2d6a: 0x000a, 0x2d6b: 0x000a, 0x2d6c: 0x000a,\n\t// Block 0xb6, offset 0x2d80\n\t0x2dab: 0x000c, 0x2dad: 0x000c,\n\t0x2db0: 0x000c, 0x2db1: 0x000c, 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,\n\t0x2db7: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2ddd: 0x000c,\n\t0x2dde: 0x000c, 0x2ddf: 0x000c, 0x2de2: 0x000c, 0x2de3: 0x000c,\n\t0x2de4: 0x000c, 0x2de5: 0x000c, 0x2de7: 0x000c, 0x2de8: 0x000c, 0x2de9: 0x000c,\n\t0x2dea: 0x000c, 0x2deb: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e30: 0x000c, 0x2e31: 0x000c, 0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,\n\t0x2e36: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c, 0x2e3b: 0x000c,\n\t0x2e3c: 0x000c, 0x2e3d: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c, 0x2e57: 0x000c,\n\t0x2e58: 0x000c, 0x2e59: 0x000c, 0x2e5a: 0x000c, 0x2e5b: 0x000c, 0x2e5c: 0x000c, 0x2e5d: 0x000c,\n\t0x2e5e: 0x000c, 0x2e5f: 0x000c, 0x2e60: 0x000c, 0x2e61: 0x000c, 0x2e62: 0x000c, 0x2e63: 0x000c,\n\t0x2e64: 0x000c, 0x2e65: 0x000c, 0x2e66: 0x000c, 0x2e67: 0x000c,\n\t0x2e6a: 0x000c, 0x2e6b: 0x000c, 0x2e6c: 0x000c, 0x2e6d: 0x000c, 0x2e6e: 0x000c, 0x2e6f: 0x000c,\n\t0x2e70: 0x000c, 0x2e72: 0x000c, 0x2e73: 0x000c, 0x2e75: 0x000c,\n\t0x2e76: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ef0: 0x000c, 0x2ef1: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef4: 0x000c, 0x2ef5: 0x000c,\n\t0x2ef6: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c,\n\t0x2f12: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f5d: 0x000c,\n\t0x2f5e: 0x000c, 0x2f60: 0x000b, 0x2f61: 0x000b, 0x2f62: 0x000b, 0x2f63: 0x000b,\n\t// Block 0xbe, offset 0x2f80\n\t0x2fa7: 0x000c, 0x2fa8: 0x000c, 0x2fa9: 0x000c,\n\t0x2fb3: 0x000b, 0x2fb4: 0x000b, 0x2fb5: 0x000b,\n\t0x2fb6: 0x000b, 0x2fb7: 0x000b, 0x2fb8: 0x000b, 0x2fb9: 0x000b, 0x2fba: 0x000b, 0x2fbb: 0x000c,\n\t0x2fbc: 0x000c, 0x2fbd: 0x000c, 0x2fbe: 0x000c, 0x2fbf: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2fc0: 0x000c, 0x2fc1: 0x000c, 0x2fc2: 0x000c, 0x2fc5: 0x000c,\n\t0x2fc6: 0x000c, 0x2fc7: 0x000c, 0x2fc8: 0x000c, 0x2fc9: 0x000c, 0x2fca: 0x000c, 0x2fcb: 0x000c,\n\t0x2fea: 0x000c, 0x2feb: 0x000c, 0x2fec: 0x000c, 0x2fed: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3000: 0x000a, 0x3001: 0x000a, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000a,\n\t// Block 0xc1, offset 0x3040\n\t0x3040: 0x000a, 0x3041: 0x000a, 0x3042: 0x000a, 0x3043: 0x000a, 0x3044: 0x000a, 0x3045: 0x000a,\n\t0x3046: 0x000a, 0x3047: 0x000a, 0x3048: 0x000a, 0x3049: 0x000a, 0x304a: 0x000a, 0x304b: 0x000a,\n\t0x304c: 0x000a, 0x304d: 0x000a, 0x304e: 0x000a, 0x304f: 0x000a, 0x3050: 0x000a, 0x3051: 0x000a,\n\t0x3052: 0x000a, 0x3053: 0x000a, 0x3054: 0x000a, 0x3055: 0x000a, 0x3056: 0x000a,\n\t// Block 0xc2, offset 0x3080\n\t0x309b: 0x000a,\n\t// Block 0xc3, offset 0x30c0\n\t0x30d5: 0x000a,\n\t// Block 0xc4, offset 0x3100\n\t0x310f: 0x000a,\n\t// Block 0xc5, offset 0x3140\n\t0x3149: 0x000a,\n\t// Block 0xc6, offset 0x3180\n\t0x3183: 0x000a,\n\t0x318e: 0x0002, 0x318f: 0x0002, 0x3190: 0x0002, 0x3191: 0x0002,\n\t0x3192: 0x0002, 0x3193: 0x0002, 0x3194: 0x0002, 0x3195: 0x0002, 0x3196: 0x0002, 0x3197: 0x0002,\n\t0x3198: 0x0002, 0x3199: 0x0002, 0x319a: 0x0002, 0x319b: 0x0002, 0x319c: 0x0002, 0x319d: 0x0002,\n\t0x319e: 0x0002, 0x319f: 0x0002, 0x31a0: 0x0002, 0x31a1: 0x0002, 0x31a2: 0x0002, 0x31a3: 0x0002,\n\t0x31a4: 0x0002, 0x31a5: 0x0002, 0x31a6: 0x0002, 0x31a7: 0x0002, 0x31a8: 0x0002, 0x31a9: 0x0002,\n\t0x31aa: 0x0002, 0x31ab: 0x0002, 0x31ac: 0x0002, 0x31ad: 0x0002, 0x31ae: 0x0002, 0x31af: 0x0002,\n\t0x31b0: 0x0002, 0x31b1: 0x0002, 0x31b2: 0x0002, 0x31b3: 0x0002, 0x31b4: 0x0002, 0x31b5: 0x0002,\n\t0x31b6: 0x0002, 0x31b7: 0x0002, 0x31b8: 0x0002, 0x31b9: 0x0002, 0x31ba: 0x0002, 0x31bb: 0x0002,\n\t0x31bc: 0x0002, 0x31bd: 0x0002, 0x31be: 0x0002, 0x31bf: 0x0002,\n\t// Block 0xc7, offset 0x31c0\n\t0x31c0: 0x000c, 0x31c1: 0x000c, 0x31c2: 0x000c, 0x31c3: 0x000c, 0x31c4: 0x000c, 0x31c5: 0x000c,\n\t0x31c6: 0x000c, 0x31c7: 0x000c, 0x31c8: 0x000c, 0x31c9: 0x000c, 0x31ca: 0x000c, 0x31cb: 0x000c,\n\t0x31cc: 0x000c, 0x31cd: 0x000c, 0x31ce: 0x000c, 0x31cf: 0x000c, 0x31d0: 0x000c, 0x31d1: 0x000c,\n\t0x31d2: 0x000c, 0x31d3: 0x000c, 0x31d4: 0x000c, 0x31d5: 0x000c, 0x31d6: 0x000c, 0x31d7: 0x000c,\n\t0x31d8: 0x000c, 0x31d9: 0x000c, 0x31da: 0x000c, 0x31db: 0x000c, 0x31dc: 0x000c, 0x31dd: 0x000c,\n\t0x31de: 0x000c, 0x31df: 0x000c, 0x31e0: 0x000c, 0x31e1: 0x000c, 0x31e2: 0x000c, 0x31e3: 0x000c,\n\t0x31e4: 0x000c, 0x31e5: 0x000c, 0x31e6: 0x000c, 0x31e7: 0x000c, 0x31e8: 0x000c, 0x31e9: 0x000c,\n\t0x31ea: 0x000c, 0x31eb: 0x000c, 0x31ec: 0x000c, 0x31ed: 0x000c, 0x31ee: 0x000c, 0x31ef: 0x000c,\n\t0x31f0: 0x000c, 0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c,\n\t0x31f6: 0x000c, 0x31fb: 0x000c,\n\t0x31fc: 0x000c, 0x31fd: 0x000c, 0x31fe: 0x000c, 0x31ff: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c,\n\t0x3206: 0x000c, 0x3207: 0x000c, 0x3208: 0x000c, 0x3209: 0x000c, 0x320a: 0x000c, 0x320b: 0x000c,\n\t0x320c: 0x000c, 0x320d: 0x000c, 0x320e: 0x000c, 0x320f: 0x000c, 0x3210: 0x000c, 0x3211: 0x000c,\n\t0x3212: 0x000c, 0x3213: 0x000c, 0x3214: 0x000c, 0x3215: 0x000c, 0x3216: 0x000c, 0x3217: 0x000c,\n\t0x3218: 0x000c, 0x3219: 0x000c, 0x321a: 0x000c, 0x321b: 0x000c, 0x321c: 0x000c, 0x321d: 0x000c,\n\t0x321e: 0x000c, 0x321f: 0x000c, 0x3220: 0x000c, 0x3221: 0x000c, 0x3222: 0x000c, 0x3223: 0x000c,\n\t0x3224: 0x000c, 0x3225: 0x000c, 0x3226: 0x000c, 0x3227: 0x000c, 0x3228: 0x000c, 0x3229: 0x000c,\n\t0x322a: 0x000c, 0x322b: 0x000c, 0x322c: 0x000c,\n\t0x3235: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3244: 0x000c,\n\t0x325b: 0x000c, 0x325c: 0x000c, 0x325d: 0x000c,\n\t0x325e: 0x000c, 0x325f: 0x000c, 0x3261: 0x000c, 0x3262: 0x000c, 0x3263: 0x000c,\n\t0x3264: 0x000c, 0x3265: 0x000c, 0x3266: 0x000c, 0x3267: 0x000c, 0x3268: 0x000c, 0x3269: 0x000c,\n\t0x326a: 0x000c, 0x326b: 0x000c, 0x326c: 0x000c, 0x326d: 0x000c, 0x326e: 0x000c, 0x326f: 0x000c,\n\t// Block 0xca, offset 0x3280\n\t0x3280: 0x000c, 0x3281: 0x000c, 0x3282: 0x000c, 0x3283: 0x000c, 0x3284: 0x000c, 0x3285: 0x000c,\n\t0x3286: 0x000c, 0x3288: 0x000c, 0x3289: 0x000c, 0x328a: 0x000c, 0x328b: 0x000c,\n\t0x328c: 0x000c, 0x328d: 0x000c, 0x328e: 0x000c, 0x328f: 0x000c, 0x3290: 0x000c, 0x3291: 0x000c,\n\t0x3292: 0x000c, 0x3293: 0x000c, 0x3294: 0x000c, 0x3295: 0x000c, 0x3296: 0x000c, 0x3297: 0x000c,\n\t0x3298: 0x000c, 0x329b: 0x000c, 0x329c: 0x000c, 0x329d: 0x000c,\n\t0x329e: 0x000c, 0x329f: 0x000c, 0x32a0: 0x000c, 0x32a1: 0x000c, 0x32a3: 0x000c,\n\t0x32a4: 0x000c, 0x32a6: 0x000c, 0x32a7: 0x000c, 0x32a8: 0x000c, 0x32a9: 0x000c,\n\t0x32aa: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x0001, 0x32c1: 0x0001, 0x32c2: 0x0001, 0x32c3: 0x0001, 0x32c4: 0x0001, 0x32c5: 0x0001,\n\t0x32c6: 0x0001, 0x32c7: 0x0001, 0x32c8: 0x0001, 0x32c9: 0x0001, 0x32ca: 0x0001, 0x32cb: 0x0001,\n\t0x32cc: 0x0001, 0x32cd: 0x0001, 0x32ce: 0x0001, 0x32cf: 0x0001, 0x32d0: 0x000c, 0x32d1: 0x000c,\n\t0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x0001,\n\t0x32d8: 0x0001, 0x32d9: 0x0001, 0x32da: 0x0001, 0x32db: 0x0001, 0x32dc: 0x0001, 0x32dd: 0x0001,\n\t0x32de: 0x0001, 0x32df: 0x0001, 0x32e0: 0x0001, 0x32e1: 0x0001, 0x32e2: 0x0001, 0x32e3: 0x0001,\n\t0x32e4: 0x0001, 0x32e5: 0x0001, 0x32e6: 0x0001, 0x32e7: 0x0001, 0x32e8: 0x0001, 0x32e9: 0x0001,\n\t0x32ea: 0x0001, 0x32eb: 0x0001, 0x32ec: 0x0001, 0x32ed: 0x0001, 0x32ee: 0x0001, 0x32ef: 0x0001,\n\t0x32f0: 0x0001, 0x32f1: 0x0001, 0x32f2: 0x0001, 0x32f3: 0x0001, 0x32f4: 0x0001, 0x32f5: 0x0001,\n\t0x32f6: 0x0001, 0x32f7: 0x0001, 0x32f8: 0x0001, 0x32f9: 0x0001, 0x32fa: 0x0001, 0x32fb: 0x0001,\n\t0x32fc: 0x0001, 0x32fd: 0x0001, 0x32fe: 0x0001, 0x32ff: 0x0001,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x0001, 0x3301: 0x0001, 0x3302: 0x0001, 0x3303: 0x0001, 0x3304: 0x000c, 0x3305: 0x000c,\n\t0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x0001,\n\t0x330c: 0x0001, 0x330d: 0x0001, 0x330e: 0x0001, 0x330f: 0x0001, 0x3310: 0x0001, 0x3311: 0x0001,\n\t0x3312: 0x0001, 0x3313: 0x0001, 0x3314: 0x0001, 0x3315: 0x0001, 0x3316: 0x0001, 0x3317: 0x0001,\n\t0x3318: 0x0001, 0x3319: 0x0001, 0x331a: 0x0001, 0x331b: 0x0001, 0x331c: 0x0001, 0x331d: 0x0001,\n\t0x331e: 0x0001, 0x331f: 0x0001, 0x3320: 0x0001, 0x3321: 0x0001, 0x3322: 0x0001, 0x3323: 0x0001,\n\t0x3324: 0x0001, 0x3325: 0x0001, 0x3326: 0x0001, 0x3327: 0x0001, 0x3328: 0x0001, 0x3329: 0x0001,\n\t0x332a: 0x0001, 0x332b: 0x0001, 0x332c: 0x0001, 0x332d: 0x0001, 0x332e: 0x0001, 0x332f: 0x0001,\n\t0x3330: 0x0001, 0x3331: 0x0001, 0x3332: 0x0001, 0x3333: 0x0001, 0x3334: 0x0001, 0x3335: 0x0001,\n\t0x3336: 0x0001, 0x3337: 0x0001, 0x3338: 0x0001, 0x3339: 0x0001, 0x333a: 0x0001, 0x333b: 0x0001,\n\t0x333c: 0x0001, 0x333d: 0x0001, 0x333e: 0x0001, 0x333f: 0x0001,\n\t// Block 0xcd, offset 0x3340\n\t0x3340: 0x000d, 0x3341: 0x000d, 0x3342: 0x000d, 0x3343: 0x000d, 0x3344: 0x000d, 0x3345: 0x000d,\n\t0x3346: 0x000d, 0x3347: 0x000d, 0x3348: 0x000d, 0x3349: 0x000d, 0x334a: 0x000d, 0x334b: 0x000d,\n\t0x334c: 0x000d, 0x334d: 0x000d, 0x334e: 0x000d, 0x334f: 0x000d, 0x3350: 0x000d, 0x3351: 0x000d,\n\t0x3352: 0x000d, 0x3353: 0x000d, 0x3354: 0x000d, 0x3355: 0x000d, 0x3356: 0x000d, 0x3357: 0x000d,\n\t0x3358: 0x000d, 0x3359: 0x000d, 0x335a: 0x000d, 0x335b: 0x000d, 0x335c: 0x000d, 0x335d: 0x000d,\n\t0x335e: 0x000d, 0x335f: 0x000d, 0x3360: 0x000d, 0x3361: 0x000d, 0x3362: 0x000d, 0x3363: 0x000d,\n\t0x3364: 0x000d, 0x3365: 0x000d, 0x3366: 0x000d, 0x3367: 0x000d, 0x3368: 0x000d, 0x3369: 0x000d,\n\t0x336a: 0x000d, 0x336b: 0x000d, 0x336c: 0x000d, 0x336d: 0x000d, 0x336e: 0x000d, 0x336f: 0x000d,\n\t0x3370: 0x000a, 0x3371: 0x000a, 0x3372: 0x000d, 0x3373: 0x000d, 0x3374: 0x000d, 0x3375: 0x000d,\n\t0x3376: 0x000d, 0x3377: 0x000d, 0x3378: 0x000d, 0x3379: 0x000d, 0x337a: 0x000d, 0x337b: 0x000d,\n\t0x337c: 0x000d, 0x337d: 0x000d, 0x337e: 0x000d, 0x337f: 0x000d,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x000a, 0x3381: 0x000a, 0x3382: 0x000a, 0x3383: 0x000a, 0x3384: 0x000a, 0x3385: 0x000a,\n\t0x3386: 0x000a, 0x3387: 0x000a, 0x3388: 0x000a, 0x3389: 0x000a, 0x338a: 0x000a, 0x338b: 0x000a,\n\t0x338c: 0x000a, 0x338d: 0x000a, 0x338e: 0x000a, 0x338f: 0x000a, 0x3390: 0x000a, 0x3391: 0x000a,\n\t0x3392: 0x000a, 0x3393: 0x000a, 0x3394: 0x000a, 0x3395: 0x000a, 0x3396: 0x000a, 0x3397: 0x000a,\n\t0x3398: 0x000a, 0x3399: 0x000a, 0x339a: 0x000a, 0x339b: 0x000a, 0x339c: 0x000a, 0x339d: 0x000a,\n\t0x339e: 0x000a, 0x339f: 0x000a, 0x33a0: 0x000a, 0x33a1: 0x000a, 0x33a2: 0x000a, 0x33a3: 0x000a,\n\t0x33a4: 0x000a, 0x33a5: 0x000a, 0x33a6: 0x000a, 0x33a7: 0x000a, 0x33a8: 0x000a, 0x33a9: 0x000a,\n\t0x33aa: 0x000a, 0x33ab: 0x000a,\n\t0x33b0: 0x000a, 0x33b1: 0x000a, 0x33b2: 0x000a, 0x33b3: 0x000a, 0x33b4: 0x000a, 0x33b5: 0x000a,\n\t0x33b6: 0x000a, 0x33b7: 0x000a, 0x33b8: 0x000a, 0x33b9: 0x000a, 0x33ba: 0x000a, 0x33bb: 0x000a,\n\t0x33bc: 0x000a, 0x33bd: 0x000a, 0x33be: 0x000a, 0x33bf: 0x000a,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c0: 0x000a, 0x33c1: 0x000a, 0x33c2: 0x000a, 0x33c3: 0x000a, 0x33c4: 0x000a, 0x33c5: 0x000a,\n\t0x33c6: 0x000a, 0x33c7: 0x000a, 0x33c8: 0x000a, 0x33c9: 0x000a, 0x33ca: 0x000a, 0x33cb: 0x000a,\n\t0x33cc: 0x000a, 0x33cd: 0x000a, 0x33ce: 0x000a, 0x33cf: 0x000a, 0x33d0: 0x000a, 0x33d1: 0x000a,\n\t0x33d2: 0x000a, 0x33d3: 0x000a,\n\t0x33e0: 0x000a, 0x33e1: 0x000a, 0x33e2: 0x000a, 0x33e3: 0x000a,\n\t0x33e4: 0x000a, 0x33e5: 0x000a, 0x33e6: 0x000a, 0x33e7: 0x000a, 0x33e8: 0x000a, 0x33e9: 0x000a,\n\t0x33ea: 0x000a, 0x33eb: 0x000a, 0x33ec: 0x000a, 0x33ed: 0x000a, 0x33ee: 0x000a,\n\t0x33f1: 0x000a, 0x33f2: 0x000a, 0x33f3: 0x000a, 0x33f4: 0x000a, 0x33f5: 0x000a,\n\t0x33f6: 0x000a, 0x33f7: 0x000a, 0x33f8: 0x000a, 0x33f9: 0x000a, 0x33fa: 0x000a, 0x33fb: 0x000a,\n\t0x33fc: 0x000a, 0x33fd: 0x000a, 0x33fe: 0x000a, 0x33ff: 0x000a,\n\t// Block 0xd0, offset 0x3400\n\t0x3401: 0x000a, 0x3402: 0x000a, 0x3403: 0x000a, 0x3404: 0x000a, 0x3405: 0x000a,\n\t0x3406: 0x000a, 0x3407: 0x000a, 0x3408: 0x000a, 0x3409: 0x000a, 0x340a: 0x000a, 0x340b: 0x000a,\n\t0x340c: 0x000a, 0x340d: 0x000a, 0x340e: 0x000a, 0x340f: 0x000a, 0x3411: 0x000a,\n\t0x3412: 0x000a, 0x3413: 0x000a, 0x3414: 0x000a, 0x3415: 0x000a, 0x3416: 0x000a, 0x3417: 0x000a,\n\t0x3418: 0x000a, 0x3419: 0x000a, 0x341a: 0x000a, 0x341b: 0x000a, 0x341c: 0x000a, 0x341d: 0x000a,\n\t0x341e: 0x000a, 0x341f: 0x000a, 0x3420: 0x000a, 0x3421: 0x000a, 0x3422: 0x000a, 0x3423: 0x000a,\n\t0x3424: 0x000a, 0x3425: 0x000a, 0x3426: 0x000a, 0x3427: 0x000a, 0x3428: 0x000a, 0x3429: 0x000a,\n\t0x342a: 0x000a, 0x342b: 0x000a, 0x342c: 0x000a, 0x342d: 0x000a, 0x342e: 0x000a, 0x342f: 0x000a,\n\t0x3430: 0x000a, 0x3431: 0x000a, 0x3432: 0x000a, 0x3433: 0x000a, 0x3434: 0x000a, 0x3435: 0x000a,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x0002, 0x3441: 0x0002, 0x3442: 0x0002, 0x3443: 0x0002, 0x3444: 0x0002, 0x3445: 0x0002,\n\t0x3446: 0x0002, 0x3447: 0x0002, 0x3448: 0x0002, 0x3449: 0x0002, 0x344a: 0x0002, 0x344b: 0x000a,\n\t0x344c: 0x000a,\n\t// Block 0xd2, offset 0x3480\n\t0x34aa: 0x000a, 0x34ab: 0x000a,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a,\n\t0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a,\n\t0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a,\n\t0x34d2: 0x000a,\n\t0x34e0: 0x000a, 0x34e1: 0x000a, 0x34e2: 0x000a, 0x34e3: 0x000a,\n\t0x34e4: 0x000a, 0x34e5: 0x000a, 0x34e6: 0x000a, 0x34e7: 0x000a, 0x34e8: 0x000a, 0x34e9: 0x000a,\n\t0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a,\n\t0x34f0: 0x000a, 0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a,\n\t0x34f6: 0x000a,\n\t// Block 0xd4, offset 0x3500\n\t0x3500: 0x000a, 0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a,\n\t0x3506: 0x000a, 0x3507: 0x000a, 0x3508: 0x000a, 0x3509: 0x000a, 0x350a: 0x000a, 0x350b: 0x000a,\n\t0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3510: 0x000a, 0x3511: 0x000a,\n\t0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x000a, 0x3541: 0x000a, 0x3542: 0x000a, 0x3543: 0x000a, 0x3544: 0x000a, 0x3545: 0x000a,\n\t0x3546: 0x000a, 0x3547: 0x000a, 0x3548: 0x000a, 0x3549: 0x000a, 0x354a: 0x000a, 0x354b: 0x000a,\n\t0x3550: 0x000a, 0x3551: 0x000a,\n\t0x3552: 0x000a, 0x3553: 0x000a, 0x3554: 0x000a, 0x3555: 0x000a, 0x3556: 0x000a, 0x3557: 0x000a,\n\t0x3558: 0x000a, 0x3559: 0x000a, 0x355a: 0x000a, 0x355b: 0x000a, 0x355c: 0x000a, 0x355d: 0x000a,\n\t0x355e: 0x000a, 0x355f: 0x000a, 0x3560: 0x000a, 0x3561: 0x000a, 0x3562: 0x000a, 0x3563: 0x000a,\n\t0x3564: 0x000a, 0x3565: 0x000a, 0x3566: 0x000a, 0x3567: 0x000a, 0x3568: 0x000a, 0x3569: 0x000a,\n\t0x356a: 0x000a, 0x356b: 0x000a, 0x356c: 0x000a, 0x356d: 0x000a, 0x356e: 0x000a, 0x356f: 0x000a,\n\t0x3570: 0x000a, 0x3571: 0x000a, 0x3572: 0x000a, 0x3573: 0x000a, 0x3574: 0x000a, 0x3575: 0x000a,\n\t0x3576: 0x000a, 0x3577: 0x000a, 0x3578: 0x000a, 0x3579: 0x000a, 0x357a: 0x000a, 0x357b: 0x000a,\n\t0x357c: 0x000a, 0x357d: 0x000a, 0x357e: 0x000a, 0x357f: 0x000a,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x000a, 0x3581: 0x000a, 0x3582: 0x000a, 0x3583: 0x000a, 0x3584: 0x000a, 0x3585: 0x000a,\n\t0x3586: 0x000a, 0x3587: 0x000a,\n\t0x3590: 0x000a, 0x3591: 0x000a,\n\t0x3592: 0x000a, 0x3593: 0x000a, 0x3594: 0x000a, 0x3595: 0x000a, 0x3596: 0x000a, 0x3597: 0x000a,\n\t0x3598: 0x000a, 0x3599: 0x000a,\n\t0x35a0: 0x000a, 0x35a1: 0x000a, 0x35a2: 0x000a, 0x35a3: 0x000a,\n\t0x35a4: 0x000a, 0x35a5: 0x000a, 0x35a6: 0x000a, 0x35a7: 0x000a, 0x35a8: 0x000a, 0x35a9: 0x000a,\n\t0x35aa: 0x000a, 0x35ab: 0x000a, 0x35ac: 0x000a, 0x35ad: 0x000a, 0x35ae: 0x000a, 0x35af: 0x000a,\n\t0x35b0: 0x000a, 0x35b1: 0x000a, 0x35b2: 0x000a, 0x35b3: 0x000a, 0x35b4: 0x000a, 0x35b5: 0x000a,\n\t0x35b6: 0x000a, 0x35b7: 0x000a, 0x35b8: 0x000a, 0x35b9: 0x000a, 0x35ba: 0x000a, 0x35bb: 0x000a,\n\t0x35bc: 0x000a, 0x35bd: 0x000a, 0x35be: 0x000a, 0x35bf: 0x000a,\n\t// Block 0xd7, offset 0x35c0\n\t0x35c0: 0x000a, 0x35c1: 0x000a, 0x35c2: 0x000a, 0x35c3: 0x000a, 0x35c4: 0x000a, 0x35c5: 0x000a,\n\t0x35c6: 0x000a, 0x35c7: 0x000a,\n\t0x35d0: 0x000a, 0x35d1: 0x000a,\n\t0x35d2: 0x000a, 0x35d3: 0x000a, 0x35d4: 0x000a, 0x35d5: 0x000a, 0x35d6: 0x000a, 0x35d7: 0x000a,\n\t0x35d8: 0x000a, 0x35d9: 0x000a, 0x35da: 0x000a, 0x35db: 0x000a, 0x35dc: 0x000a, 0x35dd: 0x000a,\n\t0x35de: 0x000a, 0x35df: 0x000a, 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a,\n\t0x35e4: 0x000a, 0x35e5: 0x000a, 0x35e6: 0x000a, 0x35e7: 0x000a, 0x35e8: 0x000a, 0x35e9: 0x000a,\n\t0x35ea: 0x000a, 0x35eb: 0x000a, 0x35ec: 0x000a, 0x35ed: 0x000a,\n\t// Block 0xd8, offset 0x3600\n\t0x3610: 0x000a, 0x3611: 0x000a,\n\t0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a, 0x3615: 0x000a, 0x3616: 0x000a, 0x3617: 0x000a,\n\t0x3618: 0x000a, 0x3619: 0x000a, 0x361a: 0x000a, 0x361b: 0x000a, 0x361c: 0x000a, 0x361d: 0x000a,\n\t0x361e: 0x000a, 0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a,\n\t0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a,\n\t0x3630: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a,\n\t0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, 0x3639: 0x000a, 0x363a: 0x000a, 0x363b: 0x000a,\n\t0x363c: 0x000a, 0x363d: 0x000a, 0x363e: 0x000a,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x000a, 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a,\n\t0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a,\n\t0x3650: 0x000a, 0x3651: 0x000a,\n\t0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, 0x3655: 0x000a, 0x3656: 0x000a, 0x3657: 0x000a,\n\t0x3658: 0x000a, 0x3659: 0x000a, 0x365a: 0x000a, 0x365b: 0x000a, 0x365c: 0x000a, 0x365d: 0x000a,\n\t0x365e: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000a, 0x3683: 0x000a, 0x3684: 0x000a, 0x3685: 0x000a,\n\t0x3686: 0x000a, 0x3687: 0x000a, 0x3688: 0x000a, 0x3689: 0x000a, 0x368a: 0x000a, 0x368b: 0x000a,\n\t0x368c: 0x000a, 0x368d: 0x000a, 0x368e: 0x000a, 0x368f: 0x000a, 0x3690: 0x000a, 0x3691: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36fe: 0x000b, 0x36ff: 0x000b,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000b, 0x3701: 0x000b, 0x3702: 0x000b, 0x3703: 0x000b, 0x3704: 0x000b, 0x3705: 0x000b,\n\t0x3706: 0x000b, 0x3707: 0x000b, 0x3708: 0x000b, 0x3709: 0x000b, 0x370a: 0x000b, 0x370b: 0x000b,\n\t0x370c: 0x000b, 0x370d: 0x000b, 0x370e: 0x000b, 0x370f: 0x000b, 0x3710: 0x000b, 0x3711: 0x000b,\n\t0x3712: 0x000b, 0x3713: 0x000b, 0x3714: 0x000b, 0x3715: 0x000b, 0x3716: 0x000b, 0x3717: 0x000b,\n\t0x3718: 0x000b, 0x3719: 0x000b, 0x371a: 0x000b, 0x371b: 0x000b, 0x371c: 0x000b, 0x371d: 0x000b,\n\t0x371e: 0x000b, 0x371f: 0x000b, 0x3720: 0x000b, 0x3721: 0x000b, 0x3722: 0x000b, 0x3723: 0x000b,\n\t0x3724: 0x000b, 0x3725: 0x000b, 0x3726: 0x000b, 0x3727: 0x000b, 0x3728: 0x000b, 0x3729: 0x000b,\n\t0x372a: 0x000b, 0x372b: 0x000b, 0x372c: 0x000b, 0x372d: 0x000b, 0x372e: 0x000b, 0x372f: 0x000b,\n\t0x3730: 0x000b, 0x3731: 0x000b, 0x3732: 0x000b, 0x3733: 0x000b, 0x3734: 0x000b, 0x3735: 0x000b,\n\t0x3736: 0x000b, 0x3737: 0x000b, 0x3738: 0x000b, 0x3739: 0x000b, 0x373a: 0x000b, 0x373b: 0x000b,\n\t0x373c: 0x000b, 0x373d: 0x000b, 0x373e: 0x000b, 0x373f: 0x000b,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000c, 0x3741: 0x000c, 0x3742: 0x000c, 0x3743: 0x000c, 0x3744: 0x000c, 0x3745: 0x000c,\n\t0x3746: 0x000c, 0x3747: 0x000c, 0x3748: 0x000c, 0x3749: 0x000c, 0x374a: 0x000c, 0x374b: 0x000c,\n\t0x374c: 0x000c, 0x374d: 0x000c, 0x374e: 0x000c, 0x374f: 0x000c, 0x3750: 0x000c, 0x3751: 0x000c,\n\t0x3752: 0x000c, 0x3753: 0x000c, 0x3754: 0x000c, 0x3755: 0x000c, 0x3756: 0x000c, 0x3757: 0x000c,\n\t0x3758: 0x000c, 0x3759: 0x000c, 0x375a: 0x000c, 0x375b: 0x000c, 0x375c: 0x000c, 0x375d: 0x000c,\n\t0x375e: 0x000c, 0x375f: 0x000c, 0x3760: 0x000c, 0x3761: 0x000c, 0x3762: 0x000c, 0x3763: 0x000c,\n\t0x3764: 0x000c, 0x3765: 0x000c, 0x3766: 0x000c, 0x3767: 0x000c, 0x3768: 0x000c, 0x3769: 0x000c,\n\t0x376a: 0x000c, 0x376b: 0x000c, 0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c,\n\t0x3770: 0x000b, 0x3771: 0x000b, 0x3772: 0x000b, 0x3773: 0x000b, 0x3774: 0x000b, 0x3775: 0x000b,\n\t0x3776: 0x000b, 0x3777: 0x000b, 0x3778: 0x000b, 0x3779: 0x000b, 0x377a: 0x000b, 0x377b: 0x000b,\n\t0x377c: 0x000b, 0x377d: 0x000b, 0x377e: 0x000b, 0x377f: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28,\n\t0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x31, 0x141: 0x32, 0x142: 0x33,\n\t0x14d: 0x34, 0x14e: 0x35,\n\t0x150: 0x36,\n\t0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b,\n\t0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40,\n\t0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47,\n\t0x170: 0x48, 0x173: 0x49, 0x177: 0x4a,\n\t0x17e: 0x4b, 0x17f: 0x4c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54,\n\t0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x59,\n\t0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54,\n\t0x198: 0x54, 0x199: 0x54, 0x19a: 0x5e, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5f, 0x19e: 0x54, 0x19f: 0x60,\n\t0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x61, 0x1a7: 0x62,\n\t0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x65,\n\t0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68,\n\t0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6d,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71,\n\t0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x54,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x78, 0x253: 0x79,\n\t0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f,\n\t0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8f,\n\t0x2b8: 0x90, 0x2b9: 0x91, 0x2ba: 0x0e, 0x2bb: 0x92, 0x2bc: 0x93, 0x2bd: 0x94, 0x2bf: 0x95,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x96, 0x2c5: 0x54, 0x2c6: 0x97, 0x2c7: 0x98,\n\t0x2cb: 0x99, 0x2cd: 0x9a,\n\t0x2e0: 0x9b, 0x2e1: 0x9b, 0x2e2: 0x9b, 0x2e3: 0x9b, 0x2e4: 0x9c, 0x2e5: 0x9b, 0x2e6: 0x9b, 0x2e7: 0x9b,\n\t0x2e8: 0x9d, 0x2e9: 0x9b, 0x2ea: 0x9b, 0x2eb: 0x9e, 0x2ec: 0x9f, 0x2ed: 0x9b, 0x2ee: 0x9b, 0x2ef: 0x9b,\n\t0x2f0: 0x9b, 0x2f1: 0x9b, 0x2f2: 0x9b, 0x2f3: 0x9b, 0x2f4: 0x9b, 0x2f5: 0x9b, 0x2f6: 0x9b, 0x2f7: 0x9b,\n\t0x2f8: 0x9b, 0x2f9: 0xa0, 0x2fa: 0x9b, 0x2fb: 0x9b, 0x2fc: 0x9b, 0x2fd: 0x9b, 0x2fe: 0x9b, 0x2ff: 0x9b,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa1, 0x301: 0xa2, 0x302: 0xa3, 0x304: 0xa4, 0x305: 0xa5, 0x306: 0xa6, 0x307: 0xa7,\n\t0x308: 0xa8, 0x30b: 0xa9, 0x30c: 0xaa, 0x30d: 0xab,\n\t0x310: 0xac, 0x311: 0xad, 0x312: 0xae, 0x313: 0xaf, 0x316: 0xb0, 0x317: 0xb1,\n\t0x318: 0xb2, 0x319: 0xb3, 0x31a: 0xb4, 0x31c: 0xb5,\n\t0x330: 0xb6, 0x332: 0xb7,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xb8, 0x36c: 0xb9,\n\t0x37e: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xbb,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xbc, 0x3c6: 0xbd,\n\t0x3c8: 0x54, 0x3c9: 0xbe, 0x3cc: 0x54, 0x3cd: 0xbf,\n\t0x3db: 0xc0, 0x3dc: 0xc1, 0x3dd: 0xc2, 0x3de: 0xc3, 0x3df: 0xc4,\n\t0x3e8: 0xc5, 0x3e9: 0xc6, 0x3ea: 0xc7,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xc8,\n\t0x420: 0x9b, 0x421: 0x9b, 0x422: 0x9b, 0x423: 0xc9, 0x424: 0x9b, 0x425: 0xca, 0x426: 0x9b, 0x427: 0x9b,\n\t0x428: 0x9b, 0x429: 0x9b, 0x42a: 0x9b, 0x42b: 0x9b, 0x42c: 0x9b, 0x42d: 0x9b, 0x42e: 0x9b, 0x42f: 0x9b,\n\t0x430: 0x9b, 0x431: 0x9b, 0x432: 0x9b, 0x433: 0x9b, 0x434: 0x9b, 0x435: 0x9b, 0x436: 0x9b, 0x437: 0x9b,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcb, 0x43c: 0x9b, 0x43d: 0x9b, 0x43e: 0x9b, 0x43f: 0x9b,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xcc, 0x441: 0x54, 0x442: 0xcd, 0x443: 0xce, 0x444: 0xcf, 0x445: 0xd0,\n\t0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54,\n\t0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54,\n\t0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd1, 0x45c: 0x54, 0x45d: 0x6c, 0x45e: 0x54, 0x45f: 0xd2,\n\t0x460: 0xd3, 0x461: 0xd4, 0x462: 0xd5, 0x464: 0xd6, 0x465: 0xd7, 0x466: 0xd8, 0x467: 0x36,\n\t0x47f: 0xd9,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xd9,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xda, 0x541: 0xda, 0x542: 0xda, 0x543: 0xda, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xdb,\n\t0x548: 0xda, 0x549: 0xda, 0x54a: 0xda, 0x54b: 0xda, 0x54c: 0xda, 0x54d: 0xda, 0x54e: 0xda, 0x54f: 0xda,\n\t0x550: 0xda, 0x551: 0xda, 0x552: 0xda, 0x553: 0xda, 0x554: 0xda, 0x555: 0xda, 0x556: 0xda, 0x557: 0xda,\n\t0x558: 0xda, 0x559: 0xda, 0x55a: 0xda, 0x55b: 0xda, 0x55c: 0xda, 0x55d: 0xda, 0x55e: 0xda, 0x55f: 0xda,\n\t0x560: 0xda, 0x561: 0xda, 0x562: 0xda, 0x563: 0xda, 0x564: 0xda, 0x565: 0xda, 0x566: 0xda, 0x567: 0xda,\n\t0x568: 0xda, 0x569: 0xda, 0x56a: 0xda, 0x56b: 0xda, 0x56c: 0xda, 0x56d: 0xda, 0x56e: 0xda, 0x56f: 0xda,\n\t0x570: 0xda, 0x571: 0xda, 0x572: 0xda, 0x573: 0xda, 0x574: 0xda, 0x575: 0xda, 0x576: 0xda, 0x577: 0xda,\n\t0x578: 0xda, 0x579: 0xda, 0x57a: 0xda, 0x57b: 0xda, 0x57c: 0xda, 0x57d: 0xda, 0x57e: 0xda, 0x57f: 0xda,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 15800 bytes (15KiB); checksum: F50EF68C\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/bidi/trieval.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage bidi\n\n// Class is the Unicode BiDi class. Each rune has a single class.\ntype Class uint\n\nconst (\n\tL       Class = iota // LeftToRight\n\tR                    // RightToLeft\n\tEN                   // EuropeanNumber\n\tES                   // EuropeanSeparator\n\tET                   // EuropeanTerminator\n\tAN                   // ArabicNumber\n\tCS                   // CommonSeparator\n\tB                    // ParagraphSeparator\n\tS                    // SegmentSeparator\n\tWS                   // WhiteSpace\n\tON                   // OtherNeutral\n\tBN                   // BoundaryNeutral\n\tNSM                  // NonspacingMark\n\tAL                   // ArabicLetter\n\tControl              // Control LRO - PDI\n\n\tnumClass\n\n\tLRO // LeftToRightOverride\n\tRLO // RightToLeftOverride\n\tLRE // LeftToRightEmbedding\n\tRLE // RightToLeftEmbedding\n\tPDF // PopDirectionalFormat\n\tLRI // LeftToRightIsolate\n\tRLI // RightToLeftIsolate\n\tFSI // FirstStrongIsolate\n\tPDI // PopDirectionalIsolate\n\n\tunknownClass = ^Class(0)\n)\n\nvar controlToClass = map[rune]Class{\n\t0x202D: LRO, // LeftToRightOverride,\n\t0x202E: RLO, // RightToLeftOverride,\n\t0x202A: LRE, // LeftToRightEmbedding,\n\t0x202B: RLE, // RightToLeftEmbedding,\n\t0x202C: PDF, // PopDirectionalFormat,\n\t0x2066: LRI, // LeftToRightIsolate,\n\t0x2067: RLI, // RightToLeftIsolate,\n\t0x2068: FSI, // FirstStrongIsolate,\n\t0x2069: PDI, // PopDirectionalIsolate,\n}\n\n// A trie entry has the following bits:\n// 7..5  XOR mask for brackets\n// 4     1: Bracket open, 0: Bracket close\n// 3..0  Class type\n\nconst (\n\topenMask     = 0x10\n\txorMaskShift = 5\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/base.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cldr\n\nimport (\n\t\"encoding/xml\"\n\t\"regexp\"\n\t\"strconv\"\n)\n\n// Elem is implemented by every XML element.\ntype Elem interface {\n\tsetEnclosing(Elem)\n\tsetName(string)\n\tenclosing() Elem\n\n\tGetCommon() *Common\n}\n\ntype hidden struct {\n\tCharData string `xml:\",chardata\"`\n\tAlias    *struct {\n\t\tCommon\n\t\tSource string `xml:\"source,attr\"`\n\t\tPath   string `xml:\"path,attr\"`\n\t} `xml:\"alias\"`\n\tDef *struct {\n\t\tCommon\n\t\tChoice string `xml:\"choice,attr,omitempty\"`\n\t\tType   string `xml:\"type,attr,omitempty\"`\n\t} `xml:\"default\"`\n}\n\n// Common holds several of the most common attributes and sub elements\n// of an XML element.\ntype Common struct {\n\tXMLName         xml.Name\n\tname            string\n\tenclElem        Elem\n\tType            string `xml:\"type,attr,omitempty\"`\n\tReference       string `xml:\"reference,attr,omitempty\"`\n\tAlt             string `xml:\"alt,attr,omitempty\"`\n\tValidSubLocales string `xml:\"validSubLocales,attr,omitempty\"`\n\tDraft           string `xml:\"draft,attr,omitempty\"`\n\thidden\n}\n\n// Default returns the default type to select from the enclosed list\n// or \"\" if no default value is specified.\nfunc (e *Common) Default() string {\n\tif e.Def == nil {\n\t\treturn \"\"\n\t}\n\tif e.Def.Choice != \"\" {\n\t\treturn e.Def.Choice\n\t} else if e.Def.Type != \"\" {\n\t\t// Type is still used by the default element in collation.\n\t\treturn e.Def.Type\n\t}\n\treturn \"\"\n}\n\n// Element returns the XML element name.\nfunc (e *Common) Element() string {\n\treturn e.name\n}\n\n// GetCommon returns e. It is provided such that Common implements Elem.\nfunc (e *Common) GetCommon() *Common {\n\treturn e\n}\n\n// Data returns the character data accumulated for this element.\nfunc (e *Common) Data() string {\n\te.CharData = charRe.ReplaceAllStringFunc(e.CharData, replaceUnicode)\n\treturn e.CharData\n}\n\nfunc (e *Common) setName(s string) {\n\te.name = s\n}\n\nfunc (e *Common) enclosing() Elem {\n\treturn e.enclElem\n}\n\nfunc (e *Common) setEnclosing(en Elem) {\n\te.enclElem = en\n}\n\n// Escape characters that can be escaped without further escaping the string.\nvar charRe = regexp.MustCompile(`&#x[0-9a-fA-F]*;|\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}|\\\\x[0-9a-fA-F]{2}|\\\\[0-7]{3}|\\\\[abtnvfr]`)\n\n// replaceUnicode converts hexadecimal Unicode codepoint notations to a one-rune string.\n// It assumes the input string is correctly formatted.\nfunc replaceUnicode(s string) string {\n\tif s[1] == '#' {\n\t\tr, _ := strconv.ParseInt(s[3:len(s)-1], 16, 32)\n\t\treturn string(r)\n\t}\n\tr, _, _, _ := strconv.UnquoteChar(s, 0)\n\treturn string(r)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/cldr.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run makexml.go -output xml.go\n\n// Package cldr provides a parser for LDML and related XML formats.\n// This package is intended to be used by the table generation tools\n// for the various internationalization-related packages.\n// As the XML types are generated from the CLDR DTD, and as the CLDR standard\n// is periodically amended, this package may change considerably over time.\n// This mostly means that data may appear and disappear between versions.\n// That is, old code should keep compiling for newer versions, but data\n// may have moved or changed.\n// CLDR version 22 is the first version supported by this package.\n// Older versions may not work.\npackage cldr // import \"golang.org/x/text/unicode/cldr\"\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// CLDR provides access to parsed data of the Unicode Common Locale Data Repository.\ntype CLDR struct {\n\tparent   map[string][]string\n\tlocale   map[string]*LDML\n\tresolved map[string]*LDML\n\tbcp47    *LDMLBCP47\n\tsupp     *SupplementalData\n}\n\nfunc makeCLDR() *CLDR {\n\treturn &CLDR{\n\t\tparent:   make(map[string][]string),\n\t\tlocale:   make(map[string]*LDML),\n\t\tresolved: make(map[string]*LDML),\n\t\tbcp47:    &LDMLBCP47{},\n\t\tsupp:     &SupplementalData{},\n\t}\n}\n\n// BCP47 returns the parsed BCP47 LDML data. If no such data was parsed, nil is returned.\nfunc (cldr *CLDR) BCP47() *LDMLBCP47 {\n\treturn nil\n}\n\n// Draft indicates the draft level of an element.\ntype Draft int\n\nconst (\n\tApproved Draft = iota\n\tContributed\n\tProvisional\n\tUnconfirmed\n)\n\nvar drafts = []string{\"unconfirmed\", \"provisional\", \"contributed\", \"approved\", \"\"}\n\n// ParseDraft returns the Draft value corresponding to the given string. The\n// empty string corresponds to Approved.\nfunc ParseDraft(level string) (Draft, error) {\n\tif level == \"\" {\n\t\treturn Approved, nil\n\t}\n\tfor i, s := range drafts {\n\t\tif level == s {\n\t\t\treturn Unconfirmed - Draft(i), nil\n\t\t}\n\t}\n\treturn Approved, fmt.Errorf(\"cldr: unknown draft level %q\", level)\n}\n\nfunc (d Draft) String() string {\n\treturn drafts[len(drafts)-1-int(d)]\n}\n\n// SetDraftLevel sets which draft levels to include in the evaluated LDML.\n// Any draft element for which the draft level is higher than lev will be excluded.\n// If multiple draft levels are available for a single element, the one with the\n// lowest draft level will be selected, unless preferDraft is true, in which case\n// the highest draft will be chosen.\n// It is assumed that the underlying LDML is canonicalized.\nfunc (cldr *CLDR) SetDraftLevel(lev Draft, preferDraft bool) {\n\t// TODO: implement\n\tcldr.resolved = make(map[string]*LDML)\n}\n\n// RawLDML returns the LDML XML for id in unresolved form.\n// id must be one of the strings returned by Locales.\nfunc (cldr *CLDR) RawLDML(loc string) *LDML {\n\treturn cldr.locale[loc]\n}\n\n// LDML returns the fully resolved LDML XML for loc, which must be one of\n// the strings returned by Locales.\nfunc (cldr *CLDR) LDML(loc string) (*LDML, error) {\n\treturn cldr.resolve(loc)\n}\n\n// Supplemental returns the parsed supplemental data. If no such data was parsed,\n// nil is returned.\nfunc (cldr *CLDR) Supplemental() *SupplementalData {\n\treturn cldr.supp\n}\n\n// Locales returns the locales for which there exist files.\n// Valid sublocales for which there is no file are not included.\n// The root locale is always sorted first.\nfunc (cldr *CLDR) Locales() []string {\n\tloc := []string{\"root\"}\n\thasRoot := false\n\tfor l, _ := range cldr.locale {\n\t\tif l == \"root\" {\n\t\t\thasRoot = true\n\t\t\tcontinue\n\t\t}\n\t\tloc = append(loc, l)\n\t}\n\tsort.Strings(loc[1:])\n\tif !hasRoot {\n\t\treturn loc[1:]\n\t}\n\treturn loc\n}\n\n// Get fills in the fields of x based on the XPath path.\nfunc Get(e Elem, path string) (res Elem, err error) {\n\treturn walkXPath(e, path)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/collate.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cldr\n\nimport (\n\t\"bufio\"\n\t\"encoding/xml\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n// RuleProcessor can be passed to Collator's Process method, which\n// parses the rules and calls the respective method for each rule found.\ntype RuleProcessor interface {\n\tReset(anchor string, before int) error\n\tInsert(level int, str, context, extend string) error\n\tIndex(id string)\n}\n\nconst (\n\t// cldrIndex is a Unicode-reserved sentinel value used to mark the start\n\t// of a grouping within an index.\n\t// We ignore any rule that starts with this rune.\n\t// See http://unicode.org/reports/tr35/#Collation_Elements for details.\n\tcldrIndex = \"\\uFDD0\"\n\n\t// specialAnchor is the format in which to represent logical reset positions,\n\t// such as \"first tertiary ignorable\".\n\tspecialAnchor = \"<%s/>\"\n)\n\n// Process parses the rules for the tailorings of this collation\n// and calls the respective methods of p for each rule found.\nfunc (c Collation) Process(p RuleProcessor) (err error) {\n\tif len(c.Cr) > 0 {\n\t\tif len(c.Cr) > 1 {\n\t\t\treturn fmt.Errorf(\"multiple cr elements, want 0 or 1\")\n\t\t}\n\t\treturn processRules(p, c.Cr[0].Data())\n\t}\n\tif c.Rules.Any != nil {\n\t\treturn c.processXML(p)\n\t}\n\treturn errors.New(\"no tailoring data\")\n}\n\n// processRules parses rules in the Collation Rule Syntax defined in\n// http://www.unicode.org/reports/tr35/tr35-collation.html#Collation_Tailorings.\nfunc processRules(p RuleProcessor, s string) (err error) {\n\tchk := func(s string, e error) string {\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\t\treturn s\n\t}\n\ti := 0 // Save the line number for use after the loop.\n\tscanner := bufio.NewScanner(strings.NewReader(s))\n\tfor ; scanner.Scan() && err == nil; i++ {\n\t\tfor s := skipSpace(scanner.Text()); s != \"\" && s[0] != '#'; s = skipSpace(s) {\n\t\t\tlevel := 5\n\t\t\tvar ch byte\n\t\t\tswitch ch, s = s[0], s[1:]; ch {\n\t\t\tcase '&': // followed by <anchor> or '[' <key> ']'\n\t\t\t\tif s = skipSpace(s); consume(&s, '[') {\n\t\t\t\t\ts = chk(parseSpecialAnchor(p, s))\n\t\t\t\t} else {\n\t\t\t\t\ts = chk(parseAnchor(p, 0, s))\n\t\t\t\t}\n\t\t\tcase '<': // sort relation '<'{1,4}, optionally followed by '*'.\n\t\t\t\tfor level = 1; consume(&s, '<'); level++ {\n\t\t\t\t}\n\t\t\t\tif level > 4 {\n\t\t\t\t\terr = fmt.Errorf(\"level %d > 4\", level)\n\t\t\t\t}\n\t\t\t\tfallthrough\n\t\t\tcase '=': // identity relation, optionally followed by *.\n\t\t\t\tif consume(&s, '*') {\n\t\t\t\t\ts = chk(parseSequence(p, level, s))\n\t\t\t\t} else {\n\t\t\t\t\ts = chk(parseOrder(p, level, s))\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tchk(\"\", fmt.Errorf(\"illegal operator %q\", ch))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif chk(\"\", scanner.Err()); err != nil {\n\t\treturn fmt.Errorf(\"%d: %v\", i, err)\n\t}\n\treturn nil\n}\n\n// parseSpecialAnchor parses the anchor syntax which is either of the form\n//    ['before' <level>] <anchor>\n// or\n//    [<label>]\n// The starting should already be consumed.\nfunc parseSpecialAnchor(p RuleProcessor, s string) (tail string, err error) {\n\ti := strings.IndexByte(s, ']')\n\tif i == -1 {\n\t\treturn \"\", errors.New(\"unmatched bracket\")\n\t}\n\ta := strings.TrimSpace(s[:i])\n\ts = s[i+1:]\n\tif strings.HasPrefix(a, \"before \") {\n\t\tl, err := strconv.ParseUint(skipSpace(a[len(\"before \"):]), 10, 3)\n\t\tif err != nil {\n\t\t\treturn s, err\n\t\t}\n\t\treturn parseAnchor(p, int(l), s)\n\t}\n\treturn s, p.Reset(fmt.Sprintf(specialAnchor, a), 0)\n}\n\nfunc parseAnchor(p RuleProcessor, level int, s string) (tail string, err error) {\n\tanchor, s, err := scanString(s)\n\tif err != nil {\n\t\treturn s, err\n\t}\n\treturn s, p.Reset(anchor, level)\n}\n\nfunc parseOrder(p RuleProcessor, level int, s string) (tail string, err error) {\n\tvar value, context, extend string\n\tif value, s, err = scanString(s); err != nil {\n\t\treturn s, err\n\t}\n\tif strings.HasPrefix(value, cldrIndex) {\n\t\tp.Index(value[len(cldrIndex):])\n\t\treturn\n\t}\n\tif consume(&s, '|') {\n\t\tif context, s, err = scanString(s); err != nil {\n\t\t\treturn s, errors.New(\"missing string after context\")\n\t\t}\n\t}\n\tif consume(&s, '/') {\n\t\tif extend, s, err = scanString(s); err != nil {\n\t\t\treturn s, errors.New(\"missing string after extension\")\n\t\t}\n\t}\n\treturn s, p.Insert(level, value, context, extend)\n}\n\n// scanString scans a single input string.\nfunc scanString(s string) (str, tail string, err error) {\n\tif s = skipSpace(s); s == \"\" {\n\t\treturn s, s, errors.New(\"missing string\")\n\t}\n\tbuf := [16]byte{} // small but enough to hold most cases.\n\tvalue := buf[:0]\n\tfor s != \"\" {\n\t\tif consume(&s, '\\'') {\n\t\t\ti := strings.IndexByte(s, '\\'')\n\t\t\tif i == -1 {\n\t\t\t\treturn \"\", \"\", errors.New(`unmatched single quote`)\n\t\t\t}\n\t\t\tif i == 0 {\n\t\t\t\tvalue = append(value, '\\'')\n\t\t\t} else {\n\t\t\t\tvalue = append(value, s[:i]...)\n\t\t\t}\n\t\t\ts = s[i+1:]\n\t\t\tcontinue\n\t\t}\n\t\tr, sz := utf8.DecodeRuneInString(s)\n\t\tif unicode.IsSpace(r) || strings.ContainsRune(\"&<=#\", r) {\n\t\t\tbreak\n\t\t}\n\t\tvalue = append(value, s[:sz]...)\n\t\ts = s[sz:]\n\t}\n\treturn string(value), skipSpace(s), nil\n}\n\nfunc parseSequence(p RuleProcessor, level int, s string) (tail string, err error) {\n\tif s = skipSpace(s); s == \"\" {\n\t\treturn s, errors.New(\"empty sequence\")\n\t}\n\tlast := rune(0)\n\tfor s != \"\" {\n\t\tr, sz := utf8.DecodeRuneInString(s)\n\t\ts = s[sz:]\n\n\t\tif r == '-' {\n\t\t\t// We have a range. The first element was already written.\n\t\t\tif last == 0 {\n\t\t\t\treturn s, errors.New(\"range without starter value\")\n\t\t\t}\n\t\t\tr, sz = utf8.DecodeRuneInString(s)\n\t\t\ts = s[sz:]\n\t\t\tif r == utf8.RuneError || r < last {\n\t\t\t\treturn s, fmt.Errorf(\"invalid range %q-%q\", last, r)\n\t\t\t}\n\t\t\tfor i := last + 1; i <= r; i++ {\n\t\t\t\tif err := p.Insert(level, string(i), \"\", \"\"); err != nil {\n\t\t\t\t\treturn s, err\n\t\t\t\t}\n\t\t\t}\n\t\t\tlast = 0\n\t\t\tcontinue\n\t\t}\n\n\t\tif unicode.IsSpace(r) || unicode.IsPunct(r) {\n\t\t\tbreak\n\t\t}\n\n\t\t// normal case\n\t\tif err := p.Insert(level, string(r), \"\", \"\"); err != nil {\n\t\t\treturn s, err\n\t\t}\n\t\tlast = r\n\t}\n\treturn s, nil\n}\n\nfunc skipSpace(s string) string {\n\treturn strings.TrimLeftFunc(s, unicode.IsSpace)\n}\n\n// consumes returns whether the next byte is ch. If so, it gobbles it by\n// updating s.\nfunc consume(s *string, ch byte) (ok bool) {\n\tif *s == \"\" || (*s)[0] != ch {\n\t\treturn false\n\t}\n\t*s = (*s)[1:]\n\treturn true\n}\n\n// The following code parses Collation rules of CLDR version 24 and before.\n\nvar lmap = map[byte]int{\n\t'p': 1,\n\t's': 2,\n\t't': 3,\n\t'i': 5,\n}\n\ntype rulesElem struct {\n\tRules struct {\n\t\tCommon\n\t\tAny []*struct {\n\t\t\tXMLName xml.Name\n\t\t\trule\n\t\t} `xml:\",any\"`\n\t} `xml:\"rules\"`\n}\n\ntype rule struct {\n\tValue  string `xml:\",chardata\"`\n\tBefore string `xml:\"before,attr\"`\n\tAny    []*struct {\n\t\tXMLName xml.Name\n\t\trule\n\t} `xml:\",any\"`\n}\n\nvar emptyValueError = errors.New(\"cldr: empty rule value\")\n\nfunc (r *rule) value() (string, error) {\n\t// Convert hexadecimal Unicode codepoint notation to a string.\n\ts := charRe.ReplaceAllStringFunc(r.Value, replaceUnicode)\n\tr.Value = s\n\tif s == \"\" {\n\t\tif len(r.Any) != 1 {\n\t\t\treturn \"\", emptyValueError\n\t\t}\n\t\tr.Value = fmt.Sprintf(specialAnchor, r.Any[0].XMLName.Local)\n\t\tr.Any = nil\n\t} else if len(r.Any) != 0 {\n\t\treturn \"\", fmt.Errorf(\"cldr: XML elements found in collation rule: %v\", r.Any)\n\t}\n\treturn r.Value, nil\n}\n\nfunc (r rule) process(p RuleProcessor, name, context, extend string) error {\n\tv, err := r.value()\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch name {\n\tcase \"p\", \"s\", \"t\", \"i\":\n\t\tif strings.HasPrefix(v, cldrIndex) {\n\t\t\tp.Index(v[len(cldrIndex):])\n\t\t\treturn nil\n\t\t}\n\t\tif err := p.Insert(lmap[name[0]], v, context, extend); err != nil {\n\t\t\treturn err\n\t\t}\n\tcase \"pc\", \"sc\", \"tc\", \"ic\":\n\t\tlevel := lmap[name[0]]\n\t\tfor _, s := range v {\n\t\t\tif err := p.Insert(level, string(s), context, extend); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"cldr: unsupported tag: %q\", name)\n\t}\n\treturn nil\n}\n\n// processXML parses the format of CLDR versions 24 and older.\nfunc (c Collation) processXML(p RuleProcessor) (err error) {\n\t// Collation is generated and defined in xml.go.\n\tvar v string\n\tfor _, r := range c.Rules.Any {\n\t\tswitch r.XMLName.Local {\n\t\tcase \"reset\":\n\t\t\tlevel := 0\n\t\t\tswitch r.Before {\n\t\t\tcase \"primary\", \"1\":\n\t\t\t\tlevel = 1\n\t\t\tcase \"secondary\", \"2\":\n\t\t\t\tlevel = 2\n\t\t\tcase \"tertiary\", \"3\":\n\t\t\t\tlevel = 3\n\t\t\tcase \"\":\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"cldr: unknown level %q\", r.Before)\n\t\t\t}\n\t\t\tv, err = r.value()\n\t\t\tif err == nil {\n\t\t\t\terr = p.Reset(v, level)\n\t\t\t}\n\t\tcase \"x\":\n\t\t\tvar context, extend string\n\t\t\tfor _, r1 := range r.Any {\n\t\t\t\tv, err = r1.value()\n\t\t\t\tswitch r1.XMLName.Local {\n\t\t\t\tcase \"context\":\n\t\t\t\t\tcontext = v\n\t\t\t\tcase \"extend\":\n\t\t\t\t\textend = v\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, r1 := range r.Any {\n\t\t\t\tif t := r1.XMLName.Local; t == \"context\" || t == \"extend\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tr1.rule.process(p, r1.XMLName.Local, context, extend)\n\t\t\t}\n\t\tdefault:\n\t\t\terr = r.rule.process(p, r.XMLName.Local, \"\", \"\")\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/decode.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cldr\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n)\n\n// A Decoder loads an archive of CLDR data.\ntype Decoder struct {\n\tdirFilter     []string\n\tsectionFilter []string\n\tloader        Loader\n\tcldr          *CLDR\n\tcurLocale     string\n}\n\n// SetSectionFilter takes a list top-level LDML element names to which\n// evaluation of LDML should be limited.  It automatically calls SetDirFilter.\nfunc (d *Decoder) SetSectionFilter(filter ...string) {\n\td.sectionFilter = filter\n\t// TODO: automatically set dir filter\n}\n\n// SetDirFilter limits the loading of LDML XML files of the specied directories.\n// Note that sections may be split across directories differently for different CLDR versions.\n// For more robust code, use SetSectionFilter.\nfunc (d *Decoder) SetDirFilter(dir ...string) {\n\td.dirFilter = dir\n}\n\n// A Loader provides access to the files of a CLDR archive.\ntype Loader interface {\n\tLen() int\n\tPath(i int) string\n\tReader(i int) (io.ReadCloser, error)\n}\n\nvar fileRe = regexp.MustCompile(`.*[/\\\\](.*)[/\\\\](.*)\\.xml`)\n\n// Decode loads and decodes the files represented by l.\nfunc (d *Decoder) Decode(l Loader) (cldr *CLDR, err error) {\n\td.cldr = makeCLDR()\n\tfor i := 0; i < l.Len(); i++ {\n\t\tfname := l.Path(i)\n\t\tif m := fileRe.FindStringSubmatch(fname); m != nil {\n\t\t\tif len(d.dirFilter) > 0 && !in(d.dirFilter, m[1]) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar r io.Reader\n\t\t\tif r, err = l.Reader(i); err == nil {\n\t\t\t\terr = d.decode(m[1], m[2], r)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\td.cldr.finalize(d.sectionFilter)\n\treturn d.cldr, nil\n}\n\nfunc (d *Decoder) decode(dir, id string, r io.Reader) error {\n\tvar v interface{}\n\tvar l *LDML\n\tcldr := d.cldr\n\tswitch {\n\tcase dir == \"supplemental\":\n\t\tv = cldr.supp\n\tcase dir == \"transforms\":\n\t\treturn nil\n\tcase dir == \"bcp47\":\n\t\tv = cldr.bcp47\n\tcase dir == \"validity\":\n\t\treturn nil\n\tdefault:\n\t\tok := false\n\t\tif v, ok = cldr.locale[id]; !ok {\n\t\t\tl = &LDML{}\n\t\t\tv, cldr.locale[id] = l, l\n\t\t}\n\t}\n\tx := xml.NewDecoder(r)\n\tif err := x.Decode(v); err != nil {\n\t\tlog.Printf(\"%s/%s: %v\", dir, id, err)\n\t\treturn err\n\t}\n\tif l != nil {\n\t\tif l.Identity == nil {\n\t\t\treturn fmt.Errorf(\"%s/%s: missing identity element\", dir, id)\n\t\t}\n\t\t// TODO: verify when CLDR bug http://unicode.org/cldr/trac/ticket/8970\n\t\t// is resolved.\n\t\t// path := strings.Split(id, \"_\")\n\t\t// if lang := l.Identity.Language.Type; lang != path[0] {\n\t\t// \treturn fmt.Errorf(\"%s/%s: language was %s; want %s\", dir, id, lang, path[0])\n\t\t// }\n\t}\n\treturn nil\n}\n\ntype pathLoader []string\n\nfunc makePathLoader(path string) (pl pathLoader, err error) {\n\terr = filepath.Walk(path, func(path string, _ os.FileInfo, err error) error {\n\t\tpl = append(pl, path)\n\t\treturn err\n\t})\n\treturn pl, err\n}\n\nfunc (pl pathLoader) Len() int {\n\treturn len(pl)\n}\n\nfunc (pl pathLoader) Path(i int) string {\n\treturn pl[i]\n}\n\nfunc (pl pathLoader) Reader(i int) (io.ReadCloser, error) {\n\treturn os.Open(pl[i])\n}\n\n// DecodePath loads CLDR data from the given path.\nfunc (d *Decoder) DecodePath(path string) (cldr *CLDR, err error) {\n\tloader, err := makePathLoader(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn d.Decode(loader)\n}\n\ntype zipLoader struct {\n\tr *zip.Reader\n}\n\nfunc (zl zipLoader) Len() int {\n\treturn len(zl.r.File)\n}\n\nfunc (zl zipLoader) Path(i int) string {\n\treturn zl.r.File[i].Name\n}\n\nfunc (zl zipLoader) Reader(i int) (io.ReadCloser, error) {\n\treturn zl.r.File[i].Open()\n}\n\n// DecodeZip loads CLDR data from the zip archive for which r is the source.\nfunc (d *Decoder) DecodeZip(r io.Reader) (cldr *CLDR, err error) {\n\tbuffer, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tarchive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn d.Decode(zipLoader{archive})\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/makexml.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n// This tool generates types for the various XML formats of CLDR.\npackage main\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"encoding/xml\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/gen\"\n)\n\nvar outputFile = flag.String(\"output\", \"xml.go\", \"output file name\")\n\nfunc main() {\n\tflag.Parse()\n\n\tr := gen.OpenCLDRCoreZip()\n\tbuffer, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\tlog.Fatal(\"Could not read zip file\")\n\t}\n\tr.Close()\n\tz, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))\n\tif err != nil {\n\t\tlog.Fatalf(\"Could not read zip archive: %v\", err)\n\t}\n\n\tvar buf bytes.Buffer\n\n\tversion := gen.CLDRVersion()\n\n\tfor _, dtd := range files {\n\t\tfor _, f := range z.File {\n\t\t\tif strings.HasSuffix(f.Name, dtd.file+\".dtd\") {\n\t\t\t\tr, err := f.Open()\n\t\t\t\tfailOnError(err)\n\n\t\t\t\tb := makeBuilder(&buf, dtd)\n\t\t\t\tb.parseDTD(r)\n\t\t\t\tb.resolve(b.index[dtd.top[0]])\n\t\t\t\tb.write()\n\t\t\t\tif b.version != \"\" && version != b.version {\n\t\t\t\t\tprintln(f.Name)\n\t\t\t\t\tlog.Fatalf(\"main: inconsistent versions: found %s; want %s\", b.version, version)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tfmt.Fprintln(&buf, \"// Version is the version of CLDR from which the XML definitions are generated.\")\n\tfmt.Fprintf(&buf, \"const Version = %q\\n\", version)\n\n\tgen.WriteGoFile(*outputFile, \"cldr\", buf.Bytes())\n}\n\nfunc failOnError(err error) {\n\tif err != nil {\n\t\tlog.New(os.Stderr, \"\", log.Lshortfile).Output(2, err.Error())\n\t\tos.Exit(1)\n\t}\n}\n\n// configuration data per DTD type\ntype dtd struct {\n\tfile string   // base file name\n\troot string   // Go name of the root XML element\n\ttop  []string // create a different type for this section\n\n\tskipElem    []string // hard-coded or deprecated elements\n\tskipAttr    []string // attributes to exclude\n\tpredefined  []string // hard-coded elements exist of the form <name>Elem\n\tforceRepeat []string // elements to make slices despite DTD\n}\n\nvar files = []dtd{\n\t{\n\t\tfile: \"ldmlBCP47\",\n\t\troot: \"LDMLBCP47\",\n\t\ttop:  []string{\"ldmlBCP47\"},\n\t\tskipElem: []string{\n\t\t\t\"cldrVersion\", // deprecated, not used\n\t\t},\n\t},\n\t{\n\t\tfile: \"ldmlSupplemental\",\n\t\troot: \"SupplementalData\",\n\t\ttop:  []string{\"supplementalData\"},\n\t\tskipElem: []string{\n\t\t\t\"cldrVersion\", // deprecated, not used\n\t\t},\n\t\tforceRepeat: []string{\n\t\t\t\"plurals\", // data defined in plurals.xml and ordinals.xml\n\t\t},\n\t},\n\t{\n\t\tfile: \"ldml\",\n\t\troot: \"LDML\",\n\t\ttop: []string{\n\t\t\t\"ldml\", \"collation\", \"calendar\", \"timeZoneNames\", \"localeDisplayNames\", \"numbers\",\n\t\t},\n\t\tskipElem: []string{\n\t\t\t\"cp\",       // not used anywhere\n\t\t\t\"special\",  // not used anywhere\n\t\t\t\"fallback\", // deprecated, not used\n\t\t\t\"alias\",    // in Common\n\t\t\t\"default\",  // in Common\n\t\t},\n\t\tskipAttr: []string{\n\t\t\t\"hiraganaQuarternary\", // typo in DTD, correct version included as well\n\t\t},\n\t\tpredefined: []string{\"rules\"},\n\t},\n}\n\nvar comments = map[string]string{\n\t\"ldmlBCP47\": `\n// LDMLBCP47 holds information on allowable values for various variables in LDML.\n`,\n\t\"supplementalData\": `\n// SupplementalData holds information relevant for internationalization\n// and proper use of CLDR, but that is not contained in the locale hierarchy.\n`,\n\t\"ldml\": `\n// LDML is the top-level type for locale-specific data.\n`,\n\t\"collation\": `\n// Collation contains rules that specify a certain sort-order,\n// as a tailoring of the root order. \n// The parsed rules are obtained by passing a RuleProcessor to Collation's\n// Process method.\n`,\n\t\"calendar\": `\n// Calendar specifies the fields used for formatting and parsing dates and times.\n// The month and quarter names are identified numerically, starting at 1.\n// The day (of the week) names are identified with short strings, since there is\n// no universally-accepted numeric designation.\n`,\n\t\"dates\": `\n// Dates contains information regarding the format and parsing of dates and times.\n`,\n\t\"localeDisplayNames\": `\n// LocaleDisplayNames specifies localized display names for for scripts, languages,\n// countries, currencies, and variants.\n`,\n\t\"numbers\": `\n// Numbers supplies information for formatting and parsing numbers and currencies.\n`,\n}\n\ntype element struct {\n\tname      string // XML element name\n\tcategory  string // elements contained by this element\n\tsignature string // category + attrKey*\n\n\tattr []*attribute // attributes supported by this element.\n\tsub  []struct {   // parsed and evaluated sub elements of this element.\n\t\te      *element\n\t\trepeat bool // true if the element needs to be a slice\n\t}\n\n\tresolved bool // prevent multiple resolutions of this element.\n}\n\ntype attribute struct {\n\tname string\n\tkey  string\n\tlist []string\n\n\ttag string // Go tag\n}\n\nvar (\n\treHead  = regexp.MustCompile(` *(\\w+) +([\\w\\-]+)`)\n\treAttr  = regexp.MustCompile(` *(\\w+) *(?:(\\w+)|\\(([\\w\\- \\|]+)\\)) *(?:#([A-Z]*) *(?:\\\"([\\.\\d+])\\\")?)? *(\"[\\w\\-:]*\")?`)\n\treElem  = regexp.MustCompile(`^ *(EMPTY|ANY|\\(.*\\)[\\*\\+\\?]?) *$`)\n\treToken = regexp.MustCompile(`\\w\\-`)\n)\n\n// builder is used to read in the DTD files from CLDR and generate Go code\n// to be used with the encoding/xml package.\ntype builder struct {\n\tw       io.Writer\n\tindex   map[string]*element\n\telem    []*element\n\tinfo    dtd\n\tversion string\n}\n\nfunc makeBuilder(w io.Writer, d dtd) builder {\n\treturn builder{\n\t\tw:     w,\n\t\tindex: make(map[string]*element),\n\t\telem:  []*element{},\n\t\tinfo:  d,\n\t}\n}\n\n// parseDTD parses a DTD file.\nfunc (b *builder) parseDTD(r io.Reader) {\n\tfor d := xml.NewDecoder(r); ; {\n\t\tt, err := d.Token()\n\t\tif t == nil {\n\t\t\tbreak\n\t\t}\n\t\tfailOnError(err)\n\t\tdir, ok := t.(xml.Directive)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tm := reHead.FindSubmatch(dir)\n\t\tdir = dir[len(m[0]):]\n\t\tename := string(m[2])\n\t\tel, elementFound := b.index[ename]\n\t\tswitch string(m[1]) {\n\t\tcase \"ELEMENT\":\n\t\t\tif elementFound {\n\t\t\t\tlog.Fatal(\"parseDTD: duplicate entry for element %q\", ename)\n\t\t\t}\n\t\t\tm := reElem.FindSubmatch(dir)\n\t\t\tif m == nil {\n\t\t\t\tlog.Fatalf(\"parseDTD: invalid element %q\", string(dir))\n\t\t\t}\n\t\t\tif len(m[0]) != len(dir) {\n\t\t\t\tlog.Fatal(\"parseDTD: invalid element %q\", string(dir), len(dir), len(m[0]), string(m[0]))\n\t\t\t}\n\t\t\ts := string(m[1])\n\t\t\tel = &element{\n\t\t\t\tname:     ename,\n\t\t\t\tcategory: s,\n\t\t\t}\n\t\t\tb.index[ename] = el\n\t\tcase \"ATTLIST\":\n\t\t\tif !elementFound {\n\t\t\t\tlog.Fatalf(\"parseDTD: unknown element %q\", ename)\n\t\t\t}\n\t\t\ts := string(dir)\n\t\t\tm := reAttr.FindStringSubmatch(s)\n\t\t\tif m == nil {\n\t\t\t\tlog.Fatal(fmt.Errorf(\"parseDTD: invalid attribute %q\", string(dir)))\n\t\t\t}\n\t\t\tif m[4] == \"FIXED\" {\n\t\t\t\tb.version = m[5]\n\t\t\t} else {\n\t\t\t\tswitch m[1] {\n\t\t\t\tcase \"draft\", \"references\", \"alt\", \"validSubLocales\", \"standard\" /* in Common */ :\n\t\t\t\tcase \"type\", \"choice\":\n\t\t\t\tdefault:\n\t\t\t\t\tel.attr = append(el.attr, &attribute{\n\t\t\t\t\t\tname: m[1],\n\t\t\t\t\t\tkey:  s,\n\t\t\t\t\t\tlist: reToken.FindAllString(m[3], -1),\n\t\t\t\t\t})\n\t\t\t\t\tel.signature = fmt.Sprintf(\"%s=%s+%s\", el.signature, m[1], m[2])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar reCat = regexp.MustCompile(`[ ,\\|]*(?:(\\(|\\)|\\#?[\\w_-]+)([\\*\\+\\?]?))?`)\n\n// resolve takes a parsed element and converts it into structured data\n// that can be used to generate the XML code.\nfunc (b *builder) resolve(e *element) {\n\tif e.resolved {\n\t\treturn\n\t}\n\tb.elem = append(b.elem, e)\n\te.resolved = true\n\ts := e.category\n\tfound := make(map[string]bool)\n\tsequenceStart := []int{}\n\tfor len(s) > 0 {\n\t\tm := reCat.FindStringSubmatch(s)\n\t\tif m == nil {\n\t\t\tlog.Fatalf(\"%s: invalid category string %q\", e.name, s)\n\t\t}\n\t\trepeat := m[2] == \"*\" || m[2] == \"+\" || in(b.info.forceRepeat, m[1])\n\t\tswitch m[1] {\n\t\tcase \"\":\n\t\tcase \"(\":\n\t\t\tsequenceStart = append(sequenceStart, len(e.sub))\n\t\tcase \")\":\n\t\t\tif len(sequenceStart) == 0 {\n\t\t\t\tlog.Fatalf(\"%s: unmatched closing parenthesis\", e.name)\n\t\t\t}\n\t\t\tfor i := sequenceStart[len(sequenceStart)-1]; i < len(e.sub); i++ {\n\t\t\t\te.sub[i].repeat = e.sub[i].repeat || repeat\n\t\t\t}\n\t\t\tsequenceStart = sequenceStart[:len(sequenceStart)-1]\n\t\tdefault:\n\t\t\tif in(b.info.skipElem, m[1]) {\n\t\t\t} else if sub, ok := b.index[m[1]]; ok {\n\t\t\t\tif !found[sub.name] {\n\t\t\t\t\te.sub = append(e.sub, struct {\n\t\t\t\t\t\te      *element\n\t\t\t\t\t\trepeat bool\n\t\t\t\t\t}{sub, repeat})\n\t\t\t\t\tfound[sub.name] = true\n\t\t\t\t\tb.resolve(sub)\n\t\t\t\t}\n\t\t\t} else if m[1] == \"#PCDATA\" || m[1] == \"ANY\" {\n\t\t\t} else if m[1] != \"EMPTY\" {\n\t\t\t\tlog.Fatalf(\"resolve:%s: element %q not found\", e.name, m[1])\n\t\t\t}\n\t\t}\n\t\ts = s[len(m[0]):]\n\t}\n}\n\n// return true if s is contained in set.\nfunc in(set []string, s string) bool {\n\tfor _, v := range set {\n\t\tif v == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nvar repl = strings.NewReplacer(\"-\", \" \", \"_\", \" \")\n\n// title puts the first character or each character following '_' in title case and\n// removes all occurrences of '_'.\nfunc title(s string) string {\n\treturn strings.Replace(strings.Title(repl.Replace(s)), \" \", \"\", -1)\n}\n\n// writeElem generates Go code for a single element, recursively.\nfunc (b *builder) writeElem(tab int, e *element) {\n\tp := func(f string, x ...interface{}) {\n\t\tf = strings.Replace(f, \"\\n\", \"\\n\"+strings.Repeat(\"\\t\", tab), -1)\n\t\tfmt.Fprintf(b.w, f, x...)\n\t}\n\tif len(e.sub) == 0 && len(e.attr) == 0 {\n\t\tp(\"Common\")\n\t\treturn\n\t}\n\tp(\"struct {\")\n\ttab++\n\tp(\"\\nCommon\")\n\tfor _, attr := range e.attr {\n\t\tif !in(b.info.skipAttr, attr.name) {\n\t\t\tp(\"\\n%s string `xml:\\\"%s,attr\\\"`\", title(attr.name), attr.name)\n\t\t}\n\t}\n\tfor _, sub := range e.sub {\n\t\tif in(b.info.predefined, sub.e.name) {\n\t\t\tp(\"\\n%sElem\", sub.e.name)\n\t\t\tcontinue\n\t\t}\n\t\tif in(b.info.skipElem, sub.e.name) {\n\t\t\tcontinue\n\t\t}\n\t\tp(\"\\n%s \", title(sub.e.name))\n\t\tif sub.repeat {\n\t\t\tp(\"[]\")\n\t\t}\n\t\tp(\"*\")\n\t\tif in(b.info.top, sub.e.name) {\n\t\t\tp(title(sub.e.name))\n\t\t} else {\n\t\t\tb.writeElem(tab, sub.e)\n\t\t}\n\t\tp(\" `xml:\\\"%s\\\"`\", sub.e.name)\n\t}\n\ttab--\n\tp(\"\\n}\")\n}\n\n// write generates the Go XML code.\nfunc (b *builder) write() {\n\tfor i, name := range b.info.top {\n\t\te := b.index[name]\n\t\tif e != nil {\n\t\t\tfmt.Fprintf(b.w, comments[name])\n\t\t\tname := title(e.name)\n\t\t\tif i == 0 {\n\t\t\t\tname = b.info.root\n\t\t\t}\n\t\t\tfmt.Fprintf(b.w, \"type %s \", name)\n\t\t\tb.writeElem(0, e)\n\t\t\tfmt.Fprint(b.w, \"\\n\")\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/resolve.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cldr\n\n// This file implements the various inheritance constructs defined by LDML.\n// See http://www.unicode.org/reports/tr35/#Inheritance_and_Validity\n// for more details.\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// fieldIter iterates over fields in a struct. It includes\n// fields of embedded structs.\ntype fieldIter struct {\n\tv        reflect.Value\n\tindex, n []int\n}\n\nfunc iter(v reflect.Value) fieldIter {\n\tif v.Kind() != reflect.Struct {\n\t\tlog.Panicf(\"value %v must be a struct\", v)\n\t}\n\ti := fieldIter{\n\t\tv:     v,\n\t\tindex: []int{0},\n\t\tn:     []int{v.NumField()},\n\t}\n\ti.descent()\n\treturn i\n}\n\nfunc (i *fieldIter) descent() {\n\tfor f := i.field(); f.Anonymous && f.Type.NumField() > 0; f = i.field() {\n\t\ti.index = append(i.index, 0)\n\t\ti.n = append(i.n, f.Type.NumField())\n\t}\n}\n\nfunc (i *fieldIter) done() bool {\n\treturn len(i.index) == 1 && i.index[0] >= i.n[0]\n}\n\nfunc skip(f reflect.StructField) bool {\n\treturn !f.Anonymous && (f.Name[0] < 'A' || f.Name[0] > 'Z')\n}\n\nfunc (i *fieldIter) next() {\n\tfor {\n\t\tk := len(i.index) - 1\n\t\ti.index[k]++\n\t\tif i.index[k] < i.n[k] {\n\t\t\tif !skip(i.field()) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif k == 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ti.index = i.index[:k]\n\t\t\ti.n = i.n[:k]\n\t\t}\n\t}\n\ti.descent()\n}\n\nfunc (i *fieldIter) value() reflect.Value {\n\treturn i.v.FieldByIndex(i.index)\n}\n\nfunc (i *fieldIter) field() reflect.StructField {\n\treturn i.v.Type().FieldByIndex(i.index)\n}\n\ntype visitor func(v reflect.Value) error\n\nvar stopDescent = fmt.Errorf(\"do not recurse\")\n\nfunc (f visitor) visit(x interface{}) error {\n\treturn f.visitRec(reflect.ValueOf(x))\n}\n\n// visit recursively calls f on all nodes in v.\nfunc (f visitor) visitRec(v reflect.Value) error {\n\tif v.Kind() == reflect.Ptr {\n\t\tif v.IsNil() {\n\t\t\treturn nil\n\t\t}\n\t\treturn f.visitRec(v.Elem())\n\t}\n\tif err := f(v); err != nil {\n\t\tif err == stopDescent {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\tfor i := iter(v); !i.done(); i.next() {\n\t\t\tif err := f.visitRec(i.value()); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\tcase reflect.Slice:\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tif err := f.visitRec(v.Index(i)); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// getPath is used for error reporting purposes only.\nfunc getPath(e Elem) string {\n\tif e == nil {\n\t\treturn \"<nil>\"\n\t}\n\tif e.enclosing() == nil {\n\t\treturn e.GetCommon().name\n\t}\n\tif e.GetCommon().Type == \"\" {\n\t\treturn fmt.Sprintf(\"%s.%s\", getPath(e.enclosing()), e.GetCommon().name)\n\t}\n\treturn fmt.Sprintf(\"%s.%s[type=%s]\", getPath(e.enclosing()), e.GetCommon().name, e.GetCommon().Type)\n}\n\n// xmlName returns the xml name of the element or attribute\nfunc xmlName(f reflect.StructField) (name string, attr bool) {\n\ttags := strings.Split(f.Tag.Get(\"xml\"), \",\")\n\tfor _, s := range tags {\n\t\tattr = attr || s == \"attr\"\n\t}\n\treturn tags[0], attr\n}\n\nfunc findField(v reflect.Value, key string) (reflect.Value, error) {\n\tv = reflect.Indirect(v)\n\tfor i := iter(v); !i.done(); i.next() {\n\t\tif n, _ := xmlName(i.field()); n == key {\n\t\t\treturn i.value(), nil\n\t\t}\n\t}\n\treturn reflect.Value{}, fmt.Errorf(\"cldr: no field %q in element %#v\", key, v.Interface())\n}\n\nvar xpathPart = regexp.MustCompile(`(\\pL+)(?:\\[@(\\pL+)='([\\w-]+)'\\])?`)\n\nfunc walkXPath(e Elem, path string) (res Elem, err error) {\n\tfor _, c := range strings.Split(path, \"/\") {\n\t\tif c == \"..\" {\n\t\t\tif e = e.enclosing(); e == nil {\n\t\t\t\tpanic(\"path ..\")\n\t\t\t\treturn nil, fmt.Errorf(`cldr: \"..\" moves past root in path %q`, path)\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if c == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tm := xpathPart.FindStringSubmatch(c)\n\t\tif len(m) == 0 || len(m[0]) != len(c) {\n\t\t\treturn nil, fmt.Errorf(\"cldr: syntax error in path component %q\", c)\n\t\t}\n\t\tv, err := findField(reflect.ValueOf(e), m[1])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch v.Kind() {\n\t\tcase reflect.Slice:\n\t\t\ti := 0\n\t\t\tif m[2] != \"\" || v.Len() > 1 {\n\t\t\t\tif m[2] == \"\" {\n\t\t\t\t\tm[2] = \"type\"\n\t\t\t\t\tif m[3] = e.GetCommon().Default(); m[3] == \"\" {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"cldr: type selector or default value needed for element %s\", m[1])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor ; i < v.Len(); i++ {\n\t\t\t\t\tvi := v.Index(i)\n\t\t\t\t\tkey, err := findField(vi.Elem(), m[2])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tkey = reflect.Indirect(key)\n\t\t\t\t\tif key.Kind() == reflect.String && key.String() == m[3] {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif i == v.Len() || v.Index(i).IsNil() {\n\t\t\t\treturn nil, fmt.Errorf(\"no %s found with %s==%s\", m[1], m[2], m[3])\n\t\t\t}\n\t\t\te = v.Index(i).Interface().(Elem)\n\t\tcase reflect.Ptr:\n\t\t\tif v.IsNil() {\n\t\t\t\treturn nil, fmt.Errorf(\"cldr: element %q not found within element %q\", m[1], e.GetCommon().name)\n\t\t\t}\n\t\t\tvar ok bool\n\t\t\tif e, ok = v.Interface().(Elem); !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cldr: %q is not an XML element\", m[1])\n\t\t\t} else if m[2] != \"\" || m[3] != \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"cldr: no type selector allowed for element %s\", m[1])\n\t\t\t}\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"cldr: %q is not an XML element\", m[1])\n\t\t}\n\t}\n\treturn e, nil\n}\n\nconst absPrefix = \"//ldml/\"\n\nfunc (cldr *CLDR) resolveAlias(e Elem, src, path string) (res Elem, err error) {\n\tif src != \"locale\" {\n\t\tif !strings.HasPrefix(path, absPrefix) {\n\t\t\treturn nil, fmt.Errorf(\"cldr: expected absolute path, found %q\", path)\n\t\t}\n\t\tpath = path[len(absPrefix):]\n\t\tif e, err = cldr.resolve(src); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn walkXPath(e, path)\n}\n\nfunc (cldr *CLDR) resolveAndMergeAlias(e Elem) error {\n\talias := e.GetCommon().Alias\n\tif alias == nil {\n\t\treturn nil\n\t}\n\ta, err := cldr.resolveAlias(e, alias.Source, alias.Path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"%v: error evaluating path %q: %v\", getPath(e), alias.Path, err)\n\t}\n\t// Ensure alias node was already evaluated. TODO: avoid double evaluation.\n\terr = cldr.resolveAndMergeAlias(a)\n\tv := reflect.ValueOf(e).Elem()\n\tfor i := iter(reflect.ValueOf(a).Elem()); !i.done(); i.next() {\n\t\tif vv := i.value(); vv.Kind() != reflect.Ptr || !vv.IsNil() {\n\t\t\tif _, attr := xmlName(i.field()); !attr {\n\t\t\t\tv.FieldByIndex(i.index).Set(vv)\n\t\t\t}\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (cldr *CLDR) aliasResolver() visitor {\n\treturn func(v reflect.Value) (err error) {\n\t\tif e, ok := v.Addr().Interface().(Elem); ok {\n\t\t\terr = cldr.resolveAndMergeAlias(e)\n\t\t\tif err == nil && blocking[e.GetCommon().name] {\n\t\t\t\treturn stopDescent\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n}\n\n// elements within blocking elements do not inherit.\n// Taken from CLDR's supplementalMetaData.xml.\nvar blocking = map[string]bool{\n\t\"identity\":         true,\n\t\"supplementalData\": true,\n\t\"cldrTest\":         true,\n\t\"collation\":        true,\n\t\"transform\":        true,\n}\n\n// Distinguishing attributes affect inheritance; two elements with different\n// distinguishing attributes are treated as different for purposes of inheritance,\n// except when such attributes occur in the indicated elements.\n// Taken from CLDR's supplementalMetaData.xml.\nvar distinguishing = map[string][]string{\n\t\"key\":        nil,\n\t\"request_id\": nil,\n\t\"id\":         nil,\n\t\"registry\":   nil,\n\t\"alt\":        nil,\n\t\"iso4217\":    nil,\n\t\"iso3166\":    nil,\n\t\"mzone\":      nil,\n\t\"from\":       nil,\n\t\"to\":         nil,\n\t\"type\": []string{\n\t\t\"abbreviationFallback\",\n\t\t\"default\",\n\t\t\"mapping\",\n\t\t\"measurementSystem\",\n\t\t\"preferenceOrdering\",\n\t},\n\t\"numberSystem\": nil,\n}\n\nfunc in(set []string, s string) bool {\n\tfor _, v := range set {\n\t\tif v == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// attrKey computes a key based on the distinguishable attributes of\n// an element and it's values.\nfunc attrKey(v reflect.Value, exclude ...string) string {\n\tparts := []string{}\n\tename := v.Interface().(Elem).GetCommon().name\n\tv = v.Elem()\n\tfor i := iter(v); !i.done(); i.next() {\n\t\tif name, attr := xmlName(i.field()); attr {\n\t\t\tif except, ok := distinguishing[name]; ok && !in(exclude, name) && !in(except, ename) {\n\t\t\t\tv := i.value()\n\t\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\t\tv = v.Elem()\n\t\t\t\t}\n\t\t\t\tif v.IsValid() {\n\t\t\t\t\tparts = append(parts, fmt.Sprintf(\"%s=%s\", name, v.String()))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tsort.Strings(parts)\n\treturn strings.Join(parts, \";\")\n}\n\n// Key returns a key for e derived from all distinguishing attributes\n// except those specified by exclude.\nfunc Key(e Elem, exclude ...string) string {\n\treturn attrKey(reflect.ValueOf(e), exclude...)\n}\n\n// linkEnclosing sets the enclosing element as well as the name\n// for all sub-elements of child, recursively.\nfunc linkEnclosing(parent, child Elem) {\n\tchild.setEnclosing(parent)\n\tv := reflect.ValueOf(child).Elem()\n\tfor i := iter(v); !i.done(); i.next() {\n\t\tvf := i.value()\n\t\tif vf.Kind() == reflect.Slice {\n\t\t\tfor j := 0; j < vf.Len(); j++ {\n\t\t\t\tlinkEnclosing(child, vf.Index(j).Interface().(Elem))\n\t\t\t}\n\t\t} else if vf.Kind() == reflect.Ptr && !vf.IsNil() && vf.Elem().Kind() == reflect.Struct {\n\t\t\tlinkEnclosing(child, vf.Interface().(Elem))\n\t\t}\n\t}\n}\n\nfunc setNames(e Elem, name string) {\n\te.setName(name)\n\tv := reflect.ValueOf(e).Elem()\n\tfor i := iter(v); !i.done(); i.next() {\n\t\tvf := i.value()\n\t\tname, _ = xmlName(i.field())\n\t\tif vf.Kind() == reflect.Slice {\n\t\t\tfor j := 0; j < vf.Len(); j++ {\n\t\t\t\tsetNames(vf.Index(j).Interface().(Elem), name)\n\t\t\t}\n\t\t} else if vf.Kind() == reflect.Ptr && !vf.IsNil() && vf.Elem().Kind() == reflect.Struct {\n\t\t\tsetNames(vf.Interface().(Elem), name)\n\t\t}\n\t}\n}\n\n// deepCopy copies elements of v recursively.  All elements of v that may\n// be modified by inheritance are explicitly copied.\nfunc deepCopy(v reflect.Value) reflect.Value {\n\tswitch v.Kind() {\n\tcase reflect.Ptr:\n\t\tif v.IsNil() || v.Elem().Kind() != reflect.Struct {\n\t\t\treturn v\n\t\t}\n\t\tnv := reflect.New(v.Elem().Type())\n\t\tnv.Elem().Set(v.Elem())\n\t\tdeepCopyRec(nv.Elem(), v.Elem())\n\t\treturn nv\n\tcase reflect.Slice:\n\t\tnv := reflect.MakeSlice(v.Type(), v.Len(), v.Len())\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tdeepCopyRec(nv.Index(i), v.Index(i))\n\t\t}\n\t\treturn nv\n\t}\n\tpanic(\"deepCopy: must be called with pointer or slice\")\n}\n\n// deepCopyRec is only called by deepCopy.\nfunc deepCopyRec(nv, v reflect.Value) {\n\tif v.Kind() == reflect.Struct {\n\t\tt := v.Type()\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tif name, attr := xmlName(t.Field(i)); name != \"\" && !attr {\n\t\t\t\tdeepCopyRec(nv.Field(i), v.Field(i))\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnv.Set(deepCopy(v))\n\t}\n}\n\n// newNode is used to insert a missing node during inheritance.\nfunc (cldr *CLDR) newNode(v, enc reflect.Value) reflect.Value {\n\tn := reflect.New(v.Type())\n\tfor i := iter(v); !i.done(); i.next() {\n\t\tif name, attr := xmlName(i.field()); name == \"\" || attr {\n\t\t\tn.Elem().FieldByIndex(i.index).Set(i.value())\n\t\t}\n\t}\n\tn.Interface().(Elem).GetCommon().setEnclosing(enc.Addr().Interface().(Elem))\n\treturn n\n}\n\n// v, parent must be pointers to struct\nfunc (cldr *CLDR) inheritFields(v, parent reflect.Value) (res reflect.Value, err error) {\n\tt := v.Type()\n\tnv := reflect.New(t)\n\tnv.Elem().Set(v)\n\tfor i := iter(v); !i.done(); i.next() {\n\t\tvf := i.value()\n\t\tf := i.field()\n\t\tname, attr := xmlName(f)\n\t\tif name == \"\" || attr {\n\t\t\tcontinue\n\t\t}\n\t\tpf := parent.FieldByIndex(i.index)\n\t\tif blocking[name] {\n\t\t\tif vf.IsNil() {\n\t\t\t\tvf = pf\n\t\t\t}\n\t\t\tnv.Elem().FieldByIndex(i.index).Set(deepCopy(vf))\n\t\t\tcontinue\n\t\t}\n\t\tswitch f.Type.Kind() {\n\t\tcase reflect.Ptr:\n\t\t\tif f.Type.Elem().Kind() == reflect.Struct {\n\t\t\t\tif !vf.IsNil() {\n\t\t\t\t\tif vf, err = cldr.inheritStructPtr(vf, pf); err != nil {\n\t\t\t\t\t\treturn reflect.Value{}, err\n\t\t\t\t\t}\n\t\t\t\t\tvf.Interface().(Elem).setEnclosing(nv.Interface().(Elem))\n\t\t\t\t\tnv.Elem().FieldByIndex(i.index).Set(vf)\n\t\t\t\t} else if !pf.IsNil() {\n\t\t\t\t\tn := cldr.newNode(pf.Elem(), v)\n\t\t\t\t\tif vf, err = cldr.inheritStructPtr(n, pf); err != nil {\n\t\t\t\t\t\treturn reflect.Value{}, err\n\t\t\t\t\t}\n\t\t\t\t\tvf.Interface().(Elem).setEnclosing(nv.Interface().(Elem))\n\t\t\t\t\tnv.Elem().FieldByIndex(i.index).Set(vf)\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Slice:\n\t\t\tvf, err := cldr.inheritSlice(nv.Elem(), vf, pf)\n\t\t\tif err != nil {\n\t\t\t\treturn reflect.Zero(t), err\n\t\t\t}\n\t\t\tnv.Elem().FieldByIndex(i.index).Set(vf)\n\t\t}\n\t}\n\treturn nv, nil\n}\n\nfunc root(e Elem) *LDML {\n\tfor ; e.enclosing() != nil; e = e.enclosing() {\n\t}\n\treturn e.(*LDML)\n}\n\n// inheritStructPtr first merges possible aliases in with v and then inherits\n// any underspecified elements from parent.\nfunc (cldr *CLDR) inheritStructPtr(v, parent reflect.Value) (r reflect.Value, err error) {\n\tif !v.IsNil() {\n\t\te := v.Interface().(Elem).GetCommon()\n\t\talias := e.Alias\n\t\tif alias == nil && !parent.IsNil() {\n\t\t\talias = parent.Interface().(Elem).GetCommon().Alias\n\t\t}\n\t\tif alias != nil {\n\t\t\ta, err := cldr.resolveAlias(v.Interface().(Elem), alias.Source, alias.Path)\n\t\t\tif a != nil {\n\t\t\t\tif v, err = cldr.inheritFields(v.Elem(), reflect.ValueOf(a).Elem()); err != nil {\n\t\t\t\t\treturn reflect.Value{}, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif !parent.IsNil() {\n\t\t\treturn cldr.inheritFields(v.Elem(), parent.Elem())\n\t\t}\n\t} else if parent.IsNil() {\n\t\tpanic(\"should not reach here\")\n\t}\n\treturn v, nil\n}\n\n// Must be slice of struct pointers.\nfunc (cldr *CLDR) inheritSlice(enc, v, parent reflect.Value) (res reflect.Value, err error) {\n\tt := v.Type()\n\tindex := make(map[string]reflect.Value)\n\tif !v.IsNil() {\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tvi := v.Index(i)\n\t\t\tkey := attrKey(vi)\n\t\t\tindex[key] = vi\n\t\t}\n\t}\n\tif !parent.IsNil() {\n\t\tfor i := 0; i < parent.Len(); i++ {\n\t\t\tvi := parent.Index(i)\n\t\t\tkey := attrKey(vi)\n\t\t\tif w, ok := index[key]; ok {\n\t\t\t\tindex[key], err = cldr.inheritStructPtr(w, vi)\n\t\t\t} else {\n\t\t\t\tn := cldr.newNode(vi.Elem(), enc)\n\t\t\t\tindex[key], err = cldr.inheritStructPtr(n, vi)\n\t\t\t}\n\t\t\tindex[key].Interface().(Elem).setEnclosing(enc.Addr().Interface().(Elem))\n\t\t\tif err != nil {\n\t\t\t\treturn v, err\n\t\t\t}\n\t\t}\n\t}\n\tkeys := make([]string, 0, len(index))\n\tfor k, _ := range index {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\tsl := reflect.MakeSlice(t, len(index), len(index))\n\tfor i, k := range keys {\n\t\tsl.Index(i).Set(index[k])\n\t}\n\treturn sl, nil\n}\n\nfunc parentLocale(loc string) string {\n\tparts := strings.Split(loc, \"_\")\n\tif len(parts) == 1 {\n\t\treturn \"root\"\n\t}\n\tparts = parts[:len(parts)-1]\n\tkey := strings.Join(parts, \"_\")\n\treturn key\n}\n\nfunc (cldr *CLDR) resolve(loc string) (res *LDML, err error) {\n\tif r := cldr.resolved[loc]; r != nil {\n\t\treturn r, nil\n\t}\n\tx := cldr.RawLDML(loc)\n\tif x == nil {\n\t\treturn nil, fmt.Errorf(\"cldr: unknown locale %q\", loc)\n\t}\n\tvar v reflect.Value\n\tif loc == \"root\" {\n\t\tx = deepCopy(reflect.ValueOf(x)).Interface().(*LDML)\n\t\tlinkEnclosing(nil, x)\n\t\terr = cldr.aliasResolver().visit(x)\n\t} else {\n\t\tkey := parentLocale(loc)\n\t\tvar parent *LDML\n\t\tfor ; cldr.locale[key] == nil; key = parentLocale(key) {\n\t\t}\n\t\tif parent, err = cldr.resolve(key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tv, err = cldr.inheritFields(reflect.ValueOf(x).Elem(), reflect.ValueOf(parent).Elem())\n\t\tx = v.Interface().(*LDML)\n\t\tlinkEnclosing(nil, x)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcldr.resolved[loc] = x\n\treturn x, err\n}\n\n// finalize finalizes the initialization of the raw LDML structs.  It also\n// removed unwanted fields, as specified by filter, so that they will not\n// be unnecessarily evaluated.\nfunc (cldr *CLDR) finalize(filter []string) {\n\tfor _, x := range cldr.locale {\n\t\tif filter != nil {\n\t\t\tv := reflect.ValueOf(x).Elem()\n\t\t\tt := v.Type()\n\t\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\t\tf := t.Field(i)\n\t\t\t\tname, _ := xmlName(f)\n\t\t\t\tif name != \"\" && name != \"identity\" && !in(filter, name) {\n\t\t\t\t\tv.Field(i).Set(reflect.Zero(f.Type))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlinkEnclosing(nil, x) // for resolving aliases and paths\n\t\tsetNames(x, \"ldml\")\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/slice.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cldr\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n)\n\n// Slice provides utilities for modifying slices of elements.\n// It can be wrapped around any slice of which the element type implements\n// interface Elem.\ntype Slice struct {\n\tptr reflect.Value\n\ttyp reflect.Type\n}\n\n// Value returns the reflect.Value of the underlying slice.\nfunc (s *Slice) Value() reflect.Value {\n\treturn s.ptr.Elem()\n}\n\n// MakeSlice wraps a pointer to a slice of Elems.\n// It replaces the array pointed to by the slice so that subsequent modifications\n// do not alter the data in a CLDR type.\n// It panics if an incorrect type is passed.\nfunc MakeSlice(slicePtr interface{}) Slice {\n\tptr := reflect.ValueOf(slicePtr)\n\tif ptr.Kind() != reflect.Ptr {\n\t\tpanic(fmt.Sprintf(\"MakeSlice: argument must be pointer to slice, found %v\", ptr.Type()))\n\t}\n\tsl := ptr.Elem()\n\tif sl.Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"MakeSlice: argument must point to a slice, found %v\", sl.Type()))\n\t}\n\tintf := reflect.TypeOf((*Elem)(nil)).Elem()\n\tif !sl.Type().Elem().Implements(intf) {\n\t\tpanic(fmt.Sprintf(\"MakeSlice: element type of slice (%v) does not implement Elem\", sl.Type().Elem()))\n\t}\n\tnsl := reflect.MakeSlice(sl.Type(), sl.Len(), sl.Len())\n\treflect.Copy(nsl, sl)\n\tsl.Set(nsl)\n\treturn Slice{\n\t\tptr: ptr,\n\t\ttyp: sl.Type().Elem().Elem(),\n\t}\n}\n\nfunc (s Slice) indexForAttr(a string) []int {\n\tfor i := iter(reflect.Zero(s.typ)); !i.done(); i.next() {\n\t\tif n, _ := xmlName(i.field()); n == a {\n\t\t\treturn i.index\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"MakeSlice: no attribute %q for type %v\", a, s.typ))\n}\n\n// Filter filters s to only include elements for which fn returns true.\nfunc (s Slice) Filter(fn func(e Elem) bool) {\n\tk := 0\n\tsl := s.Value()\n\tfor i := 0; i < sl.Len(); i++ {\n\t\tvi := sl.Index(i)\n\t\tif fn(vi.Interface().(Elem)) {\n\t\t\tsl.Index(k).Set(vi)\n\t\t\tk++\n\t\t}\n\t}\n\tsl.Set(sl.Slice(0, k))\n}\n\n// Group finds elements in s for which fn returns the same value and groups\n// them in a new Slice.\nfunc (s Slice) Group(fn func(e Elem) string) []Slice {\n\tm := make(map[string][]reflect.Value)\n\tsl := s.Value()\n\tfor i := 0; i < sl.Len(); i++ {\n\t\tvi := sl.Index(i)\n\t\tkey := fn(vi.Interface().(Elem))\n\t\tm[key] = append(m[key], vi)\n\t}\n\tkeys := []string{}\n\tfor k, _ := range m {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\tres := []Slice{}\n\tfor _, k := range keys {\n\t\tnsl := reflect.New(sl.Type())\n\t\tnsl.Elem().Set(reflect.Append(nsl.Elem(), m[k]...))\n\t\tres = append(res, MakeSlice(nsl.Interface()))\n\t}\n\treturn res\n}\n\n// SelectAnyOf filters s to contain only elements for which attr matches\n// any of the values.\nfunc (s Slice) SelectAnyOf(attr string, values ...string) {\n\tindex := s.indexForAttr(attr)\n\ts.Filter(func(e Elem) bool {\n\t\tvf := reflect.ValueOf(e).Elem().FieldByIndex(index)\n\t\treturn in(values, vf.String())\n\t})\n}\n\n// SelectOnePerGroup filters s to include at most one element e per group of\n// elements matching Key(attr), where e has an attribute a that matches any\n// the values in v.\n// If more than one element in a group matches a value in v preference\n// is given to the element that matches the first value in v.\nfunc (s Slice) SelectOnePerGroup(a string, v []string) {\n\tindex := s.indexForAttr(a)\n\tgrouped := s.Group(func(e Elem) string { return Key(e, a) })\n\tsl := s.Value()\n\tsl.Set(sl.Slice(0, 0))\n\tfor _, g := range grouped {\n\t\te := reflect.Value{}\n\t\tfound := len(v)\n\t\tgsl := g.Value()\n\t\tfor i := 0; i < gsl.Len(); i++ {\n\t\t\tvi := gsl.Index(i).Elem().FieldByIndex(index)\n\t\t\tj := 0\n\t\t\tfor ; j < len(v) && v[j] != vi.String(); j++ {\n\t\t\t}\n\t\t\tif j < found {\n\t\t\t\tfound = j\n\t\t\t\te = gsl.Index(i)\n\t\t\t}\n\t\t}\n\t\tif found < len(v) {\n\t\t\tsl.Set(reflect.Append(sl, e))\n\t\t}\n\t}\n}\n\n// SelectDraft drops all elements from the list with a draft level smaller than d\n// and selects the highest draft level of the remaining.\n// This method assumes that the input CLDR is canonicalized.\nfunc (s Slice) SelectDraft(d Draft) {\n\ts.SelectOnePerGroup(\"draft\", drafts[len(drafts)-2-int(d):])\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/cldr/xml.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage cldr\n\n// LDMLBCP47 holds information on allowable values for various variables in LDML.\ntype LDMLBCP47 struct {\n\tCommon\n\tVersion *struct {\n\t\tCommon\n\t\tNumber string `xml:\"number,attr\"`\n\t} `xml:\"version\"`\n\tGeneration *struct {\n\t\tCommon\n\t\tDate string `xml:\"date,attr\"`\n\t} `xml:\"generation\"`\n\tKeyword []*struct {\n\t\tCommon\n\t\tKey []*struct {\n\t\t\tCommon\n\t\t\tExtension   string `xml:\"extension,attr\"`\n\t\t\tName        string `xml:\"name,attr\"`\n\t\t\tDescription string `xml:\"description,attr\"`\n\t\t\tDeprecated  string `xml:\"deprecated,attr\"`\n\t\t\tPreferred   string `xml:\"preferred,attr\"`\n\t\t\tAlias       string `xml:\"alias,attr\"`\n\t\t\tValueType   string `xml:\"valueType,attr\"`\n\t\t\tSince       string `xml:\"since,attr\"`\n\t\t\tType        []*struct {\n\t\t\t\tCommon\n\t\t\t\tName        string `xml:\"name,attr\"`\n\t\t\t\tDescription string `xml:\"description,attr\"`\n\t\t\t\tDeprecated  string `xml:\"deprecated,attr\"`\n\t\t\t\tPreferred   string `xml:\"preferred,attr\"`\n\t\t\t\tAlias       string `xml:\"alias,attr\"`\n\t\t\t\tSince       string `xml:\"since,attr\"`\n\t\t\t} `xml:\"type\"`\n\t\t} `xml:\"key\"`\n\t} `xml:\"keyword\"`\n\tAttribute []*struct {\n\t\tCommon\n\t\tName        string `xml:\"name,attr\"`\n\t\tDescription string `xml:\"description,attr\"`\n\t\tDeprecated  string `xml:\"deprecated,attr\"`\n\t\tPreferred   string `xml:\"preferred,attr\"`\n\t\tSince       string `xml:\"since,attr\"`\n\t} `xml:\"attribute\"`\n}\n\n// SupplementalData holds information relevant for internationalization\n// and proper use of CLDR, but that is not contained in the locale hierarchy.\ntype SupplementalData struct {\n\tCommon\n\tVersion *struct {\n\t\tCommon\n\t\tNumber string `xml:\"number,attr\"`\n\t} `xml:\"version\"`\n\tGeneration *struct {\n\t\tCommon\n\t\tDate string `xml:\"date,attr\"`\n\t} `xml:\"generation\"`\n\tCurrencyData *struct {\n\t\tCommon\n\t\tFractions []*struct {\n\t\t\tCommon\n\t\t\tInfo []*struct {\n\t\t\t\tCommon\n\t\t\t\tIso4217      string `xml:\"iso4217,attr\"`\n\t\t\t\tDigits       string `xml:\"digits,attr\"`\n\t\t\t\tRounding     string `xml:\"rounding,attr\"`\n\t\t\t\tCashDigits   string `xml:\"cashDigits,attr\"`\n\t\t\t\tCashRounding string `xml:\"cashRounding,attr\"`\n\t\t\t} `xml:\"info\"`\n\t\t} `xml:\"fractions\"`\n\t\tRegion []*struct {\n\t\t\tCommon\n\t\t\tIso3166  string `xml:\"iso3166,attr\"`\n\t\t\tCurrency []*struct {\n\t\t\t\tCommon\n\t\t\t\tBefore       string `xml:\"before,attr\"`\n\t\t\t\tFrom         string `xml:\"from,attr\"`\n\t\t\t\tTo           string `xml:\"to,attr\"`\n\t\t\t\tIso4217      string `xml:\"iso4217,attr\"`\n\t\t\t\tDigits       string `xml:\"digits,attr\"`\n\t\t\t\tRounding     string `xml:\"rounding,attr\"`\n\t\t\t\tCashRounding string `xml:\"cashRounding,attr\"`\n\t\t\t\tTender       string `xml:\"tender,attr\"`\n\t\t\t\tAlternate    []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tIso4217 string `xml:\"iso4217,attr\"`\n\t\t\t\t} `xml:\"alternate\"`\n\t\t\t} `xml:\"currency\"`\n\t\t} `xml:\"region\"`\n\t} `xml:\"currencyData\"`\n\tTerritoryContainment *struct {\n\t\tCommon\n\t\tGroup []*struct {\n\t\t\tCommon\n\t\t\tContains string `xml:\"contains,attr\"`\n\t\t\tGrouping string `xml:\"grouping,attr\"`\n\t\t\tStatus   string `xml:\"status,attr\"`\n\t\t} `xml:\"group\"`\n\t} `xml:\"territoryContainment\"`\n\tSubdivisionContainment *struct {\n\t\tCommon\n\t\tSubgroup []*struct {\n\t\t\tCommon\n\t\t\tSubtype  string `xml:\"subtype,attr\"`\n\t\t\tContains string `xml:\"contains,attr\"`\n\t\t} `xml:\"subgroup\"`\n\t} `xml:\"subdivisionContainment\"`\n\tLanguageData *struct {\n\t\tCommon\n\t\tLanguage []*struct {\n\t\t\tCommon\n\t\t\tScripts     string `xml:\"scripts,attr\"`\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t\tVariants    string `xml:\"variants,attr\"`\n\t\t} `xml:\"language\"`\n\t} `xml:\"languageData\"`\n\tTerritoryInfo *struct {\n\t\tCommon\n\t\tTerritory []*struct {\n\t\t\tCommon\n\t\t\tGdp                string `xml:\"gdp,attr\"`\n\t\t\tLiteracyPercent    string `xml:\"literacyPercent,attr\"`\n\t\t\tPopulation         string `xml:\"population,attr\"`\n\t\t\tLanguagePopulation []*struct {\n\t\t\t\tCommon\n\t\t\t\tLiteracyPercent   string `xml:\"literacyPercent,attr\"`\n\t\t\t\tWritingPercent    string `xml:\"writingPercent,attr\"`\n\t\t\t\tPopulationPercent string `xml:\"populationPercent,attr\"`\n\t\t\t\tOfficialStatus    string `xml:\"officialStatus,attr\"`\n\t\t\t} `xml:\"languagePopulation\"`\n\t\t} `xml:\"territory\"`\n\t} `xml:\"territoryInfo\"`\n\tPostalCodeData *struct {\n\t\tCommon\n\t\tPostCodeRegex []*struct {\n\t\t\tCommon\n\t\t\tTerritoryId string `xml:\"territoryId,attr\"`\n\t\t} `xml:\"postCodeRegex\"`\n\t} `xml:\"postalCodeData\"`\n\tCalendarData *struct {\n\t\tCommon\n\t\tCalendar []*struct {\n\t\t\tCommon\n\t\t\tTerritories    string  `xml:\"territories,attr\"`\n\t\t\tCalendarSystem *Common `xml:\"calendarSystem\"`\n\t\t\tEras           *struct {\n\t\t\t\tCommon\n\t\t\t\tEra []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tStart string `xml:\"start,attr\"`\n\t\t\t\t\tEnd   string `xml:\"end,attr\"`\n\t\t\t\t} `xml:\"era\"`\n\t\t\t} `xml:\"eras\"`\n\t\t} `xml:\"calendar\"`\n\t} `xml:\"calendarData\"`\n\tCalendarPreferenceData *struct {\n\t\tCommon\n\t\tCalendarPreference []*struct {\n\t\t\tCommon\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t\tOrdering    string `xml:\"ordering,attr\"`\n\t\t} `xml:\"calendarPreference\"`\n\t} `xml:\"calendarPreferenceData\"`\n\tWeekData *struct {\n\t\tCommon\n\t\tMinDays []*struct {\n\t\t\tCommon\n\t\t\tCount       string `xml:\"count,attr\"`\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t} `xml:\"minDays\"`\n\t\tFirstDay []*struct {\n\t\t\tCommon\n\t\t\tDay         string `xml:\"day,attr\"`\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t} `xml:\"firstDay\"`\n\t\tWeekendStart []*struct {\n\t\t\tCommon\n\t\t\tDay         string `xml:\"day,attr\"`\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t} `xml:\"weekendStart\"`\n\t\tWeekendEnd []*struct {\n\t\t\tCommon\n\t\t\tDay         string `xml:\"day,attr\"`\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t} `xml:\"weekendEnd\"`\n\t\tWeekOfPreference []*struct {\n\t\t\tCommon\n\t\t\tLocales  string `xml:\"locales,attr\"`\n\t\t\tOrdering string `xml:\"ordering,attr\"`\n\t\t} `xml:\"weekOfPreference\"`\n\t} `xml:\"weekData\"`\n\tTimeData *struct {\n\t\tCommon\n\t\tHours []*struct {\n\t\t\tCommon\n\t\t\tAllowed   string `xml:\"allowed,attr\"`\n\t\t\tPreferred string `xml:\"preferred,attr\"`\n\t\t\tRegions   string `xml:\"regions,attr\"`\n\t\t} `xml:\"hours\"`\n\t} `xml:\"timeData\"`\n\tMeasurementData *struct {\n\t\tCommon\n\t\tMeasurementSystem []*struct {\n\t\t\tCommon\n\t\t\tCategory    string `xml:\"category,attr\"`\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t} `xml:\"measurementSystem\"`\n\t\tPaperSize []*struct {\n\t\t\tCommon\n\t\t\tTerritories string `xml:\"territories,attr\"`\n\t\t} `xml:\"paperSize\"`\n\t} `xml:\"measurementData\"`\n\tUnitPreferenceData *struct {\n\t\tCommon\n\t\tUnitPreferences []*struct {\n\t\t\tCommon\n\t\t\tCategory       string `xml:\"category,attr\"`\n\t\t\tUsage          string `xml:\"usage,attr\"`\n\t\t\tScope          string `xml:\"scope,attr\"`\n\t\t\tUnitPreference []*struct {\n\t\t\t\tCommon\n\t\t\t\tRegions string `xml:\"regions,attr\"`\n\t\t\t} `xml:\"unitPreference\"`\n\t\t} `xml:\"unitPreferences\"`\n\t} `xml:\"unitPreferenceData\"`\n\tTimezoneData *struct {\n\t\tCommon\n\t\tMapTimezones []*struct {\n\t\t\tCommon\n\t\t\tOtherVersion string `xml:\"otherVersion,attr\"`\n\t\t\tTypeVersion  string `xml:\"typeVersion,attr\"`\n\t\t\tMapZone      []*struct {\n\t\t\t\tCommon\n\t\t\t\tOther     string `xml:\"other,attr\"`\n\t\t\t\tTerritory string `xml:\"territory,attr\"`\n\t\t\t} `xml:\"mapZone\"`\n\t\t} `xml:\"mapTimezones\"`\n\t\tZoneFormatting []*struct {\n\t\t\tCommon\n\t\t\tMultizone   string `xml:\"multizone,attr\"`\n\t\t\tTzidVersion string `xml:\"tzidVersion,attr\"`\n\t\t\tZoneItem    []*struct {\n\t\t\t\tCommon\n\t\t\t\tTerritory string `xml:\"territory,attr\"`\n\t\t\t\tAliases   string `xml:\"aliases,attr\"`\n\t\t\t} `xml:\"zoneItem\"`\n\t\t} `xml:\"zoneFormatting\"`\n\t} `xml:\"timezoneData\"`\n\tCharacters *struct {\n\t\tCommon\n\t\tCharacterFallback []*struct {\n\t\t\tCommon\n\t\t\tCharacter []*struct {\n\t\t\t\tCommon\n\t\t\t\tValue      string    `xml:\"value,attr\"`\n\t\t\t\tSubstitute []*Common `xml:\"substitute\"`\n\t\t\t} `xml:\"character\"`\n\t\t} `xml:\"character-fallback\"`\n\t} `xml:\"characters\"`\n\tTransforms *struct {\n\t\tCommon\n\t\tTransform []*struct {\n\t\t\tCommon\n\t\t\tSource        string    `xml:\"source,attr\"`\n\t\t\tTarget        string    `xml:\"target,attr\"`\n\t\t\tVariant       string    `xml:\"variant,attr\"`\n\t\t\tDirection     string    `xml:\"direction,attr\"`\n\t\t\tAlias         string    `xml:\"alias,attr\"`\n\t\t\tBackwardAlias string    `xml:\"backwardAlias,attr\"`\n\t\t\tVisibility    string    `xml:\"visibility,attr\"`\n\t\t\tComment       []*Common `xml:\"comment\"`\n\t\t\tTRule         []*Common `xml:\"tRule\"`\n\t\t} `xml:\"transform\"`\n\t} `xml:\"transforms\"`\n\tMetadata *struct {\n\t\tCommon\n\t\tAttributeOrder *Common `xml:\"attributeOrder\"`\n\t\tElementOrder   *Common `xml:\"elementOrder\"`\n\t\tSerialElements *Common `xml:\"serialElements\"`\n\t\tSuppress       *struct {\n\t\t\tCommon\n\t\t\tAttributes []*struct {\n\t\t\t\tCommon\n\t\t\t\tElement        string `xml:\"element,attr\"`\n\t\t\t\tAttribute      string `xml:\"attribute,attr\"`\n\t\t\t\tAttributeValue string `xml:\"attributeValue,attr\"`\n\t\t\t} `xml:\"attributes\"`\n\t\t} `xml:\"suppress\"`\n\t\tValidity *struct {\n\t\t\tCommon\n\t\t\tVariable []*struct {\n\t\t\t\tCommon\n\t\t\t\tId string `xml:\"id,attr\"`\n\t\t\t} `xml:\"variable\"`\n\t\t\tAttributeValues []*struct {\n\t\t\t\tCommon\n\t\t\t\tDtds       string `xml:\"dtds,attr\"`\n\t\t\t\tElements   string `xml:\"elements,attr\"`\n\t\t\t\tAttributes string `xml:\"attributes,attr\"`\n\t\t\t\tOrder      string `xml:\"order,attr\"`\n\t\t\t} `xml:\"attributeValues\"`\n\t\t} `xml:\"validity\"`\n\t\tAlias *struct {\n\t\t\tCommon\n\t\t\tLanguageAlias []*struct {\n\t\t\t\tCommon\n\t\t\t\tReplacement string `xml:\"replacement,attr\"`\n\t\t\t\tReason      string `xml:\"reason,attr\"`\n\t\t\t} `xml:\"languageAlias\"`\n\t\t\tScriptAlias []*struct {\n\t\t\t\tCommon\n\t\t\t\tReplacement string `xml:\"replacement,attr\"`\n\t\t\t\tReason      string `xml:\"reason,attr\"`\n\t\t\t} `xml:\"scriptAlias\"`\n\t\t\tTerritoryAlias []*struct {\n\t\t\t\tCommon\n\t\t\t\tReplacement string `xml:\"replacement,attr\"`\n\t\t\t\tReason      string `xml:\"reason,attr\"`\n\t\t\t} `xml:\"territoryAlias\"`\n\t\t\tSubdivisionAlias []*struct {\n\t\t\t\tCommon\n\t\t\t\tReplacement string `xml:\"replacement,attr\"`\n\t\t\t\tReason      string `xml:\"reason,attr\"`\n\t\t\t} `xml:\"subdivisionAlias\"`\n\t\t\tVariantAlias []*struct {\n\t\t\t\tCommon\n\t\t\t\tReplacement string `xml:\"replacement,attr\"`\n\t\t\t\tReason      string `xml:\"reason,attr\"`\n\t\t\t} `xml:\"variantAlias\"`\n\t\t\tZoneAlias []*struct {\n\t\t\t\tCommon\n\t\t\t\tReplacement string `xml:\"replacement,attr\"`\n\t\t\t\tReason      string `xml:\"reason,attr\"`\n\t\t\t} `xml:\"zoneAlias\"`\n\t\t} `xml:\"alias\"`\n\t\tDeprecated *struct {\n\t\t\tCommon\n\t\t\tDeprecatedItems []*struct {\n\t\t\t\tCommon\n\t\t\t\tElements   string `xml:\"elements,attr\"`\n\t\t\t\tAttributes string `xml:\"attributes,attr\"`\n\t\t\t\tValues     string `xml:\"values,attr\"`\n\t\t\t} `xml:\"deprecatedItems\"`\n\t\t} `xml:\"deprecated\"`\n\t\tDistinguishing *struct {\n\t\t\tCommon\n\t\t\tDistinguishingItems []*struct {\n\t\t\t\tCommon\n\t\t\t\tExclude    string `xml:\"exclude,attr\"`\n\t\t\t\tElements   string `xml:\"elements,attr\"`\n\t\t\t\tAttributes string `xml:\"attributes,attr\"`\n\t\t\t} `xml:\"distinguishingItems\"`\n\t\t} `xml:\"distinguishing\"`\n\t\tBlocking *struct {\n\t\t\tCommon\n\t\t\tBlockingItems []*struct {\n\t\t\t\tCommon\n\t\t\t\tElements string `xml:\"elements,attr\"`\n\t\t\t} `xml:\"blockingItems\"`\n\t\t} `xml:\"blocking\"`\n\t\tCoverageAdditions *struct {\n\t\t\tCommon\n\t\t\tLanguageCoverage []*struct {\n\t\t\t\tCommon\n\t\t\t\tValues string `xml:\"values,attr\"`\n\t\t\t} `xml:\"languageCoverage\"`\n\t\t\tScriptCoverage []*struct {\n\t\t\t\tCommon\n\t\t\t\tValues string `xml:\"values,attr\"`\n\t\t\t} `xml:\"scriptCoverage\"`\n\t\t\tTerritoryCoverage []*struct {\n\t\t\t\tCommon\n\t\t\t\tValues string `xml:\"values,attr\"`\n\t\t\t} `xml:\"territoryCoverage\"`\n\t\t\tCurrencyCoverage []*struct {\n\t\t\t\tCommon\n\t\t\t\tValues string `xml:\"values,attr\"`\n\t\t\t} `xml:\"currencyCoverage\"`\n\t\t\tTimezoneCoverage []*struct {\n\t\t\t\tCommon\n\t\t\t\tValues string `xml:\"values,attr\"`\n\t\t\t} `xml:\"timezoneCoverage\"`\n\t\t} `xml:\"coverageAdditions\"`\n\t\tSkipDefaultLocale *struct {\n\t\t\tCommon\n\t\t\tServices string `xml:\"services,attr\"`\n\t\t} `xml:\"skipDefaultLocale\"`\n\t\tDefaultContent *struct {\n\t\t\tCommon\n\t\t\tLocales string `xml:\"locales,attr\"`\n\t\t} `xml:\"defaultContent\"`\n\t} `xml:\"metadata\"`\n\tCodeMappings *struct {\n\t\tCommon\n\t\tLanguageCodes []*struct {\n\t\t\tCommon\n\t\t\tAlpha3 string `xml:\"alpha3,attr\"`\n\t\t} `xml:\"languageCodes\"`\n\t\tTerritoryCodes []*struct {\n\t\t\tCommon\n\t\t\tNumeric  string `xml:\"numeric,attr\"`\n\t\t\tAlpha3   string `xml:\"alpha3,attr\"`\n\t\t\tFips10   string `xml:\"fips10,attr\"`\n\t\t\tInternet string `xml:\"internet,attr\"`\n\t\t} `xml:\"territoryCodes\"`\n\t\tCurrencyCodes []*struct {\n\t\t\tCommon\n\t\t\tNumeric string `xml:\"numeric,attr\"`\n\t\t} `xml:\"currencyCodes\"`\n\t} `xml:\"codeMappings\"`\n\tParentLocales *struct {\n\t\tCommon\n\t\tParentLocale []*struct {\n\t\t\tCommon\n\t\t\tParent  string `xml:\"parent,attr\"`\n\t\t\tLocales string `xml:\"locales,attr\"`\n\t\t} `xml:\"parentLocale\"`\n\t} `xml:\"parentLocales\"`\n\tLikelySubtags *struct {\n\t\tCommon\n\t\tLikelySubtag []*struct {\n\t\t\tCommon\n\t\t\tFrom string `xml:\"from,attr\"`\n\t\t\tTo   string `xml:\"to,attr\"`\n\t\t} `xml:\"likelySubtag\"`\n\t} `xml:\"likelySubtags\"`\n\tMetazoneInfo *struct {\n\t\tCommon\n\t\tTimezone []*struct {\n\t\t\tCommon\n\t\t\tUsesMetazone []*struct {\n\t\t\t\tCommon\n\t\t\t\tFrom  string `xml:\"from,attr\"`\n\t\t\t\tTo    string `xml:\"to,attr\"`\n\t\t\t\tMzone string `xml:\"mzone,attr\"`\n\t\t\t} `xml:\"usesMetazone\"`\n\t\t} `xml:\"timezone\"`\n\t} `xml:\"metazoneInfo\"`\n\tPlurals []*struct {\n\t\tCommon\n\t\tPluralRules []*struct {\n\t\t\tCommon\n\t\t\tLocales    string `xml:\"locales,attr\"`\n\t\t\tPluralRule []*struct {\n\t\t\t\tCommon\n\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t} `xml:\"pluralRule\"`\n\t\t} `xml:\"pluralRules\"`\n\t\tPluralRanges []*struct {\n\t\t\tCommon\n\t\t\tLocales     string `xml:\"locales,attr\"`\n\t\t\tPluralRange []*struct {\n\t\t\t\tCommon\n\t\t\t\tStart  string `xml:\"start,attr\"`\n\t\t\t\tEnd    string `xml:\"end,attr\"`\n\t\t\t\tResult string `xml:\"result,attr\"`\n\t\t\t} `xml:\"pluralRange\"`\n\t\t} `xml:\"pluralRanges\"`\n\t} `xml:\"plurals\"`\n\tTelephoneCodeData *struct {\n\t\tCommon\n\t\tCodesByTerritory []*struct {\n\t\t\tCommon\n\t\t\tTerritory            string `xml:\"territory,attr\"`\n\t\t\tTelephoneCountryCode []*struct {\n\t\t\t\tCommon\n\t\t\t\tCode string `xml:\"code,attr\"`\n\t\t\t\tFrom string `xml:\"from,attr\"`\n\t\t\t\tTo   string `xml:\"to,attr\"`\n\t\t\t} `xml:\"telephoneCountryCode\"`\n\t\t} `xml:\"codesByTerritory\"`\n\t} `xml:\"telephoneCodeData\"`\n\tNumberingSystems *struct {\n\t\tCommon\n\t\tNumberingSystem []*struct {\n\t\t\tCommon\n\t\t\tId     string `xml:\"id,attr\"`\n\t\t\tRadix  string `xml:\"radix,attr\"`\n\t\t\tDigits string `xml:\"digits,attr\"`\n\t\t\tRules  string `xml:\"rules,attr\"`\n\t\t} `xml:\"numberingSystem\"`\n\t} `xml:\"numberingSystems\"`\n\tBcp47KeywordMappings *struct {\n\t\tCommon\n\t\tMapKeys *struct {\n\t\t\tCommon\n\t\t\tKeyMap []*struct {\n\t\t\t\tCommon\n\t\t\t\tBcp47 string `xml:\"bcp47,attr\"`\n\t\t\t} `xml:\"keyMap\"`\n\t\t} `xml:\"mapKeys\"`\n\t\tMapTypes []*struct {\n\t\t\tCommon\n\t\t\tTypeMap []*struct {\n\t\t\t\tCommon\n\t\t\t\tBcp47 string `xml:\"bcp47,attr\"`\n\t\t\t} `xml:\"typeMap\"`\n\t\t} `xml:\"mapTypes\"`\n\t} `xml:\"bcp47KeywordMappings\"`\n\tGender *struct {\n\t\tCommon\n\t\tPersonList []*struct {\n\t\t\tCommon\n\t\t\tLocales string `xml:\"locales,attr\"`\n\t\t} `xml:\"personList\"`\n\t} `xml:\"gender\"`\n\tReferences *struct {\n\t\tCommon\n\t\tReference []*struct {\n\t\t\tCommon\n\t\t\tUri string `xml:\"uri,attr\"`\n\t\t} `xml:\"reference\"`\n\t} `xml:\"references\"`\n\tLanguageMatching *struct {\n\t\tCommon\n\t\tLanguageMatches []*struct {\n\t\t\tCommon\n\t\t\tParadigmLocales []*struct {\n\t\t\t\tCommon\n\t\t\t\tLocales string `xml:\"locales,attr\"`\n\t\t\t} `xml:\"paradigmLocales\"`\n\t\t\tMatchVariable []*struct {\n\t\t\t\tCommon\n\t\t\t\tId    string `xml:\"id,attr\"`\n\t\t\t\tValue string `xml:\"value,attr\"`\n\t\t\t} `xml:\"matchVariable\"`\n\t\t\tLanguageMatch []*struct {\n\t\t\t\tCommon\n\t\t\t\tDesired   string `xml:\"desired,attr\"`\n\t\t\t\tSupported string `xml:\"supported,attr\"`\n\t\t\t\tPercent   string `xml:\"percent,attr\"`\n\t\t\t\tDistance  string `xml:\"distance,attr\"`\n\t\t\t\tOneway    string `xml:\"oneway,attr\"`\n\t\t\t} `xml:\"languageMatch\"`\n\t\t} `xml:\"languageMatches\"`\n\t} `xml:\"languageMatching\"`\n\tDayPeriodRuleSet []*struct {\n\t\tCommon\n\t\tDayPeriodRules []*struct {\n\t\t\tCommon\n\t\t\tLocales       string `xml:\"locales,attr\"`\n\t\t\tDayPeriodRule []*struct {\n\t\t\t\tCommon\n\t\t\t\tAt     string `xml:\"at,attr\"`\n\t\t\t\tAfter  string `xml:\"after,attr\"`\n\t\t\t\tBefore string `xml:\"before,attr\"`\n\t\t\t\tFrom   string `xml:\"from,attr\"`\n\t\t\t\tTo     string `xml:\"to,attr\"`\n\t\t\t} `xml:\"dayPeriodRule\"`\n\t\t} `xml:\"dayPeriodRules\"`\n\t} `xml:\"dayPeriodRuleSet\"`\n\tMetaZones *struct {\n\t\tCommon\n\t\tMetazoneInfo *struct {\n\t\t\tCommon\n\t\t\tTimezone []*struct {\n\t\t\t\tCommon\n\t\t\t\tUsesMetazone []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tFrom  string `xml:\"from,attr\"`\n\t\t\t\t\tTo    string `xml:\"to,attr\"`\n\t\t\t\t\tMzone string `xml:\"mzone,attr\"`\n\t\t\t\t} `xml:\"usesMetazone\"`\n\t\t\t} `xml:\"timezone\"`\n\t\t} `xml:\"metazoneInfo\"`\n\t\tMapTimezones *struct {\n\t\t\tCommon\n\t\t\tOtherVersion string `xml:\"otherVersion,attr\"`\n\t\t\tTypeVersion  string `xml:\"typeVersion,attr\"`\n\t\t\tMapZone      []*struct {\n\t\t\t\tCommon\n\t\t\t\tOther     string `xml:\"other,attr\"`\n\t\t\t\tTerritory string `xml:\"territory,attr\"`\n\t\t\t} `xml:\"mapZone\"`\n\t\t} `xml:\"mapTimezones\"`\n\t} `xml:\"metaZones\"`\n\tPrimaryZones *struct {\n\t\tCommon\n\t\tPrimaryZone []*struct {\n\t\t\tCommon\n\t\t\tIso3166 string `xml:\"iso3166,attr\"`\n\t\t} `xml:\"primaryZone\"`\n\t} `xml:\"primaryZones\"`\n\tWindowsZones *struct {\n\t\tCommon\n\t\tMapTimezones *struct {\n\t\t\tCommon\n\t\t\tOtherVersion string `xml:\"otherVersion,attr\"`\n\t\t\tTypeVersion  string `xml:\"typeVersion,attr\"`\n\t\t\tMapZone      []*struct {\n\t\t\t\tCommon\n\t\t\t\tOther     string `xml:\"other,attr\"`\n\t\t\t\tTerritory string `xml:\"territory,attr\"`\n\t\t\t} `xml:\"mapZone\"`\n\t\t} `xml:\"mapTimezones\"`\n\t} `xml:\"windowsZones\"`\n\tCoverageLevels *struct {\n\t\tCommon\n\t\tApprovalRequirements *struct {\n\t\t\tCommon\n\t\t\tApprovalRequirement []*struct {\n\t\t\t\tCommon\n\t\t\t\tVotes   string `xml:\"votes,attr\"`\n\t\t\t\tLocales string `xml:\"locales,attr\"`\n\t\t\t\tPaths   string `xml:\"paths,attr\"`\n\t\t\t} `xml:\"approvalRequirement\"`\n\t\t} `xml:\"approvalRequirements\"`\n\t\tCoverageVariable []*struct {\n\t\t\tCommon\n\t\t\tKey   string `xml:\"key,attr\"`\n\t\t\tValue string `xml:\"value,attr\"`\n\t\t} `xml:\"coverageVariable\"`\n\t\tCoverageLevel []*struct {\n\t\t\tCommon\n\t\t\tInLanguage  string `xml:\"inLanguage,attr\"`\n\t\t\tInScript    string `xml:\"inScript,attr\"`\n\t\t\tInTerritory string `xml:\"inTerritory,attr\"`\n\t\t\tValue       string `xml:\"value,attr\"`\n\t\t\tMatch       string `xml:\"match,attr\"`\n\t\t} `xml:\"coverageLevel\"`\n\t} `xml:\"coverageLevels\"`\n\tIdValidity *struct {\n\t\tCommon\n\t\tId []*struct {\n\t\t\tCommon\n\t\t\tIdStatus string `xml:\"idStatus,attr\"`\n\t\t} `xml:\"id\"`\n\t} `xml:\"idValidity\"`\n\tRgScope *struct {\n\t\tCommon\n\t\tRgPath []*struct {\n\t\t\tCommon\n\t\t\tPath string `xml:\"path,attr\"`\n\t\t} `xml:\"rgPath\"`\n\t} `xml:\"rgScope\"`\n\tLanguageGroups *struct {\n\t\tCommon\n\t\tLanguageGroup []*struct {\n\t\t\tCommon\n\t\t\tParent string `xml:\"parent,attr\"`\n\t\t} `xml:\"languageGroup\"`\n\t} `xml:\"languageGroups\"`\n}\n\n// LDML is the top-level type for locale-specific data.\ntype LDML struct {\n\tCommon\n\tVersion  string `xml:\"version,attr\"`\n\tIdentity *struct {\n\t\tCommon\n\t\tVersion *struct {\n\t\t\tCommon\n\t\t\tNumber string `xml:\"number,attr\"`\n\t\t} `xml:\"version\"`\n\t\tGeneration *struct {\n\t\t\tCommon\n\t\t\tDate string `xml:\"date,attr\"`\n\t\t} `xml:\"generation\"`\n\t\tLanguage  *Common `xml:\"language\"`\n\t\tScript    *Common `xml:\"script\"`\n\t\tTerritory *Common `xml:\"territory\"`\n\t\tVariant   *Common `xml:\"variant\"`\n\t} `xml:\"identity\"`\n\tLocaleDisplayNames *LocaleDisplayNames `xml:\"localeDisplayNames\"`\n\tLayout             *struct {\n\t\tCommon\n\t\tOrientation []*struct {\n\t\t\tCommon\n\t\t\tCharacters     string    `xml:\"characters,attr\"`\n\t\t\tLines          string    `xml:\"lines,attr\"`\n\t\t\tCharacterOrder []*Common `xml:\"characterOrder\"`\n\t\t\tLineOrder      []*Common `xml:\"lineOrder\"`\n\t\t} `xml:\"orientation\"`\n\t\tInList []*struct {\n\t\t\tCommon\n\t\t\tCasing string `xml:\"casing,attr\"`\n\t\t} `xml:\"inList\"`\n\t\tInText []*Common `xml:\"inText\"`\n\t} `xml:\"layout\"`\n\tContextTransforms *struct {\n\t\tCommon\n\t\tContextTransformUsage []*struct {\n\t\t\tCommon\n\t\t\tContextTransform []*Common `xml:\"contextTransform\"`\n\t\t} `xml:\"contextTransformUsage\"`\n\t} `xml:\"contextTransforms\"`\n\tCharacters *struct {\n\t\tCommon\n\t\tExemplarCharacters []*Common `xml:\"exemplarCharacters\"`\n\t\tEllipsis           []*Common `xml:\"ellipsis\"`\n\t\tMoreInformation    []*Common `xml:\"moreInformation\"`\n\t\tStopwords          []*struct {\n\t\t\tCommon\n\t\t\tStopwordList []*Common `xml:\"stopwordList\"`\n\t\t} `xml:\"stopwords\"`\n\t\tIndexLabels []*struct {\n\t\t\tCommon\n\t\t\tIndexSeparator           []*Common `xml:\"indexSeparator\"`\n\t\t\tCompressedIndexSeparator []*Common `xml:\"compressedIndexSeparator\"`\n\t\t\tIndexRangePattern        []*Common `xml:\"indexRangePattern\"`\n\t\t\tIndexLabelBefore         []*Common `xml:\"indexLabelBefore\"`\n\t\t\tIndexLabelAfter          []*Common `xml:\"indexLabelAfter\"`\n\t\t\tIndexLabel               []*struct {\n\t\t\t\tCommon\n\t\t\t\tIndexSource string `xml:\"indexSource,attr\"`\n\t\t\t\tPriority    string `xml:\"priority,attr\"`\n\t\t\t} `xml:\"indexLabel\"`\n\t\t} `xml:\"indexLabels\"`\n\t\tMapping []*struct {\n\t\t\tCommon\n\t\t\tRegistry string `xml:\"registry,attr\"`\n\t\t} `xml:\"mapping\"`\n\t\tParseLenients []*struct {\n\t\t\tCommon\n\t\t\tScope        string `xml:\"scope,attr\"`\n\t\t\tLevel        string `xml:\"level,attr\"`\n\t\t\tParseLenient []*struct {\n\t\t\t\tCommon\n\t\t\t\tSample string `xml:\"sample,attr\"`\n\t\t\t} `xml:\"parseLenient\"`\n\t\t} `xml:\"parseLenients\"`\n\t} `xml:\"characters\"`\n\tDelimiters *struct {\n\t\tCommon\n\t\tQuotationStart          []*Common `xml:\"quotationStart\"`\n\t\tQuotationEnd            []*Common `xml:\"quotationEnd\"`\n\t\tAlternateQuotationStart []*Common `xml:\"alternateQuotationStart\"`\n\t\tAlternateQuotationEnd   []*Common `xml:\"alternateQuotationEnd\"`\n\t} `xml:\"delimiters\"`\n\tMeasurement *struct {\n\t\tCommon\n\t\tMeasurementSystem []*Common `xml:\"measurementSystem\"`\n\t\tPaperSize         []*struct {\n\t\t\tCommon\n\t\t\tHeight []*Common `xml:\"height\"`\n\t\t\tWidth  []*Common `xml:\"width\"`\n\t\t} `xml:\"paperSize\"`\n\t} `xml:\"measurement\"`\n\tDates *struct {\n\t\tCommon\n\t\tLocalizedPatternChars []*Common `xml:\"localizedPatternChars\"`\n\t\tDateRangePattern      []*Common `xml:\"dateRangePattern\"`\n\t\tCalendars             *struct {\n\t\t\tCommon\n\t\t\tCalendar []*Calendar `xml:\"calendar\"`\n\t\t} `xml:\"calendars\"`\n\t\tFields *struct {\n\t\t\tCommon\n\t\t\tField []*struct {\n\t\t\t\tCommon\n\t\t\t\tDisplayName []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"displayName\"`\n\t\t\t\tRelative     []*Common `xml:\"relative\"`\n\t\t\t\tRelativeTime []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tRelativeTimePattern []*struct {\n\t\t\t\t\t\tCommon\n\t\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t\t} `xml:\"relativeTimePattern\"`\n\t\t\t\t} `xml:\"relativeTime\"`\n\t\t\t\tRelativePeriod []*Common `xml:\"relativePeriod\"`\n\t\t\t} `xml:\"field\"`\n\t\t} `xml:\"fields\"`\n\t\tTimeZoneNames *TimeZoneNames `xml:\"timeZoneNames\"`\n\t} `xml:\"dates\"`\n\tNumbers *Numbers `xml:\"numbers\"`\n\tUnits   *struct {\n\t\tCommon\n\t\tUnit []*struct {\n\t\t\tCommon\n\t\t\tDisplayName []*struct {\n\t\t\t\tCommon\n\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t} `xml:\"displayName\"`\n\t\t\tUnitPattern []*struct {\n\t\t\t\tCommon\n\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t} `xml:\"unitPattern\"`\n\t\t\tPerUnitPattern []*Common `xml:\"perUnitPattern\"`\n\t\t} `xml:\"unit\"`\n\t\tUnitLength []*struct {\n\t\t\tCommon\n\t\t\tCompoundUnit []*struct {\n\t\t\t\tCommon\n\t\t\t\tCompoundUnitPattern []*Common `xml:\"compoundUnitPattern\"`\n\t\t\t} `xml:\"compoundUnit\"`\n\t\t\tUnit []*struct {\n\t\t\t\tCommon\n\t\t\t\tDisplayName []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"displayName\"`\n\t\t\t\tUnitPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"unitPattern\"`\n\t\t\t\tPerUnitPattern []*Common `xml:\"perUnitPattern\"`\n\t\t\t} `xml:\"unit\"`\n\t\t\tCoordinateUnit []*struct {\n\t\t\t\tCommon\n\t\t\t\tCoordinateUnitPattern []*Common `xml:\"coordinateUnitPattern\"`\n\t\t\t} `xml:\"coordinateUnit\"`\n\t\t} `xml:\"unitLength\"`\n\t\tDurationUnit []*struct {\n\t\t\tCommon\n\t\t\tDurationUnitPattern []*Common `xml:\"durationUnitPattern\"`\n\t\t} `xml:\"durationUnit\"`\n\t} `xml:\"units\"`\n\tListPatterns *struct {\n\t\tCommon\n\t\tListPattern []*struct {\n\t\t\tCommon\n\t\t\tListPatternPart []*Common `xml:\"listPatternPart\"`\n\t\t} `xml:\"listPattern\"`\n\t} `xml:\"listPatterns\"`\n\tCollations *struct {\n\t\tCommon\n\t\tVersion          string       `xml:\"version,attr\"`\n\t\tDefaultCollation *Common      `xml:\"defaultCollation\"`\n\t\tCollation        []*Collation `xml:\"collation\"`\n\t} `xml:\"collations\"`\n\tPosix *struct {\n\t\tCommon\n\t\tMessages []*struct {\n\t\t\tCommon\n\t\t\tYesstr  []*Common `xml:\"yesstr\"`\n\t\t\tNostr   []*Common `xml:\"nostr\"`\n\t\t\tYesexpr []*Common `xml:\"yesexpr\"`\n\t\t\tNoexpr  []*Common `xml:\"noexpr\"`\n\t\t} `xml:\"messages\"`\n\t} `xml:\"posix\"`\n\tCharacterLabels *struct {\n\t\tCommon\n\t\tCharacterLabelPattern []*struct {\n\t\t\tCommon\n\t\t\tCount string `xml:\"count,attr\"`\n\t\t} `xml:\"characterLabelPattern\"`\n\t\tCharacterLabel []*Common `xml:\"characterLabel\"`\n\t} `xml:\"characterLabels\"`\n\tSegmentations *struct {\n\t\tCommon\n\t\tSegmentation []*struct {\n\t\t\tCommon\n\t\t\tVariables *struct {\n\t\t\t\tCommon\n\t\t\t\tVariable []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tId string `xml:\"id,attr\"`\n\t\t\t\t} `xml:\"variable\"`\n\t\t\t} `xml:\"variables\"`\n\t\t\tSegmentRules *struct {\n\t\t\t\tCommon\n\t\t\t\tRule []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tId string `xml:\"id,attr\"`\n\t\t\t\t} `xml:\"rule\"`\n\t\t\t} `xml:\"segmentRules\"`\n\t\t\tExceptions *struct {\n\t\t\t\tCommon\n\t\t\t\tException []*Common `xml:\"exception\"`\n\t\t\t} `xml:\"exceptions\"`\n\t\t\tSuppressions *struct {\n\t\t\t\tCommon\n\t\t\t\tSuppression []*Common `xml:\"suppression\"`\n\t\t\t} `xml:\"suppressions\"`\n\t\t} `xml:\"segmentation\"`\n\t} `xml:\"segmentations\"`\n\tRbnf *struct {\n\t\tCommon\n\t\tRulesetGrouping []*struct {\n\t\t\tCommon\n\t\t\tRuleset []*struct {\n\t\t\t\tCommon\n\t\t\t\tAccess        string `xml:\"access,attr\"`\n\t\t\t\tAllowsParsing string `xml:\"allowsParsing,attr\"`\n\t\t\t\tRbnfrule      []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tValue  string `xml:\"value,attr\"`\n\t\t\t\t\tRadix  string `xml:\"radix,attr\"`\n\t\t\t\t\tDecexp string `xml:\"decexp,attr\"`\n\t\t\t\t} `xml:\"rbnfrule\"`\n\t\t\t} `xml:\"ruleset\"`\n\t\t} `xml:\"rulesetGrouping\"`\n\t} `xml:\"rbnf\"`\n\tAnnotations *struct {\n\t\tCommon\n\t\tAnnotation []*struct {\n\t\t\tCommon\n\t\t\tCp  string `xml:\"cp,attr\"`\n\t\t\tTts string `xml:\"tts,attr\"`\n\t\t} `xml:\"annotation\"`\n\t} `xml:\"annotations\"`\n\tMetadata *struct {\n\t\tCommon\n\t\tCasingData *struct {\n\t\t\tCommon\n\t\t\tCasingItem []*struct {\n\t\t\t\tCommon\n\t\t\t\tOverride   string `xml:\"override,attr\"`\n\t\t\t\tForceError string `xml:\"forceError,attr\"`\n\t\t\t} `xml:\"casingItem\"`\n\t\t} `xml:\"casingData\"`\n\t} `xml:\"metadata\"`\n\tReferences *struct {\n\t\tCommon\n\t\tReference []*struct {\n\t\t\tCommon\n\t\t\tUri string `xml:\"uri,attr\"`\n\t\t} `xml:\"reference\"`\n\t} `xml:\"references\"`\n}\n\n// Collation contains rules that specify a certain sort-order,\n// as a tailoring of the root order.\n// The parsed rules are obtained by passing a RuleProcessor to Collation's\n// Process method.\ntype Collation struct {\n\tCommon\n\tVisibility string  `xml:\"visibility,attr\"`\n\tBase       *Common `xml:\"base\"`\n\tImport     []*struct {\n\t\tCommon\n\t\tSource string `xml:\"source,attr\"`\n\t} `xml:\"import\"`\n\tSettings *struct {\n\t\tCommon\n\t\tStrength           string `xml:\"strength,attr\"`\n\t\tAlternate          string `xml:\"alternate,attr\"`\n\t\tBackwards          string `xml:\"backwards,attr\"`\n\t\tNormalization      string `xml:\"normalization,attr\"`\n\t\tCaseLevel          string `xml:\"caseLevel,attr\"`\n\t\tCaseFirst          string `xml:\"caseFirst,attr\"`\n\t\tHiraganaQuaternary string `xml:\"hiraganaQuaternary,attr\"`\n\t\tMaxVariable        string `xml:\"maxVariable,attr\"`\n\t\tNumeric            string `xml:\"numeric,attr\"`\n\t\tPrivate            string `xml:\"private,attr\"`\n\t\tVariableTop        string `xml:\"variableTop,attr\"`\n\t\tReorder            string `xml:\"reorder,attr\"`\n\t} `xml:\"settings\"`\n\tSuppressContractions *Common   `xml:\"suppress_contractions\"`\n\tOptimize             *Common   `xml:\"optimize\"`\n\tCr                   []*Common `xml:\"cr\"`\n\trulesElem\n}\n\n// Calendar specifies the fields used for formatting and parsing dates and times.\n// The month and quarter names are identified numerically, starting at 1.\n// The day (of the week) names are identified with short strings, since there is\n// no universally-accepted numeric designation.\ntype Calendar struct {\n\tCommon\n\tMonths *struct {\n\t\tCommon\n\t\tMonthContext []*struct {\n\t\t\tCommon\n\t\t\tMonthWidth []*struct {\n\t\t\t\tCommon\n\t\t\t\tMonth []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tYeartype string `xml:\"yeartype,attr\"`\n\t\t\t\t} `xml:\"month\"`\n\t\t\t} `xml:\"monthWidth\"`\n\t\t} `xml:\"monthContext\"`\n\t} `xml:\"months\"`\n\tMonthNames *struct {\n\t\tCommon\n\t\tMonth []*struct {\n\t\t\tCommon\n\t\t\tYeartype string `xml:\"yeartype,attr\"`\n\t\t} `xml:\"month\"`\n\t} `xml:\"monthNames\"`\n\tMonthAbbr *struct {\n\t\tCommon\n\t\tMonth []*struct {\n\t\t\tCommon\n\t\t\tYeartype string `xml:\"yeartype,attr\"`\n\t\t} `xml:\"month\"`\n\t} `xml:\"monthAbbr\"`\n\tMonthPatterns *struct {\n\t\tCommon\n\t\tMonthPatternContext []*struct {\n\t\t\tCommon\n\t\t\tMonthPatternWidth []*struct {\n\t\t\t\tCommon\n\t\t\t\tMonthPattern []*Common `xml:\"monthPattern\"`\n\t\t\t} `xml:\"monthPatternWidth\"`\n\t\t} `xml:\"monthPatternContext\"`\n\t} `xml:\"monthPatterns\"`\n\tDays *struct {\n\t\tCommon\n\t\tDayContext []*struct {\n\t\t\tCommon\n\t\t\tDayWidth []*struct {\n\t\t\t\tCommon\n\t\t\t\tDay []*Common `xml:\"day\"`\n\t\t\t} `xml:\"dayWidth\"`\n\t\t} `xml:\"dayContext\"`\n\t} `xml:\"days\"`\n\tDayNames *struct {\n\t\tCommon\n\t\tDay []*Common `xml:\"day\"`\n\t} `xml:\"dayNames\"`\n\tDayAbbr *struct {\n\t\tCommon\n\t\tDay []*Common `xml:\"day\"`\n\t} `xml:\"dayAbbr\"`\n\tQuarters *struct {\n\t\tCommon\n\t\tQuarterContext []*struct {\n\t\t\tCommon\n\t\t\tQuarterWidth []*struct {\n\t\t\t\tCommon\n\t\t\t\tQuarter []*Common `xml:\"quarter\"`\n\t\t\t} `xml:\"quarterWidth\"`\n\t\t} `xml:\"quarterContext\"`\n\t} `xml:\"quarters\"`\n\tWeek *struct {\n\t\tCommon\n\t\tMinDays []*struct {\n\t\t\tCommon\n\t\t\tCount string `xml:\"count,attr\"`\n\t\t} `xml:\"minDays\"`\n\t\tFirstDay []*struct {\n\t\t\tCommon\n\t\t\tDay string `xml:\"day,attr\"`\n\t\t} `xml:\"firstDay\"`\n\t\tWeekendStart []*struct {\n\t\t\tCommon\n\t\t\tDay  string `xml:\"day,attr\"`\n\t\t\tTime string `xml:\"time,attr\"`\n\t\t} `xml:\"weekendStart\"`\n\t\tWeekendEnd []*struct {\n\t\t\tCommon\n\t\t\tDay  string `xml:\"day,attr\"`\n\t\t\tTime string `xml:\"time,attr\"`\n\t\t} `xml:\"weekendEnd\"`\n\t} `xml:\"week\"`\n\tAm         []*Common `xml:\"am\"`\n\tPm         []*Common `xml:\"pm\"`\n\tDayPeriods *struct {\n\t\tCommon\n\t\tDayPeriodContext []*struct {\n\t\t\tCommon\n\t\t\tDayPeriodWidth []*struct {\n\t\t\t\tCommon\n\t\t\t\tDayPeriod []*Common `xml:\"dayPeriod\"`\n\t\t\t} `xml:\"dayPeriodWidth\"`\n\t\t} `xml:\"dayPeriodContext\"`\n\t} `xml:\"dayPeriods\"`\n\tEras *struct {\n\t\tCommon\n\t\tEraNames *struct {\n\t\t\tCommon\n\t\t\tEra []*Common `xml:\"era\"`\n\t\t} `xml:\"eraNames\"`\n\t\tEraAbbr *struct {\n\t\t\tCommon\n\t\t\tEra []*Common `xml:\"era\"`\n\t\t} `xml:\"eraAbbr\"`\n\t\tEraNarrow *struct {\n\t\t\tCommon\n\t\t\tEra []*Common `xml:\"era\"`\n\t\t} `xml:\"eraNarrow\"`\n\t} `xml:\"eras\"`\n\tCyclicNameSets *struct {\n\t\tCommon\n\t\tCyclicNameSet []*struct {\n\t\t\tCommon\n\t\t\tCyclicNameContext []*struct {\n\t\t\t\tCommon\n\t\t\t\tCyclicNameWidth []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCyclicName []*Common `xml:\"cyclicName\"`\n\t\t\t\t} `xml:\"cyclicNameWidth\"`\n\t\t\t} `xml:\"cyclicNameContext\"`\n\t\t} `xml:\"cyclicNameSet\"`\n\t} `xml:\"cyclicNameSets\"`\n\tDateFormats *struct {\n\t\tCommon\n\t\tDateFormatLength []*struct {\n\t\t\tCommon\n\t\t\tDateFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t\tDisplayName []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"displayName\"`\n\t\t\t} `xml:\"dateFormat\"`\n\t\t} `xml:\"dateFormatLength\"`\n\t} `xml:\"dateFormats\"`\n\tTimeFormats *struct {\n\t\tCommon\n\t\tTimeFormatLength []*struct {\n\t\t\tCommon\n\t\t\tTimeFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t\tDisplayName []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"displayName\"`\n\t\t\t} `xml:\"timeFormat\"`\n\t\t} `xml:\"timeFormatLength\"`\n\t} `xml:\"timeFormats\"`\n\tDateTimeFormats *struct {\n\t\tCommon\n\t\tDateTimeFormatLength []*struct {\n\t\t\tCommon\n\t\t\tDateTimeFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t\tDisplayName []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"displayName\"`\n\t\t\t} `xml:\"dateTimeFormat\"`\n\t\t} `xml:\"dateTimeFormatLength\"`\n\t\tAvailableFormats []*struct {\n\t\t\tCommon\n\t\t\tDateFormatItem []*struct {\n\t\t\t\tCommon\n\t\t\t\tId    string `xml:\"id,attr\"`\n\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t} `xml:\"dateFormatItem\"`\n\t\t} `xml:\"availableFormats\"`\n\t\tAppendItems []*struct {\n\t\t\tCommon\n\t\t\tAppendItem []*struct {\n\t\t\t\tCommon\n\t\t\t\tRequest string `xml:\"request,attr\"`\n\t\t\t} `xml:\"appendItem\"`\n\t\t} `xml:\"appendItems\"`\n\t\tIntervalFormats []*struct {\n\t\t\tCommon\n\t\t\tIntervalFormatFallback []*Common `xml:\"intervalFormatFallback\"`\n\t\t\tIntervalFormatItem     []*struct {\n\t\t\t\tCommon\n\t\t\t\tId                 string `xml:\"id,attr\"`\n\t\t\t\tGreatestDifference []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tId string `xml:\"id,attr\"`\n\t\t\t\t} `xml:\"greatestDifference\"`\n\t\t\t} `xml:\"intervalFormatItem\"`\n\t\t} `xml:\"intervalFormats\"`\n\t} `xml:\"dateTimeFormats\"`\n\tFields []*struct {\n\t\tCommon\n\t\tField []*struct {\n\t\t\tCommon\n\t\t\tDisplayName []*struct {\n\t\t\t\tCommon\n\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t} `xml:\"displayName\"`\n\t\t\tRelative     []*Common `xml:\"relative\"`\n\t\t\tRelativeTime []*struct {\n\t\t\t\tCommon\n\t\t\t\tRelativeTimePattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"relativeTimePattern\"`\n\t\t\t} `xml:\"relativeTime\"`\n\t\t\tRelativePeriod []*Common `xml:\"relativePeriod\"`\n\t\t} `xml:\"field\"`\n\t} `xml:\"fields\"`\n}\ntype TimeZoneNames struct {\n\tCommon\n\tHourFormat           []*Common `xml:\"hourFormat\"`\n\tHoursFormat          []*Common `xml:\"hoursFormat\"`\n\tGmtFormat            []*Common `xml:\"gmtFormat\"`\n\tGmtZeroFormat        []*Common `xml:\"gmtZeroFormat\"`\n\tRegionFormat         []*Common `xml:\"regionFormat\"`\n\tFallbackFormat       []*Common `xml:\"fallbackFormat\"`\n\tFallbackRegionFormat []*Common `xml:\"fallbackRegionFormat\"`\n\tAbbreviationFallback []*Common `xml:\"abbreviationFallback\"`\n\tPreferenceOrdering   []*Common `xml:\"preferenceOrdering\"`\n\tSingleCountries      []*struct {\n\t\tCommon\n\t\tList string `xml:\"list,attr\"`\n\t} `xml:\"singleCountries\"`\n\tZone []*struct {\n\t\tCommon\n\t\tLong []*struct {\n\t\t\tCommon\n\t\t\tGeneric  []*Common `xml:\"generic\"`\n\t\t\tStandard []*Common `xml:\"standard\"`\n\t\t\tDaylight []*Common `xml:\"daylight\"`\n\t\t} `xml:\"long\"`\n\t\tShort []*struct {\n\t\t\tCommon\n\t\t\tGeneric  []*Common `xml:\"generic\"`\n\t\t\tStandard []*Common `xml:\"standard\"`\n\t\t\tDaylight []*Common `xml:\"daylight\"`\n\t\t} `xml:\"short\"`\n\t\tCommonlyUsed []*struct {\n\t\t\tCommon\n\t\t\tUsed string `xml:\"used,attr\"`\n\t\t} `xml:\"commonlyUsed\"`\n\t\tExemplarCity []*Common `xml:\"exemplarCity\"`\n\t} `xml:\"zone\"`\n\tMetazone []*struct {\n\t\tCommon\n\t\tLong []*struct {\n\t\t\tCommon\n\t\t\tGeneric  []*Common `xml:\"generic\"`\n\t\t\tStandard []*Common `xml:\"standard\"`\n\t\t\tDaylight []*Common `xml:\"daylight\"`\n\t\t} `xml:\"long\"`\n\t\tShort []*struct {\n\t\t\tCommon\n\t\t\tGeneric  []*Common `xml:\"generic\"`\n\t\t\tStandard []*Common `xml:\"standard\"`\n\t\t\tDaylight []*Common `xml:\"daylight\"`\n\t\t} `xml:\"short\"`\n\t\tCommonlyUsed []*struct {\n\t\t\tCommon\n\t\t\tUsed string `xml:\"used,attr\"`\n\t\t} `xml:\"commonlyUsed\"`\n\t} `xml:\"metazone\"`\n}\n\n// LocaleDisplayNames specifies localized display names for for scripts, languages,\n// countries, currencies, and variants.\ntype LocaleDisplayNames struct {\n\tCommon\n\tLocaleDisplayPattern *struct {\n\t\tCommon\n\t\tLocalePattern        []*Common `xml:\"localePattern\"`\n\t\tLocaleSeparator      []*Common `xml:\"localeSeparator\"`\n\t\tLocaleKeyTypePattern []*Common `xml:\"localeKeyTypePattern\"`\n\t} `xml:\"localeDisplayPattern\"`\n\tLanguages *struct {\n\t\tCommon\n\t\tLanguage []*Common `xml:\"language\"`\n\t} `xml:\"languages\"`\n\tScripts *struct {\n\t\tCommon\n\t\tScript []*Common `xml:\"script\"`\n\t} `xml:\"scripts\"`\n\tTerritories *struct {\n\t\tCommon\n\t\tTerritory []*Common `xml:\"territory\"`\n\t} `xml:\"territories\"`\n\tSubdivisions *struct {\n\t\tCommon\n\t\tSubdivision []*Common `xml:\"subdivision\"`\n\t} `xml:\"subdivisions\"`\n\tVariants *struct {\n\t\tCommon\n\t\tVariant []*Common `xml:\"variant\"`\n\t} `xml:\"variants\"`\n\tKeys *struct {\n\t\tCommon\n\t\tKey []*Common `xml:\"key\"`\n\t} `xml:\"keys\"`\n\tTypes *struct {\n\t\tCommon\n\t\tType []*struct {\n\t\t\tCommon\n\t\t\tKey string `xml:\"key,attr\"`\n\t\t} `xml:\"type\"`\n\t} `xml:\"types\"`\n\tTransformNames *struct {\n\t\tCommon\n\t\tTransformName []*Common `xml:\"transformName\"`\n\t} `xml:\"transformNames\"`\n\tMeasurementSystemNames *struct {\n\t\tCommon\n\t\tMeasurementSystemName []*Common `xml:\"measurementSystemName\"`\n\t} `xml:\"measurementSystemNames\"`\n\tCodePatterns *struct {\n\t\tCommon\n\t\tCodePattern []*Common `xml:\"codePattern\"`\n\t} `xml:\"codePatterns\"`\n}\n\n// Numbers supplies information for formatting and parsing numbers and currencies.\ntype Numbers struct {\n\tCommon\n\tDefaultNumberingSystem []*Common `xml:\"defaultNumberingSystem\"`\n\tOtherNumberingSystems  []*struct {\n\t\tCommon\n\t\tNative      []*Common `xml:\"native\"`\n\t\tTraditional []*Common `xml:\"traditional\"`\n\t\tFinance     []*Common `xml:\"finance\"`\n\t} `xml:\"otherNumberingSystems\"`\n\tMinimumGroupingDigits []*Common `xml:\"minimumGroupingDigits\"`\n\tSymbols               []*struct {\n\t\tCommon\n\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\tDecimal      []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"decimal\"`\n\t\tGroup []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"group\"`\n\t\tList []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"list\"`\n\t\tPercentSign []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"percentSign\"`\n\t\tNativeZeroDigit []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"nativeZeroDigit\"`\n\t\tPatternDigit []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"patternDigit\"`\n\t\tPlusSign []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"plusSign\"`\n\t\tMinusSign []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"minusSign\"`\n\t\tExponential []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"exponential\"`\n\t\tSuperscriptingExponent []*Common `xml:\"superscriptingExponent\"`\n\t\tPerMille               []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"perMille\"`\n\t\tInfinity []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"infinity\"`\n\t\tNan []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"nan\"`\n\t\tCurrencyDecimal []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"currencyDecimal\"`\n\t\tCurrencyGroup []*struct {\n\t\t\tCommon\n\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t} `xml:\"currencyGroup\"`\n\t\tTimeSeparator []*Common `xml:\"timeSeparator\"`\n\t} `xml:\"symbols\"`\n\tDecimalFormats []*struct {\n\t\tCommon\n\t\tNumberSystem        string `xml:\"numberSystem,attr\"`\n\t\tDecimalFormatLength []*struct {\n\t\t\tCommon\n\t\t\tDecimalFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t} `xml:\"decimalFormat\"`\n\t\t} `xml:\"decimalFormatLength\"`\n\t} `xml:\"decimalFormats\"`\n\tScientificFormats []*struct {\n\t\tCommon\n\t\tNumberSystem           string `xml:\"numberSystem,attr\"`\n\t\tScientificFormatLength []*struct {\n\t\t\tCommon\n\t\t\tScientificFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t} `xml:\"scientificFormat\"`\n\t\t} `xml:\"scientificFormatLength\"`\n\t} `xml:\"scientificFormats\"`\n\tPercentFormats []*struct {\n\t\tCommon\n\t\tNumberSystem        string `xml:\"numberSystem,attr\"`\n\t\tPercentFormatLength []*struct {\n\t\t\tCommon\n\t\t\tPercentFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t} `xml:\"percentFormat\"`\n\t\t} `xml:\"percentFormatLength\"`\n\t} `xml:\"percentFormats\"`\n\tCurrencyFormats []*struct {\n\t\tCommon\n\t\tNumberSystem    string `xml:\"numberSystem,attr\"`\n\t\tCurrencySpacing []*struct {\n\t\t\tCommon\n\t\t\tBeforeCurrency []*struct {\n\t\t\t\tCommon\n\t\t\t\tCurrencyMatch    []*Common `xml:\"currencyMatch\"`\n\t\t\t\tSurroundingMatch []*Common `xml:\"surroundingMatch\"`\n\t\t\t\tInsertBetween    []*Common `xml:\"insertBetween\"`\n\t\t\t} `xml:\"beforeCurrency\"`\n\t\t\tAfterCurrency []*struct {\n\t\t\t\tCommon\n\t\t\t\tCurrencyMatch    []*Common `xml:\"currencyMatch\"`\n\t\t\t\tSurroundingMatch []*Common `xml:\"surroundingMatch\"`\n\t\t\t\tInsertBetween    []*Common `xml:\"insertBetween\"`\n\t\t\t} `xml:\"afterCurrency\"`\n\t\t} `xml:\"currencySpacing\"`\n\t\tCurrencyFormatLength []*struct {\n\t\t\tCommon\n\t\t\tCurrencyFormat []*struct {\n\t\t\t\tCommon\n\t\t\t\tPattern []*struct {\n\t\t\t\t\tCommon\n\t\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t\t} `xml:\"pattern\"`\n\t\t\t} `xml:\"currencyFormat\"`\n\t\t} `xml:\"currencyFormatLength\"`\n\t\tUnitPattern []*struct {\n\t\t\tCommon\n\t\t\tCount string `xml:\"count,attr\"`\n\t\t} `xml:\"unitPattern\"`\n\t} `xml:\"currencyFormats\"`\n\tCurrencies *struct {\n\t\tCommon\n\t\tCurrency []*struct {\n\t\t\tCommon\n\t\t\tPattern []*struct {\n\t\t\t\tCommon\n\t\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\t\tCount   string `xml:\"count,attr\"`\n\t\t\t} `xml:\"pattern\"`\n\t\t\tDisplayName []*struct {\n\t\t\t\tCommon\n\t\t\t\tCount string `xml:\"count,attr\"`\n\t\t\t} `xml:\"displayName\"`\n\t\t\tSymbol  []*Common `xml:\"symbol\"`\n\t\t\tDecimal []*struct {\n\t\t\t\tCommon\n\t\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t\t} `xml:\"decimal\"`\n\t\t\tGroup []*struct {\n\t\t\t\tCommon\n\t\t\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\t\t} `xml:\"group\"`\n\t\t} `xml:\"currency\"`\n\t} `xml:\"currencies\"`\n\tMiscPatterns []*struct {\n\t\tCommon\n\t\tNumberSystem string `xml:\"numberSystem,attr\"`\n\t\tPattern      []*struct {\n\t\t\tCommon\n\t\t\tNumbers string `xml:\"numbers,attr\"`\n\t\t\tCount   string `xml:\"count,attr\"`\n\t\t} `xml:\"pattern\"`\n\t} `xml:\"miscPatterns\"`\n\tMinimalPairs []*struct {\n\t\tCommon\n\t\tPluralMinimalPairs []*struct {\n\t\t\tCommon\n\t\t\tCount string `xml:\"count,attr\"`\n\t\t} `xml:\"pluralMinimalPairs\"`\n\t\tOrdinalMinimalPairs []*struct {\n\t\t\tCommon\n\t\t\tOrdinal string `xml:\"ordinal,attr\"`\n\t\t} `xml:\"ordinalMinimalPairs\"`\n\t} `xml:\"minimalPairs\"`\n}\n\n// Version is the version of CLDR from which the XML definitions are generated.\nconst Version = \"32\"\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/composition.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"unicode/utf8\"\n\nconst (\n\tmaxNonStarters = 30\n\t// The maximum number of characters needed for a buffer is\n\t// maxNonStarters + 1 for the starter + 1 for the GCJ\n\tmaxBufferSize    = maxNonStarters + 2\n\tmaxNFCExpansion  = 3  // NFC(0x1D160)\n\tmaxNFKCExpansion = 18 // NFKC(0xFDFA)\n\n\tmaxByteBufferSize = utf8.UTFMax * maxBufferSize // 128\n)\n\n// ssState is used for reporting the segment state after inserting a rune.\n// It is returned by streamSafe.next.\ntype ssState int\n\nconst (\n\t// Indicates a rune was successfully added to the segment.\n\tssSuccess ssState = iota\n\t// Indicates a rune starts a new segment and should not be added.\n\tssStarter\n\t// Indicates a rune caused a segment overflow and a CGJ should be inserted.\n\tssOverflow\n)\n\n// streamSafe implements the policy of when a CGJ should be inserted.\ntype streamSafe uint8\n\n// first inserts the first rune of a segment. It is a faster version of next if\n// it is known p represents the first rune in a segment.\nfunc (ss *streamSafe) first(p Properties) {\n\t*ss = streamSafe(p.nTrailingNonStarters())\n}\n\n// insert returns a ssState value to indicate whether a rune represented by p\n// can be inserted.\nfunc (ss *streamSafe) next(p Properties) ssState {\n\tif *ss > maxNonStarters {\n\t\tpanic(\"streamSafe was not reset\")\n\t}\n\tn := p.nLeadingNonStarters()\n\tif *ss += streamSafe(n); *ss > maxNonStarters {\n\t\t*ss = 0\n\t\treturn ssOverflow\n\t}\n\t// The Stream-Safe Text Processing prescribes that the counting can stop\n\t// as soon as a starter is encountered. However, there are some starters,\n\t// like Jamo V and T, that can combine with other runes, leaving their\n\t// successive non-starters appended to the previous, possibly causing an\n\t// overflow. We will therefore consider any rune with a non-zero nLead to\n\t// be a non-starter. Note that it always hold that if nLead > 0 then\n\t// nLead == nTrail.\n\tif n == 0 {\n\t\t*ss = streamSafe(p.nTrailingNonStarters())\n\t\treturn ssStarter\n\t}\n\treturn ssSuccess\n}\n\n// backwards is used for checking for overflow and segment starts\n// when traversing a string backwards. Users do not need to call first\n// for the first rune. The state of the streamSafe retains the count of\n// the non-starters loaded.\nfunc (ss *streamSafe) backwards(p Properties) ssState {\n\tif *ss > maxNonStarters {\n\t\tpanic(\"streamSafe was not reset\")\n\t}\n\tc := *ss + streamSafe(p.nTrailingNonStarters())\n\tif c > maxNonStarters {\n\t\treturn ssOverflow\n\t}\n\t*ss = c\n\tif p.nLeadingNonStarters() == 0 {\n\t\treturn ssStarter\n\t}\n\treturn ssSuccess\n}\n\nfunc (ss streamSafe) isMax() bool {\n\treturn ss == maxNonStarters\n}\n\n// GraphemeJoiner is inserted after maxNonStarters non-starter runes.\nconst GraphemeJoiner = \"\\u034F\"\n\n// reorderBuffer is used to normalize a single segment.  Characters inserted with\n// insert are decomposed and reordered based on CCC. The compose method can\n// be used to recombine characters.  Note that the byte buffer does not hold\n// the UTF-8 characters in order.  Only the rune array is maintained in sorted\n// order. flush writes the resulting segment to a byte array.\ntype reorderBuffer struct {\n\trune  [maxBufferSize]Properties // Per character info.\n\tbyte  [maxByteBufferSize]byte   // UTF-8 buffer. Referenced by runeInfo.pos.\n\tnbyte uint8                     // Number or bytes.\n\tss    streamSafe                // For limiting length of non-starter sequence.\n\tnrune int                       // Number of runeInfos.\n\tf     formInfo\n\n\tsrc      input\n\tnsrc     int\n\ttmpBytes input\n\n\tout    []byte\n\tflushF func(*reorderBuffer) bool\n}\n\nfunc (rb *reorderBuffer) init(f Form, src []byte) {\n\trb.f = *formTable[f]\n\trb.src.setBytes(src)\n\trb.nsrc = len(src)\n\trb.ss = 0\n}\n\nfunc (rb *reorderBuffer) initString(f Form, src string) {\n\trb.f = *formTable[f]\n\trb.src.setString(src)\n\trb.nsrc = len(src)\n\trb.ss = 0\n}\n\nfunc (rb *reorderBuffer) setFlusher(out []byte, f func(*reorderBuffer) bool) {\n\trb.out = out\n\trb.flushF = f\n}\n\n// reset discards all characters from the buffer.\nfunc (rb *reorderBuffer) reset() {\n\trb.nrune = 0\n\trb.nbyte = 0\n}\n\nfunc (rb *reorderBuffer) doFlush() bool {\n\tif rb.f.composing {\n\t\trb.compose()\n\t}\n\tres := rb.flushF(rb)\n\trb.reset()\n\treturn res\n}\n\n// appendFlush appends the normalized segment to rb.out.\nfunc appendFlush(rb *reorderBuffer) bool {\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tstart := rb.rune[i].pos\n\t\tend := start + rb.rune[i].size\n\t\trb.out = append(rb.out, rb.byte[start:end]...)\n\t}\n\treturn true\n}\n\n// flush appends the normalized segment to out and resets rb.\nfunc (rb *reorderBuffer) flush(out []byte) []byte {\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tstart := rb.rune[i].pos\n\t\tend := start + rb.rune[i].size\n\t\tout = append(out, rb.byte[start:end]...)\n\t}\n\trb.reset()\n\treturn out\n}\n\n// flushCopy copies the normalized segment to buf and resets rb.\n// It returns the number of bytes written to buf.\nfunc (rb *reorderBuffer) flushCopy(buf []byte) int {\n\tp := 0\n\tfor i := 0; i < rb.nrune; i++ {\n\t\trunep := rb.rune[i]\n\t\tp += copy(buf[p:], rb.byte[runep.pos:runep.pos+runep.size])\n\t}\n\trb.reset()\n\treturn p\n}\n\n// insertOrdered inserts a rune in the buffer, ordered by Canonical Combining Class.\n// It returns false if the buffer is not large enough to hold the rune.\n// It is used internally by insert and insertString only.\nfunc (rb *reorderBuffer) insertOrdered(info Properties) {\n\tn := rb.nrune\n\tb := rb.rune[:]\n\tcc := info.ccc\n\tif cc > 0 {\n\t\t// Find insertion position + move elements to make room.\n\t\tfor ; n > 0; n-- {\n\t\t\tif b[n-1].ccc <= cc {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb[n] = b[n-1]\n\t\t}\n\t}\n\trb.nrune += 1\n\tpos := uint8(rb.nbyte)\n\trb.nbyte += utf8.UTFMax\n\tinfo.pos = pos\n\tb[n] = info\n}\n\n// insertErr is an error code returned by insert. Using this type instead\n// of error improves performance up to 20% for many of the benchmarks.\ntype insertErr int\n\nconst (\n\tiSuccess insertErr = -iota\n\tiShortDst\n\tiShortSrc\n)\n\n// insertFlush inserts the given rune in the buffer ordered by CCC.\n// If a decomposition with multiple segments are encountered, they leading\n// ones are flushed.\n// It returns a non-zero error code if the rune was not inserted.\nfunc (rb *reorderBuffer) insertFlush(src input, i int, info Properties) insertErr {\n\tif rune := src.hangul(i); rune != 0 {\n\t\trb.decomposeHangul(rune)\n\t\treturn iSuccess\n\t}\n\tif info.hasDecomposition() {\n\t\treturn rb.insertDecomposed(info.Decomposition())\n\t}\n\trb.insertSingle(src, i, info)\n\treturn iSuccess\n}\n\n// insertUnsafe inserts the given rune in the buffer ordered by CCC.\n// It is assumed there is sufficient space to hold the runes. It is the\n// responsibility of the caller to ensure this. This can be done by checking\n// the state returned by the streamSafe type.\nfunc (rb *reorderBuffer) insertUnsafe(src input, i int, info Properties) {\n\tif rune := src.hangul(i); rune != 0 {\n\t\trb.decomposeHangul(rune)\n\t}\n\tif info.hasDecomposition() {\n\t\t// TODO: inline.\n\t\trb.insertDecomposed(info.Decomposition())\n\t} else {\n\t\trb.insertSingle(src, i, info)\n\t}\n}\n\n// insertDecomposed inserts an entry in to the reorderBuffer for each rune\n// in dcomp. dcomp must be a sequence of decomposed UTF-8-encoded runes.\n// It flushes the buffer on each new segment start.\nfunc (rb *reorderBuffer) insertDecomposed(dcomp []byte) insertErr {\n\trb.tmpBytes.setBytes(dcomp)\n\t// As the streamSafe accounting already handles the counting for modifiers,\n\t// we don't have to call next. However, we do need to keep the accounting\n\t// intact when flushing the buffer.\n\tfor i := 0; i < len(dcomp); {\n\t\tinfo := rb.f.info(rb.tmpBytes, i)\n\t\tif info.BoundaryBefore() && rb.nrune > 0 && !rb.doFlush() {\n\t\t\treturn iShortDst\n\t\t}\n\t\ti += copy(rb.byte[rb.nbyte:], dcomp[i:i+int(info.size)])\n\t\trb.insertOrdered(info)\n\t}\n\treturn iSuccess\n}\n\n// insertSingle inserts an entry in the reorderBuffer for the rune at\n// position i. info is the runeInfo for the rune at position i.\nfunc (rb *reorderBuffer) insertSingle(src input, i int, info Properties) {\n\tsrc.copySlice(rb.byte[rb.nbyte:], i, i+int(info.size))\n\trb.insertOrdered(info)\n}\n\n// insertCGJ inserts a Combining Grapheme Joiner (0x034f) into rb.\nfunc (rb *reorderBuffer) insertCGJ() {\n\trb.insertSingle(input{str: GraphemeJoiner}, 0, Properties{size: uint8(len(GraphemeJoiner))})\n}\n\n// appendRune inserts a rune at the end of the buffer. It is used for Hangul.\nfunc (rb *reorderBuffer) appendRune(r rune) {\n\tbn := rb.nbyte\n\tsz := utf8.EncodeRune(rb.byte[bn:], rune(r))\n\trb.nbyte += utf8.UTFMax\n\trb.rune[rb.nrune] = Properties{pos: bn, size: uint8(sz)}\n\trb.nrune++\n}\n\n// assignRune sets a rune at position pos. It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) assignRune(pos int, r rune) {\n\tbn := rb.rune[pos].pos\n\tsz := utf8.EncodeRune(rb.byte[bn:], rune(r))\n\trb.rune[pos] = Properties{pos: bn, size: uint8(sz)}\n}\n\n// runeAt returns the rune at position n. It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) runeAt(n int) rune {\n\tinf := rb.rune[n]\n\tr, _ := utf8.DecodeRune(rb.byte[inf.pos : inf.pos+inf.size])\n\treturn r\n}\n\n// bytesAt returns the UTF-8 encoding of the rune at position n.\n// It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) bytesAt(n int) []byte {\n\tinf := rb.rune[n]\n\treturn rb.byte[inf.pos : int(inf.pos)+int(inf.size)]\n}\n\n// For Hangul we combine algorithmically, instead of using tables.\nconst (\n\thangulBase  = 0xAC00 // UTF-8(hangulBase) -> EA B0 80\n\thangulBase0 = 0xEA\n\thangulBase1 = 0xB0\n\thangulBase2 = 0x80\n\n\thangulEnd  = hangulBase + jamoLVTCount // UTF-8(0xD7A4) -> ED 9E A4\n\thangulEnd0 = 0xED\n\thangulEnd1 = 0x9E\n\thangulEnd2 = 0xA4\n\n\tjamoLBase  = 0x1100 // UTF-8(jamoLBase) -> E1 84 00\n\tjamoLBase0 = 0xE1\n\tjamoLBase1 = 0x84\n\tjamoLEnd   = 0x1113\n\tjamoVBase  = 0x1161\n\tjamoVEnd   = 0x1176\n\tjamoTBase  = 0x11A7\n\tjamoTEnd   = 0x11C3\n\n\tjamoTCount   = 28\n\tjamoVCount   = 21\n\tjamoVTCount  = 21 * 28\n\tjamoLVTCount = 19 * 21 * 28\n)\n\nconst hangulUTF8Size = 3\n\nfunc isHangul(b []byte) bool {\n\tif len(b) < hangulUTF8Size {\n\t\treturn false\n\t}\n\tb0 := b[0]\n\tif b0 < hangulBase0 {\n\t\treturn false\n\t}\n\tb1 := b[1]\n\tswitch {\n\tcase b0 == hangulBase0:\n\t\treturn b1 >= hangulBase1\n\tcase b0 < hangulEnd0:\n\t\treturn true\n\tcase b0 > hangulEnd0:\n\t\treturn false\n\tcase b1 < hangulEnd1:\n\t\treturn true\n\t}\n\treturn b1 == hangulEnd1 && b[2] < hangulEnd2\n}\n\nfunc isHangulString(b string) bool {\n\tif len(b) < hangulUTF8Size {\n\t\treturn false\n\t}\n\tb0 := b[0]\n\tif b0 < hangulBase0 {\n\t\treturn false\n\t}\n\tb1 := b[1]\n\tswitch {\n\tcase b0 == hangulBase0:\n\t\treturn b1 >= hangulBase1\n\tcase b0 < hangulEnd0:\n\t\treturn true\n\tcase b0 > hangulEnd0:\n\t\treturn false\n\tcase b1 < hangulEnd1:\n\t\treturn true\n\t}\n\treturn b1 == hangulEnd1 && b[2] < hangulEnd2\n}\n\n// Caller must ensure len(b) >= 2.\nfunc isJamoVT(b []byte) bool {\n\t// True if (rune & 0xff00) == jamoLBase\n\treturn b[0] == jamoLBase0 && (b[1]&0xFC) == jamoLBase1\n}\n\nfunc isHangulWithoutJamoT(b []byte) bool {\n\tc, _ := utf8.DecodeRune(b)\n\tc -= hangulBase\n\treturn c < jamoLVTCount && c%jamoTCount == 0\n}\n\n// decomposeHangul writes the decomposed Hangul to buf and returns the number\n// of bytes written.  len(buf) should be at least 9.\nfunc decomposeHangul(buf []byte, r rune) int {\n\tconst JamoUTF8Len = 3\n\tr -= hangulBase\n\tx := r % jamoTCount\n\tr /= jamoTCount\n\tutf8.EncodeRune(buf, jamoLBase+r/jamoVCount)\n\tutf8.EncodeRune(buf[JamoUTF8Len:], jamoVBase+r%jamoVCount)\n\tif x != 0 {\n\t\tutf8.EncodeRune(buf[2*JamoUTF8Len:], jamoTBase+x)\n\t\treturn 3 * JamoUTF8Len\n\t}\n\treturn 2 * JamoUTF8Len\n}\n\n// decomposeHangul algorithmically decomposes a Hangul rune into\n// its Jamo components.\n// See http://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul.\nfunc (rb *reorderBuffer) decomposeHangul(r rune) {\n\tr -= hangulBase\n\tx := r % jamoTCount\n\tr /= jamoTCount\n\trb.appendRune(jamoLBase + r/jamoVCount)\n\trb.appendRune(jamoVBase + r%jamoVCount)\n\tif x != 0 {\n\t\trb.appendRune(jamoTBase + x)\n\t}\n}\n\n// combineHangul algorithmically combines Jamo character components into Hangul.\n// See http://unicode.org/reports/tr15/#Hangul for details on combining Hangul.\nfunc (rb *reorderBuffer) combineHangul(s, i, k int) {\n\tb := rb.rune[:]\n\tbn := rb.nrune\n\tfor ; i < bn; i++ {\n\t\tcccB := b[k-1].ccc\n\t\tcccC := b[i].ccc\n\t\tif cccB == 0 {\n\t\t\ts = k - 1\n\t\t}\n\t\tif s != k-1 && cccB >= cccC {\n\t\t\t// b[i] is blocked by greater-equal cccX below it\n\t\t\tb[k] = b[i]\n\t\t\tk++\n\t\t} else {\n\t\t\tl := rb.runeAt(s) // also used to compare to hangulBase\n\t\t\tv := rb.runeAt(i) // also used to compare to jamoT\n\t\t\tswitch {\n\t\t\tcase jamoLBase <= l && l < jamoLEnd &&\n\t\t\t\tjamoVBase <= v && v < jamoVEnd:\n\t\t\t\t// 11xx plus 116x to LV\n\t\t\t\trb.assignRune(s, hangulBase+\n\t\t\t\t\t(l-jamoLBase)*jamoVTCount+(v-jamoVBase)*jamoTCount)\n\t\t\tcase hangulBase <= l && l < hangulEnd &&\n\t\t\t\tjamoTBase < v && v < jamoTEnd &&\n\t\t\t\t((l-hangulBase)%jamoTCount) == 0:\n\t\t\t\t// ACxx plus 11Ax to LVT\n\t\t\t\trb.assignRune(s, l+v-jamoTBase)\n\t\t\tdefault:\n\t\t\t\tb[k] = b[i]\n\t\t\t\tk++\n\t\t\t}\n\t\t}\n\t}\n\trb.nrune = k\n}\n\n// compose recombines the runes in the buffer.\n// It should only be used to recompose a single segment, as it will not\n// handle alternations between Hangul and non-Hangul characters correctly.\nfunc (rb *reorderBuffer) compose() {\n\t// UAX #15, section X5 , including Corrigendum #5\n\t// \"In any character sequence beginning with starter S, a character C is\n\t//  blocked from S if and only if there is some character B between S\n\t//  and C, and either B is a starter or it has the same or higher\n\t//  combining class as C.\"\n\tbn := rb.nrune\n\tif bn == 0 {\n\t\treturn\n\t}\n\tk := 1\n\tb := rb.rune[:]\n\tfor s, i := 0, 1; i < bn; i++ {\n\t\tif isJamoVT(rb.bytesAt(i)) {\n\t\t\t// Redo from start in Hangul mode. Necessary to support\n\t\t\t// U+320E..U+321E in NFKC mode.\n\t\t\trb.combineHangul(s, i, k)\n\t\t\treturn\n\t\t}\n\t\tii := b[i]\n\t\t// We can only use combineForward as a filter if we later\n\t\t// get the info for the combined character. This is more\n\t\t// expensive than using the filter. Using combinesBackward()\n\t\t// is safe.\n\t\tif ii.combinesBackward() {\n\t\t\tcccB := b[k-1].ccc\n\t\t\tcccC := ii.ccc\n\t\t\tblocked := false // b[i] blocked by starter or greater or equal CCC?\n\t\t\tif cccB == 0 {\n\t\t\t\ts = k - 1\n\t\t\t} else {\n\t\t\t\tblocked = s != k-1 && cccB >= cccC\n\t\t\t}\n\t\t\tif !blocked {\n\t\t\t\tcombined := combine(rb.runeAt(s), rb.runeAt(i))\n\t\t\t\tif combined != 0 {\n\t\t\t\t\trb.assignRune(s, combined)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tb[k] = b[i]\n\t\tk++\n\t}\n\trb.nrune = k\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/forminfo.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\n// This file contains Form-specific logic and wrappers for data in tables.go.\n\n// Rune info is stored in a separate trie per composing form. A composing form\n// and its corresponding decomposing form share the same trie.  Each trie maps\n// a rune to a uint16. The values take two forms.  For v >= 0x8000:\n//   bits\n//   15:    1 (inverse of NFD_QC bit of qcInfo)\n//   13..7: qcInfo (see below). isYesD is always true (no decompostion).\n//    6..0: ccc (compressed CCC value).\n// For v < 0x8000, the respective rune has a decomposition and v is an index\n// into a byte array of UTF-8 decomposition sequences and additional info and\n// has the form:\n//    <header> <decomp_byte>* [<tccc> [<lccc>]]\n// The header contains the number of bytes in the decomposition (excluding this\n// length byte). The two most significant bits of this length byte correspond\n// to bit 5 and 4 of qcInfo (see below).  The byte sequence itself starts at v+1.\n// The byte sequence is followed by a trailing and leading CCC if the values\n// for these are not zero.  The value of v determines which ccc are appended\n// to the sequences.  For v < firstCCC, there are none, for v >= firstCCC,\n// the sequence is followed by a trailing ccc, and for v >= firstLeadingCC\n// there is an additional leading ccc. The value of tccc itself is the\n// trailing CCC shifted left 2 bits. The two least-significant bits of tccc\n// are the number of trailing non-starters.\n\nconst (\n\tqcInfoMask      = 0x3F // to clear all but the relevant bits in a qcInfo\n\theaderLenMask   = 0x3F // extract the length value from the header byte\n\theaderFlagsMask = 0xC0 // extract the qcInfo bits from the header byte\n)\n\n// Properties provides access to normalization properties of a rune.\ntype Properties struct {\n\tpos   uint8  // start position in reorderBuffer; used in composition.go\n\tsize  uint8  // length of UTF-8 encoding of this rune\n\tccc   uint8  // leading canonical combining class (ccc if not decomposition)\n\ttccc  uint8  // trailing canonical combining class (ccc if not decomposition)\n\tnLead uint8  // number of leading non-starters.\n\tflags qcInfo // quick check flags\n\tindex uint16\n}\n\n// functions dispatchable per form\ntype lookupFunc func(b input, i int) Properties\n\n// formInfo holds Form-specific functions and tables.\ntype formInfo struct {\n\tform                     Form\n\tcomposing, compatibility bool // form type\n\tinfo                     lookupFunc\n\tnextMain                 iterFunc\n}\n\nvar formTable = []*formInfo{{\n\tform:          NFC,\n\tcomposing:     true,\n\tcompatibility: false,\n\tinfo:          lookupInfoNFC,\n\tnextMain:      nextComposed,\n}, {\n\tform:          NFD,\n\tcomposing:     false,\n\tcompatibility: false,\n\tinfo:          lookupInfoNFC,\n\tnextMain:      nextDecomposed,\n}, {\n\tform:          NFKC,\n\tcomposing:     true,\n\tcompatibility: true,\n\tinfo:          lookupInfoNFKC,\n\tnextMain:      nextComposed,\n}, {\n\tform:          NFKD,\n\tcomposing:     false,\n\tcompatibility: true,\n\tinfo:          lookupInfoNFKC,\n\tnextMain:      nextDecomposed,\n}}\n\n// We do not distinguish between boundaries for NFC, NFD, etc. to avoid\n// unexpected behavior for the user.  For example, in NFD, there is a boundary\n// after 'a'.  However, 'a' might combine with modifiers, so from the application's\n// perspective it is not a good boundary. We will therefore always use the\n// boundaries for the combining variants.\n\n// BoundaryBefore returns true if this rune starts a new segment and\n// cannot combine with any rune on the left.\nfunc (p Properties) BoundaryBefore() bool {\n\tif p.ccc == 0 && !p.combinesBackward() {\n\t\treturn true\n\t}\n\t// We assume that the CCC of the first character in a decomposition\n\t// is always non-zero if different from info.ccc and that we can return\n\t// false at this point. This is verified by maketables.\n\treturn false\n}\n\n// BoundaryAfter returns true if runes cannot combine with or otherwise\n// interact with this or previous runes.\nfunc (p Properties) BoundaryAfter() bool {\n\t// TODO: loosen these conditions.\n\treturn p.isInert()\n}\n\n// We pack quick check data in 4 bits:\n//   5:    Combines forward  (0 == false, 1 == true)\n//   4..3: NFC_QC Yes(00), No (10), or Maybe (11)\n//   2:    NFD_QC Yes (0) or No (1). No also means there is a decomposition.\n//   1..0: Number of trailing non-starters.\n//\n// When all 4 bits are zero, the character is inert, meaning it is never\n// influenced by normalization.\ntype qcInfo uint8\n\nfunc (p Properties) isYesC() bool { return p.flags&0x10 == 0 }\nfunc (p Properties) isYesD() bool { return p.flags&0x4 == 0 }\n\nfunc (p Properties) combinesForward() bool  { return p.flags&0x20 != 0 }\nfunc (p Properties) combinesBackward() bool { return p.flags&0x8 != 0 } // == isMaybe\nfunc (p Properties) hasDecomposition() bool { return p.flags&0x4 != 0 } // == isNoD\n\nfunc (p Properties) isInert() bool {\n\treturn p.flags&qcInfoMask == 0 && p.ccc == 0\n}\n\nfunc (p Properties) multiSegment() bool {\n\treturn p.index >= firstMulti && p.index < endMulti\n}\n\nfunc (p Properties) nLeadingNonStarters() uint8 {\n\treturn p.nLead\n}\n\nfunc (p Properties) nTrailingNonStarters() uint8 {\n\treturn uint8(p.flags & 0x03)\n}\n\n// Decomposition returns the decomposition for the underlying rune\n// or nil if there is none.\nfunc (p Properties) Decomposition() []byte {\n\t// TODO: create the decomposition for Hangul?\n\tif p.index == 0 {\n\t\treturn nil\n\t}\n\ti := p.index\n\tn := decomps[i] & headerLenMask\n\ti++\n\treturn decomps[i : i+uint16(n)]\n}\n\n// Size returns the length of UTF-8 encoding of the rune.\nfunc (p Properties) Size() int {\n\treturn int(p.size)\n}\n\n// CCC returns the canonical combining class of the underlying rune.\nfunc (p Properties) CCC() uint8 {\n\tif p.index >= firstCCCZeroExcept {\n\t\treturn 0\n\t}\n\treturn ccc[p.ccc]\n}\n\n// LeadCCC returns the CCC of the first rune in the decomposition.\n// If there is no decomposition, LeadCCC equals CCC.\nfunc (p Properties) LeadCCC() uint8 {\n\treturn ccc[p.ccc]\n}\n\n// TrailCCC returns the CCC of the last rune in the decomposition.\n// If there is no decomposition, TrailCCC equals CCC.\nfunc (p Properties) TrailCCC() uint8 {\n\treturn ccc[p.tccc]\n}\n\n// Recomposition\n// We use 32-bit keys instead of 64-bit for the two codepoint keys.\n// This clips off the bits of three entries, but we know this will not\n// result in a collision. In the unlikely event that changes to\n// UnicodeData.txt introduce collisions, the compiler will catch it.\n// Note that the recomposition map for NFC and NFKC are identical.\n\n// combine returns the combined rune or 0 if it doesn't exist.\nfunc combine(a, b rune) rune {\n\tkey := uint32(uint16(a))<<16 + uint32(uint16(b))\n\treturn recompMap[key]\n}\n\nfunc lookupInfoNFC(b input, i int) Properties {\n\tv, sz := b.charinfoNFC(i)\n\treturn compInfo(v, sz)\n}\n\nfunc lookupInfoNFKC(b input, i int) Properties {\n\tv, sz := b.charinfoNFKC(i)\n\treturn compInfo(v, sz)\n}\n\n// Properties returns properties for the first rune in s.\nfunc (f Form) Properties(s []byte) Properties {\n\tif f == NFC || f == NFD {\n\t\treturn compInfo(nfcData.lookup(s))\n\t}\n\treturn compInfo(nfkcData.lookup(s))\n}\n\n// PropertiesString returns properties for the first rune in s.\nfunc (f Form) PropertiesString(s string) Properties {\n\tif f == NFC || f == NFD {\n\t\treturn compInfo(nfcData.lookupString(s))\n\t}\n\treturn compInfo(nfkcData.lookupString(s))\n}\n\n// compInfo converts the information contained in v and sz\n// to a Properties.  See the comment at the top of the file\n// for more information on the format.\nfunc compInfo(v uint16, sz int) Properties {\n\tif v == 0 {\n\t\treturn Properties{size: uint8(sz)}\n\t} else if v >= 0x8000 {\n\t\tp := Properties{\n\t\t\tsize:  uint8(sz),\n\t\t\tccc:   uint8(v),\n\t\t\ttccc:  uint8(v),\n\t\t\tflags: qcInfo(v >> 8),\n\t\t}\n\t\tif p.ccc > 0 || p.combinesBackward() {\n\t\t\tp.nLead = uint8(p.flags & 0x3)\n\t\t}\n\t\treturn p\n\t}\n\t// has decomposition\n\th := decomps[v]\n\tf := (qcInfo(h&headerFlagsMask) >> 2) | 0x4\n\tp := Properties{size: uint8(sz), flags: f, index: v}\n\tif v >= firstCCC {\n\t\tv += uint16(h&headerLenMask) + 1\n\t\tc := decomps[v]\n\t\tp.tccc = c >> 2\n\t\tp.flags |= qcInfo(c & 0x3)\n\t\tif v >= firstLeadingCCC {\n\t\t\tp.nLead = c & 0x3\n\t\t\tif v >= firstStarterWithNLead {\n\t\t\t\t// We were tricked. Remove the decomposition.\n\t\t\t\tp.flags &= 0x03\n\t\t\t\tp.index = 0\n\t\t\t\treturn p\n\t\t\t}\n\t\t\tp.ccc = decomps[v+1]\n\t\t}\n\t}\n\treturn p\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/input.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"unicode/utf8\"\n\ntype input struct {\n\tstr   string\n\tbytes []byte\n}\n\nfunc inputBytes(str []byte) input {\n\treturn input{bytes: str}\n}\n\nfunc inputString(str string) input {\n\treturn input{str: str}\n}\n\nfunc (in *input) setBytes(str []byte) {\n\tin.str = \"\"\n\tin.bytes = str\n}\n\nfunc (in *input) setString(str string) {\n\tin.str = str\n\tin.bytes = nil\n}\n\nfunc (in *input) _byte(p int) byte {\n\tif in.bytes == nil {\n\t\treturn in.str[p]\n\t}\n\treturn in.bytes[p]\n}\n\nfunc (in *input) skipASCII(p, max int) int {\n\tif in.bytes == nil {\n\t\tfor ; p < max && in.str[p] < utf8.RuneSelf; p++ {\n\t\t}\n\t} else {\n\t\tfor ; p < max && in.bytes[p] < utf8.RuneSelf; p++ {\n\t\t}\n\t}\n\treturn p\n}\n\nfunc (in *input) skipContinuationBytes(p int) int {\n\tif in.bytes == nil {\n\t\tfor ; p < len(in.str) && !utf8.RuneStart(in.str[p]); p++ {\n\t\t}\n\t} else {\n\t\tfor ; p < len(in.bytes) && !utf8.RuneStart(in.bytes[p]); p++ {\n\t\t}\n\t}\n\treturn p\n}\n\nfunc (in *input) appendSlice(buf []byte, b, e int) []byte {\n\tif in.bytes != nil {\n\t\treturn append(buf, in.bytes[b:e]...)\n\t}\n\tfor i := b; i < e; i++ {\n\t\tbuf = append(buf, in.str[i])\n\t}\n\treturn buf\n}\n\nfunc (in *input) copySlice(buf []byte, b, e int) int {\n\tif in.bytes == nil {\n\t\treturn copy(buf, in.str[b:e])\n\t}\n\treturn copy(buf, in.bytes[b:e])\n}\n\nfunc (in *input) charinfoNFC(p int) (uint16, int) {\n\tif in.bytes == nil {\n\t\treturn nfcData.lookupString(in.str[p:])\n\t}\n\treturn nfcData.lookup(in.bytes[p:])\n}\n\nfunc (in *input) charinfoNFKC(p int) (uint16, int) {\n\tif in.bytes == nil {\n\t\treturn nfkcData.lookupString(in.str[p:])\n\t}\n\treturn nfkcData.lookup(in.bytes[p:])\n}\n\nfunc (in *input) hangul(p int) (r rune) {\n\tvar size int\n\tif in.bytes == nil {\n\t\tif !isHangulString(in.str[p:]) {\n\t\t\treturn 0\n\t\t}\n\t\tr, size = utf8.DecodeRuneInString(in.str[p:])\n\t} else {\n\t\tif !isHangul(in.bytes[p:]) {\n\t\t\treturn 0\n\t\t}\n\t\tr, size = utf8.DecodeRune(in.bytes[p:])\n\t}\n\tif size != hangulUTF8Size {\n\t\treturn 0\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/iter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport (\n\t\"fmt\"\n\t\"unicode/utf8\"\n)\n\n// MaxSegmentSize is the maximum size of a byte buffer needed to consider any\n// sequence of starter and non-starter runes for the purpose of normalization.\nconst MaxSegmentSize = maxByteBufferSize\n\n// An Iter iterates over a string or byte slice, while normalizing it\n// to a given Form.\ntype Iter struct {\n\trb     reorderBuffer\n\tbuf    [maxByteBufferSize]byte\n\tinfo   Properties // first character saved from previous iteration\n\tnext   iterFunc   // implementation of next depends on form\n\tasciiF iterFunc\n\n\tp        int    // current position in input source\n\tmultiSeg []byte // remainder of multi-segment decomposition\n}\n\ntype iterFunc func(*Iter) []byte\n\n// Init initializes i to iterate over src after normalizing it to Form f.\nfunc (i *Iter) Init(f Form, src []byte) {\n\ti.p = 0\n\tif len(src) == 0 {\n\t\ti.setDone()\n\t\ti.rb.nsrc = 0\n\t\treturn\n\t}\n\ti.multiSeg = nil\n\ti.rb.init(f, src)\n\ti.next = i.rb.f.nextMain\n\ti.asciiF = nextASCIIBytes\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n}\n\n// InitString initializes i to iterate over src after normalizing it to Form f.\nfunc (i *Iter) InitString(f Form, src string) {\n\ti.p = 0\n\tif len(src) == 0 {\n\t\ti.setDone()\n\t\ti.rb.nsrc = 0\n\t\treturn\n\t}\n\ti.multiSeg = nil\n\ti.rb.initString(f, src)\n\ti.next = i.rb.f.nextMain\n\ti.asciiF = nextASCIIString\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n}\n\n// Seek sets the segment to be returned by the next call to Next to start\n// at position p.  It is the responsibility of the caller to set p to the\n// start of a segment.\nfunc (i *Iter) Seek(offset int64, whence int) (int64, error) {\n\tvar abs int64\n\tswitch whence {\n\tcase 0:\n\t\tabs = offset\n\tcase 1:\n\t\tabs = int64(i.p) + offset\n\tcase 2:\n\t\tabs = int64(i.rb.nsrc) + offset\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"norm: invalid whence\")\n\t}\n\tif abs < 0 {\n\t\treturn 0, fmt.Errorf(\"norm: negative position\")\n\t}\n\tif int(abs) >= i.rb.nsrc {\n\t\ti.setDone()\n\t\treturn int64(i.p), nil\n\t}\n\ti.p = int(abs)\n\ti.multiSeg = nil\n\ti.next = i.rb.f.nextMain\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n\treturn abs, nil\n}\n\n// returnSlice returns a slice of the underlying input type as a byte slice.\n// If the underlying is of type []byte, it will simply return a slice.\n// If the underlying is of type string, it will copy the slice to the buffer\n// and return that.\nfunc (i *Iter) returnSlice(a, b int) []byte {\n\tif i.rb.src.bytes == nil {\n\t\treturn i.buf[:copy(i.buf[:], i.rb.src.str[a:b])]\n\t}\n\treturn i.rb.src.bytes[a:b]\n}\n\n// Pos returns the byte position at which the next call to Next will commence processing.\nfunc (i *Iter) Pos() int {\n\treturn i.p\n}\n\nfunc (i *Iter) setDone() {\n\ti.next = nextDone\n\ti.p = i.rb.nsrc\n}\n\n// Done returns true if there is no more input to process.\nfunc (i *Iter) Done() bool {\n\treturn i.p >= i.rb.nsrc\n}\n\n// Next returns f(i.input[i.Pos():n]), where n is a boundary of i.input.\n// For any input a and b for which f(a) == f(b), subsequent calls\n// to Next will return the same segments.\n// Modifying runes are grouped together with the preceding starter, if such a starter exists.\n// Although not guaranteed, n will typically be the smallest possible n.\nfunc (i *Iter) Next() []byte {\n\treturn i.next(i)\n}\n\nfunc nextASCIIBytes(i *Iter) []byte {\n\tp := i.p + 1\n\tif p >= i.rb.nsrc {\n\t\ti.setDone()\n\t\treturn i.rb.src.bytes[i.p:p]\n\t}\n\tif i.rb.src.bytes[p] < utf8.RuneSelf {\n\t\tp0 := i.p\n\t\ti.p = p\n\t\treturn i.rb.src.bytes[p0:p]\n\t}\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\nfunc nextASCIIString(i *Iter) []byte {\n\tp := i.p + 1\n\tif p >= i.rb.nsrc {\n\t\ti.buf[0] = i.rb.src.str[i.p]\n\t\ti.setDone()\n\t\treturn i.buf[:1]\n\t}\n\tif i.rb.src.str[p] < utf8.RuneSelf {\n\t\ti.buf[0] = i.rb.src.str[i.p]\n\t\ti.p = p\n\t\treturn i.buf[:1]\n\t}\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\nfunc nextHangul(i *Iter) []byte {\n\tp := i.p\n\tnext := p + hangulUTF8Size\n\tif next >= i.rb.nsrc {\n\t\ti.setDone()\n\t} else if i.rb.src.hangul(next) == 0 {\n\t\ti.rb.ss.next(i.info)\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\ti.next = i.rb.f.nextMain\n\t\treturn i.next(i)\n\t}\n\ti.p = next\n\treturn i.buf[:decomposeHangul(i.buf[:], i.rb.src.hangul(p))]\n}\n\nfunc nextDone(i *Iter) []byte {\n\treturn nil\n}\n\n// nextMulti is used for iterating over multi-segment decompositions\n// for decomposing normal forms.\nfunc nextMulti(i *Iter) []byte {\n\tj := 0\n\td := i.multiSeg\n\t// skip first rune\n\tfor j = 1; j < len(d) && !utf8.RuneStart(d[j]); j++ {\n\t}\n\tfor j < len(d) {\n\t\tinfo := i.rb.f.info(input{bytes: d}, j)\n\t\tif info.BoundaryBefore() {\n\t\t\ti.multiSeg = d[j:]\n\t\t\treturn d[:j]\n\t\t}\n\t\tj += int(info.size)\n\t}\n\t// treat last segment as normal decomposition\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\n// nextMultiNorm is used for iterating over multi-segment decompositions\n// for composing normal forms.\nfunc nextMultiNorm(i *Iter) []byte {\n\tj := 0\n\td := i.multiSeg\n\tfor j < len(d) {\n\t\tinfo := i.rb.f.info(input{bytes: d}, j)\n\t\tif info.BoundaryBefore() {\n\t\t\ti.rb.compose()\n\t\t\tseg := i.buf[:i.rb.flushCopy(i.buf[:])]\n\t\t\ti.rb.insertUnsafe(input{bytes: d}, j, info)\n\t\t\ti.multiSeg = d[j+int(info.size):]\n\t\t\treturn seg\n\t\t}\n\t\ti.rb.insertUnsafe(input{bytes: d}, j, info)\n\t\tj += int(info.size)\n\t}\n\ti.multiSeg = nil\n\ti.next = nextComposed\n\treturn doNormComposed(i)\n}\n\n// nextDecomposed is the implementation of Next for forms NFD and NFKD.\nfunc nextDecomposed(i *Iter) (next []byte) {\n\toutp := 0\n\tinCopyStart, outCopyStart := i.p, 0\n\tfor {\n\t\tif sz := int(i.info.size); sz <= 1 {\n\t\t\ti.rb.ss = 0\n\t\t\tp := i.p\n\t\t\ti.p++ // ASCII or illegal byte.  Either way, advance by 1.\n\t\t\tif i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\treturn i.returnSlice(p, i.p)\n\t\t\t} else if i.rb.src._byte(i.p) < utf8.RuneSelf {\n\t\t\t\ti.next = i.asciiF\n\t\t\t\treturn i.returnSlice(p, i.p)\n\t\t\t}\n\t\t\toutp++\n\t\t} else if d := i.info.Decomposition(); d != nil {\n\t\t\t// Note: If leading CCC != 0, then len(d) == 2 and last is also non-zero.\n\t\t\t// Case 1: there is a leftover to copy.  In this case the decomposition\n\t\t\t// must begin with a modifier and should always be appended.\n\t\t\t// Case 2: no leftover. Simply return d if followed by a ccc == 0 value.\n\t\t\tp := outp + len(d)\n\t\t\tif outp > 0 {\n\t\t\t\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\t\t\t\t// TODO: this condition should not be possible, but we leave it\n\t\t\t\t// in for defensive purposes.\n\t\t\t\tif p > len(i.buf) {\n\t\t\t\t\treturn i.buf[:outp]\n\t\t\t\t}\n\t\t\t} else if i.info.multiSegment() {\n\t\t\t\t// outp must be 0 as multi-segment decompositions always\n\t\t\t\t// start a new segment.\n\t\t\t\tif i.multiSeg == nil {\n\t\t\t\t\ti.multiSeg = d\n\t\t\t\t\ti.next = nextMulti\n\t\t\t\t\treturn nextMulti(i)\n\t\t\t\t}\n\t\t\t\t// We are in the last segment.  Treat as normal decomposition.\n\t\t\t\td = i.multiSeg\n\t\t\t\ti.multiSeg = nil\n\t\t\t\tp = len(d)\n\t\t\t}\n\t\t\tprevCC := i.info.tccc\n\t\t\tif i.p += sz; i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\ti.info = Properties{} // Force BoundaryBefore to succeed.\n\t\t\t} else {\n\t\t\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\t\t}\n\t\t\tswitch i.rb.ss.next(i.info) {\n\t\t\tcase ssOverflow:\n\t\t\t\ti.next = nextCGJDecompose\n\t\t\t\tfallthrough\n\t\t\tcase ssStarter:\n\t\t\t\tif outp > 0 {\n\t\t\t\t\tcopy(i.buf[outp:], d)\n\t\t\t\t\treturn i.buf[:p]\n\t\t\t\t}\n\t\t\t\treturn d\n\t\t\t}\n\t\t\tcopy(i.buf[outp:], d)\n\t\t\toutp = p\n\t\t\tinCopyStart, outCopyStart = i.p, outp\n\t\t\tif i.info.ccc < prevCC {\n\t\t\t\tgoto doNorm\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if r := i.rb.src.hangul(i.p); r != 0 {\n\t\t\toutp = decomposeHangul(i.buf[:], r)\n\t\t\ti.p += hangulUTF8Size\n\t\t\tinCopyStart, outCopyStart = i.p, outp\n\t\t\tif i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\tbreak\n\t\t\t} else if i.rb.src.hangul(i.p) != 0 {\n\t\t\t\ti.next = nextHangul\n\t\t\t\treturn i.buf[:outp]\n\t\t\t}\n\t\t} else {\n\t\t\tp := outp + sz\n\t\t\tif p > len(i.buf) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\toutp = p\n\t\t\ti.p += sz\n\t\t}\n\t\tif i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\tprevCC := i.info.tccc\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif v := i.rb.ss.next(i.info); v == ssStarter {\n\t\t\tbreak\n\t\t} else if v == ssOverflow {\n\t\t\ti.next = nextCGJDecompose\n\t\t\tbreak\n\t\t}\n\t\tif i.info.ccc < prevCC {\n\t\t\tgoto doNorm\n\t\t}\n\t}\n\tif outCopyStart == 0 {\n\t\treturn i.returnSlice(inCopyStart, i.p)\n\t} else if inCopyStart < i.p {\n\t\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\t}\n\treturn i.buf[:outp]\ndoNorm:\n\t// Insert what we have decomposed so far in the reorderBuffer.\n\t// As we will only reorder, there will always be enough room.\n\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\ti.rb.insertDecomposed(i.buf[0:outp])\n\treturn doNormDecomposed(i)\n}\n\nfunc doNormDecomposed(i *Iter) []byte {\n\tfor {\n\t\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\t\tif i.p += int(i.info.size); i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif i.info.ccc == 0 {\n\t\t\tbreak\n\t\t}\n\t\tif s := i.rb.ss.next(i.info); s == ssOverflow {\n\t\t\ti.next = nextCGJDecompose\n\t\t\tbreak\n\t\t}\n\t}\n\t// new segment or too many combining characters: exit normalization\n\treturn i.buf[:i.rb.flushCopy(i.buf[:])]\n}\n\nfunc nextCGJDecompose(i *Iter) []byte {\n\ti.rb.ss = 0\n\ti.rb.insertCGJ()\n\ti.next = nextDecomposed\n\ti.rb.ss.first(i.info)\n\tbuf := doNormDecomposed(i)\n\treturn buf\n}\n\n// nextComposed is the implementation of Next for forms NFC and NFKC.\nfunc nextComposed(i *Iter) []byte {\n\toutp, startp := 0, i.p\n\tvar prevCC uint8\n\tfor {\n\t\tif !i.info.isYesC() {\n\t\t\tgoto doNorm\n\t\t}\n\t\tprevCC = i.info.tccc\n\t\tsz := int(i.info.size)\n\t\tif sz == 0 {\n\t\t\tsz = 1 // illegal rune: copy byte-by-byte\n\t\t}\n\t\tp := outp + sz\n\t\tif p > len(i.buf) {\n\t\t\tbreak\n\t\t}\n\t\toutp = p\n\t\ti.p += sz\n\t\tif i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t} else if i.rb.src._byte(i.p) < utf8.RuneSelf {\n\t\t\ti.rb.ss = 0\n\t\t\ti.next = i.asciiF\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif v := i.rb.ss.next(i.info); v == ssStarter {\n\t\t\tbreak\n\t\t} else if v == ssOverflow {\n\t\t\ti.next = nextCGJCompose\n\t\t\tbreak\n\t\t}\n\t\tif i.info.ccc < prevCC {\n\t\t\tgoto doNorm\n\t\t}\n\t}\n\treturn i.returnSlice(startp, i.p)\ndoNorm:\n\t// reset to start position\n\ti.p = startp\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n\tif i.info.multiSegment() {\n\t\td := i.info.Decomposition()\n\t\tinfo := i.rb.f.info(input{bytes: d}, 0)\n\t\ti.rb.insertUnsafe(input{bytes: d}, 0, info)\n\t\ti.multiSeg = d[int(info.size):]\n\t\ti.next = nextMultiNorm\n\t\treturn nextMultiNorm(i)\n\t}\n\ti.rb.ss.first(i.info)\n\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\treturn doNormComposed(i)\n}\n\nfunc doNormComposed(i *Iter) []byte {\n\t// First rune should already be inserted.\n\tfor {\n\t\tif i.p += int(i.info.size); i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif s := i.rb.ss.next(i.info); s == ssStarter {\n\t\t\tbreak\n\t\t} else if s == ssOverflow {\n\t\t\ti.next = nextCGJCompose\n\t\t\tbreak\n\t\t}\n\t\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\t}\n\ti.rb.compose()\n\tseg := i.buf[:i.rb.flushCopy(i.buf[:])]\n\treturn seg\n}\n\nfunc nextCGJCompose(i *Iter) []byte {\n\ti.rb.ss = 0 // instead of first\n\ti.rb.insertCGJ()\n\ti.next = nextComposed\n\t// Note that we treat any rune with nLeadingNonStarters > 0 as a non-starter,\n\t// even if they are not. This is particularly dubious for U+FF9E and UFF9A.\n\t// If we ever change that, insert a check here.\n\ti.rb.ss.first(i.info)\n\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\treturn doNormComposed(i)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/maketables.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n// Normalization table generator.\n// Data read from the web.\n// See forminfo.go for a description of the trie values associated with each rune.\n\npackage main\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/internal/triegen\"\n\t\"golang.org/x/text/internal/ucd\"\n)\n\nfunc main() {\n\tgen.Init()\n\tloadUnicodeData()\n\tcompactCCC()\n\tloadCompositionExclusions()\n\tcompleteCharFields(FCanonical)\n\tcompleteCharFields(FCompatibility)\n\tcomputeNonStarterCounts()\n\tverifyComputed()\n\tprintChars()\n\ttestDerived()\n\tprintTestdata()\n\tmakeTables()\n}\n\nvar (\n\ttablelist = flag.String(\"tables\",\n\t\t\"all\",\n\t\t\"comma-separated list of which tables to generate; \"+\n\t\t\t\"can be 'decomp', 'recomp', 'info' and 'all'\")\n\ttest = flag.Bool(\"test\",\n\t\tfalse,\n\t\t\"test existing tables against DerivedNormalizationProps and generate test data for regression testing\")\n\tverbose = flag.Bool(\"verbose\",\n\t\tfalse,\n\t\t\"write data to stdout as it is parsed\")\n)\n\nconst MaxChar = 0x10FFFF // anything above this shouldn't exist\n\n// Quick Check properties of runes allow us to quickly\n// determine whether a rune may occur in a normal form.\n// For a given normal form, a rune may be guaranteed to occur\n// verbatim (QC=Yes), may or may not combine with another\n// rune (QC=Maybe), or may not occur (QC=No).\ntype QCResult int\n\nconst (\n\tQCUnknown QCResult = iota\n\tQCYes\n\tQCNo\n\tQCMaybe\n)\n\nfunc (r QCResult) String() string {\n\tswitch r {\n\tcase QCYes:\n\t\treturn \"Yes\"\n\tcase QCNo:\n\t\treturn \"No\"\n\tcase QCMaybe:\n\t\treturn \"Maybe\"\n\t}\n\treturn \"***UNKNOWN***\"\n}\n\nconst (\n\tFCanonical     = iota // NFC or NFD\n\tFCompatibility        // NFKC or NFKD\n\tFNumberOfFormTypes\n)\n\nconst (\n\tMComposed   = iota // NFC or NFKC\n\tMDecomposed        // NFD or NFKD\n\tMNumberOfModes\n)\n\n// This contains only the properties we're interested in.\ntype Char struct {\n\tname          string\n\tcodePoint     rune  // if zero, this index is not a valid code point.\n\tccc           uint8 // canonical combining class\n\torigCCC       uint8\n\texcludeInComp bool // from CompositionExclusions.txt\n\tcompatDecomp  bool // it has a compatibility expansion\n\n\tnTrailingNonStarters uint8\n\tnLeadingNonStarters  uint8 // must be equal to trailing if non-zero\n\n\tforms [FNumberOfFormTypes]FormInfo // For FCanonical and FCompatibility\n\n\tstate State\n}\n\nvar chars = make([]Char, MaxChar+1)\nvar cccMap = make(map[uint8]uint8)\n\nfunc (c Char) String() string {\n\tbuf := new(bytes.Buffer)\n\n\tfmt.Fprintf(buf, \"%U [%s]:\\n\", c.codePoint, c.name)\n\tfmt.Fprintf(buf, \"  ccc: %v\\n\", c.ccc)\n\tfmt.Fprintf(buf, \"  excludeInComp: %v\\n\", c.excludeInComp)\n\tfmt.Fprintf(buf, \"  compatDecomp: %v\\n\", c.compatDecomp)\n\tfmt.Fprintf(buf, \"  state: %v\\n\", c.state)\n\tfmt.Fprintf(buf, \"  NFC:\\n\")\n\tfmt.Fprint(buf, c.forms[FCanonical])\n\tfmt.Fprintf(buf, \"  NFKC:\\n\")\n\tfmt.Fprint(buf, c.forms[FCompatibility])\n\n\treturn buf.String()\n}\n\n// In UnicodeData.txt, some ranges are marked like this:\n//\t3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;\n//\t4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;\n// parseCharacter keeps a state variable indicating the weirdness.\ntype State int\n\nconst (\n\tSNormal State = iota // known to be zero for the type\n\tSFirst\n\tSLast\n\tSMissing\n)\n\nvar lastChar = rune('\\u0000')\n\nfunc (c Char) isValid() bool {\n\treturn c.codePoint != 0 && c.state != SMissing\n}\n\ntype FormInfo struct {\n\tquickCheck [MNumberOfModes]QCResult // index: MComposed or MDecomposed\n\tverified   [MNumberOfModes]bool     // index: MComposed or MDecomposed\n\n\tcombinesForward  bool // May combine with rune on the right\n\tcombinesBackward bool // May combine with rune on the left\n\tisOneWay         bool // Never appears in result\n\tinDecomp         bool // Some decompositions result in this char.\n\tdecomp           Decomposition\n\texpandedDecomp   Decomposition\n}\n\nfunc (f FormInfo) String() string {\n\tbuf := bytes.NewBuffer(make([]byte, 0))\n\n\tfmt.Fprintf(buf, \"    quickCheck[C]: %v\\n\", f.quickCheck[MComposed])\n\tfmt.Fprintf(buf, \"    quickCheck[D]: %v\\n\", f.quickCheck[MDecomposed])\n\tfmt.Fprintf(buf, \"    cmbForward: %v\\n\", f.combinesForward)\n\tfmt.Fprintf(buf, \"    cmbBackward: %v\\n\", f.combinesBackward)\n\tfmt.Fprintf(buf, \"    isOneWay: %v\\n\", f.isOneWay)\n\tfmt.Fprintf(buf, \"    inDecomp: %v\\n\", f.inDecomp)\n\tfmt.Fprintf(buf, \"    decomposition: %X\\n\", f.decomp)\n\tfmt.Fprintf(buf, \"    expandedDecomp: %X\\n\", f.expandedDecomp)\n\n\treturn buf.String()\n}\n\ntype Decomposition []rune\n\nfunc parseDecomposition(s string, skipfirst bool) (a []rune, err error) {\n\tdecomp := strings.Split(s, \" \")\n\tif len(decomp) > 0 && skipfirst {\n\t\tdecomp = decomp[1:]\n\t}\n\tfor _, d := range decomp {\n\t\tpoint, err := strconv.ParseUint(d, 16, 64)\n\t\tif err != nil {\n\t\t\treturn a, err\n\t\t}\n\t\ta = append(a, rune(point))\n\t}\n\treturn a, nil\n}\n\nfunc loadUnicodeData() {\n\tf := gen.OpenUCDFile(\"UnicodeData.txt\")\n\tdefer f.Close()\n\tp := ucd.New(f)\n\tfor p.Next() {\n\t\tr := p.Rune(ucd.CodePoint)\n\t\tchar := &chars[r]\n\n\t\tchar.ccc = uint8(p.Uint(ucd.CanonicalCombiningClass))\n\t\tdecmap := p.String(ucd.DecompMapping)\n\n\t\texp, err := parseDecomposition(decmap, false)\n\t\tisCompat := false\n\t\tif err != nil {\n\t\t\tif len(decmap) > 0 {\n\t\t\t\texp, err = parseDecomposition(decmap, true)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Fatalf(`%U: bad decomp |%v|: \"%s\"`, r, decmap, err)\n\t\t\t\t}\n\t\t\t\tisCompat = true\n\t\t\t}\n\t\t}\n\n\t\tchar.name = p.String(ucd.Name)\n\t\tchar.codePoint = r\n\t\tchar.forms[FCompatibility].decomp = exp\n\t\tif !isCompat {\n\t\t\tchar.forms[FCanonical].decomp = exp\n\t\t} else {\n\t\t\tchar.compatDecomp = true\n\t\t}\n\t\tif len(decmap) > 0 {\n\t\t\tchar.forms[FCompatibility].decomp = exp\n\t\t}\n\t}\n\tif err := p.Err(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\n// compactCCC converts the sparse set of CCC values to a continguous one,\n// reducing the number of bits needed from 8 to 6.\nfunc compactCCC() {\n\tm := make(map[uint8]uint8)\n\tfor i := range chars {\n\t\tc := &chars[i]\n\t\tm[c.ccc] = 0\n\t}\n\tcccs := []int{}\n\tfor v, _ := range m {\n\t\tcccs = append(cccs, int(v))\n\t}\n\tsort.Ints(cccs)\n\tfor i, c := range cccs {\n\t\tcccMap[uint8(i)] = uint8(c)\n\t\tm[uint8(c)] = uint8(i)\n\t}\n\tfor i := range chars {\n\t\tc := &chars[i]\n\t\tc.origCCC = c.ccc\n\t\tc.ccc = m[c.ccc]\n\t}\n\tif len(m) >= 1<<6 {\n\t\tlog.Fatalf(\"too many difference CCC values: %d >= 64\", len(m))\n\t}\n}\n\n// CompositionExclusions.txt has form:\n// 0958    # ...\n// See http://unicode.org/reports/tr44/ for full explanation\nfunc loadCompositionExclusions() {\n\tf := gen.OpenUCDFile(\"CompositionExclusions.txt\")\n\tdefer f.Close()\n\tp := ucd.New(f)\n\tfor p.Next() {\n\t\tc := &chars[p.Rune(0)]\n\t\tif c.excludeInComp {\n\t\t\tlog.Fatalf(\"%U: Duplicate entry in exclusions.\", c.codePoint)\n\t\t}\n\t\tc.excludeInComp = true\n\t}\n\tif e := p.Err(); e != nil {\n\t\tlog.Fatal(e)\n\t}\n}\n\n// hasCompatDecomp returns true if any of the recursive\n// decompositions contains a compatibility expansion.\n// In this case, the character may not occur in NFK*.\nfunc hasCompatDecomp(r rune) bool {\n\tc := &chars[r]\n\tif c.compatDecomp {\n\t\treturn true\n\t}\n\tfor _, d := range c.forms[FCompatibility].decomp {\n\t\tif hasCompatDecomp(d) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Hangul related constants.\nconst (\n\tHangulBase = 0xAC00\n\tHangulEnd  = 0xD7A4 // hangulBase + Jamo combinations (19 * 21 * 28)\n\n\tJamoLBase = 0x1100\n\tJamoLEnd  = 0x1113\n\tJamoVBase = 0x1161\n\tJamoVEnd  = 0x1176\n\tJamoTBase = 0x11A8\n\tJamoTEnd  = 0x11C3\n\n\tJamoLVTCount = 19 * 21 * 28\n\tJamoTCount   = 28\n)\n\nfunc isHangul(r rune) bool {\n\treturn HangulBase <= r && r < HangulEnd\n}\n\nfunc isHangulWithoutJamoT(r rune) bool {\n\tif !isHangul(r) {\n\t\treturn false\n\t}\n\tr -= HangulBase\n\treturn r < JamoLVTCount && r%JamoTCount == 0\n}\n\nfunc ccc(r rune) uint8 {\n\treturn chars[r].ccc\n}\n\n// Insert a rune in a buffer, ordered by Canonical Combining Class.\nfunc insertOrdered(b Decomposition, r rune) Decomposition {\n\tn := len(b)\n\tb = append(b, 0)\n\tcc := ccc(r)\n\tif cc > 0 {\n\t\t// Use bubble sort.\n\t\tfor ; n > 0; n-- {\n\t\t\tif ccc(b[n-1]) <= cc {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb[n] = b[n-1]\n\t\t}\n\t}\n\tb[n] = r\n\treturn b\n}\n\n// Recursively decompose.\nfunc decomposeRecursive(form int, r rune, d Decomposition) Decomposition {\n\tdcomp := chars[r].forms[form].decomp\n\tif len(dcomp) == 0 {\n\t\treturn insertOrdered(d, r)\n\t}\n\tfor _, c := range dcomp {\n\t\td = decomposeRecursive(form, c, d)\n\t}\n\treturn d\n}\n\nfunc completeCharFields(form int) {\n\t// Phase 0: pre-expand decomposition.\n\tfor i := range chars {\n\t\tf := &chars[i].forms[form]\n\t\tif len(f.decomp) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\texp := make(Decomposition, 0)\n\t\tfor _, c := range f.decomp {\n\t\t\texp = decomposeRecursive(form, c, exp)\n\t\t}\n\t\tf.expandedDecomp = exp\n\t}\n\n\t// Phase 1: composition exclusion, mark decomposition.\n\tfor i := range chars {\n\t\tc := &chars[i]\n\t\tf := &c.forms[form]\n\n\t\t// Marks script-specific exclusions and version restricted.\n\t\tf.isOneWay = c.excludeInComp\n\n\t\t// Singletons\n\t\tf.isOneWay = f.isOneWay || len(f.decomp) == 1\n\n\t\t// Non-starter decompositions\n\t\tif len(f.decomp) > 1 {\n\t\t\tchk := c.ccc != 0 || chars[f.decomp[0]].ccc != 0\n\t\t\tf.isOneWay = f.isOneWay || chk\n\t\t}\n\n\t\t// Runes that decompose into more than two runes.\n\t\tf.isOneWay = f.isOneWay || len(f.decomp) > 2\n\n\t\tif form == FCompatibility {\n\t\t\tf.isOneWay = f.isOneWay || hasCompatDecomp(c.codePoint)\n\t\t}\n\n\t\tfor _, r := range f.decomp {\n\t\t\tchars[r].forms[form].inDecomp = true\n\t\t}\n\t}\n\n\t// Phase 2: forward and backward combining.\n\tfor i := range chars {\n\t\tc := &chars[i]\n\t\tf := &c.forms[form]\n\n\t\tif !f.isOneWay && len(f.decomp) == 2 {\n\t\t\tf0 := &chars[f.decomp[0]].forms[form]\n\t\t\tf1 := &chars[f.decomp[1]].forms[form]\n\t\t\tif !f0.isOneWay {\n\t\t\t\tf0.combinesForward = true\n\t\t\t}\n\t\t\tif !f1.isOneWay {\n\t\t\t\tf1.combinesBackward = true\n\t\t\t}\n\t\t}\n\t\tif isHangulWithoutJamoT(rune(i)) {\n\t\t\tf.combinesForward = true\n\t\t}\n\t}\n\n\t// Phase 3: quick check values.\n\tfor i := range chars {\n\t\tc := &chars[i]\n\t\tf := &c.forms[form]\n\n\t\tswitch {\n\t\tcase len(f.decomp) > 0:\n\t\t\tf.quickCheck[MDecomposed] = QCNo\n\t\tcase isHangul(rune(i)):\n\t\t\tf.quickCheck[MDecomposed] = QCNo\n\t\tdefault:\n\t\t\tf.quickCheck[MDecomposed] = QCYes\n\t\t}\n\t\tswitch {\n\t\tcase f.isOneWay:\n\t\t\tf.quickCheck[MComposed] = QCNo\n\t\tcase (i & 0xffff00) == JamoLBase:\n\t\t\tf.quickCheck[MComposed] = QCYes\n\t\t\tif JamoLBase <= i && i < JamoLEnd {\n\t\t\t\tf.combinesForward = true\n\t\t\t}\n\t\t\tif JamoVBase <= i && i < JamoVEnd {\n\t\t\t\tf.quickCheck[MComposed] = QCMaybe\n\t\t\t\tf.combinesBackward = true\n\t\t\t\tf.combinesForward = true\n\t\t\t}\n\t\t\tif JamoTBase <= i && i < JamoTEnd {\n\t\t\t\tf.quickCheck[MComposed] = QCMaybe\n\t\t\t\tf.combinesBackward = true\n\t\t\t}\n\t\tcase !f.combinesBackward:\n\t\t\tf.quickCheck[MComposed] = QCYes\n\t\tdefault:\n\t\t\tf.quickCheck[MComposed] = QCMaybe\n\t\t}\n\t}\n}\n\nfunc computeNonStarterCounts() {\n\t// Phase 4: leading and trailing non-starter count\n\tfor i := range chars {\n\t\tc := &chars[i]\n\n\t\trunes := []rune{rune(i)}\n\t\t// We always use FCompatibility so that the CGJ insertion points do not\n\t\t// change for repeated normalizations with different forms.\n\t\tif exp := c.forms[FCompatibility].expandedDecomp; len(exp) > 0 {\n\t\t\trunes = exp\n\t\t}\n\t\t// We consider runes that combine backwards to be non-starters for the\n\t\t// purpose of Stream-Safe Text Processing.\n\t\tfor _, r := range runes {\n\t\t\tif cr := &chars[r]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc.nLeadingNonStarters++\n\t\t}\n\t\tfor i := len(runes) - 1; i >= 0; i-- {\n\t\t\tif cr := &chars[runes[i]]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc.nTrailingNonStarters++\n\t\t}\n\t\tif c.nTrailingNonStarters > 3 {\n\t\t\tlog.Fatalf(\"%U: Decomposition with more than 3 (%d) trailing modifiers (%U)\", i, c.nTrailingNonStarters, runes)\n\t\t}\n\n\t\tif isHangul(rune(i)) {\n\t\t\tc.nTrailingNonStarters = 2\n\t\t\tif isHangulWithoutJamoT(rune(i)) {\n\t\t\t\tc.nTrailingNonStarters = 1\n\t\t\t}\n\t\t}\n\n\t\tif l, t := c.nLeadingNonStarters, c.nTrailingNonStarters; l > 0 && l != t {\n\t\t\tlog.Fatalf(\"%U: number of leading and trailing non-starters should be equal (%d vs %d)\", i, l, t)\n\t\t}\n\t\tif t := c.nTrailingNonStarters; t > 3 {\n\t\t\tlog.Fatalf(\"%U: number of trailing non-starters is %d > 3\", t)\n\t\t}\n\t}\n}\n\nfunc printBytes(w io.Writer, b []byte, name string) {\n\tfmt.Fprintf(w, \"// %s: %d bytes\\n\", name, len(b))\n\tfmt.Fprintf(w, \"var %s = [...]byte {\", name)\n\tfor i, c := range b {\n\t\tswitch {\n\t\tcase i%64 == 0:\n\t\t\tfmt.Fprintf(w, \"\\n// Bytes %x - %x\\n\", i, i+63)\n\t\tcase i%8 == 0:\n\t\t\tfmt.Fprintf(w, \"\\n\")\n\t\t}\n\t\tfmt.Fprintf(w, \"0x%.2X, \", c)\n\t}\n\tfmt.Fprint(w, \"\\n}\\n\\n\")\n}\n\n// See forminfo.go for format.\nfunc makeEntry(f *FormInfo, c *Char) uint16 {\n\te := uint16(0)\n\tif r := c.codePoint; HangulBase <= r && r < HangulEnd {\n\t\te |= 0x40\n\t}\n\tif f.combinesForward {\n\t\te |= 0x20\n\t}\n\tif f.quickCheck[MDecomposed] == QCNo {\n\t\te |= 0x4\n\t}\n\tswitch f.quickCheck[MComposed] {\n\tcase QCYes:\n\tcase QCNo:\n\t\te |= 0x10\n\tcase QCMaybe:\n\t\te |= 0x18\n\tdefault:\n\t\tlog.Fatalf(\"Illegal quickcheck value %v.\", f.quickCheck[MComposed])\n\t}\n\te |= uint16(c.nTrailingNonStarters)\n\treturn e\n}\n\n// decompSet keeps track of unique decompositions, grouped by whether\n// the decomposition is followed by a trailing and/or leading CCC.\ntype decompSet [7]map[string]bool\n\nconst (\n\tnormalDecomp = iota\n\tfirstMulti\n\tfirstCCC\n\tendMulti\n\tfirstLeadingCCC\n\tfirstCCCZeroExcept\n\tfirstStarterWithNLead\n\tlastDecomp\n)\n\nvar cname = []string{\"firstMulti\", \"firstCCC\", \"endMulti\", \"firstLeadingCCC\", \"firstCCCZeroExcept\", \"firstStarterWithNLead\", \"lastDecomp\"}\n\nfunc makeDecompSet() decompSet {\n\tm := decompSet{}\n\tfor i := range m {\n\t\tm[i] = make(map[string]bool)\n\t}\n\treturn m\n}\nfunc (m *decompSet) insert(key int, s string) {\n\tm[key][s] = true\n}\n\nfunc printCharInfoTables(w io.Writer) int {\n\tmkstr := func(r rune, f *FormInfo) (int, string) {\n\t\td := f.expandedDecomp\n\t\ts := string([]rune(d))\n\t\tif max := 1 << 6; len(s) >= max {\n\t\t\tconst msg = \"%U: too many bytes in decomposition: %d >= %d\"\n\t\t\tlog.Fatalf(msg, r, len(s), max)\n\t\t}\n\t\thead := uint8(len(s))\n\t\tif f.quickCheck[MComposed] != QCYes {\n\t\t\thead |= 0x40\n\t\t}\n\t\tif f.combinesForward {\n\t\t\thead |= 0x80\n\t\t}\n\t\ts = string([]byte{head}) + s\n\n\t\tlccc := ccc(d[0])\n\t\ttccc := ccc(d[len(d)-1])\n\t\tcc := ccc(r)\n\t\tif cc != 0 && lccc == 0 && tccc == 0 {\n\t\t\tlog.Fatalf(\"%U: trailing and leading ccc are 0 for non-zero ccc %d\", r, cc)\n\t\t}\n\t\tif tccc < lccc && lccc != 0 {\n\t\t\tconst msg = \"%U: lccc (%d) must be <= tcc (%d)\"\n\t\t\tlog.Fatalf(msg, r, lccc, tccc)\n\t\t}\n\t\tindex := normalDecomp\n\t\tnTrail := chars[r].nTrailingNonStarters\n\t\tnLead := chars[r].nLeadingNonStarters\n\t\tif tccc > 0 || lccc > 0 || nTrail > 0 {\n\t\t\ttccc <<= 2\n\t\t\ttccc |= nTrail\n\t\t\ts += string([]byte{tccc})\n\t\t\tindex = endMulti\n\t\t\tfor _, r := range d[1:] {\n\t\t\t\tif ccc(r) == 0 {\n\t\t\t\t\tindex = firstCCC\n\t\t\t\t}\n\t\t\t}\n\t\t\tif lccc > 0 || nLead > 0 {\n\t\t\t\ts += string([]byte{lccc})\n\t\t\t\tif index == firstCCC {\n\t\t\t\t\tlog.Fatalf(\"%U: multi-segment decomposition not supported for decompositions with leading CCC != 0\", r)\n\t\t\t\t}\n\t\t\t\tindex = firstLeadingCCC\n\t\t\t}\n\t\t\tif cc != lccc {\n\t\t\t\tif cc != 0 {\n\t\t\t\t\tlog.Fatalf(\"%U: for lccc != ccc, expected ccc to be 0; was %d\", r, cc)\n\t\t\t\t}\n\t\t\t\tindex = firstCCCZeroExcept\n\t\t\t}\n\t\t} else if len(d) > 1 {\n\t\t\tindex = firstMulti\n\t\t}\n\t\treturn index, s\n\t}\n\n\tdecompSet := makeDecompSet()\n\tconst nLeadStr = \"\\x00\\x01\" // 0-byte length and tccc with nTrail.\n\tdecompSet.insert(firstStarterWithNLead, nLeadStr)\n\n\t// Store the uniqued decompositions in a byte buffer,\n\t// preceded by their byte length.\n\tfor _, c := range chars {\n\t\tfor _, f := range c.forms {\n\t\t\tif len(f.expandedDecomp) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif f.combinesBackward {\n\t\t\t\tlog.Fatalf(\"%U: combinesBackward and decompose\", c.codePoint)\n\t\t\t}\n\t\t\tindex, s := mkstr(c.codePoint, &f)\n\t\t\tdecompSet.insert(index, s)\n\t\t}\n\t}\n\n\tdecompositions := bytes.NewBuffer(make([]byte, 0, 10000))\n\tsize := 0\n\tpositionMap := make(map[string]uint16)\n\tdecompositions.WriteString(\"\\000\")\n\tfmt.Fprintln(w, \"const (\")\n\tfor i, m := range decompSet {\n\t\tsa := []string{}\n\t\tfor s := range m {\n\t\t\tsa = append(sa, s)\n\t\t}\n\t\tsort.Strings(sa)\n\t\tfor _, s := range sa {\n\t\t\tp := decompositions.Len()\n\t\t\tdecompositions.WriteString(s)\n\t\t\tpositionMap[s] = uint16(p)\n\t\t}\n\t\tif cname[i] != \"\" {\n\t\t\tfmt.Fprintf(w, \"%s = 0x%X\\n\", cname[i], decompositions.Len())\n\t\t}\n\t}\n\tfmt.Fprintln(w, \"maxDecomp = 0x8000\")\n\tfmt.Fprintln(w, \")\")\n\tb := decompositions.Bytes()\n\tprintBytes(w, b, \"decomps\")\n\tsize += len(b)\n\n\tvarnames := []string{\"nfc\", \"nfkc\"}\n\tfor i := 0; i < FNumberOfFormTypes; i++ {\n\t\ttrie := triegen.NewTrie(varnames[i])\n\n\t\tfor r, c := range chars {\n\t\t\tf := c.forms[i]\n\t\t\td := f.expandedDecomp\n\t\t\tif len(d) != 0 {\n\t\t\t\t_, key := mkstr(c.codePoint, &f)\n\t\t\t\ttrie.Insert(rune(r), uint64(positionMap[key]))\n\t\t\t\tif c.ccc != ccc(d[0]) {\n\t\t\t\t\t// We assume the lead ccc of a decomposition !=0 in this case.\n\t\t\t\t\tif ccc(d[0]) == 0 {\n\t\t\t\t\t\tlog.Fatalf(\"Expected leading CCC to be non-zero; ccc is %d\", c.ccc)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if c.nLeadingNonStarters > 0 && len(f.expandedDecomp) == 0 && c.ccc == 0 && !f.combinesBackward {\n\t\t\t\t// Handle cases where it can't be detected that the nLead should be equal\n\t\t\t\t// to nTrail.\n\t\t\t\ttrie.Insert(c.codePoint, uint64(positionMap[nLeadStr]))\n\t\t\t} else if v := makeEntry(&f, &c)<<8 | uint16(c.ccc); v != 0 {\n\t\t\t\ttrie.Insert(c.codePoint, uint64(0x8000|v))\n\t\t\t}\n\t\t}\n\t\tsz, err := trie.Gen(w, triegen.Compact(&normCompacter{name: varnames[i]}))\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tsize += sz\n\t}\n\treturn size\n}\n\nfunc contains(sa []string, s string) bool {\n\tfor _, a := range sa {\n\t\tif a == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc makeTables() {\n\tw := &bytes.Buffer{}\n\n\tsize := 0\n\tif *tablelist == \"\" {\n\t\treturn\n\t}\n\tlist := strings.Split(*tablelist, \",\")\n\tif *tablelist == \"all\" {\n\t\tlist = []string{\"recomp\", \"info\"}\n\t}\n\n\t// Compute maximum decomposition size.\n\tmax := 0\n\tfor _, c := range chars {\n\t\tif n := len(string(c.forms[FCompatibility].expandedDecomp)); n > max {\n\t\t\tmax = n\n\t\t}\n\t}\n\n\tfmt.Fprintln(w, \"const (\")\n\tfmt.Fprintln(w, \"\\t// Version is the Unicode edition from which the tables are derived.\")\n\tfmt.Fprintf(w, \"\\tVersion = %q\\n\", gen.UnicodeVersion())\n\tfmt.Fprintln(w)\n\tfmt.Fprintln(w, \"\\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\")\n\tfmt.Fprintln(w, \"\\t// may need to write atomically for any Form. Making a destination buffer at\")\n\tfmt.Fprintln(w, \"\\t// least this size ensures that Transform can always make progress and that\")\n\tfmt.Fprintln(w, \"\\t// the user does not need to grow the buffer on an ErrShortDst.\")\n\tfmt.Fprintf(w, \"\\tMaxTransformChunkSize = %d+maxNonStarters*4\\n\", len(string(0x034F))+max)\n\tfmt.Fprintln(w, \")\\n\")\n\n\t// Print the CCC remap table.\n\tsize += len(cccMap)\n\tfmt.Fprintf(w, \"var ccc = [%d]uint8{\", len(cccMap))\n\tfor i := 0; i < len(cccMap); i++ {\n\t\tif i%8 == 0 {\n\t\t\tfmt.Fprintln(w)\n\t\t}\n\t\tfmt.Fprintf(w, \"%3d, \", cccMap[uint8(i)])\n\t}\n\tfmt.Fprintln(w, \"\\n}\\n\")\n\n\tif contains(list, \"info\") {\n\t\tsize += printCharInfoTables(w)\n\t}\n\n\tif contains(list, \"recomp\") {\n\t\t// Note that we use 32 bit keys, instead of 64 bit.\n\t\t// This clips the bits of three entries, but we know\n\t\t// this won't cause a collision. The compiler will catch\n\t\t// any changes made to UnicodeData.txt that introduces\n\t\t// a collision.\n\t\t// Note that the recomposition map for NFC and NFKC\n\t\t// are identical.\n\n\t\t// Recomposition map\n\t\tnrentries := 0\n\t\tfor _, c := range chars {\n\t\t\tf := c.forms[FCanonical]\n\t\t\tif !f.isOneWay && len(f.decomp) > 0 {\n\t\t\t\tnrentries++\n\t\t\t}\n\t\t}\n\t\tsz := nrentries * 8\n\t\tsize += sz\n\t\tfmt.Fprintf(w, \"// recompMap: %d bytes (entries only)\\n\", sz)\n\t\tfmt.Fprintln(w, \"var recompMap = map[uint32]rune{\")\n\t\tfor i, c := range chars {\n\t\t\tf := c.forms[FCanonical]\n\t\t\td := f.decomp\n\t\t\tif !f.isOneWay && len(d) > 0 {\n\t\t\t\tkey := uint32(uint16(d[0]))<<16 + uint32(uint16(d[1]))\n\t\t\t\tfmt.Fprintf(w, \"0x%.8X: 0x%.4X,\\n\", key, i)\n\t\t\t}\n\t\t}\n\t\tfmt.Fprintf(w, \"}\\n\\n\")\n\t}\n\n\tfmt.Fprintf(w, \"// Total size of tables: %dKB (%d bytes)\\n\", (size+512)/1024, size)\n\tgen.WriteVersionedGoFile(\"tables.go\", \"norm\", w.Bytes())\n}\n\nfunc printChars() {\n\tif *verbose {\n\t\tfor _, c := range chars {\n\t\t\tif !c.isValid() || c.state == SMissing {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfmt.Println(c)\n\t\t}\n\t}\n}\n\n// verifyComputed does various consistency tests.\nfunc verifyComputed() {\n\tfor i, c := range chars {\n\t\tfor _, f := range c.forms {\n\t\t\tisNo := (f.quickCheck[MDecomposed] == QCNo)\n\t\t\tif (len(f.decomp) > 0) != isNo && !isHangul(rune(i)) {\n\t\t\t\tlog.Fatalf(\"%U: NF*D QC must be No if rune decomposes\", i)\n\t\t\t}\n\n\t\t\tisMaybe := f.quickCheck[MComposed] == QCMaybe\n\t\t\tif f.combinesBackward != isMaybe {\n\t\t\t\tlog.Fatalf(\"%U: NF*C QC must be Maybe if combinesBackward\", i)\n\t\t\t}\n\t\t\tif len(f.decomp) > 0 && f.combinesForward && isMaybe {\n\t\t\t\tlog.Fatalf(\"%U: NF*C QC must be Yes or No if combinesForward and decomposes\", i)\n\t\t\t}\n\n\t\t\tif len(f.expandedDecomp) != 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif a, b := c.nLeadingNonStarters > 0, (c.ccc > 0 || f.combinesBackward); a != b {\n\t\t\t\t// We accept these runes to be treated differently (it only affects\n\t\t\t\t// segment breaking in iteration, most likely on improper use), but\n\t\t\t\t// reconsider if more characters are added.\n\t\t\t\t// U+FF9E HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;\n\t\t\t\t// U+FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;\n\t\t\t\t// U+3133 HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;\n\t\t\t\t// U+318E HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;\n\t\t\t\t// U+FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;\n\t\t\t\t// U+FFDC HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;\n\t\t\t\tif i != 0xFF9E && i != 0xFF9F && !(0x3133 <= i && i <= 0x318E) && !(0xFFA3 <= i && i <= 0xFFDC) {\n\t\t\t\t\tlog.Fatalf(\"%U: nLead was %v; want %v\", i, a, b)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tnfc := c.forms[FCanonical]\n\t\tnfkc := c.forms[FCompatibility]\n\t\tif nfc.combinesBackward != nfkc.combinesBackward {\n\t\t\tlog.Fatalf(\"%U: Cannot combine combinesBackward\\n\", c.codePoint)\n\t\t}\n\t}\n}\n\n// Use values in DerivedNormalizationProps.txt to compare against the\n// values we computed.\n// DerivedNormalizationProps.txt has form:\n// 00C0..00C5    ; NFD_QC; N # ...\n// 0374          ; NFD_QC; N # ...\n// See http://unicode.org/reports/tr44/ for full explanation\nfunc testDerived() {\n\tf := gen.OpenUCDFile(\"DerivedNormalizationProps.txt\")\n\tdefer f.Close()\n\tp := ucd.New(f)\n\tfor p.Next() {\n\t\tr := p.Rune(0)\n\t\tc := &chars[r]\n\n\t\tvar ftype, mode int\n\t\tqt := p.String(1)\n\t\tswitch qt {\n\t\tcase \"NFC_QC\":\n\t\t\tftype, mode = FCanonical, MComposed\n\t\tcase \"NFD_QC\":\n\t\t\tftype, mode = FCanonical, MDecomposed\n\t\tcase \"NFKC_QC\":\n\t\t\tftype, mode = FCompatibility, MComposed\n\t\tcase \"NFKD_QC\":\n\t\t\tftype, mode = FCompatibility, MDecomposed\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\t\tvar qr QCResult\n\t\tswitch p.String(2) {\n\t\tcase \"Y\":\n\t\t\tqr = QCYes\n\t\tcase \"N\":\n\t\t\tqr = QCNo\n\t\tcase \"M\":\n\t\t\tqr = QCMaybe\n\t\tdefault:\n\t\t\tlog.Fatalf(`Unexpected quick check value \"%s\"`, p.String(2))\n\t\t}\n\t\tif got := c.forms[ftype].quickCheck[mode]; got != qr {\n\t\t\tlog.Printf(\"%U: FAILED %s (was %v need %v)\\n\", r, qt, got, qr)\n\t\t}\n\t\tc.forms[ftype].verified[mode] = true\n\t}\n\tif err := p.Err(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// Any unspecified value must be QCYes. Verify this.\n\tfor i, c := range chars {\n\t\tfor j, fd := range c.forms {\n\t\t\tfor k, qr := range fd.quickCheck {\n\t\t\t\tif !fd.verified[k] && qr != QCYes {\n\t\t\t\t\tm := \"%U: FAIL F:%d M:%d (was %v need Yes) %s\\n\"\n\t\t\t\t\tlog.Printf(m, i, j, k, qr, c.name)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar testHeader = `const (\n\tYes = iota\n\tNo\n\tMaybe\n)\n\ntype formData struct {\n\tqc              uint8\n\tcombinesForward bool\n\tdecomposition   string\n}\n\ntype runeData struct {\n\tr      rune\n\tccc    uint8\n\tnLead  uint8\n\tnTrail uint8\n\tf      [2]formData // 0: canonical; 1: compatibility\n}\n\nfunc f(qc uint8, cf bool, dec string) [2]formData {\n\treturn [2]formData{{qc, cf, dec}, {qc, cf, dec}}\n}\n\nfunc g(qc, qck uint8, cf, cfk bool, d, dk string) [2]formData {\n\treturn [2]formData{{qc, cf, d}, {qck, cfk, dk}}\n}\n\nvar testData = []runeData{\n`\n\nfunc printTestdata() {\n\ttype lastInfo struct {\n\t\tccc    uint8\n\t\tnLead  uint8\n\t\tnTrail uint8\n\t\tf      string\n\t}\n\n\tlast := lastInfo{}\n\tw := &bytes.Buffer{}\n\tfmt.Fprintf(w, testHeader)\n\tfor r, c := range chars {\n\t\tf := c.forms[FCanonical]\n\t\tqc, cf, d := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp)\n\t\tf = c.forms[FCompatibility]\n\t\tqck, cfk, dk := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp)\n\t\ts := \"\"\n\t\tif d == dk && qc == qck && cf == cfk {\n\t\t\ts = fmt.Sprintf(\"f(%s, %v, %q)\", qc, cf, d)\n\t\t} else {\n\t\t\ts = fmt.Sprintf(\"g(%s, %s, %v, %v, %q, %q)\", qc, qck, cf, cfk, d, dk)\n\t\t}\n\t\tcurrent := lastInfo{c.ccc, c.nLeadingNonStarters, c.nTrailingNonStarters, s}\n\t\tif last != current {\n\t\t\tfmt.Fprintf(w, \"\\t{0x%x, %d, %d, %d, %s},\\n\", r, c.origCCC, c.nLeadingNonStarters, c.nTrailingNonStarters, s)\n\t\t\tlast = current\n\t\t}\n\t}\n\tfmt.Fprintln(w, \"}\")\n\tgen.WriteVersionedGoFile(\"data_test.go\", \"norm\", w.Bytes())\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/normalize.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Note: the file data_test.go that is generated should not be checked in.\n//go:generate go run maketables.go triegen.go\n//go:generate go test -tags test\n\n// Package norm contains types and functions for normalizing Unicode strings.\npackage norm // import \"golang.org/x/text/unicode/norm\"\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// A Form denotes a canonical representation of Unicode code points.\n// The Unicode-defined normalization and equivalence forms are:\n//\n//   NFC   Unicode Normalization Form C\n//   NFD   Unicode Normalization Form D\n//   NFKC  Unicode Normalization Form KC\n//   NFKD  Unicode Normalization Form KD\n//\n// For a Form f, this documentation uses the notation f(x) to mean\n// the bytes or string x converted to the given form.\n// A position n in x is called a boundary if conversion to the form can\n// proceed independently on both sides:\n//   f(x) == append(f(x[0:n]), f(x[n:])...)\n//\n// References: http://unicode.org/reports/tr15/ and\n// http://unicode.org/notes/tn5/.\ntype Form int\n\nconst (\n\tNFC Form = iota\n\tNFD\n\tNFKC\n\tNFKD\n)\n\n// Bytes returns f(b). May return b if f(b) = b.\nfunc (f Form) Bytes(b []byte) []byte {\n\tsrc := inputBytes(b)\n\tft := formTable[f]\n\tn, ok := ft.quickSpan(src, 0, len(b), true)\n\tif ok {\n\t\treturn b\n\t}\n\tout := make([]byte, n, len(b))\n\tcopy(out, b[0:n])\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(b), out: out, flushF: appendFlush}\n\treturn doAppendInner(&rb, n)\n}\n\n// String returns f(s).\nfunc (f Form) String(s string) string {\n\tsrc := inputString(s)\n\tft := formTable[f]\n\tn, ok := ft.quickSpan(src, 0, len(s), true)\n\tif ok {\n\t\treturn s\n\t}\n\tout := make([]byte, n, len(s))\n\tcopy(out, s[0:n])\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(s), out: out, flushF: appendFlush}\n\treturn string(doAppendInner(&rb, n))\n}\n\n// IsNormal returns true if b == f(b).\nfunc (f Form) IsNormal(b []byte) bool {\n\tsrc := inputBytes(b)\n\tft := formTable[f]\n\tbp, ok := ft.quickSpan(src, 0, len(b), true)\n\tif ok {\n\t\treturn true\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(b)}\n\trb.setFlusher(nil, cmpNormalBytes)\n\tfor bp < len(b) {\n\t\trb.out = b[bp:]\n\t\tif bp = decomposeSegment(&rb, bp, true); bp < 0 {\n\t\t\treturn false\n\t\t}\n\t\tbp, _ = rb.f.quickSpan(rb.src, bp, len(b), true)\n\t}\n\treturn true\n}\n\nfunc cmpNormalBytes(rb *reorderBuffer) bool {\n\tb := rb.out\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tinfo := rb.rune[i]\n\t\tif int(info.size) > len(b) {\n\t\t\treturn false\n\t\t}\n\t\tp := info.pos\n\t\tpe := p + info.size\n\t\tfor ; p < pe; p++ {\n\t\t\tif b[0] != rb.byte[p] {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tb = b[1:]\n\t\t}\n\t}\n\treturn true\n}\n\n// IsNormalString returns true if s == f(s).\nfunc (f Form) IsNormalString(s string) bool {\n\tsrc := inputString(s)\n\tft := formTable[f]\n\tbp, ok := ft.quickSpan(src, 0, len(s), true)\n\tif ok {\n\t\treturn true\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(s)}\n\trb.setFlusher(nil, func(rb *reorderBuffer) bool {\n\t\tfor i := 0; i < rb.nrune; i++ {\n\t\t\tinfo := rb.rune[i]\n\t\t\tif bp+int(info.size) > len(s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tp := info.pos\n\t\t\tpe := p + info.size\n\t\t\tfor ; p < pe; p++ {\n\t\t\t\tif s[bp] != rb.byte[p] {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tbp++\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\tfor bp < len(s) {\n\t\tif bp = decomposeSegment(&rb, bp, true); bp < 0 {\n\t\t\treturn false\n\t\t}\n\t\tbp, _ = rb.f.quickSpan(rb.src, bp, len(s), true)\n\t}\n\treturn true\n}\n\n// patchTail fixes a case where a rune may be incorrectly normalized\n// if it is followed by illegal continuation bytes. It returns the\n// patched buffer and whether the decomposition is still in progress.\nfunc patchTail(rb *reorderBuffer) bool {\n\tinfo, p := lastRuneStart(&rb.f, rb.out)\n\tif p == -1 || info.size == 0 {\n\t\treturn true\n\t}\n\tend := p + int(info.size)\n\textra := len(rb.out) - end\n\tif extra > 0 {\n\t\t// Potentially allocating memory. However, this only\n\t\t// happens with ill-formed UTF-8.\n\t\tx := make([]byte, 0)\n\t\tx = append(x, rb.out[len(rb.out)-extra:]...)\n\t\trb.out = rb.out[:end]\n\t\tdecomposeToLastBoundary(rb)\n\t\trb.doFlush()\n\t\trb.out = append(rb.out, x...)\n\t\treturn false\n\t}\n\tbuf := rb.out[p:]\n\trb.out = rb.out[:p]\n\tdecomposeToLastBoundary(rb)\n\tif s := rb.ss.next(info); s == ssStarter {\n\t\trb.doFlush()\n\t\trb.ss.first(info)\n\t} else if s == ssOverflow {\n\t\trb.doFlush()\n\t\trb.insertCGJ()\n\t\trb.ss = 0\n\t}\n\trb.insertUnsafe(inputBytes(buf), 0, info)\n\treturn true\n}\n\nfunc appendQuick(rb *reorderBuffer, i int) int {\n\tif rb.nsrc == i {\n\t\treturn i\n\t}\n\tend, _ := rb.f.quickSpan(rb.src, i, rb.nsrc, true)\n\trb.out = rb.src.appendSlice(rb.out, i, end)\n\treturn end\n}\n\n// Append returns f(append(out, b...)).\n// The buffer out must be nil, empty, or equal to f(out).\nfunc (f Form) Append(out []byte, src ...byte) []byte {\n\treturn f.doAppend(out, inputBytes(src), len(src))\n}\n\nfunc (f Form) doAppend(out []byte, src input, n int) []byte {\n\tif n == 0 {\n\t\treturn out\n\t}\n\tft := formTable[f]\n\t// Attempt to do a quickSpan first so we can avoid initializing the reorderBuffer.\n\tif len(out) == 0 {\n\t\tp, _ := ft.quickSpan(src, 0, n, true)\n\t\tout = src.appendSlice(out, 0, p)\n\t\tif p == n {\n\t\t\treturn out\n\t\t}\n\t\trb := reorderBuffer{f: *ft, src: src, nsrc: n, out: out, flushF: appendFlush}\n\t\treturn doAppendInner(&rb, p)\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: n}\n\treturn doAppend(&rb, out, 0)\n}\n\nfunc doAppend(rb *reorderBuffer, out []byte, p int) []byte {\n\trb.setFlusher(out, appendFlush)\n\tsrc, n := rb.src, rb.nsrc\n\tdoMerge := len(out) > 0\n\tif q := src.skipContinuationBytes(p); q > p {\n\t\t// Move leading non-starters to destination.\n\t\trb.out = src.appendSlice(rb.out, p, q)\n\t\tp = q\n\t\tdoMerge = patchTail(rb)\n\t}\n\tfd := &rb.f\n\tif doMerge {\n\t\tvar info Properties\n\t\tif p < n {\n\t\t\tinfo = fd.info(src, p)\n\t\t\tif !info.BoundaryBefore() || info.nLeadingNonStarters() > 0 {\n\t\t\t\tif p == 0 {\n\t\t\t\t\tdecomposeToLastBoundary(rb)\n\t\t\t\t}\n\t\t\t\tp = decomposeSegment(rb, p, true)\n\t\t\t}\n\t\t}\n\t\tif info.size == 0 {\n\t\t\trb.doFlush()\n\t\t\t// Append incomplete UTF-8 encoding.\n\t\t\treturn src.appendSlice(rb.out, p, n)\n\t\t}\n\t\tif rb.nrune > 0 {\n\t\t\treturn doAppendInner(rb, p)\n\t\t}\n\t}\n\tp = appendQuick(rb, p)\n\treturn doAppendInner(rb, p)\n}\n\nfunc doAppendInner(rb *reorderBuffer, p int) []byte {\n\tfor n := rb.nsrc; p < n; {\n\t\tp = decomposeSegment(rb, p, true)\n\t\tp = appendQuick(rb, p)\n\t}\n\treturn rb.out\n}\n\n// AppendString returns f(append(out, []byte(s))).\n// The buffer out must be nil, empty, or equal to f(out).\nfunc (f Form) AppendString(out []byte, src string) []byte {\n\treturn f.doAppend(out, inputString(src), len(src))\n}\n\n// QuickSpan returns a boundary n such that b[0:n] == f(b[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) QuickSpan(b []byte) int {\n\tn, _ := formTable[f].quickSpan(inputBytes(b), 0, len(b), true)\n\treturn n\n}\n\n// Span implements transform.SpanningTransformer. It returns a boundary n such\n// that b[0:n] == f(b[0:n]). It is not guaranteed to return the largest such n.\nfunc (f Form) Span(b []byte, atEOF bool) (n int, err error) {\n\tn, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), atEOF)\n\tif n < len(b) {\n\t\tif !ok {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t}\n\t}\n\treturn n, err\n}\n\n// SpanString returns a boundary n such that s[0:n] == f(s[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) SpanString(s string, atEOF bool) (n int, err error) {\n\tn, ok := formTable[f].quickSpan(inputString(s), 0, len(s), atEOF)\n\tif n < len(s) {\n\t\tif !ok {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t}\n\t}\n\treturn n, err\n}\n\n// quickSpan returns a boundary n such that src[0:n] == f(src[0:n]) and\n// whether any non-normalized parts were found. If atEOF is false, n will\n// not point past the last segment if this segment might be become\n// non-normalized by appending other runes.\nfunc (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) {\n\tvar lastCC uint8\n\tss := streamSafe(0)\n\tlastSegStart := i\n\tfor n = end; i < n; {\n\t\tif j := src.skipASCII(i, n); i != j {\n\t\t\ti = j\n\t\t\tlastSegStart = i - 1\n\t\t\tlastCC = 0\n\t\t\tss = 0\n\t\t\tcontinue\n\t\t}\n\t\tinfo := f.info(src, i)\n\t\tif info.size == 0 {\n\t\t\tif atEOF {\n\t\t\t\t// include incomplete runes\n\t\t\t\treturn n, true\n\t\t\t}\n\t\t\treturn lastSegStart, true\n\t\t}\n\t\t// This block needs to be before the next, because it is possible to\n\t\t// have an overflow for runes that are starters (e.g. with U+FF9E).\n\t\tswitch ss.next(info) {\n\t\tcase ssStarter:\n\t\t\tlastSegStart = i\n\t\tcase ssOverflow:\n\t\t\treturn lastSegStart, false\n\t\tcase ssSuccess:\n\t\t\tif lastCC > info.ccc {\n\t\t\t\treturn lastSegStart, false\n\t\t\t}\n\t\t}\n\t\tif f.composing {\n\t\t\tif !info.isYesC() {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif !info.isYesD() {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tlastCC = info.ccc\n\t\ti += int(info.size)\n\t}\n\tif i == n {\n\t\tif !atEOF {\n\t\t\tn = lastSegStart\n\t\t}\n\t\treturn n, true\n\t}\n\treturn lastSegStart, false\n}\n\n// QuickSpanString returns a boundary n such that s[0:n] == f(s[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) QuickSpanString(s string) int {\n\tn, _ := formTable[f].quickSpan(inputString(s), 0, len(s), true)\n\treturn n\n}\n\n// FirstBoundary returns the position i of the first boundary in b\n// or -1 if b contains no boundary.\nfunc (f Form) FirstBoundary(b []byte) int {\n\treturn f.firstBoundary(inputBytes(b), len(b))\n}\n\nfunc (f Form) firstBoundary(src input, nsrc int) int {\n\ti := src.skipContinuationBytes(0)\n\tif i >= nsrc {\n\t\treturn -1\n\t}\n\tfd := formTable[f]\n\tss := streamSafe(0)\n\t// We should call ss.first here, but we can't as the first rune is\n\t// skipped already. This means FirstBoundary can't really determine\n\t// CGJ insertion points correctly. Luckily it doesn't have to.\n\tfor {\n\t\tinfo := fd.info(src, i)\n\t\tif info.size == 0 {\n\t\t\treturn -1\n\t\t}\n\t\tif s := ss.next(info); s != ssSuccess {\n\t\t\treturn i\n\t\t}\n\t\ti += int(info.size)\n\t\tif i >= nsrc {\n\t\t\tif !info.BoundaryAfter() && !ss.isMax() {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn nsrc\n\t\t}\n\t}\n}\n\n// FirstBoundaryInString returns the position i of the first boundary in s\n// or -1 if s contains no boundary.\nfunc (f Form) FirstBoundaryInString(s string) int {\n\treturn f.firstBoundary(inputString(s), len(s))\n}\n\n// NextBoundary reports the index of the boundary between the first and next\n// segment in b or -1 if atEOF is false and there are not enough bytes to\n// determine this boundary.\nfunc (f Form) NextBoundary(b []byte, atEOF bool) int {\n\treturn f.nextBoundary(inputBytes(b), len(b), atEOF)\n}\n\n// NextBoundaryInString reports the index of the boundary between the first and\n// next segment in b or -1 if atEOF is false and there are not enough bytes to\n// determine this boundary.\nfunc (f Form) NextBoundaryInString(s string, atEOF bool) int {\n\treturn f.nextBoundary(inputString(s), len(s), atEOF)\n}\n\nfunc (f Form) nextBoundary(src input, nsrc int, atEOF bool) int {\n\tif nsrc == 0 {\n\t\tif atEOF {\n\t\t\treturn 0\n\t\t}\n\t\treturn -1\n\t}\n\tfd := formTable[f]\n\tinfo := fd.info(src, 0)\n\tif info.size == 0 {\n\t\tif atEOF {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\t}\n\tss := streamSafe(0)\n\tss.first(info)\n\n\tfor i := int(info.size); i < nsrc; i += int(info.size) {\n\t\tinfo = fd.info(src, i)\n\t\tif info.size == 0 {\n\t\t\tif atEOF {\n\t\t\t\treturn i\n\t\t\t}\n\t\t\treturn -1\n\t\t}\n\t\t// TODO: Using streamSafe to determine the boundary isn't the same as\n\t\t// using BoundaryBefore. Determine which should be used.\n\t\tif s := ss.next(info); s != ssSuccess {\n\t\t\treturn i\n\t\t}\n\t}\n\tif !atEOF && !info.BoundaryAfter() && !ss.isMax() {\n\t\treturn -1\n\t}\n\treturn nsrc\n}\n\n// LastBoundary returns the position i of the last boundary in b\n// or -1 if b contains no boundary.\nfunc (f Form) LastBoundary(b []byte) int {\n\treturn lastBoundary(formTable[f], b)\n}\n\nfunc lastBoundary(fd *formInfo, b []byte) int {\n\ti := len(b)\n\tinfo, p := lastRuneStart(fd, b)\n\tif p == -1 {\n\t\treturn -1\n\t}\n\tif info.size == 0 { // ends with incomplete rune\n\t\tif p == 0 { // starts with incomplete rune\n\t\t\treturn -1\n\t\t}\n\t\ti = p\n\t\tinfo, p = lastRuneStart(fd, b[:i])\n\t\tif p == -1 { // incomplete UTF-8 encoding or non-starter bytes without a starter\n\t\t\treturn i\n\t\t}\n\t}\n\tif p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8\n\t\treturn i\n\t}\n\tif info.BoundaryAfter() {\n\t\treturn i\n\t}\n\tss := streamSafe(0)\n\tv := ss.backwards(info)\n\tfor i = p; i >= 0 && v != ssStarter; i = p {\n\t\tinfo, p = lastRuneStart(fd, b[:i])\n\t\tif v = ss.backwards(info); v == ssOverflow {\n\t\t\tbreak\n\t\t}\n\t\tif p+int(info.size) != i {\n\t\t\tif p == -1 { // no boundary found\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn i // boundary after an illegal UTF-8 encoding\n\t\t}\n\t}\n\treturn i\n}\n\n// decomposeSegment scans the first segment in src into rb. It inserts 0x034f\n// (Grapheme Joiner) when it encounters a sequence of more than 30 non-starters\n// and returns the number of bytes consumed from src or iShortDst or iShortSrc.\nfunc decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int {\n\t// Force one character to be consumed.\n\tinfo := rb.f.info(rb.src, sp)\n\tif info.size == 0 {\n\t\treturn 0\n\t}\n\tif s := rb.ss.next(info); s == ssStarter {\n\t\t// TODO: this could be removed if we don't support merging.\n\t\tif rb.nrune > 0 {\n\t\t\tgoto end\n\t\t}\n\t} else if s == ssOverflow {\n\t\trb.insertCGJ()\n\t\tgoto end\n\t}\n\tif err := rb.insertFlush(rb.src, sp, info); err != iSuccess {\n\t\treturn int(err)\n\t}\n\tfor {\n\t\tsp += int(info.size)\n\t\tif sp >= rb.nsrc {\n\t\t\tif !atEOF && !info.BoundaryAfter() {\n\t\t\t\treturn int(iShortSrc)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tinfo = rb.f.info(rb.src, sp)\n\t\tif info.size == 0 {\n\t\t\tif !atEOF {\n\t\t\t\treturn int(iShortSrc)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif s := rb.ss.next(info); s == ssStarter {\n\t\t\tbreak\n\t\t} else if s == ssOverflow {\n\t\t\trb.insertCGJ()\n\t\t\tbreak\n\t\t}\n\t\tif err := rb.insertFlush(rb.src, sp, info); err != iSuccess {\n\t\t\treturn int(err)\n\t\t}\n\t}\nend:\n\tif !rb.doFlush() {\n\t\treturn int(iShortDst)\n\t}\n\treturn sp\n}\n\n// lastRuneStart returns the runeInfo and position of the last\n// rune in buf or the zero runeInfo and -1 if no rune was found.\nfunc lastRuneStart(fd *formInfo, buf []byte) (Properties, int) {\n\tp := len(buf) - 1\n\tfor ; p >= 0 && !utf8.RuneStart(buf[p]); p-- {\n\t}\n\tif p < 0 {\n\t\treturn Properties{}, -1\n\t}\n\treturn fd.info(inputBytes(buf), p), p\n}\n\n// decomposeToLastBoundary finds an open segment at the end of the buffer\n// and scans it into rb. Returns the buffer minus the last segment.\nfunc decomposeToLastBoundary(rb *reorderBuffer) {\n\tfd := &rb.f\n\tinfo, i := lastRuneStart(fd, rb.out)\n\tif int(info.size) != len(rb.out)-i {\n\t\t// illegal trailing continuation bytes\n\t\treturn\n\t}\n\tif info.BoundaryAfter() {\n\t\treturn\n\t}\n\tvar add [maxNonStarters + 1]Properties // stores runeInfo in reverse order\n\tpadd := 0\n\tss := streamSafe(0)\n\tp := len(rb.out)\n\tfor {\n\t\tadd[padd] = info\n\t\tv := ss.backwards(info)\n\t\tif v == ssOverflow {\n\t\t\t// Note that if we have an overflow, it the string we are appending to\n\t\t\t// is not correctly normalized. In this case the behavior is undefined.\n\t\t\tbreak\n\t\t}\n\t\tpadd++\n\t\tp -= int(info.size)\n\t\tif v == ssStarter || p < 0 {\n\t\t\tbreak\n\t\t}\n\t\tinfo, i = lastRuneStart(fd, rb.out[:p])\n\t\tif int(info.size) != p-i {\n\t\t\tbreak\n\t\t}\n\t}\n\trb.ss = ss\n\t// Copy bytes for insertion as we may need to overwrite rb.out.\n\tvar buf [maxBufferSize * utf8.UTFMax]byte\n\tcp := buf[:copy(buf[:], rb.out[p:])]\n\trb.out = rb.out[:p]\n\tfor padd--; padd >= 0; padd-- {\n\t\tinfo = add[padd]\n\t\trb.insertUnsafe(inputBytes(cp), 0, info)\n\t\tcp = cp[info.size:]\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/readwriter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"io\"\n\ntype normWriter struct {\n\trb  reorderBuffer\n\tw   io.Writer\n\tbuf []byte\n}\n\n// Write implements the standard write interface.  If the last characters are\n// not at a normalization boundary, the bytes will be buffered for the next\n// write. The remaining bytes will be written on close.\nfunc (w *normWriter) Write(data []byte) (n int, err error) {\n\t// Process data in pieces to keep w.buf size bounded.\n\tconst chunk = 4000\n\n\tfor len(data) > 0 {\n\t\t// Normalize into w.buf.\n\t\tm := len(data)\n\t\tif m > chunk {\n\t\t\tm = chunk\n\t\t}\n\t\tw.rb.src = inputBytes(data[:m])\n\t\tw.rb.nsrc = m\n\t\tw.buf = doAppend(&w.rb, w.buf, 0)\n\t\tdata = data[m:]\n\t\tn += m\n\n\t\t// Write out complete prefix, save remainder.\n\t\t// Note that lastBoundary looks back at most 31 runes.\n\t\ti := lastBoundary(&w.rb.f, w.buf)\n\t\tif i == -1 {\n\t\t\ti = 0\n\t\t}\n\t\tif i > 0 {\n\t\t\tif _, err = w.w.Write(w.buf[:i]); err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbn := copy(w.buf, w.buf[i:])\n\t\t\tw.buf = w.buf[:bn]\n\t\t}\n\t}\n\treturn n, err\n}\n\n// Close forces data that remains in the buffer to be written.\nfunc (w *normWriter) Close() error {\n\tif len(w.buf) > 0 {\n\t\t_, err := w.w.Write(w.buf)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Writer returns a new writer that implements Write(b)\n// by writing f(b) to w.  The returned writer may use an\n// an internal buffer to maintain state across Write calls.\n// Calling its Close method writes any buffered data to w.\nfunc (f Form) Writer(w io.Writer) io.WriteCloser {\n\twr := &normWriter{rb: reorderBuffer{}, w: w}\n\twr.rb.init(f, nil)\n\treturn wr\n}\n\ntype normReader struct {\n\trb           reorderBuffer\n\tr            io.Reader\n\tinbuf        []byte\n\toutbuf       []byte\n\tbufStart     int\n\tlastBoundary int\n\terr          error\n}\n\n// Read implements the standard read interface.\nfunc (r *normReader) Read(p []byte) (int, error) {\n\tfor {\n\t\tif r.lastBoundary-r.bufStart > 0 {\n\t\t\tn := copy(p, r.outbuf[r.bufStart:r.lastBoundary])\n\t\t\tr.bufStart += n\n\t\t\tif r.lastBoundary-r.bufStart > 0 {\n\t\t\t\treturn n, nil\n\t\t\t}\n\t\t\treturn n, r.err\n\t\t}\n\t\tif r.err != nil {\n\t\t\treturn 0, r.err\n\t\t}\n\t\toutn := copy(r.outbuf, r.outbuf[r.lastBoundary:])\n\t\tr.outbuf = r.outbuf[0:outn]\n\t\tr.bufStart = 0\n\n\t\tn, err := r.r.Read(r.inbuf)\n\t\tr.rb.src = inputBytes(r.inbuf[0:n])\n\t\tr.rb.nsrc, r.err = n, err\n\t\tif n > 0 {\n\t\t\tr.outbuf = doAppend(&r.rb, r.outbuf, 0)\n\t\t}\n\t\tif err == io.EOF {\n\t\t\tr.lastBoundary = len(r.outbuf)\n\t\t} else {\n\t\t\tr.lastBoundary = lastBoundary(&r.rb.f, r.outbuf)\n\t\t\tif r.lastBoundary == -1 {\n\t\t\t\tr.lastBoundary = 0\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Reader returns a new reader that implements Read\n// by reading data from r and returning f(data).\nfunc (f Form) Reader(r io.Reader) io.Reader {\n\tconst chunk = 4000\n\tbuf := make([]byte, chunk)\n\trr := &normReader{rb: reorderBuffer{}, r: r, inbuf: buf}\n\trr.rb.init(f, buf)\n\treturn rr\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// +build go1.10\n\npackage norm\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"10.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [55]uint8{\n\t0, 1, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20,\n\t21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36,\n\t84, 91, 103, 107, 118, 122, 129, 130,\n\t132, 202, 214, 216, 218, 220, 222, 224,\n\t226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x186D\n\tfirstCCC              = 0x2C9E\n\tendMulti              = 0x2F60\n\tfirstLeadingCCC       = 0x49AE\n\tfirstCCCZeroExcept    = 0x4A78\n\tfirstStarterWithNLead = 0x4A9F\n\tlastDecomp            = 0x4AA1\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19105 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,\n\t0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,\n\t0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,\n\t0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,\n\t0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,\n\t0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,\n\t0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,\n\t0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,\n\t0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,\n\t0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,\n\t0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,\n\t0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,\n\t0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,\n\t0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,\n\t0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,\n\t0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,\n\t0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,\n\t0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,\n\t0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90,\n\t0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7,\n\t0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42,\n\t0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2,\n\t0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8,\n\t0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB,\n\t0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8,\n\t0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42,\n\t0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3,\n\t0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8,\n\t0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42,\n\t0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81,\n\t0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42,\n\t0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89,\n\t0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9,\n\t0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42,\n\t0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE,\n\t0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA,\n\t0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42,\n\t0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA,\n\t0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42,\n\t0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9,\n\t0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA,\n\t0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42,\n\t0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81,\n\t0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB,\n\t0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90,\n\t0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43,\n\t0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43,\n\t0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43,\n\t0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43,\n\t0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43,\n\t0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43,\n\t0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43,\n\t// Bytes 340 - 37f\n\t0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43,\n\t0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43,\n\t0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43,\n\t0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43,\n\t0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43,\n\t0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43,\n\t0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43,\n\t0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43,\n\t// Bytes 380 - 3bf\n\t0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43,\n\t0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43,\n\t0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43,\n\t0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43,\n\t0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43,\n\t0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43,\n\t0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43,\n\t0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,\n\t// Bytes 3c0 - 3ff\n\t0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,\n\t0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,\n\t0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,\n\t0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,\n\t0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,\n\t0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,\n\t0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,\n\t0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,\n\t// Bytes 400 - 43f\n\t0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,\n\t0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,\n\t0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,\n\t0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,\n\t0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43,\n\t0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,\n\t0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,\n\t0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,\n\t// Bytes 440 - 47f\n\t0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,\n\t0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,\n\t0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,\n\t0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,\n\t0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43,\n\t0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,\n\t0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,\n\t0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,\n\t// Bytes 480 - 4bf\n\t0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,\n\t0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,\n\t0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,\n\t0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,\n\t0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43,\n\t0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,\n\t0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,\n\t0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,\n\t// Bytes 4c0 - 4ff\n\t0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,\n\t0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,\n\t0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,\n\t0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,\n\t0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43,\n\t0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,\n\t0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,\n\t0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,\n\t// Bytes 500 - 53f\n\t0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,\n\t0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,\n\t0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,\n\t0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,\n\t0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43,\n\t0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,\n\t0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,\n\t0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,\n\t// Bytes 540 - 57f\n\t0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,\n\t0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,\n\t0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,\n\t0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,\n\t0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43,\n\t0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,\n\t0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,\n\t0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,\n\t// Bytes 580 - 5bf\n\t0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,\n\t0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,\n\t0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,\n\t0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,\n\t0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43,\n\t0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,\n\t0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,\n\t0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,\n\t// Bytes 5c0 - 5ff\n\t0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,\n\t0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,\n\t0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,\n\t0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,\n\t0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43,\n\t0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,\n\t0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,\n\t0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,\n\t// Bytes 600 - 63f\n\t0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,\n\t0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,\n\t0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,\n\t0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,\n\t0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43,\n\t0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,\n\t0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,\n\t0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,\n\t// Bytes 640 - 67f\n\t0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,\n\t0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,\n\t0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,\n\t0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,\n\t0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43,\n\t0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,\n\t0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,\n\t0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,\n\t// Bytes 680 - 6bf\n\t0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,\n\t0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,\n\t0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,\n\t0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,\n\t0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43,\n\t0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,\n\t0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,\n\t0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,\n\t// Bytes 6c0 - 6ff\n\t0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,\n\t0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,\n\t0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,\n\t0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,\n\t0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43,\n\t0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,\n\t0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,\n\t0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,\n\t// Bytes 700 - 73f\n\t0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,\n\t0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,\n\t0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,\n\t0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,\n\t0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43,\n\t0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,\n\t0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,\n\t0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,\n\t// Bytes 740 - 77f\n\t0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,\n\t0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,\n\t0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,\n\t0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,\n\t0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43,\n\t0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,\n\t0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,\n\t0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,\n\t// Bytes 780 - 7bf\n\t0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,\n\t0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,\n\t0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,\n\t0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,\n\t0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43,\n\t0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,\n\t0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,\n\t0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,\n\t// Bytes 7c0 - 7ff\n\t0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,\n\t0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,\n\t0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,\n\t0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,\n\t0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43,\n\t0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,\n\t0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,\n\t0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,\n\t// Bytes 800 - 83f\n\t0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,\n\t0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,\n\t0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,\n\t0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,\n\t0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43,\n\t0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,\n\t0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,\n\t0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,\n\t// Bytes 840 - 87f\n\t0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,\n\t0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,\n\t0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,\n\t0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,\n\t0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43,\n\t0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,\n\t0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,\n\t0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,\n\t// Bytes 880 - 8bf\n\t0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,\n\t0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,\n\t0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,\n\t0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,\n\t0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43,\n\t0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,\n\t0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,\n\t0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,\n\t// Bytes 8c0 - 8ff\n\t0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,\n\t0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,\n\t0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,\n\t0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,\n\t0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43,\n\t0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,\n\t0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,\n\t0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,\n\t// Bytes 900 - 93f\n\t0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,\n\t0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,\n\t0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,\n\t0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,\n\t0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43,\n\t0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,\n\t0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,\n\t0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,\n\t// Bytes 940 - 97f\n\t0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,\n\t0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,\n\t0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,\n\t0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,\n\t0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43,\n\t0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,\n\t0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,\n\t0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,\n\t// Bytes 980 - 9bf\n\t0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,\n\t0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,\n\t0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,\n\t0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,\n\t0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43,\n\t0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,\n\t0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,\n\t0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,\n\t// Bytes 9c0 - 9ff\n\t0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,\n\t0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,\n\t0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,\n\t0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,\n\t0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43,\n\t0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,\n\t0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,\n\t0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,\n\t// Bytes a00 - a3f\n\t0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,\n\t0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,\n\t0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,\n\t0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,\n\t0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43,\n\t0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,\n\t0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,\n\t0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,\n\t// Bytes a40 - a7f\n\t0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,\n\t0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,\n\t0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,\n\t0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,\n\t0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43,\n\t0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,\n\t0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,\n\t0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,\n\t// Bytes a80 - abf\n\t0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,\n\t0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,\n\t0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,\n\t0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,\n\t0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43,\n\t0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,\n\t0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,\n\t0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,\n\t// Bytes ac0 - aff\n\t0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,\n\t0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,\n\t0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,\n\t0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,\n\t0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43,\n\t0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,\n\t0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,\n\t0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,\n\t// Bytes b00 - b3f\n\t0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,\n\t0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,\n\t0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,\n\t0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,\n\t0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43,\n\t0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,\n\t0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,\n\t0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,\n\t// Bytes b40 - b7f\n\t0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,\n\t0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,\n\t0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,\n\t0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,\n\t0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43,\n\t0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,\n\t0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,\n\t0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,\n\t// Bytes b80 - bbf\n\t0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,\n\t0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,\n\t0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,\n\t0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,\n\t0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43,\n\t0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,\n\t0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,\n\t0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,\n\t// Bytes bc0 - bff\n\t0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,\n\t0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,\n\t0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,\n\t0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,\n\t0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43,\n\t0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,\n\t0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,\n\t0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,\n\t// Bytes c00 - c3f\n\t0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,\n\t0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,\n\t0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,\n\t0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,\n\t0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43,\n\t0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,\n\t0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,\n\t0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,\n\t// Bytes c40 - c7f\n\t0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,\n\t0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,\n\t0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,\n\t0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,\n\t0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43,\n\t0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,\n\t0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,\n\t0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,\n\t// Bytes c80 - cbf\n\t0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,\n\t0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,\n\t0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,\n\t0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,\n\t0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43,\n\t0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,\n\t0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,\n\t0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,\n\t// Bytes cc0 - cff\n\t0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,\n\t0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,\n\t0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,\n\t0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,\n\t0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43,\n\t0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,\n\t0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,\n\t0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,\n\t// Bytes d00 - d3f\n\t0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,\n\t0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,\n\t0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,\n\t0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,\n\t0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43,\n\t0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,\n\t0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,\n\t0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,\n\t// Bytes d40 - d7f\n\t0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,\n\t0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,\n\t0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,\n\t0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,\n\t0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43,\n\t0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,\n\t0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,\n\t0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,\n\t// Bytes d80 - dbf\n\t0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,\n\t0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,\n\t0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,\n\t0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,\n\t0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43,\n\t0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,\n\t0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,\n\t0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,\n\t// Bytes dc0 - dff\n\t0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,\n\t0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,\n\t0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,\n\t0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,\n\t0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43,\n\t0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,\n\t0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,\n\t0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,\n\t// Bytes e00 - e3f\n\t0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,\n\t0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,\n\t0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,\n\t0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,\n\t0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43,\n\t0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,\n\t0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,\n\t0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,\n\t// Bytes e40 - e7f\n\t0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,\n\t0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,\n\t0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,\n\t0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,\n\t0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43,\n\t0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,\n\t0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,\n\t0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,\n\t// Bytes e80 - ebf\n\t0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,\n\t0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,\n\t0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,\n\t0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,\n\t0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43,\n\t0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,\n\t0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,\n\t0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,\n\t// Bytes ec0 - eff\n\t0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,\n\t0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,\n\t0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,\n\t0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,\n\t0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43,\n\t0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,\n\t0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,\n\t0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,\n\t// Bytes f00 - f3f\n\t0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,\n\t0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,\n\t0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,\n\t0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,\n\t0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43,\n\t0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,\n\t0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,\n\t0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,\n\t// Bytes f40 - f7f\n\t0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,\n\t0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,\n\t0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,\n\t0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,\n\t0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43,\n\t0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,\n\t0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,\n\t0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,\n\t// Bytes f80 - fbf\n\t0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,\n\t0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,\n\t0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,\n\t0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,\n\t0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43,\n\t0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,\n\t0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,\n\t0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,\n\t// Bytes fc0 - fff\n\t0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,\n\t0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,\n\t0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,\n\t0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,\n\t0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43,\n\t0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,\n\t0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,\n\t0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,\n\t// Bytes 1000 - 103f\n\t0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,\n\t0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,\n\t0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,\n\t0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,\n\t0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43,\n\t0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,\n\t0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,\n\t0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,\n\t// Bytes 1040 - 107f\n\t0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,\n\t0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,\n\t0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,\n\t0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,\n\t0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43,\n\t0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,\n\t0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,\n\t0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,\n\t// Bytes 1080 - 10bf\n\t0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,\n\t0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,\n\t0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,\n\t0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,\n\t0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43,\n\t0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,\n\t0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,\n\t0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,\n\t// Bytes 10c0 - 10ff\n\t0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,\n\t0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,\n\t0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,\n\t0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,\n\t0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43,\n\t0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,\n\t0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,\n\t0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,\n\t// Bytes 1100 - 113f\n\t0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,\n\t0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,\n\t0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,\n\t0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,\n\t0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43,\n\t0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,\n\t0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,\n\t0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,\n\t// Bytes 1140 - 117f\n\t0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,\n\t0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,\n\t0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,\n\t0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,\n\t0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43,\n\t0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,\n\t0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,\n\t0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,\n\t// Bytes 1180 - 11bf\n\t0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,\n\t0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,\n\t0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,\n\t0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,\n\t0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43,\n\t0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,\n\t0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,\n\t0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,\n\t// Bytes 11c0 - 11ff\n\t0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,\n\t0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,\n\t0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,\n\t0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,\n\t0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43,\n\t0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,\n\t0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,\n\t0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,\n\t// Bytes 1200 - 123f\n\t0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,\n\t0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,\n\t0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,\n\t0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,\n\t0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43,\n\t0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,\n\t0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,\n\t0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,\n\t// Bytes 1240 - 127f\n\t0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,\n\t0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,\n\t0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,\n\t0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,\n\t0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43,\n\t0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,\n\t0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,\n\t0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,\n\t// Bytes 1280 - 12bf\n\t0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,\n\t0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,\n\t0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,\n\t0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,\n\t0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43,\n\t0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,\n\t0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,\n\t0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,\n\t// Bytes 12c0 - 12ff\n\t0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,\n\t0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,\n\t0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,\n\t0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,\n\t0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43,\n\t0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,\n\t0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,\n\t0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,\n\t// Bytes 1300 - 133f\n\t0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,\n\t0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,\n\t0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,\n\t0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,\n\t0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43,\n\t0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,\n\t0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,\n\t0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,\n\t// Bytes 1340 - 137f\n\t0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,\n\t0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,\n\t0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,\n\t0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,\n\t0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43,\n\t0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,\n\t0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,\n\t0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,\n\t// Bytes 1380 - 13bf\n\t0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,\n\t0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,\n\t0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,\n\t0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,\n\t0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43,\n\t0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,\n\t0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,\n\t0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,\n\t// Bytes 13c0 - 13ff\n\t0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,\n\t0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,\n\t0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,\n\t0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,\n\t0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43,\n\t0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,\n\t0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,\n\t0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,\n\t// Bytes 1400 - 143f\n\t0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,\n\t0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,\n\t0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,\n\t0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,\n\t0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43,\n\t0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,\n\t0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,\n\t0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,\n\t// Bytes 1440 - 147f\n\t0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43,\n\t0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43,\n\t0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43,\n\t0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43,\n\t0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43,\n\t0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43,\n\t0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43,\n\t0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43,\n\t// Bytes 1480 - 14bf\n\t0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43,\n\t0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43,\n\t0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43,\n\t0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43,\n\t0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43,\n\t0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43,\n\t0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43,\n\t0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43,\n\t// Bytes 14c0 - 14ff\n\t0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43,\n\t0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43,\n\t0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43,\n\t0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43,\n\t0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43,\n\t0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43,\n\t0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43,\n\t0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43,\n\t// Bytes 1500 - 153f\n\t0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43,\n\t0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43,\n\t0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43,\n\t0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43,\n\t0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43,\n\t0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43,\n\t0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43,\n\t0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43,\n\t// Bytes 1540 - 157f\n\t0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43,\n\t0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43,\n\t0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43,\n\t0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43,\n\t0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43,\n\t0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43,\n\t0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43,\n\t0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43,\n\t// Bytes 1580 - 15bf\n\t0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43,\n\t0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43,\n\t0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43,\n\t0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43,\n\t0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43,\n\t0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43,\n\t0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43,\n\t0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43,\n\t// Bytes 15c0 - 15ff\n\t0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43,\n\t0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43,\n\t0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43,\n\t0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43,\n\t0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43,\n\t0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43,\n\t0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43,\n\t0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43,\n\t// Bytes 1600 - 163f\n\t0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43,\n\t0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43,\n\t0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43,\n\t0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43,\n\t0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43,\n\t0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43,\n\t0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43,\n\t0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43,\n\t// Bytes 1640 - 167f\n\t0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44,\n\t0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94,\n\t0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0,\n\t0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA,\n\t0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0,\n\t0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44,\n\t0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93,\n\t0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0,\n\t// Bytes 1680 - 16bf\n\t0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88,\n\t0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1,\n\t0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44,\n\t0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86,\n\t0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0,\n\t0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44,\n\t// Bytes 16c0 - 16ff\n\t0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80,\n\t0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0,\n\t0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93,\n\t0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44,\n\t0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A,\n\t0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0,\n\t0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA,\n\t// Bytes 1700 - 173f\n\t0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3,\n\t0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44,\n\t0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE,\n\t0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0,\n\t0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB,\n\t0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4,\n\t0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44,\n\t0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2,\n\t// Bytes 1740 - 177f\n\t0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5,\n\t0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44,\n\t0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89,\n\t0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0,\n\t0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A,\n\t0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5,\n\t// Bytes 1780 - 17bf\n\t0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44,\n\t0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2,\n\t0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0,\n\t0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A,\n\t0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6,\n\t0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44,\n\t0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93,\n\t0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0,\n\t// Bytes 17c0 - 17ff\n\t0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6,\n\t0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44,\n\t0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5,\n\t0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0,\n\t0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92,\n\t0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7,\n\t0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44,\n\t// Bytes 1800 - 183f\n\t0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2,\n\t0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0,\n\t0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92,\n\t0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8,\n\t0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44,\n\t0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85,\n\t0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0,\n\t0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A,\n\t// Bytes 1840 - 187f\n\t0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9,\n\t0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44,\n\t0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84,\n\t0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0,\n\t0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92,\n\t0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21,\n\t0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30,\n\t0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31,\n\t0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31,\n\t0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42,\n\t0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39,\n\t0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32,\n\t0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42,\n\t0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35,\n\t0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42,\n\t0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31,\n\t0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33,\n\t0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42,\n\t0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39,\n\t0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34,\n\t0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42,\n\t0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34,\n\t0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42,\n\t0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C,\n\t0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37,\n\t0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42,\n\t0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D,\n\t0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41,\n\t0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42,\n\t// Bytes 1940 - 197f\n\t0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A,\n\t0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48,\n\t0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42,\n\t0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A,\n\t0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49,\n\t0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42,\n\t0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A,\n\t0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t// Bytes 1a80 - 1abf\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t// Bytes 1ac0 - 1aff\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t// Bytes 1b00 - 1b3f\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t// Bytes 1b40 - 1b7f\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t// Bytes 1b80 - 1bbf\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t// Bytes 1c80 - 1cbf\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t// Bytes 1cc0 - 1cff\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t// Bytes 1d00 - 1d3f\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t// Bytes 1d40 - 1d7f\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t// Bytes 1d80 - 1dbf\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t// Bytes 1dc0 - 1dff\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t// Bytes 1e00 - 1e3f\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t// Bytes 1e40 - 1e7f\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1e80 - 1ebf\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t// Bytes 1ec0 - 1eff\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t// Bytes 1f00 - 1f3f\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t// Bytes 1f40 - 1f7f\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t// Bytes 1f80 - 1fbf\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t// Bytes 1fc0 - 1fff\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t// Bytes 2000 - 203f\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t// Bytes 2040 - 207f\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t// Bytes 2080 - 20bf\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t// Bytes 20c0 - 20ff\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t// Bytes 2100 - 213f\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t// Bytes 2140 - 217f\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t// Bytes 2180 - 21bf\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t// Bytes 21c0 - 21ff\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2200 - 223f\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t// Bytes 2240 - 227f\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t// Bytes 2280 - 22bf\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t// Bytes 22c0 - 22ff\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t// Bytes 2300 - 233f\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t// Bytes 2340 - 237f\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t// Bytes 2380 - 23bf\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t// Bytes 23c0 - 23ff\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t// Bytes 2400 - 243f\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t// Bytes 2440 - 247f\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t// Bytes 2480 - 24bf\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t// Bytes 24c0 - 24ff\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2500 - 253f\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t// Bytes 2540 - 257f\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t// Bytes 2580 - 25bf\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t// Bytes 25c0 - 25ff\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t// Bytes 2640 - 267f\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t// Bytes 2680 - 26bf\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t// Bytes 26c0 - 26ff\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD,\n\t// Bytes 2700 - 273f\n\t0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90,\n\t0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46,\n\t0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72,\n\t0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3,\n\t0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,\n\t// Bytes 2740 - 277f\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29,\n\t// Bytes 2780 - 27bf\n\t0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48,\n\t// Bytes 27c0 - 27ff\n\t0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87,\n\t0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7,\n\t0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8,\n\t0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2,\n\t// Bytes 2800 - 283f\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3,\n\t0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B,\n\t// Bytes 2840 - 287f\n\t0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C,\n\t0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95,\n\t// Bytes 2880 - 28bf\n\t0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6,\n\t0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3,\n\t0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9,\n\t0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A,\n\t0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3,\n\t0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3,\n\t// Bytes 2940 - 297f\n\t0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF,\n\t0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82,\n\t// Bytes 2980 - 29bf\n\t0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82,\n\t0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2a40 - 2a7f\n\t0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4,\n\t0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9,\n\t// Bytes 2b00 - 2b3f\n\t0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83,\n\t0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3,\n\t// Bytes 2bc0 - 2bff\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83,\n\t0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,\n\t0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88,\n\t// Bytes 2c40 - 2c7f\n\t0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9,\n\t// Bytes 2c80 - 2cbf\n\t0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84,\n\t0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9,\n\t0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2cc0 - 2cff\n\t0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0,\n\t0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2d00 - 2d3f\n\t0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0,\n\t0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1,\n\t0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1,\n\t0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t// Bytes 2d40 - 2d7f\n\t0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0,\n\t// Bytes 2d80 - 2dbf\n\t0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01,\n\t0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84,\n\t0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0,\n\t0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D,\n\t0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0,\n\t0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01,\n\t0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92,\n\t0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,\n\t// Bytes 2dc0 - 2dff\n\t0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96,\n\t0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0,\n\t0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01,\n\t0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0,\n\t0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44,\n\t0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC,\n\t0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9,\n\t// Bytes 2e00 - 2e3f\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e40 - 2e7f\n\t0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01,\n\t0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e80 - 2ebf\n\t0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01,\n\t0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4,\n\t0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 2ec0 - 2eff\n\t0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83,\n\t0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80,\n\t0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82,\n\t0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3,\n\t0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01,\n\t0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01,\n\t0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC,\n\t0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03,\n\t0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81,\n\t0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41,\n\t// Bytes 2f80 - 2fbf\n\t0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9,\n\t0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03,\n\t0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC,\n\t0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03,\n\t// Bytes 2fc0 - 2fff\n\t0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87,\n\t0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03,\n\t0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83,\n\t0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45,\n\t0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9,\n\t// Bytes 3000 - 303f\n\t0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03,\n\t0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45,\n\t0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9,\n\t0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC,\n\t0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03,\n\t0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87,\n\t// Bytes 3040 - 307f\n\t0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9,\n\t0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC,\n\t0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49,\n\t0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9,\n\t0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC,\n\t// Bytes 3080 - 30bf\n\t0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03,\n\t0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87,\n\t0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03,\n\t0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82,\n\t0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B,\n\t// Bytes 30c0 - 30ff\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03,\n\t0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9,\n\t0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03,\n\t// Bytes 3100 - 313f\n\t0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83,\n\t0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03,\n\t0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81,\n\t0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F,\n\t0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9,\n\t// Bytes 3140 - 317f\n\t0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03,\n\t0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87,\n\t0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52,\n\t0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC,\n\t0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82,\n\t// Bytes 3180 - 31bf\n\t0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53,\n\t0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9,\n\t0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC,\n\t// Bytes 31c0 - 31ff\n\t0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03,\n\t0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A,\n\t0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03,\n\t0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56,\n\t// Bytes 3200 - 323f\n\t0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC,\n\t0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03,\n\t0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88,\n\t0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58,\n\t0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9,\n\t0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC,\n\t0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03,\n\t// Bytes 3240 - 327f\n\t0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84,\n\t0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59,\n\t0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9,\n\t0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC,\n\t0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9,\n\t// Bytes 3280 - 32bf\n\t0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC,\n\t0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03,\n\t0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61,\n\t0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5,\n\t0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC,\n\t0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81,\n\t// Bytes 32c0 - 32ff\n\t0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63,\n\t0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65,\n\t0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9,\n\t0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC,\n\t// Bytes 3300 - 333f\n\t0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03,\n\t0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89,\n\t0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9,\n\t0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81,\n\t0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67,\n\t// Bytes 3340 - 337f\n\t0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9,\n\t0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87,\n\t0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC,\n\t0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3380 - 33bf\n\t0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81,\n\t0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69,\n\t0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9,\n\t0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC,\n\t0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91,\n\t0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69,\n\t0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5,\n\t// Bytes 33c0 - 33ff\n\t0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03,\n\t0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9,\n\t0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81,\n\t// Bytes 3400 - 343f\n\t0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9,\n\t0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC,\n\t0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03,\n\t0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E,\n\t0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC,\n\t// Bytes 3440 - 347f\n\t0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03,\n\t0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B,\n\t0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9,\n\t0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC,\n\t0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03,\n\t0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72,\n\t// Bytes 3480 - 34bf\n\t0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC,\n\t0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03,\n\t0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74,\n\t0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC,\n\t0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03,\n\t// Bytes 34c0 - 34ff\n\t0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1,\n\t0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75,\n\t0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9,\n\t0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC,\n\t0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03,\n\t0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75,\n\t0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5,\n\t// Bytes 3500 - 353f\n\t0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC,\n\t0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83,\n\t0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77,\n\t0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9,\n\t0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC,\n\t0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03,\n\t0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3,\n\t// Bytes 3540 - 357f\n\t0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78,\n\t0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9,\n\t0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC,\n\t0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03,\n\t0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87,\n\t0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79,\n\t0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9,\n\t0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC,\n\t// Bytes 3580 - 35bf\n\t0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A,\n\t0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80,\n\t0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04,\n\t0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86,\n\t0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84,\n\t0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04,\n\t// Bytes 35c0 - 35ff\n\t0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6,\n\t0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81,\n\t0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04,\n\t0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92,\n\t0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85,\n\t// Bytes 3600 - 363f\n\t0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F,\n\t// Bytes 3640 - 367f\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04,\n\t// Bytes 3680 - 36bf\n\t0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85,\n\t0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7,\n\t0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82,\n\t// Bytes 36c0 - 36ff\n\t0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81,\n\t0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85,\n\t0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04,\n\t0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92,\n\t// Bytes 3700 - 373f\n\t0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81,\n\t0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3740 - 377f\n\t0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84,\n\t0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04,\n\t0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A,\n\t0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04,\n\t0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B,\n\t// Bytes 3780 - 37bf\n\t0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6,\n\t// Bytes 37c0 - 37ff\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8,\n\t0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04,\n\t0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83,\n\t0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3800 - 383f\n\t0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4,\n\t0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F,\n\t0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88,\n\t// Bytes 3840 - 387f\n\t0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04,\n\t0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94,\n\t0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04,\n\t0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92,\n\t0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94,\n\t0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89,\n\t0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA,\n\t0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05,\n\t0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7,\n\t0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC,\n\t// Bytes 3900 - 393f\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7,\n\t0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3,\n\t0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,\n\t0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05,\n\t0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53,\n\t0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC,\n\t0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3,\n\t0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88,\n\t// Bytes 39c0 - 39ff\n\t0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83,\n\t0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA,\n\t0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,\n\t// Bytes 3b00 - 3b3f\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC,\n\t0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83,\n\t// Bytes 3b80 - 3bbf\n\t0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05,\n\t0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE,\n\t0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82,\n\t0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3c40 - 3c7f\n\t0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t// Bytes 3c80 - 3cbf\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2,\n\t// Bytes 3cc0 - 3cff\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05,\n\t0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t// Bytes 3d00 - 3d3f\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3d40 - 3d7f\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t// Bytes 3d80 - 3dbf\n\t0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t// Bytes 3dc0 - 3dff\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t// Bytes 3e00 - 3e3f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3e40 - 3e7f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t// Bytes 3e80 - 3ebf\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t// Bytes 3ec0 - 3eff\n\t0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85,\n\t0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11,\n\t// Bytes 3f00 - 3f3f\n\t0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f40 - 3f7f\n\t0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f80 - 3fbf\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D,\n\t// Bytes 3fc0 - 3fff\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4000 - 403f\n\t0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4040 - 407f\n\t0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4080 - 40bf\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 40c0 - 40ff\n\t0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t// Bytes 4100 - 413f\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t// Bytes 4140 - 417f\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD,\n\t// Bytes 4180 - 41bf\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t// Bytes 41c0 - 41ff\n\t0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t// Bytes 4200 - 423f\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82,\n\t// Bytes 4240 - 427f\n\t0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0,\n\t0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82,\n\t0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2,\n\t0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43,\n\t0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84,\n\t0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20,\n\t0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9,\n\t0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC,\n\t// Bytes 4280 - 42bf\n\t0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43,\n\t0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94,\n\t0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20,\n\t0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5,\n\t0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD,\n\t0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43,\n\t0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D,\n\t0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20,\n\t// Bytes 42c0 - 42ff\n\t0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D,\n\t0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9,\n\t0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43,\n\t0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82,\n\t0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE,\n\t0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9,\n\t// Bytes 4300 - 433f\n\t0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,\n\t0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9,\n\t0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC,\n\t// Bytes 4340 - 437f\n\t0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9,\n\t0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7,\n\t0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7,\n\t// Bytes 4380 - 43bf\n\t0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7,\n\t0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41,\n\t// Bytes 43c0 - 43ff\n\t0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49,\n\t0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7,\n\t0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6,\n\t// Bytes 4400 - 443f\n\t0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31,\n\t0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8,\n\t0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9,\n\t0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8,\n\t0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9,\n\t0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65,\n\t0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9,\n\t// Bytes 4440 - 447f\n\t0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9,\n\t0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75,\n\t0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9,\n\t0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9,\n\t0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9,\n\t0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB,\n\t0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t// Bytes 4480 - 44bf\n\t0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82,\n\t0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45,\n\t0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9,\n\t0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91,\n\t// Bytes 44c0 - 44ff\n\t0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72,\n\t0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45,\n\t0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20,\n\t0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB,\n\t0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6,\n\t0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6,\n\t// Bytes 4500 - 453f\n\t0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1,\n\t// Bytes 4540 - 457f\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97,\n\t// Bytes 4580 - 45bf\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3,\n\t// Bytes 45c0 - 45ff\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85,\n\t0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD,\n\t0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49,\n\t// Bytes 4600 - 463f\n\t0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,\n\t0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85,\n\t0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t// Bytes 4640 - 467f\n\t0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86,\n\t0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t// Bytes 4680 - 46bf\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE,\n\t0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC,\n\t0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83,\n\t0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A,\n\t0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43,\n\t0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9,\n\t0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83,\n\t// Bytes 46c0 - 46ff\n\t0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F,\n\t0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9,\n\t0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC,\n\t0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83,\n\t0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8,\n\t0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53,\n\t0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9,\n\t// Bytes 4700 - 473f\n\t0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC,\n\t0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83,\n\t0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B,\n\t0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61,\n\t0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9,\n\t0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC,\n\t0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82,\n\t// Bytes 4740 - 477f\n\t0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65,\n\t0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5,\n\t0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83,\n\t0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84,\n\t0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F,\n\t0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD,\n\t0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,\n\t// Bytes 4780 - 47bf\n\t0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C,\n\t0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75,\n\t0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9,\n\t0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC,\n\t0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC,\n\t// Bytes 47c0 - 47ff\n\t0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE,\n\t// Bytes 4800 - 483f\n\t0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE,\n\t0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9,\n\t0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9,\n\t// Bytes 4840 - 487f\n\t0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE,\n\t0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF,\n\t0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF,\n\t0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC,\n\t// Bytes 4880 - 48bf\n\t0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t// Bytes 48c0 - 48ff\n\t0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t// Bytes 4900 - 493f\n\t0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t// Bytes 4940 - 497f\n\t0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t// Bytes 4980 - 49bf\n\t0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC,\n\t0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32,\n\t0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85,\n\t// Bytes 49c0 - 49ff\n\t0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43,\n\t// Bytes 4a00 - 4a3f\n\t0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01,\n\t// Bytes 4a40 - 4a7f\n\t0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01,\n\t0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01,\n\t0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32,\n\t0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3,\n\t// Bytes 4a80 - 4abf\n\t0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1,\n\t0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00,\n\t0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10442 bytes (10.20 KiB). Checksum: 4ba400a9d8208e03.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 45:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 45\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 47 blocks, 3008 entries, 6016 bytes\n// The third block is the zero block.\nvar nfcValues = [3008]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35a1,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b,\n\t0x2c6: 0xa000, 0x2c7: 0x3709,\n\t0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3733, 0x302: 0x37b7,\n\t0x310: 0x370f, 0x311: 0x3793,\n\t0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd,\n\t0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf,\n\t0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed,\n\t0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805,\n\t0x338: 0x3787, 0x339: 0x380b,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812d,\n\t0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,\n\t0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132,\n\t0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d,\n\t0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132,\n\t0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132,\n\t0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a,\n\t0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f,\n\t0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116,\n\t0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c,\n\t0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x812d,\n\t0x3b0: 0x811e,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xa000,\n\t0x3c6: 0x2d26, 0x3c7: 0xa000, 0x3c8: 0x2d2e, 0x3c9: 0xa000, 0x3ca: 0x2d36, 0x3cb: 0xa000,\n\t0x3cc: 0x2d3e, 0x3cd: 0xa000, 0x3ce: 0x2d46, 0x3d1: 0xa000,\n\t0x3d2: 0x2d4e,\n\t0x3f4: 0x8102, 0x3f5: 0x9900,\n\t0x3fa: 0xa000, 0x3fb: 0x2d56,\n\t0x3fc: 0xa000, 0x3fd: 0x2d5e, 0x3fe: 0xa000, 0x3ff: 0xa000,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x8132, 0x401: 0x8132, 0x402: 0x812d, 0x403: 0x8132, 0x404: 0x8132, 0x405: 0x8132,\n\t0x406: 0x8132, 0x407: 0x8132, 0x408: 0x8132, 0x409: 0x8132, 0x40a: 0x812d, 0x40b: 0x8132,\n\t0x40c: 0x8132, 0x40d: 0x8135, 0x40e: 0x812a, 0x40f: 0x812d, 0x410: 0x8129, 0x411: 0x8132,\n\t0x412: 0x8132, 0x413: 0x8132, 0x414: 0x8132, 0x415: 0x8132, 0x416: 0x8132, 0x417: 0x8132,\n\t0x418: 0x8132, 0x419: 0x8132, 0x41a: 0x8132, 0x41b: 0x8132, 0x41c: 0x8132, 0x41d: 0x8132,\n\t0x41e: 0x8132, 0x41f: 0x8132, 0x420: 0x8132, 0x421: 0x8132, 0x422: 0x8132, 0x423: 0x8132,\n\t0x424: 0x8132, 0x425: 0x8132, 0x426: 0x8132, 0x427: 0x8132, 0x428: 0x8132, 0x429: 0x8132,\n\t0x42a: 0x8132, 0x42b: 0x8132, 0x42c: 0x8132, 0x42d: 0x8132, 0x42e: 0x8132, 0x42f: 0x8132,\n\t0x430: 0x8132, 0x431: 0x8132, 0x432: 0x8132, 0x433: 0x8132, 0x434: 0x8132, 0x435: 0x8132,\n\t0x436: 0x8133, 0x437: 0x8131, 0x438: 0x8131, 0x439: 0x812d, 0x43b: 0x8132,\n\t0x43c: 0x8134, 0x43d: 0x812d, 0x43e: 0x8132, 0x43f: 0x812d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x2f97, 0x441: 0x32a3, 0x442: 0x2fa1, 0x443: 0x32ad, 0x444: 0x2fa6, 0x445: 0x32b2,\n\t0x446: 0x2fab, 0x447: 0x32b7, 0x448: 0x38cc, 0x449: 0x3a5b, 0x44a: 0x2fc4, 0x44b: 0x32d0,\n\t0x44c: 0x2fce, 0x44d: 0x32da, 0x44e: 0x2fdd, 0x44f: 0x32e9, 0x450: 0x2fd3, 0x451: 0x32df,\n\t0x452: 0x2fd8, 0x453: 0x32e4, 0x454: 0x38ef, 0x455: 0x3a7e, 0x456: 0x38f6, 0x457: 0x3a85,\n\t0x458: 0x3019, 0x459: 0x3325, 0x45a: 0x301e, 0x45b: 0x332a, 0x45c: 0x3904, 0x45d: 0x3a93,\n\t0x45e: 0x3023, 0x45f: 0x332f, 0x460: 0x3032, 0x461: 0x333e, 0x462: 0x3050, 0x463: 0x335c,\n\t0x464: 0x305f, 0x465: 0x336b, 0x466: 0x3055, 0x467: 0x3361, 0x468: 0x3064, 0x469: 0x3370,\n\t0x46a: 0x3069, 0x46b: 0x3375, 0x46c: 0x30af, 0x46d: 0x33bb, 0x46e: 0x390b, 0x46f: 0x3a9a,\n\t0x470: 0x30b9, 0x471: 0x33ca, 0x472: 0x30c3, 0x473: 0x33d4, 0x474: 0x30cd, 0x475: 0x33de,\n\t0x476: 0x46c4, 0x477: 0x4755, 0x478: 0x3912, 0x479: 0x3aa1, 0x47a: 0x30e6, 0x47b: 0x33f7,\n\t0x47c: 0x30e1, 0x47d: 0x33f2, 0x47e: 0x30eb, 0x47f: 0x33fc,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x30f0, 0x481: 0x3401, 0x482: 0x30f5, 0x483: 0x3406, 0x484: 0x3109, 0x485: 0x341a,\n\t0x486: 0x3113, 0x487: 0x3424, 0x488: 0x3122, 0x489: 0x3433, 0x48a: 0x311d, 0x48b: 0x342e,\n\t0x48c: 0x3935, 0x48d: 0x3ac4, 0x48e: 0x3943, 0x48f: 0x3ad2, 0x490: 0x394a, 0x491: 0x3ad9,\n\t0x492: 0x3951, 0x493: 0x3ae0, 0x494: 0x314f, 0x495: 0x3460, 0x496: 0x3154, 0x497: 0x3465,\n\t0x498: 0x315e, 0x499: 0x346f, 0x49a: 0x46f1, 0x49b: 0x4782, 0x49c: 0x3997, 0x49d: 0x3b26,\n\t0x49e: 0x3177, 0x49f: 0x3488, 0x4a0: 0x3181, 0x4a1: 0x3492, 0x4a2: 0x4700, 0x4a3: 0x4791,\n\t0x4a4: 0x399e, 0x4a5: 0x3b2d, 0x4a6: 0x39a5, 0x4a7: 0x3b34, 0x4a8: 0x39ac, 0x4a9: 0x3b3b,\n\t0x4aa: 0x3190, 0x4ab: 0x34a1, 0x4ac: 0x319a, 0x4ad: 0x34b0, 0x4ae: 0x31ae, 0x4af: 0x34c4,\n\t0x4b0: 0x31a9, 0x4b1: 0x34bf, 0x4b2: 0x31ea, 0x4b3: 0x3500, 0x4b4: 0x31f9, 0x4b5: 0x350f,\n\t0x4b6: 0x31f4, 0x4b7: 0x350a, 0x4b8: 0x39b3, 0x4b9: 0x3b42, 0x4ba: 0x39ba, 0x4bb: 0x3b49,\n\t0x4bc: 0x31fe, 0x4bd: 0x3514, 0x4be: 0x3203, 0x4bf: 0x3519,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x3208, 0x4c1: 0x351e, 0x4c2: 0x320d, 0x4c3: 0x3523, 0x4c4: 0x321c, 0x4c5: 0x3532,\n\t0x4c6: 0x3217, 0x4c7: 0x352d, 0x4c8: 0x3221, 0x4c9: 0x353c, 0x4ca: 0x3226, 0x4cb: 0x3541,\n\t0x4cc: 0x322b, 0x4cd: 0x3546, 0x4ce: 0x3249, 0x4cf: 0x3564, 0x4d0: 0x3262, 0x4d1: 0x3582,\n\t0x4d2: 0x3271, 0x4d3: 0x3591, 0x4d4: 0x3276, 0x4d5: 0x3596, 0x4d6: 0x337a, 0x4d7: 0x34a6,\n\t0x4d8: 0x3537, 0x4d9: 0x3573, 0x4db: 0x35d1,\n\t0x4e0: 0x46a1, 0x4e1: 0x4732, 0x4e2: 0x2f83, 0x4e3: 0x328f,\n\t0x4e4: 0x3878, 0x4e5: 0x3a07, 0x4e6: 0x3871, 0x4e7: 0x3a00, 0x4e8: 0x3886, 0x4e9: 0x3a15,\n\t0x4ea: 0x387f, 0x4eb: 0x3a0e, 0x4ec: 0x38be, 0x4ed: 0x3a4d, 0x4ee: 0x3894, 0x4ef: 0x3a23,\n\t0x4f0: 0x388d, 0x4f1: 0x3a1c, 0x4f2: 0x38a2, 0x4f3: 0x3a31, 0x4f4: 0x389b, 0x4f5: 0x3a2a,\n\t0x4f6: 0x38c5, 0x4f7: 0x3a54, 0x4f8: 0x46b5, 0x4f9: 0x4746, 0x4fa: 0x3000, 0x4fb: 0x330c,\n\t0x4fc: 0x2fec, 0x4fd: 0x32f8, 0x4fe: 0x38da, 0x4ff: 0x3a69,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x38d3, 0x501: 0x3a62, 0x502: 0x38e8, 0x503: 0x3a77, 0x504: 0x38e1, 0x505: 0x3a70,\n\t0x506: 0x38fd, 0x507: 0x3a8c, 0x508: 0x3091, 0x509: 0x339d, 0x50a: 0x30a5, 0x50b: 0x33b1,\n\t0x50c: 0x46e7, 0x50d: 0x4778, 0x50e: 0x3136, 0x50f: 0x3447, 0x510: 0x3920, 0x511: 0x3aaf,\n\t0x512: 0x3919, 0x513: 0x3aa8, 0x514: 0x392e, 0x515: 0x3abd, 0x516: 0x3927, 0x517: 0x3ab6,\n\t0x518: 0x3989, 0x519: 0x3b18, 0x51a: 0x396d, 0x51b: 0x3afc, 0x51c: 0x3966, 0x51d: 0x3af5,\n\t0x51e: 0x397b, 0x51f: 0x3b0a, 0x520: 0x3974, 0x521: 0x3b03, 0x522: 0x3982, 0x523: 0x3b11,\n\t0x524: 0x31e5, 0x525: 0x34fb, 0x526: 0x31c7, 0x527: 0x34dd, 0x528: 0x39e4, 0x529: 0x3b73,\n\t0x52a: 0x39dd, 0x52b: 0x3b6c, 0x52c: 0x39f2, 0x52d: 0x3b81, 0x52e: 0x39eb, 0x52f: 0x3b7a,\n\t0x530: 0x39f9, 0x531: 0x3b88, 0x532: 0x3230, 0x533: 0x354b, 0x534: 0x3258, 0x535: 0x3578,\n\t0x536: 0x3253, 0x537: 0x356e, 0x538: 0x323f, 0x539: 0x355a,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x4804, 0x541: 0x480a, 0x542: 0x491e, 0x543: 0x4936, 0x544: 0x4926, 0x545: 0x493e,\n\t0x546: 0x492e, 0x547: 0x4946, 0x548: 0x47aa, 0x549: 0x47b0, 0x54a: 0x488e, 0x54b: 0x48a6,\n\t0x54c: 0x4896, 0x54d: 0x48ae, 0x54e: 0x489e, 0x54f: 0x48b6, 0x550: 0x4816, 0x551: 0x481c,\n\t0x552: 0x3db8, 0x553: 0x3dc8, 0x554: 0x3dc0, 0x555: 0x3dd0,\n\t0x558: 0x47b6, 0x559: 0x47bc, 0x55a: 0x3ce8, 0x55b: 0x3cf8, 0x55c: 0x3cf0, 0x55d: 0x3d00,\n\t0x560: 0x482e, 0x561: 0x4834, 0x562: 0x494e, 0x563: 0x4966,\n\t0x564: 0x4956, 0x565: 0x496e, 0x566: 0x495e, 0x567: 0x4976, 0x568: 0x47c2, 0x569: 0x47c8,\n\t0x56a: 0x48be, 0x56b: 0x48d6, 0x56c: 0x48c6, 0x56d: 0x48de, 0x56e: 0x48ce, 0x56f: 0x48e6,\n\t0x570: 0x4846, 0x571: 0x484c, 0x572: 0x3e18, 0x573: 0x3e30, 0x574: 0x3e20, 0x575: 0x3e38,\n\t0x576: 0x3e28, 0x577: 0x3e40, 0x578: 0x47ce, 0x579: 0x47d4, 0x57a: 0x3d18, 0x57b: 0x3d30,\n\t0x57c: 0x3d20, 0x57d: 0x3d38, 0x57e: 0x3d28, 0x57f: 0x3d40,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x4852, 0x581: 0x4858, 0x582: 0x3e48, 0x583: 0x3e58, 0x584: 0x3e50, 0x585: 0x3e60,\n\t0x588: 0x47da, 0x589: 0x47e0, 0x58a: 0x3d48, 0x58b: 0x3d58,\n\t0x58c: 0x3d50, 0x58d: 0x3d60, 0x590: 0x4864, 0x591: 0x486a,\n\t0x592: 0x3e80, 0x593: 0x3e98, 0x594: 0x3e88, 0x595: 0x3ea0, 0x596: 0x3e90, 0x597: 0x3ea8,\n\t0x599: 0x47e6, 0x59b: 0x3d68, 0x59d: 0x3d70,\n\t0x59f: 0x3d78, 0x5a0: 0x487c, 0x5a1: 0x4882, 0x5a2: 0x497e, 0x5a3: 0x4996,\n\t0x5a4: 0x4986, 0x5a5: 0x499e, 0x5a6: 0x498e, 0x5a7: 0x49a6, 0x5a8: 0x47ec, 0x5a9: 0x47f2,\n\t0x5aa: 0x48ee, 0x5ab: 0x4906, 0x5ac: 0x48f6, 0x5ad: 0x490e, 0x5ae: 0x48fe, 0x5af: 0x4916,\n\t0x5b0: 0x47f8, 0x5b1: 0x431e, 0x5b2: 0x3691, 0x5b3: 0x4324, 0x5b4: 0x4822, 0x5b5: 0x432a,\n\t0x5b6: 0x36a3, 0x5b7: 0x4330, 0x5b8: 0x36c1, 0x5b9: 0x4336, 0x5ba: 0x36d9, 0x5bb: 0x433c,\n\t0x5bc: 0x4870, 0x5bd: 0x4342,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3da0, 0x5c1: 0x3da8, 0x5c2: 0x4184, 0x5c3: 0x41a2, 0x5c4: 0x418e, 0x5c5: 0x41ac,\n\t0x5c6: 0x4198, 0x5c7: 0x41b6, 0x5c8: 0x3cd8, 0x5c9: 0x3ce0, 0x5ca: 0x40d0, 0x5cb: 0x40ee,\n\t0x5cc: 0x40da, 0x5cd: 0x40f8, 0x5ce: 0x40e4, 0x5cf: 0x4102, 0x5d0: 0x3de8, 0x5d1: 0x3df0,\n\t0x5d2: 0x41c0, 0x5d3: 0x41de, 0x5d4: 0x41ca, 0x5d5: 0x41e8, 0x5d6: 0x41d4, 0x5d7: 0x41f2,\n\t0x5d8: 0x3d08, 0x5d9: 0x3d10, 0x5da: 0x410c, 0x5db: 0x412a, 0x5dc: 0x4116, 0x5dd: 0x4134,\n\t0x5de: 0x4120, 0x5df: 0x413e, 0x5e0: 0x3ec0, 0x5e1: 0x3ec8, 0x5e2: 0x41fc, 0x5e3: 0x421a,\n\t0x5e4: 0x4206, 0x5e5: 0x4224, 0x5e6: 0x4210, 0x5e7: 0x422e, 0x5e8: 0x3d80, 0x5e9: 0x3d88,\n\t0x5ea: 0x4148, 0x5eb: 0x4166, 0x5ec: 0x4152, 0x5ed: 0x4170, 0x5ee: 0x415c, 0x5ef: 0x417a,\n\t0x5f0: 0x3685, 0x5f1: 0x367f, 0x5f2: 0x3d90, 0x5f3: 0x368b, 0x5f4: 0x3d98,\n\t0x5f6: 0x4810, 0x5f7: 0x3db0, 0x5f8: 0x35f5, 0x5f9: 0x35ef, 0x5fa: 0x35e3, 0x5fb: 0x42ee,\n\t0x5fc: 0x35fb, 0x5fd: 0x8100, 0x5fe: 0x01d3, 0x5ff: 0xa100,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x8100, 0x601: 0x35a7, 0x602: 0x3dd8, 0x603: 0x369d, 0x604: 0x3de0,\n\t0x606: 0x483a, 0x607: 0x3df8, 0x608: 0x3601, 0x609: 0x42f4, 0x60a: 0x360d, 0x60b: 0x42fa,\n\t0x60c: 0x3619, 0x60d: 0x3b8f, 0x60e: 0x3b96, 0x60f: 0x3b9d, 0x610: 0x36b5, 0x611: 0x36af,\n\t0x612: 0x3e00, 0x613: 0x44e4, 0x616: 0x36bb, 0x617: 0x3e10,\n\t0x618: 0x3631, 0x619: 0x362b, 0x61a: 0x361f, 0x61b: 0x4300, 0x61d: 0x3ba4,\n\t0x61e: 0x3bab, 0x61f: 0x3bb2, 0x620: 0x36eb, 0x621: 0x36e5, 0x622: 0x3e68, 0x623: 0x44ec,\n\t0x624: 0x36cd, 0x625: 0x36d3, 0x626: 0x36f1, 0x627: 0x3e78, 0x628: 0x3661, 0x629: 0x365b,\n\t0x62a: 0x364f, 0x62b: 0x430c, 0x62c: 0x3649, 0x62d: 0x359b, 0x62e: 0x42e8, 0x62f: 0x0081,\n\t0x632: 0x3eb0, 0x633: 0x36f7, 0x634: 0x3eb8,\n\t0x636: 0x4888, 0x637: 0x3ed0, 0x638: 0x363d, 0x639: 0x4306, 0x63a: 0x366d, 0x63b: 0x4318,\n\t0x63c: 0x3679, 0x63d: 0x4256, 0x63e: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x641: 0x3c06, 0x643: 0xa000, 0x644: 0x3c0d, 0x645: 0xa000,\n\t0x647: 0x3c14, 0x648: 0xa000, 0x649: 0x3c1b,\n\t0x64d: 0xa000,\n\t0x660: 0x2f65, 0x661: 0xa000, 0x662: 0x3c29,\n\t0x664: 0xa000, 0x665: 0xa000,\n\t0x66d: 0x3c22, 0x66e: 0x2f60, 0x66f: 0x2f6a,\n\t0x670: 0x3c30, 0x671: 0x3c37, 0x672: 0xa000, 0x673: 0xa000, 0x674: 0x3c3e, 0x675: 0x3c45,\n\t0x676: 0xa000, 0x677: 0xa000, 0x678: 0x3c4c, 0x679: 0x3c53, 0x67a: 0xa000, 0x67b: 0xa000,\n\t0x67c: 0xa000, 0x67d: 0xa000,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3c5a, 0x681: 0x3c61, 0x682: 0xa000, 0x683: 0xa000, 0x684: 0x3c76, 0x685: 0x3c7d,\n\t0x686: 0xa000, 0x687: 0xa000, 0x688: 0x3c84, 0x689: 0x3c8b,\n\t0x691: 0xa000,\n\t0x692: 0xa000,\n\t0x6a2: 0xa000,\n\t0x6a8: 0xa000, 0x6a9: 0xa000,\n\t0x6ab: 0xa000, 0x6ac: 0x3ca0, 0x6ad: 0x3ca7, 0x6ae: 0x3cae, 0x6af: 0x3cb5,\n\t0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0xa000, 0x6b5: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c6: 0xa000, 0x6cb: 0xa000,\n\t0x6cc: 0x3f08, 0x6cd: 0xa000, 0x6ce: 0x3f10, 0x6cf: 0xa000, 0x6d0: 0x3f18, 0x6d1: 0xa000,\n\t0x6d2: 0x3f20, 0x6d3: 0xa000, 0x6d4: 0x3f28, 0x6d5: 0xa000, 0x6d6: 0x3f30, 0x6d7: 0xa000,\n\t0x6d8: 0x3f38, 0x6d9: 0xa000, 0x6da: 0x3f40, 0x6db: 0xa000, 0x6dc: 0x3f48, 0x6dd: 0xa000,\n\t0x6de: 0x3f50, 0x6df: 0xa000, 0x6e0: 0x3f58, 0x6e1: 0xa000, 0x6e2: 0x3f60,\n\t0x6e4: 0xa000, 0x6e5: 0x3f68, 0x6e6: 0xa000, 0x6e7: 0x3f70, 0x6e8: 0xa000, 0x6e9: 0x3f78,\n\t0x6ef: 0xa000,\n\t0x6f0: 0x3f80, 0x6f1: 0x3f88, 0x6f2: 0xa000, 0x6f3: 0x3f90, 0x6f4: 0x3f98, 0x6f5: 0xa000,\n\t0x6f6: 0x3fa0, 0x6f7: 0x3fa8, 0x6f8: 0xa000, 0x6f9: 0x3fb0, 0x6fa: 0x3fb8, 0x6fb: 0xa000,\n\t0x6fc: 0x3fc0, 0x6fd: 0x3fc8,\n\t// Block 0x1c, offset 0x700\n\t0x714: 0x3f00,\n\t0x719: 0x9903, 0x71a: 0x9903, 0x71b: 0x8100, 0x71c: 0x8100, 0x71d: 0xa000,\n\t0x71e: 0x3fd0,\n\t0x726: 0xa000,\n\t0x72b: 0xa000, 0x72c: 0x3fe0, 0x72d: 0xa000, 0x72e: 0x3fe8, 0x72f: 0xa000,\n\t0x730: 0x3ff0, 0x731: 0xa000, 0x732: 0x3ff8, 0x733: 0xa000, 0x734: 0x4000, 0x735: 0xa000,\n\t0x736: 0x4008, 0x737: 0xa000, 0x738: 0x4010, 0x739: 0xa000, 0x73a: 0x4018, 0x73b: 0xa000,\n\t0x73c: 0x4020, 0x73d: 0xa000, 0x73e: 0x4028, 0x73f: 0xa000,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x4030, 0x741: 0xa000, 0x742: 0x4038, 0x744: 0xa000, 0x745: 0x4040,\n\t0x746: 0xa000, 0x747: 0x4048, 0x748: 0xa000, 0x749: 0x4050,\n\t0x74f: 0xa000, 0x750: 0x4058, 0x751: 0x4060,\n\t0x752: 0xa000, 0x753: 0x4068, 0x754: 0x4070, 0x755: 0xa000, 0x756: 0x4078, 0x757: 0x4080,\n\t0x758: 0xa000, 0x759: 0x4088, 0x75a: 0x4090, 0x75b: 0xa000, 0x75c: 0x4098, 0x75d: 0x40a0,\n\t0x76f: 0xa000,\n\t0x770: 0xa000, 0x771: 0xa000, 0x772: 0xa000, 0x774: 0x3fd8,\n\t0x777: 0x40a8, 0x778: 0x40b0, 0x779: 0x40b8, 0x77a: 0x40c0,\n\t0x77d: 0xa000, 0x77e: 0x40c8,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x1377, 0x781: 0x0cfb, 0x782: 0x13d3, 0x783: 0x139f, 0x784: 0x0e57, 0x785: 0x06eb,\n\t0x786: 0x08df, 0x787: 0x162b, 0x788: 0x162b, 0x789: 0x0a0b, 0x78a: 0x145f, 0x78b: 0x0943,\n\t0x78c: 0x0a07, 0x78d: 0x0bef, 0x78e: 0x0fcf, 0x78f: 0x115f, 0x790: 0x1297, 0x791: 0x12d3,\n\t0x792: 0x1307, 0x793: 0x141b, 0x794: 0x0d73, 0x795: 0x0dff, 0x796: 0x0eab, 0x797: 0x0f43,\n\t0x798: 0x125f, 0x799: 0x1447, 0x79a: 0x1573, 0x79b: 0x070f, 0x79c: 0x08b3, 0x79d: 0x0d87,\n\t0x79e: 0x0ecf, 0x79f: 0x1293, 0x7a0: 0x15c3, 0x7a1: 0x0ab3, 0x7a2: 0x0e77, 0x7a3: 0x1283,\n\t0x7a4: 0x1317, 0x7a5: 0x0c23, 0x7a6: 0x11bb, 0x7a7: 0x12df, 0x7a8: 0x0b1f, 0x7a9: 0x0d0f,\n\t0x7aa: 0x0e17, 0x7ab: 0x0f1b, 0x7ac: 0x1427, 0x7ad: 0x074f, 0x7ae: 0x07e7, 0x7af: 0x0853,\n\t0x7b0: 0x0c8b, 0x7b1: 0x0d7f, 0x7b2: 0x0ecb, 0x7b3: 0x0fef, 0x7b4: 0x1177, 0x7b5: 0x128b,\n\t0x7b6: 0x12a3, 0x7b7: 0x13c7, 0x7b8: 0x14ef, 0x7b9: 0x15a3, 0x7ba: 0x15bf, 0x7bb: 0x102b,\n\t0x7bc: 0x106b, 0x7bd: 0x1123, 0x7be: 0x1243, 0x7bf: 0x147b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x15cb, 0x7c1: 0x134b, 0x7c2: 0x09c7, 0x7c3: 0x0b3b, 0x7c4: 0x10db, 0x7c5: 0x119b,\n\t0x7c6: 0x0eff, 0x7c7: 0x1033, 0x7c8: 0x1397, 0x7c9: 0x14e7, 0x7ca: 0x09c3, 0x7cb: 0x0a8f,\n\t0x7cc: 0x0d77, 0x7cd: 0x0e2b, 0x7ce: 0x0e5f, 0x7cf: 0x1113, 0x7d0: 0x113b, 0x7d1: 0x14a7,\n\t0x7d2: 0x084f, 0x7d3: 0x11a7, 0x7d4: 0x07f3, 0x7d5: 0x07ef, 0x7d6: 0x1097, 0x7d7: 0x1127,\n\t0x7d8: 0x125b, 0x7d9: 0x14af, 0x7da: 0x1367, 0x7db: 0x0c27, 0x7dc: 0x0d73, 0x7dd: 0x1357,\n\t0x7de: 0x06f7, 0x7df: 0x0a63, 0x7e0: 0x0b93, 0x7e1: 0x0f2f, 0x7e2: 0x0faf, 0x7e3: 0x0873,\n\t0x7e4: 0x103b, 0x7e5: 0x075f, 0x7e6: 0x0b77, 0x7e7: 0x06d7, 0x7e8: 0x0deb, 0x7e9: 0x0ca3,\n\t0x7ea: 0x110f, 0x7eb: 0x08c7, 0x7ec: 0x09b3, 0x7ed: 0x0ffb, 0x7ee: 0x1263, 0x7ef: 0x133b,\n\t0x7f0: 0x0db7, 0x7f1: 0x13f7, 0x7f2: 0x0de3, 0x7f3: 0x0c37, 0x7f4: 0x121b, 0x7f5: 0x0c57,\n\t0x7f6: 0x0fab, 0x7f7: 0x072b, 0x7f8: 0x07a7, 0x7f9: 0x07eb, 0x7fa: 0x0d53, 0x7fb: 0x10fb,\n\t0x7fc: 0x11f3, 0x7fd: 0x1347, 0x7fe: 0x145b, 0x7ff: 0x085b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x090f, 0x801: 0x0a17, 0x802: 0x0b2f, 0x803: 0x0cbf, 0x804: 0x0e7b, 0x805: 0x103f,\n\t0x806: 0x1497, 0x807: 0x157b, 0x808: 0x15cf, 0x809: 0x15e7, 0x80a: 0x0837, 0x80b: 0x0cf3,\n\t0x80c: 0x0da3, 0x80d: 0x13eb, 0x80e: 0x0afb, 0x80f: 0x0bd7, 0x810: 0x0bf3, 0x811: 0x0c83,\n\t0x812: 0x0e6b, 0x813: 0x0eb7, 0x814: 0x0f67, 0x815: 0x108b, 0x816: 0x112f, 0x817: 0x1193,\n\t0x818: 0x13db, 0x819: 0x126b, 0x81a: 0x1403, 0x81b: 0x147f, 0x81c: 0x080f, 0x81d: 0x083b,\n\t0x81e: 0x0923, 0x81f: 0x0ea7, 0x820: 0x12f3, 0x821: 0x133b, 0x822: 0x0b1b, 0x823: 0x0b8b,\n\t0x824: 0x0c4f, 0x825: 0x0daf, 0x826: 0x10d7, 0x827: 0x0f23, 0x828: 0x073b, 0x829: 0x097f,\n\t0x82a: 0x0a63, 0x82b: 0x0ac7, 0x82c: 0x0b97, 0x82d: 0x0f3f, 0x82e: 0x0f5b, 0x82f: 0x116b,\n\t0x830: 0x118b, 0x831: 0x1463, 0x832: 0x14e3, 0x833: 0x14f3, 0x834: 0x152f, 0x835: 0x0753,\n\t0x836: 0x107f, 0x837: 0x144f, 0x838: 0x14cb, 0x839: 0x0baf, 0x83a: 0x0717, 0x83b: 0x0777,\n\t0x83c: 0x0a67, 0x83d: 0x0a87, 0x83e: 0x0caf, 0x83f: 0x0d73,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0ec3, 0x841: 0x0fcb, 0x842: 0x1277, 0x843: 0x1417, 0x844: 0x1623, 0x845: 0x0ce3,\n\t0x846: 0x14a3, 0x847: 0x0833, 0x848: 0x0d2f, 0x849: 0x0d3b, 0x84a: 0x0e0f, 0x84b: 0x0e47,\n\t0x84c: 0x0f4b, 0x84d: 0x0fa7, 0x84e: 0x1027, 0x84f: 0x110b, 0x850: 0x153b, 0x851: 0x07af,\n\t0x852: 0x0c03, 0x853: 0x14b3, 0x854: 0x0767, 0x855: 0x0aab, 0x856: 0x0e2f, 0x857: 0x13df,\n\t0x858: 0x0b67, 0x859: 0x0bb7, 0x85a: 0x0d43, 0x85b: 0x0f2f, 0x85c: 0x14bb, 0x85d: 0x0817,\n\t0x85e: 0x08ff, 0x85f: 0x0a97, 0x860: 0x0cd3, 0x861: 0x0d1f, 0x862: 0x0d5f, 0x863: 0x0df3,\n\t0x864: 0x0f47, 0x865: 0x0fbb, 0x866: 0x1157, 0x867: 0x12f7, 0x868: 0x1303, 0x869: 0x1457,\n\t0x86a: 0x14d7, 0x86b: 0x0883, 0x86c: 0x0e4b, 0x86d: 0x0903, 0x86e: 0x0ec7, 0x86f: 0x0f6b,\n\t0x870: 0x1287, 0x871: 0x14bf, 0x872: 0x15ab, 0x873: 0x15d3, 0x874: 0x0d37, 0x875: 0x0e27,\n\t0x876: 0x11c3, 0x877: 0x10b7, 0x878: 0x10c3, 0x879: 0x10e7, 0x87a: 0x0f17, 0x87b: 0x0e9f,\n\t0x87c: 0x1363, 0x87d: 0x0733, 0x87e: 0x122b, 0x87f: 0x081b,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x080b, 0x881: 0x0b0b, 0x882: 0x0c2b, 0x883: 0x10f3, 0x884: 0x0a53, 0x885: 0x0e03,\n\t0x886: 0x0cef, 0x887: 0x13e7, 0x888: 0x12e7, 0x889: 0x14ab, 0x88a: 0x1323, 0x88b: 0x0b27,\n\t0x88c: 0x0787, 0x88d: 0x095b, 0x890: 0x09af,\n\t0x892: 0x0cdf, 0x895: 0x07f7, 0x896: 0x0f1f, 0x897: 0x0fe3,\n\t0x898: 0x1047, 0x899: 0x1063, 0x89a: 0x1067, 0x89b: 0x107b, 0x89c: 0x14fb, 0x89d: 0x10eb,\n\t0x89e: 0x116f, 0x8a0: 0x128f, 0x8a2: 0x1353,\n\t0x8a5: 0x1407, 0x8a6: 0x1433,\n\t0x8aa: 0x154f, 0x8ab: 0x1553, 0x8ac: 0x1557, 0x8ad: 0x15bb, 0x8ae: 0x142b, 0x8af: 0x14c7,\n\t0x8b0: 0x0757, 0x8b1: 0x077b, 0x8b2: 0x078f, 0x8b3: 0x084b, 0x8b4: 0x0857, 0x8b5: 0x0897,\n\t0x8b6: 0x094b, 0x8b7: 0x0967, 0x8b8: 0x096f, 0x8b9: 0x09ab, 0x8ba: 0x09b7, 0x8bb: 0x0a93,\n\t0x8bc: 0x0a9b, 0x8bd: 0x0ba3, 0x8be: 0x0bcb, 0x8bf: 0x0bd3,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0beb, 0x8c1: 0x0c97, 0x8c2: 0x0cc7, 0x8c3: 0x0ce7, 0x8c4: 0x0d57, 0x8c5: 0x0e1b,\n\t0x8c6: 0x0e37, 0x8c7: 0x0e67, 0x8c8: 0x0ebb, 0x8c9: 0x0edb, 0x8ca: 0x0f4f, 0x8cb: 0x102f,\n\t0x8cc: 0x104b, 0x8cd: 0x1053, 0x8ce: 0x104f, 0x8cf: 0x1057, 0x8d0: 0x105b, 0x8d1: 0x105f,\n\t0x8d2: 0x1073, 0x8d3: 0x1077, 0x8d4: 0x109b, 0x8d5: 0x10af, 0x8d6: 0x10cb, 0x8d7: 0x112f,\n\t0x8d8: 0x1137, 0x8d9: 0x113f, 0x8da: 0x1153, 0x8db: 0x117b, 0x8dc: 0x11cb, 0x8dd: 0x11ff,\n\t0x8de: 0x11ff, 0x8df: 0x1267, 0x8e0: 0x130f, 0x8e1: 0x1327, 0x8e2: 0x135b, 0x8e3: 0x135f,\n\t0x8e4: 0x13a3, 0x8e5: 0x13a7, 0x8e6: 0x13ff, 0x8e7: 0x1407, 0x8e8: 0x14db, 0x8e9: 0x151f,\n\t0x8ea: 0x1537, 0x8eb: 0x0b9b, 0x8ec: 0x171e, 0x8ed: 0x11e3,\n\t0x8f0: 0x06df, 0x8f1: 0x07e3, 0x8f2: 0x07a3, 0x8f3: 0x074b, 0x8f4: 0x078b, 0x8f5: 0x07b7,\n\t0x8f6: 0x0847, 0x8f7: 0x0863, 0x8f8: 0x094b, 0x8f9: 0x0937, 0x8fa: 0x0947, 0x8fb: 0x0963,\n\t0x8fc: 0x09af, 0x8fd: 0x09bf, 0x8fe: 0x0a03, 0x8ff: 0x0a0f,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0a2b, 0x901: 0x0a3b, 0x902: 0x0b23, 0x903: 0x0b2b, 0x904: 0x0b5b, 0x905: 0x0b7b,\n\t0x906: 0x0bab, 0x907: 0x0bc3, 0x908: 0x0bb3, 0x909: 0x0bd3, 0x90a: 0x0bc7, 0x90b: 0x0beb,\n\t0x90c: 0x0c07, 0x90d: 0x0c5f, 0x90e: 0x0c6b, 0x90f: 0x0c73, 0x910: 0x0c9b, 0x911: 0x0cdf,\n\t0x912: 0x0d0f, 0x913: 0x0d13, 0x914: 0x0d27, 0x915: 0x0da7, 0x916: 0x0db7, 0x917: 0x0e0f,\n\t0x918: 0x0e5b, 0x919: 0x0e53, 0x91a: 0x0e67, 0x91b: 0x0e83, 0x91c: 0x0ebb, 0x91d: 0x1013,\n\t0x91e: 0x0edf, 0x91f: 0x0f13, 0x920: 0x0f1f, 0x921: 0x0f5f, 0x922: 0x0f7b, 0x923: 0x0f9f,\n\t0x924: 0x0fc3, 0x925: 0x0fc7, 0x926: 0x0fe3, 0x927: 0x0fe7, 0x928: 0x0ff7, 0x929: 0x100b,\n\t0x92a: 0x1007, 0x92b: 0x1037, 0x92c: 0x10b3, 0x92d: 0x10cb, 0x92e: 0x10e3, 0x92f: 0x111b,\n\t0x930: 0x112f, 0x931: 0x114b, 0x932: 0x117b, 0x933: 0x122f, 0x934: 0x1257, 0x935: 0x12cb,\n\t0x936: 0x1313, 0x937: 0x131f, 0x938: 0x1327, 0x939: 0x133f, 0x93a: 0x1353, 0x93b: 0x1343,\n\t0x93c: 0x135b, 0x93d: 0x1357, 0x93e: 0x134f, 0x93f: 0x135f,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x136b, 0x941: 0x13a7, 0x942: 0x13e3, 0x943: 0x1413, 0x944: 0x144b, 0x945: 0x146b,\n\t0x946: 0x14b7, 0x947: 0x14db, 0x948: 0x14fb, 0x949: 0x150f, 0x94a: 0x151f, 0x94b: 0x152b,\n\t0x94c: 0x1537, 0x94d: 0x158b, 0x94e: 0x162b, 0x94f: 0x16b5, 0x950: 0x16b0, 0x951: 0x16e2,\n\t0x952: 0x0607, 0x953: 0x062f, 0x954: 0x0633, 0x955: 0x1764, 0x956: 0x1791, 0x957: 0x1809,\n\t0x958: 0x1617, 0x959: 0x1627,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x06fb, 0x981: 0x06f3, 0x982: 0x0703, 0x983: 0x1647, 0x984: 0x0747, 0x985: 0x0757,\n\t0x986: 0x075b, 0x987: 0x0763, 0x988: 0x076b, 0x989: 0x076f, 0x98a: 0x077b, 0x98b: 0x0773,\n\t0x98c: 0x05b3, 0x98d: 0x165b, 0x98e: 0x078f, 0x98f: 0x0793, 0x990: 0x0797, 0x991: 0x07b3,\n\t0x992: 0x164c, 0x993: 0x05b7, 0x994: 0x079f, 0x995: 0x07bf, 0x996: 0x1656, 0x997: 0x07cf,\n\t0x998: 0x07d7, 0x999: 0x0737, 0x99a: 0x07df, 0x99b: 0x07e3, 0x99c: 0x1831, 0x99d: 0x07ff,\n\t0x99e: 0x0807, 0x99f: 0x05bf, 0x9a0: 0x081f, 0x9a1: 0x0823, 0x9a2: 0x082b, 0x9a3: 0x082f,\n\t0x9a4: 0x05c3, 0x9a5: 0x0847, 0x9a6: 0x084b, 0x9a7: 0x0857, 0x9a8: 0x0863, 0x9a9: 0x0867,\n\t0x9aa: 0x086b, 0x9ab: 0x0873, 0x9ac: 0x0893, 0x9ad: 0x0897, 0x9ae: 0x089f, 0x9af: 0x08af,\n\t0x9b0: 0x08b7, 0x9b1: 0x08bb, 0x9b2: 0x08bb, 0x9b3: 0x08bb, 0x9b4: 0x166a, 0x9b5: 0x0e93,\n\t0x9b6: 0x08cf, 0x9b7: 0x08d7, 0x9b8: 0x166f, 0x9b9: 0x08e3, 0x9ba: 0x08eb, 0x9bb: 0x08f3,\n\t0x9bc: 0x091b, 0x9bd: 0x0907, 0x9be: 0x0913, 0x9bf: 0x0917,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x091f, 0x9c1: 0x0927, 0x9c2: 0x092b, 0x9c3: 0x0933, 0x9c4: 0x093b, 0x9c5: 0x093f,\n\t0x9c6: 0x093f, 0x9c7: 0x0947, 0x9c8: 0x094f, 0x9c9: 0x0953, 0x9ca: 0x095f, 0x9cb: 0x0983,\n\t0x9cc: 0x0967, 0x9cd: 0x0987, 0x9ce: 0x096b, 0x9cf: 0x0973, 0x9d0: 0x080b, 0x9d1: 0x09cf,\n\t0x9d2: 0x0997, 0x9d3: 0x099b, 0x9d4: 0x099f, 0x9d5: 0x0993, 0x9d6: 0x09a7, 0x9d7: 0x09a3,\n\t0x9d8: 0x09bb, 0x9d9: 0x1674, 0x9da: 0x09d7, 0x9db: 0x09db, 0x9dc: 0x09e3, 0x9dd: 0x09ef,\n\t0x9de: 0x09f7, 0x9df: 0x0a13, 0x9e0: 0x1679, 0x9e1: 0x167e, 0x9e2: 0x0a1f, 0x9e3: 0x0a23,\n\t0x9e4: 0x0a27, 0x9e5: 0x0a1b, 0x9e6: 0x0a2f, 0x9e7: 0x05c7, 0x9e8: 0x05cb, 0x9e9: 0x0a37,\n\t0x9ea: 0x0a3f, 0x9eb: 0x0a3f, 0x9ec: 0x1683, 0x9ed: 0x0a5b, 0x9ee: 0x0a5f, 0x9ef: 0x0a63,\n\t0x9f0: 0x0a6b, 0x9f1: 0x1688, 0x9f2: 0x0a73, 0x9f3: 0x0a77, 0x9f4: 0x0b4f, 0x9f5: 0x0a7f,\n\t0x9f6: 0x05cf, 0x9f7: 0x0a8b, 0x9f8: 0x0a9b, 0x9f9: 0x0aa7, 0x9fa: 0x0aa3, 0x9fb: 0x1692,\n\t0x9fc: 0x0aaf, 0x9fd: 0x1697, 0x9fe: 0x0abb, 0x9ff: 0x0ab7,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0abf, 0xa01: 0x0acf, 0xa02: 0x0ad3, 0xa03: 0x05d3, 0xa04: 0x0ae3, 0xa05: 0x0aeb,\n\t0xa06: 0x0aef, 0xa07: 0x0af3, 0xa08: 0x05d7, 0xa09: 0x169c, 0xa0a: 0x05db, 0xa0b: 0x0b0f,\n\t0xa0c: 0x0b13, 0xa0d: 0x0b17, 0xa0e: 0x0b1f, 0xa0f: 0x1863, 0xa10: 0x0b37, 0xa11: 0x16a6,\n\t0xa12: 0x16a6, 0xa13: 0x11d7, 0xa14: 0x0b47, 0xa15: 0x0b47, 0xa16: 0x05df, 0xa17: 0x16c9,\n\t0xa18: 0x179b, 0xa19: 0x0b57, 0xa1a: 0x0b5f, 0xa1b: 0x05e3, 0xa1c: 0x0b73, 0xa1d: 0x0b83,\n\t0xa1e: 0x0b87, 0xa1f: 0x0b8f, 0xa20: 0x0b9f, 0xa21: 0x05eb, 0xa22: 0x05e7, 0xa23: 0x0ba3,\n\t0xa24: 0x16ab, 0xa25: 0x0ba7, 0xa26: 0x0bbb, 0xa27: 0x0bbf, 0xa28: 0x0bc3, 0xa29: 0x0bbf,\n\t0xa2a: 0x0bcf, 0xa2b: 0x0bd3, 0xa2c: 0x0be3, 0xa2d: 0x0bdb, 0xa2e: 0x0bdf, 0xa2f: 0x0be7,\n\t0xa30: 0x0beb, 0xa31: 0x0bef, 0xa32: 0x0bfb, 0xa33: 0x0bff, 0xa34: 0x0c17, 0xa35: 0x0c1f,\n\t0xa36: 0x0c2f, 0xa37: 0x0c43, 0xa38: 0x16ba, 0xa39: 0x0c3f, 0xa3a: 0x0c33, 0xa3b: 0x0c4b,\n\t0xa3c: 0x0c53, 0xa3d: 0x0c67, 0xa3e: 0x16bf, 0xa3f: 0x0c6f,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0c63, 0xa41: 0x0c5b, 0xa42: 0x05ef, 0xa43: 0x0c77, 0xa44: 0x0c7f, 0xa45: 0x0c87,\n\t0xa46: 0x0c7b, 0xa47: 0x05f3, 0xa48: 0x0c97, 0xa49: 0x0c9f, 0xa4a: 0x16c4, 0xa4b: 0x0ccb,\n\t0xa4c: 0x0cff, 0xa4d: 0x0cdb, 0xa4e: 0x05ff, 0xa4f: 0x0ce7, 0xa50: 0x05fb, 0xa51: 0x05f7,\n\t0xa52: 0x07c3, 0xa53: 0x07c7, 0xa54: 0x0d03, 0xa55: 0x0ceb, 0xa56: 0x11ab, 0xa57: 0x0663,\n\t0xa58: 0x0d0f, 0xa59: 0x0d13, 0xa5a: 0x0d17, 0xa5b: 0x0d2b, 0xa5c: 0x0d23, 0xa5d: 0x16dd,\n\t0xa5e: 0x0603, 0xa5f: 0x0d3f, 0xa60: 0x0d33, 0xa61: 0x0d4f, 0xa62: 0x0d57, 0xa63: 0x16e7,\n\t0xa64: 0x0d5b, 0xa65: 0x0d47, 0xa66: 0x0d63, 0xa67: 0x0607, 0xa68: 0x0d67, 0xa69: 0x0d6b,\n\t0xa6a: 0x0d6f, 0xa6b: 0x0d7b, 0xa6c: 0x16ec, 0xa6d: 0x0d83, 0xa6e: 0x060b, 0xa6f: 0x0d8f,\n\t0xa70: 0x16f1, 0xa71: 0x0d93, 0xa72: 0x060f, 0xa73: 0x0d9f, 0xa74: 0x0dab, 0xa75: 0x0db7,\n\t0xa76: 0x0dbb, 0xa77: 0x16f6, 0xa78: 0x168d, 0xa79: 0x16fb, 0xa7a: 0x0ddb, 0xa7b: 0x1700,\n\t0xa7c: 0x0de7, 0xa7d: 0x0def, 0xa7e: 0x0ddf, 0xa7f: 0x0dfb,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0e0b, 0xa81: 0x0e1b, 0xa82: 0x0e0f, 0xa83: 0x0e13, 0xa84: 0x0e1f, 0xa85: 0x0e23,\n\t0xa86: 0x1705, 0xa87: 0x0e07, 0xa88: 0x0e3b, 0xa89: 0x0e3f, 0xa8a: 0x0613, 0xa8b: 0x0e53,\n\t0xa8c: 0x0e4f, 0xa8d: 0x170a, 0xa8e: 0x0e33, 0xa8f: 0x0e6f, 0xa90: 0x170f, 0xa91: 0x1714,\n\t0xa92: 0x0e73, 0xa93: 0x0e87, 0xa94: 0x0e83, 0xa95: 0x0e7f, 0xa96: 0x0617, 0xa97: 0x0e8b,\n\t0xa98: 0x0e9b, 0xa99: 0x0e97, 0xa9a: 0x0ea3, 0xa9b: 0x1651, 0xa9c: 0x0eb3, 0xa9d: 0x1719,\n\t0xa9e: 0x0ebf, 0xa9f: 0x1723, 0xaa0: 0x0ed3, 0xaa1: 0x0edf, 0xaa2: 0x0ef3, 0xaa3: 0x1728,\n\t0xaa4: 0x0f07, 0xaa5: 0x0f0b, 0xaa6: 0x172d, 0xaa7: 0x1732, 0xaa8: 0x0f27, 0xaa9: 0x0f37,\n\t0xaaa: 0x061b, 0xaab: 0x0f3b, 0xaac: 0x061f, 0xaad: 0x061f, 0xaae: 0x0f53, 0xaaf: 0x0f57,\n\t0xab0: 0x0f5f, 0xab1: 0x0f63, 0xab2: 0x0f6f, 0xab3: 0x0623, 0xab4: 0x0f87, 0xab5: 0x1737,\n\t0xab6: 0x0fa3, 0xab7: 0x173c, 0xab8: 0x0faf, 0xab9: 0x16a1, 0xaba: 0x0fbf, 0xabb: 0x1741,\n\t0xabc: 0x1746, 0xabd: 0x174b, 0xabe: 0x0627, 0xabf: 0x062b,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0ff7, 0xac1: 0x1755, 0xac2: 0x1750, 0xac3: 0x175a, 0xac4: 0x175f, 0xac5: 0x0fff,\n\t0xac6: 0x1003, 0xac7: 0x1003, 0xac8: 0x100b, 0xac9: 0x0633, 0xaca: 0x100f, 0xacb: 0x0637,\n\t0xacc: 0x063b, 0xacd: 0x1769, 0xace: 0x1023, 0xacf: 0x102b, 0xad0: 0x1037, 0xad1: 0x063f,\n\t0xad2: 0x176e, 0xad3: 0x105b, 0xad4: 0x1773, 0xad5: 0x1778, 0xad6: 0x107b, 0xad7: 0x1093,\n\t0xad8: 0x0643, 0xad9: 0x109b, 0xada: 0x109f, 0xadb: 0x10a3, 0xadc: 0x177d, 0xadd: 0x1782,\n\t0xade: 0x1782, 0xadf: 0x10bb, 0xae0: 0x0647, 0xae1: 0x1787, 0xae2: 0x10cf, 0xae3: 0x10d3,\n\t0xae4: 0x064b, 0xae5: 0x178c, 0xae6: 0x10ef, 0xae7: 0x064f, 0xae8: 0x10ff, 0xae9: 0x10f7,\n\t0xaea: 0x1107, 0xaeb: 0x1796, 0xaec: 0x111f, 0xaed: 0x0653, 0xaee: 0x112b, 0xaef: 0x1133,\n\t0xaf0: 0x1143, 0xaf1: 0x0657, 0xaf2: 0x17a0, 0xaf3: 0x17a5, 0xaf4: 0x065b, 0xaf5: 0x17aa,\n\t0xaf6: 0x115b, 0xaf7: 0x17af, 0xaf8: 0x1167, 0xaf9: 0x1173, 0xafa: 0x117b, 0xafb: 0x17b4,\n\t0xafc: 0x17b9, 0xafd: 0x118f, 0xafe: 0x17be, 0xaff: 0x1197,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x16ce, 0xb01: 0x065f, 0xb02: 0x11af, 0xb03: 0x11b3, 0xb04: 0x0667, 0xb05: 0x11b7,\n\t0xb06: 0x0a33, 0xb07: 0x17c3, 0xb08: 0x17c8, 0xb09: 0x16d3, 0xb0a: 0x16d8, 0xb0b: 0x11d7,\n\t0xb0c: 0x11db, 0xb0d: 0x13f3, 0xb0e: 0x066b, 0xb0f: 0x1207, 0xb10: 0x1203, 0xb11: 0x120b,\n\t0xb12: 0x083f, 0xb13: 0x120f, 0xb14: 0x1213, 0xb15: 0x1217, 0xb16: 0x121f, 0xb17: 0x17cd,\n\t0xb18: 0x121b, 0xb19: 0x1223, 0xb1a: 0x1237, 0xb1b: 0x123b, 0xb1c: 0x1227, 0xb1d: 0x123f,\n\t0xb1e: 0x1253, 0xb1f: 0x1267, 0xb20: 0x1233, 0xb21: 0x1247, 0xb22: 0x124b, 0xb23: 0x124f,\n\t0xb24: 0x17d2, 0xb25: 0x17dc, 0xb26: 0x17d7, 0xb27: 0x066f, 0xb28: 0x126f, 0xb29: 0x1273,\n\t0xb2a: 0x127b, 0xb2b: 0x17f0, 0xb2c: 0x127f, 0xb2d: 0x17e1, 0xb2e: 0x0673, 0xb2f: 0x0677,\n\t0xb30: 0x17e6, 0xb31: 0x17eb, 0xb32: 0x067b, 0xb33: 0x129f, 0xb34: 0x12a3, 0xb35: 0x12a7,\n\t0xb36: 0x12ab, 0xb37: 0x12b7, 0xb38: 0x12b3, 0xb39: 0x12bf, 0xb3a: 0x12bb, 0xb3b: 0x12cb,\n\t0xb3c: 0x12c3, 0xb3d: 0x12c7, 0xb3e: 0x12cf, 0xb3f: 0x067f,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x12d7, 0xb41: 0x12db, 0xb42: 0x0683, 0xb43: 0x12eb, 0xb44: 0x12ef, 0xb45: 0x17f5,\n\t0xb46: 0x12fb, 0xb47: 0x12ff, 0xb48: 0x0687, 0xb49: 0x130b, 0xb4a: 0x05bb, 0xb4b: 0x17fa,\n\t0xb4c: 0x17ff, 0xb4d: 0x068b, 0xb4e: 0x068f, 0xb4f: 0x1337, 0xb50: 0x134f, 0xb51: 0x136b,\n\t0xb52: 0x137b, 0xb53: 0x1804, 0xb54: 0x138f, 0xb55: 0x1393, 0xb56: 0x13ab, 0xb57: 0x13b7,\n\t0xb58: 0x180e, 0xb59: 0x1660, 0xb5a: 0x13c3, 0xb5b: 0x13bf, 0xb5c: 0x13cb, 0xb5d: 0x1665,\n\t0xb5e: 0x13d7, 0xb5f: 0x13e3, 0xb60: 0x1813, 0xb61: 0x1818, 0xb62: 0x1423, 0xb63: 0x142f,\n\t0xb64: 0x1437, 0xb65: 0x181d, 0xb66: 0x143b, 0xb67: 0x1467, 0xb68: 0x1473, 0xb69: 0x1477,\n\t0xb6a: 0x146f, 0xb6b: 0x1483, 0xb6c: 0x1487, 0xb6d: 0x1822, 0xb6e: 0x1493, 0xb6f: 0x0693,\n\t0xb70: 0x149b, 0xb71: 0x1827, 0xb72: 0x0697, 0xb73: 0x14d3, 0xb74: 0x0ac3, 0xb75: 0x14eb,\n\t0xb76: 0x182c, 0xb77: 0x1836, 0xb78: 0x069b, 0xb79: 0x069f, 0xb7a: 0x1513, 0xb7b: 0x183b,\n\t0xb7c: 0x06a3, 0xb7d: 0x1840, 0xb7e: 0x152b, 0xb7f: 0x152b,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1533, 0xb81: 0x1845, 0xb82: 0x154b, 0xb83: 0x06a7, 0xb84: 0x155b, 0xb85: 0x1567,\n\t0xb86: 0x156f, 0xb87: 0x1577, 0xb88: 0x06ab, 0xb89: 0x184a, 0xb8a: 0x158b, 0xb8b: 0x15a7,\n\t0xb8c: 0x15b3, 0xb8d: 0x06af, 0xb8e: 0x06b3, 0xb8f: 0x15b7, 0xb90: 0x184f, 0xb91: 0x06b7,\n\t0xb92: 0x1854, 0xb93: 0x1859, 0xb94: 0x185e, 0xb95: 0x15db, 0xb96: 0x06bb, 0xb97: 0x15ef,\n\t0xb98: 0x15f7, 0xb99: 0x15fb, 0xb9a: 0x1603, 0xb9b: 0x160b, 0xb9c: 0x1613, 0xb9d: 0x1868,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2d, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2e, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x2f, 0xcb: 0x30, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x31,\n\t0xd0: 0x09, 0xd1: 0x32, 0xd2: 0x33, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x34,\n\t0xd8: 0x35, 0xd9: 0x0c, 0xdb: 0x36, 0xdc: 0x37, 0xdd: 0x38, 0xdf: 0x39,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3a, 0x121: 0x3b, 0x123: 0x3c, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,\n\t0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,\n\t0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,\n\t0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,\n\t0x14d: 0x5c,\n\t0x15c: 0x5d, 0x15f: 0x5e,\n\t0x162: 0x5f, 0x164: 0x60,\n\t0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16c: 0x0d, 0x16d: 0x64, 0x16e: 0x65, 0x16f: 0x66,\n\t0x170: 0x67, 0x173: 0x68, 0x177: 0x0e,\n\t0x178: 0x0f, 0x179: 0x10, 0x17a: 0x11, 0x17b: 0x12, 0x17c: 0x13, 0x17d: 0x14, 0x17e: 0x15, 0x17f: 0x16,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d,\n\t0x188: 0x6e, 0x189: 0x17, 0x18a: 0x18, 0x18b: 0x6f, 0x18c: 0x70,\n\t0x1ab: 0x71,\n\t0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x75, 0x1c1: 0x19, 0x1c2: 0x1a, 0x1c3: 0x1b, 0x1c4: 0x76, 0x1c5: 0x77,\n\t0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,\n\t0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,\n\t0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,\n\t0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,\n\t0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,\n\t0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,\n\t0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,\n\t0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,\n\t0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,\n\t0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,\n\t0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,\n\t0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,\n\t0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,\n\t0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,\n\t0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,\n\t0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,\n\t0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,\n\t0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,\n\t0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,\n\t0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,\n\t0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1c, 0x325: 0x1d, 0x326: 0x1e, 0x327: 0x1f,\n\t0x328: 0x20, 0x329: 0x21, 0x32a: 0x22, 0x32b: 0x23, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,\n\t0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,\n\t0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9c,\n\t0x34b: 0x9d, 0x34d: 0x9e,\n\t0x368: 0x9f, 0x36b: 0xa0,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0xa4,\n\t0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3f, 0x38d: 0xa7,\n\t0x391: 0xa8, 0x392: 0xa9, 0x393: 0xaa, 0x396: 0xab, 0x397: 0xac,\n\t0x398: 0x73, 0x39a: 0xad, 0x39c: 0xae,\n\t0x3a8: 0xaf, 0x3a9: 0xb0, 0x3aa: 0xb1,\n\t0x3b0: 0x73, 0x3b5: 0xb2,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xb3, 0x3ec: 0xb4,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xb5,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xb6, 0x446: 0xb7, 0x447: 0xb8,\n\t0x449: 0xb9,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xba,\n\t0x4a3: 0xbb, 0x4a5: 0xbc,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xbd,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x24, 0x521: 0x25, 0x522: 0x26, 0x523: 0x27, 0x524: 0x28, 0x525: 0x29, 0x526: 0x2a, 0x527: 0x2b,\n\t0x528: 0x2c,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 145 entries, 290 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc8, 0xcf, 0xd7, 0xda, 0xdc, 0xde, 0xe0, 0xe5, 0xf6, 0x102, 0x104, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x119, 0x11c, 0x11e, 0x121, 0x124, 0x128, 0x12d, 0x136, 0x138, 0x13b, 0x13d, 0x148, 0x14c, 0x15a, 0x15d, 0x163, 0x169, 0x174, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x182, 0x188, 0x18c, 0x18e, 0x190, 0x198, 0x19c, 0x19f, 0x1a1, 0x1a3, 0x1a5, 0x1a8, 0x1aa, 0x1ac, 0x1ae, 0x1b0, 0x1b6, 0x1b9, 0x1bb, 0x1c2, 0x1c8, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e8, 0x1ec, 0x1fa, 0x203, 0x206, 0x209, 0x20b, 0x20e, 0x210, 0x214, 0x219, 0x21b, 0x21d, 0x222, 0x228, 0x22a, 0x22c, 0x22e, 0x234, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x259, 0x25c, 0x263, 0x266, 0x26c, 0x26e, 0x271, 0x273, 0x275, 0x277, 0x279, 0x27c, 0x27e, 0x280, 0x282, 0x28f, 0x299, 0x29b, 0x29d, 0x2a3, 0x2a5, 0x2a8}\n\n// nfcSparseValues: 682 entries, 2728 bytes\nvar nfcSparseValues = [682]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4840, lo: 0x8a, hi: 0x8a},\n\t{value: 0x485e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36c7, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36df, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4876, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x36fd, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xd, offset 0x62\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x67\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x69\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0x10, offset 0x7a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x82\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x89\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x8c\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x14, offset 0x93\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x97\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x9d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x9f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0xa8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xac\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xb3\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xb8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xbb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xc5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xc8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xcf\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xd7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xda\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xdc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x24, offset 0xde\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xe0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xe5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xf6\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0x104\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x10a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x10c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x10e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x110\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x114\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x116\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x119\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x11c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x11e\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x121\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x124\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x128\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x12d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x136\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x138\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x13b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x13d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x148\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0433, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3d, offset 0x14c\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3e, offset 0x15a\n\t{value: 0x427b, lo: 0x02},\n\t{value: 0x01b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x3f, offset 0x15d\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x40, offset 0x163\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x41, offset 0x169\n\t{value: 0x6408, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x42, offset 0x174\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x43, offset 0x178\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x44, offset 0x17a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x45, offset 0x17c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x46, offset 0x17e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x47, offset 0x180\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x48, offset 0x182\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xaf},\n\t// Block 0x49, offset 0x188\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4a9f, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4a9f, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4a9f, lo: 0xba, hi: 0xbf},\n\t// Block 0x4a, offset 0x18c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4a9f, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4b, offset 0x18e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4c, offset 0x190\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4d, offset 0x198\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4e, offset 0x19c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x4f, offset 0x19f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x50, offset 0x1a1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x51, offset 0x1a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x52, offset 0x1a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x53, offset 0x1a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x54, offset 0x1aa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x55, offset 0x1ac\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x56, offset 0x1ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x57, offset 0x1b0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x58, offset 0x1b6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x59, offset 0x1b9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x5a, offset 0x1bb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5b, offset 0x1c2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5c, offset 0x1c8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5d, offset 0x1ce\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5e, offset 0x1d6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x5f, offset 0x1dc\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x60, offset 0x1e2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x61, offset 0x1e8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x62, offset 0x1ec\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4390, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8115, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4402, lo: 0x9f, hi: 0x9f},\n\t{value: 0x43f0, lo: 0xaa, hi: 0xab},\n\t{value: 0x44f4, lo: 0xac, hi: 0xac},\n\t{value: 0x44fc, lo: 0xad, hi: 0xad},\n\t{value: 0x4348, lo: 0xae, hi: 0xb1},\n\t{value: 0x4366, lo: 0xb2, hi: 0xb4},\n\t{value: 0x437e, lo: 0xb5, hi: 0xb6},\n\t{value: 0x438a, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4396, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43ae, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43b4, lo: 0xbe, hi: 0xbe},\n\t// Block 0x63, offset 0x1fa\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43ba, lo: 0x80, hi: 0x81},\n\t{value: 0x43c6, lo: 0x83, hi: 0x84},\n\t{value: 0x43d8, lo: 0x86, hi: 0x89},\n\t{value: 0x43fc, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4378, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4360, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43a8, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43d2, lo: 0x8e, hi: 0x8e},\n\t// Block 0x64, offset 0x203\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x65, offset 0x206\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x66, offset 0x209\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x67, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x68, offset 0x20e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x69, offset 0x210\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812d, lo: 0xa7, hi: 0xad},\n\t{value: 0x8132, lo: 0xae, hi: 0xaf},\n\t// Block 0x6a, offset 0x214\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6b, offset 0x219\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6c, offset 0x21b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6d, offset 0x21d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4a9f, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4a9f, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4a9f, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4a9f, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6e, offset 0x222\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4a9f, lo: 0x82, hi: 0x87},\n\t{value: 0x4a9f, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4a9f, lo: 0x92, hi: 0x97},\n\t{value: 0x4a9f, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x6f, offset 0x228\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x70, offset 0x22a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x71, offset 0x22c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x72, offset 0x22e\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x73, offset 0x234\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x74, offset 0x237\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x75, offset 0x23a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x76, offset 0x242\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x77, offset 0x249\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x78, offset 0x24c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x79, offset 0x24f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7a, offset 0x251\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7b, offset 0x259\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x7c, offset 0x25c\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7d, offset 0x263\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7e, offset 0x266\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7f, offset 0x26c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x80, offset 0x26e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x81, offset 0x271\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x82, offset 0x273\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x83, offset 0x275\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x84, offset 0x277\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x85, offset 0x279\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x86, offset 0x27c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x87, offset 0x27e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x88, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x89, offset 0x282\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8a, offset 0x28f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x8b, offset 0x299\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x8c, offset 0x29b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8d, offset 0x29d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x8e, offset 0x2a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x8f, offset 0x2a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x90, offset 0x2a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 17104 bytes (16.70 KiB). Checksum: d985061cf5307b35.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 91:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 91\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 93 blocks, 5952 entries, 11904 bytes\n// The third block is the zero block.\nvar nfkcValues = [5952]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dee, 0x185: 0x2df4,\n\t0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a,\n\t0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x42a5,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x425a, 0x285: 0x447b,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e,\n\t0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0,\n\t0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8,\n\t0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,\n\t0x2f9: 0x01a6,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b,\n\t0x306: 0xa000, 0x307: 0x3709,\n\t0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3733, 0x342: 0x37b7,\n\t0x350: 0x370f, 0x351: 0x3793,\n\t0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd,\n\t0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf,\n\t0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed,\n\t0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805,\n\t0x378: 0x3787, 0x379: 0x380b,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d61,\n\t0x391: 0x812d,\n\t0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d,\n\t0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132,\n\t0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132,\n\t0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a,\n\t0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f,\n\t0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116,\n\t0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c,\n\t0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x812d,\n\t0x3f0: 0x811e, 0x3f5: 0x1d84,\n\t0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000,\n\t0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000,\n\t0x412: 0x2d4e,\n\t0x434: 0x8102, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d56,\n\t0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0069, 0x441: 0x006b, 0x442: 0x006f, 0x443: 0x0083, 0x444: 0x00f5, 0x445: 0x00f8,\n\t0x446: 0x0413, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107,\n\t0x44c: 0x010a, 0x44d: 0x008f, 0x44f: 0x0097, 0x450: 0x009b, 0x451: 0x00e0,\n\t0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x0417, 0x455: 0x041b, 0x456: 0x00a1, 0x457: 0x00a9,\n\t0x458: 0x00ab, 0x459: 0x0423, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x0427, 0x45d: 0x01be,\n\t0x45e: 0x01c1, 0x45f: 0x01c4, 0x460: 0x01fa, 0x461: 0x01fd, 0x462: 0x0093, 0x463: 0x00a5,\n\t0x464: 0x00ab, 0x465: 0x00ad, 0x466: 0x01be, 0x467: 0x01c1, 0x468: 0x01eb, 0x469: 0x01fa,\n\t0x46a: 0x01fd,\n\t0x478: 0x020c,\n\t// Block 0x12, offset 0x480\n\t0x49b: 0x00fb, 0x49c: 0x0087, 0x49d: 0x0101,\n\t0x49e: 0x00d4, 0x49f: 0x010a, 0x4a0: 0x008d, 0x4a1: 0x010d, 0x4a2: 0x0110, 0x4a3: 0x0116,\n\t0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x042b, 0x4a8: 0x016a, 0x4a9: 0x0128,\n\t0x4aa: 0x042f, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137,\n\t0x4b0: 0x013a, 0x4b1: 0x013d, 0x4b2: 0x0140, 0x4b3: 0x014c, 0x4b4: 0x014f, 0x4b5: 0x00ec,\n\t0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5,\n\t0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x8132, 0x4c1: 0x8132, 0x4c2: 0x812d, 0x4c3: 0x8132, 0x4c4: 0x8132, 0x4c5: 0x8132,\n\t0x4c6: 0x8132, 0x4c7: 0x8132, 0x4c8: 0x8132, 0x4c9: 0x8132, 0x4ca: 0x812d, 0x4cb: 0x8132,\n\t0x4cc: 0x8132, 0x4cd: 0x8135, 0x4ce: 0x812a, 0x4cf: 0x812d, 0x4d0: 0x8129, 0x4d1: 0x8132,\n\t0x4d2: 0x8132, 0x4d3: 0x8132, 0x4d4: 0x8132, 0x4d5: 0x8132, 0x4d6: 0x8132, 0x4d7: 0x8132,\n\t0x4d8: 0x8132, 0x4d9: 0x8132, 0x4da: 0x8132, 0x4db: 0x8132, 0x4dc: 0x8132, 0x4dd: 0x8132,\n\t0x4de: 0x8132, 0x4df: 0x8132, 0x4e0: 0x8132, 0x4e1: 0x8132, 0x4e2: 0x8132, 0x4e3: 0x8132,\n\t0x4e4: 0x8132, 0x4e5: 0x8132, 0x4e6: 0x8132, 0x4e7: 0x8132, 0x4e8: 0x8132, 0x4e9: 0x8132,\n\t0x4ea: 0x8132, 0x4eb: 0x8132, 0x4ec: 0x8132, 0x4ed: 0x8132, 0x4ee: 0x8132, 0x4ef: 0x8132,\n\t0x4f0: 0x8132, 0x4f1: 0x8132, 0x4f2: 0x8132, 0x4f3: 0x8132, 0x4f4: 0x8132, 0x4f5: 0x8132,\n\t0x4f6: 0x8133, 0x4f7: 0x8131, 0x4f8: 0x8131, 0x4f9: 0x812d, 0x4fb: 0x8132,\n\t0x4fc: 0x8134, 0x4fd: 0x812d, 0x4fe: 0x8132, 0x4ff: 0x812d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x2f97, 0x501: 0x32a3, 0x502: 0x2fa1, 0x503: 0x32ad, 0x504: 0x2fa6, 0x505: 0x32b2,\n\t0x506: 0x2fab, 0x507: 0x32b7, 0x508: 0x38cc, 0x509: 0x3a5b, 0x50a: 0x2fc4, 0x50b: 0x32d0,\n\t0x50c: 0x2fce, 0x50d: 0x32da, 0x50e: 0x2fdd, 0x50f: 0x32e9, 0x510: 0x2fd3, 0x511: 0x32df,\n\t0x512: 0x2fd8, 0x513: 0x32e4, 0x514: 0x38ef, 0x515: 0x3a7e, 0x516: 0x38f6, 0x517: 0x3a85,\n\t0x518: 0x3019, 0x519: 0x3325, 0x51a: 0x301e, 0x51b: 0x332a, 0x51c: 0x3904, 0x51d: 0x3a93,\n\t0x51e: 0x3023, 0x51f: 0x332f, 0x520: 0x3032, 0x521: 0x333e, 0x522: 0x3050, 0x523: 0x335c,\n\t0x524: 0x305f, 0x525: 0x336b, 0x526: 0x3055, 0x527: 0x3361, 0x528: 0x3064, 0x529: 0x3370,\n\t0x52a: 0x3069, 0x52b: 0x3375, 0x52c: 0x30af, 0x52d: 0x33bb, 0x52e: 0x390b, 0x52f: 0x3a9a,\n\t0x530: 0x30b9, 0x531: 0x33ca, 0x532: 0x30c3, 0x533: 0x33d4, 0x534: 0x30cd, 0x535: 0x33de,\n\t0x536: 0x46c4, 0x537: 0x4755, 0x538: 0x3912, 0x539: 0x3aa1, 0x53a: 0x30e6, 0x53b: 0x33f7,\n\t0x53c: 0x30e1, 0x53d: 0x33f2, 0x53e: 0x30eb, 0x53f: 0x33fc,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x30f0, 0x541: 0x3401, 0x542: 0x30f5, 0x543: 0x3406, 0x544: 0x3109, 0x545: 0x341a,\n\t0x546: 0x3113, 0x547: 0x3424, 0x548: 0x3122, 0x549: 0x3433, 0x54a: 0x311d, 0x54b: 0x342e,\n\t0x54c: 0x3935, 0x54d: 0x3ac4, 0x54e: 0x3943, 0x54f: 0x3ad2, 0x550: 0x394a, 0x551: 0x3ad9,\n\t0x552: 0x3951, 0x553: 0x3ae0, 0x554: 0x314f, 0x555: 0x3460, 0x556: 0x3154, 0x557: 0x3465,\n\t0x558: 0x315e, 0x559: 0x346f, 0x55a: 0x46f1, 0x55b: 0x4782, 0x55c: 0x3997, 0x55d: 0x3b26,\n\t0x55e: 0x3177, 0x55f: 0x3488, 0x560: 0x3181, 0x561: 0x3492, 0x562: 0x4700, 0x563: 0x4791,\n\t0x564: 0x399e, 0x565: 0x3b2d, 0x566: 0x39a5, 0x567: 0x3b34, 0x568: 0x39ac, 0x569: 0x3b3b,\n\t0x56a: 0x3190, 0x56b: 0x34a1, 0x56c: 0x319a, 0x56d: 0x34b0, 0x56e: 0x31ae, 0x56f: 0x34c4,\n\t0x570: 0x31a9, 0x571: 0x34bf, 0x572: 0x31ea, 0x573: 0x3500, 0x574: 0x31f9, 0x575: 0x350f,\n\t0x576: 0x31f4, 0x577: 0x350a, 0x578: 0x39b3, 0x579: 0x3b42, 0x57a: 0x39ba, 0x57b: 0x3b49,\n\t0x57c: 0x31fe, 0x57d: 0x3514, 0x57e: 0x3203, 0x57f: 0x3519,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3208, 0x581: 0x351e, 0x582: 0x320d, 0x583: 0x3523, 0x584: 0x321c, 0x585: 0x3532,\n\t0x586: 0x3217, 0x587: 0x352d, 0x588: 0x3221, 0x589: 0x353c, 0x58a: 0x3226, 0x58b: 0x3541,\n\t0x58c: 0x322b, 0x58d: 0x3546, 0x58e: 0x3249, 0x58f: 0x3564, 0x590: 0x3262, 0x591: 0x3582,\n\t0x592: 0x3271, 0x593: 0x3591, 0x594: 0x3276, 0x595: 0x3596, 0x596: 0x337a, 0x597: 0x34a6,\n\t0x598: 0x3537, 0x599: 0x3573, 0x59a: 0x1be0, 0x59b: 0x42d7,\n\t0x5a0: 0x46a1, 0x5a1: 0x4732, 0x5a2: 0x2f83, 0x5a3: 0x328f,\n\t0x5a4: 0x3878, 0x5a5: 0x3a07, 0x5a6: 0x3871, 0x5a7: 0x3a00, 0x5a8: 0x3886, 0x5a9: 0x3a15,\n\t0x5aa: 0x387f, 0x5ab: 0x3a0e, 0x5ac: 0x38be, 0x5ad: 0x3a4d, 0x5ae: 0x3894, 0x5af: 0x3a23,\n\t0x5b0: 0x388d, 0x5b1: 0x3a1c, 0x5b2: 0x38a2, 0x5b3: 0x3a31, 0x5b4: 0x389b, 0x5b5: 0x3a2a,\n\t0x5b6: 0x38c5, 0x5b7: 0x3a54, 0x5b8: 0x46b5, 0x5b9: 0x4746, 0x5ba: 0x3000, 0x5bb: 0x330c,\n\t0x5bc: 0x2fec, 0x5bd: 0x32f8, 0x5be: 0x38da, 0x5bf: 0x3a69,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x38d3, 0x5c1: 0x3a62, 0x5c2: 0x38e8, 0x5c3: 0x3a77, 0x5c4: 0x38e1, 0x5c5: 0x3a70,\n\t0x5c6: 0x38fd, 0x5c7: 0x3a8c, 0x5c8: 0x3091, 0x5c9: 0x339d, 0x5ca: 0x30a5, 0x5cb: 0x33b1,\n\t0x5cc: 0x46e7, 0x5cd: 0x4778, 0x5ce: 0x3136, 0x5cf: 0x3447, 0x5d0: 0x3920, 0x5d1: 0x3aaf,\n\t0x5d2: 0x3919, 0x5d3: 0x3aa8, 0x5d4: 0x392e, 0x5d5: 0x3abd, 0x5d6: 0x3927, 0x5d7: 0x3ab6,\n\t0x5d8: 0x3989, 0x5d9: 0x3b18, 0x5da: 0x396d, 0x5db: 0x3afc, 0x5dc: 0x3966, 0x5dd: 0x3af5,\n\t0x5de: 0x397b, 0x5df: 0x3b0a, 0x5e0: 0x3974, 0x5e1: 0x3b03, 0x5e2: 0x3982, 0x5e3: 0x3b11,\n\t0x5e4: 0x31e5, 0x5e5: 0x34fb, 0x5e6: 0x31c7, 0x5e7: 0x34dd, 0x5e8: 0x39e4, 0x5e9: 0x3b73,\n\t0x5ea: 0x39dd, 0x5eb: 0x3b6c, 0x5ec: 0x39f2, 0x5ed: 0x3b81, 0x5ee: 0x39eb, 0x5ef: 0x3b7a,\n\t0x5f0: 0x39f9, 0x5f1: 0x3b88, 0x5f2: 0x3230, 0x5f3: 0x354b, 0x5f4: 0x3258, 0x5f5: 0x3578,\n\t0x5f6: 0x3253, 0x5f7: 0x356e, 0x5f8: 0x323f, 0x5f9: 0x355a,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x4804, 0x601: 0x480a, 0x602: 0x491e, 0x603: 0x4936, 0x604: 0x4926, 0x605: 0x493e,\n\t0x606: 0x492e, 0x607: 0x4946, 0x608: 0x47aa, 0x609: 0x47b0, 0x60a: 0x488e, 0x60b: 0x48a6,\n\t0x60c: 0x4896, 0x60d: 0x48ae, 0x60e: 0x489e, 0x60f: 0x48b6, 0x610: 0x4816, 0x611: 0x481c,\n\t0x612: 0x3db8, 0x613: 0x3dc8, 0x614: 0x3dc0, 0x615: 0x3dd0,\n\t0x618: 0x47b6, 0x619: 0x47bc, 0x61a: 0x3ce8, 0x61b: 0x3cf8, 0x61c: 0x3cf0, 0x61d: 0x3d00,\n\t0x620: 0x482e, 0x621: 0x4834, 0x622: 0x494e, 0x623: 0x4966,\n\t0x624: 0x4956, 0x625: 0x496e, 0x626: 0x495e, 0x627: 0x4976, 0x628: 0x47c2, 0x629: 0x47c8,\n\t0x62a: 0x48be, 0x62b: 0x48d6, 0x62c: 0x48c6, 0x62d: 0x48de, 0x62e: 0x48ce, 0x62f: 0x48e6,\n\t0x630: 0x4846, 0x631: 0x484c, 0x632: 0x3e18, 0x633: 0x3e30, 0x634: 0x3e20, 0x635: 0x3e38,\n\t0x636: 0x3e28, 0x637: 0x3e40, 0x638: 0x47ce, 0x639: 0x47d4, 0x63a: 0x3d18, 0x63b: 0x3d30,\n\t0x63c: 0x3d20, 0x63d: 0x3d38, 0x63e: 0x3d28, 0x63f: 0x3d40,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x4852, 0x641: 0x4858, 0x642: 0x3e48, 0x643: 0x3e58, 0x644: 0x3e50, 0x645: 0x3e60,\n\t0x648: 0x47da, 0x649: 0x47e0, 0x64a: 0x3d48, 0x64b: 0x3d58,\n\t0x64c: 0x3d50, 0x64d: 0x3d60, 0x650: 0x4864, 0x651: 0x486a,\n\t0x652: 0x3e80, 0x653: 0x3e98, 0x654: 0x3e88, 0x655: 0x3ea0, 0x656: 0x3e90, 0x657: 0x3ea8,\n\t0x659: 0x47e6, 0x65b: 0x3d68, 0x65d: 0x3d70,\n\t0x65f: 0x3d78, 0x660: 0x487c, 0x661: 0x4882, 0x662: 0x497e, 0x663: 0x4996,\n\t0x664: 0x4986, 0x665: 0x499e, 0x666: 0x498e, 0x667: 0x49a6, 0x668: 0x47ec, 0x669: 0x47f2,\n\t0x66a: 0x48ee, 0x66b: 0x4906, 0x66c: 0x48f6, 0x66d: 0x490e, 0x66e: 0x48fe, 0x66f: 0x4916,\n\t0x670: 0x47f8, 0x671: 0x431e, 0x672: 0x3691, 0x673: 0x4324, 0x674: 0x4822, 0x675: 0x432a,\n\t0x676: 0x36a3, 0x677: 0x4330, 0x678: 0x36c1, 0x679: 0x4336, 0x67a: 0x36d9, 0x67b: 0x433c,\n\t0x67c: 0x4870, 0x67d: 0x4342,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3da0, 0x681: 0x3da8, 0x682: 0x4184, 0x683: 0x41a2, 0x684: 0x418e, 0x685: 0x41ac,\n\t0x686: 0x4198, 0x687: 0x41b6, 0x688: 0x3cd8, 0x689: 0x3ce0, 0x68a: 0x40d0, 0x68b: 0x40ee,\n\t0x68c: 0x40da, 0x68d: 0x40f8, 0x68e: 0x40e4, 0x68f: 0x4102, 0x690: 0x3de8, 0x691: 0x3df0,\n\t0x692: 0x41c0, 0x693: 0x41de, 0x694: 0x41ca, 0x695: 0x41e8, 0x696: 0x41d4, 0x697: 0x41f2,\n\t0x698: 0x3d08, 0x699: 0x3d10, 0x69a: 0x410c, 0x69b: 0x412a, 0x69c: 0x4116, 0x69d: 0x4134,\n\t0x69e: 0x4120, 0x69f: 0x413e, 0x6a0: 0x3ec0, 0x6a1: 0x3ec8, 0x6a2: 0x41fc, 0x6a3: 0x421a,\n\t0x6a4: 0x4206, 0x6a5: 0x4224, 0x6a6: 0x4210, 0x6a7: 0x422e, 0x6a8: 0x3d80, 0x6a9: 0x3d88,\n\t0x6aa: 0x4148, 0x6ab: 0x4166, 0x6ac: 0x4152, 0x6ad: 0x4170, 0x6ae: 0x415c, 0x6af: 0x417a,\n\t0x6b0: 0x3685, 0x6b1: 0x367f, 0x6b2: 0x3d90, 0x6b3: 0x368b, 0x6b4: 0x3d98,\n\t0x6b6: 0x4810, 0x6b7: 0x3db0, 0x6b8: 0x35f5, 0x6b9: 0x35ef, 0x6ba: 0x35e3, 0x6bb: 0x42ee,\n\t0x6bc: 0x35fb, 0x6bd: 0x4287, 0x6be: 0x01d3, 0x6bf: 0x4287,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x42a0, 0x6c1: 0x4482, 0x6c2: 0x3dd8, 0x6c3: 0x369d, 0x6c4: 0x3de0,\n\t0x6c6: 0x483a, 0x6c7: 0x3df8, 0x6c8: 0x3601, 0x6c9: 0x42f4, 0x6ca: 0x360d, 0x6cb: 0x42fa,\n\t0x6cc: 0x3619, 0x6cd: 0x4489, 0x6ce: 0x4490, 0x6cf: 0x4497, 0x6d0: 0x36b5, 0x6d1: 0x36af,\n\t0x6d2: 0x3e00, 0x6d3: 0x44e4, 0x6d6: 0x36bb, 0x6d7: 0x3e10,\n\t0x6d8: 0x3631, 0x6d9: 0x362b, 0x6da: 0x361f, 0x6db: 0x4300, 0x6dd: 0x449e,\n\t0x6de: 0x44a5, 0x6df: 0x44ac, 0x6e0: 0x36eb, 0x6e1: 0x36e5, 0x6e2: 0x3e68, 0x6e3: 0x44ec,\n\t0x6e4: 0x36cd, 0x6e5: 0x36d3, 0x6e6: 0x36f1, 0x6e7: 0x3e78, 0x6e8: 0x3661, 0x6e9: 0x365b,\n\t0x6ea: 0x364f, 0x6eb: 0x430c, 0x6ec: 0x3649, 0x6ed: 0x4474, 0x6ee: 0x447b, 0x6ef: 0x0081,\n\t0x6f2: 0x3eb0, 0x6f3: 0x36f7, 0x6f4: 0x3eb8,\n\t0x6f6: 0x4888, 0x6f7: 0x3ed0, 0x6f8: 0x363d, 0x6f9: 0x4306, 0x6fa: 0x366d, 0x6fb: 0x4318,\n\t0x6fc: 0x3679, 0x6fd: 0x425a, 0x6fe: 0x428c,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x1bd8, 0x701: 0x1bdc, 0x702: 0x0047, 0x703: 0x1c54, 0x705: 0x1be8,\n\t0x706: 0x1bec, 0x707: 0x00e9, 0x709: 0x1c58, 0x70a: 0x008f, 0x70b: 0x0051,\n\t0x70c: 0x0051, 0x70d: 0x0051, 0x70e: 0x0091, 0x70f: 0x00da, 0x710: 0x0053, 0x711: 0x0053,\n\t0x712: 0x0059, 0x713: 0x0099, 0x715: 0x005d, 0x716: 0x198d,\n\t0x719: 0x0061, 0x71a: 0x0063, 0x71b: 0x0065, 0x71c: 0x0065, 0x71d: 0x0065,\n\t0x720: 0x199f, 0x721: 0x1bc8, 0x722: 0x19a8,\n\t0x724: 0x0075, 0x726: 0x01b8, 0x728: 0x0075,\n\t0x72a: 0x0057, 0x72b: 0x42d2, 0x72c: 0x0045, 0x72d: 0x0047, 0x72f: 0x008b,\n\t0x730: 0x004b, 0x731: 0x004d, 0x733: 0x005b, 0x734: 0x009f, 0x735: 0x0215,\n\t0x736: 0x0218, 0x737: 0x021b, 0x738: 0x021e, 0x739: 0x0093, 0x73b: 0x1b98,\n\t0x73c: 0x01e8, 0x73d: 0x01c1, 0x73e: 0x0179, 0x73f: 0x01a0,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0463, 0x745: 0x0049,\n\t0x746: 0x0089, 0x747: 0x008b, 0x748: 0x0093, 0x749: 0x0095,\n\t0x750: 0x222e, 0x751: 0x223a,\n\t0x752: 0x22ee, 0x753: 0x2216, 0x754: 0x229a, 0x755: 0x2222, 0x756: 0x22a0, 0x757: 0x22b8,\n\t0x758: 0x22c4, 0x759: 0x2228, 0x75a: 0x22ca, 0x75b: 0x2234, 0x75c: 0x22be, 0x75d: 0x22d0,\n\t0x75e: 0x22d6, 0x75f: 0x1cbc, 0x760: 0x0053, 0x761: 0x195a, 0x762: 0x1ba4, 0x763: 0x1963,\n\t0x764: 0x006d, 0x765: 0x19ab, 0x766: 0x1bd0, 0x767: 0x1d48, 0x768: 0x1966, 0x769: 0x0071,\n\t0x76a: 0x19b7, 0x76b: 0x1bd4, 0x76c: 0x0059, 0x76d: 0x0047, 0x76e: 0x0049, 0x76f: 0x005b,\n\t0x770: 0x0093, 0x771: 0x19e4, 0x772: 0x1c18, 0x773: 0x19ed, 0x774: 0x00ad, 0x775: 0x1a62,\n\t0x776: 0x1c4c, 0x777: 0x1d5c, 0x778: 0x19f0, 0x779: 0x00b1, 0x77a: 0x1a65, 0x77b: 0x1c50,\n\t0x77c: 0x0099, 0x77d: 0x0087, 0x77e: 0x0089, 0x77f: 0x009b,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x3c06, 0x783: 0xa000, 0x784: 0x3c0d, 0x785: 0xa000,\n\t0x787: 0x3c14, 0x788: 0xa000, 0x789: 0x3c1b,\n\t0x78d: 0xa000,\n\t0x7a0: 0x2f65, 0x7a1: 0xa000, 0x7a2: 0x3c29,\n\t0x7a4: 0xa000, 0x7a5: 0xa000,\n\t0x7ad: 0x3c22, 0x7ae: 0x2f60, 0x7af: 0x2f6a,\n\t0x7b0: 0x3c30, 0x7b1: 0x3c37, 0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0x3c3e, 0x7b5: 0x3c45,\n\t0x7b6: 0xa000, 0x7b7: 0xa000, 0x7b8: 0x3c4c, 0x7b9: 0x3c53, 0x7ba: 0xa000, 0x7bb: 0xa000,\n\t0x7bc: 0xa000, 0x7bd: 0xa000,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x3c5a, 0x7c1: 0x3c61, 0x7c2: 0xa000, 0x7c3: 0xa000, 0x7c4: 0x3c76, 0x7c5: 0x3c7d,\n\t0x7c6: 0xa000, 0x7c7: 0xa000, 0x7c8: 0x3c84, 0x7c9: 0x3c8b,\n\t0x7d1: 0xa000,\n\t0x7d2: 0xa000,\n\t0x7e2: 0xa000,\n\t0x7e8: 0xa000, 0x7e9: 0xa000,\n\t0x7eb: 0xa000, 0x7ec: 0x3ca0, 0x7ed: 0x3ca7, 0x7ee: 0x3cae, 0x7ef: 0x3cb5,\n\t0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0xa000, 0x7f5: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x820: 0x0023, 0x821: 0x0025, 0x822: 0x0027, 0x823: 0x0029,\n\t0x824: 0x002b, 0x825: 0x002d, 0x826: 0x002f, 0x827: 0x0031, 0x828: 0x0033, 0x829: 0x1882,\n\t0x82a: 0x1885, 0x82b: 0x1888, 0x82c: 0x188b, 0x82d: 0x188e, 0x82e: 0x1891, 0x82f: 0x1894,\n\t0x830: 0x1897, 0x831: 0x189a, 0x832: 0x189d, 0x833: 0x18a6, 0x834: 0x1a68, 0x835: 0x1a6c,\n\t0x836: 0x1a70, 0x837: 0x1a74, 0x838: 0x1a78, 0x839: 0x1a7c, 0x83a: 0x1a80, 0x83b: 0x1a84,\n\t0x83c: 0x1a88, 0x83d: 0x1c80, 0x83e: 0x1c85, 0x83f: 0x1c8a,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x1c8f, 0x841: 0x1c94, 0x842: 0x1c99, 0x843: 0x1c9e, 0x844: 0x1ca3, 0x845: 0x1ca8,\n\t0x846: 0x1cad, 0x847: 0x1cb2, 0x848: 0x187f, 0x849: 0x18a3, 0x84a: 0x18c7, 0x84b: 0x18eb,\n\t0x84c: 0x190f, 0x84d: 0x1918, 0x84e: 0x191e, 0x84f: 0x1924, 0x850: 0x192a, 0x851: 0x1b60,\n\t0x852: 0x1b64, 0x853: 0x1b68, 0x854: 0x1b6c, 0x855: 0x1b70, 0x856: 0x1b74, 0x857: 0x1b78,\n\t0x858: 0x1b7c, 0x859: 0x1b80, 0x85a: 0x1b84, 0x85b: 0x1b88, 0x85c: 0x1af4, 0x85d: 0x1af8,\n\t0x85e: 0x1afc, 0x85f: 0x1b00, 0x860: 0x1b04, 0x861: 0x1b08, 0x862: 0x1b0c, 0x863: 0x1b10,\n\t0x864: 0x1b14, 0x865: 0x1b18, 0x866: 0x1b1c, 0x867: 0x1b20, 0x868: 0x1b24, 0x869: 0x1b28,\n\t0x86a: 0x1b2c, 0x86b: 0x1b30, 0x86c: 0x1b34, 0x86d: 0x1b38, 0x86e: 0x1b3c, 0x86f: 0x1b40,\n\t0x870: 0x1b44, 0x871: 0x1b48, 0x872: 0x1b4c, 0x873: 0x1b50, 0x874: 0x1b54, 0x875: 0x1b58,\n\t0x876: 0x0043, 0x877: 0x0045, 0x878: 0x0047, 0x879: 0x0049, 0x87a: 0x004b, 0x87b: 0x004d,\n\t0x87c: 0x004f, 0x87d: 0x0051, 0x87e: 0x0053, 0x87f: 0x0055,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x06bf, 0x881: 0x06e3, 0x882: 0x06ef, 0x883: 0x06ff, 0x884: 0x0707, 0x885: 0x0713,\n\t0x886: 0x071b, 0x887: 0x0723, 0x888: 0x072f, 0x889: 0x0783, 0x88a: 0x079b, 0x88b: 0x07ab,\n\t0x88c: 0x07bb, 0x88d: 0x07cb, 0x88e: 0x07db, 0x88f: 0x07fb, 0x890: 0x07ff, 0x891: 0x0803,\n\t0x892: 0x0837, 0x893: 0x085f, 0x894: 0x086f, 0x895: 0x0877, 0x896: 0x087b, 0x897: 0x0887,\n\t0x898: 0x08a3, 0x899: 0x08a7, 0x89a: 0x08bf, 0x89b: 0x08c3, 0x89c: 0x08cb, 0x89d: 0x08db,\n\t0x89e: 0x0977, 0x89f: 0x098b, 0x8a0: 0x09cb, 0x8a1: 0x09df, 0x8a2: 0x09e7, 0x8a3: 0x09eb,\n\t0x8a4: 0x09fb, 0x8a5: 0x0a17, 0x8a6: 0x0a43, 0x8a7: 0x0a4f, 0x8a8: 0x0a6f, 0x8a9: 0x0a7b,\n\t0x8aa: 0x0a7f, 0x8ab: 0x0a83, 0x8ac: 0x0a9b, 0x8ad: 0x0a9f, 0x8ae: 0x0acb, 0x8af: 0x0ad7,\n\t0x8b0: 0x0adf, 0x8b1: 0x0ae7, 0x8b2: 0x0af7, 0x8b3: 0x0aff, 0x8b4: 0x0b07, 0x8b5: 0x0b33,\n\t0x8b6: 0x0b37, 0x8b7: 0x0b3f, 0x8b8: 0x0b43, 0x8b9: 0x0b4b, 0x8ba: 0x0b53, 0x8bb: 0x0b63,\n\t0x8bc: 0x0b7f, 0x8bd: 0x0bf7, 0x8be: 0x0c0b, 0x8bf: 0x0c0f,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0c8f, 0x8c1: 0x0c93, 0x8c2: 0x0ca7, 0x8c3: 0x0cab, 0x8c4: 0x0cb3, 0x8c5: 0x0cbb,\n\t0x8c6: 0x0cc3, 0x8c7: 0x0ccf, 0x8c8: 0x0cf7, 0x8c9: 0x0d07, 0x8ca: 0x0d1b, 0x8cb: 0x0d8b,\n\t0x8cc: 0x0d97, 0x8cd: 0x0da7, 0x8ce: 0x0db3, 0x8cf: 0x0dbf, 0x8d0: 0x0dc7, 0x8d1: 0x0dcb,\n\t0x8d2: 0x0dcf, 0x8d3: 0x0dd3, 0x8d4: 0x0dd7, 0x8d5: 0x0e8f, 0x8d6: 0x0ed7, 0x8d7: 0x0ee3,\n\t0x8d8: 0x0ee7, 0x8d9: 0x0eeb, 0x8da: 0x0eef, 0x8db: 0x0ef7, 0x8dc: 0x0efb, 0x8dd: 0x0f0f,\n\t0x8de: 0x0f2b, 0x8df: 0x0f33, 0x8e0: 0x0f73, 0x8e1: 0x0f77, 0x8e2: 0x0f7f, 0x8e3: 0x0f83,\n\t0x8e4: 0x0f8b, 0x8e5: 0x0f8f, 0x8e6: 0x0fb3, 0x8e7: 0x0fb7, 0x8e8: 0x0fd3, 0x8e9: 0x0fd7,\n\t0x8ea: 0x0fdb, 0x8eb: 0x0fdf, 0x8ec: 0x0ff3, 0x8ed: 0x1017, 0x8ee: 0x101b, 0x8ef: 0x101f,\n\t0x8f0: 0x1043, 0x8f1: 0x1083, 0x8f2: 0x1087, 0x8f3: 0x10a7, 0x8f4: 0x10b7, 0x8f5: 0x10bf,\n\t0x8f6: 0x10df, 0x8f7: 0x1103, 0x8f8: 0x1147, 0x8f9: 0x114f, 0x8fa: 0x1163, 0x8fb: 0x116f,\n\t0x8fc: 0x1177, 0x8fd: 0x117f, 0x8fe: 0x1183, 0x8ff: 0x1187,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x119f, 0x901: 0x11a3, 0x902: 0x11bf, 0x903: 0x11c7, 0x904: 0x11cf, 0x905: 0x11d3,\n\t0x906: 0x11df, 0x907: 0x11e7, 0x908: 0x11eb, 0x909: 0x11ef, 0x90a: 0x11f7, 0x90b: 0x11fb,\n\t0x90c: 0x129b, 0x90d: 0x12af, 0x90e: 0x12e3, 0x90f: 0x12e7, 0x910: 0x12ef, 0x911: 0x131b,\n\t0x912: 0x1323, 0x913: 0x132b, 0x914: 0x1333, 0x915: 0x136f, 0x916: 0x1373, 0x917: 0x137b,\n\t0x918: 0x137f, 0x919: 0x1383, 0x91a: 0x13af, 0x91b: 0x13b3, 0x91c: 0x13bb, 0x91d: 0x13cf,\n\t0x91e: 0x13d3, 0x91f: 0x13ef, 0x920: 0x13f7, 0x921: 0x13fb, 0x922: 0x141f, 0x923: 0x143f,\n\t0x924: 0x1453, 0x925: 0x1457, 0x926: 0x145f, 0x927: 0x148b, 0x928: 0x148f, 0x929: 0x149f,\n\t0x92a: 0x14c3, 0x92b: 0x14cf, 0x92c: 0x14df, 0x92d: 0x14f7, 0x92e: 0x14ff, 0x92f: 0x1503,\n\t0x930: 0x1507, 0x931: 0x150b, 0x932: 0x1517, 0x933: 0x151b, 0x934: 0x1523, 0x935: 0x153f,\n\t0x936: 0x1543, 0x937: 0x1547, 0x938: 0x155f, 0x939: 0x1563, 0x93a: 0x156b, 0x93b: 0x157f,\n\t0x93c: 0x1583, 0x93d: 0x1587, 0x93e: 0x158f, 0x93f: 0x1593,\n\t// Block 0x25, offset 0x940\n\t0x946: 0xa000, 0x94b: 0xa000,\n\t0x94c: 0x3f08, 0x94d: 0xa000, 0x94e: 0x3f10, 0x94f: 0xa000, 0x950: 0x3f18, 0x951: 0xa000,\n\t0x952: 0x3f20, 0x953: 0xa000, 0x954: 0x3f28, 0x955: 0xa000, 0x956: 0x3f30, 0x957: 0xa000,\n\t0x958: 0x3f38, 0x959: 0xa000, 0x95a: 0x3f40, 0x95b: 0xa000, 0x95c: 0x3f48, 0x95d: 0xa000,\n\t0x95e: 0x3f50, 0x95f: 0xa000, 0x960: 0x3f58, 0x961: 0xa000, 0x962: 0x3f60,\n\t0x964: 0xa000, 0x965: 0x3f68, 0x966: 0xa000, 0x967: 0x3f70, 0x968: 0xa000, 0x969: 0x3f78,\n\t0x96f: 0xa000,\n\t0x970: 0x3f80, 0x971: 0x3f88, 0x972: 0xa000, 0x973: 0x3f90, 0x974: 0x3f98, 0x975: 0xa000,\n\t0x976: 0x3fa0, 0x977: 0x3fa8, 0x978: 0xa000, 0x979: 0x3fb0, 0x97a: 0x3fb8, 0x97b: 0xa000,\n\t0x97c: 0x3fc0, 0x97d: 0x3fc8,\n\t// Block 0x26, offset 0x980\n\t0x994: 0x3f00,\n\t0x999: 0x9903, 0x99a: 0x9903, 0x99b: 0x42dc, 0x99c: 0x42e2, 0x99d: 0xa000,\n\t0x99e: 0x3fd0, 0x99f: 0x26b4,\n\t0x9a6: 0xa000,\n\t0x9ab: 0xa000, 0x9ac: 0x3fe0, 0x9ad: 0xa000, 0x9ae: 0x3fe8, 0x9af: 0xa000,\n\t0x9b0: 0x3ff0, 0x9b1: 0xa000, 0x9b2: 0x3ff8, 0x9b3: 0xa000, 0x9b4: 0x4000, 0x9b5: 0xa000,\n\t0x9b6: 0x4008, 0x9b7: 0xa000, 0x9b8: 0x4010, 0x9b9: 0xa000, 0x9ba: 0x4018, 0x9bb: 0xa000,\n\t0x9bc: 0x4020, 0x9bd: 0xa000, 0x9be: 0x4028, 0x9bf: 0xa000,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x4030, 0x9c1: 0xa000, 0x9c2: 0x4038, 0x9c4: 0xa000, 0x9c5: 0x4040,\n\t0x9c6: 0xa000, 0x9c7: 0x4048, 0x9c8: 0xa000, 0x9c9: 0x4050,\n\t0x9cf: 0xa000, 0x9d0: 0x4058, 0x9d1: 0x4060,\n\t0x9d2: 0xa000, 0x9d3: 0x4068, 0x9d4: 0x4070, 0x9d5: 0xa000, 0x9d6: 0x4078, 0x9d7: 0x4080,\n\t0x9d8: 0xa000, 0x9d9: 0x4088, 0x9da: 0x4090, 0x9db: 0xa000, 0x9dc: 0x4098, 0x9dd: 0x40a0,\n\t0x9ef: 0xa000,\n\t0x9f0: 0xa000, 0x9f1: 0xa000, 0x9f2: 0xa000, 0x9f4: 0x3fd8,\n\t0x9f7: 0x40a8, 0x9f8: 0x40b0, 0x9f9: 0x40b8, 0x9fa: 0x40c0,\n\t0x9fd: 0xa000, 0x9fe: 0x40c8, 0x9ff: 0x26c9,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0367, 0xa01: 0x032b, 0xa02: 0x032f, 0xa03: 0x0333, 0xa04: 0x037b, 0xa05: 0x0337,\n\t0xa06: 0x033b, 0xa07: 0x033f, 0xa08: 0x0343, 0xa09: 0x0347, 0xa0a: 0x034b, 0xa0b: 0x034f,\n\t0xa0c: 0x0353, 0xa0d: 0x0357, 0xa0e: 0x035b, 0xa0f: 0x49bd, 0xa10: 0x49c3, 0xa11: 0x49c9,\n\t0xa12: 0x49cf, 0xa13: 0x49d5, 0xa14: 0x49db, 0xa15: 0x49e1, 0xa16: 0x49e7, 0xa17: 0x49ed,\n\t0xa18: 0x49f3, 0xa19: 0x49f9, 0xa1a: 0x49ff, 0xa1b: 0x4a05, 0xa1c: 0x4a0b, 0xa1d: 0x4a11,\n\t0xa1e: 0x4a17, 0xa1f: 0x4a1d, 0xa20: 0x4a23, 0xa21: 0x4a29, 0xa22: 0x4a2f, 0xa23: 0x4a35,\n\t0xa24: 0x03c3, 0xa25: 0x035f, 0xa26: 0x0363, 0xa27: 0x03e7, 0xa28: 0x03eb, 0xa29: 0x03ef,\n\t0xa2a: 0x03f3, 0xa2b: 0x03f7, 0xa2c: 0x03fb, 0xa2d: 0x03ff, 0xa2e: 0x036b, 0xa2f: 0x0403,\n\t0xa30: 0x0407, 0xa31: 0x036f, 0xa32: 0x0373, 0xa33: 0x0377, 0xa34: 0x037f, 0xa35: 0x0383,\n\t0xa36: 0x0387, 0xa37: 0x038b, 0xa38: 0x038f, 0xa39: 0x0393, 0xa3a: 0x0397, 0xa3b: 0x039b,\n\t0xa3c: 0x039f, 0xa3d: 0x03a3, 0xa3e: 0x03a7, 0xa3f: 0x03ab,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x03af, 0xa41: 0x03b3, 0xa42: 0x040b, 0xa43: 0x040f, 0xa44: 0x03b7, 0xa45: 0x03bb,\n\t0xa46: 0x03bf, 0xa47: 0x03c7, 0xa48: 0x03cb, 0xa49: 0x03cf, 0xa4a: 0x03d3, 0xa4b: 0x03d7,\n\t0xa4c: 0x03db, 0xa4d: 0x03df, 0xa4e: 0x03e3,\n\t0xa52: 0x06bf, 0xa53: 0x071b, 0xa54: 0x06cb, 0xa55: 0x097b, 0xa56: 0x06cf, 0xa57: 0x06e7,\n\t0xa58: 0x06d3, 0xa59: 0x0f93, 0xa5a: 0x0707, 0xa5b: 0x06db, 0xa5c: 0x06c3, 0xa5d: 0x09ff,\n\t0xa5e: 0x098f, 0xa5f: 0x072f,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x2054, 0xa81: 0x205a, 0xa82: 0x2060, 0xa83: 0x2066, 0xa84: 0x206c, 0xa85: 0x2072,\n\t0xa86: 0x2078, 0xa87: 0x207e, 0xa88: 0x2084, 0xa89: 0x208a, 0xa8a: 0x2090, 0xa8b: 0x2096,\n\t0xa8c: 0x209c, 0xa8d: 0x20a2, 0xa8e: 0x2726, 0xa8f: 0x272f, 0xa90: 0x2738, 0xa91: 0x2741,\n\t0xa92: 0x274a, 0xa93: 0x2753, 0xa94: 0x275c, 0xa95: 0x2765, 0xa96: 0x276e, 0xa97: 0x2780,\n\t0xa98: 0x2789, 0xa99: 0x2792, 0xa9a: 0x279b, 0xa9b: 0x27a4, 0xa9c: 0x2777, 0xa9d: 0x2bac,\n\t0xa9e: 0x2aed, 0xaa0: 0x20a8, 0xaa1: 0x20c0, 0xaa2: 0x20b4, 0xaa3: 0x2108,\n\t0xaa4: 0x20c6, 0xaa5: 0x20e4, 0xaa6: 0x20ae, 0xaa7: 0x20de, 0xaa8: 0x20ba, 0xaa9: 0x20f0,\n\t0xaaa: 0x2120, 0xaab: 0x213e, 0xaac: 0x2138, 0xaad: 0x212c, 0xaae: 0x217a, 0xaaf: 0x210e,\n\t0xab0: 0x211a, 0xab1: 0x2132, 0xab2: 0x2126, 0xab3: 0x2150, 0xab4: 0x20fc, 0xab5: 0x2144,\n\t0xab6: 0x216e, 0xab7: 0x2156, 0xab8: 0x20ea, 0xab9: 0x20cc, 0xaba: 0x2102, 0xabb: 0x2114,\n\t0xabc: 0x214a, 0xabd: 0x20d2, 0xabe: 0x2174, 0xabf: 0x20f6,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x215c, 0xac1: 0x20d8, 0xac2: 0x2162, 0xac3: 0x2168, 0xac4: 0x092f, 0xac5: 0x0b03,\n\t0xac6: 0x0ca7, 0xac7: 0x10c7,\n\t0xad0: 0x1bc4, 0xad1: 0x18a9,\n\t0xad2: 0x18ac, 0xad3: 0x18af, 0xad4: 0x18b2, 0xad5: 0x18b5, 0xad6: 0x18b8, 0xad7: 0x18bb,\n\t0xad8: 0x18be, 0xad9: 0x18c1, 0xada: 0x18ca, 0xadb: 0x18cd, 0xadc: 0x18d0, 0xadd: 0x18d3,\n\t0xade: 0x18d6, 0xadf: 0x18d9, 0xae0: 0x0313, 0xae1: 0x031b, 0xae2: 0x031f, 0xae3: 0x0327,\n\t0xae4: 0x032b, 0xae5: 0x032f, 0xae6: 0x0337, 0xae7: 0x033f, 0xae8: 0x0343, 0xae9: 0x034b,\n\t0xaea: 0x034f, 0xaeb: 0x0353, 0xaec: 0x0357, 0xaed: 0x035b, 0xaee: 0x2e18, 0xaef: 0x2e20,\n\t0xaf0: 0x2e28, 0xaf1: 0x2e30, 0xaf2: 0x2e38, 0xaf3: 0x2e40, 0xaf4: 0x2e48, 0xaf5: 0x2e50,\n\t0xaf6: 0x2e60, 0xaf7: 0x2e68, 0xaf8: 0x2e70, 0xaf9: 0x2e78, 0xafa: 0x2e80, 0xafb: 0x2e88,\n\t0xafc: 0x2ed3, 0xafd: 0x2e9b, 0xafe: 0x2e58,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x06bf, 0xb01: 0x071b, 0xb02: 0x06cb, 0xb03: 0x097b, 0xb04: 0x071f, 0xb05: 0x07af,\n\t0xb06: 0x06c7, 0xb07: 0x07ab, 0xb08: 0x070b, 0xb09: 0x0887, 0xb0a: 0x0d07, 0xb0b: 0x0e8f,\n\t0xb0c: 0x0dd7, 0xb0d: 0x0d1b, 0xb0e: 0x145f, 0xb0f: 0x098b, 0xb10: 0x0ccf, 0xb11: 0x0d4b,\n\t0xb12: 0x0d0b, 0xb13: 0x104b, 0xb14: 0x08fb, 0xb15: 0x0f03, 0xb16: 0x1387, 0xb17: 0x105f,\n\t0xb18: 0x0843, 0xb19: 0x108f, 0xb1a: 0x0f9b, 0xb1b: 0x0a17, 0xb1c: 0x140f, 0xb1d: 0x077f,\n\t0xb1e: 0x08ab, 0xb1f: 0x0df7, 0xb20: 0x1527, 0xb21: 0x0743, 0xb22: 0x07d3, 0xb23: 0x0d9b,\n\t0xb24: 0x06cf, 0xb25: 0x06e7, 0xb26: 0x06d3, 0xb27: 0x0adb, 0xb28: 0x08ef, 0xb29: 0x087f,\n\t0xb2a: 0x0a57, 0xb2b: 0x0a4b, 0xb2c: 0x0feb, 0xb2d: 0x073f, 0xb2e: 0x139b, 0xb2f: 0x089b,\n\t0xb30: 0x09f3, 0xb31: 0x18dc, 0xb32: 0x18df, 0xb33: 0x18e2, 0xb34: 0x18e5, 0xb35: 0x18ee,\n\t0xb36: 0x18f1, 0xb37: 0x18f4, 0xb38: 0x18f7, 0xb39: 0x18fa, 0xb3a: 0x18fd, 0xb3b: 0x1900,\n\t0xb3c: 0x1903, 0xb3d: 0x1906, 0xb3e: 0x1909, 0xb3f: 0x1912,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1cc6, 0xb41: 0x1cd5, 0xb42: 0x1ce4, 0xb43: 0x1cf3, 0xb44: 0x1d02, 0xb45: 0x1d11,\n\t0xb46: 0x1d20, 0xb47: 0x1d2f, 0xb48: 0x1d3e, 0xb49: 0x218c, 0xb4a: 0x219e, 0xb4b: 0x21b0,\n\t0xb4c: 0x1954, 0xb4d: 0x1c04, 0xb4e: 0x19d2, 0xb4f: 0x1ba8, 0xb50: 0x04cb, 0xb51: 0x04d3,\n\t0xb52: 0x04db, 0xb53: 0x04e3, 0xb54: 0x04eb, 0xb55: 0x04ef, 0xb56: 0x04f3, 0xb57: 0x04f7,\n\t0xb58: 0x04fb, 0xb59: 0x04ff, 0xb5a: 0x0503, 0xb5b: 0x0507, 0xb5c: 0x050b, 0xb5d: 0x050f,\n\t0xb5e: 0x0513, 0xb5f: 0x0517, 0xb60: 0x051b, 0xb61: 0x0523, 0xb62: 0x0527, 0xb63: 0x052b,\n\t0xb64: 0x052f, 0xb65: 0x0533, 0xb66: 0x0537, 0xb67: 0x053b, 0xb68: 0x053f, 0xb69: 0x0543,\n\t0xb6a: 0x0547, 0xb6b: 0x054b, 0xb6c: 0x054f, 0xb6d: 0x0553, 0xb6e: 0x0557, 0xb6f: 0x055b,\n\t0xb70: 0x055f, 0xb71: 0x0563, 0xb72: 0x0567, 0xb73: 0x056f, 0xb74: 0x0577, 0xb75: 0x057f,\n\t0xb76: 0x0583, 0xb77: 0x0587, 0xb78: 0x058b, 0xb79: 0x058f, 0xb7a: 0x0593, 0xb7b: 0x0597,\n\t0xb7c: 0x059b, 0xb7d: 0x059f, 0xb7e: 0x05a3,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x2b0c, 0xb81: 0x29a8, 0xb82: 0x2b1c, 0xb83: 0x2880, 0xb84: 0x2ee4, 0xb85: 0x288a,\n\t0xb86: 0x2894, 0xb87: 0x2f28, 0xb88: 0x29b5, 0xb89: 0x289e, 0xb8a: 0x28a8, 0xb8b: 0x28b2,\n\t0xb8c: 0x29dc, 0xb8d: 0x29e9, 0xb8e: 0x29c2, 0xb8f: 0x29cf, 0xb90: 0x2ea9, 0xb91: 0x29f6,\n\t0xb92: 0x2a03, 0xb93: 0x2bbe, 0xb94: 0x26bb, 0xb95: 0x2bd1, 0xb96: 0x2be4, 0xb97: 0x2b2c,\n\t0xb98: 0x2a10, 0xb99: 0x2bf7, 0xb9a: 0x2c0a, 0xb9b: 0x2a1d, 0xb9c: 0x28bc, 0xb9d: 0x28c6,\n\t0xb9e: 0x2eb7, 0xb9f: 0x2a2a, 0xba0: 0x2b3c, 0xba1: 0x2ef5, 0xba2: 0x28d0, 0xba3: 0x28da,\n\t0xba4: 0x2a37, 0xba5: 0x28e4, 0xba6: 0x28ee, 0xba7: 0x26d0, 0xba8: 0x26d7, 0xba9: 0x28f8,\n\t0xbaa: 0x2902, 0xbab: 0x2c1d, 0xbac: 0x2a44, 0xbad: 0x2b4c, 0xbae: 0x2c30, 0xbaf: 0x2a51,\n\t0xbb0: 0x2916, 0xbb1: 0x290c, 0xbb2: 0x2f3c, 0xbb3: 0x2a5e, 0xbb4: 0x2c43, 0xbb5: 0x2920,\n\t0xbb6: 0x2b5c, 0xbb7: 0x292a, 0xbb8: 0x2a78, 0xbb9: 0x2934, 0xbba: 0x2a85, 0xbbb: 0x2f06,\n\t0xbbc: 0x2a6b, 0xbbd: 0x2b6c, 0xbbe: 0x2a92, 0xbbf: 0x26de,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2f17, 0xbc1: 0x293e, 0xbc2: 0x2948, 0xbc3: 0x2a9f, 0xbc4: 0x2952, 0xbc5: 0x295c,\n\t0xbc6: 0x2966, 0xbc7: 0x2b7c, 0xbc8: 0x2aac, 0xbc9: 0x26e5, 0xbca: 0x2c56, 0xbcb: 0x2e90,\n\t0xbcc: 0x2b8c, 0xbcd: 0x2ab9, 0xbce: 0x2ec5, 0xbcf: 0x2970, 0xbd0: 0x297a, 0xbd1: 0x2ac6,\n\t0xbd2: 0x26ec, 0xbd3: 0x2ad3, 0xbd4: 0x2b9c, 0xbd5: 0x26f3, 0xbd6: 0x2c69, 0xbd7: 0x2984,\n\t0xbd8: 0x1cb7, 0xbd9: 0x1ccb, 0xbda: 0x1cda, 0xbdb: 0x1ce9, 0xbdc: 0x1cf8, 0xbdd: 0x1d07,\n\t0xbde: 0x1d16, 0xbdf: 0x1d25, 0xbe0: 0x1d34, 0xbe1: 0x1d43, 0xbe2: 0x2192, 0xbe3: 0x21a4,\n\t0xbe4: 0x21b6, 0xbe5: 0x21c2, 0xbe6: 0x21ce, 0xbe7: 0x21da, 0xbe8: 0x21e6, 0xbe9: 0x21f2,\n\t0xbea: 0x21fe, 0xbeb: 0x220a, 0xbec: 0x2246, 0xbed: 0x2252, 0xbee: 0x225e, 0xbef: 0x226a,\n\t0xbf0: 0x2276, 0xbf1: 0x1c14, 0xbf2: 0x19c6, 0xbf3: 0x1936, 0xbf4: 0x1be4, 0xbf5: 0x1a47,\n\t0xbf6: 0x1a56, 0xbf7: 0x19cc, 0xbf8: 0x1bfc, 0xbf9: 0x1c00, 0xbfa: 0x1960, 0xbfb: 0x2701,\n\t0xbfc: 0x270f, 0xbfd: 0x26fa, 0xbfe: 0x2708, 0xbff: 0x2ae0,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x1a4a, 0xc01: 0x1a32, 0xc02: 0x1c60, 0xc03: 0x1a1a, 0xc04: 0x19f3, 0xc05: 0x1969,\n\t0xc06: 0x1978, 0xc07: 0x1948, 0xc08: 0x1bf0, 0xc09: 0x1d52, 0xc0a: 0x1a4d, 0xc0b: 0x1a35,\n\t0xc0c: 0x1c64, 0xc0d: 0x1c70, 0xc0e: 0x1a26, 0xc0f: 0x19fc, 0xc10: 0x1957, 0xc11: 0x1c1c,\n\t0xc12: 0x1bb0, 0xc13: 0x1b9c, 0xc14: 0x1bcc, 0xc15: 0x1c74, 0xc16: 0x1a29, 0xc17: 0x19c9,\n\t0xc18: 0x19ff, 0xc19: 0x19de, 0xc1a: 0x1a41, 0xc1b: 0x1c78, 0xc1c: 0x1a2c, 0xc1d: 0x19c0,\n\t0xc1e: 0x1a02, 0xc1f: 0x1c3c, 0xc20: 0x1bf4, 0xc21: 0x1a14, 0xc22: 0x1c24, 0xc23: 0x1c40,\n\t0xc24: 0x1bf8, 0xc25: 0x1a17, 0xc26: 0x1c28, 0xc27: 0x22e8, 0xc28: 0x22fc, 0xc29: 0x1996,\n\t0xc2a: 0x1c20, 0xc2b: 0x1bb4, 0xc2c: 0x1ba0, 0xc2d: 0x1c48, 0xc2e: 0x2716, 0xc2f: 0x27ad,\n\t0xc30: 0x1a59, 0xc31: 0x1a44, 0xc32: 0x1c7c, 0xc33: 0x1a2f, 0xc34: 0x1a50, 0xc35: 0x1a38,\n\t0xc36: 0x1c68, 0xc37: 0x1a1d, 0xc38: 0x19f6, 0xc39: 0x1981, 0xc3a: 0x1a53, 0xc3b: 0x1a3b,\n\t0xc3c: 0x1c6c, 0xc3d: 0x1a20, 0xc3e: 0x19f9, 0xc3f: 0x1984,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1c2c, 0xc41: 0x1bb8, 0xc42: 0x1d4d, 0xc43: 0x1939, 0xc44: 0x19ba, 0xc45: 0x19bd,\n\t0xc46: 0x22f5, 0xc47: 0x1b94, 0xc48: 0x19c3, 0xc49: 0x194b, 0xc4a: 0x19e1, 0xc4b: 0x194e,\n\t0xc4c: 0x19ea, 0xc4d: 0x196c, 0xc4e: 0x196f, 0xc4f: 0x1a05, 0xc50: 0x1a0b, 0xc51: 0x1a0e,\n\t0xc52: 0x1c30, 0xc53: 0x1a11, 0xc54: 0x1a23, 0xc55: 0x1c38, 0xc56: 0x1c44, 0xc57: 0x1990,\n\t0xc58: 0x1d57, 0xc59: 0x1bbc, 0xc5a: 0x1993, 0xc5b: 0x1a5c, 0xc5c: 0x19a5, 0xc5d: 0x19b4,\n\t0xc5e: 0x22e2, 0xc5f: 0x22dc, 0xc60: 0x1cc1, 0xc61: 0x1cd0, 0xc62: 0x1cdf, 0xc63: 0x1cee,\n\t0xc64: 0x1cfd, 0xc65: 0x1d0c, 0xc66: 0x1d1b, 0xc67: 0x1d2a, 0xc68: 0x1d39, 0xc69: 0x2186,\n\t0xc6a: 0x2198, 0xc6b: 0x21aa, 0xc6c: 0x21bc, 0xc6d: 0x21c8, 0xc6e: 0x21d4, 0xc6f: 0x21e0,\n\t0xc70: 0x21ec, 0xc71: 0x21f8, 0xc72: 0x2204, 0xc73: 0x2240, 0xc74: 0x224c, 0xc75: 0x2258,\n\t0xc76: 0x2264, 0xc77: 0x2270, 0xc78: 0x227c, 0xc79: 0x2282, 0xc7a: 0x2288, 0xc7b: 0x228e,\n\t0xc7c: 0x2294, 0xc7d: 0x22a6, 0xc7e: 0x22ac, 0xc7f: 0x1c10,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1377, 0xc81: 0x0cfb, 0xc82: 0x13d3, 0xc83: 0x139f, 0xc84: 0x0e57, 0xc85: 0x06eb,\n\t0xc86: 0x08df, 0xc87: 0x162b, 0xc88: 0x162b, 0xc89: 0x0a0b, 0xc8a: 0x145f, 0xc8b: 0x0943,\n\t0xc8c: 0x0a07, 0xc8d: 0x0bef, 0xc8e: 0x0fcf, 0xc8f: 0x115f, 0xc90: 0x1297, 0xc91: 0x12d3,\n\t0xc92: 0x1307, 0xc93: 0x141b, 0xc94: 0x0d73, 0xc95: 0x0dff, 0xc96: 0x0eab, 0xc97: 0x0f43,\n\t0xc98: 0x125f, 0xc99: 0x1447, 0xc9a: 0x1573, 0xc9b: 0x070f, 0xc9c: 0x08b3, 0xc9d: 0x0d87,\n\t0xc9e: 0x0ecf, 0xc9f: 0x1293, 0xca0: 0x15c3, 0xca1: 0x0ab3, 0xca2: 0x0e77, 0xca3: 0x1283,\n\t0xca4: 0x1317, 0xca5: 0x0c23, 0xca6: 0x11bb, 0xca7: 0x12df, 0xca8: 0x0b1f, 0xca9: 0x0d0f,\n\t0xcaa: 0x0e17, 0xcab: 0x0f1b, 0xcac: 0x1427, 0xcad: 0x074f, 0xcae: 0x07e7, 0xcaf: 0x0853,\n\t0xcb0: 0x0c8b, 0xcb1: 0x0d7f, 0xcb2: 0x0ecb, 0xcb3: 0x0fef, 0xcb4: 0x1177, 0xcb5: 0x128b,\n\t0xcb6: 0x12a3, 0xcb7: 0x13c7, 0xcb8: 0x14ef, 0xcb9: 0x15a3, 0xcba: 0x15bf, 0xcbb: 0x102b,\n\t0xcbc: 0x106b, 0xcbd: 0x1123, 0xcbe: 0x1243, 0xcbf: 0x147b,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x15cb, 0xcc1: 0x134b, 0xcc2: 0x09c7, 0xcc3: 0x0b3b, 0xcc4: 0x10db, 0xcc5: 0x119b,\n\t0xcc6: 0x0eff, 0xcc7: 0x1033, 0xcc8: 0x1397, 0xcc9: 0x14e7, 0xcca: 0x09c3, 0xccb: 0x0a8f,\n\t0xccc: 0x0d77, 0xccd: 0x0e2b, 0xcce: 0x0e5f, 0xccf: 0x1113, 0xcd0: 0x113b, 0xcd1: 0x14a7,\n\t0xcd2: 0x084f, 0xcd3: 0x11a7, 0xcd4: 0x07f3, 0xcd5: 0x07ef, 0xcd6: 0x1097, 0xcd7: 0x1127,\n\t0xcd8: 0x125b, 0xcd9: 0x14af, 0xcda: 0x1367, 0xcdb: 0x0c27, 0xcdc: 0x0d73, 0xcdd: 0x1357,\n\t0xcde: 0x06f7, 0xcdf: 0x0a63, 0xce0: 0x0b93, 0xce1: 0x0f2f, 0xce2: 0x0faf, 0xce3: 0x0873,\n\t0xce4: 0x103b, 0xce5: 0x075f, 0xce6: 0x0b77, 0xce7: 0x06d7, 0xce8: 0x0deb, 0xce9: 0x0ca3,\n\t0xcea: 0x110f, 0xceb: 0x08c7, 0xcec: 0x09b3, 0xced: 0x0ffb, 0xcee: 0x1263, 0xcef: 0x133b,\n\t0xcf0: 0x0db7, 0xcf1: 0x13f7, 0xcf2: 0x0de3, 0xcf3: 0x0c37, 0xcf4: 0x121b, 0xcf5: 0x0c57,\n\t0xcf6: 0x0fab, 0xcf7: 0x072b, 0xcf8: 0x07a7, 0xcf9: 0x07eb, 0xcfa: 0x0d53, 0xcfb: 0x10fb,\n\t0xcfc: 0x11f3, 0xcfd: 0x1347, 0xcfe: 0x145b, 0xcff: 0x085b,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x090f, 0xd01: 0x0a17, 0xd02: 0x0b2f, 0xd03: 0x0cbf, 0xd04: 0x0e7b, 0xd05: 0x103f,\n\t0xd06: 0x1497, 0xd07: 0x157b, 0xd08: 0x15cf, 0xd09: 0x15e7, 0xd0a: 0x0837, 0xd0b: 0x0cf3,\n\t0xd0c: 0x0da3, 0xd0d: 0x13eb, 0xd0e: 0x0afb, 0xd0f: 0x0bd7, 0xd10: 0x0bf3, 0xd11: 0x0c83,\n\t0xd12: 0x0e6b, 0xd13: 0x0eb7, 0xd14: 0x0f67, 0xd15: 0x108b, 0xd16: 0x112f, 0xd17: 0x1193,\n\t0xd18: 0x13db, 0xd19: 0x126b, 0xd1a: 0x1403, 0xd1b: 0x147f, 0xd1c: 0x080f, 0xd1d: 0x083b,\n\t0xd1e: 0x0923, 0xd1f: 0x0ea7, 0xd20: 0x12f3, 0xd21: 0x133b, 0xd22: 0x0b1b, 0xd23: 0x0b8b,\n\t0xd24: 0x0c4f, 0xd25: 0x0daf, 0xd26: 0x10d7, 0xd27: 0x0f23, 0xd28: 0x073b, 0xd29: 0x097f,\n\t0xd2a: 0x0a63, 0xd2b: 0x0ac7, 0xd2c: 0x0b97, 0xd2d: 0x0f3f, 0xd2e: 0x0f5b, 0xd2f: 0x116b,\n\t0xd30: 0x118b, 0xd31: 0x1463, 0xd32: 0x14e3, 0xd33: 0x14f3, 0xd34: 0x152f, 0xd35: 0x0753,\n\t0xd36: 0x107f, 0xd37: 0x144f, 0xd38: 0x14cb, 0xd39: 0x0baf, 0xd3a: 0x0717, 0xd3b: 0x0777,\n\t0xd3c: 0x0a67, 0xd3d: 0x0a87, 0xd3e: 0x0caf, 0xd3f: 0x0d73,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0ec3, 0xd41: 0x0fcb, 0xd42: 0x1277, 0xd43: 0x1417, 0xd44: 0x1623, 0xd45: 0x0ce3,\n\t0xd46: 0x14a3, 0xd47: 0x0833, 0xd48: 0x0d2f, 0xd49: 0x0d3b, 0xd4a: 0x0e0f, 0xd4b: 0x0e47,\n\t0xd4c: 0x0f4b, 0xd4d: 0x0fa7, 0xd4e: 0x1027, 0xd4f: 0x110b, 0xd50: 0x153b, 0xd51: 0x07af,\n\t0xd52: 0x0c03, 0xd53: 0x14b3, 0xd54: 0x0767, 0xd55: 0x0aab, 0xd56: 0x0e2f, 0xd57: 0x13df,\n\t0xd58: 0x0b67, 0xd59: 0x0bb7, 0xd5a: 0x0d43, 0xd5b: 0x0f2f, 0xd5c: 0x14bb, 0xd5d: 0x0817,\n\t0xd5e: 0x08ff, 0xd5f: 0x0a97, 0xd60: 0x0cd3, 0xd61: 0x0d1f, 0xd62: 0x0d5f, 0xd63: 0x0df3,\n\t0xd64: 0x0f47, 0xd65: 0x0fbb, 0xd66: 0x1157, 0xd67: 0x12f7, 0xd68: 0x1303, 0xd69: 0x1457,\n\t0xd6a: 0x14d7, 0xd6b: 0x0883, 0xd6c: 0x0e4b, 0xd6d: 0x0903, 0xd6e: 0x0ec7, 0xd6f: 0x0f6b,\n\t0xd70: 0x1287, 0xd71: 0x14bf, 0xd72: 0x15ab, 0xd73: 0x15d3, 0xd74: 0x0d37, 0xd75: 0x0e27,\n\t0xd76: 0x11c3, 0xd77: 0x10b7, 0xd78: 0x10c3, 0xd79: 0x10e7, 0xd7a: 0x0f17, 0xd7b: 0x0e9f,\n\t0xd7c: 0x1363, 0xd7d: 0x0733, 0xd7e: 0x122b, 0xd7f: 0x081b,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x080b, 0xd81: 0x0b0b, 0xd82: 0x0c2b, 0xd83: 0x10f3, 0xd84: 0x0a53, 0xd85: 0x0e03,\n\t0xd86: 0x0cef, 0xd87: 0x13e7, 0xd88: 0x12e7, 0xd89: 0x14ab, 0xd8a: 0x1323, 0xd8b: 0x0b27,\n\t0xd8c: 0x0787, 0xd8d: 0x095b, 0xd90: 0x09af,\n\t0xd92: 0x0cdf, 0xd95: 0x07f7, 0xd96: 0x0f1f, 0xd97: 0x0fe3,\n\t0xd98: 0x1047, 0xd99: 0x1063, 0xd9a: 0x1067, 0xd9b: 0x107b, 0xd9c: 0x14fb, 0xd9d: 0x10eb,\n\t0xd9e: 0x116f, 0xda0: 0x128f, 0xda2: 0x1353,\n\t0xda5: 0x1407, 0xda6: 0x1433,\n\t0xdaa: 0x154f, 0xdab: 0x1553, 0xdac: 0x1557, 0xdad: 0x15bb, 0xdae: 0x142b, 0xdaf: 0x14c7,\n\t0xdb0: 0x0757, 0xdb1: 0x077b, 0xdb2: 0x078f, 0xdb3: 0x084b, 0xdb4: 0x0857, 0xdb5: 0x0897,\n\t0xdb6: 0x094b, 0xdb7: 0x0967, 0xdb8: 0x096f, 0xdb9: 0x09ab, 0xdba: 0x09b7, 0xdbb: 0x0a93,\n\t0xdbc: 0x0a9b, 0xdbd: 0x0ba3, 0xdbe: 0x0bcb, 0xdbf: 0x0bd3,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0beb, 0xdc1: 0x0c97, 0xdc2: 0x0cc7, 0xdc3: 0x0ce7, 0xdc4: 0x0d57, 0xdc5: 0x0e1b,\n\t0xdc6: 0x0e37, 0xdc7: 0x0e67, 0xdc8: 0x0ebb, 0xdc9: 0x0edb, 0xdca: 0x0f4f, 0xdcb: 0x102f,\n\t0xdcc: 0x104b, 0xdcd: 0x1053, 0xdce: 0x104f, 0xdcf: 0x1057, 0xdd0: 0x105b, 0xdd1: 0x105f,\n\t0xdd2: 0x1073, 0xdd3: 0x1077, 0xdd4: 0x109b, 0xdd5: 0x10af, 0xdd6: 0x10cb, 0xdd7: 0x112f,\n\t0xdd8: 0x1137, 0xdd9: 0x113f, 0xdda: 0x1153, 0xddb: 0x117b, 0xddc: 0x11cb, 0xddd: 0x11ff,\n\t0xdde: 0x11ff, 0xddf: 0x1267, 0xde0: 0x130f, 0xde1: 0x1327, 0xde2: 0x135b, 0xde3: 0x135f,\n\t0xde4: 0x13a3, 0xde5: 0x13a7, 0xde6: 0x13ff, 0xde7: 0x1407, 0xde8: 0x14db, 0xde9: 0x151f,\n\t0xdea: 0x1537, 0xdeb: 0x0b9b, 0xdec: 0x171e, 0xded: 0x11e3,\n\t0xdf0: 0x06df, 0xdf1: 0x07e3, 0xdf2: 0x07a3, 0xdf3: 0x074b, 0xdf4: 0x078b, 0xdf5: 0x07b7,\n\t0xdf6: 0x0847, 0xdf7: 0x0863, 0xdf8: 0x094b, 0xdf9: 0x0937, 0xdfa: 0x0947, 0xdfb: 0x0963,\n\t0xdfc: 0x09af, 0xdfd: 0x09bf, 0xdfe: 0x0a03, 0xdff: 0x0a0f,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0a2b, 0xe01: 0x0a3b, 0xe02: 0x0b23, 0xe03: 0x0b2b, 0xe04: 0x0b5b, 0xe05: 0x0b7b,\n\t0xe06: 0x0bab, 0xe07: 0x0bc3, 0xe08: 0x0bb3, 0xe09: 0x0bd3, 0xe0a: 0x0bc7, 0xe0b: 0x0beb,\n\t0xe0c: 0x0c07, 0xe0d: 0x0c5f, 0xe0e: 0x0c6b, 0xe0f: 0x0c73, 0xe10: 0x0c9b, 0xe11: 0x0cdf,\n\t0xe12: 0x0d0f, 0xe13: 0x0d13, 0xe14: 0x0d27, 0xe15: 0x0da7, 0xe16: 0x0db7, 0xe17: 0x0e0f,\n\t0xe18: 0x0e5b, 0xe19: 0x0e53, 0xe1a: 0x0e67, 0xe1b: 0x0e83, 0xe1c: 0x0ebb, 0xe1d: 0x1013,\n\t0xe1e: 0x0edf, 0xe1f: 0x0f13, 0xe20: 0x0f1f, 0xe21: 0x0f5f, 0xe22: 0x0f7b, 0xe23: 0x0f9f,\n\t0xe24: 0x0fc3, 0xe25: 0x0fc7, 0xe26: 0x0fe3, 0xe27: 0x0fe7, 0xe28: 0x0ff7, 0xe29: 0x100b,\n\t0xe2a: 0x1007, 0xe2b: 0x1037, 0xe2c: 0x10b3, 0xe2d: 0x10cb, 0xe2e: 0x10e3, 0xe2f: 0x111b,\n\t0xe30: 0x112f, 0xe31: 0x114b, 0xe32: 0x117b, 0xe33: 0x122f, 0xe34: 0x1257, 0xe35: 0x12cb,\n\t0xe36: 0x1313, 0xe37: 0x131f, 0xe38: 0x1327, 0xe39: 0x133f, 0xe3a: 0x1353, 0xe3b: 0x1343,\n\t0xe3c: 0x135b, 0xe3d: 0x1357, 0xe3e: 0x134f, 0xe3f: 0x135f,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x136b, 0xe41: 0x13a7, 0xe42: 0x13e3, 0xe43: 0x1413, 0xe44: 0x144b, 0xe45: 0x146b,\n\t0xe46: 0x14b7, 0xe47: 0x14db, 0xe48: 0x14fb, 0xe49: 0x150f, 0xe4a: 0x151f, 0xe4b: 0x152b,\n\t0xe4c: 0x1537, 0xe4d: 0x158b, 0xe4e: 0x162b, 0xe4f: 0x16b5, 0xe50: 0x16b0, 0xe51: 0x16e2,\n\t0xe52: 0x0607, 0xe53: 0x062f, 0xe54: 0x0633, 0xe55: 0x1764, 0xe56: 0x1791, 0xe57: 0x1809,\n\t0xe58: 0x1617, 0xe59: 0x1627,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x19d5, 0xe81: 0x19d8, 0xe82: 0x19db, 0xe83: 0x1c08, 0xe84: 0x1c0c, 0xe85: 0x1a5f,\n\t0xe86: 0x1a5f,\n\t0xe93: 0x1d75, 0xe94: 0x1d66, 0xe95: 0x1d6b, 0xe96: 0x1d7a, 0xe97: 0x1d70,\n\t0xe9d: 0x4390,\n\t0xe9e: 0x8115, 0xe9f: 0x4402, 0xea0: 0x022d, 0xea1: 0x0215, 0xea2: 0x021e, 0xea3: 0x0221,\n\t0xea4: 0x0224, 0xea5: 0x0227, 0xea6: 0x022a, 0xea7: 0x0230, 0xea8: 0x0233, 0xea9: 0x0017,\n\t0xeaa: 0x43f0, 0xeab: 0x43f6, 0xeac: 0x44f4, 0xead: 0x44fc, 0xeae: 0x4348, 0xeaf: 0x434e,\n\t0xeb0: 0x4354, 0xeb1: 0x435a, 0xeb2: 0x4366, 0xeb3: 0x436c, 0xeb4: 0x4372, 0xeb5: 0x437e,\n\t0xeb6: 0x4384, 0xeb8: 0x438a, 0xeb9: 0x4396, 0xeba: 0x439c, 0xebb: 0x43a2,\n\t0xebc: 0x43ae, 0xebe: 0x43b4,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x43ba, 0xec1: 0x43c0, 0xec3: 0x43c6, 0xec4: 0x43cc,\n\t0xec6: 0x43d8, 0xec7: 0x43de, 0xec8: 0x43e4, 0xec9: 0x43ea, 0xeca: 0x43fc, 0xecb: 0x4378,\n\t0xecc: 0x4360, 0xecd: 0x43a8, 0xece: 0x43d2, 0xecf: 0x1d7f, 0xed0: 0x0299, 0xed1: 0x0299,\n\t0xed2: 0x02a2, 0xed3: 0x02a2, 0xed4: 0x02a2, 0xed5: 0x02a2, 0xed6: 0x02a5, 0xed7: 0x02a5,\n\t0xed8: 0x02a5, 0xed9: 0x02a5, 0xeda: 0x02ab, 0xedb: 0x02ab, 0xedc: 0x02ab, 0xedd: 0x02ab,\n\t0xede: 0x029f, 0xedf: 0x029f, 0xee0: 0x029f, 0xee1: 0x029f, 0xee2: 0x02a8, 0xee3: 0x02a8,\n\t0xee4: 0x02a8, 0xee5: 0x02a8, 0xee6: 0x029c, 0xee7: 0x029c, 0xee8: 0x029c, 0xee9: 0x029c,\n\t0xeea: 0x02cf, 0xeeb: 0x02cf, 0xeec: 0x02cf, 0xeed: 0x02cf, 0xeee: 0x02d2, 0xeef: 0x02d2,\n\t0xef0: 0x02d2, 0xef1: 0x02d2, 0xef2: 0x02b1, 0xef3: 0x02b1, 0xef4: 0x02b1, 0xef5: 0x02b1,\n\t0xef6: 0x02ae, 0xef7: 0x02ae, 0xef8: 0x02ae, 0xef9: 0x02ae, 0xefa: 0x02b4, 0xefb: 0x02b4,\n\t0xefc: 0x02b4, 0xefd: 0x02b4, 0xefe: 0x02b7, 0xeff: 0x02b7,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x02b7, 0xf01: 0x02b7, 0xf02: 0x02c0, 0xf03: 0x02c0, 0xf04: 0x02bd, 0xf05: 0x02bd,\n\t0xf06: 0x02c3, 0xf07: 0x02c3, 0xf08: 0x02ba, 0xf09: 0x02ba, 0xf0a: 0x02c9, 0xf0b: 0x02c9,\n\t0xf0c: 0x02c6, 0xf0d: 0x02c6, 0xf0e: 0x02d5, 0xf0f: 0x02d5, 0xf10: 0x02d5, 0xf11: 0x02d5,\n\t0xf12: 0x02db, 0xf13: 0x02db, 0xf14: 0x02db, 0xf15: 0x02db, 0xf16: 0x02e1, 0xf17: 0x02e1,\n\t0xf18: 0x02e1, 0xf19: 0x02e1, 0xf1a: 0x02de, 0xf1b: 0x02de, 0xf1c: 0x02de, 0xf1d: 0x02de,\n\t0xf1e: 0x02e4, 0xf1f: 0x02e4, 0xf20: 0x02e7, 0xf21: 0x02e7, 0xf22: 0x02e7, 0xf23: 0x02e7,\n\t0xf24: 0x446e, 0xf25: 0x446e, 0xf26: 0x02ed, 0xf27: 0x02ed, 0xf28: 0x02ed, 0xf29: 0x02ed,\n\t0xf2a: 0x02ea, 0xf2b: 0x02ea, 0xf2c: 0x02ea, 0xf2d: 0x02ea, 0xf2e: 0x0308, 0xf2f: 0x0308,\n\t0xf30: 0x4468, 0xf31: 0x4468,\n\t// Block 0x3d, offset 0xf40\n\t0xf53: 0x02d8, 0xf54: 0x02d8, 0xf55: 0x02d8, 0xf56: 0x02d8, 0xf57: 0x02f6,\n\t0xf58: 0x02f6, 0xf59: 0x02f3, 0xf5a: 0x02f3, 0xf5b: 0x02f9, 0xf5c: 0x02f9, 0xf5d: 0x204f,\n\t0xf5e: 0x02ff, 0xf5f: 0x02ff, 0xf60: 0x02f0, 0xf61: 0x02f0, 0xf62: 0x02fc, 0xf63: 0x02fc,\n\t0xf64: 0x0305, 0xf65: 0x0305, 0xf66: 0x0305, 0xf67: 0x0305, 0xf68: 0x028d, 0xf69: 0x028d,\n\t0xf6a: 0x25aa, 0xf6b: 0x25aa, 0xf6c: 0x261a, 0xf6d: 0x261a, 0xf6e: 0x25e9, 0xf6f: 0x25e9,\n\t0xf70: 0x2605, 0xf71: 0x2605, 0xf72: 0x25fe, 0xf73: 0x25fe, 0xf74: 0x260c, 0xf75: 0x260c,\n\t0xf76: 0x2613, 0xf77: 0x2613, 0xf78: 0x2613, 0xf79: 0x25f0, 0xf7a: 0x25f0, 0xf7b: 0x25f0,\n\t0xf7c: 0x0302, 0xf7d: 0x0302, 0xf7e: 0x0302, 0xf7f: 0x0302,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x25b1, 0xf81: 0x25b8, 0xf82: 0x25d4, 0xf83: 0x25f0, 0xf84: 0x25f7, 0xf85: 0x1d89,\n\t0xf86: 0x1d8e, 0xf87: 0x1d93, 0xf88: 0x1da2, 0xf89: 0x1db1, 0xf8a: 0x1db6, 0xf8b: 0x1dbb,\n\t0xf8c: 0x1dc0, 0xf8d: 0x1dc5, 0xf8e: 0x1dd4, 0xf8f: 0x1de3, 0xf90: 0x1de8, 0xf91: 0x1ded,\n\t0xf92: 0x1dfc, 0xf93: 0x1e0b, 0xf94: 0x1e10, 0xf95: 0x1e15, 0xf96: 0x1e1a, 0xf97: 0x1e29,\n\t0xf98: 0x1e2e, 0xf99: 0x1e3d, 0xf9a: 0x1e42, 0xf9b: 0x1e47, 0xf9c: 0x1e56, 0xf9d: 0x1e5b,\n\t0xf9e: 0x1e60, 0xf9f: 0x1e6a, 0xfa0: 0x1ea6, 0xfa1: 0x1eb5, 0xfa2: 0x1ec4, 0xfa3: 0x1ec9,\n\t0xfa4: 0x1ece, 0xfa5: 0x1ed8, 0xfa6: 0x1ee7, 0xfa7: 0x1eec, 0xfa8: 0x1efb, 0xfa9: 0x1f00,\n\t0xfaa: 0x1f05, 0xfab: 0x1f14, 0xfac: 0x1f19, 0xfad: 0x1f28, 0xfae: 0x1f2d, 0xfaf: 0x1f32,\n\t0xfb0: 0x1f37, 0xfb1: 0x1f3c, 0xfb2: 0x1f41, 0xfb3: 0x1f46, 0xfb4: 0x1f4b, 0xfb5: 0x1f50,\n\t0xfb6: 0x1f55, 0xfb7: 0x1f5a, 0xfb8: 0x1f5f, 0xfb9: 0x1f64, 0xfba: 0x1f69, 0xfbb: 0x1f6e,\n\t0xfbc: 0x1f73, 0xfbd: 0x1f78, 0xfbe: 0x1f7d, 0xfbf: 0x1f87,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x1f8c, 0xfc1: 0x1f91, 0xfc2: 0x1f96, 0xfc3: 0x1fa0, 0xfc4: 0x1fa5, 0xfc5: 0x1faf,\n\t0xfc6: 0x1fb4, 0xfc7: 0x1fb9, 0xfc8: 0x1fbe, 0xfc9: 0x1fc3, 0xfca: 0x1fc8, 0xfcb: 0x1fcd,\n\t0xfcc: 0x1fd2, 0xfcd: 0x1fd7, 0xfce: 0x1fe6, 0xfcf: 0x1ff5, 0xfd0: 0x1ffa, 0xfd1: 0x1fff,\n\t0xfd2: 0x2004, 0xfd3: 0x2009, 0xfd4: 0x200e, 0xfd5: 0x2018, 0xfd6: 0x201d, 0xfd7: 0x2022,\n\t0xfd8: 0x2031, 0xfd9: 0x2040, 0xfda: 0x2045, 0xfdb: 0x4420, 0xfdc: 0x4426, 0xfdd: 0x445c,\n\t0xfde: 0x44b3, 0xfdf: 0x44ba, 0xfe0: 0x44c1, 0xfe1: 0x44c8, 0xfe2: 0x44cf, 0xfe3: 0x44d6,\n\t0xfe4: 0x25c6, 0xfe5: 0x25cd, 0xfe6: 0x25d4, 0xfe7: 0x25db, 0xfe8: 0x25f0, 0xfe9: 0x25f7,\n\t0xfea: 0x1d98, 0xfeb: 0x1d9d, 0xfec: 0x1da2, 0xfed: 0x1da7, 0xfee: 0x1db1, 0xfef: 0x1db6,\n\t0xff0: 0x1dca, 0xff1: 0x1dcf, 0xff2: 0x1dd4, 0xff3: 0x1dd9, 0xff4: 0x1de3, 0xff5: 0x1de8,\n\t0xff6: 0x1df2, 0xff7: 0x1df7, 0xff8: 0x1dfc, 0xff9: 0x1e01, 0xffa: 0x1e0b, 0xffb: 0x1e10,\n\t0xffc: 0x1f3c, 0xffd: 0x1f41, 0xffe: 0x1f50, 0xfff: 0x1f55,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f5a, 0x1001: 0x1f6e, 0x1002: 0x1f73, 0x1003: 0x1f78, 0x1004: 0x1f7d, 0x1005: 0x1f96,\n\t0x1006: 0x1fa0, 0x1007: 0x1fa5, 0x1008: 0x1faa, 0x1009: 0x1fbe, 0x100a: 0x1fdc, 0x100b: 0x1fe1,\n\t0x100c: 0x1fe6, 0x100d: 0x1feb, 0x100e: 0x1ff5, 0x100f: 0x1ffa, 0x1010: 0x445c, 0x1011: 0x2027,\n\t0x1012: 0x202c, 0x1013: 0x2031, 0x1014: 0x2036, 0x1015: 0x2040, 0x1016: 0x2045, 0x1017: 0x25b1,\n\t0x1018: 0x25b8, 0x1019: 0x25bf, 0x101a: 0x25d4, 0x101b: 0x25e2, 0x101c: 0x1d89, 0x101d: 0x1d8e,\n\t0x101e: 0x1d93, 0x101f: 0x1da2, 0x1020: 0x1dac, 0x1021: 0x1dbb, 0x1022: 0x1dc0, 0x1023: 0x1dc5,\n\t0x1024: 0x1dd4, 0x1025: 0x1dde, 0x1026: 0x1dfc, 0x1027: 0x1e15, 0x1028: 0x1e1a, 0x1029: 0x1e29,\n\t0x102a: 0x1e2e, 0x102b: 0x1e3d, 0x102c: 0x1e47, 0x102d: 0x1e56, 0x102e: 0x1e5b, 0x102f: 0x1e60,\n\t0x1030: 0x1e6a, 0x1031: 0x1ea6, 0x1032: 0x1eab, 0x1033: 0x1eb5, 0x1034: 0x1ec4, 0x1035: 0x1ec9,\n\t0x1036: 0x1ece, 0x1037: 0x1ed8, 0x1038: 0x1ee7, 0x1039: 0x1efb, 0x103a: 0x1f00, 0x103b: 0x1f05,\n\t0x103c: 0x1f14, 0x103d: 0x1f19, 0x103e: 0x1f28, 0x103f: 0x1f2d,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1f32, 0x1041: 0x1f37, 0x1042: 0x1f46, 0x1043: 0x1f4b, 0x1044: 0x1f5f, 0x1045: 0x1f64,\n\t0x1046: 0x1f69, 0x1047: 0x1f6e, 0x1048: 0x1f73, 0x1049: 0x1f87, 0x104a: 0x1f8c, 0x104b: 0x1f91,\n\t0x104c: 0x1f96, 0x104d: 0x1f9b, 0x104e: 0x1faf, 0x104f: 0x1fb4, 0x1050: 0x1fb9, 0x1051: 0x1fbe,\n\t0x1052: 0x1fcd, 0x1053: 0x1fd2, 0x1054: 0x1fd7, 0x1055: 0x1fe6, 0x1056: 0x1ff0, 0x1057: 0x1fff,\n\t0x1058: 0x2004, 0x1059: 0x4450, 0x105a: 0x2018, 0x105b: 0x201d, 0x105c: 0x2022, 0x105d: 0x2031,\n\t0x105e: 0x203b, 0x105f: 0x25d4, 0x1060: 0x25e2, 0x1061: 0x1da2, 0x1062: 0x1dac, 0x1063: 0x1dd4,\n\t0x1064: 0x1dde, 0x1065: 0x1dfc, 0x1066: 0x1e06, 0x1067: 0x1e6a, 0x1068: 0x1e6f, 0x1069: 0x1e92,\n\t0x106a: 0x1e97, 0x106b: 0x1f6e, 0x106c: 0x1f73, 0x106d: 0x1f96, 0x106e: 0x1fe6, 0x106f: 0x1ff0,\n\t0x1070: 0x2031, 0x1071: 0x203b, 0x1072: 0x4504, 0x1073: 0x450c, 0x1074: 0x4514, 0x1075: 0x1ef1,\n\t0x1076: 0x1ef6, 0x1077: 0x1f0a, 0x1078: 0x1f0f, 0x1079: 0x1f1e, 0x107a: 0x1f23, 0x107b: 0x1e74,\n\t0x107c: 0x1e79, 0x107d: 0x1e9c, 0x107e: 0x1ea1, 0x107f: 0x1e33,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x1e38, 0x1081: 0x1e1f, 0x1082: 0x1e24, 0x1083: 0x1e4c, 0x1084: 0x1e51, 0x1085: 0x1eba,\n\t0x1086: 0x1ebf, 0x1087: 0x1edd, 0x1088: 0x1ee2, 0x1089: 0x1e7e, 0x108a: 0x1e83, 0x108b: 0x1e88,\n\t0x108c: 0x1e92, 0x108d: 0x1e8d, 0x108e: 0x1e65, 0x108f: 0x1eb0, 0x1090: 0x1ed3, 0x1091: 0x1ef1,\n\t0x1092: 0x1ef6, 0x1093: 0x1f0a, 0x1094: 0x1f0f, 0x1095: 0x1f1e, 0x1096: 0x1f23, 0x1097: 0x1e74,\n\t0x1098: 0x1e79, 0x1099: 0x1e9c, 0x109a: 0x1ea1, 0x109b: 0x1e33, 0x109c: 0x1e38, 0x109d: 0x1e1f,\n\t0x109e: 0x1e24, 0x109f: 0x1e4c, 0x10a0: 0x1e51, 0x10a1: 0x1eba, 0x10a2: 0x1ebf, 0x10a3: 0x1edd,\n\t0x10a4: 0x1ee2, 0x10a5: 0x1e7e, 0x10a6: 0x1e83, 0x10a7: 0x1e88, 0x10a8: 0x1e92, 0x10a9: 0x1e8d,\n\t0x10aa: 0x1e65, 0x10ab: 0x1eb0, 0x10ac: 0x1ed3, 0x10ad: 0x1e7e, 0x10ae: 0x1e83, 0x10af: 0x1e88,\n\t0x10b0: 0x1e92, 0x10b1: 0x1e6f, 0x10b2: 0x1e97, 0x10b3: 0x1eec, 0x10b4: 0x1e56, 0x10b5: 0x1e5b,\n\t0x10b6: 0x1e60, 0x10b7: 0x1e7e, 0x10b8: 0x1e83, 0x10b9: 0x1e88, 0x10ba: 0x1eec, 0x10bb: 0x1efb,\n\t0x10bc: 0x4408, 0x10bd: 0x4408,\n\t// Block 0x43, offset 0x10c0\n\t0x10d0: 0x2311, 0x10d1: 0x2326,\n\t0x10d2: 0x2326, 0x10d3: 0x232d, 0x10d4: 0x2334, 0x10d5: 0x2349, 0x10d6: 0x2350, 0x10d7: 0x2357,\n\t0x10d8: 0x237a, 0x10d9: 0x237a, 0x10da: 0x239d, 0x10db: 0x2396, 0x10dc: 0x23b2, 0x10dd: 0x23a4,\n\t0x10de: 0x23ab, 0x10df: 0x23ce, 0x10e0: 0x23ce, 0x10e1: 0x23c7, 0x10e2: 0x23d5, 0x10e3: 0x23d5,\n\t0x10e4: 0x23ff, 0x10e5: 0x23ff, 0x10e6: 0x241b, 0x10e7: 0x23e3, 0x10e8: 0x23e3, 0x10e9: 0x23dc,\n\t0x10ea: 0x23f1, 0x10eb: 0x23f1, 0x10ec: 0x23f8, 0x10ed: 0x23f8, 0x10ee: 0x2422, 0x10ef: 0x2430,\n\t0x10f0: 0x2430, 0x10f1: 0x2437, 0x10f2: 0x2437, 0x10f3: 0x243e, 0x10f4: 0x2445, 0x10f5: 0x244c,\n\t0x10f6: 0x2453, 0x10f7: 0x2453, 0x10f8: 0x245a, 0x10f9: 0x2468, 0x10fa: 0x2476, 0x10fb: 0x246f,\n\t0x10fc: 0x247d, 0x10fd: 0x247d, 0x10fe: 0x2492, 0x10ff: 0x2499,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x24ca, 0x1101: 0x24d8, 0x1102: 0x24d1, 0x1103: 0x24b5, 0x1104: 0x24b5, 0x1105: 0x24df,\n\t0x1106: 0x24df, 0x1107: 0x24e6, 0x1108: 0x24e6, 0x1109: 0x2510, 0x110a: 0x2517, 0x110b: 0x251e,\n\t0x110c: 0x24f4, 0x110d: 0x2502, 0x110e: 0x2525, 0x110f: 0x252c,\n\t0x1112: 0x24fb, 0x1113: 0x2580, 0x1114: 0x2587, 0x1115: 0x255d, 0x1116: 0x2564, 0x1117: 0x2548,\n\t0x1118: 0x2548, 0x1119: 0x254f, 0x111a: 0x2579, 0x111b: 0x2572, 0x111c: 0x259c, 0x111d: 0x259c,\n\t0x111e: 0x230a, 0x111f: 0x231f, 0x1120: 0x2318, 0x1121: 0x2342, 0x1122: 0x233b, 0x1123: 0x2365,\n\t0x1124: 0x235e, 0x1125: 0x2388, 0x1126: 0x236c, 0x1127: 0x2381, 0x1128: 0x23b9, 0x1129: 0x2406,\n\t0x112a: 0x23ea, 0x112b: 0x2429, 0x112c: 0x24c3, 0x112d: 0x24ed, 0x112e: 0x2595, 0x112f: 0x258e,\n\t0x1130: 0x25a3, 0x1131: 0x253a, 0x1132: 0x24a0, 0x1133: 0x256b, 0x1134: 0x2492, 0x1135: 0x24ca,\n\t0x1136: 0x2461, 0x1137: 0x24ae, 0x1138: 0x2541, 0x1139: 0x2533, 0x113a: 0x24bc, 0x113b: 0x24a7,\n\t0x113c: 0x24bc, 0x113d: 0x2541, 0x113e: 0x2373, 0x113f: 0x238f,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x2509, 0x1141: 0x2484, 0x1142: 0x2303, 0x1143: 0x24a7, 0x1144: 0x244c, 0x1145: 0x241b,\n\t0x1146: 0x23c0, 0x1147: 0x2556,\n\t0x1170: 0x2414, 0x1171: 0x248b, 0x1172: 0x27bf, 0x1173: 0x27b6, 0x1174: 0x27ec, 0x1175: 0x27da,\n\t0x1176: 0x27c8, 0x1177: 0x27e3, 0x1178: 0x27f5, 0x1179: 0x240d, 0x117a: 0x2c7c, 0x117b: 0x2afc,\n\t0x117c: 0x27d1,\n\t// Block 0x46, offset 0x1180\n\t0x1190: 0x0019, 0x1191: 0x0483,\n\t0x1192: 0x0487, 0x1193: 0x0035, 0x1194: 0x0037, 0x1195: 0x0003, 0x1196: 0x003f, 0x1197: 0x04bf,\n\t0x1198: 0x04c3, 0x1199: 0x1b5c,\n\t0x11a0: 0x8132, 0x11a1: 0x8132, 0x11a2: 0x8132, 0x11a3: 0x8132,\n\t0x11a4: 0x8132, 0x11a5: 0x8132, 0x11a6: 0x8132, 0x11a7: 0x812d, 0x11a8: 0x812d, 0x11a9: 0x812d,\n\t0x11aa: 0x812d, 0x11ab: 0x812d, 0x11ac: 0x812d, 0x11ad: 0x812d, 0x11ae: 0x8132, 0x11af: 0x8132,\n\t0x11b0: 0x1873, 0x11b1: 0x0443, 0x11b2: 0x043f, 0x11b3: 0x007f, 0x11b4: 0x007f, 0x11b5: 0x0011,\n\t0x11b6: 0x0013, 0x11b7: 0x00b7, 0x11b8: 0x00bb, 0x11b9: 0x04b7, 0x11ba: 0x04bb, 0x11bb: 0x04ab,\n\t0x11bc: 0x04af, 0x11bd: 0x0493, 0x11be: 0x0497, 0x11bf: 0x048b,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x048f, 0x11c1: 0x049b, 0x11c2: 0x049f, 0x11c3: 0x04a3, 0x11c4: 0x04a7,\n\t0x11c7: 0x0077, 0x11c8: 0x007b, 0x11c9: 0x4269, 0x11ca: 0x4269, 0x11cb: 0x4269,\n\t0x11cc: 0x4269, 0x11cd: 0x007f, 0x11ce: 0x007f, 0x11cf: 0x007f, 0x11d0: 0x0019, 0x11d1: 0x0483,\n\t0x11d2: 0x001d, 0x11d4: 0x0037, 0x11d5: 0x0035, 0x11d6: 0x003f, 0x11d7: 0x0003,\n\t0x11d8: 0x0443, 0x11d9: 0x0011, 0x11da: 0x0013, 0x11db: 0x00b7, 0x11dc: 0x00bb, 0x11dd: 0x04b7,\n\t0x11de: 0x04bb, 0x11df: 0x0007, 0x11e0: 0x000d, 0x11e1: 0x0015, 0x11e2: 0x0017, 0x11e3: 0x001b,\n\t0x11e4: 0x0039, 0x11e5: 0x003d, 0x11e6: 0x003b, 0x11e8: 0x0079, 0x11e9: 0x0009,\n\t0x11ea: 0x000b, 0x11eb: 0x0041,\n\t0x11f0: 0x42aa, 0x11f1: 0x442c, 0x11f2: 0x42af, 0x11f4: 0x42b4,\n\t0x11f6: 0x42b9, 0x11f7: 0x4432, 0x11f8: 0x42be, 0x11f9: 0x4438, 0x11fa: 0x42c3, 0x11fb: 0x443e,\n\t0x11fc: 0x42c8, 0x11fd: 0x4444, 0x11fe: 0x42cd, 0x11ff: 0x444a,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x0236, 0x1201: 0x440e, 0x1202: 0x440e, 0x1203: 0x4414, 0x1204: 0x4414, 0x1205: 0x4456,\n\t0x1206: 0x4456, 0x1207: 0x441a, 0x1208: 0x441a, 0x1209: 0x4462, 0x120a: 0x4462, 0x120b: 0x4462,\n\t0x120c: 0x4462, 0x120d: 0x0239, 0x120e: 0x0239, 0x120f: 0x023c, 0x1210: 0x023c, 0x1211: 0x023c,\n\t0x1212: 0x023c, 0x1213: 0x023f, 0x1214: 0x023f, 0x1215: 0x0242, 0x1216: 0x0242, 0x1217: 0x0242,\n\t0x1218: 0x0242, 0x1219: 0x0245, 0x121a: 0x0245, 0x121b: 0x0245, 0x121c: 0x0245, 0x121d: 0x0248,\n\t0x121e: 0x0248, 0x121f: 0x0248, 0x1220: 0x0248, 0x1221: 0x024b, 0x1222: 0x024b, 0x1223: 0x024b,\n\t0x1224: 0x024b, 0x1225: 0x024e, 0x1226: 0x024e, 0x1227: 0x024e, 0x1228: 0x024e, 0x1229: 0x0251,\n\t0x122a: 0x0251, 0x122b: 0x0254, 0x122c: 0x0254, 0x122d: 0x0257, 0x122e: 0x0257, 0x122f: 0x025a,\n\t0x1230: 0x025a, 0x1231: 0x025d, 0x1232: 0x025d, 0x1233: 0x025d, 0x1234: 0x025d, 0x1235: 0x0260,\n\t0x1236: 0x0260, 0x1237: 0x0260, 0x1238: 0x0260, 0x1239: 0x0263, 0x123a: 0x0263, 0x123b: 0x0263,\n\t0x123c: 0x0263, 0x123d: 0x0266, 0x123e: 0x0266, 0x123f: 0x0266,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0266, 0x1241: 0x0269, 0x1242: 0x0269, 0x1243: 0x0269, 0x1244: 0x0269, 0x1245: 0x026c,\n\t0x1246: 0x026c, 0x1247: 0x026c, 0x1248: 0x026c, 0x1249: 0x026f, 0x124a: 0x026f, 0x124b: 0x026f,\n\t0x124c: 0x026f, 0x124d: 0x0272, 0x124e: 0x0272, 0x124f: 0x0272, 0x1250: 0x0272, 0x1251: 0x0275,\n\t0x1252: 0x0275, 0x1253: 0x0275, 0x1254: 0x0275, 0x1255: 0x0278, 0x1256: 0x0278, 0x1257: 0x0278,\n\t0x1258: 0x0278, 0x1259: 0x027b, 0x125a: 0x027b, 0x125b: 0x027b, 0x125c: 0x027b, 0x125d: 0x027e,\n\t0x125e: 0x027e, 0x125f: 0x027e, 0x1260: 0x027e, 0x1261: 0x0281, 0x1262: 0x0281, 0x1263: 0x0281,\n\t0x1264: 0x0281, 0x1265: 0x0284, 0x1266: 0x0284, 0x1267: 0x0284, 0x1268: 0x0284, 0x1269: 0x0287,\n\t0x126a: 0x0287, 0x126b: 0x0287, 0x126c: 0x0287, 0x126d: 0x028a, 0x126e: 0x028a, 0x126f: 0x028d,\n\t0x1270: 0x028d, 0x1271: 0x0290, 0x1272: 0x0290, 0x1273: 0x0290, 0x1274: 0x0290, 0x1275: 0x2e00,\n\t0x1276: 0x2e00, 0x1277: 0x2e08, 0x1278: 0x2e08, 0x1279: 0x2e10, 0x127a: 0x2e10, 0x127b: 0x1f82,\n\t0x127c: 0x1f82,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0081, 0x1281: 0x0083, 0x1282: 0x0085, 0x1283: 0x0087, 0x1284: 0x0089, 0x1285: 0x008b,\n\t0x1286: 0x008d, 0x1287: 0x008f, 0x1288: 0x0091, 0x1289: 0x0093, 0x128a: 0x0095, 0x128b: 0x0097,\n\t0x128c: 0x0099, 0x128d: 0x009b, 0x128e: 0x009d, 0x128f: 0x009f, 0x1290: 0x00a1, 0x1291: 0x00a3,\n\t0x1292: 0x00a5, 0x1293: 0x00a7, 0x1294: 0x00a9, 0x1295: 0x00ab, 0x1296: 0x00ad, 0x1297: 0x00af,\n\t0x1298: 0x00b1, 0x1299: 0x00b3, 0x129a: 0x00b5, 0x129b: 0x00b7, 0x129c: 0x00b9, 0x129d: 0x00bb,\n\t0x129e: 0x00bd, 0x129f: 0x0477, 0x12a0: 0x047b, 0x12a1: 0x0487, 0x12a2: 0x049b, 0x12a3: 0x049f,\n\t0x12a4: 0x0483, 0x12a5: 0x05ab, 0x12a6: 0x05a3, 0x12a7: 0x04c7, 0x12a8: 0x04cf, 0x12a9: 0x04d7,\n\t0x12aa: 0x04df, 0x12ab: 0x04e7, 0x12ac: 0x056b, 0x12ad: 0x0573, 0x12ae: 0x057b, 0x12af: 0x051f,\n\t0x12b0: 0x05af, 0x12b1: 0x04cb, 0x12b2: 0x04d3, 0x12b3: 0x04db, 0x12b4: 0x04e3, 0x12b5: 0x04eb,\n\t0x12b6: 0x04ef, 0x12b7: 0x04f3, 0x12b8: 0x04f7, 0x12b9: 0x04fb, 0x12ba: 0x04ff, 0x12bb: 0x0503,\n\t0x12bc: 0x0507, 0x12bd: 0x050b, 0x12be: 0x050f, 0x12bf: 0x0513,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0517, 0x12c1: 0x051b, 0x12c2: 0x0523, 0x12c3: 0x0527, 0x12c4: 0x052b, 0x12c5: 0x052f,\n\t0x12c6: 0x0533, 0x12c7: 0x0537, 0x12c8: 0x053b, 0x12c9: 0x053f, 0x12ca: 0x0543, 0x12cb: 0x0547,\n\t0x12cc: 0x054b, 0x12cd: 0x054f, 0x12ce: 0x0553, 0x12cf: 0x0557, 0x12d0: 0x055b, 0x12d1: 0x055f,\n\t0x12d2: 0x0563, 0x12d3: 0x0567, 0x12d4: 0x056f, 0x12d5: 0x0577, 0x12d6: 0x057f, 0x12d7: 0x0583,\n\t0x12d8: 0x0587, 0x12d9: 0x058b, 0x12da: 0x058f, 0x12db: 0x0593, 0x12dc: 0x0597, 0x12dd: 0x05a7,\n\t0x12de: 0x4a78, 0x12df: 0x4a7e, 0x12e0: 0x03c3, 0x12e1: 0x0313, 0x12e2: 0x0317, 0x12e3: 0x4a3b,\n\t0x12e4: 0x031b, 0x12e5: 0x4a41, 0x12e6: 0x4a47, 0x12e7: 0x031f, 0x12e8: 0x0323, 0x12e9: 0x0327,\n\t0x12ea: 0x4a4d, 0x12eb: 0x4a53, 0x12ec: 0x4a59, 0x12ed: 0x4a5f, 0x12ee: 0x4a65, 0x12ef: 0x4a6b,\n\t0x12f0: 0x0367, 0x12f1: 0x032b, 0x12f2: 0x032f, 0x12f3: 0x0333, 0x12f4: 0x037b, 0x12f5: 0x0337,\n\t0x12f6: 0x033b, 0x12f7: 0x033f, 0x12f8: 0x0343, 0x12f9: 0x0347, 0x12fa: 0x034b, 0x12fb: 0x034f,\n\t0x12fc: 0x0353, 0x12fd: 0x0357, 0x12fe: 0x035b,\n\t// Block 0x4c, offset 0x1300\n\t0x1302: 0x49bd, 0x1303: 0x49c3, 0x1304: 0x49c9, 0x1305: 0x49cf,\n\t0x1306: 0x49d5, 0x1307: 0x49db, 0x130a: 0x49e1, 0x130b: 0x49e7,\n\t0x130c: 0x49ed, 0x130d: 0x49f3, 0x130e: 0x49f9, 0x130f: 0x49ff,\n\t0x1312: 0x4a05, 0x1313: 0x4a0b, 0x1314: 0x4a11, 0x1315: 0x4a17, 0x1316: 0x4a1d, 0x1317: 0x4a23,\n\t0x131a: 0x4a29, 0x131b: 0x4a2f, 0x131c: 0x4a35,\n\t0x1320: 0x00bf, 0x1321: 0x00c2, 0x1322: 0x00cb, 0x1323: 0x4264,\n\t0x1324: 0x00c8, 0x1325: 0x00c5, 0x1326: 0x0447, 0x1328: 0x046b, 0x1329: 0x044b,\n\t0x132a: 0x044f, 0x132b: 0x0453, 0x132c: 0x0457, 0x132d: 0x046f, 0x132e: 0x0473,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x0063, 0x1341: 0x0065, 0x1342: 0x0067, 0x1343: 0x0069, 0x1344: 0x006b, 0x1345: 0x006d,\n\t0x1346: 0x006f, 0x1347: 0x0071, 0x1348: 0x0073, 0x1349: 0x0075, 0x134a: 0x0083, 0x134b: 0x0085,\n\t0x134c: 0x0087, 0x134d: 0x0089, 0x134e: 0x008b, 0x134f: 0x008d, 0x1350: 0x008f, 0x1351: 0x0091,\n\t0x1352: 0x0093, 0x1353: 0x0095, 0x1354: 0x0097, 0x1355: 0x0099, 0x1356: 0x009b, 0x1357: 0x009d,\n\t0x1358: 0x009f, 0x1359: 0x00a1, 0x135a: 0x00a3, 0x135b: 0x00a5, 0x135c: 0x00a7, 0x135d: 0x00a9,\n\t0x135e: 0x00ab, 0x135f: 0x00ad, 0x1360: 0x00af, 0x1361: 0x00b1, 0x1362: 0x00b3, 0x1363: 0x00b5,\n\t0x1364: 0x00dd, 0x1365: 0x00f2, 0x1368: 0x0173, 0x1369: 0x0176,\n\t0x136a: 0x0179, 0x136b: 0x017c, 0x136c: 0x017f, 0x136d: 0x0182, 0x136e: 0x0185, 0x136f: 0x0188,\n\t0x1370: 0x018b, 0x1371: 0x018e, 0x1372: 0x0191, 0x1373: 0x0194, 0x1374: 0x0197, 0x1375: 0x019a,\n\t0x1376: 0x019d, 0x1377: 0x01a0, 0x1378: 0x01a3, 0x1379: 0x0188, 0x137a: 0x01a6, 0x137b: 0x01a9,\n\t0x137c: 0x01ac, 0x137d: 0x01af, 0x137e: 0x01b2, 0x137f: 0x01b5,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x01fd, 0x1381: 0x0200, 0x1382: 0x0203, 0x1383: 0x045b, 0x1384: 0x01c7, 0x1385: 0x01d0,\n\t0x1386: 0x01d6, 0x1387: 0x01fa, 0x1388: 0x01eb, 0x1389: 0x01e8, 0x138a: 0x0206, 0x138b: 0x0209,\n\t0x138e: 0x0021, 0x138f: 0x0023, 0x1390: 0x0025, 0x1391: 0x0027,\n\t0x1392: 0x0029, 0x1393: 0x002b, 0x1394: 0x002d, 0x1395: 0x002f, 0x1396: 0x0031, 0x1397: 0x0033,\n\t0x1398: 0x0021, 0x1399: 0x0023, 0x139a: 0x0025, 0x139b: 0x0027, 0x139c: 0x0029, 0x139d: 0x002b,\n\t0x139e: 0x002d, 0x139f: 0x002f, 0x13a0: 0x0031, 0x13a1: 0x0033, 0x13a2: 0x0021, 0x13a3: 0x0023,\n\t0x13a4: 0x0025, 0x13a5: 0x0027, 0x13a6: 0x0029, 0x13a7: 0x002b, 0x13a8: 0x002d, 0x13a9: 0x002f,\n\t0x13aa: 0x0031, 0x13ab: 0x0033, 0x13ac: 0x0021, 0x13ad: 0x0023, 0x13ae: 0x0025, 0x13af: 0x0027,\n\t0x13b0: 0x0029, 0x13b1: 0x002b, 0x13b2: 0x002d, 0x13b3: 0x002f, 0x13b4: 0x0031, 0x13b5: 0x0033,\n\t0x13b6: 0x0021, 0x13b7: 0x0023, 0x13b8: 0x0025, 0x13b9: 0x0027, 0x13ba: 0x0029, 0x13bb: 0x002b,\n\t0x13bc: 0x002d, 0x13bd: 0x002f, 0x13be: 0x0031, 0x13bf: 0x0033,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0239, 0x13c1: 0x023c, 0x13c2: 0x0248, 0x13c3: 0x0251, 0x13c5: 0x028a,\n\t0x13c6: 0x025a, 0x13c7: 0x024b, 0x13c8: 0x0269, 0x13c9: 0x0290, 0x13ca: 0x027b, 0x13cb: 0x027e,\n\t0x13cc: 0x0281, 0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d0: 0x0275, 0x13d1: 0x0263,\n\t0x13d2: 0x0278, 0x13d3: 0x0257, 0x13d4: 0x0260, 0x13d5: 0x0242, 0x13d6: 0x0245, 0x13d7: 0x024e,\n\t0x13d8: 0x0254, 0x13d9: 0x0266, 0x13da: 0x026c, 0x13db: 0x0272, 0x13dc: 0x0293, 0x13dd: 0x02e4,\n\t0x13de: 0x02cc, 0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248,\n\t0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e9: 0x0290,\n\t0x13ea: 0x027b, 0x13eb: 0x027e, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f,\n\t0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242,\n\t0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fb: 0x0272,\n\t// Block 0x50, offset 0x1400\n\t0x1402: 0x0248,\n\t0x1407: 0x024b, 0x1409: 0x0290, 0x140b: 0x027e,\n\t0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1411: 0x0263,\n\t0x1412: 0x0278, 0x1414: 0x0260, 0x1417: 0x024e,\n\t0x1419: 0x0266, 0x141b: 0x0272, 0x141d: 0x02e4,\n\t0x141f: 0x0296, 0x1421: 0x023c, 0x1422: 0x0248,\n\t0x1424: 0x0287, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290,\n\t0x142a: 0x027b, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,\n\t0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1434: 0x0260, 0x1435: 0x0242,\n\t0x1436: 0x0245, 0x1437: 0x024e, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272,\n\t0x143c: 0x0293, 0x143e: 0x02cc,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0239, 0x1441: 0x023c, 0x1442: 0x0248, 0x1443: 0x0251, 0x1444: 0x0287, 0x1445: 0x028a,\n\t0x1446: 0x025a, 0x1447: 0x024b, 0x1448: 0x0269, 0x1449: 0x0290, 0x144b: 0x027e,\n\t0x144c: 0x0281, 0x144d: 0x0284, 0x144e: 0x025d, 0x144f: 0x026f, 0x1450: 0x0275, 0x1451: 0x0263,\n\t0x1452: 0x0278, 0x1453: 0x0257, 0x1454: 0x0260, 0x1455: 0x0242, 0x1456: 0x0245, 0x1457: 0x024e,\n\t0x1458: 0x0254, 0x1459: 0x0266, 0x145a: 0x026c, 0x145b: 0x0272,\n\t0x1461: 0x023c, 0x1462: 0x0248, 0x1463: 0x0251,\n\t0x1465: 0x028a, 0x1466: 0x025a, 0x1467: 0x024b, 0x1468: 0x0269, 0x1469: 0x0290,\n\t0x146b: 0x027e, 0x146c: 0x0281, 0x146d: 0x0284, 0x146e: 0x025d, 0x146f: 0x026f,\n\t0x1470: 0x0275, 0x1471: 0x0263, 0x1472: 0x0278, 0x1473: 0x0257, 0x1474: 0x0260, 0x1475: 0x0242,\n\t0x1476: 0x0245, 0x1477: 0x024e, 0x1478: 0x0254, 0x1479: 0x0266, 0x147a: 0x026c, 0x147b: 0x0272,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x1879, 0x1481: 0x1876, 0x1482: 0x187c, 0x1483: 0x18a0, 0x1484: 0x18c4, 0x1485: 0x18e8,\n\t0x1486: 0x190c, 0x1487: 0x1915, 0x1488: 0x191b, 0x1489: 0x1921, 0x148a: 0x1927,\n\t0x1490: 0x1a8c, 0x1491: 0x1a90,\n\t0x1492: 0x1a94, 0x1493: 0x1a98, 0x1494: 0x1a9c, 0x1495: 0x1aa0, 0x1496: 0x1aa4, 0x1497: 0x1aa8,\n\t0x1498: 0x1aac, 0x1499: 0x1ab0, 0x149a: 0x1ab4, 0x149b: 0x1ab8, 0x149c: 0x1abc, 0x149d: 0x1ac0,\n\t0x149e: 0x1ac4, 0x149f: 0x1ac8, 0x14a0: 0x1acc, 0x14a1: 0x1ad0, 0x14a2: 0x1ad4, 0x14a3: 0x1ad8,\n\t0x14a4: 0x1adc, 0x14a5: 0x1ae0, 0x14a6: 0x1ae4, 0x14a7: 0x1ae8, 0x14a8: 0x1aec, 0x14a9: 0x1af0,\n\t0x14aa: 0x271e, 0x14ab: 0x0047, 0x14ac: 0x0065, 0x14ad: 0x193c, 0x14ae: 0x19b1,\n\t0x14b0: 0x0043, 0x14b1: 0x0045, 0x14b2: 0x0047, 0x14b3: 0x0049, 0x14b4: 0x004b, 0x14b5: 0x004d,\n\t0x14b6: 0x004f, 0x14b7: 0x0051, 0x14b8: 0x0053, 0x14b9: 0x0055, 0x14ba: 0x0057, 0x14bb: 0x0059,\n\t0x14bc: 0x005b, 0x14bd: 0x005d, 0x14be: 0x005f, 0x14bf: 0x0061,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x26ad, 0x14c1: 0x26c2, 0x14c2: 0x0503,\n\t0x14d0: 0x0c0f, 0x14d1: 0x0a47,\n\t0x14d2: 0x08d3, 0x14d3: 0x45c4, 0x14d4: 0x071b, 0x14d5: 0x09ef, 0x14d6: 0x132f, 0x14d7: 0x09ff,\n\t0x14d8: 0x0727, 0x14d9: 0x0cd7, 0x14da: 0x0eaf, 0x14db: 0x0caf, 0x14dc: 0x0827, 0x14dd: 0x0b6b,\n\t0x14de: 0x07bf, 0x14df: 0x0cb7, 0x14e0: 0x0813, 0x14e1: 0x1117, 0x14e2: 0x0f83, 0x14e3: 0x138b,\n\t0x14e4: 0x09d3, 0x14e5: 0x090b, 0x14e6: 0x0e63, 0x14e7: 0x0c1b, 0x14e8: 0x0c47, 0x14e9: 0x06bf,\n\t0x14ea: 0x06cb, 0x14eb: 0x140b, 0x14ec: 0x0adb, 0x14ed: 0x06e7, 0x14ee: 0x08ef, 0x14ef: 0x0c3b,\n\t0x14f0: 0x13b3, 0x14f1: 0x0c13, 0x14f2: 0x106f, 0x14f3: 0x10ab, 0x14f4: 0x08f7, 0x14f5: 0x0e43,\n\t0x14f6: 0x0d0b, 0x14f7: 0x0d07, 0x14f8: 0x0f97, 0x14f9: 0x082b, 0x14fa: 0x0957, 0x14fb: 0x1443,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x06fb, 0x1501: 0x06f3, 0x1502: 0x0703, 0x1503: 0x1647, 0x1504: 0x0747, 0x1505: 0x0757,\n\t0x1506: 0x075b, 0x1507: 0x0763, 0x1508: 0x076b, 0x1509: 0x076f, 0x150a: 0x077b, 0x150b: 0x0773,\n\t0x150c: 0x05b3, 0x150d: 0x165b, 0x150e: 0x078f, 0x150f: 0x0793, 0x1510: 0x0797, 0x1511: 0x07b3,\n\t0x1512: 0x164c, 0x1513: 0x05b7, 0x1514: 0x079f, 0x1515: 0x07bf, 0x1516: 0x1656, 0x1517: 0x07cf,\n\t0x1518: 0x07d7, 0x1519: 0x0737, 0x151a: 0x07df, 0x151b: 0x07e3, 0x151c: 0x1831, 0x151d: 0x07ff,\n\t0x151e: 0x0807, 0x151f: 0x05bf, 0x1520: 0x081f, 0x1521: 0x0823, 0x1522: 0x082b, 0x1523: 0x082f,\n\t0x1524: 0x05c3, 0x1525: 0x0847, 0x1526: 0x084b, 0x1527: 0x0857, 0x1528: 0x0863, 0x1529: 0x0867,\n\t0x152a: 0x086b, 0x152b: 0x0873, 0x152c: 0x0893, 0x152d: 0x0897, 0x152e: 0x089f, 0x152f: 0x08af,\n\t0x1530: 0x08b7, 0x1531: 0x08bb, 0x1532: 0x08bb, 0x1533: 0x08bb, 0x1534: 0x166a, 0x1535: 0x0e93,\n\t0x1536: 0x08cf, 0x1537: 0x08d7, 0x1538: 0x166f, 0x1539: 0x08e3, 0x153a: 0x08eb, 0x153b: 0x08f3,\n\t0x153c: 0x091b, 0x153d: 0x0907, 0x153e: 0x0913, 0x153f: 0x0917,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x091f, 0x1541: 0x0927, 0x1542: 0x092b, 0x1543: 0x0933, 0x1544: 0x093b, 0x1545: 0x093f,\n\t0x1546: 0x093f, 0x1547: 0x0947, 0x1548: 0x094f, 0x1549: 0x0953, 0x154a: 0x095f, 0x154b: 0x0983,\n\t0x154c: 0x0967, 0x154d: 0x0987, 0x154e: 0x096b, 0x154f: 0x0973, 0x1550: 0x080b, 0x1551: 0x09cf,\n\t0x1552: 0x0997, 0x1553: 0x099b, 0x1554: 0x099f, 0x1555: 0x0993, 0x1556: 0x09a7, 0x1557: 0x09a3,\n\t0x1558: 0x09bb, 0x1559: 0x1674, 0x155a: 0x09d7, 0x155b: 0x09db, 0x155c: 0x09e3, 0x155d: 0x09ef,\n\t0x155e: 0x09f7, 0x155f: 0x0a13, 0x1560: 0x1679, 0x1561: 0x167e, 0x1562: 0x0a1f, 0x1563: 0x0a23,\n\t0x1564: 0x0a27, 0x1565: 0x0a1b, 0x1566: 0x0a2f, 0x1567: 0x05c7, 0x1568: 0x05cb, 0x1569: 0x0a37,\n\t0x156a: 0x0a3f, 0x156b: 0x0a3f, 0x156c: 0x1683, 0x156d: 0x0a5b, 0x156e: 0x0a5f, 0x156f: 0x0a63,\n\t0x1570: 0x0a6b, 0x1571: 0x1688, 0x1572: 0x0a73, 0x1573: 0x0a77, 0x1574: 0x0b4f, 0x1575: 0x0a7f,\n\t0x1576: 0x05cf, 0x1577: 0x0a8b, 0x1578: 0x0a9b, 0x1579: 0x0aa7, 0x157a: 0x0aa3, 0x157b: 0x1692,\n\t0x157c: 0x0aaf, 0x157d: 0x1697, 0x157e: 0x0abb, 0x157f: 0x0ab7,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x0abf, 0x1581: 0x0acf, 0x1582: 0x0ad3, 0x1583: 0x05d3, 0x1584: 0x0ae3, 0x1585: 0x0aeb,\n\t0x1586: 0x0aef, 0x1587: 0x0af3, 0x1588: 0x05d7, 0x1589: 0x169c, 0x158a: 0x05db, 0x158b: 0x0b0f,\n\t0x158c: 0x0b13, 0x158d: 0x0b17, 0x158e: 0x0b1f, 0x158f: 0x1863, 0x1590: 0x0b37, 0x1591: 0x16a6,\n\t0x1592: 0x16a6, 0x1593: 0x11d7, 0x1594: 0x0b47, 0x1595: 0x0b47, 0x1596: 0x05df, 0x1597: 0x16c9,\n\t0x1598: 0x179b, 0x1599: 0x0b57, 0x159a: 0x0b5f, 0x159b: 0x05e3, 0x159c: 0x0b73, 0x159d: 0x0b83,\n\t0x159e: 0x0b87, 0x159f: 0x0b8f, 0x15a0: 0x0b9f, 0x15a1: 0x05eb, 0x15a2: 0x05e7, 0x15a3: 0x0ba3,\n\t0x15a4: 0x16ab, 0x15a5: 0x0ba7, 0x15a6: 0x0bbb, 0x15a7: 0x0bbf, 0x15a8: 0x0bc3, 0x15a9: 0x0bbf,\n\t0x15aa: 0x0bcf, 0x15ab: 0x0bd3, 0x15ac: 0x0be3, 0x15ad: 0x0bdb, 0x15ae: 0x0bdf, 0x15af: 0x0be7,\n\t0x15b0: 0x0beb, 0x15b1: 0x0bef, 0x15b2: 0x0bfb, 0x15b3: 0x0bff, 0x15b4: 0x0c17, 0x15b5: 0x0c1f,\n\t0x15b6: 0x0c2f, 0x15b7: 0x0c43, 0x15b8: 0x16ba, 0x15b9: 0x0c3f, 0x15ba: 0x0c33, 0x15bb: 0x0c4b,\n\t0x15bc: 0x0c53, 0x15bd: 0x0c67, 0x15be: 0x16bf, 0x15bf: 0x0c6f,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0c63, 0x15c1: 0x0c5b, 0x15c2: 0x05ef, 0x15c3: 0x0c77, 0x15c4: 0x0c7f, 0x15c5: 0x0c87,\n\t0x15c6: 0x0c7b, 0x15c7: 0x05f3, 0x15c8: 0x0c97, 0x15c9: 0x0c9f, 0x15ca: 0x16c4, 0x15cb: 0x0ccb,\n\t0x15cc: 0x0cff, 0x15cd: 0x0cdb, 0x15ce: 0x05ff, 0x15cf: 0x0ce7, 0x15d0: 0x05fb, 0x15d1: 0x05f7,\n\t0x15d2: 0x07c3, 0x15d3: 0x07c7, 0x15d4: 0x0d03, 0x15d5: 0x0ceb, 0x15d6: 0x11ab, 0x15d7: 0x0663,\n\t0x15d8: 0x0d0f, 0x15d9: 0x0d13, 0x15da: 0x0d17, 0x15db: 0x0d2b, 0x15dc: 0x0d23, 0x15dd: 0x16dd,\n\t0x15de: 0x0603, 0x15df: 0x0d3f, 0x15e0: 0x0d33, 0x15e1: 0x0d4f, 0x15e2: 0x0d57, 0x15e3: 0x16e7,\n\t0x15e4: 0x0d5b, 0x15e5: 0x0d47, 0x15e6: 0x0d63, 0x15e7: 0x0607, 0x15e8: 0x0d67, 0x15e9: 0x0d6b,\n\t0x15ea: 0x0d6f, 0x15eb: 0x0d7b, 0x15ec: 0x16ec, 0x15ed: 0x0d83, 0x15ee: 0x060b, 0x15ef: 0x0d8f,\n\t0x15f0: 0x16f1, 0x15f1: 0x0d93, 0x15f2: 0x060f, 0x15f3: 0x0d9f, 0x15f4: 0x0dab, 0x15f5: 0x0db7,\n\t0x15f6: 0x0dbb, 0x15f7: 0x16f6, 0x15f8: 0x168d, 0x15f9: 0x16fb, 0x15fa: 0x0ddb, 0x15fb: 0x1700,\n\t0x15fc: 0x0de7, 0x15fd: 0x0def, 0x15fe: 0x0ddf, 0x15ff: 0x0dfb,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0e0b, 0x1601: 0x0e1b, 0x1602: 0x0e0f, 0x1603: 0x0e13, 0x1604: 0x0e1f, 0x1605: 0x0e23,\n\t0x1606: 0x1705, 0x1607: 0x0e07, 0x1608: 0x0e3b, 0x1609: 0x0e3f, 0x160a: 0x0613, 0x160b: 0x0e53,\n\t0x160c: 0x0e4f, 0x160d: 0x170a, 0x160e: 0x0e33, 0x160f: 0x0e6f, 0x1610: 0x170f, 0x1611: 0x1714,\n\t0x1612: 0x0e73, 0x1613: 0x0e87, 0x1614: 0x0e83, 0x1615: 0x0e7f, 0x1616: 0x0617, 0x1617: 0x0e8b,\n\t0x1618: 0x0e9b, 0x1619: 0x0e97, 0x161a: 0x0ea3, 0x161b: 0x1651, 0x161c: 0x0eb3, 0x161d: 0x1719,\n\t0x161e: 0x0ebf, 0x161f: 0x1723, 0x1620: 0x0ed3, 0x1621: 0x0edf, 0x1622: 0x0ef3, 0x1623: 0x1728,\n\t0x1624: 0x0f07, 0x1625: 0x0f0b, 0x1626: 0x172d, 0x1627: 0x1732, 0x1628: 0x0f27, 0x1629: 0x0f37,\n\t0x162a: 0x061b, 0x162b: 0x0f3b, 0x162c: 0x061f, 0x162d: 0x061f, 0x162e: 0x0f53, 0x162f: 0x0f57,\n\t0x1630: 0x0f5f, 0x1631: 0x0f63, 0x1632: 0x0f6f, 0x1633: 0x0623, 0x1634: 0x0f87, 0x1635: 0x1737,\n\t0x1636: 0x0fa3, 0x1637: 0x173c, 0x1638: 0x0faf, 0x1639: 0x16a1, 0x163a: 0x0fbf, 0x163b: 0x1741,\n\t0x163c: 0x1746, 0x163d: 0x174b, 0x163e: 0x0627, 0x163f: 0x062b,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0ff7, 0x1641: 0x1755, 0x1642: 0x1750, 0x1643: 0x175a, 0x1644: 0x175f, 0x1645: 0x0fff,\n\t0x1646: 0x1003, 0x1647: 0x1003, 0x1648: 0x100b, 0x1649: 0x0633, 0x164a: 0x100f, 0x164b: 0x0637,\n\t0x164c: 0x063b, 0x164d: 0x1769, 0x164e: 0x1023, 0x164f: 0x102b, 0x1650: 0x1037, 0x1651: 0x063f,\n\t0x1652: 0x176e, 0x1653: 0x105b, 0x1654: 0x1773, 0x1655: 0x1778, 0x1656: 0x107b, 0x1657: 0x1093,\n\t0x1658: 0x0643, 0x1659: 0x109b, 0x165a: 0x109f, 0x165b: 0x10a3, 0x165c: 0x177d, 0x165d: 0x1782,\n\t0x165e: 0x1782, 0x165f: 0x10bb, 0x1660: 0x0647, 0x1661: 0x1787, 0x1662: 0x10cf, 0x1663: 0x10d3,\n\t0x1664: 0x064b, 0x1665: 0x178c, 0x1666: 0x10ef, 0x1667: 0x064f, 0x1668: 0x10ff, 0x1669: 0x10f7,\n\t0x166a: 0x1107, 0x166b: 0x1796, 0x166c: 0x111f, 0x166d: 0x0653, 0x166e: 0x112b, 0x166f: 0x1133,\n\t0x1670: 0x1143, 0x1671: 0x0657, 0x1672: 0x17a0, 0x1673: 0x17a5, 0x1674: 0x065b, 0x1675: 0x17aa,\n\t0x1676: 0x115b, 0x1677: 0x17af, 0x1678: 0x1167, 0x1679: 0x1173, 0x167a: 0x117b, 0x167b: 0x17b4,\n\t0x167c: 0x17b9, 0x167d: 0x118f, 0x167e: 0x17be, 0x167f: 0x1197,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x16ce, 0x1681: 0x065f, 0x1682: 0x11af, 0x1683: 0x11b3, 0x1684: 0x0667, 0x1685: 0x11b7,\n\t0x1686: 0x0a33, 0x1687: 0x17c3, 0x1688: 0x17c8, 0x1689: 0x16d3, 0x168a: 0x16d8, 0x168b: 0x11d7,\n\t0x168c: 0x11db, 0x168d: 0x13f3, 0x168e: 0x066b, 0x168f: 0x1207, 0x1690: 0x1203, 0x1691: 0x120b,\n\t0x1692: 0x083f, 0x1693: 0x120f, 0x1694: 0x1213, 0x1695: 0x1217, 0x1696: 0x121f, 0x1697: 0x17cd,\n\t0x1698: 0x121b, 0x1699: 0x1223, 0x169a: 0x1237, 0x169b: 0x123b, 0x169c: 0x1227, 0x169d: 0x123f,\n\t0x169e: 0x1253, 0x169f: 0x1267, 0x16a0: 0x1233, 0x16a1: 0x1247, 0x16a2: 0x124b, 0x16a3: 0x124f,\n\t0x16a4: 0x17d2, 0x16a5: 0x17dc, 0x16a6: 0x17d7, 0x16a7: 0x066f, 0x16a8: 0x126f, 0x16a9: 0x1273,\n\t0x16aa: 0x127b, 0x16ab: 0x17f0, 0x16ac: 0x127f, 0x16ad: 0x17e1, 0x16ae: 0x0673, 0x16af: 0x0677,\n\t0x16b0: 0x17e6, 0x16b1: 0x17eb, 0x16b2: 0x067b, 0x16b3: 0x129f, 0x16b4: 0x12a3, 0x16b5: 0x12a7,\n\t0x16b6: 0x12ab, 0x16b7: 0x12b7, 0x16b8: 0x12b3, 0x16b9: 0x12bf, 0x16ba: 0x12bb, 0x16bb: 0x12cb,\n\t0x16bc: 0x12c3, 0x16bd: 0x12c7, 0x16be: 0x12cf, 0x16bf: 0x067f,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x12d7, 0x16c1: 0x12db, 0x16c2: 0x0683, 0x16c3: 0x12eb, 0x16c4: 0x12ef, 0x16c5: 0x17f5,\n\t0x16c6: 0x12fb, 0x16c7: 0x12ff, 0x16c8: 0x0687, 0x16c9: 0x130b, 0x16ca: 0x05bb, 0x16cb: 0x17fa,\n\t0x16cc: 0x17ff, 0x16cd: 0x068b, 0x16ce: 0x068f, 0x16cf: 0x1337, 0x16d0: 0x134f, 0x16d1: 0x136b,\n\t0x16d2: 0x137b, 0x16d3: 0x1804, 0x16d4: 0x138f, 0x16d5: 0x1393, 0x16d6: 0x13ab, 0x16d7: 0x13b7,\n\t0x16d8: 0x180e, 0x16d9: 0x1660, 0x16da: 0x13c3, 0x16db: 0x13bf, 0x16dc: 0x13cb, 0x16dd: 0x1665,\n\t0x16de: 0x13d7, 0x16df: 0x13e3, 0x16e0: 0x1813, 0x16e1: 0x1818, 0x16e2: 0x1423, 0x16e3: 0x142f,\n\t0x16e4: 0x1437, 0x16e5: 0x181d, 0x16e6: 0x143b, 0x16e7: 0x1467, 0x16e8: 0x1473, 0x16e9: 0x1477,\n\t0x16ea: 0x146f, 0x16eb: 0x1483, 0x16ec: 0x1487, 0x16ed: 0x1822, 0x16ee: 0x1493, 0x16ef: 0x0693,\n\t0x16f0: 0x149b, 0x16f1: 0x1827, 0x16f2: 0x0697, 0x16f3: 0x14d3, 0x16f4: 0x0ac3, 0x16f5: 0x14eb,\n\t0x16f6: 0x182c, 0x16f7: 0x1836, 0x16f8: 0x069b, 0x16f9: 0x069f, 0x16fa: 0x1513, 0x16fb: 0x183b,\n\t0x16fc: 0x06a3, 0x16fd: 0x1840, 0x16fe: 0x152b, 0x16ff: 0x152b,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x1533, 0x1701: 0x1845, 0x1702: 0x154b, 0x1703: 0x06a7, 0x1704: 0x155b, 0x1705: 0x1567,\n\t0x1706: 0x156f, 0x1707: 0x1577, 0x1708: 0x06ab, 0x1709: 0x184a, 0x170a: 0x158b, 0x170b: 0x15a7,\n\t0x170c: 0x15b3, 0x170d: 0x06af, 0x170e: 0x06b3, 0x170f: 0x15b7, 0x1710: 0x184f, 0x1711: 0x06b7,\n\t0x1712: 0x1854, 0x1713: 0x1859, 0x1714: 0x185e, 0x1715: 0x15db, 0x1716: 0x06bb, 0x1717: 0x15ef,\n\t0x1718: 0x15f7, 0x1719: 0x15fb, 0x171a: 0x1603, 0x171b: 0x160b, 0x171c: 0x1613, 0x171d: 0x1868,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5b, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5c, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5d, 0xcb: 0x5e, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x5f, 0xd2: 0x60, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x61,\n\t0xd8: 0x62, 0xd9: 0x0d, 0xdb: 0x63, 0xdc: 0x64, 0xdd: 0x65, 0xdf: 0x66,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x67, 0x121: 0x68, 0x123: 0x69, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,\n\t0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,\n\t0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,\n\t0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,\n\t0x14d: 0x8a,\n\t0x15c: 0x8b, 0x15f: 0x8c,\n\t0x162: 0x8d, 0x164: 0x8e,\n\t0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16c: 0x0e, 0x16d: 0x92, 0x16e: 0x93, 0x16f: 0x94,\n\t0x170: 0x95, 0x173: 0x96, 0x174: 0x97, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x11,\n\t0x178: 0x12, 0x179: 0x13, 0x17a: 0x14, 0x17b: 0x15, 0x17c: 0x16, 0x17d: 0x17, 0x17e: 0x18, 0x17f: 0x19,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x1a, 0x185: 0x1b, 0x186: 0x9c, 0x187: 0x9d,\n\t0x188: 0x9e, 0x189: 0x1c, 0x18a: 0x1d, 0x18b: 0x9f, 0x18c: 0xa0,\n\t0x191: 0x1e, 0x192: 0x1f, 0x193: 0xa1,\n\t0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,\n\t0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,\n\t0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x20, 0x1bd: 0x21, 0x1be: 0x22, 0x1bf: 0xab,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xac, 0x1c1: 0x23, 0x1c2: 0x24, 0x1c3: 0x25, 0x1c4: 0xad, 0x1c5: 0x26, 0x1c6: 0x27,\n\t0x1c8: 0x28, 0x1c9: 0x29, 0x1ca: 0x2a, 0x1cb: 0x2b, 0x1cc: 0x2c, 0x1cd: 0x2d, 0x1ce: 0x2e, 0x1cf: 0x2f,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,\n\t0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,\n\t0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,\n\t0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,\n\t0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,\n\t0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,\n\t0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,\n\t0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,\n\t0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,\n\t0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,\n\t0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,\n\t0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,\n\t0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,\n\t0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,\n\t0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,\n\t0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,\n\t0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,\n\t0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,\n\t0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,\n\t0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,\n\t0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,\n\t0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x30, 0x325: 0x31, 0x326: 0x32, 0x327: 0x33,\n\t0x328: 0x34, 0x329: 0x35, 0x32a: 0x36, 0x32b: 0x37, 0x32c: 0x38, 0x32d: 0x39, 0x32e: 0x3a, 0x32f: 0x3b,\n\t0x330: 0x3c, 0x331: 0x3d, 0x332: 0x3e, 0x333: 0x3f, 0x334: 0x40, 0x335: 0x41, 0x336: 0x42, 0x337: 0x43,\n\t0x338: 0x44, 0x339: 0x45, 0x33a: 0x46, 0x33b: 0x47, 0x33c: 0xc5, 0x33d: 0x48, 0x33e: 0x49, 0x33f: 0x4a,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc6,\n\t0x34b: 0xc7, 0x34d: 0xc8,\n\t0x368: 0xc9, 0x36b: 0xca,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xce,\n\t0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6c, 0x38d: 0xd1,\n\t0x391: 0xd2, 0x392: 0xd3, 0x393: 0xd4, 0x396: 0xd5, 0x397: 0xd6,\n\t0x398: 0xd7, 0x39a: 0xd8, 0x39c: 0xd9,\n\t0x3a8: 0xda, 0x3a9: 0xdb, 0x3aa: 0xdc,\n\t0x3b0: 0xd7, 0x3b5: 0xdd,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xde, 0x3ec: 0xdf,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xe0,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xe1, 0x446: 0xe2, 0x447: 0xe3,\n\t0x449: 0xe4,\n\t0x450: 0xe5, 0x451: 0xe6, 0x452: 0xe7, 0x453: 0xe8, 0x454: 0xe9, 0x455: 0xea, 0x456: 0xeb, 0x457: 0xec,\n\t0x458: 0xed, 0x459: 0xee, 0x45a: 0x4b, 0x45b: 0xef, 0x45c: 0xf0, 0x45d: 0xf1, 0x45e: 0xf2, 0x45f: 0x4c,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xf3,\n\t0x4a3: 0xf4, 0x4a5: 0xf5,\n\t0x4b8: 0x4d, 0x4b9: 0x4e, 0x4ba: 0x4f,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x50, 0x4c5: 0xf6, 0x4c6: 0xf7,\n\t0x4c8: 0x51, 0x4c9: 0xf8,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x52, 0x521: 0x53, 0x522: 0x54, 0x523: 0x55, 0x524: 0x56, 0x525: 0x57, 0x526: 0x58, 0x527: 0x59,\n\t0x528: 0x5a,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 158 entries, 316 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd5, 0xdc, 0xe4, 0xe8, 0xea, 0xed, 0xf1, 0xf7, 0x108, 0x114, 0x116, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12d, 0x130, 0x132, 0x135, 0x138, 0x13c, 0x141, 0x14a, 0x14c, 0x14f, 0x151, 0x15c, 0x167, 0x175, 0x183, 0x193, 0x1a1, 0x1a8, 0x1ae, 0x1bd, 0x1c1, 0x1c3, 0x1c7, 0x1c9, 0x1cc, 0x1ce, 0x1d1, 0x1d3, 0x1d6, 0x1d8, 0x1da, 0x1dc, 0x1e8, 0x1f2, 0x1fc, 0x1ff, 0x203, 0x205, 0x207, 0x209, 0x20b, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x21c, 0x21f, 0x223, 0x225, 0x22c, 0x232, 0x238, 0x240, 0x246, 0x24c, 0x252, 0x256, 0x258, 0x25a, 0x25c, 0x25e, 0x264, 0x267, 0x26a, 0x272, 0x279, 0x27c, 0x27f, 0x281, 0x289, 0x28c, 0x293, 0x296, 0x29c, 0x29e, 0x2a0, 0x2a3, 0x2a5, 0x2a7, 0x2a9, 0x2ab, 0x2ae, 0x2b0, 0x2b2, 0x2b4, 0x2c1, 0x2cb, 0x2cd, 0x2cf, 0x2d3, 0x2d8, 0x2e4, 0x2e9, 0x2f2, 0x2f8, 0x2fd, 0x301, 0x306, 0x30a, 0x31a, 0x328, 0x336, 0x344, 0x34a, 0x34c, 0x34f, 0x359, 0x35b}\n\n// nfkcSparseValues: 869 entries, 3476 bytes\nvar nfkcSparseValues = [869]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4278, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4264, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x425a, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01dc, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4291, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x221c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2210, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x426e, lo: 0x98, hi: 0x98},\n\t{value: 0x4273, lo: 0x99, hi: 0x9a},\n\t{value: 0x4296, lo: 0x9b, hi: 0x9b},\n\t{value: 0x425f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4282, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x0167, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xc, offset 0x6f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x74\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x76\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf, offset 0x87\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x8f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x96\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x99\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x13, offset 0xa0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0xa4\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0xa8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xaa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xac\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xb5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xc0\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xc5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xc8\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xd2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xd5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xdc\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xe4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2621, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xe8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xea\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2636, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x23, offset 0xed\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t{value: 0x2628, lo: 0x9c, hi: 0x9c},\n\t{value: 0x262f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xf1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xf7\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x45f4, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x45ff, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0x108\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x114\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x116\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x11c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x11e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x030f, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x120\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x122\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x124\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x126\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x128\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x12a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x12d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x130\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x132\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x135\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x138\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x13c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x141\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x14a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x14c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x14f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x151\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x15c\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x167\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043b, lo: 0x91, hi: 0x91},\n\t{value: 0x429b, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1873, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b5c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2691, lo: 0xb3, hi: 0xb3},\n\t{value: 0x27fe, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2698, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x186d, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4269, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x175\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1933, lo: 0x87, hi: 0x87},\n\t{value: 0x1930, lo: 0x88, hi: 0x88},\n\t{value: 0x1870, lo: 0x89, hi: 0x89},\n\t{value: 0x298e, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x0467, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3f, offset 0x183\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0467, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1999, lo: 0xa8, hi: 0xa8},\n\t// Block 0x40, offset 0x193\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x41, offset 0x1a1\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2180, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x42, offset 0x1a8\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x43, offset 0x1ae\n\t{value: 0x0173, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0x269f, lo: 0xac, hi: 0xad},\n\t{value: 0x26a6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x281c, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x44, offset 0x1bd\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x45, offset 0x1c1\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x46, offset 0x1c3\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x47, offset 0x1c7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x299b, lo: 0x8c, hi: 0x8c},\n\t// Block 0x48, offset 0x1c9\n\t{value: 0x0263, lo: 0x02},\n\t{value: 0x1b8c, lo: 0xb4, hi: 0xb4},\n\t{value: 0x192d, lo: 0xb5, hi: 0xb6},\n\t// Block 0x49, offset 0x1cc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4a, offset 0x1ce\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4b, offset 0x1d1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4c, offset 0x1d3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x047f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4d, offset 0x1d6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4e, offset 0x1d8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc3, lo: 0x9f, hi: 0x9f},\n\t// Block 0x4f, offset 0x1da\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x162f, lo: 0xb3, hi: 0xb3},\n\t// Block 0x50, offset 0x1dc\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1597, lo: 0x80, hi: 0x82},\n\t{value: 0x15af, lo: 0x83, hi: 0x83},\n\t{value: 0x15c7, lo: 0x84, hi: 0x85},\n\t{value: 0x15d7, lo: 0x86, hi: 0x89},\n\t{value: 0x15eb, lo: 0x8a, hi: 0x8c},\n\t{value: 0x15ff, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1607, lo: 0x8e, hi: 0x8e},\n\t{value: 0x160f, lo: 0x8f, hi: 0x90},\n\t{value: 0x161b, lo: 0x91, hi: 0x93},\n\t{value: 0x162b, lo: 0x94, hi: 0x94},\n\t{value: 0x1633, lo: 0x95, hi: 0x95},\n\t// Block 0x51, offset 0x1e8\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xae},\n\t{value: 0x812f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0887, lo: 0xb8, hi: 0xba},\n\t// Block 0x52, offset 0x1f2\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0313, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0317, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a3b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a41, lo: 0xb5, hi: 0xb6},\n\t{value: 0x031f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0323, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0327, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a4d, lo: 0xba, hi: 0xbf},\n\t// Block 0x53, offset 0x1fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x54, offset 0x1ff\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x020f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0212, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x55, offset 0x203\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x56, offset 0x205\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163b, lo: 0xb0, hi: 0xb0},\n\t// Block 0x57, offset 0x207\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x58, offset 0x209\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x59, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5a, offset 0x20e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x5b, offset 0x210\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x5c, offset 0x212\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5d, offset 0x214\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x5e, offset 0x216\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x5f, offset 0x21c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x60, offset 0x21f\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1637, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1643, lo: 0x9f, hi: 0x9f},\n\t// Block 0x61, offset 0x223\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x62, offset 0x225\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x63, offset 0x22c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x64, offset 0x232\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x65, offset 0x238\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x66, offset 0x240\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x67, offset 0x246\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x68, offset 0x24c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x69, offset 0x252\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6a, offset 0x256\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6b, offset 0x258\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6c, offset 0x25a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6d, offset 0x25c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x6e, offset 0x25e\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6f, offset 0x264\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x70, offset 0x267\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x26a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x72, offset 0x272\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x73, offset 0x279\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x74, offset 0x27c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x75, offset 0x27f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x76, offset 0x281\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x77, offset 0x289\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x78, offset 0x28c\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x79, offset 0x293\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7a, offset 0x296\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7b, offset 0x29c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x7c, offset 0x29e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7d, offset 0x2a0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x7e, offset 0x2a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x7f, offset 0x2a5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x80, offset 0x2a7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x81, offset 0x2a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x82, offset 0x2ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x83, offset 0x2ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x84, offset 0x2b0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x85, offset 0x2b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x86, offset 0x2b4\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x87, offset 0x2c1\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x88, offset 0x2cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x89, offset 0x2cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8a, offset 0x2cf\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x8b, offset 0x2d3\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x8c, offset 0x2d8\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x8d, offset 0x2e4\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x8e, offset 0x2e9\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x8f, offset 0x2f2\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x90, offset 0x2f8\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x91, offset 0x2fd\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x92, offset 0x301\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x93, offset 0x306\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x94, offset 0x30a\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01b8, lo: 0x80, hi: 0x80},\n\t{value: 0x045f, lo: 0x81, hi: 0x81},\n\t{value: 0x01bb, lo: 0x82, hi: 0x9a},\n\t{value: 0x045b, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01c7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d6, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fa, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01eb, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01e8, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0173, lo: 0xa2, hi: 0xb2},\n\t{value: 0x0188, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a6, lo: 0xb4, hi: 0xba},\n\t{value: 0x045f, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01bb, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x31a\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01c7, lo: 0x80, hi: 0x94},\n\t{value: 0x045b, lo: 0x95, hi: 0x95},\n\t{value: 0x01c7, lo: 0x96, hi: 0x96},\n\t{value: 0x01d0, lo: 0x97, hi: 0x97},\n\t{value: 0x01d6, lo: 0x98, hi: 0x98},\n\t{value: 0x01fa, lo: 0x99, hi: 0x99},\n\t{value: 0x01eb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01e8, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0173, lo: 0x9c, hi: 0xac},\n\t{value: 0x0188, lo: 0xad, hi: 0xad},\n\t{value: 0x01a6, lo: 0xae, hi: 0xb4},\n\t{value: 0x045f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01bb, lo: 0xb6, hi: 0xbf},\n\t// Block 0x96, offset 0x328\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01d9, lo: 0x80, hi: 0x8e},\n\t{value: 0x045b, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01c7, lo: 0x90, hi: 0x90},\n\t{value: 0x01d0, lo: 0x91, hi: 0x91},\n\t{value: 0x01d6, lo: 0x92, hi: 0x92},\n\t{value: 0x01fa, lo: 0x93, hi: 0x93},\n\t{value: 0x01eb, lo: 0x94, hi: 0x94},\n\t{value: 0x01e8, lo: 0x95, hi: 0x95},\n\t{value: 0x0173, lo: 0x96, hi: 0xa6},\n\t{value: 0x0188, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a6, lo: 0xa8, hi: 0xae},\n\t{value: 0x045f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01bb, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x336\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01eb, lo: 0x80, hi: 0x88},\n\t{value: 0x045b, lo: 0x89, hi: 0x89},\n\t{value: 0x01c7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d0, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01eb, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01e8, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0173, lo: 0x90, hi: 0xa0},\n\t{value: 0x0188, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a6, lo: 0xa2, hi: 0xa8},\n\t{value: 0x045f, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01bb, lo: 0xaa, hi: 0xbf},\n\t// Block 0x98, offset 0x344\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x99, offset 0x34a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x9a, offset 0x34c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x9b, offset 0x34f\n\t{value: 0x0002, lo: 0x09},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1951, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1981, lo: 0x8b, hi: 0x8b},\n\t{value: 0x199c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19ae, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197b, lo: 0xaa, hi: 0xaa},\n\t{value: 0x197e, lo: 0xab, hi: 0xab},\n\t// Block 0x9c, offset 0x359\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x193f, lo: 0x90, hi: 0x90},\n\t// Block 0x9d, offset 0x35b\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2862, lo: 0x80, hi: 0x80},\n\t{value: 0x2826, lo: 0x81, hi: 0x81},\n\t{value: 0x2830, lo: 0x82, hi: 0x82},\n\t{value: 0x2844, lo: 0x83, hi: 0x84},\n\t{value: 0x284e, lo: 0x85, hi: 0x86},\n\t{value: 0x283a, lo: 0x87, hi: 0x87},\n\t{value: 0x2858, lo: 0x88, hi: 0x88},\n\t{value: 0x0b6f, lo: 0x90, hi: 0x90},\n\t{value: 0x08e7, lo: 0x91, hi: 0x91},\n}\n\n// recompMap: 7520 bytes (entries only)\nvar recompMap = map[uint32]rune{\n\t0x00410300: 0x00C0,\n\t0x00410301: 0x00C1,\n\t0x00410302: 0x00C2,\n\t0x00410303: 0x00C3,\n\t0x00410308: 0x00C4,\n\t0x0041030A: 0x00C5,\n\t0x00430327: 0x00C7,\n\t0x00450300: 0x00C8,\n\t0x00450301: 0x00C9,\n\t0x00450302: 0x00CA,\n\t0x00450308: 0x00CB,\n\t0x00490300: 0x00CC,\n\t0x00490301: 0x00CD,\n\t0x00490302: 0x00CE,\n\t0x00490308: 0x00CF,\n\t0x004E0303: 0x00D1,\n\t0x004F0300: 0x00D2,\n\t0x004F0301: 0x00D3,\n\t0x004F0302: 0x00D4,\n\t0x004F0303: 0x00D5,\n\t0x004F0308: 0x00D6,\n\t0x00550300: 0x00D9,\n\t0x00550301: 0x00DA,\n\t0x00550302: 0x00DB,\n\t0x00550308: 0x00DC,\n\t0x00590301: 0x00DD,\n\t0x00610300: 0x00E0,\n\t0x00610301: 0x00E1,\n\t0x00610302: 0x00E2,\n\t0x00610303: 0x00E3,\n\t0x00610308: 0x00E4,\n\t0x0061030A: 0x00E5,\n\t0x00630327: 0x00E7,\n\t0x00650300: 0x00E8,\n\t0x00650301: 0x00E9,\n\t0x00650302: 0x00EA,\n\t0x00650308: 0x00EB,\n\t0x00690300: 0x00EC,\n\t0x00690301: 0x00ED,\n\t0x00690302: 0x00EE,\n\t0x00690308: 0x00EF,\n\t0x006E0303: 0x00F1,\n\t0x006F0300: 0x00F2,\n\t0x006F0301: 0x00F3,\n\t0x006F0302: 0x00F4,\n\t0x006F0303: 0x00F5,\n\t0x006F0308: 0x00F6,\n\t0x00750300: 0x00F9,\n\t0x00750301: 0x00FA,\n\t0x00750302: 0x00FB,\n\t0x00750308: 0x00FC,\n\t0x00790301: 0x00FD,\n\t0x00790308: 0x00FF,\n\t0x00410304: 0x0100,\n\t0x00610304: 0x0101,\n\t0x00410306: 0x0102,\n\t0x00610306: 0x0103,\n\t0x00410328: 0x0104,\n\t0x00610328: 0x0105,\n\t0x00430301: 0x0106,\n\t0x00630301: 0x0107,\n\t0x00430302: 0x0108,\n\t0x00630302: 0x0109,\n\t0x00430307: 0x010A,\n\t0x00630307: 0x010B,\n\t0x0043030C: 0x010C,\n\t0x0063030C: 0x010D,\n\t0x0044030C: 0x010E,\n\t0x0064030C: 0x010F,\n\t0x00450304: 0x0112,\n\t0x00650304: 0x0113,\n\t0x00450306: 0x0114,\n\t0x00650306: 0x0115,\n\t0x00450307: 0x0116,\n\t0x00650307: 0x0117,\n\t0x00450328: 0x0118,\n\t0x00650328: 0x0119,\n\t0x0045030C: 0x011A,\n\t0x0065030C: 0x011B,\n\t0x00470302: 0x011C,\n\t0x00670302: 0x011D,\n\t0x00470306: 0x011E,\n\t0x00670306: 0x011F,\n\t0x00470307: 0x0120,\n\t0x00670307: 0x0121,\n\t0x00470327: 0x0122,\n\t0x00670327: 0x0123,\n\t0x00480302: 0x0124,\n\t0x00680302: 0x0125,\n\t0x00490303: 0x0128,\n\t0x00690303: 0x0129,\n\t0x00490304: 0x012A,\n\t0x00690304: 0x012B,\n\t0x00490306: 0x012C,\n\t0x00690306: 0x012D,\n\t0x00490328: 0x012E,\n\t0x00690328: 0x012F,\n\t0x00490307: 0x0130,\n\t0x004A0302: 0x0134,\n\t0x006A0302: 0x0135,\n\t0x004B0327: 0x0136,\n\t0x006B0327: 0x0137,\n\t0x004C0301: 0x0139,\n\t0x006C0301: 0x013A,\n\t0x004C0327: 0x013B,\n\t0x006C0327: 0x013C,\n\t0x004C030C: 0x013D,\n\t0x006C030C: 0x013E,\n\t0x004E0301: 0x0143,\n\t0x006E0301: 0x0144,\n\t0x004E0327: 0x0145,\n\t0x006E0327: 0x0146,\n\t0x004E030C: 0x0147,\n\t0x006E030C: 0x0148,\n\t0x004F0304: 0x014C,\n\t0x006F0304: 0x014D,\n\t0x004F0306: 0x014E,\n\t0x006F0306: 0x014F,\n\t0x004F030B: 0x0150,\n\t0x006F030B: 0x0151,\n\t0x00520301: 0x0154,\n\t0x00720301: 0x0155,\n\t0x00520327: 0x0156,\n\t0x00720327: 0x0157,\n\t0x0052030C: 0x0158,\n\t0x0072030C: 0x0159,\n\t0x00530301: 0x015A,\n\t0x00730301: 0x015B,\n\t0x00530302: 0x015C,\n\t0x00730302: 0x015D,\n\t0x00530327: 0x015E,\n\t0x00730327: 0x015F,\n\t0x0053030C: 0x0160,\n\t0x0073030C: 0x0161,\n\t0x00540327: 0x0162,\n\t0x00740327: 0x0163,\n\t0x0054030C: 0x0164,\n\t0x0074030C: 0x0165,\n\t0x00550303: 0x0168,\n\t0x00750303: 0x0169,\n\t0x00550304: 0x016A,\n\t0x00750304: 0x016B,\n\t0x00550306: 0x016C,\n\t0x00750306: 0x016D,\n\t0x0055030A: 0x016E,\n\t0x0075030A: 0x016F,\n\t0x0055030B: 0x0170,\n\t0x0075030B: 0x0171,\n\t0x00550328: 0x0172,\n\t0x00750328: 0x0173,\n\t0x00570302: 0x0174,\n\t0x00770302: 0x0175,\n\t0x00590302: 0x0176,\n\t0x00790302: 0x0177,\n\t0x00590308: 0x0178,\n\t0x005A0301: 0x0179,\n\t0x007A0301: 0x017A,\n\t0x005A0307: 0x017B,\n\t0x007A0307: 0x017C,\n\t0x005A030C: 0x017D,\n\t0x007A030C: 0x017E,\n\t0x004F031B: 0x01A0,\n\t0x006F031B: 0x01A1,\n\t0x0055031B: 0x01AF,\n\t0x0075031B: 0x01B0,\n\t0x0041030C: 0x01CD,\n\t0x0061030C: 0x01CE,\n\t0x0049030C: 0x01CF,\n\t0x0069030C: 0x01D0,\n\t0x004F030C: 0x01D1,\n\t0x006F030C: 0x01D2,\n\t0x0055030C: 0x01D3,\n\t0x0075030C: 0x01D4,\n\t0x00DC0304: 0x01D5,\n\t0x00FC0304: 0x01D6,\n\t0x00DC0301: 0x01D7,\n\t0x00FC0301: 0x01D8,\n\t0x00DC030C: 0x01D9,\n\t0x00FC030C: 0x01DA,\n\t0x00DC0300: 0x01DB,\n\t0x00FC0300: 0x01DC,\n\t0x00C40304: 0x01DE,\n\t0x00E40304: 0x01DF,\n\t0x02260304: 0x01E0,\n\t0x02270304: 0x01E1,\n\t0x00C60304: 0x01E2,\n\t0x00E60304: 0x01E3,\n\t0x0047030C: 0x01E6,\n\t0x0067030C: 0x01E7,\n\t0x004B030C: 0x01E8,\n\t0x006B030C: 0x01E9,\n\t0x004F0328: 0x01EA,\n\t0x006F0328: 0x01EB,\n\t0x01EA0304: 0x01EC,\n\t0x01EB0304: 0x01ED,\n\t0x01B7030C: 0x01EE,\n\t0x0292030C: 0x01EF,\n\t0x006A030C: 0x01F0,\n\t0x00470301: 0x01F4,\n\t0x00670301: 0x01F5,\n\t0x004E0300: 0x01F8,\n\t0x006E0300: 0x01F9,\n\t0x00C50301: 0x01FA,\n\t0x00E50301: 0x01FB,\n\t0x00C60301: 0x01FC,\n\t0x00E60301: 0x01FD,\n\t0x00D80301: 0x01FE,\n\t0x00F80301: 0x01FF,\n\t0x0041030F: 0x0200,\n\t0x0061030F: 0x0201,\n\t0x00410311: 0x0202,\n\t0x00610311: 0x0203,\n\t0x0045030F: 0x0204,\n\t0x0065030F: 0x0205,\n\t0x00450311: 0x0206,\n\t0x00650311: 0x0207,\n\t0x0049030F: 0x0208,\n\t0x0069030F: 0x0209,\n\t0x00490311: 0x020A,\n\t0x00690311: 0x020B,\n\t0x004F030F: 0x020C,\n\t0x006F030F: 0x020D,\n\t0x004F0311: 0x020E,\n\t0x006F0311: 0x020F,\n\t0x0052030F: 0x0210,\n\t0x0072030F: 0x0211,\n\t0x00520311: 0x0212,\n\t0x00720311: 0x0213,\n\t0x0055030F: 0x0214,\n\t0x0075030F: 0x0215,\n\t0x00550311: 0x0216,\n\t0x00750311: 0x0217,\n\t0x00530326: 0x0218,\n\t0x00730326: 0x0219,\n\t0x00540326: 0x021A,\n\t0x00740326: 0x021B,\n\t0x0048030C: 0x021E,\n\t0x0068030C: 0x021F,\n\t0x00410307: 0x0226,\n\t0x00610307: 0x0227,\n\t0x00450327: 0x0228,\n\t0x00650327: 0x0229,\n\t0x00D60304: 0x022A,\n\t0x00F60304: 0x022B,\n\t0x00D50304: 0x022C,\n\t0x00F50304: 0x022D,\n\t0x004F0307: 0x022E,\n\t0x006F0307: 0x022F,\n\t0x022E0304: 0x0230,\n\t0x022F0304: 0x0231,\n\t0x00590304: 0x0232,\n\t0x00790304: 0x0233,\n\t0x00A80301: 0x0385,\n\t0x03910301: 0x0386,\n\t0x03950301: 0x0388,\n\t0x03970301: 0x0389,\n\t0x03990301: 0x038A,\n\t0x039F0301: 0x038C,\n\t0x03A50301: 0x038E,\n\t0x03A90301: 0x038F,\n\t0x03CA0301: 0x0390,\n\t0x03990308: 0x03AA,\n\t0x03A50308: 0x03AB,\n\t0x03B10301: 0x03AC,\n\t0x03B50301: 0x03AD,\n\t0x03B70301: 0x03AE,\n\t0x03B90301: 0x03AF,\n\t0x03CB0301: 0x03B0,\n\t0x03B90308: 0x03CA,\n\t0x03C50308: 0x03CB,\n\t0x03BF0301: 0x03CC,\n\t0x03C50301: 0x03CD,\n\t0x03C90301: 0x03CE,\n\t0x03D20301: 0x03D3,\n\t0x03D20308: 0x03D4,\n\t0x04150300: 0x0400,\n\t0x04150308: 0x0401,\n\t0x04130301: 0x0403,\n\t0x04060308: 0x0407,\n\t0x041A0301: 0x040C,\n\t0x04180300: 0x040D,\n\t0x04230306: 0x040E,\n\t0x04180306: 0x0419,\n\t0x04380306: 0x0439,\n\t0x04350300: 0x0450,\n\t0x04350308: 0x0451,\n\t0x04330301: 0x0453,\n\t0x04560308: 0x0457,\n\t0x043A0301: 0x045C,\n\t0x04380300: 0x045D,\n\t0x04430306: 0x045E,\n\t0x0474030F: 0x0476,\n\t0x0475030F: 0x0477,\n\t0x04160306: 0x04C1,\n\t0x04360306: 0x04C2,\n\t0x04100306: 0x04D0,\n\t0x04300306: 0x04D1,\n\t0x04100308: 0x04D2,\n\t0x04300308: 0x04D3,\n\t0x04150306: 0x04D6,\n\t0x04350306: 0x04D7,\n\t0x04D80308: 0x04DA,\n\t0x04D90308: 0x04DB,\n\t0x04160308: 0x04DC,\n\t0x04360308: 0x04DD,\n\t0x04170308: 0x04DE,\n\t0x04370308: 0x04DF,\n\t0x04180304: 0x04E2,\n\t0x04380304: 0x04E3,\n\t0x04180308: 0x04E4,\n\t0x04380308: 0x04E5,\n\t0x041E0308: 0x04E6,\n\t0x043E0308: 0x04E7,\n\t0x04E80308: 0x04EA,\n\t0x04E90308: 0x04EB,\n\t0x042D0308: 0x04EC,\n\t0x044D0308: 0x04ED,\n\t0x04230304: 0x04EE,\n\t0x04430304: 0x04EF,\n\t0x04230308: 0x04F0,\n\t0x04430308: 0x04F1,\n\t0x0423030B: 0x04F2,\n\t0x0443030B: 0x04F3,\n\t0x04270308: 0x04F4,\n\t0x04470308: 0x04F5,\n\t0x042B0308: 0x04F8,\n\t0x044B0308: 0x04F9,\n\t0x06270653: 0x0622,\n\t0x06270654: 0x0623,\n\t0x06480654: 0x0624,\n\t0x06270655: 0x0625,\n\t0x064A0654: 0x0626,\n\t0x06D50654: 0x06C0,\n\t0x06C10654: 0x06C2,\n\t0x06D20654: 0x06D3,\n\t0x0928093C: 0x0929,\n\t0x0930093C: 0x0931,\n\t0x0933093C: 0x0934,\n\t0x09C709BE: 0x09CB,\n\t0x09C709D7: 0x09CC,\n\t0x0B470B56: 0x0B48,\n\t0x0B470B3E: 0x0B4B,\n\t0x0B470B57: 0x0B4C,\n\t0x0B920BD7: 0x0B94,\n\t0x0BC60BBE: 0x0BCA,\n\t0x0BC70BBE: 0x0BCB,\n\t0x0BC60BD7: 0x0BCC,\n\t0x0C460C56: 0x0C48,\n\t0x0CBF0CD5: 0x0CC0,\n\t0x0CC60CD5: 0x0CC7,\n\t0x0CC60CD6: 0x0CC8,\n\t0x0CC60CC2: 0x0CCA,\n\t0x0CCA0CD5: 0x0CCB,\n\t0x0D460D3E: 0x0D4A,\n\t0x0D470D3E: 0x0D4B,\n\t0x0D460D57: 0x0D4C,\n\t0x0DD90DCA: 0x0DDA,\n\t0x0DD90DCF: 0x0DDC,\n\t0x0DDC0DCA: 0x0DDD,\n\t0x0DD90DDF: 0x0DDE,\n\t0x1025102E: 0x1026,\n\t0x1B051B35: 0x1B06,\n\t0x1B071B35: 0x1B08,\n\t0x1B091B35: 0x1B0A,\n\t0x1B0B1B35: 0x1B0C,\n\t0x1B0D1B35: 0x1B0E,\n\t0x1B111B35: 0x1B12,\n\t0x1B3A1B35: 0x1B3B,\n\t0x1B3C1B35: 0x1B3D,\n\t0x1B3E1B35: 0x1B40,\n\t0x1B3F1B35: 0x1B41,\n\t0x1B421B35: 0x1B43,\n\t0x00410325: 0x1E00,\n\t0x00610325: 0x1E01,\n\t0x00420307: 0x1E02,\n\t0x00620307: 0x1E03,\n\t0x00420323: 0x1E04,\n\t0x00620323: 0x1E05,\n\t0x00420331: 0x1E06,\n\t0x00620331: 0x1E07,\n\t0x00C70301: 0x1E08,\n\t0x00E70301: 0x1E09,\n\t0x00440307: 0x1E0A,\n\t0x00640307: 0x1E0B,\n\t0x00440323: 0x1E0C,\n\t0x00640323: 0x1E0D,\n\t0x00440331: 0x1E0E,\n\t0x00640331: 0x1E0F,\n\t0x00440327: 0x1E10,\n\t0x00640327: 0x1E11,\n\t0x0044032D: 0x1E12,\n\t0x0064032D: 0x1E13,\n\t0x01120300: 0x1E14,\n\t0x01130300: 0x1E15,\n\t0x01120301: 0x1E16,\n\t0x01130301: 0x1E17,\n\t0x0045032D: 0x1E18,\n\t0x0065032D: 0x1E19,\n\t0x00450330: 0x1E1A,\n\t0x00650330: 0x1E1B,\n\t0x02280306: 0x1E1C,\n\t0x02290306: 0x1E1D,\n\t0x00460307: 0x1E1E,\n\t0x00660307: 0x1E1F,\n\t0x00470304: 0x1E20,\n\t0x00670304: 0x1E21,\n\t0x00480307: 0x1E22,\n\t0x00680307: 0x1E23,\n\t0x00480323: 0x1E24,\n\t0x00680323: 0x1E25,\n\t0x00480308: 0x1E26,\n\t0x00680308: 0x1E27,\n\t0x00480327: 0x1E28,\n\t0x00680327: 0x1E29,\n\t0x0048032E: 0x1E2A,\n\t0x0068032E: 0x1E2B,\n\t0x00490330: 0x1E2C,\n\t0x00690330: 0x1E2D,\n\t0x00CF0301: 0x1E2E,\n\t0x00EF0301: 0x1E2F,\n\t0x004B0301: 0x1E30,\n\t0x006B0301: 0x1E31,\n\t0x004B0323: 0x1E32,\n\t0x006B0323: 0x1E33,\n\t0x004B0331: 0x1E34,\n\t0x006B0331: 0x1E35,\n\t0x004C0323: 0x1E36,\n\t0x006C0323: 0x1E37,\n\t0x1E360304: 0x1E38,\n\t0x1E370304: 0x1E39,\n\t0x004C0331: 0x1E3A,\n\t0x006C0331: 0x1E3B,\n\t0x004C032D: 0x1E3C,\n\t0x006C032D: 0x1E3D,\n\t0x004D0301: 0x1E3E,\n\t0x006D0301: 0x1E3F,\n\t0x004D0307: 0x1E40,\n\t0x006D0307: 0x1E41,\n\t0x004D0323: 0x1E42,\n\t0x006D0323: 0x1E43,\n\t0x004E0307: 0x1E44,\n\t0x006E0307: 0x1E45,\n\t0x004E0323: 0x1E46,\n\t0x006E0323: 0x1E47,\n\t0x004E0331: 0x1E48,\n\t0x006E0331: 0x1E49,\n\t0x004E032D: 0x1E4A,\n\t0x006E032D: 0x1E4B,\n\t0x00D50301: 0x1E4C,\n\t0x00F50301: 0x1E4D,\n\t0x00D50308: 0x1E4E,\n\t0x00F50308: 0x1E4F,\n\t0x014C0300: 0x1E50,\n\t0x014D0300: 0x1E51,\n\t0x014C0301: 0x1E52,\n\t0x014D0301: 0x1E53,\n\t0x00500301: 0x1E54,\n\t0x00700301: 0x1E55,\n\t0x00500307: 0x1E56,\n\t0x00700307: 0x1E57,\n\t0x00520307: 0x1E58,\n\t0x00720307: 0x1E59,\n\t0x00520323: 0x1E5A,\n\t0x00720323: 0x1E5B,\n\t0x1E5A0304: 0x1E5C,\n\t0x1E5B0304: 0x1E5D,\n\t0x00520331: 0x1E5E,\n\t0x00720331: 0x1E5F,\n\t0x00530307: 0x1E60,\n\t0x00730307: 0x1E61,\n\t0x00530323: 0x1E62,\n\t0x00730323: 0x1E63,\n\t0x015A0307: 0x1E64,\n\t0x015B0307: 0x1E65,\n\t0x01600307: 0x1E66,\n\t0x01610307: 0x1E67,\n\t0x1E620307: 0x1E68,\n\t0x1E630307: 0x1E69,\n\t0x00540307: 0x1E6A,\n\t0x00740307: 0x1E6B,\n\t0x00540323: 0x1E6C,\n\t0x00740323: 0x1E6D,\n\t0x00540331: 0x1E6E,\n\t0x00740331: 0x1E6F,\n\t0x0054032D: 0x1E70,\n\t0x0074032D: 0x1E71,\n\t0x00550324: 0x1E72,\n\t0x00750324: 0x1E73,\n\t0x00550330: 0x1E74,\n\t0x00750330: 0x1E75,\n\t0x0055032D: 0x1E76,\n\t0x0075032D: 0x1E77,\n\t0x01680301: 0x1E78,\n\t0x01690301: 0x1E79,\n\t0x016A0308: 0x1E7A,\n\t0x016B0308: 0x1E7B,\n\t0x00560303: 0x1E7C,\n\t0x00760303: 0x1E7D,\n\t0x00560323: 0x1E7E,\n\t0x00760323: 0x1E7F,\n\t0x00570300: 0x1E80,\n\t0x00770300: 0x1E81,\n\t0x00570301: 0x1E82,\n\t0x00770301: 0x1E83,\n\t0x00570308: 0x1E84,\n\t0x00770308: 0x1E85,\n\t0x00570307: 0x1E86,\n\t0x00770307: 0x1E87,\n\t0x00570323: 0x1E88,\n\t0x00770323: 0x1E89,\n\t0x00580307: 0x1E8A,\n\t0x00780307: 0x1E8B,\n\t0x00580308: 0x1E8C,\n\t0x00780308: 0x1E8D,\n\t0x00590307: 0x1E8E,\n\t0x00790307: 0x1E8F,\n\t0x005A0302: 0x1E90,\n\t0x007A0302: 0x1E91,\n\t0x005A0323: 0x1E92,\n\t0x007A0323: 0x1E93,\n\t0x005A0331: 0x1E94,\n\t0x007A0331: 0x1E95,\n\t0x00680331: 0x1E96,\n\t0x00740308: 0x1E97,\n\t0x0077030A: 0x1E98,\n\t0x0079030A: 0x1E99,\n\t0x017F0307: 0x1E9B,\n\t0x00410323: 0x1EA0,\n\t0x00610323: 0x1EA1,\n\t0x00410309: 0x1EA2,\n\t0x00610309: 0x1EA3,\n\t0x00C20301: 0x1EA4,\n\t0x00E20301: 0x1EA5,\n\t0x00C20300: 0x1EA6,\n\t0x00E20300: 0x1EA7,\n\t0x00C20309: 0x1EA8,\n\t0x00E20309: 0x1EA9,\n\t0x00C20303: 0x1EAA,\n\t0x00E20303: 0x1EAB,\n\t0x1EA00302: 0x1EAC,\n\t0x1EA10302: 0x1EAD,\n\t0x01020301: 0x1EAE,\n\t0x01030301: 0x1EAF,\n\t0x01020300: 0x1EB0,\n\t0x01030300: 0x1EB1,\n\t0x01020309: 0x1EB2,\n\t0x01030309: 0x1EB3,\n\t0x01020303: 0x1EB4,\n\t0x01030303: 0x1EB5,\n\t0x1EA00306: 0x1EB6,\n\t0x1EA10306: 0x1EB7,\n\t0x00450323: 0x1EB8,\n\t0x00650323: 0x1EB9,\n\t0x00450309: 0x1EBA,\n\t0x00650309: 0x1EBB,\n\t0x00450303: 0x1EBC,\n\t0x00650303: 0x1EBD,\n\t0x00CA0301: 0x1EBE,\n\t0x00EA0301: 0x1EBF,\n\t0x00CA0300: 0x1EC0,\n\t0x00EA0300: 0x1EC1,\n\t0x00CA0309: 0x1EC2,\n\t0x00EA0309: 0x1EC3,\n\t0x00CA0303: 0x1EC4,\n\t0x00EA0303: 0x1EC5,\n\t0x1EB80302: 0x1EC6,\n\t0x1EB90302: 0x1EC7,\n\t0x00490309: 0x1EC8,\n\t0x00690309: 0x1EC9,\n\t0x00490323: 0x1ECA,\n\t0x00690323: 0x1ECB,\n\t0x004F0323: 0x1ECC,\n\t0x006F0323: 0x1ECD,\n\t0x004F0309: 0x1ECE,\n\t0x006F0309: 0x1ECF,\n\t0x00D40301: 0x1ED0,\n\t0x00F40301: 0x1ED1,\n\t0x00D40300: 0x1ED2,\n\t0x00F40300: 0x1ED3,\n\t0x00D40309: 0x1ED4,\n\t0x00F40309: 0x1ED5,\n\t0x00D40303: 0x1ED6,\n\t0x00F40303: 0x1ED7,\n\t0x1ECC0302: 0x1ED8,\n\t0x1ECD0302: 0x1ED9,\n\t0x01A00301: 0x1EDA,\n\t0x01A10301: 0x1EDB,\n\t0x01A00300: 0x1EDC,\n\t0x01A10300: 0x1EDD,\n\t0x01A00309: 0x1EDE,\n\t0x01A10309: 0x1EDF,\n\t0x01A00303: 0x1EE0,\n\t0x01A10303: 0x1EE1,\n\t0x01A00323: 0x1EE2,\n\t0x01A10323: 0x1EE3,\n\t0x00550323: 0x1EE4,\n\t0x00750323: 0x1EE5,\n\t0x00550309: 0x1EE6,\n\t0x00750309: 0x1EE7,\n\t0x01AF0301: 0x1EE8,\n\t0x01B00301: 0x1EE9,\n\t0x01AF0300: 0x1EEA,\n\t0x01B00300: 0x1EEB,\n\t0x01AF0309: 0x1EEC,\n\t0x01B00309: 0x1EED,\n\t0x01AF0303: 0x1EEE,\n\t0x01B00303: 0x1EEF,\n\t0x01AF0323: 0x1EF0,\n\t0x01B00323: 0x1EF1,\n\t0x00590300: 0x1EF2,\n\t0x00790300: 0x1EF3,\n\t0x00590323: 0x1EF4,\n\t0x00790323: 0x1EF5,\n\t0x00590309: 0x1EF6,\n\t0x00790309: 0x1EF7,\n\t0x00590303: 0x1EF8,\n\t0x00790303: 0x1EF9,\n\t0x03B10313: 0x1F00,\n\t0x03B10314: 0x1F01,\n\t0x1F000300: 0x1F02,\n\t0x1F010300: 0x1F03,\n\t0x1F000301: 0x1F04,\n\t0x1F010301: 0x1F05,\n\t0x1F000342: 0x1F06,\n\t0x1F010342: 0x1F07,\n\t0x03910313: 0x1F08,\n\t0x03910314: 0x1F09,\n\t0x1F080300: 0x1F0A,\n\t0x1F090300: 0x1F0B,\n\t0x1F080301: 0x1F0C,\n\t0x1F090301: 0x1F0D,\n\t0x1F080342: 0x1F0E,\n\t0x1F090342: 0x1F0F,\n\t0x03B50313: 0x1F10,\n\t0x03B50314: 0x1F11,\n\t0x1F100300: 0x1F12,\n\t0x1F110300: 0x1F13,\n\t0x1F100301: 0x1F14,\n\t0x1F110301: 0x1F15,\n\t0x03950313: 0x1F18,\n\t0x03950314: 0x1F19,\n\t0x1F180300: 0x1F1A,\n\t0x1F190300: 0x1F1B,\n\t0x1F180301: 0x1F1C,\n\t0x1F190301: 0x1F1D,\n\t0x03B70313: 0x1F20,\n\t0x03B70314: 0x1F21,\n\t0x1F200300: 0x1F22,\n\t0x1F210300: 0x1F23,\n\t0x1F200301: 0x1F24,\n\t0x1F210301: 0x1F25,\n\t0x1F200342: 0x1F26,\n\t0x1F210342: 0x1F27,\n\t0x03970313: 0x1F28,\n\t0x03970314: 0x1F29,\n\t0x1F280300: 0x1F2A,\n\t0x1F290300: 0x1F2B,\n\t0x1F280301: 0x1F2C,\n\t0x1F290301: 0x1F2D,\n\t0x1F280342: 0x1F2E,\n\t0x1F290342: 0x1F2F,\n\t0x03B90313: 0x1F30,\n\t0x03B90314: 0x1F31,\n\t0x1F300300: 0x1F32,\n\t0x1F310300: 0x1F33,\n\t0x1F300301: 0x1F34,\n\t0x1F310301: 0x1F35,\n\t0x1F300342: 0x1F36,\n\t0x1F310342: 0x1F37,\n\t0x03990313: 0x1F38,\n\t0x03990314: 0x1F39,\n\t0x1F380300: 0x1F3A,\n\t0x1F390300: 0x1F3B,\n\t0x1F380301: 0x1F3C,\n\t0x1F390301: 0x1F3D,\n\t0x1F380342: 0x1F3E,\n\t0x1F390342: 0x1F3F,\n\t0x03BF0313: 0x1F40,\n\t0x03BF0314: 0x1F41,\n\t0x1F400300: 0x1F42,\n\t0x1F410300: 0x1F43,\n\t0x1F400301: 0x1F44,\n\t0x1F410301: 0x1F45,\n\t0x039F0313: 0x1F48,\n\t0x039F0314: 0x1F49,\n\t0x1F480300: 0x1F4A,\n\t0x1F490300: 0x1F4B,\n\t0x1F480301: 0x1F4C,\n\t0x1F490301: 0x1F4D,\n\t0x03C50313: 0x1F50,\n\t0x03C50314: 0x1F51,\n\t0x1F500300: 0x1F52,\n\t0x1F510300: 0x1F53,\n\t0x1F500301: 0x1F54,\n\t0x1F510301: 0x1F55,\n\t0x1F500342: 0x1F56,\n\t0x1F510342: 0x1F57,\n\t0x03A50314: 0x1F59,\n\t0x1F590300: 0x1F5B,\n\t0x1F590301: 0x1F5D,\n\t0x1F590342: 0x1F5F,\n\t0x03C90313: 0x1F60,\n\t0x03C90314: 0x1F61,\n\t0x1F600300: 0x1F62,\n\t0x1F610300: 0x1F63,\n\t0x1F600301: 0x1F64,\n\t0x1F610301: 0x1F65,\n\t0x1F600342: 0x1F66,\n\t0x1F610342: 0x1F67,\n\t0x03A90313: 0x1F68,\n\t0x03A90314: 0x1F69,\n\t0x1F680300: 0x1F6A,\n\t0x1F690300: 0x1F6B,\n\t0x1F680301: 0x1F6C,\n\t0x1F690301: 0x1F6D,\n\t0x1F680342: 0x1F6E,\n\t0x1F690342: 0x1F6F,\n\t0x03B10300: 0x1F70,\n\t0x03B50300: 0x1F72,\n\t0x03B70300: 0x1F74,\n\t0x03B90300: 0x1F76,\n\t0x03BF0300: 0x1F78,\n\t0x03C50300: 0x1F7A,\n\t0x03C90300: 0x1F7C,\n\t0x1F000345: 0x1F80,\n\t0x1F010345: 0x1F81,\n\t0x1F020345: 0x1F82,\n\t0x1F030345: 0x1F83,\n\t0x1F040345: 0x1F84,\n\t0x1F050345: 0x1F85,\n\t0x1F060345: 0x1F86,\n\t0x1F070345: 0x1F87,\n\t0x1F080345: 0x1F88,\n\t0x1F090345: 0x1F89,\n\t0x1F0A0345: 0x1F8A,\n\t0x1F0B0345: 0x1F8B,\n\t0x1F0C0345: 0x1F8C,\n\t0x1F0D0345: 0x1F8D,\n\t0x1F0E0345: 0x1F8E,\n\t0x1F0F0345: 0x1F8F,\n\t0x1F200345: 0x1F90,\n\t0x1F210345: 0x1F91,\n\t0x1F220345: 0x1F92,\n\t0x1F230345: 0x1F93,\n\t0x1F240345: 0x1F94,\n\t0x1F250345: 0x1F95,\n\t0x1F260345: 0x1F96,\n\t0x1F270345: 0x1F97,\n\t0x1F280345: 0x1F98,\n\t0x1F290345: 0x1F99,\n\t0x1F2A0345: 0x1F9A,\n\t0x1F2B0345: 0x1F9B,\n\t0x1F2C0345: 0x1F9C,\n\t0x1F2D0345: 0x1F9D,\n\t0x1F2E0345: 0x1F9E,\n\t0x1F2F0345: 0x1F9F,\n\t0x1F600345: 0x1FA0,\n\t0x1F610345: 0x1FA1,\n\t0x1F620345: 0x1FA2,\n\t0x1F630345: 0x1FA3,\n\t0x1F640345: 0x1FA4,\n\t0x1F650345: 0x1FA5,\n\t0x1F660345: 0x1FA6,\n\t0x1F670345: 0x1FA7,\n\t0x1F680345: 0x1FA8,\n\t0x1F690345: 0x1FA9,\n\t0x1F6A0345: 0x1FAA,\n\t0x1F6B0345: 0x1FAB,\n\t0x1F6C0345: 0x1FAC,\n\t0x1F6D0345: 0x1FAD,\n\t0x1F6E0345: 0x1FAE,\n\t0x1F6F0345: 0x1FAF,\n\t0x03B10306: 0x1FB0,\n\t0x03B10304: 0x1FB1,\n\t0x1F700345: 0x1FB2,\n\t0x03B10345: 0x1FB3,\n\t0x03AC0345: 0x1FB4,\n\t0x03B10342: 0x1FB6,\n\t0x1FB60345: 0x1FB7,\n\t0x03910306: 0x1FB8,\n\t0x03910304: 0x1FB9,\n\t0x03910300: 0x1FBA,\n\t0x03910345: 0x1FBC,\n\t0x00A80342: 0x1FC1,\n\t0x1F740345: 0x1FC2,\n\t0x03B70345: 0x1FC3,\n\t0x03AE0345: 0x1FC4,\n\t0x03B70342: 0x1FC6,\n\t0x1FC60345: 0x1FC7,\n\t0x03950300: 0x1FC8,\n\t0x03970300: 0x1FCA,\n\t0x03970345: 0x1FCC,\n\t0x1FBF0300: 0x1FCD,\n\t0x1FBF0301: 0x1FCE,\n\t0x1FBF0342: 0x1FCF,\n\t0x03B90306: 0x1FD0,\n\t0x03B90304: 0x1FD1,\n\t0x03CA0300: 0x1FD2,\n\t0x03B90342: 0x1FD6,\n\t0x03CA0342: 0x1FD7,\n\t0x03990306: 0x1FD8,\n\t0x03990304: 0x1FD9,\n\t0x03990300: 0x1FDA,\n\t0x1FFE0300: 0x1FDD,\n\t0x1FFE0301: 0x1FDE,\n\t0x1FFE0342: 0x1FDF,\n\t0x03C50306: 0x1FE0,\n\t0x03C50304: 0x1FE1,\n\t0x03CB0300: 0x1FE2,\n\t0x03C10313: 0x1FE4,\n\t0x03C10314: 0x1FE5,\n\t0x03C50342: 0x1FE6,\n\t0x03CB0342: 0x1FE7,\n\t0x03A50306: 0x1FE8,\n\t0x03A50304: 0x1FE9,\n\t0x03A50300: 0x1FEA,\n\t0x03A10314: 0x1FEC,\n\t0x00A80300: 0x1FED,\n\t0x1F7C0345: 0x1FF2,\n\t0x03C90345: 0x1FF3,\n\t0x03CE0345: 0x1FF4,\n\t0x03C90342: 0x1FF6,\n\t0x1FF60345: 0x1FF7,\n\t0x039F0300: 0x1FF8,\n\t0x03A90300: 0x1FFA,\n\t0x03A90345: 0x1FFC,\n\t0x21900338: 0x219A,\n\t0x21920338: 0x219B,\n\t0x21940338: 0x21AE,\n\t0x21D00338: 0x21CD,\n\t0x21D40338: 0x21CE,\n\t0x21D20338: 0x21CF,\n\t0x22030338: 0x2204,\n\t0x22080338: 0x2209,\n\t0x220B0338: 0x220C,\n\t0x22230338: 0x2224,\n\t0x22250338: 0x2226,\n\t0x223C0338: 0x2241,\n\t0x22430338: 0x2244,\n\t0x22450338: 0x2247,\n\t0x22480338: 0x2249,\n\t0x003D0338: 0x2260,\n\t0x22610338: 0x2262,\n\t0x224D0338: 0x226D,\n\t0x003C0338: 0x226E,\n\t0x003E0338: 0x226F,\n\t0x22640338: 0x2270,\n\t0x22650338: 0x2271,\n\t0x22720338: 0x2274,\n\t0x22730338: 0x2275,\n\t0x22760338: 0x2278,\n\t0x22770338: 0x2279,\n\t0x227A0338: 0x2280,\n\t0x227B0338: 0x2281,\n\t0x22820338: 0x2284,\n\t0x22830338: 0x2285,\n\t0x22860338: 0x2288,\n\t0x22870338: 0x2289,\n\t0x22A20338: 0x22AC,\n\t0x22A80338: 0x22AD,\n\t0x22A90338: 0x22AE,\n\t0x22AB0338: 0x22AF,\n\t0x227C0338: 0x22E0,\n\t0x227D0338: 0x22E1,\n\t0x22910338: 0x22E2,\n\t0x22920338: 0x22E3,\n\t0x22B20338: 0x22EA,\n\t0x22B30338: 0x22EB,\n\t0x22B40338: 0x22EC,\n\t0x22B50338: 0x22ED,\n\t0x304B3099: 0x304C,\n\t0x304D3099: 0x304E,\n\t0x304F3099: 0x3050,\n\t0x30513099: 0x3052,\n\t0x30533099: 0x3054,\n\t0x30553099: 0x3056,\n\t0x30573099: 0x3058,\n\t0x30593099: 0x305A,\n\t0x305B3099: 0x305C,\n\t0x305D3099: 0x305E,\n\t0x305F3099: 0x3060,\n\t0x30613099: 0x3062,\n\t0x30643099: 0x3065,\n\t0x30663099: 0x3067,\n\t0x30683099: 0x3069,\n\t0x306F3099: 0x3070,\n\t0x306F309A: 0x3071,\n\t0x30723099: 0x3073,\n\t0x3072309A: 0x3074,\n\t0x30753099: 0x3076,\n\t0x3075309A: 0x3077,\n\t0x30783099: 0x3079,\n\t0x3078309A: 0x307A,\n\t0x307B3099: 0x307C,\n\t0x307B309A: 0x307D,\n\t0x30463099: 0x3094,\n\t0x309D3099: 0x309E,\n\t0x30AB3099: 0x30AC,\n\t0x30AD3099: 0x30AE,\n\t0x30AF3099: 0x30B0,\n\t0x30B13099: 0x30B2,\n\t0x30B33099: 0x30B4,\n\t0x30B53099: 0x30B6,\n\t0x30B73099: 0x30B8,\n\t0x30B93099: 0x30BA,\n\t0x30BB3099: 0x30BC,\n\t0x30BD3099: 0x30BE,\n\t0x30BF3099: 0x30C0,\n\t0x30C13099: 0x30C2,\n\t0x30C43099: 0x30C5,\n\t0x30C63099: 0x30C7,\n\t0x30C83099: 0x30C9,\n\t0x30CF3099: 0x30D0,\n\t0x30CF309A: 0x30D1,\n\t0x30D23099: 0x30D3,\n\t0x30D2309A: 0x30D4,\n\t0x30D53099: 0x30D6,\n\t0x30D5309A: 0x30D7,\n\t0x30D83099: 0x30D9,\n\t0x30D8309A: 0x30DA,\n\t0x30DB3099: 0x30DC,\n\t0x30DB309A: 0x30DD,\n\t0x30A63099: 0x30F4,\n\t0x30EF3099: 0x30F7,\n\t0x30F03099: 0x30F8,\n\t0x30F13099: 0x30F9,\n\t0x30F23099: 0x30FA,\n\t0x30FD3099: 0x30FE,\n\t0x109910BA: 0x1109A,\n\t0x109B10BA: 0x1109C,\n\t0x10A510BA: 0x110AB,\n\t0x11311127: 0x1112E,\n\t0x11321127: 0x1112F,\n\t0x1347133E: 0x1134B,\n\t0x13471357: 0x1134C,\n\t0x14B914BA: 0x114BB,\n\t0x14B914B0: 0x114BC,\n\t0x14B914BD: 0x114BE,\n\t0x15B815AF: 0x115BA,\n\t0x15B915AF: 0x115BB,\n}\n\n// Total size of tables: 53KB (54226 bytes)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// +build !go1.10\n\npackage norm\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"9.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [55]uint8{\n\t0, 1, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20,\n\t21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36,\n\t84, 91, 103, 107, 118, 122, 129, 130,\n\t132, 202, 214, 216, 218, 220, 222, 224,\n\t226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x186D\n\tfirstCCC              = 0x2C9E\n\tendMulti              = 0x2F60\n\tfirstLeadingCCC       = 0x49AE\n\tfirstCCCZeroExcept    = 0x4A78\n\tfirstStarterWithNLead = 0x4A9F\n\tlastDecomp            = 0x4AA1\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19105 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,\n\t0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,\n\t0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,\n\t0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,\n\t0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,\n\t0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,\n\t0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,\n\t0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,\n\t0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,\n\t0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,\n\t0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,\n\t0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,\n\t0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,\n\t0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,\n\t0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,\n\t0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,\n\t0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,\n\t0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,\n\t0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90,\n\t0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7,\n\t0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42,\n\t0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2,\n\t0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8,\n\t0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB,\n\t0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8,\n\t0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42,\n\t0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3,\n\t0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8,\n\t0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42,\n\t0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81,\n\t0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42,\n\t0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89,\n\t0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9,\n\t0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42,\n\t0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE,\n\t0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA,\n\t0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42,\n\t0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA,\n\t0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42,\n\t0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9,\n\t0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA,\n\t0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42,\n\t0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81,\n\t0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB,\n\t0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90,\n\t0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43,\n\t0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43,\n\t0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43,\n\t0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43,\n\t0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43,\n\t0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43,\n\t0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43,\n\t// Bytes 340 - 37f\n\t0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43,\n\t0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43,\n\t0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43,\n\t0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43,\n\t0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43,\n\t0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43,\n\t0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43,\n\t0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43,\n\t// Bytes 380 - 3bf\n\t0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43,\n\t0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43,\n\t0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43,\n\t0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43,\n\t0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43,\n\t0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43,\n\t0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43,\n\t0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,\n\t// Bytes 3c0 - 3ff\n\t0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,\n\t0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,\n\t0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,\n\t0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,\n\t0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,\n\t0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,\n\t0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,\n\t0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,\n\t// Bytes 400 - 43f\n\t0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,\n\t0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,\n\t0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,\n\t0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,\n\t0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43,\n\t0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,\n\t0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,\n\t0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,\n\t// Bytes 440 - 47f\n\t0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,\n\t0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,\n\t0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,\n\t0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,\n\t0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43,\n\t0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,\n\t0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,\n\t0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,\n\t// Bytes 480 - 4bf\n\t0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,\n\t0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,\n\t0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,\n\t0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,\n\t0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43,\n\t0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,\n\t0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,\n\t0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,\n\t// Bytes 4c0 - 4ff\n\t0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,\n\t0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,\n\t0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,\n\t0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,\n\t0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43,\n\t0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,\n\t0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,\n\t0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,\n\t// Bytes 500 - 53f\n\t0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,\n\t0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,\n\t0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,\n\t0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,\n\t0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43,\n\t0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,\n\t0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,\n\t0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,\n\t// Bytes 540 - 57f\n\t0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,\n\t0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,\n\t0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,\n\t0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,\n\t0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43,\n\t0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,\n\t0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,\n\t0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,\n\t// Bytes 580 - 5bf\n\t0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,\n\t0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,\n\t0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,\n\t0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,\n\t0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43,\n\t0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,\n\t0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,\n\t0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,\n\t// Bytes 5c0 - 5ff\n\t0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,\n\t0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,\n\t0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,\n\t0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,\n\t0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43,\n\t0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,\n\t0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,\n\t0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,\n\t// Bytes 600 - 63f\n\t0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,\n\t0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,\n\t0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,\n\t0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,\n\t0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43,\n\t0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,\n\t0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,\n\t0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,\n\t// Bytes 640 - 67f\n\t0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,\n\t0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,\n\t0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,\n\t0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,\n\t0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43,\n\t0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,\n\t0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,\n\t0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,\n\t// Bytes 680 - 6bf\n\t0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,\n\t0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,\n\t0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,\n\t0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,\n\t0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43,\n\t0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,\n\t0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,\n\t0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,\n\t// Bytes 6c0 - 6ff\n\t0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,\n\t0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,\n\t0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,\n\t0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,\n\t0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43,\n\t0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,\n\t0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,\n\t0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,\n\t// Bytes 700 - 73f\n\t0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,\n\t0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,\n\t0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,\n\t0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,\n\t0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43,\n\t0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,\n\t0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,\n\t0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,\n\t// Bytes 740 - 77f\n\t0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,\n\t0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,\n\t0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,\n\t0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,\n\t0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43,\n\t0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,\n\t0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,\n\t0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,\n\t// Bytes 780 - 7bf\n\t0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,\n\t0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,\n\t0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,\n\t0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,\n\t0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43,\n\t0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,\n\t0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,\n\t0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,\n\t// Bytes 7c0 - 7ff\n\t0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,\n\t0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,\n\t0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,\n\t0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,\n\t0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43,\n\t0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,\n\t0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,\n\t0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,\n\t// Bytes 800 - 83f\n\t0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,\n\t0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,\n\t0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,\n\t0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,\n\t0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43,\n\t0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,\n\t0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,\n\t0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,\n\t// Bytes 840 - 87f\n\t0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,\n\t0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,\n\t0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,\n\t0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,\n\t0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43,\n\t0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,\n\t0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,\n\t0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,\n\t// Bytes 880 - 8bf\n\t0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,\n\t0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,\n\t0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,\n\t0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,\n\t0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43,\n\t0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,\n\t0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,\n\t0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,\n\t// Bytes 8c0 - 8ff\n\t0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,\n\t0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,\n\t0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,\n\t0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,\n\t0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43,\n\t0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,\n\t0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,\n\t0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,\n\t// Bytes 900 - 93f\n\t0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,\n\t0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,\n\t0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,\n\t0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,\n\t0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43,\n\t0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,\n\t0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,\n\t0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,\n\t// Bytes 940 - 97f\n\t0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,\n\t0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,\n\t0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,\n\t0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,\n\t0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43,\n\t0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,\n\t0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,\n\t0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,\n\t// Bytes 980 - 9bf\n\t0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,\n\t0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,\n\t0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,\n\t0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,\n\t0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43,\n\t0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,\n\t0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,\n\t0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,\n\t// Bytes 9c0 - 9ff\n\t0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,\n\t0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,\n\t0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,\n\t0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,\n\t0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43,\n\t0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,\n\t0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,\n\t0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,\n\t// Bytes a00 - a3f\n\t0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,\n\t0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,\n\t0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,\n\t0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,\n\t0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43,\n\t0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,\n\t0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,\n\t0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,\n\t// Bytes a40 - a7f\n\t0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,\n\t0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,\n\t0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,\n\t0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,\n\t0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43,\n\t0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,\n\t0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,\n\t0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,\n\t// Bytes a80 - abf\n\t0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,\n\t0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,\n\t0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,\n\t0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,\n\t0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43,\n\t0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,\n\t0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,\n\t0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,\n\t// Bytes ac0 - aff\n\t0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,\n\t0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,\n\t0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,\n\t0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,\n\t0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43,\n\t0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,\n\t0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,\n\t0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,\n\t// Bytes b00 - b3f\n\t0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,\n\t0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,\n\t0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,\n\t0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,\n\t0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43,\n\t0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,\n\t0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,\n\t0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,\n\t// Bytes b40 - b7f\n\t0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,\n\t0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,\n\t0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,\n\t0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,\n\t0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43,\n\t0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,\n\t0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,\n\t0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,\n\t// Bytes b80 - bbf\n\t0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,\n\t0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,\n\t0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,\n\t0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,\n\t0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43,\n\t0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,\n\t0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,\n\t0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,\n\t// Bytes bc0 - bff\n\t0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,\n\t0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,\n\t0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,\n\t0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,\n\t0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43,\n\t0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,\n\t0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,\n\t0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,\n\t// Bytes c00 - c3f\n\t0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,\n\t0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,\n\t0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,\n\t0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,\n\t0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43,\n\t0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,\n\t0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,\n\t0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,\n\t// Bytes c40 - c7f\n\t0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,\n\t0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,\n\t0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,\n\t0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,\n\t0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43,\n\t0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,\n\t0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,\n\t0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,\n\t// Bytes c80 - cbf\n\t0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,\n\t0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,\n\t0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,\n\t0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,\n\t0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43,\n\t0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,\n\t0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,\n\t0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,\n\t// Bytes cc0 - cff\n\t0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,\n\t0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,\n\t0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,\n\t0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,\n\t0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43,\n\t0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,\n\t0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,\n\t0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,\n\t// Bytes d00 - d3f\n\t0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,\n\t0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,\n\t0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,\n\t0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,\n\t0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43,\n\t0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,\n\t0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,\n\t0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,\n\t// Bytes d40 - d7f\n\t0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,\n\t0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,\n\t0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,\n\t0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,\n\t0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43,\n\t0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,\n\t0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,\n\t0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,\n\t// Bytes d80 - dbf\n\t0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,\n\t0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,\n\t0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,\n\t0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,\n\t0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43,\n\t0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,\n\t0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,\n\t0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,\n\t// Bytes dc0 - dff\n\t0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,\n\t0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,\n\t0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,\n\t0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,\n\t0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43,\n\t0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,\n\t0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,\n\t0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,\n\t// Bytes e00 - e3f\n\t0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,\n\t0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,\n\t0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,\n\t0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,\n\t0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43,\n\t0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,\n\t0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,\n\t0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,\n\t// Bytes e40 - e7f\n\t0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,\n\t0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,\n\t0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,\n\t0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,\n\t0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43,\n\t0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,\n\t0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,\n\t0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,\n\t// Bytes e80 - ebf\n\t0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,\n\t0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,\n\t0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,\n\t0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,\n\t0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43,\n\t0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,\n\t0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,\n\t0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,\n\t// Bytes ec0 - eff\n\t0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,\n\t0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,\n\t0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,\n\t0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,\n\t0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43,\n\t0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,\n\t0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,\n\t0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,\n\t// Bytes f00 - f3f\n\t0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,\n\t0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,\n\t0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,\n\t0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,\n\t0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43,\n\t0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,\n\t0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,\n\t0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,\n\t// Bytes f40 - f7f\n\t0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,\n\t0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,\n\t0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,\n\t0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,\n\t0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43,\n\t0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,\n\t0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,\n\t0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,\n\t// Bytes f80 - fbf\n\t0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,\n\t0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,\n\t0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,\n\t0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,\n\t0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43,\n\t0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,\n\t0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,\n\t0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,\n\t// Bytes fc0 - fff\n\t0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,\n\t0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,\n\t0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,\n\t0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,\n\t0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43,\n\t0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,\n\t0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,\n\t0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,\n\t// Bytes 1000 - 103f\n\t0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,\n\t0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,\n\t0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,\n\t0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,\n\t0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43,\n\t0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,\n\t0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,\n\t0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,\n\t// Bytes 1040 - 107f\n\t0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,\n\t0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,\n\t0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,\n\t0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,\n\t0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43,\n\t0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,\n\t0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,\n\t0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,\n\t// Bytes 1080 - 10bf\n\t0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,\n\t0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,\n\t0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,\n\t0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,\n\t0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43,\n\t0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,\n\t0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,\n\t0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,\n\t// Bytes 10c0 - 10ff\n\t0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,\n\t0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,\n\t0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,\n\t0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,\n\t0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43,\n\t0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,\n\t0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,\n\t0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,\n\t// Bytes 1100 - 113f\n\t0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,\n\t0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,\n\t0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,\n\t0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,\n\t0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43,\n\t0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,\n\t0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,\n\t0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,\n\t// Bytes 1140 - 117f\n\t0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,\n\t0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,\n\t0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,\n\t0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,\n\t0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43,\n\t0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,\n\t0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,\n\t0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,\n\t// Bytes 1180 - 11bf\n\t0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,\n\t0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,\n\t0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,\n\t0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,\n\t0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43,\n\t0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,\n\t0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,\n\t0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,\n\t// Bytes 11c0 - 11ff\n\t0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,\n\t0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,\n\t0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,\n\t0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,\n\t0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43,\n\t0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,\n\t0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,\n\t0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,\n\t// Bytes 1200 - 123f\n\t0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,\n\t0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,\n\t0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,\n\t0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,\n\t0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43,\n\t0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,\n\t0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,\n\t0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,\n\t// Bytes 1240 - 127f\n\t0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,\n\t0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,\n\t0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,\n\t0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,\n\t0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43,\n\t0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,\n\t0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,\n\t0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,\n\t// Bytes 1280 - 12bf\n\t0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,\n\t0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,\n\t0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,\n\t0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,\n\t0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43,\n\t0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,\n\t0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,\n\t0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,\n\t// Bytes 12c0 - 12ff\n\t0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,\n\t0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,\n\t0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,\n\t0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,\n\t0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43,\n\t0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,\n\t0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,\n\t0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,\n\t// Bytes 1300 - 133f\n\t0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,\n\t0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,\n\t0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,\n\t0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,\n\t0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43,\n\t0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,\n\t0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,\n\t0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,\n\t// Bytes 1340 - 137f\n\t0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,\n\t0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,\n\t0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,\n\t0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,\n\t0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43,\n\t0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,\n\t0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,\n\t0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,\n\t// Bytes 1380 - 13bf\n\t0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,\n\t0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,\n\t0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,\n\t0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,\n\t0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43,\n\t0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,\n\t0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,\n\t0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,\n\t// Bytes 13c0 - 13ff\n\t0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,\n\t0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,\n\t0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,\n\t0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,\n\t0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43,\n\t0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,\n\t0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,\n\t0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,\n\t// Bytes 1400 - 143f\n\t0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,\n\t0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,\n\t0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,\n\t0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,\n\t0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43,\n\t0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,\n\t0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,\n\t0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,\n\t// Bytes 1440 - 147f\n\t0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43,\n\t0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43,\n\t0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43,\n\t0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43,\n\t0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43,\n\t0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43,\n\t0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43,\n\t0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43,\n\t// Bytes 1480 - 14bf\n\t0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43,\n\t0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43,\n\t0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43,\n\t0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43,\n\t0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43,\n\t0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43,\n\t0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43,\n\t0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43,\n\t// Bytes 14c0 - 14ff\n\t0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43,\n\t0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43,\n\t0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43,\n\t0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43,\n\t0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43,\n\t0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43,\n\t0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43,\n\t0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43,\n\t// Bytes 1500 - 153f\n\t0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43,\n\t0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43,\n\t0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43,\n\t0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43,\n\t0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43,\n\t0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43,\n\t0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43,\n\t0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43,\n\t// Bytes 1540 - 157f\n\t0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43,\n\t0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43,\n\t0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43,\n\t0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43,\n\t0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43,\n\t0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43,\n\t0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43,\n\t0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43,\n\t// Bytes 1580 - 15bf\n\t0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43,\n\t0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43,\n\t0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43,\n\t0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43,\n\t0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43,\n\t0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43,\n\t0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43,\n\t0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43,\n\t// Bytes 15c0 - 15ff\n\t0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43,\n\t0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43,\n\t0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43,\n\t0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43,\n\t0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43,\n\t0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43,\n\t0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43,\n\t0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43,\n\t// Bytes 1600 - 163f\n\t0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43,\n\t0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43,\n\t0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43,\n\t0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43,\n\t0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43,\n\t0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43,\n\t0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43,\n\t0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43,\n\t// Bytes 1640 - 167f\n\t0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44,\n\t0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94,\n\t0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0,\n\t0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA,\n\t0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0,\n\t0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44,\n\t0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93,\n\t0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0,\n\t// Bytes 1680 - 16bf\n\t0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88,\n\t0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1,\n\t0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44,\n\t0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86,\n\t0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0,\n\t0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44,\n\t// Bytes 16c0 - 16ff\n\t0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80,\n\t0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0,\n\t0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93,\n\t0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44,\n\t0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A,\n\t0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0,\n\t0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA,\n\t// Bytes 1700 - 173f\n\t0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3,\n\t0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44,\n\t0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE,\n\t0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0,\n\t0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB,\n\t0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4,\n\t0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44,\n\t0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2,\n\t// Bytes 1740 - 177f\n\t0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5,\n\t0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44,\n\t0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89,\n\t0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0,\n\t0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A,\n\t0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5,\n\t// Bytes 1780 - 17bf\n\t0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44,\n\t0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2,\n\t0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0,\n\t0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A,\n\t0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6,\n\t0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44,\n\t0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93,\n\t0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0,\n\t// Bytes 17c0 - 17ff\n\t0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6,\n\t0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44,\n\t0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5,\n\t0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0,\n\t0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92,\n\t0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7,\n\t0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44,\n\t// Bytes 1800 - 183f\n\t0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2,\n\t0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0,\n\t0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92,\n\t0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8,\n\t0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44,\n\t0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85,\n\t0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0,\n\t0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A,\n\t// Bytes 1840 - 187f\n\t0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9,\n\t0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44,\n\t0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84,\n\t0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0,\n\t0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92,\n\t0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21,\n\t0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30,\n\t0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31,\n\t0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31,\n\t0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42,\n\t0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39,\n\t0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32,\n\t0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42,\n\t0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35,\n\t0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42,\n\t0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31,\n\t0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33,\n\t0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42,\n\t0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39,\n\t0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34,\n\t0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42,\n\t0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34,\n\t0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42,\n\t0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C,\n\t0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37,\n\t0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42,\n\t0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D,\n\t0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41,\n\t0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42,\n\t// Bytes 1940 - 197f\n\t0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A,\n\t0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48,\n\t0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42,\n\t0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A,\n\t0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49,\n\t0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42,\n\t0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A,\n\t0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t// Bytes 1a80 - 1abf\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t// Bytes 1ac0 - 1aff\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t// Bytes 1b00 - 1b3f\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t// Bytes 1b40 - 1b7f\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t// Bytes 1b80 - 1bbf\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t// Bytes 1c80 - 1cbf\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t// Bytes 1cc0 - 1cff\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t// Bytes 1d00 - 1d3f\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t// Bytes 1d40 - 1d7f\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t// Bytes 1d80 - 1dbf\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t// Bytes 1dc0 - 1dff\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t// Bytes 1e00 - 1e3f\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t// Bytes 1e40 - 1e7f\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1e80 - 1ebf\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t// Bytes 1ec0 - 1eff\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t// Bytes 1f00 - 1f3f\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t// Bytes 1f40 - 1f7f\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t// Bytes 1f80 - 1fbf\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t// Bytes 1fc0 - 1fff\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t// Bytes 2000 - 203f\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t// Bytes 2040 - 207f\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t// Bytes 2080 - 20bf\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t// Bytes 20c0 - 20ff\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t// Bytes 2100 - 213f\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t// Bytes 2140 - 217f\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t// Bytes 2180 - 21bf\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t// Bytes 21c0 - 21ff\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2200 - 223f\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t// Bytes 2240 - 227f\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t// Bytes 2280 - 22bf\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t// Bytes 22c0 - 22ff\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t// Bytes 2300 - 233f\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t// Bytes 2340 - 237f\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t// Bytes 2380 - 23bf\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t// Bytes 23c0 - 23ff\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t// Bytes 2400 - 243f\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t// Bytes 2440 - 247f\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t// Bytes 2480 - 24bf\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t// Bytes 24c0 - 24ff\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2500 - 253f\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t// Bytes 2540 - 257f\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t// Bytes 2580 - 25bf\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t// Bytes 25c0 - 25ff\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t// Bytes 2640 - 267f\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t// Bytes 2680 - 26bf\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t// Bytes 26c0 - 26ff\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD,\n\t// Bytes 2700 - 273f\n\t0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90,\n\t0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46,\n\t0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72,\n\t0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3,\n\t0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,\n\t// Bytes 2740 - 277f\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29,\n\t// Bytes 2780 - 27bf\n\t0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48,\n\t// Bytes 27c0 - 27ff\n\t0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87,\n\t0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7,\n\t0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8,\n\t0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2,\n\t// Bytes 2800 - 283f\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3,\n\t0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B,\n\t// Bytes 2840 - 287f\n\t0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C,\n\t0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95,\n\t// Bytes 2880 - 28bf\n\t0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6,\n\t0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3,\n\t0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9,\n\t0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A,\n\t0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3,\n\t0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3,\n\t// Bytes 2940 - 297f\n\t0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF,\n\t0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82,\n\t// Bytes 2980 - 29bf\n\t0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82,\n\t0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2a40 - 2a7f\n\t0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4,\n\t0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9,\n\t// Bytes 2b00 - 2b3f\n\t0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83,\n\t0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3,\n\t// Bytes 2bc0 - 2bff\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83,\n\t0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,\n\t0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88,\n\t// Bytes 2c40 - 2c7f\n\t0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9,\n\t// Bytes 2c80 - 2cbf\n\t0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84,\n\t0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9,\n\t0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2cc0 - 2cff\n\t0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0,\n\t0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2d00 - 2d3f\n\t0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0,\n\t0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1,\n\t0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1,\n\t0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t// Bytes 2d40 - 2d7f\n\t0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0,\n\t// Bytes 2d80 - 2dbf\n\t0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01,\n\t0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84,\n\t0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0,\n\t0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D,\n\t0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0,\n\t0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01,\n\t0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92,\n\t0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,\n\t// Bytes 2dc0 - 2dff\n\t0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96,\n\t0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0,\n\t0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01,\n\t0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0,\n\t0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44,\n\t0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC,\n\t0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9,\n\t// Bytes 2e00 - 2e3f\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e40 - 2e7f\n\t0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01,\n\t0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e80 - 2ebf\n\t0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01,\n\t0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4,\n\t0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 2ec0 - 2eff\n\t0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83,\n\t0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80,\n\t0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82,\n\t0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3,\n\t0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01,\n\t0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01,\n\t0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC,\n\t0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03,\n\t0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81,\n\t0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41,\n\t// Bytes 2f80 - 2fbf\n\t0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9,\n\t0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03,\n\t0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC,\n\t0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03,\n\t// Bytes 2fc0 - 2fff\n\t0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87,\n\t0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03,\n\t0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83,\n\t0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45,\n\t0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9,\n\t// Bytes 3000 - 303f\n\t0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03,\n\t0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45,\n\t0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9,\n\t0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC,\n\t0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03,\n\t0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87,\n\t// Bytes 3040 - 307f\n\t0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9,\n\t0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC,\n\t0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49,\n\t0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9,\n\t0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC,\n\t// Bytes 3080 - 30bf\n\t0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03,\n\t0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87,\n\t0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03,\n\t0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82,\n\t0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B,\n\t// Bytes 30c0 - 30ff\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03,\n\t0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9,\n\t0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03,\n\t// Bytes 3100 - 313f\n\t0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83,\n\t0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03,\n\t0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81,\n\t0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F,\n\t0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9,\n\t// Bytes 3140 - 317f\n\t0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03,\n\t0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87,\n\t0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52,\n\t0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC,\n\t0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82,\n\t// Bytes 3180 - 31bf\n\t0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53,\n\t0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9,\n\t0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC,\n\t// Bytes 31c0 - 31ff\n\t0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03,\n\t0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A,\n\t0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03,\n\t0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56,\n\t// Bytes 3200 - 323f\n\t0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC,\n\t0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03,\n\t0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88,\n\t0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58,\n\t0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9,\n\t0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC,\n\t0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03,\n\t// Bytes 3240 - 327f\n\t0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84,\n\t0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59,\n\t0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9,\n\t0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC,\n\t0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9,\n\t// Bytes 3280 - 32bf\n\t0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC,\n\t0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03,\n\t0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61,\n\t0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5,\n\t0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC,\n\t0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81,\n\t// Bytes 32c0 - 32ff\n\t0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63,\n\t0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65,\n\t0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9,\n\t0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC,\n\t// Bytes 3300 - 333f\n\t0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03,\n\t0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89,\n\t0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9,\n\t0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81,\n\t0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67,\n\t// Bytes 3340 - 337f\n\t0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9,\n\t0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87,\n\t0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC,\n\t0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3380 - 33bf\n\t0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81,\n\t0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69,\n\t0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9,\n\t0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC,\n\t0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91,\n\t0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69,\n\t0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5,\n\t// Bytes 33c0 - 33ff\n\t0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03,\n\t0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9,\n\t0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81,\n\t// Bytes 3400 - 343f\n\t0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9,\n\t0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC,\n\t0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03,\n\t0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E,\n\t0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC,\n\t// Bytes 3440 - 347f\n\t0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03,\n\t0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B,\n\t0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9,\n\t0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC,\n\t0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03,\n\t0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72,\n\t// Bytes 3480 - 34bf\n\t0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC,\n\t0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03,\n\t0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74,\n\t0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC,\n\t0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03,\n\t// Bytes 34c0 - 34ff\n\t0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1,\n\t0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75,\n\t0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9,\n\t0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC,\n\t0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03,\n\t0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75,\n\t0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5,\n\t// Bytes 3500 - 353f\n\t0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC,\n\t0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83,\n\t0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77,\n\t0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9,\n\t0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC,\n\t0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03,\n\t0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3,\n\t// Bytes 3540 - 357f\n\t0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78,\n\t0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9,\n\t0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC,\n\t0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03,\n\t0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87,\n\t0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79,\n\t0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9,\n\t0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC,\n\t// Bytes 3580 - 35bf\n\t0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A,\n\t0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80,\n\t0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04,\n\t0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86,\n\t0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84,\n\t0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04,\n\t// Bytes 35c0 - 35ff\n\t0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6,\n\t0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81,\n\t0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04,\n\t0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92,\n\t0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85,\n\t// Bytes 3600 - 363f\n\t0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F,\n\t// Bytes 3640 - 367f\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04,\n\t// Bytes 3680 - 36bf\n\t0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85,\n\t0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7,\n\t0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82,\n\t// Bytes 36c0 - 36ff\n\t0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81,\n\t0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85,\n\t0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04,\n\t0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92,\n\t// Bytes 3700 - 373f\n\t0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81,\n\t0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3740 - 377f\n\t0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84,\n\t0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04,\n\t0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A,\n\t0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04,\n\t0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B,\n\t// Bytes 3780 - 37bf\n\t0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6,\n\t// Bytes 37c0 - 37ff\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8,\n\t0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04,\n\t0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83,\n\t0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3800 - 383f\n\t0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4,\n\t0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F,\n\t0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88,\n\t// Bytes 3840 - 387f\n\t0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04,\n\t0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94,\n\t0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04,\n\t0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92,\n\t0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94,\n\t0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89,\n\t0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA,\n\t0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05,\n\t0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7,\n\t0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC,\n\t// Bytes 3900 - 393f\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7,\n\t0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3,\n\t0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,\n\t0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05,\n\t0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53,\n\t0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC,\n\t0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3,\n\t0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88,\n\t// Bytes 39c0 - 39ff\n\t0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83,\n\t0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA,\n\t0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,\n\t// Bytes 3b00 - 3b3f\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC,\n\t0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83,\n\t// Bytes 3b80 - 3bbf\n\t0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05,\n\t0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE,\n\t0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82,\n\t0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3c40 - 3c7f\n\t0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t// Bytes 3c80 - 3cbf\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2,\n\t// Bytes 3cc0 - 3cff\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05,\n\t0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t// Bytes 3d00 - 3d3f\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3d40 - 3d7f\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t// Bytes 3d80 - 3dbf\n\t0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t// Bytes 3dc0 - 3dff\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t// Bytes 3e00 - 3e3f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3e40 - 3e7f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t// Bytes 3e80 - 3ebf\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t// Bytes 3ec0 - 3eff\n\t0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85,\n\t0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11,\n\t// Bytes 3f00 - 3f3f\n\t0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f40 - 3f7f\n\t0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f80 - 3fbf\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D,\n\t// Bytes 3fc0 - 3fff\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4000 - 403f\n\t0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4040 - 407f\n\t0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4080 - 40bf\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 40c0 - 40ff\n\t0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t// Bytes 4100 - 413f\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t// Bytes 4140 - 417f\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD,\n\t// Bytes 4180 - 41bf\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t// Bytes 41c0 - 41ff\n\t0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t// Bytes 4200 - 423f\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82,\n\t// Bytes 4240 - 427f\n\t0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0,\n\t0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82,\n\t0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2,\n\t0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43,\n\t0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84,\n\t0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20,\n\t0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9,\n\t0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC,\n\t// Bytes 4280 - 42bf\n\t0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43,\n\t0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94,\n\t0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20,\n\t0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5,\n\t0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD,\n\t0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43,\n\t0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D,\n\t0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20,\n\t// Bytes 42c0 - 42ff\n\t0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D,\n\t0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9,\n\t0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43,\n\t0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82,\n\t0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE,\n\t0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9,\n\t// Bytes 4300 - 433f\n\t0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,\n\t0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9,\n\t0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC,\n\t// Bytes 4340 - 437f\n\t0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9,\n\t0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7,\n\t0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7,\n\t// Bytes 4380 - 43bf\n\t0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7,\n\t0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41,\n\t// Bytes 43c0 - 43ff\n\t0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49,\n\t0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7,\n\t0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6,\n\t// Bytes 4400 - 443f\n\t0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31,\n\t0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8,\n\t0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9,\n\t0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8,\n\t0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9,\n\t0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65,\n\t0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9,\n\t// Bytes 4440 - 447f\n\t0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9,\n\t0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75,\n\t0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9,\n\t0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9,\n\t0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9,\n\t0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB,\n\t0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t// Bytes 4480 - 44bf\n\t0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82,\n\t0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45,\n\t0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9,\n\t0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91,\n\t// Bytes 44c0 - 44ff\n\t0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72,\n\t0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45,\n\t0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20,\n\t0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB,\n\t0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6,\n\t0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6,\n\t// Bytes 4500 - 453f\n\t0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1,\n\t// Bytes 4540 - 457f\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97,\n\t// Bytes 4580 - 45bf\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3,\n\t// Bytes 45c0 - 45ff\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85,\n\t0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD,\n\t0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49,\n\t// Bytes 4600 - 463f\n\t0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,\n\t0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85,\n\t0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t// Bytes 4640 - 467f\n\t0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86,\n\t0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t// Bytes 4680 - 46bf\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE,\n\t0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC,\n\t0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83,\n\t0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A,\n\t0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43,\n\t0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9,\n\t0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83,\n\t// Bytes 46c0 - 46ff\n\t0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F,\n\t0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9,\n\t0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC,\n\t0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83,\n\t0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8,\n\t0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53,\n\t0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9,\n\t// Bytes 4700 - 473f\n\t0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC,\n\t0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83,\n\t0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B,\n\t0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61,\n\t0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9,\n\t0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC,\n\t0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82,\n\t// Bytes 4740 - 477f\n\t0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65,\n\t0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5,\n\t0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83,\n\t0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84,\n\t0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F,\n\t0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD,\n\t0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,\n\t// Bytes 4780 - 47bf\n\t0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C,\n\t0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75,\n\t0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9,\n\t0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC,\n\t0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC,\n\t// Bytes 47c0 - 47ff\n\t0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE,\n\t// Bytes 4800 - 483f\n\t0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE,\n\t0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9,\n\t0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9,\n\t// Bytes 4840 - 487f\n\t0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE,\n\t0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF,\n\t0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF,\n\t0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC,\n\t// Bytes 4880 - 48bf\n\t0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t// Bytes 48c0 - 48ff\n\t0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t// Bytes 4900 - 493f\n\t0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t// Bytes 4940 - 497f\n\t0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t// Bytes 4980 - 49bf\n\t0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC,\n\t0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32,\n\t0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85,\n\t// Bytes 49c0 - 49ff\n\t0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43,\n\t// Bytes 4a00 - 4a3f\n\t0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01,\n\t// Bytes 4a40 - 4a7f\n\t0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01,\n\t0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01,\n\t0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32,\n\t0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3,\n\t// Bytes 4a80 - 4abf\n\t0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1,\n\t0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00,\n\t0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10332 bytes (10.09 KiB). Checksum: 51cc525b297fc970.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 44:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 44\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 46 blocks, 2944 entries, 5888 bytes\n// The third block is the zero block.\nvar nfcValues = [2944]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35a1,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b,\n\t0x2c6: 0xa000, 0x2c7: 0x3709,\n\t0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3733, 0x302: 0x37b7,\n\t0x310: 0x370f, 0x311: 0x3793,\n\t0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd,\n\t0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf,\n\t0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed,\n\t0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805,\n\t0x338: 0x3787, 0x339: 0x380b,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812d,\n\t0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,\n\t0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132,\n\t0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d,\n\t0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132,\n\t0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132,\n\t0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a,\n\t0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f,\n\t0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116,\n\t0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c,\n\t0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x812d,\n\t0x3b0: 0x811e,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xa000,\n\t0x3c6: 0x2d26, 0x3c7: 0xa000, 0x3c8: 0x2d2e, 0x3c9: 0xa000, 0x3ca: 0x2d36, 0x3cb: 0xa000,\n\t0x3cc: 0x2d3e, 0x3cd: 0xa000, 0x3ce: 0x2d46, 0x3d1: 0xa000,\n\t0x3d2: 0x2d4e,\n\t0x3f4: 0x8102, 0x3f5: 0x9900,\n\t0x3fa: 0xa000, 0x3fb: 0x2d56,\n\t0x3fc: 0xa000, 0x3fd: 0x2d5e, 0x3fe: 0xa000, 0x3ff: 0xa000,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x2f97, 0x401: 0x32a3, 0x402: 0x2fa1, 0x403: 0x32ad, 0x404: 0x2fa6, 0x405: 0x32b2,\n\t0x406: 0x2fab, 0x407: 0x32b7, 0x408: 0x38cc, 0x409: 0x3a5b, 0x40a: 0x2fc4, 0x40b: 0x32d0,\n\t0x40c: 0x2fce, 0x40d: 0x32da, 0x40e: 0x2fdd, 0x40f: 0x32e9, 0x410: 0x2fd3, 0x411: 0x32df,\n\t0x412: 0x2fd8, 0x413: 0x32e4, 0x414: 0x38ef, 0x415: 0x3a7e, 0x416: 0x38f6, 0x417: 0x3a85,\n\t0x418: 0x3019, 0x419: 0x3325, 0x41a: 0x301e, 0x41b: 0x332a, 0x41c: 0x3904, 0x41d: 0x3a93,\n\t0x41e: 0x3023, 0x41f: 0x332f, 0x420: 0x3032, 0x421: 0x333e, 0x422: 0x3050, 0x423: 0x335c,\n\t0x424: 0x305f, 0x425: 0x336b, 0x426: 0x3055, 0x427: 0x3361, 0x428: 0x3064, 0x429: 0x3370,\n\t0x42a: 0x3069, 0x42b: 0x3375, 0x42c: 0x30af, 0x42d: 0x33bb, 0x42e: 0x390b, 0x42f: 0x3a9a,\n\t0x430: 0x30b9, 0x431: 0x33ca, 0x432: 0x30c3, 0x433: 0x33d4, 0x434: 0x30cd, 0x435: 0x33de,\n\t0x436: 0x46c4, 0x437: 0x4755, 0x438: 0x3912, 0x439: 0x3aa1, 0x43a: 0x30e6, 0x43b: 0x33f7,\n\t0x43c: 0x30e1, 0x43d: 0x33f2, 0x43e: 0x30eb, 0x43f: 0x33fc,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x30f0, 0x441: 0x3401, 0x442: 0x30f5, 0x443: 0x3406, 0x444: 0x3109, 0x445: 0x341a,\n\t0x446: 0x3113, 0x447: 0x3424, 0x448: 0x3122, 0x449: 0x3433, 0x44a: 0x311d, 0x44b: 0x342e,\n\t0x44c: 0x3935, 0x44d: 0x3ac4, 0x44e: 0x3943, 0x44f: 0x3ad2, 0x450: 0x394a, 0x451: 0x3ad9,\n\t0x452: 0x3951, 0x453: 0x3ae0, 0x454: 0x314f, 0x455: 0x3460, 0x456: 0x3154, 0x457: 0x3465,\n\t0x458: 0x315e, 0x459: 0x346f, 0x45a: 0x46f1, 0x45b: 0x4782, 0x45c: 0x3997, 0x45d: 0x3b26,\n\t0x45e: 0x3177, 0x45f: 0x3488, 0x460: 0x3181, 0x461: 0x3492, 0x462: 0x4700, 0x463: 0x4791,\n\t0x464: 0x399e, 0x465: 0x3b2d, 0x466: 0x39a5, 0x467: 0x3b34, 0x468: 0x39ac, 0x469: 0x3b3b,\n\t0x46a: 0x3190, 0x46b: 0x34a1, 0x46c: 0x319a, 0x46d: 0x34b0, 0x46e: 0x31ae, 0x46f: 0x34c4,\n\t0x470: 0x31a9, 0x471: 0x34bf, 0x472: 0x31ea, 0x473: 0x3500, 0x474: 0x31f9, 0x475: 0x350f,\n\t0x476: 0x31f4, 0x477: 0x350a, 0x478: 0x39b3, 0x479: 0x3b42, 0x47a: 0x39ba, 0x47b: 0x3b49,\n\t0x47c: 0x31fe, 0x47d: 0x3514, 0x47e: 0x3203, 0x47f: 0x3519,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x3208, 0x481: 0x351e, 0x482: 0x320d, 0x483: 0x3523, 0x484: 0x321c, 0x485: 0x3532,\n\t0x486: 0x3217, 0x487: 0x352d, 0x488: 0x3221, 0x489: 0x353c, 0x48a: 0x3226, 0x48b: 0x3541,\n\t0x48c: 0x322b, 0x48d: 0x3546, 0x48e: 0x3249, 0x48f: 0x3564, 0x490: 0x3262, 0x491: 0x3582,\n\t0x492: 0x3271, 0x493: 0x3591, 0x494: 0x3276, 0x495: 0x3596, 0x496: 0x337a, 0x497: 0x34a6,\n\t0x498: 0x3537, 0x499: 0x3573, 0x49b: 0x35d1,\n\t0x4a0: 0x46a1, 0x4a1: 0x4732, 0x4a2: 0x2f83, 0x4a3: 0x328f,\n\t0x4a4: 0x3878, 0x4a5: 0x3a07, 0x4a6: 0x3871, 0x4a7: 0x3a00, 0x4a8: 0x3886, 0x4a9: 0x3a15,\n\t0x4aa: 0x387f, 0x4ab: 0x3a0e, 0x4ac: 0x38be, 0x4ad: 0x3a4d, 0x4ae: 0x3894, 0x4af: 0x3a23,\n\t0x4b0: 0x388d, 0x4b1: 0x3a1c, 0x4b2: 0x38a2, 0x4b3: 0x3a31, 0x4b4: 0x389b, 0x4b5: 0x3a2a,\n\t0x4b6: 0x38c5, 0x4b7: 0x3a54, 0x4b8: 0x46b5, 0x4b9: 0x4746, 0x4ba: 0x3000, 0x4bb: 0x330c,\n\t0x4bc: 0x2fec, 0x4bd: 0x32f8, 0x4be: 0x38da, 0x4bf: 0x3a69,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x38d3, 0x4c1: 0x3a62, 0x4c2: 0x38e8, 0x4c3: 0x3a77, 0x4c4: 0x38e1, 0x4c5: 0x3a70,\n\t0x4c6: 0x38fd, 0x4c7: 0x3a8c, 0x4c8: 0x3091, 0x4c9: 0x339d, 0x4ca: 0x30a5, 0x4cb: 0x33b1,\n\t0x4cc: 0x46e7, 0x4cd: 0x4778, 0x4ce: 0x3136, 0x4cf: 0x3447, 0x4d0: 0x3920, 0x4d1: 0x3aaf,\n\t0x4d2: 0x3919, 0x4d3: 0x3aa8, 0x4d4: 0x392e, 0x4d5: 0x3abd, 0x4d6: 0x3927, 0x4d7: 0x3ab6,\n\t0x4d8: 0x3989, 0x4d9: 0x3b18, 0x4da: 0x396d, 0x4db: 0x3afc, 0x4dc: 0x3966, 0x4dd: 0x3af5,\n\t0x4de: 0x397b, 0x4df: 0x3b0a, 0x4e0: 0x3974, 0x4e1: 0x3b03, 0x4e2: 0x3982, 0x4e3: 0x3b11,\n\t0x4e4: 0x31e5, 0x4e5: 0x34fb, 0x4e6: 0x31c7, 0x4e7: 0x34dd, 0x4e8: 0x39e4, 0x4e9: 0x3b73,\n\t0x4ea: 0x39dd, 0x4eb: 0x3b6c, 0x4ec: 0x39f2, 0x4ed: 0x3b81, 0x4ee: 0x39eb, 0x4ef: 0x3b7a,\n\t0x4f0: 0x39f9, 0x4f1: 0x3b88, 0x4f2: 0x3230, 0x4f3: 0x354b, 0x4f4: 0x3258, 0x4f5: 0x3578,\n\t0x4f6: 0x3253, 0x4f7: 0x356e, 0x4f8: 0x323f, 0x4f9: 0x355a,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x4804, 0x501: 0x480a, 0x502: 0x491e, 0x503: 0x4936, 0x504: 0x4926, 0x505: 0x493e,\n\t0x506: 0x492e, 0x507: 0x4946, 0x508: 0x47aa, 0x509: 0x47b0, 0x50a: 0x488e, 0x50b: 0x48a6,\n\t0x50c: 0x4896, 0x50d: 0x48ae, 0x50e: 0x489e, 0x50f: 0x48b6, 0x510: 0x4816, 0x511: 0x481c,\n\t0x512: 0x3db8, 0x513: 0x3dc8, 0x514: 0x3dc0, 0x515: 0x3dd0,\n\t0x518: 0x47b6, 0x519: 0x47bc, 0x51a: 0x3ce8, 0x51b: 0x3cf8, 0x51c: 0x3cf0, 0x51d: 0x3d00,\n\t0x520: 0x482e, 0x521: 0x4834, 0x522: 0x494e, 0x523: 0x4966,\n\t0x524: 0x4956, 0x525: 0x496e, 0x526: 0x495e, 0x527: 0x4976, 0x528: 0x47c2, 0x529: 0x47c8,\n\t0x52a: 0x48be, 0x52b: 0x48d6, 0x52c: 0x48c6, 0x52d: 0x48de, 0x52e: 0x48ce, 0x52f: 0x48e6,\n\t0x530: 0x4846, 0x531: 0x484c, 0x532: 0x3e18, 0x533: 0x3e30, 0x534: 0x3e20, 0x535: 0x3e38,\n\t0x536: 0x3e28, 0x537: 0x3e40, 0x538: 0x47ce, 0x539: 0x47d4, 0x53a: 0x3d18, 0x53b: 0x3d30,\n\t0x53c: 0x3d20, 0x53d: 0x3d38, 0x53e: 0x3d28, 0x53f: 0x3d40,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x4852, 0x541: 0x4858, 0x542: 0x3e48, 0x543: 0x3e58, 0x544: 0x3e50, 0x545: 0x3e60,\n\t0x548: 0x47da, 0x549: 0x47e0, 0x54a: 0x3d48, 0x54b: 0x3d58,\n\t0x54c: 0x3d50, 0x54d: 0x3d60, 0x550: 0x4864, 0x551: 0x486a,\n\t0x552: 0x3e80, 0x553: 0x3e98, 0x554: 0x3e88, 0x555: 0x3ea0, 0x556: 0x3e90, 0x557: 0x3ea8,\n\t0x559: 0x47e6, 0x55b: 0x3d68, 0x55d: 0x3d70,\n\t0x55f: 0x3d78, 0x560: 0x487c, 0x561: 0x4882, 0x562: 0x497e, 0x563: 0x4996,\n\t0x564: 0x4986, 0x565: 0x499e, 0x566: 0x498e, 0x567: 0x49a6, 0x568: 0x47ec, 0x569: 0x47f2,\n\t0x56a: 0x48ee, 0x56b: 0x4906, 0x56c: 0x48f6, 0x56d: 0x490e, 0x56e: 0x48fe, 0x56f: 0x4916,\n\t0x570: 0x47f8, 0x571: 0x431e, 0x572: 0x3691, 0x573: 0x4324, 0x574: 0x4822, 0x575: 0x432a,\n\t0x576: 0x36a3, 0x577: 0x4330, 0x578: 0x36c1, 0x579: 0x4336, 0x57a: 0x36d9, 0x57b: 0x433c,\n\t0x57c: 0x4870, 0x57d: 0x4342,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3da0, 0x581: 0x3da8, 0x582: 0x4184, 0x583: 0x41a2, 0x584: 0x418e, 0x585: 0x41ac,\n\t0x586: 0x4198, 0x587: 0x41b6, 0x588: 0x3cd8, 0x589: 0x3ce0, 0x58a: 0x40d0, 0x58b: 0x40ee,\n\t0x58c: 0x40da, 0x58d: 0x40f8, 0x58e: 0x40e4, 0x58f: 0x4102, 0x590: 0x3de8, 0x591: 0x3df0,\n\t0x592: 0x41c0, 0x593: 0x41de, 0x594: 0x41ca, 0x595: 0x41e8, 0x596: 0x41d4, 0x597: 0x41f2,\n\t0x598: 0x3d08, 0x599: 0x3d10, 0x59a: 0x410c, 0x59b: 0x412a, 0x59c: 0x4116, 0x59d: 0x4134,\n\t0x59e: 0x4120, 0x59f: 0x413e, 0x5a0: 0x3ec0, 0x5a1: 0x3ec8, 0x5a2: 0x41fc, 0x5a3: 0x421a,\n\t0x5a4: 0x4206, 0x5a5: 0x4224, 0x5a6: 0x4210, 0x5a7: 0x422e, 0x5a8: 0x3d80, 0x5a9: 0x3d88,\n\t0x5aa: 0x4148, 0x5ab: 0x4166, 0x5ac: 0x4152, 0x5ad: 0x4170, 0x5ae: 0x415c, 0x5af: 0x417a,\n\t0x5b0: 0x3685, 0x5b1: 0x367f, 0x5b2: 0x3d90, 0x5b3: 0x368b, 0x5b4: 0x3d98,\n\t0x5b6: 0x4810, 0x5b7: 0x3db0, 0x5b8: 0x35f5, 0x5b9: 0x35ef, 0x5ba: 0x35e3, 0x5bb: 0x42ee,\n\t0x5bc: 0x35fb, 0x5bd: 0x8100, 0x5be: 0x01d3, 0x5bf: 0xa100,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x8100, 0x5c1: 0x35a7, 0x5c2: 0x3dd8, 0x5c3: 0x369d, 0x5c4: 0x3de0,\n\t0x5c6: 0x483a, 0x5c7: 0x3df8, 0x5c8: 0x3601, 0x5c9: 0x42f4, 0x5ca: 0x360d, 0x5cb: 0x42fa,\n\t0x5cc: 0x3619, 0x5cd: 0x3b8f, 0x5ce: 0x3b96, 0x5cf: 0x3b9d, 0x5d0: 0x36b5, 0x5d1: 0x36af,\n\t0x5d2: 0x3e00, 0x5d3: 0x44e4, 0x5d6: 0x36bb, 0x5d7: 0x3e10,\n\t0x5d8: 0x3631, 0x5d9: 0x362b, 0x5da: 0x361f, 0x5db: 0x4300, 0x5dd: 0x3ba4,\n\t0x5de: 0x3bab, 0x5df: 0x3bb2, 0x5e0: 0x36eb, 0x5e1: 0x36e5, 0x5e2: 0x3e68, 0x5e3: 0x44ec,\n\t0x5e4: 0x36cd, 0x5e5: 0x36d3, 0x5e6: 0x36f1, 0x5e7: 0x3e78, 0x5e8: 0x3661, 0x5e9: 0x365b,\n\t0x5ea: 0x364f, 0x5eb: 0x430c, 0x5ec: 0x3649, 0x5ed: 0x359b, 0x5ee: 0x42e8, 0x5ef: 0x0081,\n\t0x5f2: 0x3eb0, 0x5f3: 0x36f7, 0x5f4: 0x3eb8,\n\t0x5f6: 0x4888, 0x5f7: 0x3ed0, 0x5f8: 0x363d, 0x5f9: 0x4306, 0x5fa: 0x366d, 0x5fb: 0x4318,\n\t0x5fc: 0x3679, 0x5fd: 0x4256, 0x5fe: 0xa100,\n\t// Block 0x18, offset 0x600\n\t0x601: 0x3c06, 0x603: 0xa000, 0x604: 0x3c0d, 0x605: 0xa000,\n\t0x607: 0x3c14, 0x608: 0xa000, 0x609: 0x3c1b,\n\t0x60d: 0xa000,\n\t0x620: 0x2f65, 0x621: 0xa000, 0x622: 0x3c29,\n\t0x624: 0xa000, 0x625: 0xa000,\n\t0x62d: 0x3c22, 0x62e: 0x2f60, 0x62f: 0x2f6a,\n\t0x630: 0x3c30, 0x631: 0x3c37, 0x632: 0xa000, 0x633: 0xa000, 0x634: 0x3c3e, 0x635: 0x3c45,\n\t0x636: 0xa000, 0x637: 0xa000, 0x638: 0x3c4c, 0x639: 0x3c53, 0x63a: 0xa000, 0x63b: 0xa000,\n\t0x63c: 0xa000, 0x63d: 0xa000,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3c5a, 0x641: 0x3c61, 0x642: 0xa000, 0x643: 0xa000, 0x644: 0x3c76, 0x645: 0x3c7d,\n\t0x646: 0xa000, 0x647: 0xa000, 0x648: 0x3c84, 0x649: 0x3c8b,\n\t0x651: 0xa000,\n\t0x652: 0xa000,\n\t0x662: 0xa000,\n\t0x668: 0xa000, 0x669: 0xa000,\n\t0x66b: 0xa000, 0x66c: 0x3ca0, 0x66d: 0x3ca7, 0x66e: 0x3cae, 0x66f: 0x3cb5,\n\t0x672: 0xa000, 0x673: 0xa000, 0x674: 0xa000, 0x675: 0xa000,\n\t// Block 0x1a, offset 0x680\n\t0x686: 0xa000, 0x68b: 0xa000,\n\t0x68c: 0x3f08, 0x68d: 0xa000, 0x68e: 0x3f10, 0x68f: 0xa000, 0x690: 0x3f18, 0x691: 0xa000,\n\t0x692: 0x3f20, 0x693: 0xa000, 0x694: 0x3f28, 0x695: 0xa000, 0x696: 0x3f30, 0x697: 0xa000,\n\t0x698: 0x3f38, 0x699: 0xa000, 0x69a: 0x3f40, 0x69b: 0xa000, 0x69c: 0x3f48, 0x69d: 0xa000,\n\t0x69e: 0x3f50, 0x69f: 0xa000, 0x6a0: 0x3f58, 0x6a1: 0xa000, 0x6a2: 0x3f60,\n\t0x6a4: 0xa000, 0x6a5: 0x3f68, 0x6a6: 0xa000, 0x6a7: 0x3f70, 0x6a8: 0xa000, 0x6a9: 0x3f78,\n\t0x6af: 0xa000,\n\t0x6b0: 0x3f80, 0x6b1: 0x3f88, 0x6b2: 0xa000, 0x6b3: 0x3f90, 0x6b4: 0x3f98, 0x6b5: 0xa000,\n\t0x6b6: 0x3fa0, 0x6b7: 0x3fa8, 0x6b8: 0xa000, 0x6b9: 0x3fb0, 0x6ba: 0x3fb8, 0x6bb: 0xa000,\n\t0x6bc: 0x3fc0, 0x6bd: 0x3fc8,\n\t// Block 0x1b, offset 0x6c0\n\t0x6d4: 0x3f00,\n\t0x6d9: 0x9903, 0x6da: 0x9903, 0x6db: 0x8100, 0x6dc: 0x8100, 0x6dd: 0xa000,\n\t0x6de: 0x3fd0,\n\t0x6e6: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3fe0, 0x6ed: 0xa000, 0x6ee: 0x3fe8, 0x6ef: 0xa000,\n\t0x6f0: 0x3ff0, 0x6f1: 0xa000, 0x6f2: 0x3ff8, 0x6f3: 0xa000, 0x6f4: 0x4000, 0x6f5: 0xa000,\n\t0x6f6: 0x4008, 0x6f7: 0xa000, 0x6f8: 0x4010, 0x6f9: 0xa000, 0x6fa: 0x4018, 0x6fb: 0xa000,\n\t0x6fc: 0x4020, 0x6fd: 0xa000, 0x6fe: 0x4028, 0x6ff: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x4030, 0x701: 0xa000, 0x702: 0x4038, 0x704: 0xa000, 0x705: 0x4040,\n\t0x706: 0xa000, 0x707: 0x4048, 0x708: 0xa000, 0x709: 0x4050,\n\t0x70f: 0xa000, 0x710: 0x4058, 0x711: 0x4060,\n\t0x712: 0xa000, 0x713: 0x4068, 0x714: 0x4070, 0x715: 0xa000, 0x716: 0x4078, 0x717: 0x4080,\n\t0x718: 0xa000, 0x719: 0x4088, 0x71a: 0x4090, 0x71b: 0xa000, 0x71c: 0x4098, 0x71d: 0x40a0,\n\t0x72f: 0xa000,\n\t0x730: 0xa000, 0x731: 0xa000, 0x732: 0xa000, 0x734: 0x3fd8,\n\t0x737: 0x40a8, 0x738: 0x40b0, 0x739: 0x40b8, 0x73a: 0x40c0,\n\t0x73d: 0xa000, 0x73e: 0x40c8,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1377, 0x741: 0x0cfb, 0x742: 0x13d3, 0x743: 0x139f, 0x744: 0x0e57, 0x745: 0x06eb,\n\t0x746: 0x08df, 0x747: 0x162b, 0x748: 0x162b, 0x749: 0x0a0b, 0x74a: 0x145f, 0x74b: 0x0943,\n\t0x74c: 0x0a07, 0x74d: 0x0bef, 0x74e: 0x0fcf, 0x74f: 0x115f, 0x750: 0x1297, 0x751: 0x12d3,\n\t0x752: 0x1307, 0x753: 0x141b, 0x754: 0x0d73, 0x755: 0x0dff, 0x756: 0x0eab, 0x757: 0x0f43,\n\t0x758: 0x125f, 0x759: 0x1447, 0x75a: 0x1573, 0x75b: 0x070f, 0x75c: 0x08b3, 0x75d: 0x0d87,\n\t0x75e: 0x0ecf, 0x75f: 0x1293, 0x760: 0x15c3, 0x761: 0x0ab3, 0x762: 0x0e77, 0x763: 0x1283,\n\t0x764: 0x1317, 0x765: 0x0c23, 0x766: 0x11bb, 0x767: 0x12df, 0x768: 0x0b1f, 0x769: 0x0d0f,\n\t0x76a: 0x0e17, 0x76b: 0x0f1b, 0x76c: 0x1427, 0x76d: 0x074f, 0x76e: 0x07e7, 0x76f: 0x0853,\n\t0x770: 0x0c8b, 0x771: 0x0d7f, 0x772: 0x0ecb, 0x773: 0x0fef, 0x774: 0x1177, 0x775: 0x128b,\n\t0x776: 0x12a3, 0x777: 0x13c7, 0x778: 0x14ef, 0x779: 0x15a3, 0x77a: 0x15bf, 0x77b: 0x102b,\n\t0x77c: 0x106b, 0x77d: 0x1123, 0x77e: 0x1243, 0x77f: 0x147b,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x15cb, 0x781: 0x134b, 0x782: 0x09c7, 0x783: 0x0b3b, 0x784: 0x10db, 0x785: 0x119b,\n\t0x786: 0x0eff, 0x787: 0x1033, 0x788: 0x1397, 0x789: 0x14e7, 0x78a: 0x09c3, 0x78b: 0x0a8f,\n\t0x78c: 0x0d77, 0x78d: 0x0e2b, 0x78e: 0x0e5f, 0x78f: 0x1113, 0x790: 0x113b, 0x791: 0x14a7,\n\t0x792: 0x084f, 0x793: 0x11a7, 0x794: 0x07f3, 0x795: 0x07ef, 0x796: 0x1097, 0x797: 0x1127,\n\t0x798: 0x125b, 0x799: 0x14af, 0x79a: 0x1367, 0x79b: 0x0c27, 0x79c: 0x0d73, 0x79d: 0x1357,\n\t0x79e: 0x06f7, 0x79f: 0x0a63, 0x7a0: 0x0b93, 0x7a1: 0x0f2f, 0x7a2: 0x0faf, 0x7a3: 0x0873,\n\t0x7a4: 0x103b, 0x7a5: 0x075f, 0x7a6: 0x0b77, 0x7a7: 0x06d7, 0x7a8: 0x0deb, 0x7a9: 0x0ca3,\n\t0x7aa: 0x110f, 0x7ab: 0x08c7, 0x7ac: 0x09b3, 0x7ad: 0x0ffb, 0x7ae: 0x1263, 0x7af: 0x133b,\n\t0x7b0: 0x0db7, 0x7b1: 0x13f7, 0x7b2: 0x0de3, 0x7b3: 0x0c37, 0x7b4: 0x121b, 0x7b5: 0x0c57,\n\t0x7b6: 0x0fab, 0x7b7: 0x072b, 0x7b8: 0x07a7, 0x7b9: 0x07eb, 0x7ba: 0x0d53, 0x7bb: 0x10fb,\n\t0x7bc: 0x11f3, 0x7bd: 0x1347, 0x7be: 0x145b, 0x7bf: 0x085b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x090f, 0x7c1: 0x0a17, 0x7c2: 0x0b2f, 0x7c3: 0x0cbf, 0x7c4: 0x0e7b, 0x7c5: 0x103f,\n\t0x7c6: 0x1497, 0x7c7: 0x157b, 0x7c8: 0x15cf, 0x7c9: 0x15e7, 0x7ca: 0x0837, 0x7cb: 0x0cf3,\n\t0x7cc: 0x0da3, 0x7cd: 0x13eb, 0x7ce: 0x0afb, 0x7cf: 0x0bd7, 0x7d0: 0x0bf3, 0x7d1: 0x0c83,\n\t0x7d2: 0x0e6b, 0x7d3: 0x0eb7, 0x7d4: 0x0f67, 0x7d5: 0x108b, 0x7d6: 0x112f, 0x7d7: 0x1193,\n\t0x7d8: 0x13db, 0x7d9: 0x126b, 0x7da: 0x1403, 0x7db: 0x147f, 0x7dc: 0x080f, 0x7dd: 0x083b,\n\t0x7de: 0x0923, 0x7df: 0x0ea7, 0x7e0: 0x12f3, 0x7e1: 0x133b, 0x7e2: 0x0b1b, 0x7e3: 0x0b8b,\n\t0x7e4: 0x0c4f, 0x7e5: 0x0daf, 0x7e6: 0x10d7, 0x7e7: 0x0f23, 0x7e8: 0x073b, 0x7e9: 0x097f,\n\t0x7ea: 0x0a63, 0x7eb: 0x0ac7, 0x7ec: 0x0b97, 0x7ed: 0x0f3f, 0x7ee: 0x0f5b, 0x7ef: 0x116b,\n\t0x7f0: 0x118b, 0x7f1: 0x1463, 0x7f2: 0x14e3, 0x7f3: 0x14f3, 0x7f4: 0x152f, 0x7f5: 0x0753,\n\t0x7f6: 0x107f, 0x7f7: 0x144f, 0x7f8: 0x14cb, 0x7f9: 0x0baf, 0x7fa: 0x0717, 0x7fb: 0x0777,\n\t0x7fc: 0x0a67, 0x7fd: 0x0a87, 0x7fe: 0x0caf, 0x7ff: 0x0d73,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0ec3, 0x801: 0x0fcb, 0x802: 0x1277, 0x803: 0x1417, 0x804: 0x1623, 0x805: 0x0ce3,\n\t0x806: 0x14a3, 0x807: 0x0833, 0x808: 0x0d2f, 0x809: 0x0d3b, 0x80a: 0x0e0f, 0x80b: 0x0e47,\n\t0x80c: 0x0f4b, 0x80d: 0x0fa7, 0x80e: 0x1027, 0x80f: 0x110b, 0x810: 0x153b, 0x811: 0x07af,\n\t0x812: 0x0c03, 0x813: 0x14b3, 0x814: 0x0767, 0x815: 0x0aab, 0x816: 0x0e2f, 0x817: 0x13df,\n\t0x818: 0x0b67, 0x819: 0x0bb7, 0x81a: 0x0d43, 0x81b: 0x0f2f, 0x81c: 0x14bb, 0x81d: 0x0817,\n\t0x81e: 0x08ff, 0x81f: 0x0a97, 0x820: 0x0cd3, 0x821: 0x0d1f, 0x822: 0x0d5f, 0x823: 0x0df3,\n\t0x824: 0x0f47, 0x825: 0x0fbb, 0x826: 0x1157, 0x827: 0x12f7, 0x828: 0x1303, 0x829: 0x1457,\n\t0x82a: 0x14d7, 0x82b: 0x0883, 0x82c: 0x0e4b, 0x82d: 0x0903, 0x82e: 0x0ec7, 0x82f: 0x0f6b,\n\t0x830: 0x1287, 0x831: 0x14bf, 0x832: 0x15ab, 0x833: 0x15d3, 0x834: 0x0d37, 0x835: 0x0e27,\n\t0x836: 0x11c3, 0x837: 0x10b7, 0x838: 0x10c3, 0x839: 0x10e7, 0x83a: 0x0f17, 0x83b: 0x0e9f,\n\t0x83c: 0x1363, 0x83d: 0x0733, 0x83e: 0x122b, 0x83f: 0x081b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x080b, 0x841: 0x0b0b, 0x842: 0x0c2b, 0x843: 0x10f3, 0x844: 0x0a53, 0x845: 0x0e03,\n\t0x846: 0x0cef, 0x847: 0x13e7, 0x848: 0x12e7, 0x849: 0x14ab, 0x84a: 0x1323, 0x84b: 0x0b27,\n\t0x84c: 0x0787, 0x84d: 0x095b, 0x850: 0x09af,\n\t0x852: 0x0cdf, 0x855: 0x07f7, 0x856: 0x0f1f, 0x857: 0x0fe3,\n\t0x858: 0x1047, 0x859: 0x1063, 0x85a: 0x1067, 0x85b: 0x107b, 0x85c: 0x14fb, 0x85d: 0x10eb,\n\t0x85e: 0x116f, 0x860: 0x128f, 0x862: 0x1353,\n\t0x865: 0x1407, 0x866: 0x1433,\n\t0x86a: 0x154f, 0x86b: 0x1553, 0x86c: 0x1557, 0x86d: 0x15bb, 0x86e: 0x142b, 0x86f: 0x14c7,\n\t0x870: 0x0757, 0x871: 0x077b, 0x872: 0x078f, 0x873: 0x084b, 0x874: 0x0857, 0x875: 0x0897,\n\t0x876: 0x094b, 0x877: 0x0967, 0x878: 0x096f, 0x879: 0x09ab, 0x87a: 0x09b7, 0x87b: 0x0a93,\n\t0x87c: 0x0a9b, 0x87d: 0x0ba3, 0x87e: 0x0bcb, 0x87f: 0x0bd3,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0beb, 0x881: 0x0c97, 0x882: 0x0cc7, 0x883: 0x0ce7, 0x884: 0x0d57, 0x885: 0x0e1b,\n\t0x886: 0x0e37, 0x887: 0x0e67, 0x888: 0x0ebb, 0x889: 0x0edb, 0x88a: 0x0f4f, 0x88b: 0x102f,\n\t0x88c: 0x104b, 0x88d: 0x1053, 0x88e: 0x104f, 0x88f: 0x1057, 0x890: 0x105b, 0x891: 0x105f,\n\t0x892: 0x1073, 0x893: 0x1077, 0x894: 0x109b, 0x895: 0x10af, 0x896: 0x10cb, 0x897: 0x112f,\n\t0x898: 0x1137, 0x899: 0x113f, 0x89a: 0x1153, 0x89b: 0x117b, 0x89c: 0x11cb, 0x89d: 0x11ff,\n\t0x89e: 0x11ff, 0x89f: 0x1267, 0x8a0: 0x130f, 0x8a1: 0x1327, 0x8a2: 0x135b, 0x8a3: 0x135f,\n\t0x8a4: 0x13a3, 0x8a5: 0x13a7, 0x8a6: 0x13ff, 0x8a7: 0x1407, 0x8a8: 0x14db, 0x8a9: 0x151f,\n\t0x8aa: 0x1537, 0x8ab: 0x0b9b, 0x8ac: 0x171e, 0x8ad: 0x11e3,\n\t0x8b0: 0x06df, 0x8b1: 0x07e3, 0x8b2: 0x07a3, 0x8b3: 0x074b, 0x8b4: 0x078b, 0x8b5: 0x07b7,\n\t0x8b6: 0x0847, 0x8b7: 0x0863, 0x8b8: 0x094b, 0x8b9: 0x0937, 0x8ba: 0x0947, 0x8bb: 0x0963,\n\t0x8bc: 0x09af, 0x8bd: 0x09bf, 0x8be: 0x0a03, 0x8bf: 0x0a0f,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0a2b, 0x8c1: 0x0a3b, 0x8c2: 0x0b23, 0x8c3: 0x0b2b, 0x8c4: 0x0b5b, 0x8c5: 0x0b7b,\n\t0x8c6: 0x0bab, 0x8c7: 0x0bc3, 0x8c8: 0x0bb3, 0x8c9: 0x0bd3, 0x8ca: 0x0bc7, 0x8cb: 0x0beb,\n\t0x8cc: 0x0c07, 0x8cd: 0x0c5f, 0x8ce: 0x0c6b, 0x8cf: 0x0c73, 0x8d0: 0x0c9b, 0x8d1: 0x0cdf,\n\t0x8d2: 0x0d0f, 0x8d3: 0x0d13, 0x8d4: 0x0d27, 0x8d5: 0x0da7, 0x8d6: 0x0db7, 0x8d7: 0x0e0f,\n\t0x8d8: 0x0e5b, 0x8d9: 0x0e53, 0x8da: 0x0e67, 0x8db: 0x0e83, 0x8dc: 0x0ebb, 0x8dd: 0x1013,\n\t0x8de: 0x0edf, 0x8df: 0x0f13, 0x8e0: 0x0f1f, 0x8e1: 0x0f5f, 0x8e2: 0x0f7b, 0x8e3: 0x0f9f,\n\t0x8e4: 0x0fc3, 0x8e5: 0x0fc7, 0x8e6: 0x0fe3, 0x8e7: 0x0fe7, 0x8e8: 0x0ff7, 0x8e9: 0x100b,\n\t0x8ea: 0x1007, 0x8eb: 0x1037, 0x8ec: 0x10b3, 0x8ed: 0x10cb, 0x8ee: 0x10e3, 0x8ef: 0x111b,\n\t0x8f0: 0x112f, 0x8f1: 0x114b, 0x8f2: 0x117b, 0x8f3: 0x122f, 0x8f4: 0x1257, 0x8f5: 0x12cb,\n\t0x8f6: 0x1313, 0x8f7: 0x131f, 0x8f8: 0x1327, 0x8f9: 0x133f, 0x8fa: 0x1353, 0x8fb: 0x1343,\n\t0x8fc: 0x135b, 0x8fd: 0x1357, 0x8fe: 0x134f, 0x8ff: 0x135f,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x136b, 0x901: 0x13a7, 0x902: 0x13e3, 0x903: 0x1413, 0x904: 0x144b, 0x905: 0x146b,\n\t0x906: 0x14b7, 0x907: 0x14db, 0x908: 0x14fb, 0x909: 0x150f, 0x90a: 0x151f, 0x90b: 0x152b,\n\t0x90c: 0x1537, 0x90d: 0x158b, 0x90e: 0x162b, 0x90f: 0x16b5, 0x910: 0x16b0, 0x911: 0x16e2,\n\t0x912: 0x0607, 0x913: 0x062f, 0x914: 0x0633, 0x915: 0x1764, 0x916: 0x1791, 0x917: 0x1809,\n\t0x918: 0x1617, 0x919: 0x1627,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x06fb, 0x941: 0x06f3, 0x942: 0x0703, 0x943: 0x1647, 0x944: 0x0747, 0x945: 0x0757,\n\t0x946: 0x075b, 0x947: 0x0763, 0x948: 0x076b, 0x949: 0x076f, 0x94a: 0x077b, 0x94b: 0x0773,\n\t0x94c: 0x05b3, 0x94d: 0x165b, 0x94e: 0x078f, 0x94f: 0x0793, 0x950: 0x0797, 0x951: 0x07b3,\n\t0x952: 0x164c, 0x953: 0x05b7, 0x954: 0x079f, 0x955: 0x07bf, 0x956: 0x1656, 0x957: 0x07cf,\n\t0x958: 0x07d7, 0x959: 0x0737, 0x95a: 0x07df, 0x95b: 0x07e3, 0x95c: 0x1831, 0x95d: 0x07ff,\n\t0x95e: 0x0807, 0x95f: 0x05bf, 0x960: 0x081f, 0x961: 0x0823, 0x962: 0x082b, 0x963: 0x082f,\n\t0x964: 0x05c3, 0x965: 0x0847, 0x966: 0x084b, 0x967: 0x0857, 0x968: 0x0863, 0x969: 0x0867,\n\t0x96a: 0x086b, 0x96b: 0x0873, 0x96c: 0x0893, 0x96d: 0x0897, 0x96e: 0x089f, 0x96f: 0x08af,\n\t0x970: 0x08b7, 0x971: 0x08bb, 0x972: 0x08bb, 0x973: 0x08bb, 0x974: 0x166a, 0x975: 0x0e93,\n\t0x976: 0x08cf, 0x977: 0x08d7, 0x978: 0x166f, 0x979: 0x08e3, 0x97a: 0x08eb, 0x97b: 0x08f3,\n\t0x97c: 0x091b, 0x97d: 0x0907, 0x97e: 0x0913, 0x97f: 0x0917,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x091f, 0x981: 0x0927, 0x982: 0x092b, 0x983: 0x0933, 0x984: 0x093b, 0x985: 0x093f,\n\t0x986: 0x093f, 0x987: 0x0947, 0x988: 0x094f, 0x989: 0x0953, 0x98a: 0x095f, 0x98b: 0x0983,\n\t0x98c: 0x0967, 0x98d: 0x0987, 0x98e: 0x096b, 0x98f: 0x0973, 0x990: 0x080b, 0x991: 0x09cf,\n\t0x992: 0x0997, 0x993: 0x099b, 0x994: 0x099f, 0x995: 0x0993, 0x996: 0x09a7, 0x997: 0x09a3,\n\t0x998: 0x09bb, 0x999: 0x1674, 0x99a: 0x09d7, 0x99b: 0x09db, 0x99c: 0x09e3, 0x99d: 0x09ef,\n\t0x99e: 0x09f7, 0x99f: 0x0a13, 0x9a0: 0x1679, 0x9a1: 0x167e, 0x9a2: 0x0a1f, 0x9a3: 0x0a23,\n\t0x9a4: 0x0a27, 0x9a5: 0x0a1b, 0x9a6: 0x0a2f, 0x9a7: 0x05c7, 0x9a8: 0x05cb, 0x9a9: 0x0a37,\n\t0x9aa: 0x0a3f, 0x9ab: 0x0a3f, 0x9ac: 0x1683, 0x9ad: 0x0a5b, 0x9ae: 0x0a5f, 0x9af: 0x0a63,\n\t0x9b0: 0x0a6b, 0x9b1: 0x1688, 0x9b2: 0x0a73, 0x9b3: 0x0a77, 0x9b4: 0x0b4f, 0x9b5: 0x0a7f,\n\t0x9b6: 0x05cf, 0x9b7: 0x0a8b, 0x9b8: 0x0a9b, 0x9b9: 0x0aa7, 0x9ba: 0x0aa3, 0x9bb: 0x1692,\n\t0x9bc: 0x0aaf, 0x9bd: 0x1697, 0x9be: 0x0abb, 0x9bf: 0x0ab7,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0abf, 0x9c1: 0x0acf, 0x9c2: 0x0ad3, 0x9c3: 0x05d3, 0x9c4: 0x0ae3, 0x9c5: 0x0aeb,\n\t0x9c6: 0x0aef, 0x9c7: 0x0af3, 0x9c8: 0x05d7, 0x9c9: 0x169c, 0x9ca: 0x05db, 0x9cb: 0x0b0f,\n\t0x9cc: 0x0b13, 0x9cd: 0x0b17, 0x9ce: 0x0b1f, 0x9cf: 0x1863, 0x9d0: 0x0b37, 0x9d1: 0x16a6,\n\t0x9d2: 0x16a6, 0x9d3: 0x11d7, 0x9d4: 0x0b47, 0x9d5: 0x0b47, 0x9d6: 0x05df, 0x9d7: 0x16c9,\n\t0x9d8: 0x179b, 0x9d9: 0x0b57, 0x9da: 0x0b5f, 0x9db: 0x05e3, 0x9dc: 0x0b73, 0x9dd: 0x0b83,\n\t0x9de: 0x0b87, 0x9df: 0x0b8f, 0x9e0: 0x0b9f, 0x9e1: 0x05eb, 0x9e2: 0x05e7, 0x9e3: 0x0ba3,\n\t0x9e4: 0x16ab, 0x9e5: 0x0ba7, 0x9e6: 0x0bbb, 0x9e7: 0x0bbf, 0x9e8: 0x0bc3, 0x9e9: 0x0bbf,\n\t0x9ea: 0x0bcf, 0x9eb: 0x0bd3, 0x9ec: 0x0be3, 0x9ed: 0x0bdb, 0x9ee: 0x0bdf, 0x9ef: 0x0be7,\n\t0x9f0: 0x0beb, 0x9f1: 0x0bef, 0x9f2: 0x0bfb, 0x9f3: 0x0bff, 0x9f4: 0x0c17, 0x9f5: 0x0c1f,\n\t0x9f6: 0x0c2f, 0x9f7: 0x0c43, 0x9f8: 0x16ba, 0x9f9: 0x0c3f, 0x9fa: 0x0c33, 0x9fb: 0x0c4b,\n\t0x9fc: 0x0c53, 0x9fd: 0x0c67, 0x9fe: 0x16bf, 0x9ff: 0x0c6f,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0c63, 0xa01: 0x0c5b, 0xa02: 0x05ef, 0xa03: 0x0c77, 0xa04: 0x0c7f, 0xa05: 0x0c87,\n\t0xa06: 0x0c7b, 0xa07: 0x05f3, 0xa08: 0x0c97, 0xa09: 0x0c9f, 0xa0a: 0x16c4, 0xa0b: 0x0ccb,\n\t0xa0c: 0x0cff, 0xa0d: 0x0cdb, 0xa0e: 0x05ff, 0xa0f: 0x0ce7, 0xa10: 0x05fb, 0xa11: 0x05f7,\n\t0xa12: 0x07c3, 0xa13: 0x07c7, 0xa14: 0x0d03, 0xa15: 0x0ceb, 0xa16: 0x11ab, 0xa17: 0x0663,\n\t0xa18: 0x0d0f, 0xa19: 0x0d13, 0xa1a: 0x0d17, 0xa1b: 0x0d2b, 0xa1c: 0x0d23, 0xa1d: 0x16dd,\n\t0xa1e: 0x0603, 0xa1f: 0x0d3f, 0xa20: 0x0d33, 0xa21: 0x0d4f, 0xa22: 0x0d57, 0xa23: 0x16e7,\n\t0xa24: 0x0d5b, 0xa25: 0x0d47, 0xa26: 0x0d63, 0xa27: 0x0607, 0xa28: 0x0d67, 0xa29: 0x0d6b,\n\t0xa2a: 0x0d6f, 0xa2b: 0x0d7b, 0xa2c: 0x16ec, 0xa2d: 0x0d83, 0xa2e: 0x060b, 0xa2f: 0x0d8f,\n\t0xa30: 0x16f1, 0xa31: 0x0d93, 0xa32: 0x060f, 0xa33: 0x0d9f, 0xa34: 0x0dab, 0xa35: 0x0db7,\n\t0xa36: 0x0dbb, 0xa37: 0x16f6, 0xa38: 0x168d, 0xa39: 0x16fb, 0xa3a: 0x0ddb, 0xa3b: 0x1700,\n\t0xa3c: 0x0de7, 0xa3d: 0x0def, 0xa3e: 0x0ddf, 0xa3f: 0x0dfb,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0e0b, 0xa41: 0x0e1b, 0xa42: 0x0e0f, 0xa43: 0x0e13, 0xa44: 0x0e1f, 0xa45: 0x0e23,\n\t0xa46: 0x1705, 0xa47: 0x0e07, 0xa48: 0x0e3b, 0xa49: 0x0e3f, 0xa4a: 0x0613, 0xa4b: 0x0e53,\n\t0xa4c: 0x0e4f, 0xa4d: 0x170a, 0xa4e: 0x0e33, 0xa4f: 0x0e6f, 0xa50: 0x170f, 0xa51: 0x1714,\n\t0xa52: 0x0e73, 0xa53: 0x0e87, 0xa54: 0x0e83, 0xa55: 0x0e7f, 0xa56: 0x0617, 0xa57: 0x0e8b,\n\t0xa58: 0x0e9b, 0xa59: 0x0e97, 0xa5a: 0x0ea3, 0xa5b: 0x1651, 0xa5c: 0x0eb3, 0xa5d: 0x1719,\n\t0xa5e: 0x0ebf, 0xa5f: 0x1723, 0xa60: 0x0ed3, 0xa61: 0x0edf, 0xa62: 0x0ef3, 0xa63: 0x1728,\n\t0xa64: 0x0f07, 0xa65: 0x0f0b, 0xa66: 0x172d, 0xa67: 0x1732, 0xa68: 0x0f27, 0xa69: 0x0f37,\n\t0xa6a: 0x061b, 0xa6b: 0x0f3b, 0xa6c: 0x061f, 0xa6d: 0x061f, 0xa6e: 0x0f53, 0xa6f: 0x0f57,\n\t0xa70: 0x0f5f, 0xa71: 0x0f63, 0xa72: 0x0f6f, 0xa73: 0x0623, 0xa74: 0x0f87, 0xa75: 0x1737,\n\t0xa76: 0x0fa3, 0xa77: 0x173c, 0xa78: 0x0faf, 0xa79: 0x16a1, 0xa7a: 0x0fbf, 0xa7b: 0x1741,\n\t0xa7c: 0x1746, 0xa7d: 0x174b, 0xa7e: 0x0627, 0xa7f: 0x062b,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0ff7, 0xa81: 0x1755, 0xa82: 0x1750, 0xa83: 0x175a, 0xa84: 0x175f, 0xa85: 0x0fff,\n\t0xa86: 0x1003, 0xa87: 0x1003, 0xa88: 0x100b, 0xa89: 0x0633, 0xa8a: 0x100f, 0xa8b: 0x0637,\n\t0xa8c: 0x063b, 0xa8d: 0x1769, 0xa8e: 0x1023, 0xa8f: 0x102b, 0xa90: 0x1037, 0xa91: 0x063f,\n\t0xa92: 0x176e, 0xa93: 0x105b, 0xa94: 0x1773, 0xa95: 0x1778, 0xa96: 0x107b, 0xa97: 0x1093,\n\t0xa98: 0x0643, 0xa99: 0x109b, 0xa9a: 0x109f, 0xa9b: 0x10a3, 0xa9c: 0x177d, 0xa9d: 0x1782,\n\t0xa9e: 0x1782, 0xa9f: 0x10bb, 0xaa0: 0x0647, 0xaa1: 0x1787, 0xaa2: 0x10cf, 0xaa3: 0x10d3,\n\t0xaa4: 0x064b, 0xaa5: 0x178c, 0xaa6: 0x10ef, 0xaa7: 0x064f, 0xaa8: 0x10ff, 0xaa9: 0x10f7,\n\t0xaaa: 0x1107, 0xaab: 0x1796, 0xaac: 0x111f, 0xaad: 0x0653, 0xaae: 0x112b, 0xaaf: 0x1133,\n\t0xab0: 0x1143, 0xab1: 0x0657, 0xab2: 0x17a0, 0xab3: 0x17a5, 0xab4: 0x065b, 0xab5: 0x17aa,\n\t0xab6: 0x115b, 0xab7: 0x17af, 0xab8: 0x1167, 0xab9: 0x1173, 0xaba: 0x117b, 0xabb: 0x17b4,\n\t0xabc: 0x17b9, 0xabd: 0x118f, 0xabe: 0x17be, 0xabf: 0x1197,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x16ce, 0xac1: 0x065f, 0xac2: 0x11af, 0xac3: 0x11b3, 0xac4: 0x0667, 0xac5: 0x11b7,\n\t0xac6: 0x0a33, 0xac7: 0x17c3, 0xac8: 0x17c8, 0xac9: 0x16d3, 0xaca: 0x16d8, 0xacb: 0x11d7,\n\t0xacc: 0x11db, 0xacd: 0x13f3, 0xace: 0x066b, 0xacf: 0x1207, 0xad0: 0x1203, 0xad1: 0x120b,\n\t0xad2: 0x083f, 0xad3: 0x120f, 0xad4: 0x1213, 0xad5: 0x1217, 0xad6: 0x121f, 0xad7: 0x17cd,\n\t0xad8: 0x121b, 0xad9: 0x1223, 0xada: 0x1237, 0xadb: 0x123b, 0xadc: 0x1227, 0xadd: 0x123f,\n\t0xade: 0x1253, 0xadf: 0x1267, 0xae0: 0x1233, 0xae1: 0x1247, 0xae2: 0x124b, 0xae3: 0x124f,\n\t0xae4: 0x17d2, 0xae5: 0x17dc, 0xae6: 0x17d7, 0xae7: 0x066f, 0xae8: 0x126f, 0xae9: 0x1273,\n\t0xaea: 0x127b, 0xaeb: 0x17f0, 0xaec: 0x127f, 0xaed: 0x17e1, 0xaee: 0x0673, 0xaef: 0x0677,\n\t0xaf0: 0x17e6, 0xaf1: 0x17eb, 0xaf2: 0x067b, 0xaf3: 0x129f, 0xaf4: 0x12a3, 0xaf5: 0x12a7,\n\t0xaf6: 0x12ab, 0xaf7: 0x12b7, 0xaf8: 0x12b3, 0xaf9: 0x12bf, 0xafa: 0x12bb, 0xafb: 0x12cb,\n\t0xafc: 0x12c3, 0xafd: 0x12c7, 0xafe: 0x12cf, 0xaff: 0x067f,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x12d7, 0xb01: 0x12db, 0xb02: 0x0683, 0xb03: 0x12eb, 0xb04: 0x12ef, 0xb05: 0x17f5,\n\t0xb06: 0x12fb, 0xb07: 0x12ff, 0xb08: 0x0687, 0xb09: 0x130b, 0xb0a: 0x05bb, 0xb0b: 0x17fa,\n\t0xb0c: 0x17ff, 0xb0d: 0x068b, 0xb0e: 0x068f, 0xb0f: 0x1337, 0xb10: 0x134f, 0xb11: 0x136b,\n\t0xb12: 0x137b, 0xb13: 0x1804, 0xb14: 0x138f, 0xb15: 0x1393, 0xb16: 0x13ab, 0xb17: 0x13b7,\n\t0xb18: 0x180e, 0xb19: 0x1660, 0xb1a: 0x13c3, 0xb1b: 0x13bf, 0xb1c: 0x13cb, 0xb1d: 0x1665,\n\t0xb1e: 0x13d7, 0xb1f: 0x13e3, 0xb20: 0x1813, 0xb21: 0x1818, 0xb22: 0x1423, 0xb23: 0x142f,\n\t0xb24: 0x1437, 0xb25: 0x181d, 0xb26: 0x143b, 0xb27: 0x1467, 0xb28: 0x1473, 0xb29: 0x1477,\n\t0xb2a: 0x146f, 0xb2b: 0x1483, 0xb2c: 0x1487, 0xb2d: 0x1822, 0xb2e: 0x1493, 0xb2f: 0x0693,\n\t0xb30: 0x149b, 0xb31: 0x1827, 0xb32: 0x0697, 0xb33: 0x14d3, 0xb34: 0x0ac3, 0xb35: 0x14eb,\n\t0xb36: 0x182c, 0xb37: 0x1836, 0xb38: 0x069b, 0xb39: 0x069f, 0xb3a: 0x1513, 0xb3b: 0x183b,\n\t0xb3c: 0x06a3, 0xb3d: 0x1840, 0xb3e: 0x152b, 0xb3f: 0x152b,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1533, 0xb41: 0x1845, 0xb42: 0x154b, 0xb43: 0x06a7, 0xb44: 0x155b, 0xb45: 0x1567,\n\t0xb46: 0x156f, 0xb47: 0x1577, 0xb48: 0x06ab, 0xb49: 0x184a, 0xb4a: 0x158b, 0xb4b: 0x15a7,\n\t0xb4c: 0x15b3, 0xb4d: 0x06af, 0xb4e: 0x06b3, 0xb4f: 0x15b7, 0xb50: 0x184f, 0xb51: 0x06b7,\n\t0xb52: 0x1854, 0xb53: 0x1859, 0xb54: 0x185e, 0xb55: 0x15db, 0xb56: 0x06bb, 0xb57: 0x15ef,\n\t0xb58: 0x15f7, 0xb59: 0x15fb, 0xb5a: 0x1603, 0xb5b: 0x160b, 0xb5c: 0x1613, 0xb5d: 0x1868,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2d, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x2e, 0xcb: 0x2f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x30,\n\t0xd0: 0x09, 0xd1: 0x31, 0xd2: 0x32, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x33,\n\t0xd8: 0x34, 0xd9: 0x0c, 0xdb: 0x35, 0xdc: 0x36, 0xdd: 0x37, 0xdf: 0x38,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x39, 0x121: 0x3a, 0x123: 0x3b, 0x124: 0x3c, 0x125: 0x3d, 0x126: 0x3e, 0x127: 0x3f,\n\t0x128: 0x40, 0x129: 0x41, 0x12a: 0x42, 0x12b: 0x43, 0x12c: 0x3e, 0x12d: 0x44, 0x12e: 0x45, 0x12f: 0x46,\n\t0x131: 0x47, 0x132: 0x48, 0x133: 0x49, 0x134: 0x4a, 0x135: 0x4b, 0x137: 0x4c,\n\t0x138: 0x4d, 0x139: 0x4e, 0x13a: 0x4f, 0x13b: 0x50, 0x13c: 0x51, 0x13d: 0x52, 0x13e: 0x53, 0x13f: 0x54,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x55, 0x142: 0x56, 0x144: 0x57, 0x145: 0x58, 0x146: 0x59, 0x147: 0x5a,\n\t0x14d: 0x5b,\n\t0x15c: 0x5c, 0x15f: 0x5d,\n\t0x162: 0x5e, 0x164: 0x5f,\n\t0x168: 0x60, 0x169: 0x61, 0x16a: 0x62, 0x16c: 0x0d, 0x16d: 0x63, 0x16e: 0x64, 0x16f: 0x65,\n\t0x170: 0x66, 0x173: 0x67, 0x177: 0x68,\n\t0x178: 0x0e, 0x179: 0x0f, 0x17a: 0x10, 0x17b: 0x11, 0x17c: 0x12, 0x17d: 0x13, 0x17e: 0x14, 0x17f: 0x15,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d,\n\t0x188: 0x6e, 0x189: 0x16, 0x18a: 0x17, 0x18b: 0x6f, 0x18c: 0x70,\n\t0x1ab: 0x71,\n\t0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x75, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a, 0x1c4: 0x76, 0x1c5: 0x77,\n\t0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,\n\t0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,\n\t0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,\n\t0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,\n\t0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,\n\t0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,\n\t0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,\n\t0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,\n\t0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,\n\t0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,\n\t0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,\n\t0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,\n\t0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,\n\t0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,\n\t0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,\n\t0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,\n\t0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,\n\t0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,\n\t0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,\n\t0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,\n\t0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1b, 0x325: 0x1c, 0x326: 0x1d, 0x327: 0x1e,\n\t0x328: 0x1f, 0x329: 0x20, 0x32a: 0x21, 0x32b: 0x22, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,\n\t0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,\n\t0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9c,\n\t0x34b: 0x9d, 0x34d: 0x9e,\n\t0x368: 0x9f, 0x36b: 0xa0,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0xa4,\n\t0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3e, 0x38d: 0xa7,\n\t0x391: 0xa8, 0x392: 0xa9, 0x393: 0xaa, 0x396: 0xab, 0x397: 0xac,\n\t0x398: 0x73, 0x39a: 0xad, 0x39c: 0xae,\n\t0x3b0: 0x73,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xaf, 0x3ec: 0xb0,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xb1,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xb2, 0x446: 0xb3, 0x447: 0xb4,\n\t0x449: 0xb5,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xb6,\n\t0x4a3: 0xb7, 0x4a5: 0xb8,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xb9,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x23, 0x521: 0x24, 0x522: 0x25, 0x523: 0x26, 0x524: 0x27, 0x525: 0x28, 0x526: 0x29, 0x527: 0x2a,\n\t0x528: 0x2b,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 142 entries, 284 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc7, 0xce, 0xd6, 0xd9, 0xdb, 0xdd, 0xdf, 0xe4, 0xf5, 0x101, 0x103, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x118, 0x11b, 0x11d, 0x120, 0x123, 0x127, 0x12c, 0x135, 0x137, 0x13a, 0x13c, 0x147, 0x157, 0x15b, 0x169, 0x16c, 0x172, 0x178, 0x183, 0x187, 0x189, 0x18b, 0x18d, 0x18f, 0x191, 0x197, 0x19b, 0x19d, 0x19f, 0x1a7, 0x1ab, 0x1ae, 0x1b0, 0x1b2, 0x1b4, 0x1b7, 0x1b9, 0x1bb, 0x1bd, 0x1bf, 0x1c5, 0x1c8, 0x1ca, 0x1d1, 0x1d7, 0x1dd, 0x1e5, 0x1eb, 0x1f1, 0x1f7, 0x1fb, 0x209, 0x212, 0x215, 0x218, 0x21a, 0x21d, 0x21f, 0x223, 0x228, 0x22a, 0x22c, 0x231, 0x237, 0x239, 0x23b, 0x23d, 0x243, 0x246, 0x249, 0x251, 0x258, 0x25b, 0x25e, 0x260, 0x268, 0x26b, 0x272, 0x275, 0x27b, 0x27d, 0x280, 0x282, 0x284, 0x286, 0x288, 0x295, 0x29f, 0x2a1, 0x2a3, 0x2a9, 0x2ab, 0x2ae}\n\n// nfcSparseValues: 688 entries, 2752 bytes\nvar nfcSparseValues = [688]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4840, lo: 0x8a, hi: 0x8a},\n\t{value: 0x485e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36c7, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36df, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4876, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x36fd, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xd, offset 0x62\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x67\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x69\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0x10, offset 0x7a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x82\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x89\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x8c\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x14, offset 0x93\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x97\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x9d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x9f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0xa8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xac\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xb3\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xb8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xbb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xc5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xc7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xce\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xd6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xd9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xdb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x24, offset 0xdd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xdf\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xe4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xf5\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0x101\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0x103\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x109\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x10b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x10d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x10f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x111\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x115\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x118\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x11d\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x120\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x123\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x127\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x12c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x135\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x137\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x13a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x13c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x147\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x8132, lo: 0x80, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x82},\n\t{value: 0x8132, lo: 0x83, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8132, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8135, lo: 0x8d, hi: 0x8d},\n\t{value: 0x812a, lo: 0x8e, hi: 0x8e},\n\t{value: 0x812d, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8129, lo: 0x90, hi: 0x90},\n\t{value: 0x8132, lo: 0x91, hi: 0xb5},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8134, lo: 0xbc, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x157\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0433, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x15b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3f, offset 0x169\n\t{value: 0x427b, lo: 0x02},\n\t{value: 0x01b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x40, offset 0x16c\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x172\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x178\n\t{value: 0x6408, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x183\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x187\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x189\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x46, offset 0x18b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x47, offset 0x18d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x48, offset 0x18f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x49, offset 0x191\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xaf},\n\t// Block 0x4a, offset 0x197\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4a9f, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4a9f, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4a9f, lo: 0xba, hi: 0xbf},\n\t// Block 0x4b, offset 0x19b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4a9f, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4c, offset 0x19d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4d, offset 0x19f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4e, offset 0x1a7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4f, offset 0x1ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x50, offset 0x1ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x51, offset 0x1b0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x52, offset 0x1b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x53, offset 0x1b4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x54, offset 0x1b7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x55, offset 0x1b9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x56, offset 0x1bb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x57, offset 0x1bd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x58, offset 0x1bf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x59, offset 0x1c5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5a, offset 0x1c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x5b, offset 0x1ca\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1d1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5d, offset 0x1d7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5e, offset 0x1dd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5f, offset 0x1e5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x60, offset 0x1eb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x61, offset 0x1f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x62, offset 0x1f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x63, offset 0x1fb\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4390, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8115, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4402, lo: 0x9f, hi: 0x9f},\n\t{value: 0x43f0, lo: 0xaa, hi: 0xab},\n\t{value: 0x44f4, lo: 0xac, hi: 0xac},\n\t{value: 0x44fc, lo: 0xad, hi: 0xad},\n\t{value: 0x4348, lo: 0xae, hi: 0xb1},\n\t{value: 0x4366, lo: 0xb2, hi: 0xb4},\n\t{value: 0x437e, lo: 0xb5, hi: 0xb6},\n\t{value: 0x438a, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4396, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43ae, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43b4, lo: 0xbe, hi: 0xbe},\n\t// Block 0x64, offset 0x209\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43ba, lo: 0x80, hi: 0x81},\n\t{value: 0x43c6, lo: 0x83, hi: 0x84},\n\t{value: 0x43d8, lo: 0x86, hi: 0x89},\n\t{value: 0x43fc, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4378, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4360, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43a8, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43d2, lo: 0x8e, hi: 0x8e},\n\t// Block 0x65, offset 0x212\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x66, offset 0x215\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x67, offset 0x218\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x68, offset 0x21a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x69, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x6a, offset 0x21f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812d, lo: 0xa7, hi: 0xad},\n\t{value: 0x8132, lo: 0xae, hi: 0xaf},\n\t// Block 0x6b, offset 0x223\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6c, offset 0x228\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6d, offset 0x22a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6e, offset 0x22c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4a9f, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4a9f, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4a9f, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4a9f, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6f, offset 0x231\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4a9f, lo: 0x82, hi: 0x87},\n\t{value: 0x4a9f, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4a9f, lo: 0x92, hi: 0x97},\n\t{value: 0x4a9f, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x70, offset 0x237\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x71, offset 0x239\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x72, offset 0x23b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x73, offset 0x23d\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x243\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x75, offset 0x246\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x76, offset 0x249\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x77, offset 0x251\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x78, offset 0x258\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x79, offset 0x25b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7a, offset 0x25e\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7b, offset 0x260\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7c, offset 0x268\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x7d, offset 0x26b\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7e, offset 0x272\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7f, offset 0x275\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x80, offset 0x27b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x81, offset 0x27d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x82, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x83, offset 0x282\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x84, offset 0x284\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x85, offset 0x286\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x86, offset 0x288\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x87, offset 0x295\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x88, offset 0x29f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x89, offset 0x2a1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8a, offset 0x2a3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x8b, offset 0x2a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x8c, offset 0x2ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x8d, offset 0x2ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 16994 bytes (16.60 KiB). Checksum: c3ed54ee046f3c46.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 90:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 90\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 92 blocks, 5888 entries, 11776 bytes\n// The third block is the zero block.\nvar nfkcValues = [5888]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dee, 0x185: 0x2df4,\n\t0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a,\n\t0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x42a5,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x425a, 0x285: 0x447b,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e,\n\t0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0,\n\t0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8,\n\t0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,\n\t0x2f9: 0x01a6,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b,\n\t0x306: 0xa000, 0x307: 0x3709,\n\t0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3733, 0x342: 0x37b7,\n\t0x350: 0x370f, 0x351: 0x3793,\n\t0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd,\n\t0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf,\n\t0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed,\n\t0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805,\n\t0x378: 0x3787, 0x379: 0x380b,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d61,\n\t0x391: 0x812d,\n\t0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d,\n\t0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132,\n\t0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132,\n\t0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a,\n\t0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f,\n\t0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116,\n\t0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c,\n\t0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x812d,\n\t0x3f0: 0x811e, 0x3f5: 0x1d84,\n\t0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000,\n\t0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000,\n\t0x412: 0x2d4e,\n\t0x434: 0x8102, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d56,\n\t0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0069, 0x441: 0x006b, 0x442: 0x006f, 0x443: 0x0083, 0x444: 0x00f5, 0x445: 0x00f8,\n\t0x446: 0x0413, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107,\n\t0x44c: 0x010a, 0x44d: 0x008f, 0x44f: 0x0097, 0x450: 0x009b, 0x451: 0x00e0,\n\t0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x0417, 0x455: 0x041b, 0x456: 0x00a1, 0x457: 0x00a9,\n\t0x458: 0x00ab, 0x459: 0x0423, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x0427, 0x45d: 0x01be,\n\t0x45e: 0x01c1, 0x45f: 0x01c4, 0x460: 0x01fa, 0x461: 0x01fd, 0x462: 0x0093, 0x463: 0x00a5,\n\t0x464: 0x00ab, 0x465: 0x00ad, 0x466: 0x01be, 0x467: 0x01c1, 0x468: 0x01eb, 0x469: 0x01fa,\n\t0x46a: 0x01fd,\n\t0x478: 0x020c,\n\t// Block 0x12, offset 0x480\n\t0x49b: 0x00fb, 0x49c: 0x0087, 0x49d: 0x0101,\n\t0x49e: 0x00d4, 0x49f: 0x010a, 0x4a0: 0x008d, 0x4a1: 0x010d, 0x4a2: 0x0110, 0x4a3: 0x0116,\n\t0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x042b, 0x4a8: 0x016a, 0x4a9: 0x0128,\n\t0x4aa: 0x042f, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137,\n\t0x4b0: 0x013a, 0x4b1: 0x013d, 0x4b2: 0x0140, 0x4b3: 0x014c, 0x4b4: 0x014f, 0x4b5: 0x00ec,\n\t0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5,\n\t0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x2f97, 0x4c1: 0x32a3, 0x4c2: 0x2fa1, 0x4c3: 0x32ad, 0x4c4: 0x2fa6, 0x4c5: 0x32b2,\n\t0x4c6: 0x2fab, 0x4c7: 0x32b7, 0x4c8: 0x38cc, 0x4c9: 0x3a5b, 0x4ca: 0x2fc4, 0x4cb: 0x32d0,\n\t0x4cc: 0x2fce, 0x4cd: 0x32da, 0x4ce: 0x2fdd, 0x4cf: 0x32e9, 0x4d0: 0x2fd3, 0x4d1: 0x32df,\n\t0x4d2: 0x2fd8, 0x4d3: 0x32e4, 0x4d4: 0x38ef, 0x4d5: 0x3a7e, 0x4d6: 0x38f6, 0x4d7: 0x3a85,\n\t0x4d8: 0x3019, 0x4d9: 0x3325, 0x4da: 0x301e, 0x4db: 0x332a, 0x4dc: 0x3904, 0x4dd: 0x3a93,\n\t0x4de: 0x3023, 0x4df: 0x332f, 0x4e0: 0x3032, 0x4e1: 0x333e, 0x4e2: 0x3050, 0x4e3: 0x335c,\n\t0x4e4: 0x305f, 0x4e5: 0x336b, 0x4e6: 0x3055, 0x4e7: 0x3361, 0x4e8: 0x3064, 0x4e9: 0x3370,\n\t0x4ea: 0x3069, 0x4eb: 0x3375, 0x4ec: 0x30af, 0x4ed: 0x33bb, 0x4ee: 0x390b, 0x4ef: 0x3a9a,\n\t0x4f0: 0x30b9, 0x4f1: 0x33ca, 0x4f2: 0x30c3, 0x4f3: 0x33d4, 0x4f4: 0x30cd, 0x4f5: 0x33de,\n\t0x4f6: 0x46c4, 0x4f7: 0x4755, 0x4f8: 0x3912, 0x4f9: 0x3aa1, 0x4fa: 0x30e6, 0x4fb: 0x33f7,\n\t0x4fc: 0x30e1, 0x4fd: 0x33f2, 0x4fe: 0x30eb, 0x4ff: 0x33fc,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x30f0, 0x501: 0x3401, 0x502: 0x30f5, 0x503: 0x3406, 0x504: 0x3109, 0x505: 0x341a,\n\t0x506: 0x3113, 0x507: 0x3424, 0x508: 0x3122, 0x509: 0x3433, 0x50a: 0x311d, 0x50b: 0x342e,\n\t0x50c: 0x3935, 0x50d: 0x3ac4, 0x50e: 0x3943, 0x50f: 0x3ad2, 0x510: 0x394a, 0x511: 0x3ad9,\n\t0x512: 0x3951, 0x513: 0x3ae0, 0x514: 0x314f, 0x515: 0x3460, 0x516: 0x3154, 0x517: 0x3465,\n\t0x518: 0x315e, 0x519: 0x346f, 0x51a: 0x46f1, 0x51b: 0x4782, 0x51c: 0x3997, 0x51d: 0x3b26,\n\t0x51e: 0x3177, 0x51f: 0x3488, 0x520: 0x3181, 0x521: 0x3492, 0x522: 0x4700, 0x523: 0x4791,\n\t0x524: 0x399e, 0x525: 0x3b2d, 0x526: 0x39a5, 0x527: 0x3b34, 0x528: 0x39ac, 0x529: 0x3b3b,\n\t0x52a: 0x3190, 0x52b: 0x34a1, 0x52c: 0x319a, 0x52d: 0x34b0, 0x52e: 0x31ae, 0x52f: 0x34c4,\n\t0x530: 0x31a9, 0x531: 0x34bf, 0x532: 0x31ea, 0x533: 0x3500, 0x534: 0x31f9, 0x535: 0x350f,\n\t0x536: 0x31f4, 0x537: 0x350a, 0x538: 0x39b3, 0x539: 0x3b42, 0x53a: 0x39ba, 0x53b: 0x3b49,\n\t0x53c: 0x31fe, 0x53d: 0x3514, 0x53e: 0x3203, 0x53f: 0x3519,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3208, 0x541: 0x351e, 0x542: 0x320d, 0x543: 0x3523, 0x544: 0x321c, 0x545: 0x3532,\n\t0x546: 0x3217, 0x547: 0x352d, 0x548: 0x3221, 0x549: 0x353c, 0x54a: 0x3226, 0x54b: 0x3541,\n\t0x54c: 0x322b, 0x54d: 0x3546, 0x54e: 0x3249, 0x54f: 0x3564, 0x550: 0x3262, 0x551: 0x3582,\n\t0x552: 0x3271, 0x553: 0x3591, 0x554: 0x3276, 0x555: 0x3596, 0x556: 0x337a, 0x557: 0x34a6,\n\t0x558: 0x3537, 0x559: 0x3573, 0x55a: 0x1be0, 0x55b: 0x42d7,\n\t0x560: 0x46a1, 0x561: 0x4732, 0x562: 0x2f83, 0x563: 0x328f,\n\t0x564: 0x3878, 0x565: 0x3a07, 0x566: 0x3871, 0x567: 0x3a00, 0x568: 0x3886, 0x569: 0x3a15,\n\t0x56a: 0x387f, 0x56b: 0x3a0e, 0x56c: 0x38be, 0x56d: 0x3a4d, 0x56e: 0x3894, 0x56f: 0x3a23,\n\t0x570: 0x388d, 0x571: 0x3a1c, 0x572: 0x38a2, 0x573: 0x3a31, 0x574: 0x389b, 0x575: 0x3a2a,\n\t0x576: 0x38c5, 0x577: 0x3a54, 0x578: 0x46b5, 0x579: 0x4746, 0x57a: 0x3000, 0x57b: 0x330c,\n\t0x57c: 0x2fec, 0x57d: 0x32f8, 0x57e: 0x38da, 0x57f: 0x3a69,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x38d3, 0x581: 0x3a62, 0x582: 0x38e8, 0x583: 0x3a77, 0x584: 0x38e1, 0x585: 0x3a70,\n\t0x586: 0x38fd, 0x587: 0x3a8c, 0x588: 0x3091, 0x589: 0x339d, 0x58a: 0x30a5, 0x58b: 0x33b1,\n\t0x58c: 0x46e7, 0x58d: 0x4778, 0x58e: 0x3136, 0x58f: 0x3447, 0x590: 0x3920, 0x591: 0x3aaf,\n\t0x592: 0x3919, 0x593: 0x3aa8, 0x594: 0x392e, 0x595: 0x3abd, 0x596: 0x3927, 0x597: 0x3ab6,\n\t0x598: 0x3989, 0x599: 0x3b18, 0x59a: 0x396d, 0x59b: 0x3afc, 0x59c: 0x3966, 0x59d: 0x3af5,\n\t0x59e: 0x397b, 0x59f: 0x3b0a, 0x5a0: 0x3974, 0x5a1: 0x3b03, 0x5a2: 0x3982, 0x5a3: 0x3b11,\n\t0x5a4: 0x31e5, 0x5a5: 0x34fb, 0x5a6: 0x31c7, 0x5a7: 0x34dd, 0x5a8: 0x39e4, 0x5a9: 0x3b73,\n\t0x5aa: 0x39dd, 0x5ab: 0x3b6c, 0x5ac: 0x39f2, 0x5ad: 0x3b81, 0x5ae: 0x39eb, 0x5af: 0x3b7a,\n\t0x5b0: 0x39f9, 0x5b1: 0x3b88, 0x5b2: 0x3230, 0x5b3: 0x354b, 0x5b4: 0x3258, 0x5b5: 0x3578,\n\t0x5b6: 0x3253, 0x5b7: 0x356e, 0x5b8: 0x323f, 0x5b9: 0x355a,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4804, 0x5c1: 0x480a, 0x5c2: 0x491e, 0x5c3: 0x4936, 0x5c4: 0x4926, 0x5c5: 0x493e,\n\t0x5c6: 0x492e, 0x5c7: 0x4946, 0x5c8: 0x47aa, 0x5c9: 0x47b0, 0x5ca: 0x488e, 0x5cb: 0x48a6,\n\t0x5cc: 0x4896, 0x5cd: 0x48ae, 0x5ce: 0x489e, 0x5cf: 0x48b6, 0x5d0: 0x4816, 0x5d1: 0x481c,\n\t0x5d2: 0x3db8, 0x5d3: 0x3dc8, 0x5d4: 0x3dc0, 0x5d5: 0x3dd0,\n\t0x5d8: 0x47b6, 0x5d9: 0x47bc, 0x5da: 0x3ce8, 0x5db: 0x3cf8, 0x5dc: 0x3cf0, 0x5dd: 0x3d00,\n\t0x5e0: 0x482e, 0x5e1: 0x4834, 0x5e2: 0x494e, 0x5e3: 0x4966,\n\t0x5e4: 0x4956, 0x5e5: 0x496e, 0x5e6: 0x495e, 0x5e7: 0x4976, 0x5e8: 0x47c2, 0x5e9: 0x47c8,\n\t0x5ea: 0x48be, 0x5eb: 0x48d6, 0x5ec: 0x48c6, 0x5ed: 0x48de, 0x5ee: 0x48ce, 0x5ef: 0x48e6,\n\t0x5f0: 0x4846, 0x5f1: 0x484c, 0x5f2: 0x3e18, 0x5f3: 0x3e30, 0x5f4: 0x3e20, 0x5f5: 0x3e38,\n\t0x5f6: 0x3e28, 0x5f7: 0x3e40, 0x5f8: 0x47ce, 0x5f9: 0x47d4, 0x5fa: 0x3d18, 0x5fb: 0x3d30,\n\t0x5fc: 0x3d20, 0x5fd: 0x3d38, 0x5fe: 0x3d28, 0x5ff: 0x3d40,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x4852, 0x601: 0x4858, 0x602: 0x3e48, 0x603: 0x3e58, 0x604: 0x3e50, 0x605: 0x3e60,\n\t0x608: 0x47da, 0x609: 0x47e0, 0x60a: 0x3d48, 0x60b: 0x3d58,\n\t0x60c: 0x3d50, 0x60d: 0x3d60, 0x610: 0x4864, 0x611: 0x486a,\n\t0x612: 0x3e80, 0x613: 0x3e98, 0x614: 0x3e88, 0x615: 0x3ea0, 0x616: 0x3e90, 0x617: 0x3ea8,\n\t0x619: 0x47e6, 0x61b: 0x3d68, 0x61d: 0x3d70,\n\t0x61f: 0x3d78, 0x620: 0x487c, 0x621: 0x4882, 0x622: 0x497e, 0x623: 0x4996,\n\t0x624: 0x4986, 0x625: 0x499e, 0x626: 0x498e, 0x627: 0x49a6, 0x628: 0x47ec, 0x629: 0x47f2,\n\t0x62a: 0x48ee, 0x62b: 0x4906, 0x62c: 0x48f6, 0x62d: 0x490e, 0x62e: 0x48fe, 0x62f: 0x4916,\n\t0x630: 0x47f8, 0x631: 0x431e, 0x632: 0x3691, 0x633: 0x4324, 0x634: 0x4822, 0x635: 0x432a,\n\t0x636: 0x36a3, 0x637: 0x4330, 0x638: 0x36c1, 0x639: 0x4336, 0x63a: 0x36d9, 0x63b: 0x433c,\n\t0x63c: 0x4870, 0x63d: 0x4342,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3da0, 0x641: 0x3da8, 0x642: 0x4184, 0x643: 0x41a2, 0x644: 0x418e, 0x645: 0x41ac,\n\t0x646: 0x4198, 0x647: 0x41b6, 0x648: 0x3cd8, 0x649: 0x3ce0, 0x64a: 0x40d0, 0x64b: 0x40ee,\n\t0x64c: 0x40da, 0x64d: 0x40f8, 0x64e: 0x40e4, 0x64f: 0x4102, 0x650: 0x3de8, 0x651: 0x3df0,\n\t0x652: 0x41c0, 0x653: 0x41de, 0x654: 0x41ca, 0x655: 0x41e8, 0x656: 0x41d4, 0x657: 0x41f2,\n\t0x658: 0x3d08, 0x659: 0x3d10, 0x65a: 0x410c, 0x65b: 0x412a, 0x65c: 0x4116, 0x65d: 0x4134,\n\t0x65e: 0x4120, 0x65f: 0x413e, 0x660: 0x3ec0, 0x661: 0x3ec8, 0x662: 0x41fc, 0x663: 0x421a,\n\t0x664: 0x4206, 0x665: 0x4224, 0x666: 0x4210, 0x667: 0x422e, 0x668: 0x3d80, 0x669: 0x3d88,\n\t0x66a: 0x4148, 0x66b: 0x4166, 0x66c: 0x4152, 0x66d: 0x4170, 0x66e: 0x415c, 0x66f: 0x417a,\n\t0x670: 0x3685, 0x671: 0x367f, 0x672: 0x3d90, 0x673: 0x368b, 0x674: 0x3d98,\n\t0x676: 0x4810, 0x677: 0x3db0, 0x678: 0x35f5, 0x679: 0x35ef, 0x67a: 0x35e3, 0x67b: 0x42ee,\n\t0x67c: 0x35fb, 0x67d: 0x4287, 0x67e: 0x01d3, 0x67f: 0x4287,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x42a0, 0x681: 0x4482, 0x682: 0x3dd8, 0x683: 0x369d, 0x684: 0x3de0,\n\t0x686: 0x483a, 0x687: 0x3df8, 0x688: 0x3601, 0x689: 0x42f4, 0x68a: 0x360d, 0x68b: 0x42fa,\n\t0x68c: 0x3619, 0x68d: 0x4489, 0x68e: 0x4490, 0x68f: 0x4497, 0x690: 0x36b5, 0x691: 0x36af,\n\t0x692: 0x3e00, 0x693: 0x44e4, 0x696: 0x36bb, 0x697: 0x3e10,\n\t0x698: 0x3631, 0x699: 0x362b, 0x69a: 0x361f, 0x69b: 0x4300, 0x69d: 0x449e,\n\t0x69e: 0x44a5, 0x69f: 0x44ac, 0x6a0: 0x36eb, 0x6a1: 0x36e5, 0x6a2: 0x3e68, 0x6a3: 0x44ec,\n\t0x6a4: 0x36cd, 0x6a5: 0x36d3, 0x6a6: 0x36f1, 0x6a7: 0x3e78, 0x6a8: 0x3661, 0x6a9: 0x365b,\n\t0x6aa: 0x364f, 0x6ab: 0x430c, 0x6ac: 0x3649, 0x6ad: 0x4474, 0x6ae: 0x447b, 0x6af: 0x0081,\n\t0x6b2: 0x3eb0, 0x6b3: 0x36f7, 0x6b4: 0x3eb8,\n\t0x6b6: 0x4888, 0x6b7: 0x3ed0, 0x6b8: 0x363d, 0x6b9: 0x4306, 0x6ba: 0x366d, 0x6bb: 0x4318,\n\t0x6bc: 0x3679, 0x6bd: 0x425a, 0x6be: 0x428c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x1bd8, 0x6c1: 0x1bdc, 0x6c2: 0x0047, 0x6c3: 0x1c54, 0x6c5: 0x1be8,\n\t0x6c6: 0x1bec, 0x6c7: 0x00e9, 0x6c9: 0x1c58, 0x6ca: 0x008f, 0x6cb: 0x0051,\n\t0x6cc: 0x0051, 0x6cd: 0x0051, 0x6ce: 0x0091, 0x6cf: 0x00da, 0x6d0: 0x0053, 0x6d1: 0x0053,\n\t0x6d2: 0x0059, 0x6d3: 0x0099, 0x6d5: 0x005d, 0x6d6: 0x198d,\n\t0x6d9: 0x0061, 0x6da: 0x0063, 0x6db: 0x0065, 0x6dc: 0x0065, 0x6dd: 0x0065,\n\t0x6e0: 0x199f, 0x6e1: 0x1bc8, 0x6e2: 0x19a8,\n\t0x6e4: 0x0075, 0x6e6: 0x01b8, 0x6e8: 0x0075,\n\t0x6ea: 0x0057, 0x6eb: 0x42d2, 0x6ec: 0x0045, 0x6ed: 0x0047, 0x6ef: 0x008b,\n\t0x6f0: 0x004b, 0x6f1: 0x004d, 0x6f3: 0x005b, 0x6f4: 0x009f, 0x6f5: 0x0215,\n\t0x6f6: 0x0218, 0x6f7: 0x021b, 0x6f8: 0x021e, 0x6f9: 0x0093, 0x6fb: 0x1b98,\n\t0x6fc: 0x01e8, 0x6fd: 0x01c1, 0x6fe: 0x0179, 0x6ff: 0x01a0,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x0463, 0x705: 0x0049,\n\t0x706: 0x0089, 0x707: 0x008b, 0x708: 0x0093, 0x709: 0x0095,\n\t0x710: 0x222e, 0x711: 0x223a,\n\t0x712: 0x22ee, 0x713: 0x2216, 0x714: 0x229a, 0x715: 0x2222, 0x716: 0x22a0, 0x717: 0x22b8,\n\t0x718: 0x22c4, 0x719: 0x2228, 0x71a: 0x22ca, 0x71b: 0x2234, 0x71c: 0x22be, 0x71d: 0x22d0,\n\t0x71e: 0x22d6, 0x71f: 0x1cbc, 0x720: 0x0053, 0x721: 0x195a, 0x722: 0x1ba4, 0x723: 0x1963,\n\t0x724: 0x006d, 0x725: 0x19ab, 0x726: 0x1bd0, 0x727: 0x1d48, 0x728: 0x1966, 0x729: 0x0071,\n\t0x72a: 0x19b7, 0x72b: 0x1bd4, 0x72c: 0x0059, 0x72d: 0x0047, 0x72e: 0x0049, 0x72f: 0x005b,\n\t0x730: 0x0093, 0x731: 0x19e4, 0x732: 0x1c18, 0x733: 0x19ed, 0x734: 0x00ad, 0x735: 0x1a62,\n\t0x736: 0x1c4c, 0x737: 0x1d5c, 0x738: 0x19f0, 0x739: 0x00b1, 0x73a: 0x1a65, 0x73b: 0x1c50,\n\t0x73c: 0x0099, 0x73d: 0x0087, 0x73e: 0x0089, 0x73f: 0x009b,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x3c06, 0x743: 0xa000, 0x744: 0x3c0d, 0x745: 0xa000,\n\t0x747: 0x3c14, 0x748: 0xa000, 0x749: 0x3c1b,\n\t0x74d: 0xa000,\n\t0x760: 0x2f65, 0x761: 0xa000, 0x762: 0x3c29,\n\t0x764: 0xa000, 0x765: 0xa000,\n\t0x76d: 0x3c22, 0x76e: 0x2f60, 0x76f: 0x2f6a,\n\t0x770: 0x3c30, 0x771: 0x3c37, 0x772: 0xa000, 0x773: 0xa000, 0x774: 0x3c3e, 0x775: 0x3c45,\n\t0x776: 0xa000, 0x777: 0xa000, 0x778: 0x3c4c, 0x779: 0x3c53, 0x77a: 0xa000, 0x77b: 0xa000,\n\t0x77c: 0xa000, 0x77d: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3c5a, 0x781: 0x3c61, 0x782: 0xa000, 0x783: 0xa000, 0x784: 0x3c76, 0x785: 0x3c7d,\n\t0x786: 0xa000, 0x787: 0xa000, 0x788: 0x3c84, 0x789: 0x3c8b,\n\t0x791: 0xa000,\n\t0x792: 0xa000,\n\t0x7a2: 0xa000,\n\t0x7a8: 0xa000, 0x7a9: 0xa000,\n\t0x7ab: 0xa000, 0x7ac: 0x3ca0, 0x7ad: 0x3ca7, 0x7ae: 0x3cae, 0x7af: 0x3cb5,\n\t0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0xa000, 0x7b5: 0xa000,\n\t// Block 0x1f, offset 0x7c0\n\t0x7e0: 0x0023, 0x7e1: 0x0025, 0x7e2: 0x0027, 0x7e3: 0x0029,\n\t0x7e4: 0x002b, 0x7e5: 0x002d, 0x7e6: 0x002f, 0x7e7: 0x0031, 0x7e8: 0x0033, 0x7e9: 0x1882,\n\t0x7ea: 0x1885, 0x7eb: 0x1888, 0x7ec: 0x188b, 0x7ed: 0x188e, 0x7ee: 0x1891, 0x7ef: 0x1894,\n\t0x7f0: 0x1897, 0x7f1: 0x189a, 0x7f2: 0x189d, 0x7f3: 0x18a6, 0x7f4: 0x1a68, 0x7f5: 0x1a6c,\n\t0x7f6: 0x1a70, 0x7f7: 0x1a74, 0x7f8: 0x1a78, 0x7f9: 0x1a7c, 0x7fa: 0x1a80, 0x7fb: 0x1a84,\n\t0x7fc: 0x1a88, 0x7fd: 0x1c80, 0x7fe: 0x1c85, 0x7ff: 0x1c8a,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x1c8f, 0x801: 0x1c94, 0x802: 0x1c99, 0x803: 0x1c9e, 0x804: 0x1ca3, 0x805: 0x1ca8,\n\t0x806: 0x1cad, 0x807: 0x1cb2, 0x808: 0x187f, 0x809: 0x18a3, 0x80a: 0x18c7, 0x80b: 0x18eb,\n\t0x80c: 0x190f, 0x80d: 0x1918, 0x80e: 0x191e, 0x80f: 0x1924, 0x810: 0x192a, 0x811: 0x1b60,\n\t0x812: 0x1b64, 0x813: 0x1b68, 0x814: 0x1b6c, 0x815: 0x1b70, 0x816: 0x1b74, 0x817: 0x1b78,\n\t0x818: 0x1b7c, 0x819: 0x1b80, 0x81a: 0x1b84, 0x81b: 0x1b88, 0x81c: 0x1af4, 0x81d: 0x1af8,\n\t0x81e: 0x1afc, 0x81f: 0x1b00, 0x820: 0x1b04, 0x821: 0x1b08, 0x822: 0x1b0c, 0x823: 0x1b10,\n\t0x824: 0x1b14, 0x825: 0x1b18, 0x826: 0x1b1c, 0x827: 0x1b20, 0x828: 0x1b24, 0x829: 0x1b28,\n\t0x82a: 0x1b2c, 0x82b: 0x1b30, 0x82c: 0x1b34, 0x82d: 0x1b38, 0x82e: 0x1b3c, 0x82f: 0x1b40,\n\t0x830: 0x1b44, 0x831: 0x1b48, 0x832: 0x1b4c, 0x833: 0x1b50, 0x834: 0x1b54, 0x835: 0x1b58,\n\t0x836: 0x0043, 0x837: 0x0045, 0x838: 0x0047, 0x839: 0x0049, 0x83a: 0x004b, 0x83b: 0x004d,\n\t0x83c: 0x004f, 0x83d: 0x0051, 0x83e: 0x0053, 0x83f: 0x0055,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x06bf, 0x841: 0x06e3, 0x842: 0x06ef, 0x843: 0x06ff, 0x844: 0x0707, 0x845: 0x0713,\n\t0x846: 0x071b, 0x847: 0x0723, 0x848: 0x072f, 0x849: 0x0783, 0x84a: 0x079b, 0x84b: 0x07ab,\n\t0x84c: 0x07bb, 0x84d: 0x07cb, 0x84e: 0x07db, 0x84f: 0x07fb, 0x850: 0x07ff, 0x851: 0x0803,\n\t0x852: 0x0837, 0x853: 0x085f, 0x854: 0x086f, 0x855: 0x0877, 0x856: 0x087b, 0x857: 0x0887,\n\t0x858: 0x08a3, 0x859: 0x08a7, 0x85a: 0x08bf, 0x85b: 0x08c3, 0x85c: 0x08cb, 0x85d: 0x08db,\n\t0x85e: 0x0977, 0x85f: 0x098b, 0x860: 0x09cb, 0x861: 0x09df, 0x862: 0x09e7, 0x863: 0x09eb,\n\t0x864: 0x09fb, 0x865: 0x0a17, 0x866: 0x0a43, 0x867: 0x0a4f, 0x868: 0x0a6f, 0x869: 0x0a7b,\n\t0x86a: 0x0a7f, 0x86b: 0x0a83, 0x86c: 0x0a9b, 0x86d: 0x0a9f, 0x86e: 0x0acb, 0x86f: 0x0ad7,\n\t0x870: 0x0adf, 0x871: 0x0ae7, 0x872: 0x0af7, 0x873: 0x0aff, 0x874: 0x0b07, 0x875: 0x0b33,\n\t0x876: 0x0b37, 0x877: 0x0b3f, 0x878: 0x0b43, 0x879: 0x0b4b, 0x87a: 0x0b53, 0x87b: 0x0b63,\n\t0x87c: 0x0b7f, 0x87d: 0x0bf7, 0x87e: 0x0c0b, 0x87f: 0x0c0f,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0c8f, 0x881: 0x0c93, 0x882: 0x0ca7, 0x883: 0x0cab, 0x884: 0x0cb3, 0x885: 0x0cbb,\n\t0x886: 0x0cc3, 0x887: 0x0ccf, 0x888: 0x0cf7, 0x889: 0x0d07, 0x88a: 0x0d1b, 0x88b: 0x0d8b,\n\t0x88c: 0x0d97, 0x88d: 0x0da7, 0x88e: 0x0db3, 0x88f: 0x0dbf, 0x890: 0x0dc7, 0x891: 0x0dcb,\n\t0x892: 0x0dcf, 0x893: 0x0dd3, 0x894: 0x0dd7, 0x895: 0x0e8f, 0x896: 0x0ed7, 0x897: 0x0ee3,\n\t0x898: 0x0ee7, 0x899: 0x0eeb, 0x89a: 0x0eef, 0x89b: 0x0ef7, 0x89c: 0x0efb, 0x89d: 0x0f0f,\n\t0x89e: 0x0f2b, 0x89f: 0x0f33, 0x8a0: 0x0f73, 0x8a1: 0x0f77, 0x8a2: 0x0f7f, 0x8a3: 0x0f83,\n\t0x8a4: 0x0f8b, 0x8a5: 0x0f8f, 0x8a6: 0x0fb3, 0x8a7: 0x0fb7, 0x8a8: 0x0fd3, 0x8a9: 0x0fd7,\n\t0x8aa: 0x0fdb, 0x8ab: 0x0fdf, 0x8ac: 0x0ff3, 0x8ad: 0x1017, 0x8ae: 0x101b, 0x8af: 0x101f,\n\t0x8b0: 0x1043, 0x8b1: 0x1083, 0x8b2: 0x1087, 0x8b3: 0x10a7, 0x8b4: 0x10b7, 0x8b5: 0x10bf,\n\t0x8b6: 0x10df, 0x8b7: 0x1103, 0x8b8: 0x1147, 0x8b9: 0x114f, 0x8ba: 0x1163, 0x8bb: 0x116f,\n\t0x8bc: 0x1177, 0x8bd: 0x117f, 0x8be: 0x1183, 0x8bf: 0x1187,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x119f, 0x8c1: 0x11a3, 0x8c2: 0x11bf, 0x8c3: 0x11c7, 0x8c4: 0x11cf, 0x8c5: 0x11d3,\n\t0x8c6: 0x11df, 0x8c7: 0x11e7, 0x8c8: 0x11eb, 0x8c9: 0x11ef, 0x8ca: 0x11f7, 0x8cb: 0x11fb,\n\t0x8cc: 0x129b, 0x8cd: 0x12af, 0x8ce: 0x12e3, 0x8cf: 0x12e7, 0x8d0: 0x12ef, 0x8d1: 0x131b,\n\t0x8d2: 0x1323, 0x8d3: 0x132b, 0x8d4: 0x1333, 0x8d5: 0x136f, 0x8d6: 0x1373, 0x8d7: 0x137b,\n\t0x8d8: 0x137f, 0x8d9: 0x1383, 0x8da: 0x13af, 0x8db: 0x13b3, 0x8dc: 0x13bb, 0x8dd: 0x13cf,\n\t0x8de: 0x13d3, 0x8df: 0x13ef, 0x8e0: 0x13f7, 0x8e1: 0x13fb, 0x8e2: 0x141f, 0x8e3: 0x143f,\n\t0x8e4: 0x1453, 0x8e5: 0x1457, 0x8e6: 0x145f, 0x8e7: 0x148b, 0x8e8: 0x148f, 0x8e9: 0x149f,\n\t0x8ea: 0x14c3, 0x8eb: 0x14cf, 0x8ec: 0x14df, 0x8ed: 0x14f7, 0x8ee: 0x14ff, 0x8ef: 0x1503,\n\t0x8f0: 0x1507, 0x8f1: 0x150b, 0x8f2: 0x1517, 0x8f3: 0x151b, 0x8f4: 0x1523, 0x8f5: 0x153f,\n\t0x8f6: 0x1543, 0x8f7: 0x1547, 0x8f8: 0x155f, 0x8f9: 0x1563, 0x8fa: 0x156b, 0x8fb: 0x157f,\n\t0x8fc: 0x1583, 0x8fd: 0x1587, 0x8fe: 0x158f, 0x8ff: 0x1593,\n\t// Block 0x24, offset 0x900\n\t0x906: 0xa000, 0x90b: 0xa000,\n\t0x90c: 0x3f08, 0x90d: 0xa000, 0x90e: 0x3f10, 0x90f: 0xa000, 0x910: 0x3f18, 0x911: 0xa000,\n\t0x912: 0x3f20, 0x913: 0xa000, 0x914: 0x3f28, 0x915: 0xa000, 0x916: 0x3f30, 0x917: 0xa000,\n\t0x918: 0x3f38, 0x919: 0xa000, 0x91a: 0x3f40, 0x91b: 0xa000, 0x91c: 0x3f48, 0x91d: 0xa000,\n\t0x91e: 0x3f50, 0x91f: 0xa000, 0x920: 0x3f58, 0x921: 0xa000, 0x922: 0x3f60,\n\t0x924: 0xa000, 0x925: 0x3f68, 0x926: 0xa000, 0x927: 0x3f70, 0x928: 0xa000, 0x929: 0x3f78,\n\t0x92f: 0xa000,\n\t0x930: 0x3f80, 0x931: 0x3f88, 0x932: 0xa000, 0x933: 0x3f90, 0x934: 0x3f98, 0x935: 0xa000,\n\t0x936: 0x3fa0, 0x937: 0x3fa8, 0x938: 0xa000, 0x939: 0x3fb0, 0x93a: 0x3fb8, 0x93b: 0xa000,\n\t0x93c: 0x3fc0, 0x93d: 0x3fc8,\n\t// Block 0x25, offset 0x940\n\t0x954: 0x3f00,\n\t0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x42dc, 0x95c: 0x42e2, 0x95d: 0xa000,\n\t0x95e: 0x3fd0, 0x95f: 0x26b4,\n\t0x966: 0xa000,\n\t0x96b: 0xa000, 0x96c: 0x3fe0, 0x96d: 0xa000, 0x96e: 0x3fe8, 0x96f: 0xa000,\n\t0x970: 0x3ff0, 0x971: 0xa000, 0x972: 0x3ff8, 0x973: 0xa000, 0x974: 0x4000, 0x975: 0xa000,\n\t0x976: 0x4008, 0x977: 0xa000, 0x978: 0x4010, 0x979: 0xa000, 0x97a: 0x4018, 0x97b: 0xa000,\n\t0x97c: 0x4020, 0x97d: 0xa000, 0x97e: 0x4028, 0x97f: 0xa000,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x4030, 0x981: 0xa000, 0x982: 0x4038, 0x984: 0xa000, 0x985: 0x4040,\n\t0x986: 0xa000, 0x987: 0x4048, 0x988: 0xa000, 0x989: 0x4050,\n\t0x98f: 0xa000, 0x990: 0x4058, 0x991: 0x4060,\n\t0x992: 0xa000, 0x993: 0x4068, 0x994: 0x4070, 0x995: 0xa000, 0x996: 0x4078, 0x997: 0x4080,\n\t0x998: 0xa000, 0x999: 0x4088, 0x99a: 0x4090, 0x99b: 0xa000, 0x99c: 0x4098, 0x99d: 0x40a0,\n\t0x9af: 0xa000,\n\t0x9b0: 0xa000, 0x9b1: 0xa000, 0x9b2: 0xa000, 0x9b4: 0x3fd8,\n\t0x9b7: 0x40a8, 0x9b8: 0x40b0, 0x9b9: 0x40b8, 0x9ba: 0x40c0,\n\t0x9bd: 0xa000, 0x9be: 0x40c8, 0x9bf: 0x26c9,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0367, 0x9c1: 0x032b, 0x9c2: 0x032f, 0x9c3: 0x0333, 0x9c4: 0x037b, 0x9c5: 0x0337,\n\t0x9c6: 0x033b, 0x9c7: 0x033f, 0x9c8: 0x0343, 0x9c9: 0x0347, 0x9ca: 0x034b, 0x9cb: 0x034f,\n\t0x9cc: 0x0353, 0x9cd: 0x0357, 0x9ce: 0x035b, 0x9cf: 0x49bd, 0x9d0: 0x49c3, 0x9d1: 0x49c9,\n\t0x9d2: 0x49cf, 0x9d3: 0x49d5, 0x9d4: 0x49db, 0x9d5: 0x49e1, 0x9d6: 0x49e7, 0x9d7: 0x49ed,\n\t0x9d8: 0x49f3, 0x9d9: 0x49f9, 0x9da: 0x49ff, 0x9db: 0x4a05, 0x9dc: 0x4a0b, 0x9dd: 0x4a11,\n\t0x9de: 0x4a17, 0x9df: 0x4a1d, 0x9e0: 0x4a23, 0x9e1: 0x4a29, 0x9e2: 0x4a2f, 0x9e3: 0x4a35,\n\t0x9e4: 0x03c3, 0x9e5: 0x035f, 0x9e6: 0x0363, 0x9e7: 0x03e7, 0x9e8: 0x03eb, 0x9e9: 0x03ef,\n\t0x9ea: 0x03f3, 0x9eb: 0x03f7, 0x9ec: 0x03fb, 0x9ed: 0x03ff, 0x9ee: 0x036b, 0x9ef: 0x0403,\n\t0x9f0: 0x0407, 0x9f1: 0x036f, 0x9f2: 0x0373, 0x9f3: 0x0377, 0x9f4: 0x037f, 0x9f5: 0x0383,\n\t0x9f6: 0x0387, 0x9f7: 0x038b, 0x9f8: 0x038f, 0x9f9: 0x0393, 0x9fa: 0x0397, 0x9fb: 0x039b,\n\t0x9fc: 0x039f, 0x9fd: 0x03a3, 0x9fe: 0x03a7, 0x9ff: 0x03ab,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x03af, 0xa01: 0x03b3, 0xa02: 0x040b, 0xa03: 0x040f, 0xa04: 0x03b7, 0xa05: 0x03bb,\n\t0xa06: 0x03bf, 0xa07: 0x03c7, 0xa08: 0x03cb, 0xa09: 0x03cf, 0xa0a: 0x03d3, 0xa0b: 0x03d7,\n\t0xa0c: 0x03db, 0xa0d: 0x03df, 0xa0e: 0x03e3,\n\t0xa12: 0x06bf, 0xa13: 0x071b, 0xa14: 0x06cb, 0xa15: 0x097b, 0xa16: 0x06cf, 0xa17: 0x06e7,\n\t0xa18: 0x06d3, 0xa19: 0x0f93, 0xa1a: 0x0707, 0xa1b: 0x06db, 0xa1c: 0x06c3, 0xa1d: 0x09ff,\n\t0xa1e: 0x098f, 0xa1f: 0x072f,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x2054, 0xa41: 0x205a, 0xa42: 0x2060, 0xa43: 0x2066, 0xa44: 0x206c, 0xa45: 0x2072,\n\t0xa46: 0x2078, 0xa47: 0x207e, 0xa48: 0x2084, 0xa49: 0x208a, 0xa4a: 0x2090, 0xa4b: 0x2096,\n\t0xa4c: 0x209c, 0xa4d: 0x20a2, 0xa4e: 0x2726, 0xa4f: 0x272f, 0xa50: 0x2738, 0xa51: 0x2741,\n\t0xa52: 0x274a, 0xa53: 0x2753, 0xa54: 0x275c, 0xa55: 0x2765, 0xa56: 0x276e, 0xa57: 0x2780,\n\t0xa58: 0x2789, 0xa59: 0x2792, 0xa5a: 0x279b, 0xa5b: 0x27a4, 0xa5c: 0x2777, 0xa5d: 0x2bac,\n\t0xa5e: 0x2aed, 0xa60: 0x20a8, 0xa61: 0x20c0, 0xa62: 0x20b4, 0xa63: 0x2108,\n\t0xa64: 0x20c6, 0xa65: 0x20e4, 0xa66: 0x20ae, 0xa67: 0x20de, 0xa68: 0x20ba, 0xa69: 0x20f0,\n\t0xa6a: 0x2120, 0xa6b: 0x213e, 0xa6c: 0x2138, 0xa6d: 0x212c, 0xa6e: 0x217a, 0xa6f: 0x210e,\n\t0xa70: 0x211a, 0xa71: 0x2132, 0xa72: 0x2126, 0xa73: 0x2150, 0xa74: 0x20fc, 0xa75: 0x2144,\n\t0xa76: 0x216e, 0xa77: 0x2156, 0xa78: 0x20ea, 0xa79: 0x20cc, 0xa7a: 0x2102, 0xa7b: 0x2114,\n\t0xa7c: 0x214a, 0xa7d: 0x20d2, 0xa7e: 0x2174, 0xa7f: 0x20f6,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x215c, 0xa81: 0x20d8, 0xa82: 0x2162, 0xa83: 0x2168, 0xa84: 0x092f, 0xa85: 0x0b03,\n\t0xa86: 0x0ca7, 0xa87: 0x10c7,\n\t0xa90: 0x1bc4, 0xa91: 0x18a9,\n\t0xa92: 0x18ac, 0xa93: 0x18af, 0xa94: 0x18b2, 0xa95: 0x18b5, 0xa96: 0x18b8, 0xa97: 0x18bb,\n\t0xa98: 0x18be, 0xa99: 0x18c1, 0xa9a: 0x18ca, 0xa9b: 0x18cd, 0xa9c: 0x18d0, 0xa9d: 0x18d3,\n\t0xa9e: 0x18d6, 0xa9f: 0x18d9, 0xaa0: 0x0313, 0xaa1: 0x031b, 0xaa2: 0x031f, 0xaa3: 0x0327,\n\t0xaa4: 0x032b, 0xaa5: 0x032f, 0xaa6: 0x0337, 0xaa7: 0x033f, 0xaa8: 0x0343, 0xaa9: 0x034b,\n\t0xaaa: 0x034f, 0xaab: 0x0353, 0xaac: 0x0357, 0xaad: 0x035b, 0xaae: 0x2e18, 0xaaf: 0x2e20,\n\t0xab0: 0x2e28, 0xab1: 0x2e30, 0xab2: 0x2e38, 0xab3: 0x2e40, 0xab4: 0x2e48, 0xab5: 0x2e50,\n\t0xab6: 0x2e60, 0xab7: 0x2e68, 0xab8: 0x2e70, 0xab9: 0x2e78, 0xaba: 0x2e80, 0xabb: 0x2e88,\n\t0xabc: 0x2ed3, 0xabd: 0x2e9b, 0xabe: 0x2e58,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x06bf, 0xac1: 0x071b, 0xac2: 0x06cb, 0xac3: 0x097b, 0xac4: 0x071f, 0xac5: 0x07af,\n\t0xac6: 0x06c7, 0xac7: 0x07ab, 0xac8: 0x070b, 0xac9: 0x0887, 0xaca: 0x0d07, 0xacb: 0x0e8f,\n\t0xacc: 0x0dd7, 0xacd: 0x0d1b, 0xace: 0x145f, 0xacf: 0x098b, 0xad0: 0x0ccf, 0xad1: 0x0d4b,\n\t0xad2: 0x0d0b, 0xad3: 0x104b, 0xad4: 0x08fb, 0xad5: 0x0f03, 0xad6: 0x1387, 0xad7: 0x105f,\n\t0xad8: 0x0843, 0xad9: 0x108f, 0xada: 0x0f9b, 0xadb: 0x0a17, 0xadc: 0x140f, 0xadd: 0x077f,\n\t0xade: 0x08ab, 0xadf: 0x0df7, 0xae0: 0x1527, 0xae1: 0x0743, 0xae2: 0x07d3, 0xae3: 0x0d9b,\n\t0xae4: 0x06cf, 0xae5: 0x06e7, 0xae6: 0x06d3, 0xae7: 0x0adb, 0xae8: 0x08ef, 0xae9: 0x087f,\n\t0xaea: 0x0a57, 0xaeb: 0x0a4b, 0xaec: 0x0feb, 0xaed: 0x073f, 0xaee: 0x139b, 0xaef: 0x089b,\n\t0xaf0: 0x09f3, 0xaf1: 0x18dc, 0xaf2: 0x18df, 0xaf3: 0x18e2, 0xaf4: 0x18e5, 0xaf5: 0x18ee,\n\t0xaf6: 0x18f1, 0xaf7: 0x18f4, 0xaf8: 0x18f7, 0xaf9: 0x18fa, 0xafa: 0x18fd, 0xafb: 0x1900,\n\t0xafc: 0x1903, 0xafd: 0x1906, 0xafe: 0x1909, 0xaff: 0x1912,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x1cc6, 0xb01: 0x1cd5, 0xb02: 0x1ce4, 0xb03: 0x1cf3, 0xb04: 0x1d02, 0xb05: 0x1d11,\n\t0xb06: 0x1d20, 0xb07: 0x1d2f, 0xb08: 0x1d3e, 0xb09: 0x218c, 0xb0a: 0x219e, 0xb0b: 0x21b0,\n\t0xb0c: 0x1954, 0xb0d: 0x1c04, 0xb0e: 0x19d2, 0xb0f: 0x1ba8, 0xb10: 0x04cb, 0xb11: 0x04d3,\n\t0xb12: 0x04db, 0xb13: 0x04e3, 0xb14: 0x04eb, 0xb15: 0x04ef, 0xb16: 0x04f3, 0xb17: 0x04f7,\n\t0xb18: 0x04fb, 0xb19: 0x04ff, 0xb1a: 0x0503, 0xb1b: 0x0507, 0xb1c: 0x050b, 0xb1d: 0x050f,\n\t0xb1e: 0x0513, 0xb1f: 0x0517, 0xb20: 0x051b, 0xb21: 0x0523, 0xb22: 0x0527, 0xb23: 0x052b,\n\t0xb24: 0x052f, 0xb25: 0x0533, 0xb26: 0x0537, 0xb27: 0x053b, 0xb28: 0x053f, 0xb29: 0x0543,\n\t0xb2a: 0x0547, 0xb2b: 0x054b, 0xb2c: 0x054f, 0xb2d: 0x0553, 0xb2e: 0x0557, 0xb2f: 0x055b,\n\t0xb30: 0x055f, 0xb31: 0x0563, 0xb32: 0x0567, 0xb33: 0x056f, 0xb34: 0x0577, 0xb35: 0x057f,\n\t0xb36: 0x0583, 0xb37: 0x0587, 0xb38: 0x058b, 0xb39: 0x058f, 0xb3a: 0x0593, 0xb3b: 0x0597,\n\t0xb3c: 0x059b, 0xb3d: 0x059f, 0xb3e: 0x05a3,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x2b0c, 0xb41: 0x29a8, 0xb42: 0x2b1c, 0xb43: 0x2880, 0xb44: 0x2ee4, 0xb45: 0x288a,\n\t0xb46: 0x2894, 0xb47: 0x2f28, 0xb48: 0x29b5, 0xb49: 0x289e, 0xb4a: 0x28a8, 0xb4b: 0x28b2,\n\t0xb4c: 0x29dc, 0xb4d: 0x29e9, 0xb4e: 0x29c2, 0xb4f: 0x29cf, 0xb50: 0x2ea9, 0xb51: 0x29f6,\n\t0xb52: 0x2a03, 0xb53: 0x2bbe, 0xb54: 0x26bb, 0xb55: 0x2bd1, 0xb56: 0x2be4, 0xb57: 0x2b2c,\n\t0xb58: 0x2a10, 0xb59: 0x2bf7, 0xb5a: 0x2c0a, 0xb5b: 0x2a1d, 0xb5c: 0x28bc, 0xb5d: 0x28c6,\n\t0xb5e: 0x2eb7, 0xb5f: 0x2a2a, 0xb60: 0x2b3c, 0xb61: 0x2ef5, 0xb62: 0x28d0, 0xb63: 0x28da,\n\t0xb64: 0x2a37, 0xb65: 0x28e4, 0xb66: 0x28ee, 0xb67: 0x26d0, 0xb68: 0x26d7, 0xb69: 0x28f8,\n\t0xb6a: 0x2902, 0xb6b: 0x2c1d, 0xb6c: 0x2a44, 0xb6d: 0x2b4c, 0xb6e: 0x2c30, 0xb6f: 0x2a51,\n\t0xb70: 0x2916, 0xb71: 0x290c, 0xb72: 0x2f3c, 0xb73: 0x2a5e, 0xb74: 0x2c43, 0xb75: 0x2920,\n\t0xb76: 0x2b5c, 0xb77: 0x292a, 0xb78: 0x2a78, 0xb79: 0x2934, 0xb7a: 0x2a85, 0xb7b: 0x2f06,\n\t0xb7c: 0x2a6b, 0xb7d: 0x2b6c, 0xb7e: 0x2a92, 0xb7f: 0x26de,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x2f17, 0xb81: 0x293e, 0xb82: 0x2948, 0xb83: 0x2a9f, 0xb84: 0x2952, 0xb85: 0x295c,\n\t0xb86: 0x2966, 0xb87: 0x2b7c, 0xb88: 0x2aac, 0xb89: 0x26e5, 0xb8a: 0x2c56, 0xb8b: 0x2e90,\n\t0xb8c: 0x2b8c, 0xb8d: 0x2ab9, 0xb8e: 0x2ec5, 0xb8f: 0x2970, 0xb90: 0x297a, 0xb91: 0x2ac6,\n\t0xb92: 0x26ec, 0xb93: 0x2ad3, 0xb94: 0x2b9c, 0xb95: 0x26f3, 0xb96: 0x2c69, 0xb97: 0x2984,\n\t0xb98: 0x1cb7, 0xb99: 0x1ccb, 0xb9a: 0x1cda, 0xb9b: 0x1ce9, 0xb9c: 0x1cf8, 0xb9d: 0x1d07,\n\t0xb9e: 0x1d16, 0xb9f: 0x1d25, 0xba0: 0x1d34, 0xba1: 0x1d43, 0xba2: 0x2192, 0xba3: 0x21a4,\n\t0xba4: 0x21b6, 0xba5: 0x21c2, 0xba6: 0x21ce, 0xba7: 0x21da, 0xba8: 0x21e6, 0xba9: 0x21f2,\n\t0xbaa: 0x21fe, 0xbab: 0x220a, 0xbac: 0x2246, 0xbad: 0x2252, 0xbae: 0x225e, 0xbaf: 0x226a,\n\t0xbb0: 0x2276, 0xbb1: 0x1c14, 0xbb2: 0x19c6, 0xbb3: 0x1936, 0xbb4: 0x1be4, 0xbb5: 0x1a47,\n\t0xbb6: 0x1a56, 0xbb7: 0x19cc, 0xbb8: 0x1bfc, 0xbb9: 0x1c00, 0xbba: 0x1960, 0xbbb: 0x2701,\n\t0xbbc: 0x270f, 0xbbd: 0x26fa, 0xbbe: 0x2708, 0xbbf: 0x2ae0,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x1a4a, 0xbc1: 0x1a32, 0xbc2: 0x1c60, 0xbc3: 0x1a1a, 0xbc4: 0x19f3, 0xbc5: 0x1969,\n\t0xbc6: 0x1978, 0xbc7: 0x1948, 0xbc8: 0x1bf0, 0xbc9: 0x1d52, 0xbca: 0x1a4d, 0xbcb: 0x1a35,\n\t0xbcc: 0x1c64, 0xbcd: 0x1c70, 0xbce: 0x1a26, 0xbcf: 0x19fc, 0xbd0: 0x1957, 0xbd1: 0x1c1c,\n\t0xbd2: 0x1bb0, 0xbd3: 0x1b9c, 0xbd4: 0x1bcc, 0xbd5: 0x1c74, 0xbd6: 0x1a29, 0xbd7: 0x19c9,\n\t0xbd8: 0x19ff, 0xbd9: 0x19de, 0xbda: 0x1a41, 0xbdb: 0x1c78, 0xbdc: 0x1a2c, 0xbdd: 0x19c0,\n\t0xbde: 0x1a02, 0xbdf: 0x1c3c, 0xbe0: 0x1bf4, 0xbe1: 0x1a14, 0xbe2: 0x1c24, 0xbe3: 0x1c40,\n\t0xbe4: 0x1bf8, 0xbe5: 0x1a17, 0xbe6: 0x1c28, 0xbe7: 0x22e8, 0xbe8: 0x22fc, 0xbe9: 0x1996,\n\t0xbea: 0x1c20, 0xbeb: 0x1bb4, 0xbec: 0x1ba0, 0xbed: 0x1c48, 0xbee: 0x2716, 0xbef: 0x27ad,\n\t0xbf0: 0x1a59, 0xbf1: 0x1a44, 0xbf2: 0x1c7c, 0xbf3: 0x1a2f, 0xbf4: 0x1a50, 0xbf5: 0x1a38,\n\t0xbf6: 0x1c68, 0xbf7: 0x1a1d, 0xbf8: 0x19f6, 0xbf9: 0x1981, 0xbfa: 0x1a53, 0xbfb: 0x1a3b,\n\t0xbfc: 0x1c6c, 0xbfd: 0x1a20, 0xbfe: 0x19f9, 0xbff: 0x1984,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x1c2c, 0xc01: 0x1bb8, 0xc02: 0x1d4d, 0xc03: 0x1939, 0xc04: 0x19ba, 0xc05: 0x19bd,\n\t0xc06: 0x22f5, 0xc07: 0x1b94, 0xc08: 0x19c3, 0xc09: 0x194b, 0xc0a: 0x19e1, 0xc0b: 0x194e,\n\t0xc0c: 0x19ea, 0xc0d: 0x196c, 0xc0e: 0x196f, 0xc0f: 0x1a05, 0xc10: 0x1a0b, 0xc11: 0x1a0e,\n\t0xc12: 0x1c30, 0xc13: 0x1a11, 0xc14: 0x1a23, 0xc15: 0x1c38, 0xc16: 0x1c44, 0xc17: 0x1990,\n\t0xc18: 0x1d57, 0xc19: 0x1bbc, 0xc1a: 0x1993, 0xc1b: 0x1a5c, 0xc1c: 0x19a5, 0xc1d: 0x19b4,\n\t0xc1e: 0x22e2, 0xc1f: 0x22dc, 0xc20: 0x1cc1, 0xc21: 0x1cd0, 0xc22: 0x1cdf, 0xc23: 0x1cee,\n\t0xc24: 0x1cfd, 0xc25: 0x1d0c, 0xc26: 0x1d1b, 0xc27: 0x1d2a, 0xc28: 0x1d39, 0xc29: 0x2186,\n\t0xc2a: 0x2198, 0xc2b: 0x21aa, 0xc2c: 0x21bc, 0xc2d: 0x21c8, 0xc2e: 0x21d4, 0xc2f: 0x21e0,\n\t0xc30: 0x21ec, 0xc31: 0x21f8, 0xc32: 0x2204, 0xc33: 0x2240, 0xc34: 0x224c, 0xc35: 0x2258,\n\t0xc36: 0x2264, 0xc37: 0x2270, 0xc38: 0x227c, 0xc39: 0x2282, 0xc3a: 0x2288, 0xc3b: 0x228e,\n\t0xc3c: 0x2294, 0xc3d: 0x22a6, 0xc3e: 0x22ac, 0xc3f: 0x1c10,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1377, 0xc41: 0x0cfb, 0xc42: 0x13d3, 0xc43: 0x139f, 0xc44: 0x0e57, 0xc45: 0x06eb,\n\t0xc46: 0x08df, 0xc47: 0x162b, 0xc48: 0x162b, 0xc49: 0x0a0b, 0xc4a: 0x145f, 0xc4b: 0x0943,\n\t0xc4c: 0x0a07, 0xc4d: 0x0bef, 0xc4e: 0x0fcf, 0xc4f: 0x115f, 0xc50: 0x1297, 0xc51: 0x12d3,\n\t0xc52: 0x1307, 0xc53: 0x141b, 0xc54: 0x0d73, 0xc55: 0x0dff, 0xc56: 0x0eab, 0xc57: 0x0f43,\n\t0xc58: 0x125f, 0xc59: 0x1447, 0xc5a: 0x1573, 0xc5b: 0x070f, 0xc5c: 0x08b3, 0xc5d: 0x0d87,\n\t0xc5e: 0x0ecf, 0xc5f: 0x1293, 0xc60: 0x15c3, 0xc61: 0x0ab3, 0xc62: 0x0e77, 0xc63: 0x1283,\n\t0xc64: 0x1317, 0xc65: 0x0c23, 0xc66: 0x11bb, 0xc67: 0x12df, 0xc68: 0x0b1f, 0xc69: 0x0d0f,\n\t0xc6a: 0x0e17, 0xc6b: 0x0f1b, 0xc6c: 0x1427, 0xc6d: 0x074f, 0xc6e: 0x07e7, 0xc6f: 0x0853,\n\t0xc70: 0x0c8b, 0xc71: 0x0d7f, 0xc72: 0x0ecb, 0xc73: 0x0fef, 0xc74: 0x1177, 0xc75: 0x128b,\n\t0xc76: 0x12a3, 0xc77: 0x13c7, 0xc78: 0x14ef, 0xc79: 0x15a3, 0xc7a: 0x15bf, 0xc7b: 0x102b,\n\t0xc7c: 0x106b, 0xc7d: 0x1123, 0xc7e: 0x1243, 0xc7f: 0x147b,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x15cb, 0xc81: 0x134b, 0xc82: 0x09c7, 0xc83: 0x0b3b, 0xc84: 0x10db, 0xc85: 0x119b,\n\t0xc86: 0x0eff, 0xc87: 0x1033, 0xc88: 0x1397, 0xc89: 0x14e7, 0xc8a: 0x09c3, 0xc8b: 0x0a8f,\n\t0xc8c: 0x0d77, 0xc8d: 0x0e2b, 0xc8e: 0x0e5f, 0xc8f: 0x1113, 0xc90: 0x113b, 0xc91: 0x14a7,\n\t0xc92: 0x084f, 0xc93: 0x11a7, 0xc94: 0x07f3, 0xc95: 0x07ef, 0xc96: 0x1097, 0xc97: 0x1127,\n\t0xc98: 0x125b, 0xc99: 0x14af, 0xc9a: 0x1367, 0xc9b: 0x0c27, 0xc9c: 0x0d73, 0xc9d: 0x1357,\n\t0xc9e: 0x06f7, 0xc9f: 0x0a63, 0xca0: 0x0b93, 0xca1: 0x0f2f, 0xca2: 0x0faf, 0xca3: 0x0873,\n\t0xca4: 0x103b, 0xca5: 0x075f, 0xca6: 0x0b77, 0xca7: 0x06d7, 0xca8: 0x0deb, 0xca9: 0x0ca3,\n\t0xcaa: 0x110f, 0xcab: 0x08c7, 0xcac: 0x09b3, 0xcad: 0x0ffb, 0xcae: 0x1263, 0xcaf: 0x133b,\n\t0xcb0: 0x0db7, 0xcb1: 0x13f7, 0xcb2: 0x0de3, 0xcb3: 0x0c37, 0xcb4: 0x121b, 0xcb5: 0x0c57,\n\t0xcb6: 0x0fab, 0xcb7: 0x072b, 0xcb8: 0x07a7, 0xcb9: 0x07eb, 0xcba: 0x0d53, 0xcbb: 0x10fb,\n\t0xcbc: 0x11f3, 0xcbd: 0x1347, 0xcbe: 0x145b, 0xcbf: 0x085b,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x090f, 0xcc1: 0x0a17, 0xcc2: 0x0b2f, 0xcc3: 0x0cbf, 0xcc4: 0x0e7b, 0xcc5: 0x103f,\n\t0xcc6: 0x1497, 0xcc7: 0x157b, 0xcc8: 0x15cf, 0xcc9: 0x15e7, 0xcca: 0x0837, 0xccb: 0x0cf3,\n\t0xccc: 0x0da3, 0xccd: 0x13eb, 0xcce: 0x0afb, 0xccf: 0x0bd7, 0xcd0: 0x0bf3, 0xcd1: 0x0c83,\n\t0xcd2: 0x0e6b, 0xcd3: 0x0eb7, 0xcd4: 0x0f67, 0xcd5: 0x108b, 0xcd6: 0x112f, 0xcd7: 0x1193,\n\t0xcd8: 0x13db, 0xcd9: 0x126b, 0xcda: 0x1403, 0xcdb: 0x147f, 0xcdc: 0x080f, 0xcdd: 0x083b,\n\t0xcde: 0x0923, 0xcdf: 0x0ea7, 0xce0: 0x12f3, 0xce1: 0x133b, 0xce2: 0x0b1b, 0xce3: 0x0b8b,\n\t0xce4: 0x0c4f, 0xce5: 0x0daf, 0xce6: 0x10d7, 0xce7: 0x0f23, 0xce8: 0x073b, 0xce9: 0x097f,\n\t0xcea: 0x0a63, 0xceb: 0x0ac7, 0xcec: 0x0b97, 0xced: 0x0f3f, 0xcee: 0x0f5b, 0xcef: 0x116b,\n\t0xcf0: 0x118b, 0xcf1: 0x1463, 0xcf2: 0x14e3, 0xcf3: 0x14f3, 0xcf4: 0x152f, 0xcf5: 0x0753,\n\t0xcf6: 0x107f, 0xcf7: 0x144f, 0xcf8: 0x14cb, 0xcf9: 0x0baf, 0xcfa: 0x0717, 0xcfb: 0x0777,\n\t0xcfc: 0x0a67, 0xcfd: 0x0a87, 0xcfe: 0x0caf, 0xcff: 0x0d73,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0ec3, 0xd01: 0x0fcb, 0xd02: 0x1277, 0xd03: 0x1417, 0xd04: 0x1623, 0xd05: 0x0ce3,\n\t0xd06: 0x14a3, 0xd07: 0x0833, 0xd08: 0x0d2f, 0xd09: 0x0d3b, 0xd0a: 0x0e0f, 0xd0b: 0x0e47,\n\t0xd0c: 0x0f4b, 0xd0d: 0x0fa7, 0xd0e: 0x1027, 0xd0f: 0x110b, 0xd10: 0x153b, 0xd11: 0x07af,\n\t0xd12: 0x0c03, 0xd13: 0x14b3, 0xd14: 0x0767, 0xd15: 0x0aab, 0xd16: 0x0e2f, 0xd17: 0x13df,\n\t0xd18: 0x0b67, 0xd19: 0x0bb7, 0xd1a: 0x0d43, 0xd1b: 0x0f2f, 0xd1c: 0x14bb, 0xd1d: 0x0817,\n\t0xd1e: 0x08ff, 0xd1f: 0x0a97, 0xd20: 0x0cd3, 0xd21: 0x0d1f, 0xd22: 0x0d5f, 0xd23: 0x0df3,\n\t0xd24: 0x0f47, 0xd25: 0x0fbb, 0xd26: 0x1157, 0xd27: 0x12f7, 0xd28: 0x1303, 0xd29: 0x1457,\n\t0xd2a: 0x14d7, 0xd2b: 0x0883, 0xd2c: 0x0e4b, 0xd2d: 0x0903, 0xd2e: 0x0ec7, 0xd2f: 0x0f6b,\n\t0xd30: 0x1287, 0xd31: 0x14bf, 0xd32: 0x15ab, 0xd33: 0x15d3, 0xd34: 0x0d37, 0xd35: 0x0e27,\n\t0xd36: 0x11c3, 0xd37: 0x10b7, 0xd38: 0x10c3, 0xd39: 0x10e7, 0xd3a: 0x0f17, 0xd3b: 0x0e9f,\n\t0xd3c: 0x1363, 0xd3d: 0x0733, 0xd3e: 0x122b, 0xd3f: 0x081b,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x080b, 0xd41: 0x0b0b, 0xd42: 0x0c2b, 0xd43: 0x10f3, 0xd44: 0x0a53, 0xd45: 0x0e03,\n\t0xd46: 0x0cef, 0xd47: 0x13e7, 0xd48: 0x12e7, 0xd49: 0x14ab, 0xd4a: 0x1323, 0xd4b: 0x0b27,\n\t0xd4c: 0x0787, 0xd4d: 0x095b, 0xd50: 0x09af,\n\t0xd52: 0x0cdf, 0xd55: 0x07f7, 0xd56: 0x0f1f, 0xd57: 0x0fe3,\n\t0xd58: 0x1047, 0xd59: 0x1063, 0xd5a: 0x1067, 0xd5b: 0x107b, 0xd5c: 0x14fb, 0xd5d: 0x10eb,\n\t0xd5e: 0x116f, 0xd60: 0x128f, 0xd62: 0x1353,\n\t0xd65: 0x1407, 0xd66: 0x1433,\n\t0xd6a: 0x154f, 0xd6b: 0x1553, 0xd6c: 0x1557, 0xd6d: 0x15bb, 0xd6e: 0x142b, 0xd6f: 0x14c7,\n\t0xd70: 0x0757, 0xd71: 0x077b, 0xd72: 0x078f, 0xd73: 0x084b, 0xd74: 0x0857, 0xd75: 0x0897,\n\t0xd76: 0x094b, 0xd77: 0x0967, 0xd78: 0x096f, 0xd79: 0x09ab, 0xd7a: 0x09b7, 0xd7b: 0x0a93,\n\t0xd7c: 0x0a9b, 0xd7d: 0x0ba3, 0xd7e: 0x0bcb, 0xd7f: 0x0bd3,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0beb, 0xd81: 0x0c97, 0xd82: 0x0cc7, 0xd83: 0x0ce7, 0xd84: 0x0d57, 0xd85: 0x0e1b,\n\t0xd86: 0x0e37, 0xd87: 0x0e67, 0xd88: 0x0ebb, 0xd89: 0x0edb, 0xd8a: 0x0f4f, 0xd8b: 0x102f,\n\t0xd8c: 0x104b, 0xd8d: 0x1053, 0xd8e: 0x104f, 0xd8f: 0x1057, 0xd90: 0x105b, 0xd91: 0x105f,\n\t0xd92: 0x1073, 0xd93: 0x1077, 0xd94: 0x109b, 0xd95: 0x10af, 0xd96: 0x10cb, 0xd97: 0x112f,\n\t0xd98: 0x1137, 0xd99: 0x113f, 0xd9a: 0x1153, 0xd9b: 0x117b, 0xd9c: 0x11cb, 0xd9d: 0x11ff,\n\t0xd9e: 0x11ff, 0xd9f: 0x1267, 0xda0: 0x130f, 0xda1: 0x1327, 0xda2: 0x135b, 0xda3: 0x135f,\n\t0xda4: 0x13a3, 0xda5: 0x13a7, 0xda6: 0x13ff, 0xda7: 0x1407, 0xda8: 0x14db, 0xda9: 0x151f,\n\t0xdaa: 0x1537, 0xdab: 0x0b9b, 0xdac: 0x171e, 0xdad: 0x11e3,\n\t0xdb0: 0x06df, 0xdb1: 0x07e3, 0xdb2: 0x07a3, 0xdb3: 0x074b, 0xdb4: 0x078b, 0xdb5: 0x07b7,\n\t0xdb6: 0x0847, 0xdb7: 0x0863, 0xdb8: 0x094b, 0xdb9: 0x0937, 0xdba: 0x0947, 0xdbb: 0x0963,\n\t0xdbc: 0x09af, 0xdbd: 0x09bf, 0xdbe: 0x0a03, 0xdbf: 0x0a0f,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0a2b, 0xdc1: 0x0a3b, 0xdc2: 0x0b23, 0xdc3: 0x0b2b, 0xdc4: 0x0b5b, 0xdc5: 0x0b7b,\n\t0xdc6: 0x0bab, 0xdc7: 0x0bc3, 0xdc8: 0x0bb3, 0xdc9: 0x0bd3, 0xdca: 0x0bc7, 0xdcb: 0x0beb,\n\t0xdcc: 0x0c07, 0xdcd: 0x0c5f, 0xdce: 0x0c6b, 0xdcf: 0x0c73, 0xdd0: 0x0c9b, 0xdd1: 0x0cdf,\n\t0xdd2: 0x0d0f, 0xdd3: 0x0d13, 0xdd4: 0x0d27, 0xdd5: 0x0da7, 0xdd6: 0x0db7, 0xdd7: 0x0e0f,\n\t0xdd8: 0x0e5b, 0xdd9: 0x0e53, 0xdda: 0x0e67, 0xddb: 0x0e83, 0xddc: 0x0ebb, 0xddd: 0x1013,\n\t0xdde: 0x0edf, 0xddf: 0x0f13, 0xde0: 0x0f1f, 0xde1: 0x0f5f, 0xde2: 0x0f7b, 0xde3: 0x0f9f,\n\t0xde4: 0x0fc3, 0xde5: 0x0fc7, 0xde6: 0x0fe3, 0xde7: 0x0fe7, 0xde8: 0x0ff7, 0xde9: 0x100b,\n\t0xdea: 0x1007, 0xdeb: 0x1037, 0xdec: 0x10b3, 0xded: 0x10cb, 0xdee: 0x10e3, 0xdef: 0x111b,\n\t0xdf0: 0x112f, 0xdf1: 0x114b, 0xdf2: 0x117b, 0xdf3: 0x122f, 0xdf4: 0x1257, 0xdf5: 0x12cb,\n\t0xdf6: 0x1313, 0xdf7: 0x131f, 0xdf8: 0x1327, 0xdf9: 0x133f, 0xdfa: 0x1353, 0xdfb: 0x1343,\n\t0xdfc: 0x135b, 0xdfd: 0x1357, 0xdfe: 0x134f, 0xdff: 0x135f,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x136b, 0xe01: 0x13a7, 0xe02: 0x13e3, 0xe03: 0x1413, 0xe04: 0x144b, 0xe05: 0x146b,\n\t0xe06: 0x14b7, 0xe07: 0x14db, 0xe08: 0x14fb, 0xe09: 0x150f, 0xe0a: 0x151f, 0xe0b: 0x152b,\n\t0xe0c: 0x1537, 0xe0d: 0x158b, 0xe0e: 0x162b, 0xe0f: 0x16b5, 0xe10: 0x16b0, 0xe11: 0x16e2,\n\t0xe12: 0x0607, 0xe13: 0x062f, 0xe14: 0x0633, 0xe15: 0x1764, 0xe16: 0x1791, 0xe17: 0x1809,\n\t0xe18: 0x1617, 0xe19: 0x1627,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x19d5, 0xe41: 0x19d8, 0xe42: 0x19db, 0xe43: 0x1c08, 0xe44: 0x1c0c, 0xe45: 0x1a5f,\n\t0xe46: 0x1a5f,\n\t0xe53: 0x1d75, 0xe54: 0x1d66, 0xe55: 0x1d6b, 0xe56: 0x1d7a, 0xe57: 0x1d70,\n\t0xe5d: 0x4390,\n\t0xe5e: 0x8115, 0xe5f: 0x4402, 0xe60: 0x022d, 0xe61: 0x0215, 0xe62: 0x021e, 0xe63: 0x0221,\n\t0xe64: 0x0224, 0xe65: 0x0227, 0xe66: 0x022a, 0xe67: 0x0230, 0xe68: 0x0233, 0xe69: 0x0017,\n\t0xe6a: 0x43f0, 0xe6b: 0x43f6, 0xe6c: 0x44f4, 0xe6d: 0x44fc, 0xe6e: 0x4348, 0xe6f: 0x434e,\n\t0xe70: 0x4354, 0xe71: 0x435a, 0xe72: 0x4366, 0xe73: 0x436c, 0xe74: 0x4372, 0xe75: 0x437e,\n\t0xe76: 0x4384, 0xe78: 0x438a, 0xe79: 0x4396, 0xe7a: 0x439c, 0xe7b: 0x43a2,\n\t0xe7c: 0x43ae, 0xe7e: 0x43b4,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x43ba, 0xe81: 0x43c0, 0xe83: 0x43c6, 0xe84: 0x43cc,\n\t0xe86: 0x43d8, 0xe87: 0x43de, 0xe88: 0x43e4, 0xe89: 0x43ea, 0xe8a: 0x43fc, 0xe8b: 0x4378,\n\t0xe8c: 0x4360, 0xe8d: 0x43a8, 0xe8e: 0x43d2, 0xe8f: 0x1d7f, 0xe90: 0x0299, 0xe91: 0x0299,\n\t0xe92: 0x02a2, 0xe93: 0x02a2, 0xe94: 0x02a2, 0xe95: 0x02a2, 0xe96: 0x02a5, 0xe97: 0x02a5,\n\t0xe98: 0x02a5, 0xe99: 0x02a5, 0xe9a: 0x02ab, 0xe9b: 0x02ab, 0xe9c: 0x02ab, 0xe9d: 0x02ab,\n\t0xe9e: 0x029f, 0xe9f: 0x029f, 0xea0: 0x029f, 0xea1: 0x029f, 0xea2: 0x02a8, 0xea3: 0x02a8,\n\t0xea4: 0x02a8, 0xea5: 0x02a8, 0xea6: 0x029c, 0xea7: 0x029c, 0xea8: 0x029c, 0xea9: 0x029c,\n\t0xeaa: 0x02cf, 0xeab: 0x02cf, 0xeac: 0x02cf, 0xead: 0x02cf, 0xeae: 0x02d2, 0xeaf: 0x02d2,\n\t0xeb0: 0x02d2, 0xeb1: 0x02d2, 0xeb2: 0x02b1, 0xeb3: 0x02b1, 0xeb4: 0x02b1, 0xeb5: 0x02b1,\n\t0xeb6: 0x02ae, 0xeb7: 0x02ae, 0xeb8: 0x02ae, 0xeb9: 0x02ae, 0xeba: 0x02b4, 0xebb: 0x02b4,\n\t0xebc: 0x02b4, 0xebd: 0x02b4, 0xebe: 0x02b7, 0xebf: 0x02b7,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x02b7, 0xec1: 0x02b7, 0xec2: 0x02c0, 0xec3: 0x02c0, 0xec4: 0x02bd, 0xec5: 0x02bd,\n\t0xec6: 0x02c3, 0xec7: 0x02c3, 0xec8: 0x02ba, 0xec9: 0x02ba, 0xeca: 0x02c9, 0xecb: 0x02c9,\n\t0xecc: 0x02c6, 0xecd: 0x02c6, 0xece: 0x02d5, 0xecf: 0x02d5, 0xed0: 0x02d5, 0xed1: 0x02d5,\n\t0xed2: 0x02db, 0xed3: 0x02db, 0xed4: 0x02db, 0xed5: 0x02db, 0xed6: 0x02e1, 0xed7: 0x02e1,\n\t0xed8: 0x02e1, 0xed9: 0x02e1, 0xeda: 0x02de, 0xedb: 0x02de, 0xedc: 0x02de, 0xedd: 0x02de,\n\t0xede: 0x02e4, 0xedf: 0x02e4, 0xee0: 0x02e7, 0xee1: 0x02e7, 0xee2: 0x02e7, 0xee3: 0x02e7,\n\t0xee4: 0x446e, 0xee5: 0x446e, 0xee6: 0x02ed, 0xee7: 0x02ed, 0xee8: 0x02ed, 0xee9: 0x02ed,\n\t0xeea: 0x02ea, 0xeeb: 0x02ea, 0xeec: 0x02ea, 0xeed: 0x02ea, 0xeee: 0x0308, 0xeef: 0x0308,\n\t0xef0: 0x4468, 0xef1: 0x4468,\n\t// Block 0x3c, offset 0xf00\n\t0xf13: 0x02d8, 0xf14: 0x02d8, 0xf15: 0x02d8, 0xf16: 0x02d8, 0xf17: 0x02f6,\n\t0xf18: 0x02f6, 0xf19: 0x02f3, 0xf1a: 0x02f3, 0xf1b: 0x02f9, 0xf1c: 0x02f9, 0xf1d: 0x204f,\n\t0xf1e: 0x02ff, 0xf1f: 0x02ff, 0xf20: 0x02f0, 0xf21: 0x02f0, 0xf22: 0x02fc, 0xf23: 0x02fc,\n\t0xf24: 0x0305, 0xf25: 0x0305, 0xf26: 0x0305, 0xf27: 0x0305, 0xf28: 0x028d, 0xf29: 0x028d,\n\t0xf2a: 0x25aa, 0xf2b: 0x25aa, 0xf2c: 0x261a, 0xf2d: 0x261a, 0xf2e: 0x25e9, 0xf2f: 0x25e9,\n\t0xf30: 0x2605, 0xf31: 0x2605, 0xf32: 0x25fe, 0xf33: 0x25fe, 0xf34: 0x260c, 0xf35: 0x260c,\n\t0xf36: 0x2613, 0xf37: 0x2613, 0xf38: 0x2613, 0xf39: 0x25f0, 0xf3a: 0x25f0, 0xf3b: 0x25f0,\n\t0xf3c: 0x0302, 0xf3d: 0x0302, 0xf3e: 0x0302, 0xf3f: 0x0302,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x25b1, 0xf41: 0x25b8, 0xf42: 0x25d4, 0xf43: 0x25f0, 0xf44: 0x25f7, 0xf45: 0x1d89,\n\t0xf46: 0x1d8e, 0xf47: 0x1d93, 0xf48: 0x1da2, 0xf49: 0x1db1, 0xf4a: 0x1db6, 0xf4b: 0x1dbb,\n\t0xf4c: 0x1dc0, 0xf4d: 0x1dc5, 0xf4e: 0x1dd4, 0xf4f: 0x1de3, 0xf50: 0x1de8, 0xf51: 0x1ded,\n\t0xf52: 0x1dfc, 0xf53: 0x1e0b, 0xf54: 0x1e10, 0xf55: 0x1e15, 0xf56: 0x1e1a, 0xf57: 0x1e29,\n\t0xf58: 0x1e2e, 0xf59: 0x1e3d, 0xf5a: 0x1e42, 0xf5b: 0x1e47, 0xf5c: 0x1e56, 0xf5d: 0x1e5b,\n\t0xf5e: 0x1e60, 0xf5f: 0x1e6a, 0xf60: 0x1ea6, 0xf61: 0x1eb5, 0xf62: 0x1ec4, 0xf63: 0x1ec9,\n\t0xf64: 0x1ece, 0xf65: 0x1ed8, 0xf66: 0x1ee7, 0xf67: 0x1eec, 0xf68: 0x1efb, 0xf69: 0x1f00,\n\t0xf6a: 0x1f05, 0xf6b: 0x1f14, 0xf6c: 0x1f19, 0xf6d: 0x1f28, 0xf6e: 0x1f2d, 0xf6f: 0x1f32,\n\t0xf70: 0x1f37, 0xf71: 0x1f3c, 0xf72: 0x1f41, 0xf73: 0x1f46, 0xf74: 0x1f4b, 0xf75: 0x1f50,\n\t0xf76: 0x1f55, 0xf77: 0x1f5a, 0xf78: 0x1f5f, 0xf79: 0x1f64, 0xf7a: 0x1f69, 0xf7b: 0x1f6e,\n\t0xf7c: 0x1f73, 0xf7d: 0x1f78, 0xf7e: 0x1f7d, 0xf7f: 0x1f87,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x1f8c, 0xf81: 0x1f91, 0xf82: 0x1f96, 0xf83: 0x1fa0, 0xf84: 0x1fa5, 0xf85: 0x1faf,\n\t0xf86: 0x1fb4, 0xf87: 0x1fb9, 0xf88: 0x1fbe, 0xf89: 0x1fc3, 0xf8a: 0x1fc8, 0xf8b: 0x1fcd,\n\t0xf8c: 0x1fd2, 0xf8d: 0x1fd7, 0xf8e: 0x1fe6, 0xf8f: 0x1ff5, 0xf90: 0x1ffa, 0xf91: 0x1fff,\n\t0xf92: 0x2004, 0xf93: 0x2009, 0xf94: 0x200e, 0xf95: 0x2018, 0xf96: 0x201d, 0xf97: 0x2022,\n\t0xf98: 0x2031, 0xf99: 0x2040, 0xf9a: 0x2045, 0xf9b: 0x4420, 0xf9c: 0x4426, 0xf9d: 0x445c,\n\t0xf9e: 0x44b3, 0xf9f: 0x44ba, 0xfa0: 0x44c1, 0xfa1: 0x44c8, 0xfa2: 0x44cf, 0xfa3: 0x44d6,\n\t0xfa4: 0x25c6, 0xfa5: 0x25cd, 0xfa6: 0x25d4, 0xfa7: 0x25db, 0xfa8: 0x25f0, 0xfa9: 0x25f7,\n\t0xfaa: 0x1d98, 0xfab: 0x1d9d, 0xfac: 0x1da2, 0xfad: 0x1da7, 0xfae: 0x1db1, 0xfaf: 0x1db6,\n\t0xfb0: 0x1dca, 0xfb1: 0x1dcf, 0xfb2: 0x1dd4, 0xfb3: 0x1dd9, 0xfb4: 0x1de3, 0xfb5: 0x1de8,\n\t0xfb6: 0x1df2, 0xfb7: 0x1df7, 0xfb8: 0x1dfc, 0xfb9: 0x1e01, 0xfba: 0x1e0b, 0xfbb: 0x1e10,\n\t0xfbc: 0x1f3c, 0xfbd: 0x1f41, 0xfbe: 0x1f50, 0xfbf: 0x1f55,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x1f5a, 0xfc1: 0x1f6e, 0xfc2: 0x1f73, 0xfc3: 0x1f78, 0xfc4: 0x1f7d, 0xfc5: 0x1f96,\n\t0xfc6: 0x1fa0, 0xfc7: 0x1fa5, 0xfc8: 0x1faa, 0xfc9: 0x1fbe, 0xfca: 0x1fdc, 0xfcb: 0x1fe1,\n\t0xfcc: 0x1fe6, 0xfcd: 0x1feb, 0xfce: 0x1ff5, 0xfcf: 0x1ffa, 0xfd0: 0x445c, 0xfd1: 0x2027,\n\t0xfd2: 0x202c, 0xfd3: 0x2031, 0xfd4: 0x2036, 0xfd5: 0x2040, 0xfd6: 0x2045, 0xfd7: 0x25b1,\n\t0xfd8: 0x25b8, 0xfd9: 0x25bf, 0xfda: 0x25d4, 0xfdb: 0x25e2, 0xfdc: 0x1d89, 0xfdd: 0x1d8e,\n\t0xfde: 0x1d93, 0xfdf: 0x1da2, 0xfe0: 0x1dac, 0xfe1: 0x1dbb, 0xfe2: 0x1dc0, 0xfe3: 0x1dc5,\n\t0xfe4: 0x1dd4, 0xfe5: 0x1dde, 0xfe6: 0x1dfc, 0xfe7: 0x1e15, 0xfe8: 0x1e1a, 0xfe9: 0x1e29,\n\t0xfea: 0x1e2e, 0xfeb: 0x1e3d, 0xfec: 0x1e47, 0xfed: 0x1e56, 0xfee: 0x1e5b, 0xfef: 0x1e60,\n\t0xff0: 0x1e6a, 0xff1: 0x1ea6, 0xff2: 0x1eab, 0xff3: 0x1eb5, 0xff4: 0x1ec4, 0xff5: 0x1ec9,\n\t0xff6: 0x1ece, 0xff7: 0x1ed8, 0xff8: 0x1ee7, 0xff9: 0x1efb, 0xffa: 0x1f00, 0xffb: 0x1f05,\n\t0xffc: 0x1f14, 0xffd: 0x1f19, 0xffe: 0x1f28, 0xfff: 0x1f2d,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f32, 0x1001: 0x1f37, 0x1002: 0x1f46, 0x1003: 0x1f4b, 0x1004: 0x1f5f, 0x1005: 0x1f64,\n\t0x1006: 0x1f69, 0x1007: 0x1f6e, 0x1008: 0x1f73, 0x1009: 0x1f87, 0x100a: 0x1f8c, 0x100b: 0x1f91,\n\t0x100c: 0x1f96, 0x100d: 0x1f9b, 0x100e: 0x1faf, 0x100f: 0x1fb4, 0x1010: 0x1fb9, 0x1011: 0x1fbe,\n\t0x1012: 0x1fcd, 0x1013: 0x1fd2, 0x1014: 0x1fd7, 0x1015: 0x1fe6, 0x1016: 0x1ff0, 0x1017: 0x1fff,\n\t0x1018: 0x2004, 0x1019: 0x4450, 0x101a: 0x2018, 0x101b: 0x201d, 0x101c: 0x2022, 0x101d: 0x2031,\n\t0x101e: 0x203b, 0x101f: 0x25d4, 0x1020: 0x25e2, 0x1021: 0x1da2, 0x1022: 0x1dac, 0x1023: 0x1dd4,\n\t0x1024: 0x1dde, 0x1025: 0x1dfc, 0x1026: 0x1e06, 0x1027: 0x1e6a, 0x1028: 0x1e6f, 0x1029: 0x1e92,\n\t0x102a: 0x1e97, 0x102b: 0x1f6e, 0x102c: 0x1f73, 0x102d: 0x1f96, 0x102e: 0x1fe6, 0x102f: 0x1ff0,\n\t0x1030: 0x2031, 0x1031: 0x203b, 0x1032: 0x4504, 0x1033: 0x450c, 0x1034: 0x4514, 0x1035: 0x1ef1,\n\t0x1036: 0x1ef6, 0x1037: 0x1f0a, 0x1038: 0x1f0f, 0x1039: 0x1f1e, 0x103a: 0x1f23, 0x103b: 0x1e74,\n\t0x103c: 0x1e79, 0x103d: 0x1e9c, 0x103e: 0x1ea1, 0x103f: 0x1e33,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1e38, 0x1041: 0x1e1f, 0x1042: 0x1e24, 0x1043: 0x1e4c, 0x1044: 0x1e51, 0x1045: 0x1eba,\n\t0x1046: 0x1ebf, 0x1047: 0x1edd, 0x1048: 0x1ee2, 0x1049: 0x1e7e, 0x104a: 0x1e83, 0x104b: 0x1e88,\n\t0x104c: 0x1e92, 0x104d: 0x1e8d, 0x104e: 0x1e65, 0x104f: 0x1eb0, 0x1050: 0x1ed3, 0x1051: 0x1ef1,\n\t0x1052: 0x1ef6, 0x1053: 0x1f0a, 0x1054: 0x1f0f, 0x1055: 0x1f1e, 0x1056: 0x1f23, 0x1057: 0x1e74,\n\t0x1058: 0x1e79, 0x1059: 0x1e9c, 0x105a: 0x1ea1, 0x105b: 0x1e33, 0x105c: 0x1e38, 0x105d: 0x1e1f,\n\t0x105e: 0x1e24, 0x105f: 0x1e4c, 0x1060: 0x1e51, 0x1061: 0x1eba, 0x1062: 0x1ebf, 0x1063: 0x1edd,\n\t0x1064: 0x1ee2, 0x1065: 0x1e7e, 0x1066: 0x1e83, 0x1067: 0x1e88, 0x1068: 0x1e92, 0x1069: 0x1e8d,\n\t0x106a: 0x1e65, 0x106b: 0x1eb0, 0x106c: 0x1ed3, 0x106d: 0x1e7e, 0x106e: 0x1e83, 0x106f: 0x1e88,\n\t0x1070: 0x1e92, 0x1071: 0x1e6f, 0x1072: 0x1e97, 0x1073: 0x1eec, 0x1074: 0x1e56, 0x1075: 0x1e5b,\n\t0x1076: 0x1e60, 0x1077: 0x1e7e, 0x1078: 0x1e83, 0x1079: 0x1e88, 0x107a: 0x1eec, 0x107b: 0x1efb,\n\t0x107c: 0x4408, 0x107d: 0x4408,\n\t// Block 0x42, offset 0x1080\n\t0x1090: 0x2311, 0x1091: 0x2326,\n\t0x1092: 0x2326, 0x1093: 0x232d, 0x1094: 0x2334, 0x1095: 0x2349, 0x1096: 0x2350, 0x1097: 0x2357,\n\t0x1098: 0x237a, 0x1099: 0x237a, 0x109a: 0x239d, 0x109b: 0x2396, 0x109c: 0x23b2, 0x109d: 0x23a4,\n\t0x109e: 0x23ab, 0x109f: 0x23ce, 0x10a0: 0x23ce, 0x10a1: 0x23c7, 0x10a2: 0x23d5, 0x10a3: 0x23d5,\n\t0x10a4: 0x23ff, 0x10a5: 0x23ff, 0x10a6: 0x241b, 0x10a7: 0x23e3, 0x10a8: 0x23e3, 0x10a9: 0x23dc,\n\t0x10aa: 0x23f1, 0x10ab: 0x23f1, 0x10ac: 0x23f8, 0x10ad: 0x23f8, 0x10ae: 0x2422, 0x10af: 0x2430,\n\t0x10b0: 0x2430, 0x10b1: 0x2437, 0x10b2: 0x2437, 0x10b3: 0x243e, 0x10b4: 0x2445, 0x10b5: 0x244c,\n\t0x10b6: 0x2453, 0x10b7: 0x2453, 0x10b8: 0x245a, 0x10b9: 0x2468, 0x10ba: 0x2476, 0x10bb: 0x246f,\n\t0x10bc: 0x247d, 0x10bd: 0x247d, 0x10be: 0x2492, 0x10bf: 0x2499,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x24ca, 0x10c1: 0x24d8, 0x10c2: 0x24d1, 0x10c3: 0x24b5, 0x10c4: 0x24b5, 0x10c5: 0x24df,\n\t0x10c6: 0x24df, 0x10c7: 0x24e6, 0x10c8: 0x24e6, 0x10c9: 0x2510, 0x10ca: 0x2517, 0x10cb: 0x251e,\n\t0x10cc: 0x24f4, 0x10cd: 0x2502, 0x10ce: 0x2525, 0x10cf: 0x252c,\n\t0x10d2: 0x24fb, 0x10d3: 0x2580, 0x10d4: 0x2587, 0x10d5: 0x255d, 0x10d6: 0x2564, 0x10d7: 0x2548,\n\t0x10d8: 0x2548, 0x10d9: 0x254f, 0x10da: 0x2579, 0x10db: 0x2572, 0x10dc: 0x259c, 0x10dd: 0x259c,\n\t0x10de: 0x230a, 0x10df: 0x231f, 0x10e0: 0x2318, 0x10e1: 0x2342, 0x10e2: 0x233b, 0x10e3: 0x2365,\n\t0x10e4: 0x235e, 0x10e5: 0x2388, 0x10e6: 0x236c, 0x10e7: 0x2381, 0x10e8: 0x23b9, 0x10e9: 0x2406,\n\t0x10ea: 0x23ea, 0x10eb: 0x2429, 0x10ec: 0x24c3, 0x10ed: 0x24ed, 0x10ee: 0x2595, 0x10ef: 0x258e,\n\t0x10f0: 0x25a3, 0x10f1: 0x253a, 0x10f2: 0x24a0, 0x10f3: 0x256b, 0x10f4: 0x2492, 0x10f5: 0x24ca,\n\t0x10f6: 0x2461, 0x10f7: 0x24ae, 0x10f8: 0x2541, 0x10f9: 0x2533, 0x10fa: 0x24bc, 0x10fb: 0x24a7,\n\t0x10fc: 0x24bc, 0x10fd: 0x2541, 0x10fe: 0x2373, 0x10ff: 0x238f,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x2509, 0x1101: 0x2484, 0x1102: 0x2303, 0x1103: 0x24a7, 0x1104: 0x244c, 0x1105: 0x241b,\n\t0x1106: 0x23c0, 0x1107: 0x2556,\n\t0x1130: 0x2414, 0x1131: 0x248b, 0x1132: 0x27bf, 0x1133: 0x27b6, 0x1134: 0x27ec, 0x1135: 0x27da,\n\t0x1136: 0x27c8, 0x1137: 0x27e3, 0x1138: 0x27f5, 0x1139: 0x240d, 0x113a: 0x2c7c, 0x113b: 0x2afc,\n\t0x113c: 0x27d1,\n\t// Block 0x45, offset 0x1140\n\t0x1150: 0x0019, 0x1151: 0x0483,\n\t0x1152: 0x0487, 0x1153: 0x0035, 0x1154: 0x0037, 0x1155: 0x0003, 0x1156: 0x003f, 0x1157: 0x04bf,\n\t0x1158: 0x04c3, 0x1159: 0x1b5c,\n\t0x1160: 0x8132, 0x1161: 0x8132, 0x1162: 0x8132, 0x1163: 0x8132,\n\t0x1164: 0x8132, 0x1165: 0x8132, 0x1166: 0x8132, 0x1167: 0x812d, 0x1168: 0x812d, 0x1169: 0x812d,\n\t0x116a: 0x812d, 0x116b: 0x812d, 0x116c: 0x812d, 0x116d: 0x812d, 0x116e: 0x8132, 0x116f: 0x8132,\n\t0x1170: 0x1873, 0x1171: 0x0443, 0x1172: 0x043f, 0x1173: 0x007f, 0x1174: 0x007f, 0x1175: 0x0011,\n\t0x1176: 0x0013, 0x1177: 0x00b7, 0x1178: 0x00bb, 0x1179: 0x04b7, 0x117a: 0x04bb, 0x117b: 0x04ab,\n\t0x117c: 0x04af, 0x117d: 0x0493, 0x117e: 0x0497, 0x117f: 0x048b,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x048f, 0x1181: 0x049b, 0x1182: 0x049f, 0x1183: 0x04a3, 0x1184: 0x04a7,\n\t0x1187: 0x0077, 0x1188: 0x007b, 0x1189: 0x4269, 0x118a: 0x4269, 0x118b: 0x4269,\n\t0x118c: 0x4269, 0x118d: 0x007f, 0x118e: 0x007f, 0x118f: 0x007f, 0x1190: 0x0019, 0x1191: 0x0483,\n\t0x1192: 0x001d, 0x1194: 0x0037, 0x1195: 0x0035, 0x1196: 0x003f, 0x1197: 0x0003,\n\t0x1198: 0x0443, 0x1199: 0x0011, 0x119a: 0x0013, 0x119b: 0x00b7, 0x119c: 0x00bb, 0x119d: 0x04b7,\n\t0x119e: 0x04bb, 0x119f: 0x0007, 0x11a0: 0x000d, 0x11a1: 0x0015, 0x11a2: 0x0017, 0x11a3: 0x001b,\n\t0x11a4: 0x0039, 0x11a5: 0x003d, 0x11a6: 0x003b, 0x11a8: 0x0079, 0x11a9: 0x0009,\n\t0x11aa: 0x000b, 0x11ab: 0x0041,\n\t0x11b0: 0x42aa, 0x11b1: 0x442c, 0x11b2: 0x42af, 0x11b4: 0x42b4,\n\t0x11b6: 0x42b9, 0x11b7: 0x4432, 0x11b8: 0x42be, 0x11b9: 0x4438, 0x11ba: 0x42c3, 0x11bb: 0x443e,\n\t0x11bc: 0x42c8, 0x11bd: 0x4444, 0x11be: 0x42cd, 0x11bf: 0x444a,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x0236, 0x11c1: 0x440e, 0x11c2: 0x440e, 0x11c3: 0x4414, 0x11c4: 0x4414, 0x11c5: 0x4456,\n\t0x11c6: 0x4456, 0x11c7: 0x441a, 0x11c8: 0x441a, 0x11c9: 0x4462, 0x11ca: 0x4462, 0x11cb: 0x4462,\n\t0x11cc: 0x4462, 0x11cd: 0x0239, 0x11ce: 0x0239, 0x11cf: 0x023c, 0x11d0: 0x023c, 0x11d1: 0x023c,\n\t0x11d2: 0x023c, 0x11d3: 0x023f, 0x11d4: 0x023f, 0x11d5: 0x0242, 0x11d6: 0x0242, 0x11d7: 0x0242,\n\t0x11d8: 0x0242, 0x11d9: 0x0245, 0x11da: 0x0245, 0x11db: 0x0245, 0x11dc: 0x0245, 0x11dd: 0x0248,\n\t0x11de: 0x0248, 0x11df: 0x0248, 0x11e0: 0x0248, 0x11e1: 0x024b, 0x11e2: 0x024b, 0x11e3: 0x024b,\n\t0x11e4: 0x024b, 0x11e5: 0x024e, 0x11e6: 0x024e, 0x11e7: 0x024e, 0x11e8: 0x024e, 0x11e9: 0x0251,\n\t0x11ea: 0x0251, 0x11eb: 0x0254, 0x11ec: 0x0254, 0x11ed: 0x0257, 0x11ee: 0x0257, 0x11ef: 0x025a,\n\t0x11f0: 0x025a, 0x11f1: 0x025d, 0x11f2: 0x025d, 0x11f3: 0x025d, 0x11f4: 0x025d, 0x11f5: 0x0260,\n\t0x11f6: 0x0260, 0x11f7: 0x0260, 0x11f8: 0x0260, 0x11f9: 0x0263, 0x11fa: 0x0263, 0x11fb: 0x0263,\n\t0x11fc: 0x0263, 0x11fd: 0x0266, 0x11fe: 0x0266, 0x11ff: 0x0266,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x0266, 0x1201: 0x0269, 0x1202: 0x0269, 0x1203: 0x0269, 0x1204: 0x0269, 0x1205: 0x026c,\n\t0x1206: 0x026c, 0x1207: 0x026c, 0x1208: 0x026c, 0x1209: 0x026f, 0x120a: 0x026f, 0x120b: 0x026f,\n\t0x120c: 0x026f, 0x120d: 0x0272, 0x120e: 0x0272, 0x120f: 0x0272, 0x1210: 0x0272, 0x1211: 0x0275,\n\t0x1212: 0x0275, 0x1213: 0x0275, 0x1214: 0x0275, 0x1215: 0x0278, 0x1216: 0x0278, 0x1217: 0x0278,\n\t0x1218: 0x0278, 0x1219: 0x027b, 0x121a: 0x027b, 0x121b: 0x027b, 0x121c: 0x027b, 0x121d: 0x027e,\n\t0x121e: 0x027e, 0x121f: 0x027e, 0x1220: 0x027e, 0x1221: 0x0281, 0x1222: 0x0281, 0x1223: 0x0281,\n\t0x1224: 0x0281, 0x1225: 0x0284, 0x1226: 0x0284, 0x1227: 0x0284, 0x1228: 0x0284, 0x1229: 0x0287,\n\t0x122a: 0x0287, 0x122b: 0x0287, 0x122c: 0x0287, 0x122d: 0x028a, 0x122e: 0x028a, 0x122f: 0x028d,\n\t0x1230: 0x028d, 0x1231: 0x0290, 0x1232: 0x0290, 0x1233: 0x0290, 0x1234: 0x0290, 0x1235: 0x2e00,\n\t0x1236: 0x2e00, 0x1237: 0x2e08, 0x1238: 0x2e08, 0x1239: 0x2e10, 0x123a: 0x2e10, 0x123b: 0x1f82,\n\t0x123c: 0x1f82,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0081, 0x1241: 0x0083, 0x1242: 0x0085, 0x1243: 0x0087, 0x1244: 0x0089, 0x1245: 0x008b,\n\t0x1246: 0x008d, 0x1247: 0x008f, 0x1248: 0x0091, 0x1249: 0x0093, 0x124a: 0x0095, 0x124b: 0x0097,\n\t0x124c: 0x0099, 0x124d: 0x009b, 0x124e: 0x009d, 0x124f: 0x009f, 0x1250: 0x00a1, 0x1251: 0x00a3,\n\t0x1252: 0x00a5, 0x1253: 0x00a7, 0x1254: 0x00a9, 0x1255: 0x00ab, 0x1256: 0x00ad, 0x1257: 0x00af,\n\t0x1258: 0x00b1, 0x1259: 0x00b3, 0x125a: 0x00b5, 0x125b: 0x00b7, 0x125c: 0x00b9, 0x125d: 0x00bb,\n\t0x125e: 0x00bd, 0x125f: 0x0477, 0x1260: 0x047b, 0x1261: 0x0487, 0x1262: 0x049b, 0x1263: 0x049f,\n\t0x1264: 0x0483, 0x1265: 0x05ab, 0x1266: 0x05a3, 0x1267: 0x04c7, 0x1268: 0x04cf, 0x1269: 0x04d7,\n\t0x126a: 0x04df, 0x126b: 0x04e7, 0x126c: 0x056b, 0x126d: 0x0573, 0x126e: 0x057b, 0x126f: 0x051f,\n\t0x1270: 0x05af, 0x1271: 0x04cb, 0x1272: 0x04d3, 0x1273: 0x04db, 0x1274: 0x04e3, 0x1275: 0x04eb,\n\t0x1276: 0x04ef, 0x1277: 0x04f3, 0x1278: 0x04f7, 0x1279: 0x04fb, 0x127a: 0x04ff, 0x127b: 0x0503,\n\t0x127c: 0x0507, 0x127d: 0x050b, 0x127e: 0x050f, 0x127f: 0x0513,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0517, 0x1281: 0x051b, 0x1282: 0x0523, 0x1283: 0x0527, 0x1284: 0x052b, 0x1285: 0x052f,\n\t0x1286: 0x0533, 0x1287: 0x0537, 0x1288: 0x053b, 0x1289: 0x053f, 0x128a: 0x0543, 0x128b: 0x0547,\n\t0x128c: 0x054b, 0x128d: 0x054f, 0x128e: 0x0553, 0x128f: 0x0557, 0x1290: 0x055b, 0x1291: 0x055f,\n\t0x1292: 0x0563, 0x1293: 0x0567, 0x1294: 0x056f, 0x1295: 0x0577, 0x1296: 0x057f, 0x1297: 0x0583,\n\t0x1298: 0x0587, 0x1299: 0x058b, 0x129a: 0x058f, 0x129b: 0x0593, 0x129c: 0x0597, 0x129d: 0x05a7,\n\t0x129e: 0x4a78, 0x129f: 0x4a7e, 0x12a0: 0x03c3, 0x12a1: 0x0313, 0x12a2: 0x0317, 0x12a3: 0x4a3b,\n\t0x12a4: 0x031b, 0x12a5: 0x4a41, 0x12a6: 0x4a47, 0x12a7: 0x031f, 0x12a8: 0x0323, 0x12a9: 0x0327,\n\t0x12aa: 0x4a4d, 0x12ab: 0x4a53, 0x12ac: 0x4a59, 0x12ad: 0x4a5f, 0x12ae: 0x4a65, 0x12af: 0x4a6b,\n\t0x12b0: 0x0367, 0x12b1: 0x032b, 0x12b2: 0x032f, 0x12b3: 0x0333, 0x12b4: 0x037b, 0x12b5: 0x0337,\n\t0x12b6: 0x033b, 0x12b7: 0x033f, 0x12b8: 0x0343, 0x12b9: 0x0347, 0x12ba: 0x034b, 0x12bb: 0x034f,\n\t0x12bc: 0x0353, 0x12bd: 0x0357, 0x12be: 0x035b,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c2: 0x49bd, 0x12c3: 0x49c3, 0x12c4: 0x49c9, 0x12c5: 0x49cf,\n\t0x12c6: 0x49d5, 0x12c7: 0x49db, 0x12ca: 0x49e1, 0x12cb: 0x49e7,\n\t0x12cc: 0x49ed, 0x12cd: 0x49f3, 0x12ce: 0x49f9, 0x12cf: 0x49ff,\n\t0x12d2: 0x4a05, 0x12d3: 0x4a0b, 0x12d4: 0x4a11, 0x12d5: 0x4a17, 0x12d6: 0x4a1d, 0x12d7: 0x4a23,\n\t0x12da: 0x4a29, 0x12db: 0x4a2f, 0x12dc: 0x4a35,\n\t0x12e0: 0x00bf, 0x12e1: 0x00c2, 0x12e2: 0x00cb, 0x12e3: 0x4264,\n\t0x12e4: 0x00c8, 0x12e5: 0x00c5, 0x12e6: 0x0447, 0x12e8: 0x046b, 0x12e9: 0x044b,\n\t0x12ea: 0x044f, 0x12eb: 0x0453, 0x12ec: 0x0457, 0x12ed: 0x046f, 0x12ee: 0x0473,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0063, 0x1301: 0x0065, 0x1302: 0x0067, 0x1303: 0x0069, 0x1304: 0x006b, 0x1305: 0x006d,\n\t0x1306: 0x006f, 0x1307: 0x0071, 0x1308: 0x0073, 0x1309: 0x0075, 0x130a: 0x0083, 0x130b: 0x0085,\n\t0x130c: 0x0087, 0x130d: 0x0089, 0x130e: 0x008b, 0x130f: 0x008d, 0x1310: 0x008f, 0x1311: 0x0091,\n\t0x1312: 0x0093, 0x1313: 0x0095, 0x1314: 0x0097, 0x1315: 0x0099, 0x1316: 0x009b, 0x1317: 0x009d,\n\t0x1318: 0x009f, 0x1319: 0x00a1, 0x131a: 0x00a3, 0x131b: 0x00a5, 0x131c: 0x00a7, 0x131d: 0x00a9,\n\t0x131e: 0x00ab, 0x131f: 0x00ad, 0x1320: 0x00af, 0x1321: 0x00b1, 0x1322: 0x00b3, 0x1323: 0x00b5,\n\t0x1324: 0x00dd, 0x1325: 0x00f2, 0x1328: 0x0173, 0x1329: 0x0176,\n\t0x132a: 0x0179, 0x132b: 0x017c, 0x132c: 0x017f, 0x132d: 0x0182, 0x132e: 0x0185, 0x132f: 0x0188,\n\t0x1330: 0x018b, 0x1331: 0x018e, 0x1332: 0x0191, 0x1333: 0x0194, 0x1334: 0x0197, 0x1335: 0x019a,\n\t0x1336: 0x019d, 0x1337: 0x01a0, 0x1338: 0x01a3, 0x1339: 0x0188, 0x133a: 0x01a6, 0x133b: 0x01a9,\n\t0x133c: 0x01ac, 0x133d: 0x01af, 0x133e: 0x01b2, 0x133f: 0x01b5,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x01fd, 0x1341: 0x0200, 0x1342: 0x0203, 0x1343: 0x045b, 0x1344: 0x01c7, 0x1345: 0x01d0,\n\t0x1346: 0x01d6, 0x1347: 0x01fa, 0x1348: 0x01eb, 0x1349: 0x01e8, 0x134a: 0x0206, 0x134b: 0x0209,\n\t0x134e: 0x0021, 0x134f: 0x0023, 0x1350: 0x0025, 0x1351: 0x0027,\n\t0x1352: 0x0029, 0x1353: 0x002b, 0x1354: 0x002d, 0x1355: 0x002f, 0x1356: 0x0031, 0x1357: 0x0033,\n\t0x1358: 0x0021, 0x1359: 0x0023, 0x135a: 0x0025, 0x135b: 0x0027, 0x135c: 0x0029, 0x135d: 0x002b,\n\t0x135e: 0x002d, 0x135f: 0x002f, 0x1360: 0x0031, 0x1361: 0x0033, 0x1362: 0x0021, 0x1363: 0x0023,\n\t0x1364: 0x0025, 0x1365: 0x0027, 0x1366: 0x0029, 0x1367: 0x002b, 0x1368: 0x002d, 0x1369: 0x002f,\n\t0x136a: 0x0031, 0x136b: 0x0033, 0x136c: 0x0021, 0x136d: 0x0023, 0x136e: 0x0025, 0x136f: 0x0027,\n\t0x1370: 0x0029, 0x1371: 0x002b, 0x1372: 0x002d, 0x1373: 0x002f, 0x1374: 0x0031, 0x1375: 0x0033,\n\t0x1376: 0x0021, 0x1377: 0x0023, 0x1378: 0x0025, 0x1379: 0x0027, 0x137a: 0x0029, 0x137b: 0x002b,\n\t0x137c: 0x002d, 0x137d: 0x002f, 0x137e: 0x0031, 0x137f: 0x0033,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0239, 0x1381: 0x023c, 0x1382: 0x0248, 0x1383: 0x0251, 0x1385: 0x028a,\n\t0x1386: 0x025a, 0x1387: 0x024b, 0x1388: 0x0269, 0x1389: 0x0290, 0x138a: 0x027b, 0x138b: 0x027e,\n\t0x138c: 0x0281, 0x138d: 0x0284, 0x138e: 0x025d, 0x138f: 0x026f, 0x1390: 0x0275, 0x1391: 0x0263,\n\t0x1392: 0x0278, 0x1393: 0x0257, 0x1394: 0x0260, 0x1395: 0x0242, 0x1396: 0x0245, 0x1397: 0x024e,\n\t0x1398: 0x0254, 0x1399: 0x0266, 0x139a: 0x026c, 0x139b: 0x0272, 0x139c: 0x0293, 0x139d: 0x02e4,\n\t0x139e: 0x02cc, 0x139f: 0x0296, 0x13a1: 0x023c, 0x13a2: 0x0248,\n\t0x13a4: 0x0287, 0x13a7: 0x024b, 0x13a9: 0x0290,\n\t0x13aa: 0x027b, 0x13ab: 0x027e, 0x13ac: 0x0281, 0x13ad: 0x0284, 0x13ae: 0x025d, 0x13af: 0x026f,\n\t0x13b0: 0x0275, 0x13b1: 0x0263, 0x13b2: 0x0278, 0x13b4: 0x0260, 0x13b5: 0x0242,\n\t0x13b6: 0x0245, 0x13b7: 0x024e, 0x13b9: 0x0266, 0x13bb: 0x0272,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c2: 0x0248,\n\t0x13c7: 0x024b, 0x13c9: 0x0290, 0x13cb: 0x027e,\n\t0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d1: 0x0263,\n\t0x13d2: 0x0278, 0x13d4: 0x0260, 0x13d7: 0x024e,\n\t0x13d9: 0x0266, 0x13db: 0x0272, 0x13dd: 0x02e4,\n\t0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248,\n\t0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e8: 0x0269, 0x13e9: 0x0290,\n\t0x13ea: 0x027b, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f,\n\t0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242,\n\t0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fa: 0x026c, 0x13fb: 0x0272,\n\t0x13fc: 0x0293, 0x13fe: 0x02cc,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1404: 0x0287, 0x1405: 0x028a,\n\t0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140b: 0x027e,\n\t0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263,\n\t0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e,\n\t0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272,\n\t0x1421: 0x023c, 0x1422: 0x0248, 0x1423: 0x0251,\n\t0x1425: 0x028a, 0x1426: 0x025a, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290,\n\t0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,\n\t0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1433: 0x0257, 0x1434: 0x0260, 0x1435: 0x0242,\n\t0x1436: 0x0245, 0x1437: 0x024e, 0x1438: 0x0254, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x1879, 0x1441: 0x1876, 0x1442: 0x187c, 0x1443: 0x18a0, 0x1444: 0x18c4, 0x1445: 0x18e8,\n\t0x1446: 0x190c, 0x1447: 0x1915, 0x1448: 0x191b, 0x1449: 0x1921, 0x144a: 0x1927,\n\t0x1450: 0x1a8c, 0x1451: 0x1a90,\n\t0x1452: 0x1a94, 0x1453: 0x1a98, 0x1454: 0x1a9c, 0x1455: 0x1aa0, 0x1456: 0x1aa4, 0x1457: 0x1aa8,\n\t0x1458: 0x1aac, 0x1459: 0x1ab0, 0x145a: 0x1ab4, 0x145b: 0x1ab8, 0x145c: 0x1abc, 0x145d: 0x1ac0,\n\t0x145e: 0x1ac4, 0x145f: 0x1ac8, 0x1460: 0x1acc, 0x1461: 0x1ad0, 0x1462: 0x1ad4, 0x1463: 0x1ad8,\n\t0x1464: 0x1adc, 0x1465: 0x1ae0, 0x1466: 0x1ae4, 0x1467: 0x1ae8, 0x1468: 0x1aec, 0x1469: 0x1af0,\n\t0x146a: 0x271e, 0x146b: 0x0047, 0x146c: 0x0065, 0x146d: 0x193c, 0x146e: 0x19b1,\n\t0x1470: 0x0043, 0x1471: 0x0045, 0x1472: 0x0047, 0x1473: 0x0049, 0x1474: 0x004b, 0x1475: 0x004d,\n\t0x1476: 0x004f, 0x1477: 0x0051, 0x1478: 0x0053, 0x1479: 0x0055, 0x147a: 0x0057, 0x147b: 0x0059,\n\t0x147c: 0x005b, 0x147d: 0x005d, 0x147e: 0x005f, 0x147f: 0x0061,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x26ad, 0x1481: 0x26c2, 0x1482: 0x0503,\n\t0x1490: 0x0c0f, 0x1491: 0x0a47,\n\t0x1492: 0x08d3, 0x1493: 0x45c4, 0x1494: 0x071b, 0x1495: 0x09ef, 0x1496: 0x132f, 0x1497: 0x09ff,\n\t0x1498: 0x0727, 0x1499: 0x0cd7, 0x149a: 0x0eaf, 0x149b: 0x0caf, 0x149c: 0x0827, 0x149d: 0x0b6b,\n\t0x149e: 0x07bf, 0x149f: 0x0cb7, 0x14a0: 0x0813, 0x14a1: 0x1117, 0x14a2: 0x0f83, 0x14a3: 0x138b,\n\t0x14a4: 0x09d3, 0x14a5: 0x090b, 0x14a6: 0x0e63, 0x14a7: 0x0c1b, 0x14a8: 0x0c47, 0x14a9: 0x06bf,\n\t0x14aa: 0x06cb, 0x14ab: 0x140b, 0x14ac: 0x0adb, 0x14ad: 0x06e7, 0x14ae: 0x08ef, 0x14af: 0x0c3b,\n\t0x14b0: 0x13b3, 0x14b1: 0x0c13, 0x14b2: 0x106f, 0x14b3: 0x10ab, 0x14b4: 0x08f7, 0x14b5: 0x0e43,\n\t0x14b6: 0x0d0b, 0x14b7: 0x0d07, 0x14b8: 0x0f97, 0x14b9: 0x082b, 0x14ba: 0x0957, 0x14bb: 0x1443,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x06fb, 0x14c1: 0x06f3, 0x14c2: 0x0703, 0x14c3: 0x1647, 0x14c4: 0x0747, 0x14c5: 0x0757,\n\t0x14c6: 0x075b, 0x14c7: 0x0763, 0x14c8: 0x076b, 0x14c9: 0x076f, 0x14ca: 0x077b, 0x14cb: 0x0773,\n\t0x14cc: 0x05b3, 0x14cd: 0x165b, 0x14ce: 0x078f, 0x14cf: 0x0793, 0x14d0: 0x0797, 0x14d1: 0x07b3,\n\t0x14d2: 0x164c, 0x14d3: 0x05b7, 0x14d4: 0x079f, 0x14d5: 0x07bf, 0x14d6: 0x1656, 0x14d7: 0x07cf,\n\t0x14d8: 0x07d7, 0x14d9: 0x0737, 0x14da: 0x07df, 0x14db: 0x07e3, 0x14dc: 0x1831, 0x14dd: 0x07ff,\n\t0x14de: 0x0807, 0x14df: 0x05bf, 0x14e0: 0x081f, 0x14e1: 0x0823, 0x14e2: 0x082b, 0x14e3: 0x082f,\n\t0x14e4: 0x05c3, 0x14e5: 0x0847, 0x14e6: 0x084b, 0x14e7: 0x0857, 0x14e8: 0x0863, 0x14e9: 0x0867,\n\t0x14ea: 0x086b, 0x14eb: 0x0873, 0x14ec: 0x0893, 0x14ed: 0x0897, 0x14ee: 0x089f, 0x14ef: 0x08af,\n\t0x14f0: 0x08b7, 0x14f1: 0x08bb, 0x14f2: 0x08bb, 0x14f3: 0x08bb, 0x14f4: 0x166a, 0x14f5: 0x0e93,\n\t0x14f6: 0x08cf, 0x14f7: 0x08d7, 0x14f8: 0x166f, 0x14f9: 0x08e3, 0x14fa: 0x08eb, 0x14fb: 0x08f3,\n\t0x14fc: 0x091b, 0x14fd: 0x0907, 0x14fe: 0x0913, 0x14ff: 0x0917,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x091f, 0x1501: 0x0927, 0x1502: 0x092b, 0x1503: 0x0933, 0x1504: 0x093b, 0x1505: 0x093f,\n\t0x1506: 0x093f, 0x1507: 0x0947, 0x1508: 0x094f, 0x1509: 0x0953, 0x150a: 0x095f, 0x150b: 0x0983,\n\t0x150c: 0x0967, 0x150d: 0x0987, 0x150e: 0x096b, 0x150f: 0x0973, 0x1510: 0x080b, 0x1511: 0x09cf,\n\t0x1512: 0x0997, 0x1513: 0x099b, 0x1514: 0x099f, 0x1515: 0x0993, 0x1516: 0x09a7, 0x1517: 0x09a3,\n\t0x1518: 0x09bb, 0x1519: 0x1674, 0x151a: 0x09d7, 0x151b: 0x09db, 0x151c: 0x09e3, 0x151d: 0x09ef,\n\t0x151e: 0x09f7, 0x151f: 0x0a13, 0x1520: 0x1679, 0x1521: 0x167e, 0x1522: 0x0a1f, 0x1523: 0x0a23,\n\t0x1524: 0x0a27, 0x1525: 0x0a1b, 0x1526: 0x0a2f, 0x1527: 0x05c7, 0x1528: 0x05cb, 0x1529: 0x0a37,\n\t0x152a: 0x0a3f, 0x152b: 0x0a3f, 0x152c: 0x1683, 0x152d: 0x0a5b, 0x152e: 0x0a5f, 0x152f: 0x0a63,\n\t0x1530: 0x0a6b, 0x1531: 0x1688, 0x1532: 0x0a73, 0x1533: 0x0a77, 0x1534: 0x0b4f, 0x1535: 0x0a7f,\n\t0x1536: 0x05cf, 0x1537: 0x0a8b, 0x1538: 0x0a9b, 0x1539: 0x0aa7, 0x153a: 0x0aa3, 0x153b: 0x1692,\n\t0x153c: 0x0aaf, 0x153d: 0x1697, 0x153e: 0x0abb, 0x153f: 0x0ab7,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x0abf, 0x1541: 0x0acf, 0x1542: 0x0ad3, 0x1543: 0x05d3, 0x1544: 0x0ae3, 0x1545: 0x0aeb,\n\t0x1546: 0x0aef, 0x1547: 0x0af3, 0x1548: 0x05d7, 0x1549: 0x169c, 0x154a: 0x05db, 0x154b: 0x0b0f,\n\t0x154c: 0x0b13, 0x154d: 0x0b17, 0x154e: 0x0b1f, 0x154f: 0x1863, 0x1550: 0x0b37, 0x1551: 0x16a6,\n\t0x1552: 0x16a6, 0x1553: 0x11d7, 0x1554: 0x0b47, 0x1555: 0x0b47, 0x1556: 0x05df, 0x1557: 0x16c9,\n\t0x1558: 0x179b, 0x1559: 0x0b57, 0x155a: 0x0b5f, 0x155b: 0x05e3, 0x155c: 0x0b73, 0x155d: 0x0b83,\n\t0x155e: 0x0b87, 0x155f: 0x0b8f, 0x1560: 0x0b9f, 0x1561: 0x05eb, 0x1562: 0x05e7, 0x1563: 0x0ba3,\n\t0x1564: 0x16ab, 0x1565: 0x0ba7, 0x1566: 0x0bbb, 0x1567: 0x0bbf, 0x1568: 0x0bc3, 0x1569: 0x0bbf,\n\t0x156a: 0x0bcf, 0x156b: 0x0bd3, 0x156c: 0x0be3, 0x156d: 0x0bdb, 0x156e: 0x0bdf, 0x156f: 0x0be7,\n\t0x1570: 0x0beb, 0x1571: 0x0bef, 0x1572: 0x0bfb, 0x1573: 0x0bff, 0x1574: 0x0c17, 0x1575: 0x0c1f,\n\t0x1576: 0x0c2f, 0x1577: 0x0c43, 0x1578: 0x16ba, 0x1579: 0x0c3f, 0x157a: 0x0c33, 0x157b: 0x0c4b,\n\t0x157c: 0x0c53, 0x157d: 0x0c67, 0x157e: 0x16bf, 0x157f: 0x0c6f,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x0c63, 0x1581: 0x0c5b, 0x1582: 0x05ef, 0x1583: 0x0c77, 0x1584: 0x0c7f, 0x1585: 0x0c87,\n\t0x1586: 0x0c7b, 0x1587: 0x05f3, 0x1588: 0x0c97, 0x1589: 0x0c9f, 0x158a: 0x16c4, 0x158b: 0x0ccb,\n\t0x158c: 0x0cff, 0x158d: 0x0cdb, 0x158e: 0x05ff, 0x158f: 0x0ce7, 0x1590: 0x05fb, 0x1591: 0x05f7,\n\t0x1592: 0x07c3, 0x1593: 0x07c7, 0x1594: 0x0d03, 0x1595: 0x0ceb, 0x1596: 0x11ab, 0x1597: 0x0663,\n\t0x1598: 0x0d0f, 0x1599: 0x0d13, 0x159a: 0x0d17, 0x159b: 0x0d2b, 0x159c: 0x0d23, 0x159d: 0x16dd,\n\t0x159e: 0x0603, 0x159f: 0x0d3f, 0x15a0: 0x0d33, 0x15a1: 0x0d4f, 0x15a2: 0x0d57, 0x15a3: 0x16e7,\n\t0x15a4: 0x0d5b, 0x15a5: 0x0d47, 0x15a6: 0x0d63, 0x15a7: 0x0607, 0x15a8: 0x0d67, 0x15a9: 0x0d6b,\n\t0x15aa: 0x0d6f, 0x15ab: 0x0d7b, 0x15ac: 0x16ec, 0x15ad: 0x0d83, 0x15ae: 0x060b, 0x15af: 0x0d8f,\n\t0x15b0: 0x16f1, 0x15b1: 0x0d93, 0x15b2: 0x060f, 0x15b3: 0x0d9f, 0x15b4: 0x0dab, 0x15b5: 0x0db7,\n\t0x15b6: 0x0dbb, 0x15b7: 0x16f6, 0x15b8: 0x168d, 0x15b9: 0x16fb, 0x15ba: 0x0ddb, 0x15bb: 0x1700,\n\t0x15bc: 0x0de7, 0x15bd: 0x0def, 0x15be: 0x0ddf, 0x15bf: 0x0dfb,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0e0b, 0x15c1: 0x0e1b, 0x15c2: 0x0e0f, 0x15c3: 0x0e13, 0x15c4: 0x0e1f, 0x15c5: 0x0e23,\n\t0x15c6: 0x1705, 0x15c7: 0x0e07, 0x15c8: 0x0e3b, 0x15c9: 0x0e3f, 0x15ca: 0x0613, 0x15cb: 0x0e53,\n\t0x15cc: 0x0e4f, 0x15cd: 0x170a, 0x15ce: 0x0e33, 0x15cf: 0x0e6f, 0x15d0: 0x170f, 0x15d1: 0x1714,\n\t0x15d2: 0x0e73, 0x15d3: 0x0e87, 0x15d4: 0x0e83, 0x15d5: 0x0e7f, 0x15d6: 0x0617, 0x15d7: 0x0e8b,\n\t0x15d8: 0x0e9b, 0x15d9: 0x0e97, 0x15da: 0x0ea3, 0x15db: 0x1651, 0x15dc: 0x0eb3, 0x15dd: 0x1719,\n\t0x15de: 0x0ebf, 0x15df: 0x1723, 0x15e0: 0x0ed3, 0x15e1: 0x0edf, 0x15e2: 0x0ef3, 0x15e3: 0x1728,\n\t0x15e4: 0x0f07, 0x15e5: 0x0f0b, 0x15e6: 0x172d, 0x15e7: 0x1732, 0x15e8: 0x0f27, 0x15e9: 0x0f37,\n\t0x15ea: 0x061b, 0x15eb: 0x0f3b, 0x15ec: 0x061f, 0x15ed: 0x061f, 0x15ee: 0x0f53, 0x15ef: 0x0f57,\n\t0x15f0: 0x0f5f, 0x15f1: 0x0f63, 0x15f2: 0x0f6f, 0x15f3: 0x0623, 0x15f4: 0x0f87, 0x15f5: 0x1737,\n\t0x15f6: 0x0fa3, 0x15f7: 0x173c, 0x15f8: 0x0faf, 0x15f9: 0x16a1, 0x15fa: 0x0fbf, 0x15fb: 0x1741,\n\t0x15fc: 0x1746, 0x15fd: 0x174b, 0x15fe: 0x0627, 0x15ff: 0x062b,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0ff7, 0x1601: 0x1755, 0x1602: 0x1750, 0x1603: 0x175a, 0x1604: 0x175f, 0x1605: 0x0fff,\n\t0x1606: 0x1003, 0x1607: 0x1003, 0x1608: 0x100b, 0x1609: 0x0633, 0x160a: 0x100f, 0x160b: 0x0637,\n\t0x160c: 0x063b, 0x160d: 0x1769, 0x160e: 0x1023, 0x160f: 0x102b, 0x1610: 0x1037, 0x1611: 0x063f,\n\t0x1612: 0x176e, 0x1613: 0x105b, 0x1614: 0x1773, 0x1615: 0x1778, 0x1616: 0x107b, 0x1617: 0x1093,\n\t0x1618: 0x0643, 0x1619: 0x109b, 0x161a: 0x109f, 0x161b: 0x10a3, 0x161c: 0x177d, 0x161d: 0x1782,\n\t0x161e: 0x1782, 0x161f: 0x10bb, 0x1620: 0x0647, 0x1621: 0x1787, 0x1622: 0x10cf, 0x1623: 0x10d3,\n\t0x1624: 0x064b, 0x1625: 0x178c, 0x1626: 0x10ef, 0x1627: 0x064f, 0x1628: 0x10ff, 0x1629: 0x10f7,\n\t0x162a: 0x1107, 0x162b: 0x1796, 0x162c: 0x111f, 0x162d: 0x0653, 0x162e: 0x112b, 0x162f: 0x1133,\n\t0x1630: 0x1143, 0x1631: 0x0657, 0x1632: 0x17a0, 0x1633: 0x17a5, 0x1634: 0x065b, 0x1635: 0x17aa,\n\t0x1636: 0x115b, 0x1637: 0x17af, 0x1638: 0x1167, 0x1639: 0x1173, 0x163a: 0x117b, 0x163b: 0x17b4,\n\t0x163c: 0x17b9, 0x163d: 0x118f, 0x163e: 0x17be, 0x163f: 0x1197,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x16ce, 0x1641: 0x065f, 0x1642: 0x11af, 0x1643: 0x11b3, 0x1644: 0x0667, 0x1645: 0x11b7,\n\t0x1646: 0x0a33, 0x1647: 0x17c3, 0x1648: 0x17c8, 0x1649: 0x16d3, 0x164a: 0x16d8, 0x164b: 0x11d7,\n\t0x164c: 0x11db, 0x164d: 0x13f3, 0x164e: 0x066b, 0x164f: 0x1207, 0x1650: 0x1203, 0x1651: 0x120b,\n\t0x1652: 0x083f, 0x1653: 0x120f, 0x1654: 0x1213, 0x1655: 0x1217, 0x1656: 0x121f, 0x1657: 0x17cd,\n\t0x1658: 0x121b, 0x1659: 0x1223, 0x165a: 0x1237, 0x165b: 0x123b, 0x165c: 0x1227, 0x165d: 0x123f,\n\t0x165e: 0x1253, 0x165f: 0x1267, 0x1660: 0x1233, 0x1661: 0x1247, 0x1662: 0x124b, 0x1663: 0x124f,\n\t0x1664: 0x17d2, 0x1665: 0x17dc, 0x1666: 0x17d7, 0x1667: 0x066f, 0x1668: 0x126f, 0x1669: 0x1273,\n\t0x166a: 0x127b, 0x166b: 0x17f0, 0x166c: 0x127f, 0x166d: 0x17e1, 0x166e: 0x0673, 0x166f: 0x0677,\n\t0x1670: 0x17e6, 0x1671: 0x17eb, 0x1672: 0x067b, 0x1673: 0x129f, 0x1674: 0x12a3, 0x1675: 0x12a7,\n\t0x1676: 0x12ab, 0x1677: 0x12b7, 0x1678: 0x12b3, 0x1679: 0x12bf, 0x167a: 0x12bb, 0x167b: 0x12cb,\n\t0x167c: 0x12c3, 0x167d: 0x12c7, 0x167e: 0x12cf, 0x167f: 0x067f,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x12d7, 0x1681: 0x12db, 0x1682: 0x0683, 0x1683: 0x12eb, 0x1684: 0x12ef, 0x1685: 0x17f5,\n\t0x1686: 0x12fb, 0x1687: 0x12ff, 0x1688: 0x0687, 0x1689: 0x130b, 0x168a: 0x05bb, 0x168b: 0x17fa,\n\t0x168c: 0x17ff, 0x168d: 0x068b, 0x168e: 0x068f, 0x168f: 0x1337, 0x1690: 0x134f, 0x1691: 0x136b,\n\t0x1692: 0x137b, 0x1693: 0x1804, 0x1694: 0x138f, 0x1695: 0x1393, 0x1696: 0x13ab, 0x1697: 0x13b7,\n\t0x1698: 0x180e, 0x1699: 0x1660, 0x169a: 0x13c3, 0x169b: 0x13bf, 0x169c: 0x13cb, 0x169d: 0x1665,\n\t0x169e: 0x13d7, 0x169f: 0x13e3, 0x16a0: 0x1813, 0x16a1: 0x1818, 0x16a2: 0x1423, 0x16a3: 0x142f,\n\t0x16a4: 0x1437, 0x16a5: 0x181d, 0x16a6: 0x143b, 0x16a7: 0x1467, 0x16a8: 0x1473, 0x16a9: 0x1477,\n\t0x16aa: 0x146f, 0x16ab: 0x1483, 0x16ac: 0x1487, 0x16ad: 0x1822, 0x16ae: 0x1493, 0x16af: 0x0693,\n\t0x16b0: 0x149b, 0x16b1: 0x1827, 0x16b2: 0x0697, 0x16b3: 0x14d3, 0x16b4: 0x0ac3, 0x16b5: 0x14eb,\n\t0x16b6: 0x182c, 0x16b7: 0x1836, 0x16b8: 0x069b, 0x16b9: 0x069f, 0x16ba: 0x1513, 0x16bb: 0x183b,\n\t0x16bc: 0x06a3, 0x16bd: 0x1840, 0x16be: 0x152b, 0x16bf: 0x152b,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x1533, 0x16c1: 0x1845, 0x16c2: 0x154b, 0x16c3: 0x06a7, 0x16c4: 0x155b, 0x16c5: 0x1567,\n\t0x16c6: 0x156f, 0x16c7: 0x1577, 0x16c8: 0x06ab, 0x16c9: 0x184a, 0x16ca: 0x158b, 0x16cb: 0x15a7,\n\t0x16cc: 0x15b3, 0x16cd: 0x06af, 0x16ce: 0x06b3, 0x16cf: 0x15b7, 0x16d0: 0x184f, 0x16d1: 0x06b7,\n\t0x16d2: 0x1854, 0x16d3: 0x1859, 0x16d4: 0x185e, 0x16d5: 0x15db, 0x16d6: 0x06bb, 0x16d7: 0x15ef,\n\t0x16d8: 0x15f7, 0x16d9: 0x15fb, 0x16da: 0x1603, 0x16db: 0x160b, 0x16dc: 0x1613, 0x16dd: 0x1868,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5a, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5b, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5c, 0xcb: 0x5d, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x5e, 0xd2: 0x5f, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x60,\n\t0xd8: 0x61, 0xd9: 0x0d, 0xdb: 0x62, 0xdc: 0x63, 0xdd: 0x64, 0xdf: 0x65,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x66, 0x121: 0x67, 0x123: 0x68, 0x124: 0x69, 0x125: 0x6a, 0x126: 0x6b, 0x127: 0x6c,\n\t0x128: 0x6d, 0x129: 0x6e, 0x12a: 0x6f, 0x12b: 0x70, 0x12c: 0x6b, 0x12d: 0x71, 0x12e: 0x72, 0x12f: 0x73,\n\t0x131: 0x74, 0x132: 0x75, 0x133: 0x76, 0x134: 0x77, 0x135: 0x78, 0x137: 0x79,\n\t0x138: 0x7a, 0x139: 0x7b, 0x13a: 0x7c, 0x13b: 0x7d, 0x13c: 0x7e, 0x13d: 0x7f, 0x13e: 0x80, 0x13f: 0x81,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x82, 0x142: 0x83, 0x143: 0x84, 0x144: 0x85, 0x145: 0x86, 0x146: 0x87, 0x147: 0x88,\n\t0x14d: 0x89,\n\t0x15c: 0x8a, 0x15f: 0x8b,\n\t0x162: 0x8c, 0x164: 0x8d,\n\t0x168: 0x8e, 0x169: 0x8f, 0x16a: 0x90, 0x16c: 0x0e, 0x16d: 0x91, 0x16e: 0x92, 0x16f: 0x93,\n\t0x170: 0x94, 0x173: 0x95, 0x174: 0x96, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x97,\n\t0x178: 0x11, 0x179: 0x12, 0x17a: 0x13, 0x17b: 0x14, 0x17c: 0x15, 0x17d: 0x16, 0x17e: 0x17, 0x17f: 0x18,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x9c, 0x187: 0x9d,\n\t0x188: 0x9e, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9f, 0x18c: 0xa0,\n\t0x191: 0x1d, 0x192: 0x1e, 0x193: 0xa1,\n\t0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,\n\t0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,\n\t0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xab,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xac, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xad, 0x1c5: 0x25, 0x1c6: 0x26,\n\t0x1c8: 0x27, 0x1c9: 0x28, 0x1ca: 0x29, 0x1cb: 0x2a, 0x1cc: 0x2b, 0x1cd: 0x2c, 0x1ce: 0x2d, 0x1cf: 0x2e,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,\n\t0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,\n\t0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,\n\t0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,\n\t0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,\n\t0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,\n\t0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,\n\t0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,\n\t0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,\n\t0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,\n\t0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,\n\t0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,\n\t0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,\n\t0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,\n\t0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,\n\t0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,\n\t0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,\n\t0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,\n\t0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,\n\t0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,\n\t0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,\n\t0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x2f, 0x325: 0x30, 0x326: 0x31, 0x327: 0x32,\n\t0x328: 0x33, 0x329: 0x34, 0x32a: 0x35, 0x32b: 0x36, 0x32c: 0x37, 0x32d: 0x38, 0x32e: 0x39, 0x32f: 0x3a,\n\t0x330: 0x3b, 0x331: 0x3c, 0x332: 0x3d, 0x333: 0x3e, 0x334: 0x3f, 0x335: 0x40, 0x336: 0x41, 0x337: 0x42,\n\t0x338: 0x43, 0x339: 0x44, 0x33a: 0x45, 0x33b: 0x46, 0x33c: 0xc5, 0x33d: 0x47, 0x33e: 0x48, 0x33f: 0x49,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc6,\n\t0x34b: 0xc7, 0x34d: 0xc8,\n\t0x368: 0xc9, 0x36b: 0xca,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xce,\n\t0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6b, 0x38d: 0xd1,\n\t0x391: 0xd2, 0x392: 0xd3, 0x393: 0xd4, 0x396: 0xd5, 0x397: 0xd6,\n\t0x398: 0xd7, 0x39a: 0xd8, 0x39c: 0xd9,\n\t0x3b0: 0xd7,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xda, 0x3ec: 0xdb,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xdc,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xdd, 0x446: 0xde, 0x447: 0xdf,\n\t0x449: 0xe0,\n\t0x450: 0xe1, 0x451: 0xe2, 0x452: 0xe3, 0x453: 0xe4, 0x454: 0xe5, 0x455: 0xe6, 0x456: 0xe7, 0x457: 0xe8,\n\t0x458: 0xe9, 0x459: 0xea, 0x45a: 0x4a, 0x45b: 0xeb, 0x45c: 0xec, 0x45d: 0xed, 0x45e: 0xee, 0x45f: 0x4b,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xef,\n\t0x4a3: 0xf0, 0x4a5: 0xf1,\n\t0x4b8: 0x4c, 0x4b9: 0x4d, 0x4ba: 0x4e,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x4f, 0x4c5: 0xf2, 0x4c6: 0xf3,\n\t0x4c8: 0x50, 0x4c9: 0xf4,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x51, 0x521: 0x52, 0x522: 0x53, 0x523: 0x54, 0x524: 0x55, 0x525: 0x56, 0x526: 0x57, 0x527: 0x58,\n\t0x528: 0x59,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 155 entries, 310 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd4, 0xdb, 0xe3, 0xe7, 0xe9, 0xec, 0xf0, 0xf6, 0x107, 0x113, 0x115, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12c, 0x12f, 0x131, 0x134, 0x137, 0x13b, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x176, 0x184, 0x192, 0x1a2, 0x1b0, 0x1b7, 0x1bd, 0x1cc, 0x1d0, 0x1d2, 0x1d6, 0x1d8, 0x1db, 0x1dd, 0x1e0, 0x1e2, 0x1e5, 0x1e7, 0x1e9, 0x1eb, 0x1f7, 0x201, 0x20b, 0x20e, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21d, 0x21f, 0x221, 0x223, 0x225, 0x22b, 0x22e, 0x232, 0x234, 0x23b, 0x241, 0x247, 0x24f, 0x255, 0x25b, 0x261, 0x265, 0x267, 0x269, 0x26b, 0x26d, 0x273, 0x276, 0x279, 0x281, 0x288, 0x28b, 0x28e, 0x290, 0x298, 0x29b, 0x2a2, 0x2a5, 0x2ab, 0x2ad, 0x2af, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2c7, 0x2d1, 0x2d3, 0x2d5, 0x2d9, 0x2de, 0x2ea, 0x2ef, 0x2f8, 0x2fe, 0x303, 0x307, 0x30c, 0x310, 0x320, 0x32e, 0x33c, 0x34a, 0x350, 0x352, 0x355, 0x35f, 0x361}\n\n// nfkcSparseValues: 875 entries, 3500 bytes\nvar nfkcSparseValues = [875]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4278, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4264, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x425a, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01dc, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4291, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x221c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2210, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x426e, lo: 0x98, hi: 0x98},\n\t{value: 0x4273, lo: 0x99, hi: 0x9a},\n\t{value: 0x4296, lo: 0x9b, hi: 0x9b},\n\t{value: 0x425f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4282, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x0167, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xc, offset 0x6f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x74\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x76\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf, offset 0x87\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x8f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x96\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x99\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x13, offset 0xa0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0xa4\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0xa8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xaa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xac\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xb5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xc0\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xc5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xc8\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xd2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xd4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xdb\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xe3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2621, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xe7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xe9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2636, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x23, offset 0xec\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t{value: 0x2628, lo: 0x9c, hi: 0x9c},\n\t{value: 0x262f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xf0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xf6\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x45f4, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x45ff, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0x107\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x115\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x11d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x030f, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x11f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x121\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x123\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x125\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x127\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x129\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x12c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x12f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x131\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x134\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x137\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x13b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x140\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x149\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x14b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x14e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x150\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x15b\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x166\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x8132, lo: 0x80, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x82},\n\t{value: 0x8132, lo: 0x83, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8132, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8135, lo: 0x8d, hi: 0x8d},\n\t{value: 0x812a, lo: 0x8e, hi: 0x8e},\n\t{value: 0x812d, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8129, lo: 0x90, hi: 0x90},\n\t{value: 0x8132, lo: 0x91, hi: 0xb5},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8134, lo: 0xbc, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x176\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043b, lo: 0x91, hi: 0x91},\n\t{value: 0x429b, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1873, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b5c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2691, lo: 0xb3, hi: 0xb3},\n\t{value: 0x27fe, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2698, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x186d, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4269, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3f, offset 0x184\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1933, lo: 0x87, hi: 0x87},\n\t{value: 0x1930, lo: 0x88, hi: 0x88},\n\t{value: 0x1870, lo: 0x89, hi: 0x89},\n\t{value: 0x298e, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x0467, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x40, offset 0x192\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0467, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1999, lo: 0xa8, hi: 0xa8},\n\t// Block 0x41, offset 0x1a2\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x42, offset 0x1b0\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2180, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x43, offset 0x1b7\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x44, offset 0x1bd\n\t{value: 0x0173, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0x269f, lo: 0xac, hi: 0xad},\n\t{value: 0x26a6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x281c, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x45, offset 0x1cc\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x46, offset 0x1d0\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x47, offset 0x1d2\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x48, offset 0x1d6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x299b, lo: 0x8c, hi: 0x8c},\n\t// Block 0x49, offset 0x1d8\n\t{value: 0x0263, lo: 0x02},\n\t{value: 0x1b8c, lo: 0xb4, hi: 0xb4},\n\t{value: 0x192d, lo: 0xb5, hi: 0xb6},\n\t// Block 0x4a, offset 0x1db\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4b, offset 0x1dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4c, offset 0x1e0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4d, offset 0x1e2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x047f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4e, offset 0x1e5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4f, offset 0x1e7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc3, lo: 0x9f, hi: 0x9f},\n\t// Block 0x50, offset 0x1e9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x162f, lo: 0xb3, hi: 0xb3},\n\t// Block 0x51, offset 0x1eb\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1597, lo: 0x80, hi: 0x82},\n\t{value: 0x15af, lo: 0x83, hi: 0x83},\n\t{value: 0x15c7, lo: 0x84, hi: 0x85},\n\t{value: 0x15d7, lo: 0x86, hi: 0x89},\n\t{value: 0x15eb, lo: 0x8a, hi: 0x8c},\n\t{value: 0x15ff, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1607, lo: 0x8e, hi: 0x8e},\n\t{value: 0x160f, lo: 0x8f, hi: 0x90},\n\t{value: 0x161b, lo: 0x91, hi: 0x93},\n\t{value: 0x162b, lo: 0x94, hi: 0x94},\n\t{value: 0x1633, lo: 0x95, hi: 0x95},\n\t// Block 0x52, offset 0x1f7\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xae},\n\t{value: 0x812f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0887, lo: 0xb8, hi: 0xba},\n\t// Block 0x53, offset 0x201\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0313, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0317, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a3b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a41, lo: 0xb5, hi: 0xb6},\n\t{value: 0x031f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0323, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0327, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a4d, lo: 0xba, hi: 0xbf},\n\t// Block 0x54, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x55, offset 0x20e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x020f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0212, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x56, offset 0x212\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x57, offset 0x214\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163b, lo: 0xb0, hi: 0xb0},\n\t// Block 0x58, offset 0x216\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x59, offset 0x218\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x5a, offset 0x21a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5b, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x5c, offset 0x21f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x5d, offset 0x221\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5e, offset 0x223\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x5f, offset 0x225\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x60, offset 0x22b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x61, offset 0x22e\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1637, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1643, lo: 0x9f, hi: 0x9f},\n\t// Block 0x62, offset 0x232\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x63, offset 0x234\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x64, offset 0x23b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x65, offset 0x241\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x66, offset 0x247\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x67, offset 0x24f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x68, offset 0x255\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x69, offset 0x25b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x6a, offset 0x261\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6b, offset 0x265\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6c, offset 0x267\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6d, offset 0x269\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6e, offset 0x26b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x6f, offset 0x26d\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x70, offset 0x273\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x71, offset 0x276\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x72, offset 0x279\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x73, offset 0x281\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x74, offset 0x288\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x75, offset 0x28b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x76, offset 0x28e\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x77, offset 0x290\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x78, offset 0x298\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x79, offset 0x29b\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7a, offset 0x2a2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7b, offset 0x2a5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7c, offset 0x2ab\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x7d, offset 0x2ad\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7e, offset 0x2af\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x7f, offset 0x2b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x80, offset 0x2b4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x81, offset 0x2b6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x82, offset 0x2b8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x83, offset 0x2ba\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x84, offset 0x2c7\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x85, offset 0x2d1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x86, offset 0x2d3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x87, offset 0x2d5\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x88, offset 0x2d9\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x89, offset 0x2de\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x8a, offset 0x2ea\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x8b, offset 0x2ef\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x8c, offset 0x2f8\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x8d, offset 0x2fe\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x8e, offset 0x303\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x8f, offset 0x307\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x90, offset 0x30c\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x91, offset 0x310\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01b8, lo: 0x80, hi: 0x80},\n\t{value: 0x045f, lo: 0x81, hi: 0x81},\n\t{value: 0x01bb, lo: 0x82, hi: 0x9a},\n\t{value: 0x045b, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01c7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d6, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fa, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01eb, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01e8, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0173, lo: 0xa2, hi: 0xb2},\n\t{value: 0x0188, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a6, lo: 0xb4, hi: 0xba},\n\t{value: 0x045f, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01bb, lo: 0xbc, hi: 0xbf},\n\t// Block 0x92, offset 0x320\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01c7, lo: 0x80, hi: 0x94},\n\t{value: 0x045b, lo: 0x95, hi: 0x95},\n\t{value: 0x01c7, lo: 0x96, hi: 0x96},\n\t{value: 0x01d0, lo: 0x97, hi: 0x97},\n\t{value: 0x01d6, lo: 0x98, hi: 0x98},\n\t{value: 0x01fa, lo: 0x99, hi: 0x99},\n\t{value: 0x01eb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01e8, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0173, lo: 0x9c, hi: 0xac},\n\t{value: 0x0188, lo: 0xad, hi: 0xad},\n\t{value: 0x01a6, lo: 0xae, hi: 0xb4},\n\t{value: 0x045f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01bb, lo: 0xb6, hi: 0xbf},\n\t// Block 0x93, offset 0x32e\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01d9, lo: 0x80, hi: 0x8e},\n\t{value: 0x045b, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01c7, lo: 0x90, hi: 0x90},\n\t{value: 0x01d0, lo: 0x91, hi: 0x91},\n\t{value: 0x01d6, lo: 0x92, hi: 0x92},\n\t{value: 0x01fa, lo: 0x93, hi: 0x93},\n\t{value: 0x01eb, lo: 0x94, hi: 0x94},\n\t{value: 0x01e8, lo: 0x95, hi: 0x95},\n\t{value: 0x0173, lo: 0x96, hi: 0xa6},\n\t{value: 0x0188, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a6, lo: 0xa8, hi: 0xae},\n\t{value: 0x045f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01bb, lo: 0xb0, hi: 0xbf},\n\t// Block 0x94, offset 0x33c\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01eb, lo: 0x80, hi: 0x88},\n\t{value: 0x045b, lo: 0x89, hi: 0x89},\n\t{value: 0x01c7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d0, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01eb, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01e8, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0173, lo: 0x90, hi: 0xa0},\n\t{value: 0x0188, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a6, lo: 0xa2, hi: 0xa8},\n\t{value: 0x045f, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01bb, lo: 0xaa, hi: 0xbf},\n\t// Block 0x95, offset 0x34a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x96, offset 0x350\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x97, offset 0x352\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x98, offset 0x355\n\t{value: 0x0002, lo: 0x09},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1951, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1981, lo: 0x8b, hi: 0x8b},\n\t{value: 0x199c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19ae, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197b, lo: 0xaa, hi: 0xaa},\n\t{value: 0x197e, lo: 0xab, hi: 0xab},\n\t// Block 0x99, offset 0x35f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x193f, lo: 0x90, hi: 0x90},\n\t// Block 0x9a, offset 0x361\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2862, lo: 0x80, hi: 0x80},\n\t{value: 0x2826, lo: 0x81, hi: 0x81},\n\t{value: 0x2830, lo: 0x82, hi: 0x82},\n\t{value: 0x2844, lo: 0x83, hi: 0x84},\n\t{value: 0x284e, lo: 0x85, hi: 0x86},\n\t{value: 0x283a, lo: 0x87, hi: 0x87},\n\t{value: 0x2858, lo: 0x88, hi: 0x88},\n\t{value: 0x0b6f, lo: 0x90, hi: 0x90},\n\t{value: 0x08e7, lo: 0x91, hi: 0x91},\n}\n\n// recompMap: 7520 bytes (entries only)\nvar recompMap = map[uint32]rune{\n\t0x00410300: 0x00C0,\n\t0x00410301: 0x00C1,\n\t0x00410302: 0x00C2,\n\t0x00410303: 0x00C3,\n\t0x00410308: 0x00C4,\n\t0x0041030A: 0x00C5,\n\t0x00430327: 0x00C7,\n\t0x00450300: 0x00C8,\n\t0x00450301: 0x00C9,\n\t0x00450302: 0x00CA,\n\t0x00450308: 0x00CB,\n\t0x00490300: 0x00CC,\n\t0x00490301: 0x00CD,\n\t0x00490302: 0x00CE,\n\t0x00490308: 0x00CF,\n\t0x004E0303: 0x00D1,\n\t0x004F0300: 0x00D2,\n\t0x004F0301: 0x00D3,\n\t0x004F0302: 0x00D4,\n\t0x004F0303: 0x00D5,\n\t0x004F0308: 0x00D6,\n\t0x00550300: 0x00D9,\n\t0x00550301: 0x00DA,\n\t0x00550302: 0x00DB,\n\t0x00550308: 0x00DC,\n\t0x00590301: 0x00DD,\n\t0x00610300: 0x00E0,\n\t0x00610301: 0x00E1,\n\t0x00610302: 0x00E2,\n\t0x00610303: 0x00E3,\n\t0x00610308: 0x00E4,\n\t0x0061030A: 0x00E5,\n\t0x00630327: 0x00E7,\n\t0x00650300: 0x00E8,\n\t0x00650301: 0x00E9,\n\t0x00650302: 0x00EA,\n\t0x00650308: 0x00EB,\n\t0x00690300: 0x00EC,\n\t0x00690301: 0x00ED,\n\t0x00690302: 0x00EE,\n\t0x00690308: 0x00EF,\n\t0x006E0303: 0x00F1,\n\t0x006F0300: 0x00F2,\n\t0x006F0301: 0x00F3,\n\t0x006F0302: 0x00F4,\n\t0x006F0303: 0x00F5,\n\t0x006F0308: 0x00F6,\n\t0x00750300: 0x00F9,\n\t0x00750301: 0x00FA,\n\t0x00750302: 0x00FB,\n\t0x00750308: 0x00FC,\n\t0x00790301: 0x00FD,\n\t0x00790308: 0x00FF,\n\t0x00410304: 0x0100,\n\t0x00610304: 0x0101,\n\t0x00410306: 0x0102,\n\t0x00610306: 0x0103,\n\t0x00410328: 0x0104,\n\t0x00610328: 0x0105,\n\t0x00430301: 0x0106,\n\t0x00630301: 0x0107,\n\t0x00430302: 0x0108,\n\t0x00630302: 0x0109,\n\t0x00430307: 0x010A,\n\t0x00630307: 0x010B,\n\t0x0043030C: 0x010C,\n\t0x0063030C: 0x010D,\n\t0x0044030C: 0x010E,\n\t0x0064030C: 0x010F,\n\t0x00450304: 0x0112,\n\t0x00650304: 0x0113,\n\t0x00450306: 0x0114,\n\t0x00650306: 0x0115,\n\t0x00450307: 0x0116,\n\t0x00650307: 0x0117,\n\t0x00450328: 0x0118,\n\t0x00650328: 0x0119,\n\t0x0045030C: 0x011A,\n\t0x0065030C: 0x011B,\n\t0x00470302: 0x011C,\n\t0x00670302: 0x011D,\n\t0x00470306: 0x011E,\n\t0x00670306: 0x011F,\n\t0x00470307: 0x0120,\n\t0x00670307: 0x0121,\n\t0x00470327: 0x0122,\n\t0x00670327: 0x0123,\n\t0x00480302: 0x0124,\n\t0x00680302: 0x0125,\n\t0x00490303: 0x0128,\n\t0x00690303: 0x0129,\n\t0x00490304: 0x012A,\n\t0x00690304: 0x012B,\n\t0x00490306: 0x012C,\n\t0x00690306: 0x012D,\n\t0x00490328: 0x012E,\n\t0x00690328: 0x012F,\n\t0x00490307: 0x0130,\n\t0x004A0302: 0x0134,\n\t0x006A0302: 0x0135,\n\t0x004B0327: 0x0136,\n\t0x006B0327: 0x0137,\n\t0x004C0301: 0x0139,\n\t0x006C0301: 0x013A,\n\t0x004C0327: 0x013B,\n\t0x006C0327: 0x013C,\n\t0x004C030C: 0x013D,\n\t0x006C030C: 0x013E,\n\t0x004E0301: 0x0143,\n\t0x006E0301: 0x0144,\n\t0x004E0327: 0x0145,\n\t0x006E0327: 0x0146,\n\t0x004E030C: 0x0147,\n\t0x006E030C: 0x0148,\n\t0x004F0304: 0x014C,\n\t0x006F0304: 0x014D,\n\t0x004F0306: 0x014E,\n\t0x006F0306: 0x014F,\n\t0x004F030B: 0x0150,\n\t0x006F030B: 0x0151,\n\t0x00520301: 0x0154,\n\t0x00720301: 0x0155,\n\t0x00520327: 0x0156,\n\t0x00720327: 0x0157,\n\t0x0052030C: 0x0158,\n\t0x0072030C: 0x0159,\n\t0x00530301: 0x015A,\n\t0x00730301: 0x015B,\n\t0x00530302: 0x015C,\n\t0x00730302: 0x015D,\n\t0x00530327: 0x015E,\n\t0x00730327: 0x015F,\n\t0x0053030C: 0x0160,\n\t0x0073030C: 0x0161,\n\t0x00540327: 0x0162,\n\t0x00740327: 0x0163,\n\t0x0054030C: 0x0164,\n\t0x0074030C: 0x0165,\n\t0x00550303: 0x0168,\n\t0x00750303: 0x0169,\n\t0x00550304: 0x016A,\n\t0x00750304: 0x016B,\n\t0x00550306: 0x016C,\n\t0x00750306: 0x016D,\n\t0x0055030A: 0x016E,\n\t0x0075030A: 0x016F,\n\t0x0055030B: 0x0170,\n\t0x0075030B: 0x0171,\n\t0x00550328: 0x0172,\n\t0x00750328: 0x0173,\n\t0x00570302: 0x0174,\n\t0x00770302: 0x0175,\n\t0x00590302: 0x0176,\n\t0x00790302: 0x0177,\n\t0x00590308: 0x0178,\n\t0x005A0301: 0x0179,\n\t0x007A0301: 0x017A,\n\t0x005A0307: 0x017B,\n\t0x007A0307: 0x017C,\n\t0x005A030C: 0x017D,\n\t0x007A030C: 0x017E,\n\t0x004F031B: 0x01A0,\n\t0x006F031B: 0x01A1,\n\t0x0055031B: 0x01AF,\n\t0x0075031B: 0x01B0,\n\t0x0041030C: 0x01CD,\n\t0x0061030C: 0x01CE,\n\t0x0049030C: 0x01CF,\n\t0x0069030C: 0x01D0,\n\t0x004F030C: 0x01D1,\n\t0x006F030C: 0x01D2,\n\t0x0055030C: 0x01D3,\n\t0x0075030C: 0x01D4,\n\t0x00DC0304: 0x01D5,\n\t0x00FC0304: 0x01D6,\n\t0x00DC0301: 0x01D7,\n\t0x00FC0301: 0x01D8,\n\t0x00DC030C: 0x01D9,\n\t0x00FC030C: 0x01DA,\n\t0x00DC0300: 0x01DB,\n\t0x00FC0300: 0x01DC,\n\t0x00C40304: 0x01DE,\n\t0x00E40304: 0x01DF,\n\t0x02260304: 0x01E0,\n\t0x02270304: 0x01E1,\n\t0x00C60304: 0x01E2,\n\t0x00E60304: 0x01E3,\n\t0x0047030C: 0x01E6,\n\t0x0067030C: 0x01E7,\n\t0x004B030C: 0x01E8,\n\t0x006B030C: 0x01E9,\n\t0x004F0328: 0x01EA,\n\t0x006F0328: 0x01EB,\n\t0x01EA0304: 0x01EC,\n\t0x01EB0304: 0x01ED,\n\t0x01B7030C: 0x01EE,\n\t0x0292030C: 0x01EF,\n\t0x006A030C: 0x01F0,\n\t0x00470301: 0x01F4,\n\t0x00670301: 0x01F5,\n\t0x004E0300: 0x01F8,\n\t0x006E0300: 0x01F9,\n\t0x00C50301: 0x01FA,\n\t0x00E50301: 0x01FB,\n\t0x00C60301: 0x01FC,\n\t0x00E60301: 0x01FD,\n\t0x00D80301: 0x01FE,\n\t0x00F80301: 0x01FF,\n\t0x0041030F: 0x0200,\n\t0x0061030F: 0x0201,\n\t0x00410311: 0x0202,\n\t0x00610311: 0x0203,\n\t0x0045030F: 0x0204,\n\t0x0065030F: 0x0205,\n\t0x00450311: 0x0206,\n\t0x00650311: 0x0207,\n\t0x0049030F: 0x0208,\n\t0x0069030F: 0x0209,\n\t0x00490311: 0x020A,\n\t0x00690311: 0x020B,\n\t0x004F030F: 0x020C,\n\t0x006F030F: 0x020D,\n\t0x004F0311: 0x020E,\n\t0x006F0311: 0x020F,\n\t0x0052030F: 0x0210,\n\t0x0072030F: 0x0211,\n\t0x00520311: 0x0212,\n\t0x00720311: 0x0213,\n\t0x0055030F: 0x0214,\n\t0x0075030F: 0x0215,\n\t0x00550311: 0x0216,\n\t0x00750311: 0x0217,\n\t0x00530326: 0x0218,\n\t0x00730326: 0x0219,\n\t0x00540326: 0x021A,\n\t0x00740326: 0x021B,\n\t0x0048030C: 0x021E,\n\t0x0068030C: 0x021F,\n\t0x00410307: 0x0226,\n\t0x00610307: 0x0227,\n\t0x00450327: 0x0228,\n\t0x00650327: 0x0229,\n\t0x00D60304: 0x022A,\n\t0x00F60304: 0x022B,\n\t0x00D50304: 0x022C,\n\t0x00F50304: 0x022D,\n\t0x004F0307: 0x022E,\n\t0x006F0307: 0x022F,\n\t0x022E0304: 0x0230,\n\t0x022F0304: 0x0231,\n\t0x00590304: 0x0232,\n\t0x00790304: 0x0233,\n\t0x00A80301: 0x0385,\n\t0x03910301: 0x0386,\n\t0x03950301: 0x0388,\n\t0x03970301: 0x0389,\n\t0x03990301: 0x038A,\n\t0x039F0301: 0x038C,\n\t0x03A50301: 0x038E,\n\t0x03A90301: 0x038F,\n\t0x03CA0301: 0x0390,\n\t0x03990308: 0x03AA,\n\t0x03A50308: 0x03AB,\n\t0x03B10301: 0x03AC,\n\t0x03B50301: 0x03AD,\n\t0x03B70301: 0x03AE,\n\t0x03B90301: 0x03AF,\n\t0x03CB0301: 0x03B0,\n\t0x03B90308: 0x03CA,\n\t0x03C50308: 0x03CB,\n\t0x03BF0301: 0x03CC,\n\t0x03C50301: 0x03CD,\n\t0x03C90301: 0x03CE,\n\t0x03D20301: 0x03D3,\n\t0x03D20308: 0x03D4,\n\t0x04150300: 0x0400,\n\t0x04150308: 0x0401,\n\t0x04130301: 0x0403,\n\t0x04060308: 0x0407,\n\t0x041A0301: 0x040C,\n\t0x04180300: 0x040D,\n\t0x04230306: 0x040E,\n\t0x04180306: 0x0419,\n\t0x04380306: 0x0439,\n\t0x04350300: 0x0450,\n\t0x04350308: 0x0451,\n\t0x04330301: 0x0453,\n\t0x04560308: 0x0457,\n\t0x043A0301: 0x045C,\n\t0x04380300: 0x045D,\n\t0x04430306: 0x045E,\n\t0x0474030F: 0x0476,\n\t0x0475030F: 0x0477,\n\t0x04160306: 0x04C1,\n\t0x04360306: 0x04C2,\n\t0x04100306: 0x04D0,\n\t0x04300306: 0x04D1,\n\t0x04100308: 0x04D2,\n\t0x04300308: 0x04D3,\n\t0x04150306: 0x04D6,\n\t0x04350306: 0x04D7,\n\t0x04D80308: 0x04DA,\n\t0x04D90308: 0x04DB,\n\t0x04160308: 0x04DC,\n\t0x04360308: 0x04DD,\n\t0x04170308: 0x04DE,\n\t0x04370308: 0x04DF,\n\t0x04180304: 0x04E2,\n\t0x04380304: 0x04E3,\n\t0x04180308: 0x04E4,\n\t0x04380308: 0x04E5,\n\t0x041E0308: 0x04E6,\n\t0x043E0308: 0x04E7,\n\t0x04E80308: 0x04EA,\n\t0x04E90308: 0x04EB,\n\t0x042D0308: 0x04EC,\n\t0x044D0308: 0x04ED,\n\t0x04230304: 0x04EE,\n\t0x04430304: 0x04EF,\n\t0x04230308: 0x04F0,\n\t0x04430308: 0x04F1,\n\t0x0423030B: 0x04F2,\n\t0x0443030B: 0x04F3,\n\t0x04270308: 0x04F4,\n\t0x04470308: 0x04F5,\n\t0x042B0308: 0x04F8,\n\t0x044B0308: 0x04F9,\n\t0x06270653: 0x0622,\n\t0x06270654: 0x0623,\n\t0x06480654: 0x0624,\n\t0x06270655: 0x0625,\n\t0x064A0654: 0x0626,\n\t0x06D50654: 0x06C0,\n\t0x06C10654: 0x06C2,\n\t0x06D20654: 0x06D3,\n\t0x0928093C: 0x0929,\n\t0x0930093C: 0x0931,\n\t0x0933093C: 0x0934,\n\t0x09C709BE: 0x09CB,\n\t0x09C709D7: 0x09CC,\n\t0x0B470B56: 0x0B48,\n\t0x0B470B3E: 0x0B4B,\n\t0x0B470B57: 0x0B4C,\n\t0x0B920BD7: 0x0B94,\n\t0x0BC60BBE: 0x0BCA,\n\t0x0BC70BBE: 0x0BCB,\n\t0x0BC60BD7: 0x0BCC,\n\t0x0C460C56: 0x0C48,\n\t0x0CBF0CD5: 0x0CC0,\n\t0x0CC60CD5: 0x0CC7,\n\t0x0CC60CD6: 0x0CC8,\n\t0x0CC60CC2: 0x0CCA,\n\t0x0CCA0CD5: 0x0CCB,\n\t0x0D460D3E: 0x0D4A,\n\t0x0D470D3E: 0x0D4B,\n\t0x0D460D57: 0x0D4C,\n\t0x0DD90DCA: 0x0DDA,\n\t0x0DD90DCF: 0x0DDC,\n\t0x0DDC0DCA: 0x0DDD,\n\t0x0DD90DDF: 0x0DDE,\n\t0x1025102E: 0x1026,\n\t0x1B051B35: 0x1B06,\n\t0x1B071B35: 0x1B08,\n\t0x1B091B35: 0x1B0A,\n\t0x1B0B1B35: 0x1B0C,\n\t0x1B0D1B35: 0x1B0E,\n\t0x1B111B35: 0x1B12,\n\t0x1B3A1B35: 0x1B3B,\n\t0x1B3C1B35: 0x1B3D,\n\t0x1B3E1B35: 0x1B40,\n\t0x1B3F1B35: 0x1B41,\n\t0x1B421B35: 0x1B43,\n\t0x00410325: 0x1E00,\n\t0x00610325: 0x1E01,\n\t0x00420307: 0x1E02,\n\t0x00620307: 0x1E03,\n\t0x00420323: 0x1E04,\n\t0x00620323: 0x1E05,\n\t0x00420331: 0x1E06,\n\t0x00620331: 0x1E07,\n\t0x00C70301: 0x1E08,\n\t0x00E70301: 0x1E09,\n\t0x00440307: 0x1E0A,\n\t0x00640307: 0x1E0B,\n\t0x00440323: 0x1E0C,\n\t0x00640323: 0x1E0D,\n\t0x00440331: 0x1E0E,\n\t0x00640331: 0x1E0F,\n\t0x00440327: 0x1E10,\n\t0x00640327: 0x1E11,\n\t0x0044032D: 0x1E12,\n\t0x0064032D: 0x1E13,\n\t0x01120300: 0x1E14,\n\t0x01130300: 0x1E15,\n\t0x01120301: 0x1E16,\n\t0x01130301: 0x1E17,\n\t0x0045032D: 0x1E18,\n\t0x0065032D: 0x1E19,\n\t0x00450330: 0x1E1A,\n\t0x00650330: 0x1E1B,\n\t0x02280306: 0x1E1C,\n\t0x02290306: 0x1E1D,\n\t0x00460307: 0x1E1E,\n\t0x00660307: 0x1E1F,\n\t0x00470304: 0x1E20,\n\t0x00670304: 0x1E21,\n\t0x00480307: 0x1E22,\n\t0x00680307: 0x1E23,\n\t0x00480323: 0x1E24,\n\t0x00680323: 0x1E25,\n\t0x00480308: 0x1E26,\n\t0x00680308: 0x1E27,\n\t0x00480327: 0x1E28,\n\t0x00680327: 0x1E29,\n\t0x0048032E: 0x1E2A,\n\t0x0068032E: 0x1E2B,\n\t0x00490330: 0x1E2C,\n\t0x00690330: 0x1E2D,\n\t0x00CF0301: 0x1E2E,\n\t0x00EF0301: 0x1E2F,\n\t0x004B0301: 0x1E30,\n\t0x006B0301: 0x1E31,\n\t0x004B0323: 0x1E32,\n\t0x006B0323: 0x1E33,\n\t0x004B0331: 0x1E34,\n\t0x006B0331: 0x1E35,\n\t0x004C0323: 0x1E36,\n\t0x006C0323: 0x1E37,\n\t0x1E360304: 0x1E38,\n\t0x1E370304: 0x1E39,\n\t0x004C0331: 0x1E3A,\n\t0x006C0331: 0x1E3B,\n\t0x004C032D: 0x1E3C,\n\t0x006C032D: 0x1E3D,\n\t0x004D0301: 0x1E3E,\n\t0x006D0301: 0x1E3F,\n\t0x004D0307: 0x1E40,\n\t0x006D0307: 0x1E41,\n\t0x004D0323: 0x1E42,\n\t0x006D0323: 0x1E43,\n\t0x004E0307: 0x1E44,\n\t0x006E0307: 0x1E45,\n\t0x004E0323: 0x1E46,\n\t0x006E0323: 0x1E47,\n\t0x004E0331: 0x1E48,\n\t0x006E0331: 0x1E49,\n\t0x004E032D: 0x1E4A,\n\t0x006E032D: 0x1E4B,\n\t0x00D50301: 0x1E4C,\n\t0x00F50301: 0x1E4D,\n\t0x00D50308: 0x1E4E,\n\t0x00F50308: 0x1E4F,\n\t0x014C0300: 0x1E50,\n\t0x014D0300: 0x1E51,\n\t0x014C0301: 0x1E52,\n\t0x014D0301: 0x1E53,\n\t0x00500301: 0x1E54,\n\t0x00700301: 0x1E55,\n\t0x00500307: 0x1E56,\n\t0x00700307: 0x1E57,\n\t0x00520307: 0x1E58,\n\t0x00720307: 0x1E59,\n\t0x00520323: 0x1E5A,\n\t0x00720323: 0x1E5B,\n\t0x1E5A0304: 0x1E5C,\n\t0x1E5B0304: 0x1E5D,\n\t0x00520331: 0x1E5E,\n\t0x00720331: 0x1E5F,\n\t0x00530307: 0x1E60,\n\t0x00730307: 0x1E61,\n\t0x00530323: 0x1E62,\n\t0x00730323: 0x1E63,\n\t0x015A0307: 0x1E64,\n\t0x015B0307: 0x1E65,\n\t0x01600307: 0x1E66,\n\t0x01610307: 0x1E67,\n\t0x1E620307: 0x1E68,\n\t0x1E630307: 0x1E69,\n\t0x00540307: 0x1E6A,\n\t0x00740307: 0x1E6B,\n\t0x00540323: 0x1E6C,\n\t0x00740323: 0x1E6D,\n\t0x00540331: 0x1E6E,\n\t0x00740331: 0x1E6F,\n\t0x0054032D: 0x1E70,\n\t0x0074032D: 0x1E71,\n\t0x00550324: 0x1E72,\n\t0x00750324: 0x1E73,\n\t0x00550330: 0x1E74,\n\t0x00750330: 0x1E75,\n\t0x0055032D: 0x1E76,\n\t0x0075032D: 0x1E77,\n\t0x01680301: 0x1E78,\n\t0x01690301: 0x1E79,\n\t0x016A0308: 0x1E7A,\n\t0x016B0308: 0x1E7B,\n\t0x00560303: 0x1E7C,\n\t0x00760303: 0x1E7D,\n\t0x00560323: 0x1E7E,\n\t0x00760323: 0x1E7F,\n\t0x00570300: 0x1E80,\n\t0x00770300: 0x1E81,\n\t0x00570301: 0x1E82,\n\t0x00770301: 0x1E83,\n\t0x00570308: 0x1E84,\n\t0x00770308: 0x1E85,\n\t0x00570307: 0x1E86,\n\t0x00770307: 0x1E87,\n\t0x00570323: 0x1E88,\n\t0x00770323: 0x1E89,\n\t0x00580307: 0x1E8A,\n\t0x00780307: 0x1E8B,\n\t0x00580308: 0x1E8C,\n\t0x00780308: 0x1E8D,\n\t0x00590307: 0x1E8E,\n\t0x00790307: 0x1E8F,\n\t0x005A0302: 0x1E90,\n\t0x007A0302: 0x1E91,\n\t0x005A0323: 0x1E92,\n\t0x007A0323: 0x1E93,\n\t0x005A0331: 0x1E94,\n\t0x007A0331: 0x1E95,\n\t0x00680331: 0x1E96,\n\t0x00740308: 0x1E97,\n\t0x0077030A: 0x1E98,\n\t0x0079030A: 0x1E99,\n\t0x017F0307: 0x1E9B,\n\t0x00410323: 0x1EA0,\n\t0x00610323: 0x1EA1,\n\t0x00410309: 0x1EA2,\n\t0x00610309: 0x1EA3,\n\t0x00C20301: 0x1EA4,\n\t0x00E20301: 0x1EA5,\n\t0x00C20300: 0x1EA6,\n\t0x00E20300: 0x1EA7,\n\t0x00C20309: 0x1EA8,\n\t0x00E20309: 0x1EA9,\n\t0x00C20303: 0x1EAA,\n\t0x00E20303: 0x1EAB,\n\t0x1EA00302: 0x1EAC,\n\t0x1EA10302: 0x1EAD,\n\t0x01020301: 0x1EAE,\n\t0x01030301: 0x1EAF,\n\t0x01020300: 0x1EB0,\n\t0x01030300: 0x1EB1,\n\t0x01020309: 0x1EB2,\n\t0x01030309: 0x1EB3,\n\t0x01020303: 0x1EB4,\n\t0x01030303: 0x1EB5,\n\t0x1EA00306: 0x1EB6,\n\t0x1EA10306: 0x1EB7,\n\t0x00450323: 0x1EB8,\n\t0x00650323: 0x1EB9,\n\t0x00450309: 0x1EBA,\n\t0x00650309: 0x1EBB,\n\t0x00450303: 0x1EBC,\n\t0x00650303: 0x1EBD,\n\t0x00CA0301: 0x1EBE,\n\t0x00EA0301: 0x1EBF,\n\t0x00CA0300: 0x1EC0,\n\t0x00EA0300: 0x1EC1,\n\t0x00CA0309: 0x1EC2,\n\t0x00EA0309: 0x1EC3,\n\t0x00CA0303: 0x1EC4,\n\t0x00EA0303: 0x1EC5,\n\t0x1EB80302: 0x1EC6,\n\t0x1EB90302: 0x1EC7,\n\t0x00490309: 0x1EC8,\n\t0x00690309: 0x1EC9,\n\t0x00490323: 0x1ECA,\n\t0x00690323: 0x1ECB,\n\t0x004F0323: 0x1ECC,\n\t0x006F0323: 0x1ECD,\n\t0x004F0309: 0x1ECE,\n\t0x006F0309: 0x1ECF,\n\t0x00D40301: 0x1ED0,\n\t0x00F40301: 0x1ED1,\n\t0x00D40300: 0x1ED2,\n\t0x00F40300: 0x1ED3,\n\t0x00D40309: 0x1ED4,\n\t0x00F40309: 0x1ED5,\n\t0x00D40303: 0x1ED6,\n\t0x00F40303: 0x1ED7,\n\t0x1ECC0302: 0x1ED8,\n\t0x1ECD0302: 0x1ED9,\n\t0x01A00301: 0x1EDA,\n\t0x01A10301: 0x1EDB,\n\t0x01A00300: 0x1EDC,\n\t0x01A10300: 0x1EDD,\n\t0x01A00309: 0x1EDE,\n\t0x01A10309: 0x1EDF,\n\t0x01A00303: 0x1EE0,\n\t0x01A10303: 0x1EE1,\n\t0x01A00323: 0x1EE2,\n\t0x01A10323: 0x1EE3,\n\t0x00550323: 0x1EE4,\n\t0x00750323: 0x1EE5,\n\t0x00550309: 0x1EE6,\n\t0x00750309: 0x1EE7,\n\t0x01AF0301: 0x1EE8,\n\t0x01B00301: 0x1EE9,\n\t0x01AF0300: 0x1EEA,\n\t0x01B00300: 0x1EEB,\n\t0x01AF0309: 0x1EEC,\n\t0x01B00309: 0x1EED,\n\t0x01AF0303: 0x1EEE,\n\t0x01B00303: 0x1EEF,\n\t0x01AF0323: 0x1EF0,\n\t0x01B00323: 0x1EF1,\n\t0x00590300: 0x1EF2,\n\t0x00790300: 0x1EF3,\n\t0x00590323: 0x1EF4,\n\t0x00790323: 0x1EF5,\n\t0x00590309: 0x1EF6,\n\t0x00790309: 0x1EF7,\n\t0x00590303: 0x1EF8,\n\t0x00790303: 0x1EF9,\n\t0x03B10313: 0x1F00,\n\t0x03B10314: 0x1F01,\n\t0x1F000300: 0x1F02,\n\t0x1F010300: 0x1F03,\n\t0x1F000301: 0x1F04,\n\t0x1F010301: 0x1F05,\n\t0x1F000342: 0x1F06,\n\t0x1F010342: 0x1F07,\n\t0x03910313: 0x1F08,\n\t0x03910314: 0x1F09,\n\t0x1F080300: 0x1F0A,\n\t0x1F090300: 0x1F0B,\n\t0x1F080301: 0x1F0C,\n\t0x1F090301: 0x1F0D,\n\t0x1F080342: 0x1F0E,\n\t0x1F090342: 0x1F0F,\n\t0x03B50313: 0x1F10,\n\t0x03B50314: 0x1F11,\n\t0x1F100300: 0x1F12,\n\t0x1F110300: 0x1F13,\n\t0x1F100301: 0x1F14,\n\t0x1F110301: 0x1F15,\n\t0x03950313: 0x1F18,\n\t0x03950314: 0x1F19,\n\t0x1F180300: 0x1F1A,\n\t0x1F190300: 0x1F1B,\n\t0x1F180301: 0x1F1C,\n\t0x1F190301: 0x1F1D,\n\t0x03B70313: 0x1F20,\n\t0x03B70314: 0x1F21,\n\t0x1F200300: 0x1F22,\n\t0x1F210300: 0x1F23,\n\t0x1F200301: 0x1F24,\n\t0x1F210301: 0x1F25,\n\t0x1F200342: 0x1F26,\n\t0x1F210342: 0x1F27,\n\t0x03970313: 0x1F28,\n\t0x03970314: 0x1F29,\n\t0x1F280300: 0x1F2A,\n\t0x1F290300: 0x1F2B,\n\t0x1F280301: 0x1F2C,\n\t0x1F290301: 0x1F2D,\n\t0x1F280342: 0x1F2E,\n\t0x1F290342: 0x1F2F,\n\t0x03B90313: 0x1F30,\n\t0x03B90314: 0x1F31,\n\t0x1F300300: 0x1F32,\n\t0x1F310300: 0x1F33,\n\t0x1F300301: 0x1F34,\n\t0x1F310301: 0x1F35,\n\t0x1F300342: 0x1F36,\n\t0x1F310342: 0x1F37,\n\t0x03990313: 0x1F38,\n\t0x03990314: 0x1F39,\n\t0x1F380300: 0x1F3A,\n\t0x1F390300: 0x1F3B,\n\t0x1F380301: 0x1F3C,\n\t0x1F390301: 0x1F3D,\n\t0x1F380342: 0x1F3E,\n\t0x1F390342: 0x1F3F,\n\t0x03BF0313: 0x1F40,\n\t0x03BF0314: 0x1F41,\n\t0x1F400300: 0x1F42,\n\t0x1F410300: 0x1F43,\n\t0x1F400301: 0x1F44,\n\t0x1F410301: 0x1F45,\n\t0x039F0313: 0x1F48,\n\t0x039F0314: 0x1F49,\n\t0x1F480300: 0x1F4A,\n\t0x1F490300: 0x1F4B,\n\t0x1F480301: 0x1F4C,\n\t0x1F490301: 0x1F4D,\n\t0x03C50313: 0x1F50,\n\t0x03C50314: 0x1F51,\n\t0x1F500300: 0x1F52,\n\t0x1F510300: 0x1F53,\n\t0x1F500301: 0x1F54,\n\t0x1F510301: 0x1F55,\n\t0x1F500342: 0x1F56,\n\t0x1F510342: 0x1F57,\n\t0x03A50314: 0x1F59,\n\t0x1F590300: 0x1F5B,\n\t0x1F590301: 0x1F5D,\n\t0x1F590342: 0x1F5F,\n\t0x03C90313: 0x1F60,\n\t0x03C90314: 0x1F61,\n\t0x1F600300: 0x1F62,\n\t0x1F610300: 0x1F63,\n\t0x1F600301: 0x1F64,\n\t0x1F610301: 0x1F65,\n\t0x1F600342: 0x1F66,\n\t0x1F610342: 0x1F67,\n\t0x03A90313: 0x1F68,\n\t0x03A90314: 0x1F69,\n\t0x1F680300: 0x1F6A,\n\t0x1F690300: 0x1F6B,\n\t0x1F680301: 0x1F6C,\n\t0x1F690301: 0x1F6D,\n\t0x1F680342: 0x1F6E,\n\t0x1F690342: 0x1F6F,\n\t0x03B10300: 0x1F70,\n\t0x03B50300: 0x1F72,\n\t0x03B70300: 0x1F74,\n\t0x03B90300: 0x1F76,\n\t0x03BF0300: 0x1F78,\n\t0x03C50300: 0x1F7A,\n\t0x03C90300: 0x1F7C,\n\t0x1F000345: 0x1F80,\n\t0x1F010345: 0x1F81,\n\t0x1F020345: 0x1F82,\n\t0x1F030345: 0x1F83,\n\t0x1F040345: 0x1F84,\n\t0x1F050345: 0x1F85,\n\t0x1F060345: 0x1F86,\n\t0x1F070345: 0x1F87,\n\t0x1F080345: 0x1F88,\n\t0x1F090345: 0x1F89,\n\t0x1F0A0345: 0x1F8A,\n\t0x1F0B0345: 0x1F8B,\n\t0x1F0C0345: 0x1F8C,\n\t0x1F0D0345: 0x1F8D,\n\t0x1F0E0345: 0x1F8E,\n\t0x1F0F0345: 0x1F8F,\n\t0x1F200345: 0x1F90,\n\t0x1F210345: 0x1F91,\n\t0x1F220345: 0x1F92,\n\t0x1F230345: 0x1F93,\n\t0x1F240345: 0x1F94,\n\t0x1F250345: 0x1F95,\n\t0x1F260345: 0x1F96,\n\t0x1F270345: 0x1F97,\n\t0x1F280345: 0x1F98,\n\t0x1F290345: 0x1F99,\n\t0x1F2A0345: 0x1F9A,\n\t0x1F2B0345: 0x1F9B,\n\t0x1F2C0345: 0x1F9C,\n\t0x1F2D0345: 0x1F9D,\n\t0x1F2E0345: 0x1F9E,\n\t0x1F2F0345: 0x1F9F,\n\t0x1F600345: 0x1FA0,\n\t0x1F610345: 0x1FA1,\n\t0x1F620345: 0x1FA2,\n\t0x1F630345: 0x1FA3,\n\t0x1F640345: 0x1FA4,\n\t0x1F650345: 0x1FA5,\n\t0x1F660345: 0x1FA6,\n\t0x1F670345: 0x1FA7,\n\t0x1F680345: 0x1FA8,\n\t0x1F690345: 0x1FA9,\n\t0x1F6A0345: 0x1FAA,\n\t0x1F6B0345: 0x1FAB,\n\t0x1F6C0345: 0x1FAC,\n\t0x1F6D0345: 0x1FAD,\n\t0x1F6E0345: 0x1FAE,\n\t0x1F6F0345: 0x1FAF,\n\t0x03B10306: 0x1FB0,\n\t0x03B10304: 0x1FB1,\n\t0x1F700345: 0x1FB2,\n\t0x03B10345: 0x1FB3,\n\t0x03AC0345: 0x1FB4,\n\t0x03B10342: 0x1FB6,\n\t0x1FB60345: 0x1FB7,\n\t0x03910306: 0x1FB8,\n\t0x03910304: 0x1FB9,\n\t0x03910300: 0x1FBA,\n\t0x03910345: 0x1FBC,\n\t0x00A80342: 0x1FC1,\n\t0x1F740345: 0x1FC2,\n\t0x03B70345: 0x1FC3,\n\t0x03AE0345: 0x1FC4,\n\t0x03B70342: 0x1FC6,\n\t0x1FC60345: 0x1FC7,\n\t0x03950300: 0x1FC8,\n\t0x03970300: 0x1FCA,\n\t0x03970345: 0x1FCC,\n\t0x1FBF0300: 0x1FCD,\n\t0x1FBF0301: 0x1FCE,\n\t0x1FBF0342: 0x1FCF,\n\t0x03B90306: 0x1FD0,\n\t0x03B90304: 0x1FD1,\n\t0x03CA0300: 0x1FD2,\n\t0x03B90342: 0x1FD6,\n\t0x03CA0342: 0x1FD7,\n\t0x03990306: 0x1FD8,\n\t0x03990304: 0x1FD9,\n\t0x03990300: 0x1FDA,\n\t0x1FFE0300: 0x1FDD,\n\t0x1FFE0301: 0x1FDE,\n\t0x1FFE0342: 0x1FDF,\n\t0x03C50306: 0x1FE0,\n\t0x03C50304: 0x1FE1,\n\t0x03CB0300: 0x1FE2,\n\t0x03C10313: 0x1FE4,\n\t0x03C10314: 0x1FE5,\n\t0x03C50342: 0x1FE6,\n\t0x03CB0342: 0x1FE7,\n\t0x03A50306: 0x1FE8,\n\t0x03A50304: 0x1FE9,\n\t0x03A50300: 0x1FEA,\n\t0x03A10314: 0x1FEC,\n\t0x00A80300: 0x1FED,\n\t0x1F7C0345: 0x1FF2,\n\t0x03C90345: 0x1FF3,\n\t0x03CE0345: 0x1FF4,\n\t0x03C90342: 0x1FF6,\n\t0x1FF60345: 0x1FF7,\n\t0x039F0300: 0x1FF8,\n\t0x03A90300: 0x1FFA,\n\t0x03A90345: 0x1FFC,\n\t0x21900338: 0x219A,\n\t0x21920338: 0x219B,\n\t0x21940338: 0x21AE,\n\t0x21D00338: 0x21CD,\n\t0x21D40338: 0x21CE,\n\t0x21D20338: 0x21CF,\n\t0x22030338: 0x2204,\n\t0x22080338: 0x2209,\n\t0x220B0338: 0x220C,\n\t0x22230338: 0x2224,\n\t0x22250338: 0x2226,\n\t0x223C0338: 0x2241,\n\t0x22430338: 0x2244,\n\t0x22450338: 0x2247,\n\t0x22480338: 0x2249,\n\t0x003D0338: 0x2260,\n\t0x22610338: 0x2262,\n\t0x224D0338: 0x226D,\n\t0x003C0338: 0x226E,\n\t0x003E0338: 0x226F,\n\t0x22640338: 0x2270,\n\t0x22650338: 0x2271,\n\t0x22720338: 0x2274,\n\t0x22730338: 0x2275,\n\t0x22760338: 0x2278,\n\t0x22770338: 0x2279,\n\t0x227A0338: 0x2280,\n\t0x227B0338: 0x2281,\n\t0x22820338: 0x2284,\n\t0x22830338: 0x2285,\n\t0x22860338: 0x2288,\n\t0x22870338: 0x2289,\n\t0x22A20338: 0x22AC,\n\t0x22A80338: 0x22AD,\n\t0x22A90338: 0x22AE,\n\t0x22AB0338: 0x22AF,\n\t0x227C0338: 0x22E0,\n\t0x227D0338: 0x22E1,\n\t0x22910338: 0x22E2,\n\t0x22920338: 0x22E3,\n\t0x22B20338: 0x22EA,\n\t0x22B30338: 0x22EB,\n\t0x22B40338: 0x22EC,\n\t0x22B50338: 0x22ED,\n\t0x304B3099: 0x304C,\n\t0x304D3099: 0x304E,\n\t0x304F3099: 0x3050,\n\t0x30513099: 0x3052,\n\t0x30533099: 0x3054,\n\t0x30553099: 0x3056,\n\t0x30573099: 0x3058,\n\t0x30593099: 0x305A,\n\t0x305B3099: 0x305C,\n\t0x305D3099: 0x305E,\n\t0x305F3099: 0x3060,\n\t0x30613099: 0x3062,\n\t0x30643099: 0x3065,\n\t0x30663099: 0x3067,\n\t0x30683099: 0x3069,\n\t0x306F3099: 0x3070,\n\t0x306F309A: 0x3071,\n\t0x30723099: 0x3073,\n\t0x3072309A: 0x3074,\n\t0x30753099: 0x3076,\n\t0x3075309A: 0x3077,\n\t0x30783099: 0x3079,\n\t0x3078309A: 0x307A,\n\t0x307B3099: 0x307C,\n\t0x307B309A: 0x307D,\n\t0x30463099: 0x3094,\n\t0x309D3099: 0x309E,\n\t0x30AB3099: 0x30AC,\n\t0x30AD3099: 0x30AE,\n\t0x30AF3099: 0x30B0,\n\t0x30B13099: 0x30B2,\n\t0x30B33099: 0x30B4,\n\t0x30B53099: 0x30B6,\n\t0x30B73099: 0x30B8,\n\t0x30B93099: 0x30BA,\n\t0x30BB3099: 0x30BC,\n\t0x30BD3099: 0x30BE,\n\t0x30BF3099: 0x30C0,\n\t0x30C13099: 0x30C2,\n\t0x30C43099: 0x30C5,\n\t0x30C63099: 0x30C7,\n\t0x30C83099: 0x30C9,\n\t0x30CF3099: 0x30D0,\n\t0x30CF309A: 0x30D1,\n\t0x30D23099: 0x30D3,\n\t0x30D2309A: 0x30D4,\n\t0x30D53099: 0x30D6,\n\t0x30D5309A: 0x30D7,\n\t0x30D83099: 0x30D9,\n\t0x30D8309A: 0x30DA,\n\t0x30DB3099: 0x30DC,\n\t0x30DB309A: 0x30DD,\n\t0x30A63099: 0x30F4,\n\t0x30EF3099: 0x30F7,\n\t0x30F03099: 0x30F8,\n\t0x30F13099: 0x30F9,\n\t0x30F23099: 0x30FA,\n\t0x30FD3099: 0x30FE,\n\t0x109910BA: 0x1109A,\n\t0x109B10BA: 0x1109C,\n\t0x10A510BA: 0x110AB,\n\t0x11311127: 0x1112E,\n\t0x11321127: 0x1112F,\n\t0x1347133E: 0x1134B,\n\t0x13471357: 0x1134C,\n\t0x14B914BA: 0x114BB,\n\t0x14B914B0: 0x114BC,\n\t0x14B914BD: 0x114BE,\n\t0x15B815AF: 0x115BA,\n\t0x15B915AF: 0x115BB,\n}\n\n// Total size of tables: 53KB (54006 bytes)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// Reset implements the Reset method of the transform.Transformer interface.\nfunc (Form) Reset() {}\n\n// Transform implements the Transform method of the transform.Transformer\n// interface. It may need to write segments of up to MaxSegmentSize at once.\n// Users should either catch ErrShortDst and allow dst to grow or have dst be at\n// least of size MaxTransformChunkSize to be guaranteed of progress.\nfunc (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tn := 0\n\t// Cap the maximum number of src bytes to check.\n\tb := src\n\teof := atEOF\n\tif ns := len(dst); ns < len(b) {\n\t\terr = transform.ErrShortDst\n\t\teof = false\n\t\tb = b[:ns]\n\t}\n\ti, ok := formTable[f].quickSpan(inputBytes(b), n, len(b), eof)\n\tn += copy(dst[n:], b[n:i])\n\tif !ok {\n\t\tnDst, nSrc, err = f.transform(dst[n:], src[n:], atEOF)\n\t\treturn nDst + n, nSrc + n, err\n\t}\n\tif n < len(src) && !atEOF {\n\t\terr = transform.ErrShortSrc\n\t}\n\treturn n, n, err\n}\n\nfunc flushTransform(rb *reorderBuffer) bool {\n\t// Write out (must fully fit in dst, or else it is an ErrShortDst).\n\tif len(rb.out) < rb.nrune*utf8.UTFMax {\n\t\treturn false\n\t}\n\trb.out = rb.out[rb.flushCopy(rb.out):]\n\treturn true\n}\n\nvar errs = []error{nil, transform.ErrShortDst, transform.ErrShortSrc}\n\n// transform implements the transform.Transformer interface. It is only called\n// when quickSpan does not pass for a given string.\nfunc (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// TODO: get rid of reorderBuffer. See CL 23460044.\n\trb := reorderBuffer{}\n\trb.init(f, src)\n\tfor {\n\t\t// Load segment into reorder buffer.\n\t\trb.setFlusher(dst[nDst:], flushTransform)\n\t\tend := decomposeSegment(&rb, nSrc, atEOF)\n\t\tif end < 0 {\n\t\t\treturn nDst, nSrc, errs[-end]\n\t\t}\n\t\tnDst = len(dst) - len(rb.out)\n\t\tnSrc = end\n\n\t\t// Next quickSpan.\n\t\tend = rb.nsrc\n\t\teof := atEOF\n\t\tif n := nSrc + len(dst) - nDst; n < end {\n\t\t\terr = transform.ErrShortDst\n\t\t\tend = n\n\t\t\teof = false\n\t\t}\n\t\tend, ok := rb.f.quickSpan(rb.src, nSrc, end, eof)\n\t\tn := copy(dst[nDst:], rb.src.bytes[nSrc:end])\n\t\tnSrc += n\n\t\tnDst += n\n\t\tif ok {\n\t\t\tif n < rb.nsrc && !atEOF {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t}\n\t\t\treturn nDst, nSrc, err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/trie.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\ntype valueRange struct {\n\tvalue  uint16 // header: value:stride\n\tlo, hi byte   // header: lo:n\n}\n\ntype sparseBlocks struct {\n\tvalues []valueRange\n\toffset []uint16\n}\n\nvar nfcSparse = sparseBlocks{\n\tvalues: nfcSparseValues[:],\n\toffset: nfcSparseOffset[:],\n}\n\nvar nfkcSparse = sparseBlocks{\n\tvalues: nfkcSparseValues[:],\n\toffset: nfkcSparseOffset[:],\n}\n\nvar (\n\tnfcData  = newNfcTrie(0)\n\tnfkcData = newNfkcTrie(0)\n)\n\n// lookupValue determines the type of block n and looks up the value for b.\n// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block\n// is a list of ranges with an accompanying value. Given a matching range r,\n// the value for b is by r.value + (b - r.lo) * stride.\nfunc (t *sparseBlocks) lookup(n uint32, b byte) uint16 {\n\toffset := t.offset[n]\n\theader := t.values[offset]\n\tlo := offset + 1\n\thi := lo + uint16(header.lo)\n\tfor lo < hi {\n\t\tm := lo + (hi-lo)/2\n\t\tr := t.values[m]\n\t\tif r.lo <= b && b <= r.hi {\n\t\t\treturn r.value + uint16(b-r.lo)*header.value\n\t\t}\n\t\tif b < r.lo {\n\t\t\thi = m\n\t\t} else {\n\t\t\tlo = m + 1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/norm/triegen.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\n// Trie table generator.\n// Used by make*tables tools to generate a go file with trie data structures\n// for mapping UTF-8 to a 16-bit value. All but the last byte in a UTF-8 byte\n// sequence are used to lookup offsets in the index table to be used for the\n// next byte. The last byte is used to index into a table with 16-bit values.\n\npackage main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\nconst maxSparseEntries = 16\n\ntype normCompacter struct {\n\tsparseBlocks [][]uint64\n\tsparseOffset []uint16\n\tsparseCount  int\n\tname         string\n}\n\nfunc mostFrequentStride(a []uint64) int {\n\tcounts := make(map[int]int)\n\tvar v int\n\tfor _, x := range a {\n\t\tif stride := int(x) - v; v != 0 && stride >= 0 {\n\t\t\tcounts[stride]++\n\t\t}\n\t\tv = int(x)\n\t}\n\tvar maxs, maxc int\n\tfor stride, cnt := range counts {\n\t\tif cnt > maxc || (cnt == maxc && stride < maxs) {\n\t\t\tmaxs, maxc = stride, cnt\n\t\t}\n\t}\n\treturn maxs\n}\n\nfunc countSparseEntries(a []uint64) int {\n\tstride := mostFrequentStride(a)\n\tvar v, count int\n\tfor _, tv := range a {\n\t\tif int(tv)-v != stride {\n\t\t\tif tv != 0 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tv = int(tv)\n\t}\n\treturn count\n}\n\nfunc (c *normCompacter) Size(v []uint64) (sz int, ok bool) {\n\tif n := countSparseEntries(v); n <= maxSparseEntries {\n\t\treturn (n+1)*4 + 2, true\n\t}\n\treturn 0, false\n}\n\nfunc (c *normCompacter) Store(v []uint64) uint32 {\n\th := uint32(len(c.sparseOffset))\n\tc.sparseBlocks = append(c.sparseBlocks, v)\n\tc.sparseOffset = append(c.sparseOffset, uint16(c.sparseCount))\n\tc.sparseCount += countSparseEntries(v) + 1\n\treturn h\n}\n\nfunc (c *normCompacter) Handler() string {\n\treturn c.name + \"Sparse.lookup\"\n}\n\nfunc (c *normCompacter) Print(w io.Writer) (retErr error) {\n\tp := func(f string, x ...interface{}) {\n\t\tif _, err := fmt.Fprintf(w, f, x...); retErr == nil && err != nil {\n\t\t\tretErr = err\n\t\t}\n\t}\n\n\tls := len(c.sparseBlocks)\n\tp(\"// %sSparseOffset: %d entries, %d bytes\\n\", c.name, ls, ls*2)\n\tp(\"var %sSparseOffset = %#v\\n\\n\", c.name, c.sparseOffset)\n\n\tns := c.sparseCount\n\tp(\"// %sSparseValues: %d entries, %d bytes\\n\", c.name, ns, ns*4)\n\tp(\"var %sSparseValues = [%d]valueRange {\", c.name, ns)\n\tfor i, b := range c.sparseBlocks {\n\t\tp(\"\\n// Block %#x, offset %#x\", i, c.sparseOffset[i])\n\t\tvar v int\n\t\tstride := mostFrequentStride(b)\n\t\tn := countSparseEntries(b)\n\t\tp(\"\\n{value:%#04x,lo:%#02x},\", stride, uint8(n))\n\t\tfor i, nv := range b {\n\t\t\tif int(nv)-v != stride {\n\t\t\t\tif v != 0 {\n\t\t\t\t\tp(\",hi:%#02x},\", 0x80+i-1)\n\t\t\t\t}\n\t\t\t\tif nv != 0 {\n\t\t\t\t\tp(\"\\n{value:%#04x,lo:%#02x\", nv, 0x80+i)\n\t\t\t\t}\n\t\t\t}\n\t\t\tv = int(nv)\n\t\t}\n\t\tif v != 0 {\n\t\t\tp(\",hi:%#02x},\", 0x80+len(b)-1)\n\t\t}\n\t}\n\tp(\"\\n}\\n\\n\")\n\treturn\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/rangetable/gen.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build ignore\n\npackage main\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"reflect\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"golang.org/x/text/collate\"\n\t\"golang.org/x/text/internal/gen\"\n\t\"golang.org/x/text/internal/ucd\"\n\t\"golang.org/x/text/language\"\n\t\"golang.org/x/text/unicode/rangetable\"\n)\n\nvar versionList = flag.String(\"versions\", \"\",\n\t\"list of versions for which to generate RangeTables\")\n\nconst bootstrapMessage = `No versions specified.\nTo bootstrap the code generation, run:\n\tgo run gen.go --versions=4.1.0,5.0.0,6.0.0,6.1.0,6.2.0,6.3.0,7.0.0\n\nand ensure that the latest versions are included by checking:\n\thttp://www.unicode.org/Public/`\n\nfunc getVersions() []string {\n\tif *versionList == \"\" {\n\t\tlog.Fatal(bootstrapMessage)\n\t}\n\n\tc := collate.New(language.Und, collate.Numeric)\n\tversions := strings.Split(*versionList, \",\")\n\tc.SortStrings(versions)\n\n\t// Ensure that at least the current version is included.\n\tfor _, v := range versions {\n\t\tif v == gen.UnicodeVersion() {\n\t\t\treturn versions\n\t\t}\n\t}\n\n\tversions = append(versions, gen.UnicodeVersion())\n\tc.SortStrings(versions)\n\treturn versions\n}\n\nfunc main() {\n\tgen.Init()\n\n\tversions := getVersions()\n\n\tw := &bytes.Buffer{}\n\n\tfmt.Fprintf(w, \"//go:generate go run gen.go --versions=%s\\n\\n\", strings.Join(versions, \",\"))\n\tfmt.Fprintf(w, \"import \\\"unicode\\\"\\n\\n\")\n\n\tvstr := func(s string) string { return strings.Replace(s, \".\", \"_\", -1) }\n\n\tfmt.Fprintf(w, \"var assigned = map[string]*unicode.RangeTable{\\n\")\n\tfor _, v := range versions {\n\t\tfmt.Fprintf(w, \"\\t%q: assigned%s,\\n\", v, vstr(v))\n\t}\n\tfmt.Fprintf(w, \"}\\n\\n\")\n\n\tvar size int\n\tfor _, v := range versions {\n\t\tassigned := []rune{}\n\n\t\tr := gen.Open(\"http://www.unicode.org/Public/\", \"\", v+\"/ucd/UnicodeData.txt\")\n\t\tucd.Parse(r, func(p *ucd.Parser) {\n\t\t\tassigned = append(assigned, p.Rune(0))\n\t\t})\n\n\t\trt := rangetable.New(assigned...)\n\t\tsz := int(reflect.TypeOf(unicode.RangeTable{}).Size())\n\t\tsz += int(reflect.TypeOf(unicode.Range16{}).Size()) * len(rt.R16)\n\t\tsz += int(reflect.TypeOf(unicode.Range32{}).Size()) * len(rt.R32)\n\n\t\tfmt.Fprintf(w, \"// size %d bytes (%d KiB)\\n\", sz, sz/1024)\n\t\tfmt.Fprintf(w, \"var assigned%s = \", vstr(v))\n\t\tprint(w, rt)\n\n\t\tsize += sz\n\t}\n\n\tfmt.Fprintf(w, \"// Total size %d bytes (%d KiB)\\n\", size, size/1024)\n\n\tgen.WriteVersionedGoFile(\"tables.go\", \"rangetable\", w.Bytes())\n}\n\nfunc print(w io.Writer, rt *unicode.RangeTable) {\n\tfmt.Fprintln(w, \"&unicode.RangeTable{\")\n\tfmt.Fprintln(w, \"\\tR16: []unicode.Range16{\")\n\tfor _, r := range rt.R16 {\n\t\tfmt.Fprintf(w, \"\\t\\t{%#04x, %#04x, %d},\\n\", r.Lo, r.Hi, r.Stride)\n\t}\n\tfmt.Fprintln(w, \"\\t},\")\n\tfmt.Fprintln(w, \"\\tR32: []unicode.Range32{\")\n\tfor _, r := range rt.R32 {\n\t\tfmt.Fprintf(w, \"\\t\\t{%#08x, %#08x, %d},\\n\", r.Lo, r.Hi, r.Stride)\n\t}\n\tfmt.Fprintln(w, \"\\t},\")\n\tfmt.Fprintf(w, \"\\tLatinOffset: %d,\\n\", rt.LatinOffset)\n\tfmt.Fprintf(w, \"}\\n\\n\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/rangetable/merge.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage rangetable\n\nimport (\n\t\"unicode\"\n)\n\n// atEnd is used to mark a completed iteration.\nconst atEnd = unicode.MaxRune + 1\n\n// Merge returns a new RangeTable that is the union of the given tables.\n// It can also be used to compact user-created RangeTables. The entries in\n// R16 and R32 for any given RangeTable should be sorted and non-overlapping.\n//\n// A lookup in the resulting table can be several times faster than using In\n// directly on the ranges. Merge is an expensive operation, however, and only\n// makes sense if one intends to use the result for more than a couple of\n// hundred lookups.\nfunc Merge(ranges ...*unicode.RangeTable) *unicode.RangeTable {\n\trt := &unicode.RangeTable{}\n\tif len(ranges) == 0 {\n\t\treturn rt\n\t}\n\n\titer := tablesIter(make([]tableIndex, len(ranges)))\n\n\tfor i, t := range ranges {\n\t\titer[i] = tableIndex{t, 0, atEnd}\n\t\tif len(t.R16) > 0 {\n\t\t\titer[i].next = rune(t.R16[0].Lo)\n\t\t}\n\t}\n\n\tif r0 := iter.next16(); r0.Stride != 0 {\n\t\tfor {\n\t\t\tr1 := iter.next16()\n\t\t\tif r1.Stride == 0 {\n\t\t\t\trt.R16 = append(rt.R16, r0)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tstride := r1.Lo - r0.Hi\n\t\t\tif (r1.Lo == r1.Hi || stride == r1.Stride) && (r0.Lo == r0.Hi || stride == r0.Stride) {\n\t\t\t\t// Fully merge the next range into the previous one.\n\t\t\t\tr0.Hi, r0.Stride = r1.Hi, stride\n\t\t\t\tcontinue\n\t\t\t} else if stride == r0.Stride {\n\t\t\t\t// Move the first element of r1 to r0. This may eliminate an\n\t\t\t\t// entry.\n\t\t\t\tr0.Hi = r1.Lo\n\t\t\t\tr0.Stride = stride\n\t\t\t\tr1.Lo = r1.Lo + r1.Stride\n\t\t\t\tif r1.Lo > r1.Hi {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\trt.R16 = append(rt.R16, r0)\n\t\t\tr0 = r1\n\t\t}\n\t}\n\n\tfor i, t := range ranges {\n\t\titer[i] = tableIndex{t, 0, atEnd}\n\t\tif len(t.R32) > 0 {\n\t\t\titer[i].next = rune(t.R32[0].Lo)\n\t\t}\n\t}\n\n\tif r0 := iter.next32(); r0.Stride != 0 {\n\t\tfor {\n\t\t\tr1 := iter.next32()\n\t\t\tif r1.Stride == 0 {\n\t\t\t\trt.R32 = append(rt.R32, r0)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tstride := r1.Lo - r0.Hi\n\t\t\tif (r1.Lo == r1.Hi || stride == r1.Stride) && (r0.Lo == r0.Hi || stride == r0.Stride) {\n\t\t\t\t// Fully merge the next range into the previous one.\n\t\t\t\tr0.Hi, r0.Stride = r1.Hi, stride\n\t\t\t\tcontinue\n\t\t\t} else if stride == r0.Stride {\n\t\t\t\t// Move the first element of r1 to r0. This may eliminate an\n\t\t\t\t// entry.\n\t\t\t\tr0.Hi = r1.Lo\n\t\t\t\tr1.Lo = r1.Lo + r1.Stride\n\t\t\t\tif r1.Lo > r1.Hi {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\trt.R32 = append(rt.R32, r0)\n\t\t\tr0 = r1\n\t\t}\n\t}\n\n\tfor i := 0; i < len(rt.R16) && rt.R16[i].Hi <= unicode.MaxLatin1; i++ {\n\t\trt.LatinOffset = i + 1\n\t}\n\n\treturn rt\n}\n\ntype tableIndex struct {\n\tt    *unicode.RangeTable\n\tp    uint32\n\tnext rune\n}\n\ntype tablesIter []tableIndex\n\n// sortIter does an insertion sort using the next field of tableIndex. Insertion\n// sort is a good sorting algorithm for this case.\nfunc sortIter(t []tableIndex) {\n\tfor i := range t {\n\t\tfor j := i; j > 0 && t[j-1].next > t[j].next; j-- {\n\t\t\tt[j], t[j-1] = t[j-1], t[j]\n\t\t}\n\t}\n}\n\n// next16 finds the ranged to be added to the table. If ranges overlap between\n// multiple tables it clips the result to a non-overlapping range if the\n// elements are not fully subsumed. It returns a zero range if there are no more\n// ranges.\nfunc (ti tablesIter) next16() unicode.Range16 {\n\tsortIter(ti)\n\n\tt0 := ti[0]\n\tif t0.next == atEnd {\n\t\treturn unicode.Range16{}\n\t}\n\tr0 := t0.t.R16[t0.p]\n\tr0.Lo = uint16(t0.next)\n\n\t// We restrict the Hi of the current range if it overlaps with another range.\n\tfor i := range ti {\n\t\ttn := ti[i]\n\t\t// Since our tableIndices are sorted by next, we can break if the there\n\t\t// is no overlap. The first value of a next range can always be merged\n\t\t// into the current one, so we can break in case of equality as well.\n\t\tif rune(r0.Hi) <= tn.next {\n\t\t\tbreak\n\t\t}\n\t\trn := tn.t.R16[tn.p]\n\t\trn.Lo = uint16(tn.next)\n\n\t\t// Limit r0.Hi based on next ranges in list, but allow it to overlap\n\t\t// with ranges as long as it subsumes it.\n\t\tm := (rn.Lo - r0.Lo) % r0.Stride\n\t\tif m == 0 && (rn.Stride == r0.Stride || rn.Lo == rn.Hi) {\n\t\t\t// Overlap, take the min of the two Hi values: for simplicity's sake\n\t\t\t// we only process one range at a time.\n\t\t\tif r0.Hi > rn.Hi {\n\t\t\t\tr0.Hi = rn.Hi\n\t\t\t}\n\t\t} else {\n\t\t\t// Not a compatible stride. Set to the last possible value before\n\t\t\t// rn.Lo, but ensure there is at least one value.\n\t\t\tif x := rn.Lo - m; r0.Lo <= x {\n\t\t\t\tr0.Hi = x\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Update the next values for each table.\n\tfor i := range ti {\n\t\ttn := &ti[i]\n\t\tif rune(r0.Hi) < tn.next {\n\t\t\tbreak\n\t\t}\n\t\trn := tn.t.R16[tn.p]\n\t\tstride := rune(rn.Stride)\n\t\ttn.next += stride * (1 + ((rune(r0.Hi) - tn.next) / stride))\n\t\tif rune(rn.Hi) < tn.next {\n\t\t\tif tn.p++; int(tn.p) == len(tn.t.R16) {\n\t\t\t\ttn.next = atEnd\n\t\t\t} else {\n\t\t\t\ttn.next = rune(tn.t.R16[tn.p].Lo)\n\t\t\t}\n\t\t}\n\t}\n\n\tif r0.Lo == r0.Hi {\n\t\tr0.Stride = 1\n\t}\n\n\treturn r0\n}\n\n// next32 finds the ranged to be added to the table. If ranges overlap between\n// multiple tables it clips the result to a non-overlapping range if the\n// elements are not fully subsumed. It returns a zero range if there are no more\n// ranges.\nfunc (ti tablesIter) next32() unicode.Range32 {\n\tsortIter(ti)\n\n\tt0 := ti[0]\n\tif t0.next == atEnd {\n\t\treturn unicode.Range32{}\n\t}\n\tr0 := t0.t.R32[t0.p]\n\tr0.Lo = uint32(t0.next)\n\n\t// We restrict the Hi of the current range if it overlaps with another range.\n\tfor i := range ti {\n\t\ttn := ti[i]\n\t\t// Since our tableIndices are sorted by next, we can break if the there\n\t\t// is no overlap. The first value of a next range can always be merged\n\t\t// into the current one, so we can break in case of equality as well.\n\t\tif rune(r0.Hi) <= tn.next {\n\t\t\tbreak\n\t\t}\n\t\trn := tn.t.R32[tn.p]\n\t\trn.Lo = uint32(tn.next)\n\n\t\t// Limit r0.Hi based on next ranges in list, but allow it to overlap\n\t\t// with ranges as long as it subsumes it.\n\t\tm := (rn.Lo - r0.Lo) % r0.Stride\n\t\tif m == 0 && (rn.Stride == r0.Stride || rn.Lo == rn.Hi) {\n\t\t\t// Overlap, take the min of the two Hi values: for simplicity's sake\n\t\t\t// we only process one range at a time.\n\t\t\tif r0.Hi > rn.Hi {\n\t\t\t\tr0.Hi = rn.Hi\n\t\t\t}\n\t\t} else {\n\t\t\t// Not a compatible stride. Set to the last possible value before\n\t\t\t// rn.Lo, but ensure there is at least one value.\n\t\t\tif x := rn.Lo - m; r0.Lo <= x {\n\t\t\t\tr0.Hi = x\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Update the next values for each table.\n\tfor i := range ti {\n\t\ttn := &ti[i]\n\t\tif rune(r0.Hi) < tn.next {\n\t\t\tbreak\n\t\t}\n\t\trn := tn.t.R32[tn.p]\n\t\tstride := rune(rn.Stride)\n\t\ttn.next += stride * (1 + ((rune(r0.Hi) - tn.next) / stride))\n\t\tif rune(rn.Hi) < tn.next {\n\t\t\tif tn.p++; int(tn.p) == len(tn.t.R32) {\n\t\t\t\ttn.next = atEnd\n\t\t\t} else {\n\t\t\t\ttn.next = rune(tn.t.R32[tn.p].Lo)\n\t\t\t}\n\t\t}\n\t}\n\n\tif r0.Lo == r0.Hi {\n\t\tr0.Stride = 1\n\t}\n\n\treturn r0\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/rangetable/rangetable.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package rangetable provides utilities for creating and inspecting\n// unicode.RangeTables.\npackage rangetable\n\nimport (\n\t\"sort\"\n\t\"unicode\"\n)\n\n// New creates a RangeTable from the given runes, which may contain duplicates.\nfunc New(r ...rune) *unicode.RangeTable {\n\tif len(r) == 0 {\n\t\treturn &unicode.RangeTable{}\n\t}\n\n\tsort.Sort(byRune(r))\n\n\t// Remove duplicates.\n\tk := 1\n\tfor i := 1; i < len(r); i++ {\n\t\tif r[k-1] != r[i] {\n\t\t\tr[k] = r[i]\n\t\t\tk++\n\t\t}\n\t}\n\n\tvar rt unicode.RangeTable\n\tfor _, r := range r[:k] {\n\t\tif r <= 0xFFFF {\n\t\t\trt.R16 = append(rt.R16, unicode.Range16{Lo: uint16(r), Hi: uint16(r), Stride: 1})\n\t\t} else {\n\t\t\trt.R32 = append(rt.R32, unicode.Range32{Lo: uint32(r), Hi: uint32(r), Stride: 1})\n\t\t}\n\t}\n\n\t// Optimize RangeTable.\n\treturn Merge(&rt)\n}\n\ntype byRune []rune\n\nfunc (r byRune) Len() int           { return len(r) }\nfunc (r byRune) Swap(i, j int)      { r[i], r[j] = r[j], r[i] }\nfunc (r byRune) Less(i, j int) bool { return r[i] < r[j] }\n\n// Visit visits all runes in the given RangeTable in order, calling fn for each.\nfunc Visit(rt *unicode.RangeTable, fn func(rune)) {\n\tfor _, r16 := range rt.R16 {\n\t\tfor r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) {\n\t\t\tfn(r)\n\t\t}\n\t}\n\tfor _, r32 := range rt.R32 {\n\t\tfor r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) {\n\t\t\tfn(r)\n\t\t}\n\t}\n}\n\n// Assigned returns a RangeTable with all assigned code points for a given\n// Unicode version. This includes graphic, format, control, and private-use\n// characters. It returns nil if the data for the given version is not\n// available.\nfunc Assigned(version string) *unicode.RangeTable {\n\treturn assigned[version]\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/rangetable/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// +build go1.10\n\npackage rangetable\n\n//go:generate go run gen.go --versions=4.1.0,5.1.0,5.2.0,5.0.0,6.1.0,6.2.0,6.3.0,6.0.0,7.0.0,8.0.0,9.0.0,10.0.0\n\nimport \"unicode\"\n\nvar assigned = map[string]*unicode.RangeTable{\n\t\"4.1.0\":  assigned4_1_0,\n\t\"5.1.0\":  assigned5_1_0,\n\t\"5.2.0\":  assigned5_2_0,\n\t\"5.0.0\":  assigned5_0_0,\n\t\"6.1.0\":  assigned6_1_0,\n\t\"6.2.0\":  assigned6_2_0,\n\t\"6.3.0\":  assigned6_3_0,\n\t\"6.0.0\":  assigned6_0_0,\n\t\"7.0.0\":  assigned7_0_0,\n\t\"8.0.0\":  assigned8_0_0,\n\t\"9.0.0\":  assigned9_0_0,\n\t\"10.0.0\": assigned10_0_0,\n}\n\n// size 2924 bytes (2 KiB)\nvar assigned4_1_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0241, 1},\n\t\t{0x0250, 0x036f, 1},\n\t\t{0x0374, 0x0375, 1},\n\t\t{0x037a, 0x037e, 4},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x03ce, 1},\n\t\t{0x03d0, 0x0486, 1},\n\t\t{0x0488, 0x04ce, 1},\n\t\t{0x04d0, 0x04f9, 1},\n\t\t{0x0500, 0x050f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05b9, 1},\n\t\t{0x05bb, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x060b, 0x0615, 1},\n\t\t{0x061b, 0x061e, 3},\n\t\t{0x061f, 0x0621, 2},\n\t\t{0x0622, 0x063a, 1},\n\t\t{0x0640, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x076d, 1},\n\t\t{0x0780, 0x07b1, 1},\n\t\t{0x0901, 0x0939, 1},\n\t\t{0x093c, 0x094d, 1},\n\t\t{0x0950, 0x0954, 1},\n\t\t{0x0958, 0x0970, 1},\n\t\t{0x097d, 0x0981, 4},\n\t\t{0x0982, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fa, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a59, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a74, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b43, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b61, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd7, 0x0be6, 15},\n\t\t{0x0be7, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3e, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c60, 0x0c61, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce6, 5},\n\t\t{0x0ce7, 0x0cef, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3e, 0x0d43, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d66, 5},\n\t\t{0x0d67, 0x0d6f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6a, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fcf, 0x0fd1, 1},\n\t\t{0x1000, 0x1021, 1},\n\t\t{0x1023, 0x1027, 1},\n\t\t{0x1029, 0x102a, 1},\n\t\t{0x102c, 0x1032, 1},\n\t\t{0x1036, 0x1039, 1},\n\t\t{0x1040, 0x1059, 1},\n\t\t{0x10a0, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1159, 1},\n\t\t{0x115f, 0x11a2, 1},\n\t\t{0x11a8, 0x11f9, 1},\n\t\t{0x1200, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1401, 0x1676, 1},\n\t\t{0x1680, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18a9, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19a9, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19d9, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a1f, 1},\n\t\t{0x1d00, 0x1dc3, 1},\n\t\t{0x1e00, 0x1e9b, 1},\n\t\t{0x1ea0, 0x1ef9, 1},\n\t\t{0x1f00, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2063, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b5, 1},\n\t\t{0x20d0, 0x20eb, 1},\n\t\t{0x2100, 0x214c, 1},\n\t\t{0x2153, 0x2183, 1},\n\t\t{0x2190, 0x23db, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x269c, 1},\n\t\t{0x26a0, 0x26b1, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x2758, 2},\n\t\t{0x2759, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27c6, 1},\n\t\t{0x27d0, 0x27eb, 1},\n\t\t{0x27f0, 0x2b13, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c80, 0x2cea, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2e00, 0x2e17, 1},\n\t\t{0x2e1c, 0x2e1d, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312c, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31cf, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x3243, 1},\n\t\t{0x3250, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fbb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa700, 0xa716, 1},\n\t\t{0xa800, 0xa82b, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6a, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe23, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d12a, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7c9, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3152 bytes (3 KiB)\nvar assigned5_1_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0523, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x061f, 1},\n\t\t{0x0621, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0901, 0x0939, 1},\n\t\t{0x093c, 0x094d, 1},\n\t\t{0x0950, 0x0954, 1},\n\t\t{0x0958, 0x0972, 1},\n\t\t{0x097b, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fa, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fd4, 1},\n\t\t{0x1000, 0x1099, 1},\n\t\t{0x109e, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1159, 1},\n\t\t{0x115f, 0x11a2, 1},\n\t\t{0x11a8, 0x11f9, 1},\n\t\t{0x1200, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1401, 0x1676, 1},\n\t\t{0x1680, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19a9, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19d9, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a1f, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1baa, 1},\n\t\t{0x1bae, 0x1bb9, 1},\n\t\t{0x1c00, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfe, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b5, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x214f, 1},\n\t\t{0x2153, 0x2188, 1},\n\t\t{0x2190, 0x23e7, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x269d, 1},\n\t\t{0x26a0, 0x26bc, 1},\n\t\t{0x26c0, 0x26c3, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x2758, 2},\n\t\t{0x2759, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27ca, 1},\n\t\t{0x27cc, 0x27d0, 4},\n\t\t{0x27d1, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b54, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2c6f, 1},\n\t\t{0x2c71, 0x2c7d, 1},\n\t\t{0x2c80, 0x2cea, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e30, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x3243, 1},\n\t\t{0x3250, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fc3, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa500, 0xa62b, 1},\n\t\t{0xa640, 0xa65f, 1},\n\t\t{0xa662, 0xa673, 1},\n\t\t{0xa67c, 0xa697, 1},\n\t\t{0xa700, 0xa78c, 1},\n\t\t{0xa7fb, 0xa82b, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xaa00, 161},\n\t\t{0xaa01, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa5f, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6a, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010900, 0x00010919, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010a00, 193},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3518 bytes (3 KiB)\nvar assigned5_2_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0525, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x061f, 1},\n\t\t{0x0621, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0900, 0x0939, 1},\n\t\t{0x093c, 0x094e, 1},\n\t\t{0x0950, 0x0955, 1},\n\t\t{0x0958, 0x0972, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fd8, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1baa, 1},\n\t\t{0x1bae, 0x1bb9, 1},\n\t\t{0x1c00, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cd0, 0x1cf2, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfd, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b8, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23e8, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26cd, 1},\n\t\t{0x26cf, 0x26e1, 1},\n\t\t{0x26e3, 0x26e8, 5},\n\t\t{0x26e9, 0x26ff, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27ca, 1},\n\t\t{0x27cc, 0x27d0, 4},\n\t\t{0x27d1, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf1, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e31, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa65f, 1},\n\t\t{0xa662, 0xa673, 1},\n\t\t{0xa67c, 0xa697, 1},\n\t\t{0xa6a0, 0xa6f7, 1},\n\t\t{0xa700, 0xa78c, 1},\n\t\t{0xa7fb, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaadf, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010a00, 193},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f131, 0x0001f13d, 12},\n\t\t{0x0001f13f, 0x0001f142, 3},\n\t\t{0x0001f146, 0x0001f14a, 4},\n\t\t{0x0001f14b, 0x0001f14e, 1},\n\t\t{0x0001f157, 0x0001f15f, 8},\n\t\t{0x0001f179, 0x0001f17b, 2},\n\t\t{0x0001f17c, 0x0001f17f, 3},\n\t\t{0x0001f18a, 0x0001f18d, 1},\n\t\t{0x0001f190, 0x0001f200, 112},\n\t\t{0x0001f210, 0x0001f231, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3026 bytes (2 KiB)\nvar assigned5_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x036f, 1},\n\t\t{0x0374, 0x0375, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x03ce, 1},\n\t\t{0x03d0, 0x0486, 1},\n\t\t{0x0488, 0x0513, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x060b, 0x0615, 1},\n\t\t{0x061b, 0x061e, 3},\n\t\t{0x061f, 0x0621, 2},\n\t\t{0x0622, 0x063a, 1},\n\t\t{0x0640, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x076d, 1},\n\t\t{0x0780, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0901, 0x0939, 1},\n\t\t{0x093c, 0x094d, 1},\n\t\t{0x0950, 0x0954, 1},\n\t\t{0x0958, 0x0970, 1},\n\t\t{0x097b, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fa, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a59, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a74, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b43, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b61, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd7, 0x0be6, 15},\n\t\t{0x0be7, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3e, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c60, 0x0c61, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3e, 0x0d43, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d66, 5},\n\t\t{0x0d67, 0x0d6f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6a, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fcf, 0x0fd1, 1},\n\t\t{0x1000, 0x1021, 1},\n\t\t{0x1023, 0x1027, 1},\n\t\t{0x1029, 0x102a, 1},\n\t\t{0x102c, 0x1032, 1},\n\t\t{0x1036, 0x1039, 1},\n\t\t{0x1040, 0x1059, 1},\n\t\t{0x10a0, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1159, 1},\n\t\t{0x115f, 0x11a2, 1},\n\t\t{0x11a8, 0x11f9, 1},\n\t\t{0x1200, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1401, 0x1676, 1},\n\t\t{0x1680, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18a9, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19a9, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19d9, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a1f, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1d00, 0x1dca, 1},\n\t\t{0x1dfe, 0x1e9b, 1},\n\t\t{0x1ea0, 0x1ef9, 1},\n\t\t{0x1f00, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2063, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b5, 1},\n\t\t{0x20d0, 0x20ef, 1},\n\t\t{0x2100, 0x214e, 1},\n\t\t{0x2153, 0x2184, 1},\n\t\t{0x2190, 0x23e7, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x269c, 1},\n\t\t{0x26a0, 0x26b2, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x2758, 2},\n\t\t{0x2759, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27ca, 1},\n\t\t{0x27d0, 0x27eb, 1},\n\t\t{0x27f0, 0x2b1a, 1},\n\t\t{0x2b20, 0x2b23, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2c6c, 1},\n\t\t{0x2c74, 0x2c77, 1},\n\t\t{0x2c80, 0x2cea, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2e00, 0x2e17, 1},\n\t\t{0x2e1c, 0x2e1d, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312c, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31cf, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x3243, 1},\n\t\t{0x3250, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fbb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa700, 0xa71a, 1},\n\t\t{0xa720, 0xa721, 1},\n\t\t{0xa800, 0xa82b, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6a, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe23, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010900, 0x00010919, 1},\n\t\t{0x0001091f, 0x00010a00, 225},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d12a, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4160 bytes (4 KiB)\nvar assigned6_1_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058f, 0x0591, 2},\n\t\t{0x0592, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0604, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a2, 0x08ac, 1},\n\t\t{0x08e4, 0x08fe, 1},\n\t\t{0x0900, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20b9, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e3b, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa697, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa793, 1},\n\t\t{0xa7a0, 0xa7aa, 1},\n\t\t{0xa7f8, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111d0, 0x000111d9, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f540, 0x0001f543, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4160 bytes (4 KiB)\nvar assigned6_2_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058f, 0x0591, 2},\n\t\t{0x0592, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0604, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a2, 0x08ac, 1},\n\t\t{0x08e4, 0x08fe, 1},\n\t\t{0x0900, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20ba, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e3b, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa697, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa793, 1},\n\t\t{0xa7a0, 0xa7aa, 1},\n\t\t{0xa7f8, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111d0, 0x000111d9, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f540, 0x0001f543, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4160 bytes (4 KiB)\nvar assigned6_3_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058f, 0x0591, 2},\n\t\t{0x0592, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0604, 1},\n\t\t{0x0606, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a2, 0x08ac, 1},\n\t\t{0x08e4, 0x08fe, 1},\n\t\t{0x0900, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20ba, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e3b, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa697, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa793, 1},\n\t\t{0xa7a0, 0xa7aa, 1},\n\t\t{0xa7f8, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111d0, 0x000111d9, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f540, 0x0001f543, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3812 bytes (3 KiB)\nvar assigned6_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x0900, 162},\n\t\t{0x0901, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1baa, 1},\n\t\t{0x1bae, 0x1bb9, 1},\n\t\t{0x1bc0, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cd0, 0x1cf2, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20b9, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x27ca, 1},\n\t\t{0x27cc, 0x27ce, 2},\n\t\t{0x27cf, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf1, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e31, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa673, 1},\n\t\t{0xa67c, 0xa697, 1},\n\t\t{0xa6a0, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa791, 1},\n\t\t{0xa7a0, 0xa7a9, 1},\n\t\t{0xa7fa, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaadf, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010a00, 193},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f169, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f5ff, 1},\n\t\t{0x0001f601, 0x0001f610, 1},\n\t\t{0x0001f612, 0x0001f614, 1},\n\t\t{0x0001f616, 0x0001f61c, 2},\n\t\t{0x0001f61d, 0x0001f61e, 1},\n\t\t{0x0001f620, 0x0001f625, 1},\n\t\t{0x0001f628, 0x0001f62b, 1},\n\t\t{0x0001f62d, 0x0001f630, 3},\n\t\t{0x0001f631, 0x0001f633, 1},\n\t\t{0x0001f635, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4898 bytes (4 KiB)\nvar assigned7_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a1, 0x08b2, 1},\n\t\t{0x08e4, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c81, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d01, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1cf8, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df5, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20bd, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23fa, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd1, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e42, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa69d, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa7ad, 1},\n\t\t{0xa7b0, 0xa7b1, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab5f, 1},\n\t\t{0xab64, 0xab65, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe2d, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018c, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111cd, 0x000111d0, 3},\n\t\t{0x000111d1, 0x000111da, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123d, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011301, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011357, 0x0001135d, 6},\n\t\t{0x0001135e, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115c9, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011ac0, 449},\n\t\t{0x00011ac1, 0x00011af8, 1},\n\t\t{0x00012000, 0x00012398, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f32c, 1},\n\t\t{0x0001f330, 0x0001f37d, 1},\n\t\t{0x0001f380, 0x0001f3ce, 1},\n\t\t{0x0001f3d4, 0x0001f3f7, 1},\n\t\t{0x0001f400, 0x0001f4fe, 1},\n\t\t{0x0001f500, 0x0001f54a, 1},\n\t\t{0x0001f550, 0x0001f579, 1},\n\t\t{0x0001f57b, 0x0001f5a3, 1},\n\t\t{0x0001f5a5, 0x0001f642, 1},\n\t\t{0x0001f645, 0x0001f6cf, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f3, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 5048 bytes (4 KiB)\nvar assigned8_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a1, 0x08b4, 1},\n\t\t{0x08e3, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0af9, 0x0b01, 8},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c5a, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c81, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d01, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d5f, 8},\n\t\t{0x0d60, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f5, 1},\n\t\t{0x13f8, 0x13fd, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1cf8, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df5, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20be, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x218b, 1},\n\t\t{0x2190, 0x23fa, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd1, 1},\n\t\t{0x2bec, 0x2bef, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e42, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fd5, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa6f7, 1},\n\t\t{0xa700, 0xa7ad, 1},\n\t\t{0xa7b0, 0xa7b7, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fd, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab65, 1},\n\t\t{0xab70, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018c, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x000108e0, 0x000108f2, 1},\n\t\t{0x000108f4, 0x000108f5, 1},\n\t\t{0x000108fb, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109bc, 0x000109cf, 1},\n\t\t{0x000109d2, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010c80, 0x00010cb2, 1},\n\t\t{0x00010cc0, 0x00010cf2, 1},\n\t\t{0x00010cfa, 0x00010cff, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111cd, 1},\n\t\t{0x000111d0, 0x000111df, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123d, 1},\n\t\t{0x00011280, 0x00011286, 1},\n\t\t{0x00011288, 0x0001128a, 2},\n\t\t{0x0001128b, 0x0001128d, 1},\n\t\t{0x0001128f, 0x0001129d, 1},\n\t\t{0x0001129f, 0x000112a9, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011300, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011350, 0x00011357, 7},\n\t\t{0x0001135d, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115dd, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00011700, 0x00011719, 1},\n\t\t{0x0001171d, 0x0001172b, 1},\n\t\t{0x00011730, 0x0001173f, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011ac0, 449},\n\t\t{0x00011ac1, 0x00011af8, 1},\n\t\t{0x00012000, 0x00012399, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00012480, 0x00012543, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00014400, 0x00014646, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1e8, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001da8b, 1},\n\t\t{0x0001da9b, 0x0001da9f, 1},\n\t\t{0x0001daa1, 0x0001daaf, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f579, 1},\n\t\t{0x0001f57b, 0x0001f5a3, 1},\n\t\t{0x0001f5a5, 0x0001f6d0, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f3, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x0001f910, 0x0001f918, 1},\n\t\t{0x0001f980, 0x0001f984, 1},\n\t\t{0x0001f9c0, 0x00020000, 1600},\n\t\t{0x00020001, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002b820, 0x0002cea1, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 5348 bytes (5 KiB)\nvar assigned9_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a1, 0x08b4, 1},\n\t\t{0x08b6, 0x08bd, 1},\n\t\t{0x08d4, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0af9, 0x0b01, 8},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c5a, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d01, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4f, 1},\n\t\t{0x0d54, 0x0d63, 1},\n\t\t{0x0d66, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f5, 1},\n\t\t{0x13f8, 0x13fd, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c88, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1cf8, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df5, 1},\n\t\t{0x1dfb, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20be, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x218b, 1},\n\t\t{0x2190, 0x23fe, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd1, 1},\n\t\t{0x2bec, 0x2bef, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e44, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fd5, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa6f7, 1},\n\t\t{0xa700, 0xa7ae, 1},\n\t\t{0xa7b0, 0xa7b7, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c5, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fd, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab65, 1},\n\t\t{0xab70, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018e, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x000104b0, 0x000104d3, 1},\n\t\t{0x000104d8, 0x000104fb, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x000108e0, 0x000108f2, 1},\n\t\t{0x000108f4, 0x000108f5, 1},\n\t\t{0x000108fb, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109bc, 0x000109cf, 1},\n\t\t{0x000109d2, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010c80, 0x00010cb2, 1},\n\t\t{0x00010cc0, 0x00010cf2, 1},\n\t\t{0x00010cfa, 0x00010cff, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111cd, 1},\n\t\t{0x000111d0, 0x000111df, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123e, 1},\n\t\t{0x00011280, 0x00011286, 1},\n\t\t{0x00011288, 0x0001128a, 2},\n\t\t{0x0001128b, 0x0001128d, 1},\n\t\t{0x0001128f, 0x0001129d, 1},\n\t\t{0x0001129f, 0x000112a9, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011300, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011350, 0x00011357, 7},\n\t\t{0x0001135d, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011400, 0x00011459, 1},\n\t\t{0x0001145b, 0x0001145d, 2},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115dd, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011660, 0x0001166c, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00011700, 0x00011719, 1},\n\t\t{0x0001171d, 0x0001172b, 1},\n\t\t{0x00011730, 0x0001173f, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011ac0, 449},\n\t\t{0x00011ac1, 0x00011af8, 1},\n\t\t{0x00011c00, 0x00011c08, 1},\n\t\t{0x00011c0a, 0x00011c36, 1},\n\t\t{0x00011c38, 0x00011c45, 1},\n\t\t{0x00011c50, 0x00011c6c, 1},\n\t\t{0x00011c70, 0x00011c8f, 1},\n\t\t{0x00011c92, 0x00011ca7, 1},\n\t\t{0x00011ca9, 0x00011cb6, 1},\n\t\t{0x00012000, 0x00012399, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00012480, 0x00012543, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00014400, 0x00014646, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x00016fe0, 0x00017000, 32},\n\t\t{0x00017001, 0x000187ec, 1},\n\t\t{0x00018800, 0x00018af2, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1e8, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001da8b, 1},\n\t\t{0x0001da9b, 0x0001da9f, 1},\n\t\t{0x0001daa1, 0x0001daaf, 1},\n\t\t{0x0001e000, 0x0001e006, 1},\n\t\t{0x0001e008, 0x0001e018, 1},\n\t\t{0x0001e01b, 0x0001e021, 1},\n\t\t{0x0001e023, 0x0001e024, 1},\n\t\t{0x0001e026, 0x0001e02a, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001e900, 0x0001e94a, 1},\n\t\t{0x0001e950, 0x0001e959, 1},\n\t\t{0x0001e95e, 0x0001e95f, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f1ac, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23b, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f6d2, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f6, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x0001f910, 0x0001f91e, 1},\n\t\t{0x0001f920, 0x0001f927, 1},\n\t\t{0x0001f930, 0x0001f933, 3},\n\t\t{0x0001f934, 0x0001f93e, 1},\n\t\t{0x0001f940, 0x0001f94b, 1},\n\t\t{0x0001f950, 0x0001f95e, 1},\n\t\t{0x0001f980, 0x0001f991, 1},\n\t\t{0x0001f9c0, 0x00020000, 1600},\n\t\t{0x00020001, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002b820, 0x0002cea1, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 5492 bytes (5 KiB)\nvar assigned10_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x0860, 2},\n\t\t{0x0861, 0x086a, 1},\n\t\t{0x08a0, 0x08b4, 1},\n\t\t{0x08b6, 0x08bd, 1},\n\t\t{0x08d4, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fd, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0af9, 0x0aff, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c5a, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d00, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4f, 1},\n\t\t{0x0d54, 0x0d63, 1},\n\t\t{0x0d66, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f5, 1},\n\t\t{0x13f8, 0x13fd, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c88, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df9, 1},\n\t\t{0x1dfb, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20bf, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x218b, 1},\n\t\t{0x2190, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd2, 1},\n\t\t{0x2bec, 0x2bef, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e49, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312e, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fea, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa6f7, 1},\n\t\t{0xa700, 0xa7ae, 1},\n\t\t{0xa7b0, 0xa7b7, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c5, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fd, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab65, 1},\n\t\t{0xab70, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018e, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x0001032d, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x000104b0, 0x000104d3, 1},\n\t\t{0x000104d8, 0x000104fb, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x000108e0, 0x000108f2, 1},\n\t\t{0x000108f4, 0x000108f5, 1},\n\t\t{0x000108fb, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109bc, 0x000109cf, 1},\n\t\t{0x000109d2, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010c80, 0x00010cb2, 1},\n\t\t{0x00010cc0, 0x00010cf2, 1},\n\t\t{0x00010cfa, 0x00010cff, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111cd, 1},\n\t\t{0x000111d0, 0x000111df, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123e, 1},\n\t\t{0x00011280, 0x00011286, 1},\n\t\t{0x00011288, 0x0001128a, 2},\n\t\t{0x0001128b, 0x0001128d, 1},\n\t\t{0x0001128f, 0x0001129d, 1},\n\t\t{0x0001129f, 0x000112a9, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011300, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011350, 0x00011357, 7},\n\t\t{0x0001135d, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011400, 0x00011459, 1},\n\t\t{0x0001145b, 0x0001145d, 2},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115dd, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011660, 0x0001166c, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00011700, 0x00011719, 1},\n\t\t{0x0001171d, 0x0001172b, 1},\n\t\t{0x00011730, 0x0001173f, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011a00, 257},\n\t\t{0x00011a01, 0x00011a47, 1},\n\t\t{0x00011a50, 0x00011a83, 1},\n\t\t{0x00011a86, 0x00011a9c, 1},\n\t\t{0x00011a9e, 0x00011aa2, 1},\n\t\t{0x00011ac0, 0x00011af8, 1},\n\t\t{0x00011c00, 0x00011c08, 1},\n\t\t{0x00011c0a, 0x00011c36, 1},\n\t\t{0x00011c38, 0x00011c45, 1},\n\t\t{0x00011c50, 0x00011c6c, 1},\n\t\t{0x00011c70, 0x00011c8f, 1},\n\t\t{0x00011c92, 0x00011ca7, 1},\n\t\t{0x00011ca9, 0x00011cb6, 1},\n\t\t{0x00011d00, 0x00011d06, 1},\n\t\t{0x00011d08, 0x00011d09, 1},\n\t\t{0x00011d0b, 0x00011d36, 1},\n\t\t{0x00011d3a, 0x00011d3c, 2},\n\t\t{0x00011d3d, 0x00011d3f, 2},\n\t\t{0x00011d40, 0x00011d47, 1},\n\t\t{0x00011d50, 0x00011d59, 1},\n\t\t{0x00012000, 0x00012399, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00012480, 0x00012543, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00014400, 0x00014646, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x00016fe0, 0x00016fe1, 1},\n\t\t{0x00017000, 0x000187ec, 1},\n\t\t{0x00018800, 0x00018af2, 1},\n\t\t{0x0001b000, 0x0001b11e, 1},\n\t\t{0x0001b170, 0x0001b2fb, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1e8, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001da8b, 1},\n\t\t{0x0001da9b, 0x0001da9f, 1},\n\t\t{0x0001daa1, 0x0001daaf, 1},\n\t\t{0x0001e000, 0x0001e006, 1},\n\t\t{0x0001e008, 0x0001e018, 1},\n\t\t{0x0001e01b, 0x0001e021, 1},\n\t\t{0x0001e023, 0x0001e024, 1},\n\t\t{0x0001e026, 0x0001e02a, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001e900, 0x0001e94a, 1},\n\t\t{0x0001e950, 0x0001e959, 1},\n\t\t{0x0001e95e, 0x0001e95f, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f1ac, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23b, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f260, 0x0001f265, 1},\n\t\t{0x0001f300, 0x0001f6d4, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f8, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x0001f900, 0x0001f90b, 1},\n\t\t{0x0001f910, 0x0001f93e, 1},\n\t\t{0x0001f940, 0x0001f94c, 1},\n\t\t{0x0001f950, 0x0001f96b, 1},\n\t\t{0x0001f980, 0x0001f997, 1},\n\t\t{0x0001f9c0, 0x0001f9d0, 16},\n\t\t{0x0001f9d1, 0x0001f9e6, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002b820, 0x0002cea1, 1},\n\t\t{0x0002ceb0, 0x0002ebe0, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// Total size 49698 bytes (48 KiB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/golang.org/x/text/unicode/rangetable/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// +build !go1.10\n\npackage rangetable\n\n//go:generate go run gen.go --versions=4.1.0,5.1.0,5.2.0,5.0.0,6.1.0,6.2.0,6.3.0,6.0.0,7.0.0,8.0.0,9.0.0\n\nimport \"unicode\"\n\nvar assigned = map[string]*unicode.RangeTable{\n\t\"4.1.0\": assigned4_1_0,\n\t\"5.1.0\": assigned5_1_0,\n\t\"5.2.0\": assigned5_2_0,\n\t\"5.0.0\": assigned5_0_0,\n\t\"6.1.0\": assigned6_1_0,\n\t\"6.2.0\": assigned6_2_0,\n\t\"6.3.0\": assigned6_3_0,\n\t\"6.0.0\": assigned6_0_0,\n\t\"7.0.0\": assigned7_0_0,\n\t\"8.0.0\": assigned8_0_0,\n\t\"9.0.0\": assigned9_0_0,\n}\n\n// size 2924 bytes (2 KiB)\nvar assigned4_1_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0241, 1},\n\t\t{0x0250, 0x036f, 1},\n\t\t{0x0374, 0x0375, 1},\n\t\t{0x037a, 0x037e, 4},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x03ce, 1},\n\t\t{0x03d0, 0x0486, 1},\n\t\t{0x0488, 0x04ce, 1},\n\t\t{0x04d0, 0x04f9, 1},\n\t\t{0x0500, 0x050f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05b9, 1},\n\t\t{0x05bb, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x060b, 0x0615, 1},\n\t\t{0x061b, 0x061e, 3},\n\t\t{0x061f, 0x0621, 2},\n\t\t{0x0622, 0x063a, 1},\n\t\t{0x0640, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x076d, 1},\n\t\t{0x0780, 0x07b1, 1},\n\t\t{0x0901, 0x0939, 1},\n\t\t{0x093c, 0x094d, 1},\n\t\t{0x0950, 0x0954, 1},\n\t\t{0x0958, 0x0970, 1},\n\t\t{0x097d, 0x0981, 4},\n\t\t{0x0982, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fa, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a59, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a74, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b43, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b61, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd7, 0x0be6, 15},\n\t\t{0x0be7, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3e, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c60, 0x0c61, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce6, 5},\n\t\t{0x0ce7, 0x0cef, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3e, 0x0d43, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d66, 5},\n\t\t{0x0d67, 0x0d6f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6a, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fcf, 0x0fd1, 1},\n\t\t{0x1000, 0x1021, 1},\n\t\t{0x1023, 0x1027, 1},\n\t\t{0x1029, 0x102a, 1},\n\t\t{0x102c, 0x1032, 1},\n\t\t{0x1036, 0x1039, 1},\n\t\t{0x1040, 0x1059, 1},\n\t\t{0x10a0, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1159, 1},\n\t\t{0x115f, 0x11a2, 1},\n\t\t{0x11a8, 0x11f9, 1},\n\t\t{0x1200, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1401, 0x1676, 1},\n\t\t{0x1680, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18a9, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19a9, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19d9, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a1f, 1},\n\t\t{0x1d00, 0x1dc3, 1},\n\t\t{0x1e00, 0x1e9b, 1},\n\t\t{0x1ea0, 0x1ef9, 1},\n\t\t{0x1f00, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2063, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b5, 1},\n\t\t{0x20d0, 0x20eb, 1},\n\t\t{0x2100, 0x214c, 1},\n\t\t{0x2153, 0x2183, 1},\n\t\t{0x2190, 0x23db, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x269c, 1},\n\t\t{0x26a0, 0x26b1, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x2758, 2},\n\t\t{0x2759, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27c6, 1},\n\t\t{0x27d0, 0x27eb, 1},\n\t\t{0x27f0, 0x2b13, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c80, 0x2cea, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2e00, 0x2e17, 1},\n\t\t{0x2e1c, 0x2e1d, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312c, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31cf, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x3243, 1},\n\t\t{0x3250, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fbb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa700, 0xa716, 1},\n\t\t{0xa800, 0xa82b, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6a, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe23, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d12a, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7c9, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3152 bytes (3 KiB)\nvar assigned5_1_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0523, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x061f, 1},\n\t\t{0x0621, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0901, 0x0939, 1},\n\t\t{0x093c, 0x094d, 1},\n\t\t{0x0950, 0x0954, 1},\n\t\t{0x0958, 0x0972, 1},\n\t\t{0x097b, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fa, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fd4, 1},\n\t\t{0x1000, 0x1099, 1},\n\t\t{0x109e, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1159, 1},\n\t\t{0x115f, 0x11a2, 1},\n\t\t{0x11a8, 0x11f9, 1},\n\t\t{0x1200, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1401, 0x1676, 1},\n\t\t{0x1680, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19a9, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19d9, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a1f, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1baa, 1},\n\t\t{0x1bae, 0x1bb9, 1},\n\t\t{0x1c00, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfe, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b5, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x214f, 1},\n\t\t{0x2153, 0x2188, 1},\n\t\t{0x2190, 0x23e7, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x269d, 1},\n\t\t{0x26a0, 0x26bc, 1},\n\t\t{0x26c0, 0x26c3, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x2758, 2},\n\t\t{0x2759, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27ca, 1},\n\t\t{0x27cc, 0x27d0, 4},\n\t\t{0x27d1, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b54, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2c6f, 1},\n\t\t{0x2c71, 0x2c7d, 1},\n\t\t{0x2c80, 0x2cea, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e30, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x3243, 1},\n\t\t{0x3250, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fc3, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa500, 0xa62b, 1},\n\t\t{0xa640, 0xa65f, 1},\n\t\t{0xa662, 0xa673, 1},\n\t\t{0xa67c, 0xa697, 1},\n\t\t{0xa700, 0xa78c, 1},\n\t\t{0xa7fb, 0xa82b, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xaa00, 161},\n\t\t{0xaa01, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa5f, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6a, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010900, 0x00010919, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010a00, 193},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3518 bytes (3 KiB)\nvar assigned5_2_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0525, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x061f, 1},\n\t\t{0x0621, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0900, 0x0939, 1},\n\t\t{0x093c, 0x094e, 1},\n\t\t{0x0950, 0x0955, 1},\n\t\t{0x0958, 0x0972, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fd8, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1baa, 1},\n\t\t{0x1bae, 0x1bb9, 1},\n\t\t{0x1c00, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cd0, 0x1cf2, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfd, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b8, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23e8, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26cd, 1},\n\t\t{0x26cf, 0x26e1, 1},\n\t\t{0x26e3, 0x26e8, 5},\n\t\t{0x26e9, 0x26ff, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27ca, 1},\n\t\t{0x27cc, 0x27d0, 4},\n\t\t{0x27d1, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf1, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e31, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa65f, 1},\n\t\t{0xa662, 0xa673, 1},\n\t\t{0xa67c, 0xa697, 1},\n\t\t{0xa6a0, 0xa6f7, 1},\n\t\t{0xa700, 0xa78c, 1},\n\t\t{0xa7fb, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaadf, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010a00, 193},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f131, 0x0001f13d, 12},\n\t\t{0x0001f13f, 0x0001f142, 3},\n\t\t{0x0001f146, 0x0001f14a, 4},\n\t\t{0x0001f14b, 0x0001f14e, 1},\n\t\t{0x0001f157, 0x0001f15f, 8},\n\t\t{0x0001f179, 0x0001f17b, 2},\n\t\t{0x0001f17c, 0x0001f17f, 3},\n\t\t{0x0001f18a, 0x0001f18d, 1},\n\t\t{0x0001f190, 0x0001f200, 112},\n\t\t{0x0001f210, 0x0001f231, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3026 bytes (2 KiB)\nvar assigned5_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x036f, 1},\n\t\t{0x0374, 0x0375, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x03ce, 1},\n\t\t{0x03d0, 0x0486, 1},\n\t\t{0x0488, 0x0513, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x060b, 0x0615, 1},\n\t\t{0x061b, 0x061e, 3},\n\t\t{0x061f, 0x0621, 2},\n\t\t{0x0622, 0x063a, 1},\n\t\t{0x0640, 0x065e, 1},\n\t\t{0x0660, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x076d, 1},\n\t\t{0x0780, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0901, 0x0939, 1},\n\t\t{0x093c, 0x094d, 1},\n\t\t{0x0950, 0x0954, 1},\n\t\t{0x0958, 0x0970, 1},\n\t\t{0x097b, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fa, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a59, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a74, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b43, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b61, 1},\n\t\t{0x0b66, 0x0b71, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd7, 0x0be6, 15},\n\t\t{0x0be7, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3e, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c60, 0x0c61, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d28, 1},\n\t\t{0x0d2a, 0x0d39, 1},\n\t\t{0x0d3e, 0x0d43, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4d, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d66, 5},\n\t\t{0x0d67, 0x0d6f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6a, 1},\n\t\t{0x0f71, 0x0f8b, 1},\n\t\t{0x0f90, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fcf, 0x0fd1, 1},\n\t\t{0x1000, 0x1021, 1},\n\t\t{0x1023, 0x1027, 1},\n\t\t{0x1029, 0x102a, 1},\n\t\t{0x102c, 0x1032, 1},\n\t\t{0x1036, 0x1039, 1},\n\t\t{0x1040, 0x1059, 1},\n\t\t{0x10a0, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1159, 1},\n\t\t{0x115f, 0x11a2, 1},\n\t\t{0x11a8, 0x11f9, 1},\n\t\t{0x1200, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135f, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1401, 0x1676, 1},\n\t\t{0x1680, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18a9, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19a9, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19d9, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a1f, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1d00, 0x1dca, 1},\n\t\t{0x1dfe, 0x1e9b, 1},\n\t\t{0x1ea0, 0x1ef9, 1},\n\t\t{0x1f00, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2063, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x2094, 1},\n\t\t{0x20a0, 0x20b5, 1},\n\t\t{0x20d0, 0x20ef, 1},\n\t\t{0x2100, 0x214e, 1},\n\t\t{0x2153, 0x2184, 1},\n\t\t{0x2190, 0x23e7, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x269c, 1},\n\t\t{0x26a0, 0x26b2, 1},\n\t\t{0x2701, 0x2704, 1},\n\t\t{0x2706, 0x2709, 1},\n\t\t{0x270c, 0x2727, 1},\n\t\t{0x2729, 0x274b, 1},\n\t\t{0x274d, 0x274f, 2},\n\t\t{0x2750, 0x2752, 1},\n\t\t{0x2756, 0x2758, 2},\n\t\t{0x2759, 0x275e, 1},\n\t\t{0x2761, 0x2794, 1},\n\t\t{0x2798, 0x27af, 1},\n\t\t{0x27b1, 0x27be, 1},\n\t\t{0x27c0, 0x27ca, 1},\n\t\t{0x27d0, 0x27eb, 1},\n\t\t{0x27f0, 0x2b1a, 1},\n\t\t{0x2b20, 0x2b23, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2c6c, 1},\n\t\t{0x2c74, 0x2c77, 1},\n\t\t{0x2c80, 0x2cea, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d80, 17},\n\t\t{0x2d81, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2e00, 0x2e17, 1},\n\t\t{0x2e1c, 0x2e1d, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312c, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31b7, 1},\n\t\t{0x31c0, 0x31cf, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x3243, 1},\n\t\t{0x3250, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fbb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa700, 0xa71a, 1},\n\t\t{0xa720, 0xa721, 1},\n\t\t{0xa800, 0xa82b, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6a, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbb1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe23, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010900, 0x00010919, 1},\n\t\t{0x0001091f, 0x00010a00, 225},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d12a, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4160 bytes (4 KiB)\nvar assigned6_1_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058f, 0x0591, 2},\n\t\t{0x0592, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0604, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a2, 0x08ac, 1},\n\t\t{0x08e4, 0x08fe, 1},\n\t\t{0x0900, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20b9, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e3b, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa697, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa793, 1},\n\t\t{0xa7a0, 0xa7aa, 1},\n\t\t{0xa7f8, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111d0, 0x000111d9, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f540, 0x0001f543, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4160 bytes (4 KiB)\nvar assigned6_2_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058f, 0x0591, 2},\n\t\t{0x0592, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0604, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a2, 0x08ac, 1},\n\t\t{0x08e4, 0x08fe, 1},\n\t\t{0x0900, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20ba, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e3b, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa697, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa793, 1},\n\t\t{0xa7a0, 0xa7aa, 1},\n\t\t{0xa7f8, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111d0, 0x000111d9, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f540, 0x0001f543, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4160 bytes (4 KiB)\nvar assigned6_3_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058f, 0x0591, 2},\n\t\t{0x0592, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0604, 1},\n\t\t{0x0606, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a2, 0x08ac, 1},\n\t\t{0x08e4, 0x08fe, 1},\n\t\t{0x0900, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20ba, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e3b, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa697, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa793, 1},\n\t\t{0xa7a0, 0xa7aa, 1},\n\t\t{0xa7f8, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111d0, 0x000111d9, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f540, 0x0001f543, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 3812 bytes (3 KiB)\nvar assigned6_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037e, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x0527, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x0603, 1},\n\t\t{0x0606, 0x061b, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x0900, 162},\n\t\t{0x0901, 0x0977, 1},\n\t\t{0x0979, 0x097f, 1},\n\t\t{0x0981, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0aef, 1},\n\t\t{0x0af1, 0x0b01, 16},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c01, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c33, 1},\n\t\t{0x0c35, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c82, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d02, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edd, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10d0, 0x10fc, 1},\n\t\t{0x1100, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f0, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191c, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1baa, 1},\n\t\t{0x1bae, 0x1bb9, 1},\n\t\t{0x1bc0, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cd0, 0x1cf2, 1},\n\t\t{0x1d00, 0x1de6, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x206a, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20b9, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23f3, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x26ff, 1},\n\t\t{0x2701, 0x27ca, 1},\n\t\t{0x27cc, 0x27ce, 2},\n\t\t{0x27cf, 0x2b4c, 1},\n\t\t{0x2b50, 0x2b59, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf1, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d30, 0x2d65, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e31, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcb, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa673, 1},\n\t\t{0xa67c, 0xa697, 1},\n\t\t{0xa6a0, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa791, 1},\n\t\t{0xa7a0, 0xa7a9, 1},\n\t\t{0xa7fa, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9df, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaa7b, 1},\n\t\t{0xaa80, 0xaac2, 1},\n\t\t{0xaadb, 0xaadf, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa2d, 1},\n\t\t{0xfa30, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe26, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018a, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101d0, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x00010300, 0x0001031e, 1},\n\t\t{0x00010320, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001085f, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010a00, 193},\n\t\t{0x00010a01, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a7f, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b7f, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x00011080, 0x000110c1, 1},\n\t\t{0x00012000, 0x0001236e, 1},\n\t\t{0x00012400, 0x00012462, 1},\n\t\t{0x00012470, 0x00012473, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0be, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0df, 1},\n\t\t{0x0001f100, 0x0001f10a, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f169, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f320, 1},\n\t\t{0x0001f330, 0x0001f335, 1},\n\t\t{0x0001f337, 0x0001f37c, 1},\n\t\t{0x0001f380, 0x0001f393, 1},\n\t\t{0x0001f3a0, 0x0001f3c4, 1},\n\t\t{0x0001f3c6, 0x0001f3ca, 1},\n\t\t{0x0001f3e0, 0x0001f3f0, 1},\n\t\t{0x0001f400, 0x0001f43e, 1},\n\t\t{0x0001f440, 0x0001f442, 2},\n\t\t{0x0001f443, 0x0001f4f7, 1},\n\t\t{0x0001f4f9, 0x0001f4fc, 1},\n\t\t{0x0001f500, 0x0001f53d, 1},\n\t\t{0x0001f550, 0x0001f567, 1},\n\t\t{0x0001f5fb, 0x0001f5ff, 1},\n\t\t{0x0001f601, 0x0001f610, 1},\n\t\t{0x0001f612, 0x0001f614, 1},\n\t\t{0x0001f616, 0x0001f61c, 2},\n\t\t{0x0001f61d, 0x0001f61e, 1},\n\t\t{0x0001f620, 0x0001f625, 1},\n\t\t{0x0001f628, 0x0001f62b, 1},\n\t\t{0x0001f62d, 0x0001f630, 3},\n\t\t{0x0001f631, 0x0001f633, 1},\n\t\t{0x0001f635, 0x0001f640, 1},\n\t\t{0x0001f645, 0x0001f64f, 1},\n\t\t{0x0001f680, 0x0001f6c5, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 4898 bytes (4 KiB)\nvar assigned7_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a1, 0x08b2, 1},\n\t\t{0x08e4, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0b01, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c59, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c81, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d01, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d60, 9},\n\t\t{0x0d61, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f4, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1cf8, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df5, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20bd, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x2189, 1},\n\t\t{0x2190, 0x23fa, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd1, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e42, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fcc, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa69d, 1},\n\t\t{0xa69f, 0xa6f7, 1},\n\t\t{0xa700, 0xa78e, 1},\n\t\t{0xa790, 0xa7ad, 1},\n\t\t{0xa7b0, 0xa7b1, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fb, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab5f, 1},\n\t\t{0xab64, 0xab65, 1},\n\t\t{0xabc0, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe2d, 1},\n\t\t{0xfe30, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018c, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x00010900, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109be, 0x000109bf, 1},\n\t\t{0x00010a00, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111c8, 1},\n\t\t{0x000111cd, 0x000111d0, 3},\n\t\t{0x000111d1, 0x000111da, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123d, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011301, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011357, 0x0001135d, 6},\n\t\t{0x0001135e, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115c9, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011ac0, 449},\n\t\t{0x00011ac1, 0x00011af8, 1},\n\t\t{0x00012000, 0x00012398, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1dd, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001d7ff, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f32c, 1},\n\t\t{0x0001f330, 0x0001f37d, 1},\n\t\t{0x0001f380, 0x0001f3ce, 1},\n\t\t{0x0001f3d4, 0x0001f3f7, 1},\n\t\t{0x0001f400, 0x0001f4fe, 1},\n\t\t{0x0001f500, 0x0001f54a, 1},\n\t\t{0x0001f550, 0x0001f579, 1},\n\t\t{0x0001f57b, 0x0001f5a3, 1},\n\t\t{0x0001f5a5, 0x0001f642, 1},\n\t\t{0x0001f645, 0x0001f6cf, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f3, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x00020000, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 5048 bytes (4 KiB)\nvar assigned8_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a1, 0x08b4, 1},\n\t\t{0x08e3, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0af9, 0x0b01, 8},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c5a, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c7f, 1},\n\t\t{0x0c81, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d01, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4e, 1},\n\t\t{0x0d57, 0x0d5f, 8},\n\t\t{0x0d60, 0x0d63, 1},\n\t\t{0x0d66, 0x0d75, 1},\n\t\t{0x0d79, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f5, 1},\n\t\t{0x13f8, 0x13fd, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c7f, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1cf8, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df5, 1},\n\t\t{0x1dfc, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20be, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x218b, 1},\n\t\t{0x2190, 0x23fa, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd1, 1},\n\t\t{0x2bec, 0x2bef, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e42, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fd5, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa6f7, 1},\n\t\t{0xa700, 0xa7ad, 1},\n\t\t{0xa7b0, 0xa7b7, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c4, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fd, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab65, 1},\n\t\t{0xab70, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018c, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x000108e0, 0x000108f2, 1},\n\t\t{0x000108f4, 0x000108f5, 1},\n\t\t{0x000108fb, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109bc, 0x000109cf, 1},\n\t\t{0x000109d2, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010c80, 0x00010cb2, 1},\n\t\t{0x00010cc0, 0x00010cf2, 1},\n\t\t{0x00010cfa, 0x00010cff, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111cd, 1},\n\t\t{0x000111d0, 0x000111df, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123d, 1},\n\t\t{0x00011280, 0x00011286, 1},\n\t\t{0x00011288, 0x0001128a, 2},\n\t\t{0x0001128b, 0x0001128d, 1},\n\t\t{0x0001128f, 0x0001129d, 1},\n\t\t{0x0001129f, 0x000112a9, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011300, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011350, 0x00011357, 7},\n\t\t{0x0001135d, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115dd, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00011700, 0x00011719, 1},\n\t\t{0x0001171d, 0x0001172b, 1},\n\t\t{0x00011730, 0x0001173f, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011ac0, 449},\n\t\t{0x00011ac1, 0x00011af8, 1},\n\t\t{0x00012000, 0x00012399, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00012480, 0x00012543, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00014400, 0x00014646, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1e8, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001da8b, 1},\n\t\t{0x0001da9b, 0x0001da9f, 1},\n\t\t{0x0001daa1, 0x0001daaf, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f19a, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23a, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f579, 1},\n\t\t{0x0001f57b, 0x0001f5a3, 1},\n\t\t{0x0001f5a5, 0x0001f6d0, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f3, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x0001f910, 0x0001f918, 1},\n\t\t{0x0001f980, 0x0001f984, 1},\n\t\t{0x0001f9c0, 0x00020000, 1600},\n\t\t{0x00020001, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002b820, 0x0002cea1, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// size 5348 bytes (5 KiB)\nvar assigned9_0_0 = &unicode.RangeTable{\n\tR16: []unicode.Range16{\n\t\t{0x0000, 0x0377, 1},\n\t\t{0x037a, 0x037f, 1},\n\t\t{0x0384, 0x038a, 1},\n\t\t{0x038c, 0x038e, 2},\n\t\t{0x038f, 0x03a1, 1},\n\t\t{0x03a3, 0x052f, 1},\n\t\t{0x0531, 0x0556, 1},\n\t\t{0x0559, 0x055f, 1},\n\t\t{0x0561, 0x0587, 1},\n\t\t{0x0589, 0x058a, 1},\n\t\t{0x058d, 0x058f, 1},\n\t\t{0x0591, 0x05c7, 1},\n\t\t{0x05d0, 0x05ea, 1},\n\t\t{0x05f0, 0x05f4, 1},\n\t\t{0x0600, 0x061c, 1},\n\t\t{0x061e, 0x070d, 1},\n\t\t{0x070f, 0x074a, 1},\n\t\t{0x074d, 0x07b1, 1},\n\t\t{0x07c0, 0x07fa, 1},\n\t\t{0x0800, 0x082d, 1},\n\t\t{0x0830, 0x083e, 1},\n\t\t{0x0840, 0x085b, 1},\n\t\t{0x085e, 0x08a0, 66},\n\t\t{0x08a1, 0x08b4, 1},\n\t\t{0x08b6, 0x08bd, 1},\n\t\t{0x08d4, 0x0983, 1},\n\t\t{0x0985, 0x098c, 1},\n\t\t{0x098f, 0x0990, 1},\n\t\t{0x0993, 0x09a8, 1},\n\t\t{0x09aa, 0x09b0, 1},\n\t\t{0x09b2, 0x09b6, 4},\n\t\t{0x09b7, 0x09b9, 1},\n\t\t{0x09bc, 0x09c4, 1},\n\t\t{0x09c7, 0x09c8, 1},\n\t\t{0x09cb, 0x09ce, 1},\n\t\t{0x09d7, 0x09dc, 5},\n\t\t{0x09dd, 0x09df, 2},\n\t\t{0x09e0, 0x09e3, 1},\n\t\t{0x09e6, 0x09fb, 1},\n\t\t{0x0a01, 0x0a03, 1},\n\t\t{0x0a05, 0x0a0a, 1},\n\t\t{0x0a0f, 0x0a10, 1},\n\t\t{0x0a13, 0x0a28, 1},\n\t\t{0x0a2a, 0x0a30, 1},\n\t\t{0x0a32, 0x0a33, 1},\n\t\t{0x0a35, 0x0a36, 1},\n\t\t{0x0a38, 0x0a39, 1},\n\t\t{0x0a3c, 0x0a3e, 2},\n\t\t{0x0a3f, 0x0a42, 1},\n\t\t{0x0a47, 0x0a48, 1},\n\t\t{0x0a4b, 0x0a4d, 1},\n\t\t{0x0a51, 0x0a59, 8},\n\t\t{0x0a5a, 0x0a5c, 1},\n\t\t{0x0a5e, 0x0a66, 8},\n\t\t{0x0a67, 0x0a75, 1},\n\t\t{0x0a81, 0x0a83, 1},\n\t\t{0x0a85, 0x0a8d, 1},\n\t\t{0x0a8f, 0x0a91, 1},\n\t\t{0x0a93, 0x0aa8, 1},\n\t\t{0x0aaa, 0x0ab0, 1},\n\t\t{0x0ab2, 0x0ab3, 1},\n\t\t{0x0ab5, 0x0ab9, 1},\n\t\t{0x0abc, 0x0ac5, 1},\n\t\t{0x0ac7, 0x0ac9, 1},\n\t\t{0x0acb, 0x0acd, 1},\n\t\t{0x0ad0, 0x0ae0, 16},\n\t\t{0x0ae1, 0x0ae3, 1},\n\t\t{0x0ae6, 0x0af1, 1},\n\t\t{0x0af9, 0x0b01, 8},\n\t\t{0x0b02, 0x0b03, 1},\n\t\t{0x0b05, 0x0b0c, 1},\n\t\t{0x0b0f, 0x0b10, 1},\n\t\t{0x0b13, 0x0b28, 1},\n\t\t{0x0b2a, 0x0b30, 1},\n\t\t{0x0b32, 0x0b33, 1},\n\t\t{0x0b35, 0x0b39, 1},\n\t\t{0x0b3c, 0x0b44, 1},\n\t\t{0x0b47, 0x0b48, 1},\n\t\t{0x0b4b, 0x0b4d, 1},\n\t\t{0x0b56, 0x0b57, 1},\n\t\t{0x0b5c, 0x0b5d, 1},\n\t\t{0x0b5f, 0x0b63, 1},\n\t\t{0x0b66, 0x0b77, 1},\n\t\t{0x0b82, 0x0b83, 1},\n\t\t{0x0b85, 0x0b8a, 1},\n\t\t{0x0b8e, 0x0b90, 1},\n\t\t{0x0b92, 0x0b95, 1},\n\t\t{0x0b99, 0x0b9a, 1},\n\t\t{0x0b9c, 0x0b9e, 2},\n\t\t{0x0b9f, 0x0ba3, 4},\n\t\t{0x0ba4, 0x0ba8, 4},\n\t\t{0x0ba9, 0x0baa, 1},\n\t\t{0x0bae, 0x0bb9, 1},\n\t\t{0x0bbe, 0x0bc2, 1},\n\t\t{0x0bc6, 0x0bc8, 1},\n\t\t{0x0bca, 0x0bcd, 1},\n\t\t{0x0bd0, 0x0bd7, 7},\n\t\t{0x0be6, 0x0bfa, 1},\n\t\t{0x0c00, 0x0c03, 1},\n\t\t{0x0c05, 0x0c0c, 1},\n\t\t{0x0c0e, 0x0c10, 1},\n\t\t{0x0c12, 0x0c28, 1},\n\t\t{0x0c2a, 0x0c39, 1},\n\t\t{0x0c3d, 0x0c44, 1},\n\t\t{0x0c46, 0x0c48, 1},\n\t\t{0x0c4a, 0x0c4d, 1},\n\t\t{0x0c55, 0x0c56, 1},\n\t\t{0x0c58, 0x0c5a, 1},\n\t\t{0x0c60, 0x0c63, 1},\n\t\t{0x0c66, 0x0c6f, 1},\n\t\t{0x0c78, 0x0c83, 1},\n\t\t{0x0c85, 0x0c8c, 1},\n\t\t{0x0c8e, 0x0c90, 1},\n\t\t{0x0c92, 0x0ca8, 1},\n\t\t{0x0caa, 0x0cb3, 1},\n\t\t{0x0cb5, 0x0cb9, 1},\n\t\t{0x0cbc, 0x0cc4, 1},\n\t\t{0x0cc6, 0x0cc8, 1},\n\t\t{0x0cca, 0x0ccd, 1},\n\t\t{0x0cd5, 0x0cd6, 1},\n\t\t{0x0cde, 0x0ce0, 2},\n\t\t{0x0ce1, 0x0ce3, 1},\n\t\t{0x0ce6, 0x0cef, 1},\n\t\t{0x0cf1, 0x0cf2, 1},\n\t\t{0x0d01, 0x0d03, 1},\n\t\t{0x0d05, 0x0d0c, 1},\n\t\t{0x0d0e, 0x0d10, 1},\n\t\t{0x0d12, 0x0d3a, 1},\n\t\t{0x0d3d, 0x0d44, 1},\n\t\t{0x0d46, 0x0d48, 1},\n\t\t{0x0d4a, 0x0d4f, 1},\n\t\t{0x0d54, 0x0d63, 1},\n\t\t{0x0d66, 0x0d7f, 1},\n\t\t{0x0d82, 0x0d83, 1},\n\t\t{0x0d85, 0x0d96, 1},\n\t\t{0x0d9a, 0x0db1, 1},\n\t\t{0x0db3, 0x0dbb, 1},\n\t\t{0x0dbd, 0x0dc0, 3},\n\t\t{0x0dc1, 0x0dc6, 1},\n\t\t{0x0dca, 0x0dcf, 5},\n\t\t{0x0dd0, 0x0dd4, 1},\n\t\t{0x0dd6, 0x0dd8, 2},\n\t\t{0x0dd9, 0x0ddf, 1},\n\t\t{0x0de6, 0x0def, 1},\n\t\t{0x0df2, 0x0df4, 1},\n\t\t{0x0e01, 0x0e3a, 1},\n\t\t{0x0e3f, 0x0e5b, 1},\n\t\t{0x0e81, 0x0e82, 1},\n\t\t{0x0e84, 0x0e87, 3},\n\t\t{0x0e88, 0x0e8a, 2},\n\t\t{0x0e8d, 0x0e94, 7},\n\t\t{0x0e95, 0x0e97, 1},\n\t\t{0x0e99, 0x0e9f, 1},\n\t\t{0x0ea1, 0x0ea3, 1},\n\t\t{0x0ea5, 0x0ea7, 2},\n\t\t{0x0eaa, 0x0eab, 1},\n\t\t{0x0ead, 0x0eb9, 1},\n\t\t{0x0ebb, 0x0ebd, 1},\n\t\t{0x0ec0, 0x0ec4, 1},\n\t\t{0x0ec6, 0x0ec8, 2},\n\t\t{0x0ec9, 0x0ecd, 1},\n\t\t{0x0ed0, 0x0ed9, 1},\n\t\t{0x0edc, 0x0edf, 1},\n\t\t{0x0f00, 0x0f47, 1},\n\t\t{0x0f49, 0x0f6c, 1},\n\t\t{0x0f71, 0x0f97, 1},\n\t\t{0x0f99, 0x0fbc, 1},\n\t\t{0x0fbe, 0x0fcc, 1},\n\t\t{0x0fce, 0x0fda, 1},\n\t\t{0x1000, 0x10c5, 1},\n\t\t{0x10c7, 0x10cd, 6},\n\t\t{0x10d0, 0x1248, 1},\n\t\t{0x124a, 0x124d, 1},\n\t\t{0x1250, 0x1256, 1},\n\t\t{0x1258, 0x125a, 2},\n\t\t{0x125b, 0x125d, 1},\n\t\t{0x1260, 0x1288, 1},\n\t\t{0x128a, 0x128d, 1},\n\t\t{0x1290, 0x12b0, 1},\n\t\t{0x12b2, 0x12b5, 1},\n\t\t{0x12b8, 0x12be, 1},\n\t\t{0x12c0, 0x12c2, 2},\n\t\t{0x12c3, 0x12c5, 1},\n\t\t{0x12c8, 0x12d6, 1},\n\t\t{0x12d8, 0x1310, 1},\n\t\t{0x1312, 0x1315, 1},\n\t\t{0x1318, 0x135a, 1},\n\t\t{0x135d, 0x137c, 1},\n\t\t{0x1380, 0x1399, 1},\n\t\t{0x13a0, 0x13f5, 1},\n\t\t{0x13f8, 0x13fd, 1},\n\t\t{0x1400, 0x169c, 1},\n\t\t{0x16a0, 0x16f8, 1},\n\t\t{0x1700, 0x170c, 1},\n\t\t{0x170e, 0x1714, 1},\n\t\t{0x1720, 0x1736, 1},\n\t\t{0x1740, 0x1753, 1},\n\t\t{0x1760, 0x176c, 1},\n\t\t{0x176e, 0x1770, 1},\n\t\t{0x1772, 0x1773, 1},\n\t\t{0x1780, 0x17dd, 1},\n\t\t{0x17e0, 0x17e9, 1},\n\t\t{0x17f0, 0x17f9, 1},\n\t\t{0x1800, 0x180e, 1},\n\t\t{0x1810, 0x1819, 1},\n\t\t{0x1820, 0x1877, 1},\n\t\t{0x1880, 0x18aa, 1},\n\t\t{0x18b0, 0x18f5, 1},\n\t\t{0x1900, 0x191e, 1},\n\t\t{0x1920, 0x192b, 1},\n\t\t{0x1930, 0x193b, 1},\n\t\t{0x1940, 0x1944, 4},\n\t\t{0x1945, 0x196d, 1},\n\t\t{0x1970, 0x1974, 1},\n\t\t{0x1980, 0x19ab, 1},\n\t\t{0x19b0, 0x19c9, 1},\n\t\t{0x19d0, 0x19da, 1},\n\t\t{0x19de, 0x1a1b, 1},\n\t\t{0x1a1e, 0x1a5e, 1},\n\t\t{0x1a60, 0x1a7c, 1},\n\t\t{0x1a7f, 0x1a89, 1},\n\t\t{0x1a90, 0x1a99, 1},\n\t\t{0x1aa0, 0x1aad, 1},\n\t\t{0x1ab0, 0x1abe, 1},\n\t\t{0x1b00, 0x1b4b, 1},\n\t\t{0x1b50, 0x1b7c, 1},\n\t\t{0x1b80, 0x1bf3, 1},\n\t\t{0x1bfc, 0x1c37, 1},\n\t\t{0x1c3b, 0x1c49, 1},\n\t\t{0x1c4d, 0x1c88, 1},\n\t\t{0x1cc0, 0x1cc7, 1},\n\t\t{0x1cd0, 0x1cf6, 1},\n\t\t{0x1cf8, 0x1cf9, 1},\n\t\t{0x1d00, 0x1df5, 1},\n\t\t{0x1dfb, 0x1f15, 1},\n\t\t{0x1f18, 0x1f1d, 1},\n\t\t{0x1f20, 0x1f45, 1},\n\t\t{0x1f48, 0x1f4d, 1},\n\t\t{0x1f50, 0x1f57, 1},\n\t\t{0x1f59, 0x1f5f, 2},\n\t\t{0x1f60, 0x1f7d, 1},\n\t\t{0x1f80, 0x1fb4, 1},\n\t\t{0x1fb6, 0x1fc4, 1},\n\t\t{0x1fc6, 0x1fd3, 1},\n\t\t{0x1fd6, 0x1fdb, 1},\n\t\t{0x1fdd, 0x1fef, 1},\n\t\t{0x1ff2, 0x1ff4, 1},\n\t\t{0x1ff6, 0x1ffe, 1},\n\t\t{0x2000, 0x2064, 1},\n\t\t{0x2066, 0x2071, 1},\n\t\t{0x2074, 0x208e, 1},\n\t\t{0x2090, 0x209c, 1},\n\t\t{0x20a0, 0x20be, 1},\n\t\t{0x20d0, 0x20f0, 1},\n\t\t{0x2100, 0x218b, 1},\n\t\t{0x2190, 0x23fe, 1},\n\t\t{0x2400, 0x2426, 1},\n\t\t{0x2440, 0x244a, 1},\n\t\t{0x2460, 0x2b73, 1},\n\t\t{0x2b76, 0x2b95, 1},\n\t\t{0x2b98, 0x2bb9, 1},\n\t\t{0x2bbd, 0x2bc8, 1},\n\t\t{0x2bca, 0x2bd1, 1},\n\t\t{0x2bec, 0x2bef, 1},\n\t\t{0x2c00, 0x2c2e, 1},\n\t\t{0x2c30, 0x2c5e, 1},\n\t\t{0x2c60, 0x2cf3, 1},\n\t\t{0x2cf9, 0x2d25, 1},\n\t\t{0x2d27, 0x2d2d, 6},\n\t\t{0x2d30, 0x2d67, 1},\n\t\t{0x2d6f, 0x2d70, 1},\n\t\t{0x2d7f, 0x2d96, 1},\n\t\t{0x2da0, 0x2da6, 1},\n\t\t{0x2da8, 0x2dae, 1},\n\t\t{0x2db0, 0x2db6, 1},\n\t\t{0x2db8, 0x2dbe, 1},\n\t\t{0x2dc0, 0x2dc6, 1},\n\t\t{0x2dc8, 0x2dce, 1},\n\t\t{0x2dd0, 0x2dd6, 1},\n\t\t{0x2dd8, 0x2dde, 1},\n\t\t{0x2de0, 0x2e44, 1},\n\t\t{0x2e80, 0x2e99, 1},\n\t\t{0x2e9b, 0x2ef3, 1},\n\t\t{0x2f00, 0x2fd5, 1},\n\t\t{0x2ff0, 0x2ffb, 1},\n\t\t{0x3000, 0x303f, 1},\n\t\t{0x3041, 0x3096, 1},\n\t\t{0x3099, 0x30ff, 1},\n\t\t{0x3105, 0x312d, 1},\n\t\t{0x3131, 0x318e, 1},\n\t\t{0x3190, 0x31ba, 1},\n\t\t{0x31c0, 0x31e3, 1},\n\t\t{0x31f0, 0x321e, 1},\n\t\t{0x3220, 0x32fe, 1},\n\t\t{0x3300, 0x4db5, 1},\n\t\t{0x4dc0, 0x9fd5, 1},\n\t\t{0xa000, 0xa48c, 1},\n\t\t{0xa490, 0xa4c6, 1},\n\t\t{0xa4d0, 0xa62b, 1},\n\t\t{0xa640, 0xa6f7, 1},\n\t\t{0xa700, 0xa7ae, 1},\n\t\t{0xa7b0, 0xa7b7, 1},\n\t\t{0xa7f7, 0xa82b, 1},\n\t\t{0xa830, 0xa839, 1},\n\t\t{0xa840, 0xa877, 1},\n\t\t{0xa880, 0xa8c5, 1},\n\t\t{0xa8ce, 0xa8d9, 1},\n\t\t{0xa8e0, 0xa8fd, 1},\n\t\t{0xa900, 0xa953, 1},\n\t\t{0xa95f, 0xa97c, 1},\n\t\t{0xa980, 0xa9cd, 1},\n\t\t{0xa9cf, 0xa9d9, 1},\n\t\t{0xa9de, 0xa9fe, 1},\n\t\t{0xaa00, 0xaa36, 1},\n\t\t{0xaa40, 0xaa4d, 1},\n\t\t{0xaa50, 0xaa59, 1},\n\t\t{0xaa5c, 0xaac2, 1},\n\t\t{0xaadb, 0xaaf6, 1},\n\t\t{0xab01, 0xab06, 1},\n\t\t{0xab09, 0xab0e, 1},\n\t\t{0xab11, 0xab16, 1},\n\t\t{0xab20, 0xab26, 1},\n\t\t{0xab28, 0xab2e, 1},\n\t\t{0xab30, 0xab65, 1},\n\t\t{0xab70, 0xabed, 1},\n\t\t{0xabf0, 0xabf9, 1},\n\t\t{0xac00, 0xd7a3, 1},\n\t\t{0xd7b0, 0xd7c6, 1},\n\t\t{0xd7cb, 0xd7fb, 1},\n\t\t{0xd800, 0xfa6d, 1},\n\t\t{0xfa70, 0xfad9, 1},\n\t\t{0xfb00, 0xfb06, 1},\n\t\t{0xfb13, 0xfb17, 1},\n\t\t{0xfb1d, 0xfb36, 1},\n\t\t{0xfb38, 0xfb3c, 1},\n\t\t{0xfb3e, 0xfb40, 2},\n\t\t{0xfb41, 0xfb43, 2},\n\t\t{0xfb44, 0xfb46, 2},\n\t\t{0xfb47, 0xfbc1, 1},\n\t\t{0xfbd3, 0xfd3f, 1},\n\t\t{0xfd50, 0xfd8f, 1},\n\t\t{0xfd92, 0xfdc7, 1},\n\t\t{0xfdf0, 0xfdfd, 1},\n\t\t{0xfe00, 0xfe19, 1},\n\t\t{0xfe20, 0xfe52, 1},\n\t\t{0xfe54, 0xfe66, 1},\n\t\t{0xfe68, 0xfe6b, 1},\n\t\t{0xfe70, 0xfe74, 1},\n\t\t{0xfe76, 0xfefc, 1},\n\t\t{0xfeff, 0xff01, 2},\n\t\t{0xff02, 0xffbe, 1},\n\t\t{0xffc2, 0xffc7, 1},\n\t\t{0xffca, 0xffcf, 1},\n\t\t{0xffd2, 0xffd7, 1},\n\t\t{0xffda, 0xffdc, 1},\n\t\t{0xffe0, 0xffe6, 1},\n\t\t{0xffe8, 0xffee, 1},\n\t\t{0xfff9, 0xfffd, 1},\n\t},\n\tR32: []unicode.Range32{\n\t\t{0x00010000, 0x0001000b, 1},\n\t\t{0x0001000d, 0x00010026, 1},\n\t\t{0x00010028, 0x0001003a, 1},\n\t\t{0x0001003c, 0x0001003d, 1},\n\t\t{0x0001003f, 0x0001004d, 1},\n\t\t{0x00010050, 0x0001005d, 1},\n\t\t{0x00010080, 0x000100fa, 1},\n\t\t{0x00010100, 0x00010102, 1},\n\t\t{0x00010107, 0x00010133, 1},\n\t\t{0x00010137, 0x0001018e, 1},\n\t\t{0x00010190, 0x0001019b, 1},\n\t\t{0x000101a0, 0x000101d0, 48},\n\t\t{0x000101d1, 0x000101fd, 1},\n\t\t{0x00010280, 0x0001029c, 1},\n\t\t{0x000102a0, 0x000102d0, 1},\n\t\t{0x000102e0, 0x000102fb, 1},\n\t\t{0x00010300, 0x00010323, 1},\n\t\t{0x00010330, 0x0001034a, 1},\n\t\t{0x00010350, 0x0001037a, 1},\n\t\t{0x00010380, 0x0001039d, 1},\n\t\t{0x0001039f, 0x000103c3, 1},\n\t\t{0x000103c8, 0x000103d5, 1},\n\t\t{0x00010400, 0x0001049d, 1},\n\t\t{0x000104a0, 0x000104a9, 1},\n\t\t{0x000104b0, 0x000104d3, 1},\n\t\t{0x000104d8, 0x000104fb, 1},\n\t\t{0x00010500, 0x00010527, 1},\n\t\t{0x00010530, 0x00010563, 1},\n\t\t{0x0001056f, 0x00010600, 145},\n\t\t{0x00010601, 0x00010736, 1},\n\t\t{0x00010740, 0x00010755, 1},\n\t\t{0x00010760, 0x00010767, 1},\n\t\t{0x00010800, 0x00010805, 1},\n\t\t{0x00010808, 0x0001080a, 2},\n\t\t{0x0001080b, 0x00010835, 1},\n\t\t{0x00010837, 0x00010838, 1},\n\t\t{0x0001083c, 0x0001083f, 3},\n\t\t{0x00010840, 0x00010855, 1},\n\t\t{0x00010857, 0x0001089e, 1},\n\t\t{0x000108a7, 0x000108af, 1},\n\t\t{0x000108e0, 0x000108f2, 1},\n\t\t{0x000108f4, 0x000108f5, 1},\n\t\t{0x000108fb, 0x0001091b, 1},\n\t\t{0x0001091f, 0x00010939, 1},\n\t\t{0x0001093f, 0x00010980, 65},\n\t\t{0x00010981, 0x000109b7, 1},\n\t\t{0x000109bc, 0x000109cf, 1},\n\t\t{0x000109d2, 0x00010a03, 1},\n\t\t{0x00010a05, 0x00010a06, 1},\n\t\t{0x00010a0c, 0x00010a13, 1},\n\t\t{0x00010a15, 0x00010a17, 1},\n\t\t{0x00010a19, 0x00010a33, 1},\n\t\t{0x00010a38, 0x00010a3a, 1},\n\t\t{0x00010a3f, 0x00010a47, 1},\n\t\t{0x00010a50, 0x00010a58, 1},\n\t\t{0x00010a60, 0x00010a9f, 1},\n\t\t{0x00010ac0, 0x00010ae6, 1},\n\t\t{0x00010aeb, 0x00010af6, 1},\n\t\t{0x00010b00, 0x00010b35, 1},\n\t\t{0x00010b39, 0x00010b55, 1},\n\t\t{0x00010b58, 0x00010b72, 1},\n\t\t{0x00010b78, 0x00010b91, 1},\n\t\t{0x00010b99, 0x00010b9c, 1},\n\t\t{0x00010ba9, 0x00010baf, 1},\n\t\t{0x00010c00, 0x00010c48, 1},\n\t\t{0x00010c80, 0x00010cb2, 1},\n\t\t{0x00010cc0, 0x00010cf2, 1},\n\t\t{0x00010cfa, 0x00010cff, 1},\n\t\t{0x00010e60, 0x00010e7e, 1},\n\t\t{0x00011000, 0x0001104d, 1},\n\t\t{0x00011052, 0x0001106f, 1},\n\t\t{0x0001107f, 0x000110c1, 1},\n\t\t{0x000110d0, 0x000110e8, 1},\n\t\t{0x000110f0, 0x000110f9, 1},\n\t\t{0x00011100, 0x00011134, 1},\n\t\t{0x00011136, 0x00011143, 1},\n\t\t{0x00011150, 0x00011176, 1},\n\t\t{0x00011180, 0x000111cd, 1},\n\t\t{0x000111d0, 0x000111df, 1},\n\t\t{0x000111e1, 0x000111f4, 1},\n\t\t{0x00011200, 0x00011211, 1},\n\t\t{0x00011213, 0x0001123e, 1},\n\t\t{0x00011280, 0x00011286, 1},\n\t\t{0x00011288, 0x0001128a, 2},\n\t\t{0x0001128b, 0x0001128d, 1},\n\t\t{0x0001128f, 0x0001129d, 1},\n\t\t{0x0001129f, 0x000112a9, 1},\n\t\t{0x000112b0, 0x000112ea, 1},\n\t\t{0x000112f0, 0x000112f9, 1},\n\t\t{0x00011300, 0x00011303, 1},\n\t\t{0x00011305, 0x0001130c, 1},\n\t\t{0x0001130f, 0x00011310, 1},\n\t\t{0x00011313, 0x00011328, 1},\n\t\t{0x0001132a, 0x00011330, 1},\n\t\t{0x00011332, 0x00011333, 1},\n\t\t{0x00011335, 0x00011339, 1},\n\t\t{0x0001133c, 0x00011344, 1},\n\t\t{0x00011347, 0x00011348, 1},\n\t\t{0x0001134b, 0x0001134d, 1},\n\t\t{0x00011350, 0x00011357, 7},\n\t\t{0x0001135d, 0x00011363, 1},\n\t\t{0x00011366, 0x0001136c, 1},\n\t\t{0x00011370, 0x00011374, 1},\n\t\t{0x00011400, 0x00011459, 1},\n\t\t{0x0001145b, 0x0001145d, 2},\n\t\t{0x00011480, 0x000114c7, 1},\n\t\t{0x000114d0, 0x000114d9, 1},\n\t\t{0x00011580, 0x000115b5, 1},\n\t\t{0x000115b8, 0x000115dd, 1},\n\t\t{0x00011600, 0x00011644, 1},\n\t\t{0x00011650, 0x00011659, 1},\n\t\t{0x00011660, 0x0001166c, 1},\n\t\t{0x00011680, 0x000116b7, 1},\n\t\t{0x000116c0, 0x000116c9, 1},\n\t\t{0x00011700, 0x00011719, 1},\n\t\t{0x0001171d, 0x0001172b, 1},\n\t\t{0x00011730, 0x0001173f, 1},\n\t\t{0x000118a0, 0x000118f2, 1},\n\t\t{0x000118ff, 0x00011ac0, 449},\n\t\t{0x00011ac1, 0x00011af8, 1},\n\t\t{0x00011c00, 0x00011c08, 1},\n\t\t{0x00011c0a, 0x00011c36, 1},\n\t\t{0x00011c38, 0x00011c45, 1},\n\t\t{0x00011c50, 0x00011c6c, 1},\n\t\t{0x00011c70, 0x00011c8f, 1},\n\t\t{0x00011c92, 0x00011ca7, 1},\n\t\t{0x00011ca9, 0x00011cb6, 1},\n\t\t{0x00012000, 0x00012399, 1},\n\t\t{0x00012400, 0x0001246e, 1},\n\t\t{0x00012470, 0x00012474, 1},\n\t\t{0x00012480, 0x00012543, 1},\n\t\t{0x00013000, 0x0001342e, 1},\n\t\t{0x00014400, 0x00014646, 1},\n\t\t{0x00016800, 0x00016a38, 1},\n\t\t{0x00016a40, 0x00016a5e, 1},\n\t\t{0x00016a60, 0x00016a69, 1},\n\t\t{0x00016a6e, 0x00016a6f, 1},\n\t\t{0x00016ad0, 0x00016aed, 1},\n\t\t{0x00016af0, 0x00016af5, 1},\n\t\t{0x00016b00, 0x00016b45, 1},\n\t\t{0x00016b50, 0x00016b59, 1},\n\t\t{0x00016b5b, 0x00016b61, 1},\n\t\t{0x00016b63, 0x00016b77, 1},\n\t\t{0x00016b7d, 0x00016b8f, 1},\n\t\t{0x00016f00, 0x00016f44, 1},\n\t\t{0x00016f50, 0x00016f7e, 1},\n\t\t{0x00016f8f, 0x00016f9f, 1},\n\t\t{0x00016fe0, 0x00017000, 32},\n\t\t{0x00017001, 0x000187ec, 1},\n\t\t{0x00018800, 0x00018af2, 1},\n\t\t{0x0001b000, 0x0001b001, 1},\n\t\t{0x0001bc00, 0x0001bc6a, 1},\n\t\t{0x0001bc70, 0x0001bc7c, 1},\n\t\t{0x0001bc80, 0x0001bc88, 1},\n\t\t{0x0001bc90, 0x0001bc99, 1},\n\t\t{0x0001bc9c, 0x0001bca3, 1},\n\t\t{0x0001d000, 0x0001d0f5, 1},\n\t\t{0x0001d100, 0x0001d126, 1},\n\t\t{0x0001d129, 0x0001d1e8, 1},\n\t\t{0x0001d200, 0x0001d245, 1},\n\t\t{0x0001d300, 0x0001d356, 1},\n\t\t{0x0001d360, 0x0001d371, 1},\n\t\t{0x0001d400, 0x0001d454, 1},\n\t\t{0x0001d456, 0x0001d49c, 1},\n\t\t{0x0001d49e, 0x0001d49f, 1},\n\t\t{0x0001d4a2, 0x0001d4a5, 3},\n\t\t{0x0001d4a6, 0x0001d4a9, 3},\n\t\t{0x0001d4aa, 0x0001d4ac, 1},\n\t\t{0x0001d4ae, 0x0001d4b9, 1},\n\t\t{0x0001d4bb, 0x0001d4bd, 2},\n\t\t{0x0001d4be, 0x0001d4c3, 1},\n\t\t{0x0001d4c5, 0x0001d505, 1},\n\t\t{0x0001d507, 0x0001d50a, 1},\n\t\t{0x0001d50d, 0x0001d514, 1},\n\t\t{0x0001d516, 0x0001d51c, 1},\n\t\t{0x0001d51e, 0x0001d539, 1},\n\t\t{0x0001d53b, 0x0001d53e, 1},\n\t\t{0x0001d540, 0x0001d544, 1},\n\t\t{0x0001d546, 0x0001d54a, 4},\n\t\t{0x0001d54b, 0x0001d550, 1},\n\t\t{0x0001d552, 0x0001d6a5, 1},\n\t\t{0x0001d6a8, 0x0001d7cb, 1},\n\t\t{0x0001d7ce, 0x0001da8b, 1},\n\t\t{0x0001da9b, 0x0001da9f, 1},\n\t\t{0x0001daa1, 0x0001daaf, 1},\n\t\t{0x0001e000, 0x0001e006, 1},\n\t\t{0x0001e008, 0x0001e018, 1},\n\t\t{0x0001e01b, 0x0001e021, 1},\n\t\t{0x0001e023, 0x0001e024, 1},\n\t\t{0x0001e026, 0x0001e02a, 1},\n\t\t{0x0001e800, 0x0001e8c4, 1},\n\t\t{0x0001e8c7, 0x0001e8d6, 1},\n\t\t{0x0001e900, 0x0001e94a, 1},\n\t\t{0x0001e950, 0x0001e959, 1},\n\t\t{0x0001e95e, 0x0001e95f, 1},\n\t\t{0x0001ee00, 0x0001ee03, 1},\n\t\t{0x0001ee05, 0x0001ee1f, 1},\n\t\t{0x0001ee21, 0x0001ee22, 1},\n\t\t{0x0001ee24, 0x0001ee27, 3},\n\t\t{0x0001ee29, 0x0001ee32, 1},\n\t\t{0x0001ee34, 0x0001ee37, 1},\n\t\t{0x0001ee39, 0x0001ee3b, 2},\n\t\t{0x0001ee42, 0x0001ee47, 5},\n\t\t{0x0001ee49, 0x0001ee4d, 2},\n\t\t{0x0001ee4e, 0x0001ee4f, 1},\n\t\t{0x0001ee51, 0x0001ee52, 1},\n\t\t{0x0001ee54, 0x0001ee57, 3},\n\t\t{0x0001ee59, 0x0001ee61, 2},\n\t\t{0x0001ee62, 0x0001ee64, 2},\n\t\t{0x0001ee67, 0x0001ee6a, 1},\n\t\t{0x0001ee6c, 0x0001ee72, 1},\n\t\t{0x0001ee74, 0x0001ee77, 1},\n\t\t{0x0001ee79, 0x0001ee7c, 1},\n\t\t{0x0001ee7e, 0x0001ee80, 2},\n\t\t{0x0001ee81, 0x0001ee89, 1},\n\t\t{0x0001ee8b, 0x0001ee9b, 1},\n\t\t{0x0001eea1, 0x0001eea3, 1},\n\t\t{0x0001eea5, 0x0001eea9, 1},\n\t\t{0x0001eeab, 0x0001eebb, 1},\n\t\t{0x0001eef0, 0x0001eef1, 1},\n\t\t{0x0001f000, 0x0001f02b, 1},\n\t\t{0x0001f030, 0x0001f093, 1},\n\t\t{0x0001f0a0, 0x0001f0ae, 1},\n\t\t{0x0001f0b1, 0x0001f0bf, 1},\n\t\t{0x0001f0c1, 0x0001f0cf, 1},\n\t\t{0x0001f0d1, 0x0001f0f5, 1},\n\t\t{0x0001f100, 0x0001f10c, 1},\n\t\t{0x0001f110, 0x0001f12e, 1},\n\t\t{0x0001f130, 0x0001f16b, 1},\n\t\t{0x0001f170, 0x0001f1ac, 1},\n\t\t{0x0001f1e6, 0x0001f202, 1},\n\t\t{0x0001f210, 0x0001f23b, 1},\n\t\t{0x0001f240, 0x0001f248, 1},\n\t\t{0x0001f250, 0x0001f251, 1},\n\t\t{0x0001f300, 0x0001f6d2, 1},\n\t\t{0x0001f6e0, 0x0001f6ec, 1},\n\t\t{0x0001f6f0, 0x0001f6f6, 1},\n\t\t{0x0001f700, 0x0001f773, 1},\n\t\t{0x0001f780, 0x0001f7d4, 1},\n\t\t{0x0001f800, 0x0001f80b, 1},\n\t\t{0x0001f810, 0x0001f847, 1},\n\t\t{0x0001f850, 0x0001f859, 1},\n\t\t{0x0001f860, 0x0001f887, 1},\n\t\t{0x0001f890, 0x0001f8ad, 1},\n\t\t{0x0001f910, 0x0001f91e, 1},\n\t\t{0x0001f920, 0x0001f927, 1},\n\t\t{0x0001f930, 0x0001f933, 3},\n\t\t{0x0001f934, 0x0001f93e, 1},\n\t\t{0x0001f940, 0x0001f94b, 1},\n\t\t{0x0001f950, 0x0001f95e, 1},\n\t\t{0x0001f980, 0x0001f991, 1},\n\t\t{0x0001f9c0, 0x00020000, 1600},\n\t\t{0x00020001, 0x0002a6d6, 1},\n\t\t{0x0002a700, 0x0002b734, 1},\n\t\t{0x0002b740, 0x0002b81d, 1},\n\t\t{0x0002b820, 0x0002cea1, 1},\n\t\t{0x0002f800, 0x0002fa1d, 1},\n\t\t{0x000e0001, 0x000e0020, 31},\n\t\t{0x000e0021, 0x000e007f, 1},\n\t\t{0x000e0100, 0x000e01ef, 1},\n\t\t{0x000f0000, 0x000ffffd, 1},\n\t\t{0x00100000, 0x0010fffd, 1},\n\t},\n\tLatinOffset: 0,\n}\n\n// Total size 44206 bytes (43 KiB)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/.travis.yml",
    "content": "language: go\n\ngo:\n    - 1.4\n    - 1.5\n    - 1.6\n    - 1.7\n    - 1.8\n    - 1.9\n    - tip\n\ngo_import_path: gopkg.in/yaml.v2\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/LICENSE",
    "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 {yyyy} {name of copyright owner}\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": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/LICENSE.libyaml",
    "content": "The following files were ported to Go from C files of libyaml, and thus\nare still covered by their original copyright and license:\n\n    apic.go\n    emitterc.go\n    parserc.go\n    readerc.go\n    scannerc.go\n    writerc.go\n    yamlh.go\n    yamlprivateh.go\n\nCopyright (c) 2006 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/NOTICE",
    "content": "Copyright 2011-2016 Canonical 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\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"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/README.md",
    "content": "# YAML support for the Go language\n\nIntroduction\n------------\n\nThe yaml package enables Go programs to comfortably encode and decode YAML\nvalues. It was developed within [Canonical](https://www.canonical.com) as\npart of the [juju](https://juju.ubuntu.com) project, and is based on a\npure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)\nC library to parse and generate YAML data quickly and reliably.\n\nCompatibility\n-------------\n\nThe yaml package supports most of YAML 1.1 and 1.2, including support for\nanchors, tags, map merging, etc. Multi-document unmarshalling is not yet\nimplemented, and base-60 floats from YAML 1.1 are purposefully not\nsupported since they're a poor design and are gone in YAML 1.2.\n\nInstallation and usage\n----------------------\n\nThe import path for the package is *gopkg.in/yaml.v2*.\n\nTo install it, run:\n\n    go get gopkg.in/yaml.v2\n\nAPI documentation\n-----------------\n\nIf opened in a browser, the import path itself leads to the API documentation:\n\n  * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2)\n\nAPI stability\n-------------\n\nThe package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in).\n\n\nLicense\n-------\n\nThe yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.\n\n\nExample\n-------\n\n```Go\npackage main\n\nimport (\n        \"fmt\"\n        \"log\"\n\n        \"gopkg.in/yaml.v2\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\n// Note: struct fields must be public in order for unmarshal to\n// correctly populate the data.\ntype T struct {\n        A string\n        B struct {\n                RenamedC int   `yaml:\"c\"`\n                D        []int `yaml:\",flow\"`\n        }\n}\n\nfunc main() {\n        t := T{}\n    \n        err := yaml.Unmarshal([]byte(data), &t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t:\\n%v\\n\\n\", t)\n    \n        d, err := yaml.Marshal(&t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t dump:\\n%s\\n\\n\", string(d))\n    \n        m := make(map[interface{}]interface{})\n    \n        err = yaml.Unmarshal([]byte(data), &m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m:\\n%v\\n\\n\", m)\n    \n        d, err = yaml.Marshal(&m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m dump:\\n%s\\n\\n\", string(d))\n}\n```\n\nThis example will generate the following output:\n\n```\n--- t:\n{Easy! {2 [3 4]}}\n\n--- t dump:\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n\n\n--- m:\nmap[a:Easy! b:map[c:2 d:[3 4]]]\n\n--- m dump:\na: Easy!\nb:\n  c: 2\n  d:\n  - 3\n  - 4\n```\n\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/apic.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n)\n\nfunc yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t//fmt.Println(\"yaml_insert_token\", \"pos:\", pos, \"typ:\", token.typ, \"head:\", parser.tokens_head, \"len:\", len(parser.tokens))\n\n\t// Check if we can move the queue at the beginning of the buffer.\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\tparser.tokens = append(parser.tokens, *token)\n\tif pos < 0 {\n\t\treturn\n\t}\n\tcopy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])\n\tparser.tokens[parser.tokens_head+pos] = *token\n}\n\n// Create a new parser object.\nfunc yaml_parser_initialize(parser *yaml_parser_t) bool {\n\t*parser = yaml_parser_t{\n\t\traw_buffer: make([]byte, 0, input_raw_buffer_size),\n\t\tbuffer:     make([]byte, 0, input_buffer_size),\n\t}\n\treturn true\n}\n\n// Destroy a parser object.\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n// String read handler.\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n// Reader read handler.\nfunc yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n// Set a string input.\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_string_read_handler\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n// Set a file input.\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_reader_read_handler\n\tparser.input_reader = r\n}\n\n// Set the source encoding.\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the encoding only once\")\n\t}\n\tparser.encoding = encoding\n}\n\n// Create a new emitter object.\nfunc yaml_emitter_initialize(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{\n\t\tbuffer:     make([]byte, output_buffer_size),\n\t\traw_buffer: make([]byte, 0, output_raw_buffer_size),\n\t\tstates:     make([]yaml_emitter_state_t, 0, initial_stack_size),\n\t\tevents:     make([]yaml_event_t, 0, initial_queue_size),\n\t}\n}\n\n// Destroy an emitter object.\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n// String write handler.\nfunc yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t*emitter.output_buffer = append(*emitter.output_buffer, buffer...)\n\treturn nil\n}\n\n// yaml_writer_write_handler uses emitter.output_writer to write the\n// emitted text.\nfunc yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_writer.Write(buffer)\n\treturn err\n}\n\n// Set a string output.\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = output_buffer\n}\n\n// Set a file output.\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n// Set the output encoding.\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the output encoding only once\")\n\t}\n\temitter.encoding = encoding\n}\n\n// Set the canonical output style.\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n//// Set the indentation increment.\nfunc yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {\n\tif indent < 2 || indent > 9 {\n\t\tindent = 2\n\t}\n\temitter.best_indent = indent\n}\n\n// Set the preferred line width.\nfunc yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {\n\tif width < 0 {\n\t\twidth = -1\n\t}\n\temitter.best_width = width\n}\n\n// Set if unescaped non-ASCII characters are allowed.\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n// Set the preferred line break character.\nfunc yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {\n\temitter.line_break = line_break\n}\n\n///*\n// * Destroy a token object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_token_delete(yaml_token_t *token)\n//{\n//    assert(token);  // Non-NULL token object expected.\n//\n//    switch (token.type)\n//    {\n//        case YAML_TAG_DIRECTIVE_TOKEN:\n//            yaml_free(token.data.tag_directive.handle);\n//            yaml_free(token.data.tag_directive.prefix);\n//            break;\n//\n//        case YAML_ALIAS_TOKEN:\n//            yaml_free(token.data.alias.value);\n//            break;\n//\n//        case YAML_ANCHOR_TOKEN:\n//            yaml_free(token.data.anchor.value);\n//            break;\n//\n//        case YAML_TAG_TOKEN:\n//            yaml_free(token.data.tag.handle);\n//            yaml_free(token.data.tag.suffix);\n//            break;\n//\n//        case YAML_SCALAR_TOKEN:\n//            yaml_free(token.data.scalar.value);\n//            break;\n//\n//        default:\n//            break;\n//    }\n//\n//    memset(token, 0, sizeof(yaml_token_t));\n//}\n//\n///*\n// * Check if a string is a valid UTF-8 sequence.\n// *\n// * Check 'reader.c' for more details on UTF-8 encoding.\n// */\n//\n//static int\n//yaml_check_utf8(yaml_char_t *start, size_t length)\n//{\n//    yaml_char_t *end = start+length;\n//    yaml_char_t *pointer = start;\n//\n//    while (pointer < end) {\n//        unsigned char octet;\n//        unsigned int width;\n//        unsigned int value;\n//        size_t k;\n//\n//        octet = pointer[0];\n//        width = (octet & 0x80) == 0x00 ? 1 :\n//                (octet & 0xE0) == 0xC0 ? 2 :\n//                (octet & 0xF0) == 0xE0 ? 3 :\n//                (octet & 0xF8) == 0xF0 ? 4 : 0;\n//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :\n//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :\n//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :\n//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;\n//        if (!width) return 0;\n//        if (pointer+width > end) return 0;\n//        for (k = 1; k < width; k ++) {\n//            octet = pointer[k];\n//            if ((octet & 0xC0) != 0x80) return 0;\n//            value = (value << 6) + (octet & 0x3F);\n//        }\n//        if (!((width == 1) ||\n//            (width == 2 && value >= 0x80) ||\n//            (width == 3 && value >= 0x800) ||\n//            (width == 4 && value >= 0x10000))) return 0;\n//\n//        pointer += width;\n//    }\n//\n//    return 1;\n//}\n//\n\n// Create STREAM-START.\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(\n\tevent *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool,\n) {\n\t*event = yaml_event_t{\n\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\tversion_directive: version_directive,\n\t\ttag_directives:    tag_directives,\n\t\timplicit:          implicit,\n\t}\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n}\n\n///*\n// * Create ALIAS.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t)\n//{\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    anchor_copy *yaml_char_t = NULL\n//\n//    assert(event) // Non-NULL event object is expected.\n//    assert(anchor) // Non-NULL anchor is expected.\n//\n//    if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0\n//\n//    anchor_copy = yaml_strdup(anchor)\n//    if (!anchor_copy)\n//        return 0\n//\n//    ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark)\n//\n//    return 1\n//}\n\n// Create SCALAR.\nfunc yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:             yaml_SCALAR_EVENT,\n\t\tanchor:          anchor,\n\t\ttag:             tag,\n\t\tvalue:           value,\n\t\timplicit:        plain_implicit,\n\t\tquoted_implicit: quoted_implicit,\n\t\tstyle:           yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-START.\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_SEQUENCE_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-END.\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_SEQUENCE_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create MAPPING-START.\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_MAPPING_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n// Destroy an event object.\nfunc yaml_event_delete(event *yaml_event_t) {\n\t*event = yaml_event_t{}\n}\n\n///*\n// * Create a document object.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_initialize(document *yaml_document_t,\n//        version_directive *yaml_version_directive_t,\n//        tag_directives_start *yaml_tag_directive_t,\n//        tag_directives_end *yaml_tag_directive_t,\n//        start_implicit int, end_implicit int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    struct {\n//        start *yaml_node_t\n//        end *yaml_node_t\n//        top *yaml_node_t\n//    } nodes = { NULL, NULL, NULL }\n//    version_directive_copy *yaml_version_directive_t = NULL\n//    struct {\n//        start *yaml_tag_directive_t\n//        end *yaml_tag_directive_t\n//        top *yaml_tag_directive_t\n//    } tag_directives_copy = { NULL, NULL, NULL }\n//    value yaml_tag_directive_t = { NULL, NULL }\n//    mark yaml_mark_t = { 0, 0, 0 }\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert((tag_directives_start && tag_directives_end) ||\n//            (tag_directives_start == tag_directives_end))\n//                            // Valid tag directives are expected.\n//\n//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error\n//\n//    if (version_directive) {\n//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))\n//        if (!version_directive_copy) goto error\n//        version_directive_copy.major = version_directive.major\n//        version_directive_copy.minor = version_directive.minor\n//    }\n//\n//    if (tag_directives_start != tag_directives_end) {\n//        tag_directive *yaml_tag_directive_t\n//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))\n//            goto error\n//        for (tag_directive = tag_directives_start\n//                tag_directive != tag_directives_end; tag_directive ++) {\n//            assert(tag_directive.handle)\n//            assert(tag_directive.prefix)\n//            if (!yaml_check_utf8(tag_directive.handle,\n//                        strlen((char *)tag_directive.handle)))\n//                goto error\n//            if (!yaml_check_utf8(tag_directive.prefix,\n//                        strlen((char *)tag_directive.prefix)))\n//                goto error\n//            value.handle = yaml_strdup(tag_directive.handle)\n//            value.prefix = yaml_strdup(tag_directive.prefix)\n//            if (!value.handle || !value.prefix) goto error\n//            if (!PUSH(&context, tag_directives_copy, value))\n//                goto error\n//            value.handle = NULL\n//            value.prefix = NULL\n//        }\n//    }\n//\n//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,\n//            tag_directives_copy.start, tag_directives_copy.top,\n//            start_implicit, end_implicit, mark, mark)\n//\n//    return 1\n//\n//error:\n//    STACK_DEL(&context, nodes)\n//    yaml_free(version_directive_copy)\n//    while (!STACK_EMPTY(&context, tag_directives_copy)) {\n//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)\n//        yaml_free(value.handle)\n//        yaml_free(value.prefix)\n//    }\n//    STACK_DEL(&context, tag_directives_copy)\n//    yaml_free(value.handle)\n//    yaml_free(value.prefix)\n//\n//    return 0\n//}\n//\n///*\n// * Destroy a document object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_document_delete(document *yaml_document_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    tag_directive *yaml_tag_directive_t\n//\n//    context.error = YAML_NO_ERROR // Eliminate a compiler warning.\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    while (!STACK_EMPTY(&context, document.nodes)) {\n//        node yaml_node_t = POP(&context, document.nodes)\n//        yaml_free(node.tag)\n//        switch (node.type) {\n//            case YAML_SCALAR_NODE:\n//                yaml_free(node.data.scalar.value)\n//                break\n//            case YAML_SEQUENCE_NODE:\n//                STACK_DEL(&context, node.data.sequence.items)\n//                break\n//            case YAML_MAPPING_NODE:\n//                STACK_DEL(&context, node.data.mapping.pairs)\n//                break\n//            default:\n//                assert(0) // Should not happen.\n//        }\n//    }\n//    STACK_DEL(&context, document.nodes)\n//\n//    yaml_free(document.version_directive)\n//    for (tag_directive = document.tag_directives.start\n//            tag_directive != document.tag_directives.end\n//            tag_directive++) {\n//        yaml_free(tag_directive.handle)\n//        yaml_free(tag_directive.prefix)\n//    }\n//    yaml_free(document.tag_directives.start)\n//\n//    memset(document, 0, sizeof(yaml_document_t))\n//}\n//\n///**\n// * Get a document node.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_node(document *yaml_document_t, index int)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {\n//        return document.nodes.start + index - 1\n//    }\n//    return NULL\n//}\n//\n///**\n// * Get the root object.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_root_node(document *yaml_document_t)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (document.nodes.top != document.nodes.start) {\n//        return document.nodes.start\n//    }\n//    return NULL\n//}\n//\n///*\n// * Add a scalar node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_scalar(document *yaml_document_t,\n//        tag *yaml_char_t, value *yaml_char_t, length int,\n//        style yaml_scalar_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    value_copy *yaml_char_t = NULL\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert(value) // Non-NULL value is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (length < 0) {\n//        length = strlen((char *)value)\n//    }\n//\n//    if (!yaml_check_utf8(value, length)) goto error\n//    value_copy = yaml_malloc(length+1)\n//    if (!value_copy) goto error\n//    memcpy(value_copy, value, length)\n//    value_copy[length] = '\\0'\n//\n//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    yaml_free(tag_copy)\n//    yaml_free(value_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a sequence node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_sequence(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_sequence_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_item_t\n//        end *yaml_node_item_t\n//        top *yaml_node_item_t\n//    } items = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error\n//\n//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, items)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a mapping node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_mapping(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_mapping_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_pair_t\n//        end *yaml_node_pair_t\n//        top *yaml_node_pair_t\n//    } pairs = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error\n//\n//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, pairs)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Append an item to a sequence node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_sequence_item(document *yaml_document_t,\n//        sequence int, item int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(sequence > 0\n//            && document.nodes.start + sequence <= document.nodes.top)\n//                            // Valid sequence id is required.\n//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)\n//                            // A sequence node is required.\n//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)\n//                            // Valid item id is required.\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[sequence-1].data.sequence.items, item))\n//        return 0\n//\n//    return 1\n//}\n//\n///*\n// * Append a pair of a key and a value to a mapping node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_mapping_pair(document *yaml_document_t,\n//        mapping int, key int, value int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    pair yaml_node_pair_t\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(mapping > 0\n//            && document.nodes.start + mapping <= document.nodes.top)\n//                            // Valid mapping id is required.\n//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)\n//                            // A mapping node is required.\n//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)\n//                            // Valid key id is required.\n//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)\n//                            // Valid value id is required.\n//\n//    pair.key = key\n//    pair.value = value\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[mapping-1].data.mapping.pairs, pair))\n//        return 0\n//\n//    return 1\n//}\n//\n//\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/decode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\nconst (\n\tdocumentNode = 1 << iota\n\tmappingNode\n\tsequenceNode\n\tscalarNode\n\taliasNode\n)\n\ntype node struct {\n\tkind         int\n\tline, column int\n\ttag          string\n\t// For an alias node, alias holds the resolved alias.\n\talias    *node\n\tvalue    string\n\timplicit bool\n\tchildren []*node\n\tanchors  map[string]*node\n}\n\n// ----------------------------------------------------------------------------\n// Parser, produces a node tree out of a libyaml event stream.\n\ntype parser struct {\n\tparser   yaml_parser_t\n\tevent    yaml_event_t\n\tdoc      *node\n\tdoneInit bool\n}\n\nfunc newParser(b []byte) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\tyaml_parser_set_input_string(&p.parser, b)\n\treturn &p\n}\n\nfunc newParserFromReader(r io.Reader) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tyaml_parser_set_input_reader(&p.parser, r)\n\treturn &p\n}\n\nfunc (p *parser) init() {\n\tif p.doneInit {\n\t\treturn\n\t}\n\tp.expect(yaml_STREAM_START_EVENT)\n\tp.doneInit = true\n}\n\nfunc (p *parser) destroy() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tyaml_event_delete(&p.event)\n\t}\n\tyaml_parser_delete(&p.parser)\n}\n\n// expect consumes an event from the event stream and\n// checks that it's of the expected type.\nfunc (p *parser) expect(e yaml_event_type_t) {\n\tif p.event.typ == yaml_NO_EVENT {\n\t\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\t\tp.fail()\n\t\t}\n\t}\n\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\tfailf(\"attempted to go past the end of stream; corrupted value?\")\n\t}\n\tif p.event.typ != e {\n\t\tp.parser.problem = fmt.Sprintf(\"expected %s event but got %s\", e, p.event.typ)\n\t\tp.fail()\n\t}\n\tyaml_event_delete(&p.event)\n\tp.event.typ = yaml_NO_EVENT\n}\n\n// peek peeks at the next event in the event stream,\n// puts the results into p.event and returns the event type.\nfunc (p *parser) peek() yaml_event_type_t {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\treturn p.event.typ\n\t}\n\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\tp.fail()\n\t}\n\treturn p.event.typ\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t} else if p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\n\t}\n\tif line != 0 {\n\t\twhere = \"line \" + strconv.Itoa(line) + \": \"\n\t}\n\tvar msg string\n\tif len(p.parser.problem) > 0 {\n\t\tmsg = p.parser.problem\n\t} else {\n\t\tmsg = \"unknown problem parsing YAML content\"\n\t}\n\tfailf(\"%s%s\", where, msg)\n}\n\nfunc (p *parser) anchor(n *node, anchor []byte) {\n\tif anchor != nil {\n\t\tp.doc.anchors[string(anchor)] = n\n\t}\n}\n\nfunc (p *parser) parse() *node {\n\tp.init()\n\tswitch p.peek() {\n\tcase yaml_SCALAR_EVENT:\n\t\treturn p.scalar()\n\tcase yaml_ALIAS_EVENT:\n\t\treturn p.alias()\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn p.mapping()\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn p.sequence()\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\treturn p.document()\n\tcase yaml_STREAM_END_EVENT:\n\t\t// Happens when attempting to decode an empty buffer.\n\t\treturn nil\n\tdefault:\n\t\tpanic(\"attempted to parse unknown event: \" + p.event.typ.String())\n\t}\n}\n\nfunc (p *parser) node(kind int) *node {\n\treturn &node{\n\t\tkind:   kind,\n\t\tline:   p.event.start_mark.line,\n\t\tcolumn: p.event.start_mark.column,\n\t}\n}\n\nfunc (p *parser) document() *node {\n\tn := p.node(documentNode)\n\tn.anchors = make(map[string]*node)\n\tp.doc = n\n\tp.expect(yaml_DOCUMENT_START_EVENT)\n\tn.children = append(n.children, p.parse())\n\tp.expect(yaml_DOCUMENT_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) alias() *node {\n\tn := p.node(aliasNode)\n\tn.value = string(p.event.anchor)\n\tn.alias = p.doc.anchors[n.value]\n\tif n.alias == nil {\n\t\tfailf(\"unknown anchor '%s' referenced\", n.value)\n\t}\n\tp.expect(yaml_ALIAS_EVENT)\n\treturn n\n}\n\nfunc (p *parser) scalar() *node {\n\tn := p.node(scalarNode)\n\tn.value = string(p.event.value)\n\tn.tag = string(p.event.tag)\n\tn.implicit = p.event.implicit\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SCALAR_EVENT)\n\treturn n\n}\n\nfunc (p *parser) sequence() *node {\n\tn := p.node(sequenceNode)\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SEQUENCE_START_EVENT)\n\tfor p.peek() != yaml_SEQUENCE_END_EVENT {\n\t\tn.children = append(n.children, p.parse())\n\t}\n\tp.expect(yaml_SEQUENCE_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) mapping() *node {\n\tn := p.node(mappingNode)\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_MAPPING_START_EVENT)\n\tfor p.peek() != yaml_MAPPING_END_EVENT {\n\t\tn.children = append(n.children, p.parse(), p.parse())\n\t}\n\tp.expect(yaml_MAPPING_END_EVENT)\n\treturn n\n}\n\n// ----------------------------------------------------------------------------\n// Decoder, unmarshals a node into a provided value.\n\ntype decoder struct {\n\tdoc     *node\n\taliases map[*node]bool\n\tmapType reflect.Type\n\tterrors []string\n\tstrict  bool\n}\n\nvar (\n\tmapItemType    = reflect.TypeOf(MapItem{})\n\tdurationType   = reflect.TypeOf(time.Duration(0))\n\tdefaultMapType = reflect.TypeOf(map[interface{}]interface{}{})\n\tifaceType      = defaultMapType.Elem()\n\ttimeType       = reflect.TypeOf(time.Time{})\n\tptrTimeType    = reflect.TypeOf(&time.Time{})\n)\n\nfunc newDecoder(strict bool) *decoder {\n\td := &decoder{mapType: defaultMapType, strict: strict}\n\td.aliases = make(map[*node]bool)\n\treturn d\n}\n\nfunc (d *decoder) terror(n *node, tag string, out reflect.Value) {\n\tif n.tag != \"\" {\n\t\ttag = n.tag\n\t}\n\tvalue := n.value\n\tif tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG {\n\t\tif len(value) > 10 {\n\t\t\tvalue = \" `\" + value[:7] + \"...`\"\n\t\t} else {\n\t\t\tvalue = \" `\" + value + \"`\"\n\t\t}\n\t}\n\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: cannot unmarshal %s%s into %s\", n.line+1, shortTag(tag), value, out.Type()))\n}\n\nfunc (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) {\n\tterrlen := len(d.terrors)\n\terr := u.UnmarshalYAML(func(v interface{}) (err error) {\n\t\tdefer handleErr(&err)\n\t\td.unmarshal(n, reflect.ValueOf(v))\n\t\tif len(d.terrors) > terrlen {\n\t\t\tissues := d.terrors[terrlen:]\n\t\t\td.terrors = d.terrors[:terrlen]\n\t\t\treturn &TypeError{issues}\n\t\t}\n\t\treturn nil\n\t})\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\n// d.prepare initializes and dereferences pointers and calls UnmarshalYAML\n// if a value is found to implement it.\n// It returns the initialized and dereferenced out value, whether\n// unmarshalling was already done by UnmarshalYAML, and if so whether\n// its types unmarshalled appropriately.\n//\n// If n holds a null value, prepare returns before doing anything.\nfunc (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {\n\tif n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == \"\" && (n.value == \"null\" || n.value == \"~\" || n.value == \"\" && n.implicit) {\n\t\treturn out, false, false\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tif out.Kind() == reflect.Ptr {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.New(out.Type().Elem()))\n\t\t\t}\n\t\t\tout = out.Elem()\n\t\t\tagain = true\n\t\t}\n\t\tif out.CanAddr() {\n\t\t\tif u, ok := out.Addr().Interface().(Unmarshaler); ok {\n\t\t\t\tgood = d.callUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t}\n\t}\n\treturn out, false, false\n}\n\nfunc (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {\n\tswitch n.kind {\n\tcase documentNode:\n\t\treturn d.document(n, out)\n\tcase aliasNode:\n\t\treturn d.alias(n, out)\n\t}\n\tout, unmarshaled, good := d.prepare(n, out)\n\tif unmarshaled {\n\t\treturn good\n\t}\n\tswitch n.kind {\n\tcase scalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase mappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase sequenceNode:\n\t\tgood = d.sequence(n, out)\n\tdefault:\n\t\tpanic(\"internal error: unknown node kind: \" + strconv.Itoa(n.kind))\n\t}\n\treturn good\n}\n\nfunc (d *decoder) document(n *node, out reflect.Value) (good bool) {\n\tif len(n.children) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.children[0], out)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (d *decoder) alias(n *node, out reflect.Value) (good bool) {\n\tif d.aliases[n] {\n\t\t// TODO this could actually be allowed in some circumstances.\n\t\tfailf(\"anchor '%s' value contains itself\", n.value)\n\t}\n\td.aliases[n] = true\n\tgood = d.unmarshal(n.alias, out)\n\tdelete(d.aliases, n)\n\treturn good\n}\n\nvar zeroValue reflect.Value\n\nfunc resetMap(out reflect.Value) {\n\tfor _, k := range out.MapKeys() {\n\t\tout.SetMapIndex(k, zeroValue)\n\t}\n}\n\nfunc (d *decoder) scalar(n *node, out reflect.Value) bool {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.tag == \"\" && !n.implicit {\n\t\ttag = yaml_STR_TAG\n\t\tresolved = n.value\n\t} else {\n\t\ttag, resolved = resolve(n.tag, n.value)\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfailf(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif resolved == nil {\n\t\tif out.Kind() == reflect.Map && !out.CanAddr() {\n\t\t\tresetMap(out)\n\t\t} else {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t}\n\t\treturn true\n\t}\n\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t// We've resolved to exactly the type we want, so use that.\n\t\tout.Set(resolvedv)\n\t\treturn true\n\t}\n\t// Perhaps we can use the value as a TextUnmarshaler to\n\t// set its value.\n\tif out.CanAddr() {\n\t\tu, ok := out.Addr().Interface().(encoding.TextUnmarshaler)\n\t\tif ok {\n\t\t\tvar text []byte\n\t\t\tif tag == yaml_BINARY_TAG {\n\t\t\t\ttext = []byte(resolved.(string))\n\t\t\t} else {\n\t\t\t\t// We let any value be unmarshaled into TextUnmarshaler.\n\t\t\t\t// That might be more lax than we'd like, but the\n\t\t\t\t// TextUnmarshaler itself should bowl out any dubious values.\n\t\t\t\ttext = []byte(n.value)\n\t\t\t}\n\t\t\terr := u.UnmarshalText(text)\n\t\t\tif err != nil {\n\t\t\t\tfail(err)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tout.SetString(resolved.(string))\n\t\t\treturn true\n\t\t}\n\t\tif resolved != nil {\n\t\t\tout.SetString(n.value)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Interface:\n\t\tif resolved == nil {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t} else if tag == yaml_TIMESTAMP_TAG {\n\t\t\t// It looks like a timestamp but for backward compatibility\n\t\t\t// reasons we set it as a string, so that code that unmarshals\n\t\t\t// timestamp-like values into interface{} will continue to\n\t\t\t// see a string and not a time.Time.\n\t\t\t// TODO(v3) Drop this.\n\t\t\tout.Set(reflect.ValueOf(n.value))\n\t\t} else {\n\t\t\tout.Set(reflect.ValueOf(resolved))\n\t\t}\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase string:\n\t\t\tif out.Type() == durationType {\n\t\t\t\td, err := time.ParseDuration(resolved)\n\t\t\t\tif err == nil {\n\t\t\t\t\tout.SetInt(int64(d))\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase bool:\n\t\t\tout.SetBool(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase uint64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Struct:\n\t\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t\tout.Set(resolvedv)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Ptr:\n\t\tif out.Type().Elem() == reflect.TypeOf(resolved) {\n\t\t\t// TODO DOes this make sense? When is out a Ptr except when decoding a nil value?\n\t\t\telem := reflect.New(out.Type().Elem())\n\t\t\telem.Elem().Set(reflect.ValueOf(resolved))\n\t\t\tout.Set(elem)\n\t\t\treturn true\n\t\t}\n\t}\n\td.terror(n, tag, out)\n\treturn false\n}\n\nfunc settableValueOf(i interface{}) reflect.Value {\n\tv := reflect.ValueOf(i)\n\tsv := reflect.New(v.Type()).Elem()\n\tsv.Set(v)\n\treturn sv\n}\n\nfunc (d *decoder) sequence(n *node, out reflect.Value) (good bool) {\n\tl := len(n.children)\n\n\tvar iface reflect.Value\n\tswitch out.Kind() {\n\tcase reflect.Slice:\n\t\tout.Set(reflect.MakeSlice(out.Type(), l, l))\n\tcase reflect.Array:\n\t\tif l != out.Len() {\n\t\t\tfailf(\"invalid array: want %d elements but got %d\", out.Len(), l)\n\t\t}\n\tcase reflect.Interface:\n\t\t// No type hints. Will have to use a generic sequence.\n\t\tiface = out\n\t\tout = settableValueOf(make([]interface{}, l))\n\tdefault:\n\t\td.terror(n, yaml_SEQ_TAG, out)\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tj := 0\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.children[i], e); ok {\n\t\t\tout.Index(j).Set(e)\n\t\t\tj++\n\t\t}\n\t}\n\tif out.Kind() != reflect.Array {\n\t\tout.Set(out.Slice(0, j))\n\t}\n\tif iface.IsValid() {\n\t\tiface.Set(out)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mapping(n *node, out reflect.Value) (good bool) {\n\tswitch out.Kind() {\n\tcase reflect.Struct:\n\t\treturn d.mappingStruct(n, out)\n\tcase reflect.Slice:\n\t\treturn d.mappingSlice(n, out)\n\tcase reflect.Map:\n\t\t// okay\n\tcase reflect.Interface:\n\t\tif d.mapType.Kind() == reflect.Map {\n\t\t\tiface := out\n\t\t\tout = reflect.MakeMap(d.mapType)\n\t\t\tiface.Set(out)\n\t\t} else {\n\t\t\tslicev := reflect.New(d.mapType).Elem()\n\t\t\tif !d.mappingSlice(n, slicev) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tout.Set(slicev)\n\t\t\treturn true\n\t\t}\n\tdefault:\n\t\td.terror(n, yaml_MAP_TAG, out)\n\t\treturn false\n\t}\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tmapType := d.mapType\n\tif outt.Key() == ifaceType && outt.Elem() == ifaceType {\n\t\td.mapType = outt\n\t}\n\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t}\n\tl := len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\n\t\t\tkkind := k.Kind()\n\t\t\tif kkind == reflect.Interface {\n\t\t\t\tkkind = k.Elem().Kind()\n\t\t\t}\n\t\t\tif kkind == reflect.Map || kkind == reflect.Slice {\n\t\t\t\tfailf(\"invalid map key: %#v\", k.Interface())\n\t\t\t}\n\t\t\te := reflect.New(et).Elem()\n\t\t\tif d.unmarshal(n.children[i+1], e) {\n\t\t\t\td.setMapIndex(n.children[i+1], out, k, e)\n\t\t\t}\n\t\t}\n\t}\n\td.mapType = mapType\n\treturn true\n}\n\nfunc (d *decoder) setMapIndex(n *node, out, k, v reflect.Value) {\n\tif d.strict && out.MapIndex(k) != zeroValue {\n\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: key %#v already set in map\", n.line+1, k.Interface()))\n\t\treturn\n\t}\n\tout.SetMapIndex(k, v)\n}\n\nfunc (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) {\n\toutt := out.Type()\n\tif outt.Elem() != mapItemType {\n\t\td.terror(n, yaml_MAP_TAG, out)\n\t\treturn false\n\t}\n\n\tmapType := d.mapType\n\td.mapType = outt\n\n\tvar slice []MapItem\n\tvar l = len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\titem := MapItem{}\n\t\tk := reflect.ValueOf(&item.Key).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\n\t\t\tv := reflect.ValueOf(&item.Value).Elem()\n\t\t\tif d.unmarshal(n.children[i+1], v) {\n\t\t\t\tslice = append(slice, item)\n\t\t\t}\n\t\t}\n\t}\n\tout.Set(reflect.ValueOf(slice))\n\td.mapType = mapType\n\treturn true\n}\n\nfunc (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) {\n\tsinfo, err := getStructInfo(out.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tname := settableValueOf(\"\")\n\tl := len(n.children)\n\n\tvar inlineMap reflect.Value\n\tvar elemType reflect.Type\n\tif sinfo.InlineMap != -1 {\n\t\tinlineMap = out.Field(sinfo.InlineMap)\n\t\tinlineMap.Set(reflect.New(inlineMap.Type()).Elem())\n\t\telemType = inlineMap.Type().Elem()\n\t}\n\n\tvar doneFields []bool\n\tif d.strict {\n\t\tdoneFields = make([]bool, len(sinfo.FieldsList))\n\t}\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.children[i]\n\t\tif isMerge(ni) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[name.String()]; ok {\n\t\t\tif d.strict {\n\t\t\t\tif doneFields[info.Id] {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s already set in type %s\", ni.line+1, name.String(), out.Type()))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdoneFields[info.Id] = true\n\t\t\t}\n\t\t\tvar field reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tfield = out.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tfield = out.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.children[i+1], field)\n\t\t} else if sinfo.InlineMap != -1 {\n\t\t\tif inlineMap.IsNil() {\n\t\t\t\tinlineMap.Set(reflect.MakeMap(inlineMap.Type()))\n\t\t\t}\n\t\t\tvalue := reflect.New(elemType).Elem()\n\t\t\td.unmarshal(n.children[i+1], value)\n\t\t\td.setMapIndex(n.children[i+1], inlineMap, name, value)\n\t\t} else if d.strict {\n\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s not found in type %s\", ni.line+1, name.String(), out.Type()))\n\t\t}\n\t}\n\treturn true\n}\n\nfunc failWantMap() {\n\tfailf(\"map merge requires map or sequence of maps as the value\")\n}\n\nfunc (d *decoder) merge(n *node, out reflect.Value) {\n\tswitch n.kind {\n\tcase mappingNode:\n\t\td.unmarshal(n, out)\n\tcase aliasNode:\n\t\tan, ok := d.doc.anchors[n.value]\n\t\tif ok && an.kind != mappingNode {\n\t\t\tfailWantMap()\n\t\t}\n\t\td.unmarshal(n, out)\n\tcase sequenceNode:\n\t\t// Step backwards as earlier nodes take precedence.\n\t\tfor i := len(n.children) - 1; i >= 0; i-- {\n\t\t\tni := n.children[i]\n\t\t\tif ni.kind == aliasNode {\n\t\t\t\tan, ok := d.doc.anchors[ni.value]\n\t\t\t\tif ok && an.kind != mappingNode {\n\t\t\t\t\tfailWantMap()\n\t\t\t\t}\n\t\t\t} else if ni.kind != mappingNode {\n\t\t\t\tfailWantMap()\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfailWantMap()\n\t}\n}\n\nfunc isMerge(n *node) bool {\n\treturn n.kind == scalarNode && n.value == \"<<\" && (n.implicit == true || n.tag == yaml_MERGE_TAG)\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/emitterc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Flush the buffer if needed.\nfunc flush(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) {\n\t\treturn yaml_emitter_flush(emitter)\n\t}\n\treturn true\n}\n\n// Put a character to the output buffer.\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n// Put a line break to the output buffer.\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tswitch emitter.line_break {\n\tcase yaml_CR_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer_pos += 1\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 1\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos+0] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos+1] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\tpanic(\"unknown line break setting\")\n\t}\n\temitter.column = 0\n\temitter.line++\n\treturn true\n}\n\n// Copy a character from a string into buffer.\nfunc write(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tp := emitter.buffer_pos\n\tw := width(s[*i])\n\tswitch w {\n\tcase 4:\n\t\temitter.buffer[p+3] = s[*i+3]\n\t\tfallthrough\n\tcase 3:\n\t\temitter.buffer[p+2] = s[*i+2]\n\t\tfallthrough\n\tcase 2:\n\t\temitter.buffer[p+1] = s[*i+1]\n\t\tfallthrough\n\tcase 1:\n\t\temitter.buffer[p+0] = s[*i+0]\n\tdefault:\n\t\tpanic(\"unknown character width\")\n\t}\n\temitter.column++\n\temitter.buffer_pos += w\n\t*i += w\n\treturn true\n}\n\n// Write a whole string into buffer.\nfunc write_all(emitter *yaml_emitter_t, s []byte) bool {\n\tfor i := 0; i < len(s); {\n\t\tif !write(emitter, s, &i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Copy a line break character from a string into buffer.\nfunc write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif s[*i] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*i++\n\t} else {\n\t\tif !write(emitter, s, i) {\n\t\t\treturn false\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t}\n\treturn true\n}\n\n// Set an emitter error and return false.\nfunc yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_EMITTER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Emit an event.\nfunc yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.events = append(emitter.events, *event)\n\tfor !yaml_emitter_need_more_events(emitter) {\n\t\tevent := &emitter.events[emitter.events_head]\n\t\tif !yaml_emitter_analyze_event(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_state_machine(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tyaml_event_delete(event)\n\t\temitter.events_head++\n\t}\n\treturn true\n}\n\n// Check if we need to accumulate more events before emitting.\n//\n// We accumulate extra\n//  - 1 event for DOCUMENT-START\n//  - 2 events for SEQUENCE-START\n//  - 3 events for MAPPING-START\n//\nfunc yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {\n\tif emitter.events_head == len(emitter.events) {\n\t\treturn true\n\t}\n\tvar accumulate int\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\t\tbreak\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\t\tbreak\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\t\tbreak\n\tdefault:\n\t\treturn false\n\t}\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\tvar level int\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].typ {\n\t\tcase yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:\n\t\t\tlevel++\n\t\tcase yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:\n\t\t\tlevel--\n\t\t}\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Append a directive to the directives stack.\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\tif bytes.Equal(value.handle, emitter.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"duplicate %TAG directive\")\n\t\t}\n\t}\n\n\t// [Go] Do we actually need to copy this given garbage collection\n\t// and the lack of deallocating destructors?\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(tag_copy.handle, value.handle)\n\tcopy(tag_copy.prefix, value.prefix)\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\treturn true\n}\n\n// Increase the indentation level.\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {\n\temitter.indents = append(emitter.indents, emitter.indent)\n\tif emitter.indent < 0 {\n\t\tif flow {\n\t\t\temitter.indent = emitter.best_indent\n\t\t} else {\n\t\t\temitter.indent = 0\n\t\t}\n\t} else if !indentless {\n\t\temitter.indent += emitter.best_indent\n\t}\n\treturn true\n}\n\n// State dispatcher.\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\n\tdefault:\n\tcase yaml_EMIT_STREAM_START_STATE:\n\t\treturn yaml_emitter_emit_stream_start(emitter, event)\n\n\tcase yaml_EMIT_FIRST_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, true)\n\n\tcase yaml_EMIT_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, false)\n\n\tcase yaml_EMIT_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_emitter_emit_document_content(emitter, event)\n\n\tcase yaml_EMIT_DOCUMENT_END_STATE:\n\t\treturn yaml_emitter_emit_document_end(emitter, event)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_END_STATE:\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected nothing after STREAM-END\")\n\t}\n\tpanic(\"invalid emitter state\")\n}\n\n// Expect STREAM-START.\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected STREAM-START\")\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 80\n\t}\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\n\n\tif emitter.encoding != yaml_UTF8_ENCODING {\n\t\tif !yaml_emitter_write_bom(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\treturn true\n}\n\n// Expect DOCUMENT-START or STREAM-END.\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\n\tif event.typ == yaml_DOCUMENT_START_EVENT {\n\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\tif !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(default_tag_directives); i++ {\n\t\t\ttag_directive := &default_tag_directives[i]\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\timplicit := event.implicit\n\t\tif !first || emitter.canonical {\n\t\t\timplicit = false\n\t\t}\n\n\t\tif emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif event.version_directive != nil {\n\t\t\timplicit = false\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%YAML\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"1.1\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif len(event.tag_directives) > 0 {\n\t\t\timplicit = false\n\t\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%TAG\"), true, false, false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif yaml_emitter_check_empty_document(emitter) {\n\t\t\timplicit = false\n\t\t}\n\t\tif !implicit {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"---\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif emitter.canonical {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\t\treturn true\n\t}\n\n\tif event.typ == yaml_STREAM_END_EVENT {\n\t\tif emitter.open_ended {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = yaml_EMIT_END_STATE\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-START or STREAM-END\")\n}\n\n// Expect the root node.\nfunc yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, true, false, false, false)\n}\n\n// Expect DOCUMENT-END.\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-END\")\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\n\t\t// [Go] Allocate the slice elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n// Expect a flow item node.\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\t\treturn true\n\t}\n\n\tif !first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\n\tif !first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !emitter.canonical && yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a flow value node.\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block item node.\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a block key node.\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block value node.\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a node.\nfunc yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,\n\troot bool, sequence bool, mapping bool, simple_key bool) bool {\n\n\temitter.root_context = root\n\temitter.sequence_context = sequence\n\temitter.mapping_context = mapping\n\temitter.simple_key_context = simple_key\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\tfmt.Sprintf(\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v\", event.typ))\n\t}\n}\n\n// Expect ALIAS.\nfunc yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SCALAR.\nfunc yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_select_scalar_style(emitter, event) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_scalar(emitter) {\n\t\treturn false\n\t}\n\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SEQUENCE-START.\nfunc yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||\n\t\tyaml_emitter_check_empty_sequence(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t}\n\treturn true\n}\n\n// Expect MAPPING-START.\nfunc yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||\n\t\tyaml_emitter_check_empty_mapping(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t}\n\treturn true\n}\n\n// Check if the document content is an empty scalar.\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false // [Go] Huh?\n}\n\n// Check if the next events represent an empty sequence.\nfunc yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT\n}\n\n// Check if the next events represent an empty mapping.\nfunc yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT\n}\n\n// Check if the next node can be expressed as a simple key.\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\tif emitter.scalar_data.multiline {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix) +\n\t\t\tlen(emitter.scalar_data.value)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tdefault:\n\t\treturn false\n\t}\n\treturn length <= 128\n}\n\n// Determine an acceptable scalar style.\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := event.scalar_style()\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\tif emitter.simple_key_context && emitter.scalar_data.multiline {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\n\tif style == yaml_PLAIN_SCALAR_STYLE {\n\t\tif emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||\n\t\t\temitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif no_tag && !event.implicit {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_SINGLE_QUOTED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.single_quoted_allowed {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\n\tif no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte{'!'}\n\t}\n\temitter.scalar_data.style = style\n\treturn true\n}\n\n// Write an anchor.\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\tc := []byte{'&'}\n\tif emitter.anchor_data.alias {\n\t\tc[0] = '*'\n\t}\n\tif !yaml_emitter_write_indicator(emitter, c, true, false, false) {\n\t\treturn false\n\t}\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n// Write a tag.\nfunc yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {\n\t\treturn true\n\t}\n\tif len(emitter.tag_data.handle) > 0 {\n\t\tif !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {\n\t\t\treturn false\n\t\t}\n\t\tif len(emitter.tag_data.suffix) > 0 {\n\t\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// [Go] Allocate these slices elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Write a scalar.\nfunc yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {\n\tswitch emitter.scalar_data.style {\n\tcase yaml_PLAIN_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)\n\t}\n\tpanic(\"unknown scalar style\")\n}\n\n// Check if a %YAML directive is valid.\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {\n\tif version_directive.major != 1 || version_directive.minor != 1 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"incompatible %YAML directive\")\n\t}\n\treturn true\n}\n\n// Check if a %TAG directive is valid.\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must not be empty\")\n\t}\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must start with '!'\")\n\t}\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must end with '!'\")\n\t}\n\tfor i := 1; i < len(handle)-1; i += width(handle[i]) {\n\t\tif !is_alpha(handle, i) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag prefix must not be empty\")\n\t}\n\treturn true\n}\n\n// Check if an anchor is valid.\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\tproblem := \"anchor value must not be empty\"\n\t\tif alias {\n\t\t\tproblem = \"alias value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t}\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor, i) {\n\t\t\tproblem := \"anchor value must contain alphanumerical characters only\"\n\t\t\tif alias {\n\t\t\t\tproblem = \"alias value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t\t}\n\t}\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\treturn true\n}\n\n// Check if a tag is valid.\nfunc yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {\n\tif len(tag) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag value must not be empty\")\n\t}\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\ttag_directive := &emitter.tag_directives[i]\n\t\tif bytes.HasPrefix(tag, tag_directive.prefix) {\n\t\t\temitter.tag_data.handle = tag_directive.handle\n\t\t\temitter.tag_data.suffix = tag[len(tag_directive.prefix):]\n\t\t\treturn true\n\t\t}\n\t}\n\temitter.tag_data.suffix = tag\n\treturn true\n}\n\n// Check if a scalar is valid.\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tvar (\n\t\tblock_indicators   = false\n\t\tflow_indicators    = false\n\t\tline_breaks        = false\n\t\tspecial_characters = false\n\n\t\tleading_space  = false\n\t\tleading_break  = false\n\t\ttrailing_space = false\n\t\ttrailing_break = false\n\t\tbreak_space    = false\n\t\tspace_break    = false\n\n\t\tpreceded_by_whitespace = false\n\t\tfollowed_by_whitespace = false\n\t\tprevious_space         = false\n\t\tprevious_break         = false\n\t)\n\n\temitter.scalar_data.value = value\n\n\tif len(value) == 0 {\n\t\temitter.scalar_data.multiline = false\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = true\n\t\temitter.scalar_data.single_quoted_allowed = true\n\t\temitter.scalar_data.block_allowed = false\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[i])\n\t\tfollowed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)\n\n\t\tif i == 0 {\n\t\t\tswitch value[i] {\n\t\t\tcase '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\\'', '\"', '%', '@', '`':\n\t\t\t\tflow_indicators = true\n\t\t\t\tblock_indicators = true\n\t\t\tcase '?', ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '-':\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch value[i] {\n\t\t\tcase ',', '?', '[', ']', '{', '}':\n\t\t\t\tflow_indicators = true\n\t\t\tcase ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '#':\n\t\t\t\tif preceded_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {\n\t\t\tspecial_characters = true\n\t\t}\n\t\tif is_space(value, i) {\n\t\t\tif i == 0 {\n\t\t\t\tleading_space = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_space = true\n\t\t\t}\n\t\t\tif previous_break {\n\t\t\t\tbreak_space = true\n\t\t\t}\n\t\t\tprevious_space = true\n\t\t\tprevious_break = false\n\t\t} else if is_break(value, i) {\n\t\t\tline_breaks = true\n\t\t\tif i == 0 {\n\t\t\t\tleading_break = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_break = true\n\t\t\t}\n\t\t\tif previous_space {\n\t\t\t\tspace_break = true\n\t\t\t}\n\t\t\tprevious_space = false\n\t\t\tprevious_break = true\n\t\t} else {\n\t\t\tprevious_space = false\n\t\t\tprevious_break = false\n\t\t}\n\n\t\t// [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.\n\t\tpreceded_by_whitespace = is_blankz(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\temitter.scalar_data.flow_plain_allowed = true\n\temitter.scalar_data.block_plain_allowed = true\n\temitter.scalar_data.single_quoted_allowed = true\n\temitter.scalar_data.block_allowed = true\n\n\tif leading_space || leading_break || trailing_space || trailing_break {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif break_space {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || special_characters {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif line_breaks {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\treturn true\n}\n\n// Check if the event data is valid.\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\temitter.anchor_data.anchor = nil\n\temitter.tag_data.handle = nil\n\temitter.tag_data.suffix = nil\n\temitter.scalar_data.value = nil\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SCALAR_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_analyze_scalar(emitter, event.value) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Write the BOM character.\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos+0] = '\\xEF'\n\temitter.buffer[pos+1] = '\\xBB'\n\temitter.buffer[pos+2] = '\\xBF'\n\temitter.buffer_pos += 3\n\treturn true\n}\n\nfunc yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {\n\tindent := emitter.indent\n\tif indent < 0 {\n\t\tindent = 0\n\t}\n\tif !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\temitter.indention = true\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, indicator) {\n\t\treturn false\n\t}\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor i := 0; i < len(value); {\n\t\tvar must_write bool\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\tmust_write = true\n\t\tdefault:\n\t\t\tmust_write = is_alpha(value, i)\n\t\t}\n\t\tif must_write {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tw := width(value[i])\n\t\t\tfor k := 0; k < w; k++ {\n\t\t\t\toctet := value[i]\n\t\t\t\ti++\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc := octet >> 4\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc = octet & 0x0f\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\tif emitter.root_context {\n\t\temitter.open_ended = true\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, true, false, false) {\n\t\treturn false\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif value[i] == '\\'' {\n\t\t\t\tif !put(emitter, '\\'') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tspaces := false\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, true, false, false) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||\n\t\t\tis_bom(value, i) || is_break(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\n\n\t\t\toctet := value[i]\n\n\t\t\tvar w int\n\t\t\tvar v rune\n\t\t\tswitch {\n\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\tw, v = 1, rune(octet&0x7F)\n\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\tw, v = 2, rune(octet&0x1F)\n\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\tw, v = 3, rune(octet&0x0F)\n\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\tw, v = 4, rune(octet&0x07)\n\t\t\t}\n\t\t\tfor k := 1; k < w; k++ {\n\t\t\t\toctet = value[i+k]\n\t\t\t\tv = (v << 6) + (rune(octet) & 0x3F)\n\t\t\t}\n\t\t\ti += w\n\n\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tvar ok bool\n\t\t\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tok = put(emitter, '0')\n\t\t\tcase 0x07:\n\t\t\t\tok = put(emitter, 'a')\n\t\t\tcase 0x08:\n\t\t\t\tok = put(emitter, 'b')\n\t\t\tcase 0x09:\n\t\t\t\tok = put(emitter, 't')\n\t\t\tcase 0x0A:\n\t\t\t\tok = put(emitter, 'n')\n\t\t\tcase 0x0b:\n\t\t\t\tok = put(emitter, 'v')\n\t\t\tcase 0x0c:\n\t\t\t\tok = put(emitter, 'f')\n\t\t\tcase 0x0d:\n\t\t\t\tok = put(emitter, 'r')\n\t\t\tcase 0x1b:\n\t\t\t\tok = put(emitter, 'e')\n\t\t\tcase 0x22:\n\t\t\t\tok = put(emitter, '\"')\n\t\t\tcase 0x5c:\n\t\t\t\tok = put(emitter, '\\\\')\n\t\t\tcase 0x85:\n\t\t\t\tok = put(emitter, 'N')\n\t\t\tcase 0xA0:\n\t\t\t\tok = put(emitter, '_')\n\t\t\tcase 0x2028:\n\t\t\t\tok = put(emitter, 'L')\n\t\t\tcase 0x2029:\n\t\t\t\tok = put(emitter, 'P')\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tok = put(emitter, 'x')\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tok = put(emitter, 'u')\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tok = put(emitter, 'U')\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; ok && k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tif digit < 10 {\n\t\t\t\t\t\tok = put(emitter, digit+'0')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tok = put(emitter, digit+'A'-10)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t} else if is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_space(value, i+1) {\n\t\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else if !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\tif is_space(value, 0) || is_break(value, 0) {\n\t\tindent_hint := []byte{'0' + byte(emitter.best_indent)}\n\t\tif !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.open_ended = false\n\n\tvar chomp_hint [1]byte\n\tif len(value) == 0 {\n\t\tchomp_hint[0] = '-'\n\t} else {\n\t\ti := len(value) - 1\n\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\ti--\n\t\t}\n\t\tif !is_break(value, i) {\n\t\t\tchomp_hint[0] = '-'\n\t\t} else if i == 0 {\n\t\t\tchomp_hint[0] = '+'\n\t\t\temitter.open_ended = true\n\t\t} else {\n\t\t\ti--\n\t\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif is_break(value, i) {\n\t\t\t\tchomp_hint[0] = '+'\n\t\t\t\temitter.open_ended = true\n\t\t\t}\n\t\t}\n\t}\n\tif chomp_hint[0] != 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\tbreaks := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\n\tbreaks := true\n\tleading_spaces := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := 0\n\t\t\t\tfor is_break(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz(value, k) {\n\t\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tleading_spaces = is_blank(value, i)\n\t\t\t}\n\t\t\tif !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/encode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\ntype encoder struct {\n\temitter yaml_emitter_t\n\tevent   yaml_event_t\n\tout     []byte\n\tflow    bool\n\t// doneInit holds whether the initial stream_start_event has been\n\t// emitted.\n\tdoneInit bool\n}\n\nfunc newEncoder() *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc newEncoderWithWriter(w io.Writer) *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, w)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc (e *encoder) init() {\n\tif e.doneInit {\n\t\treturn\n\t}\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\te.doneInit = true\n}\n\nfunc (e *encoder) finish() {\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) destroy() {\n\tyaml_emitter_delete(&e.emitter)\n}\n\nfunc (e *encoder) emit() {\n\t// This will internally delete the e.event value.\n\te.must(yaml_emitter_emit(&e.emitter, &e.event))\n}\n\nfunc (e *encoder) must(ok bool) {\n\tif !ok {\n\t\tmsg := e.emitter.problem\n\t\tif msg == \"\" {\n\t\t\tmsg = \"unknown problem generating YAML content\"\n\t\t}\n\t\tfailf(\"%s\", msg)\n\t}\n}\n\nfunc (e *encoder) marshalDoc(tag string, in reflect.Value) {\n\te.init()\n\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\te.emit()\n\te.marshal(tag, in)\n\tyaml_document_end_event_initialize(&e.event, true)\n\te.emit()\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\tif !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tiface := in.Interface()\n\tswitch m := iface.(type) {\n\tcase time.Time, *time.Time:\n\t\t// Although time.Time implements TextMarshaler,\n\t\t// we don't want to treat it as a string for YAML\n\t\t// purposes because YAML has special support for\n\t\t// timestamps.\n\tcase Marshaler:\n\t\tv, err := m.MarshalYAML()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tif v == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\tin = reflect.ValueOf(v)\n\tcase encoding.TextMarshaler:\n\t\ttext, err := m.MarshalText()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tin = reflect.ValueOf(string(text))\n\tcase nil:\n\t\te.nilv()\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\tif in.Type() == ptrTimeType {\n\t\t\te.timev(tag, in.Elem())\n\t\t} else {\n\t\t\te.marshal(tag, in.Elem())\n\t\t}\n\tcase reflect.Struct:\n\t\tif in.Type() == timeType {\n\t\t\te.timev(tag, in)\n\t\t} else {\n\t\t\te.structv(tag, in)\n\t\t}\n\tcase reflect.Slice, reflect.Array:\n\t\tif in.Type().Elem() == mapItemType {\n\t\t\te.itemsv(tag, in)\n\t\t} else {\n\t\t\te.slicev(tag, in)\n\t\t}\n\tcase reflect.String:\n\t\te.stringv(tag, in)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tif in.Type() == durationType {\n\t\t\te.stringv(tag, reflect.ValueOf(iface.(time.Duration).String()))\n\t\t} else {\n\t\t\te.intv(tag, in)\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.uintv(tag, in)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.floatv(tag, in)\n\tcase reflect.Bool:\n\t\te.boolv(tag, in)\n\tdefault:\n\t\tpanic(\"cannot marshal type: \" + in.Type().String())\n\t}\n}\n\nfunc (e *encoder) mapv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tkeys := keyList(in.MapKeys())\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k)\n\t\t\te.marshal(\"\", in.MapIndex(k))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) itemsv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tslice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem)\n\t\tfor _, item := range slice {\n\t\t\te.marshal(\"\", reflect.ValueOf(item.Key))\n\t\t\te.marshal(\"\", reflect.ValueOf(item.Value))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) structv(tag string, in reflect.Value) {\n\tsinfo, err := getStructInfo(in.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\te.mappingv(tag, func() {\n\t\tfor _, info := range sinfo.FieldsList {\n\t\t\tvar value reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tvalue = in.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tvalue = in.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\tif info.OmitEmpty && isZero(value) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\te.marshal(\"\", reflect.ValueOf(info.Key))\n\t\t\te.flow = info.Flow\n\t\t\te.marshal(\"\", value)\n\t\t}\n\t\tif sinfo.InlineMap >= 0 {\n\t\t\tm := in.Field(sinfo.InlineMap)\n\t\t\tif m.Len() > 0 {\n\t\t\t\te.flow = false\n\t\t\t\tkeys := keyList(m.MapKeys())\n\t\t\t\tsort.Sort(keys)\n\t\t\t\tfor _, k := range keys {\n\t\t\t\t\tif _, found := sinfo.FieldsMap[k.String()]; found {\n\t\t\t\t\t\tpanic(fmt.Sprintf(\"Can't have key %q in inlined map; conflicts with struct field\", k.String()))\n\t\t\t\t\t}\n\t\t\t\t\te.marshal(\"\", k)\n\t\t\t\t\te.flow = false\n\t\t\t\t\te.marshal(\"\", m.MapIndex(k))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (e *encoder) mappingv(tag string, f func()) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_MAPPING_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t}\n\tyaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\tf()\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) slicev(tag string, in reflect.Value) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t}\n\te.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tn := in.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", in.Index(i))\n\t}\n\te.must(yaml_sequence_end_event_initialize(&e.event))\n\te.emit()\n}\n\n// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.\n//\n// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported\n// in YAML 1.2 and by this package, but these should be marshalled quoted for\n// the time being for compatibility with other parsers.\nfunc isBase60Float(s string) (result bool) {\n\t// Fast path.\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tc := s[0]\n\tif !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {\n\t\treturn false\n\t}\n\t// Do the full match.\n\treturn base60float.MatchString(s)\n}\n\n// From http://yaml.org/type/float.html, except the regular expression there\n// is bogus. In practice parsers do not enforce the \"\\.[0-9_]*\" suffix.\nvar base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$`)\n\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\tcanUsePlain := true\n\tswitch {\n\tcase !utf8.ValidString(s):\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t}\n\t\tif tag != \"\" {\n\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", shortTag(tag))\n\t\t}\n\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t// and encode it as base64.\n\t\ttag = yaml_BINARY_TAG\n\t\ts = encodeBase64(s)\n\tcase tag == \"\":\n\t\t// Check to see if it would resolve to a specific\n\t\t// tag when encoded unquoted. If it doesn't,\n\t\t// there's no need to quote it.\n\t\trtag, _ := resolve(\"\", s)\n\t\tcanUsePlain = rtag == yaml_STR_TAG && !isBase60Float(s)\n\t}\n\t// Note: it's possible for user code to emit invalid YAML\n\t// if they explicitly specify a tag and a string containing\n\t// text that's incompatible with that tag.\n\tswitch {\n\tcase strings.Contains(s, \"\\n\"):\n\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\tcase canUsePlain:\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\tdefault:\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style)\n}\n\nfunc (e *encoder) boolv(tag string, in reflect.Value) {\n\tvar s string\n\tif in.Bool() {\n\t\ts = \"true\"\n\t} else {\n\t\ts = \"false\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) intv(tag string, in reflect.Value) {\n\ts := strconv.FormatInt(in.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) uintv(tag string, in reflect.Value) {\n\ts := strconv.FormatUint(in.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) timev(tag string, in reflect.Value) {\n\tt := in.Interface().(time.Time)\n\ts := t.Format(time.RFC3339Nano)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// Issue #352: When formatting, use the precision of the underlying value\n\tprecision := 64\n\tif in.Kind() == reflect.Float32 {\n\t\tprecision = 32\n\t}\n\n\ts := strconv.FormatFloat(in.Float(), 'g', -1, precision)\n\tswitch s {\n\tcase \"+Inf\":\n\t\ts = \".inf\"\n\tcase \"-Inf\":\n\t\ts = \"-.inf\"\n\tcase \"NaN\":\n\t\ts = \".nan\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) {\n\timplicit := tag == \"\"\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.emit()\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/go.mod",
    "content": "module \"gopkg.in/yaml.v2\"\n\nrequire (\n\t\"gopkg.in/check.v1\" v0.0.0-20161208181325-20d25e280405\n)\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/parserc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n)\n\n// The parser implements the following grammar:\n//\n// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END\n// implicit_document    ::= block_node DOCUMENT-END*\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          | properties (block_content | indentless_block_sequence)?\n//                          | block_content\n//                          | indentless_block_sequence\n// block_node           ::= ALIAS\n//                          | properties block_content?\n//                          | block_content\n// flow_node            ::= ALIAS\n//                          | properties flow_content?\n//                          | flow_content\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n// block_content        ::= block_collection | flow_collection | SCALAR\n// flow_content         ::= flow_collection | SCALAR\n// block_collection     ::= block_sequence | block_mapping\n// flow_collection      ::= flow_sequence | flow_mapping\n// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                          BLOCK-END\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                          flow_sequence_entry?\n//                          FLOW-SEQUENCE-END\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                          flow_mapping_entry?\n//                          FLOW-MAPPING-END\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n// Peek the next token in the token queue.\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\treturn &parser.tokens[parser.tokens_head]\n\t}\n\treturn nil\n}\n\n// Remove the next token from the queue (must be called after peek_token).\nfunc skip_token(parser *yaml_parser_t) {\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\tparser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n// Get the next event.\nfunc yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t// Erase the event object.\n\t*event = yaml_event_t{}\n\n\t// No events after the end of the stream or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t// Generate the next event.\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n// Set parser error.\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\n// State dispatcher.\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t//trace(\"yaml_parser_state_machine\", \"state:\", parser.state.String())\n\n\tswitch parser.state {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn yaml_parser_parse_stream_start(parser, event)\n\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, true)\n\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, false)\n\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_parser_parse_document_content(parser, event)\n\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn yaml_parser_parse_document_end(parser, event)\n\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_indentless_sequence_entry(parser, event)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_block_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)\n\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, true)\n\n\tdefault:\n\t\tpanic(\"invalid parser state\")\n\t}\n}\n\n// Parse the production:\n// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n//              ************\nfunc yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser, \"did not find expected <stream-start>\", token.start_mark)\n\t}\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_STREAM_START_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t\tencoding:   token.encoding,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                          *\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                          *************************\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// Parse extra document end indicators.\n\tif !implicit {\n\t\tfor token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tif implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an implicit document.\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t} else if token.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an explicit document.\n\t\tvar version_directive *yaml_version_directive_t\n\t\tvar tag_directives []yaml_tag_directive_t\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {\n\t\t\treturn false\n\t\t}\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_DOCUMENT_START_TOKEN {\n\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\"did not find expected <document start>\", token.start_mark)\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark:        start_mark,\n\t\t\tend_mark:          end_mark,\n\t\t\tversion_directive: version_directive,\n\t\t\ttag_directives:    tag_directives,\n\t\t\timplicit:          false,\n\t\t}\n\t\tskip_token(parser)\n\n\t} else {\n\t\t// Parse the stream end.\n\t\tparser.state = yaml_PARSE_END_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_STREAM_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t}\n\n\treturn true\n}\n\n// Parse the productions:\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                                                    ***********\n//\nfunc yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\treturn yaml_parser_parse_node(parser, event, true, false)\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                                     *************\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\timplicit := true\n\tif token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\timplicit = false\n\t}\n\n\tparser.tag_directives = parser.tag_directives[:0]\n\n\tparser.state = yaml_PARSE_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          *****\n//                          | properties (block_content | indentless_block_sequence)?\n//                            **********  *\n//                          | block_content | indentless_block_sequence\n//                            *\n// block_node           ::= ALIAS\n//                          *****\n//                          | properties block_content?\n//                            ********** *\n//                          | block_content\n//                            *\n// flow_node            ::= ALIAS\n//                          *****\n//                          | properties flow_content?\n//                            ********** *\n//                          | flow_content\n//                            *\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n//                          *************************\n// block_content        ::= block_collection | flow_collection | SCALAR\n//                                                               ******\n// flow_content         ::= flow_collection | SCALAR\n//                                            ******\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {\n\t//defer trace(\"yaml_parser_parse_node\", \"block:\", block, \"indentless_sequence:\", indentless_sequence)()\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_ALIAS_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_ALIAS_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t\tanchor:     token.value,\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\tvar tag_token bool\n\tvar tag_handle, tag_suffix, anchor []byte\n\tvar tag_mark yaml_mark_t\n\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\tanchor = token.value\n\t\tstart_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_TAG_TOKEN {\n\t\t\ttag_token = true\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\ttag_mark = token.start_mark\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else if token.typ == yaml_TAG_TOKEN {\n\t\ttag_token = true\n\t\ttag_handle = token.value\n\t\ttag_suffix = token.suffix\n\t\tstart_mark = token.start_mark\n\t\ttag_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tvar tag []byte\n\tif tag_token {\n\t\tif len(tag_handle) == 0 {\n\t\t\ttag = tag_suffix\n\t\t\ttag_suffix = nil\n\t\t} else {\n\t\t\tfor i := range parser.tag_directives {\n\t\t\t\tif bytes.Equal(parser.tag_directives[i].handle, tag_handle) {\n\t\t\t\t\ttag = append([]byte(nil), parser.tag_directives[i].prefix...)\n\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(tag) == 0 {\n\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\timplicit := len(tag) == 0\n\tif indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_SCALAR_TOKEN {\n\t\tvar plain_implicit, quoted_implicit bool\n\t\tend_mark = token.end_mark\n\t\tif (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {\n\t\t\tplain_implicit = true\n\t\t} else if len(tag) == 0 {\n\t\t\tquoted_implicit = true\n\t\t}\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\tvalue:           token.value,\n\t\t\timplicit:        plain_implicit,\n\t\t\tquoted_implicit: quoted_implicit,\n\t\t\tstyle:           yaml_style_t(token.style),\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t// [Go] Some of the events below can be merged as they differ only on style.\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif len(anchor) > 0 || len(tag) > 0 {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\timplicit:        implicit,\n\t\t\tquoted_implicit: false,\n\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\n\tcontext := \"while parsing a flow node\"\n\tif block {\n\t\tcontext = \"while parsing a block node\"\n\t}\n\tyaml_parser_set_parser_error_context(parser, context, start_mark,\n\t\t\"did not find expected node content\", token.start_mark)\n\treturn false\n}\n\n// Parse the productions:\n// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n//                    ********************  *********** *             *********\n//\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t}\n\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block collection\", context_mark,\n\t\t\"did not find expected '-' indicator\", token.start_mark)\n}\n\n// Parse the productions:\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n//                           *********** *\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t}\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          *******************\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                            *** *\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//\n//                          BLOCK-END\n//                          *********\n//\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_KEY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else if token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block mapping\", context_mark,\n\t\t\"did not find expected key\", token.start_mark)\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//                          ((KEY block_node_or_indentless_sequence?)?\n//\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                           ***** *\n//                          BLOCK-END\n//\n//\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t}\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          *******************\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                           *                   **********\n//                          flow_sequence_entry?\n//                          *\n//                          FLOW-SEQUENCE-END\n//                          *****************\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *\n//\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or ']'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t\t\t*event = yaml_event_t{\n\t\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\t\tstart_mark: token.start_mark,\n\t\t\t\tend_mark:   token.end_mark,\n\t\t\t\timplicit:   true,\n\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t}\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\n\tskip_token(parser)\n\treturn true\n}\n\n//\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                      *** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_VALUE_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t}\n\tmark := token.end_mark\n\tskip_token(parser)\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                      ***** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                                      *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          ******************\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                           *                  **********\n//                          flow_mapping_entry?\n//                          ******************\n//                          FLOW-MAPPING-END\n//                          ****************\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *           *** *\n//\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or '}'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.typ != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)\n\t\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t\t} else {\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t\t\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t\t\t}\n\t\t} else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                   *                  ***** *\n//\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Generate an empty scalar event.\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil, // Empty\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\treturn true\n}\n\nvar default_tag_directives = []yaml_tag_directive_t{\n\t{[]byte(\"!\"), []byte(\"!\")},\n\t{[]byte(\"!!\"), []byte(\"tag:yaml.org,2002:\")},\n}\n\n// Parse directives.\nfunc yaml_parser_process_directives(parser *yaml_parser_t,\n\tversion_directive_ref **yaml_version_directive_t,\n\ttag_directives_ref *[]yaml_tag_directive_t) bool {\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tfor token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN {\n\t\t\tif version_directive != nil {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found duplicate %YAML directive\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.major != 1 || token.minor != 1 {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found incompatible YAML document\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tversion_directive = &yaml_version_directive_t{\n\t\t\t\tmajor: token.major,\n\t\t\t\tminor: token.minor,\n\t\t\t}\n\t\t} else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\t\tvalue := yaml_tag_directive_t{\n\t\t\t\thandle: token.value,\n\t\t\t\tprefix: token.prefix,\n\t\t\t}\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttag_directives = append(tag_directives, value)\n\t\t}\n\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := range default_tag_directives {\n\t\tif !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif version_directive_ref != nil {\n\t\t*version_directive_ref = version_directive\n\t}\n\tif tag_directives_ref != nil {\n\t\t*tag_directives_ref = tag_directives\n\t}\n\treturn true\n}\n\n// Append a tag directive to the directives stack.\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\tif bytes.Equal(value.handle, parser.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_parser_set_parser_error(parser, \"found duplicate %TAG directive\", mark)\n\t\t}\n\t}\n\n\t// [Go] I suspect the copy is unnecessary. This was likely done\n\t// because there was no way to track ownership of the data.\n\tvalue_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(value_copy.handle, value.handle)\n\tcopy(value_copy.prefix, value.prefix)\n\tparser.tag_directives = append(parser.tag_directives, value_copy)\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/readerc.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n)\n\n// Set the reader error and return 0.\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {\n\tparser.error = yaml_READER_ERROR\n\tparser.problem = problem\n\tparser.problem_offset = offset\n\tparser.problem_value = value\n\treturn false\n}\n\n// Byte order marks.\nconst (\n\tbom_UTF8    = \"\\xef\\xbb\\xbf\"\n\tbom_UTF16LE = \"\\xff\\xfe\"\n\tbom_UTF16BE = \"\\xfe\\xff\"\n)\n\n// Determine the input stream encoding by checking the BOM symbol. If no BOM is\n// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.\nfunc yaml_parser_determine_encoding(parser *yaml_parser_t) bool {\n\t// Ensure that we had enough bytes in the raw buffer.\n\tfor !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {\n\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Determine the encoding.\n\tbuf := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tavail := len(buf) - pos\n\tif avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {\n\t\tparser.encoding = yaml_UTF16LE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {\n\t\tparser.encoding = yaml_UTF16BE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t\tparser.raw_buffer_pos += 3\n\t\tparser.offset += 3\n\t} else {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t}\n\treturn true\n}\n\n// Update the raw buffer.\nfunc yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {\n\tsize_read := 0\n\n\t// Return if the raw buffer is full.\n\tif parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t// Return on EOF.\n\tif parser.eof {\n\t\treturn true\n\t}\n\n\t// Move the remaining bytes in the raw buffer to the beginning.\n\tif parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {\n\t\tcopy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])\n\t}\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]\n\tparser.raw_buffer_pos = 0\n\n\t// Call the read handler to fill the buffer.\n\tsize_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\tif err == io.EOF {\n\t\tparser.eof = true\n\t} else if err != nil {\n\t\treturn yaml_parser_set_reader_error(parser, \"input error: \"+err.Error(), parser.offset, -1)\n\t}\n\treturn true\n}\n\n// Ensure that the buffer contains at least `length` characters.\n// Return true on success, false on failure.\n//\n// The length is supposed to be significantly less that the buffer size.\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t// [Go] This function was changed to guarantee the requested length size at EOF.\n\t// The fact we need to do this is pretty awful, but the description above implies\n\t// for that to be the case, and there are tests \n\n\t// If the EOF flag is set and the raw buffer is empty, do nothing.\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t// [Go] ACTUALLY! Read the documentation of this function above.\n\t\t// This is just broken. To return true, we need to have the\n\t\t// given length in the buffer. Not doing that means every single\n\t\t// check that calls this function to make sure the buffer has a\n\t\t// given length is Go) panicking; or C) accessing invalid memory.\n\t\t//return true\n\t}\n\n\t// Return if the buffer contains enough characters.\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\t// Determine the input encoding if it is not known yet.\n\tif parser.encoding == yaml_ANY_ENCODING {\n\t\tif !yaml_parser_determine_encoding(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Move the unread characters to the beginning of the buffer.\n\tbuffer_len := len(parser.buffer)\n\tif parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_len -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_len {\n\t\tbuffer_len = 0\n\t\tparser.buffer_pos = 0\n\t}\n\n\t// Open the whole buffer for writing, and cut it before returning.\n\tparser.buffer = parser.buffer[:cap(parser.buffer)]\n\n\t// Fill the buffer until it has enough characters.\n\tfirst := true\n\tfor parser.unread < length {\n\n\t\t// Fill the raw buffer if necessary.\n\t\tif !first || parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\t\tparser.buffer = parser.buffer[:buffer_len]\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\n\t\t// Decode the raw buffer.\n\tinner:\n\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar width int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\n\t\t\t// Decode the next character.\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\t\t\t\t// Decode a UTF-8 character.  Check RFC 3629\n\t\t\t\t// (http://www.ietf.org/rfc/rfc3629.txt) for more details.\n\t\t\t\t//\n\t\t\t\t// The following table (taken from the RFC) is used for\n\t\t\t\t// decoding.\n\t\t\t\t//\n\t\t\t\t//    Char. number range |        UTF-8 octet sequence\n\t\t\t\t//      (hexadecimal)    |              (binary)\n\t\t\t\t//   --------------------+------------------------------------\n\t\t\t\t//   0000 0000-0000 007F | 0xxxxxxx\n\t\t\t\t//   0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n\t\t\t\t//   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//\n\t\t\t\t// Additionally, the characters in the range 0xD800-0xDFFF\n\t\t\t\t// are prohibited as they are reserved for use with UTF-16\n\t\t\t\t// surrogate pairs.\n\n\t\t\t\t// Determine the length of the UTF-8 sequence.\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\twidth = 1\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\twidth = 2\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\twidth = 3\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\twidth = 4\n\t\t\t\tdefault:\n\t\t\t\t\t// The leading octet is invalid.\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid leading UTF-8 octet\",\n\t\t\t\t\t\tparser.offset, int(octet))\n\t\t\t\t}\n\n\t\t\t\t// Check if the raw buffer contains an incomplete character.\n\t\t\t\tif width > raw_unread {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-8 octet sequence\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Decode the leading octet.\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\tvalue = rune(octet & 0x7F)\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\tvalue = rune(octet & 0x1F)\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\tvalue = rune(octet & 0x0F)\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\tvalue = rune(octet & 0x07)\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = 0\n\t\t\t\t}\n\n\t\t\t\t// Check and decode the trailing octets.\n\t\t\t\tfor k := 1; k < width; k++ {\n\t\t\t\t\toctet = parser.raw_buffer[parser.raw_buffer_pos+k]\n\n\t\t\t\t\t// Check if the octet is valid.\n\t\t\t\t\tif (octet & 0xC0) != 0x80 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"invalid trailing UTF-8 octet\",\n\t\t\t\t\t\t\tparser.offset+k, int(octet))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Decode the octet.\n\t\t\t\t\tvalue = (value << 6) + rune(octet&0x3F)\n\t\t\t\t}\n\n\t\t\t\t// Check the length of the sequence against the value.\n\t\t\t\tswitch {\n\t\t\t\tcase width == 1:\n\t\t\t\tcase width == 2 && value >= 0x80:\n\t\t\t\tcase width == 3 && value >= 0x800:\n\t\t\t\tcase width == 4 && value >= 0x10000:\n\t\t\t\tdefault:\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid length of a UTF-8 sequence\",\n\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t}\n\n\t\t\t\t// Check the range of the value.\n\t\t\t\tif value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid Unicode character\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\tcase yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:\n\t\t\t\tvar low, high int\n\t\t\t\tif parser.encoding == yaml_UTF16LE_ENCODING {\n\t\t\t\t\tlow, high = 0, 1\n\t\t\t\t} else {\n\t\t\t\t\tlow, high = 1, 0\n\t\t\t\t}\n\n\t\t\t\t// The UTF-16 encoding is not as simple as one might\n\t\t\t\t// naively think.  Check RFC 2781\n\t\t\t\t// (http://www.ietf.org/rfc/rfc2781.txt).\n\t\t\t\t//\n\t\t\t\t// Normally, two subsequent bytes describe a Unicode\n\t\t\t\t// character.  However a special technique (called a\n\t\t\t\t// surrogate pair) is used for specifying character\n\t\t\t\t// values larger than 0xFFFF.\n\t\t\t\t//\n\t\t\t\t// A surrogate pair consists of two pseudo-characters:\n\t\t\t\t//      high surrogate area (0xD800-0xDBFF)\n\t\t\t\t//      low surrogate area (0xDC00-0xDFFF)\n\t\t\t\t//\n\t\t\t\t// The following formulas are used for decoding\n\t\t\t\t// and encoding characters using surrogate pairs:\n\t\t\t\t//\n\t\t\t\t//  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)\n\t\t\t\t//  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)\n\t\t\t\t//  W1 = 110110yyyyyyyyyy\n\t\t\t\t//  W2 = 110111xxxxxxxxxx\n\t\t\t\t//\n\t\t\t\t// where U is the character value, W1 is the high surrogate\n\t\t\t\t// area, W2 is the low surrogate area.\n\n\t\t\t\t// Check for incomplete UTF-16 character.\n\t\t\t\tif raw_unread < 2 {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-16 character\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Get the character.\n\t\t\t\tvalue = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +\n\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)\n\n\t\t\t\t// Check for unexpected low surrogate area.\n\t\t\t\tif value&0xFC00 == 0xDC00 {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"unexpected low surrogate area\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\t\t// Check for a high surrogate area.\n\t\t\t\tif value&0xFC00 == 0xD800 {\n\t\t\t\t\twidth = 4\n\n\t\t\t\t\t// Check for incomplete surrogate pair.\n\t\t\t\t\tif raw_unread < 4 {\n\t\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\t\"incomplete UTF-16 surrogate pair\",\n\t\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak inner\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the next character.\n\t\t\t\t\tvalue2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +\n\t\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)\n\n\t\t\t\t\t// Check for a low surrogate area.\n\t\t\t\t\tif value2&0xFC00 != 0xDC00 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"expected low surrogate area\",\n\t\t\t\t\t\t\tparser.offset+2, int(value2))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate the value of the surrogate pair.\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\twidth = 2\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"impossible\")\n\t\t\t}\n\n\t\t\t// Check if the character is in the allowed range:\n\t\t\t//      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)\n\t\t\t//      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)\n\t\t\t//      | [#x10000-#x10FFFF]                        (32 bit)\n\t\t\tswitch {\n\t\t\tcase value == 0x09:\n\t\t\tcase value == 0x0A:\n\t\t\tcase value == 0x0D:\n\t\t\tcase value >= 0x20 && value <= 0x7E:\n\t\t\tcase value == 0x85:\n\t\t\tcase value >= 0xA0 && value <= 0xD7FF:\n\t\t\tcase value >= 0xE000 && value <= 0xFFFD:\n\t\t\tcase value >= 0x10000 && value <= 0x10FFFF:\n\t\t\tdefault:\n\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\"control characters are not allowed\",\n\t\t\t\t\tparser.offset, int(value))\n\t\t\t}\n\n\t\t\t// Move the raw pointers.\n\t\t\tparser.raw_buffer_pos += width\n\t\t\tparser.offset += width\n\n\t\t\t// Finally put the character into the buffer.\n\t\t\tif value <= 0x7F {\n\t\t\t\t// 0000 0000-0000 007F . 0xxxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(value)\n\t\t\t\tbuffer_len += 1\n\t\t\t} else if value <= 0x7FF {\n\t\t\t\t// 0000 0080-0000 07FF . 110xxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 2\n\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t// 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 3\n\t\t\t} else {\n\t\t\t\t// 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 4\n\t\t\t}\n\n\t\t\tparser.unread++\n\t\t}\n\n\t\t// On EOF, put NUL into the buffer and return.\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_len] = 0\n\t\t\tbuffer_len++\n\t\t\tparser.unread++\n\t\t\tbreak\n\t\t}\n\t}\n\t// [Go] Read the documentation of this function above. To return true,\n\t// we need to have the given length in the buffer. Not doing that means\n\t// every single check that calls this function to make sure the buffer\n\t// has a given length is Go) panicking; or C) accessing invalid memory.\n\t// This happens here due to the EOF above breaking early.\n\tfor buffer_len < length {\n\t\tparser.buffer[buffer_len] = 0\n\t\tbuffer_len++\n\t}\n\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/resolve.go",
    "content": "package yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype resolveMapItem struct {\n\tvalue interface{}\n\ttag   string\n}\n\nvar resolveTable = make([]byte, 256)\nvar resolveMap = make(map[string]resolveMapItem)\n\nfunc init() {\n\tt := resolveTable\n\tt[int('+')] = 'S' // Sign\n\tt[int('-')] = 'S'\n\tfor _, c := range \"0123456789\" {\n\t\tt[int(c)] = 'D' // Digit\n\t}\n\tfor _, c := range \"yYnNtTfFoO~\" {\n\t\tt[int(c)] = 'M' // In map\n\t}\n\tt[int('.')] = '.' // Float (potentially in map)\n\n\tvar resolveMapList = []struct {\n\t\tv   interface{}\n\t\ttag string\n\t\tl   []string\n\t}{\n\t\t{true, yaml_BOOL_TAG, []string{\"y\", \"Y\", \"yes\", \"Yes\", \"YES\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"on\", \"On\", \"ON\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"n\", \"N\", \"no\", \"No\", \"NO\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"off\", \"Off\", \"OFF\"}},\n\t\t{nil, yaml_NULL_TAG, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), yaml_FLOAT_TAG, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), yaml_FLOAT_TAG, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", yaml_MERGE_TAG, []string{\"<<\"}},\n\t}\n\n\tm := resolveMap\n\tfor _, item := range resolveMapList {\n\t\tfor _, s := range item.l {\n\t\t\tm[s] = resolveMapItem{item.v, item.tag}\n\t\t}\n\t}\n}\n\nconst longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\t// TODO This can easily be made faster and produce less garbage.\n\tif strings.HasPrefix(tag, longTagPrefix) {\n\t\treturn \"!!\" + tag[len(longTagPrefix):]\n\t}\n\treturn tag\n}\n\nfunc longTag(tag string) string {\n\tif strings.HasPrefix(tag, \"!!\") {\n\t\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG, yaml_TIMESTAMP_TAG:\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\\.?[0-9]+([eE][-+][0-9]+)?$`)\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, yaml_STR_TAG, yaml_BINARY_TAG:\n\t\t\treturn\n\t\tcase yaml_FLOAT_TAG:\n\t\t\tif rtag == yaml_INT_TAG {\n\t\t\t\tswitch v := out.(type) {\n\t\t\t\tcase int64:\n\t\t\t\t\trtag = yaml_FLOAT_TAG\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\tcase int:\n\t\t\t\t\trtag = yaml_FLOAT_TAG\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfailf(\"cannot decode %s `%s` as a %s\", shortTag(rtag), in, shortTag(tag))\n\t}()\n\n\t// Any data is accepted as a !!str or !!binary.\n\t// Otherwise, the prefix is enough of a hint about what it might be.\n\thint := byte('N')\n\tif in != \"\" {\n\t\thint = resolveTable[in[0]]\n\t}\n\tif hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG {\n\t\t// Handle things we can lookup in a map.\n\t\tif item, ok := resolveMap[in]; ok {\n\t\t\treturn item.tag, item.value\n\t\t}\n\n\t\t// Base 60 floats are a bad idea, were dropped in YAML 1.2, and\n\t\t// are purposefully unsupported here. They're still quoted on\n\t\t// the way out for compatibility with other parser, though.\n\n\t\tswitch hint {\n\t\tcase 'M':\n\t\t\t// We've already checked the map above.\n\n\t\tcase '.':\n\t\t\t// Not in the map, so maybe a normal float.\n\t\t\tfloatv, err := strconv.ParseFloat(in, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_FLOAT_TAG, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\n\t\t\t// Only try values as a timestamp if the value is unquoted or there's an explicit\n\t\t\t// !!timestamp tag.\n\t\t\tif tag == \"\" || tag == yaml_TIMESTAMP_TAG {\n\t\t\t\tt, ok := parseTimestamp(in)\n\t\t\t\tif ok {\n\t\t\t\t\treturn yaml_TIMESTAMP_TAG, t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplain := strings.Replace(in, \"_\", \"\", -1)\n\t\t\tintv, err := strconv.ParseInt(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tuintv, err := strconv.ParseUint(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_INT_TAG, uintv\n\t\t\t}\n\t\t\tif yamlStyleFloat.MatchString(plain) {\n\t\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn yaml_FLOAT_TAG, floatv\n\t\t\t\t}\n\t\t\t}\n\t\t\tif strings.HasPrefix(plain, \"0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn yaml_INT_TAG, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\" + plain[3:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"resolveTable item not yet handled: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\treturn yaml_STR_TAG, in\n}\n\n// encodeBase64 encodes s as base64 that is broken up into multiple lines\n// as appropriate for the resulting length.\nfunc encodeBase64(s string) string {\n\tconst lineLen = 70\n\tencLen := base64.StdEncoding.EncodedLen(len(s))\n\tlines := encLen/lineLen + 1\n\tbuf := make([]byte, encLen*2+lines)\n\tin := buf[0:encLen]\n\tout := buf[encLen:]\n\tbase64.StdEncoding.Encode(in, []byte(s))\n\tk := 0\n\tfor i := 0; i < len(in); i += lineLen {\n\t\tj := i + lineLen\n\t\tif j > len(in) {\n\t\t\tj = len(in)\n\t\t}\n\t\tk += copy(out[k:], in[i:j])\n\t\tif lines > 1 {\n\t\t\tout[k] = '\\n'\n\t\t\tk++\n\t\t}\n\t}\n\treturn string(out[:k])\n}\n\n// This is a subset of the formats allowed by the regular expression\n// defined at http://yaml.org/type/timestamp.html.\nvar allowedTimestampFormats = []string{\n\t\"2006-1-2T15:4:5.999999999Z07:00\", // RCF3339Nano with short date fields.\n\t\"2006-1-2t15:4:5.999999999Z07:00\", // RFC3339Nano with short date fields and lower-case \"t\".\n\t\"2006-1-2 15:4:5.999999999\",       // space separated with no time zone\n\t\"2006-1-2\",                        // date only\n\t// Notable exception: time.Parse cannot handle: \"2001-12-14 21:59:43.10 -5\"\n\t// from the set of examples.\n}\n\n// parseTimestamp parses s as a timestamp string and\n// returns the timestamp and reports whether it succeeded.\n// Timestamp formats are defined at http://yaml.org/type/timestamp.html\nfunc parseTimestamp(s string) (time.Time, bool) {\n\t// TODO write code to check all the formats supported by\n\t// http://yaml.org/type/timestamp.html instead of using time.Parse.\n\n\t// Quick check: all date formats start with YYYY-.\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif c := s[i]; c < '0' || c > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i != 4 || i == len(s) || s[i] != '-' {\n\t\treturn time.Time{}, false\n\t}\n\tfor _, format := range allowedTimestampFormats {\n\t\tif t, err := time.Parse(format, s); err == nil {\n\t\t\treturn t, true\n\t\t}\n\t}\n\treturn time.Time{}, false\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/scannerc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Introduction\n// ************\n//\n// The following notes assume that you are familiar with the YAML specification\n// (http://yaml.org/spec/1.2/spec.html).  We mostly follow it, although in\n// some cases we are less restrictive that it requires.\n//\n// The process of transforming a YAML stream into a sequence of events is\n// divided on two steps: Scanning and Parsing.\n//\n// The Scanner transforms the input stream into a sequence of tokens, while the\n// parser transform the sequence of tokens produced by the Scanner into a\n// sequence of parsing events.\n//\n// The Scanner is rather clever and complicated. The Parser, on the contrary,\n// is a straightforward implementation of a recursive-descendant parser (or,\n// LL(1) parser, as it is usually called).\n//\n// Actually there are two issues of Scanning that might be called \"clever\", the\n// rest is quite straightforward.  The issues are \"block collection start\" and\n// \"simple keys\".  Both issues are explained below in details.\n//\n// Here the Scanning step is explained and implemented.  We start with the list\n// of all the tokens produced by the Scanner together with short descriptions.\n//\n// Now, tokens:\n//\n//      STREAM-START(encoding)          # The stream start.\n//      STREAM-END                      # The stream end.\n//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.\n//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.\n//      DOCUMENT-START                  # '---'\n//      DOCUMENT-END                    # '...'\n//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block\n//      BLOCK-MAPPING-START             # sequence or a block mapping.\n//      BLOCK-END                       # Indentation decrease.\n//      FLOW-SEQUENCE-START             # '['\n//      FLOW-SEQUENCE-END               # ']'\n//      BLOCK-SEQUENCE-START            # '{'\n//      BLOCK-SEQUENCE-END              # '}'\n//      BLOCK-ENTRY                     # '-'\n//      FLOW-ENTRY                      # ','\n//      KEY                             # '?' or nothing (simple keys).\n//      VALUE                           # ':'\n//      ALIAS(anchor)                   # '*anchor'\n//      ANCHOR(anchor)                  # '&anchor'\n//      TAG(handle,suffix)              # '!handle!suffix'\n//      SCALAR(value,style)             # A scalar.\n//\n// The following two tokens are \"virtual\" tokens denoting the beginning and the\n// end of the stream:\n//\n//      STREAM-START(encoding)\n//      STREAM-END\n//\n// We pass the information about the input stream encoding with the\n// STREAM-START token.\n//\n// The next two tokens are responsible for tags:\n//\n//      VERSION-DIRECTIVE(major,minor)\n//      TAG-DIRECTIVE(handle,prefix)\n//\n// Example:\n//\n//      %YAML   1.1\n//      %TAG    !   !foo\n//      %TAG    !yaml!  tag:yaml.org,2002:\n//      ---\n//\n// The correspoding sequence of tokens:\n//\n//      STREAM-START(utf-8)\n//      VERSION-DIRECTIVE(1,1)\n//      TAG-DIRECTIVE(\"!\",\"!foo\")\n//      TAG-DIRECTIVE(\"!yaml\",\"tag:yaml.org,2002:\")\n//      DOCUMENT-START\n//      STREAM-END\n//\n// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole\n// line.\n//\n// The document start and end indicators are represented by:\n//\n//      DOCUMENT-START\n//      DOCUMENT-END\n//\n// Note that if a YAML stream contains an implicit document (without '---'\n// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be\n// produced.\n//\n// In the following examples, we present whole documents together with the\n// produced tokens.\n//\n//      1. An implicit document:\n//\n//          'a scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          STREAM-END\n//\n//      2. An explicit document:\n//\n//          ---\n//          'a scalar'\n//          ...\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-END\n//          STREAM-END\n//\n//      3. Several documents in a stream:\n//\n//          'a scalar'\n//          ---\n//          'another scalar'\n//          ---\n//          'yet another scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"another scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"yet another scalar\",single-quoted)\n//          STREAM-END\n//\n// We have already introduced the SCALAR token above.  The following tokens are\n// used to describe aliases, anchors, tag, and scalars:\n//\n//      ALIAS(anchor)\n//      ANCHOR(anchor)\n//      TAG(handle,suffix)\n//      SCALAR(value,style)\n//\n// The following series of examples illustrate the usage of these tokens:\n//\n//      1. A recursive sequence:\n//\n//          &A [ *A ]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          ANCHOR(\"A\")\n//          FLOW-SEQUENCE-START\n//          ALIAS(\"A\")\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A tagged scalar:\n//\n//          !!float \"3.14\"  # A good approximation.\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          TAG(\"!!\",\"float\")\n//          SCALAR(\"3.14\",double-quoted)\n//          STREAM-END\n//\n//      3. Various scalar styles:\n//\n//          --- # Implicit empty plain scalars do not produce tokens.\n//          --- a plain scalar\n//          --- 'a single-quoted scalar'\n//          --- \"a double-quoted scalar\"\n//          --- |-\n//            a literal scalar\n//          --- >-\n//            a folded\n//            scalar\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          DOCUMENT-START\n//          SCALAR(\"a plain scalar\",plain)\n//          DOCUMENT-START\n//          SCALAR(\"a single-quoted scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a double-quoted scalar\",double-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a literal scalar\",literal)\n//          DOCUMENT-START\n//          SCALAR(\"a folded scalar\",folded)\n//          STREAM-END\n//\n// Now it's time to review collection-related tokens. We will start with\n// flow collections:\n//\n//      FLOW-SEQUENCE-START\n//      FLOW-SEQUENCE-END\n//      FLOW-MAPPING-START\n//      FLOW-MAPPING-END\n//      FLOW-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and\n// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'\n// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the\n// indicators '?' and ':', which are used for denoting mapping keys and values,\n// are represented by the KEY and VALUE tokens.\n//\n// The following examples show flow collections:\n//\n//      1. A flow sequence:\n//\n//          [item 1, item 2, item 3]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-SEQUENCE-START\n//          SCALAR(\"item 1\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 3\",plain)\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A flow mapping:\n//\n//          {\n//              a simple key: a value,  # Note that the KEY token is produced.\n//              ? a complex key: another value,\n//          }\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          FLOW-ENTRY\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          FLOW-ENTRY\n//          FLOW-MAPPING-END\n//          STREAM-END\n//\n// A simple key is a key which is not denoted by the '?' indicator.  Note that\n// the Scanner still produce the KEY token whenever it encounters a simple key.\n//\n// For scanning block collections, the following tokens are used (note that we\n// repeat KEY and VALUE here):\n//\n//      BLOCK-SEQUENCE-START\n//      BLOCK-MAPPING-START\n//      BLOCK-END\n//      BLOCK-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation\n// increase that precedes a block collection (cf. the INDENT token in Python).\n// The token BLOCK-END denote indentation decrease that ends a block collection\n// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities\n// that makes detections of these tokens more complex.\n//\n// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators\n// '-', '?', and ':' correspondingly.\n//\n// The following examples show how the tokens BLOCK-SEQUENCE-START,\n// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:\n//\n//      1. Block sequences:\n//\n//          - item 1\n//          - item 2\n//          -\n//            - item 3.1\n//            - item 3.2\n//          -\n//            key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Block mappings:\n//\n//          a simple key: a value   # The KEY token is produced here.\n//          ? a complex key\n//          : another value\n//          a mapping:\n//            key 1: value 1\n//            key 2: value 2\n//          a sequence:\n//            - item 1\n//            - item 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML does not always require to start a new block collection from a new\n// line.  If the current line contains only '-', '?', and ':' indicators, a new\n// block collection may start at the current line.  The following examples\n// illustrate this case:\n//\n//      1. Collections in a sequence:\n//\n//          - - item 1\n//            - item 2\n//          - key 1: value 1\n//            key 2: value 2\n//          - ? complex key\n//            : complex value\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"complex key\")\n//          VALUE\n//          SCALAR(\"complex value\")\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Collections in a mapping:\n//\n//          ? a sequence\n//          : - item 1\n//            - item 2\n//          ? a mapping\n//          : key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          VALUE\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML also permits non-indented sequences if they are included into a block\n// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:\n//\n//      key:\n//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.\n//      - item 2\n//\n// Tokens:\n//\n//      STREAM-START(utf-8)\n//      BLOCK-MAPPING-START\n//      KEY\n//      SCALAR(\"key\",plain)\n//      VALUE\n//      BLOCK-ENTRY\n//      SCALAR(\"item 1\",plain)\n//      BLOCK-ENTRY\n//      SCALAR(\"item 2\",plain)\n//      BLOCK-END\n//\n\n// Ensure that the buffer contains the required number of characters.\n// Return true on success, false on failure (reader error or memory error).\nfunc cache(parser *yaml_parser_t, length int) bool {\n\t// [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)\n\treturn parser.unread >= length || yaml_parser_update_buffer(parser, length)\n}\n\n// Advance the buffer pointer.\nfunc skip(parser *yaml_parser_t) {\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n}\n\nfunc skip_line(parser *yaml_parser_t) {\n\tif is_crlf(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index += 2\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread -= 2\n\t\tparser.buffer_pos += 2\n\t} else if is_break(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index++\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread--\n\t\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n\t}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\n\tw := width(parser.buffer[parser.buffer_pos])\n\tif w == 0 {\n\t\tpanic(\"invalid character sequence\")\n\t}\n\tif len(s) == 0 {\n\t\ts = make([]byte, 0, 32)\n\t}\n\tif w == 1 && len(s)+w <= cap(s) {\n\t\ts = s[:len(s)+1]\n\t\ts[len(s)-1] = parser.buffer[parser.buffer_pos]\n\t\tparser.buffer_pos++\n\t} else {\n\t\ts = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)\n\t\tparser.buffer_pos += w\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\treturn s\n}\n\n// Copy a line break character to a string buffer and advance pointers.\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tswitch {\n\tcase buf[pos] == '\\r' && buf[pos+1] == '\\n':\n\t\t// CR LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\t\tparser.mark.index++\n\t\tparser.unread--\n\tcase buf[pos] == '\\r' || buf[pos] == '\\n':\n\t\t// CR|LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 1\n\tcase buf[pos] == '\\xC2' && buf[pos+1] == '\\x85':\n\t\t// NEL . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\tcase buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' && (buf[pos+2] == '\\xA8' || buf[pos+2] == '\\xA9'):\n\t\t// LS|PS . LS|PS\n\t\ts = append(s, buf[parser.buffer_pos:pos+3]...)\n\t\tparser.buffer_pos += 3\n\tdefault:\n\t\treturn s\n\t}\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\treturn s\n}\n\n// Get the next token.\nfunc yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Erase the token object.\n\t*token = yaml_token_t{} // [Go] Is this necessary?\n\n\t// No tokens after STREAM-END or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR {\n\t\treturn true\n\t}\n\n\t// Ensure that the tokens queue contains enough tokens.\n\tif !parser.token_available {\n\t\tif !yaml_parser_fetch_more_tokens(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Fetch the next token from the queue.\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.tokens_parsed++\n\tparser.token_available = false\n\n\tif token.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\treturn true\n}\n\n// Set the scanner error and return false.\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {\n\tparser.error = yaml_SCANNER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = parser.mark\n\treturn false\n}\n\nfunc yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {\n\tcontext := \"while parsing a tag\"\n\tif directive {\n\t\tcontext = \"while parsing a %TAG directive\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, problem)\n}\n\nfunc trace(args ...interface{}) func() {\n\tpargs := append([]interface{}{\"+++\"}, args...)\n\tfmt.Println(pargs...)\n\tpargs = append([]interface{}{\"---\"}, args...)\n\treturn func() { fmt.Println(pargs...) }\n}\n\n// Ensure that the tokens queue contains at least one token which can be\n// returned to the Parser.\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t// While we need more tokens to fetch, do it.\n\tfor {\n\t\t// Check if we really need to fetch more tokens.\n\t\tneed_more_tokens := false\n\n\t\tif parser.tokens_head == len(parser.tokens) {\n\t\t\t// Queue is empty.\n\t\t\tneed_more_tokens = true\n\t\t} else {\n\t\t\t// Check if any potential simple key may occupy the head position.\n\t\t\tif !yaml_parser_stale_simple_keys(parser) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tfor i := range parser.simple_keys {\n\t\t\t\tsimple_key := &parser.simple_keys[i]\n\t\t\t\tif simple_key.possible && simple_key.token_number == parser.tokens_parsed {\n\t\t\t\t\tneed_more_tokens = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// We are finished.\n\t\tif !need_more_tokens {\n\t\t\tbreak\n\t\t}\n\t\t// Fetch the next token.\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tparser.token_available = true\n\treturn true\n}\n\n// The dispatcher for token fetchers.\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {\n\t// Ensure that the buffer is initialized.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check if we just started scanning.  Fetch STREAM-START then.\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\t// Eat whitespaces and comments until we reach the next token.\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t// Remove obsolete potential simple keys.\n\tif !yaml_parser_stale_simple_keys(parser) {\n\t\treturn false\n\t}\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column) {\n\t\treturn false\n\t}\n\n\t// Ensure that the buffer contains at least 4 characters.  4 is the length\n\t// of the longest indicators ('--- ' and '... ').\n\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\treturn false\n\t}\n\n\t// Is it the end of the stream?\n\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t// Is it a directive?\n\tif parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\t// Is it the document start indicator?\n\tif parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t// Is it the document end indicator?\n\tif parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)\n\t}\n\n\t// Is it the flow sequence start indicator?\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t// Is it the flow mapping start indicator?\n\tif parser.buffer[parser.buffer_pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t// Is it the flow sequence end indicator?\n\tif parser.buffer[parser.buffer_pos] == ']' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_SEQUENCE_END_TOKEN)\n\t}\n\n\t// Is it the flow mapping end indicator?\n\tif parser.buffer[parser.buffer_pos] == '}' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_MAPPING_END_TOKEN)\n\t}\n\n\t// Is it the flow entry indicator?\n\tif parser.buffer[parser.buffer_pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t// Is it the block entry indicator?\n\tif parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t// Is it the key indicator?\n\tif parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t// Is it the value indicator?\n\tif parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t// Is it an alias?\n\tif parser.buffer[parser.buffer_pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t// Is it an anchor?\n\tif parser.buffer[parser.buffer_pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t// Is it a tag?\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t// Is it a literal scalar?\n\tif parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, true)\n\t}\n\n\t// Is it a folded scalar?\n\tif parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, false)\n\t}\n\n\t// Is it a single-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t// Is it a double-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t// Is it a plain scalar?\n\t//\n\t// A plain scalar may start with any non-blank characters except\n\t//\n\t//      '-', '?', ':', ',', '[', ']', '{', '}',\n\t//      '#', '&', '*', '!', '|', '>', '\\'', '\\\"',\n\t//      '%', '@', '`'.\n\t//\n\t// In the block context (and, for the '-' indicator, in the flow context\n\t// too), it may also start with the characters\n\t//\n\t//      '-', '?', ':'\n\t//\n\t// if it is followed by a non-space character.\n\t//\n\t// The last rule is more restrictive than the specification requires.\n\t// [Go] Make this logic more reasonable.\n\t//switch parser.buffer[parser.buffer_pos] {\n\t//case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '\"', '\\'', '@', '%', '-', '`':\n\t//}\n\tif !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||\n\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\tparser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||\n\t\tparser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '\"' || parser.buffer[parser.buffer_pos] == '%' ||\n\t\tparser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||\n\t\t(parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&\n\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t// If we don't determine the token type so far, it is an error.\n\treturn yaml_parser_set_scanner_error(parser,\n\t\t\"while scanning for the next token\", parser.mark,\n\t\t\"found character that cannot start any token\")\n}\n\n// Check the list of potential simple keys and remove the positions that\n// cannot contain simple keys anymore.\nfunc yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool {\n\t// Check for a potential simple key for each flow level.\n\tfor i := range parser.simple_keys {\n\t\tsimple_key := &parser.simple_keys[i]\n\n\t\t// The specification requires that a simple key\n\t\t//\n\t\t//  - is limited to a single line,\n\t\t//  - is shorter than 1024 characters.\n\t\tif simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) {\n\n\t\t\t// Check if the potential simple key to be removed is required.\n\t\t\tif simple_key.required {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\t\"could not find expected ':'\")\n\t\t\t}\n\t\t\tsimple_key.possible = false\n\t\t}\n\t}\n\treturn true\n}\n\n// Check if a simple key may start at the current position and add it if\n// needed.\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t// A simple key is required at the current position if the scanner is in\n\t// the block context and the current column coincides with the indentation\n\t// level.\n\n\trequired := parser.flow_level == 0 && parser.indent == parser.mark.column\n\n\t//\n\t// If the current position may start a simple key, save it.\n\t//\n\tif parser.simple_key_allowed {\n\t\tsimple_key := yaml_simple_key_t{\n\t\t\tpossible:     true,\n\t\t\trequired:     required,\n\t\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\t}\n\t\tsimple_key.mark = parser.mark\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t}\n\treturn true\n}\n\n// Remove a potential simple key at the current flow level.\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\ti := len(parser.simple_keys) - 1\n\tif parser.simple_keys[i].possible {\n\t\t// If the key is required, it is an error.\n\t\tif parser.simple_keys[i].required {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", parser.simple_keys[i].mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t}\n\t// Remove the key from the stack.\n\tparser.simple_keys[i].possible = false\n\treturn true\n}\n\n// Increase the flow level and resize the simple key list if needed.\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t// Reset the simple key on the next level.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\t// Increase the flow level.\n\tparser.flow_level++\n\treturn true\n}\n\n// Decrease the flow level.\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tparser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1]\n\t}\n\treturn true\n}\n\n// Push the current indentation level to the stack and set the new level\n// the current column is greater than the indentation level.  In this case,\n// append or insert the specified token into the token queue.\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent < column {\n\t\t// Push the current indentation level to the stack and set the new\n\t\t// indentation level.\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\n\t\t// Create a token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        typ,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tyaml_insert_token(parser, number, &token)\n\t}\n\treturn true\n}\n\n// Pop indentation levels from the indents stack until the current level\n// becomes less or equal to the column.  For each indentation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\t// Loop through the indentation levels in the stack.\n\tfor parser.indent > column {\n\t\t// Create a token and append it to the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: parser.mark,\n\t\t\tend_mark:   parser.mark,\n\t\t}\n\t\tyaml_insert_token(parser, -1, &token)\n\n\t\t// Pop the indentation level.\n\t\tparser.indent = parser.indents[len(parser.indents)-1]\n\t\tparser.indents = parser.indents[:len(parser.indents)-1]\n\t}\n\treturn true\n}\n\n// Initialize the scanner and produce the STREAM-START token.\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\n\t// Set the initial indentation.\n\tparser.indent = -1\n\n\t// Initialize the simple key stack.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\t// A simple key is allowed at the beginning of the stream.\n\tparser.simple_key_allowed = true\n\n\t// We have started.\n\tparser.stream_start_produced = true\n\n\t// Create the STREAM-START token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the STREAM-END token and shut down the scanner.\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\n\t// Force new line.\n\tif parser.mark.column != 0 {\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t}\n\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the STREAM-END token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.\n\ttoken := yaml_token_t{}\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the DOCUMENT-START or DOCUMENT-END token.\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\tskip(parser)\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t// Create the DOCUMENT-START or DOCUMENT-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// The indicators '[' and '{' may start a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Increase the flow level.\n\tif !yaml_parser_increase_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow the indicators '[' and '{'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset any potential simple key on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Decrease the flow level.\n\tif !yaml_parser_decrease_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// No simple keys after the indicators ']' and '}'.\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-ENTRY token.\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after ','.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the BLOCK-ENTRY token.\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\t// Check if the scanner is in the block context.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new entry.\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"block sequence entries are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-SEQUENCE-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t// It is an error for the '-' indicator to occur in the flow context,\n\t\t// but we let the Parser detect and report about it because the Parser\n\t\t// is able to point to the context.\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '-'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the BLOCK-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the KEY token.\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\n\t// In the block context, additional checks are required.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new key (not nessesary simple).\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"mapping keys are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '?' in the block context.\n\tparser.simple_key_allowed = parser.flow_level == 0\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the KEY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the VALUE token.\nfunc yaml_parser_fetch_value(parser *yaml_parser_t) bool {\n\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\t// Have we found a simple key?\n\tif simple_key.possible {\n\t\t// Create the KEY token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\t\tyaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)\n\n\t\t// In the block context, we may need to add the BLOCK-MAPPING-START token.\n\t\tif !yaml_parser_roll_indent(parser, simple_key.mark.column,\n\t\t\tsimple_key.token_number,\n\t\t\tyaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Remove the simple key.\n\t\tsimple_key.possible = false\n\n\t\t// A simple key cannot follow another simple key.\n\t\tparser.simple_key_allowed = false\n\n\t} else {\n\t\t// The ':' indicator follows a complex key.\n\n\t\t// In the block context, extra checks are required.\n\t\tif parser.flow_level == 0 {\n\n\t\t\t// Check if we are allowed to start a complex value.\n\t\t\tif !parser.simple_key_allowed {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\t\"mapping values are not allowed in this context\")\n\t\t\t}\n\n\t\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Simple keys after ':' are allowed in the block context.\n\t\tparser.simple_key_allowed = parser.flow_level == 0\n\t}\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the VALUE token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the ALIAS or ANCHOR token.\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// An anchor or an alias could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow an anchor or an alias.\n\tparser.simple_key_allowed = false\n\n\t// Create the ALIAS or ANCHOR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_anchor(parser, &token, typ) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the TAG token.\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t// A tag could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a tag.\n\tparser.simple_key_allowed = false\n\n\t// Create the TAG token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_tag(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t// Remove any potential simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow a block scalar.\n\tparser.simple_key_allowed = true\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_block_scalar(parser, &token, literal) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_flow_scalar(parser, &token, single) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,plain) token.\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_plain_scalar(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Eat whitespaces and comments until the next token is found.\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\n\t// Until the next token is not found.\n\tfor {\n\t\t// Allow the BOM mark to start a line.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t// Eat whitespaces.\n\t\t// Tabs are allowed:\n\t\t//  - in the flow context\n\t\t//  - in the block context, but not at the beginning of the line or\n\t\t//  after '-', '?', or ':' (complex value).\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tskip(parser)\n\t\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If it is a line break, eat it.\n\t\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tskip_line(parser)\n\n\t\t\t// In the block context, a new line may start a simple key.\n\t\t\tif parser.flow_level == 0 {\n\t\t\t\tparser.simple_key_allowed = true\n\t\t\t}\n\t\t} else {\n\t\t\tbreak // We have found a token.\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.\n//\n// Scope:\n//      %YAML    1.1    # a comment \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Eat '%'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the directive name.\n\tvar name []byte\n\tif !yaml_parser_scan_directive_name(parser, start_mark, &name) {\n\t\treturn false\n\t}\n\n\t// Is it a YAML directive?\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t// Scan the VERSION directive value.\n\t\tvar major, minor int8\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a VERSION-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_VERSION_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tmajor:      major,\n\t\t\tminor:      minor,\n\t\t}\n\n\t\t// Is it a TAG directive?\n\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t// Scan the TAG directive value.\n\t\tvar handle, prefix []byte\n\t\tif !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a TAG-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_TAG_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tvalue:      handle,\n\t\t\tprefix:     prefix,\n\t\t}\n\n\t\t// Unknown directive.\n\t} else {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unknown directive name\")\n\t\treturn false\n\t}\n\n\t// Eat the rest of the line including any comments.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\n\n// Scan the directive name.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//       ^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//       ^^^\n//\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {\n\t// Consume the directive name.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the name is empty.\n\tif len(s) == 0 {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"could not find expected directive name\")\n\t\treturn false\n\t}\n\n\t// Check for an blank character after the name.\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unexpected non-alphabetical character\")\n\t\treturn false\n\t}\n\t*name = s\n\treturn true\n}\n\n// Scan the value of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//           ^^^^^^\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Consume the major version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t// Eat '.'.\n\tif parser.buffer[parser.buffer_pos] != '.' {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected digit or '.' character\")\n\t}\n\n\tskip(parser)\n\n\t// Consume the minor version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst max_number_length = 2\n\n// Scan the version number of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//              ^\n//      %YAML   1.1     # a comment \\n\n//                ^\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {\n\n\t// Repeat while the next character is digit.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar value, length int8\n\tfor is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Check if the number is too long.\n\t\tlength++\n\t\tif length > max_number_length {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\t\tstart_mark, \"found extremely long version number\")\n\t\t}\n\t\tvalue = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the number was present.\n\tif length == 0 {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected version number\")\n\t}\n\t*number = value\n\treturn true\n}\n\n// Scan the value of a TAG-DIRECTIVE token.\n//\n// Scope:\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {\n\tvar handle_value, prefix_value []byte\n\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a handle.\n\tif !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace\")\n\t\treturn false\n\t}\n\n\t// Eat whitespaces.\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a prefix.\n\tif !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace or line break.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\t*handle = handle_value\n\t*prefix = prefix_value\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {\n\tvar s []byte\n\n\t// Eat the indicator character.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the value.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tend_mark := parser.mark\n\n\t/*\n\t * Check if length of the anchor is greater than 0 and it is followed by\n\t * a whitespace character or one of the indicators:\n\t *\n\t *      '?', ':', ',', ']', '}', '%', '@', '`'.\n\t */\n\n\tif len(s) == 0 ||\n\t\t!(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '`') {\n\t\tcontext := \"while scanning an alias\"\n\t\tif typ == yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an anchor\"\n\t\t}\n\t\tyaml_parser_set_scanner_error(parser, context, start_mark,\n\t\t\t\"did not find expected alphabetic or numeric character\")\n\t\treturn false\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t}\n\n\treturn true\n}\n\n/*\n * Scan a TAG token.\n */\n\nfunc yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar handle, suffix []byte\n\n\tstart_mark := parser.mark\n\n\t// Check if the tag is in the canonical form.\n\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\treturn false\n\t}\n\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t// Keep the handle as ''\n\n\t\t// Eat '!<'\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t// Consume the tag value.\n\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for '>' and eat it.\n\t\tif parser.buffer[parser.buffer_pos] != '>' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\t\tstart_mark, \"did not find the expected '>'\")\n\t\t\treturn false\n\t\t}\n\n\t\tskip(parser)\n\t} else {\n\t\t// The tag has either the '!suffix' or the '!handle!suffix' form.\n\n\t\t// First, try to scan a handle.\n\t\tif !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if it is, indeed, handle.\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t// Scan the suffix now.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\t// It wasn't a handle after all.  Scan the rest of the tag.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Set the handle to '!'.\n\t\t\thandle = []byte{'!'}\n\n\t\t\t// A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t// suffix to '!'.\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check the character which ends the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_TAG_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      handle,\n\t\tsuffix:     suffix,\n\t}\n\treturn true\n}\n\n// Scan a tag handle.\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {\n\t// Check the initial '!' character.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif parser.buffer[parser.buffer_pos] != '!' {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected '!'\")\n\t\treturn false\n\t}\n\n\tvar s []byte\n\n\t// Copy the '!' character.\n\ts = read(parser, s)\n\n\t// Copy all subsequent alphabetical and numerical characters.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the trailing character is '!' and copy it.\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t// It's either the '!' tag or not really a tag handle.  If it's a %TAG\n\t\t// directive, it's an error.  If it's a tag token, it must be a part of URI.\n\t\tif directive && string(s) != \"!\" {\n\t\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find expected '!'\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*handle = s\n\treturn true\n}\n\n// Scan a tag.\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {\n\t//size_t length = head ? strlen((char *)head) : 0\n\tvar s []byte\n\thasTag := len(head) > 0\n\n\t// Copy the head if needed.\n\t//\n\t// Note that we don't copy the leading '!' character.\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t// Scan the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// The set of characters that may appear in URI is as follows:\n\t//\n\t//      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',\n\t//      '=', '+', '$', ',', '.', '!', '~', '*', '\\'', '(', ')', '[', ']',\n\t//      '%'.\n\t// [Go] Convert this into more reasonable logic.\n\tfor is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||\n\t\tparser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||\n\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||\n\t\tparser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||\n\t\tparser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||\n\t\tparser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||\n\t\tparser.buffer[parser.buffer_pos] == '%' {\n\t\t// Check if it is a URI-escape sequence.\n\t\tif parser.buffer[parser.buffer_pos] == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\ts = read(parser, s)\n\t\t}\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\thasTag = true\n\t}\n\n\tif !hasTag {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected tag URI\")\n\t\treturn false\n\t}\n\t*uri = s\n\treturn true\n}\n\n// Decode an URI-escape sequence corresponding to a single UTF-8 character.\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {\n\n\t// Decode the required number of characters.\n\tw := 1024\n\tfor w > 0 {\n\t\t// Check for a URI-escaped octet.\n\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !(parser.buffer[parser.buffer_pos] == '%' &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+1) &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+2)) {\n\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find URI escaped octet\")\n\t\t}\n\n\t\t// Get the octet.\n\t\toctet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))\n\n\t\t// If it is the leading octet, determine the length of the UTF-8 sequence.\n\t\tif w == 1024 {\n\t\t\tw = width(octet)\n\t\t\tif w == 0 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect leading UTF-8 octet\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Check if the trailing octet is correct.\n\t\t\tif octet&0xC0 != 0x80 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect trailing UTF-8 octet\")\n\t\t\t}\n\t\t}\n\n\t\t// Copy the octet and move the pointers.\n\t\t*s = append(*s, octet)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tw--\n\t}\n\treturn true\n}\n\n// Scan a block scalar.\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {\n\t// Eat the indicator '|' or '>'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the additional block scalar indicators.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check for a chomping indicator.\n\tvar chomping, increment int\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t// Set the chomping method and eat the indicator.\n\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\tchomping = +1\n\t\t} else {\n\t\t\tchomping = -1\n\t\t}\n\t\tskip(parser)\n\n\t\t// Check for an indentation indicator.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif is_digit(parser.buffer, parser.buffer_pos) {\n\t\t\t// Check that the indentation is greater than 0.\n\t\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the indentation level and eat the indicator.\n\t\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\t\tskip(parser)\n\t\t}\n\n\t} else if is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Do the same as above, but in the opposite order.\n\n\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\treturn false\n\t\t}\n\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\tskip(parser)\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\t\tchomping = +1\n\t\t\t} else {\n\t\t\t\tchomping = -1\n\t\t\t}\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t// Eat whitespaces and comments to the end of the line.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\tend_mark := parser.mark\n\n\t// Set the indentation level if it was specified.\n\tvar indent int\n\tif increment > 0 {\n\t\tif parser.indent >= 0 {\n\t\t\tindent = parser.indent + increment\n\t\t} else {\n\t\t\tindent = increment\n\t\t}\n\t}\n\n\t// Scan the leading line breaks and determine the indentation level if needed.\n\tvar s, leading_break, trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t// Scan the block scalar content.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar leading_blank, trailing_blank bool\n\tfor parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {\n\t\t// We are at the beginning of a non-empty line.\n\n\t\t// Is it a trailing whitespace?\n\t\ttrailing_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Check if we need to fold the leading line break.\n\t\tif !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t// Do we need to join the lines by space?\n\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\ts = append(s, ' ')\n\t\t\t}\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t}\n\t\tleading_break = leading_break[:0]\n\n\t\t// Append the remaining line breaks.\n\t\ts = append(s, trailing_breaks...)\n\t\ttrailing_breaks = trailing_breaks[:0]\n\n\t\t// Is it a leading whitespace?\n\t\tleading_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Consume the current line.\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_break = read_line(parser, leading_break)\n\n\t\t// Eat the following indentation spaces and line breaks.\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Chomp the tail.\n\tif chomping != -1 {\n\t\ts = append(s, leading_break...)\n\t}\n\tif chomping == 1 {\n\t\ts = append(s, trailing_breaks...)\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_LITERAL_SCALAR_STYLE,\n\t}\n\tif !literal {\n\t\ttoken.style = yaml_FOLDED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan indentation spaces and line breaks for a block scalar.  Determine the\n// indentation level if needed.\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {\n\t*end_mark = parser.mark\n\n\t// Eat the indentation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the indentation spaces.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tfor (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif parser.mark.column > max_indent {\n\t\t\tmax_indent = parser.mark.column\n\t\t}\n\n\t\t// Check for a tab character messing the indentation.\n\t\tif (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found a tab character where an indentation space is expected\")\n\t\t}\n\n\t\t// Have we found a non-empty line?\n\t\tif !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\t// [Go] Should really be returning breaks instead.\n\t\t*breaks = read_line(parser, *breaks)\n\t\t*end_mark = parser.mark\n\t}\n\n\t// Determine the indentation level if needed.\n\tif *indent == 0 {\n\t\t*indent = max_indent\n\t\tif *indent < parser.indent+1 {\n\t\t\t*indent = parser.indent + 1\n\t\t}\n\t\tif *indent < 1 {\n\t\t\t*indent = 1\n\t\t}\n\t}\n\treturn true\n}\n\n// Scan a quoted scalar.\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {\n\t// Eat the left quote.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the content of the quoted scalar.\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tfor {\n\t\t// Check that there are no document indicators at the beginning of the line.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected document indicator\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for EOF.\n\t\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected end of stream\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tleading_blanks := false\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' && parser.buffer[parser.buffer_pos+1] == '\\'' {\n\t\t\t\t// Is is an escaped single quote.\n\t\t\t\ts = append(s, '\\'')\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t// It is a right single quote.\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t// It is a right double quote.\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' && is_break(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\t// It is an escaped line break.\n\t\t\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip(parser)\n\t\t\t\tskip_line(parser)\n\t\t\t\tleading_blanks = true\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\t\t\t\t// It is an escape sequence.\n\t\t\t\tcode_length := 0\n\n\t\t\t\t// Check the escape character.\n\t\t\t\tswitch parser.buffer[parser.buffer_pos+1] {\n\t\t\t\tcase '0':\n\t\t\t\t\ts = append(s, 0)\n\t\t\t\tcase 'a':\n\t\t\t\t\ts = append(s, '\\x07')\n\t\t\t\tcase 'b':\n\t\t\t\t\ts = append(s, '\\x08')\n\t\t\t\tcase 't', '\\t':\n\t\t\t\t\ts = append(s, '\\x09')\n\t\t\t\tcase 'n':\n\t\t\t\t\ts = append(s, '\\x0A')\n\t\t\t\tcase 'v':\n\t\t\t\t\ts = append(s, '\\x0B')\n\t\t\t\tcase 'f':\n\t\t\t\t\ts = append(s, '\\x0C')\n\t\t\t\tcase 'r':\n\t\t\t\t\ts = append(s, '\\x0D')\n\t\t\t\tcase 'e':\n\t\t\t\t\ts = append(s, '\\x1B')\n\t\t\t\tcase ' ':\n\t\t\t\t\ts = append(s, '\\x20')\n\t\t\t\tcase '\"':\n\t\t\t\t\ts = append(s, '\"')\n\t\t\t\tcase '\\'':\n\t\t\t\t\ts = append(s, '\\'')\n\t\t\t\tcase '\\\\':\n\t\t\t\t\ts = append(s, '\\\\')\n\t\t\t\tcase 'N': // NEL (#x85)\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\x85')\n\t\t\t\tcase '_': // #xA0\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\xA0')\n\t\t\t\tcase 'L': // LS (#x2028)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA8')\n\t\t\t\tcase 'P': // PS (#x2029)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA9')\n\t\t\t\tcase 'x':\n\t\t\t\t\tcode_length = 2\n\t\t\t\tcase 'u':\n\t\t\t\t\tcode_length = 4\n\t\t\t\tcase 'U':\n\t\t\t\t\tcode_length = 8\n\t\t\t\tdefault:\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\tstart_mark, \"found unknown escape character\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t\t// Consume an arbitrary escape code.\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvar value int\n\n\t\t\t\t\t// Scan the character value.\n\t\t\t\t\tif parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tif !is_hex(parser.buffer, parser.buffer_pos+k) {\n\t\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\t\tstart_mark, \"did not find expected hexdecimal number\")\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the value and write the character.\n\t\t\t\t\tif (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {\n\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\tstart_mark, \"found invalid Unicode character escape code\")\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tif value <= 0x7F {\n\t\t\t\t\t\ts = append(s, byte(value))\n\t\t\t\t\t} else if value <= 0x7FF {\n\t\t\t\t\t\ts = append(s, byte(0xC0+(value>>6)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t\t\ts = append(s, byte(0xE0+(value>>12)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, byte(0xF0+(value>>18)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>12)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Advance the pointer.\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tskip(parser)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It is a non-escaped non-blank character.\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if we are at the end of the scalar.\n\t\tif single {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Join the whitespaces or fold line breaks.\n\t\tif leading_blanks {\n\t\t\t// Do we need to fold line breaks?\n\t\t\tif len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ts = append(s, leading_break...)\n\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t}\n\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, whitespaces...)\n\t\t\twhitespaces = whitespaces[:0]\n\t\t}\n\t}\n\n\t// Eat the right quote.\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_SINGLE_QUOTED_SCALAR_STYLE,\n\t}\n\tif !single {\n\t\ttoken.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan a plain scalar.\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tvar leading_blanks bool\n\tvar indent = parser.indent + 1\n\n\tstart_mark := parser.mark\n\tend_mark := parser.mark\n\n\t// Consume the content of the plain scalar.\n\tfor {\n\t\t// Check for a document indicator.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Check for a comment.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\n\t\t\t// Check for indicators that may end a plain scalar.\n\t\t\tif (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check if we need to join whitespaces and breaks.\n\t\t\tif leading_blanks || len(whitespaces) > 0 {\n\t\t\t\tif leading_blanks {\n\t\t\t\t\t// Do we need to fold line breaks?\n\t\t\t\t\tif leading_break[0] == '\\n' {\n\t\t\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, leading_break...)\n\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t}\n\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\tleading_break = leading_break[:0]\n\t\t\t\t\tleading_blanks = false\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, whitespaces...)\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the character.\n\t\t\ts = read(parser, s)\n\n\t\t\tend_mark = parser.mark\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Is it the end?\n\t\tif !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\n\t\t\t\t// Check for tab characters that abuse indentation.\n\t\t\t\tif leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\t\tstart_mark, \"found a tab character that violates indentation\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check indentation level.\n\t\tif parser.flow_level == 0 && parser.mark.column < indent {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_PLAIN_SCALAR_STYLE,\n\t}\n\n\t// Note that we change the 'simple_key_allowed' flag.\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/sorter.go",
    "content": "package yaml\n\nimport (\n\t\"reflect\"\n\t\"unicode\"\n)\n\ntype keyList []reflect.Value\n\nfunc (l keyList) Len() int      { return len(l) }\nfunc (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }\nfunc (l keyList) Less(i, j int) bool {\n\ta := l[i]\n\tb := l[j]\n\tak := a.Kind()\n\tbk := b.Kind()\n\tfor (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {\n\t\ta = a.Elem()\n\t\tak = a.Kind()\n\t}\n\tfor (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {\n\t\tb = b.Elem()\n\t\tbk = b.Kind()\n\t}\n\taf, aok := keyFloat(a)\n\tbf, bok := keyFloat(b)\n\tif aok && bok {\n\t\tif af != bf {\n\t\t\treturn af < bf\n\t\t}\n\t\tif ak != bk {\n\t\t\treturn ak < bk\n\t\t}\n\t\treturn numLess(a, b)\n\t}\n\tif ak != reflect.String || bk != reflect.String {\n\t\treturn ak < bk\n\t}\n\tar, br := []rune(a.String()), []rune(b.String())\n\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[i] {\n\t\t\tcontinue\n\t\t}\n\t\tal := unicode.IsLetter(ar[i])\n\t\tbl := unicode.IsLetter(br[i])\n\t\tif al && bl {\n\t\t\treturn ar[i] < br[i]\n\t\t}\n\t\tif al || bl {\n\t\t\treturn bl\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\n\t\tif ar[i] == '0' || br[i] == '0' {\n\t\t\tfor j := i-1; j >= 0 && unicode.IsDigit(ar[j]); j-- {\n\t\t\t\tif ar[j] != '0' {\n\t\t\t\t\tan = 1\n\t\t\t\t\tbn = 1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {\n\t\t\tan = an*10 + int64(ar[ai]-'0')\n\t\t}\n\t\tfor bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {\n\t\t\tbn = bn*10 + int64(br[bi]-'0')\n\t\t}\n\t\tif an != bn {\n\t\t\treturn an < bn\n\t\t}\n\t\tif ai != bi {\n\t\t\treturn ai < bi\n\t\t}\n\t\treturn ar[i] < br[i]\n\t}\n\treturn len(ar) < len(br)\n}\n\n// keyFloat returns a float value for v if it is a number/bool\n// and whether it is a number/bool or not.\nfunc keyFloat(v reflect.Value) (f float64, ok bool) {\n\tswitch v.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn float64(v.Int()), true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float(), true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn float64(v.Uint()), true\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn 0, true\n\t}\n\treturn 0, false\n}\n\n// numLess returns whether a < b.\n// a and b must necessarily have the same kind.\nfunc numLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\t}\n\tpanic(\"not a number\")\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/writerc.go",
    "content": "package yaml\n\n// Set the writer error and return false.\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Flush the output buffer.\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"write handler not set\")\n\t}\n\n\t// Check if the buffer is empty.\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\treturn true\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/yaml.go",
    "content": "// Package yaml implements YAML support for the Go language.\n//\n// Source code and other details for the project are available at GitHub:\n//\n//   https://github.com/go-yaml/yaml\n//\npackage yaml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// MapSlice encodes and decodes as a YAML map.\n// The order of keys is preserved when encoding and decoding.\ntype MapSlice []MapItem\n\n// MapItem is an item in a MapSlice.\ntype MapItem struct {\n\tKey, Value interface{}\n}\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a YAML document. The UnmarshalYAML\n// method receives a function that may be called to unmarshal the original\n// YAML value into a field or variable. It is safe to call the unmarshal\n// function parameter more than once if necessary.\ntype Unmarshaler interface {\n\tUnmarshalYAML(unmarshal func(interface{}) error) error\n}\n\n// The Marshaler interface may be implemented by types to customize their\n// behavior when being marshaled into a YAML document. The returned value\n// is marshaled in place of the original value implementing Marshaler.\n//\n// If an error is returned by MarshalYAML, the marshaling procedure stops\n// and returns with the provided error.\ntype Marshaler interface {\n\tMarshalYAML() (interface{}, error)\n}\n\n// Unmarshal decodes the first document found within the in byte slice\n// and assigns decoded values into the out value.\n//\n// Maps and pointers (to a struct, string, int, etc) are accepted as out\n// values. If an internal pointer within a struct is not initialized,\n// the yaml package will initialize it if necessary for unmarshalling\n// the provided data. The out parameter must not be nil.\n//\n// The type of the decoded values should be compatible with the respective\n// values in out. If one or more values cannot be decoded due to a type\n// mismatches, decoding continues partially until the end of the YAML\n// content, and a *yaml.TypeError is returned with details for all\n// missed values.\n//\n// Struct fields are only unmarshalled if they are exported (have an\n// upper case first letter), and are unmarshalled using the field name\n// lowercased as the default key. Custom keys may be defined via the\n// \"yaml\" name in the field tag: the content preceding the first comma\n// is used as the key, and the following comma-separated options are\n// used to tweak the marshalling process (see Marshal).\n// Conflicting names result in a runtime error.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     var t T\n//     yaml.Unmarshal([]byte(\"a: 1\\nb: 2\"), &t)\n//\n// See the documentation of Marshal for the format of tags and a list of\n// supported tag options.\n//\nfunc Unmarshal(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, false)\n}\n\n// UnmarshalStrict is like Unmarshal except that any fields that are found\n// in the data that do not have corresponding struct members, or mapping\n// keys that are duplicates, will result in\n// an error.\nfunc UnmarshalStrict(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, true)\n}\n\n// A Decorder reads and decodes YAML values from an input stream.\ntype Decoder struct {\n\tstrict bool\n\tparser *parser\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may read\n// data from r beyond the YAML values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tparser: newParserFromReader(r),\n\t}\n}\n\n// SetStrict sets whether strict decoding behaviour is enabled when\n// decoding items in the data (see UnmarshalStrict). By default, decoding is not strict.\nfunc (dec *Decoder) SetStrict(strict bool) {\n\tdec.strict = strict\n}\n\n// Decode reads the next YAML-encoded value from its input\n// and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) (err error) {\n\td := newDecoder(dec.strict)\n\tdefer handleErr(&err)\n\tnode := dec.parser.parse()\n\tif node == nil {\n\t\treturn io.EOF\n\t}\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(node, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\nfunc unmarshal(in []byte, out interface{}, strict bool) (err error) {\n\tdefer handleErr(&err)\n\td := newDecoder(strict)\n\tp := newParser(in)\n\tdefer p.destroy()\n\tnode := p.parse()\n\tif node != nil {\n\t\tv := reflect.ValueOf(out)\n\t\tif v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t\td.unmarshal(node, v)\n\t}\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Marshal serializes the value provided into a YAML document. The structure\n// of the generated document will reflect the structure of the value itself.\n// Maps and pointers (to struct, string, int, etc) are accepted as the in value.\n//\n// Struct fields are only marshalled if they are exported (have an upper case\n// first letter), and are marshalled using the field name lowercased as the\n// default key. Custom keys may be defined via the \"yaml\" name in the field\n// tag: the content preceding the first comma is used as the key, and the\n// following comma-separated options are used to tweak the marshalling process.\n// Conflicting names result in a runtime error.\n//\n// The field tag format accepted is:\n//\n//     `(...) yaml:\"[<key>][,<flag1>[,<flag2>]]\" (...)`\n//\n// The following flags are currently supported:\n//\n//     omitempty    Only include the field if it's not set to the zero\n//                  value for the type or to empty slices or maps.\n//                  Zero valued structs will be omitted if all their public\n//                  fields are zero, unless they implement an IsZero\n//                  method (see the IsZeroer interface type), in which\n//                  case the field will be included if that method returns true.\n//\n//     flow         Marshal using a flow style (useful for structs,\n//                  sequences and maps).\n//\n//     inline       Inline the field, which must be a struct or a map,\n//                  causing all of its fields or keys to be processed as if\n//                  they were part of the outer struct. For maps, keys must\n//                  not conflict with the yaml keys of other struct fields.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     yaml.Marshal(&T{B: 2}) // Returns \"b: 2\\n\"\n//     yaml.Marshal(&T{F: 1}} // Returns \"a: 1\\nb: 0\\n\"\n//\nfunc Marshal(in interface{}) (out []byte, err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// An Encoder writes YAML values to an output stream.\ntype Encoder struct {\n\tencoder *encoder\n}\n\n// NewEncoder returns a new encoder that writes to w.\n// The Encoder should be closed after use to flush all data\n// to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tencoder: newEncoderWithWriter(w),\n\t}\n}\n\n// Encode writes the YAML encoding of v to the stream.\n// If multiple items are encoded to the stream, the\n// second and subsequent document will be preceded\n// with a \"---\" document separator, but the first will not.\n//\n// See the documentation for Marshal for details about the conversion of Go\n// values to YAML.\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te.encoder.marshalDoc(\"\", reflect.ValueOf(v))\n\treturn nil\n}\n\n// Close closes the encoder by writing any remaining data.\n// It does not write a stream terminating string \"...\".\nfunc (e *Encoder) Close() (err error) {\n\tdefer handleErr(&err)\n\te.encoder.finish()\n\treturn nil\n}\n\nfunc handleErr(err *error) {\n\tif v := recover(); v != nil {\n\t\tif e, ok := v.(yamlError); ok {\n\t\t\t*err = e.err\n\t\t} else {\n\t\t\tpanic(v)\n\t\t}\n\t}\n}\n\ntype yamlError struct {\n\terr error\n}\n\nfunc fail(err error) {\n\tpanic(yamlError{err})\n}\n\nfunc failf(format string, args ...interface{}) {\n\tpanic(yamlError{fmt.Errorf(\"yaml: \"+format, args...)})\n}\n\n// A TypeError is returned by Unmarshal when one or more fields in\n// the YAML document cannot be properly decoded into the requested\n// types. When this error is returned, the value is still\n// unmarshaled partially.\ntype TypeError struct {\n\tErrors []string\n}\n\nfunc (e *TypeError) Error() string {\n\treturn fmt.Sprintf(\"yaml: unmarshal errors:\\n  %s\", strings.Join(e.Errors, \"\\n  \"))\n}\n\n// --------------------------------------------------------------------------\n// Maintain a mapping of keys to structure field indexes\n\n// The code in this section was copied from mgo/bson.\n\n// structInfo holds details for the serialization of fields of\n// a given struct.\ntype structInfo struct {\n\tFieldsMap  map[string]fieldInfo\n\tFieldsList []fieldInfo\n\n\t// InlineMap is the number of the field in the struct that\n\t// contains an ,inline map, or -1 if there's none.\n\tInlineMap int\n}\n\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\n\t// Id holds the unique field identifier, so we can cheaply\n\t// check for field duplicates without maintaining an extra map.\n\tId int\n\n\t// Inline holds the field index if the field is part of an inlined struct.\n\tInline []int\n}\n\nvar structMap = make(map[reflect.Type]*structInfo)\nvar fieldMapMutex sync.RWMutex\n\nfunc getStructInfo(st reflect.Type) (*structInfo, error) {\n\tfieldMapMutex.RLock()\n\tsinfo, found := structMap[st]\n\tfieldMapMutex.RUnlock()\n\tif found {\n\t\treturn sinfo, nil\n\t}\n\n\tn := st.NumField()\n\tfieldsMap := make(map[string]fieldInfo)\n\tfieldsList := make([]fieldInfo, 0, n)\n\tinlineMap := -1\n\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" && !field.Anonymous {\n\t\t\tcontinue // Private field\n\t\t}\n\n\t\tinfo := fieldInfo{Num: i}\n\n\t\ttag := field.Tag.Get(\"yaml\")\n\t\tif tag == \"\" && strings.Index(string(field.Tag), \":\") < 0 {\n\t\t\ttag = string(field.Tag)\n\t\t}\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tinline := false\n\t\tfields := strings.Split(tag, \",\")\n\t\tif len(fields) > 1 {\n\t\t\tfor _, flag := range fields[1:] {\n\t\t\t\tswitch flag {\n\t\t\t\tcase \"omitempty\":\n\t\t\t\t\tinfo.OmitEmpty = true\n\t\t\t\tcase \"flow\":\n\t\t\t\t\tinfo.Flow = true\n\t\t\t\tcase \"inline\":\n\t\t\t\t\tinline = true\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Unsupported flag %q in tag %q of type %s\", flag, tag, st))\n\t\t\t\t}\n\t\t\t}\n\t\t\ttag = fields[0]\n\t\t}\n\n\t\tif inline {\n\t\t\tswitch field.Type.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tif inlineMap >= 0 {\n\t\t\t\t\treturn nil, errors.New(\"Multiple ,inline maps in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tif field.Type.Key() != reflect.TypeOf(\"\") {\n\t\t\t\t\treturn nil, errors.New(\"Option ,inline needs a map with string keys in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tinlineMap = info.Num\n\t\t\tcase reflect.Struct:\n\t\t\t\tsinfo, err := getStructInfo(field.Type)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\tmsg := \"Duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t}\n\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t}\n\t\t\t\t\tfinfo.Id = len(fieldsList)\n\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t//return nil, errors.New(\"Option ,inline needs a struct value or map field\")\n\t\t\t\treturn nil, errors.New(\"Option ,inline needs a struct value field\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif tag != \"\" {\n\t\t\tinfo.Key = tag\n\t\t} else {\n\t\t\tinfo.Key = strings.ToLower(field.Name)\n\t\t}\n\n\t\tif _, found = fieldsMap[info.Key]; found {\n\t\t\tmsg := \"Duplicated key '\" + info.Key + \"' in struct \" + st.String()\n\t\t\treturn nil, errors.New(msg)\n\t\t}\n\n\t\tinfo.Id = len(fieldsList)\n\t\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{\n\t\tFieldsMap:  fieldsMap,\n\t\tFieldsList: fieldsList,\n\t\tInlineMap:  inlineMap,\n\t}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\n// IsZeroer is used to check whether an object is zero to\n// determine whether it should be omitted when marshaling\n// with the omitempty flag. One notable implementation\n// is time.Time.\ntype IsZeroer interface {\n\tIsZero() bool\n}\n\nfunc isZero(v reflect.Value) bool {\n\tkind := v.Kind()\n\tif z, ok := v.Interface().(IsZeroer); ok {\n\t\tif (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\treturn z.IsZero()\n\t}\n\tswitch kind {\n\tcase reflect.String:\n\t\treturn len(v.String()) == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\tcase reflect.Slice:\n\t\treturn v.Len() == 0\n\tcase reflect.Map:\n\t\treturn v.Len() == 0\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := v.NumField() - 1; i >= 0; i-- {\n\t\t\tif vt.Field(i).PkgPath != \"\" {\n\t\t\t\tcontinue // Private field\n\t\t\t}\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/yamlh.go",
    "content": "package yaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// The version directive data.\ntype yaml_version_directive_t struct {\n\tmajor int8 // The major version number.\n\tminor int8 // The minor version number.\n}\n\n// The tag directive data.\ntype yaml_tag_directive_t struct {\n\thandle []byte // The tag handle.\n\tprefix []byte // The tag prefix.\n}\n\ntype yaml_encoding_t int\n\n// The stream encoding.\nconst (\n\t// Let the parser choose the encoding.\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\n\tyaml_UTF8_ENCODING    // The default UTF-8 encoding.\n\tyaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.\n\tyaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.\n)\n\ntype yaml_break_t int\n\n// Line break types.\nconst (\n\t// Let the parser choose the break type.\n\tyaml_ANY_BREAK yaml_break_t = iota\n\n\tyaml_CR_BREAK   // Use CR for line breaks (Mac style).\n\tyaml_LN_BREAK   // Use LN for line breaks (Unix style).\n\tyaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).\n)\n\ntype yaml_error_type_t int\n\n// Many bad things could happen with the parser and emitter.\nconst (\n\t// No error is produced.\n\tyaml_NO_ERROR yaml_error_type_t = iota\n\n\tyaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.\n\tyaml_READER_ERROR   // Cannot read or decode the input stream.\n\tyaml_SCANNER_ERROR  // Cannot scan the input stream.\n\tyaml_PARSER_ERROR   // Cannot parse the input stream.\n\tyaml_COMPOSER_ERROR // Cannot compose a YAML document.\n\tyaml_WRITER_ERROR   // Cannot write to the output stream.\n\tyaml_EMITTER_ERROR  // Cannot emit a YAML stream.\n)\n\n// The pointer position.\ntype yaml_mark_t struct {\n\tindex  int // The position index.\n\tline   int // The position line.\n\tcolumn int // The position column.\n}\n\n// Node Styles\n\ntype yaml_style_t int8\n\ntype yaml_scalar_style_t yaml_style_t\n\n// Scalar styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota\n\n\tyaml_PLAIN_SCALAR_STYLE         // The plain scalar style.\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style.\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style.\n\tyaml_LITERAL_SCALAR_STYLE       // The literal scalar style.\n\tyaml_FOLDED_SCALAR_STYLE        // The folded scalar style.\n)\n\ntype yaml_sequence_style_t yaml_style_t\n\n// Sequence styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\tyaml_BLOCK_SEQUENCE_STYLE // The block sequence style.\n\tyaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.\n)\n\ntype yaml_mapping_style_t yaml_style_t\n\n// Mapping styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\tyaml_BLOCK_MAPPING_STYLE // The block mapping style.\n\tyaml_FLOW_MAPPING_STYLE  // The flow mapping style.\n)\n\n// Tokens\n\ntype yaml_token_type_t int\n\n// Token types.\nconst (\n\t// An empty token.\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\tyaml_STREAM_START_TOKEN // A STREAM-START token.\n\tyaml_STREAM_END_TOKEN   // A STREAM-END token.\n\n\tyaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.\n\tyaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.\n\tyaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.\n\tyaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.\n\n\tyaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.\n\tyaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.\n\tyaml_BLOCK_END_TOKEN            // A BLOCK-END token.\n\n\tyaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.\n\tyaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.\n\tyaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.\n\tyaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.\n\n\tyaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.\n\tyaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.\n\tyaml_KEY_TOKEN         // A KEY token.\n\tyaml_VALUE_TOKEN       // A VALUE token.\n\n\tyaml_ALIAS_TOKEN  // An ALIAS token.\n\tyaml_ANCHOR_TOKEN // An ANCHOR token.\n\tyaml_TAG_TOKEN    // A TAG token.\n\tyaml_SCALAR_TOKEN // A SCALAR token.\n)\n\nfunc (tt yaml_token_type_t) String() string {\n\tswitch tt {\n\tcase yaml_NO_TOKEN:\n\t\treturn \"yaml_NO_TOKEN\"\n\tcase yaml_STREAM_START_TOKEN:\n\t\treturn \"yaml_STREAM_START_TOKEN\"\n\tcase yaml_STREAM_END_TOKEN:\n\t\treturn \"yaml_STREAM_END_TOKEN\"\n\tcase yaml_VERSION_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_VERSION_DIRECTIVE_TOKEN\"\n\tcase yaml_TAG_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_TAG_DIRECTIVE_TOKEN\"\n\tcase yaml_DOCUMENT_START_TOKEN:\n\t\treturn \"yaml_DOCUMENT_START_TOKEN\"\n\tcase yaml_DOCUMENT_END_TOKEN:\n\t\treturn \"yaml_DOCUMENT_END_TOKEN\"\n\tcase yaml_BLOCK_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_BLOCK_SEQUENCE_START_TOKEN\"\n\tcase yaml_BLOCK_MAPPING_START_TOKEN:\n\t\treturn \"yaml_BLOCK_MAPPING_START_TOKEN\"\n\tcase yaml_BLOCK_END_TOKEN:\n\t\treturn \"yaml_BLOCK_END_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_START_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_END_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_END_TOKEN\"\n\tcase yaml_FLOW_MAPPING_START_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_START_TOKEN\"\n\tcase yaml_FLOW_MAPPING_END_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_END_TOKEN\"\n\tcase yaml_BLOCK_ENTRY_TOKEN:\n\t\treturn \"yaml_BLOCK_ENTRY_TOKEN\"\n\tcase yaml_FLOW_ENTRY_TOKEN:\n\t\treturn \"yaml_FLOW_ENTRY_TOKEN\"\n\tcase yaml_KEY_TOKEN:\n\t\treturn \"yaml_KEY_TOKEN\"\n\tcase yaml_VALUE_TOKEN:\n\t\treturn \"yaml_VALUE_TOKEN\"\n\tcase yaml_ALIAS_TOKEN:\n\t\treturn \"yaml_ALIAS_TOKEN\"\n\tcase yaml_ANCHOR_TOKEN:\n\t\treturn \"yaml_ANCHOR_TOKEN\"\n\tcase yaml_TAG_TOKEN:\n\t\treturn \"yaml_TAG_TOKEN\"\n\tcase yaml_SCALAR_TOKEN:\n\t\treturn \"yaml_SCALAR_TOKEN\"\n\t}\n\treturn \"<unknown token>\"\n}\n\n// The token structure.\ntype yaml_token_t struct {\n\t// The token type.\n\ttyp yaml_token_type_t\n\n\t// The start/end of the token.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The stream encoding (for yaml_STREAM_START_TOKEN).\n\tencoding yaml_encoding_t\n\n\t// The alias/anchor/scalar value or tag/tag directive handle\n\t// (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).\n\tvalue []byte\n\n\t// The tag suffix (for yaml_TAG_TOKEN).\n\tsuffix []byte\n\n\t// The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).\n\tprefix []byte\n\n\t// The scalar style (for yaml_SCALAR_TOKEN).\n\tstyle yaml_scalar_style_t\n\n\t// The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).\n\tmajor, minor int8\n}\n\n// Events\n\ntype yaml_event_type_t int8\n\n// Event types.\nconst (\n\t// An empty event.\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\tyaml_STREAM_START_EVENT   // A STREAM-START event.\n\tyaml_STREAM_END_EVENT     // A STREAM-END event.\n\tyaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.\n\tyaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.\n\tyaml_ALIAS_EVENT          // An ALIAS event.\n\tyaml_SCALAR_EVENT         // A SCALAR event.\n\tyaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.\n\tyaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.\n\tyaml_MAPPING_START_EVENT  // A MAPPING-START event.\n\tyaml_MAPPING_END_EVENT    // A MAPPING-END event.\n)\n\nvar eventStrings = []string{\n\tyaml_NO_EVENT:             \"none\",\n\tyaml_STREAM_START_EVENT:   \"stream start\",\n\tyaml_STREAM_END_EVENT:     \"stream end\",\n\tyaml_DOCUMENT_START_EVENT: \"document start\",\n\tyaml_DOCUMENT_END_EVENT:   \"document end\",\n\tyaml_ALIAS_EVENT:          \"alias\",\n\tyaml_SCALAR_EVENT:         \"scalar\",\n\tyaml_SEQUENCE_START_EVENT: \"sequence start\",\n\tyaml_SEQUENCE_END_EVENT:   \"sequence end\",\n\tyaml_MAPPING_START_EVENT:  \"mapping start\",\n\tyaml_MAPPING_END_EVENT:    \"mapping end\",\n}\n\nfunc (e yaml_event_type_t) String() string {\n\tif e < 0 || int(e) >= len(eventStrings) {\n\t\treturn fmt.Sprintf(\"unknown event %d\", e)\n\t}\n\treturn eventStrings[e]\n}\n\n// The event structure.\ntype yaml_event_t struct {\n\n\t// The event type.\n\ttyp yaml_event_type_t\n\n\t// The start and end of the event.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The document encoding (for yaml_STREAM_START_EVENT).\n\tencoding yaml_encoding_t\n\n\t// The version directive (for yaml_DOCUMENT_START_EVENT).\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives (for yaml_DOCUMENT_START_EVENT).\n\ttag_directives []yaml_tag_directive_t\n\n\t// The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).\n\tanchor []byte\n\n\t// The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\ttag []byte\n\n\t// The scalar value (for yaml_SCALAR_EVENT).\n\tvalue []byte\n\n\t// Is the document start/end indicator implicit, or the tag optional?\n\t// (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).\n\timplicit bool\n\n\t// Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).\n\tquoted_implicit bool\n\n\t// The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\tstyle yaml_style_t\n}\n\nfunc (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }\nfunc (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }\nfunc (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }\n\n// Nodes\n\nconst (\n\tyaml_NULL_TAG      = \"tag:yaml.org,2002:null\"      // The tag !!null with the only possible value: null.\n\tyaml_BOOL_TAG      = \"tag:yaml.org,2002:bool\"      // The tag !!bool with the values: true and false.\n\tyaml_STR_TAG       = \"tag:yaml.org,2002:str\"       // The tag !!str for string values.\n\tyaml_INT_TAG       = \"tag:yaml.org,2002:int\"       // The tag !!int for integer values.\n\tyaml_FLOAT_TAG     = \"tag:yaml.org,2002:float\"     // The tag !!float for float values.\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\" // The tag !!timestamp for date and time values.\n\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\" // The tag !!seq is used to denote sequences.\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\" // The tag !!map is used to denote mapping.\n\n\t// Not in original libyaml.\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n\tyaml_MERGE_TAG  = \"tag:yaml.org,2002:merge\"\n\n\tyaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.\n\tyaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.\n)\n\ntype yaml_node_type_t int\n\n// Node types.\nconst (\n\t// An empty node.\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\tyaml_SCALAR_NODE   // A scalar node.\n\tyaml_SEQUENCE_NODE // A sequence node.\n\tyaml_MAPPING_NODE  // A mapping node.\n)\n\n// An element of a sequence node.\ntype yaml_node_item_t int\n\n// An element of a mapping node.\ntype yaml_node_pair_t struct {\n\tkey   int // The key of the element.\n\tvalue int // The value of the element.\n}\n\n// The node structure.\ntype yaml_node_t struct {\n\ttyp yaml_node_type_t // The node type.\n\ttag []byte           // The node tag.\n\n\t// The node data.\n\n\t// The scalar parameters (for yaml_SCALAR_NODE).\n\tscalar struct {\n\t\tvalue  []byte              // The scalar value.\n\t\tlength int                 // The length of the scalar value.\n\t\tstyle  yaml_scalar_style_t // The scalar style.\n\t}\n\n\t// The sequence parameters (for YAML_SEQUENCE_NODE).\n\tsequence struct {\n\t\titems_data []yaml_node_item_t    // The stack of sequence items.\n\t\tstyle      yaml_sequence_style_t // The sequence style.\n\t}\n\n\t// The mapping parameters (for yaml_MAPPING_NODE).\n\tmapping struct {\n\t\tpairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).\n\t\tpairs_start *yaml_node_pair_t    // The beginning of the stack.\n\t\tpairs_end   *yaml_node_pair_t    // The end of the stack.\n\t\tpairs_top   *yaml_node_pair_t    // The top of the stack.\n\t\tstyle       yaml_mapping_style_t // The mapping style.\n\t}\n\n\tstart_mark yaml_mark_t // The beginning of the node.\n\tend_mark   yaml_mark_t // The end of the node.\n\n}\n\n// The document structure.\ntype yaml_document_t struct {\n\n\t// The document nodes.\n\tnodes []yaml_node_t\n\n\t// The version directive.\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives.\n\ttag_directives_data  []yaml_tag_directive_t\n\ttag_directives_start int // The beginning of the tag directives list.\n\ttag_directives_end   int // The end of the tag directives list.\n\n\tstart_implicit int // Is the document start indicator implicit?\n\tend_implicit   int // Is the document end indicator implicit?\n\n\t// The start/end of the document.\n\tstart_mark, end_mark yaml_mark_t\n}\n\n// The prototype of a read handler.\n//\n// The read handler is called when the parser needs to read more bytes from the\n// source. The handler should write not more than size bytes to the buffer.\n// The number of written bytes should be set to the size_read variable.\n//\n// [in,out]   data        A pointer to an application data specified by\n//                        yaml_parser_set_input().\n// [out]      buffer      The buffer to write the data from the source.\n// [in]       size        The size of the buffer.\n// [out]      size_read   The actual number of bytes read from the source.\n//\n// On success, the handler should return 1.  If the handler failed,\n// the returned value should be 0. On EOF, the handler should set the\n// size_read to 0 and return 1.\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n// This structure holds information about a potential simple key.\ntype yaml_simple_key_t struct {\n\tpossible     bool        // Is a simple key possible?\n\trequired     bool        // Is a simple key required?\n\ttoken_number int         // The number of the token.\n\tmark         yaml_mark_t // The position mark.\n}\n\n// The states of the parser.\ntype yaml_parser_state_t int\n\nconst (\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.\n\tyaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.\n\tyaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.\n\tyaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.\n\tyaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.\n\tyaml_PARSE_END_STATE                               // Expect nothing.\n)\n\nfunc (ps yaml_parser_state_t) String() string {\n\tswitch ps {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn \"yaml_PARSE_STREAM_START_STATE\"\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_CONTENT_STATE\"\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_END_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\"\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\"\n\tcase yaml_PARSE_END_STATE:\n\t\treturn \"yaml_PARSE_END_STATE\"\n\t}\n\treturn \"<unknown parser state>\"\n}\n\n// This structure holds aliases data.\ntype yaml_alias_data_t struct {\n\tanchor []byte      // The anchor.\n\tindex  int         // The node id.\n\tmark   yaml_mark_t // The anchor mark.\n}\n\n// The parser structure.\n//\n// All members are internal. Manage the structure using the\n// yaml_parser_ family of functions.\ntype yaml_parser_t struct {\n\n\t// Error handling\n\n\terror yaml_error_type_t // Error type.\n\n\tproblem string // Error description.\n\n\t// The byte about which the problem occurred.\n\tproblem_offset int\n\tproblem_value  int\n\tproblem_mark   yaml_mark_t\n\n\t// The error context.\n\tcontext      string\n\tcontext_mark yaml_mark_t\n\n\t// Reader stuff\n\n\tread_handler yaml_read_handler_t // Read handler.\n\n\tinput_reader io.Reader // File input data.\n\tinput        []byte    // String input data.\n\tinput_pos    int\n\n\teof bool // EOF flag\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\tunread int // The number of unread characters in the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The input encoding.\n\n\toffset int         // The offset of the current position (in bytes).\n\tmark   yaml_mark_t // The mark of the current position.\n\n\t// Scanner stuff\n\n\tstream_start_produced bool // Have we started to scan the input stream?\n\tstream_end_produced   bool // Have we reached the end of the input stream?\n\n\tflow_level int // The number of unclosed '[' and '{' indicators.\n\n\ttokens          []yaml_token_t // The tokens queue.\n\ttokens_head     int            // The head of the tokens queue.\n\ttokens_parsed   int            // The number of tokens fetched from the queue.\n\ttoken_available bool           // Does the tokens queue contain a token ready for dequeueing.\n\n\tindent  int   // The current indentation level.\n\tindents []int // The indentation levels stack.\n\n\tsimple_key_allowed bool                // May a simple key occur at the current position?\n\tsimple_keys        []yaml_simple_key_t // The stack of simple keys.\n\n\t// Parser stuff\n\n\tstate          yaml_parser_state_t    // The current parser state.\n\tstates         []yaml_parser_state_t  // The parser states stack.\n\tmarks          []yaml_mark_t          // The stack of marks.\n\ttag_directives []yaml_tag_directive_t // The list of TAG directives.\n\n\t// Dumper stuff\n\n\taliases []yaml_alias_data_t // The alias data.\n\n\tdocument *yaml_document_t // The currently parsed document.\n}\n\n// Emitter Definitions\n\n// The prototype of a write handler.\n//\n// The write handler is called when the emitter needs to flush the accumulated\n// characters to the output.  The handler should write @a size bytes of the\n// @a buffer to the output.\n//\n// @param[in,out]   data        A pointer to an application data specified by\n//                              yaml_emitter_set_output().\n// @param[in]       buffer      The buffer with bytes to be written.\n// @param[in]       size        The size of the buffer.\n//\n// @returns On success, the handler should return @c 1.  If the handler failed,\n// the returned value should be @c 0.\n//\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\ntype yaml_emitter_state_t int\n\n// The emitter states.\nconst (\n\t// Expect STREAM-START.\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.\n\tyaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.\n\tyaml_EMIT_END_STATE                        // Expect nothing.\n)\n\n// The emitter structure.\n//\n// All members are internal.  Manage the structure using the @c yaml_emitter_\n// family of functions.\ntype yaml_emitter_t struct {\n\n\t// Error handling\n\n\terror   yaml_error_type_t // Error type.\n\tproblem string            // Error description.\n\n\t// Writer stuff\n\n\twrite_handler yaml_write_handler_t // Write handler.\n\n\toutput_buffer *[]byte   // String output data.\n\toutput_writer io.Writer // File output data.\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The stream encoding.\n\n\t// Emitter stuff\n\n\tcanonical   bool         // If the output is in the canonical style?\n\tbest_indent int          // The number of indentation spaces.\n\tbest_width  int          // The preferred width of the output lines.\n\tunicode     bool         // Allow unescaped non-ASCII characters?\n\tline_break  yaml_break_t // The preferred line break.\n\n\tstate  yaml_emitter_state_t   // The current emitter state.\n\tstates []yaml_emitter_state_t // The stack of states.\n\n\tevents      []yaml_event_t // The event queue.\n\tevents_head int            // The head of the event queue.\n\n\tindents []int // The stack of indentation levels.\n\n\ttag_directives []yaml_tag_directive_t // The list of tag directives.\n\n\tindent int // The current indentation level.\n\n\tflow_level int // The current flow level.\n\n\troot_context       bool // Is it the document root context?\n\tsequence_context   bool // Is it a sequence context?\n\tmapping_context    bool // Is it a mapping context?\n\tsimple_key_context bool // Is it a simple mapping key context?\n\n\tline       int  // The current line.\n\tcolumn     int  // The current column.\n\twhitespace bool // If the last character was a whitespace?\n\tindention  bool // If the last character was an indentation character (' ', '-', '?', ':')?\n\topen_ended bool // If an explicit document end is required?\n\n\t// Anchor analysis.\n\tanchor_data struct {\n\t\tanchor []byte // The anchor value.\n\t\talias  bool   // Is it an alias?\n\t}\n\n\t// Tag analysis.\n\ttag_data struct {\n\t\thandle []byte // The tag handle.\n\t\tsuffix []byte // The tag suffix.\n\t}\n\n\t// Scalar analysis.\n\tscalar_data struct {\n\t\tvalue                 []byte              // The scalar value.\n\t\tmultiline             bool                // Does the scalar contain line breaks?\n\t\tflow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?\n\t\tblock_plain_allowed   bool                // Can the scalar be expressed in the block plain style?\n\t\tsingle_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?\n\t\tblock_allowed         bool                // Can the scalar be expressed in the literal or folded styles?\n\t\tstyle                 yaml_scalar_style_t // The output style.\n\t}\n\n\t// Dumper stuff\n\n\topened bool // If the stream was already opened?\n\tclosed bool // If the stream was already closed?\n\n\t// The information associated with the document nodes.\n\tanchors *struct {\n\t\treferences int  // The number of references.\n\t\tanchor     int  // The anchor id.\n\t\tserialized bool // If the node has been emitted?\n\t}\n\n\tlast_anchor_id int // The last assigned anchor id.\n\n\tdocument *yaml_document_t // The currently emitted document.\n}\n"
  },
  {
    "path": "paas-ce/paasagent/vendor/gopkg.in/yaml.v2/yamlprivateh.go",
    "content": "package yaml\n\nconst (\n\t// The size of the input raw buffer.\n\tinput_raw_buffer_size = 512\n\n\t// The size of the input buffer.\n\t// It should be possible to decode the whole raw buffer.\n\tinput_buffer_size = input_raw_buffer_size * 3\n\n\t// The size of the output buffer.\n\toutput_buffer_size = 128\n\n\t// The size of the output raw buffer.\n\t// It should be possible to encode the whole output buffer.\n\toutput_raw_buffer_size = (output_buffer_size*2 + 2)\n\n\t// The size of other stacks and queues.\n\tinitial_stack_size  = 16\n\tinitial_queue_size  = 16\n\tinitial_string_size = 16\n)\n\n// Check if the character at the specified position is an alphabetical\n// character, a digit, '_', or '-'.\nfunc is_alpha(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'\n}\n\n// Check if the character at the specified position is a digit.\nfunc is_digit(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9'\n}\n\n// Get the value of a digit.\nfunc as_digit(b []byte, i int) int {\n\treturn int(b[i]) - '0'\n}\n\n// Check if the character at the specified position is a hex-digit.\nfunc is_hex(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'\n}\n\n// Get the value of a hex-digit.\nfunc as_hex(b []byte, i int) int {\n\tbi := b[i]\n\tif bi >= 'A' && bi <= 'F' {\n\t\treturn int(bi) - 'A' + 10\n\t}\n\tif bi >= 'a' && bi <= 'f' {\n\t\treturn int(bi) - 'a' + 10\n\t}\n\treturn int(bi) - '0'\n}\n\n// Check if the character is ASCII.\nfunc is_ascii(b []byte, i int) bool {\n\treturn b[i] <= 0x7F\n}\n\n// Check if the character at the start of the buffer can be printed unescaped.\nfunc is_printable(b []byte, i int) bool {\n\treturn ((b[i] == 0x0A) || // . == #x0A\n\t\t(b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E\n\t\t(b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF\n\t\t(b[i] > 0xC2 && b[i] < 0xED) ||\n\t\t(b[i] == 0xED && b[i+1] < 0xA0) ||\n\t\t(b[i] == 0xEE) ||\n\t\t(b[i] == 0xEF && // #xE000 <= . <= #xFFFD\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\n// Check if the character at the specified position is NUL.\nfunc is_z(b []byte, i int) bool {\n\treturn b[i] == 0x00\n}\n\n// Check if the beginning of the buffer is a BOM.\nfunc is_bom(b []byte, i int) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\n// Check if the character at the specified position is space.\nfunc is_space(b []byte, i int) bool {\n\treturn b[i] == ' '\n}\n\n// Check if the character at the specified position is tab.\nfunc is_tab(b []byte, i int) bool {\n\treturn b[i] == '\\t'\n}\n\n// Check if the character at the specified position is blank (space or tab).\nfunc is_blank(b []byte, i int) bool {\n\t//return is_space(b, i) || is_tab(b, i)\n\treturn b[i] == ' ' || b[i] == '\\t'\n}\n\n// Check if the character at the specified position is a line break.\nfunc is_break(b []byte, i int) bool {\n\treturn (b[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)\n}\n\nfunc is_crlf(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// Check if the character is a line break or NUL.\nfunc is_breakz(b []byte, i int) bool {\n\t//return is_break(b, i) || is_z(b, i)\n\treturn (        // is_break:\n\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\t// is_z:\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, or NUL.\nfunc is_spacez(b []byte, i int) bool {\n\t//return is_space(b, i) || is_breakz(b, i)\n\treturn ( // is_space:\n\tb[i] == ' ' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, tab, or NUL.\nfunc is_blankz(b []byte, i int) bool {\n\t//return is_blank(b, i) || is_breakz(b, i)\n\treturn ( // is_blank:\n\tb[i] == ' ' || b[i] == '\\t' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Determine the width of the character.\nfunc width(b byte) int {\n\t// Don't replace these by a switch without first\n\t// confirming that it is being inlined.\n\tif b&0x80 == 0x00 {\n\t\treturn 1\n\t}\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\treturn 0\n\n}\n"
  },
  {
    "path": "paas-ce/saas/.gitkeep",
    "content": ""
  },
  {
    "path": "saas/.gitkeep",
    "content": ""
  },
  {
    "path": "saas/README.md",
    "content": "# OpsAny SaaS相关脚本目录\n\n该目录下的脚本用于OpsAny SaaS的注册、更新、部署、初始化相关脚本。\n"
  },
  {
    "path": "saas/add_env.py",
    "content": "\"\"\"\n    mysql-connector==2.2.9\n    SQLAlchemy==1.4.22\n\"\"\"\n\nimport os\nimport sys\nimport datetime\nimport configparser\nfrom sqlalchemy import Column, DateTime, ForeignKey, String, create_engine, Index\nfrom sqlalchemy.dialects.mysql import INTEGER, LONGTEXT, SMALLINT, TINYINT\nfrom sqlalchemy.orm import relationship, sessionmaker\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom urllib import parse\n\n# change dir to install\nos.chdir('../install')\n# testify file if exists\nif not os.path.exists('install.config'):\n    sys.exit('install config is not exists.')\n\nread_install_config = configparser.ConfigParser()\ntry:\n    read_install_config.read('install.config')\n    config_dict = dict(read_install_config)\nexcept Exception as e:\n    print(e)\n    sys.exit('file context is wrong.')\n\ndef replace_str(data):\n    if not data:\n        return None\n    return data.replace(\"\\\"\", \"\").replace(\"\\'\", \"\")\n\nMYSQL_SERVER_IP = replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\", \"127.0.0.1\"))\nMYSQL_ROOT_PASSWORD = replace_str(config_dict.get(\"mysql\").get(\"MYSQL_ROOT_PASSWORD\", \"OpsAny@2020\"))\n\ntry:\n\n    db = create_engine(\"mysql+mysqlconnector://root:{}@{}/opsany_paas\".format(parse.quote_plus(MYSQL_ROOT_PASSWORD), MYSQL_SERVER_IP))\n    Base = declarative_base(db)\n\n    def to_dict(self):\n        return {c.name: getattr(self, c.name, None)\n                for c in self.__table__.columns}\n\n    Base.to_dict = to_dict\nexcept Exception as e:\n    print(\"Script error: {}\".format(str(e)))\n    sys.exit('connect sql is failed. Please check mysql server!')\n\n\nenvs = [\n    {\n        \"app_code\": \"cmdb\",\n        \"env\": [\n            # CMDB count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_CMDB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_CMDB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"cmp\",\n        \"env\": [\n            # CMP count 7\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_CMP_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_CMP_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"job\",\n        \"env\": [\n            # JOB  count 10\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_JOB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"FILE_ROOT\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"FILE_ROOT\")), \"env_scope\": \"all\", \"intro\": \"Salt file root\"},\n            {\"key\": \"PILLAR_ROOT\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"PILLAR_ROOT\")), \"env_scope\": \"all\", \"intro\": \"Salt pillar root\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_JOB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"workbench\",\n        \"env\": [\n            # WORKBENCH  count 7\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_WORKBENCH_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_WORKBENCH_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n        ]\n    },{\n        \"app_code\": \"rbac\",\n        \"env\": [\n            # RBAC  count 4\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_RBAC_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n        ]\n    },{\n        \"app_code\": \"monitor\",\n        \"env\": [\n            # MONITOR  count 10\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_MONITOR_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_MONITOR_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"ELASTIC_SEARCH_USERNAME\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_SEARCH_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"es username\"},\n            {\"key\": \"ES_PASSWORD\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ES_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"es password\"},\n            {\"key\": \"ES_SERVER_IP\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ES_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"es host\"},\n            {\"key\": \"ELASTIC_PORT\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_PORT\")), \"env_scope\": \"all\", \"intro\": \"es port\"},\n            {\"key\": \"ELASTIC_SEARCH_INDEX\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_SEARCH_INDEX\")), \"env_scope\": \"all\", \"intro\": \"es index\"},\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n        ]\n    },{\n        \"app_code\": \"control\",\n        \"env\": [\n            # CONTROL  count 13\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_CONTROL_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_CONTROL_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n            {\"key\": \"ROSTER_FILE_URL\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"ROSTER_FILE_URL\")), \"env_scope\": \"all\", \"intro\": \"roster file path\"},\n            {\"key\": \"SALT_SSH_FILE_URL\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"SALT_SSH_FILE_URL\")), \"env_scope\": \"all\", \"intro\": \"salt ssh file path\"},\n            {\"key\": \"ANSIBLE_HOST_KEY_CHECKING\", \"value\": replace_str(config_dict.get(\"opsany_saas\").get(\"ANSIBLE_HOST_KEY_CHECKING\")), \"env_scope\": \"all\", \"intro\": \"ansible vs host checking\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"devops\",\n        \"env\": [\n            # devops  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"bastion\",\n        \"env\": [\n            # bastion  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_BASTION_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n            {\"key\": \"TERMINAL_TIMEOUT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"TERMINAL_TIMEOUT\")), \"env_scope\": \"all\", \"intro\": \"terminal timeout\"},\n        ]\n    },\n    {\n        \"app_code\": \"deploy\",\n        \"env\": [\n            # devops  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"pipeline\",\n        \"env\": [\n            # pipeline  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"repo\",\n        \"env\": [\n            # repo  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    }, {\n        \"app_code\": \"dashboard\",\n        \"env\": [\n            # dashboard count 3\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DASHBOARD_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n        ]\n    }\n]\n\n\nclass PaasApptag(Base):\n    __tablename__ = 'paas_apptags'\n\n    id = Column(INTEGER(11), primary_key=True)\n    name = Column(String(20), nullable=False, unique=True)\n    code = Column(String(30), nullable=False, unique=True)\n    index = Column(INTEGER(11), nullable=False)\n\n\nclass PaasApp(Base):\n    __tablename__ = 'paas_app'\n\n    id = Column(INTEGER(11), primary_key=True)\n    name = Column(String(20), nullable=False, unique=True)\n    code = Column(String(30), nullable=False, unique=True)\n    introduction = Column(LONGTEXT, nullable=False)\n    creater = Column(String(20), nullable=False)\n    created_date = Column(DateTime, index=True)\n    state = Column(SMALLINT(6), nullable=False)\n    is_already_test = Column(TINYINT(1), nullable=False)\n    is_already_online = Column(TINYINT(1), nullable=False)\n    first_test_time = Column(DateTime, index=True)\n    first_online_time = Column(DateTime, index=True)\n    language = Column(String(50))\n    auth_token = Column(String(36))\n    tags_id = Column(ForeignKey('paas_apptags.id'), index=True)\n    deploy_token = Column(LONGTEXT)\n    is_use_celery = Column(TINYINT(1), nullable=False)\n    is_use_celery_beat = Column(TINYINT(1), nullable=False)\n    is_saas = Column(TINYINT(1), nullable=False)\n    logo = Column(String(100))\n\n    tags = relationship('PaasApptag')\n\n\nclass EngineApp(Base):\n    __tablename__ = 'engine_apps'\n\n    id = Column(INTEGER(11), primary_key=True)\n    name = Column(String(20), nullable=False)\n    logo = Column(String(100), nullable=False)\n    app_code = Column(String(100), nullable=False, unique=True)\n    app_lang = Column(String(100), nullable=False)\n    app_type = Column(String(100), nullable=False)\n    is_active = Column(TINYINT(1), nullable=False)\n    created_at = Column(DateTime, nullable=False)\n    updated_at = Column(DateTime, nullable=False)\n\n\nclass EngineAppEnv(Base):\n    __tablename__ = 'engine_app_envs'\n\n    id = Column(INTEGER(11), primary_key=True)\n    mode = Column(String(200), nullable=False)\n    key = Column(String(200), nullable=False)\n    value = Column(String(200), nullable=False)\n    created_at = Column(DateTime, nullable=False)\n    updated_at = Column(DateTime, nullable=False)\n    bk_app_id = Column(ForeignKey('engine_apps.id'), nullable=False, index=True)\n\n    bk_app = relationship('EngineApp')\n\n\nclass PaasAppEnvvar(Base):\n    __tablename__ = 'paas_app_envvars'\n    __table_args__ = (\n        Index('paas_app_envvars_app_code_36685348c7256adf_uniq', 'app_code', 'mode', 'name', unique=True),\n    )\n\n    id = Column(INTEGER(11), primary_key=True)\n    app_code = Column(String(30), nullable=False)\n    mode = Column(String(20), nullable=False)\n    name = Column(String(50), nullable=False)\n    value = Column(String(1024), nullable=False)\n    intro = Column(LONGTEXT)\n\n\nclass AddEnv:\n    def __init__(self):\n        cursor = sessionmaker(bind=db)\n        self.session = cursor()\n        self.envs = envs\n\n    def add_env(self):\n        for env in self.envs:\n            app = self.session.query(PaasApp).filter(PaasApp.code==env.get(\"app_code\")).first()\n            if app:\n                env_list = env.get(\"env\")\n                for env_dict in env_list:\n                    key = env_dict.get(\"key\")\n                    value = env_dict.get(\"value\")\n                    env_scope = \"prod\"\n                    env_query = self.session.query(EngineAppEnv).filter(\n                        EngineAppEnv.bk_app_id==app.id,\n                        EngineAppEnv.key==key\n                    ).first()\n                    if not env_query:\n                        create_query = EngineAppEnv(mode=env_scope, key=key, value=value,\n                                                    created_at=datetime.datetime.now(),\n                                                    updated_at=datetime.datetime.now(),\n                                                    bk_app_id=app.id\n                                                    )\n                        self.session.add(create_query)\n                        self.session.commit()\n                        print(\"For {} create env info: key={} value={}\".format(env.get(\"app_code\"), key, value))\n                    else:\n                        self.session.query(EngineAppEnv).filter(\n                                EngineAppEnv.id==env_query.id).update({\n                                                                          \"mode\": env_scope,\n                                                                          \"key\": key,\n                                                                          \"value\": value,\n                                                                          \"updated_at\": datetime.datetime.now(),\n                                                                          \"bk_app_id\": app.id\n                                                                      })\n                        self.session.commit()\n                        print(\"For {} update env info: key={} value={}\".format(env.get(\"app_code\"), key, value))\n\n    def add_env_v2(self):\n        for env in self.envs:\n            app_code = env.get(\"app_code\")\n            env_list = env.get(\"env\")\n            for env_dict in env_list:\n                env_query = self.session.query(PaasAppEnvvar).filter(\n                        PaasAppEnvvar.app_code==app_code,\n                        PaasAppEnvvar.name==env_dict.get(\"key\")\n                ).first()\n                if not env_query:\n                    create_query = PaasAppEnvvar(app_code=app_code,\n                                                 name=env_dict.get(\"key\", \"\"),\n                                                 value=env_dict.get(\"value\", \"\"),\n                                                 mode=env_dict.get(\"env_scope\", \"all\"),\n                                                 intro=env_dict.get(\"intro\", \"\"),\n                                                )\n                    self.session.add(create_query)\n                    self.session.commit()\n                    print(\"For {} create env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                           env_dict.get(\"value\")))\n                else:\n                    self.session.query(PaasAppEnvvar).filter(\n                                    PaasAppEnvvar.id==env_query.id).update({\n                                                                              \"mode\": env_dict.get(\"env_scope\", \"all\"),\n                                                                              \"name\": env_dict.get(\"key\", \"\"),\n                                                                              \"value\": env_dict.get(\"value\", \"\"),\n                                                                              \"intro\": env_dict.get(\"intro\", \"\"),\n                                                                              \"app_code\": app_code,\n                                                                          })\n                    self.session.commit()\n                    print(\"For {} update env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                           env_dict.get(\"value\")))\n\n\nif __name__ == '__main__':\n    AddEnv().add_env_v2()\n    print(\"ENV INPUT IS DONE, SUCCESS.\")\n\n"
  },
  {
    "path": "saas/archive/add_ee_env.py",
    "content": "# coding=utf-8\n\"\"\"\n    mysql-connector==2.2.9\n    SQLAlchemy==1.4.22\n\"\"\"\nimport argparse\nimport os\nimport sys\nimport configparser\nfrom sqlalchemy import Column, String, create_engine, Index\nfrom sqlalchemy.dialects.mysql import INTEGER, LONGTEXT\nfrom sqlalchemy.orm import sessionmaker\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom urllib import parse\n\n# change dir to install\nos.chdir('../install')\n# testify file if exists\nif not os.path.exists('install.config'):\n    sys.exit('install config is not exists.')\n\nread_install_config = configparser.ConfigParser()\ntry:\n    read_install_config.read('install.config')\n    config_dict = dict(read_install_config)\nexcept Exception as e:\n    print(e)\n    sys.exit('file context is wrong.')\n\n\ndef replace_str(data):\n    if not data:\n        return None\n    return data.replace(\"\\\"\", \"\").replace(\"\\'\", \"\")\n\n\nMYSQL_SERVER_IP = replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\", \"10.0.0.80\"))\nMYSQL_ROOT_PASSWORD = replace_str(config_dict.get(\"mysql\").get(\"MYSQL_ROOT_PASSWORD\", \"OpsAny@2020\"))\n\ntry:\n    db = create_engine(\n        \"mysql+mysqlconnector://root:{}@{}/opsany_paas\".format(parse.quote_plus(MYSQL_ROOT_PASSWORD), MYSQL_SERVER_IP))\n    Base = declarative_base(db)\n\n\n    def to_dict(self):\n        return {c.name: getattr(self, c.name, None)\n                for c in self.__table__.columns}\n\n\n    Base.to_dict = to_dict\nexcept Exception as e:\n    print(\"Script error: {}\".format(str(e)))\n    sys.exit('connect sql is failed. Please check mysql server!')\n\nenvs = [\n    {\n        \"app_code\": \"event\",\n        \"env\": [\n            # EVENT  共计7个\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MYSQL_OPSANY_EVENT_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MONGO_EVENT_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": os.environ.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"auto\",\n        \"env\": [\n            # AUTO  共计7个\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MYSQL_OPSANY_AUTO_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MONGO_AUTO_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": os.environ.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"prom\",\n        \"env\": [\n            # PROM  共计12个\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MYSQL_OPSANY_PROM_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MONGO_PROM_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"ELASTIC_SEARCH_USERNAME\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_SEARCH_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"es username\"},\n            {\"key\": \"ES_PASSWORD\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ES_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"es password\"},\n            {\"key\": \"ES_SERVER_IP\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ES_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"es host\"},\n            {\"key\": \"ELASTIC_PORT\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_PORT\")), \"env_scope\": \"all\", \"intro\": \"es port\"},\n            {\"key\": \"ELASTIC_SEARCH_INDEX\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_SEARCH_INDEX\")), \"env_scope\": \"all\", \"intro\": \"es index\"},\n        ]\n    },\n    {\n        \"app_code\": \"k8s\",\n        \"env\": [\n            # K8S  共计4个\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MYSQL_OPSANY_K8S_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n        ]\n    },\n    {\n        \"app_code\": \"kbase\",\n        \"env\": [\n            # KABASE  共计7个\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MYSQL_OPSANY_KBASE_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MONGO_KBASE_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": os.environ.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"log\",\n        \"env\": [\n            # LOG  共计4个\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('enterprise').get(\"MYSQL_OPSANY_LOG_PASSWORD\")), \"env_scope\": \"all\",\"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n        ]\n    },\n]\n\n\nclass PaasAppEnvvar(Base):\n    __tablename__ = 'paas_app_envvars'\n    __table_args__ = (\n        Index('paas_app_envvars_app_code_36685348c7256adf_uniq', 'app_code', 'mode', 'name', unique=True),\n    )\n\n    id = Column(INTEGER(11), primary_key=True)\n    app_code = Column(String(30), nullable=False)\n    mode = Column(String(20), nullable=False)\n    name = Column(String(50), nullable=False)\n    value = Column(String(1024), nullable=False)\n    intro = Column(LONGTEXT)\n\n\nclass AddEEEnv:\n    def __init__(self):\n        cursor = sessionmaker(bind=db)\n        self.session = cursor()\n        self.envs = envs\n\n    def add_ee_env(self, cover=False):\n        for env in self.envs:\n            app_code = env.get(\"app_code\")\n            env_list = env.get(\"env\")\n            for env_dict in env_list:\n                key = env_dict.get(\"key\")\n                value = env_dict.get(\"value\", \"\")\n                try:\n                    env_query = self.session.query(PaasAppEnvvar).filter(\n                        PaasAppEnvvar.app_code == app_code,\n                        PaasAppEnvvar.name == env_dict.get(\"key\")\n                    ).first()\n                    if not env_query:\n                        create_query = PaasAppEnvvar(app_code=app_code,\n                                                     name=env_dict.get(\"key\", \"\"),\n                                                     value=env_dict.get(\"value\", \"\"),\n                                                     mode=env_dict.get(\"env_scope\", \"all\"),\n                                                     intro=env_dict.get(\"intro\", \"\"),\n                                                     )\n                        self.session.add(create_query)\n                        self.session.commit()\n                        print(\"For {} create env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                               env_dict.get(\"value\")))\n                    else:\n                        if cover:\n                            self.session.query(PaasAppEnvvar).filter(\n                                PaasAppEnvvar.id == env_query.id).update({\n                                \"mode\": env_dict.get(\"env_scope\", \"all\"),\n                                \"name\": env_dict.get(\"key\", \"\"),\n                                \"value\": env_dict.get(\"value\", \"\"),\n                                \"intro\": env_dict.get(\"intro\", \"\"),\n                                \"app_code\": app_code,\n                            })\n                            self.session.commit()\n                            print(\"For {} update env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                                   env_dict.get(\"value\")))\n                except Exception as e:\n                    print(\"Error {} create env error: key={} value={}, {}\".format(env.get(\"app_code\"), key, value, str(e)))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--cover\", help=\"1: 强制覆(当有该变量时，强制覆盖为新数据，适用于批量修改密码) 2: 不覆盖(当有数据时不做操作，只新建不存在数据，适用于增加新变量)\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    # cover 是否覆盖\n    # True 强制覆(当有该变量时，强制覆盖为新数据，适用于批量修改密码)\n    # False 不覆盖(当有数据时不做操作，只新建不存在数据，适用于增加新变量)\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    cover = options.cover\n    if not cover:\n        cover = False\n    elif cover == \"1\":\n        cover = True\n    else:\n        cover = False\n    AddEEEnv().add_ee_env(cover)\n    print(\"EE ENV INPUT IS DONE, SUCCESS.\")\n    \n    \"\"\"\n    # 强制覆盖环境变量(当有该变量时，强制覆盖为新数据，适用于批量修改)\n    python3 add_ee_env.py --cover 1\n    # 只新增环境变量(当有变量存在时不做操作，只新建不存在数据，适用于增加新变量)\n    python3 add_ee_env.py --cover 2\n    \"\"\"\n"
  },
  {
    "path": "saas/archive/add_env.py",
    "content": "\"\"\"\n    mysql-connector==2.2.9\n    SQLAlchemy==1.4.22\n\"\"\"\n\nimport os\nimport sys\nimport datetime\nimport configparser\nfrom sqlalchemy import Column, DateTime, ForeignKey, String, create_engine, Index\nfrom sqlalchemy.dialects.mysql import INTEGER, LONGTEXT, SMALLINT, TINYINT\nfrom sqlalchemy.orm import relationship, sessionmaker\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom urllib import parse\n\n# change dir to install\nos.chdir('../install')\n# testify file if exists\nif not os.path.exists('install.config'):\n    sys.exit('install config is not exists.')\n\nread_install_config = configparser.ConfigParser()\ntry:\n    read_install_config.read('install.config')\n    config_dict = dict(read_install_config)\nexcept Exception as e:\n    print(e)\n    sys.exit('file context is wrong.')\n\ndef replace_str(data):\n    if not data:\n        return None\n    return data.replace(\"\\\"\", \"\").replace(\"\\'\", \"\")\n\nMYSQL_SERVER_IP = replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\", \"127.0.0.1\"))\nMYSQL_ROOT_PASSWORD = replace_str(config_dict.get(\"mysql\").get(\"MYSQL_ROOT_PASSWORD\", \"OpsAny@2020\"))\n\ntry:\n\n    db = create_engine(\"mysql+mysqlconnector://root:{}@{}/opsany_paas\".format(parse.quote_plus(MYSQL_ROOT_PASSWORD), MYSQL_SERVER_IP))\n    Base = declarative_base(db)\n\n    def to_dict(self):\n        return {c.name: getattr(self, c.name, None)\n                for c in self.__table__.columns}\n\n    Base.to_dict = to_dict\nexcept Exception as e:\n    print(\"Script error: {}\".format(str(e)))\n    sys.exit('connect sql is failed. Please check mysql server!')\n\n\nenvs = [\n    {\n        \"app_code\": \"cmdb\",\n        \"env\": [\n            # CMDB count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_CMDB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_CMDB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"cmp\",\n        \"env\": [\n            # CMP count 7\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_CMP_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_CMP_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_USERNAME\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"redis username\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n    \n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"job\",\n        \"env\": [\n            # JOB  count 10\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_JOB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"FILE_ROOT\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"FILE_ROOT\")), \"env_scope\": \"all\", \"intro\": \"Salt file root\"},\n            {\"key\": \"PILLAR_ROOT\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"PILLAR_ROOT\")), \"env_scope\": \"all\", \"intro\": \"Salt pillar root\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_JOB_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_USERNAME\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"redis username\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"workbench\",\n        \"env\": [\n            # WORKBENCH  count 7\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_WORKBENCH_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_WORKBENCH_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n        ]\n    },{\n        \"app_code\": \"rbac\",\n        \"env\": [\n            # RBAC  count 4\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_RBAC_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_USERNAME\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"redis username\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n        ]\n    },{\n        \"app_code\": \"monitor\",\n        \"env\": [\n            # MONITOR  count 10\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_MONITOR_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_MONITOR_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"ELASTIC_SEARCH_USERNAME\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_SEARCH_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"es username\"},\n            {\"key\": \"ES_PASSWORD\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ES_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"es password\"},\n            {\"key\": \"ES_SERVER_IP\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ES_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"es host\"},\n            {\"key\": \"ELASTIC_PORT\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_PORT\")), \"env_scope\": \"all\", \"intro\": \"es port\"},\n            {\"key\": \"ELASTIC_SEARCH_INDEX\", \"value\": replace_str(config_dict.get('elasticsearch').get(\"ELASTIC_SEARCH_INDEX\")), \"env_scope\": \"all\", \"intro\": \"es index\"},\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n        ]\n    },{\n        \"app_code\": \"control\",\n        \"env\": [\n            # CONTROL  count 13\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_CONTROL_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_CONTROL_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_USERNAME\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"redis username\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n            {\"key\": \"ROSTER_FILE_URL\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"ROSTER_FILE_URL\")), \"env_scope\": \"all\", \"intro\": \"roster file path\"},\n            {\"key\": \"SALT_SSH_FILE_URL\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"SALT_SSH_FILE_URL\")), \"env_scope\": \"all\", \"intro\": \"salt ssh file path\"},\n            {\"key\": \"ANSIBLE_HOST_KEY_CHECKING\", \"value\": replace_str(config_dict.get(\"opsany_saas\").get(\"ANSIBLE_HOST_KEY_CHECKING\")), \"env_scope\": \"all\", \"intro\": \"ansible vs host checking\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"devops\",\n        \"env\": [\n            # devops  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },{\n        \"app_code\": \"bastion\",\n        \"env\": [\n            # bastion  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_BASTION_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"REDIS_HOST\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"redis host\"},\n            {\"key\": \"REDIS_PORT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_PORT\")), \"env_scope\": \"all\", \"intro\": \"redis port\"},\n            {\"key\": \"REDIS_USERNAME\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_USERNAME\")), \"env_scope\": \"all\", \"intro\": \"redis username\"},\n            {\"key\": \"REDIS_PASSWORD\", \"value\": replace_str(config_dict.get(\"redis\").get(\"REDIS_SERVER_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"redis password\"},\n            {\"key\": \"TERMINAL_TIMEOUT\", \"value\": replace_str(config_dict.get(\"redis\").get(\"TERMINAL_TIMEOUT\")), \"env_scope\": \"all\", \"intro\": \"terminal timeout\"},\n        ]\n    },\n    {\n        \"app_code\": \"deploy\",\n        \"env\": [\n            # devops  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"pipeline\",\n        \"env\": [\n            # pipeline  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    },\n    {\n        \"app_code\": \"repo\",\n        \"env\": [\n            # repo  count 8\n            {\"key\": \"UPLOAD_PATH\", \"value\": replace_str(config_dict.get('opsany_saas').get(\"UPLOAD_PATH\")), \"env_scope\": \"all\", \"intro\": \"uploads path\"},\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n            {\"key\": \"MONGO_HOST\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mongo host\"},\n            {\"key\": \"MONGO_PORT\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_PORT\")), \"env_scope\": \"all\", \"intro\": \"mongo port\"},\n            {\"key\": \"MONGO_PASSWORD\", \"value\": replace_str(config_dict.get('mongodb').get(\"MONGO_DEVOPS_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mongo password\"},\n            # {\"key\": \"DEFAULT_USER_ICON\", \"value\": read_install_config.get(\"DEFAULT_USER_ICON\"), \"env_scope\": \"all\", \"intro\": \"user default icon\"},\n        ]\n    }, {\n        \"app_code\": \"dashboard\",\n        \"env\": [\n            # dashboard count 3\n            {\"key\": \"MYSQL_PASSWORD\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_OPSANY_DASHBOARD_PASSWORD\")), \"env_scope\": \"all\", \"intro\": \"mysql password\"},\n            {\"key\": \"MYSQL_HOST\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_SERVER_IP\")), \"env_scope\": \"all\", \"intro\": \"mysql host\"},\n            {\"key\": \"MYSQL_PORT\", \"value\": replace_str(config_dict.get('mysql').get(\"MYSQL_PORT\")), \"env_scope\": \"all\", \"intro\": \"mysql port\"},\n        ]\n    }\n]\n\n\nclass PaasApptag(Base):\n    __tablename__ = 'paas_apptags'\n\n    id = Column(INTEGER(11), primary_key=True)\n    name = Column(String(20), nullable=False, unique=True)\n    code = Column(String(30), nullable=False, unique=True)\n    index = Column(INTEGER(11), nullable=False)\n\n\nclass PaasApp(Base):\n    __tablename__ = 'paas_app'\n\n    id = Column(INTEGER(11), primary_key=True)\n    name = Column(String(20), nullable=False, unique=True)\n    code = Column(String(30), nullable=False, unique=True)\n    introduction = Column(LONGTEXT, nullable=False)\n    creater = Column(String(20), nullable=False)\n    created_date = Column(DateTime, index=True)\n    state = Column(SMALLINT(6), nullable=False)\n    is_already_test = Column(TINYINT(1), nullable=False)\n    is_already_online = Column(TINYINT(1), nullable=False)\n    first_test_time = Column(DateTime, index=True)\n    first_online_time = Column(DateTime, index=True)\n    language = Column(String(50))\n    auth_token = Column(String(36))\n    tags_id = Column(ForeignKey('paas_apptags.id'), index=True)\n    deploy_token = Column(LONGTEXT)\n    is_use_celery = Column(TINYINT(1), nullable=False)\n    is_use_celery_beat = Column(TINYINT(1), nullable=False)\n    is_saas = Column(TINYINT(1), nullable=False)\n    logo = Column(String(100))\n\n    tags = relationship('PaasApptag')\n\n\nclass EngineApp(Base):\n    __tablename__ = 'engine_apps'\n\n    id = Column(INTEGER(11), primary_key=True)\n    name = Column(String(20), nullable=False)\n    logo = Column(String(100), nullable=False)\n    app_code = Column(String(100), nullable=False, unique=True)\n    app_lang = Column(String(100), nullable=False)\n    app_type = Column(String(100), nullable=False)\n    is_active = Column(TINYINT(1), nullable=False)\n    created_at = Column(DateTime, nullable=False)\n    updated_at = Column(DateTime, nullable=False)\n\n\nclass EngineAppEnv(Base):\n    __tablename__ = 'engine_app_envs'\n\n    id = Column(INTEGER(11), primary_key=True)\n    mode = Column(String(200), nullable=False)\n    key = Column(String(200), nullable=False)\n    value = Column(String(200), nullable=False)\n    created_at = Column(DateTime, nullable=False)\n    updated_at = Column(DateTime, nullable=False)\n    bk_app_id = Column(ForeignKey('engine_apps.id'), nullable=False, index=True)\n\n    bk_app = relationship('EngineApp')\n\n\nclass PaasAppEnvvar(Base):\n    __tablename__ = 'paas_app_envvars'\n    __table_args__ = (\n        Index('paas_app_envvars_app_code_36685348c7256adf_uniq', 'app_code', 'mode', 'name', unique=True),\n    )\n\n    id = Column(INTEGER(11), primary_key=True)\n    app_code = Column(String(30), nullable=False)\n    mode = Column(String(20), nullable=False)\n    name = Column(String(50), nullable=False)\n    value = Column(String(1024), nullable=False)\n    intro = Column(LONGTEXT)\n\n\nclass AddEnv:\n    def __init__(self):\n        cursor = sessionmaker(bind=db)\n        self.session = cursor()\n        self.envs = envs\n\n    def add_env(self):\n        for env in self.envs:\n            app = self.session.query(PaasApp).filter(PaasApp.code==env.get(\"app_code\")).first()\n            if app:\n                env_list = env.get(\"env\")\n                for env_dict in env_list:\n                    key = env_dict.get(\"key\")\n                    value = env_dict.get(\"value\")\n                    env_scope = \"prod\"\n                    env_query = self.session.query(EngineAppEnv).filter(\n                        EngineAppEnv.bk_app_id==app.id,\n                        EngineAppEnv.key==key\n                    ).first()\n                    if not env_query:\n                        create_query = EngineAppEnv(mode=env_scope, key=key, value=value,\n                                                    created_at=datetime.datetime.now(),\n                                                    updated_at=datetime.datetime.now(),\n                                                    bk_app_id=app.id\n                                                    )\n                        self.session.add(create_query)\n                        self.session.commit()\n                        print(\"For {} create env info: key={} value={}\".format(env.get(\"app_code\"), key, value))\n                    else:\n                        self.session.query(EngineAppEnv).filter(\n                                EngineAppEnv.id==env_query.id).update({\n                                                                          \"mode\": env_scope,\n                                                                          \"key\": key,\n                                                                          \"value\": value,\n                                                                          \"updated_at\": datetime.datetime.now(),\n                                                                          \"bk_app_id\": app.id\n                                                                      })\n                        self.session.commit()\n                        print(\"For {} update env info: key={} value={}\".format(env.get(\"app_code\"), key, value))\n\n    def add_env_v2(self):\n        for env in self.envs:\n            app_code = env.get(\"app_code\")\n            env_list = env.get(\"env\")\n            for env_dict in env_list:\n                key = env_dict.get(\"key\")\n                value = env_dict.get(\"value\")\n                try:\n                    env_query = self.session.query(PaasAppEnvvar).filter(\n                            PaasAppEnvvar.app_code==app_code,\n                            PaasAppEnvvar.name==env_dict.get(\"key\")\n                    ).first()\n                    if not env_query:\n                        create_query = PaasAppEnvvar(app_code=app_code,\n                                                     name=env_dict.get(\"key\", \"\"),\n                                                     value=env_dict.get(\"value\", \"\"),\n                                                     mode=env_dict.get(\"env_scope\", \"all\"),\n                                                     intro=env_dict.get(\"intro\", \"\"),\n                                                    )\n                        self.session.add(create_query)\n                        self.session.commit()\n                        print(\"For {} create env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                               env_dict.get(\"value\")))\n                    else:\n                        self.session.query(PaasAppEnvvar).filter(\n                                        PaasAppEnvvar.id==env_query.id).update({\n                                                                                  \"mode\": env_dict.get(\"env_scope\", \"all\"),\n                                                                                  \"name\": env_dict.get(\"key\", \"\"),\n                                                                                  \"value\": env_dict.get(\"value\", \"\"),\n                                                                                  \"intro\": env_dict.get(\"intro\", \"\"),\n                                                                                  \"app_code\": app_code,\n                                                                              })\n                        self.session.commit()\n                        print(\"For {} update env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                               env_dict.get(\"value\")))\n                except Exception as e:\n                    print(\"Error {} create env error: key={} value={}, {}\".format(env.get(\"app_code\"), key, value, str(e)))\n\n\nif __name__ == '__main__':\n    AddEnv().add_env_v2()\n    print(\"ENV INPUT IS DONE, SUCCESS.\")\n\n"
  },
  {
    "path": "saas/archive/dashboard/README.md",
    "content": "# OpsAny可视化平台\n\nOpsAny可视化平台为在原有的大屏展示的基础上，将Grafana的页面进行了嵌入，方便用户可以直接使用Grafana来进行自定义大屏，内置的大屏为定制开发，不能自动生成。\n\n本文档适合1.6.0之前版本的用户一键部署和添加可视化平台。\n\n1. 引用PaaS配置文件\n\n```\ncd /opt/opsany-paas/install\ngrep '^[A-Z]' install.config > install.env\nsource ./install.env && rm -f install.env\n```\n\n2. 部署Dashboard\n\n> 执行前请修改dashboard-install.sh 设置PaaS平台的Admin密码，默认从安装路径获取自动生成的密码，数据库密码根据情况修改。\n\n```\ncd /opt/opsany-paas/saas/dashboard\nsed -i \"s/MYSQL_HOST_SED/${MYSQL_SERVER_IP}/g\" dashboard.config\n./dashboard-install.sh install\n```\n\n"
  },
  {
    "path": "saas/archive/dashboard/add_env_script.py",
    "content": "\"\"\"\n脚本说明：为Saas应用添加ENV\n\n执行说明：\n    python add_env_script.py --mysql_host [mysql_host]\n                             --mysql_username [mysql_username]\n                             --mysql_password [mysql_password]\n                             --config_file_path [config_file_path]\n    例：python add_env_script.py --mysql_host 127.0.0.1\n                                --mysql_username root\n                                --mysql_password 123456\n                                --config_file_path /xx/xxx/xxx/config\n\n参数说明：\n    mysql_host          必填\n    mysql_username      必填\n    mysql_password      必填\n    config_file_path    必填\n\nMysql账号说明：\n    必须使用拥有opsany_paas数据库读写权限的账号\n\n第三方依赖：\n    mysql-connector==2.2.9\n    SQLAlchemy==1.4.22\n\"\"\"\n\nimport sys\nimport configparser\nimport argparse\nfrom sqlalchemy import Column, String, create_engine, Index\nfrom sqlalchemy.dialects.mysql import INTEGER, LONGTEXT\nfrom sqlalchemy.orm import sessionmaker\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom urllib import parse\n\n\nclass AddEnv:\n    def __init__(self, mysql_host, mysql_username, mysql_password, config_file_path):\n        self.db, self.database_orm = self.get_db(mysql_host, mysql_username, mysql_password)\n        cursor = sessionmaker(bind=self.db)\n        self.session = cursor()\n        self.envs = self.get_env(config_file_path)\n\n    def add_env(self):\n        \"\"\"\n        {\n            \"app_code\": \"\",\n            \"env\": [\n                {\"key\": \"key1\", \"value\": \"value1\"},\n                {\"key\": \"key2\", \"value\": \"value2\"}\n            ]\n        }\n        \"\"\"\n        app_code = self.envs.get(\"app_code\")\n        env_list = self.envs.get(\"env\")\n        for env_dict in env_list:\n            env_query = self.session.query(self.database_orm).filter(\n                self.database_orm.app_code == app_code,\n                self.database_orm.name == env_dict.get(\"key\")\n            ).first()\n            if not env_query:\n                create_query = self.database_orm(\n                    app_code=app_code,\n                    name=env_dict.get(\"key\", \"\"),\n                    value=env_dict.get(\"value\", \"\"),\n                    mode=\"all\",\n                    intro=self.get_intro(env_dict.get(\"key\", \"\")),\n                )\n                self.session.add(create_query)\n                self.session.commit()\n                print(\"For {} create env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                       env_dict.get(\"value\")))\n            else:\n                self.session.query(self.database_orm).filter(\n                    self.database_orm.id == env_query.id).update({\n                        \"mode\": \"all\",\n                        \"name\": env_dict.get(\"key\", \"\"),\n                        \"value\": env_dict.get(\"value\", \"\"),\n                        \"intro\": self.get_intro(env_dict.get(\"key\", \"\")),\n                        \"app_code\": app_code,\n                    })\n                self.session.commit()\n                print(\"For {} update env info: key={} value={}\".format(app_code, env_dict.get(\"key\"),\n                                                                       env_dict.get(\"value\")))\n\n    def get_intro(self, key: str):\n        \"\"\"\n        MYSQL_ROOT -> mysql root\n        \"\"\"\n        intro = \"\".join(info.lower() + \" \" for info in key.split(\"_\"))[:-1]\n        return intro\n\n    def get_env(self, config_file_path):\n        read_install_config = configparser.ConfigParser()\n        read_install_config.optionxform = lambda option: option\n        try:\n            read_install_config.read(config_file_path, encoding=\"utf-8\")\n            config_dict = dict(read_install_config)\n            app_info = config_dict.get(\"APP_INFO\")\n            app_code = \"\"\n            for key, value in app_info.items():\n                if key == \"APP_CODE\":\n                    app_code = self.handle_value(value)\n                    break\n            if not app_code:\n                raise Exception(\"Not find app_code, Please check your config file.\")\n            app_env = config_dict.get(\"APP_ENV\")\n            envs = []\n            for key, value in app_env.items():\n                envs.append({\n                    \"key\": key,\n                    \"value\": self.handle_value(value)\n                })\n            env_info = {\n                \"app_code\": app_code,\n                \"env\": envs\n            }\n            return env_info\n        except Exception as e:\n            print('Read config file error, error info: {}.'.format(str(e)))\n            sys.exit(1)\n\n    def handle_value(self, value):\n        if isinstance(value, str):\n            value = value.strip()\n            if value.startswith(\"'\") or value.startswith('\"'):\n                value = value[1:]\n            if value.endswith(\"'\") or value.endswith('\"'):\n                value = value[:-1]\n        return value\n\n    def get_db(self, mysql_host, mysql_username, mysql_password):\n        try:\n            db = create_engine(\n                \"mysql+mysqlconnector://{}:{}@{}/opsany_paas\".format(\n                    mysql_username,\n                    parse.quote_plus(mysql_password),\n                    mysql_host\n                ))\n            Base = declarative_base(db)\n\n            def to_dict(self):\n                return {c.name: getattr(self, c.name, None)\n                        for c in self.__table__.columns}\n\n            Base.to_dict = to_dict\n        except Exception as e:\n            print(\"Script error: {}\".format(str(e)))\n            print(\"Connect sql is failed. Please check mysql server!\")\n            sys.exit(1)\n\n        class PaasAppEnvvar(Base):\n            __tablename__ = 'paas_app_envvars'\n            __table_args__ = (\n                Index('paas_app_envvars_app_code_36685348c7256adf_uniq', 'app_code', 'mode', 'name', unique=True),\n            )\n\n            id = Column(INTEGER(11), primary_key=True)\n            app_code = Column(String(30), nullable=False)\n            mode = Column(String(20), nullable=False)\n            name = Column(String(50), nullable=False)\n            value = Column(String(1024), nullable=False)\n            intro = Column(LONGTEXT)\n        return db, PaasAppEnvvar\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--mysql_host\", help=\"Mysql address.\", required=True)\n    parameter.add_argument(\"--mysql_username\", help=\"Mysql username.\", required=True)\n    parameter.add_argument(\"--mysql_password\", help=\"Mysql password.\", required=True)\n    parameter.add_argument(\"--config_file_path\", help=\"Config file path.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    mysql_host = options.mysql_host\n    mysql_username = options.mysql_username\n    mysql_password = options.mysql_password\n    config_file_path = options.config_file_path\n    AddEnv(mysql_host, mysql_username, mysql_password, config_file_path).add_env()\n"
  },
  {
    "path": "saas/archive/dashboard/add_nav_script.py",
    "content": "\"\"\"\n脚本说明：为Saas应用添加Nav导航\n\n执行说明：\n    python add_nav_script.py --paas_domain [paas_domain]\n                             --paas_username [paas_username]\n                             --paas_password [paas_password]\n                             --config_file_path [config_file_path]\n                             --run_env [run_env]\n    例：python add_nav_script.py --paas_domain https://domain\n                                --paas_username admin\n                                --paas_password admin\n                                --config_file_path /xx/xxx/xxx/config\n                                --run_env dev\n\n参数说明：\n    paas_domain          必填\n    paas_username        必填\n    paas_password        必填\n    config_file_path     必填\n    run_env              非必填\n\nPaas账号说明：\n    必须要有工作台权限\n\n第三方依赖：\n    requests==2.25.0\n\"\"\"\nimport json\nimport argparse\nimport requests\nimport configparser\nimport sys\n\n# 去除本地python3 windows环境报错\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, config_file_path, run_env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.run_env = run_env\n        self.config_info = self.get_config(config_file_path)\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def get_config(self, config_file_path):\n        read_install_config = configparser.ConfigParser()\n        read_install_config.optionxform = lambda option: option\n        try:\n            read_install_config.read(config_file_path, encoding=\"utf-8\")\n            config_dict = dict(read_install_config)\n            app_info = config_dict.get(\"APP_INFO\")\n            config_info = {}\n            for key, value in app_info.items():\n                config_info[key] = self.handle_value(value)\n            return config_info\n        except Exception as e:\n            print('Read config file error, error info: {}.'.format(str(e)))\n            sys.exit(1)\n\n    def handle_value(self, value):\n        if isinstance(value, str):\n            value = value.strip()\n            if value.startswith(\"'\") or value.startswith('\"'):\n                value = value[1:]\n            if value.endswith(\"'\") or value.endswith('\"'):\n                value = value[:-1]\n        return value\n\n    def get_nav_group_id(self):\n        try:\n            API = \"/{}/workbench/api/workbench/v0_1/nav-group/\".format(\"t\" if self.run_env == \"dev\" else \"o\")\n            url = self.paas_domain + API\n            response = self.session.get(url, verify=False)\n            res = response.json().get(\"data\")\n            if res:\n                group_id = \"\"\n                for info in res:\n                    if info.get(\"group_name\") == self.config_info.get(\"APP_GROUP\"):\n                        group_id = info.get(\"id\")\n                        break\n                if group_id:\n                    return group_id\n                raise Exception(\"Not find nav group id.\")\n        except Exception as e:\n            print(\"Get nav group id error, error info: {}\".format(str(e)))\n            sys.exit(1)\n\n    def upload_nav_icon(self):\n        try:\n            API = \"/{}/workbench/api/workbench/v0_1/nav-icon/\".format(\"t\" if self.run_env == \"dev\" else \"o\")\n            url = self.paas_domain + API\n            file = {\n                \"icon\": (\n                    '{}.png'.format(self.config_info.get(\"APP_CODE\")),\n                    open('{}.png'.format(self.config_info.get(\"APP_CODE\")), 'rb'),\n                    'image/png',\n                    {}\n                )\n            }\n            response = self.session.post(url, files=file, verify=False)\n            res = response.json().get(\"data\")\n            if res:\n                return res.get(\"id\")\n            raise Exception(response.json().get(\"message\", \"\"))\n        except Exception as e:\n            print(\"Upload nav icon error, error info: {}\".format(str(e)))\n            sys.exit(1)\n\n    def add_nav_info(self):\n        try:\n            API = \"/{}/workbench/api/workbench/v0_1/nav/\".format(\"t\" if self.run_env == \"dev\" else \"o\")\n            url = self.paas_domain + API\n            data = {\n                \"group_id\": self.get_nav_group_id(),\n                \"nav_icon_id\": self.upload_nav_icon(),\n                \"nav_name\": self.config_info.get(\"APP_NAME\"),\n                \"describe\": self.config_info.get(\"APP_DESCRIBE\"),\n                \"target\": \"_self\",\n                \"nav_url\": \"/{}/{}/\".format(\"t\" if self.run_env == \"dev\" else \"o\", self.config_info.get(\"APP_CODE\"))\n            }\n            response = self.session.post(url, data=json.dumps(data), verify=False)\n            res = response.json().get(\"data\")\n            if res:\n                return \"Create app nav info success.\" if res.get(\"id\") else \"Create app nav info error.\"\n            raise Exception(response.json().get(\"message\", \"\"))\n        except Exception as e:\n            print(\"Add nav info error, error info: {}\".format(str(e)))\n            sys.exit(1)\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--paas_domain\", help=\"Paas domain.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"Paas username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"Paas password.\", required=True)\n    parameter.add_argument(\"--config_file_path\", help=\"Config file path.\", required=True)\n    parameter.add_argument(\"--run_env\", help=\"Run env.\", required=False, default=\"prod\")\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    paas_domain = options.paas_domain\n    paas_username = options.paas_username\n    paas_password = options.paas_password\n    config_file_path = options.config_file_path\n    run_env = options.run_env\n    res = OpsAnyApi(paas_domain, paas_username, paas_password, config_file_path, run_env)\n    info = res.add_nav_info()\n    print(info)\n"
  },
  {
    "path": "saas/archive/dashboard/dashboard-install.sh",
    "content": "#!/bin/bash\n#******************************************\n# Author:       Jason Zhao\n# Email:        zhaoshundong@opsany.com\n# Organization: OpsAny https://www.opsany.com/\n# Description:  OpsAny SAAS Dashboard Install Script\n#******************************************\n\n# Data/Time\nCTIME=$(date \"+%Y-%m-%d-%H-%M\")\n\n# Shell Envionment Variables\nCDIR=$(pwd)\nPAAS_DIR=\"/opt/opsany-paas/\"\nSHELL_NAME=\"dashboard-install.sh\"\nSHELL_LOG=\"${SHELL_NAME}.log\"\nADMIN_PASSWORD=\"\"\nMYSQL_OPSANY_DASHBOARD_PASSWORD=\"OpsAny@2020\"\n\n# Check SAAS Package\nif [ ! -d /opt/opsany-saas ];then\n    echo \"======Download the SAAS package first======\"\n    exit;\nfi\n\n# Install Inspection\nif [ ! -f \"$PAAS_DIR\"/install/install.config ];then\n      echo \"Please Change Directory to ${PAAS_DIR}/install\"\n      exit\nelse\n    grep '^[A-Z]' \"$PAAS_DIR\"/install/install.config > install.env\n    source ./install.env && rm -f install.env\n    if [ -z \"$ADMIN_PASSWORD\" ];then\n        source ${INSTALL_PATH}/conf/.passwd_env\n    fi\nfi\n\n# Shell Log Record\nshell_log(){\n    LOG_INFO=$1\n    echo \"----------------$CTIME ${SHELL_NAME} : ${LOG_INFO}----------------\"\n    echo \"$CTIME ${SHELL_NAME} : ${LOG_INFO}\" >> ${SHELL_LOG}\n}\n\n# SaaS DB Initialize\nmysql_init(){\n    shell_log \"======MySQL Initialize======\"\n    #dashbaord\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"create database dashboard DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on dashboard.* to dashboard@'%' identified by \"\\\"${MYSQL_OPSANY_DASHBOARD_PASSWORD}\\\"\";\"\n    mysql -h \"${MYSQL_SERVER_IP}\" -u root -p\"${MYSQL_ROOT_PASSWORD}\" -e \"grant all on dashboard.* to opsany@'%' identified by \"\\\"${MYSQL_OPSANY_PASSWORD}\\\"\";\" \n    \n}\n\n# SaaS Env\nsaas_env(){\n    shell_log \"======Add SaaS Env======\"\n    python3 add_env_script.py --mysql_host ${MYSQL_SERVER_IP} --mysql_username root --mysql_password ${MYSQL_ROOT_PASSWORD} --config_file_path ./dashboard.config\n}\n\n# SaaS Deploy\nsaas_deploy(){\n    shell_log \"======Dashboard SaaS Deploy======\"\n    cd $CDIR \n    if [ ! -f dashboard-opsany-1.6.0.tar.gz ];then\n        wget https://opsany-saas.oss-cn-beijing.aliyuncs.com/dashboard-opsany-1.6.0.tar.gz\n    fi\n    python3 saas_deploy_add.py --domain $DOMAIN_NAME --username admin --password ${ADMIN_PASSWORD} --file_name dashboard-opsany-*.tar.gz\n}\n\nsaas_init(){\n    # Add Nav\n    python3 add_nav_script.py --paas_domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD} --config_file_path ./dashboard.config\n}\n\n# Main\nmain(){\n    case \"$1\" in\n        install)\n        mysql_init\n        saas_env\n        saas_deploy\n        saas_init\n        ;;\n\thelp|*)\n            echo $\"Usage: $0 {install|help}\"\n\t    ;;\n    esac\n}\n\nmain $1\n"
  },
  {
    "path": "saas/archive/dashboard/dashboard.config",
    "content": "[APP_INFO]\nAPP_CODE=dashboard\nAPP_NAME=可视化平台\nAPP_DESCRIBE=运维数据可视化\nAPP_GROUP=平台管理\n\n[APP_ENV]\nMYSQL_HOST=MYSQL_HOST_SED\nMYSQL_PORT=3306\nMYSQL_PASSWORD=OpsAny@2020\n"
  },
  {
    "path": "saas/archive/dashboard/delete_nav_script.py",
    "content": "\"\"\"\n脚本说明：为Saas应用添加Nav导航\n\n执行说明：\n    python delete_nav_script.py --paas_domain [paas_domain]\n                                --paas_username [paas_username]\n                                --paas_password [paas_password]\n                                --run_env [run_env]\n    例：python delete_nav_script.py --paas_domain https://domain\n                                   --paas_username admin\n                                   --paas_password admin\n                                   --run_env dev\n\n参数说明：\n    paas_domain          必填\n    paas_username        必填\n    paas_password        必填\n    run_env              非必填\n\nPaas账号说明：\n    必须要有工作台权限\n\n第三方依赖：\n    requests==2.25.0\n\"\"\"\nimport json\nimport argparse\nimport requests\nimport sys\n\n# 去除本地python3 windows环境报错\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, run_env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.run_env = run_env\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def get_target_nav_id(self):\n        try:\n            API = \"/{}/workbench/api/workbench/v0_1/nav/\".format(\"t\" if self.run_env == \"dev\" else \"o\")\n            url = self.paas_domain + API\n            data = {}\n            response = self.session.get(url, data=json.dumps(data), verify=False)\n            res = response.json().get(\"data\")\n            if res:\n                for _res in res:\n                    if _res.get(\"nav_url\") == \"/{}/workbench/#/bigScreen/bigScreenList\".format(\n                            \"t\" if self.run_env == \"dev\" else \"o\"\n                    ):\n                        return _res.get(\"id\")\n                raise Exception(\"Not find target nav id.\")\n            raise Exception(response.json().get(\"message\", \"\"))\n        except Exception as e:\n            print(\"Add nav info error, error info: {}\".format(str(e)))\n            sys.exit(1)\n\n    def delete_nav_info(self):\n        try:\n            API = \"/{}/workbench/api/workbench/v0_1/nav/\".format(\"t\" if self.run_env == \"dev\" else \"o\")\n            url = self.paas_domain + API\n            data = {\n                \"id\": self.get_target_nav_id()\n            }\n            response = self.session.delete(url, data=json.dumps(data), verify=False)\n            if response.json().get(\"code\") == 200:\n                return \"Delete success.\"\n            raise Exception(response.json().get(\"message\", \"\"))\n        except Exception as e:\n            print(\"Delete nav error, error info: {}\".format(str(e)))\n            sys.exit(1)\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--paas_domain\", help=\"Paas domain.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"Paas username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"Paas password.\", required=True)\n    parameter.add_argument(\"--run_env\", help=\"Run env.\", required=False, default=\"prod\")\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    paas_domain = options.paas_domain\n    paas_username = options.paas_username\n    paas_password = options.paas_password\n    run_env = options.run_env\n    res = OpsAnyApi(paas_domain, paas_username, paas_password, run_env)\n    info = res.delete_nav_info()\n    print(info)\n"
  },
  {
    "path": "saas/archive/dashboard/saas_deploy_add.py",
    "content": "\"\"\"\r\n脚本说明：部署SaaS脚本\r\n文件命名要求：必须为 app_code + \"-\" + paas_domain + \"-\" + version + \".tar.gz\"\r\n执行说明：python deploy.py --domain [paas_domain] --username [paas_admin_user_name] --password [paas_admin_user_password] --file_name [file1] [file2] [file3]\r\n      例：python deploy.py --domain 192.168.56.11 --file_name rbac-192.168.56.11-1.1.4.tar.gz workbench-192.168.56.11-1.1.4.tar.gz\r\n参数说明：\r\n    domain  必填\r\n    username   非必填    未填写会使用 line 165  default配置\r\n    password   非必填    未填写会使用 line 166  default配置\r\n    file_name  非必填    未填写则会扫描当前文件夹下所有符合要求的文件\r\n账号说明：必须使用权限为管理员的账号，普通账号不能使用\r\n第三方依赖：requests==2.25.0\r\n\"\"\"\r\nimport json\r\nimport os\r\nimport sys\r\nimport time\r\nimport requests\r\nimport re\r\nimport argparse\r\n\r\n# 去除本地python3 windows环境报错\r\nimport urllib3\r\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\r\n\r\n\r\nHTTP_SCHEMA = os.environ.get(\"HTTP_SCHEMA\", \"https\")\r\n\r\n\r\nclass Deploy(object):\r\n    def __init__(self, paas_domain, username, password, file_name=[]):\r\n        self.paas_domain = paas_domain\r\n        self.username = username\r\n        self.password = password\r\n        self.session = requests.Session()\r\n        self.session.headers.update({'referer': \"%s://%s\" % (HTTP_SCHEMA, paas_domain)})\r\n        self.session.verify = False\r\n        self.file_list = self.get_upload_file(file_name)\r\n        self.login_url = \"{}://{}/login/api/v3/login/\".format(HTTP_SCHEMA, self.paas_domain)\r\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\r\n\r\n    def login(self, verify_code=\"\"):\r\n        try:\r\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\r\n                         \"auth_type\": \"1\"}\r\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\r\n            try:\r\n                res_json = resp.json()\r\n                if resp.status_code != 200:\r\n                    return False, res_json, \"\"\r\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\r\n                code = res_json.get(\"code\")\r\n                message = res_json.get(\"message\")\r\n                if bk_token:\r\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\r\n                elif code != 200:\r\n                    return False, message, \"\"\r\n                else:\r\n                    return False, res_json, \"\"\r\n            except Exception as e:\r\n                return False, str(resp.content.decode()), \"\"\r\n        except Exception as e:\r\n            return False, str(e), \"\"\r\n\r\n    # 获取上传文件\r\n    def get_upload_file(self, file_name_list):\r\n        if file_name_list:\r\n            file_list = [os.path.join(os.path.dirname(os.path.abspath(__file__)), file_name) for file_name in file_name_list if os.path.isfile(os.path.join(os.path.dirname(os.path.abspath(__file__)), file_name)) and file_name.endswith(\"tar.gz\") and len(file_name.split(\"-\")) == 3]\r\n        else:\r\n            file_list = [os.path.join(os.path.dirname(os.path.abspath(__file__)), file) for file in os.listdir(os.path.dirname(os.path.abspath(__file__))) if file.endswith(\"tar.gz\") and len(file.split(\"-\")) == 3]\r\n        if not file_list:\r\n            print(\"未发现有效文件\")\r\n            sys.exit(1)\r\n        return file_list\r\n\r\n    # 部署\r\n    def deploy(self):\r\n        for file_path in self.file_list:\r\n            _, file_name = os.path.split(file_path)\r\n            app_code = file_name.split(\"-\")[0]\r\n            check_res = self.check_app_code(app_code)\r\n            if check_res:       # 第一次部署\r\n                app_code = \"0\"\r\n            else:               # 第二次部署\r\n                app_code = app_code\r\n            status, version = self.upload_file(file_path, app_code)\r\n            if not status or not version:\r\n                continue\r\n            url_app_code = app_code if app_code else \"0\"\r\n            deploy_url = \"{}://{}/saas/{}/release/online/{}/\".format(HTTP_SCHEMA, self.paas_domain, url_app_code, version)\r\n            res = self.session.post(deploy_url, json={\"csrfmiddlewaretoken\": self.csrfmiddlewaretoken},\r\n                                    verify=False, headers={\"X-CSRFToken\": self.session.cookies.get(\"bk_csrftoken\")})\r\n            if res.status_code == 200:\r\n                event_id = res.json().get(\"event_id\")\r\n                if event_id:\r\n                    print(\"开始部署: {}\".format(file_name.split(\"-\")[0]))\r\n                    self.get_result(event_id, file_name.split(\"-\")[0])\r\n                else:\r\n                    print(\"部署失败，请手工部署: {}\".format(file_name))\r\n                    print(\"失败信息: {}\".format(res.json().get(\"message\")))\r\n                    if url_app_code == \"0\":\r\n                        self.delete_first_error_saas(file_name.split(\"-\")[0])\r\n\r\n    # 用于删除第一次部署时，部署错误造成的遗留数据\r\n    def delete_first_error_saas(self, app_code):\r\n        delete_url = \"{}://{}/saas/{}/delete/\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n        res = self.session.post(delete_url, json={\"csrfmiddlewaretoken\": self.csrfmiddlewaretoken},\r\n                            verify=False, headers={\"X-CSRFToken\": self.session.cookies.get(\"bk_csrftoken\")})\r\n\r\n    # 轮询部署状态\r\n    def get_result(self, event_id, app_code):\r\n        while True:\r\n            time.sleep(2)\r\n            url = \"{}://{}/release/{}/task/\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n            reqs = self.session.get(url, params={\r\n                \"event_id\": event_id,\r\n                \"app_state\": 1\r\n            })\r\n            if reqs.json().get(\"result\"):\r\n                if reqs.json().get(\"data\").get(\"status\") == 1:\r\n                    print(\"部署完毕: {}\".format(app_code))\r\n                    break\r\n                elif reqs.json().get(\"data\").get(\"status\") == 0:\r\n                    print(\"部署失败: {}\".format(app_code))\r\n                    break\r\n\r\n    # 检查APPCODE是否存在，存在的话即为：已经部署成功，后续部署应为更新部署\r\n    def check_app_code(self, app_code):\r\n        check_url = \"{}://{}/app/check/app_code/?app_code={}\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n        res = self.session.get(check_url)\r\n        try:\r\n            json_res = res.json()\r\n            return json_res.get(\"result\")\r\n        except Exception:\r\n            print(\"Paas服务异常\")\r\n            sys.exit(1)\r\n\r\n    # 上传SaaS包\r\n    def upload_file(self, file_path, app_code=\"0\"):\r\n        print(\"开始上传文件: {}\".format(os.path.split(file_path)[-1]))\r\n        upload_url = \"{}://{}/saas/{}/upload/\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n        upload_form = {\r\n            \"saas_file\": (os.path.split(file_path)[-1], open(file_path, 'rb'), \"application/gzip\"),\r\n        }\r\n        res = self.session.post(upload_url, json={\"csrfmiddlewaretoken\": self.csrfmiddlewaretoken}, files=upload_form,\r\n                                verify=False, headers={\"X-CSRFToken\": self.session.cookies.get(\"bk_csrftoken\")})\r\n        res.encoding = 'utf-8'\r\n        if res.status_code == 200:\r\n            res_text = res.text.encode('utf-8').decode('utf-8')\r\n            search_upload_info = re.search(r\"></i>.*?</span>\", res_text)\r\n            search_version_info = re.search(r\"saas_app_version_id\\\"\\)\\.innerHTML=\\\".*?\\\"\", res_text)\r\n            if search_upload_info and search_version_info:\r\n                if search_upload_info.group()[5: -7].strip() == \"上传成功\":\r\n                    print(\"{} 上传成功\".format(os.path.split(file_path)[-1]))\r\n                    return True, search_version_info.group()[33: -1]\r\n                else:\r\n                    print(search_upload_info.group()[5: -7].strip())\r\n                    return False, None\r\n        else:\r\n            print(\"Paas服务异常，请手工上传\")\r\n            return False, None\r\n\r\n\r\n# 增加脚本参数\r\ndef add_parameter():\r\n    parameter = argparse.ArgumentParser()\r\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\r\n    parameter.add_argument(\"--username\", help=\"Admin user username.\", default=\"admin\")\r\n    parameter.add_argument(\"--password\", help=\"Admin user password.\", default=\"admin\")\r\n    parameter.add_argument(\"--file_name\", help=\"Deploy file_name.\", nargs='*', type=str)\r\n    parameter.parse_args()\r\n    return parameter\r\n\r\nif __name__ == '__main__':\r\n    parameter = add_parameter()\r\n    options = parameter.parse_args()\r\n    domain = options.domain\r\n    username = options.username\r\n    password = options.password\r\n    file_name = options.file_name\r\n    dep = Deploy(domain, username, password, file_name)\r\n    dep.deploy()\r\n"
  },
  {
    "path": "saas/default_host_dashboard_dict.py",
    "content": "default_host_dashboard_dict = {\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n          \"uid\": \"-- Grafana --\"\n        },\n        \"enable\": True,\n        \"hide\": True,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations * Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": False,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": True,\n  \"fiscalYearStartMonth\": 0,\n  \"gnetId\": 5363,\n  \"graphTooltip\": 1,\n  \"id\": None,\n  \"iteration\": 1713352495219,\n  \"links\": [],\n  \"liveNow\": False,\n  \"panels\": [\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 38,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Info\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          },\n          \"unit\": \"bytes\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hideTimeOverride\": True,\n      \"id\": 27,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Total memory\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"timeFrom\": \"10y\",\n      \"title\": \"Total memory\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {},\n      \"description\": \"System uptime\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 2,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"OFFLINE\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          },\n          \"unit\": \"dtdurations\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 1\n      },\n      \"hideTimeOverride\": True,\n      \"id\": 2,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"last\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Status\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/[U-u]ptime/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Uptime\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 1\n      },\n      \"hideTimeOverride\": True,\n      \"id\": 84,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Number of CPUs\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"timeFrom\": \"10y\",\n      \"title\": \"Total CPUs\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {},\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"mappings\": [\n            {\n              \"options\": {\n                \"1\": {\n                  \"text\": \"ONLINE\"\n                }\n              },\n              \"type\": \"value\"\n            },\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"OFFLINE\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"noValue\": \"OFFLINE\",\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"red\",\n                \"value\": None\n              },\n              {\n                \"color\": \"green\",\n                \"value\": 1\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 4\n      },\n      \"hideTimeOverride\": True,\n      \"id\": 3,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"/.*/\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Zabbix agent ping\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"timeFrom\": \"5m\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [\n            {\n              \"options\": {\n                \"Null\": {\n                  \"text\": \"'hostname'\"\n                }\n              },\n              \"type\": \"value\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 4\n      },\n      \"hideTimeOverride\": False,\n      \"id\": 70,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"/^Host name of Zabbix agent running$/\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Monitoring agent\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": False,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Host name of Zabbix agent running\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"2\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"timeFrom\": \"10y\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              },\n              {\n                \"color\": \"yellow\",\n                \"value\": 1\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 4\n      },\n      \"hideTimeOverride\": True,\n      \"id\": 10,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"center\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"/^triggers count$/\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"/.*/\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Perda de Pacotes\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"acknowledged\": 2,\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"hostProxy\": False,\n            \"hostsInMaintenance\": False,\n            \"limit\": 1001,\n            \"minSeverity\": 0,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"sortProblems\": \"default\",\n            \"useTimeRange\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"4\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"showProblems\": \"problems\",\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2,\n            \"minSeverity\": 0\n          }\n        }\n      ],\n      \"timeFrom\": \"5y\",\n      \"title\": \"Problems\",\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 7\n      },\n      \"id\": 35,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Stats\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                \"value\": None\n              },\n              {\n                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 8\n      },\n      \"id\": 5,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"showThresholdLabels\": False,\n        \"showThresholdMarkers\": True,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Memory Utilization\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"aliasColors\": {\n        \"CPU system time\": \"#e24d42\",\n        \"CPU utilization\": \"red\",\n        \"Espaco livre na particao C: % (pfree)\": \"#629E51\",\n        \"Espaco livre na particao D: % (pfree)\": \"#E5AC0E\",\n        \"Memory utilization\": \"blue\",\n        \"Used memory %\": \"#6ed0e0\",\n        \"Used memory in %\": \"#70dbed\"\n      },\n      \"bars\": False,\n      \"dashLength\": 10,\n      \"dashes\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"decimals\": 0,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"fill\": 5,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 8\n      },\n      \"hiddenSeries\": False,\n      \"id\": 9,\n      \"legend\": {\n        \"alignAsTable\": False,\n        \"avg\": True,\n        \"current\": False,\n        \"hideEmpty\": False,\n        \"hideZero\": False,\n        \"max\": False,\n        \"min\": False,\n        \"rightSide\": False,\n        \"show\": True,\n        \"total\": False,\n        \"values\": True\n      },\n      \"lines\": True,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"NonePointMode\": \"None\",\n      \"options\": {\n        \"alertThreshold\": True\n      },\n      \"percentage\": False,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 5,\n      \"points\": False,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:810\",\n          \"alias\": \"/CPU utilization/\",\n          \"dashLength\": 5,\n          \"dashes\": True,\n          \"fill\": 0,\n          \"lines\": True,\n          \"linewidth\": 3,\n          \"NonePointMode\": \"None\",\n          \"spaceLength\": 2,\n          \"yaxis\": 2,\n          \"zindex\": 2\n        },\n        {\n          \"$$hashKey\": \"object:811\",\n          \"alias\": \"Memory utilization\",\n          \"fillGradient\": 7,\n          \"NonePointMode\": \"None\",\n          \"pointradius\": 2\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": False,\n      \"steppedLine\": False,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"Memory\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": False,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Memory utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Memory / CPU\",\n      \"tooltip\": {\n        \"shared\": True,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": True,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3277\",\n          \"decimals\": 0,\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": \"0\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:3278\",\n          \"decimals\": 0,\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": \"0\",\n          \"show\": True\n        }\n      ],\n      \"yaxis\": {\n        \"align\": True\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                \"value\": None\n              },\n              {\n                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 8\n      },\n      \"id\": 4,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"showThresholdLabels\": False,\n        \"showThresholdMarkers\": True,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"CPU utilization\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"CPU utilization\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"Amount of time the CPU has been waiting for I/O to complete.\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"max\": 20,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 5\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 10\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 14\n      },\n      \"id\": 22,\n      \"links\": [],\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"CPU\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/CPU (iowait|DPC) time/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"CPU iowait time\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 14\n      },\n      \"id\": 52,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"General\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Number of processes\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Number of processes\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {},\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 80\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 95\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 9,\n        \"x\": 8,\n        \"y\": 14\n      },\n      \"hideTimeOverride\": False,\n      \"id\": 15,\n      \"links\": [],\n      \"options\": {\n        \"displayMode\": \"lcd\",\n        \"minVizHeight\": 10,\n        \"minVizWidth\": 0,\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"showUnfilled\": True,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"/Filesystem./\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [\n            {\n              \"$$hashKey\": \"object:388\",\n              \"def\": {\n                \"category\": \"Alias\",\n                \"defaultParams\": [\n                  \"/(.*)/\",\n                  \"$1\"\n                ],\n                \"name\": \"replaceAlias\",\n                \"params\": [\n                  {\n                    \"name\": \"regexp\",\n                    \"type\": \"string\"\n                  },\n                  {\n                    \"name\": \"newAlias\",\n                    \"type\": \"string\"\n                  }\n                ]\n              },\n              \"params\": [\n                \"/: Space utilization/\",\n                \"$'\"\n              ],\n              \"text\": \"replaceAlias(/: Space utilization/, $')\"\n            }\n          ],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Space utilization/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Filesystem (Space utilization %)\",\n      \"transformations\": [],\n      \"type\": \"bargauge\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"The amount of disk devices in the system\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 3,\n        \"x\": 17,\n        \"y\": 14\n      },\n      \"id\": 94,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"/Disk /\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Disk utilization/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Disk drives \",\n      \"transformations\": [\n        {\n          \"id\": \"calculateField\",\n          \"options\": {\n            \"mode\": \"reduceRow\",\n            \"reduce\": {\n              \"reducer\": \"count\"\n            },\n            \"replaceFields\": True\n          }\n        }\n      ],\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"Number of users who are currently logged in\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": None\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 14\n      },\n      \"id\": 95,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"General\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"Number of logged in users\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Logged in Users\",\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"id\": 31,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Disks\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {\n        \"CPU system time\": \"#e24d42\",\n        \"CPU utilization\": \"red\",\n        \"Espaco livre na particao C: % (pfree)\": \"#629E51\",\n        \"Espaco livre na particao D: % (pfree)\": \"#E5AC0E\",\n        \"Memory utilization\": \"blue\",\n        \"Used memory %\": \"#6ed0e0\",\n        \"Used memory in %\": \"#70dbed\"\n      },\n      \"bars\": False,\n      \"dashLength\": 10,\n      \"dashes\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"decimals\": 0,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"ops\"\n        },\n        \"overrides\": []\n      },\n      \"fill\": 10,\n      \"fillGradient\": 6,\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 10,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"hiddenSeries\": False,\n      \"id\": 89,\n      \"legend\": {\n        \"alignAsTable\": False,\n        \"avg\": True,\n        \"current\": False,\n        \"hideEmpty\": False,\n        \"hideZero\": False,\n        \"max\": False,\n        \"min\": False,\n        \"rightSide\": False,\n        \"show\": True,\n        \"total\": False,\n        \"values\": True\n      },\n      \"lines\": True,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"NonePointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": True\n      },\n      \"percentage\": False,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 5,\n      \"points\": False,\n      \"renderer\": \"flot\",\n      \"repeat\": \"Disk\",\n      \"repeatDirection\": \"v\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:810\",\n          \"alias\": \"/read rate/\",\n          \"color\": \"#5794F2\",\n          \"fill\": 0,\n          \"lines\": True,\n          \"linewidth\": 3\n        },\n        {\n          \"$$hashKey\": \"object:811\",\n          \"alias\": \"/write rate/\",\n          \"color\": \"#C4162A\",\n          \"pointradius\": 2,\n          \"points\": True\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": False,\n      \"steppedLine\": False,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Disk\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/write rate/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        },\n        {\n          \"application\": {\n            \"filter\": \"$Disk\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": False,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/read rate/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"$Disk (read/write rates)\",\n      \"tooltip\": {\n        \"shared\": True,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": True,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3277\",\n          \"decimals\": 0,\n          \"format\": \"ops\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"min\": \"0\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:3278\",\n          \"decimals\": 0,\n          \"format\": \"none\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"min\": \"0\",\n          \"show\": False\n        }\n      ],\n      \"yaxis\": {\n        \"align\": False\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"This item is the percentage of elapsed time that the selected disk drive was busy servicing read or writes requests.\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\"\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 4,\n        \"x\": 10,\n        \"y\": 21\n      },\n      \"id\": 23,\n      \"links\": [],\n      \"options\": {\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"showThresholdLabels\": False,\n        \"showThresholdMarkers\": True,\n        \"text\": {}\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Disk\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Disk\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [\n            {\n              \"$$hashKey\": \"object:976\",\n              \"def\": {\n                \"category\": \"Alias\",\n                \"defaultParams\": [\n                  \"/(.*)/\",\n                  \"$1\"\n                ],\n                \"name\": \"replaceAlias\",\n                \"params\": [\n                  {\n                    \"name\": \"regexp\",\n                    \"type\": \"string\"\n                  },\n                  {\n                    \"name\": \"newAlias\",\n                    \"type\": \"string\"\n                  }\n                ]\n              },\n              \"params\": [\n                \"/(: Disk utilization)/\",\n                \"$'\"\n              ],\n              \"text\": \"replaceAlias(/(: Disk utilization)/, $')\"\n            }\n          ],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Disk utilization/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"$Disk (Performance)\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"aliasColors\": {\n        \"C:: Total space\": \"rgb(255, 255, 255)\",\n        \"C:: Used space\": \"red\",\n        \"CPU system time\": \"#e24d42\",\n        \"Espaco livre na particao C: % (pfree)\": \"#629E51\",\n        \"Espaco livre na particao D: % (pfree)\": \"#E5AC0E\",\n        \"Used memory %\": \"#6ed0e0\"\n      },\n      \"bars\": False,\n      \"dashLength\": 10,\n      \"dashes\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"decimals\": 0,\n      \"description\": \"Used storage in Bytes\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"bytes\"\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 10,\n        \"x\": 14,\n        \"y\": 21\n      },\n      \"hiddenSeries\": False,\n      \"id\": 32,\n      \"legend\": {\n        \"alignAsTable\": False,\n        \"avg\": False,\n        \"current\": True,\n        \"hideEmpty\": False,\n        \"hideZero\": False,\n        \"max\": False,\n        \"min\": False,\n        \"rightSide\": False,\n        \"show\": True,\n        \"total\": False,\n        \"values\": True\n      },\n      \"lines\": True,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"NonePointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": True\n      },\n      \"percentage\": True,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 5,\n      \"points\": False,\n      \"renderer\": \"flot\",\n      \"repeat\": \"Filesystem\",\n      \"repeatDirection\": \"v\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:1193\",\n          \"alias\": \"/Used space/\",\n          \"color\": \"#F2495C\",\n          \"dashLength\": 7,\n          \"dashes\": True,\n          \"fill\": 10,\n          \"fillGradient\": 10,\n          \"linewidth\": 4,\n          \"spaceLength\": 4\n        },\n        {\n          \"$$hashKey\": \"object:3296\",\n          \"alias\": \"/Total space/\",\n          \"color\": \"rgb(255, 255, 255)\",\n          \"linewidth\": 4\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": False,\n      \"steppedLine\": False,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Filesystem\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"hide\": False,\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/(Used|Total) space/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"$Filesystem (Space utilization)\",\n      \"tooltip\": {\n        \"shared\": True,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": True,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1664\",\n          \"decimals\": 0,\n          \"format\": \"bytes\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"min\": \"0\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:1665\",\n          \"decimals\": 0,\n          \"format\": \"bytes\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"show\": False\n        }\n      ],\n      \"yaxis\": {\n        \"align\": True\n      }\n    },\n    {\n      \"collapsed\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 27\n      },\n      \"id\": 41,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Network\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"semi-dark-green\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\"\n              }\n            ]\n          },\n          \"unit\": \"binBps\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 28\n      },\n      \"id\": 19,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Network\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Network\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Bits received/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"(IN) $Network\",\n      \"type\": \"stat\"\n    },\n    {\n      \"aliasColors\": {\n        \"Incoming network traffic on vmxnet3 Ethernet Adapter #2\": \"#1f78c1\",\n        \"Outgoing network traffic on vmxnet3 Ethernet Adapter #2\": \"rgba(237, 129, 40, 0.79)\",\n        \"Outgoing network traffic on vmxnet3 Ethernet Adapter #2-WFP LightWeight Filter-0000\": \"rgba(237, 129, 40, 0.89)\"\n      },\n      \"bars\": False,\n      \"dashLength\": 10,\n      \"dashes\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"decimals\": 0,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"binBps\"\n        },\n        \"overrides\": []\n      },\n      \"fill\": 5,\n      \"fillGradient\": 3,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 16,\n        \"x\": 4,\n        \"y\": 28\n      },\n      \"hiddenSeries\": False,\n      \"id\": 18,\n      \"legend\": {\n        \"alignAsTable\": True,\n        \"avg\": False,\n        \"current\": True,\n        \"hideEmpty\": True,\n        \"hideZero\": True,\n        \"max\": False,\n        \"min\": False,\n        \"rightSide\": True,\n        \"show\": False,\n        \"total\": False,\n        \"values\": True\n      },\n      \"lines\": True,\n      \"linewidth\": 3,\n      \"links\": [],\n      \"NonePointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": True\n      },\n      \"percentage\": False,\n      \"pluginVersion\": \"9.0.2\",\n      \"pointradius\": 5,\n      \"points\": False,\n      \"renderer\": \"flot\",\n      \"repeat\": \"Network\",\n      \"repeatDirection\": \"v\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:3135\",\n          \"alias\": \"/Bits received/\",\n          \"color\": \"#56A64B\"\n        },\n        {\n          \"$$hashKey\": \"object:3136\",\n          \"alias\": \"/Bits sent/\",\n          \"color\": \"#8F3BB8\",\n          \"transform\": \"negative-Y\"\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": False,\n      \"steppedLine\": False,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$netif\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [\n            {\n              \"$$hashKey\": \"object:2368\",\n              \"def\": {\n                \"category\": \"Alias\",\n                \"defaultParams\": [\n                  \"/(.*)/\",\n                  \"$1\"\n                ],\n                \"name\": \"replaceAlias\",\n                \"params\": [\n                  {\n                    \"name\": \"regexp\",\n                    \"type\": \"string\"\n                  },\n                  {\n                    \"name\": \"newAlias\",\n                    \"type\": \"string\"\n                  }\n                ]\n              },\n              \"params\": [\n                \"/Interface /\",\n                \"$`\"\n              ],\n              \"text\": \"replaceAlias(/Interface /, $`)\"\n            }\n          ],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Bits (received|sent)/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"$Network\",\n      \"tooltip\": {\n        \"shared\": True,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": True,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1888\",\n          \"format\": \"bps\",\n          \"logBase\": 1,\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:1889\",\n          \"format\": \"binBps\",\n          \"logBase\": 1,\n          \"show\": True\n        }\n      ],\n      \"yaxis\": {\n        \"align\": False\n      }\n    },\n    {\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"fixedColor\": \"semi-dark-purple\",\n            \"mode\": \"fixed\"\n          },\n          \"decimals\": 0,\n          \"mappings\": [\n            {\n              \"options\": {\n                \"match\": \"None\",\n                \"result\": {\n                  \"text\": \"N/A\"\n                }\n              },\n              \"type\": \"special\"\n            }\n          ],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\"\n              }\n            ]\n          },\n          \"unit\": \"binBps\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 28\n      },\n      \"id\": 21,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": False\n        },\n        \"text\": {},\n        \"textMode\": \"value\"\n      },\n      \"pluginVersion\": \"9.0.2\",\n      \"repeat\": \"Network\",\n      \"repeatDirection\": \"v\",\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"$Network\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"/Bits sent/\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"minSeverity\": 3,\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"0\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"(OUT) $Network\",\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 35\n      },\n      \"id\": 29,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Problems\",\n      \"type\": \"row\"\n    },\n    {\n      \"ackEventColor\": \"rgb(56, 219, 156)\",\n      \"ackField\": True,\n      \"ageField\": True,\n      \"customLastChangeFormat\": False,\n      \"datasource\": {\n        \"type\": \"alexanderzobnin-zabbix-datasource\",\n        \"uid\": \"${DATA_SOURCE}\"\n      },\n      \"descriptionAtNewLine\": False,\n      \"descriptionField\": True,\n      \"fontSize\": \"120%\",\n      \"gridPos\": {\n        \"h\": 12,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 36\n      },\n      \"highlightBackground\": True,\n      \"highlightNewEvents\": True,\n      \"highlightNewerThan\": \"1h\",\n      \"hostField\": False,\n      \"hostGroups\": False,\n      \"hostProxy\": False,\n      \"hostTechNameField\": False,\n      \"id\": 17,\n      \"lastChangeFormat\": \"\",\n      \"layout\": \"table\",\n      \"limit\": 100,\n      \"links\": [],\n      \"markAckEvents\": True,\n      \"okEventColor\": \"rgb(56, 189, 113)\",\n      \"options\": {\n        \"ackEventColor\": \"rgb(56, 219, 156)\",\n        \"ackField\": True,\n        \"ageField\": True,\n        \"allowDangerousHTML\": False,\n        \"customLastChangeFormat\": False,\n        \"descriptionAtNewLine\": False,\n        \"descriptionField\": True,\n        \"fontSize\": \"120%\",\n        \"highlightBackground\": True,\n        \"highlightNewEvents\": True,\n        \"highlightNewerThan\": \"1h\",\n        \"hostField\": False,\n        \"hostGroups\": False,\n        \"hostProxy\": False,\n        \"hostTechNameField\": False,\n        \"lastChangeFormat\": \"\",\n        \"layout\": \"table\",\n        \"limit\": 100,\n        \"markAckEvents\": True,\n        \"okEventColor\": \"rgb(56, 189, 113)\",\n        \"opdataField\": False,\n        \"pageSize\": 10,\n        \"problemTimeline\": True,\n        \"resizedColumns\": [\n          {\n            \"id\": \"lastchange\",\n            \"value\": 187\n          },\n          {\n            \"id\": \"age\",\n            \"value\": 125\n          },\n          {\n            \"id\": \"ack\",\n            \"value\": 207\n          },\n          {\n            \"id\": \"description\",\n            \"value\": 899\n          }\n        ],\n        \"severityField\": True,\n        \"showTags\": False,\n        \"sortProblems\": \"lastchange\",\n        \"statusField\": False,\n        \"statusIcon\": True,\n        \"triggerSeverity\": [\n          {\n            \"$$hashKey\": \"object:738\",\n            \"color\": \"rgb(108, 108, 108)\",\n            \"priority\": 0,\n            \"severity\": \"Not classified\",\n            \"show\": True\n          },\n          {\n            \"$$hashKey\": \"object:739\",\n            \"color\": \"rgb(120, 158, 183)\",\n            \"priority\": 1,\n            \"severity\": \"Information\",\n            \"show\": True\n          },\n          {\n            \"$$hashKey\": \"object:740\",\n            \"color\": \"rgb(175, 180, 36)\",\n            \"priority\": 2,\n            \"severity\": \"Warning\",\n            \"show\": True\n          },\n          {\n            \"$$hashKey\": \"object:741\",\n            \"color\": \"rgb(255, 137, 30)\",\n            \"priority\": 3,\n            \"severity\": \"Average\",\n            \"show\": True\n          },\n          {\n            \"$$hashKey\": \"object:742\",\n            \"color\": \"rgb(255, 101, 72)\",\n            \"priority\": 4,\n            \"severity\": \"High\",\n            \"show\": True\n          },\n          {\n            \"$$hashKey\": \"object:743\",\n            \"color\": \"rgb(215, 0, 0)\",\n            \"priority\": 5,\n            \"severity\": \"Disaster\",\n            \"show\": True\n          }\n        ]\n      },\n      \"pageSize\": 10,\n      \"pluginVersion\": \"9.0.2\",\n      \"problemTimeline\": True,\n      \"resizedColumns\": [\n        {\n          \"id\": \"lastchange\",\n          \"value\": 187\n        },\n        {\n          \"id\": \"age\",\n          \"value\": 125\n        },\n        {\n          \"id\": \"ack\",\n          \"value\": 207\n        },\n        {\n          \"id\": \"description\",\n          \"value\": 899\n        }\n      ],\n      \"schemaVersion\": 8,\n      \"severityField\": True,\n      \"showTags\": False,\n      \"sortProblems\": \"lastchange\",\n      \"statusField\": False,\n      \"statusIcon\": True,\n      \"targets\": [\n        {\n          \"application\": {\n            \"filter\": \"/.*/\"\n          },\n          \"countTriggersBy\": \"\",\n          \"datasource\": {\n            \"type\": \"alexanderzobnin-zabbix-datasource\",\n            \"uid\": \"${DATA_SOURCE}\"\n          },\n          \"functions\": [],\n          \"group\": {\n            \"filter\": \"$Group\"\n          },\n          \"host\": {\n            \"filter\": \"$Host\"\n          },\n          \"item\": {\n            \"filter\": \"\"\n          },\n          \"itemTag\": {\n            \"filter\": \"\"\n          },\n          \"macro\": {\n            \"filter\": \"\"\n          },\n          \"options\": {\n            \"acknowledged\": 2,\n            \"count\": True,\n            \"disableDataAlignment\": False,\n            \"hostProxy\": False,\n            \"hostsInMaintenance\": False,\n            \"limit\": 1001,\n            \"minSeverity\": 3,\n            \"severities\": [\n              0,\n              1,\n              2,\n              3,\n              4,\n              5\n            ],\n            \"showDisabledItems\": False,\n            \"skipEmptyValues\": False,\n            \"sortProblems\": \"default\",\n            \"useTimeRange\": False,\n            \"useTrends\": \"default\",\n            \"useZabbixValueMapping\": False\n          },\n          \"proxy\": {\n            \"filter\": \"\"\n          },\n          \"queryType\": \"5\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"schema\": 12,\n          \"showProblems\": \"problems\",\n          \"table\": {\n            \"skipEmptyValues\": False\n          },\n          \"tags\": {\n            \"filter\": \"\"\n          },\n          \"textFilter\": \"\",\n          \"trigger\": {\n            \"filter\": \"\"\n          },\n          \"triggers\": {\n            \"acknowledged\": 2\n          }\n        }\n      ],\n      \"title\": \"Problems\",\n      \"triggerSeverity\": [\n        {\n          \"$$hashKey\": \"object:738\",\n          \"color\": \"rgb(108, 108, 108)\",\n          \"priority\": 0,\n          \"severity\": \"Not classified\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:739\",\n          \"color\": \"rgb(120, 158, 183)\",\n          \"priority\": 1,\n          \"severity\": \"Information\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:740\",\n          \"color\": \"rgb(175, 180, 36)\",\n          \"priority\": 2,\n          \"severity\": \"Warning\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:741\",\n          \"color\": \"rgb(255, 137, 30)\",\n          \"priority\": 3,\n          \"severity\": \"Average\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:742\",\n          \"color\": \"rgb(255, 101, 72)\",\n          \"priority\": 4,\n          \"severity\": \"High\",\n          \"show\": True\n        },\n        {\n          \"$$hashKey\": \"object:743\",\n          \"color\": \"rgb(215, 0, 0)\",\n          \"priority\": 5,\n          \"severity\": \"Disaster\",\n          \"show\": True\n        }\n      ],\n      \"type\": \"alexanderzobnin-zabbix-triggers-panel\"\n    }\n  ],\n  \"refresh\": \"30s\",\n  \"schemaVersion\": 36,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"zabbix\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"selected\": False,\n          \"text\": \"Zabbix\",\n          \"value\": \"Zabbix\"\n        },\n        \"description\": \"请选择Zabbix监控实例\",\n        \"hide\": 0,\n        \"includeAll\": False,\n        \"label\": \"监控实例:\",\n        \"multi\": False,\n        \"name\": \"DATA_SOURCE\",\n        \"options\": [],\n        \"query\": \"alexanderzobnin-zabbix-datasource\",\n        \"queryValue\": \"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": False,\n        \"type\": \"datasource\"\n      },\n      {\n        \"allFormat\": \"regex values\",\n        \"current\": {\n          \"selected\": False,\n          \"text\": \"默认分组\",\n          \"value\": \"默认分组\"\n        },\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"Zabbix - group\",\n        \"hide\": 0,\n        \"includeAll\": False,\n        \"label\": \"分组:\",\n        \"multi\": False,\n        \"multiFormat\": \"glob\",\n        \"name\": \"Group\",\n        \"options\": [],\n        \"query\": {\n          \"application\": \"\",\n          \"group\": \"/.*/\",\n          \"host\": \"\",\n          \"item\": \"\",\n          \"itemTag\": \"\",\n          \"queryType\": \"group\"\n        },\n        \"refresh\": 1,\n        \"refresh_on_load\": False,\n        \"regex\": \"\",\n        \"skipUrlSync\": False,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": False\n      },\n      {\n        \"current\": {\n          \"selected\": False,\n          \"text\": \"Ubuntu20.04\",\n          \"value\": \"Ubuntu20.04\"\n        },\n        \"datasource\": {\n          \"type\": \"alexanderzobnin-zabbix-datasource\",\n          \"uid\": \"${DATA_SOURCE}\"\n        },\n        \"definition\": \"Zabbix - host\",\n        \"hide\": 0,\n        \"includeAll\": False,\n        \"label\": \"名称:\",\n        \"multi\": False,\n        \"name\": \"Host\",\n        \"options\": [],\n        \"query\": {\n          \"application\": \"\",\n          \"group\": \"$Group\",\n          \"host\": \"/.*/\",\n          \"item\": \"\",\n          \"itemTag\": \"\",\n          \"queryType\": \"host\"\n        },\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": False,\n        \"sort\": 0,\n        \"type\": \"query\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-30m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ],\n    \"time_options\": [\n      \"5m\",\n      \"15m\",\n      \"1h\",\n      \"6h\",\n      \"12h\",\n      \"24h\",\n      \"2d\",\n      \"7d\",\n      \"30d\"\n    ]\n  },\n  \"timezone\": \"browser\",\n  \"title\": \"主机大屏\",\n  \"description\": \"Zabbix主机大屏\",\n  \"uid\": \"opsany-zabbix-host-dashboard\",\n  \"version\": 25,\n  \"weekStart\": \"\"\n}\n\n"
  },
  {
    "path": "saas/default_monitor_dashboard_dict.py",
    "content": "default_monitor_dashboard_dict = {\n    \n    \"annotations\": {\n        \"list\": [\n            {\n                \"builtIn\": 1,\n                \"datasource\": \"-- Grafana --\",\n                \"enable\": True,\n                \"hide\": True,\n                \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                \"name\": \"Annotations & Alerts\",\n                \"type\": \"dashboard\"\n            }\n        ]\n    },\n    \"description\": \"Nice and clean status about your server.\",\n    \"editable\": True,\n    \"gnetId\": None,\n    \"graphTooltip\": 1,\n    \"id\": None,\n    \"iteration\": 1623529989121,\n    \"links\": [],\n    \"panels\": [\n        {\n            \"datasource\": None,\n            \"gridPos\": {\n                \"h\": 1,\n                \"w\": 24,\n                \"x\": 0,\n                \"y\": 0\n            },\n            \"id\": 38,\n            \"title\": \"Info\",\n            \"type\": \"row\"\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"fixedColor\": \"dark-purple\",\n                        \"mode\": \"fixed\"\n                    },\n                    \"decimals\": 0,\n                    \"mappings\": [\n                        {\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"N/A\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    },\n                    \"unit\": \"bytes\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 3,\n                \"w\": 4,\n                \"x\": 0,\n                \"y\": 1\n            },\n            \"hideTimeOverride\": True,\n            \"id\": 27,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"/^Total memory$/\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"Memory\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Total memory\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": \"10y\",\n            \"timeShift\": None,\n            \"title\": \"Total memory\",\n            \"type\": \"stat\"\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"description\": \"System uptime\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"mode\": \"fixed\"\n                    },\n                    \"decimals\": 2,\n                    \"mappings\": [\n                        {\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"OFFLINE\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    },\n                    \"unit\": \"dtdurations\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 3,\n                \"w\": 16,\n                \"x\": 4,\n                \"y\": 1\n            },\n            \"hideTimeOverride\": True,\n            \"id\": 2,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"colorMode\": \"background\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"last\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"Status\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/[U-u]ptime/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": None,\n            \"timeShift\": None,\n            \"title\": \"Uptime\",\n            \"type\": \"stat\"\n        },\n        {\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"fixedColor\": \"dark-purple\",\n                        \"mode\": \"fixed\"\n                    },\n                    \"decimals\": 0,\n                    \"mappings\": [],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    }\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 3,\n                \"w\": 4,\n                \"x\": 20,\n                \"y\": 1\n            },\n            \"hideTimeOverride\": True,\n            \"id\": 84,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"CPU\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Number of (CPUs|cores)/\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": \"10y\",\n            \"timeShift\": None,\n            \"title\": \"Total CPUs\",\n            \"type\": \"stat\"\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"mappings\": [\n                        {\n                            \"from\": \"1\",\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"ONLINE\",\n                            \"to\": \"100\",\n                            \"type\": 1,\n                            \"value\": \"1\"\n                        },\n                        {\n                            \"id\": 1,\n                            \"op\": \"=\",\n                            \"text\": \"OFFLINE\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"noValue\": \"OFFLINE\",\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"red\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"green\",\n                                \"value\": 1\n                            }\n                        ]\n                    },\n                    \"unit\": \"none\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 3,\n                \"w\": 4,\n                \"x\": 0,\n                \"y\": 4\n            },\n            \"hideTimeOverride\": True,\n            \"id\": 3,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"colorMode\": \"background\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"/.*/\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Zabbix agent ping\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": \"5m\",\n            \"timeShift\": None,\n            \"type\": \"stat\"\n        },\n        {\n            \"datasource\": None,\n            \"description\": \"\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"mode\": \"fixed\"\n                    },\n                    \"mappings\": [\n                        {\n                            \"from\": \"\",\n                            \"id\": 2,\n                            \"text\": \"'hostname'\",\n                            \"to\": \"\",\n                            \"type\": 1,\n                            \"value\": \"Null\"\n                        }\n                    ],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    }\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 3,\n                \"w\": 16,\n                \"x\": 4,\n                \"y\": 4\n            },\n            \"hideTimeOverride\": False,\n            \"id\": 70,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"/^Host name of Zabbix agent running$/\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"Monitoring agent\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"hide\": False,\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Host name of Zabbix agent running\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 2,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": \"10y\",\n            \"timeShift\": None,\n            \"type\": \"stat\"\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"decimals\": 0,\n                    \"mappings\": [],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"yellow\",\n                                \"value\": 1\n                            }\n                        ]\n                    },\n                    \"unit\": \"none\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 3,\n                \"w\": 4,\n                \"x\": 20,\n                \"y\": 4\n            },\n            \"hideTimeOverride\": True,\n            \"id\": 10,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"colorMode\": \"background\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"center\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"/^triggers count$/\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"/.*/\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Perda de Pacotes\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 4,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 0\n                    }\n                }\n            ],\n            \"timeFrom\": \"5y\",\n            \"title\": \"Problems\",\n            \"type\": \"stat\"\n        },\n        {\n            \"collapsed\": False,\n            \"datasource\": None,\n            \"gridPos\": {\n                \"h\": 1,\n                \"w\": 24,\n                \"x\": 0,\n                \"y\": 7\n            },\n            \"id\": 35,\n            \"panels\": [],\n            \"title\": \"Stats\",\n            \"type\": \"row\"\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"decimals\": 0,\n                    \"mappings\": [\n                        {\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"N/A\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"max\": 100,\n                    \"min\": 0,\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                \"value\": 50\n                            },\n                            {\n                                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                \"value\": 80\n                            }\n                        ]\n                    },\n                    \"unit\": \"percent\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 4,\n                \"x\": 0,\n                \"y\": 8\n            },\n            \"id\": 5,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"showThresholdLabels\": False,\n                \"showThresholdMarkers\": True,\n                \"text\": {}\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"Memory\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Memory utilization\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"title\": \"Memory Utilization\",\n            \"type\": \"gauge\"\n        },\n        {\n            \"aliasColors\": {\n                \"CPU system time\": \"#e24d42\",\n                \"CPU utilization\": \"red\",\n                \"Espaço livre na partição C: % (pfree)\": \"#629E51\",\n                \"Espaço livre na partição D: % (pfree)\": \"#E5AC0E\",\n                \"Memory utilization\": \"blue\",\n                \"Used memory %\": \"#6ed0e0\",\n                \"Used memory in %\": \"#70dbed\"\n            },\n            \"bars\": False,\n            \"dashLength\": 10,\n            \"dashes\": False,\n            \"datasource\": None,\n            \"decimals\": 0,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"unit\": \"percent\"\n                },\n                \"overrides\": []\n            },\n            \"fill\": 5,\n            \"fillGradient\": 0,\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 16,\n                \"x\": 4,\n                \"y\": 8\n            },\n            \"hiddenSeries\": False,\n            \"id\": 9,\n            \"legend\": {\n                \"alignAsTable\": False,\n                \"avg\": True,\n                \"current\": False,\n                \"hideEmpty\": False,\n                \"hideZero\": False,\n                \"max\": False,\n                \"min\": False,\n                \"rightSide\": False,\n                \"show\": True,\n                \"total\": False,\n                \"values\": True\n            },\n            \"lines\": True,\n            \"linewidth\": 2,\n            \"links\": [],\n            \"NonePointMode\": \"None\",\n            \"options\": {\n                \"alertThreshold\": True\n            },\n            \"percentage\": False,\n            \"pluginVersion\": \"7.5.7\",\n            \"pointradius\": 5,\n            \"points\": False,\n            \"renderer\": \"flot\",\n            \"seriesOverrides\": [\n                {\n                    \"$$hashKey\": \"object:810\",\n                    \"alias\": \"/CPU utilization/\",\n                    \"dashLength\": 5,\n                    \"dashes\": True,\n                    \"fill\": 0,\n                    \"lines\": True,\n                    \"linewidth\": 3,\n                    \"NonePointMode\": \"None\",\n                    \"spaceLength\": 2,\n                    \"yaxis\": 2,\n                    \"zindex\": 2\n                },\n                {\n                    \"$$hashKey\": \"object:811\",\n                    \"alias\": \"Memory utilization\",\n                    \"fillGradient\": 7,\n                    \"NonePointMode\": \"None\",\n                    \"pointradius\": 2\n                }\n            ],\n            \"spaceLength\": 10,\n            \"stack\": False,\n            \"steppedLine\": False,\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"CPU\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"CPU utilization\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                },\n                {\n                    \"application\": {\n                        \"filter\": \"Memory\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"hide\": False,\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Memory utilization\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"B\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"thresholds\": [],\n            \"timeFrom\": None,\n            \"timeRegions\": [],\n            \"timeShift\": None,\n            \"title\": \"Memory / CPU\",\n            \"tooltip\": {\n                \"shared\": True,\n                \"sort\": 0,\n                \"value_type\": \"individual\"\n            },\n            \"type\": \"graph\",\n            \"xaxis\": {\n                \"buckets\": None,\n                \"mode\": \"time\",\n                \"name\": None,\n                \"show\": True,\n                \"values\": []\n            },\n            \"yaxes\": [\n                {\n                    \"$$hashKey\": \"object:3277\",\n                    \"decimals\": 0,\n                    \"format\": \"percent\",\n                    \"label\": \"\",\n                    \"logBase\": 1,\n                    \"max\": \"100\",\n                    \"min\": \"0\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:3278\",\n                    \"decimals\": 0,\n                    \"format\": \"percent\",\n                    \"label\": \"\",\n                    \"logBase\": 1,\n                    \"max\": \"100\",\n                    \"min\": \"0\",\n                    \"show\": True\n                }\n            ],\n            \"yaxis\": {\n                \"align\": True,\n                \"alignLevel\": None\n            }\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"decimals\": 0,\n                    \"mappings\": [\n                        {\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"N/A\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"max\": 100,\n                    \"min\": 0,\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                \"value\": 50\n                            },\n                            {\n                                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                \"value\": 80\n                            }\n                        ]\n                    },\n                    \"unit\": \"percent\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 4,\n                \"x\": 20,\n                \"y\": 8\n            },\n            \"id\": 4,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"showThresholdLabels\": False,\n                \"showThresholdMarkers\": True,\n                \"text\": {}\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"CPU\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"CPU utilization\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"B\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"title\": \"CPU utilization\",\n            \"type\": \"gauge\"\n        },\n        {\n            \"datasource\": None,\n            \"description\": \"Amount of time the CPU has been waiting for I/O to complete.\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"decimals\": 0,\n                    \"mappings\": [],\n                    \"max\": 20,\n                    \"min\": 0,\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"#EAB839\",\n                                \"value\": 5\n                            },\n                            {\n                                \"color\": \"red\",\n                                \"value\": 10\n                            }\n                        ]\n                    },\n                    \"unit\": \"percent\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 4,\n                \"x\": 0,\n                \"y\": 14\n            },\n            \"id\": 22,\n            \"links\": [],\n            \"options\": {\n                \"colorMode\": \"background\",\n                \"graphMode\": \"area\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"CPU\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/CPU (iowait|DPC) time/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": None,\n            \"timeShift\": None,\n            \"title\": \"CPU iowait time\",\n            \"type\": \"stat\"\n        },\n        {\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"fixedColor\": \"dark-purple\",\n                        \"mode\": \"fixed\"\n                    },\n                    \"mappings\": [],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    }\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 4,\n                \"x\": 4,\n                \"y\": 14\n            },\n            \"id\": 52,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"area\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"auto\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"General\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Number of processes\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": None,\n            \"timeShift\": None,\n            \"title\": \"Number of processes\",\n            \"type\": \"stat\"\n        },\n        {\n            \"datasource\": None,\n            \"description\": \"\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"decimals\": 0,\n                    \"mappings\": [],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"#EAB839\",\n                                \"value\": 80\n                            },\n                            {\n                                \"color\": \"red\",\n                                \"value\": 95\n                            }\n                        ]\n                    },\n                    \"unit\": \"percent\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 9,\n                \"x\": 8,\n                \"y\": 14\n            },\n            \"hideTimeOverride\": False,\n            \"id\": 15,\n            \"links\": [],\n            \"options\": {\n                \"displayMode\": \"lcd\",\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"showUnfilled\": True,\n                \"text\": {}\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"/Filesystem./\"\n                    },\n                    \"functions\": [\n                        {\n                            \"$$hashKey\": \"object:388\",\n                            \"def\": {\n                                \"category\": \"Alias\",\n                                \"defaultParams\": [\n                                    \"/(.*)/\",\n                                    \"$1\"\n                                ],\n                                \"name\": \"replaceAlias\",\n                                \"params\": [\n                                    {\n                                        \"name\": \"regexp\",\n                                        \"type\": \"string\"\n                                    },\n                                    {\n                                        \"name\": \"newAlias\",\n                                        \"type\": \"string\"\n                                    }\n                                ]\n                            },\n                            \"params\": [\n                                \"/: Space utilization/\",\n                                \"$'\"\n                            ],\n                            \"text\": \"replaceAlias(/: Space utilization/, $')\"\n                        }\n                    ],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Space utilization/\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"title\": \"Filesystem (Space utilization %)\",\n            \"transformations\": [],\n            \"type\": \"bargauge\"\n        },\n        {\n            \"datasource\": None,\n            \"description\": \"The amount of disk devices in the system\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"mode\": \"fixed\"\n                    },\n                    \"mappings\": [],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    }\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 3,\n                \"x\": 17,\n                \"y\": 14\n            },\n            \"id\": 94,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"none\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"/Disk /\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Disk utilization/\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": None,\n            \"timeShift\": None,\n            \"title\": \"Disk drives \",\n            \"transformations\": [\n                {\n                    \"id\": \"calculateField\",\n                    \"options\": {\n                        \"mode\": \"reduceRow\",\n                        \"reduce\": {\n                            \"reducer\": \"count\"\n                        },\n                        \"replaceFields\": True\n                    }\n                }\n            ],\n            \"type\": \"stat\"\n        },\n        {\n            \"datasource\": None,\n            \"description\": \"Number of users who are currently logged in\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"fixedColor\": \"dark-purple\",\n                        \"mode\": \"fixed\"\n                    },\n                    \"mappings\": [],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    }\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 4,\n                \"x\": 20,\n                \"y\": 14\n            },\n            \"id\": 95,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"area\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"auto\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"General\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"Number of logged in users\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": None,\n            \"timeShift\": None,\n            \"title\": \"Logged in Users\",\n            \"type\": \"stat\"\n        },\n        {\n            \"collapsed\": False,\n            \"datasource\": None,\n            \"gridPos\": {\n                \"h\": 1,\n                \"w\": 24,\n                \"x\": 0,\n                \"y\": 20\n            },\n            \"id\": 31,\n            \"panels\": [],\n            \"title\": \"Disks\",\n            \"type\": \"row\"\n        },\n        {\n            \"aliasColors\": {\n                \"CPU system time\": \"#e24d42\",\n                \"CPU utilization\": \"red\",\n                \"Espaço livre na partição C: % (pfree)\": \"#629E51\",\n                \"Espaço livre na partição D: % (pfree)\": \"#E5AC0E\",\n                \"Memory utilization\": \"blue\",\n                \"Used memory %\": \"#6ed0e0\",\n                \"Used memory in %\": \"#70dbed\"\n            },\n            \"bars\": False,\n            \"dashLength\": 10,\n            \"dashes\": False,\n            \"datasource\": None,\n            \"decimals\": 0,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"unit\": \"ops\"\n                },\n                \"overrides\": []\n            },\n            \"fill\": 10,\n            \"fillGradient\": 6,\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 10,\n                \"x\": 0,\n                \"y\": 21\n            },\n            \"hiddenSeries\": False,\n            \"id\": 89,\n            \"legend\": {\n                \"alignAsTable\": False,\n                \"avg\": True,\n                \"current\": False,\n                \"hideEmpty\": False,\n                \"hideZero\": False,\n                \"max\": False,\n                \"min\": False,\n                \"rightSide\": False,\n                \"show\": True,\n                \"total\": False,\n                \"values\": True\n            },\n            \"lines\": True,\n            \"linewidth\": 2,\n            \"links\": [],\n            \"NonePointMode\": \"connected\",\n            \"options\": {\n                \"alertThreshold\": True\n            },\n            \"percentage\": False,\n            \"pluginVersion\": \"7.5.7\",\n            \"pointradius\": 5,\n            \"points\": False,\n            \"renderer\": \"flot\",\n            \"repeat\": \"Disk\",\n            \"repeatDirection\": \"v\",\n            \"seriesOverrides\": [\n                {\n                    \"$$hashKey\": \"object:810\",\n                    \"alias\": \"/read rate/\",\n                    \"color\": \"#5794F2\",\n                    \"fill\": 0,\n                    \"lines\": True,\n                    \"linewidth\": 3\n                },\n                {\n                    \"$$hashKey\": \"object:811\",\n                    \"alias\": \"/write rate/\",\n                    \"color\": \"#C4162A\",\n                    \"pointradius\": 2,\n                    \"points\": True\n                }\n            ],\n            \"spaceLength\": 10,\n            \"stack\": False,\n            \"steppedLine\": False,\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"$Disk\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/write rate/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                },\n                {\n                    \"application\": {\n                        \"filter\": \"$Disk\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"hide\": False,\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/read rate/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"B\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"thresholds\": [],\n            \"timeFrom\": None,\n            \"timeRegions\": [],\n            \"timeShift\": None,\n            \"title\": \"$Disk (read/write rates)\",\n            \"tooltip\": {\n                \"shared\": True,\n                \"sort\": 0,\n                \"value_type\": \"individual\"\n            },\n            \"type\": \"graph\",\n            \"xaxis\": {\n                \"buckets\": None,\n                \"mode\": \"time\",\n                \"name\": None,\n                \"show\": True,\n                \"values\": []\n            },\n            \"yaxes\": [\n                {\n                    \"$$hashKey\": \"object:3277\",\n                    \"decimals\": 0,\n                    \"format\": \"ops\",\n                    \"label\": \"\",\n                    \"logBase\": 1,\n                    \"max\": None,\n                    \"min\": \"0\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:3278\",\n                    \"decimals\": 0,\n                    \"format\": \"none\",\n                    \"label\": \"\",\n                    \"logBase\": 1,\n                    \"max\": None,\n                    \"min\": \"0\",\n                    \"show\": False\n                }\n            ],\n            \"yaxis\": {\n                \"align\": False,\n                \"alignLevel\": None\n            }\n        },\n        {\n            \"datasource\": None,\n            \"description\": \"This item is the percentage of elapsed time that the selected disk drive was busy servicing read or writes requests.\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"decimals\": 0,\n                    \"mappings\": [],\n                    \"max\": 100,\n                    \"min\": 0,\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            },\n                            {\n                                \"color\": \"#EAB839\",\n                                \"value\": 50\n                            },\n                            {\n                                \"color\": \"red\",\n                                \"value\": 80\n                            }\n                        ]\n                    },\n                    \"unit\": \"percent\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 4,\n                \"x\": 10,\n                \"y\": 21\n            },\n            \"id\": 23,\n            \"links\": [],\n            \"options\": {\n                \"orientation\": \"auto\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"showThresholdLabels\": False,\n                \"showThresholdMarkers\": True,\n                \"text\": {}\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"repeat\": \"Disk\",\n            \"repeatDirection\": \"v\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"$Disk\"\n                    },\n                    \"functions\": [\n                        {\n                            \"$$hashKey\": \"object:976\",\n                            \"def\": {\n                                \"category\": \"Alias\",\n                                \"defaultParams\": [\n                                    \"/(.*)/\",\n                                    \"$1\"\n                                ],\n                                \"name\": \"replaceAlias\",\n                                \"params\": [\n                                    {\n                                        \"name\": \"regexp\",\n                                        \"type\": \"string\"\n                                    },\n                                    {\n                                        \"name\": \"newAlias\",\n                                        \"type\": \"string\"\n                                    }\n                                ]\n                            },\n                            \"params\": [\n                                \"/(: Disk utilization)/\",\n                                \"$'\"\n                            ],\n                            \"text\": \"replaceAlias(/(: Disk utilization)/, $')\"\n                        }\n                    ],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Disk utilization/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"timeFrom\": None,\n            \"timeShift\": None,\n            \"title\": \"$Disk (Performance)\",\n            \"type\": \"gauge\"\n        },\n        {\n            \"aliasColors\": {\n                \"C:: Total space\": \"rgb(255, 255, 255)\",\n                \"C:: Used space\": \"red\",\n                \"CPU system time\": \"#e24d42\",\n                \"Espaço livre na partição C: % (pfree)\": \"#629E51\",\n                \"Espaço livre na partição D: % (pfree)\": \"#E5AC0E\",\n                \"Used memory %\": \"#6ed0e0\"\n            },\n            \"bars\": False,\n            \"dashLength\": 10,\n            \"dashes\": False,\n            \"datasource\": None,\n            \"decimals\": 0,\n            \"description\": \"Used storage in Bytes\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"unit\": \"bytes\"\n                },\n                \"overrides\": []\n            },\n            \"fill\": 1,\n            \"fillGradient\": 4,\n            \"gridPos\": {\n                \"h\": 6,\n                \"w\": 10,\n                \"x\": 14,\n                \"y\": 21\n            },\n            \"hiddenSeries\": False,\n            \"id\": 32,\n            \"legend\": {\n                \"alignAsTable\": False,\n                \"avg\": False,\n                \"current\": True,\n                \"hideEmpty\": False,\n                \"hideZero\": False,\n                \"max\": False,\n                \"min\": False,\n                \"rightSide\": False,\n                \"show\": True,\n                \"total\": False,\n                \"values\": True\n            },\n            \"lines\": True,\n            \"linewidth\": 2,\n            \"links\": [],\n            \"NonePointMode\": \"connected\",\n            \"options\": {\n                \"alertThreshold\": True\n            },\n            \"percentage\": True,\n            \"pluginVersion\": \"7.5.7\",\n            \"pointradius\": 5,\n            \"points\": False,\n            \"renderer\": \"flot\",\n            \"repeat\": \"Filesystem\",\n            \"repeatDirection\": \"v\",\n            \"seriesOverrides\": [\n                {\n                    \"$$hashKey\": \"object:1193\",\n                    \"alias\": \"/Used space/\",\n                    \"color\": \"#F2495C\",\n                    \"dashLength\": 7,\n                    \"dashes\": True,\n                    \"fill\": 10,\n                    \"fillGradient\": 10,\n                    \"linewidth\": 4,\n                    \"spaceLength\": 4\n                },\n                {\n                    \"$$hashKey\": \"object:3296\",\n                    \"alias\": \"/Total space/\",\n                    \"color\": \"rgb(255, 255, 255)\",\n                    \"linewidth\": 4\n                }\n            ],\n            \"spaceLength\": 10,\n            \"stack\": False,\n            \"steppedLine\": False,\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"$Filesystem\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"hide\": False,\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/(Used|Total) space/\"\n                    },\n                    \"options\": {\n                        \"disableDataAlignment\": False,\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"useZabbixValueMapping\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"thresholds\": [],\n            \"timeFrom\": None,\n            \"timeRegions\": [],\n            \"timeShift\": None,\n            \"title\": \"$Filesystem (Space utilization)\",\n            \"tooltip\": {\n                \"shared\": True,\n                \"sort\": 2,\n                \"value_type\": \"individual\"\n            },\n            \"type\": \"graph\",\n            \"xaxis\": {\n                \"buckets\": None,\n                \"mode\": \"time\",\n                \"name\": None,\n                \"show\": True,\n                \"values\": []\n            },\n            \"yaxes\": [\n                {\n                    \"$$hashKey\": \"object:1664\",\n                    \"decimals\": 0,\n                    \"format\": \"bytes\",\n                    \"label\": \"\",\n                    \"logBase\": 1,\n                    \"max\": None,\n                    \"min\": \"0\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:1665\",\n                    \"decimals\": 0,\n                    \"format\": \"bytes\",\n                    \"label\": \"\",\n                    \"logBase\": 1,\n                    \"max\": None,\n                    \"min\": None,\n                    \"show\": False\n                }\n            ],\n            \"yaxis\": {\n                \"align\": True,\n                \"alignLevel\": None\n            }\n        },\n        {\n            \"collapsed\": False,\n            \"datasource\": None,\n            \"gridPos\": {\n                \"h\": 1,\n                \"w\": 24,\n                \"x\": 0,\n                \"y\": 27\n            },\n            \"id\": 41,\n            \"panels\": [],\n            \"title\": \"Network\",\n            \"type\": \"row\"\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"description\": \"\",\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"fixedColor\": \"semi-dark-green\",\n                        \"mode\": \"fixed\"\n                    },\n                    \"decimals\": 0,\n                    \"mappings\": [\n                        {\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"N/A\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    },\n                    \"unit\": \"binBps\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 7,\n                \"w\": 4,\n                \"x\": 0,\n                \"y\": 28\n            },\n            \"id\": 19,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"area\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"repeat\": \"Network\",\n            \"repeatDirection\": \"v\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"$Network\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Bits received/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"title\": \"(IN) $Network\",\n            \"type\": \"stat\"\n        },\n        {\n            \"aliasColors\": {\n                \"Incoming network traffic on vmxnet3 Ethernet Adapter #2\": \"#1f78c1\",\n                \"Outgoing network traffic on vmxnet3 Ethernet Adapter #2\": \"rgba(237, 129, 40, 0.79)\",\n                \"Outgoing network traffic on vmxnet3 Ethernet Adapter #2-WFP LightWeight Filter-0000\": \"rgba(237, 129, 40, 0.89)\"\n            },\n            \"bars\": False,\n            \"dashLength\": 10,\n            \"dashes\": False,\n            \"datasource\": None,\n            \"decimals\": 0,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"unit\": \"binBps\"\n                },\n                \"overrides\": []\n            },\n            \"fill\": 5,\n            \"fillGradient\": 3,\n            \"gridPos\": {\n                \"h\": 7,\n                \"w\": 16,\n                \"x\": 4,\n                \"y\": 28\n            },\n            \"hiddenSeries\": False,\n            \"id\": 18,\n            \"legend\": {\n                \"alignAsTable\": True,\n                \"avg\": False,\n                \"current\": True,\n                \"hideEmpty\": True,\n                \"hideZero\": True,\n                \"max\": False,\n                \"min\": False,\n                \"rightSide\": True,\n                \"show\": False,\n                \"sideWidth\": None,\n                \"total\": False,\n                \"values\": True\n            },\n            \"lines\": True,\n            \"linewidth\": 3,\n            \"links\": [],\n            \"NonePointMode\": \"connected\",\n            \"options\": {\n                \"alertThreshold\": True\n            },\n            \"percentage\": False,\n            \"pluginVersion\": \"7.5.7\",\n            \"pointradius\": 5,\n            \"points\": False,\n            \"renderer\": \"flot\",\n            \"repeat\": \"Network\",\n            \"repeatDirection\": \"v\",\n            \"seriesOverrides\": [\n                {\n                    \"$$hashKey\": \"object:3135\",\n                    \"alias\": \"/Bits received/\",\n                    \"color\": \"#56A64B\"\n                },\n                {\n                    \"$$hashKey\": \"object:3136\",\n                    \"alias\": \"/Bits sent/\",\n                    \"color\": \"#8F3BB8\",\n                    \"transform\": \"negative-Y\"\n                }\n            ],\n            \"spaceLength\": 10,\n            \"stack\": False,\n            \"steppedLine\": False,\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"$Network\"\n                    },\n                    \"functions\": [\n                        {\n                            \"$$hashKey\": \"object:2368\",\n                            \"def\": {\n                                \"category\": \"Alias\",\n                                \"defaultParams\": [\n                                    \"/(.*)/\",\n                                    \"$1\"\n                                ],\n                                \"name\": \"replaceAlias\",\n                                \"params\": [\n                                    {\n                                        \"name\": \"regexp\",\n                                        \"type\": \"string\"\n                                    },\n                                    {\n                                        \"name\": \"newAlias\",\n                                        \"type\": \"string\"\n                                    }\n                                ]\n                            },\n                            \"params\": [\n                                \"/Interface /\",\n                                \"$`\"\n                            ],\n                            \"text\": \"replaceAlias(/Interface /, $`)\"\n                        }\n                    ],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Bits (received|sent)/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"thresholds\": [],\n            \"timeFrom\": None,\n            \"timeRegions\": [],\n            \"timeShift\": None,\n            \"title\": \"$Network\",\n            \"tooltip\": {\n                \"shared\": True,\n                \"sort\": 0,\n                \"value_type\": \"individual\"\n            },\n            \"type\": \"graph\",\n            \"xaxis\": {\n                \"buckets\": None,\n                \"mode\": \"time\",\n                \"name\": None,\n                \"show\": True,\n                \"values\": []\n            },\n            \"yaxes\": [\n                {\n                    \"$$hashKey\": \"object:1888\",\n                    \"decimals\": None,\n                    \"format\": \"bps\",\n                    \"label\": None,\n                    \"logBase\": 1,\n                    \"max\": None,\n                    \"min\": None,\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:1889\",\n                    \"format\": \"binBps\",\n                    \"label\": None,\n                    \"logBase\": 1,\n                    \"max\": None,\n                    \"min\": None,\n                    \"show\": True\n                }\n            ],\n            \"yaxis\": {\n                \"align\": False,\n                \"alignLevel\": None\n            }\n        },\n        {\n            \"cacheTimeout\": None,\n            \"datasource\": None,\n            \"fieldConfig\": {\n                \"defaults\": {\n                    \"color\": {\n                        \"fixedColor\": \"semi-dark-purple\",\n                        \"mode\": \"fixed\"\n                    },\n                    \"decimals\": 0,\n                    \"mappings\": [\n                        {\n                            \"id\": 0,\n                            \"op\": \"=\",\n                            \"text\": \"N/A\",\n                            \"type\": 1,\n                            \"value\": \"None\"\n                        }\n                    ],\n                    \"thresholds\": {\n                        \"mode\": \"absolute\",\n                        \"steps\": [\n                            {\n                                \"color\": \"green\",\n                                \"value\": None\n                            }\n                        ]\n                    },\n                    \"unit\": \"binBps\"\n                },\n                \"overrides\": []\n            },\n            \"gridPos\": {\n                \"h\": 7,\n                \"w\": 4,\n                \"x\": 20,\n                \"y\": 28\n            },\n            \"id\": 21,\n            \"interval\": None,\n            \"links\": [],\n            \"maxDataPoints\": 100,\n            \"options\": {\n                \"colorMode\": \"value\",\n                \"graphMode\": \"area\",\n                \"justifyMode\": \"auto\",\n                \"orientation\": \"horizontal\",\n                \"reduceOptions\": {\n                    \"calcs\": [\n                        \"lastNotNull\"\n                    ],\n                    \"fields\": \"\",\n                    \"values\": False\n                },\n                \"text\": {},\n                \"textMode\": \"value\"\n            },\n            \"pluginVersion\": \"7.5.7\",\n            \"repeat\": \"Network\",\n            \"repeatDirection\": \"v\",\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"$Network\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"/Bits sent/\"\n                    },\n                    \"options\": {\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 0,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"title\": \"(OUT) $Network\",\n            \"type\": \"stat\"\n        },\n        {\n            \"collapsed\": False,\n            \"datasource\": None,\n            \"gridPos\": {\n                \"h\": 1,\n                \"w\": 24,\n                \"x\": 0,\n                \"y\": 35\n            },\n            \"id\": 29,\n            \"panels\": [],\n            \"title\": \"Problems\",\n            \"type\": \"row\"\n        },\n        {\n            \"ackEventColor\": \"rgb(56, 219, 156)\",\n            \"ackField\": True,\n            \"ageField\": True,\n            \"customLastChangeFormat\": False,\n            \"datasource\": None,\n            \"descriptionAtNewLine\": False,\n            \"descriptionField\": True,\n            \"fieldConfig\": {\n                \"defaults\": {},\n                \"overrides\": []\n            },\n            \"fontSize\": \"120%\",\n            \"gridPos\": {\n                \"h\": 12,\n                \"w\": 24,\n                \"x\": 0,\n                \"y\": 36\n            },\n            \"highlightBackground\": True,\n            \"highlightNewEvents\": True,\n            \"highlightNewerThan\": \"1h\",\n            \"hostField\": False,\n            \"hostGroups\": False,\n            \"hostProxy\": False,\n            \"hostTechNameField\": False,\n            \"id\": 17,\n            \"lastChangeFormat\": \"\",\n            \"layout\": \"table\",\n            \"limit\": 100,\n            \"links\": [],\n            \"markAckEvents\": True,\n            \"okEventColor\": \"rgb(56, 189, 113)\",\n            \"pageSize\": 10,\n            \"problemTimeline\": True,\n            \"resizedColumns\": [\n                {\n                    \"id\": \"lastchange\",\n                    \"value\": 187\n                },\n                {\n                    \"id\": \"age\",\n                    \"value\": 125\n                },\n                {\n                    \"id\": \"ack\",\n                    \"value\": 207\n                },\n                {\n                    \"id\": \"description\",\n                    \"value\": 899\n                }\n            ],\n            \"schemaVersion\": 8,\n            \"severityField\": True,\n            \"showTags\": False,\n            \"sortProblems\": \"lastchange\",\n            \"statusField\": False,\n            \"statusIcon\": True,\n            \"targets\": [\n                {\n                    \"application\": {\n                        \"filter\": \"/.*/\"\n                    },\n                    \"functions\": [],\n                    \"group\": {\n                        \"filter\": \"$Group\"\n                    },\n                    \"host\": {\n                        \"filter\": \"$Host\"\n                    },\n                    \"item\": {\n                        \"filter\": \"\"\n                    },\n                    \"options\": {\n                        \"acknowledged\": 2,\n                        \"hostProxy\": False,\n                        \"hostsInMaintenance\": False,\n                        \"limit\": 1001,\n                        \"minSeverity\": 0,\n                        \"severities\": [\n                            0,\n                            1,\n                            2,\n                            3,\n                            4,\n                            5\n                        ],\n                        \"showDisabledItems\": False,\n                        \"skipEmptyValues\": False,\n                        \"sortProblems\": \"default\"\n                    },\n                    \"proxy\": {\n                        \"filter\": \"\"\n                    },\n                    \"queryType\": 5,\n                    \"refId\": \"A\",\n                    \"resultFormat\": \"time_series\",\n                    \"showProblems\": \"problems\",\n                    \"table\": {\n                        \"skipEmptyValues\": False\n                    },\n                    \"tags\": {\n                        \"filter\": \"\"\n                    },\n                    \"trigger\": {\n                        \"filter\": \"\"\n                    },\n                    \"triggers\": {\n                        \"acknowledged\": 2,\n                        \"count\": True,\n                        \"minSeverity\": 3\n                    }\n                }\n            ],\n            \"title\": \"Problems\",\n            \"triggerSeverity\": [\n                {\n                    \"$$hashKey\": \"object:738\",\n                    \"color\": \"rgb(108, 108, 108)\",\n                    \"priority\": 0,\n                    \"severity\": \"Not classified\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:739\",\n                    \"color\": \"rgb(120, 158, 183)\",\n                    \"priority\": 1,\n                    \"severity\": \"Information\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:740\",\n                    \"color\": \"rgb(175, 180, 36)\",\n                    \"priority\": 2,\n                    \"severity\": \"Warning\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:741\",\n                    \"color\": \"rgb(255, 137, 30)\",\n                    \"priority\": 3,\n                    \"severity\": \"Average\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:742\",\n                    \"color\": \"rgb(255, 101, 72)\",\n                    \"priority\": 4,\n                    \"severity\": \"High\",\n                    \"show\": True\n                },\n                {\n                    \"$$hashKey\": \"object:743\",\n                    \"color\": \"rgb(215, 0, 0)\",\n                    \"priority\": 5,\n                    \"severity\": \"Disaster\",\n                    \"show\": True\n                }\n            ],\n            \"type\": \"alexanderzobnin-zabbix-triggers-panel\"\n        }\n    ],\n    \"refresh\": \"30s\",\n    \"schemaVersion\": 27,\n    \"style\": \"dark\",\n    \"tags\": [\n        \"zabbix\"\n    ],\n    \"templating\": {\n        \"list\": [\n            {\n            \"allFormat\": \"regex values\",\n            \"allValue\": None,\n            \"current\": {\n              \"selected\": False,\n              \"text\": \"$Group\",\n              \"value\": \"$Group\"\n            },\n            \"datasource\": None,\n            \"definition\": \"\",\n            \"description\": None,\n            \"error\": None,\n            \"hide\": 0,\n            \"includeAll\": False,\n            \"label\": \"Group\",\n            \"multi\": False,\n            \"multiFormat\": \"glob\",\n            \"name\": \"Group\",\n            \"options\": [],\n            \"query\": \"*\",\n            \"refresh\": 1,\n            \"refresh_on_load\": False,\n            \"regex\": \"\",\n            \"skipUrlSync\": False,\n            \"sort\": 0,\n            \"tagValuesQuery\": \"\",\n            \"tags\": [],\n            \"tagsQuery\": \"\",\n            \"type\": \"query\",\n            \"useTags\": False\n          },\n            {\n            \"allFormat\": \"glob\",\n            \"allValue\": None,\n            \"current\": {\n              \"selected\": False,\n              \"text\": \"$Host\",\n              \"value\": \"$Host\"\n            },\n            \"datasource\": None,\n            \"definition\": \"\",\n            \"description\": None,\n            \"error\": None,\n            \"hide\": 0,\n            \"includeAll\": False,\n            \"label\": \"Host\",\n            \"multi\": False,\n            \"multiFormat\": \"glob\",\n            \"name\": \"Host\",\n            \"options\": [],\n            \"query\": \"$Group.*\",\n            \"refresh\": 1,\n            \"refresh_on_load\": False,\n            \"regex\": \"\",\n            \"skipUrlSync\": False,\n            \"sort\": 0,\n            \"tagValuesQuery\": \"\",\n            \"tags\": [],\n            \"tagsQuery\": \"\",\n            \"type\": \"query\",\n            \"useTags\": False\n          },\n            {\n            \"allFormat\": \"regex values\",\n            \"allValue\": None,\n            \"current\": {\n              \"selected\": False,\n              \"text\": \"All\",\n              \"value\": \"$__all\"\n            },\n            \"datasource\": None,\n            \"definition\": \"\",\n            \"description\": None,\n            \"error\": None,\n            \"hide\": 0,\n            \"hideLabel\": False,\n            \"includeAll\": True,\n            \"label\": \"Network interface\",\n            \"multi\": True,\n            \"multiFormat\": \"regex values\",\n            \"name\": \"netif\",\n            \"options\": [],\n            \"query\": \"*.$host.Network interfaces.*\",\n            \"refresh\": 1,\n            \"refresh_on_load\": False,\n            \"regex\": \"/(?:Incoming|Outgoing) network traffic on (.*)/\",\n            \"skipUrlSync\": False,\n            \"sort\": 0,\n            \"tagValuesQuery\": \"\",\n            \"tags\": [],\n            \"tagsQuery\": \"\",\n            \"type\": \"query\",\n            \"useTags\": False\n          }\n        ]\n    },\n    \"time\": {\n        \"from\": \"now-6h\",\n        \"to\": \"now\"\n    },\n    \"timepicker\": {\n        \"refresh_intervals\": [\n            \"5s\",\n            \"10s\",\n            \"30s\",\n            \"1m\",\n            \"5m\",\n            \"15m\",\n            \"30m\",\n            \"1h\",\n            \"2h\",\n            \"1d\"\n        ],\n        \"time_options\": [\n            \"5m\",\n            \"15m\",\n            \"1h\",\n            \"6h\",\n            \"12h\",\n            \"24h\",\n            \"2d\",\n            \"7d\",\n            \"30d\"\n        ]\n    },\n    \"timezone\": \"\",\n    \"title\": \"内置监控大屏\",\n    \"uid\": \"built_in_monitor_dashboard\",\n    \"version\": 2\n}\n\nrequest_dict = {\n    \"dashboard\": default_monitor_dashboard_dict,\n    \"folderId\": 0,\n    \"overwrite\": False\n}\n"
  },
  {
    "path": "saas/deploy.py",
    "content": "\"\"\"\r\n脚本说明：部署SaaS脚本\r\n文件命名要求：必须为 app_code + \"-\" + paas_domain + \"-\" + version + \".tar.gz\"\r\n执行说明：python deploy.py --domain [paas_domain] --username [paas_admin_user_name] --password [paas_admin_user_password] --file_name [file1] [file2] [file3]\r\n      例：python deploy.py --domain 192.168.56.11 --file_name rbac-192.168.56.11-1.1.4.tar.gz workbench-192.168.56.11-1.1.4.tar.gz\r\n参数说明：\r\n    domain  必填\r\n    username   非必填    未填写会使用 line 165  default配置\r\n    password   非必填    未填写会使用 line 166  default配置\r\n    file_name  非必填    未填写则会扫描当前文件夹下所有符合要求的文件\r\n账号说明：必须使用权限为管理员的账号，普通账号不能使用\r\n第三方依赖：requests==2.25.0\r\n\"\"\"\r\nimport json\r\nimport os\r\nimport sys\r\nimport time\r\nimport requests\r\nimport re\r\nimport argparse\r\n\r\n# 去除本地python3 windows环境报错\r\nimport urllib3\r\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\r\n\r\n\r\nHTTP_SCHEMA = os.environ.get(\"HTTP_SCHEMA\", \"https\")\r\n\r\n\r\nclass Deploy(object):\r\n    def __init__(self, paas_domain, file_name=[], username=\"\", password=\"\", verify_code=\"\"):\r\n        self.paas_domain = paas_domain\r\n        self.username = username\r\n        self.password = password\r\n        self.session = requests.Session()\r\n        self.session.headers.update({'referer': \"%s://%s\" % (HTTP_SCHEMA, paas_domain)})\r\n        self.session.verify = False\r\n        self.file_list = self.get_upload_file(file_name)\r\n        self.login_url = \"{}://{}/login/\".format(HTTP_SCHEMA, self.paas_domain)\r\n        self.status, self.token, self.csrfmiddlewaretoken = self.login(verify_code)\r\n\r\n    def login(self, verify_code=\"\"):\r\n        try:\r\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\r\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\r\n            try:\r\n                res_json = resp.json()\r\n                if resp.status_code != 200:\r\n                    return False, res_json, \"\"\r\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\r\n                code = res_json.get(\"code\")\r\n                message = res_json.get(\"message\")\r\n                if bk_token:\r\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\r\n                elif code != 200:\r\n                    return False, message, \"\"\r\n                else:\r\n                    return False, res_json, \"\"\r\n            except Exception as e:\r\n                return False, str(resp.content.decode()), \"\"\r\n        except Exception as e:\r\n            return False, str(e), \"\"\r\n\r\n    # 获取上传文件\r\n    def get_upload_file(self, file_name_list):\r\n        if file_name_list:\r\n            file_list = [os.path.join(os.path.dirname(os.path.abspath(__file__)), file_name) for file_name in file_name_list if os.path.isfile(os.path.join(os.path.dirname(os.path.abspath(__file__)), file_name)) and file_name.endswith(\"tar.gz\") and len(file_name.split(\"-\")) == 3]\r\n        else:\r\n            file_list = [os.path.join(os.path.dirname(os.path.abspath(__file__)), file) for file in os.listdir(os.path.dirname(os.path.abspath(__file__))) if file.endswith(\"tar.gz\") and len(file.split(\"-\")) == 3]\r\n        if not file_list:\r\n            print(\"未发现有效文件\")\r\n            sys.exit(1)\r\n        return file_list\r\n\r\n    # 部署\r\n    def deploy(self):\r\n        for file_path in self.file_list:\r\n            _, file_name = os.path.split(file_path)\r\n            app_code = file_name.split(\"-\")[0]\r\n            check_res = self.check_app_code(app_code)\r\n            if check_res:       # 第一次部署\r\n                app_code = \"0\"\r\n            else:               # 第二次部署\r\n                app_code = app_code\r\n            status, version = self.upload_file(file_path, app_code)\r\n            if not status or not version:\r\n                continue\r\n            url_app_code = app_code if app_code else \"0\"\r\n            deploy_url = \"{}://{}/saas/{}/release/online/{}/\".format(HTTP_SCHEMA, self.paas_domain, url_app_code, version)\r\n            res = self.session.post(deploy_url, json={\"csrfmiddlewaretoken\": self.csrfmiddlewaretoken},\r\n                                    verify=False, headers={\"X-CSRFToken\": self.session.cookies.get(\"bk_csrftoken\")})\r\n            if res.status_code == 200:\r\n                event_id = res.json().get(\"event_id\")\r\n                if event_id:\r\n                    print(\"开始部署: {}\".format(file_name.split(\"-\")[0]))\r\n                    self.get_result(event_id, file_name.split(\"-\")[0])\r\n                else:\r\n                    print(\"部署失败，请手工部署: {}\".format(file_name))\r\n                    print(\"失败信息: {}\".format(res.json().get(\"message\")))\r\n                    if url_app_code == \"0\":\r\n                        self.delete_first_error_saas(file_name.split(\"-\")[0])\r\n\r\n    # 用于删除第一次部署时，部署错误造成的遗留数据\r\n    def delete_first_error_saas(self, app_code):\r\n        delete_url = \"{}://{}/saas/{}/delete/\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n        res = self.session.post(delete_url, json={\"csrfmiddlewaretoken\": self.csrfmiddlewaretoken},\r\n                            verify=False, headers={\"X-CSRFToken\": self.session.cookies.get(\"bk_csrftoken\")})\r\n\r\n    # 轮询部署状态\r\n    def get_result(self, event_id, app_code):\r\n        while True:\r\n            time.sleep(2)\r\n            url = \"{}://{}/release/{}/task/\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n            reqs = self.session.get(url, params={\r\n                \"event_id\": event_id,\r\n                \"app_state\": 1\r\n            })\r\n            if reqs.json().get(\"result\"):\r\n                if reqs.json().get(\"data\").get(\"status\") == 1:\r\n                    print(\"部署完毕: {}\".format(app_code))\r\n                    break\r\n                elif reqs.json().get(\"data\").get(\"status\") == 0:\r\n                    print(\"部署失败: {}\".format(app_code))\r\n                    break\r\n\r\n    # 检查APPCODE是否存在，存在的话即为：已经部署成功，后续部署应为更新部署\r\n    def check_app_code(self, app_code):\r\n        check_url = \"{}://{}/app/check/app_code/?app_code={}\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n        res = self.session.get(check_url)\r\n        try:\r\n            json_res = res.json()\r\n            return json_res.get(\"result\")\r\n        except Exception:\r\n            print(\"Paas服务异常\")\r\n            sys.exit(1)\r\n\r\n    # 上传SaaS包\r\n    def upload_file(self, file_path, app_code=\"0\"):\r\n        print(\"开始上传文件: {}\".format(os.path.split(file_path)[-1]))\r\n        upload_url = \"{}://{}/saas/{}/upload/\".format(HTTP_SCHEMA, self.paas_domain, app_code)\r\n        upload_form = {\r\n            \"saas_file\": (os.path.split(file_path)[-1], open(file_path, 'rb'), \"application/gzip\"),\r\n        }\r\n        res = self.session.post(upload_url, json={\"csrfmiddlewaretoken\": self.csrfmiddlewaretoken}, files=upload_form,\r\n                                verify=False, headers={\"X-CSRFToken\": self.session.cookies.get(\"bk_csrftoken\")})\r\n        res.encoding = 'utf-8'\r\n        if res.status_code == 200:\r\n            res_text = res.text.encode('utf-8').decode('utf-8')\r\n            search_upload_info = re.search(r\"></i>.*?</span>\", res_text)\r\n            search_version_info = re.search(r\"saas_app_version_id\\\"\\)\\.innerHTML=\\\".*?\\\"\", res_text)\r\n            if search_upload_info and search_version_info:\r\n                if search_upload_info.group()[5: -7].strip() == \"上传成功\":\r\n                    print(\"{} 上传成功\".format(os.path.split(file_path)[-1]))\r\n                    return True, search_version_info.group()[33: -1]\r\n                else:\r\n                    print(search_upload_info.group()[5: -7].strip())\r\n                    return False, None\r\n        else:\r\n            print(\"Paas服务异常，请手工上传\")\r\n            return False, None\r\n\r\n\r\n# 增加脚本参数\r\ndef add_parameter():\r\n    parameter = argparse.ArgumentParser()\r\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\r\n    parameter.add_argument(\"--username\", help=\"Admin user username.\", default=\"admin\")\r\n    parameter.add_argument(\"--password\", help=\"Admin user password.\", default=\"admin\")\r\n    parameter.add_argument(\"--file_name\", help=\"Deploy file_name.\", nargs='*', type=str)\r\n    parameter.parse_args()\r\n    return parameter\r\n\r\nif __name__ == '__main__':\r\n    parameter = add_parameter()\r\n    options = parameter.parse_args()\r\n    domain = options.domain\r\n    username = options.username\r\n    password = options.password\r\n    file_name = options.file_name\r\n    dep = Deploy(domain, file_name, username, password)\r\n    dep.deploy()\r\n"
  },
  {
    "path": "saas/engine-server-script.py",
    "content": "#!/usr/bin/env python3\n# coding:utf8\nimport json\n\nimport requests\nimport sys\nimport argparse\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n        self.session.cookies[\"bk_csrftoken\"] = self.csrfmiddlewaretoken\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def add_engine_server(self, server_ip, server_port, app_port, server_cate):\n        API = self.paas_domain + \"/engine/server/\"\n        try:\n            server_form = {\n                'csrfmiddlewaretoken': self.csrfmiddlewaretoken,\n                \"server_ip\": server_ip,\n                \"server_port\": server_port,\n                \"app_port\": app_port,\n                \"server_cate\": server_cate\n            }\n\n            res = self.session.post(API, data=server_form, verify=False)\n            if res.status_code == 200 and res.json().get(\"code\") == 200:\n                return True, res.json()\n            else:\n                return True, res.json()\n        except Exception as e:\n            s = \"Add Engine Server, error info: {}.\".format(str(e))\n            return False, {'result': False, \"message\": s}\n\n    def active_engine_server(self, server_id):\n        API = self.paas_domain + \"/engine/server/active/\"\n        try:\n            server_form = {\n                'csrfmiddlewaretoken': self.csrfmiddlewaretoken,\n                \"server_id\": server_id\n            }\n            res = self.session.post(API, data=server_form, verify=False)\n            if res.status_code == 200 and res.json().get(\"code\") == 200:\n                return True, res.json()\n            else:\n                return True, res.json()\n        except Exception as e:\n            s = \"Active Engine Server, error info: {}.\".format(str(e))\n            return False, {'result': False, \"message\": s}\n\n\ndef run(options):\n    # run_env =  \"prod\"\n    run_env =  \"dev\"\n    api_object = OpsAnyApi(\n        options.domain,\n        options.paas_username,\n        options.paas_password,\n        run_env\n    )\n    if options.type == \"active\":\n        status, message = api_object.active_engine_server(options.server_id)\n        print(json.dumps(message, ensure_ascii=False))\n    else:\n        status, message = api_object.add_engine_server(options.server_ip,options.server_port,options.app_port,options.server_cate )\n        print(json.dumps(message, ensure_ascii=False))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.add_argument(\"--server_ip\", help=\"server_ip\", required=False)\n    parameter.add_argument(\"--server_port\", help=\"server_port\", required=False)\n    parameter.add_argument(\"--app_port\", help=\"app_port\", required=False)\n    parameter.add_argument(\"--server_id\", help=\"server_id\", required=False)\n    parameter.add_argument(\"--server_cate\", help=\"server_cate(tapp | app)\", required=False)\n    parameter.add_argument(\"--type\", help=\"type(add | active)\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    run(options)\n\n\"\"\"\npython3 engine-server-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --server_ip 192.168.0.169 --server_port 8081 --app_port 8082 --server_cate tapp --type add\npython3 engine-server-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --server_id 2 --type active\n\"\"\""
  },
  {
    "path": "saas/init-ce-base.py",
    "content": "import os\n\nimport requests\nimport json\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def update_user_info(self, user_id, user_info):\n        API = \"/login/accounts/user/{}/\".format(user_id)\n        self.session.cookies[\"bk_token\"] = self.token\n        headers = {\n            \"X-CSRFToken\": self.csrfmiddlewaretoken\n        }\n        URL = self.paas_domain + API\n        resp = self.session.put(URL, data=user_info, verify=False, headers=headers)\n        if resp.status_code == 200:\n            if resp.json().get(\"result\"):\n                return \"更新成功\", True\n            return resp.json().get(\"message\"), False\n        return \"服务器错误\", False\n\n    def create_controller_salt(self, create_data):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/control/api/control/v0_1/controller/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json=create_data, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"控制器创建成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def sync_dashboard(self):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/monitor/api/monitor/v0_1/api/grafana/v0_2/dashboard/?data_type=list\"\n        url = self.paas_domain + API\n        res = self.session.get(url, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"同步Dashboard成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def get_admin_user_id(self):\n        API = \"/login/api/v2/get_batch_users/\"\n        URL = self.paas_domain + API\n        data = {\n            \"bk_username_list\": [self.username],\n            \"bk_token\": self.token\n        }\n        response = self.session.post(url=URL, data=json.dumps(data), verify=False)\n        data = response.json()\n        if data.get(\"result\"):\n            return data.get(\"data\").get(self.username).get(\"bk_username\"), data.get(\"data\").get(self.username).get(\"id\")\n        else:\n            return None, \"获取用户ID失败\"\n\n    def init_celery_queue(self, queue):\n        API = \"/o/control/api/control/v0_1/celery-queue-init/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json={\"init_data_list\": queue}, verify=False)\n        try:\n            res_data = res.json()\n        except Exception:\n            return False, \"后台任务初始化中 API连接不成功，请检查API地址{}\".format(res.content.decode())\n        if res.status_code == 200:\n            if str(res_data.get(\"code\", \"\")) == \"200\":\n                return True, \"后台任务初始化成功！\"\n            else:\n                return False, res_data.get(\"message\")\n        else:\n            return False, \"后台任务初始化中 API连接不成功，请检查API地址{}\".format(url)\n\n\nclass Run:\n    def __init__(self, paas_domain, private_ip, paas_username, paas_password, proxy_url, proxy_public_url, proxy_token):\n        self.paas_domain = self.handle_domain(paas_domain)\n        self.private_ip = self.handle_domain(private_ip)\n        self.paas_username = paas_username if paas_username else default_paas_username\n        self.paas_password = paas_password if paas_password else default_paas_password\n        self.opsany_api_obj = OpsAnyApi(\"https://\" + self.paas_domain, self.paas_username, self.paas_password)\n        self.proxy_url = proxy_url\n        self.proxy_public_url = proxy_public_url\n        self.proxy_token = proxy_token\n\n    def handle_domain(self, domain: str):\n        \"\"\"\n        http://xxx.xxx.xx/\n        https://xxx.xxx.xx/\n        xxx.xxx.xxx.xxx\n        xxxx.xxxx.xxx\n        -> xxx.xxx.xxx.xxx\n        \"\"\"\n        if domain.startswith(\"http://\") or domain.startswith(\"https://\"):\n            domain = domain.split(\"http://\")[-1] if domain.startswith(\"http://\") else domain.split(\"https://\")[-1]\n            if len(domain.split(\"/\")) > 1:\n                domain = domain.split(\"/\", 1)[0]\n                return domain\n            else:\n                return domain\n        else:\n            return domain\n\n    def create_controller_salt(self):\n        controller_dict_v2 = {\n            \"name\": \"默认控制器\",\n            \"type\": \"本地\",\n            # TEST DATA 8011 -> 8005\n            \"proxy_url\": self.proxy_url,\n            \"proxy_public_url\": self.proxy_public_url,\n            \"proxy_token\": self.proxy_token,\n        }\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.create_controller_salt(controller_dict_v2)\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n    def update_admin_user(self):\n        bk_token = self.opsany_api_obj.token\n        usename, user_id_or_error_message = self.opsany_api_obj.get_admin_user_id()\n        if not usename:\n            return False, user_id_or_error_message\n        user_info = {\n            \"username\": \"admin\",\n            \"chname\": \"管理员\",\n            \"phone\": \"12345678910\",\n            \"email\": \"123456@qq.com\",\n            \"role\": 1\n        }\n        message, status = self.opsany_api_obj.update_user_info(user_id_or_error_message, user_info)\n        return status, message\n\n    def init_celery_queue(self):\n        saas_queue = [\n            (\"统一权限\", \"rbac\", \"celery\", \"1\"),\n            (\"工作台\", \"workbench\", \"celery\", \"2\"),\n            (\"资源平台\", \"cmdb\", \"celery\", \"3\"),\n            (\"管控平台\", \"control\", \"celery\", \"4\"),\n            (\"作业平台\", \"job\", \"celery\", \"5\"),\n            (\"基础监控\", \"monitor\", \"celery\", \"6\"),\n            (\"云管平台\", \"cmp\", \"celery\", \"7\"),\n            (\"堡垒机\", \"bastion\", \"celery\", \"8\"),\n            (\"应用平台\", \"devops\", \"celery\", \"9\"),\n            (\"制品仓库\", \"repo\", \"celery\", \"17\"),\n            (\"流水线\", \"pipeline\", \"celery\", \"17\"),\n            (\"持续部署\", \"deploy\", \"celery\", \"18\"),\n        ]\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.init_celery_queue(saas_queue)\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n\ndef start(paas_domain, private_ip, paas_username, paas_password, proxy_url, proxy_public_url, proxy_token):\n    run_obj = Run(paas_domain, private_ip, paas_username, paas_password, proxy_url, proxy_public_url, proxy_token)\n    # 创建控制器\n    create_controller_status, create_controller_message = run_obj.create_controller_salt()\n    print(\"[SUCCESS] Create controller success\") if create_controller_status else \\\n        print(\"[ERROR] Create controller error, error info: {}\".format(create_controller_message))\n\n    # 更新用户admin用户信息\n    update_admin_user_info_status, update_admin_user_info_message = run_obj.update_admin_user()\n    print(\"[SUCCESS] Update admin user info success\") if update_admin_user_info_status else \\\n        print(\"[ERROR] Update admin user info error, error info: {}\".format(update_admin_user_info_message))\n\n    # 更新管控后台任务\n    init_queue_status, init_queue_info_message = run_obj.init_celery_queue()\n    print(\"[SUCCESS] Init Control Celery Queue info success\") if init_queue_status else \\\n        print(\"[ERROR] Init Control Celery Queue info error, error info: {}\".format(init_queue_info_message))\n    print(\"[SUCCESS] ALL complete\")\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--private_ip\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--proxy_url\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--proxy_public_url\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--proxy_token\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=False)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    default_paas_username = \"admin\"\n    default_paas_password = \"admin\"\n    start(\n        options.domain,\n        options.private_ip,\n        options.paas_username,\n        options.paas_password,\n        options.proxy_url,\n        options.proxy_public_url,\n        options.proxy_token,\n    )\n\n\n\"\"\"\n# 初始化 用户 控制器 任务队列\npython3 init-ce-base.py --domain 192.168.56.11 --private_ip 192.168.56.11 --paas_username admin --paas_password Ops525df452 --proxy_url https://192.168.56.11:8011 --proxy_public_url https://192.168.56.11:8011 --proxy_token ed4158dfd-85df-956d-985d-58d98er41fr5\n\n\"\"\"\n\n"
  },
  {
    "path": "saas/init-ce-devops.py",
    "content": "#! /usr/bin/python3\n# -*- coding: utf8 -*-\n\"\"\"\n执行前请执行\n/bin/cp -r ../paas-ce/saas/saas-logo/* /opt/opsany/uploads/workbench/icon/\n/bin/cp -r ../paas-ce/saas/saas-logo/* /opt/opsany-paas/paas-ce/paas/paas/media/applogo/\n\"\"\"\n\n\nimport time\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass InitData:\n    # 导航分组\n    NAV_GROUP = [\n        {\n            \"group_name\": \"DevOps\",\n            \"group_language\": {\n                \"chinese_simplified\": \"DevOps\",\n                \"chinese_traditional\": \"DevOps\",\n                \"english\": \"DevOps\"\n            },\n            \"nav_list\": [\n                {\n                    \"nav_name\": \"应用平台\",\n                    \"nav_code\": \"devops\",\n                    \"nav_url\": \"/o/devops/\",\n                    \"describe\": \"应用DevOps平台\",\n                    \"nav_describe_language\": {\n                        \"chinese_simplified\": \"应用DevOps平台\",\n                        \"chinese_traditional\": \"應用DevOps平台\",\n                        \"english\": \"DevOps Platform\"\n                    },\n                    \"group_name\": \"应用管理\",\n                    \"icon_name\": \"devops.png\",\n                    \"nav_language\": {\n                        \"chinese_simplified\": \"应用平台\",\n                        \"chinese_traditional\": \"應用平台\",\n                        \"english\": \"Devops\"\n                    },\n                },\n                {\n                    \"nav_name\": \"流水线\",\n                    \"nav_code\": \"pipeline\",\n                    \"nav_url\": \"/o/pipeline/\",\n                    \"describe\": \"流水线编排\",\n                    \"nav_describe_language\": {\n                        \"chinese_simplified\": \"流水线编排\",\n                        \"chinese_traditional\": \"流水線编排\",\n                        \"english\": \"Pipeline Orchestration\"\n                    },\n                    \"group_name\": \"应用管理\",\n                    \"icon_name\": \"pipeline.png\",\n                    \"nav_language\": {\n                        \"chinese_simplified\": \"流水线\",\n                        \"chinese_traditional\": \"流水線\",\n                        \"english\": \"Pipeline\"\n                    },\n                },\n                {\n                    \"nav_name\": \"持续部署\",\n                    \"nav_code\": \"deploy\",\n                    \"nav_url\": \"/o/deploy/\",\n                    \"describe\": \"部署编排灵活\",\n                    \"nav_describe_language\": {\n                        \"chinese_simplified\": \"部署编排灵活\",\n                        \"chinese_traditional\": \"部署編排靈活\",\n                        \"english\": \"Deployment Orchestration\"\n                    },\n                    \"group_name\": \"应用管理\",\n                    \"icon_name\": \"deploy.png\",\n                    \"nav_language\": {\n                        \"chinese_simplified\": \"持续部署\",\n                        \"chinese_traditional\": \"持續部署\",\n                        \"english\": \"Deploy\"\n                    },\n                },\n                {\n                    \"nav_name\": \"制品仓库\",\n                    \"nav_code\": \"repo\",\n                    \"nav_url\": \"/o/repo/\",\n                    \"describe\": \"应用制品仓库\",\n                    \"nav_describe_language\": {\n                        \"chinese_simplified\": \"应用制品仓库\",\n                        \"chinese_traditional\": \"應用建置成品倉庫\",\n                        \"english\": \"Application Repository\"\n                    },\n                    \"group_name\": \"应用管理\",\n                    \"icon_name\": \"repo.png\",\n                    \"nav_language\": {\n                        \"chinese_simplified\": \"制品仓库\",\n                        \"chinese_traditional\": \"制品仓库\",\n                        \"english\": \"Repo\"\n                    },\n                },\n            ]\n        }\n    ]\n    \n    # 初始化业务树\n    DEFAULT_BUSINESS_TREE = [\n            {\n                \"BUSINESS_name\": \"default\",\n                \"BUSINESS_VISIBLE_NAME\": \"默认分组\",\n                \"BUSINESS_STATUS\": \"已上线\",\n                \"BUSINESS_ID\": \"default\",\n                \"BUSINESS_COMMENT\": \" <p>默认分组</p>\",\n                \"children\": [\n                    {\n                        \"APPLICATION_name\": \"default\",\n                        \"APPLICATION_VISIBLE_NAME\": \"默认应用\",\n                        \"APPLICATION_STATUS\": \"运行中\",\n                        \"APPLICATION_ID\": \"default\",\n                        \"APPLICATION_COMMENT\": \" <p>默认应用</p>\",\n                        \"children\": [\n                            {\n                                \"SERVICE_name\": \"default\",\n                                \"SERVICE_VISIBLE_NAME\": \"默认服务\",\n                                \"SERVICE_STATUS\": \"运行中\",\n                                \"SERVICE_COMMENT\": \" <p>默认服务</p>\",\n                            }\n                        ]\n                    }\n                ]\n            }\n        ]\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def workbench_add_nav(self):\n        \"\"\"工作台初始化导航菜单\"\"\"\n        try:\n            NAV_API = \"/o/workbench//api/workbench/v0_1/update-nav-v2/\"\n            # NAV_API = \"/api/workbench/v0_1/update-nav-v2/\"\n            NAV_GROUP_URL = self.paas_domain + NAV_API\n\n            data = InitData()\n            nav_data = data.NAV_GROUP\n            for nav in nav_data:\n                nav.update({\"username\": self.username})\n\n            response = self.session.post(url=NAV_GROUP_URL, data=json.dumps({\"group_list\": nav_data}), verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n    def init_default_business_tree(self):\n        \"\"\"应用平台初始化应用分组应用和服务\"\"\"\n        try:\n            INIT_URL = \"/o/devops//api/devops/v0_1/init-business/\"\n            NAV_GROUP_URL = self.paas_domain + INIT_URL\n\n            data = InitData()\n            nav_data = {\"business_list\": data.DEFAULT_BUSINESS_TREE}\n            \n            response = self.session.post(url=NAV_GROUP_URL, data=json.dumps(nav_data), verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n\ndef start(paas_domain, username, password):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password)\n\n    # 初始化工作台导航目录\n    add_nav_status, add_nav_data = run_obj.workbench_add_nav()\n    print(\"[SUCCESS] add nav success\") if add_nav_status else print(\n        \"[ERROR] add nav error, error info: {}\".format(add_nav_data))\n    \n    # 初始化默认应用\n    init_app_status, init_app_data = run_obj.init_default_business_tree()\n    print(\"[SUCCESS] init default application success: {}\".format(init_app_data)) if init_app_status else print(\n        \"[ERROR] init default application error, error info: {}\".format(init_app_data))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"domain parameters.\", required=True)\n    parameter.add_argument(\"--username\", help=\"opsany admin username.\", required=True)\n    parameter.add_argument(\"--password\", help=\"opsany admin password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    domain = options.domain\n    username = options.username\n    password = options.password\n    start(domain, username, password)\n\n\n# python init-ce-devops.py --domain https://www.opsany_url.cn --username opsany_username  --password opsany_password\n# python init-ce-devops.py --domain http://192.168.0.11:8004 --username opsany_username  --password opsany_password\n"
  },
  {
    "path": "saas/init-ce-monitor-zabbix.py",
    "content": "#! /usr/bin/python3\n# -*- coding: utf8 -*-\nimport os\nimport sys\n\nimport requests\nimport json\nfrom grafana_api.grafana_face import GrafanaFace\nimport urllib3\nfrom urllib3.exceptions import ConnectTimeoutError\n\nsys.path.append(os.path.dirname(os.path.abspath(__file__)))\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass ZabbixApi:\n    def __init__(self, username, password, url, zabbix_version):\n        self.username = username\n        self.password = password\n        self.url = url\n        self.zabbix_version = zabbix_version\n        self.session = self.login()\n        self.link_status = self.test_link()\n\n    def test_link(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        body = {\n            \"jsonrpc\": \"2.0\",\n            \"method\": \"apiinfo.version\",\n            \"params\": [],\n            \"id\": 1\n        }\n        a = session.post(self.url, data=json.dumps(body), verify=False)\n        if a.status_code == 200:\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return \"\"\n        return \"\"\n\n    def login(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        body = {\n            \"jsonrpc\": \"2.0\",\n            \"method\": \"user.login\",\n            \"params\": {\n                # \"user\": self.username,  通过版本决定参数\n                \"password\": self.password\n            },\n            \"id\": 1,\n            \"auth\": None\n        }\n        if self.zabbix_version in [\"6.4\", \"7.0\"]:\n            body[\"params\"][\"username\"] = self.username\n        else:  # 5.0  6.0\n            body[\"params\"][\"user\"] = self.username\n        a = session.post(self.url, data=json.dumps(body), verify=False)\n        if a.status_code == 200:\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return \"\"\n        return \"\"\n\n    def get_admin_user_group_id(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"usergroup.get\",\n                \"params\": {\n\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                admin_group_id_list = [obj.get(\"usrgrpid\") for obj in a.json().get(\"result\") if\n                                       obj.get(\"name\") == \"Zabbix administrators\"]\n                return admin_group_id_list[0] if admin_group_id_list else None\n            else:\n                return None\n        return None\n\n    def create_admin_user(self, admin_group_id, zabbix_api_username, zabbix_api_password):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"user.create\",\n                \"params\": {\n                    # \"username\": zabbix_api_username,  通过版本决定参数\n                    \"passwd\": zabbix_api_password,\n                    # \"roleid\": 3,\n                    # \"type\": 3,\n                    \"usrgrps\": [\n                        {\n                            \"usrgrpid\": admin_group_id\n                        }\n                    ]\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            if self.zabbix_version in [\"6.0\", \"6.4\", \"7.0\"]:\n                body[\"params\"][\"username\"] = zabbix_api_username\n                body[\"params\"][\"roleid\"] = 3\n            else:  # 5.0\n                body[\"params\"][\"alias\"] = zabbix_api_username\n                body[\"params\"][\"type\"] = 3\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return None\n        return None\n\n    def update_user_password(self, user_id, new_password):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"user.update\",\n                \"params\": {\n                    \"userid\": str(user_id),\n                    # \"passwd\": new_password\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            if self.zabbix_version in [\"6.4\", \"7.0\"]:\n                body[\"params\"][\"current_passwd\"] = self.password\n                body[\"params\"][\"passwd\"] = new_password\n            else:  # 5  6\n                body[\"params\"][\"passwd\"] = new_password\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return None\n        return None\n\n    def get_admin_user_id(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"user.get\",\n                \"params\": {\n                    \"output\": \"extend\"\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            username_key = \"username\" if self.zabbix_version in [\"7.0\", \"6.4\", \"6.0\"] else \"alias\"  # 5.0\n            if a.json().get(\"result\"):\n                user_id_list = [user_obj.get(\"userid\") for user_obj in a.json().get(\"result\") if\n                                user_obj.get(username_key) == \"Admin\"]\n                admin_user_id = user_id_list[0] if user_id_list else None\n                return admin_user_id\n            else:\n                return None\n        return None\n\n    def _get_hostinterface_by_hostids(self, hostid):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"hostinterface.get\",\n                \"params\": {\n                    # \"output\": [\"interfaceid\", \"hostid\"],\n                    \"hostids\": hostid\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")[0]\n            else:\n                return None\n        return None\n\n    def update_base_host_info(self, host_id, ip):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            interface_dict = self._get_hostinterface_by_hostids(host_id) or dict()\n            interfaceid = interface_dict.get(\"interfaceid\", \"\")\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"host.update\",\n                \"params\": {\n                    \"hostid\": host_id,\n                    \"host\": default_zabbix_host_name,\n                    \"name\": default_zabbix_host_name,\n                    \"templates\": [\n                        # {\"templateid\": \"10047\"},\n                        # {\"templateid\": \"10343\"}\n                    ],\n                    \"interfaces\": [\n                        {\n                            \"interfaceid\": interfaceid,\n                            \"type\": 1,\n                            \"main\": 1,\n                            \"useip\": 1,\n                            \"ip\": ip,\n                            \"dns\": \"\",\n                            \"port\": \"10050\",\n                        }\n                    ]\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            if self.zabbix_version in [\"6.0\", \"6.4\", \"7.0\"]:\n                body[\"params\"][\"templates\"] = [{\"templateid\": \"10047\"}, {\"templateid\": \"10343\"}]\n            else:  # 5.0\n                body[\"params\"][\"templates\"] = [{\"temp_id\": \"10047\"}, {\"temp_id\": \"10343\"}]\n            res = session.post(self.url, data=json.dumps(body), verify=False)\n            if res.json().get(\"result\"):\n                return res.json().get(\"result\")[\"hostids\"][0]\n            else:\n                return None\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def sync_dashboard(self):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/monitor/api/monitor/v0_1/api/grafana/v0_2/dashboard/?data_type=list\"\n        url = self.paas_domain + API\n        res = self.session.get(url, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"同步Dashboard成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def get_admin_user_id(self):\n        API = \"/login/api/v2/get_batch_users/\"\n        URL = self.paas_domain + API\n        data = {\n            \"bk_username_list\": [self.username],\n            \"bk_token\": self.token\n        }\n        response = self.session.post(url=URL, data=json.dumps(data), verify=False)\n        data = response.json()\n        if data.get(\"result\"):\n            return data.get(\"data\").get(self.username).get(\"bk_username\"), data.get(\"data\").get(self.username).get(\"id\")\n        else:\n            return None, \"获取用户ID失败\"\n\n    def create_controller_zabbix(self, create_data):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/control/api/control/v0_1/controller-init/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json=create_data, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, res.json().get(\"data\", \"\")\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n\nclass GrafanaBearerApi:\n    def __init__(self, api_token, grafana_url, zabbix_api_password, timeout=5):\n        self.grafana_api_obj = GrafanaFace(auth=api_token, host=grafana_url, protocol=\"https\", verify=False, timeout=timeout)\n        self.link_status = self.test_ping()\n        self.zabbix_api_password = zabbix_api_password\n\n    def test_ping(self):\n        try:\n            self.grafana_api_obj.dashboard.get_home_dashboard()\n            return True\n        except Exception as e:\n            return False\n\n    def create_data_source(self, zabbix_api, zabbix_zpi_username, data_source_name):\n        try:\n            data_source_dict = {\n                'orgId': 1,\n                'name': data_source_name,\n                'type': 'alexanderzobnin-zabbix-datasource',\n                'typeLogoUrl': 'public/plugins/alexanderzobnin-zabbix-datasource/img/icn-zabbix-datasource.svg',\n                'access': 'proxy',\n                'url': zabbix_api,\n                'basicAuth': False,\n                'isDefault': True,\n                'jsonData': {\n                    'cacheTTL': '',\n                    'disableDataAlignment': False,\n                    'timeout': '',\n                    'trends': True,\n                    'trendsFrom': '',\n                    'trendsRange': '',\n                    'username': zabbix_zpi_username,\n                    'password': self.zabbix_api_password\n                },\n                'readOnly': False\n            }\n            res = self.grafana_api_obj.datasource.create_datasource(data_source_dict)\n            if res.get(\"datasource\").get(\"name\"):\n                return True, \"\", res.get(\"datasource\", {})\n            else:\n                return False, \"Error\", {}\n        except Exception as e:\n            return False, str(e), {}\n\n\nclass Run:\n    def __init__(self, paas_domain, private_ip, paas_username, paas_password, zabbix_ip, zabbix_password,\n                 zabbix_version, grafana_ip, grafana_password, zabbix_api_password, modify_zabbix_password=None):\n        self.paas_domain = self.handle_domain(paas_domain)\n        self.private_ip = self.handle_domain(private_ip)\n        self.grafana_ip = grafana_ip if grafana_ip else self.handle_domain(private_ip)\n        self.grafana_password = grafana_password\n        self.paas_username = paas_username if paas_username else default_paas_username\n        self.paas_password = paas_password if paas_password else default_paas_password\n        self.zabbix_ip = zabbix_ip if zabbix_ip else self.handle_domain(private_ip)\n        self.zabbix_password = zabbix_password if zabbix_password else default_zabbix_password\n        self.zabbix_version = zabbix_version\n        self.zabbix_api_password = zabbix_api_password if zabbix_api_password else default_zabbix_api_password\n        self.zabbix_api_username = default_zabbix_api_username\n        self.data_source_name = default_data_source_name\n        self.modify_zabbix_password = modify_zabbix_password\n        self.opsany_api_obj = OpsAnyApi(\"https://\" + self.paas_domain, self.paas_username, self.paas_password)\n        self.data_source_dict = {}\n\n    def handle_domain(self, domain):\n        \"\"\"\n        http://xxx.xxx.xx/\n        https://xxx.xxx.xx/\n        xxx.xxx.xxx.xxx\n        xxxx.xxxx.xxx\n        -> xxx.xxx.xxx.xxx\n        \"\"\"\n        if domain.startswith(\"http://\") or domain.startswith(\"https://\"):\n            domain = domain.split(\"http://\")[-1] if domain.startswith(\"http://\") else domain.split(\"https://\")[-1]\n            if len(domain.split(\"/\")) > 1:\n                domain = domain.split(\"/\", 1)[0]\n                return domain\n            else:\n                return domain\n        else:\n            return domain\n\n    def init_zabbix(self):\n        try:\n            status = True\n            default_zabbix_username = \"Admin\"\n            try:\n                zabbix_api_url = \"http://\" + self.zabbix_ip + \":8006/api_jsonrpc.php\"\n                zabbix_obj = ZabbixApi(default_zabbix_username, self.zabbix_password, zabbix_api_url, self.zabbix_version)\n            except:\n                zabbix_api_url = \"http://\" + self.private_ip + \":8006/api_jsonrpc.php\"\n                zabbix_obj = ZabbixApi(default_zabbix_username, self.zabbix_password, zabbix_api_url, self.zabbix_version)\n            # 创建用户\n            group_id = zabbix_obj.get_admin_user_group_id()\n            if group_id:\n                create_user_status = zabbix_obj.create_admin_user(group_id, self.zabbix_api_username, self.zabbix_api_password)\n                if not create_user_status:\n                    status = False\n                    return status, \"创建初始化用户失败，用户可能已经存在\"\n            else:\n                status = False\n                return status, \"用户名密码验证失败\"\n            update_host_res = zabbix_obj.update_base_host_info(default_zabbix_host_id, self.private_ip)\n            if not update_host_res:\n                print(\"更新主机失败\")\n            # 修改admin用户密码\n            admin_user_id = zabbix_obj.get_admin_user_id()\n            if self.modify_zabbix_password:\n                update_password_status = zabbix_obj.update_user_password(admin_user_id, self.modify_zabbix_password)\n                if not update_password_status:\n                    status = False\n                    return status, \"更新Admin用户密码失败\"\n            return status, \"\"\n        except Exception as e:\n            return None, str(e)\n\n    def init_grafana(self):\n        try:\n            auth = (\"admin\", self.grafana_password)\n            try:\n                bearer_grafana_obj = GrafanaBearerApi(auth, \"{}/grafana\".format(self.private_ip), self.zabbix_api_password, 3)\n            except (ConnectTimeoutError, Exception) as e:\n                bearer_grafana_obj = GrafanaBearerApi(auth, \"{}/grafana\".format(self.paas_domain), self.zabbix_api_password)\n            create_data_source_status, create_data_source_message, create_data_source_dict = bearer_grafana_obj.create_data_source(\n                \"http://{}:8006/api_jsonrpc.php\".format(self.private_ip), self.zabbix_api_username, self.data_source_name\n            )\n            if create_data_source_status:\n                return True, \"[SUCCESS] Create data source success\", create_data_source_dict\n            else:\n                return False, f\"[ERROR] Create data source error: {create_data_source_message}\", {}\n        except Exception as e:\n            return False, f\"[ERROR] Create data source Exception: {e}\", {}\n\n    def sync_dashboard(self):\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.sync_dashboard()\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n    def create_controller_zabbix(self, datasource_dict: dict):\n        controller_dict = {\n            \"name\": self.data_source_name,\n            \"description\": self.data_source_name,\n            \"built_in\": True,\n            \"default\": True,\n            \"zabbix_url\": \"http://\" + self.zabbix_ip + \":8006/api_jsonrpc.php\",\n            \"zabbix_username\": self.zabbix_api_username,\n            \"zabbix_password\": self.modify_zabbix_password,\n            \"version\": self.zabbix_version,\n            \"datasource_id\": datasource_dict.get(\"id\", 1),\n            \"datasource_uid\": datasource_dict.get(\"uid\"),\n            \"datasource_name\": datasource_dict.get(\"name\"),\n            \"datasource_type\": datasource_dict.get(\"type\"),\n        }\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.create_controller_zabbix(controller_dict)\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n\ndef start(*args):\n    run_obj = Run(*args)\n    # 初始化Zabbix-创建用户改密码\n    init_zabbix_status, init_zabbix_message = run_obj.init_zabbix()\n    if not init_zabbix_status:\n        print(f\"[ERROR] Init zabbix error, error info: {init_zabbix_message}\")\n        return\n    print(\"[SUCCESS] Init Zabbix User zabbixapi success\")\n    # 初始化Grafana-录入数据源\n    init_grafana_status, init_grafana_message, create_data_source_dict = run_obj.init_grafana()\n    print(init_grafana_message)\n    if not init_grafana_status:\n        return\n    # 同步基础监控大屏\n    sync_dashboard_status, sync_dashboard_status_message = run_obj.sync_dashboard()\n    if not sync_dashboard_status:\n        print(f\"[ERROR] Sync dashboard error, error info: {sync_dashboard_status_message}\")\n        return\n    print(\"[SUCCESS] Sync dashboard success\")\n\n    # 初始化Zabbix到管控\n    create_controller_zabbix_status, create_controller_zabbix_message = run_obj.create_controller_zabbix(create_data_source_dict)\n    if not create_controller_zabbix_status:\n        print(f\"[ERROR] Create controller zabbix error, error info: {create_controller_zabbix_message}\")\n        return\n    print(\"[SUCCESS] Create controller zabbix success\")\n\n    print(\"[SUCCESS] ALL success\")\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--private_ip\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=False)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=False)\n    parameter.add_argument(\"--zabbix_ip\", help=\"Zabbix Host IP.\", required=False)\n    parameter.add_argument(\"--zabbix_password\", help=\"Zabbix Admin Password.\", required=False)\n    parameter.add_argument(\"--zabbix_version\", help=\"Zabbix Version Support 5 6 6.4 7.\", required=False)\n    parameter.add_argument(\"--grafana_ip\", help=\"Grafana Host IP.\", required=False)\n    parameter.add_argument(\"--grafana_password\", help=\"Grafana Admin Password.\", required=False)\n    parameter.add_argument(\"--zabbix_api_password\", help=\"Zabbix Api Password Init Control.\", required=False)\n    parameter.add_argument(\"--modify_zabbix_password\", help=\"Modify Zabbix Admin Password.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    default_data_source_name = \"内置Zabbix Server\"\n    default_paas_username = \"admin\"\n    default_zabbix_host_name = \"opsany-server\"\n    default_zabbix_host_id = 10084\n    default_zabbix_host_template_list = [\n        {\"temp_id\": \"10047\", \"temp_name\": \"Zabbix server health\"},\n        {\"temp_id\": \"10343\", \"temp_name\": \"Linux by Zabbix agent active\"}\n    ]\n    default_paas_password = \"admin\"\n    default_zabbix_password = \"admin\"\n    default_grafana_password = \"admin\"\n    default_zabbix_api_password = \"OpsAny@2020\"\n    default_zabbix_api_username = \"zabbixapi\"\n    default_modify_zabbix_password = \"OpsAny@2020\"\n    start(\n        options.domain,\n        options.private_ip,\n        options.paas_username,\n        options.paas_password,\n        options.zabbix_ip,\n        options.zabbix_password,\n        options.zabbix_version,\n        options.grafana_ip,\n        options.grafana_password,\n        options.zabbix_api_password,\n        options.modify_zabbix_password,\n    )\n\n\"\"\"\n# 不修改Admin的Zabbix密码可以不传modify_zabbix_password\npython ../saas/init-ce-monitor-zabbix.py --domain 127.0.0.1 --private_ip 127.0.0.1 --paas_username admin --paas_password OpsYXur628852 --zabbix_ip 127.0.0.1 --zabbix_password zabbix --grafana_ip 127.0.0.1 --grafana_password OpsMEnOL9268 --zabbix_api_password OpsAny@2020 --zabbix_version 6.0\n\npython3 ../saas/init-ce-monitor-zabbix.py --domain $DOMAIN_NAME --private_ip $LOCAL_IP --paas_username admin --paas_password $ADMIN_PASSWORD --zabbix_ip $LOCAL_IP --zabbix_password zabbix --grafana_ip $LOCAL_IP --grafana_password $GRAFANA_ADMIN_PASSWORD --zabbix_api_password OpsAny@2020 --zabbix_version 7.0\n\"\"\"\n\n"
  },
  {
    "path": "saas/init-ce-monitor.py",
    "content": "import requests\nimport json\nimport urllib3\n\nfrom grafana_api import GrafanaFace\n\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass InitData:\n    # 导航分组\n    NAV_GROUP_LIST = [\n        {\n            \"group_name\": \"自动化运维\",\n            \"group_language\": {\n                \"chinese_simplified\": \"自动化运维\",\n                \"chinese_traditional\": \"自动化运维\",\n                \"english\": \"AutoOps\"\n            },\n            \"nav_list\": [\n                {\n                    \"nav_name\": \"基础监控\",\n                    \"nav_code\": \"monitor\",\n                    \"nav_url\": \"/o/monitor/\",\n                    \"describe\": \"基础监控平台\",\n                    \"nav_describe_language\": {\n                        \"chinese_simplified\": \"基础监控平台\",\n                        \"chinese_traditional\": \"基礎監控平台\",\n                        \"english\": \"Monitor Platform\"\n                    },\n                    \"group_name\": \"自动化运维\",\n                    \"icon_name\": \"monitor.png\",\n                    \"nav_language\": {\n                        \"chinese_simplified\": \"基础监控\",\n                        \"chinese_traditional\": \"基础监控\",\n                        \"english\": \"Monitor\"\n                    },\n                }\n            ],\n        }\n    ]\n    \n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        # TEST DATA  guoyuchen -> admin\n        self.username = username\n        # TEST DATA  123456.coM -> admin\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def workbench_add_nav(self, nav_group_list):\n        \"\"\"工作台初始化导航菜单\"\"\"\n        try:\n            NAV_API = \"/o/workbench//api/workbench/v0_1/update-nav-v2/\"\n            # NAV_API = \"/api/workbench/v0_1/update-nav-v2/\"\n            NAV_GROUP_URL = self.paas_domain + NAV_API\n            for nav_group in nav_group_list:\n                nav_group.update({\"username\": self.username})\n\n            response = self.session.post(url=NAV_GROUP_URL, data=json.dumps({\"group_list\": nav_group_list}), verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n    def create_grafana_api_token(self, create_data):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/control//api/control/v0_1/grafana/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json=create_data, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"API Token 添加成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n\nclass GrafanaBasicApi:\n    \"\"\"\n    (\"admin\", \"admin\", \"demo.opsany.com/grafana\")\n    \"\"\"\n\n    def __init__(self, username, password, grafana_url):\n        self.username = username\n        self.password = password\n        self.grafana_url = grafana_url\n        self.grafana_api_obj = GrafanaFace(auth=(self.username, self.password), host=grafana_url, protocol=\"https\",\n                                           verify=False)\n        self.link_status = self.test_ping()\n\n    def test_ping(self):\n        try:\n            self.grafana_api_obj.admin.stats()\n            return True\n        except:\n            return False\n\n    def update_password(self, password):\n        admin_user_data = self.grafana_api_obj.user.get_actual_user()\n        admin_user_id = admin_user_data.get(\"id\")\n        status = self.grafana_api_obj.admin.change_user_password(admin_user_id, password)\n        if status.get(\"message\", \"\") == \"User password updated\":\n            return True, status.get(\"message\", \"\")\n        else:\n            return False, status.get(\"message\", \"\")\n\n    def create_token_key(self):\n        # 需要使用requests去做\n        try:\n            url = \"https://{}:{}@{}/api/auth/keys\".format(self.username, self.password, self.grafana_url)\n            # TEST DATA apikey1 -> opsany\n            res = requests.post(url, json={\"name\": \"opsany_control\", \"role\": \"Admin\"}, verify=False)\n            if res.json().get(\"key\"):\n                return True, res.json().get(\"key\")\n            else:\n                return False, res.json().get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n\nclass Run:\n    def __init__(self, paas_domain, private_ip, paas_username, paas_password, grafana_password, grafana_change_password=None):\n        self.paas_domain = self.handle_domain(paas_domain)\n        self.private_ip = self.handle_domain(private_ip)\n        self.paas_username = paas_username if paas_username else default_paas_username\n        self.paas_password = paas_password if paas_password else default_paas_password\n        self.opsany_api_obj = OpsAnyApi(\"https://\" + self.paas_domain, self.paas_username, self.paas_password)\n        self.grafana_ip = self.handle_domain(private_ip)\n        self.grafana_password = grafana_password if grafana_password else default_grafana_password\n        self.grafana_change_password = grafana_change_password\n        self.basic_grafana_obj = GrafanaBasicApi(\"admin\", self.grafana_password, \"{}/grafana\".format(self.grafana_ip))\n\n    def handle_domain(self, domain):\n        \"\"\"\n        http://xxx.xxx.xx/\n        https://xxx.xxx.xx/\n        xxx.xxx.xxx.xxx\n        xxxx.xxxx.xxx\n        -> xxx.xxx.xxx.xxx\n        \"\"\"\n        if domain.startswith(\"http://\") or domain.startswith(\"https://\"):\n            domain = domain.split(\"http://\")[-1] if domain.startswith(\"http://\") else domain.split(\"https://\")[-1]\n            if len(domain.split(\"/\")) > 1:\n                domain = domain.split(\"/\", 1)[0]\n                return domain\n            else:\n                return domain\n        else:\n            return domain\n\n    def workbench_add_nav(self):\n        data = InitData()\n        nav_data = data.NAV_GROUP_LIST\n        return self.opsany_api_obj.workbench_add_nav(nav_data)\n\n    def init_grafana(self):\n        if self.basic_grafana_obj.link_status:\n            create_token_status, create_token_key_or_message = self.basic_grafana_obj.create_token_key()\n            if create_token_status:\n                grafana_api_token = create_token_key_or_message\n            else:\n                info = \"[ERROR] Create api token error: {}\".format(create_token_key_or_message)\n                return False, info, \"\"\n        else:\n            return False, \"[ERROR] Link grafana error, please check username or password\", \"\"\n        if grafana_api_token:\n            if self.grafana_change_password:\n                update_password_status, update_password_message = self.basic_grafana_obj.update_password(\n                    self.grafana_change_password)\n                if not update_password_status:\n                    print(\"[ERROR] Update grafana password error: {}\".format(update_password_message))\n                else:\n                    print(\"[SUCCESS] Update grafana password success\")\n            return True, \"[SUCCESS] Init Grafana success\", grafana_api_token\n        else:\n            return False, \"[ERROR] Create Grafana Token error: {}\", \"\"\n        \n    def init_control_grafana_server(self, api_token):\n        if api_token:\n            api_token_dict = {\n                \"url\": \"{}/grafana\".format(self.paas_domain),\n                \"api_key\": api_token,\n            }\n            if self.opsany_api_obj.token:\n                status, message = self.opsany_api_obj.create_grafana_api_token(api_token_dict)\n                if status:\n                    return True, message\n                else:\n                    return False, message\n            else:\n                return False, \"OpsAny平台认证失败\"\n        return False, \"没有获取到有效key\"\n\n\ndef start(paas_domain, private_ip, paas_username, paas_password, grafana_password, grafana_change_password):\n    run_obj = Run(paas_domain, private_ip, paas_username, paas_password, grafana_password, grafana_change_password)\n\n    # 初始化工作台导航目录\n    add_nav_status, add_nav_data = run_obj.workbench_add_nav()\n    print(\"[SUCCESS] add nav success\") if add_nav_status else print(\n        \"[ERROR] add nav error, error info: {}\".format(add_nav_data))\n    \n    init_grafana_status, init_grafana_message, grafana_api_token = run_obj.init_grafana()\n    if init_grafana_status:\n        # 创建api_token至OpsAny管控\n        create_api_token_status, create_api_token_message = run_obj.init_control_grafana_server(grafana_api_token)\n        print(\"[SUCCESS] Create api token success\") if create_api_token_status else \\\n            print(\"[ERROR] Create api token error, error info: {}, Api token: {}\".format(create_api_token_message,\n                                                                                     grafana_api_token))\n    else:\n        print(\"[ERROR] Init Grafana error, error info: {}\".format(init_grafana_message))\n\n    print(\"[SUCCESS] ALL success\")\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--private_ip\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=False)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=False)\n    parameter.add_argument(\"--grafana_password\", help=\"Grafana Admin Password.\", required=False)\n    parameter.add_argument(\"--grafana_change_password\", help=\"grafana Change Password.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    default_paas_username = \"admin\"\n    default_paas_password = \"admin\"\n    default_grafana_password = \"admin\"\n\n    start(\n        options.domain,\n        options.private_ip,\n        options.paas_username,\n        options.paas_password,\n        options.grafana_password,\n        options.grafana_change_password,\n    )\n\n    # python3 init-ce-monitor.py  --domain 192.168.56.11 --private_ip 192.168.56.11 --paas_username admin --paas_password 123456.coM --grafana_password grafana_password --grafana_change_password new_password\n"
  },
  {
    "path": "saas/init-ce-monitor_zabbix.py",
    "content": "#! /usr/bin/python3\n# -*- coding: utf8 -*-\nimport requests\nimport json\nfrom grafana_api.grafana_face import GrafanaFace\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\ntry:\n    from default_monitor_dashboard_dict import request_dict as monitor_request_dict\n    from default_host_dashboard_dict import request_dict as host_request_dict\nexcept:\n    pass\n\n\nclass InitData:\n    # 导航分组\n    NAV_GROUP = {\n        \"group_name\": \"自动化运维\",\n        \"nav_list\": [\n            {\n                \"nav_name\": \"基础监控\",\n                \"nav_url\": \"/o/monitor/\",\n                \"describe\": \"基础监控平台\",\n                \"group_name\": \"自动化运维\",\n                \"icon_name\": \"monitor.png\"\n            }\n        ]\n    }\n\n\nclass ZabbixApi:\n    def __init__(self, username, password, url):\n        self.username = username\n        self.password = password\n        self.url = url\n        self.session = self.login()\n        self.link_status = self.test_link()\n\n    def test_link(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        body = {\n            \"jsonrpc\": \"2.0\",\n            \"method\": \"apiinfo.version\",\n            \"params\": [],\n            \"id\": 1\n        }\n        a = session.post(self.url, data=json.dumps(body), verify=False)\n        if a.status_code == 200:\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return \"\"\n        return \"\"\n\n    def login(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        body = {\n            \"jsonrpc\": \"2.0\",\n            \"method\": \"user.login\",\n            \"params\": {\n                \"user\": self.username,\n                \"password\": self.password\n            },\n            \"id\": 1,\n            \"auth\": None\n        }\n        a = session.post(self.url, data=json.dumps(body), verify=False)\n        if a.status_code == 200:\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return \"\"\n        return \"\"\n\n    def get_admin_user_group_id(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"usergroup.get\",\n                \"params\": {\n\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                admin_group_id_list = [obj.get(\"usrgrpid\") for obj in a.json().get(\"result\") if\n                                       obj.get(\"name\") == \"Zabbix administrators\"]\n                return admin_group_id_list[0] if admin_group_id_list else None\n            else:\n                return None\n        return None\n\n    def create_admin_user(self, admin_group_id, zabbix_api_username, zabbix_api_password):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"user.create\",\n                \"params\": {\n                    \"alias\": zabbix_api_username,\n                    \"passwd\": zabbix_api_password,\n                    \"type\": 3,\n                    \"usrgrps\": [\n                        {\n                            \"usrgrpid\": admin_group_id\n                        }\n                    ]\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return None\n        return None\n\n    def update_user_password(self, user_id, new_password):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"user.update\",\n                \"params\": {\n                    \"userid\": user_id,\n                    \"passwd\": new_password\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")\n            else:\n                return None\n        return None\n\n    def get_admin_user_id(self):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"user.get\",\n                \"params\": {\n                    \"output\": \"extend\"\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                user_id_list = [user_obj.get(\"userid\") for user_obj in a.json().get(\"result\") if\n                                user_obj.get(\"alias\") == \"Admin\"]\n                admin_user_id = user_id_list[0] if user_id_list else None\n                return admin_user_id\n            else:\n                return None\n        return None\n\n    def _get_hostinterface_by_hostids(self, hostid):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"hostinterface.get\",\n                \"params\": {\n                    # \"output\": [\"interfaceid\", \"hostid\"],\n                    \"hostids\": hostid\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            a = session.post(self.url, data=json.dumps(body), verify=False)\n            if a.json().get(\"result\"):\n                return a.json().get(\"result\")[0]\n            else:\n                return None\n        return None\n\n    def update_base_host_info(self, host_id, ip):\n        session = requests.session()\n        session.headers.update({\n            'Content-Type': 'application/json-rpc',\n            'User-Agent': 'python/pyzabbix',\n            'Cache-Control': 'no-cache'\n        })\n        if self.session:\n            interface_dict = self._get_hostinterface_by_hostids(host_id) or dict()\n            interfaceid = interface_dict.get(\"interfaceid\", \"\")\n            body = {\n                \"jsonrpc\": \"2.0\",\n                \"method\": \"host.update\",\n                \"params\": {\n                    \"hostid\": host_id,\n                    \"interfaces\": [\n                        {\n                            \"interfaceid\": interfaceid,\n                            \"type\": 1,\n                            \"main\": 1,\n                            \"useip\": 1,\n                            \"ip\": ip,\n                            \"dns\": \"\",\n                            \"port\": \"10050\",\n                        }\n                    ]\n                },\n                \"auth\": self.session,\n                \"id\": 1\n            }\n            res = session.post(self.url, data=json.dumps(body), verify=False)\n            if res.json().get(\"result\"):\n                return res.json().get(\"result\")[\"hostids\"][0]\n            else:\n                return None\n\n\nclass BkApi:\n    def __init__(self, bk_token, paas_domain):\n        self.token = bk_token\n        self.session = requests.Session()\n        self.url = paas_domain\n        # self.url = \"http://demo.opsany.com\"\n        self.session.headers.update({'referer': paas_domain})\n        self.csrfmiddlewaretoken = self.get_csrftoken()\n\n    def get_csrftoken(self):\n        API = \"/login/\"\n        URL = self.url + API\n        resp = self.session.get(URL, verify=False)\n        if resp.status_code in [200, 400]:\n            return resp.cookies[\"bklogin_csrftoken\"]\n        return None\n\n    def update_user_info(self, user_id, user_info):\n        API = \"/login/accounts/user/{}/\".format(user_id)\n        self.session.cookies[\"bk_token\"] = self.token\n        headers = {\n            \"X-CSRFToken\": self.csrfmiddlewaretoken\n        }\n        URL = self.url + API\n        resp = self.session.put(URL, data=user_info, verify=False, headers=headers)\n        if resp.status_code == 200:\n            if resp.json().get(\"result\"):\n                return \"更新成功\", True\n            return resp.json().get(\"message\"), False\n        return \"服务器错误\", False\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.login_url = self.paas_domain + \"/login/\"\n        self.csrfmiddlewaretoken = self.get_csrftoken()\n        # TEST DATA  guoyuchen -> admin\n        self.username = username\n        # TEST DATA  123456.coM -> admin\n        self.password = password\n        self.token = self.login()\n\n    def get_csrftoken(self):\n        try:\n            resp = self.session.get(self.login_url, verify=False)\n            if resp.status_code in [200, 400]:\n                return resp.cookies[\"bklogin_csrftoken\"]\n            else:\n                return \"\"\n        except:\n            return \"\"\n\n    def login(self):\n        try:\n            login_form = {\n                'csrfmiddlewaretoken': self.csrfmiddlewaretoken,\n                'username': self.username,\n                'password': self.password\n            }\n            resp = self.session.post(self.login_url, data=login_form, verify=False)\n            if resp.status_code == 200:\n                return self.session.cookies.get(\"bk_token\")\n            return \"\"\n        except:\n            return False\n\n    def create_controller(self, create_data):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/control/api/control/v0_1/controller/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json=create_data, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"控制器创建成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def create_grafana_api_token(self, create_data):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/monitor/api/monitor/v0_1/api/grafana/v0_2/grafana/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json=create_data, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"API Token 添加成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def sync_dashboard(self):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/monitor/api/monitor/v0_1/api/grafana/v0_2/dashboard/?data_type=list\"\n        url = self.paas_domain + API\n        res = self.session.get(url, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, \"同步Dashboard成功\"\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def get_admin_user_id(self):\n        API = \"/login/api/v2/get_batch_users/\"\n        URL = self.paas_domain + API\n        data = {\n            \"bk_username_list\": [self.username],\n            \"bk_token\": self.token\n        }\n        response = self.session.post(url=URL, data=json.dumps(data), verify=False)\n        data = response.json()\n        if data.get(\"result\"):\n            return data.get(\"data\").get(self.username).get(\"bk_username\"), data.get(\"data\").get(self.username).get(\"id\")\n        else:\n            return None, \"获取用户ID失败\"\n\n    def import_zabbix(self):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/control/api/control/v0_1/import-zabbix/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json={}, verify=False)\n        data = res.json()\n        if res.status_code == 200:\n            if str(data.get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, data.get(\"data\", \"操作成功\")\n            else:\n                # API请求失败\n                return False, data.get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n    def workbench_add_nav(self, nav_group):\n        \"\"\"工作台初始化导航菜单\"\"\"\n        try:\n            NAV_API = \"/o/workbench//api/workbench/v0_1/update-nav/\"\n            NAV_GROUP_URL = self.paas_domain + NAV_API\n            nav_group.update({\"username\": self.username})\n\n            response = self.session.post(url=NAV_GROUP_URL, data=json.dumps(nav_group), verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n    def create_controller_zabbix(self, create_data):\n        # TEST DATA  /t/ -> /o/\n        API = \"/o/control/api/control/v0_1/controller-init/\"\n        url = self.paas_domain + API\n        res = self.session.post(url, json=create_data, verify=False)\n        if res.status_code == 200:\n            if str(res.json().get(\"code\", \"\")) == \"200\":\n                # API请求成功\n                return True, res.json().get(\"data\", \"\")\n            else:\n                # API请求失败\n                return False, res.json().get(\"message\")\n        else:\n            # 连接API失败\n            return False, \"API连接不成功，请检查API地址{}\".format(url)\n\n\nclass GrafanaBasicApi:\n    \"\"\"\n    (\"admin\", \"admin\", \"demo.opsany.com/grafana\")\n    \"\"\"\n\n    def __init__(self, username, password, grafana_url):\n        self.username = username\n        self.password = password\n        self.grafana_url = grafana_url\n        self.grafana_api_obj = GrafanaFace(auth=(self.username, self.password), host=grafana_url, protocol=\"https\",\n                                           verify=False)\n        self.link_status = self.test_ping()\n\n    def test_ping(self):\n        try:\n            self.grafana_api_obj.admin.stats()\n            return True\n        except:\n            return False\n\n    def test_ping_v2(self):\n        try:\n            res = self.grafana_api_obj.admin.stats()\n            return True, res\n        except Exception as e:\n            return False, e\n\n    def update_password(self, password):\n        try:\n            admin_user_data = self.grafana_api_obj.user.get_actual_user()\n            admin_user_id = admin_user_data.get(\"id\")\n            status = self.grafana_api_obj.admin.change_user_password(admin_user_id, password)\n            if status.get(\"message\", \"\") == \"User password updated\":\n                return True, status.get(\"message\", \"\")\n            else:\n                return False, status.get(\"message\", \"\")\n        except Exception as e:\n            return False, e\n\n    def create_token_key_old(self):\n        # 需要使用requests去做\n        try:\n            url = \"https://{}:{}@{}/api/auth/keys\".format(self.username, self.password, self.grafana_url)\n            # TEST DATA apikey1 -> opsany\n            res = requests.post(url, json={\"name\": \"opsany_monitor\", \"role\": \"Admin\"}, verify=False)\n            if res.json().get(\"key\"):\n                return True, res.json().get(\"key\")\n            else:\n                return False, res.json().get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n    def create_token_key(self):\n        # 需要使用requests去做\n        try:\n            url = \"https://{}/api/auth/keys\".format(self.grafana_url)\n            session = requests.session()\n            session.auth = (self.username, self.password)\n            res = session.post(url, json={\"name\": \"opsany_monitor\", \"role\": \"Admin\"}, verify=False)\n            if res.json().get(\"key\"):\n                return True, res.json().get(\"key\")\n            else:\n                return False, res.json().get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n\nclass GrafanaBearerApi:\n    \"\"\"\n    (\"eyJrIjoiR3ZZZGxjbmZ6N0NybEowWEZ4RVJiRDgwYWVyb0RYcTMiLCJuIjoiYXBpa2V5MSIsImlkIjoxfQ==\", \"demo.opsany.com/grafana\")\n    \"\"\"\n\n    def __init__(self, api_token, grafana_url, zabbix_api_password):\n        self.grafana_api_obj = GrafanaFace(auth=api_token, host=grafana_url, protocol=\"https\", verify=False)\n        self.link_status = self.test_ping()\n        self.zabbix_api_password = zabbix_api_password\n\n    def test_ping(self):\n        try:\n            self.grafana_api_obj.dashboard.get_home_dashboard()\n            return True\n        except Exception as e:\n            return False\n\n    def create_data_source(self, zabbix_api, zabbix_zpi_username, data_source_name):\n        try:\n            data_source_dict = {\n                'orgId': 1,\n                'name': data_source_name,\n                'type': 'alexanderzobnin-zabbix-datasource',\n                'typeLogoUrl': 'public/plugins/alexanderzobnin-zabbix-datasource/img/icn-zabbix-datasource.svg',\n                'access': 'proxy',\n                'url': zabbix_api,\n                'basicAuth': False,\n                'isDefault': True,\n                'jsonData': {\n                    'cacheTTL': '',\n                    'disableDataAlignment': False,\n                    'timeout': '',\n                    'trends': True,\n                    'trendsFrom': '',\n                    'trendsRange': '',\n                    'username': zabbix_zpi_username,\n                    'password': self.zabbix_api_password\n                },\n                'readOnly': False\n            }\n            res = self.grafana_api_obj.datasource.create_datasource(data_source_dict)\n            if res.get(\"datasource\").get(\"name\"):\n                return True, \"\", res.get(\"datasource\", {})\n            else:\n                return False, \"Error\", {}\n        except Exception as e:\n            return False, str(e), {}\n\n    def import_dashboard(self, request_json):\n        try:\n            res = self.grafana_api_obj.dashboard.update_dashboard(request_json)\n            if res.get(\"status\", \"\") == \"success\":\n                return True, \"import success\"\n            else:\n                return False, \"import error\"\n        except Exception as e:\n            return False, str(e)\n\n\nclass Run:\n    def __init__(self, paas_domain, private_ip, paas_username, paas_password, zabbix_ip, zabbix_password, grafana_ip,\n                 grafana_password, modify_zabbix_password, zabbix_api_password, modify_grafana_password):\n        self.paas_domain = self.handle_domain(paas_domain)\n        self.private_ip = self.handle_domain(private_ip)\n        self.grafana_ip = grafana_ip if grafana_ip else self.handle_domain(private_ip)\n        self.grafana_password = grafana_password if grafana_password else default_grafana_password\n        self.basic_grafana_obj = GrafanaBasicApi(\"admin\", self.grafana_password, \"{}/grafana\".format(self.grafana_ip))\n        self.paas_username = paas_username if paas_username else default_paas_username\n        self.paas_password = paas_password if paas_password else default_paas_password\n        self.zabbix_ip = zabbix_ip if zabbix_ip else self.handle_domain(private_ip)\n        self.zabbix_password = zabbix_password if zabbix_password else default_zabbix_password\n        self.zabbix_api_password = zabbix_api_password if zabbix_api_password else default_zabbix_api_password\n        self.zabbix_api_username = default_zabbix_api_username\n        self.data_source_name = default_data_source_name\n        self.modify_zabbix_password = modify_zabbix_password if modify_zabbix_password else default_modify_zabbix_password\n        self.modify_grafana_password = modify_grafana_password\n        self.opsany_api_obj = OpsAnyApi(\"https://\" + self.paas_domain, self.paas_username, self.paas_password)\n        self.data_source_dict = {}\n\n    def handle_domain(self, domain):\n        \"\"\"\n        http://xxx.xxx.xx/\n        https://xxx.xxx.xx/\n        xxx.xxx.xxx.xxx\n        xxxx.xxxx.xxx\n        -> xxx.xxx.xxx.xxx\n        \"\"\"\n        if domain.startswith(\"http://\") or domain.startswith(\"https://\"):\n            domain = domain.split(\"http://\")[-1] if domain.startswith(\"http://\") else domain.split(\"https://\")[-1]\n            if len(domain.split(\"/\")) > 1:\n                domain = domain.split(\"/\", 1)[0]\n                return domain\n            else:\n                return domain\n        else:\n            return domain\n\n    def init_zabbix(self):\n        try:\n            status = True\n            default_zabbix_username = \"Admin\"\n            try:\n                zabbix_api_url = \"http://\" + self.zabbix_ip + \":8006/api_jsonrpc.php\"\n                zabbix_obj = ZabbixApi(default_zabbix_username, self.zabbix_password, zabbix_api_url)\n            except:\n                zabbix_api_url = \"http://\" + self.private_ip + \":8006/api_jsonrpc.php\"\n                zabbix_obj = ZabbixApi(default_zabbix_username, self.zabbix_password, zabbix_api_url)\n            # 创建用户\n            group_id = zabbix_obj.get_admin_user_group_id()\n            if group_id:\n                create_user_status = zabbix_obj.create_admin_user(group_id, self.zabbix_api_username,\n                                                                  self.zabbix_api_password)\n                if not create_user_status:\n                    status = False\n                    return status, \"创建初始化用户失败，用户可能已经存在\"\n            else:\n                status = False\n                return status, \"用户名密码验证失败\"\n            update_host_res = zabbix_obj.update_base_host_info(10084, self.private_ip)\n            if not update_host_res:\n                print(\"更新主机失败\")\n            # 修改admin用户密码\n            admin_user_id = zabbix_obj.get_admin_user_id()\n            if self.modify_zabbix_password:\n                update_password_status = zabbix_obj.update_user_password(admin_user_id, self.modify_zabbix_password)\n                if not update_password_status:\n                    status = False\n                    return status, \"更新Admin用户密码失败\"\n            return status, \"\"\n        except Exception as e:\n            return None, str(e)\n\n    def init_grafana(self):\n        try:\n            if self.basic_grafana_obj.link_status:\n                create_token_status, create_token_key_or_message = self.basic_grafana_obj.create_token_key()\n                if create_token_status:\n                    grafana_api_token = create_token_key_or_message\n                else:\n                    info = \"[ERROR] Create api token error: {}\".format(create_token_key_or_message)\n                    return False, info, \"\", {}\n            else:\n                return False, \"[ERROR] Link grafana error, please check username or password\", \"\", {}\n            if grafana_api_token:\n                bearer_grafana_obj = GrafanaBearerApi(\n                    grafana_api_token,\n                    \"{}/grafana\".format(self.private_ip),\n                    self.zabbix_api_password\n                )\n                create_data_source_status, create_data_source_message, create_data_source_dict = bearer_grafana_obj.create_data_source(\n                    \"http://{}:8006/api_jsonrpc.php\".format(self.private_ip), self.zabbix_api_username, self.data_source_name\n                )\n                if create_data_source_status:\n                    import_monitor_status, import_monitor_message = bearer_grafana_obj.import_dashboard(\n                        monitor_request_dict)\n                    if not import_monitor_status:\n                        print(\"[ERROR] Import default monitor dashboard error: {}\".format(import_monitor_message))\n                    else:\n                        print(\"[SUCCESS] Import default monitor dashboard success\")\n                    import_host_status, import_host_message = bearer_grafana_obj.import_dashboard(host_request_dict)\n                    if not import_host_status:\n                        print(\"[ERROR] Import default host dashboard error: {}\".format(import_host_message))\n                    else:\n                        print(\"[SUCCESS] Import default host dashboard success\")\n                    if self.modify_grafana_password:\n                        update_password_status, update_password_message = self.basic_grafana_obj.update_password(\n                            self.modify_grafana_password)\n                        if not update_password_status:\n                            print(\"[ERROR] Update grafana password error: {}\".format(update_password_message))\n                        else:\n                            print(\"[SUCCESS] Update grafana password success\")\n                    return True, \"[SUCCESS] Init Grafana success\", grafana_api_token, create_data_source_dict\n                else:\n                    return False, \"[ERROR] Create data source error: {}\".format(create_data_source_message), \\\n                           grafana_api_token, {}\n        except Exception as e:\n            return False, str(e), \"\", {}\n\n    def init_monitor(self, api_token):\n        if api_token:\n            api_token_dict = {\n                \"url\": \"{}/grafana\".format(self.paas_domain),\n                \"api_key\": api_token,\n            }\n            if self.opsany_api_obj.token:\n                status, message = self.opsany_api_obj.create_grafana_api_token(api_token_dict)\n                if status:\n                    return True, message\n                else:\n                    return False, message\n            else:\n                return False, \"OpsAny平台认证失败\"\n        return False, \"没有获取到有效key\"\n\n    def sync_dashboard(self):\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.sync_dashboard()\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n    def import_zabbix(self):\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.import_zabbix()\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n    def create_controller_zabbix(self, datasource_dict: dict):\n        controller_dict = {\n            \"name\": self.data_source_name,\n            \"description\": self.data_source_name,\n            \"built_in\": True,\n            \"default\": True,\n            \"zabbix_url\": \"http://\" + self.zabbix_ip + \":8006/api_jsonrpc.php\",\n            \"zabbix_username\": self.zabbix_api_username,\n            \"zabbix_password\": self.modify_zabbix_password,\n            \"datasource_id\": datasource_dict.get(\"id\", 1),\n            \"datasource_uid\": datasource_dict.get(\"uid\"),\n            \"datasource_name\": datasource_dict.get(\"name\"),\n            \"datasource_type\": datasource_dict.get(\"type\"),\n        }\n        if self.opsany_api_obj.token:\n            status, message = self.opsany_api_obj.create_controller_zabbix(controller_dict)\n            if status:\n                return True, message\n            else:\n                return False, message\n        else:\n            return False, \"OpsAny平台认证失败\"\n\n    def workbench_add_nav(self):\n        data = InitData()\n        nav_data = data.NAV_GROUP\n        return self.opsany_api_obj.workbench_add_nav(nav_data)\n\n\ndef start(paas_domain, private_ip, paas_username, paas_password, zabbix_ip, zabbix_password, grafana_ip,\n          grafana_password, modify_zabbix_password, zabbix_api_password, modify_grafana_password=None):\n    run_obj = Run(paas_domain, private_ip, paas_username, paas_password, zabbix_ip, zabbix_password, grafana_ip,\n                  grafana_password, modify_zabbix_password, zabbix_api_password, modify_grafana_password)\n    # 初始化Zabbix\n    init_zabbix_status, init_zabbix_message = run_obj.init_zabbix()\n    if init_zabbix_status:\n        init_grafana_status, init_grafana_message, grafana_api_token, create_data_source_dict = run_obj.init_grafana()\n        print(init_grafana_message)\n        sync_dashboard_status, sync_dashboard_status_message = run_obj.sync_dashboard()\n        print(\"[SUCCESS] Sync dashboard success\") if sync_dashboard_status else \\\n            print(\"[ERROR] Sync dashboard error, error info: {}\".format(sync_dashboard_status_message))\n        # 创建Zabbix\n        create_controller_zabbix_status, create_controller_zabbix_message = run_obj.create_controller_zabbix(create_data_source_dict)\n        print(\"[SUCCESS] Create controller zabbix success\") if create_controller_zabbix_status else \\\n            print(\"[ERROR] Create controller zabbix error, error info: {}\".format(create_controller_zabbix_message))\n\n        # # 管控主机导入zabbix\n        # import_zabbix_status, import_zabbix_status_message = run_obj.import_zabbix()\n        # print(\"[SUCCESS] import agent zabbix success\") if import_zabbix_status else \\\n        #     print(\"[ERROR] import agent zabbix error, error info: {}\".format(import_zabbix_status_message))\n\n        # 初始化工作台导航目录\n        add_nav_status, add_nav_data = run_obj.workbench_add_nav()\n        print(\"[SUCCESS] add nav success\") if add_nav_status else print(\n            \"[ERROR] add nav error, error info: {}\".format(add_nav_data))\n\n        print(\"[SUCCESS] ALL success\")\n    else:\n        print(\"[ERROR] Init zabbix error, error info: {}\".format(init_zabbix_message))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--private_ip\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=False)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=False)\n    parameter.add_argument(\"--zabbix_ip\", help=\"Zabbix Host IP.\", required=False)\n    parameter.add_argument(\"--zabbix_password\", help=\"Zabbix Admin Password.\", required=False)\n    parameter.add_argument(\"--zabbix_api_password\", help=\"Zabbix Api User Password.\", required=False)\n    parameter.add_argument(\"--grafana_ip\", help=\"Grafana Host IP.\", required=False)\n    parameter.add_argument(\"--grafana_password\", help=\"Grafana Admin Password.\", required=False)\n    parameter.add_argument(\"--modify_zabbix_password\", help=\"Modify Zabbix Admin Password.\", required=False)\n    # parameter.add_argument(\"--modify_grafana_password\", help=\"Modify Grafana Admin Password.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    default_data_source_name = \"内置Zabbix Server\"\n    default_paas_username = \"admin\"\n    default_paas_password = \"admin\"\n    default_zabbix_password = \"admin\"\n    default_grafana_password = \"admin\"\n    default_zabbix_api_password = \"OpsAny@2020\"\n    default_zabbix_api_username = \"zabbixapi\"\n    default_modify_zabbix_password = \"OpsAny@2020\"\n    start(\n        options.domain,\n        options.private_ip,\n        options.paas_username,\n        options.paas_password,\n        options.zabbix_ip,\n        options.zabbix_password,\n        options.grafana_ip,\n        options.grafana_password,\n        options.modify_zabbix_password,\n        options.zabbix_api_password,\n        # options.modify_grafana_password\n    )\n\n# python3 init-ce-monitor.py \\\n# --domain 192.168.56.11 \\\n# --private_ip 192.168.56.11 \\\n# --paas_username admin \\\n# --paas_password 123456.coM \\\n# --zabbix_ip 192.168.56.11 \\\n# --zabbix_password OpsAny@2020 \\\n# --grafana_ip 192.168.56.11 \\\n# --grafana_password OpsAny@2020\n"
  },
  {
    "path": "saas/init-ce-prometheus.py",
    "content": "#! /usr/bin/python3\n# -*- coding: utf8 -*-\n\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({\"referer\": paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def init_control_prometheus(self, prom_dict):\n        try:\n            CONTROL_API = \"/o/control//api/control/v0_1/controller-prom-init/\"\n            CONTRO_URL = self.paas_domain + CONTROL_API\n            response = self.session.put(url=CONTRO_URL, data=json.dumps(prom_dict), verify=False)\n            if response.status_code == 200:\n                json_data = response.json()\n                if json_data.get(\"code\") != 200:\n                    return False, json_data.get(\"message\")\n                return True, response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return True, res.get(\"data\") or res.get(\"message\")\n            else:\n                return False, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n\ndef start(paas_domain, username, password, prom_dict):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password)\n\n    # 1. 初始化管控平台Prometheus相关服务\n    status, message = run_obj.init_control_prometheus(prom_dict)\n    print(\"[SUCCESS] Init Control Prometheus Success.\") if status else print(\n        \"[ERROR] Init Control Prometheus Error, error info: {}\".format(str(message)))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser(\"init-ee-prometheus\")\n    parameter.add_argument(\"--domain\", help=\"domain parameters.\", required=True)\n    parameter.add_argument(\"--local_ip\", help=\"local_ip prometheus consul alertmanager server ip.\", required=True)\n    parameter.add_argument(\"--username\", help=\"opsany admin username.\", required=True)\n    parameter.add_argument(\"--password\", help=\"opsany admin password.\", required=True)\n    parameter.add_argument(\"--prom_username\", help=\"Prometheus username.\", required=True)\n    parameter.add_argument(\"--prom_password\", help=\"Prometheus password.\", required=True)\n    parameter.add_argument(\"--consul_token\", help=\"Consul token.\", required=True)\n    parameter.add_argument(\"--alertmanager_username\", help=\"Alertmanager username.\", required=True)\n    parameter.add_argument(\"--alertmanager_password\", help=\"Alertmanager Password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    domain = options.domain  # 域名\n    local_ip = options.local_ip  # 内网地址\n    username = options.username  # 平台用户名\n    password = options.password  # 平台密码\n    prom_username = options.prom_username  # Prometheus服务用户名\n    prom_password = options.prom_password  # Prometheus服务密码\n    consul_token = options.consul_token  # Consul服务token\n    alertmanager_username = options.alertmanager_username  # Alertmanager服务用户名\n    alertmanager_password = options.alertmanager_password  # Alertmanager服务密码\n\n    prom_dict = {\n        \"name\": \"内置Prometheus\",\n        \"description\": \"\",\n        \"data_type\": \"init\",\n        \"default\": True,\n        \"prom_url\": f\"http://{local_ip}:9090\",\n        \"prom_username\": prom_username,\n        \"prom_password\": prom_password,\n        \"consul_url\": f\"http://{local_ip}:8500\",\n        \"consul_password\": consul_token,\n        \"alertmanager_url\": f\"http://{local_ip}:9093\",\n        \"alertmanager_username\": alertmanager_username,\n        \"alertmanager_password\": alertmanager_password,\n        \"basic_auth\": True,\n        \"consul_basic_auth\": True,\n        \"alertmanager_basic_auth\": True,\n    }\n\n    start(f\"https://{domain}\", username, password, prom_dict=prom_dict)\n\n\"\"\"\n1. 执行init-ee-prometheus.py脚本，需要部署社区版OpsAny并成功部署Prometheus服务，Consul服务，Alertmanager服务\n2. 执行init-ee-prometheus.py脚本，需要检测管控平台服务是否正常，Grafana服务是否正常\n\npython3 init-ee-prometheus.py --domain 192.168.56.11 --local_ip 10.0.0.73 --username admin --password 123456 --prom_username  admin --prom_password OpsAny@2024  --consul_token OpsAny@2024 --alertmanager_username admin --alertmanager_password OpsAny@2024\n\"\"\"\n"
  },
  {
    "path": "saas/init-ce-st2.py",
    "content": "#! /usr/bin/python3\n# -*- coding: utf8 -*-\n\"\"\"_summary_\n\nReturns:\n    _notion_: 执行前需要确认stackstorm是否部署成功。否则执行失败。\n\n\"\"\"\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass StackStormApi:\n    def __init__(self, st2_url, st2_username, st2_password, timeout=8):\n        self.url = st2_url\n        self.username = st2_username\n        self.password = st2_password\n        self.timeout = timeout\n        self.AUTH_TOKENS = \"/auth/tokens/\"  # 登录 POST\n        self.API_KEYS = \"/api/v1/apikeys/\"  # api key list GET POST\n\n        self.headers = {\"accept\": \"application/json\"}\n\n    def get_token(self):\n        \"\"\"Login and get token\"\"\"\n        try:\n            req = requests.session()\n            req.auth = (self.username, self.password)\n            url = self.url + self.AUTH_TOKENS\n            headers = {\n                \"accept\": \"application/json\"\n            }\n            res = req.post(url, headers=headers, timeout=self.timeout, verify=False)\n            if res.status_code in [200, 201]:\n                return True, res.json().get(\"token\")\n\n            else:\n                return False, res.json()\n        except Exception as e:\n            return False, e\n\n    def update_headers(self):\n        \"\"\"update headers token\"\"\"\n        status, message = self.get_token()\n        if not status:\n            return self.headers\n        return self.headers.update({\"x-auth-token\": message})\n\n    def create_api_key(self, metadata=None, enabled=True, user=\"st2admin\"):\n        \"\"\"create api key\"\"\"\n        try:\n            url = self.url + self.API_KEYS\n            # {\"name\": \"OpsAny-Devops\", \"used_by\": \"OpsAny-Devops\", \"why\": \"OpsAny Devops StackStorm Service Login header (st2-api-key) Can Not Delete.\"}\n            # api_key = res_dict.get(\"key\", \"\")\n            data_dic = {\n                \"metadata\": metadata if metadata else {},\n                \"enabled\": enabled if enabled else True,\n                \"user\": user\n            }\n            data_dic = json.dumps(data_dic)\n            self.update_headers()\n            res = requests.post(url, headers=self.headers, timeout=self.timeout, data=data_dic, verify=False)\n            res.encoding = \"utf-8\"\n            if res.status_code == 201:\n                return True, res.json()\n            else:\n                return False, res.json()\n\n        except Exception as e:\n            print(\"create_api_key_error\", str(e))\n            return False, e\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, st2_url, st2_username, st2_password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({\"referer\": paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.st2_url = st2_url\n        self.st2_api = StackStormApi(st2_url, st2_username, st2_password)\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def init_control_st2(self):\n        \"\"\"init devops st2 server\"\"\"\n        try:\n            CONTROL_API = \"/o/control//api/control/v0_1/stackstorm/\"\n            CONTRO_URL = self.paas_domain + CONTROL_API\n            metadata = {\"name\": \"OpsAny-Control\", \"used_by\": \"OpsAny-Control\",\n                        \"why\": \"OpsAny Control StackStorm Service Login header (st2-api-key) Can Not Delete.\"}\n            status, api_token = self.st2_api.create_api_key(metadata=metadata, enabled=True)\n            # status, api_token = True, {\"key\": \"NzliYTgyMzdlNjM0MjcyYTBiMzY4OWMwMDM2ODdhYTExMDc5MTI3ZmJmMDMzYmQzZjQ4YjRhZTgxYzhlY2YzYg1\"}\n            if not status:\n                return False, api_token\n            data = {\n                \"url\": self.st2_url,\n                \"api_key\": api_token.get(\"key\", \"\"),\n            }\n            response = self.session.put(url=CONTRO_URL, data=json.dumps(data), verify=False)\n            if response.status_code == 200:\n                return True, response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return True, res.get(\"data\") or res.get(\"message\")\n            else:\n                return False, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n\ndef start(paas_domain, username, password, st2_url, st2_username, st2_password):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password, st2_url=st2_url,\n                        st2_username=st2_username, st2_password=st2_password)\n\n    # 1. 初始化应用平台初始化StackStorm服务\n    st2_status, st2_message = run_obj.init_control_st2()\n    print(\"[SUCCESS] init devops st2 success.\") if st2_status else print(\n        \"[ERROR] init devops st2 error, error info: {}\".format(str(st2_message)))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser(\"init_ce_st2\")\n    parameter.add_argument(\"--domain\", help=\"domain parameters.\", required=True)\n    parameter.add_argument(\"--username\", help=\"opsany admin username.\", required=True)\n    parameter.add_argument(\"--password\", help=\"opsany admin password.\", required=True)\n    parameter.add_argument(\"--st2_url\", help=\"StackStorm service url.\", required=True)\n    parameter.add_argument(\"--st2_username\", help=\"StackStorm service username.\", required=True)\n    parameter.add_argument(\"--st2_password\", help=\"StackStorm service password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    domain = options.domain  # 域名\n    username = options.username  # 平台用户名\n    password = options.password  # s平台密码\n    st2_url = options.st2_url  # st2地址\n    st2_username = options.st2_username  # st2用户名\n    st2_password = options.st2_password  # st2密码\n    start(f\"https://{domain}\", username, password, st2_url=st2_url, st2_username=st2_username, st2_password=st2_password)\n\n\"\"\"\n1. 部署完应用平台和StackStorm才可以执行此初始化脚本\n2. 执行init-ce-st2.py脚本，参数为OpsAny地址用户名密码，St2地址用户名密码\n\npython3 init-ce-st2.py --domain 192.168.56.11 --username admin --password password  --st2_url  http://192.168.56.11:8005 --st2_username st2admin  --st2_password st2_password\n\"\"\"\n"
  },
  {
    "path": "saas/init-ee-prometheus.py",
    "content": "#! /usr/bin/python3\n# -*- coding: utf8 -*-\n\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({\"referer\": paas_domain})\n        self.session.verify = False\n        self.login_url = self.paas_domain + \"/login/\"\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n    def init_control_prometheus(self, prom_dict):\n        try:\n            CONTROL_API = \"/o/control//api/control/v0_1/controller-prom-init/\"\n            CONTRO_URL = self.paas_domain + CONTROL_API\n            response = self.session.put(url=CONTRO_URL, data=json.dumps(prom_dict), verify=False)\n            if response.status_code == 200:\n                json_data = response.json()\n                if json_data.get(\"code\") != 200:\n                    return False, json_data.get(\"message\")\n                return True, response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return True, res.get(\"data\") or res.get(\"message\")\n            else:\n                return False, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return False, str(e)\n\n\ndef start(paas_domain, username, password, prom_dict):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password)\n\n    # 1. 初始化管控平台Prometheus相关服务\n    status, message = run_obj.init_control_prometheus(prom_dict)\n    print(\"[SUCCESS] Init Control Prometheus Success.\") if status else print(\n        \"[ERROR] Init Control Prometheus Error, error info: {}\".format(str(message)))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser(\"init-ee-prometheus\")\n    parameter.add_argument(\"--domain\", help=\"domain parameters.\", required=True)\n    parameter.add_argument(\"--local_ip\", help=\"local_ip prometheus consul alertmanager server ip.\", required=True)\n    parameter.add_argument(\"--username\", help=\"opsany admin username.\", required=True)\n    parameter.add_argument(\"--password\", help=\"opsany admin password.\", required=True)\n    parameter.add_argument(\"--prom_username\", help=\"Prometheus username.\", required=True)\n    parameter.add_argument(\"--prom_password\", help=\"Prometheus password.\", required=True)\n    parameter.add_argument(\"--consul_token\", help=\"Consul token.\", required=True)\n    parameter.add_argument(\"--alertmanager_username\", help=\"Alertmanager username.\", required=True)\n    parameter.add_argument(\"--alertmanager_password\", help=\"Alertmanager Password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    domain = options.domain  # 域名\n    local_ip = options.local_ip  # 内网地址\n    username = options.username  # 平台用户名\n    password = options.password  # 平台密码\n    prom_username = options.prom_username  # Prometheus服务用户名\n    prom_password = options.prom_password  # Prometheus服务密码\n    consul_token = options.consul_token  # Consul服务token\n    alertmanager_username = options.alertmanager_username  # Alertmanager服务用户名\n    alertmanager_password = options.alertmanager_password  # Alertmanager服务密码\n\n    prom_dict = {\n        \"name\": \"内置Prometheus\",\n        \"description\": \"\",\n        \"data_type\": \"init\",\n        \"default\": True,\n        \"prom_url\": f\"http://{local_ip}:9090\",\n        \"prom_username\": prom_username,\n        \"prom_password\": prom_password,\n        \"consul_url\": f\"http://{local_ip}:8500\",\n        \"consul_password\": consul_token,\n        \"alertmanager_url\": f\"http://{local_ip}:9093\",\n        \"alertmanager_username\": alertmanager_username,\n        \"alertmanager_password\": alertmanager_password,\n        \"basic_auth\": True,\n        \"consul_basic_auth\": True,\n        \"alertmanager_basic_auth\": True,\n    }\n\n    start(f\"https://{domain}\", username, password, prom_dict=prom_dict)\n\n\"\"\"\n1. 执行init-ee-prometheus.py脚本，需要部署社区版OpsAny并成功部署Prometheus服务，Consul服务，Alertmanager服务\n2. 执行init-ee-prometheus.py脚本，需要检测管控平台服务是否正常，Grafana服务是否正常\n\npython3 init-ee-prometheus.py --domain 192.168.56.11 --local_ip 10.0.0.73 --username admin --password 123456 --prom_username  admin --prom_password OpsAny@2024  --consul_token OpsAny@2024 --alertmanager_username admin --alertmanager_password OpsAny@2024\n\"\"\"\n"
  },
  {
    "path": "saas/init-llmops-ollama-script.py",
    "content": "#!/usr/bin/env python3\n# coding:utf8\nimport json\n\nimport requests\nimport sys\nimport argparse\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass InitData:\n    # 导航分组\n    NAV_GROUP_LIST = [\n        {\n            \"group_name\": \"平台管理\",\n            \"group_code\": \"platform_manager\",\n            \"group_language\": {\n                \"chinese_simplified\": \"平台管理\",\n                \"chinese_traditional\": \"平台管理\",\n                \"english\": \"Platform Management\"\n            },\n            \"nav_list\": [\n                {\n                    \"nav_name\": \"大模型开发平台\",\n                    \"nav_code\": \"llmops\",\n                    \"nav_url\": \"/o/llmops/\",\n                    \"icon_name\": \"llmops.png\",\n                    \"icon_url\": \"uploads/workbench/icon/llmops.png\",\n                    \"describe\": \"大模型开发平台\",\n                    \"group_name\": \"平台管理\",\n                    \"nav_language\": {\n                        \"chinese_simplified\": \"大模型开发平台\",\n                        \"chinese_traditional\": \"大模型開發平台\",\n                        \"english\": \"LLMOPS\"\n                    },\n                    \"nav_describe_language\": {\n                        \"chinese_simplified\": \"大模型开发平台\",\n                        \"chinese_traditional\": \"大模型開發平台\",\n                        \"english\": \"Large Model Development Platform\"\n                    }\n                }\n            ]\n        }\n    ]\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def update_or_create_ollama(self, api):\n        API = self.paas_domain + \"/o/llmops/api/llmops/v0_1/model-provider-init/\"\n        # API = self.paas_domain + \"/api/llmops/v0_1/model-provider-init/\"\n        unique = \"mp-built-in-ollama-1\"\n        name = \"内置Ollama集成\"\n        create_dict = {\"unique\": unique, \"provider_type\": \"ollama\", \"name\": name, \"api\": api, \"description\": \"内置Ollama集成\"}\n        try:\n            res = self.session.post(API, json=create_dict, verify=False)\n            try:\n                res_json = res.json()\n                message = res_json.get(\"message\")\n            except Exception:\n                return False, res.content.decode()\n            if res.status_code == 200 and res_json.get(\"code\") == 200:\n                return True, \"{}({}), {}\".format(name, unique, message)\n            return False, message\n        except Exception as e:\n            return False, str(e)\n\n    def workbench_add_nav(self, nav_group_list):\n        \"\"\"工作台初始化导航菜单\"\"\"\n        try:\n            NAV_API = \"/o/workbench//api/workbench/v0_1/update-nav-v2/\"\n            # NAV_API = \"/api/workbench/v0_1/update-nav-v2/\"\n            NAV_GROUP_URL = self.paas_domain + NAV_API\n            for nav_group in nav_group_list:\n                nav_group.update({\"username\": self.username})\n\n            response = self.session.post(url=NAV_GROUP_URL, data=json.dumps({\"group_list\": nav_group_list}), verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n\ndef run(options):\n    api_object = OpsAnyApi(options.domain, options.paas_username, options.paas_password)\n    add_type = options.add_type\n    if not add_type:\n        add_type = \"nav\"\n    if add_type in [\"ollama\", \"all\"]:\n        status, message = api_object.update_or_create_ollama(options.ollama_api)\n        print(\"初始化Oloama集成{}: {}\".format(\"成功\" if status else \"失败\", message))\n\n    # 初始化工作台导航目录\n    if add_type in [\"nav\", \"all\"]:\n        add_nav_status, add_nav_data = api_object.workbench_add_nav(InitData().NAV_GROUP_LIST)\n        print(\"[SUCCESS] add nav success\") if add_nav_status else print(\n            \"[ERROR] add nav error, error info: {}\".format(add_nav_data))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.add_argument(\"--ollama_api\", help=\"Ollama Api\", required=False)\n    parameter.add_argument(\"--add_type\", help=\"ollama or nav or all\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    run(options)\n\n\"\"\"\npython3 init-llmops-ollama-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --ollama_api http://192.168.56.11:11434 --add_type all\npython3 init-llmops-ollama-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --ollama_api http://192.168.56.11:11434 --add_type ollama\npython3 init-llmops-ollama-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --add_type nav\n\"\"\""
  },
  {
    "path": "saas/init_cmdb_app_to_devops.py",
    "content": "#!/usr/bin/env python3\n# coding:utf8\n\"\"\"\n将资源平台应用数据同步至应用平台，默认同步或更新业务、应用和服务，可重复执行\n\"\"\"\nimport json\n\nimport requests\nimport sys\nimport argparse\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def init_cmdb_to_devops(self):\n        API = self.paas_domain + \"/o/devops/api/devops/v0_1/sync_cmdb_yw/\"\n        try:\n            # 用于初次创建用户\n            json_data = {\"sync_type\": \"init\"}\n            res = self.session.post(API, json=json_data)\n            try:\n                res_data = res.json()\n            except Exception as e:\n                return \"失败\", res.content.decode()\n            if res.status_code == 200 and res_data.get(\"code\") == 200:\n                return \"成功\", res_data.get(\"data\")\n            return \"失败\", res_data.get(\"message\")\n        except Exception as e:\n            print(\"Api error, error info: {}, api url: {}.\".format(str(e), API))\n            return \"错误\", str(e)\n\n\ndef run(options):\n    api_object = OpsAnyApi(\n        options.domain,\n        options.paas_username,\n        options.paas_password,\n    )\n    status, message = api_object.init_cmdb_to_devops()\n    print(\"资源平台应用数据导入应用平台{}：{}\".format(status, message))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    run(options)\n\n\"\"\"\npython3 init_cmdb_app_to_devops.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD}\n\"\"\"\n"
  },
  {
    "path": "saas/init_work_order.py",
    "content": "import argparse\nimport json\n\nimport requests\nimport urllib3\n\nurllib3.disable_warnings()\n\nclass InitData:\n    work_order_list = {\n        \"work_order_list\": [\n            {\n                \"update_public_fields_type\": \"1\",\n                \"update_public_fields_form_type\": \"2\",\n                \"update_public_api_type\": \"2\",\n                \"update_role_type\": \"2\",\n                \"is_online\": \"2\",\n                \"can_cancel\": \"2\",\n                \"work_flow_info_dict\": {\n                    \"id\": 34,\n                    \"create_user\": \"admin\",\n                    \"update_user\": \"admin\",\n                    \"describe\": \"通用服务请求流程，职能经理审批。\",\n                    \"name\": \"通用服务请求流程-有审批\",\n                    \"can_delete\": False,\n                    \"status\": True,\n                    \"director\": \"admin\",\n                    \"public_table_id\": 1,\n                    \"update_time\": \"2023-08-24 07:43:44\"\n                },\n                \"work_flow_fields_group_dict\": {},\n                \"work_flow_fields_dict\": {\n                    \"241\": {\n                        \"id\": 241,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 137,\n                        \"field_from\": \"2\",\n                        \"public_field\": 1,\n                        \"default\": None,\n                        \"other_info\": {},\n                        \"field_type\": None,\n                        \"describe\": \"请输入标题\",\n                        \"required\": True,\n                        \"index\": 1,\n                        \"group\": None,\n                        \"can_delete\": False,\n                        \"can_update\": True\n                    },\n                    \"242\": {\n                        \"id\": 242,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 137,\n                        \"field_from\": \"2\",\n                        \"public_field\": 2,\n                        \"default\": None,\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"field_type\": None,\n                        \"describe\": \"请选择紧急程度\",\n                        \"required\": True,\n                        \"index\": 2,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    },\n                    \"243\": {\n                        \"id\": 243,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 137,\n                        \"field_from\": \"2\",\n                        \"public_field\": 3,\n                        \"default\": None,\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"field_type\": None,\n                        \"describe\": \"请选择优先级\",\n                        \"required\": True,\n                        \"index\": 3,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    },\n                    \"244\": {\n                        \"id\": 244,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 137,\n                        \"field_from\": \"2\",\n                        \"public_field\": 4,\n                        \"default\": None,\n                        \"other_info\": {},\n                        \"field_type\": None,\n                        \"describe\": \"请输入申请内容\",\n                        \"required\": True,\n                        \"index\": 4,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    },\n                    \"245\": {\n                        \"id\": 245,\n                        \"code\": \"e12b209f-2d9b-43bb-a911-71973fe27717\",\n                        \"name\": \"审批意见\",\n                        \"field_rule\": None,\n                        \"work_flow_step\": 138,\n                        \"field_from\": \"2\",\n                        \"public_field\": None,\n                        \"default\": \"1\",\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"name\": \"通过\",\n                                    \"key\": \"1\"\n                                },\n                                {\n                                    \"name\": \"拒绝\",\n                                    \"key\": \"2\"\n                                }\n                            ]\n                        },\n                        \"field_type\": \"radio\",\n                        \"describe\": None,\n                        \"required\": True,\n                        \"index\": 1,\n                        \"group\": None,\n                        \"can_delete\": False,\n                        \"can_update\": False\n                    },\n                    \"246\": {\n                        \"id\": 246,\n                        \"code\": \"81df9c7f-a7e1-44d0-b5f9-46bfc053e22a\",\n                        \"name\": \"备注\",\n                        \"field_rule\": None,\n                        \"work_flow_step\": 138,\n                        \"field_from\": \"2\",\n                        \"public_field\": None,\n                        \"default\": \"通过\",\n                        \"other_info\": {},\n                        \"field_type\": \"textarea\",\n                        \"describe\": None,\n                        \"required\": True,\n                        \"index\": 2,\n                        \"group\": None,\n                        \"can_delete\": False,\n                        \"can_update\": False\n                    },\n                    \"247\": {\n                        \"id\": 247,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 139,\n                        \"field_from\": \"2\",\n                        \"public_field\": 9,\n                        \"default\": None,\n                        \"other_info\": {},\n                        \"field_type\": None,\n                        \"describe\": None,\n                        \"required\": True,\n                        \"index\": 1,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    }\n                },\n                \"work_flow_field_public_fields_dict\": {\n                    \"1\": {\n                        \"id\": 1,\n                        \"code\": \"title\",\n                        \"name\": \"标题\",\n                        \"other_info\": {},\n                        \"rule\": None,\n                        \"field_type\": \"string\",\n                        \"default\": \"\",\n                        \"describe\": \"请输入标题\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"2\": {\n                        \"id\": 2,\n                        \"code\": \"urgency\",\n                        \"name\": \"紧急程度\",\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"rule\": None,\n                        \"field_type\": \"select\",\n                        \"default\": \"\",\n                        \"describe\": \"请选择紧急程度\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"3\": {\n                        \"id\": 3,\n                        \"code\": \"priority\",\n                        \"name\": \"优先级\",\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"rule\": None,\n                        \"field_type\": \"select\",\n                        \"default\": \"\",\n                        \"describe\": \"请选择优先级\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"4\": {\n                        \"id\": 4,\n                        \"code\": \"apply_content\",\n                        \"name\": \"申请内容\",\n                        \"other_info\": {},\n                        \"rule\": None,\n                        \"field_type\": \"richtext\",\n                        \"default\": \"\",\n                        \"describe\": \"请输入申请内容\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"9\": {\n                        \"id\": 9,\n                        \"code\": \"RESULT\",\n                        \"name\": \"处理结果\",\n                        \"other_info\": {},\n                        \"rule\": None,\n                        \"field_type\": \"richtext\",\n                        \"default\": None,\n                        \"describe\": \"填写处理结果\",\n                        \"built_in\": False,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    }\n                },\n                \"work_flow_field_public_form_dict\": {\n                    \"1\": {\n                        \"id\": 1,\n                        \"name\": \"基础表单\",\n                        \"describe\": \"该表单为内置公共表单\",\n                        \"built_in\": True,\n                        \"update_user_username\": \"admin\",\n                        \"update_user_ch_name\": \"管理员\",\n                        \"public_field_list\": [\n                            1,\n                            2,\n                            3,\n                            4\n                        ]\n                    }\n                },\n                \"work_flow_role_dict\": {},\n                \"work_flow_department_dict\": {},\n                \"work_flow_field_rule_dict\": {},\n                \"work_flow_public_api_dict\": {},\n                \"work_flow_step_list\": [\n                    {\n                        \"id\": 135,\n                        \"name\": \"开始\",\n                        \"step_type\": \"0\",\n                        \"can_delete\": False,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": None,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [],\n                        \"director\": None,\n                        \"fields_list\": []\n                    },\n                    {\n                        \"id\": 136,\n                        \"name\": \"结束\",\n                        \"step_type\": \"0\",\n                        \"can_delete\": False,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": None,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [],\n                        \"director\": None,\n                        \"fields_list\": []\n                    },\n                    {\n                        \"id\": 137,\n                        \"name\": \"提交工单\",\n                        \"step_type\": \"3\",\n                        \"can_delete\": False,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": 0,\n                        \"visible_type\": \"0\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [],\n                        \"director\": None,\n                        \"fields_list\": [\n                            241,\n                            242,\n                            243,\n                            244\n                        ]\n                    },\n                    {\n                        \"id\": 138,\n                        \"name\": \"部门经理审批\",\n                        \"step_type\": \"2\",\n                        \"can_delete\": True,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": 1,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [\n                            \"admin\"\n                        ],\n                        \"director\": None,\n                        \"fields_list\": [\n                            245,\n                            246\n                        ]\n                    },\n                    {\n                        \"id\": 139,\n                        \"name\": \"工程师处理\",\n                        \"step_type\": \"1\",\n                        \"can_delete\": True,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": 0,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [\n                            \"admin\"\n                        ],\n                        \"director\": None,\n                        \"fields_list\": [\n                            247\n                        ]\n                    }\n                ],\n                \"work_flow_step_line_list\": [\n                    {\n                        \"id\": 109,\n                        \"name\": \"\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 34,\n                        \"use_line\": {\n                            \"start\": 135,\n                            \"end\": 137\n                        }\n                    },\n                    {\n                        \"id\": 113,\n                        \"name\": \"默认\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 34,\n                        \"use_line\": {\n                            \"start\": 138,\n                            \"end\": 139\n                        }\n                    },\n                    {\n                        \"id\": 114,\n                        \"name\": \"默认\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 34,\n                        \"use_line\": {\n                            \"start\": 139,\n                            \"end\": 136\n                        }\n                    },\n                    {\n                        \"id\": 115,\n                        \"name\": \"默认\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 34,\n                        \"use_line\": {\n                            \"start\": 137,\n                            \"end\": 138\n                        }\n                    }\n                ],\n                \"work_order_list\": [\n                    {\n                        \"name\": \"云资源申请\",\n                        \"director\": \"admin\",\n                        \"order_type\": \"请求管理\",\n                        \"visible_type\": \"0\",\n                        \"describe\": None,\n                        \"icon_id\": 4,\n                        \"folder_name\": \"默认分组\",\n                        \"department_id\": None,\n                        \"role_list_id\": [],\n                        \"user_list_id\": [],\n                        \n                    }\n                ]\n            },\n            {\n                \"update_public_fields_type\": \"1\",\n                \"update_public_fields_form_type\": \"2\",\n                \"update_public_api_type\": \"2\",\n                \"update_role_type\": \"2\",\n                \"is_online\": \"2\",\n                \"can_cancel\": \"2\",\n                \"work_flow_info_dict\": {\n                    \"id\": 36,\n                    \"create_user\": \"admin\",\n                    \"update_user\": \"admin\",\n                    \"describe\": \"通用服务请求流程，无审批。\",\n                    \"name\": \"通用服务请求流程-无审批\",\n                    \"can_delete\": False,\n                    \"status\": True,\n                    \"director\": \"admin\",\n                    \"public_table_id\": 1,\n                    \"update_time\": \"2023-08-24 07:44:40\"\n                },\n                \"work_flow_fields_group_dict\": {},\n                \"work_flow_fields_dict\": {\n                    \"261\": {\n                        \"id\": 261,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 148,\n                        \"field_from\": \"2\",\n                        \"public_field\": 1,\n                        \"default\": None,\n                        \"other_info\": {},\n                        \"field_type\": None,\n                        \"describe\": \"请输入标题\",\n                        \"required\": True,\n                        \"index\": 1,\n                        \"group\": None,\n                        \"can_delete\": False,\n                        \"can_update\": True\n                    },\n                    \"262\": {\n                        \"id\": 262,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 148,\n                        \"field_from\": \"2\",\n                        \"public_field\": 2,\n                        \"default\": None,\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"field_type\": None,\n                        \"describe\": \"请选择紧急程度\",\n                        \"required\": True,\n                        \"index\": 2,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    },\n                    \"263\": {\n                        \"id\": 263,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 148,\n                        \"field_from\": \"2\",\n                        \"public_field\": 3,\n                        \"default\": None,\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"field_type\": None,\n                        \"describe\": \"请选择优先级\",\n                        \"required\": True,\n                        \"index\": 3,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    },\n                    \"264\": {\n                        \"id\": 264,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 148,\n                        \"field_from\": \"2\",\n                        \"public_field\": 4,\n                        \"default\": None,\n                        \"other_info\": {},\n                        \"field_type\": None,\n                        \"describe\": \"请输入申请内容\",\n                        \"required\": True,\n                        \"index\": 4,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    },\n                    \"267\": {\n                        \"id\": 267,\n                        \"code\": None,\n                        \"name\": None,\n                        \"field_rule\": None,\n                        \"work_flow_step\": 150,\n                        \"field_from\": \"2\",\n                        \"public_field\": 9,\n                        \"default\": None,\n                        \"other_info\": {},\n                        \"field_type\": None,\n                        \"describe\": None,\n                        \"required\": True,\n                        \"index\": 1,\n                        \"group\": None,\n                        \"can_delete\": True,\n                        \"can_update\": True\n                    }\n                },\n                \"work_flow_field_public_fields_dict\": {\n                    \"1\": {\n                        \"id\": 1,\n                        \"code\": \"title\",\n                        \"name\": \"标题\",\n                        \"other_info\": {},\n                        \"rule\": None,\n                        \"field_type\": \"string\",\n                        \"default\": \"\",\n                        \"describe\": \"请输入标题\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"2\": {\n                        \"id\": 2,\n                        \"code\": \"urgency\",\n                        \"name\": \"紧急程度\",\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"rule\": None,\n                        \"field_type\": \"select\",\n                        \"default\": \"\",\n                        \"describe\": \"请选择紧急程度\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"3\": {\n                        \"id\": 3,\n                        \"code\": \"priority\",\n                        \"name\": \"优先级\",\n                        \"other_info\": {\n                            \"selectOptions\": [\n                                {\n                                    \"key\": \"1\",\n                                    \"name\": \"低\"\n                                },\n                                {\n                                    \"key\": \"2\",\n                                    \"name\": \"中\"\n                                },\n                                {\n                                    \"key\": \"3\",\n                                    \"name\": \"高\"\n                                }\n                            ]\n                        },\n                        \"rule\": None,\n                        \"field_type\": \"select\",\n                        \"default\": \"\",\n                        \"describe\": \"请选择优先级\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"4\": {\n                        \"id\": 4,\n                        \"code\": \"apply_content\",\n                        \"name\": \"申请内容\",\n                        \"other_info\": {},\n                        \"rule\": None,\n                        \"field_type\": \"richtext\",\n                        \"default\": \"\",\n                        \"describe\": \"请输入申请内容\",\n                        \"built_in\": True,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    },\n                    \"9\": {\n                        \"id\": 9,\n                        \"code\": \"RESULT\",\n                        \"name\": \"处理结果\",\n                        \"other_info\": {},\n                        \"rule\": None,\n                        \"field_type\": \"richtext\",\n                        \"default\": None,\n                        \"describe\": \"填写处理结果\",\n                        \"built_in\": False,\n                        \"create_user\": \"admin\",\n                        \"update_user\": \"admin\"\n                    }\n                },\n                \"work_flow_field_public_form_dict\": {\n                    \"1\": {\n                        \"id\": 1,\n                        \"name\": \"基础表单\",\n                        \"describe\": \"该表单为内置公共表单\",\n                        \"built_in\": True,\n                        \"update_user_username\": \"admin\",\n                        \"update_user_ch_name\": \"管理员\",\n                        \"public_field_list\": [\n                            1,\n                            2,\n                            3,\n                            4\n                        ]\n                    }\n                },\n                \"work_flow_role_dict\": {},\n                \"work_flow_department_dict\": {},\n                \"work_flow_field_rule_dict\": {},\n                \"work_flow_public_api_dict\": {},\n                \"work_flow_step_list\": [\n                    {\n                        \"id\": 146,\n                        \"name\": \"开始\",\n                        \"step_type\": \"0\",\n                        \"can_delete\": False,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": None,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [],\n                        \"director\": None,\n                        \"fields_list\": []\n                    },\n                    {\n                        \"id\": 147,\n                        \"name\": \"结束\",\n                        \"step_type\": \"0\",\n                        \"can_delete\": False,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": None,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [],\n                        \"director\": None,\n                        \"fields_list\": []\n                    },\n                    {\n                        \"id\": 148,\n                        \"name\": \"提交工单\",\n                        \"step_type\": \"3\",\n                        \"can_delete\": False,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": 0,\n                        \"visible_type\": \"0\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [],\n                        \"director\": None,\n                        \"fields_list\": [\n                            261,\n                            262,\n                            263,\n                            264\n                        ]\n                    },\n                    {\n                        \"id\": 150,\n                        \"name\": \"工程师处理\",\n                        \"step_type\": \"1\",\n                        \"can_delete\": True,\n                        \"index\": 0,\n                        \"other_info\": {},\n                        \"approval_method\": 0,\n                        \"visible_type\": \"3\",\n                        \"department\": None,\n                        \"department_name\": None,\n                        \"role_list\": [],\n                        \"handler\": [\n                            \"admin\"\n                        ],\n                        \"director\": None,\n                        \"fields_list\": [\n                            267\n                        ]\n                    }\n                ],\n                \"work_flow_step_line_list\": [\n                    {\n                        \"id\": 123,\n                        \"name\": \"\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 36,\n                        \"use_line\": {\n                            \"start\": 146,\n                            \"end\": 148\n                        }\n                    },\n                    {\n                        \"id\": 125,\n                        \"name\": \"默认\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 36,\n                        \"use_line\": {\n                            \"start\": 150,\n                            \"end\": 147\n                        }\n                    },\n                    {\n                        \"id\": 126,\n                        \"name\": \"默认\",\n                        \"other_info\": {},\n                        \"work_flow_id\": 36,\n                        \"use_line\": {\n                            \"start\": 148,\n                            \"end\": 150\n                        }\n                    }\n                ],\n                \"work_order_list\": [\n                    {\n                        \"name\": \"Nginx配置变更\",\n                        \"director\": \"admin\",\n                        \"order_type\": \"变更管理\",\n                        \"visible_type\": \"0\",\n                        \"describe\": None,\n                        \"icon_id\": 1,\n                        \"folder_name\": \"默认分组\",\n                        \"department_id\": None,\n                        \"role_list_id\": [],\n                        \"user_list_id\": [],\n                    },\n                    {\n                        \"name\": \"数据库创建申请\",\n                        \"director\": \"admin\",\n                        \"order_type\": \"请求管理\",\n                        \"visible_type\": \"0\",\n                        \"describe\": None,\n                        \"icon_id\": 4,\n                        \"folder_name\": \"默认分组\",\n                        \"department_id\": None,\n                        \"role_list_id\": [],\n                        \"user_list_id\": [],\n                    },\n                    {\n                        \"name\": \"域名解析申请\",\n                        \"director\": \"admin\",\n                        \"order_type\": \"请求管理\",\n                        \"visible_type\": \"0\",\n                        \"describe\": None,\n                        \"icon_id\": 4,\n                        \"folder_name\": \"默认分组\",\n                        \"department_id\": None,\n                        \"role_list_id\": [],\n                        \"user_list_id\": [],\n                    }\n                ]\n            },\n        ]\n    }\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def workbench_work_order_init(self):\n        \"\"\"工作台初始化导航菜单\"\"\"\n        try:\n            NAV_API = \"/o/workbench//api/workbench/v0_1/work-order-init/\"\n            NAV_GROUP_URL = self.paas_domain + NAV_API\n\n            data = InitData()\n            work_order_list = data.work_order_list\n            data_json = json.dumps(work_order_list)\n            response = self.session.post(url=NAV_GROUP_URL, data=data_json, verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n\ndef start(paas_domain, username, password):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password)\n\n    # 初始化工作台工单流程和工单\n    add_work_order_status, add_work_order_data = run_obj.workbench_work_order_init()\n    print(\"[SUCCESS] add work order success\") if add_work_order_status else print(\n        \"[ERROR] add work order error, error info: {}\".format(add_work_order_data))\n\n\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"OpsAny URL.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=False)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    start(\n        options.domain,\n        options.paas_username,\n        options.paas_password,\n    )\n\n\n\"\"\"\npython3 init_work_order.py --domain https://demo.opsany.com --paas_username admin --paas_password 123456\npython init_work_order.py --domain http://192.168.0.13:8004 --paas_username huxingqi --paas_password 123456\n\"\"\"\n"
  },
  {
    "path": "saas/invscript.py",
    "content": "#!/opt/opsany/paas-agent/apps/Envs/control/bin/python\n#coding:utf8\n\nimport argparse\nimport json\nimport sys\n\nimport MySQLdb\nimport hashlib\nimport random\nfrom base64 import urlsafe_b64encode, urlsafe_b64decode\nfrom Crypto.Cipher import AES\n\n\nDB_HOST = \"LOCALHOST\"\nDB_NAME = \"control\"\nDB_PASSWORD = \"CONTROL_PASSWORD\"\nDB_USERNAME = \"control\"\nSECRET_KEY = \"099f6e6f-9ad8-43d7-b487-7f655519598d\"\n\n\nclass PasswordEncryption(object):\n    def get_random_string(self, length=8):\n        \"\"\"\n        生成长度为length 的随机字符串\n        \"\"\"\n        aplhabet = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n        return ''.join(map(lambda _: random.choice(aplhabet), range(length)))\n\n    def pad(self, text, blocksize=16):\n        \"\"\"\n        PKCS#5 Padding\n        \"\"\"\n        pad = blocksize - (len(text) % blocksize)\n        return (text + pad * chr(pad)).encode('utf-8')\n\n    def encrypt(self, plaintext, key='', base64=True):\n        \"\"\"\n        AES Encrypt\n        \"\"\"\n        key = hashlib.md5(key.encode('utf-8')).digest()\n        cipher = AES.new(key, AES.MODE_ECB)\n        ciphertext = cipher.encrypt(self.pad(plaintext))\n        # 将密文base64加密\n        if base64:\n            ciphertext = urlsafe_b64encode(ciphertext).decode(\"utf-8\").rstrip('=')\n\n        return ciphertext\n\n    def decrypt(self, ciphertext, key='', base64=True):\n        \"\"\"\n        AES Decrypt\n        \"\"\"\n        if base64:\n            ciphertext = urlsafe_b64decode(str(ciphertext + '=' * (4 - len(ciphertext) % 4)))\n\n        data = ciphertext\n\n        key = hashlib.md5(key.encode('utf-8')).digest()\n        cipher = AES.new(key, AES.MODE_ECB)\n        return self.unpad(cipher.decrypt(data).decode(\"utf-8\"))\n\n    def unpad(self, text):\n        \"\"\"\n        PKCS#5 Padding\n        \"\"\"\n        pad = ord(text[-1])\n        return text[:-pad]\n\n\ndef to_json(in_dict):\n    return json.dumps(in_dict, sort_keys=True, indent=2)\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser(description='Ansible Dynamic Inventory')\n    group = parser.add_mutually_exclusive_group(required=True)\n    group.add_argument('--list', action='store_true',\n                       help='List active servers')\n    group.add_argument('--host', help='List details about the specific host')\n\n    return parser.parse_args()\n\n\ndef get_host_groups():\n    dt = get_agent()\n    return to_json(dt)\n\n\ndef commmysql(host=\"\"):\n    db = MySQLdb.connect(host=DB_HOST, user=DB_USERNAME, passwd=DB_PASSWORD, db=DB_NAME, charset='utf8')\n    cursor = db.cursor()\n    if not host:\n        sql = \"SELECT name, ip, ssh_port, username, password, ssh_type FROM agent_admin;\"\n    else:\n        sql = \"SELECT name, ip, ssh_port, username, password, ssh_type FROM agent_admin WHERE name='{}';\".format(host)\n    cursor.execute(sql)\n    if not host:\n        results = cursor.fetchall()\n        end_data = []\n        for res in results:\n            end_data.append({\n                \"name\": res[0],\n                \"ip\": res[1],\n                \"ssh_port\": res[2],\n                \"username\": res[3],\n                \"password\": res[4],\n                \"ssh_type\": res[5],\n            })\n    else:\n        res = cursor.fetchone()\n        end_data = {\n            \"name\": res[0],\n            \"ip\": res[1],\n            \"ssh_port\": res[2],\n            \"username\": res[3],\n            \"password\": res[4],\n            \"ssh_type\": res[5],\n        }\n    return end_data\n\n\ndef get_host_detail(host):\n    dt = get_agent(\"host\", host)\n    return to_json(dt.get(host, {}))\n\n\ndef get_password(password):\n    try:\n        new_passwrod = PasswordEncryption().decrypt(password, key=SECRET_KEY)\n    except:\n        new_passwrod = \"\"\n    return new_passwrod\n\n\ndef get_agent_group_json():\n    \"\"\"\n    Agent query object to ansible group json type\n\n    example: {\n        \"all\": {\n            \"hosts\": [\n                \"xxxx\",\n            ],\n            \"vars\": {},\n            \"children\": []\n        },\n        \"_meta\": {\n            \"hostvars\": {\n                \"xxxx\": {\n                    \"ansible_host\": \"xxxxx\",\n                    \"ansible_ssh_port\": xxx,\n                    \"ansible_ssh_user\": \"xxxx\",\n                    \"ansible_ssh_pass\": \"xxxxxxx\"\n                },\n            }\n        }\n    }\n    \"\"\"\n    host_unique = []\n    hostvars = {}\n    host_queryset = commmysql()\n    for host_query in host_queryset:\n        host_unique.append(host_query.get(\"name\"))\n        host_info_dict = {\n            \"ansible_host\": host_query.get(\"ip\"),\n            \"ansible_ssh_port\": host_query.get(\"ssh_port\"),\n            \"ansible_ssh_user\": host_query.get(\"username\"),\n        }\n        if host_query.get(\"ssh_type\") == \"password\":\n            new_password = get_password(host_query.get(\"password\"))\n            host_info_dict[\"ansible_ssh_pass\"] = new_password\n        hostvars[host_query.get(\"name\")] = host_info_dict\n    data = {\n        \"all\": {\n            \"hosts\": host_unique,\n            \"vars\": {},\n            \"children\": []\n        },\n        \"_meta\": {\n            \"hostvars\": hostvars\n        }\n    }\n    return data\n\n\ndef get_agent_host_json(host):\n    \"\"\"\n    Agent query object to ansible host json type\n\n    example: {\n        \"xxxx\": {\n            \"ansible_host\": \"xxxxx\",\n            \"ansible_ssh_port\": xxx,\n            \"ansible_ssh_user\": \"xxxx\",\n            \"ansible_ssh_pass\": \"xxxxxxx\"\n        }\n    }\n    \"\"\"\n    host_query_object = commmysql(host)\n    if host_query_object:\n        data = {\n            host_query_object.get(\"name\"): {\n                \"ansible_host\": host_query_object.get(\"ip\"),\n                \"ansible_ssh_port\": host_query_object.get(\"ssh_port\"),\n                \"ansible_ssh_user\": host_query_object.get(\"username\"),\n            }\n        }\n        if host_query_object.get(\"ssh_type\") == \"password\":\n            new_password = get_password(host_query_object.get(\"password\"))\n            data[host_query_object.get(\"name\")][\"ansible_ssh_pass\"] = new_password\n        return data\n    return {}\n\n\ndef get_agent(json_type=\"group\", host=\"\"):\n    if json_type == \"group\":\n        return get_agent_group_json()\n    else:\n        return get_agent_host_json(host)\n\n\ndef main():\n    args = parse_args()\n    if args.list:\n        output = get_host_groups()\n    elif args.host:\n        output = get_host_detail(args.host)\n    print(output)\n    sys.exit(0)\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "saas/invscript_proxy.py",
    "content": "#!/usr/local/bin/python3\n# coding:utf8\nimport hashlib\nimport json\nimport os\nimport sys\nimport random\n\nimport MySQLdb\nfrom base64 import urlsafe_b64decode\n\nimport argparse\nfrom Crypto.Cipher import AES\n\nDB_HOST = \"LOCALHOST\"\nDB_PORT = MYSQL_SERVER_PORT\nDB_NAME = \"opsany_proxy\"\nDB_PASSWORD = \"PROXY_PASSWORD\"\nDB_USERNAME = \"opsany\"\nSECRET_KEY = \"CONTROL_SECRET_KEY\"\n\n\nclass PasswordEncryption(object):\n    def get_random_string(self, length=8):\n        \"\"\"生成长度为length 的随机字符串\"\"\"\n        aplhabet = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n        return ''.join(map(lambda _: random.choice(aplhabet), range(length)))\n\n    def decrypt(self, ciphertext, key=SECRET_KEY, base64=True):\n        try:\n            if base64:\n                ciphertext = urlsafe_b64decode(str(ciphertext + '=' * (4 - len(ciphertext) % 4)))\n\n            data = ciphertext\n\n            key = hashlib.md5(key.encode('utf-8')).digest()\n            cipher = AES.new(key, AES.MODE_ECB)\n            text = cipher.decrypt(data).decode(\"utf-8\")\n            pad = ord(text[-1])\n            return text[:-pad]\n        except:\n            return \"\"\n\n\nclass ReadMySQLData:\n    def run(self, data_type=\"list\", host_name=\"\"):\n        db = MySQLdb.connect(host=DB_HOST, port=DB_PORT, db=DB_NAME, user=DB_USERNAME, password=DB_PASSWORD,\n                             charset='utf8')\n        cursor = db.cursor()\n        field = \"host_name, ip, ssh_port, username, password, ssh_type, private_key_file, privilege, privilege_password\"\n        table = \"agent_admin\"\n        if data_type == \"list\":\n            where = \"control_type in ('1', '3','4')\"\n        elif data_type == \"all_list\":\n            where = \"control_type in ('1', '2', '3','4')\"\n        else:\n            where = \"host_name='{}'\".format(host_name)\n        sql = \"SELECT {} FROM {} WHERE {};\".format(field, table, where)\n        cursor.execute(sql)\n        if not host_name:\n            results = cursor.fetchall()\n            end_data = [self.get_sql_data(res) for res in results]\n        else:\n            res = cursor.fetchone()\n            end_data = self.get_sql_data(res)\n        cursor.close()\n        db.close()\n        return end_data\n\n    def get_sql_data(self, res):\n        dt = {\n            \"name\": res[0],\n            \"ip\": res[1],\n            \"ssh_port\": res[2],\n            \"username\": res[3],\n            \"password\": res[4],\n            \"ssh_type\": res[5],\n            \"private_key_file\": res[6],\n            \"privilege\": res[7],\n            \"privilege_password\": res[8],\n        }\n        return dt\n\n\nclass GetAgent:\n    def __init__(self):\n        self.password = PasswordEncryption()\n\n    def to_json(self, in_dict):\n        return json.dumps(in_dict, sort_keys=True, indent=2)\n\n    def get_single_agent(self, host_query):\n        host_info_dict = {\n            \"ansible_host\": host_query.get(\"ip\"),\n            \"ansible_ssh_port\": host_query.get(\"ssh_port\"),\n            \"ansible_ssh_user\": host_query.get(\"username\"),\n        }\n        if host_query.get(\"ssh_type\") == \"key\":\n            host_info_dict[\"ansible_ssh_private_key_file\"] = host_query.get(\"private_key_file\", \"\")\n        else:\n            new_password = self.password.decrypt(host_query.get(\"password\"))\n            host_info_dict[\"ansible_ssh_pass\"] = new_password\n        privilege_password = host_query.get(\"privilege_password\")\n        if host_query.get(\"privilege\") and privilege_password:\n            host_info_dict[\"ansible_become_password\"] = self.password.decrypt(privilege_password)\n        return host_info_dict\n\n    def get_agent_list_json(self, data_type=\"list\"):\n        host_unique = []\n        hostvars = {}\n        host_queryset = ReadMySQLData().run(data_type)\n        for host_query in host_queryset:\n            host_unique.append(host_query.get(\"name\"))\n            hostvars[host_query.get(\"name\")] = self.get_single_agent(host_query)\n        data = {\n            \"all\": {\n                \"hosts\": host_unique,\n                \"vars\": {},\n                \"children\": []\n            },\n            \"_meta\": {\n                \"hostvars\": hostvars\n            }\n        }\n        return self.to_json(data)\n\n    def get_agent_host_json(self, host):\n        host_query = ReadMySQLData().run(\"agent\", host)\n        if host_query:\n            return self.to_json(self.get_single_agent(host_query))\n        return {}\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser(description='Ansible Dynamic Inventory')\n    group = parser.add_mutually_exclusive_group(required=True)\n    group.add_argument('--list', action='store_true', help='List active servers control_type in 1 3 4')\n    group.add_argument('--all_list', action='store_true', help='List active servers control_type in 1 2 3 4')\n    group.add_argument('--host', help='List details about the specific host')\n    return parser.parse_args()\n\n\ndef main():\n    env = os.getenv(\"INVSCRIPT_PROXY_ENV\") or \"list\"\n    args = parse_args()\n    output = {}\n    agent = GetAgent()\n    if args.list:\n        if env == \"list\":\n            output = agent.get_agent_list_json(data_type=\"list\")  # 取出全部ansible纳管主机\n        else:\n            output = agent.get_agent_list_json(data_type=\"all_list\")  # 取出全部主机\n    elif args.all_list:\n        output = agent.get_agent_list_json(data_type=\"all_list\")  # 取出全部主机\n    elif args.host:\n        output = agent.get_agent_host_json(args.host)\n    print(output)\n    sys.exit(0)\n\n\nif __name__ == '__main__':\n    # python invscript_proxy.py --list\n    # python invscript_proxy.py --all_list\n    # python invscript_proxy.py --host \"node1\"\n    # ansible all -i invscript_proxy.py -m ping\n    main()\n"
  },
  {
    "path": "saas/opsany_dispatch.py",
    "content": "#!/usr/bin/env python3\n\n\"\"\"\nSend alarms to the OpsAny workbench\nPython3\nrequests==2.23.0\n脚本路径 /usr/lib/zabbix/alertscripts(Zabbix配置文件指定脚本目录)\n脚本需要可执行权限\n\"\"\"\nimport json\nimport sys\n\nimport requests\nfrom requests.packages.urllib3.exceptions import InsecureRequestWarning\n\nrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)\n\n\nclass SendAlertToOpsAny:\n    \n    def __init__(self, opsany_url, app_code, app_secret):\n        self.opsany_url = opsany_url\n        self.app_code = app_code\n        self.app_secret = app_secret\n    \n    def send_out_message(self, parameter, operator, temp_id, subscribe_type=None, alert_info=None):\n        API = \"/api/c/compapi/workbench/post_info_to_user/\"\n        req = {\n            \"bk_app_code\": self.app_code,\n            \"bk_app_secret\": self.app_secret,\n            \"bk_username\": operator,\n            \"operator\": operator,\n            \"temp_id\": temp_id,\n            \"subscribe_type\": subscribe_type,\n            \"parameter\": parameter,\n            \"alert_info\": json.dumps(alert_info),\n        }\n        URL = self.opsany_url + API\n        response = requests.post(url=URL, data=req, verify=False)\n        try:\n            end_data = response.json()\n        except Exception as e:\n            raise Exception(\"发送失败，请检查域名或其他参数是否正确：{}\".format(response.content.decode()))\n\n        if end_data.get(\"code\") == 200:\n            print(\"发送状态：{}\".format(end_data.get(\"message\")))\n            return response.status_code\n        else:\n            raise Exception(\"发送失败，请检查参数是否正确：{}\".format(end_data))\n    \n    def send(self, alert_sendto, alert_subject, alert_message):\n        parameter = '(\"\"\"{}\"\"\", \"\"\"{}\"\"\")'.format(alert_subject, alert_message)\n        alert_info = {\n            \"alert_subject\": alert_subject,\n            \"alert_message\": alert_message,\n        }\n        return self.send_out_message(parameter, alert_sendto, 7001, alert_info=alert_info)\n\n\ndef main():\n    opsany_url = sys.argv[1]\n    app_code = sys.argv[2]\n    app_secret = sys.argv[3]\n    alert_sendto = sys.argv[4]\n    alert_subject = sys.argv[5]\n    alert_message = sys.argv[6]\n    \n    if len(sys.argv) != 7:\n        mes = \"参数异常：OpsAny地址 应用ID 应用TOKEN OpsAny接收人用户名 告警标题 告警内容\"\n        raise Exception(mes)\n    \n    if not opsany_url:\n        raise Exception(\"OpsAny地址不能为空\")\n    \n    if \"http\" not in opsany_url:\n        raise Exception(\"OpsAny地址请添加前缀 http\")\n    \n    if not app_code:\n        raise Exception(\"应用ID不能为空\")\n    \n    if not app_secret:\n        raise Exception(\"应用TOKEN不能为空\")\n    \n    if not alert_sendto:\n        raise Exception(\"接收人不能为空\")\n    \n    if not alert_subject:\n        raise Exception(\"告警标题不能为空\")\n    \n    if not alert_message:\n        raise Exception(\"告警内容不能为空\")\n    \n    SendAlertToOpsAny(opsany_url, app_code, app_secret).send(alert_sendto, alert_subject, alert_message)\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "saas/password-init.py",
    "content": "\"\"\"\n执行说明：python password-init.py --username [Username] --password [Password] --new_password [New Password]\n        --verify_code [Verify_code]\n参数说明：\nusername         必填      当前用户名\npassowrd         必填      当前密码\nnew_password     必填      新的密码\nverify_code      非必填    如果您开启了MFA则该参数为必填\n第三方依赖：requests==2.25.0\n\"\"\"\nimport requests\nimport argparse\nimport json\n\n# 去除本地python3 windows环境报错\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass BkApi:\n    def __init__(self, paas_domain, username, password, verify_code=\"\"):\n        self.paas_domain = paas_domain\n        self.username = username\n        self.password = password\n        self.session = requests.Session()\n        self.session.headers.update({'referer': self.paas_domain})\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login(verify_code)\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def set_new_password(self, password):\n        API = \"/login/accounts/user/password/\"\n        URL = self.paas_domain + API\n        req = {\n            \"new_password\": password,\n        }\n        res = self.session.put(URL, data=json.dumps(req), verify=False)\n        try:\n            flag = res.json().get(\"result\")\n            message = res.json().get(\"message\")\n            if not flag:\n                return message.split(\": \")[-1], flag\n            else:\n                return message, flag\n        except Exception:\n            return \"Modify password error.\", False\n\n\n# 增加脚本参数\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--paas_domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--username\", help=\"Admin user username.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--password\", help=\"Admin user password.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--new_password\", help=\"Admin user password.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--verify_code\", help=\"Verify code.\", default=\"\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    paas_domain = options.paas_domain\n    username = options.username\n    password = options.password\n    new_password = options.new_password\n    verify_code = options.verify_code if options.verify_code else \"\"\n    bk_api = BkApi(paas_domain, username, password)\n    status, res =bk_api.status, bk_api.token\n    # print(status, res)\n    if status:\n        res, status = bk_api.set_new_password(new_password)\n        if status:\n            print(\"Set new password success, new password: {}\".format(new_password))\n        else:\n            print(\"Set new password error, error info: {}\".format(res))\n    else:\n        print(\"Login ERROR: {}\".format(res))\n"
  },
  {
    "path": "saas/pipeline_batch_import.py",
    "content": "import argparse\nimport json\n\nimport requests\nimport urllib3\n\nurllib3.disable_warnings()\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.login_url = self.paas_domain + \"/login/\"\n        self.csrfmiddlewaretoken = self.get_csrftoken()\n        self.username = username\n        self.password = password\n        self.token = self.login()\n\n    def get_csrftoken(self):\n        try:\n            resp = self.session.get(self.login_url, verify=False)\n            if resp.status_code in [200, 400]:\n                return resp.cookies[\"bklogin_csrftoken\"]\n            else:\n                return \"\"\n        except:\n            return \"\"\n\n    def login(self):\n        try:\n            login_form = {\n                'csrfmiddlewaretoken': self.csrfmiddlewaretoken,\n                'username': self.username,\n                'password': self.password\n            }\n            resp = self.session.post(self.login_url, data=login_form, verify=False)\n            if resp.status_code == 200:\n                return self.session.cookies.get(\"bk_token\")\n            return \"\"\n        except:\n            return False\n\n    def batch_import_pipeline(self):\n        \"\"\"批量导入流水线\"\"\"\n        try:\n            NAV_API = \"/o/pipeline//api/pipeline/v0_1/batch-import-pipeline/\"\n            # NAV_API = \"/api/pipeline/v0_1/batch-import-pipeline/\"\n            NAV_GROUP_URL = self.paas_domain + NAV_API\n\n            data_json = json.dumps({\"jobs\": jobs})\n            response = self.session.post(url=NAV_GROUP_URL, data=data_json, verify=False)\n            if response.status_code == 200:\n                res = response.json()\n            else:\n                res = {\"code\": 500, \"message\": \"error\", \"data\": response.status_code}\n            if res.get(\"code\") == 200:\n                return 1, res.get(\"data\") or res.get(\"message\")\n            else:\n                return 0, res.get(\"data\") or res.get(\"errors\") or res.get(\"message\")\n        except Exception as e:\n            return 0, str(e)\n\n\ndef start(paas_domain, username, password):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password)\n\n    # 批量导入流水线\n    status, add_data = run_obj.batch_import_pipeline()\n    if status:\n        print(\"[SUCCESS] batch import pipeline success\")\n        success = add_data[0]\n        error = add_data[1]\n        print(\"导入成功 {} 条，失败 {} 条\".format(len(success), len(error)))\n        for i in range(0, len(error)):\n            print(i, \".\", error[i])\n        print(\"导入成功 {} 条，失败 {} 条\".format(len(success), len(error)))\n        print(\"[SUCCESS] batch import pipeline success\")\n    else:\n        print(\"[ERROR] batch import pipeline, error info: {}\".format(add_data))\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"OpsAny URL.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=False)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    \"\"\"\n    a = {\n        \"OpsAny\": [\n            {\n                \"env\": \"uat\",\n                \"script_name\": \"tianyi\",\n                \"startswith\": \"Uat环境-\",\n                \"job_name_list\": [\"HUXINGQI-uat1\", \"HUXINGQI-uat2\"],\n            },\n            {\n                \"env\": \"pro\",\n                \"script_name\": \"ali\",\n                \"startswith\": \"Pro环境-\",\n                \"job_name_list\": [\"HUXINGQI-pro1\", \"HUXINGQI-pro2\"],\n            }\n        ]\n    }\n    \"\"\"\n    jobs = {}\n\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    start(\n        options.domain,\n        options.paas_username,\n        options.paas_password,\n    )\n\n\"\"\"\npython3 pipeline_batch_import.py --domain https://demo.opsany.com --paas_username admin --paas_password 123456\npython pipeline_batch_import.py --domain http://192.168.0.13:8012 --paas_username huxingqi --paas_password 123456\n\"\"\"\n"
  },
  {
    "path": "saas/prom-pass.py",
    "content": "#!/usr/bin/env python3\n\nimport sys\nimport bcrypt\n\npassword = sys.argv[1]\nhashed_password = bcrypt.hashpw(password.encode(\"utf-8\"), bcrypt.gensalt())\nprint(hashed_password.decode())\n"
  },
  {
    "path": "saas/register_online_saas.py",
    "content": "# coding=utf-8\nimport requests\nimport argparse\nimport json\n\n# 去除本地python3 windows环境报错\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass BkApi:\n    def __init__(self, paas_domain, username, password, verify_code=\"\", env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.username = username\n        self.password = password\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login(verify_code)\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def register_online_saas(self, saas_app_code, saas_app_name, saas_app_version, saas_app_secret_key, is_update):\n        API = \"/saas/register-online-saas-app/\"\n        URL = self.paas_domain + API\n        req = {\n            \"saas_file_name\": \"{}-opsany-{}.tar.gz\".format(saas_app_code, saas_app_version),\n            \"saas_app_code\": saas_app_code,\n            \"saas_app_name\": saas_app_name,\n            \"saas_app_version\": saas_app_version,\n            \"saas_app_secret_key\": saas_app_secret_key,\n        }\n        if is_update in [1, \"1\", \"true\", \"True\"]:\n            req[\"is_update\"] = True\n        res = self.session.get(URL, params=req, verify=False)\n        try:\n            try:\n                res_data = res.json()\n            except Exception:\n                return False, \"PAAS服务异常请联系管理员或查看PAAS日志：\".format(str(res.content.decode()))\n            flag = res_data.get(\"result\")\n            message = res_data.get(\"message\")\n            if not flag:\n                return flag, message\n            else:\n                return flag, message\n        except Exception as e:\n            return False, \"注册脚本异常请联系管理员：{}\".format(str(e))\n\n\n# 增加脚本参数\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--paas_domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--username\", help=\"Admin user username.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--password\", help=\"Admin user password.\", default=\"admin\", required=True)\n    parameter.add_argument(\"--saas_app_code\", help=\"Saas App Code.\", required=True)\n    parameter.add_argument(\"--saas_app_name\", help=\"Saas App Name.\", required=True)\n    parameter.add_argument(\"--saas_app_version\", help=\"Saas App Version.\", required=True)\n    parameter.add_argument(\"--saas_app_secret_key\", help=\"Saas App Secret Key.\", required=True)\n    parameter.add_argument(\"--verify_code\", help=\"Verify code.\", default=\"\", required=False)\n    parameter.add_argument(\"--is_update\", help=\"is update.\", default=\"\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    paas_domain = options.paas_domain\n    username = options.username\n    password = options.password\n    saas_app_code = options.saas_app_code\n    saas_app_name = options.saas_app_name\n    saas_app_version = options.saas_app_version\n    saas_app_secret_key = options.saas_app_secret_key\n    verify_code = options.verify_code if options.verify_code else \"\"\n    is_update = options.is_update\n    bk_api = BkApi(paas_domain, username, password, verify_code)\n    if bk_api.status:\n        status, res = bk_api.register_online_saas(saas_app_code, saas_app_name, saas_app_version, saas_app_secret_key, is_update)\n        if status:\n            message = \"{} SUCCESS: {}:{} \".format(\"Register Online SAAS\" if not is_update else \"Update SAAS Version\", saas_app_code, saas_app_version)\n        else:\n            message = \"{} ERROR, error info: {}\".format(\"Register Online\" if not is_update else \"Update SAAS Version\", res)\n        print(message)\n    else:\n        print(\"Login ERROR: {}\".format(bk_api.token))\n\n\n    \"\"\"\n    # 注册SAAS\n    python register_online_saas.py --paas_domain https://opsany.com --username admin --password admin --saas_app_code repo --saas_app_name 统一权限 --saas_app_version 2.3.0 --saas_app_secret_key bf4a54e0-a08a-4449-b3f4-1431ddbe4b31\n    # 更新SAAS版本\n    python register_online_saas.py --paas_domain https://opsany.com --username admin --password admin --saas_app_code rbac --saas_app_name 统一权限 --saas_app_version 2.2.2 --saas_app_secret_key bf4a54e0-a08a-4449-b3f4-1431ddbe4b31 --is_update true\n    \"\"\""
  },
  {
    "path": "saas/reset_login_sort.py",
    "content": "#!/usr/bin/env python3\n# coding:utf8\n\nimport json\n\nimport requests\nimport argparse\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, verify_code=\"\", env=\"prod\"):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({\"referer\": paas_domain})\n        self.session.verify = False\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\n        self.username = username\n        self.password = password\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login(verify_code)\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def reset_login_sort(self):\n        try:\n            API = self.paas_domain + \"/{}/rbac/api/rbac/v0_1/auth-admin-sort/\".format(self.run_env)\n            res = self.session.post(API)\n            try:\n                res_json = res.json()\n            except:\n                return False, res.content.decode()\n            if res.status_code == 200 and res_json.get(\"code\") == 200:\n                return True, res_json.get(\"message\")\n        except Exception as e:\n            return False, \"Api error, error info: {}\".format(str(e))\n\n\ndef run(options):\n    run_env = options.run_env if options.run_env else \"prod\"\n    api_object = OpsAnyApi(\n        options.domain,\n        options.paas_username,\n        options.paas_password,\n        options.verify_code or \"\",\n        run_env\n    )\n\n    api_object.reset_login_sort()\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\n    parameter.add_argument(\"--verify_code\", help=\"OpsAny verify_code.\", required=False)\n    parameter.add_argument(\"--run_env\", help=\"Run env\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == \"__main__\":\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    run(options)\n\n\"\"\"\n# 重置登录方式(当全部启用的登录方式无法使用, 可以重置全部登录方式!)\npython3 sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD}\n\"\"\"\n"
  },
  {
    "path": "saas/sync-user-script.py",
    "content": "#!/usr/bin/env python3\r\n# coding:utf8\r\n\"\"\"\r\npython update_director.py\r\n--domain https://domain\r\n--paas_username guoyuchen\r\n--paas_password ******\r\n--run_env prod/dev  is not required, if not prod, use /t/, or not use /o/\r\n--app_code cmdb cmp\r\n\"\"\"\r\nimport json\r\n\r\nimport requests\r\nimport sys\r\nimport argparse\r\nimport urllib3\r\n\r\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\r\n\r\n\r\nclass OpsAnyApi:\r\n    def __init__(self, paas_domain, username, password, env=\"prod\"):\r\n        self.paas_domain = paas_domain\r\n        self.session = requests.Session()\r\n        self.session.headers.update({\"referer\": paas_domain})\r\n        self.session.verify = False\r\n        self.run_env = \"o\" if env == \"prod\" else \"t\"\r\n        self.username = username\r\n        self.password = password\r\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\r\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\r\n\r\n    def login(self, verify_code=\"\"):\r\n        try:\r\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code, \"auth_type\": \"1\"}\r\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\r\n            try:\r\n                res_json = resp.json()\r\n                if resp.status_code != 200:\r\n                    return False, res_json, \"\"\r\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\r\n                code = res_json.get(\"code\")\r\n                message = res_json.get(\"message\")\r\n                if bk_token:\r\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\r\n                elif code != 200:\r\n                    return False, message, \"\"\r\n                else:\r\n                    return False, res_json, \"\"\r\n            except Exception as e:\r\n                return False, str(resp.content.decode()), \"\"\r\n        except Exception as e:\r\n            return False, str(e), \"\"\r\n\r\n    def update_director(self, app_code):\r\n        if app_code == \"bastion\":\r\n            API = self.paas_domain + \"/{}/{}/api/{}/v0_1/sync_user_group/\".format(self.run_env, app_code, app_code)\r\n        else:\r\n            API = self.paas_domain + \"/{}/{}/api/{}/v0_1/update-director/\".format(self.run_env, app_code, app_code)\r\n        try:\r\n            # 用于初次创建用户\r\n            res = self.session.get(API)\r\n            try:\r\n                res.json()\r\n            except:\r\n                print(\"更新用户失败app_code: \", app_code)\r\n                Exception(res.content.decode())\r\n            if res.status_code == 200 and res.json().get(\"code\") == 200:\r\n                print(\"Update {} director success.\".format(app_code))\r\n                return True\r\n            raise Exception(res.json().get(\"message\"))\r\n        except Exception as e:\r\n            print(\"Api error, error info: {}, api url: {}.\".format(str(e), API))\r\n            # sys.exit(1)\r\n\r\n\r\ndef run(options):\r\n    run_env = options.run_env if options.run_env else \"prod\"\r\n    api_object = OpsAnyApi(\r\n        options.domain,\r\n        options.paas_username,\r\n        options.paas_password,\r\n        run_env\r\n    )\r\n    app_code = options.app_code\r\n    if isinstance(app_code, list):\r\n        for code in app_code:\r\n            api_object.update_director(code)\r\n    else:\r\n        print(\"App code error: {}\".format(app_code))\r\n        sys.exit(1)\r\n\r\n\r\ndef add_parameter():\r\n    parameter = argparse.ArgumentParser()\r\n    parameter.add_argument(\"--domain\", help=\"Required parameters.\", required=True)\r\n    parameter.add_argument(\"--paas_username\", help=\"OpsAny Username.\", required=True)\r\n    parameter.add_argument(\"--paas_password\", help=\"OpsAny Password.\", required=True)\r\n    parameter.add_argument(\"--run_env\", help=\"Run env\", required=False)\r\n    parameter.add_argument(\"--app_code\", help=\"App code\", nargs=\"+\", required=True)\r\n    parameter.parse_args()\r\n    return parameter\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    parameter = add_parameter()\r\n    options = parameter.parse_args()\r\n    run(options)\r\n\r\n\"\"\"\r\npython3 sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code auto event k8s prom kbase\r\npython3 sync-user-script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} --app_code job\r\n\"\"\""
  },
  {
    "path": "saas/sync_proxy_hosts.py",
    "content": "#!/usr/local/bin/python\n# coding:utf8\n\nimport argparse\n\nimport MySQLdb\n\n\nclass MysqlSync:\n    def __init__(self, mysql_ip, mysql_port, control_username, control_password, control_db_name, proxy_username,\n                 proxy_password, proxy_db_name):\n        self.mysql_ip = mysql_ip\n        self.mysql_port = mysql_port\n        self.control_username = control_username\n        self.control_password = control_password\n        self.control_db_name = control_db_name\n        self.proxy_username = proxy_username\n        self.proxy_password = proxy_password\n        self.proxy_db_name = proxy_db_name\n\n    def get_control_host(self):\n        db = MySQLdb.connect(host=self.mysql_ip, port=self.mysql_port, db=self.control_db_name,\n                             user=self.control_username, password=self.control_password, charset='utf8')\n        cursor = db.cursor()\n        sql = \"SELECT name, ip, username, system_type, ssh_port, control_type, password, ssh_type FROM agent_admin where controller_id IS NOT NULL;\"\n        cursor.execute(sql)\n        results = cursor.fetchall()\n        end_data = [(res[0], res[1], res[2], res[3], res[4], res[5], res[6], res[7]) for res in results]\n        # end_data.append({\n        #     \"host_name\": res[0],\n        #     \"ip\": res[1],\n        #     \"username\": res[2],\n        #     \"system_type\": res[3],\n        #     \"ssh_port\": res[4],\n        #     \"control_type\": res[5],\n        #     \"password\": res[6],\n        #     \"ssh_type\": res[7],\n        # })\n        cursor.close()\n        db.close()\n        print(\"Find Control Host Count: {}\".format(len(end_data)))\n        return end_data\n\n    def update_proxy_host(self, host_list):\n        db = MySQLdb.connect(host=self.mysql_ip, port=self.mysql_port, db=self.proxy_db_name,\n                             user=self.proxy_username, password=self.proxy_password, charset='utf8')\n        cursor = db.cursor()\n        sync_count = 0\n        for host in host_list:\n            host_name = host[0]\n            select_sql = \"SELECT id, host_name FROM agent_admin where host_name=\\'{}\\';\".format(host_name)\n            cursor.execute(select_sql)\n            results = cursor.fetchone()\n            if not results:\n                insert_sql = \"insert into agent_admin(`create_time`, `update_time`, `host_name`, `ip`, `username`, `system_type`, `ssh_port`, `control_type`, `password`, `ssh_type`) values(NOW(), NOW(), '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}');\".format(*host)\n                cursor.execute(insert_sql)\n                sync_count += 1\n        db.commit()\n        cursor.close()\n        db.close()\n        print(\"Sync Proxy Host Count: {}\".format(sync_count))\n        return 1\n\n    def update_proxy_host_many(self, host_list):\n        db = MySQLdb.connect(host=self.mysql_ip, port=self.mysql_port, db=self.proxy_db_name,\n                             user=self.proxy_username, password=self.proxy_password, charset='utf8')\n        cursor = db.cursor()\n        sql = \"insert into agent_admin(`create_time`, `update_time`, `host_name`, `ip`, `username`, `system_type`, `ssh_port`, `control_type`, `password`, `ssh_type`) values(NOW(), NOW(), %s, %s, %s, %s, %s, %s, %s, %s);\"\n        cursor.executemany(sql, host_list)\n        db.commit()\n        cursor.close()\n        db.close()\n\n\ndef run(mysql_ip, mysql_port, control_username, control_password, control_db_name, proxy_username, proxy_password,\n        proxy_db_name):\n    try:\n        mysql_port = int(mysql_port)\n    except:\n        mysql_port = 3306\n    mysql_sync = MysqlSync(mysql_ip, mysql_port, control_username, control_password, control_db_name, proxy_username,\n                           proxy_password, proxy_db_name)\n    host_list = mysql_sync.get_control_host()\n    # 检测是否存在，保证数据唯一\n    mysql_sync.update_proxy_host(host_list)\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser()\n    parameter.add_argument(\"--mysql_ip\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--mysql_port\", help=\"Required parameters.\", required=True)\n    parameter.add_argument(\"--control_username\", help=\"Control Mysql Username.\", required=True)\n    parameter.add_argument(\"--control_password\", help=\"Control Mysql Password.\", required=True)\n    parameter.add_argument(\"--control_db_name\", help=\"Control Mysql DB Name.\", required=True)\n    parameter.add_argument(\"--proxy_username\", help=\"Proxy Mysql Username.\", required=True)\n    parameter.add_argument(\"--proxy_password\", help=\"Proxy Mysql Password.\", required=True)\n    parameter.add_argument(\"--proxy_db_name\", help=\"Proxy Mysql DB Name.\", required=True)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    run(\n        options.mysql_ip,\n        options.mysql_port,\n        options.control_username,\n        options.control_password,\n        options.control_db_name,\n        options.proxy_username,\n        options.proxy_password,\n        options.proxy_db_name,\n    )\n\ncommand = \"python3 sync_proxy_hosts.py --mysql_ip mysql_host \" \\\n          \"--mysql_port 3306 \" \\\n          \"--control_username control \" \\\n          \"--control_password control_password \" \\\n          \"--control_db_name control\" \\\n          \" --proxy_username proxy_username \" \\\n          \"--proxy_password proxy_password \" \\\n          \"--proxy_db_name opsany_proxy\"\n"
  },
  {
    "path": "saas/update-ce-st2.py",
    "content": "import time\n\nimport requests\nimport json\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nimport argparse\n\n\nclass StackStormApi:\n    def __init__(self, st2_url, st2_username, st2_password, timeout=8):\n        self.url = st2_url\n        self.username = st2_username\n        self.password = st2_password\n        self.timeout = timeout\n        self.AUTH_TOKENS = \"/auth/tokens/\"  # 登录 POST\n        self.API_KEYS = \"/api/v1/apikeys/\"  # api key list GET POST\n        self.GET_PACK = \"/api/v1/packs/{ref_or_id}\"\n        self.EXECUTION_LOG = \"/api/v1/executions/{execution_id}/\"\n        self.INSTALL_PACK = \"/api/v1/packs/install\"\n        self.CONFIG_PACK = \"/api/v1/configs/{ref_or_id}\"\n\n        self.headers = {\n            'accept': 'application/json'\n        }\n\n    def get_token(self):\n        \"\"\"Login and get token\"\"\"\n        try:\n            req = requests.session()\n            req.auth = (self.username, self.password)\n            url = self.url + self.AUTH_TOKENS\n            headers = {\n                'accept': 'application/json'\n            }\n            res = req.post(url, headers=headers, timeout=self.timeout, verify=False)\n            if res.status_code in [200, 201]:\n                return True, res.json().get(\"token\")\n\n            else:\n                return False, res.json()\n        except Exception as e:\n            return False, e\n\n    def update_headers(self):\n        \"\"\"update headers token\"\"\"\n        status, message = self.get_token()\n        if not status:\n            return self.headers\n        return self.headers.update({\"x-auth-token\": message})\n\n    def get_workflow_execution_log(self, execution_id):\n        \"\"\"get execution log\"\"\"\n        try:\n            url = self.url + self.EXECUTION_LOG.format(execution_id=execution_id)\n            self.update_headers()\n            res = requests.get(url, headers=self.headers, timeout=5, verify=False)\n            res.encoding = 'utf-8'\n            if res.status_code == 200:\n                return True, res.json()\n            else:\n                return False, res.json()\n        except Exception as e:\n            return False, str(e)\n\n    def install_pack(self, packs):\n        print(\"开始执行install_pack\", packs)\n        \"\"\"install pack\"\"\"\n        try:\n            url = self.url + self.INSTALL_PACK\n            data_dic = {\n                \"packs\": packs\n            }\n            data_dic = json.dumps(data_dic)\n            status, message = self.get_token()\n            if not status:\n                return False, message\n            self.headers.update({\"x-auth-token\": message})\n            res = requests.post(url, headers=self.headers, timeout=self.timeout, data=data_dic, verify=False)\n            res.encoding = 'utf-8'\n\n            if res.status_code == 202:\n                return True, res.json()\n            else:\n                return False, res.json()\n        except Exception as e:\n            return 0, e\n\n\nclass OpsAnyApi:\n    def __init__(self, paas_domain, username, password, st2_url, st2_username, st2_password):\n        self.paas_domain = paas_domain\n        self.session = requests.Session()\n        self.session.headers.update({'referer': paas_domain})\n        self.session.verify = False\n        self.username = username\n        self.password = password\n        self.st2_url = st2_url\n        self.st2_api = StackStormApi(st2_url, st2_username, st2_password)\n        self.login_url = self.paas_domain + \"/login/api/v3/login/\"\n        self.status, self.token, self.csrfmiddlewaretoken = self.login()\n\n    def login(self, verify_code=\"\"):\n        try:\n            json_data = {\"username\": self.username, \"password\": self.password, \"verify_code\": verify_code,\n                         \"auth_type\": \"1\"}\n            resp = self.session.post(self.login_url, data=json.dumps(json_data), verify=False)\n            try:\n                res_json = resp.json()\n                if resp.status_code != 200:\n                    return False, res_json, \"\"\n                bk_token = (res_json.get(\"data\") or {}).get(\"bk_token\")\n                code = res_json.get(\"code\")\n                message = res_json.get(\"message\")\n                if bk_token:\n                    return True, bk_token, resp.cookies.get(\"bklogin_csrftoken\")\n                elif code != 200:\n                    return False, message, \"\"\n                else:\n                    return False, res_json, \"\"\n            except Exception as e:\n                return False, str(resp.content.decode()), \"\"\n        except Exception as e:\n            return False, str(e), \"\"\n\n    def init_st2_pack(self, opsany_core_pack_source_dict, st2_pack_install_type=\"file\"):\n        print(\"开始执行init_st2_pack\")\n        \"\"\"install opsany_core and opsany_workflow\"\"\"\n        if st2_pack_install_type in [\"git\", \"gitee\"]:\n            pack_url = opsany_core_pack_source_dict.get(\"gitee\")\n        elif st2_pack_install_type in [\"github\"]:\n            pack_url = opsany_core_pack_source_dict.get(\"github\")\n        # elif st2_pack_install_type in [\"gitlab\"]:\n        #     pack_url = opsany_core_pack_path_dict.get(\"gitlab\")\n        else:\n            pack_url = opsany_core_pack_source_dict.get(\"file\")\n        print(\"Downloading the OpsAny core package is expected to take 60 seconds...\")\n        status, message = self.st2_api.install_pack(pack_url)\n        print(\"执行install_pack结果\", status, message)\n        if not status:\n            return False, message\n        start_time = time.time()\n        while True:\n            status, res_dic = self.st2_api.get_workflow_execution_log(message.get(\"execution_id\", \"\"))\n            if not status:\n                if status == 0:\n                    return False, res_dic\n                continue\n            if res_dic.get(\"status\") == \"succeeded\":\n                return True, \"\"\n            if res_dic.get(\"status\") in [\"failed\", \"timeout\"]:\n                try:\n                    errors = res_dic.get(\"result\", {}).get(\"errors\", [])[0].get(\"result\").get(\"stderr\", \"\")\n                except Exception:\n                    errors = \"Install error please contact the developer\"\n                return False, errors\n        end_time = time.time()\n        if (end_time - start_time) > 120:\n            return False, \"The installation time exceeds 120 seconds\"\n        return True, message\n\n\ndef start(paas_domain, username, password, st2_url, st2_username, st2_password,\n          app_code=\"devops\", app_secret=\"\", st2_pack_install_type=\"file\"):\n    run_obj = OpsAnyApi(paas_domain=paas_domain, username=username, password=password, st2_url=st2_url,\n                        st2_username=st2_username, st2_password=st2_password)\n\n    # 初始化StackStorm核心包路径\n    # opsany_core_pack_path = \"/opt/stackstorm-packs/opsany_core/\"\n    # opsany_workflow_pack_path = \"/opt/stackstorm-packs/opsany_workflow/\"\n    opsany_core_pack_source_dict = {\n        \"file\": [\"/opt/stackstorm-packs/opsany_core/\", \"/opt/stackstorm-packs/opsany_workflow/\"],\n        \"gitee\": [\"https://gitee.com/opsany/opsany_core.git\", \"https://gitee.com/opsany/opsany_workflow.git\"],\n        \"github\": [\"https://github.com/unixhot/opsany_core.git\", \"https://github.com/unixhot/opsany_workflow.git\"],\n    }\n    # 配置核心包参数\n    pack = \"opsany_core\"\n    api_url = paas_domain\n    # app_code = \"devops\"\n    # app_secret = \"f64f3fae-b335-11eb-a88b-00163e105ceb\"\n    access_token = \"opsany-esb-auth-token-9e8083137204\"\n    # 1. 初始化应用平台初始化StackStorm服务\n\n    # 2. 初始化StackStorm包 opsany_core, opsany_workflow（需要提前将该两个包放入st2服务器指定路径）\n    st2_status, st2_data = run_obj.init_st2_pack(opsany_core_pack_source_dict, st2_pack_install_type)\n    print(\"[SUCCESS] init st2 pack success.\") if st2_status else print(\n        \"[ERROR] init st2 pack error info, error info: {}\".format(str(st2_data)))\n\n    # 3. 配置 opsany_core包参数\n\n\ndef add_parameter():\n    parameter = argparse.ArgumentParser(\"init_ce_st2\")\n    parameter.add_argument(\"--domain\", help=\"domain parameters.\", required=True)\n    parameter.add_argument(\"--username\", help=\"opsany admin username.\", required=True)\n    parameter.add_argument(\"--password\", help=\"opsany admin password.\", required=True)\n    parameter.add_argument(\"--st2_url\", help=\"StackStorm service url.\", required=True)\n    parameter.add_argument(\"--st2_username\", help=\"StackStorm service username.\", required=True)\n    parameter.add_argument(\"--st2_password\", help=\"StackStorm service password.\", required=True)\n    parameter.add_argument(\"--app_code\", help=\"app code.\", required=True)\n    parameter.add_argument(\"--app_secret\", help=\"app secret.\", required=True)\n    parameter.add_argument(\"--st2_core_pack_source\", default=\"StackStorm\",\n                           help=\"St2 core pack source [file|git|gitee|github].\", required=False)\n    parameter.parse_args()\n    return parameter\n\n\nif __name__ == '__main__':\n    parameter = add_parameter()\n    options = parameter.parse_args()\n    domain = options.domain  # 域名\n    username = options.username  # 平台用户名\n    password = options.password  # s平台密码\n    st2_url = options.st2_url  # st2地址\n    st2_username = options.st2_username  # st2用户名\n    st2_password = options.st2_password  # st2密码\n    app_code = options.app_code  # 平台code(可以使用devops)\n    app_secret = options.app_secret  # 平台code对应secret\n    st2_core_pack_source = options.st2_core_pack_source  # st2用户名\n    start(domain, username, password, st2_url=st2_url, st2_username=st2_username, st2_password=st2_password,\n          app_code=app_code, app_secret=app_secret, st2_pack_install_type=st2_core_pack_source)\n"
  }
]